ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDk1OWE3ZGYuLjg5NzA4NGQgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMzMsNyArMzMsNiBAQAogTW9kdWxlcy9jb25maWcuYwogTW9kdWxlcy9sZF9zb19haXgKIFBhcnNlci9wZ2VuCi1QYXJzZXIvcGdlbi5zdGFtcAogTGliL3Rlc3QvZGF0YS8qCiBMaWIvbGliMnRvMy9HcmFtbWFyKi5waWNrbGUKIExpYi9saWIydG8zL1BhdHRlcm5HcmFtbWFyKi5waWNrbGUKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGMxYTgwNTUuLmE4OGIzNmUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsNiArMTUsNyBAQAogRG9jL3Rvb2xzL3B5Z21lbnRzLwogRG9jL3Rvb2xzL3NwaGlueC8KIExpYi9saWIydG8zLyoucGlja2xlCitMaWIvX3N5c2NvbmZpZ2RhdGEucHkKIExpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCkBAIC0zNyw3ICszOCw2IEBACiBQQ2J1aWxkL2FtZDY0LwogLnB1cmlmeQogUGFyc2VyL3BnZW4KLVBhcnNlci9wZ2VuLnN0YW1wCiBfX3B5Y2FjaGVfXwogYXV0b200dGUuY2FjaGUKIGJ1aWxkLwpkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmluZGV4IGVkMTMxNzEuLjY0YmI3Y2YgMTAwNjQ0Ci0tLSBhLy5oZ2VvbAorKysgYi8uaGdlb2wKQEAgLTI4LDggKzI4LDExIEBACiAKIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCA9IEJJTgogTGliL3Rlc3QvY2prZW5jb2RpbmdzLyogPSBCSU4KLUxpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KIExpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS8qLmRlY1Rlc3QgPSBCSU4KK0xpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KK0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0ID0gQklOCisKK0xpYi92ZW52L3NjcmlwdHMvbnQvKiA9IEJJTgogCiAjIEFsbCBvdGhlciBmaWxlcyAod2hpY2ggcHJlc3VtYWJseSBhcmUgaHVtYW4tZWRpdGFibGUpIGFyZSAibmF0aXZlIi4KICMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJ1bGUhCmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggMjRkZjNiOS4uYTAxYTE3OCAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtNSw3ICs1LDggQEAKIE1ha2VmaWxlLnByZSQKIFRBR1MkCiBhdXRvbTR0ZS5jYWNoZSQKLWJ1aWxkLworXmJ1aWxkLworXkRvYy9idWlsZC8KIGJ1aWxkbm8kCiBjb25maWcuY2FjaGUKIGNvbmZpZy5sb2cKQEAgLTMxLDcgKzMyLDYgQEAKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKIF5jb3JlCiBecHl0aG9uLWdkYi5weQogXnB5dGhvbi5leGUtZ2RiLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KK0xpYi9fc3lzY29uZmlnZGF0YS5weQogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQpAQCAtNTQsNiArNTUsMTggQEAKIFBDL3B5dGhvbm50X3JjKi5oCiBQQy8qLm9iagogUEMvKi5leGUKK1BDLyovKi5leGUKK1BDLyovKi5leHAKK1BDLyovKi5saWIKK1BDLyovKi5ic2MKK1BDLyovKi5kbGwKK1BDLyovKi5wZGIKK1BDLyovKi51c2VyCitQQy8qLyoubmNiCitQQy8qLyouc3VvCitQQy8qL1dpbjMyLXRlbXAtKgorUEMvKi94NjQtdGVtcC0qCitQQy8qL2FtZDY0CiBQQ2J1aWxkLyouZXhlCiBQQ2J1aWxkLyouZGxsCiBQQ2J1aWxkLyoucGRiCkBAIC02Miw4ICs3NSwxNSBAQAogUENidWlsZC8qLm8KIFBDYnVpbGQvKi5uY2IKIFBDYnVpbGQvKi5ic2MKK1BDYnVpbGQvKi51c2VyCitQQ2J1aWxkLyouc3VvCitQQ2J1aWxkLyouKnNkZgogUENidWlsZC9XaW4zMi10ZW1wLSoKK1BDYnVpbGQveDY0LXRlbXAtKgorUENidWlsZC9hbWQ2NAorQnVpbGRMb2cuaHRtCiBfX3B5Y2FjaGVfXworTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiAuY292ZXJhZ2UKIGNvdmVyYWdlLwpkaWZmIC0tZ2l0IGEvLmhndGFncyBiLy5oZ3RhZ3MKaW5kZXggZjA2MWI5MC4uZWZhNGQyZSAxMDA2NDQKLS0tIGEvLmhndGFncworKysgYi8uaGd0YWdzCkBAIC05OSwzICs5OSwxMyBAQAogNzA4NTQwM2RhZjQzOWFkYjNmOWU3MGVmMTNmNmJlZGIxYzQ0NzM3NiB2My4yLjNyYzEKIDQyOGYwNWNiNzI3N2UxZDQyYmI5ZGQ4ZDFhZjZiNjI3MGViYzYxMTIgdjMuMi4zcmMyCiAzZDA2ODZkOTBmNTVhNzhmOTZkOTQwM2RhMmM1MmRjMjQxMTQxOWQwIHYzLjIuMworZjFhOWE2NTA1NzMxNzE0ZjBlMTU3NDUzZmY4NTBlM2I3MTYxNWM0NSB2My4zLjBhMQorMmY2OWRiNTJkNmRlMzA2Y2RhZWYwYTBjYzAwY2M4MjNmYjM1MGIwMSB2My4zLjBhMgorMGI1M2I3MGE0MGEwMDAxMzUwNWViMzVlMzY2MDA1N2I2MmJlNzdiZSB2My4zLjBhMworN2M1MTM4OGEzYWE3Y2U3NmE4NTQxYmJiZGZjMDVkMmQyNTlhMTYyYyB2My4zLjBhNAorZTE1YzU1NGNkNDNlYjIzYmMwYTUyOGE0ZTg3NDFkYTliYmVjOTYwNyB2My4zLjBiMQorNDk3MmE4ZjFiMmFhM2Q3Y2RkNjRkYzk2YWE3ZmExMTJmZTFlYTM0MyB2My4zLjBiMgorOGJiNWM3YmM0NmJhNDM4MDQ0ODBmM2UzMjhlMWZhOTU2NjcyYzg4NSB2My4zLjByYzEKKzg4YTA3OTJlOGJhM2U0OTE2YjI0YzdlN2E1MjJjMjc3ZDMyNmQ2NmUgdjMuMy4wcmMyCitjMTkxZDIxY2VmYWZiMzgzMmM0NTU3MGU4NDg1NGUzMDlhYTYyZWFhIHYzLjMuMHJjMworYmQ4YWZiOTBlYmYyOGJhNGVkYzkwMWQ0YTIzNWY3NWU3YmJjNzlmZCB2My4zLjAKZGlmZiAtLWdpdCBhLy5oZ3RvdWNoIGIvLmhndG91Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5MzZmYQotLS0gL2Rldi9udWxsCisrKyBiLy5oZ3RvdWNoCkBAIC0wLDAgKzEsMTIgQEAKKyMgLSotIE1ha2VmaWxlIC0qLQorIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCisjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9mcmVlemVfaW1wb3J0bGliLnB5CisKK0luY2x1ZGUvYXN0Lmg6IFBhcnNlci9QeXRob24uYXNkbCBQYXJzZXIvYXNkbC5weSBQYXJzZXIvYXNkbF9jLnB5CitQeXRob24vUHl0aG9uLWFzdC5jOiBJbmNsdWRlL2FzdC5oCisKK1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oOiBQeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgTGliL29wY29kZS5weQorCitPYmplY3RzL3R5cGVzbG90cy5pbmM6IEluY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMucHkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggY2I1NmVhOS4uNmE4MDRkNCAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtNTMsNyArNTMsNyBAQAogCWZpCiAJQGlmIFsgISAtZCB0b29scy9weWdtZW50cyBdOyB0aGVuIFwKIAkgIGVjaG8gIkNoZWNraW5nIG91dCBQeWdtZW50cy4uLiI7IFwKLQkgIHN2biBjaGVja291dCAkKFNWTlJPT1QpL2V4dGVybmFsL1B5Z21lbnRzLTEuMy4xL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzOyBcCisJICBzdm4gY2hlY2tvdXQgJChTVk5ST09UKS9leHRlcm5hbC9QeWdtZW50cy0xLjVkZXYtMjAxMjA5MzAvcHlnbWVudHMgdG9vbHMvcHlnbWVudHM7IFwKIAlmaQogCiB1cGRhdGU6IGNsZWFuIGNoZWNrb3V0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ0ZGRhN2MuLmIyOGFhNWYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAKICAgIExpa2UgYGB1I2BgLCBidXQgdGhlIFB5dGhvbiBvYmplY3QgbWF5IGFsc28gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgdGhlCiAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBwb2ludGVyIGlzIHNldCB0byAqTlVMTCouCiAKLWBgVWBgICg6Y2xhc3M6YHN0cmApIFtQeVVuaWNvZGVPYmplY3QgXCpdCitgYFVgYCAoOmNsYXNzOmBzdHJgKSBbUHlPYmplY3QgXCpdCiAgICBSZXF1aXJlcyB0aGF0IHRoZSBQeXRob24gb2JqZWN0IGlzIGEgVW5pY29kZSBvYmplY3QsIHdpdGhvdXQgYXR0ZW1wdGluZwogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgpAQCAtMjYwLDkgKzI2MCwxMiBAQAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgogCi1gYGNgYCAoOmNsYXNzOmBieXRlc2Agb2YgbGVuZ3RoIDEpIFtjaGFyXQotICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMSwKLSAgIHRvIGEgQyA6Yzp0eXBlOmBjaGFyYC4KK2BgY2BgICg6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2YgbGVuZ3RoIDEpIFtjaGFyXQorICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9yCisgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0IG9mIGxlbmd0aCAxLCB0byBhIEMgOmM6dHlwZTpgY2hhcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbGxvdyA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KIAogYGBDYGAgKDpjbGFzczpgc3RyYCBvZiBsZW5ndGggMSkgW2ludF0KICAgIENvbnZlcnQgYSBQeXRob24gY2hhcmFjdGVyLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgc3RyYCBvYmplY3Qgb2YKQEAgLTMxNSw2ICszMTgsMTUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBgYFB5X0NMRUFOVVBfU1VQUE9SVEVEYGAgd2FzIGFkZGVkLgogCitgYHBgYCAoOmNsYXNzOmBib29sYCkgW2ludF0KKyAgIFRlc3RzIHRoZSB2YWx1ZSBwYXNzZWQgaW4gZm9yIHRydXRoIChhIGJvb2xlYW4gKipwKipccmVkaWNhdGUpIGFuZCBjb252ZXJ0cworICAgdGhlIHJlc3VsdCB0byBpdHMgZXF1aXZhbGVudCBDIHRydWUvZmFsc2UgaW50ZWdlciB2YWx1ZS4KKyAgIFNldHMgdGhlIGludCB0byAxIGlmIHRoZSBleHByZXNzaW9uIHdhcyB0cnVlIGFuZCAwIGlmIGl0IHdhcyBmYWxzZS4KKyAgIFRoaXMgYWNjZXB0cyBhbnkgdmFsaWQgUHl0aG9uIHZhbHVlLiAgU2VlIDpyZWY6YHRydXRoYCBmb3IgbW9yZQorICAgaW5mb3JtYXRpb24gYWJvdXQgaG93IFB5dGhvbiB0ZXN0cyB2YWx1ZXMgZm9yIHRydXRoLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogYGAoaXRlbXMpYGAgKDpjbGFzczpgdHVwbGVgKSBbKm1hdGNoaW5nLWl0ZW1zKl0KICAgIFRoZSBvYmplY3QgbXVzdCBiZSBhIFB5dGhvbiBzZXF1ZW5jZSB3aG9zZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBmb3JtYXQgdW5pdHMKICAgIGluICppdGVtcyouICBUaGUgQyBhcmd1bWVudHMgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBpbmRpdmlkdWFsIGZvcm1hdCB1bml0cyBpbgpAQCAtMzM2LDYgKzM0OCwxNSBAQAogICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAgZG9lcyBub3QgdG91Y2ggdGhlIGNvbnRlbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIEMKICAgIHZhcmlhYmxlKHMpLgogCitgYCRgYAorICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzYCBvbmx5OgorICAgSW5kaWNhdGVzIHRoYXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4gdGhlIFB5dGhvbiBhcmd1bWVudCBsaXN0IGFyZQorICAga2V5d29yZC1vbmx5LiAgQ3VycmVudGx5LCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBtdXN0IGFsc28gYmUgb3B0aW9uYWwKKyAgIGFyZ3VtZW50cywgc28gYGB8YGAgbXVzdCBhbHdheXMgYmUgc3BlY2lmaWVkIGJlZm9yZSBgYCRgYCBpbiB0aGUgZm9ybWF0CisgICBzdHJpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBgYDpgYAogICAgVGhlIGxpc3Qgb2YgZm9ybWF0IHVuaXRzIGVuZHMgaGVyZTsgdGhlIHN0cmluZyBhZnRlciB0aGUgY29sb24gaXMgdXNlZCBhcyB0aGUKICAgIGZ1bmN0aW9uIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMgKHRoZSAiYXNzb2NpYXRlZCB2YWx1ZSIgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdCBiL0RvYy9jLWFwaS9idWZmZXIucnN0CmluZGV4IGQ5OGVjZTMuLmQ2MzY5MzUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9idWZmZXIucnN0CisrKyBiL0RvYy9jLWFwaS9idWZmZXIucnN0CkBAIC03LDYgKzcsNyBAQAogCiAuLiBzZWN0aW9uYXV0aG9yOjogR3JlZyBTdGVpbiA8Z3N0ZWluQGx5cmEub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IEJlbmphbWluIFBldGVyc29uCisuLiBzZWN0aW9uYXV0aG9yOjogU3RlZmFuIEtyYWgKIAogCiAuLiBpbmRleDo6CkBAIC0yMCw3ICsyMSw3IEBACiAKIFdoaWxlIGVhY2ggb2YgdGhlc2UgdHlwZXMgaGF2ZSB0aGVpciBvd24gc2VtYW50aWNzLCB0aGV5IHNoYXJlIHRoZSBjb21tb24KIGNoYXJhY3RlcmlzdGljIG9mIGJlaW5nIGJhY2tlZCBieSBhIHBvc3NpYmx5IGxhcmdlIG1lbW9yeSBidWZmZXIuICBJdCBpcwotdGhlbiBkZXNpcmVhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKK3RoZW4gZGVzaXJhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKIHdpdGhvdXQgaW50ZXJtZWRpYXRlIGNvcHlpbmcuCiAKIFB5dGhvbiBwcm92aWRlcyBzdWNoIGEgZmFjaWxpdHkgYXQgdGhlIEMgbGV2ZWwgaW4gdGhlIGZvcm0gb2YgdGhlICpidWZmZXIKQEAgLTYwLDggKzYxLDEwIEBACiByZXNvdXJjZSBsZWFrcy4KIAogCi1UaGUgYnVmZmVyIHN0cnVjdHVyZQotPT09PT09PT09PT09PT09PT09PT0KKy4uIF9idWZmZXItc3RydWN0dXJlOgorCitCdWZmZXIgc3RydWN0dXJlCis9PT09PT09PT09PT09PT09CiAKIEJ1ZmZlciBzdHJ1Y3R1cmVzIChvciBzaW1wbHkgImJ1ZmZlcnMiKSBhcmUgdXNlZnVsIGFzIGEgd2F5IHRvIGV4cG9zZSB0aGUKIGJpbmFyeSBkYXRhIGZyb20gYW5vdGhlciBvYmplY3QgdG8gdGhlIFB5dGhvbiBwcm9ncmFtbWVyLiAgVGhleSBjYW4gYWxzbyBiZQpAQCAtNzgsOTYgKzgxLDMzOSBAQAogYXJvdW5kIGEgYnVmZmVyIGlzIG5lZWRlZCwgYSA6cmVmOmBtZW1vcnl2aWV3IDxtZW1vcnl2aWV3LW9iamVjdHM+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+b2JqYCwgc2luY2UgdGhhdCBpcworICAgZG9uZSBhdXRvbWF0aWNhbGx5IGluIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgICh0aGlzIHNjaGVtZSBpcworICAgdXNlZnVsIGZvciBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzKS4KIAotICAgICAgVGhpcyBzaG91bGQgcmVsZWFzZSB0aGUgcmVzb3VyY2VzIG9mIHRoZSBidWZmZXIuICBUaGUgc2lnbmF0dXJlIG9mCi0gICAgICA6YzpkYXRhOmByZWxlYXNlYnVmZmVycHJvY2AgaXMgYGB2b2lkIChQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcpYGAuCi0gICAgICBJZiB0aGUgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaXMgbm90IHByb3ZpZGVkIChpLmUuIGl0IGlzCi0gICAgICAqTlVMTCopLCB0aGVuIGl0IGRvZXMgbm90IGV2ZXIgbmVlZCB0byBiZSBjYWxsZWQuCiAKLSAgICAgIFRoZSBleHBvcnRlciBvZiB0aGUgYnVmZmVyIGludGVyZmFjZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFueSBtZW1vcnkKLSAgICAgIHBvaW50ZWQgdG8gaW4gdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIHJlbWFpbnMgdmFsaWQgdW50aWwKLSAgICAgIHJlbGVhc2VidWZmZXIgaXMgY2FsbGVkLiAgRXhwb3J0ZXJzIHdpbGwgbmVlZCB0byBkZWZpbmUgYQotICAgICAgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaWYgdGhleSBjYW4gcmUtYWxsb2NhdGUgdGhlaXIgbWVtb3J5LAotICAgICAgc3RyaWRlcywgc2hhcGUsIHN1Ym9mZnNldHMsIG9yIGZvcm1hdCB2YXJpYWJsZXMgd2hpY2ggdGhleSBtaWdodCBzaGFyZQotICAgICAgdGhyb3VnaCB0aGUgc3RydWN0IGJ1ZmZlcmluZm8uCi0KLSAgICAgIFNlZSA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYC4KKyAgIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGQxYjU3ZDkuLjBmN2QyYmIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTYsMzggKzYsNzIgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJjLUFuZHLDqSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogR2VvcmcgQnJhbmRsIDxnZW9yZ0BweXRob24ub3JnPgogCiBVbmljb2RlIE9iamVjdHMKIF5eXl5eXl5eXl5eXl5eXgogCitTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzkzYCBpbiBQeXRob24gMy4zLCBVbmljb2RlIG9iamVjdHMgaW50ZXJuYWxseQordXNlIGEgdmFyaWV0eSBvZiByZXByZXNlbnRhdGlvbnMsIGluIG9yZGVyIHRvIGFsbG93IGhhbmRsaW5nIHRoZSBjb21wbGV0ZSByYW5nZQorb2YgVW5pY29kZSBjaGFyYWN0ZXJzIHdoaWxlIHN0YXlpbmcgbWVtb3J5IGVmZmljaWVudC4gIFRoZXJlIGFyZSBzcGVjaWFsIGNhc2VzCitmb3Igc3RyaW5ncyB3aGVyZSBhbGwgY29kZSBwb2ludHMgYXJlIGJlbG93IDEyOCwgMjU2LCBvciA2NTUzNjsgb3RoZXJ3aXNlLCBjb2RlCitwb2ludHMgbXVzdCBiZSBiZWxvdyAxMTE0MTEyICh3aGljaCBpcyB0aGUgZnVsbCBVbmljb2RlIHJhbmdlKS4KKworOmM6dHlwZTpgUHlfVU5JQ09ERSpgIGFuZCBVVEYtOCByZXByZXNlbnRhdGlvbnMgYXJlIGNyZWF0ZWQgb24gZGVtYW5kIGFuZCBjYWNoZWQKK2luIHRoZSBVbmljb2RlIG9iamVjdC4gIFRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgcmVwcmVzZW50YXRpb24gaXMgZGVwcmVjYXRlZAorYW5kIGluZWZmaWNpZW50OyBpdCBzaG91bGQgYmUgYXZvaWRlZCBpbiBwZXJmb3JtYW5jZS0gb3IgbWVtb3J5LXNlbnNpdGl2ZQorc2l0dWF0aW9ucy4KKworRHVlIHRvIHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gdGhlIG9sZCBBUElzIGFuZCB0aGUgbmV3IEFQSXMsIHVuaWNvZGUgb2JqZWN0cworY2FuIGludGVybmFsbHkgYmUgaW4gdHdvIHN0YXRlcyBkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkOgorCisqICJjYW5vbmljYWwiIHVuaWNvZGUgb2JqZWN0cyBhcmUgYWxsIG9iamVjdHMgY3JlYXRlZCBieSBhIG5vbi1kZXByZWNhdGVkCisgIHVuaWNvZGUgQVBJLiAgVGhleSB1c2UgdGhlIG1vc3QgZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIGFsbG93ZWQgYnkgdGhlCisgIGltcGxlbWVudGF0aW9uLgorCisqICJsZWdhY3kiIHVuaWNvZGUgb2JqZWN0cyBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoIG9uZSBvZiB0aGUgZGVwcmVjYXRlZAorICBBUElzICh0eXBpY2FsbHkgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYCkgYW5kIG9ubHkgYmVhciB0aGUKKyAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uOyB5b3Ugd2lsbCBoYXZlIHRvIGNhbGwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBvbiB0aGVtIGJlZm9yZSBjYWxsaW5nIGFueSBvdGhlciBBUEkuCisKKwogVW5pY29kZSBUeXBlCiAiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSBiYXNpYyBVbmljb2RlIG9iamVjdCB0eXBlcyB1c2VkIGZvciB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBpbgogUHl0aG9uOgogCisuLiBjOnR5cGU6OiBQeV9VQ1M0CisgICAgICAgICAgICBQeV9VQ1MyCisgICAgICAgICAgICBQeV9VQ1MxCisKKyAgIFRoZXNlIHR5cGVzIGFyZSB0eXBlZGVmcyBmb3IgdW5zaWduZWQgaW50ZWdlciB0eXBlcyB3aWRlIGVub3VnaCB0byBjb250YWluCisgICBjaGFyYWN0ZXJzIG9mIDMyIGJpdHMsIDE2IGJpdHMgYW5kIDggYml0cywgcmVzcGVjdGl2ZWx5LiAgV2hlbiBkZWFsaW5nIHdpdGgKKyAgIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlcnMsIHVzZSA6Yzp0eXBlOmBQeV9VQ1M0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzp0eXBlOjogUHlfVU5JQ09ERQogCi0gICBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgc3RvcmFnZSB0eXBlIHdoaWNoIGlzIHVzZWQgYnkgUHl0aG9uIGludGVybmFsbHkgYXMKLSAgIGJhc2lzIGZvciBob2xkaW5nIFVuaWNvZGUgb3JkaW5hbHMuICBQeXRob24ncyBkZWZhdWx0IGJ1aWxkcyB1c2UgYSAxNi1iaXQgdHlwZQotICAgZm9yIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZCBzdG9yZSBVbmljb2RlIHZhbHVlcyBpbnRlcm5hbGx5IGFzIFVDUzIuIEl0IGlzIGFsc28KLSAgIHBvc3NpYmxlIHRvIGJ1aWxkIGEgVUNTNCB2ZXJzaW9uIG9mIFB5dGhvbiAobW9zdCByZWNlbnQgTGludXggZGlzdHJpYnV0aW9ucyBjb21lCi0gICB3aXRoIFVDUzQgYnVpbGRzIG9mIFB5dGhvbikuIFRoZXNlIGJ1aWxkcyB0aGVuIHVzZSBhIDMyLWJpdCB0eXBlIGZvcgotICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYW5kIHN0b3JlIFVuaWNvZGUgZGF0YSBpbnRlcm5hbGx5IGFzIFVDUzQuIE9uIHBsYXRmb3JtcwotICAgd2hlcmUgOmM6dHlwZTpgd2NoYXJfdGAgaXMgYXZhaWxhYmxlIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIGNob3NlbiBQeXRob24KLSAgIFVuaWNvZGUgYnVpbGQgdmFyaWFudCwgOmM6dHlwZTpgUHlfVU5JQ09ERWAgaXMgYSB0eXBlZGVmIGFsaWFzIGZvcgotICAgOmM6dHlwZTpgd2NoYXJfdGAgdG8gZW5oYW5jZSBuYXRpdmUgcGxhdGZvcm0gY29tcGF0aWJpbGl0eS4gT24gYWxsIG90aGVyCi0gICBwbGF0Zm9ybXMsIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGEgdHlwZWRlZiBhbGlhcyBmb3IgZWl0aGVyIDpjOnR5cGU6YHVuc2lnbmVkCi0gICBzaG9ydGAgKFVDUzIpIG9yIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmdgIChVQ1M0KS4KKyAgIFRoaXMgaXMgYSB0eXBlZGVmIG9mIDpjOnR5cGU6YHdjaGFyX3RgLCB3aGljaCBpcyBhIDE2LWJpdCB0eXBlIG9yIDMyLWJpdCB0eXBlCisgICBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgogCi1Ob3RlIHRoYXQgVUNTMiBhbmQgVUNTNCBQeXRob24gYnVpbGRzIGFyZSBub3QgYmluYXJ5IGNvbXBhdGlibGUuIFBsZWFzZSBrZWVwCi10aGlzIGluIG1pbmQgd2hlbiB3cml0aW5nIGV4dGVuc2lvbnMgb3IgaW50ZXJmYWNlcy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgdGhpcyB3YXMgYSAxNi1iaXQgdHlwZSBvciBhIDMyLWJpdCB0eXBlIGRlcGVuZGluZyBvbgorICAgICAgd2hldGhlciB5b3Ugc2VsZWN0ZWQgYSAibmFycm93IiBvciAid2lkZSIgVW5pY29kZSB2ZXJzaW9uIG9mIFB5dGhvbiBhdAorICAgICAgYnVpbGQgdGltZS4KIAogCi0uLiBjOnR5cGU6OiBQeVVuaWNvZGVPYmplY3QKKy4uIGM6dHlwZTo6IFB5QVNDSUlPYmplY3QKKyAgICAgICAgICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QKKyAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdAogCi0gICBUaGlzIHN1YnR5cGUgb2YgOmM6dHlwZTpgUHlPYmplY3RgIHJlcHJlc2VudHMgYSBQeXRob24gVW5pY29kZSBvYmplY3QuCisgICBUaGVzZSBzdWJ0eXBlcyBvZiA6Yzp0eXBlOmBQeU9iamVjdGAgcmVwcmVzZW50IGEgUHl0aG9uIFVuaWNvZGUgb2JqZWN0LiAgSW4KKyAgIGFsbW9zdCBhbGwgY2FzZXMsIHRoZXkgc2hvdWxkbid0IGJlIHVzZWQgZGlyZWN0bHksIHNpbmNlIGFsbCBBUEkgZnVuY3Rpb25zCisgICB0aGF0IGRlYWwgd2l0aCBVbmljb2RlIG9iamVjdHMgdGFrZSBhbmQgcmV0dXJuIDpjOnR5cGU6YFB5T2JqZWN0YCBwb2ludGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzp2YXI6OiBQeVR5cGVPYmplY3QgUHlVbmljb2RlX1R5cGUKQEAgLTQ1LDEwICs3OSwxMCBAQAogICAgVGhpcyBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHJlcHJlc2VudHMgdGhlIFB5dGhvbiBVbmljb2RlIHR5cGUuICBJdAogICAgaXMgZXhwb3NlZCB0byBQeXRob24gY29kZSBhcyBgYHN0cmBgLgogCisKIFRoZSBmb2xsb3dpbmcgQVBJcyBhcmUgcmVhbGx5IEMgbWFjcm9zIGFuZCBjYW4gYmUgdXNlZCB0byBkbyBmYXN0IGNoZWNrcyBhbmQgdG8KIGFjY2VzcyBpbnRlcm5hbCByZWFkLW9ubHkgZGF0YSBvZiBVbmljb2RlIG9iamVjdHM6CiAKLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfQ2hlY2soUHlPYmplY3QgKm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgKm8qIGlzIGEgVW5pY29kZSBvYmplY3Qgb3IgYW4gaW5zdGFuY2Ugb2YgYSBVbmljb2RlCkBAIC02MSwyOCArOTUsMTA2IEBACiAgICBzdWJ0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfU0laRShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JFQURZKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdC4gICpvKiBoYXMgdG8gYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QKLSAgIGNoZWNrZWQpLgorICAgRW5zdXJlIHRoZSBzdHJpbmcgb2JqZWN0ICpvKiBpcyBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICByZXF1aXJlZCBiZWZvcmUgdXNpbmcgYW55IG9mIHRoZSBhY2Nlc3MgbWFjcm9zIGRlc2NyaWJlZCBiZWxvdy4KKworICAgLi4gWFhYIGV4cGFuZCBvbiB3aGVuIGl0IGlzIG5vdCByZXF1aXJlZAorCisgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgd2l0aCBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUsIHdoaWNoIGluCisgICBwYXJ0aWN1bGFyIGhhcHBlbnMgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlPYmplY3QgKm8pCiAKLSAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0J3MgaW50ZXJuYWwgYnVmZmVyIGluIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhCi0gICA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QgY2hlY2tlZCkuCisgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBzdHJpbmcsIGluIGNvZGUgcG9pbnRzLiAgKm8qIGhhcyB0byBiZSBhCisgICBVbmljb2RlIG9iamVjdCBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gKG5vdCBjaGVja2VkKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9BU19VTklDT0RFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzEqIFB5VW5pY29kZV8xQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzIqIFB5VW5pY29kZV8yQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5VW5pY29kZV80QllURV9EQVRBKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIG9iamVjdC4gICpvKgotICAgaGFzIHRvIGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gVUNTMSwgVUNTMiBvciBVQ1M0CisgICBpbnRlZ2VyIHR5cGVzIGZvciBkaXJlY3QgY2hhcmFjdGVyIGFjY2Vzcy4gIE5vIGNoZWNrcyBhcmUgcGVyZm9ybWVkIGlmIHRoZQorICAgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGhhcyB0aGUgY29ycmVjdCBjaGFyYWN0ZXIgc2l6ZTsgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAgdG8gc2VsZWN0IHRoZSByaWdodCBtYWNyby4gIE1ha2Ugc3VyZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBjOmZ1bmN0aW9uOjogY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisuLiBjOm1hY3JvOjogUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIHRoZSBvYmplY3QuICpvKiBoYXMgdG8gYmUgYQotICAgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIHZhbHVlcyBvZiB0aGUgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgIG1hY3JvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9LSU5EKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gb25lIG9mIHRoZSBQeVVuaWNvZGUga2luZCBjb25zdGFudHMgKHNlZSBhYm92ZSkgdGhhdCBpbmRpY2F0ZSBob3cgbWFueQorICAgYnl0ZXMgcGVyIGNoYXJhY3RlciB0aGlzIFVuaWNvZGUgb2JqZWN0IHVzZXMgdG8gc3RvcmUgaXRzIGRhdGEuICAqbyogaGFzIHRvCisgICBiZSBhIFVuaWNvZGUgb2JqZWN0IGluIHRoZSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiAobm90IGNoZWNrZWQpLgorCisgICAuLiBYWFggZG9jdW1lbnQgIjAiIHJldHVybiB2YWx1ZT8KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5VW5pY29kZV9EQVRBKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gICpvKiBoYXMgdG8gYmUgYSBVbmljb2RlCisgICBvYmplY3QgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5VW5pY29kZV9XUklURShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUpCisKKyAgIFdyaXRlIGludG8gYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gKmRhdGEqIChhcyBvYnRhaW5lZCB3aXRoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfREFUQWApLiAgVGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5IGNoZWNrcyBhbmQgaXMKKyAgIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZSAqa2luZCogdmFsdWUgYW5kCisgICAqZGF0YSogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLiAgKmluZGV4KiBpcyB0aGUgaW5kZXggaW4KKyAgIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgKnZhbHVlKiBpcyB0aGUgbmV3IGNvZGUgcG9pbnQgdmFsdWUgd2hpY2ggc2hvdWxkCisgICBiZSB3cml0dGVuIHRvIHRoYXQgbG9jYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SRUFEKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY29kZSBwb2ludCBmcm9tIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uICpkYXRhKiAoYXMgb2J0YWluZWQgd2l0aAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RBVEFgKS4gIE5vIGNoZWNrcyBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUkVBRF9DSEFSKFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY2hhcmFjdGVyIGZyb20gYSBVbmljb2RlIG9iamVjdCAqbyosIHdoaWNoIG11c3QgYmUgaW4gdGhlICJjYW5vbmljYWwiCisgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRGAgaWYgeW91CisgICBkbyBtdWx0aXBsZSBjb25zZWN1dGl2ZSByZWFkcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgdGhhdCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlciBzdHJpbmcKKyAgIGJhc2VkIG9uICpvKiwgd2hpY2ggbXVzdCBiZSBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQgdGhhbiBpdGVyYXRpbmcgb3ZlciB0aGUgc3RyaW5nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCkKQEAgLTkwLDYgKzIwMiw0NiBAQAogICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24sIGluCisgICBjb2RlIHVuaXRzICh0aGlzIGluY2x1ZGVzIHN1cnJvZ2F0ZSBwYWlycyBhcyAyIHVuaXRzKS4gICpvKiBoYXMgdG8gYmUgYQorICAgVW5pY29kZSBvYmplY3QgKG5vdCBjaGVja2VkKS4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIFVuaWNvZGUgQVBJLCBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gaW4KKyAgIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSBVbmljb2RlIEFQSSwgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9HRVRfTEVOR1RIYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FTX1VOSUNPREUoUHlPYmplY3QgKm8pCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiAgVGhlCisgICBgYEFTX0RBVEFgYCBmb3JtIGNhc3RzIHRoZSBwb2ludGVyIHRvIDpjOnR5cGU6YGNvbnN0IGNoYXIgKmAuICAqbyogaGFzIHRvIGJlCisgICBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIG1hY3JvIGlzIG5vdyBpbmVmZmljaWVudCAtLSBiZWNhdXNlIGluIG1hbnkgY2FzZXMgdGhlCisgICAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgbmVlZHMgdG8gYmUgY3JlYXRlZAorICAgICAgLS0gYW5kIGNhbiBmYWlsIChyZXR1cm4gKk5VTEwqIHdpdGggYW4gZXhjZXB0aW9uIHNldCkuICBUcnkgdG8gcG9ydCB0aGUKKyAgICAgIGNvZGUgdG8gdXNlIHRoZSBuZXcgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIG1hY3JvcyBvciB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9XUklURWAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURgLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgVW5pY29kZSBBUEksIHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIHRoZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIGZhbWlseSBvZiBtYWNyb3MuCisKKwogVW5pY29kZSBDaGFyYWN0ZXIgUHJvcGVydGllcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCkBAIC0xNjYsMTYgKzMxOCwyNSBAQAogCiAgICBSZXR1cm4gdGhlIGNoYXJhY3RlciAqY2gqIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgc2ltcGxlIGNhc2UgbWFwcGluZ3MuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUgUHlfVU5JQ09ERV9UT1VQUEVSKFB5X1VOSUNPREUgY2gpCiAKICAgIFJldHVybiB0aGUgY2hhcmFjdGVyICpjaCogY29udmVydGVkIHRvIHVwcGVyIGNhc2UuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBzaW1wbGUgY2FzZSBtYXBwaW5ncy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSBQeV9VTklDT0RFX1RPVElUTEUoUHlfVU5JQ09ERSBjaCkKIAogICAgUmV0dXJuIHRoZSBjaGFyYWN0ZXIgKmNoKiBjb252ZXJ0ZWQgdG8gdGl0bGUgY2FzZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHNpbXBsZSBjYXNlIG1hcHBpbmdzLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlfVU5JQ09ERSBjaCkKIApAQCAtMTk1LDMxICszNTYsNjYgQEAKICAgIHBvc3NpYmxlLiAgVGhpcyBtYWNybyBkb2VzIG5vdCByYWlzZSBleGNlcHRpb25zLgogCiAKLVBsYWluIFB5X1VOSUNPREUKLSIiIiIiIiIiIiIiIiIiIiIKK1RoZXNlIEFQSXMgY2FuIGJlIHVzZWQgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6CisKKy4uIGM6bWFjcm86OiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhbiBoaWdoIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhEQkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKQorCisgICBDaGVjayBpZiAqY2gqIGlzIGEgbG93IHN1cnJvZ2F0ZSAoYGAweERDMDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KQorCisgICBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuCisgICAqaGlnaCogYW5kICpsb3cqIGFyZSByZXNwZWN0aXZlbHkgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHN1cnJvZ2F0ZXMgaW4gYQorICAgc3Vycm9nYXRlIHBhaXIuCisKKworQ3JlYXRpbmcgYW5kIGFjY2Vzc2luZyBVbmljb2RlIHN0cmluZ3MKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRvIGNyZWF0ZSBVbmljb2RlIG9iamVjdHMgYW5kIGFjY2VzcyB0aGVpciBiYXNpYyBzZXF1ZW5jZSBwcm9wZXJ0aWVzLCB1c2UgdGhlc2UKIEFQSXM6CiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgbWF4Y2hhcikKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorICAgQ3JlYXRlIGEgbmV3IFVuaWNvZGUgb2JqZWN0LiAgKm1heGNoYXIqIHNob3VsZCBiZSB0aGUgdHJ1ZSBtYXhpbXVtIGNvZGUgcG9pbnQKKyAgIHRvIGJlIHBsYWNlZCBpbiB0aGUgc3RyaW5nLiAgQXMgYW4gYXBwcm94aW1hdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgdXAgdG8gdGhlCisgICBuZWFyZXN0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZSAxMjcsIDI1NSwgNjU1MzUsIDExMTQxMTEuCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyICp1KiBvZiB0aGUgZ2l2ZW4gc2l6ZS4gKnUqCi0gICBtYXkgYmUgKk5VTEwqIHdoaWNoIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzCi0gICByZXNwb25zaWJpbGl0eSB0byBmaWxsIGluIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldwotICAgb2JqZWN0LiBJZiB0aGUgYnVmZmVyIGlzIG5vdCAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LgotICAgVGhlcmVmb3JlLCBtb2RpZmljYXRpb24gb2YgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSoKLSAgIGlzICpOVUxMKi4KKyAgIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBhbGxvY2F0ZSBhIG5ldyBVbmljb2RlIG9iamVjdC4gIE9iamVjdHMKKyAgIGNyZWF0ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbiBhcmUgbm90IHJlc2l6YWJsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKKyAgIENyZWF0ZSBhIG5ldyBVbmljb2RlIG9iamVjdCB3aXRoIHRoZSBnaXZlbiAqa2luZCogKHBvc3NpYmxlIHZhbHVlcyBhcmUKKyAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfMUJZVEVfS0lORGAgZXRjLiwgYXMgcmV0dXJuZWQgYnkKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9LSU5EYCkuICBUaGUgKmJ1ZmZlciogbXVzdCBwb2ludCB0byBhbiBhcnJheSBvZiAqc2l6ZSoKKyAgIHVuaXRzIG9mIDEsIDIgb3IgNCBieXRlcyBwZXIgY2hhcmFjdGVyLCBhcyBnaXZlbiBieSB0aGUga2luZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBjaGFyIGJ1ZmZlciAqdSouICBUaGUgYnl0ZXMgd2lsbCBiZSBpbnRlcnByZXRlZAotICAgYXMgYmVpbmcgVVRGLTggZW5jb2RlZC4gICp1KiBtYXkgYWxzbyBiZSAqTlVMTCogd2hpY2gKLSAgIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZpbGwgaW4KLSAgIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldyBvYmplY3QuIElmIHRoZSBidWZmZXIgaXMgbm90Ci0gICAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LiBUaGVyZWZvcmUsIG1vZGlmaWNhdGlvbiBvZgotICAgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSogaXMgKk5VTEwqLgorICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgY2hhciBidWZmZXIgKnUqLiAgVGhlIGJ5dGVzIHdpbGwgYmUKKyAgIGludGVycHJldGVkIGFzIGJlaW5nIFVURi04IGVuY29kZWQuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkCisgICBvYmplY3QsIGkuZS4gbW9kaWZpY2F0aW9uIG9mIHRoZSBkYXRhIGlzIG5vdCBhbGxvd2VkLgorCisgICBJZiAqdSogaXMgKk5VTEwqLCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVVuaWNvZGVgCisgICB3aXRoIHRoZSBidWZmZXIgc2V0IHRvICpOVUxMKi4gIFRoaXMgdXNhZ2UgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQpAQCAtMjYwLDE4ICs0NTYsMjcgQEAKICAgIHwgOmF0dHI6YCVsZGAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsaWAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsaSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsdWAgICAgICAgfCB1bnNpZ25lZCBsb25nICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsdSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbGRgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGQiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsbGlgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGkiKWBgLiAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbHVgICAgICAgfCB1bnNpZ25lZCBsb25nIGxvbmcgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbHUiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6ZGAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6ZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCV6aWAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6aSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6dWAgICAgICAgfCBzaXplX3QgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6dSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTMyMiw0NyArNTI3LDE4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgYGAiJWxsZCJgYCBhbmQgYGAiJWxsdSJgYCBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIGBgIiVsaSJgYCwgYGAiJWxsaSJgYCBhbmQgYGAiJXppImBgIGFkZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIAogICAgSWRlbnRpY2FsIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YCBleGNlcHQgdGhhdCBpdCB0YWtlcyBleGFjdGx5IHR3bwogICAgYXJndW1lbnRzLgogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IHJlcGxhY2luZyBhbGwgZGVjaW1hbCBkaWdpdHMgaW4KLSAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IEFTQ0lJIGRpZ2l0cyAwLS05Ci0gICBhY2NvcmRpbmcgdG8gdGhlaXIgZGVjaW1hbCB2YWx1ZS4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uCi0gICBvY2N1cnMuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCi0gICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIsICpOVUxMKiBpZiAqdW5pY29kZSogaXMgbm90IGEgVW5pY29kZSBvYmplY3QuCi0gICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkCi0gICBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4gdXNlZCBpbgotICAgbW9zdCBDIGZ1bmN0aW9ucy4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIENyZWF0ZSBhIGNvcHkgb2YgYSBVbmljb2RlIHN0cmluZyBlbmRpbmcgd2l0aCBhIG51bCBjaGFyYWN0ZXIuIFJldHVybiAqTlVMTCoKLSAgIGFuZCByYWlzZSBhIDpleGM6YE1lbW9yeUVycm9yYCBleGNlcHRpb24gb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSwKLSAgIG90aGVyd2lzZSByZXR1cm4gYSBuZXcgYWxsb2NhdGVkIGJ1ZmZlciAodXNlIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgIHRvIGZyZWUKLSAgIHRoZSBidWZmZXIpLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluCi0gICBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4KLSAgIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoUHlPYmplY3QgKm9iaiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENvZXJjZSBhbiBlbmNvZGVkIG9iamVjdCAqb2JqKiB0byBhbiBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHdpdGgKICAgIGluY3JlbWVudGVkIHJlZmNvdW50LgpAQCAtMzc5LDE1ICs1NTUsMjI3IEBACiAgICBkZWNyZWYnaW5nIHRoZSByZXR1cm5lZCBvYmplY3RzLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRMZW5ndGgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdCwgaW4gY29kZSBwb2ludHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsIFB5X3NzaXplX3QgaG93X21hbnkpCisKKyAgIENvcHkgY2hhcmFjdGVycyBmcm9tIG9uZSBVbmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIuICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zCisgICBjaGFyYWN0ZXIgY29udmVyc2lvbiB3aGVuIG5lY2Vzc2FyeSBhbmQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBtZW1jcHlgIGlmCisgICBwb3NzaWJsZS4gIFJldHVybnMgYGAtMWBgIGFuZCBzZXRzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciwgb3RoZXJ3aXNlIHJldHVybnMKKyAgIGBgMGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgZmlsbF9jaGFyKQorCisgICBGaWxsIGEgc3RyaW5nIHdpdGggYSBjaGFyYWN0ZXI6IHdyaXRlICpmaWxsX2NoYXIqIGludG8KKyAgIGBgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdYGAuCisKKyAgIEZhaWwgaWYgKmZpbGxfY2hhciogaXMgYmlnZ2VyIHRoYW4gdGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3Rlciwgb3IgaWYgdGhlCisgICBzdHJpbmcgaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiBgYC0xYGAgYW5kIHJhaXNlIGFuCisgICBleGNlcHRpb24gb24gZXJyb3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1dyaXRlQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hhcmFjdGVyKQorCisgICBXcml0ZSBhIGNoYXJhY3RlciB0byBhIHN0cmluZy4gIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4gIFNpbmNlIFVuaWNvZGUgc3RyaW5ncyBhcmUgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLAorICAgdGhlIHN0cmluZyBtdXN0IG5vdCBiZSBzaGFyZWQsIG9yIGhhdmUgYmVlbiBoYXNoZWQgeWV0LgorCisgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGF0ICp1bmljb2RlKiBpcyBhIFVuaWNvZGUgb2JqZWN0LCB0aGF0IHRoZSBpbmRleCBpcworICAgbm90IG91dCBvZiBib3VuZHMsIGFuZCB0aGF0IHRoZSBvYmplY3QgY2FuIGJlIG1vZGlmaWVkIHNhZmVseSAoaS5lLiB0aGF0IGl0CisgICBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG9uZSksIGluIGNvbnRyYXN0IHRvIHRoZSBtYWNybyB2ZXJzaW9uCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfV1JJVEVfQ0hBUmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SZWFkQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNoYXJhY3RlciBmcm9tIGEgc3RyaW5nLiAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCAqdW5pY29kZSogaXMgYQorICAgVW5pY29kZSBvYmplY3QgYW5kIHRoZSBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kcywgaW4gY29udHJhc3QgdG8gdGhlIG1hY3JvCisgICB2ZXJzaW9uIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEX0NIQVJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9TdWJzdHJpbmcoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorCisgICBSZXR1cm4gYSBzdWJzdHJpbmcgb2YgKnN0ciosIGZyb20gY2hhcmFjdGVyIGluZGV4ICpzdGFydCogKGluY2x1ZGVkKSB0bworICAgY2hhcmFjdGVyIGluZGV4ICplbmQqIChleGNsdWRlZCkuICBOZWdhdGl2ZSBpbmRpY2VzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCogUHlVbmljb2RlX0FzVUNTNChQeU9iamVjdCAqdSwgUHlfVUNTNCAqYnVmZmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IGNvcHlfbnVsbCkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgVUNTNCBidWZmZXIsIGluY2x1ZGluZyBhIG51bGwgY2hhcmFjdGVyLCBpZgorICAgKmNvcHlfbnVsbCogaXMgc2V0LiAgUmV0dXJucyAqTlVMTCogYW5kIHNldHMgYW4gZXhjZXB0aW9uIG9uIGVycm9yIChpbgorICAgcGFydGljdWxhciwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqYnVmbGVuKiBpcyBzbWFsbGVyIHRoYW4gdGhlIGxlbmd0aCBvZgorICAgKnUqKS4gICpidWZmZXIqIGlzIHJldHVybmVkIG9uIHN1Y2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0KiBQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqdSkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgbmV3IFVDUzQgYnVmZmVyIHRoYXQgaXMgYWxsb2NhdGVkIHVzaW5nCisgICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLiAgSWYgdGhpcyBmYWlscywgKk5VTEwqIGlzIHJldHVybmVkIHdpdGggYQorICAgOmV4YzpgTWVtb3J5RXJyb3JgIHNldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRGVwcmVjYXRlZCBQeV9VTklDT0RFIEFQSXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKworVGhlc2UgQVBJIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiA6cGVwOmAzOTNgLgorRXh0ZW5zaW9uIG1vZHVsZXMgY2FuIGNvbnRpbnVlIHVzaW5nIHRoZW0sIGFzIHRoZXkgd2lsbCBub3QgYmUgcmVtb3ZlZCBpbiBQeXRob24KKzMueCwgYnV0IG5lZWQgdG8gYmUgYXdhcmUgdGhhdCB0aGVpciB1c2UgY2FuIG5vdyBjYXVzZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IGhpdHMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorCisgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciAqdSogb2YgdGhlIGdpdmVuIHNpemUuICp1KgorICAgbWF5IGJlICpOVUxMKiB3aGljaCBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncworICAgcmVzcG9uc2liaWxpdHkgdG8gZmlsbCBpbiB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4KKworICAgSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4KKyAgIFRoZXJlZm9yZSwgbW9kaWZpY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4KKyAgICp1KiBpcyAqTlVMTCouCisKKyAgIElmIHRoZSBidWZmZXIgaXMgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRFlgIG11c3QgYmUgY2FsbGVkIG9uY2UgdGhlCisgICBzdHJpbmcgY29udGVudCBoYXMgYmVlbiBmaWxsZWQgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGUgYWNjZXNzIG1hY3JvcyBzdWNoIGFzCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgIG9yCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKKyAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciwgb3IgKk5VTEwqIG9uIGVycm9yLiBUaGlzIHdpbGwgY3JlYXRlIHRoZQorICAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QgaWYgaXQgaXMgbm90IHlldAorICAgYXZhaWxhYmxlLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBzdHJpbmcgbWF5IGNvbnRhaW4KKyAgIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbgorICAgdXNlZCBpbiBtb3N0IEMgZnVuY3Rpb25zLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0YCwKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgLCA6YzpmdW5jOmBQeVVuaWNvZGVfUmVhZENoYXJgIG9yIHNpbWlsYXIgbmV3CisgICBBUElzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgcmVwbGFjaW5nIGFsbCBkZWNpbWFsIGRpZ2l0cyBpbgorICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgQVNDSUkgZGlnaXRzIDAtLTkKKyAgIGFjY29yZGluZyB0byB0aGVpciBkZWNpbWFsIHZhbHVlLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gb2NjdXJzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKKworICAgTGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlYCwgYnV0IGFsc28gc2F2ZXMgdGhlIDpjOmZ1bmM6YFB5X1VOSUNPREVgCisgICBhcnJheSBsZW5ndGggaW4gKnNpemUqLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nCisgICBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUKKyAgIHRydW5jYXRlZCB3aGVuIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBDcmVhdGUgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gKk5VTEwqCisgICBhbmQgcmFpc2UgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsCisgICBvdGhlcndpc2UgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlCisgICB0aGUgYnVmZmVyKS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlCisgICB0cnVuY2F0ZWQgd2hlbiB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAgb3Igc2ltaWxhciBuZXcgQVBJcy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uLCBpbgorICAgY29kZSB1bml0cyAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21PYmplY3QoUHlPYmplY3QgKm9iaikKIAogICAgU2hvcnRjdXQgZm9yIGBgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KG9iaiwgTlVMTCwgInN0cmljdCIpYGAgd2hpY2ggaXMgdXNlZAogICAgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgd2hlbmV2ZXIgY29lcmNpb24gdG8gVW5pY29kZSBpcyBuZWVkZWQuCiAKLUlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyA6Yzp0eXBlOmB3Y2hhcl90YCBhbmQgcHJvdmlkZXMgYSBoZWFkZXIgZmlsZSB3Y2hhci5oLAotUHl0aG9uIGNhbiBpbnRlcmZhY2UgZGlyZWN0bHkgdG8gdGhpcyB0eXBlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLgotU3VwcG9ydCBpcyBvcHRpbWl6ZWQgaWYgUHl0aG9uJ3Mgb3duIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgaXMgaWRlbnRpY2FsIHRvCi10aGUgc3lzdGVtJ3MgOmM6dHlwZTpgd2NoYXJfdGAuCisKK0xvY2FsZSBFbmNvZGluZworIiIiIiIiIiIiIiIiIiIiCisKK1RoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBjYW4gYmUgdXNlZCB0byBkZWNvZGUgdGV4dCBmcm9tIHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBpbnQgc3Vycm9nYXRlZXNjYXBlKQorCisgICBEZWNvZGUgYSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBkZWNvZGVyIGlzIHN0cmljdCBpZgorICAgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlCisgICBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkgdG8gZXNjYXBlIHVuZGVjb2RhYmxlCisgICBieXRlcy4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbiBiZSBkZWNvZGVkIGFzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciBhbmQKKyAgICpzdXJyb2dhdGVlc2NhcGUqIGlzIG5vdCBlcXVhbCB0byB6ZXJvLCB0aGUgYnl0ZSBzZXF1ZW5jZSBpcyBlc2NhcGVkIHVzaW5nCisgICB0aGUgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgaW5zdGVhZCBvZiBiZWluZyBkZWNvZGVkLiAgKnN0cioKKyAgIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQgY2Fubm90IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgICAgUHl0aG9uIHN0YXJ0dXApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciAqc3RyLCBpbnQgc3Vycm9nYXRlZXNjYXBlKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplYCwgYnV0IGNvbXB1dGUgdGhlIHN0cmluZworICAgbGVuZ3RoIHVzaW5nIDpjOmZ1bmM6YHN0cmxlbmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUxvY2FsZShQeU9iamVjdCAqdW5pY29kZSwgaW50IHN1cnJvZ2F0ZWVzY2FwZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZW5jb2RlciBpcworICAgc3RyaWN0IGlmICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSBpdCB1c2VzIHRoZQorICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKDpwZXA6YDM4M2ApLiBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYAorICAgb2JqZWN0LiAqc3RyKiBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGAgdG8gZW5jb2RlIGEgc3RyaW5nIHRvCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCAodGhlIGxvY2FsZSBlbmNvZGluZyByZWFkIGF0CisgICAgICBQeXRob24gc3RhcnR1cCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIEZpbGUgU3lzdGVtIEVuY29kaW5nCkBAIC00MzAsNiArODE4LDEzIEBACiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKKyAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBVc2UgYGAnc3RyaWN0J2BgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KIApAQCAtNDU4LDYgKzg1MywxMyBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhCisgICAgICBzdHJpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVMb2NhbGVgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCkBAIC00NzksOSArODgxLDkgQEAKICAgIENvcHkgdGhlIFVuaWNvZGUgb2JqZWN0IGNvbnRlbnRzIGludG8gdGhlIDpjOnR5cGU6YHdjaGFyX3RgIGJ1ZmZlciAqdyouICBBdCBtb3N0CiAgICAqc2l6ZSogOmM6dHlwZTpgd2NoYXJfdGAgY2hhcmFjdGVycyBhcmUgY29waWVkIChleGNsdWRpbmcgYSBwb3NzaWJseSB0cmFpbGluZwogICAgMC10ZXJtaW5hdGlvbiBjaGFyYWN0ZXIpLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgOmM6dHlwZTpgd2NoYXJfdGAgY2hhcmFjdGVycwotICAgY29waWVkIG9yIC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90YAorICAgY29waWVkIG9yIC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90KmAKICAgIHN0cmluZyBtYXkgb3IgbWF5IG5vdCBiZSAwLXRlcm1pbmF0ZWQuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcgotICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3RgIHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQgaW4gY2FzZSB0aGlzIGlzCisgICB0byBtYWtlIHN1cmUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQgaW4gY2FzZSB0aGlzIGlzCiAgICByZXF1aXJlZCBieSB0aGUgYXBwbGljYXRpb24uIEFsc28sIG5vdGUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZwogICAgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkCiAgICB3aGVuIHVzZWQgd2l0aCBtb3N0IEMgZnVuY3Rpb25zLgpAQCAtNDk3LDEyICs4OTksMzIgQEAKICAgIFJldHVybnMgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IDpjOmZ1bmM6YFB5TWVtX0FsbG9jYCAodXNlCiAgICA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlIGl0KSBvbiBzdWNjZXNzLiBPbiBlcnJvciwgcmV0dXJucyAqTlVMTCosCiAgICAqXCpzaXplKiBpcyB1bmRlZmluZWQgYW5kIHJhaXNlcyBhIDpleGM6YE1lbW9yeUVycm9yYC4gTm90ZSB0aGF0IHRoZQotICAgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoCisgICByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdGAgc3RyaW5nIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaAogICAgd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbiB1c2VkIHdpdGggbW9zdCBDIGZ1bmN0aW9ucy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorVUNTNCBTdXBwb3J0CisiIiIiIiIiIiIiIiIKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIFhYWCBhcmUgdGhlc2UgbWVhbnQgdG8gYmUgcHVibGljPworCisuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IFB5X1VDUzRfc3RybGVuKGNvbnN0IFB5X1VDUzQgKnUpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJjcHkoUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RybmNweShQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIsIHNpemVfdCBuKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RyY2F0KFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBpbnQgUHlfVUNTNF9zdHJjbXAoY29uc3QgUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIGludCBQeV9VQ1M0X3N0cm5jbXAoY29uc3QgUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyLCBzaXplX3QgbikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cmNocihjb25zdCBQeV9VQ1M0ICpzLCBQeV9VQ1M0IGMpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJyY2hyKGNvbnN0IFB5X1VDUzQgKnMsIFB5X1VDUzQgYykKKworICAgVGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgd29yayBvbiBzdHJpbmdzIG9mIDpjOnR5cGU6YFB5X1VDUzRgIGNoYXJhY3RlcnMgYW5kCisgICBvdGhlcndpc2UgYmVoYXZlIGxpa2UgdGhlIEMgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisKIC4uIF9idWlsdGluY29kZWNzOgogCiBCdWlsdC1pbiBDb2RlY3MKQEAgLTUzNyw3ICs5NTksOCBAQAogVGhlc2UgYXJlIHRoZSBnZW5lcmljIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgZW5jb2RlZCBzdHJpbmcgKnMqLgogICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lIG5hbWUKQEAgLTU0Niw3ICs5NjksMTggQEAKICAgIHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzIG9iamVjdC4KKyAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZQorICAgbmFtZSBpbiB0aGUgVW5pY29kZSA6bWV0aDpgZW5jb2RlYCBtZXRob2QuIFRoZSBjb2RlYyB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cAorICAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyICpzKiBvZiB0aGUgZ2l2ZW4gKnNpemUqIGFuZCByZXR1cm4gYSBQeXRob24KICAgIGJ5dGVzIG9iamVjdC4gICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUKQEAgLTU1NCwxNCArOTg4LDkgQEAKICAgIHRvIGJlIHVzZWQgaXMgbG9va2VkIHVwIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuICBSZXR1cm4gKk5VTEwqIGlmIGFuCiAgICBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzIG9iamVjdC4KLSAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZQotICAgbmFtZSBpbiB0aGUgVW5pY29kZSA6bWV0aDpgZW5jb2RlYCBtZXRob2QuIFRoZSBjb2RlYyB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cAotICAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmdgLgogCiAKIFVURi04IENvZGVjcwpAQCAtNTc2LDcgKzEwMDUsOCBAQAogICAgKnMqLiBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEY4YC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgdHJhaWxpbmcgaW5jb21wbGV0ZSBVVEYtOCBieXRlIHNlcXVlbmNlcyB3aWxsIG5vdCBiZQpAQCAtNTg0LDEzICsxMDE0LDYgQEAKICAgIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVVEYtOCBhbmQKLSAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5Ci0gICB0aGUgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBVVEYtOCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCkBAIC01OTgsMTMgKzEwMjEsNDggQEAKICAgIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpzaXplKQorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGVuY29kaW5nIChVVEYtOCkgb2YgdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQKKyAgIHN0b3JlIHRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIHJlcHJlc2VudGF0aW9uIChpbiBieXRlcykgaW4gKnNpemUqLiAgKnNpemUqCisgICBjYW4gYmUgKk5VTEwqLCBpbiB0aGlzIGNhc2Ugbm8gc2l6ZSB3aWxsIGJlIHN0b3JlZC4KKworICAgSW4gdGhlIGNhc2Ugb2YgYW4gZXJyb3IsICpOVUxMKiBpcyByZXR1cm5lZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQgYW5kIG5vCisgICAqc2l6ZSogaXMgc3RvcmVkLgorCisgICBUaGlzIGNhY2hlcyB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24gb2YgdGhlIHN0cmluZyBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZAorICAgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHNhbWUgYnVmZmVyLiAgVGhlIGNhbGxlciBpcyBub3QKKyAgIHJlc3BvbnNpYmxlIGZvciBkZWFsbG9jYXRpbmcgdGhlIGJ1ZmZlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEFzIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhBbmRTaXplYCwgYnV0IGRvZXMgbm90IHN0b3JlIHRoZSBzaXplLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVVEYtOCBhbmQKKyAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nYCBvciA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZWAuCisKKwogVVRGLTMyIENvZGVjcwogIiIiIiIiIiIiIiIiIgogCiBUaGVzZSBhcmUgdGhlIFVURi0zMiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKIAogICAgRGVjb2RlICpzaXplKiBieXRlcyBmcm9tIGEgVVRGLTMyIGVuY29kZWQgYnVmZmVyIHN0cmluZyBhbmQgcmV0dXJuIHRoZQogICAgY29ycmVzcG9uZGluZyBVbmljb2RlIG9iamVjdC4gICplcnJvcnMqIChpZiBub24tKk5VTEwqKSBkZWZpbmVzIHRoZSBlcnJvcgpAQCAtNjMyLDcgKzEwOTAsOCBAQAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjMyYC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWxgIHdpbGwgbm90IHRyZWF0CkBAIC02NDEsNyArMTEwMCwxNSBAQAogICAgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMzIgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKKyAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCisgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKIAogICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBVVEYtMzIgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgVW5pY29kZQogICAgZGF0YSBpbiAqcyouICBPdXRwdXQgaXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBieXRlIG9yZGVyOjoKQEAgLTY1OCwxMiArMTEyNSw5IEBACiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTMyIGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCi0gICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgotICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmdgLgogCiAKIFVURi0xNiBDb2RlY3MKQEAgLTY3Miw3ICsxMTM2LDggQEAKIFRoZXNlIGFyZSB0aGUgVVRGLTE2IGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQogCiAgICBEZWNvZGUgKnNpemUqIGJ5dGVzIGZyb20gYSBVVEYtMTYgZW5jb2RlZCBidWZmZXIgc3RyaW5nIGFuZCByZXR1cm4gdGhlCiAgICBjb3JyZXNwb25kaW5nIFVuaWNvZGUgb2JqZWN0LiAgKmVycm9ycyogKGlmIG5vbi0qTlVMTCopIGRlZmluZXMgdGhlIGVycm9yCkBAIC02OTksNyArMTE2NCw4IEBACiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMTZgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bGAgd2lsbCBub3QgdHJlYXQKQEAgLTcwOCw3ICsxMTc0LDE1IEBACiAgICBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjE2KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMTYgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKKyAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCisgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKIAogICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBVVEYtMTYgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgVW5pY29kZQogICAgZGF0YSBpbiAqcyouICBPdXRwdXQgaXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBieXRlIG9yZGVyOjoKQEAgLTcyNiwxMiArMTIwMCw5IEBACiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTE2IGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCi0gICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgotICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmdgLgogCiAKIFVURi03IENvZGVjcwpAQCAtNzQ2LDcgKzEyMTcsOCBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGN2AuICBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCB0cmFpbGluZyBpbmNvbXBsZXRlIFVURi03IGJhc2UtNjQgc2VjdGlvbnMgd2lsbCBub3QKQEAgLTc1NCw3ICsxMjI2LDggQEAKICAgIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJhc2U2NFNldE8sIGludCBiYXNlNjRXaGl0ZVNwYWNlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sIGludCBiYXNlNjRXaGl0ZVNwYWNlLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiBzaXplIHVzaW5nIFVURi03IGFuZAogICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKQEAgLTc2NSw2ICsxMjM4LDExIEBACiAgICBub256ZXJvLCB3aGl0ZXNwYWNlIHdpbGwgYmUgZW5jb2RlZCBpbiBiYXNlLTY0LiAgQm90aCBhcmUgc2V0IHRvIHplcm8gZm9yIHRoZQogICAgUHl0aG9uICJ1dGYtNyIgY29kZWMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEkuCisKKyAgIC4uIFhYWCByZXBsYWNlIHdpdGggd2hhdD8KKwogCiBVbmljb2RlLUVzY2FwZSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiIiIiIiIiIgpAQCAtNzcyLDE5ICsxMjUwLDEzIEBACiBUaGVzZSBhcmUgdGhlICJVbmljb2RlIEVzY2FwZSIgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBVbmljb2RlLUVzY2FwZSBlbmNvZGVkCiAgICBzdHJpbmcgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVW5pY29kZS1Fc2NhcGUgYW5kCi0gICByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCi0gICBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIFVuaWNvZGUtRXNjYXBlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24KQEAgLTc5MiwyNSArMTI2NCwzMCBAQAogICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVbmljb2RlLUVzY2FwZSBhbmQKKyAgIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKKyAgIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZ2AuCisKKwogUmF3LVVuaWNvZGUtRXNjYXBlIENvZGVjcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUaGVzZSBhcmUgdGhlICJSYXcgVW5pY29kZSBFc2NhcGUiIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgUmF3LVVuaWNvZGUtRXNjYXBlCiAgICBlbmNvZGVkIHN0cmluZyAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZQotICAgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcwpAQCAtODE4LDYgKzEyOTUsMTggQEAKICAgIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlCisgICBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nYC4KKworCiBMYXRpbi0xIENvZGVjcwogIiIiIiIiIiIiIiIiIiIKIApAQCAtODMxLDE4ICsxMzIwLDIyIEBACiAgICAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgTGF0aW4tMSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCisgICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgTGF0aW4tMSBhbmQKICAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CiAgICB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIExhdGluLTEgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nYC4KIAogCiBBU0NJSSBDb2RlY3MKQEAgLTg1OCwxOCArMTM1MSwyMiBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgQVNDSUkgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgQVNDSUkgYW5kCiAgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQogICAgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIEFTQ0lJIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nYC4KIAogCiBDaGFyYWN0ZXIgTWFwIENvZGVjcwpAQCAtODk4LDcgKzEzOTUsOCBAQAogCiBUaGVzZSBhcmUgdGhlIG1hcHBpbmcgY29kZWMgQVBJczoKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBlbmNvZGVkIHN0cmluZyAqcyogdXNpbmcKICAgIHRoZSBnaXZlbiAqbWFwcGluZyogb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKQEAgLTkwOCwxMyArMTQwNiw2IEBACiAgICB0cmVhdGVkIGFzICJ1bmRlZmluZWQgbWFwcGluZyIuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgdGhlIGdpdmVuCi0gICAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gUmV0dXJuICpOVUxMKiBpZiBhbgotICAgZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKm1hcHBpbmcpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gdGhlIHJlc3VsdApAQCAtOTI0LDcgKzE0MTUsOCBAQAogVGhlIGZvbGxvd2luZyBjb2RlYyBBUEkgaXMgc3BlY2lhbCBpbiB0aGF0IG1hcHMgVW5pY29kZSB0byBVbmljb2RlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgVHJhbnNsYXRlIGEgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgYXBwbHlpbmcgYQogICAgY2hhcmFjdGVyIG1hcHBpbmcgKnRhYmxlKiB0byBpdCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuICBSZXR1cm4KQEAgLTkzNyw2ICsxNDI5LDIyIEBACiAgICBhbmQgc2VxdWVuY2VzIHdvcmsgd2VsbC4gIFVubWFwcGVkIGNoYXJhY3RlciBvcmRpbmFscyAob25lcyB3aGljaCBjYXVzZSBhCiAgICA6ZXhjOmBMb29rdXBFcnJvcmApIGFyZSBsZWZ0IHVudG91Y2hlZCBhbmQgYXJlIGNvcGllZCBhcy1pcy4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSS4KKworICAgLi4gWFhYIHJlcGxhY2Ugd2l0aCB3aGF0PworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIHRoZSBnaXZlbgorICAgKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuIFJldHVybiAqTlVMTCogaWYgYW4KKyAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmdgLgogCiAKIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzCkBAIC05NTMsNyArMTQ2MSw4IEBACiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywgaW50IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBpbnQgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZU1CQ1NgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsYCB3aWxsIG5vdCBkZWNvZGUKQEAgLTk2MSwxOCArMTQ3MCwzMSBAQAogICAgaW4gKmNvbnN1bWVkKi4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIE1CQ1MgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoaW50IGNvZGVfcGFnZSwgUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSBVbmljb2RlIG9iamVjdCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvZGUgcGFnZSBhbmQgcmV0dXJuIGEgUHl0aG9uCisgICBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4gVXNlCisgICA6YzpkYXRhOmBDUF9BQ1BgIGNvZGUgcGFnZSB0byBnZXQgdGhlIE1CQ1MgZW5jb2Rlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBNQkNTIGFuZCByZXR1cm4KICAgIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCiAgICBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIE1CQ1MgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTUJDU1N0cmluZ2Agb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlYC4KIAogCiBNZXRob2RzICYgU2xvdHMKQEAgLTEwMTEsNyArMTUzMyw4IEBACiAgICBjaGFyYWN0ZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBzdHJpbmdzLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqdGFibGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgVHJhbnNsYXRlIGEgc3RyaW5nIGJ5IGFwcGx5aW5nIGEgY2hhcmFjdGVyIG1hcHBpbmcgdGFibGUgdG8gaXQgYW5kIHJldHVybiB0aGUKICAgIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4KQEAgLTEwMzMsMTQgKzE1NTYsMTYgQEAKICAgIFVuaWNvZGUgc3RyaW5nLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1RhaWxtYXRjaChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1RhaWxtYXRjaChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKIAogICAgUmV0dXJuIDEgaWYgKnN1YnN0ciogbWF0Y2hlcyBgYHN0cltzdGFydDplbmRdYGAgYXQgdGhlIGdpdmVuIHRhaWwgZW5kCiAgICAoKmRpcmVjdGlvbiogPT0gLTEgbWVhbnMgdG8gZG8gYSBwcmVmaXggbWF0Y2gsICpkaXJlY3Rpb24qID09IDEgYSBzdWZmaXggbWF0Y2gpLAogICAgMCBvdGhlcndpc2UuIFJldHVybiBgYC0xYGAgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCiAKICAgIFJldHVybiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgKnN1YnN0ciogaW4gYGBzdHJbc3RhcnQ6ZW5kXWBgIHVzaW5nIHRoZSBnaXZlbgogICAgKmRpcmVjdGlvbiogKCpkaXJlY3Rpb24qID09IDEgbWVhbnMgdG8gZG8gYSBmb3J3YXJkIHNlYXJjaCwgKmRpcmVjdGlvbiogPT0gLTEgYQpAQCAtMTA0OSwxMyArMTU3NCwyNyBAQAogICAgb2NjdXJyZWQgYW5kIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmRDaGFyKFB5T2JqZWN0ICpzdHIsIFB5X1VDUzQgY2gsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKworICAgUmV0dXJuIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyICpjaCogaW4gYGBzdHJbc3RhcnQ6ZW5kXWBgIHVzaW5nCisgICB0aGUgZ2l2ZW4gKmRpcmVjdGlvbiogKCpkaXJlY3Rpb24qID09IDEgbWVhbnMgdG8gZG8gYSBmb3J3YXJkIHNlYXJjaCwKKyAgICpkaXJlY3Rpb24qID09IC0xIGEgYmFja3dhcmQgc2VhcmNoKS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGluZGV4IG9mIHRoZQorICAgZmlyc3QgbWF0Y2g7IGEgdmFsdWUgb2YgYGAtMWBgIGluZGljYXRlcyB0aGF0IG5vIG1hdGNoIHdhcyBmb3VuZCwgYW5kIGBgLTJgYAorICAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgYW5kIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiAqc3Vic3RyKiBpbgogICAgYGBzdHJbc3RhcnQ6ZW5kXWBgLiAgUmV0dXJuIGBgLTFgYCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5T2JqZWN0ICpyZXBsc3RyLCBQeV9zc2l6ZV90IG1heGNvdW50KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbHN0ciwgUHlfc3NpemVfdCBtYXhjb3VudCkKIAogICAgUmVwbGFjZSBhdCBtb3N0ICptYXhjb3VudCogb2NjdXJyZW5jZXMgb2YgKnN1YnN0ciogaW4gKnN0ciogd2l0aCAqcmVwbHN0ciogYW5kCiAgICByZXR1cm4gdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4gKm1heGNvdW50KiA9PSAtMSBtZWFucyByZXBsYWNlIGFsbApAQCAtMTA3Niw3ICsxNjE1LDcgQEAKICAgIElTTy04ODU5LTEgaWYgaXQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMiLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCAgUHlPYmplY3QgKnJpZ2h0LCAgaW50IG9wKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsICBQeU9iamVjdCAqcmlnaHQsICBpbnQgb3ApCiAKICAgIFJpY2ggY29tcGFyZSB0d28gdW5pY29kZSBzdHJpbmdzIGFuZCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKQEAgLTExMDMsOCArMTY0Miw4IEBACiAgICBDaGVjayB3aGV0aGVyICplbGVtZW50KiBpcyBjb250YWluZWQgaW4gKmNvbnRhaW5lciogYW5kIHJldHVybiB0cnVlIG9yIGZhbHNlCiAgICBhY2NvcmRpbmdseS4KIAotICAgKmVsZW1lbnQqIGhhcyB0byBjb2VyY2UgdG8gYSBvbmUgZWxlbWVudCBVbmljb2RlIHN0cmluZy4gYGAtMWBgIGlzIHJldHVybmVkIGlmCi0gICB0aGVyZSB3YXMgYW4gZXJyb3IuCisgICAqZWxlbWVudCogaGFzIHRvIGNvZXJjZSB0byBhIG9uZSBlbGVtZW50IFVuaWNvZGUgc3RyaW5nLiBgYC0xYGAgaXMgcmV0dXJuZWQKKyAgIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKnN0cmluZykKQEAgLTExMjMsNyArMTY2Miw2IEBACiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnYpCiAKICAgIEEgY29tYmluYXRpb24gb2YgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21TdHJpbmdgIGFuZAotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0ludGVybkluUGxhY2VgLCByZXR1cm5pbmcgZWl0aGVyIGEgbmV3IHVuaWNvZGUgc3RyaW5nIG9iamVjdAotICAgdGhhdCBoYXMgYmVlbiBpbnRlcm5lZCwgb3IgYSBuZXcgKCJvd25lZCIpIHJlZmVyZW5jZSB0byBhbiBlYXJsaWVyIGludGVybmVkCi0gICBzdHJpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUuCi0KKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9JbnRlcm5JblBsYWNlYCwgcmV0dXJuaW5nIGVpdGhlciBhIG5ldyB1bmljb2RlIHN0cmluZworICAgb2JqZWN0IHRoYXQgaGFzIGJlZW4gaW50ZXJuZWQsIG9yIGEgbmV3ICgib3duZWQiKSByZWZlcmVuY2UgdG8gYW4gZWFybGllcgorICAgaW50ZXJuZWQgc3RyaW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdCBiL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKaW5kZXggNDFjZGQ2Yi4uNDk5ZWIzZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdAorKysgYi9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CkBAIC05NSwxMiArOTUsNiBAQAogICAgbGVhdmluZyAqY2xvc2VpdCogc2V0IHRvIGBgMGBgIGFuZCAqZmxhZ3MqIHNldCB0byAqTlVMTCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVJ1bl9TaW1wbGVGaWxlRmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzKQotCi0gICBUaGlzIGlzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gOmM6ZnVuYzpgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3NgIGJlbG93LAotICAgbGVhdmluZyAqY2xvc2VpdCogc2V0IHRvIGBgMGBgLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlSdW5fU2ltcGxlRmlsZUV4KEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNsb3NlaXQpCiAKICAgIFRoaXMgaXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0byA6YzpmdW5jOmBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFnc2AgYmVsb3csCmRpZmYgLS1naXQgYS9Eb2MvY29uZi5weSBiL0RvYy9jb25mLnB5CmluZGV4IDU1NWYyODEuLjZiMDg1ZTAgMTAwNjQ0Ci0tLSBhL0RvYy9jb25mLnB5CisrKyBiL0RvYy9jb25mLnB5CkBAIC05MSw3ICs5MSw3IEBACiB9CiAKICMgT3V0cHV0IGFuIE9wZW5TZWFyY2ggZGVzY3JpcHRpb24gZmlsZS4KLWh0bWxfdXNlX29wZW5zZWFyY2ggPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjInCitodG1sX3VzZV9vcGVuc2VhcmNoID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJyArIHZlcnNpb24KIAogIyBBZGRpdGlvbmFsIHN0YXRpYyBmaWxlcy4KIGh0bWxfc3RhdGljX3BhdGggPSBbJ3Rvb2xzL3NwaGlueGV4dC9zdGF0aWMnXQpkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggYzdkN2JkMS4uYTEwMDRhZCAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC00NjUsNiArNDY1LDExIEBACiBQeUZ1bmN0aW9uX05ldzpQeU9iamVjdCo6Y29kZTorMToKIFB5RnVuY3Rpb25fTmV3OlB5T2JqZWN0KjpnbG9iYWxzOisxOgogCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6OisxOgorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOmNvZGU6KzE6CitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6Z2xvYmFsczorMToKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0KjpxdWFsbmFtZTorMToKKwogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOmludDo6OgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpvcDowOgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpjbG9zdXJlOisxOgpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0IGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CmluZGV4IGUxNWRjNzYuLjcxNzAyZTUgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKQEAgLTE2MCw3ICsxNjAsNyBAQAogLi4gY2xhc3M6OiBFeHRlbnNpb24KIAogICAgVGhlIEV4dGVuc2lvbiBjbGFzcyBkZXNjcmliZXMgYSBzaW5nbGUgQyBvciBDKytleHRlbnNpb24gbW9kdWxlIGluIGEgc2V0dXAKLSAgIHNjcmlwdC4gSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGl0cyBjb25zdHJ1Y3RvcgorICAgc2NyaXB0LiBJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gaXRzIGNvbnN0cnVjdG9yOgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXJndW1lbnQgbmFtZSAgICAgICAgICB8IHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgfApAQCAtMTE1NywxMiArMTE1NywxMSBAQAogCiAuLiBmdW5jdGlvbjo6IGdyb2tfZW52aXJvbm1lbnRfZXJyb3IoZXhjWywgcHJlZml4PSdlcnJvcjogJ10pCiAKLSAgIEdlbmVyYXRlIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCAgKDpleGM6YElPRXJyb3JgCi0gICBvciA6ZXhjOmBPU0Vycm9yYCkgZXhjZXB0aW9uIG9iamVjdC4gICBIYW5kbGVzIFB5dGhvbiAxLjUuMSBhbmQgbGF0ZXIgc3R5bGVzLAotICAgYW5kIGRvZXMgd2hhdCBpdCBjYW4gdG8gZGVhbCB3aXRoICBleGNlcHRpb24gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYSBmaWxlbmFtZQotICAgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUgZXJyb3IgIGlzIGR1ZSB0byBhIHR3by1maWxlIG9wZXJhdGlvbiwgc3VjaCBhcwotICAgOmZ1bmM6YHJlbmFtZWAgb3IgIDpmdW5jOmBsaW5rYCkuICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzIGEgc3RyaW5nCi0gICBwcmVmaXhlZCAgd2l0aCAqcHJlZml4Ki4KKyAgIEdlbmVyYXRlIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gb2JqZWN0LgorICAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIGxhdGVyIHN0eWxlcywgYW5kIGRvZXMgd2hhdCBpdCBjYW4gdG8gZGVhbCB3aXRoCisgICBleGNlcHRpb24gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYSBmaWxlbmFtZSAod2hpY2ggaGFwcGVucyB3aGVuIHRoZSBlcnJvcgorICAgaXMgZHVlIHRvIGEgdHdvLWZpbGUgb3BlcmF0aW9uLCBzdWNoIGFzIDpmdW5jOmByZW5hbWVgIG9yIDpmdW5jOmBsaW5rYCkuCisgICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzIGEgc3RyaW5nIHByZWZpeGVkIHdpdGggKnByZWZpeCouCiAKIAogLi4gZnVuY3Rpb246OiBzcGxpdF9xdW90ZWQocykKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAppbmRleCA3ZmQ5ZjcyLi5lZjk1YWM5IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CkBAIC0zMjEsNyArMzIxLDcgQEAKIAogVGhlIDpjb25zdDpgTUVUSF9LRVlXT1JEU2AgYml0IG1heSBiZSBzZXQgaW4gdGhlIHRoaXJkIGZpZWxkIGlmIGtleXdvcmQKIGFyZ3VtZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4gIEluIHRoaXMgY2FzZSwgdGhlIEMgZnVuY3Rpb24gc2hvdWxkCi1hY2NlcHQgYSB0aGlyZCBgYFB5T2JqZWN0IFwqYGAgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmRzLgorYWNjZXB0IGEgdGhpcmQgYGBQeU9iamVjdCAqYGAgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmRzLgogVXNlIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc2AgdG8gcGFyc2UgdGhlIGFyZ3VtZW50cyB0byBzdWNoIGEKIGZ1bmN0aW9uLgogCkBAIC0zODQsOSArMzg0LDYgQEAKICAgICAgICAgICBpbXBvcnRzIGl0LiAqLwogICAgICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic3BhbSIpOwogCi1BbiBleGFtcGxlIG1heSBiZSBmb3VuZCBpbiB0aGUgZmlsZSA6ZmlsZTpgRGVtby9lbWJlZC9kZW1vLmNgIGluIHRoZSBQeXRob24KLXNvdXJjZSBkaXN0cmlidXRpb24uCi0KIC4uIG5vdGU6OgogCiAgICBSZW1vdmluZyBlbnRyaWVzIGZyb20gYGBzeXMubW9kdWxlc2BgIG9yIGltcG9ydGluZyBjb21waWxlZCBtb2R1bGVzIGludG8KZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0IGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKaW5kZXggMzAwMTQxNS4uMzc2ZDA5YSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKQEAgLTI2LDExICsyNiwxMiBAQAogPT09PT09PT09PQogCiBUaGUgUHl0aG9uIHJ1bnRpbWUgc2VlcyBhbGwgUHl0aG9uIG9iamVjdHMgYXMgdmFyaWFibGVzIG9mIHR5cGUKLTpjOnR5cGU6YFB5T2JqZWN0XCpgLiAgQSA6Yzp0eXBlOmBQeU9iamVjdGAgaXMgbm90IGEgdmVyeSBtYWduaWZpY2VudCBvYmplY3QgLSBpdAotanVzdCBjb250YWlucyB0aGUgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byB0aGUgb2JqZWN0J3MgInR5cGUgb2JqZWN0Ii4gIFRoaXMgaXMKLXdoZXJlIHRoZSBhY3Rpb24gaXM7IHRoZSB0eXBlIG9iamVjdCBkZXRlcm1pbmVzIHdoaWNoIChDKSBmdW5jdGlvbnMgZ2V0IGNhbGxlZAotd2hlbiwgZm9yIGluc3RhbmNlLCBhbiBhdHRyaWJ1dGUgZ2V0cyBsb29rZWQgdXAgb24gYW4gb2JqZWN0IG9yIGl0IGlzIG11bHRpcGxpZWQKLWJ5IGFub3RoZXIgb2JqZWN0LiAgVGhlc2UgQyBmdW5jdGlvbnMgYXJlIGNhbGxlZCAidHlwZSBtZXRob2RzIi4KKzpjOnR5cGU6YFB5T2JqZWN0XCpgLCB3aGljaCBzZXJ2ZXMgYXMgYSAiYmFzZSB0eXBlIiBmb3IgYWxsIFB5dGhvbiBvYmplY3RzLgorOmM6dHlwZTpgUHlPYmplY3RgIGl0c2VsZiBvbmx5IGNvbnRhaW5zIHRoZSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIHRoZQorb2JqZWN0J3MgInR5cGUgb2JqZWN0Ii4gIFRoaXMgaXMgd2hlcmUgdGhlIGFjdGlvbiBpczsgdGhlIHR5cGUgb2JqZWN0IGRldGVybWluZXMKK3doaWNoIChDKSBmdW5jdGlvbnMgZ2V0IGNhbGxlZCB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGF0dHJpYnV0ZSBnZXRzIGxvb2tlZAordXAgb24gYW4gb2JqZWN0IG9yIGl0IGlzIG11bHRpcGxpZWQgYnkgYW5vdGhlciBvYmplY3QuICBUaGVzZSBDIGZ1bmN0aW9ucworYXJlIGNhbGxlZCAidHlwZSBtZXRob2RzIi4KIAogU28sIGlmIHlvdSB3YW50IHRvIGRlZmluZSBhIG5ldyBvYmplY3QgdHlwZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgbmV3IHR5cGUKIG9iamVjdC4KQEAgLTUwLDE1ICs1MSwxNSBAQAogICAgICAgIFB5T2JqZWN0X0hFQUQKICAgIH0gbm9kZHlfTm9kZHlPYmplY3Q7CiAKLVRoaXMgaXMgd2hhdCBhIE5vZGR5IG9iamVjdCB3aWxsIGNvbnRhaW4tLS1pbiB0aGlzIGNhc2UsIG5vdGhpbmcgbW9yZSB0aGFuIGV2ZXJ5Ci1QeXRob24gb2JqZWN0IGNvbnRhaW5zLCBuYW1lbHkgYSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIGEgdHlwZSBvYmplY3QuICBUaGVzZQotYXJlIHRoZSBmaWVsZHMgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvIGJyaW5ncyBpbi4gIFRoZSByZWFzb24gZm9yIHRoZSBtYWNybwotaXMgdG8gc3RhbmRhcmRpemUgdGhlIGxheW91dCBhbmQgdG8gZW5hYmxlIHNwZWNpYWwgZGVidWdnaW5nIGZpZWxkcyBpbiBkZWJ1ZwotYnVpbGRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHNlbWljb2xvbiBhZnRlciB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm87IG9uZQotaXMgaW5jbHVkZWQgaW4gdGhlIG1hY3JvIGRlZmluaXRpb24uICBCZSB3YXJ5IG9mIGFkZGluZyBvbmUgYnkgYWNjaWRlbnQ7IGl0J3MKLWVhc3kgdG8gZG8gZnJvbSBoYWJpdCwgYW5kIHlvdXIgY29tcGlsZXIgbWlnaHQgbm90IGNvbXBsYWluLCBidXQgc29tZW9uZSBlbHNlJ3MKLXByb2JhYmx5IHdpbGwhICAoT24gV2luZG93cywgTVNWQyBpcyBrbm93biB0byBjYWxsIHRoaXMgYW4gZXJyb3IgYW5kIHJlZnVzZSB0bwotY29tcGlsZSB0aGUgY29kZS4pCitUaGlzIGlzIHdoYXQgYSBOb2RkeSBvYmplY3Qgd2lsbCBjb250YWluLS0taW4gdGhpcyBjYXNlLCBub3RoaW5nIG1vcmUgdGhhbiB3aGF0CitldmVyeSBQeXRob24gb2JqZWN0IGNvbnRhaW5zLS0tYSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIGEgdHlwZSBvYmplY3QuCitUaGVzZSBhcmUgdGhlIGZpZWxkcyB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm8gYnJpbmdzIGluLiAgVGhlIHJlYXNvbiBmb3IgdGhlCittYWNybyBpcyB0byBzdGFuZGFyZGl6ZSB0aGUgbGF5b3V0IGFuZCB0byBlbmFibGUgc3BlY2lhbCBkZWJ1Z2dpbmcgZmllbGRzIGluCitkZWJ1ZyBidWlsZHMuICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gc2VtaWNvbG9uIGFmdGVyIHRoZSBgYFB5T2JqZWN0X0hFQURgYAorbWFjcm87IG9uZSBpcyBpbmNsdWRlZCBpbiB0aGUgbWFjcm8gZGVmaW5pdGlvbi4gIEJlIHdhcnkgb2YgYWRkaW5nIG9uZSBieQorYWNjaWRlbnQ7IGl0J3MgZWFzeSB0byBkbyBmcm9tIGhhYml0LCBhbmQgeW91ciBjb21waWxlciBtaWdodCBub3QgY29tcGxhaW4sCitidXQgc29tZW9uZSBlbHNlJ3MgcHJvYmFibHkgd2lsbCEgIChPbiBXaW5kb3dzLCBNU1ZDIGlzIGtub3duIHRvIGNhbGwgdGhpcyBhbgorZXJyb3IgYW5kIHJlZnVzZSB0byBjb21waWxlIHRoZSBjb2RlLikKIAogRm9yIGNvbnRyYXN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIGZvciBzdGFuZGFyZAogUHl0aG9uIGZsb2F0czo6CkBAIC0yMjQsNyArMjI1LDcgQEAKIEFkZGluZyBkYXRhIGFuZCBtZXRob2RzIHRvIHRoZSBCYXNpYyBleGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1MZXQncyBleHBlbmQgdGhlIGJhc2ljIGV4YW1wbGUgdG8gYWRkIHNvbWUgZGF0YSBhbmQgbWV0aG9kcy4gIExldCdzIGFsc28gbWFrZQorTGV0J3MgZXh0ZW5kIHRoZSBiYXNpYyBleGFtcGxlIHRvIGFkZCBzb21lIGRhdGEgYW5kIG1ldGhvZHMuICBMZXQncyBhbHNvIG1ha2UKIHRoZSB0eXBlIHVzYWJsZSBhcyBhIGJhc2UgY2xhc3MuIFdlJ2xsIGNyZWF0ZSBhIG5ldyBtb2R1bGUsIDptb2Q6YG5vZGR5MmAgdGhhdAogYWRkcyB0aGVzZSBjYXBhYmlsaXRpZXM6CiAKQEAgLTI4OCwxOCArMjg5LDE2IEBACiAgICAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgICAgeworICAgICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgfQorICAgICAgICAgICB9CiAKICAgICAgICAgICAgc2VsZi0+bGFzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgICAgIHsKKyAgICAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgfQorICAgICAgICAgICB9CiAKICAgICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICAgICB9CkBAIC0zMjcsOCArMzI2LDggQEAKIGNyZWF0ZWQuIE5ldyBtZXRob2RzIGFsd2F5cyBhY2NlcHQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMsIGJ1dCB0aGV5CiBvZnRlbiBpZ25vcmUgdGhlIGFyZ3VtZW50cywgbGVhdmluZyB0aGUgYXJndW1lbnQgaGFuZGxpbmcgdG8gaW5pdGlhbGl6ZXIKIG1ldGhvZHMuIE5vdGUgdGhhdCBpZiB0aGUgdHlwZSBzdXBwb3J0cyBzdWJjbGFzc2luZywgdGhlIHR5cGUgcGFzc2VkIG1heSBub3QgYmUKLXRoZSB0eXBlIGJlaW5nIGRlZmluZWQuICBUaGUgbmV3IG1ldGhvZCBjYWxscyB0aGUgdHBfYWxsb2Mgc2xvdCB0byBhbGxvY2F0ZQotbWVtb3J5LiBXZSBkb24ndCBmaWxsIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb3Vyc2VsdmVzLiBSYXRoZXIKK3RoZSB0eXBlIGJlaW5nIGRlZmluZWQuICBUaGUgbmV3IG1ldGhvZCBjYWxscyB0aGUgOmF0dHI6YHRwX2FsbG9jYCBzbG90IHRvCithbGxvY2F0ZSBtZW1vcnkuIFdlIGRvbid0IGZpbGwgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvdXJzZWx2ZXMuIFJhdGhlcgogOmM6ZnVuYzpgUHlUeXBlX1JlYWR5YCBmaWxscyBpdCBmb3IgdXMgYnkgaW5oZXJpdGluZyBpdCBmcm9tIG91ciBiYXNlIGNsYXNzLAogd2hpY2ggaXMgOmNsYXNzOmBvYmplY3RgIGJ5IGRlZmF1bHQuICBNb3N0IHR5cGVzIHVzZSB0aGUgZGVmYXVsdCBhbGxvY2F0aW9uLgogCkBAIC00NDUsMTUgKzQ0NCw2IEBACiAgICBzdGF0aWMgUHlPYmplY3QgKgogICAgTm9kZHlfbmFtZShOb2RkeSogc2VsZikKICAgIHsKLSAgICAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgICAgZm9ybWF0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiJXMgJXMiKTsKLSAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgfQotCiAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAiZmlyc3QiKTsKICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NjQsMjAgKzQ1NCwxMyBAQAogICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICB9CiAKLSAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICByZXN1bHQgPSBQeVN0cmluZ19Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiAgICB9CiAKIFRoZSBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYXMgYSBDIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSA6Y2xhc3M6YE5vZGR5YCAob3IKIDpjbGFzczpgTm9kZHlgIHN1YmNsYXNzKSBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuICBNZXRob2RzIGFsd2F5cyB0YWtlIGFuCiBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIE1ldGhvZHMgb2Z0ZW4gdGFrZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCi1hcmd1bWVudHMgYXMgd2VsbCwgYnV0IGluIHRoaXMgY2FzZWQgd2UgZG9uJ3QgdGFrZSBhbnkgYW5kIGRvbid0IG5lZWQgdG8gYWNjZXB0Cithcmd1bWVudHMgYXMgd2VsbCwgYnV0IGluIHRoaXMgY2FzZSB3ZSBkb24ndCB0YWtlIGFueSBhbmQgZG9uJ3QgbmVlZCB0byBhY2NlcHQKIGEgcG9zaXRpb25hbCBhcmd1bWVudCB0dXBsZSBvciBrZXl3b3JkIGFyZ3VtZW50IGRpY3Rpb25hcnkuIFRoaXMgbWV0aG9kIGlzCiBlcXVpdmFsZW50IHRvIHRoZSBQeXRob24gbWV0aG9kOjoKIApAQCAtMTEyNCw5ICsxMTA3LDYgQEAKIGF0IHRoZSBlbmQ7IGl0IGlzIGEgc2VudGluZWwgdGhhdCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZQogOmF0dHI6YG1sX25hbWVgIGZpZWxkIG9mIHRoZSBzZW50aW5lbCBtdXN0IGJlICpOVUxMKi4KIAotWFhYIE5lZWQgdG8gcmVmZXIgdG8gc29tZSB1bmlmaWVkIGRpc2N1c3Npb24gb2YgdGhlIHN0cnVjdHVyZSBmaWVsZHMsIHNoYXJlZAotd2l0aCB0aGUgbmV4dCBzZWN0aW9uLgotCiBUaGUgc2Vjb25kIHRhYmxlIGlzIHVzZWQgdG8gZGVmaW5lIGF0dHJpYnV0ZXMgd2hpY2ggbWFwIGRpcmVjdGx5IHRvIGRhdGEgc3RvcmVkCiBpbiB0aGUgaW5zdGFuY2UuICBBIHZhcmlldHkgb2YgcHJpbWl0aXZlIEMgdHlwZXMgYXJlIHN1cHBvcnRlZCwgYW5kIGFjY2VzcyBtYXkKIGJlIHJlYWQtb25seSBvciByZWFkLXdyaXRlLiAgVGhlIHN0cnVjdHVyZXMgaW4gdGhlIHRhYmxlIGFyZSBkZWZpbmVkIGFzOjoKQEAgLTExNDYsOCArMTEyNiw2IEBACiBjb252ZXJ0IFB5dGhvbiB2YWx1ZXMgdG8gYW5kIGZyb20gQyB2YWx1ZXMuICBUaGUgOmF0dHI6YGZsYWdzYCBmaWVsZCBpcyB1c2VkIHRvCiBzdG9yZSBmbGFncyB3aGljaCBjb250cm9sIGhvdyB0aGUgYXR0cmlidXRlIGNhbiBiZSBhY2Nlc3NlZC4KIAotWFhYIE5lZWQgdG8gbW92ZSBzb21lIG9mIHRoaXMgdG8gYSBzaGFyZWQgc2VjdGlvbiEKLQogVGhlIGZvbGxvd2luZyBmbGFnIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiA6ZmlsZTpgc3RydWN0bWVtYmVyLmhgOyB0aGV5IG1heSBiZQogY29tYmluZWQgdXNpbmcgYml0d2lzZS1PUi4KIApAQCAtMTM3Miw3ICsxMzUwLDcgQEAKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogCi1YWFggc29tZSBmaWVsZHMgbmVlZCB0byBiZSBhZGRlZCBoZXJlLi4uIDo6Cis6OgogCiAgICAvKiBJdGVyYXRvcnMgKi8KICAgIGdldGl0ZXJmdW5jIHRwX2l0ZXI7CmRpZmYgLS1naXQgYS9Eb2MvZmFxL2Rlc2lnbi5yc3QgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKaW5kZXggN2M1MTE2ZC4uNmI4YThmZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9kZXNpZ24ucnN0CisrKyBiL0RvYy9mYXEvZGVzaWduLnJzdApAQCAtNTE1LDE0ICs1MTUsMTYgQEAKIAogRGljdGlvbmFyaWVzIHdvcmsgYnkgY29tcHV0aW5nIGEgaGFzaCBjb2RlIGZvciBlYWNoIGtleSBzdG9yZWQgaW4gdGhlIGRpY3Rpb25hcnkKIHVzaW5nIHRoZSA6ZnVuYzpgaGFzaGAgYnVpbHQtaW4gZnVuY3Rpb24uICBUaGUgaGFzaCBjb2RlIHZhcmllcyB3aWRlbHkgZGVwZW5kaW5nCi1vbiB0aGUga2V5OyBmb3IgZXhhbXBsZSwgIlB5dGhvbiIgaGFzaGVzIHRvIC01MzkyOTQyOTYgd2hpbGUgInB5dGhvbiIsIGEgc3RyaW5nCi10aGF0IGRpZmZlcnMgYnkgYSBzaW5nbGUgYml0LCBoYXNoZXMgdG8gMTE0MjMzMTk3Ni4gIFRoZSBoYXNoIGNvZGUgaXMgdGhlbiB1c2VkCi10byBjYWxjdWxhdGUgYSBsb2NhdGlvbiBpbiBhbiBpbnRlcm5hbCBhcnJheSB3aGVyZSB0aGUgdmFsdWUgd2lsbCBiZSBzdG9yZWQuCi1Bc3N1bWluZyB0aGF0IHlvdSdyZSBzdG9yaW5nIGtleXMgdGhhdCBhbGwgaGF2ZSBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMsIHRoaXMKLW1lYW5zIHRoYXQgZGljdGlvbmFyaWVzIHRha2UgY29uc3RhbnQgdGltZSAtLSBPKDEpLCBpbiBjb21wdXRlciBzY2llbmNlIG5vdGF0aW9uCi0tLSB0byByZXRyaWV2ZSBhIGtleS4gIEl0IGFsc28gbWVhbnMgdGhhdCBubyBzb3J0ZWQgb3JkZXIgb2YgdGhlIGtleXMgaXMKLW1haW50YWluZWQsIGFuZCB0cmF2ZXJzaW5nIHRoZSBhcnJheSBhcyB0aGUgYGAua2V5cygpYGAgYW5kIGBgLml0ZW1zKClgYCBkbyB3aWxsCi1vdXRwdXQgdGhlIGRpY3Rpb25hcnkncyBjb250ZW50IGluIHNvbWUgYXJiaXRyYXJ5IGp1bWJsZWQgb3JkZXIuCitvbiB0aGUga2V5IGFuZCBhIHBlci1wcm9jZXNzIHNlZWQ7IGZvciBleGFtcGxlLCAiUHl0aG9uIiBjb3VsZCBoYXNoIHRvCistNTM5Mjk0Mjk2IHdoaWxlICJweXRob24iLCBhIHN0cmluZyB0aGF0IGRpZmZlcnMgYnkgYSBzaW5nbGUgYml0LCBjb3VsZCBoYXNoCit0byAxMTQyMzMxOTc2LiAgVGhlIGhhc2ggY29kZSBpcyB0aGVuIHVzZWQgdG8gY2FsY3VsYXRlIGEgbG9jYXRpb24gaW4gYW4KK2ludGVybmFsIGFycmF5IHdoZXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHN0b3JlZC4gIEFzc3VtaW5nIHRoYXQgeW91J3JlIHN0b3JpbmcKK2tleXMgdGhhdCBhbGwgaGF2ZSBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMsIHRoaXMgbWVhbnMgdGhhdCBkaWN0aW9uYXJpZXMgdGFrZQorY29uc3RhbnQgdGltZSAtLSBPKDEpLCBpbiBjb21wdXRlciBzY2llbmNlIG5vdGF0aW9uIC0tIHRvIHJldHJpZXZlIGEga2V5LiAgSXQKK2Fsc28gbWVhbnMgdGhhdCBubyBzb3J0ZWQgb3JkZXIgb2YgdGhlIGtleXMgaXMgbWFpbnRhaW5lZCwgYW5kIHRyYXZlcnNpbmcgdGhlCithcnJheSBhcyB0aGUgYGAua2V5cygpYGAgYW5kIGBgLml0ZW1zKClgYCBkbyB3aWxsIG91dHB1dCB0aGUgZGljdGlvbmFyeSdzCitjb250ZW50IGluIHNvbWUgYXJiaXRyYXJ5IGp1bWJsZWQgb3JkZXIgdGhhdCBjYW4gY2hhbmdlIHdpdGggZXZlcnkgaW52b2NhdGlvbiBvZgorYSBwcm9ncmFtLgogCiAKIFdoeSBtdXN0IGRpY3Rpb25hcnkga2V5cyBiZSBpbW11dGFibGU/CkBAIC02MzQsNyArNjM2LDcgQEAKIFB5dGhvbiAyLjYgYWRkcyBhbiA6bW9kOmBhYmNgIG1vZHVsZSB0aGF0IGxldHMgeW91IGRlZmluZSBBYnN0cmFjdCBCYXNlIENsYXNzZXMKIChBQkNzKS4gIFlvdSBjYW4gdGhlbiB1c2UgOmZ1bmM6YGlzaW5zdGFuY2VgIGFuZCA6ZnVuYzpgaXNzdWJjbGFzc2AgdG8gY2hlY2sKIHdoZXRoZXIgYW4gaW5zdGFuY2Ugb3IgYSBjbGFzcyBpbXBsZW1lbnRzIGEgcGFydGljdWxhciBBQkMuICBUaGUKLTptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgZGVmaW5lcyBhIHNldCBvZiB1c2VmdWwgQUJDcyBzdWNoIGFzCis6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIG1vZHVsZSBkZWZpbmVzIGEgc2V0IG9mIHVzZWZ1bCBBQkNzIHN1Y2ggYXMKIDpjbGFzczpgSXRlcmFibGVgLCA6Y2xhc3M6YENvbnRhaW5lcmAsIGFuZCA6Y2xhc3M6YE11dGFibGVNYXBwaW5nYC4KIAogRm9yIFB5dGhvbiwgbWFueSBvZiB0aGUgYWR2YW50YWdlcyBvZiBpbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbnMgY2FuIGJlIG9idGFpbmVkCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2V4dGVuZGluZy5yc3QgYi9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKaW5kZXggN2M2ODRhMC4uZmEyNDVjNyAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9leHRlbmRpbmcucnN0CisrKyBiL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdApAQCAtNDQ1LDM0ICs0NDUsMyBAQAogVGhlIEJvb3N0IFB5dGhvbiBMaWJyYXJ5IChCUEwsIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcHl0aG9uL2RvYy9pbmRleC5odG1sKQogcHJvdmlkZXMgYSB3YXkgb2YgZG9pbmcgdGhpcyBmcm9tIEMrKyAoaS5lLiB5b3UgY2FuIGluaGVyaXQgZnJvbSBhbiBleHRlbnNpb24KIGNsYXNzIHdyaXR0ZW4gaW4gQysrIHVzaW5nIHRoZSBCUEwpLgotCi0KLVdoZW4gaW1wb3J0aW5nIG1vZHVsZSBYLCB3aHkgZG8gSSBnZXQgInVuZGVmaW5lZCBzeW1ib2w6IFB5VW5pY29kZVVDUzIqIj8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgdXNlcyBhIDQtYnl0ZSByZXByZXNlbnRhdGlvbiBmb3IgVW5pY29kZQotY2hhcmFjdGVycywgYnV0IHNvbWUgQyBleHRlbnNpb24gbW9kdWxlIHlvdSBhcmUgaW1wb3J0aW5nIHdhcyBjb21waWxlZCB1c2luZyBhCi1QeXRob24gdGhhdCB1c2VzIGEgMi1ieXRlIHJlcHJlc2VudGF0aW9uIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgKHRoZSBkZWZhdWx0KS4KLQotSWYgaW5zdGVhZCB0aGUgbmFtZSBvZiB0aGUgdW5kZWZpbmVkIHN5bWJvbCBzdGFydHMgd2l0aCBgYFB5VW5pY29kZVVDUzRgYCwgdGhlCi1wcm9ibGVtIGlzIHRoZSByZXZlcnNlOiBQeXRob24gd2FzIGJ1aWx0IHVzaW5nIDItYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMsIGFuZAotdGhlIGV4dGVuc2lvbiBtb2R1bGUgd2FzIGNvbXBpbGVkIHVzaW5nIGEgUHl0aG9uIHdpdGggNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycy4KLQotVGhpcyBjYW4gZWFzaWx5IG9jY3VyIHdoZW4gdXNpbmcgcHJlLWJ1aWx0IGV4dGVuc2lvbiBwYWNrYWdlcy4gIFJlZEhhdCBMaW51eAotNy54LCBpbiBwYXJ0aWN1bGFyLCBwcm92aWRlZCBhICJweXRob24yIiBiaW5hcnkgdGhhdCBpcyBjb21waWxlZCB3aXRoIDQtYnl0ZQotVW5pY29kZS4gIFRoaXMgb25seSBjYXVzZXMgdGhlIGxpbmsgZmFpbHVyZSBpZiB0aGUgZXh0ZW5zaW9uIHVzZXMgYW55IG9mIHRoZQotYGBQeVVuaWNvZGVfKigpYGAgZnVuY3Rpb25zLiAgSXQgaXMgYWxzbyBhIHByb2JsZW0gaWYgYW4gZXh0ZW5zaW9uIHVzZXMgYW55IG9mCi10aGUgVW5pY29kZS1yZWxhdGVkIGZvcm1hdCBzcGVjaWZpZXJzIGZvciA6YzpmdW5jOmBQeV9CdWlsZFZhbHVlYCAob3Igc2ltaWxhcikgb3IKLXBhcmFtZXRlciBzcGVjaWZpY2F0aW9ucyBmb3IgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAuCi0KLVlvdSBjYW4gY2hlY2sgdGhlIHNpemUgb2YgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGEgUHl0aG9uIGludGVycHJldGVyIGlzIHVzaW5nIGJ5Ci1jaGVja2luZyB0aGUgdmFsdWUgb2Ygc3lzLm1heHVuaWNvZGU6Ci0KLSAgID4+PiBpbXBvcnQgc3lzCi0gICA+Pj4gaWYgc3lzLm1heHVuaWNvZGUgPiA2NTUzNToKLSAgIC4uLiAgICAgcHJpbnQoJ1VDUzQgYnVpbGQnKQotICAgLi4uIGVsc2U6Ci0gICAuLi4gICAgIHByaW50KCdVQ1MyIGJ1aWxkJykKLQotVGhlIG9ubHkgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSBpcyB0byB1c2UgZXh0ZW5zaW9uIG1vZHVsZXMgY29tcGlsZWQgd2l0aCBhCi1QeXRob24gYmluYXJ5IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIHNpemUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL0RvYy9mYXEvbGlicmFyeS5yc3QgYi9Eb2MvZmFxL2xpYnJhcnkucnN0CmluZGV4IDczODVjNTkuLmNhYjJkN2IgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvbGlicmFyeS5yc3QKKysrIGIvRG9jL2ZhcS9saWJyYXJ5LnJzdApAQCAtMzUxLDcgKzM1MSw3IEBACiAgICBXb3JrZXIgPFRocmVhZCh3b3JrZXIgMSwgc3RhcnRlZCAxMzAyODM4MzI3OTc0NTYpPiBydW5uaW5nIHdpdGggYXJndW1lbnQgNQogICAgLi4uCiAKLUNvbnN1bHQgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsczsgdGhlIDpjbGFzczpgfnF1ZXVlLlF1ZXVlYGAKK0NvbnN1bHQgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsczsgdGhlIDpjbGFzczpgfnF1ZXVlLlF1ZXVlYAogY2xhc3MgcHJvdmlkZXMgYSBmZWF0dXJlZnVsIGludGVyZmFjZS4KIAogCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCA3Y2Q5OTA1Li5iOTc4MmQ4IDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgIHN1YmNsYXNzZXMsIHdoaWNoIGFyZSBjbGFzc2VzIHRoYXQgZG9uJ3QgaW5oZXJpdCBmcm9tIGEgY2xhc3MgYnV0IGFyZQogICAgICAgc3RpbGwgcmVjb2duaXplZCBieSA6ZnVuYzpgaXNpbnN0YW5jZWAgYW5kIDpmdW5jOmBpc3N1YmNsYXNzYDsgc2VlIHRoZQogICAgICAgOm1vZDpgYWJjYCBtb2R1bGUgZG9jdW1lbnRhdGlvbi4gIFB5dGhvbiBjb21lcyB3aXRoIG1hbnkgYnVpbHQtaW4gQUJDcyBmb3IKLSAgICAgIGRhdGEgc3RydWN0dXJlcyAoaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUpLCBudW1iZXJzIChpbiB0aGUKKyAgICAgIGRhdGEgc3RydWN0dXJlcyAoaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlKSwgbnVtYmVycyAoaW4gdGhlCiAgICAgICA6bW9kOmBudW1iZXJzYCBtb2R1bGUpLCBzdHJlYW1zIChpbiB0aGUgOm1vZDpgaW9gIG1vZHVsZSksIGltcG9ydCBmaW5kZXJzCiAgICAgICBhbmQgbG9hZGVycyAoaW4gdGhlIDptb2Q6YGltcG9ydGxpYi5hYmNgIG1vZHVsZSkuICBZb3UgY2FuIGNyZWF0ZSB5b3VyIG93bgogICAgICAgQUJDcyB3aXRoIHRoZSA6bW9kOmBhYmNgIG1vZHVsZS4KQEAgLTIwOSw5ICsyMDksOSBAQAogCiAgICBmaW5kZXIKICAgICAgIEFuIG9iamVjdCB0aGF0IHRyaWVzIHRvIGZpbmQgdGhlIDp0ZXJtOmBsb2FkZXJgIGZvciBhIG1vZHVsZS4gSXQgbXVzdAotICAgICAgaW1wbGVtZW50IGEgbWV0aG9kIG5hbWVkIDptZXRoOmBmaW5kX21vZHVsZWAuIFNlZSA6cGVwOmAzMDJgIGZvcgotICAgICAgZGV0YWlscyBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgZm9yIGFuCi0gICAgICA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AuCisgICAgICBpbXBsZW1lbnQgZWl0aGVyIGEgbWV0aG9kIG5hbWVkIDptZXRoOmBmaW5kX2xvYWRlcmAgb3IgYSBtZXRob2QgbmFtZWQKKyAgICAgIDptZXRoOmBmaW5kX21vZHVsZWAuIFNlZSA6cGVwOmAzMDJgIGFuZCA6cGVwOmA0MjBgIGZvciBkZXRhaWxzIGFuZAorICAgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgZm9yIGFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYC4KIAogICAgZmxvb3IgZGl2aXNpb24KICAgICAgIE1hdGhlbWF0aWNhbCBkaXZpc2lvbiB0aGF0IHJvdW5kcyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci4gIFRoZSBmbG9vcgpAQCAtMzE1LDYgKzMxNSwxNyBAQAogICAgICAgcm9sZSBpbiBwbGFjZXMgd2hlcmUgYSBjb25zdGFudCBoYXNoIHZhbHVlIGlzIG5lZWRlZCwgZm9yIGV4YW1wbGUgYXMgYSBrZXkKICAgICAgIGluIGEgZGljdGlvbmFyeS4KIAorICAgaW1wb3J0IHBhdGgKKyAgICAgIEEgbGlzdCBvZiBsb2NhdGlvbnMgKG9yIDp0ZXJtOmBwYXRoIGVudHJpZXMgPHBhdGggZW50cnk+YCkgdGhhdCBhcmUKKyAgICAgIHNlYXJjaGVkIGJ5IHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGZvciBtb2R1bGVzIHRvIGltcG9ydC4gRHVyaW5nCisgICAgICBpbXBvcnQsIHRoaXMgbGlzdCBvZiBsb2NhdGlvbnMgdXN1YWxseSBjb21lcyBmcm9tIDpkYXRhOmBzeXMucGF0aGAsIGJ1dAorICAgICAgZm9yIHN1YnBhY2thZ2VzIGl0IG1heSBhbHNvIGNvbWUgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKKyAgICAgIGF0dHJpYnV0ZS4KKworICAgaW1wb3J0aW5nCisgICAgICBUaGUgcHJvY2VzcyBieSB3aGljaCBQeXRob24gY29kZSBpbiBvbmUgbW9kdWxlIGlzIG1hZGUgYXZhaWxhYmxlIHRvCisgICAgICBQeXRob24gY29kZSBpbiBhbm90aGVyIG1vZHVsZS4KKwogICAgaW1wb3J0ZXIKICAgICAgIEFuIG9iamVjdCB0aGF0IGJvdGggZmluZHMgYW5kIGxvYWRzIGEgbW9kdWxlOyBib3RoIGEKICAgICAgIDp0ZXJtOmBmaW5kZXJgIGFuZCA6dGVybTpgbG9hZGVyYCBvYmplY3QuCkBAIC00MzQsMTIgKzQ0NSwxNyBAQAogCiAgICBtYXBwaW5nCiAgICAgICBBIGNvbnRhaW5lciBvYmplY3QgdGhhdCBzdXBwb3J0cyBhcmJpdHJhcnkga2V5IGxvb2t1cHMgYW5kIGltcGxlbWVudHMgdGhlCi0gICAgICBtZXRob2RzIHNwZWNpZmllZCBpbiB0aGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuTWFwcGluZ2Agb3IKLSAgICAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nYAorICAgICAgbWV0aG9kcyBzcGVjaWZpZWQgaW4gdGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYCBvcgorICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYAogICAgICAgOnJlZjpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxjb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM+YC4gIEV4YW1wbGVzCiAgICAgICBpbmNsdWRlIDpjbGFzczpgZGljdGAsIDpjbGFzczpgY29sbGVjdGlvbnMuZGVmYXVsdGRpY3RgLAogICAgICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGAgYW5kIDpjbGFzczpgY29sbGVjdGlvbnMuQ291bnRlcmAuCiAKKyAgIG1ldGEgcGF0aCBmaW5kZXIKKyAgICAgIEEgZmluZGVyIHJldHVybmVkIGJ5IGEgc2VhcmNoIG9mIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gIE1ldGEgcGF0aAorICAgICAgZmluZGVycyBhcmUgcmVsYXRlZCB0bywgYnV0IGRpZmZlcmVudCBmcm9tIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMKKyAgICAgIDxwYXRoIGVudHJ5IGZpbmRlcj5gLgorCiAgICBtZXRhY2xhc3MKICAgICAgIFRoZSBjbGFzcyBvZiBhIGNsYXNzLiAgQ2xhc3MgZGVmaW5pdGlvbnMgY3JlYXRlIGEgY2xhc3MgbmFtZSwgYSBjbGFzcwogICAgICAgZGljdGlvbmFyeSwgYW5kIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMuICBUaGUgbWV0YWNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvcgpAQCAtNDY0LDYgKzQ4MCwxMSBAQAogICAgICAgZm9yIGEgbWVtYmVyIGR1cmluZyBsb29rdXAuIFNlZSBgVGhlIFB5dGhvbiAyLjMgTWV0aG9kIFJlc29sdXRpb24gT3JkZXIKICAgICAgIDxodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8+YF8uCiAKKyAgIG1vZHVsZQorICAgICAgQW4gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGFuIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUuICBNb2R1bGVzCisgICAgICBoYXZlIGEgbmFtZXNwYWNlIGNvbnRhaW5pbmcgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTW9kdWxlcyBhcmUgbG9hZGVkCisgICAgICBpbnRvIFB5dGhvbiBieSB0aGUgcHJvY2VzcyBvZiA6dGVybTpgaW1wb3J0aW5nYC4KKwogICAgTVJPCiAgICAgICBTZWUgOnRlcm06YG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyYC4KIApAQCAtNDk2LDYgKzUxNywxMiBAQAogICAgICAgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBieSB0aGUgOm1vZDpgcmFuZG9tYCBhbmQgOm1vZDpgaXRlcnRvb2xzYAogICAgICAgbW9kdWxlcywgcmVzcGVjdGl2ZWx5LgogCisgICBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgQSA6cGVwOmA0MjBgIDp0ZXJtOmBwYWNrYWdlYCB3aGljaCBzZXJ2ZXMgb25seSBhcyBhIGNvbnRhaW5lciBmb3IKKyAgICAgIHN1YnBhY2thZ2VzLiAgTmFtZXNwYWNlIHBhY2thZ2VzIG1heSBoYXZlIG5vIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uLAorICAgICAgYW5kIHNwZWNpZmljYWxseSBhcmUgbm90IGxpa2UgYSA6dGVybTpgcmVndWxhciBwYWNrYWdlYCBiZWNhdXNlIHRoZXkKKyAgICAgIGhhdmUgbm8gYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIG5lc3RlZCBzY29wZQogICAgICAgVGhlIGFiaWxpdHkgdG8gcmVmZXIgdG8gYSB2YXJpYWJsZSBpbiBhbiBlbmNsb3NpbmcgZGVmaW5pdGlvbi4gIEZvcgogICAgICAgaW5zdGFuY2UsIGEgZnVuY3Rpb24gZGVmaW5lZCBpbnNpZGUgYW5vdGhlciBmdW5jdGlvbiBjYW4gcmVmZXIgdG8KQEAgLTUxNiw2ICs1NDMsMzMgQEAKICAgICAgIChtZXRob2RzKS4gIEFsc28gdGhlIHVsdGltYXRlIGJhc2UgY2xhc3Mgb2YgYW55IDp0ZXJtOmBuZXctc3R5bGUKICAgICAgIGNsYXNzYC4KIAorICAgcGFja2FnZQorICAgICAgQSBQeXRob24gbW9kdWxlIHdoaWNoIGNhbiBjb250YWluIHN1Ym1vZHVsZXMgb3IgcmVjdXJzaXZlbHksCisgICAgICBzdWJwYWNrYWdlcy4gIFRlY2huaWNhbGx5LCBhIHBhY2thZ2UgaXMgYSBQeXRob24gbW9kdWxlIHdpdGggYW4KKyAgICAgIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuCisKKyAgIHBhdGggZW50cnkKKyAgICAgIEEgc2luZ2xlIGxvY2F0aW9uIG9uIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIHdoaWNoIHRoZSA6dGVybTpgcGF0aAorICAgICAgYmFzZWQgZmluZGVyYCBjb25zdWx0cyB0byBmaW5kIG1vZHVsZXMgZm9yIGltcG9ydGluZy4KKworICAgcGF0aCBlbnRyeSBmaW5kZXIKKyAgICAgIEEgOnRlcm06YGZpbmRlcmAgcmV0dXJuZWQgYnkgYSBjYWxsYWJsZSBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgCisgICAgICAoaS5lLiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tgKSB3aGljaCBrbm93cyBob3cgdG8gbG9jYXRlIG1vZHVsZXMgZ2l2ZW4KKyAgICAgIGEgOnRlcm06YHBhdGggZW50cnlgLgorCisgICBwYXRoIGVudHJ5IGhvb2sKKyAgICAgIEEgY2FsbGFibGUgb24gdGhlIDpkYXRhOmBzeXMucGF0aF9ob29rYCBsaXN0IHdoaWNoIHJldHVybnMgYSA6dGVybTpgcGF0aAorICAgICAgZW50cnkgZmluZGVyYCBpZiBpdCBrbm93cyBob3cgdG8gZmluZCBtb2R1bGVzIG9uIGEgc3BlY2lmaWMgOnRlcm06YHBhdGgKKyAgICAgIGVudHJ5YC4KKworICAgcGF0aCBiYXNlZCBmaW5kZXIKKyAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAorICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KKworICAgcG9ydGlvbgorICAgICAgQSBzZXQgb2YgZmlsZXMgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IChwb3NzaWJseSBzdG9yZWQgaW4gYSB6aXAgZmlsZSkKKyAgICAgIHRoYXQgY29udHJpYnV0ZSB0byBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhcyBkZWZpbmVkIGluIDpwZXA6YDQyMGAuCisKICAgIHBvc2l0aW9uYWwgYXJndW1lbnQKICAgICAgIFRoZSBhcmd1bWVudHMgYXNzaWduZWQgdG8gbG9jYWwgbmFtZXMgaW5zaWRlIGEgZnVuY3Rpb24gb3IgbWV0aG9kLAogICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGdpdmVuIGluIHRoZSBjYWxsLiAgYGAqYGAgaXMKQEAgLTUyMyw5ICs1NzcsMjMgQEAKICAgICAgIGRlZmluaXRpb24pLCBvciBwYXNzIHNldmVyYWwgYXJndW1lbnRzIGFzIGEgbGlzdCB0byBhIGZ1bmN0aW9uLiAgU2VlCiAgICAgICA6dGVybTpgYXJndW1lbnRgLgogCisgICBwcm92aXNpb25hbCBwYWNrYWdlCisgICAgICBBIHByb3Zpc2lvbmFsIHBhY2thZ2UgaXMgb25lIHdoaWNoIGhhcyBiZWVuIGRlbGliZXJhdGVseSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuICBXaGlsZSBtYWpvcgorICAgICAgY2hhbmdlcyB0byBzdWNoIHBhY2thZ2VzIGFyZSBub3QgZXhwZWN0ZWQsIGFzIGxvbmcgYXMgdGhleSBhcmUgbWFya2VkCisgICAgICBwcm92aXNpb25hbCwgYmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwKKyAgICAgIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSBjb3JlIGRldmVsb3BlcnMuICBTdWNoCisgICAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIG1hZGUgZ3JhdHVpdG91c2x5IC0tIHRoZXkgd2lsbCBvY2N1ciBvbmx5IGlmIHNlcmlvdXMKKyAgICAgIGZsYXdzIGFyZSB1bmNvdmVyZWQgdGhhdCB3ZXJlIG1pc3NlZCBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mIHRoZQorICAgICAgcGFja2FnZS4KKworICAgICAgVGhpcyBwcm9jZXNzIGFsbG93cyB0aGUgc3RhbmRhcmQgbGlicmFyeSB0byBjb250aW51ZSB0byBldm9sdmUgb3ZlcgorICAgICAgdGltZSwgd2l0aG91dCBsb2NraW5nIGluIHByb2JsZW1hdGljIGRlc2lnbiBlcnJvcnMgZm9yIGV4dGVuZGVkIHBlcmlvZHMKKyAgICAgIG9mIHRpbWUuICBTZWUgOnBlcDpgNDExYCBmb3IgbW9yZSBkZXRhaWxzLgorCiAgICBQeXRob24gMzAwMAotICAgICAgTmlja25hbWUgZm9yIHRoZSBQeXRob24gMy54IHJlbGVhc2UgbGluZSAoY29pbmVkIGxvbmcgYWdvIHdoZW4gdGhlIHJlbGVhc2UKLSAgICAgIG9mIHZlcnNpb24gMyB3YXMgc29tZXRoaW5nIGluIHRoZSBkaXN0YW50IGZ1dHVyZS4pICBUaGlzIGlzIGFsc28KKyAgICAgIE5pY2tuYW1lIGZvciB0aGUgUHl0aG9uIDMueCByZWxlYXNlIGxpbmUgKGNvaW5lZCBsb25nIGFnbyB3aGVuIHRoZQorICAgICAgcmVsZWFzZSBvZiB2ZXJzaW9uIDMgd2FzIHNvbWV0aGluZyBpbiB0aGUgZGlzdGFudCBmdXR1cmUuKSAgVGhpcyBpcyBhbHNvCiAgICAgICBhYmJyZXZpYXRlZCAiUHkzayIuCiAKICAgIFB5dGhvbmljCkBAIC01NDQsNiArNjEyLDMyIEBACiAgICAgICAgICBmb3IgcGllY2UgaW4gZm9vZDoKICAgICAgICAgICAgICBwcmludChwaWVjZSkKIAorICAgcXVhbGlmaWVkIG5hbWUKKyAgICAgIEEgZG90dGVkIG5hbWUgc2hvd2luZyB0aGUgInBhdGgiIGZyb20gYSBtb2R1bGUncyBnbG9iYWwgc2NvcGUgdG8gYQorICAgICAgY2xhc3MsIGZ1bmN0aW9uIG9yIG1ldGhvZCBkZWZpbmVkIGluIHRoYXQgbW9kdWxlLCBhcyBkZWZpbmVkIGluCisgICAgICA6cGVwOmAzMTU1YC4gIEZvciB0b3AtbGV2ZWwgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLCB0aGUgcXVhbGlmaWVkIG5hbWUKKyAgICAgIGlzIHRoZSBzYW1lIGFzIHRoZSBvYmplY3QncyBuYW1lOjoKKworICAgICAgICAgPj4+IGNsYXNzIEM6CisgICAgICAgICAuLi4gICAgIGNsYXNzIEQ6CisgICAgICAgICAuLi4gICAgICAgICBkZWYgbWV0aChzZWxmKToKKyAgICAgICAgIC4uLiAgICAgICAgICAgICBwYXNzCisgICAgICAgICAuLi4KKyAgICAgICAgID4+PiBDLl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MnCisgICAgICAgICA+Pj4gQy5ELl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MuRCcKKyAgICAgICAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICAgICAgICdDLkQubWV0aCcKKworICAgICAgV2hlbiB1c2VkIHRvIHJlZmVyIHRvIG1vZHVsZXMsIHRoZSAqZnVsbHkgcXVhbGlmaWVkIG5hbWUqIG1lYW5zIHRoZQorICAgICAgZW50aXJlIGRvdHRlZCBwYXRoIHRvIHRoZSBtb2R1bGUsIGluY2x1ZGluZyBhbnkgcGFyZW50IHBhY2thZ2VzLAorICAgICAgZS5nLiBgYGVtYWlsLm1pbWUudGV4dGBgOjoKKworICAgICAgICAgPj4+IGltcG9ydCBlbWFpbC5taW1lLnRleHQKKyAgICAgICAgID4+PiBlbWFpbC5taW1lLnRleHQuX19uYW1lX18KKyAgICAgICAgICdlbWFpbC5taW1lLnRleHQnCisKICAgIHJlZmVyZW5jZSBjb3VudAogICAgICAgVGhlIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIGFuIG9iamVjdC4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbgogICAgICAgb2JqZWN0IGRyb3BzIHRvIHplcm8sIGl0IGlzIGRlYWxsb2NhdGVkLiAgUmVmZXJlbmNlIGNvdW50aW5nIGlzCkBAIC01NTIsNiArNjQ2LDEwIEBACiAgICAgICA6ZnVuYzpgfnN5cy5nZXRyZWZjb3VudGAgZnVuY3Rpb24gdGhhdCBwcm9ncmFtbWVycyBjYW4gY2FsbCB0byByZXR1cm4gdGhlCiAgICAgICByZWZlcmVuY2UgY291bnQgZm9yIGEgcGFydGljdWxhciBvYmplY3QuCiAKKyAgIHJlZ3VsYXIgcGFja2FnZQorICAgICAgQSB0cmFkaXRpb25hbCA6dGVybTpgcGFja2FnZWAsIHN1Y2ggYXMgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbgorICAgICAgYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIF9fc2xvdHNfXwogICAgICAgQSBkZWNsYXJhdGlvbiBpbnNpZGUgYSBjbGFzcyB0aGF0IHNhdmVzIG1lbW9yeSBieSBwcmUtZGVjbGFyaW5nIHNwYWNlIGZvcgogICAgICAgaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgZWxpbWluYXRpbmcgaW5zdGFuY2UgZGljdGlvbmFyaWVzLiAgVGhvdWdoCkBAIC01ODYsNiArNjg0LDE0IEBACiAgICAgICBhbiA6dGVybTpgZXhwcmVzc2lvbmAgb3IgYSBvbmUgb2Ygc2V2ZXJhbCBjb25zdHJ1Y3RzIHdpdGggYSBrZXl3b3JkLCBzdWNoCiAgICAgICBhcyA6a2V5d29yZDpgaWZgLCA6a2V5d29yZDpgd2hpbGVgIG9yIDprZXl3b3JkOmBmb3JgLgogCisgICBzdHJ1Y3Qgc2VxdWVuY2UKKyAgICAgIEEgdHVwbGUgd2l0aCBuYW1lZCBlbGVtZW50cy4gU3RydWN0IHNlcXVlbmNlcyBleHBvc2UgYW4gaW50ZXJmYWNlIHNpbWlsYXIKKyAgICAgIHRvIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaW4gdGhhdCBlbGVtZW50cyBjYW4gZWl0aGVyIGJlIGFjY2Vzc2VkIGVpdGhlciBieQorICAgICAgaW5kZXggb3IgYXMgYW4gYXR0cmlidXRlLiBIb3dldmVyLCB0aGV5IGRvIG5vdCBoYXZlIGFueSBvZiB0aGUgbmFtZWQgdHVwbGUKKyAgICAgIG1ldGhvZHMgbGlrZSA6bWV0aDpgfmNvbGxlY3Rpb25zLnNvbWVuYW1lZHR1cGxlLl9tYWtlYCBvcgorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5zb21lbmFtZWR0dXBsZS5fYXNkaWN0YC4gRXhhbXBsZXMgb2Ygc3RydWN0IHNlcXVlbmNlcworICAgICAgaW5jbHVkZSA6ZGF0YTpgc3lzLmZsb2F0X2luZm9gIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmBvcy5zdGF0YC4KKwogICAgdHJpcGxlLXF1b3RlZCBzdHJpbmcKICAgICAgIEEgc3RyaW5nIHdoaWNoIGlzIGJvdW5kIGJ5IHRocmVlIGluc3RhbmNlcyBvZiBlaXRoZXIgYSBxdW90YXRpb24gbWFyawogICAgICAgKCIpIG9yIGFuIGFwb3N0cm9waGUgKCcpLiAgV2hpbGUgdGhleSBkb24ndCBwcm92aWRlIGFueSBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QgYi9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKaW5kZXggMTYxNmY2Ny4uMGI1MTNmOSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CisrKyBiL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdApAQCAtMzYsOSArMzYsNyBAQAogbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlIGRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24KIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmQgaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLgogV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlIHByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMKLXdlcmUgZGVmaW5lZC4gIE5vdGUgdGhhdCBkZXNjcmlwdG9ycyBhcmUgb25seSBpbnZva2VkIGZvciBuZXcgc3R5bGUgb2JqZWN0cyBvcgotY2xhc3NlcyAoYSBjbGFzcyBpcyBuZXcgc3R5bGUgaWYgaXQgaW5oZXJpdHMgZnJvbSA6Y2xhc3M6YG9iamVjdGAgb3IKLTpjbGFzczpgdHlwZWApLgord2VyZSBkZWZpbmVkLgogCiBEZXNjcmlwdG9ycyBhcmUgYSBwb3dlcmZ1bCwgZ2VuZXJhbCBwdXJwb3NlIHByb3RvY29sLiAgVGhleSBhcmUgdGhlIG1lY2hhbmlzbQogYmVoaW5kIHByb3BlcnRpZXMsIG1ldGhvZHMsIHN0YXRpYyBtZXRob2RzLCBjbGFzcyBtZXRob2RzLCBhbmQgOmZ1bmM6YHN1cGVyKClgLgpAQCAtODksOCArODcsNiBAQAogaXMgaW52b2tlZCBhY2NvcmRpbmcgdG8gdGhlIHByZWNlZGVuY2UgcnVsZXMgbGlzdGVkIGJlbG93LgogCiBUaGUgZGV0YWlscyBvZiBpbnZvY2F0aW9uIGRlcGVuZCBvbiB3aGV0aGVyIGBgb2JqYGAgaXMgYW4gb2JqZWN0IG9yIGEgY2xhc3MuCi1FaXRoZXIgd2F5LCBkZXNjcmlwdG9ycyBvbmx5IHdvcmsgZm9yIG5ldyBzdHlsZSBvYmplY3RzIGFuZCBjbGFzc2VzLiAgQSBjbGFzcyBpcwotbmV3IHN0eWxlIGlmIGl0IGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBvYmplY3RgLgogCiBGb3Igb2JqZWN0cywgdGhlIG1hY2hpbmVyeSBpcyBpbiA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gIHdoaWNoCiB0cmFuc2Zvcm1zIGBgYi54YGAgaW50byBgYHR5cGUoYikuX19kaWN0X19bJ3gnXS5fX2dldF9fKGIsIHR5cGUoYikpYGAuICBUaGUKQEAgLTExNSw3ICsxMTEsNiBAQAogCiAqIGRlc2NyaXB0b3JzIGFyZSBpbnZva2VkIGJ5IHRoZSA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgbWV0aG9kCiAqIG92ZXJyaWRpbmcgOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIHByZXZlbnRzIGF1dG9tYXRpYyBkZXNjcmlwdG9yIGNhbGxzCi0qIDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIG5ldyBzdHlsZSBjbGFzc2VzIGFuZCBvYmplY3RzCiAqIDptZXRoOmBvYmplY3QuX19nZXRhdHRyaWJ1dGVfX2AgYW5kIDptZXRoOmB0eXBlLl9fZ2V0YXR0cmlidXRlX19gIG1ha2UKICAgZGlmZmVyZW50IGNhbGxzIHRvIDptZXRoOmBfX2dldF9fYC4KICogZGF0YSBkZXNjcmlwdG9ycyBhbHdheXMgb3ZlcnJpZGUgaW5zdGFuY2UgZGljdGlvbmFyaWVzLgpAQCAtMTI4LDEwICsxMjMsNyBAQAogYGBtYGAgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiAgSWYgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBgYG1gYCByZXZlcnRzIHRvIGEKIHNlYXJjaCB1c2luZyA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gLgogCi1Ob3RlLCBpbiBQeXRob24gMi4yLCBgYHN1cGVyKEIsIG9iaikubSgpYGAgd291bGQgb25seSBpbnZva2UgOm1ldGg6YF9fZ2V0X19gIGlmCi1gYG1gYCB3YXMgYSBkYXRhIGRlc2NyaXB0b3IuICBJbiBQeXRob24gMi4zLCBub24tZGF0YSBkZXNjcmlwdG9ycyBhbHNvIGdldAotaW52b2tlZCB1bmxlc3MgYW4gb2xkLXN0eWxlIGNsYXNzIGlzIGludm9sdmVkLiAgVGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlCi1pbiA6YzpmdW5jOmBzdXBlcl9nZXRhdHRybygpYCBpbgorVGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGluIDpjOmZ1bmM6YHN1cGVyX2dldGF0dHJvKClgIGluCiBgT2JqZWN0cy90eXBlb2JqZWN0LmMgPGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy92aWV3L3B5dGhvbi90cnVuay9PYmplY3RzL3R5cGVvYmplY3QuYz92aWV3PW1hcmt1cD5gXwogYW5kIGEgcHVyZSBQeXRob24gZXF1aXZhbGVudCBjYW4gYmUgZm91bmQgaW4gYEd1aWRvJ3MgVHV0b3JpYWxgXy4KIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggYTExZDNkYS4uZjQ0ZThjMCAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICB1cmxsaWIyLnJzdAogICAgd2Vic2VydmVycy5yc3QKICAgIGFyZ3BhcnNlLnJzdAorICAgaXBhZGRyZXNzLnJzdAogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdCBiL0RvYy9ob3d0by9pcGFkZHJlc3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNmQwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdApAQCAtMCwwICsxLDMzNiBAQAorLi4gX2lwYWRkcmVzcy1ob3d0bzoKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitBbiBJbnRyb2R1Y3Rpb24gdG8gdGhlIGlwYWRkcmVzcyBtb2R1bGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCis6YXV0aG9yOiBQZXRlciBNb29keQorOmF1dGhvcjogTmljayBDb2dobGFuCisKKy4uIHRvcGljOjogT3ZlcnZpZXcKKworICAgVGhpcyBkb2N1bWVudCBhaW1zIHRvIHByb3ZpZGUgYSBnZW50bGUgaW50cm9kdWN0aW9uIHRvIHRoZQorICAgOm1vZDpgaXBhZGRyZXNzYCBtb2R1bGUuIEl0IGlzIGFpbWVkIHByaW1hcmlseSBhdCB1c2VycyB0aGF0IGFyZW4ndAorICAgYWxyZWFkeSBmYW1pbGlhciB3aXRoIElQIG5ldHdvcmtpbmcgdGVybWlub2xvZ3ksIGJ1dCBtYXkgYWxzbyBiZSB1c2VmdWwKKyAgIHRvIG5ldHdvcmsgZW5naW5lZXJzIHdhbnRpbmcgYW4gb3ZlcnZpZXcgb2YgaG93IDptb2Q6YGlwYWRkcmVzc2AKKyAgIHJlcHJlc2VudHMgSVAgbmV0d29yayBhZGRyZXNzaW5nIGNvbmNlcHRzLgorCisKK0NyZWF0aW5nIEFkZHJlc3MvTmV0d29yay9JbnRlcmZhY2Ugb2JqZWN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NpbmNlIDptb2Q6YGlwYWRkcmVzc2AgaXMgYSBtb2R1bGUgZm9yIGluc3BlY3RpbmcgYW5kIG1hbmlwdWxhdGluZyBJUCBhZGRyZXNzZXMsCit0aGUgZmlyc3QgdGhpbmcgeW91J2xsIHdhbnQgdG8gZG8gaXMgY3JlYXRlIHNvbWUgb2JqZWN0cy4gIFlvdSBjYW4gdXNlCis6bW9kOmBpcGFkZHJlc3NgIHRvIGNyZWF0ZSBvYmplY3RzIGZyb20gc3RyaW5ncyBhbmQgaW50ZWdlcnMuCisKKworQSBOb3RlIG9uIElQIFZlcnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHJlYWRlcnMgdGhhdCBhcmVuJ3QgcGFydGljdWxhcmx5IGZhbWlsaWFyIHdpdGggSVAgYWRkcmVzc2luZywgaXQncworaW1wb3J0YW50IHRvIGtub3cgdGhhdCB0aGUgSW50ZXJuZXQgUHJvdG9jb2wgaXMgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzCitvZiBtb3ZpbmcgZnJvbSB2ZXJzaW9uIDQgb2YgdGhlIHByb3RvY29sIHRvIHZlcnNpb24gNi4gVGhpcyB0cmFuc2l0aW9uIGlzCitvY2N1cnJpbmcgbGFyZ2VseSBiZWNhdXNlIHZlcnNpb24gNCBvZiB0aGUgcHJvdG9jb2wgZG9lc24ndCBwcm92aWRlIGVub3VnaAorYWRkcmVzc2VzIHRvIGhhbmRsZSB0aGUgbmVlZHMgb2YgdGhlIHdob2xlIHdvcmxkLCBlc3BlY2lhbGx5IGdpdmVuIHRoZQoraW5jcmVhc2luZyBudW1iZXIgb2YgZGV2aWNlcyB3aXRoIGRpcmVjdCBjb25uZWN0aW9ucyB0byB0aGUgaW50ZXJuZXQuCisKK0V4cGxhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byB2ZXJzaW9ucyBvZiB0aGUKK3Byb3RvY29sIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBpbnRyb2R1Y3Rpb24sIGJ1dCByZWFkZXJzIG5lZWQgdG8gYXQKK2xlYXN0IGJlIGF3YXJlIHRoYXQgdGhlc2UgdHdvIHZlcnNpb25zIGV4aXN0LCBhbmQgaXQgd2lsbCBzb21ldGltZXMgYmUKK25lY2Vzc2FyeSB0byBmb3JjZSB0aGUgdXNlIG9mIG9uZSB2ZXJzaW9uIG9yIHRoZSBvdGhlci4KKworCitJUCBIb3N0IEFkZHJlc3NlcworLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkcmVzc2VzLCBvZnRlbiByZWZlcnJlZCB0byBhcyAiaG9zdCBhZGRyZXNzZXMiIGFyZSB0aGUgbW9zdCBiYXNpYyB1bml0Cit3aGVuIHdvcmtpbmcgd2l0aCBJUCBhZGRyZXNzaW5nLiBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhZGRyZXNzZXMgaXMKK3RvIHVzZSB0aGUgOmZ1bmM6YGlwYWRkcmVzcy5pcF9hZGRyZXNzYCBmYWN0b3J5IGZ1bmN0aW9uLCB3aGljaCBhdXRvbWF0aWNhbGx5CitkZXRlcm1pbmVzIHdoZXRoZXIgdG8gY3JlYXRlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzIGJhc2VkIG9uIHRoZSBwYXNzZWQgaW4KK3ZhbHVlOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisKK0FkZHJlc3NlcyBjYW4gYWxzbyBiZSBjcmVhdGVkIGRpcmVjdGx5IGZyb20gaW50ZWdlcnMuIFZhbHVlcyB0aGF0IHdpbGwKK2ZpdCB3aXRoaW4gMzIgYml0cyBhcmUgYXNzdW1lZCB0byBiZSBJUHY0IGFkZHJlc3Nlczo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygzMjIxMjI1OTg1KQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQorCitUbyBmb3JjZSB0aGUgdXNlIG9mIElQdjQgb3IgSVB2NiBhZGRyZXNzZXMsIHRoZSByZWxldmFudCBjbGFzc2VzIGNhbiBiZQoraW52b2tlZCBkaXJlY3RseS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHRvIGZvcmNlIGNyZWF0aW9uIG9mIElQdjYKK2FkZHJlc3NlcyBmb3Igc21hbGwgaW50ZWdlcnM6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoMSkKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMSkKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoMSkKKyAgIElQdjZBZGRyZXNzKCc6OjEnKQorCisKK0RlZmluaW5nIE5ldHdvcmtzCistLS0tLS0tLS0tLS0tLS0tLQorCitIb3N0IGFkZHJlc3NlcyBhcmUgdXN1YWxseSBncm91cGVkIHRvZ2V0aGVyIGludG8gSVAgbmV0d29ya3MsIHNvCis6bW9kOmBpcGFkZHJlc3NgIHByb3ZpZGVzIGEgd2F5IHRvIGNyZWF0ZSwgaW5zcGVjdCBhbmQgbWFuaXB1bGF0ZSBuZXR3b3JrCitkZWZpbml0aW9ucy4gSVAgbmV0d29yayBvYmplY3RzIGFyZSBjb25zdHJ1Y3RlZCBmcm9tIHN0cmluZ3MgdGhhdCBkZWZpbmUgdGhlCityYW5nZSBvZiBob3N0IGFkZHJlc3NlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoYXQgbmV0d29yay4gVGhlIHNpbXBsZXN0IGZvcm0KK2ZvciB0aGF0IGluZm9ybWF0aW9uIGlzIGEgIm5ldHdvcmsgYWRkcmVzcy9uZXR3b3JrIHByZWZpeCIgcGFpciwgd2hlcmUgdGhlCitwcmVmaXggZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgYml0cyB0aGF0IGFyZSBjb21wYXJlZCB0byBkZXRlcm1pbmUKK3doZXRoZXIgb3Igbm90IGFuIGFkZHJlc3MgaXMgcGFydCBvZiB0aGUgbmV0d29yayBhbmQgdGhlIG5ldHdvcmsgYWRkcmVzcworZGVmaW5lcyB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhvc2UgYml0cy4KKworQXMgZm9yIGFkZHJlc3NlcywgYSBmYWN0b3J5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRoYXQgZGV0ZXJtaW5lcyB0aGUgY29ycmVjdAorSVAgdmVyc2lvbiBhdXRvbWF0aWNhbGx5OjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKworTmV0d29yayBvYmplY3RzIGNhbm5vdCBoYXZlIGFueSBob3N0IGJpdHMgc2V0LiAgVGhlIHByYWN0aWNhbCBlZmZlY3Qgb2YgdGhpcworaXMgdGhhdCBgYDE5Mi4wLjIuMS8yNGBgIGRvZXMgbm90IGRlc2NyaWJlIGEgbmV0d29yay4gIFN1Y2ggZGVmaW5pdGlvbnMgYXJlCityZWZlcnJlZCB0byBhcyBpbnRlcmZhY2Ugb2JqZWN0cyBzaW5jZSB0aGUgaXAtb24tYS1uZXR3b3JrIG5vdGF0aW9uIGlzCitjb21tb25seSB1c2VkIHRvIGRlc2NyaWJlIG5ldHdvcmsgaW50ZXJmYWNlcyBvZiBhIGNvbXB1dGVyIG9uIGEgZ2l2ZW4gbmV0d29yaworYW5kIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbiB0aGUgbmV4dCBzZWN0aW9uLgorCitCeSBkZWZhdWx0LCBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIG5ldHdvcmsgb2JqZWN0IHdpdGggaG9zdCBiaXRzIHNldCB3aWxsCityZXN1bHQgaW4gOmV4YzpgVmFsdWVFcnJvcmAgYmVpbmcgcmFpc2VkLiBUbyByZXF1ZXN0IHRoYXQgdGhlCithZGRpdGlvbmFsIGJpdHMgaW5zdGVhZCBiZSBjb2VyY2VkIHRvIHplcm8sIHRoZSBmbGFnIGBgc3RyaWN0PUZhbHNlYGAgY2FuCitiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjEvMjQnKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAxOTIuMC4yLjEvMjQgaGFzIGhvc3QgYml0cyBzZXQKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4xLzI0Jywgc3RyaWN0PUZhbHNlKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKK1doaWxlIHRoZSBzdHJpbmcgZm9ybSBvZmZlcnMgc2lnbmlmaWNhbnRseSBtb3JlIGZsZXhpYmlsaXR5LCBuZXR3b3JrcyBjYW4KK2Fsc28gYmUgZGVmaW5lZCB3aXRoIGludGVnZXJzLCBqdXN0IGxpa2UgaG9zdCBhZGRyZXNzZXMuIEluIHRoaXMgY2FzZSwgdGhlCituZXR3b3JrIGlzIGNvbnNpZGVyZWQgdG8gY29udGFpbiBvbmx5IHRoZSBzaW5nbGUgYWRkcmVzcyBpZGVudGlmaWVkIGJ5IHRoZQoraW50ZWdlciwgc28gdGhlIG5ldHdvcmsgcHJlZml4IGluY2x1ZGVzIHRoZSBlbnRpcmUgbmV0d29yayBhZGRyZXNzOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKDMyMjEyMjU5ODQpCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJykKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yayg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCisKK0FzIHdpdGggYWRkcmVzc2VzLCBjcmVhdGlvbiBvZiBhIHBhcnRpY3VsYXIga2luZCBvZiBuZXR3b3JrIGNhbiBiZSBmb3JjZWQKK2J5IGNhbGxpbmcgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgdGhlIGZhY3RvcnkKK2Z1bmN0aW9uLgorCisKK0hvc3QgSW50ZXJmYWNlcworLS0tLS0tLS0tLS0tLS0tCisKK0FzIG1lbnRpb25lZCBqdXN0IGFib3ZlLCBpZiB5b3UgbmVlZCB0byBkZXNjcmliZSBhbiBhZGRyZXNzIG9uIGEgcGFydGljdWxhcgorbmV0d29yaywgbmVpdGhlciB0aGUgYWRkcmVzcyBub3IgdGhlIG5ldHdvcmsgY2xhc3NlcyBhcmUgc3VmZmljaWVudC4KK05vdGF0aW9uIGxpa2UgYGAxOTIuMC4yLjEvMjRgYCBpcyBjb21tb25seSB1c2VkIGJ5IG5ldHdvcmsgZW5naW5lZXJzIGFuZCB0aGUKK3Blb3BsZSB3aG8gd3JpdGUgdG9vbHMgZm9yIGZpcmV3YWxscyBhbmQgcm91dGVycyBhcyBzaG9ydGhhbmQgZm9yICJ0aGUgaG9zdAorYGAxOTIuMC4yLjFgYCBvbiB0aGUgbmV0d29yayBgYDE5Mi4wLjIuMC8yNGBgIiwgQWNjb3JkaW5nbHksIDptb2Q6YGlwYWRkcmVzc2AKK3Byb3ZpZGVzIGEgc2V0IG9mIGh5YnJpZCBjbGFzc2VzIHRoYXQgYXNzb2NpYXRlIGFuIGFkZHJlc3Mgd2l0aCBhIHBhcnRpY3VsYXIKK25ldHdvcmsuIFRoZSBpbnRlcmZhY2UgZm9yIGNyZWF0aW9uIGlzIGlkZW50aWNhbCB0byB0aGF0IGZvciBkZWZpbmluZyBuZXR3b3JrCitvYmplY3RzLCBleGNlcHQgdGhhdCB0aGUgYWRkcmVzcyBwb3J0aW9uIGlzbid0IGNvbnN0cmFpbmVkIHRvIGJlaW5nIGEgbmV0d29yaworYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpCisgICBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MS85NicpCisgICBJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCisKK0ludGVnZXIgaW5wdXRzIGFyZSBhY2NlcHRlZCAoYXMgd2l0aCBuZXR3b3JrcyksIGFuZCB1c2Ugb2YgYSBwYXJ0aWN1bGFyIElQCit2ZXJzaW9uIGNhbiBiZSBmb3JjZWQgYnkgY2FsbGluZyB0aGUgcmVsZXZhbnQgY29uc3RydWN0b3IgZGlyZWN0bHkuCisKKworSW5zcGVjdGluZyBBZGRyZXNzL05ldHdvcmsvSW50ZXJmYWNlIE9iamVjdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1lvdSd2ZSBnb25lIHRvIHRoZSB0cm91YmxlIG9mIGNyZWF0aW5nIGFuIElQdig0fDYpKEFkZHJlc3N8TmV0d29ya3xJbnRlcmZhY2UpCitvYmplY3QsIHNvIHlvdSBwcm9iYWJseSB3YW50IHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBpdC4gIDptb2Q6YGlwYWRkcmVzc2AKK3RyaWVzIHRvIG1ha2UgZG9pbmcgdGhpcyBlYXN5IGFuZCBpbnR1aXRpdmUuCisKK0V4dHJhY3RpbmcgdGhlIElQIHZlcnNpb246OgorCisgICA+Pj4gYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBhZGRyNiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICA+Pj4gYWRkcjYudmVyc2lvbgorICAgNgorICAgPj4+IGFkZHI0LnZlcnNpb24KKyAgIDQKKworT2J0YWluaW5nIHRoZSBuZXR3b3JrIGZyb20gYW4gaW50ZXJmYWNlOjoKKworICAgPj4+IGhvc3Q0ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTkyLjAuMi4xLzI0JykKKyAgID4+PiBob3N0NC5uZXR3b3JrCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBob3N0NiA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKKyAgID4+PiBob3N0Ni5uZXR3b3JrCisgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCisKK0ZpbmRpbmcgb3V0IGhvdyBtYW55IGluZGl2aWR1YWwgYWRkcmVzc2VzIGFyZSBpbiBhIG5ldHdvcms6OgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IG5ldDQubnVtaG9zdHMKKyAgIDI1NgorICAgPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQorICAgPj4+IG5ldDYubnVtaG9zdHMKKyAgIDQyOTQ5NjcyOTYKKworSXRlcmF0aW5nIHRocm91Z2ggdGhlICJ1c2FibGUiIGFkZHJlc3NlcyBvbiBhIG5ldHdvcms6OgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGZvciB4IGluIG5ldDQuaG9zdHMoKToKKyAgICAgICAgICBwcmludCh4KQorICAgMTkyLjAuMi4xCisgICAxOTIuMC4yLjIKKyAgIDE5Mi4wLjIuMworICAgMTkyLjAuMi40CisgICA8c25pcD4KKyAgIDE5Mi4wLjIuMjUyCisgICAxOTIuMC4yLjI1MworICAgMTkyLjAuMi4yNTQKKworCitPYnRhaW5pbmcgdGhlIG5ldG1hc2sgKGkuZS4gc2V0IGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGUgbmV0d29yayBwcmVmaXgpIG9yCit0aGUgaG9zdG1hc2sgKGFueSBiaXRzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBuZXRtYXNrKToKKworICAgPj4+IG5ldDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgID4+PiBuZXQ0Lm5ldG1hc2sKKyAgIElQdjRBZGRyZXNzKCcyNTUuMjU1LjI1NS4wJykKKyAgID4+PiBuZXQ0Lmhvc3RtYXNrCisgICBJUHY0QWRkcmVzcygnMC4wLjAuMjU1JykKKyAgID4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgID4+PiBuZXQ2Lm5ldG1hc2sKKyAgIElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKKyAgID4+PiBuZXQ2Lmhvc3RtYXNrCisgICBJUHY2QWRkcmVzcygnOjpmZmZmOmZmZmYnKQorCisKK0V4cGxvZGluZyBvciBjb21wcmVzc2luZyB0aGUgYWRkcmVzczo6CisKKyAgID4+PiBhZGRyNi5leHBsb2RlZAorICAgJzIwMDE6MGRiODowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMCcKKyAgID4+PiBhZGRyNi5jb21wcmVzc2VkCisgICAnMjAwMTpkYjg6OicKKyAgID4+PiBuZXQ2LmV4cGxvZGVkCisgICAnMjAwMTowZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwLzk2JworICAgPj4+IG5ldDYuY29tcHJlc3NlZAorICAgJzIwMDE6ZGI4OjovOTYnCisKK1doaWxlIElQdjQgZG9lc24ndCBzdXBwb3J0IGV4cGxvc2lvbiBvciBjb21wcmVzc2lvbiwgdGhlIGFzc29jaWF0ZWQgb2JqZWN0cworc3RpbGwgcHJvdmlkZSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcyBzbyB0aGF0IHZlcnNpb24gbmV1dHJhbCBjb2RlIGNhbgorZWFzaWx5IGVuc3VyZSB0aGUgbW9zdCBjb25jaXNlIG9yIG1vc3QgdmVyYm9zZSBmb3JtIGlzIHVzZWQgZm9yIElQdjYKK2FkZHJlc3NlcyB3aGlsZSBzdGlsbCBjb3JyZWN0bHkgaGFuZGxpbmcgSVB2NCBhZGRyZXNzZXMuCisKKworTmV0d29ya3MgYXMgbGlzdHMgb2YgQWRkcmVzc2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSXQncyBzb21ldGltZXMgdXNlZnVsIHRvIHRyZWF0IG5ldHdvcmtzIGFzIGxpc3RzLiAgVGhpcyBtZWFucyBpdCBpcyBwb3NzaWJsZQordG8gaW5kZXggdGhlbSBsaWtlIHRoaXM6OgorCisgICA+Pj4gbmV0NFsxXQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gbmV0NFstMV0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjI1NScpCisgICA+Pj4gbmV0NlsxXQorICAgSVB2NkFkZHJlc3MoJzIwMDE6OjEnKQorICAgPj4+IG5ldDZbLTFdCisgICBJUHY2QWRkcmVzcygnMjAwMTo6ZmZmZjpmZmZmJykKKworCitJdCBhbHNvIG1lYW5zIHRoYXQgbmV0d29yayBvYmplY3RzIGxlbmQgdGhlbXNlbHZlcyB0byB1c2luZyB0aGUgbGlzdAorbWVtYmVyc2hpcCB0ZXN0IHN5bnRheCBsaWtlIHRoaXM6OgorCisgICBpZiBhZGRyZXNzIGluIG5ldHdvcms6CisgICAgICAgIyBkbyBzb21ldGhpbmcKKworQ29udGFpbm1lbnQgdGVzdGluZyBpcyBkb25lIGVmZmljaWVudGx5IGJhc2VkIG9uIHRoZSBuZXR3b3JrIHByZWZpeDo6CisKKyAgID4+PiBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGFkZHI0IGluIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgVHJ1ZQorICAgPj4+IGFkZHI0IGluIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4zLjAvMjQnKQorICAgRmFsc2UKKworCitDb21wYXJpc29ucworPT09PT09PT09PT0KKworOm1vZDpgaXBhZGRyZXNzYCBwcm92aWRlcyBzb21lIHNpbXBsZSwgaG9wZWZ1bGx5IGludHVpdGl2ZSB3YXlzIHRvIGNvbXBhcmUKK29iamVjdHMsIHdoZXJlIGl0IG1ha2VzIHNlbnNlOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKSA8IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjInKQorICAgVHJ1ZQorCitBIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB5b3UgdHJ5IHRvIGNvbXBhcmUgb2JqZWN0cyBvZgorZGlmZmVyZW50IHZlcnNpb25zIG9yIGRpZmZlcmVudCB0eXBlcy4KKworCitVc2luZyBJUCBBZGRyZXNzZXMgd2l0aCBvdGhlciBtb2R1bGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK090aGVyIG1vZHVsZXMgdGhhdCB1c2UgSVAgYWRkcmVzc2VzIChzdWNoIGFzIDptb2Q6YHNvY2tldGApIHVzdWFsbHkgd29uJ3QKK2FjY2VwdCBvYmplY3RzIGZyb20gdGhpcyBtb2R1bGUgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgbXVzdCBiZSBjb2VyY2VkIHRvCithbiBpbnRlZ2VyIG9yIHN0cmluZyB0aGF0IHRoZSBvdGhlciBtb2R1bGUgd2lsbCBhY2NlcHQ6OgorCisgICA+Pj4gYWRkcjQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBzdHIoYWRkcjQpCisgICAnMTkyLjAuMi4xJworICAgPj4+IGludChhZGRyNCkKKyAgIDMyMjEyMjU5ODUKKworCitHZXR0aW5nIG1vcmUgZGV0YWlsIHdoZW4gaW5zdGFuY2UgY3JlYXRpb24gZmFpbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIGNyZWF0aW5nIGFkZHJlc3MvbmV0d29yay9pbnRlcmZhY2Ugb2JqZWN0cyB1c2luZyB0aGUgdmVyc2lvbi1hZ25vc3RpYworZmFjdG9yeSBmdW5jdGlvbnMsIGFueSBlcnJvcnMgd2lsbCBiZSByZXBvcnRlZCBhcyA6ZXhjOmBWYWx1ZUVycm9yYCB3aXRoCithIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSB0aGF0IHNpbXBseSBzYXlzIHRoZSBwYXNzZWQgaW4gdmFsdWUgd2FzIG5vdAorcmVjb2duaXplZCBhcyBhbiBvYmplY3Qgb2YgdGhhdCB0eXBlLiBUaGUgbGFjayBvZiBhIHNwZWNpZmljIGVycm9yIGlzCitiZWNhdXNlIGl0J3MgbmVjZXNzYXJ5IHRvIGtub3cgd2hldGhlciB0aGUgdmFsdWUgaXMgKnN1cHBvc2VkKiB0byBiZSBJUHY0CitvciBJUHY2IGluIG9yZGVyIHRvIHByb3ZpZGUgbW9yZSBkZXRhaWwgb24gd2h5IGl0IGhhcyBiZWVuIHJlamVjdGVkLgorCitUbyBzdXBwb3J0IHVzZSBjYXNlcyB3aGVyZSBpdCBpcyB1c2VmdWwgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhpcyBhZGRpdGlvbmFsCitkZXRhaWwsIHRoZSBpbmRpdmlkdWFsIGNsYXNzIGNvbnN0cnVjdG9ycyBhY3R1YWxseSByYWlzZSB0aGUKKzpleGM6YFZhbHVlRXJyb3JgIHN1YmNsYXNzZXMgOmV4YzpgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yYCBhbmQKKzpleGM6YGlwYWRkcmVzcy5OZXRtYXNrVmFsdWVFcnJvcmAgdG8gaW5kaWNhdGUgZXhhY3RseSB3aGljaCBwYXJ0IG9mCit0aGUgZGVmaW5pdGlvbiBmYWlsZWQgdG8gcGFyc2UgY29ycmVjdGx5LgorCitUaGUgZXJyb3IgbWVzc2FnZXMgYXJlIHNpZ25pZmljYW50bHkgbW9yZSBkZXRhaWxlZCB3aGVuIHVzaW5nIHRoZQorY2xhc3MgY29uc3RydWN0b3JzIGRpcmVjdGx5LiBGb3IgZXhhbXBsZTo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMTkyLjE2OC4wLjI1NiIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgVmFsdWVFcnJvcjogJzE5Mi4xNjguMC4yNTYnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcworICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygiMTkyLjE2OC4wLjI1NiIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yOiBPY3RldCAyNTYgKD4gMjU1KSBub3QgcGVybWl0dGVkIGluICcxOTIuMTY4LjAuMjU2JworCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoIjE5Mi4xNjguMC4xLzY0IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAnMTkyLjE2OC4wLjEvNjQnIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgbmV0d29yaworICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygiMTkyLjE2OC4wLjEvNjQiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIGlwYWRkcmVzcy5OZXRtYXNrVmFsdWVFcnJvcjogJzY0JyBpcyBub3QgYSB2YWxpZCBuZXRtYXNrCisKK0hvd2V2ZXIsIGJvdGggb2YgdGhlIG1vZHVsZSBzcGVjaWZpYyBleGNlcHRpb25zIGhhdmUgOmV4YzpgVmFsdWVFcnJvcmAgYXMgdGhlaXIKK3BhcmVudCBjbGFzcywgc28gaWYgeW91J3JlIG5vdCBjb25jZXJuZWQgd2l0aCB0aGUgcGFydGljdWxhciB0eXBlIG9mIGVycm9yLAoreW91IGNhbiBzdGlsbCB3cml0ZSBjb2RlIGxpa2UgdGhlIGZvbGxvd2luZzo6CisKKyAgIHRyeToKKyAgICAgICBuZXR3b3JrID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKGFkZHJlc3MpCisgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICBwcmludCgnYWRkcmVzcy9uZXRtYXNrIGlzIGludmFsaWQgZm9yIElQdjQ6JywgYWRkcmVzcykKKwpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0IGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CmluZGV4IDM3MGM3NTcuLjkyYWYwZWMgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAorKysgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKQEAgLTEzMTYsNiArMTMxNiwzMyBAQAogc2VjdGlvbiA8aHR0cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMy90b3BpY3MvbG9nZ2luZy8jY29uZmlndXJpbmctbG9nZ2luZz5gXwogb2YgdGhlIERqYW5nbyBkb2N1bWVudGF0aW9uLgogCisuLiBfY29va2Jvb2stcm90YXRvci1uYW1lcjoKKworVXNpbmcgYSByb3RhdG9yIGFuZCBuYW1lciB0byBjdXN0b21pc2UgbG9nIHJvdGF0aW9uIHByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGV4YW1wbGUgb2YgaG93IHlvdSBjYW4gZGVmaW5lIGEgbmFtZXIgYW5kIHJvdGF0b3IgaXMgZ2l2ZW4gaW4gdGhlIGZvbGxvd2luZworc25pcHBldCwgd2hpY2ggc2hvd3MgemxpYi1iYXNlZCBjb21wcmVzc2lvbiBvZiB0aGUgbG9nIGZpbGU6OgorCisgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICByZXR1cm4gbmFtZSArICIuZ3oiCisKKyAgICBkZWYgcm90YXRvcihzb3VyY2UsIGRlc3QpOgorICAgICAgICB3aXRoIG9wZW4oc291cmNlLCAicmIiKSBhcyBzZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZi5yZWFkKCkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSB6bGliLmNvbXByZXNzKGRhdGEsIDkpCisgICAgICAgICAgICB3aXRoIG9wZW4oZGVzdCwgIndiIikgYXMgZGY6CisgICAgICAgICAgICAgICAgZGYud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgb3MucmVtb3ZlKHNvdXJjZSkKKworICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKC4uLikKKyAgICByaC5yb3RhdG9yID0gcm90YXRvcgorICAgIHJoLm5hbWVyID0gbmFtZXIKKworVGhlc2UgYXJlIG5vdCAidHJ1ZSIgLmd6IGZpbGVzLCBhcyB0aGV5IGFyZSBiYXJlIGNvbXByZXNzZWQgZGF0YSwgd2l0aCBubworImNvbnRhaW5lciIgc3VjaCBhcyB5b3XigJlkIGZpbmQgaW4gYW4gYWN0dWFsIGd6aXAgZmlsZS4gVGhpcyBzbmlwcGV0IGlzIGp1c3QKK2ZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMuCisKIEEgbW9yZSBlbGFib3JhdGUgbXVsdGlwcm9jZXNzaW5nIGV4YW1wbGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTU3Miw3ICsxNTk5LDcgQEAKIAogICAgICAgJ0FTQ0lJIHNlY3Rpb25cdWZlZmZVbmljb2RlIHNlY3Rpb24nCiAKLSAgIFRoZSBVbmljb2RlIGNvZGUgcG9pbnQgYGAnXGZlZmZgYGAsIHdoZW4gZW5jb2RlZCB1c2luZyBVVEYtOCwgd2lsbCBiZQorICAgVGhlIFVuaWNvZGUgY29kZSBwb2ludCBgYCdcZmVmZidgYCwgd2hlbiBlbmNvZGVkIHVzaW5nIFVURi04LCB3aWxsIGJlCiAgICBlbmNvZGVkIGFzIGEgVVRGLTggQk9NIC0tIHRoZSBieXRlLXN0cmluZyBgYGInXHhlZlx4YmJceGJmJ2BgLgogCiAjLiBSZXBsYWNlIHRoZSBBU0NJSSBzZWN0aW9uIHdpdGggd2hhdGV2ZXIgcGxhY2Vob2xkZXJzIHlvdSBsaWtlLCBidXQgbWFrZSBzdXJlCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vc29ja2V0cy5yc3QgYi9Eb2MvaG93dG8vc29ja2V0cy5yc3QKaW5kZXggMjc5YmIzZS4uY2E2NTI4YiAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3NvY2tldHMucnN0CisrKyBiL0RvYy9ob3d0by9zb2NrZXRzLnJzdApAQCAtMjUsOCArMjUsOCBAQAogd29ya2luZy4gSXQgZG9lc24ndCBjb3ZlciB0aGUgZmluZSBwb2ludHMgKGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgdGhlbSksIGJ1dCBJCiBob3BlIGl0IHdpbGwgZ2l2ZSB5b3UgZW5vdWdoIGJhY2tncm91bmQgdG8gYmVnaW4gdXNpbmcgdGhlbSBkZWNlbnRseS4KIAotSSdtIG9ubHkgZ29pbmcgdG8gdGFsayBhYm91dCBJTkVUIHNvY2tldHMsIGJ1dCB0aGV5IGFjY291bnQgZm9yIGF0IGxlYXN0IDk5JSBvZgotdGhlIHNvY2tldHMgaW4gdXNlLiBBbmQgSSdsbCBvbmx5IHRhbGsgYWJvdXQgU1RSRUFNIHNvY2tldHMgLSB1bmxlc3MgeW91IHJlYWxseQorSSdtIG9ubHkgZ29pbmcgdG8gdGFsayBhYm91dCBJTkVUIChpLmUuIElQdjQpIHNvY2tldHMsIGJ1dCB0aGV5IGFjY291bnQgZm9yIGF0IGxlYXN0IDk5JSBvZgordGhlIHNvY2tldHMgaW4gdXNlLiBBbmQgSSdsbCBvbmx5IHRhbGsgYWJvdXQgU1RSRUFNIChpLmUuIFRDUCkgc29ja2V0cyAtIHVubGVzcyB5b3UgcmVhbGx5CiBrbm93IHdoYXQgeW91J3JlIGRvaW5nIChpbiB3aGljaCBjYXNlIHRoaXMgSE9XVE8gaXNuJ3QgZm9yIHlvdSEpLCB5b3UnbGwgZ2V0CiBiZXR0ZXIgYmVoYXZpb3IgYW5kIHBlcmZvcm1hbmNlIGZyb20gYSBTVFJFQU0gc29ja2V0IHRoYW4gYW55dGhpbmcgZWxzZS4gSSB3aWxsCiB0cnkgdG8gY2xlYXIgdXAgdGhlIG15c3Rlcnkgb2Ygd2hhdCBhIHNvY2tldCBpcywgYXMgd2VsbCBhcyBzb21lIGhpbnRzIG9uIGhvdyB0bwpAQCAtMjA4LDEwICsyMDgsMTAgQEAKICAgICAgICAgICAgICAgIHRvdGFsc2VudCA9IHRvdGFsc2VudCArIHNlbnQKIAogICAgICAgIGRlZiBteXJlY2VpdmUoc2VsZik6Ci0gICAgICAgICAgIG1zZyA9ICcnCisgICAgICAgICAgIG1zZyA9IGInJwogICAgICAgICAgICB3aGlsZSBsZW4obXNnKSA8IE1TR0xFTjoKICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5zb2NrLnJlY3YoTVNHTEVOLWxlbihtc2cpKQotICAgICAgICAgICAgICAgaWYgY2h1bmsgPT0gJyc6CisgICAgICAgICAgICAgICBpZiBjaHVuayA9PSBiJyc6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzb2NrZXQgY29ubmVjdGlvbiBicm9rZW4iKQogICAgICAgICAgICAgICAgbXNnID0gbXNnICsgY2h1bmsKICAgICAgICAgICAgcmV0dXJuIG1zZwpAQCAtMzcxLDEyICszNzEsNiBAQAogcG90ZW50aWFsX3dyaXRlcnMgbGlzdC4gSWYgaXQgc2hvd3MgdXAgaW4gdGhlIHdyaXRhYmxlIGxpc3QsIHlvdSBoYXZlIGEgZGVjZW50CiBjaGFuY2UgdGhhdCBpdCBoYXMgY29ubmVjdGVkLgogCi1PbmUgdmVyeSBuYXN0eSBwcm9ibGVtIHdpdGggYGBzZWxlY3RgYDogaWYgc29tZXdoZXJlIGluIHRob3NlIGlucHV0IGxpc3RzIG9mCi1zb2NrZXRzIGlzIG9uZSB3aGljaCBoYXMgZGllZCBhIG5hc3R5IGRlYXRoLCB0aGUgYGBzZWxlY3RgYCB3aWxsIGZhaWwuIFlvdSB0aGVuCi1uZWVkIHRvIGxvb3AgdGhyb3VnaCBldmVyeSBzaW5nbGUgZGFtbiBzb2NrZXQgaW4gYWxsIHRob3NlIGxpc3RzIGFuZCBkbyBhCi1gYHNlbGVjdChbc29ja10sW10sW10sMClgYCB1bnRpbCB5b3UgZmluZCB0aGUgYmFkIG9uZS4gVGhhdCB0aW1lb3V0IG9mIDAgbWVhbnMKLWl0IHdvbid0IHRha2UgbG9uZywgYnV0IGl0J3MgdWdseS4KLQogQWN0dWFsbHksIGBgc2VsZWN0YGAgY2FuIGJlIGhhbmR5IGV2ZW4gd2l0aCBibG9ja2luZyBzb2NrZXRzLiBJdCdzIG9uZSB3YXkgb2YKIGRldGVybWluaW5nIHdoZXRoZXIgeW91IHdpbGwgYmxvY2sgLSB0aGUgc29ja2V0IHJldHVybnMgYXMgcmVhZGFibGUgd2hlbiB0aGVyZSdzCiBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlcnMuICBIb3dldmVyLCB0aGlzIHN0aWxsIGRvZXNuJ3QgaGVscCB3aXRoIHRoZSBwcm9ibGVtIG9mCkBAIC0zODYsMjYgKzM4MCw2IEBACiBmaWxlcy4gRG9uJ3QgdHJ5IHRoaXMgb24gV2luZG93cy4gT24gV2luZG93cywgYGBzZWxlY3RgYCB3b3JrcyB3aXRoIHNvY2tldHMKIG9ubHkuIEFsc28gbm90ZSB0aGF0IGluIEMsIG1hbnkgb2YgdGhlIG1vcmUgYWR2YW5jZWQgc29ja2V0IG9wdGlvbnMgYXJlIGRvbmUKIGRpZmZlcmVudGx5IG9uIFdpbmRvd3MuIEluIGZhY3QsIG9uIFdpbmRvd3MgSSB1c3VhbGx5IHVzZSB0aHJlYWRzICh3aGljaCB3b3JrCi12ZXJ5LCB2ZXJ5IHdlbGwpIHdpdGggbXkgc29ja2V0cy4gRmFjZSBpdCwgaWYgeW91IHdhbnQgYW55IGtpbmQgb2YgcGVyZm9ybWFuY2UsCi15b3VyIGNvZGUgd2lsbCBsb29rIHZlcnkgZGlmZmVyZW50IG9uIFdpbmRvd3MgdGhhbiBvbiBVbml4LgordmVyeSwgdmVyeSB3ZWxsKSB3aXRoIG15IHNvY2tldHMuCiAKIAotUGVyZm9ybWFuY2UKLS0tLS0tLS0tLS0tCi0KLVRoZXJlJ3Mgbm8gcXVlc3Rpb24gdGhhdCB0aGUgZmFzdGVzdCBzb2NrZXRzIGNvZGUgdXNlcyBub24tYmxvY2tpbmcgc29ja2V0cyBhbmQKLXNlbGVjdCB0byBtdWx0aXBsZXggdGhlbS4gWW91IGNhbiBwdXQgdG9nZXRoZXIgc29tZXRoaW5nIHRoYXQgd2lsbCBzYXR1cmF0ZSBhCi1MQU4gY29ubmVjdGlvbiB3aXRob3V0IHB1dHRpbmcgYW55IHN0cmFpbiBvbiB0aGUgQ1BVLgotCi1UaGUgdHJvdWJsZSBpcyB0aGF0IGFuIGFwcCB3cml0dGVuIHRoaXMgd2F5IGNhbid0IGRvIG11Y2ggb2YgYW55dGhpbmcgZWxzZSAtCi1pdCBuZWVkcyB0byBiZSByZWFkeSB0byBzaHVmZmxlIGJ5dGVzIGFyb3VuZCBhdCBhbGwgdGltZXMuIEFzc3VtaW5nIHRoYXQgeW91cgotYXBwIGlzIGFjdHVhbGx5IHN1cHBvc2VkIHRvIGRvIHNvbWV0aGluZyBtb3JlIHRoYW4gdGhhdCwgdGhyZWFkaW5nIGlzIHRoZQotb3B0aW1hbCBzb2x1dGlvbiwgKGFuZCB1c2luZyBub24tYmxvY2tpbmcgc29ja2V0cyB3aWxsIGJlIGZhc3RlciB0aGFuIHVzaW5nCi1ibG9ja2luZyBzb2NrZXRzKS4KLQotRmluYWxseSwgcmVtZW1iZXIgdGhhdCBldmVuIHRob3VnaCBibG9ja2luZyBzb2NrZXRzIGFyZSBzb21ld2hhdCBzbG93ZXIgdGhhbgotbm9uLWJsb2NraW5nLCBpbiBtYW55IGNhc2VzIHRoZXkgYXJlIHRoZSAicmlnaHQiIHNvbHV0aW9uLiBBZnRlciBhbGwsIGlmIHlvdXIKLWFwcCBpcyBkcml2ZW4gYnkgdGhlIGRhdGEgaXQgcmVjZWl2ZXMgb3ZlciBhIHNvY2tldCwgdGhlcmUncyBub3QgbXVjaCBzZW5zZSBpbgotY29tcGxpY2F0aW5nIHRoZSBsb2dpYyBqdXN0IHNvIHlvdXIgYXBwIGNhbiB3YWl0IG9uIGBgc2VsZWN0YGAgaW5zdGVhZCBvZgotYGByZWN2YGAuCi0KZGlmZiAtLWdpdCBhL0RvYy9ob3d0by91cmxsaWIyLnJzdCBiL0RvYy9ob3d0by91cmxsaWIyLnJzdAppbmRleCBmYWRlNGEzLi4yMGRjYTIwIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QKKysrIGIvRG9jL2hvd3RvL3VybGxpYjIucnN0CkBAIC01Niw2ICs1NiwxMyBAQAogICAgIHJlc3BvbnNlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbignaHR0cDovL3B5dGhvbi5vcmcvJykKICAgICBodG1sID0gcmVzcG9uc2UucmVhZCgpCiAKK0lmIHlvdSB3aXNoIHRvIHJldHJpZXZlIGEgcmVzb3VyY2UgdmlhIFVSTCBhbmQgc3RvcmUgaXQgaW4gYSB0ZW1wb3JhcnkgbG9jYXRpb24sCit5b3UgY2FuIGRvIHNvIHZpYSB0aGUgOmZ1bmM6YHVybHJldHJpZXZlYCBmdW5jdGlvbjo6CisKKyAgICBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICBsb2NhbF9maWxlbmFtZSwgaGVhZGVycyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwOi8vcHl0aG9uLm9yZy8nKQorICAgIGh0bWwgPSBvcGVuKGxvY2FsX2ZpbGVuYW1lKQorCiBNYW55IHVzZXMgb2YgdXJsbGliIHdpbGwgYmUgdGhhdCBzaW1wbGUgKG5vdGUgdGhhdCBpbnN0ZWFkIG9mIGFuICdodHRwOicgVVJMIHdlCiBjb3VsZCBoYXZlIHVzZWQgYW4gVVJMIHN0YXJ0aW5nIHdpdGggJ2Z0cDonLCAnZmlsZTonLCBldGMuKS4gIEhvd2V2ZXIsIGl0J3MgdGhlCiBwdXJwb3NlIG9mIHRoaXMgdHV0b3JpYWwgdG8gZXhwbGFpbiB0aGUgbW9yZSBjb21wbGljYXRlZCBjYXNlcywgY29uY2VudHJhdGluZyBvbgpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkgYi9Eb2MvaW5jbHVkZXMvbXBfYmVuY2htYXJrcy5weQppbmRleCBhY2RmNjQyLi4zNzYzZWE5IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvbXBfYmVuY2htYXJrcy5weQorKysgYi9Eb2MvaW5jbHVkZXMvbXBfYmVuY2htYXJrcy5weQpAQCAtNiwxNiArNiwxMiBAQAogIwogCiBpbXBvcnQgdGltZQotaW1wb3J0IHN5cwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgZ2MKIAotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgX3RpbWVyID0gdGltZS5jbG9jawotZWxzZToKLSAgICBfdGltZXIgPSB0aW1lLnRpbWUKK190aW1lciA9IHRpbWUucGVyZl9jb3VudGVyCiAKIGRlbHRhID0gMQogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKaW5kZXggOWI4ZWFmYi4uOTY0MTU1OCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTIuYwpAQCAtMjQsMTggKzI0LDE2IEBACiAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBzZWxmLT5sYXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICB9CkBAIC01MCwxMCArNDgsMTAgQEAKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlyc3QiLCAibGFzdCIsICJudW1iZXIiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PaSIsIGt3bGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsIAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPm51bWJlcikpCi0gICAgICAgIHJldHVybiAtMTsgCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChmaXJzdCkgewogICAgICAgICB0bXAgPSBzZWxmLT5maXJzdDsKQEAgLTg2LDE1ICs4NCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogTm9kZHlfbmFtZShOb2RkeSogc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImZpcnN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA1LDE0ICs5NCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPTyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTICVTIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgTm9kZHlfbWV0aG9kc1tdID0gewpAQCAtMTQ1LDEyICsxMjcsMTIgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIE5vZGR5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBOb2RkeV9tZW1iZXJzLCAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0xNzMsNyArMTU1LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfbm9kZHkyKHZvaWQpIAorUHlJbml0X25vZGR5Mih2b2lkKQogewogICAgIFB5T2JqZWN0KiBtOwogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKaW5kZXggODlmM2E3Ny4uOGE1YTc1MyAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5My5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTMuYwpAQCAtMjQsMTggKzI0LDE2IEBACiAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBzZWxmLT5sYXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICB9CkBAIC01MCwxMCArNDgsMTAgQEAKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlyc3QiLCAibGFzdCIsICJudW1iZXIiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifFNTaSIsIGt3bGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsIAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifFNTaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPm51bWJlcikpCi0gICAgICAgIHJldHVybiAtMTsgCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChmaXJzdCkgewogICAgICAgICB0bXAgPSBzZWxmLT5maXJzdDsKQEAgLTg4LDIyICs4NiwyMiBAQAogc3RhdGljIGludAogTm9kZHlfc2V0Zmlyc3QoTm9kZHkgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQ2Fubm90IGRlbGV0ZSB0aGUgZmlyc3QgYXR0cmlidXRlIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIAotICBpZiAoISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICJUaGUgZmlyc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgICAgIAotICBQeV9ERUNSRUYoc2VsZi0+Zmlyc3QpOwotICBQeV9JTkNSRUYodmFsdWUpOwotICBzZWxmLT5maXJzdCA9IHZhbHVlOyAgICAKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQ2Fubm90IGRlbGV0ZSB0aGUgZmlyc3QgYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgcmV0dXJuIDA7CisgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaXJzdCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIHNlbGYtPmZpcnN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExNiwzMCArMTE0LDMwIEBACiBzdGF0aWMgaW50CiBOb2RkeV9zZXRsYXN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIAotICBpZiAoISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICJUaGUgbGFzdCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAgICAgCi0gIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+bGFzdCA9IHZhbHVlOyAgICAKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQ2Fubm90IGRlbGV0ZSB0aGUgbGFzdCBhdHRyaWJ1dGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICByZXR1cm4gMDsKKyAgICBpZiAoISBQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGxhc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIHNlbGYtPmxhc3QgPSB2YWx1ZTsKKworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlHZXRTZXREZWYgTm9kZHlfZ2V0c2V0ZXJzW10gPSB7Ci0gICAgeyJmaXJzdCIsIAorICAgIHsiZmlyc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGZpcnN0LCAoc2V0dGVyKU5vZGR5X3NldGZpcnN0LAogICAgICAiZmlyc3QgbmFtZSIsCiAgICAgIE5VTEx9LAotICAgIHsibGFzdCIsIAorICAgIHsibGFzdCIsCiAgICAgIChnZXR0ZXIpTm9kZHlfZ2V0bGFzdCwgKHNldHRlcilOb2RkeV9zZXRsYXN0LAogICAgICAibGFzdCBuYW1lIiwKICAgICAgTlVMTH0sCkBAIC0xNDksMjMgKzE0Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogTm9kZHlfbmFtZShOb2RkeSogc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPTyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTICVTIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgTm9kZHlfbWV0aG9kc1tdID0gewpAQCAtMTk4LDEyICsxODAsMTIgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIE5vZGR5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBOb2RkeV9tZW1iZXJzLCAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgTm9kZHlfZ2V0c2V0ZXJzLCAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0yMjYsNyArMjA4LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfbm9kZHkzKHZvaWQpIAorUHlJbml0X25vZGR5Myh2b2lkKQogewogICAgIFB5T2JqZWN0KiBtOwogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKaW5kZXggNmE5NmZhYy4uZWI5NjIyYSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTQuYwpAQCAtMjcsNyArMjcsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IAorc3RhdGljIGludAogTm9kZHlfY2xlYXIoTm9kZHkgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKQEAgLTU4LDE4ICs1OCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtODQsMTAgKzgyLDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC0xMjAsMTUgKzExOCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogTm9kZHlfbmFtZShOb2RkeSogc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzICVzIik7Ci0gICAgICAgIGlmIChmb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgImZpcnN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTM5LDE0ICsxMjgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE4MiwxMCArMTY0LDEwIEBACiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylOb2RkeV90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KU5vZGR5X2NsZWFyLCAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMjA4LDcgKzE5MCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5NCh2b2lkKSAKK1B5SW5pdF9ub2RkeTQodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QgYi9Eb2MvbGlicmFyeS9fdGhyZWFkLnJzdAppbmRleCAzNjllOWNkLi43NTFjM2U4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9fdGhyZWFkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9fdGhyZWFkLnJzdApAQCAtMzUsNiArMzUsOSBAQAogCiAgICBSYWlzZWQgb24gdGhyZWFkLXNwZWNpZmljIGVycm9ycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgaXMgbm93IGEgc3lub255bSBvZiB0aGUgYnVpbHQtaW4gOmV4YzpgUnVudGltZUVycm9yYC4KKwogCiAuLiBkYXRhOjogTG9ja1R5cGUKIApAQCAtOTEsNyArOTQsNyBAQAogICAgKnNpemUqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc3RhY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50bHkgY3JlYXRlZAogICAgdGhyZWFkcywgYW5kIG11c3QgYmUgMCAodXNlIHBsYXRmb3JtIG9yIGNvbmZpZ3VyZWQgZGVmYXVsdCkgb3IgYSBwb3NpdGl2ZQogICAgaW50ZWdlciB2YWx1ZSBvZiBhdCBsZWFzdCAzMiw3NjggKDMya0IpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKLSAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFRocmVhZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgc3BlY2lmaWVkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCiAgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKICAgIGlzIGN1cnJlbnRseSB0aGUgbWluaW11bSBzdXBwb3J0ZWQgc3RhY2sgc2l6ZSB2YWx1ZSB0byBndWFyYW50ZWUgc3VmZmljaWVudAogICAgc3RhY2sgc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBpdHNlbGYuICBOb3RlIHRoYXQgc29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FiYy5yc3QgYi9Eb2MvbGlicmFyeS9hYmMucnN0CmluZGV4IDEwNDhiMjQuLmRjYTY5OTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FiYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYWJjLnJzdApAQCAtMTgsNyArMTgsNyBAQAogCiBUaGUgOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSBoYXMgc29tZSBjb25jcmV0ZSBjbGFzc2VzIHRoYXQgZGVyaXZlIGZyb20KIEFCQ3M7IHRoZXNlIGNhbiwgb2YgY291cnNlLCBiZSBmdXJ0aGVyIGRlcml2ZWQuIEluIGFkZGl0aW9uIHRoZQotOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZSBoYXMgc29tZSBBQkNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyCis6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIHN1Ym1vZHVsZSBoYXMgc29tZSBBQkNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyCiBhIGNsYXNzIG9yIGluc3RhbmNlIHByb3ZpZGVzIGEgcGFydGljdWxhciBpbnRlcmZhY2UsIGZvciBleGFtcGxlLCBpcyBpdAogaGFzaGFibGUgb3IgYSBtYXBwaW5nLgogCkBAIC01NSw2ICs1NSw5IEBACiAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR1cGxlLCBNeUFCQykKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoKCksIE15QUJDKQogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBzdWJjbGFzcywgdG8gYWxsb3cgdXNhZ2UgYXMgYSBjbGFzcyBkZWNvcmF0b3IuCisKICAgIFlvdSBjYW4gYWxzbyBvdmVycmlkZSB0aGlzIG1ldGhvZCBpbiBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzOgogCiAgICAuLiBtZXRob2Q6OiBfX3N1YmNsYXNzaG9va19fKHN1YmNsYXNzKQpAQCAtMTI0LDE5ICsxMjcsMTggQEAKICAgIGF2YWlsYWJsZSBhcyBhIG1ldGhvZCBvZiBgYEZvb2BgLCBzbyBpdCBpcyBwcm92aWRlZCBzZXBhcmF0ZWx5LgogCiAKLUl0IGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkZWNvcmF0b3JzOgorVGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBkZWNvcmF0b3JzOgogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdG1ldGhvZChmdW5jdGlvbikKIAogICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBtZXRob2RzLgogCi0gICBVc2luZyB0aGlzIGRlY29yYXRvciByZXF1aXJlcyB0aGF0IHRoZSBjbGFzcydzIG1ldGFjbGFzcyBpcyA6Y2xhc3M6YEFCQ01ldGFgIG9yCi0gICBpcyBkZXJpdmVkIGZyb20gaXQuCi0gICBBIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YEFCQ01ldGFgCi0gICBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIHVubGVzcyBhbGwgb2YgaXRzIGFic3RyYWN0IG1ldGhvZHMgYW5kCi0gICBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLgotICAgVGhlIGFic3RyYWN0IG1ldGhvZHMgY2FuIGJlIGNhbGxlZCB1c2luZyBhbnkgb2YgdGhlIG5vcm1hbCAnc3VwZXInIGNhbGwKLSAgIG1lY2hhbmlzbXMuCisgICBVc2luZyB0aGlzIGRlY29yYXRvciByZXF1aXJlcyB0aGF0IHRoZSBjbGFzcydzIG1ldGFjbGFzcyBpcyA6Y2xhc3M6YEFCQ01ldGFgCisgICBvciBpcyBkZXJpdmVkIGZyb20gaXQuICBBIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbQorICAgOmNsYXNzOmBBQkNNZXRhYCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIHVubGVzcyBhbGwgb2YgaXRzIGFic3RyYWN0IG1ldGhvZHMKKyAgIGFuZCBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLiAgVGhlIGFic3RyYWN0IG1ldGhvZHMgY2FuIGJlIGNhbGxlZCB1c2luZyBhbnkKKyAgIG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuICA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIG1heSBiZSB1c2VkCisgICB0byBkZWNsYXJlIGFic3RyYWN0IG1ldGhvZHMgZm9yIHByb3BlcnRpZXMgYW5kIGRlc2NyaXB0b3JzLgogCiAgICBEeW5hbWljYWxseSBhZGRpbmcgYWJzdHJhY3QgbWV0aG9kcyB0byBhIGNsYXNzLCBvciBhdHRlbXB0aW5nIHRvIG1vZGlmeSB0aGUKICAgIGFic3RyYWN0aW9uIHN0YXR1cyBvZiBhIG1ldGhvZCBvciBjbGFzcyBvbmNlIGl0IGlzIGNyZWF0ZWQsIGFyZSBub3QKQEAgLTE0NCwxMiArMTQ2LDUyIEBACiAgICByZWd1bGFyIGluaGVyaXRhbmNlOyAidmlydHVhbCBzdWJjbGFzc2VzIiByZWdpc3RlcmVkIHdpdGggdGhlIEFCQydzCiAgICA6bWV0aDpgcmVnaXN0ZXJgIG1ldGhvZCBhcmUgbm90IGFmZmVjdGVkLgogCi0gICBVc2FnZTo6CisgICBXaGVuIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAgaXMgYXBwbGllZCBpbiBjb21iaW5hdGlvbiB3aXRoIG90aGVyIG1ldGhvZAorICAgZGVzY3JpcHRvcnMsIGl0IHNob3VsZCBiZSBhcHBsaWVkIGFzIHRoZSBpbm5lcm1vc3QgZGVjb3JhdG9yLCBhcyBzaG93biBpbgorICAgdGhlIGZvbGxvd2luZyB1c2FnZSBleGFtcGxlczo6CiAKICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUFCQ01ldGEpOgogICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAogICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9tZXRob2Qoc2VsZiwgLi4uKToKICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X2NsYXNzbWV0aG9kKGNscywgLi4uKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9zdGF0aWNtZXRob2QoLi4uKToKKyAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfcHJvcGVydHkoc2VsZik6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBteV9hYnN0cmFjdF9wcm9wZXJ0eS5zZXR0ZXIKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfcHJvcGVydHkoc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgLi4uCisKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgX2dldF94KHNlbGYpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgX3NldF94KHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIHggPSBwcm9wZXJ0eShfZ2V0X3gsIF9zZXRfeCkKKworICAgSW4gb3JkZXIgdG8gY29ycmVjdGx5IGludGVyb3BlcmF0ZSB3aXRoIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIG1hY2hpbmVyeSwKKyAgIHRoZSBkZXNjcmlwdG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIGFic3RyYWN0IHVzaW5nCisgICA6YXR0cjpgX19pc2Fic3RyYWN0bWV0aG9kX19gLiBJbiBnZW5lcmFsLCB0aGlzIGF0dHJpYnV0ZSBzaG91bGQgYmUgYGBUcnVlYGAKKyAgIGlmIGFueSBvZiB0aGUgbWV0aG9kcyB1c2VkIHRvIGNvbXBvc2UgdGhlIGRlc2NyaXB0b3IgYXJlIGFic3RyYWN0LiBGb3IKKyAgIGV4YW1wbGUsIFB5dGhvbidzIGJ1aWx0LWluIHByb3BlcnR5IGRvZXMgdGhlIGVxdWl2YWxlbnQgb2Y6OgorCisgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgIC4uLgorICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgIGRlZiBfX2lzYWJzdHJhY3RtZXRob2RfXyhzZWxmKToKKyAgICAgICAgICAgICAgcmV0dXJuIGFueShnZXRhdHRyKGYsICdfX2lzYWJzdHJhY3RtZXRob2RfXycsIEZhbHNlKSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICBmIGluIChzZWxmLl9mZ2V0LCBzZWxmLl9mc2V0LCBzZWxmLl9mZGVsKSkKIAogICAgLi4gbm90ZTo6CiAKQEAgLTE3NCw2ICsyMTYsOCBAQAogICAgICAgICAgICAgICAuLi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgVXNlIDpjbGFzczpgY2xhc3NtZXRob2RgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgogCiAKIC4uIGRlY29yYXRvcjo6IGFic3RyYWN0c3RhdGljbWV0aG9kKGZ1bmN0aW9uKQpAQCAtMTg5LDE4ICsyMzMsMTkgQEAKICAgICAgICAgICAgICAgLi4uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgIFVzZSA6Y2xhc3M6YHN0YXRpY21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCiAKIAotLi4gZnVuY3Rpb246OiBhYnN0cmFjdHByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKQorLi4gZGVjb3JhdG9yOjogYWJzdHJhY3Rwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKIAogICAgQSBzdWJjbGFzcyBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByb3BlcnR5YCwgaW5kaWNhdGluZyBhbiBhYnN0cmFjdCBwcm9wZXJ0eS4KIAotICAgVXNpbmcgdGhpcyBmdW5jdGlvbiByZXF1aXJlcyB0aGF0IHRoZSBjbGFzcydzIG1ldGFjbGFzcyBpcyA6Y2xhc3M6YEFCQ01ldGFgIG9yCi0gICBpcyBkZXJpdmVkIGZyb20gaXQuCi0gICBBIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YEFCQ01ldGFgIGNhbm5vdCBiZQotICAgaW5zdGFudGlhdGVkIHVubGVzcyBhbGwgb2YgaXRzIGFic3RyYWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgYXJlIG92ZXJyaWRkZW4uCi0gICBUaGUgYWJzdHJhY3QgcHJvcGVydGllcyBjYW4gYmUgY2FsbGVkIHVzaW5nIGFueSBvZiB0aGUgbm9ybWFsCi0gICAnc3VwZXInIGNhbGwgbWVjaGFuaXNtcy4KKyAgIFVzaW5nIHRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYAorICAgb3IgaXMgZGVyaXZlZCBmcm9tIGl0LiBBIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbQorICAgOmNsYXNzOmBBQkNNZXRhYCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIHVubGVzcyBhbGwgb2YgaXRzIGFic3RyYWN0IG1ldGhvZHMKKyAgIGFuZCBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLiBUaGUgYWJzdHJhY3QgcHJvcGVydGllcyBjYW4gYmUgY2FsbGVkIHVzaW5nCisgICBhbnkgb2YgdGhlIG5vcm1hbCAnc3VwZXInIGNhbGwgbWVjaGFuaXNtcy4KIAogICAgVXNhZ2U6OgogCkBAIC0yMTcsNiArMjYyLDkgQEAKICAgICAgICAgICBkZWYgc2V0eChzZWxmLCB2YWx1ZSk6IC4uLgogICAgICAgICAgIHggPSBhYnN0cmFjdHByb3BlcnR5KGdldHgsIHNldHgpCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICBVc2UgOmNsYXNzOmBwcm9wZXJ0eWAgd2l0aCA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIGluc3RlYWQKKwogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdCBiL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QKaW5kZXggNzVkMTM3Yy4uYzkyODQ5NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0CkBAIC01LDggKzUsOSBAQAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgc3VwcG9ydCBkYXRhIGNvbXByZXNzaW9uIHdpdGggdGhlIHpsaWIsCi1nemlwLCBhbmQgYnppcDIgYWxnb3JpdGhtcywgYW5kICB0aGUgY3JlYXRpb24gb2YgWklQLSBhbmQgdGFyLWZvcm1hdCBhcmNoaXZlcy4KLVNlZSBhbHNvIDpyZWY6YGFyY2hpdmluZy1vcGVyYXRpb25zYCBwcm92aWRlZCBieSB0aGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUuCitnemlwLCBiemlwMiBhbmQgbHptYSBhbGdvcml0aG1zLCBhbmQgdGhlIGNyZWF0aW9uIG9mIFpJUC0gYW5kIHRhci1mb3JtYXQKK2FyY2hpdmVzLiAgU2VlIGFsc28gOnJlZjpgYXJjaGl2aW5nLW9wZXJhdGlvbnNgIHByb3ZpZGVkIGJ5IHRoZSA6bW9kOmBzaHV0aWxgCittb2R1bGUuCiAKIAogLi4gdG9jdHJlZTo6CkBAIC0xNCw1ICsxNSw2IEBACiAgICB6bGliLnJzdAogICAgZ3ppcC5yc3QKICAgIGJ6Mi5yc3QKKyAgIGx6bWEucnN0CiAgICB6aXBmaWxlLnJzdAogICAgdGFyZmlsZS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAppbmRleCA1MjczZTliLi45ZjZhMWVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CkBAIC0zNzEsMTYgKzM3MSwxNiBAQAogXl5eXl5eXl5eXl5eXl5eCiAKIDpjbGFzczpgQXJndW1lbnRQYXJzZXJgIG9iamVjdHMgYWxsb3cgdGhlIGhlbHAgZm9ybWF0dGluZyB0byBiZSBjdXN0b21pemVkIGJ5Ci1zcGVjaWZ5aW5nIGFuIGFsdGVybmF0ZSBmb3JtYXR0aW5nIGNsYXNzLiAgQ3VycmVudGx5LCB0aGVyZSBhcmUgdGhyZWUgc3VjaAorc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgZm9ybWF0dGluZyBjbGFzcy4gIEN1cnJlbnRseSwgdGhlcmUgYXJlIGZvdXIgc3VjaAogY2xhc3NlczoKIAogLi4gY2xhc3M6OiBSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIKICAgICAgICAgICAgUmF3VGV4dEhlbHBGb3JtYXR0ZXIKICAgICAgICAgICAgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXIKKyAgICAgICAgICAgTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyCiAKLVRoZSBmaXJzdCB0d28gYWxsb3cgbW9yZSBjb250cm9sIG92ZXIgaG93IHRleHR1YWwgZGVzY3JpcHRpb25zIGFyZSBkaXNwbGF5ZWQsCi13aGlsZSB0aGUgbGFzdCBhdXRvbWF0aWNhbGx5IGFkZHMgaW5mb3JtYXRpb24gYWJvdXQgYXJndW1lbnQgZGVmYXVsdCB2YWx1ZXMuCi0KKzpjbGFzczpgUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyYCBhbmQgOmNsYXNzOmBSYXdUZXh0SGVscEZvcm1hdHRlcmAgZ2l2ZQorbW9yZSBjb250cm9sIG92ZXIgaG93IHRleHR1YWwgZGVzY3JpcHRpb25zIGFyZSBkaXNwbGF5ZWQuCiBCeSBkZWZhdWx0LCA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3RzIGxpbmUtd3JhcCB0aGUgZGVzY3JpcHRpb25fIGFuZAogZXBpbG9nXyB0ZXh0cyBpbiBjb21tYW5kLWxpbmUgaGVscCBtZXNzYWdlczo6CiAKQEAgLTQzMyw4ICs0MzMsOCBAQAogOmNsYXNzOmBSYXdUZXh0SGVscEZvcm1hdHRlcmAgbWFpbnRhaW5zIHdoaXRlc3BhY2UgZm9yIGFsbCBzb3J0cyBvZiBoZWxwIHRleHQsCiBpbmNsdWRpbmcgYXJndW1lbnQgZGVzY3JpcHRpb25zLgogCi1UaGUgb3RoZXIgZm9ybWF0dGVyIGNsYXNzIGF2YWlsYWJsZSwgOmNsYXNzOmBBcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcmAsCi13aWxsIGFkZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBhcmd1bWVudHM6OgorOmNsYXNzOmBBcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcmAgYXV0b21hdGljYWxseSBhZGRzIGluZm9ybWF0aW9uIGFib3V0CitkZWZhdWx0IHZhbHVlcyB0byBlYWNoIG9mIHRoZSBhcmd1bWVudCBoZWxwIG1lc3NhZ2VzOjoKIAogICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAogICAgLi4uICAgICBwcm9nPSdQUk9HJywKQEAgLTQ1MSw2ICs0NTEsMjUgQEAKICAgICAtaCwgLS1oZWxwICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CiAgICAgLS1mb28gRk9PICAgRk9PISAoZGVmYXVsdDogNDIpCiAKKzpjbGFzczpgTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyYCB1c2VzIHRoZSBuYW1lIG9mIHRoZSB0eXBlXyBhcmd1bWVudCBmb3IgZWFjaAorYXJndW1lbnQgYXMgdGhlIGRpc3BsYXkgbmFtZSBmb3IgaXRzIHZhbHVlcyAocmF0aGVyIHRoYW4gdXNpbmcgdGhlIGRlc3RfCithcyB0aGUgcmVndWxhciBmb3JtYXR0ZXIgZG9lcyk6OgorCisgICA+Pj4gcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAuLi4gICAgIHByb2c9J1BST0cnLAorICAgLi4uICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuTWV0YXZhclR5cGVIZWxwRm9ybWF0dGVyKQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZm9vJywgdHlwZT1pbnQpCisgICA+Pj4gcGFyc2VyLmFkZF9hcmd1bWVudCgnYmFyJywgdHlwZT1mbG9hdCkKKyAgID4+PiBwYXJzZXIucHJpbnRfaGVscCgpCisgICB1c2FnZTogUFJPRyBbLWhdIFstLWZvbyBpbnRdIGZsb2F0CisKKyAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICBmbG9hdAorCisgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgIC1oLCAtLWhlbHAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgLS1mb28gaW50CisKIAogY29uZmxpY3RfaGFuZGxlcgogXl5eXl5eXl5eXl5eXl5eXgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXJyYXkucnN0IGIvRG9jL2xpYnJhcnkvYXJyYXkucnN0CmluZGV4IGQ1NjNjY2UuLjhmNjk0M2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FycmF5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hcnJheS5yc3QKQEAgLTE0LDM2ICsxNCw1NCBAQAogOmRmbjpgdHlwZSBjb2RlYCwgd2hpY2ggaXMgYSBzaW5nbGUgY2hhcmFjdGVyLiAgVGhlIGZvbGxvd2luZyB0eXBlIGNvZGVzIGFyZQogZGVmaW5lZDoKIAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgVHlwZSBjb2RlIHwgQyBUeXBlICAgICAgICAgfCBQeXRob24gVHlwZSAgICAgICB8IE1pbmltdW0gc2l6ZSBpbiBieXRlcyB8Ci0rPT09PT09PT09PT0rPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09KwotfCBgYCdiJ2BgICAgfCBzaWduZWQgY2hhciAgICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0InYGAgICB8IHVuc2lnbmVkIGNoYXIgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAndSdgYCAgIHwgUHlfVU5JQ09ERSAgICAgfCBVbmljb2RlIGNoYXJhY3RlciB8IDIgKHNlZSBub3RlKSAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdoJ2BgICAgfCBzaWduZWQgc2hvcnQgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0gnYGAgICB8IHVuc2lnbmVkIHNob3J0IHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnaSdgYCAgIHwgc2lnbmVkIGludCAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdJJ2BgICAgfCB1bnNpZ25lZCBpbnQgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2wnYGAgICB8IHNpZ25lZCBsb25nICAgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnTCdgYCAgIHwgdW5zaWduZWQgbG9uZyAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdmJ2BgICAgfCBmbG9hdCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2QnYGAgICB8IGRvdWJsZSAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IFR5cGUgY29kZSB8IEMgVHlwZSAgICAgICAgICAgICB8IFB5dGhvbiBUeXBlICAgICAgIHwgTWluaW11bSBzaXplIGluIGJ5dGVzIHwgTm90ZXMgfAorKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAnYidgYCAgIHwgc2lnbmVkIGNoYXIgICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdCJ2BgICAgfCB1bnNpZ25lZCBjaGFyICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3UnYGAgICB8IFB5X1VOSUNPREUgICAgICAgICB8IFVuaWNvZGUgY2hhcmFjdGVyIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnaCdgYCAgIHwgc2lnbmVkIHNob3J0ICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdIJ2BgICAgfCB1bnNpZ25lZCBzaG9ydCAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2knYGAgICB8IHNpZ25lZCBpbnQgICAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnSSdgYCAgIHwgdW5zaWduZWQgaW50ICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdsJ2BgICAgfCBzaWduZWQgbG9uZyAgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0wnYGAgICB8IHVuc2lnbmVkIGxvbmcgICAgICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAncSdgYCAgIHwgc2lnbmVkIGxvbmcgbG9uZyAgIHwgaW50ICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdRJ2BgICAgfCB1bnNpZ25lZCBsb25nIGxvbmcgfCBpbnQgICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2YnYGAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZCdgYCAgIHwgZG91YmxlICAgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCi0uLiBub3RlOjoKK05vdGVzOgogCi0gICBUaGUgYGAndSdgYCB0eXBlY29kZSBjb3JyZXNwb25kcyB0byBQeXRob24ncyB1bmljb2RlIGNoYXJhY3Rlci4gIE9uIG5hcnJvdwotICAgVW5pY29kZSBidWlsZHMgdGhpcyBpcyAyLWJ5dGVzLCBvbiB3aWRlIGJ1aWxkcyB0aGlzIGlzIDQtYnl0ZXMuCisoMSkKKyAgIFRoZSBgYCd1J2BgIHR5cGUgY29kZSBjb3JyZXNwb25kcyB0byBQeXRob24ncyBvYnNvbGV0ZSB1bmljb2RlIGNoYXJhY3RlcgorICAgKDpjOnR5cGU6YFB5X1VOSUNPREVgIHdoaWNoIGlzIDpjOnR5cGU6YHdjaGFyX3RgKS4gRGVwZW5kaW5nIG9uIHRoZQorICAgcGxhdGZvcm0sIGl0IGNhbiBiZSAxNiBiaXRzIG9yIDMyIGJpdHMuCisKKyAgIGBgJ3UnYGAgd2lsbCBiZSByZW1vdmVkIHRvZ2V0aGVyIHdpdGggdGhlIHJlc3Qgb2YgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgCisgICBBUEkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKworKDIpCisgICBUaGUgYGAncSdgYCBhbmQgYGAnUSdgYCB0eXBlIGNvZGVzIGFyZSBhdmFpbGFibGUgb25seSBpZgorICAgdGhlIHBsYXRmb3JtIEMgY29tcGlsZXIgdXNlZCB0byBidWlsZCBQeXRob24gc3VwcG9ydHMgQyA6Yzp0eXBlOmBsb25nIGxvbmdgLAorICAgb3IsIG9uIFdpbmRvd3MsIDpjOnR5cGU6YF9faW50NjRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogVGhlIGFjdHVhbCByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbWFjaGluZSBhcmNoaXRlY3R1cmUKIChzdHJpY3RseSBzcGVha2luZywgYnkgdGhlIEMgaW1wbGVtZW50YXRpb24pLiAgVGhlIGFjdHVhbCBzaXplIGNhbiBiZSBhY2Nlc3NlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN0LnJzdCBiL0RvYy9saWJyYXJ5L2FzdC5yc3QKaW5kZXggZTJjMGI2ZC4uMTZkZTNjYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3QucnN0CkBAIC05Niw5ICs5Niw2IEBACiBBYnN0cmFjdCBHcmFtbWFyCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVRoZSBtb2R1bGUgZGVmaW5lcyBhIHN0cmluZyBjb25zdGFudCBgYF9fdmVyc2lvbl9fYGAgd2hpY2ggaXMgdGhlIGRlY2ltYWwKLVN1YnZlcnNpb24gcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBmaWxlIHNob3duIGJlbG93LgotCiBUaGUgYWJzdHJhY3QgZ3JhbW1hciBpcyBjdXJyZW50bHkgZGVmaW5lZCBhcyBmb2xsb3dzOgogCiAuLiBsaXRlcmFsaW5jbHVkZTo6IC4uLy4uL1BhcnNlci9QeXRob24uYXNkbApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CmluZGV4IDc1YjNjZGEuLjU1YzYxZDcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKQEAgLTE5Nyw2ICsxOTcsOSBAQAogbWFyc2hhbGxlZCwgYWZ0ZXIgc2V0dGluZyB0aGUgY2hhbm5lbCB0ZXJtaW5hdG9yIHRvIGBgTm9uZWBgIHRvIGVuc3VyZSB0aGF0CiBhbnkgZXh0cmFuZW91cyBkYXRhIHNlbnQgYnkgdGhlIHdlYiBjbGllbnQgYXJlIGlnbm9yZWQuIDo6CiAKKworICAgaW1wb3J0IGFzeW5jaGF0CisKICAgIGNsYXNzIGh0dHBfcmVxdWVzdF9oYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgogCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2ssIGFkZHIsIHNlc3Npb25zLCBsb2cpOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CmluZGV4IDYxOWI3YmIuLjdjYWNjYTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKQEAgLTE4NCwxMiArMTg0LDE1IEBACiAgICBNb3N0IG9mIHRoZXNlIGFyZSBuZWFybHkgaWRlbnRpY2FsIHRvIHRoZWlyIHNvY2tldCBwYXJ0bmVycy4KIAogCi0gICAuLiBtZXRob2Q6OiBjcmVhdGVfc29ja2V0KGZhbWlseSwgdHlwZSkKKyAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9zb2NrZXQoZmFtaWx5PXNvY2tldC5BRl9JTkVULCB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSkKIAogICAgICAgVGhpcyBpcyBpZGVudGljYWwgdG8gdGhlIGNyZWF0aW9uIG9mIGEgbm9ybWFsIHNvY2tldCwgYW5kIHdpbGwgdXNlIHRoZQogICAgICAgc2FtZSBvcHRpb25zIGZvciBjcmVhdGlvbi4gIFJlZmVyIHRvIHRoZSA6bW9kOmBzb2NrZXRgIGRvY3VtZW50YXRpb24gZm9yCiAgICAgICBpbmZvcm1hdGlvbiBvbiBjcmVhdGluZyBzb2NrZXRzLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgKmZhbWlseSogYW5kICp0eXBlKiBhcmd1bWVudHMgY2FuIGJlIG9taXR0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogY29ubmVjdChhZGRyZXNzKQogCkBAIC0yNzQsMTMgKzI3NywxMyBAQAogSGVyZSBpcyBhIHZlcnkgYmFzaWMgSFRUUCBjbGllbnQgdGhhdCB1c2VzIHRoZSA6Y2xhc3M6YGRpc3BhdGNoZXJgIGNsYXNzIHRvCiBpbXBsZW1lbnQgaXRzIHNvY2tldCBoYW5kbGluZzo6CiAKLSAgIGltcG9ydCBhc3luY29yZSwgc29ja2V0CisgICBpbXBvcnQgYXN5bmNvcmUKIAogICAgY2xhc3MgSFRUUENsaWVudChhc3luY29yZS5kaXNwYXRjaGVyKToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwYXRoKToKICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KCkKICAgICAgICAgICAgc2VsZi5jb25uZWN0KCAoaG9zdCwgODApICkKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBieXRlcygnR0VUICVzIEhUVFAvMS4wXHJcbkhvc3Q6ICVzXHJcblxyXG4nICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGF0aCwgaG9zdCksICdhc2NpaScpCkBAIC0zMTQsNyArMzE3LDYgQEAKIGNvbm5lY3Rpb25zIGFuZCBkaXNwYXRjaGVzIHRoZSBpbmNvbWluZyBjb25uZWN0aW9ucyB0byBhIGhhbmRsZXI6OgogCiAgICAgaW1wb3J0IGFzeW5jb3JlCi0gICAgaW1wb3J0IHNvY2tldAogCiAgICAgY2xhc3MgRWNob0hhbmRsZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcl93aXRoX3NlbmQpOgogCkBAIC0zMjcsNyArMzI5LDcgQEAKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCk6CiAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKICAgICAgICAgICAgIHNlbGYuYmluZCgoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQpAQCAtMzM4LDQgKzM0MCwzIEBACiAKICAgICBzZXJ2ZXIgPSBFY2hvU2VydmVyKCdsb2NhbGhvc3QnLCA4MDgwKQogICAgIGFzeW5jb3JlLmxvb3AoKQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hdGV4aXQucnN0IGIvRG9jL2xpYnJhcnkvYXRleGl0LnJzdAppbmRleCA3Yzc2YmFiLi4yZTIyY2FiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKQEAgLTksMTMgKzksMTQgQEAKIAogVGhlIDptb2Q6YGF0ZXhpdGAgbW9kdWxlIGRlZmluZXMgZnVuY3Rpb25zIHRvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGNsZWFudXAKIGZ1bmN0aW9ucy4gIEZ1bmN0aW9ucyB0aHVzIHJlZ2lzdGVyZWQgYXJlIGF1dG9tYXRpY2FsbHkgZXhlY3V0ZWQgdXBvbiBub3JtYWwKLWludGVycHJldGVyIHRlcm1pbmF0aW9uLiAgVGhlIG9yZGVyIGluIHdoaWNoIHRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBpcyBub3QKLWRlZmluZWQ7IGlmIHlvdSBoYXZlIGNsZWFudXAgb3BlcmF0aW9ucyB0aGF0IGRlcGVuZCBvbiBlYWNoIG90aGVyLCB5b3Ugc2hvdWxkCi13cmFwIHRoZW0gaW4gYSBmdW5jdGlvbiBhbmQgcmVnaXN0ZXIgdGhhdCBvbmUuICBUaGlzIGtlZXBzIDptb2Q6YGF0ZXhpdGAgc2ltcGxlLgoraW50ZXJwcmV0ZXIgdGVybWluYXRpb24uICA6bW9kOmBhdGV4aXRgIHJ1bnMgdGhlc2UgZnVuY3Rpb25zIGluIHRoZSAqcmV2ZXJzZSoKK29yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSByZWdpc3RlcmVkOyBpZiB5b3UgcmVnaXN0ZXIgYGBBYGAsIGBgQmBgLCBhbmQgYGBDYGAsCithdCBpbnRlcnByZXRlciB0ZXJtaW5hdGlvbiB0aW1lIHRoZXkgd2lsbCBiZSBydW4gaW4gdGhlIG9yZGVyIGBgQ2BgLCBgYEJgYCwKK2BgQWBgLgogCi1Ob3RlOiB0aGUgZnVuY3Rpb25zIHJlZ2lzdGVyZWQgdmlhIHRoaXMgbW9kdWxlIGFyZSBub3QgY2FsbGVkIHdoZW4gdGhlIHByb2dyYW0KLWlzIGtpbGxlZCBieSBhIHNpZ25hbCBub3QgaGFuZGxlZCBieSBQeXRob24sIHdoZW4gYSBQeXRob24gZmF0YWwgaW50ZXJuYWwgZXJyb3IKLWlzIGRldGVjdGVkLCBvciB3aGVuIDpmdW5jOmBvcy5fZXhpdGAgaXMgY2FsbGVkLgorKipOb3RlOioqIFRoZSBmdW5jdGlvbnMgcmVnaXN0ZXJlZCB2aWEgdGhpcyBtb2R1bGUgYXJlIG5vdCBjYWxsZWQgd2hlbiB0aGUKK3Byb2dyYW0gaXMga2lsbGVkIGJ5IGEgc2lnbmFsIG5vdCBoYW5kbGVkIGJ5IFB5dGhvbiwgd2hlbiBhIFB5dGhvbiBmYXRhbAoraW50ZXJuYWwgZXJyb3IgaXMgZGV0ZWN0ZWQsIG9yIHdoZW4gOmZ1bmM6YG9zLl9leGl0YCBpcyBjYWxsZWQuCiAKIAogLi4gZnVuY3Rpb246OiByZWdpc3RlcihmdW5jLCAqYXJncywgKiprYXJncykKQEAgLTY3LDggKzY4LDkgQEAKIG1ha2luZyBhbiBleHBsaWNpdCBjYWxsIGludG8gdGhpcyBtb2R1bGUgYXQgdGVybWluYXRpb24uIDo6CiAKICAgIHRyeToKLSAgICAgICBfY291bnQgPSBpbnQob3BlbigiL3RtcC9jb3VudGVyIikucmVhZCgpKQotICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgd2l0aCBvcGVuKCIvdG1wL2NvdW50ZXIiKSBhcyBpbmZpbGU6CisgICAgICAgICAgIF9jb3VudCA9IGludChpbmZpbGUucmVhZCgpKQorICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgogICAgICAgIF9jb3VudCA9IDAKIAogICAgZGVmIGluY3Jjb3VudGVyKG4pOgpAQCAtNzYsNyArNzgsOCBAQAogICAgICAgIF9jb3VudCA9IF9jb3VudCArIG4KIAogICAgZGVmIHNhdmVjb3VudGVyKCk6Ci0gICAgICAgb3BlbigiL3RtcC9jb3VudGVyIiwgInciKS53cml0ZSgiJWQiICUgX2NvdW50KQorICAgICAgIHdpdGggb3BlbigiL3RtcC9jb3VudGVyIiwgInciKSBhcyBvdXRmaWxlOgorICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIlZCIgJSBfY291bnQpCiAKICAgIGltcG9ydCBhdGV4aXQKICAgIGF0ZXhpdC5yZWdpc3RlcihzYXZlY291bnRlcikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QgYi9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CmluZGV4IGMwOGRmMTUuLmFkZTBmMDcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdApAQCAtMTgsOSArMTgsMTQgQEAKIAogVGhlcmUgYXJlIHR3byBpbnRlcmZhY2VzIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlLiAgVGhlIG1vZGVybiBpbnRlcmZhY2UKIHN1cHBvcnRzIGVuY29kaW5nIGFuZCBkZWNvZGluZyBBU0NJSSBieXRlIHN0cmluZyBvYmplY3RzIHVzaW5nIGFsbCB0aHJlZQotYWxwaGFiZXRzLiAgVGhlIGxlZ2FjeSBpbnRlcmZhY2UgcHJvdmlkZXMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB0byBhbmQgZnJvbQotZmlsZS1saWtlIG9iamVjdHMgYXMgd2VsbCBhcyBieXRlIHN0cmluZ3MsIGJ1dCBvbmx5IHVzaW5nIHRoZSBCYXNlNjQgc3RhbmRhcmQKLWFscGhhYmV0LgorYWxwaGFiZXRzLiBBZGRpdGlvbmFsbHksIHRoZSBkZWNvZGluZyBmdW5jdGlvbnMgb2YgdGhlIG1vZGVybiBpbnRlcmZhY2UgYWxzbworYWNjZXB0IFVuaWNvZGUgc3RyaW5ncyBjb250YWluaW5nIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4gVGhlIGxlZ2FjeSBpbnRlcmZhY2UKK3Byb3ZpZGVzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdG8gYW5kIGZyb20gZmlsZS1saWtlIG9iamVjdHMgYXMgd2VsbCBhcworYnl0ZSBzdHJpbmdzLCBidXQgb25seSB1c2luZyB0aGUgQmFzZTY0IHN0YW5kYXJkIGFscGhhYmV0LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQVNDSUktb25seSBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdyBhY2NlcHRlZCBieSB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mCisgICB0aGUgbW9kZXJuIGludGVyZmFjZS4KIAogVGhlIG1vZGVybiBpbnRlcmZhY2UgcHJvdmlkZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFyeS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hcnkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZmJkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9iaW5hcnkucnN0CkBAIC0wLDAgKzEsMjMgQEAKKy4uIF9iaW5hcnlzZXJ2aWNlczoKKworKioqKioqKioqKioqKioqKioqKioKK0JpbmFyeSBEYXRhIFNlcnZpY2VzCisqKioqKioqKioqKioqKioqKioqKgorCitUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgc29tZSBiYXNpYyBzZXJ2aWNlcyBvcGVyYXRpb25zCitmb3IgbWFuaXB1bGF0aW9uIG9mIGJpbmFyeSBkYXRhLiBPdGhlciBvcGVyYXRpb25zIG9uIGJpbmFyeSBkYXRhLCBzcGVjaWZpY2FsbHkKK2luIHJlbGF0aW9uIHRvIGZpbGUgZm9ybWF0cyBhbmQgbmV0d29yayBwcm90b2NvbHMsIGFyZSBkZXNjcmliZWQgaW4gdGhlCityZWxldmFudCBzZWN0aW9ucy4KKworU29tZSBsaWJyYXJpZXMgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YHRleHRzZXJ2aWNlc2AgYWxzbyB3b3JrIHdpdGggZWl0aGVyCitBU0NJSS1jb21wYXRpYmxlIGJpbmFyeSBmb3JtYXRzIChmb3IgZXhhbXBsZSwgOm1vZDpgcmVgKSBvciBhbGwgYmluYXJ5IGRhdGEKKyhmb3IgZXhhbXBsZSwgOm1vZDpgZGlmZmxpYmApLgorCitJbiBhZGRpdGlvbiwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBQeXRob24ncyBidWlsdC1pbiBiaW5hcnkgZGF0YSB0eXBlcyBpbgorOnJlZjpgYmluYXJ5c2VxYC4KKworLi4gdG9jdHJlZTo6CisKKyAgIHN0cnVjdC5yc3QKKyAgIGNvZGVjcy5yc3QKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CmluZGV4IDJhYTM3MDIuLmJhZjQzMGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKQEAgLTIwLDggKzIwLDEzIEBACiAKIC4uIG5vdGU6OgogCi0gICBFbmNvZGluZyBhbmQgZGVjb2RpbmcgZnVuY3Rpb25zIGRvIG5vdCBhY2NlcHQgVW5pY29kZSBzdHJpbmdzLiAgT25seSBieXRlc3RyaW5nCi0gICBhbmQgYnl0ZWFycmF5IG9iamVjdHMgY2FuIGJlIHByb2Nlc3NlZC4KKyAgIGBgYTJiXypgYCBmdW5jdGlvbnMgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncyBjb250YWluaW5nIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4KKyAgIE90aGVyIGZ1bmN0aW9ucyBvbmx5IGFjY2VwdCBieXRlcyBhbmQgYnl0ZXMtY29tcGF0aWJsZSBvYmplY3RzIChzdWNoIGFzCisgICBieXRlYXJyYXkgb2JqZWN0cyBhbmQgb3RoZXIgb2JqZWN0cyBpbXBsZW1lbnRpbmcgdGhlIGJ1ZmZlciBBUEkpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQVNDSUktb25seSB1bmljb2RlIHN0cmluZ3MgYXJlIG5vdyBhY2NlcHRlZCBieSB0aGUgYGBhMmJfKmBgIGZ1bmN0aW9ucy4KKwogCiBUaGUgOm1vZDpgYmluYXNjaWlgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iejIucnN0IGIvRG9jL2xpYnJhcnkvYnoyLnJzdAppbmRleCA5MzE0NGI2Li5kMDZhMzlhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iejIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKQEAgLTEsMjAxICsxLDIwMiBAQAotOm1vZDpgYnoyYCAtLS0gQ29tcHJlc3Npb24gY29tcGF0aWJsZSB3aXRoIDpwcm9ncmFtOmBiemlwMmAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6bW9kOmBiejJgIC0tLSBTdXBwb3J0IGZvciA6cHJvZ3JhbTpgYnppcDJgIGNvbXByZXNzaW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIG1vZHVsZTo6IGJ6MgotICAgOnN5bm9wc2lzOiBJbnRlcmZhY2UgdG8gY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gcm91dGluZXMKLSAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIGJ6aXAyLgorICAgOnN5bm9wc2lzOiBJbnRlcmZhY2VzIGZvciBiemlwMiBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbi4KIC4uIG1vZHVsZWF1dGhvcjo6IEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+CisuLiBtb2R1bGVhdXRob3I6OiBOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogR3VzdGF2byBOaWVtZXllciA8bmllbWV5ZXJAY29uZWN0aXZhLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+CiAKIAotVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIGludGVyZmFjZSBmb3IgdGhlIGJ6MiBjb21wcmVzc2lvbiBsaWJyYXJ5LgotSXQgaW1wbGVtZW50cyBhIGNvbXBsZXRlIGZpbGUgaW50ZXJmYWNlLCBvbmUtc2hvdCAoZGUpY29tcHJlc3Npb24gZnVuY3Rpb25zLCBhbmQKLXR5cGVzIGZvciBzZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbi4KK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yIGNvbXByZXNzaW5nIGFuZAorZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nIHRoZSBiemlwMiBjb21wcmVzc2lvbiBhbGdvcml0aG0uCiAKLUhlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZSBmZWF0dXJlcyBvZmZlcmVkIGJ5IHRoZSBiejIgbW9kdWxlOgorVGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGNvbnRhaW5zOgogCi0qIDpjbGFzczpgQloyRmlsZWAgY2xhc3MgaW1wbGVtZW50cyBhIGNvbXBsZXRlIGZpbGUgaW50ZXJmYWNlLCBpbmNsdWRpbmcKLSAgOm1ldGg6YH5CWjJGaWxlLnJlYWRsaW5lYCwgOm1ldGg6YH5CWjJGaWxlLnJlYWRsaW5lc2AsCi0gIDptZXRoOmB+QloyRmlsZS53cml0ZWxpbmVzYCwgOm1ldGg6YH5CWjJGaWxlLnNlZWtgLCBldGM7CisqIFRoZSA6ZnVuYzpgLm9wZW5gIGZ1bmN0aW9uIGFuZCA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGZvciByZWFkaW5nIGFuZAorICB3cml0aW5nIGNvbXByZXNzZWQgZmlsZXMuCisqIFRoZSA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGFuZCA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgY2xhc3NlcyBmb3IKKyAgaW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uLgorKiBUaGUgOmZ1bmM6YGNvbXByZXNzYCBhbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9ucyBmb3Igb25lLXNob3QKKyAgKGRlKWNvbXByZXNzaW9uLgogCi0qIDpjbGFzczpgQloyRmlsZWAgY2xhc3MgaW1wbGVtZW50cyBlbXVsYXRlZCA6bWV0aDpgfkJaMkZpbGUuc2Vla2Agc3VwcG9ydDsKLQotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgdW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydDsKLQotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIG9mZmVycyBhbiBvcHRpbWl6ZWQgbGluZSBpdGVyYXRpb24gdXNpbmcgYSByZWFkYWhlYWQKLSAgYWxnb3JpdGhtOwotCi0qIFNlcXVlbnRpYWwgKGRlKWNvbXByZXNzaW9uIHN1cHBvcnRlZCBieSA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGFuZAotICA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgY2xhc3NlczsKLQotKiBPbmUtc2hvdCAoZGUpY29tcHJlc3Npb24gc3VwcG9ydGVkIGJ5IDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYAotICBmdW5jdGlvbnM7Ci0KLSogVGhyZWFkIHNhZmV0eSB1c2VzIGluZGl2aWR1YWwgbG9ja2luZyBtZWNoYW5pc20uCitBbGwgb2YgdGhlIGNsYXNzZXMgaW4gdGhpcyBtb2R1bGUgbWF5IHNhZmVseSBiZSBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCiAKIAogKERlKWNvbXByZXNzaW9uIG9mIGZpbGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotSGFuZGxpbmcgb2YgY29tcHJlc3NlZCBmaWxlcyBpcyBvZmZlcmVkIGJ5IHRoZSA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzLgorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGVuYW1lLCBtb2RlPSdyJywgY29tcHJlc3NsZXZlbD05LCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBBcyB3aXRoIHRoZSBjb25zdHJ1Y3RvciBmb3IgOmNsYXNzOmBCWjJGaWxlYCwgdGhlICpmaWxlbmFtZSogYXJndW1lbnQgY2FuIGJlCisgICBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIG9yIGFuIGV4aXN0aW5nCisgICBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCdyJ2BgLCBgYCdyYidgYCwgYGAndydgYCwgYGAnd2InYGAsCisgICBgYCdhJ2BgLCBvciBgYCdhYidgYCBmb3IgYmluYXJ5IG1vZGUsIG9yIGBgJ3J0J2BgLCBgYCd3dCdgYCwgb3IgYGAnYXQnYGAgZm9yCisgICB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGlzIGBgJ3JiJ2BgLgorCisgICBUaGUgKmNvbXByZXNzbGV2ZWwqIGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZnJvbSAxIHRvIDksIGFzIGZvciB0aGUKKyAgIDpjbGFzczpgQloyRmlsZWAgY29uc3RydWN0b3IuCisKKyAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSA6Y2xhc3M6YEJaMkZpbGVgCisgICBjb25zdHJ1Y3RvcjogYGBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpYGAuIEluCisgICB0aGlzIGNhc2UsIHRoZSAqZW5jb2RpbmcqLCAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cyBtdXN0IG5vdCBiZQorICAgcHJvdmlkZWQuCisKKyAgIEZvciB0ZXh0IG1vZGUsIGEgOmNsYXNzOmBCWjJGaWxlYCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvcgorICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gaW5kZXg6OgotICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IGJ6Mi5CWjJGaWxlIGNsYXNzCisuLiBjbGFzczo6IEJaMkZpbGUoZmlsZW5hbWUsIG1vZGU9J3InLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KQogCi0uLiBjbGFzczo6IEJaMkZpbGUoZmlsZW5hbWUsIG1vZGU9J3InLCBidWZmZXJpbmc9MCwgY29tcHJlc3NsZXZlbD05KQorICAgT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KIAotICAgT3BlbiBhIGJ6MiBmaWxlLiBNb2RlIGNhbiBiZSBlaXRoZXIgYGAncidgYCBvciBgYCd3J2BgLCBmb3IgcmVhZGluZyAoZGVmYXVsdCkKLSAgIG9yIHdyaXRpbmcuIFdoZW4gb3BlbmVkIGZvciB3cml0aW5nLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndAotICAgZXhpc3QsIGFuZCB0cnVuY2F0ZWQgb3RoZXJ3aXNlLiBJZiAqYnVmZmVyaW5nKiBpcyBnaXZlbiwgYGAwYGAgbWVhbnMKLSAgIHVuYnVmZmVyZWQsIGFuZCBsYXJnZXIgbnVtYmVycyBzcGVjaWZ5IHRoZSBidWZmZXIgc2l6ZTsgdGhlIGRlZmF1bHQgaXMKLSAgIGBgMGBgLiBJZiAqY29tcHJlc3NsZXZlbCogaXMgZ2l2ZW4sIGl0IG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQKLSAgIGBgOWBgOyB0aGUgZGVmYXVsdCBpcyBgYDlgYC4gQWRkIGEgYGAnVSdgYCB0byBtb2RlIHRvIG9wZW4gdGhlIGZpbGUgZm9yIGlucHV0Ci0gICBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlLiAgQW55IGxpbmUgZW5kaW5nIGluIHRoZSBpbnB1dCBmaWxlIHdpbGwgYmUKLSAgIHNlZW4gYXMgYSBgYCdcbidgYCBpbiBQeXRob24uICBBbHNvLCBhIGZpbGUgc28gb3BlbmVkIGdhaW5zIHRoZSBhdHRyaWJ1dGUKLSAgIDphdHRyOmBuZXdsaW5lc2A7IHRoZSB2YWx1ZSBmb3IgdGhpcyBhdHRyaWJ1dGUgaXMgb25lIG9mIGBgTm9uZWBgIChubyBuZXdsaW5lCi0gICByZWFkIHlldCksIGBgJ1xyJ2BgLCBgYCdcbidgYCwgYGAnXHJcbidgYCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZQotICAgbmV3bGluZSB0eXBlcyBzZWVuLiBVbml2ZXJzYWwgbmV3bGluZXMgYXJlIGF2YWlsYWJsZSBvbmx5IHdoZW4KLSAgIHJlYWRpbmcuIEluc3RhbmNlcyBzdXBwb3J0IGl0ZXJhdGlvbiBpbiB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIDpjbGFzczpgZmlsZWAKLSAgIGluc3RhbmNlcy4KKyAgIElmICpmaWxlbmFtZSogaXMgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LCBvcGVuIHRoZSBuYW1lZCBmaWxlCisgICBkaXJlY3RseS4gT3RoZXJ3aXNlLCAqZmlsZW5hbWUqIHNob3VsZCBiZSBhIDp0ZXJtOmBmaWxlIG9iamVjdGAsIHdoaWNoIHdpbGwKKyAgIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgogCi0gICA6Y2xhc3M6YEJaMkZpbGVgIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LgorICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGBgJ3InYGAgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCBgYCd3J2BgIGZvcgorICAgb3ZlcndyaXRpbmcsIG9yIGBgJ2EnYGAgZm9yIGFwcGVuZGluZy4gVGhlc2UgY2FuIGVxdWl2YWxlbnRseSBiZSBnaXZlbiBhcworICAgYGAncmInYGAsIGBgJ3diJ2BgLCBhbmQgYGAnYWInYGAgcmVzcGVjdGl2ZWx5LgorCisgICBJZiAqZmlsZW5hbWUqIGlzIGEgZmlsZSBvYmplY3QgKHJhdGhlciB0aGFuIGFuIGFjdHVhbCBmaWxlIG5hbWUpLCBhIG1vZGUgb2YKKyAgIGBgJ3cnYGAgZG9lcyBub3QgdHJ1bmNhdGUgdGhlIGZpbGUsIGFuZCBpcyBpbnN0ZWFkIGVxdWl2YWxlbnQgdG8gYGAnYSdgYC4KKworICAgVGhlICpidWZmZXJpbmcqIGFyZ3VtZW50IGlzIGlnbm9yZWQuIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4KKworICAgSWYgKm1vZGUqIGlzIGBgJ3cnYGAgb3IgYGAnYSdgYCwgKmNvbXByZXNzbGV2ZWwqIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuCisgICBgYDFgYCBhbmQgYGA5YGAgc3BlY2lmeWluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb246IGBgMWBgIHByb2R1Y2VzIHRoZQorICAgbGVhc3QgY29tcHJlc3Npb24sIGFuZCBgYDlgYCAoZGVmYXVsdCkgcHJvZHVjZXMgdGhlIG1vc3QgY29tcHJlc3Npb24uCisKKyAgIElmICptb2RlKiBpcyBgYCdyJ2BgLCB0aGUgaW5wdXQgZmlsZSBtYXkgYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUKKyAgIGNvbXByZXNzZWQgc3RyZWFtcy4KKworICAgOmNsYXNzOmBCWjJGaWxlYCBwcm92aWRlcyBhbGwgb2YgdGhlIG1lbWJlcnMgc3BlY2lmaWVkIGJ5IHRoZQorICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAsIGV4Y2VwdCBmb3IgOm1ldGg6YGRldGFjaGAgYW5kIDptZXRoOmB0cnVuY2F0ZWAuCisgICBJdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGFyZSBzdXBwb3J0ZWQuCisKKyAgIDpjbGFzczpgQloyRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKKworICAgLi4gbWV0aG9kOjogcGVlayhbbl0pCisKKyAgICAgIFJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLiBBdCBsZWFzdCBvbmUKKyAgICAgIGJ5dGUgb2YgZGF0YSB3aWxsIGJlIHJldHVybmVkICh1bmxlc3MgYXQgRU9GKS4gVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcworICAgICAgcmV0dXJuZWQgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIDptZXRoOmBmaWxlbm9gLCA6bWV0aDpgcmVhZGFibGVgLCA6bWV0aDpgc2Vla2FibGVgLCA6bWV0aDpgd3JpdGFibGVgLAorICAgICAgOm1ldGg6YHJlYWQxYCBhbmQgOm1ldGg6YHJlYWRpbnRvYCBtZXRob2RzIHdlcmUgYWRkZWQuCiAKLSAgIC4uIG5vdGU6OgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgd2FzIGFkZGVkIGZvciAqZmlsZW5hbWUqIGJlaW5nIGEgOnRlcm06YGZpbGUgb2JqZWN0YCBpbnN0ZWFkIG9mIGFuCisgICAgICBhY3R1YWwgZmlsZW5hbWUuCiAKLSAgICAgIFRoaXMgY2xhc3MgZG9lcyBub3Qgc3VwcG9ydCBpbnB1dCBmaWxlcyBjb250YWluaW5nIG11bHRpcGxlIHN0cmVhbXMgKHN1Y2gKLSAgICAgIGFzIHRob3NlIHByb2R1Y2VkIGJ5IHRoZSA6cHJvZ3JhbTpgcGJ6aXAyYCB0b29sKS4gV2hlbiByZWFkaW5nIHN1Y2ggYW4KLSAgICAgIGlucHV0IGZpbGUsIG9ubHkgdGhlIGZpcnN0IHN0cmVhbSB3aWxsIGJlIGFjY2Vzc2libGUuIElmIHlvdSByZXF1aXJlCi0gICAgICBzdXBwb3J0IGZvciBtdWx0aS1zdHJlYW0gZmlsZXMsIGNvbnNpZGVyIHVzaW5nIHRoZSB0aGlyZC1wYXJ0eQotICAgICAgOm1vZDpgYnoyZmlsZWAgbW9kdWxlIChhdmFpbGFibGUgZnJvbQotICAgICAgYFB5UEkgPGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9iejJmaWxlPmBfKS4gVGhpcyBtb2R1bGUgcHJvdmlkZXMgYQotICAgICAgYmFja3BvcnQgb2YgUHl0aG9uIDMuMydzIDpjbGFzczpgQloyRmlsZWAgY2xhc3MsIHdoaWNoIGRvZXMgc3VwcG9ydAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYCdhJ2BgIChhcHBlbmQpIG1vZGUgd2FzIGFkZGVkLCBhbG9uZyB3aXRoIHN1cHBvcnQgZm9yIHJlYWRpbmcKICAgICAgIG11bHRpLXN0cmVhbSBmaWxlcy4KIAogCi0gICAuLiBtZXRob2Q6OiBjbG9zZSgpCi0KLSAgICAgIENsb3NlIHRoZSBmaWxlLiBTZXRzIGRhdGEgYXR0cmlidXRlIDphdHRyOmBjbG9zZWRgIHRvIHRydWUuIEEgY2xvc2VkIGZpbGUKLSAgICAgIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiA6bWV0aDpgY2xvc2VgIG1heSBiZSBjYWxsZWQKLSAgICAgIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCi0KLQotICAgLi4gbWV0aG9kOjogcmVhZChbc2l6ZV0pCi0KLSAgICAgIFJlYWQgYXQgbW9zdCAqc2l6ZSogdW5jb21wcmVzc2VkIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGUgc3RyaW5nLiBJZiB0aGUKLSAgICAgICpzaXplKiBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgotCi0KLSAgIC4uIG1ldGhvZDo6IHJlYWRsaW5lKFtzaXplXSkKLQotICAgICAgUmV0dXJuIHRoZSBuZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBieXRlIHN0cmluZywgcmV0YWluaW5nIG5ld2xpbmUuCi0gICAgICBBIG5vbi1uZWdhdGl2ZSAqc2l6ZSogYXJndW1lbnQgbGltaXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0bwotICAgICAgcmV0dXJuIChhbiBpbmNvbXBsZXRlIGxpbmUgbWF5IGJlIHJldHVybmVkIHRoZW4pLiBSZXR1cm4gYW4gZW1wdHkgYnl0ZQotICAgICAgc3RyaW5nIGF0IEVPRi4KLQotCi0gICAuLiBtZXRob2Q6OiByZWFkbGluZXMoW3NpemVdKQotCi0gICAgICBSZXR1cm4gYSBsaXN0IG9mIGxpbmVzIHJlYWQuIFRoZSBvcHRpb25hbCAqc2l6ZSogYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbgotICAgICAgYXBwcm94aW1hdGUgYm91bmQgb24gdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBpbiB0aGUgbGluZXMgcmV0dXJuZWQuCi0KLQotICAgLi4gbWV0aG9kOjogc2VlayhvZmZzZXRbLCB3aGVuY2VdKQotCi0gICAgICBNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uLiBBcmd1bWVudCAqb2Zmc2V0KiBpcyBhIGJ5dGUgY291bnQuIE9wdGlvbmFsCi0gICAgICBhcmd1bWVudCAqd2hlbmNlKiBkZWZhdWx0cyB0byBgYG9zLlNFRUtfU0VUYGAgb3IgYGAwYGAgKG9mZnNldCBmcm9tIHN0YXJ0Ci0gICAgICBvZiBmaWxlOyBvZmZzZXQgc2hvdWxkIGJlIGBgPj0gMGBgKTsgb3RoZXIgdmFsdWVzIGFyZSBgYG9zLlNFRUtfQ1VSYGAgb3IKLSAgICAgIGBgMWBgIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb247IG9mZnNldCBjYW4gYmUgcG9zaXRpdmUgb3IKLSAgICAgIG5lZ2F0aXZlKSwgYW5kIGBgb3MuU0VFS19FTkRgYCBvciBgYDJgYCAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZTsKLSAgICAgIG9mZnNldCBpcyB1c3VhbGx5IG5lZ2F0aXZlLCBhbHRob3VnaCBtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZAotICAgICAgdGhlIGVuZCBvZiBhIGZpbGUpLgotCi0gICAgICBOb3RlIHRoYXQgc2Vla2luZyBvZiBiejIgZmlsZXMgaXMgZW11bGF0ZWQsIGFuZCBkZXBlbmRpbmcgb24gdGhlCi0gICAgICBwYXJhbWV0ZXJzIHRoZSBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LgotCi0KLSAgIC4uIG1ldGhvZDo6IHRlbGwoKQotCi0gICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYW4gaW50ZWdlci4KLQotCi0gICAuLiBtZXRob2Q6OiB3cml0ZShkYXRhKQotCi0gICAgICBXcml0ZSB0aGUgYnl0ZSBzdHJpbmcgKmRhdGEqIHRvIGZpbGUuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLAotICAgICAgOm1ldGg6YGNsb3NlYCBtYXkgYmUgbmVlZGVkIGJlZm9yZSB0aGUgZmlsZSBvbiBkaXNrIHJlZmxlY3RzIHRoZSBkYXRhCi0gICAgICB3cml0dGVuLgotCi0KLSAgIC4uIG1ldGhvZDo6IHdyaXRlbGluZXMoc2VxdWVuY2Vfb2ZfYnl0ZV9zdHJpbmdzKQotCi0gICAgICBXcml0ZSB0aGUgc2VxdWVuY2Ugb2YgYnl0ZSBzdHJpbmdzIHRvIHRoZSBmaWxlLiBOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdAotICAgICAgYWRkZWQuIFRoZSBzZXF1ZW5jZSBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdCBwcm9kdWNpbmcgYnl0ZSBzdHJpbmdzLgotICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgd3JpdGUoKSBmb3IgZWFjaCBieXRlIHN0cmluZy4KLQotCi1TZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU2VxdWVudGlhbCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBpcyBkb25lIHVzaW5nIHRoZSBjbGFzc2VzCi06Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGFuZCA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAuCi0KK0luY3JlbWVudGFsIChkZSljb21wcmVzc2lvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsPTkpCiAKICAgIENyZWF0ZSBhIG5ldyBjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gY29tcHJlc3MgZGF0YQotICAgc2VxdWVudGlhbGx5LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlCi0gICA6ZnVuYzpgY29tcHJlc3NgIGZ1bmN0aW9uIGluc3RlYWQuIFRoZSAqY29tcHJlc3NsZXZlbCogcGFyYW1ldGVyLCBpZiBnaXZlbiwKLSAgIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGA7IHRoZSBkZWZhdWx0IGlzIGBgOWBgLgorICAgaW5jcmVtZW50YWxseS4gRm9yIG9uZS1zaG90IGNvbXByZXNzaW9uLCB1c2UgdGhlIDpmdW5jOmBjb21wcmVzc2AgZnVuY3Rpb24KKyAgIGluc3RlYWQuCisKKyAgICpjb21wcmVzc2xldmVsKiwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGAuIFRoZQorICAgZGVmYXVsdCBpcyBgYDlgYC4KIAogICAgLi4gbWV0aG9kOjogY29tcHJlc3MoZGF0YSkKIAotICAgICAgUHJvdmlkZSBtb3JlIGRhdGEgdG8gdGhlIGNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3Mgb2YKLSAgICAgIGNvbXByZXNzZWQgZGF0YSB3aGVuZXZlciBwb3NzaWJsZS4gV2hlbiB5b3UndmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8KLSAgICAgIGNvbXByZXNzLCBjYWxsIHRoZSA6bWV0aDpgZmx1c2hgIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MsCi0gICAgICBhbmQgcmV0dXJuIHdoYXQgaXMgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLgorICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mIGNvbXByZXNzZWQgZGF0YQorICAgICAgaWYgcG9zc2libGUsIG9yIGFuIGVtcHR5IGJ5dGUgc3RyaW5nIG90aGVyd2lzZS4KKworICAgICAgV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0byB0aGUgY29tcHJlc3NvciwgY2FsbCB0aGUKKyAgICAgIDptZXRoOmBmbHVzaGAgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4KIAogCiAgICAuLiBtZXRob2Q6OiBmbHVzaCgpCiAKLSAgICAgIEZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcyBhbmQgcmV0dXJuIHdoYXQgaXMgbGVmdCBpbiBpbnRlcm5hbAotICAgICAgYnVmZmVycy4gWW91IG11c3Qgbm90IHVzZSB0aGUgY29tcHJlc3NvciBvYmplY3QgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZC4KKyAgICAgIEZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gUmV0dXJucyB0aGUgY29tcHJlc3NlZCBkYXRhIGxlZnQgaW4KKyAgICAgIGludGVybmFsIGJ1ZmZlcnMuCisKKyAgICAgIFRoZSBjb21wcmVzc29yIG9iamVjdCBtYXkgbm90IGJlIHVzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgogCiAKIC4uIGNsYXNzOjogQloyRGVjb21wcmVzc29yKCkKIAogICAgQ3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGRlY29tcHJlc3MgZGF0YQotICAgc2VxdWVudGlhbGx5LiBJZiB5b3Ugd2FudCB0byBkZWNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QsIHVzZSB0aGUKLSAgIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbiBpbnN0ZWFkLgorICAgaW5jcmVtZW50YWxseS4gRm9yIG9uZS1zaG90IGNvbXByZXNzaW9uLCB1c2UgdGhlIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbgorICAgaW5zdGVhZC4KKworICAgLi4gbm90ZTo6CisgICAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHRyYW5zcGFyZW50bHkgaGFuZGxlIGlucHV0cyBjb250YWluaW5nIG11bHRpcGxlCisgICAgICBjb21wcmVzc2VkIHN0cmVhbXMsIHVubGlrZSA6ZnVuYzpgZGVjb21wcmVzc2AgYW5kIDpjbGFzczpgQloyRmlsZWAuIElmCisgICAgICB5b3UgbmVlZCB0byBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLAorICAgICAgeW91IG11c3QgdXNlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCiAKICAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKIAotICAgICAgUHJvdmlkZSBtb3JlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rcyBvZgotICAgICAgZGVjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIElmIHlvdSB0cnkgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyCi0gICAgICB0aGUgZW5kIG9mIHN0cmVhbSBpcyBmb3VuZCwgOmV4YzpgRU9GRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBJZiBhbnkgZGF0YQotICAgICAgd2FzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtLCBpdCdsbCBiZSBpZ25vcmVkIGFuZCBzYXZlZCBpbgotICAgICAgOmF0dHI6YHVudXNlZF9kYXRhYCBhdHRyaWJ1dGUuCisgICAgICBQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQKKyAgICAgIGRhdGEgaWYgcG9zc2libGUsIG9yIGFuIGVtcHR5IGJ5dGUgc3RyaW5nIG90aGVyd2lzZS4KKworICAgICAgQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzdHJlYW0gaXMKKyAgICAgIHJlYWNoZWQgcmFpc2VzIGFuIDpleGM6YEVPRkVycm9yYC4gSWYgYW55IGRhdGEgaXMgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZgorICAgICAgdGhlIHN0cmVhbSwgaXQgaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGVvZgorCisgICAgICBUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisgICAuLiBhdHRyaWJ1dGU6OiB1bnVzZWRfZGF0YQorCisgICAgICBEYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLgorCisgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGhhcyBiZWVuCisgICAgICByZWFjaGVkLCBpdHMgdmFsdWUgd2lsbCBiZSBgYGInJ2BgLgogCiAKIE9uZS1zaG90IChkZSljb21wcmVzc2lvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU9uZS1zaG90IGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIGlzIHByb3ZpZGVkIHRocm91Z2ggdGhlIDpmdW5jOmBjb21wcmVzc2AKLWFuZCA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb25zLgotCi0KIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCi0gICBDb21wcmVzcyAqZGF0YSogaW4gb25lIHNob3QuIElmIHlvdSB3YW50IHRvIGNvbXByZXNzIGRhdGEgc2VxdWVudGlhbGx5LCB1c2UKLSAgIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgQloyQ29tcHJlc3NvcmAgaW5zdGVhZC4gVGhlICpjb21wcmVzc2xldmVsKiBwYXJhbWV0ZXIsCi0gICBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIGBgMWBgIGFuZCBgYDlgYDsgdGhlIGRlZmF1bHQgaXMgYGA5YGAuCisgICBDb21wcmVzcyAqZGF0YSouCisKKyAgICpjb21wcmVzc2xldmVsKiwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGAuIFRoZQorICAgZGVmYXVsdCBpcyBgYDlgYC4KKworICAgRm9yIGluY3JlbWVudGFsIGNvbXByZXNzaW9uLCB1c2UgYSA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEpCiAKLSAgIERlY29tcHJlc3MgKmRhdGEqIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBkZWNvbXByZXNzIGRhdGEgc2VxdWVudGlhbGx5LAotICAgdXNlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCBpbnN0ZWFkLgorICAgRGVjb21wcmVzcyAqZGF0YSouCisKKyAgIElmICpkYXRhKiBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMsIGRlY29tcHJlc3MKKyAgIGFsbCBvZiB0aGUgc3RyZWFtcy4KKworICAgRm9yIGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24sIHVzZSBhIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgbXVsdGktc3RyZWFtIGlucHV0cyB3YXMgYWRkZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NodW5rLnJzdCBiL0RvYy9saWJyYXJ5L2NodW5rLnJzdAppbmRleCBkMzU1OGE0Li5jMWJhNDk3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jaHVuay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY2h1bmsucnN0CkBAIC04NCw4ICs4NCw5IEBACiAgICAgICBDbG9zZSBhbmQgc2tpcCB0byB0aGUgZW5kIG9mIHRoZSBjaHVuay4gIFRoaXMgZG9lcyBub3QgY2xvc2UgdGhlCiAgICAgICB1bmRlcmx5aW5nIGZpbGUuCiAKLSAgIFRoZSByZW1haW5pbmcgbWV0aG9kcyB3aWxsIHJhaXNlIDpleGM6YElPRXJyb3JgIGlmIGNhbGxlZCBhZnRlciB0aGUKLSAgIDptZXRoOmBjbG9zZWAgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKyAgIFRoZSByZW1haW5pbmcgbWV0aG9kcyB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIGNhbGxlZCBhZnRlciB0aGUKKyAgIDptZXRoOmBjbG9zZWAgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gIEJlZm9yZSBQeXRob24gMy4zLCB0aGV5IHVzZWQgdG8KKyAgIHJhaXNlIDpleGM6YElPRXJyb3JgLCBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogICAgLi4gbWV0aG9kOjogaXNhdHR5KCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NtZC5yc3QgYi9Eb2MvbGlicmFyeS9jbWQucnN0CmluZGV4IDk0M2MwNGEuLjk3MjI5MjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NtZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY21kLnJzdApAQCAtMjg1LDggKzI4NSw4IEBACiAgICAgICAgIGRlZiBkb19wbGF5YmFjayhzZWxmLCBhcmcpOgogICAgICAgICAgICAgJ1BsYXliYWNrIGNvbW1hbmRzIGZyb20gYSBmaWxlOiAgUExBWUJBQ0sgcm9zZS5jbWQnCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKLSAgICAgICAgICAgIGNtZHMgPSBvcGVuKGFyZykucmVhZCgpLnNwbGl0bGluZXMoKQotICAgICAgICAgICAgc2VsZi5jbWRxdWV1ZS5leHRlbmQoY21kcykKKyAgICAgICAgICAgIHdpdGggb3BlbihhcmcpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5jbWRxdWV1ZS5leHRlbmQoZi5yZWFkKCkuc3BsaXRsaW5lcygpKQogICAgICAgICBkZWYgcHJlY21kKHNlbGYsIGxpbmUpOgogICAgICAgICAgICAgbGluZSA9IGxpbmUubG93ZXIoKQogICAgICAgICAgICAgaWYgc2VsZi5maWxlIGFuZCAncGxheWJhY2snIG5vdCBpbiBsaW5lOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggNzYyYmI5OC4uMDcxZmMyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC00NTgsNyArNDU4LDggQEAKIAogICAgLi4gbWV0aG9kOjogcmVzZXQoKQogCi0gICAgICBSZXNldCB0aGUgZW5jb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4KKyAgICAgIFJlc2V0IHRoZSBlbmNvZGVyIHRvIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgb3V0cHV0IGlzIGRpc2NhcmRlZDogY2FsbAorICAgICAgYGAuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKWBgIHRvIHJlc2V0IHRoZSBlbmNvZGVyIGFuZCB0byBnZXQgdGhlIG91dHB1dC4KIAogCiAuLiBtZXRob2Q6OiBJbmNyZW1lbnRhbEVuY29kZXIuZ2V0c3RhdGUoKQpAQCAtNzg2LDExICs3ODcsOSBAQAogRW5jb2RpbmdzIGFuZCBVbmljb2RlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU3RyaW5ncyBhcmUgc3RvcmVkIGludGVybmFsbHkgYXMgc2VxdWVuY2VzIG9mIGNvZGVwb2ludHMgKHRvIGJlIHByZWNpc2UKLWFzIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFycmF5cykuIERlcGVuZGluZyBvbiB0aGUgd2F5IFB5dGhvbiBpcyBjb21waWxlZCAoZWl0aGVyCi12aWEgYGAtLXdpdGhvdXQtd2lkZS11bmljb2RlYGAgb3IgYGAtLXdpdGgtd2lkZS11bmljb2RlYGAsIHdpdGggdGhlCi1mb3JtZXIgYmVpbmcgdGhlIGRlZmF1bHQpIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgZGF0YQotdHlwZS4gT25jZSBhIHN0cmluZyBvYmplY3QgaXMgdXNlZCBvdXRzaWRlIG9mIENQVSBhbmQgbWVtb3J5LCBDUFUgZW5kaWFubmVzcworU3RyaW5ncyBhcmUgc3RvcmVkIGludGVybmFsbHkgYXMgc2VxdWVuY2VzIG9mIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGAwIC0gMTBGRkZGYGAKKyhzZWUgOnBlcDpgMzkzYCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBpbXBsZW1lbnRhdGlvbikuCitPbmNlIGEgc3RyaW5nIG9iamVjdCBpcyB1c2VkIG91dHNpZGUgb2YgQ1BVIGFuZCBtZW1vcnksIENQVSBlbmRpYW5uZXNzCiBhbmQgaG93IHRoZXNlIGFycmF5cyBhcmUgc3RvcmVkIGFzIGJ5dGVzIGJlY29tZSBhbiBpc3N1ZS4gIFRyYW5zZm9ybWluZyBhCiBzdHJpbmcgb2JqZWN0IGludG8gYSBzZXF1ZW5jZSBvZiBieXRlcyBpcyBjYWxsZWQgZW5jb2RpbmcgYW5kIHJlY3JlYXRpbmcgdGhlCiBzdHJpbmcgb2JqZWN0IGZyb20gdGhlIHNlcXVlbmNlIG9mIGJ5dGVzIGlzIGtub3duIGFzIGRlY29kaW5nLiAgVGhlcmUgYXJlIG1hbnkKQEAgLTkwMSw2ICs5MDAsMTUgQEAKIGNhc2Ugb3IgdXNlIGEgaHlwaGVuIGluc3RlYWQgb2YgYW4gdW5kZXJzY29yZSBhcmUgYWxzbyB2YWxpZCBhbGlhc2VzOyB0aGVyZWZvcmUsCiBlLmcuIGBgJ3V0Zi04J2BgIGlzIGEgdmFsaWQgYWxpYXMgZm9yIHRoZSBgYCd1dGZfOCdgYCBjb2RlYy4KIAorLi4gaW1wbC1kZXRhaWw6OgorCisgICBTb21lIGNvbW1vbiBlbmNvZGluZ3MgY2FuIGJ5cGFzcyB0aGUgY29kZWNzIGxvb2t1cCBtYWNoaW5lcnkgdG8KKyAgIGltcHJvdmUgcGVyZm9ybWFuY2UuICBUaGVzZSBvcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGllcyBhcmUgb25seQorICAgcmVjb2duaXplZCBieSBDUHl0aG9uIGZvciBhIGxpbWl0ZWQgc2V0IG9mIGFsaWFzZXM6IHV0Zi04LCB1dGY4LAorICAgbGF0aW4tMSwgbGF0aW4xLCBpc28tODg1OS0xLCBtYmNzIChXaW5kb3dzIG9ubHkpLCBhc2NpaSwgdXRmLTE2LAorICAgYW5kIHV0Zi0zMi4gIFVzaW5nIGFsdGVybmF0aXZlIHNwZWxsaW5ncyBmb3IgdGhlc2UgZW5jb2RpbmdzIG1heQorICAgcmVzdWx0IGluIHNsb3dlciBleGVjdXRpb24uCisKIE1hbnkgb2YgdGhlIGNoYXJhY3RlciBzZXRzIHN1cHBvcnQgdGhlIHNhbWUgbGFuZ3VhZ2VzLiBUaGV5IHZhcnkgaW4gaW5kaXZpZHVhbAogY2hhcmFjdGVycyAoZS5nLiB3aGV0aGVyIHRoZSBFVVJPIFNJR04gaXMgc3VwcG9ydGVkIG9yIG5vdCksIGFuZCBpbiB0aGUKIGFzc2lnbm1lbnQgb2YgY2hhcmFjdGVycyB0byBjb2RlIHBvc2l0aW9ucy4gRm9yIHRoZSBFdXJvcGVhbiBsYW5ndWFnZXMgaW4KQEAgLTEwMDMsNiArMTAxMSwxMSBAQAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBjcDEyNTggICAgICAgICAgfCB3aW5kb3dzLTEyNTggICAgICAgICAgICAgICAgICAgfCBWaWV0bmFtZXNlICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBjcDY1MDAxICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IFdpbmRvd3MgVVRGLTggICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoYGBDUF9VVEY4YGApICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBldWNfanAgICAgICAgICAgfCBldWNqcCwgdWppcywgdS1qaXMgICAgICAgICAgICAgfCBKYXBhbmVzZSAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBldWNfamlzXzIwMDQgICAgfCBqaXN4MDIxMywgZXVjamlzMjAwNCAgICAgICAgICAgfCBKYXBhbmVzZSAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtMTE2MCw2ICsxMTczLDggQEAKIHwgdW5pY29kZV9pbnRlcm5hbCAgIHwgICAgICAgICB8IFJldHVybiB0aGUgaW50ZXJuYWwgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgcmVwcmVzZW50YXRpb24gb2YgdGhlICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBvcGVyYW5kICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgLi4gZGVwcmVjYXRlZDo6IDMuMyAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogVGhlIGZvbGxvd2luZyBjb2RlY3MgcHJvdmlkZSBieXRlcy10by1ieXRlcyBtYXBwaW5ncy4KQEAgLTEyNzIsMTIgKzEyODcsMTMgQEAKIC4uIG1vZHVsZTo6IGVuY29kaW5ncy5tYmNzCiAgICA6c3lub3BzaXM6IFdpbmRvd3MgQU5TSSBjb2RlcGFnZQogCi1FbmNvZGUgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlIEFOU0kgY29kZXBhZ2UgKENQX0FDUCkuIFRoaXMgY29kZWMgb25seQotc3VwcG9ydHMgYGAnc3RyaWN0J2BgIGFuZCBgYCdyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXJzIHRvIGVuY29kZSwgYW5kCi1gYCdzdHJpY3QnYGAgYW5kIGBgJ2lnbm9yZSdgYCBlcnJvciBoYW5kbGVycyB0byBkZWNvZGUuCitFbmNvZGUgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlIEFOU0kgY29kZXBhZ2UgKENQX0FDUCkuCiAKIEF2YWlsYWJpbGl0eTogV2luZG93cyBvbmx5LgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgU3VwcG9ydCBhbnkgZXJyb3IgaGFuZGxlci4KKwogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgIEJlZm9yZSAzLjIsIHRoZSAqZXJyb3JzKiBhcmd1bWVudCB3YXMgaWdub3JlZDsgYGAncmVwbGFjZSdgYCB3YXMgYWx3YXlzIHVzZWQKICAgIHRvIGVuY29kZSwgYW5kIGBgJ2lnbm9yZSdgYCB0byBkZWNvZGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODczNDg5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdApAQCAtMCwwICsxLDE4MiBAQAorOm1vZDpgY29sbGVjdGlvbnMuYWJjYCAtLS0gQWJzdHJhY3QgQmFzZSBDbGFzc2VzIGZvciBDb250YWluZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogY29sbGVjdGlvbnMuYWJjCisgICA6c3lub3BzaXM6IEFic3RyYWN0IGJhc2UgY2xhc3NlcyBmb3IgY29udGFpbmVycworLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBGb3JtZXJseSwgdGhpcyBtb2R1bGUgd2FzIHBhcnQgb2YgdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUuCisKKy4uIHRlc3RzZXR1cDo6ICoKKworICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgorICAgaW1wb3J0IGl0ZXJ0b29scworICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy9hYmMucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGFic3RyYWN0IGJhc2UgY2xhc3M+YCB0aGF0CitjYW4gYmUgdXNlZCB0byB0ZXN0IHdoZXRoZXIgYSBjbGFzcyBwcm92aWRlcyBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlOyBmb3IKK2V4YW1wbGUsIHdoZXRoZXIgaXQgaXMgaGFzaGFibGUgb3Igd2hldGhlciBpdCBpcyBhIG1hcHBpbmcuCisKKworLi4gX2NvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3NlczoKKworQ29sbGVjdGlvbnMgQWJzdHJhY3QgQmFzZSBDbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvbGxlY3Rpb25zIG1vZHVsZSBvZmZlcnMgdGhlIGZvbGxvd2luZyA6dGVybTpgQUJDcyA8YWJzdHJhY3QgYmFzZSBjbGFzcz5gOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0FCQyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRzIGZyb20gICAgICAgICAgQWJzdHJhY3QgTWV0aG9kcyAgICAgICAgTWl4aW4gTWV0aG9kcworPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAKKzpjbGFzczpgSGFzaGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2hhc2hfX2BgCis6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBJdGVyYXRvcmAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fbmV4dF9fYGAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCisKKzpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAorCis6Y2xhc3M6YE11dGFibGVTZXF1ZW5jZWAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAsICAgICAgICBgYGFwcGVuZGBgLCBgYHJldmVyc2VgYCwgYGBleHRlbmRgYCwgYGBwb3BgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbnNlcnRgYCAgICAgICAgICAgICAgYGByZW1vdmVgYCwgYGBjbGVhcmBgLCBhbmQgYGBfX2lhZGRfX2BgCisKKzpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCisKKzpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBhZGRgYCwgICAgICAgICAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYCAgICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faWFuZF9fYGAsIGBgX19peG9yX19gYCwgYW5kIGBgX19pc3ViX19gYAorCis6Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKworOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAgICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYGBzZXRkZWZhdWx0YGAKKworCis6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YEl0ZW1zVmlld2AgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBLZXlzVmlld2AgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgVmFsdWVzVmlld2AgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgCis9PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisuLiBjbGFzczo6IENvbnRhaW5lcgorICAgICAgICAgICBIYXNoYWJsZQorICAgICAgICAgICBTaXplZAorICAgICAgICAgICBDYWxsYWJsZQorCisgICBBQkNzIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSByZXNwZWN0aXZlbHkgdGhlIG1ldGhvZHMgOm1ldGg6YF9fY29udGFpbnNfX2AsCisgICA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19sZW5fX2AsIGFuZCA6bWV0aDpgX19jYWxsX19gLgorCisuLiBjbGFzczo6IEl0ZXJhYmxlCisKKyAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgorICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KKworLi4gY2xhc3M6OiBJdGVyYXRvcgorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIGFuZCA6bWV0aDpgbmV4dGAgbWV0aG9kcy4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYXRvcmAuCisKKy4uIGNsYXNzOjogU2VxdWVuY2UKKyAgICAgICAgICAgTXV0YWJsZVNlcXVlbmNlCisKKyAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgc2VxdWVuY2VzIDxzZXF1ZW5jZT5gLgorCisuLiBjbGFzczo6IFNldAorICAgICAgICAgICBNdXRhYmxlU2V0CisKKyAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSBzZXRzLgorCisuLiBjbGFzczo6IE1hcHBpbmcKKyAgICAgICAgICAgTXV0YWJsZU1hcHBpbmcKKworICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIDp0ZXJtOmBtYXBwaW5ncyA8bWFwcGluZz5gLgorCisuLiBjbGFzczo6IE1hcHBpbmdWaWV3CisgICAgICAgICAgIEl0ZW1zVmlldworICAgICAgICAgICBLZXlzVmlldworICAgICAgICAgICBWYWx1ZXNWaWV3CisKKyAgIEFCQ3MgZm9yIG1hcHBpbmcsIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8dmlldz5gLgorCisKK1RoZXNlIEFCQ3MgYWxsb3cgdXMgdG8gYXNrIGNsYXNzZXMgb3IgaW5zdGFuY2VzIGlmIHRoZXkgcHJvdmlkZQorcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZTo6CisKKyAgICBzaXplID0gTm9uZQorICAgIGlmIGlzaW5zdGFuY2UobXl2YXIsIGNvbGxlY3Rpb25zLlNpemVkKToKKyAgICAgICAgc2l6ZSA9IGxlbihteXZhcikKKworU2V2ZXJhbCBvZiB0aGUgQUJDcyBhcmUgYWxzbyB1c2VmdWwgYXMgbWl4aW5zIHRoYXQgbWFrZSBpdCBlYXNpZXIgdG8gZGV2ZWxvcAorY2xhc3NlcyBzdXBwb3J0aW5nIGNvbnRhaW5lciBBUElzLiAgRm9yIGV4YW1wbGUsIHRvIHdyaXRlIGEgY2xhc3Mgc3VwcG9ydGluZwordGhlIGZ1bGwgOmNsYXNzOmBTZXRgIEFQSSwgaXQgb25seSBuZWNlc3NhcnkgdG8gc3VwcGx5IHRoZSB0aHJlZSB1bmRlcmx5aW5nCithYnN0cmFjdCBtZXRob2RzOiA6bWV0aDpgX19jb250YWluc19fYCwgOm1ldGg6YF9faXRlcl9fYCwgYW5kIDptZXRoOmBfX2xlbl9fYC4KK1RoZSBBQkMgc3VwcGxpZXMgdGhlIHJlbWFpbmluZyBtZXRob2RzIHN1Y2ggYXMgOm1ldGg6YF9fYW5kX19gIGFuZAorOm1ldGg6YGlzZGlzam9pbnRgIDo6CisKKyAgICBjbGFzcyBMaXN0QmFzZWRTZXQoY29sbGVjdGlvbnMuU2V0KToKKyAgICAgICAgICcnJyBBbHRlcm5hdGUgc2V0IGltcGxlbWVudGF0aW9uIGZhdm9yaW5nIHNwYWNlIG92ZXIgc3BlZWQKKyAgICAgICAgICAgICBhbmQgbm90IHJlcXVpcmluZyB0aGUgc2V0IGVsZW1lbnRzIHRvIGJlIGhhc2hhYmxlLiAnJycKKyAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVyYWJsZSk6CisgICAgICAgICAgICAgc2VsZi5lbGVtZW50cyA9IGxzdCA9IFtdCisgICAgICAgICAgICAgZm9yIHZhbHVlIGluIGl0ZXJhYmxlOgorICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbHN0OgorICAgICAgICAgICAgICAgICAgICAgbHN0LmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLmVsZW1lbnRzKQorICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGluIHNlbGYuZWxlbWVudHMKKyAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5lbGVtZW50cykKKworICAgIHMxID0gTGlzdEJhc2VkU2V0KCdhYmNkZWYnKQorICAgIHMyID0gTGlzdEJhc2VkU2V0KCdkZWZnaGknKQorICAgIG92ZXJsYXAgPSBzMSAmIHMyICAgICAgICAgICAgIyBUaGUgX19hbmRfXygpIG1ldGhvZCBpcyBzdXBwb3J0ZWQgYXV0b21hdGljYWxseQorCitOb3RlcyBvbiB1c2luZyA6Y2xhc3M6YFNldGAgYW5kIDpjbGFzczpgTXV0YWJsZVNldGAgYXMgYSBtaXhpbjoKKworKDEpCisgICBTaW5jZSBzb21lIHNldCBvcGVyYXRpb25zIGNyZWF0ZSBuZXcgc2V0cywgdGhlIGRlZmF1bHQgbWl4aW4gbWV0aG9kcyBuZWVkCisgICBhIHdheSB0byBjcmVhdGUgbmV3IGluc3RhbmNlcyBmcm9tIGFuIGl0ZXJhYmxlLiBUaGUgY2xhc3MgY29uc3RydWN0b3IgaXMKKyAgIGFzc3VtZWQgdG8gaGF2ZSBhIHNpZ25hdHVyZSBpbiB0aGUgZm9ybSBgYENsYXNzTmFtZShpdGVyYWJsZSlgYC4KKyAgIFRoYXQgYXNzdW1wdGlvbiBpcyBmYWN0b3JlZC1vdXQgdG8gYW4gaW50ZXJuYWwgY2xhc3NtZXRob2QgY2FsbGVkCisgICA6bWV0aDpgX2Zyb21faXRlcmFibGVgIHdoaWNoIGNhbGxzIGBgY2xzKGl0ZXJhYmxlKWBgIHRvIHByb2R1Y2UgYSBuZXcgc2V0LgorICAgSWYgdGhlIDpjbGFzczpgU2V0YCBtaXhpbiBpcyBiZWluZyB1c2VkIGluIGEgY2xhc3Mgd2l0aCBhIGRpZmZlcmVudAorICAgY29uc3RydWN0b3Igc2lnbmF0dXJlLCB5b3Ugd2lsbCBuZWVkIHRvIG92ZXJyaWRlIDptZXRoOmBfZnJvbV9pdGVyYWJsZWAKKyAgIHdpdGggYSBjbGFzc21ldGhvZCB0aGF0IGNhbiBjb25zdHJ1Y3QgbmV3IGluc3RhbmNlcyBmcm9tCisgICBhbiBpdGVyYWJsZSBhcmd1bWVudC4KKworKDIpCisgICBUbyBvdmVycmlkZSB0aGUgY29tcGFyaXNvbnMgKHByZXN1bWFibHkgZm9yIHNwZWVkLCBhcyB0aGUKKyAgIHNlbWFudGljcyBhcmUgZml4ZWQpLCByZWRlZmluZSA6bWV0aDpgX19sZV9fYCBhbmQKKyAgIHRoZW4gdGhlIG90aGVyIG9wZXJhdGlvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBzdWl0LgorCisoMykKKyAgIFRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gcHJvdmlkZXMgYSA6bWV0aDpgX2hhc2hgIG1ldGhvZCB0byBjb21wdXRlIGEgaGFzaCB2YWx1ZQorICAgZm9yIHRoZSBzZXQ7IGhvd2V2ZXIsIDptZXRoOmBfX2hhc2hfX2AgaXMgbm90IGRlZmluZWQgYmVjYXVzZSBub3QgYWxsIHNldHMKKyAgIGFyZSBoYXNoYWJsZSBvciBpbW11dGFibGUuICBUbyBhZGQgc2V0IGhhc2hhYmlsdHkgdXNpbmcgbWl4aW5zLAorICAgaW5oZXJpdCBmcm9tIGJvdGggOm1ldGg6YFNldGAgYW5kIDptZXRoOmBIYXNoYWJsZWAsIHRoZW4gZGVmaW5lCisgICBgYF9faGFzaF9fID0gU2V0Ll9oYXNoYGAuCisKKy4uIHNlZWFsc286OgorCisgICAqIGBPcmRlcmVkU2V0IHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2Njk0Lz5gXyBmb3IgYW4KKyAgICAgZXhhbXBsZSBidWlsdCBvbiA6Y2xhc3M6YE11dGFibGVTZXRgLgorCisgICAqIEZvciBtb3JlIGFib3V0IEFCQ3MsIHNlZSB0aGUgOm1vZDpgYWJjYCBtb2R1bGUgYW5kIDpwZXA6YDMxMTlgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IDU3ZTA0ODEuLmRjNzZlYTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTIsMTcgKzIsMTcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiBjb2xsZWN0aW9ucwotICAgOnN5bm9wc2lzOiBDb250YWluZXIgZGF0YXR5cGVzCisgICAgOnN5bm9wc2lzOiBDb250YWluZXIgZGF0YXR5cGVzCiAuLiBtb2R1bGVhdXRob3I6OiBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uQHJjbi5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbkByY24uY29tPgogCiAuLiB0ZXN0c2V0dXA6OiAqCiAKLSAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICoKLSAgIGltcG9ydCBpdGVydG9vbHMKLSAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCAqCisgICAgaW1wb3J0IGl0ZXJ0b29scworICAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKIAotKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29sbGVjdGlvbnMucHlgIGFuZCA6c291cmNlOmBMaWIvX2FiY29sbC5weWAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5YAogCiAtLS0tLS0tLS0tLS0tLQogCkBAIC0yMyw2ICsyMyw3IEBACiA9PT09PT09PT09PT09PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOmZ1bmM6YG5hbWVkdHVwbGVgICAgICAgZmFjdG9yeSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgdHVwbGUgc3ViY2xhc3NlcyB3aXRoIG5hbWVkIGZpZWxkcwogOmNsYXNzOmBkZXF1ZWAgICAgICAgICAgbGlzdC1saWtlIGNvbnRhaW5lciB3aXRoIGZhc3QgYXBwZW5kcyBhbmQgcG9wcyBvbiBlaXRoZXIgZW5kCis6Y2xhc3M6YENoYWluTWFwYCAgICAgICBkaWN0LWxpa2UgY2xhc3MgZm9yIGNyZWF0aW5nIGEgc2luZ2xlIHZpZXcgb2YgbXVsdGlwbGUgbWFwcGluZ3MKIDpjbGFzczpgQ291bnRlcmAgICAgICAgIGRpY3Qgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIG9iamVjdHMKIDpjbGFzczpgT3JkZXJlZERpY3RgICAgIGRpY3Qgc3ViY2xhc3MgdGhhdCByZW1lbWJlcnMgdGhlIG9yZGVyIGVudHJpZXMgd2VyZSBhZGRlZAogOmNsYXNzOmBkZWZhdWx0ZGljdGAgICAgZGljdCBzdWJjbGFzcyB0aGF0IGNhbGxzIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBzdXBwbHkgbWlzc2luZyB2YWx1ZXMKQEAgLTMxLDEwICszMiwxNjcgQEAKIDpjbGFzczpgVXNlclN0cmluZ2AgICAgIHdyYXBwZXIgYXJvdW5kIHN0cmluZyBvYmplY3RzIGZvciBlYXNpZXIgc3RyaW5nIHN1YmNsYXNzaW5nCiA9PT09PT09PT09PT09PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1JbiBhZGRpdGlvbiB0byB0aGUgY29uY3JldGUgY29udGFpbmVyIGNsYXNzZXMsIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUgcHJvdmlkZXMKLTpyZWY6YGFic3RyYWN0IGJhc2UgY2xhc3NlcyA8Y29sbGVjdGlvbnMtYWJzdHJhY3QtYmFzZS1jbGFzc2VzPmAgdGhhdCBjYW4gYmUKLXVzZWQgdG8gdGVzdCB3aGV0aGVyIGEgY2xhc3MgcHJvdmlkZXMgYSBwYXJ0aWN1bGFyIGludGVyZmFjZSwgZm9yIGV4YW1wbGUsCi13aGV0aGVyIGl0IGlzIGhhc2hhYmxlIG9yIGEgbWFwcGluZy4KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgTW92ZWQgOnJlZjpgY29sbGVjdGlvbnMtYWJzdHJhY3QtYmFzZS1jbGFzc2VzYCB0byB0aGUgOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBtb2R1bGUuCisgICAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGV5IGNvbnRpbnVlIHRvIGJlIHZpc2libGUgaW4gdGhpcyBtb2R1bGUKKyAgICBhcyB3ZWxsLgorCisKKzpjbGFzczpgQ2hhaW5NYXBgIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK0EgOmNsYXNzOmBDaGFpbk1hcGAgY2xhc3MgaXMgcHJvdmlkZWQgZm9yIHF1aWNrbHkgbGlua2luZyBhIG51bWJlciBvZiBtYXBwaW5ncworc28gdGhleSBjYW4gYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSB1bml0LiAgSXQgaXMgb2Z0ZW4gbXVjaCBmYXN0ZXIgdGhhbiBjcmVhdGluZworYSBuZXcgZGljdGlvbmFyeSBhbmQgcnVubmluZyBtdWx0aXBsZSA6bWV0aDpgfmRpY3QudXBkYXRlYCBjYWxscy4KKworVGhlIGNsYXNzIGNhbiBiZSB1c2VkIHRvIHNpbXVsYXRlIG5lc3RlZCBzY29wZXMgYW5kIGlzIHVzZWZ1bCBpbiB0ZW1wbGF0aW5nLgorCisuLiBjbGFzczo6IENoYWluTWFwKCptYXBzKQorCisgICAgQSA6Y2xhc3M6YENoYWluTWFwYCBncm91cHMgbXVsdGlwbGUgZGljdHMgb3Igb3RoZXIgbWFwcGluZ3MgdG9nZXRoZXIgdG8KKyAgICBjcmVhdGUgYSBzaW5nbGUsIHVwZGF0ZWFibGUgdmlldy4gIElmIG5vICptYXBzKiBhcmUgc3BlY2lmaWVkLCBhIHNpbmdsZSBlbXB0eQorICAgIGRpY3Rpb25hcnkgaXMgcHJvdmlkZWQgc28gdGhhdCBhIG5ldyBjaGFpbiBhbHdheXMgaGFzIGF0IGxlYXN0IG9uZSBtYXBwaW5nLgorCisgICAgVGhlIHVuZGVybHlpbmcgbWFwcGluZ3MgYXJlIHN0b3JlZCBpbiBhIGxpc3QuICBUaGF0IGxpc3QgaXMgcHVibGljIGFuZCBjYW4KKyAgICBhY2Nlc3NlZCBvciB1cGRhdGVkIHVzaW5nIHRoZSAqbWFwcyogYXR0cmlidXRlLiAgVGhlcmUgaXMgbm8gb3RoZXIgc3RhdGUuCisKKyAgICBMb29rdXBzIHNlYXJjaCB0aGUgdW5kZXJseWluZyBtYXBwaW5ncyBzdWNjZXNzaXZlbHkgdW50aWwgYSBrZXkgaXMgZm91bmQuICBJbgorICAgIGNvbnRyYXN0LCB3cml0ZXMsIHVwZGF0ZXMsIGFuZCBkZWxldGlvbnMgb25seSBvcGVyYXRlIG9uIHRoZSBmaXJzdCBtYXBwaW5nLgorCisgICAgQSA6Y2xhc3M6YENoYWluTWFwYCBpbmNvcnBvcmF0ZXMgdGhlIHVuZGVybHlpbmcgbWFwcGluZ3MgYnkgcmVmZXJlbmNlLiAgU28sIGlmCisgICAgb25lIG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGdldHMgdXBkYXRlZCwgdGhvc2UgY2hhbmdlcyB3aWxsIGJlIHJlZmxlY3RlZAorICAgIGluIDpjbGFzczpgQ2hhaW5NYXBgLgorCisgICAgQWxsIG9mIHRoZSB1c3VhbCBkaWN0aW9uYXJ5IG1ldGhvZHMgYXJlIHN1cHBvcnRlZC4gIEluIGFkZGl0aW9uLCB0aGVyZSBpcyBhCisgICAgKm1hcHMqIGF0dHJpYnV0ZSwgYSBtZXRob2QgZm9yIGNyZWF0aW5nIG5ldyBzdWJjb250ZXh0cywgYW5kIGEgcHJvcGVydHkgZm9yCisgICAgYWNjZXNzaW5nIGFsbCBidXQgdGhlIGZpcnN0IG1hcHBpbmc6CisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtYXBzCisKKyAgICAgICAgQSB1c2VyIHVwZGF0ZWFibGUgbGlzdCBvZiBtYXBwaW5ncy4gIFRoZSBsaXN0IGlzIG9yZGVyZWQgZnJvbQorICAgICAgICBmaXJzdC1zZWFyY2hlZCB0byBsYXN0LXNlYXJjaGVkLiAgSXQgaXMgdGhlIG9ubHkgc3RvcmVkIHN0YXRlIGFuZCBjYW4KKyAgICAgICAgYmUgbW9kaWZpZWQgdG8gY2hhbmdlIHdoaWNoIG1hcHBpbmdzIGFyZSBzZWFyY2hlZC4gIFRoZSBsaXN0IHNob3VsZAorICAgICAgICBhbHdheXMgY29udGFpbiBhdCBsZWFzdCBvbmUgbWFwcGluZy4KKworICAgIC4uIG1ldGhvZDo6IG5ld19jaGlsZCgpCisKKyAgICAgICAgUmV0dXJucyBhIG5ldyA6Y2xhc3M6YENoYWluTWFwYCBjb250YWluaW5nIGEgbmV3IDpjbGFzczpgZGljdGAgZm9sbG93ZWQgYnkKKyAgICAgICAgYWxsIG9mIHRoZSBtYXBzIGluIHRoZSBjdXJyZW50IGluc3RhbmNlLiAgQSBjYWxsIHRvIGBgZC5uZXdfY2hpbGQoKWBgIGlzCisgICAgICAgIGVxdWl2YWxlbnQgdG86IGBgQ2hhaW5NYXAoe30sICpkLm1hcHMpYGAuICBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvcgorICAgICAgICBjcmVhdGluZyBzdWJjb250ZXh0cyB0aGF0IGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgYWx0ZXJpbmcgdmFsdWVzIGluIGFueQorICAgICAgICBvZiB0aGUgcGFyZW50IG1hcHBpbmdzLgorCisgICAgLi4gYXR0cmlidXRlOjogcGFyZW50cworCisgICAgICAgIFByb3BlcnR5IHJldHVybmluZyBhIG5ldyA6Y2xhc3M6YENoYWluTWFwYCBjb250YWluaW5nIGFsbCBvZiB0aGUgbWFwcyBpbgorICAgICAgICB0aGUgY3VycmVudCBpbnN0YW5jZSBleGNlcHQgdGhlIGZpcnN0IG9uZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBza2lwcGluZworICAgICAgICB0aGUgZmlyc3QgbWFwIGluIHRoZSBzZWFyY2guICBVc2UgY2FzZXMgYXJlIHNpbWlsYXIgdG8gdGhvc2UgZm9yIHRoZQorICAgICAgICA6a2V5d29yZDpgbm9ubG9jYWxgIGtleXdvcmQgdXNlZCBpbiA6dGVybTpgbmVzdGVkIHNjb3BlcyA8bmVzdGVkCisgICAgICAgIHNjb3BlPmAuICBUaGUgdXNlIGNhc2VzIGFsc28gcGFyYWxsZWwgdGhvc2UgZm9yIHRoZSBidWlsdC1pbgorICAgICAgICA6ZnVuYzpgc3VwZXJgIGZ1bmN0aW9uLiAgQSByZWZlcmVuY2UgdG8gYGBkLnBhcmVudHNgYCBpcyBlcXVpdmFsZW50IHRvOgorICAgICAgICBgYENoYWluTWFwKCpkLm1hcHNbMTpdKWBgLgorCisKKy4uIHNlZWFsc286OgorCisgICAgKiBUaGUgYE11bHRpQ29udGV4dCBjbGFzcworICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9lbnRob3VnaHQvY29kZXRvb2xzL2Jsb2IvNC4wLjAvY29kZXRvb2xzL2NvbnRleHRzL211bHRpX2NvbnRleHQucHk+YF8KKyAgICAgIGluIHRoZSBFbnRob3VnaHQgYENvZGVUb29scyBwYWNrYWdlCisgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL2VudGhvdWdodC9jb2RldG9vbHM+YF8gaGFzIG9wdGlvbnMgdG8gc3VwcG9ydAorICAgICAgd3JpdGluZyB0byBhbnkgbWFwcGluZyBpbiB0aGUgY2hhaW4uCisKKyAgICAqIERqYW5nbydzIGBDb250ZXh0IGNsYXNzCisgICAgICA8aHR0cDovL2NvZGUuZGphbmdvcHJvamVjdC5jb20vYnJvd3Nlci9kamFuZ28vdHJ1bmsvZGphbmdvL3RlbXBsYXRlL2NvbnRleHQucHk+YF8KKyAgICAgIGZvciB0ZW1wbGF0aW5nIGlzIGEgcmVhZC1vbmx5IGNoYWluIG9mIG1hcHBpbmdzLiAgSXQgYWxzbyBmZWF0dXJlcworICAgICAgcHVzaGluZyBhbmQgcG9wcGluZyBvZiBjb250ZXh0cyBzaW1pbGFyIHRvIHRoZQorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcC5uZXdfY2hpbGRgIG1ldGhvZCBhbmQgdGhlCisgICAgICA6bWV0aDpgfmNvbGxlY3Rpb25zLkNoYWluTWFwLnBhcmVudHNgIHByb3BlcnR5LgorCisgICAgKiBUaGUgYE5lc3RlZCBDb250ZXh0cyByZWNpcGUKKyAgICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc0MzQvPmBfIGhhcyBvcHRpb25zIHRvIGNvbnRyb2wKKyAgICAgIHdoZXRoZXIgd3JpdGVzIGFuZCBvdGhlciBtdXRhdGlvbnMgYXBwbHkgb25seSB0byB0aGUgZmlyc3QgbWFwcGluZyBvciB0bworICAgICAgYW55IG1hcHBpbmcgaW4gdGhlIGNoYWluLgorCisgICAgKiBBIGBncmVhdGx5IHNpbXBsaWZpZWQgcmVhZC1vbmx5IHZlcnNpb24gb2YgQ2hhaW5tYXAKKyAgICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy8zMDUyNjgvPmBfLgorCisKKzpjbGFzczpgQ2hhaW5NYXBgIEV4YW1wbGVzIGFuZCBSZWNpcGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGlzIHNlY3Rpb24gc2hvd3MgdmFyaW91cyBhcHByb2FjaGVzIHRvIHdvcmtpbmcgd2l0aCBjaGFpbmVkIG1hcHMuCisKKworRXhhbXBsZSBvZiBzaW11bGF0aW5nIFB5dGhvbidzIGludGVybmFsIGxvb2t1cCBjaGFpbjo6CisKKyAgICAgICAgaW1wb3J0IGJ1aWx0aW5zCisgICAgICAgIHB5bG9va3VwID0gQ2hhaW5NYXAobG9jYWxzKCksIGdsb2JhbHMoKSwgdmFycyhidWlsdGlucykpCisKK0V4YW1wbGUgb2YgbGV0dGluZyB1c2VyIHNwZWNpZmllZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRha2UgcHJlY2VkZW5jZSBvdmVyCitlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggaW4gdHVybiB0YWtlIHByZWNlZGVuY2Ugb3ZlciBkZWZhdWx0IHZhbHVlczo6CisKKyAgICAgICAgaW1wb3J0IG9zLCBhcmdwYXJzZQorCisgICAgICAgIGRlZmF1bHRzID0geydjb2xvcic6ICdyZWQnLCAndXNlcic6ICdndWVzdCd9CisKKyAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZXInKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNvbG9yJykKKyAgICAgICAgbmFtZXNwYWNlID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgICAgICBjb21tYW5kX2xpbmVfYXJncyA9IHtrOnYgZm9yIGssIHYgaW4gdmFycyhuYW1lc3BhY2UpLml0ZW1zKCkgaWYgdn0KKworICAgICAgICBjb21iaW5lZCA9IENoYWluTWFwKGNvbW1hbmRfbGluZV9hcmdzLCBvcy5lbnZpcm9uLCBkZWZhdWx0cykKKyAgICAgICAgcHJpbnQoY29tYmluZWRbJ2NvbG9yJ10pCisgICAgICAgIHByaW50KGNvbWJpbmVkWyd1c2VyJ10pCisKK0V4YW1wbGUgcGF0dGVybnMgZm9yIHVzaW5nIHRoZSA6Y2xhc3M6YENoYWluTWFwYCBjbGFzcyB0byBzaW11bGF0ZSBuZXN0ZWQKK2NvbnRleHRzOjoKKworICAgICAgICBjID0gQ2hhaW5NYXAoKSAgICAgICAgIyBDcmVhdGUgcm9vdCBjb250ZXh0CisgICAgICAgIGQgPSBjLm5ld19jaGlsZCgpICAgICAjIENyZWF0ZSBuZXN0ZWQgY2hpbGQgY29udGV4dAorICAgICAgICBlID0gYy5uZXdfY2hpbGQoKSAgICAgIyBDaGlsZCBvZiBjLCBpbmRlcGVuZGVudCBmcm9tIGQKKyAgICAgICAgZS5tYXBzWzBdICAgICAgICAgICAgICMgQ3VycmVudCBjb250ZXh0IGRpY3Rpb25hcnkgLS0gbGlrZSBQeXRob24ncyBsb2NhbHMoKQorICAgICAgICBlLm1hcHNbLTFdICAgICAgICAgICAgIyBSb290IGNvbnRleHQgLS0gbGlrZSBQeXRob24ncyBnbG9iYWxzKCkKKyAgICAgICAgZS5wYXJlbnRzICAgICAgICAgICAgICMgRW5jbG9zaW5nIGNvbnRleHQgY2hhaW4gLS0gbGlrZSBQeXRob24ncyBub25sb2NhbHMKKworICAgICAgICBkWyd4J10gICAgICAgICAgICAgICAgIyBHZXQgZmlyc3Qga2V5IGluIHRoZSBjaGFpbiBvZiBjb250ZXh0cworICAgICAgICBkWyd4J10gPSAxICAgICAgICAgICAgIyBTZXQgdmFsdWUgaW4gY3VycmVudCBjb250ZXh0CisgICAgICAgIGRlbFsneCddICAgICAgICAgICAgICAjIERlbGV0ZSBmcm9tIGN1cnJlbnQgY29udGV4dAorICAgICAgICBsaXN0KGQpICAgICAgICAgICAgICAgIyBBbGwgbmVzdGVkIHZhbHVlcworICAgICAgICBrIGluIGQgICAgICAgICAgICAgICAgIyBDaGVjayBhbGwgbmVzdGVkIHZhbHVlcworICAgICAgICBsZW4oZCkgICAgICAgICAgICAgICAgIyBOdW1iZXIgb2YgbmVzdGVkIHZhbHVlcworICAgICAgICBkLml0ZW1zKCkgICAgICAgICAgICAgIyBBbGwgbmVzdGVkIGl0ZW1zCisgICAgICAgIGRpY3QoZCkgICAgICAgICAgICAgICAjIEZsYXR0ZW4gaW50byBhIHJlZ3VsYXIgZGljdGlvbmFyeQorCitUaGUgOmNsYXNzOmBDaGFpbk1hcGAgY2xhc3Mgb25seSBtYWtlcyB1cGRhdGVzICh3cml0ZXMgYW5kIGRlbGV0aW9ucykgdG8gdGhlCitmaXJzdCBtYXBwaW5nIGluIHRoZSBjaGFpbiB3aGlsZSBsb29rdXBzIHdpbGwgc2VhcmNoIHRoZSBmdWxsIGNoYWluLiAgSG93ZXZlciwKK2lmIGRlZXAgd3JpdGVzIGFuZCBkZWxldGlvbnMgYXJlIGRlc2lyZWQsIGl0IGlzIGVhc3kgdG8gbWFrZSBhIHN1YmNsYXNzIHRoYXQKK3VwZGF0ZXMga2V5cyBmb3VuZCBkZWVwZXIgaW4gdGhlIGNoYWluOjoKKworICAgIGNsYXNzIERlZXBDaGFpbk1hcChDaGFpbk1hcCk6CisgICAgICAgICdWYXJpYW50IG9mIENoYWluTWFwIHRoYXQgYWxsb3dzIGRpcmVjdCB1cGRhdGVzIHRvIGlubmVyIHNjb3BlcycKKworICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgICAgICBmb3IgbWFwcGluZyBpbiBzZWxmLm1hcHM6CisgICAgICAgICAgICAgICAgaWYga2V5IGluIG1hcHBpbmc6CisgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5tYXBzWzBdW2tleV0gPSB2YWx1ZQorCisgICAgICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgZm9yIG1hcHBpbmcgaW4gc2VsZi5tYXBzOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBtYXBwaW5nOgorICAgICAgICAgICAgICAgICAgICBkZWwgbWFwcGluZ1trZXldCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorCisgICAgPj4+IGQgPSBEZWVwQ2hhaW5NYXAoeyd6ZWJyYSc6ICdibGFjayd9LCB7J2VsZXBoYW50JyA6ICdibHVlJ30sIHsnbGlvbicgOiAneWVsbG93J30pCisgICAgPj4+IGRbJ2xpb24nXSA9ICdvcmFuZ2UnICAgICAgICAgIyB1cGRhdGUgYW4gZXhpc3Rpbmcga2V5IHR3byBsZXZlbHMgZG93bgorICAgID4+PiBkWydzbmFrZSddID0gJ3JlZCcgICAgICAgICAgICMgbmV3IGtleXMgZ2V0IGFkZGVkIHRvIHRoZSB0b3Btb3N0IGRpY3QKKyAgICA+Pj4gZGVsIGRbJ2VsZXBoYW50J10gICAgICAgICAgICAjIHJlbW92ZSBhbiBleGlzdGluZyBrZXkgb25lIGxldmVsIGRvd24KKyAgICBEZWVwQ2hhaW5NYXAoeyd6ZWJyYSc6ICdibGFjaycsICdzbmFrZSc6ICdyZWQnfSwge30sIHsnbGlvbic6ICdvcmFuZ2UnfSkKIAogCiA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKQEAgLTU5LDg1ICsyMTcsODUgQEAKIAogLi4gY2xhc3M6OiBDb3VudGVyKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKIAotICAgQSA6Y2xhc3M6YENvdW50ZXJgIGlzIGEgOmNsYXNzOmBkaWN0YCBzdWJjbGFzcyBmb3IgY291bnRpbmcgaGFzaGFibGUgb2JqZWN0cy4KLSAgIEl0IGlzIGFuIHVub3JkZXJlZCBjb2xsZWN0aW9uIHdoZXJlIGVsZW1lbnRzIGFyZSBzdG9yZWQgYXMgZGljdGlvbmFyeSBrZXlzCi0gICBhbmQgdGhlaXIgY291bnRzIGFyZSBzdG9yZWQgYXMgZGljdGlvbmFyeSB2YWx1ZXMuICBDb3VudHMgYXJlIGFsbG93ZWQgdG8gYmUKLSAgIGFueSBpbnRlZ2VyIHZhbHVlIGluY2x1ZGluZyB6ZXJvIG9yIG5lZ2F0aXZlIGNvdW50cy4gIFRoZSA6Y2xhc3M6YENvdW50ZXJgCi0gICBjbGFzcyBpcyBzaW1pbGFyIHRvIGJhZ3Mgb3IgbXVsdGlzZXRzIGluIG90aGVyIGxhbmd1YWdlcy4KKyAgICBBIDpjbGFzczpgQ291bnRlcmAgaXMgYSA6Y2xhc3M6YGRpY3RgIHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzLgorICAgIEl0IGlzIGFuIHVub3JkZXJlZCBjb2xsZWN0aW9uIHdoZXJlIGVsZW1lbnRzIGFyZSBzdG9yZWQgYXMgZGljdGlvbmFyeSBrZXlzCisgICAgYW5kIHRoZWlyIGNvdW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkgdmFsdWVzLiAgQ291bnRzIGFyZSBhbGxvd2VkIHRvIGJlCisgICAgYW55IGludGVnZXIgdmFsdWUgaW5jbHVkaW5nIHplcm8gb3IgbmVnYXRpdmUgY291bnRzLiAgVGhlIDpjbGFzczpgQ291bnRlcmAKKyAgICBjbGFzcyBpcyBzaW1pbGFyIHRvIGJhZ3Mgb3IgbXVsdGlzZXRzIGluIG90aGVyIGxhbmd1YWdlcy4KIAotICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGluaXRpYWxpemVkIGZyb20gYW5vdGhlcgotICAgKm1hcHBpbmcqIChvciBjb3VudGVyKToKKyAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgaW5pdGlhbGl6ZWQgZnJvbSBhbm90aGVyCisgICAgKm1hcHBpbmcqIChvciBjb3VudGVyKToKIAogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBuZXcsIGVtcHR5IGNvdW50ZXIKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdnYWxsYWhhZCcpICAgICAgICAgICAgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBhbiBpdGVyYWJsZQogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoeydyZWQnOiA0LCAnYmx1ZSc6IDJ9KSAgICAgICMgYSBuZXcgY291bnRlciBmcm9tIGEgbWFwcGluZwogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoY2F0cz00LCBkb2dzPTgpICAgICAgICAgICAgICMgYSBuZXcgY291bnRlciBmcm9tIGtleXdvcmQgYXJncwogCi0gICBDb3VudGVyIG9iamVjdHMgaGF2ZSBhIGRpY3Rpb25hcnkgaW50ZXJmYWNlIGV4Y2VwdCB0aGF0IHRoZXkgcmV0dXJuIGEgemVybwotICAgY291bnQgZm9yIG1pc3NpbmcgaXRlbXMgaW5zdGVhZCBvZiByYWlzaW5nIGEgOmV4YzpgS2V5RXJyb3JgOgorICAgIENvdW50ZXIgb2JqZWN0cyBoYXZlIGEgZGljdGlvbmFyeSBpbnRlcmZhY2UgZXhjZXB0IHRoYXQgdGhleSByZXR1cm4gYSB6ZXJvCisgICAgY291bnQgZm9yIG1pc3NpbmcgaXRlbXMgaW5zdGVhZCBvZiByYWlzaW5nIGEgOmV4YzpgS2V5RXJyb3JgOgogCiAgICAgICAgID4+PiBjID0gQ291bnRlcihbJ2VnZ3MnLCAnaGFtJ10pCiAgICAgICAgID4+PiBjWydiYWNvbiddICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3VudCBvZiBhIG1pc3NpbmcgZWxlbWVudCBpcyB6ZXJvCiAgICAgICAgIDAKIAotICAgU2V0dGluZyBhIGNvdW50IHRvIHplcm8gZG9lcyBub3QgcmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSBhIGNvdW50ZXIuCi0gICBVc2UgYGBkZWxgYCB0byByZW1vdmUgaXQgZW50aXJlbHk6CisgICAgU2V0dGluZyBhIGNvdW50IHRvIHplcm8gZG9lcyBub3QgcmVtb3ZlIGFuIGVsZW1lbnQgZnJvbSBhIGNvdW50ZXIuCisgICAgVXNlIGBgZGVsYGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5OgogCiAgICAgICAgID4+PiBjWydzYXVzYWdlJ10gPSAwICAgICAgICAgICAgICAgICAgICAgICAgIyBjb3VudGVyIGVudHJ5IHdpdGggYSB6ZXJvIGNvdW50CiAgICAgICAgID4+PiBkZWwgY1snc2F1c2FnZSddICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWwgYWN0dWFsbHkgcmVtb3ZlcyB0aGUgZW50cnkKIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKIAotICAgQ291bnRlciBvYmplY3RzIHN1cHBvcnQgdGhyZWUgbWV0aG9kcyBiZXlvbmQgdGhvc2UgYXZhaWxhYmxlIGZvciBhbGwKLSAgIGRpY3Rpb25hcmllczoKKyAgICBDb3VudGVyIG9iamVjdHMgc3VwcG9ydCB0aHJlZSBtZXRob2RzIGJleW9uZCB0aG9zZSBhdmFpbGFibGUgZm9yIGFsbAorICAgIGRpY3Rpb25hcmllczoKIAotICAgLi4gbWV0aG9kOjogZWxlbWVudHMoKQorICAgIC4uIG1ldGhvZDo6IGVsZW1lbnRzKCkKIAotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgZWxlbWVudHMgcmVwZWF0aW5nIGVhY2ggYXMgbWFueSB0aW1lcyBhcyBpdHMKLSAgICAgIGNvdW50LiAgRWxlbWVudHMgYXJlIHJldHVybmVkIGluIGFyYml0cmFyeSBvcmRlci4gIElmIGFuIGVsZW1lbnQncyBjb3VudAotICAgICAgaXMgbGVzcyB0aGFuIG9uZSwgOm1ldGg6YGVsZW1lbnRzYCB3aWxsIGlnbm9yZSBpdC4KKyAgICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgZWxlbWVudHMgcmVwZWF0aW5nIGVhY2ggYXMgbWFueSB0aW1lcyBhcyBpdHMKKyAgICAgICAgY291bnQuICBFbGVtZW50cyBhcmUgcmV0dXJuZWQgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSWYgYW4gZWxlbWVudCdzIGNvdW50CisgICAgICAgIGlzIGxlc3MgdGhhbiBvbmUsIDptZXRoOmBlbGVtZW50c2Agd2lsbCBpZ25vcmUgaXQuCiAKICAgICAgICAgICAgID4+PiBjID0gQ291bnRlcihhPTQsIGI9MiwgYz0wLCBkPS0yKQogICAgICAgICAgICAgPj4+IGxpc3QoYy5lbGVtZW50cygpKQogICAgICAgICAgICAgWydhJywgJ2EnLCAnYScsICdhJywgJ2InLCAnYiddCiAKLSAgIC4uIG1ldGhvZDo6IG1vc3RfY29tbW9uKFtuXSkKKyAgICAuLiBtZXRob2Q6OiBtb3N0X2NvbW1vbihbbl0pCiAKLSAgICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlICpuKiBtb3N0IGNvbW1vbiBlbGVtZW50cyBhbmQgdGhlaXIgY291bnRzIGZyb20gdGhlCi0gICAgICBtb3N0IGNvbW1vbiB0byB0aGUgbGVhc3QuICBJZiAqbiogaXMgbm90IHNwZWNpZmllZCwgOmZ1bmM6YG1vc3RfY29tbW9uYAotICAgICAgcmV0dXJucyAqYWxsKiBlbGVtZW50cyBpbiB0aGUgY291bnRlci4gIEVsZW1lbnRzIHdpdGggZXF1YWwgY291bnRzIGFyZQotICAgICAgb3JkZXJlZCBhcmJpdHJhcmlseToKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgKm4qIG1vc3QgY29tbW9uIGVsZW1lbnRzIGFuZCB0aGVpciBjb3VudHMgZnJvbSB0aGUKKyAgICAgICAgbW9zdCBjb21tb24gdG8gdGhlIGxlYXN0LiAgSWYgKm4qIGlzIG5vdCBzcGVjaWZpZWQsIDpmdW5jOmBtb3N0X2NvbW1vbmAKKyAgICAgICAgcmV0dXJucyAqYWxsKiBlbGVtZW50cyBpbiB0aGUgY291bnRlci4gIEVsZW1lbnRzIHdpdGggZXF1YWwgY291bnRzIGFyZQorICAgICAgICBvcmRlcmVkIGFyYml0cmFyaWx5OgogCiAgICAgICAgICAgICA+Pj4gQ291bnRlcignYWJyYWNhZGFicmEnKS5tb3N0X2NvbW1vbigzKQogICAgICAgICAgICAgWygnYScsIDUpLCAoJ3InLCAyKSwgKCdiJywgMildCiAKLSAgIC4uIG1ldGhvZDo6IHN1YnRyYWN0KFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKKyAgICAuLiBtZXRob2Q6OiBzdWJ0cmFjdChbaXRlcmFibGUtb3ItbWFwcGluZ10pCiAKLSAgICAgIEVsZW1lbnRzIGFyZSBzdWJ0cmFjdGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBmcm9tIGFub3RoZXIgKm1hcHBpbmcqCi0gICAgICAob3IgY291bnRlcikuICBMaWtlIDptZXRoOmBkaWN0LnVwZGF0ZWAgYnV0IHN1YnRyYWN0cyBjb3VudHMgaW5zdGVhZAotICAgICAgb2YgcmVwbGFjaW5nIHRoZW0uICBCb3RoIGlucHV0cyBhbmQgb3V0cHV0cyBtYXkgYmUgemVybyBvciBuZWdhdGl2ZS4KKyAgICAgICAgRWxlbWVudHMgYXJlIHN1YnRyYWN0ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGZyb20gYW5vdGhlciAqbWFwcGluZyoKKyAgICAgICAgKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBzdWJ0cmFjdHMgY291bnRzIGluc3RlYWQKKyAgICAgICAgb2YgcmVwbGFjaW5nIHRoZW0uICBCb3RoIGlucHV0cyBhbmQgb3V0cHV0cyBtYXkgYmUgemVybyBvciBuZWdhdGl2ZS4KIAogICAgICAgICAgICAgPj4+IGMgPSBDb3VudGVyKGE9NCwgYj0yLCBjPTAsIGQ9LTIpCiAgICAgICAgICAgICA+Pj4gZCA9IENvdW50ZXIoYT0xLCBiPTIsIGM9MywgZD00KQogICAgICAgICAgICAgPj4+IGMuc3VidHJhY3QoZCkKICAgICAgICAgICAgIENvdW50ZXIoeydhJzogMywgJ2InOiAwLCAnYyc6IC0zLCAnZCc6IC02fSkKIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICBUaGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBhdmFpbGFibGUgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cwotICAgZXhjZXB0IGZvciB0d28gd2hpY2ggd29yayBkaWZmZXJlbnRseSBmb3IgY291bnRlcnMuCisgICAgVGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKKyAgICBleGNlcHQgZm9yIHR3byB3aGljaCB3b3JrIGRpZmZlcmVudGx5IGZvciBjb3VudGVycy4KIAotICAgLi4gbWV0aG9kOjogZnJvbWtleXMoaXRlcmFibGUpCisgICAgLi4gbWV0aG9kOjogZnJvbWtleXMoaXRlcmFibGUpCiAKLSAgICAgIFRoaXMgY2xhc3MgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzLgorICAgICAgICBUaGlzIGNsYXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cy4KIAotICAgLi4gbWV0aG9kOjogdXBkYXRlKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKKyAgICAuLiBtZXRob2Q6OiB1cGRhdGUoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgYWRkZWQtaW4gZnJvbSBhbm90aGVyCi0gICAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBhZGRzIGNvdW50cwotICAgICAgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbS4gIEFsc28sIHRoZSAqaXRlcmFibGUqIGlzIGV4cGVjdGVkIHRvIGJlIGEKLSAgICAgIHNlcXVlbmNlIG9mIGVsZW1lbnRzLCBub3QgYSBzZXF1ZW5jZSBvZiBgYChrZXksIHZhbHVlKWBgIHBhaXJzLgorICAgICAgICBFbGVtZW50cyBhcmUgY291bnRlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgYWRkZWQtaW4gZnJvbSBhbm90aGVyCisgICAgICAgICptYXBwaW5nKiAob3IgY291bnRlcikuICBMaWtlIDptZXRoOmBkaWN0LnVwZGF0ZWAgYnV0IGFkZHMgY291bnRzCisgICAgICAgIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0uICBBbHNvLCB0aGUgKml0ZXJhYmxlKiBpcyBleHBlY3RlZCB0byBiZSBhCisgICAgICAgIHNlcXVlbmNlIG9mIGVsZW1lbnRzLCBub3QgYSBzZXF1ZW5jZSBvZiBgYChrZXksIHZhbHVlKWBgIHBhaXJzLgogCiBDb21tb24gcGF0dGVybnMgZm9yIHdvcmtpbmcgd2l0aCA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHM6OgogCkBAIC0xNDksNyArMzA3LDcgQEAKICAgICBjLml0ZW1zKCkgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCB0byBhIGxpc3Qgb2YgKGVsZW0sIGNudCkgcGFpcnMKICAgICBDb3VudGVyKGRpY3QobGlzdF9vZl9wYWlycykpICAgICMgY29udmVydCBmcm9tIGEgbGlzdCBvZiAoZWxlbSwgY250KSBwYWlycwogICAgIGMubW9zdF9jb21tb24oKVs6LW46LTFdICAgICAgICAgIyBuIGxlYXN0IGNvbW1vbiBlbGVtZW50cwotICAgIGMgKz0gQ291bnRlcigpICAgICAgICAgICAgICAgICAgIyByZW1vdmUgemVybyBhbmQgbmVnYXRpdmUgY291bnRzCisgICAgK2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB6ZXJvIGFuZCBuZWdhdGl2ZSBjb3VudHMKIAogU2V2ZXJhbCBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGNvbWJpbmluZyA6Y2xhc3M6YENvdW50ZXJgCiBvYmplY3RzIHRvIHByb2R1Y2UgbXVsdGlzZXRzIChjb3VudGVycyB0aGF0IGhhdmUgY291bnRzIGdyZWF0ZXIgdGhhbiB6ZXJvKS4KQEAgLTE2OSwzMiArMzI3LDQ0IEBACiAgICAgPj4+IGMgfCBkICAgICAgICAgICAgICAgICAgICAgICAjIHVuaW9uOiAgbWF4KGNbeF0sIGRbeF0pCiAgICAgQ291bnRlcih7J2EnOiAzLCAnYic6IDJ9KQogCitVbmFyeSBhZGRpdGlvbiBhbmQgc3Vic3RyYWN0aW9uIGFyZSBzaG9ydGN1dHMgZm9yIGFkZGluZyBhbiBlbXB0eSBjb3VudGVyCitvciBzdWJ0cmFjdGluZyBmcm9tIGFuIGVtcHR5IGNvdW50ZXIuCisKKyAgICA+Pj4gYyA9IENvdW50ZXIoYT0yLCBiPS00KQorICAgID4+PiArYworICAgIENvdW50ZXIoeydhJzogMn0pCisgICAgPj4+IC1jCisgICAgQ291bnRlcih7J2InOiA0fSkKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgQWRkZWQgc3VwcG9ydCBmb3IgdW5hcnkgcGx1cywgdW5hcnkgbWludXMsIGFuZCBpbi1wbGFjZSBtdWx0aXNldCBvcGVyYXRpb25zLgorCiAuLiBub3RlOjoKIAotICAgQ291bnRlcnMgd2VyZSBwcmltYXJpbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHBvc2l0aXZlIGludGVnZXJzIHRvIHJlcHJlc2VudAotICAgcnVubmluZyBjb3VudHM7IGhvd2V2ZXIsIGNhcmUgd2FzIHRha2VuIHRvIG5vdCB1bm5lY2Vzc2FyaWx5IHByZWNsdWRlIHVzZQotICAgY2FzZXMgbmVlZGluZyBvdGhlciB0eXBlcyBvciBuZWdhdGl2ZSB2YWx1ZXMuICBUbyBoZWxwIHdpdGggdGhvc2UgdXNlIGNhc2VzLAotICAgdGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgbWluaW11bSByYW5nZSBhbmQgdHlwZSByZXN0cmljdGlvbnMuCisgICAgQ291bnRlcnMgd2VyZSBwcmltYXJpbHkgZGVzaWduZWQgdG8gd29yayB3aXRoIHBvc2l0aXZlIGludGVnZXJzIHRvIHJlcHJlc2VudAorICAgIHJ1bm5pbmcgY291bnRzOyBob3dldmVyLCBjYXJlIHdhcyB0YWtlbiB0byBub3QgdW5uZWNlc3NhcmlseSBwcmVjbHVkZSB1c2UKKyAgICBjYXNlcyBuZWVkaW5nIG90aGVyIHR5cGVzIG9yIG5lZ2F0aXZlIHZhbHVlcy4gIFRvIGhlbHAgd2l0aCB0aG9zZSB1c2UgY2FzZXMsCisgICAgdGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgbWluaW11bSByYW5nZSBhbmQgdHlwZSByZXN0cmljdGlvbnMuCiAKLSAgICogVGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MgaXRzZWxmIGlzIGEgZGljdGlvbmFyeSBzdWJjbGFzcyB3aXRoIG5vCi0gICAgIHJlc3RyaWN0aW9ucyBvbiBpdHMga2V5cyBhbmQgdmFsdWVzLiAgVGhlIHZhbHVlcyBhcmUgaW50ZW5kZWQgdG8gYmUgbnVtYmVycwotICAgICByZXByZXNlbnRpbmcgY291bnRzLCBidXQgeW91ICpjb3VsZCogc3RvcmUgYW55dGhpbmcgaW4gdGhlIHZhbHVlIGZpZWxkLgorICAgICogVGhlIDpjbGFzczpgQ291bnRlcmAgY2xhc3MgaXRzZWxmIGlzIGEgZGljdGlvbmFyeSBzdWJjbGFzcyB3aXRoIG5vCisgICAgICAgIHJlc3RyaWN0aW9ucyBvbiBpdHMga2V5cyBhbmQgdmFsdWVzLiAgVGhlIHZhbHVlcyBhcmUgaW50ZW5kZWQgdG8gYmUgbnVtYmVycworICAgICAgICByZXByZXNlbnRpbmcgY291bnRzLCBidXQgeW91ICpjb3VsZCogc3RvcmUgYW55dGhpbmcgaW4gdGhlIHZhbHVlIGZpZWxkLgogCi0gICAqIFRoZSA6bWV0aDpgbW9zdF9jb21tb25gIG1ldGhvZCByZXF1aXJlcyBvbmx5IHRoYXQgdGhlIHZhbHVlcyBiZSBvcmRlcmFibGUuCisgICAgKiBUaGUgOm1ldGg6YG1vc3RfY29tbW9uYCBtZXRob2QgcmVxdWlyZXMgb25seSB0aGF0IHRoZSB2YWx1ZXMgYmUgb3JkZXJhYmxlLgogCi0gICAqIEZvciBpbi1wbGFjZSBvcGVyYXRpb25zIHN1Y2ggYXMgYGBjW2tleV0gKz0gMWBgLCB0aGUgdmFsdWUgdHlwZSBuZWVkIG9ubHkKLSAgICAgc3VwcG9ydCBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uICBTbyBmcmFjdGlvbnMsIGZsb2F0cywgYW5kIGRlY2ltYWxzIHdvdWxkCi0gICAgIHdvcmsgYW5kIG5lZ2F0aXZlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiAgVGhlIHNhbWUgaXMgYWxzbyB0cnVlIGZvcgotICAgICA6bWV0aDpgdXBkYXRlYCBhbmQgOm1ldGg6YHN1YnRyYWN0YCB3aGljaCBhbGxvdyBuZWdhdGl2ZSBhbmQgemVybyB2YWx1ZXMKLSAgICAgZm9yIGJvdGggaW5wdXRzIGFuZCBvdXRwdXRzLgorICAgICogRm9yIGluLXBsYWNlIG9wZXJhdGlvbnMgc3VjaCBhcyBgYGNba2V5XSArPSAxYGAsIHRoZSB2YWx1ZSB0eXBlIG5lZWQgb25seQorICAgICAgICBzdXBwb3J0IGFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbi4gIFNvIGZyYWN0aW9ucywgZmxvYXRzLCBhbmQgZGVjaW1hbHMgd291bGQKKyAgICAgICAgd29yayBhbmQgbmVnYXRpdmUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuICBUaGUgc2FtZSBpcyBhbHNvIHRydWUgZm9yCisgICAgICAgIDptZXRoOmB1cGRhdGVgIGFuZCA6bWV0aDpgc3VidHJhY3RgIHdoaWNoIGFsbG93IG5lZ2F0aXZlIGFuZCB6ZXJvIHZhbHVlcworICAgICAgICBmb3IgYm90aCBpbnB1dHMgYW5kIG91dHB1dHMuCiAKLSAgICogVGhlIG11bHRpc2V0IG1ldGhvZHMgYXJlIGRlc2lnbmVkIG9ubHkgZm9yIHVzZSBjYXNlcyB3aXRoIHBvc2l0aXZlIHZhbHVlcy4KLSAgICAgVGhlIGlucHV0cyBtYXkgYmUgbmVnYXRpdmUgb3IgemVybywgYnV0IG9ubHkgb3V0cHV0cyB3aXRoIHBvc2l0aXZlIHZhbHVlcwotICAgICBhcmUgY3JlYXRlZC4gIFRoZXJlIGFyZSBubyB0eXBlIHJlc3RyaWN0aW9ucywgYnV0IHRoZSB2YWx1ZSB0eXBlIG5lZWRzIHRvCi0gICAgIHN1cHBvcnQgYWRkaXRpb24sIHN1YnRyYWN0aW9uLCBhbmQgY29tcGFyaXNvbi4KKyAgICAqIFRoZSBtdWx0aXNldCBtZXRob2RzIGFyZSBkZXNpZ25lZCBvbmx5IGZvciB1c2UgY2FzZXMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMuCisgICAgICAgIFRoZSBpbnB1dHMgbWF5IGJlIG5lZ2F0aXZlIG9yIHplcm8sIGJ1dCBvbmx5IG91dHB1dHMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMKKyAgICAgICAgYXJlIGNyZWF0ZWQuICBUaGVyZSBhcmUgbm8gdHlwZSByZXN0cmljdGlvbnMsIGJ1dCB0aGUgdmFsdWUgdHlwZSBuZWVkcyB0bworICAgICAgICBzdXBwb3J0IGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgYW5kIGNvbXBhcmlzb24uCiAKLSAgICogVGhlIDptZXRoOmBlbGVtZW50c2AgbWV0aG9kIHJlcXVpcmVzIGludGVnZXIgY291bnRzLiAgSXQgaWdub3JlcyB6ZXJvIGFuZAotICAgICBuZWdhdGl2ZSBjb3VudHMuCisgICAgKiBUaGUgOm1ldGg6YGVsZW1lbnRzYCBtZXRob2QgcmVxdWlyZXMgaW50ZWdlciBjb3VudHMuICBJdCBpZ25vcmVzIHplcm8gYW5kCisgICAgICAgIG5lZ2F0aXZlIGNvdW50cy4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIxNyw3ICszODcsNyBAQAogICAgICogVG8gZW51bWVyYXRlIGFsbCBkaXN0aW5jdCBtdWx0aXNldHMgb2YgYSBnaXZlbiBzaXplIG92ZXIgYSBnaXZlbiBzZXQgb2YKICAgICAgIGVsZW1lbnRzLCBzZWUgOmZ1bmM6YGl0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudGAuCiAKLSAgICAgICAgICBtYXAoQ291bnRlciwgY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoJ0FCQycsIDIpKSAtLT4gQUEgQUIgQUMgQkIgQkMgQ0MKKyAgICAgICAgICAgIG1hcChDb3VudGVyLCBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgnQUJDJywgMikpIC0tPiBBQSBBQiBBQyBCQiBCQyBDQwogCiAKIDpjbGFzczpgZGVxdWVgIG9iamVjdHMKQEAgLTIyNSwxMDUgKzM5NSwxMDUgQEAKIAogLi4gY2xhc3M6OiBkZXF1ZShbaXRlcmFibGUsIFttYXhsZW5dXSkKIAotICAgUmV0dXJucyBhIG5ldyBkZXF1ZSBvYmplY3QgaW5pdGlhbGl6ZWQgbGVmdC10by1yaWdodCAodXNpbmcgOm1ldGg6YGFwcGVuZGApIHdpdGgKLSAgIGRhdGEgZnJvbSAqaXRlcmFibGUqLiAgSWYgKml0ZXJhYmxlKiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmV3IGRlcXVlIGlzIGVtcHR5LgorICAgIFJldHVybnMgYSBuZXcgZGVxdWUgb2JqZWN0IGluaXRpYWxpemVkIGxlZnQtdG8tcmlnaHQgKHVzaW5nIDptZXRoOmBhcHBlbmRgKSB3aXRoCisgICAgZGF0YSBmcm9tICppdGVyYWJsZSouICBJZiAqaXRlcmFibGUqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBuZXcgZGVxdWUgaXMgZW1wdHkuCiAKLSAgIERlcXVlcyBhcmUgYSBnZW5lcmFsaXphdGlvbiBvZiBzdGFja3MgYW5kIHF1ZXVlcyAodGhlIG5hbWUgaXMgcHJvbm91bmNlZCAiZGVjayIKLSAgIGFuZCBpcyBzaG9ydCBmb3IgImRvdWJsZS1lbmRlZCBxdWV1ZSIpLiAgRGVxdWVzIHN1cHBvcnQgdGhyZWFkLXNhZmUsIG1lbW9yeQotICAgZWZmaWNpZW50IGFwcGVuZHMgYW5kIHBvcHMgZnJvbSBlaXRoZXIgc2lkZSBvZiB0aGUgZGVxdWUgd2l0aCBhcHByb3hpbWF0ZWx5IHRoZQotICAgc2FtZSBPKDEpIHBlcmZvcm1hbmNlIGluIGVpdGhlciBkaXJlY3Rpb24uCisgICAgRGVxdWVzIGFyZSBhIGdlbmVyYWxpemF0aW9uIG9mIHN0YWNrcyBhbmQgcXVldWVzICh0aGUgbmFtZSBpcyBwcm9ub3VuY2VkICJkZWNrIgorICAgIGFuZCBpcyBzaG9ydCBmb3IgImRvdWJsZS1lbmRlZCBxdWV1ZSIpLiAgRGVxdWVzIHN1cHBvcnQgdGhyZWFkLXNhZmUsIG1lbW9yeQorICAgIGVmZmljaWVudCBhcHBlbmRzIGFuZCBwb3BzIGZyb20gZWl0aGVyIHNpZGUgb2YgdGhlIGRlcXVlIHdpdGggYXBwcm94aW1hdGVseSB0aGUKKyAgICBzYW1lIE8oMSkgcGVyZm9ybWFuY2UgaW4gZWl0aGVyIGRpcmVjdGlvbi4KIAotICAgVGhvdWdoIDpjbGFzczpgbGlzdGAgb2JqZWN0cyBzdXBwb3J0IHNpbWlsYXIgb3BlcmF0aW9ucywgdGhleSBhcmUgb3B0aW1pemVkIGZvcgotICAgZmFzdCBmaXhlZC1sZW5ndGggb3BlcmF0aW9ucyBhbmQgaW5jdXIgTyhuKSBtZW1vcnkgbW92ZW1lbnQgY29zdHMgZm9yCi0gICBgYHBvcCgwKWBgIGFuZCBgYGluc2VydCgwLCB2KWBgIG9wZXJhdGlvbnMgd2hpY2ggY2hhbmdlIGJvdGggdGhlIHNpemUgYW5kCi0gICBwb3NpdGlvbiBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHJlcHJlc2VudGF0aW9uLgorICAgIFRob3VnaCA6Y2xhc3M6YGxpc3RgIG9iamVjdHMgc3VwcG9ydCBzaW1pbGFyIG9wZXJhdGlvbnMsIHRoZXkgYXJlIG9wdGltaXplZCBmb3IKKyAgICBmYXN0IGZpeGVkLWxlbmd0aCBvcGVyYXRpb25zIGFuZCBpbmN1ciBPKG4pIG1lbW9yeSBtb3ZlbWVudCBjb3N0cyBmb3IKKyAgICBgYHBvcCgwKWBgIGFuZCBgYGluc2VydCgwLCB2KWBgIG9wZXJhdGlvbnMgd2hpY2ggY2hhbmdlIGJvdGggdGhlIHNpemUgYW5kCisgICAgcG9zaXRpb24gb2YgdGhlIHVuZGVybHlpbmcgZGF0YSByZXByZXNlbnRhdGlvbi4KIAogCi0gICBJZiAqbWF4bGVuKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICpOb25lKiwgZGVxdWVzIG1heSBncm93IHRvIGFuCi0gICBhcmJpdHJhcnkgbGVuZ3RoLiAgT3RoZXJ3aXNlLCB0aGUgZGVxdWUgaXMgYm91bmRlZCB0byB0aGUgc3BlY2lmaWVkIG1heGltdW0KLSAgIGxlbmd0aC4gIE9uY2UgYSBib3VuZGVkIGxlbmd0aCBkZXF1ZSBpcyBmdWxsLCB3aGVuIG5ldyBpdGVtcyBhcmUgYWRkZWQsIGEKLSAgIGNvcnJlc3BvbmRpbmcgbnVtYmVyIG9mIGl0ZW1zIGFyZSBkaXNjYXJkZWQgZnJvbSB0aGUgb3Bwb3NpdGUgZW5kLiAgQm91bmRlZAotICAgbGVuZ3RoIGRlcXVlcyBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUgYGB0YWlsYGAgZmlsdGVyIGluCi0gICBVbml4LiBUaGV5IGFyZSBhbHNvIHVzZWZ1bCBmb3IgdHJhY2tpbmcgdHJhbnNhY3Rpb25zIGFuZCBvdGhlciBwb29scyBvZiBkYXRhCi0gICB3aGVyZSBvbmx5IHRoZSBtb3N0IHJlY2VudCBhY3Rpdml0eSBpcyBvZiBpbnRlcmVzdC4KKyAgICBJZiAqbWF4bGVuKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICpOb25lKiwgZGVxdWVzIG1heSBncm93IHRvIGFuCisgICAgYXJiaXRyYXJ5IGxlbmd0aC4gIE90aGVyd2lzZSwgdGhlIGRlcXVlIGlzIGJvdW5kZWQgdG8gdGhlIHNwZWNpZmllZCBtYXhpbXVtCisgICAgbGVuZ3RoLiAgT25jZSBhIGJvdW5kZWQgbGVuZ3RoIGRlcXVlIGlzIGZ1bGwsIHdoZW4gbmV3IGl0ZW1zIGFyZSBhZGRlZCwgYQorICAgIGNvcnJlc3BvbmRpbmcgbnVtYmVyIG9mIGl0ZW1zIGFyZSBkaXNjYXJkZWQgZnJvbSB0aGUgb3Bwb3NpdGUgZW5kLiAgQm91bmRlZAorICAgIGxlbmd0aCBkZXF1ZXMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlIGBgdGFpbGBgIGZpbHRlciBpbgorICAgIFVuaXguIFRoZXkgYXJlIGFsc28gdXNlZnVsIGZvciB0cmFja2luZyB0cmFuc2FjdGlvbnMgYW5kIG90aGVyIHBvb2xzIG9mIGRhdGEKKyAgICB3aGVyZSBvbmx5IHRoZSBtb3N0IHJlY2VudCBhY3Rpdml0eSBpcyBvZiBpbnRlcmVzdC4KIAogCi0gICBEZXF1ZSBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgIERlcXVlIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKLSAgIC4uIG1ldGhvZDo6IGFwcGVuZCh4KQorICAgIC4uIG1ldGhvZDo6IGFwcGVuZCh4KQogCi0gICAgICBBZGQgKngqIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4KKyAgICAgICAgQWRkICp4KiB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuCiAKIAotICAgLi4gbWV0aG9kOjogYXBwZW5kbGVmdCh4KQorICAgIC4uIG1ldGhvZDo6IGFwcGVuZGxlZnQoeCkKIAotICAgICAgQWRkICp4KiB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4KKyAgICAgICAgQWRkICp4KiB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4KIAogCi0gICAuLiBtZXRob2Q6OiBjbGVhcigpCisgICAgLi4gbWV0aG9kOjogY2xlYXIoKQogCi0gICAgICBSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlIGxlYXZpbmcgaXQgd2l0aCBsZW5ndGggMC4KKyAgICAgICAgUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZSBsZWF2aW5nIGl0IHdpdGggbGVuZ3RoIDAuCiAKIAotICAgLi4gbWV0aG9kOjogY291bnQoeCkKKyAgICAuLiBtZXRob2Q6OiBjb3VudCh4KQogCi0gICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIGRlcXVlIGVsZW1lbnRzIGVxdWFsIHRvICp4Ki4KKyAgICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBkZXF1ZSBlbGVtZW50cyBlcXVhbCB0byAqeCouCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBleHRlbmQoaXRlcmFibGUpCisgICAgLi4gbWV0aG9kOjogZXh0ZW5kKGl0ZXJhYmxlKQogCi0gICAgICBFeHRlbmQgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZQotICAgICAgYXJndW1lbnQuCisgICAgICAgIEV4dGVuZCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gdGhlIGl0ZXJhYmxlCisgICAgICAgIGFyZ3VtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IGV4dGVuZGxlZnQoaXRlcmFibGUpCisgICAgLi4gbWV0aG9kOjogZXh0ZW5kbGVmdChpdGVyYWJsZSkKIAotICAgICAgRXh0ZW5kIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tICppdGVyYWJsZSouCi0gICAgICBOb3RlLCB0aGUgc2VyaWVzIG9mIGxlZnQgYXBwZW5kcyByZXN1bHRzIGluIHJldmVyc2luZyB0aGUgb3JkZXIgb2YKLSAgICAgIGVsZW1lbnRzIGluIHRoZSBpdGVyYWJsZSBhcmd1bWVudC4KKyAgICAgICAgRXh0ZW5kIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlIGJ5IGFwcGVuZGluZyBlbGVtZW50cyBmcm9tICppdGVyYWJsZSouCisgICAgICAgIE5vdGUsIHRoZSBzZXJpZXMgb2YgbGVmdCBhcHBlbmRzIHJlc3VsdHMgaW4gcmV2ZXJzaW5nIHRoZSBvcmRlciBvZgorICAgICAgICBlbGVtZW50cyBpbiB0aGUgaXRlcmFibGUgYXJndW1lbnQuCiAKIAotICAgLi4gbWV0aG9kOjogcG9wKCkKKyAgICAuLiBtZXRob2Q6OiBwb3AoKQogCi0gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubwotICAgICAgZWxlbWVudHMgYXJlIHByZXNlbnQsIHJhaXNlcyBhbiA6ZXhjOmBJbmRleEVycm9yYC4KKyAgICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4gSWYgbm8KKyAgICAgICAgZWxlbWVudHMgYXJlIHByZXNlbnQsIHJhaXNlcyBhbiA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0gICAuLiBtZXRob2Q6OiBwb3BsZWZ0KCkKKyAgICAuLiBtZXRob2Q6OiBwb3BsZWZ0KCkKIAotICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubwotICAgICAgZWxlbWVudHMgYXJlIHByZXNlbnQsIHJhaXNlcyBhbiA6ZXhjOmBJbmRleEVycm9yYC4KKyAgICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gZWxlbWVudCBmcm9tIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubworICAgICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgogCiAKLSAgIC4uIG1ldGhvZDo6IHJlbW92ZSh2YWx1ZSkKKyAgICAuLiBtZXRob2Q6OiByZW1vdmUodmFsdWUpCiAKLSAgICAgIFJlbW92ZWQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnZhbHVlKi4gIElmIG5vdCBmb3VuZCwgcmFpc2VzIGEKLSAgICAgIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgICBSZW1vdmVkIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCisgICAgICAgIDpleGM6YFZhbHVlRXJyb3JgLgogCiAKLSAgIC4uIG1ldGhvZDo6IHJldmVyc2UoKQorICAgIC4uIG1ldGhvZDo6IHJldmVyc2UoKQogCi0gICAgICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVxdWUgaW4tcGxhY2UgYW5kIHRoZW4gcmV0dXJuIGBgTm9uZWBgLgorICAgICAgICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgZGVxdWUgaW4tcGxhY2UgYW5kIHRoZW4gcmV0dXJuIGBgTm9uZWBgLgogCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotICAgLi4gbWV0aG9kOjogcm90YXRlKG4pCisgICAgLi4gbWV0aG9kOjogcm90YXRlKG4pCiAKLSAgICAgIFJvdGF0ZSB0aGUgZGVxdWUgKm4qIHN0ZXBzIHRvIHRoZSByaWdodC4gIElmICpuKiBpcyBuZWdhdGl2ZSwgcm90YXRlIHRvCi0gICAgICB0aGUgbGVmdC4gIFJvdGF0aW5nIG9uZSBzdGVwIHRvIHRoZSByaWdodCBpcyBlcXVpdmFsZW50IHRvOgotICAgICAgYGBkLmFwcGVuZGxlZnQoZC5wb3AoKSlgYC4KKyAgICAgICAgUm90YXRlIHRoZSBkZXF1ZSAqbiogc3RlcHMgdG8gdGhlIHJpZ2h0LiAgSWYgKm4qIGlzIG5lZ2F0aXZlLCByb3RhdGUgdG8KKyAgICAgICAgdGhlIGxlZnQuICBSb3RhdGluZyBvbmUgc3RlcCB0byB0aGUgcmlnaHQgaXMgZXF1aXZhbGVudCB0bzoKKyAgICAgICAgYGBkLmFwcGVuZGxlZnQoZC5wb3AoKSlgYC4KIAogCi0gICBEZXF1ZSBvYmplY3RzIGFsc28gcHJvdmlkZSBvbmUgcmVhZC1vbmx5IGF0dHJpYnV0ZToKKyAgICBEZXF1ZSBvYmplY3RzIGFsc28gcHJvdmlkZSBvbmUgcmVhZC1vbmx5IGF0dHJpYnV0ZToKIAotICAgLi4gYXR0cmlidXRlOjogbWF4bGVuCisgICAgLi4gYXR0cmlidXRlOjogbWF4bGVuCiAKLSAgICAgIE1heGltdW0gc2l6ZSBvZiBhIGRlcXVlIG9yICpOb25lKiBpZiB1bmJvdW5kZWQuCisgICAgICAgIE1heGltdW0gc2l6ZSBvZiBhIGRlcXVlIG9yICpOb25lKiBpZiB1bmJvdW5kZWQuCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCiBJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUsIGRlcXVlcyBzdXBwb3J0IGl0ZXJhdGlvbiwgcGlja2xpbmcsIGBgbGVuKGQpYGAsCkBAIC0zMzYsNTYgKzUwNiw1NiBAQAogCiAuLiBkb2N0ZXN0OjoKIAotICAgPj4+IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi0gICA+Pj4gZCA9IGRlcXVlKCdnaGknKSAgICAgICAgICAgICAgICAgIyBtYWtlIGEgbmV3IGRlcXVlIHdpdGggdGhyZWUgaXRlbXMKLSAgID4+PiBmb3IgZWxlbSBpbiBkOiAgICAgICAgICAgICAgICAgICAjIGl0ZXJhdGUgb3ZlciB0aGUgZGVxdWUncyBlbGVtZW50cwotICAgLi4uICAgICBwcmludChlbGVtLnVwcGVyKCkpCi0gICBHCi0gICBICi0gICBJCisgICAgPj4+IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCisgICAgPj4+IGQgPSBkZXF1ZSgnZ2hpJykgICAgICAgICAgICAgICAgICMgbWFrZSBhIG5ldyBkZXF1ZSB3aXRoIHRocmVlIGl0ZW1zCisgICAgPj4+IGZvciBlbGVtIGluIGQ6ICAgICAgICAgICAgICAgICAgICMgaXRlcmF0ZSBvdmVyIHRoZSBkZXF1ZSdzIGVsZW1lbnRzCisgICAgLi4uICAgICBwcmludChlbGVtLnVwcGVyKCkpCisgICAgRworICAgIEgKKyAgICBJCiAKLSAgID4+PiBkLmFwcGVuZCgnaicpICAgICAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgcmlnaHQgc2lkZQotICAgPj4+IGQuYXBwZW5kbGVmdCgnZicpICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBsZWZ0IHNpZGUKLSAgID4+PiBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZXF1ZQotICAgZGVxdWUoWydmJywgJ2cnLCAnaCcsICdpJywgJ2onXSkKKyAgICA+Pj4gZC5hcHBlbmQoJ2onKSAgICAgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIHJpZ2h0IHNpZGUKKyAgICA+Pj4gZC5hcHBlbmRsZWZ0KCdmJykgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIGxlZnQgc2lkZQorICAgID4+PiBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZXF1ZQorICAgIGRlcXVlKFsnZicsICdnJywgJ2gnLCAnaScsICdqJ10pCiAKLSAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhbmQgcmVtb3ZlIHRoZSByaWdodG1vc3QgaXRlbQotICAgJ2onCi0gICA+Pj4gZC5wb3BsZWZ0KCkgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm4gYW5kIHJlbW92ZSB0aGUgbGVmdG1vc3QgaXRlbQotICAgJ2YnCi0gICA+Pj4gbGlzdChkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsaXN0IHRoZSBjb250ZW50cyBvZiB0aGUgZGVxdWUKLSAgIFsnZycsICdoJywgJ2knXQotICAgPj4+IGRbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGVlayBhdCBsZWZ0bW9zdCBpdGVtCi0gICAnZycKLSAgID4+PiBkWy0xXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBlZWsgYXQgcmlnaHRtb3N0IGl0ZW0KLSAgICdpJworICAgID4+PiBkLnBvcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhbmQgcmVtb3ZlIHRoZSByaWdodG1vc3QgaXRlbQorICAgICdqJworICAgID4+PiBkLnBvcGxlZnQoKSAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhbmQgcmVtb3ZlIHRoZSBsZWZ0bW9zdCBpdGVtCisgICAgJ2YnCisgICAgPj4+IGxpc3QoZCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgdGhlIGRlcXVlCisgICAgWydnJywgJ2gnLCAnaSddCisgICAgPj4+IGRbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGVlayBhdCBsZWZ0bW9zdCBpdGVtCisgICAgJ2cnCisgICAgPj4+IGRbLTFdICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGVlayBhdCByaWdodG1vc3QgaXRlbQorICAgICdpJwogCi0gICA+Pj4gbGlzdChyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAgIyBsaXN0IHRoZSBjb250ZW50cyBvZiBhIGRlcXVlIGluIHJldmVyc2UKLSAgIFsnaScsICdoJywgJ2cnXQotICAgPj4+ICdoJyBpbiBkICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VhcmNoIHRoZSBkZXF1ZQotICAgVHJ1ZQotICAgPj4+IGQuZXh0ZW5kKCdqa2wnKSAgICAgICAgICAgICAgICAgICMgYWRkIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UKLSAgID4+PiBkCi0gICBkZXF1ZShbJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJ10pCi0gICA+Pj4gZC5yb3RhdGUoMSkgICAgICAgICAgICAgICAgICAgICAgIyByaWdodCByb3RhdGlvbgotICAgPj4+IGQKLSAgIGRlcXVlKFsnbCcsICdnJywgJ2gnLCAnaScsICdqJywgJ2snXSkKLSAgID4+PiBkLnJvdGF0ZSgtMSkgICAgICAgICAgICAgICAgICAgICAjIGxlZnQgcm90YXRpb24KLSAgID4+PiBkCi0gICBkZXF1ZShbJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJ10pCisgICAgPj4+IGxpc3QocmV2ZXJzZWQoZCkpICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgY29udGVudHMgb2YgYSBkZXF1ZSBpbiByZXZlcnNlCisgICAgWydpJywgJ2gnLCAnZyddCisgICAgPj4+ICdoJyBpbiBkICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VhcmNoIHRoZSBkZXF1ZQorICAgIFRydWUKKyAgICA+Pj4gZC5leHRlbmQoJ2prbCcpICAgICAgICAgICAgICAgICAgIyBhZGQgbXVsdGlwbGUgZWxlbWVudHMgYXQgb25jZQorICAgID4+PiBkCisgICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQorICAgID4+PiBkLnJvdGF0ZSgxKSAgICAgICAgICAgICAgICAgICAgICAjIHJpZ2h0IHJvdGF0aW9uCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2wnLCAnZycsICdoJywgJ2knLCAnaicsICdrJ10pCisgICAgPj4+IGQucm90YXRlKC0xKSAgICAgICAgICAgICAgICAgICAgICMgbGVmdCByb3RhdGlvbgorICAgID4+PiBkCisgICAgZGVxdWUoWydnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCddKQogCi0gICA+Pj4gZGVxdWUocmV2ZXJzZWQoZCkpICAgICAgICAgICAgICAgIyBtYWtlIGEgbmV3IGRlcXVlIGluIHJldmVyc2Ugb3JkZXIKLSAgIGRlcXVlKFsnbCcsICdrJywgJ2onLCAnaScsICdoJywgJ2cnXSkKLSAgID4+PiBkLmNsZWFyKCkgICAgICAgICAgICAgICAgICAgICAgICAjIGVtcHR5IHRoZSBkZXF1ZQotICAgPj4+IGQucG9wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlCi0gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxweXNoZWxsIzY+IiwgbGluZSAxLCBpbiAtdG9wbGV2ZWwtCi0gICAgICAgZC5wb3AoKQotICAgSW5kZXhFcnJvcjogcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKKyAgICA+Pj4gZGVxdWUocmV2ZXJzZWQoZCkpICAgICAgICAgICAgICAgIyBtYWtlIGEgbmV3IGRlcXVlIGluIHJldmVyc2Ugb3JkZXIKKyAgICBkZXF1ZShbJ2wnLCAnaycsICdqJywgJ2knLCAnaCcsICdnJ10pCisgICAgPj4+IGQuY2xlYXIoKSAgICAgICAgICAgICAgICAgICAgICAgICMgZW1wdHkgdGhlIGRlcXVlCisgICAgPj4+IGQucG9wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICBGaWxlICI8cHlzaGVsbCM2PiIsIGxpbmUgMSwgaW4gLXRvcGxldmVsLQorICAgICAgICAgICAgZC5wb3AoKQorICAgIEluZGV4RXJyb3I6IHBvcCBmcm9tIGFuIGVtcHR5IGRlcXVlCiAKLSAgID4+PiBkLmV4dGVuZGxlZnQoJ2FiYycpICAgICAgICAgICAgICAjIGV4dGVuZGxlZnQoKSByZXZlcnNlcyB0aGUgaW5wdXQgb3JkZXIKLSAgID4+PiBkCi0gICBkZXF1ZShbJ2MnLCAnYicsICdhJ10pCisgICAgPj4+IGQuZXh0ZW5kbGVmdCgnYWJjJykgICAgICAgICAgICAgICMgZXh0ZW5kbGVmdCgpIHJldmVyc2VzIHRoZSBpbnB1dCBvcmRlcgorICAgID4+PiBkCisgICAgZGVxdWUoWydjJywgJ2InLCAnYSddKQogCiAKIDpjbGFzczpgZGVxdWVgIFJlY2lwZXMKQEAgLTM5Niw5ICs1NjYsMTAgQEAKIEJvdW5kZWQgbGVuZ3RoIGRlcXVlcyBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUgYGB0YWlsYGAgZmlsdGVyCiBpbiBVbml4OjoKIAotICAgZGVmIHRhaWwoZmlsZW5hbWUsIG49MTApOgotICAgICAgICdSZXR1cm4gdGhlIGxhc3QgbiBsaW5lcyBvZiBhIGZpbGUnCi0gICAgICAgcmV0dXJuIGRlcXVlKG9wZW4oZmlsZW5hbWUpLCBuKQorICAgIGRlZiB0YWlsKGZpbGVuYW1lLCBuPTEwKToKKyAgICAgICAgJ1JldHVybiB0aGUgbGFzdCBuIGxpbmVzIG9mIGEgZmlsZScKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGRlcXVlKGYsIG4pCiAKIEFub3RoZXIgYXBwcm9hY2ggdG8gdXNpbmcgZGVxdWVzIGlzIHRvIG1haW50YWluIGEgc2VxdWVuY2Ugb2YgcmVjZW50bHkKIGFkZGVkIGVsZW1lbnRzIGJ5IGFwcGVuZGluZyB0byB0aGUgcmlnaHQgYW5kIHBvcHBpbmcgdG8gdGhlIGxlZnQ6OgpAQCAtNDE5LDEwICs1OTAsMTAgQEAKIGRlbGV0aW9uLiAgRm9yIGV4YW1wbGUsIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgYGBkZWwgZFtuXWBgIHJlbGllcyBvbgogdGhlIDptZXRoOmByb3RhdGVgIG1ldGhvZCB0byBwb3NpdGlvbiBlbGVtZW50cyB0byBiZSBwb3BwZWQ6OgogCi0gICBkZWYgZGVsZXRlX250aChkLCBuKToKLSAgICAgICBkLnJvdGF0ZSgtbikKLSAgICAgICBkLnBvcGxlZnQoKQotICAgICAgIGQucm90YXRlKG4pCisgICAgZGVmIGRlbGV0ZV9udGgoZCwgbik6CisgICAgICAgIGQucm90YXRlKC1uKQorICAgICAgICBkLnBvcGxlZnQoKQorICAgICAgICBkLnJvdGF0ZShuKQogCiBUbyBpbXBsZW1lbnQgOmNsYXNzOmBkZXF1ZWAgc2xpY2luZywgdXNlIGEgc2ltaWxhciBhcHByb2FjaCBhcHBseWluZwogOm1ldGg6YHJvdGF0ZWAgdG8gYnJpbmcgYSB0YXJnZXQgZWxlbWVudCB0byB0aGUgbGVmdCBzaWRlIG9mIHRoZSBkZXF1ZS4gUmVtb3ZlCkBAIC00MzgsNTAgKzYwOSw1MCBAQAogCiAuLiBjbGFzczo6IGRlZmF1bHRkaWN0KFtkZWZhdWx0X2ZhY3RvcnlbLCAuLi5dXSkKIAotICAgUmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LWxpa2Ugb2JqZWN0LiAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgaXMgYSBzdWJjbGFzcyBvZiB0aGUKLSAgIGJ1aWx0LWluIDpjbGFzczpgZGljdGAgY2xhc3MuICBJdCBvdmVycmlkZXMgb25lIG1ldGhvZCBhbmQgYWRkcyBvbmUgd3JpdGFibGUKLSAgIGluc3RhbmNlIHZhcmlhYmxlLiAgVGhlIHJlbWFpbmluZyBmdW5jdGlvbmFsaXR5IGlzIHRoZSBzYW1lIGFzIGZvciB0aGUKLSAgIDpjbGFzczpgZGljdGAgY2xhc3MgYW5kIGlzIG5vdCBkb2N1bWVudGVkIGhlcmUuCisgICAgUmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LWxpa2Ugb2JqZWN0LiAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgaXMgYSBzdWJjbGFzcyBvZiB0aGUKKyAgICBidWlsdC1pbiA6Y2xhc3M6YGRpY3RgIGNsYXNzLiAgSXQgb3ZlcnJpZGVzIG9uZSBtZXRob2QgYW5kIGFkZHMgb25lIHdyaXRhYmxlCisgICAgaW5zdGFuY2UgdmFyaWFibGUuICBUaGUgcmVtYWluaW5nIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZQorICAgIDpjbGFzczpgZGljdGAgY2xhc3MgYW5kIGlzIG5vdCBkb2N1bWVudGVkIGhlcmUuCiAKLSAgIFRoZSBmaXJzdCBhcmd1bWVudCBwcm92aWRlcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgCi0gICBhdHRyaWJ1dGU7IGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLiBBbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdHJlYXRlZCB0aGUgc2FtZQotICAgYXMgaWYgdGhleSB3ZXJlIHBhc3NlZCB0byB0aGUgOmNsYXNzOmBkaWN0YCBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIGtleXdvcmQKLSAgIGFyZ3VtZW50cy4KKyAgICBUaGUgZmlyc3QgYXJndW1lbnQgcHJvdmlkZXMgdGhlIGluaXRpYWwgdmFsdWUgZm9yIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YAorICAgIGF0dHJpYnV0ZTsgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAuIEFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0cmVhdGVkIHRoZSBzYW1lCisgICAgYXMgaWYgdGhleSB3ZXJlIHBhc3NlZCB0byB0aGUgOmNsYXNzOmBkaWN0YCBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIGtleXdvcmQKKyAgICBhcmd1bWVudHMuCiAKIAotICAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kIGluIGFkZGl0aW9uIHRvIHRoZQotICAgc3RhbmRhcmQgOmNsYXNzOmBkaWN0YCBvcGVyYXRpb25zOgorICAgIDpjbGFzczpgZGVmYXVsdGRpY3RgIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZCBpbiBhZGRpdGlvbiB0byB0aGUKKyAgICBzdGFuZGFyZCA6Y2xhc3M6YGRpY3RgIG9wZXJhdGlvbnM6CiAKLSAgIC4uIG1ldGhvZDo6IF9fbWlzc2luZ19fKGtleSkKKyAgICAuLiBtZXRob2Q6OiBfX21pc3NpbmdfXyhrZXkpCiAKLSAgICAgIElmIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAsIHRoaXMgcmFpc2VzIGEKLSAgICAgIDpleGM6YEtleUVycm9yYCBleGNlcHRpb24gd2l0aCB0aGUgKmtleSogYXMgYXJndW1lbnQuCisgICAgICAgIElmIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAsIHRoaXMgcmFpc2VzIGEKKyAgICAgICAgOmV4YzpgS2V5RXJyb3JgIGV4Y2VwdGlvbiB3aXRoIHRoZSAqa2V5KiBhcyBhcmd1bWVudC4KIAotICAgICAgSWYgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgaXMgbm90IGBgTm9uZWBgLCBpdCBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMKLSAgICAgIHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gKmtleSosIHRoaXMgdmFsdWUgaXMgaW5zZXJ0ZWQgaW4KLSAgICAgIHRoZSBkaWN0aW9uYXJ5IGZvciB0aGUgKmtleSosIGFuZCByZXR1cm5lZC4KKyAgICAgICAgSWYgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgaXMgbm90IGBgTm9uZWBgLCBpdCBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMKKyAgICAgICAgdG8gcHJvdmlkZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBnaXZlbiAqa2V5KiwgdGhpcyB2YWx1ZSBpcyBpbnNlcnRlZCBpbgorICAgICAgICB0aGUgZGljdGlvbmFyeSBmb3IgdGhlICprZXkqLCBhbmQgcmV0dXJuZWQuCiAKLSAgICAgIElmIGNhbGxpbmcgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgcmFpc2VzIGFuIGV4Y2VwdGlvbiB0aGlzIGV4Y2VwdGlvbiBpcwotICAgICAgcHJvcGFnYXRlZCB1bmNoYW5nZWQuCisgICAgICAgIElmIGNhbGxpbmcgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgcmFpc2VzIGFuIGV4Y2VwdGlvbiB0aGlzIGV4Y2VwdGlvbiBpcworICAgICAgICBwcm9wYWdhdGVkIHVuY2hhbmdlZC4KIAotICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSA6bWV0aDpgX19nZXRpdGVtX19gIG1ldGhvZCBvZiB0aGUKLSAgICAgIDpjbGFzczpgZGljdGAgY2xhc3Mgd2hlbiB0aGUgcmVxdWVzdGVkIGtleSBpcyBub3QgZm91bmQ7IHdoYXRldmVyIGl0Ci0gICAgICByZXR1cm5zIG9yIHJhaXNlcyBpcyB0aGVuIHJldHVybmVkIG9yIHJhaXNlZCBieSA6bWV0aDpgX19nZXRpdGVtX19gLgorICAgICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIDptZXRoOmBfX2dldGl0ZW1fX2AgbWV0aG9kIG9mIHRoZQorICAgICAgICA6Y2xhc3M6YGRpY3RgIGNsYXNzIHdoZW4gdGhlIHJlcXVlc3RlZCBrZXkgaXMgbm90IGZvdW5kOyB3aGF0ZXZlciBpdAorICAgICAgICByZXR1cm5zIG9yIHJhaXNlcyBpcyB0aGVuIHJldHVybmVkIG9yIHJhaXNlZCBieSA6bWV0aDpgX19nZXRpdGVtX19gLgogCi0gICAgICBOb3RlIHRoYXQgOm1ldGg6YF9fbWlzc2luZ19fYCBpcyAqbm90KiBjYWxsZWQgZm9yIGFueSBvcGVyYXRpb25zIGJlc2lkZXMKLSAgICAgIDptZXRoOmBfX2dldGl0ZW1fX2AuIFRoaXMgbWVhbnMgdGhhdCA6bWV0aDpgZ2V0YCB3aWxsLCBsaWtlIG5vcm1hbAotICAgICAgZGljdGlvbmFyaWVzLCByZXR1cm4gYGBOb25lYGAgYXMgYSBkZWZhdWx0IHJhdGhlciB0aGFuIHVzaW5nCi0gICAgICA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YC4KKyAgICAgICAgTm90ZSB0aGF0IDptZXRoOmBfX21pc3NpbmdfX2AgaXMgKm5vdCogY2FsbGVkIGZvciBhbnkgb3BlcmF0aW9ucyBiZXNpZGVzCisgICAgICAgIDptZXRoOmBfX2dldGl0ZW1fX2AuIFRoaXMgbWVhbnMgdGhhdCA6bWV0aDpgZ2V0YCB3aWxsLCBsaWtlIG5vcm1hbAorICAgICAgICBkaWN0aW9uYXJpZXMsIHJldHVybiBgYE5vbmVgYCBhcyBhIGRlZmF1bHQgcmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgICAgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAuCiAKIAotICAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgdmFyaWFibGU6CisgICAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgdmFyaWFibGU6CiAKIAotICAgLi4gYXR0cmlidXRlOjogZGVmYXVsdF9mYWN0b3J5CisgICAgLi4gYXR0cmlidXRlOjogZGVmYXVsdF9mYWN0b3J5CiAKLSAgICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgYnkgdGhlIDptZXRoOmBfX21pc3NpbmdfX2AgbWV0aG9kOyBpdCBpcwotICAgICAgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCBpZiBwcmVzZW50LCBvciB0bwotICAgICAgYGBOb25lYGAsIGlmIGFic2VudC4KKyAgICAgICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBieSB0aGUgOm1ldGg6YF9fbWlzc2luZ19fYCBtZXRob2Q7IGl0IGlzCisgICAgICAgIGluaXRpYWxpemVkIGZyb20gdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciwgaWYgcHJlc2VudCwgb3IgdG8KKyAgICAgICAgYGBOb25lYGAsIGlmIGFic2VudC4KIAogCiA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBFeGFtcGxlcwpAQCAtNDkwLDEzICs2NjEsMTMgQEAKIFVzaW5nIDpjbGFzczpgbGlzdGAgYXMgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgLCBpdCBpcyBlYXN5IHRvIGdyb3VwIGEKIHNlcXVlbmNlIG9mIGtleS12YWx1ZSBwYWlycyBpbnRvIGEgZGljdGlvbmFyeSBvZiBsaXN0czoKIAotICAgPj4+IHMgPSBbKCd5ZWxsb3cnLCAxKSwgKCdibHVlJywgMiksICgneWVsbG93JywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpXQotICAgPj4+IGQgPSBkZWZhdWx0ZGljdChsaXN0KQotICAgPj4+IGZvciBrLCB2IGluIHM6Ci0gICAuLi4gICAgIGRba10uYXBwZW5kKHYpCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KKyAgICA+Pj4gcyA9IFsoJ3llbGxvdycsIDEpLCAoJ2JsdWUnLCAyKSwgKCd5ZWxsb3cnLCAzKSwgKCdibHVlJywgNCksICgncmVkJywgMSldCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChsaXN0KQorICAgID4+PiBmb3IgaywgdiBpbiBzOgorICAgIC4uLiAgICAgZFtrXS5hcHBlbmQodikKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChkLml0ZW1zKCkpCisgICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQogCiBXaGVuIGVhY2gga2V5IGlzIGVuY291bnRlcmVkIGZvciB0aGUgZmlyc3QgdGltZSwgaXQgaXMgbm90IGFscmVhZHkgaW4gdGhlCiBtYXBwaW5nOyBzbyBhbiBlbnRyeSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdXNpbmcgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgCkBAIC01MDYsMjQgKzY3NywyNCBAQAogOm1ldGg6YGxpc3QuYXBwZW5kYCBvcGVyYXRpb24gYWRkcyBhbm90aGVyIHZhbHVlIHRvIHRoZSBsaXN0LiBUaGlzIHRlY2huaXF1ZSBpcwogc2ltcGxlciBhbmQgZmFzdGVyIHRoYW4gYW4gZXF1aXZhbGVudCB0ZWNobmlxdWUgdXNpbmcgOm1ldGg6YGRpY3Quc2V0ZGVmYXVsdGA6CiAKLSAgID4+PiBkID0ge30KLSAgID4+PiBmb3IgaywgdiBpbiBzOgotICAgLi4uICAgICBkLnNldGRlZmF1bHQoaywgW10pLmFwcGVuZCh2KQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCisgICAgPj4+IGQgPSB7fQorICAgID4+PiBmb3IgaywgdiBpbiBzOgorICAgIC4uLiAgICAgZC5zZXRkZWZhdWx0KGssIFtdKS5hcHBlbmQodikKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChkLml0ZW1zKCkpCisgICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQogCiBTZXR0aW5nIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCB0byA6Y2xhc3M6YGludGAgbWFrZXMgdGhlCiA6Y2xhc3M6YGRlZmF1bHRkaWN0YCB1c2VmdWwgZm9yIGNvdW50aW5nIChsaWtlIGEgYmFnIG9yIG11bHRpc2V0IGluIG90aGVyCiBsYW5ndWFnZXMpOgogCi0gICA+Pj4gcyA9ICdtaXNzaXNzaXBwaScKLSAgID4+PiBkID0gZGVmYXVsdGRpY3QoaW50KQotICAgPj4+IGZvciBrIGluIHM6Ci0gICAuLi4gICAgIGRba10gKz0gMQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdpJywgNCksICgncCcsIDIpLCAoJ3MnLCA0KSwgKCdtJywgMSldCisgICAgPj4+IHMgPSAnbWlzc2lzc2lwcGknCisgICAgPj4+IGQgPSBkZWZhdWx0ZGljdChpbnQpCisgICAgPj4+IGZvciBrIGluIHM6CisgICAgLi4uICAgICBkW2tdICs9IDEKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChkLml0ZW1zKCkpCisgICAgWygnaScsIDQpLCAoJ3AnLCAyKSwgKCdzJywgNCksICgnbScsIDEpXQogCiBXaGVuIGEgbGV0dGVyIGlzIGZpcnN0IGVuY291bnRlcmVkLCBpdCBpcyBtaXNzaW5nIGZyb20gdGhlIG1hcHBpbmcsIHNvIHRoZQogOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAgZnVuY3Rpb24gY2FsbHMgOmZ1bmM6YGludGAgdG8gc3VwcGx5IGEgZGVmYXVsdCBjb3VudCBvZgpAQCAtNTM0LDIzICs3MDUsMjMgQEAKIGlzIHRvIHVzZSBhIGxhbWJkYSBmdW5jdGlvbiB3aGljaCBjYW4gc3VwcGx5IGFueSBjb25zdGFudCB2YWx1ZSAobm90IGp1c3QKIHplcm8pOgogCi0gICA+Pj4gZGVmIGNvbnN0YW50X2ZhY3RvcnkodmFsdWUpOgotICAgLi4uICAgICByZXR1cm4gbGFtYmRhOiB2YWx1ZQotICAgPj4+IGQgPSBkZWZhdWx0ZGljdChjb25zdGFudF9mYWN0b3J5KCc8bWlzc2luZz4nKSkKLSAgID4+PiBkLnVwZGF0ZShuYW1lPSdKb2huJywgYWN0aW9uPSdyYW4nKQotICAgPj4+ICclKG5hbWUpcyAlKGFjdGlvbilzIHRvICUob2JqZWN0KXMnICUgZAotICAgJ0pvaG4gcmFuIHRvIDxtaXNzaW5nPicKKyAgICA+Pj4gZGVmIGNvbnN0YW50X2ZhY3RvcnkodmFsdWUpOgorICAgIC4uLiAgICAgcmV0dXJuIGxhbWJkYTogdmFsdWUKKyAgICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGNvbnN0YW50X2ZhY3RvcnkoJzxtaXNzaW5nPicpKQorICAgID4+PiBkLnVwZGF0ZShuYW1lPSdKb2huJywgYWN0aW9uPSdyYW4nKQorICAgID4+PiAnJShuYW1lKXMgJShhY3Rpb24pcyB0byAlKG9iamVjdClzJyAlIGQKKyAgICAnSm9obiByYW4gdG8gPG1pc3Npbmc+JwogCiBTZXR0aW5nIHRoZSA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCB0byA6Y2xhc3M6YHNldGAgbWFrZXMgdGhlCiA6Y2xhc3M6YGRlZmF1bHRkaWN0YCB1c2VmdWwgZm9yIGJ1aWxkaW5nIGEgZGljdGlvbmFyeSBvZiBzZXRzOgogCi0gICA+Pj4gcyA9IFsoJ3JlZCcsIDEpLCAoJ2JsdWUnLCAyKSwgKCdyZWQnLCAzKSwgKCdibHVlJywgNCksICgncmVkJywgMSksICgnYmx1ZScsIDQpXQotICAgPj4+IGQgPSBkZWZhdWx0ZGljdChzZXQpCi0gICA+Pj4gZm9yIGssIHYgaW4gczoKLSAgIC4uLiAgICAgZFtrXS5hZGQodikKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnYmx1ZScsIHNldChbMiwgNF0pKSwgKCdyZWQnLCBzZXQoWzEsIDNdKSldCisgICAgPj4+IHMgPSBbKCdyZWQnLCAxKSwgKCdibHVlJywgMiksICgncmVkJywgMyksICgnYmx1ZScsIDQpLCAoJ3JlZCcsIDEpLCAoJ2JsdWUnLCA0KV0KKyAgICA+Pj4gZCA9IGRlZmF1bHRkaWN0KHNldCkKKyAgICA+Pj4gZm9yIGssIHYgaW4gczoKKyAgICAuLi4gICAgIGRba10uYWRkKHYpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZC5pdGVtcygpKQorICAgIFsoJ2JsdWUnLCB7MiwgNH0pLCAoJ3JlZCcsIHsxLCAzfSldCiAKIAogOmZ1bmM6YG5hbWVkdHVwbGVgIEZhY3RvcnkgRnVuY3Rpb24gZm9yIFR1cGxlcyB3aXRoIE5hbWVkIEZpZWxkcwpAQCAtNTYyLDE2OCArNzMzLDEzMSBAQAogCiAuLiBmdW5jdGlvbjo6IG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpCiAKLSAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bwotICAgY3JlYXRlIHR1cGxlLWxpa2Ugb2JqZWN0cyB0aGF0IGhhdmUgZmllbGRzIGFjY2Vzc2libGUgYnkgYXR0cmlidXRlIGxvb2t1cCBhcwotICAgd2VsbCBhcyBiZWluZyBpbmRleGFibGUgYW5kIGl0ZXJhYmxlLiAgSW5zdGFuY2VzIG9mIHRoZSBzdWJjbGFzcyBhbHNvIGhhdmUgYQotICAgaGVscGZ1bCBkb2NzdHJpbmcgKHdpdGggdHlwZW5hbWUgYW5kIGZpZWxkX25hbWVzKSBhbmQgYSBoZWxwZnVsIDptZXRoOmBfX3JlcHJfX2AKLSAgIG1ldGhvZCB3aGljaCBsaXN0cyB0aGUgdHVwbGUgY29udGVudHMgaW4gYSBgYG5hbWU9dmFsdWVgYCBmb3JtYXQuCisgICAgUmV0dXJucyBhIG5ldyB0dXBsZSBzdWJjbGFzcyBuYW1lZCAqdHlwZW5hbWUqLiAgVGhlIG5ldyBzdWJjbGFzcyBpcyB1c2VkIHRvCisgICAgY3JlYXRlIHR1cGxlLWxpa2Ugb2JqZWN0cyB0aGF0IGhhdmUgZmllbGRzIGFjY2Vzc2libGUgYnkgYXR0cmlidXRlIGxvb2t1cCBhcworICAgIHdlbGwgYXMgYmVpbmcgaW5kZXhhYmxlIGFuZCBpdGVyYWJsZS4gIEluc3RhbmNlcyBvZiB0aGUgc3ViY2xhc3MgYWxzbyBoYXZlIGEKKyAgICBoZWxwZnVsIGRvY3N0cmluZyAod2l0aCB0eXBlbmFtZSBhbmQgZmllbGRfbmFtZXMpIGFuZCBhIGhlbHBmdWwgOm1ldGg6YF9fcmVwcl9fYAorICAgIG1ldGhvZCB3aGljaCBsaXN0cyB0aGUgdHVwbGUgY29udGVudHMgaW4gYSBgYG5hbWU9dmFsdWVgYCBmb3JtYXQuCiAKLSAgIFRoZSAqZmllbGRfbmFtZXMqIGFyZSBhIHNpbmdsZSBzdHJpbmcgd2l0aCBlYWNoIGZpZWxkbmFtZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZQotICAgYW5kL29yIGNvbW1hcywgZm9yIGV4YW1wbGUgYGAneCB5J2BgIG9yIGBgJ3gsIHknYGAuICBBbHRlcm5hdGl2ZWx5LCAqZmllbGRfbmFtZXMqCi0gICBjYW4gYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHN1Y2ggYXMgYGBbJ3gnLCAneSddYGAuCisgICAgVGhlICpmaWVsZF9uYW1lcyogYXJlIGEgc2luZ2xlIHN0cmluZyB3aXRoIGVhY2ggZmllbGRuYW1lIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlCisgICAgYW5kL29yIGNvbW1hcywgZm9yIGV4YW1wbGUgYGAneCB5J2BgIG9yIGBgJ3gsIHknYGAuICBBbHRlcm5hdGl2ZWx5LCAqZmllbGRfbmFtZXMqCisgICAgY2FuIGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBzdWNoIGFzIGBgWyd4JywgJ3knXWBgLgogCi0gICBBbnkgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXIgbWF5IGJlIHVzZWQgZm9yIGEgZmllbGRuYW1lIGV4Y2VwdCBmb3IgbmFtZXMKLSAgIHN0YXJ0aW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFZhbGlkIGlkZW50aWZpZXJzIGNvbnNpc3Qgb2YgbGV0dGVycywgZGlnaXRzLAotICAgYW5kIHVuZGVyc2NvcmVzIGJ1dCBkbyBub3Qgc3RhcnQgd2l0aCBhIGRpZ2l0IG9yIHVuZGVyc2NvcmUgYW5kIGNhbm5vdCBiZQotICAgYSA6bW9kOmBrZXl3b3JkYCBzdWNoIGFzICpjbGFzcyosICpmb3IqLCAqcmV0dXJuKiwgKmdsb2JhbCosICpwYXNzKiwKLSAgIG9yICpyYWlzZSouCisgICAgQW55IHZhbGlkIFB5dGhvbiBpZGVudGlmaWVyIG1heSBiZSB1c2VkIGZvciBhIGZpZWxkbmFtZSBleGNlcHQgZm9yIG5hbWVzCisgICAgc3RhcnRpbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVmFsaWQgaWRlbnRpZmllcnMgY29uc2lzdCBvZiBsZXR0ZXJzLCBkaWdpdHMsCisgICAgYW5kIHVuZGVyc2NvcmVzIGJ1dCBkbyBub3Qgc3RhcnQgd2l0aCBhIGRpZ2l0IG9yIHVuZGVyc2NvcmUgYW5kIGNhbm5vdCBiZQorICAgIGEgOm1vZDpga2V5d29yZGAgc3VjaCBhcyAqY2xhc3MqLCAqZm9yKiwgKnJldHVybiosICpnbG9iYWwqLCAqcGFzcyosCisgICAgb3IgKnJhaXNlKi4KIAotICAgSWYgKnJlbmFtZSogaXMgdHJ1ZSwgaW52YWxpZCBmaWVsZG5hbWVzIGFyZSBhdXRvbWF0aWNhbGx5IHJlcGxhY2VkCi0gICB3aXRoIHBvc2l0aW9uYWwgbmFtZXMuICBGb3IgZXhhbXBsZSwgYGBbJ2FiYycsICdkZWYnLCAnZ2hpJywgJ2FiYyddYGAgaXMKLSAgIGNvbnZlcnRlZCB0byBgYFsnYWJjJywgJ18xJywgJ2doaScsICdfMyddYGAsIGVsaW1pbmF0aW5nIHRoZSBrZXl3b3JkCi0gICBgYGRlZmBgIGFuZCB0aGUgZHVwbGljYXRlIGZpZWxkbmFtZSBgYGFiY2BgLgorICAgIElmICpyZW5hbWUqIGlzIHRydWUsIGludmFsaWQgZmllbGRuYW1lcyBhcmUgYXV0b21hdGljYWxseSByZXBsYWNlZAorICAgIHdpdGggcG9zaXRpb25hbCBuYW1lcy4gIEZvciBleGFtcGxlLCBgYFsnYWJjJywgJ2RlZicsICdnaGknLCAnYWJjJ11gYCBpcworICAgIGNvbnZlcnRlZCB0byBgYFsnYWJjJywgJ18xJywgJ2doaScsICdfMyddYGAsIGVsaW1pbmF0aW5nIHRoZSBrZXl3b3JkCisgICAgYGBkZWZgYCBhbmQgdGhlIGR1cGxpY2F0ZSBmaWVsZG5hbWUgYGBhYmNgYC4KIAotICAgSWYgKnZlcmJvc2UqIGlzIHRydWUsIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHByaW50ZWQganVzdCBiZWZvcmUgYmVpbmcgYnVpbHQuCisgICAgSWYgKnZlcmJvc2UqIGlzIHRydWUsIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHByaW50ZWQgYWZ0ZXIgaXQgaXMKKyAgICBidWlsdC4gIFRoaXMgb3B0aW9uIGlzIG91dGRhdGVkOyBpbnN0ZWFkLCBpdCBpcyBzaW1wbGVyIHRvIHByaW50IHRoZQorICAgIDphdHRyOmBfc291cmNlYCBhdHRyaWJ1dGUuCiAKLSAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQotICAgbGlnaHR3ZWlnaHQgYW5kIHJlcXVpcmUgbm8gbW9yZSBtZW1vcnkgdGhhbiByZWd1bGFyIHR1cGxlcy4KKyAgICBOYW1lZCB0dXBsZSBpbnN0YW5jZXMgZG8gbm90IGhhdmUgcGVyLWluc3RhbmNlIGRpY3Rpb25hcmllcywgc28gdGhleSBhcmUKKyAgICBsaWdodHdlaWdodCBhbmQgcmVxdWlyZSBubyBtb3JlIG1lbW9yeSB0aGFuIHJlZ3VsYXIgdHVwbGVzLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKnJlbmFtZSouCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKKyAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKnJlbmFtZSouCiAKIAogLi4gZG9jdGVzdDo6Ci0gICA6b3B0aW9uczogK05PUk1BTElaRV9XSElURVNQQUNFCisgICAgOm9wdGlvbnM6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRQogCi0gICA+Pj4gIyBCYXNpYyBleGFtcGxlCi0gICA+Pj4gUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCi0gICA+Pj4gcCA9IFBvaW50KHg9MTAsIHk9MTEpCi0KLSAgID4+PiAjIEV4YW1wbGUgdXNpbmcgdGhlIHZlcmJvc2Ugb3B0aW9uIHRvIHByaW50IHRoZSBjbGFzcyBkZWZpbml0aW9uCi0gICA+Pj4gUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknLCB2ZXJib3NlPVRydWUpCi0gICBjbGFzcyBQb2ludCh0dXBsZSk6Ci0gICAgICAgICAgICdQb2ludCh4LCB5KScKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBfZmllbGRzID0gKCd4JywgJ3knKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9fbmV3X18oX2NscywgeCwgeSk6Ci0gICAgICAgICAgICAgICAnQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIFBvaW50KHgsIHkpJwotICAgICAgICAgICAgICAgcmV0dXJuIF90dXBsZS5fX25ld19fKF9jbHMsICh4LCB5KSkKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIEBjbGFzc21ldGhvZAotICAgICAgICAgICBkZWYgX21ha2UoY2xzLCBpdGVyYWJsZSwgbmV3PXR1cGxlLl9fbmV3X18sIGxlbj1sZW4pOgotICAgICAgICAgICAgICAgJ01ha2UgYSBuZXcgUG9pbnQgb2JqZWN0IGZyb20gYSBzZXF1ZW5jZSBvciBpdGVyYWJsZScKLSAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyhjbHMsIGl0ZXJhYmxlKQotICAgICAgICAgICAgICAgaWYgbGVuKHJlc3VsdCkgIT0gMjoKLSAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0V4cGVjdGVkIDIgYXJndW1lbnRzLCBnb3QgJWQnICUgbGVuKHJlc3VsdCkpCi0gICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIGEgbmljZWx5IGZvcm1hdHRlZCByZXByZXNlbnRhdGlvbiBzdHJpbmcnCi0gICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uX19uYW1lX18gKyAnKHg9JXIsIHk9JXIpJyAlIHNlbGYKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfYXNkaWN0KHNlbGYpOgotICAgICAgICAgICAgICAgJ1JldHVybiBhIG5ldyBPcmRlcmVkRGljdCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIHZhbHVlcycKLSAgICAgICAgICAgICAgIHJldHVybiBPcmRlcmVkRGljdCh6aXAoc2VsZi5fZmllbGRzLCBzZWxmKSkKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIF9fZGljdF9fID0gcHJvcGVydHkoX2FzZGljdCkKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfcmVwbGFjZShfc2VsZiwgKiprd2RzKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gYSBuZXcgUG9pbnQgb2JqZWN0IHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3IHZhbHVlcycKLSAgICAgICAgICAgICAgIHJlc3VsdCA9IF9zZWxmLl9tYWtlKG1hcChrd2RzLnBvcCwgKCd4JywgJ3knKSwgX3NlbGYpKQotICAgICAgICAgICAgICAgaWYga3dkczoKLSAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdHb3QgdW5leHBlY3RlZCBmaWVsZCBuYW1lczogJXInICUgbGlzdChrd2RzLmtleXMoKSkpCi0gICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIHNlbGYgYXMgYSBwbGFpbiB0dXBsZS4gICBVc2VkIGJ5IGNvcHkgYW5kIHBpY2tsZS4nCi0gICAgICAgICAgICAgICByZXR1cm4gdHVwbGUoc2VsZikKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIHggPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoMCksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciAwJykKLSAgICAgICAgICAgeSA9IF9wcm9wZXJ0eShfaXRlbWdldHRlcigxKSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIDEnKQotCi0gICA+Pj4gcCA9IFBvaW50KDExLCB5PTIyKSAgICAgIyBpbnN0YW50aWF0ZSB3aXRoIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMKLSAgID4+PiBwWzBdICsgcFsxXSAgICAgICAgICAgICAjIGluZGV4YWJsZSBsaWtlIHRoZSBwbGFpbiB0dXBsZSAoMTEsIDIyKQotICAgMzMKLSAgID4+PiB4LCB5ID0gcCAgICAgICAgICAgICAgICAjIHVucGFjayBsaWtlIGEgcmVndWxhciB0dXBsZQotICAgPj4+IHgsIHkKLSAgICgxMSwgMjIpCi0gICA+Pj4gcC54ICsgcC55ICAgICAgICAgICAgICAgIyBmaWVsZHMgYWxzbyBhY2Nlc3NpYmxlIGJ5IG5hbWUKLSAgIDMzCi0gICA+Pj4gcCAgICAgICAgICAgICAgICAgICAgICAgIyByZWFkYWJsZSBfX3JlcHJfXyB3aXRoIGEgbmFtZT12YWx1ZSBzdHlsZQotICAgUG9pbnQoeD0xMSwgeT0yMikKKyAgICA+Pj4gIyBCYXNpYyBleGFtcGxlCisgICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQorICAgID4+PiBwID0gUG9pbnQoMTEsIHk9MjIpICAgICAjIGluc3RhbnRpYXRlIHdpdGggcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cworICAgID4+PiBwWzBdICsgcFsxXSAgICAgICAgICAgICAjIGluZGV4YWJsZSBsaWtlIHRoZSBwbGFpbiB0dXBsZSAoMTEsIDIyKQorICAgIDMzCisgICAgPj4+IHgsIHkgPSBwICAgICAgICAgICAgICAgICMgdW5wYWNrIGxpa2UgYSByZWd1bGFyIHR1cGxlCisgICAgPj4+IHgsIHkKKyAgICAoMTEsIDIyKQorICAgID4+PiBwLnggKyBwLnkgICAgICAgICAgICAgICAjIGZpZWxkcyBhbHNvIGFjY2Vzc2libGUgYnkgbmFtZQorICAgIDMzCisgICAgPj4+IHAgICAgICAgICAgICAgICAgICAgICAgICMgcmVhZGFibGUgX19yZXByX18gd2l0aCBhIG5hbWU9dmFsdWUgc3R5bGUKKyAgICBQb2ludCh4PTExLCB5PTIyKQogCiBOYW1lZCB0dXBsZXMgYXJlIGVzcGVjaWFsbHkgdXNlZnVsIGZvciBhc3NpZ25pbmcgZmllbGQgbmFtZXMgdG8gcmVzdWx0IHR1cGxlcyByZXR1cm5lZAogYnkgdGhlIDptb2Q6YGNzdmAgb3IgOm1vZDpgc3FsaXRlM2AgbW9kdWxlczo6CiAKLSAgIEVtcGxveWVlUmVjb3JkID0gbmFtZWR0dXBsZSgnRW1wbG95ZWVSZWNvcmQnLCAnbmFtZSwgYWdlLCB0aXRsZSwgZGVwYXJ0bWVudCwgcGF5Z3JhZGUnKQorICAgIEVtcGxveWVlUmVjb3JkID0gbmFtZWR0dXBsZSgnRW1wbG95ZWVSZWNvcmQnLCAnbmFtZSwgYWdlLCB0aXRsZSwgZGVwYXJ0bWVudCwgcGF5Z3JhZGUnKQogCi0gICBpbXBvcnQgY3N2Ci0gICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3N2LnJlYWRlcihvcGVuKCJlbXBsb3llZXMuY3N2IiwgInJiIikpKToKLSAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQorICAgIGltcG9ydCBjc3YKKyAgICBmb3IgZW1wIGluIG1hcChFbXBsb3llZVJlY29yZC5fbWFrZSwgY3N2LnJlYWRlcihvcGVuKCJlbXBsb3llZXMuY3N2IiwgInJiIikpKToKKyAgICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKIAotICAgaW1wb3J0IHNxbGl0ZTMKLSAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoJy9jb21wYW55ZGF0YScpCi0gICBjdXJzb3IgPSBjb25uLmN1cnNvcigpCi0gICBjdXJzb3IuZXhlY3V0ZSgnU0VMRUNUIG5hbWUsIGFnZSwgdGl0bGUsIGRlcGFydG1lbnQsIHBheWdyYWRlIEZST00gZW1wbG95ZWVzJykKLSAgIGZvciBlbXAgaW4gbWFwKEVtcGxveWVlUmVjb3JkLl9tYWtlLCBjdXJzb3IuZmV0Y2hhbGwoKSk6Ci0gICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKKyAgICBpbXBvcnQgc3FsaXRlMworICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoJy9jb21wYW55ZGF0YScpCisgICAgY3Vyc29yID0gY29ubi5jdXJzb3IoKQorICAgIGN1cnNvci5leGVjdXRlKCdTRUxFQ1QgbmFtZSwgYWdlLCB0aXRsZSwgZGVwYXJ0bWVudCwgcGF5Z3JhZGUgRlJPTSBlbXBsb3llZXMnKQorICAgIGZvciBlbXAgaW4gbWFwKEVtcGxveWVlUmVjb3JkLl9tYWtlLCBjdXJzb3IuZmV0Y2hhbGwoKSk6CisgICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIGluaGVyaXRlZCBmcm9tIHR1cGxlcywgbmFtZWQgdHVwbGVzIHN1cHBvcnQKLXRocmVlIGFkZGl0aW9uYWwgbWV0aG9kcyBhbmQgb25lIGF0dHJpYnV0ZS4gIFRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGgKK3RocmVlIGFkZGl0aW9uYWwgbWV0aG9kcyBhbmQgdHdvIGF0dHJpYnV0ZXMuICBUbyBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoCiBmaWVsZCBuYW1lcywgdGhlIG1ldGhvZCBhbmQgYXR0cmlidXRlIG5hbWVzIHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZS4KIAogLi4gY2xhc3NtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fbWFrZShpdGVyYWJsZSkKIAotICAgQ2xhc3MgbWV0aG9kIHRoYXQgbWFrZXMgYSBuZXcgaW5zdGFuY2UgZnJvbSBhbiBleGlzdGluZyBzZXF1ZW5jZSBvciBpdGVyYWJsZS4KKyAgICBDbGFzcyBtZXRob2QgdGhhdCBtYWtlcyBhIG5ldyBpbnN0YW5jZSBmcm9tIGFuIGV4aXN0aW5nIHNlcXVlbmNlIG9yIGl0ZXJhYmxlLgogCi0uLiBkb2N0ZXN0OjoKKyAgICAuLiBkb2N0ZXN0OjoKIAotICAgICAgPj4+IHQgPSBbMTEsIDIyXQotICAgICAgPj4+IFBvaW50Ll9tYWtlKHQpCi0gICAgICBQb2ludCh4PTExLCB5PTIyKQorICAgICAgICA+Pj4gdCA9IFsxMSwgMjJdCisgICAgICAgID4+PiBQb2ludC5fbWFrZSh0KQorICAgICAgICBQb2ludCh4PTExLCB5PTIyKQogCiAuLiBtZXRob2Q6OiBzb21lbmFtZWR0dXBsZS5fYXNkaWN0KCkKIAotICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgT3JkZXJlZERpY3RgIHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZwotICAgdmFsdWVzOjoKKyAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCisgICAgdmFsdWVzLiAgTm90ZSwgdGhpcyBtZXRob2QgaXMgbm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCB0aGUgc2FtZSBlZmZlY3QgY2FuCisgICAgYmUgYWNoaWV2ZWQgYnkgdXNpbmcgdGhlIGJ1aWx0LWluIDpmdW5jOmB2YXJzYCBmdW5jdGlvbjo6CiAKLSAgICAgID4+PiBwLl9hc2RpY3QoKQotICAgICAgT3JkZXJlZERpY3QoWygneCcsIDExKSwgKCd5JywgMjIpXSkKKyAgICAgICAgPj4+IHZhcnMocCkKKyAgICAgICAgT3JkZXJlZERpY3QoWygneCcsIDExKSwgKCd5JywgMjIpXSkKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKLSAgICAgIFJldHVybnMgYW4gOmNsYXNzOmBPcmRlcmVkRGljdGAgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgOmNsYXNzOmBkaWN0YC4KKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQorICAgICAgICBSZXR1cm5zIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIGluc3RlYWQgb2YgYSByZWd1bGFyIDpjbGFzczpgZGljdGAuCiAKIC4uIG1ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9yZXBsYWNlKGt3YXJncykKIAotICAgUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBuYW1lZCB0dXBsZSByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldwotICAgdmFsdWVzOgorICAgIFJldHVybiBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgbmFtZWQgdHVwbGUgcmVwbGFjaW5nIHNwZWNpZmllZCBmaWVsZHMgd2l0aCBuZXcKKyAgICB2YWx1ZXM6OgogCi06OgorICAgICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCisgICAgICAgID4+PiBwLl9yZXBsYWNlKHg9MzMpCisgICAgICAgIFBvaW50KHg9MzMsIHk9MjIpCiAKLSAgICAgID4+PiBwID0gUG9pbnQoeD0xMSwgeT0yMikKLSAgICAgID4+PiBwLl9yZXBsYWNlKHg9MzMpCi0gICAgICBQb2ludCh4PTMzLCB5PTIyKQorICAgICAgICA+Pj4gZm9yIHBhcnRudW0sIHJlY29yZCBpbiBpbnZlbnRvcnkuaXRlbXMoKToKKyAgICAgICAgLi4uICAgICBpbnZlbnRvcnlbcGFydG51bV0gPSByZWNvcmQuX3JlcGxhY2UocHJpY2U9bmV3cHJpY2VzW3BhcnRudW1dLCB0aW1lc3RhbXA9dGltZS5ub3coKSkKIAotICAgICAgPj4+IGZvciBwYXJ0bnVtLCByZWNvcmQgaW4gaW52ZW50b3J5Lml0ZW1zKCk6Ci0gICAgICAuLi4gICAgIGludmVudG9yeVtwYXJ0bnVtXSA9IHJlY29yZC5fcmVwbGFjZShwcmljZT1uZXdwcmljZXNbcGFydG51bV0sIHRpbWVzdGFtcD10aW1lLm5vdygpKQorLi4gYXR0cmlidXRlOjogc29tZW5hbWVkdHVwbGUuX3NvdXJjZQorCisgICAgQSBzdHJpbmcgd2l0aCB0aGUgcHVyZSBQeXRob24gc291cmNlIGNvZGUgdXNlZCB0byBjcmVhdGUgdGhlIG5hbWVkCisgICAgdHVwbGUgY2xhc3MuICBUaGUgc291cmNlIG1ha2VzIHRoZSBuYW1lZCB0dXBsZSBzZWxmLWRvY3VtZW50aW5nLgorICAgIEl0IGNhbiBiZSBwcmludGVkLCBleGVjdXRlZCB1c2luZyA6ZnVuYzpgZXhlY2AsIG9yIHNhdmVkIHRvIGEgZmlsZQorICAgIGFuZCBpbXBvcnRlZC4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBhdHRyaWJ1dGU6OiBzb21lbmFtZWR0dXBsZS5fZmllbGRzCiAKLSAgIFR1cGxlIG9mIHN0cmluZ3MgbGlzdGluZyB0aGUgZmllbGQgbmFtZXMuICBVc2VmdWwgZm9yIGludHJvc3BlY3Rpb24KLSAgIGFuZCBmb3IgY3JlYXRpbmcgbmV3IG5hbWVkIHR1cGxlIHR5cGVzIGZyb20gZXhpc3RpbmcgbmFtZWQgdHVwbGVzLgorICAgIFR1cGxlIG9mIHN0cmluZ3MgbGlzdGluZyB0aGUgZmllbGQgbmFtZXMuICBVc2VmdWwgZm9yIGludHJvc3BlY3Rpb24KKyAgICBhbmQgZm9yIGNyZWF0aW5nIG5ldyBuYW1lZCB0dXBsZSB0eXBlcyBmcm9tIGV4aXN0aW5nIG5hbWVkIHR1cGxlcy4KIAotLi4gZG9jdGVzdDo6CisgICAgLi4gZG9jdGVzdDo6CiAKLSAgICAgID4+PiBwLl9maWVsZHMgICAgICAgICAgICAjIHZpZXcgdGhlIGZpZWxkIG5hbWVzCi0gICAgICAoJ3gnLCAneScpCisgICAgICAgID4+PiBwLl9maWVsZHMgICAgICAgICAgICAjIHZpZXcgdGhlIGZpZWxkIG5hbWVzCisgICAgICAgICgneCcsICd5JykKIAotICAgICAgPj4+IENvbG9yID0gbmFtZWR0dXBsZSgnQ29sb3InLCAncmVkIGdyZWVuIGJsdWUnKQotICAgICAgPj4+IFBpeGVsID0gbmFtZWR0dXBsZSgnUGl4ZWwnLCBQb2ludC5fZmllbGRzICsgQ29sb3IuX2ZpZWxkcykKLSAgICAgID4+PiBQaXhlbCgxMSwgMjIsIDEyOCwgMjU1LCAwKQotICAgICAgUGl4ZWwoeD0xMSwgeT0yMiwgcmVkPTEyOCwgZ3JlZW49MjU1LCBibHVlPTApCisgICAgICAgID4+PiBDb2xvciA9IG5hbWVkdHVwbGUoJ0NvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKKyAgICAgICAgPj4+IFBpeGVsID0gbmFtZWR0dXBsZSgnUGl4ZWwnLCBQb2ludC5fZmllbGRzICsgQ29sb3IuX2ZpZWxkcykKKyAgICAgICAgPj4+IFBpeGVsKDExLCAyMiwgMTI4LCAyNTUsIDApCisgICAgICAgIFBpeGVsKHg9MTEsIHk9MjIsIHJlZD0xMjgsIGdyZWVuPTI1NSwgYmx1ZT0wKQogCiBUbyByZXRyaWV2ZSBhIGZpZWxkIHdob3NlIG5hbWUgaXMgc3RvcmVkIGluIGEgc3RyaW5nLCB1c2UgdGhlIDpmdW5jOmBnZXRhdHRyYAogZnVuY3Rpb246CkBAIC03MzQsMzEgKzg2OCwzMCBAQAogVG8gY29udmVydCBhIGRpY3Rpb25hcnkgdG8gYSBuYW1lZCB0dXBsZSwgdXNlIHRoZSBkb3VibGUtc3Rhci1vcGVyYXRvcgogKGFzIGRlc2NyaWJlZCBpbiA6cmVmOmB0dXQtdW5wYWNraW5nLWFyZ3VtZW50c2ApOgogCi0gICA+Pj4gZCA9IHsneCc6IDExLCAneSc6IDIyfQotICAgPj4+IFBvaW50KCoqZCkKLSAgIFBvaW50KHg9MTEsIHk9MjIpCisgICAgPj4+IGQgPSB7J3gnOiAxMSwgJ3knOiAyMn0KKyAgICA+Pj4gUG9pbnQoKipkKQorICAgIFBvaW50KHg9MTEsIHk9MjIpCiAKIFNpbmNlIGEgbmFtZWQgdHVwbGUgaXMgYSByZWd1bGFyIFB5dGhvbiBjbGFzcywgaXQgaXMgZWFzeSB0byBhZGQgb3IgY2hhbmdlCiBmdW5jdGlvbmFsaXR5IHdpdGggYSBzdWJjbGFzcy4gIEhlcmUgaXMgaG93IHRvIGFkZCBhIGNhbGN1bGF0ZWQgZmllbGQgYW5kCiBhIGZpeGVkLXdpZHRoIHByaW50IGZvcm1hdDoKIAogICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgICAgICAgICAgQHByb3BlcnR5Ci0gICAgICAgICAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKKyAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiBoeXBvdChzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41CisgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQogCiAgICAgPj4+IGZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83KToKLSAgICAgICAgICAgIHByaW50KHApCisgICAgICAgIHByaW50KHApCiAgICAgUG9pbnQ6IHg9IDMuMDAwICB5PSA0LjAwMCAgaHlwb3Q9IDUuMDAwCiAgICAgUG9pbnQ6IHg9MTQuMDAwICB5PSAwLjcxNCAgaHlwb3Q9MTQuMDE4CiAKIFRoZSBzdWJjbGFzcyBzaG93biBhYm92ZSBzZXRzIGBgX19zbG90c19fYGAgdG8gYW4gZW1wdHkgdHVwbGUuICBUaGlzIGhlbHBzCiBrZWVwIG1lbW9yeSByZXF1aXJlbWVudHMgbG93IGJ5IHByZXZlbnRpbmcgdGhlIGNyZWF0aW9uIG9mIGluc3RhbmNlIGRpY3Rpb25hcmllcy4KIAotCiBTdWJjbGFzc2luZyBpcyBub3QgdXNlZnVsIGZvciBhZGRpbmcgbmV3LCBzdG9yZWQgZmllbGRzLiAgSW5zdGVhZCwgc2ltcGx5CiBjcmVhdGUgYSBuZXcgbmFtZWQgdHVwbGUgdHlwZSBmcm9tIHRoZSA6YXR0cjpgX2ZpZWxkc2AgYXR0cmlidXRlOgogCkBAIC03NzAsNiArOTAzLDcgQEAKICAgICA+Pj4gQWNjb3VudCA9IG5hbWVkdHVwbGUoJ0FjY291bnQnLCAnb3duZXIgYmFsYW5jZSB0cmFuc2FjdGlvbl9jb3VudCcpCiAgICAgPj4+IGRlZmF1bHRfYWNjb3VudCA9IEFjY291bnQoJzxvd25lciBuYW1lPicsIDAuMCwgMCkKICAgICA+Pj4gam9obnNfYWNjb3VudCA9IGRlZmF1bHRfYWNjb3VudC5fcmVwbGFjZShvd25lcj0nSm9obicpCisgICAgPj4+IGphbmVzX2FjY291bnQgPSBkZWZhdWx0X2FjY291bnQuX3JlcGxhY2Uob3duZXI9J0phbmUnKQogCiBFbnVtZXJhdGVkIGNvbnN0YW50cyBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aCBuYW1lZCB0dXBsZXMsIGJ1dCBpdCBpcyBzaW1wbGVyCiBhbmQgbW9yZSBlZmZpY2llbnQgdG8gdXNlIGEgc2ltcGxlIGNsYXNzIGRlY2xhcmF0aW9uOgpAQCAtNzc4LDE5ICs5MTIsMTkgQEAKICAgICA+Pj4gU3RhdHVzLm9wZW4sIFN0YXR1cy5wZW5kaW5nLCBTdGF0dXMuY2xvc2VkCiAgICAgKDAsIDEsIDIpCiAgICAgPj4+IGNsYXNzIFN0YXR1czoKLSAgICAgICAgICAgIG9wZW4sIHBlbmRpbmcsIGNsb3NlZCA9IHJhbmdlKDMpCisgICAgICAgIG9wZW4sIHBlbmRpbmcsIGNsb3NlZCA9IHJhbmdlKDMpCiAKIC4uIHNlZWFsc286OgogCi0gICAqIGBOYW1lZCB0dXBsZSByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzUwMDI2MS8+YF8KLSAgICAgYWRhcHRlZCBmb3IgUHl0aG9uIDIuNC4KKyAgICAqIGBOYW1lZCB0dXBsZSByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzUwMDI2MS8+YF8KKyAgICAgIGFkYXB0ZWQgZm9yIFB5dGhvbiAyLjQuCiAKLSAgICogYFJlY2lwZSBmb3IgbmFtZWQgdHVwbGUgYWJzdHJhY3QgYmFzZSBjbGFzcyB3aXRoIGEgbWV0YWNsYXNzIG1peC1pbgotICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NjI5LW5hbWVkdHVwbGVhYmMtYWJzdHJhY3QtYmFzZS1jbGFzcy1taXgtaW4tZm9yLW5hbWVkLz5gXwotICAgICBieSBKYW4gS2FsaXN6ZXdza2kuICBCZXNpZGVzIHByb3ZpZGluZyBhbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yCi0gICAgIG5hbWVkIHR1cGxlcywgaXQgYWxzbyBzdXBwb3J0cyBhbiBhbHRlcm5hdGUgOnRlcm06YG1ldGFjbGFzc2AtYmFzZWQKLSAgICAgY29uc3RydWN0b3IgdGhhdCBpcyBjb252ZW5pZW50IGZvciB1c2UgY2FzZXMgd2hlcmUgbmFtZWQgdHVwbGVzIGFyZSBiZWluZwotICAgICBzdWJjbGFzc2VkLgorICAgICogYFJlY2lwZSBmb3IgbmFtZWQgdHVwbGUgYWJzdHJhY3QgYmFzZSBjbGFzcyB3aXRoIGEgbWV0YWNsYXNzIG1peC1pbgorICAgICAgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NzYyOS1uYW1lZHR1cGxlYWJjLWFic3RyYWN0LWJhc2UtY2xhc3MtbWl4LWluLWZvci1uYW1lZC8+YF8KKyAgICAgIGJ5IEphbiBLYWxpc3pld3NraS4gIEJlc2lkZXMgcHJvdmlkaW5nIGFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IKKyAgICAgIG5hbWVkIHR1cGxlcywgaXQgYWxzbyBzdXBwb3J0cyBhbiBhbHRlcm5hdGUgOnRlcm06YG1ldGFjbGFzc2AtYmFzZWQKKyAgICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKKyAgICAgIHN1YmNsYXNzZWQuCiAKIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgb2JqZWN0cwpAQCAtODAyLDM2ICs5MzYsMzYgQEAKIAogLi4gY2xhc3M6OiBPcmRlcmVkRGljdChbaXRlbXNdKQogCi0gICBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBkaWN0IHN1YmNsYXNzLCBzdXBwb3J0aW5nIHRoZSB1c3VhbCA6Y2xhc3M6YGRpY3RgCi0gICBtZXRob2RzLiAgQW4gKk9yZGVyZWREaWN0KiBpcyBhIGRpY3QgdGhhdCByZW1lbWJlcnMgdGhlIG9yZGVyIHRoYXQga2V5cwotICAgd2VyZSBmaXJzdCBpbnNlcnRlZC4gSWYgYSBuZXcgZW50cnkgb3ZlcndyaXRlcyBhbiBleGlzdGluZyBlbnRyeSwgdGhlCi0gICBvcmlnaW5hbCBpbnNlcnRpb24gcG9zaXRpb24gaXMgbGVmdCB1bmNoYW5nZWQuICBEZWxldGluZyBhbiBlbnRyeSBhbmQKLSAgIHJlaW5zZXJ0aW5nIGl0IHdpbGwgbW92ZSBpdCB0byB0aGUgZW5kLgorICAgIFJldHVybiBhbiBpbnN0YW5jZSBvZiBhIGRpY3Qgc3ViY2xhc3MsIHN1cHBvcnRpbmcgdGhlIHVzdWFsIDpjbGFzczpgZGljdGAKKyAgICBtZXRob2RzLiAgQW4gKk9yZGVyZWREaWN0KiBpcyBhIGRpY3QgdGhhdCByZW1lbWJlcnMgdGhlIG9yZGVyIHRoYXQga2V5cworICAgIHdlcmUgZmlyc3QgaW5zZXJ0ZWQuIElmIGEgbmV3IGVudHJ5IG92ZXJ3cml0ZXMgYW4gZXhpc3RpbmcgZW50cnksIHRoZQorICAgIG9yaWdpbmFsIGluc2VydGlvbiBwb3NpdGlvbiBpcyBsZWZ0IHVuY2hhbmdlZC4gIERlbGV0aW5nIGFuIGVudHJ5IGFuZAorICAgIHJlaW5zZXJ0aW5nIGl0IHdpbGwgbW92ZSBpdCB0byB0aGUgZW5kLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAotICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCisgICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCiAKLSAgICAgIFRoZSA6bWV0aDpgcG9waXRlbWAgbWV0aG9kIGZvciBvcmRlcmVkIGRpY3Rpb25hcmllcyByZXR1cm5zIGFuZCByZW1vdmVzIGEKLSAgICAgIChrZXksIHZhbHVlKSBwYWlyLiAgVGhlIHBhaXJzIGFyZSByZXR1cm5lZCBpbiBMSUZPIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCi0gICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgorICAgICAgICBUaGUgOm1ldGg6YHBvcGl0ZW1gIG1ldGhvZCBmb3Igb3JkZXJlZCBkaWN0aW9uYXJpZXMgcmV0dXJucyBhbmQgcmVtb3ZlcyBhCisgICAgICAgIChrZXksIHZhbHVlKSBwYWlyLiAgVGhlIHBhaXJzIGFyZSByZXR1cm5lZCBpbiBMSUZPIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCisgICAgICAgIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuCiAKLSAgIC4uIG1ldGhvZDo6IG1vdmVfdG9fZW5kKGtleSwgbGFzdD1UcnVlKQorICAgIC4uIG1ldGhvZDo6IG1vdmVfdG9fZW5kKGtleSwgbGFzdD1UcnVlKQogCi0gICAgICBNb3ZlIGFuIGV4aXN0aW5nICprZXkqIHRvIGVpdGhlciBlbmQgb2YgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LiAgVGhlIGl0ZW0KLSAgICAgIGlzIG1vdmVkIHRvIHRoZSByaWdodCBlbmQgaWYgKmxhc3QqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSBvciB0byB0aGUKLSAgICAgIGJlZ2lubmluZyBpZiAqbGFzdCogaXMgZmFsc2UuICBSYWlzZXMgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSAqa2V5KiBkb2VzCi0gICAgICBub3QgZXhpc3Q6OgorICAgICAgICBNb3ZlIGFuIGV4aXN0aW5nICprZXkqIHRvIGVpdGhlciBlbmQgb2YgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LiAgVGhlIGl0ZW0KKyAgICAgICAgaXMgbW92ZWQgdG8gdGhlIHJpZ2h0IGVuZCBpZiAqbGFzdCogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpIG9yIHRvIHRoZQorICAgICAgICBiZWdpbm5pbmcgaWYgKmxhc3QqIGlzIGZhbHNlLiAgUmFpc2VzIDpleGM6YEtleUVycm9yYCBpZiB0aGUgKmtleSogZG9lcworICAgICAgICBub3QgZXhpc3Q6OgogCi0gICAgICAgICAgPj4+IGQgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjZGUnKQotICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJykKLSAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKLSAgICAgICAgICAnYWNkZWInCi0gICAgICAgICAgPj4+IGQubW92ZV90b19lbmQoJ2InLCBsYXN0PUZhbHNlKQotICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQotICAgICAgICAgICdiYWNkZScKKyAgICAgICAgICAgID4+PiBkID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKKyAgICAgICAgICAgID4+PiBkLm1vdmVfdG9fZW5kKCdiJykKKyAgICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQorICAgICAgICAgICAgJ2FjZGViJworICAgICAgICAgICAgPj4+IGQubW92ZV90b19lbmQoJ2InLCBsYXN0PUZhbHNlKQorICAgICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCisgICAgICAgICAgICAnYmFjZGUnCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogSW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIG1hcHBpbmcgbWV0aG9kcywgb3JkZXJlZCBkaWN0aW9uYXJpZXMgYWxzbyBzdXBwb3J0CiByZXZlcnNlIGl0ZXJhdGlvbiB1c2luZyA6ZnVuYzpgcmV2ZXJzZWRgLgpAQCAtODQ5LDggKzk4Myw4IEBACiAKIC4uIHNlZWFsc286OgogCi0gICBgRXF1aXZhbGVudCBPcmRlcmVkRGljdCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5My8+YF8KLSAgIHRoYXQgcnVucyBvbiBQeXRob24gMi40IG9yIGxhdGVyLgorICAgIGBFcXVpdmFsZW50IE9yZGVyZWREaWN0IHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NjkzLz5gXworICAgIHRoYXQgcnVucyBvbiBQeXRob24gMi40IG9yIGxhdGVyLgogCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBFeGFtcGxlcyBhbmQgUmVjaXBlcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KQEAgLTg5Myw3ICsxMDI3LDcgQEAKIEFuIG9yZGVyZWQgZGljdGlvbmFyeSBjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUgOmNsYXNzOmBDb3VudGVyYCBjbGFzcwogc28gdGhhdCB0aGUgY291bnRlciByZW1lbWJlcnMgdGhlIG9yZGVyIGVsZW1lbnRzIGFyZSBmaXJzdCBlbmNvdW50ZXJlZDo6CiAKLSAgIGNsYXNzIE9yZGVyZWRDb3VudGVyKENvdW50ZXIsIE9yZGVyZWREaWN0KToKKyAgICBjbGFzcyBPcmRlcmVkQ291bnRlcihDb3VudGVyLCBPcmRlcmVkRGljdCk6CiAgICAgICAgICdDb3VudGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciBlbGVtZW50cyBhcmUgZmlyc3QgZW5jb3VudGVyZWQnCiAKICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtOTE0LDE5ICsxMDQ4LDE5IEBACiAKIC4uIGNsYXNzOjogVXNlckRpY3QoW2luaXRpYWxkYXRhXSkKIAotICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBkaWN0aW9uYXJ5LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYQotICAgcmVndWxhciBkaWN0aW9uYXJ5LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZgotICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzLiAgSWYgKmluaXRpYWxkYXRhKiBpcyBwcm92aWRlZCwgOmF0dHI6YGRhdGFgIGlzCi0gICBpbml0aWFsaXplZCB3aXRoIGl0cyBjb250ZW50czsgbm90ZSB0aGF0IGEgcmVmZXJlbmNlIHRvICppbml0aWFsZGF0YSogd2lsbCBub3QKLSAgIGJlIGtlcHQsIGFsbG93aW5nIGl0IGJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgorICAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgZGljdGlvbmFyeS4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBrZXB0IGluIGEKKyAgICByZWd1bGFyIGRpY3Rpb25hcnksIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mCisgICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzLiAgSWYgKmluaXRpYWxkYXRhKiBpcyBwcm92aWRlZCwgOmF0dHI6YGRhdGFgIGlzCisgICAgaW5pdGlhbGl6ZWQgd2l0aCBpdHMgY29udGVudHM7IG5vdGUgdGhhdCBhIHJlZmVyZW5jZSB0byAqaW5pdGlhbGRhdGEqIHdpbGwgbm90CisgICAgYmUga2VwdCwgYWxsb3dpbmcgaXQgYmUgdXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuCiAKLSAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbWFwcGluZ3MsCi0gICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKKyAgICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG1hcHBpbmdzLAorICAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgogCi0gICAuLiBhdHRyaWJ1dGU6OiBkYXRhCisgICAgLi4gYXR0cmlidXRlOjogZGF0YQogCi0gICAgICBBIHJlYWwgZGljdGlvbmFyeSB1c2VkIHRvIHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUgOmNsYXNzOmBVc2VyRGljdGAKLSAgICAgIGNsYXNzLgorICAgICAgICBBIHJlYWwgZGljdGlvbmFyeSB1c2VkIHRvIHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUgOmNsYXNzOmBVc2VyRGljdGAKKyAgICAgICAgY2xhc3MuCiAKIAogCkBAIC05NDQsMTkgKzEwNzgsMTkgQEAKIAogLi4gY2xhc3M6OiBVc2VyTGlzdChbbGlzdF0pCiAKLSAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgbGlzdC4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBrZXB0IGluIGEgcmVndWxhcgotICAgbGlzdCwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyTGlzdGAKLSAgIGluc3RhbmNlcy4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqbGlzdCosCi0gICBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBsaXN0IGBgW11gYC4gICpsaXN0KiBjYW4gYmUgYW55IGl0ZXJhYmxlLCBmb3IKLSAgIGV4YW1wbGUgYSByZWFsIFB5dGhvbiBsaXN0IG9yIGEgOmNsYXNzOmBVc2VyTGlzdGAgb2JqZWN0LgorICAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgbGlzdC4gIFRoZSBpbnN0YW5jZSdzIGNvbnRlbnRzIGFyZSBrZXB0IGluIGEgcmVndWxhcgorICAgIGxpc3QsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlckxpc3RgCisgICAgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpsaXN0KiwKKyAgICBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBsaXN0IGBgW11gYC4gICpsaXN0KiBjYW4gYmUgYW55IGl0ZXJhYmxlLCBmb3IKKyAgICBleGFtcGxlIGEgcmVhbCBQeXRob24gbGlzdCBvciBhIDpjbGFzczpgVXNlckxpc3RgIG9iamVjdC4KIAotICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtdXRhYmxlIHNlcXVlbmNlcywKLSAgIDpjbGFzczpgVXNlckxpc3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgorICAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbXV0YWJsZSBzZXF1ZW5jZXMsCisgICAgOmNsYXNzOmBVc2VyTGlzdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CiAKLSAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKKyAgICAuLiBhdHRyaWJ1dGU6OiBkYXRhCiAKLSAgICAgIEEgcmVhbCA6Y2xhc3M6YGxpc3RgIG9iamVjdCB1c2VkIHRvIHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUKLSAgICAgIDpjbGFzczpgVXNlckxpc3RgIGNsYXNzLgorICAgICAgICBBIHJlYWwgOmNsYXNzOmBsaXN0YCBvYmplY3QgdXNlZCB0byBzdG9yZSB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgIDpjbGFzczpgVXNlckxpc3RgIGNsYXNzLgogCiAqKlN1YmNsYXNzaW5nIHJlcXVpcmVtZW50czoqKiBTdWJjbGFzc2VzIG9mIDpjbGFzczpgVXNlckxpc3RgIGFyZSBleHBlY3QgdG8KIG9mZmVyIGEgY29uc3RydWN0b3Igd2hpY2ggY2FuIGJlIGNhbGxlZCB3aXRoIGVpdGhlciBubyBhcmd1bWVudHMgb3Igb25lCkBAIC05ODEsMTY4ICsxMTE1LDEwIEBACiAKIC4uIGNsYXNzOjogVXNlclN0cmluZyhbc2VxdWVuY2VdKQogCi0gICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIHN0cmluZyBvciBhIFVuaWNvZGUgc3RyaW5nIG9iamVjdC4gIFRoZSBpbnN0YW5jZSdzCi0gICBjb250ZW50IGlzIGtlcHQgaW4gYSByZWd1bGFyIHN0cmluZyBvYmplY3QsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZQotICAgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJTdHJpbmdgIGluc3RhbmNlcy4gIFRoZSBpbnN0YW5jZSdzCi0gICBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKnNlcXVlbmNlKi4gIFRoZSAqc2VxdWVuY2UqIGNhbgotICAgYmUgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBieXRlc2AsIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBVc2VyU3RyaW5nYCAob3IgYQotICAgc3ViY2xhc3MpIG9yIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSB3aGljaCBjYW4gYmUgY29udmVydGVkIGludG8gYSBzdHJpbmcgdXNpbmcKLSAgIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4KLQotCi0uLiBfY29sbGVjdGlvbnMtYWJzdHJhY3QtYmFzZS1jbGFzc2VzOgotCi1BQkNzIC0gYWJzdHJhY3QgYmFzZSBjbGFzc2VzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBjb2xsZWN0aW9ucyBtb2R1bGUgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgOnRlcm06YEFCQ3MgPGFic3RyYWN0IGJhc2UgY2xhc3M+YDoKLQotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1BQkMgICAgICAgICAgICAgICAgICAgICAgICBJbmhlcml0cyBmcm9tICAgICAgICAgIEFic3RyYWN0IE1ldGhvZHMgICAgICAgIE1peGluIE1ldGhvZHMKLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCi06Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAotOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCi06Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAotCi06Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKLQotOmNsYXNzOmBNdXRhYmxlU2VxdWVuY2VgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgLCAgICAgICAgYGBhcHBlbmRgYCwgYGByZXZlcnNlYGAsIGBgZXh0ZW5kYGAsIGBgcG9wYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5zZXJ0YGAgICAgICAgICAgICAgIGBgcmVtb3ZlYGAsIGFuZCBgYF9faWFkZF9fYGAKLQotOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKLQotOmNsYXNzOmBNdXRhYmxlU2V0YCAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICBgYGFkZGBgLCAgICAgICAgICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXRgIG1ldGhvZHMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZGlzY2FyZGBgICAgICAgICAgICAgIGBgY2xlYXJgYCwgYGBwb3BgYCwgYGByZW1vdmVgYCwgYGBfX2lvcl9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pYW5kX19gYCwgYGBfX2l4b3JfX2BgLCBhbmQgYGBfX2lzdWJfX2BgCi0KLTpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAotCi06Y2xhc3M6YE11dGFibGVNYXBwaW5nYCAgICA6Y2xhc3M6YE1hcHBpbmdgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YE1hcHBpbmdgIG1ldGhvZHMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19kZWxpdGVtX19gYCAgICAgICAgIGBgcG9wYGAsIGBgcG9waXRlbWBgLCBgYGNsZWFyYGAsIGBgdXBkYXRlYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgYHNldGRlZmF1bHRgYAotCi0KLTpjbGFzczpgTWFwcGluZ1ZpZXdgICAgICAgIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKLTpjbGFzczpgSXRlbXNWaWV3YCAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YEtleXNWaWV3YCAgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBWYWx1ZXNWaWV3YCAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAKLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNsYXNzOjogQ29udGFpbmVyCi0gICAgICAgICAgIEhhc2hhYmxlCi0gICAgICAgICAgIFNpemVkCi0gICAgICAgICAgIENhbGxhYmxlCi0KLSAgIEFCQ3MgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHJlc3BlY3RpdmVseSB0aGUgbWV0aG9kcyA6bWV0aDpgX19jb250YWluc19fYCwKLSAgIDptZXRoOmBfX2hhc2hfX2AsIDptZXRoOmBfX2xlbl9fYCwgYW5kIDptZXRoOmBfX2NhbGxfX2AuCi0KLS4uIGNsYXNzOjogSXRlcmFibGUKLQotICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBtZXRob2QuCi0gICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmFibGVgLgotCi0uLiBjbGFzczo6IEl0ZXJhdG9yCi0KLSAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgYW5kIDptZXRoOmBuZXh0YCBtZXRob2RzLgotICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhdG9yYC4KLQotLi4gY2xhc3M6OiBTZXF1ZW5jZQotICAgICAgICAgICBNdXRhYmxlU2VxdWVuY2UKLQotICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIDp0ZXJtOmBzZXF1ZW5jZXMgPHNlcXVlbmNlPmAuCi0KLS4uIGNsYXNzOjogU2V0Ci0gICAgICAgICAgIE11dGFibGVTZXQKLQotICAgQUJDcyBmb3IgcmVhZC1vbmx5IGFuZCBtdXRhYmxlIHNldHMuCi0KLS4uIGNsYXNzOjogTWFwcGluZwotICAgICAgICAgICBNdXRhYmxlTWFwcGluZwotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YG1hcHBpbmdzIDxtYXBwaW5nPmAuCi0KLS4uIGNsYXNzOjogTWFwcGluZ1ZpZXcKLSAgICAgICAgICAgSXRlbXNWaWV3Ci0gICAgICAgICAgIEtleXNWaWV3Ci0gICAgICAgICAgIFZhbHVlc1ZpZXcKLQotICAgQUJDcyBmb3IgbWFwcGluZywgaXRlbXMsIGtleXMsIGFuZCB2YWx1ZXMgOnRlcm06YHZpZXdzIDx2aWV3PmAuCi0KLQotVGhlc2UgQUJDcyBhbGxvdyB1cyB0byBhc2sgY2xhc3NlcyBvciBpbnN0YW5jZXMgaWYgdGhleSBwcm92aWRlCi1wYXJ0aWN1bGFyIGZ1bmN0aW9uYWxpdHksIGZvciBleGFtcGxlOjoKLQotICAgIHNpemUgPSBOb25lCi0gICAgaWYgaXNpbnN0YW5jZShteXZhciwgY29sbGVjdGlvbnMuU2l6ZWQpOgotICAgICAgICBzaXplID0gbGVuKG15dmFyKQotCi1TZXZlcmFsIG9mIHRoZSBBQkNzIGFyZSBhbHNvIHVzZWZ1bCBhcyBtaXhpbnMgdGhhdCBtYWtlIGl0IGVhc2llciB0byBkZXZlbG9wCi1jbGFzc2VzIHN1cHBvcnRpbmcgY29udGFpbmVyIEFQSXMuICBGb3IgZXhhbXBsZSwgdG8gd3JpdGUgYSBjbGFzcyBzdXBwb3J0aW5nCi10aGUgZnVsbCA6Y2xhc3M6YFNldGAgQVBJLCBpdCBvbmx5IG5lY2Vzc2FyeSB0byBzdXBwbHkgdGhlIHRocmVlIHVuZGVybHlpbmcKLWFic3RyYWN0IG1ldGhvZHM6IDptZXRoOmBfX2NvbnRhaW5zX19gLCA6bWV0aDpgX19pdGVyX19gLCBhbmQgOm1ldGg6YF9fbGVuX19gLgotVGhlIEFCQyBzdXBwbGllcyB0aGUgcmVtYWluaW5nIG1ldGhvZHMgc3VjaCBhcyA6bWV0aDpgX19hbmRfX2AgYW5kCi06bWV0aDpgaXNkaXNqb2ludGAgOjoKLQotICAgIGNsYXNzIExpc3RCYXNlZFNldChjb2xsZWN0aW9ucy5TZXQpOgotICAgICAgICAgJycnIEFsdGVybmF0ZSBzZXQgaW1wbGVtZW50YXRpb24gZmF2b3Jpbmcgc3BhY2Ugb3ZlciBzcGVlZAotICAgICAgICAgICAgIGFuZCBub3QgcmVxdWlyaW5nIHRoZSBzZXQgZWxlbWVudHMgdG8gYmUgaGFzaGFibGUuICcnJwotICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZXJhYmxlKToKLSAgICAgICAgICAgICBzZWxmLmVsZW1lbnRzID0gbHN0ID0gW10KLSAgICAgICAgICAgICBmb3IgdmFsdWUgaW4gaXRlcmFibGU6Ci0gICAgICAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBsc3Q6Ci0gICAgICAgICAgICAgICAgICAgICBsc3QuYXBwZW5kKHZhbHVlKQotICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuZWxlbWVudHMpCi0gICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKLSAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gc2VsZi5lbGVtZW50cwotICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmVsZW1lbnRzKQotCi0gICAgczEgPSBMaXN0QmFzZWRTZXQoJ2FiY2RlZicpCi0gICAgczIgPSBMaXN0QmFzZWRTZXQoJ2RlZmdoaScpCi0gICAgb3ZlcmxhcCA9IHMxICYgczIgICAgICAgICAgICAjIFRoZSBfX2FuZF9fKCkgbWV0aG9kIGlzIHN1cHBvcnRlZCBhdXRvbWF0aWNhbGx5Ci0KLU5vdGVzIG9uIHVzaW5nIDpjbGFzczpgU2V0YCBhbmQgOmNsYXNzOmBNdXRhYmxlU2V0YCBhcyBhIG1peGluOgotCi0oMSkKLSAgIFNpbmNlIHNvbWUgc2V0IG9wZXJhdGlvbnMgY3JlYXRlIG5ldyBzZXRzLCB0aGUgZGVmYXVsdCBtaXhpbiBtZXRob2RzIG5lZWQKLSAgIGEgd2F5IHRvIGNyZWF0ZSBuZXcgaW5zdGFuY2VzIGZyb20gYW4gaXRlcmFibGUuIFRoZSBjbGFzcyBjb25zdHJ1Y3RvciBpcwotICAgYXNzdW1lZCB0byBoYXZlIGEgc2lnbmF0dXJlIGluIHRoZSBmb3JtIGBgQ2xhc3NOYW1lKGl0ZXJhYmxlKWBgLgotICAgVGhhdCBhc3N1bXB0aW9uIGlzIGZhY3RvcmVkLW91dCB0byBhbiBpbnRlcm5hbCBjbGFzc21ldGhvZCBjYWxsZWQKLSAgIDptZXRoOmBfZnJvbV9pdGVyYWJsZWAgd2hpY2ggY2FsbHMgYGBjbHMoaXRlcmFibGUpYGAgdG8gcHJvZHVjZSBhIG5ldyBzZXQuCi0gICBJZiB0aGUgOmNsYXNzOmBTZXRgIG1peGluIGlzIGJlaW5nIHVzZWQgaW4gYSBjbGFzcyB3aXRoIGEgZGlmZmVyZW50Ci0gICBjb25zdHJ1Y3RvciBzaWduYXR1cmUsIHlvdSB3aWxsIG5lZWQgdG8gb3ZlcnJpZGUgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYAotICAgd2l0aCBhIGNsYXNzbWV0aG9kIHRoYXQgY2FuIGNvbnN0cnVjdCBuZXcgaW5zdGFuY2VzIGZyb20KLSAgIGFuIGl0ZXJhYmxlIGFyZ3VtZW50LgotCi0oMikKLSAgIFRvIG92ZXJyaWRlIHRoZSBjb21wYXJpc29ucyAocHJlc3VtYWJseSBmb3Igc3BlZWQsIGFzIHRoZQotICAgc2VtYW50aWNzIGFyZSBmaXhlZCksIHJlZGVmaW5lIDptZXRoOmBfX2xlX19gIGFuZAotICAgdGhlbiB0aGUgb3RoZXIgb3BlcmF0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93IHN1aXQuCi0KLSgzKQotICAgVGhlIDpjbGFzczpgU2V0YCBtaXhpbiBwcm92aWRlcyBhIDptZXRoOmBfaGFzaGAgbWV0aG9kIHRvIGNvbXB1dGUgYSBoYXNoIHZhbHVlCi0gICBmb3IgdGhlIHNldDsgaG93ZXZlciwgOm1ldGg6YF9faGFzaF9fYCBpcyBub3QgZGVmaW5lZCBiZWNhdXNlIG5vdCBhbGwgc2V0cwotICAgYXJlIGhhc2hhYmxlIG9yIGltbXV0YWJsZS4gIFRvIGFkZCBzZXQgaGFzaGFiaWx0eSB1c2luZyBtaXhpbnMsCi0gICBpbmhlcml0IGZyb20gYm90aCA6bWV0aDpgU2V0YCBhbmQgOm1ldGg6YEhhc2hhYmxlYCwgdGhlbiBkZWZpbmUKLSAgIGBgX19oYXNoX18gPSBTZXQuX2hhc2hgYC4KLQotLi4gc2VlYWxzbzo6Ci0KLSAgICogYE9yZGVyZWRTZXQgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTQvPmBfIGZvciBhbgotICAgICBleGFtcGxlIGJ1aWx0IG9uIDpjbGFzczpgTXV0YWJsZVNldGAuCi0KLSAgICogRm9yIG1vcmUgYWJvdXQgQUJDcywgc2VlIHRoZSA6bW9kOmBhYmNgIG1vZHVsZSBhbmQgOnBlcDpgMzExOWAuCisgICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBzdHJpbmcgb3IgYSBVbmljb2RlIHN0cmluZyBvYmplY3QuICBUaGUgaW5zdGFuY2UncworICAgIGNvbnRlbnQgaXMga2VwdCBpbiBhIHJlZ3VsYXIgc3RyaW5nIG9iamVjdCwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlCisgICAgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJTdHJpbmdgIGluc3RhbmNlcy4gIFRoZSBpbnN0YW5jZSdzCisgICAgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpzZXF1ZW5jZSouICBUaGUgKnNlcXVlbmNlKiBjYW4KKyAgICBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YFVzZXJTdHJpbmdgIChvciBhCisgICAgc3ViY2xhc3MpIG9yIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSB3aGljaCBjYW4gYmUgY29udmVydGVkIGludG8gYSBzdHJpbmcgdXNpbmcKKyAgICB0aGUgYnVpbHQtaW4gOmZ1bmM6YHN0cmAgZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW5jeS5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW5jeS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZmZTNmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdApAQCAtMCwwICsxLDMxIEBACisuLiBfY29uY3VycmVuY3k6CisKKyoqKioqKioqKioqKioqKioqKioqCitDb25jdXJyZW50IEV4ZWN1dGlvbgorKioqKioqKioqKioqKioqKioqKioKKworVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIHN1cHBvcnQgZm9yIGNvbmN1cnJlbnQKK2V4ZWN1dGlvbiBvZiBjb2RlLiBUaGUgYXBwcm9wcmlhdGUgY2hvaWNlIG9mIHRvb2wgd2lsbCBkZXBlbmQgb24gdGhlCit0YXNrIHRvIGJlIGV4ZWN1dGVkIChDUFUgYm91bmQgdnMgSU8gYm91bmQpIGFuZCBwcmVmZXJyZWQgc3R5bGUgb2YKK2RldmVsb3BtZW50IChldmVudCBkcml2ZW4gY29vcGVyYXRpdmUgbXVsdGl0YXNraW5nIHZzIHByZWVtcHRpdmUKK211bHRpdGFza2luZykgSGVyZSdzIGFuIG92ZXJ2aWV3OgorCisKKy4uIHRvY3RyZWU6OgorCisgICB0aHJlYWRpbmcucnN0CisgICBtdWx0aXByb2Nlc3NpbmcucnN0CisgICBjb25jdXJyZW50LmZ1dHVyZXMucnN0CisgICBzdWJwcm9jZXNzLnJzdAorICAgc2NoZWQucnN0CisgICBxdWV1ZS5yc3QKKyAgIHNlbGVjdC5yc3QKKworCitUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0IG1vZHVsZXMgZm9yIHNvbWUgb2YgdGhlIGFib3ZlIHNlcnZpY2VzOgorCisuLiB0b2N0cmVlOjoKKworICAgZHVtbXlfdGhyZWFkaW5nLnJzdAorICAgX3RocmVhZC5yc3QKKyAgIF9kdW1teV90aHJlYWQucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCAyOWZmYzBkLi5hODhmMTBjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTE2OSw2ICsxNjksMTIgQEAKICAgIG9mIGF0IG1vc3QgKm1heF93b3JrZXJzKiBwcm9jZXNzZXMuICBJZiAqbWF4X3dvcmtlcnMqIGlzIGBgTm9uZWBgIG9yIG5vdAogICAgZ2l2ZW4sIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgb24gdGhlIG1hY2hpbmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBXaGVuIG9uZSBvZiB0aGUgd29ya2VyIHByb2Nlc3NlcyB0ZXJtaW5hdGVzIGFicnVwdGx5LCBhCisgICAgICA6ZXhjOmBCcm9rZW5Qcm9jZXNzUG9vbGAgZXJyb3IgaXMgbm93IHJhaXNlZC4gIFByZXZpb3VzbHksIGJlaGF2aW91cgorICAgICAgd2FzIHVuZGVmaW5lZCBidXQgb3BlcmF0aW9ucyBvbiB0aGUgZXhlY3V0b3Igb3IgaXRzIGZ1dHVyZXMgd291bGQgb2Z0ZW4KKyAgICAgIGZyZWV6ZSBvciBkZWFkbG9jay4KKwogCiAuLiBfcHJvY2Vzc3Bvb2xleGVjdXRvci1leGFtcGxlOgogCkBAIC0zNjksMyArMzc1LDE2IEBACiAgICA6cGVwOmAzMTQ4YCAtLSBmdXR1cmVzIC0gZXhlY3V0ZSBjb21wdXRhdGlvbnMgYXN5bmNocm9ub3VzbHkKICAgICAgIFRoZSBwcm9wb3NhbCB3aGljaCBkZXNjcmliZWQgdGhpcyBmZWF0dXJlIGZvciBpbmNsdXNpb24gaW4gdGhlIFB5dGhvbgogICAgICAgc3RhbmRhcmQgbGlicmFyeS4KKworCitFeGNlcHRpb24gY2xhc3NlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZXhjZXB0aW9uOjogQnJva2VuUHJvY2Vzc1Bvb2wKKworICAgRGVyaXZlZCBmcm9tIDpleGM6YFJ1bnRpbWVFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGNsYXNzIGlzIHJhaXNlZCB3aGVuCisgICBvbmUgb2YgdGhlIHdvcmtlcnMgb2YgYSA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgIGhhcyB0ZXJtaW5hdGVkCisgICBpbiBhIG5vbi1jbGVhbiBmYXNoaW9uIChmb3IgZXhhbXBsZSwgaWYgaXQgd2FzIGtpbGxlZCBmcm9tIHRoZSBvdXRzaWRlKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0IGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKaW5kZXggZThkYzE3Zi4uZWQ5ZWJiOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKQEAgLTEyLDggKzEyLDExIEBACiBzdGF0ZW1lbnQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBhbHNvIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAgYW5kCiA6cmVmOmBjb250ZXh0LW1hbmFnZXJzYC4KIAotRnVuY3Rpb25zIHByb3ZpZGVkOgogCitVdGlsaXRpZXMKKy0tLS0tLS0tLQorCitGdW5jdGlvbnMgYW5kIGNsYXNzZXMgcHJvdmlkZWQ6CiAKIC4uIGRlY29yYXRvcjo6IGNvbnRleHRtYW5hZ2VyCiAKQEAgLTE2OCw2ICsxNzEsMzQ4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjbGFzczo6IEV4aXRTdGFjaygpCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgaXMgZGVzaWduZWQgdG8gbWFrZSBpdCBlYXN5IHRvIHByb2dyYW1tYXRpY2FsbHkKKyAgIGNvbWJpbmUgb3RoZXIgY29udGV4dCBtYW5hZ2VycyBhbmQgY2xlYW51cCBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgdGhvc2UKKyAgIHRoYXQgYXJlIG9wdGlvbmFsIG9yIG90aGVyd2lzZSBkcml2ZW4gYnkgaW5wdXQgZGF0YS4KKworICAgRm9yIGV4YW1wbGUsIGEgc2V0IG9mIGZpbGVzIG1heSBlYXNpbHkgYmUgaGFuZGxlZCBpbiBhIHNpbmdsZSB3aXRoCisgICBzdGF0ZW1lbnQgYXMgZm9sbG93czo6CisKKyAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgZmlsZXMgPSBbc3RhY2suZW50ZXJfY29udGV4dChvcGVuKGZuYW1lKSkgZm9yIGZuYW1lIGluIGZpbGVuYW1lc10KKyAgICAgICAgICAjIEFsbCBvcGVuZWQgZmlsZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNsb3NlZCBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgIyB0aGUgd2l0aCBzdGF0ZW1lbnQsIGV2ZW4gaWYgYXR0ZW1wdHMgdG8gb3BlbiBmaWxlcyBsYXRlcgorICAgICAgICAgICMgaW4gdGhlIGxpc3QgdGhyb3cgYW4gZXhjZXB0aW9uCisKKyAgIEVhY2ggaW5zdGFuY2UgbWFpbnRhaW5zIGEgc3RhY2sgb2YgcmVnaXN0ZXJlZCBjYWxsYmFja3MgdGhhdCBhcmUgY2FsbGVkIGluCisgICByZXZlcnNlIG9yZGVyIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNsb3NlZCAoZWl0aGVyIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseQorICAgYXQgdGhlIGVuZCBvZiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQpLiBOb3RlIHRoYXQgY2FsbGJhY2tzIGFyZSAqbm90KgorICAgaW52b2tlZCBpbXBsaWNpdGx5IHdoZW4gdGhlIGNvbnRleHQgc3RhY2sgaW5zdGFuY2UgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuCisKKyAgIFRoaXMgc3RhY2sgbW9kZWwgaXMgdXNlZCBzbyB0aGF0IGNvbnRleHQgbWFuYWdlcnMgdGhhdCBhY3F1aXJlIHRoZWlyCisgICByZXNvdXJjZXMgaW4gdGhlaXIgYGBfX2luaXRfX2BgIG1ldGhvZCAoc3VjaCBhcyBmaWxlIG9iamVjdHMpIGNhbiBiZQorICAgaGFuZGxlZCBjb3JyZWN0bHkuCisKKyAgIFNpbmNlIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIGFyZSBpbnZva2VkIGluIHRoZSByZXZlcnNlIG9yZGVyIG9mCisgICByZWdpc3RyYXRpb24sIHRoaXMgZW5kcyB1cCBiZWhhdmluZyBhcyBpZiBtdWx0aXBsZSBuZXN0ZWQgOmtleXdvcmQ6YHdpdGhgCisgICBzdGF0ZW1lbnRzIGhhZCBiZWVuIHVzZWQgd2l0aCB0aGUgcmVnaXN0ZXJlZCBzZXQgb2YgY2FsbGJhY2tzLiBUaGlzIGV2ZW4KKyAgIGV4dGVuZHMgdG8gZXhjZXB0aW9uIGhhbmRsaW5nIC0gaWYgYW4gaW5uZXIgY2FsbGJhY2sgc3VwcHJlc3NlcyBvciByZXBsYWNlcworICAgYW4gZXhjZXB0aW9uLCB0aGVuIG91dGVyIGNhbGxiYWNrcyB3aWxsIGJlIHBhc3NlZCBhcmd1bWVudHMgYmFzZWQgb24gdGhhdAorICAgdXBkYXRlZCBzdGF0ZS4KKworICAgVGhpcyBpcyBhIHJlbGF0aXZlbHkgbG93IGxldmVsIEFQSSB0aGF0IHRha2VzIGNhcmUgb2YgdGhlIGRldGFpbHMgb2YKKyAgIGNvcnJlY3RseSB1bndpbmRpbmcgdGhlIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzLiBJdCBwcm92aWRlcyBhIHN1aXRhYmxlCisgICBmb3VuZGF0aW9uIGZvciBoaWdoZXIgbGV2ZWwgY29udGV4dCBtYW5hZ2VycyB0aGF0IG1hbmlwdWxhdGUgdGhlIGV4aXQKKyAgIHN0YWNrIGluIGFwcGxpY2F0aW9uIHNwZWNpZmljIHdheXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBtZXRob2Q6OiBlbnRlcl9jb250ZXh0KGNtKQorCisgICAgICBFbnRlcnMgYSBuZXcgY29udGV4dCBtYW5hZ2VyIGFuZCBhZGRzIGl0cyA6bWV0aDpgX19leGl0X19gIG1ldGhvZCB0bworICAgICAgdGhlIGNhbGxiYWNrIHN0YWNrLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnRleHQKKyAgICAgIG1hbmFnZXIncyBvd24gOm1ldGg6YF9fZW50ZXJfX2AgbWV0aG9kLgorCisgICAgICBUaGVzZSBjb250ZXh0IG1hbmFnZXJzIG1heSBzdXBwcmVzcyBleGNlcHRpb25zIGp1c3QgYXMgdGhleSBub3JtYWxseQorICAgICAgd291bGQgaWYgdXNlZCBkaXJlY3RseSBhcyBwYXJ0IG9mIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKworICAgLi4gbWV0aG9kOjogcHVzaChleGl0KQorCisgICAgICBBZGRzIGEgY29udGV4dCBtYW5hZ2VyJ3MgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2QgdG8gdGhlIGNhbGxiYWNrIHN0YWNrLgorCisgICAgICBBcyBgYF9fZW50ZXJfX2BgIGlzICpub3QqIGludm9rZWQsIHRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNvdmVyCisgICAgICBwYXJ0IG9mIGFuIDptZXRoOmBfX2VudGVyX19gIGltcGxlbWVudGF0aW9uIHdpdGggYSBjb250ZXh0IG1hbmFnZXIncyBvd24KKyAgICAgIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kLgorCisgICAgICBJZiBwYXNzZWQgYW4gb2JqZWN0IHRoYXQgaXMgbm90IGEgY29udGV4dCBtYW5hZ2VyLCB0aGlzIG1ldGhvZCBhc3N1bWVzCisgICAgICBpdCBpcyBhIGNhbGxiYWNrIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlIGFzIGEgY29udGV4dCBtYW5hZ2VyJ3MKKyAgICAgIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kIGFuZCBhZGRzIGl0IGRpcmVjdGx5IHRvIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgQnkgcmV0dXJuaW5nIHRydWUgdmFsdWVzLCB0aGVzZSBjYWxsYmFja3MgY2FuIHN1cHByZXNzIGV4Y2VwdGlvbnMgdGhlCisgICAgICBzYW1lIHdheSBjb250ZXh0IG1hbmFnZXIgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2RzIGNhbi4KKworICAgICAgVGhlIHBhc3NlZCBpbiBvYmplY3QgaXMgcmV0dXJuZWQgZnJvbSB0aGUgZnVuY3Rpb24sIGFsbG93aW5nIHRoaXMKKyAgICAgIG1ldGhvZCB0byBiZSB1c2VkIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLgorCisgICAuLiBtZXRob2Q6OiBjYWxsYmFjayhjYWxsYmFjaywgKmFyZ3MsICoqa3dkcykKKworICAgICAgQWNjZXB0cyBhbiBhcmJpdHJhcnkgY2FsbGJhY2sgZnVuY3Rpb24gYW5kIGFyZ3VtZW50cyBhbmQgYWRkcyBpdCB0bworICAgICAgdGhlIGNhbGxiYWNrIHN0YWNrLgorCisgICAgICBVbmxpa2UgdGhlIG90aGVyIG1ldGhvZHMsIGNhbGxiYWNrcyBhZGRlZCB0aGlzIHdheSBjYW5ub3Qgc3VwcHJlc3MKKyAgICAgIGV4Y2VwdGlvbnMgKGFzIHRoZXkgYXJlIG5ldmVyIHBhc3NlZCB0aGUgZXhjZXB0aW9uIGRldGFpbHMpLgorCisgICAgICBUaGUgcGFzc2VkIGluIGNhbGxiYWNrIGlzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uLCBhbGxvd2luZyB0aGlzCisgICAgICBtZXRob2QgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworICAgLi4gbWV0aG9kOjogcG9wX2FsbCgpCisKKyAgICAgIFRyYW5zZmVycyB0aGUgY2FsbGJhY2sgc3RhY2sgdG8gYSBmcmVzaCA6Y2xhc3M6YEV4aXRTdGFja2AgaW5zdGFuY2UKKyAgICAgIGFuZCByZXR1cm5zIGl0LiBObyBjYWxsYmFja3MgYXJlIGludm9rZWQgYnkgdGhpcyBvcGVyYXRpb24gLSBpbnN0ZWFkLAorICAgICAgdGhleSB3aWxsIG5vdyBiZSBpbnZva2VkIHdoZW4gdGhlIG5ldyBzdGFjayBpcyBjbG9zZWQgKGVpdGhlcgorICAgICAgZXhwbGljaXRseSBvciBpbXBsaWNpdGx5IGF0IHRoZSBlbmQgb2YgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4KKworICAgICAgRm9yIGV4YW1wbGUsIGEgZ3JvdXAgb2YgZmlsZXMgY2FuIGJlIG9wZW5lZCBhcyBhbiAiYWxsIG9yIG5vdGhpbmciCisgICAgICBvcGVyYXRpb24gYXMgZm9sbG93czo6CisKKyAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgZmlsZXMgPSBbc3RhY2suZW50ZXJfY29udGV4dChvcGVuKGZuYW1lKSkgZm9yIGZuYW1lIGluIGZpbGVuYW1lc10KKyAgICAgICAgICAgICBjbG9zZV9maWxlcyA9IHN0YWNrLnBvcF9hbGwoKS5jbG9zZQorICAgICAgICAgICAgICMgSWYgb3BlbmluZyBhbnkgZmlsZSBmYWlscywgYWxsIHByZXZpb3VzbHkgb3BlbmVkIGZpbGVzIHdpbGwgYmUKKyAgICAgICAgICAgICAjIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBJZiBhbGwgZmlsZXMgYXJlIG9wZW5lZCBzdWNjZXNzZnVsbHksCisgICAgICAgICAgICAgIyB0aGV5IHdpbGwgcmVtYWluIG9wZW4gZXZlbiBhZnRlciB0aGUgd2l0aCBzdGF0ZW1lbnQgZW5kcy4KKyAgICAgICAgICAgICAjIGNsb3NlX2ZpbGVzKCkgY2FuIHRoZW4gYmUgaW52b2tlZCBleHBsaWNpdGx5IHRvIGNsb3NlIHRoZW0gYWxsCisKKyAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKKworICAgICAgSW1tZWRpYXRlbHkgdW53aW5kcyB0aGUgY2FsbGJhY2sgc3RhY2ssIGludm9raW5nIGNhbGxiYWNrcyBpbiB0aGUKKyAgICAgIHJldmVyc2Ugb3JkZXIgb2YgcmVnaXN0cmF0aW9uLiBGb3IgYW55IGNvbnRleHQgbWFuYWdlcnMgYW5kIGV4aXQKKyAgICAgIGNhbGxiYWNrcyByZWdpc3RlcmVkLCB0aGUgYXJndW1lbnRzIHBhc3NlZCBpbiB3aWxsIGluZGljYXRlIHRoYXQgbm8KKyAgICAgIGV4Y2VwdGlvbiBvY2N1cnJlZC4KKworCitFeGFtcGxlcyBhbmQgUmVjaXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBzb21lIGV4YW1wbGVzIGFuZCByZWNpcGVzIGZvciBtYWtpbmcgZWZmZWN0aXZlIHVzZSBvZgordGhlIHRvb2xzIHByb3ZpZGVkIGJ5IDptb2Q6YGNvbnRleHRsaWJgLgorCisKK1N1cHBvcnRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSBwcmltYXJ5IHVzZSBjYXNlIGZvciA6Y2xhc3M6YEV4aXRTdGFja2AgaXMgdGhlIG9uZSBnaXZlbiBpbiB0aGUgY2xhc3MKK2RvY3VtZW50YXRpb246IHN1cHBvcnRpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBhbmQgb3RoZXIKK2NsZWFudXAgb3BlcmF0aW9ucyBpbiBhIHNpbmdsZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiBUaGUgdmFyaWFiaWxpdHkKK21heSBjb21lIGZyb20gdGhlIG51bWJlciBvZiBjb250ZXh0IG1hbmFnZXJzIG5lZWRlZCBiZWluZyBkcml2ZW4gYnkgdXNlcgoraW5wdXQgKHN1Y2ggYXMgb3BlbmluZyBhIHVzZXIgc3BlY2lmaWVkIGNvbGxlY3Rpb24gb2YgZmlsZXMpLCBvciBmcm9tCitzb21lIG9mIHRoZSBjb250ZXh0IG1hbmFnZXJzIGJlaW5nIG9wdGlvbmFsOjoKKworICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgIGZvciByZXNvdXJjZSBpbiByZXNvdXJjZXM6CisgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHJlc291cmNlKQorICAgICAgICBpZiBuZWVkX3NwZWNpYWwgcmVzb3VyY2U6CisgICAgICAgICAgICBzcGVjaWFsID0gYWNxdWlyZV9zcGVjaWFsX3Jlc291cmNlKCkKKyAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJlbGVhc2Vfc3BlY2lhbF9yZXNvdXJjZSwgc3BlY2lhbCkKKyAgICAgICAgIyBQZXJmb3JtIG9wZXJhdGlvbnMgdGhhdCB1c2UgdGhlIGFjcXVpcmVkIHJlc291cmNlcworCitBcyBzaG93biwgOmNsYXNzOmBFeGl0U3RhY2tgIGFsc28gbWFrZXMgaXQgcXVpdGUgZWFzeSB0byB1c2UgOmtleXdvcmQ6YHdpdGhgCitzdGF0ZW1lbnRzIHRvIG1hbmFnZSBhcmJpdHJhcnkgcmVzb3VyY2VzIHRoYXQgZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCB0aGUKK2NvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KKworCitTaW1wbGlmeWluZyBzdXBwb3J0IGZvciBzaW5nbGUgb3B0aW9uYWwgY29udGV4dCBtYW5hZ2VycworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSW4gdGhlIHNwZWNpZmljIGNhc2Ugb2YgYSBzaW5nbGUgb3B0aW9uYWwgY29udGV4dCBtYW5hZ2VyLCA6Y2xhc3M6YEV4aXRTdGFja2AKK2luc3RhbmNlcyBjYW4gYmUgdXNlZCBhcyBhICJkbyBub3RoaW5nIiBjb250ZXh0IG1hbmFnZXIsIGFsbG93aW5nIGEgY29udGV4dAorbWFuYWdlciB0byBlYXNpbHkgYmUgb21pdHRlZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YKK3RoZSBzb3VyY2UgY29kZTo6CisKKyAgIGRlZiBkZWJ1Z190cmFjZShkZXRhaWxzKToKKyAgICAgICBpZiBfX2RlYnVnX186CisgICAgICAgICAgIHJldHVybiBUcmFjZUNvbnRleHQoZGV0YWlscykKKyAgICAgICAjIERvbid0IGRvIGFueXRoaW5nIHNwZWNpYWwgd2l0aCB0aGUgY29udGV4dCBpbiByZWxlYXNlIG1vZGUKKyAgICAgICByZXR1cm4gRXhpdFN0YWNrKCkKKworICAgd2l0aCBkZWJ1Z190cmFjZSgpOgorICAgICAgICMgU3VpdGUgaXMgdHJhY2VkIGluIGRlYnVnIG1vZGUsIGJ1dCBydW5zIG5vcm1hbGx5IG90aGVyd2lzZQorCisKK0NhdGNoaW5nIGV4Y2VwdGlvbnMgZnJvbSBgYF9fZW50ZXJfX2BgIG1ldGhvZHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSXQgaXMgb2NjYXNpb25hbGx5IGRlc2lyYWJsZSB0byBjYXRjaCBleGNlcHRpb25zIGZyb20gYW4gYGBfX2VudGVyX19gYAorbWV0aG9kIGltcGxlbWVudGF0aW9uLCAqd2l0aG91dCogaW5hZHZlcnRlbnRseSBjYXRjaGluZyBleGNlcHRpb25zIGZyb20KK3RoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGJvZHkgb3IgdGhlIGNvbnRleHQgbWFuYWdlcidzIGBgX19leGl0X19gYAorbWV0aG9kLiBCeSB1c2luZyA6Y2xhc3M6YEV4aXRTdGFja2AgdGhlIHN0ZXBzIGluIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQKK3Byb3RvY29sIGNhbiBiZSBzZXBhcmF0ZWQgc2xpZ2h0bHkgaW4gb3JkZXIgdG8gYWxsb3cgdGhpczo6CisKKyAgIHN0YWNrID0gRXhpdFN0YWNrKCkKKyAgIHRyeToKKyAgICAgICB4ID0gc3RhY2suZW50ZXJfY29udGV4dChjbSkKKyAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIyBoYW5kbGUgX19lbnRlcl9fIGV4Y2VwdGlvbgorICAgZWxzZToKKyAgICAgICB3aXRoIHN0YWNrOgorICAgICAgICAgICAjIEhhbmRsZSBub3JtYWwgY2FzZQorCitBY3R1YWxseSBuZWVkaW5nIHRvIGRvIHRoaXMgaXMgbGlrZWx5IHRvIGluZGljYXRlIHRoYXQgdGhlIHVuZGVybHlpbmcgQVBJCitzaG91bGQgYmUgcHJvdmlkaW5nIGEgZGlyZWN0IHJlc291cmNlIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGZvciB1c2Ugd2l0aAorOmtleXdvcmQ6YHRyeWAvOmtleXdvcmQ6YGV4Y2VwdGAvOmtleXdvcmQ6YGZpbmFsbHlgIHN0YXRlbWVudHMsIGJ1dCBub3QKK2FsbCBBUElzIGFyZSB3ZWxsIGRlc2lnbmVkIGluIHRoYXQgcmVnYXJkLiBXaGVuIGEgY29udGV4dCBtYW5hZ2VyIGlzIHRoZQorb25seSByZXNvdXJjZSBtYW5hZ2VtZW50IEFQSSBwcm92aWRlZCwgdGhlbiA6Y2xhc3M6YEV4aXRTdGFja2AgY2FuIG1ha2UgaXQKK2Vhc2llciB0byBoYW5kbGUgdmFyaW91cyBzaXR1YXRpb25zIHRoYXQgY2FuJ3QgYmUgaGFuZGxlZCBkaXJlY3RseSBpbiBhCis6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LgorCisKK0NsZWFuaW5nIHVwIGluIGFuIGBgX19lbnRlcl9fYGAgaW1wbGVtZW50YXRpb24KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQXMgbm90ZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgOm1ldGg6YEV4aXRTdGFjay5wdXNoYCwgdGhpcworbWV0aG9kIGNhbiBiZSB1c2VmdWwgaW4gY2xlYW5pbmcgdXAgYW4gYWxyZWFkeSBhbGxvY2F0ZWQgcmVzb3VyY2UgaWYgbGF0ZXIKK3N0ZXBzIGluIHRoZSA6bWV0aDpgX19lbnRlcl9fYCBpbXBsZW1lbnRhdGlvbiBmYWlsLgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBkb2luZyB0aGlzIGZvciBhIGNvbnRleHQgbWFuYWdlciB0aGF0IGFjY2VwdHMgcmVzb3VyY2UKK2FjcXVpc2l0aW9uIGFuZCByZWxlYXNlIGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBhbiBvcHRpb25hbCB2YWxpZGF0aW9uIGZ1bmN0aW9uLAorYW5kIG1hcHMgdGhlbSB0byB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlciwgRXhpdFN0YWNrCisKKyAgIGNsYXNzIFJlc291cmNlTWFuYWdlcihvYmplY3QpOgorCisgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjcXVpcmVfcmVzb3VyY2UsIHJlbGVhc2VfcmVzb3VyY2UsIGNoZWNrX3Jlc291cmNlX29rPU5vbmUpOgorICAgICAgICAgICBzZWxmLmFjcXVpcmVfcmVzb3VyY2UgPSBhY3F1aXJlX3Jlc291cmNlCisgICAgICAgICAgIHNlbGYucmVsZWFzZV9yZXNvdXJjZSA9IHJlbGVhc2VfcmVzb3VyY2UKKyAgICAgICAgICAgaWYgY2hlY2tfcmVzb3VyY2Vfb2sgaXMgTm9uZToKKyAgICAgICAgICAgICAgIGRlZiBjaGVja19yZXNvdXJjZV9vayhyZXNvdXJjZSk6CisgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgc2VsZi5jaGVja19yZXNvdXJjZV9vayA9IGNoZWNrX3Jlc291cmNlX29rCisKKyAgICAgICBAY29udGV4dG1hbmFnZXIKKyAgICAgICBkZWYgX2NsZWFudXBfb25fZXJyb3Ioc2VsZik6CisgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICBzdGFjay5wdXNoKHNlbGYpCisgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIyBUaGUgdmFsaWRhdGlvbiBjaGVjayBwYXNzZWQgYW5kIGRpZG4ndCByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICMgQWNjb3JkaW5nbHksIHdlIHdhbnQgdG8ga2VlcCB0aGUgcmVzb3VyY2UsIGFuZCBwYXNzIGl0CisgICAgICAgICAgICAgICAjIGJhY2sgdG8gb3VyIGNhbGxlcgorICAgICAgICAgICAgICAgc3RhY2sucG9wX2FsbCgpCisKKyAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICByZXNvdXJjZSA9IHNlbGYuYWNxdWlyZV9yZXNvdXJjZSgpCisgICAgICAgICAgIHdpdGggc2VsZi5fY2xlYW51cF9vbl9lcnJvcigpOgorICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuY2hlY2tfcmVzb3VyY2Vfb2socmVzb3VyY2UpOgorICAgICAgICAgICAgICAgICAgIG1zZyA9ICJGYWlsZWQgdmFsaWRhdGlvbiBmb3IgeyFyfSIKKyAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IobXNnLmZvcm1hdChyZXNvdXJjZSkpCisgICAgICAgICAgIHJldHVybiByZXNvdXJjZQorCisgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0byBkdXBsaWNhdGUgYW55IG9mIG91ciByZXNvdXJjZSByZWxlYXNlIGxvZ2ljCisgICAgICAgICAgIHNlbGYucmVsZWFzZV9yZXNvdXJjZSgpCisKKworUmVwbGFjaW5nIGFueSB1c2Ugb2YgYGB0cnktZmluYWxseWBgIGFuZCBmbGFnIHZhcmlhYmxlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitBIHBhdHRlcm4geW91IHdpbGwgc29tZXRpbWVzIHNlZSBpcyBhIGBgdHJ5LWZpbmFsbHlgYCBzdGF0ZW1lbnQgd2l0aCBhIGZsYWcKK3ZhcmlhYmxlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoZSBib2R5IG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2Ugc2hvdWxkCitiZSBleGVjdXRlZC4gSW4gaXRzIHNpbXBsZXN0IGZvcm0gKHRoYXQgY2FuJ3QgYWxyZWFkeSBiZSBoYW5kbGVkIGp1c3QgYnkKK3VzaW5nIGFuIGBgZXhjZXB0YGAgY2xhdXNlIGluc3RlYWQpLCBpdCBsb29rcyBzb21ldGhpbmcgbGlrZSB0aGlzOjoKKworICAgY2xlYW51cF9uZWVkZWQgPSBUcnVlCisgICB0cnk6CisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgY2xlYW51cF9uZWVkZWQgPSBGYWxzZQorICAgZmluYWxseToKKyAgICAgICBpZiBjbGVhbnVwX25lZWRlZDoKKyAgICAgICAgICAgY2xlYW51cF9yZXNvdXJjZXMoKQorCitBcyB3aXRoIGFueSBgYHRyeWBgIHN0YXRlbWVudCBiYXNlZCBjb2RlLCB0aGlzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3IKK2RldmVsb3BtZW50IGFuZCByZXZpZXcsIGJlY2F1c2UgdGhlIHNldHVwIGNvZGUgYW5kIHRoZSBjbGVhbnVwIGNvZGUgY2FuIGVuZAordXAgYmVpbmcgc2VwYXJhdGVkIGJ5IGFyYml0cmFyaWx5IGxvbmcgc2VjdGlvbnMgb2YgY29kZS4KKworOmNsYXNzOmBFeGl0U3RhY2tgIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGluc3RlYWQgcmVnaXN0ZXIgYSBjYWxsYmFjayBmb3IKK2V4ZWN1dGlvbiBhdCB0aGUgZW5kIG9mIGEgYGB3aXRoYGAgc3RhdGVtZW50LCBhbmQgdGhlbiBsYXRlciBkZWNpZGUgdG8gc2tpcAorZXhlY3V0aW5nIHRoYXQgY2FsbGJhY2s6OgorCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRTdGFjaworCisgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgIHN0YWNrLmNhbGxiYWNrKGNsZWFudXBfcmVzb3VyY2VzKQorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIHN0YWNrLnBvcF9hbGwoKQorCitUaGlzIGFsbG93cyB0aGUgaW50ZW5kZWQgY2xlYW51cCB1cCBiZWhhdmlvdXIgdG8gYmUgbWFkZSBleHBsaWNpdCB1cCBmcm9udCwKK3JhdGhlciB0aGFuIHJlcXVpcmluZyBhIHNlcGFyYXRlIGZsYWcgdmFyaWFibGUuCisKK0lmIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbiB1c2VzIHRoaXMgcGF0dGVybiBhIGxvdCwgaXQgY2FuIGJlIHNpbXBsaWZpZWQKK2V2ZW4gZnVydGhlciBieSBtZWFucyBvZiBhIHNtYWxsIGhlbHBlciBjbGFzczo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCisKKyAgIGNsYXNzIENhbGxiYWNrKEV4aXRTdGFjayk6CisgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhbGxiYWNrLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgc3VwZXIoQ2FsbGJhY2ssIHNlbGYpLl9faW5pdF9fKCkKKyAgICAgICAgICAgc2VsZi5jYWxsYmFjayhjYWxsYmFjaywgKmFyZ3MsICoqa3dkcykKKworICAgICAgIGRlZiBjYW5jZWwoc2VsZik6CisgICAgICAgICAgIHNlbGYucG9wX2FsbCgpCisKKyAgIHdpdGggQ2FsbGJhY2soY2xlYW51cF9yZXNvdXJjZXMpIGFzIGNiOgorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIGNiLmNhbmNlbCgpCisKK0lmIHRoZSByZXNvdXJjZSBjbGVhbnVwIGlzbid0IGFscmVhZHkgbmVhdGx5IGJ1bmRsZWQgaW50byBhIHN0YW5kYWxvbmUKK2Z1bmN0aW9uLCB0aGVuIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIHVzZSB0aGUgZGVjb3JhdG9yIGZvcm0gb2YKKzptZXRoOmBFeGl0U3RhY2suY2FsbGJhY2tgIHRvIGRlY2xhcmUgdGhlIHJlc291cmNlIGNsZWFudXAgaW4KK2FkdmFuY2U6OgorCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRTdGFjaworCisgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgIEBzdGFjay5jYWxsYmFjaworICAgICAgIGRlZiBjbGVhbnVwX3Jlc291cmNlcygpOgorICAgICAgICAgICAuLi4KKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBzdGFjay5wb3BfYWxsKCkKKworRHVlIHRvIHRoZSB3YXkgdGhlIGRlY29yYXRvciBwcm90b2NvbCB3b3JrcywgYSBjYWxsYmFjayBmdW5jdGlvbgorZGVjbGFyZWQgdGhpcyB3YXkgY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcnMuIEluc3RlYWQsIGFueSByZXNvdXJjZXMgdG8KK2JlIHJlbGVhc2VkIG11c3QgYmUgYWNjZXNzZWQgYXMgY2xvc3VyZSB2YXJpYWJsZXMKKworCitVc2luZyBhIGNvbnRleHQgbWFuYWdlciBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvcgorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworOmNsYXNzOmBDb250ZXh0RGVjb3JhdG9yYCBtYWtlcyBpdCBwb3NzaWJsZSB0byB1c2UgYSBjb250ZXh0IG1hbmFnZXIgaW4KK2JvdGggYW4gb3JkaW5hcnkgYGB3aXRoYGAgc3RhdGVtZW50IGFuZCBhbHNvIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLgorCitGb3IgZXhhbXBsZSwgaXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byB3cmFwIGZ1bmN0aW9ucyBvciBncm91cHMgb2Ygc3RhdGVtZW50cword2l0aCBhIGxvZ2dlciB0aGF0IGNhbiB0cmFjayB0aGUgdGltZSBvZiBlbnRyeSBhbmQgdGltZSBvZiBleGl0LiAgUmF0aGVyIHRoYW4KK3dyaXRpbmcgYm90aCBhIGZ1bmN0aW9uIGRlY29yYXRvciBhbmQgYSBjb250ZXh0IG1hbmFnZXIgZm9yIHRoZSB0YXNrLAoraW5oZXJpdGluZyBmcm9tIDpjbGFzczpgQ29udGV4dERlY29yYXRvcmAgcHJvdmlkZXMgYm90aCBjYXBhYmlsaXRpZXMgaW4gYQorc2luZ2xlIGRlZmluaXRpb246OgorCisgICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBDb250ZXh0RGVjb3JhdG9yCisgICAgaW1wb3J0IGxvZ2dpbmcKKworICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPKQorCisgICAgY2xhc3MgdHJhY2tfZW50cnlfYW5kX2V4aXQoQ29udGV4dERlY29yYXRvcik6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzoge30nLmZvcm1hdChuYW1lKSkKKworICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4YywgZXhjX3RiKToKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzoge30nLmZvcm1hdChuYW1lKSkKKworSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgYXMgYm90aCBhIGNvbnRleHQgbWFuYWdlcjo6CisKKyAgICB3aXRoIHRyYWNrX2VudHJ5X2FuZF9leGl0KCd3aWRnZXQgbG9hZGVyJyk6CisgICAgICAgIHByaW50KCdTb21lIHRpbWUgY29uc3VtaW5nIGFjdGl2aXR5IGdvZXMgaGVyZScpCisgICAgICAgIGxvYWRfd2lkZ2V0KCkKKworQW5kIGFsc28gYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3I6OgorCisgICAgQHRyYWNrX2VudHJ5X2FuZF9leGl0KCd3aWRnZXQgbG9hZGVyJykKKyAgICBkZWYgYWN0aXZpdHkoKToKKyAgICAgICAgcHJpbnQoJ1NvbWUgdGltZSBjb25zdW1pbmcgYWN0aXZpdHkgZ29lcyBoZXJlJykKKyAgICAgICAgbG9hZF93aWRnZXQoKQorCitOb3RlIHRoYXQgdGhlcmUgaXMgb25lIGFkZGl0aW9uYWwgbGltaXRhdGlvbiB3aGVuIHVzaW5nIGNvbnRleHQgbWFuYWdlcnMKK2FzIGZ1bmN0aW9uIGRlY29yYXRvcnM6IHRoZXJlJ3Mgbm8gd2F5IHRvIGFjY2VzcyB0aGUgcmV0dXJuIHZhbHVlIG9mCis6bWV0aDpgX19lbnRlcl9fYC4gSWYgdGhhdCB2YWx1ZSBpcyBuZWVkZWQsIHRoZW4gaXQgaXMgc3RpbGwgbmVjZXNzYXJ5IHRvIHVzZQorYW4gZXhwbGljaXQgYGB3aXRoYGAgc3RhdGVtZW50LgorCiAuLiBzZWVhbHNvOjoKIAogICAgOnBlcDpgMDM0M2AgLSBUaGUgIndpdGgiIHN0YXRlbWVudApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QgYi9Eb2MvbGlicmFyeS9jb3B5cmVnLnJzdAppbmRleCBhMmQzMTZlLi40MTA2MWU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb3B5cmVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb3B5cmVnLnJzdApAQCAtMzIsNiArMzIsOCBAQAogICAgcmV0dXJuZWQgYnkgKmZ1bmN0aW9uKiBhdCBwaWNrbGluZyB0aW1lLiAgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZgogICAgKm9iamVjdCogaXMgYSBjbGFzcyBvciAqY29uc3RydWN0b3IqIGlzIG5vdCBjYWxsYWJsZS4KIAotICAgU2VlIHRoZSA6bW9kOmBwaWNrbGVgIG1vZHVsZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBpbnRlcmZhY2UgZXhwZWN0ZWQgb2YKLSAgICpmdW5jdGlvbiogYW5kICpjb25zdHJ1Y3RvciouCi0KKyAgIFNlZSB0aGUgOm1vZDpgcGlja2xlYCBtb2R1bGUgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgaW50ZXJmYWNlCisgICBleHBlY3RlZCBvZiAqZnVuY3Rpb24qIGFuZCAqY29uc3RydWN0b3IqLiAgTm90ZSB0aGF0IHRoZQorICAgOmF0dHI6YH5waWNrbGUuUGlja2xlci5kaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIG9mIGEgcGlja2xlcgorICAgb2JqZWN0IG9yIHN1YmNsYXNzIG9mIDpjbGFzczpgcGlja2xlLlBpY2tsZXJgIGNhbiBhbHNvIGJlIHVzZWQgZm9yCisgICBkZWNsYXJpbmcgcmVkdWN0aW9uIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAppbmRleCAwYmU1NzFlLi5iNGM5MGNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CkBAIC0xNSw5ICsxNSw5IEBACiAKIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRvIHRoZSA6bWFucGFnZTpgY3J5cHQoMylgIHJvdXRpbmUsIHdoaWNoIGlzCiBhIG9uZS13YXkgaGFzaCBmdW5jdGlvbiBiYXNlZCB1cG9uIGEgbW9kaWZpZWQgREVTIGFsZ29yaXRobTsgc2VlIHRoZSBVbml4IG1hbgotcGFnZSBmb3IgZnVydGhlciBkZXRhaWxzLiAgUG9zc2libGUgdXNlcyBpbmNsdWRlIGFsbG93aW5nIFB5dGhvbiBzY3JpcHRzIHRvCi1hY2NlcHQgdHlwZWQgcGFzc3dvcmRzIGZyb20gdGhlIHVzZXIsIG9yIGF0dGVtcHRpbmcgdG8gY3JhY2sgVW5peCBwYXNzd29yZHMgd2l0aAotYSBkaWN0aW9uYXJ5LgorcGFnZSBmb3IgZnVydGhlciBkZXRhaWxzLiAgUG9zc2libGUgdXNlcyBpbmNsdWRlIHN0b3JpbmcgaGFzaGVkIHBhc3N3b3Jkcworc28geW91IGNhbiBjaGVjayBwYXNzd29yZHMgd2l0aG91dCBzdG9yaW5nIHRoZSBhY3R1YWwgcGFzc3dvcmQsIG9yIGF0dGVtcHRpbmcKK3RvIGNyYWNrIFVuaXggcGFzc3dvcmRzIHdpdGggYSBkaWN0aW9uYXJ5LgogCiAuLiBpbmRleDo6IHNpbmdsZTogY3J5cHQoMykKIApAQCAtMjYsMTUgKzI2LDc0IEBACiBleHRlbnNpb25zIGF2YWlsYWJsZSBvbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3aWxsIGFsc28gIGJlIGF2YWlsYWJsZSBvbgogdGhpcyBtb2R1bGUuCiAKK0hhc2hpbmcgTWV0aG9kcworLS0tLS0tLS0tLS0tLS0tCiAKLS4uIGZ1bmN0aW9uOjogY3J5cHQod29yZCwgc2FsdCkKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBkZWZpbmVzIHRoZSBsaXN0IG9mIGhhc2hpbmcgbWV0aG9kcyAobm90IGFsbCBtZXRob2RzCithcmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMpOgorCisuLiBkYXRhOjogTUVUSE9EX1NIQTUxMgorCisgICBBIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG1ldGhvZCB3aXRoIDE2IGNoYXJhY3RlciBzYWx0IGFuZCA4NiBjaGFyYWN0ZXIKKyAgIGhhc2guICBUaGlzIGlzIHRoZSBzdHJvbmdlc3QgbWV0aG9kLgorCisuLiBkYXRhOjogTUVUSE9EX1NIQTI1NgorCisgICBBbm90aGVyIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG1ldGhvZCB3aXRoIDE2IGNoYXJhY3RlciBzYWx0IGFuZCA0MworICAgY2hhcmFjdGVyIGhhc2guCisKKy4uIGRhdGE6OiBNRVRIT0RfTUQ1CisKKyAgIEFub3RoZXIgTW9kdWxhciBDcnlwdCBGb3JtYXQgbWV0aG9kIHdpdGggOCBjaGFyYWN0ZXIgc2FsdCBhbmQgMjIKKyAgIGNoYXJhY3RlciBoYXNoLgorCisuLiBkYXRhOjogTUVUSE9EX0NSWVBUCisKKyAgIFRoZSB0cmFkaXRpb25hbCBtZXRob2Qgd2l0aCBhIDIgY2hhcmFjdGVyIHNhbHQgYW5kIDEzIGNoYXJhY3RlcnMgb2YKKyAgIGhhc2guICBUaGlzIGlzIHRoZSB3ZWFrZXN0IG1ldGhvZC4KKworCitNb2R1bGUgQXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGF0dHJpYnV0ZTo6IG1ldGhvZHMKKworICAgQSBsaXN0IG9mIGF2YWlsYWJsZSBwYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobXMsIGFzCisgICBgYGNyeXB0Lk1FVEhPRF8qYGAgb2JqZWN0cy4gIFRoaXMgbGlzdCBpcyBzb3J0ZWQgZnJvbSBzdHJvbmdlc3QgdG8KKyAgIHdlYWtlc3QsIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3QgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYC4KKworCitNb2R1bGUgRnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBjcnlwdGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CisKKy4uIGZ1bmN0aW9uOjogY3J5cHQod29yZCwgc2FsdD1Ob25lKQogCiAgICAqd29yZCogd2lsbCB1c3VhbGx5IGJlIGEgdXNlcidzIHBhc3N3b3JkIGFzIHR5cGVkIGF0IGEgcHJvbXB0IG9yICBpbiBhIGdyYXBoaWNhbAotICAgaW50ZXJmYWNlLiAgKnNhbHQqIGlzIHVzdWFsbHkgYSByYW5kb20gdHdvLWNoYXJhY3RlciBzdHJpbmcgd2hpY2ggd2lsbCBiZSB1c2VkCi0gICB0byBwZXJ0dXJiIHRoZSBERVMgYWxnb3JpdGhtIGluIG9uZSBvZiA0MDk2IHdheXMuICBUaGUgY2hhcmFjdGVycyBpbiAqc2FsdCogbXVzdAotICAgYmUgaW4gdGhlIHNldCBgYFsuL2EtekEtWjAtOV1gYC4gIFJldHVybnMgdGhlIGhhc2hlZCBwYXNzd29yZCBhcyBhIHN0cmluZywgd2hpY2gKLSAgIHdpbGwgYmUgY29tcG9zZWQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBzYW1lIGFscGhhYmV0IGFzIHRoZSBzYWx0ICh0aGUgZmlyc3QgdHdvCi0gICBjaGFyYWN0ZXJzIHJlcHJlc2VudCB0aGUgc2FsdCBpdHNlbGYpLgorICAgaW50ZXJmYWNlLiAgVGhlIG9wdGlvbmFsICpzYWx0KiBpcyBlaXRoZXIgYSBzdHJpbmcgYXMgcmV0dXJuZWQgZnJvbQorICAgOmZ1bmM6YG1rc2FsdGAsIG9uZSBvZiB0aGUgYGBjcnlwdC5NRVRIT0RfKmBgIHZhbHVlcyAodGhvdWdoIG5vdCBhbGwKKyAgIG1heSBiZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyksIG9yIGEgZnVsbCBlbmNyeXB0ZWQgcGFzc3dvcmQKKyAgIGluY2x1ZGluZyBzYWx0LCBhcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uLiAgSWYgKnNhbHQqIGlzIG5vdAorICAgcHJvdmlkZWQsIHRoZSBzdHJvbmdlc3QgbWV0aG9kIHdpbGwgYmUgdXNlZCAoYXMgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBtZXRob2RzYC4KKworICAgQ2hlY2tpbmcgYSBwYXNzd29yZCBpcyB1c3VhbGx5IGRvbmUgYnkgcGFzc2luZyB0aGUgcGxhaW4tdGV4dCBwYXNzd29yZAorICAgYXMgKndvcmQqIGFuZCB0aGUgZnVsbCByZXN1bHRzIG9mIGEgcHJldmlvdXMgOmZ1bmM6YGNyeXB0YCBjYWxsLAorICAgd2hpY2ggc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHRoZSByZXN1bHRzIG9mIHRoaXMgY2FsbC4KKworICAgKnNhbHQqIChlaXRoZXIgYSByYW5kb20gMiBvciAxNiBjaGFyYWN0ZXIgc3RyaW5nLCBwb3NzaWJseSBwcmVmaXhlZCB3aXRoCisgICBgYCRkaWdpdCRgYCB0byBpbmRpY2F0ZSB0aGUgbWV0aG9kKSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcGVydHVyYiB0aGUKKyAgIGVuY3J5cHRpb24gYWxnb3JpdGhtLiAgVGhlIGNoYXJhY3RlcnMgaW4gKnNhbHQqIG11c3QgYmUgaW4gdGhlIHNldAorICAgYGBbLi9hLXpBLVowLTldYGAsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBNb2R1bGFyIENyeXB0IEZvcm1hdCB3aGljaAorICAgcHJlZml4ZXMgYSBgYCRkaWdpdCRgYC4KKworICAgUmV0dXJucyB0aGUgaGFzaGVkIHBhc3N3b3JkIGFzIGEgc3RyaW5nLCB3aGljaCB3aWxsIGJlIGNvbXBvc2VkIG9mCisgICBjaGFyYWN0ZXJzIGZyb20gdGhlIHNhbWUgYWxwaGFiZXQgYXMgdGhlIHNhbHQuCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBjcnlwdCgzKQogCkBAIC00MiwxOCArMTAxLDUyIEBACiAgICBkaWZmZXJlbnQgc2l6ZXMgaW4gdGhlICpzYWx0KiwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlICB0aGUgZnVsbCBjcnlwdGVkCiAgICBwYXNzd29yZCBhcyBzYWx0IHdoZW4gY2hlY2tpbmcgZm9yIGEgcGFzc3dvcmQuCiAKLUEgc2ltcGxlIGV4YW1wbGUgaWxsdXN0cmF0aW5nIHR5cGljYWwgdXNlOjoKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBY2NlcHQgYGBjcnlwdC5NRVRIT0RfKmBgIHZhbHVlcyBpbiBhZGRpdGlvbiB0byBzdHJpbmdzIGZvciAqc2FsdCouCiAKLSAgIGltcG9ydCBjcnlwdCwgZ2V0cGFzcywgcHdkCisKKy4uIGZ1bmN0aW9uOjogbWtzYWx0KG1ldGhvZD1Ob25lKQorCisgICBSZXR1cm4gYSByYW5kb21seSBnZW5lcmF0ZWQgc2FsdCBvZiB0aGUgc3BlY2lmaWVkIG1ldGhvZC4gIElmIG5vCisgICAqbWV0aG9kKiBpcyBnaXZlbiwgdGhlIHN0cm9uZ2VzdCBtZXRob2QgYXZhaWxhYmxlIGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgbWV0aG9kc2AgaXMgdXNlZC4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cmluZyBlaXRoZXIgb2YgMiBjaGFyYWN0ZXJzIGluIGxlbmd0aCBmb3IKKyAgIGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAsIG9yIDE5IGNoYXJhY3RlcnMgc3RhcnRpbmcgd2l0aCBgYCRkaWdpdCRgYCBhbmQKKyAgIDE2IHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhlIHNldCBgYFsuL2EtekEtWjAtOV1gYCwgc3VpdGFibGUgZm9yCisgICBwYXNzaW5nIGFzIHRoZSAqc2FsdCogYXJndW1lbnQgdG8gOmZ1bmM6YGNyeXB0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK0V4YW1wbGVzCistLS0tLS0tLQorCitBIHNpbXBsZSBleGFtcGxlIGlsbHVzdHJhdGluZyB0eXBpY2FsIHVzZSAoYSBjb25zdGFudC10aW1lIGNvbXBhcmlzb24KK29wZXJhdGlvbiBpcyBuZWVkZWQgdG8gbGltaXQgZXhwb3N1cmUgdG8gdGltaW5nIGF0dGFja3MuCis6ZnVuYzpgaG1hYy5jb21wYXJlX2RpZ2VzdGAgaXMgc3VpdGFibGUgZm9yIHRoaXMgcHVycG9zZSk6OgorCisgICBpbXBvcnQgcHdkCisgICBpbXBvcnQgY3J5cHQKKyAgIGltcG9ydCBnZXRwYXNzCisgICBmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfaGFzaAogCiAgICBkZWYgbG9naW4oKToKLSAgICAgICB1c2VybmFtZSA9IGlucHV0KCdQeXRob24gbG9naW46JykKKyAgICAgICB1c2VybmFtZSA9IGlucHV0KCdQeXRob24gbG9naW46ICcpCiAgICAgICAgY3J5cHRlZHBhc3N3ZCA9IHB3ZC5nZXRwd25hbSh1c2VybmFtZSlbMV0KICAgICAgICBpZiBjcnlwdGVkcGFzc3dkOgogICAgICAgICAgICBpZiBjcnlwdGVkcGFzc3dkID09ICd4JyBvciBjcnlwdGVkcGFzc3dkID09ICcqJzoKLSAgICAgICAgICAgICAgIHJhaXNlICJTb3JyeSwgY3VycmVudGx5IG5vIHN1cHBvcnQgZm9yIHNoYWRvdyBwYXNzd29yZHMiCisgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdubyBzdXBwb3J0IGZvciBzaGFkb3cgcGFzc3dvcmRzJykKICAgICAgICAgICAgY2xlYXJ0ZXh0ID0gZ2V0cGFzcy5nZXRwYXNzKCkKLSAgICAgICAgICAgcmV0dXJuIGNyeXB0LmNyeXB0KGNsZWFydGV4dCwgY3J5cHRlZHBhc3N3ZCkgPT0gY3J5cHRlZHBhc3N3ZAorICAgICAgICAgICByZXR1cm4gY29tcGFyZV9oYXNoKGNyeXB0LmNyeXB0KGNsZWFydGV4dCwgY3J5cHRlZHBhc3N3ZCksIGNyeXB0ZWRwYXNzd2QpCiAgICAgICAgZWxzZToKLSAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgcmV0dXJuIFRydWUKIAorVG8gZ2VuZXJhdGUgYSBoYXNoIG9mIGEgcGFzc3dvcmQgdXNpbmcgdGhlIHN0cm9uZ2VzdCBhdmFpbGFibGUgbWV0aG9kIGFuZAorY2hlY2sgaXQgYWdhaW5zdCB0aGUgb3JpZ2luYWw6OgorCisgICBpbXBvcnQgY3J5cHQKKyAgIGZyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QgYXMgY29tcGFyZV9oYXNoCisKKyAgIGhhc2hlZCA9IGNyeXB0LmNyeXB0KHBsYWludGV4dCkKKyAgIGlmIG5vdCBjb21wYXJlX2hhc2goaGFzaGVkLCBjcnlwdC5jcnlwdChwbGFpbnRleHQsIGhhc2hlZCkpOgorICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaGFzaGVkIHZlcnNpb24gZG9lc24ndCB2YWxpZGF0ZSBhZ2FpbnN0IG9yaWdpbmFsIikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CmluZGV4IGEyMzM1NjEuLjQ2OWVkZTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdApAQCAtOCw2ICs4LDcgQEAKIAogVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBpbXBsZW1lbnQgdmFyaW91cyBhbGdvcml0aG1zIG9mIGEKIGNyeXB0b2dyYXBoaWMgbmF0dXJlLiAgVGhleSBhcmUgYXZhaWxhYmxlIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZSBpbnN0YWxsYXRpb24uCitPbiBVbml4IHN5c3RlbXMsIHRoZSA6bW9kOmBjcnlwdGAgbW9kdWxlIG1heSBhbHNvIGJlIGF2YWlsYWJsZS4KIEhlcmUncyBhbiBvdmVydmlldzoKIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCBkOGRmN2ZjLi40ZjE5Y2VlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTExLDE1ICsxMSwxNSBAQAogICAgcGFpcjogZGF0YTsgdGFidWxhcgogCiBUaGUgc28tY2FsbGVkIENTViAoQ29tbWEgU2VwYXJhdGVkIFZhbHVlcykgZm9ybWF0IGlzIHRoZSBtb3N0IGNvbW1vbiBpbXBvcnQgYW5kCi1leHBvcnQgZm9ybWF0IGZvciBzcHJlYWRzaGVldHMgYW5kIGRhdGFiYXNlcy4gIFRoZXJlIGlzIG5vICJDU1Ygc3RhbmRhcmQiLCBzbwotdGhlIGZvcm1hdCBpcyBvcGVyYXRpb25hbGx5IGRlZmluZWQgYnkgdGhlIG1hbnkgYXBwbGljYXRpb25zIHdoaWNoIHJlYWQgYW5kCi13cml0ZSBpdC4gIFRoZSBsYWNrIG9mIGEgc3RhbmRhcmQgbWVhbnMgdGhhdCBzdWJ0bGUgZGlmZmVyZW5jZXMgb2Z0ZW4gZXhpc3QgaW4KLXRoZSBkYXRhIHByb2R1Y2VkIGFuZCBjb25zdW1lZCBieSBkaWZmZXJlbnQgYXBwbGljYXRpb25zLiAgVGhlc2UgZGlmZmVyZW5jZXMgY2FuCi1tYWtlIGl0IGFubm95aW5nIHRvIHByb2Nlc3MgQ1NWIGZpbGVzIGZyb20gbXVsdGlwbGUgc291cmNlcy4gIFN0aWxsLCB3aGlsZSB0aGUKLWRlbGltaXRlcnMgYW5kIHF1b3RpbmcgY2hhcmFjdGVycyB2YXJ5LCB0aGUgb3ZlcmFsbCBmb3JtYXQgaXMgc2ltaWxhciBlbm91Z2gKLXRoYXQgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgYSBzaW5nbGUgbW9kdWxlIHdoaWNoIGNhbiBlZmZpY2llbnRseSBtYW5pcHVsYXRlCi1zdWNoIGRhdGEsIGhpZGluZyB0aGUgZGV0YWlscyBvZiByZWFkaW5nIGFuZCB3cml0aW5nIHRoZSBkYXRhIGZyb20gdGhlCi1wcm9ncmFtbWVyLgorZXhwb3J0IGZvcm1hdCBmb3Igc3ByZWFkc2hlZXRzIGFuZCBkYXRhYmFzZXMuICBDU1YgZm9ybWF0IHdhcyB1c2VkIGZvciBtYW55Cit5ZWFycyBwcmlvciB0byBhdHRlbXB0cyB0byBkZXNjcmliZSB0aGUgZm9ybWF0IGluIGEgc3RhbmRhcmRpemVkIHdheSBpbgorOnJmYzpgNDE4MGAuICBUaGUgbGFjayBvZiBhIHdlbGwtZGVmaW5lZCBzdGFuZGFyZCBtZWFucyB0aGF0IHN1YnRsZSBkaWZmZXJlbmNlcworb2Z0ZW4gZXhpc3QgaW4gdGhlIGRhdGEgcHJvZHVjZWQgYW5kIGNvbnN1bWVkIGJ5IGRpZmZlcmVudCBhcHBsaWNhdGlvbnMuICBUaGVzZQorZGlmZmVyZW5jZXMgY2FuIG1ha2UgaXQgYW5ub3lpbmcgdG8gcHJvY2VzcyBDU1YgZmlsZXMgZnJvbSBtdWx0aXBsZSBzb3VyY2VzLgorU3RpbGwsIHdoaWxlIHRoZSBkZWxpbWl0ZXJzIGFuZCBxdW90aW5nIGNoYXJhY3RlcnMgdmFyeSwgdGhlIG92ZXJhbGwgZm9ybWF0IGlzCitzaW1pbGFyIGVub3VnaCB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGEgc2luZ2xlIG1vZHVsZSB3aGljaCBjYW4KK2VmZmljaWVudGx5IG1hbmlwdWxhdGUgc3VjaCBkYXRhLCBoaWRpbmcgdGhlIGRldGFpbHMgb2YgcmVhZGluZyBhbmQgd3JpdGluZyB0aGUKK2RhdGEgZnJvbSB0aGUgcHJvZ3JhbW1lci4KIAogVGhlIDptb2Q6YGNzdmAgbW9kdWxlIGltcGxlbWVudHMgY2xhc3NlcyB0byByZWFkIGFuZCB3cml0ZSB0YWJ1bGFyIGRhdGEgaW4gQ1NWCiBmb3JtYXQuICBJdCBhbGxvd3MgcHJvZ3JhbW1lcnMgdG8gc2F5LCAid3JpdGUgdGhpcyBkYXRhIGluIHRoZSBmb3JtYXQgcHJlZmVycmVkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAppbmRleCAzYzYwMmM4Li4zZTRhZmQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKQEAgLTM5LDkgKzM5LDE0IEBACiBjb252ZW50aW9uLCB3aGlsZSAqd2luZGxsKiBsaWJyYXJpZXMgY2FsbCBmdW5jdGlvbnMgdXNpbmcgdGhlIGBgc3RkY2FsbGBgCiBjYWxsaW5nIGNvbnZlbnRpb24uICpvbGVkbGwqIGFsc28gdXNlcyB0aGUgYGBzdGRjYWxsYGAgY2FsbGluZyBjb252ZW50aW9uLCBhbmQKIGFzc3VtZXMgdGhlIGZ1bmN0aW9ucyByZXR1cm4gYSBXaW5kb3dzIDpjOnR5cGU6YEhSRVNVTFRgIGVycm9yIGNvZGUuIFRoZSBlcnJvcgotY29kZSBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmFpc2UgYSA6Y2xhc3M6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIHdoZW4gdGhlCitjb2RlIGlzIHVzZWQgdG8gYXV0b21hdGljYWxseSByYWlzZSBhIDpjbGFzczpgT1NFcnJvcmAgZXhjZXB0aW9uIHdoZW4gdGhlCiBmdW5jdGlvbiBjYWxsIGZhaWxzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgV2luZG93cyBlcnJvcnMgdXNlZCB0byByYWlzZSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4gYWxpYXMKKyAgIG9mIDpleGM6YE9TRXJyb3JgLgorCisKIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXMgZm9yIFdpbmRvd3MuIE5vdGUgdGhhdCBgYG1zdmNydGBgIGlzIHRoZSBNUyBzdGFuZGFyZCBDCiBsaWJyYXJ5IGNvbnRhaW5pbmcgbW9zdCBzdGFuZGFyZCBDIGZ1bmN0aW9ucywgYW5kIHVzZXMgdGhlIGNkZWNsIGNhbGxpbmcKIGNvbnZlbnRpb246OgpAQCAtMTg5LDcgKzE5NCw3IEBACiAgICA+Pj4gd2luZGxsLmtlcm5lbDMyLkdldE1vZHVsZUhhbmRsZUEoMzIpICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwotICAgV2luZG93c0Vycm9yOiBleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gcmVhZGluZyAweDAwMDAwMDIwCisgICBPU0Vycm9yOiBleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gcmVhZGluZyAweDAwMDAwMDIwCiAgICA+Pj4KIAogVGhlcmUgYXJlLCBob3dldmVyLCBlbm91Z2ggd2F5cyB0byBjcmFzaCBQeXRob24gd2l0aCA6bW9kOmBjdHlwZXNgLCBzbyB5b3UKQEAgLTQ5Niw3ICs1MDEsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDMsIGluIFZhbGlkSGFuZGxlCi0gICBXaW5kb3dzRXJyb3I6IFtFcnJubyAxMjZdIFRoZSBzcGVjaWZpZWQgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC4KKyAgIE9TRXJyb3I6IFtFcnJubyAxMjZdIFRoZSBzcGVjaWZpZWQgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC4KICAgID4+PgogCiBgYFdpbkVycm9yYGAgaXMgYSBmdW5jdGlvbiB3aGljaCB3aWxsIGNhbGwgV2luZG93cyBgYEZvcm1hdE1lc3NhZ2UoKWBgIGFwaSB0bwpAQCAtOTI2LDIxICs5MzEsMjEgQEAKIDptb2Q6YGN0eXBlc2AgYWxsb3dzIHRvIGNyZWF0ZSBDIGNhbGxhYmxlIGZ1bmN0aW9uIHBvaW50ZXJzIGZyb20gUHl0aG9uIGNhbGxhYmxlcy4KIFRoZXNlIGFyZSBzb21ldGltZXMgY2FsbGVkICpjYWxsYmFjayBmdW5jdGlvbnMqLgogCi1GaXJzdCwgeW91IG11c3QgY3JlYXRlIGEgY2xhc3MgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiwgdGhlIGNsYXNzIGtub3dzIHRoZQorRmlyc3QsIHlvdSBtdXN0IGNyZWF0ZSBhIGNsYXNzIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSBjbGFzcyBrbm93cyB0aGUKIGNhbGxpbmcgY29udmVudGlvbiwgdGhlIHJldHVybiB0eXBlLCBhbmQgdGhlIG51bWJlciBhbmQgdHlwZXMgb2YgYXJndW1lbnRzIHRoaXMKIGZ1bmN0aW9uIHdpbGwgcmVjZWl2ZS4KIAotVGhlIENGVU5DVFlQRSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUKLW5vcm1hbCBjZGVjbCBjYWxsaW5nIGNvbnZlbnRpb24sIGFuZCwgb24gV2luZG93cywgdGhlIFdJTkZVTkNUWVBFIGZhY3RvcnkKLWZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUgc3RkY2FsbCBjYWxsaW5nCi1jb252ZW50aW9uLgorVGhlIDpmdW5jOmBDRlVOQ1RZUEVgIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlcyB0eXBlcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zCit1c2luZyB0aGUgYGBjZGVjbGBgIGNhbGxpbmcgY29udmVudGlvbi4gT24gV2luZG93cywgdGhlIDpmdW5jOmBXSU5GVU5DVFlQRWAKK2ZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlcyB0eXBlcyBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zIHVzaW5nIHRoZSBgYHN0ZGNhbGxgYAorY2FsbGluZyBjb252ZW50aW9uLgogCiBCb3RoIG9mIHRoZXNlIGZhY3RvcnkgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IHR5cGUgYXMgZmlyc3QKIGFyZ3VtZW50LCBhbmQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyBleHBlY3RlZCBhcmd1bWVudCB0eXBlcyBhcyB0aGUgcmVtYWluaW5nCiBhcmd1bWVudHMuCiAKIEkgd2lsbCBwcmVzZW50IGFuIGV4YW1wbGUgaGVyZSB3aGljaCB1c2VzIHRoZSBzdGFuZGFyZCBDIGxpYnJhcnkncwotOmM6ZnVuYzpgcXNvcnRgIGZ1bmN0aW9uLCB0aGlzIGlzIHVzZWQgdG8gc29ydCBpdGVtcyB3aXRoIHRoZSBoZWxwIG9mIGEgY2FsbGJhY2sKKzpjOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiwgdGhhdCBpcyB1c2VkIHRvIHNvcnQgaXRlbXMgd2l0aCB0aGUgaGVscCBvZiBhIGNhbGxiYWNrCiBmdW5jdGlvbi4gIDpjOmZ1bmM6YHFzb3J0YCB3aWxsIGJlIHVzZWQgdG8gc29ydCBhbiBhcnJheSBvZiBpbnRlZ2Vyczo6CiAKICAgID4+PiBJbnRBcnJheTUgPSBjX2ludCAqIDUKQEAgLTk1Myw3ICs5NTgsNyBAQAogaXRlbXMgaW4gdGhlIGRhdGEgYXJyYXksIHRoZSBzaXplIG9mIG9uZSBpdGVtLCBhbmQgYSBwb2ludGVyIHRvIHRoZSBjb21wYXJpc29uCiBmdW5jdGlvbiwgdGhlIGNhbGxiYWNrLiBUaGUgY2FsbGJhY2sgd2lsbCB0aGVuIGJlIGNhbGxlZCB3aXRoIHR3byBwb2ludGVycyB0bwogaXRlbXMsIGFuZCBpdCBtdXN0IHJldHVybiBhIG5lZ2F0aXZlIGludGVnZXIgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgc21hbGxlciB0aGFuCi10aGUgc2Vjb25kLCBhIHplcm8gaWYgdGhleSBhcmUgZXF1YWwsIGFuZCBhIHBvc2l0aXZlIGludGVnZXIgZWxzZS4KK3RoZSBzZWNvbmQsIGEgemVybyBpZiB0aGV5IGFyZSBlcXVhbCwgYW5kIGEgcG9zaXRpdmUgaW50ZWdlciBvdGhlcndpc2UuCiAKIFNvIG91ciBjYWxsYmFjayBmdW5jdGlvbiByZWNlaXZlcyBwb2ludGVycyB0byBpbnRlZ2VycywgYW5kIG11c3QgcmV0dXJuIGFuCiBpbnRlZ2VyLiBGaXJzdCB3ZSBjcmVhdGUgdGhlIGBgdHlwZWBgIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb246OgpAQCAtOTYxLDM2ICs5NjYsOCBAQAogICAgPj4+IENNUEZVTkMgPSBDRlVOQ1RZUEUoY19pbnQsIFBPSU5URVIoY19pbnQpLCBQT0lOVEVSKGNfaW50KSkKICAgID4+PgogCi1Gb3IgdGhlIGZpcnN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBjYWxsYmFjayBmdW5jdGlvbiwgd2Ugc2ltcGx5IHByaW50IHRoZQotYXJndW1lbnRzIHdlIGdldCwgYW5kIHJldHVybiAwIChpbmNyZW1lbnRhbCBkZXZlbG9wbWVudCA7LSk6OgotCi0gICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgotICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhLCBiKQotICAgLi4uICAgICByZXR1cm4gMAotICAgLi4uCi0gICA+Pj4KLQotQ3JlYXRlIHRoZSBDIGNhbGxhYmxlIGNhbGxiYWNrOjoKLQotICAgPj4+IGNtcF9mdW5jID0gQ01QRlVOQyhweV9jbXBfZnVuYykKLSAgID4+PgotCi1BbmQgd2UncmUgcmVhZHkgdG8gZ286OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIGNtcF9mdW5jKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICBweV9jbXBfZnVuYyA8Y3R5cGVzLkxQX2NfbG9uZyBvYmplY3QgYXQgMHgwMC4uLj4gPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+Ci0gICA+Pj4KLQotV2Uga25vdyBob3cgdG8gYWNjZXNzIHRoZSBjb250ZW50cyBvZiBhIHBvaW50ZXIsIHNvIGxldHMgcmVkZWZpbmUgb3VyIGNhbGxiYWNrOjoKK1RvIGdldCBzdGFydGVkLCBoZXJlIGlzIGEgc2ltcGxlIGNhbGxiYWNrIHRoYXQgc2hvd3MgdGhlIHZhbHVlcyBpdCBnZXRzCitwYXNzZWQ6OgogCiAgICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgogICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhWzBdLCBiWzBdKQpAQCAtOTk5LDIzICs5NzYsNyBAQAogICAgPj4+IGNtcF9mdW5jID0gQ01QRlVOQyhweV9jbXBfZnVuYykKICAgID4+PgogCi1IZXJlIGlzIHdoYXQgd2UgZ2V0IG9uIFdpbmRvd3M6OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIGNtcF9mdW5jKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyA3IDEKLSAgIHB5X2NtcF9mdW5jIDMzIDEKLSAgIHB5X2NtcF9mdW5jIDk5IDEKLSAgIHB5X2NtcF9mdW5jIDUgMQotICAgcHlfY21wX2Z1bmMgNyA1Ci0gICBweV9jbXBfZnVuYyAzMyA1Ci0gICBweV9jbXBfZnVuYyA5OSA1Ci0gICBweV9jbXBfZnVuYyA3IDk5Ci0gICBweV9jbXBfZnVuYyAzMyA5OQotICAgcHlfY21wX2Z1bmMgNyAzMwotICAgPj4+Ci0KLUl0IGlzIGZ1bm55IHRvIHNlZSB0aGF0IG9uIGxpbnV4IHRoZSBzb3J0IGZ1bmN0aW9uIHNlZW1zIHRvIHdvcmsgbXVjaCBtb3JlCi1lZmZpY2llbnRseSwgaXQgaXMgZG9pbmcgbGVzcyBjb21wYXJpc29uczo6CitUaGUgcmVzdWx0OjoKIAogICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArTElOVVgKICAgIHB5X2NtcF9mdW5jIDUgMQpAQCAtMTAyNSwzMiArOTg2LDEzIEBACiAgICBweV9jbXBfZnVuYyAxIDcKICAgID4+PgogCi1BaCwgd2UncmUgbmVhcmx5IGRvbmUhIFRoZSBsYXN0IHN0ZXAgaXMgdG8gYWN0dWFsbHkgY29tcGFyZSB0aGUgdHdvIGl0ZW1zIGFuZAotcmV0dXJuIGEgdXNlZnVsIHJlc3VsdDo6CitOb3cgd2UgY2FuIGFjdHVhbGx5IGNvbXBhcmUgdGhlIHR3byBpdGVtcyBhbmQgcmV0dXJuIGEgdXNlZnVsIHJlc3VsdDo6CiAKICAgID4+PiBkZWYgcHlfY21wX2Z1bmMoYSwgYik6CiAgICAuLi4gICAgIHByaW50KCJweV9jbXBfZnVuYyIsIGFbMF0sIGJbMF0pCiAgICAuLi4gICAgIHJldHVybiBhWzBdIC0gYlswXQogICAgLi4uCiAgICA+Pj4KLQotRmluYWwgcnVuIG9uIFdpbmRvd3M6OgotCi0gICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIENNUEZVTkMocHlfY21wX2Z1bmMpKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCi0gICBweV9jbXBfZnVuYyAzMyA3Ci0gICBweV9jbXBfZnVuYyA5OSAzMwotICAgcHlfY21wX2Z1bmMgNSA5OQotICAgcHlfY21wX2Z1bmMgMSA5OQotICAgcHlfY21wX2Z1bmMgMzMgNwotICAgcHlfY21wX2Z1bmMgMSAzMwotICAgcHlfY21wX2Z1bmMgNSAzMwotICAgcHlfY21wX2Z1bmMgNSA3Ci0gICBweV9jbXBfZnVuYyAxIDcKLSAgIHB5X2NtcF9mdW5jIDUgMQotICAgPj4+Ci0KLWFuZCBvbiBMaW51eDo6Ci0KICAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgQ01QRlVOQyhweV9jbXBfZnVuYykpICMgZG9jdGVzdDogK0xJTlVYCiAgICBweV9jbXBfZnVuYyA1IDEKICAgIHB5X2NtcF9mdW5jIDMzIDk5CkBAIC0xMDU5LDkgKzEwMDEsNiBAQAogICAgcHlfY21wX2Z1bmMgNSA3CiAgICA+Pj4KIAotSXQgaXMgcXVpdGUgaW50ZXJlc3RpbmcgdG8gc2VlIHRoYXQgdGhlIFdpbmRvd3MgOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiBuZWVkcwotbW9yZSBjb21wYXJpc29ucyB0aGFuIHRoZSBsaW51eCB2ZXJzaW9uIQotCiBBcyB3ZSBjYW4gZWFzaWx5IGNoZWNrLCBvdXIgYXJyYXkgaXMgc29ydGVkIG5vdzo6CiAKICAgID4+PiBmb3IgaSBpbiBpYTogcHJpbnQoaSwgZW5kPSIgIikKQEAgLTEwNzEsOSArMTAxMCw5IEBACiAKICoqSW1wb3J0YW50IG5vdGUgZm9yIGNhbGxiYWNrIGZ1bmN0aW9uczoqKgogCi1NYWtlIHN1cmUgeW91IGtlZXAgcmVmZXJlbmNlcyB0byBDRlVOQ1RZUEUgb2JqZWN0cyBhcyBsb25nIGFzIHRoZXkgYXJlIHVzZWQgZnJvbQotQyBjb2RlLiA6bW9kOmBjdHlwZXNgIGRvZXNuJ3QsIGFuZCBpZiB5b3UgZG9uJ3QsIHRoZXkgbWF5IGJlIGdhcmJhZ2UgY29sbGVjdGVkLAotY3Jhc2hpbmcgeW91ciBwcm9ncmFtIHdoZW4gYSBjYWxsYmFjayBpcyBtYWRlLgorTWFrZSBzdXJlIHlvdSBrZWVwIHJlZmVyZW5jZXMgdG8gOmZ1bmM6YENGVU5DVFlQRWAgb2JqZWN0cyBhcyBsb25nIGFzIHRoZXkgYXJlCit1c2VkIGZyb20gQyBjb2RlLiA6bW9kOmBjdHlwZXNgIGRvZXNuJ3QsIGFuZCBpZiB5b3UgZG9uJ3QsIHRoZXkgbWF5IGJlIGdhcmJhZ2UKK2NvbGxlY3RlZCwgY3Jhc2hpbmcgeW91ciBwcm9ncmFtIHdoZW4gYSBjYWxsYmFjayBpcyBtYWRlLgogCiAKIC4uIF9jdHlwZXMtYWNjZXNzaW5nLXZhbHVlcy1leHBvcnRlZC1mcm9tLWRsbHM6CkBAIC0xMzUwLDcgKzEyODksMTAgQEAKICAgIGFzc3VtZWQgdG8gcmV0dXJuIHRoZSB3aW5kb3dzIHNwZWNpZmljIDpjbGFzczpgSFJFU1VMVGAgY29kZS4gIDpjbGFzczpgSFJFU1VMVGAKICAgIHZhbHVlcyBjb250YWluIGluZm9ybWF0aW9uIHNwZWNpZnlpbmcgd2hldGhlciB0aGUgZnVuY3Rpb24gY2FsbCBmYWlsZWQgb3IKICAgIHN1Y2NlZWRlZCwgdG9nZXRoZXIgd2l0aCBhZGRpdGlvbmFsIGVycm9yIGNvZGUuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHNpZ25hbHMgYQotICAgZmFpbHVyZSwgYW4gOmNsYXNzOmBXaW5kb3dzRXJyb3JgIGlzIGF1dG9tYXRpY2FsbHkgcmFpc2VkLgorICAgZmFpbHVyZSwgYW4gOmNsYXNzOmBPU0Vycm9yYCBpcyBhdXRvbWF0aWNhbGx5IHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFdpbmRvd3NFcnJvcmAgdXNlZCB0byBiZSByYWlzZWQuCiAKIAogLi4gY2xhc3M6OiBXaW5ETEwobmFtZSwgbW9kZT1ERUZBVUxUX01PREUsIGhhbmRsZT1Ob25lLCB1c2VfZXJybm89RmFsc2UsIHVzZV9sYXN0X2Vycm9yPUZhbHNlKQpAQCAtMTk2NywxMSArMTkwOSwxNCBAQAogLi4gZnVuY3Rpb246OiBXaW5FcnJvcihjb2RlPU5vbmUsIGRlc2NyPU5vbmUpCiAKICAgIFdpbmRvd3Mgb25seTogdGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgd29yc3QtbmFtZWQgdGhpbmcgaW4gY3R5cGVzLiBJdAotICAgY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBXaW5kb3dzRXJyb3IuICBJZiAqY29kZSogaXMgbm90IHNwZWNpZmllZCwKKyAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgT1NFcnJvci4gIElmICpjb2RlKiBpcyBub3Qgc3BlY2lmaWVkLAogICAgYGBHZXRMYXN0RXJyb3JgYCBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBlcnJvciBjb2RlLiBJZiAqZGVzY3IqIGlzIG5vdAogICAgc3BlY2lmaWVkLCA6ZnVuYzpgRm9ybWF0RXJyb3JgIGlzIGNhbGxlZCB0byBnZXQgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZQogICAgZXJyb3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbiBpbnN0YW5jZSBvZiA6ZXhjOmBXaW5kb3dzRXJyb3JgIHVzZWQgdG8gYmUgY3JlYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHdzdHJpbmdfYXQoYWRkcmVzcywgc2l6ZT0tMSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdCBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKaW5kZXggMTFhYjVkMC4uOWU1Y2I1NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CkBAIC01OTksNiArNTk5LDE3IEBACiAgICAgICBPbmx5IG9uZSAqY2gqIGNhbiBiZSBwdXNoZWQgYmVmb3JlIDptZXRoOmBnZXRjaGAgaXMgY2FsbGVkLgogCiAKKy4uIGZ1bmN0aW9uOjogdW5nZXRfd2NoKGNoKQorCisgICBQdXNoICpjaCogc28gdGhlIG5leHQgOm1ldGg6YGdldF93Y2hgIHdpbGwgcmV0dXJuIGl0LgorCisgICAuLiBub3RlOjoKKworICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0X3djaGAgaXMgY2FsbGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IHVuZ2V0bW91c2UoaWQsIHgsIHksIHosIGJzdGF0ZSkKIAogICAgUHVzaCBhIDpjb25zdDpgS0VZX01PVVNFYCBldmVudCBvbnRvIHRoZSBpbnB1dCBxdWV1ZSwgYXNzb2NpYXRpbmcgdGhlIGdpdmVuCkBAIC02NDMsNyArNjU0LDcgQEAKIC0tLS0tLS0tLS0tLS0tCiAKIFdpbmRvdyBvYmplY3RzLCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgaW5pdHNjcmAgYW5kIDpmdW5jOmBuZXd3aW5gIGFib3ZlLCBoYXZlCi10aGUgZm9sbG93aW5nIG1ldGhvZHM6Cit0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKIAogLi4gbWV0aG9kOjogd2luZG93LmFkZGNoKGNoWywgYXR0cl0pCkBAIC04MzEsNiArODQyLDE2IEBACiAgICBldmVudC4KIAogCisuLiBhdHRyaWJ1dGU6OiB3aW5kb3cuZW5jb2RpbmcKKworICAgRW5jb2RpbmcgdXNlZCB0byBlbmNvZGUgbWV0aG9kIGFyZ3VtZW50cyAoVW5pY29kZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXJzKS4KKyAgIFRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCB3aW5kb3cgd2hlbiBhIHN1YndpbmRvdworICAgaXMgY3JlYXRlZCwgZm9yIGV4YW1wbGUgd2l0aCA6bWV0aDpgd2luZG93LnN1YndpbmAuIEJ5IGRlZmF1bHQsIHRoZSBsb2NhbGUKKyAgIGVuY29kaW5nIGlzIHVzZWQgKHNlZSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nYCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IHdpbmRvdy5lcmFzZSgpCiAKICAgIENsZWFyIHRoZSB3aW5kb3cuCkBAIC04NTQsMTEgKzg3NSwyMCBAQAogICAgdW50aWwgYSBrZXkgaXMgcHJlc3NlZC4KIAogCisuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0X3djaChbeSwgeF0pCisKKyAgIEdldCBhIHdpZGUgY2hhcmFjdGVyLiBSZXR1cm4gYSBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgb3IgYW4gaW50ZWdlciBmb3IKKyAgIGZ1bmN0aW9uIGtleXMsIGtleXBhZCBrZXlzLCBhbmQgb3RoZXIgc3BlY2lhbCBrZXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0a2V5KFt5LCB4XSkKIAogICAgR2V0IGEgY2hhcmFjdGVyLCByZXR1cm5pbmcgYSBzdHJpbmcgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhcyA6bWV0aDpgZ2V0Y2hgCi0gICBkb2VzLiBGdW5jdGlvbiBrZXlzLCBrZXlwYWQga2V5cyBhbmQgc28gb24gcmV0dXJuIGEgbXVsdGlieXRlIHN0cmluZyBjb250YWluaW5nCi0gICB0aGUga2V5IG5hbWUuICBJbiBuby1kZWxheSBtb2RlLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZXJlIGlzIG5vIGlucHV0LgorICAgZG9lcy4gRnVuY3Rpb24ga2V5cywga2V5cGFkIGtleXMgYW5kIG90aGVyIHNwZWNpYWwga2V5cyByZXR1cm4gYSBtdWx0aWJ5dGUKKyAgIHN0cmluZyBjb250YWluaW5nIHRoZSBrZXkgbmFtZS4gIEluIG5vLWRlbGF5IG1vZGUsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYKKyAgIHRoZXJlIGlzIG5vIGlucHV0LgogCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5nZXRtYXh5eCgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdAppbmRleCA2YjRhNzFhLi5kMDM4MmUwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKQEAgLTIxLDExICsyMSwxMCBAQAogICAgZGF0ZXRpbWUucnN0CiAgICBjYWxlbmRhci5yc3QKICAgIGNvbGxlY3Rpb25zLnJzdAorICAgY29sbGVjdGlvbnMuYWJjLnJzdAogICAgaGVhcHEucnN0CiAgICBiaXNlY3QucnN0CiAgICBhcnJheS5yc3QKLSAgIHNjaGVkLnJzdAotICAgcXVldWUucnN0CiAgICB3ZWFrcmVmLnJzdAogICAgdHlwZXMucnN0CiAgICBjb3B5LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDg4ZmEwMWMuLjdjMGFhYzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTQwNCwxMiArNDA0LDE5IEBACiAuLiBjbGFzc21ldGhvZDo6IGRhdGUuZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKICAgIFJldHVybiB0aGUgbG9jYWwgZGF0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAsIHN1Y2ggYXMgaXMgcmV0dXJuZWQKLSAgIGJ5IDpmdW5jOmB0aW1lLnRpbWVgLiAgVGhpcyBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0Ci0gICBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBsb2NhbHRpbWVgIGZ1bmN0aW9uLgorICAgYnkgOmZ1bmM6YHRpbWUudGltZWAuICBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcyBvdXQKKyAgIG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGxvY2FsdGltZWAgZnVuY3Rpb24sCisgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsdXJlLgogICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBmcm9tIDE5NzAgdGhyb3VnaCAyMDM4LiAgTm90ZQogICAgdGhhdCBvbiBub24tUE9TSVggc3lzdGVtcyB0aGF0IGluY2x1ZGUgbGVhcCBzZWNvbmRzIGluIHRoZWlyIG5vdGlvbiBvZiBhCiAgICB0aW1lc3RhbXAsIGxlYXAgc2Vjb25kcyBhcmUgaWdub3JlZCBieSA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmdW5jdGlvbi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZS5mcm9tb3JkaW5hbChvcmRpbmFsKQogCkBAIC03MTMsMjMgKzcyMCw0NCBAQAogICAgZXF1aXZhbGVudCB0bwogICAgYGB0ei5mcm9tdXRjKGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKS5yZXBsYWNlKHR6aW5mbz10eikpYGAuCiAKLSAgIDptZXRoOmBmcm9tdGltZXN0YW1wYCBtYXkgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0IG9mCisgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dCBvZgogICAgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgbG9jYWx0aW1lYCBvcgotICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbnMuICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluCisgICA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9ucywgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IKKyAgIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KKyAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4KICAgIDE5NzAgdGhyb3VnaCAyMDM4LiBOb3RlIHRoYXQgb24gbm9uLVBPU0lYIHN5c3RlbXMgdGhhdCBpbmNsdWRlIGxlYXAgc2Vjb25kcyBpbgogICAgdGhlaXIgbm90aW9uIG9mIGEgdGltZXN0YW1wLCBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQgYnkgOm1ldGg6YGZyb210aW1lc3RhbXBgLAogICAgYW5kIHRoZW4gaXQncyBwb3NzaWJsZSB0byBoYXZlIHR3byB0aW1lc3RhbXBzIGRpZmZlcmluZyBieSBhIHNlY29uZCB0aGF0IHlpZWxkCiAgICBpZGVudGljYWwgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdHMuIFNlZSBhbHNvIDptZXRoOmB1dGNmcm9tdGltZXN0YW1wYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcAorICAgICAgaXMgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDCisgICAgICA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb25zLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYAorICAgICAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAKKyAgICAgIGZhaWx1cmUuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkKIAogICAgUmV0dXJuIHRoZSBVVEMgOmNsYXNzOmAuZGF0ZXRpbWVgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBPU0lYIHRpbWVzdGFtcCwgd2l0aAotICAgOmF0dHI6YHR6aW5mb2AgYGBOb25lYGAuIFRoaXMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzCi0gICBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbi4KKyAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcworICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24sCisgICBhbmQgOmV4YzpgT1NFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgogICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbiAxOTcwIHRocm91Z2ggMjAzOC4gU2VlIGFsc28KICAgIDptZXRoOmBmcm9tdGltZXN0YW1wYC4KIAorICAgT24gdGhlIFBPU0lYIGNvbXBsaWFudCBwbGF0Zm9ybXMsIGBgdXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApYGAKKyAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uOjoKKworICAgICBkYXRldGltZSgxOTcwLCAxLCAxKSArIHRpbWVkZWx0YShzZWNvbmRzPXRpbWVzdGFtcCkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHRpbWVzdGFtcAorICAgICAgaXMgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDCisgICAgICA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpbnN0ZWFkIG9mCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5mcm9tb3JkaW5hbChvcmRpbmFsKQogCkBAIC04NzMsMTMgKzkwMSwyMCBAQAogICAgKmRhdGV0aW1lMSogaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gKmRhdGV0aW1lMiogd2hlbiAqZGF0ZXRpbWUxKiBwcmVjZWRlcwogICAgKmRhdGV0aW1lMiogaW4gdGltZS4KIAotICAgSWYgb25lIGNvbXBhcmFuZCBpcyBuYWl2ZSBhbmQgdGhlIG90aGVyIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKyAgIElmIG9uZSBjb21wYXJhbmQgaXMgbmFpdmUgYW5kIHRoZSBvdGhlciBpcyBhd2FyZSwgOmV4YzpgVHlwZUVycm9yYAorICAgaXMgcmFpc2VkIGlmIGFuIG9yZGVyIGNvbXBhcmlzb24gaXMgYXR0ZW1wdGVkLiAgRm9yIGVxdWFsaXR5CisgICBjb21wYXJpc29ucywgbmFpdmUgaW5zdGFuY2VzIGFyZSBuZXZlciBlcXVhbCB0byBhd2FyZSBpbnN0YW5jZXMuCisKICAgIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlIHRoZSBzYW1lIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSwgdGhlCiAgICBjb21tb24gOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlIGlzIGlnbm9yZWQgYW5kIHRoZSBiYXNlIGRhdGV0aW1lcyBhcmUKICAgIGNvbXBhcmVkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSBhbmQgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHR6aW5mb2AKICAgIGF0dHJpYnV0ZXMsIHRoZSBjb21wYXJhbmRzIGFyZSBmaXJzdCBhZGp1c3RlZCBieSBzdWJ0cmFjdGluZyB0aGVpciBVVEMKICAgIG9mZnNldHMgKG9idGFpbmVkIGZyb20gYGBzZWxmLnV0Y29mZnNldCgpYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRXF1YWxpdHkgY29tcGFyaXNvbnMgYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUgOmNsYXNzOmBkYXRldGltZWAKKyAgICAgIGluc3RhbmNlcyBkb24ndCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgSW4gb3JkZXIgdG8gc3RvcCBjb21wYXJpc29uIGZyb20gZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0IHNjaGVtZSBvZiBjb21wYXJpbmcKQEAgLTkyMiwxNyArOTU3LDIyIEBACiAgICBkYXRldGltZSB3aXRoIG5vIGNvbnZlcnNpb24gb2YgZGF0ZSBhbmQgdGltZSBkYXRhLgogCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLmFzdGltZXpvbmUodHopCisuLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6PU5vbmUpCiAKLSAgIFJldHVybiBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2l0aCBuZXcgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlICp0eiosCisgICBSZXR1cm4gYSA6Y2xhc3M6YGRhdGV0aW1lYCBvYmplY3Qgd2l0aCBuZXcgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlICp0eiosCiAgICBhZGp1c3RpbmcgdGhlIGRhdGUgYW5kIHRpbWUgZGF0YSBzbyB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIFVUQyB0aW1lIGFzCiAgICAqc2VsZiosIGJ1dCBpbiAqdHoqJ3MgbG9jYWwgdGltZS4KIAotICAgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCisgICBJZiBwcm92aWRlZCwgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCiAgICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICAqc2VsZiogbXVzdAogICAgYmUgYXdhcmUgKGBgc2VsZi50emluZm9gYCBtdXN0IG5vdCBiZSBgYE5vbmVgYCwgYW5kIGBgc2VsZi51dGNvZmZzZXQoKWBgIG11c3QKICAgIG5vdCByZXR1cm4gYGBOb25lYGApLgogCisgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgKG9yIHdpdGggYGB0ej1Ob25lYGApIHRoZSBzeXN0ZW0gbG9jYWwKKyAgIHRpbWV6b25lIGlzIGFzc3VtZWQuICBUaGUgYGB0emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAorICAgZGF0ZXRpbWUgaW5zdGFuY2Ugd2lsbCBiZSBzZXQgdG8gYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB0aW1lem9uZWAKKyAgIHdpdGggdGhlIHpvbmUgbmFtZSBhbmQgb2Zmc2V0IG9idGFpbmVkIGZyb20gdGhlIE9TLgorCiAgICBJZiBgYHNlbGYudHppbmZvYGAgaXMgKnR6KiwgYGBzZWxmLmFzdGltZXpvbmUodHopYGAgaXMgZXF1YWwgdG8gKnNlbGYqOiAgbm8KICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBvciB0aW1lIGRhdGEgaXMgcGVyZm9ybWVkLiBFbHNlIHRoZSByZXN1bHQgaXMgbG9jYWwKICAgIHRpbWUgaW4gdGltZSB6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgpAQCAtOTU5LDYgKzk5OSw5IEBACiAgICAgICAgICAgIyBDb252ZXJ0IGZyb20gVVRDIHRvIHR6J3MgbG9jYWwgdGltZS4KICAgICAgICAgICByZXR1cm4gdHouZnJvbXV0Yyh1dGMpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdHoqIG5vdyBjYW4gYmUgb21pdHRlZC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS51dGNvZmZzZXQoKQogCkBAIC0xMDE1LDYgKzEwNTgsMzkgQEAKICAgIFJldHVybiB0aGUgcHJvbGVwdGljIEdyZWdvcmlhbiBvcmRpbmFsIG9mIHRoZSBkYXRlLiAgVGhlIHNhbWUgYXMKICAgIGBgc2VsZi5kYXRlKCkudG9vcmRpbmFsKClgYC4KIAorLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZXN0YW1wKCkKKworICAgUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSA6Y2xhc3M6YGRhdGV0aW1lYAorICAgaW5zdGFuY2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgOmNsYXNzOmBmbG9hdGAgc2ltaWxhciB0byB0aGF0CisgICByZXR1cm5lZCBieSA6ZnVuYzpgdGltZS50aW1lYC4KKworICAgTmFpdmUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2VzIGFyZSBhc3N1bWVkIHRvIHJlcHJlc2VudCBsb2NhbAorICAgdGltZSBhbmQgdGhpcyBtZXRob2QgcmVsaWVzIG9uIHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YG1rdGltZWAKKyAgIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIGNvbnZlcnNpb24uICBTaW5jZSA6Y2xhc3M6YGRhdGV0aW1lYAorICAgc3VwcG9ydHMgd2lkZXIgcmFuZ2Ugb2YgdmFsdWVzIHRoYW4gOmM6ZnVuYzpgbWt0aW1lYCBvbiBtYW55CisgICBwbGF0Zm9ybXMsIHRoaXMgbWV0aG9kIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBmb3IgdGltZXMgZmFyCisgICBpbiB0aGUgcGFzdCBvciBmYXIgaW4gdGhlIGZ1dHVyZS4KKworICAgRm9yIGF3YXJlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcywgdGhlIHJldHVybiB2YWx1ZSBpcyBjb21wdXRlZAorICAgYXM6OgorCisgICAgICAoZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKSkudG90YWxfc2Vjb25kcygpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBub3RlOjoKKworICAgICAgVGhlcmUgaXMgbm8gbWV0aG9kIHRvIG9idGFpbiB0aGUgUE9TSVggdGltZXN0YW1wIGRpcmVjdGx5IGZyb20gYQorICAgICAgbmFpdmUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2UgcmVwcmVzZW50aW5nIFVUQyB0aW1lLiAgSWYgeW91cgorICAgICAgYXBwbGljYXRpb24gdXNlcyB0aGlzIGNvbnZlbnRpb24gYW5kIHlvdXIgc3lzdGVtIHRpbWV6b25lIGlzIG5vdAorICAgICAgc2V0IHRvIFVUQywgeW91IGNhbiBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBieSBzdXBwbHlpbmcKKyAgICAgIGBgdHppbmZvPXRpbWV6b25lLnV0Y2BgOjoKKworICAgICAgICAgdGltZXN0YW1wID0gZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS50aW1lc3RhbXAoKQorCisgICAgICBvciBieSBjYWxjdWxhdGluZyB0aGUgdGltZXN0YW1wIGRpcmVjdGx5OjoKKworICAgICAgICAgdGltZXN0YW1wID0gKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkpIC8gdGltZWRlbHRhKHNlY29uZHM9MSkKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUud2Vla2RheSgpCiAKQEAgLTEyNTQsNyArMTMzMCwxMCBAQAogCiAqIGNvbXBhcmlzb24gb2YgOmNsYXNzOmAudGltZWAgdG8gOmNsYXNzOmAudGltZWAsIHdoZXJlICphKiBpcyBjb25zaWRlcmVkIGxlc3MKICAgdGhhbiAqYiogd2hlbiAqYSogcHJlY2VkZXMgKmIqIGluIHRpbWUuICBJZiBvbmUgY29tcGFyYW5kIGlzIG5haXZlIGFuZCB0aGUgb3RoZXIKLSAgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSwgYW5kIGhhdmUKKyAgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIGlmIGFuIG9yZGVyIGNvbXBhcmlzb24gaXMgYXR0ZW1wdGVkLiBGb3IgZXF1YWxpdHkKKyAgY29tcGFyaXNvbnMsIG5haXZlIGluc3RhbmNlcyBhcmUgbmV2ZXIgZXF1YWwgdG8gYXdhcmUgaW5zdGFuY2VzLgorCisgIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlCiAgIHRoZSBzYW1lIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSwgdGhlIGNvbW1vbiA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUgaXMKICAgaWdub3JlZCBhbmQgdGhlIGJhc2UgdGltZXMgYXJlIGNvbXBhcmVkLiAgSWYgYm90aCBjb21wYXJhbmRzIGFyZSBhd2FyZSBhbmQKICAgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlcywgdGhlIGNvbXBhcmFuZHMgYXJlIGZpcnN0IGFkanVzdGVkIGJ5CkBAIC0xMjY0LDYgKzEzNDMsMTAgQEAKICAgZGlmZmVyZW50IHR5cGUsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIHVubGVzcyB0aGUgY29tcGFyaXNvbiBpcyBgYD09YGAgb3IKICAgYGAhPWBgLiAgVGhlIGxhdHRlciBjYXNlcyByZXR1cm4gOmNvbnN0OmBGYWxzZWAgb3IgOmNvbnN0OmBUcnVlYCwgcmVzcGVjdGl2ZWx5LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgdGltZWAgaW5zdGFuY2VzCisgICAgIGRvbid0IHJhaXNlIDpleGM6YFR5cGVFcnJvcmAuCisKICogaGFzaCwgdXNlIGFzIGRpY3Qga2V5CiAKICogZWZmaWNpZW50IHBpY2tsaW5nCkBAIC0xNTg3LDExICsxNjcwLDEyIEBACiA6Y2xhc3M6YHRpbWV6b25lYCBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BIDpjbGFzczpgdGltZXpvbmVgIG9iamVjdCByZXByZXNlbnRzIGEgdGltZXpvbmUgdGhhdCBpcyBkZWZpbmVkIGJ5IGEKLWZpeGVkIG9mZnNldCBmcm9tIFVUQy4gIE5vdGUgdGhhdCBvYmplY3RzIG9mIHRoaXMgY2xhc3MgY2Fubm90IGJlIHVzZWQKLXRvIHJlcHJlc2VudCB0aW1lem9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgbG9jYXRpb25zIHdoZXJlIGRpZmZlcmVudAotb2Zmc2V0cyBhcmUgdXNlZCBpbiBkaWZmZXJlbnQgZGF5cyBvZiB0aGUgeWVhciBvciB3aGVyZSBoaXN0b3JpY2FsCi1jaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHRvIGNpdmlsIHRpbWUuCitUaGUgOmNsYXNzOmB0aW1lem9uZWAgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YHR6aW5mb2AsIGVhY2gKK2luc3RhbmNlIG9mIHdoaWNoIHJlcHJlc2VudHMgYSB0aW1lem9uZSBkZWZpbmVkIGJ5IGEgZml4ZWQgb2Zmc2V0IGZyb20KK1VUQy4gIE5vdGUgdGhhdCBvYmplY3RzIG9mIHRoaXMgY2xhc3MgY2Fubm90IGJlIHVzZWQgdG8gcmVwcmVzZW50Cit0aW1lem9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgbG9jYXRpb25zIHdoZXJlIGRpZmZlcmVudCBvZmZzZXRzIGFyZSB1c2VkCitpbiBkaWZmZXJlbnQgZGF5cyBvZiB0aGUgeWVhciBvciB3aGVyZSBoaXN0b3JpY2FsIGNoYW5nZXMgaGF2ZSBiZWVuCittYWRlIHRvIGNpdmlsIHRpbWUuCiAKIAogLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXRbLCBuYW1lXSkKQEAgLTE3NjAsOCArMTg0NCw3IEBACiB8ICAgICAgICAgICB8IGRlY2ltYWwgbnVtYmVyIFswMCw5OV0uICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogfCBgYCVZYGAgICAgfCBZZWFyIHdpdGggY2VudHVyeSBhcyBhIGRlY2ltYWwgfCBcKDUpICB8Ci18ICAgICAgICAgICB8IG51bWJlciBbMDAwMSw5OTk5XSAoc3RycHRpbWUpLCB8ICAgICAgIHwKLXwgICAgICAgICAgIHwgWzEwMDAsOTk5OV0gKHN0cmZ0aW1lKS4gICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBudW1iZXIgWzAwMDEsOTk5OV0uICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgYGAlemBgICAgIHwgVVRDIG9mZnNldCBpbiB0aGUgZm9ybSArSEhNTSAgIHwgXCg2KSAgfAogfCAgICAgICAgICAgfCBvciAtSEhNTSAoZW1wdHkgc3RyaW5nIGlmIHRoZSAgfCAgICAgICB8CkBAIC0xNzk1LDEwICsxODc4LDcgQEAKICAgIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCiAKICg1KQotICAgRm9yIHRlY2huaWNhbCByZWFzb25zLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCBkb2VzIG5vdCBzdXBwb3J0Ci0gICBkYXRlcyBiZWZvcmUgeWVhciAxMDAwOiBgYHQuc3RyZnRpbWUoZm9ybWF0KWBgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBgYHQueWVhciA8IDEwMDBgYCBldmVuIGlmIGBgZm9ybWF0YGAgZG9lcwotICAgbm90IGNvbnRhaW4gYGAlWWBgIGRpcmVjdGl2ZS4gIFRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCBjYW4KKyAgIFRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCBjYW4KICAgIHBhcnNlIHllYXJzIGluIHRoZSBmdWxsIFsxLCA5OTk5XSByYW5nZSwgYnV0IHllYXJzIDwgMTAwMCBtdXN0IGJlCiAgICB6ZXJvLWZpbGxlZCB0byA0LWRpZ2l0IHdpZHRoLgogCkBAIC0xODA2LDYgKzE4ODYsMTAgQEAKICAgICAgIEluIHByZXZpb3VzIHZlcnNpb25zLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCB3YXMgcmVzdHJpY3RlZCB0bwogICAgICAgeWVhcnMgPj0gMTkwMC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEluIHZlcnNpb24gMy4yLCA6bWV0aDpgc3RyZnRpbWVgIG1ldGhvZCB3YXMgcmVzdHJpY3RlZCB0bworICAgICAgeWVhcnMgPj0gMTAwMC4KKwogKDYpCiAgICBGb3IgZXhhbXBsZSwgaWYgOm1ldGg6YHV0Y29mZnNldGAgcmV0dXJucyBgYHRpbWVkZWx0YShob3Vycz0tMywgbWludXRlcz0tMzApYGAsCiAgICBgYCV6YGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIGBgJy0wMzMwJ2BgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVidWcucnN0IGIvRG9jL2xpYnJhcnkvZGVidWcucnN0CmluZGV4IGIyZWU0ZmEuLmM2OWZiMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlYnVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWJ1Zy5yc3QKQEAgLTEwLDcgKzEwLDggQEAKIC4uIHRvY3RyZWU6OgogCiAgICBiZGIucnN0CisgICBmYXVsdGhhbmRsZXIucnN0CiAgICBwZGIucnN0CiAgICBwcm9maWxlLnJzdAogICAgdGltZWl0LnJzdAotICAgdHJhY2UucnN0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorICAgdHJhY2UucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IGVmOGI0M2YuLjRhMmIyZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC05LDYgKzksNyBAQAogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogLi4gbW9kdWxlYXV0aG9yOjogQWFoeiA8YWFoeiBhdCBwb2JveC5jb20+CiAuLiBtb2R1bGVhdXRob3I6OiBUaW0gUGV0ZXJzIDx0aW0ub25lIGF0IGNvbWNhc3QubmV0PgorLi4gbW9kdWxlYXV0aG9yOjogU3RlZmFuIEtyYWggPHNrcmFoIGF0IGJ5dGVyZWVmLm9yZz4KIC4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEQuIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CiAKIC4uIGltcG9ydCBtb2R1bGVzIGZvciB0ZXN0aW5nIGlubGluZSBkb2N0ZXN0cyB3aXRoIHRoZSBTcGhpbnggZG9jdGVzdCBidWlsZGVyCkBAIC0yMCw4ICsyMSw5IEBACiAgICAjIG1ha2Ugc3VyZSBlYWNoIGdyb3VwIGdldHMgYSBmcmVzaCBjb250ZXh0CiAgICBzZXRjb250ZXh0KENvbnRleHQoKSkKIAotVGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBkZWNpbWFsIGZsb2F0aW5nIHBvaW50Ci1hcml0aG1ldGljLiAgSXQgb2ZmZXJzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVyIHRoZSA6Y2xhc3M6YGZsb2F0YCBkYXRhdHlwZToKK1RoZSA6bW9kOmBkZWNpbWFsYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZmFzdCBjb3JyZWN0bHktcm91bmRlZAorZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBJdCBvZmZlcnMgc2V2ZXJhbCBhZHZhbnRhZ2VzIG92ZXIgdGhlCis6Y2xhc3M6YGZsb2F0YCBkYXRhdHlwZToKIAogKiBEZWNpbWFsICJpcyBiYXNlZCBvbiBhIGZsb2F0aW5nLXBvaW50IG1vZGVsIHdoaWNoIHdhcyBkZXNpZ25lZCB3aXRoIHBlb3BsZQogICBpbiBtaW5kLCBhbmQgbmVjZXNzYXJpbHkgaGFzIGEgcGFyYW1vdW50IGd1aWRpbmcgcHJpbmNpcGxlIC0tIGNvbXB1dGVycyBtdXN0CkBAIC05Miw3ICs5NCw3IEBACiBjb25zaWRlcmVkIGFzIGluZm9ybWF0aW9uYWwsIG9yIHRyZWF0ZWQgYXMgZXhjZXB0aW9ucy4gVGhlIHNpZ25hbHMgaW4gdGhlCiBkZWNpbWFsIG1vZHVsZSBhcmU6IDpjb25zdDpgQ2xhbXBlZGAsIDpjb25zdDpgSW52YWxpZE9wZXJhdGlvbmAsCiA6Y29uc3Q6YERpdmlzaW9uQnlaZXJvYCwgOmNvbnN0OmBJbmV4YWN0YCwgOmNvbnN0OmBSb3VuZGVkYCwgOmNvbnN0OmBTdWJub3JtYWxgLAotOmNvbnN0OmBPdmVyZmxvd2AsIGFuZCA6Y29uc3Q6YFVuZGVyZmxvd2AuCis6Y29uc3Q6YE92ZXJmbG93YCwgOmNvbnN0OmBVbmRlcmZsb3dgIGFuZCA6Y29uc3Q6YEZsb2F0T3BlcmF0aW9uYC4KIAogRm9yIGVhY2ggc2lnbmFsIHRoZXJlIGlzIGEgZmxhZyBhbmQgYSB0cmFwIGVuYWJsZXIuICBXaGVuIGEgc2lnbmFsIGlzCiBlbmNvdW50ZXJlZCwgaXRzIGZsYWcgaXMgc2V0IHRvIG9uZSwgdGhlbiwgaWYgdGhlIHRyYXAgZW5hYmxlciBpcwpAQCAtMTIyLDcgKzEyNCw3IEBACiAKICAgID4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0ICoKICAgID4+PiBnZXRjb250ZXh0KCkKLSAgIENvbnRleHQocHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTk5OTksIEVtYXg9OTk5OTk5OTk5LAorICAgQ29udGV4dChwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OSwgRW1heD05OTk5OTksCiAgICAgICAgICAgIGNhcGl0YWxzPTEsIGNsYW1wPTAsIGZsYWdzPVtdLCB0cmFwcz1bT3ZlcmZsb3csIERpdmlzaW9uQnlaZXJvLAogICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uXSkKIApAQCAtMTMyLDcgKzEzNCw3IEBACiBDb25zdHJ1Y3Rpb24gZnJvbSBhbiBpbnRlZ2VyIG9yIGEgZmxvYXQgcGVyZm9ybXMgYW4gZXhhY3QgY29udmVyc2lvbiBvZiB0aGUKIHZhbHVlIG9mIHRoYXQgaW50ZWdlciBvciBmbG9hdC4gIERlY2ltYWwgbnVtYmVycyBpbmNsdWRlIHNwZWNpYWwgdmFsdWVzIHN1Y2ggYXMKIDpjb25zdDpgTmFOYCB3aGljaCBzdGFuZHMgZm9yICJOb3QgYSBudW1iZXIiLCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUKLTpjb25zdDpgSW5maW5pdHlgLCBhbmQgOmNvbnN0OmAtMGAuCis6Y29uc3Q6YEluZmluaXR5YCwgYW5kIDpjb25zdDpgLTBgOjoKIAogICAgPj4+IGdldGNvbnRleHQoKS5wcmVjID0gMjgKICAgID4+PiBEZWNpbWFsKDEwKQpAQCAtMTUyLDYgKzE1NCwyNSBAQAogICAgPj4+IERlY2ltYWwoJy1JbmZpbml0eScpCiAgICBEZWNpbWFsKCctSW5maW5pdHknKQogCitJZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gIHNpZ25hbCBpcyB0cmFwcGVkLCBhY2NpZGVudGFsIG1peGluZyBvZgorZGVjaW1hbHMgYW5kIGZsb2F0cyBpbiBjb25zdHJ1Y3RvcnMgb3Igb3JkZXJpbmcgY29tcGFyaXNvbnMgcmFpc2VzCithbiBleGNlcHRpb246OgorCisgICA+Pj4gYyA9IGdldGNvbnRleHQoKQorICAgPj4+IGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgPj4+IERlY2ltYWwoMy4xNCkKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uOiBbPGNsYXNzICdkZWNpbWFsLkZsb2F0T3BlcmF0aW9uJz5dCisgICA+Pj4gRGVjaW1hbCgnMy41JykgPCAzLjcKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGRlY2ltYWwuRmxvYXRPcGVyYXRpb246IFs8Y2xhc3MgJ2RlY2ltYWwuRmxvYXRPcGVyYXRpb24nPl0KKyAgID4+PiBEZWNpbWFsKCczLjUnKSA9PSAzLjUKKyAgIFRydWUKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIFRoZSBzaWduaWZpY2FuY2Ugb2YgYSBuZXcgRGVjaW1hbCBpcyBkZXRlcm1pbmVkIHNvbGVseSBieSB0aGUgbnVtYmVyIG9mIGRpZ2l0cwogaW5wdXQuICBDb250ZXh0IHByZWNpc2lvbiBhbmQgcm91bmRpbmcgb25seSBjb21lIGludG8gcGxheSBkdXJpbmcgYXJpdGhtZXRpYwogb3BlcmF0aW9ucy4KQEAgLTE2OSw2ICsxOTAsMTYgQEAKICAgID4+PiBEZWNpbWFsKCczLjE0MTU5MjY1MzUnKSArIERlY2ltYWwoJzIuNzE4MjgxODI4NScpCiAgICBEZWNpbWFsKCc1Ljg1OTg4JykKIAorSWYgdGhlIGludGVybmFsIGxpbWl0cyBvZiB0aGUgQyB2ZXJzaW9uIGFyZSBleGNlZWRlZCwgY29uc3RydWN0aW5nCithIGRlY2ltYWwgcmFpc2VzIDpjbGFzczpgSW52YWxpZE9wZXJhdGlvbmA6OgorCisgICA+Pj4gRGVjaW1hbCgiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbjogWzxjbGFzcyAnZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uJz5dCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisKIERlY2ltYWxzIGludGVyYWN0IHdlbGwgd2l0aCBtdWNoIG9mIHRoZSByZXN0IG9mIFB5dGhvbi4gIEhlcmUgaXMgYSBzbWFsbCBkZWNpbWFsCiBmbG9hdGluZyBwb2ludCBmbHlpbmcgY2lyY3VzOgogCkBAIC0yNDQsNyArMjc1LDcgQEAKICAgIERlY2ltYWwoJzAuMTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3MTQyODU3JykKIAogICAgPj4+IEV4dGVuZGVkQ29udGV4dAotICAgQ29udGV4dChwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5OTk5LCBFbWF4PTk5OTk5OTk5OSwKKyAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OSwgRW1heD05OTk5OTksCiAgICAgICAgICAgIGNhcGl0YWxzPTEsIGNsYW1wPTAsIGZsYWdzPVtdLCB0cmFwcz1bXSkKICAgID4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKICAgID4+PiBEZWNpbWFsKDEpIC8gRGVjaW1hbCg3KQpAQCAtMjY5LDcgKzMwMCw3IEBACiAgICA+Pj4gRGVjaW1hbCgzNTUpIC8gRGVjaW1hbCgxMTMpCiAgICBEZWNpbWFsKCczLjE0MTU5MjkyJykKICAgID4+PiBnZXRjb250ZXh0KCkKLSAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OTk5OSwgRW1heD05OTk5OTk5OTksCisgICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bSW5leGFjdCwgUm91bmRlZF0sIHRyYXBzPVtdKQogCiBUaGUgKmZsYWdzKiBlbnRyeSBzaG93cyB0aGF0IHRoZSByYXRpb25hbCBhcHByb3hpbWF0aW9uIHRvIDpjb25zdDpgUGlgIHdhcwpAQCAtMzU4LDYgKzM4OSwxMCBAQAogICAgICAgVGhlIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3RvciBpcyBub3cgcGVybWl0dGVkIHRvIGJlIGEgOmNsYXNzOmBmbG9hdGAKICAgICAgIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmNsYXNzOmBmbG9hdGAgYXJndW1lbnRzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gCisgICAgICB0cmFwIGlzIHNldC4gQnkgZGVmYXVsdCB0aGUgdHJhcCBpcyBvZmYuCisKICAgIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQgb2JqZWN0cyBzaGFyZSBtYW55IHByb3BlcnRpZXMgd2l0aCB0aGUgb3RoZXIgYnVpbHQtaW4KICAgIG51bWVyaWMgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGZsb2F0YCBhbmQgOmNsYXNzOmBpbnRgLiAgQWxsIG9mIHRoZSB1c3VhbCBtYXRoCiAgICBvcGVyYXRpb25zIGFuZCBzcGVjaWFsIG1ldGhvZHMgYXBwbHkuICBMaWtld2lzZSwgZGVjaW1hbCBvYmplY3RzIGNhbiBiZQpAQCAtNzAyLDYgKzczNywxMSBAQAogICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhhbiA6YXR0cjpgRW1heGAgb3IgbGVzcyB0aGFuCiAgICAgICA6YXR0cjpgRXRpbnlgLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgICAqd2F0Y2hleHAqIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmcm9tIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uCisgICAgICAgICBhbmQgaXMgbm90IHByZXNlbnQgaW4gdGhlIEMgdmVyc2lvbi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24KKyAgICAgICAgIDMuNCwgd2hlcmUgaXQgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKICAgIC4uIG1ldGhvZDo6IHJhZGl4KCkKIAogICAgICAgUmV0dXJuIGBgRGVjaW1hbCgxMClgYCwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgOmNsYXNzOmBEZWNpbWFsYApAQCAtODgwLDM5ICs5MjAsMzMgQEAKICAgIEluIHNpbmdsZSB0aHJlYWRlZCBlbnZpcm9ubWVudHMsIGl0IGlzIHByZWZlcmFibGUgdG8gbm90IHVzZSB0aGlzIGNvbnRleHQgYXQKICAgIGFsbC4gIEluc3RlYWQsIHNpbXBseSBjcmVhdGUgY29udGV4dHMgZXhwbGljaXRseSBhcyBkZXNjcmliZWQgYmVsb3cuCiAKLSAgIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgcHJlY2lzaW9uPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIGFuZCBlbmFibGVkIHRyYXBzCi0gICBmb3IgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIGFuZCBEaXZpc2lvbkJ5WmVyby4KKyAgIFRoZSBkZWZhdWx0IHZhbHVlcyBhcmUgOmF0dHI6YHByZWNgXCA9XCA6Y29uc3Q6YDI4YCwKKyAgIDphdHRyOmByb3VuZGluZ2BcID1cIDpjb25zdDpgUk9VTkRfSEFMRl9FVkVOYCwKKyAgIGFuZCBlbmFibGVkIHRyYXBzIGZvciA6Y2xhc3M6YE92ZXJmbG93YCwgOmNsYXNzOmBJbnZhbGlkT3BlcmF0aW9uYCwgYW5kCisgICA6Y2xhc3M6YERpdmlzaW9uQnlaZXJvYC4KIAogSW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIHN1cHBsaWVkIGNvbnRleHRzLCBuZXcgY29udGV4dHMgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUKIDpjbGFzczpgQ29udGV4dGAgY29uc3RydWN0b3IuCiAKIAotLi4gY2xhc3M6OiBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgdHJhcHM9Tm9uZSwgZmxhZ3M9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUpCisuLiBjbGFzczo6IENvbnRleHQocHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSkKIAogICAgQ3JlYXRlcyBhIG5ldyBjb250ZXh0LiAgSWYgYSBmaWVsZCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIDpjb25zdDpgTm9uZWAsIHRoZQogICAgZGVmYXVsdCB2YWx1ZXMgYXJlIGNvcGllZCBmcm9tIHRoZSA6Y29uc3Q6YERlZmF1bHRDb250ZXh0YC4gIElmIHRoZSAqZmxhZ3MqCiAgICBmaWVsZCBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIDpjb25zdDpgTm9uZWAsIGFsbCBmbGFncyBhcmUgY2xlYXJlZC4KIAotICAgVGhlICpwcmVjKiBmaWVsZCBpcyBhIHBvc2l0aXZlIGludGVnZXIgdGhhdCBzZXRzIHRoZSBwcmVjaXNpb24gZm9yIGFyaXRobWV0aWMKLSAgIG9wZXJhdGlvbnMgaW4gdGhlIGNvbnRleHQuCisgICAqcHJlYyogaXMgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzpjb25zdDpgMWAsIDpjb25zdDpgTUFYX1BSRUNgXSB0aGF0IHNldHMKKyAgIHRoZSBwcmVjaXNpb24gZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBpbiB0aGUgY29udGV4dC4KIAotICAgVGhlICpyb3VuZGluZyogb3B0aW9uIGlzIG9uZSBvZjoKLQotICAgKiA6Y29uc3Q6YFJPVU5EX0NFSUxJTkdgICh0b3dhcmRzIDpjb25zdDpgSW5maW5pdHlgKSwKLSAgICogOmNvbnN0OmBST1VORF9ET1dOYCAodG93YXJkcyB6ZXJvKSwKLSAgICogOmNvbnN0OmBST1VORF9GTE9PUmAgKHRvd2FyZHMgOmNvbnN0OmAtSW5maW5pdHlgKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX0RPV05gICh0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0b3dhcmRzIHplcm8pLAotICAgKiA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAgKHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX1VQYCAodG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8pLCBvcgotICAgKiA6Y29uc3Q6YFJPVU5EX1VQYCAoYXdheSBmcm9tIHplcm8pLgotICAgKiA6Y29uc3Q6YFJPVU5EXzA1VVBgIChhd2F5IGZyb20gemVybyBpZiBsYXN0IGRpZ2l0IGFmdGVyIHJvdW5kaW5nIHRvd2FyZHMgemVybwotICAgICB3b3VsZCBoYXZlIGJlZW4gMCBvciA1OyBvdGhlcndpc2UgdG93YXJkcyB6ZXJvKQorICAgVGhlICpyb3VuZGluZyogb3B0aW9uIGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzIGxpc3RlZCBpbiB0aGUgc2VjdGlvbgorICAgYFJvdW5kaW5nIE1vZGVzYF8uCiAKICAgIFRoZSAqdHJhcHMqIGFuZCAqZmxhZ3MqIGZpZWxkcyBsaXN0IGFueSBzaWduYWxzIHRvIGJlIHNldC4gR2VuZXJhbGx5LCBuZXcKICAgIGNvbnRleHRzIHNob3VsZCBvbmx5IHNldCB0cmFwcyBhbmQgbGVhdmUgdGhlIGZsYWdzIGNsZWFyLgogCiAgICBUaGUgKkVtaW4qIGFuZCAqRW1heCogZmllbGRzIGFyZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBvdXRlciBsaW1pdHMgYWxsb3dhYmxlCi0gICBmb3IgZXhwb25lbnRzLgorICAgZm9yIGV4cG9uZW50cy4gKkVtaW4qIG11c3QgYmUgaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YE1JTl9FTUlOYCwgOmNvbnN0OmAwYF0sCisgICAqRW1heCogaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YDBgLCA6Y29uc3Q6YE1BWF9FTUFYYF0uCiAKICAgIFRoZSAqY2FwaXRhbHMqIGZpZWxkIGlzIGVpdGhlciA6Y29uc3Q6YDBgIG9yIDpjb25zdDpgMWAgKHRoZSBkZWZhdWx0KS4gSWYgc2V0IHRvCiAgICA6Y29uc3Q6YDFgLCBleHBvbmVudHMgYXJlIHByaW50ZWQgd2l0aCBhIGNhcGl0YWwgOmNvbnN0OmBFYDsgb3RoZXJ3aXNlLCBhCkBAIC05NTEsNiArOTg1LDEyIEBACiAKICAgICAgIFJlc2V0cyBhbGwgb2YgdGhlIGZsYWdzIHRvIDpjb25zdDpgMGAuCiAKKyAgIC4uIG1ldGhvZDo6IGNsZWFyX3RyYXBzKCkKKworICAgICAgUmVzZXRzIGFsbCBvZiB0aGUgdHJhcHMgdG8gOmNvbnN0OmAwYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IGNvcHkoKQogCiAgICAgICBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQuCkBAIC0xMjUwLDggKzEyOTAsMTMgQEAKICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBgYHgqKnlgYC4gIElmIGBgeGBgIGlzIG5lZ2F0aXZlIHRoZW4gYGB5YGAKICAgICAgIG11c3QgYmUgaW50ZWdyYWwuICBUaGUgcmVzdWx0IHdpbGwgYmUgaW5leGFjdCB1bmxlc3MgYGB5YGAgaXMgaW50ZWdyYWwgYW5kCiAgICAgICB0aGUgcmVzdWx0IGlzIGZpbml0ZSBhbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5IGluICdwcmVjaXNpb24nIGRpZ2l0cy4KLSAgICAgIFRoZSByZXN1bHQgc2hvdWxkIGFsd2F5cyBiZSBjb3JyZWN0bHkgcm91bmRlZCwgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgb2YKLSAgICAgIHRoZSBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQuCisgICAgICBUaGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY29udGV4dCBpcyB1c2VkLiBSZXN1bHRzIGFyZSBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQKKyAgICAgIGluIHRoZSBQeXRob24gdmVyc2lvbi4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoZSBDIG1vZHVsZSBjb21wdXRlcyA6bWV0aDpgcG93ZXJgIGluIHRlcm1zIG9mIHRoZSBjb3JyZWN0bHktcm91bmRlZAorICAgICAgICAgOm1ldGg6YGV4cGAgYW5kIDptZXRoOmBsbmAgZnVuY3Rpb25zLiBUaGUgcmVzdWx0IGlzIHdlbGwtZGVmaW5lZCBidXQKKyAgICAgICAgIG9ubHkgImFsbW9zdCBhbHdheXMgY29ycmVjdGx5LXJvdW5kZWQiLgogCiAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSBgYCh4Kip5KSAlIG1vZHVsb2BgLiAgRm9yIHRoZSB0aHJlZSBhcmd1bWVudAogICAgICAgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlIGFyZ3VtZW50cyBob2xkOgpAQCAtMTMzOSw2ICsxMzg0LDY5IEBACiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCisuLiBfZGVjaW1hbC1yb3VuZGluZy1tb2RlczoKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworVGhlIGNvbnN0YW50cyBpbiB0aGlzIHNlY3Rpb24gYXJlIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSBDIG1vZHVsZS4gVGhleQorYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAzMi1iaXQgICAgICAgIHwgICAgICAgICAgICA2NC1iaXQgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgLi4gZGF0YTo6IE1BWF9QUkVDICB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAuLiBkYXRhOjogTUFYX0VNQVggIHwgOmNvbnN0OmA0MjUwMDAwMDBgICB8IDpjb25zdDpgOTk5OTk5OTk5OTk5OTk5OTk5YCAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IC4uIGRhdGE6OiBNSU5fRU1JTiAgfCA6Y29uc3Q6YC00MjUwMDAwMDBgIHwgOmNvbnN0OmAtOTk5OTk5OTk5OTk5OTk5OTk5YCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgLi4gZGF0YTo6IE1JTl9FVElOWSB8IDpjb25zdDpgLTg0OTk5OTk5OWAgfCA6Y29uc3Q6YC0xOTk5OTk5OTk5OTk5OTk5OTk3YCB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKKy4uIGRhdGE6OiBIQVZFX1RIUkVBRFMKKworICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgVHJ1ZS4gSWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkcywgdGhlCisgICBDIHZlcnNpb24gYXV0b21hdGljYWxseSBkaXNhYmxlcyB0aGUgZXhwZW5zaXZlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgICBtYWNoaW5lcnkuIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIGlzIEZhbHNlLgorCitSb3VuZGluZyBtb2RlcworLS0tLS0tLS0tLS0tLS0KKworLi4gZGF0YTo6IFJPVU5EX0NFSUxJTkcKKworICAgUm91bmQgdG93YXJkcyA6Y29uc3Q6YEluZmluaXR5YC4KKworLi4gZGF0YTo6IFJPVU5EX0RPV04KKworICAgUm91bmQgdG93YXJkcyB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfRkxPT1IKKworICAgUm91bmQgdG93YXJkcyA6Y29uc3Q6YC1JbmZpbml0eWAuCisKKy4uIGRhdGE6OiBST1VORF9IQUxGX0RPV04KKworICAgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG93YXJkcyB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9FVkVOCisKKyAgIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9VUAorCisgICBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KKworLi4gZGF0YTo6IFJPVU5EX1VQCisKKyAgIFJvdW5kIGF3YXkgZnJvbSB6ZXJvLgorCisuLiBkYXRhOjogUk9VTkRfMDVVUAorCisgICBSb3VuZCBhd2F5IGZyb20gemVybyBpZiBsYXN0IGRpZ2l0IGFmdGVyIHJvdW5kaW5nIHRvd2FyZHMgemVybyB3b3VsZCBoYXZlCisgICBiZWVuIDAgb3IgNTsgb3RoZXJ3aXNlIHJvdW5kIHRvd2FyZHMgemVyby4KKwogCiAuLiBfZGVjaW1hbC1zaWduYWxzOgogCkBAIC0xNDAzLDcgKzE1MTEsNiBAQAogICAgICAgSW5maW5pdHkgLyBJbmZpbml0eQogICAgICAgeCAlIDAKICAgICAgIEluZmluaXR5ICUgeAotICAgICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQogICAgICAgc3FydCgteCkgYW5kIHggPiAwCiAgICAgICAwICoqIDAKICAgICAgIHggKiogKG5vbi1pbnRlZ2VyKQpAQCAtMTQ0Niw2ICsxNTUzLDIzIEBACiAgICBPY2N1cnMgd2hlbiBhIHN1Ym5vcm1hbCByZXN1bHQgaXMgcHVzaGVkIHRvIHplcm8gYnkgcm91bmRpbmcuIDpjbGFzczpgSW5leGFjdGAKICAgIGFuZCA6Y2xhc3M6YFN1Ym5vcm1hbGAgYXJlIGFsc28gc2lnbmFsZWQuCiAKKworLi4gY2xhc3M6OiBGbG9hdE9wZXJhdGlvbgorCisgICAgRW5hYmxlIHN0cmljdGVyIHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMuCisKKyAgICBJZiB0aGUgc2lnbmFsIGlzIG5vdCB0cmFwcGVkIChkZWZhdWx0KSwgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgaXMKKyAgICBwZXJtaXR0ZWQgaW4gdGhlIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgY29uc3RydWN0b3IsCisgICAgOm1ldGg6YH5kZWNpbWFsLkNvbnRleHQuY3JlYXRlX2RlY2ltYWxgIGFuZCBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuCisgICAgQm90aCBjb252ZXJzaW9uIGFuZCBjb21wYXJpc29ucyBhcmUgZXhhY3QuIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQKKyAgICBvcGVyYXRpb24gaXMgc2lsZW50bHkgcmVjb3JkZWQgYnkgc2V0dGluZyA6ZXhjOmBGbG9hdE9wZXJhdGlvbmAgaW4gdGhlCisgICAgY29udGV4dCBmbGFncy4gRXhwbGljaXQgY29udmVyc2lvbnMgd2l0aCA6bWV0aDpgfmRlY2ltYWwuRGVjaW1hbC5mcm9tX2Zsb2F0YAorICAgIG9yIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXRgIGRvIG5vdCBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgOmV4YzpgRmxvYXRPcGVyYXRpb25gLgorCisKIFRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgaGllcmFyY2h5IG9mIHNpZ25hbHM6OgogCiAgICBleGNlcHRpb25zLkFyaXRobWV0aWNFcnJvcihleGNlcHRpb25zLkV4Y2VwdGlvbikKQEAgLTE0NTgsMTAgKzE1ODIsMTIgQEAKICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbgogICAgICAgICAgICBSb3VuZGVkCiAgICAgICAgICAgIFN1Ym5vcm1hbAorICAgICAgICAgICBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBleGNlcHRpb25zLlR5cGVFcnJvcikKIAogLi4gJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlCiAKIAorCiAuLiBfZGVjaW1hbC1ub3RlczoKIAogRmxvYXRpbmcgUG9pbnQgTm90ZXMKQEAgLTE1NzEsNyArMTY5Nyw3IEBACiB0aGUgZm9sbG93aW5nIGNhbGN1bGF0aW9uIHJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byB6ZXJvOgogCiAgICA+Pj4gMSAvIERlY2ltYWwoJ0luZmluaXR5JykKLSAgIERlY2ltYWwoJzBFLTEwMDAwMDAwMjYnKQorICAgRGVjaW1hbCgnMEUtMTAwMDAyNicpCiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCkBAIC0xNTgzLDcgKzE3MDksNyBAQAogCiBUaGUgOmZ1bmM6YGdldGNvbnRleHRgIGZ1bmN0aW9uIGFjY2Vzc2VzIGEgZGlmZmVyZW50IDpjbGFzczpgQ29udGV4dGAgb2JqZWN0IGZvcgogZWFjaCB0aHJlYWQuICBIYXZpbmcgc2VwYXJhdGUgdGhyZWFkIGNvbnRleHRzIG1lYW5zIHRoYXQgdGhyZWFkcyBtYXkgbWFrZQotY2hhbmdlcyAoc3VjaCBhcyBgYGdldGNvbnRleHQucHJlYz0xMGBgKSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGhyZWFkcy4KK2NoYW5nZXMgKHN1Y2ggYXMgYGBnZXRjb250ZXh0KCkucHJlYz0xMGBgKSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggb3RoZXIgdGhyZWFkcy4KIAogTGlrZXdpc2UsIHRoZSA6ZnVuYzpgc2V0Y29udGV4dGAgZnVuY3Rpb24gYXV0b21hdGljYWxseSBhc3NpZ25zIGl0cyB0YXJnZXQgdG8KIHRoZSBjdXJyZW50IHRocmVhZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlcGdyYXBoLW91dHB1dC5wbmcgYi9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MGJiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdCBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdAppbmRleCBjODIyZTA4Li4yMzY4NzY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CkBAIC0xOSw1ICsxOSw4IEBACiAgICBweWRvYy5yc3QKICAgIGRvY3Rlc3QucnN0CiAgICB1bml0dGVzdC5yc3QKKyAgIHVuaXR0ZXN0Lm1vY2sucnN0CisgICB1bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdAogICAgMnRvMy5yc3QKICAgIHRlc3QucnN0CisgICB2ZW52LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAppbmRleCBiZGMzN2IzLi44MzZlMjQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdApAQCAtNzUyLDggKzc1Miw4IEBACiAgICAgICAgIyB3ZSdyZSBwYXNzaW5nIHRoZXNlIGFzIGFyZ3VtZW50cyB0byB0aGUgZGlmZiBmdW5jdGlvbgogICAgICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKICAgICAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICAgICBmcm9tbGluZXMgPSBvcGVuKGZyb21maWxlLCAnVScpLnJlYWRsaW5lcygpCi0gICAgICAgdG9saW5lcyA9IG9wZW4odG9maWxlLCAnVScpLnJlYWRsaW5lcygpCisgICAgICAgd2l0aCBvcGVuKGZyb21saW5lcykgYXMgZnJvbWYsIG9wZW4odG9maWxlKSBhcyB0b2Y6CisgICAgICAgICAgIGZyb21saW5lcywgdG9saW5lcyA9IGxpc3QoZnJvbWYpLCBsaXN0KHRvZikKIAogICAgICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IDc5Y2M1ODMuLjZkMDhhMGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtMTcxLDExICsxNzEsNiBAQAogCiAqKkdlbmVyYWwgaW5zdHJ1Y3Rpb25zKioKIAotLi4gb3Bjb2RlOjogU1RPUF9DT0RFCi0KLSAgIEluZGljYXRlcyBlbmQtb2YtY29kZSB0byB0aGUgY29tcGlsZXIsIG5vdCB1c2VkIGJ5IHRoZSBpbnRlcnByZXRlci4KLQotCiAuLiBvcGNvZGU6OiBOT1AKIAogICAgRG8gbm90aGluZyBjb2RlLiAgVXNlZCBhcyBhIHBsYWNlaG9sZGVyIGJ5IHRoZSBieXRlY29kZSBvcHRpbWl6ZXIuCkBAIC00MzYsNiArNDMxLDEzIEBACiAgICBQb3BzIGBgVE9TYGAgYW5kIHlpZWxkcyBpdCBmcm9tIGEgOnRlcm06YGdlbmVyYXRvcmAuCiAKIAorLi4gb3Bjb2RlOjogWUlFTERfRlJPTQorCisgICBQb3BzIGBgVE9TYGAgYW5kIGRlbGVnYXRlcyB0byBpdCBhcyBhIHN1Yml0ZXJhdG9yIGZyb20gYSA6dGVybTpgZ2VuZXJhdG9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gb3Bjb2RlOjogSU1QT1JUX1NUQVIKIAogICAgTG9hZHMgYWxsIHN5bWJvbHMgbm90IHN0YXJ0aW5nIHdpdGggYGAnXydgYCBkaXJlY3RseSBmcm9tIHRoZSBtb2R1bGUgVE9TIHRvIHRoZQpAQCAtNzUyLDkgKzc1NCwxMCBAQAogCiAuLiBvcGNvZGU6OiBNQUtFX0ZVTkNUSU9OIChhcmdjKQogCi0gICBQdXNoZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0IG9uIHRoZSBzdGFjay4gIFRPUyBpcyB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICBmdW5jdGlvbi4gIFRoZSBmdW5jdGlvbiBvYmplY3QgaXMgZGVmaW5lZCB0byBoYXZlICphcmdjKiBkZWZhdWx0IHBhcmFtZXRlcnMsCi0gICB3aGljaCBhcmUgZm91bmQgYmVsb3cgVE9TLgorICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBUT1MgaXMgdGhlCisgICA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbjsgVE9TMSBpcyB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGgKKyAgIHRoZSBmdW5jdGlvbi4gIFRoZSBmdW5jdGlvbiBvYmplY3QgaXMgZGVmaW5lZCB0byBoYXZlICphcmdjKiBkZWZhdWx0IHBhcmFtZXRlcnMsCisgICB3aGljaCBhcmUgZm91bmQgYmVsb3cgVE9TMS4KIAogCiAuLiBvcGNvZGU6OiBNQUtFX0NMT1NVUkUgKGFyZ2MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0IGIvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdAppbmRleCAyMzhiNzlkLi4xMWEyOTQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpc3R1dGlscy5yc3QKQEAgLTEyLDE4ICsxMiwxNCBAQAogMTAwJS1wdXJlIFB5dGhvbiwgb3IgbWF5IGJlIGV4dGVuc2lvbiBtb2R1bGVzIHdyaXR0ZW4gaW4gQywgb3IgbWF5IGJlCiBjb2xsZWN0aW9ucyBvZiBQeXRob24gcGFja2FnZXMgd2hpY2ggaW5jbHVkZSBtb2R1bGVzIGNvZGVkIGluIGJvdGggUHl0aG9uIGFuZCBDLgogCi1UaGlzIHBhY2thZ2UgaXMgZGlzY3Vzc2VkIGluIHR3byBzZXBhcmF0ZSBjaGFwdGVyczoKIAorVXNlciBkb2N1bWVudGF0aW9uIGFuZCBBUEkgcmVmZXJlbmNlIGFyZSBwcm92aWRlZCBpbiBhbm90aGVyIGRvY3VtZW50OgogCiAuLiBzZWVhbHNvOjoKIAogICAgOnJlZjpgZGlzdHV0aWxzLWluZGV4YAogICAgICAgVGhlIG1hbnVhbCBmb3IgZGV2ZWxvcGVycyBhbmQgcGFja2FnZXJzIG9mIFB5dGhvbiBtb2R1bGVzLiAgVGhpcyBkZXNjcmliZXMKICAgICAgIGhvdyB0byBwcmVwYXJlIDptb2Q6YGRpc3R1dGlsc2BcIC1iYXNlZCBwYWNrYWdlcyBzbyB0aGF0IHRoZXkgbWF5IGJlCi0gICAgICBlYXNpbHkgaW5zdGFsbGVkIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4KLQotICAgOnJlZjpgaW5zdGFsbC1pbmRleGAKLSAgICAgIEFuICJhZG1pbmlzdHJhdG9ycyIgbWFudWFsIHdoaWNoIGluY2x1ZGVzIGluZm9ybWF0aW9uIG9uIGluc3RhbGxpbmcKLSAgICAgIG1vZHVsZXMgaW50byBhbiBleGlzdGluZyBQeXRob24gaW5zdGFsbGF0aW9uLiAgWW91IGRvIG5vdCBuZWVkIHRvIGJlIGEKLSAgICAgIFB5dGhvbiBwcm9ncmFtbWVyIHRvIHJlYWQgdGhpcyBtYW51YWwuCi0KKyAgICAgIGVhc2lseSBpbnN0YWxsZWQgaW50byBhbiBleGlzdGluZyBQeXRob24gaW5zdGFsbGF0aW9uLiAgSWYgYWxzbyBjb250YWlucworICAgICAgaW5zdHJ1Y3Rpb25zIGZvciBlbmQtdXNlcnMgd2FudGluZyB0byBpbnN0YWxsIGEgZGlzdHV0aWxzLWJhc2VkIHBhY2thZ2UsCisgICAgICA6cmVmOmBpbnN0YWxsLWluZGV4YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IGQ4ZjMzMGYuLjlmMGE5ZTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtNzMsMTcgKzczLDM4IEBACiAqIDpjbGFzczpgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0YCAtLSBUaGUgc3RhcnQgYm91bmRhcnkgY2xhaW1lZCBpbiB0aGUKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHdhcyBuZXZlciBmb3VuZC4KIAorKiA6Y2xhc3M6YENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdGAgLS0gQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dAorICBubyBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5IHdhcyBldmVyIGZvdW5kLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAqIDpjbGFzczpgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RgIC0tIFRoZSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbgogICBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4KIAogKiA6Y2xhc3M6YE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0YCAtIEEgIlVuaXggRnJvbSIgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUKICAgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLgogCisqIDpjbGFzczpgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RgIC0gQSBsaW5lIHdhcyBmb3VuZCB3aGlsZSBwYXJzaW5nCisgIGhlYWRlcnMgdGhhdCBoYWQgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBidXQgY29udGFpbmVkIG5vICc6Jy4gIFBhcnNpbmcKKyAgY29udGludWVzIGFzc3VtaW5nIHRoYXQgdGhlIGxpbmUgcmVwcmVzZW50cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYm9keS4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogKiA6Y2xhc3M6YE1hbGZvcm1lZEhlYWRlckRlZmVjdGAgLS0gQSBoZWFkZXIgd2FzIGZvdW5kIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwKICAgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuCiAKKyAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICBUaGlzIGRlZmVjdCBoYXMgbm90IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBQeXRob24gdmVyc2lvbnMuCisKICogOmNsYXNzOmBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEKICAgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4gIE5vdGUgdGhhdCB3aGVuIGEgbWVzc2FnZSBoYXMKICAgdGhpcyBkZWZlY3QsIGl0cyA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBmYWxzZSBldmVuIHRob3VnaCBpdHMKICAgY29udGVudCB0eXBlIGNsYWltcyB0byBiZSA6bWltZXR5cGU6YG11bHRpcGFydGAuCiAKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCB0aGUgcGFkZGluZyB3YXMgbm90IGNvcnJlY3QuICBFbm91Z2ggcGFkZGluZyBpcyBhZGRlZCB0bworICBwZXJmb3JtIHRoZSBkZWNvZGUsIGJ1dCB0aGUgcmVzdWx0aW5nIGRlY29kZWQgYnl0ZXMgbWF5IGJlIGludmFsaWQuCisKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NCBhbHBoZWJldCB3ZXJlIGVuY291bnRlcmVkLgorICBUaGUgY2hhcmFjdGVycyBhcmUgaWdub3JlZCwgYnV0IHRoZSByZXN1bHRpbmcgZGVjb2RlZCBieXRlcyBtYXkgYmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IDg4YzYyYTIuLmMxNzJhY2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtMzIsNyArMzIsNyBAQAogOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCkBAIC01MywxMCArNTMsMTcgQEAKICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgogCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+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+ZGF0ZXRpbWUudHppbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBta3RpbWVfdHoodHVwbGUpCiAKICAgIFR1cm4gYSAxMC10dXBsZSBhcyByZXR1cm5lZCBieSA6ZnVuYzpgcGFyc2VkYXRlX3R6YCBpbnRvIGEgVVRDIHRpbWVzdGFtcC4gIEl0CkBAIC0xMDUsNiArMTI3LDM2IEBACiAgICBgYEZhbHNlYGAuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAKIAorLi4gZnVuY3Rpb246OiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSkKKworICAgTGlrZSBgYGZvcm1hdGRhdGVgYCwgYnV0IHRoZSBpbnB1dCBpcyBhIDptb2Q6YGRhdGV0aW1lYCBpbnN0YW5jZS4gIElmIGl0IGlzCisgICBhIG5haXZlIGRhdGV0aW1lLCBpdCBpcyBhc3N1bWVkIHRvIGJlICJVVEMgd2l0aCBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHNvdXJjZSB0aW1lem9uZSIsIGFuZCB0aGUgY29udmVudGlvbmFsIGBgLTAwMDBgYCBpcyB1c2VkIGZvciB0aGUgdGltZXpvbmUuCisgICBJZiBpdCBpcyBhbiBhd2FyZSBgYGRhdGV0aW1lYGAsIHRoZW4gdGhlIG51bWVyaWMgdGltZXpvbmUgb2Zmc2V0IGlzIHVzZWQuCisgICBJZiBpdCBpcyBhbiBhd2FyZSB0aW1lem9uZSB3aXRoIG9mZnNldCB6ZXJvLCB0aGVuICp1c2VnbXQqIG1heSBiZSBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBzdHJpbmcgYGBHTVRgYCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG51bWVyaWMKKyAgIHRpbWV6b25lIG9mZnNldC4gIFRoaXMgcHJvdmlkZXMgYSB3YXkgdG8gZ2VuZXJhdGUgc3RhbmRhcmRzIGNvbmZvcm1hbnQgSFRUUAorICAgZGF0ZSBoZWFkZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQorCisgICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKKyAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQorICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAorICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcworICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCisgICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90CisgICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKKyAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKIAogICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKQEAgLTExNSw3ICsxNjcsOCBAQAogICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CiAgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIGRvbWFpbiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvZGVfcmZjMjIzMShzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCBjYTNhZDNlLi42YmE1OGQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMzQsNiArMzQsMjcgQEAKIGRlZmluaW5nIGV4Y2VwdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gVHV0b3JpYWwgdW5kZXIKIDpyZWY6YHR1dC11c2VyZXhjZXB0aW9uc2AuCiAKK1doZW4gcmFpc2luZyAob3IgcmUtcmFpc2luZykgYW4gZXhjZXB0aW9uIGluIGFuIDprZXl3b3JkOmBleGNlcHRgIGNsYXVzZQorOmF0dHI6YF9fY29udGV4dF9fYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgbGFzdCBleGNlcHRpb24gY2F1Z2h0OyBpZiB0aGUKK25ldyBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgdGhlIHRyYWNlYmFjayB0aGF0IGlzIGV2ZW50dWFsbHkgZGlzcGxheWVkIHdpbGwKK2luY2x1ZGUgdGhlIG9yaWdpbmF0aW5nIGV4Y2VwdGlvbihzKSBhbmQgdGhlIGZpbmFsIGV4Y2VwdGlvbi4KKworVGhpcyBpbXBsaWNpdCBleGNlcHRpb24gY2hhaW4gY2FuIGJlIG1hZGUgZXhwbGljaXQgYnkgdXNpbmcgOmtleXdvcmQ6YGZyb21gIHdpdGgKKzprZXl3b3JkOmByYWlzZWAuICBUaGUgc2luZ2xlIGFyZ3VtZW50IHRvIDprZXl3b3JkOmBmcm9tYCBtdXN0IGJlIGFuIGV4Y2VwdGlvbgorb3IgYGBOb25lYGAuIEl0IHdpbGwgYmUgc2V0IGFzIDphdHRyOmBfX2NhdXNlX19gIG9uIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorU2V0dGluZyA6YXR0cjpgX19jYXVzZV9fYCBpbXBsaWNpdGx5IHNldHMgdGhlIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgdG8KK2BgVHJ1ZWBgLiBJZiA6YXR0cjpgX19jYXVzZV9fYCBpcyBhbiBleGNlcHRpb24sIGl0IHdpbGwgYmUgZGlzcGxheWVkLiBJZgorOmF0dHI6YF9fY2F1c2VfX2AgaXMgcHJlc2VudCBvciA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGhhcyBhIHRydWUgdmFsdWUsCis6YXR0cjpgX19jb250ZXh0X19gIHdpbGwgbm90IGJlIGRpc3BsYXllZC4KKworSW4gZWl0aGVyIGNhc2UsIHRoZSBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGluZyBjb2RlIHdpbGwgbm90IGRpc3BsYXkgYW55IG9mIHRoZQorcmVtYWluaW5nIGxpbmtzIGluIHRoZSA6YXR0cjpgX19jb250ZXh0X19gIGNoYWluIGlmIDphdHRyOmBfX2NhdXNlX19gIGhhcyBiZWVuCitzZXQuCisKKworQmFzZSBjbGFzc2VzCistLS0tLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIG1vc3RseSBhcyBiYXNlIGNsYXNzZXMgZm9yIG90aGVyIGV4Y2VwdGlvbnMuCiAKIC4uIGV4Y2VwdGlvbjo6IEJhc2VFeGNlcHRpb24KQEAgLTkwLDI3ICsxMTEsOCBAQAogICAgY2FuIGJlIHJhaXNlZCBkaXJlY3RseSBieSA6ZnVuYzpgY29kZWNzLmxvb2t1cGAuCiAKIAotLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgotCi0gICBUaGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyB0aGF0IGNhbiBvY2N1ciBvdXRzaWRlIHRoZSBQeXRob24gc3lzdGVtOgotICAgOmV4YzpgSU9FcnJvcmAsIDpleGM6YE9TRXJyb3JgLiAgV2hlbiBleGNlcHRpb25zIG9mIHRoaXMgdHlwZSBhcmUgY3JlYXRlZCB3aXRoIGEKLSAgIDItdHVwbGUsIHRoZSBmaXJzdCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgaW5zdGFuY2UncyA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZQotICAgKGl0IGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgbnVtYmVyKSwgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhdmFpbGFibGUgb24gdGhlCi0gICA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZSAoaXQgaXMgdXN1YWxseSB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlKS4gIFRoZQotICAgdHVwbGUgaXRzZWxmIGlzIGFsc28gYXZhaWxhYmxlIG9uIHRoZSA6YXR0cjpgYXJnc2AgYXR0cmlidXRlLgotCi0gICBXaGVuIGFuIDpleGM6YEVudmlyb25tZW50RXJyb3JgIGV4Y2VwdGlvbiBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIDMtdHVwbGUsIHRoZQotICAgZmlyc3QgdHdvIGl0ZW1zIGFyZSBhdmFpbGFibGUgYXMgYWJvdmUsIHdoaWxlIHRoZSB0aGlyZCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUKLSAgIDphdHRyOmBmaWxlbmFtZWAgYXR0cmlidXRlLiAgSG93ZXZlciwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUKLSAgIDphdHRyOmBhcmdzYCBhdHRyaWJ1dGUgY29udGFpbnMgb25seSBhIDItdHVwbGUgb2YgdGhlIGZpcnN0IHR3byBjb25zdHJ1Y3RvcgotICAgYXJndW1lbnRzLgotCi0gICBUaGUgOmF0dHI6YGZpbGVuYW1lYCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgd2hlbiB0aGlzIGV4Y2VwdGlvbiBpcyBjcmVhdGVkIHdpdGgKLSAgIG90aGVyIHRoYW4gMyBhcmd1bWVudHMuICBUaGUgOmF0dHI6YGVycm5vYCBhbmQgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGVzIGFyZQotICAgYWxzbyBgYE5vbmVgYCB3aGVuIHRoZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCB3aXRoIG90aGVyIHRoYW4gMiBvciAzIGFyZ3VtZW50cy4KLSAgIEluIHRoaXMgbGFzdCBjYXNlLCA6YXR0cjpgYXJnc2AgY29udGFpbnMgdGhlIHZlcmJhdGltIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcyBhCi0gICB0dXBsZS4KLQorQ29uY3JldGUgZXhjZXB0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHRoZSBleGNlcHRpb25zIHRoYXQgYXJlIHVzdWFsbHkgcmFpc2VkLgogCkBAIC0xNTEsMjEgKzE1MywxOSBAQAogICAgaXQgaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLgogCiAKLS4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYW4gSS9PIG9wZXJhdGlvbiAoc3VjaCBhcyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByaW50YCBvcgotICAgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9ucyBvciBhIG1ldGhvZCBvZiBhIDp0ZXJtOmBmaWxlIG9iamVjdGApIGZhaWxzIGZvciBhbgotICAgSS9PLXJlbGF0ZWQgcmVhc29uLCBlLmcuLCAiZmlsZSBub3QgZm91bmQiIG9yICJkaXNrIGZ1bGwiLgotCi0gICBUaGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIFNlZSB0aGUgZGlzY3Vzc2lvbiBhYm92ZQotICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9uIGluc3RhbmNlIGF0dHJpYnV0ZXMuCi0KLQogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAogICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCiAgICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgogCisgICBUaGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHVzaW5nIGtleXdvcmQtb25seQorICAgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4gV2hlbiBzZXQgdGhleSByZXByZXNlbnQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZQorICAgdGhhdCB3YXMgYXR0ZW1wdGVkIHRvIGJlIGltcG9ydGVkIGFuZCB0aGUgcGF0aCB0byBhbnkgZmlsZSB3aGljaCB0cmlnZ2VyZWQKKyAgIHRoZSBleGNlcHRpb24sIHJlc3BlY3RpdmVseS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzLgorCiAKIC4uIGV4Y2VwdGlvbjo6IEluZGV4RXJyb3IKIApAQCAtMjIxLDE3ICsyMjEsMzAgQEAKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IGVycm5vCiAKLSAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIEl0IGlzIHJhaXNlZCB3aGVuIGEKLSAgIGZ1bmN0aW9uIHJldHVybnMgYSBzeXN0ZW0tcmVsYXRlZCBlcnJvciAobm90IGZvciBpbGxlZ2FsIGFyZ3VtZW50IHR5cGVzIG9yCi0gICBvdGhlciBpbmNpZGVudGFsIGVycm9ycykuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgYSBudW1lcmljIGVycm9yCi0gICBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gLCBhbmQgdGhlIDphdHRyOmBzdHJlcnJvcmAgYXR0cmlidXRlIGlzIHRoZQotICAgY29ycmVzcG9uZGluZyBzdHJpbmcsIGFzIHdvdWxkIGJlIHByaW50ZWQgYnkgdGhlIEMgZnVuY3Rpb24gOmM6ZnVuYzpgcGVycm9yYC4KLSAgIFNlZSB0aGUgbW9kdWxlIDptb2Q6YGVycm5vYCwgd2hpY2ggY29udGFpbnMgbmFtZXMgZm9yIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkCi0gICBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBzeXN0ZW0gZnVuY3Rpb24gcmV0dXJucyBhIHN5c3RlbS1yZWxhdGVkCisgICBlcnJvciwgaW5jbHVkaW5nIEkvTyBmYWlsdXJlcyBzdWNoIGFzICJmaWxlIG5vdCBmb3VuZCIgb3IgImRpc2sgZnVsbCIKKyAgIChub3QgZm9yIGlsbGVnYWwgYXJndW1lbnQgdHlwZXMgb3Igb3RoZXIgaW5jaWRlbnRhbCBlcnJvcnMpLiAgT2Z0ZW4gYQorICAgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgd2lsbCBhY3R1YWxseSBiZSByYWlzZWQgYXMgZGVzY3JpYmVkIGluCisgICBgT1MgZXhjZXB0aW9uc2BfIGJlbG93LiAgVGhlIDphdHRyOmBlcnJub2AgYXR0cmlidXRlIGlzIGEgbnVtZXJpYyBlcnJvcgorICAgY29kZSBmcm9tIHRoZSBDIHZhcmlhYmxlIDpjOmRhdGE6YGVycm5vYC4KIAotICAgRm9yIGV4Y2VwdGlvbnMgdGhhdCBpbnZvbHZlIGEgZmlsZSBzeXN0ZW0gcGF0aCAoc3VjaCBhcyA6ZnVuYzpgY2hkaXJgIG9yCi0gICA6ZnVuYzpgdW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGEgdGhpcmQgYXR0cmlidXRlLAotICAgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorICAgVW5kZXIgV2luZG93cywgdGhlIDphdHRyOmB3aW5lcnJvcmAgYXR0cmlidXRlIGdpdmVzIHlvdSB0aGUgbmF0aXZlCisgICBXaW5kb3dzIGVycm9yIGNvZGUuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgdGhlbiBhbiBhcHByb3hpbWF0ZQorICAgdHJhbnNsYXRpb24sIGluIFBPU0lYIHRlcm1zLCBvZiB0aGF0IG5hdGl2ZSBlcnJvciBjb2RlLgorCisgICBVbmRlciBhbGwgcGxhdGZvcm1zLCB0aGUgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGUgaXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgIGVycm9yIG1lc3NhZ2UgYXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKGFzIGZvcm1hdHRlZCBieSB0aGUgQworICAgZnVuY3Rpb25zIDpjOmZ1bmM6YHBlcnJvcmAgdW5kZXIgUE9TSVgsIGFuZCA6YzpmdW5jOmBGb3JtYXRNZXNzYWdlYAorICAgV2luZG93cykuCisKKyAgIEZvciBleGNlcHRpb25zIHRoYXQgaW52b2x2ZSBhIGZpbGUgc3lzdGVtIHBhdGggKHN1Y2ggYXMgOmZ1bmM6YG9wZW5gIG9yCisgICA6ZnVuYzpgb3MudW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGFuIGFkZGl0aW9uYWwKKyAgIGF0dHJpYnV0ZSwgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBXaW5kb3dzRXJyb3JgLAorICAgICAgOmV4YzpgVk1TRXJyb3JgLCA6ZXhjOmBzb2NrZXQuZXJyb3JgLCA6ZXhjOmBzZWxlY3QuZXJyb3JgIGFuZAorICAgICAgOmV4YzpgbW1hcC5lcnJvcmAgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE92ZXJmbG93RXJyb3IKQEAgLTI2Miw4ICsyNzUsMjAgQEAKIC4uIGV4Y2VwdGlvbjo6IFN0b3BJdGVyYXRpb24KIAogICAgUmFpc2VkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBuZXh0YCBhbmQgYW4gOnRlcm06YGl0ZXJhdG9yYFwncwotICAgOm1ldGg6YF9fbmV4dF9fYCBtZXRob2QgdG8gc2lnbmFsIHRoYXQgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgdmFsdWVzLgorICAgOm1ldGg6YF9fbmV4dF9fYCBtZXRob2QgdG8gc2lnbmFsIHRoYXQgdGhlcmUgYXJlIG5vIGZ1cnRoZXIgaXRlbXMgdG8gYmUKKyAgIHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci4KIAorICAgVGhlIGV4Y2VwdGlvbiBvYmplY3QgaGFzIGEgc2luZ2xlIGF0dHJpYnV0ZSA6YXR0cjpgdmFsdWVgLCB3aGljaCBpcworICAgZ2l2ZW4gYXMgYW4gYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGV4Y2VwdGlvbiwgYW5kIGRlZmF1bHRzCisgICB0byA6Y29uc3Q6YE5vbmVgLgorCisgICBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHJldHVybnMsIGEgbmV3IDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGlzCisgICByYWlzZWQsIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlCisgICA6YXR0cjpgdmFsdWVgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGBgdmFsdWVgYCBhdHRyaWJ1dGUgYW5kIHRoZSBhYmlsaXR5IGZvciBnZW5lcmF0b3IgZnVuY3Rpb25zIHRvCisgICAgICB1c2UgaXQgdG8gcmV0dXJuIGEgdmFsdWUuCiAKIC4uIGV4Y2VwdGlvbjo6IFN5bnRheEVycm9yCiAKQEAgLTM3MiwyMSArMzk3LDYgQEAKICAgIG1vcmUgcHJlY2lzZSBleGNlcHRpb24gc3VjaCBhcyA6ZXhjOmBJbmRleEVycm9yYC4KIAogCi0uLiBleGNlcHRpb246OiBWTVNFcnJvcgotCi0gICBPbmx5IGF2YWlsYWJsZSBvbiBWTVMuICBSYWlzZWQgd2hlbiBhIFZNUy1zcGVjaWZpYyBlcnJvciBvY2N1cnMuCi0KLQotLi4gZXhjZXB0aW9uOjogV2luZG93c0Vycm9yCi0KLSAgIFJhaXNlZCB3aGVuIGEgV2luZG93cy1zcGVjaWZpYyBlcnJvciBvY2N1cnMgb3Igd2hlbiB0aGUgZXJyb3IgbnVtYmVyIGRvZXMgbm90Ci0gICBjb3JyZXNwb25kIHRvIGFuIDpjOmRhdGE6YGVycm5vYCB2YWx1ZS4gIFRoZSA6YXR0cjpgd2luZXJyb3JgIGFuZAotICAgOmF0dHI6YHN0cmVycm9yYCB2YWx1ZXMgYXJlIGNyZWF0ZWQgZnJvbSB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUKLSAgIDpjOmZ1bmM6YEdldExhc3RFcnJvcmAgYW5kIDpjOmZ1bmM6YEZvcm1hdE1lc3NhZ2VgIGZ1bmN0aW9ucyBmcm9tIHRoZSBXaW5kb3dzCi0gICBQbGF0Zm9ybSBBUEkuIFRoZSA6YXR0cjpgZXJybm9gIHZhbHVlIG1hcHMgdGhlIDphdHRyOmB3aW5lcnJvcmAgdmFsdWUgdG8KLSAgIGNvcnJlc3BvbmRpbmcgYGBlcnJuby5oYGAgdmFsdWVzLiBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCi0KLQogLi4gZXhjZXB0aW9uOjogWmVyb0RpdmlzaW9uRXJyb3IKIAogICAgUmFpc2VkIHdoZW4gdGhlIHNlY29uZCBhcmd1bWVudCBvZiBhIGRpdmlzaW9uIG9yIG1vZHVsbyBvcGVyYXRpb24gaXMgemVyby4gIFRoZQpAQCAtMzk0LDYgKzQwNCwxMzUgQEAKICAgIG9wZXJhdGlvbi4KIAogCitUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9uczsKK3N0YXJ0aW5nIGZyb20gUHl0aG9uIDMuMywgdGhleSBhcmUgYWxpYXNlcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgorCisuLiBleGNlcHRpb246OiBJT0Vycm9yCisKKy4uIGV4Y2VwdGlvbjo6IFZNU0Vycm9yCisKKyAgIE9ubHkgYXZhaWxhYmxlIG9uIFZNUy4KKworLi4gZXhjZXB0aW9uOjogV2luZG93c0Vycm9yCisKKyAgIE9ubHkgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworT1MgZXhjZXB0aW9ucworXl5eXl5eXl5eXl5eXgorCitUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHN1YmNsYXNzZXMgb2YgOmV4YzpgT1NFcnJvcmAsIHRoZXkgZ2V0IHJhaXNlZAorZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gZXJyb3IgY29kZS4KKworLi4gZXhjZXB0aW9uOjogQmxvY2tpbmdJT0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiB3b3VsZCBibG9jayBvbiBhbiBvYmplY3QgKGUuZy4gc29ja2V0KSBzZXQKKyAgIGZvciBub24tYmxvY2tpbmcgb3BlcmF0aW9uLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUFHQUlOYGAsIGBgRUFMUkVBRFlgYCwKKyAgIGBgRVdPVUxEQkxPQ0tgYCBhbmQgYGBFSU5QUk9HUkVTU2BgLgorCisgICBJbiBhZGRpdGlvbiB0byB0aG9zZSBvZiA6ZXhjOmBPU0Vycm9yYCwgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBjYW4gaGF2ZQorICAgb25lIG1vcmUgYXR0cmlidXRlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBjaGFyYWN0ZXJzX3dyaXR0ZW4KKworICAgICAgQW4gaW50ZWdlciBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuIHRvIHRoZSBzdHJlYW0KKyAgICAgIGJlZm9yZSBpdCBibG9ja2VkLiAgVGhpcyBhdHRyaWJ1dGUgaXMgYXZhaWxhYmxlIHdoZW4gdXNpbmcgdGhlCisgICAgICBidWZmZXJlZCBJL08gY2xhc3NlcyBmcm9tIHRoZSA6bW9kOmBpb2AgbW9kdWxlLgorCisuLiBleGNlcHRpb246OiBDaGlsZFByb2Nlc3NFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gb24gYSBjaGlsZCBwcm9jZXNzIGZhaWxlZC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDSElMRGBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uRXJyb3IKKworICAgQSBiYXNlIGNsYXNzIGZvciBjb25uZWN0aW9uLXJlbGF0ZWQgaXNzdWVzLiAgU3ViY2xhc3NlcyBhcmUKKyAgIDpleGM6YEJyb2tlblBpcGVFcnJvcmAsIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLAorICAgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgYW5kIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYC4KKworICAgLi4gZXhjZXB0aW9uOjogQnJva2VuUGlwZUVycm9yCisKKyAgICAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIG9uIGEKKyAgICAgIHBpcGUgd2hpbGUgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQsIG9yIHRyeWluZyB0byB3cml0ZSBvbiBhIHNvY2tldAorICAgICAgd2hpY2ggaGFzIGJlZW4gc2h1dGRvd24gZm9yIHdyaXRpbmcuCisgICAgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFUElQRWBgIGFuZCBgYEVTSFVURE9XTmBgLgorCisgICAuLiBleGNlcHRpb246OiBDb25uZWN0aW9uQWJvcnRlZEVycm9yCisKKyAgICAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGF0dGVtcHQKKyAgICAgIGlzIGFib3J0ZWQgYnkgdGhlIHBlZXIuCisgICAgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQ09OTkFCT1JURURgYC4KKworICAgLi4gZXhjZXB0aW9uOjogQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorCisgICAgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICAgICBpcyByZWZ1c2VkIGJ5IHRoZSBwZWVyLgorICAgICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNPTk5SRUZVU0VEYGAuCisKKyAgIC4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25SZXNldEVycm9yCisKKyAgICAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzCisgICAgICByZXNldCBieSB0aGUgcGVlci4KKyAgICAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDT05OUkVTRVRgYC4KKworLi4gZXhjZXB0aW9uOjogRmlsZUV4aXN0c0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGljaCBhbHJlYWR5IGV4aXN0cy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVFWElTVGBgLgorCisuLiBleGNlcHRpb246OiBGaWxlTm90Rm91bmRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHJlcXVlc3RlZCBidXQgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT0VOVGBgLgorCisuLiBleGNlcHRpb246OiBJbnRlcnJ1cHRlZEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYW4gaW5jb21pbmcgc2lnbmFsLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUVJTlRSYGAuCisKKy4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZmlsZSBvcGVyYXRpb24gKHN1Y2ggYXMgOmZ1bmM6YG9zLnJlbW92ZWApIGlzIHJlcXVlc3RlZAorICAgb24gYSBkaXJlY3RvcnkuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFSVNESVJgYC4KKworLi4gZXhjZXB0aW9uOjogTm90QURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZGlyZWN0b3J5IG9wZXJhdGlvbiAoc3VjaCBhcyA6ZnVuYzpgb3MubGlzdGRpcmApIGlzIHJlcXVlc3RlZAorICAgb24gc29tZXRoaW5nIHdoaWNoIGlzIG5vdCBhIGRpcmVjdG9yeS4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT1RESVJgYC4KKworLi4gZXhjZXB0aW9uOjogUGVybWlzc2lvbkVycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBydW4gYW4gb3BlcmF0aW9uIHdpdGhvdXQgdGhlIGFkZXF1YXRlIGFjY2VzcworICAgcmlnaHRzIC0gZm9yIGV4YW1wbGUgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVBQ0NFU2BgIGFuZCBgYEVQRVJNYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFByb2Nlc3NMb29rdXBFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGdpdmVuIHByb2Nlc3MgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVTUkNIYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBmdW5jdGlvbiB0aW1lZCBvdXQgYXQgdGhlIHN5c3RlbSBsZXZlbC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVUSU1FRE9VVGBgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIEFsbCB0aGUgYWJvdmUgOmV4YzpgT1NFcnJvcmAgc3ViY2xhc3NlcyB3ZXJlIGFkZGVkLgorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKworCitXYXJuaW5ncworLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIGFzIHdhcm5pbmcgY2F0ZWdvcmllczsgc2VlIHRoZSA6bW9kOmB3YXJuaW5nc2AKIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzMzYyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTAsMCArMSwxMzYgQEAKKzptb2Q6YGZhdWx0aGFuZGxlcmAgLS0tIER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogZmF1bHRoYW5kbGVyCisgICA6c3lub3BzaXM6IER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2suCisKK1RoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksIG9uIGEgZmF1bHQsCithZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlciBzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvCitpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLAorOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbworZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZSA6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50Cit2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAgYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjb21wYXRpYmxlIHdpdGggc3lzdGVtIGZhdWx0IGhhbmRsZXJzIGxpa2UgQXBwb3J0IG9yIHRoZQorV2luZG93cyBmYXVsdCBoYW5kbGVyLiBUaGUgbW9kdWxlIHVzZXMgYW4gYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGVycworaWYgdGhlIDpjOmZ1bmM6YHNpZ2FsdHN0YWNrYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUuIFRoaXMgYWxsb3dzIGl0IHRvIGR1bXAgdGhlCit0cmFjZWJhY2sgZXZlbiBvbiBhIHN0YWNrIG92ZXJmbG93LgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzIGFuZCB0aGVyZWZvcmUgY2FuIG9ubHkgdXNlCitzaWduYWwtc2FmZSBmdW5jdGlvbnMgKGUuZy4gaXQgY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgaGVhcCkuIEJlY2F1c2Ugb2YKK3RoaXMgbGltaXRhdGlvbiB0cmFjZWJhY2sgZHVtcGluZyBpcyBtaW5pbWFsIGNvbXBhcmVkIHRvIG5vcm1hbCBQeXRob24KK3RyYWNlYmFja3M6CisKKyogT25seSBBU0NJSSBpcyBzdXBwb3J0ZWQuIFRoZSBgYGJhY2tzbGFzaHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyIGlzIHVzZWQgb24KKyAgZW5jb2RpbmcuCisqIEVhY2ggc3RyaW5nIGlzIGxpbWl0ZWQgdG8gNTAwIGNoYXJhY3RlcnMuCisqIE9ubHkgdGhlIGZpbGVuYW1lLCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGxpbmUgbnVtYmVyIGFyZQorICBkaXNwbGF5ZWQuIChubyBzb3VyY2UgY29kZSkKKyogSXQgaXMgbGltaXRlZCB0byAxMDAgZnJhbWVzIGFuZCAxMDAgdGhyZWFkcy4KKworQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaXMgd3JpdHRlbiB0byA6ZGF0YTpgc3lzLnN0ZGVycmAuIFRvIHNlZQordHJhY2ViYWNrcywgYXBwbGljYXRpb25zIG11c3QgYmUgcnVuIGluIHRoZSB0ZXJtaW5hbC4gQSBsb2cgZmlsZSBjYW4KK2FsdGVybmF0aXZlbHkgYmUgcGFzc2VkIHRvIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYC4KKworVGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDLCBzbyB0cmFjZWJhY2tzIGNhbiBiZSBkdW1wZWQgb24gYSBjcmFzaCBvciB3aGVuCitQeXRob24gaXMgZGVhZGxvY2tlZC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRHVtcCB0aGUgdHJhY2ViYWNrCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMgaW50byAqZmlsZSouIElmICphbGxfdGhyZWFkcyogaXMKKyAgIGBgRmFsc2VgYCwgZHVtcCBvbmx5IHRoZSBjdXJyZW50IHRocmVhZC4KKworCitGYXVsdCBoYW5kbGVyIHN0YXRlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgRW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiBpbnN0YWxsIGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwKKyAgIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgIGFuZCA6Y29uc3Q6YFNJR0lMTGAKKyAgIHNpZ25hbHMgdG8gZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjay4gSWYgKmFsbF90aHJlYWRzKiBpcyBgYFRydWVgYCwKKyAgIHByb2R1Y2UgdHJhY2ViYWNrcyBmb3IgZXZlcnkgcnVubmluZyB0aHJlYWQuIE90aGVyd2lzZSwgZHVtcCBvbmx5IHRoZSBjdXJyZW50CisgICB0aHJlYWQuCisKKy4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCisKKyAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQorICAgOmZ1bmM6YGVuYWJsZWAuCisKKy4uIGZ1bmN0aW9uOjogaXNfZW5hYmxlZCgpCisKKyAgIENoZWNrIGlmIHRoZSBmYXVsdCBoYW5kbGVyIGlzIGVuYWJsZWQuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrcyBhZnRlciBhIHRpbWVvdXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnIsIGV4aXQ9RmFsc2UpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMsIGFmdGVyIGEgdGltZW91dCBvZiAqdGltZW91dCogc2Vjb25kcywgb3IKKyAgIGV2ZXJ5ICp0aW1lb3V0KiBzZWNvbmRzIGlmICpyZXBlYXQqIGlzIGBgVHJ1ZWBgLiAgSWYgKmV4aXQqIGlzIGBgVHJ1ZWBgLCBjYWxsCisgICA6YzpmdW5jOmBfZXhpdGAgd2l0aCBzdGF0dXM9MSBhZnRlciBkdW1waW5nIHRoZSB0cmFjZWJhY2tzLiAgKE5vdGUKKyAgIDpjOmZ1bmM6YF9leGl0YCBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseSwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBkbyBhbnkKKyAgIGNsZWFudXAgbGlrZSBmbHVzaGluZyBmaWxlIGJ1ZmZlcnMuKSBJZiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLCB0aGUgbmV3CisgICBjYWxsIHJlcGxhY2VzIHByZXZpb3VzIHBhcmFtZXRlcnMgYW5kIHJlc2V0cyB0aGUgdGltZW91dC4gVGhlIHRpbWVyIGhhcyBhCisgICBzdWItc2Vjb25kIHJlc29sdXRpb24uCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSB3YXRjaGRvZyB0aHJlYWQgYW5kIHRoZXJlZm9yZSBpcyBub3QKKyAgIGF2YWlsYWJsZSBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCB0aHJlYWRzIGRpc2FibGVkLgorCisuLiBmdW5jdGlvbjo6IGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgIENhbmNlbCB0aGUgbGFzdCBjYWxsIHRvIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoc2lnbnVtLCBmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUsIGNoYWluPUZhbHNlKQorCisgICBSZWdpc3RlciBhIHVzZXIgc2lnbmFsOiBpbnN0YWxsIGEgaGFuZGxlciBmb3IgdGhlICpzaWdudW0qIHNpZ25hbCB0byBkdW1wCisgICB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzLCBvciBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYgKmFsbF90aHJlYWRzKiBpcworICAgYGBGYWxzZWBgLCBpbnRvICpmaWxlKi4gQ2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciBpZiBjaGFpbiBpcyBgYFRydWVgYC4KKworICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorCisuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQorCisgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCisgICBpbnN0YWxsZWQgYnkgOmZ1bmM6YHJlZ2lzdGVyYC4gUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzaWduYWwgd2FzIHJlZ2lzdGVyZWQsCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworRmlsZSBkZXNjcmlwdG9yIGlzc3VlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmZ1bmM6YGVuYWJsZWAsIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAgYW5kIDpmdW5jOmByZWdpc3RlcmAga2VlcCB0aGUKK2ZpbGUgZGVzY3JpcHRvciBvZiB0aGVpciAqZmlsZSogYXJndW1lbnQuIElmIHRoZSBmaWxlIGlzIGNsb3NlZCBhbmQgaXRzIGZpbGUKK2Rlc2NyaXB0b3IgaXMgcmV1c2VkIGJ5IGEgbmV3IGZpbGUsIG9yIGlmIDpmdW5jOmBvcy5kdXAyYCBpcyB1c2VkIHRvIHJlcGxhY2UKK3RoZSBmaWxlIGRlc2NyaXB0b3IsIHRoZSB0cmFjZWJhY2sgd2lsbCBiZSB3cml0dGVuIGludG8gYSBkaWZmZXJlbnQgZmlsZS4gQ2FsbAordGhlc2UgZnVuY3Rpb25zIGFnYWluIGVhY2ggdGltZSB0aGF0IHRoZSBmaWxlIGlzIHJlcGxhY2VkLgorCisKK0V4YW1wbGUKKy0tLS0tLS0KKworRXhhbXBsZSBvZiBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBMaW51eDogOjoKKworICAgICQgcHl0aG9uIC1xIC1YIGZhdWx0aGFuZGxlcgorICAgID4+PiBpbXBvcnQgY3R5cGVzCisgICAgPj4+IGN0eXBlcy5zdHJpbmdfYXQoMCkKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IFNlZ21lbnRhdGlvbiBmYXVsdAorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiODk5ZjM5NzAwOgorICAgICAgRmlsZSAiL2hvbWUvcHl0aG9uL2NweXRob24vTGliL2N0eXBlcy9fX2luaXRfXy5weSIsIGxpbmUgNDg2IGluIHN0cmluZ19hdAorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSBpbiA8bW9kdWxlPgorICAgIFNlZ21lbnRhdGlvbiBmYXVsdAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mY250bC5yc3QgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKaW5kZXggNjE5MjQwMC4uOWE5Y2RjMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmNudGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdApAQCAtMTksNiArMTksMTEgQEAKIGBgc3lzLnN0ZGluLmZpbGVubygpYGAsIG9yIGEgOmNsYXNzOmBpby5JT0Jhc2VgIG9iamVjdCwgc3VjaCBhcyBgYHN5cy5zdGRpbmBgCiBpdHNlbGYsIHdoaWNoIHByb3ZpZGVzIGEgOm1ldGg6YGZpbGVub2AgdGhhdCByZXR1cm5zIGEgZ2VudWluZSBmaWxlIGRlc2NyaXB0b3IuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBJT0Vycm9yYCB3aGVyZSB0aGV5IG5vdworICAgcmFpc2UgYSA6ZXhjOmBPU0Vycm9yYC4KKworCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIApAQCAtNDAsNyArNDUsNyBAQAogICAgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcyBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24KICAgIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEgY29ycnVwdGlvbi4KIAotICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIG9wWywgYXJnWywgbXV0YXRlX2ZsYWddXSkKQEAgLTEwNyw3ICsxMTIsNyBAQAogICAgV2hlbiAqb3BlcmF0aW9uKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCiAgICBiaXR3aXNlIE9SZWQgd2l0aCA6Y29uc3Q6YExPQ0tfTkJgIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uCiAgICBJZiA6Y29uc3Q6YExPQ0tfTkJgIGlzIHVzZWQgYW5kIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4KLSAgIDpleGM6YElPRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwgaGF2ZSBhbiAqZXJybm8qCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYW4gKmVycm5vKgogICAgYXR0cmlidXRlIHNldCB0byA6Y29uc3Q6YEVBQ0NFU2Agb3IgOmNvbnN0OmBFQUdBSU5gIChkZXBlbmRpbmcgb24gdGhlCiAgICBvcGVyYXRpbmcgc3lzdGVtOyBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBib3RoIHZhbHVlcykuICBPbiBhdCBsZWFzdCBzb21lCiAgICBzeXN0ZW1zLCA6Y29uc3Q6YExPQ0tfRVhgIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciByZWZlcnMgdG8gYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAppbmRleCBkZTIwZmIxLi5hZGQ2OGEzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdApAQCAtMjEsMTEgKzIxLDggQEAKICAgIENvbXBhcmUgdGhlIGZpbGVzIG5hbWVkICpmMSogYW5kICpmMiosIHJldHVybmluZyBgYFRydWVgYCBpZiB0aGV5IHNlZW0gZXF1YWwsCiAgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCi0gICBVbmxlc3MgKnNoYWxsb3cqIGlzIGdpdmVuIGFuZCBpcyBmYWxzZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgCi0gICBzaWduYXR1cmVzIGFyZSB0YWtlbiB0byBiZSBlcXVhbC4KLQotICAgRmlsZXMgdGhhdCB3ZXJlIGNvbXBhcmVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgY29tcGFyZWQgYWdhaW4gdW5sZXNzCi0gICB0aGVpciA6ZnVuYzpgb3Muc3RhdGAgc2lnbmF0dXJlIGNoYW5nZXMuCisgICBJZiAqc2hhbGxvdyogaXMgdHJ1ZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgIHNpZ25hdHVyZXMgYXJlCisgICB0YWtlbiB0byBiZSBlcXVhbC4gIE90aGVyd2lzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBhcmUgY29tcGFyZWQuCiAKICAgIE5vdGUgdGhhdCBubyBleHRlcm5hbCBwcm9ncmFtcyBhcmUgY2FsbGVkIGZyb20gdGhpcyBmdW5jdGlvbiwgZ2l2aW5nIGl0CiAgICBwb3J0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeS4KQEAgLTUxLDIzICs0OCwxMSBAQAogICAgb25lIG9mIHRoZSB0aHJlZSByZXR1cm5lZCBsaXN0cy4KIAogCi1FeGFtcGxlOjoKLQotICAgPj4+IGltcG9ydCBmaWxlY21wCi0gICA+Pj4gZmlsZWNtcC5jbXAoJ3VuZG9jLnJzdCcsICd1bmRvYy5yc3QnKQotICAgVHJ1ZQotICAgPj4+IGZpbGVjbXAuY21wKCd1bmRvYy5yc3QnLCAnaW5kZXgucnN0JykKLSAgIEZhbHNlCi0KLQogLi4gX2RpcmNtcC1vYmplY3RzOgogCiBUaGUgOmNsYXNzOmBkaXJjbXBgIGNsYXNzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTpjbGFzczpgZGlyY21wYCBpbnN0YW5jZXMgYXJlIGJ1aWx0IHVzaW5nIHRoaXMgY29uc3RydWN0b3I6Ci0KLQogLi4gY2xhc3M6OiBkaXJjbXAoYSwgYiwgaWdub3JlPU5vbmUsIGhpZGU9Tm9uZSkKIAogICAgQ29uc3RydWN0IGEgbmV3IGRpcmVjdG9yeSBjb21wYXJpc29uIG9iamVjdCwgdG8gY29tcGFyZSB0aGUgZGlyZWN0b3JpZXMgKmEqIGFuZApAQCAtODMsNyArNjgsNyBAQAogCiAgICAuLiBtZXRob2Q6OiByZXBvcnQoKQogCi0gICAgICBQcmludCAodG8gYGBzeXMuc3Rkb3V0YGApIGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqLgorICAgICAgUHJpbnQgKHRvIDpkYXRhOmBzeXMuc3Rkb3V0YCkgYSBjb21wYXJpc29uIGJldHdlZW4gKmEqIGFuZCAqYiouCiAKIAogICAgLi4gbWV0aG9kOjogcmVwb3J0X3BhcnRpYWxfY2xvc3VyZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYzQ0MzExLi5mOGVjNDM2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTI4LDcgKzI4LDEwIEBACiBBbGwgZmlsZXMgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieQogc3BlY2lmeWluZyB0aGUgKm1vZGUqIHBhcmFtZXRlciBpbiB0aGUgY2FsbCB0byA6ZnVuYzpgLmlucHV0YCBvcgogOmNsYXNzOmBGaWxlSW5wdXRgLiAgSWYgYW4gSS9PIGVycm9yIG9jY3VycyBkdXJpbmcgb3BlbmluZyBvciByZWFkaW5nIGEgZmlsZSwKLTpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKzpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkOyBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIElmIGBgc3lzLnN0ZGluYGAgaXMgdXNlZCBtb3JlIHRoYW4gb25jZSwgdGhlIHNlY29uZCBhbmQgZnVydGhlciB1c2Ugd2lsbCByZXR1cm4KIG5vIGxpbmVzLCBleGNlcHQgcGVyaGFwcyBmb3IgaW50ZXJhY3RpdmUgdXNlLCBvciBpZiBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IHJlc2V0CkBAIC0xNjgsMTAgKzE3MSw2IEBACiBpdCBpcyBkZWxldGVkIHdoZW4gdGhlIG91dHB1dCBmaWxlIGlzIGNsb3NlZC4gIEluLXBsYWNlIGZpbHRlcmluZyBpcyBkaXNhYmxlZAogd2hlbiBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLgogCi0uLiBub3RlOjoKLQotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgd29yayBmb3IgTVMtRE9TIDgrMyBmaWxlc3lzdGVtcy4KLQogCiBUaGUgdHdvIGZvbGxvd2luZyBvcGVuaW5nIGhvb2tzIGFyZSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggNWJiZWY0Zi4uM2NjMjk1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC00MCw3ICs0MCw3IEBACiAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgogCi0uLiBjbGFzczo6IEZUUChob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JydbLCB0aW1lb3V0XSkKKy4uIGNsYXNzOjogRlRQKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgRlRQYCBjbGFzcy4gIFdoZW4gKmhvc3QqIGlzIGdpdmVuLCB0aGUKICAgIG1ldGhvZCBjYWxsIGBgY29ubmVjdChob3N0KWBgIGlzIG1hZGUuICBXaGVuICp1c2VyKiBpcyBnaXZlbiwgYWRkaXRpb25hbGx5CkBAIC00OCw3ICs0OCw4IEBACiAgICAqYWNjdCogZGVmYXVsdCB0byB0aGUgZW1wdHkgc3RyaW5nIHdoZW4gbm90IGdpdmVuKS4gIFRoZSBvcHRpb25hbCAqdGltZW91dCoKICAgIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIGJsb2NraW5nIG9wZXJhdGlvbnMgbGlrZSB0aGUKICAgIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgaXMgbm90IHNwZWNpZmllZCwgdGhlIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZwotICAgd2lsbCBiZSB1c2VkKS4KKyAgIHdpbGwgYmUgdXNlZCkuICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQKKyAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgogCiAgICA6Y2xhc3M6YEZUUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuIEhlcmUgaXMgYSBzYW1wbGUKICAgIG9uIGhvdyB1c2luZyBpdDoKQEAgLTY4LDggKzY5LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCi0uLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBba2V5ZmlsZVssIGNlcnRmaWxlWywgY29udGV4dFssIHRpbWVvdXRdXV1dKQorCisuLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgRlRQYCBzdWJjbGFzcyB3aGljaCBhZGRzIFRMUyBzdXBwb3J0IHRvIEZUUCBhcyBkZXNjcmliZWQgaW4KICAgIDpyZmM6YDQyMTdgLgpAQCAtODAsMTAgKzg0LDE1IEBACiAgICBwcml2YXRlIGtleSBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBuYW1lIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uCiAgICAqY29udGV4dCogcGFyYW1ldGVyIGlzIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cwogICAgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhCi0gICBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4KKyAgIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkgc3RydWN0dXJlLiAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZQorICAgYGAoaG9zdCwgcG9ydClgYCBmb3IgdGhlIHNvY2tldCB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUKKyAgIGNvbm5lY3RpbmcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczoKIAogICAgPj4+IGZyb20gZnRwbGliIGltcG9ydCBGVFBfVExTCkBAIC0xMzUsOCArMTQ0LDcgQEAKICAgIFRoZSBzZXQgb2YgYWxsIGV4Y2VwdGlvbnMgKGFzIGEgdHVwbGUpIHRoYXQgbWV0aG9kcyBvZiA6Y2xhc3M6YEZUUGAKICAgIGluc3RhbmNlcyBtYXkgcmFpc2UgYXMgYSByZXN1bHQgb2YgcHJvYmxlbXMgd2l0aCB0aGUgRlRQIGNvbm5lY3Rpb24gKGFzCiAgICBvcHBvc2VkIHRvIHByb2dyYW1taW5nIGVycm9ycyBtYWRlIGJ5IHRoZSBjYWxsZXIpLiAgVGhpcyBzZXQgaW5jbHVkZXMgdGhlCi0gICBmb3VyIGV4Y2VwdGlvbnMgbGlzdGVkIGFib3ZlIGFzIHdlbGwgYXMgOmV4Yzpgc29ja2V0LmVycm9yYCBhbmQKLSAgIDpleGM6YElPRXJyb3JgLgorICAgZm91ciBleGNlcHRpb25zIGxpc3RlZCBhYm92ZSBhcyB3ZWxsIGFzIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTc0LDcgKzE4Miw3IEBACiAgICBkZWJ1Z2dpbmcgb3V0cHV0LCBsb2dnaW5nIGVhY2ggbGluZSBzZW50IGFuZCByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBjb25uZWN0aW9uLgogCiAKLS4uIG1ldGhvZDo6IEZUUC5jb25uZWN0KGhvc3Q9JycsIHBvcnQ9MFssIHRpbWVvdXRdKQorLi4gbWV0aG9kOjogRlRQLmNvbm5lY3QoaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIENvbm5lY3QgdG8gdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQuICBUaGUgZGVmYXVsdCBwb3J0IG51bWJlciBpcyBgYDIxYGAsIGFzCiAgICBzcGVjaWZpZWQgYnkgdGhlIEZUUCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uLiAgSXQgaXMgcmFyZWx5IG5lZWRlZCB0byBzcGVjaWZ5IGEKQEAgLTE4MiwxMCArMTkwLDE0IEBACiAgICBpbnN0YW5jZTsgaXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXQgYWxsIGlmIGEgaG9zdCB3YXMgZ2l2ZW4gd2hlbiB0aGUgaW5zdGFuY2UKICAgIHdhcyBjcmVhdGVkLiAgQWxsIG90aGVyIG1ldGhvZHMgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KICAgIG1hZGUuCi0KICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQuIElmIG5vICp0aW1lb3V0KiBpcyBwYXNzZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0CiAgICBzZXR0aW5nIHdpbGwgYmUgdXNlZC4KKyAgICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcworICAgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKIC4uIG1ldGhvZDo6IEZUUC5nZXR3ZWxjb21lKCkKQEAgLTI0MSwxMyArMjUzLDEyIEBACiAKICAgIFJldHJpZXZlIGEgZmlsZSBvciBkaXJlY3RvcnkgbGlzdGluZyBpbiBBU0NJSSB0cmFuc2ZlciBtb2RlLiAgKmNtZCogc2hvdWxkIGJlCiAgICBhbiBhcHByb3ByaWF0ZSBgYFJFVFJgYCBjb21tYW5kIChzZWUgOm1ldGg6YHJldHJiaW5hcnlgKSBvciBhIGNvbW1hbmQgc3VjaCBhcwotICAgYGBMSVNUYGAsIGBgTkxTVGBgIG9yIGBgTUxTRGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KKyAgIGBgTElTVGBgIG9yIGBgTkxTVGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KICAgIGBgTElTVGBgIHJldHJpZXZlcyBhIGxpc3Qgb2YgZmlsZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IHRob3NlIGZpbGVzLgotICAgYGBOTFNUYGAgcmV0cmlldmVzIGEgbGlzdCBvZiBmaWxlIG5hbWVzLiAgT24gc29tZSBzZXJ2ZXJzLCBgYE1MU0RgYCByZXRyaWV2ZXMKLSAgIGEgbWFjaGluZSByZWFkYWJsZSBsaXN0IG9mIGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZSBmaWxlcy4gIFRoZQotICAgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnRhaW5pbmcKLSAgIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqIHByaW50cyB0aGUKLSAgIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCisgICBgYE5MU1RgYCByZXRyaWV2ZXMgYSBsaXN0IG9mIGZpbGUgbmFtZXMuCisgICBUaGUgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50CisgICBjb250YWluaW5nIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqCisgICBwcmludHMgdGhlIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCiAKIAogLi4gbWV0aG9kOjogRlRQLnNldF9wYXN2KGJvb2xlYW4pCkBAIC0zMDcsNiArMzE4LDIwIEBACiAgICBpbiA6bWV0aDpgdHJhbnNmZXJjbWRgLgogCiAKKy4uIG1ldGhvZDo6IEZUUC5tbHNkKHBhdGg9IiIsIGZhY3RzPVtdKQorCisgICBMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNEIGNvbW1hbmQKKyAgICg6cmZjOmAzNjU5YCkuICBJZiAqcGF0aCogaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYXNzdW1lZC4KKyAgICpmYWN0cyogaXMgYSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIGluZm9ybWF0aW9uIGRlc2lyZWQKKyAgIChlLmcuIGBgWyJ0eXBlIiwgInNpemUiLCAicGVybSJdYGApLiAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhCisgICB0dXBsZSBvZiB0d28gZWxlbWVudHMgZm9yIGV2ZXJ5IGZpbGUgZm91bmQgaW4gcGF0aC4gIEZpcnN0IGVsZW1lbnQgaXMgdGhlCisgICBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGZhY3RzIGFib3V0IHRoZSBmaWxlCisgICBuYW1lLiAgQ29udGVudCBvZiB0aGlzIGRpY3Rpb25hcnkgbWlnaHQgYmUgbGltaXRlZCBieSB0aGUgKmZhY3RzKiBhcmd1bWVudAorICAgYnV0IHNlcnZlciBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYWxsIHJlcXVlc3RlZCBmYWN0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogRlRQLm5sc3QoYXJndW1lbnRbLCAuLi5dKQogCiAgICBSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgYXMgcmV0dXJuZWQgYnkgdGhlIGBgTkxTVGBgIGNvbW1hbmQuICBUaGUKQEAgLTMxNCw2ICszMzksOCBAQAogICAgZGlyZWN0b3J5KS4gIE11bHRpcGxlIGFyZ3VtZW50cyBjYW4gYmUgdXNlZCB0byBwYXNzIG5vbi1zdGFuZGFyZCBvcHRpb25zIHRvCiAgICB0aGUgYGBOTFNUYGAgY29tbWFuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMyB1c2UgOm1ldGg6YG1sc2RgIGluc3RlYWQuCisKIAogLi4gbWV0aG9kOjogRlRQLmRpcihhcmd1bWVudFssIC4uLl0pCiAKQEAgLTMyNCw2ICszNTEsOCBAQAogICAgYXMgYSAqY2FsbGJhY2sqIGZ1bmN0aW9uIGFzIGZvciA6bWV0aDpgcmV0cmxpbmVzYDsgdGhlIGRlZmF1bHQgcHJpbnRzIHRvCiAgICBgYHN5cy5zdGRvdXRgYC4gIFRoaXMgbWV0aG9kIHJldHVybnMgYGBOb25lYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMgdXNlIDptZXRoOmBtbHNkYCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IEZUUC5yZW5hbWUoZnJvbW5hbWUsIHRvbmFtZSkKIApAQCAtMzk2LDYgKzQyNSwxNCBAQAogCiAgICBTZXQgdXAgc2VjdXJlIGNvbnRyb2wgY29ubmVjdGlvbiBieSB1c2luZyBUTFMgb3IgU1NMLCBkZXBlbmRpbmcgb24gd2hhdCBzcGVjaWZpZWQgaW4gOm1ldGg6YHNzbF92ZXJzaW9uYCBhdHRyaWJ1dGUuCiAKKy4uIG1ldGhvZDo6IEZUUF9UTFMuY2NjKCkKKworICAgUmV2ZXJ0IGNvbnRyb2wgY2hhbm5lbCBiYWNrIHRvIHBsYWludGV4dC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0YWtlCisgICBhZHZhbnRhZ2Ugb2YgZmlyZXdhbGxzIHRoYXQga25vdyBob3cgdG8gaGFuZGxlIE5BVCB3aXRoIG5vbi1zZWN1cmUgRlRQCisgICB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBtZXRob2Q6OiBGVFBfVExTLnByb3RfcCgpCiAKICAgIFNldCB1cCBzZWN1cmUgZGF0YSBjb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggMWVlODU0MC4uYzJiM2IyMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0xNyw5ICsxNyw5IEBACiA6ZnVuYzpgYmluYCAgICAgICAgICA6ZnVuYzpgZXZhbGAgICAgICAgOmZ1bmM6YGludGAgICAgICAgICA6ZnVuYzpgb3BlbmAgICAgICA6ZnVuYzpgc3RyYAogOmZ1bmM6YGJvb2xgICAgICAgICAgOmZ1bmM6YGV4ZWNgICAgICAgIDpmdW5jOmBpc2luc3RhbmNlYCAgOmZ1bmM6YG9yZGAgICAgICAgOmZ1bmM6YHN1bWAKIDpmdW5jOmBieXRlYXJyYXlgICAgIDpmdW5jOmBmaWx0ZXJgICAgICA6ZnVuYzpgaXNzdWJjbGFzc2AgIDpmdW5jOmBwb3dgICAgICAgIDpmdW5jOmBzdXBlcmAKLTpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIDpmdW5jOmB0dXBsZWAKKzpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIHxmdW5jLXR1cGxlfF8KIDpmdW5jOmBjYWxsYWJsZWAgICAgIDpmdW5jOmBmb3JtYXRgICAgICA6ZnVuYzpgbGVuYCAgICAgICAgIDpmdW5jOmBwcm9wZXJ0eWAgIDpmdW5jOmB0eXBlYAotOmZ1bmM6YGNocmAgICAgICAgICAgfGZ1bmMtZnJvemVuc2V0fF8gIDpmdW5jOmBsaXN0YCAgICAgICAgOmZ1bmM6YHJhbmdlYCAgICAgOmZ1bmM6YHZhcnNgCis6ZnVuYzpgY2hyYCAgICAgICAgICB8ZnVuYy1mcm96ZW5zZXR8XyAgfGZ1bmMtbGlzdHxfICAgICAgICB8ZnVuYy1yYW5nZXxfICAgICA6ZnVuYzpgdmFyc2AKIDpmdW5jOmBjbGFzc21ldGhvZGAgIDpmdW5jOmBnZXRhdHRyYCAgICA6ZnVuYzpgbG9jYWxzYCAgICAgIDpmdW5jOmByZXByYCAgICAgIDpmdW5jOmB6aXBgCiA6ZnVuYzpgY29tcGlsZWAgICAgICA6ZnVuYzpgZ2xvYmFsc2AgICAgOmZ1bmM6YG1hcGAgICAgICAgICA6ZnVuYzpgcmV2ZXJzZWRgICA6ZnVuYzpgX19pbXBvcnRfX2AKIDpmdW5jOmBjb21wbGV4YCAgICAgIDpmdW5jOmBoYXNhdHRyYCAgICA6ZnVuYzpgbWF4YCAgICAgICAgIDpmdW5jOmByb3VuZGAKQEAgLTMzLDYgKzMzLDkgQEAKIC4uIHxmdW5jLWZyb3plbnNldHwgcmVwbGFjZTo6IGBgZnJvemVuc2V0KClgYAogLi4gfGZ1bmMtbWVtb3J5dmlld3wgcmVwbGFjZTo6IGBgbWVtb3J5dmlldygpYGAKIC4uIHxmdW5jLXNldHwgcmVwbGFjZTo6IGBgc2V0KClgYAorLi4gfGZ1bmMtbGlzdHwgcmVwbGFjZTo6IGBgbGlzdCgpYGAKKy4uIHxmdW5jLXR1cGxlfCByZXBsYWNlOjogYGB0dXBsZSgpYGAKKy4uIHxmdW5jLXJhbmdlfCByZXBsYWNlOjogYGByYW5nZSgpYGAKIAogCiAuLiBmdW5jdGlvbjo6IGFicyh4KQpAQCAtOTMsNiArOTYsNyBAQAogICAgLi4gaW5kZXg6OiBwYWlyOiBCb29sZWFuOyB0eXBlCiAKIAorLi4gX2Z1bmMtYnl0ZWFycmF5OgogLi4gZnVuY3Rpb246OiBieXRlYXJyYXkoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgYXJyYXkgb2YgYnl0ZXMuICBUaGUgOmNsYXNzOmBieXRlYXJyYXlgIHR5cGUgaXMgYSBtdXRhYmxlCkBAIC0xMTksNiArMTIzLDcgQEAKICAgIFdpdGhvdXQgYW4gYXJndW1lbnQsIGFuIGFycmF5IG9mIHNpemUgMCBpcyBjcmVhdGVkLgogCiAKKy4uIF9mdW5jLWJ5dGVzOgogLi4gZnVuY3Rpb246OiBieXRlcyhbc291cmNlWywgZW5jb2RpbmdbLCBlcnJvcnNdXV0pCiAKICAgIFJldHVybiBhIG5ldyAiYnl0ZXMiIG9iamVjdCwgd2hpY2ggaXMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIGludGVnZXJzIGluCkBAIC0xNTIsMTAgKzE1Nyw2IEBACiAgICAxLDExNCwxMTEgKDB4MTBGRkZGIGluIGJhc2UgMTYpLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzCiAgICBvdXRzaWRlIHRoYXQgcmFuZ2UuCiAKLSAgIE5vdGUgdGhhdCBvbiBuYXJyb3cgVW5pY29kZSBidWlsZHMsIHRoZSByZXN1bHQgaXMgYSBzdHJpbmcgb2YKLSAgIGxlbmd0aCB0d28gZm9yICppKiBncmVhdGVyIHRoYW4gNjUsNTM1ICgweEZGRkYgaW4gaGV4YWRlY2ltYWwpLgotCi0KIAogLi4gZnVuY3Rpb246OiBjbGFzc21ldGhvZChmdW5jdGlvbikKIApAQCAtMzA5LDE3ICszMTAsMTggQEAKIAogICAgICAgPj4+IGltcG9ydCBzdHJ1Y3QKICAgICAgID4+PiBkaXIoKSAgICMgc2hvdyB0aGUgbmFtZXMgaW4gdGhlIG1vZHVsZSBuYW1lc3BhY2UKLSAgICAgIFsnX19idWlsdGluc19fJywgJ19fZG9jX18nLCAnX19uYW1lX18nLCAnc3RydWN0J10KLSAgICAgID4+PiBkaXIoc3RydWN0KSAgICMgc2hvdyB0aGUgbmFtZXMgaW4gdGhlIHN0cnVjdCBtb2R1bGUKLSAgICAgIFsnU3RydWN0JywgJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAnX19wYWNrYWdlX18nLCAnX2NsZWFyY2FjaGUnLCAnY2FsY3NpemUnLCAnZXJyb3InLCAncGFjaycsICdwYWNrX2ludG8nLAorICAgICAgWydfX2J1aWx0aW5zX18nLCAnX19uYW1lX18nLCAnc3RydWN0J10KKyAgICAgID4+PiBkaXIoc3RydWN0KSAgICMgc2hvdyB0aGUgbmFtZXMgaW4gdGhlIHN0cnVjdCBtb2R1bGUgIyBkb2N0ZXN0OiArU0tJUAorICAgICAgWydTdHJ1Y3QnLCAnX19hbGxfXycsICdfX2J1aWx0aW5zX18nLCAnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywKKyAgICAgICAnX19pbml0aWFsaXppbmdfXycsICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAnX2NsZWFyY2FjaGUnLCAnY2FsY3NpemUnLCAnZXJyb3InLCAncGFjaycsICdwYWNrX2ludG8nLAogICAgICAgICd1bnBhY2snLCAndW5wYWNrX2Zyb20nXQogICAgICAgPj4+IGNsYXNzIFNoYXBlKG9iamVjdCk6Ci0gICAgICAgICAgICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgotICAgICAgICAgICAgICAgICAgcmV0dXJuIFsnYXJlYScsICdwZXJpbWV0ZXInLCAnbG9jYXRpb24nXQorICAgICAgLi4uICAgICBkZWYgX19kaXJfXyhzZWxmKToKKyAgICAgIC4uLiAgICAgICAgIHJldHVybiBbJ2FyZWEnLCAncGVyaW1ldGVyJywgJ2xvY2F0aW9uJ10KICAgICAgID4+PiBzID0gU2hhcGUoKQogICAgICAgPj4+IGRpcihzKQotICAgICAgWydhcmVhJywgJ3BlcmltZXRlcicsICdsb2NhdGlvbiddCisgICAgICBbJ2FyZWEnLCAnbG9jYXRpb24nLCAncGVyaW1ldGVyJ10KIAogICAgLi4gbm90ZTo6CiAKQEAgLTYxOCw5ICs2MjAsOSBAQAogICAgdG8gYSBzdHJpbmcgKHN0cmlwcGluZyBhIHRyYWlsaW5nIG5ld2xpbmUpLCBhbmQgcmV0dXJucyB0aGF0LiAgV2hlbiBFT0YgaXMKICAgIHJlYWQsIDpleGM6YEVPRkVycm9yYCBpcyByYWlzZWQuICBFeGFtcGxlOjoKIAotICAgICAgPj4+IHMgPSBpbnB1dCgnLS0+ICcpCisgICAgICA+Pj4gcyA9IGlucHV0KCctLT4gJykgICMgZG9jdGVzdDogK1NLSVAKICAgICAgIC0tPiBNb250eSBQeXRob24ncyBGbHlpbmcgQ2lyY3VzCi0gICAgICA+Pj4gcworICAgICAgPj4+IHMgICMgZG9jdGVzdDogK1NLSVAKICAgICAgICJNb250eSBQeXRob24ncyBGbHlpbmcgQ2lyY3VzIgogCiAgICBJZiB0aGUgOm1vZDpgcmVhZGxpbmVgIG1vZHVsZSB3YXMgbG9hZGVkLCB0aGVuIDpmdW5jOmBpbnB1dGAgd2lsbCB1c2UgaXQKQEAgLTcwMCwxNiArNzAyLDEyIEBACiAgICBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBhIG1hcHBpbmcgKGRpY3Rpb25hcnkpLgogCiAKKy4uIF9mdW5jLWxpc3Q6CiAuLiBmdW5jdGlvbjo6IGxpc3QoW2l0ZXJhYmxlXSkKKyAgIDpub2luZGV4OgogCi0gICBSZXR1cm4gYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzCi0gICBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzCi0gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcwotICAgbWFkZSBhbmQgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLiAgRm9yIGluc3RhbmNlLCBgYGxpc3QoJ2FiYycpYGAKLSAgIHJldHVybnMgYGBbJ2EnLCAnYicsICdjJ11gYCBhbmQgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSwgMiwgM11gYC4KLSAgIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCByZXR1cm5zIGEgbmV3IGVtcHR5IGxpc3QsIGBgW11gYC4KLQotICAgOmNsYXNzOmBsaXN0YCBpcyBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCisgICBSYXRoZXIgdGhhbiBiZWluZyBhIGZ1bmN0aW9uLCA6Y2xhc3M6YGxpc3RgIGlzIGFjdHVhbGx5IGEgbXV0YWJsZQorICAgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCiAKIAogLi4gZnVuY3Rpb246OiBsb2NhbHMoKQpAQCAtODA4LDEwICs4MDYsMTAgQEAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogZmlsZSBvYmplY3Q7IG9wZW4oKSBidWlsdC1pbiBmdW5jdGlvbgogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlKQorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpCiAKICAgIE9wZW4gKmZpbGUqIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAuICBJZiB0aGUgZmlsZQotICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAqZmlsZSogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgogICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvcgpAQCAtODIyLDE3ICs4MjAsMjAgQEAKICAgICptb2RlKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKICAgIG9wZW5lZC4gIEl0IGRlZmF1bHRzIHRvIGBgJ3InYGAgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuCiAgICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSBgYCd3J2BgIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmIGl0Ci0gICBhbHJlYWR5IGV4aXN0cyksIGFuZCBgYCdhJ2BgIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uICpzb21lKiBVbml4IHN5c3RlbXMsCi0gICBtZWFucyB0aGF0ICphbGwqIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZQotICAgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gIEluIHRleHQgbW9kZSwgaWYgKmVuY29kaW5nKiBpcyBub3Qgc3BlY2lmaWVkIHRoZQotICAgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlCi0gICBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgKmVuY29kaW5nKiB1bnNwZWNpZmllZC4pICBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZToKKyAgIGFscmVhZHkgZXhpc3RzKSwgYGAneCdgYCBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uIGFuZCBgYCdhJ2BgIGZvciBhcHBlbmRpbmcKKyAgICh3aGljaCBvbiAqc29tZSogVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0ICphbGwqIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZgorICAgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gIEluIHRleHQgbW9kZSwgaWYKKyAgICplbmNvZGluZyogaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQ6CisgICBgYGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSlgYCBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBjdXJyZW50IGxvY2FsZQorICAgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZQorICAgKmVuY29kaW5nKiB1bnNwZWNpZmllZC4pICBUaGUgYXZhaWxhYmxlIG1vZGVzIGFyZToKIAogICAgPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgQ2hhcmFjdGVyIE1lYW5pbmcKICAgIC0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGBgJ3InYGAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KQogICAgYGAndydgYCAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3QKKyAgIGBgJ3gnYGAgICBvcGVuIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIGZhaWxpbmcgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMKICAgIGBgJ2EnYGAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHMKICAgIGBgJ2InYGAgICBiaW5hcnkgbW9kZQogICAgYGAndCdgYCAgIHRleHQgbW9kZSAoZGVmYXVsdCkKQEAgLTkxOCw2ICs5MTksMTYgQEAKICAgIGNsb3NlZC4gIElmIGEgZmlsZW5hbWUgaXMgZ2l2ZW4gKmNsb3NlZmQqIGhhcyBubyBlZmZlY3QgYW5kIG11c3QgYmUgYGBUcnVlYGAKICAgICh0aGUgZGVmYXVsdCkuCiAKKyAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aAorICAgKCpmaWxlKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nCisgICA6bW9kOmBvcy5vcGVuYCBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nCisgICBgYE5vbmVgYCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKyAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorCiAgICBUaGUgdHlwZSBvZiA6dGVybTpgZmlsZSBvYmplY3RgIHJldHVybmVkIGJ5IHRoZSA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24KICAgIGRlcGVuZHMgb24gdGhlIG1vZGUuICBXaGVuIDpmdW5jOmBvcGVuYCBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dAogICAgbW9kZSAoYGAndydgYCwgYGAncidgYCwgYGAnd3QnYGAsIGBgJ3J0J2BgLCBldGMuKSwgaXQgcmV0dXJucyBhIHN1YmNsYXNzIG9mCkBAIC05NDMsNiArOTU0LDExIEBACiAgICAod2hlcmUgOmZ1bmM6YG9wZW5gIGlzIGRlY2xhcmVkKSwgOm1vZDpgb3NgLCA6bW9kOmBvcy5wYXRoYCwgOm1vZDpgdGVtcGZpbGVgLAogICAgYW5kIDptb2Q6YHNodXRpbGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorICAgICAgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIHRoZSBmaWxlIG9wZW5lZCBpbiBleGNsdXNpdmUKKyAgICAgIGNyZWF0aW9uIG1vZGUgKGBgJ3gnYGApIGFscmVhZHkgZXhpc3RzLgorCiAKIC4uIFhYWCB3b3JrcyBmb3IgYnl0ZXMgdG9vLCBidXQgc2hvdWxkIGl0PwogLi4gZnVuY3Rpb246OiBvcmQoYykKQEAgLTk1Miw5ICs5NjgsNiBAQAogICAgcG9pbnQgb2YgdGhhdCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBvcmQoJ2EnKWBgIHJldHVybnMgdGhlIGludGVnZXIgYGA5N2BgCiAgICBhbmQgYGBvcmQoJ1x1MjAyMCcpYGAgcmV0dXJucyBgYDgyMjRgYC4gIFRoaXMgaXMgdGhlIGludmVyc2Ugb2YgOmZ1bmM6YGNocmAuCiAKLSAgIE9uIHdpZGUgVW5pY29kZSBidWlsZHMsIGlmIHRoZSBhcmd1bWVudCBsZW5ndGggaXMgbm90IG9uZSwgYQotICAgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4gIE9uIG5hcnJvdyBVbmljb2RlIGJ1aWxkcywgc3RyaW5ncwotICAgb2YgbGVuZ3RoIHR3byBhcmUgYWNjZXB0ZWQgd2hlbiB0aGV5IGZvcm0gYSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIuCiAKIC4uIGZ1bmN0aW9uOjogcG93KHgsIHlbLCB6XSkKIApAQCAtOTcyLDcgKzk4NSw3IEBACiAgICBtdXN0IGJlIG9mIGludGVnZXIgdHlwZXMsIGFuZCAqeSogbXVzdCBiZSBub24tbmVnYXRpdmUuCiAKIAotLi4gZnVuY3Rpb246OiBwcmludCgqb2JqZWN0cywgc2VwPScgJywgZW5kPSdcXG4nLCBmaWxlPXN5cy5zdGRvdXQpCisuLiBmdW5jdGlvbjo6IHByaW50KCpvYmplY3RzLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCwgZmx1c2g9RmFsc2UpCiAKICAgIFByaW50ICpvYmplY3RzKiB0byB0aGUgc3RyZWFtICpmaWxlKiwgc2VwYXJhdGVkIGJ5ICpzZXAqIGFuZCBmb2xsb3dlZCBieQogICAgKmVuZCouICAqc2VwKiwgKmVuZCogYW5kICpmaWxlKiwgaWYgcHJlc2VudCwgbXVzdCBiZSBnaXZlbiBhcyBrZXl3b3JkCkBAIC05ODUsOSArOTk4LDEyIEBACiAgICAqZW5kKi4KIAogICAgVGhlICpmaWxlKiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGEgYGB3cml0ZShzdHJpbmcpYGAgbWV0aG9kOyBpZiBpdAotICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuIE91dHB1dCBidWZmZXJpbmcKLSAgIGlzIGRldGVybWluZWQgYnkgKmZpbGUqLiBVc2UgYGBmaWxlLmZsdXNoKClgYCB0byBlbnN1cmUsIGZvciBpbnN0YW5jZSwKLSAgIGltbWVkaWF0ZSBhcHBlYXJhbmNlIG9uIGEgc2NyZWVuLgorICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuICBXaGV0aGVyIG91dHB1dAorICAgaXMgYnVmZmVyZWQgaXMgdXN1YWxseSBkZXRlcm1pbmVkIGJ5ICpmaWxlKiwgYnV0IGlmIHRoZSAgKmZsdXNoKiBrZXl3b3JkCisgICBhcmd1bWVudCBpcyB0cnVlLCB0aGUgc3RyZWFtIGlzIGZvcmNpYmx5IGZsdXNoZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmZsdXNoKiBrZXl3b3JkIGFyZ3VtZW50LgogCiAKIC4uIGZ1bmN0aW9uOjogcHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCkBAIC0xMDU5LDYzICsxMDc1LDEzIEBACiAgICBgYGZkZWxgYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCiAKIAotLi4gWFhYIGRvZXMgYWNjZXB0IG9iamVjdHMgd2l0aCBfX2luZGV4X18gdG9vCisuLiBfZnVuYy1yYW5nZToKIC4uIGZ1bmN0aW9uOjogcmFuZ2Uoc3RvcCkKICAgICAgICAgICAgICAgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkKKyAgIDpub2luZGV4OgogCi0gICBUaGlzIGlzIGEgdmVyc2F0aWxlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBpdGVyYWJsZXMgeWllbGRpbmcgYXJpdGhtZXRpYwotICAgcHJvZ3Jlc3Npb25zLiAgSXQgaXMgbW9zdCBvZnRlbiB1c2VkIGluIDprZXl3b3JkOmBmb3JgIGxvb3BzLiAgVGhlIGFyZ3VtZW50cwotICAgbXVzdCBiZSBpbnRlZ2Vycy4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAxYGAuCi0gICBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4gIFRoZSBmdWxsIGZvcm0KLSAgIHJldHVybnMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgYGBbc3RhcnQsIHN0YXJ0ICsgc3RlcCwgc3RhcnQgKyAyICogc3RlcCwKLSAgIC4uLl1gYC4gIElmICpzdGVwKiBpcyBwb3NpdGl2ZSwgdGhlIGxhc3QgZWxlbWVudCBpcyB0aGUgbGFyZ2VzdCBgYHN0YXJ0ICsgaSAqCi0gICBzdGVwYGAgbGVzcyB0aGFuICpzdG9wKjsgaWYgKnN0ZXAqIGlzIG5lZ2F0aXZlLCB0aGUgbGFzdCBlbGVtZW50IGlzIHRoZQotICAgc21hbGxlc3QgYGBzdGFydCArIGkgKiBzdGVwYGAgZ3JlYXRlciB0aGFuICpzdG9wKi4gICpzdGVwKiBtdXN0IG5vdCBiZSB6ZXJvCi0gICAob3IgZWxzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQpLiAgRXhhbXBsZToKLQotICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQotICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCi0gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCi0gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCi0gICAgICBbMCwgMywgNiwgOV0KLSAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQotICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKLSAgICAgIFtdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKLSAgICAgIFtdCi0KLSAgIFJhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCi0gICBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKLSAgIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgotCi0gICAgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IHIKLSAgICAgIHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IDExIGluIHIKLSAgICAgIEZhbHNlCi0gICAgICA+Pj4gMTAgaW4gcgotICAgICAgVHJ1ZQotICAgICAgPj4+IHIuaW5kZXgoMTApCi0gICAgICA1Ci0gICAgICA+Pj4gcls1XQotICAgICAgMTAKLSAgICAgID4+PiByWzo1XQotICAgICAgcmFuZ2UoMCwgMTAsIDIpCi0gICAgICA+Pj4gclstMV0KLSAgICAgIDE4Ci0KLSAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiA6ZGF0YTpgc3lzLm1heHNpemVgIGFyZSBwZXJtaXR0ZWQKLSAgIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIDpmdW5jOmBsZW5gKSB3aWxsIHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuCi0gICAgICBTdXBwb3J0IHNsaWNpbmcgYW5kIG5lZ2F0aXZlIGluZGljZXMuCi0gICAgICBUZXN0IGludGVnZXJzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50IHRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcKLSAgICAgIHRocm91Z2ggYWxsIGl0ZW1zLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmByYW5nZWAgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxYC4KIAogCiAuLiBmdW5jdGlvbjo6IHJlcHIob2JqZWN0KQpAQCAtMTIzNiw2ICsxMjAyLDcgQEAKICAgIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5IGluIDpyZWY6YHR5cGVzYC4KIAogCisuLiBfZnVuYy1zdHI6CiAuLiBmdW5jdGlvbjo6IHN0cihbb2JqZWN0WywgZW5jb2RpbmdbLCBlcnJvcnNdXV0pCiAKICAgIFJldHVybiBhIHN0cmluZyB2ZXJzaW9uIG9mIGFuIG9iamVjdCwgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgbW9kZXM6CkBAIC0xMzI1LDI2ICsxMjkyLDI0IEBACiAgICBBY2NvcmRpbmdseSwgOmZ1bmM6YHN1cGVyYCBpcyB1bmRlZmluZWQgZm9yIGltcGxpY2l0IGxvb2t1cHMgdXNpbmcgc3RhdGVtZW50cyBvcgogICAgb3BlcmF0b3JzIHN1Y2ggYXMgYGBzdXBlcigpW25hbWVdYGAuCiAKLSAgIEFsc28gbm90ZSB0aGF0IDpmdW5jOmBzdXBlcmAgaXMgbm90IGxpbWl0ZWQgdG8gdXNlIGluc2lkZSBtZXRob2RzLiAgVGhlIHR3bwotICAgYXJndW1lbnQgZm9ybSBzcGVjaWZpZXMgdGhlIGFyZ3VtZW50cyBleGFjdGx5IGFuZCBtYWtlcyB0aGUgYXBwcm9wcmlhdGUKLSAgIHJlZmVyZW5jZXMuICBUaGUgemVybyBhcmd1bWVudCBmb3JtIGF1dG9tYXRpY2FsbHkgc2VhcmNoZXMgdGhlIHN0YWNrIGZyYW1lCi0gICBmb3IgdGhlIGNsYXNzIChgYF9fY2xhc3NfX2BgKSBhbmQgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgQWxzbyBub3RlIHRoYXQsIGFzaWRlIGZyb20gdGhlIHplcm8gYXJndW1lbnQgZm9ybSwgOmZ1bmM6YHN1cGVyYCBpcyBub3QKKyAgIGxpbWl0ZWQgdG8gdXNlIGluc2lkZSBtZXRob2RzLiAgVGhlIHR3byBhcmd1bWVudCBmb3JtIHNwZWNpZmllcyB0aGUKKyAgIGFyZ3VtZW50cyBleGFjdGx5IGFuZCBtYWtlcyB0aGUgYXBwcm9wcmlhdGUgcmVmZXJlbmNlcy4gIFRoZSB6ZXJvCisgICBhcmd1bWVudCBmb3JtIG9ubHkgd29ya3MgaW5zaWRlIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXMgdGhlIGNvbXBpbGVyIGZpbGxzCisgICBpbiB0aGUgbmVjZXNzYXJ5IGRldGFpbHMgdG8gY29ycmVjdGx5IHJldHJpZXZlIHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkLAorICAgYXMgd2VsbCBhcyBhY2Nlc3NpbmcgdGhlIGN1cnJlbnQgaW5zdGFuY2UgZm9yIG9yZGluYXJ5IG1ldGhvZHMuCiAKICAgIEZvciBwcmFjdGljYWwgc3VnZ2VzdGlvbnMgb24gaG93IHRvIGRlc2lnbiBjb29wZXJhdGl2ZSBjbGFzc2VzIHVzaW5nCiAgICA6ZnVuYzpgc3VwZXJgLCBzZWUgYGd1aWRlIHRvIHVzaW5nIHN1cGVyKCkKICAgIDxodHRwOi8vcmhldHRpbmdlci53b3JkcHJlc3MuY29tLzIwMTEvMDUvMjYvc3VwZXItY29uc2lkZXJlZC1zdXBlci8+YF8uCiAKIAorLi4gX2Z1bmMtdHVwbGU6CiAuLiBmdW5jdGlvbjo6IHR1cGxlKFtpdGVyYWJsZV0pCisgICA6bm9pbmRleDoKIAotICAgUmV0dXJuIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiB0aGUgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MKLSAgIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuCi0gICBpdGVyYXRvciBvYmplY3QuIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCi0gICBGb3IgaW5zdGFuY2UsIGBgdHVwbGUoJ2FiYycpYGAgcmV0dXJucyBgYCgnYScsICdiJywgJ2MnKWBgIGFuZCBgYHR1cGxlKFsxLCAyLAotICAgM10pYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLiAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBuZXcgZW1wdHkKLSAgIHR1cGxlLCBgYCgpYGAuCi0KLSAgIDpjbGFzczpgdHVwbGVgIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxYC4KKyAgIFJhdGhlciB0aGFuIGJlaW5nIGEgZnVuY3Rpb24sIDpjbGFzczpgdHVwbGVgIGlzIGFjdHVhbGx5IGFuIGltbXV0YWJsZQorICAgc2VxdWVuY2UgdHlwZSwgYXMgZG9jdW1lbnRlZCBpbiA6cmVmOmB0eXBlc3NlcWAuCiAKIAogLi4gZnVuY3Rpb246OiB0eXBlKG9iamVjdCkKQEAgLTE0MzMsNyArMTM5OCw3IEBACiAgICAgICBUcnVlCiAKIAotLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9W10sIGxldmVsPS0xKQorLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzdGF0ZW1lbnQ6IGltcG9ydApAQCAtMTQ0OCw4ICsxNDEzLDkgQEAKICAgIHJlcGxhY2VkIChieSBpbXBvcnRpbmcgdGhlIDptb2Q6YGJ1aWx0aW5zYCBtb2R1bGUgYW5kIGFzc2lnbmluZyB0bwogICAgYGBidWlsdGlucy5fX2ltcG9ydF9fYGApIGluIG9yZGVyIHRvIGNoYW5nZSBzZW1hbnRpY3Mgb2YgdGhlCiAgICA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIGJ1dCBub3dhZGF5cyBpdCBpcyB1c3VhbGx5IHNpbXBsZXIgdG8gdXNlIGltcG9ydAotICAgaG9va3MgKHNlZSA6cGVwOmAzMDJgKS4gIERpcmVjdCB1c2Ugb2YgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHJhcmUsIGV4Y2VwdCBpbgotICAgY2FzZXMgd2hlcmUgeW91IHdhbnQgdG8gaW1wb3J0IGEgbW9kdWxlIHdob3NlIG5hbWUgaXMgb25seSBrbm93biBhdCBydW50aW1lLgorICAgaG9va3MgKHNlZSA6cGVwOmAzMDJgKSB0byBhdHRhaW4gdGhlIHNhbWUgZ29hbHMuICBEaXJlY3QgdXNlIG9mCisgICA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgZW50aXJlbHkgZGlzY291cmFnZWQgaW4gZmF2b3Igb2YKKyAgIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAuCiAKICAgIFRoZSBmdW5jdGlvbiBpbXBvcnRzIHRoZSBtb2R1bGUgKm5hbWUqLCBwb3RlbnRpYWxseSB1c2luZyB0aGUgZ2l2ZW4gKmdsb2JhbHMqCiAgICBhbmQgKmxvY2FscyogdG8gZGV0ZXJtaW5lIGhvdyB0byBpbnRlcnByZXQgdGhlIG5hbWUgaW4gYSBwYWNrYWdlIGNvbnRleHQuCkBAIC0xNDU4LDEzICsxNDI0LDExIEBACiAgICBub3QgdXNlIGl0cyAqbG9jYWxzKiBhcmd1bWVudCBhdCBhbGwsIGFuZCB1c2VzIGl0cyAqZ2xvYmFscyogb25seSB0bwogICAgZGV0ZXJtaW5lIHRoZSBwYWNrYWdlIGNvbnRleHQgb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KIAotICAgKmxldmVsKiBzcGVjaWZpZXMgd2hldGhlciB0byB1c2UgYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gYGAwYGAKLSAgIG1lYW5zIG9ubHkgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzLiBQb3NpdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCogaW5kaWNhdGUgdGhlCi0gICBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZQotICAgbW9kdWxlIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gLiAgTmVnYXRpdmUgdmFsdWVzIGF0dGVtcHQgYm90aCBhbiBpbXBsaWNpdAotICAgcmVsYXRpdmUgaW1wb3J0IGFuZCBhbiBhYnNvbHV0ZSBpbXBvcnQgKHVzYWdlIG9mIG5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKgotICAgYXJlIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFzIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gZG8gbm90IHN1cHBvcnQgc3VjaAotICAgdmFsdWVzKS4gSW1wb3J0IHN0YXRlbWVudHMgb25seSB1c2UgdmFsdWVzIG9mIDAgb3IgZ3JlYXRlci4KKyAgICpsZXZlbCogc3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuIGBgMGBgICh0aGUKKyAgIGRlZmF1bHQpIG1lYW5zIG9ubHkgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzLiAgUG9zaXRpdmUgdmFsdWVzIGZvcgorICAgKmxldmVsKiBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlCisgICBkaXJlY3Rvcnkgb2YgdGhlIG1vZHVsZSBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYCAoc2VlIDpwZXA6YDMyOGAgZm9yIHRoZQorICAgZGV0YWlscykuCiAKICAgIFdoZW4gdGhlICpuYW1lKiB2YXJpYWJsZSBpcyBvZiB0aGUgZm9ybSBgYHBhY2thZ2UubW9kdWxlYGAsIG5vcm1hbGx5LCB0aGUKICAgIHRvcC1sZXZlbCBwYWNrYWdlICh0aGUgbmFtZSB1cCB0aWxsIHRoZSBmaXJzdCBkb3QpIGlzIHJldHVybmVkLCAqbm90KiB0aGUKQEAgLTE0OTcsNiArMTQ2MSwxMCBAQAogICAgSWYgeW91IHNpbXBseSB3YW50IHRvIGltcG9ydCBhIG1vZHVsZSAocG90ZW50aWFsbHkgd2l0aGluIGEgcGFja2FnZSkgYnkgbmFtZSwKICAgIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTmVnYXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkICh3aGljaCBhbHNvIGNoYW5nZXMKKyAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIHRvIDApLgorCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdAppbmRleCAwNDc0M2QzLi5mNWM2NjA4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGRlY29yYXRvcjo6IGxydV9jYWNoZShtYXhzaXplPTEwMCkKKy4uIGRlY29yYXRvcjo6IGxydV9jYWNoZShtYXhzaXplPTEyOCwgdHlwZWQ9RmFsc2UpCiAKICAgIERlY29yYXRvciB0byB3cmFwIGEgZnVuY3Rpb24gd2l0aCBhIG1lbW9pemluZyBjYWxsYWJsZSB0aGF0IHNhdmVzIHVwIHRvIHRoZQogICAgKm1heHNpemUqIG1vc3QgcmVjZW50IGNhbGxzLiAgSXQgY2FuIHNhdmUgdGltZSB3aGVuIGFuIGV4cGVuc2l2ZSBvciBJL08gYm91bmQKQEAgLTQ5LDggKzQ5LDEzIEBACiAgICBTaW5jZSBhIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBjYWNoZSByZXN1bHRzLCB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZAogICAgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBtdXN0IGJlIGhhc2hhYmxlLgogCi0gICBJZiAqbWF4c2l6ZSogaXMgc2V0IHRvIE5vbmUsIHRoZSBMUlUgZmVhdHVyZSBpcyBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlCi0gICBjYW4gZ3JvdyB3aXRob3V0IGJvdW5kLgorICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmUgaXMgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZSBjYW4KKyAgIGdyb3cgd2l0aG91dCBib3VuZC4gIFRoZSBMUlUgZmVhdHVyZSBwZXJmb3JtcyBiZXN0IHdoZW4gKm1heHNpemUqIGlzIGEKKyAgIHBvd2VyLW9mLXR3by4KKworICAgSWYgKnR5cGVkKiBpcyBzZXQgdG8gVHJ1ZSwgZnVuY3Rpb24gYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcyB3aWxsIGJlCisgICBjYWNoZWQgc2VwYXJhdGVseS4gIEZvciBleGFtcGxlLCBgYGYoMylgYCBhbmQgYGBmKDMuMClgYCB3aWxsIGJlIHRyZWF0ZWQKKyAgIGFzIGRpc3RpbmN0IGNhbGxzIHdpdGggZGlzdGluY3QgcmVzdWx0cy4KIAogICAgVG8gaGVscCBtZWFzdXJlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBjYWNoZSBhbmQgdHVuZSB0aGUgKm1heHNpemUqCiAgICBwYXJhbWV0ZXIsIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIGlzIGluc3RydW1lbnRlZCB3aXRoIGEgOmZ1bmM6YGNhY2hlX2luZm9gCkBAIC02Nyw4ICs3Miw4IEBACiAKICAgIEFuIGBMUlUgKGxlYXN0IHJlY2VudGx5IHVzZWQpIGNhY2hlCiAgICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWNoZV9hbGdvcml0aG1zI0xlYXN0X1JlY2VudGx5X1VzZWQ+YF8gd29ya3MKLSAgIGJlc3Qgd2hlbiBtb3JlIHJlY2VudCBjYWxscyBhcmUgdGhlIGJlc3QgcHJlZGljdG9ycyBvZiB1cGNvbWluZyBjYWxscyAoZm9yCi0gICBleGFtcGxlLCB0aGUgbW9zdCBwb3B1bGFyIGFydGljbGVzIG9uIGEgbmV3cyBzZXJ2ZXIgdGVuZCB0byBjaGFuZ2UgZGFpbHkpLgorICAgYmVzdCB3aGVuIHRoZSBtb3N0IHJlY2VudCBjYWxscyBhcmUgdGhlIGJlc3QgcHJlZGljdG9ycyBvZiB1cGNvbWluZyBjYWxscyAoZm9yCisgICBleGFtcGxlLCB0aGUgbW9zdCBwb3B1bGFyIGFydGljbGVzIG9uIGEgbmV3cyBzZXJ2ZXIgdGVuZCB0byBjaGFuZ2UgZWFjaCBkYXkpLgogICAgVGhlIGNhY2hlJ3Mgc2l6ZSBsaW1pdCBhc3N1cmVzIHRoYXQgdGhlIGNhY2hlIGRvZXMgbm90IGdyb3cgd2l0aG91dCBib3VuZCBvbgogICAgbG9uZy1ydW5uaW5nIHByb2Nlc3NlcyBzdWNoIGFzIHdlYiBzZXJ2ZXJzLgogCkBAIC0xMTEsNiArMTE2LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnR5cGVkKiBvcHRpb24uCisKIC4uIGRlY29yYXRvcjo6IHRvdGFsX29yZGVyaW5nCiAKICAgIEdpdmVuIGEgY2xhc3MgZGVmaW5pbmcgb25lIG9yIG1vcmUgcmljaCBjb21wYXJpc29uIG9yZGVyaW5nIG1ldGhvZHMsIHRoaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2djLnJzdCBiL0RvYy9saWJyYXJ5L2djLnJzdAppbmRleCAwMjgxYmI3Li40MWJkYTFlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2MucnN0CkBAIC0xNTMsOCArMTUzLDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLVRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgcHJvdmlkZWQgZm9yIHJlYWQtb25seSBhY2Nlc3MgKHlvdSBjYW4gbXV0YXRlIGl0cwotdmFsdWUgYnV0IHNob3VsZCBub3QgcmViaW5kIGl0KToKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBwcm92aWRlZCBmb3IgcmVhZC1vbmx5IGFjY2VzcyAoeW91IGNhbiBtdXRhdGUgdGhlCit2YWx1ZXMgYnV0IHNob3VsZCBub3QgcmViaW5kIHRoZW0pOgogCiAuLiBkYXRhOjogZ2FyYmFnZQogCkBAIC0xODMsNiArMTgzLDQxIEBACiAgICAgICA6Y29uc3Q6YERFQlVHX1VOQ09MTEVDVEFCTEVgIGlzIHNldCwgaW4gYWRkaXRpb24gYWxsIHVuY29sbGVjdGFibGUgb2JqZWN0cwogICAgICAgYXJlIHByaW50ZWQuCiAKKy4uIGRhdGE6OiBjYWxsYmFja3MKKworICAgQSBsaXN0IG9mIGNhbGxiYWNrcyB0aGF0IHdpbGwgYmUgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgYmVmb3JlIGFuZAorICAgYWZ0ZXIgY29sbGVjdGlvbi4gIFRoZSBjYWxsYmFja3Mgd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLAorICAgKnBoYXNlKiBhbmQgKmluZm8qLgorCisgICAqcGhhc2UqIGNhbiBiZSBvbmUgb2YgdHdvIHZhbHVlczoKKworICAgICAgInN0YXJ0IjogVGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBhYm91dCB0byBzdGFydC4KKworICAgICAgInN0b3AiOiBUaGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcyBmaW5pc2hlZC4KKworICAgKmluZm8qIGlzIGEgZGljdCBwcm92aWRpbmcgbW9yZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNhbGxiYWNrLiAgVGhlIGZvbGxvd2luZworICAga2V5cyBhcmUgY3VycmVudGx5IGRlZmluZWQ6CisKKyAgICAgICJnZW5lcmF0aW9uIjogVGhlIG9sZGVzdCBnZW5lcmF0aW9uIGJlaW5nIGNvbGxlY3RlZC4KKworICAgICAgImNvbGxlY3RlZCI6IFdoZW4gKnBoYXNlKiBpcyAic3RvcCIsIHRoZSBudW1iZXIgb2Ygb2JqZWN0cworICAgICAgc3VjY2Vzc2Z1bGx5IGNvbGxlY3RlZC4KKworICAgICAgInVuY29sbGVjdGFibGUiOiBXaGVuICpwaGFzZSogaXMgInN0b3AiLCB0aGUgbnVtYmVyIG9mIG9iamVjdHMKKyAgICAgIHRoYXQgY291bGQgbm90IGJlIGNvbGxlY3RlZCBhbmQgd2VyZSBwdXQgaW4gOmRhdGE6YGdhcmJhZ2VgLgorCisgICBBcHBsaWNhdGlvbnMgY2FuIGFkZCB0aGVpciBvd24gY2FsbGJhY2tzIHRvIHRoaXMgbGlzdC4gIFRoZSBwcmltYXJ5CisgICB1c2UgY2FzZXMgYXJlOgorCisgICAgICBHYXRoZXJpbmcgc3RhdGlzdGljcyBhYm91dCBnYXJiYWdlIGNvbGxlY3Rpb24sIHN1Y2ggYXMgaG93IG9mdGVuCisgICAgICB2YXJpb3VzIGdlbmVyYXRpb25zIGFyZSBjb2xsZWN0ZWQsIGFuZCBob3cgbG9uZyB0aGUgY29sbGVjdGlvbgorICAgICAgdGFrZXMuCisKKyAgICAgIEFsbG93aW5nIGFwcGxpY2F0aW9ucyB0byBpZGVudGlmeSBhbmQgY2xlYXIgdGhlaXIgb3duIHVuY29sbGVjdGFibGUKKyAgICAgIHR5cGVzIHdoZW4gdGhleSBhcHBlYXIgaW4gOmRhdGE6YGdhcmJhZ2VgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgcHJvdmlkZWQgZm9yIHVzZSB3aXRoIDpmdW5jOmBzZXRfZGVidWdgOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CmluZGV4IDBmYTAyMmMuLjgyNTMxMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CkBAIC0xODUsMTAgKzE4NSwxMyBAQAogICAgdHJhbnNsYXRpb24gb2JqZWN0IGZyb20gdGhlIGNhY2hlOyB0aGUgYWN0dWFsIGluc3RhbmNlIGRhdGEgaXMgc3RpbGwgc2hhcmVkIHdpdGgKICAgIHRoZSBjYWNoZS4KIAotICAgSWYgbm8gOmZpbGU6YC5tb2AgZmlsZSBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYKKyAgIElmIG5vIDpmaWxlOmAubW9gIGZpbGUgaXMgZm91bmQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmCiAgICAqZmFsbGJhY2sqIGlzIGZhbHNlICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIGFuZCByZXR1cm5zIGEKICAgIDpjbGFzczpgTnVsbFRyYW5zbGF0aW9uc2AgaW5zdGFuY2UgaWYgKmZhbGxiYWNrKiBpcyB0cnVlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IGluc3RhbGwoZG9tYWluLCBsb2NhbGVkaXI9Tm9uZSwgY29kZXNldD1Ob25lLCBuYW1lcz1Ob25lKQogCkBAIC0zNDIsNyArMzQ1LDcgQEAKIAogSWYgdGhlIDpmaWxlOmAubW9gIGZpbGUncyBtYWdpYyBudW1iZXIgaXMgaW52YWxpZCwgb3IgaWYgb3RoZXIgcHJvYmxlbXMgb2NjdXIKIHdoaWxlIHJlYWRpbmcgdGhlIGZpbGUsIGluc3RhbnRpYXRpbmcgYSA6Y2xhc3M6YEdOVVRyYW5zbGF0aW9uc2AgY2xhc3MgY2FuIHJhaXNlCi06ZXhjOmBJT0Vycm9yYC4KKzpleGM6YE9TRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gZnJvbSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QgYi9Eb2MvbGlicmFyeS9nemlwLnJzdAppbmRleCA5NDIyZWE5Li41MGQwNDYyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nemlwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nemlwLnJzdApAQCAtMTMsOSArMTMsMTEgQEAKIAogVGhlIGRhdGEgY29tcHJlc3Npb24gaXMgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHpsaWJgIG1vZHVsZS4KIAotVGhlIDptb2Q6YGd6aXBgIG1vZHVsZSBwcm92aWRlcyB0aGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MuIFRoZSA6Y2xhc3M6YEd6aXBGaWxlYAotY2xhc3MgcmVhZHMgYW5kIHdyaXRlcyA6cHJvZ3JhbTpgZ3ppcGBcIC1mb3JtYXQgZmlsZXMsIGF1dG9tYXRpY2FsbHkgY29tcHJlc3NpbmcKLW9yIGRlY29tcHJlc3NpbmcgdGhlIGRhdGEgc28gdGhhdCBpdCBsb29rcyBsaWtlIGFuIG9yZGluYXJ5IDp0ZXJtOmBmaWxlIG9iamVjdGAuCitUaGUgOm1vZDpgZ3ppcGAgbW9kdWxlIHByb3ZpZGVzIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcywgYXMgd2VsbCBhcyB0aGUKKzpmdW5jOmAub3BlbmAsIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBjb252ZW5pZW5jZSBmdW5jdGlvbnMuCitUaGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MgcmVhZHMgYW5kIHdyaXRlcyA6cHJvZ3JhbTpgZ3ppcGBcIC1mb3JtYXQgZmlsZXMsCithdXRvbWF0aWNhbGx5IGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgdGhlIGRhdGEgc28gdGhhdCBpdCBsb29rcyBsaWtlIGFuCitvcmRpbmFyeSA6dGVybTpgZmlsZSBvYmplY3RgLgogCiBOb3RlIHRoYXQgYWRkaXRpb25hbCBmaWxlIGZvcm1hdHMgd2hpY2ggY2FuIGJlIGRlY29tcHJlc3NlZCBieSB0aGUKIDpwcm9ncmFtOmBnemlwYCBhbmQgOnByb2dyYW06YGd1bnppcGAgcHJvZ3JhbXMsIHN1Y2ggIGFzIHRob3NlIHByb2R1Y2VkIGJ5CkBAIC0yNCw2ICsyNiwzNCBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CiAKIAorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGVuYW1lLCBtb2RlPSdyYicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGd6aXAtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvcgorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ2EnYGAsIGBgJ2FiJ2BgLAorICAgYGAndydgYCwgb3IgYGAnd2InYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnYXQnYGAsIG9yIGBgJ3d0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEd6aXBGaWxlYCBjb25zdHJ1Y3Rvci4KKworICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIDpjbGFzczpgR3ppcEZpbGVgCisgICBjb25zdHJ1Y3RvcjogYGBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbClgYC4gSW4gdGhpcyBjYXNlLCB0aGUKKyAgICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgR3ppcEZpbGVgIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCisgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIGZpbGUgb2JqZWN0LCBzdXBwb3J0IGZvciB0ZXh0IG1vZGUsCisgICAgICBhbmQgdGhlICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzLgorCisKIC4uIGNsYXNzOjogR3ppcEZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLCBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSkKIAogICAgQ29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcywgd2hpY2ggc2ltdWxhdGVzIG1vc3Qgb2YgdGhlCkBAIC00Niw5ICs3Niw5IEBACiAgICBvciBgYCd3YidgYCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZpbGUgd2lsbCBiZSByZWFkIG9yIHdyaXR0ZW4uICBUaGUgZGVmYXVsdAogICAgaXMgdGhlIG1vZGUgb2YgKmZpbGVvYmoqIGlmIGRpc2Nlcm5pYmxlOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIGBgJ3JiJ2BgLgogCi0gICBOb3RlIHRoYXQgdGhlIGZpbGUgaXMgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZTsgdGV4dCBtb2RlIGlzIG5vdAotICAgc3VwcG9ydGVkLiBJZiB5b3UgbmVlZCB0byByZWFkIGEgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgd3JhcCB5b3VyCi0gICA6Y2xhc3M6YEd6aXBGaWxlYCB3aXRoIGFuIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAuCisgICBOb3RlIHRoYXQgdGhlIGZpbGUgaXMgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gVG8gb3BlbiBhIGNvbXByZXNzZWQgZmlsZQorICAgaW4gdGV4dCBtb2RlLCB1c2UgOmZ1bmM6YC5vcGVuYCAob3Igd3JhcCB5b3VyIDpjbGFzczpgR3ppcEZpbGVgIHdpdGggYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmApLgogCiAgICBUaGUgKmNvbXByZXNzbGV2ZWwqIGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYCBjb250cm9sbGluZyB0aGUKICAgIGxldmVsIG9mIGNvbXByZXNzaW9uOyBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIGFuZApAQCAtNzEsNyArMTAxLDcgQEAKIAogICAgOmNsYXNzOmBHemlwRmlsZWAgc3VwcG9ydHMgdGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGludGVyZmFjZSwKICAgIGluY2x1ZGluZyBpdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgT25seSB0aGUKLSAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kcyBhcmVuJ3QgaW1wbGVtZW50ZWQuCisgICA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAogICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKIApAQCAtOTMsMTIgKzEyMyw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdW5zZWVrYWJsZSBmaWxlcyB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWQxYCBtZXRob2QgaXMgbm93IGltcGxlbWVudGVkLgogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3JiJywgY29tcHJlc3NsZXZlbD05KQotCi0gICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYEd6aXBGaWxlKGZpbGVuYW1lLGBgIGBgbW9kZSxgYCBgYGNvbXByZXNzbGV2ZWwpYGAuCi0gICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBpcyByZXF1aXJlZDsgKm1vZGUqIGRlZmF1bHRzIHRvIGBgJ3JiJ2BgIGFuZAotICAgKmNvbXByZXNzbGV2ZWwqIGRlZmF1bHRzIHRvIGBgOWBgLgogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaG1hYy5yc3QgYi9Eb2MvbGlicmFyeS9obWFjLnJzdAppbmRleCBlZmYyNzI0Li4wNzA2ZmY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9obWFjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9obWFjLnJzdApAQCAtMzgsNiArMzgsMTMgQEAKICAgIGdpdmVuIHRvIHRoZSBjb25zdHJ1Y3Rvci4gIEl0IG1heSBjb250YWluIG5vbi1BU0NJSSBieXRlcywgaW5jbHVkaW5nIE5VTAogICAgYnl0ZXMuCiAKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBXaGVuIGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIDptZXRoOmBkaWdlc3RgIHRvIGFuIGV4dGVybmFsbHktc3VwcGxpZWQKKyAgICAgIGRpZ2VzdCBkdXJpbmcgYSB2ZXJpZmljYXRpb24gcm91dGluZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQorICAgICAgOmZ1bmM6YGNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBgYD09YGAgb3BlcmF0b3IKKyAgICAgIHRvIHJlZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSB0byB0aW1pbmcgYXR0YWNrcy4KKwogCiAuLiBtZXRob2Q6OiBITUFDLmhleGRpZ2VzdCgpCiAKQEAgLTQ1LDYgKzUyLDEzIEBACiAgICBsZW5ndGggY29udGFpbmluZyBvbmx5IGhleGFkZWNpbWFsIGRpZ2l0cy4gIFRoaXMgbWF5IGJlIHVzZWQgdG8gZXhjaGFuZ2UgdGhlCiAgICB2YWx1ZSBzYWZlbHkgaW4gZW1haWwgb3Igb3RoZXIgbm9uLWJpbmFyeSBlbnZpcm9ubWVudHMuCiAKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBXaGVuIGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIDptZXRoOmBoZXhkaWdlc3RgIHRvIGFuIGV4dGVybmFsbHktc3VwcGxpZWQKKyAgICAgIGRpZ2VzdCBkdXJpbmcgYSB2ZXJpZmljYXRpb24gcm91dGluZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQorICAgICAgOmZ1bmM6YGNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBgYD09YGAgb3BlcmF0b3IKKyAgICAgIHRvIHJlZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSB0byB0aW1pbmcgYXR0YWNrcy4KKwogCiAuLiBtZXRob2Q6OiBITUFDLmNvcHkoKQogCkBAIC01Miw2ICs2NiwyNyBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBzdHJpbmdzIHRoYXQgc2hhcmUgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorVGhpcyBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbjoKKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBhID09IGJgYC4gIFRoaXMgZnVuY3Rpb24gdXNlcyBhbiBhcHByb2FjaCBkZXNpZ25lZCB0byBwcmV2ZW50CisgICB0aW1pbmcgYW5hbHlzaXMgYnkgYXZvaWRpbmcgY29udGVudC1iYXNlZCBzaG9ydCBjaXJjdWl0aW5nIGJlaGF2aW91ciwKKyAgIG1ha2luZyBpdCBhcHByb3ByaWF0ZSBmb3IgY3J5cHRvZ3JhcGh5LiAgKmEqIGFuZCAqYiogbXVzdCBib3RoIGJlIG9mIHRoZQorICAgc2FtZSB0eXBlOiBlaXRoZXIgOmNsYXNzOmBzdHJgIChBU0NJSSBvbmx5LCBhcyBlLmcuIHJldHVybmVkIGJ5CisgICA6bWV0aDpgSE1BQy5oZXhkaWdlc3RgKSwgb3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sCisgICAoZS5nLiA6Y2xhc3M6YGJ5dGVzYCkuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJZiAqYSogYW5kICpiKiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAgICAgIGEgdGltaW5nIGF0dGFjayBjb3VsZCB0aGVvcmV0aWNhbGx5IHJldmVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgIHR5cGVzIGFuZCBsZW5ndGhzIG9mICphKiBhbmQgKmIqLS1idXQgbm90IHRoZWlyIHZhbHVlcy4KKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YGhhc2hsaWJgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLmVudGl0aWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CmluZGV4IGI4YjRhYTguLjY1Y2U4MTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CkBAIC05LDExICs5LDE5IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGRlZmluZXMgdGhyZWUgZGljdGlvbmFyaWVzLCBgYG5hbWUyY29kZXBvaW50YGAsIGBgY29kZXBvaW50Mm5hbWVgYCwKLWFuZCBgYGVudGl0eWRlZnNgYC4gYGBlbnRpdHlkZWZzYGAgaXMgdXNlZCB0byBwcm92aWRlIHRoZSA6YXR0cjpgZW50aXR5ZGVmc2AKLWF0dHJpYnV0ZSBvZiB0aGUgOmNsYXNzOmBodG1sLnBhcnNlci5IVE1MUGFyc2VyYCBjbGFzcy4gIFRoZSBkZWZpbml0aW9uIHByb3ZpZGVkCi1oZXJlIGNvbnRhaW5zIGFsbCB0aGUgZW50aXRpZXMgZGVmaW5lZCBieSBYSFRNTCAxLjAgdGhhdCBjYW4gYmUgaGFuZGxlZCB1c2luZwotc2ltcGxlIHRleHR1YWwgc3Vic3RpdHV0aW9uIGluIHRoZSBMYXRpbi0xIGNoYXJhY3RlciBzZXQgKElTTy04ODU5LTEpLgorVGhpcyBtb2R1bGUgZGVmaW5lcyBmb3VyIGRpY3Rpb25hcmllcywgOmRhdGE6YGh0bWw1YCwKKzpkYXRhOmBuYW1lMmNvZGVwb2ludGAsIDpkYXRhOmBjb2RlcG9pbnQybmFtZWAsIGFuZCA6ZGF0YTpgZW50aXR5ZGVmc2AuCisKKworLi4gZGF0YTo6IGh0bWw1CisKKyAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgSFRNTDUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgWyNdXyB0byB0aGUKKyAgIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocyksIGUuZy4gYGBodG1sNVsnZ3Q7J10gPT0gJz4nYGAuCisgICBOb3RlIHRoYXQgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpcyBpbmNsdWRlZCBpbiB0aGUgbmFtZSAoZS5nLiBgYCdndDsnYGApLAorICAgaG93ZXZlciBzb21lIG9mIHRoZSBuYW1lcyBhcmUgYWNjZXB0ZWQgYnkgdGhlIHN0YW5kYXJkIGV2ZW4gd2l0aG91dCB0aGUKKyAgIHNlbWljb2xvbjogaW4gdGhpcyBjYXNlIHRoZSBuYW1lIGlzIHByZXNlbnQgd2l0aCBhbmQgd2l0aG91dCB0aGUgYGAnOydgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IGVudGl0eWRlZnMKQEAgLTMwLDMgKzM4LDggQEAKIC4uIGRhdGE6OiBjb2RlcG9pbnQybmFtZQogCiAgICBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIFVuaWNvZGUgY29kZXBvaW50cyB0byBIVE1MIGVudGl0eSBuYW1lcy4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcy5odG1sCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKaW5kZXggZjNjMzZlYy4uZTQxNTRlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdApAQCAtMTYsMTMgKzE2LDE0IEBACiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3MgOmNsYXNzOmBIVE1MUGFyc2VyYCB3aGljaCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvcgogcGFyc2luZyB0ZXh0IGZpbGVzIGZvcm1hdHRlZCBpbiBIVE1MIChIeXBlclRleHQgTWFyay11cCBMYW5ndWFnZSkgYW5kIFhIVE1MLgogCi0uLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PVRydWUpCisuLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PUZhbHNlKQogCi0gICBDcmVhdGUgYSBwYXJzZXIgaW5zdGFuY2UuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCBpbnZhbGlkCi0gICBIVE1MIHJlc3VsdHMgaW4gOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb25zIFsjXV8uICBJZgotICAgKnN0cmljdCogaXMgYGBGYWxzZWBgLCB0aGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBtYWtlIGEgYmVzdCBndWVzcyBhdAotICAgdGhlIGludGVudGlvbiBvZiBhbnkgaW52YWxpZCBIVE1MIGl0IGVuY291bnRlcnMsIHNpbWlsYXIgdG8gdGhlIHdheSBtb3N0Ci0gICBicm93c2VycyBkby4gIFVzaW5nIGBgc3RyaWN0PUZhbHNlYGAgaXMgYWR2aXNlZC4KKyAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4gIElmICpzdHJpY3QqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpLCB0aGUgcGFyc2VyCisgICB3aWxsIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCB0aGUgcGFyc2VyCisgICB3aWxsIHJhaXNlIGFuIDpleGM6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcmAgZXhjZXB0aW9uIGluc3RlYWQgWyNdXyB3aGVuCisgICBpdCdzIG5vdCBhYmxlIHRvIHBhcnNlIHRoZSBtYXJrdXAuCisgICBUaGUgdXNlIG9mIGBgc3RyaWN0PVRydWVgYCBpcyBkaXNjb3VyYWdlZCBhbmQgdGhlICpzdHJpY3QqIGFyZ3VtZW50IGlzCisgICBkZXByZWNhdGVkLgogCiAgICBBbiA6Y2xhc3M6YC5IVE1MUGFyc2VyYCBpbnN0YW5jZSBpcyBmZWQgSFRNTCBkYXRhIGFuZCBjYWxscyBoYW5kbGVyIG1ldGhvZHMKICAgIHdoZW4gc3RhcnQgdGFncywgZW5kIHRhZ3MsIHRleHQsIGNvbW1lbnRzLCBhbmQgb3RoZXIgbWFya3VwIGVsZW1lbnRzIGFyZQpAQCAtMzIsNyArMzMsMTIgQEAKICAgIFRoaXMgcGFyc2VyIGRvZXMgbm90IGNoZWNrIHRoYXQgZW5kIHRhZ3MgbWF0Y2ggc3RhcnQgdGFncyBvciBjYWxsIHRoZSBlbmQtdGFnCiAgICBoYW5kbGVyIGZvciBlbGVtZW50cyB3aGljaCBhcmUgY2xvc2VkIGltcGxpY2l0bHkgYnkgY2xvc2luZyBhbiBvdXRlciBlbGVtZW50LgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiAqc3RyaWN0KiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgKnN0cmljdCoga2V5d29yZCBhZGRlZC4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQorICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50IGFuZCB0aGUgc3RyaWN0IG1vZGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQuCisgICAgICBUaGUgcGFyc2VyIGlzIG5vdyBhYmxlIHRvIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAgdG9vLgogCiBBbiBleGNlcHRpb24gaXMgZGVmaW5lZCBhcyB3ZWxsOgogCkBAIC00Niw2ICs1MiwxMCBAQAogICAgZGV0ZWN0ZWQsIGFuZCA6YXR0cjpgb2Zmc2V0YCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW50byB0aGUgbGluZSBhdAogICAgd2hpY2ggdGhlIGNvbnN0cnVjdCBzdGFydHMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjUKKyAgICAgIFRoaXMgZXhjZXB0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCdzIG5ldmVyIHJhaXNlZCBieSB0aGUgcGFyc2VyCisgICAgICAod2hlbiB0aGUgZGVmYXVsdCBub24tc3RyaWN0IG1vZGUgaXMgdXNlZCkuCisKIAogRXhhbXBsZSBIVE1MIFBhcnNlciBBcHBsaWNhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CmluZGV4IGQ0MzlmMjQuLjU1OTlkYWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKQEAgLTM0Myw2ICszNDMsMTUgQEAKIHwgOmNvbnN0OmBVUEdSQURFX1JFUVVJUkVEYCAgICAgICAgICAgICAgICB8IGBgNDI2YGAgfCBIVFRQIFVwZ3JhZGUgdG8gVExTLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI4MTdgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBQUkVDT05ESVRJT05fUkVRVUlSRURgICAgICAgICAgICB8IGBgNDI4YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBUT09fTUFOWV9SRVFVRVNUU2AgICAgICAgICAgICAgICB8IGBgNDI5YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFYCB8IGBgNDMxYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgOmNvbnN0OmBJTlRFUk5BTF9TRVJWRVJfRVJST1JgICAgICAgICAgICB8IGBgNTAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjE+YF8gIHwKQEAgLTM3Myw2ICszODIsMTIgQEAKIHwgOmNvbnN0OmBOT1RfRVhURU5ERURgICAgICAgICAgICAgICAgICAgICB8IGBgNTEwYGAgfCBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI3NzRgLCBTZWN0aW9uIDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYCB8IGBgNTExYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFkZGVkIGNvZGVzIGBgNDI4YGAsIGBgNDI5YGAsIGBgNDMxYGAgYW5kIGBgNTExYGAgZnJvbSA6cmZjOmA2NTg1YC4KIAogCiAuLiBkYXRhOjogcmVzcG9uc2VzCkBAIC01MDYsNiArNTIxLDEyIEBACiAKICAgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBib2R5LCBvciB1cCB0byB0aGUgbmV4dCAqYW10KiBieXRlcy4KIAorLi4gbWV0aG9kOjogSFRUUFJlc3BvbnNlLnJlYWRpbnRvKGIpCisKKyAgIFJlYWRzIHVwIHRvIHRoZSBuZXh0IGxlbihiKSBieXRlcyBvZiB0aGUgcmVzcG9uc2UgYm9keSBpbnRvIHRoZSBidWZmZXIgKmIqLgorICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBIVFRQUmVzcG9uc2UuZ2V0aGVhZGVyKG5hbWUsIGRlZmF1bHQ9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0CmluZGV4IGNjOGYyNTEuLjQwZjI0ZjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY29va2llamFyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QKQEAgLTQwLDcgKzQwLDExIEBACiAuLiBleGNlcHRpb246OiBMb2FkRXJyb3IKIAogICAgSW5zdGFuY2VzIG9mIDpjbGFzczpgRmlsZUNvb2tpZUphcmAgcmFpc2UgdGhpcyBleGNlcHRpb24gb24gZmFpbHVyZSB0byBsb2FkCi0gICBjb29raWVzIGZyb20gYSBmaWxlLiAgOmV4YzpgTG9hZEVycm9yYCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLgorICAgY29va2llcyBmcm9tIGEgZmlsZS4gIDpleGM6YExvYWRFcnJvcmAgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIExvYWRFcnJvciB3YXMgbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgIGluc3RlYWQgb2YKKyAgICAgIDpleGM6YElPRXJyb3JgLgogCiAKIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CkBAIC0yNTcsOSArMjYxLDEyIEBACiAgICBBcmd1bWVudHMgYXJlIGFzIGZvciA6bWV0aDpgc2F2ZWAuCiAKICAgIFRoZSBuYW1lZCBmaWxlIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB1bmRlcnN0b29kIGJ5IHRoZSBjbGFzcywgb3IKLSAgIDpleGM6YExvYWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBbHNvLCA6ZXhjOmBJT0Vycm9yYCBtYXkgYmUgcmFpc2VkLCBmb3IKKyAgIDpleGM6YExvYWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBbHNvLCA6ZXhjOmBPU0Vycm9yYCBtYXkgYmUgcmFpc2VkLCBmb3IKICAgIGV4YW1wbGUgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIG1ldGhvZDo6IEZpbGVDb29raWVKYXIucmV2ZXJ0KGZpbGVuYW1lPU5vbmUsIGlnbm9yZV9kaXNjYXJkPUZhbHNlLCBpZ25vcmVfZXhwaXJlcz1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKaW5kZXggNWFlM2ZkNC4uNjQ2ZjJlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CkBAIC0yMiw5ICsyMiwxMiBAQAogQ29va2llIGhhbmRsaW5nLiAgQXMgYSByZXN1bHQsIHRoZSBwYXJzaW5nIHJ1bGVzIHVzZWQgYXJlIGEgYml0IGxlc3Mgc3RyaWN0LgogCiBUaGUgY2hhcmFjdGVyIHNldCwgOmRhdGE6YHN0cmluZy5hc2NpaV9sZXR0ZXJzYCwgOmRhdGE6YHN0cmluZy5kaWdpdHNgIGFuZAotYGAhIyQlJicqKy0uXl9gfH5gYCBkZW5vdGUgdGhlIHNldCBvZiB2YWxpZCBjaGFyYWN0ZXJzIGFsbG93ZWQgYnkgdGhpcyBtb2R1bGUKK2BgISMkJSYnKistLl5fYHx+OmBgIGRlbm90ZSB0aGUgc2V0IG9mIHZhbGlkIGNoYXJhY3RlcnMgYWxsb3dlZCBieSB0aGlzIG1vZHVsZQogaW4gQ29va2llIG5hbWUgKGFzIDphdHRyOmB+TW9yc2VsLmtleWApLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWxsb3dlZCAnOicgYXMgYSB2YWxpZCBDb29raWUgbmFtZSBjaGFyYWN0ZXIuCisKIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAppbmRleCAzMDBlMzMyLi5jYmFkM2VkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CkBAIC0xNzksMTkgKzE3OSwzMCBAQAogCiAgICAuLiBtZXRob2Q6OiBzZW5kX3Jlc3BvbnNlKGNvZGUsIG1lc3NhZ2U9Tm9uZSkKIAotICAgICAgU2VuZHMgYSByZXNwb25zZSBoZWFkZXIgYW5kIGxvZ3MgdGhlIGFjY2VwdGVkIHJlcXVlc3QuIFRoZSBIVFRQIHJlc3BvbnNlCi0gICAgICBsaW5lIGlzIHNlbnQsIGZvbGxvd2VkIGJ5ICpTZXJ2ZXIqIGFuZCAqRGF0ZSogaGVhZGVycy4gVGhlIHZhbHVlcyBmb3IKLSAgICAgIHRoZXNlIHR3byBoZWFkZXJzIGFyZSBwaWNrZWQgdXAgZnJvbSB0aGUgOm1ldGg6YHZlcnNpb25fc3RyaW5nYCBhbmQKLSAgICAgIDptZXRoOmBkYXRlX3RpbWVfc3RyaW5nYCBtZXRob2RzLCByZXNwZWN0aXZlbHkuCisgICAgICBBZGRzIGEgcmVzcG9uc2UgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlciBhbmQgbG9ncyB0aGUgYWNjZXB0ZWQKKyAgICAgIHJlcXVlc3QuIFRoZSBIVFRQIHJlc3BvbnNlIGxpbmUgaXMgd3JpdHRlbiB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLAorICAgICAgZm9sbG93ZWQgYnkgKlNlcnZlciogYW5kICpEYXRlKiBoZWFkZXJzLiBUaGUgdmFsdWVzIGZvciB0aGVzZSB0d28gaGVhZGVycworICAgICAgYXJlIHBpY2tlZCB1cCBmcm9tIHRoZSA6bWV0aDpgdmVyc2lvbl9zdHJpbmdgIGFuZAorICAgICAgOm1ldGg6YGRhdGVfdGltZV9zdHJpbmdgIG1ldGhvZHMsIHJlc3BlY3RpdmVseS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdAorICAgICAgaW50ZW5kIHRvIHNlbmQgYW55IG90aGVyIGhlYWRlcnMgdXNpbmcgdGhlIDptZXRoOmBzZW5kX2hlYWRlcmAgbWV0aG9kLAorICAgICAgdGhlbiA6bWV0aDpgc2VuZF9yZXNwb25zZWAgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgOm1ldGg6YGVuZF9oZWFkZXJzYAorICAgICAgY2FsbC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEhlYWRlcnMgYXJlIHN0b3JlZCB0byBhbiBpbnRlcm5hbCBidWZmZXIgYW5kIDptZXRoOmBlbmRfaGVhZGVyc2AKKyAgICAgICAgIG5lZWRzIHRvIGJlIGNhbGxlZCBleHBsaWNpdGx5LgorCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfaGVhZGVyKGtleXdvcmQsIHZhbHVlKQogCi0gICAgICBTdG9yZXMgdGhlIEhUVFAgaGVhZGVyIHRvIGFuIGludGVybmFsIGJ1ZmZlciB3aGljaCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlCi0gICAgICBvdXRwdXQgc3RyZWFtIHdoZW4gOm1ldGg6YGVuZF9oZWFkZXJzYCBtZXRob2QgaXMgaW52b2tlZC4KLSAgICAgICprZXl3b3JkKiBzaG91bGQgc3BlY2lmeSB0aGUgaGVhZGVyIGtleXdvcmQsIHdpdGggKnZhbHVlKgotICAgICAgc3BlY2lmeWluZyBpdHMgdmFsdWUuCisgICAgICBBZGRzIHRoZSBIVFRQIGhlYWRlciB0byBhbiBpbnRlcm5hbCBidWZmZXIgd2hpY2ggd2lsbCBiZSB3cml0dGVuIHRvIHRoZQorICAgICAgb3V0cHV0IHN0cmVhbSB3aGVuIGVpdGhlciA6bWV0aDpgZW5kX2hlYWRlcnNgIG9yIDptZXRoOmBmbHVzaF9oZWFkZXJzYCBpcworICAgICAgaW52b2tlZC4gKmtleXdvcmQqIHNob3VsZCBzcGVjaWZ5IHRoZSBoZWFkZXIga2V5d29yZCwgd2l0aCAqdmFsdWUqCisgICAgICBzcGVjaWZ5aW5nIGl0cyB2YWx1ZS4gTm90ZSB0aGF0LCBhZnRlciB0aGUgc2VuZF9oZWFkZXIgY2FsbHMgYXJlIGRvbmUsCisgICAgICA6bWV0aDpgZW5kX2hlYWRlcnNgIE1VU1QgQkUgY2FsbGVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24uCiAKLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIFN0b3JpbmcgdGhlIGhlYWRlcnMgaW4gYW4gaW50ZXJuYWwgYnVmZmVyCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgSGVhZGVycyBhcmUgc3RvcmVkIGluIGFuIGludGVybmFsIGJ1ZmZlci4KIAogCiAgICAuLiBtZXRob2Q6OiBzZW5kX3Jlc3BvbnNlX29ubHkoY29kZSwgbWVzc2FnZT1Ob25lKQpAQCAtMjA1LDEwICsyMTYsMTkgQEAKIAogICAgLi4gbWV0aG9kOjogZW5kX2hlYWRlcnMoKQogCi0gICAgICBXcml0ZSB0aGUgYnVmZmVyZWQgSFRUUCBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCBzZW5kIGEgYmxhbmsKLSAgICAgIGxpbmUsIGluZGljYXRpbmcgdGhlIGVuZCBvZiB0aGUgSFRUUCBoZWFkZXJzIGluIHRoZSByZXNwb25zZS4KKyAgICAgIEFkZHMgYSBibGFuayBsaW5lCisgICAgICAoaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlKQorICAgICAgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBjYWxscyA6bWV0aDpgZmx1c2hfaGVhZGVycygpYC4KIAotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgV3JpdGluZyB0aGUgYnVmZmVyZWQgaGVhZGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBUaGUgYnVmZmVyZWQgaGVhZGVycyBhcmUgd3JpdHRlbiB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKworICAgLi4gbWV0aG9kOjogZmx1c2hfaGVhZGVycygpCisKKyAgICAgIEZpbmFsbHkgc2VuZCB0aGUgaGVhZGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgZmx1c2ggdGhlIGludGVybmFsCisgICAgICBoZWFkZXJzIGJ1ZmZlci4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKICAgIC4uIG1ldGhvZDo6IGxvZ19yZXF1ZXN0KGNvZGU9Jy0nLCBzaXplPSctJykKIApAQCAtMjUwLDggKzI3MCwxMSBAQAogCiAgICAuLiBtZXRob2Q6OiBhZGRyZXNzX3N0cmluZygpCiAKLSAgICAgIFJldHVybnMgdGhlIGNsaWVudCBhZGRyZXNzLCBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuIEEgbmFtZSBsb29rdXAgaXMKLSAgICAgIHBlcmZvcm1lZCBvbiB0aGUgY2xpZW50J3MgSVAgYWRkcmVzcy4KKyAgICAgIFJldHVybnMgdGhlIGNsaWVudCBhZGRyZXNzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXNseSwgYSBuYW1lIGxvb2t1cCB3YXMgcGVyZm9ybWVkLiBUbyBhdm9pZCBuYW1lIHJlc29sdXRpb24KKyAgICAgICAgIGRlbGF5cywgaXQgbm93IGFsd2F5cyByZXR1cm5zIHRoZSBJUCBhZGRyZXNzLgogCiAKIC4uIGNsYXNzOjogU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCkBAIC0yOTksNyArMzIyLDcgQEAKICAgICAgIHJlc3BvbnNlIGlmIHRoZSA6ZnVuYzpgbGlzdGRpcmAgZmFpbHMuCiAKICAgICAgIElmIHRoZSByZXF1ZXN0IHdhcyBtYXBwZWQgdG8gYSBmaWxlLCBpdCBpcyBvcGVuZWQgYW5kIHRoZSBjb250ZW50cyBhcmUKLSAgICAgIHJldHVybmVkLiAgQW55IDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpbiBvcGVuaW5nIHRoZSByZXF1ZXN0ZWQgZmlsZSBpcworICAgICAgcmV0dXJuZWQuICBBbnkgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGluIG9wZW5pbmcgdGhlIHJlcXVlc3RlZCBmaWxlIGlzCiAgICAgICBtYXBwZWQgdG8gYSBgYDQwNGBgLCBgYCdGaWxlIG5vdCBmb3VuZCdgYCBlcnJvci4gT3RoZXJ3aXNlLCB0aGUgY29udGVudAogICAgICAgdHlwZSBpcyBndWVzc2VkIGJ5IGNhbGxpbmcgdGhlIDptZXRoOmBndWVzc190eXBlYCBtZXRob2QsIHdoaWNoIGluIHR1cm4KICAgICAgIHVzZXMgdGhlICpleHRlbnNpb25zX21hcCogdmFyaWFibGUuCkBAIC0zNzgsMyArNDAxLDkgQEAKIAogICAgTm90ZSB0aGF0IENHSSBzY3JpcHRzIHdpbGwgYmUgcnVuIHdpdGggVUlEIG9mIHVzZXIgbm9ib2R5LCBmb3Igc2VjdXJpdHkKICAgIHJlYXNvbnMuICBQcm9ibGVtcyB3aXRoIHRoZSBDR0kgc2NyaXB0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBlcnJvciA0MDMuCisKKzpjbGFzczpgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyYCBjYW4gYmUgZW5hYmxlZCBpbiB0aGUgY29tbWFuZCBsaW5lIGJ5IHBhc3NpbmcKK3RoZSBgYC0tY2dpYGAgb3B0aW9uLjo6CisKKyAgICAgICAgcHl0aG9uIC1tIGh0dHAuc2VydmVyIC0tY2dpIDgwMDAKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCAzZjQ1Yzk1Li5mZWZiMjg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtNjQsMTQgKzY0LDIxIEBACiBUaGVyZSdzIGFsc28gYSBzdWJjbGFzcyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zOgogCiAKLS4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSkKKy4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKIAogICAgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YElNQVA0YCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMCiAgICBlbmNyeXB0ZWQgc29ja2V0ICh0byB1c2UgdGhpcyBjbGFzcyB5b3UgbmVlZCBhIHNvY2tldCBtb2R1bGUgdGhhdCB3YXMgY29tcGlsZWQKICAgIHdpdGggU1NMIHN1cHBvcnQpLiAgSWYgKmhvc3QqIGlzIG5vdCBzcGVjaWZpZWQsIGBgJydgYCAodGhlIGxvY2FsIGhvc3QpIGlzIHVzZWQuCiAgICBJZiAqcG9ydCogaXMgb21pdHRlZCwgdGhlIHN0YW5kYXJkIElNQVA0LW92ZXItU1NMIHBvcnQgKDk5MykgaXMgdXNlZC4gICprZXlmaWxlKgogICAgYW5kICpjZXJ0ZmlsZSogYXJlIGFsc28gb3B0aW9uYWwgLSB0aGV5IGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleQotICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4KKyAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uICpzc2xfY29udGV4dCogcGFyYW1ldGVyIGlzIGEKKyAgIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdCB3aGljaCBhbGxvd3MgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24KKyAgIG9wdGlvbnMsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpCisgICBzdHJ1Y3R1cmUuIE5vdGUgdGhhdCB0aGUgKmtleWZpbGUqLypjZXJ0ZmlsZSogcGFyYW1ldGVycyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggKnNzbF9jb250ZXh0KiwKKyAgIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCBpcyB0aHJvd24gaWYgKmtleWZpbGUqLypjZXJ0ZmlsZSogaXMgcHJvdmlkZWQgYWxvbmcgd2l0aCAqc3NsX2NvbnRleHQqLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNzbF9jb250ZXh0KiBwYXJhbWV0ZXIgYWRkZWQuCiAKIAogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgpAQCAtMTA2LDEzICsxMTMsMTUgQEAKIAogLi4gZnVuY3Rpb246OiBUaW1lMkludGVybmFsZGF0ZShkYXRlX3RpbWUpCiAKLSAgIENvbnZlcnQgKmRhdGVfdGltZSogdG8gYW4gSU1BUDQgYGBJTlRFUk5BTERBVEVgYCByZXByZXNlbnRhdGlvbi4gIFRoZQotICAgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtOiBgYCJERC1NbW0tWVlZWSBISDpNTTpTUwotICAgK0hITU0iYGAgKGluY2x1ZGluZyBkb3VibGUtcXVvdGVzKS4gIFRoZSAqZGF0ZV90aW1lKiBhcmd1bWVudCBjYW4gYmUgYQotICAgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZyBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcyByZXR1cm5lZAotICAgYnkgOmZ1bmM6YHRpbWUudGltZWApLCBhIDktdHVwbGUgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUgKGFzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgdGltZS5sb2NhbHRpbWVgKSwgb3IgYSBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0IGNhc2UsIGl0Ci0gICBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgorICAgQ29udmVydCAqZGF0ZV90aW1lKiB0byBhbiBJTUFQNCBgYElOVEVSTkFMREFURWBgIHJlcHJlc2VudGF0aW9uLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybTogYGAiREQtTW1tLVlZWVkgSEg6TU06U1MKKyAgICtISE1NImBgIChpbmNsdWRpbmcgZG91YmxlLXF1b3RlcykuICBUaGUgKmRhdGVfdGltZSogYXJndW1lbnQgY2FuCisgICBiZSBhIG51bWJlciAoaW50IG9yIGZsb2F0KSByZXByZXNlbnRpbmcgc2Vjb25kcyBzaW5jZSBlcG9jaCAoYXMKKyAgIHJldHVybmVkIGJ5IDpmdW5jOmB0aW1lLnRpbWVgKSwgYSA5LXR1cGxlIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lCisgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHRpbWUuc3RydWN0X3RpbWVgIChhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YHRpbWUubG9jYWx0aW1lYCksIGFuIGF3YXJlIGluc3RhbmNlIG9mCisgICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCwgb3IgYSBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0CisgICBjYXNlLCBpdCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgogCiBOb3RlIHRoYXQgSU1BUDQgbWVzc2FnZSBudW1iZXJzIGNoYW5nZSBhcyB0aGUgbWFpbGJveCBjaGFuZ2VzOyBpbiBwYXJ0aWN1bGFyLAogYWZ0ZXIgYW4gYGBFWFBVTkdFYGAgY29tbWFuZCBwZXJmb3JtcyBkZWxldGlvbnMgdGhlIHJlbWFpbmluZyBtZXNzYWdlcyBhcmUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcC5yc3QgYi9Eb2MvbGlicmFyeS9pbXAucnN0CmluZGV4IDEzNDViMjUuLjVjYWRkYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wLnJzdApAQCAtMzAsNiArMzAsOSBAQAogICAgOmNvbnN0OmBQWV9TT1VSQ0VgLCA6Y29uc3Q6YFBZX0NPTVBJTEVEYCwgb3IgOmNvbnN0OmBDX0VYVEVOU0lPTmAsIGRlc2NyaWJlZAogICAgYmVsb3cuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVzZSB0aGUgY29uc3RhbnRzIGRlZmluZWQgb24gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgaW5zdGVhZC4KKwogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbW9kdWxlKG5hbWVbLCBwYXRoXSkKIApAQCAtNjksNiArNzIsOSBAQAogICAgdGhlbiB1c2UgOmZ1bmM6YGZpbmRfbW9kdWxlYCB3aXRoIHRoZSAqcGF0aCogYXJndW1lbnQgc2V0IHRvIGBgUC5fX3BhdGhfX2BgLgogICAgV2hlbiAqUCogaXRzZWxmIGhhcyBhIGRvdHRlZCBuYW1lLCBhcHBseSB0aGlzIHJlY2lwZSByZWN1cnNpdmVseS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIGluc3RlYWQuCisKIAogLi4gZnVuY3Rpb246OiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24pCiAKQEAgLTkwLDYgKzk2LDEwIEBACiAgICBpdCB3YXMgbm90IGBgTm9uZWBgLCBldmVuIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIFRoaXMgaXMgYmVzdCBkb25lCiAgICB1c2luZyBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgc3RhdGVtZW50LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVbm5lZWRlZCBhcyBsb2FkZXJzIHNob3VsZCBiZSB1c2VkIHRvIGxvYWQgbW9kdWxlcyBhbmQKKyAgICAgIDpmdW5jOmBmaW5kX21vZHVsZWAgaXMgZGVwcmVjYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IG5ld19tb2R1bGUobmFtZSkKIApAQCAtOTcsMzcgKzEwNyw2IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKIAotLi4gZnVuY3Rpb246OiBsb2NrX2hlbGQoKQotCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlIGBgRmFsc2VgYC4gT24KLSAgIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIGFsd2F5cyByZXR1cm4gYGBGYWxzZWBgLgotCi0gICBPbiBwbGF0Zm9ybXMgd2l0aCB0aHJlYWRzLCBhIHRocmVhZCBleGVjdXRpbmcgYW4gaW1wb3J0IGhvbGRzIGFuIGludGVybmFsIGxvY2sKLSAgIHVudGlsIHRoZSBpbXBvcnQgaXMgY29tcGxldGUuIFRoaXMgbG9jayBibG9ja3Mgb3RoZXIgdGhyZWFkcyBmcm9tIGRvaW5nIGFuCi0gICBpbXBvcnQgdW50aWwgdGhlIG9yaWdpbmFsIGltcG9ydCBjb21wbGV0ZXMsIHdoaWNoIGluIHR1cm4gcHJldmVudHMgb3RoZXIgdGhyZWFkcwotICAgZnJvbSBzZWVpbmcgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0cyBjb25zdHJ1Y3RlZCBieSB0aGUgb3JpZ2luYWwgdGhyZWFkIHdoaWxlCi0gICBpbiB0aGUgcHJvY2VzcyBvZiBjb21wbGV0aW5nIGl0cyBpbXBvcnQgKGFuZCB0aGUgaW1wb3J0cywgaWYgYW55LCB0cmlnZ2VyZWQgYnkKLSAgIHRoYXQpLgotCi0KLS4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKLQotICAgQWNxdWlyZSB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLiAgVGhpcyBsb2NrIHNob3VsZAotICAgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbiBpbXBvcnRpbmcgbW9kdWxlcy4KLQotICAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgdGhlIGltcG9ydCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQKLSAgIGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKLSAgIGFjcXVpcmVkIGl0LgotCi0gICBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLQotCi0uLiBmdW5jdGlvbjo6IHJlbGVhc2VfbG9jaygpCi0KLSAgIFJlbGVhc2UgdGhlIGludGVycHJldGVyJ3MgaW1wb3J0IGxvY2suIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMKLSAgIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLQotCiAuLiBmdW5jdGlvbjo6IHJlbG9hZChtb2R1bGUpCiAKICAgIFJlbG9hZCBhIHByZXZpb3VzbHkgaW1wb3J0ZWQgKm1vZHVsZSouICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG1vZHVsZSBvYmplY3QsIHNvCkBAIC0yMDEsMTQgKzE4MCwxOSBAQAogICAgc291cmNlICpwYXRoKi4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCB0aGUgcmV0dXJuCiAgICB2YWx1ZSB3b3VsZCBiZSBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIGZvciBQeXRob24gMy4yLgogICAgVGhlIGBgY3B5dGhvbi0zMmBgIHN0cmluZyBjb21lcyBmcm9tIHRoZSBjdXJyZW50IG1hZ2ljIHRhZyAoc2VlCi0gICA6ZnVuYzpgZ2V0X3RhZ2ApLiAgVGhlIHJldHVybmVkIHBhdGggd2lsbCBlbmQgaW4gYGAucHljYGAgd2hlbgotICAgYGBfX2RlYnVnX19gYCBpcyBUcnVlIG9yIGBgLnB5b2BgIGZvciBhbiBvcHRpbWl6ZWQgUHl0aG9uCisgICA6ZnVuYzpgZ2V0X3RhZ2A7IGlmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCB0aGVuCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbgorICAgYGAucHljYGAgd2hlbiBgYF9fZGVidWdfX2BgIGlzIFRydWUgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KICAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgRmFsc2UpLiAgQnkgcGFzc2luZyBpbiBUcnVlIG9yIEZhbHNlIGZvcgogICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKICAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCiAKICAgICpwYXRoKiBuZWVkIG5vdCBleGlzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIElmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBgYE5vbmVgYCwgdGhlbgorICAgICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMjE2LDcgKzIwMCwxMyBAQAogICAgZmlsZSBwYXRoLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcwogICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCB0aGUgcmV0dXJuZWQgcGF0aCB3b3VsZCBiZQogICAgYGAvZm9vL2Jhci9iYXoucHlgYC4gICpwYXRoKiBuZWVkIG5vdCBleGlzdCwgaG93ZXZlciBpZiBpdCBkb2VzIG5vdCBjb25mb3JtCi0gICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLgorICAgdG8gOnBlcDpgMzE0N2AgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKKyAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCwKKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdoZW4KKyAgICAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZC4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF90YWcoKQpAQCAtMjI0LDYgKzIxNCw2NCBAQAogICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YCBtYWdpYyB0YWcgc3RyaW5nIG1hdGNoaW5nIHRoaXMgdmVyc2lvbiBvZiBQeXRob24ncwogICAgbWFnaWMgbnVtYmVyLCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgZ2V0X21hZ2ljYC4KIAorICAgLi4gbm90ZTo6CisgICAgICBZb3UgbWF5IHVzZSA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgZGlyZWN0bHkgc3RhcnRpbmcKKyAgICAgIGluIFB5dGhvbiAzLjMuCisKKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGVscCBpbnRlcmFjdCB3aXRoIHRoZSBpbXBvcnQgc3lzdGVtJ3MgaW50ZXJuYWwKK2xvY2tpbmcgbWVjaGFuaXNtLiAgTG9ja2luZyBzZW1hbnRpY3Mgb2YgaW1wb3J0cyBhcmUgYW4gaW1wbGVtZW50YXRpb24KK2RldGFpbCB3aGljaCBtYXkgdmFyeSBmcm9tIHJlbGVhc2UgdG8gcmVsZWFzZS4gIEhvd2V2ZXIsIFB5dGhvbiBlbnN1cmVzCit0aGF0IGNpcmN1bGFyIGltcG9ydHMgd29yayB3aXRob3V0IGFueSBkZWFkbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiBsb2NrX2hlbGQoKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZQorICAgYGBGYWxzZWBgLiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCBhbHdheXMgcmV0dXJuIGBgRmFsc2VgYC4KKworICAgT24gcGxhdGZvcm1zIHdpdGggdGhyZWFkcywgYSB0aHJlYWQgZXhlY3V0aW5nIGFuIGltcG9ydCBmaXJzdCBob2xkcyBhCisgICBnbG9iYWwgaW1wb3J0IGxvY2ssIHRoZW4gc2V0cyB1cCBhIHBlci1tb2R1bGUgbG9jayBmb3IgdGhlIHJlc3Qgb2YgdGhlCisgICBpbXBvcnQuICBUaGlzIGJsb2NrcyBvdGhlciB0aHJlYWRzIGZyb20gaW1wb3J0aW5nIHRoZSBzYW1lIG1vZHVsZSB1bnRpbAorICAgdGhlIG9yaWdpbmFsIGltcG9ydCBjb21wbGV0ZXMsIHByZXZlbnRpbmcgb3RoZXIgdGhyZWFkcyBmcm9tIHNlZWluZworICAgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0cyBjb25zdHJ1Y3RlZCBieSB0aGUgb3JpZ2luYWwgdGhyZWFkLiAgQW4KKyAgIGV4Y2VwdGlvbiBpcyBtYWRlIGZvciBjaXJjdWxhciBpbXBvcnRzLCB3aGljaCBieSBjb25zdHJ1Y3Rpb24gaGF2ZSB0bworICAgZXhwb3NlIGFuIGluY29tcGxldGUgbW9kdWxlIG9iamVjdCBhdCBzb21lIHBvaW50LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGxvY2tpbmcgc2NoZW1lIGhhcyBjaGFuZ2VkIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yCisgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKKyAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgorCisKKy4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKKworICAgQWNxdWlyZSB0aGUgaW50ZXJwcmV0ZXIncyBnbG9iYWwgaW1wb3J0IGxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgIFRoaXMgbG9jayBzaG91bGQgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbgorICAgaW1wb3J0aW5nIG1vZHVsZXMuCisKKyAgIE9uY2UgYSB0aHJlYWQgaGFzIGFjcXVpcmVkIHRoZSBpbXBvcnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0CisgICBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQgaGFzCisgICBhY3F1aXJlZCBpdC4KKworICAgT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiByZWxlYXNlX2xvY2soKQorCisgICBSZWxlYXNlIHRoZSBpbnRlcnByZXRlcidzIGdsb2JhbCBpbXBvcnQgbG9jay4gT24gcGxhdGZvcm1zIHdpdGhvdXQKKyAgIHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGxvY2tpbmcgc2NoZW1lIGhhcyBjaGFuZ2VkIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yCisgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKKyAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgorCiAKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHdpdGggaW50ZWdlciB2YWx1ZXMsIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUsIGFyZSB1c2VkCiB0byBpbmRpY2F0ZSB0aGUgc2VhcmNoIHJlc3VsdCBvZiA6ZnVuYzpgZmluZF9tb2R1bGVgLgpAQCAtMjMzLDMxICsyODEsNDMgQEAKIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgYSBzb3VyY2UgZmlsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQWV9DT01QSUxFRAogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGNvbXBpbGVkIGNvZGUgb2JqZWN0IGZpbGUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogQ19FWFRFTlNJT04KIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgZHluYW1pY2FsbHkgbG9hZGFibGUgc2hhcmVkIGxpYnJhcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogUEtHX0RJUkVDVE9SWQogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIHBhY2thZ2UgZGlyZWN0b3J5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IENfQlVJTFRJTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGJ1aWx0LWluIG1vZHVsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQWV9GUk9aRU4KIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgYSBmcm96ZW4gbW9kdWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gY2xhc3M6OiBOdWxsSW1wb3J0ZXIocGF0aF9zdHJpbmcpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CmluZGV4IDE2NDkwNjMuLjA0MDk3ZjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdApAQCAtNjMsNyArNjMsNyBAQAogRnVuY3Rpb25zCiAtLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9bGlzdCgpLCBsZXZlbD0wKQorLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKQogCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbi4KIApAQCAtODYsNiArODYsMzAgQEAKICAgICB0aGF0IHdhcyBpbXBvcnRlZCAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYCByZXR1cm5zIHRoZQogICAgIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KIAorLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihuYW1lLCBwYXRoPU5vbmUpCisKKyAgIEZpbmQgdGhlIGxvYWRlciBmb3IgYSBtb2R1bGUsIG9wdGlvbmFsbHkgd2l0aGluIHRoZSBzcGVjaWZpZWQgKnBhdGgqLiBJZiB0aGUKKyAgIG1vZHVsZSBpcyBpbiA6YXR0cjpgc3lzLm1vZHVsZXNgLCB0aGVuIGBgc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfX2BgIGlzCisgICByZXR1cm5lZCAodW5sZXNzIHRoZSBsb2FkZXIgd291bGQgYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCkuIE90aGVyd2lzZSBhIHNlYXJjaCB1c2luZyA6YXR0cjpgc3lzLm1ldGFfcGF0aGAKKyAgIGlzIGRvbmUuIGBgTm9uZWBgIGlzIHJldHVybmVkIGlmIG5vIGxvYWRlciBpcyBmb3VuZC4KKworICAgQSBkb3R0ZWQgbmFtZSBkb2VzIG5vdCBoYXZlIGl0cyBwYXJlbnQncyBpbXBsaWNpdGx5IGltcG9ydGVkLiBJZiB0aGF0IGlzCisgICBkZXNpcmVkIChhbHRob3VnaCBub3QgbmVzc2FyaWx5IHJlcXVpcmVkIHRvIGZpbmQgdGhlIGxvYWRlciwgaXQgd2lsbCBtb3N0CisgICBsaWtlbHkgYmUgbmVlZGVkIGlmIHRoZSBsb2FkZXIgYWN0dWFsbHkgaXMgdXNlZCB0byBsb2FkIHRoZSBtb2R1bGUpLCB0aGVuCisgICB5b3Ugd2lsbCBoYXZlIHRvIGltcG9ydCB0aGUgcGFja2FnZXMgY29udGFpbmluZyB0aGUgbW9kdWxlIHByaW9yIHRvIGNhbGxpbmcKKyAgIHRoaXMgZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICBJbnZhbGlkYXRlIHRoZSBpbnRlcm5hbCBjYWNoZXMgb2YgZmluZGVycyBzdG9yZWQgYXQKKyAgIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gSWYgYSBmaW5kZXIgaW1wbGVtZW50cyBgYGludmFsaWRhdGVfY2FjaGVzKClgYCB0aGVuIGl0CisgICB3aWxsIGJlIGNhbGxlZCB0byBwZXJmb3JtIHRoZSBpbnZhbGlkYXRpb24uICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBuZWVkZWQgaWYKKyAgIHNvbWUgbW9kdWxlcyBhcmUgaW5zdGFsbGVkIHdoaWxlIHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5nIGFuZCB5b3UgZXhwZWN0IHRoZQorICAgcHJvZ3JhbSB0byBub3RpY2UgdGhlIGNoYW5nZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIDptb2Q6YGltcG9ydGxpYi5hYmNgIC0tIEFic3RyYWN0IGJhc2UgY2xhc3NlcyByZWxhdGVkIHRvIGltcG9ydAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05NywxOSArMTIxLDkwIEBACiB1c2VkIGJ5IDprZXl3b3JkOmBpbXBvcnRgLiBTb21lIHN1YmNsYXNzZXMgb2YgdGhlIGNvcmUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzCiBhcmUgYWxzbyBwcm92aWRlZCB0byBoZWxwIGluIGltcGxlbWVudGluZyB0aGUgY29yZSBBQkNzLgogCitBQkMgaGllcmFyY2h5OjoKKworICAgIG9iamVjdAorICAgICArLS0gRmluZGVyIChkZXByZWNhdGVkKQorICAgICB8ICAgICstLSBNZXRhUGF0aEZpbmRlcgorICAgICB8ICAgICstLSBQYXRoRW50cnlGaW5kZXIKKyAgICAgKy0tIExvYWRlcgorICAgICAgICAgICstLSBSZXNvdXJjZUxvYWRlciAtLS0tLS0tLSsKKyAgICAgICAgICArLS0gSW5zcGVjdExvYWRlciAgICAgICAgICB8CisgICAgICAgICAgICAgICArLS0gRXhlY3V0aW9uTG9hZGVyIC0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBGaWxlTG9hZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFNvdXJjZUxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5TG9hZGVyIChkZXByZWNhdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5UHljTG9hZGVyIChkZXByZWNhdGVkKQorCiAKIC4uIGNsYXNzOjogRmluZGVyCiAKLSAgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBmaW5kZXJgLgotICAgIFNlZSA6cGVwOmAzMDJgIGZvciB0aGUgZXhhY3QgZGVmaW5pdGlvbiBmb3IgYSBmaW5kZXIuCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBmaW5kZXJgLgogCi0gICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVzZSA6Y2xhc3M6YE1ldGFQYXRoRmluZGVyYCBvciA6Y2xhc3M6YFBhdGhFbnRyeUZpbmRlcmAgaW5zdGVhZC4KIAotICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAotICAgICAgICBtb2R1bGUuIElmIHRoZSA6dGVybTpgZmluZGVyYCBpcyBmb3VuZCBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYW5kIHRoZQotICAgICAgICBtb2R1bGUgdG8gYmUgc2VhcmNoZWQgZm9yIGlzIGEgc3VicGFja2FnZSBvciBtb2R1bGUgdGhlbiAqcGF0aCogd2lsbAotICAgICAgICBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZS4gSWYgYSBsb2FkZXIKLSAgICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisKKyAgICAgIEFuIGFic3RhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgIG1vZHVsZS4gIE9yaWdpbmFsbHkgc3BlY2lmaWVkIGluIDpwZXA6YDMwMmAsIHRoaXMgbWV0aG9kIHdhcyBtZWFudAorICAgICAgZm9yIHVzZSBpbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYW5kIGluIHRoZSBwYXRoLWJhc2VkIGltcG9ydCBzdWJzeXN0ZW0uCisKKworLi4gY2xhc3M6OiBNZXRhUGF0aEZpbmRlcgorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYC4gRm9yCisgICBjb21wYXRpYmlsaXR5LCB0aGlzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBGaW5kZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICBtb2R1bGUuICBJZiB0aGlzIGlzIGEgdG9wLWxldmVsIGltcG9ydCwgKnBhdGgqIHdpbGwgYmUgYGBOb25lYGAuCisgICAgICBPdGhlcml3c2UsIHRoaXMgaXMgYSBzZWFyY2ggZm9yIGEgc3VicGFja2FnZSBvciBtb2R1bGUgYW5kICpwYXRoKgorICAgICAgd2lsbCBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZSBwYXJlbnQKKyAgICAgIHBhY2thZ2UuIElmIGEgbG9hZGVyIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQW4gb3B0aW9uYWwgbWV0aG9kIHdoaWNoLCB3aGVuIGNhbGxlZCwgc2hvdWxkIGludmFsaWRhdGUgYW55IGludGVybmFsCisgICAgICBjYWNoZSB1c2VkIGJ5IHRoZSBmaW5kZXIuIFVzZWQgYnkgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AKKyAgICAgIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBjYWNoZXMgb2YgYWxsIGZpbmRlcnMgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLgorCisKKy4uIGNsYXNzOjogUGF0aEVudHJ5RmluZGVyCisKKyAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gIFRob3VnaAorICAgaXQgYmVhcnMgc29tZSBzaW1pbGFyaXRpZXMgdG8gOmNsYXNzOmBNZXRhUGF0aEZpbmRlcmAsIGBgUGF0aEVudHJ5RmluZGVyYGAKKyAgIGlzIG1lYW50IGZvciB1c2Ugb25seSB3aXRoaW4gdGhlIHBhdGgtYmFzZWQgaW1wb3J0IHN1YnN5c3RlbSBwcm92aWRlZAorICAgYnkgOmNsYXNzOmBQYXRoRmluZGVyYC4gVGhpcyBBQkMgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEZpbmRlcmAgZm9yCisgICBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZmluZF9sb2FkZXIoZnVsbG5hbWUpOgorCisgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgbW9kdWxlLiAgUmV0dXJucyBhIDItdHVwbGUgb2YgYGAobG9hZGVyLCBwb3J0aW9uKWBgIHdoZXJlIGBgcG9ydGlvbmBgCisgICAgICBpcyBhIHNlcXVlbmNlIG9mIGZpbGUgc3lzdGVtIGxvY2F0aW9ucyBjb250cmlidXRpbmcgdG8gcGFydCBvZiBhIG5hbWVzcGFjZQorICAgICAgcGFja2FnZS4gVGhlIGxvYWRlciBtYXkgYmUgYGBOb25lYGAgd2hpbGUgc3BlY2lmeWluZyBgYHBvcnRpb25gYCB0bworICAgICAgc2lnbmlmeSB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgdG8gYSBuYW1lc3BhY2UKKyAgICAgIHBhY2thZ2UuIEFuIGVtcHR5IGxpc3QgY2FuIGJlIHVzZWQgZm9yIGBgcG9ydGlvbmBgIHRvIHNpZ25pZnkgdGhlIGxvYWRlcgorICAgICAgaXMgbm90IHBhcnQgb2YgYSBwYWNrYWdlLiBJZiBgYGxvYWRlcmBgIGlzIGBgTm9uZWBgIGFuZCBgYHBvcnRpb25gYCBpcworICAgICAgdGhlIGVtcHR5IGxpc3QgdGhlbiBubyBsb2FkZXIgb3IgbG9jYXRpb24gZm9yIGEgbmFtZXNwYWNlIHBhY2thZ2Ugd2VyZQorICAgICAgZm91bmQgKGkuZS4gZmFpbHVyZSB0byBmaW5kIGFueXRoaW5nIGZvciB0aGUgbW9kdWxlKS4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpOgorCisgICAgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBGaW5kZXIuZmluZF9tb2R1bGVgIHdoaWNoIGlzCisgICAgICBlcXVpdmFsZW50IHRvIGBgc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSlbMF1gYC4KKworICAgLi4gbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICBBbiBvcHRpb25hbCBtZXRob2Qgd2hpY2gsIHdoZW4gY2FsbGVkLCBzaG91bGQgaW52YWxpZGF0ZSBhbnkgaW50ZXJuYWwKKyAgICAgIGNhY2hlIHVzZWQgYnkgdGhlIGZpbmRlci4gVXNlZCBieSA6bWV0aDpgUGF0aEZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2AKKyAgICAgIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBjYWNoZXMgb2YgYWxsIGNhY2hlZCBmaW5kZXJzLgogCiAKIC4uIGNsYXNzOjogTG9hZGVyCkBAIC0xNTksNiArMjU0LDEzIEBACiAgICAgICAgICAgICAoVGhpcyBpcyBub3Qgc2V0IGJ5IHRoZSBidWlsdC1pbiBpbXBvcnQgbWFjaGluZXJ5LAogICAgICAgICAgICAgYnV0IGl0IHNob3VsZCBiZSBzZXQgd2hlbmV2ZXIgYSA6dGVybTpgbG9hZGVyYCBpcyB1c2VkLikKIAorICAgIC4uIG1ldGhvZDo6IG1vZHVsZV9yZXByKG1vZHVsZSkKKworICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLCBhcyBhIHN0cmluZy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6IDMuMworCiAKIC4uIGNsYXNzOjogUmVzb3VyY2VMb2FkZXIKIApAQCAtMjI0LDYgKzMyNiwzOCBAQAogICAgICAgICBtb2R1bGUuCiAKIAorLi4gY2xhc3M6OiBGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHdoaWNoIGluaGVyaXRzIGZyb20gOmNsYXNzOmBSZXNvdXJjZUxvYWRlcmAgYW5kCisgICA6Y2xhc3M6YEV4ZWN1dGlvbkxvYWRlcmAsIHByb3ZpZGluZyBjb25jcmVhdGUgaW1wbGVtZW50YXRpb25zIG9mCisgICA6bWV0aDpgUmVzb3VyY2VMb2FkZXIuZ2V0X2RhdGFgIGFuZCA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWAuCisKKyAgIFRoZSAqZnVsbG5hbWUqIGFyZ3VtZW50IGlzIGEgZnVsbHkgcmVzb2x2ZWQgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgaXMKKyAgIHRvIGhhbmRsZS4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3IgdGhlIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIGNhbiBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgUGF0aCB0byB0aGUgZmlsZSBvZiB0aGUgbW9kdWxlLgorCisgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgQ2FsbHMgc3VwZXIncyBgYGxvYWRfbW9kdWxlKClgYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aCkKKworICAgICAgUmV0dXJucyB0aGUgb3BlbiwgYmluYXJ5IGZpbGUgZm9yICpwYXRoKi4KKworCiAuLiBjbGFzczo6IFNvdXJjZUxvYWRlcgogCiAgICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIHNvdXJjZSAoYW5kIG9wdGlvbmFsbHkgYnl0ZWNvZGUpCkBAIC0yNDMsMTIgKzM3NywzMSBAQAogICAgIG9wdGltaXphdGlvbiB0byBzcGVlZCB1cCBsb2FkaW5nIGJ5IHJlbW92aW5nIHRoZSBwYXJzaW5nIHN0ZXAgb2YgUHl0aG9uJ3MKICAgICBjb21waWxlciwgYW5kIHNvIG5vIGJ5dGVjb2RlLXNwZWNpZmljIEFQSSBpcyBleHBvc2VkLgogCi0gICAgLi4gbWV0aG9kOjogcGF0aF9tdGltZShzZWxmLCBwYXRoKQorICAgIC4uIG1ldGhvZDo6IHBhdGhfc3RhdHMocGF0aCkKKworICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIDpjbGFzczpgZGljdGAgY29udGFpbmluZworICAgICAgICBtZXRhZGF0YSBhYm91dCB0aGUgc3BlY2lmZWQgcGF0aC4gIFN1cHBvcnRlZCBkaWN0aW9uYXJ5IGtleXMgYXJlOgorCisgICAgICAgIC0gYGAnbXRpbWUnYGAgKG1hbmRhdG9yeSk6IGFuIGludGVnZXIgb3IgZmxvYXRpbmctcG9pbnQgbnVtYmVyCisgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgc291cmNlIGNvZGU7CisgICAgICAgIC0gYGAnc2l6ZSdgYCAob3B0aW9uYWwpOiB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgQW55IG90aGVyIGtleXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGlnbm9yZWQsIHRvIGFsbG93IGZvciBmdXR1cmUKKyAgICAgICAgZXh0ZW5zaW9ucy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgIC4uIG1ldGhvZDo6IHBhdGhfbXRpbWUocGF0aCkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aC4KIAotICAgIC4uIG1ldGhvZDo6IHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpCisgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgOm1ldGg6YHBhdGhfc3RhdHNgLiAgWW91IGRvbid0CisgICAgICAgICAgIGhhdmUgdG8gaW1wbGVtZW50IGl0LCBidXQgaXQgaXMgc3RpbGwgYXZhaWxhYmxlIGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgIHB1cnBvc2VzLgorCisgICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd3JpdGVzIHRoZSBzcGVjaWZpZWQgYnl0ZXMgdG8gYSBmaWxlCiAgICAgICAgIHBhdGguIEFueSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgd2hpY2ggZG8gbm90IGV4aXN0IGFyZSB0byBiZSBjcmVhdGVkCkBAIC0yNTcsMjMgKzQxMCwyNSBAQAogICAgICAgICBXaGVuIHdyaXRpbmcgdG8gdGhlIHBhdGggZmFpbHMgYmVjYXVzZSB0aGUgcGF0aCBpcyByZWFkLW9ubHkKICAgICAgICAgKDphdHRyOmBlcnJuby5FQUNDRVNgKSwgZG8gbm90IHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLgogCi0gICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X2NvZGVgLgogCi0gICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YExvYWRlci5sb2FkX21vZHVsZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZWAuIEEgbW9kdWxlCi0gICAgICAgIGlzIGRldGVybWluZWQgdG8gYmUgYSBwYWNrYWdlIGlmIGl0cyBmaWxlIHBhdGggaXMgYSBmaWxlIG5hbWVkCi0gICAgICAgIGBgX19pbml0X19gYCB3aGVuIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyByZW1vdmVkLgorICAgICAgICBpcyBkZXRlcm1pbmVkIHRvIGJlIGEgcGFja2FnZSBpZiBpdHMgZmlsZSBwYXRoIChhcyBwcm92aWRlZCBieQorICAgICAgICA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWApIGlzIGEgZmlsZSBuYW1lZAorICAgICAgICBgYF9faW5pdF9fYGAgd2hlbiB0aGUgZmlsZSBleHRlbnNpb24gaXMgcmVtb3ZlZCAqKmFuZCoqIHRoZSBtb2R1bGUgbmFtZQorICAgICAgICBpdHNlbGYgZG9lcyBub3QgZW5kIGluIGBgX19pbml0X19gYC4KIAogCiAuLiBjbGFzczo6IFB5TG9hZGVyCkBAIC0zNzQsNiArNTI5LDEwIEBACiAgICAgICAgIDpjbGFzczpgUHlMb2FkZXJgLiBEbyBub3RlIHRoYXQgdGhpcyBzb2x1dGlvbiB3aWxsIG5vdCBzdXBwb3J0CiAgICAgICAgIHNvdXJjZWxlc3MvYnl0ZWNvZGUtb25seSBsb2FkaW5nOyBvbmx5IHNvdXJjZSAqYW5kKiBieXRlY29kZSBsb2FkaW5nLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBVcGRhdGVkIHRvIHBhcnNlIChidXQgbm90IHVzZSkgdGhlIG5ldyBzb3VyY2Ugc2l6ZSBmaWVsZCBpbiBieXRlY29kZQorICAgICAgIGZpbGVzIHdoZW4gcmVhZGluZyBhbmQgdG8gd3JpdGUgb3V0IHRoZSBmaWVsZCBwcm9wZXJseSB3aGVuIHdyaXRpbmcuCisKICAgICAuLiBtZXRob2Q6OiBzb3VyY2VfbXRpbWUoZnVsbG5hbWUpCiAKICAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgc291cmNlCkBAIC00MTcsMTIgKzU3Niw1OSBAQAogVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIHZhcmlvdXMgb2JqZWN0cyB0aGF0IGhlbHAgOmtleXdvcmQ6YGltcG9ydGAKIGZpbmQgYW5kIGxvYWQgbW9kdWxlcy4KIAorLi4gYXR0cmlidXRlOjogU09VUkNFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBzb3VyY2UKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG5vbi1vcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBvcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBCWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuIFNldCB0byBlaXRoZXIgOmF0dHI6YERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTYCBvcgorICAgOmF0dHI6YE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU2AgYmFzZWQgb24gd2hldGhlciBgYF9fZGVidWdfX2BgIGlzIHRydWUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBFWFRFTlNJT05fU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogYWxsX3N1ZmZpeGVzKCkKKworICAgUmV0dXJucyBhIGNvbWJpbmVkIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgYWxsIGZpbGUgc3VmZml4ZXMgZm9yCisgICBtb2R1bGVzIHJlY29nbml6ZWQgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkuIFRoaXMgaXMgYQorICAgaGVscGVyIGZvciBjb2RlIHdoaWNoIHNpbXBseSBuZWVkcyB0byBrbm93IGlmIGEgZmlsZXN5c3RlbSBwYXRoCisgICBwb3RlbnRpYWxseSByZWZlcnMgdG8gYSBtb2R1bGUgd2l0aG91dCBuZWVkaW5nIGFueSBkZXRhaWxzIG9uIHRoZSBraW5kCisgICBvZiBtb2R1bGUgKGZvciBleGFtcGxlLCA6ZnVuYzpgaW5zcGVjdC5nZXRtb2R1bGVuYW1lYCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gY2xhc3M6OiBCdWlsdGluSW1wb3J0ZXIKIAogICAgIEFuIDp0ZXJtOmBpbXBvcnRlcmAgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIEFsbCBrbm93biBidWlsdC1pbiBtb2R1bGVzIGFyZQogICAgIGxpc3RlZCBpbiA6ZGF0YTpgc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzYC4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZQotICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFuZCA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAKLSAgICBBQkNzLgorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgYW5kCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgIEFCQ3MuCiAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KQEAgLTQzMSw0OCArNjM3LDIyMyBAQAogLi4gY2xhc3M6OiBGcm96ZW5JbXBvcnRlcgogCiAgICAgQW4gOnRlcm06YGltcG9ydGVyYCBmb3IgZnJvemVuIG1vZHVsZXMuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgCi0gICAgQUJDcy4KKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYCBBQkNzLgogCiAgICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgogICAgIGluc3RhbnRpYXRpb24uCiAKIAorLi4gY2xhc3M6OiBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKKworICAgOnRlcm06YEZpbmRlcmAgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuICBUaGlzIGNsYXNzCisgICBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisKKyAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKKyAgIGluc3RhbnRpYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGNsYXNzOjogUGF0aEZpbmRlcgogCi0gICAgOnRlcm06YEZpbmRlcmAgZm9yIDpkYXRhOmBzeXMucGF0aGAuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisgICBBIDp0ZXJtOmBGaW5kZXJgIGZvciA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBwYWNrYWdlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGVzLgorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIEFCQy4KIAotICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgcGVyZmVjdGx5IG1pcnJvciB0aGUgc2VtYW50aWNzIG9mIDprZXl3b3JkOmBpbXBvcnRgIGluCi0gICAgdGVybXMgb2YgOmRhdGE6YHN5cy5wYXRoYC4gTm8gaW1wbGljaXQgcGF0aCBob29rcyBhcmUgYXNzdW1lZCBmb3IKLSAgICBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgY2xhc3MgYW5kIGl0cyBzZW1hbnRpY3MuCisgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCisgICBpbnN0YW50aWF0aW9uLgogCi0gICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgotICAgIGluc3RhbnRpYXRpb24uCisgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCiAKLSAgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisgICAgIENsYXNzIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGZpbmQgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIG1vZHVsZQorICAgICBzcGVjaWZpZWQgYnkgKmZ1bGxuYW1lKiBvbiA6ZGF0YTpgc3lzLnBhdGhgIG9yLCBpZiBkZWZpbmVkLCBvbgorICAgICAqcGF0aCouIEZvciBlYWNoIHBhdGggZW50cnkgdGhhdCBpcyBzZWFyY2hlZCwKKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpcyBjaGVja2VkLiBJZiBhIG5vbi1mYWxzZSBvYmplY3QgaXMKKyAgICAgZm91bmQgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSA6dGVybTpgZmluZGVyYCB0byBsb29rIGZvciB0aGUgbW9kdWxlCisgICAgIGJlaW5nIHNlYXJjaGVkIGZvci4gSWYgbm8gZW50cnkgaXMgZm91bmQgaW4KKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzCisgICAgIHNlYXJjaGVkIGZvciBhIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgYW5kLCBpZiBmb3VuZCwgaXMgc3RvcmVkIGluCisgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYWxvbmcgd2l0aCBiZWluZyBxdWVyaWVkIGFib3V0IHRoZQorICAgICBtb2R1bGUuIElmIG5vIGZpbmRlciBpcyBldmVyIGZvdW5kIHRoZW4gYGBOb25lYGAgaXMgYm90aCBzdG9yZWQgaW4KKyAgICAgdGhlIGNhY2hlIGFuZCByZXR1cm5lZC4KIAotICAgICAgICBDbGFzcyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBmaW5kIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgc3BlY2lmaWVkIGJ5ICpmdWxsbmFtZSogb24gOmRhdGE6YHN5cy5wYXRoYCBvciwgaWYgZGVmaW5lZCwgb24KLSAgICAgICAgKnBhdGgqLiBGb3IgZWFjaCBwYXRoIGVudHJ5IHRoYXQgaXMgc2VhcmNoZWQsCi0gICAgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgaXMgY2hlY2tlZC4gSWYgYW4gbm9uLWZhbHNlIG9iamVjdCBpcwotICAgICAgICBmb3VuZCB0aGVuIGl0IGlzIHVzZWQgYXMgdGhlIDp0ZXJtOmBmaW5kZXJgIHRvIGxvb2sgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgYmVpbmcgc2VhcmNoZWQgZm9yLiBJZiBubyBlbnRyeSBpcyBmb3VuZCBpbgotICAgICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMKLSAgICAgICAgc2VhcmNoZWQgZm9yIGEgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBhbmQsIGlmIGZvdW5kLCBpcyBzdG9yZWQgaW4KLSAgICAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbG9uZyB3aXRoIGJlaW5nIHF1ZXJpZWQgYWJvdXQgdGhlCi0gICAgICAgIG1vZHVsZS4gSWYgbm8gZmluZGVyIGlzIGV2ZXIgZm91bmQgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIGNsYXNzbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgIENhbGxzIDptZXRoOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2Agb24gYWxsCisgICAgIGZpbmRlcnMgc3RvcmVkIGluIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKKworLi4gY2xhc3M6OiBGaWxlRmluZGVyKHBhdGgsIFwqbG9hZGVyX2RldGFpbHMpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcmAgd2hpY2gKKyAgIGNhY2hlcyByZXN1bHRzIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICBUaGUgKnBhdGgqIGFyZ3VtZW50IGlzIHRoZSBkaXJlY3RvcnkgZm9yIHdoaWNoIHRoZSBmaW5kZXIgaXMgaW4gY2hhcmdlIG9mCisgICBzZWFyY2hpbmcuCisKKyAgIFRoZSAqbG9hZGVyX2RldGFpbHMqIGFyZ3VtZW50IGlzIGEgdmFyaWFibGUgbnVtYmVyIG9mIDItaXRlbSB0dXBsZXMgZWFjaAorICAgY29udGFpbmluZyBhIGxvYWRlciBhbmQgYSBzZXF1ZW5jZSBvZiBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcy4KKworICAgVGhlIGZpbmRlciB3aWxsIGNhY2hlIHRoZSBkaXJlY3RvcnkgY29udGVudHMgYXMgbmVjZXNzYXJ5LCBtYWtpbmcgc3RhdCBjYWxscworICAgZm9yIGVhY2ggbW9kdWxlIHNlYXJjaCB0byB2ZXJpZnkgdGhlIGNhY2hlIGlzIG5vdCBvdXRkYXRlZC4gQmVjYXVzZSBjYWNoZQorICAgc3RhbGVuZXNzIHJlbGllcyB1cG9uIHRoZSBncmFudWxhcml0eSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHN0YXRlCisgICBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0sIHRoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9mCisgICBzZWFyY2hpbmcgZm9yIGEgbW9kdWxlLCBjcmVhdGluZyBhIG5ldyBmaWxlLCBhbmQgdGhlbiBzZWFyY2hpbmcgZm9yIHRoZQorICAgbW9kdWxlIHRoZSBuZXcgZmlsZSByZXByZXNlbnRzLiBJZiB0aGUgb3BlcmF0aW9ucyBoYXBwZW4gZmFzdCBlbm91Z2ggdG8gZml0CisgICB3aXRoaW4gdGhlIGdyYW51bGFyaXR5IG9mIHN0YXQgY2FsbHMsIHRoZW4gdGhlIG1vZHVsZSBzZWFyY2ggd2lsbCBmYWlsLiBUbworICAgcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nLCB3aGVuIHlvdSBjcmVhdGUgYSBtb2R1bGUgZHluYW1pY2FsbHksIG1ha2Ugc3VyZQorICAgdG8gY2FsbCA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdGhlIGZpbmRlciB3aWxsIHNlYXJjaCBpbi4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICAgIEF0dGVtcHQgdG8gZmluZCB0aGUgbG9hZGVyIHRvIGhhbmRsZSAqZnVsbG5hbWUqIHdpdGhpbiA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQ2xlYXIgb3V0IHRoZSBpbnRlcm5hbCBjYWNoZS4KKworICAgLi4gY2xhc3NtZXRob2Q6OiBwYXRoX2hvb2soXCpsb2FkZXJfZGV0YWlscykKKworICAgICAgQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgZm9yIHVzZSBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLgorICAgICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBGaWxlRmluZGVyYCBpcyByZXR1cm5lZCBieSB0aGUgY2xvc3VyZSB1c2luZyB0aGUKKyAgICAgIHBhdGggYXJndW1lbnQgZ2l2ZW4gdG8gdGhlIGNsb3N1cmUgZGlyZWN0bHkgYW5kICpsb2FkZXJfZGV0YWlscyoKKyAgICAgIGluZGlyZWN0bHkuCisKKyAgICAgIElmIHRoZSBhcmd1bWVudCB0byB0aGUgY2xvc3VyZSBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LAorICAgICAgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCisuLiBjbGFzczo6IFNvdXJjZUZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcmAgYnkKKyAgIHN1YmNsYXNzaW5nIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCBhbmQgcHJvdmlkaW5nIHNvbWUgY29uY3JldGUKKyAgIGltcGxlbWVudGF0aW9ucyBvZiBvdGhlciBtZXRob2RzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgdGhpcyBsb2FkZXIgd2lsbCBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm4gdHJ1ZSBpZiA6YXR0cjpgcGF0aGAgYXBwZWFycyB0byBiZSBmb3IgYSBwYWNrYWdlLgorCisgICAuLiBtZXRob2Q6OiBwYXRoX3N0YXRzKHBhdGgpCisKKyAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYC4KKworICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKKworICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnNldF9kYXRhYC4KKworCisuLiBjbGFzczo6IFNvdXJjZWxlc3NGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCB3aGljaCBjYW4KKyAgIGltcG9ydCBieXRlY29kZSBmaWxlcyAoaS5lLiBubyBzb3VyY2UgY29kZSBmaWxlcyBleGlzdCkuCisKKyAgIFBsZWFzZSBub3RlIHRoYXQgZGlyZWN0IHVzZSBvZiBieXRlY29kZSBmaWxlcyAoYW5kIHRodXMgbm90IHNvdXJjZSBjb2RlCisgICBmaWxlcykgaW5oaWJpdHMgeW91ciBtb2R1bGVzIGZyb20gYmVpbmcgdXNhYmxlIGJ5IGFsbCBQeXRob24KKyAgIGltcGxlbWVudGF0aW9ucyBvciBuZXcgdmVyc2lvbnMgb2YgUHl0aG9uIHdoaWNoIGNoYW5nZSB0aGUgYnl0ZWNvZGUKKyAgIGZvcm1hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHdpbGwgaGFuZGxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBwYXRoIHRvIHRoZSBieXRlY29kZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBEZXRlcm1pbmVzIGlmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIGJhc2VkIG9uIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgdGhlIGNvZGUgb2JqZWN0IGZvciA6YXR0cjpgbmFtZWAgY3JlYXRlZCBmcm9tIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBieXRlY29kZSBmaWxlcyBoYXZlIG5vIHNvdXJjZSB3aGVuIHRoaXMgbG9hZGVyIGlzCisgICAgICB1c2VkLgorCisKKy4uIGNsYXNzOjogRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgVGhlICpmdWxsbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBpcyB0bworICAgc3VwcG9ydC4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZSdzIGZpbGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIE5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHN1cHBvcnRzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFBhdGggdG8gdGhlIGV4dGVuc2lvbiBtb2R1bGUuCisKKyAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgICBMb2FkcyB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpZiBhbmQgb25seSBpZiAqZnVsbG5hbWUqIGlzIHRoZSBzYW1lIGFzCisgICAgICA6YXR0cjpgbmFtZWAgb3IgaXMgYGBOb25lYGAuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBUcnVlYGAgaWYgdGhlIGZpbGUgcGF0aCBwb2ludHMgdG8gYSBwYWNrYWdlJ3MgYGBfX2luaXRfX2BgCisgICAgICBtb2R1bGUgYmFzZWQgb24gOmF0dHI6YEVYVEVOU0lPTl9TVUZGSVhFU2AuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgTm9uZWBgIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGxhY2sgYSBjb2RlIG9iamVjdC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBleHRlbnNpb24gbW9kdWxlcyBkbyBub3QgaGF2ZSBzb3VyY2UgY29kZS4KIAogCiA6bW9kOmBpbXBvcnRsaWIudXRpbGAgLS0gVXRpbGl0eSBjb2RlIGZvciBpbXBvcnRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBtb2R1bGU6OiBpbXBvcnRsaWIudXRpbAotICAgIDpzeW5vcHNpczogSW1wb3J0ZXJzIGFuZCBwYXRoIGhvb2tzCisgICAgOnN5bm9wc2lzOiBVdGlsaXR5IGNvZGUgZm9yIGltcG9ydGVycwogCiBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgdmFyaW91cyBvYmplY3RzIHRoYXQgaGVscCBpbiB0aGUgY29uc3RydWN0aW9uIG9mCiBhbiA6dGVybTpgaW1wb3J0ZXJgLgogCisuLiBmdW5jdGlvbjo6IHJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKQorCisgICBSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLgorCisgICBJZiAgKipuYW1lKiogaGFzIG5vIGxlYWRpbmcgZG90cywgdGhlbiAqKm5hbWUqKiBpcyBzaW1wbHkgcmV0dXJuZWQuIFRoaXMKKyAgIGFsbG93cyBmb3IgdXNhZ2Ugc3VjaCBhcworICAgYGBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoJ3N5cycsIF9fcGFja2FnZV9fKWBgIHdpdGhvdXQgZG9pbmcgYQorICAgY2hlY2sgdG8gc2VlIGlmIHRoZSAqKnBhY2thZ2UqKiBhcmd1bWVudCBpcyBuZWVkZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqKm5hbWUqKiBpcyBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIGJ1dAorICAgcGFja2FnZSBpcyBhIGZhbHNlIHZhbHVlIChlLmcuIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcpLgorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgYWxzbyByYWlzZWQgYSByZWxhdGl2ZSBuYW1lIHdvdWxkIGVzY2FwZSBpdHMgY29udGFpbmluZworICAgcGFja2FnZSAoZS5nLiByZXF1ZXN0aW5nIGBgLi5iYWNvbmBgIGZyb20gd2l0aGluIHRoZSBgYHNwYW1gYCBwYWNrYWdlKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKICAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciBhIDp0ZXJtOmBsb2FkZXJgIG1ldGhvZCwKQEAgLTQ4MSwyMiArODYyLDMwIEBACiAgICAgc2lnbmF0dXJlIHRha2luZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMKICAgICAoZS5nLiBgYGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSlgYCkgZm9yIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQKICAgICB3aWxsIGJlIHRoZSBtb2R1bGUgKipvYmplY3QqKiB0byBiZSB1c2VkIGJ5IHRoZSBsb2FkZXIuCi0gICAgTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3IKLSAgICB3aWxsIG5vdCB3b3JrIG9uIHN0YXRpYyBtZXRob2RzIGJlY2F1c2Ugb2YgdGhlIGFzc3VtcHRpb24gb2YgdHdvCi0gICAgYXJndW1lbnRzLgorICAgIE5vdGUgdGhhdCB0aGUgZGVjb3JhdG9yIHdpbGwgbm90IHdvcmsgb24gc3RhdGljIG1ldGhvZHMgYmVjYXVzZSBvZiB0aGUKKyAgICBhc3N1bXB0aW9uIG9mIHR3byBhcmd1bWVudHMuCiAKICAgICBUaGUgZGVjb3JhdGVkIG1ldGhvZCB3aWxsIHRha2UgaW4gdGhlICoqbmFtZSoqIG9mIHRoZSBtb2R1bGUgdG8gYmUgbG9hZGVkCiAgICAgYXMgZXhwZWN0ZWQgZm9yIGEgOnRlcm06YGxvYWRlcmAuIElmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGEgbmV3IG9uZSBpcyBjb25zdHJ1Y3RlZCB3aXRoIGl0cwotICAgIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHNldC4gT3RoZXJ3aXNlIHRoZSBtb2R1bGUgZm91bmQgaW4KLSAgICA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIG1ldGhvZC4gSWYgYW4KLSAgICBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGFuZCBhIG1vZHVsZSB3YXMgYWRkZWQgdG8KKyAgICA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZSBzZXQgdG8gKipuYW1lKiosIDphdHRyOmBfX2xvYWRlcl9fYCBzZXQgdG8KKyAgICAqKnNlbGYqKiwgYW5kIDphdHRyOmBfX3BhY2thZ2VfX2Agc2V0IGlmCisgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5pc19wYWNrYWdlYCBpcyBkZWZpbmVkIGZvciAqKnNlbGYqKiBhbmQKKyAgICBkb2VzIG5vdCByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZm9yICoqbmFtZSoqLiBJZiBhIG5ldyBtb2R1bGUgaXMgbm90CisgICAgbmVlZGVkIHRoZW4gdGhlIG1vZHVsZSBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlCisgICAgbWV0aG9kLgorCisgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB0aGUgZGVjb3JhdGVkIG1ldGhvZCBhbmQgYSBtb2R1bGUgd2FzIGFkZGVkIHRvCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCB3aWxsIGJlIHJlbW92ZWQgdG8gcHJldmVudCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAogICAgIG1vZHVsZSBmcm9tIGJlaW5nIGluIGxlZnQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gSWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeQogICAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBpdCBpcyBsZWZ0IGFsb25lLgogCiAgICAgVXNlIG9mIHRoaXMgZGVjb3JhdG9yIGhhbmRsZXMgYWxsIHRoZSBkZXRhaWxzIG9mIHdoaWNoIG1vZHVsZSBvYmplY3QgYQotICAgIGxvYWRlciBzaG91bGQgaW5pdGlhbGl6ZSBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgMzAyYC4KKyAgICBsb2FkZXIgc2hvdWxkIGluaXRpYWxpemUgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDMwMmAgYXMgYmVzdCBhcyBwb3NzaWJsZS4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgOmF0dHI6YF9fbG9hZGVyX19gIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gIGFyZSBhdXRvbWF0aWNhbGx5IHNldAorICAgICAgICh3aGVuIHBvc3NpYmxlKS4KIAogLi4gZGVjb3JhdG9yOjogc2V0X2xvYWRlcgogCkBAIC01MDQsNyArODkzLDEzIEBACiAgICAgdG8gc2V0IHRoZSA6YXR0cjpgX19sb2FkZXJfX2AKICAgICBhdHRyaWJ1dGUgb24gbG9hZGVkIG1vZHVsZXMuIElmIHRoZSBhdHRyaWJ1dGUgaXMgYWxyZWFkeSBzZXQgdGhlIGRlY29yYXRvcgogICAgIGRvZXMgbm90aGluZy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50IHRvIHRoZQotICAgIHdyYXBwZWQgbWV0aG9kIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisgICAgd3JhcHBlZCBtZXRob2QgKGkuZS4gYGBzZWxmYGApIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKKyAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIApAQCAtNTE1LDggKzkxMCwxMiBAQAogICAgIHNldCBvbiBhbmQgbm90IHRoZSBtb2R1bGUgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KIAogICAgIFJlbGlhbmNlIG9uIHRoaXMgZGVjb3JhdG9yIGlzIGRpc2NvdXJhZ2VkIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gc2V0Ci0gICAgOmF0dHI6YF9fcGFja2FnZV9fYCBiZWZvcmUgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSBpcyBwb3NzaWJsZS4gQnkKLSAgICBzZXR0aW5nIGl0IGJlZm9yZSB0aGUgY29kZSBmb3IgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCBpdCBhbGxvd3MgdGhlCi0gICAgYXR0cmlidXRlIHRvIGJlIHVzZWQgYXQgdGhlIGdsb2JhbCBsZXZlbCBvZiB0aGUgbW9kdWxlIGR1cmluZworICAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYmVmb3JlIGltcG9ydGluZy4gQnkKKyAgICBzZXR0aW5nIGl0IGJlZm9yZWhhbmQgdGhlIGNvZGUgZm9yIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgd2l0aCB0aGUKKyAgICBhdHRyaWJ1dGUgc2V0IGFuZCB0aHVzIGNhbiBiZSB1c2VkIGJ5IGdsb2JhbCBsZXZlbCBjb2RlIGR1cmluZwogICAgIGluaXRpYWxpemF0aW9uLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCA6ZnVuYzpgbW9kdWxlX2Zvcl9sb2FkZXJgIGJlIHVzZWQgb3ZlciB0aGlzCisgICAgICBkZWNvcmF0b3IgYXMgaXQgc3Vic3VtZXMgdGhpcyBmdW5jdGlvbmFsaXR5LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5kZXgucnN0IGIvRG9jL2xpYnJhcnkvaW5kZXgucnN0CmluZGV4IDlhYzY4OGMuLmJhMjAzNjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luZGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbmRleC5yc3QKQEAgLTQ2LDcgKzQ2LDggQEAKICAgIHN0ZHR5cGVzLnJzdAogICAgZXhjZXB0aW9ucy5yc3QKIAotICAgc3RyaW5ncy5yc3QKKyAgIHRleHQucnN0CisgICBiaW5hcnkucnN0CiAgICBkYXRhdHlwZXMucnN0CiAgICBudW1lcmljLnJzdAogICAgZnVuY3Rpb25hbC5yc3QKQEAgLTU2LDcgKzU3LDcgQEAKICAgIGZpbGVmb3JtYXRzLnJzdAogICAgY3J5cHRvLnJzdAogICAgYWxsb3MucnN0Ci0gICBzb21lb3MucnN0CisgICBjb25jdXJyZW5jeS5yc3QKICAgIGlwYy5yc3QKICAgIG5ldGRhdGEucnN0CiAgICBtYXJrdXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IGQxMjdjZTguLjQwNTBhYjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0xOTAsMTMgKzE5MCwyNiBAQAogICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQogICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCisgICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCi0gICBuYW1lcyBvZiBlbmNsb3NpbmcgcGFja2FnZXMuICBUaGlzIHVzZXMgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIHRoZSBpbnRlcnByZXRlcgotICAgdXNlcyB3aGVuIHNlYXJjaGluZyBmb3IgbW9kdWxlcy4gIElmIHRoZSBuYW1lIGNhbm5vdCBiZSBtYXRjaGVkIGFjY29yZGluZyB0byB0aGUKLSAgIGludGVycHJldGVyJ3MgcnVsZXMsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgbmFtZXMgb2YgZW5jbG9zaW5nIHBhY2thZ2VzLiBUaGUgZmlsZSBleHRlbnNpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IGFsbCBvZgorICAgdGhlIGVudHJpZXMgaW4gOmZ1bmM6YGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzYC4gSWYgaXQgbWF0Y2hlcywKKyAgIHRoZSBmaW5hbCBwYXRoIGNvbXBvbmVudCBpcyByZXR1cm5lZCB3aXRoIHRoZSBleHRlbnNpb24gcmVtb3ZlZC4KKyAgIE90aGVyd2lzZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uICpvbmx5KiByZXR1cm5zIGEgbWVhbmluZ2Z1bCBuYW1lIGZvciBhY3R1YWwKKyAgIFB5dGhvbiBtb2R1bGVzIC0gcGF0aHMgdGhhdCBwb3RlbnRpYWxseSByZWZlciB0byBQeXRob24gcGFja2FnZXMgd2lsbAorICAgc3RpbGwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiB0aGUKKyAgICAgIGRlcHJlY2F0ZWQgOmZ1bmM6YGdldG1vZHVsZWluZm9gLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtMzU1LDE3ICszNjgsMjUgQEAKICAgIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUKICAgIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgdGhlIGxpbmVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICBvYmplY3QgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRpY2F0ZXMgd2hlcmUgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdAotICAgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90CisgICBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QKICAgIGJlIHJldHJpZXZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YElPRXJyb3JgLCBub3cgYW4gYWxpYXMgb2YgdGhlCisgICAgICBmb3JtZXIuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzb3VyY2Uob2JqZWN0KQogCiAgICBSZXR1cm4gdGhlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciBhbiBvYmplY3QuIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsCiAgICBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMKLSAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKKyAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKICAgIGNhbm5vdCBiZSByZXRyaWV2ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIHRoZQorICAgICAgZm9ybWVyLgorCiAKIC4uIGZ1bmN0aW9uOjogY2xlYW5kb2MoZG9jKQogCkBAIC0zNzQsNiArMzk1LDI2NCBAQAogICAgb253YXJkcyBpcyByZW1vdmVkLiAgQWxzbywgYWxsIHRhYnMgYXJlIGV4cGFuZGVkIHRvIHNwYWNlcy4KIAogCisuLiBfaW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0OgorCitJbnRyb3NwZWN0aW5nIGNhbGxhYmxlcyB3aXRoIHRoZSBTaWduYXR1cmUgb2JqZWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBjYWxsIHNpZ25hdHVyZSBvZiBhIGNhbGxhYmxlIG9iamVjdCBhbmQgaXRzCityZXR1cm4gYW5ub3RhdGlvbi4gIFRvIHJldHJpZXZlIGEgU2lnbmF0dXJlIG9iamVjdCwgdXNlIHRoZSA6ZnVuYzpgc2lnbmF0dXJlYAorZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogc2lnbmF0dXJlKGNhbGxhYmxlKQorCisgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYGBjYWxsYWJsZWBgOjoKKworICAgICAgPj4+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+YAorICAgICAgaW50ZXJmYWNlLCB3aGljaCBwcm92aWRlcyBhIGJldHRlciB3YXkgb2YgaW50cm9zcGVjdGluZyBmdW5jdGlvbnMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhcmd2YWx1ZXMoZnJhbWUpCiAKQEAgLTQzMiwxMSArNzE2LDE2IEBACiAgICBsb2NhbHMgZGljdGlvbmFyeSBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAKIAotLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlXSkKKy4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlLCBmb3JtYXRyZXR1cm5zLCBmb3JtYXRhbm5vdGF0aW9uc10pCiAKLSAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIGZvdXIgdmFsdWVzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgZ2V0YXJnc3BlY2AuICBUaGUgZm9ybWF0XCogYXJndW1lbnRzIGFyZSB0aGUgY29ycmVzcG9uZGluZyBvcHRpb25hbAotICAgZm9ybWF0dGluZyBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHRvIHR1cm4gbmFtZXMgYW5kIHZhbHVlcyBpbnRvIHN0cmluZ3MuCisgICBGb3JtYXQgYSBwcmV0dHkgYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBnZXRhcmdzcGVjYCBvciA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgLgorCisgICBUaGUgZmlyc3Qgc2V2ZW4gYXJndW1lbnRzIGFyZSAoYGBhcmdzYGAsIGBgdmFyYXJnc2BgLCBgYHZhcmt3YGAsCisgICBgYGRlZmF1bHRzYGAsIGBga3dvbmx5YXJnc2BgLCBgYGt3b25seWRlZmF1bHRzYGAsIGBgYW5ub3RhdGlvbnNgYCkuIFRoZQorICAgb3RoZXIgZml2ZSBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsIGZvcm1hdHRpbmcgZnVuY3Rpb25zCisgICB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4gVGhlIGxhc3QgYXJndW1lbnQKKyAgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgc2VxdWVuY2Ugb2YgYXJndW1lbnRzLgogCiAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJndmFsdWVzKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZV0pCkBAIC00NjgsMTcgKzc1NywzNiBAQAogICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGdldGNhbGxhcmdzCiAgICAgPj4+IGRlZiBmKGEsIGI9MSwgKnBvcywgKipuYW1lZCk6CiAgICAgLi4uICAgICBwYXNzCi0gICAgPj4+IGdldGNhbGxhcmdzKGYsIDEsIDIsIDMpCi0gICAgeydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9Ci0gICAgPj4+IGdldGNhbGxhcmdzKGYsIGE9MiwgeD00KQotICAgIHsnYSc6IDIsICduYW1lZCc6IHsneCc6IDR9LCAnYic6IDEsICdwb3MnOiAoKX0KKyAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgMSwgMiwgMykgPT0geydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9CisgICAgVHJ1ZQorICAgID4+PiBnZXRjYWxsYXJncyhmLCBhPTIsIHg9NCkgPT0geydhJzogMiwgJ25hbWVkJzogeyd4JzogNH0sICdiJzogMSwgJ3Bvcyc6ICgpfQorICAgIFRydWUKICAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2EnCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBub3RlOjoKKyAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBpbnN0ZWFkLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y2xvc3VyZXZhcnMoZnVuYykKKworICAgR2V0IHRoZSBtYXBwaW5nIG9mIGV4dGVybmFsIG5hbWUgcmVmZXJlbmNlcyBpbiBhIFB5dGhvbiBmdW5jdGlvbiBvcgorICAgbWV0aG9kICpmdW5jKiB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4gQQorICAgOnRlcm06YG5hbWVkIHR1cGxlYCBgYENsb3N1cmVWYXJzKG5vbmxvY2FscywgZ2xvYmFscywgYnVpbHRpbnMsIHVuYm91bmQpYGAKKyAgIGlzIHJldHVybmVkLiAqbm9ubG9jYWxzKiBtYXBzIHJlZmVyZW5jZWQgbmFtZXMgdG8gbGV4aWNhbCBjbG9zdXJlCisgICB2YXJpYWJsZXMsICpnbG9iYWxzKiB0byB0aGUgZnVuY3Rpb24ncyBtb2R1bGUgZ2xvYmFscyBhbmQgKmJ1aWx0aW5zKiB0bworICAgdGhlIGJ1aWx0aW5zIHZpc2libGUgZnJvbSB0aGUgZnVuY3Rpb24gYm9keS4gKnVuYm91bmQqIGlzIHRoZSBzZXQgb2YgbmFtZXMKKyAgIHJlZmVyZW5jZWQgaW4gdGhlIGZ1bmN0aW9uIHRoYXQgY291bGQgbm90IGJlIHJlc29sdmVkIGF0IGFsbCBnaXZlbiB0aGUKKyAgIGN1cnJlbnQgbW9kdWxlIGdsb2JhbHMgYW5kIGJ1aWx0aW5zLgorCisgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiAqZnVuYyogaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uIG9yIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gX2luc3BlY3Qtc3RhY2s6CiAKQEAgLTY0MywzICs5NTEsMjcgQEAKICAgICAqIEdFTl9DTE9TRUQ6IEV4ZWN1dGlvbiBoYXMgY29tcGxldGVkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworVGhlIGN1cnJlbnQgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBjYW4gYWxzbyBiZSBxdWVyaWVkLiBUaGlzIGlzCittb3N0bHkgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB0byBlbnN1cmUgdGhhdCBpbnRlcm5hbCBzdGF0ZSBpcyBiZWluZwordXBkYXRlZCBhcyBleHBlY3RlZDoKKworLi4gZnVuY3Rpb246OiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKQorCisgICBHZXQgdGhlIG1hcHBpbmcgb2YgbGl2ZSBsb2NhbCB2YXJpYWJsZXMgaW4gKmdlbmVyYXRvciogdG8gdGhlaXIgY3VycmVudAorICAgdmFsdWVzLiAgQSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHRoYXQgbWFwcyBmcm9tIHZhcmlhYmxlIG5hbWVzIHRvIHZhbHVlcy4KKyAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgY2FsbGluZyA6ZnVuYzpgbG9jYWxzYCBpbiB0aGUgYm9keSBvZiB0aGUKKyAgIGdlbmVyYXRvciwgYW5kIGFsbCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LgorCisgICBJZiAqZ2VuZXJhdG9yKiBpcyBhIDp0ZXJtOmBnZW5lcmF0b3JgIHdpdGggbm8gY3VycmVudGx5IGFzc29jaWF0ZWQgZnJhbWUsCisgICB0aGVuIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQuICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmdlbmVyYXRvciogaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciBvYmplY3QuCisKKyAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGdlbmVyYXRvciBleHBvc2luZyBhIFB5dGhvbiBzdGFjayBmcmFtZQorICAgICAgZm9yIGludHJvc3BlY3Rpb24sIHdoaWNoIGlzbid0IGd1YXJhbnRlZWQgdG8gYmUgdGhlIGNhc2UgaW4gYWxsCisgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLiBJbiBzdWNoIGNhc2VzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzCisgICAgICByZXR1cm4gYW4gZW1wdHkgZGljdGlvbmFyeS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QgYi9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QKaW5kZXggNmZhNzg3My4uY2U5MWRkZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdApAQCAtNDIsMyArNDIsNCBAQAogICAgaHR0cC5jb29raWVqYXIucnN0CiAgICB4bWxycGMuY2xpZW50LnJzdAogICAgeG1scnBjLnNlcnZlci5yc3QKKyAgIGlwYWRkcmVzcy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCA2MmVhZjZkLi5lODNlNTVjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC0zNyw2ICszNywxMCBAQAogd2lsbCByYWlzZSBhIGBgVHlwZUVycm9yYGAuICBTbyB3aWxsIGdpdmluZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB0byB0aGUKIGBgd3JpdGUoKWBgIG1ldGhvZCBvZiBhIHRleHQgc3RyZWFtLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyB0aGF0IHVzZWQgdG8gcmFpc2UgOmV4YzpgSU9FcnJvcmAgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzaW5jZQorICAgOmV4YzpgSU9FcnJvcmAgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIFRleHQgSS9PCiBeXl5eXl5eXgpAQCAtNTUsNyArNTksNyBAQAogCiAgICBmID0gaW8uU3RyaW5nSU8oInNvbWUgaW5pdGlhbCB0ZXh0IGRhdGEiKQogCi1UaGUgdGV4dCBzdHJlYW0gQVBJIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQorVGhlIHRleHQgc3RyZWFtIEFQSSBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mCiA6Y2xhc3M6YFRleHRJT0Jhc2VgLgogCiAKQEAgLTExMywyMSArMTE3LDEzIEBACiAKIC4uIGV4Y2VwdGlvbjo6IEJsb2NraW5nSU9FcnJvcgogCi0gICBFcnJvciByYWlzZWQgd2hlbiBibG9ja2luZyB3b3VsZCBvY2N1ciBvbiBhIG5vbi1ibG9ja2luZyBzdHJlYW0uICBJdCBpbmhlcml0cwotICAgOmV4YzpgSU9FcnJvcmAuCi0KLSAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGhhcyBvbmUKLSAgIGF0dHJpYnV0ZToKLQotICAgLi4gYXR0cmlidXRlOjogY2hhcmFjdGVyc193cml0dGVuCi0KLSAgICAgIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiB0byB0aGUgc3RyZWFtCi0gICAgICBiZWZvcmUgaXQgYmxvY2tlZC4KKyAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IGFsaWFzIGZvciB0aGUgYnVpbHRpbiA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgCisgICBleGNlcHRpb24uCiAKIAogLi4gZXhjZXB0aW9uOjogVW5zdXBwb3J0ZWRPcGVyYXRpb24KIAotICAgQW4gZXhjZXB0aW9uIGluaGVyaXRpbmcgOmV4YzpgSU9FcnJvcmAgYW5kIDpleGM6YFZhbHVlRXJyb3JgIHRoYXQgaXMgcmFpc2VkCisgICBBbiBleGNlcHRpb24gaW5oZXJpdGluZyA6ZXhjOmBPU0Vycm9yYCBhbmQgOmV4YzpgVmFsdWVFcnJvcmAgdGhhdCBpcyByYWlzZWQKICAgIHdoZW4gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIGNhbGxlZCBvbiBhIHN0cmVhbS4KIAogCkBAIC0yMDYsOCArMjAyLDggQEAKICAgIEV2ZW4gdGhvdWdoIDpjbGFzczpgSU9CYXNlYCBkb2VzIG5vdCBkZWNsYXJlIDptZXRoOmByZWFkYCwgOm1ldGg6YHJlYWRpbnRvYCwKICAgIG9yIDptZXRoOmB3cml0ZWAgYmVjYXVzZSB0aGVpciBzaWduYXR1cmVzIHdpbGwgdmFyeSwgaW1wbGVtZW50YXRpb25zIGFuZAogICAgY2xpZW50cyBzaG91bGQgY29uc2lkZXIgdGhvc2UgbWV0aG9kcyBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UuICBBbHNvLAotICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YElPRXJyb3JgIHdoZW4gb3BlcmF0aW9ucyB0aGV5IGRvIG5vdAotICAgc3VwcG9ydCBhcmUgY2FsbGVkLgorICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIChvciA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmApCisgICB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3Qgc3VwcG9ydCBhcmUgY2FsbGVkLgogCiAgICBUaGUgYmFzaWMgdHlwZSB1c2VkIGZvciBiaW5hcnkgZGF0YSByZWFkIGZyb20gb3Igd3JpdHRlbiB0byBhIGZpbGUgaXMKICAgIDpjbGFzczpgYnl0ZXNgLiAgOmNsYXNzOmBieXRlYXJyYXlgXHMgYXJlIGFjY2VwdGVkIHRvbywgYW5kIGluIHNvbWUgY2FzZXMKQEAgLTIxNSwxNSArMjExLDE1IEBACiAgICA6Y2xhc3M6YHN0cmAgZGF0YS4KIAogICAgTm90ZSB0aGF0IGNhbGxpbmcgYW55IG1ldGhvZCAoZXZlbiBpbnF1aXJpZXMpIG9uIGEgY2xvc2VkIHN0cmVhbSBpcwotICAgdW5kZWZpbmVkLiAgSW1wbGVtZW50YXRpb25zIG1heSByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpbiB0aGlzIGNhc2UuCisgICB1bmRlZmluZWQuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgIGluIHRoaXMgY2FzZS4KIAotICAgSU9CYXNlIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nIHRoYXQgYW4KLSAgIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEgc3RyZWFtLgotICAgTGluZXMgYXJlIGRlZmluZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHN0cmVhbSBpcwotICAgYSBiaW5hcnkgc3RyZWFtICh5aWVsZGluZyBieXRlcyksIG9yIGEgdGV4dCBzdHJlYW0gKHlpZWxkaW5nIGNoYXJhY3RlcgotICAgc3RyaW5ncykuICBTZWUgOm1ldGg6YH5JT0Jhc2UucmVhZGxpbmVgIGJlbG93LgorICAgOmNsYXNzOmBJT0Jhc2VgIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nCisgICB0aGF0IGFuIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEKKyAgIHN0cmVhbS4gIExpbmVzIGFyZSBkZWZpbmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICAgc3RyZWFtIGlzIGEgYmluYXJ5IHN0cmVhbSAoeWllbGRpbmcgYnl0ZXMpLCBvciBhIHRleHQgc3RyZWFtICh5aWVsZGluZworICAgY2hhcmFjdGVyIHN0cmluZ3MpLiAgU2VlIDptZXRoOmB+SU9CYXNlLnJlYWRsaW5lYCBiZWxvdy4KIAotICAgSU9CYXNlIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgSU9CYXNlYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgSW4gdGhpcyBleGFtcGxlLCAqZmlsZSogaXMgY2xvc2VkIGFmdGVyIHRoZQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCdzIHN1aXRlIGlzIGZpbmlzaGVkLS0tZXZlbiBpZiBhbiBleGNlcHRpb24gb2NjdXJzOjoKIApAQCAtMjQzLDEyICsyMzksMTIgQEAKIAogICAgLi4gYXR0cmlidXRlOjogY2xvc2VkCiAKLSAgICAgIFRydWUgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KIAogICAgLi4gbWV0aG9kOjogZmlsZW5vKCkKIAogICAgICAgUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikgb2YgdGhlIHN0cmVhbSBpZiBpdAotICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQorICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQogICAgICAgZGVzY3JpcHRvci4KIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQpAQCAtMjY0LDcgKzI2MCw3IEBACiAgICAuLiBtZXRob2Q6OiByZWFkYWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGNhbiBiZSByZWFkIGZyb20uICBJZiBGYWxzZSwgOm1ldGg6YHJlYWRgCi0gICAgICB3aWxsIHJhaXNlIDpleGM6YElPRXJyb3JgLgorICAgICAgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gbWV0aG9kOjogcmVhZGxpbmUobGltaXQ9LTEpCiAKQEAgLTI5OSwxMCArMjk1LDE1IEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKICAgICAgICAgIFRoZSBgYFNFRUtfKmBgIGNvbnN0YW50cy4KIAorICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIGNvdWxkIHN1cHBvcnQgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgICAgIDpkYXRhOmBvcy5TRUVLX0hPTEVgIG9yIDpkYXRhOmBvcy5TRUVLX0RBVEFgLiBUaGUgdmFsaWQgdmFsdWVzCisgICAgICAgICBmb3IgYSBmaWxlIGNvdWxkIGRlcGVuZCBvbiBpdCBiZWluZyBvcGVuIGluIHRleHQgb3IgYmluYXJ5IG1vZGUuCisKICAgIC4uIG1ldGhvZDo6IHNlZWthYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy4gIElmIGBgRmFsc2VgYCwKLSAgICAgIDptZXRoOmBzZWVrYCwgOm1ldGg6YHRlbGxgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCBhbmQgOm1ldGg6YHRydW5jYXRlYCB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiB0ZWxsKCkKIApAQCAtMzIwLDcgKzMyMSw3IEBACiAgICAuLiBtZXRob2Q6OiB3cml0YWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIHN1cHBvcnRzIHdyaXRpbmcuICBJZiBgYEZhbHNlYGAsCi0gICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlbGluZXMobGluZXMpCiAKQEAgLTMzOSw3ICszNDAsNyBAQAogICAgKHRoaXMgaXMgbGVmdCB0byBCdWZmZXJlZCBJL08gYW5kIFRleHQgSS9PLCBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBwYWdlKS4KIAogICAgSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgZnJvbSA6Y2xhc3M6YElPQmFzZWAsCi0gICBSYXdJT0Jhc2UgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOmNsYXNzOmBSYXdJT0Jhc2VgIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCkBAIC0zNTksMTggKzM2MCwxOCBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyCi0gICAgICBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KKyAgICAgIFJlYWQgdXAgdG8gYGBsZW4oYilgYCBieXRlcyBpbnRvIDpjbGFzczpgYnl0ZWFycmF5YCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KICAgICAgIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqLCB0byB0aGUgdW5kZXJseWluZyByYXcKLSAgICAgIHN0cmVhbSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIFRoaXMgY2FuIGJlIGxlc3MgdGhhbgotICAgICAgYGBsZW4oYilgYCwgZGVwZW5kaW5nIG9uIHNwZWNpZmljcyBvZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtLCBhbmQKLSAgICAgIGVzcGVjaWFsbHkgaWYgaXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBgYE5vbmVgYCBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIHJhdyBzdHJlYW0gaXMgc2V0IG5vdCB0byBibG9jayBhbmQgbm8gc2luZ2xlIGJ5dGUgY291bGQgYmUgcmVhZGlseQotICAgICAgd3JpdHRlbiB0byBpdC4KKyAgICAgIFdyaXRlIHRoZSBnaXZlbiA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiosIHRvIHRoZQorICAgICAgdW5kZXJseWluZyByYXcgc3RyZWFtIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4KKyAgICAgIGJlIGxlc3MgdGhhbiBgYGxlbihiKWBgLCBkZXBlbmRpbmcgb24gc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIHJhdworICAgICAgc3RyZWFtLCBhbmQgZXNwZWNpYWxseSBpZiBpdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4gIGBgTm9uZWBgIGlzCisgICAgICByZXR1cm5lZCBpZiB0aGUgcmF3IHN0cmVhbSBpcyBzZXQgbm90IHRvIGJsb2NrIGFuZCBubyBzaW5nbGUgYnl0ZSBjb3VsZAorICAgICAgYmUgcmVhZGlseSB3cml0dGVuIHRvIGl0LgogCiAKIC4uIGNsYXNzOjogQnVmZmVyZWRJT0Jhc2UKQEAgLTQyMCw4ICs0MjEsOCBAQAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCiAgICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKm4qIGJ5dGVzLiAgSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGBgTm9uZWBgLCBvcgotICAgICAgbmVnYXRpdmUsIGRhdGEgaXMgcmVhZCBhbmQgcmV0dXJuZWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuICBBbiBlbXB0eSBieXRlcwotICAgICAgb2JqZWN0IGlzIHJldHVybmVkIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIEFuIGVtcHR5CisgICAgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGF0IEVPRi4KIAogICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIHBvc2l0aXZlLCBhbmQgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBub3QKICAgICAgIGludGVyYWN0aXZlLCBtdWx0aXBsZSByYXcgcmVhZHMgbWF5IGJlIGlzc3VlZCB0byBzYXRpc2Z5IHRoZSBieXRlIGNvdW50CkBAIC00NDEsMjIgKzQ0MiwyMyBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICByZWFkLgorICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgIGJ5dGVzIHJlYWQuCiAKICAgICAgIExpa2UgOm1ldGg6YHJlYWRgLCBtdWx0aXBsZSByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwotICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyAnaW50ZXJhY3RpdmUnLgorICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyBpbnRlcmFjdGl2ZS4KIAogICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluCiAgICAgICBub24gYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlcgotICAgICAgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscwotICAgICAgYW4gOmV4YzpgSU9FcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKLSAgICAgIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZSB1bmRlcmx5aW5nCi0gICAgICBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5IHJlYXNvbnMuCisgICAgICBXcml0ZSB0aGUgZ2l2ZW4gOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgKmIqIGFuZAorICAgICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmCisgICAgICB0aGUgd3JpdGUgZmFpbHMgYW4gOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZQorICAgICAgYWN0dWFsIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZQorICAgICAgdW5kZXJseWluZyBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5CisgICAgICByZWFzb25zLgogCiAgICAgICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgZGF0YSBuZWVkZWQgdG8gYmUgd3JpdHRlbiB0byB0aGUgcmF3IHN0cmVhbSBidXQgaXQgY291bGRuJ3QgYWNjZXB0CkBAIC00NjYsNyArNDY4LDcgQEAKIFJhdyBGaWxlIEkvTwogXl5eXl5eXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsZUlPKG5hbWUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUpCisuLiBjbGFzczo6IEZpbGVJTyhuYW1lLCBtb2RlPSdyJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgOmNsYXNzOmBGaWxlSU9gIHJlcHJlc2VudHMgYW4gT1MtbGV2ZWwgZmlsZSBjb250YWluaW5nIGJ5dGVzIGRhdGEuCiAgICBJdCBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YFJhd0lPQmFzZWAgaW50ZXJmYWNlIChhbmQgdGhlcmVmb3JlIHRoZQpAQCAtNDc0LDIyICs0NzYsMzUgQEAKIAogICAgVGhlICpuYW1lKiBjYW4gYmUgb25lIG9mIHR3byB0aGluZ3M6CiAKLSAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGZpbGUKLSAgICAgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CisgICAqIGEgY2hhcmFjdGVyIHN0cmluZyBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZQorICAgICBmaWxlIHdoaWNoIHdpbGwgYmUgb3BlbmVkOwogICAgKiBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGFuIGV4aXN0aW5nIE9TLWxldmVsIGZpbGUgZGVzY3JpcHRvcgogICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4KIAotICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgd3JpdGluZywKLSAgIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvcgotICAgd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQWRkIGEKKyAgIFRoZSAqbW9kZSogY2FuIGJlIGBgJ3InYGAsIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBmb3IgcmVhZGluZworICAgKGRlZmF1bHQpLCB3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiBUaGUgZmlsZSB3aWxsIGJlCisgICBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlCisgICB0cnVuY2F0ZWQgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKKyAgIGl0IGFscmVhZHkgZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nCisgICBpbXBsaWVzIHdyaXRpbmcsIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gYGAndydgYC4gQWRkIGEKICAgIGBgJysnYGAgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuCiAKICAgIFRoZSA6bWV0aDpgcmVhZGAgKHdoZW4gY2FsbGVkIHdpdGggYSBwb3NpdGl2ZSBhcmd1bWVudCksIDptZXRoOmByZWFkaW50b2AKICAgIGFuZCA6bWV0aDpgd3JpdGVgIG1ldGhvZHMgb24gdGhpcyBjbGFzcyB3aWxsIG9ubHkgbWFrZSBvbmUgc3lzdGVtIGNhbGwuCiAKKyAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aAorICAgKCpuYW1lKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nCisgICA6bW9kOmBvcy5vcGVuYCBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nCisgICBgYE5vbmVgYCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKyAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIDpjbGFzczpgSU9CYXNlYCBhbmQKICAgIDpjbGFzczpgUmF3SU9CYXNlYCwgOmNsYXNzOmBGaWxlSU9gIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGF0YQotICAgYXR0cmlidXRlcyBhbmQgbWV0aG9kczoKKyAgIGF0dHJpYnV0ZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IG1vZGUKIApAQCAtNTM3LDcgKzU1Miw3IEBACiAKICAgIC4uIG1ldGhvZDo6IGdldHZhbHVlKCkKIAotICAgICAgUmV0dXJuIGBgYnl0ZXNgYCBjb250YWluaW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGJ1ZmZlci4KKyAgICAgIFJldHVybiA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGJ1ZmZlci4KIAogICAgLi4gbWV0aG9kOjogcmVhZDEoKQogCkBAIC01ODEsNyArNTk2LDcgQEAKIAogICAgQSBidWZmZXIgcHJvdmlkaW5nIGhpZ2hlci1sZXZlbCBhY2Nlc3MgdG8gYSB3cml0ZWFibGUsIHNlcXVlbnRpYWwKICAgIDpjbGFzczpgUmF3SU9CYXNlYCBvYmplY3QuICBJdCBpbmhlcml0cyA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYC4KLSAgIFdoZW4gd3JpdGluZyB0byB0aGlzIG9iamVjdCwgZGF0YSBpcyBub3JtYWxseSBoZWxkIGludG8gYW4gaW50ZXJuYWwKKyAgIFdoZW4gd3JpdGluZyB0byB0aGlzIG9iamVjdCwgZGF0YSBpcyBub3JtYWxseSBwbGFjZWQgaW50byBhbiBpbnRlcm5hbAogICAgYnVmZmVyLiAgVGhlIGJ1ZmZlciB3aWxsIGJlIHdyaXR0ZW4gb3V0IHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgUmF3SU9CYXNlYAogICAgb2JqZWN0IHVuZGVyIHZhcmlvdXMgY29uZGl0aW9ucywgaW5jbHVkaW5nOgogCkBAIC01OTQsOCArNjA5LDYgQEAKICAgICpyYXcqIHN0cmVhbS4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSB0aGlyZCBhcmd1bWVudCwgKm1heF9idWZmZXJfc2l6ZSosIGlzIHN1cHBvcnRlZCwgYnV0IHVudXNlZCBhbmQgZGVwcmVjYXRlZC4KLQogICAgOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAgcHJvdmlkZXMgb3Igb3ZlcnJpZGVzIHRoZXNlIG1ldGhvZHMgaW4gYWRkaXRpb24gdG8KICAgIHRob3NlIGZyb20gOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAgYW5kIDpjbGFzczpgSU9CYXNlYDoKIApAQCAtNjA2LDkgKzYxOSwxMCBAQAogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcwotICAgICAgd3JpdHRlbi4gIFdoZW4gaW4gbm9uLWJsb2NraW5nIG1vZGUsIGEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQKLSAgICAgIGlmIHRoZSBidWZmZXIgbmVlZHMgdG8gYmUgd3JpdHRlbiBvdXQgYnV0IHRoZSByYXcgc3RyZWFtIGJsb2Nrcy4KKyAgICAgIFdyaXRlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgV2hlbiBpbiBub24tYmxvY2tpbmcgbW9kZSwgYQorICAgICAgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0dGVuIG91dCBidXQKKyAgICAgIHRoZSByYXcgc3RyZWFtIGJsb2Nrcy4KIAogCiAuLiBjbGFzczo6IEJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSkKQEAgLTYyMSw4ICs2MzUsNiBAQAogICAgaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIHRoaXJkIGFyZ3VtZW50LCAqbWF4X2J1ZmZlcl9zaXplKiwgaXMgc3VwcG9ydGVkLCBidXQgdW51c2VkIGFuZCBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkUmFuZG9tYCBpcyBjYXBhYmxlIG9mIGFueXRoaW5nIDpjbGFzczpgQnVmZmVyZWRSZWFkZXJgIG9yCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCBjYW4gZG8uCiAKQEAgLTYzNyw5ICs2NDksNiBAQAogICAgd3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSBmb3VydGggYXJndW1lbnQsICptYXhfYnVmZmVyX3NpemUqLCBpcyBzdXBwb3J0ZWQsIGJ1dCB1bnVzZWQgYW5kCi0gICBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkUldQYWlyYCBpbXBsZW1lbnRzIGFsbCBvZiA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYFwncyBtZXRob2RzCiAgICBleGNlcHQgZm9yIDptZXRoOmB+QnVmZmVyZWRJT0Jhc2UuZGV0YWNoYCwgd2hpY2ggcmFpc2VzCiAgICA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmAuCkBAIC02ODIsNyArNjkxLDcgQEAKIAogICAgICAgVGhlIHVuZGVybHlpbmcgYmluYXJ5IGJ1ZmZlciAoYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBpbnN0YW5jZSkgdGhhdAogICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBkZWFscyB3aXRoLiAgVGhpcyBpcyBub3QgcGFydCBvZiB0aGUKLSAgICAgIDpjbGFzczpgVGV4dElPQmFzZWAgQVBJIGFuZCBtYXkgbm90IGV4aXN0IG9uIHNvbWUgaW1wbGVtZW50YXRpb25zLgorICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBBUEkgYW5kIG1heSBub3QgZXhpc3QgaW4gc29tZSBpbXBsZW1lbnRhdGlvbnMuCiAKICAgIC4uIG1ldGhvZDo6IGRldGFjaCgpCiAKQEAgLTc0MiwxMyArNzUxLDE1IEBACiAgICAgICB3cml0dGVuLgogCiAKLS4uIGNsYXNzOjogVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGxpbmVfYnVmZmVyaW5nPUZhbHNlKQorLi4gY2xhc3M6OiBUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPUZhbHNlLCB3cml0ZV90aHJvdWdoPUZhbHNlKQogCiAgICBBIGJ1ZmZlcmVkIHRleHQgc3RyZWFtIG92ZXIgYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBiaW5hcnkgc3RyZWFtLgogICAgSXQgaW5oZXJpdHMgOmNsYXNzOmBUZXh0SU9CYXNlYC4KIAogICAgKmVuY29kaW5nKiBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUgZGVjb2RlZCBvcgotICAgZW5jb2RlZCB3aXRoLiAgSXQgZGVmYXVsdHMgdG8gOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2AuCisgICBlbmNvZGVkIHdpdGguICBJdCBkZWZhdWx0cyB0bworICAgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLgogCiAgICAqZXJyb3JzKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGFuZCBkZWNvZGluZwogICAgZXJyb3JzIGFyZSB0byBiZSBoYW5kbGVkLiAgUGFzcyBgYCdzdHJpY3QnYGAgdG8gcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYApAQCAtNzg1LDYgKzc5NiwxOSBAQAogICAgSWYgKmxpbmVfYnVmZmVyaW5nKiBpcyBgYFRydWVgYCwgOm1ldGg6YGZsdXNoYCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvCiAgICB3cml0ZSBjb250YWlucyBhIG5ld2xpbmUgY2hhcmFjdGVyLgogCisgICBJZiAqd3JpdGVfdGhyb3VnaCogaXMgYGBUcnVlYGAsIGNhbGxzIHRvIDptZXRoOmB3cml0ZWAgYXJlIGd1YXJhbnRlZWQKKyAgIG5vdCB0byBiZSBidWZmZXJlZDogYW55IGRhdGEgd3JpdHRlbiBvbiB0aGUgOmNsYXNzOmBUZXh0SU9XcmFwcGVyYAorICAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzIHVuZGVybHlpbmcgYmluYXJ5ICpidWZmZXIqLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp3cml0ZV90aHJvdWdoKiBhcmd1bWVudCBoYXMgYmVlbiBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBkZWZhdWx0ICplbmNvZGluZyogaXMgbm93IGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKWBgCisgICAgICBpbnN0ZWFkIG9mIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKClgYC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKKyAgICAgIGxvY2FsZSBlbmNvZGluZyB1c2luZyA6ZnVuYzpgbG9jYWxlLnNldGxvY2FsZWAsIHVzZSB0aGUgY3VycmVudCBsb2NhbGUKKyAgICAgIGVuY29kaW5nIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgorCiAgICA6Y2xhc3M6YFRleHRJT1dyYXBwZXJgIHByb3ZpZGVzIG9uZSBhdHRyaWJ1dGUgaW4gYWRkaXRpb24gdG8gdGhvc2Ugb2YKICAgIDpjbGFzczpgVGV4dElPQmFzZWAgYW5kIGl0cyBwYXJlbnRzOgogCkBAIC04NTEsOCArODc1LDggQEAKIGtpbmQgb2YgSS9PIHdoaWNoIGlzIHBlcmZvcm1lZC4gIEZvciBleGFtcGxlLCBvbiBzb21lIG1vZGVybiBPU2VzIHN1Y2ggYXMgTGludXgsCiB1bmJ1ZmZlcmVkIGRpc2sgSS9PIGNhbiBiZSBhcyBmYXN0IGFzIGJ1ZmZlcmVkIEkvTy4gIFRoZSBib3R0b20gbGluZSwgaG93ZXZlciwKIGlzIHRoYXQgYnVmZmVyZWQgSS9PIG9mZmVycyBwcmVkaWN0YWJsZSBwZXJmb3JtYW5jZSByZWdhcmRsZXNzIG9mIHRoZSBwbGF0Zm9ybQotYW5kIHRoZSBiYWNraW5nIGRldmljZS4gIFRoZXJlZm9yZSwgaXQgaXMgbW9zdCBhbHdheXMgcHJlZmVyYWJsZSB0byB1c2UgYnVmZmVyZWQKLUkvTyByYXRoZXIgdGhhbiB1bmJ1ZmZlcmVkIEkvTyBmb3IgYmluYXJ5IGRhdGFsCithbmQgdGhlIGJhY2tpbmcgZGV2aWNlLiAgVGhlcmVmb3JlLCBpdCBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgdG8gdXNlCitidWZmZXJlZCBJL08gcmF0aGVyIHRoYW4gdW5idWZmZXJlZCBJL08gZm9yIGJpbmFyeSBkYXRhLgogCiBUZXh0IEkvTwogXl5eXl5eXl4KQEAgLTg4Nyw4ICs5MTEsOCBAQAogOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAsIDpjbGFzczpgQnVmZmVyZWRSYW5kb21gIGFuZCA6Y2xhc3M6YEJ1ZmZlcmVkUldQYWlyYCkKIGFyZSBub3QgcmVlbnRyYW50LiAgV2hpbGUgcmVlbnRyYW50IGNhbGxzIHdpbGwgbm90IGhhcHBlbiBpbiBub3JtYWwgc2l0dWF0aW9ucywKIHRoZXkgY2FuIGFyaXNlIGZyb20gZG9pbmcgSS9PIGluIGEgOm1vZDpgc2lnbmFsYCBoYW5kbGVyLiAgSWYgYSB0aHJlYWQgdHJpZXMgdG8KLXJlbnRlciBhIGJ1ZmZlcmVkIG9iamVjdCB3aGljaCBpdCBpcyBhbHJlYWR5IGFjY2Vzc2luZywgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzCi1yYWlzZWQuICBOb3RlIHRoaXMgZG9lc24ndCBwcm9oaWJpdCBhIGRpZmZlcmVudCB0aHJlYWQgZnJvbSBlbnRlcmluZyB0aGUKK3JlLWVudGVyIGEgYnVmZmVyZWQgb2JqZWN0IHdoaWNoIGl0IGlzIGFscmVhZHkgYWNjZXNzaW5nLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAKK2lzIHJhaXNlZC4gIE5vdGUgdGhpcyBkb2Vzbid0IHByb2hpYml0IGEgZGlmZmVyZW50IHRocmVhZCBmcm9tIGVudGVyaW5nIHRoZQogYnVmZmVyZWQgb2JqZWN0LgogCiBUaGUgYWJvdmUgaW1wbGljaXRseSBleHRlbmRzIHRvIHRleHQgZmlsZXMsIHNpbmNlIHRoZSA6ZnVuYzpgb3BlbigpYCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdCBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0NjgyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKQEAgLTAsMCArMSw3OTcgQEAKKzptb2Q6YGlwYWRkcmVzc2AgLS0tIElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGlwYWRkcmVzcworICAgOnN5bm9wc2lzOiBJUHY0L0lQdjYgbWFuaXB1bGF0aW9uIGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBQZXRlciBNb29keQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9pcGFkZHJlc3MucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKKy4uIG5vdGU6OgorCisgICBUaGUgYGBpcGFkZHJlc3NgYCBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQorICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKKyAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgcGFja2FnZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAorICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKzptb2Q6YGlwYWRkcmVzc2AgcHJvdmlkZXMgdGhlIGNhcGFiaWxpdGllcyB0byBjcmVhdGUsIG1hbmlwdWxhdGUgYW5kCitvcGVyYXRlIG9uIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworVGhlIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBpbiB0aGlzIG1vZHVsZSBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBoYW5kbGUKK3ZhcmlvdXMgdGFza3MgcmVsYXRlZCB0byBJUCBhZGRyZXNzZXMsIGluY2x1ZGluZyBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0d28KK2hvc3RzIGFyZSBvbiB0aGUgc2FtZSBzdWJuZXQsIGl0ZXJhdGluZyBvdmVyIGFsbCBob3N0cyBpbiBhIHBhcnRpY3VsYXIKK3N1Ym5ldCwgY2hlY2tpbmcgd2hldGhlciBvciBub3QgYSBzdHJpbmcgcmVwcmVzZW50cyBhIHZhbGlkIElQIGFkZHJlc3Mgb3IKK25ldHdvcmsgZGVmaW5pdGlvbiwgYW5kIHNvIG9uLgorCitUaGlzIGlzIHRoZSBmdWxsIG1vZHVsZSBBUEkgcmVmZXJlbmNlIC0gZm9yIGFuIG92ZXJ2aWV3IGFuZCBpbnRyb2R1Y3Rpb24sCitzZWUgOnJlZjpgaXBhZGRyZXNzLWhvd3RvYC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworQ29udmVuaWVuY2UgZmFjdG9yeSBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZSBwcm92aWRlcyBmYWN0b3J5IGZ1bmN0aW9ucyB0byBjb252ZW5pZW50bHkgY3JlYXRlCitJUCBhZGRyZXNzZXMsIG5ldHdvcmtzIGFuZCBpbnRlcmZhY2VzOgorCisuLiBmdW5jdGlvbjo6IGlwX2FkZHJlc3MoYWRkcmVzcykKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NEFkZHJlc3NgIG9yIDpjbGFzczpgSVB2NkFkZHJlc3NgIG9iamVjdCBkZXBlbmRpbmcgb24KKyAgIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gIEVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2VzIG1heSBiZQorICAgc3VwcGxpZWQ7IGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorICAgQSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIElQdjQgb3IKKyAgIElQdjYgYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKKworCisuLiBmdW5jdGlvbjo6IGlwX25ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIFJldHVybiBhbiA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3QgZGVwZW5kaW5nIG9uCisgICB0aGUgSVAgYWRkcmVzcyBwYXNzZWQgYXMgYXJndW1lbnQuICAqYWRkcmVzcyogaXMgYSBzdHJpbmcgb3IgaW50ZWdlcgorICAgcmVwcmVzZW50aW5nIHRoZSBJUCBuZXR3b3JrLiAgRWl0aGVyIElQdjQgb3IgSVB2NiBuZXR3b3JrcyBtYXkgYmUgc3VwcGxpZWQ7CisgICBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbCBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4gICpzdHJpY3QqCisgICBpcyBwYXNzZWQgdG8gOmNsYXNzOmBJUHY0TmV0d29ya2Agb3IgOmNsYXNzOmBJUHY2TmV0d29ya2AgY29uc3RydWN0b3IuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIElQdjQgb3IKKyAgIElQdjYgYWRkcmVzcywgb3IgaWYgdGhlIG5ldHdvcmsgaGFzIGhvc3QgYml0cyBzZXQuCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjE2OC4wLjAvMjgnKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4xNjguMC4wLzI4JykKKworCisuLiBmdW5jdGlvbjo6IGlwX2ludGVyZmFjZShhZGRyZXNzKQorCisgICBSZXR1cm4gYW4gOmNsYXNzOmBJUHY0SW50ZXJmYWNlYCBvciA6Y2xhc3M6YElQdjZJbnRlcmZhY2VgIG9iamVjdCBkZXBlbmRpbmcKKyAgIG9uIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gICphZGRyZXNzKiBpcyBhIHN0cmluZyBvciBpbnRlZ2VyCisgICByZXByZXNlbnRpbmcgdGhlIElQIGFkZHJlc3MuICBFaXRoZXIgSVB2NCBvciBJUHY2IGFkZHJlc3NlcyBtYXkgYmUgc3VwcGxpZWQ7CisgICBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbCBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NCBvcgorICAgSVB2NiBhZGRyZXNzLgorCitPbmUgZG93bnNpZGUgb2YgdGhlc2UgY29udmVuaWVuY2UgZnVuY3Rpb25zIGlzIHRoYXQgdGhlIG5lZWQgdG8gaGFuZGxlIGJvdGgKK0lQdjQgYW5kIElQdjYgZm9ybWF0cyBtZWFucyB0aGF0IGVycm9yIG1lc3NhZ2VzIHByb3ZpZGUgbWluaW1hbAoraW5mb3JtYXRpb24gb24gdGhlIHByZWNpc2UgZXJyb3IsIGFzIHRoZSBmdW5jdGlvbnMgZG9uJ3Qga25vdyB3aGV0aGVyIHRoZQorSVB2NCBvciBJUHY2IGZvcm1hdCB3YXMgaW50ZW5kZWQuIE1vcmUgZGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nIGNhbiBiZQorb2J0YWluZWQgYnkgY2FsbGluZyB0aGUgYXBwcm9wcmlhdGUgdmVyc2lvbiBzcGVjaWZpYyBjbGFzcyBjb25zdHJ1Y3RvcnMKK2RpcmVjdGx5LgorCisKK0lQIEFkZHJlc3NlcworLS0tLS0tLS0tLS0tCisKK0FkZHJlc3Mgb2JqZWN0cworXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YElQdjRBZGRyZXNzYCBhbmQgOmNsYXNzOmBJUHY2QWRkcmVzc2Agb2JqZWN0cyBzaGFyZSBhIGxvdCBvZiBjb21tb24KK2F0dHJpYnV0ZXMuICBTb21lIGF0dHJpYnV0ZXMgdGhhdCBhcmUgb25seSBtZWFuaW5nZnVsIGZvciBJUHY2IGFkZHJlc3NlcyBhcmUKK2Fsc28gaW1wbGVtZW50ZWQgYnkgOmNsYXNzOmBJUHY0QWRkcmVzc2Agb2JqZWN0cywgaW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8KK3dyaXRlIGNvZGUgdGhhdCBoYW5kbGVzIGJvdGggSVAgdmVyc2lvbnMgY29ycmVjdGx5LgorCisuLiBjbGFzczo6IElQdjRBZGRyZXNzKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY0IGFkZHJlc3MuICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmCisgICAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgorCisgICBUaGUgZm9sbG93aW5nIGNvbnN0aXR1dGVzIGEgdmFsaWQgSVB2NCBhZGRyZXNzOgorCisgICAxLiBBIHN0cmluZyBpbiBkZWNpbWFsLWRvdCBub3RhdGlvbiwgY29uc2lzdGluZyBvZiBmb3VyIGRlY2ltYWwgaW50ZWdlcnMgaW4KKyAgICAgIHRoZSBpbmNsdXNpdmUgcmFuZ2UgMC0yNTUsIHNlcGFyYXRlZCBieSBkb3RzIChlLmcuIGBgMTkyLjE2OC4wLjFgYCkuIEVhY2gKKyAgICAgIGludGVnZXIgcmVwcmVzZW50cyBhbiBvY3RldCAoYnl0ZSkgaW4gdGhlIGFkZHJlc3MuIExlYWRpbmcgemVyb2VzIGFyZQorICAgICAgdG9sZXJhdGVkIG9ubHkgZm9yIHZhbHVlcyBsZXNzIHRoZW4gOCAoYXMgdGhlcmUgaXMgbm8gYW1iaWd1aXR5CisgICAgICBiZXR3ZWVuIHRoZSBkZWNpbWFsIGFuZCBvY3RhbCBpbnRlcnByZXRhdGlvbnMgb2Ygc3VjaCBzdHJpbmdzKS4KKyAgIDIuIEFuIGludGVnZXIgdGhhdCBmaXRzIGludG8gMzIgYml0cy4KKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDQgKG1vc3QKKyAgICAgIHNpZ25pZmljYW50IG9jdGV0IGZpcnN0KS4KKworICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMzIyMTIyNTk4NSkKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKGInXHhDMFx4QThceDAwXHgwMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisKKyAgICAgIFRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIG51bWJlcjogYGA0YGAgZm9yIElQdjQsIGBgNmBgIGZvciBJUHY2LgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisKKyAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgYml0cyBpbiB0aGUgYWRkcmVzcyByZXByZXNlbnRhdGlvbiBmb3IgdGhpcworICAgICAgdmVyc2lvbjogYGAzMmBgIGZvciBJUHY0LCBgYDEyOGBgIGZvciBJUHY2LgorCisgICAgICBUaGUgcHJlZml4IGRlZmluZXMgdGhlIG51bWJlciBvZiBsZWFkaW5nIGJpdHMgaW4gYW4gIGFkZHJlc3MgdGhhdAorICAgICAgYXJlIGNvbXBhcmVkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbiBhZGRyZXNzIGlzIHBhcnQgb2YgYQorICAgICAgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgICAgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBpbiBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4gTGVhZGluZyB6ZXJvZXMKKyAgICAgIGFyZSBuZXZlciBpbmNsdWRlZCBpbiB0aGUgcmVwcmVzZW50YXRpb24uCisKKyAgICAgIEFzIElQdjQgZG9lcyBub3QgZGVmaW5lIGEgc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBhZGRyZXNzZXMgd2l0aCBvY3RldHMKKyAgICAgIHNldCB0byB6ZXJvLCB0aGVzZSB0d28gYXR0cmlidXRlcyBhcmUgYWx3YXlzIHRoZSBzYW1lIGFzIGBgc3RyKGFkZHIpYGAKKyAgICAgIGZvciBJUHY0IGFkZHJlc3Nlcy4gRXhwb3NpbmcgdGhlc2UgYXR0cmlidXRlcyBtYWtlcyBpdCBlYXNpZXIgdG8KKyAgICAgIHdyaXRlIGRpc3BsYXkgY29kZSB0aGF0IGNhbiBoYW5kbGUgYm90aCBJUHY0IGFuZCBJUHY2IGFkZHJlc3Nlcy4KKworICAgLi4gYXR0cmlidXRlOjogcGFja2VkCisKKyAgICAgIFRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzIC0gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YKKyAgICAgIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGggKG1vc3Qgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLiBUaGlzIGlzIDQgYnl0ZXMKKyAgICAgIGZvciBJUHY0IGFuZCAxNiBieXRlcyBmb3IgSVB2Ni4KKworICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLiAgU2VlCisgICAgICA6UkZDOmAzMTcxYCAoZm9yIElQdjQpIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLiAgU2VlCisgICAgICA6UkZDOmAxOTE4YCAoZm9yIElQdjQpIG9yIDpSRkM6YDQxOTNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLiAgU2VlIDpSRkM6YDUzNzVgIChmb3IgSVB2NCkKKyAgICAgIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworCisgICAgICBgYFRydWVgYCBpZiB0aGlzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4gIFNlZSA6UkZDOmAzMzMwYCAoZm9yIElQdjQpCisgICAgICBvciA6UkZDOmAyMzczYCAoZm9yIElQdjYpLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsIHVzYWdlLiAgU2VlCisgICAgICA6UkZDOmAzOTI3YC4KKworCisuLiBjbGFzczo6IElQdjZBZGRyZXNzKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IGFkZHJlc3MuICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmCisgICAqYWRkcmVzcyogaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgorCisgICBUaGUgZm9sbG93aW5nIGNvbnN0aXR1dGVzIGEgdmFsaWQgSVB2NiBhZGRyZXNzOgorCisgICAxLiBBIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IGdyb3VwcyBvZiBmb3VyIGhleGFkZWNpbWFsIGRpZ2l0cywgZWFjaAorICAgICAgZ3JvdXAgcmVwcmVzZW50aW5nIDE2IGJpdHMuICBUaGUgZ3JvdXBzIGFyZSBzZXBhcmF0ZWQgYnkgY29sb25zLgorICAgICAgVGhpcyBkZXNjcmliZXMgYW4gKmV4cGxvZGVkKiAobG9uZ2hhbmQpIG5vdGF0aW9uLiAgVGhlIHN0cmluZyBjYW4KKyAgICAgIGFsc28gYmUgKmNvbXByZXNzZWQqIChzaG9ydGhhbmQgbm90YXRpb24pIGJ5IHZhcmlvdXMgbWVhbnMuICBTZWUKKyAgICAgIDpSRkM6YDQyOTFgIGZvciBkZXRhaWxzLiAgRm9yIGV4YW1wbGUsCisgICAgICBgYCIwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MGFiYzowMDA3OjBkZWYiYGAgY2FuIGJlIGNvbXByZXNzZWQgdG8KKyAgICAgIGBgIjo6YWJjOjc6ZGVmImBgLgorICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAxMjggYml0cy4KKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDE2LCBiaWctZW5kaWFuLgorCisgICA+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisKKyAgIFRoZSBzaG9ydCBmb3JtIG9mIHRoZSBhZGRyZXNzIHJlcHJlc2VudGF0aW9uLCB3aXRoIGxlYWRpbmcgemVyb2VzIGluCisgICBncm91cHMgb21pdHRlZCBhbmQgdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgZ3JvdXBzIGNvbnNpc3RpbmcgZW50aXJlbHkgb2YKKyAgIHplcm9lcyBjb2xsYXBzZWQgdG8gYSBzaW5nbGUgZW1wdHkgZ3JvdXAuCisKKyAgIFRoaXMgaXMgYWxzbyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgYGBzdHIoYWRkcilgYCBmb3IgSVB2NiBhZGRyZXNzZXMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGV4cGxvZGVkCisKKyAgIFRoZSBsb25nIGZvcm0gb2YgdGhlIGFkZHJlc3MgcmVwcmVzZW50YXRpb24sIHdpdGggYWxsIGxlYWRpbmcgemVyb2VzIGFuZAorICAgZ3JvdXBzIGNvbnNpc3RpbmcgZW50aXJlbHkgb2YgemVyb2VzIGluY2x1ZGVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYWNrZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAorICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworICAgLi4gYXR0cmlidXRlOjogaXNfbGlua19sb2NhbAorCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKworICAgLi4gYXR0cmlidXRlOjogaXNfc2l0ZV9sb2NhbAorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbCB1c2FnZS4gIE5vdGUgdGhhdAorICAgICAgdGhlIHNpdGUtbG9jYWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IDpSRkM6YDM4NzlgLiBVc2UKKyAgICAgIDphdHRyOmB+SVB2NEFkZHJlc3MuaXNfcHJpdmF0ZWAgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlCisgICAgICBzcGFjZSBvZiB1bmlxdWUgbG9jYWwgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgOlJGQzpgNDE5M2AuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlwdjRfbWFwcGVkCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgSVB2NCBtYXBwZWQgYWRkcmVzc2VzIChzdGFydGluZyB3aXRoCisgICAgICBgYDo6RkZGRi85NmBgKSwgdGhpcyBwcm9wZXJ0eSB3aWxsIHJlcG9ydCB0aGUgZW1iZWRkZWQgSVB2NCBhZGRyZXNzLgorICAgICAgRm9yIGFueSBvdGhlciBhZGRyZXNzLCB0aGlzIHByb3BlcnR5IHdpbGwgYmUgYGBOb25lYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHNpeHRvZm91cgorCisgICAgICBGb3IgYWRkcmVzc2VzIHRoYXQgYXBwZWFyIHRvIGJlIDZ0bzQgYWRkcmVzc2VzICAoc3RhcnRpbmcgd2l0aAorICAgICAgYGAyMDAyOjovMTZgYCkgYXMgZGVmaW5lZCBieSA6UkZDOmAzMDU2YCwgdGhpcyBwcm9wZXJ0eSB3aWxsIHJlcG9ydAorICAgICAgdGhlIGVtYmVkZGVkIElQdjQgYWRkcmVzcy4gIEZvciBhbnkgb3RoZXIgYWRkcmVzcywgdGhpcyBwcm9wZXJ0eSB3aWxsCisgICAgICBiZSBgYE5vbmVgYC4KKworICAgLi4gYXR0cmlidXRlOjogdGVyZWRvCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgVGVyZWRvIGFkZHJlc3NlcyAoc3RhcnRpbmcgd2l0aAorICAgICAgYGAyMDAxOjovMzJgYCkgYXMgZGVmaW5lZCBieSA6UkZDOmA0MzgwYCwgdGhpcyBwcm9wZXJ0eSB3aWxsIHJlcG9ydAorICAgICAgdGhlIGVtYmVkZGVkIGBgKHNlcnZlciwgY2xpZW50KWBgIElQIGFkZHJlc3MgcGFpci4gIEZvciBhbnkgb3RoZXIKKyAgICAgIGFkZHJlc3MsIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBgYE5vbmVgYC4KKworCitDb252ZXJzaW9uIHRvIFN0cmluZ3MgYW5kIEludGVnZXJzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RvIGludGVyb3BlcmF0ZSB3aXRoIG5ldHdvcmtpbmcgaW50ZXJmYWNlcyBzdWNoIGFzIHRoZSBzb2NrZXQgbW9kdWxlLAorYWRkcmVzc2VzIG11c3QgYmUgY29udmVydGVkIHRvIHN0cmluZ3Mgb3IgaW50ZWdlcnMuIFRoaXMgaXMgaGFuZGxlZCB1c2luZwordGhlIDpmdW5jOmBzdHJgIGFuZCA6ZnVuYzpgaW50YCBidWlsdGluIGZ1bmN0aW9uczo6CisKKyAgID4+PiBzdHIoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpKQorICAgJzE5Mi4xNjguMC4xJworICAgPj4+IGludChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykpCisgICAzMjMyMjM1NTIxCisgICA+Pj4gc3RyKGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpCisgICAnOjoxJworICAgPj4+IGludChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorICAgMQorCisKK09wZXJhdG9ycworXl5eXl5eXl5eCisKK0FkZHJlc3Mgb2JqZWN0cyBzdXBwb3J0IHNvbWUgb3BlcmF0b3JzLiAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIG9wZXJhdG9ycyBjYW4KK29ubHkgYmUgYXBwbGllZCBiZXR3ZWVuIGNvbXBhdGlibGUgb2JqZWN0cyAoaS5lLiBJUHY0IHdpdGggSVB2NCwgSVB2NiB3aXRoCitJUHY2KS4KKworCitMb2dpY2FsIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIKKworQWRkcmVzcyBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCB3aXRoIHRoZSB1c3VhbCBzZXQgb2YgbG9naWNhbCBvcGVyYXRvcnMuICBTb21lCitleGFtcGxlczo6CisKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgPiBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIFRydWUKKyAgID4+PiBJUHY0QWRkcmVzcygnMTI3LjAuMC4yJykgPT0gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICBGYWxzZQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSAhPSBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIFRydWUKKworCitBcml0aG1ldGljIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworSW50ZWdlcnMgY2FuIGJlIGFkZGVkIHRvIG9yIHN1YnRyYWN0ZWQgZnJvbSBhZGRyZXNzIG9iamVjdHMuICBTb21lIGV4YW1wbGVzOjoKKworICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSArIDMKKyAgIElQdjRBZGRyZXNzKCcxMjcuMC4wLjUnKQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSAtIDMKKyAgIElQdjRBZGRyZXNzKCcxMjYuMjU1LjI1NS4yNTUnKQorICAgPj4+IElQdjRBZGRyZXNzKCcyNTUuMjU1LjI1NS4yNTUnKSArIDEKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgIGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvcjogNDI5NDk2NzI5NiAoPj0gMioqMzIpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzCisKKworSVAgTmV0d29yayBkZWZpbml0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBJUHY0TmV0d29ya2AgYW5kIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdHMgcHJvdmlkZSBhIG1lY2hhbmlzbQorZm9yIGRlZmluaW5nIGFuZCBpbnNwZWN0aW5nIElQIG5ldHdvcmsgZGVmaW5pdGlvbnMuICBBIG5ldHdvcmsgZGVmaW5pdGlvbgorY29uc2lzdHMgb2YgYSAqbWFzayogYW5kIGEgKm5ldHdvcmsgYWRkcmVzcyosIGFuZCBhcyBzdWNoIGRlZmluZXMgYSByYW5nZSBvZgorSVAgYWRkcmVzc2VzIHRoYXQgZXF1YWwgdGhlIG5ldHdvcmsgYWRkcmVzcyB3aGVuIG1hc2tlZCAoYmluYXJ5IEFORCkgd2l0aCB0aGUKK21hc2suICBGb3IgZXhhbXBsZSwgYSBuZXR3b3JrIGRlZmluaXRpb24gd2l0aCB0aGUgbWFzayBgYDI1NS4yNTUuMjU1LjBgYCBhbmQKK3RoZSBuZXR3b3JrIGFkZHJlc3MgYGAxOTIuMTY4LjEuMGBgIGNvbnNpc3RzIG9mIElQIGFkZHJlc3NlcyBpbiB0aGUgaW5jbHVzaXZlCityYW5nZSBgYDE5Mi4xNjguMS4wYGAgdG8gYGAxOTIuMTY4LjEuMjU1YGAuCisKKworUHJlZml4LCBuZXQgbWFzayBhbmQgaG9zdCBtYXNrCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlcmUgYXJlIHNldmVyYWwgZXF1aXZhbGVudCB3YXlzIHRvIHNwZWNpZnkgSVAgbmV0d29yayBtYXNrcy4gIEEgKnByZWZpeCoKK2BgLzxuYml0cz5gYCBpcyBhIG5vdGF0aW9uIHRoYXQgZGVub3RlcyBob3cgbWFueSBoaWdoLW9yZGVyIGJpdHMgYXJlIHNldCBpbgordGhlIG5ldHdvcmsgbWFzay4gIEEgKm5ldCBtYXNrKiBpcyBhbiBJUCBhZGRyZXNzIHdpdGggc29tZSBudW1iZXIgb2YKK2hpZ2gtb3JkZXIgYml0cyBzZXQuICBUaHVzIHRoZSBwcmVmaXggYGAvMjRgYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBuZXQgbWFzaworYGAyNTUuMjU1LjI1NS4wYGAgaW4gSVB2NCwgb3IgYGBmZmZmOmZmMDA6OmBgIGluIElQdjYuICBJbiBhZGRpdGlvbiwgYQorKmhvc3QgbWFzayogaXMgdGhlIGxvZ2ljYWwgaW52ZXJzZSBvZiBhICpuZXQgbWFzayosIGFuZCBpcyBzb21ldGltZXMgdXNlZAorKGZvciBleGFtcGxlIGluIENpc2NvIGFjY2VzcyBjb250cm9sIGxpc3RzKSB0byBkZW5vdGUgYSBuZXR3b3JrIG1hc2suICBUaGUKK2hvc3QgbWFzayBlcXVpdmFsZW50IHRvIGBgLzI0YGAgaW4gSVB2NCBpcyBgYDAuMC4wLjI1NWBgLgorCisKK05ldHdvcmsgb2JqZWN0cworXl5eXl5eXl5eXl5eXl5eCisKK0FsbCBhdHRyaWJ1dGVzIGltcGxlbWVudGVkIGJ5IGFkZHJlc3Mgb2JqZWN0cyBhcmUgaW1wbGVtZW50ZWQgYnkgbmV0d29yaworb2JqZWN0cyBhcyB3ZWxsLiAgSW4gYWRkaXRpb24sIG5ldHdvcmsgb2JqZWN0cyBpbXBsZW1lbnQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgorQWxsIG9mIHRoZXNlIGFyZSBjb21tb24gYmV0d2VlbiA6Y2xhc3M6YElQdjROZXR3b3JrYCBhbmQgOmNsYXNzOmBJUHY2TmV0d29ya2AsCitzbyB0byBhdm9pZCBkdXBsaWNhdGlvbiB0aGV5IGFyZSBvbmx5IGRvY3VtZW50ZWQgZm9yIDpjbGFzczpgSVB2NE5ldHdvcmtgLgorCisuLiBjbGFzczo6IElQdjROZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NCBuZXR3b3JrIGRlZmluaXRpb24uICAqYWRkcmVzcyogY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAxLiBBIHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIElQIGFkZHJlc3MgYW5kIGFuIG9wdGlvbmFsIG1hc2ssIHNlcGFyYXRlZCBieQorICAgICAgYSBzbGFzaCAoYGAvYGApLiAgVGhlIElQIGFkZHJlc3MgaXMgdGhlIG5ldHdvcmsgYWRkcmVzcywgYW5kIHRoZSBtYXNrCisgICAgICBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIG51bWJlciwgd2hpY2ggbWVhbnMgaXQncyBhICpwcmVmaXgqLCBvciBhIHN0cmluZworICAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NCBhZGRyZXNzLiAgSWYgaXQncyB0aGUgbGF0dGVyLCB0aGUgbWFzayBpcworICAgICAgaW50ZXJwcmV0ZWQgYXMgYSAqbmV0IG1hc2sqIGlmIGl0IHN0YXJ0cyB3aXRoIGEgbm9uLXplcm8gZmllbGQsIG9yIGFzCisgICAgICBhICpob3N0IG1hc2sqIGlmIGl0IHN0YXJ0cyB3aXRoIGEgemVybyBmaWVsZC4gIElmIG5vIG1hc2sgaXMgcHJvdmlkZWQsCisgICAgICBpdCdzIGNvbnNpZGVyZWQgdG8gYmUgYGAvMzJgYC4KKworICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgKmFkZHJlc3MqIHNwZWNpZmljYXRpb25zIGFyZSBlcXVpdmFsZW50OgorICAgICAgYGAxOTIuMTY4LjEuMC8yNGBgLCBgYDE5Mi4xNjguMS4wLzI1NS4yNTUuMjU1LjBgYCBhbmQKKyAgICAgIGBgMTkyLjE2OC4xLjAvMC4wLjAuMjU1YGAuCisKKyAgIDIuIEFuIGludGVnZXIgdGhhdCBmaXRzIGludG8gMzIgYml0cy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhCisgICAgICBzaW5nbGUtYWRkcmVzcyBuZXR3b3JrLCB3aXRoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYmVpbmcgKmFkZHJlc3MqIGFuZAorICAgICAgdGhlIG1hc2sgYmVpbmcgYGAvMzJgYC4KKworICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCwgYmlnLWVuZGlhbi4KKyAgICAgIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBzaW1pbGFyIHRvIGFuIGludGVnZXIgKmFkZHJlc3MqLgorCisgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0CisgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKKyAgIGFuIElQdjQgYWRkcmVzcy4KKworICAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgYW5kIGhvc3QgYml0cyBhcmUgc2V0IGluIHRoZSBzdXBwbGllZCBhZGRyZXNzLAorICAgdGhlbiA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBob3N0IGJpdHMgYXJlIG1hc2tlZCBvdXQKKyAgIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBhZGRyZXNzLgorCisgICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgYWxsIG5ldHdvcmsgbWV0aG9kcyBhY2NlcHRpbmcgb3RoZXIgbmV0d29yay9hZGRyZXNzCisgICBvYmplY3RzIHdpbGwgcmFpc2UgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgYXJndW1lbnQncyBJUCB2ZXJzaW9uIGlzCisgICBpbmNvbXBhdGlibGUgdG8gYGBzZWxmYGAKKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKworICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHRydWUgZm9yIHRoZSBuZXR3b3JrIGFzIGEgd2hvbGUgaWYgdGhleSBhcmUgdHJ1ZQorICAgICAgdHJ1ZSBmb3IgYm90aCB0aGUgbmV0d29yayBhZGRyZXNzIGFuZCB0aGUgYnJvYWRjYXN0IGFkZHJlc3MKKworICAgLi4gYXR0cmlidXRlOjogbmV0d29ya19hZGRyZXNzCisKKyAgICAgIFRoZSBuZXR3b3JrIGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrLiBUaGUgbmV0d29yayBhZGRyZXNzIGFuZCB0aGUKKyAgICAgIHByZWZpeCBsZW5ndGggdG9nZXRoZXIgdW5pcXVlbHkgZGVmaW5lIGEgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogYnJvYWRjYXN0X2FkZHJlc3MKKworICAgICAgVGhlIGJyb2FkY2FzdCBhZGRyZXNzIGZvciB0aGUgbmV0d29yay4gUGFja2V0cyBzZW50IHRvIHRoZSBicm9hZGNhc3QKKyAgICAgIGFkZHJlc3Mgc2hvdWxkIGJlIHJlY2VpdmVkIGJ5IGV2ZXJ5IGhvc3Qgb24gdGhlIG5ldHdvcmsuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGhvc3QgbWFzaworCisgICAgICBUaGUgaG9zdCBtYXNrLCBhcyBhIHN0cmluZy4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbXByZXNzZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGV4cGxvZGVkCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrLCB3aXRoIHRoZSBtYXNrIGluIHByZWZpeAorICAgICAgbm90YXRpb24uCisKKyAgICAgIGBgd2l0aF9wcmVmaXhsZW5gYCBhbmQgYGBjb21wcmVzc2VkYGAgYXJlIGFsd2F5cyB0aGUgc2FtZSBhcworICAgICAgYGBzdHIobmV0d29yaylgYC4KKyAgICAgIGBgZXhwbG9kZWRgYCB1c2VzIHRoZSBleHBsb2RlZCBmb3JtIHRoZSBuZXR3b3JrIGFkZHJlc3MuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yaywgd2l0aCB0aGUgbWFzayBpbiBuZXQgbWFzaworICAgICAgbm90YXRpb24uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfaG9zdG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmssIHdpdGggdGhlIG1hc2sgaW4gaG9zdCBtYXNrCisgICAgICBub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogbnVtX2FkZHJlc3NlcworCisgICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIGFkZHJlc3NlcyBpbiB0aGUgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogcHJlZml4bGVuCisKKyAgICAgIExlbmd0aCBvZiB0aGUgbmV0d29yayBwcmVmaXgsIGluIGJpdHMuCisKKyAgIC4uIG1ldGhvZDo6IGhvc3RzKCkKKworICAgICAgUmV0dXJucyBhbiBpdGVyYXRvciBvdmVyIHRoZSB1c2FibGUgaG9zdHMgaW4gdGhlIG5ldHdvcmsuICBUaGUgdXNhYmxlCisgICAgICBob3N0cyBhcmUgYWxsIHRoZSBJUCBhZGRyZXNzZXMgdGhhdCBiZWxvbmcgdG8gdGhlIG5ldHdvcmssIGV4Y2VwdCB0aGUKKyAgICAgIG5ldHdvcmsgYWRkcmVzcyBpdHNlbGYgYW5kIHRoZSBuZXR3b3JrIGJyb2FkY2FzdCBhZGRyZXNzLgorCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjknKS5ob3N0cygpKQorICAgICAgICAgW0lQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKSwgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMicpLAorICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjMnKSwgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNCcpLAorICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjUnKSwgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNicpXQorCisgICAuLiBtZXRob2Q6OiBvdmVybGFwcyhvdGhlcikKKworICAgICAgYGBUcnVlYGAgaWYgdGhpcyBuZXR3b3JrIGlzIHBhcnRseSBvciB3aG9sbHkgY29udGFpbmVkIGluICpvdGhlciogb3IKKyAgICAgIG9yICpvdGhlciogaXMgd2hvbGx5IGNvbnRhaW5lZCBpbiB0aGlzIG5ldHdvcmsuCisKKyAgIC4uIG1ldGhvZDo6IGFkZHJlc3NfZXhjbHVkZShuZXR3b3JrKQorCisgICAgICBDb21wdXRlcyB0aGUgbmV0d29yayBkZWZpbml0aW9ucyByZXN1bHRpbmcgZnJvbSByZW1vdmluZyB0aGUgZ2l2ZW4KKyAgICAgICpuZXR3b3JrKiBmcm9tIHRoaXMgb25lLiAgUmV0dXJucyBhbiBpdGVyYXRvciBvZiBuZXR3b3JrIG9iamVjdHMuCisgICAgICBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKm5ldHdvcmsqIGlzIG5vdCBjb21wbGV0ZWx5IGNvbnRhaW5lZCBpbgorICAgICAgdGhpcyBuZXR3b3JrLgorCisgICAgICAgICA+Pj4gbjEgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgICAgICAgPj4+IG4yID0gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykKKyAgICAgICAgID4+PiBsaXN0KG4xLmFkZHJlc3NfZXhjbHVkZShuMikpCisgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuOC8yOScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi40LzMwJyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMi8zMScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJyldCisKKyAgIC4uIG1ldGhvZDo6IHN1Ym5ldHMocHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKQorCisgICAgICBUaGUgc3VibmV0cyB0aGF0IGpvaW4gdG8gbWFrZSB0aGUgY3VycmVudCBuZXR3b3JrIGRlZmluaXRpb24sIGRlcGVuZGluZworICAgICAgb24gdGhlIGFyZ3VtZW50IHZhbHVlcy4gICpwcmVmaXhsZW5fZGlmZiogaXMgdGhlIGFtb3VudCBvdXIgcHJlZml4CisgICAgICBsZW5ndGggc2hvdWxkIGJlIGluY3JlYXNlZCBieS4gICpuZXdfcHJlZml4KiBpcyB0aGUgZGVzaXJlZCBuZXcKKyAgICAgIHByZWZpeCBvZiB0aGUgc3VibmV0czsgaXQgbXVzdCBiZSBsYXJnZXIgdGhhbiBvdXIgcHJlZml4LiAgT25lIGFuZAorICAgICAgb25seSBvbmUgb2YgKnByZWZpeGxlbl9kaWZmKiBhbmQgKm5ld19wcmVmaXgqIG11c3QgYmUgc2V0LiAgUmV0dXJucyBhbgorICAgICAgaXRlcmF0b3Igb2YgbmV0d29yayBvYmplY3RzLgorCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKCkpCisgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0KKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9MikpCisgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNicpLCBJUHY0TmV0d29yaygnMTkyLjAuMi42NC8yNicpLAorICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNicpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xOTIvMjYnKV0KKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMobmV3X3ByZWZpeD0yNikpCisgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNicpLCBJUHY0TmV0d29yaygnMTkyLjAuMi42NC8yNicpLAorICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNicpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xOTIvMjYnKV0KKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMobmV3X3ByZWZpeD0yMykpCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmV3IHByZWZpeCBtdXN0IGJlIGxvbmdlcicpCisgICAgICAgICBWYWx1ZUVycm9yOiBuZXcgcHJlZml4IG11c3QgYmUgbG9uZ2VyCisgICAgICAgICA+Pj4gbGlzdChpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdWJuZXRzKG5ld19wcmVmaXg9MjUpKQorICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldCisKKyAgIC4uIG1ldGhvZDo6IHN1cGVybmV0KHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSkKKworICAgICAgVGhlIHN1cGVybmV0IGNvbnRhaW5pbmcgdGhpcyBuZXR3b3JrIGRlZmluaXRpb24sIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgIGFyZ3VtZW50IHZhbHVlcy4gICpwcmVmaXhsZW5fZGlmZiogaXMgdGhlIGFtb3VudCBvdXIgcHJlZml4IGxlbmd0aAorICAgICAgc2hvdWxkIGJlIGRlY3JlYXNlZCBieS4gICpuZXdfcHJlZml4KiBpcyB0aGUgZGVzaXJlZCBuZXcgcHJlZml4IG9mCisgICAgICB0aGUgc3VwZXJuZXQ7IGl0IG11c3QgYmUgc21hbGxlciB0aGFuIG91ciBwcmVmaXguICBPbmUgYW5kIG9ubHkgb25lCisgICAgICBvZiAqcHJlZml4bGVuX2RpZmYqIGFuZCAqbmV3X3ByZWZpeCogbXVzdCBiZSBzZXQuICBSZXR1cm5zIGEgc2luZ2xlCisgICAgICBuZXR3b3JrIG9iamVjdC4KKworICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1cGVybmV0KCkKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjMnKQorICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1cGVybmV0KHByZWZpeGxlbl9kaWZmPTIpCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMC4wLzIyJykKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKS5zdXBlcm5ldChuZXdfcHJlZml4PTIwKQorICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yMCcpCisKKyAgIC4uIG1ldGhvZDo6IGNvbXBhcmVfbmV0d29ya3Mob3RoZXIpCisKKyAgICAgIENvbXBhcmUgdGhpcyBuZXR3b3JrIHRvICpvdGhlciouICBJbiB0aGlzIGNvbXBhcmlzb24gb25seSB0aGUgbmV0d29yaworICAgICAgYWRkcmVzc2VzIGFyZSBjb25zaWRlcmVkOyBob3N0IGJpdHMgYXJlbid0LiAgUmV0dXJucyBlaXRoZXIgYGAtMWBgLAorICAgICAgYGAwYGAgb3IgYGAxYGAuCisKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKS5jb21wYXJlX25ldHdvcmtzKGlwX25ldHdvcmsoJzE5Mi4wLjIuMi8zMicpKQorICAgICAgICAgLTEKKyAgICAgICAgID4+PiBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKS5jb21wYXJlX25ldHdvcmtzKGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8zMicpKQorICAgICAgICAgMQorICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpLmNvbXBhcmVfbmV0d29ya3MoaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykpCisgICAgICAgICAwCisKKworLi4gY2xhc3M6OiBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSkKKworICAgQ29uc3RydWN0IGFuIElQdjYgbmV0d29yayBkZWZpbml0aW9uLiAgKmFkZHJlc3MqIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgMS4gQSBzdHJpbmcgY29uc2lzdGluZyBvZiBhbiBJUCBhZGRyZXNzIGFuZCBhbiBvcHRpb25hbCBtYXNrLCBzZXBhcmF0ZWQgYnkKKyAgICAgIGEgc2xhc2ggKGBgL2BgKS4gIFRoZSBJUCBhZGRyZXNzIGlzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGFuZCB0aGUgbWFzaworICAgICAgY2FuIGJlIGVpdGhlciBhIHNpbmdsZSBudW1iZXIsIHdoaWNoIG1lYW5zIGl0J3MgYSAqcHJlZml4Kiwgb3IgYSBzdHJpbmcKKyAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjYgYWRkcmVzcy4gIElmIGl0J3MgdGhlIGxhdHRlciwgdGhlIG1hc2sgaXMKKyAgICAgIGludGVycHJldGVkIGFzIGEgKm5ldCBtYXNrKi4gIElmIG5vIG1hc2sgaXMgcHJvdmlkZWQsIGl0J3MgY29uc2lkZXJlZCB0bworICAgICAgYmUgYGAvMTI4YGAuCisKKyAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nICphZGRyZXNzKiBzcGVjaWZpY2F0aW9ucyBhcmUgZXF1aXZhbGVudDoKKyAgICAgIGBgMjAwMTpkYjAwOjowLzI0YGAgYW5kIGBgMjAwMTpkYjAwOjowL2ZmZmY6ZmYwMDo6YGAuCisKKyAgIDIuIEFuIGludGVnZXIgdGhhdCBmaXRzIGludG8gMTI4IGJpdHMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYQorICAgICAgc2luZ2xlLWFkZHJlc3MgbmV0d29yaywgd2l0aCB0aGUgbmV0d29yayBhZGRyZXNzIGJlaW5nICphZGRyZXNzKiBhbmQKKyAgICAgIHRoZSBtYXNrIGJlaW5nIGBgLzEyOGBgLgorCisgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCAxNiwgYml0LWVuZGlhbi4KKyAgICAgIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBzaW1pbGFyIHRvIGFuIGludGVnZXIgKmFkZHJlc3MqLgorCisgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY2CisgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKKyAgIGFuIElQdjYgYWRkcmVzcy4KKworICAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgYW5kIGhvc3QgYml0cyBhcmUgc2V0IGluIHRoZSBzdXBwbGllZCBhZGRyZXNzLAorICAgdGhlbiA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBob3N0IGJpdHMgYXJlIG1hc2tlZCBvdXQKKyAgIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgbmV0d29yayBhZGRyZXNzLgorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19yZXNlcnZlZAorICAgLi4gYXR0cmlidXRlOjogaXNfbG9vcGJhY2sKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmtfYWRkcmVzcworICAgLi4gYXR0cmlidXRlOjogYnJvYWRjYXN0X2FkZHJlc3MKKyAgIC4uIGF0dHJpYnV0ZTo6IGhvc3QgbWFzaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbXByZXNzZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGV4cGxvZGVkCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX25ldG1hc2sKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfaG9zdG1hc2sKKyAgIC4uIGF0dHJpYnV0ZTo6IG51bV9hZGRyZXNzZXMKKyAgIC4uIGF0dHJpYnV0ZTo6IHByZWZpeGxlbgorICAgLi4gbWV0aG9kOjogaG9zdHMoKQorICAgLi4gbWV0aG9kOjogb3ZlcmxhcHMob3RoZXIpCisgICAuLiBtZXRob2Q6OiBhZGRyZXNzX2V4Y2x1ZGUobmV0d29yaykKKyAgIC4uIG1ldGhvZDo6IHN1Ym5ldHMocHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKQorICAgLi4gbWV0aG9kOjogc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKQorICAgLi4gbWV0aG9kOjogY29tcGFyZV9uZXR3b3JrcyhvdGhlcikKKworICAgICAgUmVmZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGRvY3VtZW50YXRpb24gaW4KKyAgICAgIDpjbGFzczpgSVB2NE5ldHdvcmtgCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3NpdGVfbG9jYWwKKworICAgICAgVGhlc2UgYXR0cmlidXRlIGlzIHRydWUgZm9yIHRoZSBuZXR3b3JrIGFzIGEgd2hvbGUgaWYgaXQgaXMgdHJ1ZQorICAgICAgdHJ1ZSBmb3IgYm90aCB0aGUgbmV0d29yayBhZGRyZXNzIGFuZCB0aGUgYnJvYWRjYXN0IGFkZHJlc3MKKworCitPcGVyYXRvcnMKK15eXl5eXl5eXgorCitOZXR3b3JrIG9iamVjdHMgc3VwcG9ydCBzb21lIG9wZXJhdG9ycy4gIFVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCBvcGVyYXRvcnMgY2FuCitvbmx5IGJlIGFwcGxpZWQgYmV0d2VlbiBjb21wYXRpYmxlIG9iamVjdHMgKGkuZS4gSVB2NCB3aXRoIElQdjQsIElQdjYgd2l0aAorSVB2NikuCisKKworTG9naWNhbCBvcGVyYXRvcnMKKyIiIiIiIiIiIiIiIiIiIiIiCisKK05ldHdvcmsgb2JqZWN0cyBjYW4gYmUgY29tcGFyZWQgd2l0aCB0aGUgdXN1YWwgc2V0IG9mIGxvZ2ljYWwgb3BlcmF0b3JzLAorc2ltaWxhcmx5IHRvIGFkZHJlc3Mgb2JqZWN0cy4KKworCitJdGVyYXRpb24KKyIiIiIiIiIiIgorCitOZXR3b3JrIG9iamVjdHMgY2FuIGJlIGl0ZXJhdGVkIHRvIGxpc3QgYWxsIHRoZSBhZGRyZXNzZXMgYmVsb25naW5nIHRvIHRoZQorbmV0d29yay4gIEZvciBpdGVyYXRpb24sICphbGwqIGhvc3RzIGFyZSByZXR1cm5lZCwgaW5jbHVkaW5nIHVudXNhYmxlIGhvc3RzCisoZm9yIHVzYWJsZSBob3N0cywgdXNlIHRoZSA6bWV0aDpgfklQdjROZXR3b3JrLmhvc3RzYCBtZXRob2QpLiAgQW4KK2V4YW1wbGU6OgorCisgICA+Pj4gZm9yIGFkZHIgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpOgorICAgLi4uICAgYWRkcgorICAgLi4uCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMicpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4zJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjQnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi42JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjcnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuOCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi45JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEwJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjExJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEyJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEzJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjE0JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjE1JykKKworCitOZXR3b3JrcyBhcyBjb250YWluZXJzIG9mIGFkZHJlc3NlcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworTmV0d29yayBvYmplY3RzIGNhbiBhY3QgYXMgY29udGFpbmVycyBvZiBhZGRyZXNzZXMuICBTb21lIGV4YW1wbGVzOjoKKworICAgPj4+IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKVswXQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCisgICA+Pj4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpWzE1XQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTUnKQorICAgPj4+IElQdjRBZGRyZXNzKCcxOTIuMC4yLjYnKSBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgIFRydWUKKyAgID4+PiBJUHY0QWRkcmVzcygnMTkyLjAuMy42JykgaW4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpCisgICBGYWxzZQorCisKK0ludGVyZmFjZSBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiBjbGFzczo6IElQdjRJbnRlcmZhY2UoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjQgaW50ZXJmYWNlLiAgVGhlIG1lYW5pbmcgb2YgKmFkZHJlc3MqIGlzIGFzIGluIHRoZQorICAgY29uc3RydWN0b3Igb2YgOmNsYXNzOmBJUHY0TmV0d29ya2AsIGV4Y2VwdCB0aGF0IGFyYml0cmFyeSBob3N0IGFkZHJlc3NlcworICAgYXJlIGFsd2F5cyBhY2NlcHRlZC4KKworICAgOmNsYXNzOmBJUHY0SW50ZXJmYWNlYCBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgSVB2NEFkZHJlc3NgLCBzbyBpdCBpbmhlcml0cworICAgYWxsIHRoZSBhdHRyaWJ1dGVzIGZyb20gdGhhdCBjbGFzcy4gIEluIGFkZGl0aW9uLCB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMKKyAgIGFyZSBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlwCisKKyAgICAgIFRoZSBhZGRyZXNzICg6Y2xhc3M6YElQdjRBZGRyZXNzYCkgd2l0aG91dCBuZXR3b3JrIGluZm9ybWF0aW9uLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2UuaXAKKyAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjUnKQorCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrCisKKyAgICAgIFRoZSBuZXR3b3JrICg6Y2xhc3M6YElQdjROZXR3b3JrYCkgdGhpcyBpbnRlcmZhY2UgYmVsb25ncyB0by4KKworICAgICAgICAgPj4+IGludGVyZmFjZSA9IElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuNS8yNCcpCisgICAgICAgICA+Pj4gaW50ZXJmYWNlLm5ldHdvcmsKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHdpdGggdGhlIG1hc2sgaW4gcHJlZml4IG5vdGF0aW9uLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9wcmVmaXhsZW4KKyAgICAgICAgICcxOTIuMC4yLjUvMjQnCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHdpdGggdGhlIG5ldHdvcmsgYXMgYSBuZXQgbWFzay4KKworICAgICAgICAgPj4+IGludGVyZmFjZSA9IElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuNS8yNCcpCisgICAgICAgICA+Pj4gaW50ZXJmYWNlLndpdGhfbmV0bWFzaworICAgICAgICAgJzE5Mi4wLjIuNS8yNTUuMjU1LjI1NS4wJworCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX2hvc3RtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbmV0d29yayBhcyBhIGhvc3QgbWFzay4KKworICAgICAgICAgPj4+IGludGVyZmFjZSA9IElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuNS8yNCcpCisgICAgICAgICA+Pj4gaW50ZXJmYWNlLndpdGhfaG9zdG1hc2sKKyAgICAgICAgICcxOTIuMC4yLjUvMC4wLjAuMjU1JworCisKKy4uIGNsYXNzOjogSVB2NkludGVyZmFjZShhZGRyZXNzKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NiBpbnRlcmZhY2UuICBUaGUgbWVhbmluZyBvZiAqYWRkcmVzcyogaXMgYXMgaW4gdGhlCisgICBjb25zdHJ1Y3RvciBvZiA6Y2xhc3M6YElQdjZOZXR3b3JrYCwgZXhjZXB0IHRoYXQgYXJiaXRyYXJ5IGhvc3QgYWRkcmVzc2VzCisgICBhcmUgYWx3YXlzIGFjY2VwdGVkLgorCisgICA6Y2xhc3M6YElQdjZJbnRlcmZhY2VgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBJUHY2QWRkcmVzc2AsIHNvIGl0IGluaGVyaXRzCisgICBhbGwgdGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGF0IGNsYXNzLiAgSW4gYWRkaXRpb24sIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcworICAgYXJlIGF2YWlsYWJsZToKKworICAgLi4gYXR0cmlidXRlOjogaXAKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmsKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX25ldG1hc2sKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfaG9zdG1hc2sKKworICAgICAgUmVmZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGRvY3VtZW50YXRpb24gaW4KKyAgICAgIDpjbGFzczpgSVB2NEludGVyZmFjZWAuCisKKworT3RoZXIgTW9kdWxlIExldmVsIEZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbW9kdWxlIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtb2R1bGUgbGV2ZWwgZnVuY3Rpb25zOgorCisuLiBmdW5jdGlvbjo6IHY0X2ludF90b19wYWNrZWQoYWRkcmVzcykKKworICAgUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgNCBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisgICAqYWRkcmVzcyogaXMgYW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IElQIGFkZHJlc3MuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIGludGVnZXIgaXMgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIHRvIGJlIGFuCisgICBJUHY0IElQIGFkZHJlc3MuCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygzMjIxMjI1OTg1KQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLnY0X2ludF90b19wYWNrZWQoMzIyMTIyNTk4NSkKKyAgIGInXHhjMFx4MDBceDAyXHgwMScKKworCisuLiBmdW5jdGlvbjo6IHY2X2ludF90b19wYWNrZWQoYWRkcmVzcykKKworICAgUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgMTYgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorICAgKmFkZHJlc3MqIGlzIGFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBJUCBhZGRyZXNzLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBpbnRlZ2VyIGlzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSB0byBiZSBhbgorICAgSVB2NiBJUCBhZGRyZXNzLgorCisKKy4uIGZ1bmN0aW9uOjogc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpCisKKyAgIFJldHVybiBhbiBpdGVyYXRvciBvZiB0aGUgc3VtbWFyaXplZCBuZXR3b3JrIHJhbmdlIGdpdmVuIHRoZSBmaXJzdCBhbmQgbGFzdAorICAgSVAgYWRkcmVzc2VzLiAgKmZpcnN0KiBpcyB0aGUgZmlyc3QgOmNsYXNzOmBJUHY0QWRkcmVzc2Agb3IKKyAgIDpjbGFzczpgSVB2NkFkZHJlc3NgIGluIHRoZSByYW5nZSBhbmQgKmxhc3QqIGlzIHRoZSBsYXN0IDpjbGFzczpgSVB2NEFkZHJlc3NgCisgICBvciA6Y2xhc3M6YElQdjZBZGRyZXNzYCBpbiB0aGUgcmFuZ2UuICBBIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkIGlmCisgICAqZmlyc3QqIG9yICpsYXN0KiBhcmUgbm90IElQIGFkZHJlc3NlcyBvciBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24uICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmxhc3QqIGlzIG5vdCBncmVhdGVyIHRoYW4gKmZpcnN0KiBvciBpZgorICAgKmZpcnN0KiBhZGRyZXNzIHZlcnNpb24gaXMgbm90IDQgb3IgNi4KKworICAgPj4+IFtpcGFkZHIgZm9yIGlwYWRkciBpbiBpcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoCisgICAuLi4gICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSwKKyAgIC4uLiAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMwJykpXQorICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzMxJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEzMC8zMicpXQorCisKKy4uIGZ1bmN0aW9uOjogY29sbGFwc2VfYWRkcmVzc2VzKGFkZHJlc3NlcykKKworICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIHRoZSBjb2xsYXBzZWQgOmNsYXNzOmBJUHY0TmV0d29ya2Agb3IKKyAgIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdHMuICAqYWRkcmVzc2VzKiBpcyBhbiBpdGVyYXRvciBvZgorICAgOmNsYXNzOmBJUHY0TmV0d29ya2Agb3IgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cy4gIEEgOmV4YzpgVHlwZUVycm9yYCBpcworICAgcmFpc2VkIGlmICphZGRyZXNzZXMqIGNvbnRhaW5zIG1peGVkIHZlcnNpb24gb2JqZWN0cy4KKworICAgPj4+IFtpcGFkZHIgZm9yIGlwYWRkciBpbgorICAgLi4uIGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksCisgICAuLi4gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXSldCisgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisKKy4uIGZ1bmN0aW9uOjogZ2V0X21peGVkX3R5cGVfa2V5KG9iaikKKworICAgUmV0dXJuIGEga2V5IHN1aXRhYmxlIGZvciBzb3J0aW5nIGJldHdlZW4gbmV0d29ya3MgYW5kIGFkZHJlc3Nlcy4gIEFkZHJlc3MKKyAgIGFuZCBOZXR3b3JrIG9iamVjdHMgYXJlIG5vdCBzb3J0YWJsZSBieSBkZWZhdWx0OyB0aGV5J3JlIGZ1bmRhbWVudGFsbHkKKyAgIGRpZmZlcmVudCwgc28gdGhlIGV4cHJlc3Npb246OgorCisgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSA8PSBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKworICAgZG9lc24ndCBtYWtlIHNlbnNlLiAgVGhlcmUgYXJlIHNvbWUgdGltZXMgaG93ZXZlciwgd2hlcmUgeW91IG1heSB3aXNoIHRvCisgICBoYXZlIDptb2Q6YGlwYWRkcmVzc2Agc29ydCB0aGVzZSBhbnl3YXkuICBJZiB5b3UgbmVlZCB0byBkbyB0aGlzLCB5b3UgY2FuIHVzZQorICAgdGhpcyBmdW5jdGlvbiBhcyB0aGUgYGBrZXlgYCBhcmd1bWVudCB0byA6ZnVuYzpgc29ydGVkKClgLgorCisgICAqb2JqKiBpcyBlaXRoZXIgYSBuZXR3b3JrIG9yIGFkZHJlc3Mgb2JqZWN0LgorCisKK0N1c3RvbSBFeGNlcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLQorCitUbyBzdXBwb3J0IG1vcmUgc3BlY2lmaWMgZXJyb3IgcmVwb3J0aW5nIGZyb20gY2xhc3MgY29uc3RydWN0b3JzLCB0aGUKK21vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKKworLi4gZXhjZXB0aW9uOjogQWRkcmVzc1ZhbHVlRXJyb3IoVmFsdWVFcnJvcikKKworICAgQW55IHZhbHVlIGVycm9yIHJlbGF0ZWQgdG8gdGhlIGFkZHJlc3MuCisKKworLi4gZXhjZXB0aW9uOjogTmV0bWFza1ZhbHVlRXJyb3IoVmFsdWVFcnJvcikKKworICAgQW55IHZhbHVlIGVycm9yIHJlbGF0ZWQgdG8gdGhlIG5ldG1hc2suCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pcGMucnN0IGIvRG9jL2xpYnJhcnkvaXBjLnJzdAppbmRleCBjODczMDY1Li45MWVjNjkzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pcGMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lwYy5yc3QKQEAgLTgsNyArOCw3IEBACiB0byBjb21tdW5pY2F0ZS4KIAogU29tZSBtb2R1bGVzIG9ubHkgd29yayBmb3IgdHdvIHByb2Nlc3NlcyB0aGF0IGFyZSBvbiB0aGUgc2FtZSBtYWNoaW5lLCBlLmcuCi06bW9kOmBzaWduYWxgIGFuZCA6bW9kOmBzdWJwcm9jZXNzYC4gIE90aGVyIG1vZHVsZXMgc3VwcG9ydCBuZXR3b3JraW5nIHByb3RvY29scworOm1vZDpgc2lnbmFsYCBhbmQgOm1vZDpgbW1hcGAuICBPdGhlciBtb2R1bGVzIHN1cHBvcnQgbmV0d29ya2luZyBwcm90b2NvbHMKIHRoYXQgdHdvIG9yIG1vcmUgcHJvY2Vzc2VzIGNhbiB1c2VkIHRvIGNvbW11bmljYXRlIGFjcm9zcyBtYWNoaW5lcy4KIAogVGhlIGxpc3Qgb2YgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIGlzOgpAQCAtMTYsOSArMTYsOSBAQAogCiAuLiB0b2N0cmVlOjoKIAotICAgc3VicHJvY2Vzcy5yc3QKICAgIHNvY2tldC5yc3QKICAgIHNzbC5yc3QKLSAgIHNpZ25hbC5yc3QKICAgIGFzeW5jb3JlLnJzdAogICAgYXN5bmNoYXQucnN0CisgICBzaWduYWwucnN0CisgICBtbWFwLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdCBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKaW5kZXggMzA4ZjkyNS4uMWViNTU0YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CkBAIC00Niw3ICs0Niw3IEBACiA9PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBJdGVyYXRvciAgICAgICAgICAgICAgICBBcmd1bWVudHMgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlCiA9PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci06ZnVuYzpgYWNjdW11bGF0ZWAgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAwLCBwMCtwMSwgcDArcDErcDIsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0pIC0tPiAxIDMgNiAxMCAxNWBgCis6ZnVuYzpgYWNjdW11bGF0ZWAgICAgICBwIFssZnVuY10gICAgICAgICAgICAgICAgICAgICAgIHAwLCBwMCtwMSwgcDArcDErcDIsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0pIC0tPiAxIDMgNiAxMCAxNWBgCiA6ZnVuYzpgY2hhaW5gICAgICAgICAgICBwLCBxLCAuLi4gICAgICAgICAgICAgICAgICAgICAgIHAwLCBwMSwgLi4uIHBsYXN0LCBxMCwgcTEsIC4uLiAgICAgICAgICAgICAgICAgICAgICBgYGNoYWluKCdBQkMnLCAnREVGJykgLS0+IEEgQiBDIEQgRSBGYGAKIDpmdW5jOmBjb21wcmVzc2AgICAgICAgIGRhdGEsIHNlbGVjdG9ycyAgICAgICAgICAgICAgICAgKGRbMF0gaWYgc1swXSksIChkWzFdIGlmIHNbMV0pLCAuLi4gICAgICAgICAgICAgICAgIGBgY29tcHJlc3MoJ0FCQ0RFRicsIFsxLDAsMSwwLDEsMV0pIC0tPiBBIEMgRSBGYGAKIDpmdW5jOmBkcm9wd2hpbGVgICAgICAgIHByZWQsIHNlcSAgICAgICAgICAgICAgICAgICAgICAgc2VxW25dLCBzZXFbbisxXSwgc3RhcnRpbmcgd2hlbiBwcmVkIGZhaWxzICAgICAgICAgIGBgZHJvcHdoaWxlKGxhbWJkYSB4OiB4PDUsIFsxLDQsNiw0LDFdKSAtLT4gNiA0IDFgYApAQCAtODQsMjMgKzg0LDYxIEBACiBzdHJlYW1zIG9mIGluZmluaXRlIGxlbmd0aCwgc28gdGhleSBzaG91bGQgb25seSBiZSBhY2Nlc3NlZCBieSBmdW5jdGlvbnMgb3IKIGxvb3BzIHRoYXQgdHJ1bmNhdGUgdGhlIHN0cmVhbS4KIAotLi4gZnVuY3Rpb246OiBhY2N1bXVsYXRlKGl0ZXJhYmxlKQorLi4gZnVuY3Rpb246OiBhY2N1bXVsYXRlKGl0ZXJhYmxlWywgZnVuY10pCiAKICAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBhY2N1bXVsYXRlZCBzdW1zLiBFbGVtZW50cyBtYXkgYmUgYW55IGFkZGFibGUKLSAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YERlY2ltYWxgIG9yIDpjbGFzczpgRnJhY3Rpb25gLiAgRXF1aXZhbGVudCB0bzo6CisgICAgdHlwZSBpbmNsdWRpbmcgOmNsYXNzOmBEZWNpbWFsYCBvciA6Y2xhc3M6YEZyYWN0aW9uYC4gIElmIHRoZSBvcHRpb25hbAorICAgICpmdW5jKiBhcmd1bWVudCBpcyBzdXBwbGllZCwgaXQgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgdHdvIGFyZ3VtZW50cworICAgIGFuZCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBhZGRpdGlvbi4KIAotICAgICAgICBkZWYgYWNjdW11bGF0ZShpdGVyYWJsZSk6CisgICAgRXF1aXZhbGVudCB0bzo6CisKKyAgICAgICAgZGVmIGFjY3VtdWxhdGUoaXRlcmFibGUsIGZ1bmM9b3BlcmF0b3IuYWRkKToKICAgICAgICAgICAgICdSZXR1cm4gcnVubmluZyB0b3RhbHMnCiAgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0pIC0tPiAxIDMgNiAxMCAxNQorICAgICAgICAgICAgIyBhY2N1bXVsYXRlKFsxLDIsMyw0LDVdLCBvcGVyYXRvci5tdWwpIC0tPiAxIDIgNiAyNCAxMjAKICAgICAgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKICAgICAgICAgICAgIHRvdGFsID0gbmV4dChpdCkKICAgICAgICAgICAgIHlpZWxkIHRvdGFsCiAgICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBpdDoKLSAgICAgICAgICAgICAgICB0b3RhbCA9IHRvdGFsICsgZWxlbWVudAorICAgICAgICAgICAgICAgIHRvdGFsID0gZnVuYyh0b3RhbCwgZWxlbWVudCkKICAgICAgICAgICAgICAgICB5aWVsZCB0b3RhbAogCisgICAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHVzZXMgZm9yIHRoZSAqZnVuYyogYXJndW1lbnQuICBJdCBjYW4gYmUgc2V0IHRvCisgICAgOmZ1bmM6YG1pbmAgZm9yIGEgcnVubmluZyBtaW5pbXVtLCA6ZnVuYzpgbWF4YCBmb3IgYSBydW5uaW5nIG1heGltdW0sIG9yCisgICAgOmZ1bmM6YG9wZXJhdG9yLm11bGAgZm9yIGEgcnVubmluZyBwcm9kdWN0LiAgQW1vcnRpemF0aW9uIHRhYmxlcyBjYW4gYmUKKyAgICBidWlsdCBieSBhY2N1bXVsYXRpbmcgaW50ZXJlc3QgYW5kIGFwcGx5aW5nIHBheW1lbnRzLiAgRmlyc3Qtb3JkZXIKKyAgICBgcmVjdXJyZW5jZSByZWxhdGlvbnMgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVjdXJyZW5jZV9yZWxhdGlvbj5gXworICAgIGNhbiBiZSBtb2RlbGVkIGJ5IHN1cHBseWluZyB0aGUgaW5pdGlhbCB2YWx1ZSBpbiB0aGUgaXRlcmFibGUgYW5kIHVzaW5nIG9ubHkKKyAgICB0aGUgYWNjdW11bGF0ZWQgdG90YWwgaW4gKmZ1bmMqIGFyZ3VtZW50OjoKKworICAgICAgPj4+IGRhdGEgPSBbMywgNCwgNiwgMiwgMSwgOSwgMCwgNywgNSwgOF0KKyAgICAgID4+PiBsaXN0KGFjY3VtdWxhdGUoZGF0YSwgb3BlcmF0b3IubXVsKSkgICAgICMgcnVubmluZyBwcm9kdWN0CisgICAgICBbMywgMTIsIDcyLCAxNDQsIDE0NCwgMTI5NiwgMCwgMCwgMCwgMF0KKyAgICAgID4+PiBsaXN0KGFjY3VtdWxhdGUoZGF0YSwgbWF4KSkgICAgICAgICAgICAgICMgcnVubmluZyBtYXhpbXVtCisgICAgICBbMywgNCwgNiwgNiwgNiwgOSwgOSwgOSwgOSwgOV0KKworICAgICAgIyBBbW9ydGl6ZSBhIDUlIGxvYW4gb2YgMTAwMCB3aXRoIDQgYW5udWFsIHBheW1lbnRzIG9mIDkwCisgICAgICA+Pj4gY2FzaGZsb3dzID0gWzEwMDAsIC05MCwgLTkwLCAtOTAsIC05MF0KKyAgICAgID4+PiBsaXN0KGFjY3VtdWxhdGUoY2FzaGZsb3dzLCBsYW1iZGEgYmFsLCBwbXQ6IGJhbCoxLjA1ICsgcG10KSkKKyAgICAgIFsxMDAwLCA5NjAuMCwgOTE4LjAsIDg3My45MDAwMDAwMDAwMDAxLCA4MjcuNTk1MDAwMDAwMDAwMV0KKworICAgICAgIyBDaGFvdGljIHJlY3VycmVuY2UgcmVsYXRpb24gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Mb2dpc3RpY19tYXAKKyAgICAgID4+PiBsb2dpc3RpY19tYXAgPSBsYW1iZGEgeCwgXzogIHIgKiB4ICogKDEgLSB4KQorICAgICAgPj4+IHIgPSAzLjgKKyAgICAgID4+PiB4MCA9IDAuNAorICAgICAgPj4+IGlucHV0cyA9IHJlcGVhdCh4MCwgMzYpICAgICAjIG9ubHkgdGhlIGluaXRpYWwgdmFsdWUgaXMgdXNlZAorICAgICAgPj4+IFtmb3JtYXQoeCwgJy4yZicpIGZvciB4IGluIGFjY3VtdWxhdGUoaW5wdXRzLCBsb2dpc3RpY19tYXApXQorICAgICAgWycwLjQwJywgJzAuOTEnLCAnMC4zMCcsICcwLjgxJywgJzAuNjAnLCAnMC45MicsICcwLjI5JywgJzAuNzknLCAnMC42MycsCisgICAgICAgJzAuODgnICwnMC4zOScsICcwLjkwJywgJzAuMzMnLCAnMC44NCcsICcwLjUyJywgJzAuOTUnLCAnMC4xOCcsICcwLjU3JywKKyAgICAgICAnMC45MycsICcwLjI1JywgJzAuNzEnLCAnMC43OScsICcwLjYzJywgJzAuODgnLCAnMC4zOScsICcwLjkxJywgJzAuMzInLAorICAgICAgICcwLjgzJywgJzAuNTQnLCAnMC45NScsICcwLjIwJywgJzAuNjAnLCAnMC45MScsICcwLjMwJywgJzAuODAnLCAnMC42MCddCisKICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsICpmdW5jKiBwYXJhbWV0ZXIuCisKIC4uIGZ1bmN0aW9uOjogY2hhaW4oKml0ZXJhYmxlcykKIAogICAgTWFrZSBhbiBpdGVyYXRvciB0aGF0IHJldHVybnMgZWxlbWVudHMgZnJvbSB0aGUgZmlyc3QgaXRlcmFibGUgdW50aWwgaXQgaXMKQEAgLTY2OCw3ICs3MDYsOCBAQAogICAgICAgIHJldHVybiB6aXAoYSwgYikKIAogICAgZGVmIGdyb3VwZXIobiwgaXRlcmFibGUsIGZpbGx2YWx1ZT1Ob25lKToKLSAgICAgICAiZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgorICAgICAgICJDb2xsZWN0IGRhdGEgaW50byBmaXhlZC1sZW5ndGggY2h1bmtzIG9yIGJsb2NrcyIKKyAgICAgICAjIGdyb3VwZXIoMywgJ0FCQ0RFRkcnLCAneCcpIC0tPiBBQkMgREVGIEd4eCIKICAgICAgICBhcmdzID0gW2l0ZXIoaXRlcmFibGUpXSAqIG4KICAgICAgICByZXR1cm4gemlwX2xvbmdlc3QoKmFyZ3MsIGZpbGx2YWx1ZT1maWxsdmFsdWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CmluZGV4IDQ1YWJhMGEuLmQ0NmYxY2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdApAQCAtNDc1LDggKzQ3NSwxMSBAQAogbG9jYWxlIHNvbWV3aGF0IHBhaW5mdWwgdG8gdXNlIGNvcnJlY3RseS4KIAogSW5pdGlhbGx5LCB3aGVuIGEgcHJvZ3JhbSBpcyBzdGFydGVkLCB0aGUgbG9jYWxlIGlzIHRoZSBgYENgYCBsb2NhbGUsIG5vIG1hdHRlcgotd2hhdCB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgaXMuICBUaGUgcHJvZ3JhbSBtdXN0IGV4cGxpY2l0bHkgc2F5IHRoYXQgaXQKLXdhbnRzIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBzZXR0aW5ncyBieSBjYWxsaW5nIGBgc2V0bG9jYWxlKExDX0FMTCwgJycpYGAuCit3aGF0IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBpcy4gIFRoZXJlIGlzIG9uZSBleGNlcHRpb246IHRoZQorOmRhdGE6YExDX0NUWVBFYCBjYXRlZ29yeSBpcyBjaGFuZ2VkIGF0IHN0YXJ0dXAgdG8gc2V0IHRoZSBjdXJyZW50IGxvY2FsZQorZW5jb2RpbmcgdG8gdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIGVuY29kaW5nLiBUaGUgcHJvZ3JhbSBtdXN0IGV4cGxpY2l0bHkKK3NheSB0aGF0IGl0IHdhbnRzIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBzZXR0aW5ncyBmb3Igb3RoZXIgY2F0ZWdvcmllcyBieQorY2FsbGluZyBgYHNldGxvY2FsZShMQ19BTEwsICcnKWBgLgogCiBJdCBpcyBnZW5lcmFsbHkgYSBiYWQgaWRlYSB0byBjYWxsIDpmdW5jOmBzZXRsb2NhbGVgIGluIHNvbWUgbGlicmFyeSByb3V0aW5lLAogc2luY2UgYXMgYSBzaWRlIGVmZmVjdCBpdCBhZmZlY3RzIHRoZSBlbnRpcmUgcHJvZ3JhbS4gIFNhdmluZyBhbmQgcmVzdG9yaW5nIGl0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IGVmNjVjZmEuLjUzN2I4YzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC0xNjQsNiArMTY0LDg3IEBACiAgICAgICBjaGFuZ2VkLiAgSWYgaXQgaGFzLCB0aGUgZXhpc3Rpbmcgc3RyZWFtIGlzIGZsdXNoZWQgYW5kIGNsb3NlZCBhbmQgdGhlCiAgICAgICBmaWxlIG9wZW5lZCBhZ2FpbiwgYmVmb3JlIG91dHB1dHRpbmcgdGhlIHJlY29yZCB0byB0aGUgZmlsZS4KIAorLi4gX2Jhc2Utcm90YXRpbmctaGFuZGxlcjoKKworQmFzZVJvdGF0aW5nSGFuZGxlcgorXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgOmNsYXNzOmBCYXNlUm90YXRpbmdIYW5kbGVyYCBjbGFzcywgbG9jYXRlZCBpbiB0aGUgOm1vZDpgbG9nZ2luZy5oYW5kbGVyc2AKK21vZHVsZSwgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSByb3RhdGluZyBmaWxlIGhhbmRsZXJzLAorOmNsYXNzOmBSb3RhdGluZ0ZpbGVIYW5kbGVyYCBhbmQgOmNsYXNzOmBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJgLiBZb3Ugc2hvdWxkCitub3QgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzLCBidXQgaXQgaGFzIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgeW91IG1heQorbmVlZCB0byBvdmVycmlkZS4KKworLi4gY2xhc3M6OiBCYXNlUm90YXRpbmdIYW5kbGVyKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSkKKworICAgVGhlIHBhcmFtZXRlcnMgYXJlIGFzIGZvciA6Y2xhc3M6YEZpbGVIYW5kbGVyYC4gVGhlIGF0dHJpYnV0ZXMgYXJlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lcgorCisgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYSBjYWxsYWJsZSwgdGhlIDptZXRoOmByb3RhdGlvbl9maWxlbmFtZWAKKyAgICAgIG1ldGhvZCBkZWxlZ2F0ZXMgdG8gdGhpcyBjYWxsYWJsZS4gVGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSBjYWxsYWJsZQorICAgICAgYXJlIHRob3NlIHBhc3NlZCB0byA6bWV0aDpgcm90YXRpb25fZmlsZW5hbWVgLgorCisgICAgICAuLiBub3RlOjogVGhlIG5hbWVyIGZ1bmN0aW9uIGlzIGNhbGxlZCBxdWl0ZSBhIGZldyB0aW1lcyBkdXJpbmcgcm9sbG92ZXIsCisgICAgICAgICBzbyBpdCBzaG91bGQgYmUgYXMgc2ltcGxlIGFuZCBhcyBmYXN0IGFzIHBvc3NpYmxlLiBJdCBzaG91bGQgYWxzbworICAgICAgICAgcmV0dXJuIHRoZSBzYW1lIG91dHB1dCBldmVyeSB0aW1lIGZvciBhIGdpdmVuIGlucHV0LCBvdGhlcndpc2UgdGhlCisgICAgICAgICByb2xsb3ZlciBiZWhhdmlvdXIgbWF5IG5vdCB3b3JrIGFzIGV4cGVjdGVkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisgICAuLiBhdHRyaWJ1dGU6OiBCYXNlUm90YXRpbmdIYW5kbGVyLnJvdGF0b3IKKworICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIGEgY2FsbGFibGUsIHRoZSA6bWV0aDpgcm90YXRlYCBtZXRob2QKKyAgICAgIGRlbGVnYXRlcyB0byB0aGlzIGNhbGxhYmxlLiAgVGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSBjYWxsYWJsZSBhcmUKKyAgICAgIHRob3NlIHBhc3NlZCB0byA6bWV0aDpgcm90YXRlYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIG1ldGhvZDo6IEJhc2VSb3RhdGluZ0hhbmRsZXIucm90YXRpb25fZmlsZW5hbWUoZGVmYXVsdF9uYW1lKQorCisgICAgICBNb2RpZnkgdGhlIGZpbGVuYW1lIG9mIGEgbG9nIGZpbGUgd2hlbiByb3RhdGluZy4KKworICAgICAgVGhpcyBpcyBwcm92aWRlZCBzbyB0aGF0IGEgY3VzdG9tIGZpbGVuYW1lIGNhbiBiZSBwcm92aWRlZC4KKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlICduYW1lcicgYXR0cmlidXRlIG9mIHRoZSBoYW5kbGVyLAorICAgICAgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgZGVmYXVsdCBuYW1lIHRvIGl0LiBJZiB0aGUgYXR0cmlidXRlIGlzbid0CisgICAgICBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgYGBOb25lYGApLCB0aGUgbmFtZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCisKKyAgICAgIDpwYXJhbSBkZWZhdWx0X25hbWU6IFRoZSBkZWZhdWx0IG5hbWUgZm9yIHRoZSBsb2cgZmlsZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworICAgLi4gbWV0aG9kOjogQmFzZVJvdGF0aW5nSGFuZGxlci5yb3RhdGUoc291cmNlLCBkZXN0KQorCisgICAgICBXaGVuIHJvdGF0aW5nLCByb3RhdGUgdGhlIGN1cnJlbnQgbG9nLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ3JvdGF0b3InIGF0dHJpYnV0ZSBvZiB0aGUgaGFuZGxlciwKKyAgICAgIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIHNvdXJjZSBhbmQgZGVzdCBhcmd1bWVudHMgdG8gaXQuIElmIHRoZQorICAgICAgYXR0cmlidXRlIGlzbid0IGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBgYE5vbmVgYCksIHRoZSBzb3VyY2UgaXMgc2ltcGx5CisgICAgICByZW5hbWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIHNvdXJjZSBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseSB0aGUgYmFzZQorICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGUuZy4gJ3Rlc3QubG9nJworICAgICAgOnBhcmFtIGRlc3Q6ICAgVGhlIGRlc3RpbmF0aW9uIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5CisgICAgICAgICAgICAgICAgICAgICB3aGF0IHRoZSBzb3VyY2UgaXMgcm90YXRlZCB0bywgZS5nLiAndGVzdC5sb2cuMScuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgcmVhc29uIHRoZSBhdHRyaWJ1dGVzIGV4aXN0IGlzIHRvIHNhdmUgeW91IGhhdmluZyB0byBzdWJjbGFzcyAtIHlvdSBjYW4gdXNlCit0aGUgc2FtZSBjYWxsYWJsZXMgZm9yIGluc3RhbmNlcyBvZiA6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgIGFuZAorOmNsYXNzOmBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJgLiBJZiBlaXRoZXIgdGhlIG5hbWVyIG9yIHJvdGF0b3IgY2FsbGFibGUKK3JhaXNlcyBhbiBleGNlcHRpb24sIHRoaXMgd2lsbCBiZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBhbnkgb3RoZXIKK2V4Y2VwdGlvbiBkdXJpbmcgYW4gOm1ldGg6YGVtaXRgIGNhbGwsIGkuZS4gdmlhIHRoZSA6bWV0aDpgaGFuZGxlRXJyb3JgIG1ldGhvZAorb2YgdGhlIGhhbmRsZXIuCisKK0lmIHlvdSBuZWVkIHRvIG1ha2UgbW9yZSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHJvdGF0aW9uIHByb2Nlc3NpbmcsIHlvdSBjYW4KK292ZXJyaWRlIHRoZSBtZXRob2RzLgorCitGb3IgYW4gZXhhbXBsZSwgc2VlIDpyZWY6YGNvb2tib29rLXJvdGF0b3ItbmFtZXJgLgorCisKIC4uIF9yb3RhdGluZy1maWxlLWhhbmRsZXI6CiAKIFJvdGF0aW5nRmlsZUhhbmRsZXIKQEAgLTQ1Miw2ICs1MzMsMTUgQEAKICAgICAgICAgIGJlaGF2aW91cikgYnV0IGNhbiBiZSBzZXQgdG8gYGBGYWxzZWBgIG9uIGEgYGBTeXNMb2dIYW5kbGVyYGAgaW5zdGFuY2UKICAgICAgICAgIGluIG9yZGVyIGZvciB0aGF0IGluc3RhbmNlIHRvICpub3QqIGFwcGVuZCB0aGUgTlVMIHRlcm1pbmF0b3IuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICAoU2VlOiA6aXNzdWU6YDEyNDE5YC4pIEluIGVhcmxpZXIgdmVyc2lvbnMsIHRoZXJlIHdhcyBubyBmYWNpbGl0eSBmb3IKKyAgICAgICAgIGFuICJpZGVudCIgb3IgInRhZyIgcHJlZml4IHRvIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhlIG1lc3NhZ2UuIFRoaXMKKyAgICAgICAgIGNhbiBub3cgYmUgc3BlY2lmaWVkIHVzaW5nIGEgY2xhc3MtbGV2ZWwgYXR0cmlidXRlLCBkZWZhdWx0aW5nIHRvCisgICAgICAgICBgYCIiYGAgdG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyLCBidXQgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gb24KKyAgICAgICAgIGEgYGBTeXNMb2dIYW5kbGVyYGAgaW5zdGFuY2UgaW4gb3JkZXIgZm9yIHRoYXQgaW5zdGFuY2UgdG8gcHJlcGVuZAorICAgICAgICAgdGhlIGlkZW50IHRvIGV2ZXJ5IG1lc3NhZ2UgaGFuZGxlZC4gTm90ZSB0aGF0IHRoZSBwcm92aWRlZCBpZGVudCBtdXN0CisgICAgICAgICBiZSB0ZXh0LCBub3QgYnl0ZXMsIGFuZCBpcyBwcmVwZW5kZWQgdG8gdGhlIG1lc3NhZ2UgZXhhY3RseSBhcyBpcy4KKwogICAgLi4gbWV0aG9kOjogZW5jb2RlUHJpb3JpdHkoZmFjaWxpdHksIHByaW9yaXR5KQogCiAgICAgICBFbmNvZGVzIHRoZSBmYWNpbGl0eSBhbmQgcHJpb3JpdHkgaW50byBhbiBpbnRlZ2VyLiBZb3UgY2FuIHBhc3MgaW4gc3RyaW5ncwpAQCAtNjE0LDcgKzcwNCw3IEBACiBzdXBwb3J0cyBzZW5kaW5nIGxvZ2dpbmcgbWVzc2FnZXMgdG8gYW4gZW1haWwgYWRkcmVzcyB2aWEgU01UUC4KIAogCi0uLiBjbGFzczo6IFNNVFBIYW5kbGVyKG1haWxob3N0LCBmcm9tYWRkciwgdG9hZGRycywgc3ViamVjdCwgY3JlZGVudGlhbHM9Tm9uZSwgc2VjdXJlPU5vbmUpCisuLiBjbGFzczo6IFNNVFBIYW5kbGVyKG1haWxob3N0LCBmcm9tYWRkciwgdG9hZGRycywgc3ViamVjdCwgY3JlZGVudGlhbHM9Tm9uZSwgc2VjdXJlPU5vbmUsIHRpbWVvdXQ9MS4wKQogCiAgICBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YFNNVFBIYW5kbGVyYCBjbGFzcy4gVGhlIGluc3RhbmNlIGlzCiAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBmcm9tIGFuZCB0byBhZGRyZXNzZXMgYW5kIHN1YmplY3QgbGluZSBvZiB0aGUgZW1haWwuIFRoZQpAQCAtNjMwLDYgKzcyMCwxMiBAQAogICAgYW5kIGNlcnRpZmljYXRlIGZpbGUuIChUaGlzIHR1cGxlIGlzIHBhc3NlZCB0byB0aGUKICAgIDptZXRoOmBzbXRwbGliLlNNVFAuc3RhcnR0bHNgIG1ldGhvZC4pCiAKKyAgIEEgdGltZW91dCBjYW4gYmUgc3BlY2lmaWVkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIFNNVFAgc2VydmVyIHVzaW5nIHRoZQorICAgKnRpbWVvdXQqIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgd2FzIGFkZGVkLgorCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAogICAgICAgRm9ybWF0cyB0aGUgcmVjb3JkIGFuZCBzZW5kcyBpdCB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3NlZXMuCkBAIC02OTAsNyArNzg2LDcgQEAKIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCi0gICAgICBDYWxscyA6bWV0aDpgZmx1c2hgLCBzZXRzIHRoZSB0YXJnZXQgdG8gOmNvbnN0OmBOb25lYCBhbmQgY2xlYXJzIHRoZQorICAgICAgQ2FsbHMgOm1ldGg6YGZsdXNoYCwgc2V0cyB0aGUgdGFyZ2V0IHRvIGBgTm9uZWBgIGFuZCBjbGVhcnMgdGhlCiAgICAgICBidWZmZXIuCiAKIApAQCAtODU5LDYgKzk1NSwxNSBAQAogICAgICAgTm90ZSB0aGF0IGlmIHlvdSBkb24ndCBjYWxsIHRoaXMgYmVmb3JlIHlvdXIgYXBwbGljYXRpb24gZXhpdHMsIHRoZXJlCiAgICAgICBtYXkgYmUgc29tZSByZWNvcmRzIHN0aWxsIGxlZnQgb24gdGhlIHF1ZXVlLCB3aGljaCB3b24ndCBiZSBwcm9jZXNzZWQuCiAKKyAgIC4uIG1ldGhvZDo6IGVucXVldWVfc2VudGluZWwoKQorCisgICAgICBXcml0ZXMgYSBzZW50aW5lbCB0byB0aGUgcXVldWUgdG8gdGVsbCB0aGUgbGlzdGVuZXIgdG8gcXVpdC4gVGhpcworICAgICAgaW1wbGVtZW50YXRpb24gdXNlcyBgYHB1dF9ub3dhaXQoKWBgLiAgWW91IG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMKKyAgICAgIG1ldGhvZCBpZiB5b3Ugd2FudCB0byB1c2UgdGltZW91dHMgb3Igd29yayB3aXRoIGN1c3RvbSBxdWV1ZQorICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdAppbmRleCBiNjYyMmUzLi4wZDk1NmIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdApAQCAtMjEzLDYgKzIxMyw5IEBACiAgICBMb2dzIGEgbWVzc2FnZSB3aXRoIGxldmVsIDpjb25zdDpgV0FSTklOR2Agb24gdGhpcyBsb2dnZXIuIFRoZSBhcmd1bWVudHMgYXJlCiAgICBpbnRlcnByZXRlZCBhcyBmb3IgOm1ldGg6YGRlYnVnYC4KIAorICAgLi4gbm90ZTo6IFRoZXJlIGlzIGFuIG9ic29sZXRlIG1ldGhvZCBgYHdhcm5gYCB3aGljaCBpcyBmdW5jdGlvbmFsbHkKKyAgICAgIGlkZW50aWNhbCB0byBgYHdhcm5pbmdgYC4gQXMgYGB3YXJuYGAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIGRvIG5vdCB1c2UKKyAgICAgIGl0IC0gdXNlIGBgd2FybmluZ2BgIGluc3RlYWQuCiAKIC4uIG1ldGhvZDo6IExvZ2dlci5lcnJvcihtc2csICphcmdzLCAqKmt3YXJncykKIApAQCAtNDkyLDYgKzQ5NSwxOSBAQAogICAgICAgd2FudCBhbGwgbG9nZ2luZyB0aW1lcyB0byBiZSBzaG93biBpbiBHTVQsIHNldCB0aGUgYGBjb252ZXJ0ZXJgYAogICAgICAgYXR0cmlidXRlIGluIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXNseSwgdGhlIGRlZmF1bHQgSVNPIDg2MDEgZm9ybWF0IHdhcyBoYXJkLWNvZGVkIGFzIGluIHRoaXMKKyAgICAgICAgIGV4YW1wbGU6IGBgMjAxMC0wOS0wNiAyMjozODoxNSwyOTJgYCB3aGVyZSB0aGUgcGFydCBiZWZvcmUgdGhlIGNvbW1hIGlzCisgICAgICAgICBoYW5kbGVkIGJ5IGEgc3RycHRpbWUgZm9ybWF0IHN0cmluZyAoYGAnJVktJW0tJWQgJUg6JU06JVMnYGApLCBhbmQgdGhlCisgICAgICAgICBwYXJ0IGFmdGVyIHRoZSBjb21tYSBpcyBhIG1pbGxpc2Vjb25kIHZhbHVlLiBCZWNhdXNlIHN0cnB0aW1lIGRvZXMgbm90CisgICAgICAgICBoYXZlIGEgZm9ybWF0IHBsYWNlaG9sZGVyIGZvciBtaWxsaXNlY29uZHMsIHRoZSBtaWxsaXNlY29uZCB2YWx1ZSBpcworICAgICAgICAgYXBwZW5kZWQgdXNpbmcgYW5vdGhlciBmb3JtYXQgc3RyaW5nLCBgYCclcywlMDNkJ2BgIOKAkyBhbmQgYm90aCBvZiB0aGVzZQorICAgICAgICAgZm9ybWF0IHN0cmluZ3MgaGF2ZSBiZWVuIGhhcmRjb2RlZCBpbnRvIHRoaXMgbWV0aG9kLiBXaXRoIHRoZSBjaGFuZ2UsCisgICAgICAgICB0aGVzZSBzdHJpbmdzIGFyZSBkZWZpbmVkIGFzIGNsYXNzLWxldmVsIGF0dHJpYnV0ZXMgd2hpY2ggY2FuIGJlCisgICAgICAgICBvdmVycmlkZGVuIGF0IHRoZSBpbnN0YW5jZSBsZXZlbCB3aGVuIGRlc2lyZWQuIFRoZSBuYW1lcyBvZiB0aGUKKyAgICAgICAgIGF0dHJpYnV0ZXMgYXJlIGBgZGVmYXVsdF90aW1lX2Zvcm1hdGBgIChmb3IgdGhlIHN0cnB0aW1lIGZvcm1hdCBzdHJpbmcpCisgICAgICAgICBhbmQgYGBkZWZhdWx0X21zZWNfZm9ybWF0YGAgKGZvciBhcHBlbmRpbmcgdGhlIG1pbGxpc2Vjb25kIHZhbHVlKS4KKwogICAgLi4gbWV0aG9kOjogZm9ybWF0RXhjZXB0aW9uKGV4Y19pbmZvKQogCiAgICAgICBGb3JtYXRzIHRoZSBzcGVjaWZpZWQgZXhjZXB0aW9uIGluZm9ybWF0aW9uIChhIHN0YW5kYXJkIGV4Y2VwdGlvbiB0dXBsZSBhcwpAQCAtOTAxLDggKzkxNywxMiBAQAogCiAuLiBmdW5jdGlvbjo6IHdhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgIExvZ3MgYSBtZXNzYWdlIHdpdGggbGV2ZWwgOmNvbnN0OmBXQVJOSU5HYCBvbiB0aGUgcm9vdCBsb2dnZXIuIFRoZSBhcmd1bWVudHMgYXJlCi0gICBpbnRlcnByZXRlZCBhcyBmb3IgOmZ1bmM6YGRlYnVnYC4KKyAgIExvZ3MgYSBtZXNzYWdlIHdpdGggbGV2ZWwgOmNvbnN0OmBXQVJOSU5HYCBvbiB0aGUgcm9vdCBsb2dnZXIuIFRoZSBhcmd1bWVudHMKKyAgIGFyZSBpbnRlcnByZXRlZCBhcyBmb3IgOmZ1bmM6YGRlYnVnYC4KKworICAgLi4gbm90ZTo6IFRoZXJlIGlzIGFuIG9ic29sZXRlIGZ1bmN0aW9uIGBgd2FybmBgIHdoaWNoIGlzIGZ1bmN0aW9uYWxseQorICAgICAgaWRlbnRpY2FsIHRvIGBgd2FybmluZ2BgLiBBcyBgYHdhcm5gYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgZG8gbm90IHVzZQorICAgICAgaXQgLSB1c2UgYGB3YXJuaW5nYGAgaW5zdGVhZC4KIAogCiAuLiBmdW5jdGlvbjo6IGVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQpAQCAtMTAyOCwxMiArMTA0OCwyNyBAQAogICAgfCBgYHN0cmVhbWBgICAgfCBVc2UgdGhlIHNwZWNpZmllZCBzdHJlYW0gdG8gaW5pdGlhbGl6ZSB0aGUgIHwKICAgIHwgICAgICAgICAgICAgIHwgU3RyZWFtSGFuZGxlci4gTm90ZSB0aGF0IHRoaXMgYXJndW1lbnQgaXMgICB8CiAgICB8ICAgICAgICAgICAgICB8IGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoIGFyZSAgfAotICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCAnc3RyZWFtJyBpcyBpZ25vcmVkLiAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgIHwgcHJlc2VudCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYGhhbmRsZXJzYGAgfCBJZiBzcGVjaWZpZWQsIHRoaXMgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIHwKKyAgIHwgICAgICAgICAgICAgIHwgYWxyZWFkeSBjcmVhdGVkIGhhbmRsZXJzIHRvIGFkZCB0byB0aGUgcm9vdCB8CisgICB8ICAgICAgICAgICAgICB8IGxvZ2dlci4gQW55IGhhbmRsZXJzIHdoaWNoIGRvbid0IGFscmVhZHkgICAgfAorICAgfCAgICAgICAgICAgICAgfCBoYXZlIGEgZm9ybWF0dGVyIHNldCB3aWxsIGJlIGFzc2lnbmVkIHRoZSAgIHwKKyAgIHwgICAgICAgICAgICAgIHwgZGVmYXVsdCBmb3JtYXR0ZXIgY3JlYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLiB8CisgICB8ICAgICAgICAgICAgICB8IE5vdGUgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSAgICAgfAorICAgfCAgICAgICAgICAgICAgfCB3aXRoICdmaWxlbmFtZScgb3IgJ3N0cmVhbScgLSBpZiBib3RoIGFyZSAgIHwKKyAgIHwgICAgICAgICAgICAgIHwgcHJlc2VudCwgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQuICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIGBgc3R5bGVgYCBhcmd1bWVudCB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGBoYW5kbGVyc2BgIGFyZ3VtZW50IHdhcyBhZGRlZC4gQWRkaXRpb25hbCBjaGVja3Mgd2VyZSBhZGRlZCB0bworICAgICAgY2F0Y2ggc2l0dWF0aW9ucyB3aGVyZSBpbmNvbXBhdGlibGUgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQgKGUuZy4KKyAgICAgIGBgaGFuZGxlcnNgYCB0b2dldGhlciB3aXRoIGBgc3RyZWFtYGAgb3IgYGBmaWxlbmFtZWBgLCBvciBgYHN0cmVhbWBgCisgICAgICB0b2dldGhlciB3aXRoIGBgZmlsZW5hbWVgYCkuCisKIAogLi4gZnVuY3Rpb246OiBzaHV0ZG93bigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2x6bWEucnN0IGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA5ZmEwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CkBAIC0wLDAgKzEsMzgyIEBACis6bW9kOmBsem1hYCAtLS0gQ29tcHJlc3Npb24gdXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGx6bWEKKyAgIDpzeW5vcHNpczogQSBQeXRob24gd3JhcHBlciBmb3IgdGhlIGxpYmx6bWEgY29tcHJlc3Npb24gbGlicmFyeS4KKy4uIG1vZHVsZWF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgY29tcHJlc3NpbmcgYW5kCitkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgdGhlIExaTUEgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBBbHNvIGluY2x1ZGVkIGlzIGEgZmlsZQoraW50ZXJmYWNlIHN1cHBvcnRpbmcgdGhlIGBgLnh6YGAgYW5kIGxlZ2FjeSBgYC5sem1hYGAgZmlsZSBmb3JtYXRzIHVzZWQgYnkgdGhlCis6cHJvZ3JhbTpgeHpgIHV0aWxpdHksIGFzIHdlbGwgYXMgcmF3IGNvbXByZXNzZWQgc3RyZWFtcy4KKworVGhlIGludGVyZmFjZSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgOm1vZDpgYnoyYAorbW9kdWxlLiBIb3dldmVyLCBub3RlIHRoYXQgOmNsYXNzOmBMWk1BRmlsZWAgaXMgKm5vdCogdGhyZWFkLXNhZmUsIHVubGlrZQorOmNsYXNzOmBiejIuQloyRmlsZWAsIHNvIGlmIHlvdSBuZWVkIHRvIHVzZSBhIHNpbmdsZSA6Y2xhc3M6YExaTUFGaWxlYCBpbnN0YW5jZQorZnJvbSBtdWx0aXBsZSB0aHJlYWRzLCBpdCBpcyBuZWNlc3NhcnkgdG8gcHJvdGVjdCBpdCB3aXRoIGEgbG9jay4KKworCisuLiBleGNlcHRpb246OiBMWk1BRXJyb3IKKworICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBjb21wcmVzc2lvbiBvcgorICAgZGVjb21wcmVzc2lvbiwgb3Igd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBjb21wcmVzc29yL2RlY29tcHJlc3NvciBzdGF0ZS4KKworCitSZWFkaW5nIGFuZCB3cml0aW5nIGNvbXByZXNzZWQgZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgXCosIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLCByZXR1cm5pbmcgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4KKworICAgVGhlICpmaWxlbmFtZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcworICAgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAiciJgYCwgYGAicmIiYGAsIGBgInciYGAsIGBgIndiImBgLAorICAgYGAiYSJgYCBvciBgYCJhYiJgYCBmb3IgYmluYXJ5IG1vZGUsIG9yIGBgInJ0ImBgLCBgYCJ3dCJgYCwgb3IgYGAiYXQiYGAgZm9yCisgICB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGlzIGBgInJiImBgLgorCisgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nLCB0aGUgKmZvcm1hdCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZQorICAgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQURlY29tcHJlc3NvcmAuIEluIHRoaXMgY2FzZSwgdGhlICpjaGVjayoKKyAgIGFuZCAqcHJlc2V0KiBhcmd1bWVudHMgc2hvdWxkIG5vdCBiZSB1c2VkLgorCisgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciB3cml0aW5nLCB0aGUgKmZvcm1hdCosICpjaGVjayosICpwcmVzZXQqIGFuZAorICAgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFDb21wcmVzc29yYC4KKworICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIDpjbGFzczpgTFpNQUZpbGVgCisgICBjb25zdHJ1Y3RvcjogYGBMWk1BRmlsZShmaWxlbmFtZSwgbW9kZSwgLi4uKWBgLiBJbiB0aGlzIGNhc2UsIHRoZSAqZW5jb2RpbmcqLAorICAgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgIEZvciB0ZXh0IG1vZGUsIGEgOmNsYXNzOmBMWk1BRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKworLi4gY2xhc3M6OiBMWk1BRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgXCosIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KKworICAgQW4gOmNsYXNzOmBMWk1BRmlsZWAgY2FuIHdyYXAgYW4gYWxyZWFkeS1vcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIG9wZXJhdGUKKyAgIGRpcmVjdGx5IG9uIGEgbmFtZWQgZmlsZS4gVGhlICpmaWxlbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIGVpdGhlciB0aGUgZmlsZQorICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgIG9yCisgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLiBXaGVuIHdyYXBwaW5nIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZAorICAgZmlsZSB3aWxsIG5vdCBiZSBjbG9zZWQgd2hlbiB0aGUgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYGAiciJgYCBmb3IgcmVhZGluZyAoZGVmYXVsdCksIGBgInciYGAgZm9yCisgICBvdmVyd3JpdGluZywgb3IgYGAiYSJgYCBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzCisgICBgYCJyYiJgYCwgYGAid2IiYGAsIGFuZCBgYCJhYiJgYCByZXNwZWN0aXZlbHkuCisKKyAgIElmICpmaWxlbmFtZSogaXMgYSBmaWxlIG9iamVjdCAocmF0aGVyIHRoYW4gYW4gYWN0dWFsIGZpbGUgbmFtZSksIGEgbW9kZSBvZgorICAgYGAidyJgYCBkb2VzIG5vdCB0cnVuY2F0ZSB0aGUgZmlsZSwgYW5kIGlzIGluc3RlYWQgZXF1aXZhbGVudCB0byBgYCJhImBgLgorCisgICBXaGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nLCB0aGUgaW5wdXQgZmlsZSBtYXkgYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YKKyAgIG11bHRpcGxlIHNlcGFyYXRlIGNvbXByZXNzZWQgc3RyZWFtcy4gVGhlc2UgYXJlIHRyYW5zcGFyZW50bHkgZGVjb2RlZCBhcyBhCisgICBzaW5nbGUgbG9naWNhbCBzdHJlYW0uCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqZm9ybWF0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlCisgICB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYC4gSW4gdGhpcyBjYXNlLCB0aGUgKmNoZWNrKgorICAgYW5kICpwcmVzZXQqIGFyZ3VtZW50cyBzaG91bGQgbm90IGJlIHVzZWQuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kCisgICAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgLgorCisgICA6Y2xhc3M6YExaTUFGaWxlYCBzdXBwb3J0cyBhbGwgdGhlIG1lbWJlcnMgc3BlY2lmaWVkIGJ5CisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCwgZXhjZXB0IGZvciA6bWV0aDpgZGV0YWNoYCBhbmQgOm1ldGg6YHRydW5jYXRlYC4KKyAgIEl0ZXJhdGlvbiBhbmQgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYXJlIHN1cHBvcnRlZC4KKworICAgVGhlIGZvbGxvd2luZyBtZXRob2QgaXMgYWxzbyBwcm92aWRlZDoKKworICAgLi4gbWV0aG9kOjogcGVlayhzaXplPS0xKQorCisgICAgICBSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4gQXQgbGVhc3Qgb25lCisgICAgICBieXRlIG9mIGRhdGEgd2lsbCBiZSByZXR1cm5lZCwgdW5sZXNzIEVPRiBoYXMgYmVlbiByZWFjaGVkLiBUaGUgZXhhY3QKKyAgICAgIG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZCAodGhlICpzaXplKiBhcmd1bWVudCBpcyBpZ25vcmVkKS4KKworCitDb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gY2xhc3M6OiBMWk1BQ29tcHJlc3Nvcihmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgQ3JlYXRlIGEgY29tcHJlc3NvciBvYmplY3QsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNvbXByZXNzIGRhdGEgaW5jcmVtZW50YWxseS4KKworICAgRm9yIGEgbW9yZSBjb252ZW5pZW50IHdheSBvZiBjb21wcmVzc2luZyBhIHNpbmdsZSBjaHVuayBvZiBkYXRhLCBzZWUKKyAgIDpmdW5jOmBjb21wcmVzc2AuCisKKyAgIFRoZSAqZm9ybWF0KiBhcmd1bWVudCBzcGVjaWZpZXMgd2hhdCBjb250YWluZXIgZm9ybWF0IHNob3VsZCBiZSB1c2VkLgorICAgUG9zc2libGUgdmFsdWVzIGFyZToKKworICAgKiA6Y29uc3Q6YEZPUk1BVF9YWmA6IFRoZSBgYC54emBgIGNvbnRhaW5lciBmb3JtYXQuCisgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvcm1hdC4KKworICAgKiA6Y29uc3Q6YEZPUk1BVF9BTE9ORWA6IFRoZSBsZWdhY3kgYGAubHptYWBgIGNvbnRhaW5lciBmb3JtYXQuCisgICAgICBUaGlzIGZvcm1hdCBpcyBtb3JlIGxpbWl0ZWQgdGhhbiBgYC54emBgIC0tIGl0IGRvZXMgbm90IHN1cHBvcnQgaW50ZWdyaXR5CisgICAgICBjaGVja3Mgb3IgbXVsdGlwbGUgZmlsdGVycy4KKworICAgKiA6Y29uc3Q6YEZPUk1BVF9SQVdgOiBBIHJhdyBkYXRhIHN0cmVhbSwgbm90IHVzaW5nIGFueSBjb250YWluZXIgZm9ybWF0LgorICAgICAgVGhpcyBmb3JtYXQgc3BlY2lmaWVyIGRvZXMgbm90IHN1cHBvcnQgaW50ZWdyaXR5IGNoZWNrcywgYW5kIHJlcXVpcmVzIHRoYXQKKyAgICAgIHlvdSBhbHdheXMgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gKGZvciBib3RoIGNvbXByZXNzaW9uIGFuZAorICAgICAgZGVjb21wcmVzc2lvbikuIEFkZGl0aW9uYWxseSwgZGF0YSBjb21wcmVzc2VkIGluIHRoaXMgbWFubmVyIGNhbm5vdCBiZQorICAgICAgZGVjb21wcmVzc2VkIHVzaW5nIDpjb25zdDpgRk9STUFUX0FVVE9gIChzZWUgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCkuCisKKyAgIFRoZSAqY2hlY2sqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgdHlwZSBvZiBpbnRlZ3JpdHkgY2hlY2sgdG8gaW5jbHVkZSBpbiB0aGUKKyAgIGNvbXByZXNzZWQgZGF0YS4gVGhpcyBjaGVjayBpcyB1c2VkIHdoZW4gZGVjb21wcmVzc2luZywgdG8gZW5zdXJlIHRoYXQgdGhlCisgICBkYXRhIGhhcyBub3QgYmVlbiBjb3JydXB0ZWQuIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICogOmNvbnN0OmBDSEVDS19OT05FYDogTm8gaW50ZWdyaXR5IGNoZWNrLgorICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IChhbmQgdGhlIG9ubHkgYWNjZXB0YWJsZSB2YWx1ZSkgZm9yCisgICAgIDpjb25zdDpgRk9STUFUX0FMT05FYCBhbmQgOmNvbnN0OmBGT1JNQVRfUkFXYC4KKworICAgKiA6Y29uc3Q6YENIRUNLX0NSQzMyYDogMzItYml0IEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfQ1JDNjRgOiA2NC1iaXQgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2suCisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIDpjb25zdDpgRk9STUFUX1haYC4KKworICAgKiA6Y29uc3Q6YENIRUNLX1NIQTI1NmA6IDI1Ni1iaXQgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLgorCisgICBJZiB0aGUgc3BlY2lmaWVkIGNoZWNrIGlzIG5vdCBzdXBwb3J0ZWQsIGFuIDpjbGFzczpgTFpNQUVycm9yYCBpcyByYWlzZWQuCisKKyAgIFRoZSBjb21wcmVzc2lvbiBzZXR0aW5ncyBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIHByZXNldCBjb21wcmVzc2lvbgorICAgbGV2ZWwgKHdpdGggdGhlICpwcmVzZXQqIGFyZ3VtZW50KSwgb3IgaW4gZGV0YWlsIGFzIGEgY3VzdG9tIGZpbHRlciBjaGFpbgorICAgKHdpdGggdGhlICpmaWx0ZXJzKiBhcmd1bWVudCkuCisKKyAgIFRoZSAqcHJlc2V0KiBhcmd1bWVudCAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gYGAwYGAgYW5kCisgICBgYDlgYCAoaW5jbHVzaXZlKSwgb3B0aW9uYWxseSBPUi1lZCB3aXRoIHRoZSBjb25zdGFudAorICAgOmNvbnN0OmBQUkVTRVRfRVhUUkVNRWAuIElmIG5laXRoZXIgKnByZXNldCogbm9yICpmaWx0ZXJzKiBhcmUgZ2l2ZW4sIHRoZQorICAgZGVmYXVsdCBiZWhhdmlvciBpcyB0byB1c2UgOmNvbnN0OmBQUkVTRVRfREVGQVVMVGAgKHByZXNldCBsZXZlbCBgYDZgYCkuCisgICBIaWdoZXIgcHJlc2V0cyBwcm9kdWNlIHNtYWxsZXIgb3V0cHV0LCBidXQgbWFrZSB0aGUgY29tcHJlc3Npb24gcHJvY2VzcworICAgc2xvd2VyLgorCisgICAuLiBub3RlOjoKKworICAgICAgSW4gYWRkaXRpb24gdG8gYmVpbmcgbW9yZSBDUFUtaW50ZW5zaXZlLCBjb21wcmVzc2lvbiB3aXRoIGhpZ2hlciBwcmVzZXRzCisgICAgICBhbHNvIHJlcXVpcmVzIG11Y2ggbW9yZSBtZW1vcnkgKGFuZCBwcm9kdWNlcyBvdXRwdXQgdGhhdCBuZWVkcyBtb3JlIG1lbW9yeQorICAgICAgdG8gZGVjb21wcmVzcykuIFdpdGggcHJlc2V0IGBgOWBgIGZvciBleGFtcGxlLCB0aGUgb3ZlcmhlYWQgZm9yIGFuCisgICAgICA6Y2xhc3M6YExaTUFDb21wcmVzc29yYCBvYmplY3QgY2FuIGJlIGFzIGhpZ2ggYXMgODAwTWlCLiBGb3IgdGhpcyByZWFzb24sCisgICAgICBpdCBpcyBnZW5lcmFsbHkgYmVzdCB0byBzdGljayB3aXRoIHRoZSBkZWZhdWx0IHByZXNldC4KKworICAgVGhlICpmaWx0ZXJzKiBhcmd1bWVudCAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhIGZpbHRlciBjaGFpbiBzcGVjaWZpZXIuCisgICBTZWUgOnJlZjpgZmlsdGVyLWNoYWluLXNwZWNzYCBmb3IgZGV0YWlscy4KKworICAgLi4gbWV0aG9kOjogY29tcHJlc3MoZGF0YSkKKworICAgICAgQ29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgCisgICAgICBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEgZm9yIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGlucHV0LiBTb21lIG9mCisgICAgICAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8KKyAgICAgIDptZXRoOmBjb21wcmVzc2AgYW5kIDptZXRoOmBmbHVzaGAuIFRoZSByZXR1cm5lZCBkYXRhIHNob3VsZCBiZQorICAgICAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIG91dHB1dCBvZiBhbnkgcHJldmlvdXMgY2FsbHMgdG8gOm1ldGg6YGNvbXByZXNzYC4KKworICAgLi4gbWV0aG9kOjogZmx1c2goKQorCisgICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MsIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdAorICAgICAgY29udGFpbmluZyBhbnkgZGF0YSBzdG9yZWQgaW4gdGhlIGNvbXByZXNzb3IncyBpbnRlcm5hbCBidWZmZXJzLgorCisgICAgICBUaGUgY29tcHJlc3NvciBjYW5ub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisKKworLi4gY2xhc3M6OiBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDcmVhdGUgYSBkZWNvbXByZXNzb3Igb2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCB0byBkZWNvbXByZXNzIGRhdGEKKyAgIGluY3JlbWVudGFsbHkuCisKKyAgIEZvciBhIG1vcmUgY29udmVuaWVudCB3YXkgb2YgZGVjb21wcmVzc2luZyBhbiBlbnRpcmUgY29tcHJlc3NlZCBzdHJlYW0gYXQKKyAgIG9uY2UsIHNlZSA6ZnVuYzpgZGVjb21wcmVzc2AuCisKKyAgIFRoZSAqZm9ybWF0KiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdGhhdCBzaG91bGQgYmUgdXNlZC4gVGhlCisgICBkZWZhdWx0IGlzIDpjb25zdDpgRk9STUFUX0FVVE9gLCB3aGljaCBjYW4gZGVjb21wcmVzcyBib3RoIGBgLnh6YGAgYW5kCisgICBgYC5sem1hYGAgZmlsZXMuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgOmNvbnN0OmBGT1JNQVRfWFpgLAorICAgOmNvbnN0OmBGT1JNQVRfQUxPTkVgLCBhbmQgOmNvbnN0OmBGT1JNQVRfUkFXYC4KKworICAgVGhlICptZW1saW1pdCogYXJndW1lbnQgc3BlY2lmaWVzIGEgbGltaXQgKGluIGJ5dGVzKSBvbiB0aGUgYW1vdW50IG9mIG1lbW9yeQorICAgdGhhdCB0aGUgZGVjb21wcmVzc29yIGNhbiB1c2UuIFdoZW4gdGhpcyBhcmd1bWVudCBpcyB1c2VkLCBkZWNvbXByZXNzaW9uIHdpbGwKKyAgIGZhaWwgd2l0aCBhbiA6Y2xhc3M6YExaTUFFcnJvcmAgaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlY29tcHJlc3MgdGhlIGlucHV0CisgICB3aXRoaW4gdGhlIGdpdmVuIG1lbW9yeSBsaW1pdC4KKworICAgVGhlICpmaWx0ZXJzKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGZpbHRlciBjaGFpbiB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZQorICAgdGhlIHN0cmVhbSBiZWluZyBkZWNvbXByZXNzZWQuIFRoaXMgYXJndW1lbnQgaXMgcmVxdWlyZWQgaWYgKmZvcm1hdCogaXMKKyAgIDpjb25zdDpgRk9STUFUX1JBV2AsIGJ1dCBzaG91bGQgbm90IGJlIHVzZWQgZm9yIG90aGVyIGZvcm1hdHMuCisgICBTZWUgOnJlZjpgZmlsdGVyLWNoYWluLXNwZWNzYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBmaWx0ZXIgY2hhaW5zLgorCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgdHJhbnNwYXJlbnRseSBoYW5kbGUgaW5wdXRzIGNvbnRhaW5pbmcgbXVsdGlwbGUKKyAgICAgIGNvbXByZXNzZWQgc3RyZWFtcywgdW5saWtlIDpmdW5jOmBkZWNvbXByZXNzYCBhbmQgOmNsYXNzOmBMWk1BRmlsZWAuIFRvCisgICAgICBkZWNvbXByZXNzIGEgbXVsdGktc3RyZWFtIGlucHV0IHdpdGggOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCwgeW91IG11c3QKKyAgICAgIGNyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgorCisgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCisKKyAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyBhIDpjbGFzczpgYnl0ZXNgCisgICAgICBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGRhdGEgZm9yIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGlucHV0LgorICAgICAgU29tZSBvZiAqZGF0YSogbWF5IGJlIGJ1ZmZlcmVkIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8KKyAgICAgIDptZXRoOmBkZWNvbXByZXNzYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZQorICAgICAgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNoZWNrCisKKyAgICAgIFRoZSBJRCBvZiB0aGUgaW50ZWdyaXR5IGNoZWNrIHVzZWQgYnkgdGhlIGlucHV0IHN0cmVhbS4gVGhpcyBtYXkgYmUKKyAgICAgIDpjb25zdDpgQ0hFQ0tfVU5LTk9XTmAgdW50aWwgZW5vdWdoIG9mIHRoZSBpbnB1dCBoYXMgYmVlbiBkZWNvZGVkIHRvCisgICAgICBkZXRlcm1pbmUgd2hhdCBpbnRlZ3JpdHkgY2hlY2sgaXQgdXNlcy4KKworICAgLi4gYXR0cmlidXRlOjogZW9mCisKKyAgICAgIFRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHVudXNlZF9kYXRhCisKKyAgICAgIERhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uCisKKyAgICAgIEJlZm9yZSB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgcmVhY2hlZCwgdGhpcyB3aWxsIGJlIGBgYiIiYGAuCisKKworLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX1haLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgQ29tcHJlc3MgKmRhdGEqIChhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIHJldHVybmluZyB0aGUgY29tcHJlc3NlZCBkYXRhIGFzIGEKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKworICAgU2VlIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgIGFib3ZlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwKKyAgICpwcmVzZXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzLgorCisKKy4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKKworICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQorICAgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisKKyAgIElmICpkYXRhKiBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBtdWx0aXBsZSBkaXN0aW5jdCBjb21wcmVzc2VkIHN0cmVhbXMsCisgICBkZWNvbXByZXNzIGFsbCBvZiB0aGVzZSBzdHJlYW1zLCBhbmQgcmV0dXJuIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSByZXN1bHRzLgorCisgICBTZWUgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYCBhYm92ZSBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgKmZvcm1hdCosCisgICAqbWVtbGltaXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzLgorCisKK01pc2NlbGxhbmVvdXMKKy0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBpc19jaGVja19zdXBwb3J0ZWQoY2hlY2spCisKKyAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gaW50ZWdyaXR5IGNoZWNrIGlzIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbS4KKworICAgOmNvbnN0OmBDSEVDS19OT05FYCBhbmQgOmNvbnN0OmBDSEVDS19DUkMzMmAgYXJlIGFsd2F5cyBzdXBwb3J0ZWQuCisgICA6Y29uc3Q6YENIRUNLX0NSQzY0YCBhbmQgOmNvbnN0OmBDSEVDS19TSEEyNTZgIG1heSBiZSB1bmF2YWlsYWJsZSBpZiB5b3UgYXJlCisgICB1c2luZyBhIHZlcnNpb24gb2YgOnByb2dyYW06YGxpYmx6bWFgIHRoYXQgd2FzIGNvbXBpbGVkIHdpdGggYSBsaW1pdGVkCisgICBmZWF0dXJlIHNldC4KKworCisuLiBfZmlsdGVyLWNoYWluLXNwZWNzOgorCitTcGVjaWZ5aW5nIGN1c3RvbSBmaWx0ZXIgY2hhaW5zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZmlsdGVyIGNoYWluIHNwZWNpZmllciBpcyBhIHNlcXVlbmNlIG9mIGRpY3Rpb25hcmllcywgd2hlcmUgZWFjaCBkaWN0aW9uYXJ5Citjb250YWlucyB0aGUgSUQgYW5kIG9wdGlvbnMgZm9yIGEgc2luZ2xlIGZpbHRlci4gRWFjaCBkaWN0aW9uYXJ5IG11c3QgY29udGFpbgordGhlIGtleSBgYCJpZCJgYCwgYW5kIG1heSBjb250YWluIGFkZGl0aW9uYWwga2V5cyB0byBzcGVjaWZ5IGZpbHRlci1kZXBlbmRlbnQKK29wdGlvbnMuIFZhbGlkIGZpbHRlciBJRHMgYXJlIGFzIGZvbGxvd3M6CisKKyogQ29tcHJlc3Npb24gZmlsdGVyczoKKyAgICogOmNvbnN0OmBGSUxURVJfTFpNQTFgIChmb3IgdXNlIHdpdGggOmNvbnN0OmBGT1JNQVRfQUxPTkVgKQorICAgKiA6Y29uc3Q6YEZJTFRFUl9MWk1BMmAgKGZvciB1c2Ugd2l0aCA6Y29uc3Q6YEZPUk1BVF9YWmAgYW5kIDpjb25zdDpgRk9STUFUX1JBV2ApCisKKyogRGVsdGEgZmlsdGVyOgorICAgKiA6Y29uc3Q6YEZJTFRFUl9ERUxUQWAKKworKiBCcmFuY2gtQ2FsbC1KdW1wIChCQ0opIGZpbHRlcnM6CisgICAqIDpjb25zdDpgRklMVEVSX1g4NmAKKyAgICogOmNvbnN0OmBGSUxURVJfSUE2NGAKKyAgICogOmNvbnN0OmBGSUxURVJfQVJNYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9BUk1USFVNQmAKKyAgICogOmNvbnN0OmBGSUxURVJfUE9XRVJQQ2AKKyAgICogOmNvbnN0OmBGSUxURVJfU1BBUkNgCisKK0EgZmlsdGVyIGNoYWluIGNhbiBjb25zaXN0IG9mIHVwIHRvIDQgZmlsdGVycywgYW5kIGNhbm5vdCBiZSBlbXB0eS4gVGhlIGxhc3QKK2ZpbHRlciBpbiB0aGUgY2hhaW4gbXVzdCBiZSBhIGNvbXByZXNzaW9uIGZpbHRlciwgYW5kIGFueSBvdGhlciBmaWx0ZXJzIG11c3QgYmUKK2RlbHRhIG9yIEJDSiBmaWx0ZXJzLgorCitDb21wcmVzc2lvbiBmaWx0ZXJzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIChzcGVjaWZpZWQgYXMgYWRkaXRpb25hbAorZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeSByZXByZXNlbnRpbmcgdGhlIGZpbHRlcik6CisKKyAgICogYGBwcmVzZXRgYDogQSBjb21wcmVzc2lvbiBwcmVzZXQgdG8gdXNlIGFzIGEgc291cmNlIG9mIGRlZmF1bHQgdmFsdWVzIGZvcgorICAgICBvcHRpb25zIHRoYXQgYXJlIG5vdCBzcGVjaWZpZWQgZXhwbGljaXRseS4KKyAgICogYGBkaWN0X3NpemVgYDogRGljdGlvbmFyeSBzaXplIGluIGJ5dGVzLiBUaGlzIHNob3VsZCBiZSBiZXR3ZWVuIDRLaUIgYW5kCisgICAgIDEuNUdpQiAoaW5jbHVzaXZlKS4KKyAgICogYGBsY2BgOiBOdW1iZXIgb2YgbGl0ZXJhbCBjb250ZXh0IGJpdHMuCisgICAqIGBgbHBgYDogTnVtYmVyIG9mIGxpdGVyYWwgcG9zaXRpb24gYml0cy4gVGhlIHN1bSBgYGxjICsgbHBgYCBtdXN0IGJlIGF0CisgICAgIG1vc3QgNC4KKyAgICogYGBwYmBgOiBOdW1iZXIgb2YgcG9zaXRpb24gYml0czsgbXVzdCBiZSBhdCBtb3N0IDQuCisgICAqIGBgbW9kZWBgOiA6Y29uc3Q6YE1PREVfRkFTVGAgb3IgOmNvbnN0OmBNT0RFX05PUk1BTGAuCisgICAqIGBgbmljZV9sZW5gYDogV2hhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhICJuaWNlIGxlbmd0aCIgZm9yIGEgbWF0Y2guCisgICAgIFRoaXMgc2hvdWxkIGJlIDI3MyBvciBsZXNzLgorICAgKiBgYG1mYGA6IFdoYXQgbWF0Y2ggZmluZGVyIHRvIHVzZSAtLSA6Y29uc3Q6YE1GX0hDM2AsIDpjb25zdDpgTUZfSEM0YCwKKyAgICAgOmNvbnN0OmBNRl9CVDJgLCA6Y29uc3Q6YE1GX0JUM2AsIG9yIDpjb25zdDpgTUZfQlQ0YC4KKyAgICogYGBkZXB0aGBgOiBNYXhpbXVtIHNlYXJjaCBkZXB0aCB1c2VkIGJ5IG1hdGNoIGZpbmRlci4gMCAoZGVmYXVsdCkgbWVhbnMgdG8KKyAgICAgc2VsZWN0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gb3RoZXIgZmlsdGVyIG9wdGlvbnMuCisKK1RoZSBkZWx0YSBmaWx0ZXIgc3RvcmVzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJ5dGVzLCBwcm9kdWNpbmcgbW9yZSByZXBldGl0aXZlCitpbnB1dCBmb3IgdGhlIGNvbXByZXNzb3IgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLiBJdCBvbmx5IHN1cHBvcnRzIGEgc2luZ2xlCitUaGUgZGVsdGEgZmlsdGVyIHN1cHBvcnRzIG9ubHkgb25lIG9wdGlvbiwgYGBkaXN0YGAuIFRoaXMgaW5kaWNhdGVzIHRoZSBkaXN0YW5jZQorYmV0d2VlbiBieXRlcyB0byBiZSBzdWJ0cmFjdGVkLiBUaGUgZGVmYXVsdCBpcyAxLCBpLmUuIHRha2UgdGhlIGRpZmZlcmVuY2VzCitiZXR3ZWVuIGFkamFjZW50IGJ5dGVzLgorCitUaGUgQkNKIGZpbHRlcnMgYXJlIGludGVuZGVkIHRvIGJlIGFwcGxpZWQgdG8gbWFjaGluZSBjb2RlLiBUaGV5IGNvbnZlcnQKK3JlbGF0aXZlIGJyYW5jaGVzLCBjYWxscyBhbmQganVtcHMgaW4gdGhlIGNvZGUgdG8gdXNlIGFic29sdXRlIGFkZHJlc3NpbmcsIHdpdGgKK3RoZSBhaW0gb2YgaW5jcmVhc2luZyB0aGUgcmVkdW5kYW5jeSB0aGF0IGNhbiBiZSBleHBsb2l0ZWQgYnkgdGhlIGNvbXByZXNzb3IuCitUaGVzZSBmaWx0ZXJzIHN1cHBvcnQgb25lIG9wdGlvbiwgYGBzdGFydF9vZmZzZXRgYC4gVGhpcyBzcGVjaWZpZXMgdGhlIGFkZHJlc3MKK3RoYXQgc2hvdWxkIGJlIG1hcHBlZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnB1dCBkYXRhLiBUaGUgZGVmYXVsdCBpcyAwLgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorCitSZWFkaW5nIGluIGEgY29tcHJlc3NlZCBmaWxlOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIHdpdGggbHptYS5vcGVuKCJmaWxlLnh6IikgYXMgZjoKKyAgICAgICBmaWxlX2NvbnRlbnQgPSBmLnJlYWQoKQorCitDcmVhdGluZyBhIGNvbXByZXNzZWQgZmlsZTo6CisKKyAgIGltcG9ydCBsem1hCisgICBkYXRhID0gYiJJbnNlcnQgRGF0YSBIZXJlIgorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiLCAidyIpIGFzIGY6CisgICAgICAgZi53cml0ZShkYXRhKQorCitDb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeTo6CisKKyAgIGltcG9ydCBsem1hCisgICBkYXRhX2luID0gYiJJbnNlcnQgRGF0YSBIZXJlIgorICAgZGF0YV9vdXQgPSBsem1hLmNvbXByZXNzKGRhdGFfaW4pCisKK0luY3JlbWVudGFsIGNvbXByZXNzaW9uOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGx6YyA9IGx6bWEuTFpNQUNvbXByZXNzb3IoKQorICAgb3V0MSA9IGx6Yy5jb21wcmVzcyhiIlNvbWUgZGF0YVxuIikKKyAgIG91dDIgPSBsemMuY29tcHJlc3MoYiJBbm90aGVyIHBpZWNlIG9mIGRhdGFcbiIpCisgICBvdXQzID0gbHpjLmNvbXByZXNzKGIiRXZlbiBtb3JlIGRhdGFcbiIpCisgICBvdXQ0ID0gbHpjLmZsdXNoKCkKKyAgICMgQ29uY2F0ZW5hdGUgYWxsIHRoZSBwYXJ0aWFsIHJlc3VsdHM6CisgICByZXN1bHQgPSBiIiIuam9pbihbb3V0MSwgb3V0Miwgb3V0Mywgb3V0NF0pCisKK1dyaXRpbmcgY29tcHJlc3NlZCBkYXRhIHRvIGFuIGFscmVhZHktb3BlbiBmaWxlOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIHdpdGggb3BlbigiZmlsZS54eiIsICJ3YiIpIGFzIGY6CisgICAgICAgZi53cml0ZShiIlRoaXMgZGF0YSB3aWxsIG5vdCBiZSBjb21wcmVzc2VkXG4iKQorICAgICAgIHdpdGggbHptYS5vcGVuKGYsICJ3IikgYXMgbHpmOgorICAgICAgICAgICBsemYud3JpdGUoYiJUaGlzICp3aWxsKiBiZSBjb21wcmVzc2VkXG4iKQorICAgICAgIGYud3JpdGUoYiJOb3QgY29tcHJlc3NlZFxuIikKKworQ3JlYXRpbmcgYSBjb21wcmVzc2VkIGZpbGUgdXNpbmcgYSBjdXN0b20gZmlsdGVyIGNoYWluOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIG15X2ZpbHRlcnMgPSBbCisgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDV9LAorICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDcgfCBsem1hLlBSRVNFVF9FWFRSRU1FfSwKKyAgIF0KKyAgIHdpdGggbHptYS5vcGVuKCJmaWxlLnh6IiwgInciLCBmaWx0ZXJzPW15X2ZpbHRlcnMpIGFzIGY6CisgICAgICAgZi53cml0ZShiImJsYWggYmxhaCBibGFoIikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21hdGgucnN0IGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKaW5kZXggOThjNWIzMy4uNjJjMGYzNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKQEAgLTE4NCw2ICsxODQsMTkgQEAKICAgIHJlc3VsdCBpcyBjYWxjdWxhdGVkIGluIGEgd2F5IHdoaWNoIGlzIGFjY3VyYXRlIGZvciAqeCogbmVhciB6ZXJvLgogCiAKKy4uIGZ1bmN0aW9uOjogbG9nMih4KQorCisgICBSZXR1cm4gdGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLiBUaGlzIGlzIHVzdWFsbHkgbW9yZSBhY2N1cmF0ZSB0aGFuCisgICBgYGxvZyh4LCAyKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDptZXRoOmBpbnQuYml0X2xlbmd0aGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudAorICAgICAgYW4gaW50ZWdlciBpbiBiaW5hcnksIGV4Y2x1ZGluZyB0aGUgc2lnbiBhbmQgbGVhZGluZyB6ZXJvcy4KKworCiAuLiBmdW5jdGlvbjo6IGxvZzEwKHgpCiAKICAgIFJldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgKngqLiAgVGhpcyBpcyB1c3VhbGx5IG1vcmUgYWNjdXJhdGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggNWYwZjAwNC4uMWExOWE3ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTE5NiwxMiArMTk2LDE2IEBACiAgICAgICBtb3ZlIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAogCi0gICAuLiBtZXRob2Q6OiByZWFkKG51bSkKKyAgIC4uIG1ldGhvZDo6IHJlYWQoW25dKQogCi0gICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpudW0qIGJ5dGVzIHN0YXJ0aW5nIGZyb20gdGhlCi0gICAgICBjdXJyZW50IGZpbGUgcG9zaXRpb247IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlCi0gICAgICBieXRlcyB0aGF0IHdlcmUgcmV0dXJuZWQuCisgICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpuKiBieXRlcyBzdGFydGluZyBmcm9tIHRoZQorICAgICAgY3VycmVudCBmaWxlIHBvc2l0aW9uLiBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgKk5vbmUqIG9yIG5lZ2F0aXZlLAorICAgICAgcmV0dXJuIGFsbCBieXRlcyBmcm9tIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUKKyAgICAgIG1hcHBpbmcuIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQgd2VyZQorICAgICAgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBcmd1bWVudCBjYW4gYmUgb21pdHRlZCBvciAqTm9uZSouCiAKICAgIC4uIG1ldGhvZDo6IHJlYWRfYnl0ZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QgYi9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CmluZGV4IDg4OWEwYzUuLjlkMjM3MjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdApAQCAtMjAsNiArMjAsMTEgQEAKIGZvciBpbnRlcm5hdGlvbmFsaXplZCBhcHBsaWNhdGlvbnMuIFRoZSB3aWRlIGNoYXIgQVBJIHNob3VsZCBiZSB1c2VkIHdoZXJlCiBldmVyIHBvc3NpYmxlCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIG5vdyByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aGVyZSA6ZXhjOmBJT0Vycm9yYAorICAgd2FzIHJhaXNlZC4KKworCiAuLiBfbXN2Y3J0LWZpbGVzOgogCiBGaWxlIE9wZXJhdGlvbnMKQEAgLTI5LDcgKzM0LDcgQEAKIC4uIGZ1bmN0aW9uOjogbG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKQogCiAgICBMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIGZyb20gdGhlIEMgcnVudGltZS4gIFJhaXNlcwotICAgOmV4YzpgSU9FcnJvcmAgb24gZmFpbHVyZS4gIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbSB0aGUKKyAgIDpleGM6YE9TRXJyb3JgIG9uIGZhaWx1cmUuICBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb20gdGhlCiAgICBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yICpuYnl0ZXMqIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgZmlsZS4gICptb2RlKiBtdXN0IGJlIG9uZSBvZiB0aGUgOmNvbnN0OmBMS19cKmAgY29uc3RhbnRzIGxpc3RlZCBiZWxvdy4gTXVsdGlwbGUKICAgIHJlZ2lvbnMgaW4gYSBmaWxlIG1heSBiZSBsb2NrZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0IG1heSBub3Qgb3ZlcmxhcC4gIEFkamFjZW50CkBAIC00MSwxMyArNDYsMTMgQEAKIAogICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIHRoZSBwcm9ncmFtCiAgICBpbW1lZGlhdGVseSB0cmllcyBhZ2FpbiBhZnRlciAxIHNlY29uZC4gIElmLCBhZnRlciAxMCBhdHRlbXB0cywgdGhlIGJ5dGVzIGNhbm5vdAotICAgYmUgbG9ja2VkLCA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBiZSBsb2NrZWQsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBkYXRhOjogTEtfTkJMQ0sKICAgICAgICAgICBMS19OQlJMQ0sKIAotICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIDpleGM6YElPRXJyb3JgIGlzCisgICBMb2NrcyB0aGUgc3BlY2lmaWVkIGJ5dGVzLiBJZiB0aGUgYnl0ZXMgY2Fubm90IGJlIGxvY2tlZCwgOmV4YzpgT1NFcnJvcmAgaXMKICAgIHJhaXNlZC4KIAogCkBAIC03Myw3ICs3OCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0X29zZmhhbmRsZShmZCkKIAotICAgUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgUmFpc2VzIDpleGM6YElPRXJyb3JgIGlmCisgICBSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYKICAgICpmZCogaXMgbm90IHJlY29nbml6ZWQuCiAKIApAQCAtMTQ0LDQgKzE0OSw0IEBACiAuLiBmdW5jdGlvbjo6IGhlYXBtaW4oKQogCiAgICBGb3JjZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3MgdG8KLSAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgOmV4YzpgSU9FcnJvcmAuCisgICB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIDpleGM6YE9TRXJyb3JgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggNDI3MWZjMi4uNjE2YjdjZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC0xMjEsOSArMTIxLDcgQEAKICAgICAgICAgICBwcmludChxLmdldCgpKSAgICAjIHByaW50cyAiWzQyLCBOb25lLCAnaGVsbG8nXSIKICAgICAgICAgICBwLmpvaW4oKQogCi0gICBRdWV1ZXMgYXJlIHRocmVhZCBhbmQgcHJvY2VzcyBzYWZlLCBidXQgbm90ZSB0aGF0IHRoZXkgbXVzdCBuZXZlcgotICAgYmUgaW5zdGFudGlhdGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2YgaW1wb3J0aW5nIGEgbW9kdWxlOiB0aGlzIGNhbiBsZWFkCi0gICB0byBhIGRlYWRsb2NrISAgKHNlZSA6cmVmOmB0aHJlYWRlZC1pbXBvcnRzYCkKKyAgIFF1ZXVlcyBhcmUgdGhyZWFkIGFuZCBwcm9jZXNzIHNhZmUuCiAKICoqUGlwZXMqKgogCkBAIC0yMjksMTEgKzIyNywxMSBAQAogICAgaG9sZHMgUHl0aG9uIG9iamVjdHMgYW5kIGFsbG93cyBvdGhlciBwcm9jZXNzZXMgdG8gbWFuaXB1bGF0ZSB0aGVtIHVzaW5nCiAgICBwcm94aWVzLgogCi0gICBBIG1hbmFnZXIgcmV0dXJuZWQgYnkgOmZ1bmM6YE1hbmFnZXJgIHdpbGwgc3VwcG9ydCB0eXBlcyA6Y2xhc3M6YGxpc3RgLAotICAgOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBOYW1lc3BhY2VgLCA6Y2xhc3M6YExvY2tgLCA6Y2xhc3M6YFJMb2NrYCwKLSAgIDpjbGFzczpgU2VtYXBob3JlYCwgOmNsYXNzOmBCb3VuZGVkU2VtYXBob3JlYCwgOmNsYXNzOmBDb25kaXRpb25gLAotICAgOmNsYXNzOmBFdmVudGAsIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFZhbHVlYCBhbmQgOmNsYXNzOmBBcnJheWAuICBGb3IKLSAgIGV4YW1wbGUsIDo6CisgICBBIG1hbmFnZXIgcmV0dXJuZWQgYnkgOmZ1bmM6YE1hbmFnZXJgIHdpbGwgc3VwcG9ydCB0eXBlcworICAgOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBOYW1lc3BhY2VgLCA6Y2xhc3M6YExvY2tgLAorICAgOmNsYXNzOmBSTG9ja2AsIDpjbGFzczpgU2VtYXBob3JlYCwgOmNsYXNzOmBCb3VuZGVkU2VtYXBob3JlYCwKKyAgIDpjbGFzczpgQ29uZGl0aW9uYCwgOmNsYXNzOmBFdmVudGAsIDpjbGFzczpgQmFycmllcmAsCisgICA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBWYWx1ZWAgYW5kIDpjbGFzczpgQXJyYXlgLiAgRm9yIGV4YW1wbGUsIDo6CiAKICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBQcm9jZXNzLCBNYW5hZ2VyCiAKQEAgLTI0NCwxNyArMjQyLDE2IEBACiAgICAgICAgICAgbC5yZXZlcnNlKCkKIAogICAgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcigpCisgICAgICAgICAgd2l0aCBNYW5hZ2VyKCkgYXMgbWFuYWdlcjoKKyAgICAgICAgICAgICAgZCA9IG1hbmFnZXIuZGljdCgpCisgICAgICAgICAgICAgIGwgPSBtYW5hZ2VyLmxpc3QocmFuZ2UoMTApKQogCi0gICAgICAgICAgZCA9IG1hbmFnZXIuZGljdCgpCi0gICAgICAgICAgbCA9IG1hbmFnZXIubGlzdChyYW5nZSgxMCkpCisgICAgICAgICAgICAgIHAgPSBQcm9jZXNzKHRhcmdldD1mLCBhcmdzPShkLCBsKSkKKyAgICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICAgIHAuam9pbigpCiAKLSAgICAgICAgICBwID0gUHJvY2Vzcyh0YXJnZXQ9ZiwgYXJncz0oZCwgbCkpCi0gICAgICAgICAgcC5zdGFydCgpCi0gICAgICAgICAgcC5qb2luKCkKLQotICAgICAgICAgIHByaW50KGQpCi0gICAgICAgICAgcHJpbnQobCkKKyAgICAgICAgICAgICAgcHJpbnQoZCkKKyAgICAgICAgICAgICAgcHJpbnQobCkKIAogICAgd2lsbCBwcmludCA6OgogCkBAIC0yODIsMTAgKzI3OSwxMCBAQAogICAgICAgIHJldHVybiB4KngKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXM9NCkgICAgICAgICAgICAgICAjIHN0YXJ0IDQgd29ya2VyIHByb2Nlc3NlcwotICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmMoZiwgWzEwXSkgICAgICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQotICAgICAgIHByaW50KHJlc3VsdC5nZXQodGltZW91dD0xKSkgICAgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93Ci0gICAgICAgcHJpbnQocG9vbC5tYXAoZiwgcmFuZ2UoMTApKSkgICAgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgorICAgICAgIHdpdGggUG9vbChwcm9jZXNzZXM9NCkgYXMgcG9vbCAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmMoZiwgWzEwXSkgIyBldmFsdWF0ZSAiZigxMCkiIGFzeW5jaHJvbm91c2x5CisgICAgICAgICAgIHByaW50KHJlc3VsdC5nZXQodGltZW91dD0xKSkgICAgICAgIyBwcmludHMgIjEwMCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKKyAgICAgICAgICAgcHJpbnQocG9vbC5tYXAoZiwgcmFuZ2UoMTApKSkgICAgICAjIHByaW50cyAiWzAsIDEsIDQsLi4uLCA4MV0iCiAKIAogUmVmZXJlbmNlCkBAIC0yOTgsNyArMjk1LDggQEAKIDpjbGFzczpgUHJvY2Vzc2AgYW5kIGV4Y2VwdGlvbnMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAotLi4gY2xhc3M6OiBQcm9jZXNzKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSkKKy4uIGNsYXNzOjogUHJvY2Vzcyhncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30sIFwKKyAgICAgICAgICAgICAgICAgICAqLCBkYWVtb249Tm9uZSkKIAogICAgUHJvY2VzcyBvYmplY3RzIHJlcHJlc2VudCBhY3Rpdml0eSB0aGF0IGlzIHJ1biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MuIFRoZQogICAgOmNsYXNzOmBQcm9jZXNzYCBjbGFzcyBoYXMgZXF1aXZhbGVudHMgb2YgYWxsIHRoZSBtZXRob2RzIG9mCkBAIC0zMDgsMTggKzMwNiwyMiBAQAogICAgc2hvdWxkIGFsd2F5cyBiZSBgYE5vbmVgYDsgaXQgZXhpc3RzIHNvbGVseSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoCiAgICA6Y2xhc3M6YHRocmVhZGluZy5UaHJlYWRgLiAgKnRhcmdldCogaXMgdGhlIGNhbGxhYmxlIG9iamVjdCB0byBiZSBpbnZva2VkIGJ5CiAgICB0aGUgOm1ldGg6YHJ1bigpYCBtZXRob2QuICBJdCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgbWVhbmluZyBub3RoaW5nIGlzCi0gICBjYWxsZWQuICpuYW1lKiBpcyB0aGUgcHJvY2VzcyBuYW1lLiAgQnkgZGVmYXVsdCwgYSB1bmlxdWUgbmFtZSBpcyBjb25zdHJ1Y3RlZAotICAgb2YgdGhlIGZvcm0gJ1Byb2Nlc3MtTlwgOnN1YjpgMWA6TlwgOnN1YjpgMmA6Li4uOk5cIDpzdWI6YGtgJyB3aGVyZSBOXAotICAgOnN1YjpgMWAsTlwgOnN1YjpgMmAsLi4uLE5cIDpzdWI6YGtgIGlzIGEgc2VxdWVuY2Ugb2YgaW50ZWdlcnMgd2hvc2UgbGVuZ3RoCi0gICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAqZ2VuZXJhdGlvbiogb2YgdGhlIHByb2Nlc3MuICAqYXJncyogaXMgdGhlIGFyZ3VtZW50Ci0gICB0dXBsZSBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgKmt3YXJncyogaXMgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQKLSAgIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgQnkgZGVmYXVsdCwgbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8KLSAgICp0YXJnZXQqLgorICAgY2FsbGVkLiAqbmFtZSogaXMgdGhlIHByb2Nlc3MgbmFtZSAoc2VlIDphdHRyOmBuYW1lYCBmb3IgbW9yZSBkZXRhaWxzKS4KKyAgICphcmdzKiBpcyB0aGUgYXJndW1lbnQgdHVwbGUgZm9yIHRoZSB0YXJnZXQgaW52b2NhdGlvbi4gICprd2FyZ3MqIGlzIGEKKyAgIGRpY3Rpb25hcnkgb2Yga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSB0YXJnZXQgaW52b2NhdGlvbi4gIElmIHByb3ZpZGVkLAorICAgdGhlIGtleXdvcmQtb25seSAqZGFlbW9uKiBhcmd1bWVudCBzZXRzIHRoZSBwcm9jZXNzIDphdHRyOmBkYWVtb25gIGZsYWcKKyAgIHRvIGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC4gIElmIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoaXMgZmxhZyB3aWxsIGJlCisgICBpbmhlcml0ZWQgZnJvbSB0aGUgY3JlYXRpbmcgcHJvY2Vzcy4KKworICAgQnkgZGVmYXVsdCwgbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gKnRhcmdldCouCiAKICAgIElmIGEgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRoZSBjb25zdHJ1Y3RvciwgaXQgbXVzdCBtYWtlIHN1cmUgaXQgaW52b2tlcyB0aGUKICAgIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgKDptZXRoOmBQcm9jZXNzLl9faW5pdF9fYCkgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UKICAgIHRvIHRoZSBwcm9jZXNzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkYWVtb24qIGFyZ3VtZW50LgorCiAgICAuLiBtZXRob2Q6OiBydW4oKQogCiAgICAgICBNZXRob2QgcmVwcmVzZW50aW5nIHRoZSBwcm9jZXNzJ3MgYWN0aXZpdHkuCkBAIC0zMzgsMTAgKzM0MCw5IEBACiAKICAgIC4uIG1ldGhvZDo6IGpvaW4oW3RpbWVvdXRdKQogCi0gICAgICBCbG9jayB0aGUgY2FsbGluZyB0aHJlYWQgdW50aWwgdGhlIHByb2Nlc3Mgd2hvc2UgOm1ldGg6YGpvaW5gIG1ldGhvZCBpcwotICAgICAgY2FsbGVkIHRlcm1pbmF0ZXMgb3IgdW50aWwgdGhlIG9wdGlvbmFsIHRpbWVvdXQgb2NjdXJzLgotCi0gICAgICBJZiAqdGltZW91dCogaXMgYGBOb25lYGAgdGhlbiB0aGVyZSBpcyBubyB0aW1lb3V0LgorICAgICAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lb3V0KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB0aGUgbWV0aG9kCisgICAgICBibG9ja3MgdW50aWwgdGhlIHByb2Nlc3Mgd2hvc2UgOm1ldGg6YGpvaW5gIG1ldGhvZCBpcyBjYWxsZWQgdGVybWluYXRlcy4KKyAgICAgIElmICp0aW1lb3V0KiBpcyBhIHBvc2l0aXZlIG51bWJlciwgaXQgYmxvY2tzIGF0IG1vc3QgKnRpbWVvdXQqIHNlY29uZHMuCiAKICAgICAgIEEgcHJvY2VzcyBjYW4gYmUgam9pbmVkIG1hbnkgdGltZXMuCiAKQEAgLTM1MCwxMSArMzUxLDE0IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKIAotICAgICAgVGhlIHByb2Nlc3MncyBuYW1lLgorICAgICAgVGhlIHByb2Nlc3MncyBuYW1lLiAgVGhlIG5hbWUgaXMgYSBzdHJpbmcgdXNlZCBmb3IgaWRlbnRpZmljYXRpb24gcHVycG9zZXMKKyAgICAgIG9ubHkuICBJdCBoYXMgbm8gc2VtYW50aWNzLiAgTXVsdGlwbGUgcHJvY2Vzc2VzIG1heSBiZSBnaXZlbiB0aGUgc2FtZQorICAgICAgbmFtZS4KIAotICAgICAgVGhlIG5hbWUgaXMgYSBzdHJpbmcgdXNlZCBmb3IgaWRlbnRpZmljYXRpb24gcHVycG9zZXMgb25seS4gIEl0IGhhcyBubwotICAgICAgc2VtYW50aWNzLiAgTXVsdGlwbGUgcHJvY2Vzc2VzIG1heSBiZSBnaXZlbiB0aGUgc2FtZSBuYW1lLiAgVGhlIGluaXRpYWwKLSAgICAgIG5hbWUgaXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4KKyAgICAgIFRoZSBpbml0aWFsIG5hbWUgaXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4gIElmIG5vIGV4cGxpY2l0IG5hbWUgaXMKKyAgICAgIHByb3ZpZGVkIHRvIHRoZSBjb25zdHJ1Y3RvciwgYSBuYW1lIG9mIHRoZSBmb3JtCisgICAgICAnUHJvY2Vzcy1OXCA6c3ViOmAxYDpOXCA6c3ViOmAyYDouLi46TlwgOnN1Yjpga2AnIGlzIGNvbnN0cnVjdGVkLCB3aGVyZQorICAgICAgZWFjaCBOXCA6c3ViOmBrYCBpcyB0aGUgTi10aCBjaGlsZCBvZiBpdHMgcGFyZW50LgogCiAgICAuLiBtZXRob2Q6OiBpc19hbGl2ZQogCkBAIC00MDYsNiArNDEwLDIxIEBACiAKICAgICAgIFNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KIAorICAgLi4gYXR0cmlidXRlOjogc2VudGluZWwKKworICAgICAgQSBudW1lcmljIGhhbmRsZSBvZiBhIHN5c3RlbSBvYmplY3Qgd2hpY2ggd2lsbCBiZWNvbWUgInJlYWR5IiB3aGVuCisgICAgICB0aGUgcHJvY2VzcyBlbmRzLgorCisgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhbHVlIGlmIHlvdSB3YW50IHRvIHdhaXQgb24gc2V2ZXJhbCBldmVudHMgYXQKKyAgICAgIG9uY2UgdXNpbmcgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXRgLiAgT3RoZXJ3aXNlCisgICAgICBjYWxsaW5nIDptZXRoOmBqb2luKClgIGlzIHNpbXBsZXIuCisKKyAgICAgIE9uIFdpbmRvd3MsIHRoaXMgaXMgYW4gT1MgaGFuZGxlIHVzYWJsZSB3aXRoIHRoZSBgYFdhaXRGb3JTaW5nbGVPYmplY3RgYAorICAgICAgYW5kIGBgV2FpdEZvck11bHRpcGxlT2JqZWN0c2BgIGZhbWlseSBvZiBBUEkgY2FsbHMuICBPbiBVbml4LCB0aGlzIGlzCisgICAgICBhIGZpbGUgZGVzY3JpcHRvciB1c2FibGUgd2l0aCBwcmltaXRpdmVzIGZyb20gdGhlIDptb2Q6YHNlbGVjdGAgbW9kdWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogICAgLi4gbWV0aG9kOjogdGVybWluYXRlKCkKIAogICAgICAgVGVybWluYXRlIHRoZSBwcm9jZXNzLiAgT24gVW5peCB0aGlzIGlzIGRvbmUgdXNpbmcgdGhlIGBgU0lHVEVSTWBgIHNpZ25hbDsKQEAgLTQ0NSw2ICs0NjQsOSBAQAogICAgICAgID4+PiBwLmV4aXRjb2RlID09IC1zaWduYWwuU0lHVEVSTQogICAgICAgIFRydWUKIAorLi4gZXhjZXB0aW9uOjogUHJvY2Vzc0Vycm9yCisKKyAgIFRoZSBiYXNlIGNsYXNzIG9mIGFsbCA6bW9kOmBtdWx0aXByb2Nlc3NpbmdgIGV4Y2VwdGlvbnMuCiAKIC4uIGV4Y2VwdGlvbjo6IEJ1ZmZlclRvb1Nob3J0CiAKQEAgLTQ1NCw2ICs0NzYsMTMgQEAKICAgIElmIGBgZWBgIGlzIGFuIGluc3RhbmNlIG9mIDpleGM6YEJ1ZmZlclRvb1Nob3J0YCB0aGVuIGBgZS5hcmdzWzBdYGAgd2lsbCBnaXZlCiAgICB0aGUgbWVzc2FnZSBhcyBhIGJ5dGUgc3RyaW5nLgogCisuLiBleGNlcHRpb246OiBBdXRoZW50aWNhdGlvbkVycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRoZXJlIGlzIGFuIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorCisuLiBleGNlcHRpb246OiBUaW1lb3V0RXJyb3IKKworICAgUmFpc2VkIGJ5IG1ldGhvZHMgd2l0aCBhIHRpbWVvdXQgd2hlbiB0aGUgdGltZW91dCBleHBpcmVzLgogCiBQaXBlcyBhbmQgUXVldWVzCiB+fn5+fn5+fn5+fn5+fn5+CkBAIC00NjUsNyArNDk0LDcgQEAKIEZvciBwYXNzaW5nIG1lc3NhZ2VzIG9uZSBjYW4gdXNlIDpmdW5jOmBQaXBlYCAoZm9yIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHR3bwogcHJvY2Vzc2VzKSBvciBhIHF1ZXVlICh3aGljaCBhbGxvd3MgbXVsdGlwbGUgcHJvZHVjZXJzIGFuZCBjb25zdW1lcnMpLgogCi1UaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcy5TaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMgYXJlIG11bHRpLXByb2R1Y2VyLAorVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCiBtdWx0aS1jb25zdW1lciBGSUZPIHF1ZXVlcyBtb2RlbGxlZCBvbiB0aGUgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MgaW4gdGhlCiBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhleSBkaWZmZXIgaW4gdGhhdCA6Y2xhc3M6YFF1ZXVlYCBsYWNrcyB0aGUKIDptZXRoOmB+cXVldWUuUXVldWUudGFza19kb25lYCBhbmQgOm1ldGg6YH5xdWV1ZS5RdWV1ZS5qb2luYCBtZXRob2RzIGludHJvZHVjZWQKQEAgLTYxMSw3ICs2NDAsNyBAQAogICAgICAgZXhpdHMgLS0gc2VlIDptZXRoOmBqb2luX3RocmVhZGAuCiAKIAotLi4gY2xhc3M6OiBtdWx0aXByb2Nlc3NpbmcucXVldWVzLlNpbXBsZVF1ZXVlKCkKKy4uIGNsYXNzOjogU2ltcGxlUXVldWUoKQogCiAgICBJdCBpcyBhIHNpbXBsaWZpZWQgOmNsYXNzOmBRdWV1ZWAgdHlwZSwgdmVyeSBjbG9zZSB0byBhIGxvY2tlZCA6Y2xhc3M6YFBpcGVgLgogCkBAIC02MzUsOCArNjY0LDggQEAKIAogICAgLi4gbWV0aG9kOjogdGFza19kb25lKCkKIAotICAgICAgSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuIFVzZWQgYnkgcXVldWUgY29uc3VtZXIKLSAgICAgIHRocmVhZHMuICBGb3IgZWFjaCA6bWV0aDpgflF1ZXVlLmdldGAgdXNlZCB0byBmZXRjaCBhIHRhc2ssIGEgc3Vic2VxdWVudAorICAgICAgSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuIFVzZWQgYnkgcXVldWUKKyAgICAgIGNvbnN1bWVycy4gIEZvciBlYWNoIDptZXRoOmB+UXVldWUuZ2V0YCB1c2VkIHRvIGZldGNoIGEgdGFzaywgYSBzdWJzZXF1ZW50CiAgICAgICBjYWxsIHRvIDptZXRoOmB0YXNrX2RvbmVgIHRlbGxzIHRoZSBxdWV1ZSB0aGF0IHRoZSBwcm9jZXNzaW5nIG9uIHRoZSB0YXNrCiAgICAgICBpcyBjb21wbGV0ZS4KIApAQCAtNjUzLDcgKzY4Miw3IEBACiAgICAgICBCbG9jayB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIHF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KIAogICAgICAgVGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZ29lcyB1cCB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZQotICAgICAgcXVldWUuICBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgdGhyZWFkIGNhbGxzCisgICAgICBxdWV1ZS4gIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciBjYWxscwogICAgICAgOm1ldGg6YHRhc2tfZG9uZWAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgaXRlbSB3YXMgcmV0cmlldmVkIGFuZCBhbGwgd29yayBvbgogICAgICAgaXQgaXMgY29tcGxldGUuICBXaGVuIHRoZSBjb3VudCBvZiB1bmZpbmlzaGVkIHRhc2tzIGRyb3BzIHRvIHplcm8sCiAgICAgICA6bWV0aDpgflF1ZXVlLmpvaW5gIHVuYmxvY2tzLgpAQCAtNzY3LDYgKzc5Niw5IEBACiAgICAgICAqdGltZW91dCogaXMgYSBudW1iZXIgdGhlbiB0aGlzIHNwZWNpZmllcyB0aGUgbWF4aW11bSB0aW1lIGluIHNlY29uZHMgdG8KICAgICAgIGJsb2NrLiAgSWYgKnRpbWVvdXQqIGlzIGBgTm9uZWBgIHRoZW4gYW4gaW5maW5pdGUgdGltZW91dCBpcyB1c2VkLgogCisgICAgICBOb3RlIHRoYXQgbXVsdGlwbGUgY29ubmVjdGlvbiBvYmplY3RzIG1heSBiZSBwb2xsZWQgYXQgb25jZSBieQorICAgICAgdXNpbmcgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXRgLgorCiAgICAuLiBtZXRob2Q6OiBzZW5kX2J5dGVzKGJ1ZmZlclssIG9mZnNldFssIHNpemVdXSkKIAogICAgICAgU2VuZCBieXRlIGRhdGEgZnJvbSBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZSBhcyBhCkBAIC03ODUsOSArODE3LDE0IEBACiAgICAgICB0byByZWNlaXZlIGFuZCB0aGUgb3RoZXIgZW5kIGhhcyBjbG9zZWQuCiAKICAgICAgIElmICptYXhsZW5ndGgqIGlzIHNwZWNpZmllZCBhbmQgdGhlIG1lc3NhZ2UgaXMgbG9uZ2VyIHRoYW4gKm1heGxlbmd0aCoKLSAgICAgIHRoZW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGFuZCB0aGUgY29ubmVjdGlvbiB3aWxsIG5vIGxvbmdlciBiZQorICAgICAgdGhlbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBjb25uZWN0aW9uIHdpbGwgbm8gbG9uZ2VyIGJlCiAgICAgICByZWFkYWJsZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YElPRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCisKICAgIC4uIG1ldGhvZDo6IHJlY3ZfYnl0ZXNfaW50byhidWZmZXJbLCBvZmZzZXRdKQogCiAgICAgICBSZWFkIGludG8gKmJ1ZmZlciogYSBjb21wbGV0ZSBtZXNzYWdlIG9mIGJ5dGUgZGF0YSBzZW50IGZyb20gdGhlIG90aGVyIGVuZApAQCAtODA1LDYgKzg0MiwxNCBAQAogICAgICAgcmFpc2VkIGFuZCB0aGUgY29tcGxldGUgbWVzc2FnZSBpcyBhdmFpbGFibGUgYXMgYGBlLmFyZ3NbMF1gYCB3aGVyZSBgYGVgYAogICAgICAgaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIENvbm5lY3Rpb24gb2JqZWN0cyB0aGVtc2VsdmVzIGNhbiBub3cgYmUgdHJhbnNmZXJyZWQgYmV0d2VlbiBwcm9jZXNzZXMKKyAgICAgIHVzaW5nIDptZXRoOmBDb25uZWN0aW9uLnNlbmRgIGFuZCA6bWV0aDpgQ29ubmVjdGlvbi5yZWN2YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBDb25uZWN0aW9uIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAtLSBzZWUKKyAgICAgIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuICA6bWV0aDpgX19lbnRlcl9fYCByZXR1cm5zIHRoZQorICAgICAgY29ubmVjdGlvbiBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBjbG9zZWAuCiAKIEZvciBleGFtcGxlOgogCkBAIC04NTYsNiArOTAxLDEyIEBACiBOb3RlIHRoYXQgb25lIGNhbiBhbHNvIGNyZWF0ZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyBieSB1c2luZyBhIG1hbmFnZXIKIG9iamVjdCAtLSBzZWUgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLW1hbmFnZXJzYC4KIAorLi4gY2xhc3M6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCisKKyAgIEEgYmFycmllciBvYmplY3Q6IGEgY2xvbmUgb2YgOmNsYXNzOmB0aHJlYWRpbmcuQmFycmllcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBjbGFzczo6IEJvdW5kZWRTZW1hcGhvcmUoW3ZhbHVlXSkKIAogICAgQSBib3VuZGVkIHNlbWFwaG9yZSBvYmplY3Q6IGEgY2xvbmUgb2YgOmNsYXNzOmB0aHJlYWRpbmcuQm91bmRlZFNlbWFwaG9yZWAuCkBAIC04NzAsMTUgKzkyMSwxMiBAQAogICAgSWYgKmxvY2sqIGlzIHNwZWNpZmllZCB0aGVuIGl0IHNob3VsZCBiZSBhIDpjbGFzczpgTG9ja2Agb3IgOmNsYXNzOmBSTG9ja2AKICAgIG9iamVjdCBmcm9tIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAuLiBjbGFzczo6IEV2ZW50KCkKIAogICAgQSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAuCi0gICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJuYWwgc2VtYXBob3JlIG9uIGV4aXQsIHNvIGl0Ci0gICB3aWxsIGFsd2F5cyByZXR1cm4gYGBUcnVlYGAgZXhjZXB0IGlmIGEgdGltZW91dCBpcyBnaXZlbiBhbmQgdGhlIG9wZXJhdGlvbgotICAgdGltZXMgb3V0LgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgUHJldmlvdXNseSwgdGhlIG1ldGhvZCBhbHdheXMgcmV0dXJuZWQgYGBOb25lYGAuCiAKIC4uIGNsYXNzOjogTG9jaygpCiAKQEAgLTg5NCw2ICs5NDIsMTIgQEAKIAogLi4gbm90ZTo6CiAKKyAgIFRoZSA6bWV0aDpgYWNxdWlyZWAgYW5kIDptZXRoOmB3YWl0YCBtZXRob2RzIG9mIGVhY2ggb2YgdGhlc2UgdHlwZXMKKyAgIHRyZWF0IG5lZ2F0aXZlIHRpbWVvdXRzIGFzIHplcm8gdGltZW91dHMuICBUaGlzIGRpZmZlcnMgZnJvbQorICAgOm1vZDpgdGhyZWFkaW5nYCB3aGVyZSwgc2luY2UgdmVyc2lvbiAzLjIsIHRoZSBlcXVpdmFsZW50CisgICA6bWV0aDpgYWNxdWlyZWAgbWV0aG9kcyB0cmVhdCBuZWdhdGl2ZSB0aW1lb3V0cyBhcyBpbmZpbml0ZQorICAgdGltZW91dHMuCisKICAgIE9uIE1hYyBPUyBYLCBgYHNlbV90aW1lZHdhaXRgYCBpcyB1bnN1cHBvcnRlZCwgc28gY2FsbGluZyBgYGFjcXVpcmUoKWBgIHdpdGgKICAgIGEgdGltZW91dCB3aWxsIGVtdWxhdGUgdGhhdCBmdW5jdGlvbidzIGJlaGF2aW9yIHVzaW5nIGEgc2xlZXBpbmcgbG9vcC4KIApAQCAtOTE1LDEwICs5NjksMTEgQEAKIEl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBzaGFyZWQgb2JqZWN0cyB1c2luZyBzaGFyZWQgbWVtb3J5IHdoaWNoIGNhbiBiZQogaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3Nlcy4KIAotLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJnc1ssIGxvY2tdKQorLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1UcnVlKQogCiAgICBSZXR1cm4gYSA6bW9kOmBjdHlwZXNgIG9iamVjdCBhbGxvY2F0ZWQgZnJvbSBzaGFyZWQgbWVtb3J5LiAgQnkgZGVmYXVsdCB0aGUKLSAgIHJldHVybiB2YWx1ZSBpcyBhY3R1YWxseSBhIHN5bmNocm9uaXplZCB3cmFwcGVyIGZvciB0aGUgb2JqZWN0LgorICAgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGEgc3luY2hyb25pemVkIHdyYXBwZXIgZm9yIHRoZSBvYmplY3QuICBUaGUgb2JqZWN0CisgICBpdHNlbGYgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgKnZhbHVlKiBhdHRyaWJ1dGUgb2YgYSA6Y2xhc3M6YFZhbHVlYC4KIAogICAgKnR5cGVjb2RlX29yX3R5cGUqIGRldGVybWluZXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIG9iamVjdDogaXQgaXMgZWl0aGVyIGEKICAgIGN0eXBlcyB0eXBlIG9yIGEgb25lIGNoYXJhY3RlciB0eXBlY29kZSBvZiB0aGUga2luZCB1c2VkIGJ5IHRoZSA6bW9kOmBhcnJheWAKQEAgLTEwMDcsNyArMTA2Miw3IEBACiAgICBhdHRyaWJ1dGVzIHdoaWNoIGFsbG93IG9uZSB0byB1c2UgaXQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIHN0cmluZ3MgLS0gc2VlCiAgICBkb2N1bWVudGF0aW9uIGZvciA6bW9kOmBjdHlwZXNgLgogCi0uLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSkKIAogICAgVGhlIHNhbWUgYXMgOmZ1bmM6YFJhd0FycmF5YCBleGNlcHQgdGhhdCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICpsb2NrKiBhCiAgICBwcm9jZXNzLXNhZmUgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgbWF5IGJlIHJldHVybmVkIGluc3RlYWQgb2YgYSByYXcgY3R5cGVzCkBAIC0xMDIyLDcgKzEwNzcsNyBAQAogCiAgICBOb3RlIHRoYXQgKmxvY2sqIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50LgogCi0uLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpCiAKICAgIFRoZSBzYW1lIGFzIDpmdW5jOmBSYXdWYWx1ZWAgZXhjZXB0IHRoYXQgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAqbG9jayogYQogICAgcHJvY2Vzcy1zYWZlIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIG1heSBiZSByZXR1cm5lZCBpbnN0ZWFkIG9mIGEgcmF3IGN0eXBlcwpAQCAtMTEyNCw4ICsxMTc5LDEwIEBACiB+fn5+fn5+fgogCiBNYW5hZ2VycyBwcm92aWRlIGEgd2F5IHRvIGNyZWF0ZSBkYXRhIHdoaWNoIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQKLXByb2Nlc3Nlcy4gQSBtYW5hZ2VyIG9iamVjdCBjb250cm9scyBhIHNlcnZlciBwcm9jZXNzIHdoaWNoIG1hbmFnZXMgKnNoYXJlZAotb2JqZWN0cyouICBPdGhlciBwcm9jZXNzZXMgY2FuIGFjY2VzcyB0aGUgc2hhcmVkIG9iamVjdHMgYnkgdXNpbmcgcHJveGllcy4KK3Byb2Nlc3NlcywgaW5jbHVkaW5nIHNoYXJpbmcgb3ZlciBhIG5ldHdvcmsgYmV0d2VlbiBwcm9jZXNzZXMgcnVubmluZyBvbgorZGlmZmVyZW50IG1hY2hpbmVzLiBBIG1hbmFnZXIgb2JqZWN0IGNvbnRyb2xzIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2ggbWFuYWdlcworKnNoYXJlZCBvYmplY3RzKi4gIE90aGVyIHByb2Nlc3NlcyBjYW4gYWNjZXNzIHRoZSBzaGFyZWQgb2JqZWN0cyBieSB1c2luZworcHJveGllcy4KIAogLi4gZnVuY3Rpb246OiBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigpCiAKQEAgLTExOTgsOSArMTI1NSwxMCBAQAogICAgICAgdHlwZSBvZiBzaGFyZWQgb2JqZWN0LiAgVGhpcyBtdXN0IGJlIGEgc3RyaW5nLgogCiAgICAgICAqY2FsbGFibGUqIGlzIGEgY2FsbGFibGUgdXNlZCBmb3IgY3JlYXRpbmcgb2JqZWN0cyBmb3IgdGhpcyB0eXBlCi0gICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUKLSAgICAgIDptZXRoOmBmcm9tX2FkZHJlc3NgIGNsYXNzbWV0aG9kIG9yIGlmIHRoZSAqY3JlYXRlX21ldGhvZCogYXJndW1lbnQgaXMKLSAgICAgIGBgRmFsc2VgYCB0aGVuIHRoaXMgY2FuIGJlIGxlZnQgYXMgYGBOb25lYGAuCisgICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY29ubmVjdGVkIHRvIHRoZQorICAgICAgc2VydmVyIHVzaW5nIHRoZSA6bWV0aDpgY29ubmVjdGAgbWV0aG9kLCBvciBpZiB0aGUKKyAgICAgICpjcmVhdGVfbWV0aG9kKiBhcmd1bWVudCBpcyBgYEZhbHNlYGAgdGhlbiB0aGlzIGNhbiBiZSBsZWZ0IGFzCisgICAgICBgYE5vbmVgYC4KIAogICAgICAgKnByb3h5dHlwZSogaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEJhc2VQcm94eWAgd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUKICAgICAgIHByb3hpZXMgZm9yIHNoYXJlZCBvYmplY3RzIHdpdGggdGhpcyAqdHlwZWlkKi4gIElmIGBgTm9uZWBgIHRoZW4gYSBwcm94eQpAQCAtMTIzMiw2ICsxMjkwLDE0IEBACiAKICAgICAgIFRoZSBhZGRyZXNzIHVzZWQgYnkgdGhlIG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBNYW5hZ2VyIG9iamVjdHMgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHN0YXJ0cyB0aGUgc2VydmVyCisgICAgICBwcm9jZXNzIChpZiBpdCBoYXMgbm90IGFscmVhZHkgc3RhcnRlZCkgYW5kIHRoZW4gcmV0dXJucyB0aGUKKyAgICAgIG1hbmFnZXIgb2JqZWN0LiAgOm1ldGg6YF9fZXhpdF9fYCBjYWxscyA6bWV0aDpgc2h1dGRvd25gLgorCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucyA6bWV0aDpgX19lbnRlcl9fYCBkaWQgbm90IHN0YXJ0IHRoZQorICAgICAgbWFuYWdlcidzIHNlcnZlciBwcm9jZXNzIGlmIGl0IHdhcyBub3QgYWxyZWFkeSBzdGFydGVkLgogCiAuLiBjbGFzczo6IFN5bmNNYW5hZ2VyCiAKQEAgLTEyNDEsNiArMTMwNywxMyBAQAogCiAgICBJdCBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgogCisgICAuLiBtZXRob2Q6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCisKKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYCBvYmplY3QgYW5kIHJldHVybiBhCisgICAgICBwcm94eSBmb3IgaXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBCb3VuZGVkU2VtYXBob3JlKFt2YWx1ZV0pCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYCBvYmplY3QgYW5kIHJldHVybiBhCkBAIC0xMjU0LDYgKzEzMjcsOSBAQAogICAgICAgSWYgKmxvY2sqIGlzIHN1cHBsaWVkIHRoZW4gaXQgc2hvdWxkIGJlIGEgcHJveHkgZm9yIGEKICAgICAgIDpjbGFzczpgdGhyZWFkaW5nLkxvY2tgIG9yIDpjbGFzczpgdGhyZWFkaW5nLlJMb2NrYCBvYmplY3QuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAgICAuLiBtZXRob2Q6OiBFdmVudCgpCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCkBAIC0xMzU5LDExICsxNDM1LDEwIEBACiAgICBNeU1hbmFnZXIucmVnaXN0ZXIoJ01hdGhzJywgTWF0aHNDbGFzcykKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKLSAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKLSAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQotICAgICAgIHByaW50KG1hdGhzLmFkZCg0LCAzKSkgICAgICAgICAjIHByaW50cyA3Ci0gICAgICAgcHJpbnQobWF0aHMubXVsKDcsIDgpKSAgICAgICAgICMgcHJpbnRzIDU2CisgICAgICAgd2l0aCBNeU1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQorICAgICAgICAgICBwcmludChtYXRocy5hZGQoNCwgMykpICAgICAgICAgIyBwcmludHMgNworICAgICAgICAgICBwcmludChtYXRocy5tdWwoNywgOCkpICAgICAgICAgIyBwcmludHMgNTYKIAogCiBVc2luZyBhIHJlbW90ZSBtYW5hZ2VyCkBAIC0xNjU4LDYgKzE3MzMsMjQgQEAKICAgICAgIHJldHVybmVkIGl0ZXJhdG9yIHNob3VsZCBiZSBjb25zaWRlcmVkIGFyYml0cmFyeS4gIChPbmx5IHdoZW4gdGhlcmUgaXMKICAgICAgIG9ubHkgb25lIHdvcmtlciBwcm9jZXNzIGlzIHRoZSBvcmRlciBndWFyYW50ZWVkIHRvIGJlICJjb3JyZWN0Ii4pCiAKKyAgIC4uIG1ldGhvZDo6IHN0YXJtYXAoZnVuYywgaXRlcmFibGVbLCBjaHVua3NpemVdKQorCisgICAgICBMaWtlIDptZXRoOmBtYXBgIGV4Y2VwdCB0aGF0IHRoZSBlbGVtZW50cyBvZiB0aGUgYGl0ZXJhYmxlYCBhcmUgZXhwZWN0ZWQKKyAgICAgIHRvIGJlIGl0ZXJhYmxlcyB0aGF0IGFyZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuCisKKyAgICAgIEhlbmNlIGFuIGBpdGVyYWJsZWAgb2YgYFsoMSwyKSwgKDMsIDQpXWAgcmVzdWx0cyBpbiBgW2Z1bmMoMSwyKSwKKyAgICAgIGZ1bmMoMyw0KV1gLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogc3Rhcm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZVssIGNodW5rc2l6ZVssIGNhbGxiYWNrWywgZXJyb3JfYmFja11dXSkKKworICAgICAgQSBjb21iaW5hdGlvbiBvZiA6bWV0aDpgc3Rhcm1hcGAgYW5kIDptZXRoOmBtYXBfYXN5bmNgIHRoYXQgaXRlcmF0ZXMgb3ZlcgorICAgICAgYGl0ZXJhYmxlYCBvZiBpdGVyYWJsZXMgYW5kIGNhbGxzIGBmdW5jYCB3aXRoIHRoZSBpdGVyYWJsZXMgdW5wYWNrZWQuCisgICAgICBSZXR1cm5zIGEgcmVzdWx0IG9iamVjdC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgUHJldmVudHMgYW55IG1vcmUgdGFza3MgZnJvbSBiZWluZyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wuICBPbmNlIGFsbCB0aGUKQEAgLTE2NzQsNiArMTc2NywxMSBAQAogICAgICAgV2FpdCBmb3IgdGhlIHdvcmtlciBwcm9jZXNzZXMgdG8gZXhpdC4gIE9uZSBtdXN0IGNhbGwgOm1ldGg6YGNsb3NlYCBvcgogICAgICAgOm1ldGg6YHRlcm1pbmF0ZWAgYmVmb3JlIHVzaW5nIDptZXRoOmBqb2luYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBQb29sIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAtLSBzZWUKKyAgICAgIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuICA6bWV0aDpgX19lbnRlcl9fYCByZXR1cm5zIHRoZSBwb29sCisgICAgICBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmB0ZXJtaW5hdGVgLgorCiAKIC4uIGNsYXNzOjogQXN5bmNSZXN1bHQKIApAQCAtMTcwOCwyMSArMTgwNiwyMCBAQAogICAgICAgIHJldHVybiB4KngKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXM9NCkgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sOiAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmMoZiwgKDEwLCkpICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdwogCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCAoMTAsKSkgICAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CisgICAgICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAotICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgorICAgICAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCisgICAgICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIwIgorICAgICAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMSIKKyAgICAgICAgICAgcHJpbnQoaXQubmV4dCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CiAKLSAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCi0gICAgICAgcHJpbnQobmV4dChpdCkpICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMCIKLSAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIxIgotICAgICAgIHByaW50KGl0Lm5leHQodGltZW91dD0xKSkgICAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93Ci0KLSAgICAgICBpbXBvcnQgdGltZQotICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmModGltZS5zbGVlcCwgKDEwLCkpCi0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAjIHJhaXNlcyBUaW1lb3V0RXJyb3IKKyAgICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyh0aW1lLnNsZWVwLCAoMTAsKSkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgIyByYWlzZXMgVGltZW91dEVycm9yCiAKIAogLi4gX211bHRpcHJvY2Vzc2luZy1saXN0ZW5lcnMtY2xpZW50czoKQEAgLTE3MzgsOCArMTgzNSw5IEBACiAKIEhvd2V2ZXIsIHRoZSA6bW9kOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbmAgbW9kdWxlIGFsbG93cyBzb21lIGV4dHJhCiBmbGV4aWJpbGl0eS4gIEl0IGJhc2ljYWxseSBnaXZlcyBhIGhpZ2ggbGV2ZWwgbWVzc2FnZSBvcmllbnRlZCBBUEkgZm9yIGRlYWxpbmcKLXdpdGggc29ja2V0cyBvciBXaW5kb3dzIG5hbWVkIHBpcGVzLCBhbmQgYWxzbyBoYXMgc3VwcG9ydCBmb3IgKmRpZ2VzdAotYXV0aGVudGljYXRpb24qIHVzaW5nIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUuCit3aXRoIHNvY2tldHMgb3IgV2luZG93cyBuYW1lZCBwaXBlcy4gIEl0IGFsc28gaGFzIHN1cHBvcnQgZm9yICpkaWdlc3QKK2F1dGhlbnRpY2F0aW9uKiB1c2luZyB0aGUgOm1vZDpgaG1hY2AgbW9kdWxlLCBhbmQgZm9yIHBvbGxpbmcKK211bHRpcGxlIGNvbm5lY3Rpb25zIGF0IHRoZSBzYW1lIHRpbWUuCiAKIAogLi4gZnVuY3Rpb246OiBkZWxpdmVyX2NoYWxsZW5nZShjb25uZWN0aW9uLCBhdXRoa2V5KQpAQCAtMTc0OSwxNSArMTg0NywxNSBAQAogCiAgICBJZiB0aGUgcmVwbHkgbWF0Y2hlcyB0aGUgZGlnZXN0IG9mIHRoZSBtZXNzYWdlIHVzaW5nICphdXRoa2V5KiBhcyB0aGUga2V5CiAgICB0aGVuIGEgd2VsY29tZSBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbi4gIE90aGVyd2lzZQotICAgOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogYW5zd2VyQ2hhbGxlbmdlKGNvbm5lY3Rpb24sIGF1dGhrZXkpCiAKICAgIFJlY2VpdmUgYSBtZXNzYWdlLCBjYWxjdWxhdGUgdGhlIGRpZ2VzdCBvZiB0aGUgbWVzc2FnZSB1c2luZyAqYXV0aGtleSogYXMgdGhlCiAgICBrZXksIGFuZCB0aGVuIHNlbmQgdGhlIGRpZ2VzdCBiYWNrLgogCi0gICBJZiBhIHdlbGNvbWUgbWVzc2FnZSBpcyBub3QgcmVjZWl2ZWQsIHRoZW4gOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMKLSAgIHJhaXNlZC4KKyAgIElmIGEgd2VsY29tZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCwgdGhlbgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogQ2xpZW50KGFkZHJlc3NbLCBmYW1pbHlbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dKQogCkBAIC0xNzcxLDcgKzE4NjksOCBAQAogICAgSWYgKmF1dGhlbnRpY2F0ZSogaXMgYGBUcnVlYGAgb3IgKmF1dGhrZXkqIGlzIGEgYnl0ZSBzdHJpbmcgdGhlbiBkaWdlc3QKICAgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQuICBUaGUga2V5IHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgZWl0aGVyCiAgICAqYXV0aGtleSogb3IgYGBjdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5YGAgaWYgKmF1dGhrZXkqIGlzIGBgTm9uZWBgLgotICAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuICBTZWUKKyAgIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLiAgU2VlCiAgICA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KIAogLi4gY2xhc3M6OiBMaXN0ZW5lcihbYWRkcmVzc1ssIGZhbWlseVssIGJhY2tsb2dbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dXV0pCkBAIC0xODEyLDEzICsxOTExLDE1IEBACiAgICBgYGN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXlgYCBpcyB1c2VkIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkuICBJZgogICAgKmF1dGhrZXkqIGlzIGBgTm9uZWBgIGFuZCAqYXV0aGVudGljYXRlKiBpcyBgYEZhbHNlYGAgdGhlbiBubwogICAgYXV0aGVudGljYXRpb24gaXMgZG9uZS4gIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KLSAgIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4gIFNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCiAgICAuLiBtZXRob2Q6OiBhY2NlcHQoKQogCiAgICAgICBBY2NlcHQgYSBjb25uZWN0aW9uIG9uIHRoZSBib3VuZCBzb2NrZXQgb3IgbmFtZWQgcGlwZSBvZiB0aGUgbGlzdGVuZXIKICAgICAgIG9iamVjdCBhbmQgcmV0dXJuIGEgOmNsYXNzOmBDb25uZWN0aW9uYCBvYmplY3QuICBJZiBhdXRoZW50aWNhdGlvbiBpcwotICAgICAgYXR0ZW1wdGVkIGFuZCBmYWlscywgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICAgICBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuCisgICAgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC0xODM3LDEyICsxOTM4LDQ0IEBACiAgICAgICBUaGUgYWRkcmVzcyBmcm9tIHdoaWNoIHRoZSBsYXN0IGFjY2VwdGVkIGNvbm5lY3Rpb24gY2FtZS4gIElmIHRoaXMgaXMKICAgICAgIHVuYXZhaWxhYmxlIHRoZW4gaXQgaXMgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgTGlzdGVuZXIgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBsaXN0ZW5lciBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBjbG9zZWAuCiAKLVRoZSBtb2R1bGUgZGVmaW5lcyB0d28gZXhjZXB0aW9uczoKKy4uIGZ1bmN0aW9uOjogd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKQogCi0uLiBleGNlcHRpb246OiBBdXRoZW50aWNhdGlvbkVycm9yCisgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluICpvYmplY3RfbGlzdCogaXMgcmVhZHkuICBSZXR1cm5zIHRoZSBsaXN0IG9mCisgICB0aG9zZSBvYmplY3RzIGluICpvYmplY3RfbGlzdCogd2hpY2ggYXJlIHJlYWR5LiAgSWYgKnRpbWVvdXQqIGlzIGEKKyAgIGZsb2F0IHRoZW4gdGhlIGNhbGwgYmxvY2tzIGZvciBhdCBtb3N0IHRoYXQgbWFueSBzZWNvbmRzLiAgSWYKKyAgICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIGl0IHdpbGwgYmxvY2sgZm9yIGFuIHVubGltaXRlZCBwZXJpb2QuCisgICBBIG5lZ2F0aXZlIHRpbWVvdXQgaXMgZXF1aXZhbGVudCB0byBhIHplcm8gdGltZW91dC4KIAotICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHRoZXJlIGlzIGFuIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorICAgRm9yIGJvdGggVW5peCBhbmQgV2luZG93cywgYW4gb2JqZWN0IGNhbiBhcHBlYXIgaW4gKm9iamVjdF9saXN0KiBpZgorICAgaXQgaXMKKworICAgKiBhIHJlYWRhYmxlIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3Q7CisgICAqIGEgY29ubmVjdGVkIGFuZCByZWFkYWJsZSA6Y2xhc3M6YHNvY2tldC5zb2NrZXRgIG9iamVjdDsgb3IKKyAgICogdGhlIDphdHRyOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3Muc2VudGluZWxgIGF0dHJpYnV0ZSBvZiBhCisgICAgIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYCBvYmplY3QuCisKKyAgIEEgY29ubmVjdGlvbiBvciBzb2NrZXQgb2JqZWN0IGlzIHJlYWR5IHdoZW4gdGhlcmUgaXMgZGF0YSBhdmFpbGFibGUKKyAgIHRvIGJlIHJlYWQgZnJvbSBpdCwgb3IgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQuCisKKyAgICoqVW5peCoqOiBgYHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQpYGAgYWxtb3N0IGVxdWl2YWxlbnQKKyAgIGBgc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCB0aW1lb3V0KWBgLiAgVGhlIGRpZmZlcmVuY2UgaXMKKyAgIHRoYXQsIGlmIDpmdW5jOmBzZWxlY3Quc2VsZWN0YCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaXQgY2FuCisgICByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aXRoIGFuIGVycm9yIG51bWJlciBvZiBgYEVJTlRSYGAsIHdoZXJlYXMKKyAgIDpmdW5jOmB3YWl0YCB3aWxsIG5vdC4KKworICAgKipXaW5kb3dzKio6IEFuIGl0ZW0gaW4gKm9iamVjdF9saXN0KiBtdXN0IGVpdGhlciBiZSBhbiBpbnRlZ2VyCisgICBoYW5kbGUgd2hpY2ggaXMgd2FpdGFibGUgKGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IHRoZQorICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgV2luMzIgZnVuY3Rpb24gYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKClgYCkKKyAgIG9yIGl0IGNhbiBiZSBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBmaWxlbm9gIG1ldGhvZCB3aGljaCByZXR1cm5zIGEKKyAgIHNvY2tldCBoYW5kbGUgb3IgcGlwZSBoYW5kbGUuICAoTm90ZSB0aGF0IHBpcGUgaGFuZGxlcyBhbmQgc29ja2V0CisgICBoYW5kbGVzIGFyZSAqKm5vdCoqIHdhaXRhYmxlIGhhbmRsZXMuKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAqKkV4YW1wbGVzKioKQEAgLTE4NTUsMTkgKzE5ODgsMTYgQEAKICAgIGZyb20gYXJyYXkgaW1wb3J0IGFycmF5CiAKICAgIGFkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsIDYwMDApICAgICAjIGZhbWlseSBpcyBkZWR1Y2VkIHRvIGJlICdBRl9JTkVUJwotICAgbGlzdGVuZXIgPSBMaXN0ZW5lcihhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykKIAotICAgY29ubiA9IGxpc3RlbmVyLmFjY2VwdCgpCi0gICBwcmludCgnY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tJywgbGlzdGVuZXIubGFzdF9hY2NlcHRlZCkKKyAgIHdpdGggTGlzdGVuZXIoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpIGFzIGxpc3RlbmVyOgorICAgICAgIHdpdGggbGlzdGVuZXIuYWNjZXB0KCkgYXMgY29ubjoKKyAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbScsIGxpc3RlbmVyLmxhc3RfYWNjZXB0ZWQpCiAKLSAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCisgICAgICAgICAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCiAKLSAgIGNvbm4uc2VuZF9ieXRlcyhiJ2hlbGxvJykKKyAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGInaGVsbG8nKQogCi0gICBjb25uLnNlbmRfYnl0ZXMoYXJyYXkoJ2knLCBbNDIsIDE3MjldKSkKLQotICAgY29ubi5jbG9zZSgpCi0gICBsaXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhhcnJheSgnaScsIFs0MiwgMTcyOV0pKQogCiBUaGUgZm9sbG93aW5nIGNvZGUgY29ubmVjdHMgdG8gdGhlIHNlcnZlciBhbmQgcmVjZWl2ZXMgc29tZSBkYXRhIGZyb20gdGhlCiBzZXJ2ZXI6OgpAQCAtMTg3NiwxNyArMjAwNiw1MCBAQAogICAgZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKIAogICAgYWRkcmVzcyA9ICgnbG9jYWxob3N0JywgNjAwMCkKLSAgIGNvbm4gPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpCiAKLSAgIHByaW50KGNvbm4ucmVjdigpKSAgICAgICAgICAgICAgICAgICMgPT4gWzIuMjUsIE5vbmUsICdqdW5rJywgZmxvYXRdCisgICB3aXRoIENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykgYXMgY29ubjoKKyAgICAgICBwcmludChjb25uLnJlY3YoKSkgICAgICAgICAgICAgICAgICAjID0+IFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XQogCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKKyAgICAgICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKIAotICAgYXJyID0gYXJyYXkoJ2knLCBbMCwgMCwgMCwgMCwgMF0pCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXNfaW50byhhcnIpKSAgICAjID0+IDgKLSAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQorICAgICAgIGFyciA9IGFycmF5KCdpJywgWzAsIDAsIDAsIDAsIDBdKQorICAgICAgIHByaW50KGNvbm4ucmVjdl9ieXRlc19pbnRvKGFycikpICAgICMgPT4gOAorICAgICAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQogCi0gICBjb25uLmNsb3NlKCkKK1RoZSBmb2xsb3dpbmcgY29kZSB1c2VzIDpmdW5jOmB+bXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgdG8KK3dhaXQgZm9yIG1lc3NhZ2VzIGZyb20gbXVsdGlwbGUgcHJvY2Vzc2VzIGF0IG9uY2U6OgorCisgICBpbXBvcnQgdGltZSwgcmFuZG9tCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgUGlwZSwgY3VycmVudF9wcm9jZXNzCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgIGRlZiBmb28odyk6CisgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICB3LnNlbmQoKGksIGN1cnJlbnRfcHJvY2VzcygpLm5hbWUpKQorICAgICAgIHcuY2xvc2UoKQorCisgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICAgIHJlYWRlcnMgPSBbXQorCisgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgIHIsIHcgPSBQaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWZvbywgYXJncz0odywpKQorICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIyBXZSBjbG9zZSB0aGUgd3JpdGFibGUgZW5kIG9mIHRoZSBwaXBlIG5vdyB0byBiZSBzdXJlIHRoYXQKKyAgICAgICAgICAgIyBwIGlzIHRoZSBvbmx5IHByb2Nlc3Mgd2hpY2ggb3ducyBhIGhhbmRsZSBmb3IgaXQuICBUaGlzCisgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHdoZW4gcCBjbG9zZXMgaXRzIGhhbmRsZSBmb3IgdGhlIHdyaXRhYmxlIGVuZCwKKyAgICAgICAgICAgIyB3YWl0KCkgd2lsbCBwcm9tcHRseSByZXBvcnQgdGhlIHJlYWRhYmxlIGVuZCBhcyBiZWluZyByZWFkeS4KKyAgICAgICAgICAgdy5jbG9zZSgpCisKKyAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogCiAKIC4uIF9tdWx0aXByb2Nlc3NpbmctYWRkcmVzcy1mb3JtYXRzOgpAQCAtMjA0Nyw3ICsyMjEwLDcgQEAKIAogICAgIEl0IGlzIHByb2JhYmx5IGJlc3QgdG8gc3RpY2sgdG8gdXNpbmcgcXVldWVzIG9yIHBpcGVzIGZvciBjb21tdW5pY2F0aW9uCiAgICAgYmV0d2VlbiBwcm9jZXNzZXMgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGxvd2VyIGxldmVsIHN5bmNocm9uaXphdGlvbgotICAgIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUuCisgICAgcHJpbWl0aXZlcy4KIAogUGlja2xhYmlsaXR5CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L25udHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKaW5kZXggMjQ3ZWZiNy4uODdhNTBiMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKQEAgLTcwLDEwICs3MCwyMyBAQAogICAgY29ubmVjdGluZyB0byBhbiBOTlRQIHNlcnZlciBvbiB0aGUgbG9jYWwgbWFjaGluZSBhbmQgaW50ZW5kIHRvIGNhbGwKICAgIHJlYWRlci1zcGVjaWZpYyBjb21tYW5kcywgc3VjaCBhcyBgYGdyb3VwYGAuICBJZiB5b3UgZ2V0IHVuZXhwZWN0ZWQKICAgIDpleGM6YE5OVFBQZXJtYW5lbnRFcnJvcmBcIHMsIHlvdSBtaWdodCBuZWVkIHRvIHNldCAqcmVhZGVybW9kZSouCisgICA6Y2xhc3M6YE5OVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHRvCisgICB1bmNvbmRpdGlvbmFsbHkgY29uc3VtZSA6ZXhjOmBzb2NrZXQuZXJyb3JgIGV4Y2VwdGlvbnMgYW5kIHRvIGNsb3NlIHRoZSBOTlRQCisgICBjb25uZWN0aW9uIHdoZW4gZG9uZS4gSGVyZSBpcyBhIHNhbXBsZSBvbiBob3cgdXNpbmcgaXQ6CisKKyAgICA+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCisgICAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAgIC4uLiAgICAgbi5ncm91cCgnZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycpCisgICAgLi4uCisgICAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgICA+Pj4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKnVzZW5ldHJjKiBpcyBub3cgRmFsc2UgYnkgZGVmYXVsdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAogLi4gY2xhc3M6OiBOTlRQX1NTTChob3N0LCBwb3J0PTU2MywgdXNlcj1Ob25lLCBwYXNzd29yZD1Ob25lLCBzc2xfY29udGV4dD1Ob25lLCByZWFkZXJtb2RlPU5vbmUsIHVzZW5ldHJjPUZhbHNlLCBbdGltZW91dF0pCiAKQEAgLTUwNCw2ICs1MTcsOSBAQAogICAgYXJ0aWNsZSB3aXRoIG1lc3NhZ2UgSUQgKmlkKi4gIE1vc3Qgb2YgdGhlIHRpbWUsIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdAogICAgZW5hYmxlZCBieSBOTlRQIHNlcnZlciBhZG1pbmlzdHJhdG9ycy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZC4KKwogCiAuLiBYWFggZGVwcmVjYXRlZDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbnVtZXJpYy5yc3QgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAppbmRleCBiYTIyY2I2Li4yNzMyYTg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAorKysgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdApAQCAtOCw5ICs4LDkgQEAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBudW1lcmljIGFuZCBtYXRoLXJlbGF0ZWQgZnVuY3Rpb25zCiBhbmQgZGF0YSB0eXBlcy4gVGhlIDptb2Q6YG51bWJlcnNgIG1vZHVsZSBkZWZpbmVzIGFuIGFic3RyYWN0IGhpZXJhcmNoeSBvZgogbnVtZXJpYyB0eXBlcy4gVGhlIDptb2Q6YG1hdGhgIGFuZCA6bW9kOmBjbWF0aGAgbW9kdWxlcyBjb250YWluIHZhcmlvdXMKLW1hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIEZvciB1c2VycyBtb3JlCi1pbnRlcmVzdGVkIGluIGRlY2ltYWwgYWNjdXJhY3kgdGhhbiBpbiBzcGVlZCwgdGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBzdXBwb3J0cwotZXhhY3QgcmVwcmVzZW50YXRpb25zIG9mIGRlY2ltYWwgbnVtYmVycy4KK21hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIFRoZSA6bW9kOmBkZWNpbWFsYAorbW9kdWxlIHN1cHBvcnRzIGV4YWN0IHJlcHJlc2VudGF0aW9ucyBvZiBkZWNpbWFsIG51bWJlcnMsIHVzaW5nIGFyYml0cmFyeSBwcmVjaXNpb24KK2FyaXRobWV0aWMuCiAKIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXI6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggMjE0ZTI3Yy4uMjBhODRiNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTcwLDExICs3MCwxNiBAQAogCiAuLiBmdW5jdGlvbjo6IGV4aXN0cyhwYXRoKQogCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhbiBleGlzdGluZyBwYXRoLiAgUmV0dXJucyBgYEZhbHNlYGAgZm9yCi0gICBicm9rZW4gc3ltYm9saWMgbGlua3MuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmCi0gICBwZXJtaXNzaW9uIGlzIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgcGF0aCBvciBhbiBvcGVuCisgICBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGBgRmFsc2VgYCBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgT24KKyAgIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmIHBlcm1pc3Npb24gaXMKKyAgIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgogICAgaWYgdGhlICpwYXRoKiBwaHlzaWNhbGx5IGV4aXN0cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpwYXRoKiBjYW4gbm93IGJlIGFuIGludGVnZXI6IGBgVHJ1ZWBgIGlzIHJldHVybmVkIGlmIGl0IGlzIGFuCisgICAgICAgb3BlbiBmaWxlIGRlc2NyaXB0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTI1NCw3ICsyNTksOCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBzYW1lc3RhdChzdGF0MSwgc3RhdDIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggNTk5MWUyOS4uNWYxNDljYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtOTYsNiArOTYsMTMgQEAKIHByb2Nlc3MgYW5kIHVzZXIuCiAKIAorLi4gZnVuY3Rpb246OiBjdGVybWlkKCkKKworICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUgcHJvY2Vzcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisKIC4uIGRhdGE6OiBlbnZpcm9uCiAKICAgIEEgbWFwcGluZyBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLApAQCAtMTc3LDYgKzE4NCwyOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKKyAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuCisKKyAgIE9uIFVuaXgsIGtleXMgYW5kIHZhbHVlcyBhcmUgZGVjb2RlZCB3aXRoIDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYAorICAgYW5kIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLiBVc2UgOmZ1bmM6YG9zLmdldGVudmJgIGlmIHlvdQorICAgd291bGQgbGlrZSB0byB1c2UgYSBkaWZmZXJlbnQgZW5jb2RpbmcuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXgsIFdpbmRvd3MuCisKKworLi4gZnVuY3Rpb246OiBnZXRlbnZiKGtleSwgZGVmYXVsdD1Ob25lKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCisgICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgYnl0ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisKIC4uIGZ1bmN0aW9uOjogZ2V0X2V4ZWNfcGF0aChlbnY9Tm9uZSkKIAogICAgUmV0dXJucyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGEgbmFtZWQKQEAgLTE4OCwxMyArMjE3LDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGZ1bmN0aW9uOjogY3Rlcm1pZCgpCi0KLSAgIFJldHVybiB0aGUgZmlsZW5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgb2YgdGhlIHByb2Nlc3MuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotCiAuLiBmdW5jdGlvbjo6IGdldGVnaWQoKQogCiAgICBSZXR1cm4gdGhlIGVmZmVjdGl2ZSBncm91cCBpZCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKQEAgLTIyMSw2ICsyNDMsMTcgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IGdldGdyb3VwbGlzdCh1c2VyLCBncm91cCkKKworICAgUmV0dXJuIGxpc3Qgb2YgZ3JvdXAgaWRzIHRoYXQgKnVzZXIqIGJlbG9uZ3MgdG8uIElmICpncm91cCogaXMgbm90IGluIHRoZQorICAgbGlzdCwgaXQgaXMgaW5jbHVkZWQ7IHR5cGljYWxseSwgKmdyb3VwKiBpcyBzcGVjaWZpZWQgYXMgdGhlIGdyb3VwIElECisgICBmaWVsZCBmcm9tIHRoZSBwYXNzd29yZCByZWNvcmQgZm9yICp1c2VyKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdldGdyb3VwcygpCiAKICAgIFJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBpZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MuCkBAIC0yNDIsMTcgKzI3NSw2IEBACiAgICAgICBvYnRhaW5lZCB3aXRoIDpmdW5jOmBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJgLgogCiAKLS4uIGZ1bmN0aW9uOjogaW5pdGdyb3Vwcyh1c2VybmFtZSwgZ2lkKQotCi0gICBDYWxsIHRoZSBzeXN0ZW0gaW5pdGdyb3VwcygpIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGFjY2VzcyBsaXN0IHdpdGggYWxsIG9mCi0gICB0aGUgZ3JvdXBzIG9mIHdoaWNoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgaXMgYSBtZW1iZXIsIHBsdXMgdGhlIHNwZWNpZmllZAotICAgZ3JvdXAgaWQuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQogLi4gZnVuY3Rpb246OiBnZXRsb2dpbigpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgdXNlciBsb2dnZWQgaW4gb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIG9mIHRoZQpAQCAtMjk3LDExICszMTksNDAgQEAKICAgIHRoZSBpZCByZXR1cm5lZCBpcyB0aGUgb25lIG9mIHRoZSBpbml0IHByb2Nlc3MgKDEpLCBvbiBXaW5kb3dzIGl0IGlzIHN0aWxsCiAgICB0aGUgc2FtZSBpZCwgd2hpY2ggbWF5IGJlIGFscmVhZHkgcmV1c2VkIGJ5IGFub3RoZXIgcHJvY2Vzcy4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzLgogCisKKy4uIGZ1bmN0aW9uOjogZ2V0cHJpb3JpdHkod2hpY2gsIHdobykKKworICAgLi4gaW5kZXg6OiBzaW5nbGU6IHByb2Nlc3M7IHNjaGVkdWxpbmcgcHJpb3JpdHkKKworICAgR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4gIFRoZSB2YWx1ZSAqd2hpY2gqIGlzIG9uZSBvZgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCA6Y29uc3Q6YFBSSU9fUEdSUGAsIG9yIDpjb25zdDpgUFJJT19VU0VSYCwgYW5kICp3aG8qCisgICBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byAqd2hpY2gqIChhIHByb2Nlc3MgaWRlbnRpZmllciBmb3IKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgcHJvY2VzcyBncm91cCBpZGVudGlmaWVyIGZvciA6Y29uc3Q6YFBSSU9fUEdSUGAsIGFuZCBhCisgICB1c2VyIElEIGZvciA6Y29uc3Q6YFBSSU9fVVNFUmApLiAgQSB6ZXJvIHZhbHVlIGZvciAqd2hvKiBkZW5vdGVzCisgICAocmVzcGVjdGl2ZWx5KSB0aGUgY2FsbGluZyBwcm9jZXNzLCB0aGUgcHJvY2VzcyBncm91cCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLAorICAgb3IgdGhlIHJlYWwgdXNlciBJRCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBQUklPX1BST0NFU1MKKyAgICAgICAgICBQUklPX1BHUlAKKyAgICAgICAgICBQUklPX1VTRVIKKworICAgUGFyYW1ldGVycyBmb3IgdGhlIDpmdW5jOmBnZXRwcmlvcml0eWAgYW5kIDpmdW5jOmBzZXRwcmlvcml0eWAgZnVuY3Rpb25zLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ2V0cmVzdWlkKCkKIAogICAgUmV0dXJuIGEgdHVwbGUgKHJ1aWQsIGV1aWQsIHN1aWQpIGRlbm90aW5nIHRoZSBjdXJyZW50IHByb2Nlc3MncwpAQCAtMzMxLDI0ICszODIsMTMgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW5pdGdyb3Vwcyh1c2VybmFtZSwgZ2lkKQogCi0gICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCi0gICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgc3RyLgorICAgQ2FsbCB0aGUgc3lzdGVtIGluaXRncm91cHMoKSB0byBpbml0aWFsaXplIHRoZSBncm91cCBhY2Nlc3MgbGlzdCB3aXRoIGFsbCBvZgorICAgdGhlIGdyb3VwcyBvZiB3aGljaCB0aGUgc3BlY2lmaWVkIHVzZXJuYW1lIGlzIGEgbWVtYmVyLCBwbHVzIHRoZSBzcGVjaWZpZWQKKyAgIGdyb3VwIGlkLgogCi0gICBPbiBVbml4LCBrZXlzIGFuZCB2YWx1ZXMgYXJlIGRlY29kZWQgd2l0aCA6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZ2AKLSAgIGFuZCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlci4gVXNlIDpmdW5jOmBvcy5nZXRlbnZiYCBpZiB5b3UKLSAgIHdvdWxkIGxpa2UgdG8gdXNlIGEgZGlmZmVyZW50IGVuY29kaW5nLgotCi0gICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LCBXaW5kb3dzLgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0ZW52YihrZXksIGRlZmF1bHQ9Tm9uZSkKLQotICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgotICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIGJ5dGVzLgotCi0gICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LgorICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDEwLDcgKzQ1MCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogc2V0cGdycCgpCiAKLSAgIENhbGwgdGhlIHN5c3RlbSBjYWxsIDpjOmZ1bmM6YHNldHBncnBgIG9yIDpjOmZ1bmM6YHNldHBncnAoMCwgMClgIGRlcGVuZGluZyBvbgorICAgQ2FsbCB0aGUgc3lzdGVtIGNhbGwgOmM6ZnVuYzpgc2V0cGdycGAgb3IgYGBzZXRwZ3JwKDAsIDApYGAgZGVwZW5kaW5nIG9uCiAgICB3aGljaCB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIChpZiBhbnkpLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgdGhlIHNlbWFudGljcy4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgpAQCAtNDI1LDYgKzQ2NSwyNSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpb3JpdHkpCisKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBwcm9jZXNzOyBzY2hlZHVsaW5nIHByaW9yaXR5CisKKyAgIFNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIFRoZSB2YWx1ZSAqd2hpY2gqIGlzIG9uZSBvZgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCA6Y29uc3Q6YFBSSU9fUEdSUGAsIG9yIDpjb25zdDpgUFJJT19VU0VSYCwgYW5kICp3aG8qCisgICBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byAqd2hpY2gqIChhIHByb2Nlc3MgaWRlbnRpZmllciBmb3IKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgcHJvY2VzcyBncm91cCBpZGVudGlmaWVyIGZvciA6Y29uc3Q6YFBSSU9fUEdSUGAsIGFuZCBhCisgICB1c2VyIElEIGZvciA6Y29uc3Q6YFBSSU9fVVNFUmApLiBBIHplcm8gdmFsdWUgZm9yICp3aG8qIGRlbm90ZXMKKyAgIChyZXNwZWN0aXZlbHkpIHRoZSBjYWxsaW5nIHByb2Nlc3MsIHRoZSBwcm9jZXNzIGdyb3VwIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsCisgICBvciB0aGUgcmVhbCB1c2VyIElEIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisgICAqcHJpb3JpdHkqIGlzIGEgdmFsdWUgaW4gdGhlIHJhbmdlIC0yMCB0byAxOS4gVGhlIGRlZmF1bHQgcHJpb3JpdHkgaXMgMDsKKyAgIGxvd2VyIHByaW9yaXRpZXMgY2F1c2UgbW9yZSBmYXZvcmFibGUgc2NoZWR1bGluZy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogc2V0cmVnaWQocmdpZCwgZWdpZCkKIAogICAgU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLgpAQCAtNTExLDE1ICs1NzAsMzEgQEAKICAgICAgIHNpbmdsZTogZ2V0aG9zdG5hbWUoKSAoaW4gbW9kdWxlIHNvY2tldCkKICAgICAgIHNpbmdsZTogZ2V0aG9zdGJ5YWRkcigpIChpbiBtb2R1bGUgc29ja2V0KQogCi0gICBSZXR1cm4gYSA1LXR1cGxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nCi0gICBzeXN0ZW0uICBUaGUgdHVwbGUgY29udGFpbnMgNSBzdHJpbmdzOiBgYChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwKLSAgIG1hY2hpbmUpYGAuICBTb21lIHN5c3RlbXMgdHJ1bmNhdGUgdGhlIG5vZGVuYW1lIHRvIDggY2hhcmFjdGVycyBvciB0byB0aGUKKyAgIFJldHVybnMgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggZml2ZSBhdHRyaWJ1dGVzOgorCisgICAqIDphdHRyOmBzeXNuYW1lYCAtIG9wZXJhdGluZyBzeXN0ZW0gbmFtZQorICAgKiA6YXR0cjpgbm9kZW5hbWVgIC0gbmFtZSBvZiBtYWNoaW5lIG9uIG5ldHdvcmsgKGltcGxlbWVudGF0aW9uLWRlZmluZWQpCisgICAqIDphdHRyOmByZWxlYXNlYCAtIG9wZXJhdGluZyBzeXN0ZW0gcmVsZWFzZQorICAgKiA6YXR0cjpgdmVyc2lvbmAgLSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24KKyAgICogOmF0dHI6YG1hY2hpbmVgIC0gaGFyZHdhcmUgaWRlbnRpZmllcgorCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgb2JqZWN0IGlzIGFsc28gaXRlcmFibGUsIGJlaGF2aW5nCisgICBsaWtlIGEgZml2ZS10dXBsZSBjb250YWluaW5nIDphdHRyOmBzeXNuYW1lYCwgOmF0dHI6YG5vZGVuYW1lYCwKKyAgIDphdHRyOmByZWxlYXNlYCwgOmF0dHI6YHZlcnNpb25gLCBhbmQgOmF0dHI6YG1hY2hpbmVgCisgICBpbiB0aGF0IG9yZGVyLgorCisgICBTb21lIHN5c3RlbXMgdHJ1bmNhdGUgOmF0dHI6YG5vZGVuYW1lYCB0byA4IGNoYXJhY3RlcnMgb3IgdG8gdGhlCiAgICBsZWFkaW5nIGNvbXBvbmVudDsgYSBiZXR0ZXIgd2F5IHRvIGdldCB0aGUgaG9zdG5hbWUgaXMKICAgIDpmdW5jOmBzb2NrZXQuZ2V0aG9zdG5hbWVgICBvciBldmVuCiAgICBgYHNvY2tldC5nZXRob3N0YnlhZGRyKHNvY2tldC5nZXRob3N0bmFtZSgpKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IHJlY2VudCBmbGF2b3JzIG9mIFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIHR1cGxlLWxpa2Ugb2JqZWN0CisgICAgICB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCisKIAogLi4gZnVuY3Rpb246OiB1bnNldGVudihrZXkpCiAKQEAgLTU0MiwxNSArNjE3LDE2IEBACiBGaWxlIE9iamVjdCBDcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlc2UgZnVuY3Rpb25zIGNyZWF0ZSBuZXcgOnRlcm06YGZpbGUgb2JqZWN0cyA8ZmlsZSBvYmplY3Q+YC4gKFNlZSBhbHNvIDpmdW5jOmBvcGVuYC4pCitUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgbmV3IDp0ZXJtOmBmaWxlIG9iamVjdHMgPGZpbGUgb2JqZWN0PmAuICAoU2VlIGFsc28KKzpmdW5jOmB+b3Mub3BlbmAgZm9yIG9wZW5pbmcgZmlsZSBkZXNjcmlwdG9ycy4pCiAKIAogLi4gZnVuY3Rpb246OiBmZG9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKIAotICAgUmV0dXJuIGFuIG9wZW4gZmlsZSBvYmplY3QgY29ubmVjdGVkIHRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KLSAgIFRoaXMgaXMgYW4gYWxpYXMgb2YgOmZ1bmM6YG9wZW5gIGFuZCBhY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cy4KLSAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgOmZ1bmM6YGZkb3BlbmAKLSAgIG11c3QgYWx3YXlzIGJlIGFuIGludGVnZXIuCisgICBSZXR1cm4gYW4gb3BlbiBmaWxlIG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgVGhpcyBpcyBhbgorICAgYWxpYXMgb2YgdGhlIDpmdW5jOmBvcGVuYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYWNjZXB0cyB0aGUgc2FtZSBhcmd1bWVudHMuCisgICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIDpmdW5jOmBmZG9wZW5gIG11c3QgYWx3YXlzCisgICBiZSBhbiBpbnRlZ2VyLgogCiAKIC4uIF9vcy1mZC1vcHM6CkBAIC01NzIsNiArNjQ4LDcgQEAKIGRlc2NyaXB0b3IgZGlyZWN0bHkgd2lsbCBieXBhc3MgdGhlIGZpbGUgb2JqZWN0IG1ldGhvZHMsIGlnbm9yaW5nIGFzcGVjdHMgc3VjaAogYXMgaW50ZXJuYWwgYnVmZmVyaW5nIG9mIGRhdGEuCiAKKwogLi4gZnVuY3Rpb246OiBjbG9zZShmZCkKIAogICAgQ2xvc2UgZmlsZSBkZXNjcmlwdG9yICpmZCouCkBAIC01ODksNyArNjY2LDcgQEAKIC4uIGZ1bmN0aW9uOjogY2xvc2VyYW5nZShmZF9sb3csIGZkX2hpZ2gpCiAKICAgIENsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gKmZkX2xvdyogKGluY2x1c2l2ZSkgdG8gKmZkX2hpZ2gqIChleGNsdXNpdmUpLAotICAgaWdub3JpbmcgZXJyb3JzLiBFcXVpdmFsZW50IHRvOjoKKyAgIGlnbm9yaW5nIGVycm9ycy4gRXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOjoKIAogICAgICAgZm9yIGZkIGluIHJhbmdlKGZkX2xvdywgZmRfaGlnaCk6CiAgICAgICAgICAgdHJ5OgpAQCAtNjIyLDggKzY5OSw5IEBACiAKIC4uIGZ1bmN0aW9uOjogZmNobW9kKGZkLCBtb2RlKQogCi0gICBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICBTZWUgdGhlIGRvY3MKLSAgIGZvciA6ZnVuYzpgY2htb2RgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLgorICAgQ2hhbmdlIHRoZSBtb2RlIG9mIHRoZSBmaWxlIGdpdmVuIGJ5ICpmZCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiAgU2VlIHRoZQorICAgZG9jcyBmb3IgOmZ1bmM6YGNobW9kYCBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMKKyAgIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5jaG1vZChmZCwgbW9kZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC02MzEsNyArNzA5LDkgQEAKIC4uIGZ1bmN0aW9uOjogZmNob3duKGZkLCB1aWQsIGdpZCkKIAogICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqdWlkKgotICAgYW5kICpnaWQqLiAgVG8gbGVhdmUgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuCisgICBhbmQgKmdpZCouICBUbyBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4gIFNlZQorICAgOmZ1bmM6YGNob3duYC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLmNob3duKGZkLCB1aWQsCisgICBnaWQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNjYyLDIwICs3NDIsMjQgQEAKICAgIGluY2x1ZGVkIGluIGBgcGF0aGNvbmZfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAorICAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MucGF0aGNvbmYoZmQsIG5hbWUpYGAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBmdW5jdGlvbjo6IGZzdGF0KGZkKQogCi0gICBSZXR1cm4gc3RhdHVzIGZvciBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgfm9zLnN0YXRgLgorICAgUmV0dXJuIHN0YXR1cyBmb3IgZmlsZSBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YH5vcy5zdGF0YC4gIEFzIG9mIFB5dGhvbgorICAgMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0KGZkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAogLi4gZnVuY3Rpb246OiBmc3RhdHZmcyhmZCkKIAotICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGZpbGUKLSAgIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgc3RhdHZmc2AuCisgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGgKKyAgIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmBzdGF0dmZzYC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0dmZzKGZkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTY4OSwxMyArNzczLDE0IEBACiAgICBgYGYuZmx1c2goKWBgLCBhbmQgdGhlbiBkbyBgYG9zLmZzeW5jKGYuZmlsZW5vKCkpYGAsIHRvIGVuc3VyZSB0aGF0IGFsbCBpbnRlcm5hbAogICAgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggKmYqIGFyZSB3cml0dGVuIHRvIGRpc2suCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgYW5kIFdpbmRvd3MuCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAogLi4gZnVuY3Rpb246OiBmdHJ1bmNhdGUoZmQsIGxlbmd0aCkKIAotICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgc28gdGhhdCBpdCBpcyBhdCBtb3N0Ci0gICAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgc28gdGhhdCBpdCBpcyBhdAorICAgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLnRydW5jYXRlKGZkLCBsZW5ndGgpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNzA4LDYgKzc5MywzMSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogbG9ja2YoZmQsIGNtZCwgbGVuKQorCisgICBBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgKmZkKiBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgICpjbWQqIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgLSBvbmUgb2YgOmRhdGE6YEZfTE9DS2AsIDpkYXRhOmBGX1RMT0NLYCwKKyAgIDpkYXRhOmBGX1VMT0NLYCBvciA6ZGF0YTpgRl9URVNUYC4KKyAgICpsZW4qIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBGX0xPQ0sKKyAgICAgICAgICBGX1RMT0NLCisgICAgICAgICAgRl9VTE9DSworICAgICAgICAgIEZfVEVTVAorCisgICBGbGFncyB0aGF0IHNwZWNpZnkgd2hhdCBhY3Rpb24gOmZ1bmM6YGxvY2tmYCB3aWxsIHRha2UuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBsc2VlayhmZCwgcG9zLCBob3cpCiAKICAgIFNldCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBmaWxlIGRlc2NyaXB0b3IgKmZkKiB0byBwb3NpdGlvbiAqcG9zKiwgbW9kaWZpZWQKQEAgLTcyNCwyMSArODM0LDI5IEBACiAgICAgICAgICAgU0VFS19FTkQKIAogICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YGxzZWVrYCBmdW5jdGlvbi4gVGhlaXIgdmFsdWVzIGFyZSAwLCAxLCBhbmQgMiwKLSAgIHJlc3BlY3RpdmVseS4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBVbml4LgorICAgcmVzcGVjdGl2ZWx5LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyBjb3VsZCBzdXBwb3J0IGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCisgICAgICA6ZGF0YTpgb3MuU0VFS19IT0xFYCBvciA6ZGF0YTpgb3MuU0VFS19EQVRBYC4KIAogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgZmxhZ3NbLCBtb2RlXSkKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIE9wZW4gdGhlIGZpbGUgKmZpbGUqIGFuZCBzZXQgdmFyaW91cyBmbGFncyBhY2NvcmRpbmcgdG8gKmZsYWdzKiBhbmQgcG9zc2libHkKLSAgIGl0cyBtb2RlIGFjY29yZGluZyB0byAqbW9kZSouICBUaGUgZGVmYXVsdCAqbW9kZSogaXMgYGAwbzc3N2BgIChvY3RhbCksIGFuZAotICAgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dC4gIFJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvcgotICAgdGhlIG5ld2x5IG9wZW5lZCBmaWxlLgorICAgaXRzIG1vZGUgYWNjb3JkaW5nIHRvICptb2RlKi4gIFdoZW4gY29tcHV0aW5nICptb2RlKiwgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUKKyAgIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIG5ld2x5IG9wZW5lZCBmaWxlLgogCiAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmxhZyBhbmQgbW9kZSB2YWx1ZXMsIHNlZSB0aGUgQyBydW4tdGltZSBkb2N1bWVudGF0aW9uOwogICAgZmxhZyBjb25zdGFudHMgKGxpa2UgOmNvbnN0OmBPX1JET05MWWAgYW5kIDpjb25zdDpgT19XUk9OTFlgKSBhcmUgZGVmaW5lZCBpbgogICAgdGhpcyBtb2R1bGUgdG9vIChzZWUgOnJlZjpgb3Blbi1jb25zdGFudHNgKS4gIEluIHBhcnRpY3VsYXIsIG9uIFdpbmRvd3MgYWRkaW5nCiAgICA6Y29uc3Q6YE9fQklOQVJZYCBpcyBuZWVkZWQgdG8gb3BlbiBmaWxlcyBpbiBiaW5hcnkgbW9kZS4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKQEAgLTc0OCw2ICs4NjYsOSBAQAogICAgICAgOm1ldGg6YH5maWxlLnJlYWRgIGFuZCA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZHMgKGFuZCBtYW55IG1vcmUpLiAgVG8KICAgICAgIHdyYXAgYSBmaWxlIGRlc2NyaXB0b3IgaW4gYSBmaWxlIG9iamVjdCwgdXNlIDpmdW5jOmBmZG9wZW5gLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW5wdHkoKQogCkBAIC03NjgsNiArODg5LDc5IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAorLi4gZnVuY3Rpb246OiBwaXBlMihmbGFncykKKworICAgQ3JlYXRlIGEgcGlwZSB3aXRoICpmbGFncyogc2V0IGF0b21pY2FsbHkuCisgICAqZmxhZ3MqIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6CisgICA6ZGF0YTpgT19OT05CTE9DS2AsIDpkYXRhOmBPX0NMT0VYRUNgLgorICAgUmV0dXJuIGEgcGFpciBvZiBmaWxlIGRlc2NyaXB0b3JzIGBgKHIsIHcpYGAgdXNhYmxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLAorICAgcmVzcGVjdGl2ZWx5LgorCisgICBBdmFpbGFiaWxpdHk6IHNvbWUgZmxhdm9ycyBvZiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pCisKKyAgIEVuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqZmQqCisgICBzdGFydGluZyBmcm9tICpvZmZzZXQqIGFuZCBjb250aW51aW5nIGZvciAqbGVuKiBieXRlcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpCisKKyAgIEFubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcKKyAgIHRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLgorICAgVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpmZCogc3RhcnRpbmcgYXQKKyAgICpvZmZzZXQqIGFuZCBjb250aW51aW5nIGZvciAqbGVuKiBieXRlcy4KKyAgICphZHZpY2UqIGlzIG9uZSBvZiA6ZGF0YTpgUE9TSVhfRkFEVl9OT1JNQUxgLCA6ZGF0YTpgUE9TSVhfRkFEVl9TRVFVRU5USUFMYCwKKyAgIDpkYXRhOmBQT1NJWF9GQURWX1JBTkRPTWAsIDpkYXRhOmBQT1NJWF9GQURWX05PUkVVU0VgLAorICAgOmRhdGE6YFBPU0lYX0ZBRFZfV0lMTE5FRURgIG9yIDpkYXRhOmBQT1NJWF9GQURWX0RPTlRORUVEYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogUE9TSVhfRkFEVl9OT1JNQUwKKyAgICAgICAgICBQT1NJWF9GQURWX1NFUVVFTlRJQUwKKyAgICAgICAgICBQT1NJWF9GQURWX1JBTkRPTQorICAgICAgICAgIFBPU0lYX0ZBRFZfTk9SRVVTRQorICAgICAgICAgIFBPU0lYX0ZBRFZfV0lMTE5FRUQKKyAgICAgICAgICBQT1NJWF9GQURWX0RPTlRORUVECisKKyAgIEZsYWdzIHRoYXQgY2FuIGJlIHVzZWQgaW4gKmFkdmljZSogaW4gOmZ1bmM6YHBvc2l4X2ZhZHZpc2VgIHRoYXQgc3BlY2lmeQorICAgdGhlIGFjY2VzcyBwYXR0ZXJuIHRoYXQgaXMgbGlrZWx5IHRvIGJlIHVzZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KQorCisgICBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IsICpmZCosIGF0IGEgcG9zaXRpb24gb2YgKm9mZnNldCouIEl0IHdpbGwgcmVhZCB1cAorICAgdG8gKmJ1ZmZlcnNpemUqIG51bWJlciBvZiBieXRlcy4gVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkKKworICAgV3JpdGUgKnN0cmluZyogdG8gYSBmaWxlIGRlc2NyaXB0b3IsICpmZCosIGZyb20gKm9mZnNldCosIGxlYXZpbmcgdGhlIGZpbGUKKyAgIG9mZnNldCB1bmNoYW5nZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiByZWFkKGZkLCBuKQogCiAgICBSZWFkIGF0IG1vc3QgKm4qIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yICpmZCouIFJldHVybiBhIGJ5dGVzdHJpbmcgY29udGFpbmluZyB0aGUKQEAgLTc3OSwxMCArOTczLDYyIEBACiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQotICAgICAgZGVzY3JpcHRvciBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmAgb3IgOmZ1bmM6YHBpcGVgLiAgVG8gcmVhZCBhICJmaWxlIG9iamVjdCIKLSAgICAgIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3BlbmAgb3IgYnkgOmZ1bmM6YHBvcGVuYCBvcgotICAgICAgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3RkaW5gLCB1c2UgaXRzIDptZXRoOmB+ZmlsZS5yZWFkYCBvcgotICAgICAgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2RzLgorICAgICAgZGVzY3JpcHRvciBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmAgb3IgOmZ1bmM6YHBpcGVgLiAgVG8gcmVhZCBhCisgICAgICAiZmlsZSBvYmplY3QiIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3BlbmAgb3IgYnkKKyAgICAgIDpmdW5jOmBwb3BlbmAgb3IgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3RkaW5gLCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmZpbGUucmVhZGAgb3IgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2RzLgorCisKKy4uIGZ1bmN0aW9uOjogc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICAgIHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPU5vbmUsIHRyYWlsZXJzPU5vbmUsIGZsYWdzPTApCisKKyAgIENvcHkgKm5ieXRlcyogYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgKmluKiB0byBmaWxlIGRlc2NyaXB0b3IgKm91dCoKKyAgIHN0YXJ0aW5nIGF0ICpvZmZzZXQqLgorICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudC4gV2hlbiBFT0YgaXMgcmVhY2hlZCByZXR1cm4gMC4KKworICAgVGhlIGZpcnN0IGZ1bmN0aW9uIG5vdGF0aW9uIGlzIHN1cHBvcnRlZCBieSBhbGwgcGxhdGZvcm1zIHRoYXQgZGVmaW5lCisgICA6ZnVuYzpgc2VuZGZpbGVgLgorCisgICBPbiBMaW51eCwgaWYgKm9mZnNldCogaXMgZ2l2ZW4gYXMgYGBOb25lYGAsIHRoZSBieXRlcyBhcmUgcmVhZCBmcm9tIHRoZQorICAgY3VycmVudCBwb3NpdGlvbiBvZiAqaW4qIGFuZCB0aGUgcG9zaXRpb24gb2YgKmluKiBpcyB1cGRhdGVkLgorCisgICBUaGUgc2Vjb25kIGNhc2UgbWF5IGJlIHVzZWQgb24gTWFjIE9TIFggYW5kIEZyZWVCU0Qgd2hlcmUgKmhlYWRlcnMqIGFuZAorICAgKnRyYWlsZXJzKiBhcmUgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBidWZmZXJzIHRoYXQgYXJlIHdyaXR0ZW4gYmVmb3JlIGFuZAorICAgYWZ0ZXIgdGhlIGRhdGEgZnJvbSAqaW4qIGlzIHdyaXR0ZW4uIEl0IHJldHVybnMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGNhc2UuCisKKyAgIE9uIE1hYyBPUyBYIGFuZCBGcmVlQlNELCBhIHZhbHVlIG9mIDAgZm9yICpuYnl0ZXMqIHNwZWNpZmllcyB0byBzZW5kIHVudGlsCisgICB0aGUgZW5kIG9mICppbiogaXMgcmVhY2hlZC4KKworICAgT24gU29sYXJpcywgKm91dCogbWF5IGJlIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSByZWd1bGFyIGZpbGUgb3IgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3Igb2YgYSBzb2NrZXQuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsICpvdXQqIG11c3QgYmUgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3Igb2YgYW4gb3BlbiBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IFNGX05PRElTS0lPCisgICAgICAgICAgU0ZfTU5PV0FJVAorICAgICAgICAgIFNGX1NZTkMKKworICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YHNlbmRmaWxlYCBmdW5jdGlvbiwgaWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzCisgICB0aGVtLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcmVhZHYoZmQsIGJ1ZmZlcnMpCisKKyAgIFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuICpidWZmZXJzKiBpcworICAgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcworICAgcmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBmdW5jdGlvbjo6IHRjZ2V0cGdycChmZCkKQEAgLTgyNiw2ICsxMDcyLDE3IEBACiAgICAgICA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZC4KIAogCisuLiBmdW5jdGlvbjo6IHdyaXRldihmZCwgYnVmZmVycykKKworICAgV3JpdGUgdGhlIGNvbnRlbnRzIG9mICpidWZmZXJzKiB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgd2hlcmUgKmJ1ZmZlcnMqCisgICBpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy4KKyAgIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIF9vcGVuLWNvbnN0YW50czoKIAogYGBvcGVuKClgYCBmbGFnIGNvbnN0YW50cwpAQCAtODU3LDkgKzExMTQsMTIgQEAKICAgICAgICAgICBPX05PQ1RUWQogICAgICAgICAgIE9fU0hMT0NLCiAgICAgICAgICAgT19FWExPQ0sKKyAgICAgICAgICBPX0NMT0VYRUMKIAogICAgVGhlc2UgY29uc3RhbnRzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkIDpkYXRhOmBPX0NMT0VYRUNgIGNvbnN0YW50LgogCiAuLiBkYXRhOjogT19CSU5BUlkKICAgICAgICAgICBPX05PSU5IRVJJVApAQCAtODgyLDEyICsxMTQyLDEwNiBAQAogICAgdGhlIEMgbGlicmFyeS4KIAogCisuLiBkYXRhOjogUlRMRF9MQVpZCisgICAgICAgICAgUlRMRF9OT1cKKyAgICAgICAgICBSVExEX0dMT0JBTAorICAgICAgICAgIFJUTERfTE9DQUwKKyAgICAgICAgICBSVExEX05PREVMRVRFCisgICAgICAgICAgUlRMRF9OT0xPQUQKKyAgICAgICAgICBSVExEX0RFRVBCSU5ECisKKyAgIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZSA6bWFucGFnZTpgZGxvcGVuKDMpYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gX3Rlcm1pbmFsLXNpemU6CisKK1F1ZXJ5aW5nIHRoZSBzaXplIG9mIGEgdGVybWluYWwKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogZ2V0X3Rlcm1pbmFsX3NpemUoZmQ9U1RET1VUX0ZJTEVOTykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgYGAoY29sdW1ucywgbGluZXMpYGAsCisgICB0dXBsZSBvZiB0eXBlIDpjbGFzczpgdGVybWluYWxfc2l6ZWAuCisKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCBgYGZkYGAgKGRlZmF1bHQgYGBTVERPVVRfRklMRU5PYGAsIG9yIHN0YW5kYXJkCisgICBvdXRwdXQpIHNwZWNpZmllcyB3aGljaCBmaWxlIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHF1ZXJpZWQuCisKKyAgIElmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCBhbiA6ZXhjOmBPU0Vycm9yYAorICAgaXMgdGhyb3duLgorCisgICA6ZnVuYzpgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplYCBpcyB0aGUgaGlnaC1sZXZlbCBmdW5jdGlvbiB3aGljaAorICAgc2hvdWxkIG5vcm1hbGx5IGJlIHVzZWQsIGBgb3MuZ2V0X3Rlcm1pbmFsX3NpemVgYCBpcyB0aGUgbG93LWxldmVsCisgICBpbXBsZW1lbnRhdGlvbi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisuLiBjbGFzczo6IHRlcm1pbmFsX3NpemUKKworICAgQSBzdWJjbGFzcyBvZiB0dXBsZSwgaG9sZGluZyBgYChjb2x1bW5zLCBsaW5lcylgYCBvZiB0aGUgdGVybWluYWwgd2luZG93IHNpemUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbHVtbnMKKworICAgICAgV2lkdGggb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaW5lcworCisgICAgICBIZWlnaHQgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzLgorCisKIC4uIF9vcy1maWxlLWRpcjoKIAogRmlsZXMgYW5kIERpcmVjdG9yaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBhY2Nlc3MocGF0aCwgbW9kZSkKK09uIHNvbWUgVW5peCBwbGF0Zm9ybXMsIG1hbnkgb2YgdGhlc2UgZnVuY3Rpb25zIHN1cHBvcnQgb25lIG9yIG1vcmUgb2YgdGhlc2UKK2ZlYXR1cmVzOgorCisuLiBfcGF0aF9mZDoKKworKiAqKnNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3I6KioKKyAgRm9yIHNvbWUgZnVuY3Rpb25zLCB0aGUgKnBhdGgqIGFyZ3VtZW50IGNhbiBiZSBub3Qgb25seSBhIHN0cmluZyBnaXZpbmcgYSBwYXRoCisgIG5hbWUsIGJ1dCBhbHNvIGEgZmlsZSBkZXNjcmlwdG9yLiAgVGhlIGZ1bmN0aW9uIHdpbGwgdGhlbiBvcGVyYXRlIG9uIHRoZSBmaWxlCisgIHJlZmVycmVkIHRvIGJ5IHRoZSBkZXNjcmlwdG9yLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsIHRoZQorICBgYGYuLi5gYCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqcGF0aCogY2FuIGJlIHNwZWNpZmllZCBhcyBhIGZpbGUgZGVzY3JpcHRvciBvbgorICB5b3VyIHBsYXRmb3JtIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mZGAuICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQKKyAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCisgIElmIHRoZSBmdW5jdGlvbiBhbHNvIHN1cHBvcnRzICpkaXJfZmQqIG9yICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgaXQgaXMKKyAgYW4gZXJyb3IgdG8gc3BlY2lmeSBvbmUgb2YgdGhvc2Ugd2hlbiBzdXBwbHlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yLgorCisuLiBfZGlyX2ZkOgorCisqICoqcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzOioqIElmICpkaXJfZmQqIGlzIG5vdCBgYE5vbmVgYCwgaXQKKyAgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSBwYXRoIHRvIG9wZXJhdGUKKyAgb24gc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4gIElmIHRoZQorICBwYXRoIGlzIGFic29sdXRlLCAqZGlyX2ZkKiBpcyBpZ25vcmVkLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsCisgIHRoZSBgYC4uLmF0YGAgb3IgYGBmLi4uYXRgYCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqZGlyX2ZkKiBpcyBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybSB1c2luZworICA6ZGF0YTpgb3Muc3VwcG9ydHNfZGlyX2ZkYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEKKyAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKy4uIF9mb2xsb3dfc3ltbGlua3M6CisKKyogKipub3QgZm9sbG93aW5nIHN5bWxpbmtzOioqIElmICpmb2xsb3dfc3ltbGlua3MqIGlzCisgIGBgRmFsc2VgYCwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggdG8gb3BlcmF0ZSBvbiBpcyBhIHN5bWJvbGljIGxpbmssCisgIHRoZSBmdW5jdGlvbiB3aWxsIG9wZXJhdGUgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlCisgIGxpbmsgcG9pbnRzIHRvLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsIHRoZSBgYGwuLi5gYCB2ZXJzaW9uIG9mCisgIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqZm9sbG93X3N5bWxpbmtzKiBpcyBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybQorICB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdAorICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKworCisuLiBmdW5jdGlvbjo6IGFjY2VzcyhwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFVzZSB0aGUgcmVhbCB1aWQvZ2lkIHRvIHRlc3QgZm9yIGFjY2VzcyB0byAqcGF0aCouICBOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zCiAgICB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYQpAQCAtODk4LDYgKzEyNTIsMTUgQEAKICAgIDpjb25zdDpgRmFsc2VgIGlmIG5vdC4gU2VlIHRoZSBVbml4IG1hbiBwYWdlIDptYW5wYWdlOmBhY2Nlc3MoMilgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbi4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeQorICAgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgSWYgKmVmZmVjdGl2ZV9pZHMqIGlzIGBgVHJ1ZWBgLCA6ZnVuYzpgYWNjZXNzYCB3aWxsIHBlcmZvcm0gaXRzIGFjY2VzcworICAgY2hlY2tzIHVzaW5nIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCBpbnN0ZWFkIG9mIHRoZSByZWFsIHVpZC9naWQuCisgICAqZWZmZWN0aXZlX2lkcyogbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgeW91IGNhbiBjaGVjayB3aGV0aGVyCisgICBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzYC4gIElmIGl0IGlzCisgICB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgpAQCAtOTE3LDExICsxMjgwLDggQEAKIAogICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIGZwID0gb3BlbigibXlmaWxlIikKLSAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAgICAgIHJldHVybiAic29tZSBkZWZhdWx0IGRhdGEiCi0gICAgICAgICAgICAgIyBOb3QgYSBwZXJtaXNzaW9uIGVycm9yLgotICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICAgICAgIHJldHVybiAic29tZSBkZWZhdWx0IGRhdGEiCiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgIHdpdGggZnA6CiAgICAgICAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKQEAgLTkzMiwyOSArMTI5MiwxOCBAQAogICAgICAgc3VjY2VlZCwgcGFydGljdWxhcmx5IGZvciBvcGVyYXRpb25zIG9uIG5ldHdvcmsgZmlsZXN5c3RlbXMgd2hpY2ggbWF5IGhhdmUKICAgICAgIHBlcm1pc3Npb25zIHNlbWFudGljcyBiZXlvbmQgdGhlIHVzdWFsIFBPU0lYIHBlcm1pc3Npb24tYml0IG1vZGVsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqLCAqZWZmZWN0aXZlX2lkcyosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXJzLgorCiAKIC4uIGRhdGE6OiBGX09LCisgICAgICAgICAgUl9PSworICAgICAgICAgIFdfT0sKKyAgICAgICAgICBYX09LCiAKLSAgIFZhbHVlIHRvIHBhc3MgYXMgdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUgZXhpc3RlbmNlIG9mCi0gICAqcGF0aCouCi0KLQotLi4gZGF0YTo6IFJfT0sKLQotICAgVmFsdWUgdG8gaW5jbHVkZSBpbiB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZQotICAgcmVhZGFiaWxpdHkgb2YgKnBhdGgqLgotCi0KLS4uIGRhdGE6OiBXX09LCi0KLSAgIFZhbHVlIHRvIGluY2x1ZGUgaW4gdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUKLSAgIHdyaXRhYmlsaXR5IG9mICpwYXRoKi4KLQotCi0uLiBkYXRhOjogWF9PSwotCi0gICBWYWx1ZSB0byBpbmNsdWRlIGluIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIGRldGVybWluZSBpZgotICAgKnBhdGgqIGNhbiBiZSBleGVjdXRlZC4KKyAgIFZhbHVlcyB0byBwYXNzIGFzIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlCisgICBleGlzdGVuY2UsIHJlYWRhYmlsaXR5LCB3cml0YWJpbGl0eSBhbmQgZXhlY3V0YWJpbGl0eSBvZiAqcGF0aCosCisgICByZXNwZWN0aXZlbHkuCiAKIAogLi4gZnVuY3Rpb246OiBjaGRpcihwYXRoKQpAQCAtOTYzLDMzICsxMzEyLDE3IEBACiAKICAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byAqcGF0aCouCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQotCi0uLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKLQotICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgdGhlIGZpbGUKLSAgIGRlc2NyaXB0b3IgKmZkKi4gIFRoZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuIG9wZW4KLSAgIGZpbGUuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotCi0uLiBmdW5jdGlvbjo6IGdldGN3ZCgpCi0KLSAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4gIFRoZQorICAgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbiBvcGVuIGZpbGUuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAotCi0uLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQotCi0gICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvcgorICAgICAgb24gc29tZSBwbGF0Zm9ybXMuCiAKIAotLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzKQorLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBmbGFncyBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKmZsYWdzKi4gKmZsYWdzKiBtYXkgdGFrZSBhIGNvbWJpbmF0aW9uCiAgICAoYml0d2lzZSBPUikgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMgKGFzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZSk6CkBAIC0xMDA3LDE2ICsxMzQwLDE1IEBACiAgICAqIDpkYXRhOmBzdGF0LlNGX05PVU5MSU5LYAogICAgKiA6ZGF0YTpgc3RhdC5TRl9TTkFQU0hPVGAKIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCi0KLS4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCi0KLSAgIENoYW5nZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byAqcGF0aCouIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KIAogCi0uLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUpCisuLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ2hhbmdlIHRoZSBtb2RlIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICptb2RlKiBtYXkgdGFrZSBvbmUgb2YgdGhlCiAgICBmb2xsb3dpbmcgdmFsdWVzIChhcyBkZWZpbmVkIGluIHRoZSA6bW9kOmBzdGF0YCBtb2R1bGUpIG9yIGJpdHdpc2UgT1JlZApAQCAtMTA0MiwyOCArMTM3NCw3NyBAQAogICAgKiA6ZGF0YTpgc3RhdC5TX0lXT1RIYAogICAgKiA6ZGF0YTpgc3RhdC5TX0lYT1RIYAogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKIAotICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgIHNldCB0aGUgZmlsZSdzIHJlYWQtb25seQotICAgICAgZmxhZyB3aXRoIGl0ICh2aWEgdGhlIGBgc3RhdC5TX0lXUklURWBgICBhbmQgYGBzdGF0LlNfSVJFQURgYAotICAgICAgY29uc3RhbnRzIG9yIGEgY29ycmVzcG9uZGluZyBpbnRlZ2VyIHZhbHVlKS4gIEFsbCBvdGhlciBiaXRzIGFyZQotICAgICAgaWdub3JlZC4KKyAgICAgIEFsdGhvdWdoIFdpbmRvd3Mgc3VwcG9ydHMgOmZ1bmM6YGNobW9kYCwgeW91IGNhbiBvbmx5IHNldCB0aGUgZmlsZSdzCisgICAgICByZWFkLW9ubHkgZmxhZyB3aXRoIGl0ICh2aWEgdGhlIGBgc3RhdC5TX0lXUklURWBgIGFuZCBgYHN0YXQuU19JUkVBRGBgCisgICAgICBjb25zdGFudHMgb3IgYSBjb3JyZXNwb25kaW5nIGludGVnZXIgdmFsdWUpLiAgQWxsIG90aGVyIGJpdHMgYXJlIGlnbm9yZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCisgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKIAotLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCkKKy4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gVG8gbGVhdmUKLSAgIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLgorICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gIFRvCisgICBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKyAgIFNlZSA6ZnVuYzpgc2h1dGlsLmNob3duYCBmb3IgYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG5hbWVzIGluCisgICBhZGRpdGlvbiB0byBudW1lcmljIGlkcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KKworCisuLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQorCisgICBDaGFuZ2UgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gKnBhdGgqLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCisKKyAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZGlyZWN0b3J5IHJlcHJlc2VudGVkIGJ5IHRoZSBmaWxlCisgICBkZXNjcmlwdG9yICpmZCouICBUaGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbgorICAgb3BlbiBmaWxlLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MuY2hkaXIoZmQpYGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworCisuLiBmdW5jdGlvbjo6IGdldGN3ZCgpCisKKyAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworCisuLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQorCisgICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisKIC4uIGZ1bmN0aW9uOjogbGNoZmxhZ3MocGF0aCwgZmxhZ3MpCiAKLSAgIFNldCB0aGUgZmxhZ3Mgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICpmbGFncyosIGxpa2UgOmZ1bmM6YGNoZmxhZ3NgLCBidXQgZG8gbm90Ci0gICBmb2xsb3cgc3ltYm9saWMgbGlua3MuCisgICBTZXQgdGhlIGZsYWdzIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqZmxhZ3MqLCBsaWtlIDpmdW5jOmBjaGZsYWdzYCwgYnV0IGRvCisgICBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLmNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC0xMDcxLDExMCArMTQ1MiwxMDEgQEAKIC4uIGZ1bmN0aW9uOjogbGNobW9kKHBhdGgsIG1vZGUpCiAKICAgIENoYW5nZSB0aGUgbW9kZSBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiBJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcwotICAgYWZmZWN0cyB0aGUgc3ltbGluayByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiBTZWUgdGhlIGRvY3MgZm9yIDpmdW5jOmBjaG1vZGAKLSAgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLgorICAgYWZmZWN0cyB0aGUgc3ltbGluayByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiAgU2VlIHRoZSBkb2NzIGZvciA6ZnVuYzpgY2htb2RgCisgICBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgYGBvcy5jaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBmdW5jdGlvbjo6IGxjaG93bihwYXRoLCB1aWQsIGdpZCkKIAotICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gVGhpcwotICAgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gIFRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudAorICAgdG8gYGBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAotLi4gZnVuY3Rpb246OiBsaW5rKHNvdXJjZSwgbGlua19uYW1lKQorLi4gZnVuY3Rpb246OiBsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKLSAgIENyZWF0ZSBhIGhhcmQgbGluayBwb2ludGluZyB0byAqc291cmNlKiBuYW1lZCAqbGlua19uYW1lKi4KKyAgIENyZWF0ZSBhIGhhcmQgbGluayBwb2ludGluZyB0byAqc3JjKiBuYW1lZCAqZHN0Ki4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCwgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqc3JjX2Rpcl9mZCosICpkc3RfZGlyX2ZkKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3RkaXIocGF0aD0nLicpCiAKICAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieQotICAgKnBhdGgqIChkZWZhdWx0OiBgYCcuJ2BgKS4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKKyAgICpwYXRoKi4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlciwgYW5kIGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKICAgIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCiAKLSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIGEgYnl0ZXMgb3Igc3RyaW5nIGFyZ3VtZW50LCBhbmQgcmV0dXJucwotICAgZmlsZW5hbWVzIG9mIHRoZSBzYW1lIGRhdGF0eXBlLgorICAgKnBhdGgqIG1heSBiZSBlaXRoZXIgb2YgdHlwZSBgYHN0cmBgIG9yIG9mIHR5cGUgYGBieXRlc2BgLiAgSWYgKnBhdGgqCisgICBpcyBvZiB0eXBlIGBgYnl0ZXNgYCwgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CisgICBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcywgdGhleSB3aWxsIGJlIG9mIHR5cGUgYGBzdHJgYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKKyAgIDxwYXRoX2ZkPmA7IHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS4KKworICAgLi4gbm90ZTo6CisgICAgICBUbyBlbmNvZGUgYGBzdHJgYCBmaWxlbmFtZXMgdG8gYGBieXRlc2BgLCB1c2UgOmZ1bmM6YH5vcy5mc2VuY29kZWAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqcGF0aCogcGFyYW1ldGVyIGJlY2FtZSBvcHRpb25hbC4KIAotLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoKQorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCisKKworLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhbiA6YzpmdW5jOmBsc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCiAgICBTaW1pbGFyIHRvIDpmdW5jOmB+b3Muc3RhdGAsIGJ1dCBkb2VzIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuICBPbgogICAgcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgc3ltYm9saWMgbGlua3MsIHRoaXMgaXMgYW4gYWxpYXMgZm9yCi0gICA6ZnVuYzpgfm9zLnN0YXRgLgorICAgOmZ1bmM6YH5vcy5zdGF0YC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLnN0YXQocGF0aCwKKyAgIGRpcl9mZD1kaXJfZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAotCi0uLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoWywgbW9kZV0pCi0KLSAgIENyZWF0ZSBhIEZJRk8gKGEgbmFtZWQgcGlwZSkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4gIFRoZQotICAgZGVmYXVsdCAqbW9kZSogaXMgYGAwbzY2NmBgIChvY3RhbCkuICBUaGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQKLSAgIG91dCBmcm9tIHRoZSBtb2RlLgotCi0gICBGSUZPcyBhcmUgcGlwZXMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgbGlrZSByZWd1bGFyIGZpbGVzLiAgRklGT3MgZXhpc3QgdW50aWwgdGhleQotICAgYXJlIGRlbGV0ZWQgKGZvciBleGFtcGxlIHdpdGggOmZ1bmM6YG9zLnVubGlua2ApLiBHZW5lcmFsbHksIEZJRk9zIGFyZSB1c2VkIGFzCi0gICByZW5kZXp2b3VzIGJldHdlZW4gImNsaWVudCIgYW5kICJzZXJ2ZXIiIHR5cGUgcHJvY2Vzc2VzOiB0aGUgc2VydmVyIG9wZW5zIHRoZQotICAgRklGTyBmb3IgcmVhZGluZywgYW5kIHRoZSBjbGllbnQgb3BlbnMgaXQgZm9yIHdyaXRpbmcuICBOb3RlIHRoYXQgOmZ1bmM6YG1rZmlmb2AKLSAgIGRvZXNuJ3Qgb3BlbiB0aGUgRklGTyAtLS0gaXQganVzdCBjcmVhdGVzIHRoZSByZW5kZXp2b3VzIHBvaW50LgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAogCi0uLiBmdW5jdGlvbjo6IG1rbm9kKGZpbGVuYW1lWywgbW9kZT0wbzYwMFssIGRldmljZT0wXV0pCisuLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCi0gICBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSkgbmFtZWQKLSAgICpmaWxlbmFtZSouICptb2RlKiBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGUgdHlwZSBvZiBub2RlCi0gICB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2YgYGBzdGF0LlNfSUZSRUdgYCwKLSAgIGBgc3RhdC5TX0lGQ0hSYGAsIGBgc3RhdC5TX0lGQkxLYGAsIGFuZCBgYHN0YXQuU19JRklGT2BgICh0aG9zZSBjb25zdGFudHMgYXJlCi0gICBhdmFpbGFibGUgaW4gOm1vZDpgc3RhdGApLiAgRm9yIGBgc3RhdC5TX0lGQ0hSYGAgYW5kIGBgc3RhdC5TX0lGQkxLYGAsCi0gICAqZGV2aWNlKiBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nCi0gICA6ZnVuYzpgb3MubWFrZWRldmApLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC4KKyAgIENyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLgogCisgICBPbiBzb21lIHN5c3RlbXMsICptb2RlKiBpcyBpZ25vcmVkLiAgV2hlcmUgaXQgaXMgdXNlZCwgdGhlIGN1cnJlbnQgdW1hc2sKKyAgIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBJZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYAorICAgaXMgcmFpc2VkLgogCi0uLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKLQotICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCi0gICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCi0KLQotLi4gZnVuY3Rpb246OiBtaW5vcihkZXZpY2UpCi0KLSAgIEV4dHJhY3QgdGhlIGRldmljZSBtaW5vciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQotICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgotCi0KLS4uIGZ1bmN0aW9uOjogbWFrZWRldihtYWpvciwgbWlub3IpCi0KLSAgIENvbXBvc2UgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuCi0KLQotLi4gZnVuY3Rpb246OiBta2RpcihwYXRoWywgbW9kZV0pCi0KLSAgIENyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLiBUaGUgZGVmYXVsdCAqbW9kZSoKLSAgIGlzIGBgMG83NzdgYCAob2N0YWwpLiAgT24gc29tZSBzeXN0ZW1zLCAqbW9kZSogaXMgaWdub3JlZC4gIFdoZXJlIGl0IGlzIHVzZWQsCi0gICB0aGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgSWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5Ci0gICBleGlzdHMsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KIAogICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzOyBzZWUgdGhlCiAgICA6bW9kOmB0ZW1wZmlsZWAgbW9kdWxlJ3MgOmZ1bmM6YHRlbXBmaWxlLm1rZHRlbXBgIGZ1bmN0aW9uLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogbWFrZWRpcnMocGF0aCwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpCiAKQEAgLTEyMDIsNiArMTU3NCw2MCBAQAogICAgICAgVGhlICpleGlzdF9vayogcGFyYW1ldGVyLgogCiAKKy4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKQorCisgICBDcmVhdGUgYSBGSUZPIChhIG5hbWVkIHBpcGUpIG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouCisgICBUaGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0IGZyb20gdGhlIG1vZGUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKworICAgRklGT3MgYXJlIHBpcGVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGxpa2UgcmVndWxhciBmaWxlcy4gIEZJRk9zIGV4aXN0IHVudGlsIHRoZXkKKyAgIGFyZSBkZWxldGVkIChmb3IgZXhhbXBsZSB3aXRoIDpmdW5jOmBvcy51bmxpbmtgKS4gR2VuZXJhbGx5LCBGSUZPcyBhcmUgdXNlZCBhcworICAgcmVuZGV6dm91cyBiZXR3ZWVuICJjbGllbnQiIGFuZCAic2VydmVyIiB0eXBlIHByb2Nlc3NlczogdGhlIHNlcnZlciBvcGVucyB0aGUKKyAgIEZJRk8gZm9yIHJlYWRpbmcsIGFuZCB0aGUgY2xpZW50IG9wZW5zIGl0IGZvciB3cml0aW5nLiAgTm90ZSB0aGF0IDpmdW5jOmBta2ZpZm9gCisgICBkb2Vzbid0IG9wZW4gdGhlIEZJRk8gLS0tIGl0IGp1c3QgY3JlYXRlcyB0aGUgcmVuZGV6dm91cyBwb2ludC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKworCisuLiBmdW5jdGlvbjo6IG1rbm9kKGZpbGVuYW1lLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIENyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKSBuYW1lZAorICAgKmZpbGVuYW1lKi4gKm1vZGUqIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZSB0eXBlIG9mIG5vZGUKKyAgIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZiBgYHN0YXQuU19JRlJFR2BgLAorICAgYGBzdGF0LlNfSUZDSFJgYCwgYGBzdGF0LlNfSUZCTEtgYCwgYW5kIGBgc3RhdC5TX0lGSUZPYGAgKHRob3NlIGNvbnN0YW50cyBhcmUKKyAgIGF2YWlsYWJsZSBpbiA6bW9kOmBzdGF0YCkuICBGb3IgYGBzdGF0LlNfSUZDSFJgYCBhbmQgYGBzdGF0LlNfSUZCTEtgYCwKKyAgICpkZXZpY2UqIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKKyAgIDpmdW5jOmBvcy5tYWtlZGV2YCksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCisKKy4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQorCisgICBFeHRyYWN0IHRoZSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKKyAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KKworCisuLiBmdW5jdGlvbjo6IG1pbm9yKGRldmljZSkKKworICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCisgICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCisKKworLi4gZnVuY3Rpb246OiBtYWtlZGV2KG1ham9yLCBtaW5vcikKKworICAgQ29tcG9zZSBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KKworCiAuLiBmdW5jdGlvbjo6IHBhdGhjb25mKHBhdGgsIG5hbWUpCiAKICAgIFJldHVybiBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZWxldmFudCB0byBhIG5hbWVkIGZpbGUuICpuYW1lKgpAQCAtMTIxNyw2ICsxNjQzLDkgQEAKICAgIGluY2x1ZGVkIGluIGBgcGF0aGNvbmZfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yCisgICA8cGF0aF9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIApAQCAtMTIyNCwzOCArMTY1Myw1MyBAQAogCiAgICBEaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMgYWNjZXB0ZWQgYnkgOmZ1bmM6YHBhdGhjb25mYCBhbmQgOmZ1bmM6YGZwYXRoY29uZmAgdG8KICAgIHRoZSBpbnRlZ2VyIHZhbHVlcyBkZWZpbmVkIGZvciB0aG9zZSBuYW1lcyBieSB0aGUgaG9zdCBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcwotICAgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXQgb2YgbmFtZXMga25vd24gdG8gdGhlIHN5c3RlbS4gQXZhaWxhYmlsaXR5OgotICAgVW5peC4KKyAgIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V0IG9mIG5hbWVzIGtub3duIHRvIHRoZSBzeXN0ZW0uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlYWRsaW5rKHBhdGgpCisuLiBmdW5jdGlvbjo6IHJlYWRsaW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4gIFRoZQotICAgcmVzdWx0IG1heSBiZSBlaXRoZXIgYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aG5hbWU7IGlmIGl0IGlzIHJlbGF0aXZlLCBpdCBtYXkKLSAgIGJlIGNvbnZlcnRlZCB0byBhbiBhYnNvbHV0ZSBwYXRobmFtZSB1c2luZyBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksCi0gICByZXN1bHQpYGAuCisgICByZXN1bHQgbWF5IGJlIGVpdGhlciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRobmFtZTsgaWYgaXQgaXMgcmVsYXRpdmUsIGl0CisgICBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nCisgICBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksIHJlc3VsdClgYC4KIAogICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKICAgIGFuZCB0aGUgY2FsbCBtYXkgcmFpc2UgYW4gVW5pY29kZURlY29kZUVycm9yLiBJZiB0aGUgKnBhdGgqIGlzIGEgYnl0ZXMKICAgIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgpCisKKy4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgSWYgKnBhdGgqIGlzIGEgZGlyZWN0b3J5LCA6ZXhjOmBPU0Vycm9yYCBpcwotICAgcmFpc2VkOyBzZWUgOmZ1bmM6YHJtZGlyYCBiZWxvdyB0byByZW1vdmUgYSBkaXJlY3RvcnkuICBUaGlzIGlzIGlkZW50aWNhbCB0bwotICAgdGhlIDpmdW5jOmB1bmxpbmtgIGZ1bmN0aW9uIGRvY3VtZW50ZWQgYmVsb3cuICBPbiBXaW5kb3dzLCBhdHRlbXB0aW5nIHRvCi0gICByZW1vdmUgYSBmaWxlIHRoYXQgaXMgaW4gdXNlIGNhdXNlcyBhbiBleGNlcHRpb24gdG8gYmUgcmFpc2VkOyBvbiBVbml4LCB0aGUKLSAgIGRpcmVjdG9yeSBlbnRyeSBpcyByZW1vdmVkIGJ1dCB0aGUgc3RvcmFnZSBhbGxvY2F0ZWQgdG8gdGhlIGZpbGUgaXMgbm90IG1hZGUKLSAgIGF2YWlsYWJsZSB1bnRpbCB0aGUgb3JpZ2luYWwgZmlsZSBpcyBubyBsb25nZXIgaW4gdXNlLgorICAgcmFpc2VkLiAgVXNlIDpmdW5jOmBybWRpcmAgdG8gcmVtb3ZlIGRpcmVjdG9yaWVzLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCisgICBPbiBXaW5kb3dzLCBhdHRlbXB0aW5nIHRvIHJlbW92ZSBhIGZpbGUgdGhhdCBpcyBpbiB1c2UgY2F1c2VzIGFuIGV4Y2VwdGlvbiB0bworICAgYmUgcmFpc2VkOyBvbiBVbml4LCB0aGUgZGlyZWN0b3J5IGVudHJ5IGlzIHJlbW92ZWQgYnV0IHRoZSBzdG9yYWdlIGFsbG9jYXRlZAorICAgdG8gdGhlIGZpbGUgaXMgbm90IG1hZGUgYXZhaWxhYmxlIHVudGlsIHRoZSBvcmlnaW5hbCBmaWxlIGlzIG5vIGxvbmdlciBpbiB1c2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIDpmdW5jOmB1bmxpbmtgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlZGlycyhwYXRoKQogCkBAIC0xMjcxLDcgKzE3MTUsNyBAQAogICAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAKIAotLi4gZnVuY3Rpb246OiByZW5hbWUoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKICAgIFJlbmFtZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKnNyYyogdG8gKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwKICAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgT24gVW5peCwgaWYgKmRzdCogZXhpc3RzIGFuZCBpcyBhIGZpbGUsIGl0IHdpbGwKQEAgLTEyNzksMTEgKzE3MjMsMTggQEAKICAgIFVuaXggZmxhdm9ycyBpZiAqc3JjKiBhbmQgKmRzdCogYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcy4gIElmIHN1Y2Nlc3NmdWwsCiAgICB0aGUgcmVuYW1pbmcgd2lsbCBiZSBhbiBhdG9taWMgb3BlcmF0aW9uICh0aGlzIGlzIGEgUE9TSVggcmVxdWlyZW1lbnQpLiAgT24KICAgIFdpbmRvd3MsIGlmICpkc3QqIGFscmVhZHkgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBldmVuIGlmIGl0IGlzIGEKLSAgIGZpbGU7IHRoZXJlIG1heSBiZSBubyB3YXkgdG8gaW1wbGVtZW50IGFuIGF0b21pYyByZW5hbWUgd2hlbiAqZHN0KiBuYW1lcyBhbgotICAgZXhpc3RpbmcgZmlsZS4KKyAgIGZpbGUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyAqc3JjX2Rpcl9mZCogYW5kL29yICpkc3RfZGlyX2ZkKiB0bworICAgc3VwcGx5IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAuCisKKyAgIElmIHlvdSB3YW50IGNyb3NzLXBsYXRmb3JtIG92ZXJ3cml0aW5nIG9mIHRoZSBkZXN0aW5hdGlvbiwgdXNlIDpmdW5jOmByZXBsYWNlYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWVzKG9sZCwgbmV3KQogCkBAIC0xMjk4LDIyICsxNzQ5LDQ2IEBACiAgICAgICBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBsZWFmIGRpcmVjdG9yeSBvciBmaWxlLgogCiAKLS4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCkKKy4uIGZ1bmN0aW9uOjogcmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCisKKyAgIFJlbmFtZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKnNyYyogdG8gKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwKKyAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgSWYgKmRzdCogZXhpc3RzIGFuZCBpcyBhIGZpbGUsIGl0IHdpbGwKKyAgIGJlIHJlcGxhY2VkIHNpbGVudGx5IGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uLiAgVGhlIG9wZXJhdGlvbiBtYXkgZmFpbAorICAgaWYgKnNyYyogYW5kICpkc3QqIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMuICBJZiBzdWNjZXNzZnVsLAorICAgdGhlIHJlbmFtaW5nIHdpbGwgYmUgYW4gYXRvbWljIG9wZXJhdGlvbiAodGhpcyBpcyBhIFBPU0lYIHJlcXVpcmVtZW50KS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGRpcmVjdG9yeSAqcGF0aCouICBPbmx5IHdvcmtzIHdoZW4gdGhlIGRpcmVjdG9yeSBpcwogICAgZW1wdHksIG90aGVyd2lzZSwgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLiAgSW4gb3JkZXIgdG8gcmVtb3ZlIHdob2xlCiAgICBkaXJlY3RvcnkgdHJlZXMsIDpmdW5jOmBzaHV0aWwucm10cmVlYCBjYW4gYmUgdXNlZC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogc3RhdChwYXRoKQorCisuLiBmdW5jdGlvbjo6IHN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGEgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCi0gICAoVGhpcyBmdW5jdGlvbiBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayB1c2UgOmZ1bmM6YGxzdGF0YC4pCisgICAqcGF0aCogbWF5IGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAoVGhpcyBmdW5jdGlvbiBub3JtYWxseSBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayBhZGQgdGhlIGFyZ3VtZW50CisgICBgYGZvbGxvd19zeW1saW5rcz1GYWxzZWBgLCBvciB1c2UgOmZ1bmM6YGxzdGF0YC4pCiAKLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdob3NlIGF0dHJpYnV0ZXMgY29ycmVzcG9uZCB0byB0aGUgbWVtYmVycwotICAgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgbmFtZWx5OgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2hvc2UgYXR0cmlidXRlcyBjb3JyZXNwb25kIHJvdWdobHkKKyAgIHRvIHRoZSBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIG5hbWVseToKIAogICAgKiA6YXR0cjpgc3RfbW9kZWAgLSBwcm90ZWN0aW9uIGJpdHMsCiAgICAqIDphdHRyOmBzdF9pbm9gIC0gaW5vZGUgbnVtYmVyLApAQCAtMTMyMiwxMCArMTc5NywxOCBAQAogICAgKiA6YXR0cjpgc3RfdWlkYCAtIHVzZXIgaWQgb2Ygb3duZXIsCiAgICAqIDphdHRyOmBzdF9naWRgIC0gZ3JvdXAgaWQgb2Ygb3duZXIsCiAgICAqIDphdHRyOmBzdF9zaXplYCAtIHNpemUgb2YgZmlsZSwgaW4gYnl0ZXMsCi0gICAqIDphdHRyOmBzdF9hdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcywKLSAgICogOmF0dHI6YHN0X210aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24sCi0gICAqIDphdHRyOmBzdF9jdGltZWAgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEgY2hhbmdlIG9uCi0gICAgIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MpCisgICAqIDphdHRyOmBzdF9hdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcyBleHByZXNzZWQgaW4gc2Vjb25kcywKKyAgICogOmF0dHI6YHN0X210aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24KKyAgICAgZXhwcmVzc2VkIGluIHNlY29uZHMsCisgICAqIDphdHRyOmBzdF9jdGltZWAgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEKKyAgICAgY2hhbmdlIG9uIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MsIGV4cHJlc3NlZCBpbiBzZWNvbmRzCisgICAqIDphdHRyOmBzdF9hdGltZV9uc2AgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcworICAgICBleHByZXNzZWQgaW4gbmFub3NlY29uZHMgYXMgYW4gaW50ZWdlciwKKyAgICogOmF0dHI6YHN0X210aW1lX25zYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24KKyAgICAgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzIGFzIGFuIGludGVnZXIsCisgICAqIDphdHRyOmBzdF9jdGltZV9uc2AgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEKKyAgICAgY2hhbmdlIG9uIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MsCisgICAgIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcyBhcyBhbiBpbnRlZ2VyCiAKICAgIE9uIHNvbWUgVW5peCBzeXN0ZW1zIChzdWNoIGFzIExpbnV4KSwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIG1heSBhbHNvIGJlCiAgICBhdmFpbGFibGU6CkBAIC0xMzU1LDEzICsxODM4LDI1IEBACiAgICAgICBvciBGQVQzMiBmaWxlIHN5c3RlbXMsIDphdHRyOmBzdF9tdGltZWAgaGFzIDItc2Vjb25kIHJlc29sdXRpb24sIGFuZAogICAgICAgOmF0dHI6YHN0X2F0aW1lYCBoYXMgb25seSAxLWRheSByZXNvbHV0aW9uLiAgU2VlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbQogICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgICAgIFNpbWlsYXJseSwgYWx0aG91Z2ggOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwKKyAgICAgIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgIGFyZSBhbHdheXMgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzLCBtYW55CisgICAgICBzeXN0ZW1zIGRvIG5vdCBwcm92aWRlIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgT24gc3lzdGVtcyB0aGF0IGRvCisgICAgICBwcm92aWRlIG5hbm9zZWNvbmQgcHJlY2lzaW9uLCB0aGUgZmxvYXRpbmctcG9pbnQgb2JqZWN0IHVzZWQgdG8KKyAgICAgIHN0b3JlIDphdHRyOmBzdF9hdGltZWAsIDphdHRyOmBzdF9tdGltZWAsIGFuZCA6YXR0cjpgc3RfY3RpbWVgCisgICAgICBjYW5ub3QgcHJlc2VydmUgYWxsIG9mIGl0LCBhbmQgYXMgc3VjaCB3aWxsIGJlIHNsaWdodGx5IGluZXhhY3QuCisgICAgICBJZiB5b3UgbmVlZCB0aGUgZXhhY3QgdGltZXN0YW1wcyB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UKKyAgICAgIDphdHRyOmBzdF9hdGltZV9uc2AsIDphdHRyOmBzdF9tdGltZV9uc2AsIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgLgogCi0gICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgfm9zLnN0YXRgIGlzIGFsc28gYWNjZXNzaWJsZQotICAgYXMgYSB0dXBsZSBvZiBhdCBsZWFzdCAxMCBpbnRlZ2VycyBnaXZpbmcgdGhlIG1vc3QgaW1wb3J0YW50IChhbmQgcG9ydGFibGUpCi0gICBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIGluIHRoZSBvcmRlciA6YXR0cjpgc3RfbW9kZWAsCi0gICA6YXR0cjpgc3RfaW5vYCwgOmF0dHI6YHN0X2RldmAsIDphdHRyOmBzdF9ubGlua2AsIDphdHRyOmBzdF91aWRgLAotICAgOmF0dHI6YHN0X2dpZGAsIDphdHRyOmBzdF9zaXplYCwgOmF0dHI6YHN0X2F0aW1lYCwgOmF0dHI6YHN0X210aW1lYCwKLSAgIDphdHRyOmBzdF9jdGltZWAuIE1vcmUgaXRlbXMgbWF5IGJlIGFkZGVkIGF0IHRoZSBlbmQgYnkgc29tZSBpbXBsZW1lbnRhdGlvbnMuCisgICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgfm9zLnN0YXRgIGlzIGFsc28KKyAgIGFjY2Vzc2libGUgYXMgYSB0dXBsZSBvZiBhdCBsZWFzdCAxMCBpbnRlZ2VycyBnaXZpbmcgdGhlIG1vc3QgaW1wb3J0YW50IChhbmQKKyAgIHBvcnRhYmxlKSBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIGluIHRoZSBvcmRlcgorICAgOmF0dHI6YHN0X21vZGVgLCA6YXR0cjpgc3RfaW5vYCwgOmF0dHI6YHN0X2RldmAsIDphdHRyOmBzdF9ubGlua2AsCisgICA6YXR0cjpgc3RfdWlkYCwgOmF0dHI6YHN0X2dpZGAsIDphdHRyOmBzdF9zaXplYCwgOmF0dHI6YHN0X2F0aW1lYCwKKyAgIDphdHRyOmBzdF9tdGltZWAsIDphdHRyOmBzdF9jdGltZWAuIE1vcmUgaXRlbXMgbWF5IGJlIGFkZGVkIGF0IHRoZSBlbmQgYnkKKyAgIHNvbWUgaW1wbGVtZW50YXRpb25zLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RhdAogCkBAIC0xMzgyLDYgKzE4NzcsMTIgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLAorICAgICAgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIGEgcGF0aCwKKyAgICAgIGFuZCB0aGUgOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwKKyAgICAgIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgIG1lbWJlcnMuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0X2Zsb2F0X3RpbWVzKFtuZXd2YWx1ZV0pCiAKQEAgLTE0MDcsNiArMTkwOCw4IEBACiAgICBhcmUgcHJvY2Vzc2VkLCB0aGlzIGFwcGxpY2F0aW9uIHNob3VsZCB0dXJuIHRoZSBmZWF0dXJlIG9mZiB1bnRpbCB0aGUgbGlicmFyeQogICAgaGFzIGJlZW4gY29ycmVjdGVkLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiBzdGF0dmZzKHBhdGgpCiAKQEAgLTE0MjIsMzQgKzE5MjUsMTE4IEBACiAgICByZWFkLW9ubHksIGFuZCBpZiA6Y29uc3Q6YFNUX05PU1VJRGAgaXMgc2V0LCB0aGUgc2VtYW50aWNzIG9mCiAgICBzZXR1aWQvc2V0Z2lkIGJpdHMgYXJlIGRpc2FibGVkIG9yIG5vdCBzdXBwb3J0ZWQuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgogCi0uLiBmdW5jdGlvbjo6IHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUpCi0gICAgICAgICAgICAgIHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpCisKKy4uIGRhdGE6OiBzdXBwb3J0c19kaXJfZmQKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGVpciAqZGlyX2ZkKiBwYXJhbWV0ZXIuICBEaWZmZXJlbnQgcGxhdGZvcm1zCisgICBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4gb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbiBvbmUgbWlnaHQKKyAgIGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydAorICAgKmRpcl9mZCogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uCisgICBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHVzZSBvZiBpdHMgKmRpcl9mZCoKKyAgIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19kaXJfZmRgYC4gIEFzIGFuIGV4YW1wbGUsCisgICB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YG9zLnN0YXRgCisgICBpcyBsb2NhbGx5IGF2YWlsYWJsZTo6CisKKyAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2Rpcl9mZAorCisgICBDdXJyZW50bHkgKmRpcl9mZCogcGFyYW1ldGVycyBvbmx5IHdvcmsgb24gVW5peCBwbGF0Zm9ybXM7IG5vbmUgb2YgdGhlbSB3b3JrCisgICBvbiBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZWZmZWN0aXZlX2lkcworCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZSAqZWZmZWN0aXZlX2lkcyogcGFyYW1ldGVyIGZvcgorICAgOmZ1bmM6YG9zLmFjY2Vzc2AuICBJZiB0aGUgbG9jYWwgcGxhdGZvcm0gc3VwcG9ydHMgaXQsIHRoZSBjb2xsZWN0aW9uIHdpbGwKKyAgIGNvbnRhaW4gOmZ1bmM6YG9zLmFjY2Vzc2AsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGVtcHR5LgorCisgICBUbyBjaGVjayB3aGV0aGVyIHlvdSBjYW4gdXNlIHRoZSAqZWZmZWN0aXZlX2lkcyogcGFyYW1ldGVyIGZvcgorICAgOmZ1bmM6YG9zLmFjY2Vzc2AsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uIGBgc3VwcG9ydHNfZGlyX2ZkYGAsIGxpa2Ugc286OgorCisgICAgICAgb3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMKKworICAgQ3VycmVudGx5ICplZmZlY3RpdmVfaWRzKiBvbmx5IHdvcmtzIG9uIFVuaXggcGxhdGZvcm1zOyBpdCBkb2VzIG5vdCB3b3JrIG9uCisgICBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZmQKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHNwZWNpZnlpbmcgdGhlaXIgKnBhdGgqIHBhcmFtZXRlciBhcyBhbiBvcGVuIGZpbGUKKyAgIGRlc2NyaXB0b3IuICBEaWZmZXJlbnQgcGxhdGZvcm1zIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbgorICAgb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbiBvbmUgbWlnaHQgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvcgorICAgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydCAqZmQqIGFsd2F5cyBhbGxvdyBzcGVjaWZ5aW5nCisgICB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbm90CisgICBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUKKyAgIGRlc2NyaXB0b3IgZm9yIGl0cyAqcGF0aCogcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbgorICAgYGBzdXBwb3J0c19mZGBgLiBBcyBhbiBleGFtcGxlLCB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyCisgICA6ZnVuYzpgb3MuY2hkaXJgIGFjY2VwdHMgb3BlbiBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gY2FsbGVkIG9uIHlvdXIgbG9jYWwKKyAgIHBsYXRmb3JtOjoKKworICAgICAgIG9zLmNoZGlyIGluIG9zLnN1cHBvcnRzX2ZkCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGVpciAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXIuICBEaWZmZXJlbnQKKyAgIHBsYXRmb3JtcyBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4gb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbgorICAgb25lIG1pZ2h0IGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQKKyAgIHN1cHBvcnQgKmZvbGxvd19zeW1saW5rcyogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwKKyAgIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHVzZSBvZiBpdHMgKmZvbGxvd19zeW1saW5rcyoKKyAgIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYC4gIEFzIGFuCisgICBleGFtcGxlLCB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXIKKyAgIG9mIDpmdW5jOmBvcy5zdGF0YCBpcyBsb2NhbGx5IGF2YWlsYWJsZTo6CisKKyAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKQogCiAgICBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvICpzb3VyY2UqIG5hbWVkICpsaW5rX25hbWUqLgogCi0gICBPbiBXaW5kb3dzLCBzeW1saW5rIHZlcnNpb24gdGFrZXMgYW4gYWRkaXRpb25hbCBvcHRpb25hbCBwYXJhbWV0ZXIsCi0gICAqdGFyZ2V0X2lzX2RpcmVjdG9yeSosIHdoaWNoIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4KLQotICAgT24gV2luZG93cywgYSBzeW1saW5rIHJlcHJlc2VudHMgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LCBhbmQgZG9lcyBub3QgbW9ycGggdG8KLSAgIHRoZSB0YXJnZXQgZHluYW1pY2FsbHkuICBJZiAqdGFyZ2V0X2lzX2RpcmVjdG9yeSogaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGUKLSAgIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGFzIGEgZGlyZWN0b3J5IHN5bWxpbmssIG90aGVyd2lzZSBhcyBhIGZpbGUgc3ltbGluawotICAgKHRoZSBkZWZhdWx0KS4KKyAgIE9uIFdpbmRvd3MsIGEgc3ltbGluayByZXByZXNlbnRzIGVpdGhlciBhIGZpbGUgb3IgYSBkaXJlY3RvcnksIGFuZCBkb2VzIG5vdAorICAgbW9ycGggdG8gdGhlIHRhcmdldCBkeW5hbWljYWxseS4gIElmICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBzZXQgdG8gYGBUcnVlYGAsCisgICB0aGUgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBkaXJlY3Rvcnkgc3ltbGluaywgb3RoZXJ3aXNlIGFzIGEgZmlsZSBzeW1saW5rCisgICAodGhlIGRlZmF1bHQpLiAgT24gbm9uLVdpbmRvdyBwbGF0Zm9ybXMsICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBpZ25vcmVkLgogCiAgICBTeW1ib2xpYyBsaW5rIHN1cHBvcnQgd2FzIGludHJvZHVjZWQgaW4gV2luZG93cyA2LjAgKFZpc3RhKS4gIDpmdW5jOmBzeW1saW5rYAogICAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIG9uIFdpbmRvd3MgdmVyc2lvbnMgZWFybGllciB0aGFuIDYuMC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgLi4gbm90ZTo6CiAKLSAgICAgIFRoZSAqU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UqIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseQotICAgICAgY3JlYXRlIHN5bWxpbmtzLiBUaGlzIHByaXZpbGVnZSBpcyBub3QgdHlwaWNhbGx5IGdyYW50ZWQgdG8gcmVndWxhcgotICAgICAgdXNlcnMgYnV0IGlzIGF2YWlsYWJsZSB0byBhY2NvdW50cyB3aGljaCBjYW4gZXNjYWxhdGUgcHJpdmlsZWdlcyB0byB0aGUKLSAgICAgIGFkbWluaXN0cmF0b3IgbGV2ZWwuIEVpdGhlciBvYnRhaW5pbmcgdGhlIHByaXZpbGVnZSBvciBydW5uaW5nIHlvdXIKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSAqU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UqIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvCisgICAgICBzdWNjZXNzZnVsbHkgY3JlYXRlIHN5bWxpbmtzLiBUaGlzIHByaXZpbGVnZSBpcyBub3QgdHlwaWNhbGx5IGdyYW50ZWQgdG8KKyAgICAgIHJlZ3VsYXIgdXNlcnMgYnV0IGlzIGF2YWlsYWJsZSB0byBhY2NvdW50cyB3aGljaCBjYW4gZXNjYWxhdGUgcHJpdmlsZWdlcworICAgICAgdG8gdGhlIGFkbWluaXN0cmF0b3IgbGV2ZWwuIEVpdGhlciBvYnRhaW5pbmcgdGhlIHByaXZpbGVnZSBvciBydW5uaW5nIHlvdXIKICAgICAgIGFwcGxpY2F0aW9uIGFzIGFuIGFkbWluaXN0cmF0b3IgYXJlIHdheXMgdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBzeW1saW5rcy4KIAogICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBhbiB1bnByaXZpbGVnZWQKQEAgLTE0NjAsMzEgKzIwNDcsODUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKKyAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAotLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCkKIAotICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIFRoaXMgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMKLSAgIDpmdW5jOmByZW1vdmVgOyB0aGUgOmZ1bmM6YHVubGlua2AgbmFtZSBpcyBpdHMgdHJhZGl0aW9uYWwgVW5peAotICAgbmFtZS4KKy4uIGZ1bmN0aW9uOjogc3luYygpCisKKyAgIEZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHRydW5jYXRlKHBhdGgsIGxlbmd0aCkKKworICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byAqcGF0aCosIHNvIHRoYXQgaXQgaXMgYXQgbW9zdAorICAgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0bworICAgOmZ1bmM6YHJlbW92ZWA7IHRoZSBgYHVubGlua2BgIG5hbWUgaXMgaXRzIHRyYWRpdGlvbmFsIFVuaXgKKyAgIG5hbWUuICBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciA6ZnVuYzpgcmVtb3ZlYCBmb3IKKyAgIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCi0uLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzKQogCi0gICBTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpwYXRoKi4gSWYgKnRpbWVzKgotICAgaXMgYGBOb25lYGAsIHRoZW4gdGhlIGZpbGUncyBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIGFyZSBzZXQgdG8gdGhlIGN1cnJlbnQKLSAgIHRpbWUuIChUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gcnVubmluZyB0aGUgVW5peCBwcm9ncmFtIDpwcm9ncmFtOmB0b3VjaGAgb24KLSAgIHRoZSBwYXRoLikgIE90aGVyd2lzZSwgKnRpbWVzKiBtdXN0IGJlIGEgMi10dXBsZSBvZiBudW1iZXJzLCBvZiB0aGUgZm9ybQotICAgYGAoYXRpbWUsIG10aW1lKWBgIHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzLAotICAgcmVzcGVjdGl2ZWx5LiBXaGV0aGVyIGEgZGlyZWN0b3J5IGNhbiBiZSBnaXZlbiBmb3IgKnBhdGgqIGRlcGVuZHMgb24gd2hldGhlcgotICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW1wbGVtZW50cyBkaXJlY3RvcmllcyBhcyBmaWxlcyAoZm9yIGV4YW1wbGUsIFdpbmRvd3MKLSAgIGRvZXMgbm90KS4gIE5vdGUgdGhhdCB0aGUgZXhhY3QgdGltZXMgeW91IHNldCBoZXJlIG1heSBub3QgYmUgcmV0dXJuZWQgYnkgYQotICAgc3Vic2VxdWVudCA6ZnVuYzpgfm9zLnN0YXRgIGNhbGwsIGRlcGVuZGluZyBvbiB0aGUgcmVzb2x1dGlvbiB3aXRoIHdoaWNoIHlvdXIKLSAgIG9wZXJhdGluZyBzeXN0ZW0gcmVjb3JkcyBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lczsgc2VlIDpmdW5jOmB+b3Muc3RhdGAuCisuLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqcGF0aCouCisKKyAgIDpmdW5jOmB1dGltZWAgdGFrZXMgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsICp0aW1lcyogYW5kICpucyouCisgICBUaGVzZSBzcGVjaWZ5IHRoZSB0aW1lcyBzZXQgb24gKnBhdGgqIGFuZCBhcmUgdXNlZCBhcyBmb2xsb3dzOgorCisgICAtIElmICpucyogaXMgbm90IGBgTm9uZWBgLAorICAgICBpdCBtdXN0IGJlIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChhdGltZV9ucywgbXRpbWVfbnMpYGAKKyAgICAgd2hlcmUgZWFjaCBtZW1iZXIgaXMgYW4gaW50IGV4cHJlc3NpbmcgbmFub3NlY29uZHMuCisgICAtIElmICp0aW1lcyogaXMgbm90IGBgTm9uZWBgLAorICAgICBpdCBtdXN0IGJlIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChhdGltZSwgbXRpbWUpYGAKKyAgICAgd2hlcmUgZWFjaCBtZW1iZXIgaXMgYW4gaW50IG9yIGZsb2F0IGV4cHJlc3Npbmcgc2Vjb25kcy4KKyAgIC0gSWYgKnRpbWVzKiBhbmQgKm5zKiBhcmUgYm90aCBgYE5vbmVgYCwKKyAgICAgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgYGBucz0oYXRpbWVfbnMsIG10aW1lX25zKWBgCisgICAgIHdoZXJlIGJvdGggdGltZXMgYXJlIHRoZSBjdXJyZW50IHRpbWUuCisgICAgIChUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gcnVubmluZyB0aGUgVW5peCBwcm9ncmFtCisgICAgIDpwcm9ncmFtOmB0b3VjaGAgb24gKnBhdGgqLikKKworICAgSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeSB0dXBsZXMgZm9yIGJvdGggKnRpbWVzKiBhbmQgKm5zKi4KKworICAgV2hldGhlciBhIGRpcmVjdG9yeSBjYW4gYmUgZ2l2ZW4gZm9yICpwYXRoKgorICAgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGltcGxlbWVudHMgZGlyZWN0b3JpZXMgYXMgZmlsZXMKKyAgIChmb3IgZXhhbXBsZSwgV2luZG93cyBkb2VzIG5vdCkuICBOb3RlIHRoYXQgdGhlIGV4YWN0IHRpbWVzIHlvdSBzZXQgaGVyZSBtYXkKKyAgIG5vdCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnQgOmZ1bmM6YH5vcy5zdGF0YCBjYWxsLCBkZXBlbmRpbmcgb24gdGhlCisgICByZXNvbHV0aW9uIHdpdGggd2hpY2ggeW91ciBvcGVyYXRpbmcgc3lzdGVtIHJlY29yZHMgYWNjZXNzIGFuZCBtb2RpZmljYXRpb24KKyAgIHRpbWVzOyBzZWUgOmZ1bmM6YH5vcy5zdGF0YC4gIFRoZSBiZXN0IHdheSB0byBwcmVzZXJ2ZSBleGFjdCB0aW1lcyBpcyB0bworICAgdXNlIHRoZSAqc3RfYXRpbWVfbnMqIGFuZCAqc3RfbXRpbWVfbnMqIGZpZWxkcyBmcm9tIHRoZSA6ZnVuYzpgb3Muc3RhdGAKKyAgIHJlc3VsdCBvYmplY3Qgd2l0aCB0aGUgKm5zKiBwYXJhbWV0ZXIgdG8gYHV0aW1lYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCisgICAgICBhbmQgdGhlICpkaXJfZmQqLCAqZm9sbG93X3N5bWxpbmtzKiwgYW5kICpucyogcGFyYW1ldGVycy4KKwogCiAuLiBmdW5jdGlvbjo6IHdhbGsodG9wLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgZm9sbG93bGlua3M9RmFsc2UpCiAKQEAgLTE1MzEsOSArMjE3Miw5IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBCZSBhd2FyZSB0aGF0IHNldHRpbmcgKmZvbGxvd2xpbmtzKiB0byBgYFRydWVgYCBjYW4gbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24gaWYgYQotICAgICAgbGluayBwb2ludHMgdG8gYSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0c2VsZi4gOmZ1bmM6YHdhbGtgIGRvZXMgbm90IGtlZXAgdHJhY2sgb2YKLSAgICAgIHRoZSBkaXJlY3RvcmllcyBpdCB2aXNpdGVkIGFscmVhZHkuCisgICAgICBCZSBhd2FyZSB0aGF0IHNldHRpbmcgKmZvbGxvd2xpbmtzKiB0byBgYFRydWVgYCBjYW4gbGVhZCB0byBpbmZpbml0ZQorICAgICAgcmVjdXJzaW9uIGlmIGEgbGluayBwb2ludHMgdG8gYSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0c2VsZi4gOmZ1bmM6YHdhbGtgCisgICAgICBkb2VzIG5vdCBrZWVwIHRyYWNrIG9mIHRoZSBkaXJlY3RvcmllcyBpdCB2aXNpdGVkIGFscmVhZHkuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNTY5LDYgKzIyMTAsMTM3IEBACiAgICAgICAgICAgICAgIG9zLnJtZGlyKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKIAogCisuLiBmdW5jdGlvbjo6IGZ3YWxrKHRvcD0nLicsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKQorCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IGRpcmVjdG9yeTsgd2Fsa2luZworICAgICAgc2luZ2xlOiBkaXJlY3Rvcnk7IHRyYXZlcnNhbAorCisgICBUaGlzIGJlaGF2ZXMgZXhhY3RseSBsaWtlIDpmdW5jOmB3YWxrYCwgZXhjZXB0IHRoYXQgaXQgeWllbGRzIGEgNC10dXBsZQorICAgYGAoZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcywgZGlyZmQpYGAsIGFuZCBpdCBzdXBwb3J0cyBgYGRpcl9mZGBgLgorCisgICAqZGlycGF0aCosICpkaXJuYW1lcyogYW5kICpmaWxlbmFtZXMqIGFyZSBpZGVudGljYWwgdG8gOmZ1bmM6YHdhbGtgIG91dHB1dCwKKyAgIGFuZCAqZGlyZmQqIGlzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byB0aGUgZGlyZWN0b3J5ICpkaXJwYXRoKi4KKworICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgc3VwcG9ydHMgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLiAgTm90ZSBob3dldmVyCisgICB0aGF0LCB1bmxpa2Ugb3RoZXIgZnVuY3Rpb25zLCB0aGUgOmZ1bmM6YGZ3YWxrYCBkZWZhdWx0IHZhbHVlIGZvcgorICAgKmZvbGxvd19zeW1saW5rcyogaXMgYGBGYWxzZWBgLgorCisgICAuLiBub3RlOjoKKworICAgICAgU2luY2UgOmZ1bmM6YGZ3YWxrYCB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycywgdGhvc2UgYXJlIG9ubHkgdmFsaWQgdW50aWwKKyAgICAgIHRoZSBuZXh0IGl0ZXJhdGlvbiBzdGVwLCBzbyB5b3Ugc2hvdWxkIGR1cGxpY2F0ZSB0aGVtIChlLmcuIHdpdGgKKyAgICAgIDpmdW5jOmBkdXBgKSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gbG9uZ2VyLgorCisgICBUaGlzIGV4YW1wbGUgZGlzcGxheXMgdGhlIG51bWJlciBvZiBieXRlcyB0YWtlbiBieSBub24tZGlyZWN0b3J5IGZpbGVzIGluIGVhY2gKKyAgIGRpcmVjdG9yeSB1bmRlciB0aGUgc3RhcnRpbmcgZGlyZWN0b3J5LCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGxvb2sgdW5kZXIgYW55CisgICBDVlMgc3ViZGlyZWN0b3J5OjoKKworICAgICAgaW1wb3J0IG9zCisgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgorICAgICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyIsIGVuZD0iIikKKyAgICAgICAgICBwcmludChzdW0oW29zLnN0YXQobmFtZSwgZGlyX2ZkPXJvb3RmZCkuc3Rfc2l6ZSBmb3IgbmFtZSBpbiBmaWxlc10pLAorICAgICAgICAgICAgICAgIGVuZD0iIikKKyAgICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCisgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKKyAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcworCisgICBJbiB0aGUgbmV4dCBleGFtcGxlLCB3YWxraW5nIHRoZSB0cmVlIGJvdHRvbS11cCBpcyBlc3NlbnRpYWw6CisgICA6ZnVuYzpgcm1kaXJgIGRvZXNuJ3QgYWxsb3cgZGVsZXRpbmcgYSBkaXJlY3RvcnkgYmVmb3JlIHRoZSBkaXJlY3RvcnkgaXMKKyAgIGVtcHR5OjoKKworICAgICAgIyBEZWxldGUgZXZlcnl0aGluZyByZWFjaGFibGUgZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWVkIGluICJ0b3AiLAorICAgICAgIyBhc3N1bWluZyB0aGVyZSBhcmUgbm8gc3ltYm9saWMgbGlua3MuCisgICAgICAjIENBVVRJT046ICBUaGlzIGlzIGRhbmdlcm91cyEgIEZvciBleGFtcGxlLCBpZiB0b3AgPT0gJy8nLCBpdAorICAgICAgIyBjb3VsZCBkZWxldGUgYWxsIHlvdXIgZGlzayBmaWxlcy4KKyAgICAgIGltcG9ydCBvcworICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsodG9wLCB0b3Bkb3duPUZhbHNlKToKKyAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAgICAgb3Mucm1kaXIobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBhdmFpbGFibGUgb24gTGludXggb25seS4KKworLi4gZnVuY3Rpb246OiBnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmb3IKKyAgICpwYXRoKi4gKmF0dHJpYnV0ZSogY2FuIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgc3RyLCBpdCBpcyBlbmNvZGVkCisgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogbGlzdHhhdHRyKHBhdGg9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlcyBvbiAqcGF0aCouICBUaGUKKyAgIGF0dHJpYnV0ZXMgaW4gdGhlIGxpc3QgYXJlIHJlcHJlc2VudGVkIGFzIHN0cmluZ3MgZGVjb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4gIElmICpwYXRoKiBpcyBgYE5vbmVgYCwgOmZ1bmM6YGxpc3R4YXR0cmAgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50CisgICBkaXJlY3RvcnkuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KKyAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogc2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFNldCB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogb24gKnBhdGgqIHRvICp2YWx1ZSouCisgICAqYXR0cmlidXRlKiBtdXN0IGJlIGEgYnl0ZXMgb3Igc3RyIHdpdGggbm8gZW1iZWRkZWQgTlVMcy4gSWYgaXQgaXMgYSBzdHIsCisgICBpdCBpcyBlbmNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuICAqZmxhZ3MqIG1heSBiZQorICAgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIG9yIDpkYXRhOmBYQVRUUl9DUkVBVEVgLiBJZiA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgaXMKKyAgIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCBgYEVFWElTVFNgYCB3aWxsIGJlIHJhaXNlZC4KKyAgIElmIDpkYXRhOmBYQVRUUl9DUkVBVEVgIGlzIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzLCB0aGUKKyAgIGF0dHJpYnV0ZSB3aWxsIG5vdCBiZSBjcmVhdGVkIGFuZCBgYEVOT0RBVEFgYCB3aWxsIGJlIHJhaXNlZC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKKyAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KKworCisuLiBkYXRhOjogWEFUVFJfU0laRV9NQVgKKworICAgVGhlIG1heGltdW0gc2l6ZSB0aGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGNhbiBiZS4gQ3VycmVudGx5LCB0aGlzCisgICBpcyA2NCBraWxvYnl0ZXMgb24gTGludXguCisKKworLi4gZGF0YTo6IFhBVFRSX0NSRUFURQorCisgICBUaGlzIGlzIGEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSBmbGFncyBhcmd1bWVudCBpbiA6ZnVuYzpgc2V0eGF0dHJgLiBJdAorICAgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gbXVzdCBjcmVhdGUgYW4gYXR0cmlidXRlLgorCisKKy4uIGRhdGE6OiBYQVRUUl9SRVBMQUNFCisKKyAgIFRoaXMgaXMgYSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IGluIDpmdW5jOmBzZXR4YXR0cmAuIEl0CisgICBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBtdXN0IHJlcGxhY2UgYW4gZXhpc3RpbmcgYXR0cmlidXRlLgorCisKIC4uIF9vcy1wcm9jZXNzOgogCiBQcm9jZXNzIE1hbmFnZW1lbnQKQEAgLTE2NDIsOCArMjQxNCwxNiBAQAogICAgOmZ1bmM6YGV4ZWNscGAsIDpmdW5jOmBleGVjdmAsIGFuZCA6ZnVuYzpgZXhlY3ZwYCBhbGwgY2F1c2UgdGhlIG5ldyBwcm9jZXNzIHRvCiAgICBpbmhlcml0IHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLgogCisgICBGb3IgOmZ1bmM6YGV4ZWN2ZWAgb24gc29tZSBwbGF0Zm9ybXMsICpwYXRoKiBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbgorICAgZmlsZSBkZXNjcmlwdG9yLiAgVGhpcyBmdW5jdGlvbmFsaXR5IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm07CisgICB5b3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90IGl0IGlzIGF2YWlsYWJsZSB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgLgorICAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKgorICAgICAgZm9yIDpmdW5jOmBleGVjdmVgLgogCiAuLiBmdW5jdGlvbjo6IF9leGl0KG4pCiAKQEAgLTE4MzMsNiArMjYxMyw4IEBACiAgICB3aWxsIGJlIHNldCB0byAqc2lnKi4gVGhlIFdpbmRvd3MgdmVyc2lvbiBvZiA6ZnVuYzpga2lsbGAgYWRkaXRpb25hbGx5IHRha2VzCiAgICBwcm9jZXNzIGhhbmRsZXMgdG8gYmUga2lsbGVkLgogCisgICBTZWUgYWxzbyA6ZnVuYzpgc2lnbmFsLnB0aHJlYWRfa2lsbGAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgV2luZG93cyBzdXBwb3J0LgogCkBAIC0yMDIzLDE0ICsyODA1LDMwIEBACiAKIC4uIGZ1bmN0aW9uOjogdGltZXMoKQogCi0gICBSZXR1cm4gYSA1LXR1cGxlIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBhY2N1bXVsYXRlZCAocHJvY2Vzc29yCi0gICBvciBvdGhlcikgdGltZXMsIGluIHNlY29uZHMuICBUaGUgaXRlbXMgYXJlOiB1c2VyIHRpbWUsIHN5c3RlbSB0aW1lLAotICAgY2hpbGRyZW4ncyB1c2VyIHRpbWUsIGNoaWxkcmVuJ3Mgc3lzdGVtIHRpbWUsIGFuZCBlbGFwc2VkIHJlYWwgdGltZSBzaW5jZSBhCi0gICBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdCwgaW4gdGhhdCBvcmRlci4gIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQotICAgOm1hbnBhZ2U6YHRpbWVzKDIpYCBvciB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIFBsYXRmb3JtIEFQSSBkb2N1bWVudGF0aW9uLgotICAgT24gV2luZG93cywgb25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zIGFyZSBmaWxsZWQsIHRoZSBvdGhlcnMgYXJlIHplcm8uCisgICBSZXR1cm5zIHRoZSBjdXJyZW50IGdsb2JhbCBwcm9jZXNzIHRpbWVzLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBmaXZlIGF0dHJpYnV0ZXM6CiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cworICAgKiA6YXR0cjpgdXNlcmAgLSB1c2VyIHRpbWUKKyAgICogOmF0dHI6YHN5c3RlbWAgLSBzeXN0ZW0gdGltZQorICAgKiA6YXR0cjpgY2hpbGRyZW5fdXNlcmAgLSB1c2VyIHRpbWUgb2YgYWxsIGNoaWxkIHByb2Nlc3NlcworICAgKiA6YXR0cjpgY2hpbGRyZW5fc3lzdGVtYCAtIHN5c3RlbSB0aW1lIG9mIGFsbCBjaGlsZCBwcm9jZXNzZXMKKyAgICogOmF0dHI6YGVsYXBzZWRgIC0gZWxhcHNlZCByZWFsIHRpbWUgc2luY2UgYSBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdAorCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgb2JqZWN0IGFsc28gYmVoYXZlcyBsaWtlIGEgZml2ZS10dXBsZQorICAgY29udGFpbmluZyA6YXR0cjpgdXNlcmAsIDphdHRyOmBzeXN0ZW1gLCA6YXR0cjpgY2hpbGRyZW5fdXNlcmAsCisgICA6YXR0cjpgY2hpbGRyZW5fc3lzdGVtYCwgYW5kIDphdHRyOmBlbGFwc2VkYCBpbiB0aGF0IG9yZGVyLgorCisgICBTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKKyAgIDptYW5wYWdlOmB0aW1lcygyKWAgb3IgdGhlIGNvcnJlc3BvbmRpbmcgV2luZG93cyBQbGF0Zm9ybSBBUEkgZG9jdW1lbnRhdGlvbi4KKyAgIE9uIFdpbmRvd3MsIG9ubHkgOmF0dHI6YHVzZXJgIGFuZCA6YXR0cjpgc3lzdGVtYCBhcmUga25vd247IHRoZSBvdGhlcgorICAgYXR0cmlidXRlcyBhcmUgemVyby4KKyAgIE9uIE9TLzIsIG9ubHkgOmF0dHI6YGVsYXBzZWRgIGlzIGtub3duOyB0aGUgb3RoZXIgYXR0cmlidXRlcyBhcmUgemVyby4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSB0dXBsZS1saWtlIG9iamVjdAorICAgICAgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogd2FpdCgpCkBAIC0yMDQzLDYgKzI4NDEsNTggQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisuLiBmdW5jdGlvbjo6IHdhaXRpZChpZHR5cGUsIGlkLCBvcHRpb25zKQorCisgICBXYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuCisgICAqaWR0eXBlKiBjYW4gYmUgOmRhdGE6YFBfUElEYCwgOmRhdGE6YFBfUEdJRGAgb3IgOmRhdGE6YFBfQUxMYC4KKyAgICppZCogc3BlY2lmaWVzIHRoZSBwaWQgdG8gd2FpdCBvbi4KKyAgICpvcHRpb25zKiBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiA6ZGF0YTpgV0VYSVRFRGAsCisgICA6ZGF0YTpgV1NUT1BQRURgIG9yIDpkYXRhOmBXQ09OVElOVUVEYCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGgKKyAgIDpkYXRhOmBXTk9IQU5HYCBvciA6ZGF0YTpgV05PV0FJVGAuIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0CisgICByZXByZXNlbnRpbmcgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSA6Yzp0eXBlOmBzaWdpbmZvX3RgIHN0cnVjdHVyZSwgbmFtZWx5OgorICAgOmF0dHI6YHNpX3BpZGAsIDphdHRyOmBzaV91aWRgLCA6YXR0cjpgc2lfc2lnbm9gLCA6YXR0cjpgc2lfc3RhdHVzYCwKKyAgIDphdHRyOmBzaV9jb2RlYCBvciBgYE5vbmVgYCBpZiA6ZGF0YTpgV05PSEFOR2AgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmUgbm8KKyAgIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBQX1BJRAorICAgICAgICAgIFBfUEdJRAorICAgICAgICAgIFBfQUxMCisKKyAgIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIGZvciAqaWR0eXBlKiBpbiA6ZnVuYzpgd2FpdGlkYC4gVGhleSBhZmZlY3QKKyAgIGhvdyAqaWQqIGlzIGludGVycHJldGVkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogV0VYSVRFRAorICAgICAgICAgIFdTVE9QUEVECisgICAgICAgICAgV05PV0FJVAorCisgICBGbGFncyB0aGF0IGNhbiBiZSB1c2VkIGluICpvcHRpb25zKiBpbiA6ZnVuYzpgd2FpdGlkYCB0aGF0IHNwZWNpZnkgd2hhdAorICAgY2hpbGQgc2lnbmFsIHRvIHdhaXQgZm9yLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTERfRVhJVEVECisgICAgICAgICAgQ0xEX0RVTVBFRAorICAgICAgICAgIENMRF9UUkFQUEVECisgICAgICAgICAgQ0xEX0NPTlRJTlVFRAorCisgICBUaGVzZSBhcmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgOmF0dHI6YHNpX2NvZGVgIGluIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmB3YWl0aWRgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogd2FpdHBpZChwaWQsIG9wdGlvbnMpCiAKQEAgLTIxMDcsNyArMjk1Nyw3IEBACiAgICBUaGlzIG9wdGlvbiBjYXVzZXMgY2hpbGQgcHJvY2Vzc2VzIHRvIGJlIHJlcG9ydGVkIGlmIHRoZXkgaGF2ZSBiZWVuIGNvbnRpbnVlZAogICAgZnJvbSBhIGpvYiBjb250cm9sIHN0b3Agc2luY2UgdGhlaXIgc3RhdHVzIHdhcyBsYXN0IHJlcG9ydGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFNvbWUgVW5peCBzeXN0ZW1zLgorICAgQXZhaWxhYmlsaXR5OiBzb21lIFVuaXggc3lzdGVtcy4KIAogCiAuLiBkYXRhOjogV1VOVFJBQ0VECkBAIC0yMTg0LDYgKzMwMzQsMTI5IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorSW50ZXJmYWNlIHRvIHRoZSBzY2hlZHVsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIGZ1bmN0aW9ucyBjb250cm9sIGhvdyBhIHByb2Nlc3MgaXMgYWxsb2NhdGVkIENQVSB0aW1lIGJ5IHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4gVGhleSBhcmUgb25seSBhdmFpbGFibGUgb24gc29tZSBVbml4IHBsYXRmb3Jtcy4gRm9yIG1vcmUgZGV0YWlsZWQKK2luZm9ybWF0aW9uLCBjb25zdWx0IHlvdXIgVW5peCBtYW5wYWdlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBmb2xsb3dpbmcgc2NoZWR1bGluZyBwb2xpY2llcyBhcmUgZXhwb3NlZCBpZiB0aGV5IGFyZSBhIHN1cHBvcnRlZCBieSB0aGUKK29wZXJhdGluZyBzeXN0ZW0uCisKKy4uIGRhdGE6OiBTQ0hFRF9PVEhFUgorCisgICBUaGUgZGVmYXVsdCBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX0JBVENICisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBDUFUtaW50ZW5zaXZlIHByb2Nlc3NlcyB0aGF0IHRyaWVzIHRvIHByZXNlcnZlCisgICBpbnRlcmFjdGl2aXR5IG9uIHRoZSByZXN0IG9mIHRoZSBjb21wdXRlci4KKworLi4gZGF0YTo6IFNDSEVEX0lETEUKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIGV4dHJlbWVseSBsb3cgcHJpb3JpdHkgYmFja2dyb3VuZCB0YXNrcy4KKworLi4gZGF0YTo6IFNDSEVEX1NQT1JBRElDCisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBzcG9yYWRpYyBzZXJ2ZXIgcHJvZ3JhbXMuCisKKy4uIGRhdGE6OiBTQ0hFRF9GSUZPCisKKyAgIEEgRmlyc3QgSW4gRmlyc3QgT3V0IHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfUlIKKworICAgQSByb3VuZC1yb2JpbiBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX1JFU0VUX09OX0ZPUksKKworICAgVGhpcyBmbGFnIGNhbiBPUidlZCB3aXRoIGFueSBvdGhlciBzY2hlZHVsaW5nIHBvbGljeS4gV2hlbiBhIHByb2Nlc3Mgd2l0aAorICAgdGhpcyBmbGFnIHNldCBmb3JrcywgaXRzIGNoaWxkJ3Mgc2NoZWR1bGluZyBwb2xpY3kgYW5kIHByaW9yaXR5IGFyZSByZXNldCB0bworICAgdGhlIGRlZmF1bHQuCisKKworLi4gY2xhc3M6OiBzY2hlZF9wYXJhbShzY2hlZF9wcmlvcml0eSkKKworICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIHR1bmFibGUgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIHVzZWQgaW4KKyAgIDpmdW5jOmBzY2hlZF9zZXRwYXJhbWAsIDpmdW5jOmBzY2hlZF9zZXRzY2hlZHVsZXJgLCBhbmQKKyAgIDpmdW5jOmBzY2hlZF9nZXRwYXJhbWAuIEl0IGlzIGltbXV0YWJsZS4KKworICAgQXQgdGhlIG1vbWVudCwgdGhlcmUgaXMgb25seSBvbmUgcG9zc2libGUgcGFyYW1ldGVyOgorCisgICAuLiBhdHRyaWJ1dGU6OiBzY2hlZF9wcmlvcml0eQorCisgICAgICBUaGUgc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgYSBzY2hlZHVsaW5nIHBvbGljeS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KQorCisgICBHZXQgdGhlIG1pbmltdW0gcHJpb3JpdHkgdmFsdWUgZm9yICpwb2xpY3kqLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlCisgICBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMgYWJvdmUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSkKKworICAgR2V0IHRoZSBtYXhpbXVtIHByaW9yaXR5IHZhbHVlIGZvciAqcG9saWN5Ki4gKnBvbGljeSogaXMgb25lIG9mIHRoZQorICAgc2NoZWR1bGluZyBwb2xpY3kgY29uc3RhbnRzIGFib3ZlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSkKKworICAgU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucworICAgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gKnBvbGljeSogaXMgb25lIG9mIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMKKyAgIGFib3ZlLiAqcGFyYW0qIGlzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKQorCisgICBSZXR1cm4gdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwCisgICBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiBUaGUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgc2NoZWR1bGluZyBwb2xpY3kKKyAgIGNvbnN0YW50cyBhYm92ZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pCisKKyAgIFNldCBhIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucworICAgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gKnBhcmFtKiBpcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0cGFyYW0ocGlkKQorCisgICBSZXR1cm4gdGhlIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBhcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlIGZvciB0aGUKKyAgIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCkKKworICAgUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGluIHNlY29uZHMgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBCisgICAqcGlkKiBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF95aWVsZCgpCisKKyAgIFZvbHVudGFyaWx5IHJlbGlucXVpc2ggdGhlIENQVS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldGFmZmluaXR5KHBpZCwgbWFzaykKKworICAgUmVzdHJpY3QgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykgdG8gYQorICAgc2V0IG9mIENQVXMuICAqbWFzayogaXMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZSBzZXQgb2YKKyAgIENQVXMgdG8gd2hpY2ggdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJlc3RyaWN0ZWQuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRhZmZpbml0eShwaWQpCisKKyAgIFJldHVybiB0aGUgc2V0IG9mIENQVXMgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MKKyAgIGlmIHplcm8pIGlzIHJlc3RyaWN0ZWQgdG8uCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnRgIHJldHVybnMgdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZQorICAgICAgc3lzdGVtLgorCisKIC4uIF9vcy1wYXRoOgogCiBNaXNjZWxsYW5lb3VzIFN5c3RlbSBJbmZvcm1hdGlvbgpAQCAtMjIwOCw3ICszMTgxLDcgQEAKICAgIGluY2x1ZGVkIGluIGBgY29uZnN0cl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBkYXRhOjogY29uZnN0cl9uYW1lcwpAQCAtMjMzMCw2ICszMzAzLDYgQEAKIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJhbmRvbSBieXRlcyBmcm9tIGFuIE9TLXNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlLiAgVGhlCiAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSB1bnByZWRpY3RhYmxlIGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYyBhcHBsaWNhdGlvbnMsCi0gICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uICBPbiBhIFVOSVgtbGlrZQorICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLiAgT24gYSBVbml4LWxpa2UKICAgIHN5c3RlbSB0aGlzIHdpbGwgcXVlcnkgL2Rldi91cmFuZG9tLCBhbmQgb24gV2luZG93cyBpdCB3aWxsIHVzZSBDcnlwdEdlblJhbmRvbS4KICAgIElmIGEgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGZvdW5kLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdCBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAppbmRleCBlZDg0NDEzLi4zMDAyNzAwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CkBAIC0zOCw2ICszOCwxMCBAQAogICAgVGhpcyBwcm9iYWJseSBhbGwgd2FycmFudHMgYSBmb290bm90ZSBvciB0d28sIGJ1dCBJIGRvbid0IHVuZGVyc3RhbmQKICAgIHRoaW5ncyB3ZWxsIGVub3VnaCByaWdodCBub3cgdG8gd3JpdGUgaXQhICAgLS1HUFcKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIE9wZXJhdGlvbnMgaW4gdGhpcyBtb2R1bGUgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgIHdoZXJlIDpleGM6YElPRXJyb3JgCisgICB3YXMgcmFpc2VkLgorCiAKIC4uIHNlZWFsc286OgogCkBAIC01Niw3ICs2MCw3IEBACiAgICB3aGF0IHdlbnQgd3JvbmcuCiAKICAgIChJZiA6bW9kOmBvc3NhdWRpb2RldmAgcmVjZWl2ZXMgYW4gZXJyb3IgZnJvbSBhIHN5c3RlbSBjYWxsIHN1Y2ggYXMKLSAgIDpjOmZ1bmM6YG9wZW5gLCA6YzpmdW5jOmB3cml0ZWAsIG9yIDpjOmZ1bmM6YGlvY3RsYCwgaXQgcmFpc2VzIDpleGM6YElPRXJyb3JgLgorICAgOmM6ZnVuYzpgb3BlbmAsIDpjOmZ1bmM6YHdyaXRlYCwgb3IgOmM6ZnVuYzpgaW9jdGxgLCBpdCByYWlzZXMgOmV4YzpgT1NFcnJvcmAuCiAgICBFcnJvcnMgZGV0ZWN0ZWQgZGlyZWN0bHkgYnkgOm1vZDpgb3NzYXVkaW9kZXZgIHJlc3VsdCBpbiA6ZXhjOmBPU1NBdWRpb0Vycm9yYC4pCiAKICAgIChGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBleGNlcHRpb24gY2xhc3MgaXMgYWxzbyBhdmFpbGFibGUgYXMKQEAgLTE2OSw3ICsxNzMsNyBAQAogY29ycmVzcG9uZGVuY2UgaXMgb2J2aW91czogZm9yIGV4YW1wbGUsIDptZXRoOmBzZXRmbXRgIGNvcnJlc3BvbmRzIHRvIHRoZQogYGBTTkRDVExfRFNQX1NFVEZNVGBgIGlvY3RsLCBhbmQgOm1ldGg6YHN5bmNgIHRvIGBgU05EQ1RMX0RTUF9TWU5DYGAgKHRoaXMgY2FuCiBiZSB1c2VmdWwgd2hlbiBjb25zdWx0aW5nIHRoZSBPU1MgZG9jdW1lbnRhdGlvbikuICBJZiB0aGUgdW5kZXJseWluZwotOmZ1bmM6YGlvY3RsYCBmYWlscywgdGhleSBhbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCis6ZnVuYzpgaW9jdGxgIGZhaWxzLCB0aGV5IGFsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfYXVkaW9fZGV2aWNlLm5vbmJsb2NrKCkKQEAgLTM0NSw3ICszNDksNyBAQAogLi4gbWV0aG9kOjogb3NzX21peGVyX2RldmljZS5jbG9zZSgpCiAKICAgIFRoaXMgbWV0aG9kIGNsb3NlcyB0aGUgb3BlbiBtaXhlciBkZXZpY2UgZmlsZS4gIEFueSBmdXJ0aGVyIGF0dGVtcHRzIHRvIHVzZSB0aGUKLSAgIG1peGVyIGFmdGVyIHRoaXMgZmlsZSBpcyBjbG9zZWQgd2lsbCByYWlzZSBhbiA6ZXhjOmBJT0Vycm9yYC4KKyAgIG1peGVyIGFmdGVyIHRoaXMgZmlsZSBpcyBjbG9zZWQgd2lsbCByYWlzZSBhbiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLmZpbGVubygpCkBAIC00MDQsNyArNDA4LDcgQEAKICAgIHJldHVybmVkLCBidXQgYm90aCB2b2x1bWVzIGFyZSB0aGUgc2FtZS4KIAogICAgUmFpc2VzIDpleGM6YE9TU0F1ZGlvRXJyb3JgIGlmIGFuIGludmFsaWQgY29udHJvbCB3YXMgaXMgc3BlY2lmaWVkLCBvcgotICAgOmV4YzpgSU9FcnJvcmAgaWYgYW4gdW5zdXBwb3J0ZWQgY29udHJvbCBpcyBzcGVjaWZpZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBpZiBhbiB1bnN1cHBvcnRlZCBjb250cm9sIGlzIHNwZWNpZmllZC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLnNldChjb250cm9sLCAobGVmdCwgcmlnaHQpKQpAQCAtNDI4LDcgKzQzMiw3IEBACiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLnNldF9yZWNzcmMoYml0bWFzaykKIAogICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHNwZWNpZnkgYSByZWNvcmRpbmcgc291cmNlLiAgUmV0dXJucyBhIGJpdG1hc2sgaW5kaWNhdGluZwotICAgdGhlIG5ldyByZWNvcmRpbmcgc291cmNlIChvciBzb3VyY2VzKSBpZiBzdWNjZXNzZnVsOyByYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYgYW4KKyAgIHRoZSBuZXcgcmVjb3JkaW5nIHNvdXJjZSAob3Igc291cmNlcykgaWYgc3VjY2Vzc2Z1bDsgcmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmIGFuCiAgICBpbnZhbGlkIHNvdXJjZSB3YXMgc3BlY2lmaWVkLiAgVG8gc2V0IHRoZSBjdXJyZW50IHJlY29yZGluZyBzb3VyY2UgdG8gdGhlCiAgICBtaWNyb3Bob25lIGlucHV0OjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGRiLnJzdCBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKaW5kZXggMWU5ZGU2My4uZjRlMzdhYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGRiLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wZGIucnN0CkBAIC0zOCw2ICszOCwxMSBAQAogICAgPiA8c3RyaW5nPigxKT8oKQogICAgKFBkYikKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgOm1vZDpgcmVhZGxpbmVgIG1vZHVsZSBpcyBhdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZAorICAgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcworICAgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC4KKwogOmZpbGU6YHBkYi5weWAgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLiAgRm9yCiBleGFtcGxlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggYTFmOWFmMi4uMjg3YTA4YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC0yODcsNiArMjg3LDI5IEBACiAKICAgICAgIFNlZSA6cmVmOmBwaWNrbGUtcGVyc2lzdGVudGAgZm9yIGRldGFpbHMgYW5kIGV4YW1wbGVzIG9mIHVzZXMuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IGRpc3BhdGNoX3RhYmxlCisKKyAgICAgIEEgcGlja2xlciBvYmplY3QncyBkaXNwYXRjaCB0YWJsZSBpcyBhIHJlZ2lzdHJ5IG9mICpyZWR1Y3Rpb24KKyAgICAgIGZ1bmN0aW9ucyogb2YgdGhlIGtpbmQgd2hpY2ggY2FuIGJlIGRlY2xhcmVkIHVzaW5nCisgICAgICA6ZnVuYzpgY29weXJlZy5waWNrbGVgLiAgSXQgaXMgYSBtYXBwaW5nIHdob3NlIGtleXMgYXJlIGNsYXNzZXMKKyAgICAgIGFuZCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjdGlvbiBmdW5jdGlvbnMuICBBIHJlZHVjdGlvbiBmdW5jdGlvbgorICAgICAgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIGFzc29jaWF0ZWQgY2xhc3MgYW5kIHNob3VsZAorICAgICAgY29uZm9ybSB0byB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgYSA6bWV0aDpgfm9iamVjdC5fX3JlZHVjZV9fYAorICAgICAgbWV0aG9kLgorCisgICAgICBCeSBkZWZhdWx0LCBhIHBpY2tsZXIgb2JqZWN0IHdpbGwgbm90IGhhdmUgYQorICAgICAgOmF0dHI6YGRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUsIGFuZCBpdCB3aWxsIGluc3RlYWQgdXNlIHRoZQorICAgICAgZ2xvYmFsIGRpc3BhdGNoIHRhYmxlIG1hbmFnZWQgYnkgdGhlIDptb2Q6YGNvcHlyZWdgIG1vZHVsZS4KKyAgICAgIEhvd2V2ZXIsIHRvIGN1c3RvbWl6ZSB0aGUgcGlja2xpbmcgZm9yIGEgc3BlY2lmaWMgcGlja2xlciBvYmplY3QKKyAgICAgIG9uZSBjYW4gc2V0IHRoZSA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSB0byBhIGRpY3QtbGlrZQorICAgICAgb2JqZWN0LiAgQWx0ZXJuYXRpdmVseSwgaWYgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YFBpY2tsZXJgIGhhcyBhCisgICAgICA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSB0aGVuIHRoaXMgd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgICAgZGVmYXVsdCBkaXNwYXRjaCB0YWJsZSBmb3IgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuCisKKyAgICAgIFNlZSA6cmVmOmBwaWNrbGUtZGlzcGF0Y2hgIGZvciB1c2FnZSBleGFtcGxlcy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIGF0dHJpYnV0ZTo6IGZhc3QKIAogICAgICAgRGVwcmVjYXRlZC4gRW5hYmxlIGZhc3QgbW9kZSBpZiBzZXQgdG8gYSB0cnVlIHZhbHVlLiAgVGhlIGZhc3QgbW9kZQpAQCAtNTc3LDYgKzYwMCw0NCBAQAogCiAuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2RicGlja2xlLnB5CiAKKy4uIF9waWNrbGUtZGlzcGF0Y2g6CisKK0Rpc3BhdGNoIFRhYmxlcworXl5eXl5eXl5eXl5eXl5eCisKK0lmIG9uZSB3YW50cyB0byBjdXN0b21pemUgcGlja2xpbmcgb2Ygc29tZSBjbGFzc2VzIHdpdGhvdXQgZGlzdHVyYmluZworYW55IG90aGVyIGNvZGUgd2hpY2ggZGVwZW5kcyBvbiBwaWNrbGluZywgdGhlbiBvbmUgY2FuIGNyZWF0ZSBhCitwaWNrbGVyIHdpdGggYSBwcml2YXRlIGRpc3BhdGNoIHRhYmxlLgorCitUaGUgZ2xvYmFsIGRpc3BhdGNoIHRhYmxlIG1hbmFnZWQgYnkgdGhlIDptb2Q6YGNvcHlyZWdgIG1vZHVsZSBpcworYXZhaWxhYmxlIGFzIDpkYXRhOmBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlYC4gIFRoZXJlZm9yZSwgb25lIG1heQorY2hvb3NlIHRvIHVzZSBhIG1vZGlmaWVkIGNvcHkgb2YgOmRhdGE6YGNvcHlyZWcuZGlzcGF0Y2hfdGFibGVgIGFzIGEKK3ByaXZhdGUgZGlzcGF0Y2ggdGFibGUuCisKK0ZvciBleGFtcGxlIDo6CisKKyAgIGYgPSBpby5CeXRlc0lPKCkKKyAgIHAgPSBwaWNrbGUuUGlja2xlcihmKQorICAgcC5kaXNwYXRjaF90YWJsZSA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICBwLmRpc3BhdGNoX3RhYmxlW1NvbWVDbGFzc10gPSByZWR1Y2VfU29tZUNsYXNzCisKK2NyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBwaWNrbGUuUGlja2xlcmAgd2l0aCBhIHByaXZhdGUgZGlzcGF0Y2gKK3RhYmxlIHdoaWNoIGhhbmRsZXMgdGhlIGBgU29tZUNsYXNzYGAgY2xhc3Mgc3BlY2lhbGx5LiAgQWx0ZXJuYXRpdmVseSwKK3RoZSBjb2RlIDo6CisKKyAgIGNsYXNzIE15UGlja2xlcihwaWNrbGUuUGlja2xlcik6CisgICAgICAgZGlzcGF0Y2hfdGFibGUgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorICAgICAgIGRpc3BhdGNoX3RhYmxlW1NvbWVDbGFzc10gPSByZWR1Y2VfU29tZUNsYXNzCisgICBmID0gaW8uQnl0ZXNJTygpCisgICBwID0gTXlQaWNrbGVyKGYpCisKK2RvZXMgdGhlIHNhbWUsIGJ1dCBhbGwgaW5zdGFuY2VzIG9mIGBgTXlQaWNrbGVyYGAgd2lsbCBieSBkZWZhdWx0CitzaGFyZSB0aGUgc2FtZSBkaXNwYXRjaCB0YWJsZS4gIFRoZSBlcXVpdmFsZW50IGNvZGUgdXNpbmcgdGhlCis6bW9kOmBjb3B5cmVnYCBtb2R1bGUgaXMgOjoKKworICAgY29weXJlZy5waWNrbGUoU29tZUNsYXNzLCByZWR1Y2VfU29tZUNsYXNzKQorICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgcCA9IHBpY2tsZS5QaWNrbGVyKGYpCiAKIC4uIF9waWNrbGUtc3RhdGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggMzExOGZmMi4uMjJkNDRlYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTU2LDIxICs1NiwzMiBAQAogICAgTm90ZSB0aGF0IDpjbGFzczpgSW1wSW1wb3J0ZXJgIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGJlaW5nIHVzZWQgYnkKICAgIHBsYWNlbWVudCBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisKIAogLi4gY2xhc3M6OiBJbXBMb2FkZXIoZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpCiAKICAgIDpwZXA6YDMwMmAgTG9hZGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0uCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisKIAogLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihmdWxsbmFtZSkKIAotICAgRmluZCBhIDpwZXA6YDMwMmAgImxvYWRlciIgb2JqZWN0IGZvciAqZnVsbG5hbWUqLgorICAgUmV0cmlldmUgYSA6cGVwOmAzMDJgIG1vZHVsZSBsb2FkZXIgZm9yIHRoZSBnaXZlbiAqZnVsbG5hbWUqLgogCi0gICBJZiAqZnVsbG5hbWUqIGNvbnRhaW5zIGRvdHMsIHBhdGggbXVzdCBiZSB0aGUgY29udGFpbmluZyBwYWNrYWdlJ3MKLSAgIGBgX19wYXRoX19gYC4gIFJldHVybnMgYGBOb25lYGAgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCi0gICBUaGlzIGZ1bmN0aW9uIHVzZXMgOmZ1bmM6YGl0ZXJfaW1wb3J0ZXJzYCwgYW5kIGlzIHRodXMgc3ViamVjdCB0byB0aGUgc2FtZQotICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoIGFzIHRoZQotICAgV2luZG93cyByZWdpc3RyeS4KKyAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYCB0aGF0CisgICBzZXRzIHRoZSAqcGF0aCogYXJndW1lbnQgY29ycmVjdGx5IHdoZW4gc2VhcmNoaW5nIGZvciBzdWJtb2R1bGVzLCBhbmQKKyAgIGFsc28gZW5zdXJlcyBwYXJlbnQgcGFja2FnZXMgKGlmIGFueSkgYXJlIGltcG9ydGVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yCisgICBzdWJtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF9pbXBvcnRlcihwYXRoX2l0ZW0pCkBAIC04MCwxMyArOTEsMTMgQEAKICAgIFRoZSByZXR1cm5lZCBpbXBvcnRlciBpcyBjYWNoZWQgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpZiBpdCB3YXMKICAgIG5ld2x5IGNyZWF0ZWQgYnkgYSBwYXRoIGhvb2suCiAKLSAgIElmIHRoZXJlIGlzIG5vIGltcG9ydGVyLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBiYXNpYyBpbXBvcnQgbWFjaGluZXJ5IGlzCi0gICByZXR1cm5lZC4gIFRoaXMgd3JhcHBlciBpcyBuZXZlciBpbnNlcnRlZCBpbnRvIHRoZSBpbXBvcnRlciBjYWNoZSAoYGBOb25lYGAKLSAgIGlzIGluc2VydGVkIGluc3RlYWQpLgotCiAgICBUaGUgY2FjaGUgKG9yIHBhcnQgb2YgaXQpIGNhbiBiZSBjbGVhcmVkIG1hbnVhbGx5IGlmIGEgcmVzY2FuIG9mCiAgICA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzIG5lY2Vzc2FyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKQogCkBAIC0xMDIsNDYgKzExMyw1MiBAQAogICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoIGFzIHRoZQogICAgV2luZG93cyByZWdpc3RyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBpdGVyX2ltcG9ydGVycyhmdWxsbmFtZT0nJykKIAogICAgWWllbGQgOnBlcDpgMzAyYCBpbXBvcnRlcnMgZm9yIHRoZSBnaXZlbiBtb2R1bGUgbmFtZS4KIAotICAgSWYgZnVsbG5hbWUgY29udGFpbnMgYSAnLicsIHRoZSBpbXBvcnRlcnMgd2lsbCBiZSBmb3IgdGhlIHBhY2thZ2UgY29udGFpbmluZwotICAgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsCi0gICA6ZGF0YTpgc3lzLnBhdGhgLCBhbmQgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBtYWNoaW5lcnksIGluIHRoYXQgb3JkZXIuICBJZgotICAgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUgZWZmZWN0Ci0gICBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgorICAgSWYgZnVsbG5hbWUgY29udGFpbnMgYSAnLicsIHRoZSBpbXBvcnRlcnMgd2lsbCBiZSBmb3IgdGhlIHBhY2thZ2UKKyAgIGNvbnRhaW5pbmcgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsIHJlZ2lzdGVyZWQgdG9wIGxldmVsCisgICBpbXBvcnRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCiAKLSAgIE5vbi06cGVwOmAzMDJgIG1lY2hhbmlzbXMgKGUuZy4gdGhlIFdpbmRvd3MgcmVnaXN0cnkpIHVzZWQgYnkgdGhlIHN0YW5kYXJkCi0gICBpbXBvcnQgbWFjaGluZXJ5IHRvIGZpbmQgZmlsZXMgaW4gYWx0ZXJuYXRpdmUgbG9jYXRpb25zIGFyZSBwYXJ0aWFsbHkKLSAgIHN1cHBvcnRlZCwgYnV0IGFyZSBzZWFyY2hlZCAqYWZ0ZXIqIDpkYXRhOmBzeXMucGF0aGAuICBOb3JtYWxseSwgdGhlc2UKLSAgIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgKmJlZm9yZSogOmRhdGE6YHN5cy5wYXRoYCwgcHJldmVudGluZyA6ZGF0YTpgc3lzLnBhdGhgCi0gICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCisgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQorICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCiAKLSAgIEZvciB0aGlzIHRvIGNhdXNlIGEgdmlzaWJsZSBkaWZmZXJlbmNlIGluIGJlaGF2aW91ciwgdGhlcmUgbXVzdCBiZSBhIG1vZHVsZQotICAgb3IgcGFja2FnZSBuYW1lIHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgYm90aCA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBvbmUgb2YgdGhlCi0gICBub24tOnBlcDpgMzAyYCBmaWxlIHN5c3RlbSBtZWNoYW5pc21zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZW11bGF0aW9uIHdpbGwgZmluZAotICAgdGhlIGZvcm1lciB2ZXJzaW9uLCB3aGlsZSB0aGUgYnVpbHRpbiBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgorICAgSWYgbm8gbW9kdWxlIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGwgdG9wIGxldmVsIGltcG9ydGVycyBhcmUgcHJvZHVjZWQuCiAKLSAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6Ci0gICBgYGltcC5DX0VYVEVOU0lPTmBgLCBgYGltcC5QWV9TT1VSQ0VgYCwgYGBpbXAuUFlfQ09NUElMRURgYCwKLSAgIGBgaW1wLlBLR19ESVJFQ1RPUllgYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogaXRlcl9tb2R1bGVzKHBhdGg9Tm9uZSwgcHJlZml4PScnKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCisgICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCiAgICBwYXRoIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KIAogICAgKnByZWZpeCogaXMgYSBzdHJpbmcgdG8gb3V0cHV0IG9uIHRoZSBmcm9udCBvZiBldmVyeSBtb2R1bGUgbmFtZSBvbiBvdXRwdXQuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgT25seSB3b3JrcyBmb3IgYSA6dGVybTpgZmluZGVyYCB3aGljaCBkZWZpbmVzIGFuIGBgaXRlcl9tb2R1bGVzKClgYAorICAgICAgbWV0aG9kLiBUaGlzIGludGVyZmFjZSBpcyBub24tc3RhbmRhcmQsIHNvIHRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcworICAgICAgaW1wbGVtZW50YXRpb25zIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgYW5kCisgICAgICA6Y2xhc3M6YHppcGltcG9ydC56aXBpbXBvcnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCisgICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiBwYXRoIGlzIGBgTm9uZWBgLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2Niw2ICsxODMsMTYgQEAKICAgICAgICMgbGlzdCBhbGwgc3VibW9kdWxlcyBvZiBjdHlwZXMKICAgICAgIHdhbGtfcGFja2FnZXMoY3R5cGVzLl9fcGF0aF9fLCBjdHlwZXMuX19uYW1lX18gKyAnLicpCiAKKyAgIC4uIG5vdGU6OgorICAgICAgT25seSB3b3JrcyBmb3IgYSA6dGVybTpgZmluZGVyYCB3aGljaCBkZWZpbmVzIGFuIGBgaXRlcl9tb2R1bGVzKClgYAorICAgICAgbWV0aG9kLiBUaGlzIGludGVyZmFjZSBpcyBub24tc3RhbmRhcmQsIHNvIHRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcworICAgICAgaW1wbGVtZW50YXRpb25zIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgYW5kCisgICAgICA6Y2xhc3M6YHppcGltcG9ydC56aXBpbXBvcnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2RhdGEocGFja2FnZSwgcmVzb3VyY2UpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdCBiL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAppbmRleCAxNTdhYzNhLi5hNmE5OGYxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CkBAIC0zMCw4ICszMCw4IEBACiAgICByZXR1cm5lZCBhcyBzdHJpbmdzLgogCiAgICBWYWx1ZXMgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhcmUgcmV0dXJuZWQgYXMgZ2l2ZW4gYnkgdGhlIHBhcmFtZXRlciBwcmVzZXRzLgotICAgSWYgYml0cyBpcyBnaXZlbiBhcyBgYCcnYGAsIHRoZSA6YzpmdW5jOmBzaXplb2YocG9pbnRlcilgIChvcgotICAgOmM6ZnVuYzpgc2l6ZW9mKGxvbmcpYCBvbiBQeXRob24gdmVyc2lvbiA8IDEuNS4yKSBpcyB1c2VkIGFzIGluZGljYXRvciBmb3IgdGhlCisgICBJZiBiaXRzIGlzIGdpdmVuIGFzIGBgJydgYCwgdGhlIGBgc2l6ZW9mKHBvaW50ZXIpYGAgKG9yCisgICBgYHNpemVvZihsb25nKWBgIG9uIFB5dGhvbiB2ZXJzaW9uIDwgMS41LjIpIGlzIHVzZWQgYXMgaW5kaWNhdG9yIGZvciB0aGUKICAgIHN1cHBvcnRlZCBwb2ludGVyIHNpemUuCiAKICAgIFRoZSBmdW5jdGlvbiByZWxpZXMgb24gdGhlIHN5c3RlbSdzIDpmaWxlOmBmaWxlYCBjb21tYW5kIHRvIGRvIHRoZSBhY3R1YWwgd29yay4KQEAgLTE1OCwxNCArMTU4LDIwIEBACiAKIC4uIGZ1bmN0aW9uOjogdW5hbWUoKQogCi0gICBGYWlybHkgcG9ydGFibGUgdW5hbWUgaW50ZXJmYWNlLiBSZXR1cm5zIGEgdHVwbGUgb2Ygc3RyaW5ncyBgYChzeXN0ZW0sIG5vZGUsCi0gICByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lLCBwcm9jZXNzb3IpYGAgaWRlbnRpZnlpbmcgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0uCisgICBGYWlybHkgcG9ydGFibGUgdW5hbWUgaW50ZXJmYWNlLiBSZXR1cm5zIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgY29udGFpbmluZyBzaXggYXR0cmlidXRlczogOmF0dHI6YHN5c3RlbWAsIDphdHRyOmBub2RlYCwgOmF0dHI6YHJlbGVhc2VgLAorICAgOmF0dHI6YHZlcnNpb25gLCA6YXR0cjpgbWFjaGluZWAsIGFuZCA6YXR0cjpgcHJvY2Vzc29yYC4KIAotICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmZ1bmM6YG9zLnVuYW1lYCBmdW5jdGlvbiB0aGlzIGFsc28gcmV0dXJucyBwb3NzaWJsZQotICAgcHJvY2Vzc29yIGluZm9ybWF0aW9uIGFzIGFkZGl0aW9uYWwgdHVwbGUgZW50cnkuCisgICBOb3RlIHRoYXQgdGhpcyBhZGRzIGEgc2l4dGggYXR0cmlidXRlICg6YXR0cjpgcHJvY2Vzc29yYCkgbm90IHByZXNlbnQKKyAgIGluIHRoZSA6ZnVuYzpgb3MudW5hbWVgIHJlc3VsdC4gIEFsc28sIHRoZSBhdHRyaWJ1dGUgbmFtZXMgYXJlIGRpZmZlcmVudAorICAgZm9yIHRoZSBmaXJzdCB0d28gYXR0cmlidXRlczsgOmZ1bmM6YG9zLnVuYW1lYCBuYW1lcyB0aGVtCisgICA6YXR0cjpgc3lzbmFtZWAgYW5kIDphdHRyOmBub2RlbmFtZWAuCiAKICAgIEVudHJpZXMgd2hpY2ggY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHNldCB0byBgYCcnYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIEphdmEgUGxhdGZvcm0KIC0tLS0tLS0tLS0tLS0KQEAgLTIxNCw2ICsyMjAsMTAgQEAKICAgIHByZWZlcnJpbmcgOmZ1bmM6YHdpbjMycGlwZS5wb3BlbmAuICBPbiBXaW5kb3dzIE5ULCA6ZnVuYzpgd2luMzJwaXBlLnBvcGVuYAogICAgc2hvdWxkIHdvcms7IG9uIFdpbmRvd3MgOXggaXQgaGFuZ3MgZHVlIHRvIGJ1Z3MgaW4gdGhlIE1TIEMgbGlicmFyeS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBvYnNvbGV0ZS4gIFVzZSB0aGUgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlLiAgQ2hlY2sKKyAgICAgIGVzcGVjaWFsbHkgdGhlIDpyZWY6YHN1YnByb2Nlc3MtcmVwbGFjZW1lbnRzYCBzZWN0aW9uLgorCiAKIE1hYyBPUyBQbGF0Zm9ybQogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCAxY2Q0ZDI2Li41NWM5ZDcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQzLDYgKzQzLDEyIEBACiB1c2VzIHRoZSBzeXN0ZW0gZnVuY3Rpb24gOmZ1bmM6YG9zLnVyYW5kb21gIHRvIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJzCiBmcm9tIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCiAKKy4uIHdhcm5pbmc6OgorCisgICBUaGUgZ2VuZXJhdG9ycyBvZiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzZWN1cml0eQorICAgcHVycG9zZXMuIFVzZSA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGlmIHlvdSByZXF1aXJlIGEgY3J5cHRvZ3JhcGhpY2FsbHkKKyAgIHNlY3VyZSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KKwogCiBCb29ra2VlcGluZyBmdW5jdGlvbnM6CiAKQEAgLTE0NSw2ICsxNTEsOSBAQAogICAgYXJndW1lbnQuICBUaGlzIGlzIGVzcGVjaWFsbHkgZmFzdCBhbmQgc3BhY2UgZWZmaWNpZW50IGZvciBzYW1wbGluZyBmcm9tIGEgbGFyZ2UKICAgIHBvcHVsYXRpb246ICBgYHNhbXBsZShyYW5nZSgxMDAwMDAwMCksIDYwKWBgLgogCisgICBJZiB0aGUgc2FtcGxlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHBvcHVsYXRpb24gc2l6ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgaXMgcmFpc2VkLgorCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBnZW5lcmF0ZSBzcGVjaWZpYyByZWFsLXZhbHVlZCBkaXN0cmlidXRpb25zLiBGdW5jdGlvbgogcGFyYW1ldGVycyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIGluIHRoZSBkaXN0cmlidXRpb24ncwogZXF1YXRpb24sIGFzIHVzZWQgaW4gY29tbW9uIG1hdGhlbWF0aWNhbCBwcmFjdGljZTsgbW9zdCBvZiB0aGVzZSBlcXVhdGlvbnMgY2FuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggODM5N2FhZC4uMDc2MjNjOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtNDE0LDE3ICs0MTQsMjQgQEAKIGFjY2VwdGVkIGJ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2VyOjoKIAogICAgXGEgICAgICBcYiAgICAgIFxmICAgICAgXG4KLSAgIFxyICAgICAgXHQgICAgICBcdiAgICAgIFx4Ci0gICBcXAorICAgXHIgICAgICBcdCAgICAgIFx1ICAgICAgXFUKKyAgIFx2ICAgICAgXHggICAgICBcXAogCiAoTm90ZSB0aGF0IGBgXGJgYCBpcyB1c2VkIHRvIHJlcHJlc2VudCB3b3JkIGJvdW5kYXJpZXMsIGFuZCBtZWFucyAiYmFja3NwYWNlIgogb25seSBpbnNpZGUgY2hhcmFjdGVyIGNsYXNzZXMuKQogCitgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBhcmUgb25seSByZWNvZ25pemVkIGluIFVuaWNvZGUKK3BhdHRlcm5zLiAgSW4gYnl0ZXMgcGF0dGVybnMgdGhleSBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LgorCiBPY3RhbCBlc2NhcGVzIGFyZSBpbmNsdWRlZCBpbiBhIGxpbWl0ZWQgZm9ybS4gIElmIHRoZSBmaXJzdCBkaWdpdCBpcyBhIDAsIG9yIGlmCiB0aGVyZSBhcmUgdGhyZWUgb2N0YWwgZGlnaXRzLCBpdCBpcyBjb25zaWRlcmVkIGFuIG9jdGFsIGVzY2FwZS4gT3RoZXJ3aXNlLCBpdCBpcwogYSBncm91cCByZWZlcmVuY2UuICBBcyBmb3Igc3RyaW5nIGxpdGVyYWxzLCBvY3RhbCBlc2NhcGVzIGFyZSBhbHdheXMgYXQgbW9zdAogdGhyZWUgZGlnaXRzIGluIGxlbmd0aC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCisKKwogCiAuLiBfY29udGVudHMtb2YtbW9kdWxlLXJlOgogCkBAIC02ODQsOSArNjkxLDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogZXNjYXBlKHN0cmluZykKIAotICAgUmV0dXJuICpzdHJpbmcqIHdpdGggYWxsIG5vbi1hbHBoYW51bWVyaWNzIGJhY2tzbGFzaGVkOyB0aGlzIGlzIHVzZWZ1bCBpZiB5b3UKLSAgIHdhbnQgdG8gbWF0Y2ggYW4gYXJiaXRyYXJ5IGxpdGVyYWwgc3RyaW5nIHRoYXQgbWF5IGhhdmUgcmVndWxhciBleHByZXNzaW9uCi0gICBtZXRhY2hhcmFjdGVycyBpbiBpdC4KKyAgIEVzY2FwZSBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gcGF0dGVybiBleGNlcHQgQVNDSUkgbGV0dGVycywgbnVtYmVycyBhbmQgYGAnXydgYC4KKyAgIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIG1hdGNoIGFuIGFyYml0cmFyeSBsaXRlcmFsIHN0cmluZyB0aGF0IG1heQorICAgaGF2ZSByZWd1bGFyIGV4cHJlc3Npb24gbWV0YWNoYXJhY3RlcnMgaW4gaXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnXydgYCBjaGFyYWN0ZXIgaXMgbm8gbG9uZ2VyIGVzY2FwZWQuCiAKIAogLi4gZnVuY3Rpb246OiBwdXJnZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggYWI1NTE5Ny4uMTEzNDYxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtMTk5LDcgKzE5OSw3IEBACiAgICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weWhpc3QiKQogICAgdHJ5OgogICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RmaWxlKQotICAgZXhjZXB0IElPRXJyb3I6CisgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgcGFzcwogICAgaW1wb3J0IGF0ZXhpdAogICAgYXRleGl0LnJlZ2lzdGVyKHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSwgaGlzdGZpbGUpCkBAIC0yMjQsNyArMjI0LDcgQEAKICAgICAgICAgICAgaWYgaGFzYXR0cihyZWFkbGluZSwgInJlYWRfaGlzdG9yeV9maWxlIik6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0gICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIoc2VsZi5zYXZlX2hpc3RvcnksIGhpc3RmaWxlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QgYi9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QKaW5kZXggYzE2YjAxMy4uMDNhN2NiNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdApAQCAtMTQsMTMgKzE0LDE1IEBACiBTeW1ib2xpYyBjb25zdGFudHMgYXJlIHVzZWQgdG8gc3BlY2lmeSBwYXJ0aWN1bGFyIHN5c3RlbSByZXNvdXJjZXMgYW5kIHRvCiByZXF1ZXN0IHVzYWdlIGluZm9ybWF0aW9uIGFib3V0IGVpdGhlciB0aGUgY3VycmVudCBwcm9jZXNzIG9yIGl0cyBjaGlsZHJlbi4KIAotQSBzaW5nbGUgZXhjZXB0aW9uIGlzIGRlZmluZWQgZm9yIGVycm9yczoKK0FuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBvbiBzeXNjYWxsIGZhaWx1cmUuCiAKIAogLi4gZXhjZXB0aW9uOjogZXJyb3IKIAotICAgVGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgYmVsb3cgbWF5IHJhaXNlIHRoaXMgZXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwKLSAgIGZhaWx1cmVzIHVuZXhwZWN0ZWRseS4KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEZvbGxvd2luZyA6cGVwOmAzMTUxYCwgdGhpcyBjbGFzcyB3YXMgbWFkZSBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiBSZXNvdXJjZSBMaW1pdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NjaGVkLnJzdCBiL0RvYy9saWJyYXJ5L3NjaGVkLnJzdAppbmRleCAwMDBkYmEwLi5kNmM4NmM3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2NoZWQucnN0CkBAIC0xNCw3ICsxNCw3IEBACiBUaGUgOm1vZDpgc2NoZWRgIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBhIGdlbmVyYWwgcHVycG9zZSBldmVudAogc2NoZWR1bGVyOgogCi0uLiBjbGFzczo6IHNjaGVkdWxlcih0aW1lZnVuYywgZGVsYXlmdW5jKQorLi4gY2xhc3M6OiBzY2hlZHVsZXIodGltZWZ1bmM9dGltZS50aW1lLCBkZWxheWZ1bmM9dGltZS5zbGVlcCkKIAogICAgVGhlIDpjbGFzczpgc2NoZWR1bGVyYCBjbGFzcyBkZWZpbmVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gc2NoZWR1bGluZyBldmVudHMuCiAgICBJdCBuZWVkcyB0d28gZnVuY3Rpb25zIHRvIGFjdHVhbGx5IGRlYWwgd2l0aCB0aGUgIm91dHNpZGUgd29ybGQiIC0tLSAqdGltZWZ1bmMqCkBAIC0yNSw2ICsyNSwxMiBAQAogICAgZXZlbnQgaXMgcnVuIHRvIGFsbG93IG90aGVyIHRocmVhZHMgYW4gb3Bwb3J0dW5pdHkgdG8gcnVuIGluIG11bHRpLXRocmVhZGVkCiAgICBhcHBsaWNhdGlvbnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jKiBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6Y2xhc3M6YHNjaGVkdWxlcmAgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgICAgICBlbnZpcm9ubWVudHMuCisKIEV4YW1wbGU6OgogCiAgICA+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+KQorCisgICBjYW5fZnJhbWVfZm10ID0gIj1JQjN4OHMiCisgICBjYW5fZnJhbWVfc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShjYW5fZnJhbWVfZm10KQorCisgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNhbl9pZCwgZGF0YSk6CisgICAgICAgY2FuX2RsYyA9IGxlbihkYXRhKQorICAgICAgIGRhdGEgPSBkYXRhLmxqdXN0KDgsIGInXHgwMCcpCisgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNhbl9mcmFtZV9mbXQsIGNhbl9pZCwgY2FuX2RsYywgZGF0YSkKKworICAgZGVmIGRpc3NlY3RfY2FuX2ZyYW1lKGZyYW1lKToKKyAgICAgICBjYW5faWQsIGNhbl9kbGMsIGRhdGEgPSBzdHJ1Y3QudW5wYWNrKGNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgIHJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkKKworCisgICAjIGNyZWF0ZSBhIHJhdyBzb2NrZXQgYW5kIGJpbmQgaXQgdG8gdGhlICd2Y2FuMCcgaW50ZXJmYWNlCisgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgcy5iaW5kKCgndmNhbjAnLCkpCisKKyAgIHdoaWxlIFRydWU6CisgICAgICAgY2YsIGFkZHIgPSBzLnJlY3Zmcm9tKGNhbl9mcmFtZV9zaXplKQorCisgICAgICAgcHJpbnQoJ1JlY2VpdmVkOiBjYW5faWQ9JXgsIGNhbl9kbGM9JXgsIGRhdGE9JXMnICUgZGlzc2VjdF9jYW5fZnJhbWUoY2YpKQorCisgICAgICAgdHJ5OgorICAgICAgICAgICBzLnNlbmQoY2YpCisgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHByaW50KCdFcnJvciBzZW5kaW5nIENBTiBmcmFtZScpCisKKyAgICAgICB0cnk6CisgICAgICAgICAgIHMuc2VuZChidWlsZF9jYW5fZnJhbWUoMHgwMSwgYidceDAxXHgwMlx4MDMnKSkKKyAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHNlbmRpbmcgQ0FOIGZyYW1lJykKIAogUnVubmluZyBhbiBleGFtcGxlIHNldmVyYWwgdGltZXMgd2l0aCB0b28gc21hbGwgZGVsYXkgYmV0d2VlbiBleGVjdXRpb25zLCBjb3VsZAogbGVhZCB0byB0aGlzIGVycm9yOjoKIAotICAgc29ja2V0LmVycm9yOiBbRXJybm8gOThdIEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UKKyAgIE9TRXJyb3I6IFtFcnJubyA5OF0gQWRkcmVzcyBhbHJlYWR5IGluIHVzZQogCiBUaGlzIGlzIGJlY2F1c2UgdGhlIHByZXZpb3VzIGV4ZWN1dGlvbiBoYXMgbGVmdCB0aGUgc29ja2V0IGluIGEgYGBUSU1FX1dBSVRgYAogc3RhdGUsIGFuZCBjYW4ndCBiZSBpbW1lZGlhdGVseSByZXVzZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCA1Mjg3ZjE3Li43ZGMwY2M3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTE1NCw5ICsxNTQsMjEgQEAKIC4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKIAogICAgSGFuZGxlIHJlcXVlc3RzIHVudGlsIGFuIGV4cGxpY2l0IDptZXRoOmBzaHV0ZG93bmAgcmVxdWVzdC4KLSAgIFBvbGwgZm9yIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLgotICAgSWYgeW91IG5lZWQgdG8gZG8gcGVyaW9kaWMgdGFza3MsIGRvIHRoZW0gaW4gYW5vdGhlciB0aHJlYWQuCisgICBQb2xsIGZvciBzaHV0ZG93biBldmVyeSAqcG9sbF9pbnRlcnZhbCogc2Vjb25kcy4gSWdub3JlcyA6YXR0cjpgc2VsZi50aW1lb3V0YC4gIEl0IGFsc28gY2FsbHMKKyAgIDptZXRoOmBzZXJ2aWNlX2FjdGlvbnNgIHdoaWNoIG1heSBiZSB1c2VkIGJ5IGEgc3ViY2xhc3Mgb3IgTWl4aW4gdG8gcHJvdmlkZQorICAgdmFyaW91cyBjbGVhbnVwIGFjdGlvbnMuICBGb3IgZS5nLiBGb3JraW5nTWl4aW4gY2xhc3MgdXNlcworICAgOm1ldGg6YHNlcnZpY2VfYWN0aW9uc2AgdG8gY2xlYW51cCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3Nlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCBzZXJ2aWNlX2FjdGlvbnMgY2FsbCB0byB0aGUgc2VydmVfZm9yZXZlciBtZXRob2QuCisKKworLi4gbWV0aG9kOjogQmFzZVNlcnZlci5zZXJ2aWNlX2FjdGlvbnMoKQorCisgICBUaGlzIGlzIGNhbGxlZCBieSB0aGUgc2VydmVfZm9yZXZlciBsb29wLiBUaGlzIG1ldGhvZCBpcyBjYW4gYmUgb3ZlcnJpZGRlbgorICAgYnkgTWl4aW4ncyB0byBhZGQgY2xlYW51cCBvciBzZXJ2aWNlIHNwZWNpZmljIGFjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdCBiL0RvYy9saWJyYXJ5L3NvbWVvcy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDA5YmIuLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS4uIF9zb21lb3M6Ci0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLU9wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIGludGVyZmFjZXMgdG8gb3BlcmF0aW5nIHN5c3RlbQotZmVhdHVyZXMgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIHNlbGVjdGVkIG9wZXJhdGluZyBzeXN0ZW1zIG9ubHkuIFRoZSBpbnRlcmZhY2VzCi1hcmUgZ2VuZXJhbGx5IG1vZGVsZWQgYWZ0ZXIgdGhlIFVuaXggb3IgQyBpbnRlcmZhY2VzIGJ1dCB0aGV5IGFyZSBhdmFpbGFibGUgb24KLXNvbWUgb3RoZXIgc3lzdGVtcyBhcyB3ZWxsIChlLmcuIFdpbmRvd3MpLiAgSGVyZSdzIGFuIG92ZXJ2aWV3OgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzZWxlY3QucnN0Ci0gICB0aHJlYWRpbmcucnN0Ci0gICBtdWx0aXByb2Nlc3NpbmcucnN0Ci0gICBjb25jdXJyZW50LmZ1dHVyZXMucnN0Ci0gICBtbWFwLnJzdAotICAgcmVhZGxpbmUucnN0Ci0gICBybGNvbXBsZXRlci5yc3QKLSAgIGR1bW15X3RocmVhZGluZy5yc3QKLSAgIF90aHJlYWQucnN0Ci0gICBfZHVtbXlfdGhyZWFkLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCA5M2Y2ZDgyLi43ZDE1NmRlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTM2OSw2ICszNjksMjIgQEAKICAgICAgIG1ldGhvZCB3aXRoIDpjb25zdDpgTm9uZWAgZm9yICpoYW5kbGVyKi4KIAogCisgICAuLiBtZXRob2Q6OiBzZXRfdHJhY2VfY2FsbGJhY2sodHJhY2VfY2FsbGJhY2spCisKKyAgICAgIFJlZ2lzdGVycyAqdHJhY2VfY2FsbGJhY2sqIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IHRoYXQgaXMKKyAgICAgIGFjdHVhbGx5IGV4ZWN1dGVkIGJ5IHRoZSBTUUxpdGUgYmFja2VuZC4KKworICAgICAgVGhlIG9ubHkgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBpcyB0aGUgc3RhdGVtZW50IChhcyBzdHJpbmcpIHRoYXQKKyAgICAgIGlzIGJlaW5nIGV4ZWN1dGVkLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpcyBpZ25vcmVkLiBOb3RlIHRoYXQKKyAgICAgIHRoZSBiYWNrZW5kIGRvZXMgbm90IG9ubHkgcnVuIHN0YXRlbWVudHMgcGFzc2VkIHRvIHRoZSA6bWV0aDpgQ3Vyc29yLmV4ZWN1dGVgCisgICAgICBtZXRob2RzLiAgT3RoZXIgc291cmNlcyBpbmNsdWRlIHRoZSB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IG9mIHRoZSBQeXRob24KKyAgICAgIG1vZHVsZSBhbmQgdGhlIGV4ZWN1dGlvbiBvZiB0cmlnZ2VycyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLgorCisgICAgICBQYXNzaW5nIDpjb25zdDpgTm9uZWAgYXMgKnRyYWNlX2NhbGxiYWNrKiB3aWxsIGRpc2FibGUgdGhlIHRyYWNlIGNhbGxiYWNrLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBtZXRob2Q6OiBlbmFibGVfbG9hZF9leHRlbnNpb24oZW5hYmxlZCkKIAogICAgICAgVGhpcyByb3V0aW5lIGFsbG93cy9kaXNhbGxvd3MgdGhlIFNRTGl0ZSBlbmdpbmUgdG8gbG9hZCBTUUxpdGUgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggMGY1Y2VhMi4uNzcxOTZlMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC01Myw5ICs1Myw2OSBAQAogICAgKGN1cnJlbnRseSBwcm92aWRlZCBieSB0aGUgT3BlblNTTCBsaWJyYXJ5KS4gIFRoaXMgc2lnbmlmaWVzIHNvbWUKICAgIHByb2JsZW0gaW4gdGhlIGhpZ2hlci1sZXZlbCBlbmNyeXB0aW9uIGFuZCBhdXRoZW50aWNhdGlvbiBsYXllciB0aGF0J3MKICAgIHN1cGVyaW1wb3NlZCBvbiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGNvbm5lY3Rpb24uICBUaGlzIGVycm9yCi0gICBpcyBhIHN1YnR5cGUgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaW4gdHVybiBpcyBhIHN1YnR5cGUgb2YKLSAgIDpleGM6YElPRXJyb3JgLiAgVGhlIGVycm9yIGNvZGUgYW5kIG1lc3NhZ2Ugb2YgOmV4YzpgU1NMRXJyb3JgIGluc3RhbmNlcwotICAgYXJlIHByb3ZpZGVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCisgICBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgT1NFcnJvcmAuICBUaGUgZXJyb3IgY29kZSBhbmQgbWVzc2FnZSBvZgorICAgOmV4YzpgU1NMRXJyb3JgIGluc3RhbmNlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFNTTEVycm9yYCB1c2VkIHRvIGJlIGEgc3VidHlwZSBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaWJyYXJ5CisKKyAgICAgIEEgc3RyaW5nIG1uZW1vbmljIGRlc2lnbmF0aW5nIHRoZSBPcGVuU1NMIHN1Ym1vZHVsZSBpbiB3aGljaCB0aGUgZXJyb3IKKyAgICAgIG9jY3VycmVkLCBzdWNoIGFzIGBgU1NMYGAsIGBgUEVNYGAgb3IgYGBYNTA5YGAuICBUaGUgcmFuZ2Ugb2YgcG9zc2libGUKKyAgICAgIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBPcGVuU1NMIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiByZWFzb24KKworICAgICAgQSBzdHJpbmcgbW5lbW9uaWMgZGVzaWduYXRpbmcgdGhlIHJlYXNvbiB0aGlzIGVycm9yIG9jY3VycmVkLCBmb3IKKyAgICAgIGV4YW1wbGUgYGBDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEYGAuICBUaGUgcmFuZ2Ugb2YgcG9zc2libGUKKyAgICAgIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBPcGVuU1NMIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xaZXJvUmV0dXJuRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgYW5kCisgICB0aGUgU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGNsZWFubHkuICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0CisgICBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IChyZWFkIFRDUCkgaGFzIGJlZW4gY2xvc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMV2FudFJlYWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgYnkgYSA6cmVmOmBub24tYmxvY2tpbmcgU1NMIHNvY2tldAorICAgPHNzbC1ub25ibG9ja2luZz5gIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgZGF0YSwgYnV0IG1vcmUgZGF0YSBuZWVkcworICAgdG8gYmUgcmVjZWl2ZWQgb24gdGhlIHVuZGVybHlpbmcgVENQIHRyYW5zcG9ydCBiZWZvcmUgdGhlIHJlcXVlc3QgY2FuIGJlCisgICBmdWxmaWxsZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xXYW50V3JpdGVFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgYnkgYSA6cmVmOmBub24tYmxvY2tpbmcgU1NMIHNvY2tldAorICAgPHNzbC1ub25ibG9ja2luZz5gIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgZGF0YSwgYnV0IG1vcmUgZGF0YSBuZWVkcworICAgdG8gYmUgc2VudCBvbiB0aGUgdW5kZXJseWluZyBUQ1AgdHJhbnNwb3J0IGJlZm9yZSB0aGUgcmVxdWVzdCBjYW4gYmUKKyAgIGZ1bGZpbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFN5c2NhbGxFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiBhIHN5c3RlbSBlcnJvciB3YXMgZW5jb3VudGVyZWQKKyAgIHdoaWxlIHRyeWluZyB0byBmdWxmaWxsIGFuIG9wZXJhdGlvbiBvbiBhIFNTTCBzb2NrZXQuICBVbmZvcnR1bmF0ZWx5LAorICAgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gaW5zcGVjdCB0aGUgb3JpZ2luYWwgZXJybm8gbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMRU9GRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gdGhlIFNTTCBjb25uZWN0aW9uIGhhcyBiZWVuCisgICB0ZXJtaW5hdGVkIGFicnVwdGx5LiAgR2VuZXJhbGx5LCB5b3Ugc2hvdWxkbid0IHRyeSB0byByZXVzZSB0aGUgdW5kZXJseWluZworICAgdHJhbnNwb3J0IHdoZW4gdGhpcyBlcnJvciBpcyBlbmNvdW50ZXJlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGV4Y2VwdGlvbjo6IENlcnRpZmljYXRlRXJyb3IKIApAQCAtMTYxLDYgKzIyMSwzNSBAQAogUmFuZG9tIGdlbmVyYXRpb24KIF5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIGZ1bmN0aW9uOjogUkFORF9ieXRlcyhudW0pCisKKyAgIFJldHVybnMgKm51bSogY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIFJhaXNlcyBhbgorICAgOmNsYXNzOmBTU0xFcnJvcmAgaWYgdGhlIFBSTkcgaGFzIG5vdCBiZWVuIHNlZWRlZCB3aXRoIGVub3VnaCBkYXRhIG9yIGlmIHRoZQorICAgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgUkFORCBtZXRob2QuIDpmdW5jOmBSQU5EX3N0YXR1c2AKKyAgIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIFBSTkcgYW5kIDpmdW5jOmBSQU5EX2FkZGAgY2FuIGJlIHVzZWQKKyAgIHRvIHNlZWQgdGhlIFBSTkcuCisKKyAgIFJlYWQgdGhlIFdpa2lwZWRpYSBhcnRpY2xlLCBgQ3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIKKyAgIGdlbmVyYXRvciAoQ1NQUk5HKQorICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3J5cHRvZ3JhcGhpY2FsbHlfc2VjdXJlX3BzZXVkb3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yPmBfLAorICAgdG8gZ2V0IHRoZSByZXF1aXJlbWVudHMgb2YgYSBjcnlwdG9ncmFwaGljYWxseSBnZW5lcmF0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IFJBTkRfcHNldWRvX2J5dGVzKG51bSkKKworICAgUmV0dXJucyAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpOiBieXRlcyBhcmUgKm51bSogcHNldWRvLXJhbmRvbSBieXRlcywKKyAgIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZSBpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseQorICAgc3Ryb25nLiBSYWlzZXMgYW4gOmNsYXNzOmBTU0xFcnJvcmAgaWYgdGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQorICAgY3VycmVudCBSQU5EIG1ldGhvZC4KKworICAgR2VuZXJhdGVkIHBzZXVkby1yYW5kb20gYnl0ZSBzZXF1ZW5jZXMgd2lsbCBiZSB1bmlxdWUgaWYgdGhleSBhcmUgb2YKKyAgIHN1ZmZpY2llbnQgbGVuZ3RoLCBidXQgYXJlIG5vdCBuZWNlc3NhcmlseSB1bnByZWRpY3RhYmxlLiBUaGV5IGNhbiBiZSB1c2VkCisgICBmb3Igbm9uLWNyeXB0b2dyYXBoaWMgcHVycG9zZXMgYW5kIGZvciBjZXJ0YWluIHB1cnBvc2VzIGluIGNyeXB0b2dyYXBoaWMKKyAgIHByb3RvY29scywgYnV0IHVzdWFsbHkgbm90IGZvciBrZXkgZ2VuZXJhdGlvbiBldGMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBmdW5jdGlvbjo6IFJBTkRfc3RhdHVzKCkKIAogICAgUmV0dXJucyBUcnVlIGlmIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGhhcyBiZWVuIHNlZWRlZCB3aXRoCkBAIC0xNzAsNyArMjU5LDcgQEAKIAogLi4gZnVuY3Rpb246OiBSQU5EX2VnZChwYXRoKQogCi0gICBJZiB5b3UgYXJlIHJ1bm5pbmcgYW4gZW50cm9weS1nYXRoZXJpbmcgZGFlbW9uIChFR0QpIHNvbWV3aGVyZSwgYW5kIGBgcGF0aGBgCisgICBJZiB5b3UgYXJlIHJ1bm5pbmcgYW4gZW50cm9weS1nYXRoZXJpbmcgZGFlbW9uIChFR0QpIHNvbWV3aGVyZSwgYW5kICpwYXRoKgogICAgaXMgdGhlIHBhdGhuYW1lIG9mIGEgc29ja2V0IGNvbm5lY3Rpb24gb3BlbiB0byBpdCwgdGhpcyB3aWxsIHJlYWQgMjU2IGJ5dGVzCiAgICBvZiByYW5kb21uZXNzIGZyb20gdGhlIHNvY2tldCwgYW5kIGFkZCBpdCB0byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyCiAgICBnZW5lcmF0b3IgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5IG9mIGdlbmVyYXRlZCBzZWNyZXQga2V5cy4gIFRoaXMgaXMKQEAgLTE4MSw4ICsyNzAsOCBAQAogCiAuLiBmdW5jdGlvbjo6IFJBTkRfYWRkKGJ5dGVzLCBlbnRyb3B5KQogCi0gICBNaXhlcyB0aGUgZ2l2ZW4gYGBieXRlc2BgIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKLSAgIHBhcmFtZXRlciBgYGVudHJvcHlgYCAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4KKyAgIE1peGVzIHRoZSBnaXZlbiAqYnl0ZXMqIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKKyAgIHBhcmFtZXRlciAqZW50cm9weSogKGEgZmxvYXQpIGlzIGEgbG93ZXIgYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluCiAgICBzdHJpbmcgKHNvIHlvdSBjYW4gYWx3YXlzIHVzZSA6Y29uc3Q6YDAuMGApLiAgU2VlIDpyZmM6YDE3NTBgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBzb3VyY2VzIG9mIGVudHJvcHkuCiAKQEAgLTIzOCw2ICszMjcsOSBAQAogICAgd2lsbCBhdHRlbXB0IHRvIHZhbGlkYXRlIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgYWdhaW5zdCB0aGF0IHNldCBvZiByb290CiAgICBjZXJ0aWZpY2F0ZXMsIGFuZCB3aWxsIGZhaWwgaWYgdGhlIHZhbGlkYXRpb24gYXR0ZW1wdCBmYWlscy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IElQdjYtY29tcGF0aWJsZS4KKwogLi4gZnVuY3Rpb246OiBERVJfY2VydF90b19QRU1fY2VydChERVJfY2VydF9ieXRlcykKIAogICAgR2l2ZW4gYSBjZXJ0aWZpY2F0ZSBhcyBhIERFUi1lbmNvZGVkIGJsb2Igb2YgYnl0ZXMsIHJldHVybnMgYSBQRU0tZW5jb2RlZApAQCAtMzQ1LDYgKzQzNyw0NiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gZGF0YTo6IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorCisgICBVc2UgdGhlIHNlcnZlcidzIGNpcGhlciBvcmRlcmluZyBwcmVmZXJlbmNlLCByYXRoZXIgdGhhbiB0aGUgY2xpZW50J3MuCisgICBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIGNsaWVudCBzb2NrZXRzIGFuZCBTU0x2MiBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9TSU5HTEVfREhfVVNFCisKKyAgIFByZXZlbnRzIHJlLXVzZSBvZiB0aGUgc2FtZSBESCBrZXkgZm9yIGRpc3RpbmN0IFNTTCBzZXNzaW9ucy4gIFRoaXMKKyAgIGltcHJvdmVzIGZvcndhcmQgc2VjcmVjeSBidXQgcmVxdWlyZXMgbW9yZSBjb21wdXRhdGlvbmFsIHJlc291cmNlcy4KKyAgIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9TSU5HTEVfRUNESF9VU0UKKworICAgUHJldmVudHMgcmUtdXNlIG9mIHRoZSBzYW1lIEVDREgga2V5IGZvciBkaXN0aW5jdCBTU0wgc2Vzc2lvbnMuICBUaGlzCisgICBpbXByb3ZlcyBmb3J3YXJkIHNlY3JlY3kgYnV0IHJlcXVpcmVzIG1vcmUgY29tcHV0YXRpb25hbCByZXNvdXJjZXMuCisgICBUaGlzIG9wdGlvbiBvbmx5IGFwcGxpZXMgdG8gc2VydmVyIHNvY2tldHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogT1BfTk9fQ09NUFJFU1NJT04KKworICAgRGlzYWJsZSBjb21wcmVzc2lvbiBvbiB0aGUgU1NMIGNoYW5uZWwuICBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgYXBwbGljYXRpb24KKyAgIHByb3RvY29sIHN1cHBvcnRzIGl0cyBvd24gY29tcHJlc3Npb24gc2NoZW1lLgorCisgICBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIE9wZW5TU0wgMS4wLjAgYW5kIGxhdGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IEhBU19FQ0RICisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQKKyAgIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZS4gIFRoaXMgc2hvdWxkIGJlIHRydWUgdW5sZXNzIHRoZSBmZWF0dXJlIHdhcworICAgZXhwbGljaXRseSBkaXNhYmxlZCBieSB0aGUgZGlzdHJpYnV0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBkYXRhOjogSEFTX1NOSQogCiAgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHRoZSAqU2VydmVyIE5hbWUKQEAgLTM1NCw2ICs0ODYsMjMgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGRhdGE6OiBIQVNfTlBOCisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgKk5leHQgUHJvdG9jb2wKKyAgIE5lZ290aWF0aW9uKiBhcyBkZXNjcmliZWQgaW4gdGhlIGBOUE4gZHJhZnQgc3BlY2lmaWNhdGlvbgorICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtbmV4dHByb3RvbmVnPmBfLiBXaGVuIHRydWUsCisgICB5b3UgY2FuIHVzZSB0aGUgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIG1ldGhvZCB0byBhZHZlcnRpc2UKKyAgIHdoaWNoIHByb3RvY29scyB5b3Ugd2FudCB0byBzdXBwb3J0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IENIQU5ORUxfQklORElOR19UWVBFUworCisgICBMaXN0IG9mIHN1cHBvcnRlZCBUTFMgY2hhbm5lbCBiaW5kaW5nIHR5cGVzLiAgU3RyaW5ncyBpbiB0aGlzIGxpc3QKKyAgIGNhbiBiZSB1c2VkIGFzIGFyZ3VtZW50cyB0byA6bWV0aDpgU1NMU29ja2V0LmdldF9jaGFubmVsX2JpbmRpbmdgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZGF0YTo6IE9QRU5TU0xfVkVSU0lPTgogCiAgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIE9wZW5TU0wgbGlicmFyeSBsb2FkZWQgYnkgdGhlIGludGVycHJldGVyOjoKQEAgLTQ3OSw2ICs2MjgsMzcgQEAKICAgIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIgb2Ygc2VjcmV0CiAgICBiaXRzIGJlaW5nIHVzZWQuICBJZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLCByZXR1cm5zIGBgTm9uZWBgLgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuY29tcHJlc3Npb24oKQorCisgICBSZXR1cm4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiZWluZyB1c2VkIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYAorICAgaWYgdGhlIGNvbm5lY3Rpb24gaXNuJ3QgY29tcHJlc3NlZC4KKworICAgSWYgdGhlIGhpZ2hlci1sZXZlbCBwcm90b2NvbCBzdXBwb3J0cyBpdHMgb3duIGNvbXByZXNzaW9uIG1lY2hhbmlzbSwKKyAgIHlvdSBjYW4gdXNlIDpkYXRhOmBPUF9OT19DT01QUkVTU0lPTmAgdG8gZGlzYWJsZSBTU0wtbGV2ZWwgY29tcHJlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZyhjYl90eXBlPSJ0bHMtdW5pcXVlIikKKworICAgR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24sIGFzIGEgYnl0ZXMgb2JqZWN0LiAgUmV0dXJucworICAgYGBOb25lYGAgaWYgbm90IGNvbm5lY3RlZCBvciB0aGUgaGFuZHNoYWtlIGhhcyBub3QgYmVlbiBjb21wbGV0ZWQuCisKKyAgIFRoZSAqY2JfdHlwZSogcGFyYW1ldGVyIGFsbG93IHNlbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBjaGFubmVsIGJpbmRpbmcKKyAgIHR5cGUuIFZhbGlkIGNoYW5uZWwgYmluZGluZyB0eXBlcyBhcmUgbGlzdGVkIGluIHRoZQorICAgOmRhdGE6YENIQU5ORUxfQklORElOR19UWVBFU2AgbGlzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSAndGxzLXVuaXF1ZScgY2hhbm5lbAorICAgYmluZGluZywgZGVmaW5lZCBieSA6cmZjOmA1OTI5YCwgaXMgc3VwcG9ydGVkLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZQorICAgcmFpc2VkIGlmIGFuIHVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIGlzIHJlcXVlc3RlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorCisgICBSZXR1cm5zIHRoZSBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUy9TU0wgaGFuZHNoYWtlLiBJZgorICAgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIHdhcyBub3QgY2FsbGVkLCBvciBpZiB0aGUgb3RoZXIgcGFydHkKKyAgIGRvZXMgbm90IHN1cHBvcnQgTlBOLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgeWV0IGhhcHBlbmVkLCB0aGlzIHdpbGwKKyAgIHJldHVybiBgYE5vbmVgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC51bndyYXAoKQogCkBAIC00ODgsNyArNjY4LDYgQEAKICAgIHJldHVybmVkIHNvY2tldCBzaG91bGQgYWx3YXlzIGJlIHVzZWQgZm9yIGZ1cnRoZXIgY29tbXVuaWNhdGlvbiB3aXRoIHRoZQogICAgb3RoZXIgc2lkZSBvZiB0aGUgY29ubmVjdGlvbiwgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIHNvY2tldC4KIAotCiAuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuY29udGV4dAogCiAgICBUaGUgOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3QgdGhpcyBTU0wgc29ja2V0IGlzIHRpZWQgdG8uICBJZiB0aGUgU1NMCkBAIC01MTgsNyArNjk3LDcgQEAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCi0uLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lKQorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSkKIAogICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBjZXJ0aWZpY2F0ZS4gIFRoZSAqY2VydGZpbGUqCiAgICBzdHJpbmcgbXVzdCBiZSB0aGUgcGF0aCB0byBhIHNpbmdsZSBmaWxlIGluIFBFTSBmb3JtYXQgY29udGFpbmluZyB0aGUKQEAgLTUyOSw5ICs3MDgsMjUgQEAKICAgIDpyZWY6YHNzbC1jZXJ0aWZpY2F0ZXNgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgY2VydGlmaWNhdGUKICAgIGlzIHN0b3JlZCBpbiB0aGUgKmNlcnRmaWxlKi4KIAorICAgVGhlICpwYXNzd29yZCogYXJndW1lbnQgbWF5IGJlIGEgZnVuY3Rpb24gdG8gY2FsbCB0byBnZXQgdGhlIHBhc3N3b3JkIGZvcgorICAgZGVjcnlwdGluZyB0aGUgcHJpdmF0ZSBrZXkuICBJdCB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBwcml2YXRlIGtleSBpcworICAgZW5jcnlwdGVkIGFuZCBhIHBhc3N3b3JkIGlzIG5lY2Vzc2FyeS4gIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLAorICAgYW5kIGl0IHNob3VsZCByZXR1cm4gYSBzdHJpbmcsIGJ5dGVzLCBvciBieXRlYXJyYXkuICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzCisgICBhIHN0cmluZyBpdCB3aWxsIGJlIGVuY29kZWQgYXMgVVRGLTggYmVmb3JlIHVzaW5nIGl0IHRvIGRlY3J5cHQgdGhlIGtleS4KKyAgIEFsdGVybmF0aXZlbHkgYSBzdHJpbmcsIGJ5dGVzLCBvciBieXRlYXJyYXkgdmFsdWUgbWF5IGJlIHN1cHBsaWVkIGRpcmVjdGx5CisgICBhcyB0aGUgKnBhc3N3b3JkKiBhcmd1bWVudC4gIEl0IHdpbGwgYmUgaWdub3JlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgbm90CisgICBlbmNyeXB0ZWQgYW5kIG5vIHBhc3N3b3JkIGlzIG5lZWRlZC4KKworICAgSWYgdGhlICpwYXNzd29yZCogYXJndW1lbnQgaXMgbm90IHNwZWNpZmllZCBhbmQgYSBwYXNzd29yZCBpcyByZXF1aXJlZCwKKyAgIE9wZW5TU0wncyBidWlsdC1pbiBwYXNzd29yZCBwcm9tcHRpbmcgbWVjaGFuaXNtIHdpbGwgYmUgdXNlZCB0bworICAgaW50ZXJhY3RpdmVseSBwcm9tcHQgdGhlIHVzZXIgZm9yIGEgcGFzc3dvcmQuCisKICAgIEFuIDpjbGFzczpgU1NMRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgZG9lc24ndAogICAgbWF0Y2ggd2l0aCB0aGUgY2VydGlmaWNhdGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKnBhc3N3b3JkKi4KKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lKQogCiAgICBMb2FkIGEgc2V0IG9mICJjZXJ0aWZpY2F0aW9uIGF1dGhvcml0eSIgKENBKSBjZXJ0aWZpY2F0ZXMgdXNlZCB0byB2YWxpZGF0ZQpAQCAtNTcwLDYgKzc2NSw1MyBAQAogICAgICAgd2hlbiBjb25uZWN0ZWQsIHRoZSA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgbWV0aG9kIG9mIFNTTCBzb2NrZXRzIHdpbGwKICAgICAgIGdpdmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIuCiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHMocHJvdG9jb2xzKQorCisgICBTcGVjaWZ5IHdoaWNoIHByb3RvY29scyB0aGUgc29ja2V0IHNob3VsZCBhdmVydGlzZSBkdXJpbmcgdGhlIFNTTC9UTFMKKyAgIGhhbmRzaGFrZS4gSXQgc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzLCBsaWtlIGBgWydodHRwLzEuMScsICdzcGR5LzInXWBgLAorICAgb3JkZXJlZCBieSBwcmVmZXJlbmNlLiBUaGUgc2VsZWN0aW9uIG9mIGEgcHJvdG9jb2wgd2lsbCBoYXBwZW4gZHVyaW5nIHRoZQorICAgaGFuZHNoYWtlLCBhbmQgd2lsbCBwbGF5IG91dCBhY2NvcmRpbmcgdG8gdGhlIGBOUE4gZHJhZnQgc3BlY2lmaWNhdGlvbgorICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtbmV4dHByb3RvbmVnPmBfLiBBZnRlciBhCisgICBzdWNjZXNzZnVsIGhhbmRzaGFrZSwgdGhlIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sYCBtZXRob2Qgd2lsbAorICAgcmV0dXJuIHRoZSBhZ3JlZWQtdXBvbiBwcm90b2NvbC4KKworICAgVGhpcyBtZXRob2Qgd2lsbCByYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpZiA6ZGF0YTpgSEFTX05QTmAgaXMKKyAgIEZhbHNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcyhkaGZpbGUpCisKKyAgIExvYWQgdGhlIGtleSBnZW5lcmF0aW9uIHBhcmFtZXRlcnMgZm9yIERpZmZpZS1IZWxtYW4gKERIKSBrZXkgZXhjaGFuZ2UuCisgICBVc2luZyBESCBrZXkgZXhjaGFuZ2UgaW1wcm92ZXMgZm9yd2FyZCBzZWNyZWN5IGF0IHRoZSBleHBlbnNlIG9mCisgICBjb21wdXRhdGlvbmFsIHJlc291cmNlcyAoYm90aCBvbiB0aGUgc2VydmVyIGFuZCBvbiB0aGUgY2xpZW50KS4KKyAgIFRoZSAqZGhmaWxlKiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIERICisgICBwYXJhbWV0ZXJzIGluIFBFTSBmb3JtYXQuCisKKyAgIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIGNsaWVudCBzb2NrZXRzLiAgWW91IGNhbiBhbHNvIHVzZSB0aGUKKyAgIDpkYXRhOmBPUF9TSU5HTEVfREhfVVNFYCBvcHRpb24gdG8gZnVydGhlciBpbXByb3ZlIHNlY3VyaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZShjdXJ2ZV9uYW1lKQorCisgICBTZXQgdGhlIGN1cnZlIG5hbWUgZm9yIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuIChFQ0RIKSBrZXkKKyAgIGV4Y2hhbmdlLiAgRUNESCBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHJlZ3VsYXIgREggd2hpbGUgYXJndWFibHkKKyAgIGFzIHNlY3VyZS4gIFRoZSAqY3VydmVfbmFtZSogcGFyYW1ldGVyIHNob3VsZCBiZSBhIHN0cmluZyBkZXNjcmliaW5nCisgICBhIHdlbGwta25vd24gZWxsaXB0aWMgY3VydmUsIGZvciBleGFtcGxlIGBgcHJpbWUyNTZ2MWBgIGZvciBhIHdpZGVseQorICAgc3VwcG9ydGVkIGN1cnZlLgorCisgICBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBjbGllbnQgc29ja2V0cy4gIFlvdSBjYW4gYWxzbyB1c2UgdGhlCisgICA6ZGF0YTpgT1BfU0lOR0xFX0VDREhfVVNFYCBvcHRpb24gdG8gZnVydGhlciBpbXByb3ZlIHNlY3VyaXR5LgorCisgICBUaGlzIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGlmIDpkYXRhOmBIQVNfRUNESGAgaXMgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIGBTU0wvVExTICYgUGVyZmVjdCBGb3J3YXJkIFNlY3JlY3kgPGh0dHA6Ly92aW5jZW50LmJlcm5hdC5pbS9lbi9ibG9nLzIwMTEtc3NsLXBlcmZlY3QtZm9yd2FyZC1zZWNyZWN5Lmh0bWw+YF8KKyAgICAgICAgIFZpbmNlbnQgQmVybmF0LgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCiAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKQEAgLTk4NCwxMyArMTIyNiwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NvY2tdLCBbXSwgW10pCi0gICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc29ja10sIFtdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzb2NrXSwgW10sIFtdKQorICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NvY2tdLCBbXSkKIAogCiAuLiBfc3NsLXNlY3VyaXR5OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdAppbmRleCA3ZGU5OGI2Li5mNDdmNDY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdApAQCAtMTA0LDYgKzEwNCwxNiBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICB3YWxrdHJlZShzeXMuYXJndlsxXSwgdmlzaXRmaWxlKQogCitBbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gY292ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgorcmVhZGFibGUgc3RyaW5nOgorCisuLiBmdW5jdGlvbjo6IGZpbGVtb2RlKG1vZGUpCisKKyAgIENvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIEFsbCB0aGUgdmFyaWFibGVzIGJlbG93IGFyZSBzaW1wbHkgc3ltYm9saWMgaW5kZXhlcyBpbnRvIHRoZSAxMC10dXBsZSByZXR1cm5lZAogYnkgOmZ1bmM6YG9zLnN0YXRgLCA6ZnVuYzpgb3MuZnN0YXRgIG9yIDpmdW5jOmBvcy5sc3RhdGAuCiAKQEAgLTM0NCw0ICszNTQsMyBAQAogICAgVGhlIGZpbGUgaXMgYSBzbmFwc2hvdCBmaWxlLgogCiBTZWUgdGhlIFwqQlNEIG9yIE1hYyBPUyBzeXN0ZW1zIG1hbiBwYWdlIDptYW5wYWdlOmBjaGZsYWdzKDIpYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDk2ODgzOTMuLmVkNWIzYWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTE1LDYgKzE1LDEwIEBACiBUaGUgcHJpbmNpcGFsIGJ1aWx0LWluIHR5cGVzIGFyZSBudW1lcmljcywgc2VxdWVuY2VzLCBtYXBwaW5ncywgY2xhc3NlcywKIGluc3RhbmNlcyBhbmQgZXhjZXB0aW9ucy4KIAorU29tZSBjb2xsZWN0aW9uIGNsYXNzZXMgYXJlIG11dGFibGUuICBUaGUgbWV0aG9kcyB0aGF0IGFkZCwgc3VidHJhY3QsIG9yCityZWFycmFuZ2UgdGhlaXIgbWVtYmVycyBpbiBwbGFjZSwgYW5kIGRvbid0IHJldHVybiBhIHNwZWNpZmljIGl0ZW0sIG5ldmVyIHJldHVybgordGhlIGNvbGxlY3Rpb24gaW5zdGFuY2UgaXRzZWxmIGJ1dCBgYE5vbmVgYC4KKwogU29tZSBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgc2V2ZXJhbCBvYmplY3QgdHlwZXM7IGluIHBhcnRpY3VsYXIsCiBwcmFjdGljYWxseSBhbGwgb2JqZWN0cyBjYW4gYmUgY29tcGFyZWQsIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGFuZCBjb252ZXJ0ZWQKIHRvIGEgc3RyaW5nICh3aXRoIHRoZSA6ZnVuYzpgcmVwcmAgZnVuY3Rpb24gb3IgdGhlIHNsaWdodGx5IGRpZmZlcmVudApAQCAtNjQxLDM0ICs2NDUsMzQgQEAKIAogSGVyZSBhcmUgdGhlIHJ1bGVzIGluIGRldGFpbDoKIAotIC0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQotICAgYnkgYGBQYGAsIGRlZmluZSBgYGhhc2goeClgYCBhcyBgYG0gKiBpbnZtb2QobiwgUCkgJSBQYGAsIHdoZXJlIGBgaW52bW9kKG4sCi0gICBQKWBgIGdpdmVzIHRoZSBpbnZlcnNlIG9mIGBgbmBgIG1vZHVsbyBgYFBgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQorICBieSBgYFBgYCwgZGVmaW5lIGBgaGFzaCh4KWBgIGFzIGBgbSAqIGludm1vZChuLCBQKSAlIFBgYCwgd2hlcmUgYGBpbnZtb2QobiwKKyAgUClgYCBnaXZlcyB0aGUgaW52ZXJzZSBvZiBgYG5gYCBtb2R1bG8gYGBQYGAuCiAKLSAtIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBub25uZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgYW5kIGBgbmBgIGlzCi0gICBkaXZpc2libGUgYnkgYGBQYGAgKGJ1dCBgYG1gYCBpcyBub3QpIHRoZW4gYGBuYGAgaGFzIG5vIGludmVyc2UKLSAgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQotICAgYGBoYXNoKHgpYGAgdG8gYmUgdGhlIGNvbnN0YW50IHZhbHVlIGBgc3lzLmhhc2hfaW5mby5pbmZgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMKKyAgZGl2aXNpYmxlIGJ5IGBgUGBgIChidXQgYGBtYGAgaXMgbm90KSB0aGVuIGBgbmBgIGhhcyBubyBpbnZlcnNlCisgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQorICBgYGhhc2goeClgYCB0byBiZSB0aGUgY29uc3RhbnQgdmFsdWUgYGBzeXMuaGFzaF9pbmZvLmluZmBgLgogCi0gLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAotICAgYXMgYGAtaGFzaCgteClgYC4gIElmIHRoZSByZXN1bHRpbmcgaGFzaCBpcyBgYC0xYGAsIHJlcGxhY2UgaXQgd2l0aAotICAgYGAtMmBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAorICBhcyBgYC1oYXNoKC14KWBgLiAgSWYgdGhlIHJlc3VsdGluZyBoYXNoIGlzIGBgLTFgYCwgcmVwbGFjZSBpdCB3aXRoCisgIGBgLTJgYC4KIAotIC0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAotICAgYW5kIGBgc3lzLmhhc2hfaW5mby5uYW5gYCBhcmUgdXNlZCBhcyBoYXNoIHZhbHVlcyBmb3IgcG9zaXRpdmUKLSAgIGluZmluaXR5LCBuZWdhdGl2ZSBpbmZpbml0eSwgb3IgbmFucyAocmVzcGVjdGl2ZWx5KS4gIChBbGwgaGFzaGFibGUKLSAgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKKy0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAorICBhbmQgYGBzeXMuaGFzaF9pbmZvLm5hbmBgIGFyZSB1c2VkIGFzIGhhc2ggdmFsdWVzIGZvciBwb3NpdGl2ZQorICBpbmZpbml0eSwgbmVnYXRpdmUgaW5maW5pdHksIG9yIG5hbnMgKHJlc3BlY3RpdmVseSkuICAoQWxsIGhhc2hhYmxlCisgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKIAotIC0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAotICAgYW5kIGltYWdpbmFyeSBwYXJ0cyBhcmUgY29tYmluZWQgYnkgY29tcHV0aW5nIGBgaGFzaCh6LnJlYWwpICsKLSAgIHN5cy5oYXNoX2luZm8uaW1hZyAqIGhhc2goei5pbWFnKWBgLCByZWR1Y2VkIG1vZHVsbwotICAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCi0gICBgYHJhbmdlKC0yKiooc3lzLmhhc2hfaW5mby53aWR0aCAtIDEpLCAyKiooc3lzLmhhc2hfaW5mby53aWR0aCAtCi0gICAxKSlgYC4gIEFnYWluLCBpZiB0aGUgcmVzdWx0IGlzIGBgLTFgYCwgaXQncyByZXBsYWNlZCB3aXRoIGBgLTJgYC4KKy0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAorICBhbmQgaW1hZ2luYXJ5IHBhcnRzIGFyZSBjb21iaW5lZCBieSBjb21wdXRpbmcgYGBoYXNoKHoucmVhbCkgKworICBzeXMuaGFzaF9pbmZvLmltYWcgKiBoYXNoKHouaW1hZylgYCwgcmVkdWNlZCBtb2R1bG8KKyAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCisgIGBgcmFuZ2UoLTIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0gMSksIDIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0KKyAgMSkpYGAuICBBZ2FpbiwgaWYgdGhlIHJlc3VsdCBpcyBgYC0xYGAsIGl0J3MgcmVwbGFjZWQgd2l0aCBgYC0yYGAuCiAKIAogVG8gY2xhcmlmeSB0aGUgYWJvdmUgcnVsZXMsIGhlcmUncyBzb21lIGV4YW1wbGUgUHl0aG9uIGNvZGUsCi1lcXVpdmFsZW50IHRvIHRoZSBidWlsdGluIGhhc2gsIGZvciBjb21wdXRpbmcgdGhlIGhhc2ggb2YgYSByYXRpb25hbAorZXF1aXZhbGVudCB0byB0aGUgYnVpbHQtaW4gaGFzaCwgZm9yIGNvbXB1dGluZyB0aGUgaGFzaCBvZiBhIHJhdGlvbmFsCiBudW1iZXIsIDpjbGFzczpgZmxvYXRgLCBvciA6Y2xhc3M6YGNvbXBsZXhgOjoKIAogCkBAIC03OTUsMTEwICs3OTksMzUgQEAKIAogLi4gX3R5cGVzc2VxOgogCi1TZXF1ZW5jZSBUeXBlcyAtLS0gOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YHR1cGxlYCwgOmNsYXNzOmByYW5nZWAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU2VxdWVuY2UgVHlwZXMgLS0tIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YHJhbmdlYAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGVyZSBhcmUgc2l4IHNlcXVlbmNlIHR5cGVzOiBzdHJpbmdzLCBieXRlIHNlcXVlbmNlcyAoOmNsYXNzOmBieXRlc2Agb2JqZWN0cyksCi1ieXRlIGFycmF5cyAoOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4gIEZvcgotb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCBjbGFzc2VzLCBhbmQKLXRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4KK0FkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YKKzpyZWY6YGJpbmFyeSBkYXRhIDxiaW5hcnlzZXE+YCBhbmQgOnJlZjpgdGV4dCBzdHJpbmdzIDx0ZXh0c2VxPmAgYXJlCitkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLgogCiAKLS4uIGluZGV4OjoKLSAgIG9iamVjdDogc2VxdWVuY2UKLSAgIG9iamVjdDogc3RyaW5nCi0gICBvYmplY3Q6IGJ5dGVzCi0gICBvYmplY3Q6IGJ5dGVhcnJheQotICAgb2JqZWN0OiB0dXBsZQotICAgb2JqZWN0OiBsaXN0Ci0gICBvYmplY3Q6IHJhbmdlCisuLiBfdHlwZXNzZXEtY29tbW9uOgogCi1TdHJpbmdzIGNvbnRhaW4gVW5pY29kZSBjaGFyYWN0ZXJzLiAgVGhlaXIgbGl0ZXJhbHMgYXJlIHdyaXR0ZW4gaW4gc2luZ2xlIG9yCi1kb3VibGUgcXVvdGVzOiBgYCd4eXp6eSdgYCwgYGAiZnJvYm96eiJgYC4gIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dAotc3RyaW5nIGxpdGVyYWxzLiAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZQotYWxzbyBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLgorQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBjb250YWluIHNpbmdsZSBieXRlcyAtLSB0aGUgZm9ybWVyIGlzIGltbXV0YWJsZQotd2hpbGUgdGhlIGxhdHRlciBpcyBhIG11dGFibGUgc2VxdWVuY2UuCi1CeXRlcyBvYmplY3RzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSB1c2luZyB0aGUKLWNvbnN0cnVjdG9yLCA6ZnVuYzpgYnl0ZXNgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGEgYGBiYGAgcHJlZml4IHdpdGggbm9ybWFsCi1zdHJpbmcgc3ludGF4OiBgYGIneHl6enknYGAuICBUbyBjb25zdHJ1Y3QgYnl0ZSBhcnJheXMsIHVzZSB0aGUKLTpmdW5jOmBieXRlYXJyYXlgIGZ1bmN0aW9uLgorLi4gaW5kZXg6OiBvYmplY3Q6IHNlcXVlbmNlCiAKLVdoaWxlIHN0cmluZyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyAocmVwcmVzZW50ZWQgYnkgc3RyaW5ncyBvZgotbGVuZ3RoIDEpLCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiAqaW50ZWdlcnMqIChiZXR3ZWVuIDAKLWFuZCAyNTUpLCByZXByZXNlbnRpbmcgdGhlIEFTQ0lJIHZhbHVlIG9mIHNpbmdsZSBieXRlcy4gIFRoYXQgbWVhbnMgdGhhdCBmb3IKLWEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgIHdpbGwgYmUgYW4gaW50ZWdlciwgd2hpbGUKLWBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgb2YgbGVuZ3RoIDEuICBUaGUKLXJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApIHNpbmNlIGl0Ci1pcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzUwLCAxOSwgMTAwXSlgYC4gIFlvdSBjYW4gYWx3YXlzCi1jb252ZXJ0IGEgYnl0ZXMgb2JqZWN0IGludG8gYSBsaXN0IG9mIGludGVnZXJzIHVzaW5nIGBgbGlzdChiKWBgLgotCi1BbHNvLCB3aGlsZSBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMsIGJ5dGUgc3RyaW5ncyBhbmQgVW5pY29kZSBzdHJpbmdzCi1jb3VsZCBiZSBleGNoYW5nZWQgZm9yIGVhY2ggb3RoZXIgcmF0aGVyIGZyZWVseSAoYmFycmluZyBlbmNvZGluZyBpc3N1ZXMpLAotc3RyaW5ncyBhbmQgYnl0ZXMgYXJlIG5vdyBjb21wbGV0ZWx5IHNlcGFyYXRlIGNvbmNlcHRzLiAgVGhlcmUncyBubyBpbXBsaWNpdAotZW4tL2RlY29kaW5nIGlmIHlvdSBwYXNzIGFuIG9iamVjdCBvZiB0aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cwotY29tcGFyZXMgdW5lcXVhbCB0byBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QuCi0KLUxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYSwKLWIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvciAobm90IHdpdGhpbiBzcXVhcmUKLWJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcywgYnV0IGFuIGVtcHR5IHR1cGxlIG11c3QgaGF2ZQotdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsIGIsIGNgYCBvciBgYCgpYGAuICBBIHNpbmdsZSBpdGVtIHR1cGxlCi1tdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSwgc3VjaCBhcyBgYChkLClgYC4KLQotT2JqZWN0cyBvZiB0eXBlIHJhbmdlIGFyZSBjcmVhdGVkIHVzaW5nIHRoZSA6ZnVuYzpgcmFuZ2VgIGZ1bmN0aW9uLiAgVGhleSBkb24ndAotc3VwcG9ydCBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24sIGFuZCB1c2luZyA6ZnVuYzpgbWluYCBvciA6ZnVuYzpgbWF4YCBvbgotdGhlbSBpcyBpbmVmZmljaWVudC4KLQotTW9zdCBzZXF1ZW5jZSB0eXBlcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4gIFRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAKLW9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZSBjb21wYXJpc29uIG9wZXJhdGlvbnMuICBUaGUgYGArYGAgYW5kCi1gYCpgYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpYyBvcGVyYXRpb25zLgotWzNdXyBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlIHByb3ZpZGVkIGZvciA6cmVmOmB0eXBlc3NlcS1tdXRhYmxlYC4KK1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlIHR5cGVzLAorYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWAgQUJDIGlzCitwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24KK2N1c3RvbSBzZXF1ZW5jZSB0eXBlcy4KIAogVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5CiAob3BlcmF0aW9ucyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSkuICBJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqCi1hcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGU7ICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmUgaW50ZWdlcnMuCithcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmUgaW50ZWdlcnMgYW5kICp4KiBpcworYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouCiAKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgT3BlcmF0aW9uICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKLSs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKLXwgYGB4IGluIHNgYCAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICB8IFwoMSkgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGB4IG5vdCBpbiBzYGAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyB8IFwoMSkgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzICsgdGBgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgICB8IFwoNikgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8ICp0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzICogbiwgbiAqIHNgYCB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAqcyogICAgICB8IFwoMikgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2ldYGAgICAgICAgICB8ICppKlwgdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICB8IFwoMykgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2k6al1gYCAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg0KSAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2k6ajprXWBgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg1KSAgIHwKLXwgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBsZW4ocylgYCAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBtaW4ocylgYCAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBtYXgocylgYCAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzLmluZGV4KGkpYGAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2UgICB8ICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IG9mICppKiBpbiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzLmNvdW50KGkpYGAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICB8ICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8ICppKiBpbiAqcyogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLQotU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZCBsaXN0cyBhcmUKLWNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0Ci10byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZQotb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUKLTpyZWY6YGNvbXBhcmlzb25zYCBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLikKK1RoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlCitjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgIChyZXBldGl0aW9uKQorb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4KIAogLi4gaW5kZXg6OgogICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBzZXF1ZW5jZTsgdHlwZXMKQEAgLTkxMSwxOCArODQwLDY3IEBACiAgICBwYWlyOiBzbGljZTsgb3BlcmF0aW9uCiAgICBvcGVyYXRvcjogaW4KICAgIG9wZXJhdG9yOiBub3QgaW4KKyAgIHNpbmdsZTogY291bnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBpbmRleCgpIChzZXF1ZW5jZSBtZXRob2QpCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgYGB4IGluIHNgYCAgICAgICAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgIHwgXCgxKSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzIHwgXCgxKSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzICsgdGBgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAgIHwgKDYpKDcpICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzICogbmBgIG9yICAgICAgICAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgIHwgKDIpKDcpICAgfAorfCBgYG4gKiBzYGAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzW2ldYGAgICAgICAgICAgICAgICAgIHwgKmkqXCB0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgIHwgXCgzKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg0KSAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHNbaTpqOmtdYGAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAoMykoNSkgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYGxlbihzKWBgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBtaW4ocylgYCAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgbWF4KHMpYGAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlICAgfCBcKDgpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyICAgICB8ICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKXwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcy5jb3VudCh4KWBgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICB8ICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKK1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsIHR1cGxlcworYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmcgY29ycmVzcG9uZGluZyBlbGVtZW50cy4KK1RoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlCit0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwKK2RldGFpbHMgc2VlIDpyZWY6YGNvbXBhcmlzb25zYCBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLikKIAogTm90ZXM6CiAKICgxKQotICAgV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYWN0IGxpa2UgYQotICAgc3Vic3RyaW5nIHRlc3QuCisgICBXaGlsZSB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlCisgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzCisgICAoc3VjaCBhcyA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWApIGFsc28gdXNlCisgICB0aGVtIGZvciBzdWJzZXF1ZW5jZSB0ZXN0aW5nOjoKKworICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiCisgICAgICBUcnVlCiAKICgyKQogICAgVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gYGAwYGAgYXJlIHRyZWF0ZWQgYXMgYGAwYGAgKHdoaWNoIHlpZWxkcyBhbiBlbXB0eQogICAgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgdGhlIGNvcGllcyBhcmUgc2hhbGxvdzsKICAgIG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSBub3QgY29waWVkLiAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsKLSAgIGNvbnNpZGVyOgorICAgY29uc2lkZXI6OgogCiAgICAgICA+Pj4gbGlzdHMgPSBbW11dICogMwogICAgICAgPj4+IGxpc3RzCkBAIC05MzQsNyArOTEyLDcgQEAKICAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgYGBbW11dYGAgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmcgYW4gZW1wdHkKICAgIGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiBgYFtbXV0gKiAzYGAgYXJlIChwb2ludGVycyB0bykgdGhpcyBzaW5nbGUgZW1wdHkKICAgIGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZiBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4KLSAgIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZiBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6CisgICBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2YgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OjoKIAogICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXQogICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKQpAQCAtOTY1LDMzICs5NDMsNDc2IEBACiAgICBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC4KIAogKDYpCi0gICBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzdHJpbmdzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC4gIFRoaXMgbWVhbnMKLSAgIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMKLSAgIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsCi0gICB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6CisgICBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXcgb2JqZWN0LiAgVGhpcworICAgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEKKyAgIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHNlcXVlbmNlIGxlbmd0aC4gIFRvIGdldCBhIGxpbmVhcgorICAgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6CiAKICAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YHN0cmAgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kIHVzZQotICAgICA6bWV0aDpgc3RyLmpvaW5gIGF0IHRoZSBlbmQ7CisgICAgIDptZXRoOmBzdHIuam9pbmAgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgOmNsYXNzOmBpby5TdHJpbmdJT2AKKyAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlCiAKICAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2UKLSAgICAgOm1ldGg6YGJ5dGVzLmpvaW5gLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlIGNvbmNhdGVuYXRpb24gd2l0aCBhCi0gICAgIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QuICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQKLSAgICAgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtLgorICAgICA6bWV0aDpgYnl0ZXMuam9pbmAgb3IgOmNsYXNzOmBpby5CeXRlc0lPYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZQorICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LiAgOmNsYXNzOmBieXRlYXJyYXlgCisgICAgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbQogCisgICAqIGlmIGNvbmNhdGVuYXRpbmcgOmNsYXNzOmB0dXBsZWAgb2JqZWN0cywgZXh0ZW5kIGEgOmNsYXNzOmBsaXN0YCBpbnN0ZWFkCisKKyAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvbgorCisKKyg3KQorICBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIDpjbGFzczpgcmFuZ2VgKSBvbmx5IHN1cHBvcnQgaXRlbSBzZXF1ZW5jZXMKKyAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCBzdXBwb3J0IHNlcXVlbmNlCisgIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi4KKworKDgpCisgICBgYGluZGV4YGAgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouCisgICBXaGVuIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3cKKyAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZSBleHRyYQorICAgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLCBvbmx5CisgICB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nIHJlbGF0aXZlIHRvCisgICB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGUgc2xpY2UuCisKKworLi4gX3R5cGVzc2VxLWltbXV0YWJsZToKKworSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBpbW11dGFibGU7IHNlcXVlbmNlOyB0eXBlcworICAgb2JqZWN0OiB0dXBsZQorICAgYnVpbHRpbjogaGFzaAorCitUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5IGltcGxlbWVudCB0aGF0IGlzCitub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzIHN1cHBvcnQgZm9yIHRoZSA6ZnVuYzpgaGFzaGAKK2J1aWx0LWluLgorCitUaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgOmNsYXNzOmB0dXBsZWAgaW5zdGFuY2VzLCB0bworYmUgdXNlZCBhcyA6Y2xhc3M6YGRpY3RgIGtleXMgYW5kIHN0b3JlZCBpbiA6Y2xhc3M6YHNldGAgYW5kIDpjbGFzczpgZnJvemVuc2V0YAoraW5zdGFuY2VzLgorCitBdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZSB2YWx1ZXMgd2lsbAorcmVzdWx0IGluIDpleGM6YFR5cGVFcnJvcmAuCisKKworLi4gX3R5cGVzc2VxLW11dGFibGU6CisKK011dGFibGUgU2VxdWVuY2UgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBtdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKKyAgIG9iamVjdDogbGlzdAorICAgb2JqZWN0OiBieXRlYXJyYXkKKworVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzLgorVGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQKK2Vhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLgorCitJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55CitpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUKK2FuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCA6Y2xhc3M6YGJ5dGVhcnJheWAgb25seQorYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS4KKworCisuLiBpbmRleDo6CisgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcworICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBsaXN0OyB0eXBlCisgICBwYWlyOiBzdWJzY3JpcHQ7IGFzc2lnbm1lbnQKKyAgIHBhaXI6IHNsaWNlOyBhc3NpZ25tZW50CisgICBzdGF0ZW1lbnQ6IGRlbAorICAgc2luZ2xlOiBhcHBlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBjbGVhcigpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGNvcHkoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBleHRlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBpbnNlcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBwb3AoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiByZW1vdmUoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiByZXZlcnNlKCkgKHNlcXVlbmNlIG1ldGhvZCkKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09KworfCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5IHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpcyByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCAgIHwgXCgxKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmUgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tsZW4ocyk6bGVuKHMpXSA9IFt4XWBgKSAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tIGBgc2BgICAgfCBcKDUpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgZGVsIHNbOl1gYCkgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mIGBgc2BgfCBcKDUpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgc1s6XWBgKSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbnRlbnRzIG9mICp0KiAoc2FtZSBhcyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gdGBgKSAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgKSAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgIHwgXCgyKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqIHwgXCgzKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSBgYHNbaV0gPT0geGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgIHwgXCg0KSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKK05vdGVzOgorCisoMSkKKyAgICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuCisKKygyKQorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdAorICAgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC4KKworKDMpCisgICBgYHJlbW92ZWBgIHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLgorCisoNCkKKyAgIFRoZSA6bWV0aDpgcmV2ZXJzZWAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZgorICAgc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzIGJ5CisgICBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS4KKworKDUpCisgICA6bWV0aDpgY2xlYXJgIGFuZCA6bWV0aDpgIWNvcHlgIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUKKyAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzbGljaW5nIG9wZXJhdGlvbnMKKyAgIChzdWNoIGFzIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICA6bWV0aDpgY2xlYXJgIGFuZCA6bWV0aDpgIWNvcHlgIG1ldGhvZHMuCisKKworLi4gX3R5cGVzc2VxLWxpc3Q6CisKK0xpc3RzCistLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogbGlzdAorCitMaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mCitob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCB2YXJ5IGJ5CithcHBsaWNhdGlvbikuCisKKy4uIGNsYXNzOjogbGlzdChbaXRlcmFibGVdKQorCisgICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOgorCisgICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGAKKyAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYFthXWBgLCBgYFthLCBiLCBjXWBgCisgICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiBgYFt4IGZvciB4IGluIGl0ZXJhYmxlXWBgCisgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYAorCisgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lCisgICBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYQorICAgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqCisgICBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4KKyAgIEZvciBleGFtcGxlLCBgYGxpc3QoJ2FiYycpYGAgcmV0dXJucyBgYFsnYScsICdiJywgJ2MnXWBgIGFuZAorICAgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSwgMiwgM11gYC4KKyAgIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSBsaXN0LCBgYFtdYGAuCisKKworICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZSA6ZnVuYzpgc29ydGVkYAorICAgYnVpbHQtaW4uCisKKyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgYW5kCisgICA6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZQorICAgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBsaXN0LnNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSkKKworICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgYGA8YGAgY29tcGFyaXNvbnMKKyAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb24gb3BlcmF0aW9ucworICAgICAgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGUgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0CisgICAgICBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuCisKKyAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCBhCisgICAgICBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgZXhhbXBsZSwgYGBrZXk9c3RyLmxvd2VyYGApLgorICAgICAgVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kCisgICAgICB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYAorICAgICAgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlCisgICAgICBrZXkgdmFsdWUuCisKKyAgICAgIFRoZSA6ZnVuYzpgZnVuY3Rvb2xzLmNtcF90b19rZXlgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYSAyLngKKyAgICAgIHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uCisKKyAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3QgZWxlbWVudHMKKyAgICAgIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisKKyAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuCisgICAgICBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlCisgICAgICBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2UgOmZ1bmM6YHNvcnRlZGAgdG8KKyAgICAgIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuCisKKyAgICAgIFRoZSA6bWV0aDpgc29ydGAgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZSBpZiBpdAorICAgICAgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwKKyAgICAgIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW4gbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieQorICAgICAgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLgorCisgICAgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgICAgIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4KKyAgICAgICAgIGluc3BlY3QsIHRoZSBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUKKyAgICAgICAgIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgaXQgY2FuCisgICAgICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuCisKKworLi4gX3R5cGVzc2VxLXR1cGxlOgorCitUdXBsZXMKKy0tLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogdHVwbGUKKworVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZgoraGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgOmZ1bmM6YGVudW1lcmF0ZWAKK2J1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZgoraG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhIDpjbGFzczpgc2V0YCBvcgorOmNsYXNzOmBkaWN0YCBpbnN0YW5jZSkuCisKKy4uIGNsYXNzOjogdHVwbGUoW2l0ZXJhYmxlXSkKKworICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOgorCisgICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiBgYCgpYGAKKyAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6IGBgYSxgYCBvciBgYChhLClgYAorICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgCisgICAqIFVzaW5nIHRoZSA6ZnVuYzpgdHVwbGVgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvciBgYHR1cGxlKGl0ZXJhYmxlKWBgCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lCisgICBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYQorICAgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqCisgICBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsCisgICBgYHR1cGxlKCdhYmMnKWBgIHJldHVybnMgYGAoJ2EnLCAnYicsICdjJylgYCBhbmQKKyAgIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLgorICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCBgYCgpYGAuCisKKyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZSBwYXJlbnRoZXNlcy4KKyAgIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHkgdHVwbGUgY2FzZSwgb3IKKyAgIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuIEZvciBleGFtcGxlLAorICAgYGBmKGEsIGIsIGMpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLCB3aGlsZQorICAgYGBmKChhLCBiLCBjKSlgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlIHNvbGUgYXJndW1lbnQuCisKKyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCisgICBvcGVyYXRpb25zLgorCitGb3IgaGV0ZXJvZ2VuZW91cyBjb2xsZWN0aW9ucyBvZiBkYXRhIHdoZXJlIGFjY2VzcyBieSBuYW1lIGlzIGNsZWFyZXIgdGhhbgorYWNjZXNzIGJ5IGluZGV4LCA6ZnVuYzpgY29sbGVjdGlvbnMubmFtZWR0dXBsZWAgbWF5IGJlIGEgbW9yZSBhcHByb3ByaWF0ZQorY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LgorCisKKy4uIF90eXBlc3NlcS1yYW5nZToKKworUmFuZ2VzCistLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IHJhbmdlCisKK1RoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzCitjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluIDprZXl3b3JkOmBmb3JgCitsb29wcy4KKworLi4gY2xhc3M6OiByYW5nZShzdG9wKQorICAgICAgICAgICByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKQorCisgICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzIChlaXRoZXIgYnVpbHQtaW4KKyAgIDpjbGFzczpgaW50YCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYCBzcGVjaWFsCisgICBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDFgYC4KKyAgIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLgorICAgSWYgKnN0ZXAqIGlzIHplcm8sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZCBieSB0aGUKKyAgIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZAorICAgYGByW2ldIDwgc3RvcGBgLgorCisgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsIGRldGVybWluZWQgYnkKKyAgIHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGUgY29uc3RyYWludHMgYXJlIGBgaSA+PSAwYGAKKyAgIGFuZCBgYHJbaV0gPiBzdG9wYGAuCisKKyAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlCisgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlIGludGVycHJldGVkCisgICBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnkgdGhlIHBvc2l0aXZlCisgICBpbmRpY2VzLgorCisgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gOmRhdGE6YHN5cy5tYXhzaXplYCBhcmUKKyAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyA6ZnVuYzpgbGVuYCkgbWF5IHJhaXNlCisgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYC4KKworICAgUmFuZ2UgZXhhbXBsZXM6OgorCisgICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpCisgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSkKKyAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSkKKyAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSkKKyAgICAgIFswLCAzLCA2LCA5XQorICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpCisgICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDApKQorICAgICAgW10KKyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKQorICAgICAgW10KKworICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucworICAgZXhjZXB0IGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHMgY2FuCisgICBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmQgcmVwZXRpdGlvbiBhbmQKKyAgIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS4KKworICAgLi4gZGF0YTogc3RhcnQKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgYGAwYGAgaWYgdGhlIHBhcmFtZXRlciB3YXMKKyAgICAgIG5vdCBzdXBwbGllZCkKKworICAgLi4gZGF0YTogc3RvcAorCisgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXIKKworICAgLi4gZGF0YTogc3RlcAorCisgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yIGBgMWBgIGlmIHRoZSBwYXJhbWV0ZXIgd2FzCisgICAgICBub3Qgc3VwcGxpZWQpCisKK1RoZSBhZHZhbnRhZ2Ugb2YgdGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgOmNsYXNzOmBsaXN0YCBvcgorOmNsYXNzOmB0dXBsZWAgaXMgdGhhdCBhIDpjbGFzczpgcmFuZ2VgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lCisoc21hbGwpIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQKK29ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWwKK2l0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS4KKworUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIDpjbGFzczpgY29sbGVjdGlvbnMuU2VxdWVuY2VgIEFCQywgYW5kIHByb3ZpZGUKK2ZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLCBzbGljaW5nIGFuZAorc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlIDpyZWY6YHR5cGVzc2VxYCk6CisKKyAgID4+PiByID0gcmFuZ2UoMCwgMjAsIDIpCisgICA+Pj4gcgorICAgcmFuZ2UoMCwgMjAsIDIpCisgICA+Pj4gMTEgaW4gcgorICAgRmFsc2UKKyAgID4+PiAxMCBpbiByCisgICBUcnVlCisgICA+Pj4gci5pbmRleCgxMCkKKyAgIDUKKyAgID4+PiByWzVdCisgICAxMAorICAgPj4+IHJbOjVdCisgICByYW5nZSgwLCAxMCwgMikKKyAgID4+PiByWy0xXQorICAgMTgKKworVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoIGBgPT1gYCBhbmQgYGAhPWBgIGNvbXBhcmVzCit0aGVtIGFzIHNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmCit0aGV5IHJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZQorb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHN0YXJ0YCwKKzphdHRyOmBzdG9wYCBhbmQgOmF0dHI6YHN0ZXBgIGF0dHJpYnV0ZXMsIGZvciBleGFtcGxlIGBgcmFuZ2UoMCkgPT0KK3JhbmdlKDIsIDEsIDMpYGAgb3IgYGByYW5nZSgwLCAzLCAyKSA9PSByYW5nZSgwLCA0LCAyKWBgLikKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgIEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLgorICAgU3VwcG9ydCBzbGljaW5nIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLgorICAgVGVzdCA6Y2xhc3M6YGludGAgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudCB0aW1lIGluc3RlYWQgb2YKKyAgIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0cyBiYXNlZCBvbiB0aGUKKyAgIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgIG9iamVjdCBpZGVudGl0eSkuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgVGhlIDphdHRyOmBzdGFydGAsIDphdHRyOmBzdG9wYCBhbmQgOmF0dHI6YHN0ZXBgIGF0dHJpYnV0ZXMuCisKKworLi4gX3RleHRzZXE6CisKK1RleHQgU2VxdWVuY2UgVHlwZSAtLS0gOmNsYXNzOmBzdHJgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBpbmRleDo6CisgICBvYmplY3Q6IHN0cmluZworICAgb2JqZWN0OiBieXRlcworICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogaW8uU3RyaW5nSU8KKworCitUZXh0dWFsIGRhdGEgaW4gUHl0aG9uIGlzIGhhbmRsZWQgd2l0aCA6Y2xhc3M6YHN0cmAgb2JqZWN0cywgd2hpY2ggYXJlCitpbW11dGFibGUgc2VxdWVuY2VzIG9mIFVuaWNvZGUgY29kZSBwb2ludHMuICBTdHJpbmcgbGl0ZXJhbHMgYXJlCit3cml0dGVuIGluIGEgdmFyaWV0eSBvZiB3YXlzOgorCisqIFNpbmdsZSBxdW90ZXM6IGBgJ2FsbG93cyBlbWJlZGRlZCAiZG91YmxlIiBxdW90ZXMnYGAKKyogRG91YmxlIHF1b3RlczogYGAiYWxsb3dzIGVtYmVkZGVkICdzaW5nbGUnIHF1b3RlcyJgYC4KKyogVHJpcGxlIHF1b3RlZDogYGAnJydUaHJlZSBzaW5nbGUgcXVvdGVzJycnYGAsIGBgIiIiVGhyZWUgZG91YmxlIHF1b3RlcyIiImBgCisKK1RyaXBsZSBxdW90ZWQgc3RyaW5ncyBtYXkgc3BhbiBtdWx0aXBsZSBsaW5lcyAtIGFsbCBhc3NvY2lhdGVkIHdoaXRlc3BhY2Ugd2lsbAorYmUgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyBsaXRlcmFsLgorCitTdHJpbmcgbGl0ZXJhbHMgdGhhdCBhcmUgcGFydCBvZiBhIHNpbmdsZSBleHByZXNzaW9uIGFuZCBoYXZlIG9ubHkgd2hpdGVzcGFjZQorYmV0d2VlbiB0aGVtIHdpbGwgYmUgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgc3RyaW5nIGxpdGVyYWwuIFRoYXQKK2lzLCBgYCgic3BhbSAiICJlZ2dzIikgPT0gInNwYW0gZWdncyJgYC4KKworU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0IHRoZSB2YXJpb3VzIGZvcm1zIG9mIHN0cmluZyBsaXRlcmFsLAoraW5jbHVkaW5nIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2VzLCBhbmQgdGhlIGBgcmBgICgicmF3IikgcHJlZml4IHRoYXQKK2Rpc2FibGVzIG1vc3QgZXNjYXBlIHNlcXVlbmNlIHByb2Nlc3NpbmcuCisKK1N0cmluZ3MgbWF5IGFsc28gYmUgY3JlYXRlZCBmcm9tIG90aGVyIG9iamVjdHMgd2l0aCB0aGUgOnJlZjpgc3RyIDxmdW5jLXN0cj5gCitidWlsdC1pbi4KKworU2luY2UgdGhlcmUgaXMgbm8gc2VwYXJhdGUgImNoYXJhY3RlciIgdHlwZSwgaW5kZXhpbmcgYSBzdHJpbmcgcHJvZHVjZXMKK3N0cmluZ3Mgb2YgbGVuZ3RoIDEuIFRoYXQgaXMsIGZvciBhIG5vbi1lbXB0eSBzdHJpbmcgKnMqLCBgYHNbMF0gPT0gc1swOjFdYGAuCisKK1RoZXJlIGlzIGFsc28gbm8gbXV0YWJsZSBzdHJpbmcgdHlwZSwgYnV0IDptZXRoOmBzdHIuam9pbmAgb3IKKzpjbGFzczpgaW8uU3RyaW5nSU9gIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvbnN0cnVjdCBzdHJpbmdzIGZyb20KK211bHRpcGxlIGZyYWdtZW50cy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMiBzZXJpZXMsIHRoZSBgYHVgYCBwcmVmaXggaXMKKyAgIG9uY2UgYWdhaW4gcGVybWl0dGVkIG9uIHN0cmluZyBsaXRlcmFscy4gSXQgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZworICAgb2Ygc3RyaW5nIGxpdGVyYWxzIGFuZCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUgYGByYGAgcHJlZml4LgogCiAuLiBfc3RyaW5nLW1ldGhvZHM6CiAKIFN0cmluZyBNZXRob2RzCiAtLS0tLS0tLS0tLS0tLQogCi0uLiBpbmRleDo6IHBhaXI6IHN0cmluZzsgbWV0aG9kcworLi4gaW5kZXg6OgorICAgcGFpcjogc3RyaW5nOyBtZXRob2RzCisgICBtb2R1bGU6IHJlCiAKLVN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LgorU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCitvcGVyYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LgogCi1JbiBhZGRpdGlvbiwgUHl0aG9uJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZQotOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZQotOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3Igc3RyaW5nCi1mdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KK1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYSBsYXJnZQorZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgOm1ldGg6YHN0ci5mb3JtYXRgLAorOnJlZjpgZm9ybWF0c3RyaW5nc2AgYW5kIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCkgYW5kIHRoZSBvdGhlciBiYXNlZCBvbiBDCitgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXMgYW5kIGlzCitzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlIGNhc2VzIGl0IGNhbgoraGFuZGxlICg6cmVmOmBvbGQtc3RyaW5nLWZvcm1hdHRpbmdgKS4KKworVGhlIDpyZWY6YHRleHRzZXJ2aWNlc2Agc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnMgYSBudW1iZXIgb2YKK290aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllcyAoaW5jbHVkaW5nIHJlZ3VsYXIKK2V4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgOm1vZDpgcmVgIG1vZHVsZSkuCiAKIC4uIG1ldGhvZDo6IHN0ci5jYXBpdGFsaXplKCkKIApAQCAtOTk5LDYgKzE0MjAsMjMgQEAKICAgIHJlc3QgbG93ZXJjYXNlZC4KIAogCisuLiBtZXRob2Q6OiBzdHIuY2FzZWZvbGQoKQorCisgICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZSB1c2VkIGZvcgorICAgY2FzZWxlc3MgbWF0Y2hpbmcuCisKKyAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlIGl0IGlzCisgICBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgdGhlIEdlcm1hbgorICAgbG93ZXJjYXNlIGxldHRlciBgYCfDnydgYCBpcyBlcXVpdmFsZW50IHRvIGBgInNzImBgLiBTaW5jZSBpdCBpcyBhbHJlYWR5CisgICBsb3dlcmNhc2UsIDptZXRoOmBsb3dlcmAgd291bGQgZG8gbm90aGluZyB0byBgYCfDnydgYDsgOm1ldGg6YGNhc2Vmb2xkYAorICAgY29udmVydHMgaXQgdG8gYGAic3MiYGAuCisKKyAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGUgVW5pY29kZQorICAgU3RhbmRhcmQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IHN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pCiAKICAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZQpAQCAtMTIwNiw2ICsxNjQ0LDkgQEAKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1fIGNvbnZlcnRlZCB0bwogICAgbG93ZXJjYXNlLgogCisgICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGUgVW5pY29kZQorICAgU3RhbmRhcmQuCisKIAogLi4gbWV0aG9kOjogc3RyLmxzdHJpcChbY2hhcnNdKQogCkBAIC0xMjc4LDcgKzE3MTksNyBAQAogICAgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5IHRoZSBzdHJpbmcgaXRzZWxmLgogCiAKLS4uIG1ldGhvZDo6IHN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pCisuLiBtZXRob2Q6OiBzdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlIGRlbGltaXRlciBzdHJpbmcuCiAgICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCoKQEAgLTEzMDAsNyArMTc0MSw3IEBACiAgICAgICAnbWlzc2lzcycKIAogCi0uLiBtZXRob2Q6OiBzdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pCisuLiBtZXRob2Q6OiBzdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKQogCiAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGUgZGVsaW1pdGVyCiAgICBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzIGFyZSBkb25lICh0aHVzLApAQCAtMTM2OSw3ICsxODEwLDggQEAKIC4uIG1ldGhvZDo6IHN0ci5zd2FwY2FzZSgpCiAKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYW5kCi0gICB2aWNlIHZlcnNhLgorICAgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXQKKyAgIGBgcy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gc2BgLgogCiAKIC4uIG1ldGhvZDo6IHN0ci50aXRsZSgpCkBAIC0xNDIwLDcgKzE4NjIsMTEgQEAKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1fIGNvbnZlcnRlZCB0bwogICAgdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHQgYmUgYGBGYWxzZWBgIGlmIGBgc2BgCiAgICBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGUgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZwotICAgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS4KKyAgIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsCisgICB0aXRsZWNhc2UpLgorCisgICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGUgVW5pY29kZQorICAgU3RhbmRhcmQuCiAKIAogLi4gbWV0aG9kOjogc3RyLnpmaWxsKHdpZHRoKQpAQCAtMTQzMyw4ICsxODc5LDggQEAKIAogLi4gX29sZC1zdHJpbmctZm9ybWF0dGluZzoKIAotT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitgYHByaW50ZmBgLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogZm9ybWF0dGluZywgc3RyaW5nICglKQpAQCAtMTQ0NiwyMyArMTg5MiwxOSBAQAogICAgc2luZ2xlOiAlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogJSBpbnRlcnBvbGF0aW9uCiAKLS4uIFhYWCBpcyB0aGUgbm90ZSBlbm91Z2g/Ci0KIC4uIG5vdGU6OgogCi0gICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGFyZSBtb2RlbGxlZCBvbiBDJ3MgcHJpbnRmKCkKLSAgIHN5bnRheC4gIFRoZXkgb25seSBzdXBwb3J0IGZvcm1hdHRpbmcgb2YgY2VydGFpbiBidWlsdGluIHR5cGVzLiAgVGhlCi0gICB1c2Ugb2YgYSBiaW5hcnkgb3BlcmF0b3IgbWVhbnMgdGhhdCBjYXJlIG1heSBiZSBuZWVkZWQgaW4gb3JkZXIgdG8KLSAgIGZvcm1hdCB0dXBsZXMgYW5kIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkuICBBcyB0aGUgbmV3Ci0gICA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2Agc3ludGF4IGlzIG1vcmUgZmxleGlibGUgYW5kIGhhbmRsZXMgdHVwbGVzIGFuZAotICAgZGljdGlvbmFyaWVzIG5hdHVyYWxseSwgaXQgaXMgcmVjb21tZW5kZWQgZm9yIG5ldyBjb2RlLiAgSG93ZXZlciwgdGhlcmUKLSAgIGFyZSBubyBjdXJyZW50IHBsYW5zIHRvIGRlcHJlY2F0ZSBwcmludGYtc3R5bGUgZm9ybWF0dGluZy4KKyAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKKyAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOm1ldGg6YHN0ci5mb3JtYXRgIGludGVyZmFjZQorICAgaGVscHMgYXZvaWQgdGhlc2UgZXJyb3JzLCBhbmQgYWxzbyBwcm92aWRlcyBhIGdlbmVyYWxseSBtb3JlIHBvd2VyZnVsLAorICAgZmxleGlibGUgYW5kIGV4dGVuc2libGUgYXBwcm9hY2ggdG8gZm9ybWF0dGluZyB0ZXh0LgogCiBTdHJpbmcgb2JqZWN0cyBoYXZlIG9uZSB1bmlxdWUgYnVpbHQtaW4gb3BlcmF0aW9uOiB0aGUgYGAlYGAgb3BlcmF0b3IgKG1vZHVsbykuCiBUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIHN0cmluZyAqZm9ybWF0dGluZyogb3IgKmludGVycG9sYXRpb24qIG9wZXJhdG9yLgogR2l2ZW4gYGBmb3JtYXQgJSB2YWx1ZXNgYCAod2hlcmUgKmZvcm1hdCogaXMgYSBzdHJpbmcpLCBgYCVgYCBjb252ZXJzaW9uCiBzcGVjaWZpY2F0aW9ucyBpbiAqZm9ybWF0KiBhcmUgcmVwbGFjZWQgd2l0aCB6ZXJvIG9yIG1vcmUgZWxlbWVudHMgb2YgKnZhbHVlcyouCi1UaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gdGhlIHVzaW5nIDpjOmZ1bmM6YHNwcmludGZgIGluIHRoZSBDIGxhbmd1YWdlLgorVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHVzaW5nIHRoZSA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KIAogSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tdHVwbGUKIG9iamVjdC4gWzVdXyAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5IHRoZSBudW1iZXIgb2YKQEAgLTE2MjAsMjExICsyMDYyLDE3OCBAQAogICAgYGAlZmBgIGNvbnZlcnNpb25zIGZvciBudW1iZXJzIHdob3NlIGFic29sdXRlIHZhbHVlIGlzIG92ZXIgMWU1MCBhcmUgbm8KICAgIGxvbmdlciByZXBsYWNlZCBieSBgYCVnYGAgY29udmVyc2lvbnMuCiAKLS4uIGluZGV4OjoKLSAgIG1vZHVsZTogc3RyaW5nCi0gICBtb2R1bGU6IHJlCiAKLUFkZGl0aW9uYWwgc3RyaW5nIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgaW4gc3RhbmRhcmQgbW9kdWxlcyA6bW9kOmBzdHJpbmdgIGFuZAotOm1vZDpgcmVgLgorLi4gX2JpbmFyeXNlcToKIAotCi0uLiBfdHlwZXNzZXEtcmFuZ2U6Ci0KLVJhbmdlIFR5cGUKLS0tLS0tLS0tLS0KLQotLi4gaW5kZXg6OiBvYmplY3Q6IHJhbmdlCi0KLVRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB3aGljaCBpcyBjb21tb25seSB1c2VkIGZvcgotbG9vcGluZy4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgaXMgdGhhdCBhbiA6Y2xhc3M6YHJhbmdlYAotb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZQotcmFuZ2UgaXQgcmVwcmVzZW50cy4KLQotUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsIGNvbnRhaW5zLAotaXRlcmF0aW9uLCB0aGUgOmZ1bmM6YGxlbmAgZnVuY3Rpb24sIGFuZCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLS4uIG1ldGhvZDo6IHJhbmdlLmNvdW50KHgpCi0KLSAgIFJldHVybiB0aGUgbnVtYmVyIG9mICppKidzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLS4uIG1ldGhvZDo6IHJhbmdlLmluZGV4KHgpCi0KLSAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLS4uIF90eXBlc3NlcS1tdXRhYmxlOgotCi1NdXRhYmxlIFNlcXVlbmNlIFR5cGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCaW5hcnkgU2VxdWVuY2UgVHlwZXMgLS0tIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAsIDpjbGFzczpgbWVtb3J5dmlld2AKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBpbmRleDo6Ci0gICB0cmlwbGU6IG11dGFibGU7IHNlcXVlbmNlOyB0eXBlcwotICAgb2JqZWN0OiBsaXN0CisgICBvYmplY3Q6IGJ5dGVzCiAgICBvYmplY3Q6IGJ5dGVhcnJheQorICAgb2JqZWN0OiBtZW1vcnl2aWV3CisgICBtb2R1bGU6IGFycmF5CiAKLUxpc3QgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgYWRkaXRpb25hbCBvcGVyYXRpb25zIHRoYXQgYWxsb3cgaW4tcGxhY2UKLW1vZGlmaWNhdGlvbiBvZiB0aGUgb2JqZWN0LiAgT3RoZXIgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlbiBhZGRlZCB0byB0aGUKLWxhbmd1YWdlKSBzaG91bGQgYWxzbyBzdXBwb3J0IHRoZXNlIG9wZXJhdGlvbnMuICBTdHJpbmdzIGFuZCB0dXBsZXMgYXJlCi1pbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3QgYmUgbW9kaWZpZWQgb25jZSBjcmVhdGVkLiBUaGUKLWZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZXJlICp4KiBpcyBhbgotYXJiaXRyYXJ5IG9iamVjdCkuCitUaGUgY29yZSBidWlsdC1pbiB0eXBlcyBmb3IgbWFuaXB1bGF0aW5nIGJpbmFyeSBkYXRhIGFyZSA6Y2xhc3M6YGJ5dGVzYCBhbmQKKzpjbGFzczpgYnl0ZWFycmF5YC4gVGhleSBhcmUgc3VwcG9ydGVkIGJ5IDpjbGFzczpgbWVtb3J5dmlld2Agd2hpY2ggdXNlcwordGhlIGJ1ZmZlciBwcm90b2NvbCB0byBhY2Nlc3MgdGhlIG1lbW9yeSBvZiBvdGhlciBiaW5hcnkgb2JqZWN0cyB3aXRob3V0CituZWVkaW5nIHRvIG1ha2UgYSBjb3B5LgogCi1Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheSBvYmplY3QKLSJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LgorVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUgc3VwcG9ydHMgZWZmaWNpZW50IHN0b3JhZ2Ugb2YgYmFzaWMgZGF0YSB0eXBlcyBsaWtlCiszMi1iaXQgaW50ZWdlcnMgYW5kIElFRUU3NTQgZG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyB2YWx1ZXMuCiAKLS4uIGluZGV4OjoKLSAgIHRyaXBsZTogb3BlcmF0aW9ucyBvbjsgc2VxdWVuY2U7IHR5cGVzCi0gICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IGxpc3Q7IHR5cGUKLSAgIHBhaXI6IHN1YnNjcmlwdDsgYXNzaWdubWVudAotICAgcGFpcjogc2xpY2U7IGFzc2lnbm1lbnQKLSAgIHN0YXRlbWVudDogZGVsCi0gICBzaW5nbGU6IGFwcGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGV4dGVuZCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGNvdW50KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogaW5kZXgoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBpbnNlcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBwb3AoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiByZW1vdmUoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiByZXZlcnNlKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogc29ydCgpIChzZXF1ZW5jZSBtZXRob2QpCisuLiBfdHlwZWJ5dGVzOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgfAotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT0rCi18IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlzIHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgICAgfCBcKDEpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZSByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt4XWBgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgfCBcKDIpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKidzIGZvciAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgfCBcKDMpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgICB8ICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgamBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6aV0gPSBbeF1gYCAgICAgICB8IFwoNCkgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgeCA9IHNbaV07IGRlbCBzW2ldOyAgfCBcKDUpICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiB4YGAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgZGVsIHNbcy5pbmRleCh4KV1gYCAgfCBcKDMpICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgIHwgXCg2KSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqIGluIHBsYWNlIHwgKDYpLCAoNyksICg4KSAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK0J5dGVzCistLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogYnl0ZXMKKworQnl0ZXMgb2JqZWN0cyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcyBvZiBzaW5nbGUgYnl0ZXMuIFNpbmNlIG1hbnkgbWFqb3IKK2JpbmFyeSBwcm90b2NvbHMgYXJlIGJhc2VkIG9uIHRoZSBBU0NJSSB0ZXh0IGVuY29kaW5nLCBieXRlcyBvYmplY3RzIG9mZmVyCitzZXZlcmFsIG1ldGhvZHMgdGhhdCBhcmUgb25seSB2YWxpZCB3aGVuIHdvcmtpbmcgd2l0aCBBU0NJSSBjb21wYXRpYmxlCitkYXRhIGFuZCBhcmUgY2xvc2VseSByZWxhdGVkIHRvIHN0cmluZyBvYmplY3RzIGluIGEgdmFyaWV0eSBvZiBvdGhlciB3YXlzLgorCitGaXJzdGx5LCB0aGUgc3ludGF4IGZvciBieXRlcyBsaXRlcmFscyBpcyBsYXJnZWx5IHRoZSBzYW1lIGFzIHRoYXQgZm9yIHN0cmluZworbGl0ZXJhbHMsIGV4Y2VwdCB0aGF0IGEgYGBiYGAgcHJlZml4IGlzIGFkZGVkOgorCisqIFNpbmdsZSBxdW90ZXM6IGBgYidzdGlsbCBhbGxvd3MgZW1iZWRkZWQgImRvdWJsZSIgcXVvdGVzJ2BgCisqIERvdWJsZSBxdW90ZXM6IGBgYiJzdGlsbCBhbGxvd3MgZW1iZWRkZWQgJ3NpbmdsZScgcXVvdGVzImBgLgorKiBUcmlwbGUgcXVvdGVkOiBgYGInJyczIHNpbmdsZSBxdW90ZXMnJydgYCwgYGBiIiIiMyBkb3VibGUgcXVvdGVzIiIiYGAKKworT25seSBBU0NJSSBjaGFyYWN0ZXJzIGFyZSBwZXJtaXR0ZWQgaW4gYnl0ZXMgbGl0ZXJhbHMgKHJlZ2FyZGxlc3Mgb2YgdGhlCitkZWNsYXJlZCBzb3VyY2UgY29kZSBlbmNvZGluZykuIEFueSBiaW5hcnkgdmFsdWVzIG92ZXIgMTI3IG11c3QgYmUgZW50ZXJlZAoraW50byBieXRlcyBsaXRlcmFscyB1c2luZyB0aGUgYXBwcm9wcmlhdGUgZXNjYXBlIHNlcXVlbmNlLgorCitBcyB3aXRoIHN0cmluZyBsaXRlcmFscywgYnl0ZXMgbGl0ZXJhbHMgbWF5IGFsc28gdXNlIGEgYGByYGAgcHJlZml4IHRvIGRpc2FibGUKK3Byb2Nlc3Npbmcgb2YgZXNjYXBlIHNlcXVlbmNlcy4gU2VlIDpyZWY6YHN0cmluZ3NgIGZvciBtb3JlIGFib3V0IHRoZSB2YXJpb3VzCitmb3JtcyBvZiBieXRlcyBsaXRlcmFsLCBpbmNsdWRpbmcgc3VwcG9ydGVkIGVzY2FwZSBzZXF1ZW5jZXMuCisKK1doaWxlIGJ5dGVzIGxpdGVyYWxzIGFuZCByZXByZXNlbnRhdGlvbnMgYXJlIGJhc2VkIG9uIEFTQ0lJIHRleHQsIGJ5dGVzCitvYmplY3RzIGFjdHVhbGx5IGJlaGF2ZSBsaWtlIGltbXV0YWJsZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMsIHdpdGggZWFjaAordmFsdWUgaW4gdGhlIHNlcXVlbmNlIHJlc3RyaWN0ZWQgc3VjaCB0aGF0IGBgMCA8PSB4IDwgMjU2YGAgKGF0dGVtcHRzIHRvCit2aW9sYXRlIHRoaXMgcmVzdHJpY3Rpb24gd2lsbCB0cmlnZ2VyIDpleGM6YFZhbHVlRXJyb3JgLiBUaGlzIGlzIGRvbmUKK2RlbGliZXJhdGVseSB0byBlbXBoYXNpc2UgdGhhdCB3aGlsZSBtYW55IGJpbmFyeSBmb3JtYXRzIGluY2x1ZGUgQVNDSUkgYmFzZWQKK2VsZW1lbnRzIGFuZCBjYW4gYmUgdXNlZnVsbHkgbWFuaXB1bGF0ZWQgd2l0aCBzb21lIHRleHQtb3JpZW50ZWQgYWxnb3JpdGhtcywKK3RoaXMgaXMgbm90IGdlbmVyYWxseSB0aGUgY2FzZSBmb3IgYXJiaXRyYXJ5IGJpbmFyeSBkYXRhIChibGluZGx5IGFwcGx5aW5nCit0ZXh0IHByb2Nlc3NpbmcgYWxnb3JpdGhtcyB0byBiaW5hcnkgZGF0YSBmb3JtYXRzIHRoYXQgYXJlIG5vdCBBU0NJSQorY29tcGF0aWJsZSB3aWxsIHVzdWFsbHkgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24pLgorCitJbiBhZGRpdGlvbiB0byB0aGUgbGl0ZXJhbCBmb3JtcywgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgY3JlYXRlZCBpbiBhIG51bWJlciBvZgorb3RoZXIgd2F5czoKKworKiBBIHplcm8tZmlsbGVkIGJ5dGVzIG9iamVjdCBvZiBhIHNwZWNpZmllZCBsZW5ndGg6IGBgYnl0ZXMoMTApYGAKKyogRnJvbSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VyczogYGBieXRlcyhyYW5nZSgyMCkpYGAKKyogQ29weWluZyBleGlzdGluZyBiaW5hcnkgZGF0YSB2aWEgdGhlIGJ1ZmZlciBwcm90b2NvbDogIGBgYnl0ZXMob2JqKWBgCisKK0Fsc28gc2VlIHRoZSA6cmVmOmBieXRlcyA8ZnVuYy1ieXRlcz5gIGJ1aWx0LWluLgorCitTaW5jZSBieXRlcyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMsIGZvciBhIGJ5dGVzIG9iamVjdCAqYiosCitgYGJbMF1gYCB3aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdCBvZgorbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlIGJvdGggaW5kZXhpbmcgYW5kCitzbGljaW5nIHdpbGwgcHJvZHVjZSBhIHN0cmluZyBvZiBsZW5ndGggMSkKKworVGhlIHJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApCitzaW5jZSBpdCBpcyBvZnRlbiBtb3JlIHVzZWZ1bCB0aGFuIGUuZy4gYGBieXRlcyhbNDYsIDQ2LCA0Nl0pYGAuICBZb3UgY2FuCithbHdheXMgY29udmVydCBhIGJ5dGVzIG9iamVjdCBpbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC4KIAogCi1Ob3RlczoKLQotKDEpCi0gICAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLgotCi0oMikKLSAgICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC4KLQotKDMpCi0gICBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzCi0gICBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIDptZXRoOmBpbmRleGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UKLSAgIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkCi0gICB0byB6ZXJvLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4KLQotKDQpCi0gICBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlIDptZXRoOmBpbnNlcnRgCi0gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwKLSAgIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuCi0KLSg1KQotICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdAotICAgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC4KLQotKDYpCi0gICBUaGUgOm1ldGg6YHNvcnRgIGFuZCA6bWV0aDpgcmV2ZXJzZWAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvcgotICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgeW91Ci0gICB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleSBkb24ndCByZXR1cm4gdGhlIHNvcnRlZCBvciByZXZlcnNlZAotICAgc2VxdWVuY2UuCi0KLSg3KQotICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGUKLSAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCi0KLSAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCBhIGNvbXBhcmlzb24KLSAgIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLgotICAgVXNlIDpmdW5jOmBmdW5jdG9vbHMuY21wX3RvX2tleWAgdG8gY29udmVydCBhbgotICAgb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uCisuLiBub3RlOjoKKyAgIEZvciBQeXRob24gMi54IHVzZXJzOiBJbiB0aGUgUHl0aG9uIDIueCBzZXJpZXMsIGEgdmFyaWV0eSBvZiBpbXBsaWNpdAorICAgY29udmVyc2lvbnMgYmV0d2VlbiA4LWJpdCBzdHJpbmdzICh0aGUgY2xvc2VzdCB0aGluZyAyLnggb2ZmZXJzIHRvIGEKKyAgIGJ1aWx0LWluIGJpbmFyeSBkYXRhIHR5cGUpIGFuZCBVbmljb2RlIHN0cmluZ3Mgd2VyZSBwZXJtaXR0ZWQuIFRoaXMgd2FzIGEKKyAgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdvcmthcm91bmQgdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBQeXRob24KKyAgIG9yaWdpbmFsbHkgb25seSBzdXBwb3J0ZWQgOC1iaXQgdGV4dCwgYW5kIFVuaWNvZGUgdGV4dCB3YXMgYSBsYXRlcgorICAgYWRkaXRpb24uIEluIFB5dGhvbiAzLngsIHRob3NlIGltcGxpY2l0IGNvbnZlcnNpb25zIGFyZSBnb25lIC0gY29udmVyc2lvbnMKKyAgIGJldHdlZW4gOC1iaXQgYmluYXJ5IGRhdGEgYW5kIFVuaWNvZGUgdGV4dCBtdXN0IGJlIGV4cGxpY2l0LCBhbmQgYnl0ZXMgYW5kCisgICBzdHJpbmcgb2JqZWN0cyB3aWxsIGFsd2F5cyBjb21wYXJlIHVuZXF1YWwuCiAKIAotICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdCBlbGVtZW50cyBhcmUKLSAgIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC4KKy4uIF90eXBlYnl0ZWFycmF5OgogCi0gICBUaGUgOm1ldGg6YHNvcnRgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEKLSAgIHNvcnQgaXMgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMKLSAgIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3NlcyAoZm9yCi0gICBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS4KK0J5dGVhcnJheSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQogCi0gICAuLiBpbXBsLWRldGFpbDo6CisuLiBpbmRleDo6IG9iamVjdDogYnl0ZWFycmF5CiAKLSAgICAgIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4KLSAgICAgIGluc3BlY3QsIHRoZSBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUKLSAgICAgIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgaXQgY2FuCi0gICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuCis6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBhcmUgYSBtdXRhYmxlIGNvdW50ZXJwYXJ0IHRvIDpjbGFzczpgYnl0ZXNgCitvYmplY3RzLiBUaGVyZSBpcyBubyBkZWRpY2F0ZWQgbGl0ZXJhbCBzeW50YXggZm9yIGJ5dGVhcnJheSBvYmplY3RzLCBpbnN0ZWFkCit0aGV5IGFyZSBhbHdheXMgY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBjb25zdHJ1Y3RvcjoKIAotKDgpCi0gICA6bWV0aDpgc29ydGAgaXMgbm90IHN1cHBvcnRlZCBieSA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KKyogQ3JlYXRpbmcgYW4gZW1wdHkgaW5zdGFuY2U6IGBgYnl0ZWFycmF5KClgYAorKiBDcmVhdGluZyBhIHplcm8tZmlsbGVkIGluc3RhbmNlIHdpdGggYSBnaXZlbiBsZW5ndGg6IGBgYnl0ZWFycmF5KDEwKWBgCisqIEZyb20gYW4gaXRlcmFibGUgb2YgaW50ZWdlcnM6IGBgYnl0ZWFycmF5KHJhbmdlKDIwKSlgYAorKiBDb3B5aW5nIGV4aXN0aW5nIGJpbmFyeSBkYXRhIHZpYSB0aGUgYnVmZmVyIHByb3RvY29sOiAgYGBieXRlYXJyYXkoYidIaSEpYGAKKworQXMgYnl0ZWFycmF5IG9iamVjdHMgYXJlIG11dGFibGUsIHRoZXkgc3VwcG9ydCB0aGUKKzpyZWY6YG11dGFibGUgPHR5cGVzc2VxLW11dGFibGU+YCBzZXF1ZW5jZSBvcGVyYXRpb25zIGluIGFkZGl0aW9uIHRvIHRoZQorY29tbW9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb3BlcmF0aW9ucyBkZXNjcmliZWQgaW4gOnJlZjpgYnl0ZXMtbWV0aG9kc2AuCisKK0Fsc28gc2VlIHRoZSA6cmVmOmBieXRlYXJyYXkgPGZ1bmMtYnl0ZWFycmF5PmAgYnVpbHQtaW4uCiAKIAogLi4gX2J5dGVzLW1ldGhvZHM6CiAKLUJ5dGVzIGFuZCBCeXRlIEFycmF5IE1ldGhvZHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0J5dGVzIGFuZCBCeXRlYXJyYXkgT3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGluZGV4OjogcGFpcjogYnl0ZXM7IG1ldGhvZHMKICAgICAgICAgICAgcGFpcjogYnl0ZWFycmF5OyBtZXRob2RzCiAKLUJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cywgYmVpbmcgInN0cmluZ3Mgb2YgYnl0ZXMiLCBoYXZlIGFsbCBtZXRob2RzIGZvdW5kIG9uCi1zdHJpbmdzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgOmZ1bmM6YGVuY29kZWAsIDpmdW5jOmBmb3JtYXRgIGFuZAotOmZ1bmM6YGlzaWRlbnRpZmllcmAsIHdoaWNoIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGggdGhlc2UgdHlwZXMuICBGb3IgY29udmVydGluZwotdGhlIG9iamVjdHMgdG8gc3RyaW5ncywgdGhleSBoYXZlIGEgOmZ1bmM6YGRlY29kZWAgbWV0aG9kLgorQm90aCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgc3VwcG9ydCB0aGUgOnJlZjpgY29tbW9uIDx0eXBlc3NlcS1jb21tb24+YAorc2VxdWVuY2Ugb3BlcmF0aW9ucy4gVGhleSBpbnRlcm9wZXJhdGUgbm90IGp1c3Qgd2l0aCBvcGVyYW5kcyBvZiB0aGUgc2FtZQordHlwZSwgYnV0IHdpdGggYW55IG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZQorOnJlZjpgYnVmZmVyIHByb3RvY29sIDxidWZmZXJvYmplY3RzPmAuIER1ZSB0byB0aGlzIGZsZXhpYmlsaXR5LCB0aGV5IGNhbiBiZQorZnJlZWx5IG1peGVkIGluIG9wZXJhdGlvbnMgd2l0aG91dCBjYXVzaW5nIGVycm9ycy4gSG93ZXZlciwgdGhlIHJldHVybiB0eXBlCitvZiB0aGUgcmVzdWx0IG1heSBkZXBlbmQgb24gdGhlIG9yZGVyIG9mIG9wZXJhbmRzLgogCi1XaGVyZXZlciBvbmUgb2YgdGhlc2UgbWV0aG9kcyBuZWVkcyB0byBpbnRlcnByZXQgdGhlIGJ5dGVzIGFzIGNoYXJhY3RlcnMKLShlLmcuIHRoZSA6ZnVuYzpgaXMuLi5gIG1ldGhvZHMpLCB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBpcyBhc3N1bWVkLgorRHVlIHRvIHRoZSBjb21tb24gdXNlIG9mIEFTQ0lJIHRleHQgYXMgdGhlIGJhc2lzIGZvciBiaW5hcnkgcHJvdG9jb2xzLCBieXRlcworYW5kIGJ5dGVhcnJheSBvYmplY3RzIHByb3ZpZGUgYWxtb3N0IGFsbCBtZXRob2RzIGZvdW5kIG9uIHRleHQgc3RyaW5ncywgd2l0aAordGhlIGV4Y2VwdGlvbnMgb2Y6CisKKyogOm1ldGg6YHN0ci5lbmNvZGVgICh3aGljaCBjb252ZXJ0cyB0ZXh0IHN0cmluZ3MgdG8gYnl0ZXMgb2JqZWN0cykKKyogOm1ldGg6YHN0ci5mb3JtYXRgIGFuZCA6bWV0aDpgc3RyLmZvcm1hdF9tYXBgICh3aGljaCBhcmUgdXNlZCB0byBmb3JtYXQKKyAgdGV4dCBmb3IgZGlzcGxheSB0byB1c2VycykKKyogOm1ldGg6YHN0ci5pc2lkZW50aWZpZXJgLCA6bWV0aDpgc3RyLmlzbnVtZXJpY2AsIDptZXRoOmBzdHIuaXNkZWNpbWFsYCwKKyAgOm1ldGg6YHN0ci5pc3ByaW50YWJsZWAgKHdoaWNoIGFyZSB1c2VkIHRvIGNoZWNrIHZhcmlvdXMgcHJvcGVydGllcyBvZgorICB0ZXh0IHN0cmluZ3Mgd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgYXBwbGljYWJsZSB0byBiaW5hcnkgcHJvdG9jb2xzKS4KKworQWxsIG90aGVyIHN0cmluZyBtZXRob2RzIGFyZSBzdXBwb3J0ZWQsIGFsdGhvdWdoIHNvbWV0aW1lcyB3aXRoIHNsaWdodAorZGlmZmVyZW5jZXMgaW4gZnVuY3Rpb25hbGl0eSBhbmQgc2VtYW50aWNzIChhcyBkZXNjcmliZWQgYmVsb3cpLgogCiAuLiBub3RlOjoKIAogICAgVGhlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGRvbid0IGFjY2VwdCBzdHJpbmdzIGFzIHRoZWlyCiAgICBhcmd1bWVudHMsIGp1c3QgYXMgdGhlIG1ldGhvZHMgb24gc3RyaW5ncyBkb24ndCBhY2NlcHQgYnl0ZXMgYXMgdGhlaXIKLSAgIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZSA6OgorICAgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIHlvdSBoYXZlIHRvIHdyaXRlOjoKIAogICAgICAgYSA9ICJhYmMiCiAgICAgICBiID0gYS5yZXBsYWNlKCJhIiwgImYiKQogCi0gICBhbmQgOjoKKyAgIGFuZDo6CiAKICAgICAgIGEgPSBiImFiYyIKICAgICAgIGIgPSBhLnJlcGxhY2UoYiJhIiwgYiJmIikKIAorV2hlbmV2ZXIgYSBieXRlcyBvciBieXRlYXJyYXkgbWV0aG9kIG5lZWRzIHRvIGludGVycHJldCB0aGUgYnl0ZXMgYXMKK2NoYXJhY3RlcnMgKGUuZy4gdGhlIDptZXRoOmBpcy4uLmAgbWV0aG9kcywgOm1ldGg6YHNwbGl0YCwgOm1ldGg6YHN0cmlwYCksCit0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBpcyBhc3N1bWVkICh0ZXh0IHN0cmluZ3MgdXNlIFVuaWNvZGUgc2VtYW50aWNzKS4KKworLi4gbm90ZTo6CisgICBVc2luZyB0aGVzZSBBU0NJSSBiYXNlZCBtZXRob2RzIHRvIG1hbmlwdWxhdGUgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QKKyAgIHN0b3JlZCBpbiBhbiBBU0NJSSBiYXNlZCBmb3JtYXQgbWF5IGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uLgorCitUaGUgc2VhcmNoIG9wZXJhdGlvbnMgKDprZXl3b3JkOmBpbmAsIDptZXRoOmBjb3VudGAsIDptZXRoOmBmaW5kYCwKKzptZXRoOmBpbmRleGAsIDptZXRoOmByZmluZGAgYW5kIDptZXRoOmByaW5kZXhgKSBhbGwgYWNjZXB0IGJvdGggaW50ZWdlcnMKK2luIHRoZSByYW5nZSAwIHRvIDI1NSAoaW5jbHVzaXZlKSBhcyB3ZWxsIGFzIGJ5dGVzIGFuZCBieXRlIGFycmF5IHNlcXVlbmNlcy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFsbCBvZiB0aGUgc2VhcmNoIG1ldGhvZHMgYWxzbyBhY2NlcHQgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgMCB0byAyNTUKKyAgIChpbmNsdXNpdmUpIGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgorCisKK0VhY2ggYnl0ZXMgYW5kIGJ5dGVhcnJheSBpbnN0YW5jZSBwcm92aWRlcyBhIDptZXRoOmBkZWNvZGVgIGNvbnZlbmllbmNlCittZXRob2QgdGhhdCBpcyB0aGUgaW52ZXJzZSBvZiA6bWV0aDpgc3RyLmVuY29kZWA6CiAKIC4uIG1ldGhvZDo6IGJ5dGVzLmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpCiAgICAgICAgICAgICBieXRlYXJyYXkuZGVjb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IikKQEAgLTE4NDAsOCArMjI0OSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzLgogCi0KLVRoZSBieXRlcyBhbmQgYnl0ZWFycmF5IHR5cGVzIGhhdmUgYW4gYWRkaXRpb25hbCBjbGFzcyBtZXRob2Q6CitTaW5jZSAyIGhleGFkZWNpbWFsIGRpZ2l0cyBjb3JyZXNwb25kIHByZWNpc2VseSB0byBhIHNpbmdsZSBieXRlLCBoZXhhZGVjaW1hbAorbnVtYmVycyBhcmUgYSBjb21tb25seSB1c2VkIGZvcm1hdCBmb3IgZGVzY3JpYmluZyBiaW5hcnkgZGF0YS4gQWNjb3JkaW5nbHksCit0aGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kIHRvIHJlYWQgZGF0YSBpbgordGhhdCBmb3JtYXQ6CiAKIC4uIGNsYXNzbWV0aG9kOjogYnl0ZXMuZnJvbWhleChzdHJpbmcpCiAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheS5mcm9taGV4KHN0cmluZykKQEAgLTE4NTAsOCArMjI2MSw4IEBACiAgICBkZWNvZGluZyB0aGUgZ2l2ZW4gc3RyaW5nIG9iamVjdC4gIFRoZSBzdHJpbmcgbXVzdCBjb250YWluIHR3byBoZXhhZGVjaW1hbAogICAgZGlnaXRzIHBlciBieXRlLCBzcGFjZXMgYXJlIGlnbm9yZWQuCiAKLSAgID4+PiBieXRlcy5mcm9taGV4KCdmMCBmMWYyICAnKQotICAgYidceGYwXHhmMVx4ZjInCisgICA+Pj4gYnl0ZXMuZnJvbWhleCgnMkVmMCBGMWYyICAnKQorICAgYicuXHhmMFx4ZjFceGYyJwogCiAKIFRoZSBtYWtldHJhbnMgYW5kIHRyYW5zbGF0ZSBtZXRob2RzIGRpZmZlciBpbiBzZW1hbnRpY3MgZnJvbSB0aGUgdmVyc2lvbnMKQEAgLTE4ODUsNiArMjI5Niw0MzQgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKKy4uIF90eXBlbWVtb3J5dmlldzoKKworTWVtb3J5IFZpZXdzCistLS0tLS0tLS0tLS0KKworOmNsYXNzOmBtZW1vcnl2aWV3YCBvYmplY3RzIGFsbG93IFB5dGhvbiBjb2RlIHRvIGFjY2VzcyB0aGUgaW50ZXJuYWwgZGF0YQorb2YgYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gIHdpdGhvdXQKK2NvcHlpbmcuCisKKy4uIGNsYXNzOjogbWVtb3J5dmlldyhvYmopCisKKyAgIENyZWF0ZSBhIDpjbGFzczpgbWVtb3J5dmlld2AgdGhhdCByZWZlcmVuY2VzICpvYmoqLiAgKm9iaiogbXVzdCBzdXBwb3J0IHRoZQorICAgYnVmZmVyIHByb3RvY29sLiAgQnVpbHQtaW4gb2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCBpbmNsdWRlCisgICA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgLgorCisgICBBIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHRoZSBub3Rpb24gb2YgYW4gKmVsZW1lbnQqLCB3aGljaCBpcyB0aGUKKyAgIGF0b21pYyBtZW1vcnkgdW5pdCBoYW5kbGVkIGJ5IHRoZSBvcmlnaW5hdGluZyBvYmplY3QgKm9iaiouICBGb3IgbWFueQorICAgc2ltcGxlIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCwgYW4gZWxlbWVudAorICAgaXMgYSBzaW5nbGUgYnl0ZSwgYnV0IG90aGVyIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBhcnJheS5hcnJheWAgbWF5IGhhdmUKKyAgIGJpZ2dlciBlbGVtZW50cy4KKworICAgYGBsZW4odmlldylgYCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIDpjbGFzczpgfm1lbW9yeXZpZXcudG9saXN0YC4KKyAgIElmIGBgdmlldy5uZGltID0gMGBgLCB0aGUgbGVuZ3RoIGlzIDEuIElmIGBgdmlldy5uZGltID0gMWBgLCB0aGUgbGVuZ3RoCisgICBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB2aWV3LiBGb3IgaGlnaGVyIGRpbWVuc2lvbnMsCisgICB0aGUgbGVuZ3RoIGlzIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlIG5lc3RlZCBsaXN0IHJlcHJlc2VudGF0aW9uIG9mCisgICB0aGUgdmlldy4gVGhlIDpjbGFzczpgfm1lbW9yeXZpZXcuaXRlbXNpemVgIGF0dHJpYnV0ZSB3aWxsIGdpdmUgeW91IHRoZQorICAgbnVtYmVyIG9mIGJ5dGVzIGluIGEgc2luZ2xlIGVsZW1lbnQuCisKKyAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBzdXBwb3J0cyBzbGljaW5nIHRvIGV4cG9zZSBpdHMgZGF0YS4gSWYKKyAgIDpjbGFzczpgfm1lbW9yeXZpZXcuZm9ybWF0YCBpcyBvbmUgb2YgdGhlIG5hdGl2ZSBmb3JtYXQgc3BlY2lmaWVycworICAgZnJvbSB0aGUgOm1vZDpgc3RydWN0YCBtb2R1bGUsIGluZGV4aW5nIHdpbGwgcmV0dXJuIGEgc2luZ2xlIGVsZW1lbnQKKyAgIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4gRnVsbCBzbGljaW5nIHdpbGwgcmVzdWx0IGluIGEgc3Vidmlldzo6CisKKyAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoYidhYmNlZmcnKQorICAgID4+PiB2WzFdCisgICAgOTgKKyAgICA+Pj4gdlstMV0KKyAgICAxMDMKKyAgICA+Pj4gdlsxOjRdCisgICAgPG1lbW9yeSBhdCAweDdmM2RkYzlmNDM1MD4KKyAgICA+Pj4gYnl0ZXModlsxOjRdKQorICAgIGInYmNlJworCisgICBPdGhlciBuYXRpdmUgZm9ybWF0czo6CisKKyAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2wnLCBbLTExMTExMTExLCAyMjIyMjIyMiwgLTMzMzMzMzMzLCA0NDQ0NDQ0NF0pCisgICAgICA+Pj4gYVswXQorICAgICAgLTExMTExMTExCisgICAgICA+Pj4gYVstMV0KKyAgICAgIDQ0NDQ0NDQ0CisgICAgICA+Pj4gYVsyOjNdLnRvbGlzdCgpCisgICAgICBbLTMzMzMzMzMzXQorICAgICAgPj4+IGFbOjoyXS50b2xpc3QoKQorICAgICAgWy0xMTExMTExMSwgLTMzMzMzMzMzXQorICAgICAgPj4+IGFbOjotMV0udG9saXN0KCkKKyAgICAgIFs0NDQ0NDQ0NCwgLTMzMzMzMzMzLCAyMjIyMjIyMiwgLTExMTExMTExXQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgSWYgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHdyaXRhYmxlLCB0aGUgbWVtb3J5dmlldyBzdXBwb3J0cyBzbGljZQorICAgYXNzaWdubWVudC4gUmVzaXppbmcgaXMgbm90IGFsbG93ZWQ6OgorCisgICAgICA+Pj4gZGF0YSA9IGJ5dGVhcnJheShiJ2FiY2VmZycpCisgICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoZGF0YSkKKyAgICAgID4+PiB2LnJlYWRvbmx5CisgICAgICBGYWxzZQorICAgICAgPj4+IHZbMF0gPSBvcmQoYid6JykKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6YmNlZmcnKQorICAgICAgPj4+IHZbMTo0XSA9IGInMTIzJworICAgICAgPj4+IGRhdGEKKyAgICAgIGJ5dGVhcnJheShiJ3oxMjNmZycpCisgICAgICA+Pj4gdlsyOjNdID0gYidzcGFtJworICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgVmFsdWVFcnJvcjogbWVtb3J5dmlldyBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzCisgICAgICA+Pj4gdlsyOjZdID0gYidzcGFtJworICAgICAgPj4+IGRhdGEKKyAgICAgIGJ5dGVhcnJheShiJ3oxc3BhbScpCisKKyAgIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyBvZiBoYXNoYWJsZSAocmVhZC1vbmx5KSB0eXBlcyB3aXRoIGZvcm1hdHMKKyAgICdCJywgJ2InIG9yICdjJyBhcmUgYWxzbyBoYXNoYWJsZS4gVGhlIGhhc2ggaXMgZGVmaW5lZCBhcworICAgYGBoYXNoKG0pID09IGhhc2gobS50b2J5dGVzKCkpYGA6OgorCisgICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoYidhYmNlZmcnKQorICAgICAgPj4+IGhhc2godikgPT0gaGFzaChiJ2FiY2VmZycpCisgICAgICBUcnVlCisgICAgICA+Pj4gaGFzaCh2WzI6NF0pID09IGhhc2goYidjZScpCisgICAgICBUcnVlCisgICAgICA+Pj4gaGFzaCh2Wzo6LTJdKSA9PSBoYXNoKGInYWJjZWZnJ1s6Oi0yXSkKKyAgICAgIFRydWUKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyB3aXRoIGZvcm1hdHMgJ0InLCAnYicgb3IgJ2MnIGFyZSBub3cgaGFzaGFibGUuCisKKyAgIC4uIG5vdGU6OgorICAgICAgSGFzaGluZyBvZiBtZW1vcnl2aWV3cyB3aXRoIGZvcm1hdHMgb3RoZXIgdGhhbiAnQicsICdiJyBvciAnYycgYXMgd2VsbAorICAgICAgYXMgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyBpcyBwb3NzaWJsZSBpbiB2ZXJzaW9uIDMuMy4wLAorICAgICAgYnV0IHdpbGwgcmFpc2UgYW4gZXJyb3IgaW4gMy4zLjEgaW4gb3JkZXIgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBuZXcKKyAgICAgIG1lbW9yeXZpZXcgZXF1YWxpdHkgZGVmaW5pdGlvbi4KKworICAgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgc2V2ZXJhbCBtZXRob2RzOgorCisgICAuLiBtZXRob2Q6OiBfX2VxX18oZXhwb3J0ZXIpCisKKyAgICAgIEEgbWVtb3J5dmlldyBhbmQgYSA6cGVwOmAzMTE4YCBleHBvcnRlciBhcmUgZXF1YWwgaWYgdGhlaXIgc2hhcGVzIGFyZQorICAgICAgZXF1aXZhbGVudCBhbmQgaWYgYWxsIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGFyZSBlcXVhbCB3aGVuIHRoZSBvcGVyYW5kcycKKyAgICAgIHJlc3BlY3RpdmUgZm9ybWF0IGNvZGVzIGFyZSBpbnRlcnByZXRlZCB1c2luZyA6bW9kOmBzdHJ1Y3RgIHN5bnRheC4KKworICAgICAgRm9yIHRoZSBzdWJzZXQgb2YgOm1vZDpgc3RydWN0YCBmb3JtYXQgc3RyaW5ncyBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5CisgICAgICA6bWV0aDpgdG9saXN0YCwgYGB2YGAgYW5kIGBgd2BgIGFyZSBlcXVhbCBpZiBgYHYudG9saXN0KCkgPT0gdy50b2xpc3QoKWBgOjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheQorICAgICAgICAgPj4+IGEgPSBhcnJheS5hcnJheSgnSScsIFsxLCAyLCAzLCA0LCA1XSkKKyAgICAgICAgID4+PiBiID0gYXJyYXkuYXJyYXkoJ2QnLCBbMS4wLCAyLjAsIDMuMCwgNC4wLCA1LjBdKQorICAgICAgICAgPj4+IGMgPSBhcnJheS5hcnJheSgnYicsIFs1LCAzLCAxXSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhhKQorICAgICAgICAgPj4+IHkgPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICA+Pj4geCA9PSBhID09IHkgPT0gYgorICAgICAgICAgVHJ1ZQorICAgICAgICAgPj4+IHgudG9saXN0KCkgPT0gYS50b2xpc3QoKSA9PSB5LnRvbGlzdCgpID09IGIudG9saXN0KCkKKyAgICAgICAgIFRydWUKKyAgICAgICAgID4+PiB6ID0geVs6Oi0yXQorICAgICAgICAgPj4+IHogPT0gYworICAgICAgICAgVHJ1ZQorICAgICAgICAgPj4+IHoudG9saXN0KCkgPT0gYy50b2xpc3QoKQorICAgICAgICAgVHJ1ZQorCisgICAgICBJZiBlaXRoZXIgZm9ybWF0IHN0cmluZyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSwKKyAgICAgIHRoZW4gdGhlIG9iamVjdHMgd2lsbCBhbHdheXMgY29tcGFyZSBhcyB1bmVxdWFsIChldmVuIGlmIHRoZSBmb3JtYXQKKyAgICAgIHN0cmluZ3MgYW5kIGJ1ZmZlciBjb250ZW50cyBhcmUgaWRlbnRpY2FsKTo6CisKKyAgICAgICAgID4+PiBmcm9tIGN0eXBlcyBpbXBvcnQgQmlnRW5kaWFuU3RydWN0dXJlLCBjX2xvbmcKKyAgICAgICAgID4+PiBjbGFzcyBCRVBvaW50KEJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAuLi4gICAgIF9maWVsZHNfID0gWygieCIsIGNfbG9uZyksICgieSIsIGNfbG9uZyldCisgICAgICAgICAuLi4KKyAgICAgICAgID4+PiBwb2ludCA9IEJFUG9pbnQoMTAwLCAyMDApCisgICAgICAgICA+Pj4gYSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICA+Pj4gYiA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICA+Pj4gYSA9PSBwb2ludAorICAgICAgICAgRmFsc2UKKyAgICAgICAgID4+PiBhID09IGIKKyAgICAgICAgIEZhbHNlCisKKyAgICAgIE5vdGUgdGhhdCwgYXMgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBgYHYgaXMgd2BgIGRvZXMgKm5vdCogaW1wbHkKKyAgICAgIGBgdiA9PSB3YGAgZm9yIG1lbW9yeXZpZXcgb2JqZWN0cy4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFByZXZpb3VzIHZlcnNpb25zIGNvbXBhcmVkIHRoZSByYXcgbWVtb3J5IGRpc3JlZ2FyZGluZyB0aGUgaXRlbSBmb3JtYXQKKyAgICAgICAgIGFuZCB0aGUgbG9naWNhbCBhcnJheSBzdHJ1Y3R1cmUuCisKKyAgIC4uIG1ldGhvZDo6IHRvYnl0ZXMoKQorCisgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGVzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgIGNhbGxpbmcgdGhlIDpjbGFzczpgYnl0ZXNgIGNvbnN0cnVjdG9yIG9uIHRoZSBtZW1vcnl2aWV3LiA6OgorCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQorICAgICAgICAgPj4+IG0udG9ieXRlcygpCisgICAgICAgICBiJ2FiYycKKyAgICAgICAgID4+PiBieXRlcyhtKQorICAgICAgICAgYidhYmMnCisKKyAgICAgIEZvciBub24tY29udGlndW91cyBhcnJheXMgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byB0aGUgZmxhdHRlbmVkIGxpc3QKKyAgICAgIHJlcHJlc2VudGF0aW9uIHdpdGggYWxsIGVsZW1lbnRzIGNvbnZlcnRlZCB0byBieXRlcy4gOm1ldGg6YHRvYnl0ZXNgCisgICAgICBzdXBwb3J0cyBhbGwgZm9ybWF0IHN0cmluZ3MsIGluY2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBub3QgaW4KKyAgICAgIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN5bnRheC4KKworICAgLi4gbWV0aG9kOjogdG9saXN0KCkKKworICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiA6OgorCisgICAgICAgICA+Pj4gbWVtb3J5dmlldyhiJ2FiYycpLnRvbGlzdCgpCisgICAgICAgICBbOTcsIDk4LCA5OV0KKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2QnLCBbMS4xLCAyLjIsIDMuM10pCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiBtLnRvbGlzdCgpCisgICAgICAgICBbMS4xLCAyLjIsIDMuM10KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIDptZXRoOmB0b2xpc3RgIG5vdyBzdXBwb3J0cyBhbGwgc2luZ2xlIGNoYXJhY3RlciBuYXRpdmUgZm9ybWF0cyBpbgorICAgICAgICAgOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4IGFzIHdlbGwgYXMgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAgLi4gbWV0aG9kOjogcmVsZWFzZSgpCisKKyAgICAgIFJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LiAgTWFueQorICAgICAgb2JqZWN0cyB0YWtlIHNwZWNpYWwgYWN0aW9ucyB3aGVuIGEgdmlldyBpcyBoZWxkIG9uIHRoZW0gKGZvciBleGFtcGxlLAorICAgICAgYSA6Y2xhc3M6YGJ5dGVhcnJheWAgd291bGQgdGVtcG9yYXJpbHkgZm9yYmlkIHJlc2l6aW5nKTsgdGhlcmVmb3JlLAorICAgICAgY2FsbGluZyByZWxlYXNlKCkgaXMgaGFuZHkgdG8gcmVtb3ZlIHRoZXNlIHJlc3RyaWN0aW9ucyAoYW5kIGZyZWUgYW55CisgICAgICBkYW5nbGluZyByZXNvdXJjZXMpIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgICAgIEFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCwgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIG9uIHRoZSB2aWV3CisgICAgICByYWlzZXMgYSA6Y2xhc3M6YFZhbHVlRXJyb3JgIChleGNlcHQgOm1ldGg6YHJlbGVhc2UoKWAgaXRzZWxmIHdoaWNoIGNhbgorICAgICAgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzKTo6CisKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiJ2FiYycpCisgICAgICAgICA+Pj4gbS5yZWxlYXNlKCkKKyAgICAgICAgID4+PiBtWzBdCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICBWYWx1ZUVycm9yOiBvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0CisKKyAgICAgIFRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wgY2FuIGJlIHVzZWQgZm9yIGEgc2ltaWxhciBlZmZlY3QsCisgICAgICB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50OjoKKworICAgICAgICAgPj4+IHdpdGggbWVtb3J5dmlldyhiJ2FiYycpIGFzIG06CisgICAgICAgICAuLi4gICAgIG1bMF0KKyAgICAgICAgIC4uLgorICAgICAgICAgOTcKKyAgICAgICAgID4+PiBtWzBdCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICBWYWx1ZUVycm9yOiBvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0CisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisgICAuLiBtZXRob2Q6OiBjYXN0KGZvcm1hdFssIHNoYXBlXSkKKworICAgICAgQ2FzdCBhIG1lbW9yeXZpZXcgdG8gYSBuZXcgZm9ybWF0IG9yIHNoYXBlLiAqc2hhcGUqIGRlZmF1bHRzIHRvCisgICAgICBgYFtieXRlX2xlbmd0aC8vbmV3X2l0ZW1zaXplXWBgLCB3aGljaCBtZWFucyB0aGF0IHRoZSByZXN1bHQgdmlldworICAgICAgd2lsbCBiZSBvbmUtZGltZW5zaW9uYWwuIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBuZXcgbWVtb3J5dmlldywgYnV0CisgICAgICB0aGUgYnVmZmVyIGl0c2VsZiBpcyBub3QgY29waWVkLiBTdXBwb3J0ZWQgY2FzdHMgYXJlIDFEIC0+IEMtY29udGlndW91cworICAgICAgYW5kIEMtY29udGlndW91cyAtPiAxRC4KKworICAgICAgQm90aCBmb3JtYXRzIGFyZSByZXN0cmljdGVkIHRvIHNpbmdsZSBlbGVtZW50IG5hdGl2ZSBmb3JtYXRzIGluCisgICAgICA6bW9kOmBzdHJ1Y3RgIHN5bnRheC4gT25lIG9mIHRoZSBmb3JtYXRzIG11c3QgYmUgYSBieXRlIGZvcm1hdAorICAgICAgKCdCJywgJ2InIG9yICdjJykuIFRoZSBieXRlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IG11c3QgYmUgdGhlIHNhbWUKKyAgICAgIGFzIHRoZSBvcmlnaW5hbCBsZW5ndGguCisKKyAgICAgIENhc3QgMUQvbG9uZyB0byAxRC91bnNpZ25lZCBieXRlczo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2wnLCBbMSwyLDNdKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4geC5mb3JtYXQKKyAgICAgICAgICdsJworICAgICAgICAgPj4+IHguaXRlbXNpemUKKyAgICAgICAgIDgKKyAgICAgICAgID4+PiBsZW4oeCkKKyAgICAgICAgIDMKKyAgICAgICAgID4+PiB4Lm5ieXRlcworICAgICAgICAgMjQKKyAgICAgICAgID4+PiB5ID0geC5jYXN0KCdCJykKKyAgICAgICAgID4+PiB5LmZvcm1hdAorICAgICAgICAgJ0InCisgICAgICAgICA+Pj4geS5pdGVtc2l6ZQorICAgICAgICAgMQorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMjQKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgMjQKKworICAgICAgQ2FzdCAxRC91bnNpZ25lZCBieXRlcyB0byAxRC9jaGFyOjoKKworICAgICAgICAgPj4+IGIgPSBieXRlYXJyYXkoYid6eXonKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICA+Pj4geFswXSA9IGInYScKKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgIFZhbHVlRXJyb3I6IG1lbW9yeXZpZXc6IGludmFsaWQgdmFsdWUgZm9yIGZvcm1hdCAiQiIKKyAgICAgICAgID4+PiB5ID0geC5jYXN0KCdjJykKKyAgICAgICAgID4+PiB5WzBdID0gYidhJworICAgICAgICAgPj4+IGIKKyAgICAgICAgIGJ5dGVhcnJheShiJ2F5eicpCisKKyAgICAgIENhc3QgMUQvYnl0ZXMgdG8gM0QvaW50cyB0byAxRC9zaWduZWQgY2hhcjo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgc3RydWN0CisgICAgICAgICA+Pj4gYnVmID0gc3RydWN0LnBhY2soImkiKjEyLCAqbGlzdChyYW5nZSgxMikpKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgID4+PiB5ID0geC5jYXN0KCdpJywgc2hhcGU9WzIsMiwzXSkKKyAgICAgICAgID4+PiB5LnRvbGlzdCgpCisgICAgICAgICBbW1swLCAxLCAyXSwgWzMsIDQsIDVdXSwgW1s2LCA3LCA4XSwgWzksIDEwLCAxMV1dXQorICAgICAgICAgPj4+IHkuZm9ybWF0CisgICAgICAgICAnaScKKyAgICAgICAgID4+PiB5Lml0ZW1zaXplCisgICAgICAgICA0CisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAyCisgICAgICAgICA+Pj4geS5uYnl0ZXMKKyAgICAgICAgIDQ4CisgICAgICAgICA+Pj4geiA9IHkuY2FzdCgnYicpCisgICAgICAgICA+Pj4gei5mb3JtYXQKKyAgICAgICAgICdiJworICAgICAgICAgPj4+IHouaXRlbXNpemUKKyAgICAgICAgIDEKKyAgICAgICAgID4+PiBsZW4oeikKKyAgICAgICAgIDQ4CisgICAgICAgICA+Pj4gei5uYnl0ZXMKKyAgICAgICAgIDQ4CisKKyAgICAgIENhc3QgMUQvdW5zaWduZWQgY2hhciB0byB0byAyRC91bnNpZ25lZCBsb25nOjoKKworICAgICAgICAgPj4+IGJ1ZiA9IHN0cnVjdC5wYWNrKCJMIio2LCAqbGlzdChyYW5nZSg2KSkpCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYnVmKQorICAgICAgICAgPj4+IHkgPSB4LmNhc3QoJ0wnLCBzaGFwZT1bMiwzXSkKKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDIKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgNDgKKyAgICAgICAgID4+PiB5LnRvbGlzdCgpCisgICAgICAgICBbWzAsIDEsIDJdLCBbMywgNCwgNV1dCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsIHJlYWRvbmx5IGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBvYmoKKworICAgICAgVGhlIHVuZGVybHlpbmcgb2JqZWN0IG9mIHRoZSBtZW1vcnl2aWV3OjoKKworICAgICAgICAgPj4+IGIgID0gYnl0ZWFycmF5KGIneHl6JykKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhiKQorICAgICAgICAgPj4+IG0ub2JqIGlzIGIKKyAgICAgICAgIFRydWUKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ieXRlcworCisgICAgICBgYG5ieXRlcyA9PSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID09IGxlbihtLnRvYnl0ZXMoKSlgYC4gVGhpcyBpcworICAgICAgdGhlIGFtb3VudCBvZiBzcGFjZSBpbiBieXRlcyB0aGF0IHRoZSBhcnJheSB3b3VsZCB1c2UgaW4gYSBjb250aWd1b3VzCisgICAgICByZXByZXNlbnRhdGlvbi4gSXQgaXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGxlbihtKTo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2knLCBbMSwyLDMsNCw1XSkKKyAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICAgPj4+IGxlbihtKQorICAgICAgICAgNQorICAgICAgICAgPj4+IG0ubmJ5dGVzCisgICAgICAgICAyMAorICAgICAgICAgPj4+IHkgPSBtWzo6Ml0KKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDMKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgMTIKKyAgICAgICAgID4+PiBsZW4oeS50b2J5dGVzKCkpCisgICAgICAgICAxMgorCisgICAgICBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXM6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IHN0cnVjdAorICAgICAgICAgPj4+IGJ1ZiA9IHN0cnVjdC5wYWNrKCJkIioxMiwgKlsxLjUqeCBmb3IgeCBpbiByYW5nZSgxMildKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgID4+PiB5ID0geC5jYXN0KCdkJywgc2hhcGU9WzMsNF0pCisgICAgICAgICA+Pj4geS50b2xpc3QoKQorICAgICAgICAgW1swLjAsIDEuNSwgMy4wLCA0LjVdLCBbNi4wLCA3LjUsIDkuMCwgMTAuNV0sIFsxMi4wLCAxMy41LCAxNS4wLCAxNi41XV0KKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDMKKyAgICAgICAgID4+PiB5Lm5ieXRlcworICAgICAgICAgOTYKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHJlYWRvbmx5CisKKyAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyByZWFkIG9ubHkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZvcm1hdAorCisgICAgICBBIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXQgKGluIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN0eWxlKSBmb3IgZWFjaAorICAgICAgZWxlbWVudCBpbiB0aGUgdmlldy4gQSBtZW1vcnl2aWV3IGNhbiBiZSBjcmVhdGVkIGZyb20gZXhwb3J0ZXJzIHdpdGgKKyAgICAgIGFyYml0cmFyeSBmb3JtYXQgc3RyaW5ncywgYnV0IHNvbWUgbWV0aG9kcyAoZS5nLiA6bWV0aDpgdG9saXN0YCkgYXJlCisgICAgICByZXN0cmljdGVkIHRvIG5hdGl2ZSBzaW5nbGUgZWxlbWVudCBmb3JtYXRzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgZm9ybWF0IGBgJ0InYGAgaXMgbm93IGhhbmRsZWQgYWNjb3JkaW5nIHRvIHRoZSBzdHJ1Y3QgbW9kdWxlIHN5bnRheC4KKyAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBgYG1lbW9yeXZpZXcoYidhYmMnKVswXSA9PSBiJ2FiYydbMF0gPT0gOTdgYC4KKworICAgLi4gYXR0cmlidXRlOjogaXRlbXNpemUKKworICAgICAgVGhlIHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSBtZW1vcnl2aWV3OjoKKworICAgICAgICAgPj4+IGltcG9ydCBhcnJheSwgc3RydWN0CisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYXJyYXkuYXJyYXkoJ0gnLCBbMzIwMDAsIDMyMDAxLCAzMjAwMl0pKQorICAgICAgICAgPj4+IG0uaXRlbXNpemUKKyAgICAgICAgIDIKKyAgICAgICAgID4+PiBtWzBdCisgICAgICAgICAzMjAwMAorICAgICAgICAgPj4+IHN0cnVjdC5jYWxjc2l6ZSgnSCcpID09IG0uaXRlbXNpemUKKyAgICAgICAgIFRydWUKKworICAgLi4gYXR0cmlidXRlOjogbmRpbQorCisgICAgICBBbiBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgZGltZW5zaW9ucyBvZiBhIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5IHRoZQorICAgICAgbWVtb3J5IHJlcHJlc2VudHMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHNoYXBlCisKKyAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaGFwZSBvZiB0aGUKKyAgICAgIG1lbW9yeSBhcyBhbiBOLWRpbWVuc2lvbmFsIGFycmF5LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQW4gZW1wdHkgdHVwbGUgaW5zdGVhZCBvZiBOb25lIHdoZW4gbmRpbSA9IDAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0cmlkZXMKKworICAgICAgQSB0dXBsZSBvZiBpbnRlZ2VycyB0aGUgbGVuZ3RoIG9mIDphdHRyOmBuZGltYCBnaXZpbmcgdGhlIHNpemUgaW4gYnl0ZXMgdG8KKyAgICAgIGFjY2VzcyBlYWNoIGVsZW1lbnQgZm9yIGVhY2ggZGltZW5zaW9uIG9mIHRoZSBhcnJheS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFuIGVtcHR5IHR1cGxlIGluc3RlYWQgb2YgTm9uZSB3aGVuIG5kaW0gPSAwLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdWJvZmZzZXRzCisKKyAgICAgIFVzZWQgaW50ZXJuYWxseSBmb3IgUElMLXN0eWxlIGFycmF5cy4gVGhlIHZhbHVlIGlzIGluZm9ybWF0aW9uYWwgb25seS4KKworICAgLi4gYXR0cmlidXRlOjogY19jb250aWd1b3VzCisKKyAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBDLWNvbnRpZ3VvdXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBmX2NvbnRpZ3VvdXMKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEZvcnRyYW4gY29udGlndW91cy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRpZ3VvdXMKKworICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIGNvbnRpZ3VvdXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIF90eXBlcy1zZXQ6CiAKIFNldCBUeXBlcyAtLS0gOmNsYXNzOmBzZXRgLCA6Y2xhc3M6YGZyb3plbnNldGAKQEAgLTE4OTYsNyArMjczNSw3IEBACiBDb21tb24gdXNlcyBpbmNsdWRlIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZAogY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbiwgZGlmZmVyZW5jZSwgYW5kCiBzeW1tZXRyaWMgZGlmZmVyZW5jZS4KLShGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIDpjbGFzczpgZGljdGAsIDpjbGFzczpgbGlzdGAsCisoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1pbiA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YGxpc3RgLAogYW5kIDpjbGFzczpgdHVwbGVgIGNsYXNzZXMsIGFuZCB0aGUgOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZS4pCiAKIExpa2Ugb3RoZXIgY29sbGVjdGlvbnMsIHNldHMgc3VwcG9ydCBgYHggaW4gc2V0YGAsIGBgbGVuKHNldClgYCwgYW5kIGBgZm9yIHggaW4KQEAgLTIwOTYsNyArMjkzNSw3IEBACiAKIEEgOmRmbjpgbWFwcGluZ2Agb2JqZWN0IG1hcHMgOnRlcm06YGhhc2hhYmxlYCB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuCiBNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkIG1hcHBpbmcKLXR5cGUsIHRoZSA6ZGZuOmBkaWN0aW9uYXJ5YC4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluCit0eXBlLCB0aGUgOmRmbjpgZGljdGlvbmFyeWAuICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1pbgogOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBzZXRgLCBhbmQgOmNsYXNzOmB0dXBsZWAgY2xhc3NlcywgYW5kIHRoZQogOm1vZDpgY29sbGVjdGlvbnNgIG1vZHVsZS4pCiAKQEAgLTIyMjAsMTMgKzMwNTksMTMgQEAKIAogICAgLi4gbWV0aG9kOjogaXRlbXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgIHBhaXJzKS4gIFNlZQotICAgICAgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLgorICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYCBwYWlycykuCisgICAgICBTZWUgdGhlIDpyZWY6YGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCiAKICAgIC4uIG1ldGhvZDo6IGtleXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YKLSAgICAgIHZpZXcgb2JqZWN0cy4KKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSB0aGUgOnJlZjpgZG9jdW1lbnRhdGlvbgorICAgICAgb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCiAKICAgIC4uIG1ldGhvZDo6IHBvcChrZXlbLCBkZWZhdWx0XSkKIApAQCAtMjI2MCw4ICszMDk5LDEyIEBACiAKICAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCiAKLSAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlIGJlbG93IGZvciBkb2N1bWVudGF0aW9uIG9mCi0gICAgICB2aWV3IG9iamVjdHMuCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSB0aGUKKyAgICAgIDpyZWY6YGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzIDxkaWN0LXZpZXdzPmAuCisKKy4uIHNlZWFsc286OgorICAgOmNsYXNzOmB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlldworICAgb2YgYSA6Y2xhc3M6YGRpY3RgLgogCiAKIC4uIF9kaWN0LXZpZXdzOgpAQCAtMjMwNyw3ICszMTUwLDcgQEAKIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZSwKIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlIG5vdCB0cmVhdGVkIGFzIHNldC1saWtlCiBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKSAgRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlCi1vcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIDpjbGFzczpgY29sbGVjdGlvbnMuU2V0YCBhcmUKK29wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YCBhcmUKIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCwgYGA8YGAsIG9yIGBgXmBgKS4KIAogQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6OgpAQCAtMjM0MiwxNTkgKzMxODUsNiBAQAogICAgeydqdWljZScsICdzYXVzYWdlJywgJ2JhY29uJywgJ3NwYW0nfQogCiAKLS4uIF90eXBlbWVtb3J5dmlldzoKLQotbWVtb3J5dmlldyB0eXBlCi09PT09PT09PT09PT09PT0KLQotOmNsYXNzOmBtZW1vcnl2aWV3YCBvYmplY3RzIGFsbG93IFB5dGhvbiBjb2RlIHRvIGFjY2VzcyB0aGUgaW50ZXJuYWwgZGF0YQotb2YgYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gIHdpdGhvdXQKLWNvcHlpbmcuICBNZW1vcnkgaXMgZ2VuZXJhbGx5IGludGVycHJldGVkIGFzIHNpbXBsZSBieXRlcy4KLQotLi4gY2xhc3M6OiBtZW1vcnl2aWV3KG9iaikKLQotICAgQ3JlYXRlIGEgOmNsYXNzOmBtZW1vcnl2aWV3YCB0aGF0IHJlZmVyZW5jZXMgKm9iaiouICAqb2JqKiBtdXN0IHN1cHBvcnQgdGhlCi0gICBidWZmZXIgcHJvdG9jb2wuICBCdWlsdC1pbiBvYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIGluY2x1ZGUKLSAgIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCi0KLSAgIEEgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgdGhlIG5vdGlvbiBvZiBhbiAqZWxlbWVudCosIHdoaWNoIGlzIHRoZQotICAgYXRvbWljIG1lbW9yeSB1bml0IGhhbmRsZWQgYnkgdGhlIG9yaWdpbmF0aW5nIG9iamVjdCAqb2JqKi4gIEZvciBtYW55Ci0gICBzaW1wbGUgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgLCBhbiBlbGVtZW50Ci0gICBpcyBhIHNpbmdsZSBieXRlLCBidXQgb3RoZXIgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGFycmF5LmFycmF5YCBtYXkgaGF2ZQotICAgYmlnZ2VyIGVsZW1lbnRzLgotCi0gICBgYGxlbih2aWV3KWBgIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbWVtb3J5dmlldywKLSAgICp2aWV3Ki4gIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKLSAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgotCi0gICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuICBUYWtpbmcgYSBzaW5nbGUKLSAgIGluZGV4IHdpbGwgcmV0dXJuIGEgc2luZ2xlIGVsZW1lbnQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuICBGdWxsCi0gICBzbGljaW5nIHdpbGwgcmVzdWx0IGluIGEgc3Vidmlldzo6Ci0KLSAgICAgID4+PiB2ID0gbWVtb3J5dmlldyhiJ2FiY2VmZycpCi0gICAgICA+Pj4gdlsxXQotICAgICAgYidiJwotICAgICAgPj4+IHZbLTFdCi0gICAgICBiJ2cnCi0gICAgICA+Pj4gdlsxOjRdCi0gICAgICA8bWVtb3J5IGF0IDB4NzdhYjI4PgotICAgICAgPj4+IGJ5dGVzKHZbMTo0XSkKLSAgICAgIGInYmNlJwotCi0gICBJZiB0aGUgb2JqZWN0IHRoZSBtZW1vcnl2aWV3IGlzIG92ZXIgc3VwcG9ydHMgY2hhbmdpbmcgaXRzIGRhdGEsIHRoZQotICAgbWVtb3J5dmlldyBzdXBwb3J0cyBzbGljZSBhc3NpZ25tZW50OjoKLQotICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQotICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCi0gICAgICA+Pj4gdi5yZWFkb25seQotICAgICAgRmFsc2UKLSAgICAgID4+PiB2WzBdID0gYid6JwotICAgICAgPj4+IGRhdGEKLSAgICAgIGJ5dGVhcnJheShiJ3piY2VmZycpCi0gICAgICA+Pj4gdlsxOjRdID0gYicxMjMnCi0gICAgICA+Pj4gZGF0YQotICAgICAgYnl0ZWFycmF5KGInejEyM2ZnJykKLSAgICAgID4+PiB2WzJdID0gYidzcGFtJwotICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgVmFsdWVFcnJvcjogY2Fubm90IG1vZGlmeSBzaXplIG9mIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgIE5vdGljZSBob3cgdGhlIHNpemUgb2YgdGhlIG1lbW9yeXZpZXcgb2JqZWN0IGNhbm5vdCBiZSBjaGFuZ2VkLgotCi0gICA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyBzZXZlcmFsIG1ldGhvZHM6Ci0KLSAgIC4uIG1ldGhvZDo6IHRvYnl0ZXMoKQotCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGVzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgIGNhbGxpbmcgdGhlIDpjbGFzczpgYnl0ZXNgIGNvbnN0cnVjdG9yIG9uIHRoZSBtZW1vcnl2aWV3LiA6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQotICAgICAgICAgPj4+IG0udG9ieXRlcygpCi0gICAgICAgICBiJ2FiYycKLSAgICAgICAgID4+PiBieXRlcyhtKQotICAgICAgICAgYidhYmMnCi0KLSAgIC4uIG1ldGhvZDo6IHRvbGlzdCgpCi0KLSAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgbGlzdCBvZiBpbnRlZ2Vycy4gOjoKLQotICAgICAgICAgPj4+IG1lbW9yeXZpZXcoYidhYmMnKS50b2xpc3QoKQotICAgICAgICAgWzk3LCA5OCwgOTldCi0KLSAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQotCi0gICAgICBSZWxlYXNlIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBleHBvc2VkIGJ5IHRoZSBtZW1vcnl2aWV3IG9iamVjdC4gIE1hbnkKLSAgICAgIG9iamVjdHMgdGFrZSBzcGVjaWFsIGFjdGlvbnMgd2hlbiBhIHZpZXcgaXMgaGVsZCBvbiB0aGVtIChmb3IgZXhhbXBsZSwKLSAgICAgIGEgOmNsYXNzOmBieXRlYXJyYXlgIHdvdWxkIHRlbXBvcmFyaWx5IGZvcmJpZCByZXNpemluZyk7IHRoZXJlZm9yZSwKLSAgICAgIGNhbGxpbmcgcmVsZWFzZSgpIGlzIGhhbmR5IHRvIHJlbW92ZSB0aGVzZSByZXN0cmljdGlvbnMgKGFuZCBmcmVlIGFueQotICAgICAgZGFuZ2xpbmcgcmVzb3VyY2VzKSBhcyBzb29uIGFzIHBvc3NpYmxlLgotCi0gICAgICBBZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGFueSBmdXJ0aGVyIG9wZXJhdGlvbiBvbiB0aGUgdmlldwotICAgICAgcmFpc2VzIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCAoZXhjZXB0IDptZXRoOmByZWxlYXNlKClgIGl0c2VsZiB3aGljaCBjYW4KLSAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyk6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYidhYmMnKQotICAgICAgICAgPj4+IG0ucmVsZWFzZSgpCi0gICAgICAgICA+Pj4gbVswXQotICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgICAgVmFsdWVFcnJvcjogb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdAotCi0gICAgICBUaGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIGNhbiBiZSB1c2VkIGZvciBhIHNpbWlsYXIgZWZmZWN0LAotICAgICAgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudDo6Ci0KLSAgICAgICAgID4+PiB3aXRoIG1lbW9yeXZpZXcoYidhYmMnKSBhcyBtOgotICAgICAgICAgLi4uICAgICBtWzBdCi0gICAgICAgICAuLi4KLSAgICAgICAgIGInYScKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgICAgICBWYWx1ZUVycm9yOiBvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Ci0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0gICBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsIHJlYWRvbmx5IGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgotCi0gICAuLiBhdHRyaWJ1dGU6OiBmb3JtYXQKLQotICAgICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0IChpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSkgZm9yIGVhY2gKLSAgICAgIGVsZW1lbnQgaW4gdGhlIHZpZXcuICBUaGlzIGRlZmF1bHRzIHRvIGBgJ0InYGAsIGEgc2ltcGxlIGJ5dGVzdHJpbmcuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IGl0ZW1zaXplCi0KLSAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldzo6Ci0KLSAgICAgICAgID4+PiBtID0gbWVtb3J5dmlldyhhcnJheS5hcnJheSgnSCcsIFsxLDIsM10pKQotICAgICAgICAgPj4+IG0uaXRlbXNpemUKLSAgICAgICAgIDIKLSAgICAgICAgID4+PiBtWzBdCi0gICAgICAgICBiJ1x4MDFceDAwJwotICAgICAgICAgPj4+IGxlbihtWzBdKSA9PSBtLml0ZW1zaXplCi0gICAgICAgICBUcnVlCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHNoYXBlCi0KLSAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaGFwZSBvZiB0aGUKLSAgICAgIG1lbW9yeSBhcyBhIE4tZGltZW5zaW9uYWwgYXJyYXkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IG5kaW0KLQotICAgICAgQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSB0aGUKLSAgICAgIG1lbW9yeSByZXByZXNlbnRzLgotCi0gICAuLiBhdHRyaWJ1dGU6OiBzdHJpZGVzCi0KLSAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaXplIGluIGJ5dGVzIHRvCi0gICAgICBhY2Nlc3MgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuCi0KLSAgIC4uIGF0dHJpYnV0ZTo6IHJlYWRvbmx5Ci0KLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyByZWFkIG9ubHkuCi0KLSAgIC4uIG1lbW9yeXZpZXcuc3Vib2Zmc2V0cyBpc24ndCBkb2N1bWVudGVkIGJlY2F1c2UgaXQgb25seSBzZWVtcyB1c2VmdWwgZm9yIEMKLQotCiAuLiBfdHlwZWNvbnRleHRtYW5hZ2VyOgogCiBDb250ZXh0IE1hbmFnZXIgVHlwZXMKQEAgLTI3MTYsNyArMzQwNiw3IEBACiAKIFRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGEgdmFsdWUuICBJdAogc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbCBvYmplY3QsIG5hbWVkCi1gYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4KK2BgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKE5vbmUpKClgYCBwcm9kdWNlcyB0aGUgc2FtZSBzaW5nbGV0b24uCiAKIEl0IGlzIHdyaXR0ZW4gYXMgYGBOb25lYGAuCiAKQEAgLTI3MjgsNyArMzQxOCw4IEBACiAKIFRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlIDpyZWY6YHNsaWNpbmdzYCkuICBJdCBzdXBwb3J0cyBubwogc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZAotOmNvbnN0OmBFbGxpcHNpc2AgKGEgYnVpbHQtaW4gbmFtZSkuCis6Y29uc3Q6YEVsbGlwc2lzYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShFbGxpcHNpcykoKWBgIHByb2R1Y2VzIHRoZQorOmNvbnN0OmBFbGxpcHNpc2Agc2luZ2xldG9uLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgRWxsaXBzaXNgYCBvciBgYC4uLmBgLgogCkBAIC0yNzQwLDcgKzM0MzEsOCBAQAogCiBUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBmcm9tIGNvbXBhcmlzb25zIGFuZCBiaW5hcnkgb3BlcmF0aW9ucyB3aGVuIHRoZXkgYXJlCiBhc2tlZCB0byBvcGVyYXRlIG9uIHR5cGVzIHRoZXkgZG9uJ3Qgc3VwcG9ydC4gU2VlIDpyZWY6YGNvbXBhcmlzb25zYCBmb3IgbW9yZQotaW5mb3JtYXRpb24uCitpbmZvcm1hdGlvbi4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGBgTm90SW1wbGVtZW50ZWRgYCBvYmplY3QuCitgYHR5cGUoTm90SW1wbGVtZW50ZWQpKClgYCBwcm9kdWNlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgTm90SW1wbGVtZW50ZWRgYC4KIApAQCAtMjgwNiw2ICszNDk4LDEzIEBACiAgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBjbGFzcy5fX3F1YWxuYW1lX18KKworICAgVGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGNsYXNzIG9yIHR5cGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGF0dHJpYnV0ZTo6IGNsYXNzLl9fbXJvX18KIAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlbiBsb29raW5nIGZvcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5ncy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhmMTY1OC4uMDAwMDAwMAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS4uIF9zdHJpbmdzZXJ2aWNlczoKLQotKioqKioqKioqKioqKioqCi1TdHJpbmcgU2VydmljZXMKLSoqKioqKioqKioqKioqKgotCi1UaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgYSB3aWRlIHJhbmdlIG9mIHN0cmluZwotbWFuaXB1bGF0aW9uIG9wZXJhdGlvbnMuCi0KLUluIGFkZGl0aW9uLCBQeXRob24ncyBidWlsdC1pbiBzdHJpbmcgY2xhc3NlcyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMKLWRlc2NyaWJlZCBpbiB0aGUgOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24sIGFuZCBhbHNvIHRoZSBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcwotZGVzY3JpYmVkIGluIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbi4gIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywKLXNlZSB0aGUgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3IKLXN0cmluZyBmdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KLQotCi0uLiB0b2N0cmVlOjoKLQotICAgc3RyaW5nLnJzdAotICAgcmUucnN0Ci0gICBzdHJ1Y3QucnN0Ci0gICBkaWZmbGliLnJzdAotICAgdGV4dHdyYXAucnN0Ci0gICBjb2RlY3MucnN0Ci0gICB1bmljb2RlZGF0YS5yc3QKLSAgIHN0cmluZ3ByZXAucnN0Ci0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CmluZGV4IDEyODIwZTAuLjk5NDUwNmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdApAQCAtMTg3LDE3ICsxODcsMjQgQEAKIHwgYGBRYGAgIHwgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDIpLCBcKDMpIHwKIHwgICAgICAgIHwgbG9uZ2AgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLXwgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKK3wgYGBuYGAgIHwgOmM6dHlwZTpgc3NpemVfdGAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLXwgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKK3wgYGBOYGAgIHwgOmM6dHlwZTpgc2l6ZV90YCAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBzYGAgIHwgOmM6dHlwZTpgY2hhcltdYCAgICAgICAgIHwgYnl0ZXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBwYGAgIHwgOmM6dHlwZTpgY2hhcltdYCAgICAgICAgIHwgYnl0ZXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLXwgYGBQYGAgIHwgOmM6dHlwZTpgdm9pZCBcKmAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKK3wgYGBQYGAgIHwgOmM6dHlwZTpgdm9pZCBcKmAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDYpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCduJ2BgIGFuZCBgYCdOJ2BgIGZvcm1hdHMuCisKIE5vdGVzOgogCiAoMSkKQEAgLTIxOSwxMSArMjI2LDE3IEBACiAgICAgICBVc2Ugb2YgdGhlIDptZXRoOmBfX2luZGV4X19gIG1ldGhvZCBmb3Igbm9uLWludGVnZXJzIGlzIG5ldyBpbiAzLjIuCiAKICg0KQorICAgVGhlIGBgJ24nYGAgYW5kIGBgJ04nYGAgY29udmVyc2lvbiBjb2RlcyBhcmUgb25seSBhdmFpbGFibGUgZm9yIHRoZSBuYXRpdmUKKyAgIHNpemUgKHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IG9yIHdpdGggdGhlIGBgJ0AnYGAgYnl0ZSBvcmRlciBjaGFyYWN0ZXIpLgorICAgRm9yIHRoZSBzdGFuZGFyZCBzaXplLCB5b3UgY2FuIHVzZSB3aGljaGV2ZXIgb2YgdGhlIG90aGVyIGludGVnZXIgZm9ybWF0cworICAgZml0cyB5b3VyIGFwcGxpY2F0aW9uLgorCisoNSkKICAgIEZvciB0aGUgYGAnZidgYCBhbmQgYGAnZCdgYCBjb252ZXJzaW9uIGNvZGVzLCB0aGUgcGFja2VkIHJlcHJlc2VudGF0aW9uIHVzZXMKICAgIHRoZSBJRUVFIDc1NCBiaW5hcnkzMiAoZm9yIGBgJ2YnYGApIG9yIGJpbmFyeTY0IChmb3IgYGAnZCdgYCkgZm9ybWF0LAogICAgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQgZm9ybWF0IHVzZWQgYnkgdGhlIHBsYXRmb3JtLgogCi0oNSkKKyg2KQogICAgVGhlIGBgJ1AnYGAgZm9ybWF0IGNoYXJhY3RlciBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIG5hdGl2ZSBieXRlIG9yZGVyaW5nCiAgICAoc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3Igd2l0aCB0aGUgYGAnQCdgYCBieXRlIG9yZGVyIGNoYXJhY3RlcikuIFRoZSBieXRlCiAgICBvcmRlciBjaGFyYWN0ZXIgYGAnPSdgYCBjaG9vc2VzIHRvIHVzZSBsaXR0bGUtIG9yIGJpZy1lbmRpYW4gb3JkZXJpbmcgYmFzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0IGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKaW5kZXggZTRjMWFkNC4uM2VjZGY0YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKQEAgLTMwLDE2ICszMCwyMSBAQAogdXNlIGNhc2VzLCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFBvcGVuYCBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCiAKIAotLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UpCisuLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KICAgIHJldHVybiB0aGUgOmF0dHI6YHJldHVybmNvZGVgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzCi0gICB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb25zIHBhc3NlcyBhbGwKLSAgIHN1cHBsaWVkIGFyZ3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtNjIsOCArNjcsMTEgQEAKICAgICAgIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2ggb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwCiAgICAgICB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCi0uLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBjaGVja19jYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLiBJZiB0aGUgcmV0dXJuCiAgICBjb2RlIHdhcyB6ZXJvIHRoZW4gcmV0dXJuLCBvdGhlcndpc2UgcmFpc2UgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCkBAIC03MSwxMCArNzksMTUgQEAKICAgIDphdHRyOmByZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCiAKICAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHNsaWdodGx5IG9kZCBub3RhdGlvbiBpbgotICAgdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhcwotICAgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgorICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQorICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisKKyAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKKyAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKKyAgIGhhcyB0ZXJtaW5hdGVkLgogCiAgICBFeGFtcGxlczo6CiAKQEAgLTg2LDggKzk5LDYgQEAKICAgICAgICAgIC4uLgogICAgICAgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ2V4aXQgMScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMQogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjUKLQogICAgLi4gd2FybmluZzo6CiAKICAgICAgIEludm9raW5nIHRoZSBzeXN0ZW0gc2hlbGwgd2l0aCBgYHNoZWxsPVRydWVgYCBjYW4gYmUgYSBzZWN1cml0eSBoYXphcmQKQEAgLTEwMSw4ICsxMTIsMTEgQEAKICAgICAgIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2ggb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwCiAgICAgICB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCiAKQEAgLTExMiwxMSArMTI2LDE3IEBACiAgICBhdHRyaWJ1dGUuCiAKICAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHNsaWdodGx5IG9kZCBub3RhdGlvbiBpbgotICAgdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQotICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciwgZXhjZXB0IHRoYXQgKnN0ZG91dCogaXMKLSAgIG5vdCBwZXJtaXR0ZWQgYXMgaXQgaXMgdXNlZCBpbnRlcm5hbGx5LiBBbGwgb3RoZXIgc3VwcGxpZWQgYXJndW1lbnRzIGFyZQotICAgcGFzc2VkIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBJbiBhZGRpdGlvbiwgKnN0ZG91dCogaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBhcmd1bWVudCwgYXMgaXQgaXMgdXNlZAorICAgaW50ZXJuYWxseSB0byBjb2xsZWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgc3VicHJvY2Vzcy4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtMTQ3LDcgKzE2Nyw3IEBACiAgICAgICAuLi4gICAgIHNoZWxsPVRydWUpCiAgICAgICAnbHM6IG5vbl9leGlzdGVudF9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XG4nCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKICAgIC4uIHdhcm5pbmc6OgogCkBAIC0xNjEsNiArMTgxLDE4IEBACiAgICAgICByZWFkIGluIHRoZSBjdXJyZW50IHByb2Nlc3MsIHRoZSBjaGlsZCBwcm9jZXNzIG1heSBibG9jayBpZiBpdAogICAgICAgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gdGhlIHBpcGUgdG8gZmlsbCB1cCB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisKKy4uIGRhdGE6OiBERVZOVUxMCisKKyAgIFNwZWNpYWwgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgKnN0ZGluKiwgKnN0ZG91dCogb3IgKnN0ZGVyciogYXJndW1lbnQKKyAgIHRvIDpjbGFzczpgUG9wZW5gIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lhbCBmaWxlIDpkYXRhOmBvcy5kZXZudWxsYAorICAgd2lsbCBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogUElQRQogCkBAIC0xNzYsMTAgKzIwOCwzOCBAQAogICAgb3V0cHV0LgogCiAKKy4uIGV4Y2VwdGlvbjo6IFN1YnByb2Nlc3NFcnJvcgorCisgICAgQmFzZSBjbGFzcyBmb3IgYWxsIG90aGVyIGV4Y2VwdGlvbnMgZnJvbSB0aGlzIG1vZHVsZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFeHBpcmVkCisKKyAgICBTdWJjbGFzcyBvZiA6ZXhjOmBTdWJwcm9jZXNzRXJyb3JgLCByYWlzZWQgd2hlbiBhIHRpbWVvdXQgZXhwaXJlcworICAgIHdoaWxlIHdhaXRpbmcgZm9yIGEgY2hpbGQgcHJvY2Vzcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNtZAorCisgICAgICAgIENvbW1hbmQgdGhhdCB3YXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2Vzcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHRpbWVvdXQKKworICAgICAgICBUaW1lb3V0IGluIHNlY29uZHMuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBvdXRwdXQKKworICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGJ5CisgICAgICAgIDpmdW5jOmBjaGVja19vdXRwdXRgLiAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGV4Y2VwdGlvbjo6IENhbGxlZFByb2Nlc3NFcnJvcgogCi0gICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgOmZ1bmM6YGNoZWNrX2NhbGxgIG9yCi0gICAgOmZ1bmM6YGNoZWNrX291dHB1dGAgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgorICAgIFN1YmNsYXNzIG9mIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAsIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkKKyAgICA6ZnVuYzpgY2hlY2tfY2FsbGAgb3IgOmZ1bmM6YGNoZWNrX291dHB1dGAgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogCiAgICAgLi4gYXR0cmlidXRlOjogcmV0dXJuY29kZQogCkBAIC0yMTYsMjUgKzI3NiwyNyBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgZmlsZSBvYmplY3QsIGFuZCBgYE5vbmVgYC4gIDpkYXRhOmBQSVBFYCBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlCi0gICB0byB0aGUgY2hpbGQgc2hvdWxkIGJlIGNyZWF0ZWQuICBXaXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzIG9mIGBgTm9uZWBgLCBubwotICAgcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZSBoYW5kbGVzIHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gdGhlCi0gICBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZSA6ZGF0YTpgU1RET1VUYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQKLSAgIHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUKLSAgIGhhbmRsZSBhcyBmb3Igc3Rkb3V0LgorICAgYXJlIDpkYXRhOmBQSVBFYCwgOmRhdGE6YERFVk5VTExgLCBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IgKGEgcG9zaXRpdmUKKyAgIGludGVnZXIpLCBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcworICAgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYCBpbmRpY2F0ZXMKKyAgIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiAgV2l0aCB0aGUgZGVmYXVsdAorICAgc2V0dGluZ3Mgb2YgYGBOb25lYGAsIG5vIHJlZGlyZWN0aW9uIHdpbGwgb2NjdXI7IHRoZSBjaGlsZCdzIGZpbGUgaGFuZGxlcworICAgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50LiAgQWRkaXRpb25hbGx5LCAqc3RkZXJyKiBjYW4gYmUKKyAgIDpkYXRhOmBTVERPVVRgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3RkZXJyIGRhdGEgZnJvbSB0aGUgY2hpbGQKKyAgIHByb2Nlc3Mgc2hvdWxkIGJlIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yICpzdGRvdXQqLgogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgc3VicHJvY2VzcyBtb2R1bGUKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCoKLSAgIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AKLSAgIG1vZGUgdXNpbmcgdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5IDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmdgLgotICAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkCi0gICB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvciA6ZGF0YTpgb3MubGluZXNlcGAuICBGb3IgKnN0ZG91dCogYW5kCi0gICAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLgotICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgCi0gICBjbGFzcyB3aGVuIHRoZSAqbmV3bGluZSogYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgorICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kCisgICAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZQorICAgdXNpbmcgdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5IDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAuICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycworICAgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yCisgICA6ZGF0YTpgb3MubGluZXNlcGAuICBGb3IgKnN0ZG91dCogYW5kICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZQorICAgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcyB3aGVuIHRoZSAqbmV3bGluZSoKKyAgIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTI1NCw2ICszMTYsMTIgQEAKICAgIDptb2Q6YGZubWF0Y2hgLCA6ZnVuYzpgb3Mud2Fsa2AsIDpmdW5jOmBvcy5wYXRoLmV4cGFuZHZhcnNgLAogICAgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdXNlcmAsIGFuZCA6bW9kOmBzaHV0aWxgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBjbGFzcyB1c2VzIHRoZSBlbmNvZGluZworICAgICAgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gCisgICAgICBpbnN0ZWFkIG9mIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKClgYC4gIFNlZSB0aGUKKyAgICAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjaGFuZ2UuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBFeGVjdXRpbmcgc2hlbGwgY29tbWFuZHMgdGhhdCBpbmNvcnBvcmF0ZSB1bnNhbml0aXplZCBpbnB1dCBmcm9tIGFuCkBAIC0zNjksMTMgKzQzNywxNCBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEKLSAgIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YKLSAgIGBgTm9uZWBgLCBubyByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZQotICAgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLAotICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUKLSAgIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yIHN0ZG91dC4KKyAgIGFyZSA6ZGF0YTpgUElQRWAsIDpkYXRhOmBERVZOVUxMYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCisgICBpbnRlZ2VyKSwgYW4gZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgCisgICBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYAorICAgaW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiBXaXRoIHRoZQorICAgZGVmYXVsdCBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZQorICAgaGFuZGxlcyB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBhcHBsaWNhdGlvbnMKKyAgIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciBzdGRvdXQuCiAKICAgIElmICpwcmVleGVjX2ZuKiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkIGluIHRoZQogICAgY2hpbGQgcHJvY2VzcyBqdXN0IGJlZm9yZSB0aGUgY2hpbGQgaXMgZXhlY3V0ZWQuCkBAIC00ODUsNiArNTU0LDE1IEBACiA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGlmIHRoZSBjYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuCiBjb2RlLgogCitBbGwgb2YgdGhlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IGFjY2VwdCBhICp0aW1lb3V0KiBwYXJhbWV0ZXIsIHN1Y2ggYXMKKzpmdW5jOmBjYWxsYCBhbmQgOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCB3aWxsIHJhaXNlIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBpZgordGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKK0V4Y2VwdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBhbGwgaW5oZXJpdCBmcm9tIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAgYmFzZSBjbGFzcyB3YXMgYWRkZWQuCisKIAogU2VjdXJpdHkKIF5eXl5eXl5eCkBAIC01MDgsMTEgKzU4NiwxNSBAQAogICAgYXR0cmlidXRlLgogCiAKLS4uIG1ldGhvZDo6IFBvcGVuLndhaXQoKQorLi4gbWV0aG9kOjogUG9wZW4ud2FpdCh0aW1lb3V0PU5vbmUpCiAKICAgIFdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgU2V0IGFuZCByZXR1cm4gOmF0dHI6YHJldHVybmNvZGVgCiAgICBhdHRyaWJ1dGUuCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgcmFpc2UgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbi4gIEl0IGlzIHNhZmUgdG8gY2F0Y2ggdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeSB0aGUgd2FpdC4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIFRoaXMgd2lsbCBkZWFkbG9jayB3aGVuIHVzaW5nIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKQEAgLTUyMCwxMyArNjAyLDE3IEBACiAgICAgICBhIHBpcGUgc3VjaCB0aGF0IGl0IGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgT1MgcGlwZSBidWZmZXIgdG8KICAgICAgIGFjY2VwdCBtb3JlIGRhdGEuICBVc2UgOm1ldGg6YGNvbW11bmljYXRlYCB0byBhdm9pZCB0aGF0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAotLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSkKKworLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKQogCiAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLAotICAgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8gdGVybWluYXRlLiBUaGUgb3B0aW9uYWwKLSAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbAorICAgKmlucHV0KiBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvcgorICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgVGhlIHR5cGUgb2YgKmlucHV0KgorICAgbXVzdCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBhIHN0cmluZy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSlgYC4KIApAQCAtNTM1LDExICs2MjEsMjkgQEAKICAgIGBgTm9uZWBgIGluIHRoZSByZXN1bHQgdHVwbGUsIHlvdSBuZWVkIHRvIGdpdmUgYGBzdGRvdXQ9UElQRWBgIGFuZC9vcgogICAgYGBzdGRlcnI9UElQRWBgIHRvby4KIAorICAgSWYgdGhlIHByb2Nlc3MgZG9lcyBub3QgdGVybWluYXRlIGFmdGVyICp0aW1lb3V0KiBzZWNvbmRzLCBhCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiAgQ2F0Y2hpbmcgdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeWluZyBjb21tdW5pY2F0aW9uIHdpbGwgbm90IGxvc2UgYW55IG91dHB1dC4KKworICAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgbm90IGtpbGxlZCBpZiB0aGUgdGltZW91dCBleHBpcmVzLCBzbyBpbiBvcmRlciB0bworICAgY2xlYW51cCBwcm9wZXJseSBhIHdlbGwtYmVoYXZlZCBhcHBsaWNhdGlvbiBzaG91bGQga2lsbCB0aGUgY2hpbGQgcHJvY2VzcyBhbmQKKyAgIGZpbmlzaCBjb21tdW5pY2F0aW9uOjoKKworICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oLi4uKQorICAgICAgdHJ5OgorICAgICAgICAgIG91dHMsIGVycnMgPSBwcm9jLmNvbW11bmljYXRlKHRpbWVvdXQ9MTUpCisgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgcHJvYy5raWxsKCkKKyAgICAgICAgICBvdXRzLCBlcnJzID0gcHJvYy5jb21tdW5pY2F0ZSgpCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgZGF0YSByZWFkIGlzIGJ1ZmZlcmVkIGluIG1lbW9yeSwgc28gZG8gbm90IHVzZSB0aGlzIG1ldGhvZCBpZiB0aGUgZGF0YQogICAgICAgc2l6ZSBpcyBsYXJnZSBvciB1bmxpbWl0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFBvcGVuLnNlbmRfc2lnbmFsKHNpZ25hbCkKIApAQCAtOTgxLDMgKzEwODUsOSBAQAogICAgYmFja3NsYXNoLiAgSWYgdGhlIG51bWJlciBvZiBiYWNrc2xhc2hlcyBpcyBvZGQsIHRoZSBsYXN0CiAgICBiYWNrc2xhc2ggZXNjYXBlcyB0aGUgbmV4dCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgYXMKICAgIGRlc2NyaWJlZCBpbiBydWxlIDMuCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDptb2Q6YHNobGV4YAorICAgICAgTW9kdWxlIHdoaWNoIHByb3ZpZGVzIGZ1bmN0aW9uIHRvIHBhcnNlIGFuZCBlc2NhcGUgY29tbWFuZCBsaW5lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IDBlNGFkZWMuLmNkNmQ0YmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjksNiArMjksMzMgQEAKICAgIGNvbW1hbmQgbGluZSwgc2VlIHRoZSA6bW9kOmBmaWxlaW5wdXRgIG1vZHVsZS4KIAogCisuLiBkYXRhOjogYmFzZV9leGVjX3ByZWZpeAorCisgICBTZXQgZHVyaW5nIFB5dGhvbiBzdGFydHVwLCBiZWZvcmUgYGBzaXRlLnB5YGAgaXMgcnVuLCB0byB0aGUgc2FtZSB2YWx1ZSBhcworICAgOmRhdGE6YGV4ZWNfcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYQorICAgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudCA8dmVudi1kZWY+YCwgdGhlIHZhbHVlcyB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmCisgICBgYHNpdGUucHlgYCBmaW5kcyB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBpbiB1c2UsIHRoZSB2YWx1ZXMgb2YKKyAgIDpkYXRhOmBwcmVmaXhgIGFuZCA6ZGF0YTpgZXhlY19wcmVmaXhgIHdpbGwgYmUgY2hhbmdlZCB0byBwb2ludCB0byB0aGUKKyAgIHZpcnR1YWwgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmRhdGE6YGJhc2VfcHJlZml4YCBhbmQKKyAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YCB3aWxsIHJlbWFpbiBwb2ludGluZyB0byB0aGUgYmFzZSBQeXRob24KKyAgIGluc3RhbGxhdGlvbiAodGhlIG9uZSB3aGljaCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCBmcm9tKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IGJhc2VfcHJlZml4CisKKyAgIFNldCBkdXJpbmcgUHl0aG9uIHN0YXJ0dXAsIGJlZm9yZSBgYHNpdGUucHlgYCBpcyBydW4sIHRvIHRoZSBzYW1lIHZhbHVlIGFzCisgICA6ZGF0YTpgcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gLCB0aGUgdmFsdWVzCisgICB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmIGBgc2l0ZS5weWBgIGZpbmRzIHRoYXQgYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGluCisgICB1c2UsIHRoZSB2YWx1ZXMgb2YgOmRhdGE6YHByZWZpeGAgYW5kIDpkYXRhOmBleGVjX3ByZWZpeGAgd2lsbCBiZSBjaGFuZ2VkIHRvCisgICBwb2ludCB0byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgd2hlcmVhcyA6ZGF0YTpgYmFzZV9wcmVmaXhgIGFuZAorICAgOmRhdGE6YGJhc2VfZXhlY19wcmVmaXhgIHdpbGwgcmVtYWluIHBvaW50aW5nIHRvIHRoZSBiYXNlIFB5dGhvbgorICAgaW5zdGFsbGF0aW9uICh0aGUgb25lIHdoaWNoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdhcyBjcmVhdGVkIGZyb20pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogYnl0ZW9yZGVyCiAKICAgIEFuIGluZGljYXRvciBvZiB0aGUgbmF0aXZlIGJ5dGUgb3JkZXIuICBUaGlzIHdpbGwgaGF2ZSB0aGUgdmFsdWUgYGAnYmlnJ2BgIG9uCkBAIC04MCw2ICsxMDcsMjIgQEAKICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgZm9yIGludGVybmFsIGFuZCBzcGVjaWFsaXplZCBwdXJwb3NlcyBvbmx5LgogCiAKKy4uIGZ1bmN0aW9uOjogX2RlYnVnbWFsbG9jc3RhdHMoKQorCisgICBQcmludCBsb3ctbGV2ZWwgaW5mb3JtYXRpb24gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBDUHl0aG9uJ3MgbWVtb3J5CisgICBhbGxvY2F0b3IuCisKKyAgIElmIFB5dGhvbiBpcyBjb25maWd1cmVkIC0td2l0aC1weWRlYnVnLCBpdCBhbHNvIHBlcmZvcm1zIHNvbWUgZXhwZW5zaXZlCisgICBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbi4gIFRoZSBleGFjdCBvdXRwdXQgZm9ybWF0IGlzIG5vdAorICAgICAgZGVmaW5lZCBoZXJlLCBhbmQgbWF5IGNoYW5nZS4KKworCiAuLiBkYXRhOjogZGxsaGFuZGxlCiAKICAgIEludGVnZXIgc3BlY2lmeWluZyB0aGUgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMLiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCkBAIC0xOTksNiArMjQyLDExIEBACiAgICBpbnN0YWxsZWQgaW4gOmZpbGU6YHtleGVjX3ByZWZpeH0vbGliL3B5dGhvbntYLll9L2xpYi1keW5sb2FkYCwgd2hlcmUgKlguWSoKICAgIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgICBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLCB2aWEKKyAgICAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YC4KKwogCiAuLiBkYXRhOjogZXhlY3V0YWJsZQogCkBAIC0yMzUsMTQgKzI4MywxMyBAQAogCiAuLiBkYXRhOjogZmxhZ3MKIAotICAgVGhlIHN0cnVjdCBzZXF1ZW5jZSAqZmxhZ3MqIGV4cG9zZXMgdGhlIHN0YXR1cyBvZiBjb21tYW5kIGxpbmUgZmxhZ3MuIFRoZQotICAgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgorICAgVGhlIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgICpmbGFncyogZXhwb3NlcyB0aGUgc3RhdHVzIG9mIGNvbW1hbmQgbGluZQorICAgZmxhZ3MuIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCiAKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBhdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICBmbGFnCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgOmNvbnN0OmBkZWJ1Z2AgICAgICAgICAgICAgICAgOm9wdGlvbjpgLWRgCi0gICA6Y29uc3Q6YGRpdmlzaW9uX3dhcm5pbmdgICAgICA6b3B0aW9uOmAtUWAKICAgIDpjb25zdDpgaW5zcGVjdGAgICAgICAgICAgICAgIDpvcHRpb246YC1pYAogICAgOmNvbnN0OmBpbnRlcmFjdGl2ZWAgICAgICAgICAgOm9wdGlvbjpgLWlgCiAgICA6Y29uc3Q6YG9wdGltaXplYCAgICAgICAgICAgICA6b3B0aW9uOmAtT2Agb3IgOm9wdGlvbjpgLU9PYApAQCAtMjYyLDE1ICszMDksMTggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAgICAgICBUaGUgYGBoYXNoX3JhbmRvbWl6YXRpb25gYCBhdHRyaWJ1dGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIG9ic29sZXRlIGBgZGl2aXNpb25fd2FybmluZ2BgIGF0dHJpYnV0ZS4KKwogCiAuLiBkYXRhOjogZmxvYXRfaW5mbwogCi0gICBBIHN0cnVjdHNlcSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdCBjb250YWlucyBsb3cgbGV2ZWwKLSAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsIHJlcHJlc2VudGF0aW9uLiAgVGhlIHZhbHVlcwotICAgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludCBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgc3RhbmRhcmQKLSAgIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgc2VlIHNlY3Rpb24KLSAgIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQgW0M5OV1fLCAnQ2hhcmFjdGVyaXN0aWNzIG9mCi0gICBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdAorICAgY29udGFpbnMgbG93IGxldmVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsCisgICByZXByZXNlbnRhdGlvbi4gIFRoZSB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludAorICAgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJworICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHNlZSBzZWN0aW9uIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQKKyAgIFtDOTldXywgJ0NoYXJhY3RlcmlzdGljcyBvZiBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGF0dHJpYnV0ZSAgICAgICAgICAgfCBmbG9hdC5oIG1hY3JvICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC00MDksNiArNDU5LDkgQEAKICAgIGRvZXMgbm90IGhhdmUgdG8gaG9sZCB0cnVlIGZvciB0aGlyZC1wYXJ0eSBleHRlbnNpb25zIGFzIGl0IGlzIGltcGxlbWVudGF0aW9uCiAgICBzcGVjaWZpYy4KIAorICAgT25seSB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIGRpcmVjdGx5IGF0dHJpYnV0ZWQgdG8gdGhlIG9iamVjdCBpcworICAgYWNjb3VudGVkIGZvciwgbm90IHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2Ygb2JqZWN0cyBpdCByZWZlcnMgdG8uCisKICAgIElmIGdpdmVuLCAqZGVmYXVsdCogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgb2JqZWN0IGRvZXMgbm90IHByb3ZpZGUgbWVhbnMgdG8KICAgIHJldHJpZXZlIHRoZSBzaXplLiAgT3RoZXJ3aXNlIGEgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIApAQCAtNTIwLDggKzU3Myw5IEBACiAKIC4uIGRhdGE6OiBoYXNoX2luZm8KIAotICAgQSBzdHJ1Y3RzZXEgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIEZvcgotICAgbW9yZSBkZXRhaWxzIGFib3V0IGhhc2hpbmcgb2YgbnVtZXJpYyB0eXBlcywgc2VlIDpyZWY6YG51bWVyaWMtaGFzaGAuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2gKKyAgIGltcGxlbWVudGF0aW9uLiAgRm9yIG1vcmUgZGV0YWlscyBhYm91dCBoYXNoaW5nIG9mIG51bWVyaWMgdHlwZXMsIHNlZQorICAgOnJlZjpgbnVtZXJpYy1oYXNoYC4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXR0cmlidXRlICAgICAgICAgICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC01NTYsOCArNjEwLDggQEAKIAogICAgVGhpcyBpcyBjYWxsZWQgYGBoZXh2ZXJzaW9uYGAgc2luY2UgaXQgb25seSByZWFsbHkgbG9va3MgbWVhbmluZ2Z1bCB3aGVuIHZpZXdlZAogICAgYXMgdGhlIHJlc3VsdCBvZiBwYXNzaW5nIGl0IHRvIHRoZSBidWlsdC1pbiA6ZnVuYzpgaGV4YCBmdW5jdGlvbi4gIFRoZQotICAgc3RydWN0IHNlcXVlbmNlICA6ZGF0YTpgc3lzLnZlcnNpb25faW5mb2AgbWF5IGJlIHVzZWQgZm9yIGEgbW9yZSBodW1hbi1mcmllbmRseQotICAgZW5jb2Rpbmcgb2YgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisgICA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gIG1heSBiZSB1c2VkIGZvciBhIG1vcmUKKyAgIGh1bWFuLWZyaWVuZGx5IGVuY29kaW5nIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uLgogCiAgICBUaGUgYGBoZXh2ZXJzaW9uYGAgaXMgYSAzMi1iaXQgbnVtYmVyIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAKQEAgLTU4MywxMCArNjM3LDUxIEBACiAKICAgIFRodXMgYGAyLjEuMGEzYGAgaXMgaGV4dmVyc2lvbiBgYDB4MDIwMTAwYTNgYC4KIAorCisuLiBkYXRhOjogaW1wbGVtZW50YXRpb24KKworICAgQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgY3VycmVudGx5IHJ1bm5pbmcgUHl0aG9uIGludGVycHJldGVyLiAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZQorICAgcmVxdWlyZWQgdG8gZXhpc3QgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICpuYW1lKiBpcyB0aGUgaW1wbGVtZW50YXRpb24ncyBpZGVudGlmaWVyLCBlLmcuIGBgJ2NweXRob24nYGAuICBUaGUgYWN0dWFsCisgICBzdHJpbmcgaXMgZGVmaW5lZCBieSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBidXQgaXQgaXMgZ3VhcmFudGVlZCB0byBiZQorICAgbG93ZXIgY2FzZS4KKworICAgKnZlcnNpb24qIGlzIGEgbmFtZWQgdHVwbGUsIGluIHRoZSBzYW1lIGZvcm1hdCBhcworICAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gLiAgSXQgcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUgUHl0aG9uCisgICAqaW1wbGVtZW50YXRpb24qLiAgVGhpcyBoYXMgYSBkaXN0aW5jdCBtZWFuaW5nIGZyb20gdGhlIHNwZWNpZmljCisgICB2ZXJzaW9uIG9mIHRoZSBQeXRob24gKmxhbmd1YWdlKiB0byB3aGljaCB0aGUgY3VycmVudGx5IHJ1bm5pbmcKKyAgIGludGVycHJldGVyIGNvbmZvcm1zLCB3aGljaCBgYHN5cy52ZXJzaW9uX2luZm9gYCByZXByZXNlbnRzLiAgRm9yCisgICBleGFtcGxlLCBmb3IgUHlQeSAxLjggYGBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbmBgIG1pZ2h0IGJlCisgICBgYHN5cy52ZXJzaW9uX2luZm8oMSwgOCwgMCwgJ2ZpbmFsJywgMClgYCwgd2hlcmVhcyBgYHN5cy52ZXJzaW9uX2luZm9gYAorICAgd291bGQgYmUgYGBzeXMudmVyc2lvbl9pbmZvKDIsIDcsIDIsICdmaW5hbCcsIDApYGAuICBGb3IgQ1B5dGhvbiB0aGV5CisgICBhcmUgdGhlIHNhbWUgdmFsdWUsIHNpbmNlIGl0IGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisKKyAgICpoZXh2ZXJzaW9uKiBpcyB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbiBpbiBoZXhhZGVjaW1hbCBmb3JtYXQsIGxpa2UKKyAgIDpkYXRhOmBzeXMuaGV4dmVyc2lvbmAuCisKKyAgICpjYWNoZV90YWcqIGlzIHRoZSB0YWcgdXNlZCBieSB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpbiB0aGUgZmlsZW5hbWVzIG9mCisgICBjYWNoZWQgbW9kdWxlcy4gIEJ5IGNvbnZlbnRpb24sIGl0IHdvdWxkIGJlIGEgY29tcG9zaXRlIG9mIHRoZQorICAgaW1wbGVtZW50YXRpb24ncyBuYW1lIGFuZCB2ZXJzaW9uLCBsaWtlIGBgJ2NweXRob24tMzMnYGAuICBIb3dldmVyLCBhCisgICBQeXRob24gaW1wbGVtZW50YXRpb24gbWF5IHVzZSBzb21lIG90aGVyIHZhbHVlIGlmIGFwcHJvcHJpYXRlLiAgSWYKKyAgIGBgY2FjaGVfdGFnYGAgaXMgc2V0IHRvIGBgTm9uZWBgLCBpdCBpbmRpY2F0ZXMgdGhhdCBtb2R1bGUgY2FjaGluZyBzaG91bGQKKyAgIGJlIGRpc2FibGVkLgorCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8KKyAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uICBUaGVzZSBub24tc3RhbmRhcmQgYXR0cmlidXRlcyBtdXN0IHN0YXJ0IHdpdGgKKyAgIGFuIHVuZGVyc2NvcmUsIGFuZCBhcmUgbm90IGRlc2NyaWJlZCBoZXJlLiAgUmVnYXJkbGVzcyBvZiBpdHMgY29udGVudHMsCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCB3aWxsIG5vdCBjaGFuZ2UgZHVyaW5nIGEgcnVuIG9mIHRoZSBpbnRlcnByZXRlciwKKyAgIG5vciBiZXR3ZWVuIGltcGxlbWVudGF0aW9uIHZlcnNpb25zLiAgKEl0IG1heSBjaGFuZ2UgYmV0d2VlbiBQeXRob24KKyAgIGxhbmd1YWdlIHZlcnNpb25zLCBob3dldmVyLikgIFNlZSBgUEVQIDQyMWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGRhdGE6OiBpbnRfaW5mbwogCi0gICBBIHN0cnVjdCBzZXF1ZW5jZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbidzCi0gICBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2Vycy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgUHl0aG9uJ3MgaW50ZXJuYWwKKyAgIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC02NDEsOSArNzM2LDEzIEBACiAKIC4uIGRhdGE6OiBtYXh1bmljb2RlCiAKLSAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBjb2RlIHBvaW50IGZvciBhIFVuaWNvZGUgY2hhcmFjdGVyLiAgVGhlCi0gICB2YWx1ZSBvZiB0aGlzIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgVW5pY29kZQotICAgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGFzIFVDUy0yIG9yIFVDUy00LgorICAgQW4gaW50ZWdlciBnaXZpbmcgdGhlIHZhbHVlIG9mIHRoZSBsYXJnZXN0IFVuaWNvZGUgY29kZSBwb2ludCwKKyAgIGkuZS4gYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYCBpbiBoZXhhZGVjaW1hbCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBCZWZvcmUgOnBlcDpgMzkzYCwgYGBzeXMubWF4dW5pY29kZWBgIHVzZWQgdG8gYmUgZWl0aGVyIGBgMHhGRkZGYGAKKyAgICAgIG9yIGBgMHgxMEZGRkZgYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNwZWNpZmllZAorICAgICAgd2hldGhlciBVbmljb2RlIGNoYXJhY3RlcnMgd2VyZSBzdG9yZWQgYXMgVUNTLTIgb3IgVUNTLTQuCiAKIAogLi4gZGF0YTo6IG1ldGFfcGF0aApAQCAtNzE4LDM2ICs4MTcsMzUgQEAKICAgIFRoaXMgc3RyaW5nIGNvbnRhaW5zIGEgcGxhdGZvcm0gaWRlbnRpZmllciB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGVuZAogICAgcGxhdGZvcm0tc3BlY2lmaWMgY29tcG9uZW50cyB0byA6ZGF0YTpgc3lzLnBhdGhgLCBmb3IgaW5zdGFuY2UuCiAKLSAgIEZvciBtb3N0IFVuaXggc3lzdGVtcywgdGhpcyBpcyB0aGUgbG93ZXJjYXNlZCBPUyBuYW1lIGFzIHJldHVybmVkIGJ5IGBgdW5hbWUKLSAgIC1zYGAgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdmVyc2lvbiBhcyByZXR1cm5lZCBieSBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsCi0gICBlLmcuIGBgJ3N1bm9zNSdgYCwgKmF0IHRoZSB0aW1lIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8KLSAgIHRlc3QgZm9yIGEgc3BlY2lmaWMgc3lzdGVtIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlCi0gICBmb2xsb3dpbmcgaWRpb206OgorICAgRm9yIFVuaXggc3lzdGVtcywgZXhjZXB0IG9uIExpbnV4LCB0aGlzIGlzIHRoZSBsb3dlcmNhc2VkIE9TIG5hbWUgYXMKKyAgIHJldHVybmVkIGJ5IGBgdW5hbWUgLXNgYCB3aXRoIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB2ZXJzaW9uIGFzIHJldHVybmVkIGJ5CisgICBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsIGUuZy4gYGAnc3Vub3M1J2BgIG9yIGBgJ2ZyZWVic2Q4J2BgLCAqYXQgdGhlIHRpbWUKKyAgIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0KKyAgIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGZvbGxvd2luZyBpZGlvbTo6CiAKICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJyk6CiAgICAgICAgICAgIyBGcmVlQlNELXNwZWNpZmljIGNvZGUgaGVyZS4uLgogICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAjIExpbnV4LXNwZWNpZmljIGNvZGUgaGVyZS4uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMi4yCi0gICAgICBTaW5jZSBsb3RzIG9mIGNvZGUgY2hlY2sgZm9yIGBgc3lzLnBsYXRmb3JtID09ICdsaW51eDInYGAsIGFuZCB0aGVyZSBpcwotICAgICAgbm8gZXNzZW50aWFsIGNoYW5nZSBiZXR3ZWVuIExpbnV4IDIueCBhbmQgMy54LCBgYHN5cy5wbGF0Zm9ybWBgIGlzIGFsd2F5cwotICAgICAgc2V0IHRvIGBgJ2xpbnV4MidgYCwgZXZlbiBvbiBMaW51eCAzLnguICBJbiBQeXRob24gMy4zIGFuZCBsYXRlciwgdGhlCi0gICAgICB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gYGAnbGludXgnYGAsIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cwotICAgICAgdXNlIHRoZSBgYHN0YXJ0c3dpdGhgYCBpZGlvbSBwcmVzZW50ZWQgYWJvdmUuCi0KICAgIEZvciBvdGhlciBzeXN0ZW1zLCB0aGUgdmFsdWVzIGFyZToKIAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIFN5c3RlbSAgICAgICAgICAgICAgICAgOmRhdGE6YHBsYXRmb3JtYCB2YWx1ZQotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIExpbnV4ICgyLnggKmFuZCogMy54KSAgYGAnbGludXgyJ2BgCi0gICBXaW5kb3dzICAgICAgICAgICAgICAgIGBgJ3dpbjMyJ2BgCi0gICBXaW5kb3dzL0N5Z3dpbiAgICAgICAgIGBgJ2N5Z3dpbidgYAotICAgTWFjIE9TIFggICAgICAgICAgICAgICBgYCdkYXJ3aW4nYGAKLSAgIE9TLzIgICAgICAgICAgICAgICAgICAgYGAnb3MyJ2BgCi0gICBPUy8yIEVNWCAgICAgICAgICAgICAgIGBgJ29zMmVteCdgYAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBTeXN0ZW0gICAgICAgICAgIDpkYXRhOmBwbGF0Zm9ybWAgdmFsdWUKKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBMaW51eCAgICAgICAgICAgIGBgJ2xpbnV4J2BgCisgICBXaW5kb3dzICAgICAgICAgIGBgJ3dpbjMyJ2BgCisgICBXaW5kb3dzL0N5Z3dpbiAgIGBgJ2N5Z3dpbidgYAorICAgTWFjIE9TIFggICAgICAgICBgYCdkYXJ3aW4nYGAKKyAgIE9TLzIgICAgICAgICAgICAgYGAnb3MyJ2BgCisgICBPUy8yIEVNWCAgICAgICAgIGBgJ29zMmVteCdgYAorICAgPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uIExpbnV4LCA6YXR0cjpgc3lzLnBsYXRmb3JtYCBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24gYW55bW9yZS4KKyAgICAgIEl0IGlzIGFsd2F5cyBgYCdsaW51eCdgYCwgaW5zdGVhZCBvZiBgYCdsaW51eDInYGAgb3IgYGAnbGludXgzJ2BgLiAgU2luY2UKKyAgICAgIG9sZGVyIFB5dGhvbiB2ZXJzaW9ucyBpbmNsdWRlIHRoZSB2ZXJzaW9uIG51bWJlciwgaXQgaXMgcmVjb21tZW5kZWQgdG8KKyAgICAgIGFsd2F5cyB1c2UgdGhlIGBgc3RhcnRzd2l0aGBgIGlkaW9tIHByZXNlbnRlZCBhYm92ZS4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTc2NCwxMSArODYyLDE2IEBACiAgICBpbmRlcGVuZGVudCBQeXRob24gZmlsZXMgYXJlIGluc3RhbGxlZDsgYnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgc3RyaW5nCiAgICBgYCcvdXNyL2xvY2FsJ2BgLiAgVGhpcyBjYW4gYmUgc2V0IGF0IGJ1aWxkIHRpbWUgd2l0aCB0aGUgYGAtLXByZWZpeGBgCiAgICBhcmd1bWVudCB0byB0aGUgOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0LiAgVGhlIG1haW4gY29sbGVjdGlvbiBvZiBQeXRob24KLSAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YGAKKyAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YAogICAgd2hpbGUgdGhlIHBsYXRmb3JtIGluZGVwZW5kZW50IGhlYWRlciBmaWxlcyAoYWxsIGV4Y2VwdCA6ZmlsZTpgcHljb25maWcuaGApIGFyZQogICAgc3RvcmVkIGluIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbntYLll9YCwgd2hlcmUgKlguWSogaXMgdGhlIHZlcnNpb24KICAgIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwKKyAgICAgIGVudmlyb25tZW50LiBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUKKyAgICAgIGF2YWlsYWJsZSwgdmlhIDpkYXRhOmBiYXNlX3ByZWZpeGAuCisKIAogLi4gZGF0YTo6IHBzMQogICAgICAgICAgIHBzMgpAQCAtODA2LDExICs5MDksMTEgQEAKICAgIHRoZSBpbnRlcnByZXRlciBsb2FkcyBleHRlbnNpb24gbW9kdWxlcy4gIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyB3aWxsIGVuYWJsZSBhCiAgICBsYXp5IHJlc29sdmluZyBvZiBzeW1ib2xzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlLCBpZiBjYWxsZWQgYXMKICAgIGBgc3lzLnNldGRsb3BlbmZsYWdzKDApYGAuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhcwotICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3MoY3R5cGVzLlJUTERfR0xPQkFMKWBgLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZQotICAgZmxhZyBtb2R1bGVzIGNhbiBiZSBlaXRoZXIgZm91bmQgaW4gdGhlIDptb2Q6YGN0eXBlc2AgbW9kdWxlLCBvciBpbiB0aGUgOm1vZDpgRExGQ05gCi0gICBtb2R1bGUuIElmIDptb2Q6YERMRkNOYCBpcyBub3QgYXZhaWxhYmxlLCBpdCBjYW4gYmUgZ2VuZXJhdGVkIGZyb20KLSAgIDpmaWxlOmAvdXNyL2luY2x1ZGUvZGxmY24uaGAgdXNpbmcgdGhlIDpwcm9ncmFtOmBoMnB5YCBzY3JpcHQuIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICBgYHN5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyBtb2R1bGVzCisgICBjYW4gYmUgZm91bmQgaW4gdGhlIDptb2Q6YG9zYCBtb2R1bGUgKGBgUlRMRF94eHhgYCBjb25zdGFudHMsIGUuZy4KKyAgIDpkYXRhOmBvcy5SVExEX0xBWllgKS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAuLiBmdW5jdGlvbjo6IHNldHByb2ZpbGUocHJvZmlsZWZ1bmMpCiAKQEAgLTEwMDMsMjIgKzExMDYsMzMgQEAKICAgICAgICB0byBhIGNvbnNvbGUgYW5kIFB5dGhvbiBhcHBzIHN0YXJ0ZWQgd2l0aCA6cHJvZ3JhbTpgcHl0aG9ud2AuCiAKIAotLi4gZGF0YTo6IHN1YnZlcnNpb24KKy4uIGRhdGE6OiB0aHJlYWRfaW5mbwogCi0gICBBIHRyaXBsZSAocmVwbywgYnJhbmNoLCB2ZXJzaW9uKSByZXByZXNlbnRpbmcgdGhlIFN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlCi0gICBQeXRob24gaW50ZXJwcmV0ZXIuICpyZXBvKiBpcyB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeSwgYGAnQ1B5dGhvbidgYC4KLSAgICpicmFuY2gqIGlzIGEgc3RyaW5nIG9mIG9uZSBvZiB0aGUgZm9ybXMgYGAndHJ1bmsnYGAsIGBgJ2JyYW5jaGVzL25hbWUnYGAgb3IKLSAgIGBgJ3RhZ3MvbmFtZSdgYC4gKnZlcnNpb24qIGlzIHRoZSBvdXRwdXQgb2YgYGBzdm52ZXJzaW9uYGAsIGlmIHRoZSBpbnRlcnByZXRlcgotICAgd2FzIGJ1aWx0IGZyb20gYSBTdWJ2ZXJzaW9uIGNoZWNrb3V0OyBpdCBjb250YWlucyB0aGUgcmV2aXNpb24gbnVtYmVyIChyYW5nZSkKLSAgIGFuZCBwb3NzaWJseSBhIHRyYWlsaW5nICdNJyBpZiB0aGVyZSB3ZXJlIGxvY2FsIG1vZGlmaWNhdGlvbnMuIElmIHRoZSB0cmVlIHdhcwotICAgZXhwb3J0ZWQgKG9yIHN2bnZlcnNpb24gd2FzIG5vdCBhdmFpbGFibGUpLCBpdCBpcyB0aGUgcmV2aXNpb24gb2YKLSAgIGBgSW5jbHVkZS9wYXRjaGxldmVsLmhgYCBpZiB0aGUgYnJhbmNoIGlzIGEgdGFnLiBPdGhlcndpc2UsIGl0IGlzIGBgTm9uZWBgLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQKKyAgIGltcGxlbWVudGF0aW9uLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy4yLjEKLSAgICAgIFB5dGhvbiBpcyBub3cgYGRldmVsb3BlZCA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8+YF8gdXNpbmcKLSAgICAgIE1lcmN1cmlhbC4gIEluIHJlY2VudCBQeXRob24gMy4yIGJ1Z2ZpeCByZWxlYXNlcywgOmRhdGE6YHN1YnZlcnNpb25gCi0gICAgICB0aGVyZWZvcmUgY29udGFpbnMgcGxhY2Vob2xkZXIgaW5mb3JtYXRpb24uICBJdCBpcyByZW1vdmVkIGluIFB5dGhvbgotICAgICAgMy4zLgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IEF0dHJpYnV0ZSAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YG5hbWVgICAgIHwgTmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ250J2BgOiBXaW5kb3dzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnb3MyJ2BgOiBPUy8yIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdwdGhyZWFkJ2BgOiBQT1NJWCB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NvbGFyaXMnYGA6IFNvbGFyaXMgdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgbG9ja2AgICAgfCBOYW1lIG9mIHRoZSBsb2NrIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnc2VtYXBob3JlJ2BgOiBhIGxvY2sgdXNlcyBhIHNlbWFwaG9yZSAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdtdXRleCtjb25kJ2BgOiBhIGxvY2sgdXNlcyBhIG11dGV4ICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgIGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGBOb25lYGAgaWYgdGhpcyBpbmZvcm1hdGlvbiBpcyB1bmtub3duICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmB2ZXJzaW9uYCB8IE5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5LiBJdCBpcyBhIHN0cmluZywgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgdGhlc2UgaW5mb3JtYXRpb25zIGFyZSB1bmtub3duLiAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IHRyYWNlYmFja2xpbWl0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0IGIvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdAppbmRleCA5NzRlY2Y5Li42ZTkwZGMwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2xvZy5yc3QKQEAgLTc5LDEyICs3OSwxNCBAQAogRmFjaWxpdGllczoKICAgIDpjb25zdDpgTE9HX0tFUk5gLCA6Y29uc3Q6YExPR19VU0VSYCwgOmNvbnN0OmBMT0dfTUFJTGAsIDpjb25zdDpgTE9HX0RBRU1PTmAsCiAgICA6Y29uc3Q6YExPR19BVVRIYCwgOmNvbnN0OmBMT0dfTFBSYCwgOmNvbnN0OmBMT0dfTkVXU2AsIDpjb25zdDpgTE9HX1VVQ1BgLAotICAgOmNvbnN0OmBMT0dfQ1JPTmAsIDpjb25zdDpgTE9HX1NZU0xPR2AgYW5kIDpjb25zdDpgTE9HX0xPQ0FMMGAgdG8KLSAgIDpjb25zdDpgTE9HX0xPQ0FMN2AuCisgICA6Y29uc3Q6YExPR19DUk9OYCwgOmNvbnN0OmBMT0dfU1lTTE9HYCwgOmNvbnN0OmBMT0dfTE9DQUwwYCB0bworICAgOmNvbnN0OmBMT0dfTE9DQUw3YCwgYW5kLCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLAorICAgOmNvbnN0OmBMT0dfQVVUSFBSSVZgLgogCiBMb2cgb3B0aW9uczoKLSAgIDpjb25zdDpgTE9HX1BJRGAsIDpjb25zdDpgTE9HX0NPTlNgLCA6Y29uc3Q6YExPR19OREVMQVlgLCA6Y29uc3Q6YExPR19OT1dBSVRgCi0gICBhbmQgOmNvbnN0OmBMT0dfUEVSUk9SYCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLgorICAgOmNvbnN0OmBMT0dfUElEYCwgOmNvbnN0OmBMT0dfQ09OU2AsIDpjb25zdDpgTE9HX05ERUxBWWAsIGFuZCwgaWYgZGVmaW5lZAorICAgaW4gYGA8c3lzbG9nLmg+YGAsIDpjb25zdDpgTE9HX09ERUxBWWAsIDpjb25zdDpgTE9HX05PV0FJVGAsIGFuZAorICAgOmNvbnN0OmBMT0dfUEVSUk9SYC4KIAogCiBFeGFtcGxlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAppbmRleCA0NmU0OTAwLi44NmRkMzNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdApAQCAtMTMsMTMgKzEzLDEzIEBACiAtLS0tLS0tLS0tLS0tLQogCiBUaGUgOm1vZDpgdGFyZmlsZWAgbW9kdWxlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlYWQgYW5kIHdyaXRlIHRhcgotYXJjaGl2ZXMsIGluY2x1ZGluZyB0aG9zZSB1c2luZyBnemlwIG9yIGJ6MiBjb21wcmVzc2lvbi4KK2FyY2hpdmVzLCBpbmNsdWRpbmcgdGhvc2UgdXNpbmcgZ3ppcCwgYnoyIGFuZCBsem1hIGNvbXByZXNzaW9uLgogVXNlIHRoZSA6bW9kOmB6aXBmaWxlYCBtb2R1bGUgdG8gcmVhZCBvciB3cml0ZSA6ZmlsZTpgLnppcGAgZmlsZXMsIG9yIHRoZQogaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBpbiA6cmVmOmBzaHV0aWwgPGFyY2hpdmluZy1vcGVyYXRpb25zPmAuCiAKIFNvbWUgZmFjdHMgYW5kIGZpZ3VyZXM6CiAKLSogcmVhZHMgYW5kIHdyaXRlcyA6bW9kOmBnemlwYCBhbmQgOm1vZDpgYnoyYCBjb21wcmVzc2VkIGFyY2hpdmVzLgorKiByZWFkcyBhbmQgd3JpdGVzIDptb2Q6YGd6aXBgLCA6bW9kOmBiejJgIGFuZCA6bW9kOmBsem1hYCBjb21wcmVzc2VkIGFyY2hpdmVzLgogCiAqIHJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgdGhlIFBPU0lYLjEtMTk4OCAodXN0YXIpIGZvcm1hdC4KIApAQCAtMzMsNiArMzMsOSBAQAogICBjaGFyYWN0ZXIgZGV2aWNlcyBhbmQgYmxvY2sgZGV2aWNlcyBhbmQgaXMgYWJsZSB0byBhY3F1aXJlIGFuZCByZXN0b3JlIGZpbGUKICAgaW5mb3JtYXRpb24gbGlrZSB0aW1lc3RhbXAsIGFjY2VzcyBwZXJtaXNzaW9ucyBhbmQgb3duZXIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBsem1hYCBjb21wcmVzc2lvbi4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW4obmFtZT1Ob25lLCBtb2RlPSdyJywgZmlsZW9iaj1Ob25lLCBidWZzaXplPTEwMjQwLCBcKlwqa3dhcmdzKQogCkBAIC01Niw2ICs1OSw4IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjpiejInYGAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBiemlwMiBjb21wcmVzc2lvbi4gICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3I6eHonYGAgICAgICAgfCBPcGVuIGZvciByZWFkaW5nIHdpdGggbHptYSBjb21wcmVzc2lvbi4gICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtNjUsMTEgKzcwLDEzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAndzpiejInYGAgICAgICB8IE9wZW4gZm9yIGJ6aXAyIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3c6eHonYGAgICAgICAgfCBPcGVuIGZvciBsem1hIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBOb3RlIHRoYXQgYGAnYTpneidgYCBvciBgYCdhOmJ6MidgYCBpcyBub3QgcG9zc2libGUuIElmICptb2RlKiBpcyBub3Qgc3VpdGFibGUKLSAgIHRvIG9wZW4gYSBjZXJ0YWluIChjb21wcmVzc2VkKSBmaWxlIGZvciByZWFkaW5nLCA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlCi0gICAqbW9kZSogYGAncidgYCB0byBhdm9pZCB0aGlzLiAgSWYgYSBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwKLSAgIDpleGM6YENvbXByZXNzaW9uRXJyb3JgIGlzIHJhaXNlZC4KKyAgIE5vdGUgdGhhdCBgYCdhOmd6J2BgLCBgYCdhOmJ6MidgYCBvciBgYCdhOnh6J2BgIGlzIG5vdCBwb3NzaWJsZS4gSWYgKm1vZGUqCisgICBpcyBub3Qgc3VpdGFibGUgdG8gb3BlbiBhIGNlcnRhaW4gKGNvbXByZXNzZWQpIGZpbGUgZm9yIHJlYWRpbmcsCisgICA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlICptb2RlKiBgYCdyJ2BgIHRvIGF2b2lkIHRoaXMuICBJZiBhCisgICBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwgOmV4YzpgQ29tcHJlc3Npb25FcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJZiAqZmlsZW9iaiogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgOnRlcm06YGZpbGUgb2JqZWN0YAogICAgb3BlbmVkIGluIGJpbmFyeSBtb2RlIGZvciAqbmFtZSouIEl0IGlzIHN1cHBvc2VkIHRvIGJlIGF0IHBvc2l0aW9uIDAuCkBAIC0xMDAsNiArMTA3LDkgQEAKICAgIHwgYGAncnxiejInYGAgfCBPcGVuIGEgYnppcDIgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAogICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAncnx4eidgYCAgfCBPcGVuIGEgbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICAgfAorICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnd3wnYGAgICAgfCBPcGVuIGFuIHVuY29tcHJlc3NlZCAqc3RyZWFtKiBmb3Igd3JpdGluZy4gfAogICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3d8Z3onYGAgIHwgT3BlbiBhIGd6aXAgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgIHwKQEAgLTEwOCw2ICsxMTgsOSBAQAogICAgfCBgYCd3fGJ6MidgYCB8IE9wZW4gYSBiemlwMiBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CiAgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd3fHh6J2BgICB8IE9wZW4gYW4gbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CisgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIGNsYXNzOjogVGFyRmlsZQpAQCAtMjYzLDkgKzI3Niw5IEBACiAKICAgIElmICplcnJvcmxldmVsKiBpcyBgYDBgYCwgYWxsIGVycm9ycyBhcmUgaWdub3JlZCB3aGVuIHVzaW5nIDptZXRoOmBUYXJGaWxlLmV4dHJhY3RgLgogICAgTmV2ZXJ0aGVsZXNzLCB0aGV5IGFwcGVhciBhcyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgZGVidWcgb3V0cHV0LCB3aGVuIGRlYnVnZ2luZwotICAgaXMgZW5hYmxlZC4gIElmIGBgMWBgLCBhbGwgKmZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcyA6ZXhjOmBPU0Vycm9yYCBvcgotICAgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9ucy4gSWYgYGAyYGAsIGFsbCAqbm9uLWZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcwotICAgOmV4YzpgVGFyRXJyb3JgIGV4Y2VwdGlvbnMgYXMgd2VsbC4KKyAgIGlzIGVuYWJsZWQuICBJZiBgYDFgYCwgYWxsICpmYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgT1NFcnJvcmAKKyAgIGV4Y2VwdGlvbnMuIElmIGBgMmBgLCBhbGwgKm5vbi1mYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgVGFyRXJyb3JgCisgICBleGNlcHRpb25zIGFzIHdlbGwuCiAKICAgIFRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMgZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gYmUKICAgIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgYXJjaGl2ZSBhbmQgaG93IGNvbnZlcnNpb24gZXJyb3JzIGFyZSBnb2luZwpAQCAtMzYzLDE1ICszNzYsMTIgQEAKIC4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGZpbGUobWVtYmVyKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlIG9iamVjdC4gKm1lbWJlciogbWF5IGJlIGEgZmlsZW5hbWUKLSAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlLCBhIDp0ZXJtOmBmaWxlLWxpa2UKLSAgIG9iamVjdGAgaXMgcmV0dXJuZWQuIElmICptZW1iZXIqIGlzIGEgbGluaywgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20KLSAgIHRoZSBsaW5rJ3MgdGFyZ2V0LiBJZiAqbWVtYmVyKiBpcyBub25lIG9mIHRoZSBhYm92ZSwgOmNvbnN0OmBOb25lYCBpcyByZXR1cm5lZC4KKyAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlIG9yIGEgbGluaywgYW4KKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCA6Y29uc3Q6YE5vbmVgIGlzCisgICByZXR1cm5lZC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seS4gIEl0IHByb3ZpZGVzIHRoZSBtZXRob2RzCi0gICAgICA6bWV0aDpgcmVhZGAsIDptZXRoOmByZWFkbGluZWAsIDptZXRoOmByZWFkbGluZXNgLCA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCwKLSAgICAgIGFuZCA6bWV0aDpgY2xvc2VgLCBhbmQgYWxzbyBzdXBwb3J0cyBpdGVyYXRpb24gb3ZlciBpdHMgbGluZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIGFuIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdC4KIAogCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmFkZChuYW1lLCBhcmNuYW1lPU5vbmUsIHJlY3Vyc2l2ZT1UcnVlLCBleGNsdWRlPU5vbmUsICosIGZpbHRlcj1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdCBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKaW5kZXggNjQ2NjM0ZC4uOWJjNzljNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CkBAIC0xNjIsOSArMTYyLDEzIEBACiAuLiBtZXRob2Q6OiBUZWxuZXQud3JpdGUoYnVmZmVyKQogCiAgICBXcml0ZSBhIGJ5dGUgc3RyaW5nIHRvIHRoZSBzb2NrZXQsIGRvdWJsaW5nIGFueSBJQUMgY2hhcmFjdGVycy4gVGhpcyBjYW4KLSAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCBpZiB0aGUKKyAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlCiAgICBjb25uZWN0aW9uIGlzIGNsb3NlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgbWV0aG9kIHVzZWQgdG8gcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICAgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBtZXRob2Q6OiBUZWxuZXQuaW50ZXJhY3QoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggZmZmNmM0ZS4uZGZlYjI1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMjUsNyArMjUsNyBAQAogCiBBbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCiBhbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogYW5kICp0ZW1wbGF0ZSogdmFyaWFibGVzLgorbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDQwZjQxMTUuLjJlOGJhMzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC04MCwxNyArODAsMTIgQEAKIAogICAgLi4uIG1vcmUgdGVzdCBjbGFzc2VzIC4uLgogCi0gICBkZWYgdGVzdF9tYWluKCk6Ci0gICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTXlUZXN0Q2FzZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNeVRlc3RDYXNlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiBsaXN0IG90aGVyIHRlc3RzIC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgdGVzdF9tYWluKCkKKyAgICAgICB1bml0dGVzdC5tYWluKCkKIAotVGhpcyBib2lsZXJwbGF0ZSBjb2RlIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAKLWFzIHdlbGwgYXMgb24gaXRzIG93biBhcyBhIHNjcmlwdC4KK1RoaXMgY29kZSBwYXR0ZXJuIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAsCitvbiBpdHMgb3duIGFzIGEgc2NyaXB0IHRoYXQgc3VwcG9ydHMgdGhlIDptb2Q6YHVuaXR0ZXN0YCBDTEksIG9yIHZpYSB0aGUKK2BweXRob24gLW0gdW5pdHRlc3RgIENMSS4KIAogVGhlIGdvYWwgZm9yIHJlZ3Jlc3Npb24gdGVzdGluZyBpcyB0byB0cnkgdG8gYnJlYWsgY29kZS4gVGhpcyBsZWFkcyB0byBhIGZldwogZ3VpZGVsaW5lcyB0byBiZSBmb2xsb3dlZDoKQEAgLTEyOSwyMiArMTI0LDI3IEBACiAgIGFzIHdoYXQgdHlwZSBvZiBpbnB1dCBpcyB1c2VkLiBNaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IHN1YmNsYXNzaW5nIGEKICAgYmFzaWMgdGVzdCBjbGFzcyB3aXRoIGEgY2xhc3MgdGhhdCBzcGVjaWZpZXMgdGhlIGlucHV0OjoKIAotICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbjoKIAogICAgICAgICAgZnVuYyA9IG15U3VwZXJXaGFtbXlGdW5jdGlvbgogCiAgICAgICAgICBkZWYgdGVzdF9mdW5jKHNlbGYpOgogICAgICAgICAgICAgIHNlbGYuZnVuYyhzZWxmLmFyZykKIAotICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgYXJnID0gWzEsIDIsIDNdCiAKLSAgICAgY2xhc3MgQWNjZXB0U3RyaW5ncyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRTdHJpbmdzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICBhcmcgPSAnYWJjJwogCi0gICAgIGNsYXNzIEFjY2VwdFR1cGxlcyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRUdXBsZXMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIGFyZyA9ICgxLCAyLCAzKQogCisgIFdoZW4gdXNpbmcgdGhpcyBwYXR0ZXJuLCByZW1lbWJlciB0aGF0IGFsbCBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tCisgIGB1bml0dGVzdC5UZXN0Q2FzZWAgYXJlIHJ1biBhcyB0ZXN0cy4gIFRoZSBgTWl4aW5gIGNsYXNzIGluIHRoZSBleGFtcGxlIGFib3ZlCisgIGRvZXMgbm90IGhhdmUgYW55IGRhdGEgYW5kIHNvIGNhbid0IGJlIHJ1biBieSBpdHNlbGYsIHRodXMgaXQgZG9lcyBub3QKKyAgaW5oZXJpdCBmcm9tIGB1bml0dGVzdC5UZXN0Q2FzZWAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE2MCwxNCArMTYwLDE1IEBACiBUaGUgOm1vZDpgdGVzdGAgcGFja2FnZSBjYW4gYmUgcnVuIGFzIGEgc2NyaXB0IHRvIGRyaXZlIFB5dGhvbidzIHJlZ3Jlc3Npb24KIHRlc3Qgc3VpdGUsIHRoYW5rcyB0byB0aGUgOm9wdGlvbjpgLW1gIG9wdGlvbjogOnByb2dyYW06YHB5dGhvbiAtbSB0ZXN0YC4gVW5kZXIKIHRoZSBob29kLCBpdCB1c2VzIDptb2Q6YHRlc3QucmVncnRlc3RgOyB0aGUgY2FsbCA6cHJvZ3JhbTpgcHl0aG9uIC1tCi10ZXN0LnJlZ3J0ZXN0YCB1c2VkIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyBzdGlsbCB3b3JrcykuCi1SdW5uaW5nIHRoZSBzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24KLXRlc3RzIGluIHRoZSA6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUKLXBhY2thZ2Ugd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZQotZnVuY3Rpb24gOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudC4gVGhlIG5hbWVzIG9mIHRlc3RzIHRvIGV4ZWN1dGUgbWF5IGFsc28KLWJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlIHJlZ3Jlc3Npb24gdGVzdCAoOnByb2dyYW06YHB5dGhvbgotLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQgb25seSBwcmludAotd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkIGFuZCB0aHVzIG1pbmltaXplIG91dHB1dC4KK3Rlc3QucmVncnRlc3RgIHVzZWQgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zIHN0aWxsIHdvcmtzKS4gIFJ1bm5pbmcgdGhlCitzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24gdGVzdHMgaW4gdGhlCis6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUgcGFja2FnZSB3aG9zZQorbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZSBmdW5jdGlvbgorOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudCBvciBsb2FkaW5nIHRoZSB0ZXN0cyB2aWEKK3VuaXR0ZXN0LlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSBpZiBgYHRlc3RfbWFpbmBgIGRvZXMgbm90IGV4aXN0LiAgVGhlCituYW1lcyBvZiB0ZXN0cyB0byBleGVjdXRlIG1heSBhbHNvIGJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlCityZWdyZXNzaW9uIHRlc3QgKDpwcm9ncmFtOmBweXRob24gLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQKK29ubHkgcHJpbnQgd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkLgogCiBSdW5uaW5nIDptb2Q6YHRlc3RgIGRpcmVjdGx5IGFsbG93cyB3aGF0IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGZvcgogdGVzdHMgdG8gdXNlIHRvIGJlIHNldC4gWW91IGRvIHRoaXMgYnkgdXNpbmcgdGhlIGBgLXVgYCBjb21tYW5kLWxpbmUKQEAgLTIyMywxNCArMjI0LDE0IEBACiAKIC4uIGRhdGE6OiB2ZXJib3NlCiAKLSAgIDpjb25zdDpgVHJ1ZWAgd2hlbiB2ZXJib3NlIG91dHB1dCBpcyBlbmFibGVkLiBTaG91bGQgYmUgY2hlY2tlZCB3aGVuIG1vcmUKKyAgIGBgVHJ1ZWBgIHdoZW4gdmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZC4gU2hvdWxkIGJlIGNoZWNrZWQgd2hlbiBtb3JlCiAgICBkZXRhaWxlZCBpbmZvcm1hdGlvbiBpcyBkZXNpcmVkIGFib3V0IGEgcnVubmluZyB0ZXN0LiAqdmVyYm9zZSogaXMgc2V0IGJ5CiAgICA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YC4KIAogCiAuLiBkYXRhOjogaXNfanl0aG9uCiAKLSAgIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgorICAgYGBUcnVlYGAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgogCiAKIC4uIGRhdGE6OiBURVNURk4KQEAgLTI0OSw3ICsyNTAsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpCiAKLSAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgogICAgYXZhaWxhYmxlIHJlc291cmNlcyBpcyBvbmx5IHNldCB3aGVuIDptb2Q6YHRlc3QucmVncnRlc3RgIGlzIGV4ZWN1dGluZyB0aGUKICAgIHRlc3RzLgogCkBAIC0yNTgsNyArMjU5LDcgQEAKIAogICAgUmFpc2UgOmV4YzpgUmVzb3VyY2VEZW5pZWRgIGlmICpyZXNvdXJjZSogaXMgbm90IGF2YWlsYWJsZS4gKm1zZyogaXMgdGhlCiAgICBhcmd1bWVudCB0byA6ZXhjOmBSZXNvdXJjZURlbmllZGAgaWYgaXQgaXMgcmFpc2VkLiBBbHdheXMgcmV0dXJucwotICAgOmNvbnN0OmBUcnVlYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCisgICBgYFRydWVgYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCiAgICBVc2VkIHdoZW4gdGVzdHMgYXJlIGV4ZWN1dGVkIGJ5IDptb2Q6YHRlc3QucmVncnRlc3RgLgogCiAKQEAgLTI4Niw2ICsyODcsMTUgQEAKICAgIFRoaXMgd2lsbCBydW4gYWxsIHRlc3RzIGRlZmluZWQgaW4gdGhlIG5hbWVkIG1vZHVsZS4KIAogCisuLiBmdW5jdGlvbjo6IHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUpCisKKyAgIFJ1biA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBvbiB0aGUgZ2l2ZW4gKm1vZHVsZSouICBSZXR1cm4KKyAgIGBgKGZhaWx1cmVfY291bnQsIHRlc3RfY291bnQpYGAuCisKKyAgIElmICp2ZXJib3NpdHkqIGlzIGBgTm9uZWBgLCA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBpcyBydW4gd2l0aCB2ZXJib3NpdHkKKyAgIHNldCB0byA6ZGF0YTpgdmVyYm9zZWAuICBPdGhlcndpc2UsIGl0IGlzIHJ1biB3aXRoIHZlcmJvc2l0eSBzZXQgdG8KKyAgIGBgTm9uZWBgLgorCiAuLiBmdW5jdGlvbjo6IGNoZWNrX3dhcm5pbmdzKFwqZmlsdGVycywgcXVpZXQ9VHJ1ZSkKIAogICAgQSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciA6ZnVuYzpgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKWAgdGhhdCBtYWtlcyBpdApAQCAtMjk2LDEyICszMDYsMTIgQEAKIAogICAgYGBjaGVja193YXJuaW5nc2BgIGFjY2VwdHMgMi10dXBsZXMgb2YgdGhlIGZvcm0gYGAoIm1lc3NhZ2UgcmVnZXhwIiwKICAgIFdhcm5pbmdDYXRlZ29yeSlgYCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gSWYgb25lIG9yIG1vcmUgKmZpbHRlcnMqIGFyZQotICAgcHJvdmlkZWQsIG9yIGlmIHRoZSBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICpxdWlldCogaXMgOmNvbnN0OmBGYWxzZWAsCisgICBwcm92aWRlZCwgb3IgaWYgdGhlIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKnF1aWV0KiBpcyBgYEZhbHNlYGAsCiAgICBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSB3YXJuaW5ncyBhcmUgYXMgZXhwZWN0ZWQ6ICBlYWNoIHNwZWNpZmllZCBmaWx0ZXIKICAgIG11c3QgbWF0Y2ggYXQgbGVhc3Qgb25lIG9mIHRoZSB3YXJuaW5ncyByYWlzZWQgYnkgdGhlIGVuY2xvc2VkIGNvZGUgb3IgdGhlCiAgICB0ZXN0IGZhaWxzLCBhbmQgaWYgYW55IHdhcm5pbmdzIGFyZSByYWlzZWQgdGhhdCBkbyBub3QgbWF0Y2ggYW55IG9mIHRoZQogICAgc3BlY2lmaWVkIGZpbHRlcnMgdGhlIHRlc3QgZmFpbHMuICBUbyBkaXNhYmxlIHRoZSBmaXJzdCBvZiB0aGVzZSBjaGVja3MsCi0gICBzZXQgKnF1aWV0KiB0byA6Y29uc3Q6YFRydWVgLgorICAgc2V0ICpxdWlldCogdG8gYGBUcnVlYGAuCiAKICAgIElmIG5vIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0bzo6CiAKQEAgLTMxNiw3ICszMjYsNyBAQAogICAgcmVwcmVzZW50aW5nIHRoZSBtb3N0IHJlY2VudCB3YXJuaW5nIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IHRocm91Z2gKICAgIHRoZSByZWNvcmRlciBvYmplY3QgKHNlZSBleGFtcGxlIGJlbG93KS4gIElmIG5vIHdhcm5pbmcgaGFzIGJlZW4gcmFpc2VkLAogICAgdGhlbiBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgZXhwZWN0ZWQgb24gYW4gb2JqZWN0Ci0gICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIDpjb25zdDpgTm9uZWAuCisgICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIGBgTm9uZWBgLgogCiAgICBUaGUgcmVjb3JkZXIgb2JqZWN0IGFsc28gaGFzIGEgOm1ldGg6YHJlc2V0YCBtZXRob2QsIHdoaWNoIGNsZWFycyB0aGUKICAgIHdhcm5pbmdzIGxpc3QuCkBAIC0zNTQsNyArMzY0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBjYXB0dXJlZF9zdGRvdXQoKQogCi0gICBUaGlzIGlzIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgcnVucyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IHVzaW5nCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHJ1bnMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYm9keSB1c2luZwogICAgYSA6Y2xhc3M6YFN0cmluZ0lPLlN0cmluZ0lPYCBvYmplY3QgYXMgc3lzLnN0ZG91dC4gIFRoYXQgb2JqZWN0IGNhbiBiZQogICAgcmV0cmlldmVkIHVzaW5nIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LgogCkBAIC0zNjUsNiArMzc1LDU3IEBACiAgICAgICBhc3NlcnQgcy5nZXR2YWx1ZSgpID09ICJoZWxsb1xuIgogCiAKKy4uIGZ1bmN0aW9uOjogdGVtcF9jd2QobmFtZT0ndGVtcGN3ZCcsIHF1aWV0PUZhbHNlLCBwYXRoPU5vbmUpCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nCisgICBkaXJlY3RvcnkgKENXRCkuCisKKyAgIEFuIGV4aXN0aW5nIHBhdGggbWF5IGJlIHByb3ZpZGVkIGFzICpwYXRoKiwgaW4gd2hpY2ggY2FzZSB0aGlzIGZ1bmN0aW9uCisgICBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlIHN5c3RlbS4KKworICAgT3RoZXJ3aXNlLCB0aGUgbmV3IENXRCBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgaXQncyBuYW1lZAorICAgKm5hbWUqLiAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgYW5kIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgorICAgY2hhbmdlIHRoZSBDV0QsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0J3MgYGBUcnVlYGAsIG9ubHkgYSB3YXJuaW5nCisgICBpcyByYWlzZWQgYW5kIHRoZSBvcmlnaW5hbCBDV0QgaXMgdXNlZC4KKworCisuLiBmdW5jdGlvbjo6IHRlbXBfdW1hc2sodW1hc2spCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4KKworCisuLiBmdW5jdGlvbjo6IGNhbl9zeW1saW5rKCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBPUyBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcywgYGBGYWxzZWBgCisgICBvdGhlcndpc2UuCisKKworLi4gZGVjb3JhdG9yOjogc2tpcF91bmxlc3Nfc3ltbGluaygpCisKKyAgIEEgZGVjb3JhdG9yIGZvciBydW5uaW5nIHRlc3RzIHRoYXQgcmVxdWlyZSBzdXBwb3J0IGZvciBzeW1ib2xpYyBsaW5rcy4KKworCisuLiBkZWNvcmF0b3I6OiBhbnRpY2lwYXRlX2ZhaWx1cmUoY29uZGl0aW9uKQorCisgICBBIGRlY29yYXRvciB0byBjb25kaXRpb25hbGx5IG1hcmsgdGVzdHMgd2l0aAorICAgOmZ1bmM6YHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZWAuIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkCisgICBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWVudCBpZGVudGlmeWluZyB0aGUgcmVsZXZhbnQgdHJhY2tlciBpc3N1ZS4KKworCisuLiBkZWNvcmF0b3I6OiBydW5fd2l0aF9sb2NhbGUoY2F0c3RyLCAqbG9jYWxlcykKKworICAgQSBkZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBsb2NhbGUsIGNvcnJlY3RseQorICAgcmVzZXR0aW5nIGl0IGFmdGVyIGl0IGhhcyBmaW5pc2hlZC4gICpjYXRzdHIqIGlzIHRoZSBsb2NhbGUgY2F0ZWdvcnkgYXMKKyAgIGEgc3RyaW5nIChmb3IgZXhhbXBsZSBgYCJMQ19BTEwiYGApLiAgVGhlICpsb2NhbGVzKiBwYXNzZWQgd2lsbCBiZSB0cmllZAorICAgc2VxdWVudGlhbGx5LCBhbmQgdGhlIGZpcnN0IHZhbGlkIGxvY2FsZSB3aWxsIGJlIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiBtYWtlX2JhZF9mZCgpCisKKyAgIENyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBieSBvcGVuaW5nIGFuZCBjbG9zaW5nIGEgdGVtcG9yYXJ5IGZpbGUsCisgICBhbmQgcmV0dXJuaW5nIGl0cyBkZXNjcmlwb3IuCisKKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIGRlcHJlY2F0ZWQ9RmFsc2UpCiAKICAgIFRoaXMgZnVuY3Rpb24gaW1wb3J0cyBhbmQgcmV0dXJucyB0aGUgbmFtZWQgbW9kdWxlLiBVbmxpa2UgYSBub3JtYWwKQEAgLTM3Miw3ICs0MzMsNyBAQAogICAgY2Fubm90IGJlIGltcG9ydGVkLgogCiAgICBNb2R1bGUgYW5kIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgZHVyaW5nIHRoaXMgaW1wb3J0Ci0gICBpZiAqZGVwcmVjYXRlZCogaXMgOmNvbnN0OmBUcnVlYC4KKyAgIGlmICpkZXByZWNhdGVkKiBpcyBgYFRydWVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKQEAgLTM5Niw5ICs0NTcsOSBAQAogICAgYGBzeXMubW9kdWxlc2BgIHdoZW4gdGhlIGZyZXNoIGltcG9ydCBpcyBjb21wbGV0ZS4KIAogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAotICAgaWYgKmRlcHJlY2F0ZWQqIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBpZiAqZGVwcmVjYXRlZCogaXMgYGBUcnVlYGAuCiAKLSAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSA6ZXhjOmB1bml0dGVzdC5Ta2lwVGVzdGAgaXMgdGhlIG5hbWVkIG1vZHVsZQorICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIDpleGM6YHVuaXR0ZXN0LlNraXBUZXN0YCBpZiB0aGUgbmFtZWQgbW9kdWxlCiAgICBjYW5ub3QgYmUgaW1wb3J0ZWQuCiAKICAgIEV4YW1wbGUgdXNlOjoKQEAgLTQxMyw2ICs0NzQsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKKy4uIGZ1bmN0aW9uOjogYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCkKKworICAgQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCisgICBlcGhlbWVyYWwgcG9ydHMgaW4gb3JkZXIgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyBhbiB1bmJvdW5kIHBvcnQuICBUaGlzIGlzCisgICBpbXBvcnRhbnQgYXMgbWFueSB0ZXN0cyBtYXkgYmUgcnVubmluZyBzaW11bHRhbmVvdXNseSwgZXNwZWNpYWxseSBpbiBhCisgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlCisgICBgYHNvY2suZmFtaWx5YGAgaXMgOmNvbnN0OmB+c29ja2V0LkFGX0lORVRgIGFuZCBgYHNvY2sudHlwZWBgIGlzCisgICA6Y29uc3Q6YH5zb2NrZXQuU09DS19TVFJFQU1gLCBhbmQgdGhlIHNvY2tldCBoYXMKKyAgIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRUFERFJgIG9yIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRVBPUlRgIHNldCBvbiBpdC4KKyAgIFRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMgZm9yIFRDUC9JUCBzb2NrZXRzLgorICAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcgbXVsdGljYXN0aW5nIHZpYQorICAgbXVsdGlwbGUgVURQIHNvY2tldHMuCisKKyAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIDpjb25zdDpgfnNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFYCBzb2NrZXQgb3B0aW9uIGlzCisgICBhdmFpbGFibGUgKGkuZS4gb24gV2luZG93cyksIGl0IHdpbGwgYmUgc2V0IG9uIHRoZSBzb2NrZXQuICBUaGlzIHdpbGwKKyAgIHByZXZlbnQgYW55b25lIGVsc2UgZnJvbSBiaW5kaW5nIHRvIG91ciBob3N0L3BvcnQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKKyAgIHRlc3QuCisKKworLi4gZnVuY3Rpb246OiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICBSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcworICAgYWNoaWV2ZWQgYnkgY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgc29ja2V0IHdpdGggdGhlIHNhbWUgZmFtaWx5IGFuZCB0eXBlIGFzCisgICB0aGUgYGBzb2NrYGAgcGFyYW1ldGVyIChkZWZhdWx0IGlzIDpjb25zdDpgfnNvY2tldC5BRl9JTkVUYCwKKyAgIDpjb25zdDpgfnNvY2tldC5TT0NLX1NUUkVBTWApLAorICAgYW5kIGJpbmRpbmcgaXQgdG8gdGhlIHNwZWNpZmllZCBob3N0IGFkZHJlc3MgKGRlZmF1bHRzIHRvIGBgMC4wLjAuMGBgKQorICAgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwgZWxpY2l0aW5nIGFuIHVudXNlZCBlcGhlbWVyYWwgcG9ydCBmcm9tIHRoZSBPUy4KKyAgIFRoZSB0ZW1wb3Jhcnkgc29ja2V0IGlzIHRoZW4gY2xvc2VkIGFuZCBkZWxldGVkLCBhbmQgdGhlIGVwaGVtZXJhbCBwb3J0IGlzCisgICByZXR1cm5lZC4KKworICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIDpmdW5jOmBiaW5kX3BvcnRgIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMKKyAgIHdoZXJlIGEgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlCisgICBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KKyAgIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcgYSBweXRob24KKyAgIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgorICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIGBgLWFjY2VwdGBgIGFyZ3VtZW50IHRvCisgICBvcGVuc3NsJ3Mgc19zZXJ2ZXIgbW9kZSkuICBBbHdheXMgcHJlZmVyIDpmdW5jOmBiaW5kX3BvcnRgIG92ZXIKKyAgIDpmdW5jOmBmaW5kX3VudXNlZF9wb3J0YCB3aGVyZSBwb3NzaWJsZS4gIFVzaW5nIGEgaGFyZCBjb2RlZCBwb3J0IGlzCisgICBkaXNjb3VyYWdlZCBzaW5jZSBpdCBjYW4gbWFrZXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSB0ZXN0IGltcG9zc2libGUgdG8KKyAgIHJ1biBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYSBwcm9ibGVtIGZvciBidWlsZGJvdHMuCisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L3RleHQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YjY3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS90ZXh0LnJzdApAQCAtMCwwICsxLDI2IEBACisuLiBfc3RyaW5nc2VydmljZXM6CisuLiBfdGV4dHNlcnZpY2VzOgorCisqKioqKioqKioqKioqKioqKioqKioqKioKK1RleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCittYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBhbmQgb3RoZXIgdGV4dCBwcm9jZXNzaW5nIHNlcnZpY2VzLgorCitUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YGJpbmFyeXNlcnZpY2VzYCBpcyBhbHNvCitoaWdobHkgcmVsZXZhbnQgdG8gdGV4dCBwcm9jZXNzaW5nLiBJbiBhZGRpdGlvbiwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorUHl0aG9uJ3MgYnVpbHQtaW4gc3RyaW5nIHR5cGUgaW4gOnJlZjpgdGV4dHNlcWAuCisKKworLi4gdG9jdHJlZTo6CisKKyAgIHN0cmluZy5yc3QKKyAgIHJlLnJzdAorICAgZGlmZmxpYi5yc3QKKyAgIHRleHR3cmFwLnJzdAorICAgdW5pY29kZWRhdGEucnN0CisgICBzdHJpbmdwcmVwLnJzdAorICAgcmVhZGxpbmUucnN0CisgICBybGNvbXBsZXRlci5yc3QKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0IGIvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0CmluZGV4IDNjMWVjZjYuLmM2MjUyNTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXh0d3JhcC5yc3QKQEAgLTEyLDcgKzEyLDcgQEAKIAogVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgcHJvdmlkZXMgdHdvIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgOmZ1bmM6YHdyYXBgIGFuZAogOmZ1bmM6YGZpbGxgLCBhcyB3ZWxsIGFzIDpjbGFzczpgVGV4dFdyYXBwZXJgLCB0aGUgY2xhc3MgdGhhdCBkb2VzIGFsbCB0aGUgd29yaywKLWFuZCBhIHV0aWxpdHkgZnVuY3Rpb24gIDpmdW5jOmBkZWRlbnRgLiAgSWYgeW91J3JlIGp1c3Qgd3JhcHBpbmcgb3IgZmlsbGluZyBvbmUKK2FuZCB0d28gdXRpbGl0eSBmdW5jdGlvbnMsIDpmdW5jOmBkZWRlbnRgIGFuZCA6ZnVuYzpgaW5kZW50YC4gIElmIHlvdSdyZSBqdXN0IHdyYXBwaW5nIG9yIGZpbGxpbmcgb25lCiBvciB0d28gIHRleHQgc3RyaW5ncywgdGhlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgZ29vZCBlbm91Z2g7CiBvdGhlcndpc2UsICB5b3Ugc2hvdWxkIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRleHRXcmFwcGVyYCBmb3IgZWZmaWNpZW5jeS4KIApAQCAtNDgsOSArNDgsMTAgQEAKIGh5cGhlbmF0ZWQgd29yZHM7IG9ubHkgdGhlbiB3aWxsIGxvbmcgd29yZHMgYmUgYnJva2VuIGlmIG5lY2Vzc2FyeSwgdW5sZXNzCiA6YXR0cjpgVGV4dFdyYXBwZXIuYnJlYWtfbG9uZ193b3Jkc2AgaXMgc2V0IHRvIGZhbHNlLgogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24sIDpmdW5jOmBkZWRlbnRgLCBpcyBwcm92aWRlZCB0byByZW1vdmUKLWluZGVudGF0aW9uIGZyb20gc3RyaW5ncyB0aGF0IGhhdmUgdW53YW50ZWQgd2hpdGVzcGFjZSB0byB0aGUgbGVmdCBvZiB0aGUgdGV4dC4KLQorVHdvIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiwgOmZ1bmM6YGRlZGVudGAgYW5kIDpmdW5jOmBpbmRlbnRgLCBhcmUKK3Byb3ZpZGVkIHRvIHJlbW92ZSBpbmRlbnRhdGlvbiBmcm9tIHN0cmluZ3MgdGhhdCBoYXZlIHVud2FudGVkIHdoaXRlc3BhY2UKK3RvIHRoZSBsZWZ0IG9mIHRoZSB0ZXh0IGFuZCB0byBhZGQgYW4gYXJiaXRyYXJ5IHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcworaW4gYSBibG9jayBvZiB0ZXh0LgogCiAuLiBmdW5jdGlvbjo6IGRlZGVudCh0ZXh0KQogCkBAIC03NSw2ICs3NiwzMiBAQAogICAgICAgICAgIHByaW50KHJlcHIoZGVkZW50KHMpKSkgICMgcHJpbnRzICdoZWxsb1xuICB3b3JsZFxuJwogCiAKKy4uIGZ1bmN0aW9uOjogaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlPU5vbmUpCisKKyAgIEFkZCAqcHJlZml4KiB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICp0ZXh0Ki4KKworICAgTGluZXMgYXJlIHNlcGFyYXRlZCBieSBjYWxsaW5nIGBgdGV4dC5zcGxpdGxpbmVzKFRydWUpYGAuCisKKyAgIEJ5IGRlZmF1bHQsICpwcmVmaXgqIGlzIGFkZGVkIHRvIGFsbCBsaW5lcyB0aGF0IGRvIG5vdCBjb25zaXN0CisgICBzb2xlbHkgb2Ygd2hpdGVzcGFjZSAoaW5jbHVkaW5nIGFueSBsaW5lIGVuZGluZ3MpLgorCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBzID0gJ2hlbGxvXG5cbiBcbndvcmxkJworICAgICAgPj4+IGluZGVudChzLCAnICAnKQorICAgICAgJyAgaGVsbG9cblxuIFxuICB3b3JsZCcKKworICAgVGhlIG9wdGlvbmFsICpwcmVkaWNhdGUqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggbGluZXMKKyAgIGFyZSBpbmRlbnRlZC4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gYWRkICpwcmVmaXgqIHRvIGV2ZW4gZW1wdHkKKyAgIGFuZCB3aGl0ZXNwYWNlLW9ubHkgbGluZXM6OgorCisgICAgICA+Pj4gcHJpbnQoaW5kZW50KHMsICcrICcsIGxhbWJkYSBsaW5lOiBUcnVlKSkKKyAgICAgICsgaGVsbG8KKyAgICAgICsKKyAgICAgICsKKyAgICAgICsgd29ybGQKKworCiAuLiBjbGFzczo6IFRleHRXcmFwcGVyKCoqa3dhcmdzKQogCiAgICBUaGUgOmNsYXNzOmBUZXh0V3JhcHBlcmAgY29uc3RydWN0b3IgYWNjZXB0cyBhIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkCkBAIC0xMTAsNiArMTM3LDE1IEBACiAgICAgICBleHBhbmRlZCB0byBzcGFjZXMgdXNpbmcgdGhlIDptZXRoOmBleHBhbmR0YWJzYCBtZXRob2Qgb2YgKnRleHQqLgogCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHRhYnNpemUKKworICAgICAgKGRlZmF1bHQ6IGBgOGBgKSBJZiA6YXR0cjpgZXhwYW5kX3RhYnNgIGlzIHRydWUsIHRoZW4gYWxsIHRhYiBjaGFyYWN0ZXJzCisgICAgICBpbiAqdGV4dCogd2lsbCBiZSBleHBhbmRlZCB0byB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIGdpdmVuIHRhYiBzaXplLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBhdHRyaWJ1dGU6OiByZXBsYWNlX3doaXRlc3BhY2UKIAogICAgICAgKGRlZmF1bHQ6IGBgVHJ1ZWBgKSBJZiB0cnVlLCBhZnRlciB0YWIgZXhwYW5zaW9uIGJ1dCBiZWZvcmUgd3JhcHBpbmcsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0IGIvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdAppbmRleCA0MzA4N2VmLi43YWI3MzliIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RocmVhZGluZy5yc3QKQEAgLTIwLDE3ICsyMCw2IEBACiAgICBtZXRob2RzIGFuZCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgaW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzIGFyZSBzdGlsbAogICAgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi0uLiBpbXBsLWRldGFpbDo6Ci0KLSAgIER1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgaW4gQ1B5dGhvbiBvbmx5IG9uZSB0aHJlYWQKLSAgIGNhbiBleGVjdXRlIFB5dGhvbiBjb2RlIGF0IG9uY2UgKGV2ZW4gdGhvdWdoIGNlcnRhaW4gcGVyZm9ybWFuY2Utb3JpZW50ZWQKLSAgIGxpYnJhcmllcyBtaWdodCBvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24pLgotICAgSWYgeW91IHdhbnQgeW91ciBhcHBsaWNhdGlvbiB0byBtYWtlIGJldHRlciBvZiB1c2Ugb2YgdGhlIGNvbXB1dGF0aW9uYWwKLSAgIHJlc291cmNlcyBvZiBtdWx0aS1jb3JlIG1hY2hpbmVzLCB5b3UgYXJlIGFkdmlzZWQgdG8gdXNlCi0gICA6bW9kOmBtdWx0aXByb2Nlc3NpbmdgIG9yIDpjbGFzczpgY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3JgLgotICAgSG93ZXZlciwgdGhyZWFkaW5nIGlzIHN0aWxsIGFuIGFwcHJvcHJpYXRlIG1vZGVsIGlmIHlvdSB3YW50IHRvIHJ1bgotICAgbXVsdGlwbGUgSS9PLWJvdW5kIHRhc2tzIHNpbXVsdGFuZW91c2x5LgotCiAKIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYW5kIG9iamVjdHM6CiAKQEAgLTU5LDYgKzQ4LDE3IEBACiAgICByZXR1cm5lZC4KIAogCisuLiBmdW5jdGlvbjo6IGdldF9pZGVudCgpCisKKyAgIFJldHVybiB0aGUgJ3RocmVhZCBpZGVudGlmaWVyJyBvZiB0aGUgY3VycmVudCB0aHJlYWQuICBUaGlzIGlzIGEgbm9uemVybworICAgaW50ZWdlci4gIEl0cyB2YWx1ZSBoYXMgbm8gZGlyZWN0IG1lYW5pbmc7IGl0IGlzIGludGVuZGVkIGFzIGEgbWFnaWMgY29va2llCisgICB0byBiZSB1c2VkIGUuZy4gdG8gaW5kZXggYSBkaWN0aW9uYXJ5IG9mIHRocmVhZC1zcGVjaWZpYyBkYXRhLiAgVGhyZWFkCisgICBpZGVudGlmaWVycyBtYXkgYmUgcmVjeWNsZWQgd2hlbiBhIHRocmVhZCBleGl0cyBhbmQgYW5vdGhlciB0aHJlYWQgaXMKKyAgIGNyZWF0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZW51bWVyYXRlKCkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgOmNsYXNzOmBUaHJlYWRgIG9iamVjdHMgY3VycmVudGx5IGFsaXZlLiAgVGhlIGxpc3QKQEAgLTEzNCw3ICsxMzQsNiBAQAogCiAKIC4uIGNsYXNzOjogVGhyZWFkCi0gICA6bm9pbmRleDoKIAogICAgQSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgYSB0aHJlYWQgb2YgY29udHJvbC4gIFRoaXMgY2xhc3MgY2FuIGJlIHNhZmVseQogICAgc3ViY2xhc3NlZCBpbiBhIGxpbWl0ZWQgZmFzaGlvbi4KQEAgLTE3NCw3ICsxNzMsNyBAQAogICAgKnNpemUqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc3RhY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50bHkgY3JlYXRlZAogICAgdGhyZWFkcywgYW5kIG11c3QgYmUgMCAodXNlIHBsYXRmb3JtIG9yIGNvbmZpZ3VyZWQgZGVmYXVsdCkgb3IgYSBwb3NpdGl2ZQogICAgaW50ZWdlciB2YWx1ZSBvZiBhdCBsZWFzdCAzMiw3NjggKDMya0IpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKLSAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFRocmVhZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgc3BlY2lmaWVkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCiAgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKICAgIGlzIGN1cnJlbnRseSB0aGUgbWluaW11bSBzdXBwb3J0ZWQgc3RhY2sgc2l6ZSB2YWx1ZSB0byBndWFyYW50ZWUgc3VmZmljaWVudAogICAgc3RhY2sgc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBpdHNlbGYuICBOb3RlIHRoYXQgc29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUKQEAgLTIzOSwxMCArMjM4LDExIEBACiBBIHRocmVhZCBoYXMgYSBuYW1lLiAgVGhlIG5hbWUgY2FuIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IsIGFuZCByZWFkIG9yCiBjaGFuZ2VkIHRocm91Z2ggdGhlIDphdHRyOmB+VGhyZWFkLm5hbWVgIGF0dHJpYnV0ZS4KIAotQSB0aHJlYWQgY2FuIGJlIGZsYWdnZWQgYXMgYSAiZGFlbW9uIHRocmVhZCIuICBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZmxhZwotaXMgdGhhdCB0aGUgZW50aXJlIFB5dGhvbiBwcm9ncmFtIGV4aXRzIHdoZW4gb25seSBkYWVtb24gdGhyZWFkcyBhcmUgbGVmdC4KLVRoZSBpbml0aWFsIHZhbHVlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyB0aHJlYWQuICBUaGUgZmxhZyBjYW4gYmUKLXNldCB0aHJvdWdoIHRoZSA6YXR0cjpgflRocmVhZC5kYWVtb25gIHByb3BlcnR5LgorQSB0aHJlYWQgY2FuIGJlIGZsYWdnZWQgYXMgYSAiZGFlbW9uIHRocmVhZCIuICBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZmxhZyBpcwordGhhdCB0aGUgZW50aXJlIFB5dGhvbiBwcm9ncmFtIGV4aXRzIHdoZW4gb25seSBkYWVtb24gdGhyZWFkcyBhcmUgbGVmdC4gIFRoZQoraW5pdGlhbCB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgY3JlYXRpbmcgdGhyZWFkLiAgVGhlIGZsYWcgY2FuIGJlIHNldAordGhyb3VnaCB0aGUgOmF0dHI6YH5UaHJlYWQuZGFlbW9uYCBwcm9wZXJ0eSBvciB0aGUgKmRhZW1vbiogY29uc3RydWN0b3IKK2FyZ3VtZW50LgogCiBUaGVyZSBpcyBhICJtYWluIHRocmVhZCIgb2JqZWN0OyB0aGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBpbml0aWFsIHRocmVhZCBvZgogY29udHJvbCBpbiB0aGUgUHl0aG9uIHByb2dyYW0uICBJdCBpcyBub3QgYSBkYWVtb24gdGhyZWFkLgpAQCAtMjU1LDcgKzI1NSw4IEBACiBzaW5jZSBpdCBpcyBpbXBvc3NpYmxlIHRvIGRldGVjdCB0aGUgdGVybWluYXRpb24gb2YgYWxpZW4gdGhyZWFkcy4KIAogCi0uLiBjbGFzczo6IFRocmVhZChncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30pCisuLiBjbGFzczo6IFRocmVhZChncm91cD1Ob25lLCB0YXJnZXQ9Tm9uZSwgbmFtZT1Ob25lLCBhcmdzPSgpLCBrd2FyZ3M9e30sICosIFwKKyAgICAgICAgICAgICAgICAgIGRhZW1vbj1Ob25lKQogCiAgICBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMuICBBcmd1bWVudHMKICAgIGFyZToKQEAgLTI3NCwxMCArMjc1LDE3IEBACiAgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSB0YXJnZXQgaW52b2NhdGlvbi4KICAgIERlZmF1bHRzIHRvIGBge31gYC4KIAorICAgSWYgbm90IGBgTm9uZWBgLCAqZGFlbW9uKiBleHBsaWNpdGx5IHNldHMgd2hldGhlciB0aGUgdGhyZWFkIGlzIGRhZW1vbmljLgorICAgSWYgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdGhlIGRhZW1vbmljIHByb3BlcnR5IGlzIGluaGVyaXRlZCBmcm9tIHRoZQorICAgY3VycmVudCB0aHJlYWQuCisKICAgIElmIHRoZSBzdWJjbGFzcyBvdmVycmlkZXMgdGhlIGNvbnN0cnVjdG9yLCBpdCBtdXN0IG1ha2Ugc3VyZSB0byBpbnZva2UgdGhlCiAgICBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yIChgYFRocmVhZC5fX2luaXRfXygpYGApIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlIHRvCiAgICB0aGUgdGhyZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkYWVtb24qIGFyZ3VtZW50LgorCiAgICAuLiBtZXRob2Q6OiBzdGFydCgpCiAKICAgICAgIFN0YXJ0IHRoZSB0aHJlYWQncyBhY3Rpdml0eS4KQEAgLTM2OCw2ICszNzYsMTggQEAKICAgICAgIHByb3BlcnR5IGluc3RlYWQuCiAKIAorLi4gaW1wbC1kZXRhaWw6OgorCisgICBEdWUgdG8gdGhlIDp0ZXJtOmBHbG9iYWwgSW50ZXJwcmV0ZXIgTG9ja2AsIGluIENQeXRob24gb25seSBvbmUgdGhyZWFkCisgICBjYW4gZXhlY3V0ZSBQeXRob24gY29kZSBhdCBvbmNlIChldmVuIHRob3VnaCBjZXJ0YWluIHBlcmZvcm1hbmNlLW9yaWVudGVkCisgICBsaWJyYXJpZXMgbWlnaHQgb3ZlcmNvbWUgdGhpcyBsaW1pdGF0aW9uKS4KKyAgIElmIHlvdSB3YW50IHlvdXIgYXBwbGljYXRpb24gdG8gbWFrZSBiZXR0ZXIgb2YgdXNlIG9mIHRoZSBjb21wdXRhdGlvbmFsCisgICByZXNvdXJjZXMgb2YgbXVsdGktY29yZSBtYWNoaW5lcywgeW91IGFyZSBhZHZpc2VkIHRvIHVzZQorICAgOm1vZDpgbXVsdGlwcm9jZXNzaW5nYCBvciA6Y2xhc3M6YGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yYC4KKyAgIEhvd2V2ZXIsIHRocmVhZGluZyBpcyBzdGlsbCBhbiBhcHByb3ByaWF0ZSBtb2RlbCBpZiB5b3Ugd2FudCB0byBydW4KKyAgIG11bHRpcGxlIEkvTy1ib3VuZCB0YXNrcyBzaW11bHRhbmVvdXNseS4KKworCiAuLiBfbG9jay1vYmplY3RzOgogCiBMb2NrIE9iamVjdHMKQEAgLTQzNSw3ICs0NTUsNyBAQAogICAgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZSBvZiB0aGVtCiAgICB0byBwcm9jZWVkLgogCi0gICBXaGVuIGludm9rZWQgb24gYW4gdW5sb2NrZWQgbG9jaywgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLgorICAgV2hlbiBpbnZva2VkIG9uIGFuIHVubG9ja2VkIGxvY2ssIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuCiAKICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KIApAQCAtOTczLDI3ICs5OTMsMyBAQAogQ3VycmVudGx5LCA6Y2xhc3M6YExvY2tgLCA6Y2xhc3M6YFJMb2NrYCwgOmNsYXNzOmBDb25kaXRpb25gLAogOmNsYXNzOmBTZW1hcGhvcmVgLCBhbmQgOmNsYXNzOmBCb3VuZGVkU2VtYXBob3JlYCBvYmplY3RzIG1heSBiZSB1c2VkIGFzCiA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGNvbnRleHQgbWFuYWdlcnMuCi0KLQotLi4gX3RocmVhZGVkLWltcG9ydHM6Ci0KLUltcG9ydGluZyBpbiB0aHJlYWRlZCBjb2RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XaGlsZSB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpcyB0aHJlYWQtc2FmZSwgdGhlcmUgYXJlIHR3byBrZXkgcmVzdHJpY3Rpb25zIG9uCi10aHJlYWRlZCBpbXBvcnRzIGR1ZSB0byBpbmhlcmVudCBsaW1pdGF0aW9ucyBpbiB0aGUgd2F5IHRoYXQgdGhyZWFkLXNhZmV0eSBpcwotcHJvdmlkZWQ6Ci0KLSogRmlyc3RseSwgb3RoZXIgdGhhbiBpbiB0aGUgbWFpbiBtb2R1bGUsIGFuIGltcG9ydCBzaG91bGQgbm90IGhhdmUgdGhlCi0gIHNpZGUgZWZmZWN0IG9mIHNwYXduaW5nIGEgbmV3IHRocmVhZCBhbmQgdGhlbiB3YWl0aW5nIGZvciB0aGF0IHRocmVhZCBpbgotICBhbnkgd2F5LiBGYWlsaW5nIHRvIGFiaWRlIGJ5IHRoaXMgcmVzdHJpY3Rpb24gY2FuIGxlYWQgdG8gYSBkZWFkbG9jayBpZgotICB0aGUgc3Bhd25lZCB0aHJlYWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhdHRlbXB0cyB0byBpbXBvcnQgYSBtb2R1bGUuCi0qIFNlY29uZGx5LCBhbGwgaW1wb3J0IGF0dGVtcHRzIG11c3QgYmUgY29tcGxldGVkIGJlZm9yZSB0aGUgaW50ZXJwcmV0ZXIKLSAgc3RhcnRzIHNodXR0aW5nIGl0c2VsZiBkb3duLiBUaGlzIGNhbiBiZSBtb3N0IGVhc2lseSBhY2hpZXZlZCBieSBvbmx5Ci0gIHBlcmZvcm1pbmcgaW1wb3J0cyBmcm9tIG5vbi1kYWVtb24gdGhyZWFkcyBjcmVhdGVkIHRocm91Z2ggdGhlIHRocmVhZGluZwotICBtb2R1bGUuIERhZW1vbiB0aHJlYWRzIGFuZCB0aHJlYWRzIGNyZWF0ZWQgZGlyZWN0bHkgd2l0aCB0aGUgdGhyZWFkCi0gIG1vZHVsZSB3aWxsIHJlcXVpcmUgc29tZSBvdGhlciBmb3JtIG9mIHN5bmNocm9uaXphdGlvbiB0byBlbnN1cmUgdGhleSBkbwotICBub3QgYXR0ZW1wdCBpbXBvcnRzIGFmdGVyIHN5c3RlbSBzaHV0ZG93biBoYXMgY29tbWVuY2VkLiBGYWlsdXJlIHRvCi0gIGFiaWRlIGJ5IHRoaXMgcmVzdHJpY3Rpb24gd2lsbCBsZWFkIHRvIGludGVybWl0dGVudCBleGNlcHRpb25zIGFuZAotICBjcmFzaGVzIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93biAoYXMgdGhlIGxhdGUgaW1wb3J0cyBhdHRlbXB0IHRvCi0gIGFjY2VzcyBtYWNoaW5lcnkgd2hpY2ggaXMgbm8gbG9uZ2VyIGluIGEgdmFsaWQgc3RhdGUpLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZS5yc3QgYi9Eb2MvbGlicmFyeS90aW1lLnJzdAppbmRleCBlMGM3MDA3Li43OTkxNDBjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1lLnJzdApAQCAtNDEsMjUgKzQxLDYgQEAKICAgcGFyc2VkLCB0aGV5IGFyZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBQT1NJWCBhbmQgSVNPIEMgc3RhbmRhcmRzOiB2YWx1ZXMKICAgNjktLTk5IGFyZSBtYXBwZWQgdG8gMTk2OS0tMTk5OSwgYW5kIHZhbHVlcyAwLS02OCBhcmUgbWFwcGVkIHRvIDIwMDAtLTIwNjguCiAKLSAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHllYXJzIHdpdGggbGVzcyB0aGFuIDQgZGlnaXRzIGFyZSB0cmVhdGVkCi0gIHNwZWNpYWxseSBieSA6ZnVuYzpgYXNjdGltZWAsIDpmdW5jOmBta3RpbWVgLCBhbmQgOmZ1bmM6YHN0cmZ0aW1lYCBmdW5jdGlvbnMKLSAgdGhhdCBvcGVyYXRlIG9uIGEgOS10dXBsZSBvciA6Y2xhc3M6YHN0cnVjdF90aW1lYCB2YWx1ZXMuIElmIHllYXIgKHRoZSBmaXJzdAotICB2YWx1ZSBpbiB0aGUgOS10dXBsZSkgaXMgc3BlY2lmaWVkIHdpdGggbGVzcyB0aGFuIDQgZGlnaXRzLCBpdHMgaW50ZXJwcmV0YXRpb24KLSAgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgYGBhY2NlcHQyZHllYXJgYCB2YXJpYWJsZS4KLQotICBJZiBgYGFjY2VwdDJkeWVhcmBgIGlzIHRydWUgKGRlZmF1bHQpLCBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYmVoYXZpb3IgaXMKLSAgaW52b2tlZCBhcyBmb2xsb3dzOgotCi0gICAgLSBmb3IgMi1kaWdpdCB5ZWFyLCBjZW50dXJ5IGlzIGd1ZXNzZWQgYWNjb3JkaW5nIHRvIFBPU0lYIHJ1bGVzIGZvcgotICAgICAgYGAleWBgIHN0cnB0aW1lIGZvcm1hdC4gIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBpc3N1ZWQgd2hlbiBjZW50dXJ5Ci0gICAgICBpbmZvcm1hdGlvbiBpcyBndWVzc2VkIGluIHRoaXMgd2F5LgotCi0gICAgLSBmb3IgMy1kaWdpdCBvciBuZWdhdGl2ZSB5ZWFyLCBhIDpleGM6YFZhbHVlRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLSAgSWYgYGBhY2NlcHQyZHllYXJgYCBpcyBmYWxzZSAoc2V0IGJ5IHRoZSBwcm9ncmFtIG9yIGFzIGEgcmVzdWx0IG9mIGEKLSAgbm9uLWVtcHR5IHZhbHVlIGFzc2lnbmVkIHRvIGBgUFlUSE9OWTJLYGAgZW52aXJvbm1lbnQgdmFyaWFibGUpIGFsbCB5ZWFyCi0gIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgZ2l2ZW4uCi0KIC4uIGluZGV4OjoKICAgIHNpbmdsZTogVVRDCiAgICBzaW5nbGU6IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lCkBAIC05Niw2ICs3NywxMSBAQAogCiAgIFNlZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBvYmplY3RzLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIFRoZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCB0eXBlIHdhcyBleHRlbmRlZCB0byBwcm92aWRlIHRoZSA6YXR0cjpgdG1fZ210b2ZmYAorICAgICBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgd2hlbiBwbGF0Zm9ybSBzdXBwb3J0cyBjb3JyZXNwb25kaW5nCisgICAgIGBgc3RydWN0IHRtYGAgbWVtYmVycy4KKwogKiBVc2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRpbWUgcmVwcmVzZW50YXRpb25zOgogCiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTExNywyNCArMTAzLDYgQEAKIAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFuZCBkYXRhIGl0ZW1zOgogCi0KLS4uIGRhdGE6OiBhY2NlcHQyZHllYXIKLQotICAgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdHdvLWRpZ2l0IHllYXIgdmFsdWVzIHdpbGwgYmUKLSAgIG1hcHBlZCB0byAxOTY5LS0yMDY4IHJhbmdlIGJ5IDpmdW5jOmBhc2N0aW1lYCwgOmZ1bmM6YG1rdGltZWAsIGFuZAotICAgOmZ1bmM6YHN0cmZ0aW1lYCBmdW5jdGlvbnMuICBUaGlzIGlzIHRydWUgYnkgZGVmYXVsdCwgYnV0IHdpbGwgYmUKLSAgIHNldCB0byBmYWxzZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OWTJLYCBoYXMKLSAgIGJlZW4gc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZy4gIEl0IG1heSBhbHNvIGJlIG1vZGlmaWVkIGF0IHJ1bgotICAgdGltZS4KLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuMgotICAgICAgTWFwcGluZyBvZiAyLWRpZ2l0IHllYXIgdmFsdWVzIGJ5IDpmdW5jOmBhc2N0aW1lYCwKLSAgICAgIDpmdW5jOmBta3RpbWVgLCBhbmQgOmZ1bmM6YHN0cmZ0aW1lYCBmdW5jdGlvbnMgdG8gMTk2OS0tMjA2OAotICAgICAgcmFuZ2UgaXMgZGVwcmVjYXRlZC4gIFByb2dyYW1zIHRoYXQgbmVlZCB0byBwcm9jZXNzIDItZGlnaXQKLSAgICAgIHllYXJzIHNob3VsZCB1c2UgYGAleWBgIGNvZGUgYXZhaWxhYmxlIGluIDpmdW5jOmBzdHJwdGltZWAKLSAgICAgIGZ1bmN0aW9uIG9yIGNvbnZlcnQgMi1kaWdpdCB5ZWFyIHZhbHVlcyB0byA0LWRpZ2l0IHRoZW1zZWx2ZXMuCi0KLQogLi4gZGF0YTo6IGFsdHpvbmUKIAogICAgVGhlIG9mZnNldCBvZiB0aGUgbG9jYWwgRFNUIHRpbWV6b25lLCBpbiBzZWNvbmRzIHdlc3Qgb2YgVVRDLCBpZiBvbmUgaXMgZGVmaW5lZC4KQEAgLTE1Miw3ICsxMjAsOCBAQAogCiAgICAuLiBub3RlOjoKIAotICAgICAgVW5saWtlIHRoZSBDIGZ1bmN0aW9uIG9mIHRoZSBzYW1lIG5hbWUsIHRoZXJlIGlzIG5vIHRyYWlsaW5nIG5ld2xpbmUuCisgICAgICBVbmxpa2UgdGhlIEMgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSwgOmZ1bmM6YGFzY3RpbWVgIGRvZXMgbm90IGFkZCBhCisgICAgICB0cmFpbGluZyBuZXdsaW5lLgogCiAKIC4uIGZ1bmN0aW9uOjogY2xvY2soKQpAQCAtMTcyLDYgKzE0MSw5NyBAQAogICAgOmM6ZnVuYzpgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXJgLiBUaGUgcmVzb2x1dGlvbiBpcyB0eXBpY2FsbHkgYmV0dGVyIHRoYW4gb25lCiAgICBtaWNyb3NlY29uZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhlIGJlaGF2aW91ciBvZiB0aGlzIGZ1bmN0aW9uIGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtOiB1c2UKKyAgICAgIDpmdW5jOmBwZXJmX2NvdW50ZXJgIG9yIDpmdW5jOmBwcm9jZXNzX3RpbWVgIGluc3RlYWQsIGRlcGVuZGluZyBvbiB5b3VyCisgICAgICByZXF1aXJlbWVudHMsIHRvIGhhdmUgYSB3ZWxsIGRlZmluZWQgYmVoYXZpb3VyLgorCisKKy4uIGZ1bmN0aW9uOjogY2xvY2tfZ2V0cmVzKGNsa19pZCkKKworICAgUmV0dXJuIHRoZSByZXNvbHV0aW9uIChwcmVjaXNpb24pIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgKmNsa19pZCouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBjbG9ja19nZXR0aW1lKGNsa19pZCkKKworICAgUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgKmNsa19pZCouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBjbG9ja19zZXR0aW1lKGNsa19pZCwgdGltZSkKKworICAgU2V0IHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgKmNsa19pZCouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX0hJR0hSRVMKKworICAgVGhlIFNvbGFyaXMgT1MgaGFzIGEgQ0xPQ0tfSElHSFJFUyB0aW1lciB0aGF0IGF0dGVtcHRzIHRvIHVzZSBhbiBvcHRpbWFsCisgICBoYXJkd2FyZSBzb3VyY2UsIGFuZCBtYXkgZ2l2ZSBjbG9zZSB0byBuYW5vc2Vjb25kIHJlc29sdXRpb24uICBDTE9DS19ISUdIUkVTCisgICBpcyB0aGUgbm9uYWRqdXN0YWJsZSwgaGlnaC1yZXNvbHV0aW9uIGNsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFNvbGFyaXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19NT05PVE9OSUMKKworICAgQ2xvY2sgdGhhdCBjYW5ub3QgYmUgc2V0IGFuZCByZXByZXNlbnRzIG1vbm90b25pYyB0aW1lIHNpbmNlIHNvbWUgdW5zcGVjaWZpZWQKKyAgIHN0YXJ0aW5nIHBvaW50LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19NT05PVE9OSUNfUkFXCisKKyAgIFNpbWlsYXIgdG8gOmRhdGE6YENMT0NLX01PTk9UT05JQ2AsIGJ1dCBwcm92aWRlcyBhY2Nlc3MgdG8gYSByYXcKKyAgIGhhcmR3YXJlLWJhc2VkIHRpbWUgdGhhdCBpcyBub3Qgc3ViamVjdCB0byBOVFAgYWRqdXN0bWVudHMuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggMi42LjI4IG9yIGxhdGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisKKyAgIEhpZ2gtcmVzb2x1dGlvbiBwZXItcHJvY2VzcyB0aW1lciBmcm9tIHRoZSBDUFUuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX1JFQUxUSU1FCisKKyAgIFN5c3RlbS13aWRlIHJlYWwtdGltZSBjbG9jay4gIFNldHRpbmcgdGhpcyBjbG9jayByZXF1aXJlcyBhcHByb3ByaWF0ZQorICAgcHJpdmlsZWdlcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKKworICAgVGhyZWFkLXNwZWNpZmljIENQVS10aW1lIGNsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogY3RpbWUoW3NlY3NdKQogCkBAIC0xODYsNiArMjQ2LDMxIEBACiAgICBOb256ZXJvIGlmIGEgRFNUIHRpbWV6b25lIGlzIGRlZmluZWQuCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfY2xvY2tfaW5mbyhuYW1lKQorCisgICBHZXQgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmllZCBjbG9jayBhcyBhIG5hbWVzcGFjZSBvYmplY3QuCisgICBTdXBwb3J0ZWQgY2xvY2sgbmFtZXMgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyB0byByZWFkIHRoZWlyIHZhbHVlCisgICBhcmU6CisKKyAgICogYGAnY2xvY2snYGA6IDpmdW5jOmB0aW1lLmNsb2NrYAorICAgKiBgYCdtb25vdG9uaWMnYGA6IDpmdW5jOmB0aW1lLm1vbm90b25pY2AKKyAgICogYGAncGVyZl9jb3VudGVyJ2BgOiA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgCisgICAqIGBgJ3Byb2Nlc3NfdGltZSdgYDogOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYAorICAgKiBgYCd0aW1lJ2BgOiA6ZnVuYzpgdGltZS50aW1lYAorCisgICBUaGUgcmVzdWx0IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisKKyAgIC0gKmFkanVzdGFibGUqOiBgYFRydWVgYCBpZiB0aGUgY2xvY2sgY2FuIGJlIGNoYW5nZWQgYXV0b21hdGljYWxseSAoZS5nLiBieQorICAgICBhIE5UUCBkYWVtb24pIG9yIG1hbnVhbGx5IGJ5IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciwgYGBGYWxzZWBgIG90aGVyd2lzZQorICAgLSAqaW1wbGVtZW50YXRpb24qOiBUaGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBDIGZ1bmN0aW9uIHVzZWQgdG8gZ2V0CisgICAgIHRoZSBjbG9jayB2YWx1ZQorICAgLSAqbW9ub3RvbmljKjogYGBUcnVlYGAgaWYgdGhlIGNsb2NrIGNhbm5vdCBnbyBiYWNrd2FyZCwKKyAgICAgYGBGYWxzZWBgIG90aGVyd2lzZQorICAgLSAqcmVzb2x1dGlvbio6IFRoZSByZXNvbHV0aW9uIG9mIHRoZSBjbG9jayBpbiBzZWNvbmRzICg6Y2xhc3M6YGZsb2F0YCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnbXRpbWUoW3NlY3NdKQogCiAgICBDb252ZXJ0IGEgdGltZSBleHByZXNzZWQgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggdG8gYSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBpbgpAQCAtMjE1LDYgKzMwMCw0NyBAQAogICAgVGhlIGVhcmxpZXN0IGRhdGUgZm9yIHdoaWNoIGl0IGNhbiBnZW5lcmF0ZSBhIHRpbWUgaXMgcGxhdGZvcm0tZGVwZW5kZW50LgogCiAKKy4uIGZ1bmN0aW9uOjogbW9ub3RvbmljKCkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSAoaW4gZnJhY3Rpb25hbCBzZWNvbmRzKSBvZiBhIG1vbm90b25pYyBjbG9jaywgaS5lLiBhIGNsb2NrCisgICB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLgorICAgVGhlIHJlZmVyZW5jZSBwb2ludCBvZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlCisgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIE9uIFdpbmRvd3MgdmVyc2lvbnMgb2xkZXIgdGhhbiBWaXN0YSwgOmZ1bmM6YG1vbm90b25pY2AgZGV0ZWN0cworICAgOmM6ZnVuYzpgR2V0VGlja0NvdW50YCBpbnRlZ2VyIG92ZXJmbG93ICgzMiBiaXRzLCByb2xsLW92ZXIgYWZ0ZXIgNDkuNyBkYXlzKS4KKyAgIEl0IGluY3JlYXNlcyBhbiBpbnRlcm5hbCBlcG9jaCAocmVmZXJlbmNlIHRpbWUgYnkpIDJcIDpzdXA6YDMyYCBlYWNoIHRpbWUKKyAgIHRoYXQgYW4gb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICBUaGUgZXBvY2ggaXMgc3RvcmVkIGluIHRoZSBwcm9jZXNzLWxvY2FsIHN0YXRlCisgICBhbmQgc28gdGhlIHZhbHVlIG9mIDpmdW5jOmBtb25vdG9uaWNgIG1heSBiZSBkaWZmZXJlbnQgaW4gdHdvIFB5dGhvbgorICAgcHJvY2Vzc2VzIHJ1bm5pbmcgZm9yIG1vcmUgdGhhbiA0OSBkYXlzLiBPbiBtb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiBXaW5kb3dzCisgICBhbmQgb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMsIDpmdW5jOmBtb25vdG9uaWNgIGlzIHN5c3RlbS13aWRlLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MsIE1hYyBPUyBYLCBMaW51eCwgRnJlZUJTRCwgT3BlbkJTRCwgU29sYXJpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwZXJmX2NvdW50ZXIoKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIChpbiBmcmFjdGlvbmFsIHNlY29uZHMpIG9mIGEgcGVyZm9ybWFuY2UgY291bnRlciwgaS5lLiBhCisgICBjbG9jayB3aXRoIHRoZSBoaWdoZXN0IGF2YWlsYWJsZSByZXNvbHV0aW9uIHRvIG1lYXN1cmUgYSBzaG9ydCBkdXJhdGlvbi4gIEl0CisgICBkb2VzIGluY2x1ZGUgdGltZSBlbGFwc2VkIGR1cmluZyBzbGVlcCBhbmQgaXMgc3lzdGVtLXdpZGUuICBUaGUgcmVmZXJlbmNlCisgICBwb2ludCBvZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbgorICAgdGhlIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHJvY2Vzc190aW1lKCkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSAoaW4gZnJhY3Rpb25hbCBzZWNvbmRzKSBvZiB0aGUgc3VtIG9mIHRoZSBzeXN0ZW0gYW5kIHVzZXIKKyAgIENQVSB0aW1lIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRpbWUgZWxhcHNlZCBkdXJpbmcKKyAgIHNsZWVwLiAgSXQgaXMgcHJvY2Vzcy13aWRlIGJ5IGRlZmluaXRpb24uICBUaGUgcmVmZXJlbmNlIHBvaW50IG9mIHRoZQorICAgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVzdWx0cworICAgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBmdW5jdGlvbjo6IHNsZWVwKHNlY3MpCiAKICAgIFN1c3BlbmQgZXhlY3V0aW9uIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMuICBUaGUgYXJndW1lbnQgbWF5IGJlIGEKQEAgLTMwOCw5ICs0MzQsMTUgQEAKICAgIHwgYGAleWBgICAgIHwgWWVhciB3aXRob3V0IGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlciAgICAgICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIHwgWzAwLDk5XS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLSAgIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlci4gICAgICAgICB8IFwoNCkgIHwKKyAgIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlci4gICAgICAgICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgIHwgYGAlemBgICAgIHwgVGltZSB6b25lIG9mZnNldCBpbmRpY2F0aW5nIGEgcG9zaXRpdmUgb3IgICAgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgbmVnYXRpdmUgdGltZSBkaWZmZXJlbmNlIGZyb20gVVRDL0dNVCBvZiB0aGUgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgZm9ybSArSEhNTSBvciAtSEhNTSwgd2hlcmUgSCByZXByZXNlbnRzIGRlY2ltYWx8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgaG91ciBkaWdpdHMgYW5kIE0gcmVwcmVzZW50cyBkZWNpbWFsIG1pbnV0ZSAgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgZGlnaXRzIFstMjM6NTksICsyMzo1OV0uICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKyAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKICAgIHwgYGAlWmBgICAgIHwgVGltZSB6b25lIG5hbWUgKG5vIGNoYXJhY3RlcnMgaWYgbm8gdGltZSB6b25lICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIHwgZXhpc3RzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKQEAgLTMzMiwxMiArNDY0LDYgQEAKICAgICAgIFdoZW4gdXNlZCB3aXRoIHRoZSA6ZnVuYzpgc3RycHRpbWVgIGZ1bmN0aW9uLCBgYCVVYGAgYW5kIGBgJVdgYCBhcmUgb25seSB1c2VkIGluCiAgICAgICBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgogCi0gICAoNCkKLSAgICAgIFByb2R1Y2VzIGRpZmZlcmVudCByZXN1bHRzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YKLSAgICAgIGBgdGltZS5hY2NlcHQyZHllYXJgYCB2YXJpYWJsZS4gIFNlZSA6cmVmOmBZZWFyIDIwMDAgKFkySykKLSAgICAgIGlzc3VlcyA8dGltZS15Mmtpc3N1ZXM+YCBmb3IgZGV0YWlscy4KLQotCiAgICBIZXJlIGlzIGFuIGV4YW1wbGUsIGEgZm9ybWF0IGZvciBkYXRlcyBjb21wYXRpYmxlIHdpdGggdGhhdCBzcGVjaWZpZWQgIGluIHRoZQogICAgOnJmYzpgMjgyMmAgSW50ZXJuZXQgZW1haWwgc3RhbmRhcmQuICBbI11fIDo6CiAKQEAgLTQxNiwxMCArNTQyLDEzIEBACiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOCAgICAgfCA6YXR0cjpgdG1faXNkc3RgICB8IDAsIDEgb3IgLTE7IHNlZSBiZWxvdyAgICAgICAgICAgfAogICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IE4vQSAgIHwgOmF0dHI6YHRtX3pvbmVgICAgfCBhYmJyZXZpYXRpb24gb2YgdGltZXpvbmUgbmFtZSAgIHwKKyAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBOL0EgICB8IDphdHRyOmB0bV9nbXRvZmZgIHwgb2Zmc2V0IGVhc3Qgb2YgVVRDIGluIHNlY29uZHMgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgQyBzdHJ1Y3R1cmUsIHRoZSBtb250aCB2YWx1ZSBpcyBhIHJhbmdlIG9mIFsxLCAxMl0sIG5vdAotICAgWzAsIDExXS4gIEEgeWVhciB2YWx1ZSB3aWxsIGJlIGhhbmRsZWQgYXMgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YFllYXIgMjAwMAotICAgKFkySykgaXNzdWVzIDx0aW1lLXkya2lzc3Vlcz5gIGFib3ZlLiAgQSBgYC0xYGAgYXJndW1lbnQgYXMgdGhlIGRheWxpZ2h0CisgICBbMCwgMTFdLiAgQSBgYC0xYGAgYXJndW1lbnQgYXMgdGhlIGRheWxpZ2h0CiAgICBzYXZpbmdzIGZsYWcsIHBhc3NlZCB0byA6ZnVuYzpgbWt0aW1lYCB3aWxsIHVzdWFsbHkgcmVzdWx0IGluIHRoZSBjb3JyZWN0CiAgICBkYXlsaWdodCBzYXZpbmdzIHN0YXRlIHRvIGJlIGZpbGxlZCBpbi4KIApAQCAtNDI3LDYgKzU1Niw5IEBACiAgICA6Y2xhc3M6YHN0cnVjdF90aW1lYCwgb3IgaGF2aW5nIGVsZW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlLCBhCiAgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICA6YXR0cjpgdG1fZ210b2ZmYCBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgYXJlIGF2YWxpYWJsZSBvbiBwbGF0Zm9ybXMKKyAgICAgd2l0aCBDIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4gYGBzdHJ1Y3QgdG1gYC4KIAogLi4gZnVuY3Rpb246OiB0aW1lKCkKIApAQCAtNDM3LDcgKzU2OSw2IEBACiAgICBsb3dlciB2YWx1ZSB0aGFuIGEgcHJldmlvdXMgY2FsbCBpZiB0aGUgc3lzdGVtIGNsb2NrIGhhcyBiZWVuIHNldCBiYWNrIGJldHdlZW4KICAgIHRoZSB0d28gY2FsbHMuCiAKLQogLi4gZGF0YTo6IHRpbWV6b25lCiAKICAgIFRoZSBvZmZzZXQgb2YgdGhlIGxvY2FsIChub24tRFNUKSB0aW1lem9uZSwgaW4gc2Vjb25kcyB3ZXN0IG9mIFVUQyAobmVnYXRpdmUgaW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CmluZGV4IDFlNzM0ZGYuLjY5ODliMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdApAQCAtMTA0LDEzICsxMDQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGRlZmF1bHRfdGltZXIoKQogCi0gICBEZWZpbmUgYSBkZWZhdWx0IHRpbWVyLCBpbiBhIHBsYXRmb3JtIHNwZWNpZmljIG1hbm5lci4gT24gV2luZG93cywKLSAgIDpmdW5jOmB0aW1lLmNsb2NrYCBoYXMgbWljcm9zZWNvbmQgZ3JhbnVsYXJpdHkgYnV0IDpmdW5jOmB0aW1lLnRpbWVgJ3MKLSAgIGdyYW51bGFyaXR5IGlzIDEvNjB0aCBvZiBhIHNlY29uZDsgb24gVW5peCwgOmZ1bmM6YHRpbWUuY2xvY2tgIGhhcyAxLzEwMHRoIG9mCi0gICBhIHNlY29uZCBncmFudWxhcml0eSBhbmQgOmZ1bmM6YHRpbWUudGltZWAgaXMgbXVjaCBtb3JlIHByZWNpc2UuICBPbiBlaXRoZXIKLSAgIHBsYXRmb3JtLCA6ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyZXMgd2FsbCBjbG9jayB0aW1lLCBub3QgdGhlIENQVQotICAgdGltZS4gIFRoaXMgbWVhbnMgdGhhdCBvdGhlciBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgc2FtZSBjb21wdXRlciBtYXkKLSAgIGludGVyZmVyZSB3aXRoIHRoZSB0aW1pbmcuCisgICBUaGUgZGVmYXVsdCB0aW1lciwgd2hpY2ggaXMgYWx3YXlzIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAuCiAKIAogLi4gZnVuY3Rpb246OiByZXBlYXQoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PGRlZmF1bHQgdGltZXI+LCByZXBlYXQ9MywgbnVtYmVyPTEwMDAwMDApCkBAIC0xNDksMTMgKzE0MywyMCBAQAogCiAgICBzdGF0ZW1lbnQgdG8gYmUgZXhlY3V0ZWQgb25jZSBpbml0aWFsbHkgKGRlZmF1bHQgYGBwYXNzYGApCiAKKy4uIGNtZG9wdGlvbjo6IC1wLCAtLXByb2Nlc3MKKworICAgbWVhc3VyZSBwcm9jZXNzIHRpbWUsIG5vdCB3YWxsY2xvY2sgdGltZSwgdXNpbmcgOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYAorICAgaW5zdGVhZCBvZiA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgLCB3aGljaCBpcyB0aGUgZGVmYXVsdAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gY21kb3B0aW9uOjogLXQsIC0tdGltZQogCi0gICB1c2UgOmZ1bmM6YHRpbWUudGltZWAgKGRlZmF1bHQgb24gYWxsIHBsYXRmb3JtcyBidXQgV2luZG93cykKKyAgIHVzZSA6ZnVuYzpgdGltZS50aW1lYCAoZGVwcmVjYXRlZCkKIAogLi4gY21kb3B0aW9uOjogLWMsIC0tY2xvY2sKIAotICAgdXNlIDpmdW5jOmB0aW1lLmNsb2NrYCAoZGVmYXVsdCBvbiBXaW5kb3dzKQorICAgdXNlIDpmdW5jOmB0aW1lLmNsb2NrYCAoZGVwcmVjYXRlZCkKIAogLi4gY21kb3B0aW9uOjogLXYsIC0tdmVyYm9zZQogCkBAIC0xNzMsMTIgKzE3NCwxMSBAQAogSWYgOm9wdGlvbjpgLW5gIGlzIG5vdCBnaXZlbiwgYSBzdWl0YWJsZSBudW1iZXIgb2YgbG9vcHMgaXMgY2FsY3VsYXRlZCBieSB0cnlpbmcKIHN1Y2Nlc3NpdmUgcG93ZXJzIG9mIDEwIHVudGlsIHRoZSB0b3RhbCB0aW1lIGlzIGF0IGxlYXN0IDAuMiBzZWNvbmRzLgogCi06ZnVuYzpgZGVmYXVsdF90aW1lcmAgbWVhc3VyYXRpb25zIGNhbiBiZSBhZmZlY3RlZCBieSBvdGhlciBwcm9ncmFtcyBydW5uaW5nIG9uCi10aGUgc2FtZSBtYWNoaW5lLCBzbwotdGhlIGJlc3QgdGhpbmcgdG8gZG8gd2hlbiBhY2N1cmF0ZSB0aW1pbmcgaXMgbmVjZXNzYXJ5IGlzIHRvIHJlcGVhdAotdGhlIHRpbWluZyBhIGZldyB0aW1lcyBhbmQgdXNlIHRoZSBiZXN0IHRpbWUuICBUaGUgOm9wdGlvbjpgLXJgIG9wdGlvbiBpcyBnb29kCi1mb3IgdGhpczsgdGhlIGRlZmF1bHQgb2YgMyByZXBldGl0aW9ucyBpcyBwcm9iYWJseSBlbm91Z2ggaW4gbW9zdCBjYXNlcy4gIE9uCi1Vbml4LCB5b3UgY2FuIHVzZSA6ZnVuYzpgdGltZS5jbG9ja2AgdG8gbWVhc3VyZSBDUFUgdGltZS4KKzpmdW5jOmBkZWZhdWx0X3RpbWVyYCBtZWFzdXJlbWVudHMgY2FuIGJlIGFmZmVjdGVkIGJ5IG90aGVyIHByb2dyYW1zIHJ1bm5pbmcgb24KK3RoZSBzYW1lIG1hY2hpbmUsIHNvIHRoZSBiZXN0IHRoaW5nIHRvIGRvIHdoZW4gYWNjdXJhdGUgdGltaW5nIGlzIG5lY2Vzc2FyeSBpcwordG8gcmVwZWF0IHRoZSB0aW1pbmcgYSBmZXcgdGltZXMgYW5kIHVzZSB0aGUgYmVzdCB0aW1lLiAgVGhlIDpvcHRpb246YC1yYAorb3B0aW9uIGlzIGdvb2QgZm9yIHRoaXM7IHRoZSBkZWZhdWx0IG9mIDMgcmVwZXRpdGlvbnMgaXMgcHJvYmFibHkgZW5vdWdoIGluCittb3N0IGNhc2VzLiAgWW91IGNhbiB1c2UgOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYCB0byBtZWFzdXJlIENQVSB0aW1lLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGtpbnRlci5yc3QgYi9Eb2MvbGlicmFyeS90a2ludGVyLnJzdAppbmRleCBmNmUwOTVhLi44M2E1Mzc1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90a2ludGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS90a2ludGVyLnJzdApAQCAtMTk0LDM1ICsxOTQsMzAgQEAKIAogOjoKIAotICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCisgICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKIAotICAgY2xhc3MgQXBwbGljYXRpb24oRnJhbWUpOgotICAgICAgIGRlZiBzYXlfaGkoc2VsZik6Ci0gICAgICAgICAgIHByaW50KCJoaSB0aGVyZSwgZXZlcnlvbmUhIikKKyAgICBjbGFzcyBBcHBsaWNhdGlvbih0ay5GcmFtZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSk6CisgICAgICAgICAgICB0ay5GcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIpCisgICAgICAgICAgICBzZWxmLnBhY2soKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVXaWRnZXRzKCkKIAotICAgICAgIGRlZiBjcmVhdGVXaWRnZXRzKHNlbGYpOgotICAgICAgICAgICBzZWxmLlFVSVQgPSBCdXR0b24oc2VsZikKLSAgICAgICAgICAgc2VsZi5RVUlUWyJ0ZXh0Il0gPSAiUVVJVCIKLSAgICAgICAgICAgc2VsZi5RVUlUWyJmZyJdID0gInJlZCIKLSAgICAgICAgICAgc2VsZi5RVUlUWyJjb21tYW5kIl0gPSBzZWxmLnF1aXQKKyAgICAgICAgZGVmIGNyZWF0ZVdpZGdldHMoc2VsZik6CisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlID0gdGsuQnV0dG9uKHNlbGYpCisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJ0ZXh0Il0gPSAiSGVsbG8gV29ybGRcbihjbGljayBtZSkiCisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJjb21tYW5kIl0gPSBzZWxmLnNheV9oaQorICAgICAgICAgICAgc2VsZi5oaV90aGVyZS5wYWNrKHNpZGU9InRvcCIpCiAKLSAgICAgICAgICAgc2VsZi5RVUlULnBhY2soeyJzaWRlIjogImxlZnQifSkKKyAgICAgICAgICAgIHNlbGYuUVVJVCA9IHRrLkJ1dHRvbihzZWxmLCB0ZXh0PSJRVUlUIiwgZmc9InJlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXJvb3QuZGVzdHJveSkKKyAgICAgICAgICAgIHNlbGYuUVVJVC5wYWNrKHNpZGU9ImJvdHRvbSIpCiAKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZSA9IEJ1dHRvbihzZWxmKQotICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJ0ZXh0Il0gPSAiSGVsbG8iLAotICAgICAgICAgICBzZWxmLmhpX3RoZXJlWyJjb21tYW5kIl0gPSBzZWxmLnNheV9oaQorICAgICAgICBkZWYgc2F5X2hpKHNlbGYpOgorICAgICAgICAgICAgcHJpbnQoImhpIHRoZXJlLCBldmVyeW9uZSEiKQogCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmUucGFjayh7InNpZGUiOiAibGVmdCJ9KQotCi0gICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lKToKLSAgICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyKQotICAgICAgICAgICBzZWxmLnBhY2soKQotICAgICAgICAgICBzZWxmLmNyZWF0ZVdpZGdldHMoKQotCi0gICByb290ID0gVGsoKQotICAgYXBwID0gQXBwbGljYXRpb24obWFzdGVyPXJvb3QpCi0gICBhcHAubWFpbmxvb3AoKQotICAgcm9vdC5kZXN0cm95KCkKKyAgICByb290ID0gdGsuVGsoKQorICAgIGFwcCA9IEFwcGxpY2F0aW9uKG1hc3Rlcj1yb290KQorICAgIGFwcC5tYWlubG9vcCgpCiAKIAogQSAoVmVyeSkgUXVpY2sgTG9vayBhdCBUY2wvVGsKQEAgLTc1NSwyMiArNzUwLDMyIEBACiAgICBkaXNwbGF5ZWQuICBZb3UgY2FuIHVzZSB0aGVzZSA6bW9kOmB0a2ludGVyYCBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZXNlIHNwZWNpYWwKICAgIHBvaW50cyBpbiB0ZXh0IHdpZGdldHM6CiAKLSAgIEF0RW5kKCkKKy4uIGZ1bmN0aW9uOjogQXRFbmQoKQogICAgICAgcmVmZXJzIHRvIHRoZSBsYXN0IHBvc2l0aW9uIGluIHRoZSB0ZXh0CiAKLSAgIEF0SW5zZXJ0KCkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdEluc2VydCgpCiAgICAgICByZWZlcnMgdG8gdGhlIHBvaW50IHdoZXJlIHRoZSB0ZXh0IGN1cnNvciBpcwogCi0gICBBdFNlbEZpcnN0KCkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdFNlbEZpcnN0KCkKICAgICAgIGluZGljYXRlcyB0aGUgYmVnaW5uaW5nIHBvaW50IG9mIHRoZSBzZWxlY3RlZCB0ZXh0CiAKLSAgIEF0U2VsTGFzdCgpCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXRTZWxMYXN0KCkKICAgICAgIGRlbm90ZXMgdGhlIGxhc3QgcG9pbnQgb2YgdGhlIHNlbGVjdGVkIHRleHQgYW5kIGZpbmFsbHkKIAotICAgQXQoeFssIHldKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0KHhbLCB5XSkKICAgICAgIHJlZmVycyB0byB0aGUgY2hhcmFjdGVyIGF0IHBpeGVsIGxvY2F0aW9uICp4KiwgKnkqICh3aXRoICp5KiBub3QgdXNlZCBpbiB0aGUKICAgICAgIGNhc2Ugb2YgYSB0ZXh0IGVudHJ5IHdpZGdldCwgd2hpY2ggY29udGFpbnMgYSBzaW5nbGUgbGluZSBvZiB0ZXh0KS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiBUZXh0IHdpZGdldCBpbmRleGVzCiAgICBUaGUgaW5kZXggbm90YXRpb24gZm9yIFRleHQgd2lkZ2V0cyBpcyB2ZXJ5IHJpY2ggYW5kIGlzIGJlc3QgZGVzY3JpYmVkIGluIHRoZSBUawogICAgbWFuIHBhZ2VzLgpAQCAtODE4LDQgKzgyMywzIEBACiByZWZlcmVuY2UgdG8gdGhlIGltYWdlLiBXaGVuIHRoZSBsYXN0IFB5dGhvbiByZWZlcmVuY2UgdG8gdGhlIGltYWdlIG9iamVjdCBpcwogZGVsZXRlZCwgdGhlIGltYWdlIGRhdGEgaXMgZGVsZXRlZCBhcyB3ZWxsLCBhbmQgVGsgd2lsbCBkaXNwbGF5IGFuIGVtcHR5IGJveAogd2hlcmV2ZXIgdGhlIGltYWdlIHdhcyB1c2VkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QgYi9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QKaW5kZXggNzA5MTljYS4uMzdkOWY0MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdApAQCAtMTcsOSArMTcsMTEgQEAKIAogVG8gc2ltcGxpZnkgdG9rZW4gc3RyZWFtIGhhbmRsaW5nLCBhbGwgOnJlZjpgb3BlcmF0b3JzYCBhbmQgOnJlZjpgZGVsaW1pdGVyc2AKIHRva2VucyBhcmUgcmV0dXJuZWQgdXNpbmcgdGhlIGdlbmVyaWMgOmRhdGE6YHRva2VuLk9QYCB0b2tlbiB0eXBlLiAgVGhlIGV4YWN0Ci10eXBlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSB0b2tlbiBgYHN0cmluZ2BgIGZpZWxkIG9uIHRoZQotOnRlcm06YG5hbWVkIHR1cGxlYCByZXR1cm5lZCBmcm9tIDpmdW5jOmB0b2tlbml6ZS50b2tlbml6ZWAgZm9yIHRoZSBjaGFyYWN0ZXIKLXNlcXVlbmNlIHRoYXQgaWRlbnRpZmllcyBhIHNwZWNpZmljIG9wZXJhdG9yIHRva2VuLgordHlwZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgYGBleGFjdF90eXBlYGAgcHJvcGVydHkgb24gdGhlCis6dGVybTpgbmFtZWQgdHVwbGVgIHJldHVybmVkIGZyb20gOmZ1bmM6YHRva2VuaXplLnRva2VuaXplYC4KKworVG9rZW5pemluZyBJbnB1dAorLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBpcyBhIDp0ZXJtOmBnZW5lcmF0b3JgOgogCkBAIC0zOSw5ICs0MSwxNyBAQAogICAgcmV0dXJuZWQgYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIHdpdGggdGhlIGZpZWxkIG5hbWVzOgogICAgYGB0eXBlIHN0cmluZyBzdGFydCBlbmQgbGluZWBgLgogCisgICBUaGUgcmV0dXJuZWQgOnRlcm06YG5hbWVkIHR1cGxlYCBoYXMgYSBhZGRpdGlvbmFsIHByb3BlcnR5IG5hbWVkCisgICBgYGV4YWN0X3R5cGVgYCB0aGF0IGNvbnRhaW5zIHRoZSBleGFjdCBvcGVyYXRvciB0eXBlIGZvcgorICAgOmRhdGE6YHRva2VuLk9QYCB0b2tlbnMuICBGb3IgYWxsIG90aGVyIHRva2VuIHR5cGVzIGBgZXhhY3RfdHlwZWBgCisgICBlcXVhbHMgdGhlIG5hbWVkIHR1cGxlIGBgdHlwZWBgIGZpZWxkLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgbmFtZWQgdHVwbGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgYGBleGFjdF90eXBlYGAuCisKICAgIDpmdW5jOmB0b2tlbml6ZWAgZGV0ZXJtaW5lcyB0aGUgc291cmNlIGVuY29kaW5nIG9mIHRoZSBmaWxlIGJ5IGxvb2tpbmcgZm9yIGEKICAgIFVURi04IEJPTSBvciBlbmNvZGluZyBjb29raWUsIGFjY29yZGluZyB0byA6cGVwOmAyNjNgLgogCkBAIC0xMjIsNiArMTMyLDM4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBfdG9rZW5pemUtY2xpOgorCitDb21tYW5kLUxpbmUgVXNhZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIDptb2Q6YHRva2VuaXplYCBtb2R1bGUgY2FuIGJlIGV4ZWN1dGVkIGFzIGEgc2NyaXB0IGZyb20gdGhlIGNvbW1hbmQgbGluZS4KK0l0IGlzIGFzIHNpbXBsZSBhczoKKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgIHB5dGhvbiAtbSB0b2tlbml6ZSBbLWVdIFtmaWxlbmFtZS5weV0KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhY2NlcHRlZDoKKworLi4gcHJvZ3JhbTo6IHRva2VuaXplCisKKy4uIGNtZG9wdGlvbjo6IC1oLCAtLWhlbHAKKworICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorCisuLiBjbWRvcHRpb246OiAtZSwgLS1leGFjdAorCisgICBkaXNwbGF5IHRva2VuIG5hbWVzIHVzaW5nIHRoZSBleGFjdCB0eXBlCisKK0lmIDpmaWxlOmBmaWxlbmFtZS5weWAgaXMgc3BlY2lmaWVkIGl0cyBjb250ZW50cyBhcmUgdG9rZW5pemVkIHRvIHN0ZG91dC4KK090aGVyd2lzZSwgdG9rZW5pemF0aW9uIGlzIHBlcmZvcm1lZCBvbiBzdGRpbi4KKworRXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCiBFeGFtcGxlIG9mIGEgc2NyaXB0IHJld3JpdGVyIHRoYXQgdHJhbnNmb3JtcyBmbG9hdCBsaXRlcmFscyBpbnRvIERlY2ltYWwKIG9iamVjdHM6OgogCkBAIC0xNjQsMyArMjA2LDYzIEBACiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgodG9rbnVtLCB0b2t2YWwpKQogICAgICAgICByZXR1cm4gdW50b2tlbml6ZShyZXN1bHQpLmRlY29kZSgndXRmLTgnKQogCitFeGFtcGxlIG9mIHRva2VuaXppbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgVGhlIHNjcmlwdDo6CisKKyAgICBkZWYgc2F5X2hlbGxvKCk6CisgICAgICAgIHByaW50KCJIZWxsbywgV29ybGQhIikKKworICAgIHNheV9oZWxsbygpCisKK3dpbGwgYmUgdG9rZW5pemVkIHRvIHRoZSBmb2xsb3dpbmcgb3V0cHV0IHdoZXJlIHRoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIHJhbmdlCitvZiB0aGUgbGluZS9jb2x1bW4gY29vcmRpbmF0ZXMgd2hlcmUgdGhlIHRva2VuIGlzIGZvdW5kLCB0aGUgc2Vjb25kIGNvbHVtbiBpcwordGhlIG5hbWUgb2YgdGhlIHRva2VuLCBhbmQgdGhlIGZpbmFsIGNvbHVtbiBpcyB0aGUgdmFsdWUgb2YgdGhlIHRva2VuIChpZiBhbnkpCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAgJCBweXRob24gLW0gdG9rZW5pemUgaGVsbG8ucHkKKyAgICAwLDAtMCwwOiAgICAgICAgICAgIEVOQ09ESU5HICAgICAgICd1dGYtOCcKKyAgICAxLDAtMSwzOiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdkZWYnCisgICAgMSw0LTEsMTM6ICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDEsMTMtMSwxNDogICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgMSwxNC0xLDE1OiAgICAgICAgICBPUCAgICAgICAgICAgICAnKScKKyAgICAxLDE1LTEsMTY6ICAgICAgICAgIE9QICAgICAgICAgICAgICc6JworICAgIDEsMTYtMSwxNzogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDIsMC0yLDQ6ICAgICAgICAgICAgSU5ERU5UICAgICAgICAgJyAgICAnCisgICAgMiw0LTIsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAncHJpbnQnCisgICAgMiw5LTIsMTA6ICAgICAgICAgICBPUCAgICAgICAgICAgICAnKCcKKyAgICAyLDEwLTIsMjU6ICAgICAgICAgIFNUUklORyAgICAgICAgICciSGVsbG8sIFdvcmxkISInCisgICAgMiwyNS0yLDI2OiAgICAgICAgICBPUCAgICAgICAgICAgICAnKScKKyAgICAyLDI2LTIsMjc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAzLDAtMywxOiAgICAgICAgICAgIE5MICAgICAgICAgICAgICdcbicKKyAgICA0LDAtNCwwOiAgICAgICAgICAgIERFREVOVCAgICAgICAgICcnCisgICAgNCwwLTQsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDQsOS00LDEwOiAgICAgICAgICAgT1AgICAgICAgICAgICAgJygnCisgICAgNCwxMC00LDExOiAgICAgICAgICBPUCAgICAgICAgICAgICAnKScKKyAgICA0LDExLTQsMTI6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICA1LDAtNSwwOiAgICAgICAgICAgIEVORE1BUktFUiAgICAgICcnCisKK1RoZSBleGFjdCB0b2tlbiB0eXBlIG5hbWVzIGNhbiBiZSBkaXNwbGF5ZWQgdXNpbmcgdGhlIGBgLWVgYCBvcHRpb246CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAgJCBweXRob24gLW0gdG9rZW5pemUgLWUgaGVsbG8ucHkKKyAgICAwLDAtMCwwOiAgICAgICAgICAgIEVOQ09ESU5HICAgICAgICd1dGYtOCcKKyAgICAxLDAtMSwzOiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdkZWYnCisgICAgMSw0LTEsMTM6ICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDEsMTMtMSwxNDogICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgMSwxNC0xLDE1OiAgICAgICAgICBSUEFSICAgICAgICAgICAnKScKKyAgICAxLDE1LTEsMTY6ICAgICAgICAgIENPTE9OICAgICAgICAgICc6JworICAgIDEsMTYtMSwxNzogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDIsMC0yLDQ6ICAgICAgICAgICAgSU5ERU5UICAgICAgICAgJyAgICAnCisgICAgMiw0LTIsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAncHJpbnQnCisgICAgMiw5LTIsMTA6ICAgICAgICAgICBMUEFSICAgICAgICAgICAnKCcKKyAgICAyLDEwLTIsMjU6ICAgICAgICAgIFNUUklORyAgICAgICAgICciSGVsbG8sIFdvcmxkISInCisgICAgMiwyNS0yLDI2OiAgICAgICAgICBSUEFSICAgICAgICAgICAnKScKKyAgICAyLDI2LTIsMjc6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICAzLDAtMywxOiAgICAgICAgICAgIE5MICAgICAgICAgICAgICdcbicKKyAgICA0LDAtNCwwOiAgICAgICAgICAgIERFREVOVCAgICAgICAgICcnCisgICAgNCwwLTQsOTogICAgICAgICAgICBOQU1FICAgICAgICAgICAnc2F5X2hlbGxvJworICAgIDQsOS00LDEwOiAgICAgICAgICAgTFBBUiAgICAgICAgICAgJygnCisgICAgNCwxMC00LDExOiAgICAgICAgICBSUEFSICAgICAgICAgICAnKScKKyAgICA0LDExLTQsMTI6ICAgICAgICAgIE5FV0xJTkUgICAgICAgICdcbicKKyAgICA1LDAtNSwwOiAgICAgICAgICAgIEVORE1BUktFUiAgICAgICcnCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKaW5kZXggZDRhNzZiNi4uNjk1NDgwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdApAQCAtMSw1ICsxLDUgQEAKLTptb2Q6YHR5cGVzYCAtLS0gTmFtZXMgZm9yIGJ1aWx0LWluIHR5cGVzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOm1vZDpgdHlwZXNgIC0tLSBEeW5hbWljIHR5cGUgY3JlYXRpb24gYW5kIG5hbWVzIGZvciBidWlsdC1pbiB0eXBlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiB0eXBlcwogICAgOnN5bm9wc2lzOiBOYW1lcyBmb3IgYnVpbHQtaW4gdHlwZXMuCkBAIC04LDIwICs4LDc3IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGRlZmluZXMgbmFtZXMgZm9yIHNvbWUgb2JqZWN0IHR5cGVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIHN0YW5kYXJkCitUaGlzIG1vZHVsZSBkZWZpbmVzIHV0aWxpdHkgZnVuY3Rpb24gdG8gYXNzaXN0IGluIGR5bmFtaWMgY3JlYXRpb24gb2YKK25ldyB0eXBlcy4KKworSXQgYWxzbyBkZWZpbmVzIG5hbWVzIGZvciBzb21lIG9iamVjdCB0eXBlcyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZAogUHl0aG9uIGludGVycHJldGVyLCBidXQgbm90IGV4cG9zZWQgYXMgYnVpbHRpbnMgbGlrZSA6Y2xhc3M6YGludGAgb3IKLTpjbGFzczpgc3RyYCBhcmUuICBBbHNvLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHNvbWUgb2YgdGhlIHR5cGVzIHRoYXQgYXJpc2UKLXRyYW5zcGFyZW50bHkgZHVyaW5nIHByb2Nlc3Npbmcgc3VjaCBhcyB0aGUgYGBsaXN0aXRlcmF0b3JgYCB0eXBlLgorOmNsYXNzOmBzdHJgIGFyZS4KIAotVHlwaWNhbCB1c2UgaXMgZm9yIDpmdW5jOmBpc2luc3RhbmNlYCBvciA6ZnVuYzpgaXNzdWJjbGFzc2AgY2hlY2tzLgogCi1UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBuYW1lczoKK0R5bmFtaWMgVHlwZSBDcmVhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogbmV3X2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUsIGV4ZWNfYm9keT1Ob25lKQorCisgICBDcmVhdGVzIGEgY2xhc3Mgb2JqZWN0IGR5bmFtaWNhbGx5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MuCisKKyAgIFRoZSBmaXJzdCB0aHJlZSBhcmd1bWVudHMgYXJlIHRoZSBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCBhIGNsYXNzCisgICBkZWZpbml0aW9uIGhlYWRlcjogdGhlIGNsYXNzIG5hbWUsIHRoZSBiYXNlIGNsYXNzZXMgKGluIG9yZGVyKSwgdGhlCisgICBrZXl3b3JkIGFyZ3VtZW50cyAoc3VjaCBhcyBgYG1ldGFjbGFzc2BgKS4KKworICAgVGhlICpleGVjX2JvZHkqIGFyZ3VtZW50IGlzIGEgY2FsbGJhY2sgdGhhdCBpcyB1c2VkIHRvIHBvcHVsYXRlIHRoZQorICAgZnJlc2hseSBjcmVhdGVkIGNsYXNzIG5hbWVzcGFjZS4gSXQgc2hvdWxkIGFjY2VwdCB0aGUgY2xhc3MgbmFtZXNwYWNlCisgICBhcyBpdHMgc29sZSBhcmd1bWVudCBhbmQgdXBkYXRlIHRoZSBuYW1lc3BhY2UgZGlyZWN0bHkgd2l0aCB0aGUgY2xhc3MKKyAgIGNvbnRlbnRzLiBJZiBubyBjYWxsYmFjayBpcyBwcm92aWRlZCwgaXQgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyBwYXNzaW5nCisgICBpbiBgYGxhbWJkYSBuczogbnNgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogcHJlcGFyZV9jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lKQorCisgICBDYWxjdWxhdGVzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgYW5kIGNyZWF0ZXMgdGhlIGNsYXNzIG5hbWVzcGFjZS4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIGEgY2xhc3MgZGVmaW5pdGlvbiBoZWFkZXI6CisgICB0aGUgY2xhc3MgbmFtZSwgdGhlIGJhc2UgY2xhc3NlcyAoaW4gb3JkZXIpIGFuZCB0aGUga2V5d29yZCBhcmd1bWVudHMKKyAgIChzdWNoIGFzIGBgbWV0YWNsYXNzYGApLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgMy10dXBsZTogYGBtZXRhY2xhc3MsIG5hbWVzcGFjZSwga3dkc2BgCisKKyAgICptZXRhY2xhc3MqIGlzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MsICpuYW1lc3BhY2UqIGlzIHRoZQorICAgcHJlcGFyZWQgY2xhc3MgbmFtZXNwYWNlIGFuZCAqa3dkcyogaXMgYW4gdXBkYXRlZCBjb3B5IG9mIHRoZSBwYXNzZWQKKyAgIGluICprd2RzKiBhcmd1bWVudCB3aXRoIGFueSBgYCdtZXRhY2xhc3MnYGAgZW50cnkgcmVtb3ZlZC4gSWYgbm8gKmt3ZHMqCisgICBhcmd1bWVudCBpcyBwYXNzZWQgaW4sIHRoaXMgd2lsbCBiZSBhbiBlbXB0eSBkaWN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gc2VlYWxzbzo6CisKKyAgIDpyZWY6YG1ldGFjbGFzc2VzYAorICAgICAgRnVsbCBkZXRhaWxzIG9mIHRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIHN1cHBvcnRlZCBieSB0aGVzZSBmdW5jdGlvbnMKKworICAgOnBlcDpgMzExNWAgLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMAorICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rCisKKworU3RhbmRhcmQgSW50ZXJwcmV0ZXIgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIG5hbWVzIGZvciBtYW55IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSByZXF1aXJlZCB0bworaW1wbGVtZW50IGEgUHl0aG9uIGludGVycHJldGVyLiBJdCBkZWxpYmVyYXRlbHkgYXZvaWRzIGluY2x1ZGluZyBzb21lIG9mCit0aGUgdHlwZXMgdGhhdCBhcmlzZSBvbmx5IGluY2lkZW50YWxseSBkdXJpbmcgcHJvY2Vzc2luZyBzdWNoIGFzIHRoZQorYGBsaXN0aXRlcmF0b3JgYCB0eXBlLgorCitUeXBpY2FsIHVzZSBvZiB0aGVzZSBuYW1lcyBpcyBmb3IgOmZ1bmM6YGlzaW5zdGFuY2VgIG9yCis6ZnVuYzpgaXNzdWJjbGFzc2AgY2hlY2tzLgorCitTdGFuZGFyZCBuYW1lcyBhcmUgZGVmaW5lZCBmb3IgdGhlIGZvbGxvd2luZyB0eXBlczoKIAogLi4gZGF0YTo6IEZ1bmN0aW9uVHlwZQogICAgICAgICAgIExhbWJkYVR5cGUKIAotICAgVGhlIHR5cGUgb2YgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQgZnVuY3Rpb25zIGNyZWF0ZWQgYnkgOmtleXdvcmQ6YGxhbWJkYWAKLSAgIGV4cHJlc3Npb25zLgorICAgVGhlIHR5cGUgb2YgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQgZnVuY3Rpb25zIGNyZWF0ZWQgYnkKKyAgIDprZXl3b3JkOmBsYW1iZGFgICBleHByZXNzaW9ucy4KIAogCiAuLiBkYXRhOjogR2VuZXJhdG9yVHlwZQpAQCAtODUsMyArMTQyLDc5IEBACiAKICAgICAgIEluIG90aGVyIGltcGxlbWVudGF0aW9ucyBvZiBQeXRob24sIHRoaXMgdHlwZSBtYXkgYmUgaWRlbnRpY2FsIHRvCiAgICAgICBgYEdldFNldERlc2NyaXB0b3JUeXBlYGAuCisKKy4uIGNsYXNzOjogTWFwcGluZ1Byb3h5VHlwZShtYXBwaW5nKQorCisgICBSZWFkLW9ubHkgcHJveHkgb2YgYSBtYXBwaW5nLiBJdCBwcm92aWRlcyBhIGR5bmFtaWMgdmlldyBvbiB0aGUgbWFwcGluZydzCisgICBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIG1hcHBpbmcgY2hhbmdlcywgdGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UKKyAgIGNoYW5nZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBkZXNjcmliZTo6IGtleSBpbiBwcm94eQorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHVuZGVybHlpbmcgbWFwcGluZyBoYXMgYSBrZXkgKmtleSosIGVsc2UKKyAgICAgIGBgRmFsc2VgYC4KKworICAgLi4gZGVzY3JpYmU6OiBwcm94eVtrZXldCisKKyAgICAgIFJldHVybiB0aGUgaXRlbSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEKKyAgICAgIDpleGM6YEtleUVycm9yYCBpZiAqa2V5KiBpcyBub3QgaW4gdGhlIHVuZGVybHlpbmcgbWFwcGluZy4KKworICAgLi4gZGVzY3JpYmU6OiBpdGVyKHByb3h5KQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLiAgVGhpcyBpcyBhCisgICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKHByb3h5LmtleXMoKSlgYC4KKworICAgLi4gZGVzY3JpYmU6OiBsZW4ocHJveHkpCisKKyAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuCisKKyAgIC4uIG1ldGhvZDo6IGNvcHkoKQorCisgICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZy4KKworICAgLi4gbWV0aG9kOjogZ2V0KGtleVssIGRlZmF1bHRdKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLCBlbHNlCisgICAgICAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgc28gdGhhdAorICAgICAgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgOmV4YzpgS2V5RXJyb3JgLgorCisgICAuLiBtZXRob2Q6OiBpdGVtcygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYAorICAgICAgcGFpcnMpLgorCisgICAuLiBtZXRob2Q6OiBrZXlzKCkKKworICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZydzIGtleXMuCisKKyAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCisKKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcncyB2YWx1ZXMuCisKKworLi4gY2xhc3M6OiBTaW1wbGVOYW1lc3BhY2UKKworICAgQSBzaW1wbGUgOmNsYXNzOmBvYmplY3RgIHN1YmNsYXNzIHRoYXQgcHJvdmlkZXMgYXR0cmlidXRlIGFjY2VzcyB0byBpdHMKKyAgIG5hbWVzcGFjZSwgYXMgd2VsbCBhcyBhIG1lYW5pbmdmdWwgcmVwci4KKworICAgVW5saWtlIDpjbGFzczpgb2JqZWN0YCwgd2l0aCBgYFNpbXBsZU5hbWVzcGFjZWBgIHlvdSBjYW4gYWRkIGFuZCByZW1vdmUKKyAgIGF0dHJpYnV0ZXMuICBJZiBhIGBgU2ltcGxlTmFtZXNwYWNlYGAgb2JqZWN0IGlzIGluaXRpYWxpemVkIHdpdGgga2V5d29yZAorICAgYXJndW1lbnRzLCB0aG9zZSBhcmUgZGlyZWN0bHkgYWRkZWQgdG8gdGhlIHVuZGVybHlpbmcgbmFtZXNwYWNlLgorCisgICBUaGUgdHlwZSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBjb2RlOjoKKworICAgICAgIGNsYXNzIFNpbXBsZU5hbWVzcGFjZToKKyAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3YXJncykKKyAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAga2V5cyA9IHNvcnRlZChzZWxmLl9fZGljdF9fKQorICAgICAgICAgICAgICAgaXRlbXMgPSAoInt9PXshcn0iLmZvcm1hdChrLCBzZWxmLl9fZGljdF9fW2tdKSBmb3IgayBpbiBrZXlzKQorICAgICAgICAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdCh0eXBlKHNlbGYpLl9fbmFtZV9fLCAiLCAiLmpvaW4oaXRlbXMpKQorCisgICBgYFNpbXBsZU5hbWVzcGFjZWBgIG1heSBiZSB1c2VmdWwgYXMgYSByZXBsYWNlbWVudCBmb3IgYGBjbGFzcyBOUzogcGFzc2BgLgorICAgSG93ZXZlciwgZm9yIGEgc3RydWN0dXJlZCByZWNvcmQgdHlwZSB1c2UgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggM2IxYmJlMC4uMzc4N2MzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTUsOCArMTUsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMC4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4wLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gNi4xLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTI5LDYgKzI5LDkgQEAKICAgIExvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuICBJZiBhIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiBuYW1lIGlzIGZvdW5kLCByZXR1cm4KICAgIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gIElmIG5vdCBmb3VuZCwgOmV4YzpgS2V5RXJyb3JgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbI11fIGFuZCBuYW1lZCBzZXF1ZW5jZXMgWyNdXyBoYXMgYmVlbiBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IG5hbWUoY2hyWywgZGVmYXVsdF0pCiAKQEAgLTE2MCwzICsxNjMsOSBAQAogICAgPj4+IHVuaWNvZGVkYXRhLmJpZGlyZWN0aW9uYWwoJ1x1MDY2MCcpICMgJ0EncmFiaWMsICdOJ3VtYmVyCiAgICAnQU4nCiAKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZUFsaWFzZXMudHh0CisKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2stZXhhbXBsZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMWU4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLWV4YW1wbGVzLnJzdApAQCAtMCwwICsxLDEyNDYgQEAKKzptb2Q6YHVuaXR0ZXN0Lm1vY2tgIC0tLSBnZXR0aW5nIHN0YXJ0ZWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlYXV0aG9yOjogTWljaGFlbCBGb29yZCA8bWljaGFlbEBweXRob24ub3JnPgorLi4gY3VycmVudG1vZHVsZTo6IHVuaXR0ZXN0Lm1vY2sKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gX2dldHRpbmctc3RhcnRlZDoKKworVXNpbmcgTW9jaworLS0tLS0tLS0tLQorCitNb2NrIFBhdGNoaW5nIE1ldGhvZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitDb21tb24gdXNlcyBmb3IgOmNsYXNzOmBNb2NrYCBvYmplY3RzIGluY2x1ZGU6CisKKyogUGF0Y2hpbmcgbWV0aG9kcworKiBSZWNvcmRpbmcgbWV0aG9kIGNhbGxzIG9uIG9iamVjdHMKKworWW91IG1pZ2h0IHdhbnQgdG8gcmVwbGFjZSBhIG1ldGhvZCBvbiBhbiBvYmplY3QgdG8gY2hlY2sgdGhhdAoraXQgaXMgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3QgYXJndW1lbnRzIGJ5IGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtOgorCisgICAgPj4+IHJlYWwgPSBTb21lQ2xhc3MoKQorICAgID4+PiByZWFsLm1ldGhvZCA9IE1hZ2ljTW9jayhuYW1lPSdtZXRob2QnKQorICAgID4+PiByZWFsLm1ldGhvZCgzLCA0LCA1LCBrZXk9J3ZhbHVlJykKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21ldGhvZCgpJyBpZD0nLi4uJz4KKworT25jZSBvdXIgbW9jayBoYXMgYmVlbiB1c2VkIChgcmVhbC5tZXRob2RgIGluIHRoaXMgZXhhbXBsZSkgaXQgaGFzIG1ldGhvZHMKK2FuZCBhdHRyaWJ1dGVzIHRoYXQgYWxsb3cgeW91IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCBob3cgaXQgaGFzIGJlZW4gdXNlZC4KKworLi4gbm90ZTo6CisKKyAgICBJbiBtb3N0IG9mIHRoZXNlIGV4YW1wbGVzIHRoZSA6Y2xhc3M6YE1vY2tgIGFuZCA6Y2xhc3M6YE1hZ2ljTW9ja2AgY2xhc3NlcworICAgIGFyZSBpbnRlcmNoYW5nZWFibGUuIEFzIHRoZSBgTWFnaWNNb2NrYCBpcyB0aGUgbW9yZSBjYXBhYmxlIGNsYXNzIGl0IG1ha2VzCisgICAgYSBzZW5zaWJsZSBvbmUgdG8gdXNlIGJ5IGRlZmF1bHQuCisKK09uY2UgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkIGl0cyA6YXR0cjpgfk1vY2suY2FsbGVkYCBhdHRyaWJ1dGUgaXMgc2V0IHRvCitgVHJ1ZWAuIE1vcmUgaW1wb3J0YW50bHkgd2UgY2FuIHVzZSB0aGUgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgb3IKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgbWV0aG9kIHRvIGNoZWNrIHRoYXQgaXQgd2FzIGNhbGxlZCB3aXRoCit0aGUgY29ycmVjdCBhcmd1bWVudHMuCisKK1RoaXMgZXhhbXBsZSB0ZXN0cyB0aGF0IGNhbGxpbmcgYFByb2R1Y3Rpb25DbGFzcygpLm1ldGhvZGAgcmVzdWx0cyBpbiBhIGNhbGwgdG8KK3RoZSBgc29tZXRoaW5nYCBtZXRob2Q6CisKKyAgICA+Pj4gY2xhc3MgUHJvZHVjdGlvbkNsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuc29tZXRoaW5nKDEsIDIsIDMpCisgICAgLi4uICAgICBkZWYgc29tZXRoaW5nKHNlbGYsIGEsIGIsIGMpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgPj4+IHJlYWwuc29tZXRoaW5nID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QoKQorICAgID4+PiByZWFsLnNvbWV0aGluZy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorCisKKworTW9jayBmb3IgTWV0aG9kIENhbGxzIG9uIGFuIE9iamVjdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJbiB0aGUgbGFzdCBleGFtcGxlIHdlIHBhdGNoZWQgYSBtZXRob2QgZGlyZWN0bHkgb24gYW4gb2JqZWN0IHRvIGNoZWNrIHRoYXQgaXQKK3dhcyBjYWxsZWQgY29ycmVjdGx5LiBBbm90aGVyIGNvbW1vbiB1c2UgY2FzZSBpcyB0byBwYXNzIGFuIG9iamVjdCBpbnRvIGEKK21ldGhvZCAob3Igc29tZSBwYXJ0IG9mIHRoZSBzeXN0ZW0gdW5kZXIgdGVzdCkgYW5kIHRoZW4gY2hlY2sgdGhhdCBpdCBpcyB1c2VkCitpbiB0aGUgY29ycmVjdCB3YXkuCisKK1RoZSBzaW1wbGUgYFByb2R1Y3Rpb25DbGFzc2AgYmVsb3cgaGFzIGEgYGNsb3NlcmAgbWV0aG9kLiBJZiBpdCBpcyBjYWxsZWQgd2l0aAorYW4gb2JqZWN0IHRoZW4gaXQgY2FsbHMgYGNsb3NlYCBvbiBpdC4KKworICAgID4+PiBjbGFzcyBQcm9kdWN0aW9uQ2xhc3Mob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBjbG9zZXIoc2VsZiwgc29tZXRoaW5nKToKKyAgICAuLi4gICAgICAgICBzb21ldGhpbmcuY2xvc2UoKQorICAgIC4uLgorCitTbyB0byB0ZXN0IGl0IHdlIG5lZWQgdG8gcGFzcyBpbiBhbiBvYmplY3Qgd2l0aCBhIGBjbG9zZWAgbWV0aG9kIGFuZCBjaGVjawordGhhdCBpdCB3YXMgY2FsbGVkIGNvcnJlY3RseS4KKworICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiByZWFsLmNsb3Nlcihtb2NrKQorICAgID4+PiBtb2NrLmNsb3NlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKK1dlIGRvbid0IGhhdmUgdG8gZG8gYW55IHdvcmsgdG8gcHJvdmlkZSB0aGUgJ2Nsb3NlJyBtZXRob2Qgb24gb3VyIG1vY2suCitBY2Nlc3NpbmcgY2xvc2UgY3JlYXRlcyBpdC4gU28sIGlmICdjbG9zZScgaGFzbid0IGFscmVhZHkgYmVlbiBjYWxsZWQgdGhlbgorYWNjZXNzaW5nIGl0IGluIHRoZSB0ZXN0IHdpbGwgY3JlYXRlIGl0LCBidXQgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAKK3dpbGwgcmFpc2UgYSBmYWlsdXJlIGV4Y2VwdGlvbi4KKworCitNb2NraW5nIENsYXNzZXMKK35+fn5+fn5+fn5+fn5+fgorCitBIGNvbW1vbiB1c2UgY2FzZSBpcyB0byBtb2NrIG91dCBjbGFzc2VzIGluc3RhbnRpYXRlZCBieSB5b3VyIGNvZGUgdW5kZXIgdGVzdC4KK1doZW4geW91IHBhdGNoIGEgY2xhc3MsIHRoZW4gdGhhdCBjbGFzcyBpcyByZXBsYWNlZCB3aXRoIGEgbW9jay4gSW5zdGFuY2VzCithcmUgY3JlYXRlZCBieSAqY2FsbGluZyB0aGUgY2xhc3MqLiBUaGlzIG1lYW5zIHlvdSBhY2Nlc3MgdGhlICJtb2NrIGluc3RhbmNlIgorYnkgbG9va2luZyBhdCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrZWQgY2xhc3MuCisKK0luIHRoZSBleGFtcGxlIGJlbG93IHdlIGhhdmUgYSBmdW5jdGlvbiBgc29tZV9mdW5jdGlvbmAgdGhhdCBpbnN0YW50aWF0ZXMgYEZvb2AKK2FuZCBjYWxscyBhIG1ldGhvZCBvbiBpdC4gVGhlIGNhbGwgdG8gYHBhdGNoYCByZXBsYWNlcyB0aGUgY2xhc3MgYEZvb2Agd2l0aCBhCittb2NrLiBUaGUgYEZvb2AgaW5zdGFuY2UgaXMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBtb2NrLCBzbyBpdCBpcyBjb25maWd1cmVkCitieSBtb2RpZnlpbmcgdGhlIG1vY2sgOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAuCisKKyAgICA+Pj4gZGVmIHNvbWVfZnVuY3Rpb24oKToKKyAgICAuLi4gICAgIGluc3RhbmNlID0gbW9kdWxlLkZvbygpCisgICAgLi4uICAgICByZXR1cm4gaW5zdGFuY2UubWV0aG9kKCkKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnbW9kdWxlLkZvbycpIGFzIG1vY2s6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgLi4uICAgICBpbnN0YW5jZS5tZXRob2QucmV0dXJuX3ZhbHVlID0gJ3RoZSByZXN1bHQnCisgICAgLi4uICAgICByZXN1bHQgPSBzb21lX2Z1bmN0aW9uKCkKKyAgICAuLi4gICAgIGFzc2VydCByZXN1bHQgPT0gJ3RoZSByZXN1bHQnCisKKworTmFtaW5nIHlvdXIgbW9ja3MKK35+fn5+fn5+fn5+fn5+fn5+CisKK0l0IGNhbiBiZSB1c2VmdWwgdG8gZ2l2ZSB5b3VyIG1vY2tzIGEgbmFtZS4gVGhlIG5hbWUgaXMgc2hvd24gaW4gdGhlIHJlcHIgb2YKK3RoZSBtb2NrIGFuZCBjYW4gYmUgaGVscGZ1bCB3aGVuIHRoZSBtb2NrIGFwcGVhcnMgaW4gdGVzdCBmYWlsdXJlIG1lc3NhZ2VzLiBUaGUKK25hbWUgaXMgYWxzbyBwcm9wYWdhdGVkIHRvIGF0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvZiB0aGUgbW9jazoKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKG5hbWU9J2ZvbycpCisgICAgPj4+IG1vY2sKKyAgICA8TWFnaWNNb2NrIG5hbWU9J2ZvbycgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subWV0aG9kCisgICAgPE1hZ2ljTW9jayBuYW1lPSdmb28ubWV0aG9kJyBpZD0nLi4uJz4KKworCitUcmFja2luZyBhbGwgQ2FsbHMKK35+fn5+fn5+fn5+fn5+fn5+fgorCitPZnRlbiB5b3Ugd2FudCB0byB0cmFjayBtb3JlIHRoYW4gYSBzaW5nbGUgY2FsbCB0byBhIG1ldGhvZC4gVGhlCis6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlIHJlY29yZHMgYWxsIGNhbGxzCit0byBjaGlsZCBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrIC0gYW5kIGFsc28gdG8gdGhlaXIgY2hpbGRyZW4uCisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmF0dHJpYnV0ZS5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subW9ja19jYWxscworICAgIFtjYWxsLm1ldGhvZCgpLCBjYWxsLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpXQorCitJZiB5b3UgbWFrZSBhbiBhc3NlcnRpb24gYWJvdXQgYG1vY2tfY2FsbHNgIGFuZCBhbnkgdW5leHBlY3RlZCBtZXRob2RzCitoYXZlIGJlZW4gY2FsbGVkLCB0aGVuIHRoZSBhc3NlcnRpb24gd2lsbCBmYWlsLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGFzIHdlbGwKK2FzIGFzc2VydGluZyB0aGF0IHRoZSBjYWxscyB5b3UgZXhwZWN0ZWQgaGF2ZSBiZWVuIG1hZGUsIHlvdSBhcmUgYWxzbyBjaGVja2luZwordGhhdCB0aGV5IHdlcmUgbWFkZSBpbiB0aGUgcmlnaHQgb3JkZXIgYW5kIHdpdGggbm8gYWRkaXRpb25hbCBjYWxsczoKKworWW91IHVzZSB0aGUgOmRhdGE6YGNhbGxgIG9iamVjdCB0byBjb25zdHJ1Y3QgbGlzdHMgZm9yIGNvbXBhcmluZyB3aXRoCitgbW9ja19jYWxsc2A6CisKKyAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbC5tZXRob2QoKSwgY2FsbC5hdHRyaWJ1dGUubWV0aG9kKDEwLCB4PTUzKV0KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCisKK1NldHRpbmcgUmV0dXJuIFZhbHVlcyBhbmQgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NldHRpbmcgdGhlIHJldHVybiB2YWx1ZXMgb24gYSBtb2NrIG9iamVjdCBpcyB0cml2aWFsbHkgZWFzeToKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlID0gMworICAgID4+PiBtb2NrKCkKKyAgICAzCisKK09mIGNvdXJzZSB5b3UgY2FuIGRvIHRoZSBzYW1lIGZvciBtZXRob2RzIG9uIHRoZSBtb2NrOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5tZXRob2QucmV0dXJuX3ZhbHVlID0gMworICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgMworCitUaGUgcmV0dXJuIHZhbHVlIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3I6CisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IG1vY2soKQorICAgIDMKKworSWYgeW91IG5lZWQgYW4gYXR0cmlidXRlIHNldHRpbmcgb24geW91ciBtb2NrLCBqdXN0IGRvIGl0OgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay54ID0gMworICAgID4+PiBtb2NrLngKKyAgICAzCisKK1NvbWV0aW1lcyB5b3Ugd2FudCB0byBtb2NrIHVwIGEgbW9yZSBjb21wbGV4IHNpdHVhdGlvbiwgbGlrZSBmb3IgZXhhbXBsZQorYG1vY2suY29ubmVjdGlvbi5jdXJzb3IoKS5leGVjdXRlKCJTRUxFQ1QgMSIpYC4gSWYgd2Ugd2FudGVkIHRoaXMgY2FsbCB0bworcmV0dXJuIGEgbGlzdCwgdGhlbiB3ZSBoYXZlIHRvIGNvbmZpZ3VyZSB0aGUgcmVzdWx0IG9mIHRoZSBuZXN0ZWQgY2FsbC4KKworV2UgY2FuIHVzZSA6ZGF0YTpgY2FsbGAgdG8gY29uc3RydWN0IHRoZSBzZXQgb2YgY2FsbHMgaW4gYSAiY2hhaW5lZCBjYWxsIiBsaWtlCit0aGlzIGZvciBlYXN5IGFzc2VydGlvbiBhZnRlcndhcmRzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gY3Vyc29yID0gbW9jay5jb25uZWN0aW9uLmN1cnNvci5yZXR1cm5fdmFsdWUKKyAgICA+Pj4gY3Vyc29yLmV4ZWN1dGUucmV0dXJuX3ZhbHVlID0gWydmb28nXQorICAgID4+PiBtb2NrLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKQorICAgIFsnZm9vJ10KKyAgICA+Pj4gZXhwZWN0ZWQgPSBjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgiU0VMRUNUIDEiKS5jYWxsX2xpc3QoKQorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5jb25uZWN0aW9uLmN1cnNvcigpLCBjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCkuZXhlY3V0ZSgnU0VMRUNUIDEnKV0KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCitJdCBpcyB0aGUgY2FsbCB0byBgLmNhbGxfbGlzdCgpYCB0aGF0IHR1cm5zIG91ciBjYWxsIG9iamVjdCBpbnRvIGEgbGlzdCBvZgorY2FsbHMgcmVwcmVzZW50aW5nIHRoZSBjaGFpbmVkIGNhbGxzLgorCisKK1JhaXNpbmcgZXhjZXB0aW9ucyB3aXRoIG1vY2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitBIHVzZWZ1bCBhdHRyaWJ1dGUgaXMgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YC4gSWYgeW91IHNldCB0aGlzIHRvIGFuCitleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UgdGhlbiB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdGhlIG1vY2sKK2lzIGNhbGxlZC4KKworICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1FeGNlcHRpb24oJ0Jvb20hJykpCisgICAgPj4+IG1vY2soKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEV4Y2VwdGlvbjogQm9vbSEKKworCitTaWRlIGVmZmVjdCBmdW5jdGlvbnMgYW5kIGl0ZXJhYmxlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworYHNpZGVfZWZmZWN0YCBjYW4gYWxzbyBiZSBzZXQgdG8gYSBmdW5jdGlvbiBvciBhbiBpdGVyYWJsZS4gVGhlIHVzZSBjYXNlIGZvcgorYHNpZGVfZWZmZWN0YCBhcyBhbiBpdGVyYWJsZSBpcyB3aGVyZSB5b3VyIG1vY2sgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIHNldmVyYWwKK3RpbWVzLCBhbmQgeW91IHdhbnQgZWFjaCBjYWxsIHRvIHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZS4gV2hlbiB5b3Ugc2V0Citgc2lkZV9lZmZlY3RgIHRvIGFuIGl0ZXJhYmxlIGV2ZXJ5IGNhbGwgdG8gdGhlIG1vY2sgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZQorZnJvbSB0aGUgaXRlcmFibGU6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1bNCwgNSwgNl0pCisgICAgPj4+IG1vY2soKQorICAgIDQKKyAgICA+Pj4gbW9jaygpCisgICAgNQorICAgID4+PiBtb2NrKCkKKyAgICA2CisKKworRm9yIG1vcmUgYWR2YW5jZWQgdXNlIGNhc2VzLCBsaWtlIGR5bmFtaWNhbGx5IHZhcnlpbmcgdGhlIHJldHVybiB2YWx1ZXMKK2RlcGVuZGluZyBvbiB3aGF0IHRoZSBtb2NrIGlzIGNhbGxlZCB3aXRoLCBgc2lkZV9lZmZlY3RgIGNhbiBiZSBhIGZ1bmN0aW9uLgorVGhlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBtb2NrLiBXaGF0ZXZlciB0aGUKK2Z1bmN0aW9uIHJldHVybnMgaXMgd2hhdCB0aGUgY2FsbCByZXR1cm5zOgorCisgICAgPj4+IHZhbHMgPSB7KDEsIDIpOiAxLCAoMiwgMyk6IDJ9CisgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncyk6CisgICAgLi4uICAgICByZXR1cm4gdmFsc1thcmdzXQorICAgIC4uLgorICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgID4+PiBtb2NrKDEsIDIpCisgICAgMQorICAgID4+PiBtb2NrKDIsIDMpCisgICAgMgorCisKK0NyZWF0aW5nIGEgTW9jayBmcm9tIGFuIEV4aXN0aW5nIE9iamVjdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK09uZSBwcm9ibGVtIHdpdGggb3ZlciB1c2Ugb2YgbW9ja2luZyBpcyB0aGF0IGl0IGNvdXBsZXMgeW91ciB0ZXN0cyB0byB0aGUKK2ltcGxlbWVudGF0aW9uIG9mIHlvdXIgbW9ja3MgcmF0aGVyIHRoYW4geW91ciByZWFsIGNvZGUuIFN1cHBvc2UgeW91IGhhdmUgYQorY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGBzb21lX21ldGhvZGAuIEluIGEgdGVzdCBmb3IgYW5vdGhlciBjbGFzcywgeW91Citwcm92aWRlIGEgbW9jayBvZiB0aGlzIG9iamVjdCB0aGF0ICphbHNvKiBwcm92aWRlcyBgc29tZV9tZXRob2RgLiBJZiBsYXRlcgoreW91IHJlZmFjdG9yIHRoZSBmaXJzdCBjbGFzcywgc28gdGhhdCBpdCBubyBsb25nZXIgaGFzIGBzb21lX21ldGhvZGAgLSB0aGVuCit5b3VyIHRlc3RzIHdpbGwgY29udGludWUgdG8gcGFzcyBldmVuIHRob3VnaCB5b3VyIGNvZGUgaXMgbm93IGJyb2tlbiEKKworYE1vY2tgIGFsbG93cyB5b3UgdG8gcHJvdmlkZSBhbiBvYmplY3QgYXMgYSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jaywKK3VzaW5nIHRoZSBgc3BlY2Aga2V5d29yZCBhcmd1bWVudC4gQWNjZXNzaW5nIG1ldGhvZHMgLyBhdHRyaWJ1dGVzIG9uIHRoZQorbW9jayB0aGF0IGRvbid0IGV4aXN0IG9uIHlvdXIgc3BlY2lmaWNhdGlvbiBvYmplY3Qgd2lsbCBpbW1lZGlhdGVseSByYWlzZSBhbgorYXR0cmlidXRlIGVycm9yLiBJZiB5b3UgY2hhbmdlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIHNwZWNpZmljYXRpb24sIHRoZW4KK3Rlc3RzIHRoYXQgdXNlIHRoYXQgY2xhc3Mgd2lsbCBzdGFydCBmYWlsaW5nIGltbWVkaWF0ZWx5IHdpdGhvdXQgeW91IGhhdmluZyB0bworaW5zdGFudGlhdGUgdGhlIGNsYXNzIGluIHRob3NlIHRlc3RzLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9U29tZUNsYXNzKQorICAgID4+PiBtb2NrLm9sZF9tZXRob2QoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ29sZF9tZXRob2QnCisKK0lmIHlvdSB3YW50IGEgc3Ryb25nZXIgZm9ybSBvZiBzcGVjaWZpY2F0aW9uIHRoYXQgcHJldmVudHMgdGhlIHNldHRpbmcKK29mIGFyYml0cmFyeSBhdHRyaWJ1dGVzIGFzIHdlbGwgYXMgdGhlIGdldHRpbmcgb2YgdGhlbSB0aGVuIHlvdSBjYW4gdXNlCitgc3BlY19zZXRgIGluc3RlYWQgb2YgYHNwZWNgLgorCisKKworUGF0Y2ggRGVjb3JhdG9ycworLS0tLS0tLS0tLS0tLS0tLQorCisuLiBub3RlOjoKKworICAgV2l0aCBgcGF0Y2hgIGl0IG1hdHRlcnMgdGhhdCB5b3UgcGF0Y2ggb2JqZWN0cyBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIHRoZXkKKyAgIGFyZSBsb29rZWQgdXAuIFRoaXMgaXMgbm9ybWFsbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgZm9yIGEgcXVpY2sgZ3VpZGUKKyAgIHJlYWQgOnJlZjpgd2hlcmUgdG8gcGF0Y2ggPHdoZXJlLXRvLXBhdGNoPmAuCisKKworQSBjb21tb24gbmVlZCBpbiB0ZXN0cyBpcyB0byBwYXRjaCBhIGNsYXNzIGF0dHJpYnV0ZSBvciBhIG1vZHVsZSBhdHRyaWJ1dGUsCitmb3IgZXhhbXBsZSBwYXRjaGluZyBhIGJ1aWx0aW4gb3IgcGF0Y2hpbmcgYSBjbGFzcyBpbiBhIG1vZHVsZSB0byB0ZXN0IHRoYXQgaXQKK2lzIGluc3RhbnRpYXRlZC4gTW9kdWxlcyBhbmQgY2xhc3NlcyBhcmUgZWZmZWN0aXZlbHkgZ2xvYmFsLCBzbyBwYXRjaGluZyBvbgordGhlbSBoYXMgdG8gYmUgdW5kb25lIGFmdGVyIHRoZSB0ZXN0IG9yIHRoZSBwYXRjaCB3aWxsIHBlcnNpc3QgaW50byBvdGhlcgordGVzdHMgYW5kIGNhdXNlIGhhcmQgdG8gZGlhZ25vc2UgcHJvYmxlbXMuCisKK21vY2sgcHJvdmlkZXMgdGhyZWUgY29udmVuaWVudCBkZWNvcmF0b3JzIGZvciB0aGlzOiBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQKK2BwYXRjaC5kaWN0YC4gYHBhdGNoYCB0YWtlcyBhIHNpbmdsZSBzdHJpbmcsIG9mIHRoZSBmb3JtCitgcGFja2FnZS5tb2R1bGUuQ2xhc3MuYXR0cmlidXRlYCB0byBzcGVjaWZ5IHRoZSBhdHRyaWJ1dGUgeW91IGFyZSBwYXRjaGluZy4gSXQKK2Fsc28gb3B0aW9uYWxseSB0YWtlcyBhIHZhbHVlIHRoYXQgeW91IHdhbnQgdGhlIGF0dHJpYnV0ZSAob3IgY2xhc3Mgb3IKK3doYXRldmVyKSB0byBiZSByZXBsYWNlZCB3aXRoLiAncGF0Y2gub2JqZWN0JyB0YWtlcyBhbiBvYmplY3QgYW5kIHRoZSBuYW1lIG9mCit0aGUgYXR0cmlidXRlIHlvdSB3b3VsZCBsaWtlIHBhdGNoZWQsIHBsdXMgb3B0aW9uYWxseSB0aGUgdmFsdWUgdG8gcGF0Y2ggaXQKK3dpdGguCisKK2BwYXRjaC5vYmplY3RgOgorCisgICAgPj4+IG9yaWdpbmFsID0gU29tZUNsYXNzLmF0dHJpYnV0ZQorICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3MuYXR0cmlidXRlID09IHNlbnRpbmVsLmF0dHJpYnV0ZQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKyAgICA+Pj4gYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gb3JpZ2luYWwKKworICAgID4+PiBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLmF0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IGF0dHJpYnV0ZQorICAgIC4uLiAgICAgYXNzZXJ0IGF0dHJpYnV0ZSBpcyBzZW50aW5lbC5hdHRyaWJ1dGUKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK0lmIHlvdSBhcmUgcGF0Y2hpbmcgYSBtb2R1bGUgKGluY2x1ZGluZyBgX19idWlsdGluX19gKSB0aGVuIHVzZSBgcGF0Y2hgCitpbnN0ZWFkIG9mIGBwYXRjaC5vYmplY3RgOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlID0gc2VudGluZWwuZmlsZV9oYW5kbGUpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fYnVpbHRpbl9fLm9wZW4nLCBtb2NrKToKKyAgICAuLi4gICAgIGhhbmRsZSA9IG9wZW4oJ2ZpbGVuYW1lJywgJ3InKQorICAgIC4uLgorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnZmlsZW5hbWUnLCAncicpCisgICAgPj4+IGFzc2VydCBoYW5kbGUgPT0gc2VudGluZWwuZmlsZV9oYW5kbGUsICJpbmNvcnJlY3QgZmlsZSBoYW5kbGUgcmV0dXJuZWQiCisKK1RoZSBtb2R1bGUgbmFtZSBjYW4gYmUgJ2RvdHRlZCcsIGluIHRoZSBmb3JtIGBwYWNrYWdlLm1vZHVsZWAgaWYgbmVlZGVkOgorCisgICAgPj4+IEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lLmF0dHJpYnV0ZScsIHNlbnRpbmVsLmF0dHJpYnV0ZSkKKyAgICAuLi4gZGVmIHRlc3QoKToKKyAgICAuLi4gICAgIGZyb20gcGFja2FnZS5tb2R1bGUgaW1wb3J0IENsYXNzTmFtZQorICAgIC4uLiAgICAgYXNzZXJ0IENsYXNzTmFtZS5hdHRyaWJ1dGUgPT0gc2VudGluZWwuYXR0cmlidXRlCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitBIG5pY2UgcGF0dGVybiBpcyB0byBhY3R1YWxseSBkZWNvcmF0ZSB0ZXN0IG1ldGhvZHMgdGhlbXNlbHZlczoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnYXR0cmlidXRlJywgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmF0dHJpYnV0ZSwgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IFNvbWVDbGFzcy5hdHRyaWJ1dGUKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKyAgICA+Pj4gYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gb3JpZ2luYWwKKworSWYgeW91IHdhbnQgdG8gcGF0Y2ggd2l0aCBhIE1vY2ssIHlvdSBjYW4gdXNlIGBwYXRjaGAgd2l0aCBvbmx5IG9uZSBhcmd1bWVudAorKG9yIGBwYXRjaC5vYmplY3RgIHdpdGggdHdvIGFyZ3VtZW50cykuIFRoZSBtb2NrIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91IGFuZAorcGFzc2VkIGludG8gdGhlIHRlc3QgZnVuY3Rpb24gLyBtZXRob2Q6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KHVuaXR0ZXN0Mi5UZXN0Q2FzZSk6CisgICAgLi4uICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ3N0YXRpY19tZXRob2QnKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYsIG1vY2tfbWV0aG9kKToKKyAgICAuLi4gICAgICAgICBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCgpCisgICAgLi4uICAgICAgICAgbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKworWW91IGNhbiBzdGFjayB1cCBtdWx0aXBsZSBwYXRjaCBkZWNvcmF0b3JzIHVzaW5nIHRoaXMgcGF0dGVybjoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMScpCisgICAgLi4uICAgICBAcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTInKQorICAgIC4uLiAgICAgZGVmIHRlc3Rfc29tZXRoaW5nKHNlbGYsIE1vY2tDbGFzczIsIE1vY2tDbGFzczEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUxIGlzIE1vY2tDbGFzczEpCisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTIgaXMgTW9ja0NsYXNzMikKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3NvbWV0aGluZycpLnRlc3Rfc29tZXRoaW5nKCkKKworV2hlbiB5b3UgbmVzdCBwYXRjaCBkZWNvcmF0b3JzIHRoZSBtb2NrcyBhcmUgcGFzc2VkIGluIHRvIHRoZSBkZWNvcmF0ZWQKK2Z1bmN0aW9uIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwbGllZCAodGhlIG5vcm1hbCAqcHl0aG9uKiBvcmRlciB0aGF0CitkZWNvcmF0b3JzIGFyZSBhcHBsaWVkKS4gVGhpcyBtZWFucyBmcm9tIHRoZSBib3R0b20gdXAsIHNvIGluIHRoZSBleGFtcGxlCithYm92ZSB0aGUgbW9jayBmb3IgYHRlc3RfbW9kdWxlLkNsYXNzTmFtZTJgIGlzIHBhc3NlZCBpbiBmaXJzdC4KKworVGhlcmUgaXMgYWxzbyA6ZnVuYzpgcGF0Y2guZGljdGAgZm9yIHNldHRpbmcgdmFsdWVzIGluIGEgZGljdGlvbmFyeSBqdXN0CitkdXJpbmcgYSBzY29wZSBhbmQgcmVzdG9yaW5nIHRoZSBkaWN0aW9uYXJ5IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSB3aGVuIHRoZSB0ZXN0CitlbmRzOgorCisgICA+Pj4gZm9vID0geydrZXknOiAndmFsdWUnfQorICAgPj4+IG9yaWdpbmFsID0gZm9vLmNvcHkoKQorICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30sIGNsZWFyPVRydWUpOgorICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgIC4uLgorICAgPj4+IGFzc2VydCBmb28gPT0gb3JpZ2luYWwKKworYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgYW5kIGBwYXRjaC5kaWN0YCBjYW4gYWxsIGJlIHVzZWQgYXMgY29udGV4dCBtYW5hZ2Vycy4KKworV2hlcmUgeW91IHVzZSBgcGF0Y2hgIHRvIGNyZWF0ZSBhIG1vY2sgZm9yIHlvdSwgeW91IGNhbiBnZXQgYSByZWZlcmVuY2UgdG8gdGhlCittb2NrIHVzaW5nIHRoZSAiYXMiIGZvcm0gb2YgdGhlIHdpdGggc3RhdGVtZW50OgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2gub2JqZWN0KFByb2R1Y3Rpb25DbGFzcywgJ21ldGhvZCcpIGFzIG1vY2tfbWV0aG9kOgorICAgIC4uLiAgICAgbW9ja19tZXRob2QucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgIC4uLiAgICAgcmVhbCA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgLi4uICAgICByZWFsLm1ldGhvZCgxLCAyLCAzKQorICAgIC4uLgorICAgID4+PiBtb2NrX21ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgMykKKworCitBcyBhbiBhbHRlcm5hdGl2ZSBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQgYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIGFzCitjbGFzcyBkZWNvcmF0b3JzLiBXaGVuIHVzZWQgaW4gdGhpcyB3YXkgaXQgaXMgdGhlIHNhbWUgYXMgYXBwbHlpbmcgdGhlCitkZWNvcmF0b3IgaW5kdmlkdWFsbHkgdG8gZXZlcnkgbWV0aG9kIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggInRlc3QiLgorCisKKy4uIF9mdXJ0aGVyLWV4YW1wbGVzOgorCitGdXJ0aGVyIEV4YW1wbGVzCis9PT09PT09PT09PT09PT09CisKKworSGVyZSBhcmUgc29tZSBtb3JlIGV4YW1wbGVzIGZvciBzb21lIHNsaWdodGx5IG1vcmUgYWR2YW5jZWQgc2NlbmFyaW9zLgorCisKK01vY2tpbmcgY2hhaW5lZCBjYWxscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01vY2tpbmcgY2hhaW5lZCBjYWxscyBpcyBhY3R1YWxseSBzdHJhaWdodGZvcndhcmQgd2l0aCBtb2NrIG9uY2UgeW91Cit1bmRlcnN0YW5kIHRoZSA6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuIFdoZW4gYSBtb2NrIGlzIGNhbGxlZCBmb3IKK3RoZSBmaXJzdCB0aW1lLCBvciB5b3UgZmV0Y2ggaXRzIGByZXR1cm5fdmFsdWVgIGJlZm9yZSBpdCBoYXMgYmVlbiBjYWxsZWQsIGEKK25ldyBgTW9ja2AgaXMgY3JlYXRlZC4KKworVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc2VlIGhvdyB0aGUgb2JqZWN0IHJldHVybmVkIGZyb20gYSBjYWxsIHRvIGEgbW9ja2VkCitvYmplY3QgaGFzIGJlZW4gdXNlZCBieSBpbnRlcnJvZ2F0aW5nIHRoZSBgcmV0dXJuX3ZhbHVlYCBtb2NrOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jaygpLmZvbyhhPTIsIGI9MykKKyAgICA8TW9jayBuYW1lPSdtb2NrKCkuZm9vKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLnJldHVybl92YWx1ZS5mb28uYXNzZXJ0X2NhbGxlZF93aXRoKGE9MiwgYj0zKQorCitGcm9tIGhlcmUgaXQgaXMgYSBzaW1wbGUgc3RlcCB0byBjb25maWd1cmUgYW5kIHRoZW4gbWFrZSBhc3NlcnRpb25zIGFib3V0CitjaGFpbmVkIGNhbGxzLiBPZiBjb3Vyc2UgYW5vdGhlciBhbHRlcm5hdGl2ZSBpcyB3cml0aW5nIHlvdXIgY29kZSBpbiBhIG1vcmUKK3Rlc3RhYmxlIHdheSBpbiB0aGUgZmlyc3QgcGxhY2UuLi4KKworU28sIHN1cHBvc2Ugd2UgaGF2ZSBzb21lIGNvZGUgdGhhdCBsb29rcyBhIGxpdHRsZSBiaXQgbGlrZSB0aGlzOgorCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYmFja2VuZCA9IEJhY2tlbmRQcm92aWRlcigpCisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5iYWNrZW5kLmdldF9lbmRwb2ludCgnZm9vYmFyJykuY3JlYXRlX2NhbGwoJ3NwYW0nLCAnZWdncycpLnN0YXJ0X2NhbGwoKQorICAgIC4uLiAgICAgICAgICMgbW9yZSBjb2RlCisKK0Fzc3VtaW5nIHRoYXQgYEJhY2tlbmRQcm92aWRlcmAgaXMgYWxyZWFkeSB3ZWxsIHRlc3RlZCwgaG93IGRvIHdlIHRlc3QKK2BtZXRob2QoKWA/IFNwZWNpZmljYWxseSwgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNvZGUgc2VjdGlvbiBgIyBtb3JlCitjb2RlYCB1c2VzIHRoZSByZXNwb25zZSBvYmplY3QgaW4gdGhlIGNvcnJlY3Qgd2F5LgorCitBcyB0aGlzIGNoYWluIG9mIGNhbGxzIGlzIG1hZGUgZnJvbSBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgd2UgY2FuIG1vbmtleSBwYXRjaAordGhlIGBiYWNrZW5kYCBhdHRyaWJ1dGUgb24gYSBgU29tZXRoaW5nYCBpbnN0YW5jZS4gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UKK3dlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBmaW5hbCBjYWxsIHRvCitgc3RhcnRfY2FsbGAgc28gd2UgZG9uJ3QgaGF2ZSBtdWNoIGNvbmZpZ3VyYXRpb24gdG8gZG8uIExldCdzIGFzc3VtZSB0aGUKK29iamVjdCBpdCByZXR1cm5zIGlzICdmaWxlLWxpa2UnLCBzbyB3ZSdsbCBlbnN1cmUgdGhhdCBvdXIgcmVzcG9uc2Ugb2JqZWN0Cit1c2VzIHRoZSBidWlsdGluIGBmaWxlYCBhcyBpdHMgYHNwZWNgLgorCitUbyBkbyB0aGlzIHdlIGNyZWF0ZSBhIG1vY2sgaW5zdGFuY2UgYXMgb3VyIG1vY2sgYmFja2VuZCBhbmQgY3JlYXRlIGEgbW9jaworcmVzcG9uc2Ugb2JqZWN0IGZvciBpdC4gVG8gc2V0IHRoZSByZXNwb25zZSBhcyB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGF0IGZpbmFsCitgc3RhcnRfY2FsbGAgd2UgY291bGQgZG8gdGhpczoKKworICAgIGBtb2NrX2JhY2tlbmQuZ2V0X2VuZHBvaW50LnJldHVybl92YWx1ZS5jcmVhdGVfY2FsbC5yZXR1cm5fdmFsdWUuc3RhcnRfY2FsbC5yZXR1cm5fdmFsdWUgPSBtb2NrX3Jlc3BvbnNlYC4KKworV2UgY2FuIGRvIHRoYXQgaW4gYSBzbGlnaHRseSBuaWNlciB3YXkgdXNpbmcgdGhlIDptZXRoOmB+TW9jay5jb25maWd1cmVfbW9ja2AKK21ldGhvZCB0byBkaXJlY3RseSBzZXQgdGhlIHJldHVybiB2YWx1ZSBmb3IgdXM6CisKKyAgICA+Pj4gc29tZXRoaW5nID0gU29tZXRoaW5nKCkKKyAgICA+Pj4gbW9ja19yZXNwb25zZSA9IE1vY2soc3BlYz1maWxlKQorICAgID4+PiBtb2NrX2JhY2tlbmQgPSBNb2NrKCkKKyAgICA+Pj4gY29uZmlnID0geydnZXRfZW5kcG9pbnQucmV0dXJuX3ZhbHVlLmNyZWF0ZV9jYWxsLnJldHVybl92YWx1ZS5zdGFydF9jYWxsLnJldHVybl92YWx1ZSc6IG1vY2tfcmVzcG9uc2V9CisgICAgPj4+IG1vY2tfYmFja2VuZC5jb25maWd1cmVfbW9jaygqKmNvbmZpZykKKworV2l0aCB0aGVzZSB3ZSBtb25rZXkgcGF0Y2ggdGhlICJtb2NrIGJhY2tlbmQiIGluIHBsYWNlIGFuZCBjYW4gbWFrZSB0aGUgcmVhbAorY2FsbDoKKworICAgID4+PiBzb21ldGhpbmcuYmFja2VuZCA9IG1vY2tfYmFja2VuZAorICAgID4+PiBzb21ldGhpbmcubWV0aG9kKCkKKworVXNpbmcgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIHdlIGNhbiBjaGVjayB0aGUgY2hhaW5lZCBjYWxsIHdpdGggYSBzaW5nbGUKK2Fzc2VydC4gQSBjaGFpbmVkIGNhbGwgaXMgc2V2ZXJhbCBjYWxscyBpbiBvbmUgbGluZSBvZiBjb2RlLCBzbyB0aGVyZSB3aWxsIGJlCitzZXZlcmFsIGVudHJpZXMgaW4gYG1vY2tfY2FsbHNgLiBXZSBjYW4gdXNlIDptZXRoOmBjYWxsLmNhbGxfbGlzdGAgdG8gY3JlYXRlCit0aGlzIGxpc3Qgb2YgY2FsbHMgZm9yIHVzOgorCisgICAgPj4+IGNoYWluZWQgPSBjYWxsLmdldF9lbmRwb2ludCgnZm9vYmFyJykuY3JlYXRlX2NhbGwoJ3NwYW0nLCAnZWdncycpLnN0YXJ0X2NhbGwoKQorICAgID4+PiBjYWxsX2xpc3QgPSBjaGFpbmVkLmNhbGxfbGlzdCgpCisgICAgPj4+IGFzc2VydCBtb2NrX2JhY2tlbmQubW9ja19jYWxscyA9PSBjYWxsX2xpc3QKKworCitQYXJ0aWFsIG1vY2tpbmcKKy0tLS0tLS0tLS0tLS0tLQorCitJbiBzb21lIHRlc3RzIEkgd2FudGVkIHRvIG1vY2sgb3V0IGEgY2FsbCB0byBgZGF0ZXRpbWUuZGF0ZS50b2RheSgpCis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L2RhdGV0aW1lLmh0bWwjZGF0ZXRpbWUuZGF0ZS50b2RheT5gXyB0byByZXR1cm4KK2Ega25vd24gZGF0ZSwgYnV0IEkgZGlkbid0IHdhbnQgdG8gcHJldmVudCB0aGUgY29kZSB1bmRlciB0ZXN0IGZyb20KK2NyZWF0aW5nIG5ldyBkYXRlIG9iamVjdHMuIFVuZm9ydHVuYXRlbHkgYGRhdGV0aW1lLmRhdGVgIGlzIHdyaXR0ZW4gaW4gQywgYW5kCitzbyBJIGNvdWxkbid0IGp1c3QgbW9ua2V5LXBhdGNoIG91dCB0aGUgc3RhdGljIGBkYXRlLnRvZGF5YCBtZXRob2QuCisKK0kgZm91bmQgYSBzaW1wbGUgd2F5IG9mIGRvaW5nIHRoaXMgdGhhdCBpbnZvbHZlZCBlZmZlY3RpdmVseSB3cmFwcGluZyB0aGUgZGF0ZQorY2xhc3Mgd2l0aCBhIG1vY2ssIGJ1dCBwYXNzaW5nIHRocm91Z2ggY2FsbHMgdG8gdGhlIGNvbnN0cnVjdG9yIHRvIHRoZSByZWFsCitjbGFzcyAoYW5kIHJldHVybmluZyByZWFsIGluc3RhbmNlcykuCisKK1RoZSA6ZnVuYzpgcGF0Y2ggZGVjb3JhdG9yIDxwYXRjaD5gIGlzIHVzZWQgaGVyZSB0bworbW9jayBvdXQgdGhlIGBkYXRlYCBjbGFzcyBpbiB0aGUgbW9kdWxlIHVuZGVyIHRlc3QuIFRoZSA6YXR0cjpgc2lkZV9lZmZlY3RgCithdHRyaWJ1dGUgb24gdGhlIG1vY2sgZGF0ZSBjbGFzcyBpcyB0aGVuIHNldCB0byBhIGxhbWJkYSBmdW5jdGlvbiB0aGF0IHJldHVybnMKK2EgcmVhbCBkYXRlLiBXaGVuIHRoZSBtb2NrIGRhdGUgY2xhc3MgaXMgY2FsbGVkIGEgcmVhbCBkYXRlIHdpbGwgYmUKK2NvbnN0cnVjdGVkIGFuZCByZXR1cm5lZCBieSBgc2lkZV9lZmZlY3RgLgorCisgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuZGF0ZScpIGFzIG1vY2tfZGF0ZToKKyAgICAuLi4gICAgIG1vY2tfZGF0ZS50b2RheS5yZXR1cm5fdmFsdWUgPSBkYXRlKDIwMTAsIDEwLCA4KQorICAgIC4uLiAgICAgbW9ja19kYXRlLnNpZGVfZWZmZWN0ID0gbGFtYmRhICphcmdzLCAqKmt3OiBkYXRlKCphcmdzLCAqKmt3KQorICAgIC4uLgorICAgIC4uLiAgICAgYXNzZXJ0IG15bW9kdWxlLmRhdGUudG9kYXkoKSA9PSBkYXRlKDIwMTAsIDEwLCA4KQorICAgIC4uLiAgICAgYXNzZXJ0IG15bW9kdWxlLmRhdGUoMjAwOSwgNiwgOCkgPT0gZGF0ZSgyMDA5LCA2LCA4KQorICAgIC4uLgorCitOb3RlIHRoYXQgd2UgZG9uJ3QgcGF0Y2ggYGRhdGV0aW1lLmRhdGVgIGdsb2JhbGx5LCB3ZSBwYXRjaCBgZGF0ZWAgaW4gdGhlCittb2R1bGUgdGhhdCAqdXNlcyogaXQuIFNlZSA6cmVmOmB3aGVyZSB0byBwYXRjaCA8d2hlcmUtdG8tcGF0Y2g+YC4KKworV2hlbiBgZGF0ZS50b2RheSgpYCBpcyBjYWxsZWQgYSBrbm93biBkYXRlIGlzIHJldHVybmVkLCBidXQgY2FsbHMgdG8gdGhlCitgZGF0ZSguLi4pYCBjb25zdHJ1Y3RvciBzdGlsbCByZXR1cm4gbm9ybWFsIGRhdGVzLiBXaXRob3V0IHRoaXMgeW91IGNhbiBmaW5kCit5b3Vyc2VsZiBoYXZpbmcgdG8gY2FsY3VsYXRlIGFuIGV4cGVjdGVkIHJlc3VsdCB1c2luZyBleGFjdGx5IHRoZSBzYW1lCithbGdvcml0aG0gYXMgdGhlIGNvZGUgdW5kZXIgdGVzdCwgd2hpY2ggaXMgYSBjbGFzc2ljIHRlc3RpbmcgYW50aS1wYXR0ZXJuLgorCitDYWxscyB0byB0aGUgZGF0ZSBjb25zdHJ1Y3RvciBhcmUgcmVjb3JkZWQgaW4gdGhlIGBtb2NrX2RhdGVgIGF0dHJpYnV0ZXMKKyhgY2FsbF9jb3VudGAgYW5kIGZyaWVuZHMpIHdoaWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3IgeW91ciB0ZXN0cy4KKworQW4gYWx0ZXJuYXRpdmUgd2F5IG9mIGRlYWxpbmcgd2l0aCBtb2NraW5nIGRhdGVzLCBvciBvdGhlciBidWlsdGluIGNsYXNzZXMsCitpcyBkaXNjdXNzZWQgaW4gYHRoaXMgYmxvZyBlbnRyeQorPGh0dHA6Ly93aWxsaWFtam9obmJlcnQuY29tLzIwMTEvMDcvaG93LXRvLXVuaXQtdGVzdGluZy1pbi1kamFuZ28td2l0aC1tb2NraW5nLWFuZC1wYXRjaGluZy8+YF8uCisKKworTW9ja2luZyBhIEdlbmVyYXRvciBNZXRob2QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgUHl0aG9uIGdlbmVyYXRvciBpcyBhIGZ1bmN0aW9uIG9yIG1ldGhvZCB0aGF0IHVzZXMgdGhlIGB5aWVsZCBzdGF0ZW1lbnQKKzxodHRwOi8vZG9jcy5weXRob24ub3JnL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMuaHRtbCN0aGUteWllbGQtc3RhdGVtZW50PmBfIHRvCityZXR1cm4gYSBzZXJpZXMgb2YgdmFsdWVzIHdoZW4gaXRlcmF0ZWQgb3ZlciBbI11fLgorCitBIGdlbmVyYXRvciBtZXRob2QgLyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcmV0dXJuIHRoZSBnZW5lcmF0b3Igb2JqZWN0LiBJdCBpcwordGhlIGdlbmVyYXRvciBvYmplY3QgdGhhdCBpcyB0aGVuIGl0ZXJhdGVkIG92ZXIuIFRoZSBwcm90b2NvbCBtZXRob2QgZm9yCitpdGVyYXRpb24gaXMgYF9faXRlcl9fCis8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3N0ZHR5cGVzLmh0bWwjY29udGFpbmVyLl9faXRlcl9fPmBfLCBzbyB3ZSBjYW4KK21vY2sgdGhpcyB1c2luZyBhIGBNYWdpY01vY2tgLgorCitIZXJlJ3MgYW4gZXhhbXBsZSBjbGFzcyB3aXRoIGFuICJpdGVyIiBtZXRob2QgaW1wbGVtZW50ZWQgYXMgYSBnZW5lcmF0b3I6CisKKyAgICA+Pj4gY2xhc3MgRm9vKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgaXRlcihzZWxmKToKKyAgICAuLi4gICAgICAgICBmb3IgaSBpbiBbMSwgMiwgM106CisgICAgLi4uICAgICAgICAgICAgIHlpZWxkIGkKKyAgICAuLi4KKyAgICA+Pj4gZm9vID0gRm9vKCkKKyAgICA+Pj4gbGlzdChmb28uaXRlcigpKQorICAgIFsxLCAyLCAzXQorCisKK0hvdyB3b3VsZCB3ZSBtb2NrIHRoaXMgY2xhc3MsIGFuZCBpbiBwYXJ0aWN1bGFyIGl0cyAiaXRlciIgbWV0aG9kPworCitUbyBjb25maWd1cmUgdGhlIHZhbHVlcyByZXR1cm5lZCBmcm9tIHRoZSBpdGVyYXRpb24gKGltcGxpY2l0IGluIHRoZSBjYWxsIHRvCitgbGlzdGApLCB3ZSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBjYWxsIHRvIGBmb28uaXRlcigpYC4KKworICAgID4+PiBtb2NrX2ZvbyA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG1vY2tfZm9vLml0ZXIucmV0dXJuX3ZhbHVlID0gaXRlcihbMSwgMiwgM10pCisgICAgPj4+IGxpc3QobW9ja19mb28uaXRlcigpKQorICAgIFsxLCAyLCAzXQorCisuLiBbI10gVGhlcmUgYXJlIGFsc28gZ2VuZXJhdG9yIGV4cHJlc3Npb25zIGFuZCBtb3JlIGBhZHZhbmNlZCB1c2VzCisgICAgPGh0dHA6Ly93d3cuZGFiZWF6LmNvbS9jb3JvdXRpbmVzL2luZGV4Lmh0bWw+YF8gb2YgZ2VuZXJhdG9ycywgYnV0IHdlIGFyZW4ndAorICAgIGNvbmNlcm5lZCBhYm91dCB0aGVtIGhlcmUuIEEgdmVyeSBnb29kIGludHJvZHVjdGlvbiB0byBnZW5lcmF0b3JzIGFuZCBob3cKKyAgICBwb3dlcmZ1bCB0aGV5IGFyZSBpczogYEdlbmVyYXRvciBUcmlja3MgZm9yIFN5c3RlbXMgUHJvZ3JhbW1lcnMKKyAgICA8aHR0cDovL3d3dy5kYWJlYXouY29tL2dlbmVyYXRvcnMvPmBfLgorCisKK0FwcGx5aW5nIHRoZSBzYW1lIHBhdGNoIHRvIGV2ZXJ5IHRlc3QgbWV0aG9kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3Ugd2FudCBzZXZlcmFsIHBhdGNoZXMgaW4gcGxhY2UgZm9yIG11bHRpcGxlIHRlc3QgbWV0aG9kcyB0aGUgb2J2aW91cyB3YXkKK2lzIHRvIGFwcGx5IHRoZSBwYXRjaCBkZWNvcmF0b3JzIHRvIGV2ZXJ5IG1ldGhvZC4gVGhpcyBjYW4gZmVlbCBsaWtlIHVubmVjZXNzYXJ5CityZXBldGl0aW9uLiBGb3IgUHl0aG9uIDIuNiBvciBtb3JlIHJlY2VudCB5b3UgY2FuIHVzZSBgcGF0Y2hgIChpbiBhbGwgaXRzCit2YXJpb3VzIGZvcm1zKSBhcyBhIGNsYXNzIGRlY29yYXRvci4gVGhpcyBhcHBsaWVzIHRoZSBwYXRjaGVzIHRvIGFsbCB0ZXN0CittZXRob2RzIG9uIHRoZSBjbGFzcy4gQSB0ZXN0IG1ldGhvZCBpcyBpZGVudGlmaWVkIGJ5IG1ldGhvZHMgd2hvc2UgbmFtZXMgc3RhcnQKK3dpdGggYHRlc3RgOgorCisgICAgPj4+IEBwYXRjaCgnbXltb2R1bGUuU29tZUNsYXNzJykKKyAgICAuLi4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X29uZShzZWxmLCBNb2NrU29tZUNsYXNzKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUobXltb2R1bGUuU29tZUNsYXNzIGlzIE1vY2tTb21lQ2xhc3MpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF90d28oc2VsZiwgTW9ja1NvbWVDbGFzcyk6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG15bW9kdWxlLlNvbWVDbGFzcyBpcyBNb2NrU29tZUNsYXNzKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIG5vdF9hX3Rlc3Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuICdzb21ldGhpbmcnCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9vbmUnKS50ZXN0X29uZSgpCisgICAgPj4+IE15VGVzdCgndGVzdF90d28nKS50ZXN0X3R3bygpCisgICAgPj4+IE15VGVzdCgndGVzdF90d28nKS5ub3RfYV90ZXN0KCkKKyAgICAnc29tZXRoaW5nJworCitBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgbWFuYWdpbmcgcGF0Y2hlcyBpcyB0byB1c2UgdGhlIDpyZWY6YHN0YXJ0LWFuZC1zdG9wYC4KK1RoZXNlIGFsbG93IHlvdSB0byBtb3ZlIHRoZSBwYXRjaGluZyBpbnRvIHlvdXIgYHNldFVwYCBhbmQgYHRlYXJEb3duYCBtZXRob2RzLgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyID0gcGF0Y2goJ215bW9kdWxlLmZvbycpCisgICAgLi4uICAgICAgICAgc2VsZi5tb2NrX2ZvbyA9IHNlbGYucGF0Y2hlci5zdGFydCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG15bW9kdWxlLmZvbyBpcyBzZWxmLm1vY2tfZm9vKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlci5zdG9wKCkKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCisKK0lmIHlvdSB1c2UgdGhpcyB0ZWNobmlxdWUgeW91IG11c3QgZW5zdXJlIHRoYXQgdGhlIHBhdGNoaW5nIGlzICJ1bmRvbmUiIGJ5CitjYWxsaW5nIGBzdG9wYC4gVGhpcyBjYW4gYmUgZmlkZGxpZXIgdGhhbiB5b3UgbWlnaHQgdGhpbmssIGJlY2F1c2UgaWYgYW4KK2V4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdGhlIHNldFVwIHRoZW4gdGVhckRvd24gaXMgbm90IGNhbGxlZC4KKzptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVhbnVwYCBtYWtlcyB0aGlzIGVhc2llcjoKKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnbXltb2R1bGUuZm9vJykKKyAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgIC4uLiAgICAgICAgIHNlbGYubW9ja19mb28gPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUobXltb2R1bGUuZm9vIGlzIHNlbGYubW9ja19mb28pCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS5ydW4oKQorCisKK01vY2tpbmcgVW5ib3VuZCBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsc3Qgd3JpdGluZyB0ZXN0cyB0b2RheSBJIG5lZWRlZCB0byBwYXRjaCBhbiAqdW5ib3VuZCBtZXRob2QqIChwYXRjaGluZyB0aGUKK21ldGhvZCBvbiB0aGUgY2xhc3MgcmF0aGVyIHRoYW4gb24gdGhlIGluc3RhbmNlKS4gSSBuZWVkZWQgc2VsZiB0byBiZSBwYXNzZWQKK2luIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBiZWNhdXNlIEkgd2FudCB0byBtYWtlIGFzc2VydHMgYWJvdXQgd2hpY2ggb2JqZWN0cword2VyZSBjYWxsaW5nIHRoaXMgcGFydGljdWxhciBtZXRob2QuIFRoZSBpc3N1ZSBpcyB0aGF0IHlvdSBjYW4ndCBwYXRjaCB3aXRoIGEKK21vY2sgZm9yIHRoaXMsIGJlY2F1c2UgaWYgeW91IHJlcGxhY2UgYW4gdW5ib3VuZCBtZXRob2Qgd2l0aCBhIG1vY2sgaXQgZG9lc24ndAorYmVjb21lIGEgYm91bmQgbWV0aG9kIHdoZW4gZmV0Y2hlZCBmcm9tIHRoZSBpbnN0YW5jZSwgYW5kIHNvIGl0IGRvZXNuJ3QgZ2V0CitzZWxmIHBhc3NlZCBpbi4gVGhlIHdvcmthcm91bmQgaXMgdG8gcGF0Y2ggdGhlIHVuYm91bmQgbWV0aG9kIHdpdGggYSByZWFsCitmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgbWFrZXMgaXQgc28gc2ltcGxlIHRvCitwYXRjaCBvdXQgbWV0aG9kcyB3aXRoIGEgbW9jayB0aGF0IGhhdmluZyB0byBjcmVhdGUgYSByZWFsIGZ1bmN0aW9uIGJlY29tZXMgYQorbnVpc2FuY2UuCisKK0lmIHlvdSBwYXNzIGBhdXRvc3BlYz1UcnVlYCB0byBwYXRjaCB0aGVuIGl0IGRvZXMgdGhlIHBhdGNoaW5nIHdpdGggYQorKnJlYWwqIGZ1bmN0aW9uIG9iamVjdC4gVGhpcyBmdW5jdGlvbiBvYmplY3QgaGFzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyB0aGUgb25lCitpdCBpcyByZXBsYWNpbmcsIGJ1dCBkZWxlZ2F0ZXMgdG8gYSBtb2NrIHVuZGVyIHRoZSBob29kLiBZb3Ugc3RpbGwgZ2V0IHlvdXIKK21vY2sgYXV0by1jcmVhdGVkIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGJlZm9yZS4gV2hhdCBpdCBtZWFucyB0aG91Z2gsIGlzCit0aGF0IGlmIHlvdSB1c2UgaXQgdG8gcGF0Y2ggb3V0IGFuIHVuYm91bmQgbWV0aG9kIG9uIGEgY2xhc3MgdGhlIG1vY2tlZAorZnVuY3Rpb24gd2lsbCBiZSB0dXJuZWQgaW50byBhIGJvdW5kIG1ldGhvZCBpZiBpdCBpcyBmZXRjaGVkIGZyb20gYW4gaW5zdGFuY2UuCitJdCB3aWxsIGhhdmUgYHNlbGZgIHBhc3NlZCBpbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJCit3YW50ZWQ6CisKKyAgICA+Pj4gY2xhc3MgRm9vKG9iamVjdCk6CisgICAgLi4uICAgZGVmIGZvbyhzZWxmKToKKyAgICAuLi4gICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgYXV0b3NwZWM9VHJ1ZSkgYXMgbW9ja19mb286CisgICAgLi4uICAgbW9ja19mb28ucmV0dXJuX3ZhbHVlID0gJ2ZvbycKKyAgICAuLi4gICBmb28gPSBGb28oKQorICAgIC4uLiAgIGZvby5mb28oKQorICAgIC4uLgorICAgICdmb28nCisgICAgPj4+IG1vY2tfZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGZvbykKKworSWYgd2UgZG9uJ3QgdXNlIGBhdXRvc3BlYz1UcnVlYCB0aGVuIHRoZSB1bmJvdW5kIG1ldGhvZCBpcyBwYXRjaGVkIG91dAord2l0aCBhIE1vY2sgaW5zdGFuY2UgaW5zdGVhZCwgYW5kIGlzbid0IGNhbGxlZCB3aXRoIGBzZWxmYC4KKworCitDaGVja2luZyBtdWx0aXBsZSBjYWxscyB3aXRoIG1vY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCittb2NrIGhhcyBhIG5pY2UgQVBJIGZvciBtYWtpbmcgYXNzZXJ0aW9ucyBhYm91dCBob3cgeW91ciBtb2NrIG9iamVjdHMgYXJlIHVzZWQuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLmZvb19iYXIucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgID4+PiBtb2NrLmZvb19iYXIoJ2JheicsIHNwYW09J2VnZ3MnKQorICAgID4+PiBtb2NrLmZvb19iYXIuYXNzZXJ0X2NhbGxlZF93aXRoKCdiYXonLCBzcGFtPSdlZ2dzJykKKworSWYgeW91ciBtb2NrIGlzIG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgeW91IGNhbiB1c2UgdGhlCis6bWV0aDpgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIG1ldGhvZCB0aGF0IGFsc28gYXNzZXJ0cyB0aGF0IHRoZQorOmF0dHI6YGNhbGxfY291bnRgIGlzIG9uZS4KKworICAgID4+PiBtb2NrLmZvb19iYXIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JheicsIHNwYW09J2VnZ3MnKQorICAgID4+PiBtb2NrLmZvb19iYXIoKQorICAgID4+PiBtb2NrLmZvb19iYXIuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JheicsIHNwYW09J2VnZ3MnKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworQm90aCBgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgYGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCBtYWtlIGFzc2VydGlvbnMgYWJvdXQKK3RoZSAqbW9zdCByZWNlbnQqIGNhbGwuIElmIHlvdXIgbW9jayBpcyBnb2luZyB0byBiZSBjYWxsZWQgc2V2ZXJhbCB0aW1lcywgYW5kCit5b3Ugd2FudCB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgKmFsbCogdGhvc2UgY2FsbHMgeW91IGNhbiB1c2UKKzphdHRyOmB+TW9jay5jYWxsX2FyZ3NfbGlzdGA6CisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soMSwgMiwgMykKKyAgICA+Pj4gbW9jayg0LCA1LCA2KQorICAgID4+PiBtb2NrKCkKKyAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdAorICAgIFtjYWxsKDEsIDIsIDMpLCBjYWxsKDQsIDUsIDYpLCBjYWxsKCldCisKK1RoZSA6ZGF0YTpgY2FsbGAgaGVscGVyIG1ha2VzIGl0IGVhc3kgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IHRoZXNlIGNhbGxzLiBZb3UKK2NhbiBidWlsZCB1cCBhIGxpc3Qgb2YgZXhwZWN0ZWQgY2FsbHMgYW5kIGNvbXBhcmUgaXQgdG8gYGNhbGxfYXJnc19saXN0YC4gVGhpcworbG9va3MgcmVtYXJrYWJseSBzaW1pbGFyIHRvIHRoZSByZXByIG9mIHRoZSBgY2FsbF9hcmdzX2xpc3RgOgorCisgICAgPj4+IGV4cGVjdGVkID0gW2NhbGwoMSwgMiwgMyksIGNhbGwoNCwgNSwgNiksIGNhbGwoKV0KKyAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdCA9PSBleHBlY3RlZAorICAgIFRydWUKKworCitDb3Bpbmcgd2l0aCBtdXRhYmxlIGFyZ3VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW5vdGhlciBzaXR1YXRpb24gaXMgcmFyZSwgYnV0IGNhbiBiaXRlIHlvdSwgaXMgd2hlbiB5b3VyIG1vY2sgaXMgY2FsbGVkIHdpdGgKK211dGFibGUgYXJndW1lbnRzLiBgY2FsbF9hcmdzYCBhbmQgYGNhbGxfYXJnc19saXN0YCBzdG9yZSAqcmVmZXJlbmNlcyogdG8gdGhlCithcmd1bWVudHMuIElmIHRoZSBhcmd1bWVudHMgYXJlIG11dGF0ZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdCB0aGVuIHlvdSBjYW4gbm8KK2xvbmdlciBtYWtlIGFzc2VydGlvbnMgYWJvdXQgd2hhdCB0aGUgdmFsdWVzIHdlcmUgd2hlbiB0aGUgbW9jayB3YXMgY2FsbGVkLgorCitIZXJlJ3Mgc29tZSBleGFtcGxlIGNvZGUgdGhhdCBzaG93cyB0aGUgcHJvYmxlbS4gSW1hZ2luZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucworZGVmaW5lZCBpbiAnbXltb2R1bGUnOjoKKworICAgIGRlZiBmcm9iKHZhbCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBncm9iKHZhbCk6CisgICAgICAgICJGaXJzdCBmcm9iIGFuZCB0aGVuIGNsZWFyIHZhbCIKKyAgICAgICAgZnJvYih2YWwpCisgICAgICAgIHZhbC5jbGVhcigpCisKK1doZW4gd2UgdHJ5IHRvIHRlc3QgdGhhdCBgZ3JvYmAgY2FsbHMgYGZyb2JgIHdpdGggdGhlIGNvcnJlY3QgYXJndW1lbnQgbG9vaword2hhdCBoYXBwZW5zOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ215bW9kdWxlLmZyb2InKSBhcyBtb2NrX2Zyb2I6CisgICAgLi4uICAgICB2YWwgPSBzZXQoWzZdKQorICAgIC4uLiAgICAgbXltb2R1bGUuZ3JvYih2YWwpCisgICAgLi4uCisgICAgPj4+IHZhbAorICAgIHNldChbXSkKKyAgICA+Pj4gbW9ja19mcm9iLmFzc2VydF9jYWxsZWRfd2l0aChzZXQoWzZdKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZDogKChzZXQoWzZdKSwpLCB7fSkKKyAgICBDYWxsZWQgd2l0aDogKChzZXQoW10pLCksIHt9KQorCitPbmUgcG9zc2liaWxpdHkgd291bGQgYmUgZm9yIG1vY2sgdG8gY29weSB0aGUgYXJndW1lbnRzIHlvdSBwYXNzIGluLiBUaGlzCitjb3VsZCB0aGVuIGNhdXNlIHByb2JsZW1zIGlmIHlvdSBkbyBhc3NlcnRpb25zIHRoYXQgcmVseSBvbiBvYmplY3QgaWRlbnRpdHkKK2ZvciBlcXVhbGl0eS4KKworSGVyZSdzIG9uZSBzb2x1dGlvbiB0aGF0IHVzZXMgdGhlIDphdHRyOmBzaWRlX2VmZmVjdGAKK2Z1bmN0aW9uYWxpdHkuIElmIHlvdSBwcm92aWRlIGEgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBmb3IgYSBtb2NrIHRoZW4KK2BzaWRlX2VmZmVjdGAgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgc2FtZSBhcmdzIGFzIHRoZSBtb2NrLiBUaGlzIGdpdmVzIHVzIGFuCitvcHBvcnR1bml0eSB0byBjb3B5IHRoZSBhcmd1bWVudHMgYW5kIHN0b3JlIHRoZW0gZm9yIGxhdGVyIGFzc2VydGlvbnMuIEluIHRoaXMKK2V4YW1wbGUgSSdtIHVzaW5nICphbm90aGVyKiBtb2NrIHRvIHN0b3JlIHRoZSBhcmd1bWVudHMgc28gdGhhdCBJIGNhbiB1c2UgdGhlCittb2NrIG1ldGhvZHMgZm9yIGRvaW5nIHRoZSBhc3NlcnRpb24uIEFnYWluIGEgaGVscGVyIGZ1bmN0aW9uIHNldHMgdGhpcyB1cCBmb3IKK21lLgorCisgICAgPj4+IGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKKyAgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBwYXRjaCwgREVGQVVMVAorICAgID4+PiBkZWYgY29weV9jYWxsX2FyZ3MobW9jayk6CisgICAgLi4uICAgICBuZXdfbW9jayA9IE1vY2soKQorICAgIC4uLiAgICAgZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgLi4uICAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MpCisgICAgLi4uICAgICAgICAga3dhcmdzID0gZGVlcGNvcHkoa3dhcmdzKQorICAgIC4uLiAgICAgICAgIG5ld19tb2NrKCphcmdzLCAqKmt3YXJncykKKyAgICAuLi4gICAgICAgICByZXR1cm4gREVGQVVMVAorICAgIC4uLiAgICAgbW9jay5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgLi4uICAgICByZXR1cm4gbmV3X21vY2sKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuZnJvYicpIGFzIG1vY2tfZnJvYjoKKyAgICAuLi4gICAgIG5ld19tb2NrID0gY29weV9jYWxsX2FyZ3MobW9ja19mcm9iKQorICAgIC4uLiAgICAgdmFsID0gc2V0KFs2XSkKKyAgICAuLi4gICAgIG15bW9kdWxlLmdyb2IodmFsKQorICAgIC4uLgorICAgID4+PiBuZXdfbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KFs2XSkpCisgICAgPj4+IG5ld19tb2NrLmNhbGxfYXJncworICAgIGNhbGwoc2V0KFs2XSkpCisKK2Bjb3B5X2NhbGxfYXJnc2AgaXMgY2FsbGVkIHdpdGggdGhlIG1vY2sgdGhhdCB3aWxsIGJlIGNhbGxlZC4gSXQgcmV0dXJucyBhIG5ldworbW9jayB0aGF0IHdlIGRvIHRoZSBhc3NlcnRpb24gb24uIFRoZSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uIG1ha2VzIGEgY29weSBvZgordGhlIGFyZ3MgYW5kIGNhbGxzIG91ciBgbmV3X21vY2tgIHdpdGggdGhlIGNvcHkuCisKKy4uIG5vdGU6OgorCisgICAgSWYgeW91ciBtb2NrIGlzIG9ubHkgZ29pbmcgdG8gYmUgdXNlZCBvbmNlIHRoZXJlIGlzIGFuIGVhc2llciB3YXkgb2YKKyAgICBjaGVja2luZyBhcmd1bWVudHMgYXQgdGhlIHBvaW50IHRoZXkgYXJlIGNhbGxlZC4gWW91IGNhbiBzaW1wbHkgZG8gdGhlCisgICAgY2hlY2tpbmcgaW5zaWRlIGEgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbi4KKworICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KGFyZyk6CisgICAgICAgIC4uLiAgICAgYXNzZXJ0IGFyZyA9PSBzZXQoWzZdKQorICAgICAgICAuLi4KKyAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgICAgICA+Pj4gbW9jayhzZXQoWzZdKSkKKyAgICAgICAgPj4+IG1vY2soc2V0KCkpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICBBc3NlcnRpb25FcnJvcgorCitBbiBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBzdWJjbGFzcyBvZiBgTW9ja2Agb3IgYE1hZ2ljTW9ja2AgdGhhdAorY29waWVzICh1c2luZyA6ZnVuYzpgY29weS5kZWVwY29weWApIHRoZSBhcmd1bWVudHMuCitIZXJlJ3MgYW4gZXhhbXBsZSBpbXBsZW1lbnRhdGlvbjoKKworICAgID4+PiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CisgICAgPj4+IGNsYXNzIENvcHlpbmdNb2NrKE1hZ2ljTW9jayk6CisgICAgLi4uICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAuLi4gICAgICAgICBhcmdzID0gZGVlcGNvcHkoYXJncykKKyAgICAuLi4gICAgICAgICBrd2FyZ3MgPSBkZWVwY29weShrd2FyZ3MpCisgICAgLi4uICAgICAgICAgcmV0dXJuIHN1cGVyKENvcHlpbmdNb2NrLCBzZWxmKS5fX2NhbGxfXygqYXJncywgKiprd2FyZ3MpCisgICAgLi4uCisgICAgPj4+IGMgPSBDb3B5aW5nTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gYXJnID0gc2V0KCkKKyAgICA+Pj4gYyhhcmcpCisgICAgPj4+IGFyZy5hZGQoMSkKKyAgICA+Pj4gYy5hc3NlcnRfY2FsbGVkX3dpdGgoc2V0KCkpCisgICAgPj4+IGMuYXNzZXJ0X2NhbGxlZF93aXRoKGFyZykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCBjYWxsOiBtb2NrKHNldChbMV0pKQorICAgIEFjdHVhbCBjYWxsOiBtb2NrKHNldChbXSkpCisgICAgPj4+IGMuZm9vCisgICAgPENvcHlpbmdNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKworV2hlbiB5b3Ugc3ViY2xhc3MgYE1vY2tgIG9yIGBNYWdpY01vY2tgIGFsbCBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMsCithbmQgdGhlIGByZXR1cm5fdmFsdWVgIHdpbGwgdXNlIHlvdXIgc3ViY2xhc3MgYXV0b21hdGljYWxseS4gVGhhdCBtZWFucyBhbGwKK2NoaWxkcmVuIG9mIGEgYENvcHlpbmdNb2NrYCB3aWxsIGFsc28gaGF2ZSB0aGUgdHlwZSBgQ29weWluZ01vY2tgLgorCisKK05lc3RpbmcgUGF0Y2hlcworLS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHBhdGNoIGFzIGEgY29udGV4dCBtYW5hZ2VyIGlzIG5pY2UsIGJ1dCBpZiB5b3UgZG8gbXVsdGlwbGUgcGF0Y2hlcyB5b3UKK2NhbiBlbmQgdXAgd2l0aCBuZXN0ZWQgd2l0aCBzdGF0ZW1lbnRzIGluZGVudGluZyBmdXJ0aGVyIGFuZCBmdXJ0aGVyIHRvIHRoZQorcmlnaHQ6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5Gb28nKSBhcyBtb2NrX2ZvbzoKKyAgICAuLi4gICAgICAgICAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuQmFyJykgYXMgbW9ja19iYXI6CisgICAgLi4uICAgICAgICAgICAgICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5TcGFtJykgYXMgbW9ja19zcGFtOgorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBteW1vZHVsZS5Gb28gaXMgbW9ja19mb28KKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXltb2R1bGUuQmFyIGlzIG1vY2tfYmFyCisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLlNwYW0gaXMgbW9ja19zcGFtCisgICAgLi4uCisgICAgPj4+IG9yaWdpbmFsID0gbXltb2R1bGUuRm9vCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS50ZXN0X2ZvbygpCisgICAgPj4+IGFzc2VydCBteW1vZHVsZS5Gb28gaXMgb3JpZ2luYWwKKworV2l0aCB1bml0dGVzdCBgY2xlYW51cGAgZnVuY3Rpb25zIGFuZCB0aGUgOnJlZjpgc3RhcnQtYW5kLXN0b3BgIHdlIGNhbgorYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3Qgd2l0aG91dCB0aGUgbmVzdGVkIGluZGVudGF0aW9uLiBBIHNpbXBsZSBoZWxwZXIKK21ldGhvZCwgYGNyZWF0ZV9wYXRjaGAsIHB1dHMgdGhlIHBhdGNoIGluIHBsYWNlIGFuZCByZXR1cm5zIHRoZSBjcmVhdGVkIG1vY2sKK2ZvciB1czoKKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBuYW1lKToKKyAgICAuLi4gICAgICAgICBwYXRjaGVyID0gcGF0Y2gobmFtZSkKKyAgICAuLi4gICAgICAgICB0aGluZyA9IHBhdGNoZXIuc3RhcnQoKQorICAgIC4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisgICAgLi4uICAgICAgICAgcmV0dXJuIHRoaW5nCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9mb28oc2VsZik6CisgICAgLi4uICAgICAgICAgbW9ja19mb28gPSBzZWxmLmNyZWF0ZV9wYXRjaCgnbXltb2R1bGUuRm9vJykKKyAgICAuLi4gICAgICAgICBtb2NrX2JhciA9IHNlbGYuY3JlYXRlX3BhdGNoKCdteW1vZHVsZS5CYXInKQorICAgIC4uLiAgICAgICAgIG1vY2tfc3BhbSA9IHNlbGYuY3JlYXRlX3BhdGNoKCdteW1vZHVsZS5TcGFtJykKKyAgICAuLi4KKyAgICAuLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG1vY2tfZm9vCisgICAgLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkJhciBpcyBtb2NrX2JhcgorICAgIC4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5TcGFtIGlzIG1vY2tfc3BhbQorICAgIC4uLgorICAgID4+PiBvcmlnaW5hbCA9IG15bW9kdWxlLkZvbworICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykucnVuKCkKKyAgICA+Pj4gYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBvcmlnaW5hbAorCisKK01vY2tpbmcgYSBkaWN0aW9uYXJ5IHdpdGggTWFnaWNNb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3UgbWF5IHdhbnQgdG8gbW9jayBhIGRpY3Rpb25hcnksIG9yIG90aGVyIGNvbnRhaW5lciBvYmplY3QsIHJlY29yZGluZyBhbGwKK2FjY2VzcyB0byBpdCB3aGlsc3QgaGF2aW5nIGl0IHN0aWxsIGJlaGF2ZSBsaWtlIGEgZGljdGlvbmFyeS4KKworV2UgY2FuIGRvIHRoaXMgd2l0aCA6Y2xhc3M6YE1hZ2ljTW9ja2AsIHdoaWNoIHdpbGwgYmVoYXZlIGxpa2UgYSBkaWN0aW9uYXJ5LAorYW5kIHVzaW5nIDpkYXRhOmB+TW9jay5zaWRlX2VmZmVjdGAgdG8gZGVsZWdhdGUgZGljdGlvbmFyeSBhY2Nlc3MgdG8gYSByZWFsCit1bmRlcmx5aW5nIGRpY3Rpb25hcnkgdGhhdCBpcyB1bmRlciBvdXIgY29udHJvbC4KKworV2hlbiB0aGUgYF9fZ2V0aXRlbV9fYCBhbmQgYF9fc2V0aXRlbV9fYCBtZXRob2RzIG9mIG91ciBgTWFnaWNNb2NrYCBhcmUgY2FsbGVkCisobm9ybWFsIGRpY3Rpb25hcnkgYWNjZXNzKSB0aGVuIGBzaWRlX2VmZmVjdGAgaXMgY2FsbGVkIHdpdGggdGhlIGtleSAoYW5kIGluCit0aGUgY2FzZSBvZiBgX19zZXRpdGVtX19gIHRoZSB2YWx1ZSB0b28pLiBXZSBjYW4gYWxzbyBjb250cm9sIHdoYXQgaXMgcmV0dXJuZWQuCisKK0FmdGVyIHRoZSBgTWFnaWNNb2NrYCBoYXMgYmVlbiB1c2VkIHdlIGNhbiB1c2UgYXR0cmlidXRlcyBsaWtlCis6ZGF0YTpgfk1vY2suY2FsbF9hcmdzX2xpc3RgIHRvIGFzc2VydCBhYm91dCBob3cgdGhlIGRpY3Rpb25hcnkgd2FzIHVzZWQ6CisKKyAgICA+Pj4gbXlfZGljdCA9IHsnYSc6IDEsICdiJzogMiwgJ2MnOiAzfQorICAgID4+PiBkZWYgZ2V0aXRlbShuYW1lKToKKyAgICAuLi4gICAgICByZXR1cm4gbXlfZGljdFtuYW1lXQorICAgIC4uLgorICAgID4+PiBkZWYgc2V0aXRlbShuYW1lLCB2YWwpOgorICAgIC4uLiAgICAgbXlfZGljdFtuYW1lXSA9IHZhbAorICAgIC4uLgorICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IGdldGl0ZW0KKyAgICA+Pj4gbW9jay5fX3NldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IHNldGl0ZW0KKworLi4gbm90ZTo6CisKKyAgICBBbiBhbHRlcm5hdGl2ZSB0byB1c2luZyBgTWFnaWNNb2NrYCBpcyB0byB1c2UgYE1vY2tgIGFuZCAqb25seSogcHJvdmlkZQorICAgIHRoZSBtYWdpYyBtZXRob2RzIHlvdSBzcGVjaWZpY2FsbHkgd2FudDoKKworICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICA+Pj4gbW9jay5fX3NldGl0ZW1fXyA9IE1vY2soc2lkZV9lZmZlY3Q9Z2V0aXRlbSkKKyAgICAgICAgPj4+IG1vY2suX19nZXRpdGVtX18gPSBNb2NrKHNpZGVfZWZmZWN0PXNldGl0ZW0pCisKKyAgICBBICp0aGlyZCogb3B0aW9uIGlzIHRvIHVzZSBgTWFnaWNNb2NrYCBidXQgcGFzc2luZyBpbiBgZGljdGAgYXMgdGhlIGBzcGVjYAorICAgIChvciBgc3BlY19zZXRgKSBhcmd1bWVudCBzbyB0aGF0IHRoZSBgTWFnaWNNb2NrYCBjcmVhdGVkIG9ubHkgaGFzCisgICAgZGljdGlvbmFyeSBtYWdpYyBtZXRob2RzIGF2YWlsYWJsZToKKworICAgICAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhzcGVjX3NldD1kaWN0KQorICAgICAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IGdldGl0ZW0KKyAgICAgICAgPj4+IG1vY2suX19zZXRpdGVtX18uc2lkZV9lZmZlY3QgPSBzZXRpdGVtCisKK1dpdGggdGhlc2Ugc2lkZSBlZmZlY3QgZnVuY3Rpb25zIGluIHBsYWNlLCB0aGUgYG1vY2tgIHdpbGwgYmVoYXZlIGxpa2UgYSBub3JtYWwKK2RpY3Rpb25hcnkgYnV0IHJlY29yZGluZyB0aGUgYWNjZXNzLiBJdCBldmVuIHJhaXNlcyBhIGBLZXlFcnJvcmAgaWYgeW91IHRyeQordG8gYWNjZXNzIGEga2V5IHRoYXQgZG9lc24ndCBleGlzdC4KKworICAgID4+PiBtb2NrWydhJ10KKyAgICAxCisgICAgPj4+IG1vY2tbJ2MnXQorICAgIDMKKyAgICA+Pj4gbW9ja1snZCddCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBLZXlFcnJvcjogJ2QnCisgICAgPj4+IG1vY2tbJ2InXSA9ICdmaXNoJworICAgID4+PiBtb2NrWydkJ10gPSAnZWdncycKKyAgICA+Pj4gbW9ja1snYiddCisgICAgJ2Zpc2gnCisgICAgPj4+IG1vY2tbJ2QnXQorICAgICdlZ2dzJworCitBZnRlciBpdCBoYXMgYmVlbiB1c2VkIHlvdSBjYW4gbWFrZSBhc3NlcnRpb25zIGFib3V0IHRoZSBhY2Nlc3MgdXNpbmcgdGhlIG5vcm1hbAorbW9jayBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorCisgICAgPj4+IG1vY2suX19nZXRpdGVtX18uY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgnYScpLCBjYWxsKCdjJyksIGNhbGwoJ2QnKSwgY2FsbCgnYicpLCBjYWxsKCdkJyldCisgICAgPj4+IG1vY2suX19zZXRpdGVtX18uY2FsbF9hcmdzX2xpc3QKKyAgICBbY2FsbCgnYicsICdmaXNoJyksIGNhbGwoJ2QnLCAnZWdncycpXQorICAgID4+PiBteV9kaWN0CisgICAgeydhJzogMSwgJ2MnOiAzLCAnYic6ICdmaXNoJywgJ2QnOiAnZWdncyd9CisKKworTW9jayBzdWJjbGFzc2VzIGFuZCB0aGVpciBhdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHZhcmlvdXMgcmVhc29ucyB3aHkgeW91IG1pZ2h0IHdhbnQgdG8gc3ViY2xhc3MgYE1vY2tgLiBPbmUgcmVhc29uCittaWdodCBiZSB0byBhZGQgaGVscGVyIG1ldGhvZHMuIEhlcmUncyBhIHNpbGx5IGV4YW1wbGU6CisKKyAgICA+Pj4gY2xhc3MgTXlNb2NrKE1hZ2ljTW9jayk6CisgICAgLi4uICAgICBkZWYgaGFzX2JlZW5fY2FsbGVkKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBzZWxmLmNhbGxlZAorICAgIC4uLgorICAgID4+PiBteW1vY2sgPSBNeU1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG15bW9jaworICAgIDxNeU1vY2sgaWQ9Jy4uLic+CisgICAgPj4+IG15bW9jay5oYXNfYmVlbl9jYWxsZWQoKQorICAgIEZhbHNlCisgICAgPj4+IG15bW9jaygpCisgICAgPj4+IG15bW9jay5oYXNfYmVlbl9jYWxsZWQoKQorICAgIFRydWUKKworVGhlIHN0YW5kYXJkIGJlaGF2aW91ciBmb3IgYE1vY2tgIGluc3RhbmNlcyBpcyB0aGF0IGF0dHJpYnV0ZXMgYW5kIHRoZSByZXR1cm4KK3ZhbHVlIG1vY2tzIGFyZSBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBtb2NrIHRoZXkgYXJlIGFjY2Vzc2VkIG9uLiBUaGlzIGVuc3VyZXMKK3RoYXQgYE1vY2tgIGF0dHJpYnV0ZXMgYXJlIGBNb2Nrc2AgYW5kIGBNYWdpY01vY2tgIGF0dHJpYnV0ZXMgYXJlIGBNYWdpY01vY2tzYAorWyNdXy4gU28gaWYgeW91J3JlIHN1YmNsYXNzaW5nIHRvIGFkZCBoZWxwZXIgbWV0aG9kcyB0aGVuIHRoZXknbGwgYWxzbyBiZQorYXZhaWxhYmxlIG9uIHRoZSBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUgbW9jayBvZiBpbnN0YW5jZXMgb2YgeW91cgorc3ViY2xhc3MuCisKKyAgICA+Pj4gbXltb2NrLmZvbworICAgIDxNeU1vY2sgbmFtZT0nbW9jay5mb28nIGlkPScuLi4nPgorICAgID4+PiBteW1vY2suZm9vLmhhc19iZWVuX2NhbGxlZCgpCisgICAgRmFsc2UKKyAgICA+Pj4gbXltb2NrLmZvbygpCisgICAgPE15TW9jayBuYW1lPSdtb2NrLmZvbygpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbXltb2NrLmZvby5oYXNfYmVlbl9jYWxsZWQoKQorICAgIFRydWUKKworU29tZXRpbWVzIHRoaXMgaXMgaW5jb252ZW5pZW50LiBGb3IgZXhhbXBsZSwgYG9uZSB1c2VyCis8aHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9tb2NrL2lzc3Vlcy9kZXRhaWw/aWQ9MTA1PmBfIGlzIHN1YmNsYXNzaW5nIG1vY2sgdG8KK2NyZWF0ZWQgYSBgVHdpc3RlZCBhZGFwdG9yCis8aHR0cDovL3R3aXN0ZWRtYXRyaXguY29tL2RvY3VtZW50cy8xMS4wLjAvYXBpL3R3aXN0ZWQucHl0aG9uLmNvbXBvbmVudHMuaHRtbD5gXy4KK0hhdmluZyB0aGlzIGFwcGxpZWQgdG8gYXR0cmlidXRlcyB0b28gYWN0dWFsbHkgY2F1c2VzIGVycm9ycy4KKworYE1vY2tgIChpbiBhbGwgaXRzIGZsYXZvdXJzKSB1c2VzIGEgbWV0aG9kIGNhbGxlZCBgX2dldF9jaGlsZF9tb2NrYCB0byBjcmVhdGUKK3RoZXNlICJzdWItbW9ja3MiIGZvciBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWVzLiBZb3UgY2FuIHByZXZlbnQgeW91cgorc3ViY2xhc3MgYmVpbmcgdXNlZCBmb3IgYXR0cmlidXRlcyBieSBvdmVycmlkaW5nIHRoaXMgbWV0aG9kLiBUaGUgc2lnbmF0dXJlIGlzCit0aGF0IGl0IHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyAoYCoqa3dhcmdzYCkgd2hpY2ggYXJlIHRoZW4gcGFzc2VkCitvbnRvIHRoZSBtb2NrIGNvbnN0cnVjdG9yOgorCisgICAgPj4+IGNsYXNzIFN1YmNsYXNzKE1hZ2ljTW9jayk6CisgICAgLi4uICAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgIC4uLgorICAgID4+PiBteW1vY2sgPSBTdWJjbGFzcygpCisgICAgPj4+IG15bW9jay5mb28KKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suZm9vJyBpZD0nLi4uJz4KKyAgICA+Pj4gYXNzZXJ0IGlzaW5zdGFuY2UobXltb2NrLCBTdWJjbGFzcykKKyAgICA+Pj4gYXNzZXJ0IG5vdCBpc2luc3RhbmNlKG15bW9jay5mb28sIFN1YmNsYXNzKQorICAgID4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrKCksIFN1YmNsYXNzKQorCisuLiBbI10gQW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSBhcmUgdGhlIG5vbi1jYWxsYWJsZSBtb2Nrcy4gQXR0cmlidXRlcyB1c2UgdGhlCisgICAgY2FsbGFibGUgdmFyaWFudCBiZWNhdXNlIG90aGVyd2lzZSBub24tY2FsbGFibGUgbW9ja3MgY291bGRuJ3QgaGF2ZSBjYWxsYWJsZQorICAgIG1ldGhvZHMuCisKKworTW9ja2luZyBpbXBvcnRzIHdpdGggcGF0Y2guZGljdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgc2l0dWF0aW9uIHdoZXJlIG1vY2tpbmcgY2FuIGJlIGhhcmQgaXMgd2hlcmUgeW91IGhhdmUgYSBsb2NhbCBpbXBvcnQgaW5zaWRlCithIGZ1bmN0aW9uLiBUaGVzZSBhcmUgaGFyZGVyIHRvIG1vY2sgYmVjYXVzZSB0aGV5IGFyZW4ndCB1c2luZyBhbiBvYmplY3QgZnJvbQordGhlIG1vZHVsZSBuYW1lc3BhY2UgdGhhdCB3ZSBjYW4gcGF0Y2ggb3V0LgorCitHZW5lcmFsbHkgbG9jYWwgaW1wb3J0cyBhcmUgdG8gYmUgYXZvaWRlZC4gVGhleSBhcmUgc29tZXRpbWVzIGRvbmUgdG8gcHJldmVudAorY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBmb3Igd2hpY2ggdGhlcmUgaXMgKnVzdWFsbHkqIGEgbXVjaCBiZXR0ZXIgd2F5IHRvIHNvbHZlCit0aGUgcHJvYmxlbSAocmVmYWN0b3IgdGhlIGNvZGUpIG9yIHRvIHByZXZlbnQgInVwIGZyb250IGNvc3RzIiBieSBkZWxheWluZyB0aGUKK2ltcG9ydC4gVGhpcyBjYW4gYWxzbyBiZSBzb2x2ZWQgaW4gYmV0dGVyIHdheXMgdGhhbiBhbiB1bmNvbmRpdGlvbmFsIGxvY2FsCitpbXBvcnQgKHN0b3JlIHRoZSBtb2R1bGUgYXMgYSBjbGFzcyBvciBtb2R1bGUgYXR0cmlidXRlIGFuZCBvbmx5IGRvIHRoZSBpbXBvcnQKK29uIGZpcnN0IHVzZSkuCisKK1RoYXQgYXNpZGUgdGhlcmUgaXMgYSB3YXkgdG8gdXNlIGBtb2NrYCB0byBhZmZlY3QgdGhlIHJlc3VsdHMgb2YgYW4gaW1wb3J0LgorSW1wb3J0aW5nIGZldGNoZXMgYW4gKm9iamVjdCogZnJvbSB0aGUgYHN5cy5tb2R1bGVzYCBkaWN0aW9uYXJ5LiBOb3RlIHRoYXQgaXQKK2ZldGNoZXMgYW4gKm9iamVjdCosIHdoaWNoIG5lZWQgbm90IGJlIGEgbW9kdWxlLiBJbXBvcnRpbmcgYSBtb2R1bGUgZm9yIHRoZQorZmlyc3QgdGltZSByZXN1bHRzIGluIGEgbW9kdWxlIG9iamVjdCBiZWluZyBwdXQgaW4gYHN5cy5tb2R1bGVzYCwgc28gdXN1YWxseQord2hlbiB5b3UgaW1wb3J0IHNvbWV0aGluZyB5b3UgZ2V0IGEgbW9kdWxlIGJhY2suIFRoaXMgbmVlZCBub3QgYmUgdGhlIGNhc2UKK2hvd2V2ZXIuCisKK1RoaXMgbWVhbnMgeW91IGNhbiB1c2UgOmZ1bmM6YHBhdGNoLmRpY3RgIHRvICp0ZW1wb3JhcmlseSogcHV0IGEgbW9jayBpbiBwbGFjZQoraW4gYHN5cy5tb2R1bGVzYC4gQW55IGltcG9ydHMgd2hpbHN0IHRoaXMgcGF0Y2ggaXMgYWN0aXZlIHdpbGwgZmV0Y2ggdGhlIG1vY2suCitXaGVuIHRoZSBwYXRjaCBpcyBjb21wbGV0ZSAodGhlIGRlY29yYXRlZCBmdW5jdGlvbiBleGl0cywgdGhlIHdpdGggc3RhdGVtZW50Citib2R5IGlzIGNvbXBsZXRlIG9yIGBwYXRjaGVyLnN0b3AoKWAgaXMgY2FsbGVkKSB0aGVuIHdoYXRldmVyIHdhcyB0aGVyZQorcHJldmlvdXNseSB3aWxsIGJlIHJlc3RvcmVkIHNhZmVseS4KKworSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBtb2NrcyBvdXQgdGhlICdmb29ibGUnIG1vZHVsZS4KKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCB7J2Zvb2JsZSc6IG1vY2t9KToKKyAgICAuLi4gICAgaW1wb3J0IGZvb2JsZQorICAgIC4uLiAgICBmb29ibGUuYmxvYigpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5ibG9iKCknIGlkPScuLi4nPgorICAgID4+PiBhc3NlcnQgJ2Zvb2JsZScgbm90IGluIHN5cy5tb2R1bGVzCisgICAgPj4+IG1vY2suYmxvYi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKK0FzIHlvdSBjYW4gc2VlIHRoZSBgaW1wb3J0IGZvb2JsZWAgc3VjY2VlZHMsIGJ1dCBvbiBleGl0IHRoZXJlIGlzIG5vICdmb29ibGUnCitsZWZ0IGluIGBzeXMubW9kdWxlc2AuCisKK1RoaXMgYWxzbyB3b3JrcyBmb3IgdGhlIGBmcm9tIG1vZHVsZSBpbXBvcnQgbmFtZWAgZm9ybToKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCB7J2Zvb2JsZSc6IG1vY2t9KToKKyAgICAuLi4gICAgZnJvbSBmb29ibGUgaW1wb3J0IGJsb2IKKyAgICAuLi4gICAgYmxvYi5ibGlwKCkKKyAgICAuLi4KKyAgICA8TW9jayBuYW1lPSdtb2NrLmJsb2IuYmxpcCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5ibG9iLmJsaXAuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCitXaXRoIHNsaWdodGx5IG1vcmUgd29yayB5b3UgY2FuIGFsc28gbW9jayBwYWNrYWdlIGltcG9ydHM6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2R1bGVzID0geydwYWNrYWdlJzogbW9jaywgJ3BhY2thZ2UubW9kdWxlJzogbW9jay5tb2R1bGV9CisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBtb2R1bGVzKToKKyAgICAuLi4gICAgZnJvbSBwYWNrYWdlLm1vZHVsZSBpbXBvcnQgZm9vYmxlCisgICAgLi4uICAgIGZvb2JsZSgpCisgICAgLi4uCisgICAgPE1vY2sgbmFtZT0nbW9jay5tb2R1bGUuZm9vYmxlKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1vZHVsZS5mb29ibGUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisKK1RyYWNraW5nIG9yZGVyIG9mIGNhbGxzIGFuZCBsZXNzIHZlcmJvc2UgY2FsbCBhc3NlcnRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBNb2NrYCBjbGFzcyBhbGxvd3MgeW91IHRvIHRyYWNrIHRoZSAqb3JkZXIqIG9mIG1ldGhvZCBjYWxscyBvbgoreW91ciBtb2NrIG9iamVjdHMgdGhyb3VnaCB0aGUgOmF0dHI6YH5Nb2NrLm1ldGhvZF9jYWxsc2AgYXR0cmlidXRlLiBUaGlzCitkb2Vzbid0IGFsbG93IHlvdSB0byB0cmFjayB0aGUgb3JkZXIgb2YgY2FsbHMgYmV0d2VlbiBzZXBhcmF0ZSBtb2NrIG9iamVjdHMsCitob3dldmVyIHdlIGNhbiB1c2UgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIHRvIGFjaGlldmUgdGhlIHNhbWUgZWZmZWN0LgorCitCZWNhdXNlIG1vY2tzIHRyYWNrIGNhbGxzIHRvIGNoaWxkIG1vY2tzIGluIGBtb2NrX2NhbGxzYCwgYW5kIGFjY2Vzc2luZyBhbgorYXJiaXRyYXJ5IGF0dHJpYnV0ZSBvZiBhIG1vY2sgY3JlYXRlcyBhIGNoaWxkIG1vY2ssIHdlIGNhbiBjcmVhdGUgb3VyIHNlcGFyYXRlCittb2NrcyBmcm9tIGEgcGFyZW50IG9uZS4gQ2FsbHMgdG8gdGhvc2UgY2hpbGQgbW9jayB3aWxsIHRoZW4gYWxsIGJlIHJlY29yZGVkLAoraW4gb3JkZXIsIGluIHRoZSBgbW9ja19jYWxsc2Agb2YgdGhlIHBhcmVudDoKKworICAgID4+PiBtYW5hZ2VyID0gTW9jaygpCisgICAgPj4+IG1vY2tfZm9vID0gbWFuYWdlci5mb28KKyAgICA+Pj4gbW9ja19iYXIgPSBtYW5hZ2VyLmJhcgorCisgICAgPj4+IG1vY2tfZm9vLnNvbWV0aGluZygpCisgICAgPE1vY2sgbmFtZT0nbW9jay5mb28uc29tZXRoaW5nKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrX2Jhci5vdGhlci50aGluZygpCisgICAgPE1vY2sgbmFtZT0nbW9jay5iYXIub3RoZXIudGhpbmcoKScgaWQ9Jy4uLic+CisKKyAgICA+Pj4gbWFuYWdlci5tb2NrX2NhbGxzCisgICAgW2NhbGwuZm9vLnNvbWV0aGluZygpLCBjYWxsLmJhci5vdGhlci50aGluZygpXQorCitXZSBjYW4gdGhlbiBhc3NlcnQgYWJvdXQgdGhlIGNhbGxzLCBpbmNsdWRpbmcgdGhlIG9yZGVyLCBieSBjb21wYXJpbmcgd2l0aAordGhlIGBtb2NrX2NhbGxzYCBhdHRyaWJ1dGUgb24gdGhlIG1hbmFnZXIgbW9jazoKKworICAgID4+PiBleHBlY3RlZF9jYWxscyA9IFtjYWxsLmZvby5zb21ldGhpbmcoKSwgY2FsbC5iYXIub3RoZXIudGhpbmcoKV0KKyAgICA+Pj4gbWFuYWdlci5tb2NrX2NhbGxzID09IGV4cGVjdGVkX2NhbGxzCisgICAgVHJ1ZQorCitJZiBgcGF0Y2hgIGlzIGNyZWF0aW5nLCBhbmQgcHV0dGluZyBpbiBwbGFjZSwgeW91ciBtb2NrcyB0aGVuIHlvdSBjYW4gYXR0YWNoCit0aGVtIHRvIGEgbWFuYWdlciBtb2NrIHVzaW5nIHRoZSA6bWV0aDpgfk1vY2suYXR0YWNoX21vY2tgIG1ldGhvZC4gQWZ0ZXIKK2F0dGFjaGluZyBjYWxscyB3aWxsIGJlIHJlY29yZGVkIGluIGBtb2NrX2NhbGxzYCBvZiB0aGUgbWFuYWdlci4KKworICAgID4+PiBtYW5hZ2VyID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuQ2xhc3MxJykgYXMgTW9ja0NsYXNzMToKKyAgICAuLi4gICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkNsYXNzMicpIGFzIE1vY2tDbGFzczI6CisgICAgLi4uICAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhNb2NrQ2xhc3MxLCAnTW9ja0NsYXNzMScpCisgICAgLi4uICAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhNb2NrQ2xhc3MyLCAnTW9ja0NsYXNzMicpCisgICAgLi4uICAgICAgICAgTW9ja0NsYXNzMSgpLmZvbygpCisgICAgLi4uICAgICAgICAgTW9ja0NsYXNzMigpLmJhcigpCisgICAgLi4uCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLk1vY2tDbGFzczEoKS5mb28oKScgaWQ9Jy4uLic+CisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLk1vY2tDbGFzczIoKS5iYXIoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1hbmFnZXIubW9ja19jYWxscworICAgIFtjYWxsLk1vY2tDbGFzczEoKSwKKyAgICAgY2FsbC5Nb2NrQ2xhc3MxKCkuZm9vKCksCisgICAgIGNhbGwuTW9ja0NsYXNzMigpLAorICAgICBjYWxsLk1vY2tDbGFzczIoKS5iYXIoKV0KKworSWYgbWFueSBjYWxscyBoYXZlIGJlZW4gbWFkZSwgYnV0IHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gYSBwYXJ0aWN1bGFyCitzZXF1ZW5jZSBvZiB0aGVtIHRoZW4gYW4gYWx0ZXJuYXRpdmUgaXMgdG8gdXNlIHRoZQorOm1ldGg6YH5Nb2NrLmFzc2VydF9oYXNfY2FsbHNgIG1ldGhvZC4gVGhpcyB0YWtlcyBhIGxpc3Qgb2YgY2FsbHMgKGNvbnN0cnVjdGVkCit3aXRoIHRoZSA6ZGF0YTpgY2FsbGAgb2JqZWN0KS4gSWYgdGhhdCBzZXF1ZW5jZSBvZiBjYWxscyBhcmUgaW4KKzphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCB0aGVuIHRoZSBhc3NlcnQgc3VjY2VlZHMuCisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oKS5mb28oKS5iYXIoKS5iYXooKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jaygpLmZvbygpLmJhcigpLmJheigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbS5vbmUoKS50d28oKS50aHJlZSgpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm9uZSgpLnR3bygpLnRocmVlKCknIGlkPScuLi4nPgorICAgID4+PiBjYWxscyA9IGNhbGwub25lKCkudHdvKCkudGhyZWUoKS5jYWxsX2xpc3QoKQorICAgID4+PiBtLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMpCisKK0V2ZW4gdGhvdWdoIHRoZSBjaGFpbmVkIGNhbGwgYG0ub25lKCkudHdvKCkudGhyZWUoKWAgYXJlbid0IHRoZSBvbmx5IGNhbGxzIHRoYXQKK2hhdmUgYmVlbiBtYWRlIHRvIHRoZSBtb2NrLCB0aGUgYXNzZXJ0IHN0aWxsIHN1Y2NlZWRzLgorCitTb21ldGltZXMgYSBtb2NrIG1heSBoYXZlIHNldmVyYWwgY2FsbHMgbWFkZSB0byBpdCwgYW5kIHlvdSBhcmUgb25seSBpbnRlcmVzdGVkCitpbiBhc3NlcnRpbmcgYWJvdXQgKnNvbWUqIG9mIHRob3NlIGNhbGxzLiBZb3UgbWF5IG5vdCBldmVuIGNhcmUgYWJvdXQgdGhlCitvcmRlci4gSW4gdGhpcyBjYXNlIHlvdSBjYW4gcGFzcyBgYW55X29yZGVyPVRydWVgIHRvIGBhc3NlcnRfaGFzX2NhbGxzYDoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbSgxKSwgbS50d28oMiwgMyksIG0uc2V2ZW4oNyksIG0uZmlmdHkoJzUwJykKKyAgICAoLi4uKQorICAgID4+PiBjYWxscyA9IFtjYWxsLmZpZnR5KCc1MCcpLCBjYWxsKDEpLCBjYWxsLnNldmVuKDcpXQorICAgID4+PiBtLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMsIGFueV9vcmRlcj1UcnVlKQorCisKK01vcmUgY29tcGxleCBhcmd1bWVudCBtYXRjaGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBzYW1lIGJhc2ljIGNvbmNlcHQgYXMgOmRhdGE6YEFOWWAgd2UgY2FuIGltcGxlbWVudCBtYXRjaGVycyB0byBkbyBtb3JlCitjb21wbGV4IGFzc2VydGlvbnMgb24gb2JqZWN0cyB1c2VkIGFzIGFyZ3VtZW50cyB0byBtb2Nrcy4KKworU3VwcG9zZSB3ZSBleHBlY3Qgc29tZSBvYmplY3QgdG8gYmUgcGFzc2VkIHRvIGEgbW9jayB0aGF0IGJ5IGRlZmF1bHQKK2NvbXBhcmVzIGVxdWFsIGJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSAod2hpY2ggaXMgdGhlIFB5dGhvbiBkZWZhdWx0IGZvciB1c2VyCitkZWZpbmVkIGNsYXNzZXMpLiBUbyB1c2UgOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgd2Ugd291bGQgbmVlZCB0byBwYXNzCitpbiB0aGUgZXhhY3Qgc2FtZSBvYmplY3QuIElmIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gc29tZSBvZiB0aGUgYXR0cmlidXRlcworb2YgdGhpcyBvYmplY3QgdGhlbiB3ZSBjYW4gY3JlYXRlIGEgbWF0Y2hlciB0aGF0IHdpbGwgY2hlY2sgdGhlc2UgYXR0cmlidXRlcworZm9yIHVzLgorCitZb3UgY2FuIHNlZSBpbiB0aGlzIGV4YW1wbGUgaG93IGEgJ3N0YW5kYXJkJyBjYWxsIHRvIGBhc3NlcnRfY2FsbGVkX3dpdGhgIGlzbid0CitzdWZmaWNpZW50OgorCisgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGIpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYSwgc2VsZi5iID0gYSwgYgorICAgIC4uLgorICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jayhGb28oMSwgMikpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEZvbygxLCAyKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZDogY2FsbCg8X19tYWluX18uRm9vIG9iamVjdCBhdCAweC4uLj4pCisgICAgQWN0dWFsIGNhbGw6IGNhbGwoPF9fbWFpbl9fLkZvbyBvYmplY3QgYXQgMHguLi4+KQorCitBIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIG91ciBgRm9vYCBjbGFzcyBtaWdodCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKyAgICA+Pj4gZGVmIGNvbXBhcmUoc2VsZiwgb3RoZXIpOgorICAgIC4uLiAgICAgaWYgbm90IHR5cGUoc2VsZikgPT0gdHlwZShvdGhlcik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgLi4uICAgICBpZiBzZWxmLmEgIT0gb3RoZXIuYToKKyAgICAuLi4gICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAuLi4gICAgIGlmIHNlbGYuYiAhPSBvdGhlci5iOgorICAgIC4uLiAgICAgICAgIHJldHVybiBGYWxzZQorICAgIC4uLiAgICAgcmV0dXJuIFRydWUKKyAgICAuLi4KKworQW5kIGEgbWF0Y2hlciBvYmplY3QgdGhhdCBjYW4gdXNlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGxpa2UgdGhpcyBmb3IgaXRzCitlcXVhbGl0eSBvcGVyYXRpb24gd291bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgICAgPj4+IGNsYXNzIE1hdGNoZXIob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21wYXJlLCBzb21lX29iaik6CisgICAgLi4uICAgICAgICAgc2VsZi5jb21wYXJlID0gY29tcGFyZQorICAgIC4uLiAgICAgICAgIHNlbGYuc29tZV9vYmogPSBzb21lX29iagorICAgIC4uLiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGFyZShzZWxmLnNvbWVfb2JqLCBvdGhlcikKKyAgICAuLi4KKworUHV0dGluZyBhbGwgdGhpcyB0b2dldGhlcjoKKworICAgID4+PiBtYXRjaF9mb28gPSBNYXRjaGVyKGNvbXBhcmUsIEZvbygxLCAyKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgobWF0Y2hfZm9vKQorCitUaGUgYE1hdGNoZXJgIGlzIGluc3RhbnRpYXRlZCB3aXRoIG91ciBjb21wYXJlIGZ1bmN0aW9uIGFuZCB0aGUgYEZvb2Agb2JqZWN0Cit3ZSB3YW50IHRvIGNvbXBhcmUgYWdhaW5zdC4gSW4gYGFzc2VydF9jYWxsZWRfd2l0aGAgdGhlIGBNYXRjaGVyYCBlcXVhbGl0eQorbWV0aG9kIHdpbGwgYmUgY2FsbGVkLCB3aGljaCBjb21wYXJlcyB0aGUgb2JqZWN0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aAorYWdhaW5zdCB0aGUgb25lIHdlIGNyZWF0ZWQgb3VyIG1hdGNoZXIgd2l0aC4gSWYgdGhleSBtYXRjaCB0aGVuCitgYXNzZXJ0X2NhbGxlZF93aXRoYCBwYXNzZXMsIGFuZCBpZiB0aGV5IGRvbid0IGFuIGBBc3NlcnRpb25FcnJvcmAgaXMgcmFpc2VkOgorCisgICAgPj4+IG1hdGNoX3dyb25nID0gTWF0Y2hlcihjb21wYXJlLCBGb28oMywgNCkpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKG1hdGNoX3dyb25nKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkOiAoKDxNYXRjaGVyIG9iamVjdCBhdCAweC4uLj4sKSwge30pCisgICAgQ2FsbGVkIHdpdGg6ICgoPEZvbyBvYmplY3QgYXQgMHguLi4+LCksIHt9KQorCitXaXRoIGEgYml0IG9mIHR3ZWFraW5nIHlvdSBjb3VsZCBoYXZlIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9uIHJhaXNlIHRoZQorYEFzc2VydGlvbkVycm9yYCBkaXJlY3RseSBhbmQgcHJvdmlkZSBhIG1vcmUgdXNlZnVsIGZhaWx1cmUgbWVzc2FnZS4KKworQXMgb2YgdmVyc2lvbiAxLjUsIHRoZSBQeXRob24gdGVzdGluZyBsaWJyYXJ5IGBQeUhhbWNyZXN0Cis8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1B5SGFtY3Jlc3Q+YF8gcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5LAordGhhdCBtYXkgYmUgdXNlZnVsIGhlcmUsIGluIHRoZSBmb3JtIG9mIGl0cyBlcXVhbGl0eSBtYXRjaGVyCisoYGhhbWNyZXN0LmxpYnJhcnkuaW50ZWdyYXRpb24ubWF0Y2hfZXF1YWxpdHkKKzxodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9QeUhhbWNyZXN0L2ludGVncmF0aW9uLmh0bWwjaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eT5gXykuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTAwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMCwwICsxLDIyMjUgQEAKKzptb2Q6YHVuaXR0ZXN0Lm1vY2tgIC0tLSBtb2NrIG9iamVjdCBsaWJyYXJ5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisgICA6c3lub3BzaXM6IE1vY2sgb2JqZWN0IGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBNaWNoYWVsIEZvb3JkIDxtaWNoYWVsQHB5dGhvbi5vcmc+CisuLiBjdXJyZW50bW9kdWxlOjogdW5pdHRlc3QubW9jaworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworOm1vZDpgdW5pdHRlc3QubW9ja2AgaXMgYSBsaWJyYXJ5IGZvciB0ZXN0aW5nIGluIFB5dGhvbi4gSXQgYWxsb3dzIHlvdSB0bworcmVwbGFjZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSB1bmRlciB0ZXN0IHdpdGggbW9jayBvYmplY3RzIGFuZCBtYWtlIGFzc2VydGlvbnMKK2Fib3V0IGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkLgorCitgdW5pdHRlc3QubW9ja2AgcHJvdmlkZXMgYSBjb3JlIDpjbGFzczpgTW9ja2AgY2xhc3MgcmVtb3ZpbmcgdGhlIG5lZWQgdG8KK2NyZWF0ZSBhIGhvc3Qgb2Ygc3R1YnMgdGhyb3VnaG91dCB5b3VyIHRlc3Qgc3VpdGUuIEFmdGVyIHBlcmZvcm1pbmcgYW4KK2FjdGlvbiwgeW91IGNhbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQgd2hpY2ggbWV0aG9kcyAvIGF0dHJpYnV0ZXMgd2VyZSB1c2VkCithbmQgYXJndW1lbnRzIHRoZXkgd2VyZSBjYWxsZWQgd2l0aC4gWW91IGNhbiBhbHNvIHNwZWNpZnkgcmV0dXJuIHZhbHVlcyBhbmQKK3NldCBuZWVkZWQgYXR0cmlidXRlcyBpbiB0aGUgbm9ybWFsIHdheS4KKworQWRkaXRpb25hbGx5LCBtb2NrIHByb3ZpZGVzIGEgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgdGhhdCBoYW5kbGVzIHBhdGNoaW5nCittb2R1bGUgYW5kIGNsYXNzIGxldmVsIGF0dHJpYnV0ZXMgd2l0aGluIHRoZSBzY29wZSBvZiBhIHRlc3QsIGFsb25nIHdpdGgKKzpjb25zdDpgc2VudGluZWxgIGZvciBjcmVhdGluZyB1bmlxdWUgb2JqZWN0cy4gU2VlIHRoZSBgcXVpY2sgZ3VpZGVgXyBmb3IKK3NvbWUgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSA6Y2xhc3M6YE1vY2tgLCA6Y2xhc3M6YE1hZ2ljTW9ja2AgYW5kCis6ZnVuYzpgcGF0Y2hgLgorCitNb2NrIGlzIHZlcnkgZWFzeSB0byB1c2UgYW5kIGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCA6bW9kOmB1bml0dGVzdGAuIE1vY2sKK2lzIGJhc2VkIG9uIHRoZSAnYWN0aW9uIC0+IGFzc2VydGlvbicgcGF0dGVybiBpbnN0ZWFkIG9mIGAncmVjb3JkIC0+IHJlcGxheSdgCit1c2VkIGJ5IG1hbnkgbW9ja2luZyBmcmFtZXdvcmtzLgorCitUaGVyZSBpcyBhIGJhY2twb3J0IG9mIGB1bml0dGVzdC5tb2NrYCBmb3IgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24sCithdmFpbGFibGUgYXMgYG1vY2sgb24gUHlQSSA8aHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL21vY2s+YF8uCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3VuaXR0ZXN0L21vY2sucHlgCisKKworUXVpY2sgR3VpZGUKKy0tLS0tLS0tLS0tCisKKzpjbGFzczpgTW9ja2AgYW5kIDpjbGFzczpgTWFnaWNNb2NrYCBvYmplY3RzIGNyZWF0ZSBhbGwgYXR0cmlidXRlcyBhbmQKK21ldGhvZHMgYXMgeW91IGFjY2VzcyB0aGVtIGFuZCBzdG9yZSBkZXRhaWxzIG9mIGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkLiBZb3UKK2NhbiBjb25maWd1cmUgdGhlbSwgdG8gc3BlY2lmeSByZXR1cm4gdmFsdWVzIG9yIGxpbWl0IHdoYXQgYXR0cmlidXRlcyBhcmUKK2F2YWlsYWJsZSwgYW5kIHRoZW4gbWFrZSBhc3NlcnRpb25zIGFib3V0IGhvdyB0aGV5IGhhdmUgYmVlbiB1c2VkOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTWFnaWNNb2NrCisgICAgPj4+IHRoaW5nID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gdGhpbmcubWV0aG9kID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT0zKQorICAgID4+PiB0aGluZy5tZXRob2QoMywgNCwgNSwga2V5PSd2YWx1ZScpCisgICAgMworICAgID4+PiB0aGluZy5tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDMsIDQsIDUsIGtleT0ndmFsdWUnKQorCis6YXR0cjpgc2lkZV9lZmZlY3RgIGFsbG93cyB5b3UgdG8gcGVyZm9ybSBzaWRlIGVmZmVjdHMsIGluY2x1ZGluZyByYWlzaW5nIGFuCitleGNlcHRpb24gd2hlbiBhIG1vY2sgaXMgY2FsbGVkOgorCisgICA+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5RXJyb3IoJ2ZvbycpKQorICAgPj4+IG1vY2soKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgS2V5RXJyb3I6ICdmb28nCisKKyAgID4+PiB2YWx1ZXMgPSB7J2EnOiAxLCAnYic6IDIsICdjJzogM30KKyAgID4+PiBkZWYgc2lkZV9lZmZlY3QoYXJnKToKKyAgIC4uLiAgICAgcmV0dXJuIHZhbHVlc1thcmddCisgICAuLi4KKyAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgID4+PiBtb2NrKCdhJyksIG1vY2soJ2InKSwgbW9jaygnYycpCisgICAoMSwgMiwgMykKKyAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gWzUsIDQsIDMsIDIsIDFdCisgICA+Pj4gbW9jaygpLCBtb2NrKCksIG1vY2soKQorICAgKDUsIDQsIDMpCisKK01vY2sgaGFzIG1hbnkgb3RoZXIgd2F5cyB5b3UgY2FuIGNvbmZpZ3VyZSBpdCBhbmQgY29udHJvbCBpdHMgYmVoYXZpb3VyLiBGb3IKK2V4YW1wbGUgdGhlIGBzcGVjYCBhcmd1bWVudCBjb25maWd1cmVzIHRoZSBtb2NrIHRvIHRha2UgaXRzIHNwZWNpZmljYXRpb24KK2Zyb20gYW5vdGhlciBvYmplY3QuIEF0dGVtcHRpbmcgdG8gYWNjZXNzIGF0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvbiB0aGUgbW9jawordGhhdCBkb24ndCBleGlzdCBvbiB0aGUgc3BlYyB3aWxsIGZhaWwgd2l0aCBhbiBgQXR0cmlidXRlRXJyb3JgLgorCitUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3IgLyBjb250ZXh0IG1hbmFnZXIgbWFrZXMgaXQgZWFzeSB0byBtb2NrIGNsYXNzZXMgb3IKK29iamVjdHMgaW4gYSBtb2R1bGUgdW5kZXIgdGVzdC4gVGhlIG9iamVjdCB5b3Ugc3BlY2lmeSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYQorbW9jayAob3Igb3RoZXIgb2JqZWN0KSBkdXJpbmcgdGhlIHRlc3QgYW5kIHJlc3RvcmVkIHdoZW4gdGhlIHRlc3QgZW5kczoKKworICAgID4+PiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisgICAgPj4+IEBwYXRjaCgnbW9kdWxlLkNsYXNzTmFtZTInKQorICAgIC4uLiBAcGF0Y2goJ21vZHVsZS5DbGFzc05hbWUxJykKKyAgICAuLi4gZGVmIHRlc3QoTW9ja0NsYXNzMSwgTW9ja0NsYXNzMik6CisgICAgLi4uICAgICBtb2R1bGUuQ2xhc3NOYW1lMSgpCisgICAgLi4uICAgICBtb2R1bGUuQ2xhc3NOYW1lMigpCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMSBpcyBtb2R1bGUuQ2xhc3NOYW1lMQorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczIgaXMgbW9kdWxlLkNsYXNzTmFtZTIKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MxLmNhbGxlZAorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczIuY2FsbGVkCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCisuLiBub3RlOjoKKworICAgV2hlbiB5b3UgbmVzdCBwYXRjaCBkZWNvcmF0b3JzIHRoZSBtb2NrcyBhcmUgcGFzc2VkIGluIHRvIHRoZSBkZWNvcmF0ZWQKKyAgIGZ1bmN0aW9uIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwbGllZCAodGhlIG5vcm1hbCAqcHl0aG9uKiBvcmRlciB0aGF0CisgICBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkKS4gVGhpcyBtZWFucyBmcm9tIHRoZSBib3R0b20gdXAsIHNvIGluIHRoZSBleGFtcGxlCisgICBhYm92ZSB0aGUgbW9jayBmb3IgYG1vZHVsZS5DbGFzc05hbWUxYCBpcyBwYXNzZWQgaW4gZmlyc3QuCisKKyAgIFdpdGggYHBhdGNoYCBpdCBtYXR0ZXJzIHRoYXQgeW91IHBhdGNoIG9iamVjdHMgaW4gdGhlIG5hbWVzcGFjZSB3aGVyZSB0aGV5CisgICBhcmUgbG9va2VkIHVwLiBUaGlzIGlzIG5vcm1hbGx5IHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGZvciBhIHF1aWNrIGd1aWRlCisgICByZWFkIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCitBcyB3ZWxsIGFzIGEgZGVjb3JhdG9yIGBwYXRjaGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgaW4gYSB3aXRoCitzdGF0ZW1lbnQ6CisKKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoUHJvZHVjdGlvbkNsYXNzLCAnbWV0aG9kJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIG1vY2tfbWV0aG9kOgorICAgIC4uLiAgICAgdGhpbmcgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgIC4uLiAgICAgdGhpbmcubWV0aG9kKDEsIDIsIDMpCisgICAgLi4uCisgICAgPj4+IG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisKKworVGhlcmUgaXMgYWxzbyA6ZnVuYzpgcGF0Y2guZGljdGAgZm9yIHNldHRpbmcgdmFsdWVzIGluIGEgZGljdGlvbmFyeSBqdXN0CitkdXJpbmcgYSBzY29wZSBhbmQgcmVzdG9yaW5nIHRoZSBkaWN0aW9uYXJ5IHRvIGl0cyBvcmlnaW5hbCBzdGF0ZSB3aGVuIHRoZSB0ZXN0CitlbmRzOgorCisgICA+Pj4gZm9vID0geydrZXknOiAndmFsdWUnfQorICAgPj4+IG9yaWdpbmFsID0gZm9vLmNvcHkoKQorICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30sIGNsZWFyPVRydWUpOgorICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgIC4uLgorICAgPj4+IGFzc2VydCBmb28gPT0gb3JpZ2luYWwKKworTW9jayBzdXBwb3J0cyB0aGUgbW9ja2luZyBvZiBQeXRob24gOnJlZjpgbWFnaWMgbWV0aG9kcyA8bWFnaWMtbWV0aG9kcz5gLiBUaGUKK2Vhc2llc3Qgd2F5IG9mIHVzaW5nIG1hZ2ljIG1ldGhvZHMgaXMgd2l0aCB0aGUgOmNsYXNzOmBNYWdpY01vY2tgIGNsYXNzLiBJdAorYWxsb3dzIHlvdSB0byBkbyB0aGluZ3MgbGlrZToKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9jay5fX3N0cl9fLnJldHVybl92YWx1ZSA9ICdmb29iYXJiYXonCisgICAgPj4+IHN0cihtb2NrKQorICAgICdmb29iYXJiYXonCisgICAgPj4+IG1vY2suX19zdHJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCitNb2NrIGFsbG93cyB5b3UgdG8gYXNzaWduIGZ1bmN0aW9ucyAob3Igb3RoZXIgTW9jayBpbnN0YW5jZXMpIHRvIG1hZ2ljIG1ldGhvZHMKK2FuZCB0aGV5IHdpbGwgYmUgY2FsbGVkIGFwcHJvcHJpYXRlbHkuIFRoZSBgTWFnaWNNb2NrYCBjbGFzcyBpcyBqdXN0IGEgTW9jawordmFyaWFudCB0aGF0IGhhcyBhbGwgb2YgdGhlIG1hZ2ljIG1ldGhvZHMgcHJlLWNyZWF0ZWQgZm9yIHlvdSAod2VsbCwgYWxsIHRoZQordXNlZnVsIG9uZXMgYW55d2F5KS4KKworVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHVzaW5nIG1hZ2ljIG1ldGhvZHMgd2l0aCB0aGUgb3JkaW5hcnkgTW9jaworY2xhc3M6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLl9fc3RyX18gPSBNb2NrKHJldHVybl92YWx1ZT0nd2hlZWVlZWUnKQorICAgID4+PiBzdHIobW9jaykKKyAgICAnd2hlZWVlZWUnCisKK0ZvciBlbnN1cmluZyB0aGF0IHRoZSBtb2NrIG9iamVjdHMgaW4geW91ciB0ZXN0cyBoYXZlIHRoZSBzYW1lIGFwaSBhcyB0aGUKK29iamVjdHMgdGhleSBhcmUgcmVwbGFjaW5nLCB5b3UgY2FuIHVzZSA6cmVmOmBhdXRvLXNwZWNjaW5nIDxhdXRvLXNwZWNjaW5nPmAuCitBdXRvLXNwZWNjaW5nIGNhbiBiZSBkb25lIHRocm91Z2ggdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQgdG8gcGF0Y2gsIG9yIHRoZQorOmZ1bmM6YGNyZWF0ZV9hdXRvc3BlY2AgZnVuY3Rpb24uIEF1dG8tc3BlY2NpbmcgY3JlYXRlcyBtb2NrIG9iamVjdHMgdGhhdAoraGF2ZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIGFzIHRoZSBvYmplY3RzIHRoZXkgYXJlIHJlcGxhY2luZywgYW5kCithbnkgZnVuY3Rpb25zIGFuZCBtZXRob2RzIChpbmNsdWRpbmcgY29uc3RydWN0b3JzKSBoYXZlIHRoZSBzYW1lIGNhbGwKK3NpZ25hdHVyZSBhcyB0aGUgcmVhbCBvYmplY3QuCisKK1RoaXMgZW5zdXJlcyB0aGF0IHlvdXIgbW9ja3Mgd2lsbCBmYWlsIGluIHRoZSBzYW1lIHdheSBhcyB5b3VyIHByb2R1Y3Rpb24KK2NvZGUgaWYgdGhleSBhcmUgdXNlZCBpbmNvcnJlY3RseToKKworICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgY3JlYXRlX2F1dG9zcGVjCisgICA+Pj4gZGVmIGZ1bmN0aW9uKGEsIGIsIGMpOgorICAgLi4uICAgICBwYXNzCisgICAuLi4KKyAgID4+PiBtb2NrX2Z1bmN0aW9uID0gY3JlYXRlX2F1dG9zcGVjKGZ1bmN0aW9uLCByZXR1cm5fdmFsdWU9J2Zpc2h5JykKKyAgID4+PiBtb2NrX2Z1bmN0aW9uKDEsIDIsIDMpCisgICAnZmlzaHknCisgICA+Pj4gbW9ja19mdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgPj4+IG1vY2tfZnVuY3Rpb24oJ3dyb25nIGFyZ3VtZW50cycpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICBUeXBlRXJyb3I6IDxsYW1iZGE+KCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbikKKworYGNyZWF0ZV9hdXRvc3BlY2AgY2FuIGFsc28gYmUgdXNlZCBvbiBjbGFzc2VzLCB3aGVyZSBpdCBjb3BpZXMgdGhlIHNpZ25hdHVyZSBvZgordGhlIGBfX2luaXRfX2AgbWV0aG9kLCBhbmQgb24gY2FsbGFibGUgb2JqZWN0cyB3aGVyZSBpdCBjb3BpZXMgdGhlIHNpZ25hdHVyZSBvZgordGhlIGBfX2NhbGxfX2AgbWV0aG9kLgorCisKKworVGhlIE1vY2sgQ2xhc3MKKy0tLS0tLS0tLS0tLS0tCisKKworYE1vY2tgIGlzIGEgZmxleGlibGUgbW9jayBvYmplY3QgaW50ZW5kZWQgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIHN0dWJzIGFuZAordGVzdCBkb3VibGVzIHRocm91Z2hvdXQgeW91ciBjb2RlLiBNb2NrcyBhcmUgY2FsbGFibGUgYW5kIGNyZWF0ZSBhdHRyaWJ1dGVzIGFzCituZXcgbW9ja3Mgd2hlbiB5b3UgYWNjZXNzIHRoZW0gWyNdXy4gQWNjZXNzaW5nIHRoZSBzYW1lIGF0dHJpYnV0ZSB3aWxsIGFsd2F5cworcmV0dXJuIHRoZSBzYW1lIG1vY2suIE1vY2tzIHJlY29yZCBob3cgeW91IHVzZSB0aGVtLCBhbGxvd2luZyB5b3UgdG8gbWFrZQorYXNzZXJ0aW9ucyBhYm91dCB3aGF0IHlvdXIgY29kZSBoYXMgZG9uZSB0byB0aGVtLgorCis6Y2xhc3M6YE1hZ2ljTW9ja2AgaXMgYSBzdWJjbGFzcyBvZiBgTW9ja2Agd2l0aCBhbGwgdGhlIG1hZ2ljIG1ldGhvZHMKK3ByZS1jcmVhdGVkIGFuZCByZWFkeSB0byB1c2UuIFRoZXJlIGFyZSBhbHNvIG5vbi1jYWxsYWJsZSB2YXJpYW50cywgdXNlZnVsCit3aGVuIHlvdSBhcmUgbW9ja2luZyBvdXQgb2JqZWN0cyB0aGF0IGFyZW4ndCBjYWxsYWJsZToKKzpjbGFzczpgTm9uQ2FsbGFibGVNb2NrYCBhbmQgOmNsYXNzOmBOb25DYWxsYWJsZU1hZ2ljTW9ja2AKKworVGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9ycyBtYWtlcyBpdCBlYXN5IHRvIHRlbXBvcmFyaWx5IHJlcGxhY2UgY2xhc3NlcworaW4gYSBwYXJ0aWN1bGFyIG1vZHVsZSB3aXRoIGEgYE1vY2tgIG9iamVjdC4gQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgY3JlYXRlCithIGBNYWdpY01vY2tgIGZvciB5b3UuIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBjbGFzcyBvZiBgTW9ja2AgdXNpbmcKK3RoZSBgbmV3X2NhbGxhYmxlYCBhcmd1bWVudCB0byBgcGF0Y2hgLgorCisKKy4uIGNsYXNzOjogTW9jayhzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsICoqa3dhcmdzKQorCisgICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cworICAgIHRoYXQgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBNb2NrIG9iamVjdDoKKworICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCisgICAgICBjbGFzcyBvciBpbnN0YW5jZSkgdGhhdCBhY3RzIGFzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jayBvYmplY3QuIElmCisgICAgICB5b3UgcGFzcyBpbiBhbiBvYmplY3QgdGhlbiBhIGxpc3Qgb2Ygc3RyaW5ncyBpcyBmb3JtZWQgYnkgY2FsbGluZyBkaXIgb24KKyAgICAgIHRoZSBvYmplY3QgKGV4Y2x1ZGluZyB1bnN1cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4KKyAgICAgIEFjY2Vzc2luZyBhbnkgYXR0cmlidXRlIG5vdCBpbiB0aGlzIGxpc3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgorICAgICAgOmF0dHI6YF9fY2xhc3NfX2AgcmV0dXJucyB0aGUgY2xhc3Mgb2YgdGhlIHNwZWMgb2JqZWN0LiBUaGlzIGFsbG93cyBtb2NrcworICAgICAgdG8gcGFzcyBgaXNpbnN0YW5jZWAgdGVzdHMuCisKKyAgICAqIGBzcGVjX3NldGA6IEEgc3RyaWN0ZXIgdmFyaWFudCBvZiBgc3BlY2AuIElmIHVzZWQsIGF0dGVtcHRpbmcgdG8gKnNldCoKKyAgICAgIG9yIGdldCBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vY2sgdGhhdCBpc24ndCBvbiB0aGUgb2JqZWN0IHBhc3NlZCBhcworICAgICAgYHNwZWNfc2V0YCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAqIGBzaWRlX2VmZmVjdGA6IEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBNb2NrIGlzIGNhbGxlZC4gU2VlCisgICAgICB0aGUgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBhdHRyaWJ1dGUuIFVzZWZ1bCBmb3IgcmFpc2luZyBleGNlcHRpb25zIG9yCisgICAgICBkeW5hbWljYWxseSBjaGFuZ2luZyByZXR1cm4gdmFsdWVzLiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHNhbWUKKyAgICAgIGFyZ3VtZW50cyBhcyB0aGUgbW9jaywgYW5kIHVubGVzcyBpdCByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAgIEFsdGVybmF0aXZlbHkgYHNpZGVfZWZmZWN0YCBjYW4gYmUgYW4gZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLiBJbgorICAgICAgdGhpcyBjYXNlIHRoZSBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuCisKKyAgICAgIElmIGBzaWRlX2VmZmVjdGAgaXMgYW4gaXRlcmFibGUgdGhlbiBlYWNoIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCByZXR1cm4KKyAgICAgIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIGl0ZXJhYmxlLgorCisgICAgICBBIGBzaWRlX2VmZmVjdGAgY2FuIGJlIGNsZWFyZWQgYnkgc2V0dGluZyBpdCB0byBgTm9uZWAuCisKKyAgICAqIGByZXR1cm5fdmFsdWVgOiBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIEJ5IGRlZmF1bHQKKyAgICAgIHRoaXMgaXMgYSBuZXcgTW9jayAoY3JlYXRlZCBvbiBmaXJzdCBhY2Nlc3MpLiBTZWUgdGhlCisgICAgICA6YXR0cjpgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCisKKyAgICAqIGB3cmFwc2A6IEl0ZW0gZm9yIHRoZSBtb2NrIG9iamVjdCB0byB3cmFwLiBJZiBgd3JhcHNgIGlzIG5vdCBOb25lIHRoZW4KKyAgICAgIGNhbGxpbmcgdGhlIE1vY2sgd2lsbCBwYXNzIHRoZSBjYWxsIHRocm91Z2ggdG8gdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAocmV0dXJuaW5nIHRoZSByZWFsIHJlc3VsdCkuIEF0dHJpYnV0ZSBhY2Nlc3Mgb24gdGhlIG1vY2sgd2lsbCByZXR1cm4gYQorICAgICAgTW9jayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgdGhlIHdyYXBwZWQKKyAgICAgIG9iamVjdCAoc28gYXR0ZW1wdGluZyB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCB3aWxsCisgICAgICByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgKS4KKworICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCisgICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgorCisgICAgKiBgbmFtZWA6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCisgICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAorICAgICAgbW9ja3MuCisKKyAgICBNb2NrcyBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUKKyAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuIFNlZSB0aGUKKyAgICA6bWV0aDpgY29uZmlndXJlX21vY2tgIG1ldGhvZCBmb3IgZGV0YWlscy4KKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBhIGNvbnZlbmllbnQgd2F5IG9mIGFzc2VydGluZyB0aGF0IGNhbGxzIGFyZSBtYWRlIGluIGEKKyAgICAgICAgcGFydGljdWxhciB3YXk6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoMSwgMiwgMywgdGVzdD0nd293JykKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCB0ZXN0PSd3b3cnKQorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZSBhbmQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgYXJndW1lbnRzLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgID4+PiBtb2NrKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCAnbW9jaycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBUaGUgYXNzZXJ0IHBhc3NlcyBpZiB0aGUgbW9jayBoYXMgKmV2ZXIqIGJlZW4gY2FsbGVkLCB1bmxpa2UKKyAgICAgICAgOm1ldGg6YGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIDptZXRoOmBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdAorICAgICAgICBvbmx5IHBhc3MgaWYgdGhlIGNhbGwgaXMgdGhlIG1vc3QgcmVjZW50IG9uZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2soMSwgMiwgYXJnPSd0aGluZycpCisgICAgICAgICAgICA+Pj4gbW9jaygnc29tZScsICd0aGluZycsICdlbHNlJykKKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCAyLCBhcmc9J3RoaW5nJykKKworCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPUZhbHNlKQorCisgICAgICAgIGFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNhbGxzLgorICAgICAgICBUaGUgYG1vY2tfY2FsbHNgIGxpc3QgaXMgY2hlY2tlZCBmb3IgdGhlIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgY2FsbHMgbXVzdCBiZQorICAgICAgICBzZXF1ZW50aWFsLiBUaGVyZSBjYW4gYmUgZXh0cmEgY2FsbHMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgVHJ1ZSB0aGVuIHRoZSBjYWxscyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKKyAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gOmF0dHI6YG1vY2tfY2FsbHNgLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygxKQorICAgICAgICAgICAgPj4+IG1vY2soMikKKyAgICAgICAgICAgID4+PiBtb2NrKDMpCisgICAgICAgICAgICA+Pj4gbW9jayg0KQorICAgICAgICAgICAgPj4+IGNhbGxzID0gW2NhbGwoMiksIGNhbGwoMyldCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzKQorICAgICAgICAgICAgPj4+IGNhbGxzID0gW2NhbGwoNCksIGNhbGwoMiksIGNhbGwoMyldCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9VHJ1ZSkKKworCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisKKyAgICAgICAgVGhlIHJlc2V0X21vY2sgbWV0aG9kIHJlc2V0cyBhbGwgdGhlIGNhbGwgYXR0cmlidXRlcyBvbiBhIG1vY2sgb2JqZWN0OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygnaGVsbG8nKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAorICAgICAgICAgICAgRmFsc2UKKworICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlcmUgeW91IHdhbnQgdG8gbWFrZSBhIHNlcmllcyBvZiBhc3NlcnRpb25zIHRoYXQKKyAgICAgICAgcmV1c2UgdGhlIHNhbWUgb2JqZWN0LiBOb3RlIHRoYXQgYHJlc2V0X21vY2tgICpkb2Vzbid0KiBjbGVhciB0aGUKKyAgICAgICAgcmV0dXJuIHZhbHVlLCA6YXR0cjpgc2lkZV9lZmZlY3RgIG9yIGFueSBjaGlsZCBhdHRyaWJ1dGVzIHlvdSBoYXZlCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jaworICAgICAgICAoaWYgYW55KSBhcmUgcmVzZXQgYXMgd2VsbC4KKworCisgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKKworICAgICAgICBBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBgVHJ1ZWAgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4KKworCisgICAgLi4gbWV0aG9kOjogYXR0YWNoX21vY2sobW9jaywgYXR0cmlidXRlKQorCisgICAgICAgIEF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIHRoaXMgb25lLCByZXBsYWNpbmcgaXRzIG5hbWUgYW5kCisgICAgICAgIHBhcmVudC4gQ2FsbHMgdG8gdGhlIGF0dGFjaGVkIG1vY2sgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUKKyAgICAgICAgOmF0dHI6YG1ldGhvZF9jYWxsc2AgYW5kIDphdHRyOmBtb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIG9mIHRoaXMgb25lLgorCisKKyAgICAuLiBtZXRob2Q6OiBjb25maWd1cmVfbW9jaygqKmt3YXJncykKKworICAgICAgICBTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgIEF0dHJpYnV0ZXMgcGx1cyByZXR1cm4gdmFsdWVzIGFuZCBzaWRlIGVmZmVjdHMgY2FuIGJlIHNldCBvbiBjaGlsZAorICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCisgICAgICAgIG1ldGhvZCBjYWxsOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgICAgICA+Pj4gbW9jay5jb25maWd1cmVfbW9jaygqKmF0dHJzKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDMKKyAgICAgICAgICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorCisgICAgICAgIFRoZSBzYW1lIHRoaW5nIGNhbiBiZSBhY2hpZXZlZCBpbiB0aGUgY29uc3RydWN0b3IgY2FsbCB0byBtb2NrczoKKworICAgICAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soc29tZV9hdHRyaWJ1dGU9J2VnZ3MnLCAqKmF0dHJzKQorICAgICAgICAgICAgPj4+IG1vY2suc29tZV9hdHRyaWJ1dGUKKyAgICAgICAgICAgICdlZ2dzJworICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDMKKyAgICAgICAgICAgID4+PiBtb2NrLm90aGVyKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorCisgICAgICAgIGBjb25maWd1cmVfbW9ja2AgZXhpc3RzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRvIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgYWZ0ZXIgdGhlIG1vY2sgaGFzIGJlZW4gY3JlYXRlZC4KKworCisgICAgLi4gbWV0aG9kOjogX19kaXJfXygpCisKKyAgICAgICAgYE1vY2tgIG9iamVjdHMgbGltaXQgdGhlIHJlc3VsdHMgb2YgYGRpcihzb21lX21vY2spYCB0byB1c2VmdWwgcmVzdWx0cy4KKyAgICAgICAgRm9yIG1vY2tzIHdpdGggYSBgc3BlY2AgdGhpcyBpbmNsdWRlcyBhbGwgdGhlIHBlcm1pdHRlZCBhdHRyaWJ1dGVzCisgICAgICAgIGZvciB0aGUgbW9jay4KKworICAgICAgICBTZWUgOmRhdGE6YEZJTFRFUl9ESVJgIGZvciB3aGF0IHRoaXMgZmlsdGVyaW5nIGRvZXMsIGFuZCBob3cgdG8KKyAgICAgICAgc3dpdGNoIGl0IG9mZi4KKworCisgICAgLi4gbWV0aG9kOjogX2dldF9jaGlsZF9tb2NrKCoqa3cpCisKKyAgICAgICAgQ3JlYXRlIHRoZSBjaGlsZCBtb2NrcyBmb3IgYXR0cmlidXRlcyBhbmQgcmV0dXJuIHZhbHVlLgorICAgICAgICBCeSBkZWZhdWx0IGNoaWxkIG1vY2tzIHdpbGwgYmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgcGFyZW50LgorICAgICAgICBTdWJjbGFzc2VzIG9mIE1vY2sgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcyB0byBjdXN0b21pemUgdGhlIHdheQorICAgICAgICBjaGlsZCBtb2NrcyBhcmUgbWFkZS4KKworICAgICAgICBGb3Igbm9uLWNhbGxhYmxlIG1vY2tzIHRoZSBjYWxsYWJsZSB2YXJpYW50IHdpbGwgYmUgdXNlZCAocmF0aGVyIHRoYW4KKyAgICAgICAgYW55IGN1c3RvbSBzdWJjbGFzcykuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxlZAorCisgICAgICAgIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhlIG1vY2sgb2JqZWN0IGhhcyBiZWVuIGNhbGxlZDoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBGYWxzZQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBUcnVlCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBjYWxsX2NvdW50CisKKyAgICAgICAgQW4gaW50ZWdlciB0ZWxsaW5nIHlvdSBob3cgbWFueSB0aW1lcyB0aGUgbW9jayBvYmplY3QgaGFzIGJlZW4gY2FsbGVkOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2NvdW50CisgICAgICAgICAgICAwCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2NvdW50CisgICAgICAgICAgICAyCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IHJldHVybl92YWx1ZQorCisgICAgICAgIFNldCB0aGlzIHRvIGNvbmZpZ3VyZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGluZyB0aGUgbW9jazoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZSA9ICdmaXNoJworICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgJ2Zpc2gnCisKKyAgICAgICAgVGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGlzIGEgbW9jayBvYmplY3QgYW5kIHlvdSBjYW4gY29uZmlndXJlIGl0IGluCisgICAgICAgIHRoZSBub3JtYWwgd2F5OgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmF0dHJpYnV0ZSA9IHNlbnRpbmVsLkF0dHJpYnV0ZQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2soKSgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCisgICAgICAgIGByZXR1cm5fdmFsdWVgIGNhbiBhbHNvIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3I6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgMworCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzaWRlX2VmZmVjdAorCisgICAgICAgIFRoaXMgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZCwKKyAgICAgICAgb3IgYW4gZXhjZXB0aW9uIChjbGFzcyBvciBpbnN0YW5jZSkgdG8gYmUgcmFpc2VkLgorCisgICAgICAgIElmIHlvdSBwYXNzIGluIGEgZnVuY3Rpb24gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCBzYW1lIGFyZ3VtZW50cyBhcyB0aGUKKyAgICAgICAgbW9jayBhbmQgdW5sZXNzIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSA6ZGF0YTpgREVGQVVMVGAgc2luZ2xldG9uIHRoZQorICAgICAgICBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgdGhlbiByZXR1cm4gd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIHJldHVybnMuIElmIHRoZQorICAgICAgICBmdW5jdGlvbiByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCB0aGVuIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGl0cyBub3JtYWwKKyAgICAgICAgdmFsdWUgKGZyb20gdGhlIDphdHRyOmByZXR1cm5fdmFsdWVgLgorCisgICAgICAgIEFuIGV4YW1wbGUgb2YgYSBtb2NrIHRoYXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiAodG8gdGVzdCBleGNlcHRpb24KKyAgICAgICAgaGFuZGxpbmcgb2YgYW4gQVBJKToKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gRXhjZXB0aW9uKCdCb29tIScpCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgRXhjZXB0aW9uOiBCb29tIQorCisgICAgICAgIFVzaW5nIGBzaWRlX2VmZmVjdGAgdG8gcmV0dXJuIGEgc2VxdWVuY2Ugb2YgdmFsdWVzOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBbMywgMiwgMV0KKyAgICAgICAgICAgID4+PiBtb2NrKCksIG1vY2soKSwgbW9jaygpCisgICAgICAgICAgICAoMywgMiwgMSkKKworICAgICAgICBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlCisgICAgICAgIG1vY2sgKHNvIGl0IGlzIHdpc2UgZm9yIGl0IHRvIHRha2UgYXJiaXRyYXJ5IGFyZ3MgYW5kIGtleXdvcmQKKyAgICAgICAgYXJndW1lbnRzKSBhbmQgd2hhdGV2ZXIgaXQgcmV0dXJucyBpcyB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgZm9yCisgICAgICAgIHRoZSBjYWxsLiBUaGUgZXhjZXB0aW9uIGlzIGlmIGBzaWRlX2VmZmVjdGAgcmV0dXJucyA6ZGF0YTpgREVGQVVMVGAsCisgICAgICAgIGluIHdoaWNoIGNhc2UgdGhlIG5vcm1hbCA6YXR0cjpgcmV0dXJuX3ZhbHVlYCBpcyB1c2VkLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAuLi4gICAgIHJldHVybiBERUZBVUxUCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgID4+PiBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgIDMKKworICAgICAgICBgc2lkZV9lZmZlY3RgIGNhbiBiZSBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLiBIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0CisgICAgICAgIGFkZHMgb25lIHRvIHRoZSB2YWx1ZSB0aGUgbW9jayBpcyBjYWxsZWQgd2l0aCBhbmQgcmV0dXJucyBpdDoKKworICAgICAgICAgICAgPj4+IHNpZGVfZWZmZWN0ID0gbGFtYmRhIHZhbHVlOiB2YWx1ZSArIDEKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1zaWRlX2VmZmVjdCkKKyAgICAgICAgICAgID4+PiBtb2NrKDMpCisgICAgICAgICAgICA0CisgICAgICAgICAgICA+Pj4gbW9jaygtOCkKKyAgICAgICAgICAgIC03CisKKyAgICAgICAgU2V0dGluZyBgc2lkZV9lZmZlY3RgIHRvIGBOb25lYCBjbGVhcnMgaXQ6CisKKyAgICAgICAgICAgID4+PiBtID0gTW9jayhzaWRlX2VmZmVjdD1LZXlFcnJvciwgcmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICA+Pj4gbSgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBLZXlFcnJvcgorICAgICAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBOb25lCisgICAgICAgICAgICA+Pj4gbSgpCisgICAgICAgICAgICAzCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfYXJncworCisgICAgICAgIFRoaXMgaXMgZWl0aGVyIGBOb25lYCAoaWYgdGhlIG1vY2sgaGFzbid0IGJlZW4gY2FsbGVkKSwgb3IgdGhlCisgICAgICAgIGFyZ3VtZW50cyB0aGF0IHRoZSBtb2NrIHdhcyBsYXN0IGNhbGxlZCB3aXRoLiBUaGlzIHdpbGwgYmUgaW4gdGhlCisgICAgICAgIGZvcm0gb2YgYSB0dXBsZTogdGhlIGZpcnN0IG1lbWJlciBpcyBhbnkgb3JkZXJlZCBhcmd1bWVudHMgdGhlIG1vY2sKKyAgICAgICAgd2FzIGNhbGxlZCB3aXRoIChvciBhbiBlbXB0eSB0dXBsZSkgYW5kIHRoZSBzZWNvbmQgbWVtYmVyIGlzIGFueQorICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyAob3IgYW4gZW1wdHkgZGljdGlvbmFyeSkuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBwcmludCBtb2NrLmNhbGxfYXJncworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJncyA9PSAoKQorICAgICAgICAgICAgVHJ1ZQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJncworICAgICAgICAgICAgY2FsbCgzLCA0KQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzID09ICgoMywgNCksKQorICAgICAgICAgICAgVHJ1ZQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCwgNSwga2V5PSdmaXNoJywgbmV4dD0ndzAwdCEnKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKDMsIDQsIDUsIGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJykKKworICAgICAgICBgY2FsbF9hcmdzYCwgYWxvbmcgd2l0aCBtZW1iZXJzIG9mIHRoZSBsaXN0cyA6YXR0cjpgY2FsbF9hcmdzX2xpc3RgLAorICAgICAgICA6YXR0cjpgbWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YG1vY2tfY2FsbHNgIGFyZSA6ZGF0YTpgY2FsbGAgb2JqZWN0cy4KKyAgICAgICAgVGhlc2UgYXJlIHR1cGxlcywgc28gdGhleSBjYW4gYmUgdW5wYWNrZWQgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsCisgICAgICAgIGFyZ3VtZW50cyBhbmQgbWFrZSBtb3JlIGNvbXBsZXggYXNzZXJ0aW9ucy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfYXJnc19saXN0CisKKyAgICAgICAgVGhpcyBpcyBhIGxpc3Qgb2YgYWxsIHRoZSBjYWxscyBtYWRlIHRvIHRoZSBtb2NrIG9iamVjdCBpbiBzZXF1ZW5jZQorICAgICAgICAoc28gdGhlIGxlbmd0aCBvZiB0aGUgbGlzdCBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIGl0IGhhcyBiZWVuCisgICAgICAgIGNhbGxlZCkuIEJlZm9yZSBhbnkgY2FsbHMgaGF2ZSBiZWVuIG1hZGUgaXQgaXMgYW4gZW1wdHkgbGlzdC4gVGhlCisgICAgICAgIDpkYXRhOmBjYWxsYCBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGNvbnZlbmllbnRseSBjb25zdHJ1Y3RpbmcgbGlzdHMgb2YKKyAgICAgICAgY2FsbHMgdG8gY29tcGFyZSB3aXRoIGBjYWxsX2FyZ3NfbGlzdGAuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrKDMsIDQpCisgICAgICAgICAgICA+Pj4gbW9jayhrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdAorICAgICAgICAgICAgW2NhbGwoKSwgY2FsbCgzLCA0KSwgY2FsbChrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpXQorICAgICAgICAgICAgPj4+IGV4cGVjdGVkID0gWygpLCAoKDMsIDQpLCksICh7J2tleSc6ICdmaXNoJywgJ25leHQnOiAndzAwdCEnfSwpXQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzX2xpc3QgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBNZW1iZXJzIG9mIGBjYWxsX2FyZ3NfbGlzdGAgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLiBUaGVzZSBjYW4gYmUKKyAgICAgICAgdW5wYWNrZWQgYXMgdHVwbGVzIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuIFNlZQorICAgICAgICA6cmVmOmBjYWxscyBhcyB0dXBsZXMgPGNhbGxzLWFzLXR1cGxlcz5gLgorCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtZXRob2RfY2FsbHMKKworICAgICAgICBBcyB3ZWxsIGFzIHRyYWNraW5nIGNhbGxzIHRvIHRoZW1zZWx2ZXMsIG1vY2tzIGFsc28gdHJhY2sgY2FsbHMgdG8KKyAgICAgICAgbWV0aG9kcyBhbmQgYXR0cmlidXRlcywgYW5kICp0aGVpciogbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5wcm9wZXJ0eS5tZXRob2QuYXR0cmlidXRlKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kX2NhbGxzCisgICAgICAgICAgICBbY2FsbC5tZXRob2QoKSwgY2FsbC5wcm9wZXJ0eS5tZXRob2QuYXR0cmlidXRlKCldCisKKyAgICAgICAgTWVtYmVycyBvZiBgbWV0aG9kX2NhbGxzYCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1vY2tfY2FsbHMKKworICAgICAgICBgbW9ja19jYWxsc2AgcmVjb3JkcyAqYWxsKiBjYWxscyB0byB0aGUgbW9jayBvYmplY3QsIGl0cyBtZXRob2RzLCBtYWdpYworICAgICAgICBtZXRob2RzICphbmQqIHJldHVybiB2YWx1ZSBtb2Nrcy4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICAgICAgPj4+IHJlc3VsdCA9IG1vY2soMSwgMiwgMykKKyAgICAgICAgICAgID4+PiBtb2NrLmZpcnN0KGE9MykKKyAgICAgICAgICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5maXJzdCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLnNlY29uZCgpCisgICAgICAgICAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suc2Vjb25kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IGludChtb2NrKQorICAgICAgICAgICAgMQorICAgICAgICAgICAgPj4+IHJlc3VsdCgxKQorICAgICAgICAgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrKCkoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbCgxLCAyLCAzKSwgY2FsbC5maXJzdChhPTMpLCBjYWxsLnNlY29uZCgpLAorICAgICAgICAgICAgLi4uIGNhbGwuX19pbnRfXygpLCBjYWxsKCkoMSldCisgICAgICAgICAgICA+Pj4gbW9jay5tb2NrX2NhbGxzID09IGV4cGVjdGVkCisgICAgICAgICAgICBUcnVlCisKKyAgICAgICAgTWVtYmVycyBvZiBgbW9ja19jYWxsc2AgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLiBUaGVzZSBjYW4gYmUKKyAgICAgICAgdW5wYWNrZWQgYXMgdHVwbGVzIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMuIFNlZQorICAgICAgICA6cmVmOmBjYWxscyBhcyB0dXBsZXMgPGNhbGxzLWFzLXR1cGxlcz5gLgorCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBfX2NsYXNzX18KKworICAgICAgICBOb3JtYWxseSB0aGUgYF9fY2xhc3NfX2AgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aWxsIHJldHVybiBpdHMgdHlwZS4KKyAgICAgICAgRm9yIGEgbW9jayBvYmplY3Qgd2l0aCBhIGBzcGVjYCBgX19jbGFzc19fYCByZXR1cm5zIHRoZSBzcGVjIGNsYXNzCisgICAgICAgIGluc3RlYWQuIFRoaXMgYWxsb3dzIG1vY2sgb2JqZWN0cyB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cyBmb3IgdGhlCisgICAgICAgIG9iamVjdCB0aGV5IGFyZSByZXBsYWNpbmcgLyBtYXNxdWVyYWRpbmcgYXM6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzcGVjPTMpCisgICAgICAgICAgICA+Pj4gaXNpbnN0YW5jZShtb2NrLCBpbnQpCisgICAgICAgICAgICBUcnVlCisKKyAgICAgICAgYF9fY2xhc3NfX2AgaXMgYXNzaWduYWJsZSB0bywgdGhpcyBhbGxvd3MgYSBtb2NrIHRvIHBhc3MgYW4KKyAgICAgICAgYGlzaW5zdGFuY2VgIGNoZWNrIHdpdGhvdXQgZm9yY2luZyB5b3UgdG8gdXNlIGEgc3BlYzoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLl9fY2xhc3NfXyA9IGRpY3QKKyAgICAgICAgICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIGRpY3QpCisgICAgICAgICAgICBUcnVlCisKKy4uIGNsYXNzOjogTm9uQ2FsbGFibGVNb2NrKHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKworICAgIEEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1vY2tgLiBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lCisgICAgbWVhbmluZyBvZiBgTW9ja2AsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgcmV0dXJuX3ZhbHVlYCBhbmQgYHNpZGVfZWZmZWN0YAorICAgIHdoaWNoIGhhdmUgbm8gbWVhbmluZyBvbiBhIG5vbi1jYWxsYWJsZSBtb2NrLgorCitNb2NrIG9iamVjdHMgdGhhdCB1c2UgYSBjbGFzcyBvciBhbiBpbnN0YW5jZSBhcyBhIGBzcGVjYCBvciBgc3BlY19zZXRgIGFyZSBhYmxlCit0byBwYXNzIGBpc2ludGFuY2VgIHRlc3RzOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9U29tZUNsYXNzKQorICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIFNvbWVDbGFzcykKKyAgICBUcnVlCisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWNfc2V0PVNvbWVDbGFzcygpKQorICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIFNvbWVDbGFzcykKKyAgICBUcnVlCisKK1RoZSBgTW9ja2AgY2xhc3NlcyBoYXZlIHN1cHBvcnQgZm9yIG1vY2tpbmcgbWFnaWMgbWV0aG9kcy4gU2VlIDpyZWY6YG1hZ2ljCittZXRob2RzIDxtYWdpYy1tZXRob2RzPmAgZm9yIHRoZSBmdWxsIGRldGFpbHMuCisKK1RoZSBtb2NrIGNsYXNzZXMgYW5kIHRoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvcnMgYWxsIHRha2UgYXJiaXRyYXJ5IGtleXdvcmQKK2FyZ3VtZW50cyBmb3IgY29uZmlndXJhdGlvbi4gRm9yIHRoZSBgcGF0Y2hgIGRlY29yYXRvcnMgdGhlIGtleXdvcmRzIGFyZQorcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgbW9jayBiZWluZyBjcmVhdGVkLiBUaGUga2V5d29yZCBhcmd1bWVudHMKK2FyZSBmb3IgY29uZmlndXJpbmcgYXR0cmlidXRlcyBvZiB0aGUgbW9jazoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhhdHRyaWJ1dGU9Mywgb3RoZXI9J2Zpc2gnKQorICAgICAgICA+Pj4gbS5hdHRyaWJ1dGUKKyAgICAgICAgMworICAgICAgICA+Pj4gbS5vdGhlcgorICAgICAgICAnZmlzaCcKKworVGhlIHJldHVybiB2YWx1ZSBhbmQgc2lkZSBlZmZlY3Qgb2YgY2hpbGQgbW9ja3MgY2FuIGJlIHNldCBpbiB0aGUgc2FtZSB3YXksCit1c2luZyBkb3R0ZWQgbm90YXRpb24uIEFzIHlvdSBjYW4ndCB1c2UgZG90dGVkIG5hbWVzIGRpcmVjdGx5IGluIGEgY2FsbCB5b3UKK2hhdmUgdG8gY3JlYXRlIGEgZGljdGlvbmFyeSBhbmQgdW5wYWNrIGl0IHVzaW5nIGAqKmA6CisKKyAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICA+Pj4gbW9jayA9IE1vY2soc29tZV9hdHRyaWJ1dGU9J2VnZ3MnLCAqKmF0dHJzKQorICAgID4+PiBtb2NrLnNvbWVfYXR0cmlidXRlCisgICAgJ2VnZ3MnCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAzCisgICAgPj4+IG1vY2sub3RoZXIoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEtleUVycm9yCisKKworLi4gY2xhc3M6OiBQcm9wZXJ0eU1vY2soKmFyZ3MsICoqa3dhcmdzKQorCisgICBBIG1vY2sgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHByb3BlcnR5LCBvciBvdGhlciBkZXNjcmlwdG9yLCBvbiBhIGNsYXNzLgorICAgYFByb3BlcnR5TW9ja2AgcHJvdmlkZXMgYF9fZ2V0X19gIGFuZCBgX19zZXRfX2AgbWV0aG9kcyBzbyB5b3UgY2FuIHNwZWNpZnkKKyAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKworICAgRmV0Y2hpbmcgYSBgUHJvcGVydHlNb2NrYCBpbnN0YW5jZSBmcm9tIGFuIG9iamVjdCBjYWxscyB0aGUgbW9jaywgd2l0aAorICAgbm8gYXJncy4gU2V0dGluZyBpdCBjYWxscyB0aGUgbW9jayB3aXRoIHRoZSB2YWx1ZSBiZWluZyBzZXQuCisKKyAgICAgICAgPj4+IGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAuLi4gICAgIEBwcm9wZXJ0eQorICAgICAgICAuLi4gICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAnc29tZXRoaW5nJworICAgICAgICAuLi4gICAgIEBmb28uc2V0dGVyCisgICAgICAgIC4uLiAgICAgZGVmIGZvbyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAgICAgLi4uCisgICAgICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Gb28uZm9vJywgbmV3X2NhbGxhYmxlPVByb3BlcnR5TW9jaykgYXMgbW9ja19mb286CisgICAgICAgIC4uLiAgICAgbW9ja19mb28ucmV0dXJuX3ZhbHVlID0gJ21vY2tpdHktbW9jaycKKyAgICAgICAgLi4uICAgICB0aGlzX2ZvbyA9IEZvbygpCisgICAgICAgIC4uLiAgICAgcHJpbnQgdGhpc19mb28uZm9vCisgICAgICAgIC4uLiAgICAgdGhpc19mb28uZm9vID0gNgorICAgICAgICAuLi4KKyAgICAgICAgbW9ja2l0eS1tb2NrCisgICAgICAgID4+PiBtb2NrX2Zvby5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKCksIGNhbGwoNildCisKK0JlY2F1c2Ugb2YgdGhlIHdheSBtb2NrIGF0dHJpYnV0ZXMgYXJlIHN0b3JlZCB5b3UgY2FuJ3QgZGlyZWN0bHkgYXR0YWNoIGEKK2BQcm9wZXJ0eU1vY2tgIHRvIGEgbW9jayBvYmplY3QuIEluc3RlYWQgeW91IGNhbiBhdHRhY2ggaXQgdG8gdGhlIG1vY2sgdHlwZQorb2JqZWN0OjoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gcCA9IFByb3BlcnR5TW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICA+Pj4gdHlwZShtKS5mb28gPSBwCisgICAgPj4+IG0uZm9vCisgICAgMworICAgID4+PiBwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCitDYWxsaW5nCit+fn5+fn5+CisKK01vY2sgb2JqZWN0cyBhcmUgY2FsbGFibGUuIFRoZSBjYWxsIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZSBzZXQgYXMgdGhlCis6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuIFRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSBpcyBhIG5ldyBNb2NrCitvYmplY3Q7IGl0IGlzIGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgdGhlIHJldHVybiB2YWx1ZSBpcyBhY2Nlc3NlZCAoZWl0aGVyCitleHBsaWNpdGx5IG9yIGJ5IGNhbGxpbmcgdGhlIE1vY2spIC0gYnV0IGl0IGlzIHN0b3JlZCBhbmQgdGhlIHNhbWUgb25lCityZXR1cm5lZCBlYWNoIHRpbWUuCisKK0NhbGxzIG1hZGUgdG8gdGhlIG9iamVjdCB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBhdHRyaWJ1dGVzCitsaWtlIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NgIGFuZCA6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgLgorCitJZiA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIGlzIHNldCB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSBjYWxsIGhhcworYmVlbiByZWNvcmRlZCwgc28gaWYgYHNpZGVfZWZmZWN0YCByYWlzZXMgYW4gZXhjZXB0aW9uIHRoZSBjYWxsIGlzIHN0aWxsCityZWNvcmRlZC4KKworVGhlIHNpbXBsZXN0IHdheSB0byBtYWtlIGEgbW9jayByYWlzZSBhbiBleGNlcHRpb24gd2hlbiBjYWxsZWQgaXMgdG8gbWFrZQorOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCBhbiBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2U6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9SW5kZXhFcnJvcikKKyAgICAgICAgPj4+IG0oMSwgMiwgMykKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBJbmRleEVycm9yCisgICAgICAgID4+PiBtLm1vY2tfY2FsbHMKKyAgICAgICAgW2NhbGwoMSwgMiwgMyldCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gS2V5RXJyb3IoJ0JhbmchJykKKyAgICAgICAgPj4+IG0oJ3R3bycsICd0aHJlZScsICdmb3VyJykKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLgorICAgICAgICBLZXlFcnJvcjogJ0JhbmchJworICAgICAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKDEsIDIsIDMpLCBjYWxsKCd0d28nLCAndGhyZWUnLCAnZm91cicpXQorCitJZiBgc2lkZV9lZmZlY3RgIGlzIGEgZnVuY3Rpb24gdGhlbiB3aGF0ZXZlciB0aGF0IGZ1bmN0aW9uIHJldHVybnMgaXMgd2hhdAorY2FsbHMgdG8gdGhlIG1vY2sgcmV0dXJuLiBUaGUgYHNpZGVfZWZmZWN0YCBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUKK3NhbWUgYXJndW1lbnRzIGFzIHRoZSBtb2NrLiBUaGlzIGFsbG93cyB5b3UgdG8gdmFyeSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQorY2FsbCBkeW5hbWljYWxseSwgYmFzZWQgb24gdGhlIGlucHV0OgorCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QodmFsdWUpOgorICAgICAgICAuLi4gICAgIHJldHVybiB2YWx1ZSArIDEKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgICAgICA+Pj4gbSgxKQorICAgICAgICAyCisgICAgICAgID4+PiBtKDIpCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0ubW9ja19jYWxscworICAgICAgICBbY2FsbCgxKSwgY2FsbCgyKV0KKworSWYgeW91IHdhbnQgdGhlIG1vY2sgdG8gc3RpbGwgcmV0dXJuIHRoZSBkZWZhdWx0IHJldHVybiB2YWx1ZSAoYSBuZXcgbW9jayksIG9yCithbnkgc2V0IHJldHVybiB2YWx1ZSwgdGhlbiB0aGVyZSBhcmUgdHdvIHdheXMgb2YgZG9pbmcgdGhpcy4gRWl0aGVyIHJldHVybgorYG1vY2sucmV0dXJuX3ZhbHVlYCBmcm9tIGluc2lkZSBgc2lkZV9lZmZlY3RgLCBvciByZXR1cm4gOmRhdGE6YERFRkFVTFRgOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAuLi4gICAgIHJldHVybiBtLnJldHVybl92YWx1ZQorICAgICAgICAuLi4KKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICA+Pj4gbS5yZXR1cm5fdmFsdWUgPSAzCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIC4uLiAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzCisKK1RvIHJlbW92ZSBhIGBzaWRlX2VmZmVjdGAsIGFuZCByZXR1cm4gdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyLCBzZXQgdGhlCitgc2lkZV9lZmZlY3RgIHRvIGBOb25lYDoKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9NikKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAuLi4gICAgIHJldHVybiAzCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICAgICAgPj4+IG0oKQorICAgICAgICA2CisKK1RoZSBgc2lkZV9lZmZlY3RgIGNhbiBhbHNvIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuIFJlcGVhdGVkIGNhbGxzIHRvIHRoZSBtb2NrCit3aWxsIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUgaXRlcmFibGUgKHVudGlsIHRoZSBpdGVyYWJsZSBpcyBleGhhdXN0ZWQgYW5kCithIGBTdG9wSXRlcmF0aW9uYCBpcyByYWlzZWQpOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PVsxLCAyLCAzXSkKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAxCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMgorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKyAgICAgICAgPj4+IG0oKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIFN0b3BJdGVyYXRpb24KKworSWYgYW55IG1lbWJlcnMgb2YgdGhlIGl0ZXJhYmxlIGFyZSBleGNlcHRpb25zIHRoZXkgd2lsbCBiZSByYWlzZWQgaW5zdGVhZCBvZgorcmV0dXJuZWQ6OgorCisgICAgICAgID4+PiBpdGVyYWJsZSA9ICgzMywgVmFsdWVFcnJvciwgNjYpCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PWl0ZXJhYmxlKQorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMzCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgLi4uCisgICAgICAgIFZhbHVlRXJyb3IKKyAgICAgICAgPj4+IG0oKQorICAgICAgICA2NgorCisKKy4uIF9kZWxldGluZy1hdHRyaWJ1dGVzOgorCitEZWxldGluZyBBdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+CisKK01vY2sgb2JqZWN0cyBjcmVhdGUgYXR0cmlidXRlcyBvbiBkZW1hbmQuIFRoaXMgYWxsb3dzIHRoZW0gdG8gcHJldGVuZCB0byBiZQorb2JqZWN0cyBvZiBhbnkgdHlwZS4KKworWW91IG1heSB3YW50IGEgbW9jayBvYmplY3QgdG8gcmV0dXJuIGBGYWxzZWAgdG8gYSBgaGFzYXR0cmAgY2FsbCwgb3IgcmFpc2UgYW4KK2BBdHRyaWJ1dGVFcnJvcmAgd2hlbiBhbiBhdHRyaWJ1dGUgaXMgZmV0Y2hlZC4gWW91IGNhbiBkbyB0aGlzIGJ5IHByb3ZpZGluZworYW4gb2JqZWN0IGFzIGEgYHNwZWNgIGZvciBhIG1vY2ssIGJ1dCB0aGF0IGlzbid0IGFsd2F5cyBjb252ZW5pZW50LgorCitZb3UgImJsb2NrIiBhdHRyaWJ1dGVzIGJ5IGRlbGV0aW5nIHRoZW0uIE9uY2UgZGVsZXRlZCwgYWNjZXNzaW5nIGFuIGF0dHJpYnV0ZQord2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBoYXNhdHRyKG1vY2ssICdtJykKKyAgICBUcnVlCisgICAgPj4+IGRlbCBtb2NrLm0KKyAgICA+Pj4gaGFzYXR0cihtb2NrLCAnbScpCisgICAgRmFsc2UKKyAgICA+Pj4gZGVsIG1vY2suZgorICAgID4+PiBtb2NrLmYKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBmCisKKworQXR0YWNoaW5nIE1vY2tzIGFzIEF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1doZW4geW91IGF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIGFub3RoZXIgbW9jayAob3IgYXMgdGhlIHJldHVybgordmFsdWUpIGl0IGJlY29tZXMgYSAiY2hpbGQiIG9mIHRoYXQgbW9jay4gQ2FsbHMgdG8gdGhlIGNoaWxkIGFyZSByZWNvcmRlZCBpbgordGhlIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgIGFuZCA6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlcyBvZiB0aGUKK3BhcmVudC4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIGNoaWxkIG1vY2tzIGFuZCB0aGVuIGF0dGFjaGluZyB0aGVtIHRvCit0aGUgcGFyZW50LCBvciBmb3IgYXR0YWNoaW5nIG1vY2tzIHRvIGEgcGFyZW50IHRoYXQgcmVjb3JkcyBhbGwgY2FsbHMgdG8gdGhlCitjaGlsZHJlbiBhbmQgYWxsb3dzIHlvdSB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgdGhlIG9yZGVyIG9mIGNhbGxzIGJldHdlZW4KK21vY2tzOgorCisgICAgPj4+IHBhcmVudCA9IE1hZ2ljTW9jaygpCisgICAgPj4+IGNoaWxkMSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gY2hpbGQyID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBwYXJlbnQuY2hpbGQxID0gY2hpbGQxCisgICAgPj4+IHBhcmVudC5jaGlsZDIgPSBjaGlsZDIKKyAgICA+Pj4gY2hpbGQxKDEpCisgICAgPj4+IGNoaWxkMigyKQorICAgID4+PiBwYXJlbnQubW9ja19jYWxscworICAgIFtjYWxsLmNoaWxkMSgxKSwgY2FsbC5jaGlsZDIoMildCisKK1RoZSBleGNlcHRpb24gdG8gdGhpcyBpcyBpZiB0aGUgbW9jayBoYXMgYSBuYW1lLiBUaGlzIGFsbG93cyB5b3UgdG8gcHJldmVudAordGhlICJwYXJlbnRpbmciIGlmIGZvciBzb21lIHJlYXNvbiB5b3UgZG9uJ3Qgd2FudCBpdCB0byBoYXBwZW4uCisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG5vdF9hX2NoaWxkID0gTWFnaWNNb2NrKG5hbWU9J25vdC1hLWNoaWxkJykKKyAgICA+Pj4gbW9jay5hdHRyaWJ1dGUgPSBub3RfYV9jaGlsZAorICAgID4+PiBtb2NrLmF0dHJpYnV0ZSgpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdub3QtYS1jaGlsZCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzCisgICAgW10KKworTW9ja3MgY3JlYXRlZCBmb3IgeW91IGJ5IDpmdW5jOmBwYXRjaGAgYXJlIGF1dG9tYXRpY2FsbHkgZ2l2ZW4gbmFtZXMuIFRvCithdHRhY2ggbW9ja3MgdGhhdCBoYXZlIG5hbWVzIHRvIGEgcGFyZW50IHlvdSB1c2UgdGhlIDptZXRoOmB+TW9jay5hdHRhY2hfbW9ja2AKK21ldGhvZDoKKworICAgID4+PiB0aGluZzEgPSBvYmplY3QoKQorICAgID4+PiB0aGluZzIgPSBvYmplY3QoKQorICAgID4+PiBwYXJlbnQgPSBNYWdpY01vY2soKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy50aGluZzEnLCByZXR1cm5fdmFsdWU9Tm9uZSkgYXMgY2hpbGQxOgorICAgIC4uLiAgICAgd2l0aCBwYXRjaCgnX19tYWluX18udGhpbmcyJywgcmV0dXJuX3ZhbHVlPU5vbmUpIGFzIGNoaWxkMjoKKyAgICAuLi4gICAgICAgICBwYXJlbnQuYXR0YWNoX21vY2soY2hpbGQxLCAnY2hpbGQxJykKKyAgICAuLi4gICAgICAgICBwYXJlbnQuYXR0YWNoX21vY2soY2hpbGQyLCAnY2hpbGQyJykKKyAgICAuLi4gICAgICAgICBjaGlsZDEoJ29uZScpCisgICAgLi4uICAgICAgICAgY2hpbGQyKCd0d28nKQorICAgIC4uLgorICAgID4+PiBwYXJlbnQubW9ja19jYWxscworICAgIFtjYWxsLmNoaWxkMSgnb25lJyksIGNhbGwuY2hpbGQyKCd0d28nKV0KKworCisuLiBbI10gVGhlIG9ubHkgZXhjZXB0aW9ucyBhcmUgbWFnaWMgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyAodGhvc2UgdGhhdCBoYXZlCisgICAgICAgbGVhZGluZyBhbmQgdHJhaWxpbmcgZG91YmxlIHVuZGVyc2NvcmVzKS4gTW9jayBkb2Vzbid0IGNyZWF0ZSB0aGVzZSBidXQKKyAgICAgICBpbnN0ZWFkIG9mIHJhaXNlcyBhbiBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgaXMgYmVjYXVzZSB0aGUgaW50ZXJwcmV0ZXIKKyAgICAgICB3aWxsIG9mdGVuIGltcGxpY2l0bHkgcmVxdWVzdCB0aGVzZSBtZXRob2RzLCBhbmQgZ2V0cyAqdmVyeSogY29uZnVzZWQgdG8KKyAgICAgICBnZXQgYSBuZXcgTW9jayBvYmplY3Qgd2hlbiBpdCBleHBlY3RzIGEgbWFnaWMgbWV0aG9kLiBJZiB5b3UgbmVlZCBtYWdpYworICAgICAgIG1ldGhvZCBzdXBwb3J0IHNlZSA6cmVmOmBtYWdpYyBtZXRob2RzIDxtYWdpYy1tZXRob2RzPmAuCisKKworVGhlIHBhdGNoZXJzCis9PT09PT09PT09PT0KKworVGhlIHBhdGNoIGRlY29yYXRvcnMgYXJlIHVzZWQgZm9yIHBhdGNoaW5nIG9iamVjdHMgb25seSB3aXRoaW4gdGhlIHNjb3BlIG9mCit0aGUgZnVuY3Rpb24gdGhleSBkZWNvcmF0ZS4gVGhleSBhdXRvbWF0aWNhbGx5IGhhbmRsZSB0aGUgdW5wYXRjaGluZyBmb3IgeW91LAorZXZlbiBpZiBleGNlcHRpb25zIGFyZSByYWlzZWQuIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgY2FuIGFsc28gYmUgdXNlZCBpbiB3aXRoCitzdGF0ZW1lbnRzIG9yIGFzIGNsYXNzIGRlY29yYXRvcnMuCisKKworcGF0Y2gKKy0tLS0tCisKKy4uIG5vdGU6OgorCisgICAgYHBhdGNoYCBpcyBzdHJhaWdodGZvcndhcmQgdG8gdXNlLiBUaGUga2V5IGlzIHRvIGRvIHRoZSBwYXRjaGluZyBpbiB0aGUKKyAgICByaWdodCBuYW1lc3BhY2UuIFNlZSB0aGUgc2VjdGlvbiBgd2hlcmUgdG8gcGF0Y2hgXy4KKworLi4gZnVuY3Rpb246OiBwYXRjaCh0YXJnZXQsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKQorCisgICAgYHBhdGNoYCBhY3RzIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gSW5zaWRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBvciB3aXRoIHN0YXRlbWVudCwgdGhlIGB0YXJnZXRgCisgICAgaXMgcGF0Y2hlZCB3aXRoIGEgYG5ld2Agb2JqZWN0LiBXaGVuIHRoZSBmdW5jdGlvbi93aXRoIHN0YXRlbWVudCBleGl0cworICAgIHRoZSBwYXRjaCBpcyB1bmRvbmUuCisKKyAgICBJZiBgbmV3YCBpcyBvbWl0dGVkLCB0aGVuIHRoZSB0YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgOmNsYXNzOmBNYWdpY01vY2tgLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgYW5kIGBuZXdgIGlzCisgICAgb21pdHRlZCwgdGhlIGNyZWF0ZWQgbW9jayBpcyBwYXNzZWQgaW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gdGhlCisgICAgZGVjb3JhdGVkIGZ1bmN0aW9uLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdGhlIGNyZWF0ZWQKKyAgICBtb2NrIGlzIHJldHVybmVkIGJ5IHRoZSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgdGFyZ2V0YCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gYCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUnYC4gVGhlCisgICAgYHRhcmdldGAgaXMgaW1wb3J0ZWQgYW5kIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHJlcGxhY2VkIHdpdGggdGhlIGBuZXdgCisgICAgb2JqZWN0LCBzbyB0aGUgYHRhcmdldGAgbXVzdCBiZSBpbXBvcnRhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IHlvdSBhcmUKKyAgICBjYWxsaW5nIGBwYXRjaGAgZnJvbS4gVGhlIHRhcmdldCBpcyBpbXBvcnRlZCB3aGVuIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24KKyAgICBpcyBleGVjdXRlZCwgbm90IGF0IGRlY29yYXRpb24gdGltZS4KKworICAgIFRoZSBgc3BlY2AgYW5kIGBzcGVjX3NldGAga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgYE1hZ2ljTW9ja2AKKyAgICBpZiBwYXRjaCBpcyBjcmVhdGluZyBvbmUgZm9yIHlvdS4KKworICAgIEluIGFkZGl0aW9uIHlvdSBjYW4gcGFzcyBgc3BlYz1UcnVlYCBvciBgc3BlY19zZXQ9VHJ1ZWAsIHdoaWNoIGNhdXNlcworICAgIHBhdGNoIHRvIHBhc3MgaW4gdGhlIG9iamVjdCBiZWluZyBtb2NrZWQgYXMgdGhlIHNwZWMvc3BlY19zZXQgb2JqZWN0LgorCisgICAgYG5ld19jYWxsYWJsZWAgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IGNsYXNzLCBvciBjYWxsYWJsZSBvYmplY3QsCisgICAgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGBuZXdgIG9iamVjdC4gQnkgZGVmYXVsdCBgTWFnaWNNb2NrYCBpcworICAgIHVzZWQuCisKKyAgICBBIG1vcmUgcG93ZXJmdWwgZm9ybSBvZiBgc3BlY2AgaXMgYGF1dG9zcGVjYC4gSWYgeW91IHNldCBgYXV0b3NwZWM9VHJ1ZWAKKyAgICB0aGVuIHRoZSBtb2NrIHdpdGggYmUgY3JlYXRlZCB3aXRoIGEgc3BlYyBmcm9tIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuCisgICAgQWxsIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2sgd2lsbCBhbHNvIGhhdmUgdGhlIHNwZWMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4gTWV0aG9kcyBhbmQgZnVuY3Rpb25zIGJlaW5nIG1vY2tlZAorICAgIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCBhbmQgd2lsbCByYWlzZSBhIGBUeXBlRXJyb3JgIGlmIHRoZXkgYXJlCisgICAgY2FsbGVkIHdpdGggdGhlIHdyb25nIHNpZ25hdHVyZS4gRm9yIG1vY2tzCisgICAgcmVwbGFjaW5nIGEgY2xhc3MsIHRoZWlyIHJldHVybiB2YWx1ZSAodGhlICdpbnN0YW5jZScpIHdpbGwgaGF2ZSB0aGUgc2FtZQorICAgIHNwZWMgYXMgdGhlIGNsYXNzLiBTZWUgdGhlIDpmdW5jOmBjcmVhdGVfYXV0b3NwZWNgIGZ1bmN0aW9uIGFuZAorICAgIDpyZWY6YGF1dG8tc3BlY2NpbmdgLgorCisgICAgSW5zdGVhZCBvZiBgYXV0b3NwZWM9VHJ1ZWAgeW91IGNhbiBwYXNzIGBhdXRvc3BlYz1zb21lX29iamVjdGAgdG8gdXNlIGFuCisgICAgYXJiaXRyYXJ5IG9iamVjdCBhcyB0aGUgc3BlYyBpbnN0ZWFkIG9mIHRoZSBvbmUgYmVpbmcgcmVwbGFjZWQuCisKKyAgICBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBmYWlsIHRvIHJlcGxhY2UgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0LiBJZgorICAgIHlvdSBwYXNzIGluIGBjcmVhdGU9VHJ1ZWAsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHBhdGNoIHdpbGwKKyAgICBjcmVhdGUgdGhlIGF0dHJpYnV0ZSBmb3IgeW91IHdoZW4gdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQKKyAgICBkZWxldGUgaXQgYWdhaW4gYWZ0ZXJ3YXJkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdHMgYWdhaW5zdAorICAgIGF0dHJpYnV0ZXMgdGhhdCB5b3VyIHByb2R1Y3Rpb24gY29kZSBjcmVhdGVzIGF0IHJ1bnRpbWUuIEl0IGlzIG9mZiBieSBieQorICAgIGRlZmF1bHQgYmVjYXVzZSBpdCBjYW4gYmUgZGFuZ2Vyb3VzLiBXaXRoIGl0IHN3aXRjaGVkIG9uIHlvdSBjYW4gd3JpdGUKKyAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBgVGVzdENhc2VgIGNsYXNzIGRlY29yYXRvci4gSXQgd29ya3MgYnkKKyAgICBkZWNvcmF0aW5nIGVhY2ggdGVzdCBtZXRob2QgaW4gdGhlIGNsYXNzLiBUaGlzIHJlZHVjZXMgdGhlIGJvaWxlcnBsYXRlCisgICAgY29kZSB3aGVuIHlvdXIgdGVzdCBtZXRob2RzIHNoYXJlIGEgY29tbW9uIHBhdGNoaW5ncyBzZXQuIGBwYXRjaGAgZmluZHMKKyAgICB0ZXN0cyBieSBsb29raW5nIGZvciBtZXRob2QgbmFtZXMgdGhhdCBzdGFydCB3aXRoIGBwYXRjaC5URVNUX1BSRUZJWGAuCisgICAgQnkgZGVmYXVsdCB0aGlzIGlzIGB0ZXN0YCwgd2hpY2ggbWF0Y2hlcyB0aGUgd2F5IGB1bml0dGVzdGAgZmluZHMgdGVzdHMuCisgICAgWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGAuCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCisgICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKKyAgICB1c2UgImFzIiB0aGVuIHRoZSBwYXRjaGVkIG9iamVjdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBuYW1lIGFmdGVyIHRoZQorICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgorCisgICAgYHBhdGNoYCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUgcGFzc2VkIHRvCisgICAgdGhlIGBNb2NrYCAob3IgYG5ld19jYWxsYWJsZWApIG9uIGNvbnN0cnVjdGlvbi4KKworICAgIGBwYXRjaC5kaWN0KC4uLilgLCBgcGF0Y2gubXVsdGlwbGUoLi4uKWAgYW5kIGBwYXRjaC5vYmplY3QoLi4uKWAgYXJlCisgICAgYXZhaWxhYmxlIGZvciBhbHRlcm5hdGUgdXNlLWNhc2VzLgorCitgcGF0Y2hgIGFzIGZ1bmN0aW9uIGRlY29yYXRvciwgY3JlYXRpbmcgdGhlIG1vY2sgZm9yIHlvdSBhbmQgcGFzc2luZyBpdCBpbnRvCit0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uOgorCisgICAgPj4+IEBwYXRjaCgnX19tYWluX18uU29tZUNsYXNzJykKKyAgICAuLi4gZGVmIGZ1bmN0aW9uKG5vcm1hbF9hcmd1bWVudCwgbW9ja19jbGFzcyk6CisgICAgLi4uICAgICBwcmludChtb2NrX2NsYXNzIGlzIFNvbWVDbGFzcykKKyAgICAuLi4KKyAgICA+Pj4gZnVuY3Rpb24oTm9uZSkKKyAgICBUcnVlCisKK1BhdGNoaW5nIGEgY2xhc3MgcmVwbGFjZXMgdGhlIGNsYXNzIHdpdGggYSBgTWFnaWNNb2NrYCAqaW5zdGFuY2UqLiBJZiB0aGUKK2NsYXNzIGlzIGluc3RhbnRpYXRlZCBpbiB0aGUgY29kZSB1bmRlciB0ZXN0IHRoZW4gaXQgd2lsbCBiZSB0aGUKKzphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIG9mIHRoZSBtb2NrIHRoYXQgd2lsbCBiZSB1c2VkLgorCitJZiB0aGUgY2xhc3MgaXMgaW5zdGFudGlhdGVkIG11bHRpcGxlIHRpbWVzIHlvdSBjb3VsZCB1c2UKKzphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgdG8gcmV0dXJuIGEgbmV3IG1vY2sgZWFjaCB0aW1lLiBBbHRlcm5hdGl2ZWx5IHlvdQorY2FuIHNldCB0aGUgYHJldHVybl92YWx1ZWAgdG8gYmUgYW55dGhpbmcgeW91IHdhbnQuCisKK1RvIGNvbmZpZ3VyZSByZXR1cm4gdmFsdWVzIG9uIG1ldGhvZHMgb2YgKmluc3RhbmNlcyogb24gdGhlIHBhdGNoZWQgY2xhc3MKK3lvdSBtdXN0IGRvIHRoaXMgb24gdGhlIGByZXR1cm5fdmFsdWVgLiBGb3IgZXhhbXBsZToKKworICAgID4+PiBjbGFzcyBDbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAuLi4gICAgICAgICBwYXNzCisgICAgLi4uCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLkNsYXNzJykgYXMgTW9ja0NsYXNzOgorICAgIC4uLiAgICAgaW5zdGFuY2UgPSBNb2NrQ2xhc3MucmV0dXJuX3ZhbHVlCisgICAgLi4uICAgICBpbnN0YW5jZS5tZXRob2QucmV0dXJuX3ZhbHVlID0gJ2ZvbycKKyAgICAuLi4gICAgIGFzc2VydCBDbGFzcygpIGlzIGluc3RhbmNlCisgICAgLi4uICAgICBhc3NlcnQgQ2xhc3MoKS5tZXRob2QoKSA9PSAnZm9vJworICAgIC4uLgorCitJZiB5b3UgdXNlIGBzcGVjYCBvciBgc3BlY19zZXRgIGFuZCBgcGF0Y2hgIGlzIHJlcGxhY2luZyBhICpjbGFzcyosIHRoZW4gdGhlCityZXR1cm4gdmFsdWUgb2YgdGhlIGNyZWF0ZWQgbW9jayB3aWxsIGhhdmUgdGhlIHNhbWUgc3BlYy4KKworICAgID4+PiBPcmlnaW5hbCA9IENsYXNzCisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18uQ2xhc3MnLCBzcGVjPVRydWUpCisgICAgPj4+IE1vY2tDbGFzcyA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBpbnN0YW5jZSA9IE1vY2tDbGFzcygpCisgICAgPj4+IGFzc2VydCBpc2luc3RhbmNlKGluc3RhbmNlLCBPcmlnaW5hbCkKKyAgICA+Pj4gcGF0Y2hlci5zdG9wKCkKKworVGhlIGBuZXdfY2FsbGFibGVgIGFyZ3VtZW50IGlzIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byB1c2UgYW4gYWx0ZXJuYXRpdmUKK2NsYXNzIHRvIHRoZSBkZWZhdWx0IDpjbGFzczpgTWFnaWNNb2NrYCBmb3IgdGhlIGNyZWF0ZWQgbW9jay4gRm9yIGV4YW1wbGUsIGlmCit5b3Ugd2FudGVkIGEgOmNsYXNzOmBOb25DYWxsYWJsZU1vY2tgIHRvIGJlIHVzZWQ6CisKKyAgICA+Pj4gdGhpbmcgPSBvYmplY3QoKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy50aGluZycsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1vY2spIGFzIG1vY2tfdGhpbmc6CisgICAgLi4uICAgICBhc3NlcnQgdGhpbmcgaXMgbW9ja190aGluZworICAgIC4uLiAgICAgdGhpbmcoKQorICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ05vbkNhbGxhYmxlTW9jaycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZQorCitBbm90aGVyIHVzZSBjYXNlIG1pZ2h0IGJlIHRvIHJlcGxhY2UgYW4gb2JqZWN0IHdpdGggYSBgU3RyaW5nSU9gIGluc3RhbmNlOgorCisgICAgPj4+IGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisgICAgPj4+IGRlZiBmb28oKToKKyAgICAuLi4gICAgIHByaW50ICdTb21ldGhpbmcnCisgICAgLi4uCisgICAgPj4+IEBwYXRjaCgnc3lzLnN0ZG91dCcsIG5ld19jYWxsYWJsZT1TdHJpbmdJTykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19zdGRvdXQpOgorICAgIC4uLiAgICAgZm9vKCkKKyAgICAuLi4gICAgIGFzc2VydCBtb2NrX3N0ZG91dC5nZXR2YWx1ZSgpID09ICdTb21ldGhpbmdcbicKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK1doZW4gYHBhdGNoYCBpcyBjcmVhdGluZyBhIG1vY2sgZm9yIHlvdSwgaXQgaXMgY29tbW9uIHRoYXQgdGhlIGZpcnN0IHRoaW5nCit5b3UgbmVlZCB0byBkbyBpcyB0byBjb25maWd1cmUgdGhlIG1vY2suIFNvbWUgb2YgdGhhdCBjb25maWd1cmF0aW9uIGNhbiBiZSBkb25lCitpbiB0aGUgY2FsbCB0byBwYXRjaC4gQW55IGFyYml0cmFyeSBrZXl3b3JkcyB5b3UgcGFzcyBpbnRvIHRoZSBjYWxsIHdpbGwgYmUKK3VzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIGNyZWF0ZWQgbW9jazoKKworICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ19fbWFpbl9fLnRoaW5nJywgZmlyc3Q9J29uZScsIHNlY29uZD0ndHdvJykKKyAgICA+Pj4gbW9ja190aGluZyA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBtb2NrX3RoaW5nLmZpcnN0CisgICAgJ29uZScKKyAgICA+Pj4gbW9ja190aGluZy5zZWNvbmQKKyAgICAndHdvJworCitBcyB3ZWxsIGFzIGF0dHJpYnV0ZXMgb24gdGhlIGNyZWF0ZWQgbW9jayBhdHRyaWJ1dGVzLCBsaWtlIHRoZQorOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAgYW5kIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAsIG9mIGNoaWxkIG1vY2tzIGNhbgorYWxzbyBiZSBjb25maWd1cmVkLiBUaGVzZSBhcmVuJ3Qgc3ludGFjdGljYWxseSB2YWxpZCB0byBwYXNzIGluIGRpcmVjdGx5IGFzCitrZXl3b3JkIGFyZ3VtZW50cywgYnV0IGEgZGljdGlvbmFyeSB3aXRoIHRoZXNlIGFzIGtleXMgY2FuIHN0aWxsIGJlIGV4cGFuZGVkCitpbnRvIGEgYHBhdGNoYCBjYWxsIHVzaW5nIGAqKmA6CisKKyAgICA+Pj4gY29uZmlnID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18udGhpbmcnLCAqKmNvbmZpZykKKyAgICA+Pj4gbW9ja190aGluZyA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBtb2NrX3RoaW5nLm1ldGhvZCgpCisgICAgMworICAgID4+PiBtb2NrX3RoaW5nLm90aGVyKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBLZXlFcnJvcgorCisKK3BhdGNoLm9iamVjdAorLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2gub2JqZWN0KHRhcmdldCwgYXR0cmlidXRlLCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIHBhdGNoIHRoZSBuYW1lZCBtZW1iZXIgKGBhdHRyaWJ1dGVgKSBvbiBhbiBvYmplY3QgKGB0YXJnZXRgKSB3aXRoIGEgbW9jaworICAgIG9iamVjdC4KKworICAgIGBwYXRjaC5vYmplY3RgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gQXJndW1lbnRzIGBuZXdgLCBgc3BlY2AsIGBjcmVhdGVgLCBgc3BlY19zZXRgLCBgYXV0b3NwZWNgIGFuZAorICAgIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gTGlrZSBgcGF0Y2hgLAorICAgIGBwYXRjaC5vYmplY3RgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgY29uZmlndXJpbmcgdGhlIG1vY2sKKyAgICBvYmplY3QgaXQgY3JlYXRlcy4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gub2JqZWN0YCBob25vdXJzIGBwYXRjaC5URVNUX1BSRUZJWGAKKyAgICBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorCitZb3UgY2FuIGVpdGhlciBjYWxsIGBwYXRjaC5vYmplY3RgIHdpdGggdGhyZWUgYXJndW1lbnRzIG9yIHR3byBhcmd1bWVudHMuIFRoZQordGhyZWUgYXJndW1lbnQgZm9ybSB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlIHBhdGNoZWQsIHRoZSBhdHRyaWJ1dGUgbmFtZSBhbmQgdGhlCitvYmplY3QgdG8gcmVwbGFjZSB0aGUgYXR0cmlidXRlIHdpdGguCisKK1doZW4gY2FsbGluZyB3aXRoIHRoZSB0d28gYXJndW1lbnQgZm9ybSB5b3Ugb21pdCB0aGUgcmVwbGFjZW1lbnQgb2JqZWN0LCBhbmQgYQorbW9jayBpcyBjcmVhdGVkIGZvciB5b3UgYW5kIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUgZGVjb3JhdGVkCitmdW5jdGlvbjoKKworICAgID4+PiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2NsYXNzX21ldGhvZCcpCisgICAgLi4uIGRlZiB0ZXN0KG1vY2tfbWV0aG9kKToKKyAgICAuLi4gICAgIFNvbWVDbGFzcy5jbGFzc19tZXRob2QoMykKKyAgICAuLi4gICAgIG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworYHNwZWNgLCBgY3JlYXRlYCBhbmQgdGhlIG90aGVyIGFyZ3VtZW50cyB0byBgcGF0Y2gub2JqZWN0YCBoYXZlIHRoZSBzYW1lCittZWFuaW5nIGFzIHRoZXkgZG8gZm9yIGBwYXRjaGAuCisKKworcGF0Y2guZGljdAorLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IHBhdGNoLmRpY3QoaW5fZGljdCwgdmFsdWVzPSgpLCBjbGVhcj1GYWxzZSwgKiprd2FyZ3MpCisKKyAgICBQYXRjaCBhIGRpY3Rpb25hcnksIG9yIGRpY3Rpb25hcnkgbGlrZSBvYmplY3QsIGFuZCByZXN0b3JlIHRoZSBkaWN0aW9uYXJ5CisgICAgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGFmdGVyIHRoZSB0ZXN0LgorCisgICAgYGluX2RpY3RgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtYXBwaW5nIGxpa2UgY29udGFpbmVyLiBJZiBpdCBpcyBhCisgICAgbWFwcGluZyB0aGVuIGl0IG11c3QgYXQgbGVhc3Qgc3VwcG9ydCBnZXR0aW5nLCBzZXR0aW5nIGFuZCBkZWxldGluZyBpdGVtcworICAgIHBsdXMgaXRlcmF0aW5nIG92ZXIga2V5cy4KKworICAgIGBpbl9kaWN0YCBjYW4gYWxzbyBiZSBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBkaWN0aW9uYXJ5LCB3aGljaAorICAgIHdpbGwgdGhlbiBiZSBmZXRjaGVkIGJ5IGltcG9ydGluZyBpdC4KKworICAgIGB2YWx1ZXNgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb2YgdmFsdWVzIHRvIHNldCBpbiB0aGUgZGljdGlvbmFyeS4gYHZhbHVlc2AKKyAgICBjYW4gYWxzbyBiZSBhbiBpdGVyYWJsZSBvZiBgKGtleSwgdmFsdWUpYCBwYWlycy4KKworICAgIElmIGBjbGVhcmAgaXMgVHJ1ZSB0aGVuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIG5ldworICAgIHZhbHVlcyBhcmUgc2V0LgorCisgICAgYHBhdGNoLmRpY3RgIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0byBzZXQKKyAgICB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGRlY29yYXRvciBvciBjbGFzcworICAgIGRlY29yYXRvci4gV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5kaWN0YCBob25vdXJzCisgICAgYHBhdGNoLlRFU1RfUFJFRklYYCBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorCitgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgdG8gYWRkIG1lbWJlcnMgdG8gYSBkaWN0aW9uYXJ5LCBvciBzaW1wbHkgbGV0IGEgdGVzdAorY2hhbmdlIGEgZGljdGlvbmFyeSwgYW5kIGVuc3VyZSB0aGUgZGljdGlvbmFyeSBpcyByZXN0b3JlZCB3aGVuIHRoZSB0ZXN0CitlbmRzLgorCisgICAgPj4+IGZvbyA9IHt9CisgICAgPj4+IHdpdGggcGF0Y2guZGljdChmb28sIHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30pOgorICAgIC4uLiAgICAgYXNzZXJ0IGZvbyA9PSB7J25ld2tleSc6ICduZXd2YWx1ZSd9CisgICAgLi4uCisgICAgPj4+IGFzc2VydCBmb28gPT0ge30KKworICAgID4+PiBpbXBvcnQgb3MKKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KCdvcy5lbnZpcm9uJywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSk6CisgICAgLi4uICAgICBwcmludCBvcy5lbnZpcm9uWyduZXdrZXknXQorICAgIC4uLgorICAgIG5ld3ZhbHVlCisgICAgPj4+IGFzc2VydCAnbmV3a2V5JyBub3QgaW4gb3MuZW52aXJvbgorCitLZXl3b3JkcyBjYW4gYmUgdXNlZCBpbiB0aGUgYHBhdGNoLmRpY3RgIGNhbGwgdG8gc2V0IHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeToKKworICAgID4+PiBteW1vZHVsZSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG15bW9kdWxlLmZ1bmN0aW9uLnJldHVybl92YWx1ZSA9ICdmaXNoJworICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ3N5cy5tb2R1bGVzJywgbXltb2R1bGU9bXltb2R1bGUpOgorICAgIC4uLiAgICAgaW1wb3J0IG15bW9kdWxlCisgICAgLi4uICAgICBteW1vZHVsZS5mdW5jdGlvbignc29tZScsICdhcmdzJykKKyAgICAuLi4KKyAgICAnZmlzaCcKKworYHBhdGNoLmRpY3RgIGNhbiBiZSB1c2VkIHdpdGggZGljdGlvbmFyeSBsaWtlIG9iamVjdHMgdGhhdCBhcmVuJ3QgYWN0dWFsbHkKK2RpY3Rpb25hcmllcy4gQXQgdGhlIHZlcnkgbWluaW11bSB0aGV5IG11c3Qgc3VwcG9ydCBpdGVtIGdldHRpbmcsIHNldHRpbmcsCitkZWxldGluZyBhbmQgZWl0aGVyIGl0ZXJhdGlvbiBvciBtZW1iZXJzaGlwIHRlc3QuIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlCittYWdpYyBtZXRob2RzIGBfX2dldGl0ZW1fX2AsIGBfX3NldGl0ZW1fX2AsIGBfX2RlbGl0ZW1fX2AgYW5kIGVpdGhlcgorYF9faXRlcl9fYCBvciBgX19jb250YWluc19fYC4KKworICAgID4+PiBjbGFzcyBDb250YWluZXIob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnZhbHVlcyA9IHt9CisgICAgLi4uICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWVzW25hbWVdCisgICAgLi4uICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgIC4uLiAgICAgICAgIHNlbGYudmFsdWVzW25hbWVdID0gdmFsdWUKKyAgICAuLi4gICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAuLi4gICAgICAgICBkZWwgc2VsZi52YWx1ZXNbbmFtZV0KKyAgICAuLi4gICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gaXRlcihzZWxmLnZhbHVlcykKKyAgICAuLi4KKyAgICA+Pj4gdGhpbmcgPSBDb250YWluZXIoKQorICAgID4+PiB0aGluZ1snb25lJ10gPSAxCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCh0aGluZywgb25lPTIsIHR3bz0zKToKKyAgICAuLi4gICAgIGFzc2VydCB0aGluZ1snb25lJ10gPT0gMgorICAgIC4uLiAgICAgYXNzZXJ0IHRoaW5nWyd0d28nXSA9PSAzCisgICAgLi4uCisgICAgPj4+IGFzc2VydCB0aGluZ1snb25lJ10gPT0gMQorICAgID4+PiBhc3NlcnQgbGlzdCh0aGluZykgPT0gWydvbmUnXQorCisKK3BhdGNoLm11bHRpcGxlCistLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IHBhdGNoLm11bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncykKKworICAgIFBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyBpbiBhIHNpbmdsZSBjYWxsLiBJdCB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlCisgICAgcGF0Y2hlZCAoZWl0aGVyIGFzIGFuIG9iamVjdCBvciBhIHN0cmluZyB0byBmZXRjaCB0aGUgb2JqZWN0IGJ5IGltcG9ydGluZykKKyAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSBwYXRjaGVzOjoKKworICAgICAgICB3aXRoIHBhdGNoLm11bHRpcGxlKHNldHRpbmdzLCBGSVJTVF9QQVRDSD0nb25lJywgU0VDT05EX1BBVENIPSd0d28nKToKKyAgICAgICAgICAgIC4uLgorCisgICAgVXNlIDpkYXRhOmBERUZBVUxUYCBhcyB0aGUgdmFsdWUgaWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUKKyAgICBtb2NrcyBmb3IgeW91LiBJbiB0aGlzIGNhc2UgdGhlIGNyZWF0ZWQgbW9ja3MgYXJlIHBhc3NlZCBpbnRvIGEgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gYnkga2V5d29yZCwgYW5kIGEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGVuIGBwYXRjaC5tdWx0aXBsZWAgaXMKKyAgICB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIFRoZSBhcmd1bWVudHMgYHNwZWNgLCBgc3BlY19zZXRgLCBgY3JlYXRlYCwgYGF1dG9zcGVjYCBhbmQKKyAgICBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIFRoZXNlIGFyZ3VtZW50cyB3aWxsCisgICAgYmUgYXBwbGllZCB0byAqYWxsKiBwYXRjaGVzIGRvbmUgYnkgYHBhdGNoLm11bHRpcGxlYC4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gubXVsdGlwbGVgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK0lmIHlvdSB3YW50IGBwYXRjaC5tdWx0aXBsZWAgdG8gY3JlYXRlIG1vY2tzIGZvciB5b3UsIHRoZW4geW91IGNhbiB1c2UKKzpkYXRhOmBERUZBVUxUYCBhcyB0aGUgdmFsdWUuIElmIHlvdSB1c2UgYHBhdGNoLm11bHRpcGxlYCBhcyBhIGRlY29yYXRvcgordGhlbiB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiBieSBrZXl3b3JkLgorCisgICAgPj4+IHRoaW5nID0gb2JqZWN0KCkKKyAgICA+Pj4gb3RoZXIgPSBvYmplY3QoKQorCisgICAgPj4+IEBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKQorICAgIC4uLiBkZWYgdGVzdF9mdW5jdGlvbih0aGluZywgb3RoZXIpOgorICAgIC4uLiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGhpbmcsIE1hZ2ljTW9jaykKKyAgICAuLi4gICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCBNYWdpY01vY2spCisgICAgLi4uCisgICAgPj4+IHRlc3RfZnVuY3Rpb24oKQorCitgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSBuZXN0ZWQgd2l0aCBvdGhlciBgcGF0Y2hgIGRlY29yYXRvcnMsIGJ1dCBwdXQgYXJndW1lbnRzCitwYXNzZWQgYnkga2V5d29yZCAqYWZ0ZXIqIGFueSBvZiB0aGUgc3RhbmRhcmQgYXJndW1lbnRzIGNyZWF0ZWQgYnkgYHBhdGNoYDoKKworICAgID4+PiBAcGF0Y2goJ3N5cy5leGl0JykKKyAgICAuLi4gQHBhdGNoLm11bHRpcGxlKCdfX21haW5fXycsIHRoaW5nPURFRkFVTFQsIG90aGVyPURFRkFVTFQpCisgICAgLi4uIGRlZiB0ZXN0X2Z1bmN0aW9uKG1vY2tfZXhpdCwgb3RoZXIsIHRoaW5nKToKKyAgICAuLi4gICAgIGFzc2VydCAnb3RoZXInIGluIHJlcHIob3RoZXIpCisgICAgLi4uICAgICBhc3NlcnQgJ3RoaW5nJyBpbiByZXByKHRoaW5nKQorICAgIC4uLiAgICAgYXNzZXJ0ICdleGl0JyBpbiByZXByKG1vY2tfZXhpdCkKKyAgICAuLi4KKyAgICA+Pj4gdGVzdF9mdW5jdGlvbigpCisKK0lmIGBwYXRjaC5tdWx0aXBsZWAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZQorY29udGV4dCBtYW5nZXIgaXMgYSBkaWN0aW9uYXJ5IHdoZXJlIGNyZWF0ZWQgbW9ja3MgYXJlIGtleWVkIGJ5IG5hbWU6CisKKyAgICA+Pj4gd2l0aCBwYXRjaC5tdWx0aXBsZSgnX19tYWluX18nLCB0aGluZz1ERUZBVUxULCBvdGhlcj1ERUZBVUxUKSBhcyB2YWx1ZXM6CisgICAgLi4uICAgICBhc3NlcnQgJ290aGVyJyBpbiByZXByKHZhbHVlc1snb3RoZXInXSkKKyAgICAuLi4gICAgIGFzc2VydCAndGhpbmcnIGluIHJlcHIodmFsdWVzWyd0aGluZyddKQorICAgIC4uLiAgICAgYXNzZXJ0IHZhbHVlc1sndGhpbmcnXSBpcyB0aGluZworICAgIC4uLiAgICAgYXNzZXJ0IHZhbHVlc1snb3RoZXInXSBpcyBvdGhlcgorICAgIC4uLgorCisKKy4uIF9zdGFydC1hbmQtc3RvcDoKKworcGF0Y2ggbWV0aG9kczogc3RhcnQgYW5kIHN0b3AKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCB0aGUgcGF0Y2hlcnMgaGF2ZSBgc3RhcnRgIGFuZCBgc3RvcGAgbWV0aG9kcy4gVGhlc2UgbWFrZSBpdCBzaW1wbGVyIHRvIGRvCitwYXRjaGluZyBpbiBgc2V0VXBgIG1ldGhvZHMgb3Igd2hlcmUgeW91IHdhbnQgdG8gZG8gbXVsdGlwbGUgcGF0Y2hlcyB3aXRob3V0CituZXN0aW5nIGRlY29yYXRvcnMgb3Igd2l0aCBzdGF0ZW1lbnRzLgorCitUbyB1c2UgdGhlbSBjYWxsIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIG9yIGBwYXRjaC5kaWN0YCBhcyBub3JtYWwgYW5kIGtlZXAgYQorcmVmZXJlbmNlIHRvIHRoZSByZXR1cm5lZCBgcGF0Y2hlcmAgb2JqZWN0LiBZb3UgY2FuIHRoZW4gY2FsbCBgc3RhcnRgIHRvIHB1dAordGhlIHBhdGNoIGluIHBsYWNlIGFuZCBgc3RvcGAgdG8gdW5kbyBpdC4KKworSWYgeW91IGFyZSB1c2luZyBgcGF0Y2hgIHRvIGNyZWF0ZSBhIG1vY2sgZm9yIHlvdSB0aGVuIGl0IHdpbGwgYmUgcmV0dXJuZWQgYnkKK3RoZSBjYWxsIHRvIGBwYXRjaGVyLnN0YXJ0YC4KKworICAgID4+PiBwYXRjaGVyID0gcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZScpCisgICAgPj4+IGZyb20gcGFja2FnZSBpbXBvcnQgbW9kdWxlCisgICAgPj4+IG9yaWdpbmFsID0gbW9kdWxlLkNsYXNzTmFtZQorICAgID4+PiBuZXdfbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiBhc3NlcnQgbW9kdWxlLkNsYXNzTmFtZSBpcyBub3Qgb3JpZ2luYWwKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbmV3X21vY2sKKyAgICA+Pj4gcGF0Y2hlci5zdG9wKCkKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgb3JpZ2luYWwKKyAgICA+Pj4gYXNzZXJ0IG1vZHVsZS5DbGFzc05hbWUgaXMgbm90IG5ld19tb2NrCisKKworQSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGlzIG1pZ2h0IGJlIGZvciBkb2luZyBtdWx0aXBsZSBwYXRjaGVzIGluIHRoZSBgc2V0VXBgCittZXRob2Qgb2YgYSBgVGVzdENhc2VgOgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyMSA9IHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzczEnKQorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MyJykKKyAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzczEgPSBzZWxmLnBhdGNoZXIxLnN0YXJ0KCkKKyAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzczIgPSBzZWxmLnBhdGNoZXIyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIxLnN0b3AoKQorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjIuc3RvcCgpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgLi4uICAgICAgICAgYXNzZXJ0IHBhY2thZ2UubW9kdWxlLkNsYXNzMSBpcyBzZWxmLk1vY2tDbGFzczEKKyAgICAuLi4gICAgICAgICBhc3NlcnQgcGFja2FnZS5tb2R1bGUuQ2xhc3MyIGlzIHNlbGYuTW9ja0NsYXNzMgorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykucnVuKCkKKworLi4gY2F1dGlvbjo6CisKKyAgICBJZiB5b3UgdXNlIHRoaXMgdGVjaG5pcXVlIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBwYXRjaGluZyBpcyAidW5kb25lIiBieQorICAgIGNhbGxpbmcgYHN0b3BgLiBUaGlzIGNhbiBiZSBmaWRkbGllciB0aGFuIHlvdSBtaWdodCB0aGluaywgYmVjYXVzZSBpZiBhbgorICAgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdGhlIGBgc2V0VXBgYCB0aGVuIGBgdGVhckRvd25gYCBpcyBub3QgY2FsbGVkLgorICAgIDptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVhbnVwYCBtYWtlcyB0aGlzIGVhc2llcjoKKworICAgICAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3MnKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLk1vY2tDbGFzcyA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorICAgICAgICAuLi4KKyAgICAgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIGFzc2VydCBwYWNrYWdlLm1vZHVsZS5DbGFzcyBpcyBzZWxmLk1vY2tDbGFzcworICAgICAgICAuLi4KKworICAgIEFzIGFuIGFkZGVkIGJvbnVzIHlvdSBubyBsb25nZXIgbmVlZCB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBgcGF0Y2hlcmAKKyAgICBvYmplY3QuCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gc3RvcCBhbGwgcGF0Y2hlcyB3aGljaCBoYXZlIGJlZW4gc3RhcnRlZCBieSB1c2luZworYHBhdGNoLnN0b3BhbGxgLgorCisuLiBmdW5jdGlvbjo6IHBhdGNoLnN0b3BhbGwKKworICAgIFN0b3AgYWxsIGFjdGl2ZSBwYXRjaGVzLiBPbmx5IHN0b3BzIHBhdGNoZXMgc3RhcnRlZCB3aXRoIGBzdGFydGAuCisKKworVEVTVF9QUkVGSVgKKy0tLS0tLS0tLS0tCisKK0FsbCBvZiB0aGUgcGF0Y2hlcnMgY2FuIGJlIHVzZWQgYXMgY2xhc3MgZGVjb3JhdG9ycy4gV2hlbiB1c2VkIGluIHRoaXMgd2F5Cit0aGV5IHdyYXAgZXZlcnkgdGVzdCBtZXRob2Qgb24gdGhlIGNsYXNzLiBUaGUgcGF0Y2hlcnMgcmVjb2duaXNlIG1ldGhvZHMgdGhhdAorc3RhcnQgd2l0aCBgdGVzdGAgYXMgYmVpbmcgdGVzdCBtZXRob2RzLiBUaGlzIGlzIHRoZSBzYW1lIHdheSB0aGF0IHRoZQorOmNsYXNzOmB1bml0dGVzdC5UZXN0TG9hZGVyYCBmaW5kcyB0ZXN0IG1ldGhvZHMgYnkgZGVmYXVsdC4KKworSXQgaXMgcG9zc2libGUgdGhhdCB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgcHJlZml4IGZvciB5b3VyIHRlc3RzLiBZb3UgY2FuCitpbmZvcm0gdGhlIHBhdGNoZXJzIG9mIHRoZSBkaWZmZXJlbnQgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYDoKKworICAgID4+PiBwYXRjaC5URVNUX1BSRUZJWCA9ICdmb28nCisgICAgPj4+IHZhbHVlID0gMworICAgID4+PgorICAgID4+PiBAcGF0Y2goJ19fbWFpbl9fLnZhbHVlJywgJ25vdCB0aHJlZScpCisgICAgLi4uIGNsYXNzIFRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgZm9vX29uZShzZWxmKToKKyAgICAuLi4gICAgICAgICBwcmludCB2YWx1ZQorICAgIC4uLiAgICAgZGVmIGZvb190d28oc2VsZik6CisgICAgLi4uICAgICAgICAgcHJpbnQgdmFsdWUKKyAgICAuLi4KKyAgICA+Pj4KKyAgICA+Pj4gVGhpbmcoKS5mb29fb25lKCkKKyAgICBub3QgdGhyZWUKKyAgICA+Pj4gVGhpbmcoKS5mb29fdHdvKCkKKyAgICBub3QgdGhyZWUKKyAgICA+Pj4gdmFsdWUKKyAgICAzCisKKworTmVzdGluZyBQYXRjaCBEZWNvcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHdhbnQgdG8gcGVyZm9ybSBtdWx0aXBsZSBwYXRjaGVzIHRoZW4geW91IGNhbiBzaW1wbHkgc3RhY2sgdXAgdGhlCitkZWNvcmF0b3JzLgorCitZb3UgY2FuIHN0YWNrIHVwIG11bHRpcGxlIHBhdGNoIGRlY29yYXRvcnMgdXNpbmcgdGhpcyBwYXR0ZXJuOgorCisgICAgPj4+IEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfbWV0aG9kJykKKyAgICAuLi4gQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdzdGF0aWNfbWV0aG9kJykKKyAgICAuLi4gZGVmIHRlc3QobW9jazEsIG1vY2syKToKKyAgICAuLi4gICAgIGFzc2VydCBTb21lQ2xhc3Muc3RhdGljX21ldGhvZCBpcyBtb2NrMQorICAgIC4uLiAgICAgYXNzZXJ0IFNvbWVDbGFzcy5jbGFzc19tZXRob2QgaXMgbW9jazIKKyAgICAuLi4gICAgIFNvbWVDbGFzcy5zdGF0aWNfbWV0aG9kKCdmb28nKQorICAgIC4uLiAgICAgU29tZUNsYXNzLmNsYXNzX21ldGhvZCgnYmFyJykKKyAgICAuLi4gICAgIHJldHVybiBtb2NrMSwgbW9jazIKKyAgICAuLi4KKyAgICA+Pj4gbW9jazEsIG1vY2syID0gdGVzdCgpCisgICAgPj4+IG1vY2sxLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nKQorICAgID4+PiBtb2NrMi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYmFyJykKKworCitOb3RlIHRoYXQgdGhlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgZnJvbSB0aGUgYm90dG9tIHVwd2FyZHMuIFRoaXMgaXMgdGhlCitzdGFuZGFyZCB3YXkgdGhhdCBQeXRob24gYXBwbGllcyBkZWNvcmF0b3JzLiBUaGUgb3JkZXIgb2YgdGhlIGNyZWF0ZWQgbW9ja3MKK3Bhc3NlZCBpbnRvIHlvdXIgdGVzdCBmdW5jdGlvbiBtYXRjaGVzIHRoaXMgb3JkZXIuCisKKworLi4gX3doZXJlLXRvLXBhdGNoOgorCitXaGVyZSB0byBwYXRjaAorLS0tLS0tLS0tLS0tLS0KKworYHBhdGNoYCB3b3JrcyBieSAodGVtcG9yYXJpbHkpIGNoYW5naW5nIHRoZSBvYmplY3QgdGhhdCBhICpuYW1lKiBwb2ludHMgdG8gd2l0aAorYW5vdGhlciBvbmUuIFRoZXJlIGNhbiBiZSBtYW55IG5hbWVzIHBvaW50aW5nIHRvIGFueSBpbmRpdmlkdWFsIG9iamVjdCwgc28KK2ZvciBwYXRjaGluZyB0byB3b3JrIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHlvdSBwYXRjaCB0aGUgbmFtZSB1c2VkIGJ5IHRoZSBzeXN0ZW0KK3VuZGVyIHRlc3QuCisKK1RoZSBiYXNpYyBwcmluY2lwbGUgaXMgdGhhdCB5b3UgcGF0Y2ggd2hlcmUgYW4gb2JqZWN0IGlzICpsb29rZWQgdXAqLCB3aGljaAoraXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIHBsYWNlIGFzIHdoZXJlIGl0IGlzIGRlZmluZWQuIEEgY291cGxlIG9mCitleGFtcGxlcyB3aWxsIGhlbHAgdG8gY2xhcmlmeSB0aGlzLgorCitJbWFnaW5lIHdlIGhhdmUgYSBwcm9qZWN0IHRoYXQgd2Ugd2FudCB0byB0ZXN0IHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6OgorCisgICAgYS5weQorICAgICAgICAtPiBEZWZpbmVzIFNvbWVDbGFzcworCisgICAgYi5weQorICAgICAgICAtPiBmcm9tIGEgaW1wb3J0IFNvbWVDbGFzcworICAgICAgICAtPiBzb21lX2Z1bmN0aW9uIGluc3RhbnRpYXRlcyBTb21lQ2xhc3MKKworTm93IHdlIHdhbnQgdG8gdGVzdCBgc29tZV9mdW5jdGlvbmAgYnV0IHdlIHdhbnQgdG8gbW9jayBvdXQgYFNvbWVDbGFzc2AgdXNpbmcKK2BwYXRjaGAuIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiB3ZSBpbXBvcnQgbW9kdWxlIGIsIHdoaWNoIHdlIHdpbGwgaGF2ZSB0bworZG8gdGhlbiBpdCBpbXBvcnRzIGBTb21lQ2xhc3NgIGZyb20gbW9kdWxlIGEuIElmIHdlIHVzZSBgcGF0Y2hgIHRvIG1vY2sgb3V0CitgYS5Tb21lQ2xhc3NgIHRoZW4gaXQgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiBvdXIgdGVzdDsgbW9kdWxlIGIgYWxyZWFkeSBoYXMgYQorcmVmZXJlbmNlIHRvIHRoZSAqcmVhbCogYFNvbWVDbGFzc2AgYW5kIGl0IGxvb2tzIGxpa2Ugb3VyIHBhdGNoaW5nIGhhZCBubworZWZmZWN0LgorCitUaGUga2V5IGlzIHRvIHBhdGNoIG91dCBgU29tZUNsYXNzYCB3aGVyZSBpdCBpcyB1c2VkIChvciB3aGVyZSBpdCBpcyBsb29rZWQgdXAKKykuIEluIHRoaXMgY2FzZSBgc29tZV9mdW5jdGlvbmAgd2lsbCBhY3R1YWxseSBsb29rIHVwIGBTb21lQ2xhc3NgIGluIG1vZHVsZSBiLAord2hlcmUgd2UgaGF2ZSBpbXBvcnRlZCBpdC4gVGhlIHBhdGNoaW5nIHNob3VsZCBsb29rIGxpa2U6OgorCisgICAgQHBhdGNoKCdiLlNvbWVDbGFzcycpCisKK0hvd2V2ZXIsIGNvbnNpZGVyIHRoZSBhbHRlcm5hdGl2ZSBzY2VuYXJpbyB3aGVyZSBpbnN0ZWFkIG9mIGBmcm9tIGEgaW1wb3J0CitTb21lQ2xhc3NgIG1vZHVsZSBiIGRvZXMgYGltcG9ydCBhYCBhbmQgYHNvbWVfZnVuY3Rpb25gIHVzZXMgYGEuU29tZUNsYXNzYC4gQm90aAorb2YgdGhlc2UgaW1wb3J0IGZvcm1zIGFyZSBjb21tb24uIEluIHRoaXMgY2FzZSB0aGUgY2xhc3Mgd2Ugd2FudCB0byBwYXRjaCBpcworYmVpbmcgbG9va2VkIHVwIG9uIHRoZSBhIG1vZHVsZSBhbmQgc28gd2UgaGF2ZSB0byBwYXRjaCBgYS5Tb21lQ2xhc3NgIGluc3RlYWQ6OgorCisgICAgQHBhdGNoKCdhLlNvbWVDbGFzcycpCisKKworUGF0Y2hpbmcgRGVzY3JpcHRvcnMgYW5kIFByb3h5IE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvdGggcGF0Y2hfIGFuZCBwYXRjaC5vYmplY3RfIGNvcnJlY3RseSBwYXRjaCBhbmQgcmVzdG9yZSBkZXNjcmlwdG9yczogY2xhc3MKK21ldGhvZHMsIHN0YXRpYyBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLiBZb3Ugc2hvdWxkIHBhdGNoIHRoZXNlIG9uIHRoZSAqY2xhc3MqCityYXRoZXIgdGhhbiBhbiBpbnN0YW5jZS4gVGhleSBhbHNvIHdvcmsgd2l0aCAqc29tZSogb2JqZWN0cwordGhhdCBwcm94eSBhdHRyaWJ1dGUgYWNjZXNzLCBsaWtlIHRoZSBgZGphbmdvIHNldHR0aW5ncyBvYmplY3QKKzxodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL3dlYmxvZy9hcmNoX2Q3XzIwMTBfMTJfMDQuc2h0bWwjZTExOTg+YF8uCisKKworTWFnaWNNb2NrIGFuZCBtYWdpYyBtZXRob2Qgc3VwcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBfbWFnaWMtbWV0aG9kczoKKworTW9ja2luZyBNYWdpYyBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmBNb2NrYCBzdXBwb3J0cyBtb2NraW5nIHRoZSBQeXRob24gcHJvdG9jb2wgbWV0aG9kcywgYWxzbyBrbm93biBhcworIm1hZ2ljIG1ldGhvZHMiLiBUaGlzIGFsbG93cyBtb2NrIG9iamVjdHMgdG8gcmVwbGFjZSBjb250YWluZXJzIG9yIG90aGVyCitvYmplY3RzIHRoYXQgaW1wbGVtZW50IFB5dGhvbiBwcm90b2NvbHMuCisKK0JlY2F1c2UgbWFnaWMgbWV0aG9kcyBhcmUgbG9va2VkIHVwIGRpZmZlcmVudGx5IGZyb20gbm9ybWFsIG1ldGhvZHMgWyNdXywgdGhpcworc3VwcG9ydCBoYXMgYmVlbiBzcGVjaWFsbHkgaW1wbGVtZW50ZWQuIFRoaXMgbWVhbnMgdGhhdCBvbmx5IHNwZWNpZmljIG1hZ2ljCittZXRob2RzIGFyZSBzdXBwb3J0ZWQuIFRoZSBzdXBwb3J0ZWQgbGlzdCBpbmNsdWRlcyAqYWxtb3N0KiBhbGwgb2YgdGhlbS4gSWYKK3RoZXJlIGFyZSBhbnkgbWlzc2luZyB0aGF0IHlvdSBuZWVkIHBsZWFzZSBsZXQgdXMga25vdy4KKworWW91IG1vY2sgbWFnaWMgbWV0aG9kcyBieSBzZXR0aW5nIHRoZSBtZXRob2QgeW91IGFyZSBpbnRlcmVzdGVkIGluIHRvIGEgZnVuY3Rpb24KK29yIGEgbW9jayBpbnN0YW5jZS4gSWYgeW91IGFyZSB1c2luZyBhIGZ1bmN0aW9uIHRoZW4gaXQgKm11c3QqIHRha2UgYGBzZWxmYGAgYXMKK3RoZSBmaXJzdCBhcmd1bWVudCBbI11fLgorCisgICA+Pj4gZGVmIF9fc3RyX18oc2VsZik6CisgICAuLi4gICAgIHJldHVybiAnZm9vYmxlJworICAgLi4uCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19zdHJfXyA9IF9fc3RyX18KKyAgID4+PiBzdHIobW9jaykKKyAgICdmb29ibGUnCisKKyAgID4+PiBtb2NrID0gTW9jaygpCisgICA+Pj4gbW9jay5fX3N0cl9fID0gTW9jaygpCisgICA+Pj4gbW9jay5fX3N0cl9fLnJldHVybl92YWx1ZSA9ICdmb29ibGUnCisgICA+Pj4gc3RyKG1vY2spCisgICAnZm9vYmxlJworCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19pdGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgID4+PiBsaXN0KG1vY2spCisgICBbXQorCitPbmUgdXNlIGNhc2UgZm9yIHRoaXMgaXMgZm9yIG1vY2tpbmcgb2JqZWN0cyB1c2VkIGFzIGNvbnRleHQgbWFuYWdlcnMgaW4gYQorYHdpdGhgIHN0YXRlbWVudDoKKworICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9fZW50ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPSdmb28nKQorICAgPj4+IG1vY2suX19leGl0X18gPSBNb2NrKHJldHVybl92YWx1ZT1GYWxzZSkKKyAgID4+PiB3aXRoIG1vY2sgYXMgbToKKyAgIC4uLiAgICAgYXNzZXJ0IG0gPT0gJ2ZvbycKKyAgIC4uLgorICAgPj4+IG1vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICA+Pj4gbW9jay5fX2V4aXRfXy5hc3NlcnRfY2FsbGVkX3dpdGgoTm9uZSwgTm9uZSwgTm9uZSkKKworQ2FsbHMgdG8gbWFnaWMgbWV0aG9kcyBkbyBub3QgYXBwZWFyIGluIDphdHRyOmB+TW9jay5tZXRob2RfY2FsbHNgLCBidXQgdGhleQorYXJlIHJlY29yZGVkIGluIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYC4KKworLi4gbm90ZTo6CisKKyAgIElmIHlvdSB1c2UgdGhlIGBzcGVjYCBrZXl3b3JkIGFyZ3VtZW50IHRvIGNyZWF0ZSBhIG1vY2sgdGhlbiBhdHRlbXB0aW5nIHRvCisgICBzZXQgYSBtYWdpYyBtZXRob2QgdGhhdCBpc24ndCBpbiB0aGUgc3BlYyB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKK1RoZSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZHMgaXM6CisKKyogYGBfX2hhc2hfX2BgLCBgYF9fc2l6ZW9mX19gYCwgYGBfX3JlcHJfX2BgIGFuZCBgYF9fc3RyX19gYAorKiBgYF9fZGlyX19gYCwgYGBfX2Zvcm1hdF9fYGAgYW5kIGBgX19zdWJjbGFzc2VzX19gYAorKiBgYF9fZmxvb3JfX2BgLCBgYF9fdHJ1bmNfX2BgIGFuZCBgYF9fY2VpbF9fYGAKKyogQ29tcGFyaXNvbnM6IGBgX19jbXBfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZ3RfX2BgLCBgYF9fbGVfX2BgLCBgYF9fZ2VfX2BgLAorICBgYF9fZXFfX2BgIGFuZCBgYF9fbmVfX2BgCisqIENvbnRhaW5lciBtZXRob2RzOiBgYF9fZ2V0aXRlbV9fYGAsIGBgX19zZXRpdGVtX19gYCwgYGBfX2RlbGl0ZW1fX2BgLAorICBgYF9fY29udGFpbnNfX2BgLCBgYF9fbGVuX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fZ2V0c2xpY2VfX2BgLAorICBgYF9fc2V0c2xpY2VfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgIGFuZCBgYF9fbWlzc2luZ19fYGAKKyogQ29udGV4dCBtYW5hZ2VyOiBgYF9fZW50ZXJfX2BgIGFuZCBgYF9fZXhpdF9fYGAKKyogVW5hcnkgbnVtZXJpYyBtZXRob2RzOiBgYF9fbmVnX19gYCwgYGBfX3Bvc19fYGAgYW5kIGBgX19pbnZlcnRfX2BgCisqIFRoZSBudW1lcmljIG1ldGhvZHMgKGluY2x1ZGluZyByaWdodCBoYW5kIGFuZCBpbi1wbGFjZSB2YXJpYW50cyk6CisgIGBgX19hZGRfX2BgLCBgYF9fc3ViX19gYCwgYGBfX211bF9fYGAsIGBgX19kaXZfX2BgLAorICBgYF9fZmxvb3JkaXZfX2BgLCBgYF9fbW9kX19gYCwgYGBfX2Rpdm1vZF9fYGAsIGBgX19sc2hpZnRfX2BgLAorICBgYF9fcnNoaWZ0X19gYCwgYGBfX2FuZF9fYGAsIGBgX194b3JfX2BgLCBgYF9fb3JfX2BgLCBhbmQgYGBfX3Bvd19fYGAKKyogTnVtZXJpYyBjb252ZXJzaW9uIG1ldGhvZHM6IGBgX19jb21wbGV4X19gYCwgYGBfX2ludF9fYGAsIGBgX19mbG9hdF9fYGAsCisgIGBgX19pbmRleF9fYGAgYW5kIGBgX19jb2VyY2VfX2BgCisqIERlc2NyaXB0b3IgbWV0aG9kczogYGBfX2dldF9fYGAsIGBgX19zZXRfX2BgIGFuZCBgYF9fZGVsZXRlX19gYAorKiBQaWNrbGluZzogYGBfX3JlZHVjZV9fYGAsIGBgX19yZWR1Y2VfZXhfX2BgLCBgYF9fZ2V0aW5pdGFyZ3NfX2BgLAorICBgYF9fZ2V0bmV3YXJnc19fYGAsIGBgX19nZXRzdGF0ZV9fYGAgYW5kIGBgX19zZXRzdGF0ZV9fYGAKKworCitUaGUgZm9sbG93aW5nIG1ldGhvZHMgZXhpc3QgYnV0IGFyZSAqbm90KiBzdXBwb3J0ZWQgYXMgdGhleSBhcmUgZWl0aGVyIGluIHVzZQorYnkgbW9jaywgY2FuJ3QgYmUgc2V0IGR5bmFtaWNhbGx5LCBvciBjYW4gY2F1c2UgcHJvYmxlbXM6CisKKyogYGBfX2dldGF0dHJfX2BgLCBgYF9fc2V0YXR0cl9fYGAsIGBgX19pbml0X19gYCBhbmQgYGBfX25ld19fYGAKKyogYGBfX3ByZXBhcmVfX2BgLCBgYF9faW5zdGFuY2VjaGVja19fYGAsIGBgX19zdWJjbGFzc2NoZWNrX19gYCwgYGBfX2RlbF9fYGAKKworCisKK01hZ2ljIE1vY2sKKy0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHR3byBgTWFnaWNNb2NrYCB2YXJpYW50czogYE1hZ2ljTW9ja2AgYW5kIGBOb25DYWxsYWJsZU1hZ2ljTW9ja2AuCisKKworLi4gY2xhc3M6OiBNYWdpY01vY2soKmFyZ3MsICoqa3cpCisKKyAgIGBgTWFnaWNNb2NrYGAgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YE1vY2tgIHdpdGggZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMKKyAgIG9mIG1vc3Qgb2YgdGhlIG1hZ2ljIG1ldGhvZHMuIFlvdSBjYW4gdXNlIGBgTWFnaWNNb2NrYGAgd2l0aG91dCBoYXZpbmcgdG8KKyAgIGNvbmZpZ3VyZSB0aGUgbWFnaWMgbWV0aG9kcyB5b3Vyc2VsZi4KKworICAgVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciA6Y2xhc3M6YE1vY2tgLgorCisgICBJZiB5b3UgdXNlIHRoZSBgc3BlY2Agb3IgYHNwZWNfc2V0YCBhcmd1bWVudHMgdGhlbiAqb25seSogbWFnaWMgbWV0aG9kcworICAgdGhhdCBleGlzdCBpbiB0aGUgc3BlYyB3aWxsIGJlIGNyZWF0ZWQuCisKKworLi4gY2xhc3M6OiBOb25DYWxsYWJsZU1hZ2ljTW9jaygqYXJncywgKiprdykKKworICAgIEEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1hZ2ljTW9ja2AuCisKKyAgICBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICAgOmNsYXNzOmBNYWdpY01vY2tgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYHJldHVybl92YWx1ZWAgYW5kCisgICAgYHNpZGVfZWZmZWN0YCB3aGljaCBoYXZlIG5vIG1lYW5pbmcgb24gYSBub24tY2FsbGFibGUgbW9jay4KKworVGhlIG1hZ2ljIG1ldGhvZHMgYXJlIHNldHVwIHdpdGggYE1hZ2ljTW9ja2Agb2JqZWN0cywgc28geW91IGNhbiBjb25maWd1cmUgdGhlbQorYW5kIHVzZSB0aGVtIGluIHRoZSB1c3VhbCB3YXk6CisKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBtb2NrWzNdID0gJ2Zpc2gnCisgICA+Pj4gbW9jay5fX3NldGl0ZW1fXy5hc3NlcnRfY2FsbGVkX3dpdGgoMywgJ2Zpc2gnKQorICAgPj4+IG1vY2suX19nZXRpdGVtX18ucmV0dXJuX3ZhbHVlID0gJ3Jlc3VsdCcKKyAgID4+PiBtb2NrWzJdCisgICAncmVzdWx0JworCitCeSBkZWZhdWx0IG1hbnkgb2YgdGhlIHByb3RvY29sIG1ldGhvZHMgYXJlIHJlcXVpcmVkIHRvIHJldHVybiBvYmplY3RzIG9mIGEKK3NwZWNpZmljIHR5cGUuIFRoZXNlIG1ldGhvZHMgYXJlIHByZWNvbmZpZ3VyZWQgd2l0aCBhIGRlZmF1bHQgcmV0dXJuIHZhbHVlLCBzbwordGhhdCB0aGV5IGNhbiBiZSB1c2VkIHdpdGhvdXQgeW91IGhhdmluZyB0byBkbyBhbnl0aGluZyBpZiB5b3UgYXJlbid0IGludGVyZXN0ZWQKK2luIHRoZSByZXR1cm4gdmFsdWUuIFlvdSBjYW4gc3RpbGwgKnNldCogdGhlIHJldHVybiB2YWx1ZSBtYW51YWxseSBpZiB5b3Ugd2FudAordG8gY2hhbmdlIHRoZSBkZWZhdWx0LgorCitNZXRob2RzIGFuZCB0aGVpciBkZWZhdWx0czoKKworKiBgYF9fbHRfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9fZ3RfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9fbGVfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9fZ2VfX2BgOiBOb3RJbXBsZW1lbnRlZAorKiBgYF9faW50X19gYCA6IDEKKyogYGBfX2NvbnRhaW5zX19gYCA6IEZhbHNlCisqIGBgX19sZW5fX2BgIDogMQorKiBgYF9faXRlcl9fYGAgOiBpdGVyKFtdKQorKiBgYF9fZXhpdF9fYGAgOiBGYWxzZQorKiBgYF9fY29tcGxleF9fYGAgOiAxagorKiBgYF9fZmxvYXRfX2BgIDogMS4wCisqIGBgX19ib29sX19gYCA6IFRydWUKKyogYGBfX2luZGV4X19gYCA6IDEKKyogYGBfX2hhc2hfX2BgIDogZGVmYXVsdCBoYXNoIGZvciB0aGUgbW9jaworKiBgYF9fc3RyX19gYCA6IGRlZmF1bHQgc3RyIGZvciB0aGUgbW9jaworKiBgYF9fc2l6ZW9mX19gYDogZGVmYXVsdCBzaXplb2YgZm9yIHRoZSBtb2NrCisKK0ZvciBleGFtcGxlOgorCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gaW50KG1vY2spCisgICAxCisgICA+Pj4gbGVuKG1vY2spCisgICAwCisgICA+Pj4gbGlzdChtb2NrKQorICAgW10KKyAgID4+PiBvYmplY3QoKSBpbiBtb2NrCisgICBGYWxzZQorCitUaGUgdHdvIGVxdWFsaXR5IG1ldGhvZCwgYF9fZXFfX2AgYW5kIGBfX25lX19gLCBhcmUgc3BlY2lhbC4KK1RoZXkgZG8gdGhlIGRlZmF1bHQgZXF1YWxpdHkgY29tcGFyaXNvbiBvbiBpZGVudGl0eSwgdXNpbmcgYSBzaWRlCitlZmZlY3QsIHVubGVzcyB5b3UgY2hhbmdlIHRoZWlyIHJldHVybiB2YWx1ZSB0byByZXR1cm4gc29tZXRoaW5nIGVsc2U6CisKKyAgID4+PiBNYWdpY01vY2soKSA9PSAzCisgICBGYWxzZQorICAgPj4+IE1hZ2ljTW9jaygpICE9IDMKKyAgIFRydWUKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBtb2NrLl9fZXFfXy5yZXR1cm5fdmFsdWUgPSBUcnVlCisgICA+Pj4gbW9jayA9PSAzCisgICBUcnVlCisKK1RoZSByZXR1cm4gdmFsdWUgb2YgYE1hZ2ljTW9jay5fX2l0ZXJfX2AgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgYW5kIGlzbid0CityZXF1aXJlZCB0byBiZSBhbiBpdGVyYXRvcjoKKworICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgPj4+IG1vY2suX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gWydhJywgJ2InLCAnYyddCisgICA+Pj4gbGlzdChtb2NrKQorICAgWydhJywgJ2InLCAnYyddCisgICA+Pj4gbGlzdChtb2NrKQorICAgWydhJywgJ2InLCAnYyddCisKK0lmIHRoZSByZXR1cm4gdmFsdWUgKmlzKiBhbiBpdGVyYXRvciwgdGhlbiBpdGVyYXRpbmcgb3ZlciBpdCBvbmNlIHdpbGwgY29uc3VtZQoraXQgYW5kIHN1YnNlcXVlbnQgaXRlcmF0aW9ucyB3aWxsIHJlc3VsdCBpbiBhbiBlbXB0eSBsaXN0OgorCisgICA+Pj4gbW9jay5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBpdGVyKFsnYScsICdiJywgJ2MnXSkKKyAgID4+PiBsaXN0KG1vY2spCisgICBbJ2EnLCAnYicsICdjJ10KKyAgID4+PiBsaXN0KG1vY2spCisgICBbXQorCitgYE1hZ2ljTW9ja2BgIGhhcyBhbGwgb2YgdGhlIHN1cHBvcnRlZCBtYWdpYyBtZXRob2RzIGNvbmZpZ3VyZWQgZXhjZXB0IGZvciBzb21lCitvZiB0aGUgb2JzY3VyZSBhbmQgb2Jzb2xldGUgb25lcy4gWW91IGNhbiBzdGlsbCBzZXQgdGhlc2UgdXAgaWYgeW91IHdhbnQuCisKK01hZ2ljIG1ldGhvZHMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ1dCBub3Qgc2V0dXAgYnkgZGVmYXVsdCBpbiBgYE1hZ2ljTW9ja2BgIGFyZToKKworKiBgYF9fc3ViY2xhc3Nlc19fYGAKKyogYGBfX2Rpcl9fYGAKKyogYGBfX2Zvcm1hdF9fYGAKKyogYGBfX2dldF9fYGAsIGBgX19zZXRfX2BgIGFuZCBgYF9fZGVsZXRlX19gYAorKiBgYF9fcmV2ZXJzZWRfX2BgIGFuZCBgYF9fbWlzc2luZ19fYGAKKyogYGBfX3JlZHVjZV9fYGAsIGBgX19yZWR1Y2VfZXhfX2BgLCBgYF9fZ2V0aW5pdGFyZ3NfX2BgLCBgYF9fZ2V0bmV3YXJnc19fYGAsCisgIGBgX19nZXRzdGF0ZV9fYGAgYW5kIGBgX19zZXRzdGF0ZV9fYGAKKyogYGBfX2dldGZvcm1hdF9fYGAgYW5kIGBgX19zZXRmb3JtYXRfX2BgCisKKworCisuLiBbI10gTWFnaWMgbWV0aG9kcyAqc2hvdWxkKiBiZSBsb29rZWQgdXAgb24gdGhlIGNsYXNzIHJhdGhlciB0aGFuIHRoZQorICAgaW5zdGFuY2UuIERpZmZlcmVudCB2ZXJzaW9ucyBvZiBQeXRob24gYXJlIGluY29uc2lzdGVudCBhYm91dCBhcHBseWluZyB0aGlzCisgICBydWxlLiBUaGUgc3VwcG9ydGVkIHByb3RvY29sIG1ldGhvZHMgc2hvdWxkIHdvcmsgd2l0aCBhbGwgc3VwcG9ydGVkIHZlcnNpb25zCisgICBvZiBQeXRob24uCisuLiBbI10gVGhlIGZ1bmN0aW9uIGlzIGJhc2ljYWxseSBob29rZWQgdXAgdG8gdGhlIGNsYXNzLCBidXQgZWFjaCBgYE1vY2tgYAorICAgaW5zdGFuY2UgaXMga2VwdCBpc29sYXRlZCBmcm9tIHRoZSBvdGhlcnMuCisKKworSGVscGVycworPT09PT09PQorCitzZW50aW5lbAorLS0tLS0tLS0KKworLi4gZGF0YTo6IHNlbnRpbmVsCisKKyAgICBUaGUgYGBzZW50aW5lbGBgIG9iamVjdCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IG9mIHByb3ZpZGluZyB1bmlxdWUKKyAgICBvYmplY3RzIGZvciB5b3VyIHRlc3RzLgorCisgICAgQXR0cmlidXRlcyBhcmUgY3JlYXRlZCBvbiBkZW1hbmQgd2hlbiB5b3UgYWNjZXNzIHRoZW0gYnkgbmFtZS4gQWNjZXNzaW5nCisgICAgdGhlIHNhbWUgYXR0cmlidXRlIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSBvYmplY3QuIFRoZSBvYmplY3RzCisgICAgcmV0dXJuZWQgaGF2ZSBhIHNlbnNpYmxlIHJlcHIgc28gdGhhdCB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMgYXJlIHJlYWRhYmxlLgorCitTb21ldGltZXMgd2hlbiB0ZXN0aW5nIHlvdSBuZWVkIHRvIHRlc3QgdGhhdCBhIHNwZWNpZmljIG9iamVjdCBpcyBwYXNzZWQgYXMgYW4KK2FyZ3VtZW50IHRvIGFub3RoZXIgbWV0aG9kLCBvciByZXR1cm5lZC4gSXQgY2FuIGJlIGNvbW1vbiB0byBjcmVhdGUgbmFtZWQKK3NlbnRpbmVsIG9iamVjdHMgdG8gdGVzdCB0aGlzLiBgc2VudGluZWxgIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgb2YKK2NyZWF0aW5nIGFuZCB0ZXN0aW5nIHRoZSBpZGVudGl0eSBvZiBvYmplY3RzIGxpa2UgdGhpcy4KKworSW4gdGhpcyBleGFtcGxlIHdlIG1vbmtleSBwYXRjaCBgbWV0aG9kYCB0byByZXR1cm4gYHNlbnRpbmVsLnNvbWVfb2JqZWN0YDoKKworICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gcmVhbC5tZXRob2QgPSBNb2NrKG5hbWU9Im1ldGhvZCIpCisgICAgPj4+IHJlYWwubWV0aG9kLnJldHVybl92YWx1ZSA9IHNlbnRpbmVsLnNvbWVfb2JqZWN0CisgICAgPj4+IHJlc3VsdCA9IHJlYWwubWV0aG9kKCkKKyAgICA+Pj4gYXNzZXJ0IHJlc3VsdCBpcyBzZW50aW5lbC5zb21lX29iamVjdAorICAgID4+PiBzZW50aW5lbC5zb21lX29iamVjdAorICAgIHNlbnRpbmVsLnNvbWVfb2JqZWN0CisKKworREVGQVVMVAorLS0tLS0tLQorCisKKy4uIGRhdGE6OiBERUZBVUxUCisKKyAgICBUaGUgYERFRkFVTFRgIG9iamVjdCBpcyBhIHByZS1jcmVhdGVkIHNlbnRpbmVsIChhY3R1YWxseQorICAgIGBzZW50aW5lbC5ERUZBVUxUYCkuIEl0IGNhbiBiZSB1c2VkIGJ5IDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAKKyAgICBmdW5jdGlvbnMgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbm9ybWFsIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgdXNlZC4KKworCisKK2NhbGwKKy0tLS0KKworLi4gZnVuY3Rpb246OiBjYWxsKCphcmdzLCAqKmt3YXJncykKKworICAgIGBjYWxsYCBpcyBhIGhlbHBlciBvYmplY3QgZm9yIG1ha2luZyBzaW1wbGVyIGFzc2VydGlvbnMsIGZvciBjb21wYXJpbmcgd2l0aAorICAgIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NgLCA6YXR0cjpgfk1vY2suY2FsbF9hcmdzX2xpc3RgLAorICAgIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCBhbmQgOmF0dHI6YH5Nb2NrLm1ldGhvZF9jYWxsc2AuIGBjYWxsYCBjYW4gYWxzbyBiZQorICAgIHVzZWQgd2l0aCA6bWV0aDpgfk1vY2suYXNzZXJ0X2hhc19jYWxsc2AuCisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgID4+PiBtKDEsIDIsIGE9J2ZvbycsIGI9J2JhcicpCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgPj4+IG0uY2FsbF9hcmdzX2xpc3QgPT0gW2NhbGwoMSwgMiwgYT0nZm9vJywgYj0nYmFyJyksIGNhbGwoKV0KKyAgICAgICAgVHJ1ZQorCisuLiBtZXRob2Q6OiBjYWxsLmNhbGxfbGlzdCgpCisKKyAgICBGb3IgYSBjYWxsIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgbXVsdGlwbGUgY2FsbHMsIGBjYWxsX2xpc3RgCisgICAgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnRlcm1lZGlhdGUgY2FsbHMgYXMgd2VsbCBhcyB0aGUKKyAgICBmaW5hbCBjYWxsLgorCitgY2FsbF9saXN0YCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBtYWtpbmcgYXNzZXJ0aW9ucyBvbiAiY2hhaW5lZCBjYWxscyIuIEEKK2NoYWluZWQgY2FsbCBpcyBtdWx0aXBsZSBjYWxscyBvbiBhIHNpbmdsZSBsaW5lIG9mIGNvZGUuIFRoaXMgcmVzdWx0cyBpbgorbXVsdGlwbGUgZW50cmllcyBpbiA6YXR0cjpgfk1vY2subW9ja19jYWxsc2Agb24gYSBtb2NrLiBNYW51YWxseSBjb25zdHJ1Y3RpbmcKK3RoZSBzZXF1ZW5jZSBvZiBjYWxscyBjYW4gYmUgdGVkaW91cy4KKworOm1ldGg6YH5jYWxsLmNhbGxfbGlzdGAgY2FuIGNvbnN0cnVjdCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMgZnJvbSB0aGUgc2FtZQorY2hhaW5lZCBjYWxsOgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtKDEpLm1ldGhvZChhcmc9J2ZvbycpLm90aGVyKCdiYXInKSgyLjApCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrKCkubWV0aG9kKCkub3RoZXIoKSgpJyBpZD0nLi4uJz4KKyAgICA+Pj4ga2FsbCA9IGNhbGwoMSkubWV0aG9kKGFyZz0nZm9vJykub3RoZXIoJ2JhcicpKDIuMCkKKyAgICA+Pj4ga2FsbC5jYWxsX2xpc3QoKQorICAgIFtjYWxsKDEpLAorICAgICBjYWxsKCkubWV0aG9kKGFyZz0nZm9vJyksCisgICAgIGNhbGwoKS5tZXRob2QoKS5vdGhlcignYmFyJyksCisgICAgIGNhbGwoKS5tZXRob2QoKS5vdGhlcigpKDIuMCldCisgICAgPj4+IG0ubW9ja19jYWxscyA9PSBrYWxsLmNhbGxfbGlzdCgpCisgICAgVHJ1ZQorCisuLiBfY2FsbHMtYXMtdHVwbGVzOgorCitBIGBjYWxsYCBvYmplY3QgaXMgZWl0aGVyIGEgdHVwbGUgb2YgKHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKSBvcgorKG5hbWUsIHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcyBjb25zdHJ1Y3RlZC4gV2hlbgoreW91IGNvbnN0cnVjdCB0aGVtIHlvdXJzZWxmIHRoaXMgaXNuJ3QgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLCBidXQgdGhlIGBjYWxsYAorb2JqZWN0cyB0aGF0IGFyZSBpbiB0aGUgOmF0dHI6YE1vY2suY2FsbF9hcmdzYCwgOmF0dHI6YE1vY2suY2FsbF9hcmdzX2xpc3RgIGFuZAorOmF0dHI6YE1vY2subW9ja19jYWxsc2AgYXR0cmlidXRlcyBjYW4gYmUgaW50cm9zcGVjdGVkIHRvIGdldCBhdCB0aGUgaW5kaXZpZHVhbAorYXJndW1lbnRzIHRoZXkgY29udGFpbi4KKworVGhlIGBjYWxsYCBvYmplY3RzIGluIDphdHRyOmBNb2NrLmNhbGxfYXJnc2AgYW5kIDphdHRyOmBNb2NrLmNhbGxfYXJnc19saXN0YAorYXJlIHR3by10dXBsZXMgb2YgKHBvc2l0aW9uYWwgYXJncywga2V5d29yZCBhcmdzKSB3aGVyZWFzIHRoZSBgY2FsbGAgb2JqZWN0cworaW4gOmF0dHI6YE1vY2subW9ja19jYWxsc2AsIGFsb25nIHdpdGggb25lcyB5b3UgY29uc3RydWN0IHlvdXJzZWxmLCBhcmUKK3RocmVlLXR1cGxlcyBvZiAobmFtZSwgcG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpLgorCitZb3UgY2FuIHVzZSB0aGVpciAidHVwbGVuZXNzIiB0byBwdWxsIG91dCB0aGUgaW5kaXZpZHVhbCBhcmd1bWVudHMgZm9yIG1vcmUKK2NvbXBsZXggaW50cm9zcGVjdGlvbiBhbmQgYXNzZXJ0aW9ucy4gVGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZSBhIHR1cGxlCisoYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgYXJlIG5vIHBvc2l0aW9uYWwgYXJndW1lbnRzKSBhbmQgdGhlIGtleXdvcmQKK2FyZ3VtZW50cyBhcmUgYSBkaWN0aW9uYXJ5OgorCisgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG0oMSwgMiwgMywgYXJnPSdvbmUnLCBhcmcyPSd0d28nKQorICAgID4+PiBrYWxsID0gbS5jYWxsX2FyZ3MKKyAgICA+Pj4gYXJncywga3dhcmdzID0ga2FsbAorICAgID4+PiBhcmdzCisgICAgKDEsIDIsIDMpCisgICAgPj4+IGt3YXJncworICAgIHsnYXJnMic6ICd0d28nLCAnYXJnJzogJ29uZSd9CisgICAgPj4+IGFyZ3MgaXMga2FsbFswXQorICAgIFRydWUKKyAgICA+Pj4ga3dhcmdzIGlzIGthbGxbMV0KKyAgICBUcnVlCisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0uZm9vKDQsIDUsIDYsIGFyZz0ndHdvJywgYXJnMj0ndGhyZWUnKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IGthbGwgPSBtLm1vY2tfY2FsbHNbMF0KKyAgICA+Pj4gbmFtZSwgYXJncywga3dhcmdzID0ga2FsbAorICAgID4+PiBuYW1lCisgICAgJ2ZvbycKKyAgICA+Pj4gYXJncworICAgICg0LCA1LCA2KQorICAgID4+PiBrd2FyZ3MKKyAgICB7J2FyZzInOiAndGhyZWUnLCAnYXJnJzogJ3R3byd9CisgICAgPj4+IG5hbWUgaXMgbS5tb2NrX2NhbGxzWzBdWzBdCisgICAgVHJ1ZQorCisKK2NyZWF0ZV9hdXRvc3BlYworLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlLCBpbnN0YW5jZT1GYWxzZSwgKiprd2FyZ3MpCisKKyAgICBDcmVhdGUgYSBtb2NrIG9iamVjdCB1c2luZyBhbm90aGVyIG9iamVjdCBhcyBhIHNwZWMuIEF0dHJpYnV0ZXMgb24gdGhlCisgICAgbW9jayB3aWxsIHVzZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb24gdGhlIGBzcGVjYCBvYmplY3QgYXMgdGhlaXIKKyAgICBzcGVjLgorCisgICAgRnVuY3Rpb25zIG9yIG1ldGhvZHMgYmVpbmcgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCB0bworICAgIGVuc3VyZSB0aGF0IHRoZXkgYXJlIGNhbGxlZCB3aXRoIHRoZSBjb3JyZWN0IHNpZ25hdHVyZS4KKworICAgIElmIGBzcGVjX3NldGAgaXMgYFRydWVgIHRoZW4gYXR0ZW1wdGluZyB0byBzZXQgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0CisgICAgb24gdGhlIHNwZWMgb2JqZWN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgIElmIGEgY2xhc3MgaXMgdXNlZCBhcyBhIHNwZWMgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrICh0aGUKKyAgICBpbnN0YW5jZSBvZiB0aGUgY2xhc3MpIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjLiBZb3UgY2FuIHVzZSBhIGNsYXNzIGFzIHRoZQorICAgIHNwZWMgZm9yIGFuIGluc3RhbmNlIG9iamVjdCBieSBwYXNzaW5nIGBpbnN0YW5jZT1UcnVlYC4gVGhlIHJldHVybmVkIG1vY2sKKyAgICB3aWxsIG9ubHkgYmUgY2FsbGFibGUgaWYgaW5zdGFuY2VzIG9mIHRoZSBtb2NrIGFyZSBjYWxsYWJsZS4KKworICAgIGBjcmVhdGVfYXV0b3NwZWNgIGFsc28gdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZCB0bworICAgIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgY3JlYXRlZCBtb2NrLgorCitTZWUgOnJlZjpgYXV0by1zcGVjY2luZ2AgZm9yIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgYXV0by1zcGVjY2luZyB3aXRoCitgY3JlYXRlX2F1dG9zcGVjYCBhbmQgdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQgdG8gOmZ1bmM6YHBhdGNoYC4KKworCitBTlkKKy0tLQorCisuLiBkYXRhOjogQU5ZCisKK1NvbWV0aW1lcyB5b3UgbWF5IG5lZWQgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0ICpzb21lKiBvZiB0aGUgYXJndW1lbnRzIGluIGEKK2NhbGwgdG8gbW9jaywgYnV0IGVpdGhlciBub3QgY2FyZSBhYm91dCBzb21lIG9mIHRoZSBhcmd1bWVudHMgb3Igd2FudCB0byBwdWxsCit0aGVtIGluZGl2aWR1YWxseSBvdXQgb2YgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc2AgYW5kIG1ha2UgbW9yZSBjb21wbGV4Cithc3NlcnRpb25zIG9uIHRoZW0uCisKK1RvIGlnbm9yZSBjZXJ0YWluIGFyZ3VtZW50cyB5b3UgY2FuIHBhc3MgaW4gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgdG8KKypldmVyeXRoaW5nKi4gQ2FsbHMgdG8gOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfd2l0aGAgYW5kCis6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIHdpbGwgdGhlbiBzdWNjZWVkIG5vIG1hdHRlciB3aGF0IHdhcworcGFzc2VkIGluLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKCdmb28nLCBiYXI9b2JqZWN0KCkpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsIGJhcj1BTlkpCisKK2BBTllgIGNhbiBhbHNvIGJlIHVzZWQgaW4gY29tcGFyaXNvbnMgd2l0aCBjYWxsIGxpc3RzIGxpa2UKKzphdHRyOmB+TW9jay5tb2NrX2NhbGxzYDoKKworICAgID4+PiBtID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtKDEpCisgICAgPj4+IG0oMSwgMikKKyAgICA+Pj4gbShvYmplY3QoKSkKKyAgICA+Pj4gbS5tb2NrX2NhbGxzID09IFtjYWxsKDEpLCBjYWxsKDEsIDIpLCBBTlldCisgICAgVHJ1ZQorCisKKworRklMVEVSX0RJUgorLS0tLS0tLS0tLQorCisuLiBkYXRhOjogRklMVEVSX0RJUgorCitgRklMVEVSX0RJUmAgaXMgYSBtb2R1bGUgbGV2ZWwgdmFyaWFibGUgdGhhdCBjb250cm9scyB0aGUgd2F5IG1vY2sgb2JqZWN0cworcmVzcG9uZCB0byBgZGlyYCAob25seSBmb3IgUHl0aG9uIDIuNiBvciBtb3JlIHJlY2VudCkuIFRoZSBkZWZhdWx0IGlzIGBUcnVlYCwKK3doaWNoIHVzZXMgdGhlIGZpbHRlcmluZyBkZXNjcmliZWQgYmVsb3csIHRvIG9ubHkgc2hvdyB1c2VmdWwgbWVtYmVycy4gSWYgeW91CitkaXNsaWtlIHRoaXMgZmlsdGVyaW5nLCBvciBuZWVkIHRvIHN3aXRjaCBpdCBvZmYgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMsIHRoZW4KK3NldCBgbW9jay5GSUxURVJfRElSID0gRmFsc2VgLgorCitXaXRoIGZpbHRlcmluZyBvbiwgYGRpcihzb21lX21vY2spYCBzaG93cyBvbmx5IHVzZWZ1bCBhdHRyaWJ1dGVzIGFuZCB3aWxsCitpbmNsdWRlIGFueSBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMgdGhhdCB3b3VsZG4ndCBub3JtYWxseSBiZSBzaG93bi4KK0lmIHRoZSBtb2NrIHdhcyBjcmVhdGVkIHdpdGggYSBgc3BlY2AgKG9yIGBhdXRvc3BlY2Agb2YgY291cnNlKSB0aGVuIGFsbCB0aGUKK2F0dHJpYnV0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgYXJlIHNob3duLCBldmVuIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIGFjY2Vzc2VkCit5ZXQ6CisKKyAgICA+Pj4gZGlyKE1vY2soKSkKKyAgICBbJ2Fzc2VydF9hbnlfY2FsbCcsCisgICAgICdhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCcsCisgICAgICdhc3NlcnRfY2FsbGVkX3dpdGgnLAorICAgICAnYXNzZXJ0X2hhc19jYWxscycsCisgICAgICdhdHRhY2hfbW9jaycsCisgICAgIC4uLgorICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBkaXIoTW9jayhzcGVjPXJlcXVlc3QpKQorICAgIFsnQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyJywKKyAgICAgJ0Fic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXInLAorICAgICAnQWJzdHJhY3RIVFRQSGFuZGxlcicsCisgICAgICdCYXNlSGFuZGxlcicsCisgICAgIC4uLgorCitNYW55IG9mIHRoZSBub3QtdmVyeS11c2VmdWwgKHByaXZhdGUgdG8gYE1vY2tgIHJhdGhlciB0aGFuIHRoZSB0aGluZyBiZWluZworbW9ja2VkKSB1bmRlcnNjb3JlIGFuZCBkb3VibGUgdW5kZXJzY29yZSBwcmVmaXhlZCBhdHRyaWJ1dGVzIGhhdmUgYmVlbgorZmlsdGVyZWQgZnJvbSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgYGRpcmAgb24gYSBgTW9ja2AuIElmIHlvdSBkaXNsaWtlIHRoaXMKK2JlaGF2aW91ciB5b3UgY2FuIHN3aXRjaCBpdCBvZmYgYnkgc2V0dGluZyB0aGUgbW9kdWxlIGxldmVsIHN3aXRjaAorYEZJTFRFUl9ESVJgOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKKyAgICA+Pj4gbW9jay5GSUxURVJfRElSID0gRmFsc2UKKyAgICA+Pj4gZGlyKG1vY2suTW9jaygpKQorICAgIFsnX05vbkNhbGxhYmxlTW9ja19fZ2V0X3JldHVybl92YWx1ZScsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19nZXRfc2lkZV9lZmZlY3QnLAorICAgICAnX05vbkNhbGxhYmxlTW9ja19fcmV0dXJuX3ZhbHVlX2RvYycsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19zZXRfcmV0dXJuX3ZhbHVlJywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX3NldF9zaWRlX2VmZmVjdCcsCisgICAgICdfX2NhbGxfXycsCisgICAgICdfX2NsYXNzX18nLAorICAgICAuLi4KKworQWx0ZXJuYXRpdmVseSB5b3UgY2FuIGp1c3QgdXNlIGB2YXJzKG15X21vY2spYCAoaW5zdGFuY2UgbWVtYmVycykgYW5kCitgZGlyKHR5cGUobXlfbW9jaykpYCAodHlwZSBtZW1iZXJzKSB0byBieXBhc3MgdGhlIGZpbHRlcmluZyBpcnJlc3BlY3RpdmUgb2YKK2Btb2NrLkZJTFRFUl9ESVJgLgorCisKK21vY2tfb3BlbgorLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogbW9ja19vcGVuKG1vY2s9Tm9uZSwgcmVhZF9kYXRhPU5vbmUpCisKKyAgICBBIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgYSBtb2NrIHRvIHJlcGxhY2UgdGhlIHVzZSBvZiBgb3BlbmAuIEl0IHdvcmtzCisgICAgZm9yIGBvcGVuYCBjYWxsZWQgZGlyZWN0bHkgb3IgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKworICAgIFRoZSBgbW9ja2AgYXJndW1lbnQgaXMgdGhlIG1vY2sgb2JqZWN0IHRvIGNvbmZpZ3VyZS4gSWYgYE5vbmVgICh0aGUKKyAgICBkZWZhdWx0KSB0aGVuIGEgYE1hZ2ljTW9ja2Agd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UsIHdpdGggdGhlIEFQSSBsaW1pdGVkCisgICAgdG8gbWV0aG9kcyBvciBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBvbiBzdGFuZGFyZCBmaWxlIGhhbmRsZXMuCisKKyAgICBgcmVhZF9kYXRhYCBpcyBhIHN0cmluZyBmb3IgdGhlIGByZWFkYCBtZXRob2Qgb2YgdGhlIGZpbGUgaGFuZGxlIHRvIHJldHVybi4KKyAgICBUaGlzIGlzIGFuIGVtcHR5IHN0cmluZyBieSBkZWZhdWx0LgorCitVc2luZyBgb3BlbmAgYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgYSBncmVhdCB3YXkgdG8gZW5zdXJlIHlvdXIgZmlsZSBoYW5kbGVzCithcmUgY2xvc2VkIHByb3Blcmx5IGFuZCBpcyBiZWNvbWluZyBjb21tb246OgorCisgICAgd2l0aCBvcGVuKCcvc29tZS9wYXRoJywgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKCdzb21ldGhpbmcnKQorCitUaGUgaXNzdWUgaXMgdGhhdCBldmVuIGlmIHlvdSBtb2NrIG91dCB0aGUgY2FsbCB0byBgb3BlbmAgaXQgaXMgdGhlCisqcmV0dXJuZWQgb2JqZWN0KiB0aGF0IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgKGFuZCBoYXMgYF9fZW50ZXJfX2AgYW5kCitgX19leGl0X19gIGNhbGxlZCkuCisKK01vY2tpbmcgY29udGV4dCBtYW5hZ2VycyB3aXRoIGEgOmNsYXNzOmBNYWdpY01vY2tgIGlzIGNvbW1vbiBlbm91Z2ggYW5kIGZpZGRseQorZW5vdWdoIHRoYXQgYSBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsLgorCisgICAgPj4+IG0gPSBtb2NrX29wZW4oKQorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSwgY3JlYXRlPVRydWUpOgorICAgIC4uLiAgICAgd2l0aCBvcGVuKCdmb28nLCAndycpIGFzIGg6CisgICAgLi4uICAgICAgICAgaC53cml0ZSgnc29tZSBzdHVmZicpCisgICAgLi4uCisgICAgPj4+IG0ubW9ja19jYWxscworICAgIFtjYWxsKCdmb28nLCAndycpLAorICAgICBjYWxsKCkuX19lbnRlcl9fKCksCisgICAgIGNhbGwoKS53cml0ZSgnc29tZSBzdHVmZicpLAorICAgICBjYWxsKCkuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSldCisgICAgPj4+IG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsICd3JykKKyAgICA+Pj4gaGFuZGxlID0gbSgpCisgICAgPj4+IGhhbmRsZS53cml0ZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnc29tZSBzdHVmZicpCisKK0FuZCBmb3IgcmVhZGluZyBmaWxlczoKKworICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJyksIGNyZWF0ZT1UcnVlKSBhcyBtOgorICAgIC4uLiAgICAgd2l0aCBvcGVuKCdmb28nKSBhcyBoOgorICAgIC4uLiAgICAgICAgIHJlc3VsdCA9IGgucmVhZCgpCisgICAgLi4uCisgICAgPj4+IG0uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisgICAgPj4+IGFzc2VydCByZXN1bHQgPT0gJ2JpYmJsZScKKworCisuLiBfYXV0by1zcGVjY2luZzoKKworQXV0b3NwZWNjaW5nCistLS0tLS0tLS0tLS0KKworQXV0b3NwZWNjaW5nIGlzIGJhc2VkIG9uIHRoZSBleGlzdGluZyBgc3BlY2AgZmVhdHVyZSBvZiBtb2NrLiBJdCBsaW1pdHMgdGhlCithcGkgb2YgbW9ja3MgdG8gdGhlIGFwaSBvZiBhbiBvcmlnaW5hbCBvYmplY3QgKHRoZSBzcGVjKSwgYnV0IGl0IGlzIHJlY3Vyc2l2ZQorKGltcGxlbWVudGVkIGxhemlseSkgc28gdGhhdCBhdHRyaWJ1dGVzIG9mIG1vY2tzIG9ubHkgaGF2ZSB0aGUgc2FtZSBhcGkgYXMKK3RoZSBhdHRyaWJ1dGVzIG9mIHRoZSBzcGVjLiBJbiBhZGRpdGlvbiBtb2NrZWQgZnVuY3Rpb25zIC8gbWV0aG9kcyBoYXZlIHRoZQorc2FtZSBjYWxsIHNpZ25hdHVyZSBhcyB0aGUgb3JpZ2luYWwgc28gdGhleSByYWlzZSBhIGBUeXBlRXJyb3JgIGlmIHRoZXkgYXJlCitjYWxsZWQgaW5jb3JyZWN0bHkuCisKK0JlZm9yZSBJIGV4cGxhaW4gaG93IGF1dG8tc3BlY2Npbmcgd29ya3MsIGhlcmUncyB3aHkgaXQgaXMgbmVlZGVkLgorCitgTW9ja2AgaXMgYSB2ZXJ5IHBvd2VyZnVsIGFuZCBmbGV4aWJsZSBvYmplY3QsIGJ1dCBpdCBzdWZmZXJzIGZyb20gdHdvIGZsYXdzCit3aGVuIHVzZWQgdG8gbW9jayBvdXQgb2JqZWN0cyBmcm9tIGEgc3lzdGVtIHVuZGVyIHRlc3QuIE9uZSBvZiB0aGVzZSBmbGF3cyBpcworc3BlY2lmaWMgdG8gdGhlIGBNb2NrYCBhcGkgYW5kIHRoZSBvdGhlciBpcyBhIG1vcmUgZ2VuZXJhbCBwcm9ibGVtIHdpdGggdXNpbmcKK21vY2sgb2JqZWN0cy4KKworRmlyc3QgdGhlIHByb2JsZW0gc3BlY2lmaWMgdG8gYE1vY2tgLiBgTW9ja2AgaGFzIHR3byBhc3NlcnQgbWV0aG9kcyB0aGF0IGFyZQorZXh0cmVtZWx5IGhhbmR5OiA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAuCisKKyAgICA+Pj4gbW9jayA9IE1vY2sobmFtZT0nVGhpbmcnLCByZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgPj4+IG1vY2soMSwgMiwgMykKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtb2NrJyB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKK0JlY2F1c2UgbW9ja3MgYXV0by1jcmVhdGUgYXR0cmlidXRlcyBvbiBkZW1hbmQsIGFuZCBhbGxvdyB5b3UgdG8gY2FsbCB0aGVtCit3aXRoIGFyYml0cmFyeSBhcmd1bWVudHMsIGlmIHlvdSBtaXNzcGVsbCBvbmUgb2YgdGhlc2UgYXNzZXJ0IG1ldGhvZHMgdGhlbgoreW91ciBhc3NlcnRpb24gaXMgZ29uZToKKworLi4gY29kZS1ibG9jazo6IHB5Y29uCisKKyAgICA+Pj4gbW9jayA9IE1vY2sobmFtZT0nVGhpbmcnLCByZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrLmFzc3JldF9jYWxsZWRfb25jZV93aXRoKDQsIDUsIDYpCisKK1lvdXIgdGVzdHMgY2FuIHBhc3Mgc2lsZW50bHkgYW5kIGluY29ycmVjdGx5IGJlY2F1c2Ugb2YgdGhlIHR5cG8uCisKK1RoZSBzZWNvbmQgaXNzdWUgaXMgbW9yZSBnZW5lcmFsIHRvIG1vY2tpbmcuIElmIHlvdSByZWZhY3RvciBzb21lIG9mIHlvdXIKK2NvZGUsIHJlbmFtZSBtZW1iZXJzIGFuZCBzbyBvbiwgYW55IHRlc3RzIGZvciBjb2RlIHRoYXQgaXMgc3RpbGwgdXNpbmcgdGhlCisqb2xkIGFwaSogYnV0IHVzZXMgbW9ja3MgaW5zdGVhZCBvZiB0aGUgcmVhbCBvYmplY3RzIHdpbGwgc3RpbGwgcGFzcy4gVGhpcworbWVhbnMgeW91ciB0ZXN0cyBjYW4gYWxsIHBhc3MgZXZlbiB0aG91Z2ggeW91ciBjb2RlIGlzIGJyb2tlbi4KKworTm90ZSB0aGF0IHRoaXMgaXMgYW5vdGhlciByZWFzb24gd2h5IHlvdSBuZWVkIGludGVncmF0aW9uIHRlc3RzIGFzIHdlbGwgYXMKK3VuaXQgdGVzdHMuIFRlc3RpbmcgZXZlcnl0aGluZyBpbiBpc29sYXRpb24gaXMgYWxsIGZpbmUgYW5kIGRhbmR5LCBidXQgaWYgeW91Citkb24ndCB0ZXN0IGhvdyB5b3VyIHVuaXRzIGFyZSAid2lyZWQgdG9nZXRoZXIiIHRoZXJlIGlzIHN0aWxsIGxvdHMgb2Ygcm9vbQorZm9yIGJ1Z3MgdGhhdCB0ZXN0cyBtaWdodCBoYXZlIGNhdWdodC4KKworYG1vY2tgIGFscmVhZHkgcHJvdmlkZXMgYSBmZWF0dXJlIHRvIGhlbHAgd2l0aCB0aGlzLCBjYWxsZWQgc3BlY2NpbmcuIElmIHlvdQordXNlIGEgY2xhc3Mgb3IgaW5zdGFuY2UgYXMgdGhlIGBzcGVjYCBmb3IgYSBtb2NrIHRoZW4geW91IGNhbiBvbmx5IGFjY2VzcworYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aGF0IGV4aXN0IG9uIHRoZSByZWFsIGNsYXNzOgorCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9cmVxdWVzdC5SZXF1ZXN0KQorICAgID4+PiBtb2NrLmFzc3JldF9jYWxsZWRfd2l0aAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2Fzc3JldF9jYWxsZWRfd2l0aCcKKworVGhlIHNwZWMgb25seSBhcHBsaWVzIHRvIHRoZSBtb2NrIGl0c2VsZiwgc28gd2Ugc3RpbGwgaGF2ZSB0aGUgc2FtZSBpc3N1ZQord2l0aCBhbnkgbWV0aG9kcyBvbiB0aGUgbW9jazoKKworLi4gY29kZS1ibG9jazo6IHB5Y29uCisKKyAgICA+Pj4gbW9jay5oYXNfZGF0YSgpCisgICAgPG1vY2suTW9jayBvYmplY3QgYXQgMHguLi4+CisgICAgPj4+IG1vY2suaGFzX2RhdGEuYXNzcmV0X2NhbGxlZF93aXRoKCkKKworQXV0by1zcGVjY2luZyBzb2x2ZXMgdGhpcyBwcm9ibGVtLiBZb3UgY2FuIGVpdGhlciBwYXNzIGBhdXRvc3BlYz1UcnVlYCB0bworYHBhdGNoYCAvIGBwYXRjaC5vYmplY3RgIG9yIHVzZSB0aGUgYGNyZWF0ZV9hdXRvc3BlY2AgZnVuY3Rpb24gdG8gY3JlYXRlIGEKK21vY2sgd2l0aCBhIHNwZWMuIElmIHlvdSB1c2UgdGhlIGBhdXRvc3BlYz1UcnVlYCBhcmd1bWVudCB0byBgcGF0Y2hgIHRoZW4gdGhlCitvYmplY3QgdGhhdCBpcyBiZWluZyByZXBsYWNlZCB3aWxsIGJlIHVzZWQgYXMgdGhlIHNwZWMgb2JqZWN0LiBCZWNhdXNlIHRoZQorc3BlY2NpbmcgaXMgZG9uZSAibGF6aWx5IiAodGhlIHNwZWMgaXMgY3JlYXRlZCBhcyBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFyZQorYWNjZXNzZWQpIHlvdSBjYW4gdXNlIGl0IHdpdGggdmVyeSBjb21wbGV4IG9yIGRlZXBseSBuZXN0ZWQgb2JqZWN0cyAobGlrZQorbW9kdWxlcyB0aGF0IGltcG9ydCBtb2R1bGVzIHRoYXQgaW1wb3J0IG1vZHVsZXMpIHdpdGhvdXQgYSBiaWcgcGVyZm9ybWFuY2UKK2hpdC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaXQgaW4gdXNlOgorCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18ucmVxdWVzdCcsIGF1dG9zcGVjPVRydWUpCisgICAgPj4+IG1vY2tfcmVxdWVzdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgID4+PiByZXF1ZXN0IGlzIG1vY2tfcmVxdWVzdAorICAgIFRydWUKKyAgICA+Pj4gbW9ja19yZXF1ZXN0LlJlcXVlc3QKKyAgICA8TWFnaWNNb2NrIG5hbWU9J3JlcXVlc3QuUmVxdWVzdCcgc3BlYz0nUmVxdWVzdCcgaWQ9Jy4uLic+CisKK1lvdSBjYW4gc2VlIHRoYXQgYHJlcXVlc3QuUmVxdWVzdGAgaGFzIGEgc3BlYy4gYHJlcXVlc3QuUmVxdWVzdGAgdGFrZXMgdHdvCithcmd1bWVudHMgaW4gdGhlIGNvbnN0cnVjdG9yIChvbmUgb2Ygd2hpY2ggaXMgYHNlbGZgKS4gSGVyZSdzIHdoYXQgaGFwcGVucyBpZgord2UgdHJ5IHRvIGNhbGwgaXQgaW5jb3JyZWN0bHk6CisKKyAgICA+Pj4gcmVxID0gcmVxdWVzdC5SZXF1ZXN0KCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIFR5cGVFcnJvcjogPGxhbWJkYT4oKSB0YWtlcyBhdCBsZWFzdCAyIGFyZ3VtZW50cyAoMSBnaXZlbikKKworVGhlIHNwZWMgYWxzbyBhcHBsaWVzIHRvIGluc3RhbnRpYXRlZCBjbGFzc2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKK3NwZWNjZWQgbW9ja3MpOgorCisgICAgPj4+IHJlcSA9IHJlcXVlc3QuUmVxdWVzdCgnZm9vJykKKyAgICA+Pj4gcmVxCisgICAgPE5vbkNhbGxhYmxlTWFnaWNNb2NrIG5hbWU9J3JlcXVlc3QuUmVxdWVzdCgpJyBzcGVjPSdSZXF1ZXN0JyBpZD0nLi4uJz4KKworYFJlcXVlc3RgIG9iamVjdHMgYXJlIG5vdCBjYWxsYWJsZSwgc28gdGhlIHJldHVybiB2YWx1ZSBvZiBpbnN0YW50aWF0aW5nIG91cgorbW9ja2VkIG91dCBgcmVxdWVzdC5SZXF1ZXN0YCBpcyBhIG5vbi1jYWxsYWJsZSBtb2NrLiBXaXRoIHRoZSBzcGVjIGluIHBsYWNlCithbnkgdHlwb3MgaW4gb3VyIGFzc2VydHMgd2lsbCByYWlzZSB0aGUgY29ycmVjdCBlcnJvcjoKKworICAgID4+PiByZXEuYWRkX2hlYWRlcignc3BhbScsICdlZ2dzJykKKyAgICA8TWFnaWNNb2NrIG5hbWU9J3JlcXVlc3QuUmVxdWVzdCgpLmFkZF9oZWFkZXIoKScgaWQ9Jy4uLic+CisgICAgPj4+IHJlcS5hZGRfaGVhZGVyLmFzc3JldF9jYWxsZWRfd2l0aAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2Fzc3JldF9jYWxsZWRfd2l0aCcKKyAgICA+Pj4gcmVxLmFkZF9oZWFkZXIuYXNzZXJ0X2NhbGxlZF93aXRoKCdzcGFtJywgJ2VnZ3MnKQorCitJbiBtYW55IGNhc2VzIHlvdSB3aWxsIGp1c3QgYmUgYWJsZSB0byBhZGQgYGF1dG9zcGVjPVRydWVgIHRvIHlvdXIgZXhpc3RpbmcKK2BwYXRjaGAgY2FsbHMgYW5kIHRoZW4gYmUgcHJvdGVjdGVkIGFnYWluc3QgYnVncyBkdWUgdG8gdHlwb3MgYW5kIGFwaQorY2hhbmdlcy4KKworQXMgd2VsbCBhcyB1c2luZyBgYXV0b3NwZWNgIHRocm91Z2ggYHBhdGNoYCB0aGVyZSBpcyBhCis6ZnVuYzpgY3JlYXRlX2F1dG9zcGVjYCBmb3IgY3JlYXRpbmcgYXV0b3NwZWNjZWQgbW9ja3MgZGlyZWN0bHk6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gbW9ja19yZXF1ZXN0ID0gY3JlYXRlX2F1dG9zcGVjKHJlcXVlc3QpCisgICAgPj4+IG1vY2tfcmVxdWVzdC5SZXF1ZXN0KCdmb28nLCAnYmFyJykKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0nbW9jay5SZXF1ZXN0KCknIHNwZWM9J1JlcXVlc3QnIGlkPScuLi4nPgorCitUaGlzIGlzbid0IHdpdGhvdXQgY2F2ZWF0cyBhbmQgbGltaXRhdGlvbnMgaG93ZXZlciwgd2hpY2ggaXMgd2h5IGl0IGlzIG5vdAordGhlIGRlZmF1bHQgYmVoYXZpb3VyLiBJbiBvcmRlciB0byBrbm93IHdoYXQgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHRoZQorc3BlYyBvYmplY3QsIGF1dG9zcGVjIGhhcyB0byBpbnRyb3NwZWN0IChhY2Nlc3MgYXR0cmlidXRlcykgdGhlIHNwZWMuIEFzIHlvdQordHJhdmVyc2UgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhIGNvcnJlc3BvbmRpbmcgdHJhdmVyc2FsIG9mIHRoZSBvcmlnaW5hbAorb2JqZWN0IGlzIGhhcHBlbmluZyB1bmRlciB0aGUgaG9vZC4gSWYgYW55IG9mIHlvdXIgc3BlY2NlZCBvYmplY3RzIGhhdmUKK3Byb3BlcnRpZXMgb3IgZGVzY3JpcHRvcnMgdGhhdCBjYW4gdHJpZ2dlciBjb2RlIGV4ZWN1dGlvbiB0aGVuIHlvdSBtYXkgbm90IGJlCithYmxlIHRvIHVzZSBhdXRvc3BlYy4gT24gdGhlIG90aGVyIGhhbmQgaXQgaXMgbXVjaCBiZXR0ZXIgdG8gZGVzaWduIHlvdXIKK29iamVjdHMgc28gdGhhdCBpbnRyb3NwZWN0aW9uIGlzIHNhZmUgWyNdXy4KKworQSBtb3JlIHNlcmlvdXMgcHJvYmxlbSBpcyB0aGF0IGl0IGlzIGNvbW1vbiBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcyB0byBiZQorY3JlYXRlZCBpbiB0aGUgYF9faW5pdF9fYCBtZXRob2QgYW5kIG5vdCB0byBleGlzdCBvbiB0aGUgY2xhc3MgYXQgYWxsLgorYGF1dG9zcGVjYCBjYW4ndCBrbm93IGFib3V0IGFueSBkeW5hbWljYWxseSBjcmVhdGVkIGF0dHJpYnV0ZXMgYW5kIHJlc3RyaWN0cwordGhlIGFwaSB0byB2aXNpYmxlIGF0dHJpYnV0ZXMuCisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgc2VsZi5hID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYScKKworVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB3YXlzIG9mIHJlc29sdmluZyB0aGlzIHByb2JsZW0uIFRoZSBlYXNpZXN0LCBidXQKK25vdCBuZWNlc3NhcmlseSB0aGUgbGVhc3QgYW5ub3lpbmcsIHdheSBpcyB0byBzaW1wbHkgc2V0IHRoZSByZXF1aXJlZAorYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBjcmVhdGlvbi4gSnVzdCBiZWNhdXNlIGBhdXRvc3BlY2AgZG9lc24ndCBhbGxvdworeW91IHRvIGZldGNoIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdCBvbiB0aGUgc3BlYyBpdCBkb2Vzbid0IHByZXZlbnQgeW91CitzZXR0aW5nIHRoZW06CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEgPSAzMworICAgIC4uLgorCitUaGVyZSBpcyBhIG1vcmUgYWdncmVzc2l2ZSB2ZXJzaW9uIG9mIGJvdGggYHNwZWNgIGFuZCBgYXV0b3NwZWNgIHRoYXQgKmRvZXMqCitwcmV2ZW50IHlvdSBzZXR0aW5nIG5vbi1leGlzdGVudCBhdHRyaWJ1dGVzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0bworZW5zdXJlIHlvdXIgY29kZSBvbmx5ICpzZXRzKiB2YWxpZCBhdHRyaWJ1dGVzIHRvbywgYnV0IG9idmlvdXNseSBpdCBwcmV2ZW50cwordGhpcyBwYXJ0aWN1bGFyIHNjZW5hcmlvOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVRydWUsIHNwZWNfc2V0PVRydWUpOgorICAgIC4uLiAgIHRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAuLi4gICB0aGluZy5hID0gMzMKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhJworCitQcm9iYWJseSB0aGUgYmVzdCB3YXkgb2Ygc29sdmluZyB0aGUgcHJvYmxlbSBpcyB0byBhZGQgY2xhc3MgYXR0cmlidXRlcyBhcworZGVmYXVsdCB2YWx1ZXMgZm9yIGluc3RhbmNlIG1lbWJlcnMgaW5pdGlhbGlzZWQgaW4gYF9faW5pdF9fYC4gTm90ZSB0aGF0IGlmCit5b3UgYXJlIG9ubHkgc2V0dGluZyBkZWZhdWx0IGF0dHJpYnV0ZXMgaW4gYF9faW5pdF9fYCB0aGVuIHByb3ZpZGluZyB0aGVtIHZpYQorY2xhc3MgYXR0cmlidXRlcyAoc2hhcmVkIGJldHdlZW4gaW5zdGFuY2VzIG9mIGNvdXJzZSkgaXMgZmFzdGVyIHRvby4gZS5nLgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgYSA9IDMzCisKK1RoaXMgYnJpbmdzIHVwIGFub3RoZXIgaXNzdWUuIEl0IGlzIHJlbGF0aXZlbHkgY29tbW9uIHRvIHByb3ZpZGUgYSBkZWZhdWx0Cit2YWx1ZSBvZiBgTm9uZWAgZm9yIG1lbWJlcnMgdGhhdCB3aWxsIGxhdGVyIGJlIGFuIG9iamVjdCBvZiBhIGRpZmZlcmVudCB0eXBlLgorYE5vbmVgIHdvdWxkIGJlIHVzZWxlc3MgYXMgYSBzcGVjIGJlY2F1c2UgaXQgd291bGRuJ3QgbGV0IHlvdSBhY2Nlc3MgKmFueSoKK2F0dHJpYnV0ZXMgb3IgbWV0aG9kcyBvbiBpdC4gQXMgYE5vbmVgIGlzICpuZXZlciogZ29pbmcgdG8gYmUgdXNlZnVsIGFzIGEKK3NwZWMsIGFuZCBwcm9iYWJseSBpbmRpY2F0ZXMgYSBtZW1iZXIgdGhhdCB3aWxsIG5vcm1hbGx5IG9mIHNvbWUgb3RoZXIgdHlwZSwKK2BhdXRvc3BlY2AgZG9lc24ndCB1c2UgYSBzcGVjIGZvciBtZW1iZXJzIHRoYXQgYXJlIHNldCB0byBgTm9uZWAuIFRoZXNlIHdpbGwKK2p1c3QgYmUgb3JkaW5hcnkgbW9ja3MgKHdlbGwgLSBgTWFnaWNNb2Nrc2ApOgorCisgICAgPj4+IGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgIC4uLiAgICAgbWVtYmVyID0gTm9uZQorICAgIC4uLgorICAgID4+PiBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFNvbWV0aGluZykKKyAgICA+Pj4gbW9jay5tZW1iZXIuZm9vLmJhci5iYXooKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5tZW1iZXIuZm9vLmJhci5iYXooKScgaWQ9Jy4uLic+CisKK0lmIG1vZGlmeWluZyB5b3VyIHByb2R1Y3Rpb24gY2xhc3NlcyB0byBhZGQgZGVmYXVsdHMgaXNuJ3QgdG8geW91ciBsaWtpbmcKK3RoZW4gdGhlcmUgYXJlIG1vcmUgb3B0aW9ucy4gT25lIG9mIHRoZXNlIGlzIHNpbXBseSB0byB1c2UgYW4gaW5zdGFuY2UgYXMgdGhlCitzcGVjIHJhdGhlciB0aGFuIHRoZSBjbGFzcy4gVGhlIG90aGVyIGlzIHRvIGNyZWF0ZSBhIHN1YmNsYXNzIG9mIHRoZQorcHJvZHVjdGlvbiBjbGFzcyBhbmQgYWRkIHRoZSBkZWZhdWx0cyB0byB0aGUgc3ViY2xhc3Mgd2l0aG91dCBhZmZlY3RpbmcgdGhlCitwcm9kdWN0aW9uIGNsYXNzLiBCb3RoIG9mIHRoZXNlIHJlcXVpcmUgeW91IHRvIHVzZSBhbiBhbHRlcm5hdGl2ZSBvYmplY3QgYXMKK3RoZSBzcGVjLiBUaGFua2Z1bGx5IGBwYXRjaGAgc3VwcG9ydHMgdGhpcyAtIHlvdSBjYW4gc2ltcGx5IHBhc3MgdGhlCithbHRlcm5hdGl2ZSBvYmplY3QgYXMgdGhlIGBhdXRvc3BlY2AgYXJndW1lbnQ6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgc2VsZi5hID0gMzMKKyAgICAuLi4KKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nRm9yVGVzdChTb21ldGhpbmcpOgorICAgIC4uLiAgIGEgPSAzMworICAgIC4uLgorICAgID4+PiBwID0gcGF0Y2goJ19fbWFpbl9fLlNvbWV0aGluZycsIGF1dG9zcGVjPVNvbWV0aGluZ0ZvclRlc3QpCisgICAgPj4+IG1vY2sgPSBwLnN0YXJ0KCkKKyAgICA+Pj4gbW9jay5hCisgICAgPE5vbkNhbGxhYmxlTWFnaWNNb2NrIG5hbWU9J1NvbWV0aGluZy5hJyBzcGVjPSdpbnQnIGlkPScuLi4nPgorCisKKy4uIFsjXSBUaGlzIG9ubHkgYXBwbGllcyB0byBjbGFzc2VzIG9yIGFscmVhZHkgaW5zdGFudGlhdGVkIG9iamVjdHMuIENhbGxpbmcKKyAgIGEgbW9ja2VkIGNsYXNzIHRvIGNyZWF0ZSBhIG1vY2sgaW5zdGFuY2UgKmRvZXMgbm90KiBjcmVhdGUgYSByZWFsIGluc3RhbmNlLgorICAgSXQgaXMgb25seSBhdHRyaWJ1dGUgbG9va3VwcyAtIGFsb25nIHdpdGggY2FsbHMgdG8gYGRpcmAgLSB0aGF0IGFyZSBkb25lLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKaW5kZXggNzJhM2E3Yi4uMjY1N2ViZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdApAQCAtNzkyLDExICs3OTIsMTQgQEAKICAgICAgIFJ1biB0aGUgdGVzdCwgY29sbGVjdGluZyB0aGUgcmVzdWx0IGludG8gdGhlIHRlc3QgcmVzdWx0IG9iamVjdCBwYXNzZWQgYXMKICAgICAgICpyZXN1bHQqLiAgSWYgKnJlc3VsdCogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgYSB0ZW1wb3JhcnkgcmVzdWx0CiAgICAgICBvYmplY3QgaXMgY3JlYXRlZCAoYnkgY2FsbGluZyB0aGUgOm1ldGg6YGRlZmF1bHRUZXN0UmVzdWx0YCBtZXRob2QpIGFuZAotICAgICAgdXNlZC4gVGhlIHJlc3VsdCBvYmplY3QgaXMgbm90IHJldHVybmVkIHRvIDptZXRoOmBydW5gJ3MgY2FsbGVyLgorICAgICAgdXNlZC4gVGhlIHJlc3VsdCBvYmplY3QgaXMgcmV0dXJuZWQgdG8gOm1ldGg6YHJ1bmAncyBjYWxsZXIuCiAKICAgICAgIFRoZSBzYW1lIGVmZmVjdCBtYXkgYmUgaGFkIGJ5IHNpbXBseSBjYWxsaW5nIHRoZSA6Y2xhc3M6YFRlc3RDYXNlYAogICAgICAgaW5zdGFuY2UuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91cyB2ZXJzaW9ucyBvZiBgYHJ1bmBgIGRpZCBub3QgcmV0dXJuIHRoZSByZXN1bHQuIE5laXRoZXIgZGlkCisgICAgICAgICBjYWxsaW5nIGFuIGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBza2lwVGVzdChyZWFzb24pCiAKQEAgLTg1NywxMCArODYwLDExIEBACiAgICB8IDxUZXN0Q2FzZS5hc3NlcnROb3RJc0luc3RhbmNlPmAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKIAotICAgQWxsIHRoZSBhc3NlcnQgbWV0aG9kcyAoZXhjZXB0IDptZXRoOmBhc3NlcnRSYWlzZXNgLAotICAgOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YGFzc2VydFdhcm5zYCwgOm1ldGg6YGFzc2VydFdhcm5zUmVnZXhgKQotICAgYWNjZXB0IGEgKm1zZyogYXJndW1lbnQgdGhhdCwgaWYgc3BlY2lmaWVkLCBpcyB1c2VkIGFzIHRoZSBlcnJvciBtZXNzYWdlIG9uCi0gICBmYWlsdXJlIChzZWUgYWxzbyA6ZGF0YTpgbG9uZ01lc3NhZ2VgKS4KKyAgIEFsbCB0aGUgYXNzZXJ0IG1ldGhvZHMgYWNjZXB0IGEgKm1zZyogYXJndW1lbnQgdGhhdCwgaWYgc3BlY2lmaWVkLCBpcyB1c2VkCisgICBhcyB0aGUgZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlIChzZWUgYWxzbyA6ZGF0YTpgbG9uZ01lc3NhZ2VgKS4KKyAgIE5vdGUgdGhhdCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIHRvIDptZXRoOmBhc3NlcnRSYWlzZXNgLAorICAgOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YGFzc2VydFdhcm5zYCwgOm1ldGg6YGFzc2VydFdhcm5zUmVnZXhgCisgICBvbmx5IHdoZW4gdGhleSBhcmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCiAKQEAgLTk1NSw3ICs5NTksNyBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFJhaXNlcyhleGNlcHRpb24sIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgIGFzc2VydFJhaXNlcyhleGNlcHRpb24sIG1zZz1Ob25lKQogCiAgICAgICBUZXN0IHRoYXQgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuICpjYWxsYWJsZSogaXMgY2FsbGVkIHdpdGggYW55CiAgICAgICBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIGFsc28gcGFzc2VkIHRvCkBAIC05NjQsMTIgKzk2OCwxNiBAQAogICAgICAgVG8gY2F0Y2ggYW55IG9mIGEgZ3JvdXAgb2YgZXhjZXB0aW9ucywgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlcHRpb24KICAgICAgIGNsYXNzZXMgbWF5IGJlIHBhc3NlZCBhcyAqZXhjZXB0aW9uKi4KIAotICAgICAgSWYgb25seSB0aGUgKmV4Y2VwdGlvbiogYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28KLSAgICAgIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CisgICAgICBJZiBvbmx5IHRoZSAqZXhjZXB0aW9uKiBhbmQgcG9zc2libHkgdGhlICptc2cqIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sCisgICAgICByZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgc28gdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuCisgICAgICBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CiAKICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgV2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBhY2NlcHRzIHRoZQorICAgICAgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICptc2cqLgorCiAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIHdpbGwgc3RvcmUgdGhlIGNhdWdodCBleGNlcHRpb24gb2JqZWN0IGluIGl0cwogICAgICAgOmF0dHI6YGV4Y2VwdGlvbmAgYXR0cmlidXRlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIHRoZSBpbnRlbnRpb24KICAgICAgIGlzIHRvIHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlIGV4Y2VwdGlvbiByYWlzZWQ6OgpAQCAtOTg2LDkgKzk5NCwxMiBAQAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIEFkZGVkIHRoZSA6YXR0cjpgZXhjZXB0aW9uYCBhdHRyaWJ1dGUuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uLCByZWdleCwgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4KQorICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uLCByZWdleCwgbXNnPU5vbmUpCiAKICAgICAgIExpa2UgOm1ldGg6YGFzc2VydFJhaXNlc2AgYnV0IGFsc28gdGVzdHMgdGhhdCAqcmVnZXgqIG1hdGNoZXMKICAgICAgIG9uIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJhaXNlZCBleGNlcHRpb24uICAqcmVnZXgqIG1heSBiZQpAQCAtMTAwNSwxMiArMTAxNiwxNiBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKICAgICAgICAgIHVuZGVyIHRoZSBuYW1lIGBgYXNzZXJ0UmFpc2VzUmVnZXhwYGAuCisKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICAgICBSZW5hbWVkIHRvIDptZXRoOmBhc3NlcnRSYWlzZXNSZWdleGAuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0V2FybnMod2FybmluZywgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRXYXJucyh3YXJuaW5nKQorICAgICAgICAgICAgICAgYXNzZXJ0V2FybnMod2FybmluZywgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBhIHdhcm5pbmcgaXMgdHJpZ2dlcmVkIHdoZW4gKmNhbGxhYmxlKiBpcyBjYWxsZWQgd2l0aCBhbnkKICAgICAgIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgYWxzbyBwYXNzZWQgdG8KQEAgLTEwMTksMTIgKzEwMzQsMTYgQEAKICAgICAgIFRvIGNhdGNoIGFueSBvZiBhIGdyb3VwIG9mIHdhcm5pbmdzLCBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIHdhcm5pbmcKICAgICAgIGNsYXNzZXMgbWF5IGJlIHBhc3NlZCBhcyAqd2FybmluZ3MqLgogCi0gICAgICBJZiBvbmx5IHRoZSAqd2FybmluZyogYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIgc28KLSAgICAgIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgcmF0aGVyIHRoYW4gYXMgYSBmdW5jdGlvbjo6CisgICAgICBJZiBvbmx5IHRoZSAqd2FybmluZyogYW5kIHBvc3NpYmx5IHRoZSAqbXNnKiBhcmd1bWVudHMgYXJlIGdpdmVuLAorICAgICAgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4KKyAgICAgIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKIAogICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICBXaGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIDptZXRoOmBhc3NlcnRSYWlzZXNgIGFjY2VwdHMgdGhlCisgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKm1zZyouCisKICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbCBzdG9yZSB0aGUgY2F1Z2h0IHdhcm5pbmcgb2JqZWN0IGluIGl0cwogICAgICAgOmF0dHI6YHdhcm5pbmdgIGF0dHJpYnV0ZSwgYW5kIHRoZSBzb3VyY2UgbGluZSB3aGljaCB0cmlnZ2VyZWQgdGhlCiAgICAgICB3YXJuaW5ncyBpbiB0aGUgOmF0dHI6YGZpbGVuYW1lYCBhbmQgOmF0dHI6YGxpbmVub2AgYXR0cmlidXRlcy4KQEAgLTEwNDIsOSArMTA2MSwxMiBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRXYXJuc1JlZ2V4KHdhcm5pbmcsIHJlZ2V4LCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgpCisgICAgICAgICAgICAgICBhc3NlcnRXYXJuc1JlZ2V4KHdhcm5pbmcsIHJlZ2V4LCBtc2c9Tm9uZSkKIAogICAgICAgTGlrZSA6bWV0aDpgYXNzZXJ0V2FybnNgIGJ1dCBhbHNvIHRlc3RzIHRoYXQgKnJlZ2V4KiBtYXRjaGVzIG9uIHRoZQogICAgICAgbWVzc2FnZSBvZiB0aGUgdHJpZ2dlcmVkIHdhcm5pbmcuICAqcmVnZXgqIG1heSBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbgpAQCAtMTA2Miw2ICsxMDg0LDggQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBZGRlZCB0aGUgKm1zZyoga2V5d29yZCBhcmd1bWVudCB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAKIAogICAgVGhlcmUgYXJlIGFsc28gb3RoZXIgbWV0aG9kcyB1c2VkIHRvIHBlcmZvcm0gbW9yZSBzcGVjaWZpYyBjaGVja3MsIHN1Y2ggYXM6CkBAIC0xMTUxLDIxICsxMTc1LDYgQEAKICAgICAgICAgIDptZXRoOmAuYXNzZXJ0Tm90UmVnZXhgLgogCiAKLSAgIC4uIG1ldGhvZDo6IGFzc2VydERpY3RDb250YWluc1N1YnNldChzdWJzZXQsIGRpY3Rpb25hcnksIG1zZz1Ob25lKQotCi0gICAgICBUZXN0cyB3aGV0aGVyIHRoZSBrZXkvdmFsdWUgcGFpcnMgaW4gKmRpY3Rpb25hcnkqIGFyZSBhIHN1cGVyc2V0IG9mCi0gICAgICB0aG9zZSBpbiAqc3Vic2V0Ki4gIElmIG5vdCwgYW4gZXJyb3IgbWVzc2FnZSBsaXN0aW5nIHRoZSBtaXNzaW5nIGtleXMKLSAgICAgIGFuZCBtaXNtYXRjaGVkIHZhbHVlcyBpcyBnZW5lcmF0ZWQuCi0KLSAgICAgIE5vdGUsIHRoZSBhcmd1bWVudHMgYXJlIGluIHRoZSBvcHBvc2l0ZSBvcmRlciBvZiB3aGF0IHRoZSBtZXRob2QgbmFtZQotICAgICAgZGljdGF0ZXMuICBJbnN0ZWFkLCBjb25zaWRlciB1c2luZyB0aGUgc2V0LW1ldGhvZHMgb24gOnJlZjpgZGljdGlvbmFyeQotICAgICAgdmlld3MgPGRpY3Qtdmlld3M+YCwgZm9yIGV4YW1wbGU6IGBgZC5rZXlzKCkgPD0gZS5rZXlzKClgYCBvcgotICAgICAgYGBkLml0ZW1zKCkgPD0gZC5pdGVtcygpYGAuCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQotICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMgotCi0KICAgIC4uIG1ldGhvZDo6IGFzc2VydENvdW50RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBzZXF1ZW5jZSAqZmlyc3QqIGNvbnRhaW5zIHRoZSBzYW1lIGVsZW1lbnRzIGFzICpzZWNvbmQqLApAQCAtMTE4MCwyMSArMTE4OSw2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBtZXRob2Q6OiBhc3NlcnRTYW1lRWxlbWVudHMoZmlyc3QsIHNlY29uZCwgbXNnPU5vbmUpCi0KLSAgICAgIFRlc3QgdGhhdCBzZXF1ZW5jZSAqZmlyc3QqIGNvbnRhaW5zIHRoZSBzYW1lIGVsZW1lbnRzIGFzICpzZWNvbmQqLAotICAgICAgcmVnYXJkbGVzcyBvZiB0aGVpciBvcmRlci4gV2hlbiB0aGV5IGRvbid0LCBhbiBlcnJvciBtZXNzYWdlIGxpc3RpbmcKLSAgICAgIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzZXF1ZW5jZXMgd2lsbCBiZSBnZW5lcmF0ZWQuCi0KLSAgICAgIER1cGxpY2F0ZSBlbGVtZW50cyBhcmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyAqZmlyc3QqIGFuZCAqc2Vjb25kKi4KLSAgICAgIEl0IGlzIHRoZSBlcXVpdmFsZW50IG9mIGBgYXNzZXJ0RXF1YWwoc2V0KGZpcnN0KSwgc2V0KHNlY29uZCkpYGAKLSAgICAgIGJ1dCBpdCB3b3JrcyB3aXRoIHNlcXVlbmNlcyBvZiB1bmhhc2hhYmxlIG9iamVjdHMgYXMgd2VsbC4gQmVjYXVzZQotICAgICAgZHVwbGljYXRlcyBhcmUgaWdub3JlZCwgdGhpcyBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKLSAgICAgIDptZXRoOmBhc3NlcnRDb3VudEVxdWFsYC4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCi0gICAgICAuLiBkZXByZWNhdGVkOjogMy4yCi0KIAogICAgLi4gX3R5cGUtc3BlY2lmaWMtbWV0aG9kczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKaW5kZXggMjgyMzI5Zi4uZTIwZGIyNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CkBAIC04LDIxICs4LDIzIEBACiAKIAogVGhlIDptb2Q6YHVybGxpYi5lcnJvcmAgbW9kdWxlIGRlZmluZXMgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzIGZvciBleGNlcHRpb25zCi1yYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgLiAgVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGlzIDpleGM6YFVSTEVycm9yYCwKLXdoaWNoIGluaGVyaXRzIGZyb20gOmV4YzpgSU9FcnJvcmAuCityYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgLiAgVGhlIGJhc2UgZXhjZXB0aW9uIGNsYXNzIGlzIDpleGM6YFVSTEVycm9yYC4KIAogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSByYWlzZWQgYnkgOm1vZDpgdXJsbGliLmVycm9yYCBhcyBhcHByb3ByaWF0ZToKIAogLi4gZXhjZXB0aW9uOjogVVJMRXJyb3IKIAogICAgVGhlIGhhbmRsZXJzIHJhaXNlIHRoaXMgZXhjZXB0aW9uIChvciBkZXJpdmVkIGV4Y2VwdGlvbnMpIHdoZW4gdGhleSBydW4gaW50bwotICAgYSBwcm9ibGVtLiAgSXQgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJT0Vycm9yYC4KKyAgIGEgcHJvYmxlbS4gIEl0IGlzIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHJlYXNvbgogCiAgICAgICBUaGUgcmVhc29uIGZvciB0aGlzIGVycm9yLiAgSXQgY2FuIGJlIGEgbWVzc2FnZSBzdHJpbmcgb3IgYW5vdGhlcgotICAgICAgZXhjZXB0aW9uIGluc3RhbmNlICg6ZXhjOmBzb2NrZXQuZXJyb3JgIGZvciByZW1vdGUgVVJMcywgOmV4YzpgT1NFcnJvcmAKLSAgICAgIGZvciBsb2NhbCBVUkxzKS4KKyAgICAgIGV4Y2VwdGlvbiBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFVSTEVycm9yYCBoYXMgYmVlbiBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZAorICAgICAgb2YgOmV4YzpgSU9FcnJvcmAuCiAKIAogLi4gZXhjZXB0aW9uOjogSFRUUEVycm9yCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAppbmRleCBiYzFkYTYyLi4yMDhjYjk3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKQEAgLTgxLDggKzgxLDcgQEAKICAgIHRoaXMgYXJndW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZy4KIAogICAgSWYgdGhlICphbGxvd19mcmFnbWVudHMqIGFyZ3VtZW50IGlzIGZhbHNlLCBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgbm90Ci0gICBhbGxvd2VkLCBldmVuIGlmIHRoZSBVUkwncyBhZGRyZXNzaW5nIHNjaGVtZSBub3JtYWxseSBkb2VzIHN1cHBvcnQgdGhlbS4gIFRoZQotICAgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBhcmd1bWVudCBpcyA6Y29uc3Q6YFRydWVgLgorICAgYWxsb3dlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGFyZ3VtZW50IGlzIDpjb25zdDpgVHJ1ZWAuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYWN0dWFsbHkgYW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YHR1cGxlYC4gIFRoaXMKICAgIGNsYXNzIGhhcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcmVhZC1vbmx5IGNvbnZlbmllbmNlIGF0dHJpYnV0ZXM6CkBAIC0xMTksNiArMTE4LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgSVB2NiBVUkwgcGFyc2luZyBjYXBhYmlsaXRpZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgZnJhZ21lbnQgaXMgbm93IHBhcnNlZCBmb3IgYWxsIFVSTCBzY2hlbWVzICh1bmxlc3MgKmFsbG93X2ZyYWdtZW50KiBpcworICAgICAgZmFsc2UpLCBpbiBhY2NvcmRhbmNlIHdpdGggOnJmYzpgMzk4NmAuICBQcmV2aW91c2x5LCBhIHdoaXRlbGlzdCBvZgorICAgICAgc2NoZW1lcyB0aGF0IHN1cHBvcnQgZnJhZ21lbnRzIGV4aXN0ZWQuCisKIAogLi4gZnVuY3Rpb246OiBwYXJzZV9xcyhxcywga2VlcF9ibGFua192YWx1ZXM9RmFsc2UsIHN0cmljdF9wYXJzaW5nPUZhbHNlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnKQogCkBAIC0xNDEsOCArMTQ1LDkgQEAKICAgIHBlcmNlbnQtZW5jb2RlZCBzZXF1ZW5jZXMgaW50byBVbmljb2RlIGNoYXJhY3RlcnMsIGFzIGFjY2VwdGVkIGJ5IHRoZQogICAgOm1ldGg6YGJ5dGVzLmRlY29kZWAgbWV0aG9kLgogCi0gICBVc2UgdGhlIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0byBjb252ZXJ0IHN1Y2gKLSAgIGRpY3Rpb25hcmllcyBpbnRvIHF1ZXJ5IHN0cmluZ3MuCisgICBVc2UgdGhlIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiAod2l0aCB0aGUgYGBkb3NlcWBgCisgICBwYXJhbWV0ZXIgc2V0IHRvIGBgVHJ1ZWBgKSB0byBjb252ZXJ0IHN1Y2ggZGljdGlvbmFyaWVzIGludG8gcXVlcnkKKyAgIHN0cmluZ3MuCiAKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCBiNDc2NGNjLi44OThmZTcxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0xNiw3ICsxNiw3IEBACiBUaGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKLS4uIGZ1bmN0aW9uOjogdXJsb3Blbih1cmwsIGRhdGE9Tm9uZVssIHRpbWVvdXRdLCAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpCisuLiBmdW5jdGlvbjo6IHVybG9wZW4odXJsLCBkYXRhPU5vbmVbLCB0aW1lb3V0XSwgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRlZmF1bHQ9VHJ1ZSkKIAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgpAQCAtNTMsOSArNTMsMTUgQEAKICAgIHBvaW50IHRvIGEgZGlyZWN0b3J5IG9mIGhhc2hlZCBjZXJ0aWZpY2F0ZSBmaWxlcy4gIE1vcmUgaW5mb3JtYXRpb24gY2FuCiAgICBiZSBmb3VuZCBpbiA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYC4KIAorICAgVGhlICpjYWRlZmF1bHQqIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0byBmYWxsIGJhY2sgdG8gbG9hZGluZyBhCisgICBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGRlZmluZWQgYnkgdGhlIHVuZGVybHlpbmcgT3BlblNTTCBsaWJyYXJ5IGlmIHRoZQorICAgKmNhZmlsZSogYW5kICpjYXBhdGgqIHBhcmFtZXRlcnMgYXJlIG9taXR0ZWQuICBUaGlzIHdpbGwgb25seSB3b3JrIG9uCisgICBzb21lIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KKwogICAgLi4gd2FybmluZzo6Ci0gICAgICBJZiBuZWl0aGVyICpjYWZpbGUqIG5vciAqY2FwYXRoKiBpcyBzcGVjaWZpZWQsIGFuIEhUVFBTIHJlcXVlc3QKLSAgICAgIHdpbGwgbm90IGRvIGFueSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLgorICAgICAgSWYgbmVpdGhlciAqY2FmaWxlKiBub3IgKmNhcGF0aCogaXMgc3BlY2lmaWVkLCBhbmQgKmNhZGVmYXVsdCogaXMgRmFsc2UsCisgICAgICBhbiBIVFRQUyByZXF1ZXN0IHdpbGwgbm90IGRvIGFueSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlcidzCisgICAgICBjZXJ0aWZpY2F0ZS4KIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgZmlsZS1saWtlIG9iamVjdCB0aGF0IHdvcmtzIGFzIGEgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAsCiAgICB3aXRoIHR3byBhZGRpdGlvbmFsIG1ldGhvZHMgZnJvbSB0aGUgOm1vZDpgdXJsbGliLnJlc3BvbnNlYCBtb2R1bGUKQEAgLTkyLDYgKzk4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgKmRhdGEqIGNhbiBiZSBhbiBpdGVyYWJsZSBvYmplY3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqY2FkZWZhdWx0KiB3YXMgYWRkZWQuCisKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbF9vcGVuZXIob3BlbmVyKQogCiAgICBJbnN0YWxsIGFuIDpjbGFzczpgT3BlbmVyRGlyZWN0b3JgIGluc3RhbmNlIGFzIHRoZSBkZWZhdWx0IGdsb2JhbCBvcGVuZXIuCkBAIC0xNDUsNyArMTU0LDcgQEAKIAogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKIAotLi4gY2xhc3M6OiBSZXF1ZXN0KHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LCBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlKQorLi4gY2xhc3M6OiBSZXF1ZXN0KHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LCBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLCBtZXRob2Q9Tm9uZSkKIAogICAgVGhpcyBjbGFzcyBpcyBhbiBhYnN0cmFjdGlvbiBvZiBhIFVSTCByZXF1ZXN0LgogCkBAIC0xOTgsNiArMjA3LDEzIEBACiAgICBkb2N1bWVudCwgYW5kIHRoZSB1c2VyIGhhZCBubyBvcHRpb24gdG8gYXBwcm92ZSB0aGUgYXV0b21hdGljCiAgICBmZXRjaGluZyBvZiB0aGUgaW1hZ2UsIHRoaXMgc2hvdWxkIGJlIHRydWUuCiAKKyAgICptZXRob2QqIHNob3VsZCBiZSBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0aGF0CisgICB3aWxsIGJlIHVzZWQgKGUuZy4gYGAnSEVBRCdgYCkuICBJdHMgdmFsdWUgaXMgc3RvcmVkIGluIHRoZQorICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGFuZCBpcyB1c2VkIGJ5IDptZXRoOmBnZXRfbWV0aG9kKClgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBhcmd1bWVudCBpcyBhZGRlZCB0byB0aGUgUmVxdWVzdCBjbGFzcy4KKwogCiAuLiBjbGFzczo6IE9wZW5lckRpcmVjdG9yKCkKIApAQCAtMjYzLDEwICsyNzksMTEgQEAKIAogLi4gY2xhc3M6OiBIVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKIAotICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZQotICAgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgotICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZAorICAgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8KKyAgIHNlY3Rpb24gOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdAorICAgYmUgc3VwcG9ydGVkLiBIVFRQQmFzaWNBdXRoSGFuZGxlciB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbgorICAgcHJlc2VudGVkIHdpdGggYSB3cm9uZyBBdXRoZW50aWNhdGlvbiBzY2hlbWUuCiAKIAogLi4gY2xhc3M6OiBQcm94eUJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCkBAIC0yODgsMTAgKzMwNSwxOSBAQAogCiAuLiBjbGFzczo6IEhUVFBEaWdlc3RBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKIAotICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZQotICAgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgotICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgSGFuZGxlIGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHJlbW90ZSBob3N0LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZAorICAgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8KKyAgIHNlY3Rpb24gOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdAorICAgYmUgc3VwcG9ydGVkLiBXaGVuIGJvdGggRGlnZXN0IEF1dGhlbnRpY2F0aW9uIEhhbmRsZXIgYW5kIEJhc2ljCisgICBBdXRoZW50aWNhdGlvbiBIYW5kbGVyIGFyZSBib3RoIGFkZGVkLCBEaWdlc3QgQXV0aGVudGljYXRpb24gaXMgYWx3YXlzIHRyaWVkCisgICBmaXJzdC4gSWYgdGhlIERpZ2VzdCBBdXRoZW50aWNhdGlvbiByZXR1cm5zIGEgNDB4IHJlc3BvbnNlIGFnYWluLCBpdCBpcyBzZW50CisgICB0byBCYXNpYyBBdXRoZW50aWNhdGlvbiBoYW5kbGVyIHRvIEhhbmRsZS4gIFRoaXMgSGFuZGxlciBtZXRob2Qgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSBvdGhlciB0aGFuCisgICBEaWdlc3Qgb3IgQmFzaWMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCBvbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuCisKIAogCiAuLiBjbGFzczo6IFByb3h5RGlnZXN0QXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCkBAIC0zODIsMjcgKzQwOCwyNSBAQAogICAgYm9vbGVhbiwgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgdW52ZXJpZmlhYmxlIGFzIGRlZmluZWQKICAgIGJ5IFJGQyAyOTY1LgogCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmFkZF9kYXRhKGRhdGEpCisuLiBhdHRyaWJ1dGU6OiBSZXF1ZXN0Lm1ldGhvZAogCi0gICBTZXQgdGhlIDpjbGFzczpgUmVxdWVzdGAgZGF0YSB0byAqZGF0YSouICBUaGlzIGlzIGlnbm9yZWQgYnkgYWxsIGhhbmRsZXJzIGV4Y2VwdAotICAgSFRUUCBoYW5kbGVycyAtLS0gYW5kIHRoZXJlIGl0IHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nLCBhbmQgd2lsbCBjaGFuZ2UgdGhlCi0gICByZXF1ZXN0IHRvIGJlIGBgUE9TVGBgIHJhdGhlciB0aGFuIGBgR0VUYGAuCisgICBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byB1c2UuICBUaGlzIHZhbHVlIGlzIHVzZWQgYnkKKyAgIDptZXRoOmB+UmVxdWVzdC5nZXRfbWV0aG9kYCB0byBvdmVycmlkZSB0aGUgY29tcHV0ZWQgSFRUUCByZXF1ZXN0CisgICBtZXRob2QgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcmV0dXJuZWQuICBUaGlzIGF0dHJpYnV0ZSBpcyBpbml0aWFsaXplZCB3aXRoCisgICB0aGUgdmFsdWUgb2YgdGhlICptZXRob2QqIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X21ldGhvZCgpCiAKLSAgIFJldHVybiBhIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kLiAgVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yCi0gICBIVFRQIHJlcXVlc3RzLCBhbmQgY3VycmVudGx5IGFsd2F5cyByZXR1cm5zIGBgJ0dFVCdgYCBvciBgYCdQT1NUJ2BgLgorICAgUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuICBJZgorICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBpcyBub3QgYGBOb25lYGAsIHJldHVybiBpdHMgdmFsdWUsIG90aGVyd2lzZSByZXR1cm4KKyAgIGBgJ0dFVCdgYCBpZiA6YXR0cjpgUmVxdWVzdC5kYXRhYCBpcyBgYE5vbmVgYCwgb3IgYGAnUE9TVCdgYCBpZiBpdCdzIG5vdC4KKyAgIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGZvciBIVFRQIHJlcXVlc3RzLgogCi0KLS4uIG1ldGhvZDo6IFJlcXVlc3QuaGFzX2RhdGEoKQotCi0gICBSZXR1cm4gd2hldGhlciB0aGUgaW5zdGFuY2UgaGFzIGEgbm9uLVwgYGBOb25lYGAgZGF0YS4KLQotCi0uLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9kYXRhKCkKLQotICAgUmV0dXJuIHRoZSBpbnN0YW5jZSdzIGRhdGEuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgZ2V0X21ldGhvZCBub3cgbG9va3MgYXQgdGhlIHZhbHVlIG9mIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAuCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5hZGRfaGVhZGVyKGtleSwgdmFsKQpAQCAtNDMyLDIwICs0NTYsNjAgQEAKICAgIFJldHVybiB0aGUgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KIAogCisuLiBtZXRob2Q6OiBSZXF1ZXN0LnNldF9wcm94eShob3N0LCB0eXBlKQorCisgICBQcmVwYXJlIHRoZSByZXF1ZXN0IGJ5IGNvbm5lY3RpbmcgdG8gYSBwcm94eSBzZXJ2ZXIuIFRoZSAqaG9zdCogYW5kICp0eXBlKiB3aWxsCisgICByZXBsYWNlIHRob3NlIG9mIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBpbnN0YW5jZSdzIHNlbGVjdG9yIHdpbGwgYmUgdGhlIG9yaWdpbmFsCisgICBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgorCisKKy4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2RhdGEoZGF0YSkKKworICAgU2V0IHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGRhdGEgdG8gKmRhdGEqLiAgVGhpcyBpcyBpZ25vcmVkIGJ5IGFsbCBoYW5kbGVycyBleGNlcHQKKyAgIEhUVFAgaGFuZGxlcnMgLS0tIGFuZCB0aGVyZSBpdCBzaG91bGQgYmUgYSBieXRlIHN0cmluZywgYW5kIHdpbGwgY2hhbmdlIHRoZQorICAgcmVxdWVzdCB0byBiZSBgYFBPU1RgYCByYXRoZXIgdGhhbiBgYEdFVGBgLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworCisuLiBtZXRob2Q6OiBSZXF1ZXN0Lmhhc19kYXRhKCkKKworICAgUmV0dXJuIHdoZXRoZXIgdGhlIGluc3RhbmNlIGhhcyBhIG5vbi1cIGBgTm9uZWBgIGRhdGEuIERlcHJlY2F0ZWQgaW4gMy4zLAorICAgdXNlIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKworLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfZGF0YSgpCisKKyAgIFJldHVybiB0aGUgaW5zdGFuY2UncyBkYXRhLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X3R5cGUoKQogCi0gICBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIFVSTCAtLS0gYWxzbyBrbm93biBhcyB0aGUgc2NoZW1lLgorICAgUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBVUkwgLS0tIGFsc28ga25vd24gYXMgdGhlIHNjaGVtZS4gIERlcHJlY2F0ZWQgaW4gMy4zLAorICAgdXNlIDphdHRyOmBSZXF1ZXN0LnR5cGVgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaG9zdCgpCiAKLSAgIFJldHVybiB0aGUgaG9zdCB0byB3aGljaCBhIGNvbm5lY3Rpb24gd2lsbCBiZSBtYWRlLgorICAgUmV0dXJuIHRoZSBob3N0IHRvIHdoaWNoIGEgY29ubmVjdGlvbiB3aWxsIGJlIG1hZGUuIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0Lmhvc3RgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfc2VsZWN0b3IoKQogCiAgICBSZXR1cm4gdGhlIHNlbGVjdG9yIC0tLSB0aGUgcGFydCBvZiB0aGUgVVJMIHRoYXQgaXMgc2VudCB0byB0aGUgc2VydmVyLgorICAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZSA6YXR0cjpgUmVxdWVzdC5zZWxlY3RvcmAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfaGVhZGVyKGhlYWRlcl9uYW1lLCBkZWZhdWx0PU5vbmUpCiAKQEAgLTQ2MCwyMSArNTI0LDIyIEBACiAKIC4uIG1ldGhvZDo6IFJlcXVlc3Quc2V0X3Byb3h5KGhvc3QsIHR5cGUpCiAKLSAgIFByZXBhcmUgdGhlIHJlcXVlc3QgYnkgY29ubmVjdGluZyB0byBhIHByb3h5IHNlcnZlci4gVGhlICpob3N0KiBhbmQgKnR5cGUqIHdpbGwKLSAgIHJlcGxhY2UgdGhvc2Ugb2YgdGhlIGluc3RhbmNlLCBhbmQgdGhlIGluc3RhbmNlJ3Mgc2VsZWN0b3Igd2lsbCBiZSB0aGUgb3JpZ2luYWwKLSAgIFVSTCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3IuCi0KLQogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0KCkKIAotICAgUmV0dXJuIHRoZSByZXF1ZXN0LWhvc3Qgb2YgdGhlIG9yaWdpbiB0cmFuc2FjdGlvbiwgYXMgZGVmaW5lZCBieSA6cmZjOmAyOTY1YC4KLSAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBSZXR1cm4gdGhlIHJlcXVlc3QtaG9zdCBvZiB0aGUgb3JpZ2luIHRyYW5zYWN0aW9uLCBhcyBkZWZpbmVkIGJ5CisgICA6cmZjOmAyOTY1YC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0Lm9yaWdpbl9yZXFfaG9zdGAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSgpCiAKICAgIFJldHVybiB3aGV0aGVyIHRoZSByZXF1ZXN0IGlzIHVudmVyaWZpYWJsZSwgYXMgZGVmaW5lZCBieSBSRkMgMjk2NS4gU2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgUmVxdWVzdGAgY29uc3RydWN0b3IuCisgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4gIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UKKyAgIDphdHRyOmBSZXF1ZXN0LnVudmVyaWZpYWJsZWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBfb3BlbmVyLWRpcmVjdG9yLW9iamVjdHM6CkBAIC0xMTM4LDE2ICsxMjAzLDE0IEBACiBgYHVybGxpYmBgIChhcyBvcHBvc2VkIHRvIGBgdXJsbGliMmBgKS4gIFRoZXkgbWlnaHQgYmVjb21lIGRlcHJlY2F0ZWQgYXQKIHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4KIAotCiAuLiBmdW5jdGlvbjo6IHVybHJldHJpZXZlKHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpCiAKLSAgIENvcHkgYSBuZXR3b3JrIG9iamVjdCBkZW5vdGVkIGJ5IGEgVVJMIHRvIGEgbG9jYWwgZmlsZSwgaWYgbmVjZXNzYXJ5LiBJZiB0aGUgVVJMCi0gICBwb2ludHMgdG8gYSBsb2NhbCBmaWxlLCBvciBhIHZhbGlkIGNhY2hlZCBjb3B5IG9mIHRoZSBvYmplY3QgZXhpc3RzLCB0aGUgb2JqZWN0Ci0gICBpcyBub3QgY29waWVkLiAgUmV0dXJuIGEgdHVwbGUgYGAoZmlsZW5hbWUsIGhlYWRlcnMpYGAgd2hlcmUgKmZpbGVuYW1lKiBpcyB0aGUKKyAgIENvcHkgYSBuZXR3b3JrIG9iamVjdCBkZW5vdGVkIGJ5IGEgVVJMIHRvIGEgbG9jYWwgZmlsZS4gSWYgdGhlIFVSTAorICAgcG9pbnRzIHRvIGEgbG9jYWwgZmlsZSwgdGhlIG9iamVjdCB3aWxsIG5vdCBiZSBjb3BpZWQgdW5sZXNzIGZpbGVuYW1lIGlzIHN1cHBsaWVkLgorICAgUmV0dXJuIGEgdHVwbGUgYGAoZmlsZW5hbWUsIGhlYWRlcnMpYGAgd2hlcmUgKmZpbGVuYW1lKiBpcyB0aGUKICAgIGxvY2FsIGZpbGUgbmFtZSB1bmRlciB3aGljaCB0aGUgb2JqZWN0IGNhbiBiZSBmb3VuZCwgYW5kICpoZWFkZXJzKiBpcyB3aGF0ZXZlcgogICAgdGhlIDptZXRoOmBpbmZvYCBtZXRob2Qgb2YgdGhlIG9iamVjdCByZXR1cm5lZCBieSA6ZnVuYzpgdXJsb3BlbmAgcmV0dXJuZWQgKGZvcgotICAgYSByZW1vdGUgb2JqZWN0LCBwb3NzaWJseSBjYWNoZWQpLiBFeGNlcHRpb25zIGFyZSB0aGUgc2FtZSBhcyBmb3IKLSAgIDpmdW5jOmB1cmxvcGVuYC4KKyAgIGEgcmVtb3RlIG9iamVjdCkuIEV4Y2VwdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvciA6ZnVuYzpgdXJsb3BlbmAuCiAKICAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvIChpZgogICAgYWJzZW50LCB0aGUgbG9jYXRpb24gd2lsbCBiZSBhIHRlbXBmaWxlIHdpdGggYSBnZW5lcmF0ZWQgbmFtZSkuIFRoZSB0aGlyZApAQCAtMTE1OCw2ICsxMjIxLDEzIEBACiAgICB0aGlyZCBhcmd1bWVudCBtYXkgYmUgYGAtMWBgIG9uIG9sZGVyIEZUUCBzZXJ2ZXJzIHdoaWNoIGRvIG5vdCByZXR1cm4gYSBmaWxlCiAgICBzaXplIGluIHJlc3BvbnNlIHRvIGEgcmV0cmlldmFsIHJlcXVlc3QuCiAKKyAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpbGx1c3RyYXRlcyB0aGUgbW9zdCBjb21tb24gdXNhZ2Ugc2NlbmFyaW86OgorCisgICAgICA+Pj4gaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgICA+Pj4gbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICAgID4+PiBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKyAgICAgID4+PiBodG1sLmNsb3NlKCkKKwogICAgSWYgdGhlICp1cmwqIHVzZXMgdGhlIDpmaWxlOmBodHRwOmAgc2NoZW1lIGlkZW50aWZpZXIsIHRoZSBvcHRpb25hbCAqZGF0YSoKICAgIGFyZ3VtZW50IG1heSBiZSBnaXZlbiB0byBzcGVjaWZ5IGEgYGBQT1NUYGAgcmVxdWVzdCAobm9ybWFsbHkgdGhlIHJlcXVlc3QKICAgIHR5cGUgaXMgYGBHRVRgYCkuICBUaGUgKmRhdGEqIGFyZ3VtZW50IG11c3QgYmUgYSBieXRlcyBvYmplY3QgaW4gc3RhbmRhcmQKQEAgLTExNzAsMjAgKzEyNDAsMjAgQEAKICAgIHRoZSAgZG93bmxvYWQgaXMgaW50ZXJydXB0ZWQuCiAKICAgIFRoZSAqQ29udGVudC1MZW5ndGgqIGlzIHRyZWF0ZWQgYXMgYSBsb3dlciBib3VuZDogaWYgdGhlcmUncyBtb3JlIGRhdGEgIHRvIHJlYWQsCi0gICA6ZnVuYzpgdXJscmV0cmlldmVgIHJlYWRzIG1vcmUgZGF0YSwgYnV0IGlmIGxlc3MgZGF0YSBpcyBhdmFpbGFibGUsICBpdCByYWlzZXMKLSAgIHRoZSBleGNlcHRpb24uCisgICB1cmxyZXRyaWV2ZSByZWFkcyBtb3JlIGRhdGEsIGJ1dCBpZiBsZXNzIGRhdGEgaXMgYXZhaWxhYmxlLCAgaXQgcmFpc2VzIHRoZQorICAgZXhjZXB0aW9uLgogCiAgICBZb3UgY2FuIHN0aWxsIHJldHJpZXZlIHRoZSBkb3dubG9hZGVkIGRhdGEgaW4gdGhpcyBjYXNlLCBpdCBpcyBzdG9yZWQgIGluIHRoZQogICAgOmF0dHI6YGNvbnRlbnRgIGF0dHJpYnV0ZSBvZiB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCi0gICBJZiBubyAqQ29udGVudC1MZW5ndGgqIGhlYWRlciB3YXMgc3VwcGxpZWQsIDpmdW5jOmB1cmxyZXRyaWV2ZWAgY2FuIG5vdCBjaGVjawotICAgdGhlIHNpemUgb2YgdGhlIGRhdGEgaXQgaGFzIGRvd25sb2FkZWQsIGFuZCBqdXN0IHJldHVybnMgaXQuICBJbiB0aGlzIGNhc2UKLSAgIHlvdSBqdXN0IGhhdmUgdG8gYXNzdW1lIHRoYXQgdGhlIGRvd25sb2FkIHdhcyBzdWNjZXNzZnVsLgorICAgSWYgbm8gKkNvbnRlbnQtTGVuZ3RoKiBoZWFkZXIgd2FzIHN1cHBsaWVkLCB1cmxyZXRyaWV2ZSBjYW4gbm90IGNoZWNrIHRoZSBzaXplCisgICBvZiB0aGUgZGF0YSBpdCBoYXMgZG93bmxvYWRlZCwgYW5kIGp1c3QgcmV0dXJucyBpdC4gIEluIHRoaXMgY2FzZSB5b3UganVzdCBoYXZlCisgICB0byBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwuCiAKIC4uIGZ1bmN0aW9uOjogdXJsY2xlYW51cCgpCiAKLSAgIENsZWFyIHRoZSBjYWNoZSB0aGF0IG1heSBoYXZlIGJlZW4gYnVpbHQgdXAgYnkgcHJldmlvdXMgY2FsbHMgdG8KLSAgIDpmdW5jOmB1cmxyZXRyaWV2ZWAuCisgICBDbGVhbnMgdXAgdGVtcG9yYXJ5IGZpbGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBsZWZ0IGJlaGluZCBieSBwcmV2aW91cworICAgY2FsbHMgdG8gOmZ1bmM6YHVybHJldHJpZXZlYC4KIAogLi4gY2xhc3M6OiBVUkxvcGVuZXIocHJveGllcz1Ob25lLCAqKng1MDkpCiAKQEAgLTEyMDcsNyArMTI3Nyw3IEBACiAgICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgc3VwcG9ydGVkIHRvIHByb3ZpZGUgYW4gIFNTTCBrZXkgYW5kIGNlcnRpZmljYXRlOwogICAgYm90aCBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgY2xpZW50IGF1dGhlbnRpY2F0aW9uLgogCi0gICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCisgICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCiAgICByZXR1cm5zIGFuIGVycm9yIGNvZGUuCiAKICAgICAuLiBtZXRob2Q6OiBvcGVuKGZ1bGx1cmwsIGRhdGE9Tm9uZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0IGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5OTk2MgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CkBAIC0wLDAgKzEsMTgwIEBACis6bW9kOmB2ZW52YCAtLS0gQ3JlYXRpb24gb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiB2ZW52CisgICA6c3lub3BzaXM6IENyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorLi4gbW9kdWxlYXV0aG9yOjogVmluYXkgU2FqaXAgPHZpbmF5X3NhamlwQHlhaG9vLmNvLnVrPgorLi4gc2VjdGlvbmF1dGhvcjo6IFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEB5YWhvby5jby51az4KKworCisuLiBpbmRleDo6IHBhaXI6IEVudmlyb25tZW50czsgdmlydHVhbAorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvdmVudi5weWAKKworLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBjcmVhdGluZyBsaWdodHdlaWdodCAidmlydHVhbAorZW52aXJvbm1lbnRzIiB3aXRoIHRoZWlyIG93biBzaXRlIGRpcmVjdG9yaWVzLCBvcHRpb25hbGx5IGlzb2xhdGVkIGZyb20gc3lzdGVtCitzaXRlIGRpcmVjdG9yaWVzLiAgRWFjaCB2aXJ0dWFsIGVudmlyb25tZW50IGhhcyBpdHMgb3duIFB5dGhvbiBiaW5hcnkgKGFsbG93aW5nCitjcmVhdGlvbiBvZiBlbnZpcm9ubWVudHMgd2l0aCB2YXJpb3VzIFB5dGhvbiB2ZXJzaW9ucykgYW5kIGNhbiBoYXZlIGl0cyBvd24KK2luZGVwZW5kZW50IHNldCBvZiBpbnN0YWxsZWQgUHl0aG9uIHBhY2thZ2VzIGluIGl0cyBzaXRlIGRpcmVjdG9yaWVzLgorCisKK0NyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmNsdWRlOjogL3VzaW5nL3ZlbnYtY3JlYXRlLmluYworCisKKy4uIF92ZW52LWRlZjoKKworLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCAoYWxzbyBjYWxsZWQgYSBgYHZlbnZgYCkgaXMgYSBQeXRob24KKyAgIGVudmlyb25tZW50IHN1Y2ggdGhhdCB0aGUgUHl0aG9uIGludGVycHJldGVyLCBsaWJyYXJpZXMgYW5kIHNjcmlwdHMKKyAgIGluc3RhbGxlZCBpbnRvIGl0IGFyZSBpc29sYXRlZCBmcm9tIHRob3NlIGluc3RhbGxlZCBpbiBvdGhlciB2aXJ0dWFsCisgICBlbnZpcm9ubWVudHMsIGFuZCAoYnkgZGVmYXVsdCkgYW55IGxpYnJhcmllcyBpbnN0YWxsZWQgaW4gYSAic3lzdGVtIiBQeXRob24sCisgICBpLmUuIG9uZSB3aGljaCBpcyBpbnN0YWxsZWQgYXMgcGFydCBvZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0uCisKKyAgIEEgdmVudiBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlIGZpbGVzIGFuZAorICAgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZlbnYuCisKKyAgIENvbW1vbiBpbnN0YWxsYXRpb24gdG9vbHMgc3VjaCBhcyBgYERpc3RyaWJ1dGVgYCBhbmQgYGBwaXBgYCB3b3JrIGFzCisgICBleHBlY3RlZCB3aXRoIHZlbnZzIC0gaS5lLiB3aGVuIGEgdmVudiBpcyBhY3RpdmUsIHRoZXkgaW5zdGFsbCBQeXRob24KKyAgIHBhY2thZ2VzIGludG8gdGhlIHZlbnYgd2l0aG91dCBuZWVkaW5nIHRvIGJlIHRvbGQgdG8gZG8gc28gZXhwbGljaXRseS4KKyAgIE9mIGNvdXJzZSwgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGVtIGludG8gdGhlIHZlbnYgZmlyc3Q6IHRoaXMgY291bGQgYmUKKyAgIGRvbmUgYnkgcnVubmluZyBgYGRpc3RyaWJ1dGVfc2V0dXAucHlgYCB3aXRoIHRoZSB2ZW52IGFjdGl2YXRlZCwKKyAgIGZvbGxvd2VkIGJ5IHJ1bm5pbmcgYGBlYXN5X2luc3RhbGwgcGlwYGAuIEFsdGVybmF0aXZlbHksIHlvdSBjb3VsZCBkb3dubG9hZAorICAgdGhlIHNvdXJjZSB0YXJiYWxscyBhbmQgcnVuIGBgcHl0aG9uIHNldHVwLnB5IGluc3RhbGxgYCBhZnRlciB1bnBhY2tpbmcsCisgICB3aXRoIHRoZSB2ZW52IGFjdGl2YXRlZC4KKworICAgV2hlbiBhIHZlbnYgaXMgYWN0aXZlIChpLmUuIHRoZSB2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUKKyAgIGF0dHJpYnV0ZXMgOmF0dHI6YHN5cy5wcmVmaXhgIGFuZCA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZQorICAgZGlyZWN0b3J5IG9mIHRoZSB2ZW52LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbgorICAgd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2ZW52LiBJZiBhIHZlbnYgaXMgbm90IGFjdGl2ZSwgdGhlbgorICAgOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCAodGhleQorICAgYWxsIHBvaW50IHRvIGEgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbikuCisKKworQVBJCistLS0KKworLi4gaGlnaGxpZ2h0OjogcHl0aG9uCisKK1RoZSBoaWdoLWxldmVsIG1ldGhvZCBkZXNjcmliZWQgYWJvdmUgbWFrZXMgdXNlIG9mIGEgc2ltcGxlIEFQSSB3aGljaCBwcm92aWRlcworbWVjaGFuaXNtcyBmb3IgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCBjcmVhdG9ycyB0byBjdXN0b21pemUgZW52aXJvbm1lbnQKK2NyZWF0aW9uIGFjY29yZGluZyB0byB0aGVpciBuZWVkcywgdGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MuCisKKy4uIGNsYXNzOjogRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlKQorCisgICAgVGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIG9uCisgICAgaW5zdGFudGlhdGlvbjoKKworICAgICogYGBzeXN0ZW1fc2l0ZV9wYWNrYWdlc2BgIC0tIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgdGhlIHN5c3RlbSBQeXRob24KKyAgICAgIHNpdGUtcGFja2FnZXMgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byB0aGUgZW52aXJvbm1lbnQgKGRlZmF1bHRzIHRvIGBgRmFsc2VgYCkuCisKKyAgICAqIGBgY2xlYXJgYCAtLSBhIEJvb2xlYW4gdmFsdWUgd2hpY2gsIGlmIFRydWUsIHdpbGwgZGVsZXRlIGFueSBleGlzdGluZyB0YXJnZXQKKyAgICAgIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uIChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisgICAgKiBgYHN5bWxpbmtzYGAgLS0gYSBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0byBhdHRlbXB0IHRvIHN5bWxpbmsgdGhlCisgICAgICBQeXRob24gYmluYXJ5IChhbmQgYW55IG5lY2Vzc2FyeSBETExzIG9yIG90aGVyIGJpbmFyaWVzLAorICAgICAgZS5nLiBgYHB5dGhvbncuZXhlYGApLCByYXRoZXIgdGhhbiBjb3B5aW5nLiBEZWZhdWx0cyB0byBgYFRydWVgYCBvbiBMaW51eCBhbmQKKyAgICAgIFVuaXggc3lzdGVtcywgYnV0IGBgRmFsc2VgYCBvbiBXaW5kb3dzLgorCisgICAgKiBgYHVwZ3JhZGVgYCAtLSBhIEJvb2xlYW4gdmFsdWUgd2hpY2gsIGlmIFRydWUsIHdpbGwgdXBncmFkZSBhbiBleGlzdGluZworICAgICAgZW52aXJvbm1lbnQgd2l0aCB0aGUgcnVubmluZyBQeXRob24gLSBmb3IgdXNlIHdoZW4gdGhhdCBQeXRob24gaGFzIGJlZW4KKyAgICAgIHVwZ3JhZGVkIGluLXBsYWNlIChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisKKworICAgIENyZWF0b3JzIG9mIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgdG9vbHMgd2lsbCBiZSBmcmVlIHRvIHVzZSB0aGUKKyAgICBwcm92aWRlZCBgYEVudkJ1aWxkZXJgYCBjbGFzcyBhcyBhIGJhc2UgY2xhc3MuCisKKyAgICBUaGUgcmV0dXJuZWQgZW52LWJ1aWxkZXIgaXMgYW4gb2JqZWN0IHdoaWNoIGhhcyBhIG1ldGhvZCwgYGBjcmVhdGVgYDoKKworICAgIC4uIG1ldGhvZDo6IGNyZWF0ZShlbnZfZGlyKQorCisgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGFzIHJlcXVpcmVkIGFyZ3VtZW50IHRoZSBwYXRoIChhYnNvbHV0ZSBvciByZWxhdGl2ZSB0bworICAgICAgICB0aGUgY3VycmVudCBkaXJlY3RvcnkpIG9mIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHdoaWNoIGlzIHRvIGNvbnRhaW4gdGhlCisgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuICBUaGUgYGBjcmVhdGVgYCBtZXRob2Qgd2lsbCBlaXRoZXIgY3JlYXRlIHRoZQorICAgICAgICBlbnZpcm9ubWVudCBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSwgb3IgcmFpc2UgYW4gYXBwcm9wcmlhdGUKKyAgICAgICAgZXhjZXB0aW9uLgorCisgICAgICAgIFRoZSBgYGNyZWF0ZWBgIG1ldGhvZCBvZiB0aGUgYGBFbnZCdWlsZGVyYGAgY2xhc3MgaWxsdXN0cmF0ZXMgdGhlIGhvb2tzCisgICAgICAgIGF2YWlsYWJsZSBmb3Igc3ViY2xhc3MgY3VzdG9taXphdGlvbjo6CisKKyAgICAgICAgICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgQ3JlYXRlIGEgdmlydHVhbGl6ZWQgUHl0aG9uIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIGVudl9kaXIgaXMgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIGVudl9kaXIgPSBvcy5wYXRoLmFic3BhdGgoZW52X2RpcikKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gc2VsZi5jcmVhdGVfZGlyZWN0b3JpZXMoZW52X2RpcikKKyAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5zZXR1cF9weXRob24oY29udGV4dCkKKyAgICAgICAgICAgICAgICBzZWxmLnNldHVwX3NjcmlwdHMoY29udGV4dCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3Rfc2V0dXAoY29udGV4dCkKKworICAgICAgICBFYWNoIG9mIHRoZSBtZXRob2RzIDptZXRoOmBjcmVhdGVfZGlyZWN0b3JpZXNgLAorICAgICAgICA6bWV0aDpgY3JlYXRlX2NvbmZpZ3VyYXRpb25gLCA6bWV0aDpgc2V0dXBfcHl0aG9uYCwKKyAgICAgICAgOm1ldGg6YHNldHVwX3NjcmlwdHNgIGFuZCA6bWV0aDpgcG9zdF9zZXR1cGAgY2FuIGJlIG92ZXJyaWRkZW4uCisKKyAgICAuLiBtZXRob2Q6OiBjcmVhdGVfZGlyZWN0b3JpZXMoZW52X2RpcikKKworICAgICAgICBDcmVhdGVzIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgYW5kIGFsbCBuZWNlc3NhcnkgZGlyZWN0b3JpZXMsIGFuZAorICAgICAgICByZXR1cm5zIGEgY29udGV4dCBvYmplY3QuICBUaGlzIGlzIGp1c3QgYSBob2xkZXIgZm9yIGF0dHJpYnV0ZXMgKHN1Y2ggYXMKKyAgICAgICAgcGF0aHMpLCBmb3IgdXNlIGJ5IHRoZSBvdGhlciBtZXRob2RzLgorCisgICAgLi4gbWV0aG9kOjogY3JlYXRlX2NvbmZpZ3VyYXRpb24oY29udGV4dCkKKworICAgICAgICBDcmVhdGVzIHRoZSBgYHB5dmVudi5jZmdgYCBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogc2V0dXBfcHl0aG9uKGNvbnRleHQpCisKKyAgICAgICAgQ3JlYXRlcyBhIGNvcHkgb2YgdGhlIFB5dGhvbiBleGVjdXRhYmxlIChhbmQsIHVuZGVyIFdpbmRvd3MsIERMTHMpIGluCisgICAgICAgIHRoZSBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IHNldHVwX3NjcmlwdHMoY29udGV4dCkKKworICAgICAgICBJbnN0YWxscyBhY3RpdmF0aW9uIHNjcmlwdHMgYXBwcm9wcmlhdGUgdG8gdGhlIHBsYXRmb3JtIGludG8gdGhlIHZpcnR1YWwKKyAgICAgICAgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBwb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICAgICAgQSBwbGFjZWhvbGRlciBtZXRob2Qgd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhpcmQgcGFydHkKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIHRvIHByZS1pbnN0YWxsIHBhY2thZ2VzIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IG9yCisgICAgICAgIHBlcmZvcm0gb3RoZXIgcG9zdC1jcmVhdGlvbiBzdGVwcy4KKworICAgIEluIGFkZGl0aW9uLCA6Y2xhc3M6YEVudkJ1aWxkZXJgIHByb3ZpZGVzIHRoaXMgdXRpbGl0eSBtZXRob2QgdGhhdCBjYW4gYmUKKyAgICBjYWxsZWQgZnJvbSA6bWV0aDpgc2V0dXBfc2NyaXB0c2Agb3IgOm1ldGg6YHBvc3Rfc2V0dXBgIGluIHN1YmNsYXNzZXMgdG8KKyAgICBhc3Npc3QgaW4gaW5zdGFsbGluZyBjdXN0b20gc2NyaXB0cyBpbnRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogaW5zdGFsbF9zY3JpcHRzKGNvbnRleHQsIHBhdGgpCisKKyAgICAgICAgKnBhdGgqIGlzIHRoZSBwYXRoIHRvIGEgZGlyZWN0b3J5IHRoYXQgc2hvdWxkIGNvbnRhaW4gc3ViZGlyZWN0b3JpZXMKKyAgICAgICAgImNvbW1vbiIsICJwb3NpeCIsICJudCIsIGVhY2ggY29udGFpbmluZyBzY3JpcHRzIGRlc3RpbmVkIGZvciB0aGUgYmluCisgICAgICAgIGRpcmVjdG9yeSBpbiB0aGUgZW52aXJvbm1lbnQuICBUaGUgY29udGVudHMgb2YgImNvbW1vbiIgYW5kIHRoZQorICAgICAgICBkaXJlY3RvcnkgY29ycmVzcG9uZGluZyB0byA6ZGF0YTpgb3MubmFtZWAgYXJlIGNvcGllZCBhZnRlciBzb21lIHRleHQKKyAgICAgICAgcmVwbGFjZW1lbnQgb2YgcGxhY2Vob2xkZXJzOgorCisgICAgICAgICogYGBfX1ZFTlZfRElSX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBlbnZpcm9ubWVudAorICAgICAgICAgIGRpcmVjdG9yeS4KKworICAgICAgICAqIGBgX19WRU5WX05BTUVfX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIGVudmlyb25tZW50IG5hbWUgKGZpbmFsIHBhdGgKKyAgICAgICAgICBzZWdtZW50IG9mIGVudmlyb25tZW50IGRpcmVjdG9yeSkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9CSU5fTkFNRV9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgYmluIGRpcmVjdG9yeQorICAgICAgICAgIChlaXRoZXIgYGBiaW5gYCBvciBgYFNjcmlwdHNgYCkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9QWVRIT05fX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIGFic29sdXRlIHBhdGggb2YgdGhlCisgICAgICAgICAgZW52aXJvbm1lbnQncyBleGVjdXRhYmxlLgorCisKK1RoZXJlIGlzIGFsc28gYSBtb2R1bGUtbGV2ZWwgY29udmVuaWVuY2UgZnVuY3Rpb246CisKKy4uIGZ1bmN0aW9uOjogY3JlYXRlKGVudl9kaXIsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgc3ltbGlua3M9RmFsc2UpCisKKyAgICBDcmVhdGUgYW4gOmNsYXNzOmBFbnZCdWlsZGVyYCB3aXRoIHRoZSBnaXZlbiBrZXl3b3JkIGFyZ3VtZW50cywgYW5kIGNhbGwgaXRzCisgICAgOm1ldGg6YH5FbnZCdWlsZGVyLmNyZWF0ZWAgbWV0aG9kIHdpdGggdGhlICplbnZfZGlyKiBhcmd1bWVudC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAppbmRleCA4YWYxOWEyLi44Mzg3ZjVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CkBAIC0zMzksOCArMzM5LDcgQEAKICAgIFdyaXRlIGEgd2FybmluZyB0byBhIGZpbGUuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscwogICAgYGBmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKWBgIGFuZCB3cml0ZXMgdGhlCiAgICByZXN1bHRpbmcgc3RyaW5nIHRvICpmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gYGBzeXMuc3RkZXJyYGAuICBZb3UgbWF5IHJlcGxhY2UKLSAgIHRoaXMgZnVuY3Rpb24gd2l0aCBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBieSBhc3NpZ25pbmcgdG8KLSAgIGBgd2FybmluZ3Muc2hvd3dhcm5pbmdgYC4KKyAgIHRoaXMgZnVuY3Rpb24gd2l0aCBhbnkgY2FsbGFibGUgYnkgYXNzaWduaW5nIHRvIGBgd2FybmluZ3Muc2hvd3dhcm5pbmdgYC4KICAgICpsaW5lKiBpcyBhIGxpbmUgb2Ygc291cmNlIGNvZGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHdhcm5pbmcKICAgIG1lc3NhZ2U7IGlmICpsaW5lKiBpcyBub3Qgc3VwcGxpZWQsIDpmdW5jOmBzaG93d2FybmluZ2Agd2lsbAogICAgdHJ5IHRvIHJlYWQgdGhlIGxpbmUgc3BlY2lmaWVkIGJ5ICpmaWxlbmFtZSogYW5kICpsaW5lbm8qLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QgYi9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdAppbmRleCBiMmRjZjhmLi45YzJiM2FiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS93ZWJicm93c2VyLnJzdApAQCAtOTgsNDcgKzk4LDU1IEBACiBtYXkgYmUgcGFzc2VkIHRvIHRoZSA6ZnVuYzpgZ2V0YCBmdW5jdGlvbiBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5zdGFudGlhdGlvbnMKIGZvciB0aGUgY29udHJvbGxlciBjbGFzc2VzLCBhbGwgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZS4KIAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IFR5cGUgTmFtZSAgICAgICAgICAgICB8IENsYXNzIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KwotfCBgYCdtb3ppbGxhJ2BgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZmlyZWZveCdgYCAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ25ldHNjYXBlJ2BgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbmV0c2NhcGUnKWAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdnYWxlb24nYGAgICAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZ2FsZW9uJylgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZXBpcGhhbnknYGAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2VwaXBoYW55JylgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3NraXBzdG9uZSdgYCAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ3NraXBzdG9uZScpYCB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdrZm1jbGllbnQnYGAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAna29ucXVlcm9yJ2BgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2tmbSdgYCAgICAgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdtb3NhaWMnYGAgICAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdtb3NhaWMnKWAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnb3BlcmEnYGAgICAgICAgICAgIHwgOmNsYXNzOmBPcGVyYSgpYCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2dyYWlsJ2BgICAgICAgICAgICB8IDpjbGFzczpgR3JhaWwoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdsaW5rcydgYCAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdsaW5rcycpYCAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZWxpbmtzJ2BgICAgICAgICAgIHwgOmNsYXNzOmBFbGlua3MoJ2VsaW5rcycpYCAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2x5bngnYGAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2x5bngnKWAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCd3M20nYGAgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCd3M20nKWAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnd2luZG93cy1kZWZhdWx0J2BgIHwgOmNsYXNzOmBXaW5kb3dzRGVmYXVsdGAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ21hY29zeCdgYCAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdkZWZhdWx0JylgICAgICAgICAgICAgICB8IFwoMykgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdzYWZhcmknYGAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnc2FmYXJpJylgICAgICAgICAgICAgICAgfCBcKDMpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgVHlwZSBOYW1lICAgICAgICAgICAgICB8IENsYXNzIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAnbW96aWxsYSdgYCAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZmlyZWZveCdgYCAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbmV0c2NhcGUnYGAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbmV0c2NhcGUnKWAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZ2FsZW9uJ2BgICAgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdnYWxlb24nKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZXBpcGhhbnknYGAgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdlcGlwaGFueScpYCAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnc2tpcHN0b25lJ2BgICAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ3NraXBzdG9uZScpYCB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAna2ZtY2xpZW50J2BgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAna29ucXVlcm9yJ2BgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAna2ZtJ2BgICAgICAgICAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbW9zYWljJ2BgICAgICAgICAgICB8IDpjbGFzczpgQmFja2dyb3VuZEJyb3dzZXIoJ21vc2FpYycpYCAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnb3BlcmEnYGAgICAgICAgICAgICB8IDpjbGFzczpgT3BlcmEoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZ3JhaWwnYGAgICAgICAgICAgICB8IDpjbGFzczpgR3JhaWwoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbGlua3MnYGAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2xpbmtzJylgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZWxpbmtzJ2BgICAgICAgICAgICB8IDpjbGFzczpgRWxpbmtzKCdlbGlua3MnKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbHlueCdgYCAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ2x5bngnKWAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAndzNtJ2BgICAgICAgICAgICAgICB8IDpjbGFzczpgR2VuZXJpY0Jyb3dzZXIoJ3czbScpYCAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnd2luZG93cy1kZWZhdWx0J2BgICB8IDpjbGFzczpgV2luZG93c0RlZmF1bHRgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbWFjb3N4J2BgICAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdkZWZhdWx0JylgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnc2FmYXJpJ2BgICAgICAgICAgICB8IDpjbGFzczpgTWFjT1NYKCdzYWZhcmknKWAgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZ29vZ2xlLWNocm9tZSdgYCAgICB8IDpjbGFzczpgQ2hyb21lKCdnb29nbGUtY2hyb21lJylgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnY2hyb21lJ2BgICAgICAgICAgICB8IDpjbGFzczpgQ2hyb21lKCdjaHJvbWUnKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnY2hyb21pdW0nYGAgICAgICAgICB8IDpjbGFzczpgQ2hyb21pdW0oJ2Nocm9taXVtJylgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnY2hyb21pdW0tYnJvd3NlcidgYCB8IDpjbGFzczpgQ2hyb21pdW0oJ2Nocm9taXVtLWJyb3dzZXInKWAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAogTm90ZXM6CiAKQEAgLTE1NSwxMiArMTYzLDE1IEBACiAoMykKICAgIE9ubHkgb24gTWFjIE9TIFggcGxhdGZvcm0uCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgU3VwcG9ydCBmb3IgQ2hyb21lL0Nocm9taXVtIGhhcyBiZWVuIGFkZGVkLgorCiBIZXJlIGFyZSBzb21lIHNpbXBsZSBleGFtcGxlczo6CiAKLSAgIHVybCA9ICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvJworICAgdXJsID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJwogCiAgICAjIE9wZW4gVVJMIGluIGEgbmV3IHRhYiwgaWYgYSBicm93c2VyIHdpbmRvdyBpcyBhbHJlYWR5IG9wZW4uCi0gICB3ZWJicm93c2VyLm9wZW5fbmV3X3RhYih1cmwgKyAnZG9jLycpCisgICB3ZWJicm93c2VyLm9wZW5fbmV3X3RhYih1cmwpCiAKICAgICMgT3BlbiBVUkwgaW4gbmV3IHdpbmRvdywgcmFpc2luZyB0aGUgd2luZG93IGlmIHBvc3NpYmxlLgogICAgd2ViYnJvd3Nlci5vcGVuX25ldyh1cmwpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0IGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAppbmRleCBlNDliNTFiLi5hODc4ZGEyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKQEAgLTM4LDcgKzM4LDExIEBACiAgICAqa2V5KiBpcyB0aGUgcHJlZGVmaW5lZCBoYW5kbGUgdG8gY29ubmVjdCB0by4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LiBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGEKLSAgIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGZ1bmN0aW9uOjogQ3JlYXRlS2V5KGtleSwgc3ViX2tleSkKQEAgLTU3LDcgKzYxLDExIEBACiAgICBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBmdW5jdGlvbjo6IENyZWF0ZUtleUV4KGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQ9MCwgYWNjZXNzPUtFWV9BTExfQUNDRVNTKQpAQCAtODIsMTAgKzkwLDE0IEBACiAgICBJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXkuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBEZWxldGVLZXkoa2V5LCBzdWJfa2V5KQogCkBAIC0xMDAsNyArMTEyLDExIEBACiAgICAqVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuKgogCiAgICBJZiB0aGUgbWV0aG9kIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLCBpcyByZW1vdmVkLgotICAgSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGZ1bmN0aW9uOjogRGVsZXRlS2V5RXgoa2V5LCBzdWJfa2V5LCBhY2Nlc3M9S0VZX0FMTF9BQ0NFU1MsIHJlc2VydmVkPTApCkBAIC0xMjksMTIgKzE0NSwxNiBAQAogICAgKlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLioKIAogICAgSWYgdGhlIG1ldGhvZCBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywgaXMKLSAgIHJlbW92ZWQuIElmIHRoZSBtZXRob2QgZmFpbHMsIGEgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgcmVtb3ZlZC4gSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgogCiAgICBPbiB1bnN1cHBvcnRlZCBXaW5kb3dzIHZlcnNpb25zLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyByYWlzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IERlbGV0ZVZhbHVlKGtleSwgdmFsdWUpCiAKQEAgLTE1Niw5ICsxNzYsMTMgQEAKICAgICppbmRleCogaXMgYW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIGluZGV4IG9mIHRoZSBrZXkgdG8gcmV0cmlldmUuCiAKICAgIFRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiAgSXQgaXMKLSAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzCisgICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMKICAgIHJhaXNlZCwgaW5kaWNhdGluZywgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBFbnVtVmFsdWUoa2V5LCBpbmRleCkKIApAQCAtMTcwLDcgKzE5NCw3IEBACiAgICAqaW5kZXgqIGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUgdmFsdWUgdG8gcmV0cmlldmUuCiAKICAgIFRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiBJdCBpcwotICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzCisgICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHksIHVudGlsIGEgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzCiAgICByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuCiAKICAgIFRoZSByZXN1bHQgaXMgYSB0dXBsZSBvZiAzIGl0ZW1zOgpAQCAtMTg5LDYgKzIxMywxMCBAQAogICAgfCAgICAgICB8IDptZXRoOmBTZXRWYWx1ZUV4YCkgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3Moc3RyKQogCkBAIC0yNjAsOSArMjg4LDE0IEBACiAKICAgIFRoZSByZXN1bHQgaXMgYSBuZXcgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQga2V5LgogCi0gICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIDpleGM6YFdpbmRvd3NFcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFsbG93IHRoZSB1c2Ugb2YgbmFtZWQgYXJndW1lbnRzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFsbG93IHRoZSB1c2Ugb2YgbmFtZWQgYXJndW1lbnRzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBmdW5jdGlvbjo6IE9wZW5LZXlFeCgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdCBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CmluZGV4IDFmZDM0NTEuLjFjZWYyZTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CkBAIC02MDksNiArNjA5LDkgQEAKICAgICAgIGFzIDpjbGFzczpgQmFzZUNHSUhhbmRsZXJgIGFuZCA6Y2xhc3M6YENHSUhhbmRsZXJgKSB0aGF0IGFyZSBub3QgSFRUUCBvcmlnaW4KICAgICAgIHNlcnZlcnMuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgdGVybSAiUHl0aG9uIiBpcyByZXBsYWNlZCB3aXRoIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZQorICAgICAgICAgIkNQeXRob24iLCAiSnl0aG9uIiBldGMuCiAKICAgIC4uIG1ldGhvZDo6IEJhc2VIYW5kbGVyLmdldF9zY2hlbWUoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0IGIvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdAppbmRleCBhZTI4NmIwLi5hNWM2ZmIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKQEAgLTE0NywxMiArMTQ3LDcgQEAKICAgIHRoZSBET00gbm9kZS4KIAogICAgV2l0aCBhbiBleHBsaWNpdCAqZW5jb2RpbmcqIFsxXV8gYXJndW1lbnQsIHRoZSByZXN1bHQgaXMgYSBieXRlCi0gICBzdHJpbmcgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZy4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91Ci0gICBhbHdheXMgc3BlY2lmeSBhbiBlbmNvZGluZzsgeW91IG1heSB1c2UgYW55IGVuY29kaW5nIHlvdSBsaWtlLCBidXQKLSAgIGFuIGFyZ3VtZW50IG9mICJ1dGYtOCIgaXMgdGhlIG1vc3QgY29tbW9uIGNob2ljZSwgYXZvaWRpbmcKLSAgIDpleGM6YFVuaWNvZGVFcnJvcmAgZXhjZXB0aW9ucyBpbiBjYXNlIG9mIHVucmVwcmVzZW50YWJsZSB0ZXh0Ci0gICBkYXRhLgotCisgICBzdHJpbmcgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZy4KICAgIFdpdGggbm8gKmVuY29kaW5nKiBhcmd1bWVudCwgdGhlIHJlc3VsdCBpcyBhIFVuaWNvZGUgc3RyaW5nLCBhbmQgdGhlCiAgICBYTUwgZGVjbGFyYXRpb24gaW4gdGhlIHJlc3VsdGluZyBzdHJpbmcgZG9lcyBub3Qgc3BlY2lmeSBhbgogICAgZW5jb2RpbmcuIEVuY29kaW5nIHRoaXMgc3RyaW5nIGluIGFuIGVuY29kaW5nIG90aGVyIHRoYW4gVVRGLTggaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QgYi9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CmluZGV4IGM1Yzg4MDIuLjE2YmIwMGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdApAQCAtNSw0OSArNSwzMjEgQEAKICAgIDpzeW5vcHNpczogSW1wbGVtZW50YXRpb24gb2YgdGhlIEVsZW1lbnRUcmVlIEFQSS4KIC4uIG1vZHVsZWF1dGhvcjo6IEZyZWRyaWsgTHVuZGggPGZyZWRyaWtAcHl0aG9ud2FyZS5jb20+CiAKLSoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weWAKK1RoZSA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG1vZHVsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGFuZCBlZmZpY2llbnQgQVBJCitmb3IgcGFyc2luZyBhbmQgY3JlYXRpbmcgWE1MIGRhdGEuCiAKLS0tLS0tLS0tLS0tLS0tCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhpcyBtb2R1bGUgd2lsbCB1c2UgYSBmYXN0IGltcGxlbWVudGF0aW9uIHdoZW5ldmVyIGF2YWlsYWJsZS4KKyAgIFRoZSA6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYCBtb2R1bGUgaXMgZGVwcmVjYXRlZC4KIAotVGhlIDpjbGFzczpgRWxlbWVudGAgdHlwZSBpcyBhIGZsZXhpYmxlIGNvbnRhaW5lciBvYmplY3QsIGRlc2lnbmVkIHRvIHN0b3JlCi1oaWVyYXJjaGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGluIG1lbW9yeS4gIFRoZSB0eXBlIGNhbiBiZSBkZXNjcmliZWQgYXMgYSBjcm9zcwotYmV0d2VlbiBhIGxpc3QgYW5kIGEgZGljdGlvbmFyeS4KK1R1dG9yaWFsCistLS0tLS0tLQogCi1FYWNoIGVsZW1lbnQgaGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIGl0OgorVGhpcyBpcyBhIHNob3J0IHR1dG9yaWFsIGZvciB1c2luZyA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIChgYEVUYGAgaW4KK3Nob3J0KS4gIFRoZSBnb2FsIGlzIHRvIGRlbW9uc3RyYXRlIHNvbWUgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrcyBhbmQgYmFzaWMKK2NvbmNlcHRzIG9mIHRoZSBtb2R1bGUuCiAKLSogYSB0YWcgd2hpY2ggaXMgYSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hhdCBraW5kIG9mIGRhdGEgdGhpcyBlbGVtZW50IHJlcHJlc2VudHMKLSAgKHRoZSBlbGVtZW50IHR5cGUsIGluIG90aGVyIHdvcmRzKS4KK1hNTCB0cmVlIGFuZCBlbGVtZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLSogYSBudW1iZXIgb2YgYXR0cmlidXRlcywgc3RvcmVkIGluIGEgUHl0aG9uIGRpY3Rpb25hcnkuCitYTUwgaXMgYW4gaW5oZXJlbnRseSBoaWVyYXJjaGljYWwgZGF0YSBmb3JtYXQsIGFuZCB0aGUgbW9zdCBuYXR1cmFsIHdheSB0bworcmVwcmVzZW50IGl0IGlzIHdpdGggYSB0cmVlLiAgYGBFVGBgIGhhcyB0d28gY2xhc3NlcyBmb3IgdGhpcyBwdXJwb3NlIC0KKzpjbGFzczpgRWxlbWVudFRyZWVgIHJlcHJlc2VudHMgdGhlIHdob2xlIFhNTCBkb2N1bWVudCBhcyBhIHRyZWUsIGFuZAorOmNsYXNzOmBFbGVtZW50YCByZXByZXNlbnRzIGEgc2luZ2xlIG5vZGUgaW4gdGhpcyB0cmVlLiAgSW50ZXJhY3Rpb25zIHdpdGgKK3RoZSB3aG9sZSBkb2N1bWVudCAocmVhZGluZyBhbmQgd3JpdGluZyB0by9mcm9tIGZpbGVzKSBhcmUgdXN1YWxseSBkb25lCitvbiB0aGUgOmNsYXNzOmBFbGVtZW50VHJlZWAgbGV2ZWwuICBJbnRlcmFjdGlvbnMgd2l0aCBhIHNpbmdsZSBYTUwgZWxlbWVudAorYW5kIGl0cyBzdWItZWxlbWVudHMgYXJlIGRvbmUgb24gdGhlIDpjbGFzczpgRWxlbWVudGAgbGV2ZWwuCiAKLSogYSB0ZXh0IHN0cmluZy4KKy4uIF9lbGVtZW50dHJlZS1wYXJzaW5nLXhtbDoKIAotKiBhbiBvcHRpb25hbCB0YWlsIHN0cmluZy4KK1BhcnNpbmcgWE1MCiteXl5eXl5eXl5eXgogCi0qIGEgbnVtYmVyIG9mIGNoaWxkIGVsZW1lbnRzLCBzdG9yZWQgaW4gYSBQeXRob24gc2VxdWVuY2UKK1dlJ2xsIGJlIHVzaW5nIHRoZSBmb2xsb3dpbmcgWE1MIGRvY3VtZW50IGFzIHRoZSBzYW1wbGUgZGF0YSBmb3IgdGhpcyBzZWN0aW9uOgogCi1UbyBjcmVhdGUgYW4gZWxlbWVudCBpbnN0YW5jZSwgdXNlIHRoZSA6Y2xhc3M6YEVsZW1lbnRgIGNvbnN0cnVjdG9yIG9yIHRoZQotOmZ1bmM6YFN1YkVsZW1lbnRgIGZhY3RvcnkgZnVuY3Rpb24uCisuLiBjb2RlLWJsb2NrOjogeG1sCiAKLVRoZSA6Y2xhc3M6YEVsZW1lbnRUcmVlYCBjbGFzcyBjYW4gYmUgdXNlZCB0byB3cmFwIGFuIGVsZW1lbnQgc3RydWN0dXJlLCBhbmQKLWNvbnZlcnQgaXQgZnJvbSBhbmQgdG8gWE1MLgorICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+CisgICA8ZGF0YT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJMaWVjaHRlbnN0ZWluIj4KKyAgICAgICAgICAgPHJhbms+MTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAwODwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjE0MTEwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJBdXN0cmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IlN3aXR6ZXJsYW5kIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iU2luZ2Fwb3JlIj4KKyAgICAgICAgICAgPHJhbms+NDwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjU5OTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9Ik1hbGF5c2lhIiBkaXJlY3Rpb249Ik4iLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iUGFuYW1hIj4KKyAgICAgICAgICAgPHJhbms+Njg8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xMzYwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb3N0YSBSaWNhIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvbG9tYmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICA8L2NvdW50cnk+CisgICA8L2RhdGE+CiAKLUEgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIEFQSSBpcyBhdmFpbGFibGUgYXMgOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAuCitXZSBjYW4gaW1wb3J0IHRoaXMgZGF0YSBieSByZWFkaW5nIGZyb20gYSBmaWxlOjoKKworICAgaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVAorICAgdHJlZSA9IEVULnBhcnNlKCdjb3VudHJ5X2RhdGEueG1sJykKKyAgIHJvb3QgPSB0cmVlLmdldHJvb3QoKQorCitPciBkaXJlY3RseSBmcm9tIGEgc3RyaW5nOjoKKworICAgcm9vdCA9IEVULmZyb21zdHJpbmcoY291bnRyeV9kYXRhX2FzX3N0cmluZykKKworOmZ1bmM6YGZyb21zdHJpbmdgIHBhcnNlcyBYTUwgZnJvbSBhIHN0cmluZyBkaXJlY3RseSBpbnRvIGFuIDpjbGFzczpgRWxlbWVudGAsCit3aGljaCBpcyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoZSBwYXJzZWQgdHJlZS4gIE90aGVyIHBhcnNpbmcgZnVuY3Rpb25zIG1heQorY3JlYXRlIGFuIDpjbGFzczpgRWxlbWVudFRyZWVgLiAgQ2hlY2sgdGhlIGRvY3VtZW50YXRpb24gdG8gYmUgc3VyZS4KKworQXMgYW4gOmNsYXNzOmBFbGVtZW50YCwgYGByb290YGAgaGFzIGEgdGFnIGFuZCBhIGRpY3Rpb25hcnkgb2YgYXR0cmlidXRlczo6CisKKyAgID4+PiByb290LnRhZworICAgJ2RhdGEnCisgICA+Pj4gcm9vdC5hdHRyaWIKKyAgIHt9CisKK0l0IGFsc28gaGFzIGNoaWxkcmVuIG5vZGVzIG92ZXIgd2hpY2ggd2UgY2FuIGl0ZXJhdGU6OgorCisgICA+Pj4gZm9yIGNoaWxkIGluIHJvb3Q6CisgICAuLi4gICBwcmludChjaGlsZC50YWcsIGNoaWxkLmF0dHJpYikKKyAgIC4uLgorICAgY291bnRyeSB7J25hbWUnOiAnTGllY2h0ZW5zdGVpbid9CisgICBjb3VudHJ5IHsnbmFtZSc6ICdTaW5nYXBvcmUnfQorICAgY291bnRyeSB7J25hbWUnOiAnUGFuYW1hJ30KKworQ2hpbGRyZW4gYXJlIG5lc3RlZCwgYW5kIHdlIGNhbiBhY2Nlc3Mgc3BlY2lmaWMgY2hpbGQgbm9kZXMgYnkgaW5kZXg6OgorCisgICA+Pj4gcm9vdFswXVsxXS50ZXh0CisgICAnMjAwOCcKKworRmluZGluZyBpbnRlcmVzdGluZyBlbGVtZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCis6Y2xhc3M6YEVsZW1lbnRgIGhhcyBzb21lIHVzZWZ1bCBtZXRob2RzIHRoYXQgaGVscCBpdGVyYXRlIHJlY3Vyc2l2ZWx5IG92ZXIgYWxsCit0aGUgc3ViLXRyZWUgYmVsb3cgaXQgKGl0cyBjaGlsZHJlbiwgdGhlaXIgY2hpbGRyZW4sIGFuZCBzbyBvbikuICBGb3IgZXhhbXBsZSwKKzptZXRoOmBFbGVtZW50Lml0ZXJgOjoKKworICAgPj4+IGZvciBuZWlnaGJvciBpbiByb290Lml0ZXIoJ25laWdoYm9yJyk6CisgICAuLi4gICBwcmludChuZWlnaGJvci5hdHRyaWIpCisgICAuLi4KKyAgIHsnbmFtZSc6ICdBdXN0cmlhJywgJ2RpcmVjdGlvbic6ICdFJ30KKyAgIHsnbmFtZSc6ICdTd2l0emVybGFuZCcsICdkaXJlY3Rpb24nOiAnVyd9CisgICB7J25hbWUnOiAnTWFsYXlzaWEnLCAnZGlyZWN0aW9uJzogJ04nfQorICAgeyduYW1lJzogJ0Nvc3RhIFJpY2EnLCAnZGlyZWN0aW9uJzogJ1cnfQorICAgeyduYW1lJzogJ0NvbG9tYmlhJywgJ2RpcmVjdGlvbic6ICdFJ30KKworOm1ldGg6YEVsZW1lbnQuZmluZGFsbGAgZmluZHMgb25seSBlbGVtZW50cyB3aXRoIGEgdGFnIHdoaWNoIGFyZSBkaXJlY3QKK2NoaWxkcmVuIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQuICA6bWV0aDpgRWxlbWVudC5maW5kYCBmaW5kcyB0aGUgKmZpcnN0KiBjaGlsZAord2l0aCBhIHBhcnRpY3VsYXIgdGFnLCBhbmQgOm1ldGg6YEVsZW1lbnQudGV4dGAgYWNjZXNzZXMgdGhlIGVsZW1lbnQncyB0ZXh0Citjb250ZW50LiAgOm1ldGg6YEVsZW1lbnQuZ2V0YCBhY2Nlc3NlcyB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXM6OgorCisgICA+Pj4gZm9yIGNvdW50cnkgaW4gcm9vdC5maW5kYWxsKCdjb3VudHJ5Jyk6CisgICAuLi4gICByYW5rID0gY291bnRyeS5maW5kKCdyYW5rJykudGV4dAorICAgLi4uICAgbmFtZSA9IGNvdW50cnkuZ2V0KCduYW1lJykKKyAgIC4uLiAgIHByaW50KG5hbWUsIHJhbmspCisgICAuLi4KKyAgIExpZWNodGVuc3RlaW4gMQorICAgU2luZ2Fwb3JlIDQKKyAgIFBhbmFtYSA2OAorCitNb3JlIHNvcGhpc3RpY2F0ZWQgc3BlY2lmaWNhdGlvbiBvZiB3aGljaCBlbGVtZW50cyB0byBsb29rIGZvciBpcyBwb3NzaWJsZSBieQordXNpbmcgOnJlZjpgWFBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuCisKK01vZGlmeWluZyBhbiBYTUwgRmlsZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgRWxlbWVudFRyZWVgIHByb3ZpZGVzIGEgc2ltcGxlIHdheSB0byBidWlsZCBYTUwgZG9jdW1lbnRzIGFuZCB3cml0ZSB0aGVtIHRvIGZpbGVzLgorVGhlIDptZXRoOmBFbGVtZW50VHJlZS53cml0ZWAgbWV0aG9kIHNlcnZlcyB0aGlzIHB1cnBvc2UuCisKK09uY2UgY3JlYXRlZCwgYW4gOmNsYXNzOmBFbGVtZW50YCBvYmplY3QgbWF5IGJlIG1hbmlwdWxhdGVkIGJ5IGRpcmVjdGx5IGNoYW5naW5nCitpdHMgZmllbGRzIChzdWNoIGFzIDphdHRyOmBFbGVtZW50LnRleHRgKSwgYWRkaW5nIGFuZCBtb2RpZnlpbmcgYXR0cmlidXRlcworKDptZXRoOmBFbGVtZW50LnNldGAgbWV0aG9kKSwgYXMgd2VsbCBhcyBhZGRpbmcgbmV3IGNoaWxkcmVuIChmb3IgZXhhbXBsZQord2l0aCA6bWV0aDpgRWxlbWVudC5hcHBlbmRgKS4KKworTGV0J3Mgc2F5IHdlIHdhbnQgdG8gYWRkIG9uZSB0byBlYWNoIGNvdW50cnkncyByYW5rLCBhbmQgYWRkIGFuIGBgdXBkYXRlZGBgCithdHRyaWJ1dGUgdG8gdGhlIHJhbmsgZWxlbWVudDo6CisKKyAgID4+PiBmb3IgcmFuayBpbiByb290Lml0ZXIoJ3JhbmsnKToKKyAgIC4uLiAgIG5ld19yYW5rID0gaW50KHJhbmsudGV4dCkgKyAxCisgICAuLi4gICByYW5rLnRleHQgPSBzdHIobmV3X3JhbmspCisgICAuLi4gICByYW5rLnNldCgndXBkYXRlZCcsICd5ZXMnKQorICAgLi4uCisgICA+Pj4gdHJlZS53cml0ZSgnb3V0cHV0LnhtbCcpCisKK091ciBYTUwgbm93IGxvb2tzIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHhtbAorCisgICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKyAgIDxkYXRhPgorICAgICAgIDxjb3VudHJ5IG5hbWU9IkxpZWNodGVuc3RlaW4iPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjI8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMDg8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xNDExMDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQXVzdHJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJTd2l0emVybGFuZCIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlNpbmdhcG9yZSI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+NTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjU5OTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9Ik1hbGF5c2lhIiBkaXJlY3Rpb249Ik4iLz4KKyAgICAgICA8L2NvdW50cnk+CisgICAgICAgPGNvdW50cnkgbmFtZT0iUGFuYW1hIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj42OTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjEzNjAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvc3RhIFJpY2EiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29sb21iaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgIDwvY291bnRyeT4KKyAgIDwvZGF0YT4KKworV2UgY2FuIHJlbW92ZSBlbGVtZW50cyB1c2luZyA6bWV0aDpgRWxlbWVudC5yZW1vdmVgLiAgTGV0J3Mgc2F5IHdlIHdhbnQgdG8KK3JlbW92ZSBhbGwgY291bnRyaWVzIHdpdGggYSByYW5rIGhpZ2hlciB0aGFuIDUwOjoKKworICAgPj4+IGZvciBjb3VudHJ5IGluIHJvb3QuZmluZGFsbCgnY291bnRyeScpOgorICAgLi4uICAgcmFuayA9IGludChjb3VudHJ5LmZpbmQoJ3JhbmsnKS50ZXh0KQorICAgLi4uICAgaWYgcmFuayA+IDUwOgorICAgLi4uICAgICByb290LnJlbW92ZShjb3VudHJ5KQorICAgLi4uCisgICA+Pj4gdHJlZS53cml0ZSgnb3V0cHV0LnhtbCcpCisKK091ciBYTUwgbm93IGxvb2tzIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IHhtbAorCisgICA8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKyAgIDxkYXRhPgorICAgICAgIDxjb3VudHJ5IG5hbWU9IkxpZWNodGVuc3RlaW4iPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjI8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMDg8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xNDExMDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQXVzdHJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJTd2l0emVybGFuZCIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlNpbmdhcG9yZSI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+NTwvcmFuaz4KKyAgICAgICAgICAgPHllYXI+MjAxMTwveWVhcj4KKyAgICAgICAgICAgPGdkcHBjPjU5OTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9Ik1hbGF5c2lhIiBkaXJlY3Rpb249Ik4iLz4KKyAgICAgICA8L2NvdW50cnk+CisgICA8L2RhdGE+CisKK0J1aWxkaW5nIFhNTCBkb2N1bWVudHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIDpmdW5jOmBTdWJFbGVtZW50YCBmdW5jdGlvbiBhbHNvIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gY3JlYXRlIG5ldworc3ViLWVsZW1lbnRzIGZvciBhIGdpdmVuIGVsZW1lbnQ6OgorCisgICA+Pj4gYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgPj4+IGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKKyAgID4+PiBjID0gRVQuU3ViRWxlbWVudChhLCAnYycpCisgICA+Pj4gZCA9IEVULlN1YkVsZW1lbnQoYywgJ2QnKQorICAgPj4+IEVULmR1bXAoYSkKKyAgIDxhPjxiIC8+PGM+PGQgLz48L2M+PC9hPgorCitBZGRpdGlvbmFsIHJlc291cmNlcworXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAogU2VlIGh0dHA6Ly9lZmZib3Qub3JnL3pvbmUvZWxlbWVudC1pbmRleC5odG0gZm9yIHR1dG9yaWFscyBhbmQgbGlua3MgdG8gb3RoZXIKLWRvY3MuICBGcmVkcmlrIEx1bmRoJ3MgcGFnZSBpcyBhbHNvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZgotdGhlIHhtbC5ldHJlZS5FbGVtZW50VHJlZS4KK2RvY3MuCiAKLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICBUaGUgRWxlbWVudFRyZWUgQVBJIGlzIHVwZGF0ZWQgdG8gMS4zLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQotICAgYEludHJvZHVjaW5nIEVsZW1lbnRUcmVlIDEuMwotICAgPGh0dHA6Ly9lZmZib3Qub3JnL3pvbmUvZWxlbWVudHRyZWUtMTMtaW50cm8uaHRtPmBfLgogCisuLiBfZWxlbWVudHRyZWUteHBhdGg6CisKK1hQYXRoIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgbGltaXRlZCBzdXBwb3J0IGZvcgorYFhQYXRoIGV4cHJlc3Npb25zIDxodHRwOi8vd3d3LnczLm9yZy9UUi94cGF0aD5gXyBmb3IgbG9jYXRpbmcgZWxlbWVudHMgaW4gYQordHJlZS4gIFRoZSBnb2FsIGlzIHRvIHN1cHBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgdGhlIGFiYnJldmlhdGVkIHN5bnRheDsgYSBmdWxsCitYUGF0aCBlbmdpbmUgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhlIG1vZHVsZS4KKworRXhhbXBsZQorXl5eXl5eXgorCitIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0IGRlbW9uc3RyYXRlcyBzb21lIG9mIHRoZSBYUGF0aCBjYXBhYmlsaXRpZXMgb2YgdGhlCittb2R1bGUuICBXZSdsbCBiZSB1c2luZyB0aGUgYGBjb3VudHJ5ZGF0YWBgIFhNTCBkb2N1bWVudCBmcm9tIHRoZQorOnJlZjpgUGFyc2luZyBYTUwgPGVsZW1lbnR0cmVlLXBhcnNpbmcteG1sPmAgc2VjdGlvbjo6CisKKyAgIGltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKKworICAgcm9vdCA9IEVULmZyb21zdHJpbmcoY291bnRyeWRhdGEpCisKKyAgICMgVG9wLWxldmVsIGVsZW1lbnRzCisgICByb290LmZpbmRhbGwoIi4iKQorCisgICAjIEFsbCAnbmVpZ2hib3InIGdyYW5kLWNoaWxkcmVuIG9mICdjb3VudHJ5JyBjaGlsZHJlbiBvZiB0aGUgdG9wLWxldmVsCisgICAjIGVsZW1lbnRzCisgICByb290LmZpbmRhbGwoIi4vY291bnRyeS9uZWlnaGJvciIpCisKKyAgICMgTm9kZXMgd2l0aCBuYW1lPSdTaW5nYXBvcmUnIHRoYXQgaGF2ZSBhICd5ZWFyJyBjaGlsZAorICAgcm9vdC5maW5kYWxsKCIuLy95ZWFyLy4uW0BuYW1lPSdTaW5nYXBvcmUnXSIpCisKKyAgICMgJ3llYXInIG5vZGVzIHRoYXQgYXJlIGNoaWxkcmVuIG9mIG5vZGVzIHdpdGggbmFtZT0nU2luZ2Fwb3JlJworICAgcm9vdC5maW5kYWxsKCIuLy8qW0BuYW1lPSdTaW5nYXBvcmUnXS95ZWFyIikKKworICAgIyBBbGwgJ25laWdoYm9yJyBub2RlcyB0aGF0IGFyZSB0aGUgc2Vjb25kIGNoaWxkIG9mIHRoZWlyIHBhcmVudAorICAgcm9vdC5maW5kYWxsKCIuLy9uZWlnaGJvclsyXSIpCisKK1N1cHBvcnRlZCBYUGF0aCBzeW50YXgKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgU3ludGF4ICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworfCBgYHRhZ2BgICAgICAgICAgICAgICAgfCBTZWxlY3RzIGFsbCBjaGlsZCBlbGVtZW50cyB3aXRoIHRoZSBnaXZlbiB0YWcuICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgRm9yIGV4YW1wbGUsIGBgc3BhbWBgIHNlbGVjdHMgYWxsIGNoaWxkIGVsZW1lbnRzICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVkIGBgc3BhbWBgLCBgYHNwYW0vZWdnYGAgc2VsZWN0cyBhbGwgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBncmFuZGNoaWxkcmVuIG5hbWVkIGBgZWdnYGAgaW4gYWxsIGNoaWxkcmVuIG5hbWVkICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzcGFtYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCpgYCAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIGFsbCBjaGlsZCBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYCovZWdnYGAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgc2VsZWN0cyBhbGwgZ3JhbmRjaGlsZHJlbiBuYW1lZCBgYGVnZ2BgLiAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYC5gYCAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIHRoZSBjdXJyZW50IG5vZGUuICBUaGlzIGlzIG1vc3RseSB1c2VmdWwgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aCwgdG8gaW5kaWNhdGUgdGhhdCBpdCdzICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGEgcmVsYXRpdmUgcGF0aC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAvL2BgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgc3ViZWxlbWVudHMsIG9uIGFsbCBsZXZlbHMgYmVuZWF0aCB0aGUgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGN1cnJlbnQgIGVsZW1lbnQuICBGb3IgZXhhbXBsZSwgYGAuLy9lZ2dgYCBzZWxlY3RzICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBhbGwgYGBlZ2dgYCBlbGVtZW50cyBpbiB0aGUgZW50aXJlIHRyZWUuICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgLi5gYCAgICAgICAgICAgICAgICB8IFNlbGVjdHMgdGhlIHBhcmVudCBlbGVtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbQGF0dHJpYl1gYCAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSBnaXZlbiBhdHRyaWJ1dGUuICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYFtAYXR0cmliPSd2YWx1ZSddYGAgfCBTZWxlY3RzIGFsbCBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIGdpdmVuIGF0dHJpYnV0ZSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgaGFzIHRoZSBnaXZlbiB2YWx1ZS4gIFRoZSB2YWx1ZSBjYW5ub3QgY29udGFpbiAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHF1b3Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbdGFnXWBgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIGEgY2hpbGQgbmFtZWQgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGBgdGFnYGAuICBPbmx5IGltbWVkaWF0ZSBjaGlsZHJlbiBhcmUgc3VwcG9ydGVkLiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbcG9zaXRpb25dYGAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgbG9jYXRlZCBhdCB0aGUgZ2l2ZW4gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlciAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCAoMSBpcyB0aGUgZmlyc3QgcG9zaXRpb24pLCB0aGUgZXhwcmVzc2lvbiBgYGxhc3QoKWBgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgKGZvciB0aGUgbGFzdCBwb3NpdGlvbiksIG9yIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBsYXN0IHBvc2l0aW9uIChlLmcuIGBgbGFzdCgpLTFgYCkuICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworUHJlZGljYXRlcyAoZXhwcmVzc2lvbnMgd2l0aGluIHNxdWFyZSBicmFja2V0cykgbXVzdCBiZSBwcmVjZWRlZCBieSBhIHRhZworbmFtZSwgYW4gYXN0ZXJpc2ssIG9yIGFub3RoZXIgcHJlZGljYXRlLiAgYGBwb3NpdGlvbmBgIHByZWRpY2F0ZXMgbXVzdCBiZQorcHJlY2VkZWQgYnkgYSB0YWcgbmFtZS4KKworUmVmZXJlbmNlCistLS0tLS0tLS0KIAogLi4gX2VsZW1lbnR0cmVlLWZ1bmN0aW9uczoKIAogRnVuY3Rpb25zCi0tLS0tLS0tLS0KK15eXl5eXl5eXgogCiAKIC4uIGZ1bmN0aW9uOjogQ29tbWVudCh0ZXh0PU5vbmUpCkBAIC0xOTgsOCArNDcwLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50LW9iamVjdHM6CiAKIEVsZW1lbnQgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tCi0KK15eXl5eXl5eXl5eXl5eXgogCiAuLiBjbGFzczo6IEVsZW1lbnQodGFnLCBhdHRyaWI9e30sICoqZXh0cmEpCiAKQEAgLTI4MSwzNiArNTUyLDQzIEBACiAKICAgIC4uIG1ldGhvZDo6IGFwcGVuZChzdWJlbGVtZW50KQogCi0gICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudHMgaW50ZXJuYWwgbGlzdAotICAgICAgb2Ygc3ViZWxlbWVudHMuCisgICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudCdzIGludGVybmFsIGxpc3QKKyAgICAgIG9mIHN1YmVsZW1lbnRzLiAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgKnN1YmVsZW1lbnQqIGlzIG5vdCBhbgorICAgICAgOmNsYXNzOmBFbGVtZW50YC4KIAogCiAgICAuLiBtZXRob2Q6OiBleHRlbmQoc3ViZWxlbWVudHMpCiAKICAgICAgIEFwcGVuZHMgKnN1YmVsZW1lbnRzKiBmcm9tIGEgc2VxdWVuY2Ugb2JqZWN0IHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzLgotICAgICAgUmFpc2VzIDpleGM6YEFzc2VydGlvbkVycm9yYCBpZiBhIHN1YmVsZW1lbnQgaXMgbm90IGEgdmFsaWQgb2JqZWN0LgorICAgICAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgYSBzdWJlbGVtZW50IGlzIG5vdCBhbiA6Y2xhc3M6YEVsZW1lbnRgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBGaW5kcyB0aGUgZmlyc3Qgc3ViZWxlbWVudCBtYXRjaGluZyAqbWF0Y2gqLiAgKm1hdGNoKiBtYXkgYmUgYSB0YWcgbmFtZQotICAgICAgb3IgcGF0aC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZSBvciBgYE5vbmVgYC4KKyAgICAgIG9yIGEgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZQorICAgICAgb3IgYGBOb25lYGAuICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIGEgbGlzdAotICAgICAgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yCisgICAgICA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcKKyAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLiAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbQorICAgICAgbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGZpbmR0ZXh0KG1hdGNoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkKIAogICAgICAgRmluZHMgdGV4dCBmb3IgdGhlIGZpcnN0IHN1YmVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlCi0gICAgICBhIHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nCi0gICAgICBlbGVtZW50IGhhcyBubyB0ZXh0IGNvbnRlbnQgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorICAgICAgYSB0YWcgbmFtZSBvciBhIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAgIG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nIGVsZW1lbnQgaGFzIG5vIHRleHQgY29udGVudCBhbiBlbXB0eSBzdHJpbmcKKyAgICAgIGlzIHJldHVybmVkLiAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRjaGlsZHJlbigpCkBAIC0zMjUsOSArNjAzLDEwIEBACiAgICAgICAgICBVc2UgbWV0aG9kIDptZXRoOmBFbGVtZW50Lml0ZXJgIGluc3RlYWQuCiAKIAotICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBlbGVtZW50KQorICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBzdWJlbGVtZW50KQogCi0gICAgICBJbnNlcnRzIGEgc3ViZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBlbGVtZW50LgorICAgICAgSW5zZXJ0cyAqc3ViZWxlbWVudCogYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGluIHRoaXMgZWxlbWVudC4gIFJhaXNlcworICAgICAgOmV4YzpgVHlwZUVycm9yYCBpZiAqc3ViZWxlbWVudCogaXMgbm90IGFuIDpjbGFzczpgRWxlbWVudGAuCiAKIAogICAgLi4gbWV0aG9kOjogaXRlcih0YWc9Tm9uZSkKQEAgLTM0MSwxMCArNjIwLDEzIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYW4gaXRlcmFibGUKLSAgICAgIHlpZWxkaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IKKyAgICAgIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbAorICAgICAgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nCisgICAgICBmcm9tIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgorCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0zODksNyArNjcxLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50dHJlZS1vYmplY3RzOgogCiBFbGVtZW50VHJlZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBFbGVtZW50VHJlZShlbGVtZW50PU5vbmUsIGZpbGU9Tm9uZSkKQEAgLTQwOSwyOCArNjkxLDE5IEBACiAgICAgICBjYXJlLiAgKmVsZW1lbnQqIGlzIGFuIGVsZW1lbnQgaW5zdGFuY2UuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgdGhlIGZpcnN0IHRvcGxldmVsIGVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlIGEgdGFnCi0gICAgICBuYW1lIG9yIHBhdGguICBTYW1lIGFzIGdldHJvb3QoKS5maW5kKG1hdGNoKS4gIFJldHVybnMgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciBgYE5vbmVgYCBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KKyAgICAgIFNhbWUgYXMgOm1ldGg6YEVsZW1lbnQuZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmRhbGwobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFNhbWUgYXMKLSAgICAgIGdldHJvb3QoKS5maW5kYWxsKG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYQotICAgICAgbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cywgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRhbGxgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lKQorICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyB0aGUgZWxlbWVudCB0ZXh0IGZvciB0aGUgZmlyc3QgdG9wbGV2ZWwgZWxlbWVudCB3aXRoIGdpdmVuIHRhZy4KLSAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmR0ZXh0KG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4KLSAgICAgICpkZWZhdWx0KiBpcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgZm91bmQuICBSZXR1cm5zCi0gICAgICB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciB0aGUgZGVmYXVsdCB2YWx1ZSBubwotICAgICAgZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIGVsZW1lbnQgaXMgZm91bmQsIGJ1dCBoYXMgbm8gdGV4dAotICAgICAgY29udGVudCwgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmR0ZXh0YCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0aXRlcmF0b3IodGFnPU5vbmUpCkBAIC00NTEsMTEgKzcyNCw5IEBACiAgICAgICB0byBsb29rIGZvciAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKQogCiAKLSAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLiAgU2FtZSBhcwotICAgICAgZ2V0cm9vdCgpLml0ZXJmaW5kKG1hdGNoKS4gUmV0dXJucyBhbiBpdGVyYWJsZSB5aWVsZGluZyBhbGwgbWF0Y2hpbmcKLSAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgU2FtZSBhcyA6bWV0aDpgRWxlbWVudC5pdGVyZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDY0LDIwICs3MzUsMjkgQEAKIAogICAgICAgTG9hZHMgYW4gZXh0ZXJuYWwgWE1MIHNlY3Rpb24gaW50byB0aGlzIGVsZW1lbnQgdHJlZS4gICpzb3VyY2UqIGlzIGEgZmlsZQogICAgICAgbmFtZSBvciA6dGVybTpgZmlsZSBvYmplY3RgLiAgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLgotICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgWE1MUGFyc2VyIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUgc2VjdGlvbgotICAgICAgcm9vdCBlbGVtZW50LgorICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgOmNsYXNzOmBYTUxQYXJzZXJgIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUKKyAgICAgIHNlY3Rpb24gcm9vdCBlbGVtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IHdyaXRlKGZpbGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIHhtbF9kZWNsYXJhdGlvbj1Ob25lLCBtZXRob2Q9InhtbCIpCisgICAuLiBtZXRob2Q6OiB3cml0ZShmaWxlLCBlbmNvZGluZz0idXMtYXNjaWkiLCB4bWxfZGVjbGFyYXRpb249Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJ4bWwiKQogCiAgICAgICBXcml0ZXMgdGhlIGVsZW1lbnQgdHJlZSB0byBhIGZpbGUsIGFzIFhNTC4gICpmaWxlKiBpcyBhIGZpbGUgbmFtZSwgb3IgYQotICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dCBlbmNvZGluZwotICAgICAgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8gd3JpdGUgYSBVbmljb2RlIHN0cmluZy4KLSAgICAgICp4bWxfZGVjbGFyYXRpb24qIGNvbnRyb2xzIGlmIGFuIFhNTCBkZWNsYXJhdGlvbgotICAgICAgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlLiAgVXNlIEZhbHNlIGZvciBuZXZlciwgVHJ1ZSBmb3IgYWx3YXlzLCBOb25lCi0gICAgICBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZSAoZGVmYXVsdCBpcyBOb25lKS4gICptZXRob2QqIGlzCi0gICAgICBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4KLSAgICAgIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5nLgorICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dAorICAgICAgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgorICAgICAgKnhtbF9kZWNsYXJhdGlvbiogY29udHJvbHMgaWYgYW4gWE1MIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKyAgICAgIGZpbGUuICBVc2UgYGBGYWxzZWBgIGZvciBuZXZlciwgYGBUcnVlYGAgZm9yIGFsd2F5cywgYGBOb25lYGAKKyAgICAgIGZvciBvbmx5IGlmIG5vdCBVUy1BU0NJSSBvciBVVEYtOCBvciBVbmljb2RlIChkZWZhdWx0IGlzIGBgTm9uZWBgKS4KKyAgICAgICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcworICAgICAgYGAieG1sImBgKS4KKworICAgICAgVGhlIG91dHB1dCBpcyBlaXRoZXIgYSBzdHJpbmcgKDpjbGFzczpgc3RyYCkgb3IgYmluYXJ5ICg6Y2xhc3M6YGJ5dGVzYCkuCisgICAgICBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICplbmNvZGluZyogYXJndW1lbnQuICBJZiAqZW5jb2RpbmcqIGlzCisgICAgICBgYCJ1bmljb2RlImBgLCB0aGUgb3V0cHV0IGlzIGEgc3RyaW5nOyBvdGhlcndpc2UsIGl0J3MgYmluYXJ5LiAgTm90ZSB0aGF0CisgICAgICB0aGlzIG1heSBjb25mbGljdCB3aXRoIHRoZSB0eXBlIG9mICpmaWxlKiBpZiBpdCdzIGFuIG9wZW4KKyAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGA7IG1ha2Ugc3VyZSB5b3UgZG8gbm90IHRyeSB0byB3cml0ZSBhIHN0cmluZyB0byBhCisgICAgICBiaW5hcnkgc3RyZWFtIGFuZCB2aWNlIHZlcnNhLgorCiAKIFRoaXMgaXMgdGhlIFhNTCBmaWxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgbWFuaXB1bGF0ZWQ6OgogCkBAIC01MTAsNyArNzkwLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1xbmFtZS1vYmplY3RzOgogCiBRTmFtZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBRTmFtZSh0ZXh0X29yX3VyaSwgdGFnPU5vbmUpCkBAIC01MjYsNyArODA2LDcgQEAKIC4uIF9lbGVtZW50dHJlZS10cmVlYnVpbGRlci1vYmplY3RzOgogCiBUcmVlQnVpbGRlciBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBUcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9Tm9uZSkKQEAgLTUzNCw5ICs4MTQsOSBAQAogICAgR2VuZXJpYyBlbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyLiAgVGhpcyBidWlsZGVyIGNvbnZlcnRzIGEgc2VxdWVuY2Ugb2YKICAgIHN0YXJ0LCBkYXRhLCBhbmQgZW5kIG1ldGhvZCBjYWxscyB0byBhIHdlbGwtZm9ybWVkIGVsZW1lbnQgc3RydWN0dXJlLiAgWW91CiAgICBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYnVpbGQgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgdXNpbmcgYSBjdXN0b20gWE1MIHBhcnNlciwKLSAgIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4gIFRoZSAqZWxlbWVudF9mYWN0b3J5KiBpcyBjYWxsZWQKLSAgIHRvIGNyZWF0ZSBuZXcgOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZXMgd2hlbiBnaXZlbi4KLQorICAgb3IgYSBwYXJzZXIgZm9yIHNvbWUgb3RoZXIgWE1MLWxpa2UgZm9ybWF0LiAgKmVsZW1lbnRfZmFjdG9yeSosIHdoZW4gZ2l2ZW4sCisgICBtdXN0IGJlIGEgY2FsbGFibGUgYWNjZXB0aW5nIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50czogYSB0YWcgYW5kCisgICBhIGRpY3Qgb2YgYXR0cmlidXRlcy4gIEl0IGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIG5ldyBlbGVtZW50IGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTU3Nyw3ICs4NTcsNyBAQAogLi4gX2VsZW1lbnR0cmVlLXhtbHBhcnNlci1vYmplY3RzOgogCiBYTUxQYXJzZXIgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0KK15eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBYTUxQYXJzZXIoaHRtbD0wLCB0YXJnZXQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSkKQEAgLTU4NSw5ICs4NjUsOSBAQAogICAgOmNsYXNzOmBFbGVtZW50YCBzdHJ1Y3R1cmUgYnVpbGRlciBmb3IgWE1MIHNvdXJjZSBkYXRhLCBiYXNlZCBvbiB0aGUgZXhwYXQKICAgIHBhcnNlci4gICpodG1sKiBhcmUgcHJlZGVmaW5lZCBIVE1MIGVudGl0aWVzLiAgVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkKICAgIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAgKnRhcmdldCogaXMgdGhlIHRhcmdldCBvYmplY3QuICBJZiBvbWl0dGVkLCB0aGUKLSAgIGJ1aWxkZXIgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgVHJlZUJ1aWxkZXIgY2xhc3MuICAqZW5jb2RpbmcqIFsxXV8KLSAgIGlzIG9wdGlvbmFsLiAgSWYgZ2l2ZW4sIHRoZSB2YWx1ZSBvdmVycmlkZXMgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUKLSAgIFhNTCBmaWxlLgorICAgYnVpbGRlciB1c2VzIGFuIGluc3RhbmNlIG9mIHRoZSBzdGFuZGFyZCA6Y2xhc3M6YFRyZWVCdWlsZGVyYCBjbGFzcy4KKyAgICplbmNvZGluZyogWzFdXyBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZworICAgc3BlY2lmaWVkIGluIHRoZSBYTUwgZmlsZS4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCkBAIC02NDUsNiArOTI1LDI0IEBACiAgICAgPj4+IHBhcnNlci5jbG9zZSgpCiAgICAgNAogCitFeGNlcHRpb25zCiteXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogUGFyc2VFcnJvcgorCisgICBYTUwgcGFyc2UgZXJyb3IsIHJhaXNlZCBieSB0aGUgdmFyaW91cyBwYXJzaW5nIG1ldGhvZHMgaW4gdGhpcyBtb2R1bGUgd2hlbgorICAgcGFyc2luZyBmYWlscy4gIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBleGNlcHRpb24KKyAgIHdpbGwgY29udGFpbiBhIHVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gIEluIGFkZGl0aW9uLCBpdCB3aWxsIGhhdmUKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvZGUKKworICAgICAgQSBudW1lcmljIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhwYXQgcGFyc2VyLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YKKyAgICAgIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YCBmb3IgdGhlIGxpc3Qgb2YgZXJyb3IgY29kZXMgYW5kIHRoZWlyIG1lYW5pbmdzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwb3NpdGlvbgorCisgICAgICBBIHR1cGxlIG9mICpsaW5lKiwgKmNvbHVtbiogbnVtYmVycywgc3BlY2lmeWluZyB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CmluZGV4IGZmMzZmZDguLjBhNDAzOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0CkBAIC02Miw3ICs2Miw3IEBACiAgICB0YWdzLCBpZiBzZXQgdG8gKlRydWUqIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBzaW5nbGUgc2VsZi1jbG9zZWQgdGFnLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgICAgIHNob3J0X2VtcHR5X2VsZW1lbnRzCisgICAgICBUaGUgKnNob3J0X2VtcHR5X2VsZW1lbnRzKiBwYXJhbWV0ZXIuCiAKIAogLi4gY2xhc3M6OiBYTUxGaWx0ZXJCYXNlKGJhc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGU3Mjc3MGEuLjE4NzFjOTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC04LDcgKzgsNyBAQAogCiAKIC4uIFhYWCBOb3QgZXZlcnl0aGluZyBpcyBkb2N1bWVudGVkIHlldC4gIEl0IG1pZ2h0IGJlIGdvb2QgdG8gZGVzY3JpYmUKLSAgIE1hcnNoYWxsZXIsIFVubWFyc2hhbGxlciwgZ2V0cGFyc2VyLCBkdW1wcywgbG9hZHMsIGFuZCBUcmFuc3BvcnQuCisgICBNYXJzaGFsbGVyLCBVbm1hcnNoYWxsZXIsIGdldHBhcnNlciBhbmQgVHJhbnNwb3J0LgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi94bWxycGMvY2xpZW50LnB5YAogCkBAIC0yMSw3ICsyMSwxMiBAQAogYmV0d2VlbiBjb25mb3JtYWJsZSBQeXRob24gb2JqZWN0cyBhbmQgWE1MIG9uIHRoZSB3aXJlLgogCiAKLS4uIGNsYXNzOjogU2VydmVyUHJveHkodXJpLCB0cmFuc3BvcnQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgdmVyYm9zZT1GYWxzZSwgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlKQorLi4gY2xhc3M6OiBTZXJ2ZXJQcm94eSh1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAgICBBIDpjbGFzczpgU2VydmVyUHJveHlgIGluc3RhbmNlIGlzIGFuIG9iamVjdCB0aGF0IG1hbmFnZXMgY29tbXVuaWNhdGlvbiB3aXRoIGEKICAgIHJlbW90ZSBYTUwtUlBDIHNlcnZlci4gIFRoZSByZXF1aXJlZCBmaXJzdCBhcmd1bWVudCBpcyBhIFVSSSAoVW5pZm9ybSBSZXNvdXJjZQpAQCAtMzQsOSArMzksMTMgQEAKICAgIFhNTDsgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGZvciBgYE5vbmVgYCB0byByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIFRoaXMgaXMKICAgIGEgY29tbW9ubHktdXNlZCBleHRlbnNpb24gdG8gdGhlIFhNTC1SUEMgc3BlY2lmaWNhdGlvbiwgYnV0IGlzbid0IHN1cHBvcnRlZCBieQogICAgYWxsIGNsaWVudHMgYW5kIHNlcnZlcnM7IHNlZSBodHRwOi8vb250b3N5cy5jb20veG1sLXJwYy9leHRlbnNpb25zLnBocCBmb3IgYQotICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvCi0gICBiZSBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGNhbGxzLgorICAgZGVzY3JpcHRpb24uICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMKKyAgIHRvIGJlIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIGFuZCBiaW5hcnkgZGF0YSB0byBiZQorICAgcHJlc2VudGVkIGFzIDpjbGFzczpgYnl0ZXNgIG9iamVjdHM7IHRoaXMgZmxhZyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgYW5kIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgbWF5IGJlIHBhc3NlZCB0byBjYWxscy4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCiAKICAgIEJvdGggdGhlIEhUVFAgYW5kIEhUVFBTIHRyYW5zcG9ydHMgc3VwcG9ydCB0aGUgVVJMIHN5bnRheCBleHRlbnNpb24gZm9yIEhUVFAKICAgIEJhc2ljIEF1dGhlbnRpY2F0aW9uOiBgYGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGhgYC4gIFRoZSAgYGB1c2VyOnBhc3NgYApAQCAtNzgsMTIgKzg3LDEyIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvbmx5IHRoZWlyICpfX2RpY3RfXyogYXR0cmlidXRlIGlzICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgZGF0ZXNgICAgICAgICAgICAgICAgICAgfCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCAocGFzcyBpbiBhbiAgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YERhdGVUaW1lYCBjbGFzcykgb3IgfAorICAgfCA6Y29uc3Q6YGRhdGVzYCAgICAgICAgICAgICAgICAgIHwgSW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guICBQYXNzIGluIGFuICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBEYXRlVGltZWAgY2xhc3Mgb3IgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UuICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgYmluYXJ5IGRhdGFgICAgICAgICAgICAgfCBwYXNzIGluIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEJpbmFyeWAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyYXBwZXIgY2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCA6Y29uc3Q6YGJpbmFyeSBkYXRhYCAgICAgICAgICAgIHwgUGFzcyBpbiBhbiBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBCaW5hcnlgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3cmFwcGVyIGNsYXNzIG9yIGEgOmNsYXNzOmBieXRlc2AgaW5zdGFuY2UuIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieSBYTUwtUlBDLiAgTWV0aG9kIGNhbGxzIG1heSBhbHNvCkBAIC05OCw4ICsxMDcsOSBAQAogICAgZW5zdXJlIHRoYXQgdGhlIHN0cmluZyBpcyBmcmVlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmVuJ3QgYWxsb3dlZCBpbiBYTUwsIHN1Y2ggYXMKICAgIHRoZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aCBBU0NJSSB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAzMSAoZXhjZXB0LCBvZiBjb3Vyc2UsCiAgICB0YWIsIG5ld2xpbmUgYW5kIGNhcnJpYWdlIHJldHVybik7IGZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBYTUwtUlBDCi0gICByZXF1ZXN0IHRoYXQgaXNuJ3Qgd2VsbC1mb3JtZWQgWE1MLiAgSWYgeW91IGhhdmUgdG8gcGFzcyBhcmJpdHJhcnkgc3RyaW5ncyB2aWEKLSAgIFhNTC1SUEMsIHVzZSB0aGUgOmNsYXNzOmBCaW5hcnlgIHdyYXBwZXIgY2xhc3MgZGVzY3JpYmVkIGJlbG93LgorICAgcmVxdWVzdCB0aGF0IGlzbid0IHdlbGwtZm9ybWVkIFhNTC4gIElmIHlvdSBoYXZlIHRvIHBhc3MgYXJiaXRyYXJ5IGJ5dGVzCisgICB2aWEgWE1MLVJQQywgdXNlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBjbGFzcyBvciB0aGUgY2xhc3M6YEJpbmFyeWAgd3JhcHBlciBjbGFzcworICAgZGVzY3JpYmVkIGJlbG93LgogCiAgICA6Y2xhc3M6YFNlcnZlcmAgaXMgcmV0YWluZWQgYXMgYW4gYWxpYXMgZm9yIDpjbGFzczpgU2VydmVyUHJveHlgIGZvciBiYWNrd2FyZHMKICAgIGNvbXBhdGliaWxpdHkuICBOZXcgY29kZSBzaG91bGQgdXNlIDpjbGFzczpgU2VydmVyUHJveHlgLgpAQCAtMjQ5LDcgKzI1OSw3IEBACiBCaW5hcnkgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBzdHJpbmcgZGF0YSAod2hpY2ggbWF5IGluY2x1ZGUgTlVMcykuIFRoZQorVGhpcyBjbGFzcyBtYXkgYmUgaW5pdGlhbGl6ZWQgZnJvbSBieXRlcyBkYXRhICh3aGljaCBtYXkgaW5jbHVkZSBOVUxzKS4gVGhlCiBwcmltYXJ5IGFjY2VzcyB0byB0aGUgY29udGVudCBvZiBhIDpjbGFzczpgQmluYXJ5YCBvYmplY3QgaXMgcHJvdmlkZWQgYnkgYW4KIGF0dHJpYnV0ZToKIApAQCAtMjU3LDE1ICsyNjcsMTUgQEAKIC4uIGF0dHJpYnV0ZTo6IEJpbmFyeS5kYXRhCiAKICAgIFRoZSBiaW5hcnkgZGF0YSBlbmNhcHN1bGF0ZWQgYnkgdGhlIDpjbGFzczpgQmluYXJ5YCBpbnN0YW5jZS4gIFRoZSBkYXRhIGlzCi0gICBwcm92aWRlZCBhcyBhbiA4LWJpdCBzdHJpbmcuCisgICBwcm92aWRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KIAogOmNsYXNzOmBCaW5hcnlgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMsIHN1cHBvcnRlZCBtYWlubHkgZm9yCiBpbnRlcm5hbCB1c2UgYnkgdGhlIG1hcnNoYWxsaW5nL3VubWFyc2hhbGxpbmcgY29kZToKIAogCi0uLiBtZXRob2Q6OiBCaW5hcnkuZGVjb2RlKHN0cmluZykKKy4uIG1ldGhvZDo6IEJpbmFyeS5kZWNvZGUoYnl0ZXMpCiAKLSAgIEFjY2VwdCBhIGJhc2U2NCBzdHJpbmcgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KKyAgIEFjY2VwdCBhIGJhc2U2NCA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgYW5kIGRlY29kZSBpdCBhcyB0aGUgaW5zdGFuY2UncyBuZXcgZGF0YS4KIAogCiAuLiBtZXRob2Q6OiBCaW5hcnkuZW5jb2RlKG91dCkKQEAgLTQ3MSwxNCArNDgxLDIxIEBACiAgICBpdCB2aWEgYW4gZXh0ZW5zaW9uLCAgcHJvdmlkZSBhIHRydWUgdmFsdWUgZm9yICphbGxvd19ub25lKi4KIAogCi0uLiBmdW5jdGlvbjo6IGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ29udmVydCBhbiBYTUwtUlBDIHJlcXVlc3Qgb3IgcmVzcG9uc2UgaW50byBQeXRob24gb2JqZWN0cywgYSBgYChwYXJhbXMsCiAgICBtZXRob2RuYW1lKWBgLiAgKnBhcmFtcyogaXMgYSB0dXBsZSBvZiBhcmd1bWVudDsgKm1ldGhvZG5hbWUqIGlzIGEgc3RyaW5nLCBvcgogICAgYGBOb25lYGAgaWYgbm8gbWV0aG9kIG5hbWUgaXMgcHJlc2VudCBpbiB0aGUgcGFja2V0LiBJZiB0aGUgWE1MLVJQQyBwYWNrZXQKICAgIHJlcHJlc2VudHMgYSBmYXVsdCBjb25kaXRpb24sIHRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSBhIDpleGM6YEZhdWx0YCBleGNlcHRpb24uCi0gICBUaGUgKnVzZV9kYXRldGltZSogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlIHByZXNlbnRlZCBhcwotICAgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0czsgdGhpcyBpcyBmYWxzZSBieSBkZWZhdWx0LgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyBjYW4gYmUgdXNlZCB0byBjYXVzZSBkYXRlL3RpbWUgdmFsdWVzIHRvIGJlCisgICBwcmVzZW50ZWQgYXMgOmNsYXNzOmBkYXRldGltZS5kYXRldGltZWAgb2JqZWN0cyBhbmQgYmluYXJ5IGRhdGEgdG8gYmUKKyAgIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzOyB0aGlzIGZsYWcgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgVGhlIG9ic29sZXRlICp1c2VfZGF0ZXRpbWUqIGZsYWcgaXMgc2ltaWxhciB0byAqdXNlX2J1aWx0aW5fdHlwZXMqIGJ1dCBpdAorICAgYXBwbGllcyBvbmx5IHRvIGRhdGUvdGltZSB2YWx1ZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBfeG1scnBjLWNsaWVudC1leGFtcGxlOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAppbmRleCA2N2ZlYmE2Li42NDkzZmQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdApAQCAtMTYsNyArMTYsOSBAQAogOmNsYXNzOmBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKIAotLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpCisuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1TaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcixcCisgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLFwKKyAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgc2VydmVyIGluc3RhbmNlLiAgVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciByZWdpc3RyYXRpb24gb2YKICAgIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgdGhlIFhNTC1SUEMgcHJvdG9jb2wuICBUaGUgKnJlcXVlc3RIYW5kbGVyKgpAQCAtMjUsMTggKzI3LDMxIEBACiAgICBhcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXJgIGNvbnN0cnVjdG9yLiAgSWYgKmxvZ1JlcXVlc3RzKgogICAgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCByZXF1ZXN0cyB3aWxsIGJlIGxvZ2dlZDsgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBmYWxzZQogICAgd2lsbCB0dXJuIG9mZiBsb2dnaW5nLiAgIFRoZSAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkCi0gICBvbiB0byAgOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAorICAgb24gdG8gOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAogICAgZnJvbSB0aGUgc2VydmVyLiBUaGUgKmJpbmRfYW5kX2FjdGl2YXRlKiBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlcgogICAgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQgOm1ldGg6YHNlcnZlcl9hY3RpdmF0ZWAgYXJlIGNhbGxlZCBpbW1lZGlhdGVseSBieSB0aGUKICAgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cyB0byB0cnVlLiBTZXR0aW5nIGl0IHRvIGZhbHNlIGFsbG93cyBjb2RlIHRvIG1hbmlwdWxhdGUKICAgIHRoZSAqYWxsb3dfcmV1c2VfYWRkcmVzcyogY2xhc3MgdmFyaWFibGUgYmVmb3JlIHRoZSBhZGRyZXNzIGlzIGJvdW5kLgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogcGFyYW1ldGVyIGlzIHBhc3NlZCB0byB0aGUKKyAgIDpmdW5jOmB+eG1scnBjLmNsaWVudC5sb2Fkc2AgZnVuY3Rpb24gYW5kIGNvbnRyb2xzIHdoaWNoIHR5cGVzIGFyZSBwcm9jZXNzZWQKKyAgIHdoZW4gZGF0ZS90aW1lcyB2YWx1ZXMgb3IgYmluYXJ5IGRhdGEgYXJlIHJlY2VpdmVkOyBpdCBkZWZhdWx0cyB0byBmYWxzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAKLS4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSkKKy4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSxcCisgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IGluc3RhbmNlIHRvIGhhbmRsZSBYTUwtUlBDIHJlcXVlc3RzIGluIGEgQ0dJIGVudmlyb25tZW50LiAgVGhlCiAgICAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkIG9uIHRvIDptb2Q6YHhtbHJwYy5jbGllbnRgCiAgICBhbmQgY29udHJvbCB0aGUgWE1MLVJQQyByZXNwb25zZXMgdGhhdCB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci4KKyAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gdGhlCisgICA6ZnVuYzpgfnhtbHJwYy5jbGllbnQubG9hZHNgIGZ1bmN0aW9uIGFuZCBjb250cm9scyB3aGljaCB0eXBlcyBhcmUgcHJvY2Vzc2VkCisgICB3aGVuIGRhdGUvdGltZXMgdmFsdWVzIG9yIGJpbmFyeSBkYXRhIGFyZSByZWNlaXZlZDsgaXQgZGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKQEAgLTIzMywxMiArMjQ4LDE3IEBACiA6Y2xhc3M6YERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAogCi0uLiBjbGFzczo6IERvY1hNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSkKKy4uIGNsYXNzOjogRG9jWE1MUlBDU2VydmVyKGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLFwKKyAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsXAorICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IHNlcnZlciBpbnN0YW5jZS4gQWxsIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgogICAgOmNsYXNzOmBTaW1wbGVYTUxSUENTZXJ2ZXJgOyAqcmVxdWVzdEhhbmRsZXIqIGRlZmF1bHRzIHRvCiAgICA6Y2xhc3M6YERvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgorCiAKIC4uIGNsYXNzOjogRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CmluZGV4IDQ4ZWRmMWYuLjQ5OGE5Y2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CkBAIC04Nyw3ICs4NywzMCBAQAogLi4gZGF0YTo6IFpJUF9ERUZMQVRFRAogCiAgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIHVzdWFsIFpJUCBjb21wcmVzc2lvbiBtZXRob2QuICBUaGlzIHJlcXVpcmVzIHRoZQotICAgemxpYiBtb2R1bGUuICBObyBvdGhlciBjb21wcmVzc2lvbiBtZXRob2RzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLgorICAgemxpYiBtb2R1bGUuCisKKworLi4gZGF0YTo6IFpJUF9CWklQMgorCisgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIEJaSVAyIGNvbXByZXNzaW9uIG1ldGhvZC4gIFRoaXMgcmVxdWlyZXMgdGhlCisgICBiejIgbW9kdWxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFpJUF9MWk1BCisKKyAgIFRoZSBudW1lcmljIGNvbnN0YW50IGZvciB0aGUgTFpNQSBjb21wcmVzc2lvbiBtZXRob2QuICBUaGlzIHJlcXVpcmVzIHRoZQorICAgbHptYSBtb2R1bGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBub3RlOjoKKworICAgICAgVGhlIFpJUCBmaWxlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGhhcyBpbmNsdWRlZCBzdXBwb3J0IGZvciBiemlwMiBjb21wcmVzc2lvbgorICAgICAgc2luY2UgMjAwMSwgYW5kIGZvciBMWk1BIGNvbXByZXNzaW9uIHNpbmNlIDIwMDYuIEhvd2V2ZXIsIHNvbWUgdG9vbHMKKyAgICAgIChpbmNsdWRpbmcgb2xkZXIgUHl0aG9uIHJlbGVhc2VzKSBkbyBub3Qgc3VwcG9ydCB0aGVzZSBjb21wcmVzc2lvbgorICAgICAgbWV0aG9kcywgYW5kIG1heSBlaXRoZXIgcmVmdXNlIHRvIHByb2Nlc3MgdGhlIFpJUCBmaWxlIGFsdG9nZXRoZXIsCisgICAgICBvciBmYWlsIHRvIGV4dHJhY3QgaW5kaXZpZHVhbCBmaWxlcy4KIAogCiAuLiBzZWVhbHNvOjoKQEAgLTExOCw5ICsxNDEsMTEgQEAKICAgIGFkZGluZyBhIFpJUCBhcmNoaXZlIHRvIGFub3RoZXIgZmlsZSAoc3VjaCBhcyA6ZmlsZTpgcHl0aG9uLmV4ZWApLiAgSWYKICAgICptb2RlKiBpcyBgYGFgYCBhbmQgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QgYXQgYWxsLCBpdCBpcyBjcmVhdGVkLgogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAotICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgIG9yIDpjb25zdDpgWklQX0RFRkxBVEVEYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYAotICAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgOm1vZDpgemxpYmAgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKKyAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvcnJlc3BvbmRlZCBtb2R1bGUKKyAgICg6bW9kOmB6bGliYCwgOm1vZDpgYnoyYCBvciA6bW9kOmBsem1hYCkgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAogICAgaXMgYWxzbyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKICAgIGBgVHJ1ZWBgIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR0IuIElmIGl0IGlzICBmYWxzZSAodGhlIGRlZmF1bHQpIDptb2Q6YHppcGZpbGVgCkBAIC0xNDMsNiArMTY4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gdXNlIDpjbGFzczpgWmlwRmlsZWAgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBiemlwMmAgYW5kIDptb2Q6YGx6bWFgIGNvbXByZXNzaW9uLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0IGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAppbmRleCA0ZjE3MDkyLi5iNDdjMzViIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKQEAgLTg1LDkgKzg1LDEyIEBACiAKICAgIC4uIG1ldGhvZDo6IGdldF9kYXRhKHBhdGhuYW1lKQogCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoICpwYXRobmFtZSouIFJhaXNlIDpleGM6YElPRXJyb3JgIGlmIHRoZQorICAgICAgUmV0dXJuIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCAqcGF0aG5hbWUqLiBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUKICAgICAgIGZpbGUgd2Fzbid0IGZvdW5kLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggODk3ZDkxOS4uNDI1MzVhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTU4LDEyICs1OCwzNyBAQAogICAgZXhjZXB0aW9uIGlmIGFueSBlcnJvciBvY2N1cnMuCiAKIAotLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihbbGV2ZWxdKQorLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtbGV2ZWw9OCwgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKQogCiAgICBSZXR1cm5zIGEgY29tcHJlc3Npb24gb2JqZWN0LCB0byBiZSB1c2VkIGZvciBjb21wcmVzc2luZyBkYXRhIHN0cmVhbXMgdGhhdCB3b24ndAotICAgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYCBjb250cm9sbGluZwotICAgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOyBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sCi0gICBgYDlgYCBpcyBzbG93ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbW9zdC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgNmBgLgorICAgZml0IGludG8gbWVtb3J5IGF0IG9uY2UuCisKKyAgICpsZXZlbCogaXMgdGhlIGNvbXByZXNzaW9uIGxldmVsIC0tIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYC4gQSB2YWx1ZQorICAgb2YgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLCB3aGlsZSBhIHZhbHVlIG9mCisgICBgYDlgYCBpcyBzbG93ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbW9zdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGA2YGAuCisKKyAgICptZXRob2QqIGlzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEN1cnJlbnRseSwgdGhlIG9ubHkgc3VwcG9ydGVkIHZhbHVlIGlzCisgICBgYERFRkxBVEVEYGAuCisKKyAgICp3Yml0cyogaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgc2l6ZSBvZiB0aGUgd2luZG93IGJ1ZmZlci4gVGhpcworICAgc2hvdWxkIGJlIGFuIGludGVnZXIgZnJvbSBgYDhgYCB0byBgYDE1YGAuIEhpZ2hlciB2YWx1ZXMgZ2l2ZSBiZXR0ZXIKKyAgIGNvbXByZXNzaW9uLCBidXQgdXNlIG1vcmUgbWVtb3J5LgorCisgICAqbWVtbGV2ZWwqIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgZm9yIGludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLgorICAgVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gYGAxYGAgdG8gYGA5YGAuIEhpZ2hlciB2YWx1ZXMgdXNpbmcgbW9yZSBtZW1vcnksCisgICBidXQgYXJlIGZhc3RlciBhbmQgcHJvZHVjZSBzbWFsbGVyIG91dHB1dC4KKworICAgKnN0cmF0ZWd5KiBpcyB1c2VkIHRvIHR1bmUgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobS4gUG9zc2libGUgdmFsdWVzIGFyZQorICAgYGBaX0RFRkFVTFRfU1RSQVRFR1lgYCwgYGBaX0ZJTFRFUkVEYGAsIGFuZCBgYFpfSFVGRk1BTl9PTkxZYGAuCisKKyAgICp6ZGljdCogaXMgYSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiBieXRlcworICAgKHN1Y2ggYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGV4cGVjdGVkCisgICB0byBvY2N1ciBmcmVxdWVudGx5IGluIHRoZSBkYXRhIHRoYXQgaXMgdG8gYmUgY29tcHJlc3NlZC4gVGhvc2Ugc3Vic2VxdWVuY2VzCisgICB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBtb3N0IGNvbW1vbiBzaG91bGQgY29tZSBhdCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICptZXRob2QqLCAqd2JpdHMqLCAqbWVtbGV2ZWwqLCAqc3RyYXRlZ3kqIGFuZCAqemRpY3QqCisgICAgICBwYXJhbWV0ZXJzLgogCiAKIC4uIGZ1bmN0aW9uOjogY3JjMzIoZGF0YVssIHZhbHVlXSkKQEAgLTgyLDEyICsxMDcsMTMgQEAKIAogICAgQWx3YXlzIHJldHVybnMgYW4gdW5zaWduZWQgMzItYml0IGludGVnZXIuCiAKLS4uIG5vdGU6OgotICAgVG8gZ2VuZXJhdGUgdGhlIHNhbWUgbnVtZXJpYyB2YWx1ZSBhY3Jvc3MgYWxsIFB5dGhvbiB2ZXJzaW9ucyBhbmQKLSAgIHBsYXRmb3JtcyB1c2UgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCi0gICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQotICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyYml0IGJpbmFyeSByZXByZXNlbnRhdGlvbgotICAgcmVnYXJkbGVzcyBvZiBzaWduLgorICAgLi4gbm90ZTo6CisKKyAgICAgIFRvIGdlbmVyYXRlIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYWNyb3NzIGFsbCBQeXRob24gdmVyc2lvbnMgYW5kCisgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLiAgSWYgeW91IGFyZSBvbmx5IHVzaW5nCisgICAgICB0aGUgY2hlY2tzdW0gaW4gcGFja2VkIGJpbmFyeSBmb3JtYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJ5IGFzIHRoZQorICAgICAgcmV0dXJuIHZhbHVlIGlzIHRoZSBjb3JyZWN0IDMyLWJpdCBiaW5hcnkgcmVwcmVzZW50YXRpb24KKyAgICAgIHJlZ2FyZGxlc3Mgb2Ygc2lnbi4KIAogCiAuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQpAQCAtMTE0LDExICsxNDAsMjYgQEAKICAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuICBUaGUgZGVmYXVsdCBzaXplIGlzIDE2Mzg0LgogCiAKLS4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaihbd2JpdHNdKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKHdiaXRzPTE1WywgemRpY3RdKQogCiAgICBSZXR1cm5zIGEgZGVjb21wcmVzc2lvbiBvYmplY3QsIHRvIGJlIHVzZWQgZm9yIGRlY29tcHJlc3NpbmcgZGF0YSBzdHJlYW1zIHRoYXQKLSAgIHdvbid0IGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBzaXplIG9mIHRoZQotICAgd2luZG93IGJ1ZmZlci4KKyAgIHdvbid0IGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLgorCisgICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBidWZmZXIuCisKKyAgIFRoZSAqemRpY3QqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkuIElmCisgICBwcm92aWRlZCwgdGhpcyBtdXN0IGJlIHRoZSBzYW1lIGRpY3Rpb25hcnkgYXMgd2FzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdAorICAgcHJvZHVjZWQgdGhlIGRhdGEgdGhhdCBpcyB0byBiZSBkZWNvbXByZXNzZWQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJZiAqemRpY3QqIGlzIGEgbXV0YWJsZSBvYmplY3QgKHN1Y2ggYXMgYSA6Y2xhc3M6YGJ5dGVhcnJheWApLCB5b3UgbXVzdCBub3QKKyAgICAgIG1vZGlmeSBpdHMgY29udGVudHMgYmV0d2VlbiB0aGUgY2FsbCB0byA6ZnVuYzpgZGVjb21wcmVzc29iamAgYW5kIHRoZSBmaXJzdAorICAgICAgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yJ3MgYGBkZWNvbXByZXNzKClgYCBtZXRob2QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnpkaWN0KiBwYXJhbWV0ZXIuCisKIAogQ29tcHJlc3Npb24gb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIApAQCAtMTUwLDcgKzE5MSw3IEBACiAgICBjb21wcmVzcyBhIHNldCBvZiBkYXRhIHRoYXQgc2hhcmUgYSBjb21tb24gaW5pdGlhbCBwcmVmaXguCiAKIAotRGVjb21wcmVzc2lvbiBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzLCBhbmQgdHdvIGF0dHJpYnV0ZXM6CitEZWNvbXByZXNzaW9uIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKIAogLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy51bnVzZWRfZGF0YQpAQCAtMTYwLDEzICsyMDEsNiBAQAogICAgYXZhaWxhYmxlLiAgSWYgdGhlIHdob2xlIGJ5dGVzdHJpbmcgdHVybmVkIG91dCB0byBjb250YWluIGNvbXByZXNzZWQgZGF0YSwgdGhpcyBpcwogICAgYGBiIiJgYCwgYW4gZW1wdHkgYnl0ZXMgb2JqZWN0LgogCi0gICBUaGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIHdoZXJlIGEgYnl0ZXN0cmluZyBvZiBjb21wcmVzc2VkIGRhdGEgZW5kcyBpcyBieSBhY3R1YWxseQotICAgZGVjb21wcmVzc2luZyBpdC4gIFRoaXMgbWVhbnMgdGhhdCB3aGVuIGNvbXByZXNzZWQgZGF0YSBpcyBjb250YWluZWQgcGFydCBvZiBhCi0gICBsYXJnZXIgZmlsZSwgeW91IGNhbiBvbmx5IGZpbmQgdGhlIGVuZCBvZiBpdCBieSByZWFkaW5nIGRhdGEgYW5kIGZlZWRpbmcgaXQKLSAgIGZvbGxvd2VkIGJ5IHNvbWUgbm9uLWVtcHR5IGJ5dGVzdHJpbmcgaW50byBhIGRlY29tcHJlc3Npb24gb2JqZWN0J3MKLSAgIDptZXRoOmBkZWNvbXByZXNzYCBtZXRob2QgdW50aWwgdGhlIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlIGlzIG5vIGxvbmdlcgotICAgZW1wdHkuCi0KIAogLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy51bmNvbnN1bWVkX3RhaWwKIApAQCAtMTc3LDYgKzIxMSwxNyBAQAogICAgOm1ldGg6YGRlY29tcHJlc3NgIG1ldGhvZCBjYWxsIGluIG9yZGVyIHRvIGdldCBjb3JyZWN0IG91dHB1dC4KIAogCisuLiBhdHRyaWJ1dGU6OiBEZWNvbXByZXNzLmVvZgorCisgICBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBzdHJlYW0gaGFzIGJlZW4KKyAgIHJlYWNoZWQuCisKKyAgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHByb3Blcmx5LWZvcm1lZCBjb21wcmVzc2VkCisgICBzdHJlYW0sIGFuZCBhbiBpbmNvbXBsZXRlIG9yIHRydW5jYXRlZCBvbmUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhWywgbWF4X2xlbmd0aF0pCiAKICAgIERlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEKQEAgLTIxMSw2ICsyNTYsMjQgQEAKICAgIHNlZWtzIGludG8gdGhlIHN0cmVhbSBhdCBhIGZ1dHVyZSBwb2ludC4KIAogCitJbmZvcm1hdGlvbiBhYm91dCB0aGUgdmVyc2lvbiBvZiB0aGUgemxpYiBsaWJyYXJ5IGluIHVzZSBpcyBhdmFpbGFibGUgdGhyb3VnaAordGhlIGZvbGxvd2luZyBjb25zdGFudHM6CisKKworLi4gZGF0YTo6IFpMSUJfVkVSU0lPTgorCisgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIHpsaWIgbGlicmFyeSB0aGF0IHdhcyB1c2VkIGZvciBidWlsZGluZyB0aGUgbW9kdWxlLgorICAgVGhpcyBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgbGlicmFyeSBhY3R1YWxseSB1c2VkIGF0IHJ1bnRpbWUsIHdoaWNoCisgICBpcyBhdmFpbGFibGUgYXMgOmNvbnN0OmBaTElCX1JVTlRJTUVfVkVSU0lPTmAuCisKKworLi4gZGF0YTo6IFpMSUJfUlVOVElNRV9WRVJTSU9OCisKKyAgIFRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgemxpYiBsaWJyYXJ5IGFjdHVhbGx5IGxvYWRlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgZ3ppcGAKZGlmZiAtLWdpdCBhL0RvYy9saWNlbnNlLnJzdCBiL0RvYy9saWNlbnNlLnJzdAppbmRleCBhNDRmYTA0Li42MzI2Y2U0IDEwMDY0NAotLS0gYS9Eb2MvbGljZW5zZS5yc3QKKysrIGIvRG9jL2xpY2Vuc2UucnN0CkBAIC0xMjAsNiArMTIwLDggQEAKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCiB8IDMuMi4zICAgICAgICAgIHwgMy4yLjIgICAgICAgIHwgMjAxMiAgICAgICB8IFBTRiAgICAgICAgfCB5ZXMgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKK3wgMy4zLjAgICAgICAgICAgfCAzLjIgICAgICAgICAgfCAyMDEyICAgICAgIHwgUFNGICAgICAgICB8IHllcyAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDRlYTJkNTEuLmEyMjIwYzAgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTM3LDcgKzM3LDcgQEAKIHN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvU3BoaW54LTEuMC43L3NwaGlueCB0b29scy9zcGhpbngKIHN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvZG9jdXRpbHMtMC42L2RvY3V0aWxzIHRvb2xzL2RvY3V0aWxzCiBzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL0ppbmphLTIuMy4xL2ppbmphMiB0b29scy9qaW5qYTIKLXN2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvUHlnbWVudHMtMS4zLjEvcHlnbWVudHMgdG9vbHMvcHlnbWVudHMKK3N2biBjbyAlU1ZOUk9PVCUvZXh0ZXJuYWwvUHlnbWVudHMtMS41ZGV2LTIwMTIwOTMwL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzCiBnb3RvIGVuZAogCiA6dXBkYXRlCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggMmRkYjg1Mi4uMWM4YzE5MCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtMzUsMTIgKzM1LDE5IEBACiBFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3QncyAqaWRlbnRpdHkqIG5ldmVyCiBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdCBhcyB0aGUgb2JqZWN0J3MgYWRkcmVzcyBpbgogbWVtb3J5LiAgVGhlICc6a2V5d29yZDpgaXNgJyBvcGVyYXRvciBjb21wYXJlcyB0aGUgaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZQotOmZ1bmM6YGlkYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eSAoY3VycmVudGx5Ci1pbXBsZW1lbnRlZCBhcyBpdHMgYWRkcmVzcykuIEFuIG9iamVjdCdzIDpkZm46YHR5cGVgIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbI11fCis6ZnVuYzpgaWRgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LgorCisuLiBpbXBsLWRldGFpbDo6CisKKyAgIEZvciBDUHl0aG9uLCBgYGlkKHgpYGAgaXMgdGhlIG1lbW9yeSBhZGRyZXNzIHdoZXJlIGBgeGBgIGlzIHN0b3JlZC4KKwogQW4gb2JqZWN0J3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0cyAoZS5nLiwgImRvZXMKIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBvYmplY3RzIG9mIHRoYXQKIHR5cGUuICBUaGUgOmZ1bmM6YHR5cGVgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0J3MgdHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0Ci1pdHNlbGYpLiAgVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhbgoraXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3QncyA6ZGZuOmB0eXBlYCBpcyBhbHNvIHVuY2hhbmdlYWJsZS4KK1sjXV8KKworVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhbgogY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyB1bmNoYW5nZWFibGUgb25jZSB0aGV5CiBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuIGltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0CiB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXIncyB2YWx1ZQpAQCAtMjc2LDE2ICsyODMsMTYgQEAKICAgICAgICAgICAgIHNpbmdsZTogaW50ZWdlcgogICAgICAgICAgICAgc2luZ2xlOiBVbmljb2RlCiAKLSAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHN0cmluZyBvYmplY3QgYXJlIFVuaWNvZGUgY29kZSB1bml0cy4gIEEgVW5pY29kZSBjb2RlCi0gICAgICAgICB1bml0IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIG9iamVjdCBvZiBvbmUgaXRlbSBhbmQgY2FuIGhvbGQgZWl0aGVyCi0gICAgICAgICBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWUgcmVwcmVzZW50aW5nIGEgVW5pY29kZSBvcmRpbmFsICh0aGUgbWF4aW11bQotICAgICAgICAgdmFsdWUgZm9yIHRoZSBvcmRpbmFsIGlzIGdpdmVuIGluIGBgc3lzLm1heHVuaWNvZGVgYCwgYW5kIGRlcGVuZHMgb24KLSAgICAgICAgIGhvdyBQeXRob24gaXMgY29uZmlndXJlZCBhdCBjb21waWxlIHRpbWUpLiAgU3Vycm9nYXRlIHBhaXJzIG1heSBiZQotICAgICAgICAgcHJlc2VudCBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZCB3aWxsIGJlIHJlcG9ydGVkIGFzIHR3byBzZXBhcmF0ZQotICAgICAgICAgaXRlbXMuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25zIDpmdW5jOmBjaHJgIGFuZCA6ZnVuYzpgb3JkYCBjb252ZXJ0Ci0gICAgICAgICBiZXR3ZWVuIGNvZGUgdW5pdHMgYW5kIG5vbm5lZ2F0aXZlIGludGVnZXJzIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZQotICAgICAgICAgb3JkaW5hbHMgYXMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBTdGFuZGFyZCAzLjAuIENvbnZlcnNpb24gZnJvbSBhbmQgdG8KLSAgICAgICAgIG90aGVyIGVuY29kaW5ncyBhcmUgcG9zc2libGUgdGhyb3VnaCB0aGUgc3RyaW5nIG1ldGhvZCA6bWV0aDpgZW5jb2RlYC4KKyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgY29kZXBvaW50cy4KKyAgICAgICAgIEFsbCB0aGUgY29kZXBvaW50cyBpbiByYW5nZSBgYFUrMDAwMCAtIFUrMTBGRkZGYGAgY2FuIGJlIHJlcHJlc2VudGVkCisgICAgICAgICBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSA6Yzp0eXBlOmBjaHJgIHR5cGUsIGFuZAorICAgICAgICAgZXZlcnkgY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcgb2JqZWN0CisgICAgICAgICB3aXRoIGxlbmd0aCBgYDFgYC4gIFRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3JkYCBjb252ZXJ0cyBhCisgICAgICAgICBjaGFyYWN0ZXIgdG8gaXRzIGNvZGVwb2ludCAoYXMgYW4gaW50ZWdlcik7IDpmdW5jOmBjaHJgIGNvbnZlcnRzCisgICAgICAgICBhbiBpbnRlZ2VyIGluIHJhbmdlIGBgMCAtIDEwRkZGRmBgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4KKyAgICAgICAgIDptZXRoOmBzdHIuZW5jb2RlYCBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgOmNsYXNzOmBzdHJgIHRvCisgICAgICAgICA6Y2xhc3M6YGJ5dGVzYCB1c2luZyB0aGUgZ2l2ZW4gZW5jb2RpbmcsIGFuZCA6bWV0aDpgYnl0ZXMuZGVjb2RlYCBjYW4KKyAgICAgICAgIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuCiAKICAgICAgIFR1cGxlcwogICAgICAgICAgLi4gaW5kZXg6OgpAQCAtNDQ4LDYgKzQ1NSwxMSBAQAogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKICAgICAgIHwgOmF0dHI6YF9fbmFtZV9fYCAgICAgICAgfCBUaGUgZnVuY3Rpb24ncyBuYW1lICAgICAgICAgICB8IFdyaXRhYmxlICB8CiAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKworICAgICAgfCA6YXR0cjpgX19xdWFsbmFtZV9fYCAgICB8IFRoZSBmdW5jdGlvbidzICAgICAgICAgICAgICAgIHwgV3JpdGFibGUgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCA6dGVybTpgcXVhbGlmaWVkIG5hbWVgICAgICAgICB8ICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuMyAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCiAgICAgICB8IDphdHRyOmBfX21vZHVsZV9fYCAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgfCBXcml0YWJsZSAgfAogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgIHwgICAgICAgICAgIHwKICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS4gICAgICB8ICAgICAgICAgICB8CkBAIC02MzksMTcgKzY1MSwyMCBAQAogICAgICAgc3RhdGVtZW50OiBpbXBvcnQKICAgICAgIG9iamVjdDogbW9kdWxlCiAKLSAgIE1vZHVsZXMgYXJlIGltcG9ydGVkIGJ5IHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgKHNlZSBzZWN0aW9uCi0gICA6cmVmOmBpbXBvcnRgKS4gQSBtb2R1bGUgb2JqZWN0IGhhcyBhCi0gICBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpcyB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkCi0gICBieSB0aGUgX19nbG9iYWxzX18gYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlCi0gICByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYG0ueGBgIGlzCi0gICBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdYGAuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlCi0gICBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzbid0IG5lZWRlZCBvbmNlIHRoZQotICAgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuCisgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmUgY3JlYXRlZCBieQorICAgdGhlIDpyZWY6YGltcG9ydCBzeXN0ZW0gPGltcG9ydHN5c3RlbT5gIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZQorICAgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IChzZWUgOmtleXdvcmQ6YGltcG9ydGApLCBvciBieSBjYWxsaW5nCisgICBmdW5jdGlvbnMgc3VjaCBhcyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIGFuZCBidWlsdC1pbgorICAgOmZ1bmM6YF9faW1wb3J0X19gLiAgQSBtb2R1bGUgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhCisgICBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpcyB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZ2xvYmFsc19fYGAKKyAgIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZQorICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpcyBlcXVpdmFsZW50IHRvCisgICBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZSBvYmplY3QgdXNlZAorICAgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMKKyAgIGRvbmUpLgogCi0gICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnggPQotICAgMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuCisgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSwgZS5nLiwKKyAgIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBfX2RpY3RfXyAobW9kdWxlIGF0dHJpYnV0ZSkKIApAQCAtNjcxLDExICs2ODYsMTIgQEAKIAogICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IDphdHRyOmBfX25hbWVfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWU7CiAgICA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZgotICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlIG1vZHVsZQotICAgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlIGlzIG5vdAotICAgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IKLSAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZQotICAgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuCisgICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUKKyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYAorICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQyBtb2R1bGVzCisgICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzCisgICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZAorICAgbGlicmFyeSBmaWxlLgogCiBDdXN0b20gY2xhc3NlcwogICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlIHNlY3Rpb24KQEAgLTEyNTAsMTAgKzEyNjYsMTAgQEAKICAgIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaAogICAgYnVja2V0KS4KIAotCiAgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlIDptZXRoOmBfX2VxX19gIGFuZCA6bWV0aDpgX19oYXNoX19gIG1ldGhvZHMKICAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aCB0aGVtc2VsdmVzKQotICAgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBgYGlkKHgpYGAuCisgICBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2ggdGhhdCBgYHggPT0geWBgCisgICBpbXBsaWVzIGJvdGggdGhhdCBgYHggaXMgeWBgIGFuZCBgYGhhc2goeCkgPT0gaGFzaCh5KWBgLgogCiAgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIDptZXRoOmBfX2VxX19gIGFuZCBkb2VzIG5vdCBkZWZpbmUgOm1ldGg6YF9faGFzaF9fYAogICAgd2lsbCBoYXZlIGl0cyA6bWV0aDpgX19oYXNoX19gIGltcGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLiAgV2hlbiB0aGUKQEAgLTEyNzIsNyArMTI4OCwyNyBAQAogICAgYSA6ZXhjOmBUeXBlRXJyb3JgIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgaGFzaGFibGUgYnkKICAgIGFuIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgIGNhbGwuCiAKLSAgIFNlZSBhbHNvIHRoZSA6b3B0aW9uOmAtUmAgY29tbWFuZC1saW5lIG9wdGlvbi4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEJ5IGRlZmF1bHQsIHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZQorICAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS4gIEFsdGhvdWdoIHRoZXkKKyAgICAgIHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob24gcHJvY2VzcywgdGhleSBhcmUgbm90CisgICAgICBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mIFB5dGhvbi4KKworICAgICAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1vZi1zZXJ2aWNlIGNhdXNlZAorICAgICAgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEKKyAgICAgIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQorICAgICAgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvciBkZXRhaWxzLgorCisgICAgICBDaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2YgZGljdHMsIHNldHMgYW5kCisgICAgICBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzIGFib3V0IHRoaXMgb3JkZXJpbmcKKyAgICAgIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IGJ1aWxkcykuCisKKyAgICAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCiAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fYm9vbF9fKHNlbGYpCkBAIC0xMzUzLDcgKzEzODksOCBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19kaXJfXyhzZWxmKQogCi0gICBDYWxsZWQgd2hlbiA6ZnVuYzpgZGlyYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlIHJldHVybmVkLgorICAgQ2FsbGVkIHdoZW4gOmZ1bmM6YGRpcmAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZQorICAgcmV0dXJuZWQuIDpmdW5jOmBkaXJgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kIHNvcnRzIGl0LgogCiAKIC4uIF9kZXNjcmlwdG9yczoKQEAgLTE1MjQsNTMgKzE1NjEsMTE1IEBACiBDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBBIGNsYXNzIGRlZmluaXRpb24gaXMKLXJlYWQgaW50byBhIHNlcGFyYXRlIG5hbWVzcGFjZSBhbmQgdGhlIHZhbHVlIG9mIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhlCi1yZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBkaWN0KWBgLgorQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBUaGUgY2xhc3MgYm9keSBpcworZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZQorcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKWBgLgogCi1XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHJlYWQsIGlmIGEgY2FsbGFibGUgYGBtZXRhY2xhc3NgYCBrZXl3b3JkIGFyZ3VtZW50Ci1pcyBwYXNzZWQgYWZ0ZXIgdGhlIGJhc2VzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLCB0aGUgY2FsbGFibGUgZ2l2ZW4gd2lsbCBiZQotY2FsbGVkIGluc3RlYWQgb2YgOmZ1bmM6YHR5cGVgLiAgSWYgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCwgdGhleQotd2lsbCBhbHNvIGJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzLiAgVGhpcyBhbGxvd3MgY2xhc3NlcyBvciBmdW5jdGlvbnMgdG8gYmUKLXdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzczoKK1RoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlIGBgbWV0YWNsYXNzYGAKK2tleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnkgaW5oZXJpdGluZyBmcm9tIGFuCitleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwKK2JvdGggYGBNeUNsYXNzYGAgYW5kIGBgTXlTdWJjbGFzc2BgIGFyZSBpbnN0YW5jZXMgb2YgYGBNZXRhYGA6OgogCi0qIE1vZGlmeWluZyB0aGUgY2xhc3MgZGljdGlvbmFyeSBwcmlvciB0byB0aGUgY2xhc3MgYmVpbmcgY3JlYXRlZC4KKyAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgcGFzcwogCi0qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmcgdGhlIHJvbGUgb2YgYQotICBmYWN0b3J5IGZ1bmN0aW9uLgorICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgcGFzcwogCi1UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3MncyA6bWV0aDpgX19uZXdfX2AgbWV0aG9kCi0tLSA6bWV0aDpgdHlwZS5fX25ld19fYCBjYW4gdGhlbiBiZSBjYWxsZWQgZnJvbSB0aGlzIG1ldGhvZCB0byBjcmVhdGUgYSBjbGFzcwotd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gIFRoaXMgZXhhbXBsZSBhZGRzIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGNsYXNzCi1kaWN0aW9uYXJ5IGJlZm9yZSBjcmVhdGluZyB0aGUgY2xhc3M6OgorICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKToKKyAgICAgICBwYXNzCiAKLSAgY2xhc3MgbWV0YWNscyh0eXBlKToKLSAgICAgIGRlZiBfX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpOgotICAgICAgICAgIGRpY3RbJ2ZvbyddID0gJ21ldGFjbHMgd2FzIGhlcmUnCi0gICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkaWN0KQorQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmUKK3Bhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuCiAKLVlvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkIG5ldyBtZXRob2RzKTsgZm9yCi1leGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tIDptZXRoOmBfX2NhbGxfX2AgbWV0aG9kIGluIHRoZSBtZXRhY2xhc3MgYWxsb3dzIGN1c3RvbQotYmVoYXZpb3Igd2hlbiB0aGUgY2xhc3MgaXMgY2FsbGVkLCBlLmcuIG5vdCBhbHdheXMgY3JlYXRpbmcgYSBuZXcgaW5zdGFuY2UuCitXaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjoKIAotSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSA6bWV0aDpgX19wcmVwYXJlX19gIGF0dHJpYnV0ZSAodXN1YWxseSBpbXBsZW1lbnRlZCBhcyBhCi1jbGFzcyBvciBzdGF0aWMgbWV0aG9kKSwgaXQgaXMgY2FsbGVkIGJlZm9yZSB0aGUgY2xhc3MgYm9keSBpcyBldmFsdWF0ZWQgd2l0aAotdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGFuZCBhIHR1cGxlIG9mIGl0cyBiYXNlcyBmb3IgYXJndW1lbnRzLiAgSXQgc2hvdWxkIHJldHVybgotYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlIG1hcHBpbmcgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHN0b3JlIHRoZQotbmFtZXNwYWNlIG9mIHRoZSBjbGFzcy4gIFRoZSBkZWZhdWx0IGlzIGEgcGxhaW4gZGljdGlvbmFyeS4gIFRoaXMgY291bGQgYmUgdXNlZCwKLWZvciBleGFtcGxlLCB0byBrZWVwIHRyYWNrIG9mIHRoZSBvcmRlciB0aGF0IGNsYXNzIGF0dHJpYnV0ZXMgYXJlIGRlY2xhcmVkIGluIGJ5Ci1yZXR1cm5pbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgorKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWQKKyogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZAorKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZAorKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQKIAotVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHJlY2VkZW5jZSBydWxlczoKK0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotKiBJZiB0aGUgYGBtZXRhY2xhc3NgYCBrZXl3b3JkIGFyZ3VtZW50IGlzIHBhc3NlZCB3aXRoIHRoZSBiYXNlcywgaXQgaXMgdXNlZC4KK1RoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6CiAKLSogT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYmFzZSBjbGFzcywgaXRzIG1ldGFjbGFzcyBpcyB1c2VkLgorKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiA6ZnVuYzpgdHlwZWAgaXMgdXNlZAorKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mCisgIDpmdW5jOmB0eXBlYCwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3MKKyogaWYgYW4gaW5zdGFuY2Ugb2YgOmZ1bmM6YHR5cGVgIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yCisgIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWQKIAotKiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyAoOmNsYXNzOmB0eXBlYCkgaXMgdXNlZC4KK1RoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCittZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiBgYHR5cGUoY2xzKWBgKSBvZiBhbGwgc3BlY2lmaWVkCitiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhIHN1YnR5cGUgb2YgKmFsbCoKK29mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzCit0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiB3aWxsIGZhaWwgd2l0aCBgYFR5cGVFcnJvcmBgLgorCisKK1ByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitPbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3MgbmFtZXNwYWNlCitpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQKK2FzIGBgbmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZQorYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLgorCitJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKK2lzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IDpmdW5jOmBkaWN0YCBpbnN0YW5jZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMTVgIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDAKKyAgICAgIEludHJvZHVjZWQgdGhlIGBgX19wcmVwYXJlX19gYCBuYW1lc3BhY2UgaG9vaworCisKK0V4ZWN1dGluZyB0aGUgY2xhc3MgYm9keQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcworYGBleGVjKGJvZHksIGdsb2JhbHMoKSwgbmFtZXNwYWNlKWBgLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbAorY2FsbCB0byA6ZnVuYzpgZXhlY2AgaXMgdGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcKK2FueSBtZXRob2RzKSB0byByZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlCitjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi4KKworSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLCBtZXRob2RzCitkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZSBjbGFzcyBzY29wZS4KK0NsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0IHBhcmFtZXRlciBvZiBpbnN0YW5jZSBvcgorY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGwgZnJvbSBzdGF0aWMgbWV0aG9kcy4KKworCitDcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK09uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5LAordGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcKK2BgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcylgYCAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMKK3Bhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBwYXNzZWQgdG8gYGBfX3ByZXBhcmVfX2BgKS4KKworVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1hcmd1bWVudAorZm9ybSBvZiA6ZnVuYzpgc3VwZXJgLiBgYF9fY2xhc3NfX2BgIGlzIGFuIGltcGxpY2l0IGNsb3N1cmUgcmVmZXJlbmNlCitjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXIgdG8gZWl0aGVyCitgYF9fY2xhc3NfX2BgIG9yIGBgc3VwZXJgYC4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnQgZm9ybSBvZgorOmZ1bmM6YHN1cGVyYCB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb24KK2xleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGUKK2N1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIG1ldGhvZC4KKworQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzIGRlY29yYXRvcnMKK2luY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nIG9iamVjdCBpcyBib3VuZAoraW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMzVgIC0gTmV3IHN1cGVyCisgICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZSByZWZlcmVuY2UKKworCitNZXRhY2xhc3MgZXhhbXBsZQorXl5eXl5eXl5eXl5eXl5eXl4KIAogVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZSBiZWVuCi1leHBsb3JlZCBpbmNsdWRpbmcgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWMgZGVsZWdhdGlvbiwgYXV0b21hdGljCitleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljIGRlbGVnYXRpb24sIGF1dG9tYXRpYwogcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZCBhdXRvbWF0aWMgcmVzb3VyY2UKIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLgogCkBAIC0xNTgzLDkgKzE2ODIsOSBAQAogICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOgogICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKIAotICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgY2xhc3NkaWN0KToKLSAgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KGNsYXNzZGljdCkpCi0gICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKGNsYXNzZGljdCkKKyAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKToKKyAgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpCisgICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdCBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CmluZGV4IDcyYWQ5NWUuLmE1ZjM3NjYgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CkBAIC0zMTgsNyArMzE4LDcgQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgeWllbGRfYXRvbTogIigiIGB5aWVsZF9leHByZXNzaW9uYCAiKSIKLSAgIHlpZWxkX2V4cHJlc3Npb246ICJ5aWVsZCIgW2BleHByZXNzaW9uX2xpc3RgXQorICAgeWllbGRfZXhwcmVzc2lvbjogInlpZWxkIiBbYGV4cHJlc3Npb25fbGlzdGAgfCAiZnJvbSIgYGV4cHJlc3Npb25gXQogCiBUaGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLAogYW5kIGNhbiBvbmx5IGJlIHVzZWQgaW4gdGhlIGJvZHkgb2YgYSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVXNpbmcgYQpAQCAtMzM2LDcgKzMzNiwxMCBAQAogdGhlIGdlbmVyYXRvcidzIG1ldGhvZHMsIHRoZSBmdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZQogOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIHdhcyBqdXN0IGFub3RoZXIgZXh0ZXJuYWwgY2FsbC4gIFRoZSB2YWx1ZSBvZiB0aGUKIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBhZnRlciByZXN1bWluZyBkZXBlbmRzIG9uIHRoZSBtZXRob2Qgd2hpY2ggcmVzdW1lZAotdGhlIGV4ZWN1dGlvbi4KK3RoZSBleGVjdXRpb24uIElmIDptZXRoOmBfX25leHRfX2AgaXMgdXNlZCAodHlwaWNhbGx5IHZpYSBlaXRoZXIgYQorOmtleXdvcmQ6YGZvcmAgb3IgdGhlIDpmdW5jOmBuZXh0YCBidWlsdGluKSB0aGVuIHRoZSByZXN1bHQgaXMgOmNvbnN0OmBOb25lYCwKK290aGVyd2lzZSwgaWYgOm1ldGg6YHNlbmRgIGlzIHVzZWQsIHRoZW4gdGhlIHJlc3VsdCB3aWxsIGJlIHRoZSB2YWx1ZSBwYXNzZWQKK2luIHRvIHRoYXQgbWV0aG9kLgogCiAuLiBpbmRleDo6IHNpbmdsZTogY29yb3V0aW5lCiAKQEAgLTM0NiwxMiArMzQ5LDMyIEBACiB3aGVyZSBzaG91bGQgdGhlIGV4ZWN1dGlvbiBjb250aW51ZSBhZnRlciBpdCB5aWVsZHM7IHRoZSBjb250cm9sIGlzIGFsd2F5cwogdHJhbnNmZXJyZWQgdG8gdGhlIGdlbmVyYXRvcidzIGNhbGxlci4KIAotVGhlIDprZXl3b3JkOmB5aWVsZGAgc3RhdGVtZW50IGlzIGFsbG93ZWQgaW4gdGhlIDprZXl3b3JkOmB0cnlgIGNsYXVzZSBvZiBhCis6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGluIHRoZSA6a2V5d29yZDpgdHJ5YCBjbGF1c2Ugb2YgYQogOmtleXdvcmQ6YHRyeWAgLi4uICA6a2V5d29yZDpgZmluYWxseWAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QKIHJlc3VtZWQgYmVmb3JlIGl0IGlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZwogZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgOm1ldGg6YGNsb3NlYCBtZXRob2Qgd2lsbCBiZQogY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlcyB0byBleGVjdXRlLgogCitXaGVuIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCBpcyB1c2VkLCBpdCB0cmVhdHMgdGhlIHN1cHBsaWVkIGV4cHJlc3Npb24gYXMKK2Egc3ViaXRlcmF0b3IuIEFsbCB2YWx1ZXMgcHJvZHVjZWQgYnkgdGhhdCBzdWJpdGVyYXRvciBhcmUgcGFzc2VkIGRpcmVjdGx5Cit0byB0aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGdlbmVyYXRvcidzIG1ldGhvZHMuIEFueSB2YWx1ZXMgcGFzc2VkIGluIHdpdGgKKzptZXRoOmBzZW5kYCBhbmQgYW55IGV4Y2VwdGlvbnMgcGFzc2VkIGluIHdpdGggOm1ldGg6YHRocm93YCBhcmUgcGFzc2VkIHRvCit0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpZiBpdCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1ldGhvZHMuIElmIHRoaXMgaXMgbm90IHRoZQorY2FzZSwgdGhlbiA6bWV0aDpgc2VuZGAgd2lsbCByYWlzZSA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgb3IgOmV4YzpgVHlwZUVycm9yYCwKK3doaWxlIDptZXRoOmB0aHJvd2Agd2lsbCBqdXN0IHJhaXNlIHRoZSBwYXNzZWQgaW4gZXhjZXB0aW9uIGltbWVkaWF0ZWx5LgorCitXaGVuIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIGlzIGNvbXBsZXRlLCB0aGUgOmF0dHI6YH5TdG9wSXRlcmF0aW9uLnZhbHVlYAorYXR0cmlidXRlIG9mIHRoZSByYWlzZWQgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW5zdGFuY2UgYmVjb21lcyB0aGUgdmFsdWUgb2YKK3RoZSB5aWVsZCBleHByZXNzaW9uLiBJdCBjYW4gYmUgZWl0aGVyIHNldCBleHBsaWNpdGx5IHdoZW4gcmFpc2luZworOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIG9yIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgc3ViLWl0ZXJhdG9yIGlzIGEgZ2VuZXJhdG9yCisoYnkgcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgc3ViLWdlbmVyYXRvcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBgYHlpZWxkIGZyb20gPGV4cHI+YGAgdG8gZGVsZWdhdGUgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3IKKworVGhlIHBhcmVudGhlc2VzIGNhbiBiZSBvbWl0dGVkIHdoZW4gdGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBpcyB0aGUKK3NvbGUgZXhwcmVzc2lvbiBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50LgorCiAuLiBpbmRleDo6IG9iamVjdDogZ2VuZXJhdG9yCiAKIApAQCAtNDUxLDYgKzQ3NCwxMCBAQAogICAgICAgVGhlIHByb3Bvc2FsIHRvIGVuaGFuY2UgdGhlIEFQSSBhbmQgc3ludGF4IG9mIGdlbmVyYXRvcnMsIG1ha2luZyB0aGVtCiAgICAgICB1c2FibGUgYXMgc2ltcGxlIGNvcm91dGluZXMuCiAKKyAgIDpwZXA6YDAzODBgIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCisgICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSA6dG9rZW46YHlpZWxkX2Zyb21gIHN5bnRheCwgbWFraW5nIGRlbGVnYXRpb24KKyAgICAgIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuCisKIAogLi4gX3ByaW1hcmllczoKIApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ODhlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTAsMCArMSw2OTcgQEAKKworLi4gX2ltcG9ydHN5c3RlbToKKworKioqKioqKioqKioqKioqKioKK1RoZSBpbXBvcnQgc3lzdGVtCisqKioqKioqKioqKioqKioqKgorCisuLiBpbmRleDo6IHNpbmdsZTogaW1wb3J0IG1hY2hpbmVyeQorCitQeXRob24gY29kZSBpbiBvbmUgOnRlcm06YG1vZHVsZWAgZ2FpbnMgYWNjZXNzIHRvIHRoZSBjb2RlIGluIGFub3RoZXIgbW9kdWxlCitieSB0aGUgcHJvY2VzcyBvZiA6dGVybTpgaW1wb3J0aW5nYCBpdC4gIFRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaXMKK3RoZSBtb3N0IGNvbW1vbiB3YXkgb2YgaW52b2tpbmcgdGhlIGltcG9ydCBtYWNoaW5lcnksIGJ1dCBpdCBpcyBub3QgdGhlIG9ubHkKK3dheS4gIEZ1bmN0aW9ucyBzdWNoIGFzIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgYW5kIGJ1aWx0LWluCis6ZnVuYzpgX19pbXBvcnRfX2AgY2FuIGFsc28gYmUgdXNlZCB0byBpbnZva2UgdGhlIGltcG9ydCBtYWNoaW5lcnkuCisKK1RoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgY29tYmluZXMgdHdvIG9wZXJhdGlvbnM7IGl0IHNlYXJjaGVzIGZvciB0aGUKK25hbWVkIG1vZHVsZSwgdGhlbiBpdCBiaW5kcyB0aGUgcmVzdWx0cyBvZiB0aGF0IHNlYXJjaCB0byBhIG5hbWUgaW4gdGhlIGxvY2FsCitzY29wZS4gIFRoZSBzZWFyY2ggb3BlcmF0aW9uIG9mIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaXMgZGVmaW5lZCBhcworYSBjYWxsIHRvIHRoZSA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24sIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4KK1RoZSByZXR1cm4gdmFsdWUgb2YgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHVzZWQgdG8gcGVyZm9ybSB0aGUgbmFtZQorYmluZGluZyBvcGVyYXRpb24gb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4gIFNlZSB0aGUKKzprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBmb3IgdGhlIGV4YWN0IGRldGFpbHMgb2YgdGhhdCBuYW1lIGJpbmRpbmcKK29wZXJhdGlvbi4KKworQSBkaXJlY3QgY2FsbCB0byA6ZnVuYzpgX19pbXBvcnRfX2AgcGVyZm9ybXMgb25seSB0aGUgbW9kdWxlIHNlYXJjaCBhbmQsIGlmCitmb3VuZCwgdGhlIG1vZHVsZSBjcmVhdGlvbiBvcGVyYXRpb24uICBXaGlsZSBjZXJ0YWluIHNpZGUtZWZmZWN0cyBtYXkgb2NjdXIsCitzdWNoIGFzIHRoZSBpbXBvcnRpbmcgb2YgcGFyZW50IHBhY2thZ2VzLCBhbmQgdGhlIHVwZGF0aW5nIG9mIHZhcmlvdXMgY2FjaGVzCisoaW5jbHVkaW5nIDpkYXRhOmBzeXMubW9kdWxlc2ApLCBvbmx5IHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgcGVyZm9ybXMKK2EgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbi4KKworV2hlbiBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYCBhcyBwYXJ0IG9mIGFuIGltcG9ydCBzdGF0ZW1lbnQsIHRoZQoraW1wb3J0IHN5c3RlbSBmaXJzdCBjaGVja3MgdGhlIG1vZHVsZSBnbG9iYWwgbmFtZXNwYWNlIGZvciBhIGZ1bmN0aW9uIGJ5Cit0aGF0IG5hbWUuIElmIGl0IGlzIG5vdCBmb3VuZCwgdGhlbiB0aGUgc3RhbmRhcmQgYnVpbHRpbiA6ZnVuYzpgX19pbXBvcnRfX2AKK2lzIGNhbGxlZC4gT3RoZXIgbWVjaGFuaXNtcyBmb3IgaW52b2tpbmcgdGhlIGltcG9ydCBzeXN0ZW0gKHN1Y2ggYXMKKzpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWApIGRvIG5vdCBwZXJmb3JtIHRoaXMgY2hlY2sgYW5kIHdpbGwgYWx3YXlzCit1c2UgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0uCisKK1doZW4gYSBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIFB5dGhvbiBzZWFyY2hlcyBmb3IgdGhlIG1vZHVsZSBhbmQgaWYgZm91bmQsCitpdCBjcmVhdGVzIGEgbW9kdWxlIG9iamVjdCBbI2ZubW9dXywgaW5pdGlhbGl6aW5nIGl0LiAgSWYgdGhlIG5hbWVkIG1vZHVsZQorY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cworc3RyYXRlZ2llcyB0byBzZWFyY2ggZm9yIHRoZSBuYW1lZCBtb2R1bGUgd2hlbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpcworaW52b2tlZC4gIFRoZXNlIHN0cmF0ZWdpZXMgY2FuIGJlIG1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSB1c2luZyB2YXJpb3VzIGhvb2tzCitkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb25zIGJlbG93LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGltcG9ydCBzeXN0ZW0gaGFzIGJlZW4gdXBkYXRlZCB0byBmdWxseSBpbXBsZW1lbnQgdGhlIHNlY29uZCBwaGFzZQorICAgb2YgUEVQIDMwMi4gVGhlcmUgaXMgbm8gbG9uZ2VyIGFueSBpbXBsaWNpdCBpbXBvcnQgbWFjaGluZXJ5IC0gdGhlIGZ1bGwKKyAgIGltcG9ydCBzeXN0ZW0gaXMgZXhwb3NlZCB0aHJvdWdoIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gSW4gYWRkaXRpb24sCisgICBuYXRpdmUgbmFtZXNwYWNlIHBhY2thZ2Ugc3VwcG9ydCBoYXMgYmVlbiBpbXBsZW1lbnRlZCAoc2VlIFBFUCA0MjApLgorCisKKzptb2Q6YGltcG9ydGxpYmAKKz09PT09PT09PT09PT09PT0KKworVGhlIDptb2Q6YGltcG9ydGxpYmAgbW9kdWxlIHByb3ZpZGVzIGEgcmljaCBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlCitpbXBvcnQgc3lzdGVtLiAgRm9yIGV4YW1wbGUgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBwcm92aWRlcyBhCityZWNvbW1lbmRlZCwgc2ltcGxlciBBUEkgdGhhbiBidWlsdC1pbiA6ZnVuYzpgX19pbXBvcnRfX2AgZm9yIGludm9raW5nIHRoZQoraW1wb3J0IG1hY2hpbmVyeS4gIFJlZmVyIHRvIHRoZSA6bW9kOmBpbXBvcnRsaWJgIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IKK2FkZGl0aW9uYWwgZGV0YWlsLgorCisKKworUGFja2FnZXMKKz09PT09PT09CisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHBhY2thZ2UKKworUHl0aG9uIGhhcyBvbmx5IG9uZSB0eXBlIG9mIG1vZHVsZSBvYmplY3QsIGFuZCBhbGwgbW9kdWxlcyBhcmUgb2YgdGhpcyB0eXBlLAorcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBtb2R1bGUgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCBDLCBvciBzb21ldGhpbmcKK2Vsc2UuICBUbyBoZWxwIG9yZ2FuaXplIG1vZHVsZXMgYW5kIHByb3ZpZGUgYSBuYW1pbmcgaGllcmFyY2h5LCBQeXRob24gaGFzIGEKK2NvbmNlcHQgb2YgOnRlcm06YHBhY2thZ2VzIDxwYWNrYWdlPmAuCisKK1lvdSBjYW4gdGhpbmsgb2YgcGFja2FnZXMgYXMgdGhlIGRpcmVjdG9yaWVzIG9uIGEgZmlsZSBzeXN0ZW0gYW5kIG1vZHVsZXMgYXMKK2ZpbGVzIHdpdGhpbiBkaXJlY3RvcmllcywgYnV0IGRvbid0IHRha2UgdGhpcyBhbmFsb2d5IHRvbyBsaXRlcmFsbHkgc2luY2UKK3BhY2thZ2VzIGFuZCBtb2R1bGVzIG5lZWQgbm90IG9yaWdpbmF0ZSBmcm9tIHRoZSBmaWxlIHN5c3RlbS4gIEZvciB0aGUKK3B1cnBvc2VzIG9mIHRoaXMgZG9jdW1lbnRhdGlvbiwgd2UnbGwgdXNlIHRoaXMgY29udmVuaWVudCBhbmFsb2d5IG9mCitkaXJlY3RvcmllcyBhbmQgZmlsZXMuICBMaWtlIGZpbGUgc3lzdGVtIGRpcmVjdG9yaWVzLCBwYWNrYWdlcyBhcmUgb3JnYW5pemVkCitoaWVyYXJjaGljYWxseSwgYW5kIHBhY2thZ2VzIG1heSB0aGVtc2VsdmVzIGNvbnRhaW4gc3VicGFja2FnZXMsIGFzIHdlbGwgYXMKK3JlZ3VsYXIgbW9kdWxlcy4KKworSXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgYWxsIHBhY2thZ2VzIGFyZSBtb2R1bGVzLCBidXQgbm90IGFsbAorbW9kdWxlcyBhcmUgcGFja2FnZXMuICBPciBwdXQgYW5vdGhlciB3YXksIHBhY2thZ2VzIGFyZSBqdXN0IGEgc3BlY2lhbCBraW5kIG9mCittb2R1bGUuICBTcGVjaWZpY2FsbHksIGFueSBtb2R1bGUgdGhhdCBjb250YWlucyBhIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgaXMKK2NvbnNpZGVyZWQgYSBwYWNrYWdlLgorCitBbGwgbW9kdWxlcyBoYXZlIGEgbmFtZS4gIFN1YnBhY2thZ2UgbmFtZXMgYXJlIHNlcGFyYXRlZCBmcm9tIHRoZWlyIHBhcmVudAorcGFja2FnZSBuYW1lIGJ5IGRvdHMsIGFraW4gdG8gUHl0aG9uJ3Mgc3RhbmRhcmQgYXR0cmlidXRlIGFjY2VzcyBzeW50YXguICBUaHVzCit5b3UgbWlnaHQgaGF2ZSBhIG1vZHVsZSBjYWxsZWQgOm1vZDpgc3lzYCBhbmQgYSBwYWNrYWdlIGNhbGxlZCA6bW9kOmBlbWFpbGAsCit3aGljaCBpbiB0dXJuIGhhcyBhIHN1YnBhY2thZ2UgY2FsbGVkIDptb2Q6YGVtYWlsLm1pbWVgIGFuZCBhIG1vZHVsZSB3aXRoaW4KK3RoYXQgc3VicGFja2FnZSBjYWxsZWQgOm1vZDpgZW1haWwubWltZS50ZXh0YC4KKworCitSZWd1bGFyIHBhY2thZ2VzCistLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBwYWlyOiBwYWNrYWdlOyByZWd1bGFyCisKK1B5dGhvbiBkZWZpbmVzIHR3byB0eXBlcyBvZiBwYWNrYWdlcywgOnRlcm06YHJlZ3VsYXIgcGFja2FnZXMgPHJlZ3VsYXIKK3BhY2thZ2U+YCBhbmQgOnRlcm06YG5hbWVzcGFjZSBwYWNrYWdlcyA8bmFtZXNwYWNlIHBhY2thZ2U+YC4gIFJlZ3VsYXIKK3BhY2thZ2VzIGFyZSB0cmFkaXRpb25hbCBwYWNrYWdlcyBhcyB0aGV5IGV4aXN0ZWQgaW4gUHl0aG9uIDMuMiBhbmQgZWFybGllci4KK0EgcmVndWxhciBwYWNrYWdlIGlzIHR5cGljYWxseSBpbXBsZW1lbnRlZCBhcyBhIGRpcmVjdG9yeSBjb250YWluaW5nIGFuCitgYF9faW5pdF9fLnB5YGAgZmlsZS4gIFdoZW4gYSByZWd1bGFyIHBhY2thZ2UgaXMgaW1wb3J0ZWQsIHRoaXMKK2BgX19pbml0X18ucHlgYCBmaWxlIGlzIGltcGxpY2l0bHkgZXhlY3V0ZWQsIGFuZCB0aGUgb2JqZWN0cyBpdCBkZWZpbmVzIGFyZQorYm91bmQgdG8gbmFtZXMgaW4gdGhlIHBhY2thZ2UncyBuYW1lc3BhY2UuICBUaGUgYGBfX2luaXRfXy5weWBgIGZpbGUgY2FuCitjb250YWluIHRoZSBzYW1lIFB5dGhvbiBjb2RlIHRoYXQgYW55IG90aGVyIG1vZHVsZSBjYW4gY29udGFpbiwgYW5kIFB5dGhvbgord2lsbCBhZGQgc29tZSBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgdG8gdGhlIG1vZHVsZSB3aGVuIGl0IGlzIGltcG9ydGVkLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBmaWxlIHN5c3RlbSBsYXlvdXQgZGVmaW5lcyBhIHRvcCBsZXZlbCBgYHBhcmVudGBgCitwYWNrYWdlIHdpdGggdGhyZWUgc3VicGFja2FnZXM6OgorCisgICAgcGFyZW50LworICAgICAgICBfX2luaXRfXy5weQorICAgICAgICBvbmUvCisgICAgICAgICAgICBfX2luaXRfXy5weQorICAgICAgICB0d28vCisgICAgICAgICAgICBfX2luaXRfXy5weQorICAgICAgICB0aHJlZS8KKyAgICAgICAgICAgIF9faW5pdF9fLnB5CisKK0ltcG9ydGluZyBgYHBhcmVudC5vbmVgYCB3aWxsIGltcGxpY2l0bHkgZXhlY3V0ZSBgYHBhcmVudC9fX2luaXRfXy5weWBgIGFuZAorYGBwYXJlbnQvb25lL19faW5pdF9fLnB5YGAuICBTdWJzZXF1ZW50IGltcG9ydHMgb2YgYGBwYXJlbnQudHdvYGAgb3IKK2BgcGFyZW50LnRocmVlYGAgd2lsbCBleGVjdXRlIGBgcGFyZW50L3R3by9fX2luaXRfXy5weWBgIGFuZAorYGBwYXJlbnQvdGhyZWUvX19pbml0X18ucHlgYCByZXNwZWN0aXZlbHkuCisKKworTmFtZXNwYWNlIHBhY2thZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHBhaXI6OiBwYWNrYWdlOyBuYW1lc3BhY2UKKyAgICBwYWlyOjogcGFja2FnZTsgcG9ydGlvbgorCitBIG5hbWVzcGFjZSBwYWNrYWdlIGlzIGEgY29tcG9zaXRlIG9mIHZhcmlvdXMgOnRlcm06YHBvcnRpb25zIDxwb3J0aW9uPmAsCit3aGVyZSBlYWNoIHBvcnRpb24gY29udHJpYnV0ZXMgYSBzdWJwYWNrYWdlIHRvIHRoZSBwYXJlbnQgcGFja2FnZS4gIFBvcnRpb25zCittYXkgcmVzaWRlIGluIGRpZmZlcmVudCBsb2NhdGlvbnMgb24gdGhlIGZpbGUgc3lzdGVtLiAgUG9ydGlvbnMgbWF5IGFsc28gYmUKK2ZvdW5kIGluIHppcCBmaWxlcywgb24gdGhlIG5ldHdvcmssIG9yIGFueXdoZXJlIGVsc2UgdGhhdCBQeXRob24gc2VhcmNoZXMKK2R1cmluZyBpbXBvcnQuICBOYW1lc3BhY2UgcGFja2FnZXMgbWF5IG9yIG1heSBub3QgY29ycmVzcG9uZCBkaXJlY3RseSB0bworb2JqZWN0cyBvbiB0aGUgZmlsZSBzeXN0ZW07IHRoZXkgbWF5IGJlIHZpcnR1YWwgbW9kdWxlcyB0aGF0IGhhdmUgbm8gY29uY3JldGUKK3JlcHJlc2VudGF0aW9uLgorCitOYW1lc3BhY2UgcGFja2FnZXMgZG8gbm90IHVzZSBhbiBvcmRpbmFyeSBsaXN0IGZvciB0aGVpciBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZS4gVGhleSBpbnN0ZWFkIHVzZSBhIGN1c3RvbSBpdGVyYWJsZSB0eXBlIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseQorcGVyZm9ybSBhIG5ldyBzZWFyY2ggZm9yIHBhY2thZ2UgcG9ydGlvbnMgb24gdGhlIG5leHQgaW1wb3J0IGF0dGVtcHQgd2l0aGluCit0aGF0IHBhY2thZ2UgaWYgdGhlIHBhdGggb2YgdGhlaXIgcGFyZW50IHBhY2thZ2UgKG9yIDpkYXRhOmBzeXMucGF0aGAgZm9yIGEKK3RvcCBsZXZlbCBwYWNrYWdlKSBjaGFuZ2VzLgorCitXaXRoIG5hbWVzcGFjZSBwYWNrYWdlcywgdGhlcmUgaXMgbm8gYGBwYXJlbnQvX19pbml0X18ucHlgYCBmaWxlLiAgSW4gZmFjdCwKK3RoZXJlIG1heSBiZSBtdWx0aXBsZSBgYHBhcmVudGBgIGRpcmVjdG9yaWVzIGZvdW5kIGR1cmluZyBpbXBvcnQgc2VhcmNoLCB3aGVyZQorZWFjaCBvbmUgaXMgcHJvdmlkZWQgYnkgYSBkaWZmZXJlbnQgcG9ydGlvbi4gIFRodXMgYGBwYXJlbnQvb25lYGAgbWF5IG5vdCBiZQorcGh5c2ljYWxseSBsb2NhdGVkIG5leHQgdG8gYGBwYXJlbnQvdHdvYGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbiB3aWxsIGNyZWF0ZSBhCituYW1lc3BhY2UgcGFja2FnZSBmb3IgdGhlIHRvcC1sZXZlbCBgYHBhcmVudGBgIHBhY2thZ2Ugd2hlbmV2ZXIgaXQgb3Igb25lIG9mCitpdHMgc3VicGFja2FnZXMgaXMgaW1wb3J0ZWQuCisKK1NlZSBhbHNvIDpwZXA6YDQyMGAgZm9yIHRoZSBuYW1lc3BhY2UgcGFja2FnZSBzcGVjaWZpY2F0aW9uLgorCisKK1NlYXJjaGluZworPT09PT09PT09CisKK1RvIGJlZ2luIHRoZSBzZWFyY2gsIFB5dGhvbiBuZWVkcyB0aGUgOnRlcm06YGZ1bGx5IHF1YWxpZmllZCA8cXVhbGlmaWVkIG5hbWU+YAorbmFtZSBvZiB0aGUgbW9kdWxlIChvciBwYWNrYWdlLCBidXQgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRpc2N1c3Npb24sIHRoZQorZGlmZmVyZW5jZSBpcyBpbW1hdGVyaWFsKSBiZWluZyBpbXBvcnRlZC4gIFRoaXMgbmFtZSBtYXkgY29tZSBmcm9tIHZhcmlvdXMKK2FyZ3VtZW50cyB0byB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LCBvciBmcm9tIHRoZSBwYXJhbWV0ZXJzIHRvIHRoZQorOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBvciA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb25zLgorCitUaGlzIG5hbWUgd2lsbCBiZSB1c2VkIGluIHZhcmlvdXMgcGhhc2VzIG9mIHRoZSBpbXBvcnQgc2VhcmNoLCBhbmQgaXQgbWF5IGJlCit0aGUgZG90dGVkIHBhdGggdG8gYSBzdWJtb2R1bGUsIGUuZy4gYGBmb28uYmFyLmJhemBgLiAgSW4gdGhpcyBjYXNlLCBQeXRob24KK2ZpcnN0IHRyaWVzIHRvIGltcG9ydCBgYGZvb2BgLCB0aGVuIGBgZm9vLmJhcmBgLCBhbmQgZmluYWxseSBgYGZvby5iYXIuYmF6YGAuCitJZiBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSBpbXBvcnRzIGZhaWwsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisKKworVGhlIG1vZHVsZSBjYWNoZQorLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBzeXMubW9kdWxlcworCitUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBkdXJpbmcgaW1wb3J0IHNlYXJjaCBpcyA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhpcworbWFwcGluZyBzZXJ2ZXMgYXMgYSBjYWNoZSBvZiBhbGwgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGltcG9ydGVkLAoraW5jbHVkaW5nIHRoZSBpbnRlcm1lZGlhdGUgcGF0aHMuICBTbyBpZiBgYGZvby5iYXIuYmF6YGAgd2FzIHByZXZpb3VzbHkKK2ltcG9ydGVkLCA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgY29udGFpbiBlbnRyaWVzIGZvciBgYGZvb2BgLCBgYGZvby5iYXJgYCwKK2FuZCBgYGZvby5iYXIuYmF6YGAuICBFYWNoIGtleSB3aWxsIGhhdmUgYXMgaXRzIHZhbHVlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZQorb2JqZWN0LgorCitEdXJpbmcgaW1wb3J0LCB0aGUgbW9kdWxlIG5hbWUgaXMgbG9va2VkIHVwIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgYW5kIGlmCitwcmVzZW50LCB0aGUgYXNzb2NpYXRlZCB2YWx1ZSBpcyB0aGUgbW9kdWxlIHNhdGlzZnlpbmcgdGhlIGltcG9ydCwgYW5kIHRoZQorcHJvY2VzcyBjb21wbGV0ZXMuICBIb3dldmVyLCBpZiB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIHRoZW4gYW4KKzpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKK2NvbnRpbnVlIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZS4KKworOmRhdGE6YHN5cy5tb2R1bGVzYCBpcyB3cml0YWJsZS4gIERlbGV0aW5nIGEga2V5IG1heSBub3QgZGVzdHJveSB0aGUKK2Fzc29jaWF0ZWQgbW9kdWxlIChhcyBvdGhlciBtb2R1bGVzIG1heSBob2xkIHJlZmVyZW5jZXMgdG8gaXQpLAorYnV0IGl0IHdpbGwgaW52YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkgZm9yIHRoZSBuYW1lZCBtb2R1bGUsIGNhdXNpbmcKK1B5dGhvbiB0byBzZWFyY2ggYW5ldyBmb3IgdGhlIG5hbWVkIG1vZHVsZSB1cG9uIGl0cyBuZXh0CitpbXBvcnQuIFRoZSBrZXkgY2FuIGFsc28gYmUgYXNzaWduZWQgdG8gYGBOb25lYGAsIGZvcmNpbmcgdGhlIG5leHQgaW1wb3J0CitvZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAuCisKK0Jld2FyZSB0aG91Z2gsIGFzIGlmIHlvdSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LAoraW52YWxpZGF0ZSBpdHMgY2FjaGUgZW50cnkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYW5kIHRoZW4gcmUtaW1wb3J0IHRoZQorbmFtZWQgbW9kdWxlLCB0aGUgdHdvIG1vZHVsZSBvYmplY3RzIHdpbGwgKm5vdCogYmUgdGhlIHNhbWUuIEJ5IGNvbnRyYXN0LAorOmZ1bmM6YGltcC5yZWxvYWRgIHdpbGwgcmV1c2UgdGhlICpzYW1lKiBtb2R1bGUgb2JqZWN0LCBhbmQgc2ltcGx5CityZWluaXRpYWxpc2UgdGhlIG1vZHVsZSBjb250ZW50cyBieSByZXJ1bm5pbmcgdGhlIG1vZHVsZSdzIGNvZGUuCisKKworRmluZGVycyBhbmQgbG9hZGVycworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBmaW5kZXIKKyAgICBzaW5nbGU6IGxvYWRlcgorCitJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGVuIFB5dGhvbidzIGltcG9ydAorcHJvdG9jb2wgaXMgaW52b2tlZCB0byBmaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUuICBUaGlzIHByb3RvY29sIGNvbnNpc3RzIG9mCit0d28gY29uY2VwdHVhbCBvYmplY3RzLCA6dGVybTpgZmluZGVycyA8ZmluZGVyPmAgYW5kIDp0ZXJtOmBsb2FkZXJzIDxsb2FkZXI+YC4KK0EgZmluZGVyJ3Mgam9iIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGNhbiBmaW5kIHRoZSBuYW1lZCBtb2R1bGUgdXNpbmcKK3doYXRldmVyIHN0cmF0ZWd5IGl0IGtub3dzIGFib3V0LiBPYmplY3RzIHRoYXQgaW1wbGVtZW50IGJvdGggb2YgdGhlc2UKK2ludGVyZmFjZXMgYXJlIHJlZmVycmVkIHRvIGFzIDp0ZXJtOmBpbXBvcnRlcnMgPGltcG9ydGVyPmAgLSB0aGV5IHJldHVybgordGhlbXNlbHZlcyB3aGVuIHRoZXkgZmluZCB0aGF0IHRoZXkgY2FuIGxvYWQgdGhlIHJlcXVlc3RlZCBtb2R1bGUuCisKK1B5dGhvbiBpbmNsdWRlcyBhIG51bWJlciBvZiBkZWZhdWx0IGZpbmRlcnMgYW5kIGltcG9ydGVycy4gIE9uZQora25vd3MgaG93IHRvIGxvY2F0ZSBmcm96ZW4gbW9kdWxlcywgYW5kIGFub3RoZXIga25vd3MgaG93IHRvIGxvY2F0ZQorYnVpbHQtaW4gbW9kdWxlcy4gIEEgdGhpcmQgZGVmYXVsdCBmaW5kZXIgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYAorZm9yIG1vZHVsZXMuICBUaGUgOnRlcm06YGltcG9ydCBwYXRoYCBpcyBhIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgbWF5CituYW1lIGZpbGUgc3lzdGVtIHBhdGhzIG9yIHppcCBmaWxlcy4gIEl0IGNhbiBhbHNvIGJlIGV4dGVuZGVkIHRvIHNlYXJjaAorZm9yIGFueSBsb2NhdGFibGUgcmVzb3VyY2UsIHN1Y2ggYXMgdGhvc2UgaWRlbnRpZmllZCBieSBVUkxzLgorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBpcyBleHRlbnNpYmxlLCBzbyBuZXcgZmluZGVycyBjYW4gYmUgYWRkZWQgdG8gZXh0ZW5kIHRoZQorcmFuZ2UgYW5kIHNjb3BlIG9mIG1vZHVsZSBzZWFyY2hpbmcuCisKK0ZpbmRlcnMgZG8gbm90IGFjdHVhbGx5IGxvYWQgbW9kdWxlcy4gIElmIHRoZXkgY2FuIGZpbmQgdGhlIG5hbWVkIG1vZHVsZSwgdGhleQorcmV0dXJuIGEgOnRlcm06YGxvYWRlcmAsIHdoaWNoIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHRoZW4gaW52b2tlcyB0byBsb2FkIHRoZQorbW9kdWxlIGFuZCBjcmVhdGUgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdC4KKworVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgcHJvdG9jb2wgZm9yIGZpbmRlcnMgYW5kIGxvYWRlcnMgaW4gbW9yZQorZGV0YWlsLCBpbmNsdWRpbmcgaG93IHlvdSBjYW4gY3JlYXRlIGFuZCByZWdpc3RlciBuZXcgb25lcyB0byBleHRlbmQgdGhlCitpbXBvcnQgbWFjaGluZXJ5LgorCisKK0ltcG9ydCBob29rcworLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogaW1wb3J0IGhvb2tzCisgICBzaW5nbGU6IG1ldGEgaG9va3MKKyAgIHNpbmdsZTogcGF0aCBob29rcworICAgcGFpcjogaG9va3M7IGltcG9ydAorICAgcGFpcjogaG9va3M7IG1ldGEKKyAgIHBhaXI6IGhvb2tzOyBwYXRoCisKK1RoZSBpbXBvcnQgbWFjaGluZXJ5IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGU7IHRoZSBwcmltYXJ5IG1lY2hhbmlzbSBmb3IKK3RoaXMgYXJlIHRoZSAqaW1wb3J0IGhvb2tzKi4gIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW1wb3J0IGhvb2tzOiAqbWV0YQoraG9va3MqIGFuZCAqaW1wb3J0IHBhdGggaG9va3MqLgorCitNZXRhIGhvb2tzIGFyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGltcG9ydCBwcm9jZXNzaW5nLCBiZWZvcmUgYW55IG90aGVyCitpbXBvcnQgcHJvY2Vzc2luZyBoYXMgb2NjdXJyZWQsIG90aGVyIHRoYW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBjYWNoZSBsb29rIHVwLgorVGhpcyBhbGxvd3MgbWV0YSBob29rcyB0byBvdmVycmlkZSA6ZGF0YTpgc3lzLnBhdGhgIHByb2Nlc3NpbmcsIGZyb3plbgorbW9kdWxlcywgb3IgZXZlbiBidWlsdC1pbiBtb2R1bGVzLiAgTWV0YSBob29rcyBhcmUgcmVnaXN0ZXJlZCBieSBhZGRpbmcgbmV3CitmaW5kZXIgb2JqZWN0cyB0byA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworSW1wb3J0IHBhdGggaG9va3MgYXJlIGNhbGxlZCBhcyBwYXJ0IG9mIDpkYXRhOmBzeXMucGF0aGAgKG9yCitgYHBhY2thZ2UuX19wYXRoX19gYCkgcHJvY2Vzc2luZywgYXQgdGhlIHBvaW50IHdoZXJlIHRoZWlyIGFzc29jaWF0ZWQgcGF0aAoraXRlbSBpcyBlbmNvdW50ZXJlZC4gIEltcG9ydCBwYXRoIGhvb2tzIGFyZSByZWdpc3RlcmVkIGJ5IGFkZGluZyBuZXcgY2FsbGFibGVzCit0byA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworCitUaGUgbWV0YSBwYXRoCistLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5tZXRhX3BhdGgKKyAgICBwYWlyOiBmaW5kZXI7IGZpbmRfbW9kdWxlCisgICAgcGFpcjogZmluZGVyOyBmaW5kX2xvYWRlcgorCitXaGVuIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIFB5dGhvbiBuZXh0CitzZWFyY2hlcyA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsIHdoaWNoIGNvbnRhaW5zIGEgbGlzdCBvZiBtZXRhIHBhdGggZmluZGVyCitvYmplY3RzLiAgVGhlc2UgZmluZGVycyBhcmUgcXVlcmllZCBpbiBvcmRlciB0byBzZWUgaWYgdGhleSBrbm93IGhvdyB0byBoYW5kbGUKK3RoZSBuYW1lZCBtb2R1bGUuICBNZXRhIHBhdGggZmluZGVycyBtdXN0IGltcGxlbWVudCBhIG1ldGhvZCBjYWxsZWQKKzptZXRoOmBmaW5kX21vZHVsZSgpYCB3aGljaCB0YWtlcyB0d28gYXJndW1lbnRzLCBhIG5hbWUgYW5kIGFuIGltcG9ydCBwYXRoLgorVGhlIG1ldGEgcGF0aCBmaW5kZXIgY2FuIHVzZSBhbnkgc3RyYXRlZ3kgaXQgd2FudHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgY2FuCitoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSBvciBub3QuCisKK0lmIHRoZSBtZXRhIHBhdGggZmluZGVyIGtub3dzIGhvdyB0byBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBhCitsb2FkZXIgb2JqZWN0LiAgSWYgaXQgY2Fubm90IGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGBgTm9uZWBgLiAgSWYKKzpkYXRhOmBzeXMubWV0YV9wYXRoYCBwcm9jZXNzaW5nIHJlYWNoZXMgdGhlIGVuZCBvZiBpdHMgbGlzdCB3aXRob3V0IHJldHVybmluZworYSBsb2FkZXIsIHRoZW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zIHJhaXNlZAorYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCisKK1RoZSA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIG9mIG1ldGEgcGF0aCBmaW5kZXJzIGlzIGNhbGxlZCB3aXRoIHR3bworYXJndW1lbnRzLiAgVGhlIGZpcnN0IGlzIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nCitpbXBvcnRlZCwgZm9yIGV4YW1wbGUgYGBmb28uYmFyLmJhemBgLiAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgcGF0aAorZW50cmllcyB0byB1c2UgZm9yIHRoZSBtb2R1bGUgc2VhcmNoLiAgRm9yIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgc2Vjb25kCithcmd1bWVudCBpcyBgYE5vbmVgYCwgYnV0IGZvciBzdWJtb2R1bGVzIG9yIHN1YnBhY2thZ2VzLCB0aGUgc2Vjb25kCithcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmVudCBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4gSWYKK3RoZSBhcHByb3ByaWF0ZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGNhbm5vdCBiZSBhY2Nlc3NlZCwgYW4KKzpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisKK1RoZSBtZXRhIHBhdGggbWF5IGJlIHRyYXZlcnNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgYSBzaW5nbGUgaW1wb3J0IHJlcXVlc3QuCitGb3IgZXhhbXBsZSwgYXNzdW1pbmcgbm9uZSBvZiB0aGUgbW9kdWxlcyBpbnZvbHZlZCBoYXMgYWxyZWFkeSBiZWVuIGNhY2hlZCwKK2ltcG9ydGluZyBgYGZvby5iYXIuYmF6YGAgd2lsbCBmaXJzdCBwZXJmb3JtIGEgdG9wIGxldmVsIGltcG9ydCwgY2FsbGluZworYGBtcGYuZmluZF9tb2R1bGUoImZvbyIsIE5vbmUpYGAgb24gZWFjaCBtZXRhIHBhdGggZmluZGVyIChgYG1wZmBgKS4gQWZ0ZXIKK2BgZm9vYGAgaGFzIGJlZW4gaW1wb3J0ZWQsIGBgZm9vLmJhcmBgIHdpbGwgYmUgaW1wb3J0ZWQgYnkgdHJhdmVyc2luZyB0aGUKK21ldGEgcGF0aCBhIHNlY29uZCB0aW1lLCBjYWxsaW5nCitgYG1wZi5maW5kX21vZHVsZSgiZm9vLmJhciIsIGZvby5fX3BhdGhfXylgYC4gT25jZSBgYGZvby5iYXJgYCBoYXMgYmVlbgoraW1wb3J0ZWQsIHRoZSBmaW5hbCB0cmF2ZXJzYWwgd2lsbCBjYWxsCitgYG1wZi5maW5kX21vZHVsZSgiZm9vLmJhci5iYXoiLCBmb28uYmFyLl9fcGF0aF9fKWBgLgorCitTb21lIG1ldGEgcGF0aCBmaW5kZXJzIG9ubHkgc3VwcG9ydCB0b3AgbGV2ZWwgaW1wb3J0cy4gVGhlc2UgaW1wb3J0ZXJzIHdpbGwKK2Fsd2F5cyByZXR1cm4gYGBOb25lYGAgd2hlbiBhbnl0aGluZyBvdGhlciB0aGFuIGBgTm9uZWBgIGlzIHBhc3NlZCBhcyB0aGUKK3NlY29uZCBhcmd1bWVudC4KKworUHl0aG9uJ3MgZGVmYXVsdCA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgaGFzIHRocmVlIG1ldGEgcGF0aCBmaW5kZXJzLCBvbmUgdGhhdAora25vd3MgaG93IHRvIGltcG9ydCBidWlsdC1pbiBtb2R1bGVzLCBvbmUgdGhhdCBrbm93cyBob3cgdG8gaW1wb3J0IGZyb3plbgorbW9kdWxlcywgYW5kIG9uZSB0aGF0IGtub3dzIGhvdyB0byBpbXBvcnQgbW9kdWxlcyBmcm9tIGFuIDp0ZXJtOmBpbXBvcnQgcGF0aGAKKyhpLmUuIHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgKS4KKworCitMb2FkZXJzCis9PT09PT09CisKK0lmIGFuZCB3aGVuIGEgbW9kdWxlIGxvYWRlciBpcyBmb3VuZCBpdHMKKzptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIG1ldGhvZCBpcyBjYWxsZWQsIHdpdGggYSBzaW5nbGUKK2FyZ3VtZW50LCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZC4gIFRoaXMgbWV0aG9kCitoYXMgc2V2ZXJhbCByZXNwb25zaWJpbGl0aWVzLCBhbmQgc2hvdWxkIHJldHVybiB0aGUgbW9kdWxlIG9iamVjdCBpdCBoYXMKK2xvYWRlZCBbI2ZubG9dXy4gIElmIGl0IGNhbm5vdCBsb2FkIHRoZSBtb2R1bGUsIGl0IHNob3VsZCByYWlzZSBhbgorOmV4YzpgSW1wb3J0RXJyb3JgLCBhbHRob3VnaCBhbnkgb3RoZXIgZXhjZXB0aW9uIHJhaXNlZCBkdXJpbmcKKzptZXRoOmBsb2FkX21vZHVsZSgpYCB3aWxsIGJlIHByb3BhZ2F0ZWQuCisKK0luIG1hbnkgY2FzZXMsIHRoZSBmaW5kZXIgYW5kIGxvYWRlciBjYW4gYmUgdGhlIHNhbWUgb2JqZWN0OyBpbiBzdWNoIGNhc2VzIHRoZQorOm1ldGg6YGZpbmRlci5maW5kX21vZHVsZSgpYCB3b3VsZCBqdXN0IHJldHVybiBgYHNlbGZgYC4KKworTG9hZGVycyBtdXN0IHNhdGlzZnkgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHM6CisKKyAqIElmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIG1vZHVsZSBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpbgorICAgOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGxvYWRlciBtdXN0IHVzZSB0aGF0IGV4aXN0aW5nIG1vZHVsZS4gIChPdGhlcndpc2UsCisgICA6ZnVuYzpgaW1wLnJlbG9hZGAgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuKSAgSWYgdGhlIG5hbWVkIG1vZHVsZSBkb2VzCisgICBub3QgZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlIGxvYWRlciBtdXN0IGNyZWF0ZSBhIG5ldyBtb2R1bGUKKyAgIG9iamVjdCBhbmQgYWRkIGl0IHRvIDpkYXRhOmBzeXMubW9kdWxlc2AuCisKKyAgIE5vdGUgdGhhdCB0aGUgbW9kdWxlICptdXN0KiBleGlzdCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGJlZm9yZSB0aGUgbG9hZGVyCisgICBleGVjdXRlcyB0aGUgbW9kdWxlIGNvZGUuICBUaGlzIGlzIGNydWNpYWwgYmVjYXVzZSB0aGUgbW9kdWxlIGNvZGUgbWF5CisgICAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgaW1wb3J0IGl0c2VsZjsgYWRkaW5nIGl0IHRvIDpkYXRhOmBzeXMubW9kdWxlc2AKKyAgIGJlZm9yZWhhbmQgcHJldmVudHMgdW5ib3VuZGVkIHJlY3Vyc2lvbiBpbiB0aGUgd29yc3QgY2FzZSBhbmQgbXVsdGlwbGUKKyAgIGxvYWRpbmcgaW4gdGhlIGJlc3QuCisKKyAgIElmIGxvYWRpbmcgZmFpbHMsIHRoZSBsb2FkZXIgbXVzdCByZW1vdmUgYW55IG1vZHVsZXMgaXQgaGFzIGluc2VydGVkIGludG8KKyAgIDpkYXRhOmBzeXMubW9kdWxlc2AsIGJ1dCBpdCBtdXN0IHJlbW92ZSAqKm9ubHkqKiB0aGUgZmFpbGluZyBtb2R1bGUsIGFuZAorICAgb25seSBpZiB0aGUgbG9hZGVyIGl0c2VsZiBoYXMgbG9hZGVkIGl0IGV4cGxpY2l0bHkuICBBbnkgbW9kdWxlIGFscmVhZHkgaW4KKyAgIHRoZSA6ZGF0YTpgc3lzLm1vZHVsZXNgIGNhY2hlLCBhbmQgYW55IG1vZHVsZSB0aGF0IHdhcyBzdWNjZXNzZnVsbHkgbG9hZGVkCisgICBhcyBhIHNpZGUtZWZmZWN0LCBtdXN0IHJlbWFpbiBpbiB0aGUgY2FjaGUuCisKKyAqIFRoZSBsb2FkZXIgbWF5IHNldCB0aGUgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlLiAgSWYgc2V0LCB0aGlzCisgICBhdHRyaWJ1dGUncyB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nLiAgVGhlIGxvYWRlciBtYXkgb3B0IHRvIGxlYXZlCisgICBgYF9fZmlsZV9fYGAgdW5zZXQgaWYgaXQgaGFzIG5vIHNlbWFudGljIG1lYW5pbmcgKGUuZy4gYSBtb2R1bGUgbG9hZGVkIGZyb20KKyAgIGEgZGF0YWJhc2UpLgorCisgKiBUaGUgbG9hZGVyIG1heSBzZXQgdGhlIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUgb2YgdGhlIG1vZHVsZS4gIFdoaWxlIG5vdAorICAgcmVxdWlyZWQsIHNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHNvIHRoYXQgdGhlCisgICA6bWV0aDpgcmVwcigpYCBvZiB0aGUgbW9kdWxlIGlzIG1vcmUgaW5mb3JtYXRpdmUuCisKKyAqIElmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIChlaXRoZXIgcmVndWxhciBvciBuYW1lc3BhY2UpLCB0aGUgbG9hZGVyIG11c3QKKyAgIHNldCB0aGUgbW9kdWxlIG9iamVjdCdzIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuICBUaGUgdmFsdWUgbXVzdCBiZQorICAgaXRlcmFibGUsIGJ1dCBtYXkgYmUgZW1wdHkgaWYgYGBfX3BhdGhfX2BgIGhhcyBubyBmdXJ0aGVyIHNpZ25pZmljYW5jZQorICAgdG8gdGhlIGxvYWRlci4gSWYgYGBfX3BhdGhfX2BgIGlzIG5vdCBlbXB0eSwgaXQgbXVzdCBwcm9kdWNlIHN0cmluZ3MKKyAgIHdoZW4gaXRlcmF0ZWQgb3Zlci4gTW9yZSBkZXRhaWxzIG9uIHRoZSBzZW1hbnRpY3Mgb2YgYGBfX3BhdGhfX2BgIGFyZQorICAgZ2l2ZW4gOnJlZjpgYmVsb3cgPHBhY2thZ2UtcGF0aC1ydWxlcz5gLgorCisgKiBUaGUgYGBfX2xvYWRlcl9fYGAgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBsb2FkZXIgb2JqZWN0IHRoYXQgbG9hZGVkCisgICB0aGUgbW9kdWxlLiAgVGhpcyBpcyBtb3N0bHkgZm9yIGludHJvc3BlY3Rpb24gYW5kIHJlbG9hZGluZywgYnV0IGNhbiBiZQorICAgdXNlZCBmb3IgYWRkaXRpb25hbCBsb2FkZXItc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGUgZ2V0dGluZworICAgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBsb2FkZXIuCisKKyAqIFRoZSBtb2R1bGUncyBgYF9fcGFja2FnZV9fYGAgYXR0cmlidXRlIHNob3VsZCBiZSBzZXQuICBJdHMgdmFsdWUgbXVzdCBiZSBhCisgICBzdHJpbmcsIGJ1dCBpdCBjYW4gYmUgdGhlIHNhbWUgdmFsdWUgYXMgaXRzIGBgX19uYW1lX19gYC4gIElmIHRoZSBhdHRyaWJ1dGUKKyAgIGlzIHNldCB0byBgYE5vbmVgYCBvciBpcyBtaXNzaW5nLCB0aGUgaW1wb3J0IHN5c3RlbSB3aWxsIGZpbGwgaXQgaW4gd2l0aCBhCisgICBtb3JlIGFwcHJvcHJpYXRlIHZhbHVlLiAgV2hlbiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSwgaXRzIGBgX19wYWNrYWdlX19gYAorICAgdmFsdWUgc2hvdWxkIGJlIHNldCB0byBpdHMgYGBfX25hbWVfX2BgLiAgV2hlbiB0aGUgbW9kdWxlIGlzIG5vdCBhIHBhY2thZ2UsCisgICBgYF9fcGFja2FnZV9fYGAgc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGZvciB0b3AtbGV2ZWwgbW9kdWxlcywgb3IKKyAgIGZvciBzdWJtb2R1bGVzLCB0byB0aGUgcGFyZW50IHBhY2thZ2UncyBuYW1lLiAgU2VlIDpwZXA6YDM2NmAgZm9yIGZ1cnRoZXIKKyAgIGRldGFpbHMuCisKKyAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgaW5zdGVhZCBvZiBgYF9fbmFtZV9fYGAgdG8gY2FsY3VsYXRlIGV4cGxpY2l0CisgICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4KKworICogSWYgdGhlIG1vZHVsZSBpcyBhIFB5dGhvbiBtb2R1bGUgKGFzIG9wcG9zZWQgdG8gYSBidWlsdC1pbiBtb2R1bGUgb3IgYQorICAgZHluYW1pY2FsbHkgbG9hZGVkIGV4dGVuc2lvbiksIHRoZSBsb2FkZXIgc2hvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZSdzIGNvZGUKKyAgIGluIHRoZSBtb2R1bGUncyBnbG9iYWwgbmFtZSBzcGFjZSAoYGBtb2R1bGUuX19kaWN0X19gYCkuCisKKworTW9kdWxlIHJlcHJzCistLS0tLS0tLS0tLS0KKworQnkgZGVmYXVsdCwgYWxsIG1vZHVsZXMgaGF2ZSBhIHVzYWJsZSByZXByLCBob3dldmVyIGRlcGVuZGluZyBvbiB0aGUKK2F0dHJpYnV0ZXMgc2V0IGFib3ZlLCBhbmQgaG9va3MgaW4gdGhlIGxvYWRlciwgeW91IGNhbiBtb3JlIGV4cGxpY2l0bHkgY29udHJvbAordGhlIHJlcHIgb2YgbW9kdWxlIG9iamVjdHMuCisKK0xvYWRlcnMgbWF5IGltcGxlbWVudCBhIDptZXRoOmBtb2R1bGVfcmVwcigpYCBtZXRob2Qgd2hpY2ggdGFrZXMgYSBzaW5nbGUKK2FyZ3VtZW50LCB0aGUgbW9kdWxlIG9iamVjdC4gIFdoZW4gYGByZXByKG1vZHVsZSlgYCBpcyBjYWxsZWQgZm9yIGEgbW9kdWxlCit3aXRoIGEgbG9hZGVyIHN1cHBvcnRpbmcgdGhpcyBwcm90b2NvbCwgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgZnJvbQorYGBtb2R1bGUuX19sb2FkZXJfXy5tb2R1bGVfcmVwcihtb2R1bGUpYGAgaXMgcmV0dXJuZWQgYXMgdGhlIG1vZHVsZSdzIHJlcHIKK3dpdGhvdXQgZnVydGhlciBwcm9jZXNzaW5nLiAgVGhpcyByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZy4KKworSWYgdGhlIG1vZHVsZSBoYXMgbm8gYGBfX2xvYWRlcl9fYGAgYXR0cmlidXRlLCBvciB0aGUgbG9hZGVyIGhhcyBubworOm1ldGg6YG1vZHVsZV9yZXByKClgIG1ldGhvZCwgdGhlbiB0aGUgbW9kdWxlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiBpdHNlbGYKK3dpbGwgY3JhZnQgYSBkZWZhdWx0IHJlcHIgdXNpbmcgd2hhdGV2ZXIgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLiAgSXQgd2lsbAordHJ5IHRvIHVzZSB0aGUgYGBtb2R1bGUuX19uYW1lX19gYCwgYGBtb2R1bGUuX19maWxlX19gYCwgYW5kCitgYG1vZHVsZS5fX2xvYWRlcl9fYGAgYXMgaW5wdXQgaW50byB0aGUgcmVwciwgd2l0aCBkZWZhdWx0cyBmb3Igd2hhdGV2ZXIKK2luZm9ybWF0aW9uIGlzIG1pc3NpbmcuCisKK0hlcmUgYXJlIHRoZSBleGFjdCBydWxlcyB1c2VkOgorCisgKiBJZiB0aGUgbW9kdWxlIGhhcyBhIGBgX19sb2FkZXJfX2BgIGFuZCB0aGF0IGxvYWRlciBoYXMgYQorICAgOm1ldGg6YG1vZHVsZV9yZXByKClgIG1ldGhvZCwgY2FsbCBpdCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUKKyAgIG1vZHVsZSBvYmplY3QuICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgdXNlZCBhcyB0aGUgbW9kdWxlJ3MgcmVwci4KKworICogSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiA6bWV0aDpgbW9kdWxlX3JlcHIoKWAsIHRoZSBleGNlcHRpb24gaXMgY2F1Z2h0CisgICBhbmQgZGlzY2FyZGVkLCBhbmQgdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBtb2R1bGUncyByZXByIGNvbnRpbnVlcyBhcyBpZgorICAgOm1ldGg6YG1vZHVsZV9yZXByKClgIGRpZCBub3QgZXhpc3QuCisKKyAqIElmIHRoZSBtb2R1bGUgaGFzIGEgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSwgdGhpcyBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlCisgICBtb2R1bGUncyByZXByLgorCisgKiBJZiB0aGUgbW9kdWxlIGhhcyBubyBgYF9fZmlsZV9fYGAgYnV0IGRvZXMgaGF2ZSBhIGBgX19sb2FkZXJfX2BgLCB0aGVuIHRoZQorICAgbG9hZGVyJ3MgcmVwciBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlIG1vZHVsZSdzIHJlcHIuCisKKyAqIE90aGVyd2lzZSwganVzdCB1c2UgdGhlIG1vZHVsZSdzIGBgX19uYW1lX19gYCBpbiB0aGUgcmVwci4KKworVGhpcyBleGFtcGxlLCBmcm9tIDpwZXA6YDQyMGAgc2hvd3MgaG93IGEgbG9hZGVyIGNhbiBjcmFmdCBpdHMgb3duIG1vZHVsZQorcmVwcjo6CisKKyAgICBjbGFzcyBOYW1lc3BhY2VMb2FkZXI6CisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgorICAgICAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKG5hbWVzcGFjZSk+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisKKy4uIF9wYWNrYWdlLXBhdGgtcnVsZXM6CisKK21vZHVsZS5fX3BhdGhfXworLS0tLS0tLS0tLS0tLS0tCisKK0J5IGRlZmluaXRpb24sIGlmIGEgbW9kdWxlIGhhcyBhbiBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLCBpdCBpcyBhIHBhY2thZ2UsCityZWdhcmRsZXNzIG9mIGl0cyB2YWx1ZS4KKworQSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBpcyB1c2VkIGR1cmluZyBpbXBvcnRzIG9mIGl0cyBzdWJwYWNrYWdlcy4KK1dpdGhpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSwgaXQgZnVuY3Rpb25zIG11Y2ggdGhlIHNhbWUgYXMgOmRhdGE6YHN5cy5wYXRoYCwKK2kuZS4gcHJvdmlkaW5nIGEgbGlzdCBvZiBsb2NhdGlvbnMgdG8gc2VhcmNoIGZvciBtb2R1bGVzIGR1cmluZyBpbXBvcnQuCitIb3dldmVyLCBgYF9fcGF0aF9fYGAgaXMgdHlwaWNhbGx5IG11Y2ggbW9yZSBjb25zdHJhaW5lZCB0aGFuCis6ZGF0YTpgc3lzLnBhdGhgLgorCitgYF9fcGF0aF9fYGAgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBzdHJpbmdzLCBidXQgaXQgbWF5IGJlIGVtcHR5LgorVGhlIHNhbWUgcnVsZXMgdXNlZCBmb3IgOmRhdGE6YHN5cy5wYXRoYCBhbHNvIGFwcGx5IHRvIGEgcGFja2FnZSdzCitgYF9fcGF0aF9fYGAsIGFuZCA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIChkZXNjcmliZWQgYmVsb3cpIGFyZQorY29uc3VsdGVkIHdoZW4gdHJhdmVyc2luZyBhIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAuCisKK0EgcGFja2FnZSdzIGBgX19pbml0X18ucHlgYCBmaWxlIG1heSBzZXQgb3IgYWx0ZXIgdGhlIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZSwgYW5kIHRoaXMgd2FzIHR5cGljYWxseSB0aGUgd2F5IG5hbWVzcGFjZSBwYWNrYWdlcyB3ZXJlIGltcGxlbWVudGVkCitwcmlvciB0byA6cGVwOmA0MjBgLiAgV2l0aCB0aGUgYWRvcHRpb24gb2YgOnBlcDpgNDIwYCwgbmFtZXNwYWNlIHBhY2thZ2VzIG5vCitsb25nZXIgbmVlZCB0byBzdXBwbHkgYGBfX2luaXRfXy5weWBgIGZpbGVzIGNvbnRhaW5pbmcgb25seSBgYF9fcGF0aF9fYGAKK21hbmlwdWxhdGlvbiBjb2RlOyB0aGUgbmFtZXNwYWNlIGxvYWRlciBhdXRvbWF0aWNhbGx5IHNldHMgYGBfX3BhdGhfX2BgCitjb3JyZWN0bHkgZm9yIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KKworCitUaGUgUGF0aCBCYXNlZCBGaW5kZXIKKz09PT09PT09PT09PT09PT09PT09PQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBwYXRoIGJhc2VkIGZpbmRlcgorCitBcyBtZW50aW9uZWQgcHJldmlvdXNseSwgUHl0aG9uIGNvbWVzIHdpdGggc2V2ZXJhbCBkZWZhdWx0IG1ldGEgcGF0aCBmaW5kZXJzLgorT25lIG9mIHRoZXNlLCBjYWxsZWQgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAsIHNlYXJjaGVzIGFuIDp0ZXJtOmBpbXBvcnQKK3BhdGhgLCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YgOnRlcm06YHBhdGggZW50cmllcyA8cGF0aCBlbnRyeT5gLiAgRWFjaCBwYXRoCitlbnRyeSBuYW1lcyBhIGxvY2F0aW9uIHRvIHNlYXJjaCBmb3IgbW9kdWxlcy4KKworVGhlIHBhdGggYmFzZWQgZmluZGVyIGl0c2VsZiBkb2Vzbid0IGtub3cgaG93IHRvIGltcG9ydCBhbnl0aGluZy4gSW5zdGVhZCwgaXQKK3RyYXZlcnNlcyB0aGUgaW5kaXZpZHVhbCBwYXRoIGVudHJpZXMsIGFzc29jaWF0aW5nIGVhY2ggb2YgdGhlbSB3aXRoIGEKK3BhdGggZW50cnkgZmluZGVyIHRoYXQga25vd3MgaG93IHRvIGhhbmRsZSB0aGF0IHBhcnRpY3VsYXIga2luZCBvZiBwYXRoLgorCitUaGUgZGVmYXVsdCBzZXQgb2YgcGF0aCBlbnRyeSBmaW5kZXJzIGltcGxlbWVudCBhbGwgdGhlIHNlbWFudGljcyBmb3IgZmluZGluZworbW9kdWxlcyBvbiB0aGUgZmlsZSBzeXN0ZW0sIGhhbmRsaW5nIHNwZWNpYWwgZmlsZSB0eXBlcyBzdWNoIGFzIFB5dGhvbiBzb3VyY2UKK2NvZGUgKGBgLnB5YGAgZmlsZXMpLCBQeXRob24gYnl0ZSBjb2RlIChgYC5weWNgYCBhbmQgYGAucHlvYGAgZmlsZXMpIGFuZAorc2hhcmVkIGxpYnJhcmllcyAoZS5nLiBgYC5zb2BgIGZpbGVzKS4gV2hlbiBzdXBwb3J0ZWQgYnkgdGhlIDptb2Q6YHppcGltcG9ydGAKK21vZHVsZSBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSwgdGhlIGRlZmF1bHQgcGF0aCBlbnRyeSBmaW5kZXJzIGFsc28gaGFuZGxlCitsb2FkaW5nIGFsbCBvZiB0aGVzZSBmaWxlIHR5cGVzIChvdGhlciB0aGFuIHNoYXJlZCBsaWJyYXJpZXMpIGZyb20gemlwZmlsZXMuCisKK1BhdGggZW50cmllcyBuZWVkIG5vdCBiZSBsaW1pdGVkIHRvIGZpbGUgc3lzdGVtIGxvY2F0aW9ucy4gIFRoZXkgY2FuIHJlZmVyIHRvCitVUkxzLCBkYXRhYmFzZSBxdWVyaWVzLCBvciBhbnkgb3RoZXIgbG9jYXRpb24gdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEKK3N0cmluZy4KKworVGhlIHBhdGggYmFzZWQgZmluZGVyIHByb3ZpZGVzIGFkZGl0aW9uYWwgaG9va3MgYW5kIHByb3RvY29scyBzbyB0aGF0IHlvdQorY2FuIGV4dGVuZCBhbmQgY3VzdG9taXplIHRoZSB0eXBlcyBvZiBzZWFyY2hhYmxlIHBhdGggZW50cmllcy4gIEZvciBleGFtcGxlLAoraWYgeW91IHdhbnRlZCB0byBzdXBwb3J0IHBhdGggZW50cmllcyBhcyBuZXR3b3JrIFVSTHMsIHlvdSBjb3VsZCB3cml0ZSBhIGhvb2sKK3RoYXQgaW1wbGVtZW50cyBIVFRQIHNlbWFudGljcyB0byBmaW5kIG1vZHVsZXMgb24gdGhlIHdlYi4gIFRoaXMgaG9vayAoYQorY2FsbGFibGUpIHdvdWxkIHJldHVybiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgc3VwcG9ydGluZyB0aGUgcHJvdG9jb2wKK2Rlc2NyaWJlZCBiZWxvdywgd2hpY2ggd2FzIHRoZW4gdXNlZCB0byBnZXQgYSBsb2FkZXIgZm9yIHRoZSBtb2R1bGUgZnJvbSB0aGUKK3dlYi4KKworQSB3b3JkIG9mIHdhcm5pbmc6IHRoaXMgc2VjdGlvbiBhbmQgdGhlIHByZXZpb3VzIGJvdGggdXNlIHRoZSB0ZXJtICpmaW5kZXIqLAorZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiB0aGVtIGJ5IHVzaW5nIHRoZSB0ZXJtcyA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgYW5kCis6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgLiAgVGhlc2UgdHdvIHR5cGVzIG9mIGZpbmRlcnMgYXJlIHZlcnkgc2ltaWxhciwKK3N1cHBvcnQgc2ltaWxhciBwcm90b2NvbHMsIGFuZCBmdW5jdGlvbiBpbiBzaW1pbGFyIHdheXMgZHVyaW5nIHRoZSBpbXBvcnQKK3Byb2Nlc3MsIGJ1dCBpdCdzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGV5IGFyZSBzdWJ0bHkgZGlmZmVyZW50LgorSW4gcGFydGljdWxhciwgbWV0YSBwYXRoIGZpbmRlcnMgb3BlcmF0ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbXBvcnQKK3Byb2Nlc3MsIGFzIGtleWVkIG9mZiB0aGUgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHRyYXZlcnNhbC4KKworQnkgY29udHJhc3QsIHBhdGggZW50cnkgZmluZGVycyBhcmUgaW4gYSBzZW5zZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKK29mIHRoZSBwYXRoIGJhc2VkIGZpbmRlciwgYW5kIGluIGZhY3QsIGlmIHRoZSBwYXRoIGJhc2VkIGZpbmRlciB3ZXJlIHRvIGJlCityZW1vdmVkIGZyb20gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCBub25lIG9mIHRoZSBwYXRoIGVudHJ5IGZpbmRlciBzZW1hbnRpY3MKK3dvdWxkIGJlIGludm9rZWQuCisKKworUGF0aCBlbnRyeSBmaW5kZXJzCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogc3lzLnBhdGgKKyAgICBzaW5nbGU6IHN5cy5wYXRoX2hvb2tzCisgICAgc2luZ2xlOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQorICAgIHNpbmdsZTogUFlUSE9OUEFUSAorCitUaGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCBpcyByZXNwb25zaWJsZSBmb3IgZmluZGluZyBhbmQgbG9hZGluZyBQeXRob24KK21vZHVsZXMgYW5kIHBhY2thZ2VzIHdob3NlIGxvY2F0aW9uIGlzIHNwZWNpZmllZCB3aXRoIGEgc3RyaW5nIDp0ZXJtOmBwYXRoCitlbnRyeWAuICBNb3N0IHBhdGggZW50cmllcyBuYW1lIGxvY2F0aW9ucyBpbiB0aGUgZmlsZSBzeXN0ZW0sIGJ1dCB0aGV5IG5lZWQKK25vdCBiZSBsaW1pdGVkIHRvIHRoaXMuCisKK0FzIGEgbWV0YSBwYXRoIGZpbmRlciwgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAgaW1wbGVtZW50cyB0aGUKKzptZXRoOmBmaW5kX21vZHVsZSgpYCBwcm90b2NvbCBwcmV2aW91c2x5IGRlc2NyaWJlZCwgaG93ZXZlciBpdCBleHBvc2VzCithZGRpdGlvbmFsIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplIGhvdyBtb2R1bGVzIGFyZSBmb3VuZCBhbmQKK2xvYWRlZCBmcm9tIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgLgorCitUaHJlZSB2YXJpYWJsZXMgYXJlIHVzZWQgYnkgdGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAsIDpkYXRhOmBzeXMucGF0aGAsCis6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGFuZCA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLiAgVGhlIGBgX19wYXRoX19gYAorYXR0cmlidXRlcyBvbiBwYWNrYWdlIG9iamVjdHMgYXJlIGFsc28gdXNlZC4gIFRoZXNlIHByb3ZpZGUgYWRkaXRpb25hbCB3YXlzCit0aGF0IHRoZSBpbXBvcnQgbWFjaGluZXJ5IGNhbiBiZSBjdXN0b21pemVkLgorCis6ZGF0YTpgc3lzLnBhdGhgIGNvbnRhaW5zIGEgbGlzdCBvZiBzdHJpbmdzIHByb3ZpZGluZyBzZWFyY2ggbG9jYXRpb25zIGZvcgorbW9kdWxlcyBhbmQgcGFja2FnZXMuICBJdCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSA6ZGF0YTpgUFlUSE9OUEFUSGAKK2Vudmlyb25tZW50IHZhcmlhYmxlIGFuZCB2YXJpb3VzIG90aGVyIGluc3RhbGxhdGlvbi0gYW5kCitpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBkZWZhdWx0cy4gIEVudHJpZXMgaW4gOmRhdGE6YHN5cy5wYXRoYCBjYW4gbmFtZQorZGlyZWN0b3JpZXMgb24gdGhlIGZpbGUgc3lzdGVtLCB6aXAgZmlsZXMsIGFuZCBwb3RlbnRpYWxseSBvdGhlciAibG9jYXRpb25zIgorKHNlZSB0aGUgOm1vZDpgc2l0ZWAgbW9kdWxlKSB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZCBmb3IgbW9kdWxlcywgc3VjaCBhcworVVJMcywgb3IgZGF0YWJhc2UgcXVlcmllcy4KKworVGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAgaXMgYSA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAsIHNvIHRoZSBpbXBvcnQKK21hY2hpbmVyeSBiZWdpbnMgdGhlIDp0ZXJtOmBpbXBvcnQgcGF0aGAgc2VhcmNoIGJ5IGNhbGxpbmcgdGhlIHBhdGgKK2Jhc2VkIGZpbmRlcidzIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2QgYXMgZGVzY3JpYmVkIHByZXZpb3VzbHkuICBXaGVuCit0aGUgYGBwYXRoYGAgYXJndW1lbnQgdG8gOm1ldGg6YGZpbmRfbW9kdWxlKClgIGlzIGdpdmVuLCBpdCB3aWxsIGJlIGEKK2xpc3Qgb2Ygc3RyaW5nIHBhdGhzIHRvIHRyYXZlcnNlIC0gdHlwaWNhbGx5IGEgcGFja2FnZSdzIGBgX19wYXRoX19gYAorYXR0cmlidXRlIGZvciBhbiBpbXBvcnQgd2l0aGluIHRoYXQgcGFja2FnZS4gIElmIHRoZSBgYHBhdGhgYCBhcmd1bWVudAoraXMgYGBOb25lYGAsIHRoaXMgaW5kaWNhdGVzIGEgdG9wIGxldmVsIGltcG9ydCBhbmQgOmRhdGE6YHN5cy5wYXRoYCBpcyB1c2VkLgorCitUaGUgcGF0aCBiYXNlZCBmaW5kZXIgaXRlcmF0ZXMgb3ZlciBldmVyeSBlbnRyeSBpbiB0aGUgc2VhcmNoIHBhdGgsIGFuZAorZm9yIGVhY2ggb2YgdGhlc2UsIGxvb2tzIGZvciBhbiBhcHByb3ByaWF0ZSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIGZvciB0aGUKK3BhdGggZW50cnkuICBCZWNhdXNlIHRoaXMgY2FuIGJlIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24gKGUuZy4gdGhlcmUgbWF5IGJlCitgc3RhdCgpYCBjYWxsIG92ZXJoZWFkcyBmb3IgdGhpcyBzZWFyY2gpLCB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgbWFpbnRhaW5zCithIGNhY2hlIG1hcHBpbmcgcGF0aCBlbnRyaWVzIHRvIHBhdGggZW50cnkgZmluZGVycy4gIFRoaXMgY2FjaGUgaXMgbWFpbnRhaW5lZAoraW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCAoZGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBjYWNoZSBhY3R1YWxseQorc3RvcmVzIGZpbmRlciBvYmplY3RzIHJhdGhlciB0aGFuIGJlaW5nIGxpbWl0ZWQgdG8gOnRlcm06YGltcG9ydGVyYCBvYmplY3RzKS4KK0luIHRoaXMgd2F5LCB0aGUgZXhwZW5zaXZlIHNlYXJjaCBmb3IgYSBwYXJ0aWN1bGFyIDp0ZXJtOmBwYXRoIGVudHJ5YAorbG9jYXRpb24ncyA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIG5lZWQgb25seSBiZSBkb25lIG9uY2UuICBVc2VyIGNvZGUgaXMKK2ZyZWUgdG8gcmVtb3ZlIGNhY2hlIGVudHJpZXMgZnJvbSA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGZvcmNpbmcKK3RoZSBwYXRoIGJhc2VkIGZpbmRlciB0byBwZXJmb3JtIHRoZSBwYXRoIGVudHJ5IHNlYXJjaCBhZ2FpbiBbI2ZucGljXV8uCisKK0lmIHRoZSBwYXRoIGVudHJ5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBjYWNoZSwgdGhlIHBhdGggYmFzZWQgZmluZGVyIGl0ZXJhdGVzCitvdmVyIGV2ZXJ5IGNhbGxhYmxlIGluIDpkYXRhOmBzeXMucGF0aF9ob29rc2AuICBFYWNoIG9mIHRoZQorOnRlcm06YHBhdGggZW50cnkgaG9va3MgPHBhdGggZW50cnkgaG9vaz5gIGluIHRoaXMgbGlzdCBpcyBjYWxsZWQgd2l0aCBhCitzaW5nbGUgYXJndW1lbnQsIHRoZSBwYXRoIGVudHJ5IHRvIGJlIHNlYXJjaGVkLiAgVGhpcyBjYWxsYWJsZSBtYXkgZWl0aGVyCityZXR1cm4gYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIHRoYXQgY2FuIGhhbmRsZSB0aGUgcGF0aCBlbnRyeSwgb3IgaXQgbWF5CityYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAuCitBbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgdXNlZCBieSB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgdG8gc2lnbmFsIHRoYXQgdGhlIGhvb2sKK2Nhbm5vdCBmaW5kIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBmb3IgdGhhdCA6dGVybTpgcGF0aCBlbnRyeWAuICBUaGUKK2V4Y2VwdGlvbiBpcyBpZ25vcmVkIGFuZCA6dGVybTpgaW1wb3J0IHBhdGhgIGl0ZXJhdGlvbiBjb250aW51ZXMuCisKK0lmIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXRlcmF0aW9uIGVuZHMgd2l0aCBubyA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgCitiZWluZyByZXR1cm5lZCwgdGhlbiB0aGUgcGF0aCBiYXNlZCBmaW5kZXIncyA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kCit3aWxsIHN0b3JlIGBgTm9uZWBgIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgKHRvIGluZGljYXRlIHRoYXQKK3RoZXJlIGlzIG5vIGZpbmRlciBmb3IgdGhpcyBwYXRoIGVudHJ5KSBhbmQgcmV0dXJuIGBgTm9uZWBgLCBpbmRpY2F0aW5nIHRoYXQKK3RoaXMgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIGNvdWxkIG5vdCBmaW5kIHRoZSBtb2R1bGUuCisKK0lmIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCAqaXMqIHJldHVybmVkIGJ5IG9uZSBvZiB0aGUgOnRlcm06YHBhdGggZW50cnkKK2hvb2tgIGNhbGxhYmxlcyBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLCB0aGVuIHRoZSBmb2xsb3dpbmcgcHJvdG9jb2wgaXMgdXNlZAordG8gYXNrIHRoZSBmaW5kZXIgZm9yIGEgbW9kdWxlIGxvYWRlciwgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGxvYWQgdGhlIG1vZHVsZS4KKworCitQYXRoIGVudHJ5IGZpbmRlciBwcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gc3VwcG9ydCBpbXBvcnRzIG9mIG1vZHVsZXMgYW5kIGluaXRpYWxpemVkIHBhY2thZ2VzIGFuZCBhbHNvIHRvCitjb250cmlidXRlIHBvcnRpb25zIHRvIG5hbWVzcGFjZSBwYWNrYWdlcywgcGF0aCBlbnRyeSBmaW5kZXJzIG11c3QgaW1wbGVtZW50Cit0aGUgOm1ldGg6YGZpbmRfbG9hZGVyKClgIG1ldGhvZC4KKworOm1ldGg6YGZpbmRfbG9hZGVyKClgIHRha2VzIG9uZSBhcmd1bWVudCwgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZQorbW9kdWxlIGJlaW5nIGltcG9ydGVkLiAgOm1ldGg6YGZpbmRfbG9hZGVyKClgIHJldHVybnMgYSAyLXR1cGxlIHdoZXJlIHRoZQorZmlyc3QgaXRlbSBpcyB0aGUgbG9hZGVyIGFuZCB0aGUgc2Vjb25kIGl0ZW0gaXMgYSBuYW1lc3BhY2UgOnRlcm06YHBvcnRpb25gLgorV2hlbiB0aGUgZmlyc3QgaXRlbSAoaS5lLiB0aGUgbG9hZGVyKSBpcyBgYE5vbmVgYCwgdGhpcyBtZWFucyB0aGF0IHdoaWxlIHRoZQorcGF0aCBlbnRyeSBmaW5kZXIgZG9lcyBub3QgaGF2ZSBhIGxvYWRlciBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgaXQga25vd3MgdGhhdCB0aGUKK3BhdGggZW50cnkgY29udHJpYnV0ZXMgdG8gYSBuYW1lc3BhY2UgcG9ydGlvbiBmb3IgdGhlIG5hbWVkIG1vZHVsZS4gIFRoaXMgd2lsbAorYWxtb3N0IGFsd2F5cyBiZSB0aGUgY2FzZSB3aGVyZSBQeXRob24gaXMgYXNrZWQgdG8gaW1wb3J0IGEgbmFtZXNwYWNlIHBhY2thZ2UKK3RoYXQgaGFzIG5vIHBoeXNpY2FsIHByZXNlbmNlIG9uIHRoZSBmaWxlIHN5c3RlbS4gIFdoZW4gYSBwYXRoIGVudHJ5IGZpbmRlcgorcmV0dXJucyBgYE5vbmVgYCBmb3IgdGhlIGxvYWRlciwgdGhlIHNlY29uZCBpdGVtIG9mIHRoZSAyLXR1cGxlIHJldHVybiB2YWx1ZQorbXVzdCBiZSBhIHNlcXVlbmNlLCBhbHRob3VnaCBpdCBjYW4gYmUgZW1wdHkuCisKK0lmIDptZXRoOmBmaW5kX2xvYWRlcigpYCByZXR1cm5zIGEgbm9uLWBgTm9uZWBgIGxvYWRlciB2YWx1ZSwgdGhlIHBvcnRpb24gaXMKK2lnbm9yZWQgYW5kIHRoZSBsb2FkZXIgaXMgcmV0dXJuZWQgZnJvbSB0aGUgcGF0aCBiYXNlZCBmaW5kZXIsIHRlcm1pbmF0aW5nCit0aGUgc2VhcmNoIHRocm91Z2ggdGhlIHBhdGggZW50cmllcy4KKworRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbXBvcnQKK3Byb3RvY29sLCBtYW55IHBhdGggZW50cnkgZmluZGVycyBhbHNvIHN1cHBvcnQgdGhlIHNhbWUsCit0cmFkaXRpb25hbCA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIHRoYXQgbWV0YSBwYXRoIGZpbmRlcnMgc3VwcG9ydC4KK0hvd2V2ZXIgcGF0aCBlbnRyeSBmaW5kZXIgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZHMgYXJlIG5ldmVyIGNhbGxlZAord2l0aCBhIGBgcGF0aGBgIGFyZ3VtZW50ICh0aGV5IGFyZSBleHBlY3RlZCB0byByZWNvcmQgdGhlIGFwcHJvcHJpYXRlCitwYXRoIGluZm9ybWF0aW9uIGZyb20gdGhlIGluaXRpYWwgY2FsbCB0byB0aGUgcGF0aCBob29rKS4KKworVGhlIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2Qgb24gcGF0aCBlbnRyeSBmaW5kZXJzIGlzIGRlcHJlY2F0ZWQsCithcyBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgcGF0aCBlbnRyeSBmaW5kZXIgdG8gY29udHJpYnV0ZSBwb3J0aW9ucyB0bworbmFtZXNwYWNlIHBhY2thZ2VzLiBJbnN0ZWFkIHBhdGggZW50cnkgZmluZGVycyBzaG91bGQgaW1wbGVtZW50IHRoZQorOm1ldGg6YGZpbmRfbG9hZGVyKClgIG1ldGhvZCBhcyBkZXNjcmliZWQgYWJvdmUuIElmIGl0IGV4aXN0cyBvbiB0aGUgcGF0aAorZW50cnkgZmluZGVyLCB0aGUgaW1wb3J0IHN5c3RlbSB3aWxsIGFsd2F5cyBjYWxsIDptZXRoOmBmaW5kX2xvYWRlcigpYAoraW4gcHJlZmVyZW5jZSB0byA6bWV0aDpgZmluZF9tb2R1bGUoKWAuCisKKworUmVwbGFjaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG1vc3QgcmVsaWFibGUgbWVjaGFuaXNtIGZvciByZXBsYWNpbmcgdGhlIGVudGlyZSBpbXBvcnQgc3lzdGVtIGlzIHRvCitkZWxldGUgdGhlIGRlZmF1bHQgY29udGVudHMgb2YgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCByZXBsYWNpbmcgdGhlbQorZW50aXJlbHkgd2l0aCBhIGN1c3RvbSBtZXRhIHBhdGggaG9vay4KKworSWYgaXQgaXMgYWNjZXB0YWJsZSB0byBvbmx5IGFsdGVyIHRoZSBiZWhhdmlvdXIgb2YgaW1wb3J0IHN0YXRlbWVudHMKK3dpdGhvdXQgYWZmZWN0aW5nIG90aGVyIEFQSXMgdGhhdCBhY2Nlc3MgdGhlIGltcG9ydCBzeXN0ZW0sIHRoZW4gcmVwbGFjaW5nCit0aGUgYnVpbHRpbiA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gbWF5IGJlIHN1ZmZpY2llbnQuIFRoaXMgdGVjaG5pcXVlCittYXkgYWxzbyBiZSBlbXBsb3llZCBhdCB0aGUgbW9kdWxlIGxldmVsIHRvIG9ubHkgYWx0ZXIgdGhlIGJlaGF2aW91ciBvZgoraW1wb3J0IHN0YXRlbWVudHMgd2l0aGluIHRoYXQgbW9kdWxlLgorCitUbyBzZWxlY3RpdmVseSBwcmV2ZW50IGltcG9ydCBvZiBzb21lIG1vZHVsZXMgZnJvbSBhIGhvb2sgZWFybHkgb24gdGhlCittZXRhIHBhdGggKHJhdGhlciB0aGFuIGRpc2FibGluZyB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbSBlbnRpcmVseSksCitpdCBpcyBzdWZmaWNpZW50IHRvIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYCBkaXJlY3RseSBmcm9tCis6bWV0aDpgZmluZF9tb2R1bGVgIGluc3RlYWQgb2YgcmV0dXJuaW5nIGBgTm9uZWBgLiBUaGUgbGF0dGVyIGluZGljYXRlcwordGhhdCB0aGUgbWV0YSBwYXRoIHNlYXJjaCBzaG91bGQgY29udGludWUuIHdoaWxlIHJhaXNpbmcgYW4gZXhjZXB0aW9uCit0ZXJtaW5hdGVzIGl0IGltbWVkaWF0ZWx5LgorCisKK09wZW4gaXNzdWVzCis9PT09PT09PT09PQorCitYWFggSXQgd291bGQgYmUgcmVhbGx5IG5pY2UgdG8gaGF2ZSBhIGRpYWdyYW0uCisKK1hYWCAqIChpbXBvcnRfbWFjaGluZXJ5LnJzdCkgaG93IGFib3V0IGEgc2VjdGlvbiBkZXZvdGVkIGp1c3QgdG8gdGhlCithdHRyaWJ1dGVzIG9mIG1vZHVsZXMgYW5kIHBhY2thZ2VzLCBwZXJoYXBzIGV4cGFuZGluZyB1cG9uIG9yIHN1cHBsYW50aW5nIHRoZQorcmVsYXRlZCBlbnRyaWVzIGluIHRoZSBkYXRhIG1vZGVsIHJlZmVyZW5jZSBwYWdlPworCitYWFggcnVucHksIHBrZ3V0aWwsIGV0IGFsIGluIHRoZSBsaWJyYXJ5IG1hbnVhbCBzaG91bGQgYWxsIGdldCAiU2VlIEFsc28iCitsaW5rcyBhdCB0aGUgdG9wIHBvaW50aW5nIHRvIHRoZSBuZXcgaW1wb3J0IHN5c3RlbSBzZWN0aW9uLgorCisKK1JlZmVyZW5jZXMKKz09PT09PT09PT0KKworVGhlIGltcG9ydCBtYWNoaW5lcnkgaGFzIGV2b2x2ZWQgY29uc2lkZXJhYmx5IHNpbmNlIFB5dGhvbidzIGVhcmx5IGRheXMuICBUaGUKK29yaWdpbmFsIGBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcworPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvZXNzYXlzL3BhY2thZ2VzLmh0bWw+YF8gaXMgc3RpbGwgYXZhaWxhYmxlIHRvIHJlYWQsCithbHRob3VnaCBzb21lIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXQgZG9jdW1lbnQuCisKK1RoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgd2FzIDpwZXA6YDMwMmAsIHdpdGgKK3N1YnNlcXVlbnQgZXh0ZW5zaW9uIGluIDpwZXA6YDQyMGAuCisKKzpwZXA6YDQyMGAgaW50cm9kdWNlZCA6dGVybTpgbmFtZXNwYWNlIHBhY2thZ2VzIDxuYW1lc3BhY2UgcGFja2FnZT5gIGZvcgorUHl0aG9uIDMuMy4gIDpwZXA6YDQyMGAgYWxzbyBpbnRyb2R1Y2VkIHRoZSA6bWV0aDpgZmluZF9sb2FkZXJgIHByb3RvY29sIGFzIGFuCithbHRlcm5hdGl2ZSB0byA6bWV0aDpgZmluZF9tb2R1bGVgLgorCis6cGVwOmAzNjZgIGRlc2NyaWJlcyB0aGUgYWRkaXRpb24gb2YgdGhlIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgZm9yCitleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzIGluIG1haW4gbW9kdWxlcy4KKworOnBlcDpgMzI4YCBpbnRyb2R1Y2VkIGFic29sdXRlIGFuZCBleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzIGFuZCBpbml0aWFsbHkKK3Byb3Bvc2VkIGBgX19uYW1lX19gYCBmb3Igc2VtYW50aWNzIDpwZXA6YDM2NmAgd291bGQgZXZlbnR1YWxseSBzcGVjaWZ5IGZvcgorYGBfX3BhY2thZ2VfX2BgLgorCis6cGVwOmAzMzhgIGRlZmluZXMgZXhlY3V0aW5nIG1vZHVsZXMgYXMgc2NyaXB0cy4KKworCitGb290bm90ZXMKKz09PT09PT09PQorCisuLiBbI2ZubW9dIFNlZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgLgorCisuLiBbI2ZubG9dIFRoZSBpbXBvcnRsaWIgaW1wbGVtZW50YXRpb24gYXZvaWRzIHVzaW5nIHRoZSByZXR1cm4gdmFsdWUKKyAgIGRpcmVjdGx5LiBJbnN0ZWFkLCBpdCBnZXRzIHRoZSBtb2R1bGUgb2JqZWN0IGJ5IGxvb2tpbmcgdGhlIG1vZHVsZSBuYW1lIHVwCisgICBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLiAgVGhlIGluZGlyZWN0IGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgYW4gaW1wb3J0ZWQKKyAgIG1vZHVsZSBtYXkgcmVwbGFjZSBpdHNlbGYgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gIFRoaXMgaXMKKyAgIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGJlaGF2aW9yIHRoYXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gd29yayBpbiBvdGhlcgorICAgUHl0aG9uIGltcGxlbWVudGF0aW9ucy4KKworLi4gWyNmbnBpY10gSW4gbGVnYWN5IGNvZGUsIGl0IGlzIHBvc3NpYmxlIHRvIGZpbmQgaW5zdGFuY2VzIG9mCisgICA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIGluIHRoZSA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLiAgSXQKKyAgIGlzIHJlY29tbWVuZGVkIHRoYXQgY29kZSBiZSBjaGFuZ2VkIHRvIHVzZSBgYE5vbmVgYCBpbnN0ZWFkLiAgU2VlCisgICA6cmVmOmBwb3J0aW5ncHl0aG9uY29kZWAgZm9yIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvaW5kZXgucnN0IGIvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QKaW5kZXggYmQxYTI4MS4uNTVmOTNkNyAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9pbmRleC5yc3QKQEAgLTI0LDYgKzI0LDcgQEAKICAgIGxleGljYWxfYW5hbHlzaXMucnN0CiAgICBkYXRhbW9kZWwucnN0CiAgICBleGVjdXRpb25tb2RlbC5yc3QKKyAgIGltcG9ydC5yc3QKICAgIGV4cHJlc3Npb25zLnJzdAogICAgc2ltcGxlX3N0bXRzLnJzdAogICAgY29tcG91bmRfc3RtdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCA0YjQ5NzM4Li5iYWIzOWY5IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTQwMSw3ICs0MDEsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBzdHJpbmdsaXRlcmFsOiBbYHN0cmluZ3ByZWZpeGBdKGBzaG9ydHN0cmluZ2AgfCBgbG9uZ3N0cmluZ2ApCi0gICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJSIgorICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIKICAgIHNob3J0c3RyaW5nOiAiJyIgYHNob3J0c3RyaW5naXRlbWAqICInIiB8ICciJyBgc2hvcnRzdHJpbmdpdGVtYCogJyInCiAgICBsb25nc3RyaW5nOiAiJycnIiBgbG9uZ3N0cmluZ2l0ZW1gKiAiJycnIiB8ICciIiInIGBsb25nc3RyaW5naXRlbWAqICciIiInCiAgICBzaG9ydHN0cmluZ2l0ZW06IGBzaG9ydHN0cmluZ2NoYXJgIHwgYHN0cmluZ2VzY2FwZXNlcWAKQEAgLTQxMiw3ICs0MTIsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBieXRlc2xpdGVyYWw6IGBieXRlc3ByZWZpeGAoYHNob3J0Ynl0ZXNgIHwgYGxvbmdieXRlc2ApCi0gICBieXRlc3ByZWZpeDogImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIgorICAgYnl0ZXNwcmVmaXg6ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiCiAgICBzaG9ydGJ5dGVzOiAiJyIgYHNob3J0Ynl0ZXNpdGVtYCogIiciIHwgJyInIGBzaG9ydGJ5dGVzaXRlbWAqICciJwogICAgbG9uZ2J5dGVzOiAiJycnIiBgbG9uZ2J5dGVzaXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdieXRlc2l0ZW1gKiAnIiIiJwogICAgc2hvcnRieXRlc2l0ZW06IGBzaG9ydGJ5dGVzY2hhcmAgfCBgYnl0ZXNlc2NhcGVzZXFgCkBAIC00NDEsMTAgKzQ0MSwyNCBAQAogbWF5IG9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3IgZ3JlYXRlcgogbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLgogCitBcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCB1bmljb2RlIHN0cmluZ3Mgd2l0aCBhCitgYHVgYCBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCBjb2RlYmFzZXMuCisKIEJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGEgbGV0dGVyIGBgJ3InYGAKIG9yIGBgJ1InYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkIDpkZm46YHJhdyBzdHJpbmdzYCBhbmQgdHJlYXQgYmFja3NsYXNoZXMgYXMKIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgbGl0ZXJhbHMsIGBgJ1xVJ2BgIGFuZCBgYCdcdSdgYAotZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LgorZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LiBHaXZlbiB0aGF0IFB5dGhvbiAyLngncyByYXcKK3VuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueCdzIHRoZSBgYCd1cidgYCBzeW50YXgKK2lzIG5vdCBzdXBwb3J0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIGBgJ3JiJ2BgIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW4gYWRkZWQgYXMgYSBzeW5vbnltCisgICAgICBvZiBgYCdicidgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbCAoYGB1J3ZhbHVlJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkCisgICAgICB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbCBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLgorICAgICAgU2VlIDpwZXA6YDQxNGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIEluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWQgKGFuZCBhcmUKIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvdyB0ZXJtaW5hdGUgdGhlIHN0cmluZy4gIChBCkBAIC00OTIsMTMgKzUwNiwxMyBAQAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogfCBFc2NhcGUgU2VxdWVuY2UgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgfAogKz09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KwotfCBgYFxOe25hbWV9YGAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgIHwgICAgICAgfAorfCBgYFxOe25hbWV9YGAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgIHwgXCg0KSAgfAogfCAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYFx1eHh4eGBgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlIHwgXCg0KSAgfAorfCBgYFx1eHh4eGBgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlIHwgXCg1KSAgfAogfCAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYFxVeHh4eHh4eHhgYCAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlIHwgXCg1KSAgfAorfCBgYFxVeHh4eHh4eHhgYCAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlIHwgXCg2KSAgfAogfCAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCkBAIC01MTYsMTAgKzUzMCwxNCBAQAogICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCiAKICg0KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbI11fIGhhcyBiZWVuIGFkZGVkLgorCisoNSkKICAgIEluZGl2aWR1YWwgY29kZSB1bml0cyB3aGljaCBmb3JtIHBhcnRzIG9mIGEgc3Vycm9nYXRlIHBhaXIgY2FuIGJlIGVuY29kZWQgdXNpbmcKICAgIHRoaXMgZXNjYXBlIHNlcXVlbmNlLiAgRXhhY3RseSBmb3VyIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLgogCi0oNSkKKyg2KQogICAgQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LCBidXQgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYwogICAgTXVsdGlsaW5ndWFsIFBsYW5lIChCTVApIHdpbGwgYmUgZW5jb2RlZCB1c2luZyBhIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcwogICAgY29tcGlsZWQgdG8gdXNlIDE2LWJpdCBjb2RlIHVuaXRzICh0aGUgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMKQEAgLTcwNiwzICs3MjQsOCBAQAogb2NjdXJyZW5jZSBvdXRzaWRlIHN0cmluZyBsaXRlcmFscyBhbmQgY29tbWVudHMgaXMgYW4gdW5jb25kaXRpb25hbCBlcnJvcjo6CiAKICAgICQgICAgICAgPyAgICAgICBgCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjEuMC91Y2QvTmFtZUFsaWFzZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKaW5kZXggNzMxODNkNS4uODFkYzc0OCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdApAQCAtNDI0LDEwICs0MjQsMTAgQEAKIDprZXl3b3JkOmBmaW5hbGx5YCBjbGF1c2UsIHRoYXQgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUKIHJlYWxseSBsZWF2aW5nIHRoZSBmdW5jdGlvbi4KIAotSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSA6a2V5d29yZDpgcmV0dXJuYCBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgdG8KLWluY2x1ZGUgYW4gOnRva2VuOmBleHByZXNzaW9uX2xpc3RgLiAgSW4gdGhhdCBjb250ZXh0LCBhIGJhcmUgOmtleXdvcmQ6YHJldHVybmAKLWluZGljYXRlcyB0aGF0IHRoZSBnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCB0byBiZQotcmFpc2VkLgorSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSA6a2V5d29yZDpgcmV0dXJuYCBzdGF0ZW1lbnQgaW5kaWNhdGVzIHRoYXQgdGhlCitnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCB0byBiZSByYWlzZWQuIFRoZSByZXR1cm5lZAordmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3QgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgYW5kCitiZWNvbWVzIHRoZSA6YXR0cjpgU3RvcEl0ZXJhdGlvbi52YWx1ZWAgYXR0cmlidXRlLgogCiAKIC4uIF95aWVsZDoKQEAgLTQ0OSw2ICs0NDksNyBAQAogYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLiBVc2luZyBhIDprZXl3b3JkOmB5aWVsZGAKIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byBjYXVzZSB0aGF0IGRlZmluaXRpb24gdG8KIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbm9ybWFsIGZ1bmN0aW9uLgorCiBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhbiBpdGVyYXRvciBrbm93biBhcyBhIGdlbmVyYXRvcgogaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLiAgVGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcwogZXhlY3V0ZWQgYnkgY2FsbGluZyB0aGUgOmZ1bmM6YG5leHRgIGZ1bmN0aW9uIG9uIHRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbApAQCAtNDY4LDE0ICs0NjksMjggQEAKIGdhcmJhZ2UgY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvcidzIDptZXRoOmBjbG9zZWAgbWV0aG9kIHdpbGwgYmUKIGNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZXMgdG8gZXhlY3V0ZS4KIAorV2hlbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgdXNlZCwgaXQgdHJlYXRzIHRoZSBzdXBwbGllZCBleHByZXNzaW9uIGFzCithIHN1Yml0ZXJhdG9yLCBwcm9kdWNpbmcgdmFsdWVzIGZyb20gaXQgdW50aWwgdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgaXMKK2V4aGF1c3RlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZSBjb250cm9sIGZsb3cgdG8gYSBzdWJpdGVyYXRvcgorCitGb3IgZnVsbCBkZXRhaWxzIG9mIDprZXl3b3JkOmB5aWVsZGAgc2VtYW50aWNzLCByZWZlciB0byB0aGUgOnJlZjpgeWllbGRleHByYAorc2VjdGlvbi4KKwogLi4gc2VlYWxzbzo6CiAKICAgIDpwZXA6YDAyNTVgIC0gU2ltcGxlIEdlbmVyYXRvcnMKICAgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudCB0byBQeXRob24uCiAKICAgIDpwZXA6YDAzNDJgIC0gQ29yb3V0aW5lcyB2aWEgRW5oYW5jZWQgR2VuZXJhdG9ycwotICAgICAgVGhlIHByb3Bvc2FsIHRoYXQsIGFtb25nIG90aGVyIGdlbmVyYXRvciBlbmhhbmNlbWVudHMsIHByb3Bvc2VkIGFsbG93aW5nCi0gICAgICA6a2V5d29yZDpgeWllbGRgIHRvIGFwcGVhciBpbnNpZGUgYSA6a2V5d29yZDpgdHJ5YCAuLi4gOmtleXdvcmQ6YGZpbmFsbHlgIGJsb2NrLgorICAgICAgVGhlIHByb3Bvc2FsIHRvIGVuaGFuY2UgdGhlIEFQSSBhbmQgc3ludGF4IG9mIGdlbmVyYXRvcnMsIG1ha2luZyB0aGVtCisgICAgICB1c2FibGUgYXMgc2ltcGxlIGNvcm91dGluZXMuCisKKyAgIDpwZXA6YDAzODBgIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCisgICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSA6dG9rZW46YHlpZWxkX2Zyb21gIHN5bnRheCwgbWFraW5nIGRlbGVnYXRpb24KKyAgICAgIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuCiAKIAogLi4gX3JhaXNlOgpAQCAtNjQ1LDE2MSArNjYwLDk4IEBACiAgICByZWxhdGl2ZV9tb2R1bGU6ICIuIiogYG1vZHVsZWAgfCAiLiIrCiAgICBuYW1lOiBgaWRlbnRpZmllcmAKIAotSW1wb3J0IHN0YXRlbWVudHMgYXJlIGV4ZWN1dGVkIGluIHR3byBzdGVwczogKDEpIGZpbmQgYSBtb2R1bGUsIGFuZCBpbml0aWFsaXplCi1pdCBpZiBuZWNlc3Nhcnk7ICgyKSBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgKG9mIHRoZSBzY29wZQotd2hlcmUgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBvY2N1cnMpLiBUaGUgc3RhdGVtZW50IGNvbWVzIGluIHR3bwotZm9ybXMgZGlmZmVyaW5nIG9uIHdoZXRoZXIgaXQgdXNlcyB0aGUgOmtleXdvcmQ6YGZyb21gIGtleXdvcmQuIFRoZSBmaXJzdCBmb3JtCi0od2l0aG91dCA6a2V5d29yZDpgZnJvbWApIHJlcGVhdHMgdGhlc2Ugc3RlcHMgZm9yIGVhY2ggaWRlbnRpZmllciBpbiB0aGUgbGlzdC4KLVRoZSBmb3JtIHdpdGggOmtleXdvcmQ6YGZyb21gIHBlcmZvcm1zIHN0ZXAgKDEpIG9uY2UsIGFuZCB0aGVuIHBlcmZvcm1zIHN0ZXAKLSgyKSByZXBlYXRlZGx5LiBGb3IgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2Ygc3RlcCAoMSksIHNlZSB0aGUKLTptb2Q6YGltcG9ydGxpYmAgbW9kdWxlLgorVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vIDprZXl3b3JkOmBmcm9tYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3bworc3RlcHM6CiAKLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHBhY2thZ2UKKyMuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnkKKyMuIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlIHdoZXJlCisgICB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3Vycy4KIAotVG8gdW5kZXJzdGFuZCBob3cgc3RlcCAoMSkgb2NjdXJzLCBvbmUgbXVzdCBmaXJzdCB1bmRlcnN0YW5kIGhvdyBQeXRob24gaGFuZGxlcwotaGllcmFyY2hpY2FsIG5hbWluZyBvZiBtb2R1bGVzLiBUbyBoZWxwIG9yZ2FuaXplIG1vZHVsZXMgYW5kIHByb3ZpZGUgYQotaGllcmFyY2h5IGluIG5hbWluZywgUHl0aG9uIGhhcyBhIGNvbmNlcHQgb2YgcGFja2FnZXMuIEEgcGFja2FnZSBjYW4gY29udGFpbgotb3RoZXIgcGFja2FnZXMgYW5kIG1vZHVsZXMgd2hpbGUgbW9kdWxlcyBjYW5ub3QgY29udGFpbiBvdGhlciBtb2R1bGVzIG9yCi1wYWNrYWdlcy4gRnJvbSBhIGZpbGUgc3lzdGVtIHBlcnNwZWN0aXZlLCBwYWNrYWdlcyBhcmUgZGlyZWN0b3JpZXMgYW5kIG1vZHVsZXMKLWFyZSBmaWxlcy4gVGhlIG9yaWdpbmFsIGBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcwotPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvZXNzYXlzL3BhY2thZ2VzLmh0bWw+YF8gaXMgc3RpbGwgYXZhaWxhYmxlIHRvIHJlYWQsCi1hbHRob3VnaCBtaW5vciBkZXRhaWxzIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgd3JpdGluZyBvZiB0aGF0IGRvY3VtZW50LgorV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieQorY29tbWFzKSB0aGUgdHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdAorYXMgdGhvdWdoIHRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkaXVhbCBpbXBvcnQKK3N0YXRlbWVudHMuCiAKLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHN5cy5tb2R1bGVzCitUaGUgZGV0YWlscyBvZiB0aGUgZmlyc3Qgc3RlcCwgZmluZGluZyBhbmQgbG9hZGluZyBtb2R1bGVzIGlzIGRlc2NyaWJlZCBpbgorZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlIDpyZWY6YGltcG9ydCBzeXN0ZW0gPGltcG9ydHN5c3RlbT5gLAord2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdCBjYW4KK2JlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjdXN0b21pemUKK3RoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heSBpbmRpY2F0ZSBlaXRoZXIKK3RoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuIGVycm9yIG9jY3VycmVkIHdoaWxlCitpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uIG9mIHRoZSBtb2R1bGUncyBjb2RlLgogCi1PbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGUgdGVybQotIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nCi1mb3IgdGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXMKLTpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZSBjYWNoZSBvZiBhbGwgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBpbXBvcnRlZAotcHJldmlvdXNseS4gSWYgdGhlIG1vZHVsZSBpcyBmb3VuZCB0aGVyZSB0aGVuIGl0IGlzIHVzZWQgaW4gc3RlcCAoMikgb2YgaW1wb3J0Ci11bmxlc3MgYGBOb25lYGAgaXMgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgaW4gd2hpY2ggY2FzZQotOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KK0lmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZQorYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6CiAKLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHN5cy5tZXRhX3BhdGgKLSAgICBzaW5nbGU6IGZpbmRlcgotICAgIHBhaXI6IGZpbmRlcjsgZmluZF9tb2R1bGUKLSAgICBzaW5nbGU6IF9fcGF0aF9fCisqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSA6a2V5d29yZDpgYXNgLCB0aGVuIHRoZSBuYW1lCisgIGZvbGxvd2luZyA6a2V5d29yZDpgYXNgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuCisqIElmIG5vIG90aGVyIG5hbWUgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBhIHRvcAorICBsZXZlbCBtb2R1bGUsIHRoZSBtb2R1bGUncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYQorICByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZQorKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiB0aGUgbmFtZQorICBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzIGJvdW5kIGluIHRoZSBsb2NhbAorICBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiBUaGUgaW1wb3J0ZWQgbW9kdWxlCisgIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkIG5hbWUgcmF0aGVyIHRoYW4gZGlyZWN0bHkKIAotSWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gdGhlIGNhY2hlLCB0aGVuIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBpcyBzZWFyY2hlZAotKHRoZSBzcGVjaWZpY2F0aW9uIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgY2FuIGJlIGZvdW5kIGluIDpwZXA6YDMwMmApLgotVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgOnRlcm06YGZpbmRlcmAgb2JqZWN0cyB3aGljaCBhcmUgcXVlcmllZCBpbiBvcmRlciBhcyB0bwotd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieSBjYWxsaW5nIHRoZWlyIDptZXRoOmBmaW5kX21vZHVsZWAKLW1ldGhvZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFwcGVucyB0byBiZSBjb250YWluZWQKLXdpdGhpbiBhIHBhY2thZ2UgKGFzIGRlbm90ZWQgYnkgdGhlIGV4aXN0ZW5jZSBvZiBhIGRvdCBpbiB0aGUgbmFtZSksIHRoZW4gYQotc2Vjb25kIGFyZ3VtZW50IHRvIDptZXRoOmBmaW5kX21vZHVsZWAgaXMgZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZQotOmF0dHI6YF9fcGF0aF9fYCBhdHRyaWJ1dGUgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UgKGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGxhc3QKLWRvdCBpbiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkKS4gSWYgYSBmaW5kZXIgY2FuIGZpbmQgdGhlIG1vZHVsZQotaXQgcmV0dXJucyBhIDp0ZXJtOmBsb2FkZXJgIChkaXNjdXNzZWQgbGF0ZXIpIG9yIHJldHVybnMgYGBOb25lYGAuCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IHN5cy5wYXRoX2hvb2tzCi0gICAgc2luZ2xlOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgIHNpbmdsZTogc3lzLnBhdGgKLQotSWYgbm9uZSBvZiB0aGUgZmluZGVycyBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYXJlIGFibGUgdG8gZmluZCB0aGUgbW9kdWxlCi10aGVuIHNvbWUgaW1wbGljaXRseSBkZWZpbmVkIGZpbmRlcnMgYXJlIHF1ZXJpZWQuIEltcGxlbWVudGF0aW9ucyBvZiBQeXRob24KLXZhcnkgaW4gd2hhdCBpbXBsaWNpdCBtZXRhIHBhdGggZmluZGVycyBhcmUgZGVmaW5lZC4gVGhlIG9uZSB0aGV5IGFsbCBkbwotZGVmaW5lLCB0aG91Z2gsIGlzIG9uZSB0aGF0IGhhbmRsZXMgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCwKLTpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAsIGFuZCA6ZGF0YTpgc3lzLnBhdGhgLgotCi1UaGUgaW1wbGljaXQgZmluZGVyIHNlYXJjaGVzIGZvciB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpbiB0aGUgInBhdGhzIiBzcGVjaWZpZWQKLWluIG9uZSBvZiB0d28gcGxhY2VzICgicGF0aHMiIGRvIG5vdCBoYXZlIHRvIGJlIGZpbGUgc3lzdGVtIHBhdGhzKS4gSWYgdGhlCi1tb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgc3VwcG9zZWQgdG8gYmUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUKLXNlY29uZCBhcmd1bWVudCBwYXNzZWQgdG8gOm1ldGg6YGZpbmRfbW9kdWxlYCwgOmF0dHI6YF9fcGF0aF9fYCBvbiB0aGUgcGFyZW50Ci1wYWNrYWdlLCBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgcGF0aHMuIElmIHRoZSBtb2R1bGUgaXMgbm90IGNvbnRhaW5lZCBpbiBhCi1wYWNrYWdlIHRoZW4gOmRhdGE6YHN5cy5wYXRoYCBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgcGF0aHMuCi0KLU9uY2UgdGhlIHNvdXJjZSBvZiBwYXRocyBpcyBjaG9zZW4gaXQgaXMgaXRlcmF0ZWQgb3ZlciB0byBmaW5kIGEgZmluZGVyIHRoYXQKLWNhbiBoYW5kbGUgdGhhdCBwYXRoLiBUaGUgZGljdCBhdCA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGNhY2hlcwotZmluZGVycyBmb3IgcGF0aHMgYW5kIGlzIGNoZWNrZWQgZm9yIGEgZmluZGVyLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBoYXZlIGEKLWZpbmRlciBjYWNoZWQgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzIHNlYXJjaGVkIGJ5IGNhbGxpbmcgZWFjaCBvYmplY3QgaW4KLXRoZSBsaXN0IHdpdGggYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIHBhdGgsIHJldHVybmluZyBhIGZpbmRlciBvciByYWlzZXMKLTpleGM6YEltcG9ydEVycm9yYC4gSWYgYSBmaW5kZXIgaXMgcmV0dXJuZWQgdGhlbiBpdCBpcyBjYWNoZWQgaW4KLTpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBubyBmaW5kZXIKLWNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiBgYE5vbmVgYCBpcwotc3RvcmVkIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgdG8gc2lnbmlmeSB0aGF0IGFuIGltcGxpY2l0LAotZmlsZS1iYXNlZCBmaW5kZXIgdGhhdCBoYW5kbGVzIG1vZHVsZXMgc3RvcmVkIGFzIGluZGl2aWR1YWwgZmlsZXMgc2hvdWxkIGJlCi11c2VkIGZvciB0aGF0IHBhdGguIElmIHRoZSBwYXRoIGRvZXMgbm90IGV4aXN0IHRoZW4gYSBmaW5kZXIgd2hpY2ggYWx3YXlzCi1yZXR1cm5zIGBgTm9uZWBgIGlzIHBsYWNlZCBpbiB0aGUgY2FjaGUgZm9yIHRoZSBwYXRoLgotCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBsb2FkZXIKLSAgICBwYWlyOiBsb2FkZXI7IGxvYWRfbW9kdWxlCi0gICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgotCi1JZiBubyBmaW5kZXIgY2FuIGZpbmQgdGhlIG1vZHVsZSB0aGVuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuIE90aGVyd2lzZQotc29tZSBmaW5kZXIgcmV0dXJuZWQgYSBsb2FkZXIgd2hvc2UgOm1ldGg6YGxvYWRfbW9kdWxlYCBtZXRob2QgaXMgY2FsbGVkIHdpdGgKLXRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlIDpwZXA6YDMwMmAgZm9yIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mCi1sb2FkZXJzKS4gQSBsb2FkZXIgaGFzIHNldmVyYWwgcmVzcG9uc2liaWxpdGllcyB0byBwZXJmb3JtIG9uIGEgbW9kdWxlIGl0Ci1sb2Fkcy4gRmlyc3QsIGlmIHRoZSBtb2R1bGUgYWxyZWFkeSBleGlzdHMgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCAoYQotcG9zc2liaWxpdHkgaWYgdGhlIGxvYWRlciBpcyBjYWxsZWQgb3V0c2lkZSBvZiB0aGUgaW1wb3J0IG1hY2hpbmVyeSkgdGhlbiBpdAotaXMgdG8gdXNlIHRoYXQgbW9kdWxlIGZvciBpbml0aWFsaXphdGlvbiBhbmQgbm90IGEgbmV3IG1vZHVsZS4gQnV0IGlmIHRoZQotbW9kdWxlIGRvZXMgbm90IGV4aXN0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0Ci1kaWN0IGJlZm9yZSBpbml0aWFsaXphdGlvbiBiZWdpbnMuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUKLW1vZHVsZSBhbmQgaXQgd2FzIGFkZGVkIHRvIDpkYXRhOmBzeXMubW9kdWxlc2AgaXQgaXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZQotZGljdC4gSWYgYW4gZXJyb3Igb2NjdXJzIGJ1dCB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGluIDpkYXRhOmBzeXMubW9kdWxlc2AgaXQKLWlzIGxlZnQgaW4gdGhlIGRpY3QuCi0KLS4uIGluZGV4OjoKLSAgICBzaW5nbGU6IF9fbmFtZV9fCi0gICAgc2luZ2xlOiBfX2ZpbGVfXwotICAgIHNpbmdsZTogX19wYXRoX18KLSAgICBzaW5nbGU6IF9fcGFja2FnZV9fCi0gICAgc2luZ2xlOiBfX2xvYWRlcl9fCi0KLVRoZSBsb2FkZXIgbXVzdCBzZXQgc2V2ZXJhbCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUuIDpkYXRhOmBfX25hbWVfX2AgaXMgdG8gYmUKLXNldCB0byB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiA6ZGF0YTpgX19maWxlX19gIGlzIHRvIGJlIHRoZSAicGF0aCIgdG8gdGhlIGZpbGUKLXVubGVzcyB0aGUgbW9kdWxlIGlzIGJ1aWx0LWluIChhbmQgdGh1cyBsaXN0ZWQgaW4KLTpkYXRhOmBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgKSBpbiB3aGljaCBjYXNlIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNldC4KLUlmIHdoYXQgaXMgYmVpbmcgaW1wb3J0ZWQgaXMgYSBwYWNrYWdlIHRoZW4gOmRhdGE6YF9fcGF0aF9fYCBpcyB0byBiZSBzZXQgdG8gYQotbGlzdCBvZiBwYXRocyB0byBiZSBzZWFyY2hlZCB3aGVuIGxvb2tpbmcgZm9yIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGNvbnRhaW5lZAotd2l0aGluIHRoZSBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLiA6ZGF0YTpgX19wYWNrYWdlX19gIGlzIG9wdGlvbmFsIGJ1dCBzaG91bGQKLWJlIHNldCB0byB0aGUgbmFtZSBvZiBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBvciBwYWNrYWdlICh0aGUgZW1wdHkKLXN0cmluZyBpcyB1c2VkIGZvciBtb2R1bGUgbm90IGNvbnRhaW5lZCBpbiBhIHBhY2thZ2UpLiA6ZGF0YTpgX19sb2FkZXJfX2AgaXMKLWFsc28gb3B0aW9uYWwgYnV0IHNob3VsZCBiZSBzZXQgdG8gdGhlIGxvYWRlciBvYmplY3QgdGhhdCBpcyBsb2FkaW5nIHRoZQotbW9kdWxlLgotCi0uLiBpbmRleDo6Ci0gICAgZXhjZXB0aW9uOiBJbXBvcnRFcnJvcgotCi1JZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGxvYWRpbmcgdGhlbiB0aGUgbG9hZGVyIHJhaXNlcyA6ZXhjOmBJbXBvcnRFcnJvcmAgaWYKLXNvbWUgb3RoZXIgZXhjZXB0aW9uIGlzIG5vdCBhbHJlYWR5IGJlaW5nIHByb3BhZ2F0ZWQuIE90aGVyd2lzZSB0aGUgbG9hZGVyCi1yZXR1cm5zIHRoZSBtb2R1bGUgdGhhdCB3YXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZC4KLQotV2hlbiBzdGVwICgxKSBmaW5pc2hlcyB3aXRob3V0IHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBzdGVwICgyKSBjYW4gYmVnaW4uCi0KLVRoZSBmaXJzdCBmb3JtIG9mIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBiaW5kcyB0aGUgbW9kdWxlIG5hbWUgaW4gdGhlIGxvY2FsCi1uYW1lc3BhY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsIGFuZCB0aGVuIGdvZXMgb24gdG8gaW1wb3J0IHRoZSBuZXh0IGlkZW50aWZpZXIsCi1pZiBhbnkuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgOmtleXdvcmQ6YGFzYCwgdGhlIG5hbWUgZm9sbG93aW5nCi06a2V5d29yZDpgYXNgIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuCiAKIC4uIGluZGV4OjoKICAgIHBhaXI6IG5hbWU7IGJpbmRpbmcKKyAgIGtleXdvcmQ6IGZyb20KICAgIGV4Y2VwdGlvbjogSW1wb3J0RXJyb3IKIAotVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIGRvZXMgbm90IGJpbmQgdGhlIG1vZHVsZSBuYW1lOiBpdCBnb2VzIHRocm91Z2ggdGhlIGxpc3QKLW9mIGlkZW50aWZpZXJzLCBsb29rcyBlYWNoIG9uZSBvZiB0aGVtIHVwIGluIHRoZSBtb2R1bGUgZm91bmQgaW4gc3RlcCAoMSksIGFuZAotYmluZHMgdGhlIG5hbWUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSB0byB0aGUgb2JqZWN0IHRodXMgZm91bmQuICBBcyB3aXRoIHRoZQotZmlyc3QgZm9ybSBvZiA6a2V5d29yZDpgaW1wb3J0YCwgYW4gYWx0ZXJuYXRlIGxvY2FsIG5hbWUgY2FuIGJlIHN1cHBsaWVkIGJ5Ci1zcGVjaWZ5aW5nICI6a2V5d29yZDpgYXNgIGxvY2FsbmFtZSIuICBJZiBhIG5hbWUgaXMgbm90IGZvdW5kLAotOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhcgotKGBgJyonYGApLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsCi1uYW1lc3BhY2Ugb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KK1RoZSA6a2V5d29yZDpgZnJvbWAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6CisKKyMuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIDprZXl3b3JkOmBmcm9tYCBjbGF1c2UgbG9hZGluZyBhbmQKKyAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7CisjLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBjbGF1c2VzOgorCisgICAjLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lCisgICAjLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuCisgICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZQorICAgIy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCisgICAjLiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSwKKyAgICAgIHVzaW5nIHRoZSBuYW1lIGluIHRoZSA6a2V5d29yZDpgYXNgIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LAorICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZQorCitFeGFtcGxlczo6CisKKyAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5CisgICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseQorICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiCisgICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXoKKyAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyCisKK0lmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoYGAnKidgYCksIGFsbCBwdWJsaWMKK25hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIHNjb3BlCit3aGVyZSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IG9jY3Vycy4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IF9fYWxsX18gKG9wdGlvbmFsIG1vZHVsZSBhdHRyaWJ1dGUpCiAKIFRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSBtb2R1bGUncwotbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkIGBgX19hbGxfX2BgOyBpZiBkZWZpbmVkLCBpdCBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YKLXN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4KLWBgX19hbGxfX2BgIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgCi1pcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGUncwotbmFtZXNwYWNlIHdoaWNoIGRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYCdfJ2BgKS4KLWBgX19hbGxfX2BgIHNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQKLWFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5Ci1tb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLgorbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkIGBgX19hbGxfX2BgOyBpZiBkZWZpbmVkLCBpdCBtdXN0IGJlIGEgc2VxdWVuY2UKK29mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdCBtb2R1bGUuICBUaGUgbmFtZXMKK2dpdmVuIGluIGBgX19hbGxfX2BgIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmCitgYF9fYWxsX19gYCBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kCitpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyCisoYGAnXydgYCkuICBgYF9fYWxsX19gYCBzaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkCit0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMKK2xpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS4KKworVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHdpdGggYGAqYGAgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuCitBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9ucyB3aWxsIHJhaXNlIGEKKzpleGM6YFN5bnRheEVycm9yYC4KKworLi4gaW5kZXg6OiBzaW5nbGU6IF9fYWxsX18gKG9wdGlvbmFsIG1vZHVsZSBhdHRyaWJ1dGUpCisKK1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSBtb2R1bGUncworbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkIGBgX19hbGxfX2BgOyBpZiBkZWZpbmVkLCBpdCBtdXN0IGJlIGEgc2VxdWVuY2UKK29mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdCBtb2R1bGUuICBUaGUgbmFtZXMKK2dpdmVuIGluIGBgX19hbGxfX2BgIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmCitgYF9fYWxsX19gYCBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kCitpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyCisoYGAnXydgYCkuICBgYF9fYWxsX19gYCBzaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkCit0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMKK2xpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS4KIAogVGhlIDprZXl3b3JkOmBmcm9tYCBmb3JtIHdpdGggYGAqYGAgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuICBUaGUgd2lsZAogY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyBvbmx5IGFsbG93ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC4KZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCmluZGV4IDc0OGNiOTEuLmEwZWMzMmYgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIAkgICAgPGgzPkRvY3MgZm9yIG90aGVyIHZlcnNpb25zPC9oMz4KIAkgICAgPHVsPgogCSAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vZG9jcy5weXRob24ub3JnLzIuNy8iPlB5dGhvbiAyLjcgKHN0YWJsZSk8L2E+PC9saT4KLQkgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjMvIj5QeXRob24gMy4zIChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KKwkgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvIj5QeXRob24gMy40IChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvdmVyc2lvbnMvIj5PbGQgdmVyc2lvbnM8L2E+PC9saT4KICAgICAgICAgICAgIDwvdWw+CiAKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L2xheW91dC5odG1sCmluZGV4IGRiNGEzODYuLmRmNzI4YWEgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbApAQCAtOCw2ICs4LDIzIEBACiB7JSBibG9jayBleHRyYWhlYWQgJX0KICAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0ie3sgcGF0aHRvKCdfc3RhdGljL3B5LnBuZycsIDEpIH19IiAvPgogICAgIHslIGlmIG5vdCBlbWJlZGRlZCAlfTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Int7IHBhdGh0bygnX3N0YXRpYy9jb3B5YnV0dG9uLmpzJywgMSkgfX0iPjwvc2NyaXB0PnslIGVuZGlmICV9CisgICAgeyUgaWYgcGFnZW5hbWUgPT0gJ3doYXRzbmV3L25ld3MnICV9CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgZnVuY3Rpb24gZG9maWx0ZXIoKSB7CisgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2hib3gnKTsKKyAgICAgICAgdmFyIHN0cmluZyA9IGVsLnZhbHVlLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIHZhciBsaXRhZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKQorICAgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBsaXRhZ3MubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAgIHZhciBsaSA9IGxpdGFnc1tpZHhdOworICAgICAgICAgIGlmIChsaS5pbm5lckhUTUwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHN0cmluZykgPj0gMCkgeworICAgICAgICAgICAgbGkuc3R5bGUuZGlzcGxheSA9ICcnOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsaS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIHslIGVuZGlmICV9CiB7eyBzdXBlcigpIH19CiB7JSBlbmRibG9jayAlfQogeyUgYmxvY2sgZm9vdGVyICV9CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkKaW5kZXggYjA3MGQ2MC4uYmNhMmViOCAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weQpAQCAtMzQsOCArMzQsNyBAQAogCiAgICAgcmVsZWFzZSA9IHZlcnNpb24gPSAnJXMuJXMnICUgKGRbJ1BZX01BSk9SX1ZFUlNJT04nXSwgZFsnUFlfTUlOT1JfVkVSU0lPTiddKQogICAgIG1pY3JvID0gaW50KGRbJ1BZX01JQ1JPX1ZFUlNJT04nXSkKLSAgICBpZiBtaWNybyAhPSAwOgotICAgICAgICByZWxlYXNlICs9ICcuJyArIHN0cihtaWNybykKKyAgICByZWxlYXNlICs9ICcuJyArIHN0cihtaWNybykKIAogICAgIGxldmVsID0gZFsnUFlfUkVMRUFTRV9MRVZFTCddCiAgICAgc3VmZml4ZXMgPSB7CkBAIC01MSw4ICs1MCw3IEBACiBkZWYgZ2V0X3N5c192ZXJzaW9uX2luZm8oKToKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwogICAgIHJlbGVhc2UgPSB2ZXJzaW9uID0gJyVzLiVzJyAlIChtYWpvciwgbWlub3IpCi0gICAgaWYgbWljcm86Ci0gICAgICAgIHJlbGVhc2UgKz0gJy4lcycgJSBtaWNybworICAgIHJlbGVhc2UgKz0gJy4lcycgJSBtaWNybwogICAgIGlmIGxldmVsICE9ICdmaW5hbCc6CiAgICAgICAgIHJlbGVhc2UgKz0gJyVzJXMnICUgKGxldmVsWzBdLCBzZXJpYWwpCiAgICAgcmV0dXJuIHZlcnNpb24sIHJlbGVhc2UKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQppbmRleCA4OWJiODZmLi45MzA0NDYxIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CkBAIC01LDEyICs1LDEyIEBACiAKICAgICBTcGhpbnggZXh0ZW5zaW9uIHdpdGggUHl0aG9uIGRvYy1zcGVjaWZpYyBtYXJrdXAuCiAKLSAgICA6Y29weXJpZ2h0OiAyMDA4LCAyMDA5LCAyMDEwIGJ5IEdlb3JnIEJyYW5kbC4KKyAgICA6Y29weXJpZ2h0OiAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIGJ5IEdlb3JnIEJyYW5kbC4KICAgICA6bGljZW5zZTogUHl0aG9uIGxpY2Vuc2UuCiAiIiIKIAogSVNTVUVfVVJJID0gJ2h0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUlcycKLVNPVVJDRV9VUkkgPSAnaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMi8lcycKK1NPVVJDRV9VUkkgPSAnaHR0cDovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuMy8lcycKIAogZnJvbSBkb2N1dGlscyBpbXBvcnQgbm9kZXMsIHV0aWxzCiBmcm9tIHNwaGlueC51dGlsLm5vZGVzIGltcG9ydCBzcGxpdF9leHBsaWNpdF90aXRsZQpAQCAtMTQ1LDYgKzE0NSw0NSBAQAogICAgICAgICByZXR1cm4gcmV0CiAKIAorIyBTdXBwb3J0IGZvciBpbmNsdWRpbmcgTWlzYy9ORVdTCisKK2ltcG9ydCByZQoraW1wb3J0IGNvZGVjcworZnJvbSBkb2N1dGlscy5zdGF0ZW1hY2hpbmUgaW1wb3J0IHN0cmluZzJsaW5lcworZnJvbSBzcGhpbngudXRpbC5ub2RlcyBpbXBvcnQgbmVzdGVkX3BhcnNlX3dpdGhfdGl0bGVzCisKK2lzc3VlX3JlID0gcmUuY29tcGlsZSgnSXNzdWUgIyhbMC05XSspJykKKworY2xhc3MgTWlzY05ld3MoRGlyZWN0aXZlKToKKyAgICBoYXNfY29udGVudCA9IEZhbHNlCisgICAgcmVxdWlyZWRfYXJndW1lbnRzID0gMQorICAgIG9wdGlvbmFsX2FyZ3VtZW50cyA9IDAKKyAgICBmaW5hbF9hcmd1bWVudF93aGl0ZXNwYWNlID0gRmFsc2UKKyAgICBvcHRpb25fc3BlYyA9IHt9CisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBmbmFtZSA9IHNlbGYuYXJndW1lbnRzWzBdCisgICAgICAgIHNvdXJjZSA9IHNlbGYuc3RhdGVfbWFjaGluZS5pbnB1dF9saW5lcy5zb3VyY2UoCisgICAgICAgICAgICBzZWxmLmxpbmVubyAtIHNlbGYuc3RhdGVfbWFjaGluZS5pbnB1dF9vZmZzZXQgLSAxKQorICAgICAgICBzb3VyY2VfZGlyID0gcGF0aC5kaXJuYW1lKHBhdGguYWJzcGF0aChzb3VyY2UpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcCA9IGNvZGVjcy5vcGVuKHBhdGguam9pbihzb3VyY2VfZGlyLCBmbmFtZSksIGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29udGVudCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICB0ZXh0ID0gJ1RoZSBORVdTIGZpbGUgaXMgbm90IGF2YWlsYWJsZS4nCisgICAgICAgICAgICBub2RlID0gbm9kZXMuc3Ryb25nKHRleHQsIHRleHQpCisgICAgICAgICAgICByZXR1cm4gW25vZGVdCisgICAgICAgIGNvbnRlbnQgPSBpc3N1ZV9yZS5zdWIocidgSXNzdWUgI1wxIDxodHRwOi8vYnVncy5weXRob24ub3JnL1wxPmBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCkKKyAgICAgICAgIyByZW1vdmUgZmlyc3QgMyBsaW5lcyBhcyB0aGV5IGFyZSB0aGUgbWFpbiBoZWFkaW5nCisgICAgICAgIGxpbmVzID0gY29udGVudC5zcGxpdGxpbmVzKClbMzpdCisgICAgICAgIHNlbGYuc3RhdGVfbWFjaGluZS5pbnNlcnRfaW5wdXQobGluZXMsIGZuYW1lKQorICAgICAgICByZXR1cm4gW10KKworCiAjIFN1cHBvcnQgZm9yIGJ1aWxkaW5nICJ0b3BpYyBoZWxwIiBmb3IgcHlkb2MKIAogcHlkb2NfdG9waWNfbGFiZWxzID0gWwpAQCAtMjAxLDExICsyNDAsMTIgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmFwcGVuZChkb2N0cmVlLmlkc1tsYWJlbGlkXSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gU3RyaW5nT3V0cHV0KGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoZG9jdW1lbnQsIGRlc3RpbmF0aW9uKQotICAgICAgICAgICAgc2VsZi50b3BpY3NbbGFiZWxdID0gc3RyKHdyaXRlci5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLnRvcGljc1tsYWJlbF0gPSB3cml0ZXIub3V0cHV0LmVuY29kZSgndXRmLTgnKQogCiAgICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICAgZiA9IG9wZW4ocGF0aC5qb2luKHNlbGYub3V0ZGlyLCAndG9waWNzLnB5JyksICd3JykKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgZi53cml0ZSgnIyAtKi0gY29kaW5nOiB1dGYtOCAtKi1cbicpCiAgICAgICAgICAgICBmLndyaXRlKCcjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uICVzXG4nICUgYXNjdGltZSgpKQogICAgICAgICAgICAgZi53cml0ZSgndG9waWNzID0gJyArIHBmb3JtYXQoc2VsZi50b3BpY3MpICsgJ1xuJykKICAgICAgICAgZmluYWxseToKQEAgLTI3NSwzICszMTUsNCBAQAogICAgIGFwcC5hZGRfZGVzY3JpcHRpb25fdW5pdCgnMnRvM2ZpeGVyJywgJzJ0bzNmaXhlcicsICclcyAoMnRvMyBmaXhlciknKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnZGVjb3JhdG9yJywgUHlEZWNvcmF0b3JGdW5jdGlvbikKICAgICBhcHAuYWRkX2RpcmVjdGl2ZV90b19kb21haW4oJ3B5JywgJ2RlY29yYXRvcm1ldGhvZCcsIFB5RGVjb3JhdG9yTWV0aG9kKQorICAgIGFwcC5hZGRfZGlyZWN0aXZlKCdtaXNjbmV3cycsIE1pc2NOZXdzKQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IDUwNzZhZWQuLjEzOGUwMDAgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKQEAgLTEsMTYgKzEsMjQgQEAKIGMtYXBpL2FyZywsOnJlZiwiUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk98TzpyZWYiIiwgJm9iamVjdCwgJmNhbGxiYWNrKSIKIGMtYXBpL2xpc3QsLDpoaWdoLGxpc3RbbG93OmhpZ2hdCiBjLWFwaS9saXN0LCw6aGlnaCxsaXN0W2xvdzpoaWdoXSA9IGl0ZW1saXN0CitjLWFwaS9zZXF1ZW5jZSwsOmkyLGRlbCBvW2kxOmkyXQogYy1hcGkvc2VxdWVuY2UsLDppMixvW2kxOmkyXQogYy1hcGkvc2VxdWVuY2UsLDppMixvW2kxOmkyXSA9IHYKLWMtYXBpL3NlcXVlbmNlLCw6aTIsZGVsIG9baTE6aTJdCiBjLWFwaS91bmljb2RlLCw6ZW5kLHN0cltzdGFydDplbmRdCitjLWFwaS91bmljb2RlLCw6c3RhcnQsdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdCitkaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KIGRpc3R1dGlscy9zZXR1cHNjcmlwdCwsOjosCiBleHRlbmRpbmcvZW1iZWRkaW5nLCw6bnVtYXJncywiaWYoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiI6bnVtYXJncyIiKSkiCi1leHRlbmRpbmcvZXh0ZW5kaW5nLCw6c2V0LCJpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86c2V0X2NhbGxiYWNrIiIsICZ0ZW1wKSkgeyIKIGV4dGVuZGluZy9leHRlbmRpbmcsLDpteWZ1bmN0aW9uLCJQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiRDpteWZ1bmN0aW9uIiIsICZjKTsiCitleHRlbmRpbmcvZXh0ZW5kaW5nLCw6c2V0LCJpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86c2V0X2NhbGxiYWNrIiIsICZ0ZW1wKSkgeyIKIGV4dGVuZGluZy9uZXd0eXBlcywsOmNhbGwsImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiInNzczpjYWxsIiIsICZhcmcxLCAmYXJnMiwgJmFyZzMpKSB7IgogZXh0ZW5kaW5nL3dpbmRvd3MsLDppbml0c3BhbSwvZXhwb3J0OmluaXRzcGFtCitmYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCitmYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgorZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJwcmludCgobGFtYmRhIFJ1LFJvLEl1LElvLElNLFN4LFN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHksIgorZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJTeD1TeCxTeT1TeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB4LHhjPVJ1LHljPXljLFJ1PVJ1LFJvPVJvLCIKK2ZhcS93aW5kb3dzLDIyOSw6RU9GLEBzZXRsb2NhbCBlbmFibGVleHRlbnNpb25zICYgcHl0aG9uIC14ICV+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+CityZWZlcmVuY2UvZ3JhbW1hciwsOnRva2VuLCNkaWFncmFtOnRva2VuCiByZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwiLCAgICAgICA6ICAgICAgIC4gICAgICAgYCAgICAgICA9ICAgICAgIDsiCi10dXRvcmlhbC9kYXRhc3RydWN0dXJlcywsOnZhbHVlLGtleTp2YWx1ZSBwYWlycyB3aXRoaW4gdGhlIGJyYWNlcyBhZGRzIGluaXRpYWwga2V5OnZhbHVlIHBhaXJzCityZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwkICAgICAgID8gICAgICAgYAorcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsLDpmaWxlZW5jb2RpbmcsIyB2aW06ZmlsZWVuY29kaW5nPTxlbmNvZGluZy1uYW1lPgogdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMsLDp2YWx1ZSxJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlbGV0ZSBhIGtleTp2YWx1ZQotdHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZXh0cmEgPSBkYXRhW3N0YXJ0OnN0YXJ0K2V4dHJhX3NpemVdCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KK3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLCw6dmFsdWUsa2V5OnZhbHVlIHBhaXJzIHdpdGhpbiB0aGUgYnJhY2VzIGFkZHMgaW5pdGlhbCBrZXk6dmFsdWUgcGFpcnMKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsImxvZ2dpbmcud2FybmluZygnV2FybmluZzpjb25maWcgZmlsZSAlcyBub3QgZm91bmQnLCAnc2VydmVyLmNvbmYnKSIKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsV0FSTklORzpyb290Oldhcm5pbmc6Y29uZmlnIGZpbGUgc2VydmVyLmNvbmYgbm90IGZvdW5kCiB0dXRvcmlhbC9zdGRsaWIyLCw6Q3JpdGljYWwsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCkBAIC0xNDEsMTUgKzMxMSwxNiBAQAogdHV0b3JpYWwvc3RkbGliMiwsOnJvb3QsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxFUlJPUjpyb290OkVycm9yIG9jY3VycmVkCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxleHRyYSA9IGRhdGFbc3RhcnQ6c3RhcnQrZXh0cmFfc2l6ZV0KK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCwiZmllbGRzID0gc3RydWN0LnVucGFjaygnPElJSUhIJywgZGF0YVtzdGFydDpzdGFydCsxNl0pIgordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LGZpbGVuYW1lID0gZGF0YVtzdGFydDpzdGFydCtmaWxlbmFtZXNpemVdCiB0dXRvcmlhbC9zdGRsaWIyLCw6V2FybmluZyxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKLXVzaW5nL2NtZGxpbmUsLDpsaW5lLGZpbGU6bGluZTogY2F0ZWdvcnk6IG1lc3NhZ2UKIHVzaW5nL2NtZGxpbmUsLDpjYXRlZ29yeSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCiB1c2luZy9jbWRsaW5lLCw6bGluZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmxpbmUsZmlsZTpsaW5lOiBjYXRlZ29yeTogbWVzc2FnZQogdXNpbmcvY21kbGluZSwsOm1lc3NhZ2UsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL2NtZGxpbmUsLDptb2R1bGUsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKLXVzaW5nL2NtZGxpbmUsLDplcnJvcmhhbmRsZXIsOmVycm9yaGFuZGxlcgotdXNpbmcvd2luZG93cywxNjIsYCxgYCB0aGlzIGZpeGVzIHN5bnRheCBoaWdobGlnaHRpbmcgZXJyb3JzIGluIHNvbWUgZWRpdG9ycyBkdWUgdG8gdGhlIFxcXFwgaGFja2VyeQotdXNpbmcvd2luZG93cywxNzAsYCxgYAogd2hhdHNuZXcvMi4wLDQxOCw6bGVuLAogd2hhdHNuZXcvMi4zLCw6OiwKIHdoYXRzbmV3LzIuMywsOmNvbmZpZywKQEAgLTE2MywxMTMgKzMzNCwyNiBAQAogd2hhdHNuZXcvMi41LCw6bWVtb3J5LDptZW1vcnk6CiB3aGF0c25ldy8yLjUsLDpzdGVwLFtzdGFydDpzdG9wOnN0ZXBdCiB3aGF0c25ldy8yLjUsLDpzdG9wLFtzdGFydDpzdG9wOnN0ZXBdCi1kaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwicHJpbnQoKGxhbWJkYSBSdSxSbyxJdSxJbyxJTSxTeCxTeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB5LCIKLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwiU3g9U3gsU3k9U3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeCx4Yz1SdSx5Yz15YyxSdT1SdSxSbz1SbywiCi1mYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCi1mYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgotZmFxL3dpbmRvd3MsMjI5LDpFT0YsQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgJiBweXRob24gLXggJX5mMCAlKiAmIGdvdG8gOkVPRgotZmFxL3dpbmRvd3MsMzkzLDpSRUcsLnB5IDpSRUdfU1o6IGM6XDxwYXRoIHRvIHB5dGhvbj5ccHl0aG9uLmV4ZSAtdSAlcyAlcwotbGlicmFyeS9iaXNlY3QsMzIsOmhpLGFsbCh2YWwgPj0geCBmb3IgdmFsIGluIGFbaTpoaV0pCi1saWJyYXJ5L2Jpc2VjdCw0Miw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQotbGlicmFyeS9odHRwLmNsaWVudCw1Miw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLDpieXRlcwotbGlicmFyeS9ubnRwbGliLCw6bGluZXMsOmxpbmVzCi1saWJyYXJ5L25udHBsaWIsLDpsaW5lcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L25udHBsaWIsLDpieXRlcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L3BpY2tsZSwsOm1lbW9yeSwiY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgiIjptZW1vcnk6IiIpIgotbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKLWxpYnJhcnkvc29ja2V0LCw6OiwiKDEwLCAxLCA2LCAnJywgKCcyMDAxOjg4ODoyMDAwOmQ6OmEyJywgODAsIDAsIDApKV0iCi1saWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpjbG9zZSxDb25uZWN0aW9uOmNsb3NlCi1saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgotbGlicmFyeS94bWxycGMuY2xpZW50LDEwMyw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCi1saWJyYXJ5L3htbHJwYy5jbGllbnQsMTAzLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjLmNsaWVudCwxMDMsOnBhc3MsdXNlcjpwYXNzCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLWxpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKLWxpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgotcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsNzA0LGAsJCAgICAgICA/ICAgICAgIGAKLXdoYXRzbmV3LzIuNyw3MzUsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKLXdoYXRzbmV3LzIuNyw4NjIsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNyw4NjIsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDE2MTksOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKIHdoYXRzbmV3LzIuNywxNjE5LDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFNldCB0aGUgb3B0aW9uYWwgYHJhd2AgYXJndW1lbnQgb2YgZ2V0KCkgdG8gVHJ1ZSBpZiB5b3Ugd2lzaCB0byBkaXNhYmxlCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgdmFyc2AgYXJndW1lbnQgaXMgYSBkaWN0IHdpdGggbWVtYmVycyB0aGF0IHdpbGwgdGFrZQotbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYGZhbGxiYWNrYCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGEgZmFsbGJhY2sgdmFsdWUKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6b3B0aW9uLCR7c2VjdGlvbjpvcHRpb259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnN5c3RlbSxwYXRoOiAke0NvbW1vbjpzeXN0ZW1fZGlyfS9MaWJyYXJ5L0ZyYW1ld29ya3MvCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOmhvbWUsbXlfZGlyOiAke0NvbW1vbjpob21lX2Rpcn0vdHdvc2hlZHMKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6cGF0aCxweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOlB5dGhvbixweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L3BkYiwsOmxpbmVubyxbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dCi1saWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KLWxpYnJhcnkvbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKLWxpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWxpYnJhcnkvbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWxpYnJhcnkvbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAotbGlicmFyeS9sb2dnaW5nLCw6TG9vayxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCi1saWJyYXJ5L2xvZ2dpbmcsLDpsb2dnZXIsc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQotbGlicmFyeS9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi13aGF0c25ldy8zLjIsLDpkaXJlY3RvcnksLi4uICAgJHtidWlsZG91dDpkaXJlY3Rvcnl9L2Rvd25sb2Fkcy9kaXN0Ci13aGF0c25ldy8zLjIsLDpsb2NhdGlvbiwuLi4gem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQotd2hhdHNuZXcvMy4yLCw6cHJlZml4LC4uLiB6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1ob3d0by9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKLWhvd3RvL2xvZ2dpbmcsLDpyb290LERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOnJvb3QsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U3RhcnRlZAotaG93dG8vbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWhvd3RvL2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOlRoaXMgbWVzc2FnZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBjb25zb2xlCi1ob3d0by9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1ob3d0by9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAotbGlicmFyeS9pbWFwbGliLDExNiw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCi1saWJyYXJ5L2ltYXBsaWIsMTE2LDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKLXdoYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCi1ob3d0by9weXBvcnRpbmcsNzUsOjosIyBtYWtlIHN1cmUgdG8gdXNlIDo6IFB5dGhvbiAqYW5kKiA6OiBQeXRob24gOjogMyBzbwotaG93dG8vcHlwb3J0aW5nLDc1LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCi1ob3d0by9weXBvcnRpbmcsNzUsOjosJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzJwotd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKLXdoYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKLXdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KLXdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmRlYWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6ZmVlZCw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpiZWVmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi13aGF0c25ldy8zLjIsLDpjYWZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8yLjcsMTYxOSw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQord2hhdHNuZXcvMi43LDczNSw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jword2hhdHNuZXcvMi43LDg2Miw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCit3aGF0c25ldy8yLjcsODYyLDo6LCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCiB3aGF0c25ldy8zLjIsLDphZmZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Y2FmZSwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgord2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCiB3aGF0c25ldy8zLjIsLDpkZWFmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDpkZWFmLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwuLi4gICAke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCiB3aGF0c25ldy8zLjIsLDpmZWVkLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidjbGFzc2lmaWVycyc6IFsnRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInTmF0dXJhbCBMYW5ndWFnZSA6OiBFbmdsaXNoJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidPcGVyYXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQeXRob24gTW9kdWxlcyddLCIKK3doYXRzbmV3LzMuMiwsOmZlZWQsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKK3doYXRzbmV3LzMuMiwsOmxvY2F0aW9uLC4uLiB6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpwcmVmaXgsLi4uIHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgord2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0IGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CmluZGV4IDVjZTM2NjkuLmI0ZjA5YzIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKQEAgLTE4NCw3ICsxODQsNiBAQAogCiAuLiBjb2RlLWJsb2NrOjogbm9uZQogCi0KICAgIEFmdGVyIGxvY2FsIGFzc2lnbm1lbnQ6IHRlc3Qgc3BhbQogICAgQWZ0ZXIgbm9ubG9jYWwgYXNzaWdubWVudDogbm9ubG9jYWwgc3BhbQogICAgQWZ0ZXIgZ2xvYmFsIGFzc2lnbm1lbnQ6IG5vbmxvY2FsIHNwYW0KQEAgLTY5OCw5ICs2OTcsOSBAQAogICAgY2xhc3MgRChDKToKICAgICAgICBwYXNzCiAKLSAgIGZvciBjIGluIFtCLCBDLCBEXToKKyAgIGZvciBjbHMgaW4gW0IsIEMsIERdOgogICAgICAgIHRyeToKLSAgICAgICAgICAgcmFpc2UgYygpCisgICAgICAgICAgIHJhaXNlIGNscygpCiAgICAgICAgZXhjZXB0IEQ6CiAgICAgICAgICAgIHByaW50KCJEIikKICAgICAgICBleGNlcHQgQzoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IDEyYjVjNTcuLmJkNjYxZTIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtMTksMTMgKzE5LDEzIEBACiAuLiBtZXRob2Q6OiBsaXN0LmFwcGVuZCh4KQogICAgOm5vaW5kZXg6CiAKLSAgIEFkZCBhbiBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Q7IGVxdWl2YWxlbnQgdG8gYGBhW2xlbihhKTpdID0gW3hdYGAuCisgICBBZGQgYW4gaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LiAgRXF1aXZhbGVudCB0byBgYGFbbGVuKGEpOl0gPSBbeF1gYC4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LmV4dGVuZChMKQogICAgOm5vaW5kZXg6CiAKLSAgIEV4dGVuZCB0aGUgbGlzdCBieSBhcHBlbmRpbmcgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gbGlzdDsgZXF1aXZhbGVudCB0bworICAgRXh0ZW5kIHRoZSBsaXN0IGJ5IGFwcGVuZGluZyBhbGwgdGhlIGl0ZW1zIGluIHRoZSBnaXZlbiBsaXN0LiAgRXF1aXZhbGVudCB0bwogICAgYGBhW2xlbihhKTpdID0gTGBgLgogCiAKQEAgLTQwLDggKzQwLDggQEAKIC4uIG1ldGhvZDo6IGxpc3QucmVtb3ZlKHgpCiAgICA6bm9pbmRleDoKIAotICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiBJdCBpcyBhbiBlcnJvciBpZiB0aGVyZQotICAgaXMgbm8gc3VjaCBpdGVtLgorICAgUmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gdGhlIGxpc3Qgd2hvc2UgdmFsdWUgaXMgKngqLiAgSXQgaXMgYW4gZXJyb3IgaWYKKyAgIHRoZXJlIGlzIG5vIHN1Y2ggaXRlbS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnBvcChbaV0pCkBAIC03MCwxMyArNzAsMTQgQEAKIC4uIG1ldGhvZDo6IGxpc3Quc29ydCgpCiAgICA6bm9pbmRleDoKIAotICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QsIGluIHBsYWNlLgorICAgU29ydCB0aGUgaXRlbXMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5yZXZlcnNlKCkKICAgIDpub2luZGV4OgogCi0gICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCwgaW4gcGxhY2UuCisgICBSZXZlcnNlIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKwogCiBBbiBleGFtcGxlIHRoYXQgdXNlcyBtb3N0IG9mIHRoZSBsaXN0IG1ldGhvZHM6OgogCkBAIC05OSw2ICsxMDAsMTAgQEAKICAgID4+PiBhCiAgICBbLTEsIDEsIDY2LjI1LCAzMzMsIDMzMywgMTIzNC41XQogCitZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgbWV0aG9kcyBsaWtlIGBgaW5zZXJ0YGAsIGBgcmVtb3ZlYGAgb3IgYGBzb3J0YGAgdGhhdAorbW9kaWZ5IHRoZSBsaXN0IGhhdmUgbm8gcmV0dXJuIHZhbHVlIHByaW50ZWQgLS0gdGhleSByZXR1cm4gYGBOb25lYGAuIFsxXV8gIFRoaXMKK2lzIGEgZGVzaWduIHByaW5jaXBsZSBmb3IgYWxsIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmVzIGluIFB5dGhvbi4KKwogCiAuLiBfdHV0LWxpc3RzLWFzLXN0YWNrczoKIApAQCAtNDgwLDcgKzQ4NSw3IEBACiAKIFBlcmZvcm1pbmcgYGBsaXN0KGQua2V5cygpKWBgIG9uIGEgZGljdGlvbmFyeSByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGtleXMKIHVzZWQgaW4gdGhlIGRpY3Rpb25hcnksIGluIGFyYml0cmFyeSBvcmRlciAoaWYgeW91IHdhbnQgaXQgc29ydGVkLCBqdXN0IHVzZQotYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsxXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQorYGBzb3J0ZWQoZC5rZXlzKCkpYGAgaW5zdGVhZCkuIFsyXV8gIFRvIGNoZWNrIHdoZXRoZXIgYSBzaW5nbGUga2V5IGlzIGluIHRoZQogZGljdGlvbmFyeSwgdXNlIHRoZSA6a2V5d29yZDpgaW5gIGtleXdvcmQuCiAKIEhlcmUgaXMgYSBzbWFsbCBleGFtcGxlIHVzaW5nIGEgZGljdGlvbmFyeTo6CkBAIC02NjQsNiArNjY5LDkgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsxXSBDYWxsaW5nIGBgZC5rZXlzKClgYCB3aWxsIHJldHVybiBhIDpkZm46YGRpY3Rpb25hcnkgdmlld2Agb2JqZWN0LiAgSXQKKy4uIFsxXSBPdGhlciBsYW5ndWFnZXMgbWF5IHJldHVybiB0aGUgbXV0YXRlZCBvYmplY3QsIHdoaWNoIGFsbG93cyBtZXRob2QKKyAgICAgICBjaGFpbmluZywgc3VjaCBhcyBgYGQtPmluc2VydCgiYSIpLT5yZW1vdmUoImIiKS0+c29ydCgpO2BgLgorCisuLiBbMl0gQ2FsbGluZyBgYGQua2V5cygpYGAgd2lsbCByZXR1cm4gYSA6ZGZuOmBkaWN0aW9uYXJ5IHZpZXdgIG9iamVjdC4gIEl0CiAgICAgICAgc3VwcG9ydHMgb3BlcmF0aW9ucyBsaWtlIG1lbWJlcnNoaXAgdGVzdCBhbmQgaXRlcmF0aW9uLCBidXQgaXRzIGNvbnRlbnRzCiAgICAgICAgYXJlIG5vdCBpbmRlcGVuZGVudCBvZiB0aGUgb3JpZ2luYWwgZGljdGlvbmFyeSAtLSBpdCBpcyBvbmx5IGEgKnZpZXcqLgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggZDYxZGFmYy4uY2RjMmJmMiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMCwxMyArMTAsMTMgQEAKIEludm9raW5nIHRoZSBJbnRlcnByZXRlcgogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuMmAKK1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgdXN1YWxseSBpbnN0YWxsZWQgYXMgOmZpbGU6YC91c3IvbG9jYWwvYmluL3B5dGhvbjMuM2AKIG9uIHRob3NlIG1hY2hpbmVzIHdoZXJlIGl0IGlzIGF2YWlsYWJsZTsgcHV0dGluZyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW5gIGluIHlvdXIKIFVuaXggc2hlbGwncyBzZWFyY2ggcGF0aCBtYWtlcyBpdCBwb3NzaWJsZSB0byBzdGFydCBpdCBieSB0eXBpbmcgdGhlIGNvbW1hbmQ6CiAKIC4uIGNvZGUtYmxvY2s6OiB0ZXh0CiAKLSAgIHB5dGhvbjMuMgorICAgcHl0aG9uMy4zCiAKIHRvIHRoZSBzaGVsbC4gWyNdXyBTaW5jZSB0aGUgY2hvaWNlIG9mIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGludGVycHJldGVyIGxpdmVzCiBpcyBhbiBpbnN0YWxsYXRpb24gb3B0aW9uLCBvdGhlciBwbGFjZXMgYXJlIHBvc3NpYmxlOyBjaGVjayB3aXRoIHlvdXIgbG9jYWwKQEAgLTI0LDExICsyNCwxMSBAQAogcG9wdWxhciBhbHRlcm5hdGl2ZSBsb2NhdGlvbi4pCiAKIE9uIFdpbmRvd3MgbWFjaGluZXMsIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGlzIHVzdWFsbHkgcGxhY2VkIGluCi06ZmlsZTpgQzpcXFB5dGhvbjMyYCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKKzpmaWxlOmBDOlxcUHl0aG9uMzNgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQogaW5zdGFsbGVyLiAgVG8gYWRkIHRoaXMgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgIHlvdSBjYW4gdHlwZSB0aGUgZm9sbG93aW5nCiBjb21tYW5kIGludG8gdGhlIGNvbW1hbmQgcHJvbXB0IGluIGEgRE9TIGJveDo6CiAKLSAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zMgorICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjMzCiAKIFR5cGluZyBhbiBlbmQtb2YtZmlsZSBjaGFyYWN0ZXIgKDprYmQ6YENvbnRyb2wtRGAgb24gVW5peCwgOmtiZDpgQ29udHJvbC1aYCBvbgogV2luZG93cykgYXQgdGhlIHByaW1hcnkgcHJvbXB0IGNhdXNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gZXhpdCB3aXRoIGEgemVybyBleGl0CkBAIC05NSw4ICs5NSw4IEBACiBwcmludHMgYSB3ZWxjb21lIG1lc3NhZ2Ugc3RhdGluZyBpdHMgdmVyc2lvbiBudW1iZXIgYW5kIGEgY29weXJpZ2h0IG5vdGljZQogYmVmb3JlIHByaW50aW5nIHRoZSBmaXJzdCBwcm9tcHQ6OgogCi0gICAkIHB5dGhvbjMuMgotICAgUHl0aG9uIDMuMi4zIChkZWZhdWx0LCBNYXkgIDMgMjAxMiwgMTU6NTQ6NDIpCisgICAkIHB5dGhvbjMuMworICAgUHl0aG9uIDMuMyAoZGVmYXVsdCwgU2VwIDI0IDIwMTIsIDA5OjI1OjA0KQogICAgW0dDQyA0LjYuM10gb24gbGludXgyCiAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICA+Pj4KQEAgLTE0OSw3ICsxNDksNyBAQAogT24gQlNEJ2lzaCBVbml4IHN5c3RlbXMsIFB5dGhvbiBzY3JpcHRzIGNhbiBiZSBtYWRlIGRpcmVjdGx5IGV4ZWN1dGFibGUsIGxpa2UKIHNoZWxsIHNjcmlwdHMsIGJ5IHB1dHRpbmcgdGhlIGxpbmUgOjoKIAotICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMgorICAgIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMuMwogCiAoYXNzdW1pbmcgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaXMgb24gdGhlIHVzZXIncyA6ZW52dmFyOmBQQVRIYCkgYXQgdGhlIGJlZ2lubmluZwogb2YgdGhlIHNjcmlwdCBhbmQgZ2l2aW5nIHRoZSBmaWxlIGFuIGV4ZWN1dGFibGUgbW9kZS4gIFRoZSBgYCMhYGAgbXVzdCBiZSB0aGUKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggMTI4ZTZhNi4uYjU3NzFmNiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzEnCisgICAnQzpcXFB5dGhvbjMzJwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggYTlhZTg3MS4uNmE0ODk4NCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMTQxLDcgKzE0MSw5IEBACiAKICAgIGltcG9ydCBzdHJ1Y3QKIAotICAgZGF0YSA9IG9wZW4oJ215ZmlsZS56aXAnLCAncmInKS5yZWFkKCkKKyAgIHdpdGggb3BlbignbXlmaWxlLnppcCcsICdyYicpIGFzIGY6CisgICAgICAgZGF0YSA9IGYucmVhZCgpCisKICAgIHN0YXJ0ID0gMAogICAgZm9yIGkgaW4gcmFuZ2UoMyk6ICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgZmlyc3QgMyBmaWxlIGhlYWRlcnMKICAgICAgICBzdGFydCArPSAxNApAQCAtMjczLDcgKzI3NSw3IEBACiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICAgZFsncHJpbWFyeSddICAgICAgICAgICAgICAgICMgZW50cnkgd2FzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZAotICAgICBGaWxlICJDOi9weXRob24zMS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCisgICAgIEZpbGUgIkM6L3B5dGhvbjMzL2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgS2V5RXJyb3I6ICdwcmltYXJ5JwogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKaW5kZXggMGQxMjEyNi4uODg2NGI3OSAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0CisrKyBiL0RvYy91c2luZy9jbWRsaW5lLnJzdApAQCAtMjQsNyArMjQsNyBAQAogCiBXaGVuIGludm9raW5nIFB5dGhvbiwgeW91IG1heSBzcGVjaWZ5IGFueSBvZiB0aGVzZSBvcHRpb25zOjoKIAotICAgIHB5dGhvbiBbLWJCZEVoaU9ScXNTdXZWV3g/XSBbLWMgY29tbWFuZCB8IC1tIG1vZHVsZS1uYW1lIHwgc2NyaXB0IHwgLSBdIFthcmdzXQorICAgIHB5dGhvbiBbLWJCZEVoaU9xc1N1dlZXeD9dIFstYyBjb21tYW5kIHwgLW0gbW9kdWxlLW5hbWUgfCBzY3JpcHQgfCAtIF0gW2FyZ3NdCiAKIFRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBpcywgb2YgY291cnNlLCBhIHNpbXBsZSBpbnZvY2F0aW9uIG9mIGEgc2NyaXB0OjoKIApAQCAtMjI5LDIzICsyMjksMjIgQEAKIAogLi4gY21kb3B0aW9uOjogLVIKIAotICAgVHVybiBvbiBoYXNoIHJhbmRvbWl6YXRpb24sIHNvIHRoYXQgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMKLSAgIGFuZCBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLgotICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlCi0gICBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisgICBLZXB0IGZvciBjb21wYXRpYmlsaXR5LiAgT24gUHl0aG9uIDMuMyBhbmQgZ3JlYXRlciwgaGFzaCByYW5kb21pemF0aW9uIGlzCisgICB0dXJuZWQgb24gYnkgZGVmYXVsdC4KIAotICAgVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1vZi1zZXJ2aWNlIGNhdXNlZCBieQotICAgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdAotICAgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQorICAgT24gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uLCB0aGlzIG9wdGlvbiB0dXJucyBvbiBoYXNoIHJhbmRvbWl6YXRpb24sCisgICBzbyB0aGF0IHRoZSA6bWV0aDpgX19oYXNoX19gIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZQorICAgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuICBBbHRob3VnaCB0aGV5IHJlbWFpbgorICAgY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZQorICAgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisKKyAgIEhhc2ggcmFuZG9taXphdGlvbiBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhCisgICBkZW5pYWwtb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZSB3b3JzdAorICAgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgY29uc3RydWN0aW9uLCBPKG5eMikgY29tcGxleGl0eS4gIFNlZQogICAgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvciBkZXRhaWxzLgogCi0gICBDaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBvcmRlciBpbiB3aGljaCBrZXlzIGFyZSByZXRyaWV2ZWQgZnJvbSBhCi0gICBkaWN0LiAgQWx0aG91Z2ggUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXMgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0Ci0gICB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZCA2NC1iaXQgYnVpbGRzKSwgZW5vdWdoIHJlYWwtd29ybGQgY29kZQotICAgaW1wbGljaXRseSByZWxpZXMgb24gdGhpcyBub24tZ3VhcmFudGVlZCBiZWhhdmlvciB0aGF0IHRoZSByYW5kb21pemF0aW9uIGlzCi0gICBkaXNhYmxlZCBieSBkZWZhdWx0LgotCi0gICBTZWUgYWxzbyA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAuCisgICA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAgYWxsb3dzIHlvdSB0byBzZXQgYSBmaXhlZCB2YWx1ZSBmb3IgdGhlIGhhc2gKKyAgIHNlZWQgc2VjcmV0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIuMwogCkBAIC0yNjMsNyArMjYyLDkgQEAKIC4uIGNtZG9wdGlvbjo6IC1TCiAKICAgIERpc2FibGUgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIDptb2Q6YHNpdGVgIGFuZCB0aGUgc2l0ZS1kZXBlbmRlbnQKLSAgIG1hbmlwdWxhdGlvbnMgb2YgOmRhdGE6YHN5cy5wYXRoYCB0aGF0IGl0IGVudGFpbHMuCisgICBtYW5pcHVsYXRpb25zIG9mIDpkYXRhOmBzeXMucGF0aGAgdGhhdCBpdCBlbnRhaWxzLiAgQWxzbyBkaXNhYmxlIHRoZXNlCisgICBtYW5pcHVsYXRpb25zIGlmIDptb2Q6YHNpdGVgIGlzIGV4cGxpY2l0bHkgaW1wb3J0ZWQgbGF0ZXIgKGNhbGwKKyAgIDpmdW5jOmBzaXRlLm1haW5gIGlmIHlvdSB3YW50IHRoZW0gdG8gYmUgdHJpZ2dlcmVkKS4KIAogCiAuLiBjbWRvcHRpb246OiAtdQpAQCAtNDcyLDcgKzQ3Myw3IEBACiAuLiBlbnZ2YXI6OiBQWVRIT05DQVNFT0sKIAogICAgSWYgdGhpcyBpcyBzZXQsIFB5dGhvbiBpZ25vcmVzIGNhc2UgaW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50cy4gIFRoaXMKLSAgIG9ubHkgd29ya3Mgb24gV2luZG93cywgT1MgWCwgYW5kIE9TLzIuCisgICBvbmx5IHdvcmtzIG9uIFdpbmRvd3MgYW5kIE9TIFguCiAKIAogLi4gZW52dmFyOjogUFlUSE9ORE9OVFdSSVRFQllURUNPREUKQEAgLTQ4NCw5ICs0ODUsOCBAQAogCiAuLiBlbnZ2YXI6OiBQWVRIT05IQVNIU0VFRAogCi0gICBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byBgYHJhbmRvbWBgLCB0aGUgZWZmZWN0IGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcKLSAgIHRoZSA6b3B0aW9uOmAtUmAgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsCi0gICBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KKyAgIElmIHRoaXMgdmFyaWFibGUgaXMgbm90IHNldCBvciBzZXQgdG8gYGByYW5kb21gYCwgYSByYW5kb20gdmFsdWUgaXMgdXNlZAorICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCiAKICAgIElmIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYCBpcyBzZXQgdG8gYW4gaW50ZWdlciB2YWx1ZSwgaXQgaXMgdXNlZCBhcyBhIGZpeGVkCiAgICBzZWVkIGZvciBnZW5lcmF0aW5nIHRoZSBoYXNoKCkgb2YgdGhlIHR5cGVzIGNvdmVyZWQgYnkgdGhlIGhhc2gKQEAgLTQ5Nyw4ICs0OTcsNyBAQAogICAgdmFsdWVzLgogCiAgICBUaGUgaW50ZWdlciBtdXN0IGJlIGEgZGVjaW1hbCBudW1iZXIgaW4gdGhlIHJhbmdlIFswLDQyOTQ5NjcyOTVdLiAgU3BlY2lmeWluZwotICAgdGhlIHZhbHVlIDAgd2lsbCBsZWFkIHRvIHRoZSBzYW1lIGhhc2ggdmFsdWVzIGFzIHdoZW4gaGFzaCByYW5kb21pemF0aW9uIGlzCi0gICBkaXNhYmxlZC4KKyAgIHRoZSB2YWx1ZSAwIHdpbGwgZGlzYWJsZSBoYXNoIHJhbmRvbWl6YXRpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAKQEAgLTUyOCw4ICs1MjcsOCBAQAogCiAgICBEZWZpbmVzIHRoZSA6ZGF0YTpgdXNlciBiYXNlIGRpcmVjdG9yeSA8c2l0ZS5VU0VSX0JBU0U+YCwgd2hpY2ggaXMgdXNlZCB0bwogICAgY29tcHV0ZSB0aGUgcGF0aCBvZiB0aGUgOmRhdGE6YHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkgPHNpdGUuVVNFUl9TSVRFPmAKLSAgIGFuZCA6cmVmOmBEaXN0dXRpbHMgaW5zdGFsbGF0aW9uIHBhdGhzIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YCBmb3IgYGBweXRob24KLSAgIHNldHVwLnB5IGluc3RhbGwgLS11c2VyYGAuCisgICBhbmQgOnJlZjpgRGlzdHV0aWxzIGluc3RhbGxhdGlvbiBwYXRocyA8aW5zdC1hbHQtaW5zdGFsbC11c2VyPmAgZm9yCisgICBgYHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlcmBgLgogCiAgICAuLiBzZWVhbHNvOjoKIApAQCAtNTQ4LDYgKzU0NywxNCBAQAogICAgc2VwYXJhdGVkIHN0cmluZywgaXQgaXMgZXF1aXZhbGVudCB0byBzcGVjaWZ5aW5nIDpvcHRpb246YC1XYCBtdWx0aXBsZQogICAgdGltZXMuCiAKKy4uIGVudnZhcjo6IFBZVEhPTkZBVUxUSEFORExFUgorCisgICBJZiB0aGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIGlzIGNhbGxlZAorICAgYXQgc3RhcnR1cDogaW5zdGFsbCBhIGhhbmRsZXIgZm9yIDpjb25zdDpgU0lHU0VHVmAsIDpjb25zdDpgU0lHRlBFYCwKKyAgIDpjb25zdDpgU0lHQUJSVGAsIDpjb25zdDpgU0lHQlVTYCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMgdG8gZHVtcCB0aGUKKyAgIFB5dGhvbiB0cmFjZWJhY2suICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gOm9wdGlvbjpgLVhgIGBgZmF1bHRoYW5kbGVyYGAKKyAgIG9wdGlvbi4KKwogCiBEZWJ1Zy1tb2RlIHZhcmlhYmxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9pbmRleC5yc3QgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CmluZGV4IDEyMDExNTMuLjUwMmFmYTkgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9pbmRleC5yc3QKKysrIGIvRG9jL3VzaW5nL2luZGV4LnJzdApAQCAtMTcsNCArMTcsNCBAQAogICAgdW5peC5yc3QKICAgIHdpbmRvd3MucnN0CiAgICBtYWMucnN0Ci0KKyAgIHNjcmlwdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM4NzQxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy9zY3JpcHRzLnJzdApAQCAtMCwwICsxLDEyIEBACisuLiBfdG9vbHMtYW5kLXNjcmlwdHM6CisKK0FkZGl0aW9uYWwgVG9vbHMgYW5kIFNjcmlwdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gX3NjcmlwdHMtcHl2ZW52OgorCitweXZlbnYgLSBDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5jbHVkZTo6IHZlbnYtY3JlYXRlLmluYworCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmRiYzliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpAQCAtMCwwICsxLDg1IEBACitDcmVhdGlvbiBvZiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8dmVudi1kZWY+YCBpcyBkb25lIGJ5IGV4ZWN1dGluZyB0aGUKK2BgcHl2ZW52YGAgc2NyaXB0OjoKKworICAgIHB5dmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAorCitSdW5uaW5nIHRoaXMgY29tbWFuZCBjcmVhdGVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IChjcmVhdGluZyBhbnkgcGFyZW50CitkaXJlY3RvcmllcyB0aGF0IGRvbid0IGV4aXN0IGFscmVhZHkpIGFuZCBwbGFjZXMgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGluIGl0Cit3aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBjb21tYW5kIHdhcyBydW4KK2Zyb20uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKK2NvbnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBgYHB5dGhvbmBgIGJpbmFyeSAob3IgYmluYXJpZXMsIGluIHRoZSBjYXNlIG9mCitXaW5kb3dzKS4gIEl0IGFsc28gY3JlYXRlcyBhbiAoaW5pdGlhbGx5IGVtcHR5KSBgYGxpYi9weXRob25YLlkvc2l0ZS1wYWNrYWdlc2BgCitzdWJkaXJlY3RvcnkgKG9uIFdpbmRvd3MsIHRoaXMgaXMgYGBMaWJcc2l0ZS1wYWNrYWdlc2BgKS4KKworLi4gaGlnaGxpZ2h0Ojogbm9uZQorCitPbiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgdG8gaW52b2tlIHRoZSBgYHB5dmVudmBgIHNjcmlwdCBhcyBmb2xsb3dzLCBpZiB5b3UKK2Rvbid0IGhhdmUgdGhlIHJlbGV2YW50IFBBVEggYW5kIFBBVEhFWFQgc2V0dGluZ3M6OgorCisgICAgYzpcVGVtcD5jOlxQeXRob24zM1xweXRob24gYzpcUHl0aG9uMzNcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKKworb3IgZXF1aXZhbGVudGx5OjoKKworICAgIGM6XFRlbXA+YzpcUHl0aG9uMzNccHl0aG9uIC1tIHZlbnYgbXllbnYKKworVGhlIGNvbW1hbmQsIGlmIHJ1biB3aXRoIGBgLWhgYCwgd2lsbCBzaG93IHRoZSBhdmFpbGFibGUgb3B0aW9uczo6CisKKyAgICB1c2FnZTogcHl2ZW52IFstaF0gWy0tc3lzdGVtLXNpdGUtcGFja2FnZXNdIFstLXN5bWxpbmtzXSBbLS1jbGVhcl0KKyAgICAgICAgICAgICAgICAgIFstLXVwZ3JhZGVdIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQorCisgICAgQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgorCisgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6CisgICAgICBFTlZfRElSICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisKKyAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMgR2l2ZSBhY2Nlc3MgdG8gdGhlIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jbGVhciAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm90IHNwZWNpZmllZCBhbmQgdGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisKK0lmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLCB1bmxlc3MKK3RoZSBgYC0tY2xlYXJgYCBvciBgYC0tdXBncmFkZWBgIG9wdGlvbiB3YXMgcHJvdmlkZWQuCisKK1RoZSBjcmVhdGVkIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxzbyBpbmNsdWRlcyB0aGUKK2BgaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc2BgIGtleSwgc2V0IHRvIGBgdHJ1ZWBgIGlmIGBgdmVudmBgIGlzCitydW4gd2l0aCB0aGUgYGAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzYGAgb3B0aW9uLCBgYGZhbHNlYGAgb3RoZXJ3aXNlLgorCitNdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGBweXZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwKK3ZpcnR1YWxlbnYgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2gKK3Byb3ZpZGVkIHBhdGguCisKK09uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKK3ZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOiBvbgorYSBQb3NpeCBwbGF0Zm9ybSwgeW91IHdvdWxkIHR5cGljYWxseSBkbzo6CisKKyAgICAkIHNvdXJjZSA8dmVudj4vYmluL2FjdGl2YXRlCisKK3doZXJlYXMgb24gV2luZG93cywgeW91IG1pZ2h0IGRvOjoKKworICAgIEM6XD4gPHZlbnY+L1NjcmlwdHMvYWN0aXZhdGUKKworaWYgeW91IGFyZSB1c2luZyB0aGUgYGBjbWQuZXhlYGAgc2hlbGwsIG9yIHBlcmhhcHM6OgorCisgICAgUFMgQzpcPiA8dmVudj4vU2NyaXB0cy9BY3RpdmF0ZS5wczEKKworaWYgeW91IHVzZSBQb3dlclNoZWxsLgorCitZb3UgZG9uJ3Qgc3BlY2lmaWNhbGx5ICpuZWVkKiB0byBhY3RpdmF0ZSBhbiBlbnZpcm9ubWVudDsgYWN0aXZhdGlvbiBqdXN0CitwcmVwZW5kcyB0aGUgdmVudidzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0ICJweXRob24iIGludm9rZXMgdGhlCit2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1biBpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0bwordXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMgaW5zdGFsbGVkIGluIGEgdmVudiBzaG91bGQgYmUKK3J1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwgYW5kIHJ1biB3aXRoIHRoZSB2ZW52J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCisKK1lvdSBjYW4gZGVhY3RpdmF0ZSBhIHZlbnYgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLiBUaGUgZXhhY3QKK21lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24gc2NyaXB0IGRlZmluZXMKK2EgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlIHNjcmlwdHMgY2FsbGVkCitgYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkIHdoZW4gdGhlIHZlbnYgaXMKK2NyZWF0ZWQuCisKZGlmZiAtLWdpdCBhL0RvYy91c2luZy93aW5kb3dzLnJzdCBiL0RvYy91c2luZy93aW5kb3dzLnJzdAppbmRleCA3NDJhMjkwLi41ZjAxYjc3IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QKKysrIGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CkBAIC04Miw2ICs4Miw4IEBACiBzZXR0aW5ncyBpbiBXaW5kb3dzLgogCiAKKy4uIF9zZXR0aW5nLWVudnZhcnM6CisKIEV4Y3Vyc3VzOiBTZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTEzMCwyMSArMTMyLDMzIEBACiAgICAgICBTZXR0aW5nIEVudmlyb25tZW50IHZhcmlhYmxlcywgTG91aXMgSi4gRmFycnVnaWEKIAogCisuLiBfd2luZG93cy1wYXRoLW1vZDoKKwogRmluZGluZyB0aGUgUHl0aG9uIGV4ZWN1dGFibGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisKIEJlc2lkZXMgdXNpbmcgdGhlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBzdGFydCBtZW51IGVudHJ5IGZvciB0aGUgUHl0aG9uCi1pbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBET1MgcHJvbXB0LiAgVG8gbWFrZSB0aGlzCi13b3JrLCB5b3UgbmVlZCB0byBzZXQgeW91ciA6ZW52dmFyOmAlUEFUSCVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlCi1kaXJlY3Rvcnkgb2YgeW91ciBQeXRob24gZGlzdHJpYnV0aW9uLCBkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24gZnJvbSBvdGhlcgotZW50cmllcy4gIEFuIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vayBsaWtlIHRoaXMgKGFzc3VtaW5nIHRoZSBmaXJzdCB0d28KLWVudHJpZXMgYXJlIFdpbmRvd3MnIGRlZmF1bHQpOjoKK2ludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBBcyBvZgorUHl0aG9uIDMuMywgdGhlIGluc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCiAKLSAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHl0aG9uMjUKK0F0IHRoZSAiQ3VzdG9taXplIFB5dGhvbiAzLjMiIHNjcmVlbiwgYW4gb3B0aW9uIGNhbGxlZAorIkFkZCBweXRob24uZXhlIHRvIHNlYXJjaCBwYXRoIiBjYW4gYmUgZW5hYmxlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgcGxhY2UKK3lvdXIgaW5zdGFsbGF0aW9uIGludG8gdGhlIDplbnZ2YXI6YCVQQVRIJWAuIFRoaXMgYWxsb3dzIHlvdSB0byB0eXBlCis6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLiBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyCitzY3JpcHRzIHdpdGggY29tbWFuZCBsaW5lIG9wdGlvbnMsIHNlZSA6cmVmOmB1c2luZy1vbi1jbWRsaW5lYCBkb2N1bWVudGF0aW9uLgogCi1UeXBpbmcgOmNvbW1hbmQ6YHB5dGhvbmAgb24geW91ciBjb21tYW5kIHByb21wdCB3aWxsIG5vdyBmaXJlIHVwIHRoZSBQeXRob24KLWludGVycHJldGVyLiAgVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91ciBzY3JpcHRzIHdpdGggY29tbWFuZCBsaW5lIG9wdGlvbnMsCi1zZWUgOnJlZjpgdXNpbmctb24tY21kbGluZWAgZG9jdW1lbnRhdGlvbi4KK0lmIHlvdSBkb24ndCBlbmFibGUgdGhpcyBvcHRpb24gYXQgaW5zdGFsbCB0aW1lLCB5b3UgY2FuIGFsd2F5cyByZS1ydW4gdGhlCitpbnN0YWxsZXIgdG8gY2hvb3NlIGl0LgorCitUaGUgYWx0ZXJuYXRpdmUgaXMgbWFudWFsbHkgbW9kaWZ5aW5nIHRoZSA6ZW52dmFyOmAlUEFUSCVgIHVzaW5nIHRoZQorZGlyZWN0aW9ucyBpbiA6cmVmOmBzZXR0aW5nLWVudnZhcnNgLiBZb3UgbmVlZCB0byBzZXQgeW91ciA6ZW52dmFyOmAlUEFUSCVgCitlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBkaXJlY3Rvcnkgb2YgeW91ciBQeXRob24gZGlzdHJpYnV0aW9uLAorZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uIGZyb20gb3RoZXIgZW50cmllcy4gQW4gZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rCitsaWtlIHRoaXMgKGFzc3VtaW5nIHRoZSBmaXJzdCB0d28gZW50cmllcyBhcmUgV2luZG93cycgZGVmYXVsdCk6OgorCisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFB5dGhvbjMzCiAKIAogRmluZGluZyBtb2R1bGVzCkBAIC0yMDMsMTMgKzIxNywxOSBAQAogRXhlY3V0aW5nIHNjcmlwdHMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLVB5dGhvbiBzY3JpcHRzIChmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24gYGAucHlgYCkgd2lsbCBiZSBleGVjdXRlZCBieQotOnByb2dyYW06YHB5dGhvbi5leGVgIGJ5IGRlZmF1bHQuICBUaGlzIGV4ZWN1dGFibGUgb3BlbnMgYSB0ZXJtaW5hbCwgd2hpY2ggc3RheXMKLW9wZW4gZXZlbiBpZiB0aGUgcHJvZ3JhbSB1c2VzIGEgR1VJLiAgSWYgeW91IGRvIG5vdCB3YW50IHRoaXMgdG8gaGFwcGVuLCB1c2UgdGhlCi1leHRlbnNpb24gYGAucHl3YGAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2NyaXB0IHRvIGJlIGV4ZWN1dGVkIGJ5Ci06cHJvZ3JhbTpgcHl0aG9udy5leGVgIGJ5IGRlZmF1bHQgKGJvdGggZXhlY3V0YWJsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIHRvcC1sZXZlbAotb2YgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSkuICBUaGlzIHN1cHByZXNzZXMgdGhlIHRlcm1pbmFsIHdpbmRvdyBvbgotc3RhcnR1cC4KK0FzIG9mIFB5dGhvbiAzLjMsIFB5dGhvbiBpbmNsdWRlcyBhIGxhdW5jaGVyIHdoaWNoIGZhY2lsaXRhdGVzIHJ1bm5pbmcgUHl0aG9uCitzY3JpcHRzLiBTZWUgOnJlZjpgbGF1bmNoZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitFeGVjdXRpbmcgc2NyaXB0cyB3aXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIgaW5zdGFsbGVkLCBQeXRob24gc2NyaXB0cyAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uCitgYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5IDpwcm9ncmFtOmBweXRob24uZXhlYCBieSBkZWZhdWx0LiAgVGhpcyBleGVjdXRhYmxlCitvcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cyBvcGVuIGV2ZW4gaWYgdGhlIHByb2dyYW0gdXNlcyBhIEdVSS4gIElmIHlvdSBkbworbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUgZXh0ZW5zaW9uIGBgLnB5d2BgIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNjcmlwdAordG8gYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbncuZXhlYCBieSBkZWZhdWx0IChib3RoIGV4ZWN1dGFibGVzIGFyZQorbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsIG9mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkpLiAgVGhpcworc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uIHN0YXJ0dXAuCiAKIFlvdSBjYW4gYWxzbyBtYWtlIGFsbCBgYC5weWBgIHNjcmlwdHMgZXhlY3V0ZSB3aXRoIDpwcm9ncmFtOmBweXRob253LmV4ZWAsCiBzZXR0aW5nIHRoaXMgdGhyb3VnaCB0aGUgdXN1YWwgZmFjaWxpdGllcywgZm9yIGV4YW1wbGUgKG1pZ2h0IHJlcXVpcmUKQEAgLTIyNSw2ICsyNDUsMjUwIEBACiAgICAgICBmdHlwZSBQeXRob24uRmlsZT1DOlxQYXRoXHRvXHB5dGhvbncuZXhlICIlMSIgJSoKIAogCisuLiBfbGF1bmNoZXI6CisKK1B5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzIGlzIGEgdXRpbGl0eSB3aGljaCBhaWRzIGluIHRoZSBsb2NhdGlvbiBhbmQKK2V4ZWN1dGlvbiBvZiBkaWZmZXJlbnQgUHl0aG9uIHZlcnNpb25zLiAgSXQgYWxsb3dzIHNjcmlwdHMgKG9yIHRoZQorY29tbWFuZC1saW5lKSB0byBpbmRpY2F0ZSBhIHByZWZlcmVuY2UgZm9yIGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24sIGFuZAord2lsbCBsb2NhdGUgYW5kIGV4ZWN1dGUgdGhhdCB2ZXJzaW9uLgorCitHZXR0aW5nIHN0YXJ0ZWQKKy0tLS0tLS0tLS0tLS0tLQorCitGcm9tIHRoZSBjb21tYW5kLWxpbmUKK15eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitZb3Ugc2hvdWxkIGVuc3VyZSB0aGUgbGF1bmNoZXIgaXMgb24geW91ciBQQVRIIC0gZGVwZW5kaW5nIG9uIGhvdyBpdCB3YXMKK2luc3RhbGxlZCBpdCBtYXkgYWxyZWFkeSBiZSB0aGVyZSwgYnV0IGNoZWNrIGp1c3QgaW4gY2FzZSBpdCBpcyBub3QuCisKK0Zyb20gYSBjb21tYW5kLXByb21wdCwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkKKworWW91IHNob3VsZCBmaW5kIHRoYXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggeW91IGhhdmUgaW5zdGFsbGVkIGlzCitzdGFydGVkIC0gaXQgY2FuIGJlIGV4aXRlZCBhcyBub3JtYWwsIGFuZCBhbnkgYWRkaXRpb25hbCBjb21tYW5kLWxpbmUKK2FyZ3VtZW50cyBzcGVjaWZpZWQgd2lsbCBiZSBzZW50IGRpcmVjdGx5IHRvIFB5dGhvbi4KKworSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIDIueCBpbnN0YWxsZWQgKGUuZy4sIDIuNiBhbmQgMi43KSB5b3UKK3dpbGwgaGF2ZSBub3RpY2VkIHRoYXQgUHl0aG9uIDIuNyB3YXMgc3RhcnRlZCAtIHRvIGxhdW5jaCBQeXRob24gMi42LCB0cnkgdGhlCitjb21tYW5kOgorCis6OgorCisgIHB5IC0yLjYKKworSWYgeW91IGhhdmUgYSBQeXRob24gMy54IGluc3RhbGxlZCwgdHJ5IHRoZSBjb21tYW5kOgorCis6OgorCisgIHB5IC0zCisKK1lvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDMueCBzdGFydHMuCisKK0Zyb20gYSBzY3JpcHQKK15eXl5eXl5eXl5eXl4KKworTGV0J3MgY3JlYXRlIGEgdGVzdCBQeXRob24gc2NyaXB0IC0gY3JlYXRlIGEgZmlsZSBjYWxsZWQgYGBoZWxsby5weWBgIHdpdGggdGhlCitmb2xsb3dpbmcgY29udGVudHMKKworOjoKKworICAgICMhIHB5dGhvbgorICAgIGltcG9ydCBzeXMKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCJoZWxsbyBmcm9tIFB5dGhvbiAlc1xuIiAlIChzeXMudmVyc2lvbiwpKQorCitGcm9tIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaGVsbG8ucHkgbGl2ZXMsIGV4ZWN1dGUgdGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgIHB5IGhlbGxvLnB5CisKK1lvdSBzaG91bGQgbm90aWNlIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB5b3VyIGxhdGVzdCBQeXRob24gMi54IGluc3RhbGxhdGlvbgoraXMgcHJpbnRlZC4gIE5vdyB0cnkgY2hhbmdpbmcgdGhlIGZpcnN0IGxpbmUgdG8gYmU6CisKKzo6CisKKyAgICAjISBweXRob24zCisKK1JlLWV4ZWN1dGluZyB0aGUgY29tbWFuZCBzaG91bGQgbm93IHByaW50IHRoZSBsYXRlc3QgUHl0aG9uIDMueCBpbmZvcm1hdGlvbi4KK0FzIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQtbGluZSBleGFtcGxlcywgeW91IGNhbiBzcGVjaWZ5IGEgbW9yZSBleHBsaWNpdAordmVyc2lvbiBxdWFsaWZpZXIuICBBc3N1bWluZyB5b3UgaGF2ZSBQeXRob24gMi42IGluc3RhbGxlZCwgdHJ5IGNoYW5naW5nIHRoZQorZmlyc3QgbGluZSB0byBgYCMhIHB5dGhvbjIuNmBgIGFuZCB5b3Ugc2hvdWxkIGZpbmQgdGhlIDIuNiB2ZXJzaW9uCitpbmZvcm1hdGlvbiBwcmludGVkLgorCitGcm9tIGZpbGUgYXNzb2NpYXRpb25zCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSBsYXVuY2hlciBzaG91bGQgaGF2ZSBiZWVuIGFzc29jaWF0ZWQgd2l0aCBQeXRob24gZmlsZXMgKGkuZS4gYGAucHlgYCwKK2BgLnB5d2BgLCBgYC5weWNgYCwgYGAucHlvYGAgZmlsZXMpIHdoZW4gaXQgd2FzIGluc3RhbGxlZC4gIFRoaXMgbWVhbnMgdGhhdAord2hlbiB5b3UgZG91YmxlLWNsaWNrIG9uIG9uZSBvZiB0aGVzZSBmaWxlcyBmcm9tIFdpbmRvd3MgZXhwbG9yZXIgdGhlIGxhdW5jaGVyCit3aWxsIGJlIHVzZWQsIGFuZCB0aGVyZWZvcmUgeW91IGNhbiB1c2UgdGhlIHNhbWUgZmFjaWxpdGllcyBkZXNjcmliZWQgYWJvdmUgdG8KK2hhdmUgdGhlIHNjcmlwdCBzcGVjaWZ5IHRoZSB2ZXJzaW9uIHdoaWNoIHNob3VsZCBiZSB1c2VkLgorCitUaGUga2V5IGJlbmVmaXQgb2YgdGhpcyBpcyB0aGF0IGEgc2luZ2xlIGxhdW5jaGVyIGNhbiBzdXBwb3J0IG11bHRpcGxlIFB5dGhvbgordmVyc2lvbnMgYXQgdGhlIHNhbWUgdGltZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRlbnRzIG9mIHRoZSBmaXJzdCBsaW5lLgorCitTaGViYW5nIExpbmVzCistLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBmaXJzdCBsaW5lIG9mIGEgc2NyaXB0IGZpbGUgc3RhcnRzIHdpdGggYGAjIWBgLCBpdCBpcyBrbm93biBhcyBhCisic2hlYmFuZyIgbGluZS4gIExpbnV4IGFuZCBvdGhlciBVbml4IGxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMgaGF2ZSBuYXRpdmUKK3N1cHBvcnQgZm9yIHN1Y2ggbGluZXMgYW5kIGFyZSBjb21tb25seSB1c2VkIG9uIHN1Y2ggc3lzdGVtcyB0byBpbmRpY2F0ZSBob3cKK2Egc2NyaXB0IHNob3VsZCBiZSBleGVjdXRlZC4gIFRoaXMgbGF1bmNoZXIgYWxsb3dzIHRoZSBzYW1lIGZhY2lsaXRpZXMgdG8gYmUKK3VzaW5nIHdpdGggUHl0aG9uIHNjcmlwdHMgb24gV2luZG93cyBhbmQgdGhlIGV4YW1wbGVzIGFib3ZlIGRlbW9uc3RyYXRlIHRoZWlyCit1c2UuCisKK1RvIGFsbG93IHNoZWJhbmcgbGluZXMgaW4gUHl0aG9uIHNjcmlwdHMgdG8gYmUgcG9ydGFibGUgYmV0d2VlbiBVbml4IGFuZAorV2luZG93cywgdGhpcyBsYXVuY2hlciBzdXBwb3J0cyBhIG51bWJlciBvZiAndmlydHVhbCcgY29tbWFuZHMgdG8gc3BlY2lmeQord2hpY2ggaW50ZXJwcmV0ZXIgdG8gdXNlLiAgVGhlIHN1cHBvcnRlZCB2aXJ0dWFsIGNvbW1hbmRzIGFyZToKKworKiBgYC91c3IvYmluL2VudiBweXRob25gYAorKiBgYC91c3IvYmluL3B5dGhvbmBgCisqIGBgL3Vzci9sb2NhbC9iaW4vcHl0aG9uYGAKKyogYGBweXRob25gYAorCitGb3IgZXhhbXBsZSwgaWYgdGhlIGZpcnN0IGxpbmUgb2YgeW91ciBzY3JpcHQgc3RhcnRzIHdpdGgKKworOjoKKworICAjISAvdXNyL2Jpbi9weXRob24KKworVGhlIGRlZmF1bHQgUHl0aG9uIHdpbGwgYmUgbG9jYXRlZCBhbmQgdXNlZC4gIEFzIG1hbnkgUHl0aG9uIHNjcmlwdHMgd3JpdHRlbgordG8gd29yayBvbiBVbml4IHdpbGwgYWxyZWFkeSBoYXZlIHRoaXMgbGluZSwgeW91IHNob3VsZCBmaW5kIHRoZXNlIHNjcmlwdHMgY2FuCitiZSB1c2VkIGJ5IHRoZSBsYXVuY2hlciB3aXRob3V0IG1vZGlmaWNhdGlvbi4gIElmIHlvdSBhcmUgd3JpdGluZyBhIG5ldyBzY3JpcHQKK29uIFdpbmRvd3Mgd2hpY2ggeW91IGhvcGUgd2lsbCBiZSB1c2VmdWwgb24gVW5peCwgeW91IHNob3VsZCB1c2Ugb25lIG9mIHRoZQorc2hlYmFuZyBsaW5lcyBzdGFydGluZyB3aXRoIGBgL3VzcmBgLgorCitBcmd1bWVudHMgaW4gc2hlYmFuZyBsaW5lcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNoZWJhbmcgbGluZXMgY2FuIGFsc28gc3BlY2lmeSBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZQorUHl0aG9uIGludGVycHJldGVyLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEgc2hlYmFuZyBsaW5lOgorCis6OgorCisgICMhIC91c3IvYmluL3B5dGhvbiAtdgorCitUaGVuIFB5dGhvbiB3aWxsIGJlIHN0YXJ0ZWQgd2l0aCB0aGUgYGAtdmBgIG9wdGlvbgorCitDdXN0b21pemF0aW9uCistLS0tLS0tLS0tLS0tCisKK0N1c3RvbWl6YXRpb24gdmlhIElOSSBmaWxlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKyAgICBUd28gLmluaSBmaWxlcyB3aWxsIGJlIHNlYXJjaGVkIGJ5IHRoZSBsYXVuY2hlciAtIGBgcHkuaW5pYGAgaW4gdGhlCisgICAgY3VycmVudCB1c2VyJ3MgImFwcGxpY2F0aW9uIGRhdGEiIGRpcmVjdG9yeSAoaS5lLiB0aGUgZGlyZWN0b3J5IHJldHVybmVkCisgICAgYnkgY2FsbGluZyB0aGUgV2luZG93cyBmdW5jdGlvbiBTSEdldEZvbGRlclBhdGggd2l0aCBDU0lETF9MT0NBTF9BUFBEQVRBKQorICAgIGFuZCBgYHB5LmluaWBgIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgbGF1bmNoZXIuICBUaGUgc2FtZSAuaW5pCisgICAgZmlsZXMgYXJlIHVzZWQgZm9yIGJvdGggdGhlICdjb25zb2xlJyB2ZXJzaW9uIG9mIHRoZSBsYXVuY2hlciAoaS5lLgorICAgIHB5LmV4ZSkgYW5kIGZvciB0aGUgJ3dpbmRvd3MnIHZlcnNpb24gKGkuZS4gcHl3LmV4ZSkKKworICAgIEN1c3RvbWl6YXRpb24gc3BlY2lmaWVkIGluIHRoZSAiYXBwbGljYXRpb24gZGlyZWN0b3J5IiB3aWxsIGhhdmUKKyAgICBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZSBuZXh0IHRvIHRoZSBleGVjdXRhYmxlLCBzbyBhIHVzZXIsIHdobyBtYXkgbm90CisgICAgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlIC5pbmkgZmlsZSBuZXh0IHRvIHRoZSBsYXVuY2hlciwgY2FuIG92ZXJyaWRlCisgICAgY29tbWFuZHMgaW4gdGhhdCBnbG9iYWwgLmluaSBmaWxlKQorCitDdXN0b21pemluZyBkZWZhdWx0IFB5dGhvbiB2ZXJzaW9ucworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworSW4gc29tZSBjYXNlcywgYSB2ZXJzaW9uIHF1YWxpZmllciBjYW4gYmUgaW5jbHVkZWQgaW4gYSBjb21tYW5kIHRvIGRpY3RhdGUKK3doaWNoIHZlcnNpb24gb2YgUHl0aG9uIHdpbGwgYmUgdXNlZCBieSB0aGUgY29tbWFuZC4gQSB2ZXJzaW9uIHF1YWxpZmllcgorc3RhcnRzIHdpdGggYSBtYWpvciB2ZXJzaW9uIG51bWJlciBhbmQgY2FuIG9wdGlvbmFsbHkgYmUgZm9sbG93ZWQgYnkgYSBwZXJpb2QKKygnLicpIGFuZCBhIG1pbm9yIHZlcnNpb24gc3BlY2lmaWVyLiBJZiB0aGUgbWlub3IgcXVhbGlmaWVyIGlzIHNwZWNpZmllZCwgaXQKK21heSBvcHRpb25hbGx5IGJlIGZvbGxvd2VkIGJ5ICItMzIiIHRvIGluZGljYXRlIHRoZSAzMi1iaXQgaW1wbGVtZW50YXRpb24gb2YKK3RoYXQgdmVyc2lvbiBiZSB1c2VkLgorCitGb3IgZXhhbXBsZSwgYSBzaGViYW5nIGxpbmUgb2YgYGAjIXB5dGhvbmBgIGhhcyBubyB2ZXJzaW9uIHF1YWxpZmllciwgd2hpbGUKK2BgIyFweXRob24zYGAgaGFzIGEgdmVyc2lvbiBxdWFsaWZpZXIgd2hpY2ggc3BlY2lmaWVzIG9ubHkgYSBtYWpvciB2ZXJzaW9uLgorCitJZiBubyB2ZXJzaW9uIHF1YWxpZmllcnMgYXJlIGZvdW5kIGluIGEgY29tbWFuZCwgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitgYFBZX1BZVEhPTmBgIGNhbiBiZSBzZXQgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB2ZXJzaW9uIHF1YWxpZmllciAtIHRoZSBkZWZhdWx0Cit2YWx1ZSBpcyAiMiIuIE5vdGUgdGhpcyB2YWx1ZSBjb3VsZCBzcGVjaWZ5IGp1c3QgYSBtYWpvciB2ZXJzaW9uIChlLmcuICIyIikgb3IKK2EgbWFqb3IubWlub3IgcXVhbGlmaWVyIChlLmcuICIyLjYiKSwgb3IgZXZlbiBtYWpvci5taW5vci0zMi4KKworSWYgbm8gbWlub3IgdmVyc2lvbiBxdWFsaWZpZXJzIGFyZSBmb3VuZCwgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitgYFBZX1BZVEhPTnttYWpvcn1gYCAod2hlcmUgYGB7bWFqb3J9YGAgaXMgdGhlIGN1cnJlbnQgbWFqb3IgdmVyc2lvbiBxdWFsaWZpZXIKK2FzIGRldGVybWluZWQgYWJvdmUpIGNhbiBiZSBzZXQgdG8gc3BlY2lmeSB0aGUgZnVsbCB2ZXJzaW9uLiBJZiBubyBzdWNoIG9wdGlvbgoraXMgZm91bmQsIHRoZSBsYXVuY2hlciB3aWxsIGVudW1lcmF0ZSB0aGUgaW5zdGFsbGVkIFB5dGhvbiB2ZXJzaW9ucyBhbmQgdXNlCit0aGUgbGF0ZXN0IG1pbm9yIHJlbGVhc2UgZm91bmQgZm9yIHRoZSBtYWpvciB2ZXJzaW9uLCB3aGljaCBpcyBsaWtlbHksCithbHRob3VnaCBub3QgZ3VhcmFudGVlZCwgdG8gYmUgdGhlIG1vc3QgcmVjZW50bHkgaW5zdGFsbGVkIHZlcnNpb24gaW4gdGhhdAorZmFtaWx5LgorCitPbiA2NC1iaXQgV2luZG93cyB3aXRoIGJvdGggMzItYml0IGFuZCA2NC1iaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzYW1lCisobWFqb3IubWlub3IpIFB5dGhvbiB2ZXJzaW9uIGluc3RhbGxlZCwgdGhlIDY0LWJpdCB2ZXJzaW9uIHdpbGwgYWx3YXlzIGJlCitwcmVmZXJyZWQuIFRoaXMgd2lsbCBiZSB0cnVlIGZvciBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGltcGxlbWVudGF0aW9ucyBvZiB0aGUKK2xhdW5jaGVyIC0gYSAzMi1iaXQgbGF1bmNoZXIgd2lsbCBwcmVmZXIgdG8gZXhlY3V0ZSBhIDY0LWJpdCBQeXRob24gaW5zdGFsbGF0aW9uCitvZiB0aGUgc3BlY2lmaWVkIHZlcnNpb24gaWYgYXZhaWxhYmxlLiBUaGlzIGlzIHNvIHRoZSBiZWhhdmlvciBvZiB0aGUgbGF1bmNoZXIKK2NhbiBiZSBwcmVkaWN0ZWQga25vd2luZyBvbmx5IHdoYXQgdmVyc2lvbnMgYXJlIGluc3RhbGxlZCBvbiB0aGUgUEMgYW5kCit3aXRob3V0IHJlZ2FyZCB0byB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGluc3RhbGxlZCAoaS5lLiwgd2l0aG91dCBrbm93aW5nCit3aGV0aGVyIGEgMzIgb3IgNjQtYml0IHZlcnNpb24gb2YgUHl0aG9uIGFuZCBjb3JyZXNwb25kaW5nIGxhdW5jaGVyIHdhcworaW5zdGFsbGVkIGxhc3QpLiBBcyBub3RlZCBhYm92ZSwgYW4gb3B0aW9uYWwgIi0zMiIgc3VmZml4IGNhbiBiZSB1c2VkIG9uIGEKK3ZlcnNpb24gc3BlY2lmaWVyIHRvIGNoYW5nZSB0aGlzIGJlaGF2aW91ci4KKworRXhhbXBsZXM6CisKKyogSWYgbm8gcmVsZXZhbnQgb3B0aW9ucyBhcmUgc2V0LCB0aGUgY29tbWFuZHMgYGBweXRob25gYCBhbmQKKyAgYGBweXRob24yYGAgd2lsbCB1c2UgdGhlIGxhdGVzdCBQeXRob24gMi54IHZlcnNpb24gaW5zdGFsbGVkIGFuZAorICB0aGUgY29tbWFuZCBgYHB5dGhvbjNgYCB3aWxsIHVzZSB0aGUgbGF0ZXN0IFB5dGhvbiAzLnggaW5zdGFsbGVkLgorCisqIFRoZSBjb21tYW5kcyBgYHB5dGhvbjMuMWBgIGFuZCBgYHB5dGhvbjIuN2BgIHdpbGwgbm90IGNvbnN1bHQgYW55CisgIG9wdGlvbnMgYXQgYWxsIGFzIHRoZSB2ZXJzaW9ucyBhcmUgZnVsbHkgc3BlY2lmaWVkLgorCisqIElmIGBgUFlfUFlUSE9OPTNgYCwgdGhlIGNvbW1hbmRzIGBgcHl0aG9uYGAgYW5kIGBgcHl0aG9uM2BgIHdpbGwgYm90aCB1c2UKKyAgdGhlIGxhdGVzdCBpbnN0YWxsZWQgUHl0aG9uIDMgdmVyc2lvbi4KKworKiBJZiBgYFBZX1BZVEhPTj0zLjEtMzJgYCwgdGhlIGNvbW1hbmQgYGBweXRob25gYCB3aWxsIHVzZSB0aGUgMzItYml0CisgIGltcGxlbWVudGF0aW9uIG9mIDMuMSB3aGVyZWFzIHRoZSBjb21tYW5kIGBgcHl0aG9uM2BgIHdpbGwgdXNlIHRoZSBsYXRlc3QKKyAgaW5zdGFsbGVkIFB5dGhvbiAoUFlfUFlUSE9OIHdhcyBub3QgY29uc2lkZXJlZCBhdCBhbGwgYXMgYSBtYWpvcgorICB2ZXJzaW9uIHdhcyBzcGVjaWZpZWQuKQorCisqIElmIGBgUFlfUFlUSE9OPTNgYCBhbmQgYGBQWV9QWVRIT04zPTMuMWBgLCB0aGUgY29tbWFuZHMKKyAgYGBweXRob25gYCBhbmQgYGBweXRob24zYGAgd2lsbCBib3RoIHVzZSBzcGVjaWZpY2FsbHkgMy4xCisKK0luIGFkZGl0aW9uIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcywgdGhlIHNhbWUgc2V0dGluZ3MgY2FuIGJlIGNvbmZpZ3VyZWQKK2luIHRoZSAuSU5JIGZpbGUgdXNlZCBieSB0aGUgbGF1bmNoZXIuICBUaGUgc2VjdGlvbiBpbiB0aGUgSU5JIGZpbGUgaXMKK2NhbGxlZCBgYFtkZWZhdWx0c11gYCBhbmQgdGhlIGtleSBuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlCitlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aG91dCB0aGUgbGVhZGluZyBgYFBZXF9gYCBwcmVmaXggKGFuZCBub3RlIHRoYXQKK3RoZSBrZXkgbmFtZXMgaW4gdGhlIElOSSBmaWxlIGFyZSBjYXNlIGluc2Vuc2l0aXZlLikgIFRoZSBjb250ZW50cyBvZgorYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2lsbCBvdmVycmlkZSB0aGluZ3Mgc3BlY2lmaWVkIGluIHRoZSBJTkkgZmlsZS4KKworRm9yIGV4YW1wbGU6CisKKyogU2V0dGluZyBgYFBZX1BZVEhPTj0zLjFgYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBJTkkgZmlsZSBjb250YWluaW5nOgorCis6OgorCisgIFtkZWZhdWx0c10KKyAgcHl0aG9uPTMuMQorCisqIFNldHRpbmcgYGBQWV9QWVRIT049M2BgIGFuZCBgYFBZX1BZVEhPTjM9My4xYGAgaXMgZXF1aXZhbGVudCB0byB0aGUgSU5JIGZpbGUKKyAgY29udGFpbmluZzoKKworOjoKKworICBbZGVmYXVsdHNdCisgIHB5dGhvbj0zCisgIHB5dGhvbjM9My4xCisKK0RpYWdub3N0aWNzCistLS0tLS0tLS0tLQorCitJZiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYFBZTEFVTkNIX0RFQlVHYGAgaXMgc2V0ICh0byBhbnkgdmFsdWUpLCB0aGUKK2xhdW5jaGVyIHdpbGwgcHJpbnQgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiB0byBzdGRlcnIgKGkuZS4gdG8gdGhlIGNvbnNvbGUpLgorV2hpbGUgdGhpcyBpbmZvcm1hdGlvbiBtYW5hZ2VzIHRvIGJlIHNpbXVsdGFuZW91c2x5IHZlcmJvc2UgKmFuZCogdGVyc2UsIGl0CitzaG91bGQgYWxsb3cgeW91IHRvIHNlZSB3aGF0IHZlcnNpb25zIG9mIFB5dGhvbiB3ZXJlIGxvY2F0ZWQsIHdoeSBhCitwYXJ0aWN1bGFyIHZlcnNpb24gd2FzIGNob3NlbiBhbmQgdGhlIGV4YWN0IGNvbW1hbmQtbGluZSB1c2VkIHRvIGV4ZWN1dGUgdGhlCit0YXJnZXQgUHl0aG9uLgorCisKIEFkZGl0aW9uYWwgbW9kdWxlcwogPT09PT09PT09PT09PT09PT09CiAKQEAgLTM0MSwzICs2MDUsNyBAQAogICAgYEEgUHl0aG9uIGZvciBXaW5kb3dzIFR1dG9yaWFsIDxodHRwOi8vd3d3LmltbGFkcmlzLmNvbS9TY3JpcHRzL1B5dGhvbkZvcldpbmRvd3MuaHRtbD5gXwogICAgICAgYnkgQW1hbmRhIEJpcm1pbmdoYW0sIDIwMDQKIAorICAgOnBlcDpgMzk3YCAtIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cworICAgICAgVGhlIHByb3Bvc2FsIGZvciB0aGUgbGF1bmNoZXIgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIFB5dGhvbiBkaXN0cmlidXRpb24uCisKKwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4wLnJzdAppbmRleCA4NTBlNTdkLi42NGI5MDhiIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4wLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4wLnJzdApAQCAtMTY2LDcgKzE2Niw3IEBACiByZWdpc3RlcmluZyBuZXcgZW5jb2RpbmdzIHRoYXQgYXJlIHRoZW4gYXZhaWxhYmxlIHRocm91Z2hvdXQgYSBQeXRob24gcHJvZ3JhbS4KIElmIGFuIGVuY29kaW5nIGlzbid0IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgdXN1YWxseSA3LWJpdCBBU0NJSSwKIHRob3VnaCBpdCBjYW4gYmUgY2hhbmdlZCBmb3IgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGJ5IGNhbGxpbmcgdGhlCi06ZnVuYzpgc3lzLnNldGRlZmF1bHRlbmNvZGluZyhlbmNvZGluZylgIGZ1bmN0aW9uIGluIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mCitgYHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoZW5jb2RpbmcpYGAgZnVuY3Rpb24gaW4gYSBjdXN0b21pc2VkIHZlcnNpb24gb2YKIDpmaWxlOmBzaXRlLnB5YC4KIAogQ29tYmluaW5nIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgYWx3YXlzIGNvZXJjZXMgdG8gVW5pY29kZSwgdXNpbmcgdGhlIGRlZmF1bHQKQEAgLTIwMyw3ICsyMDMsNyBAQAogCiBUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIHRvIGxvb2sgdXAgZXhpc3RpbmcgZW5jb2RpbmdzIGFuZAogcmVnaXN0ZXIgbmV3IG9uZXMuICBVbmxlc3MgeW91IHdhbnQgdG8gaW1wbGVtZW50IGEgbmV3IGVuY29kaW5nLCB5b3UnbGwgbW9zdAotb2Z0ZW4gdXNlIHRoZSA6ZnVuYzpgY29kZWNzLmxvb2t1cChlbmNvZGluZylgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEKK29mdGVuIHVzZSB0aGUgYGBjb2RlY3MubG9va3VwKGVuY29kaW5nKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGEKIDQtZWxlbWVudCB0dXBsZTogYGAoZW5jb2RlX2Z1bmMsIGRlY29kZV9mdW5jLCBzdHJlYW1fcmVhZGVyLCBzdHJlYW1fd3JpdGVyKWBgLgogCiAqICplbmNvZGVfZnVuYyogaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgVW5pY29kZSBzdHJpbmcsIGFuZCByZXR1cm5zIGEgMi10dXBsZQpAQCAtNjAwLDcgKzYwMCw3IEBACiBDaGFuZ2VzIHRvIEJ1aWx0LWluIEZ1bmN0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSBuZXcgYnVpbHQtaW4sIDpmdW5jOmB6aXAoc2VxMSwgc2VxMiwgLi4uKWAsIGhhcyBiZWVuIGFkZGVkLiAgOmZ1bmM6YHppcGAKK0EgbmV3IGJ1aWx0LWluLCBgYHppcChzZXExLCBzZXEyLCAuLi4pYGAsIGhhcyBiZWVuIGFkZGVkLiAgOmZ1bmM6YHppcGAKIHJldHVybnMgYSBsaXN0IG9mIHR1cGxlcyB3aGVyZSBlYWNoIHR1cGxlIGNvbnRhaW5zIHRoZSBpLXRoIGVsZW1lbnQgZnJvbSBlYWNoIG9mCiB0aGUgYXJndW1lbnQgc2VxdWVuY2VzLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiA6ZnVuYzpgemlwYCBhbmQgYGBtYXAoTm9uZSwKIHNlcTEsIHNlcTIpYGAgaXMgdGhhdCA6ZnVuYzpgbWFwYCBwYWRzIHRoZSBzZXF1ZW5jZXMgd2l0aCBgYE5vbmVgYCBpZiB0aGUKQEAgLTYxOSw3ICs2MTksNyBAQAogd291bGQgYmUgYGAoMiwgMCwgMSwgJ2JldGEnLCAxKWBgLiAqbGV2ZWwqIGlzIGEgc3RyaW5nIHN1Y2ggYXMgYGAiYWxwaGEiYGAsCiBgYCJiZXRhImBgLCBvciBgYCJmaW5hbCJgYCBmb3IgYSBmaW5hbCByZWxlYXNlLgogCi1EaWN0aW9uYXJpZXMgaGF2ZSBhbiBvZGQgbmV3IG1ldGhvZCwgOm1ldGg6YHNldGRlZmF1bHQoa2V5LCBkZWZhdWx0KWAsIHdoaWNoCitEaWN0aW9uYXJpZXMgaGF2ZSBhbiBvZGQgbmV3IG1ldGhvZCwgYGBzZXRkZWZhdWx0KGtleSwgZGVmYXVsdClgYCwgd2hpY2gKIGJlaGF2ZXMgc2ltaWxhcmx5IHRvIHRoZSBleGlzdGluZyA6bWV0aDpgZ2V0YCBtZXRob2QuICBIb3dldmVyLCBpZiB0aGUga2V5IGlzCiBtaXNzaW5nLCA6bWV0aDpgc2V0ZGVmYXVsdGAgYm90aCByZXR1cm5zIHRoZSB2YWx1ZSBvZiAqZGVmYXVsdCogYXMgOm1ldGg6YGdldGAKIHdvdWxkIGRvLCBhbmQgYWxzbyBpbnNlcnRzIGl0IGludG8gdGhlIGRpY3Rpb25hcnkgYXMgdGhlIHZhbHVlIGZvciAqa2V5Ki4gIFRodXMsCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBTb2NrZXQgTGF5ZXIsIHdoaWNoIGVuY3J5cHRzIHRoZSBkYXRhIGJlaW5nCiBzZW50IG92ZXIgYSBzb2NrZXQuICBXaGVuIGNvbXBpbGluZyBQeXRob24sIHlvdSBjYW4gZWRpdCA6ZmlsZTpgTW9kdWxlcy9TZXR1cGAKIHRvIGluY2x1ZGUgU1NMIHN1cHBvcnQsIHdoaWNoIGFkZHMgYW4gYWRkaXRpb25hbCBmdW5jdGlvbiB0byB0aGUgOm1vZDpgc29ja2V0YAotbW9kdWxlOiA6ZnVuYzpgc29ja2V0LnNzbChzb2NrZXQsIGtleWZpbGUsIGNlcnRmaWxlKWAsIHdoaWNoIHRha2VzIGEgc29ja2V0Cittb2R1bGU6IGBgc29ja2V0LnNzbChzb2NrZXQsIGtleWZpbGUsIGNlcnRmaWxlKWBgLCB3aGljaCB0YWtlcyBhIHNvY2tldAogb2JqZWN0IGFuZCByZXR1cm5zIGFuIFNTTCBzb2NrZXQuICBUaGUgOm1vZDpgaHR0cGxpYmAgYW5kIDptb2Q6YHVybGxpYmAgbW9kdWxlcwogd2VyZSBhbHNvIGNoYW5nZWQgdG8gc3VwcG9ydCBgYGh0dHBzOi8vYGAgVVJMcywgdGhvdWdoIG5vIG9uZSBoYXMgaW1wbGVtZW50ZWQKIEZUUCBvciBTTVRQIG92ZXIgU1NMLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAppbmRleCAxMTdhZjEwLi5iMWFiNDhlIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdApAQCAtMjA0LDcgKzIwNCw3IEBACiBsaXN0LCBvciBhbnkgb3RoZXIgUHl0aG9uIG9iamVjdC4gIEFsdGVybmF0aXZlbHkgdGhleSBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIGlmCiB0aGUgY29tcGFyaXNvbiBpcyBpbXBvc3NpYmxlLCBpbmNvbnNpc3RlbnQsIG9yIG90aGVyd2lzZSBtZWFuaW5nbGVzcy4KIAotVGhlIGJ1aWx0LWluIDpmdW5jOmBjbXAoQSxCKWAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKK1RoZSBidWlsdC1pbiBgYGNtcChBLEIpYGAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKIGFuZCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24gb3BlcmF0aW9uIHRvCiB1c2U7IHRoaXMgaXMgZ2l2ZW4gYXMgb25lIG9mIHRoZSBzdHJpbmdzIGBgIjwiYGAsIGBgIjw9ImBgLCBgYCI+ImBgLCBgYCI+PSJgYCwKIGBgIj09ImBgLCBvciBgYCIhPSJgYC4gIElmIGNhbGxlZCB3aXRob3V0IHRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwKQEAgLTM1MCw3ICszNTAsNyBAQAogYW5kIGFub3RoZXIgYmVpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiBkYXRhIHN0cnVjdHVyZXMgc3VjaCBhcyB0cmVlcy4KIAogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgbWVtb2l6aW5nIGZ1bmN0aW9uIHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGFub3RoZXIKLWZ1bmN0aW9uIDpmdW5jOmBmKHgpYCBieSBzdG9yaW5nIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGFuZCBpdHMgcmVzdWx0IGluIGEKK2Z1bmN0aW9uIGBgZih4KWBgIGJ5IHN0b3JpbmcgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgYW5kIGl0cyByZXN1bHQgaW4gYQogZGljdGlvbmFyeTo6CiAKICAgIF9jYWNoZSA9IHt9CkBAIC02NTYsNyArNjU2LDcgQEAKICAgdXNlIDptb2Q6YGZ0cGxpYmAgdG8gcmV0cmlldmUgZmlsZXMgYW5kIHRoZW4gZG9uJ3Qgd29yayBmcm9tIGJlaGluZCBhIGZpcmV3YWxsLgogICBJdCdzIGRlZW1lZCB1bmxpa2VseSB0aGF0IHRoaXMgd2lsbCBjYXVzZSBwcm9ibGVtcyBmb3IgYW55b25lLCBiZWNhdXNlIE5ldHNjYXBlCiAgIGRlZmF1bHRzIHRvIHBhc3NpdmUgbW9kZSBhbmQgZmV3IHBlb3BsZSBjb21wbGFpbiwgYnV0IGlmIHBhc3NpdmUgbW9kZSBpcwotICB1bnN1aXRhYmxlIGZvciB5b3VyIGFwcGxpY2F0aW9uIG9yIG5ldHdvcmsgc2V0dXAsIGNhbGwgOm1ldGg6YHNldF9wYXN2KDApYCBvbgorICB1bnN1aXRhYmxlIGZvciB5b3VyIGFwcGxpY2F0aW9uIG9yIG5ldHdvcmsgc2V0dXAsIGNhbGwgYGBzZXRfcGFzdigwKWBgIG9uCiAgIEZUUCBvYmplY3RzIHRvIGRpc2FibGUgcGFzc2l2ZSBtb2RlLgogCiAqIFN1cHBvcnQgZm9yIHJhdyBzb2NrZXQgYWNjZXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSwKQEAgLTY2Niw3ICs2NjYsNyBAQAogICBmb3IgZGlzcGxheWluZyB0aW1pbmcgcHJvZmlsZXMgZm9yIFB5dGhvbiBwcm9ncmFtcywgaW52b2tlZCB3aGVuIHRoZSBtb2R1bGUgaXMKICAgcnVuIGFzIGEgc2NyaXB0LiAgQ29udHJpYnV0ZWQgYnkgIEVyaWMgUy4gUmF5bW9uZC4KIAotKiBBIG5ldyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZnVuY3Rpb24sIDpmdW5jOmBzeXMuX2dldGZyYW1lKFtkZXB0aF0pYCwgaGFzCisqIEEgbmV3IGltcGxlbWVudGF0aW9uLWRlcGVuZGVudCBmdW5jdGlvbiwgYGBzeXMuX2dldGZyYW1lKFtkZXB0aF0pYGAsIGhhcwogICBiZWVuIGFkZGVkIHRvIHJldHVybiBhIGdpdmVuIGZyYW1lIG9iamVjdCBmcm9tIHRoZSBjdXJyZW50IGNhbGwgc3RhY2suCiAgIDpmdW5jOmBzeXMuX2dldGZyYW1lYCByZXR1cm5zIHRoZSBmcmFtZSBhdCB0aGUgdG9wIG9mIHRoZSBjYWxsIHN0YWNrOyAgaWYgdGhlCiAgIG9wdGlvbmFsIGludGVnZXIgYXJndW1lbnQgKmRlcHRoKiBpcyBzdXBwbGllZCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4yLnJzdCBiL0RvYy93aGF0c25ldy8yLjIucnN0CmluZGV4IDFkYjFlZTcuLjJlNzA2OWQgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjIucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjIucnN0CkBAIC0xNzMsMTIgKzE3MywxMiBAQAogCiAqIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgYXR0cmlidXRlJ3MgZG9jc3RyaW5nLgogCi0qIDptZXRoOmBfX2dldF9fKG9iamVjdClgIGlzIGEgbWV0aG9kIHRoYXQgcmV0cmlldmVzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZnJvbQorKiBgYF9fZ2V0X18ob2JqZWN0KWBgIGlzIGEgbWV0aG9kIHRoYXQgcmV0cmlldmVzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZnJvbQogICAqb2JqZWN0Ki4KIAotKiA6bWV0aDpgX19zZXRfXyhvYmplY3QsIHZhbHVlKWAgc2V0cyB0aGUgYXR0cmlidXRlIG9uICpvYmplY3QqIHRvICp2YWx1ZSouCisqIGBgX19zZXRfXyhvYmplY3QsIHZhbHVlKWBgIHNldHMgdGhlIGF0dHJpYnV0ZSBvbiAqb2JqZWN0KiB0byAqdmFsdWUqLgogCi0qIDptZXRoOmBfX2RlbGV0ZV9fKG9iamVjdCwgdmFsdWUpYCBkZWxldGVzIHRoZSAqdmFsdWUqICBhdHRyaWJ1dGUgb2YgKm9iamVjdCouCisqIGBgX19kZWxldGVfXyhvYmplY3QsIHZhbHVlKWBgIGRlbGV0ZXMgdGhlICp2YWx1ZSogIGF0dHJpYnV0ZSBvZiAqb2JqZWN0Ki4KIAogRm9yIGV4YW1wbGUsIHdoZW4geW91IHdyaXRlIGBgb2JqLnhgYCwgdGhlIHN0ZXBzIHRoYXQgUHl0aG9uIGFjdHVhbGx5IHBlcmZvcm1zCiBhcmU6OgpAQCAtMjg4LDcgKzI4OCw3IEBACiB3aGljaCBpcyB0aGUgYmVoYXZpb3VyIHdlJ3JlIGFmdGVyLiAgVGhpcyBsb29rdXAgcnVsZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lCiBmb2xsb3dlZCBieSBDb21tb24gTGlzcC4gIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgc3VwZXJgLCBwcm92aWRlcyBhIHdheQogdG8gZ2V0IGF0IGEgY2xhc3MncyBzdXBlcmNsYXNzZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVpbXBsZW1lbnQgUHl0aG9uJ3MKLWFsZ29yaXRobS4gVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBmb3JtIHdpbGwgYmUgIDpmdW5jOmBzdXBlcihjbGFzcywgb2JqKWAsIHdoaWNoCithbGdvcml0aG0uIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9ybSB3aWxsIGJlICBgYHN1cGVyKGNsYXNzLCBvYmopYGAsIHdoaWNoCiByZXR1cm5zICBhIGJvdW5kIHN1cGVyY2xhc3Mgb2JqZWN0IChub3QgdGhlIGFjdHVhbCBjbGFzcyBvYmplY3QpLiAgVGhpcyBmb3JtCiB3aWxsIGJlIHVzZWQgaW4gbWV0aG9kcyB0byBjYWxsIGEgbWV0aG9kIGluIHRoZSBzdXBlcmNsYXNzOyBmb3IgZXhhbXBsZSwKIDpjbGFzczpgRGAncyA6bWV0aDpgc2F2ZWAgbWV0aG9kIHdvdWxkIGxvb2sgbGlrZSB0aGlzOjoKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAgICAgICAuLi4KIAogOmZ1bmM6YHN1cGVyYCBjYW4gYWxzbyByZXR1cm4gdW5ib3VuZCBzdXBlcmNsYXNzIG9iamVjdHMgd2hlbiBjYWxsZWQgYXMKLTpmdW5jOmBzdXBlcihjbGFzcylgIG9yIDpmdW5jOmBzdXBlcihjbGFzczEsIGNsYXNzMilgLCBidXQgdGhpcyBwcm9iYWJseSB3b24ndAorYGBzdXBlcihjbGFzcylgYCBvciBgYHN1cGVyKGNsYXNzMSwgY2xhc3MyKWBgLCBidXQgdGhpcyBwcm9iYWJseSB3b24ndAogb2Z0ZW4gYmUgdXNlZnVsLgogCiAKQEAgLTMxNCwxMyArMzE0LDEzIEBACiBgYG9iai5wYXJlbnRgYCBpbnRvIGEgbWV0aG9kIGNhbGwgc3VjaCBhcyBgYG9iai5nZXRfcGFyZW50YGAuICBQeXRob24gMi4yIGFkZHMKIHNvbWUgbmV3IHdheXMgb2YgY29udHJvbGxpbmcgYXR0cmlidXRlIGFjY2Vzcy4KIAotRmlyc3QsIDptZXRoOmBfX2dldGF0dHJfXyhhdHRyX25hbWUpYCBpcyBzdGlsbCBzdXBwb3J0ZWQgYnkgbmV3LXN0eWxlIGNsYXNzZXMsCitGaXJzdCwgYGBfX2dldGF0dHJfXyhhdHRyX25hbWUpYGAgaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IG5ldy1zdHlsZSBjbGFzc2VzLAogYW5kIG5vdGhpbmcgYWJvdXQgaXQgaGFzIGNoYW5nZWQuICBBcyBiZWZvcmUsIGl0IHdpbGwgYmUgY2FsbGVkIHdoZW4gYW4gYXR0ZW1wdAogaXMgbWFkZSB0byBhY2Nlc3MgYGBvYmouZm9vYGAgYW5kIG5vIGF0dHJpYnV0ZSBuYW1lZCBgYGZvb2BgIGlzIGZvdW5kIGluIHRoZQogaW5zdGFuY2UncyBkaWN0aW9uYXJ5LgogCiBOZXctc3R5bGUgY2xhc3NlcyBhbHNvIHN1cHBvcnQgYSBuZXcgbWV0aG9kLAotOm1ldGg6YF9fZ2V0YXR0cmlidXRlX18oYXR0cl9uYW1lKWAuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcyBpcworYGBfX2dldGF0dHJpYnV0ZV9fKGF0dHJfbmFtZSlgYC4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBtZXRob2RzIGlzCiB0aGF0IDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBpcyAqYWx3YXlzKiBjYWxsZWQgd2hlbmV2ZXIgYW55IGF0dHJpYnV0ZSBpcwogYWNjZXNzZWQsIHdoaWxlIHRoZSBvbGQgOm1ldGg6YF9fZ2V0YXR0cl9fYCBpcyBvbmx5IGNhbGxlZCBpZiBgYGZvb2BgIGlzbid0CiBmb3VuZCBpbiB0aGUgaW5zdGFuY2UncyBkaWN0aW9uYXJ5LgpAQCAtNDQxLDggKzQ0MSw4IEBACiAKIEluIFB5dGhvbiAyLjIsIGl0ZXJhdGlvbiBjYW4gYmUgaW1wbGVtZW50ZWQgc2VwYXJhdGVseSwgYW5kIDptZXRoOmBfX2dldGl0ZW1fX2AKIG1ldGhvZHMgY2FuIGJlIGxpbWl0ZWQgdG8gY2xhc3NlcyB0aGF0IHJlYWxseSBkbyBzdXBwb3J0IHJhbmRvbSBhY2Nlc3MuICBUaGUKLWJhc2ljIGlkZWEgb2YgaXRlcmF0b3JzIGlzICBzaW1wbGUuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YGl0ZXIob2JqKWAKLW9yIGBgaXRlcihDLCBzZW50aW5lbClgYCwgaXMgdXNlZCB0byBnZXQgYW4gaXRlcmF0b3IuIDpmdW5jOmBpdGVyKG9iailgIHJldHVybnMKK2Jhc2ljIGlkZWEgb2YgaXRlcmF0b3JzIGlzICBzaW1wbGUuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgYGBpdGVyKG9iailgYAorb3IgYGBpdGVyKEMsIHNlbnRpbmVsKWBgLCBpcyB1c2VkIHRvIGdldCBhbiBpdGVyYXRvci4gYGBpdGVyKG9iailgYCByZXR1cm5zCiBhbiBpdGVyYXRvciBmb3IgdGhlIG9iamVjdCAqb2JqKiwgd2hpbGUgYGBpdGVyKEMsIHNlbnRpbmVsKWBgIHJldHVybnMgYW4KIGl0ZXJhdG9yIHRoYXQgd2lsbCBpbnZva2UgdGhlIGNhbGxhYmxlIG9iamVjdCAqQyogdW50aWwgaXQgcmV0dXJucyAqc2VudGluZWwqIHRvCiBzaWduYWwgdGhhdCB0aGUgaXRlcmF0b3IgaXMgZG9uZS4KQEAgLTc5Myw3ICs3OTMsNyBAQAogCiBBbm90aGVyIGNoYW5nZSBpcyBzaW1wbGVyIHRvIGV4cGxhaW4uIFNpbmNlIHRoZWlyIGludHJvZHVjdGlvbiwgVW5pY29kZSBzdHJpbmdzCiBoYXZlIHN1cHBvcnRlZCBhbiA6bWV0aDpgZW5jb2RlYCBtZXRob2QgdG8gY29udmVydCB0aGUgc3RyaW5nIHRvIGEgc2VsZWN0ZWQKLWVuY29kaW5nIHN1Y2ggYXMgVVRGLTggb3IgTGF0aW4tMS4gIEEgc3ltbWV0cmljIDptZXRoOmBkZWNvZGUoWyplbmNvZGluZypdKWAKK2VuY29kaW5nIHN1Y2ggYXMgVVRGLTggb3IgTGF0aW4tMS4gIEEgc3ltbWV0cmljIGBgZGVjb2RlKFsqZW5jb2RpbmcqXSlgYAogbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIDgtYml0IHN0cmluZ3MgKHRob3VnaCBub3QgdG8gVW5pY29kZSBzdHJpbmdzKSBpbiAyLjIuCiA6bWV0aDpgZGVjb2RlYCBhc3N1bWVzIHRoYXQgdGhlIHN0cmluZyBpcyBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGFuZCBkZWNvZGVzCiBpdCwgcmV0dXJuaW5nIHdoYXRldmVyIGlzIHJldHVybmVkIGJ5IHRoZSBjb2RlYy4KQEAgLTEyMDMsNyArMTIwMyw3IEBACiAgIHRvIGFuIE1CQ1MgZW5jb2RlZCBzdHJpbmcsIGFzIHVzZWQgYnkgdGhlIE1pY3Jvc29mdCBmaWxlIEFQSXMuICBBcyBNQkNTIGlzCiAgIGV4cGxpY2l0bHkgdXNlZCBieSB0aGUgZmlsZSBBUElzLCBQeXRob24ncyBjaG9pY2Ugb2YgQVNDSUkgYXMgdGhlIGRlZmF1bHQKICAgZW5jb2RpbmcgdHVybnMgb3V0IHRvIGJlIGFuIGFubm95YW5jZS4gIE9uIFVuaXgsIHRoZSBsb2NhbGUncyBjaGFyYWN0ZXIgc2V0IGlzCi0gIHVzZWQgaWYgOmZ1bmM6YGxvY2FsZS5ubF9sYW5naW5mbyhDT0RFU0VUKWAgaXMgYXZhaWxhYmxlLiAgKFdpbmRvd3Mgc3VwcG9ydCB3YXMKKyAgdXNlZCBpZiBgYGxvY2FsZS5ubF9sYW5naW5mbyhDT0RFU0VUKWBgIGlzIGF2YWlsYWJsZS4gIChXaW5kb3dzIHN1cHBvcnQgd2FzCiAgIGNvbnRyaWJ1dGVkIGJ5IE1hcmsgSGFtbW9uZCB3aXRoIGFzc2lzdGFuY2UgZnJvbSBNYXJjLUFuZHLDqSBMZW1idXJnLiBVbml4CiAgIHN1cHBvcnQgd2FzIGFkZGVkIGJ5IE1hcnRpbiB2b24gTMO2d2lzLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4zLnJzdAppbmRleCBmNGM3OWU0Li5mMGU0OGQ5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4zLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4zLnJzdApAQCAtNTA0LDggKzUwNCw4IEBACiAgICBaZXJvRGl2aXNpb25FcnJvcjogaW50ZWdlciBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVybwogCiBTbGlnaHRseSBtb3JlIGFkdmFuY2VkIHByb2dyYW1zIHdpbGwgdXNlIGEgbG9nZ2VyIG90aGVyIHRoYW4gdGhlIHJvb3QgbG9nZ2VyLgotVGhlIDpmdW5jOmBnZXRMb2dnZXIobmFtZSlgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGEgcGFydGljdWxhciBsb2csIGNyZWF0aW5nCi1pdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4gOmZ1bmM6YGdldExvZ2dlcihOb25lKWAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CitUaGUgYGBnZXRMb2dnZXIobmFtZSlgYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBhIHBhcnRpY3VsYXIgbG9nLCBjcmVhdGluZworaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuIGBgZ2V0TG9nZ2VyKE5vbmUpYGAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CiAKICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdzZXJ2ZXInKQogICAgIC4uLgpAQCAtNzI0LDEwICs3MjQsMTAgQEAKICAgb2JqZWN0cyB0byBpdC4gIEFkZGl0aW9uYWwgYnVpbHQtaW4gYW5kIGZyb3plbiBtb2R1bGVzIGNhbiBiZSBpbXBvcnRlZCBieSBhbgogICBvYmplY3QgYWRkZWQgdG8gdGhpcyBsaXN0LgogCi1JbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIDptZXRoOmBmaW5kX21vZHVsZShmdWxsbmFtZSwKLXBhdGg9Tm9uZSlgLiAgKmZ1bGxuYW1lKiB3aWxsIGJlIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwgZS5nLiBgYHN0cmluZ2BgIG9yCitJbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIGBgZmluZF9tb2R1bGUoZnVsbG5hbWUsCitwYXRoPU5vbmUpYGAuICAqZnVsbG5hbWUqIHdpbGwgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lLCBlLmcuIGBgc3RyaW5nYGAgb3IKIGBgZGlzdHV0aWxzLmNvcmVgYC4gIDptZXRoOmBmaW5kX21vZHVsZWAgbXVzdCByZXR1cm4gYSBsb2FkZXIgb2JqZWN0IHRoYXQgaGFzIGEKLXNpbmdsZSBtZXRob2QsIDptZXRoOmBsb2FkX21vZHVsZShmdWxsbmFtZSlgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCitzaW5nbGUgbWV0aG9kLCBgYGxvYWRfbW9kdWxlKGZ1bGxuYW1lKWBgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCiBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QuCiAKIFBzZXVkby1jb2RlIGZvciBQeXRob24ncyBuZXcgaW1wb3J0IGxvZ2ljLCB0aGVyZWZvcmUsIGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXMKQEAgLTkzNSw3ICs5MzUsNyBAQAogICAgWzAsIDIsIDRdCiAKIFRvIHNpbXBsaWZ5IGltcGxlbWVudGluZyBzZXF1ZW5jZXMgdGhhdCBzdXBwb3J0IGV4dGVuZGVkIHNsaWNpbmcsIHNsaWNlIG9iamVjdHMKLW5vdyBoYXZlIGEgbWV0aG9kIDptZXRoOmBpbmRpY2VzKGxlbmd0aClgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCitub3cgaGF2ZSBhIG1ldGhvZCBgYGluZGljZXMobGVuZ3RoKWBgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCiByZXR1cm5zIGEgYGAoc3RhcnQsIHN0b3AsIHN0ZXApYGAgdHVwbGUgdGhhdCBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvCiA6ZnVuYzpgcmFuZ2VgLiA6bWV0aDpgaW5kaWNlc2AgaGFuZGxlcyBvbWl0dGVkIGFuZCBvdXQtb2YtYm91bmRzIGluZGljZXMgaW4gYQogbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcyAoYW5kIHRoaXMgaW5ub2N1b3VzIHBocmFzZSBoaWRlcyBhIHdlbHRlcgpAQCAtOTg0LDcgKzk4NCw3IEBACiAqIEJ1aWx0LWluIHR5cGVzIG5vdyBzdXBwb3J0IHRoZSBleHRlbmRlZCBzbGljaW5nIHN5bnRheCwgYXMgZGVzY3JpYmVkIGluCiAgIHNlY3Rpb24gOnJlZjpgc2VjdGlvbi1zbGljZXNgIG9mIHRoaXMgZG9jdW1lbnQuCiAKLSogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBzdW0oaXRlcmFibGUsIHN0YXJ0PTApYCwgIGFkZHMgdXAgdGhlIG51bWVyaWMKKyogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgc3VtKGl0ZXJhYmxlLCBzdGFydD0wKWBgLCAgYWRkcyB1cCB0aGUgbnVtZXJpYwogICBpdGVtcyBpbiB0aGUgaXRlcmFibGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZWlyIHN1bS4gIDpmdW5jOmBzdW1gIG9ubHkgYWNjZXB0cwogICBudW1iZXJzLCBtZWFuaW5nIHRoYXQgeW91IGNhbid0IHVzZSBpdCB0byBjb25jYXRlbmF0ZSBhIGJ1bmNoIG9mIHN0cmluZ3MuCiAgIChDb250cmlidXRlZCBieSBBbGV4IE1hcnRlbGxpLikKQEAgLTk5OCw3ICs5OTgsNyBAQAogICBpdHMgaW5kZXgsIG5vdyB0YWtlcyBvcHRpb25hbCAgKnN0YXJ0KiBhbmQgKnN0b3AqIGFyZ3VtZW50cyB0byBsaW1pdCB0aGUgc2VhcmNoCiAgIHRvICBvbmx5IHBhcnQgb2YgdGhlIGxpc3QuCiAKLSogRGljdGlvbmFyaWVzIGhhdmUgYSBuZXcgbWV0aG9kLCA6bWV0aDpgcG9wKGtleVssICpkZWZhdWx0Kl0pYCwgdGhhdCByZXR1cm5zCisqIERpY3Rpb25hcmllcyBoYXZlIGEgbmV3IG1ldGhvZCwgYGBwb3Aoa2V5WywgKmRlZmF1bHQqXSlgYCwgdGhhdCByZXR1cm5zCiAgIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvICprZXkqIGFuZCByZW1vdmVzIHRoYXQga2V5L3ZhbHVlIHBhaXIgZnJvbSB0aGUKICAgZGljdGlvbmFyeS4gIElmIHRoZSByZXF1ZXN0ZWQga2V5IGlzbid0IHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksICpkZWZhdWx0KiBpcwogICByZXR1cm5lZCBpZiBpdCdzIHNwZWNpZmllZCBhbmQgOmV4YzpgS2V5RXJyb3JgIHJhaXNlZCBpZiBpdCBpc24ndC4gOjoKQEAgLTEwMjAsNyArMTAyMCw3IEBACiAgICAgIHt9CiAgICAgID4+PgogCi0gIFRoZXJlJ3MgYWxzbyBhIG5ldyBjbGFzcyBtZXRob2QsICA6bWV0aDpgZGljdC5mcm9ta2V5cyhpdGVyYWJsZSwgdmFsdWUpYCwgdGhhdAorICBUaGVyZSdzIGFsc28gYSBuZXcgY2xhc3MgbWV0aG9kLCAgYGBkaWN0LmZyb21rZXlzKGl0ZXJhYmxlLCB2YWx1ZSlgYCwgdGhhdAogICBjcmVhdGVzIGEgZGljdGlvbmFyeSB3aXRoIGtleXMgdGFrZW4gZnJvbSB0aGUgc3VwcGxpZWQgaXRlcmF0b3IgKml0ZXJhYmxlKiBhbmQKICAgYWxsIHZhbHVlcyBzZXQgdG8gKnZhbHVlKiwgZGVmYXVsdGluZyB0byBgYE5vbmVgYC4KIApAQCAtMTA5Myw3ICsxMDkzLDcgQEAKICAgMTAwIGJ5dGVjb2Rlcywgc3BlZWRpbmcgdXAgc2luZ2xlLXRocmVhZGVkIGFwcGxpY2F0aW9ucyBieSByZWR1Y2luZyB0aGUKICAgc3dpdGNoaW5nIG92ZXJoZWFkLiAgU29tZSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucyBtYXkgc3VmZmVyIHNsb3dlciByZXNwb25zZQogICB0aW1lLCBidXQgdGhhdCdzIGVhc2lseSBmaXhlZCBieSBzZXR0aW5nIHRoZSBsaW1pdCBiYWNrIHRvIGEgbG93ZXIgbnVtYmVyIHVzaW5nCi0gIDpmdW5jOmBzeXMuc2V0Y2hlY2tpbnRlcnZhbChOKWAuIFRoZSBsaW1pdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggdGhlIG5ldworICBgYHN5cy5zZXRjaGVja2ludGVydmFsKE4pYGAuIFRoZSBsaW1pdCBjYW4gYmUgcmV0cmlldmVkIHdpdGggdGhlIG5ldwogICA6ZnVuYzpgc3lzLmdldGNoZWNraW50ZXJ2YWxgIGZ1bmN0aW9uLgogCiAqIE9uZSBtaW5vciBidXQgZmFyLXJlYWNoaW5nIGNoYW5nZSBpcyB0aGF0IHRoZSBuYW1lcyBvZiBleHRlbnNpb24gdHlwZXMgZGVmaW5lZApAQCAtMTI3MiwxMCArMTI3MiwxMCBAQAogCiAqIFByZXZpb3VzbHkgdGhlIDptb2Q6YGRvY3Rlc3RgIG1vZHVsZSB3b3VsZCBvbmx5IHNlYXJjaCB0aGUgZG9jc3RyaW5ncyBvZgogICBwdWJsaWMgbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGZvciB0ZXN0IGNhc2VzLCBidXQgaXQgbm93IGFsc28gZXhhbWluZXMgcHJpdmF0ZQotICBvbmVzIGFzIHdlbGwuICBUaGUgOmZ1bmM6YERvY1Rlc3RTdWl0ZShgIGZ1bmN0aW9uIGNyZWF0ZXMgYQorICBvbmVzIGFzIHdlbGwuICBUaGUgOmZ1bmM6YERvY1Rlc3RTdWl0ZWAgZnVuY3Rpb24gY3JlYXRlcyBhCiAgIDpjbGFzczpgdW5pdHRlc3QuVGVzdFN1aXRlYCBvYmplY3QgZnJvbSBhIHNldCBvZiA6bW9kOmBkb2N0ZXN0YCB0ZXN0cy4KIAotKiBUaGUgbmV3IDpmdW5jOmBnYy5nZXRfcmVmZXJlbnRzKG9iamVjdClgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUKKyogVGhlIG5ldyBgYGdjLmdldF9yZWZlcmVudHMob2JqZWN0KWBgIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aGUKICAgb2JqZWN0cyByZWZlcmVuY2VkIGJ5ICpvYmplY3QqLgogCiAqIFRoZSA6bW9kOmBnZXRvcHRgIG1vZHVsZSBnYWluZWQgYSBuZXcgZnVuY3Rpb24sIDpmdW5jOmBnbnVfZ2V0b3B0YCwgdGhhdApAQCAtMTM0Nyw4ICsxMzQ3LDggQEAKICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBUd28gbmV3IGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlLCA6ZnVuYzpgZGVncmVlcyhyYWRzKWAgYW5kCi0gIDpmdW5jOmByYWRpYW5zKGRlZ3MpYCwgY29udmVydCBiZXR3ZWVuIHJhZGlhbnMgYW5kIGRlZ3JlZXMuICBPdGhlciBmdW5jdGlvbnMgaW4KKyogVHdvIG5ldyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSwgYGBkZWdyZWVzKHJhZHMpYGAgYW5kCisgIGBgcmFkaWFucyhkZWdzKWBgLCBjb252ZXJ0IGJldHdlZW4gcmFkaWFucyBhbmQgZGVncmVlcy4gIE90aGVyIGZ1bmN0aW9ucyBpbgogICB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlIHN1Y2ggYXMgOmZ1bmM6YG1hdGguc2luYCBhbmQgOmZ1bmM6YG1hdGguY29zYCBoYXZlIGFsd2F5cwogICByZXF1aXJlZCBpbnB1dCB2YWx1ZXMgbWVhc3VyZWQgaW4gcmFkaWFucy4gIEFsc28sIGFuIG9wdGlvbmFsICpiYXNlKiBhcmd1bWVudAogICB3YXMgYWRkZWQgdG8gOmZ1bmM6YG1hdGgubG9nYCB0byBtYWtlIGl0IGVhc2llciB0byBjb21wdXRlIGxvZ2FyaXRobXMgZm9yIGJhc2VzCkBAIC0xNDA1LDcgKzE0MDUsNyBAQAogICBhbmQgdGhlcmVmb3JlIGZhc3RlciBwZXJmb3JtYW5jZS4gIFNldHRpbmcgdGhlIHBhcnNlciBvYmplY3QncwogICA6YXR0cjpgYnVmZmVyX3RleHRgIGF0dHJpYnV0ZSB0byA6Y29uc3Q6YFRydWVgIHdpbGwgZW5hYmxlIGJ1ZmZlcmluZy4KIAotKiBUaGUgOmZ1bmM6YHNhbXBsZShwb3B1bGF0aW9uLCBrKWAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmByYW5kb21gCisqIFRoZSBgYHNhbXBsZShwb3B1bGF0aW9uLCBrKWBgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgcmFuZG9tYAogICBtb2R1bGUuICAqcG9wdWxhdGlvbiogaXMgYSBzZXF1ZW5jZSBvciA6Y2xhc3M6YHhyYW5nZWAgb2JqZWN0IGNvbnRhaW5pbmcgdGhlCiAgIGVsZW1lbnRzIG9mIGEgcG9wdWxhdGlvbiwgYW5kIDpmdW5jOmBzYW1wbGVgIGNob29zZXMgKmsqIGVsZW1lbnRzIGZyb20gdGhlCiAgIHBvcHVsYXRpb24gd2l0aG91dCByZXBsYWNpbmcgY2hvc2VuIGVsZW1lbnRzLiAgKmsqIGNhbiBiZSBhbnkgdmFsdWUgdXAgdG8KQEAgLTE0NTEsNyArMTQ1MSw3IEBACiAgIGVuY3J5cHRpb24gaXMgbm90IGJlbGlldmVkIHRvIGJlIHNlY3VyZS4gIElmIHlvdSBuZWVkIGVuY3J5cHRpb24sIHVzZSBvbmUgb2YgdGhlCiAgIHNldmVyYWwgQUVTIFB5dGhvbiBtb2R1bGVzIHRoYXQgYXJlIGF2YWlsYWJsZSBzZXBhcmF0ZWx5LgogCi0qIFRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZSBnYWluZWQgYSA6ZnVuYzpgbW92ZShzcmMsIGRlc3QpYCBmdW5jdGlvbiB0aGF0CisqIFRoZSA6bW9kOmBzaHV0aWxgIG1vZHVsZSBnYWluZWQgYSBgYG1vdmUoc3JjLCBkZXN0KWBgIGZ1bmN0aW9uIHRoYXQKICAgcmVjdXJzaXZlbHkgbW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhIG5ldyBsb2NhdGlvbi4KIAogKiBTdXBwb3J0IGZvciBtb3JlIGFkdmFuY2VkIFBPU0lYIHNpZ25hbCBoYW5kbGluZyB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHNpZ25hbGAKQEAgLTE0NTksNyArMTQ1OSw3IEBACiAgIHBsYXRmb3Jtcy4KIAogKiBUaGUgOm1vZDpgc29ja2V0YCBtb2R1bGUgbm93IHN1cHBvcnRzIHRpbWVvdXRzLiAgWW91IGNhbiBjYWxsIHRoZQotICA6bWV0aDpgc2V0dGltZW91dCh0KWAgbWV0aG9kIG9uIGEgc29ja2V0IG9iamVjdCB0byBzZXQgYSB0aW1lb3V0IG9mICp0KiBzZWNvbmRzLgorICBgYHNldHRpbWVvdXQodClgYCBtZXRob2Qgb24gYSBzb2NrZXQgb2JqZWN0IHRvIHNldCBhIHRpbWVvdXQgb2YgKnQqIHNlY29uZHMuCiAgIFN1YnNlcXVlbnQgc29ja2V0IG9wZXJhdGlvbnMgdGhhdCB0YWtlIGxvbmdlciB0aGFuICp0KiBzZWNvbmRzIHRvIGNvbXBsZXRlIHdpbGwKICAgYWJvcnQgYW5kIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIGV4Y2VwdGlvbi4KIApAQCAtMTQ4MCw5ICsxNDgwLDkgQEAKICAgOnByb2dyYW06YHRhcmBcIC1mb3JtYXQgYXJjaGl2ZSBmaWxlcy4gKENvbnRyaWJ1dGVkIGJ5IExhcnMgR3VzdMOkYmVsLikKIAogKiBUaGUgbmV3IDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgY29udGFpbnMgZnVuY3Rpb25zIGZvciB3cmFwcGluZyBzdHJpbmdzCi0gIGNvbnRhaW5pbmcgcGFyYWdyYXBocyBvZiB0ZXh0LiAgVGhlIDpmdW5jOmB3cmFwKHRleHQsIHdpZHRoKWAgZnVuY3Rpb24gdGFrZXMgYQorICBjb250YWluaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4gIFRoZSBgYHdyYXAodGV4dCwgd2lkdGgpYGAgZnVuY3Rpb24gdGFrZXMgYQogICBzdHJpbmcgYW5kIHJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIHRleHQgc3BsaXQgaW50byBsaW5lcyBvZiBubyBtb3JlIHRoYW4KLSAgdGhlIGNob3NlbiB3aWR0aC4gIFRoZSA6ZnVuYzpgZmlsbCh0ZXh0LCB3aWR0aClgIGZ1bmN0aW9uIHJldHVybnMgYSBzaW5nbGUKKyAgdGhlIGNob3NlbiB3aWR0aC4gIFRoZSBgYGZpbGwodGV4dCwgd2lkdGgpYGAgZnVuY3Rpb24gcmV0dXJucyBhIHNpbmdsZQogICBzdHJpbmcsIHJlZm9ybWF0dGVkIHRvIGZpdCBpbnRvIGxpbmVzIG5vIGxvbmdlciB0aGFuIHRoZSBjaG9zZW4gd2lkdGguIChBcyB5b3UKICAgY2FuIGd1ZXNzLCA6ZnVuYzpgZmlsbGAgaXMgYnVpbHQgb24gdG9wIG9mIDpmdW5jOmB3cmFwYC4gIEZvciBleGFtcGxlOjoKIApAQCAtMTkwMyw3ICsxOTAzLDcgQEAKICAgc2hvcnQgaW50YCwgIGBgSWBgIGZvciA6Yzp0eXBlOmB1bnNpZ25lZCBpbnRgLCAgYW5kIGBgS2BgIGZvciA6Yzp0eXBlOmB1bnNpZ25lZAogICBsb25nIGxvbmdgLgogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeU9iamVjdF9EZWxJdGVtU3RyaW5nKG1hcHBpbmcsIGNoYXIgXCprZXkpYCB3YXMgYWRkZWQKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlPYmplY3RfRGVsSXRlbVN0cmluZyhtYXBwaW5nLCBjaGFyICprZXkpYGAgd2FzIGFkZGVkCiAgIGFzIHNob3J0aGFuZCBmb3IgYGBQeU9iamVjdF9EZWxJdGVtKG1hcHBpbmcsIFB5U3RyaW5nX05ldyhrZXkpKWBgLgogCiAqIEZpbGUgb2JqZWN0cyBub3cgbWFuYWdlIHRoZWlyIGludGVybmFsIHN0cmluZyBidWZmZXIgZGlmZmVyZW50bHksIGluY3JlYXNpbmcKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjQucnN0IGIvRG9jL3doYXRzbmV3LzIuNC5yc3QKaW5kZXggOWQzMzlhNS4uNWEyOGY4OSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuNC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuNC5yc3QKQEAgLTM3LDcgKzM3LDcgQEAKIAogUHl0aG9uIDIuMyBpbnRyb2R1Y2VkIHRoZSA6bW9kOmBzZXRzYCBtb2R1bGUuICBDIGltcGxlbWVudGF0aW9ucyBvZiBzZXQgZGF0YQogdHlwZXMgaGF2ZSBub3cgYmVlbiBhZGRlZCB0byB0aGUgUHl0aG9uIGNvcmUgYXMgdHdvIG5ldyBidWlsdC1pbiB0eXBlcywKLTpmdW5jOmBzZXQoaXRlcmFibGUpYCBhbmQgOmZ1bmM6YGZyb3plbnNldChpdGVyYWJsZSlgLiAgVGhleSBwcm92aWRlIGhpZ2ggc3BlZWQKK2Bgc2V0KGl0ZXJhYmxlKWBgIGFuZCBgYGZyb3plbnNldChpdGVyYWJsZSlgYC4gIFRoZXkgcHJvdmlkZSBoaWdoIHNwZWVkCiBvcGVyYXRpb25zIGZvciBtZW1iZXJzaGlwIHRlc3RpbmcsIGZvciBlbGltaW5hdGluZyBkdXBsaWNhdGVzIGZyb20gc2VxdWVuY2VzLAogYW5kIGZvciBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBsaWtlIHVuaW9ucywgaW50ZXJzZWN0aW9ucywgZGlmZmVyZW5jZXMsIGFuZAogc3ltbWV0cmljIGRpZmZlcmVuY2VzLiA6OgpAQCAtMzQ2LDcgKzM0Niw3IEBACiBQRVAgMzIyOiBSZXZlcnNlIEl0ZXJhdGlvbgogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmByZXZlcnNlZChzZXEpYCwgdGFrZXMgYSBzZXF1ZW5jZSBhbmQgcmV0dXJucyBhbgorQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgcmV2ZXJzZWQoc2VxKWBgLCB0YWtlcyBhIHNlcXVlbmNlIGFuZCByZXR1cm5zIGFuCiBpdGVyYXRvciB0aGF0IGxvb3BzIG92ZXIgdGhlIGVsZW1lbnRzIG9mIHRoZSBzZXF1ZW5jZSAgaW4gcmV2ZXJzZSBvcmRlci4gICA6OgogCiAgICA+Pj4gZm9yIGkgaW4gcmV2ZXJzZWQoeHJhbmdlKDEsNCkpOgpAQCAtMzg0LDcgKzM4NCw3IEBACiAKIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IHByb3ZpZGVzIGEgbnVtYmVyIG9mIHdheXMgdG8gZXhlY3V0ZSBhIHN1YnByb2Nlc3MsIG9mZmVyaW5nCiBkaWZmZXJlbnQgZmVhdHVyZXMgYW5kIGRpZmZlcmVudCBsZXZlbHMgb2YgY29tcGxleGl0eS4KLTpmdW5jOmBvcy5zeXN0ZW0oY29tbWFuZClgIGlzIGVhc3kgdG8gdXNlLCBidXQgc2xvdyAoaXQgcnVucyBhIHNoZWxsIHByb2Nlc3MKK2Bgb3Muc3lzdGVtKGNvbW1hbmQpYGAgaXMgZWFzeSB0byB1c2UsIGJ1dCBzbG93IChpdCBydW5zIGEgc2hlbGwgcHJvY2Vzcwogd2hpY2ggZXhlY3V0ZXMgdGhlIGNvbW1hbmQpIGFuZCBkYW5nZXJvdXMgKHlvdSBoYXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQgZXNjYXBpbmcKIHRoZSBzaGVsbCdzIG1ldGFjaGFyYWN0ZXJzKS4gIFRoZSA6bW9kOmBwb3BlbjJgIG1vZHVsZSBvZmZlcnMgY2xhc3NlcyB0aGF0IGNhbgogY2FwdHVyZSBzdGFuZGFyZCBvdXRwdXQgYW5kIHN0YW5kYXJkIGVycm9yIGZyb20gdGhlIHN1YnByb2Nlc3MsIGJ1dCB0aGUgbmFtaW5nCkBAIC00MzEsOCArNDMxLDggQEAKIAogT25jZSB5b3UndmUgY3JlYXRlZCB0aGUgOmNsYXNzOmBQb3BlbmAgaW5zdGFuY2UsICB5b3UgY2FuIGNhbGwgaXRzIDptZXRoOmB3YWl0YAogbWV0aG9kIHRvIHBhdXNlIHVudGlsIHRoZSBzdWJwcm9jZXNzIGhhcyBleGl0ZWQsIDptZXRoOmBwb2xsYCB0byBjaGVjayBpZiBpdCdzCi1leGl0ZWQgd2l0aG91dCBwYXVzaW5nLCAgb3IgOm1ldGg6YGNvbW11bmljYXRlKGRhdGEpYCB0byBzZW5kIHRoZSBzdHJpbmcgKmRhdGEqCi10byB0aGUgc3VicHJvY2VzcydzIHN0YW5kYXJkIGlucHV0LiAgIDptZXRoOmBjb21tdW5pY2F0ZShkYXRhKWAgIHRoZW4gcmVhZHMgYW55CitleGl0ZWQgd2l0aG91dCBwYXVzaW5nLCAgb3IgYGBjb21tdW5pY2F0ZShkYXRhKWBgIHRvIHNlbmQgdGhlIHN0cmluZyAqZGF0YSoKK3RvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RhbmRhcmQgaW5wdXQuICAgYGBjb21tdW5pY2F0ZShkYXRhKWBgICB0aGVuIHJlYWRzIGFueQogZGF0YSB0aGF0IHRoZSBzdWJwcm9jZXNzIGhhcyBzZW50IHRvIGl0cyBzdGFuZGFyZCBvdXRwdXQgIG9yIHN0YW5kYXJkIGVycm9yLAogcmV0dXJuaW5nIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgogCkBAIC03NDksMTAgKzc0OSwxMCBAQAogVGhlIHNvbHV0aW9uIGRlc2NyaWJlZCBpbiB0aGUgUEVQIGlzIHRvIGFkZCB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIHRoZSBQeXRob24KIEFQSSB0aGF0IHBlcmZvcm0gQVNDSUktb25seSBjb252ZXJzaW9ucywgaWdub3JpbmcgdGhlIGxvY2FsZSBzZXR0aW5nOgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWAgIGFuZCA6YzpmdW5jOmBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYAorKiBgYFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWBgICBhbmQgYGBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYGAKICAgYm90aCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgQyA6Yzp0eXBlOmBkb3VibGVgLgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfZm9ybWF0ZChidWZmZXIsIGJ1Zl9sZW4sIGZvcm1hdCwgZClgIGNvbnZlcnRzIGEKKyogYGBQeU9TX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCBidWZfbGVuLCBmb3JtYXQsIGQpYGAgY29udmVydHMgYQogICA6Yzp0eXBlOmBkb3VibGVgIHRvIGFuIEFTQ0lJIHN0cmluZy4KIAogVGhlIGNvZGUgZm9yIHRoZXNlIGZ1bmN0aW9ucyBjYW1lIGZyb20gdGhlIEdMaWIgbGlicmFyeQpAQCAtNzc4LDcgKzc3OCw3IEBACiAqIERlY29yYXRvcnMgZm9yIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB3ZXJlIGFkZGVkICg6cGVwOmAzMThgKS4KIAogKiBCdWlsdC1pbiA6ZnVuYzpgc2V0YCBhbmQgOmZ1bmM6YGZyb3plbnNldGAgdHlwZXMgd2VyZSAgYWRkZWQgKDpwZXA6YDIxOGApLgotICBPdGhlciBuZXcgYnVpbHQtaW5zIGluY2x1ZGUgdGhlIDpmdW5jOmByZXZlcnNlZChzZXEpYCBmdW5jdGlvbiAoOnBlcDpgMzIyYCkuCisgIE90aGVyIG5ldyBidWlsdC1pbnMgaW5jbHVkZSB0aGUgYGByZXZlcnNlZChzZXEpYGAgZnVuY3Rpb24gKDpwZXA6YDMyMmApLgogCiAqIEdlbmVyYXRvciBleHByZXNzaW9ucyB3ZXJlIGFkZGVkICg6cGVwOmAyODlgKS4KIApAQCAtODU3LDcgKzg1Nyw3IEBACiAKICAgKEFsbCBjaGFuZ2VzIHRvIDptZXRoOmBzb3J0YCBjb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKLSogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YHNvcnRlZChpdGVyYWJsZSlgIHRoYXQgd29ya3MgbGlrZSB0aGUKKyogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gYGBzb3J0ZWQoaXRlcmFibGUpYGAgdGhhdCB3b3JrcyBsaWtlIHRoZQogICBpbi1wbGFjZSA6bWV0aDpgbGlzdC5zb3J0YCBtZXRob2QgYnV0IGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zLiAgVGhlCiAgIGRpZmZlcmVuY2VzIGFyZToKIApAQCAtODk4LDggKzg5OCw4IEBACiAgIEZvciBleGFtcGxlLCAgeW91IGNhbiBub3cgcnVuIHRoZSBQeXRob24gcHJvZmlsZXIgd2l0aCBgYHB5dGhvbiAtbSBwcm9maWxlYGAuCiAgIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4uKQogCi0qIFRoZSA6ZnVuYzpgZXZhbChleHByLCBnbG9iYWxzLCBsb2NhbHMpYCBhbmQgOmZ1bmM6YGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAotICBsb2NhbHMpYCBmdW5jdGlvbnMgYW5kIHRoZSBgYGV4ZWNgYCBzdGF0ZW1lbnQgbm93IGFjY2VwdCBhbnkgbWFwcGluZyB0eXBlCisqIFRoZSBgYGV2YWwoZXhwciwgZ2xvYmFscywgbG9jYWxzKWBgIGFuZCBgYGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAorICBsb2NhbHMpYGAgZnVuY3Rpb25zIGFuZCB0aGUgYGBleGVjYGAgc3RhdGVtZW50IG5vdyBhY2NlcHQgYW55IG1hcHBpbmcgdHlwZQogICBmb3IgdGhlICpsb2NhbHMqIHBhcmFtZXRlci4gIFByZXZpb3VzbHkgdGhpcyBoYWQgdG8gYmUgYSByZWd1bGFyIFB5dGhvbgogICBkaWN0aW9uYXJ5LiAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApAQCAtMTA5MCw3ICsxMDkwLDcgQEAKICAgWXZlcyBEaW9ubmUpIGFuZCBuZXcgOm1ldGg6YGRlbGV0ZWFjbGAgYW5kIDptZXRoOmBteXJpZ2h0c2AgbWV0aG9kcyAoY29udHJpYnV0ZWQKICAgYnkgQXJuYXVkIE1hemluKS4KIAotKiBUaGUgOm1vZDpgaXRlcnRvb2xzYCBtb2R1bGUgZ2FpbmVkIGEgOmZ1bmM6YGdyb3VwYnkoaXRlcmFibGVbLCAqZnVuYypdKWAKKyogVGhlIDptb2Q6YGl0ZXJ0b29sc2AgbW9kdWxlIGdhaW5lZCBhIGBgZ3JvdXBieShpdGVyYWJsZVssICpmdW5jKl0pYGAKICAgZnVuY3Rpb24uICppdGVyYWJsZSogaXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8gcmV0dXJuIGEgc3RyZWFtCiAgIG9mIGVsZW1lbnRzLCBhbmQgdGhlIG9wdGlvbmFsICpmdW5jKiBwYXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFuCiAgIGVsZW1lbnQgYW5kIHJldHVybnMgYSBrZXkgdmFsdWU7IGlmIG9taXR0ZWQsIHRoZSBrZXkgaXMgc2ltcGx5IHRoZSBlbGVtZW50CkBAIC0xMTM5LDcgKzExMzksNyBAQAogCiAgIChDb250cmlidXRlZCBieSBIeWUtU2hpayBDaGFuZy4pCiAKLSogOm1vZDpgaXRlcnRvb2xzYCBhbHNvIGdhaW5lZCBhIGZ1bmN0aW9uIG5hbWVkIDpmdW5jOmB0ZWUoaXRlcmF0b3IsIE4pYCB0aGF0CisqIDptb2Q6YGl0ZXJ0b29sc2AgYWxzbyBnYWluZWQgYSBmdW5jdGlvbiBuYW1lZCBgYHRlZShpdGVyYXRvciwgTilgYCB0aGF0CiAgIHJldHVybnMgKk4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyB0aGF0IHJlcGxpY2F0ZSAqaXRlcmF0b3IqLiAgSWYgKk4qIGlzIG9taXR0ZWQsCiAgIHRoZSBkZWZhdWx0IGlzIDIuIDo6CiAKQEAgLTExNzcsNyArMTE3Nyw3IEBACiAgICAgICAgICBsZXZlbD0wLCAgIyBMb2cgYWxsIG1lc3NhZ2VzCiAgICAgICAgICBmb3JtYXQ9JyUobGV2ZWxuYW1lKTolKHByb2Nlc3MpOiUodGhyZWFkKTolKG1lc3NhZ2UpJykKIAotICBPdGhlciBhZGRpdGlvbnMgdG8gdGhlIDptb2Q6YGxvZ2dpbmdgIHBhY2thZ2UgaW5jbHVkZSBhIDptZXRoOmBsb2cobGV2ZWwsIG1zZylgCisgIE90aGVyIGFkZGl0aW9ucyB0byB0aGUgOm1vZDpgbG9nZ2luZ2AgcGFja2FnZSBpbmNsdWRlIGEgYGBsb2cobGV2ZWwsIG1zZylgYAogICBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHdlbGwgYXMgYSA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAgY2xhc3MgdGhhdAogICByb3RhdGVzIGl0cyBsb2cgZmlsZXMgYXQgYSB0aW1lZCBpbnRlcnZhbC4gIFRoZSBtb2R1bGUgYWxyZWFkeSBoYWQKICAgOmNsYXNzOmBSb3RhdGluZ0ZpbGVIYW5kbGVyYCwgd2hpY2ggcm90YXRlZCBsb2dzIG9uY2UgdGhlIGZpbGUgZXhjZWVkZWQgYQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAKICAgZ3JvdXAgb3IgZm9yIGEgcmFuZ2Ugb2YgZ3JvdXBzLiAoQ29udHJpYnV0ZWQgYnkgSsO8cmdlbiBBLiBFcmhhcmQuKQogCiAqIFR3byBuZXcgZnVuY3Rpb25zIHdlcmUgYWRkZWQgdG8gdGhlIDptb2Q6YG9wZXJhdG9yYCBtb2R1bGUsCi0gIDpmdW5jOmBhdHRyZ2V0dGVyKGF0dHIpYCBhbmQgOmZ1bmM6YGl0ZW1nZXR0ZXIoaW5kZXgpYC4gQm90aCBmdW5jdGlvbnMgcmV0dXJuCisgIGBgYXR0cmdldHRlcihhdHRyKWBgIGFuZCBgYGl0ZW1nZXR0ZXIoaW5kZXgpYGAuIEJvdGggZnVuY3Rpb25zIHJldHVybgogICBjYWxsYWJsZXMgdGhhdCB0YWtlIGEgc2luZ2xlIGFyZ3VtZW50IGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIG9yCiAgIGl0ZW07IHRoZXNlIGNhbGxhYmxlcyBtYWtlIGV4Y2VsbGVudCBkYXRhIGV4dHJhY3RvcnMgd2hlbiB1c2VkIHdpdGggOmZ1bmM6YG1hcGAKICAgb3IgOmZ1bmM6YHNvcnRlZGAuICBGb3IgZXhhbXBsZTo6CkBAIC0xMjIzLDE0ICsxMjIzLDE0IEBACiAgIHJlcGxhY2VtZW50IGZvciA6ZnVuYzpgcmZjODIyLmZvcm1hdGRhdGVgLiAgWW91IG1heSB3YW50IHRvIHdyaXRlIG5ldyBlLW1haWwKICAgcHJvY2Vzc2luZyBjb2RlIHdpdGggdGhpcyBpbiBtaW5kLiAgKENoYW5nZSBpbXBsZW1lbnRlZCBieSBBbnRob255IEJheHRlci4pCiAKLSogQSBuZXcgOmZ1bmM6YHVyYW5kb20obilgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgb3NgIG1vZHVsZSwgcmV0dXJuaW5nCisqIEEgbmV3IGBgdXJhbmRvbShuKWBgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgb3NgIG1vZHVsZSwgcmV0dXJuaW5nCiAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgKm4qIGJ5dGVzIG9mIHJhbmRvbSBkYXRhLiAgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8KICAgcGxhdGZvcm0tc3BlY2lmaWMgc291cmNlcyBvZiByYW5kb21uZXNzIHN1Y2ggYXMgOmZpbGU6YC9kZXYvdXJhbmRvbWAgb24gTGludXggb3IKICAgdGhlIFdpbmRvd3MgQ3J5cHRvQVBJLiAgKENvbnRyaWJ1dGVkIGJ5IFRyZXZvciBQZXJyaW4uKQogCi0qIEFub3RoZXIgbmV3IGZ1bmN0aW9uOiA6ZnVuYzpgb3MucGF0aC5sZXhpc3RzKHBhdGgpYCAgcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlCisqIEFub3RoZXIgbmV3IGZ1bmN0aW9uOiBgYG9zLnBhdGgubGV4aXN0cyhwYXRoKWBgICByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUKICAgc3BlY2lmaWVkIGJ5ICpwYXRoKiBleGlzdHMsIHdoZXRoZXIgb3Igbm90IGl0J3MgYSBzeW1ib2xpYyBsaW5rLiAgVGhpcyBkaWZmZXJzCi0gIGZyb20gdGhlIGV4aXN0aW5nIDpmdW5jOmBvcy5wYXRoLmV4aXN0cyhwYXRoKWAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgZmFsc2UgaWYKKyAgZnJvbSB0aGUgZXhpc3RpbmcgYGBvcy5wYXRoLmV4aXN0cyhwYXRoKWBgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGZhbHNlIGlmCiAgICpwYXRoKiBpcyBhIHN5bWxpbmsgdGhhdCBwb2ludHMgdG8gYSBkZXN0aW5hdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QuCiAgIChDb250cmlidXRlZCBieSBCZW5pIENoZXJuaWF2c2t5LikKIApAQCAtMTI0Myw3ICsxMjQzLDcgQEAKICogVGhlIDptb2Q6YHByb2ZpbGVgIG1vZHVsZSBjYW4gbm93IHByb2ZpbGUgQyBleHRlbnNpb24gZnVuY3Rpb25zLiAoQ29udHJpYnV0ZWQKICAgYnkgTmljayBCYXN0aW4uKQogCi0qIFRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBoYXMgYSBuZXcgbWV0aG9kIGNhbGxlZCA6bWV0aDpgZ2V0cmFuZGJpdHMoTilgIHRoYXQKKyogVGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlIGhhcyBhIG5ldyBtZXRob2QgY2FsbGVkIGBgZ2V0cmFuZGJpdHMoTilgYCB0aGF0CiAgIHJldHVybnMgYSBsb25nIGludGVnZXIgKk4qIGJpdHMgaW4gbGVuZ3RoLiAgVGhlIGV4aXN0aW5nIDptZXRoOmByYW5kcmFuZ2VgCiAgIG1ldGhvZCBub3cgdXNlcyA6bWV0aDpgZ2V0cmFuZGJpdHNgIHdoZXJlIGFwcHJvcHJpYXRlLCBtYWtpbmcgZ2VuZXJhdGlvbiBvZgogICBhcmJpdHJhcmlseSBsYXJnZSByYW5kb20gbnVtYmVycyBtb3JlIGVmZmljaWVudC4gIChDb250cmlidXRlZCBieSBSYXltb25kCkBAIC0xMjcyLDcgKzEyNzIsNyBAQAogICB0aGlzLCBidXQgMi40IHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGV4Y2VwdGlvbi4KIAogKiBUd28gbmV3IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZS4gOmZ1bmM6YHNvY2tldHBhaXJgCi0gIHJldHVybnMgYSBwYWlyIG9mIGNvbm5lY3RlZCBzb2NrZXRzIGFuZCA6ZnVuYzpgZ2V0c2VydmJ5cG9ydChwb3J0KWAgbG9va3MgdXAgdGhlCisgIHJldHVybnMgYSBwYWlyIG9mIGNvbm5lY3RlZCBzb2NrZXRzIGFuZCBgYGdldHNlcnZieXBvcnQocG9ydClgYCBsb29rcyB1cCB0aGUKICAgc2VydmljZSBuYW1lIGZvciBhIGdpdmVuIHBvcnQgbnVtYmVyLiAoQ29udHJpYnV0ZWQgYnkgRGF2ZSBDb2xlIGFuZCBCYXJyeQogICBXYXJzYXcuKQogCkBAIC0xNDU0LDExICsxNDU0LDExIEBACiAqIEFub3RoZXIgbmV3IG1hY3JvLCA6YzptYWNybzpgUHlfQ0xFQVIob2JqKWAsICBkZWNyZWFzZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZgogICAqb2JqKiBhbmQgc2V0cyAqb2JqKiB0byB0aGUgbnVsbCBwb2ludGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEppbSBGdWx0b24uKQogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeVR1cGxlX1BhY2soTiwgb2JqMSwgb2JqMiwgLi4uLCBvYmpOKWAsIGNvbnN0cnVjdHMKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlUdXBsZV9QYWNrKE4sIG9iajEsIG9iajIsIC4uLiwgb2JqTilgYCwgY29uc3RydWN0cwogICB0dXBsZXMgZnJvbSBhIHZhcmlhYmxlIGxlbmd0aCBhcmd1bWVudCBsaXN0IG9mIFB5dGhvbiBvYmplY3RzLiAgKENvbnRyaWJ1dGVkIGJ5CiAgIFJheW1vbmQgSGV0dGluZ2VyLikKIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlEaWN0X0NvbnRhaW5zKGQsIGspYCwgaW1wbGVtZW50cyBmYXN0IGRpY3Rpb25hcnkKKyogQSBuZXcgZnVuY3Rpb24sIGBgUHlEaWN0X0NvbnRhaW5zKGQsIGspYGAsIGltcGxlbWVudHMgZmFzdCBkaWN0aW9uYXJ5CiAgIGxvb2t1cHMgd2l0aG91dCBtYXNraW5nIGV4Y2VwdGlvbnMgcmFpc2VkIGR1cmluZyB0aGUgbG9vay11cCBwcm9jZXNzLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi41LnJzdCBiL0RvYy93aGF0c25ldy8yLjUucnN0CmluZGV4IGUwNTljZDUuLmI5MWU2NDcgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjUucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjUucnN0CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgICAgcG9wdXBfbWVudS5hcHBlbmQoICgiT3BlbiIsIG9wZW5fZnVuYywgMSkgKQogCiBBbm90aGVyIGZ1bmN0aW9uIGluIHRoZSA6bW9kOmBmdW5jdG9vbHNgIG1vZHVsZSBpcyB0aGUKLTpmdW5jOmB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB3cmFwcGVkKWAgZnVuY3Rpb24gdGhhdCBoZWxwcyB5b3Ugd3JpdGUgd2VsbC0KK2BgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgd3JhcHBlZClgYCBmdW5jdGlvbiB0aGF0IGhlbHBzIHlvdSB3cml0ZSB3ZWxsLQogYmVoYXZlZCBkZWNvcmF0b3JzLiAgOmZ1bmM6YHVwZGF0ZV93cmFwcGVyYCBjb3BpZXMgdGhlIG5hbWUsIG1vZHVsZSwgYW5kCiBkb2NzdHJpbmcgYXR0cmlidXRlIHRvIGEgd3JhcHBlciBmdW5jdGlvbiBzbyB0aGF0IHRyYWNlYmFja3MgaW5zaWRlIHRoZSB3cmFwcGVkCiBmdW5jdGlvbiBhcmUgZWFzaWVyIHRvIHVuZGVyc3RhbmQuICBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHdyaXRlOjoKQEAgLTQ1NCw3ICs0NTQsNyBAQAogYGB2YWwgPSB5aWVsZCBpYGAgYnV0IGhhdmUgdG8gdXNlIHBhcmVudGhlc2VzIHdoZW4gdGhlcmUncyBhbiBvcGVyYXRpb24sIGFzIGluCiBgYHZhbCA9ICh5aWVsZCBpKSArIDEyYGAuKQogCi1WYWx1ZXMgYXJlIHNlbnQgaW50byBhIGdlbmVyYXRvciBieSBjYWxsaW5nIGl0cyA6bWV0aDpgc2VuZCh2YWx1ZSlgIG1ldGhvZC4gIFRoZQorVmFsdWVzIGFyZSBzZW50IGludG8gYSBnZW5lcmF0b3IgYnkgY2FsbGluZyBpdHMgYGBzZW5kKHZhbHVlKWBgIG1ldGhvZC4gIFRoZQogZ2VuZXJhdG9yJ3MgY29kZSBpcyB0aGVuIHJlc3VtZWQgYW5kIHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gcmV0dXJucyB0aGUKIHNwZWNpZmllZCAqdmFsdWUqLiAgSWYgdGhlIHJlZ3VsYXIgOm1ldGg6YG5leHRgIG1ldGhvZCBpcyBjYWxsZWQsIHRoZQogOmtleXdvcmQ6YHlpZWxkYCByZXR1cm5zIDpjb25zdDpgTm9uZWAuCkBAIC00OTYsNyArNDk2LDcgQEAKIAogSW4gYWRkaXRpb24gdG8gOm1ldGg6YHNlbmRgLCB0aGVyZSBhcmUgdHdvIG90aGVyIG5ldyBtZXRob2RzIG9uIGdlbmVyYXRvcnM6CiAKLSogOm1ldGg6YHRocm93KHR5cGUsIHZhbHVlPU5vbmUsIHRyYWNlYmFjaz1Ob25lKWAgaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KKyogYGB0aHJvdyh0eXBlLCB2YWx1ZT1Ob25lLCB0cmFjZWJhY2s9Tm9uZSlgYCBpcyB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbgogICBpbnNpZGUgdGhlIGdlbmVyYXRvcjsgdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQgYnkgdGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbgogICB3aGVyZSB0aGUgZ2VuZXJhdG9yJ3MgZXhlY3V0aW9uIGlzIHBhdXNlZC4KIApAQCAtNjYwLDcgKzY2MCw3IEBACiAKICogVGhlIGNvZGUgaW4gKkJMT0NLKiBpcyBleGVjdXRlZC4KIAotKiBJZiAqQkxPQ0sqIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSA6bWV0aDpgX19leGl0X18odHlwZSwgdmFsdWUsIHRyYWNlYmFjaylgCisqIElmICpCTE9DSyogcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGBgX19leGl0X18odHlwZSwgdmFsdWUsIHRyYWNlYmFjaylgYAogICBpcyBjYWxsZWQgd2l0aCB0aGUgZXhjZXB0aW9uIGRldGFpbHMsIHRoZSBzYW1lIHZhbHVlcyByZXR1cm5lZCBieQogICA6ZnVuYzpgc3lzLmV4Y19pbmZvYC4gIFRoZSBtZXRob2QncyByZXR1cm4gdmFsdWUgY29udHJvbHMgd2hldGhlciB0aGUgZXhjZXB0aW9uCiAgIGlzIHJlLXJhaXNlZDogYW55IGZhbHNlIHZhbHVlIHJlLXJhaXNlcyB0aGUgZXhjZXB0aW9uLCBhbmQgYGBUcnVlYGAgd2lsbCByZXN1bHQKQEAgLTc3Myw3ICs3NzMsNyBAQAogICAgd2l0aCBkYl90cmFuc2FjdGlvbihkYikgYXMgY3Vyc29yOgogICAgICAgIC4uLgogCi1UaGUgOm1vZDpgY29udGV4dGxpYmAgbW9kdWxlIGFsc28gaGFzIGEgOmZ1bmM6YG5lc3RlZChtZ3IxLCBtZ3IyLCAuLi4pYCBmdW5jdGlvbgorVGhlIDptb2Q6YGNvbnRleHRsaWJgIG1vZHVsZSBhbHNvIGhhcyBhIGBgbmVzdGVkKG1ncjEsIG1ncjIsIC4uLilgYCBmdW5jdGlvbgogdGhhdCBjb21iaW5lcyBhIG51bWJlciBvZiBjb250ZXh0IG1hbmFnZXJzIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdyaXRlIG5lc3RlZAogJzprZXl3b3JkOmB3aXRoYCcgc3RhdGVtZW50cy4gIEluIHRoaXMgZXhhbXBsZSwgdGhlIHNpbmdsZSAnOmtleXdvcmQ6YHdpdGhgJwogc3RhdGVtZW50IGJvdGggc3RhcnRzIGEgZGF0YWJhc2UgdHJhbnNhY3Rpb24gYW5kIGFjcXVpcmVzIGEgdGhyZWFkIGxvY2s6OgpAQCAtNzgyLDcgKzc4Miw3IEBACiAgICB3aXRoIG5lc3RlZCAoZGJfdHJhbnNhY3Rpb24oZGIpLCBsb2NrKSBhcyAoY3Vyc29yLCBsb2NrZWQpOgogICAgICAgIC4uLgogCi1GaW5hbGx5LCB0aGUgOmZ1bmM6YGNsb3Npbmcob2JqZWN0KWAgZnVuY3Rpb24gcmV0dXJucyAqb2JqZWN0KiBzbyB0aGF0IGl0IGNhbiBiZQorRmluYWxseSwgdGhlIGBgY2xvc2luZyhvYmplY3QpYGAgZnVuY3Rpb24gcmV0dXJucyAqb2JqZWN0KiBzbyB0aGF0IGl0IGNhbiBiZQogYm91bmQgdG8gYSB2YXJpYWJsZSwgYW5kIGNhbGxzIGBgb2JqZWN0LmNsb3NlYGAgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2suIDo6CiAKICAgIGltcG9ydCB1cmxsaWIsIHN5cwpAQCAtOTU1LDcgKzk1NSw3IEBACiAKIEEgY29ycmVzcG9uZGluZyA6YXR0cjpgbmJfaW5kZXhgIHNsb3Qgd2FzIGFkZGVkIHRvIHRoZSBDLWxldmVsCiA6Yzp0eXBlOmBQeU51bWJlck1ldGhvZHNgIHN0cnVjdHVyZSB0byBsZXQgQyBleHRlbnNpb25zIGltcGxlbWVudCB0aGlzIHByb3RvY29sLgotOmM6ZnVuYzpgUHlOdW1iZXJfSW5kZXgob2JqKWAgY2FuIGJlIHVzZWQgaW4gZXh0ZW5zaW9uIGNvZGUgdG8gY2FsbCB0aGUKK2BgUHlOdW1iZXJfSW5kZXgob2JqKWBgIGNhbiBiZSB1c2VkIGluIGV4dGVuc2lvbiBjb2RlIHRvIGNhbGwgdGhlCiA6bWV0aDpgX19pbmRleF9fYCBmdW5jdGlvbiBhbmQgcmV0cmlldmUgaXRzIHJlc3VsdC4KIAogCkBAIC05NzYsNyArOTc2LDcgQEAKIAogKiBUaGUgOmNsYXNzOmBkaWN0YCB0eXBlIGhhcyBhIG5ldyBob29rIGZvciBsZXR0aW5nIHN1YmNsYXNzZXMgcHJvdmlkZSBhIGRlZmF1bHQKICAgdmFsdWUgd2hlbiBhIGtleSBpc24ndCBjb250YWluZWQgaW4gdGhlIGRpY3Rpb25hcnkuIFdoZW4gYSBrZXkgaXNuJ3QgZm91bmQsIHRoZQotICBkaWN0aW9uYXJ5J3MgOm1ldGg6YF9fbWlzc2luZ19fKGtleSlgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4gIFRoaXMgaG9vayBpcyB1c2VkCisgIGRpY3Rpb25hcnkncyBgYF9fbWlzc2luZ19fKGtleSlgYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuICBUaGlzIGhvb2sgaXMgdXNlZAogICB0byBpbXBsZW1lbnQgdGhlIG5ldyA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBjbGFzcyBpbiB0aGUgOm1vZDpgY29sbGVjdGlvbnNgCiAgIG1vZHVsZS4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgZGljdGlvbmFyeSAgdGhhdCByZXR1cm5zIHplcm8gZm9yIGFueQogICBtaXNzaW5nIGtleTo6CkBAIC05ODksMTYgKzk4OSwxNiBAQAogICAgICBwcmludCBkWzFdLCBkWzJdICAgIyBQcmludHMgMSwgMgogICAgICBwcmludCBkWzNdLCBkWzRdICAgIyBQcmludHMgMCwgMAogCi0qIEJvdGggOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5ncyBoYXZlIG5ldyA6bWV0aDpgcGFydGl0aW9uKHNlcClgICBhbmQKLSAgOm1ldGg6YHJwYXJ0aXRpb24oc2VwKWAgbWV0aG9kcyB0aGF0IHNpbXBsaWZ5IGEgY29tbW9uIHVzZSBjYXNlLgorKiBCb3RoIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgaGF2ZSBuZXcgYGBwYXJ0aXRpb24oc2VwKWBgICBhbmQKKyAgYGBycGFydGl0aW9uKHNlcClgYCBtZXRob2RzIHRoYXQgc2ltcGxpZnkgYSBjb21tb24gdXNlIGNhc2UuCiAKLSAgVGhlIDptZXRoOmBmaW5kKFMpYCBtZXRob2QgaXMgb2Z0ZW4gdXNlZCB0byBnZXQgYW4gaW5kZXggd2hpY2ggaXMgdGhlbiB1c2VkIHRvCisgIFRoZSBgYGZpbmQoUylgYCBtZXRob2QgaXMgb2Z0ZW4gdXNlZCB0byBnZXQgYW4gaW5kZXggd2hpY2ggaXMgdGhlbiB1c2VkIHRvCiAgIHNsaWNlIHRoZSBzdHJpbmcgYW5kIG9idGFpbiB0aGUgcGllY2VzIHRoYXQgYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4KLSAgOm1ldGg6YHBhcnRpdGlvbihzZXApYCBjb25kZW5zZXMgdGhpcyBwYXR0ZXJuIGludG8gYSBzaW5nbGUgbWV0aG9kIGNhbGwgdGhhdAorICBgYHBhcnRpdGlvbihzZXApYGAgY29uZGVuc2VzIHRoaXMgcGF0dGVybiBpbnRvIGEgc2luZ2xlIG1ldGhvZCBjYWxsIHRoYXQKICAgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3Vic3RyaW5nIGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCiAgIGl0c2VsZiwgYW5kIHRoZSBzdWJzdHJpbmcgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXNuJ3QgZm91bmQsCiAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSB0dXBsZSBpcyB0aGUgZW50aXJlIHN0cmluZyBhbmQgdGhlIG90aGVyIHR3byBlbGVtZW50cwotICBhcmUgZW1wdHkuICA6bWV0aDpgcnBhcnRpdGlvbihzZXApYCBhbHNvIHJldHVybnMgYSAzLXR1cGxlIGJ1dCBzdGFydHMgc2VhcmNoaW5nCisgIGFyZSBlbXB0eS4gIGBgcnBhcnRpdGlvbihzZXApYGAgYWxzbyByZXR1cm5zIGEgMy10dXBsZSBidXQgc3RhcnRzIHNlYXJjaGluZwogICBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZzsgdGhlIGBgcmBgIHN0YW5kcyBmb3IgJ3JldmVyc2UnLgogCiAgIFNvbWUgZXhhbXBsZXM6OgpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAKIAogICAuLiBQYXRjaCAxMzEzOTM5LCAxMzU5NjE4CiAKLSogVGhlIDpmdW5jOmBsb25nKHN0ciwgYmFzZSlgIGZ1bmN0aW9uIGlzIG5vdyBmYXN0ZXIgb24gbG9uZyBkaWdpdCBzdHJpbmdzCisqIFRoZSBgYGxvbmcoc3RyLCBiYXNlKWBgIGZ1bmN0aW9uIGlzIG5vdyBmYXN0ZXIgb24gbG9uZyBkaWdpdCBzdHJpbmdzCiAgIGJlY2F1c2UgZmV3ZXIgaW50ZXJtZWRpYXRlIHJlc3VsdHMgYXJlIGNhbGN1bGF0ZWQuICBUaGUgcGVhayBpcyBmb3Igc3RyaW5ncyBvZgogICBhcm91bmQgODAwLS0xMDAwIGRpZ2l0cyB3aGVyZSAgdGhlIGZ1bmN0aW9uIGlzIDYgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkKICAgQWxhbiBNY0ludHlyZSBhbmQgY29tbWl0dGVkIGF0IHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50LikKQEAgLTEyNjgsNyArMTI2OCw3IEBACiAgIChDb250cmlidXRlZCBieSBHdWlkbyB2YW4gUm9zc3VtLikKIAogKiBUaGUgOmNsYXNzOmBkZXF1ZWAgZG91YmxlLWVuZGVkIHF1ZXVlIHR5cGUgc3VwcGxpZWQgYnkgdGhlIDptb2Q6YGNvbGxlY3Rpb25zYAotICBtb2R1bGUgbm93IGhhcyBhIDptZXRoOmByZW1vdmUodmFsdWUpYCBtZXRob2QgdGhhdCByZW1vdmVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlCisgIG1vZHVsZSBub3cgaGFzIGEgYGByZW1vdmUodmFsdWUpYGAgbWV0aG9kIHRoYXQgcmVtb3ZlcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQogICBvZiAqdmFsdWUqIGluIHRoZSBxdWV1ZSwgcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdmFsdWUgaXNuJ3QgZm91bmQuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKQEAgLTEyOTEsNyArMTI5MSw3IEBACiAqIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSwgd2hpY2ggcGFyc2VzIGZpbGVzIGluIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZSBmb3JtYXQsCiAgIHJlY2VpdmVkIHNldmVyYWwgZW5oYW5jZW1lbnRzIGFuZCBhIG51bWJlciBvZiBidWdmaXhlcy4gIFlvdSBjYW4gbm93IHNldCB0aGUKICAgbWF4aW11bSBzaXplIGluIGJ5dGVzIG9mIGEgZmllbGQgYnkgY2FsbGluZyB0aGUKLSAgOm1ldGg6YGNzdi5maWVsZF9zaXplX2xpbWl0KG5ld19saW1pdClgIGZ1bmN0aW9uOyBvbWl0dGluZyB0aGUgKm5ld19saW1pdCoKKyAgYGBjc3YuZmllbGRfc2l6ZV9saW1pdChuZXdfbGltaXQpYGAgZnVuY3Rpb247IG9taXR0aW5nIHRoZSAqbmV3X2xpbWl0KgogICBhcmd1bWVudCB3aWxsIHJldHVybiB0aGUgY3VycmVudGx5LXNldCBsaW1pdC4gIFRoZSA6Y2xhc3M6YHJlYWRlcmAgY2xhc3Mgbm93IGhhcwogICBhIDphdHRyOmBsaW5lX251bWAgYXR0cmlidXRlIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgbGluZXMgcmVhZCBmcm9tCiAgIHRoZSBzb3VyY2U7IHJlY29yZHMgY2FuIHNwYW4gbXVsdGlwbGUgcGh5c2ljYWwgbGluZXMsIHNvIDphdHRyOmBsaW5lX251bWAgaXMgbm90CkBAIC0xMzA4LDcgKzEzMDgsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgU2tpcCBNb250YW5hcm8gYW5kIEFuZHJldyBNY05hbWFyYS4pCiAKICogVGhlIDpjbGFzczpgZGF0ZXRpbWVgIGNsYXNzIGluIHRoZSA6bW9kOmBkYXRldGltZWAgIG1vZHVsZSBub3cgaGFzIGEKLSAgOm1ldGg6YHN0cnB0aW1lKHN0cmluZywgZm9ybWF0KWAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCisgIGBgc3RycHRpbWUoc3RyaW5nLCBmb3JtYXQpYGAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCiAgIGJ5IEpvc2ggU3BvZXJyaS4gSXQgdXNlcyB0aGUgc2FtZSBmb3JtYXQgY2hhcmFjdGVycyBhcyA6ZnVuYzpgdGltZS5zdHJwdGltZWAgYW5kCiAgIDpmdW5jOmB0aW1lLnN0cmZ0aW1lYDo6CiAKQEAgLTE0MDMsNyArMTQwMyw3IEBACiAqIFRoZSA6bW9kOmBtYWlsYm94YCBtb2R1bGUgdW5kZXJ3ZW50IGEgbWFzc2l2ZSByZXdyaXRlIHRvIGFkZCB0aGUgY2FwYWJpbGl0eSB0bwogICBtb2RpZnkgbWFpbGJveGVzIGluIGFkZGl0aW9uIHRvIHJlYWRpbmcgdGhlbS4gIEEgbmV3IHNldCBvZiBjbGFzc2VzIHRoYXQgaW5jbHVkZQogICA6Y2xhc3M6YG1ib3hgLCA6Y2xhc3M6YE1IYCwgYW5kIDpjbGFzczpgTWFpbGRpcmAgYXJlIHVzZWQgdG8gcmVhZCBtYWlsYm94ZXMsIGFuZAotICBoYXZlIGFuIDptZXRoOmBhZGQobWVzc2FnZSlgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIDptZXRoOmByZW1vdmUoa2V5KWAgdG8KKyAgaGF2ZSBhbiBgYGFkZChtZXNzYWdlKWBgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIGBgcmVtb3ZlKGtleSlgYCB0bwogICByZW1vdmUgbWVzc2FnZXMsIGFuZCA6bWV0aDpgbG9ja2AvOm1ldGg6YHVubG9ja2AgdG8gbG9jay91bmxvY2sgdGhlIG1haWxib3guCiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb252ZXJ0cyBhIG1haWxkaXItZm9ybWF0IG1haWxib3ggaW50byBhbiBtYm94LWZvcm1hdAogICBvbmU6OgpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAKICAgOmZ1bmM6YHdhaXQ0YCByZXR1cm4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIDpmdW5jOmB3YWl0M2AgZG9lc24ndCB0YWtlIGEKICAgcHJvY2VzcyBJRCBhcyBpbnB1dCwgc28gaXQgd2FpdHMgZm9yIGFueSBjaGlsZCBwcm9jZXNzIHRvIGV4aXQgYW5kIHJldHVybnMgYQogICAzLXR1cGxlIG9mICpwcm9jZXNzLWlkKiwgKmV4aXQtc3RhdHVzKiwgKnJlc291cmNlLXVzYWdlKiBhcyByZXR1cm5lZCBmcm9tIHRoZQotICA6ZnVuYzpgcmVzb3VyY2UuZ2V0cnVzYWdlYCBmdW5jdGlvbi4gOmZ1bmM6YHdhaXQ0KHBpZClgIGRvZXMgdGFrZSBhIHByb2Nlc3MgSUQuCisgIDpmdW5jOmByZXNvdXJjZS5nZXRydXNhZ2VgIGZ1bmN0aW9uLiBgYHdhaXQ0KHBpZClgYCBkb2VzIHRha2UgYSBwcm9jZXNzIElELgogICAoQ29udHJpYnV0ZWQgYnkgQ2hhZCBKLiBTY2hyb2VkZXIuKQogCiAgIE9uIEZyZWVCU0QsIHRoZSA6ZnVuYzpgb3Muc3RhdGAgZnVuY3Rpb24gbm93IHJldHVybnMgIHRpbWVzIHdpdGggbmFub3NlY29uZApAQCAtMTUzMiw4ICsxNTMyLDggQEAKICAgSW4gUHl0aG9uIGNvZGUsIG5ldGxpbmsgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBhIHR1cGxlIG9mIDIgaW50ZWdlcnMsCiAgIGBgKHBpZCwgZ3JvdXBfbWFzaylgYC4KIAotICBUd28gbmV3IG1ldGhvZHMgb24gc29ja2V0IG9iamVjdHMsIDptZXRoOmByZWN2X2ludG8oYnVmZmVyKWAgYW5kCi0gIDptZXRoOmByZWN2ZnJvbV9pbnRvKGJ1ZmZlcilgLCBzdG9yZSB0aGUgcmVjZWl2ZWQgZGF0YSBpbiBhbiBvYmplY3QgIHRoYXQKKyAgVHdvIG5ldyBtZXRob2RzIG9uIHNvY2tldCBvYmplY3RzLCBgYHJlY3ZfaW50byhidWZmZXIpYGAgYW5kCisgIGBgcmVjdmZyb21faW50byhidWZmZXIpYGAsIHN0b3JlIHRoZSByZWNlaXZlZCBkYXRhIGluIGFuIG9iamVjdCAgdGhhdAogICBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBkYXRhIGFzIGEgc3RyaW5nLiAgVGhpcwogICBtZWFucyB5b3UgY2FuIHB1dCB0aGUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LW1hcHBlZCBmaWxlLgogCkBAIC0xNTU3LDggKzE1NTcsOCBAQAogICAgICB5ZWFyLCBudW1iZXIsIG5hbWUgPSBzLnVucGFjayhkYXRhKQogCiAgIFlvdSBjYW4gYWxzbyBwYWNrIGFuZCB1bnBhY2sgZGF0YSB0byBhbmQgZnJvbSBidWZmZXIgb2JqZWN0cyBkaXJlY3RseSB1c2luZyB0aGUKLSAgOm1ldGg6YHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYCBhbmQgOm1ldGg6YHVucGFja19mcm9tKGJ1ZmZlciwKLSAgb2Zmc2V0KWAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQorICBgYHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYGAgYW5kIGBgdW5wYWNrX2Zyb20oYnVmZmVyLAorICBvZmZzZXQpYGAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQogICBtYXBwZWQgZmlsZS4KIAogICAoOmNsYXNzOmBTdHJ1Y3RgIG9iamVjdHMgd2VyZSBpbXBsZW1lbnRlZCBieSBCb2IgSXBwb2xpdG8gYXQgdGhlIE5lZWRGb3JTcGVlZApAQCAtMTU5Miw3ICsxNTkyLDcgQEAKICAgLi4gcGF0Y2ggOTE4MTAxCiAKICogVGhlIDptb2Q6YHRocmVhZGluZ2AgbW9kdWxlIG5vdyBsZXRzIHlvdSBzZXQgdGhlIHN0YWNrIHNpemUgdXNlZCB3aGVuIG5ldwotICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgOmZ1bmM6YHN0YWNrX3NpemUoWypzaXplKl0pYCBmdW5jdGlvbiByZXR1cm5zIHRoZQorICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgYGBzdGFja19zaXplKFsqc2l6ZSpdKWBgIGZ1bmN0aW9uIHJldHVybnMgdGhlCiAgIGN1cnJlbnRseSBjb25maWd1cmVkIHN0YWNrIHNpemUsIGFuZCBzdXBwbHlpbmcgdGhlIG9wdGlvbmFsICpzaXplKiBwYXJhbWV0ZXIKICAgc2V0cyBhIG5ldyB2YWx1ZS4gIE5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgY2hhbmdpbmcgdGhlIHN0YWNrIHNpemUsIGJ1dAogICBXaW5kb3dzLCBQT1NJWCB0aHJlYWRpbmcsIGFuZCBPUy8yIGFsbCBkby4gKENvbnRyaWJ1dGVkIGJ5IEFuZHJldyBNYWNJbnR5cmUuKQpAQCAtMTkxMSw3ICsxOTExLDcgQEAKICAgIGggPSBoYXNobGliLm5ldygnbWQ1JykgICAgICAgICAgIyBQcm92aWRlIGFsZ29yaXRobSBhcyBhIHN0cmluZwogCiBPbmNlIGEgaGFzaCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgaXRzIG1ldGhvZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZToKLTptZXRoOmB1cGRhdGUoc3RyaW5nKWAgaGFzaGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8gdGhlICBjdXJyZW50IGRpZ2VzdAorYGB1cGRhdGUoc3RyaW5nKWBgIGhhc2hlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSAgY3VycmVudCBkaWdlc3QKIHN0YXRlLCA6bWV0aDpgZGlnZXN0YCBhbmQgOm1ldGg6YGhleGRpZ2VzdGAgcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBiaW5hcnkKIHN0cmluZyBvciBhIHN0cmluZyBvZiBoZXggZGlnaXRzLCBhbmQgOm1ldGg6YGNvcHlgIHJldHVybnMgYSBuZXcgaGFzaGluZyBvYmplY3QKIHdpdGggdGhlIHNhbWUgZGlnZXN0IHN0YXRlLgpAQCAtMjE2OCwyMCArMjE2OCwyMCBAQAogCiAqIFR3byBuZXcgbWFjcm9zIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIEMgZnVuY3Rpb25zIHRoYXQgYXJlIGxvY2FsIHRvIHRoZQogICBjdXJyZW50IGZpbGUgc28gdGhhdCBhIGZhc3RlciBjYWxsaW5nIGNvbnZlbnRpb24gY2FuIGJlIHVzZWQuCi0gIDpjOmZ1bmM6YFB5X0xPQ0FMKHR5cGUpYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCisgIGBgUHlfTE9DQUwodHlwZSlgYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCiAgIHNwZWNpZmllZCAqdHlwZSogYW5kIHVzZXMgYSBmYXN0LWNhbGxpbmcgcXVhbGlmaWVyLgotICA6YzpmdW5jOmBQeV9MT0NBTF9JTkxJTkUodHlwZSlgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYW5kIGFsc28gcmVxdWVzdHMgdGhlCisgIGBgUHlfTE9DQUxfSU5MSU5FKHR5cGUpYGAgZG9lcyB0aGUgc2FtZSB0aGluZyBhbmQgYWxzbyByZXF1ZXN0cyB0aGUKICAgZnVuY3Rpb24gYmUgaW5saW5lZC4gIElmIDpjOmZ1bmM6YFBZX0xPQ0FMX0FHR1JFU1NJVkVgIGlzIGRlZmluZWQgYmVmb3JlCiAgIDpmaWxlOmBweXRob24uaGAgaXMgaW5jbHVkZWQsIGEgc2V0IG9mIG1vcmUgYWdncmVzc2l2ZSBvcHRpbWl6YXRpb25zIGFyZSBlbmFibGVkCiAgIGZvciB0aGUgbW9kdWxlOyB5b3Ugc2hvdWxkIGJlbmNobWFyayB0aGUgcmVzdWx0cyB0byBmaW5kIG91dCBpZiB0aGVzZQogICBvcHRpbWl6YXRpb25zIGFjdHVhbGx5IG1ha2UgdGhlIGNvZGUgZmFzdGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEZyZWRyaWsgTHVuZGggYXQKICAgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQuKQogCi0qIDpjOmZ1bmM6YFB5RXJyX05ld0V4Y2VwdGlvbihuYW1lLCBiYXNlLCBkaWN0KWAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCisqIGBgUHlFcnJfTmV3RXhjZXB0aW9uKG5hbWUsIGJhc2UsIGRpY3QpYGAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCiAgIGNsYXNzZXMgYXMgaXRzICpiYXNlKiBhcmd1bWVudC4gIChDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwuKQogCiAqIFRoZSA6YzpmdW5jOmBQeUVycl9XYXJuYCBmdW5jdGlvbiBmb3IgaXNzdWluZyB3YXJuaW5ncyBpcyBub3cgZGVwcmVjYXRlZCBpbgotICBmYXZvdXIgb2YgOmM6ZnVuYzpgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWAgd2hpY2ggbGV0cyB5b3UKKyAgZmF2b3VyIG9mIGBgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWBgIHdoaWNoIGxldHMgeW91CiAgIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgc2VwYXJhdGluZyB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgY2FsbGVyLiAgQQogICAqc3RhY2tsZXZlbCogb2YgMSBpcyB0aGUgZnVuY3Rpb24gY2FsbGluZyA6YzpmdW5jOmBQeUVycl9XYXJuRXhgLCAyIGlzIHRoZQogICBmdW5jdGlvbiBhYm92ZSB0aGF0LCBhbmQgc28gZm9ydGguICAoQWRkZWQgYnkgTmVhbCBOb3J3aXR6LikKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjAucnN0IGIvRG9jL3doYXRzbmV3LzMuMC5yc3QKaW5kZXggNTViNjViYS4uNzYyOTc3YyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMC5yc3QKQEAgLTgxMiw3ICs4MTIsNyBAQAogKiBUaGUgOmZ1bmM6YHJvdW5kYCBmdW5jdGlvbiByb3VuZGluZyBzdHJhdGVneSBhbmQgcmV0dXJuIHR5cGUgaGF2ZQogICBjaGFuZ2VkLiAgRXhhY3QgaGFsZndheSBjYXNlcyBhcmUgbm93IHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgZXZlbgogICByZXN1bHQgaW5zdGVhZCBvZiBhd2F5IGZyb20gemVyby4gIChGb3IgZXhhbXBsZSwgYGByb3VuZCgyLjUpYGAgbm93Ci0gIHJldHVybnMgYGAyYGAgcmF0aGVyIHRoYW4gYGAzYGAuKSAgOmZ1bmM6YHJvdW5kKHhbLCBuXSlgIG5vdworICByZXR1cm5zIGBgMmBgIHJhdGhlciB0aGFuIGBgM2BgLikgIGBgcm91bmQoeFssIG5dKWBgIG5vdwogICBkZWxlZ2F0ZXMgdG8gYGB4Ll9fcm91bmRfXyhbbl0pYGAgaW5zdGVhZCBvZiBhbHdheXMgcmV0dXJuaW5nIGEKICAgZmxvYXQuICBJdCBnZW5lcmFsbHkgcmV0dXJucyBhbiBpbnRlZ2VyIHdoZW4gY2FsbGVkIHdpdGggYSBzaW5nbGUKICAgYXJndW1lbnQgYW5kIGEgdmFsdWUgb2YgdGhlIHNhbWUgdHlwZSBhcyBgYHhgYCB3aGVuIGNhbGxlZCB3aXRoIHR3bwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAppbmRleCAwNTUzZWMzLi45OTgyN2ZmIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdApAQCAtMjcwLDcgKzI3MCw3IEBACiAgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzEudHh0JywgJ2Rlc3QxLnR4dCcpCiAgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzIudHh0JywgJ2Rlc3QyLnR4dCcpCiAgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzMudHh0JywgJ2Rlc3QzLnR4dCcpCi0gICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzQudHh0JywgJ2Rlc3Q0LnR4dCcpCisgICAgICBlLnN1Ym1pdChzaHV0aWwuY29weSwgJ3NyYzMudHh0JywgJ2Rlc3Q0LnR4dCcpCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMzU0LDcgKzIzNTQsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3U7IDppc3N1ZTpgMzAwMWAuKQogCiAqIFRoZSBmYXN0LXNlYXJjaCBhbGdvcml0aG0gaW4gc3RyaW5nbGliIGlzIG5vdyB1c2VkIGJ5IHRoZSA6bWV0aDpgc3BsaXRgLAotICA6bWV0aDpgc3BsaXRsaW5lc2AgYW5kIDptZXRoOmByZXBsYWNlYCBtZXRob2RzIG9uCisgIDptZXRoOmByc3BsaXRgLCA6bWV0aDpgc3BsaXRsaW5lc2AgYW5kIDptZXRoOmByZXBsYWNlYCBtZXRob2RzIG9uCiAgIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAgYW5kIDpjbGFzczpgc3RyYCBvYmplY3RzLiBMaWtld2lzZSwgdGhlCiAgIGFsZ29yaXRobSBpcyBhbHNvIHVzZWQgYnkgOm1ldGg6YHJmaW5kYCwgOm1ldGg6YHJpbmRleGAsIDptZXRoOmByc3BsaXRgIGFuZAogICA6bWV0aDpgcnBhcnRpdGlvbmAuCkBAIC0yNDcxLDE0ICsyNDcxLDE0IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBleGlzdGluZyBTdWJ2ZXJzaW9uIGNvZGUgcmVwb3NpdG9yeSBhdCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcKIHRoZXJlIGlzIG5vdyBhIGBNZXJjdXJpYWwgPGh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vPmBfIHJlcG9zaXRvcnkgYXQKLWh0dHA6Ly9oZy5weXRob24ub3JnL1wuCitodHRwOi8vaGcucHl0aG9uLm9yZy8gLgogCiBBZnRlciB0aGUgMy4yIHJlbGVhc2UsIHRoZXJlIGFyZSBwbGFucyB0byBzd2l0Y2ggdG8gTWVyY3VyaWFsIGFzIHRoZSBwcmltYXJ5CiByZXBvc2l0b3J5LiAgVGhpcyBkaXN0cmlidXRlZCB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIHNob3VsZCBtYWtlIGl0IGVhc2llciBmb3IKIG1lbWJlcnMgb2YgdGhlIGNvbW11bml0eSB0byBjcmVhdGUgYW5kIHNoYXJlIGV4dGVybmFsIGNoYW5nZXNldHMuICBTZWUKIDpwZXA6YDM4NWAgZm9yIGRldGFpbHMuCiAKLVRvIGxlYXJuIHRoZSBuZXcgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgc2VlIHRoZSBgdHV0b3JpYWwgYnkgSm9lbAorVG8gbGVhcm4gdG8gdXNlIHRoZSBuZXcgdmVyc2lvbiBjb250cm9sIHN5c3RlbSwgc2VlIHRoZSBgdHV0b3JpYWwgYnkgSm9lbAogU3BvbHNreSA8aHR0cDovL2hnaW5pdC5jb20+YF8gb3IgdGhlIGBHdWlkZSB0byBNZXJjdXJpYWwgV29ya2Zsb3dzCiA8aHR0cDovL21lcmN1cmlhbC5zZWxlbmljLmNvbS9ndWlkZS8+YF8uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjMucnN0IGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFlMGZlNgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy8zLjMucnN0CkBAIC0wLDAgKzEsMjI4MyBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICBXaGF0J3MgTmV3IEluIFB5dGhvbiAzLjMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOlJlbGVhc2U6IHxyZWxlYXNlfAorOkRhdGU6IHx0b2RheXwKKworLi4gUnVsZXMgZm9yIG1haW50ZW5hbmNlOgorCisgICAqIEFueW9uZSBjYW4gYWRkIHRleHQgdG8gdGhpcyBkb2N1bWVudC4gIERvIG5vdCBzcGVuZCB2ZXJ5IG11Y2ggdGltZQorICAgb24gdGhlIHdvcmRpbmcgb2YgeW91ciBjaGFuZ2VzLCBiZWNhdXNlIHlvdXIgdGV4dCB3aWxsIHByb2JhYmx5CisgICBnZXQgcmV3cml0dGVuIHRvIHNvbWUgZGVncmVlLgorCisgICAqIFRoZSBtYWludGFpbmVyIHdpbGwgZ28gdGhyb3VnaCBNaXNjL05FV1MgcGVyaW9kaWNhbGx5IGFuZCBhZGQKKyAgIGNoYW5nZXM7IGl0J3MgdGhlcmVmb3JlIG1vcmUgaW1wb3J0YW50IHRvIGFkZCB5b3VyIGNoYW5nZXMgdG8KKyAgIE1pc2MvTkVXUyB0aGFuIHRvIHRoaXMgZmlsZS4KKworICAgKiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIGxpc3Qgb2YgZXZlcnkgc2luZ2xlIGNoYW5nZTsgY29tcGxldGVuZXNzCisgICBpcyB0aGUgcHVycG9zZSBvZiBNaXNjL05FV1MuICBTb21lIGNoYW5nZXMgSSBjb25zaWRlciB0b28gc21hbGwKKyAgIG9yIGVzb3RlcmljIHRvIGluY2x1ZGUuICBJZiBzdWNoIGEgY2hhbmdlIGlzIGFkZGVkIHRvIHRoZSB0ZXh0LAorICAgSSdsbCBqdXN0IHJlbW92ZSBpdC4gIChUaGlzIGlzIGFub3RoZXIgcmVhc29uIHlvdSBzaG91bGRuJ3Qgc3BlbmQKKyAgIHRvbyBtdWNoIHRpbWUgb24gd3JpdGluZyB5b3VyIGFkZGl0aW9uLikKKworICAgKiBJZiB5b3Ugd2FudCB0byBkcmF3IHlvdXIgbmV3IHRleHQgdG8gdGhlIGF0dGVudGlvbiBvZiB0aGUKKyAgIG1haW50YWluZXIsIGFkZCAnWFhYJyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGggb3IKKyAgIHNlY3Rpb24uCisKKyAgICogSXQncyBPSyB0byBqdXN0IGFkZCBhIGZyYWdtZW50YXJ5IG5vdGUgYWJvdXQgYSBjaGFuZ2UuICBGb3IKKyAgIGV4YW1wbGU6ICJYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZQorICAgc29ja2V0IG1vZHVsZS4iICBUaGUgbWFpbnRhaW5lciB3aWxsIHJlc2VhcmNoIHRoZSBjaGFuZ2UgYW5kCisgICB3cml0ZSB0aGUgbmVjZXNzYXJ5IHRleHQuCisKKyAgICogWW91IGNhbiBjb21tZW50IG91dCB5b3VyIGFkZGl0aW9ucyBpZiB5b3UgbGlrZSwgYnV0IGl0J3Mgbm90CisgICBuZWNlc3NhcnkgKGVzcGVjaWFsbHkgd2hlbiBhIGZpbmFsIHJlbGVhc2UgaXMgc29tZSBtb250aHMgYXdheSkuCisKKyAgICogQ3JlZGl0IHRoZSBhdXRob3Igb2YgYSBwYXRjaCBvciBidWdmaXguICAgSnVzdCB0aGUgbmFtZSBpcworICAgc3VmZmljaWVudDsgdGhlIGUtbWFpbCBhZGRyZXNzIGlzbid0IG5lY2Vzc2FyeS4KKworICAgKiBJdCdzIGhlbHBmdWwgdG8gYWRkIHRoZSBidWcvcGF0Y2ggbnVtYmVyIGFzIGEgY29tbWVudDoKKworICAgWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUgc29ja2V0CisgICBtb2R1bGUuCisgICAoQ29udHJpYnV0ZWQgYnkgUC5ZLiBEZXZlbG9wZXIgaW4gOmlzc3VlOmAxMjM0NWAuKQorCisgICBUaGlzIHNhdmVzIHRoZSBtYWludGFpbmVyIHRoZSBlZmZvcnQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgTWVyY3VyaWFsIGxvZworICAgd2hlbiByZXNlYXJjaGluZyBhIGNoYW5nZS4KKworVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuMywgY29tcGFyZWQgdG8gMy4yLgorUHl0aG9uIDMuMyB3YXMgcmVsZWFzZWQgb24gU2VwdGVtYmVyIDI5LCAyMDEyLiAgRm9yIGZ1bGwgZGV0YWlscywKK3NlZSB0aGUgOnNvdXJjZTpgTWlzYy9ORVdTYCBmaWxlLgorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDM5OGAgLSBQeXRob24gMy4zIFJlbGVhc2UgU2NoZWR1bGUKKworCitTdW1tYXJ5IC0tIFJlbGVhc2UgaGlnaGxpZ2h0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gVGhpcyBzZWN0aW9uIHNpbmdsZXMgb3V0IHRoZSBtb3N0IGltcG9ydGFudCBjaGFuZ2VzIGluIFB5dGhvbiAzLjMuCisgICBCcmV2aXR5IGlzIGtleS4KKworTmV3IHN5bnRheCBmZWF0dXJlczoKKworKiBOZXcgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbiBmb3IgOnJlZjpgZ2VuZXJhdG9yIGRlbGVnYXRpb24gPHBlcC0zODA+YC4KKyogVGhlIGBgdSd1bmljb2RlJ2BgIHN5bnRheCBpcyBhY2NlcHRlZCBhZ2FpbiBmb3IgOmNsYXNzOmBzdHJgIG9iamVjdHMuCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgZmF1bHRoYW5kbGVyYCAoaGVscHMgZGVidWdnaW5nIGxvdy1sZXZlbCBjcmFzaGVzKQorKiA6bW9kOmBpcGFkZHJlc3NgIChoaWdoLWxldmVsIG9iamVjdHMgcmVwcmVzZW50aW5nIElQIGFkZHJlc3NlcyBhbmQgbWFza3MpCisqIDptb2Q6YGx6bWFgIChjb21wcmVzcyBkYXRhIHVzaW5nIHRoZSBYWiAvIExaTUEgYWxnb3JpdGhtKQorKiA6bW9kOmB1bml0dGVzdC5tb2NrYCAocmVwbGFjZSBwYXJ0cyBvZiB5b3VyIHN5c3RlbSB1bmRlciB0ZXN0IHdpdGggbW9jayBvYmplY3RzKQorKiA6bW9kOmB2ZW52YCAoUHl0aG9uIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnRzIDxwZXAtNDA1PmAsIGFzIGluIHRoZQorICBwb3B1bGFyIGBgdmlydHVhbGVudmBgIHBhY2thZ2UpCisKK05ldyBidWlsdC1pbiBmZWF0dXJlczoKKworKiBSZXdvcmtlZCA6cmVmOmBJL08gZXhjZXB0aW9uIGhpZXJhcmNoeSA8cGVwLTMxNTE+YC4KKworSW1wbGVtZW50YXRpb24gaW1wcm92ZW1lbnRzOgorCisqIFJld3JpdHRlbiA6cmVmOmBpbXBvcnQgbWFjaGluZXJ5IDxpbXBvcnRsaWI+YCBiYXNlZCBvbiA6bW9kOmBpbXBvcnRsaWJgLgorKiBNb3JlIGNvbXBhY3QgOnJlZjpgdW5pY29kZSBzdHJpbmdzIDxwZXAtMzkzPmAuCisqIE1vcmUgY29tcGFjdCA6cmVmOmBhdHRyaWJ1dGUgZGljdGlvbmFyaWVzIDxwZXAtNDEyPmAuCisKK1NpZ25pZmljYW50bHkgSW1wcm92ZWQgTGlicmFyeSBNb2R1bGVzOgorCisqIEMgQWNjZWxlcmF0b3IgZm9yIHRoZSA6cmVmOmBkZWNpbWFsIDxuZXctZGVjaW1hbD5gIG1vZHVsZS4KKyogQmV0dGVyIHVuaWNvZGUgaGFuZGxpbmcgaW4gdGhlIDpyZWY6YGVtYWlsIDxuZXctZW1haWw+YCBtb2R1bGUKKyAgKDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgcGFja2FnZT5gKS4KKworU2VjdXJpdHkgaW1wcm92ZW1lbnRzOgorCisqIEhhc2ggcmFuZG9taXphdGlvbiBpcyBzd2l0Y2hlZCBvbiBieSBkZWZhdWx0LgorCitQbGVhc2UgcmVhZCBvbiBmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdXNlci1mYWNpbmcgY2hhbmdlcy4KKworCisuLiBfcGVwLTQwNToKKworUEVQIDQwNTogVmlydHVhbCBFbnZpcm9ubWVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1ZpcnR1YWwgZW52aXJvbm1lbnRzIGhlbHAgY3JlYXRlIHNlcGFyYXRlIFB5dGhvbiBzZXR1cHMgd2hpbGUgc2hhcmluZyBhCitzeXN0ZW0td2lkZSBiYXNlIGluc3RhbGwsIGZvciBlYXNlIG9mIG1haW50ZW5hbmNlLiAgVmlydHVhbCBlbnZpcm9ubWVudHMKK2hhdmUgdGhlaXIgb3duIHNldCBvZiBwcml2YXRlIHNpdGUgcGFja2FnZXMgKGkuZS4gbG9jYWxseS1pbnN0YWxsZWQKK2xpYnJhcmllcyksIGFuZCBhcmUgb3B0aW9uYWxseSBzZWdyZWdhdGVkIGZyb20gdGhlIHN5c3RlbS13aWRlIHNpdGUKK3BhY2thZ2VzLiAgVGhlaXIgY29uY2VwdCBhbmQgaW1wbGVtZW50YXRpb24gYXJlIGluc3BpcmVkIGJ5IHRoZSBwb3B1bGFyCitgYHZpcnR1YWxlbnZgYCB0aGlyZC1wYXJ0eSBwYWNrYWdlLCBidXQgYmVuZWZpdCBmcm9tIHRpZ2h0ZXIgaW50ZWdyYXRpb24KK3dpdGggdGhlIGludGVycHJldGVyIGNvcmUuCisKK1RoaXMgUEVQIGFkZHMgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcywgYW5kIHRoZQorOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKK2FkbWluaXN0cmF0aW9uLiAgVGhlIFB5dGhvbiBpbnRlcnByZXRlciBjaGVja3MgZm9yIGEgYGBwdmVudi5jZmdgYCwKK2ZpbGUgd2hvc2UgZXhpc3RlbmNlIHNpZ25hbHMgdGhlIGJhc2Ugb2YgYSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5Cit0cmVlLgorCisoSW1wbGVtZW50ZWQgYnkgQ2FybCBNZXllciBhbmQgVmluYXkgU2FqaXAuKQorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDQwNWAgLSBQeXRob24gVmlydHVhbCBFbnZpcm9ubWVudHMKKyAgICAgICBQRVAgd3JpdHRlbiBieSBDYXJsIE1leWVyCisKKworUEVQIDQyMDogTmFtZXNwYWNlIFBhY2thZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTmF0aXZlIHN1cHBvcnQgZm9yIHBhY2thZ2UgZGlyZWN0b3JpZXMgdGhhdCBkb24ndCByZXF1aXJlIGBgX19pbml0X18ucHlgYAorbWFya2VyIGZpbGVzIGFuZCBjYW4gYXV0b21hdGljYWxseSBzcGFuIG11bHRpcGxlIHBhdGggc2VnbWVudHMgKGluc3BpcmVkIGJ5Cit2YXJpb3VzIHRoaXJkIHBhcnR5IGFwcHJvYWNoZXMgdG8gbmFtZXNwYWNlIHBhY2thZ2VzLCBhcyBkZXNjcmliZWQgaW4KKzpwZXA6YDQyMGApCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MjBgIC0gTmFtZXNwYWNlIHBhY2thZ2VzCisgICAgICBQRVAgd3JpdHRlbiBieSBFcmljIFYuIFNtaXRoOyBpbXBsZW1lbnRhdGlvbiBieSBFcmljIFYuIFNtaXRoCisgICAgICBhbmQgQmFycnkgV2Fyc2F3CisKKworLi4gX3BlcC0zMTE4LXVwZGF0ZToKKworUEVQIDMxMTg6IE5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGFuZCBidWZmZXIgcHJvdG9jb2wgZG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzExOGAgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KKworVGhlIG5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGNvbXByZWhlbnNpdmVseSBmaXhlcyBhbGwgb3duZXJzaGlwIGFuZAorbGlmZXRpbWUgaXNzdWVzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBmaWVsZHMgaW4gdGhlIFB5X2J1ZmZlciBzdHJ1Y3QKK3RoYXQgbGVkIHRvIG11bHRpcGxlIGNyYXNoIHJlcG9ydHMuIEFkZGl0aW9uYWxseSwgc2V2ZXJhbCBmdW5jdGlvbnMgdGhhdAorY3Jhc2hlZCBvciByZXR1cm5lZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igbm9uLWNvbnRpZ3VvdXMgb3IgbXVsdGktZGltZW5zaW9uYWwKK2lucHV0IGhhdmUgYmVlbiBmaXhlZC4KKworVGhlIG1lbW9yeXZpZXcgb2JqZWN0IG5vdyBoYXMgYSBQRVAtMzExOCBjb21wbGlhbnQgZ2V0YnVmZmVycHJvYygpCit0aGF0IGNoZWNrcyB0aGUgY29uc3VtZXIncyByZXF1ZXN0IHR5cGUuIE1hbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbgorYWRkZWQsIG1vc3Qgb2YgdGhlbSB3b3JrIGluIGZ1bGwgZ2VuZXJhbGl0eSBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzCithbmQgYXJyYXlzIHdpdGggc3Vib2Zmc2V0cy4KKworVGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCwgY2xlYXJseSBzcGVsbGluZyBvdXQgcmVzcG9uc2liaWxpdGllcworZm9yIGJvdGggZXhwb3J0ZXJzIGFuZCBjb25zdW1lcnMuIEJ1ZmZlciByZXF1ZXN0IGZsYWdzIGFyZSBncm91cGVkIGludG8KK2Jhc2ljIGFuZCBjb21wb3VuZCBmbGFncy4gVGhlIG1lbW9yeSBsYXlvdXQgb2Ygbm9uLWNvbnRpZ3VvdXMgYW5kCittdWx0aS1kaW1lbnNpb25hbCBOdW1QeS1zdHlsZSBhcnJheXMgaXMgZXhwbGFpbmVkLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworKiBBbGwgbmF0aXZlIHNpbmdsZSBjaGFyYWN0ZXIgZm9ybWF0IHNwZWNpZmllcnMgaW4gc3RydWN0IG1vZHVsZSBzeW50YXgKKyAgKG9wdGlvbmFsbHkgcHJlZml4ZWQgd2l0aCAnQCcpIGFyZSBub3cgc3VwcG9ydGVkLgorCisqIFdpdGggc29tZSByZXN0cmljdGlvbnMsIHRoZSBjYXN0KCkgbWV0aG9kIGFsbG93cyBjaGFuZ2luZyBvZiBmb3JtYXQgYW5kCisgIHNoYXBlIG9mIEMtY29udGlndW91cyBhcnJheXMuCisKKyogTXVsdGktZGltZW5zaW9uYWwgbGlzdCByZXByZXNlbnRhdGlvbnMgYXJlIHN1cHBvcnRlZCBmb3IgYW55IGFycmF5IHR5cGUuCisKKyogTXVsdGktZGltZW5zaW9uYWwgY29tcGFyaXNvbnMgYXJlIHN1cHBvcnRlZCBmb3IgYW55IGFycmF5IHR5cGUuCisKKyogT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIG9mIGhhc2hhYmxlIChyZWFkLW9ubHkpIHR5cGVzIHdpdGggZm9ybWF0cyBCLAorICBiIG9yIGMgYXJlIG5vdyBoYXNoYWJsZS4gKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM0MTFgKQorCisqIEFyYml0cmFyeSBzbGljaW5nIG9mIGFueSAxLUQgYXJyYXlzIHR5cGUgaXMgc3VwcG9ydGVkLiBGb3IgZXhhbXBsZSwgaXQKKyAgaXMgbm93IHBvc3NpYmxlIHRvIHJldmVyc2UgYSBtZW1vcnl2aWV3IGluIE8oMSkgYnkgdXNpbmcgYSBuZWdhdGl2ZSBzdGVwLgorCitBUEkgY2hhbmdlcworLS0tLS0tLS0tLS0KKworKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyBpcyBvZmZpY2lhbGx5IGxpbWl0ZWQgdG8gNjQuCisKKyogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGVtcHR5IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzIGlzIG5vdworICBhbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUuCisKKyogQWNjZXNzaW5nIGEgbWVtb3J5dmlldyBlbGVtZW50IHdpdGggZm9ybWF0ICdCJyAodW5zaWduZWQgYnl0ZXMpCisgIG5vdyByZXR1cm5zIGFuIGludGVnZXIgKGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3RydWN0IG1vZHVsZSBzeW50YXgpLgorICBGb3IgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IHRoZSB2aWV3IG11c3QgYmUgY2FzdCB0byAnYycgZmlyc3QuCisKKyogbWVtb3J5dmlldyBjb21wYXJpc29ucyBub3cgdXNlIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgb3BlcmFuZHMKKyAgYW5kIGNvbXBhcmUgYWxsIGFycmF5IGVsZW1lbnRzIGJ5IHZhbHVlLiBBbGwgZm9ybWF0IHN0cmluZ3MgaW4gc3RydWN0CisgIG1vZHVsZSBzeW50YXggYXJlIHN1cHBvcnRlZC4gVmlld3Mgd2l0aCB1bnJlY29nbmlzZWQgZm9ybWF0IHN0cmluZ3MKKyAgYXJlIHN0aWxsIHBlcm1pdHRlZCwgYnV0IHdpbGwgYWx3YXlzIGNvbXBhcmUgYXMgdW5lcXVhbCwgcmVnYXJkbGVzcworICBvZiB2aWV3IGNvbnRlbnRzLgorCisqIEZvciBmdXJ0aGVyIGNoYW5nZXMgc2VlIGBCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlc2BfIGFuZCBgUG9ydGluZyBDIGNvZGVgXyAuCisKKyhDb250cmlidXRlZCBieSBTdGVmYW4gS3JhaCBpbiA6aXNzdWU6YDEwMTgxYCkKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMThgIC0gUmV2aXNpbmcgdGhlIEJ1ZmZlciBQcm90b2NvbAorCisKKy4uIF9wZXAtMzkzOgorCitQRVAgMzkzOiBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgVW5pY29kZSBzdHJpbmcgdHlwZSBpcyBjaGFuZ2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW50ZXJuYWwKK3JlcHJlc2VudGF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgbGFyZ2VzdCBVbmljb2RlIG9yZGluYWwKKygxLCAyLCBvciA0IGJ5dGVzKSBpbiB0aGUgcmVwcmVzZW50ZWQgc3RyaW5nLiAgVGhpcyBhbGxvd3MgYSBzcGFjZS1lZmZpY2llbnQKK3JlcHJlc2VudGF0aW9uIGluIGNvbW1vbiBjYXNlcywgYnV0IGdpdmVzIGFjY2VzcyB0byBmdWxsIFVDUy00IG9uIGFsbAorc3lzdGVtcy4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgQVBJcywgc2V2ZXJhbCByZXByZXNlbnRhdGlvbnMgbWF5CitleGlzdCBpbiBwYXJhbGxlbDsgb3ZlciB0aW1lLCB0aGlzIGNvbXBhdGliaWxpdHkgc2hvdWxkIGJlIHBoYXNlZCBvdXQuCisKK09uIHRoZSBQeXRob24gc2lkZSwgdGhlcmUgc2hvdWxkIGJlIG5vIGRvd25zaWRlIHRvIHRoaXMgY2hhbmdlLgorCitPbiB0aGUgQyBBUEkgc2lkZSwgUEVQIDM5MyBpcyBmdWxseSBiYWNrd2FyZCBjb21wYXRpYmxlLiAgVGhlIGxlZ2FjeSBBUEkKK3Nob3VsZCByZW1haW4gYXZhaWxhYmxlIGF0IGxlYXN0IGZpdmUgeWVhcnMuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxlZ2FjeQorQVBJIHdpbGwgbm90IGZ1bGx5IGJlbmVmaXQgb2YgdGhlIG1lbW9yeSByZWR1Y3Rpb24sIG9yIC0gd29yc2UgLSBtYXkgdXNlCithIGJpdCBtb3JlIG1lbW9yeSwgYmVjYXVzZSBQeXRob24gbWF5IGhhdmUgdG8gbWFpbnRhaW4gdHdvIHZlcnNpb25zIG9mIGVhY2gKK3N0cmluZyAoaW4gdGhlIGxlZ2FjeSBmb3JtYXQgYW5kIGluIHRoZSBuZXcgZWZmaWNpZW50IHN0b3JhZ2UpLgorCitGdW5jdGlvbmFsaXR5CistLS0tLS0tLS0tLS0tCisKK0NoYW5nZXMgaW50cm9kdWNlZCBieSA6cGVwOmAzOTNgIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIFB5dGhvbiBub3cgYWx3YXlzIHN1cHBvcnRzIHRoZSBmdWxsIHJhbmdlIG9mIFVuaWNvZGUgY29kZXBvaW50cywgaW5jbHVkaW5nCisgIG5vbi1CTVAgb25lcyAoaS5lLiBmcm9tIGBgVSswMDAwYGAgdG8gYGBVKzEwRkZGRmBgKS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCisgIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgUHl0aG9uIG5vdyBiZWhhdmVzIGxpa2UgYSB3aWRlCisgIGJ1aWxkLCBldmVuIHVuZGVyIFdpbmRvd3MuCisKKyogV2l0aCB0aGUgZGVhdGggb2YgbmFycm93IGJ1aWxkcywgdGhlIHByb2JsZW1zIHNwZWNpZmljIHRvIG5hcnJvdyBidWlsZHMgaGF2ZQorICBhbHNvIGJlZW4gZml4ZWQsIGZvciBleGFtcGxlOgorCisgICogOmZ1bmM6YGxlbmAgbm93IGFsd2F5cyByZXR1cm5zIDEgZm9yIG5vbi1CTVAgY2hhcmFjdGVycywKKyAgICBzbyBgYGxlbignXFUwMDEwRkZGRicpID09IDFgYDsKKworICAqIHN1cnJvZ2F0ZSBwYWlycyBhcmUgbm90IHJlY29tYmluZWQgaW4gc3RyaW5nIGxpdGVyYWxzLAorICAgIHNvIGBgJ1x1REJGRlx1REZGRicgIT0gJ1xVMDAxMEZGRkYnYGA7CisKKyAgKiBpbmRleGluZyBvciBzbGljaW5nIG5vbi1CTVAgY2hhcmFjdGVycyByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSwKKyAgICBzbyBgYCdcVTAwMTBGRkZGJ1swXWBgIG5vdyByZXR1cm5zIGBgJ1xVMDAxMEZGRkYnYGAgYW5kIG5vdCBgYCdcdURCRkYnYGA7CisKKyAgKiBhbGwgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG5vdyBjb3JyZWN0bHkgaGFuZGxlCisgICAgbm9uLUJNUCBjb2RlcG9pbnRzLgorCisqIFRoZSB2YWx1ZSBvZiA6ZGF0YTpgc3lzLm1heHVuaWNvZGVgIGlzIG5vdyBhbHdheXMgYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYAorICBpbiBoZXhhZGVjaW1hbCkuICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAgZnVuY3Rpb24gc3RpbGwgcmV0dXJucworICBlaXRoZXIgYGAweEZGRkZgYCBvciBgYDB4MTBGRkZGYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGFuZCBpdCBzaG91bGQKKyAgbm90IGJlIHVzZWQgd2l0aCB0aGUgbmV3IFVuaWNvZGUgQVBJIChzZWUgOmlzc3VlOmAxMzA1NGApLgorCisqIFRoZSA6ZmlsZTpgLi9jb25maWd1cmVgIGZsYWcgYGAtLXdpdGgtd2lkZS11bmljb2RlYGAgaGFzIGJlZW4gcmVtb3ZlZC4KKworUGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN0b3JhZ2Ugb2YgVW5pY29kZSBzdHJpbmdzIG5vdyBkZXBlbmRzIG9uIHRoZSBoaWdoZXN0IGNvZGVwb2ludCBpbiB0aGUgc3RyaW5nOgorCisqIHB1cmUgQVNDSUkgYW5kIExhdGluMSBzdHJpbmdzIChgYFUrMDAwMC1VKzAwRkZgYCkgdXNlIDEgYnl0ZSBwZXIgY29kZXBvaW50OworCisqIEJNUCBzdHJpbmdzIChgYFUrMDAwMC1VK0ZGRkZgYCkgdXNlIDIgYnl0ZXMgcGVyIGNvZGVwb2ludDsKKworKiBub24tQk1QIHN0cmluZ3MgKGBgVSsxMDAwMC1VKzEwRkZGRmBgKSB1c2UgNCBieXRlcyBwZXIgY29kZXBvaW50LgorCitUaGUgbmV0IGVmZmVjdCBpcyB0aGF0IGZvciBtb3N0IGFwcGxpY2F0aW9ucywgbWVtb3J5IHVzYWdlIG9mIHN0cmluZworc3RvcmFnZSBzaG91bGQgZGVjcmVhc2Ugc2lnbmlmaWNhbnRseSAtIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZm9ybWVyCit3aWRlIHVuaWNvZGUgYnVpbGRzIC0gYXMsIGluIG1hbnkgY2FzZXMsIHN0cmluZ3Mgd2lsbCBiZSBwdXJlIEFTQ0lJCitldmVuIGluIGludGVybmF0aW9uYWwgY29udGV4dHMgKGJlY2F1c2UgbWFueSBzdHJpbmdzIHN0b3JlIG5vbi1odW1hbgorbGFuZ3VhZ2UgZGF0YSwgc3VjaCBhcyBYTUwgZnJhZ21lbnRzLCBIVFRQIGhlYWRlcnMsIEpTT04tZW5jb2RlZCBkYXRhLAorZXRjLikuICBXZSBhbHNvIGhvcGUgdGhhdCBpdCB3aWxsLCBmb3IgdGhlIHNhbWUgcmVhc29ucywgaW5jcmVhc2UgQ1BVCitjYWNoZSBlZmZpY2llbmN5IG9uIG5vbi10cml2aWFsIGFwcGxpY2F0aW9ucy4gVGhlIG1lbW9yeSB1c2FnZSBvZgorUHl0aG9uIDMuMyBpcyB0d28gdG8gdGhyZWUgdGltZXMgc21hbGxlciB0aGFuIFB5dGhvbiAzLjIsIGFuZCBhIGxpdHRsZQorYml0IGJldHRlciB0aGFuIFB5dGhvbiAyLjcsIG9uIGEgRGphbmdvIGJlbmNobWFyayAoc2VlIHRoZSBQRVAgZm9yCitkZXRhaWxzKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM5M2AgLSBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IE1hcnRpbiB2b24gTMO2d2lzOyBpbXBsZW1lbnRhdGlvbiBieSBUb3JzdGVuIEJlY2tlcgorICAgICAgYW5kIE1hcnRpbiB2b24gTMO2d2lzLgorCisKKy4uIF9wZXAtMzk3OgorCitQRVAgMzk3OiBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgUHl0aG9uIDMuMyBXaW5kb3dzIGluc3RhbGxlciBub3cgaW5jbHVkZXMgYSBgYHB5YGAgbGF1bmNoZXIgYXBwbGljYXRpb24KK3RoYXQgY2FuIGJlIHVzZWQgdG8gbGF1bmNoIFB5dGhvbiBhcHBsaWNhdGlvbnMgaW4gYSB2ZXJzaW9uIGluZGVwZW5kZW50CitmYXNoaW9uLgorCitUaGlzIGxhdW5jaGVyIGlzIGludm9rZWQgaW1wbGljaXRseSB3aGVuIGRvdWJsZS1jbGlja2luZyBgYCoucHlgYCBmaWxlcy4KK0lmIG9ubHkgYSBzaW5nbGUgUHl0aG9uIHZlcnNpb24gaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0sIHRoYXQgdmVyc2lvbgord2lsbCBiZSB1c2VkIHRvIHJ1biB0aGUgZmlsZS4gSWYgbXVsdGlwbGUgdmVyc2lvbnMgYXJlIGluc3RhbGxlZCwgdGhlIG1vc3QKK3JlY2VudCB2ZXJzaW9uIGlzIHVzZWQgYnkgZGVmYXVsdCwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5jbHVkaW5nCithIFVuaXgtc3R5bGUgInNoZWJhbmcgbGluZSIgaW4gdGhlIFB5dGhvbiBzY3JpcHQuCisKK1RoZSBsYXVuY2hlciBjYW4gYWxzbyBiZSB1c2VkIGV4cGxpY2l0bHkgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFzIHRoZSBgYHB5YGAKK2FwcGxpY2F0aW9uLiBSdW5uaW5nIGBgcHlgYCBmb2xsb3dzIHRoZSBzYW1lIHZlcnNpb24gc2VsZWN0aW9uIHJ1bGVzIGFzCitpbXBsaWNpdGx5IGxhdW5jaGluZyBzY3JpcHRzLCBidXQgYSBtb3JlIHNwZWNpZmljIHZlcnNpb24gY2FuIGJlIHNlbGVjdGVkCitieSBwYXNzaW5nIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyAoc3VjaCBhcyBgYC0zYGAgdG8gcmVxdWVzdCBQeXRob24gMyB3aGVuCitQeXRob24gMiBpcyBhbHNvIGluc3RhbGxlZCwgb3IgYGAtMi42YGAgdG8gc3BlY2lmY2xseSByZXF1ZXN0IGFuIGVhcmxpZXIKK1B5dGhvbiB2ZXJzaW9uIHdoZW4gYSBtb3JlIHJlY2VudCB2ZXJzaW9uIGlzIGluc3RhbGxlZCkuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBsYXVuY2hlciwgdGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbgorb3B0aW9uIHRvIGFkZCB0aGUgbmV3bHkgaW5zdGFsbGVkIFB5dGhvbiB0byB0aGUgc3lzdGVtIFBBVEggKGNvbnRyaWJ1dGVkCitieSBCcmlhbiBDdXJ0YWluIGluIDppc3N1ZTpgMzU2MWApLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzk3YCAtIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworICAgICAgUEVQIHdyaXR0ZW4gYnkgTWFyayBIYW1tb25kIGFuZCBNYXJ0aW4gdi4gTMO2d2lzOyBpbXBsZW1lbnRhdGlvbiBieQorICAgICAgVmluYXkgU2FqaXAuCisKKyAgIExhdW5jaGVyIGRvY3VtZW50YXRpb246IDpyZWY6YGxhdW5jaGVyYAorCisgICBJbnN0YWxsZXIgUEFUSCBtb2RpZmljYXRpb246IDpyZWY6YHdpbmRvd3MtcGF0aC1tb2RgCisKKworLi4gX3BlcC0zMTUxOgorCitQRVAgMzE1MTogUmV3b3JraW5nIHRoZSBPUyBhbmQgSU8gZXhjZXB0aW9uIGhpZXJhcmNoeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGhpZXJhcmNoeSBvZiBleGNlcHRpb25zIHJhaXNlZCBieSBvcGVyYXRpbmcgc3lzdGVtIGVycm9ycyBpcyBub3cgYm90aAorc2ltcGxpZmllZCBhbmQgZmluZXItZ3JhaW5lZC4KKworWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYW55bW9yZSBhYm91dCBjaG9vc2luZyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uCit0eXBlIGJldHdlZW4gOmV4YzpgT1NFcnJvcmAsIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCwKKzpleGM6YFdpbmRvd3NFcnJvcmAsIDpleGM6YG1tYXAuZXJyb3JgLCA6ZXhjOmBzb2NrZXQuZXJyb3JgIG9yCis6ZXhjOmBzZWxlY3QuZXJyb3JgLiAgQWxsIHRoZXNlIGV4Y2VwdGlvbiB0eXBlcyBhcmUgbm93IG9ubHkgb25lOgorOmV4YzpgT1NFcnJvcmAuICBUaGUgb3RoZXIgbmFtZXMgYXJlIGtlcHQgYXMgYWxpYXNlcyBmb3IgY29tcGF0aWJpbGl0eQorcmVhc29ucy4KKworQWxzbywgaXQgaXMgbm93IGVhc2llciB0byBjYXRjaCBhIHNwZWNpZmljIGVycm9yIGNvbmRpdGlvbi4gIEluc3RlYWQgb2YKK2luc3BlY3RpbmcgdGhlIGBgZXJybm9gYCBhdHRyaWJ1dGUgKG9yIGBgYXJnc1swXWBgKSBmb3IgYSBwYXJ0aWN1bGFyCitjb25zdGFudCBmcm9tIHRoZSA6bW9kOmBlcnJub2AgbW9kdWxlLCB5b3UgY2FuIGNhdGNoIHRoZSBhZGVxdWF0ZQorOmV4YzpgT1NFcnJvcmAgc3ViY2xhc3MuICBUaGUgYXZhaWxhYmxlIHN1YmNsYXNzZXMgYXJlIHRoZSBmb2xsb3dpbmc6CisKKyogOmV4YzpgQmxvY2tpbmdJT0Vycm9yYAorKiA6ZXhjOmBDaGlsZFByb2Nlc3NFcnJvcmAKKyogOmV4YzpgQ29ubmVjdGlvbkVycm9yYAorKiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgCisqIDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYAorKiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYAorKiA6ZXhjOmBJc0FEaXJlY3RvcnlFcnJvcmAKKyogOmV4YzpgTm90QURpcmVjdG9yeUVycm9yYAorKiA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgCisqIDpleGM6YFByb2Nlc3NMb29rdXBFcnJvcmAKKyogOmV4YzpgVGltZW91dEVycm9yYAorCitBbmQgdGhlIDpleGM6YENvbm5lY3Rpb25FcnJvcmAgaXRzZWxmIGhhcyBmaW5lci1ncmFpbmVkIHN1YmNsYXNzZXM6CisKKyogOmV4YzpgQnJva2VuUGlwZUVycm9yYAorKiA6ZXhjOmBDb25uZWN0aW9uQWJvcnRlZEVycm9yYAorKiA6ZXhjOmBDb25uZWN0aW9uUmVmdXNlZEVycm9yYAorKiA6ZXhjOmBDb25uZWN0aW9uUmVzZXRFcnJvcmAKKworVGhhbmtzIHRvIHRoZSBuZXcgZXhjZXB0aW9ucywgY29tbW9uIHVzYWdlcyBvZiB0aGUgOm1vZDpgZXJybm9gIGNhbiBub3cgYmUKK2F2b2lkZWQuICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIHdyaXR0ZW4gZm9yIFB5dGhvbiAzLjI6OgorCisgICAgZnJvbSBlcnJubyBpbXBvcnQgRU5PRU5ULCBFQUNDRVMsIEVQRVJNCisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3BlbigiZG9jdW1lbnQudHh0IikgYXMgZjoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQoKQorICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKKyAgICAgICAgaWYgZXJyLmVycm5vID09IEVOT0VOVDoKKyAgICAgICAgICAgIHByaW50KCJkb2N1bWVudC50eHQgZmlsZSBpcyBtaXNzaW5nIikKKyAgICAgICAgZWxpZiBlcnIuZXJybm8gaW4gKEVBQ0NFUywgRVBFUk0pOgorICAgICAgICAgICAgcHJpbnQoIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gcmVhZCBkb2N1bWVudC50eHQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UKKworY2FuIG5vdyBiZSB3cml0dGVuIHdpdGhvdXQgdGhlIDptb2Q6YGVycm5vYCBpbXBvcnQgYW5kIHdpdGhvdXQgbWFudWFsCitpbnNwZWN0aW9uIG9mIGV4Y2VwdGlvbiBhdHRyaWJ1dGVzOjoKKworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKCJkb2N1bWVudC50eHQiKSBhcyBmOgorICAgICAgICAgICAgY29udGVudCA9IGYucmVhZCgpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwcmludCgiZG9jdW1lbnQudHh0IGZpbGUgaXMgbWlzc2luZyIpCisgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKKyAgICAgICAgcHJpbnQoIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gcmVhZCBkb2N1bWVudC50eHQiKQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzE1MWAgLSBSZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBFeGNlcHRpb24gSGllcmFyY2h5CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgQW50b2luZSBQaXRyb3UKKworCisuLiBfcGVwLTM4MDoKKworUEVQIDM4MDogU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUEVQIDM4MCBhZGRzIHRoZSBgYHlpZWxkIGZyb21gYCBleHByZXNzaW9uLCBhbGxvd2luZyBhIGdlbmVyYXRvciB0byBkZWxlZ2F0ZQorcGFydCBvZiBpdHMgb3BlcmF0aW9ucyB0byBhbm90aGVyIGdlbmVyYXRvci4gVGhpcyBhbGxvd3MgYSBzZWN0aW9uIG9mIGNvZGUKK2NvbnRhaW5pbmcgJ3lpZWxkJyB0byBiZSBmYWN0b3JlZCBvdXQgYW5kIHBsYWNlZCBpbiBhbm90aGVyIGdlbmVyYXRvci4KK0FkZGl0aW9uYWxseSwgdGhlIHN1YmdlbmVyYXRvciBpcyBhbGxvd2VkIHRvIHJldHVybiB3aXRoIGEgdmFsdWUsIGFuZCB0aGUKK3ZhbHVlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBkZWxlZ2F0aW5nIGdlbmVyYXRvci4KKworV2hpbGUgZGVzaWduZWQgcHJpbWFyaWx5IGZvciB1c2UgaW4gZGVsZWdhdGluZyB0byBhIHN1YmdlbmVyYXRvciwgdGhlIGBgeWllbGQKK2Zyb21gYCBleHByZXNzaW9uIGFjdHVhbGx5IGFsbG93cyBkZWxlZ2F0aW9uIHRvIGFyYml0cmFyeSBzdWJpdGVyYXRvcnMuCisKK0ZvciBzaW1wbGUgaXRlcmF0b3JzLCBgYHlpZWxkIGZyb20gaXRlcmFibGVgYCBpcyBlc3NlbnRpYWxseSBqdXN0IGEgc2hvcnRlbmVkCitmb3JtIG9mIGBgZm9yIGl0ZW0gaW4gaXRlcmFibGU6IHlpZWxkIGl0ZW1gYDo6CisKKyAgICA+Pj4gZGVmIGcoeCk6CisgICAgLi4uICAgICB5aWVsZCBmcm9tIHJhbmdlKHgsIDAsIC0xKQorICAgIC4uLiAgICAgeWllbGQgZnJvbSByYW5nZSh4KQorICAgIC4uLgorICAgID4+PiBsaXN0KGcoNSkpCisgICAgWzUsIDQsIDMsIDIsIDEsIDAsIDEsIDIsIDMsIDRdCisKK0hvd2V2ZXIsIHVubGlrZSBhbiBvcmRpbmFyeSBsb29wLCBgYHlpZWxkIGZyb21gYCBhbGxvd3Mgc3ViZ2VuZXJhdG9ycyB0bworcmVjZWl2ZSBzZW50IGFuZCB0aHJvd24gdmFsdWVzIGRpcmVjdGx5IGZyb20gdGhlIGNhbGxpbmcgc2NvcGUsIGFuZAorcmV0dXJuIGEgZmluYWwgdmFsdWUgdG8gdGhlIG91dGVyIGdlbmVyYXRvcjo6CisKKyAgICA+Pj4gZGVmIGFjY3VtdWxhdGUoc3RhcnQ9MCk6CisgICAgLi4uICAgICB0YWxseSA9IHN0YXJ0CisgICAgLi4uICAgICB3aGlsZSAxOgorICAgIC4uLiAgICAgICAgIG5leHQgPSB5aWVsZAorICAgIC4uLiAgICAgICAgIGlmIG5leHQgaXMgTm9uZToKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHRhbGx5CisgICAgLi4uICAgICAgICAgdGFsbHkgKz0gbmV4dAorICAgIC4uLgorICAgID4+PiBkZWYgZ2F0aGVyX3RhbGxpZXModGFsbGllcywgc3RhcnQ9MCk6CisgICAgLi4uICAgICB3aGlsZSAxOgorICAgIC4uLiAgICAgICAgIHRhbGx5ID0geWllbGQgZnJvbSBhY2N1bXVsYXRlKCkKKyAgICAuLi4gICAgICAgICB0YWxsaWVzLmFwcGVuZCh0YWxseSkKKyAgICAuLi4KKyAgICA+Pj4gdGFsbGllcyA9IFtdCisgICAgPj4+IGFjYyA9IGdhdGhlcl90YWxsaWVzKHRhbGxpZXMpCisgICAgPj4+IG5leHQoYWNjKSAjIEVuc3VyZSB0aGUgYWNjdW11bGF0b3IgaXMgcmVhZHkgdG8gYWNjZXB0IHZhbHVlcworICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgLi4uICAgICBhY2Muc2VuZChpKQorICAgIC4uLgorICAgID4+PiBhY2Muc2VuZChOb25lKSAjIEZpbmlzaCB0aGUgZmlyc3QgdGFsbHkKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgLi4uICAgICBhY2Muc2VuZChpKQorICAgIC4uLgorICAgID4+PiBhY2Muc2VuZChOb25lKSAjIEZpbmlzaCB0aGUgc2Vjb25kIHRhbGx5CisgICAgPj4+IHRhbGxpZXMKKyAgICBbNDUsIDEwXQorCitUaGUgbWFpbiBwcmluY2lwbGUgZHJpdmluZyB0aGlzIGNoYW5nZSBpcyB0byBhbGxvdyBldmVuIGdlbmVyYXRvcnMgdGhhdCBhcmUKK2Rlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGUgYGBzZW5kYGAgYW5kIGBgdGhyb3dgYCBtZXRob2RzIHRvIGJlIHNwbGl0IGludG8KK211bHRpcGxlIHN1YmdlbmVyYXRvcnMgYXMgZWFzaWx5IGFzIGEgc2luZ2xlIGxhcmdlIGZ1bmN0aW9uIGNhbiBiZSBzcGxpdCBpbnRvCittdWx0aXBsZSBzdWJmdW5jdGlvbnMuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzODBgIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yCisgICAgICBQRVAgd3JpdHRlbiBieSBHcmVnIEV3aW5nOyBpbXBsZW1lbnRhdGlvbiBieSBHcmVnIEV3aW5nLCBpbnRlZ3JhdGVkIGludG8KKyAgICAgIDMuMyBieSBSZW5hdWQgQmxhbmNoLCBSeWFuIEtlbGx5IGFuZCBOaWNrIENvZ2hsYW4sIGRvY3VtZW50YXRpb24gYnkKKyAgICAgIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKKworCitQRVAgNDA5OiBTdXBwcmVzc2luZyBleGNlcHRpb24gY29udGV4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUEVQIDQwOSBpbnRyb2R1Y2VzIG5ldyBzeW50YXggdGhhdCBhbGxvd3MgdGhlIGRpc3BsYXkgb2YgdGhlIGNoYWluZWQKK2V4Y2VwdGlvbiBjb250ZXh0IHRvIGJlIGRpc2FibGVkLiBUaGlzIGFsbG93cyBjbGVhbmVyIGVycm9yIG1lc3NhZ2VzIGluCithcHBsaWNhdGlvbnMgdGhhdCBjb252ZXJ0IGJldHdlZW4gZXhjZXB0aW9uIHR5cGVzOjoKKworICAgID4+PiBjbGFzcyBEOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhKToKKyAgICAuLi4gICAgICAgICBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzID0gZXh0cmEKKyAgICAuLi4gICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAuLi4gICAgICAgICB0cnk6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzW2F0dHJdCisgICAgLi4uICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgIC4uLiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKSBmcm9tIE5vbmUKKyAgICAuLi4KKyAgICA+Pj4gRCh7fSkueAorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA4LCBpbiBfX2dldGF0dHJfXworICAgIEF0dHJpYnV0ZUVycm9yOiB4CisKK1dpdGhvdXQgdGhlIGBgZnJvbSBOb25lYGAgc3VmZml4IHRvIHN1cHByZXNzIHRoZSBjYXVzZSwgdGhlIG9yaWdpbmFsCitleGNlcHRpb24gd291bGQgYmUgZGlzcGxheWVkIGJ5IGRlZmF1bHQ6OgorCisgICAgPj4+IGNsYXNzIEM6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgZXh0cmEpOgorICAgIC4uLiAgICAgICAgIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXMgPSBleHRyYQorICAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgIC4uLiAgICAgICAgIHRyeToKKyAgICAuLi4gICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhX2F0dHJpYnV0ZXNbYXR0cl0KKyAgICAuLi4gICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgLi4uICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCisgICAgLi4uCisgICAgPj4+IEMoe30pLngKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA2LCBpbiBfX2dldGF0dHJfXworICAgIEtleUVycm9yOiAneCcKKworICAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKKworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA4LCBpbiBfX2dldGF0dHJfXworICAgIEF0dHJpYnV0ZUVycm9yOiB4CisKK05vIGRlYnVnZ2luZyBjYXBhYmlsaXR5IGlzIGxvc3QsIGFzIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gY29udGV4dCByZW1haW5zCithdmFpbGFibGUgaWYgbmVlZGVkIChmb3IgZXhhbXBsZSwgaWYgYW4gaW50ZXJ2ZW5pbmcgbGlicmFyeSBoYXMgaW5jb3JyZWN0bHkKK3N1cHByZXNzZWQgdmFsdWFibGUgdW5kZXJseWluZyBkZXRhaWxzKTo6CisKKyAgICA+Pj4gdHJ5OgorICAgIC4uLiAgICAgRCh7fSkueAorICAgIC4uLiBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZXhjOgorICAgIC4uLiAgICAgcHJpbnQocmVwcihleGMuX19jb250ZXh0X18pKQorICAgIC4uLgorICAgIEtleUVycm9yKCd4JywpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MDlgIC0gU3VwcHJlc3NpbmcgZXhjZXB0aW9uIGNvbnRleHQKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEV0aGFuIEZ1cm1hbjsgaW1wbGVtZW50ZWQgYnkgRXRoYW4gRnVybWFuIGFuZCBOaWNrCisgICAgICBDb2dobGFuLgorCisKK1BFUCA0MTQ6IEV4cGxpY2l0IFVuaWNvZGUgbGl0ZXJhbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGVhc2UgdGhlIHRyYW5zaXRpb24gZnJvbSBQeXRob24gMiBmb3IgVW5pY29kZSBhd2FyZSBQeXRob24gYXBwbGljYXRpb25zCit0aGF0IG1ha2UgaGVhdnkgdXNlIG9mIFVuaWNvZGUgbGl0ZXJhbHMsIFB5dGhvbiAzLjMgb25jZSBhZ2FpbiBzdXBwb3J0cyB0aGUKKyJgYHVgYCIgcHJlZml4IGZvciBzdHJpbmcgbGl0ZXJhbHMuIFRoaXMgcHJlZml4IGhhcyBubyBzZW1hbnRpYyBzaWduaWZpY2FuY2UKK2luIFB5dGhvbiAzLCBpdCBpcyBwcm92aWRlZCBzb2xlbHkgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVyZWx5IG1lY2hhbmljYWwKK2NoYW5nZXMgaW4gbWlncmF0aW5nIHRvIFB5dGhvbiAzLCBtYWtpbmcgaXQgZWFzaWVyIGZvciBkZXZlbG9wZXJzIHRvIGZvY3VzIG9uCit0aGUgbW9yZSBzaWduaWZpY2FudCBzZW1hbnRpYyBjaGFuZ2VzIChzdWNoIGFzIHRoZSBzdHJpY3RlciBkZWZhdWx0CitzZXBhcmF0aW9uIG9mIGJpbmFyeSBhbmQgdGV4dCBkYXRhKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQxNGAgLSBFeHBsaWNpdCBVbmljb2RlIGxpdGVyYWxzCisgICAgICBQRVAgd3JpdHRlbiBieSBBcm1pbiBSb25hY2hlci4KKworCitQRVAgMzE1NTogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRnVuY3Rpb25zIGFuZCBjbGFzcyBvYmplY3RzIGhhdmUgYSBuZXcgYGBfX3F1YWxuYW1lX19gYCBhdHRyaWJ1dGUgcmVwcmVzZW50aW5nCit0aGUgInBhdGgiIGZyb20gdGhlIG1vZHVsZSB0b3AtbGV2ZWwgdG8gdGhlaXIgZGVmaW5pdGlvbi4gIEZvciBnbG9iYWwgZnVuY3Rpb25zCithbmQgY2xhc3NlcywgdGhpcyBpcyB0aGUgc2FtZSBhcyBgYF9fbmFtZV9fYGAuICBGb3Igb3RoZXIgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLAoraXQgcHJvdmlkZXMgYmV0dGVyIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZXkgd2VyZSBhY3R1YWxseSBkZWZpbmVkLCBhbmQKK2hvdyB0aGV5IG1pZ2h0IGJlIGFjY2Vzc2libGUgZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLgorCitFeGFtcGxlIHdpdGggKG5vbi1ib3VuZCkgbWV0aG9kczo6CisKKyAgID4+PiBjbGFzcyBDOgorICAgLi4uICAgICBkZWYgbWV0aChzZWxmKToKKyAgIC4uLiAgICAgICAgIHBhc3MKKyAgID4+PiBDLm1ldGguX19uYW1lX18KKyAgICdtZXRoJworICAgPj4+IEMubWV0aC5fX3F1YWxuYW1lX18KKyAgICdDLm1ldGgnCisKK0V4YW1wbGUgd2l0aCBuZXN0ZWQgY2xhc3Nlczo6CisKKyAgID4+PiBjbGFzcyBDOgorICAgLi4uICAgICBjbGFzcyBEOgorICAgLi4uICAgICAgICAgZGVmIG1ldGgoc2VsZik6CisgICAuLi4gICAgICAgICAgICAgcGFzcworICAgLi4uCisgICA+Pj4gQy5ELl9fbmFtZV9fCisgICAnRCcKKyAgID4+PiBDLkQuX19xdWFsbmFtZV9fCisgICAnQy5EJworICAgPj4+IEMuRC5tZXRoLl9fbmFtZV9fCisgICAnbWV0aCcKKyAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICdDLkQubWV0aCcKKworRXhhbXBsZSB3aXRoIG5lc3RlZCBmdW5jdGlvbnM6OgorCisgICA+Pj4gZGVmIG91dGVyKCk6CisgICAuLi4gICAgIGRlZiBpbm5lcigpOgorICAgLi4uICAgICAgICAgcGFzcworICAgLi4uICAgICByZXR1cm4gaW5uZXIKKyAgIC4uLgorICAgPj4+IG91dGVyKCkuX19uYW1lX18KKyAgICdpbm5lcicKKyAgID4+PiBvdXRlcigpLl9fcXVhbG5hbWVfXworICAgJ291dGVyLjxsb2NhbHM+LmlubmVyJworCitUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRob3NlIG9iamVjdHMgaXMgYWxzbyBjaGFuZ2VkIHRvIGluY2x1ZGUgdGhlCituZXcsIG1vcmUgcHJlY2lzZSBpbmZvcm1hdGlvbjo6CisKKyAgID4+PiBzdHIoQy5EKQorICAgIjxjbGFzcyAnX19tYWluX18uQy5EJz4iCisgICA+Pj4gc3RyKEMuRC5tZXRoKQorICAgJzxmdW5jdGlvbiBDLkQubWV0aCBhdCAweDdmNDZiOWZlMzFlMD4nCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTU1YCAtIFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBBbnRvaW5lIFBpdHJvdS4KKworCisuLiBfcGVwLTQxMjoKKworUEVQIDQxMjogS2V5LVNoYXJpbmcgRGljdGlvbmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEaWN0aW9uYXJpZXMgdXNlZCBmb3IgdGhlIHN0b3JhZ2Ugb2Ygb2JqZWN0cycgYXR0cmlidXRlcyBhcmUgbm93IGFibGUgdG8KK3NoYXJlIHBhcnQgb2YgdGhlaXIgaW50ZXJuYWwgc3RvcmFnZSBiZXR3ZWVuIGVhY2ggb3RoZXIgKG5hbWVseSwgdGhlIHBhcnQKK3doaWNoIHN0b3JlcyB0aGUga2V5cyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBoYXNoZXMpLiAgVGhpcyByZWR1Y2VzIHRoZSBtZW1vcnkKK2NvbnN1bXB0aW9uIG9mIHByb2dyYW1zIGNyZWF0aW5nIG1hbnkgaW5zdGFuY2VzIG9mIG5vbi1idWlsdGluIHR5cGVzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDEyYCAtIEtleS1TaGFyaW5nIERpY3Rpb25hcnkKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBNYXJrIFNoYW5ub24uCisKKworUEVQIDM2MjogRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIG5ldyBmdW5jdGlvbiA6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIG1ha2VzIGludHJvc3BlY3Rpb24gb2YgcHl0aG9uCitjYWxsYWJsZXMgZWFzeSBhbmQgc3RyYWlnaHRmb3J3YXJkLiAgQSBicm9hZCByYW5nZSBvZiBjYWxsYWJsZXMgaXMgc3VwcG9ydGVkOgorcHl0aG9uIGZ1bmN0aW9ucywgZGVjb3JhdGVkIG9yIG5vdCwgY2xhc3NlcywgYW5kIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAKK29iamVjdHMuICBOZXcgY2xhc3NlcyA6Y2xhc3M6YGluc3BlY3QuU2lnbmF0dXJlYCwgOmNsYXNzOmBpbnNwZWN0LlBhcmFtZXRlcmAKK2FuZCA6Y2xhc3M6YGluc3BlY3QuQm91bmRBcmd1bWVudHNgIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhbGwgc2lnbmF0dXJlcywKK3N1Y2ggYXMsIGFubm90YXRpb25zLCBkZWZhdWx0IHZhbHVlcywgcGFyYW1ldGVycyBraW5kcywgYW5kIGJvdW5kIGFyZ3VtZW50cywKK3doaWNoIGNvbnNpZGVyYWJseSBzaW1wbGlmaWVzIHdyaXRpbmcgZGVjb3JhdG9ycyBhbmQgYW55IGNvZGUgdGhhdCB2YWxpZGF0ZXMKK29yIGFtZW5kcyBjYWxsaW5nIHNpZ25hdHVyZXMgb3IgYXJndW1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzYyYDogLSAgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdAorICAgICAgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uLCBZdXJ5IFNlbGl2YW5vdiwgTGFycnkgSGFzdGluZ3MsIEppd29uIFNlbzsKKyAgICAgIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKK1BFUCA0MjE6IEFkZGluZyBzeXMuaW1wbGVtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgYXR0cmlidXRlIG9uIHRoZSA6bW9kOmBzeXNgIG1vZHVsZSBleHBvc2VzIGRldGFpbHMgc3BlY2lmaWMgdG8gdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgaW50ZXJwcmV0ZXIuICBUaGUgaW5pdGlhbCBzZXQgb2YKK2F0dHJpYnV0ZXMgb24gOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbmAgYXJlIGBgbmFtZWBgLCBgYHZlcnNpb25gYCwKK2BgaGV4dmVyc2lvbmBgLCBhbmQgYGBjYWNoZV90YWdgYC4KKworVGhlIGludGVudGlvbiBvZiBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGlzIHRvIGNvbnNvbGlkYXRlIGludG8gb25lIG5hbWVzcGFjZQordGhlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRhdGEgdXNlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFRoaXMgYWxsb3dzCitkaWZmZXJlbnQgUHl0aG9uIGltcGxlbWVudGF0aW9ucyB0byBzaGFyZSBhIHNpbmdsZSBzdGFuZGFyZCBsaWJyYXJ5IGNvZGUgYmFzZQorbXVjaCBtb3JlIGVhc2lseS4gIEluIGl0cyBpbml0aWFsIHN0YXRlLCBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGhvbGRzIG9ubHkgYQorc21hbGwgcG9ydGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZGF0YS4gIE92ZXIgdGltZSB0aGF0IHJhdGlvIHdpbGwKK3NoaWZ0IGluIG9yZGVyIHRvIG1ha2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgbW9yZSBwb3J0YWJsZS4KKworT25lIGV4YW1wbGUgb2YgaW1wcm92ZWQgc3RhbmRhcmQgbGlicmFyeSBwb3J0YWJpbGl0eSBpcyBgYGNhY2hlX3RhZ2BgLiAgQXMgb2YKK1B5dGhvbiAzLjMsIGBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2BgIGlzIHVzZWQgYnkgOm1vZDpgaW1wb3J0bGliYCB0bworc3VwcG9ydCA6cGVwOmAzMTQ3YCBjb21wbGlhbmNlLiAgQW55IFB5dGhvbiBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMKK2BgaW1wb3J0bGliYGAgZm9yIGl0cyBidWlsdC1pbiBpbXBvcnQgc3lzdGVtIG1heSB1c2UgYGBjYWNoZV90YWdgYCB0byBjb250cm9sCit0aGUgY2FjaGluZyBiZWhhdmlvciBmb3IgbW9kdWxlcy4KKworU2ltcGxlTmFtZXNwYWNlCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIGBgc3lzLmltcGxlbWVudGF0aW9uYGAgYWxzbyBpbnRyb2R1Y2VzIGEgbmV3IHR5cGUgdG8KK1B5dGhvbjogOmNsYXNzOmB0eXBlcy5TaW1wbGVOYW1lc3BhY2VgLiAgSW4gY29udHJhc3QgdG8gYSBtYXBwaW5nLWJhc2VkCituYW1lc3BhY2UsIGxpa2UgOmNsYXNzOmBkaWN0YCwgYGBTaW1wbGVOYW1lc3BhY2VgYCBpcyBhdHRyaWJ1dGUtYmFzZWQsIGxpa2UKKzpjbGFzczpgb2JqZWN0YC4gIEhvd2V2ZXIsIHVubGlrZSBgYG9iamVjdGBgLCBgYFNpbXBsZU5hbWVzcGFjZWBgIGluc3RhbmNlcworYXJlIHdyaXRhYmxlLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gYWRkLCByZW1vdmUsIGFuZCBtb2RpZnkgdGhlIG5hbWVzcGFjZQordGhyb3VnaCBub3JtYWwgYXR0cmlidXRlIGFjY2Vzcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQyMWAgLSBBZGRpbmcgc3lzLmltcGxlbWVudGF0aW9uCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF9pbXBvcnRsaWI6CisKK1VzaW5nIGltcG9ydGxpYiBhcyB0aGUgSW1wbGVtZW50YXRpb24gb2YgSW1wb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmlzc3VlOmAyMzc3YCAtIFJlcGxhY2UgX19pbXBvcnRfXyB3LyBpbXBvcnRsaWIuX19pbXBvcnRfXworOmlzc3VlOmAxMzk1OWAgLSBSZS1pbXBsZW1lbnQgcGFydHMgb2YgOm1vZDpgaW1wYCBpbiBwdXJlIFB5dGhvbgorOmlzc3VlOmAxNDYwNWAgLSBNYWtlIGltcG9ydCBtYWNoaW5lcnkgZXhwbGljaXQKKzppc3N1ZTpgMTQ2NDZgIC0gUmVxdWlyZSBsb2FkZXJzIHNldCBfX2xvYWRlcl9fIGFuZCBfX3BhY2thZ2VfXworCitUaGUgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGlzIG5vdyBwb3dlcmVkIGJ5IDpmdW5jOmBpbXBvcnRsaWIuX19pbXBvcnRfX2AuCitUaGlzIHdvcmsgbGVhZHMgdG8gdGhlIGNvbXBsZXRpb24gb2YgInBoYXNlIDIiIG9mIDpwZXA6YDMwMmAuIFRoZXJlIGFyZQorbXVsdGlwbGUgYmVuZWZpdHMgdG8gdGhpcyBjaGFuZ2UuIEZpcnN0LCBpdCBoYXMgYWxsb3dlZCBmb3IgbW9yZSBvZiB0aGUKK21hY2hpbmVyeSBwb3dlcmluZyBpbXBvcnQgdG8gYmUgZXhwb3NlZCBpbnN0ZWFkIG9mIGJlaW5nIGltcGxpY2l0IGFuZCBoaWRkZW4KK3dpdGhpbiB0aGUgQyBjb2RlLiBJdCBhbHNvIHByb3ZpZGVzIGEgc2luZ2xlIGltcGxlbWVudGF0aW9uIGZvciBhbGwgUHl0aG9uIFZNcworc3VwcG9ydGluZyBQeXRob24gMy4zIHRvIHVzZSwgaGVscGluZyB0byBlbmQgYW55IFZNLXNwZWNpZmljIGRldmlhdGlvbnMgaW4KK2ltcG9ydCBzZW1hbnRpY3MuIEFuZCBmaW5hbGx5IGl0IGVhc2VzIHRoZSBtYWludGVuYW5jZSBvZiBpbXBvcnQsIGFsbG93aW5nIGZvcgorZnV0dXJlIGdyb3d0aCB0byBvY2N1ci4KKworRm9yIHRoZSBjb21tb24gdXNlciwgdGhlcmUgc2hvdWxkIGJlIG5vIHZpc2libGUgY2hhbmdlIGluIHNlbWFudGljcy4gIEZvcgordGhvc2Ugd2hvc2UgY29kZSBjdXJyZW50bHkgbWFuaXB1bGF0ZXMgaW1wb3J0IG9yIGNhbGxzIGltcG9ydAorcHJvZ3JhbW1hdGljYWxseSwgdGhlIGNvZGUgY2hhbmdlcyB0aGF0IG1pZ2h0IHBvc3NpYmx5IGJlIHJlcXVpcmVkIGFyZSBjb3ZlcmVkCitpbiB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXyBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKK05ldyBBUElzCistLS0tLS0tLQorT25lIG9mIHRoZSBsYXJnZSBiZW5lZml0cyBvZiB0aGlzIHdvcmsgaXMgdGhlIGV4cG9zdXJlIG9mIHdoYXQgZ29lcyBpbnRvCittYWtpbmcgdGhlIGltcG9ydCBzdGF0ZW1lbnQgd29yay4gVGhhdCBtZWFucyB0aGUgdmFyaW91cyBpbXBvcnRlcnMgdGhhdCB3ZXJlCitvbmNlIGltcGxpY2l0IGFyZSBub3cgZnVsbHkgZXhwb3NlZCBhcyBwYXJ0IG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgIHBhY2thZ2UuCisKK1RoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgZGVmaW5lZCBpbiA6bW9kOmBpbXBvcnRsaWIuYWJjYCBoYXZlIGJlZW4gZXhwYW5kZWQKK3RvIHByb3Blcmx5IGRlbGluZWF0ZSBiZXR3ZWVuIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZpbmRlcj5gCithbmQgOnRlcm06YHBhdGggZW50cnkgZmluZGVycyA8cGF0aCBlbnRyeSBmaW5kZXI+YCBieSBpbnRyb2R1Y2luZworOmNsYXNzOmBpbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyYCBhbmQKKzpjbGFzczpgaW1wb3J0bGliLmFiYy5QYXRoRW50cnlGaW5kZXJgLCByZXNwZWN0aXZlbHkuIFRoZSBvbGQgQUJDIG9mCis6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBpcyBub3cgb25seSBwcm92aWRlZCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKK2FuZCBkb2VzIG5vdCBlbmZvcmNlIGFueSBtZXRob2QgcmVxdWlyZW1lbnRzLgorCitJbiB0ZXJtcyBvZiBmaW5kZXJzLCA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgZXhwb3NlcyB0aGUKK21lY2hhbmlzbSB1c2VkIHRvIHNlYXJjaCBmb3Igc291cmNlIGFuZCBieXRlY29kZSBmaWxlcyBvZiBhIG1vZHVsZS4gUHJldmlvdXNseQordGhpcyBjbGFzcyB3YXMgYW4gaW1wbGljaXQgbWVtYmVyIG9mIDphdHRyOmBzeXMucGF0aF9ob29rc2AuCisKK0ZvciBsb2FkZXJzLCB0aGUgbmV3IGFic3RyYWN0IGJhc2UgY2xhc3MgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXJgIGhlbHBzCit3cml0ZSBhIGxvYWRlciB0aGF0IHVzZXMgdGhlIGZpbGUgc3lzdGVtIGFzIHRoZSBzdG9yYWdlIG1lY2hhbmlzbSBmb3IgYSBtb2R1bGUncworY29kZS4gVGhlIGxvYWRlciBmb3Igc291cmNlIGZpbGVzCisoOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJgKSwgc291cmNlbGVzcyBieXRlY29kZSBmaWxlcworKDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcmApLCBhbmQgZXh0ZW5zaW9uIG1vZHVsZXMKKyg6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcmApIGFyZSBub3cgYXZhaWxhYmxlIGZvcgorZGlyZWN0IHVzZS4KKworOmV4YzpgSW1wb3J0RXJyb3JgIG5vdyBoYXMgYGBuYW1lYGAgYW5kIGBgcGF0aGBgIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHNldCB3aGVuCit0aGVyZSBpcyByZWxldmFudCBkYXRhIHRvIHByb3ZpZGUuIFRoZSBtZXNzYWdlIGZvciBmYWlsZWQgaW1wb3J0cyB3aWxsIGFsc28KK3Byb3ZpZGUgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIG5vdyBpbnN0ZWFkIG9mIGp1c3QgdGhlIHRhaWwgZW5kIG9mIHRoZQorbW9kdWxlJ3MgbmFtZS4KKworVGhlIDpmdW5jOmBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXNgIGZ1bmN0aW9uIHdpbGwgbm93IGNhbGwgdGhlIG1ldGhvZCB3aXRoCit0aGUgc2FtZSBuYW1lIG9uIGFsbCBmaW5kZXJzIGNhY2hlZCBpbiA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHRvIGhlbHAKK2NsZWFuIHVwIGFueSBzdG9yZWQgc3RhdGUgYXMgbmVjZXNzYXJ5LgorCitWaXNpYmxlIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLQorCitGb3IgcG90ZW50aWFsIHJlcXVpcmVkIGNoYW5nZXMgdG8gY29kZSwgc2VlIHRoZSBgUG9ydGluZyBQeXRob24gY29kZWBfCitzZWN0aW9uLgorCitCZXlvbmQgdGhlIGV4cGFuc2Ugb2Ygd2hhdCA6bW9kOmBpbXBvcnRsaWJgIG5vdyBleHBvc2VzLCB0aGVyZSBhcmUgb3RoZXIKK3Zpc2libGUgY2hhbmdlcyB0byBpbXBvcnQuIFRoZSBiaWdnZXN0IGlzIHRoYXQgOmF0dHI6YHN5cy5tZXRhX3BhdGhgIGFuZAorOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBub3cgc3RvcmUgYWxsIG9mIHRoZSBtZXRhIHBhdGggZmluZGVycyBhbmQgcGF0aCBlbnRyeQoraG9va3MgdXNlZCBieSBpbXBvcnQuICBQcmV2aW91c2x5IHRoZSBmaW5kZXJzIHdlcmUgaW1wbGljaXQgYW5kIGhpZGRlbiB3aXRoaW4KK3RoZSBDIGNvZGUgb2YgaW1wb3J0IGluc3RlYWQgb2YgYmVpbmcgZGlyZWN0bHkgZXhwb3NlZC4gVGhpcyBtZWFucyB0aGF0IG9uZSBjYW4KK25vdyBlYXNpbHkgcmVtb3ZlIG9yIGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIHZhcmlvdXMgZmluZGVycyB0byBmaXQgb25lJ3MgbmVlZHMuCisKK0Fub3RoZXIgY2hhbmdlIGlzIHRoYXQgYWxsIG1vZHVsZXMgaGF2ZSBhIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSwgc3RvcmluZyB0aGUKK2xvYWRlciB1c2VkIHRvIGNyZWF0ZSB0aGUgbW9kdWxlLiA6cGVwOmAzMDJgIGhhcyBiZWVuIHVwZGF0ZWQgdG8gbWFrZSB0aGlzCithdHRyaWJ1dGUgbWFuZGF0b3J5IGZvciBsb2FkZXJzIHRvIGltcGxlbWVudCwgc28gaW4gdGhlIGZ1dHVyZSBvbmNlIDNyZC1wYXJ0eQorbG9hZGVycyBoYXZlIGJlZW4gdXBkYXRlZCBwZW9wbGUgd2lsbCBiZSBhYmxlIHRvIHJlbHkgb24gdGhlIGV4aXN0ZW5jZSBvZiB0aGUKK2F0dHJpYnV0ZS4gVW50aWwgc3VjaCB0aW1lLCB0aG91Z2gsIGltcG9ydCBpcyBzZXR0aW5nIHRoZSBtb2R1bGUgcG9zdC1sb2FkLgorCitMb2FkZXJzIGFyZSBhbHNvIG5vdyBleHBlY3RlZCB0byBzZXQgdGhlIGBgX19wYWNrYWdlX19gYCBhdHRyaWJ1dGUgZnJvbQorOnBlcDpgMzY2YC4gT25jZSBhZ2FpbiwgaW1wb3J0IGl0c2VsZiBpcyBhbHJlYWR5IHNldHRpbmcgdGhpcyBvbiBhbGwgbG9hZGVycworZnJvbSA6bW9kOmBpbXBvcnRsaWJgIGFuZCBpbXBvcnQgaXRzZWxmIGlzIHNldHRpbmcgdGhlIGF0dHJpYnV0ZSBwb3N0LWxvYWQuCisKK2BgTm9uZWBgIGlzIG5vdyBpbnNlcnRlZCBpbnRvIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgd2hlbiBubyBmaW5kZXIKK2NhbiBiZSBmb3VuZCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLiBTaW5jZSA6Y2xhc3M6YGltcC5OdWxsSW1wb3J0ZXJgIGlzIG5vdAorZGlyZWN0bHkgZXhwb3NlZCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIGl0IGNvdWxkIG5vIGxvbmdlciBiZSByZWxpZWQgdXBvbiB0bworYWx3YXlzIGJlIGF2YWlsYWJsZSB0byB1c2UgYXMgYSB2YWx1ZSByZXByZXNlbnRpbmcgbm8gZmluZGVyIGZvdW5kLgorCitBbGwgb3RoZXIgY2hhbmdlcyByZWxhdGUgdG8gc2VtYW50aWMgY2hhbmdlcyB3aGljaCBzaG91bGQgYmUgdGFrZW4gaW50bworY29uc2lkZXJhdGlvbiB3aGVuIHVwZGF0aW5nIGNvZGUgZm9yIFB5dGhvbiAzLjMsIGFuZCB0aHVzIHNob3VsZCBiZSByZWFkIGFib3V0CitpbiB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXyBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKKyhJbXBsZW1lbnRhdGlvbiBieSBCcmV0dCBDYW5ub24pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQWRkZWQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KKyAgQm90aCA6ZnVuYzpgdW5pY29kZWRhdGEubG9va3VwKClgIGFuZCBgYCdcTnsuLi59J2BgIG5vdyByZXNvbHZlIG5hbWUgYWxpYXNlcywKKyAgYW5kIDpmdW5jOmB1bmljb2RlZGF0YS5sb29rdXAoKWAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworICAoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTI3NTNgKQorCisqIFVuaWNvZGUgZGF0YWJhc2UgdXBkYXRlZCB0byBVQ0QgdmVyc2lvbiA2LjEuMAorCisqIEVxdWFsaXR5IGNvbXBhcmlzb25zIG9uIDpmdW5jOmByYW5nZWAgb2JqZWN0cyBub3cgcmV0dXJuIGEgcmVzdWx0IHJlZmxlY3RpbmcKKyAgdGhlIGVxdWFsaXR5IG9mIHRoZSB1bmRlcmx5aW5nIHNlcXVlbmNlcyBnZW5lcmF0ZWQgYnkgdGhvc2UgcmFuZ2Ugb2JqZWN0cy4KKyAgKDppc3N1ZTpgMTMyMDFgKQorCisqIFRoZSBgYGNvdW50KClgYCwgYGBmaW5kKClgYCwgYGByZmluZCgpYGAsIGBgaW5kZXgoKWBgIGFuZCBgYHJpbmRleCgpYGAKKyAgbWV0aG9kcyBvZiA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgbm93IGFjY2VwdCBhbgorICBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMjU1IGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgorCisgIChDb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbiBpbiA6aXNzdWU6YDEyMTcwYCkKKworKiBOZXcgbWV0aG9kcyBoYXZlIGJlZW4gYWRkZWQgdG8gOmNsYXNzOmBsaXN0YCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgOgorICBgYGNvcHkoKWBgIGFuZCBgYGNsZWFyKClgYCAoOmlzc3VlOmAxMDUxNmApLiAgQ29uc2VxdWVudGx5LAorICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYCBub3cgYWxzbyBkZWZpbmVzIGEKKyAgOm1ldGg6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlLmNsZWFyYCBtZXRob2QgKDppc3N1ZTpgMTEzODhgKS4KKworKiBSYXcgYnl0ZXMgbGl0ZXJhbHMgY2FuIG5vdyBiZSB3cml0dGVuIGBgcmIiLi4uImBgIGFzIHdlbGwgYXMgYGBiciIuLi4iYGAuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM3NDhgLikKKworKiA6bWV0aDpgZGljdC5zZXRkZWZhdWx0YCBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksIG1ha2luZworICBpdCBhdG9taWMgd2hlbiB1c2VkIHdpdGggYnVpbHQtaW4gdHlwZXMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kgaW4gOmlzc3VlOmAxMzUyMWAuKQorCisqIFRoZSBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCB3aGVuIGEgZnVuY3Rpb24gY2FsbCBkb2VzIG5vdCBtYXRjaCB0aGUgZnVuY3Rpb24KKyAgc2lnbmF0dXJlIGhhdmUgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorCisgIChDb250cmlidXRlZCBieSBCZW5qYW1pbiBQZXRlcnNvbi4pCisKKworQSBGaW5lci1HcmFpbmVkIEltcG9ydCBMb2NrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJldmlvdXMgdmVyc2lvbnMgb2YgQ1B5dGhvbiBoYXZlIGFsd2F5cyByZWxpZWQgb24gYSBnbG9iYWwgaW1wb3J0IGxvY2suCitUaGlzIGxlZCB0byB1bmV4cGVjdGVkIGFubm95YW5jZXMsIHN1Y2ggYXMgZGVhZGxvY2tzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlCit3b3VsZCB0cmlnZ2VyIGNvZGUgZXhlY3V0aW9uIGluIGEgZGlmZmVyZW50IHRocmVhZCBhcyBhIHNpZGUtZWZmZWN0LgorQ2x1bXN5IHdvcmthcm91bmRzIHdlcmUgc29tZXRpbWVzIGVtcGxveWVkLCBzdWNoIGFzIHRoZQorOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9ja2AgQyBBUEkgZnVuY3Rpb24uCisKK0luIFB5dGhvbiAzLjMsIGltcG9ydGluZyBhIG1vZHVsZSB0YWtlcyBhIHBlci1tb2R1bGUgbG9jay4gIFRoaXMgY29ycmVjdGx5CitzZXJpYWxpemVzIGltcG9ydGF0aW9uIG9mIGEgZ2l2ZW4gbW9kdWxlIGZyb20gbXVsdGlwbGUgdGhyZWFkcyAocHJldmVudGluZwordGhlIGV4cG9zdXJlIG9mIGluY29tcGxldGVseSBpbml0aWFsaXplZCBtb2R1bGVzKSwgd2hpbGUgZWxpbWluYXRpbmcgdGhlCithZm9yZW1lbnRpb25lZCBhbm5veWFuY2VzLgorCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmA5MjYwYC4pCisKKworQnVpbHRpbiBmdW5jdGlvbnMgYW5kIHR5cGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiA6ZnVuYzpgb3BlbmAgZ2V0cyBhIG5ldyAqb3BlbmVyKiBwYXJhbWV0ZXI6IHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvcgorICBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosCisgICpmbGFncyopLiBJdCBjYW4gYmUgdXNlZCB0byB1c2UgY3VzdG9tIGZsYWdzIGxpa2UgOmRhdGE6YG9zLk9fQ0xPRVhFQ2AgZm9yCisgIGV4YW1wbGUuIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkOiBvcGVuIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIGZhaWxpbmcgaWYKKyAgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCisqIDpmdW5jOmBwcmludGA6IGFkZGVkIHRoZSAqZmx1c2gqIGtleXdvcmQgYXJndW1lbnQuIElmIHRoZSAqZmx1c2gqIGtleXdvcmQKKyAgYXJndW1lbnQgaXMgdHJ1ZSwgdGhlIHN0cmVhbSBpcyBmb3JjaWJseSBmbHVzaGVkLgorKiA6ZnVuYzpgaGFzaGA6IGhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNlZQorICA6bWV0aDpgb2JqZWN0Ll9faGFzaF9fYCBhbmQgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorKiBUaGUgOmNsYXNzOmBzdHJgIHR5cGUgZ2V0cyBhIG5ldyA6bWV0aDpgfnN0ci5jYXNlZm9sZGAgbWV0aG9kOiByZXR1cm4gYQorICBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZywgY2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZSB1c2VkIGZvciBjYXNlbGVzcworICBtYXRjaGluZy4gRm9yIGV4YW1wbGUsIGBgJ8OfJy5jYXNlZm9sZCgpYGAgcmV0dXJucyBgYCdzcydgYC4KKyogVGhlIHNlcXVlbmNlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gc3Vic3RhbnRpYWxseSByZXdyaXR0ZW4gdG8gYmV0dGVyCisgIGV4cGxhaW4gdGhlIGJpbmFyeS90ZXh0IHNlcXVlbmNlIGRpc3RpbmN0aW9uIGFuZCB0byBwcm92aWRlIHNwZWNpZmljCisgIGRvY3VtZW50YXRpb24gc2VjdGlvbnMgZm9yIHRoZSBpbmRpdmlkdWFsIGJ1aWx0aW4gc2VxdWVuY2UgdHlwZXMKKyAgKDppc3N1ZTpgNDk2NmApCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK1RoaXMgbmV3IGRlYnVnIG1vZHVsZSA6bW9kOmBmYXVsdGhhbmRsZXJgIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksCitvbiBhIGZhdWx0IChhIGNyYXNoIGxpa2UgYSBzZWdtZW50YXRpb24gZmF1bHQpLCBhZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlcgorc2lnbmFsLiBDYWxsIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYCB0byBpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUKKzpjb25zdDpgU0lHU0VHVmAsIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQKKzpjb25zdDpgU0lHSUxMYCBzaWduYWxzLiBZb3UgY2FuIGFsc28gZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZQorOmVudnZhcjpgUFlUSE9ORkFVTFRIQU5ETEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAKK2BgZmF1bHRoYW5kbGVyYGAgY29tbWFuZCBsaW5lIG9wdGlvbi4KKworRXhhbXBsZSBvZiBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBMaW51eDogOjoKKworICAgICQgcHl0aG9uIC1xIC1YIGZhdWx0aGFuZGxlcgorICAgID4+PiBpbXBvcnQgY3R5cGVzCisgICAgPj4+IGN0eXBlcy5zdHJpbmdfYXQoMCkKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IFNlZ21lbnRhdGlvbiBmYXVsdAorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiODk5ZjM5NzAwOgorICAgICAgRmlsZSAiL2hvbWUvcHl0aG9uL2NweXRob24vTGliL2N0eXBlcy9fX2luaXRfXy5weSIsIGxpbmUgNDg2IGluIHN0cmluZ19hdAorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSBpbiA8bW9kdWxlPgorICAgIFNlZ21lbnRhdGlvbiBmYXVsdAorCisKK2lwYWRkcmVzcworLS0tLS0tLS0tCisKK1RoZSBuZXcgOm1vZDpgaXBhZGRyZXNzYCBtb2R1bGUgcHJvdmlkZXMgdG9vbHMgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcKK29iamVjdHMgcmVwcmVzZW50aW5nIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLCBuZXR3b3JrcyBhbmQgaW50ZXJmYWNlcyAoaS5lLgorYW4gSVAgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBJUCBzdWJuZXQpLgorCisoQ29udHJpYnV0ZWQgYnkgR29vZ2xlIGFuZCBQZXRlciBNb29keSBpbiA6cGVwOmAzMTQ0YCkKKworbHptYQorLS0tLQorCitUaGUgbmV3bHktYWRkZWQgOm1vZDpgbHptYWAgbW9kdWxlIHByb3ZpZGVzIGRhdGEgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24KK3VzaW5nIHRoZSBMWk1BIGFsZ29yaXRobSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIHRoZSBgYC54emBgIGFuZCBgYC5sem1hYGAKK2ZpbGUgZm9ybWF0cy4KKworKENvbnRyaWJ1dGVkIGJ5IE5hZGVlbSBWYXdkYSBhbmQgUGVyIMOYeXZpbmQgS2FybHNlbiBpbiA6aXNzdWU6YDY3MTVgKQorCisKK0ltcHJvdmVkIE1vZHVsZXMKKz09PT09PT09PT09PT09PT0KKworYWJjCistLS0KKworSW1wcm92ZWQgc3VwcG9ydCBmb3IgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGNvbnRhaW5pbmcgZGVzY3JpcHRvcnMgY29tcG9zZWQgd2l0aAorYWJzdHJhY3QgbWV0aG9kcy4gVGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIHRvIGRlY2xhcmluZyBhYnN0cmFjdCBkZXNjcmlwdG9ycyBpcworbm93IHRvIHByb3ZpZGUgOmF0dHI6YF9faXNhYnN0cmFjdG1ldGhvZF9fYCBhcyBhIGR5bmFtaWNhbGx5IHVwZGF0ZWQKK3Byb3BlcnR5LiBUaGUgYnVpbHQtaW4gZGVzY3JpcHRvcnMgaGF2ZSBiZWVuIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHByb3BlcnR5YCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgOmNsYXNzOmBwcm9wZXJ0eWAKKyAgICB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBjbGFzc21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YHN0YXRpY21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorCisoQ29udHJpYnV0ZWQgYnkgRGFycmVuIERhbGUgaW4gOmlzc3VlOmAxMTYxMGApCisKKzptZXRoOmBhYmMuQUJDTWV0YS5yZWdpc3RlcmAgbm93IHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgc3ViY2xhc3MsIHdoaWNoIG1lYW5zCitpdCBjYW4gbm93IGJlIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgKDppc3N1ZTpgMTA4NjhgKS4KKworCithcnJheQorLS0tLS0KKworVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUgc3VwcG9ydHMgdGhlIDpjOnR5cGU6YGxvbmcgbG9uZ2AgdHlwZSB1c2luZyBgYHFgYCBhbmQKK2BgUWBgIHR5cGUgY29kZXMuCisKKyhDb250cmlidXRlZCBieSBPcmVuIFRpcm9zaCBhbmQgSGlyb2thenUgWWFtYW1vdG8gaW4gOmlzc3VlOmAxMTcyNzExYCkKKworCitiYXNlNjQsIGJpbmFzY2lpCistLS0tLS0tLS0tLS0tLS0tCisKK0FTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZiB0aGUKK21vZGVybiBpbnRlcmZhY2UuIEZvciBleGFtcGxlLCBgYGJhc2U2NC5iNjRkZWNvZGUoJ1lXSmonKWBgIHJldHVybnMgYGBiJ2FiYydgYC4KKworCitiejIKKy0tLQorCitUaGUgOm1vZDpgYnoyYCBtb2R1bGUgaGFzIGJlZW4gcmV3cml0dGVuIGZyb20gc2NyYXRjaC4gSW4gdGhlIHByb2Nlc3MsIHNldmVyYWwKK25ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQ6CisKKyogTmV3IDpmdW5jOmBiejIub3BlbmAgZnVuY3Rpb246IG9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yCisgIHRleHQgbW9kZS4KKworKiA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBjYW4gbm93IHJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gYXJiaXRyYXJ5IGZpbGUtbGlrZQorICBvYmplY3RzLCBieSBtZWFucyBvZiBpdHMgY29uc3RydWN0b3IncyAqZmlsZW9iaiogYXJndW1lbnQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IE5hZGVlbSBWYXdkYSBpbiA6aXNzdWU6YDU4NjNgKQorCisqIDpjbGFzczpgYnoyLkJaMkZpbGVgIGFuZCA6ZnVuYzpgYnoyLmRlY29tcHJlc3NgIGNhbiBub3cgZGVjb21wcmVzcworICBtdWx0aS1zdHJlYW0gaW5wdXRzIChzdWNoIGFzIHRob3NlIHByb2R1Y2VkIGJ5IHRoZSA6cHJvZ3JhbTpgcGJ6aXAyYCB0b29sKS4KKyAgOmNsYXNzOmBiejIuQloyRmlsZWAgY2FuIG5vdyBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlIHRoaXMgdHlwZSBvZiBmaWxlLCB1c2luZworICB0aGUgYGAnYSdgYCAoYXBwZW5kKSBtb2RlLgorCisgIChDb250cmlidXRlZCBieSBOaXIgQWlkZXMgaW4gOmlzc3VlOmAxNjI1YCkKKworKiA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBub3cgaW1wbGVtZW50cyBhbGwgb2YgdGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIEFQSSwKKyAgZXhjZXB0IGZvciB0aGUgOm1ldGg6YGRldGFjaGAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kcy4KKworCitjb2RlY3MKKy0tLS0tLQorCitUaGUgOm1vZDpgfmVuY29kaW5ncy5tYmNzYCBjb2RlYyBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gaGFuZGxlIGNvcnJlY3RseQorYGByZXBsYWNlYGAgYW5kIGBgaWdub3JlYGAgZXJyb3IgaGFuZGxlcnMgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuICBUaGUKKzptb2Q6YH5lbmNvZGluZ3MubWJjc2AgY29kZWMgbm93IHN1cHBvcnRzIGFsbCBlcnJvciBoYW5kbGVycywgaW5zdGVhZCBvZiBvbmx5CitgYHJlcGxhY2VgYCB0byBlbmNvZGUgYW5kIGBgaWdub3JlYGAgdG8gZGVjb2RlLgorCitBIG5ldyBXaW5kb3dzLW9ubHkgY29kZWMgaGFzIGJlZW4gYWRkZWQ6IGBgY3A2NTAwMWBgICg6aXNzdWU6YDEzMjE2YCkuIEl0IGlzIHRoZQorV2luZG93cyBjb2RlIHBhZ2UgNjUwMDEgKFdpbmRvd3MgVVRGLTgsIGBgQ1BfVVRGOGBgKS4gIEZvciBleGFtcGxlLCBpdCBpcyB1c2VkCitieSBgYHN5cy5zdGRvdXRgYCBpZiB0aGUgY29uc29sZSBvdXRwdXQgY29kZSBwYWdlIGlzIHNldCB0byBjcDY1MDAxIChlLmcuLCB1c2luZworYGBjaGNwIDY1MDAxYGAgY29tbWFuZCkuCisKK011bHRpYnl0ZSBDSksgZGVjb2RlcnMgbm93IHJlc3luY2hyb25pemUgZmFzdGVyLiAgVGhleSBvbmx5IGlnbm9yZSB0aGUgZmlyc3QKK2J5dGUgb2YgYW4gaW52YWxpZCBieXRlIHNlcXVlbmNlLiBGb3IgZXhhbXBsZSwgYGBiJ1x4ZmZcbicuZGVjb2RlKCdnYjIzMTInLAorJ3JlcGxhY2UnKWBgIG5vdyByZXR1cm5zIGEgYGBcbmBgIGFmdGVyIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIuCisKKyg6aXNzdWU6YDEyMDE2YCkKKworSW5jcmVtZW50YWwgQ0pLIGNvZGVjIGVuY29kZXJzIGFyZSBubyBsb25nZXIgcmVzZXQgYXQgZWFjaCBjYWxsIHRvIHRoZWlyCitlbmNvZGUoKSBtZXRob2RzLiBGb3IgZXhhbXBsZTo6CisKKyAgICAkIC4vcHl0aG9uIC1xCisgICAgPj4+IGltcG9ydCBjb2RlY3MKKyAgICA+Pj4gZW5jb2RlciA9IGNvZGVjcy5nZXRpbmNyZW1lbnRhbGVuY29kZXIoJ2h6JykoJ3N0cmljdCcpCisgICAgPj4+IGInJy5qb2luKGVuY29kZXIuZW5jb2RlKHgpIGZvciB4IGluICdcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDIgQnllLicpCisgICAgYid+e05wSilsNkhLISN+fSBCeWUuJworCitUaGlzIGV4YW1wbGUgZ2l2ZXMgYGBiJ357TnB+fX57Sil+fX57bDZ+fX57SEt+fX57ISN+fSBCeWUuJ2BgIHdpdGggb2xkZXIgUHl0aG9uCit2ZXJzaW9ucy4KKworKDppc3N1ZTpgMTIxMDBgKQorCitUaGUgYGB1bmljb2RlX2ludGVybmFsYGAgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworCitjb2xsZWN0aW9ucworLS0tLS0tLS0tLS0KKworQWRkaXRpb24gb2YgYSBuZXcgOmNsYXNzOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXBgIGNsYXNzIHRvIGFsbG93IHRyZWF0aW5nIGEKK251bWJlciBvZiBtYXBwaW5ncyBhcyBhIHNpbmdsZSB1bml0LgorCisoV3JpdHRlbiBieSBSYXltb25kIEhldHRpbmdlciBmb3IgOmlzc3VlOmAxMTA4OWAsIG1hZGUgcHVibGljIGluCis6aXNzdWU6YDExMjk3YCkKKworVGhlIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBoYXZlIGJlZW4gbW92ZWQgaW4gYSBuZXcgOm1vZDpgY29sbGVjdGlvbnMuYWJjYAorbW9kdWxlLCB0byBiZXR0ZXIgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBhYnN0cmFjdCBhbmQgdGhlIGNvbmNyZXRlCitjb2xsZWN0aW9ucyBjbGFzc2VzLiAgQWxpYXNlcyBmb3IgQUJDcyBhcmUgc3RpbGwgcHJlc2VudCBpbiB0aGUKKzptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgdG8gcHJlc2VydmUgZXhpc3RpbmcgaW1wb3J0cy4KKworKDppc3N1ZTpgMTEwODVgKQorCisuLiBYWFggYWRkaXRpb24gb2YgX19zbG90c19fIHRvIEFCQ3Mgbm90IHJlY29yZGVkIGhlcmU6IGludGVybmFsIGRldGFpbAorCisKK2NvbnRleHRsaWIKKy0tLS0tLS0tLS0KKworOmNsYXNzOmB+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+Pj4gbTJbJ2NjJ10uZ3JvdXBzCisgICAgKEdyb3VwKGRpc3BsYXlfbmFtZT0ncGFscycsIGFkZHJlc3Nlcz0oQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvYicsIHVzZXJuYW1lPSdib2InLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdTYWxseScsIHVzZXJuYW1lPSdzYWxseScsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSksIEdyb3VwKGRpc3BsYXlfbmFtZT1Ob25lLCBhZGRyZXNzZXM9KEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb256bycsIHVzZXJuYW1lPSdib256JywgZG9tYWluPSdsYXVnaC5jb20nKSwpKQorCitJbiBzdW1tYXJ5LCBpZiB5b3UgdXNlIG9uZSBvZiB0aGUgbmV3IHBvbGljaWVzLCBoZWFkZXIgbWFuaXB1bGF0aW9uIHdvcmtzIHRoZQord2F5IGl0IG91Z2h0IHRvOiAgeW91ciBhcHBsaWNhdGlvbiB3b3JrcyB3aXRoIHVuaWNvZGUgc3RyaW5ncywgYW5kIHRoZSBlbWFpbAorcGFja2FnZSB0cmFuc3BhcmVudGx5IGVuY29kZXMgYW5kIGRlY29kZXMgdGhlIHVuaWNvZGUgdG8gYW5kIGZyb20gdGhlIFJGQworc3RhbmRhcmQgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MuCisKKworZnRwbGliCistLS0tLS0KKworKiA6Y2xhc3M6YGZ0cGxpYi5GVFBgIG5vdyBhY2NlcHRzIGEgYGBzb3VyY2VfYWRkcmVzc2BgIGtleXdvcmQgYXJndW1lbnQgdG8KKyAgc3BlY2lmeSB0aGUgYGAoaG9zdCwgcG9ydClgYCB0byB1c2UgYXMgdGhlIHNvdXJjZSBhZGRyZXNzIGluIHRoZSBiaW5kIGNhbGwKKyAgd2hlbiBjcmVhdGluZyB0aGUgb3V0Z29pbmcgc29ja2V0LiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgCisgIGluIDppc3N1ZTpgODU5NGAuKQorCisqIFRoZSA6Y2xhc3M6YH5mdHBsaWIuRlRQX1RMU2AgY2xhc3Mgbm93IHByb3ZpZGVzIGEgbmV3CisgIDpmdW5jOmB+ZnRwbGliLkZUUF9UTFMuY2NjYCBmdW5jdGlvbiB0byByZXZlcnQgY29udHJvbCBjaGFubmVsIGJhY2sgdG8KKyAgcGxhaW50ZXh0LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHRvIHRha2UgYWR2YW50YWdlIG9mIGZpcmV3YWxscyB0aGF0IGtub3cgaG93CisgIHRvIGhhbmRsZSBOQVQgd2l0aCBub24tc2VjdXJlIEZUUCB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuICAoQ29udHJpYnV0ZWQKKyAgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMjEzOWApCisKKyogQWRkZWQgOm1ldGg6YGZ0cGxpYi5GVFAubWxzZGAgbWV0aG9kIHdoaWNoIHByb3ZpZGVzIGEgcGFyc2FibGUgZGlyZWN0b3J5CisgIGxpc3RpbmcgZm9ybWF0IGFuZCBkZXByZWNhdGVzIDptZXRoOmBmdHBsaWIuRlRQLm5sc3RgIGFuZAorICA6bWV0aDpgZnRwbGliLkZUUC5kaXJgLiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTEwNzJgKQorCitnYworLS0KKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIHJlZ2lzdGVyIGNhbGxiYWNrcyBpbnZva2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvcgorYmVmb3JlIGFuZCBhZnRlciBjb2xsZWN0aW9uIHVzaW5nIHRoZSBuZXcgOmRhdGE6YH5nYy5jYWxsYmFja3NgIGxpc3QuCisKKworaG1hYworLS0tLQorCitBIG5ldyA6ZnVuYzpgfmhtYWMuY29tcGFyZV9kaWdlc3RgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIHRvIHByZXZlbnQKK3NpZGUgY2hhbm5lbCBhdHRhY2tzIG9uIGRpZ2VzdHMgdGhyb3VnaCB0aW1pbmcgYW5hbHlzaXMuCisKKyhDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4gYW5kIENocmlzdGlhbiBIZWltZXMgaW4gaXNzdWU6YDE1MDYxYCkKKworCitodG1sLmVudGl0aWVzCistLS0tLS0tLS0tLS0tCisKK0EgbmV3IDpkYXRhOmB+aHRtbC5lbnRpdGllcy5odG1sNWAgZGljdGlvbmFyeSB0aGF0IG1hcHMgSFRNTDUgbmFtZWQgY2hhcmFjdGVyCityZWZlcmVuY2VzIHRvIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUgY2hhcmFjdGVyKHMpIChlLmcuIGBgaHRtbDVbJ2d0OyddID09ICc+J2BgKQoraGFzIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YGh0bWwuZW50aXRpZXNgIG1vZHVsZS4gIFRoZSBkaWN0aW9uYXJ5IGlzIG5vdyBhbHNvCit1c2VkIGJ5IDpjbGFzczpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZXJgLgorCisoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTExMTNgIGFuZCA6aXNzdWU6YDE1MTU2YCkKKworCitodG1sLnBhcnNlcgorLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAgaXMgbm93IGFibGUgdG8gcGFyc2UgYnJva2VuIG1hcmt1cCB3aXRob3V0CityYWlzaW5nIGVycm9ycywgdGhlcmVmb3JlIHRoZSAqc3RyaWN0KiBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgYW5kIHRoZQorOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb24gYXJlIG5vdyBkZXByZWNhdGVkLgorVGhlIGFiaWxpdHkgdG8gcGFyc2UgYnJva2VuIG1hcmt1cCBpcyB0aGUgcmVzdWx0IG9mIGEgbnVtYmVyIG9mIGJ1ZyBmaXhlcyB0aGF0CithcmUgYWxzbyBhdmFpbGFibGUgb24gdGhlIGxhdGVzdCBidWcgZml4IHJlbGVhc2VzIG9mIFB5dGhvbiAyLjcvMy4yLgorCisoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGluIDppc3N1ZTpgMTUxMTRgLCBhbmQgOmlzc3VlOmAxNDUzOGAsCis6aXNzdWU6YDEzOTkzYCwgOmlzc3VlOmAxMzk2MGAsIDppc3N1ZTpgMTMzNThgLCA6aXNzdWU6YDE3NDU3NjFgLAorOmlzc3VlOmA3NTU2NzBgLCA6aXNzdWU6YDEzMzU3YCwgOmlzc3VlOmAxMjYyOWAsIDppc3N1ZTpgMTIwMDMxM2AsCis6aXNzdWU6YDY3MDY2NGAsIDppc3N1ZTpgMTMyNzNgLCA6aXNzdWU6YDEyODg4YCwgOmlzc3VlOmA3MzExYCkKKworaW1hcGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+aW1hcGxpYi5JTUFQNF9TU0xgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGFuIFNTTENvbnRleHQKK3BhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLgorCisoQ29udHJpYnV0ZWQgYnkgU2lqaW4gSm9zZXBoIGluIDppc3N1ZTpgODgwOGApCisKKworaW5zcGVjdAorLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmluc3BlY3QuZ2V0Y2xvc3VyZXZhcnNgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGlzIGZ1bmN0aW9uCityZXBvcnRzIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgYWxsIG5hbWVzIHJlZmVyZW5jZWQgZnJvbSB0aGUgZnVuY3Rpb24gYm9keSBhbmQKK3doZXJlIHRob3NlIG5hbWVzIHdlcmUgcmVzb2x2ZWQsIG1ha2luZyBpdCBlYXNpZXIgdG8gdmVyaWZ5IGNvcnJlY3QgaW50ZXJuYWwKK3N0YXRlIHdoZW4gdGVzdGluZyBjb2RlIHRoYXQgcmVsaWVzIG9uIHN0YXRlZnVsIGNsb3N1cmVzLgorCisoQ29udHJpYnV0ZWQgYnkgTWVhZG9yIEluZ2UgYW5kIE5pY2sgQ29naGxhbiBpbiA6aXNzdWU6YDEzMDYyYCkKKworQSBuZXcgOmZ1bmM6YH5pbnNwZWN0LmdldGdlbmVyYXRvcmxvY2Fsc2AgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuIFRoaXMKK2Z1bmN0aW9uIHJlcG9ydHMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvcidzCitzdGFjayBmcmFtZSwgbWFraW5nIGl0IGVhc2llciB0byB2ZXJpZnkgY29ycmVjdCBpbnRlcm5hbCBzdGF0ZSB3aGVuIHRlc3RpbmcKK2dlbmVyYXRvcnMuCisKKyhDb250cmlidXRlZCBieSBNZWFkb3IgSW5nZSBpbiA6aXNzdWU6YDE1MTUzYCkKKworaW8KKy0tCisKK1RoZSA6ZnVuYzpgfmlvLm9wZW5gIGZ1bmN0aW9uIGhhcyBhIG5ldyBgYCd4J2BgIG1vZGUgdGhhdCBjYW4gYmUgdXNlZCB0bworZXhjbHVzaXZlbHkgY3JlYXRlIGEgbmV3IGZpbGUsIGFuZCByYWlzZSBhIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUKK2FscmVhZHkgZXhpc3RzLiBJdCBpcyBiYXNlZCBvbiB0aGUgQzExICd4JyBtb2RlIHRvIGZvcGVuKCkuCisKKyhDb250cmlidXRlZCBieSBEYXZpZCBUb3duc2hlbmQgaW4gOmlzc3VlOmAxMjc2MGApCisKK1RoZSBjb25zdHJ1Y3RvciBvZiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgaGFzIGEgbmV3Cisqd3JpdGVfdGhyb3VnaCogb3B0aW9uYWwgYXJndW1lbnQuIElmICp3cml0ZV90aHJvdWdoKiBpcyBgYFRydWVgYCwgY2FsbHMgdG8KKzptZXRoOmB+aW8uVGV4dElPV3JhcHBlci53cml0ZWAgYXJlIGd1YXJhbnRlZWQgbm90IHRvIGJlIGJ1ZmZlcmVkOiBhbnkgZGF0YQord3JpdHRlbiBvbiB0aGUgOmNsYXNzOmB+aW8uVGV4dElPV3JhcHBlcmAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzCit1bmRlcmx5aW5nIGJpbmFyeSBidWZmZXIuCisKKworbWF0aAorLS0tLQorCitUaGUgOm1vZDpgbWF0aGAgbW9kdWxlIGhhcyBhIG5ldyBmdW5jdGlvbiwgOmZ1bmM6YH5tYXRoLmxvZzJgLCAgd2hpY2ggcmV0dXJucwordGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLgorCisoV3JpdHRlbiBieSBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDExODg4YCkuCisKKworbXVsdGlwcm9jZXNzaW5nCistLS0tLS0tLS0tLS0tLS0KKworVGhlIG5ldyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgZnVuY3Rpb24gYWxsb3dzIHRvIHBvbGwKK211bHRpcGxlIG9iamVjdHMgKHN1Y2ggYXMgY29ubmVjdGlvbnMsIHNvY2tldHMgYW5kIHBpcGVzKSB3aXRoIGEgdGltZW91dC4KKyhDb250cmlidXRlZCBieSBSaWNoYXJkIE91ZGtlcmsgaW4gOmlzc3VlOmAxMjMyOGAuKQorCis6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3RzIGNhbiBub3cgYmUgdHJhbnNmZXJyZWQgb3ZlcgorbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb25zLgorKENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgT3Vka2VyayBpbiA6aXNzdWU6YDQ4OTJgLikKKworOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2Agbm93IGFjY2VwdHMgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQKK3RvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGluaGVyaXRpbmcgdGhlIGBgZGFlbW9uYGAgZmxhZyBmcm9tCit0aGUgcGFyZW50IHByb2Nlc3MgKDppc3N1ZTpgNjA2NGApLgorCisKK25udHBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgbm50cGxpYi5OTlRQYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0bwordW5jb25kaXRpb25hbGx5IGNvbnN1bWUgOmV4Yzpgc29ja2V0LmVycm9yYCBleGNlcHRpb25zIGFuZCB0byBjbG9zZSB0aGUgTk5UUAorY29ubmVjdGlvbiB3aGVuIGRvbmU6OgorCisgID4+PiBmcm9tIG5udHBsaWIgaW1wb3J0IE5OVFAKKyAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAuLi4gICAgIG4uZ3JvdXAoJ2dtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnKQorICAuLi4KKyAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgPj4+CisKKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDk3OTVgKQorCisKK29zCistLQorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfm9zLnBpcGUyYCBmdW5jdGlvbiB0aGF0IG1ha2VzIGl0CisgIHBvc3NpYmxlIHRvIGNyZWF0ZSBhIHBpcGUgd2l0aCA6ZGF0YTpgfm9zLk9fQ0xPRVhFQ2Agb3IKKyAgOmRhdGE6YH5vcy5PX05PTkJMT0NLYCBmbGFncyBzZXQgYXRvbWljYWxseS4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCB0bworICBhdm9pZCByYWNlIGNvbmRpdGlvbnMgaW4gbXVsdGktdGhyZWFkZWQgcHJvZ3JhbXMuCisKKyogVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3Muc2VuZGZpbGVgIGZ1bmN0aW9uIHdoaWNoIHByb3ZpZGVzCisgIGFuIGVmZmljZW50ICJ6ZXJvLWNvcHkiIHdheSBmb3IgY29weWluZyBkYXRhIGZyb20gb25lIGZpbGUgKG9yIHNvY2tldCkKKyAgZGVzY3JpcHRvciB0byBhbm90aGVyLiBUaGUgcGhyYXNlICJ6ZXJvLWNvcHkiIHJlZmVycyB0byB0aGUgZmFjdCB0aGF0IGFsbCBvZgorICB0aGUgY29weWluZyBvZiBkYXRhIGJldHdlZW4gdGhlIHR3byBkZXNjcmlwdG9ycyBpcyBkb25lIGVudGlyZWx5IGJ5IHRoZQorICBrZXJuZWwsIHdpdGggbm8gY29weWluZyBvZiBkYXRhIGludG8gdXNlcnNwYWNlIGJ1ZmZlcnMuIDpmdW5jOmB+b3Muc2VuZGZpbGVgCisgIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvcHkgZGF0YSBmcm9tIGEgZmlsZSBvbiBkaXNrIHRvIGEgbmV0d29yayBzb2NrZXQsCisgIGUuZy4gZm9yIGRvd25sb2FkaW5nIGEgZmlsZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IFJvc3MgTGFnZXJ3YWxsIGFuZCBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEwODgyYC4pCisKKyogVG8gYXZvaWQgcmFjZSBjb25kaXRpb25zIGxpa2Ugc3ltbGluayBhdHRhY2tzIGFuZCBpc3N1ZXMgd2l0aCB0ZW1wb3JhcnkKKyAgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCBpdCBpcyBtb3JlIHJlbGlhYmxlIChhbmQgYWxzbyBmYXN0ZXIpIHRvIG1hbmlwdWxhdGUKKyAgZmlsZSBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGZpbGUgbmFtZXMuIFB5dGhvbiAzLjMgZW5oYW5jZXMgZXhpc3RpbmcgZnVuY3Rpb25zCisgIGFuZCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbnMgdG8gd29yayBvbiBmaWxlIGRlc2NyaXB0b3JzICg6aXNzdWU6YDQ3NjFgLAorICA6aXNzdWU6YDEwNzU1YCBhbmQgOmlzc3VlOmAxNDYyNmApLgorCisgIC0gVGhlIDptb2Q6YG9zYCBtb2R1bGUgaGFzIGEgbmV3IDpmdW5jOmB+b3MuZndhbGtgIGZ1bmN0aW9uIHNpbWlsYXIgdG8KKyAgICA6ZnVuYzpgfm9zLndhbGtgIGV4Y2VwdCB0aGF0IGl0IGFsc28geWllbGRzIGZpbGUgZGVzY3JpcHRvcnMgcmVmZXJyaW5nIHRvIHRoZQorICAgIGRpcmVjdG9yaWVzIHZpc2l0ZWQuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8gYXZvaWQgc3ltbGluayByYWNlcy4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdldCBuZXcgb3B0aW9uYWwgKmRpcl9mZCogKDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvCisgICAgZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCkgYW5kL29yICpmb2xsb3dfc3ltbGlua3MqICg6cmVmOmBub3QKKyAgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gKToKKyAgICA6ZnVuYzpgfm9zLmFjY2Vzc2AsIDpmdW5jOmB+b3MuY2hmbGFnc2AsIDpmdW5jOmB+b3MuY2htb2RgLCA6ZnVuYzpgfm9zLmNob3duYCwKKyAgICA6ZnVuYzpgfm9zLmxpbmtgLCA6ZnVuYzpgfm9zLmxzdGF0YCwgOmZ1bmM6YH5vcy5ta2RpcmAsIDpmdW5jOmB+b3MubWtmaWZvYCwKKyAgICA6ZnVuYzpgfm9zLm1rbm9kYCwgOmZ1bmM6YH5vcy5vcGVuYCwgOmZ1bmM6YH5vcy5yZWFkbGlua2AsIDpmdW5jOmB+b3MucmVtb3ZlYCwKKyAgICA6ZnVuYzpgfm9zLnJlbmFtZWAsIDpmdW5jOmB+b3MucmVwbGFjZWAsIDpmdW5jOmB+b3Mucm1kaXJgLCA6ZnVuYzpgfm9zLnN0YXRgLAorICAgIDpmdW5jOmB+b3Muc3ltbGlua2AsIDpmdW5jOmB+b3MudW5saW5rYCwgOmZ1bmM6YH5vcy51dGltZWAuICBQbGF0Zm9ybQorICAgIHN1cHBvcnQgZm9yIHVzaW5nIHRoZXNlIHBhcmFtZXRlcnMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBzZXRzCisgICAgOmRhdGE6YG9zLnN1cHBvcnRzX2Rpcl9mZGAgYW5kIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dzX3N5bWxpbmtzYC4KKworICAtIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGVpciBwYXRoIGFyZ3VtZW50OgorICAgIDpmdW5jOmB+b3MuY2hkaXJgLCA6ZnVuYzpgfm9zLmNobW9kYCwgOmZ1bmM6YH5vcy5jaG93bmAsCisgICAgOmZ1bmM6YH5vcy5leGVjdmVgLCA6ZnVuYzpgfm9zLmxpc3RkaXJgLCA6ZnVuYzpgfm9zLnBhdGhjb25mYCwgOmZ1bmM6YH5vcy5wYXRoLmV4aXN0c2AsCisgICAgOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5zdGF0dmZzYCwgOmZ1bmM6YH5vcy51dGltZWAuICBQbGF0Zm9ybSBzdXBwb3J0CisgICAgZm9yIHRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgIHNldC4KKworKiA6ZnVuYzpgfm9zLmFjY2Vzc2AgYWNjZXB0cyBhbiBgYGVmZmVjdGl2ZV9pZHNgYCBrZXl3b3JkIGFyZ3VtZW50IHRvIHR1cm4gb24KKyAgdXNpbmcgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIHJhdGhlciB0aGFuIHRoZSByZWFsIHVpZC9naWQgaW4gdGhlIGFjY2VzcyBjaGVjay4KKyAgUGxhdGZvcm0gc3VwcG9ydCBmb3IgdGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlCisgIDpkYXRhOmB+b3Muc3VwcG9ydHNfZWZmZWN0aXZlX2lkc2Agc2V0LgorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyB0d28gbmV3IGZ1bmN0aW9uczogOmZ1bmM6YH5vcy5nZXRwcmlvcml0eWAgYW5kCisgIDpmdW5jOmB+b3Muc2V0cHJpb3JpdHlgLiBUaGV5IGNhbiBiZSB1c2VkIHRvIGdldCBvciBzZXQgcHJvY2VzcworICBuaWNlbmVzcy9wcmlvcml0eSBpbiBhIGZhc2hpb24gc2ltaWxhciB0byA6ZnVuYzpgb3MubmljZWAgYnV0IGV4dGVuZGVkIHRvIGFsbAorICBwcm9jZXNzZXMgaW5zdGVhZCBvZiBqdXN0IHRoZSBjdXJyZW50IG9uZS4KKworICAoUGF0Y2ggc3VibWl0dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTA3ODRgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5yZXBsYWNlYCBmdW5jdGlvbiBhbGxvd3MgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcgb2YgYQorICBmaWxlIHdpdGggb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLiAgV2l0aCA6ZnVuYzpgb3MucmVuYW1lYCwgYW4gZXhpc3RpbmcKKyAgZGVzdGluYXRpb24gZmlsZSBpcyBvdmVyd3JpdHRlbiB1bmRlciBQT1NJWCwgYnV0IHJhaXNlcyBhbiBlcnJvciB1bmRlcgorICBXaW5kb3dzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmA4ODI4YC4pCisKKyogVGhlIHN0YXQgZmFtaWx5IG9mIGZ1bmN0aW9ucyAoOmZ1bmM6YH5vcy5zdGF0YCwgOmZ1bmM6YH5vcy5mc3RhdGAsCisgIGFuZCA6ZnVuYzpgfm9zLmxzdGF0YCkgbm93IHN1cHBvcnQgcmVhZGluZyBhIGZpbGUncyB0aW1lc3RhbXBzCisgIHdpdGggbmFub3NlY29uZCBwcmVjaXNpb24uICBTeW1tZXRyaWNhbGx5LCA6ZnVuYzpgfm9zLnV0aW1lYAorICBjYW4gbm93IHdyaXRlIGZpbGUgdGltZXN0YW1wcyB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgKENvbnRyaWJ1dGVkIGJ5CisgIExhcnJ5IEhhc3RpbmdzIGluIDppc3N1ZTpgMTQxMjdgLikKKworKiBUaGUgbmV3IDpmdW5jOmBvcy5nZXRfdGVybWluYWxfc2l6ZWAgZnVuY3Rpb24gcXVlcmllcyB0aGUgc2l6ZSBvZiB0aGUKKyAgdGVybWluYWwgYXR0YWNoZWQgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIFNlZSBhbHNvCisgIDpmdW5jOmBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemVgLgorICAoQ29udHJpYnV0ZWQgYnkgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBpbiA6aXNzdWU6YDEzNjA5YC4pCisKKy4uIFhYWCBzb3J0IG91dCB0aGlzIG1lc3MgYWZ0ZXIgYmV0YTEKKworKiBOZXcgZnVuY3Rpb25zIHRvIHN1cHBvcnQgTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcyAoOmlzc3VlOmAxMjcyMGApOgorICA6ZnVuYzpgfm9zLmdldHhhdHRyYCwgOmZ1bmM6YH5vcy5saXN0eGF0dHJgLCA6ZnVuYzpgfm9zLnJlbW92ZXhhdHRyYCwKKyAgOmZ1bmM6YH5vcy5zZXR4YXR0cmAuCisKKyogTmV3IGludGVyZmFjZSB0byB0aGUgc2NoZWR1bGVyLiBUaGVzZSBmdW5jdGlvbnMKKyAgY29udHJvbCBob3cgYSBwcm9jZXNzIGlzIGFsbG9jYXRlZCBDUFUgdGltZSBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gTmV3CisgIGZ1bmN0aW9uczoKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWF4YCwgOmZ1bmM6YH5vcy5zY2hlZF9nZXRfcHJpb3JpdHlfbWluYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfZ2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX2dldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfcnJfZ2V0X2ludGVydmFsYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9zZXRhZmZpbml0eWAsIDpmdW5jOmB+b3Muc2NoZWRfc2V0cGFyYW1gLAorICA6ZnVuYzpgfm9zLnNjaGVkX3NldHNjaGVkdWxlcmAsIDpmdW5jOmB+b3Muc2NoZWRfeWllbGRgLAorCisqIE5ldyBmdW5jdGlvbnMgdG8gY29udHJvbCB0aGUgZmlsZSBzeXN0ZW06CisKKyAgKiA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgOiBBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEKKyAgICBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcgdGhlIGtlcm5lbCB0byBtYWtlIG9wdGltaXphdGlvbnMuCisgICogOmZ1bmM6YH5vcy5wb3NpeF9mYWxsb2NhdGVgOiBFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkCisgICAgZm9yIGEgZmlsZS4KKyAgKiA6ZnVuYzpgfm9zLnN5bmNgOiBGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suCisKKyogQWRkaXRpb25hbCBuZXcgIHBvc2l4IGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+b3MubG9ja2ZgOiBBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAqIDpmdW5jOmB+b3MucHJlYWRgOiBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgYXQgYW4gb2Zmc2V0LCB0aGUgZmlsZQorICAgIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4KKyAgKiA6ZnVuYzpgfm9zLnB3cml0ZWA6IFdyaXRlIHRvIGEgZmlsZSBkZXNjcmlwdG9yIGZyb20gYW4gb2Zmc2V0LCBsZWF2aW5nCisgICAgdGhlIGZpbGUgb2Zmc2V0IHVuY2hhbmdlZC4KKyAgKiA6ZnVuYzpgfm9zLnJlYWR2YDogUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGludG8gYSBudW1iZXIgb2Ygd3JpdGFibGUgYnVmZmVycy4KKyAgKiA6ZnVuYzpgfm9zLnRydW5jYXRlYDogVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byAqcGF0aCosIHNvIHRoYXQKKyAgICBpdCBpcyBhdCBtb3N0ICpsZW5ndGgqIGJ5dGVzIGluIHNpemUuCisgICogOmZ1bmM6YH5vcy53YWl0aWRgOiBXYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuCisgICogOmZ1bmM6YH5vcy53cml0ZXZgOiBXcml0ZSB0aGUgY29udGVudHMgb2YgKmJ1ZmZlcnMqIHRvIGEgZmlsZSBkZXNjcmlwdG9yLAorICAgIHdoZXJlICpidWZmZXJzKiBpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy4KKyAgKiA6ZnVuYzpgfm9zLmdldGdyb3VwbGlzdGAgKDppc3N1ZTpgOTM0NGApOiBSZXR1cm4gbGlzdCBvZiBncm91cCBpZHMgdGhhdAorICAgIHNwZWNpZmllZCB1c2VyIGJlbG9uZ3MgdG8uCisKKyogOmZ1bmM6YH5vcy50aW1lc2AgYW5kIDpmdW5jOmB+b3MudW5hbWVgOiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0bworICBhIHR1cGxlLWxpa2Ugb2JqZWN0IHdpdGggbmFtZWQgYXR0cmlidXRlcy4KKworKiBTb21lIHBsYXRmb3JtcyBub3cgc3VwcG9ydCBhZGRpdGlvbmFsIGNvbnN0YW50cyBmb3IgdGhlIDpmdW5jOmB+b3MubHNlZWtgCisgIGZ1bmN0aW9uLCBzdWNoIGFzIGBgb3MuU0VFS19IT0xFYGAgYW5kIGBgb3MuU0VFS19EQVRBYGAuCisKKyogOmZ1bmM6YG9zLnN5bWxpbmtgIG5vdyBhY2NlcHRzIChhbmQgaWdub3JlcykgdGhlIGBgdGFyZ2V0X2lzX2RpcmVjdG9yeWBgCisgIGtleXdvcmQgYXJndW1lbnQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLCB0byBlYXNlIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQuCisKKworcGRiCistLS0KKworVGFiLWNvbXBsZXRpb24gaXMgbm93IGF2YWlsYWJsZSBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0IGFsc28gdGhlaXIKK2FyZ3VtZW50cy4gIEZvciBleGFtcGxlLCBmb3IgdGhlIGBgYnJlYWtgYCBjb21tYW5kLCBmdW5jdGlvbiBhbmQgZmlsZSBuYW1lcworYXJlIGNvbXBsZXRlZC4KKworKENvbnRyaWJ1dGVkIGJ5IEdlb3JnIEJyYW5kbCBpbiA6aXNzdWU6YDE0MjEwYCkKKworCitwaWNrbGUKKy0tLS0tLQorCis6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsCis6YXR0cjpgfnBpY2tsZS5QaWNrbGVyLmRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUgYWxsb3dpbmcgdG8gc2V0IHBlci1waWNrbGVyCityZWR1Y3Rpb24gZnVuY3Rpb25zLgorCisoQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBPdWRrZXJrIGluIDppc3N1ZTpgMTQxNjZgLikKKworCitweWRvYworLS0tLS0KKworVGhlIFRrIEdVSSBhbmQgdGhlIDpmdW5jOmB+cHlkb2Muc2VydmVgIGZ1bmN0aW9uIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlCis6bW9kOmBweWRvY2AgbW9kdWxlOiBgYHB5ZG9jIC1nYGAgYW5kIDpmdW5jOmB+cHlkb2Muc2VydmVgIGhhdmUgYmVlbiBkZXByZWNhdGVkCitpbiBQeXRob24gMy4yLgorCisKK3JlCistLQorCis6Y2xhc3M6YHN0cmAgcmVndWxhciBleHByZXNzaW9ucyBub3cgc3VwcG9ydCBgYFx1YGAgYW5kIGBgXFVgYCBlc2NhcGVzLgorCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDM2NjVgLikKKworCitzY2hlZAorLS0tLS0KKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5ydW5gIG5vdyBhY2NlcHRzIGEgKmJsb2NraW5nKiBwYXJhbWV0ZXIgd2hpY2ggd2hlbgorICBzZXQgdG8gRmFsc2UgbWFrZXMgdGhlIG1ldGhvZCBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKKyAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4gaW1tZWRpYXRlbHkuCisgIFRoaXMgaXMgdXNlZnVsIGluIGNhc2UgeW91IHdhbnQgdG8gdXNlIHRoZSA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGluCisgIG5vbi1ibG9ja2luZyBhcHBsaWNhdGlvbnMuICAoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMzQ0OWApCisKKyogOmNsYXNzOmB+c2NoZWQuc2NoZWR1bGVyYCBjbGFzcyBjYW4gbm93IGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgIGVudmlyb25tZW50cy4gIChDb250cmlidXRlZCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AgaW4KKyAgOmlzc3VlOmA4Njg0YCkKKworKiAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jdCogcGFyYW1ldGVycyBvZiA6Y2xhc3M6YH5zY2hlZC5zY2hlZHVsZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9yIGFyZSBub3cgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvIDpmdW5jOmB0aW1lLnRpbWVgIGFuZAorICA6ZnVuYzpgdGltZS5zbGVlcGAgcmVzcGVjdGl2ZWx5LiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisqIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYCBhbmQgOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJhYnNgCisgICphcmd1bWVudCogcGFyYW1ldGVyIGlzIG5vdyBvcHRpb25hbC4gIChDb250cmlidXRlZCBieSBDaHJpcyBDbGFyayBpbgorICA6aXNzdWU6YDEzMjQ1YCkKKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmAgYW5kIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYWJzYAorICBub3cgYWNjZXB0IGEgKmt3YXJncyogcGFyYW1ldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrIGluCisgIDppc3N1ZTpgMTMyNDVgKQorCisKK3NobGV4CistLS0tLQorCitUaGUgcHJldmlvdXNseSB1bmRvY3VtZW50ZWQgaGVscGVyIGZ1bmN0aW9uIGBgcXVvdGVgYCBmcm9tIHRoZQorOm1vZDpgcGlwZXNgIG1vZHVsZXMgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIDptb2Q6YHNobGV4YCBtb2R1bGUgYW5kCitkb2N1bWVudGVkLiAgOmZ1bmM6YH5zaGxleC5xdW90ZWAgcHJvcGVybHkgZXNjYXBlcyBhbGwgY2hhcmFjdGVycyBpbiBhIHN0cmluZwordGhhdCBtaWdodCBiZSBvdGhlcndpc2UgZ2l2ZW4gc3BlY2lhbCBtZWFuaW5nIGJ5IHRoZSBzaGVsbC4KKworCitzaHV0aWwKKy0tLS0tLQorCisqIE5ldyBmdW5jdGlvbnM6CisKKyAgKiA6ZnVuYzpgfnNodXRpbC5kaXNrX3VzYWdlYDogcHJvdmlkZXMgdG90YWwsIHVzZWQgYW5kIGZyZWUgZGlzayBzcGFjZQorICAgIHN0YXRpc3RpY3MuIChDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEyNDQyYCkKKyAgKiA6ZnVuYzpgfnNodXRpbC5jaG93bmA6IGFsbG93cyBvbmUgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG9mIHRoZSBnaXZlbgorICAgIHBhdGggYWxzbyBzcGVjaWZ5aW5nIHRoZSB1c2VyL2dyb3VwIG5hbWVzIGFuZCBub3Qgb25seSB0aGVpciBudW1lcmljCisgICAgaWRzLiAoQ29udHJpYnV0ZWQgYnkgU2FuZHJvIFRvc2kgaW4gOmlzc3VlOmAxMjE5MWApCisgICogOmZ1bmM6YHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZWA6IHJldHVybnMgdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdworICAgIHRvIHdoaWNoIHRoZSBpbnRlcnByZXRlciBpcyBhdHRhY2hlZC4gIChDb250cmlidXRlZCBieSBaYmlnbmlldworICAgIErEmWRyemVqZXdza2ktU3ptZWsgaW4gOmlzc3VlOmAxMzYwOWAuKQorCisqIDpmdW5jOmB+c2h1dGlsLmNvcHkyYCBhbmQgOmZ1bmM6YH5zaHV0aWwuY29weXN0YXRgIG5vdyBwcmVzZXJ2ZSBmaWxlCisgIHRpbWVzdGFtcHMgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbiBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0LgorICBUaGV5IGFsc28gcHJlc2VydmUgZmlsZSAiZXh0ZW5kZWQgYXR0cmlidXRlcyIgb24gTGludXguICAoQ29udHJpYnV0ZWQKKyAgYnkgTGFycnkgSGFzdGluZ3MgaW4gOmlzc3VlOmAxNDEyN2AgYW5kICA6aXNzdWU6YDE1MjM4YC4pCisKKyogU2V2ZXJhbCBmdW5jdGlvbnMgbm93IHRha2UgYW4gb3B0aW9uYWwgYGBzeW1saW5rc2BgIGFyZ3VtZW50OiB3aGVuIHRoYXQKKyAgcGFyYW1ldGVyIGlzIHRydWUsIHN5bWxpbmtzIGFyZW4ndCBkZXJlZmVyZW5jZWQgYW5kIHRoZSBvcGVyYXRpb24gaW5zdGVhZAorICBhY3RzIG9uIHRoZSBzeW1saW5rIGl0c2VsZiAob3IgY3JlYXRlcyBvbmUsIGlmIHJlbGV2YW50KS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEh5bmVrIFNjaGxhd2FjayBpbiA6aXNzdWU6YDEyNzE1YC4pCisKKyogOmZ1bmM6YH5zaHV0aWwucm10cmVlYCBpcyBub3cgcmVzaXN0YW50IHRvIHN5bWxpbmsgYXR0YWNrcyBvbiBwbGF0Zm9ybXMKKyAgd2hpY2ggc3VwcG9ydCB0aGUgbmV3IGBgZGlyX2ZkYGAgcGFyYW1ldGVyIGluIDpmdW5jOmBvcy5vcGVuYCBhbmQKKyAgOmZ1bmM6YG9zLnVubGlua2AuIChDb250cmlidXRlZCBieSBNYXJ0aW4gdm9uIEzDtndpcyBhbmQgSHluZWsgU2NobGF3YWNrCisgIGluIDppc3N1ZTpgNDQ4OWAuKQorCisKK3NpZ25hbAorLS0tLS0tCisKKyogVGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGhhcyBuZXcgZnVuY3Rpb25zOgorCisgICogOmZ1bmM6YH5zaWduYWwucHRocmVhZF9zaWdtYXNrYDogZmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlCisgICAgY2FsbGluZyB0aHJlYWQgKENvbnRyaWJ1dGVkIGJ5IEplYW4tUGF1bCBDYWxkZXJvbmUgaW4gOmlzc3VlOmA4NDA3YCkgOworICAqIDpmdW5jOmB+c2lnbmFsLnB0aHJlYWRfa2lsbGA6IHNlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQgOworICAqIDpmdW5jOmB+c2lnbmFsLnNpZ3BlbmRpbmdgOiBleGFtaW5lIHBlbmRpbmcgZnVuY3Rpb25zIDsKKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0YDogd2FpdCBhIHNpZ25hbC4KKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWd3YWl0aW5mb2A6IHdhaXQgZm9yIGEgc2lnbmFsLCByZXR1cm5pbmcgZGV0YWlsZWQKKyAgICBpbmZvcm1hdGlvbiBhYm91dCBpdC4KKyAgKiA6ZnVuYzpgfnNpZ25hbC5zaWd0aW1lZHdhaXRgOiBsaWtlIDpmdW5jOmB+c2lnbmFsLnNpZ3dhaXRpbmZvYCBidXQgd2l0aCBhCisgICAgdGltZW91dC4KKworKiBUaGUgc2lnbmFsIGhhbmRsZXIgd3JpdGVzIHRoZSBzaWduYWwgbnVtYmVyIGFzIGEgc2luZ2xlIGJ5dGUgaW5zdGVhZCBvZgorICBhIG51bCBieXRlIGludG8gdGhlIHdha2V1cCBmaWxlIGRlc2NyaXB0b3IuIFNvIGl0IGlzIHBvc3NpYmxlIHRvIHdhaXQgbW9yZQorICB0aGFuIG9uZSBzaWduYWwgYW5kIGtub3cgd2hpY2ggc2lnbmFscyB3ZXJlIHJhaXNlZC4KKworKiA6ZnVuYzpgc2lnbmFsLnNpZ25hbGAgYW5kIDpmdW5jOmBzaWduYWwuc2lnaW50ZXJydXB0YCByYWlzZSBhbiBPU0Vycm9yLAorICBpbnN0ZWFkIG9mIGEgUnVudGltZUVycm9yOiBPU0Vycm9yIGhhcyBhbiBlcnJubyBhdHRyaWJ1dGUuCisKKworc210cAorLS0tLQorCis6Y2xhc3M6YH5zbXRwbGliLlNNVFBgIG5vdyBzdXBwb3J0cyB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLCBhbGxvd2luZyBhbgorYGBTTVRQYGAgaW5zdGFuY2UgdG8gYmUgdXNlZCBpbiBhIGBgd2l0aGBgIHN0YXRlbWVudC4gIChDb250cmlidXRlZAorYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMTI4OWAuKQorCisKK3NtdHBkCistLS0tLQorCitUaGUgOm1vZDpgc210cGRgIG1vZHVsZSBub3cgc3VwcG9ydHMgOnJmYzpgNTMyMWAgKGV4dGVuZGVkIFNNVFApIGFuZCA6cmZjOmAxODcwYAorKHNpemUgZXh0ZW5zaW9uKS4gIFBlciB0aGUgc3RhbmRhcmQsIHRoZXNlIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgaWYgYW5kIG9ubHkKK2lmIHRoZSBjbGllbnQgaW5pdGlhdGVzIHRoZSBzZXNzaW9uIHdpdGggYW4gYGBFSExPYGAgY29tbWFuZC4KKworKEluaXRpYWwgYGBFTEhPYGAgc3VwcG9ydCBieSBBbGJlcnRvIFRyZXZpbm8uICBTaXplIGV4dGVuc2lvbiBieSBKdWhhbmEKK0phdWhpYWluZW4uICBTdWJzdGFudGlhbCBhZGRpdGlvbmFsIHdvcmsgb24gdGhlIHBhdGNoIGNvbnRyaWJ1dGVkIGJ5IE1pY2hlbGUKK09ycsO5IGFuZCBEYW4gQm9zd2VsbC4gIDppc3N1ZTpgODczOWApCisKKworc210cGxpYgorLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+c210cGxpYi5TTVRQX1NTTGAgY29uc3RydWN0b3IgYW5kIHRoZSA6bWV0aDpgfnNtdHBsaWIuU01UUC5zdGFydHRsc2AKK21ldGhvZCBub3cgYWNjZXB0IGFuIFNTTENvbnRleHQgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlCitjaGFubmVsLgorCisoQ29udHJpYnV0ZWQgYnkgS2FzdW4gSGVyYXRoIGluIDppc3N1ZTpgODgwOWApCisKKworc29ja2V0CistLS0tLS0KKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IGV4cG9zZXMgYWRkaXRpb25hbCBtZXRob2RzIHRvIHByb2Nlc3MKKyAgYW5jaWxsYXJ5IGRhdGEgd2hlbiBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm06CisKKyAgKiA6ZnVuYzpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ2AKKyAgKiA6ZnVuYzpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ2AKKyAgKiA6ZnVuYzpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ19pbnRvYAorCisgIChDb250cmlidXRlZCBieSBEYXZpZCBXYXRzb24gaW4gOmlzc3VlOmA2NTYwYCwgYmFzZWQgb24gYW4gZWFybGllciBwYXRjaCBieQorICBIZWlrbyBXdW5kcmFtKQorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIFBGX0NBTiBwcm90b2NvbCBmYW1pbHkKKyAgKGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU29ja2V0Y2FuKSwgb24gTGludXgKKyAgKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzI1MzQyNSkuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IE1hdHRoaWFzIEZ1Y2hzLCB1cGRhdGVkIGJ5IFRpYWdvIEdvbsOnYWx2ZXMgaW4gOmlzc3VlOmAxMDE0MWApCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgUEZfUkRTIHByb3RvY29sIGZhbWlseQorICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWxpYWJsZV9EYXRhZ3JhbV9Tb2NrZXRzIGFuZAorICBodHRwOi8vb3NzLm9yYWNsZS5jb20vcHJvamVjdHMvcmRzLykuCisKKyogTmV3IGZ1bmN0aW9uIDpmdW5jOmB+c29ja2V0LnNldGhvc3RuYW1lYCBhbGxvd3MgdGhlIGhvc3RuYW1lIHRvIGJlIHNldAorICBvbiB1bml4IHN5c3RlbXMgaWYgdGhlIGNhbGxpbmcgcHJvY2VzcyBoYXMgc3VmZmljaWVudCBwcml2aWxlZ2VzLgorICAoQ29udHJpYnV0ZWQgYnkgUm9zcyBMYWdlcndhbGwgaW4gOmlzc3VlOmAxMDg2NmAuKQorCisKK3NzbAorLS0tCisKKyogVGhlIDptb2Q6YHNzbGAgbW9kdWxlIGhhcyB0d28gbmV3IHJhbmRvbSBnZW5lcmF0aW9uIGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c3NsLlJBTkRfYnl0ZXNgOiBnZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcKKyAgICBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorICAqIDpmdW5jOmB+c3NsLlJBTkRfcHNldWRvX2J5dGVzYDogZ2VuZXJhdGUgcHNldWRvLXJhbmRvbSBieXRlcy4KKworICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAxMjA0OWApCisKKyogVGhlIDptb2Q6YHNzbGAgbW9kdWxlIG5vdyBleHBvc2VzIGEgZmluZXItZ3JhaW5lZCBleGNlcHRpb24gaGllcmFyY2h5CisgIGluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGluc3BlY3QgdGhlIHZhcmlvdXMga2luZHMgb2YgZXJyb3JzLgorCisgIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDExMTgzYCkKKworKiA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgbm93IGFjY2VwdHMgYSAqcGFzc3dvcmQqIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4KKworICAoQ29udHJpYnV0ZWQgYnkgQWRhbSBTaW1wa2lucyBpbiA6aXNzdWU6YDEyODAzYCkKKworKiBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIGJvdGggcmVndWxhciBhbmQgRWxsaXB0aWMgQ3VydmUtYmFzZWQsIGlzCisgIG5vdyBzdXBwb3J0ZWQgdGhyb3VnaCB0aGUgOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtc2AgYW5kCisgIDptZXRoOmB+c3NsLlNTTENvbnRleHQuc2V0X2VjZGhfY3VydmVgIG1ldGhvZHMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM2MjZgIGFuZCA6aXNzdWU6YDEzNjI3YCkKKworKiBTU0wgc29ja2V0cyBoYXZlIGEgbmV3IDptZXRoOmB+c3NsLlNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nYCBtZXRob2QKKyAgYWxsb3dpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNlcnRhaW4gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzCisgIFNDUkFNLVNIQS0xLVBMVVMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEphY2VrIEtvbmllY3pueSBpbiA6aXNzdWU6YDEyNTUxYCkKKworKiBZb3UgY2FuIHF1ZXJ5IHRoZSBTU0wgY29tcHJlc3Npb24gYWxnb3JpdGhtIHVzZWQgYnkgYW4gU1NMIHNvY2tldCwgdGhhbmtzCisgIHRvIGl0cyBuZXcgOm1ldGg6YH5zc2wuU1NMU29ja2V0LmNvbXByZXNzaW9uYCBtZXRob2QuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM2MzRgKQorCisqIFN1cHBvcnQgaGFzIGJlZW4gYWRkZWQgZm9yIHRoZSBOZXh0IFByb2NvdG9sIE5lZ290aWF0aW9uIGV4dGVuc2lvbiB1c2luZworICB0aGUgOm1ldGg6YHNzbC5TU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCBtZXRob2QuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IENvbGluIE1hcmMgaW4gOmlzc3VlOmAxNDIwNGApCisKKyogU1NMIGVycm9ycyBjYW4gbm93IGJlIGludHJvc3BlY3RlZCBtb3JlIGVhc2lseSB0aGFua3MgdG8KKyAgOmF0dHI6YH5zc2wuU1NMRXJyb3IubGlicmFyeWAgYW5kIDphdHRyOmB+c3NsLlNTTEVycm9yLnJlYXNvbmAgYXR0cmlidXRlcy4KKworICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxNDgzN2ApCisKK3N0YXQKKy0tLS0KKworVGhlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlIGZ1bmN0aW9uIGhhcyBiZWVuIG1vdmVkIHRvCis6ZnVuYzpgc3RhdC5maWxlbW9kZWAuIEl0IGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZgordGhlIGZvcm0gJy1yd3hyd3hyd3gnLgorCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxNDgwN2ApCisKKworc3VicHJvY2VzcworLS0tLS0tLS0tLQorCitDb21tYW5kIHN0cmluZ3MgY2FuIG5vdyBiZSBieXRlcyBvYmplY3RzIG9uIHBvc2l4IHBsYXRmb3Jtcy4gIChDb250cmlidXRlZCBieQorVmljdG9yIFN0aW5lciBpbiA6aXNzdWU6YDg1MTNgLikKKworQSBuZXcgY29uc3RhbnQgOmRhdGE6YH5zdWJwcm9jZXNzLkRFVk5VTExgIGFsbG93cyBzdXBwcmVzc2luZyBvdXRwdXQgaW4gYQorcGxhdGZvcm0taW5kZXBlbmRlbnQgZmFzaGlvbi4gIChDb250cmlidXRlZCBieSBSb3NzIExhZ2Vyd2FsbCBpbgorOmlzc3VlOmA1ODcwYC4pCisKKworc3lzCistLS0KKworVGhlIDptb2Q6YHN5c2AgbW9kdWxlIGhhcyBhIG5ldyA6ZGF0YTpgfnN5cy50aHJlYWRfaW5mb2AgOnRlcm06YHN0cnVjdAorc2VxdWVuY2VgIGhvbGRpbmcgaW5mb3JtYXRpb25zIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uCisKKyg6aXNzdWU6YDExMjIzYCkKKwordGV4dHdyYXAKKy0tLS0tLS0tCisKK1RoZSA6bW9kOmB0ZXh0d3JhcGAgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfnRleHR3cmFwLmluZGVudGAgdGhhdCBtYWtlcworaXQgc3RyYWlnaHRmb3J3YXJkIHRvIGFkZCBhIGNvbW1vbiBwcmVmaXggdG8gc2VsZWN0ZWQgbGluZXMgaW4gYSBibG9jaworb2YgdGV4dC4KKworKDppc3N1ZTpgMTM4NTdgKQorCisKK3RocmVhZGluZworLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YHRocmVhZGluZy5UaHJlYWRgIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGEgYGBkYWVtb25gYCBrZXl3b3JkCithcmd1bWVudCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBpbmhlcml0aW5nIHRoZSBgYGRlYW1vbmBgIGZsYWcKK3ZhbHVlIGZyb20gdGhlIHBhcmVudCB0aHJlYWQgKDppc3N1ZTpgNjA2NGApLgorCisKK3RpbWUKKy0tLS0KKworVGhlIDpwZXA6YDQxOGAgYWRkZWQgbmV3IGZ1bmN0aW9ucyB0byB0aGUgOm1vZDpgdGltZWAgbW9kdWxlOgorCisqIDpmdW5jOmB+dGltZS5nZXRfY2xvY2tfaW5mb2A6IEdldCBpbmZvcm1hdGlvbiBvbiBhIGNsb2NrLgorKiA6ZnVuYzpgfnRpbWUubW9ub3RvbmljYDogTW9ub3RvbmljIGNsb2NrIChjYW5ub3QgZ28gYmFja3dhcmQpLCBub3QgYWZmZWN0ZWQKKyAgYnkgc3lzdGVtIGNsb2NrIHVwZGF0ZXMuCisqIDpmdW5jOmB+dGltZS5wZXJmX2NvdW50ZXJgOiBQZXJmb3JtYW5jZSBjb3VudGVyIHdpdGggdGhlIGhpZ2hlc3QgYXZhaWxhYmxlCisgIHJlc29sdXRpb24gdG8gbWVhc3VyZSBhIHNob3J0IGR1cmF0aW9uLgorKiA6ZnVuYzpgfnRpbWUucHJvY2Vzc190aW1lYDogU3VtIG9mIHRoZSBzeXN0ZW0gYW5kIHVzZXIgQ1BVIHRpbWUgb2YgdGhlCisgIGN1cnJlbnQgcHJvY2Vzcy4KKworT3RoZXIgbmV3IGZ1bmN0aW9uczoKKworKiA6ZnVuYzpgfnRpbWUuY2xvY2tfZ2V0cmVzYCwgOmZ1bmM6YH50aW1lLmNsb2NrX2dldHRpbWVgIGFuZAorICA6ZnVuYzpgfnRpbWUuY2xvY2tfc2V0dGltZWAgZnVuY3Rpb25zIHdpdGggYGBDTE9DS194eHhgYCBjb25zdGFudHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDEwMjc4YCkKKworCit0eXBlcworLS0tLS0KKworQWRkIGEgbmV3IDpjbGFzczpgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWAgY2xhc3M6IFJlYWQtb25seSBwcm94eSBvZiBhIG1hcHBpbmcuCisoOmlzc3VlOmAxNDM4NmApCisKKworVGhlIG5ldyBmdW5jdGlvbnMgYHR5cGVzLm5ld19jbGFzc2AgYW5kIGB0eXBlcy5wcmVwYXJlX2NsYXNzYCBwcm92aWRlIHN1cHBvcnQKK2ZvciBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyB0eXBlIGNyZWF0aW9uLiAoOmlzc3VlOmAxNDU4OGApCisKKwordW5pdHRlc3QKKy0tLS0tLS0tCisKKzptZXRoOmAuYXNzZXJ0UmFpc2VzYCwgOm1ldGg6YC5hc3NlcnRSYWlzZXNSZWdleGAsIDptZXRoOmAuYXNzZXJ0V2FybnNgLCBhbmQKKzptZXRoOmAuYXNzZXJ0V2FybnNSZWdleGAgbm93IGFjY2VwdCBhIGtleXdvcmQgYXJndW1lbnQgKm1zZyogd2hlbiB1c2VkIGFzCitjb250ZXh0IG1hbmFnZXJzLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBhbmQgV2luc3RvbiBFd2VydCBpbgorOmlzc3VlOmAxMDc3NWApCisKKzptZXRoOmB1bml0dGVzdC5UZXN0Q2FzZS5ydW5gIG5vdyByZXR1cm5zIHRoZSA6Y2xhc3M6YH51bml0dGVzdC5UZXN0UmVzdWx0YAorb2JqZWN0LgorCit1cmxsaWIKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB+dXJsbGliLnJlcXVlc3QuUmVxdWVzdGAgY2xhc3MsIG5vdyBhY2NlcHRzIGEgKm1ldGhvZCogYXJndW1lbnQKK3VzZWQgYnkgOm1ldGg6YH51cmxsaWIucmVxdWVzdC5SZXF1ZXN0LmdldF9tZXRob2RgIHRvIGRldGVybWluZSB3aGF0IEhUVFAgbWV0aG9kCitzaG91bGQgYmUgdXNlZC4gIEZvciBleGFtcGxlLCB0aGlzIHdpbGwgc2VuZCBhIGBgJ0hFQUQnYGAgcmVxdWVzdDo6CisKKyAgID4+PiB1cmxvcGVuKFJlcXVlc3QoJ2h0dHA6Ly93d3cucHl0aG9uLm9yZycsIG1ldGhvZD0nSEVBRCcpKQorCisoOmlzc3VlOmAxNjczMDA3YCkKKworCit3ZWJicm93c2VyCistLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB3ZWJicm93c2VyYCBtb2R1bGUgc3VwcG9ydHMgbW9yZSBicm93c2VyczogR29vZ2xlIENocm9tZSAobmFtZWQKKzpwcm9ncmFtOmBjaHJvbWVgLCA6cHJvZ3JhbTpgY2hyb21pdW1gLCA6cHJvZ3JhbTpgY2hyb21lLWJyb3dzZXJgIG9yCis6cHJvZ3JhbTpgY2hyb21pdW0tYnJvd3NlcmAgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIGFuZCBvcGVyYXRpbmcgc3lzdGVtKSBhcword2VsbCBhcyB0aGUgdGhlIGdlbmVyaWMgbGF1bmNoZXJzIDpwcm9ncmFtOmB4ZGctb3BlbmAgZnJvbSB0aGUgRnJlZURlc2t0b3Aub3JnCitwcm9qZWN0IGFuZCA6cHJvZ3JhbTpgZ3Zmcy1vcGVuYCB3aGljaCBpcyB0aGUgZGVmYXVsdCBVUkkgaGFuZGxlciBmb3IgR05PTUUgMy4KKworKDppc3N1ZTpgMTM2MjBgIGFuZCA6aXNzdWU6YDE0NDkzYCkKKworCit4bWwuZXRyZWUuRWxlbWVudFRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCBtb2R1bGUgbm93IGltcG9ydHMgaXRzIEMgYWNjZWxlcmF0b3IgYnkKK2RlZmF1bHQ7IHRoZXJlIGlzIG5vIGxvbmdlciBhIG5lZWQgdG8gZXhwbGljaXRseSBpbXBvcnQKKzptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgICh0aGlzIG1vZHVsZSBzdGF5cyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksCitidXQgaXMgbm93IGRlcHJlY2F0ZWQpLiAgSW4gYWRkaXRpb24sICB0aGUgYGBpdGVyYGAgZmFtaWx5IG9mIG1ldGhvZHMgb2YKKzpjbGFzczpgfnhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50YCBoYXMgYmVlbiBvcHRpbWl6ZWQgKHJld3JpdHRlbiBpbiBDKS4KK1RoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGhhcyBhbHNvIGJlZW4gZ3JlYXRseSBpbXByb3ZlZCB3aXRoIGFkZGVkIGV4YW1wbGVzCithbmQgYSBtb3JlIGRldGFpbGVkIHJlZmVyZW5jZS4KKworCitPcHRpbWl6YXRpb25zCis9PT09PT09PT09PT09CisKK01ham9yIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBoYXZlIGJlZW4gYWRkZWQ6CisKKyogVGhhbmtzIHRvIDpwZXA6YDM5M2AsIHNvbWUgb3BlcmF0aW9ucyBvbiBVbmljb2RlIHN0cmluZ3MgaGF2ZSBiZWVuIG9wdGltaXplZDoKKworICAqIHRoZSBtZW1vcnkgZm9vdHByaW50IGlzIGRpdmlkZWQgYnkgMiB0byA0IGRlcGVuZGluZyBvbiB0aGUgdGV4dAorICAqIGVuY29kZSBhbiBBU0NJSSBzdHJpbmcgdG8gVVRGLTggZG9lc24ndCBuZWVkIHRvIGVuY29kZSBjaGFyYWN0ZXJzIGFueW1vcmUsCisgICAgdGhlIFVURi04IHJlcHJlc2VudGF0aW9uIGlzIHNoYXJlZCB3aXRoIHRoZSBBU0NJSSByZXByZXNlbnRhdGlvbgorICAqIHRoZSBVVEYtOCBlbmNvZGVyIGhhcyBiZWVuIG9wdGltaXplZAorICAqIHJlcGVhdGluZyBhIHNpbmdsZSBBU0NJSSBsZXR0ZXIgYW5kIGdldHRpbmcgYSBzdWJzdHJpbmcgb2YgYSBBU0NJSSBzdHJpbmdzCisgICAgaXMgNCB0aW1lcyBmYXN0ZXIKKworKiBVVEYtOCBpcyBub3cgMnggdG8gNHggZmFzdGVyLiAgVVRGLTE2IGVuY29kaW5nIGlzIG5vdyB1cCB0byAxMHggZmFzdGVyLgorCisgIChjb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthLCA6aXNzdWU6YDE0NjI0YCwgOmlzc3VlOmAxNDczOGAgYW5kCisgIDppc3N1ZTpgMTUwMjZgLikKKworCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworQ2hhbmdlcyB0byBQeXRob24ncyBidWlsZCBwcm9jZXNzIGFuZCB0byB0aGUgQyBBUEkgaW5jbHVkZToKKworKiBOZXcgOnBlcDpgMzExOGAgcmVsYXRlZCBmdW5jdGlvbjoKKworICAqIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5YAorCisqIDpwZXA6YDM5M2AgYWRkZWQgbmV3IFVuaWNvZGUgdHlwZXMsIG1hY3JvcyBhbmQgZnVuY3Rpb25zOgorCisgICogSGlnaC1sZXZlbCBBUEk6CisKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVyc2AKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9GaW5kQ2hhcmAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgLCA6YzptYWNybzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX1N1YnN0cmluZ2AKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9SZWFkQ2hhcmAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Xcml0ZUNoYXJgCisKKyAgKiBMb3ctbGV2ZWwgQVBJOgorCisgICAgKiA6Yzp0eXBlOmBQeV9VQ1MxYCwgOmM6dHlwZTpgUHlfVUNTMmAsIDpjOnR5cGU6YFB5X1VDUzRgIHR5cGVzCisgICAgKiA6Yzp0eXBlOmBQeUFTQ0lJT2JqZWN0YCBhbmQgOmM6dHlwZTpgUHlDb21wYWN0VW5pY29kZU9iamVjdGAgc3RydWN0dXJlcworICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEWWAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0YCwgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVUNTNENvcHlgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX0RBVEFgLCA6YzptYWNybzpgUHlVbmljb2RlXzFCWVRFX0RBVEFgLAorICAgICAgOmM6bWFjcm86YFB5VW5pY29kZV8yQllURV9EQVRBYCwgOmM6bWFjcm86YFB5VW5pY29kZV80QllURV9EQVRBYAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9LSU5EYCB3aXRoIDpjOnR5cGU6YFB5VW5pY29kZV9LaW5kYCBlbnVtOgorICAgICAgOmM6ZGF0YTpgUHlVbmljb2RlX1dDSEFSX0tJTkRgLCA6YzpkYXRhOmBQeVVuaWNvZGVfMUJZVEVfS0lORGAsCisgICAgICA6YzpkYXRhOmBQeVVuaWNvZGVfMkJZVEVfS0lORGAsIDpjOmRhdGE6YFB5VW5pY29kZV80QllURV9LSU5EYAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEYCwgOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEX0NIQVJgLCA6YzptYWNybzpgUHlVbmljb2RlX1dSSVRFYAorICAgICogOmM6bWFjcm86YFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRWAKKworCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworVW5zdXBwb3J0ZWQgT3BlcmF0aW5nIFN5c3RlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09TLzIgYW5kIFZNUyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCBkdWUgdG8gdGhlIGxhY2sgb2YgYSBtYWludGFpbmVyLgorCitXaW5kb3dzIDIwMDAgYW5kIFdpbmRvd3MgcGxhdGZvcm1zIHdoaWNoIHNldCBgYENPTVNQRUNgYCB0byBgYGNvbW1hbmQuY29tYGAKK2FyZSBubyBsb25nZXIgc3VwcG9ydGVkIGR1ZSB0byBtYWludGVuYW5jZSBidXJkZW4uCisKK09TRiBzdXBwb3J0LCB3aGljaCB3YXMgZGVwcmVjYXRlZCBpbiAzLjIsIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZC4KKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBgYHVuaWNvZGVfaW50ZXJuYWxgYCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIGJlY2F1c2Ugb2YgdGhlCisgIDpwZXA6YDM5M2AsIHVzZSBVVEYtOCwgVVRGLTE2IChgYHV0Zi0xNi1sZWBgIG9yIGBgdXRmLTE2LWJlYGApLCBvciBVVEYtMzIKKyAgKGBgdXRmLTMyLWxlYGAgb3IgYGB1dGYtMzItYmVgYCkKKyogOm1ldGg6YGZ0cGxpYi5GVFAubmxzdGAgYW5kIDptZXRoOmBmdHBsaWIuRlRQLmRpcmA6IHVzZQorICA6bWV0aDpgZnRwbGliLkZUUC5tbHNkYAorKiA6ZnVuYzpgcGxhdGZvcm0ucG9wZW5gOiB1c2UgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIG1vZHVsZS4gQ2hlY2sgZXNwZWNpYWxseQorICB0aGUgOnJlZjpgc3VicHJvY2Vzcy1yZXBsYWNlbWVudHNgIHNlY3Rpb24gKDppc3N1ZTpgMTEzNzdgKS4KKyogOmlzc3VlOmAxMzM3NGA6IFRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHRoZSA6bW9kOmBvc2AKKyAgbW9kdWxlLiBVc2UgVW5pY29kZSBmaWxlbmFtZXMsIGluc3RlYWQgb2YgYnl0ZXMgZmlsZW5hbWVzLCB0byBub3QgZGVwZW5kIG9uCisgIHRoZSBBTlNJIGNvZGUgcGFnZSBhbnltb3JlIGFuZCB0byBzdXBwb3J0IGFueSBmaWxlbmFtZS4KKyogOmlzc3VlOmAxMzk4OGA6IFRoZSA6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYCBtb2R1bGUgaXMgZGVwcmVjYXRlZC4gIFRoZQorICBhY2NlbGVyYXRvciBpcyB1c2VkIGF1dG9tYXRpY2FsbHkgd2hlbmV2ZXIgYXZhaWxhYmxlLgorKiBUaGUgYmVoYXZpb3VyIG9mIDpmdW5jOmB0aW1lLmNsb2NrYCBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybTogdXNlIHRoZSBuZXcKKyAgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCBvciA6ZnVuYzpgdGltZS5wcm9jZXNzX3RpbWVgIGZ1bmN0aW9uIGluc3RlYWQsCisgIGRlcGVuZGluZyBvbiB5b3VyIHJlcXVpcmVtZW50cywgdG8gaGF2ZSBhIHdlbGwgZGVmaW5lZCBiZWhhdmlvdXIuCisqIFRoZSA6ZnVuYzpgb3Muc3RhdF9mbG9hdF90aW1lc2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KKyogOm1vZDpgYWJjYCBtb2R1bGU6CisKKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHByb3BlcnR5YCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgOmNsYXNzOmBwcm9wZXJ0eWAKKyAgICB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBjbGFzc21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YHN0YXRpY21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorCisqIDptb2Q6YGltcG9ydGxpYmAgcGFja2FnZToKKworICAqIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX210aW1lYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKKyAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIucGF0aF9zdGF0c2AgYXMgYnl0ZWNvZGUgZmlsZXMgbm93IHN0b3JlCisgICAgYm90aCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgYW5kIHNpemUgb2YgdGhlIHNvdXJjZSBmaWxlIHRoZSBieXRlY29kZSBmaWxlIHdhcworICAgIGNvbXBpbGVkIGZyb20uCisKKworCisKKworRGVwcmVjYXRlZCBmdW5jdGlvbnMgYW5kIHR5cGVzIG9mIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSA6cGVwOmAzOTNgIGFuZCB3aWxsIGJlCityZW1vdmVkIGluIFB5dGhvbiA0LiBBbGwgZnVuY3Rpb25zIHVzaW5nIHRoaXMgdHlwZSBhcmUgZGVwcmVjYXRlZDoKKworVW5pY29kZSBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgdXNpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYW5kCis6Yzp0eXBlOmBQeV9VTklDT0RFKmAgdHlwZXM6CisKKyogOmM6bWFjcm86YFB5VW5pY29kZV9Gcm9tVW5pY29kZWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0FTX1VOSUNPREVgLCA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlYCwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemVgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmdgCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfQVNfREFUQWA6IHVzZSA6YzptYWNybzpgUHlVbmljb2RlX0RBVEFgIHdpdGgKKyAgOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEYCBhbmQgOmM6bWFjcm86YFB5VW5pY29kZV9XUklURWAKKyogOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfU0laRWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRTaXplYDogdXNlCisgIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAKKyogOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfREFUQV9TSVpFYDogdXNlCisgIGBgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAqIFB5VW5pY29kZV9LSU5EKHN0cilgYCAob25seSB3b3JrIG9uIHJlYWR5CisgIHN0cmluZ3MpCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5YDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VDUzRDb3B5YCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAKKworCitGdW5jdGlvbnMgYW5kIG1hY3JvcyBtYW5pcHVsYXRpbmcgUHlfVU5JQ09ERSogc3RyaW5nczoKKworKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJsZW5gOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAgb3IKKyAgOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfTEVOR1RIYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjYXRgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RyY3B5YCwgOmM6bWFjcm86YFB5X1VOSUNPREVfc3RybmNweWAsCisgIDpjOm1hY3JvOmBQeV9VTklDT0RFX0NPUFlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfU3Vic3RyaW5nYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjbXBgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvbXBhcmVgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cm5jbXBgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX1RhaWxtYXRjaGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RyY2hyYCwgOmM6bWFjcm86YFB5X1VOSUNPREVfc3RycmNocmA6IHVzZQorICA6YzpmdW5jOmBQeVVuaWNvZGVfRmluZENoYXJgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX0ZJTExgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0ZpbGxgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX01BVENIYAorCitFbmNvZGVyczoKKworKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3RgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEY3YAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGOGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4YCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGMzJgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEYxNmAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGU6YCB1c2UKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGU6YCB1c2UKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxhdGluMWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVBU0NJSWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUNoYXJtYXBgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlTUJDU2A6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2VgICh3aXRoIGBgQ1BfQUNQYGAgY29kZV9wYWdlKQorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAsCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSWAKKworCitEZXByZWNhdGVkIGZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlJ3MgYGAndSdgYCBmb3JtYXQgY29kZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQorcmVtb3ZlZCBpbiBQeXRob24gNCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRoZSAoOmM6dHlwZTpgUHlfVU5JQ09ERWApIEFQSS4KKworCitQb3J0aW5nIHRvIFB5dGhvbiAzLjMKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHNlY3Rpb24gbGlzdHMgcHJldmlvdXNseSBkZXNjcmliZWQgY2hhbmdlcyBhbmQgb3RoZXIgYnVnZml4ZXMKK3RoYXQgbWF5IHJlcXVpcmUgY2hhbmdlcyB0byB5b3VyIGNvZGUuCisKKy4uIF9wb3J0aW5ncHl0aG9uY29kZToKKworUG9ydGluZyBQeXRob24gY29kZQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIFNldCB0aGUgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgCisgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGBgMGBgIHRvIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLiBTZWUgYWxzbyB0aGUKKyAgOm1ldGg6YG9iamVjdC5fX2hhc2hfX2AgbWV0aG9kLgorCisqIDppc3N1ZTpgMTIzMjZgOiBPbiBMaW51eCwgc3lzLnBsYXRmb3JtIGRvZXNuJ3QgY29udGFpbiB0aGUgbWFqb3IgdmVyc2lvbgorICBhbnltb3JlLiBJdCBpcyBub3cgYWx3YXlzICdsaW51eCcsIGluc3RlYWQgb2YgJ2xpbnV4Micgb3IgJ2xpbnV4MycgZGVwZW5kaW5nCisgIG9uIHRoZSBMaW51eCB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgUHl0aG9uLiBSZXBsYWNlIHN5cy5wbGF0Zm9ybSA9PSAnbGludXgyJworICB3aXRoIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpLCBvciBkaXJlY3RseSBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JyBpZgorICB5b3UgZG9uJ3QgbmVlZCB0byBzdXBwb3J0IG9sZGVyIFB5dGhvbiB2ZXJzaW9ucy4KKworKiA6aXNzdWU6YDEzODQ3YCwgOmlzc3VlOmAxNDE4MGA6IDptb2Q6YHRpbWVgIGFuZCA6bW9kOmBkYXRldGltZWA6CisgIDpleGM6YE92ZXJmbG93RXJyb3JgIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiBhCisgIHRpbWVzdGFtcCBpcyBvdXQgb2YgcmFuZ2UuIDpleGM6YE9TRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgQyBmdW5jdGlvbnMKKyAgOmM6ZnVuYzpgZ210aW1lYCBvciA6YzpmdW5jOmBsb2NhbHRpbWVgIGZhaWxlZC4KKworKiBUaGUgZGVmYXVsdCBmaW5kZXJzIHVzZWQgYnkgaW1wb3J0IG5vdyB1dGlsaXplIGEgY2FjaGUgb2Ygd2hhdCBpcyBjb250YWluZWQKKyAgd2l0aGluIGEgc3BlY2lmaWMgZGlyZWN0b3J5LiBJZiB5b3UgY3JlYXRlIGEgUHl0aG9uIHNvdXJjZSBmaWxlIG9yIHNvdXJjZWxlc3MKKyAgYnl0ZWNvZGUgZmlsZSwgbWFrZSBzdXJlIHRvIGNhbGwgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AgdG8gY2xlYXIKKyAgb3V0IHRoZSBjYWNoZSBmb3IgdGhlIGZpbmRlcnMgdG8gbm90aWNlIHRoZSBuZXcgZmlsZS4KKworKiA6ZXhjOmBJbXBvcnRFcnJvcmAgbm93IHVzZXMgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgd2FzIGF0dGVtcGVkIHRvCisgIGJlIGltcG9ydGVkLiBEb2N0ZXN0cyB0aGF0IGNoZWNrIEltcG9ydEVycm9ycycgbWVzc2FnZSB3aWxsIG5lZWQgdG8gYmUKKyAgdXBkYXRlZCB0byB1c2UgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIGluc3RlYWQgb2YganVzdCB0aGUgdGFpbCBvZiB0aGUKKyAgbmFtZS4KKworKiBUaGUgKmluZGV4KiBhcmd1bWVudCB0byA6ZnVuYzpgX19pbXBvcnRfX2Agbm93IGRlZmF1bHRzIHRvIDAgaW5zdGVhZCBvZiAtMQorICBhbmQgbm8gbG9uZ2VyIHN1cHBvcnQgbmVnYXRpdmUgdmFsdWVzLiBJdCB3YXMgYW4gb3ZlcnNpZ2h0IHdoZW4gOnBlcDpgMzI4YCB3YXMKKyAgaW1wbGVtZW50ZWQgdGhhdCB0aGUgZGVmYXVsdCB2YWx1ZSByZW1haW5lZCAtMS4gSWYgeW91IG5lZWQgdG8gY29udGludWUgdG8KKyAgcGVyZm9ybSBhIHJlbGF0aXZlIGltcG9ydCBmb2xsb3dlZCBieSBhbiBhYnNvbHV0ZSBpbXBvcnQsIHRoZW4gcGVyZm9ybSB0aGUKKyAgcmVsYXRpdmUgaW1wb3J0IHVzaW5nIGFuIGluZGV4IG9mIDEsIGZvbGxvd2VkIGJ5IGFub3RoZXIgaW1wb3J0IHVzaW5nIGFuCisgIGluZGV4IG9mIDAuIEl0IGlzIHByZWZlcnJlZCwgdGhvdWdoLCB0aGF0IHlvdSB1c2UKKyAgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCByYXRoZXIgdGhhbiBjYWxsIDpmdW5jOmBfX2ltcG9ydF9fYCBkaXJlY3RseS4KKworKiA6ZnVuYzpgX19pbXBvcnRfX2Agbm8gbG9uZ2VyIGFsbG93cyBvbmUgdG8gdXNlIGFuIGluZGV4IHZhbHVlIG90aGVyIHRoYW4gMAorICBmb3IgdG9wLWxldmVsIG1vZHVsZXMuIEUuZy4gYGBfX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKWBgIGlzIG5vdyBhbiBlcnJvci4KKworKiBCZWNhdXNlIDphdHRyOmBzeXMubWV0YV9wYXRoYCBhbmQgOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBub3cgaGF2ZSBmaW5kZXJzIG9uCisgIHRoZW0gYnkgZGVmYXVsdCwgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byB1c2UgOm1ldGg6YGxpc3QuaW5zZXJ0YCBpbnN0ZWFkCisgIG9mIDptZXRoOmBsaXN0LmFwcGVuZGAgdG8gYWRkIHRvIHRob3NlIGxpc3RzLgorCisqIEJlY2F1c2UgYGBOb25lYGAgaXMgbm93IGluc2VydGVkIGludG8gOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgaWYgeW91CisgIGFyZSBjbGVhcmluZyBvdXQgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeSBvZiBwYXRocyB0aGF0IGRvIG5vdCBoYXZlIGEKKyAgZmluZGVyLCB5b3Ugd2lsbCBuZWVkIHRvIHJlbW92ZSBrZXlzIHBhaXJlZCB3aXRoIHZhbHVlcyBvZiBgYE5vbmVgYCAqKmFuZCoqCisgIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUuIFRoaXMgd2lsbCBsZWFkIHRvIGV4dHJhCisgIG92ZXJoZWFkIG9uIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiB0aGF0IHJlLWluc2VydCBgYE5vbmVgYCBpbnRvCisgIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgd2hlcmUgaXQgcmVwZXNlbnRzIHRoZSB1c2Ugb2YgaW1wbGljaXQKKyAgZmluZGVycywgYnV0IHNlbWFudGljYWxseSBpdCBzaG91bGQgbm90IGNoYW5nZSBhbnl0aGluZy4KKworKiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBubyBsb25nZXIgc3BlY2lmaWVzIGEgYGZpbmRfbW9kdWxlKClgIGFic3RyYWN0CisgIG1ldGhvZCB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQuIElmIHlvdSB3ZXJlIHJlbHlpbmcgb24gc3ViY2xhc3NlcyB0bworICBpbXBsZW1lbnQgdGhhdCBtZXRob2QsIG1ha2Ugc3VyZSB0byBjaGVjayBmb3IgdGhlIG1ldGhvZCdzIGV4aXN0ZW5jZSBmaXJzdC4KKyAgWW91IHdpbGwgcHJvYmFibHkgd2FudCB0byBjaGVjayBmb3IgYGZpbmRfbG9hZGVyKClgIGZpcnN0LCB0aG91Z2gsIGluIHRoZQorICBjYXNlIG9mIHdvcmtpbmcgd2l0aCA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJzIDxwYXRoIGVudHJ5IGZpbmRlcj5gLgorCisqIDptb2Q6YHBrZ3V0aWxgIGhhcyBiZWVuIGNvbnZlcnRlZCB0byB1c2UgOm1vZDpgaW1wb3J0bGliYCBpbnRlcm5hbGx5LiBUaGlzCisgIGVsaW1pbmF0ZXMgbWFueSBlZGdlIGNhc2VzIHdoZXJlIHRoZSBvbGQgYmVoYXZpb3VyIG9mIHRoZSBQRVAgMzAyIGltcG9ydAorICBlbXVsYXRpb24gZmFpbGVkIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHJlYWwgaW1wb3J0IHN5c3RlbS4gVGhlCisgIGltcG9ydCBlbXVsYXRpb24gaXRzZWxmIGlzIHN0aWxsIHByZXNlbnQsIGJ1dCBpcyBub3cgZGVwcmVjYXRlZC4gVGhlCisgIDpmdW5jOmBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzYCBhbmQgOmZ1bmM6YHBrZ3V0aWwud2Fsa19wYWNrYWdlc2AgZnVuY3Rpb25zCisgIHNwZWNpYWwgY2FzZSB0aGUgc3RhbmRhcmQgaW1wb3J0IGhvb2tzIHNvIHRoZXkgYXJlIHN0aWxsIHN1cHBvcnRlZCBldmVuCisgIHRob3VnaCB0aGV5IGRvIG5vdCBwcm92aWRlIHRoZSBub24tc3RhbmRhcmQgYGBpdGVyX21vZHVsZXMoKWBgIG1ldGhvZC4KKworKiBBIGxvbmdzdGFuZGluZyBSRkMtY29tcGxpYW5jZSBidWcgKDppc3N1ZTpgMTA3OWApIGluIHRoZSBwYXJzaW5nIGRvbmUgYnkKKyAgOmZ1bmM6YGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyYCBoYXMgYmVlbiBmaXhlZC4gIENvZGUgdGhhdCB1c2VzIHRoZQorICBzdGFuZGFyZCBpZGlvbSB0byBjb252ZXJ0IGVuY29kZWQgaGVhZGVycyBpbnRvIHVuaWNvZGUKKyAgKGBgc3RyKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIoaCkpYGApIHdpbGwgc2VlIG5vIGNoYW5nZSwgYnV0IGNvZGUgdGhhdAorICBsb29rcyBhdCB0aGUgaW5kaXZpZHVhbCB0dXBsZXMgcmV0dXJuZWQgYnkgZGVjb2RlX2hlYWRlciB3aWxsIHNlZSB0aGF0CisgIHdoaXRlc3BhY2UgdGhhdCBwcmVjZWRlcyBvciBmb2xsb3dzIGBgQVNDSUlgYCBzZWN0aW9ucyBpcyBub3cgaW5jbHVkZWQgaW4gdGhlCisgIGBgQVNDSUlgYCBzZWN0aW9uLiAgQ29kZSB0aGF0IGJ1aWxkcyBoZWFkZXJzIHVzaW5nIGBgbWFrZV9oZWFkZXJgYCBzaG91bGQKKyAgYWxzbyBjb250aW51ZSB0byB3b3JrIHdpdGhvdXQgY2hhbmdlLCBzaW5jZSBgYG1ha2VfaGVhZGVyYGAgY29udGludWVzIHRvIGFkZAorICB3aGl0ZXNwYWNlIGJldHdlZW4gYGBBU0NJSWBgIGFuZCBub24tYGBBU0NJSWBgIHNlY3Rpb25zIGlmIGl0IGlzIG5vdCBhbHJlYWR5CisgIHByZXNlbnQgaW4gdGhlIGlucHV0IHN0cmluZ3MuCisKKyogOmZ1bmM6YGVtYWlsLnV0aWxzLmZvcm1hdGFkZHJgIG5vdyBkb2VzIHRoZSBjb3JyZWN0IGNvbnRlbnQgdHJhbnNmZXIKKyAgZW5jb2Rpbmcgd2hlbiBwYXNzZWQgbm9uLWBgQVNDSUlgYCBkaXNwbGF5IG5hbWVzLiAgQW55IGNvZGUgdGhhdCBkZXBlbmRlZCBvbgorICB0aGUgcHJldmlvdXMgYnVnZ3kgYmVoYXZpb3IgdGhhdCBwcmVzZXJ2ZWQgdGhlIG5vbi1gYEFTQ0lJYGAgdW5pY29kZSBpbiB0aGUKKyAgZm9ybWF0dGVkIG91dHB1dCBzdHJpbmcgd2lsbCBuZWVkIHRvIGJlIGNoYW5nZWQgKDppc3N1ZTpgMTY5MDYwOGApLgorCisqIDptZXRoOmBwb3BsaWIuUE9QMy5xdWl0YCBtYXkgbm93IHJhaXNlIHByb3RvY29sIGVycm9ycyBsaWtlIGFsbCBvdGhlcgorICBgYHBvcGxpYmBgIG1ldGhvZHMuICBDb2RlIHRoYXQgYXNzdW1lcyBgYHF1aXRgYCBkb2VzIG5vdCByYWlzZQorICA6ZXhjOmBwb3BsaWIuZXJyb3JfcHJvdG9gIGVycm9ycyBtYXkgbmVlZCB0byBiZSBjaGFuZ2VkIGlmIGVycm9ycyBvbiBgYHF1aXRgYAorICBhcmUgZW5jb3VudGVyZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uICg6aXNzdWU6YDExMjkxYCkuCisKKworUG9ydGluZyBDIGNvZGUKKy0tLS0tLS0tLS0tLS0tCisKKyogSW4gdGhlIGNvdXJzZSBvZiBjaGFuZ2VzIHRvIHRoZSBidWZmZXIgQVBJIHRoZSB1bmRvY3VtZW50ZWQKKyAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNtYWxsdGFibGVgIG1lbWJlciBvZiB0aGUKKyAgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgdGhlCisgIGxheW91dCBvZiB0aGUgOmM6dHlwZTpgUHlNZW1vcnlWaWV3T2JqZWN0YCBoYXMgY2hhbmdlZC4KKworICBBbGwgZXh0ZW5zaW9ucyByZWx5aW5nIG9uIHRoZSByZWxldmFudCBwYXJ0cyBpbiBgYG1lbW9yeW9iamVjdC5oYGAKKyAgb3IgYGBvYmplY3QuaGBgIG11c3QgYmUgcmVidWlsdC4KKworKiBEdWUgdG8gOnJlZjpgUEVQIDM5MyA8cGVwLTM5Mz5gLCB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgdHlwZSBhbmQgYWxsCisgIGZ1bmN0aW9ucyB1c2luZyB0aGlzIHR5cGUgYXJlIGRlcHJlY2F0ZWQgKGJ1dCB3aWxsIHN0YXkgYXZhaWxhYmxlIGZvcgorICBhdCBsZWFzdCBmaXZlIHllYXJzKS4gIElmIHlvdSB3ZXJlIHVzaW5nIGxvdy1sZXZlbCBVbmljb2RlIEFQSXMgdG8KKyAgY29uc3RydWN0IGFuZCBhY2Nlc3MgdW5pY29kZSBvYmplY3RzIGFuZCB5b3Ugd2FudCB0byBiZW5lZml0IG9mIHRoZQorICBtZW1vcnkgZm9vdHByaW50IHJlZHVjdGlvbiBwcm92aWRlZCBieSBQRVAgMzkzLCB5b3UgaGF2ZSB0byBjb252ZXJ0CisgIHlvdXIgY29kZSB0byB0aGUgbmV3IDpkb2M6YFVuaWNvZGUgQVBJIDwuLi9jLWFwaS91bmljb2RlPmAuCisKKyAgSG93ZXZlciwgaWYgeW91IG9ubHkgaGF2ZSBiZWVuIHVzaW5nIGhpZ2gtbGV2ZWwgZnVuY3Rpb25zIHN1Y2ggYXMKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0NvbmNhdCgpYCwgOmM6ZnVuYzpgUHlVbmljb2RlX0pvaW5gIG9yCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0KClgLCB5b3VyIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IHRha2UKKyAgYWR2YW50YWdlIG9mIHRoZSBuZXcgdW5pY29kZSByZXByZXNlbnRhdGlvbnMuCisKKyogOmM6ZnVuYzpgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXJgIG5vdyByZXR1cm5zIC0xIHVwb24gZmFpbHVyZS4KKworKiBBcyBhIG5lZ2F0aXZlIHZhbHVlIGZvciB0aGUgKmxldmVsKiBhcmd1bWVudCB0byA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgbm8KKyAgbG9uZ2VyIHZhbGlkLCB0aGUgc2FtZSBub3cgaG9sZHMgZm9yIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsYC4KKyAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIHZhbHVlIG9mICpsZXZlbCogdXNlZCBieQorICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeGAgaXMgbm93IDAgaW5zdGVhZCBvZiAtMS4KKworCitCdWlsZGluZyBDIGV4dGVuc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSByYW5nZSBvZiBwb3NzaWJsZSBmaWxlIG5hbWVzIGZvciBDIGV4dGVuc2lvbnMgaGFzIGJlZW4gbmFycm93ZWQuCisgIFZlcnkgcmFyZWx5IHVzZWQgc3BlbGxpbmdzIGhhdmUgYmVlbiBzdXBwcmVzc2VkOiB1bmRlciBQT1NJWCwgZmlsZXMKKyAgbmFtZWQgYGB4eHhtb2R1bGUuc29gYCwgYGB4eHhtb2R1bGUuYWJpMy5zb2BgIGFuZAorICBgYHh4eG1vZHVsZS5jcHl0aG9uLSouc29gYCBhcmUgbm8gbG9uZ2VyIHJlY29nbml6ZWQgYXMgaW1wbGVtZW50aW5nCisgIHRoZSBgYHh4eGBgIG1vZHVsZS4gIElmIHlvdSBoYWQgYmVlbiBnZW5lcmF0aW5nIHN1Y2ggZmlsZXMsIHlvdSBoYXZlCisgIHRvIHN3aXRjaCB0byB0aGUgb3RoZXIgc3BlbGxpbmdzIChpLmUuLCByZW1vdmUgdGhlIGBgbW9kdWxlYGAgc3RyaW5nCisgIGZyb20gdGhlIGZpbGUgbmFtZXMpLgorCisgIChpbXBsZW1lbnRlZCBpbiA6aXNzdWU6YDE0MDQwYC4pCisKKworQ29tbWFuZCBMaW5lIFN3aXRjaCBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBUaGUgLVEgY29tbWFuZC1saW5lIGZsYWcgYW5kIHJlbGF0ZWQgYXJ0aWZhY3RzIGhhdmUgYmVlbiByZW1vdmVkLiAgQ29kZQorICBjaGVja2luZyBzeXMuZmxhZ3MuZGl2aXNpb25fd2FybmluZyB3aWxsIG5lZWQgdXBkYXRpbmcuCisKKyAgKDppc3N1ZTpgMTA5OThgLCBjb250cmlidXRlZCBieSDDiXJpYyBBcmF1am8uKQorCisqIFdoZW4gOnByb2dyYW06YHB5dGhvbmAgaXMgc3RhcnRlZCB3aXRoIDpvcHRpb246YC1TYCwgYGBpbXBvcnQgc2l0ZWBgCisgIHdpbGwgbm8gbG9uZ2VyIGFkZCBzaXRlLXNwZWNpZmljIHBhdGhzIHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGhzLiAgSW4KKyAgcHJldmlvdXMgdmVyc2lvbnMsIGl0IGRpZC4KKworICAoOmlzc3VlOmAxMTU5MWAsIGNvbnRyaWJ1dGVkIGJ5IENhcmwgTWV5ZXIgd2l0aCBlZGl0aW9ucyBieSDDiXJpYyBBcmF1am8uKQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggODIyMGJkMi4uYTA2ODQ5YiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjMucnN0CiAgICAzLjIucnN0CiAgICAzLjEucnN0CiAgICAzLjAucnN0CkBAIC0yMiwzICsyMywxMSBAQAogICAgMi4yLnJzdAogICAgMi4xLnJzdAogICAgMi4wLnJzdAorCitUaGUgIlB5dGhvbiBOZXdzIiBpcyBhIEhUTUwgdmVyc2lvbiBvZiB0aGUgZmlsZSA6c291cmNlOmBNaXNjL05FV1NgIHdoaWNoCitjb250YWlucyAqYWxsKiBub250cml2aWFsIGNoYW5nZXMgdG8gUHl0aG9uLgorCisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMQorCisgICBuZXdzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L25ld3MucnN0IGIvRG9jL3doYXRzbmV3L25ld3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmODFlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvbmV3cy5yc3QKQEAgLTAsMCArMSwxNCBAQAorKysrKysrKysrKysKK1B5dGhvbiBOZXdzCisrKysrKysrKysrKworCisuLiByYXc6OiBodG1sCisKKyAgIDxwPgorICAgRmlsdGVyIGVudHJpZXMgYnkgY29udGVudDoKKyAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iIiBpZD0ic2VhcmNoYm94IiBzdHlsZT0id2lkdGg6IDUwJSIgb25jaGFuZ2U9ImRvZmlsdGVyKCkiPgorICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkZpbHRlciIgb25jbGljaz0iZG9maWx0ZXIoKSI+CisgICA8L3A+CisKKy4uIG1pc2NuZXdzOjogLi4vLi4vTWlzYy9ORVdTCisKZGlmZiAtLWdpdCBhL0dyYW1tYXIvR3JhbW1hciBiL0dyYW1tYXIvR3JhbW1hcgppbmRleCBjZWE2OGRlLi5kN2FhZmZkIDEwMDY0NAotLS0gYS9HcmFtbWFyL0dyYW1tYXIKKysrIGIvR3JhbW1hci9HcmFtbWFyCkBAIC0xMyw3ICsxMyw3IEBACiAjIFN0YXJ0IHN5bWJvbHMgZm9yIHRoZSBncmFtbWFyOgogIyAgICAgICBzaW5nbGVfaW5wdXQgaXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50OwogIyAgICAgICBmaWxlX2lucHV0IGlzIGEgbW9kdWxlIG9yIHNlcXVlbmNlIG9mIGNvbW1hbmRzIHJlYWQgZnJvbSBhbiBpbnB1dCBmaWxlOwotIyAgICAgICBldmFsX2lucHV0IGlzIHRoZSBpbnB1dCBmb3IgdGhlIGV2YWwoKSBhbmQgaW5wdXQoKSBmdW5jdGlvbnMuCisjICAgICAgIGV2YWxfaW5wdXQgaXMgdGhlIGlucHV0IGZvciB0aGUgZXZhbCgpIGZ1bmN0aW9ucy4KICMgTkI6IGNvbXBvdW5kX3N0bXQgaW4gc2luZ2xlX2lucHV0IGlzIGZvbGxvd2VkIGJ5IGV4dHJhIE5FV0xJTkUhCiBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQogZmlsZV9pbnB1dDogKE5FV0xJTkUgfCBzdG10KSogRU5ETUFSS0VSCkBAIC0xMjksNCArMTI5LDUgQEAKICMgbm90IHVzZWQgaW4gZ3JhbW1hciwgYnV0IG1heSBhcHBlYXIgaW4gIm5vZGUiIHBhc3NlZCBmcm9tIFBhcnNlciB0byBDb21waWxlcgogZW5jb2RpbmdfZGVjbDogTkFNRQogCi15aWVsZF9leHByOiAneWllbGQnIFt0ZXN0bGlzdF0KK3lpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KK3lpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCAwYWQ3ODhiLi43YWQ2Y2IzIDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtMzYsNiArMzYsOCBAQAogCiB0eXBlZGVmIHN0cnVjdCBfYWxpYXMgKmFsaWFzX3R5OwogCit0eXBlZGVmIHN0cnVjdCBfd2l0aGl0ZW0gKndpdGhpdGVtX3R5OworCiAKIGVudW0gX21vZF9raW5kIHtNb2R1bGVfa2luZD0xLCBJbnRlcmFjdGl2ZV9raW5kPTIsIEV4cHJlc3Npb25fa2luZD0zLAogICAgICAgICAgICAgICAgICBTdWl0ZV9raW5kPTR9OwpAQCAtNjQsMTAgKzY2LDkgQEAKIGVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBDbGFzc0RlZl9raW5kPTIsIFJldHVybl9raW5kPTMsCiAgICAgICAgICAgICAgICAgICBEZWxldGVfa2luZD00LCBBc3NpZ25fa2luZD01LCBBdWdBc3NpZ25fa2luZD02LCBGb3Jfa2luZD03LAogICAgICAgICAgICAgICAgICAgV2hpbGVfa2luZD04LCBJZl9raW5kPTksIFdpdGhfa2luZD0xMCwgUmFpc2Vfa2luZD0xMSwKLSAgICAgICAgICAgICAgICAgIFRyeUV4Y2VwdF9raW5kPTEyLCBUcnlGaW5hbGx5X2tpbmQ9MTMsIEFzc2VydF9raW5kPTE0LAotICAgICAgICAgICAgICAgICAgSW1wb3J0X2tpbmQ9MTUsIEltcG9ydEZyb21fa2luZD0xNiwgR2xvYmFsX2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBOb25sb2NhbF9raW5kPTE4LCBFeHByX2tpbmQ9MTksIFBhc3Nfa2luZD0yMCwgQnJlYWtfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIENvbnRpbnVlX2tpbmQ9MjJ9OworICAgICAgICAgICAgICAgICAgVHJ5X2tpbmQ9MTIsIEFzc2VydF9raW5kPTEzLCBJbXBvcnRfa2luZD0xNCwKKyAgICAgICAgICAgICAgICAgIEltcG9ydEZyb21fa2luZD0xNSwgR2xvYmFsX2tpbmQ9MTYsIE5vbmxvY2FsX2tpbmQ9MTcsCisgICAgICAgICAgICAgICAgICBFeHByX2tpbmQ9MTgsIFBhc3Nfa2luZD0xOSwgQnJlYWtfa2luZD0yMCwgQ29udGludWVfa2luZD0yMX07CiBzdHJ1Y3QgX3N0bXQgewogICAgICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICAgICAgdW5pb24gewpAQCAtMTI4LDggKzEyOSw3IEBACiAgICAgICAgICAgICAgICAgfSBJZjsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqaXRlbXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICB9IFdpdGg7CiAgICAgICAgICAgICAgICAgCkBAIC0xNDIsMTIgKzE0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpoYW5kbGVyczsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7Ci0gICAgICAgICAgICAgICAgfSBUcnlFeGNlcHQ7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmZpbmFsYm9keTsKLSAgICAgICAgICAgICAgICB9IFRyeUZpbmFsbHk7CisgICAgICAgICAgICAgICAgfSBUcnk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdGVzdDsKQEAgLTE4NCwxMCArMTgwLDEwIEBACiBlbnVtIF9leHByX2tpbmQge0Jvb2xPcF9raW5kPTEsIEJpbk9wX2tpbmQ9MiwgVW5hcnlPcF9raW5kPTMsIExhbWJkYV9raW5kPTQsCiAgICAgICAgICAgICAgICAgICBJZkV4cF9raW5kPTUsIERpY3Rfa2luZD02LCBTZXRfa2luZD03LCBMaXN0Q29tcF9raW5kPTgsCiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBZaWVsZF9raW5kPTEyLCBDb21wYXJlX2tpbmQ9MTMsIENhbGxfa2luZD0xNCwgTnVtX2tpbmQ9MTUsCi0gICAgICAgICAgICAgICAgICBTdHJfa2luZD0xNiwgQnl0ZXNfa2luZD0xNywgRWxsaXBzaXNfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTE5LCBTdWJzY3JpcHRfa2luZD0yMCwgU3RhcnJlZF9raW5kPTIxLAotICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTIyLCBMaXN0X2tpbmQ9MjMsIFR1cGxlX2tpbmQ9MjR9OworICAgICAgICAgICAgICAgICAgWWllbGRfa2luZD0xMiwgWWllbGRGcm9tX2tpbmQ9MTMsIENvbXBhcmVfa2luZD0xNCwKKyAgICAgICAgICAgICAgICAgIENhbGxfa2luZD0xNSwgTnVtX2tpbmQ9MTYsIFN0cl9raW5kPTE3LCBCeXRlc19raW5kPTE4LAorICAgICAgICAgICAgICAgICAgRWxsaXBzaXNfa2luZD0xOSwgQXR0cmlidXRlX2tpbmQ9MjAsIFN1YnNjcmlwdF9raW5kPTIxLAorICAgICAgICAgICAgICAgICAgU3RhcnJlZF9raW5kPTIyLCBOYW1lX2tpbmQ9MjMsIExpc3Rfa2luZD0yNCwgVHVwbGVfa2luZD0yNX07CiBzdHJ1Y3QgX2V4cHIgewogICAgICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICAgICAgdW5pb24gewpAQCAtMjUzLDYgKzI0OSwxMCBAQAogICAgICAgICAgICAgICAgIH0gWWllbGQ7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgfSBZaWVsZEZyb207CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfaW50X3NlcSAqb3BzOwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmNvbXBhcmF0b3JzOwpAQCAtMjc1LDcgKzI3NSw3IEBACiAgICAgICAgICAgICAgICAgfSBTdHI7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBzOworICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMgczsKICAgICAgICAgICAgICAgICB9IEJ5dGVzOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7CkBAIC0zODMsNiArMzgzLDExIEBACiAgICAgICAgIGlkZW50aWZpZXIgYXNuYW1lOwogfTsKIAorc3RydWN0IF93aXRoaXRlbSB7CisgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOworICAgICAgICBleHByX3R5IG9wdGlvbmFsX3ZhcnM7Cit9OworCiAKICNkZWZpbmUgTW9kdWxlKGEwLCBhMSkgX1B5X01vZHVsZShhMCwgYTEpCiBtb2RfdHkgX1B5X01vZHVsZShhc2RsX3NlcSAqIGJvZHksIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTQyMSwxOCArNDI2LDE2IEBACiAjZGVmaW5lIElmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9JZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogc3RtdF90eSBfUHlfSWYoZXhwcl90eSB0ZXN0LCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgV2l0aChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfV2l0aChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQotc3RtdF90eSBfUHlfV2l0aChleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBhc2RsX3NlcSAqIGJvZHksCi0gICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIFdpdGgoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpCitzdG10X3R5IF9QeV9XaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgUmFpc2UoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfUmFpc2UoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfUmFpc2UoZXhwcl90eSBleGMsIGV4cHJfdHkgY2F1c2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBUcnlFeGNlcHQoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X1RyeUV4Y2VwdChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQotc3RtdF90eSBfUHlfVHJ5RXhjZXB0KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgVHJ5RmluYWxseShhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9UcnlGaW5hbGx5KGEwLCBhMSwgYTIsIGEzLCBhNCkKLXN0bXRfdHkgX1B5X1RyeUZpbmFsbHkoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGZpbmFsYm9keSwgaW50IGxpbmVubywgaW50Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgVHJ5KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfVHJ5KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfVHJ5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsCisgICAgICAgICAgICAgICAgYXNkbF9zZXEgKiBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQXNzZXJ0KGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X0Fzc2VydChhMCwgYTEsIGEyLCBhMywgYTQpCiBzdG10X3R5IF9QeV9Bc3NlcnQoZXhwcl90eSB0ZXN0LCBleHByX3R5IG1zZywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNDkwLDYgKzQ5Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBZaWVsZChhMCwgYTEsIGEyLCBhMykgX1B5X1lpZWxkKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfWWllbGQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKSBfUHlfWWllbGRGcm9tKGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfWWllbGRGcm9tKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQ29tcGFyZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQ29tcGFyZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogZXhwcl90eSBfUHlfQ29tcGFyZShleHByX3R5IGxlZnQsIGFzZGxfaW50X3NlcSAqIG9wcywgYXNkbF9zZXEgKiBjb21wYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTUwMiw3ICs1MDgsNyBAQAogI2RlZmluZSBTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9TdHIoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9TdHIoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCi1leHByX3R5IF9QeV9CeXRlcyhzdHJpbmcgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKK2V4cHJfdHkgX1B5X0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEVsbGlwc2lzKGEwLCBhMSwgYTIpIF9QeV9FbGxpcHNpcyhhMCwgYTEsIGEyKQogZXhwcl90eSBfUHlfRWxsaXBzaXMoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKQEAgLTU0Nyw2ICs1NTMsOSBAQAoga2V5d29yZF90eSBfUHlfa2V5d29yZChpZGVudGlmaWVyIGFyZywgZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBhbGlhcyhhMCwgYTEsIGEyKSBfUHlfYWxpYXMoYTAsIGExLCBhMikKIGFsaWFzX3R5IF9QeV9hbGlhcyhpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXIgYXNuYW1lLCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIHdpdGhpdGVtKGEwLCBhMSwgYTIpIF9QeV93aXRoaXRlbShhMCwgYTEsIGEyKQord2l0aGl0ZW1fdHkgX1B5X3dpdGhpdGVtKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogCiBQeU9iamVjdCogUHlBU1RfbW9kMm9iaihtb2RfdHkgdCk7CiBtb2RfdHkgUHlBU1Rfb2JqMm1vZChQeU9iamVjdCogYXN0LCBQeUFyZW5hKiBhcmVuYSwgaW50IG1vZGUpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24uaCBiL0luY2x1ZGUvUHl0aG9uLmgKaW5kZXggZDZlNDdjMi4uYTc4YTcyMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24uaAorKysgYi9JbmNsdWRlL1B5dGhvbi5oCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKICNpbmNsdWRlICJweXBvcnQuaCIKKyNpbmNsdWRlICJweW1hY3JvLmgiCiAKICNpbmNsdWRlICJweWF0b21pYy5oIgogCkBAIC0xMDAsNiArMTAxLDcgQEAKICNpbmNsdWRlICJ3YXJuaW5ncy5oIgogI2luY2x1ZGUgIndlYWtyZWZvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RzZXEuaCIKKyNpbmNsdWRlICJuYW1lc3BhY2VvYmplY3QuaCIKIAogI2luY2x1ZGUgImNvZGVjcy5oIgogI2luY2x1ZGUgInB5ZXJyb3JzLmgiCkBAIC0xMjUsNDMgKzEyNyw2IEBACiAjaW5jbHVkZSAicHlzdHJjbXAuaCIKICNpbmNsdWRlICJkdG9hLmgiCiAjaW5jbHVkZSAiZmlsZXV0aWxzLmgiCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyogX1B5X01hbmdsZSBpcyBkZWZpbmVkIGluIGNvbXBpbGUuYyAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9NYW5nbGUoUHlPYmplY3QgKnAsIFB5T2JqZWN0ICpuYW1lKTsKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0vKiBBcmd1bWVudCBtdXN0IGJlIGEgY2hhciBvciBhbiBpbnQgaW4gWy0xMjgsIDEyN10gb3IgWzAsIDI1NV0uICovCi0jZGVmaW5lIFB5X0NIQVJNQVNLKGMpICAgICAgICAgICgodW5zaWduZWQgY2hhcikoKGMpICYgMHhmZikpCi0KICNpbmNsdWRlICJweWZwZS5oIgogCi0vKiBUaGVzZSBkZWZpbml0aW9ucyBtdXN0IG1hdGNoIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbnMgaW4gZ3JhbWluaXQuaC4KLSAgIFRoZXJlJ3MgY29kZSBpbiBjb21waWxlLmMgdGhhdCBjaGVja3MgdGhhdCB0aGV5IGFyZSB0aGUgc2FtZS4gKi8KLSNkZWZpbmUgUHlfc2luZ2xlX2lucHV0IDI1NgotI2RlZmluZSBQeV9maWxlX2lucHV0IDI1NwotI2RlZmluZSBQeV9ldmFsX2lucHV0IDI1OAotCi0jaWZkZWYgSEFWRV9QVEgKLS8qIEdOVSBwdGggdXNlci1zcGFjZSB0aHJlYWQgc3VwcG9ydCAqLwotI2luY2x1ZGUgPHB0aC5oPgotI2VuZGlmCi0KLS8qIERlZmluZSBtYWNyb3MgZm9yIGlubGluZSBkb2N1bWVudGF0aW9uLiAqLwotI2RlZmluZSBQeURvY19WQVIobmFtZSkgc3RhdGljIGNoYXIgbmFtZVtdCi0jZGVmaW5lIFB5RG9jX1NUUlZBUihuYW1lLHN0cikgUHlEb2NfVkFSKG5hbWUpID0gUHlEb2NfU1RSKHN0cikKLSNpZmRlZiBXSVRIX0RPQ19TVFJJTkdTCi0jZGVmaW5lIFB5RG9jX1NUUihzdHIpIHN0cgotI2Vsc2UKLSNkZWZpbmUgUHlEb2NfU1RSKHN0cikgIiIKLSNlbmRpZgotCiAjZW5kaWYgLyogIVB5X1BZVEhPTl9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Fic3RyYWN0LmggYi9JbmNsdWRlL2Fic3RyYWN0LmgKaW5kZXggMGZlMDk1Ni4uNDRiNWFmNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hYnN0cmFjdC5oCisrKyBiL0luY2x1ZGUvYWJzdHJhY3QuaApAQCAtNyw2ICs3LDcgQEAKICNpZmRlZiBQWV9TU0laRV9UX0NMRUFOCiAjZGVmaW5lIFB5T2JqZWN0X0NhbGxGdW5jdGlvbiBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCiAjZGVmaW5lIFB5T2JqZWN0X0NhbGxNZXRob2QgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxNZXRob2RJZCBfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUCiAjZW5kaWYKIAogLyogQWJzdHJhY3QgT2JqZWN0IEludGVyZmFjZSAobWFueSB0aGFua3MgdG8gSmltIEZ1bHRvbikgKi8KQEAgLTMwNywxMSArMzA4LDIyIEBACiAgICAgIFB5dGhvbiBleHByZXNzaW9uOiBvLm1ldGhvZChhcmdzKS4KICAgICAgICAqLwogCisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOworCisgICAgICAgLyoKKyAgICAgICAgIExpa2UgUHlPYmplY3RfQ2FsbE1ldGhvZCwgYnV0IGV4cGVjdCBhIF9QeV9JZGVudGlmaWVyKiBhcyB0aGUKKyAgICAgICAgIG1ldGhvZCBuYW1lLgorICAgICAgICovCisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVChQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkX1NpemVUKFB5T2JqZWN0ICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9JZGVudGlmaWVyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwgLi4uKTsKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKQEAgLTMyNyw2ICszMzksMTAgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRob2QsIC4uLik7CisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoUHlPYmplY3QgKm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworCiAKICAgICAgICAvKgogICAgICBDYWxsIHRoZSBtZXRob2QgbmFtZWQgbSBvZiBvYmplY3QgbyB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mCkBAIC01MTksMTEgKzUzNSwxMiBAQAogCiAKIAorICAgICAvKiBJbXBsZW1lbnRhdGlvbiBpbiBtZW1vcnlvYmplY3QuYyAqLwogICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfVG9Db250aWd1b3VzKHZvaWQgKmJ1ZiwgUHlfYnVmZmVyICp2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIGZvcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIG9yZGVyKTsKIAogICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfRnJvbUNvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCB2b2lkICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgY2hhciBmb3J0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIG9yZGVyKTsKIAogCiAgICAgLyogQ29weSBsZW4gYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeQpAQCAtNTQ3LDcgKzU2NCw3IEBACiAgICAgLyogQ29weSB0aGUgZGF0YSBmcm9tIHRoZSBzcmMgYnVmZmVyIHRvIHRoZSBidWZmZXIgb2YgZGVzdGluYXRpb24KICAgICAgKi8KIAotICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBmb3J0KTsKKyAgICAgUHlBUElfRlVOQyhpbnQpIFB5QnVmZmVyX0lzQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCk7CiAKIAogICAgICBQeUFQSV9GVU5DKHZvaWQpIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbXMsCkBAIC03NjEsMjEgKzc3OCw2IEBACiAgICAgIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlOdW1iZXJfQXNTc2l6ZV90KFB5T2JqZWN0ICpvLCBQeU9iamVjdCAqZXhjKTsKIAogICAgICAgIC8qCi0gICAgIFJldHVybnMgdGhlIEludGVncmFsIGluc3RhbmNlIGNvbnZlcnRlZCB0byBhbiBpbnQuIFRoZQotICAgICBpbnN0YW5jZSBpcyBleHBlY3RlZCB0byBiZSBpbnQgb3IgbG9uZyBvciBoYXZlIGFuIF9faW50X18KLSAgICAgbWV0aG9kLiBTdGVhbHMgaW50ZWdyYWwncyByZWZlcmVuY2UuIGVycm9yX2Zvcm1hdCB3aWxsIGJlCi0gICAgIHVzZWQgdG8gY3JlYXRlIHRoZSBUeXBlRXJyb3IgaWYgaW50ZWdyYWwgaXNuJ3QgYWN0dWFsbHkgYW4KLSAgICAgSW50ZWdyYWwgaW5zdGFuY2UuIGVycm9yX2Zvcm1hdCBzaG91bGQgYmUgYSBmb3JtYXQgc3RyaW5nCi0gICAgIHRoYXQgY2FuIGFjY2VwdCBhIGNoYXIqIG5hbWluZyBpbnRlZ3JhbCdzIHR5cGUuCi0gICAgICAgKi8KLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU51bWJlcl9Db252ZXJ0SW50ZWdyYWxUb0ludCgKLSAgICAgICAgIFB5T2JqZWN0ICppbnRlZ3JhbCwKLSAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yX2Zvcm1hdCk7Ci0jZW5kaWYKLQotICAgICAgIC8qCiAgICAgUmV0dXJucyB0aGUgb2JqZWN0IGNvbnZlcnRlZCB0byBQeV9zc2l6ZV90IGJ5IGdvaW5nIHRocm91Z2gKICAgICBQeU51bWJlcl9JbmRleCBmaXJzdC4gIElmIGFuIG92ZXJmbG93IGVycm9yIG9jY3VycyB3aGlsZQogICAgIGNvbnZlcnRpbmcgdGhlIGludC1vci1sb25nIHRvIFB5X3NzaXplX3QsIHRoZW4gdGhlIHNlY29uZCBhcmd1bWVudApAQCAtMTAxNCw3ICsxMDE2LDcgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2VxdWVuY2VfRmFzdChQeU9iamVjdCAqbywgY29uc3QgY2hhciogbSk7CiAgICAgICAgLyoKLSAgICAgUmV0dXJucyB0aGUgc2VxdWVuY2UsIG8sIGFzIGEgdHVwbGUsIHVubGVzcyBpdCdzIGFscmVhZHkgYQorICAgICBSZXR1cm5zIHRoZSBzZXF1ZW5jZSwgbywgYXMgYSBsaXN0LCB1bmxlc3MgaXQncyBhbHJlYWR5IGEKICAgICAgdHVwbGUgb3IgbGlzdC4gIFVzZSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0gdG8gYWNjZXNzIHRoZQogICAgICBtZW1iZXJzIG9mIHRoaXMgbGlzdCwgYW5kIFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRSB0byBnZXQgaXRzIGxlbmd0aC4KIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hc2RsLmggYi9JbmNsdWRlL2FzZGwuaAppbmRleCA5YmIwNjk3Li42YmY2MThmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2FzZGwuaAorKysgYi9JbmNsdWRlL2FzZGwuaApAQCAtMyw2ICszLDcgQEAKIAogdHlwZWRlZiBQeU9iamVjdCAqIGlkZW50aWZpZXI7CiB0eXBlZGVmIFB5T2JqZWN0ICogc3RyaW5nOwordHlwZWRlZiBQeU9iamVjdCAqIGJ5dGVzOwogdHlwZWRlZiBQeU9iamVjdCAqIG9iamVjdDsKIAogLyogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXNkbF9jLnB5IHdhcyBjb21wbGV0ZWx5CkBAIC0xNCwxNyArMTUsMTcgQEAKIC8qIFhYWCBBIHNlcXVlbmNlIHNob3VsZCBiZSB0eXBlZCBzbyB0aGF0IGl0cyB1c2UgY2FuIGJlIHR5cGVjaGVja2VkLiAqLwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50IHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplOwogICAgIHZvaWQgKmVsZW1lbnRzWzFdOwogfSBhc2RsX3NlcTsKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludCBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBpbnQgZWxlbWVudHNbMV07CiB9IGFzZGxfaW50X3NlcTsKIAotYXNkbF9zZXEgKmFzZGxfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOwotYXNkbF9pbnRfc2VxICphc2RsX2ludF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSk7Cithc2RsX3NlcSAqYXNkbF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOworYXNkbF9pbnRfc2VxICphc2RsX2ludF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpOwogCiAjZGVmaW5lIGFzZGxfc2VxX0dFVChTLCBJKSAoUyktPmVsZW1lbnRzWyhJKV0KICNkZWZpbmUgYXNkbF9zZXFfTEVOKFMpICgoUykgPT0gTlVMTCA/IDAgOiAoUyktPnNpemUpCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzdC5oIGIvSW5jbHVkZS9hc3QuaAppbmRleCBhMDE1MzM2Li4wNTVlOGRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2FzdC5oCisrKyBiL0luY2x1ZGUvYXN0LmgKQEAgLTQsNiArNCw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKGludCkgUHlBU1RfVmFsaWRhdGUobW9kX3R5KTsKIFB5QVBJX0ZVTkMobW9kX3R5KSBQeUFTVF9Gcm9tTm9kZSgKICAgICBjb25zdCBub2RlICpuLAogICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmggYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKaW5kZXggZTFhZjg5Zi4uZDdjN2ZmZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc29iamVjdC5oCisrKyBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaApAQCAtNjIsOCArNjIsNiBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0TG9uZyhQeU9iamVjdCosIGludCwgaW50LAotCQkJCQkJICBpbnQsIGNoYXIqKiwgaW50Kik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlLmggYi9JbmNsdWRlL2NvZGUuaAppbmRleCBlNzczYjZhLi43YzdlNWJmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGUuaAorKysgYi9JbmNsdWRlL2NvZGUuaApAQCAtMjIsNiArMjIsNyBAQAogICAgIFB5T2JqZWN0ICpjb19mcmVldmFyczsJLyogdHVwbGUgb2Ygc3RyaW5ncyAoZnJlZSB2YXJpYWJsZSBuYW1lcykgKi8KICAgICBQeU9iamVjdCAqY29fY2VsbHZhcnM7ICAgICAgLyogdHVwbGUgb2Ygc3RyaW5ncyAoY2VsbCB2YXJpYWJsZSBuYW1lcykgKi8KICAgICAvKiBUaGUgcmVzdCBkb2Vzbid0IGNvdW50IGZvciBoYXNoIG9yIGNvbXBhcmlzb25zICovCisgICAgdW5zaWduZWQgY2hhciAqY29fY2VsbDJhcmc7IC8qIE1hcHMgY2VsbCB2YXJzIHdoaWNoIGFyZSBhcmd1bWVudHMuICovCiAgICAgUHlPYmplY3QgKmNvX2ZpbGVuYW1lOwkvKiB1bmljb2RlICh3aGVyZSBpdCB3YXMgbG9hZGVkIGZyb20pICovCiAgICAgUHlPYmplY3QgKmNvX25hbWU7CQkvKiB1bmljb2RlIChuYW1lLCBmb3IgcmVmZXJlbmNlKSAqLwogICAgIGludCBjb19maXJzdGxpbmVubzsJCS8qIGZpcnN0IHNvdXJjZSBsaW5lIG51bWJlciAqLwpAQCAtNTcsNiArNTgsMTEgQEAKIAogI2RlZmluZSBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCAgMHg0MDAwMAogCisvKiBUaGlzIHZhbHVlIGlzIGZvdW5kIGluIHRoZSBjb19jZWxsMmFyZyBhcnJheSB3aGVuIHRoZSBhc3NvY2lhdGVkIGNlbGwKKyAgIHZhcmlhYmxlIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW4gYXJndW1lbnQuIFRoZSBtYXhpbXVtIG51bWJlciBvZgorICAgYXJndW1lbnRzIGlzIDI1NSAoaW5kZXhlZCB1cCB0byAyNTQpLCBzbyAyNTUgd29yayBhcyBhIHNwZWNpYWwgZmxhZy4qLworI2RlZmluZSBDT19DRUxMX05PVF9BTl9BUkcgMjU1CisKIC8qIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgaWYgYSBmdXR1cmUgc3RhdGVtZW50IG1vZGlmaWVzIHRoZSBzeW50YXguCiAgICBGb3IgZXhhbXBsZSwgd2hlbiBhIGtleXdvcmQgaXMgYWRkZWQuCiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlY3MuaCBiL0luY2x1ZGUvY29kZWNzLmgKaW5kZXggZGZmMDllNy4uMGQ5ZTliNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlY3MuaAorKysgYi9JbmNsdWRlL2NvZGVjcy5oCkBAIC0xNzQsNiArMTc0LDggQEAKIC8qIHJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKFx4LCBcdSBhbmQgXFUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKTsKIAorUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X2hleGRpZ2l0czsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29tcGlsZS5oIGIvSW5jbHVkZS9jb21waWxlLmgKaW5kZXggYmM1M2IzOS4uYWMyNjM2ZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb21waWxlLmgKKysrIGIvSW5jbHVkZS9jb21waWxlLmgKQEAgLTEsNyArMSw3IEBACi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjaWZuZGVmIFB5X0NPTVBJTEVfSAogI2RlZmluZSBQeV9DT01QSUxFX0gKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2luY2x1ZGUgImNvZGUuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zOCw5ICszOCwxOSBAQAogICAgIFB5QXJlbmEgKmFyZW5hKTsKIFB5QVBJX0ZVTkMoUHlGdXR1cmVGZWF0dXJlcyAqKSBQeUZ1dHVyZV9Gcm9tQVNUKHN0cnVjdCBfbW9kICosIGNvbnN0IGNoYXIgKik7CiAKKy8qIF9QeV9NYW5nbGUgaXMgZGVmaW5lZCBpbiBjb21waWxlLmMgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfTWFuZ2xlKFB5T2JqZWN0ICpwLCBQeU9iamVjdCAqbmFtZSk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCi0jZW5kaWYgLyogIVB5X0NPTVBJTEVfSCAqLworCiAjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKKy8qIFRoZXNlIGRlZmluaXRpb25zIG11c3QgbWF0Y2ggY29ycmVzcG9uZGluZyBkZWZpbml0aW9ucyBpbiBncmFtaW5pdC5oLgorICAgVGhlcmUncyBjb2RlIGluIGNvbXBpbGUuYyB0aGF0IGNoZWNrcyB0aGF0IHRoZXkgYXJlIHRoZSBzYW1lLiAqLworI2RlZmluZSBQeV9zaW5nbGVfaW5wdXQgMjU2CisjZGVmaW5lIFB5X2ZpbGVfaW5wdXQgMjU3CisjZGVmaW5lIFB5X2V2YWxfaW5wdXQgMjU4CisKKyNlbmRpZiAvKiAhUHlfQ09NUElMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvbXBsZXhvYmplY3QuaCBiL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCmluZGV4IGMzNzliMDguLjE5MzRmM2IgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCisrKyBiL0luY2x1ZGUvY29tcGxleG9iamVjdC5oCkBAIC02Myw5ICs2MywxMiBAQAogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kYXRldGltZS5oIGIvSW5jbHVkZS9kYXRldGltZS5oCmluZGV4IGRiNTdhMTguLjQxZTNiY2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGF0ZXRpbWUuaAorKysgYi9JbmNsdWRlL2RhdGV0aW1lLmgKQEAgLTEzNSw2ICsxMzUsMTIgQEAKICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs0XSA8PCA4KSAgfCAgICAgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzVdKQogCisvKiBBcHBseSBmb3IgdGltZSBkZWx0YSBpbnN0YW5jZXMgKi8KKyNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUyhvKSAgICAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5kYXlzKQorI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTKG8pICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPnNlY29uZHMpCisjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX01JQ1JPU0VDT05EUyhvKSAgICAgICAgICAgIFwKKyAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+bWljcm9zZWNvbmRzKQorCiAKIC8qIERlZmluZSBzdHJ1Y3R1cmUgZm9yIEMgQVBJLiAqLwogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kZXNjcm9iamVjdC5oIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCmluZGV4IDY0NmIzY2MuLmUyYmE5N2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaAorKysgYi9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKQEAgLTQyLDYgKzQyLDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlUeXBlT2JqZWN0ICpkX3R5cGU7CiAgICAgUHlPYmplY3QgKmRfbmFtZTsKKyAgICBQeU9iamVjdCAqZF9xdWFsbmFtZTsKIH0gUHlEZXNjck9iamVjdDsKIAogI2RlZmluZSBQeURlc2NyX0NPTU1PTiBQeURlc2NyT2JqZWN0IGRfY29tbW9uCmRpZmYgLS1naXQgYS9JbmNsdWRlL2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvZGljdG9iamVjdC5oCmluZGV4IGIwMjY3ODUuLmQ4OWFhYzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGljdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGljdG9iamVjdC5oCkBAIC0xMyw3OCArMTMsMjAgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAotLyoKLVRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6Ci0KLTEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCi0gICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KLSAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAotICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgotCi0yLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCi0gICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgdXBvbgotICAga2V5IGRlbGV0aW9uLiAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCi0KLTMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCi0gICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KLSAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KLSAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KLSAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCi0gICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCi0KLU5vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KLW1lYW5pbmcgb3RoZXJ3aXNlLgotKi8KLQotLyogUHlEaWN0X01JTlNJWkUgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIGRpY3Rpb25hcnkuICBUaGlzIG1hbnkgc2xvdHMgYXJlCi0gKiBhbGxvY2F0ZWQgZGlyZWN0bHkgaW4gdGhlIGRpY3Qgb2JqZWN0IChpbiB0aGUgbWFfc21hbGx0YWJsZSBtZW1iZXIpLgotICogSXQgbXVzdCBiZSBhIHBvd2VyIG9mIDIsIGFuZCBhdCBsZWFzdCA0LiAgOCBhbGxvd3MgZGljdHMgd2l0aCBubyBtb3JlCi0gKiB0aGFuIDUgYWN0aXZlIGVudHJpZXMgdG8gbGl2ZSBpbiBtYV9zbWFsbHRhYmxlIChhbmQgc28gYXZvaWQgYW4KLSAqIGFkZGl0aW9uYWwgbWFsbG9jKTsgaW5zdHJ1bWVudGF0aW9uIHN1Z2dlc3RlZCB0aGlzIHN1ZmZpY2VzIGZvciB0aGUKLSAqIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsIGluc3RhbmNlIGRpY3RzIGFuZAotICogdXN1YWxseS1zbWFsbCBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgotICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFIDgKIAordHlwZWRlZiBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IFB5RGljdEtleXNPYmplY3Q7CisKKy8qIFRoZSBtYV92YWx1ZXMgcG9pbnRlciBpcyBOVUxMIGZvciBhIGNvbWJpbmVkIHRhYmxlCisgKiBvciBwb2ludHMgdG8gYW4gYXJyYXkgb2YgUHlPYmplY3QqIGZvciBhIHNwbGl0IHRhYmxlCisgKi8KIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIG1lX2tleS4gKi8KLSAgICBQeV9oYXNoX3QgbWVfaGFzaDsKLSAgICBQeU9iamVjdCAqbWVfa2V5OwotICAgIFB5T2JqZWN0ICptZV92YWx1ZTsKLX0gUHlEaWN0RW50cnk7Ci0KLS8qCi1UbyBlbnN1cmUgdGhlIGxvb2t1cCBhbGdvcml0aG0gdGVybWluYXRlcywgdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgVW51c2VkCi1zbG90IChOVUxMIGtleSkgaW4gdGhlIHRhYmxlLgotVGhlIHZhbHVlIG1hX2ZpbGwgaXMgdGhlIG51bWJlciBvZiBub24tTlVMTCBrZXlzIChzdW0gb2YgQWN0aXZlIGFuZCBEdW1teSk7Ci1tYV91c2VkIGlzIHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwsIG5vbi1kdW1teSBrZXlzICg9PSB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMCi12YWx1ZXMgPT0gdGhlIG51bWJlciBvZiBBY3RpdmUgaXRlbXMpLgotVG8gYXZvaWQgc2xvd2luZyBkb3duIGxvb2t1cHMgb24gYSBuZWFyLWZ1bGwgdGFibGUsIHdlIHJlc2l6ZSB0aGUgdGFibGUgd2hlbgotaXQncyB0d28tdGhpcmRzIGZ1bGwuCi0qLwotdHlwZWRlZiBzdHJ1Y3QgX2RpY3RvYmplY3QgUHlEaWN0T2JqZWN0Owotc3RydWN0IF9kaWN0b2JqZWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfc3NpemVfdCBtYV9maWxsOyAgLyogIyBBY3RpdmUgKyAjIER1bW15ICovCi0gICAgUHlfc3NpemVfdCBtYV91c2VkOyAgLyogIyBBY3RpdmUgKi8KKyAgICBQeV9zc2l6ZV90IG1hX3VzZWQ7CisgICAgUHlEaWN0S2V5c09iamVjdCAqbWFfa2V5czsKKyAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKK30gUHlEaWN0T2JqZWN0OwogCi0gICAgLyogVGhlIHRhYmxlIGNvbnRhaW5zIG1hX21hc2sgKyAxIHNsb3RzLCBhbmQgdGhhdCdzIGEgcG93ZXIgb2YgMi4KLSAgICAgKiBXZSBzdG9yZSB0aGUgbWFzayBpbnN0ZWFkIG9mIHRoZSBzaXplIGJlY2F1c2UgdGhlIG1hc2sgaXMgbW9yZQotICAgICAqIGZyZXF1ZW50bHkgbmVlZGVkLgotICAgICAqLwotICAgIFB5X3NzaXplX3QgbWFfbWFzazsKLQotICAgIC8qIG1hX3RhYmxlIHBvaW50cyB0byBtYV9zbWFsbHRhYmxlIGZvciBzbWFsbCB0YWJsZXMsIGVsc2UgdG8KLSAgICAgKiBhZGRpdGlvbmFsIG1hbGxvYydlZCBtZW1vcnkuICBtYV90YWJsZSBpcyBuZXZlciBOVUxMISAgVGhpcyBydWxlCi0gICAgICogc2F2ZXMgcmVwZWF0ZWQgcnVudGltZSBudWxsLXRlc3RzIGluIHRoZSB3b3JraG9yc2UgZ2V0aXRlbSBhbmQKLSAgICAgKiBzZXRpdGVtIGNhbGxzLgotICAgICAqLwotICAgIFB5RGljdEVudHJ5ICptYV90YWJsZTsKLSAgICBQeURpY3RFbnRyeSAqKCptYV9sb29rdXApKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKTsKLSAgICBQeURpY3RFbnRyeSBtYV9zbWFsbHRhYmxlW1B5RGljdF9NSU5TSVpFXTsKLX07CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RGljdF9UeXBlOwpAQCAtMTA5LDEyICs1MSwxNiBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfTmV3KHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfU2V0SXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwogUHlBUElfRlVOQyh2b2lkKSBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfTmV4dCgKICAgICBQeU9iamVjdCAqbXAsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlEaWN0S2V5c09iamVjdCAqX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSwgUHlfaGFzaF90ICpoYXNoKTsKICNlbmRpZgpAQCAtMTI5LDYgKzc1LDEwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfTmV3UHJlc2l6ZWQoUHlfc3NpemVfdCBtaW51c2VkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9NYXliZVVudHJhY2soUHlPYmplY3QgKm1wKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICptcCk7CitQeV9zc2l6ZV90IF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CisjZGVmaW5lIF9QeURpY3RfSGFzU3BsaXRUYWJsZShkKSAoKGQpLT5tYV92YWx1ZXMgIT0gTlVMTCkKKworUHlBUElfRlVOQyhpbnQpIFB5RGljdF9DbGVhckZyZWVMaXN0KHZvaWQpOwogI2VuZGlmCiAKIC8qIFB5RGljdF9VcGRhdGUobXAsIG90aGVyKSBpcyBlcXVpdmFsZW50IHRvIFB5RGljdF9NZXJnZShtcCwgb3RoZXIsIDEpLiAqLwpAQCAtMTUzLDkgKzEwMywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfU2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSwgUHlPYmplY3QgKml0ZW0pOworUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfU2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICppdGVtKTsKIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfRGVsSXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK2ludCBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlUeXBlT2JqZWN0ICp0cCwgUHlPYmplY3QgKipkaWN0cHRyLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKTsKK1B5T2JqZWN0ICpfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICosIFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RGljdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZHRvYS5oIGIvSW5jbHVkZS9kdG9hLmgKaW5kZXggODE5YmQwZi4uOWJmYjYyNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kdG9hLmgKKysrIGIvSW5jbHVkZS9kdG9hLmgKQEAgLTgsNiArOCw4IEBACiBQeUFQSV9GVU5DKGNoYXIgKikgX1B5X2RnX2R0b2EoZG91YmxlIGQsIGludCBtb2RlLCBpbnQgbmRpZ2l0cywKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZGVjcHQsIGludCAqc2lnbiwgY2hhciAqKnJ2ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9kZ19mcmVlZHRvYShjaGFyICpzKTsKK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlfZGdfc3RkbmFuKGludCBzaWduKTsKK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlfZGdfaW5maW5pdHkoaW50IHNpZ24pOwogCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9lcnJjb2RlLmggYi9JbmNsdWRlL2VycmNvZGUuaAppbmRleCA2YmIzY2MxLi41OTQ2Njg2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2VycmNvZGUuaAorKysgYi9JbmNsdWRlL2VycmNvZGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBFX0VPTFMJCTI0CS8qIEVPTCBpbiBzaW5nbGUtcXVvdGVkIHN0cmluZyAqLwogI2RlZmluZSBFX0xJTkVDT05UCTI1CS8qIFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBhIGxpbmUgY29udGludWF0aW9uICovCiAjZGVmaW5lIEVfSURFTlRJRklFUiAgICAyNiAgICAgIC8qIEludmFsaWQgY2hhcmFjdGVycyBpbiBpZGVudGlmaWVyICovCisjZGVmaW5lIEVfQkFEU0lOR0xFCTI3CS8qIElsbC1mb3JtZWQgc2luZ2xlIHN0YXRlbWVudCBpbnB1dCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZXV0aWxzLmggYi9JbmNsdWRlL2ZpbGV1dGlscy5oCmluZGV4IDJmYWRlOWIuLjdjMThjZjIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZXV0aWxzLmgKKysrIGIvSW5jbHVkZS9maWxldXRpbHMuaApAQCAtNSw2ICs1LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOworCiBQeUFQSV9GVU5DKHdjaGFyX3QgKikgX1B5X2NoYXIyd2NoYXIoCiAgICAgY29uc3QgY2hhciAqYXJnLAogICAgIHNpemVfdCAqc2l6ZSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKaW5kZXggOTBmMGE0NS4uZTI0MGZkYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaApAQCAtMjcsMTIgKzI3LDEyIEBACiAjZGVmaW5lIFB5X1JFVFVSTl9OQU4gcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeV9OQU4pCiAjZW5kaWYKIAotI2RlZmluZSBQeV9SRVRVUk5fSU5GKHNpZ24pIGRvCQkJCQlcCi0JaWYgKGNvcHlzaWduKDEuLCBzaWduKSA9PSAxLikgewkJCQlcCi0JCXJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfSFVHRV9WQUwpOwlcCi0JfSBlbHNlIHsJCQkJCQlcCi0JCXJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoLVB5X0hVR0VfVkFMKTsJXAotCX0gd2hpbGUoMCkKKyNkZWZpbmUgUHlfUkVUVVJOX0lORihzaWduKSBkbyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoY29weXNpZ24oMS4sIHNpZ24pID09IDEuKSB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeV9IVUdFX1ZBTCk7ICAgIFwKKyAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgtUHlfSFVHRV9WQUwpOyAgIFwKKyAgICB9IHdoaWxlKDApCiAKIFB5QVBJX0ZVTkMoZG91YmxlKSBQeUZsb2F0X0dldE1heCh2b2lkKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBQeUZsb2F0X0dldE1pbih2b2lkKTsKQEAgLTExMCwxMSArMTEwLDE2IEBACiAvKiBmcmVlIGxpc3QgYXBpICovCiBQeUFQSV9GVU5DKGludCkgUHlGbG9hdF9DbGVhckZyZWVMaXN0KHZvaWQpOwogCitQeUFQSV9GVU5DKHZvaWQpIF9QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSogb3V0KTsKKwogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotCQkJCQkgICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0JCQkJCSAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mcmFtZW9iamVjdC5oIGIvSW5jbHVkZS9mcmFtZW9iamVjdC5oCmluZGV4IDFmYjY0YmIuLmFjMmY3OTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnJhbWVvYmplY3QuaAorKysgYi9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKQEAgLTksNDUgKzksNDUgQEAKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50IGJfdHlwZTsJCQkvKiB3aGF0IGtpbmQgb2YgYmxvY2sgdGhpcyBpcyAqLwotICAgIGludCBiX2hhbmRsZXI7CQkvKiB3aGVyZSB0byBqdW1wIHRvIGZpbmQgaGFuZGxlciAqLwotICAgIGludCBiX2xldmVsOwkJLyogdmFsdWUgc3RhY2sgbGV2ZWwgdG8gcG9wIHRvICovCisgICAgaW50IGJfdHlwZTsgICAgICAgICAgICAgICAgIC8qIHdoYXQga2luZCBvZiBibG9jayB0aGlzIGlzICovCisgICAgaW50IGJfaGFuZGxlcjsgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGp1bXAgdG8gZmluZCBoYW5kbGVyICovCisgICAgaW50IGJfbGV2ZWw7ICAgICAgICAgICAgICAgIC8qIHZhbHVlIHN0YWNrIGxldmVsIHRvIHBvcCB0byAqLwogfSBQeVRyeUJsb2NrOwogCiB0eXBlZGVmIHN0cnVjdCBfZnJhbWUgewogICAgIFB5T2JqZWN0X1ZBUl9IRUFECi0gICAgc3RydWN0IF9mcmFtZSAqZl9iYWNrOwkvKiBwcmV2aW91cyBmcmFtZSwgb3IgTlVMTCAqLwotICAgIFB5Q29kZU9iamVjdCAqZl9jb2RlOwkvKiBjb2RlIHNlZ21lbnQgKi8KLSAgICBQeU9iamVjdCAqZl9idWlsdGluczsJLyogYnVpbHRpbiBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KLSAgICBQeU9iamVjdCAqZl9nbG9iYWxzOwkvKiBnbG9iYWwgc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCi0gICAgUHlPYmplY3QgKmZfbG9jYWxzOwkJLyogbG9jYWwgc3ltYm9sIHRhYmxlIChhbnkgbWFwcGluZykgKi8KLSAgICBQeU9iamVjdCAqKmZfdmFsdWVzdGFjazsJLyogcG9pbnRzIGFmdGVyIHRoZSBsYXN0IGxvY2FsICovCisgICAgc3RydWN0IF9mcmFtZSAqZl9iYWNrOyAgICAgIC8qIHByZXZpb3VzIGZyYW1lLCBvciBOVUxMICovCisgICAgUHlDb2RlT2JqZWN0ICpmX2NvZGU7ICAgICAgIC8qIGNvZGUgc2VnbWVudCAqLworICAgIFB5T2JqZWN0ICpmX2J1aWx0aW5zOyAgICAgICAvKiBidWlsdGluIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLworICAgIFB5T2JqZWN0ICpmX2dsb2JhbHM7ICAgICAgICAvKiBnbG9iYWwgc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCisgICAgUHlPYmplY3QgKmZfbG9jYWxzOyAgICAgICAgIC8qIGxvY2FsIHN5bWJvbCB0YWJsZSAoYW55IG1hcHBpbmcpICovCisgICAgUHlPYmplY3QgKipmX3ZhbHVlc3RhY2s7ICAgIC8qIHBvaW50cyBhZnRlciB0aGUgbGFzdCBsb2NhbCAqLwogICAgIC8qIE5leHQgZnJlZSBzbG90IGluIGZfdmFsdWVzdGFjay4gIEZyYW1lIGNyZWF0aW9uIHNldHMgdG8gZl92YWx1ZXN0YWNrLgogICAgICAgIEZyYW1lIGV2YWx1YXRpb24gdXN1YWxseSBOVUxMcyBpdCwgYnV0IGEgZnJhbWUgdGhhdCB5aWVsZHMgc2V0cyBpdAogICAgICAgIHRvIHRoZSBjdXJyZW50IHN0YWNrIHRvcC4gKi8KICAgICBQeU9iamVjdCAqKmZfc3RhY2t0b3A7Ci0gICAgUHlPYmplY3QgKmZfdHJhY2U7CQkvKiBUcmFjZSBmdW5jdGlvbiAqLworICAgIFB5T2JqZWN0ICpmX3RyYWNlOyAgICAgICAgICAvKiBUcmFjZSBmdW5jdGlvbiAqLwogCi0JLyogSW4gYSBnZW5lcmF0b3IsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzd2FwIGJldHdlZW4gdGhlIGV4Y2VwdGlvbgotCSAgIHN0YXRlIGluc2lkZSB0aGUgZ2VuZXJhdG9yIGFuZCB0aGUgZXhjZXB0aW9uIHN0YXRlIG9mIHRoZSBjYWxsaW5nCi0JICAgZnJhbWUgKHdoaWNoIHNob3VsZG4ndCBiZSBpbXBhY3RlZCB3aGVuIHRoZSBnZW5lcmF0b3IgInlpZWxkcyIKLQkgICBmcm9tIGFuIGV4Y2VwdCBoYW5kbGVyKS4KLQkgICBUaGVzZSB0aHJlZSBmaWVsZHMgZXhpc3QgZXhhY3RseSBmb3IgdGhhdCwgYW5kIGFyZSB1bnVzZWQgZm9yCi0JICAgbm9uLWdlbmVyYXRvciBmcmFtZXMuIFNlZSB0aGUgU0FWRV9FWENfU1RBVEUgYW5kIFNXQVBfRVhDX1NUQVRFCi0JICAgbWFjcm9zIGluIGNldmFsLmMgZm9yIGRldGFpbHMgb2YgdGhlaXIgdXNlLiAqLworICAgICAgICAvKiBJbiBhIGdlbmVyYXRvciwgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHN3YXAgYmV0d2VlbiB0aGUgZXhjZXB0aW9uCisgICAgICAgICAgIHN0YXRlIGluc2lkZSB0aGUgZ2VuZXJhdG9yIGFuZCB0aGUgZXhjZXB0aW9uIHN0YXRlIG9mIHRoZSBjYWxsaW5nCisgICAgICAgICAgIGZyYW1lICh3aGljaCBzaG91bGRuJ3QgYmUgaW1wYWN0ZWQgd2hlbiB0aGUgZ2VuZXJhdG9yICJ5aWVsZHMiCisgICAgICAgICAgIGZyb20gYW4gZXhjZXB0IGhhbmRsZXIpLgorICAgICAgICAgICBUaGVzZSB0aHJlZSBmaWVsZHMgZXhpc3QgZXhhY3RseSBmb3IgdGhhdCwgYW5kIGFyZSB1bnVzZWQgZm9yCisgICAgICAgICAgIG5vbi1nZW5lcmF0b3IgZnJhbWVzLiBTZWUgdGhlIFNBVkVfRVhDX1NUQVRFIGFuZCBTV0FQX0VYQ19TVEFURQorICAgICAgICAgICBtYWNyb3MgaW4gY2V2YWwuYyBmb3IgZGV0YWlscyBvZiB0aGVpciB1c2UuICovCiAgICAgUHlPYmplY3QgKmZfZXhjX3R5cGUsICpmX2V4Y192YWx1ZSwgKmZfZXhjX3RyYWNlYmFjazsKIAogICAgIFB5VGhyZWFkU3RhdGUgKmZfdHN0YXRlOwotICAgIGludCBmX2xhc3RpOwkJLyogTGFzdCBpbnN0cnVjdGlvbiBpZiBjYWxsZWQgKi8KKyAgICBpbnQgZl9sYXN0aTsgICAgICAgICAgICAgICAgLyogTGFzdCBpbnN0cnVjdGlvbiBpZiBjYWxsZWQgKi8KICAgICAvKiBDYWxsIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIGluc3RlYWQgb2YgcmVhZGluZyB0aGlzIGZpZWxkCiAgICAgICAgZGlyZWN0bHkuICBBcyBvZiAyLjMgZl9saW5lbm8gaXMgb25seSB2YWxpZCB3aGVuIHRyYWNpbmcgaXMKICAgICAgICBhY3RpdmUgKGkuZS4gd2hlbiBmX3RyYWNlIGlzIHNldCkuICBBdCBvdGhlciB0aW1lcyB3ZSB1c2UKICAgICAgICBQeUNvZGVfQWRkcjJMaW5lIHRvIGNhbGN1bGF0ZSB0aGUgbGluZSBmcm9tIHRoZSBjdXJyZW50CiAgICAgICAgYnl0ZWNvZGUgaW5kZXguICovCi0gICAgaW50IGZfbGluZW5vOwkJLyogQ3VycmVudCBsaW5lIG51bWJlciAqLwotICAgIGludCBmX2libG9jazsJCS8qIGluZGV4IGluIGZfYmxvY2tzdGFjayAqLworICAgIGludCBmX2xpbmVubzsgICAgICAgICAgICAgICAvKiBDdXJyZW50IGxpbmUgbnVtYmVyICovCisgICAgaW50IGZfaWJsb2NrOyAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGZfYmxvY2tzdGFjayAqLwogICAgIFB5VHJ5QmxvY2sgZl9ibG9ja3N0YWNrW0NPX01BWEJMT0NLU107IC8qIGZvciB0cnkgYW5kIGxvb3AgYmxvY2tzICovCi0gICAgUHlPYmplY3QgKmZfbG9jYWxzcGx1c1sxXTsJLyogbG9jYWxzK3N0YWNrLCBkeW5hbWljYWxseSBzaXplZCAqLworICAgIFB5T2JqZWN0ICpmX2xvY2Fsc3BsdXNbMV07ICAvKiBsb2NhbHMrc3RhY2ssIGR5bmFtaWNhbGx5IHNpemVkICovCiB9IFB5RnJhbWVPYmplY3Q7CiAKIApAQCAtNzksNiArNzksOCBAQAogCiBQeUFQSV9GVU5DKGludCkgUHlGcmFtZV9DbGVhckZyZWVMaXN0KHZvaWQpOwogCitQeUFQSV9GVU5DKHZvaWQpIF9QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKwogLyogUmV0dXJuIHRoZSBsaW5lIG9mIGNvZGUgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuICovCiBQeUFQSV9GVU5DKGludCkgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKFB5RnJhbWVPYmplY3QgKik7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnVuY29iamVjdC5oIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKaW5kZXggNTIxZDg3Yi4uY2MxNDI2YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mdW5jb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKQEAgLTMxLDYgKzMxLDcgQEAKICAgICBQeU9iamVjdCAqZnVuY193ZWFrcmVmbGlzdDsJLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KICAgICBQeU9iamVjdCAqZnVuY19tb2R1bGU7CS8qIFRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSwgY2FuIGJlIGFueXRoaW5nICovCiAgICAgUHlPYmplY3QgKmZ1bmNfYW5ub3RhdGlvbnM7CS8qIEFubm90YXRpb25zLCBhIGRpY3Qgb3IgTlVMTCAqLworICAgIFB5T2JqZWN0ICpmdW5jX3F1YWxuYW1lOyAgICAvKiBUaGUgcXVhbGlmaWVkIG5hbWUgKi8KIAogICAgIC8qIEludmFyaWFudDoKICAgICAgKiAgICAgZnVuY19jbG9zdXJlIGNvbnRhaW5zIHRoZSBiaW5kaW5ncyBmb3IgZnVuY19jb2RlLT5jb19mcmVldmFycywgc28KQEAgLTQ0LDYgKzQ1LDcgQEAKICNkZWZpbmUgUHlGdW5jdGlvbl9DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeUZ1bmN0aW9uX1R5cGUpCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9OZXcoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldENvZGUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0R2xvYmFscyhQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRNb2R1bGUoUHlPYmplY3QgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCBkMjlmYjFlLi5lZDQ1MWJhIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTExLDIwICsxMSwyMCBAQAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewotCVB5T2JqZWN0X0hFQUQKLQkvKiBUaGUgZ2lfIHByZWZpeCBpcyBpbnRlbmRlZCB0byByZW1pbmQgb2YgZ2VuZXJhdG9yLWl0ZXJhdG9yLiAqLworICAgIFB5T2JqZWN0X0hFQUQKKyAgICAvKiBUaGUgZ2lfIHByZWZpeCBpcyBpbnRlbmRlZCB0byByZW1pbmQgb2YgZ2VuZXJhdG9yLWl0ZXJhdG9yLiAqLwogCi0JLyogTm90ZTogZ2lfZnJhbWUgY2FuIGJlIE5VTEwgaWYgdGhlIGdlbmVyYXRvciBpcyAiZmluaXNoZWQiICovCi0Jc3RydWN0IF9mcmFtZSAqZ2lfZnJhbWU7CisgICAgLyogTm90ZTogZ2lfZnJhbWUgY2FuIGJlIE5VTEwgaWYgdGhlIGdlbmVyYXRvciBpcyAiZmluaXNoZWQiICovCisgICAgc3RydWN0IF9mcmFtZSAqZ2lfZnJhbWU7CiAKLQkvKiBUcnVlIGlmIGdlbmVyYXRvciBpcyBiZWluZyBleGVjdXRlZC4gKi8KLQlpbnQgZ2lfcnVubmluZzsKLSAgICAKLQkvKiBUaGUgY29kZSBvYmplY3QgYmFja2luZyB0aGUgZ2VuZXJhdG9yICovCi0JUHlPYmplY3QgKmdpX2NvZGU7CisgICAgLyogVHJ1ZSBpZiBnZW5lcmF0b3IgaXMgYmVpbmcgZXhlY3V0ZWQuICovCisgICAgY2hhciBnaV9ydW5uaW5nOwogCi0JLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZS4gKi8KLQlQeU9iamVjdCAqZ2lfd2Vha3JlZmxpc3Q7CisgICAgLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLworICAgIFB5T2JqZWN0ICpnaV9jb2RlOworCisgICAgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZS4gKi8KKyAgICBQeU9iamVjdCAqZ2lfd2Vha3JlZmxpc3Q7CiB9IFB5R2VuT2JqZWN0OwogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlHZW5fVHlwZTsKQEAgLTM0LDYgKzM0LDggQEAKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUdlbl9OZXcoc3RydWN0IF9mcmFtZSAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKK1B5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1pbml0LmggYi9JbmNsdWRlL2dyYW1pbml0LmgKaW5kZXggZTBlMjdmOS4uM2VjOTQ5YSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtaW5pdC5oCisrKyBiL0luY2x1ZGUvZ3JhbWluaXQuaApAQCAtODEsMyArODEsNCBAQAogI2RlZmluZSBjb21wX2lmIDMzNAogI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzNQogI2RlZmluZSB5aWVsZF9leHByIDMzNgorI2RlZmluZSB5aWVsZF9hcmcgMzM3CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ltcG9ydC5oIGIvSW5jbHVkZS9pbXBvcnQuaAppbmRleCA0MDBlOTdjLi5mZGMyNzMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ltcG9ydC5oCisrKyBiL0luY2x1ZGUvaW1wb3J0LmgKQEAgLTcsNiArNyw5IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydFppcF9Jbml0KHZvaWQpOworCitQeU1PRElOSVRfRlVOQyBQeUluaXRfaW1wKHZvaWQpOwogUHlBUElfRlVOQyhsb25nKSBQeUltcG9ydF9HZXRNYWdpY051bWJlcih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeUltcG9ydF9HZXRNYWdpY1RhZyh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoCkBAIC0yNCw3ICsyNywxNiBAQAogICAgIGNoYXIgKnBhdGhuYW1lLCAgICAgICAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KICAgICBjaGFyICpjcGF0aG5hbWUgICAgICAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUsCisgICAgUHlPYmplY3QgKmNvLAorICAgIFB5T2JqZWN0ICpwYXRobmFtZSwKKyAgICBQeU9iamVjdCAqY3BhdGhuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfR2V0TW9kdWxlRGljdCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfQWRkTW9kdWxlKAogICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CkBAIC0zNSw3ICs0NywxNCBAQAogICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKAotICAgIGNoYXIgKm5hbWUsICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLworICAgIGNvbnN0IGNoYXIgKm5hbWUsICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLworICAgIFB5T2JqZWN0ICpnbG9iYWxzLAorICAgIFB5T2JqZWN0ICpsb2NhbHMsCisgICAgUHlPYmplY3QgKmZyb21saXN0LAorICAgIGludCBsZXZlbAorICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lLAogICAgIFB5T2JqZWN0ICpnbG9iYWxzLAogICAgIFB5T2JqZWN0ICpsb2NhbHMsCiAgICAgUHlPYmplY3QgKmZyb21saXN0LApAQCAtNDMsMTIgKzYyLDE1IEBACiAgICAgKTsKIAogI2RlZmluZSBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeChuLCBnLCBsLCBmKSBcCi0gICAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwobiwgZywgbCwgZiwgLTEpCisgICAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwobiwgZywgbCwgZiwgMCkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9HZXRJbXBvcnRlcihQeU9iamVjdCAqcGF0aCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0ltcG9ydChQeU9iamVjdCAqbmFtZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X1JlbG9hZE1vZHVsZShQeU9iamVjdCAqbSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW1wb3J0X0NsZWFudXAodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoCiAgICAgY2hhciAqbmFtZSAgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKQEAgLTY1LDE3ICs4NywxNyBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfUmVJbml0TG9jayh2b2lkKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKV9QeUltcG9ydF9GaW5kQnVpbHRpbigKLSAgICBjaGFyICpuYW1lICAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKV9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZShjaGFyICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKV9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbigKICAgICBQeU9iamVjdCAqbW9kLAogICAgIGNoYXIgKm5hbWUgICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7Ci1QeUFQSV9GVU5DKGludClfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKFB5T2JqZWN0KiwgY2hhciAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KV9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiBzdHJ1Y3QgX2luaXR0YWIgewotICAgIGNoYXIgKm5hbWU7CisgICAgY2hhciAqbmFtZTsgICAgICAgICAgICAgICAgIC8qIEFTQ0lJIGVuY29kZWQgc3RyaW5nICovCiAgICAgUHlPYmplY3QqICgqaW5pdGZ1bmMpKHZvaWQpOwogfTsKIFB5QVBJX0RBVEEoc3RydWN0IF9pbml0dGFiICopIFB5SW1wb3J0X0luaXR0YWI7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ludHJjaGVjay5oIGIvSW5jbHVkZS9pbnRyY2hlY2suaAppbmRleCAzYjY3ZWQwLi5mNTNmZWUxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ludHJjaGVjay5oCisrKyBiL0luY2x1ZGUvaW50cmNoZWNrLmgKQEAgLTgsNiArOCwxMiBAQAogUHlBUElfRlVOQyhpbnQpIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfSW5pdEludGVycnVwdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfQWZ0ZXJGb3JrKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX0lzTWFpblRocmVhZCh2b2lkKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIHdpbmRvd3MuaCBpcyBub3QgaW5jbHVkZWQgYnkgUHl0aG9uLmggc28gdXNlIHZvaWQqIGluc3RlYWQgb2YgSEFORExFICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlPU19TaWdpbnRFdmVudCh2b2lkKTsKKyNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbGlzdG9iamVjdC5oIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKaW5kZXggOTQ5YjFhMy4uZGM2MmFlZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9saXN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKQEAgLTYyLDYgKzYyLDkgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMaXN0X0FzVHVwbGUoUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxpc3RfRXh0ZW5kKFB5TGlzdE9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworUHlBUElfRlVOQyhpbnQpIFB5TGlzdF9DbGVhckZyZWVMaXN0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlMaXN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKICNlbmRpZgogCiAvKiBNYWNybywgdHJhZGluZyBzYWZldHkgZm9yIHNwZWVkICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdpbnRyZXByLmggYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKaW5kZXggYjk0ZjdiMi4uM2E0NWJhZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25naW50cmVwci5oCisrKyBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaApAQCAtNiw3ICs2LDcgQEAKICNlbmRpZgogCiAKLS8qIFRoaXMgaXMgcHVibGlzaGVkIGZvciB0aGUgYmVuZWZpdCBvZiAiZnJpZW5kIiBtYXJzaGFsLmMgb25seS4gKi8KKy8qIFRoaXMgaXMgcHVibGlzaGVkIGZvciB0aGUgYmVuZWZpdCBvZiAiZnJpZW5kcyIgbWFyc2hhbC5jIGFuZCBfZGVjaW1hbC5jLiAqLwogCiAvKiBQYXJhbWV0ZXJzIG9mIHRoZSBsb25nIGludGVnZXIgcmVwcmVzZW50YXRpb24uICBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudAogICAgc2V0cyBvZiBwYXJhbWV0ZXJzOiBvbmUgc2V0IGZvciAzMC1iaXQgZGlnaXRzLCBzdG9yZWQgaW4gYW4gdW5zaWduZWQgMzItYml0CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IGMwOTU2NWEuLmQ3NDFmMWIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC0xMiw3ICsxMiw3IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlMb25nX1R5cGU7CiAKICNkZWZpbmUgUHlMb25nX0NoZWNrKG9wKSBcCi0JCVB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfTE9OR19TVUJDTEFTUykKKyAgICAgICAgUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19MT05HX1NVQkNMQVNTKQogI2RlZmluZSBQeUxvbmdfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeUxvbmdfVHlwZSkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmcobG9uZyk7CkBAIC04MCw2ICs4MCw3IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tU3RyaW5nKGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Vbmljb2RlKFB5X1VOSUNPREUqLCBQeV9zc2l6ZV90LCBpbnQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuaWNvZGVPYmplY3QoUHlPYmplY3QgKnUsIGludCBiYXNlKTsKICNlbmRpZgogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC0xMjEsOCArMTIyLDggQEAKICAgICAgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgdGhlIFB5dGhvbiBsb25nLgogKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KAotCWNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKLQlpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBuLAorICAgIGludCBsaXR0bGVfZW5kaWFuLCBpbnQgaXNfc2lnbmVkKTsKIAogLyogX1B5TG9uZ19Bc0J5dGVBcnJheTogQ29udmVydCB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgOCpuIGJpdHMgb2YgbG9uZwogICAgdiB0byBhIGJhc2UtMjU2IGludGVnZXIsIHN0b3JlZCBpbiBhcnJheSBieXRlcy4gIE5vcm1hbGx5IHJldHVybiAwLApAQCAtMTQ0LDE5ICsxNDUsMjggQEAKICAgICAgY2FzZSwgYnV0IGJ5dGVzIGhvbGRzIHRoZSBsZWFzdC1zaWduZmljYW50IG4gYnl0ZXMgb2YgdGhlIHRydWUgdmFsdWUuCiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfQXNCeXRlQXJyYXkoUHlMb25nT2JqZWN0KiB2LAotCXVuc2lnbmVkIGNoYXIqIGJ5dGVzLCBzaXplX3QgbiwKLQlpbnQgbGl0dGxlX2VuZGlhbiwgaW50IGlzX3NpZ25lZCk7CisgICAgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBuLAorICAgIGludCBsaXR0bGVfZW5kaWFuLCBpbnQgaXNfc2lnbmVkKTsKIAogCiAvKiBfUHlMb25nX0Zvcm1hdDogQ29udmVydCB0aGUgbG9uZyB0byBhIHN0cmluZyBvYmplY3Qgd2l0aCBnaXZlbiBiYXNlLAogICAgYXBwZW5kaW5nIGEgYmFzZSBwcmVmaXggb2YgMFtib3hdIGlmIGJhc2UgaXMgMiwgOCBvciAxNi4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICpvYmosIGludCBiYXNlKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfRm9ybWF0V3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIGludCBiYXNlLAorICAgIGludCBhbHRlcm5hdGUpOwogCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLQkJCQkJICAgICAgUHlfVU5JQ09ERSAqZm9ybWF0X3NwZWMsCi0JCQkJCSAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBUaGVzZSBhcmVuJ3QgcmVhbGx5IHBhcnQgb2YgdGhlIGxvbmcgb2JqZWN0LCBidXQgdGhleSdyZSBoYW5keS4gVGhlCmRpZmYgLS1naXQgYS9JbmNsdWRlL21lbW9yeW9iamVjdC5oIGIvSW5jbHVkZS9tZW1vcnlvYmplY3QuaAppbmRleCA2MmVjYmQ2Li5jMmUxMTk0IDEwMDY0NAotLS0gYS9JbmNsdWRlL21lbW9yeW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKQEAgLTYsNjkgKzYsNjUgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlNYW5hZ2VkQnVmZmVyX1R5cGU7CisjZW5kaWYKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1lbW9yeVZpZXdfVHlwZTsKIAogI2RlZmluZSBQeU1lbW9yeVZpZXdfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlNZW1vcnlWaWV3X1R5cGUpCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLS8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIHVuZGVybHlpbmcgUHlfYnVmZmVyIG9mIGEgbWVtb3J5dmlldyBvYmplY3QuICovCisvKiBHZXQgYSBwb2ludGVyIHRvIHRoZSBtZW1vcnl2aWV3J3MgcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIGJ1ZmZlci4gKi8KICNkZWZpbmUgUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIob3ApICgmKChQeU1lbW9yeVZpZXdPYmplY3QgKikob3ApKS0+dmlldykKLS8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIFB5T2JqZWN0IGZyb20gd2hpY2ggb3JpZ2luYXRlcyBhIG1lbW9yeXZpZXcgb2JqZWN0LiAqLworLyogR2V0IGEgcG9pbnRlciB0byB0aGUgZXhwb3J0aW5nIG9iamVjdCAodGhpcyBtYXkgYmUgTlVMTCEpLiAqLwogI2RlZmluZSBQeU1lbW9yeVZpZXdfR0VUX0JBU0Uob3ApICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKShvcCkpLT52aWV3Lm9iaikKICNlbmRpZgogCi0KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKmJhc2UsIAotCQkJCQkJICBpbnQgYnVmZmVydHlwZSwgCi0JCQkJCQkgIGNoYXIgZm9ydCk7Ci0KLSAgICAvKiBSZXR1cm4gYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSByZXByZXNlbnRpbmcgdGhlIGJ1ZmZlcgotICAgICAgIGZyb20gYW4gb2JqZWN0IGluIGEgbWVtb3J5IHZpZXcgb2JqZWN0LiAgSWYgYSBjb3B5IGlzIG1hZGUgdGhlbiB0aGUKLSAgICAgICBiYXNlIG9iamVjdCBmb3IgdGhlIG1lbW9yeSB2aWV3IHdpbGwgYmUgYSAqbmV3KiBieXRlcyBvYmplY3QuIAotICAgICAgIAotICAgICAgIE90aGVyd2lzZSwgdGhlIGJhc2Utb2JqZWN0IHdpbGwgYmUgdGhlIG9iamVjdCBpdHNlbGYgYW5kIG5vIAotICAgICAgIGRhdGEtY29weWluZyB3aWxsIGJlIGRvbmUuIAotCi0gICAgICAgVGhlIGJ1ZmZlcnR5cGUgYXJndW1lbnQgY2FuIGJlIFB5QlVGX1JFQUQsIFB5QlVGX1dSSVRFLAotICAgICAgIFB5QlVGX1NIQURPVyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcmV0dXJuZWQgYnVmZmVyCi0gICAgICAgc2hvdWxkIGJlIFJFQURPTkxZLCBXUklUQUJMRSwgb3Igc2V0IHRvIHVwZGF0ZSB0aGUKLSAgICAgICBvcmlnaW5hbCBidWZmZXIgaWYgYSBjb3B5IG11c3QgYmUgbWFkZS4gIElmIGJ1ZmZlcnR5cGUgaXMKLSAgICAgICBQeUJVRl9XUklURSBhbmQgdGhlIGJ1ZmZlciBpcyBub3QgY29udGlndW91cyBhbiBlcnJvciB3aWxsCi0gICAgICAgYmUgcmFpc2VkLiAgSW4gdGhpcyBjaXJjdW1zdGFuY2UsIHRoZSB1c2VyIGNhbiB1c2UKLSAgICAgICBQeUJVRl9TSEFET1cgdG8gZW5zdXJlIHRoYXQgYSBhIHdyaXRhYmxlIHRlbXBvcmFyeQotICAgICAgIGNvbnRpZ3VvdXMgYnVmZmVyIGlzIHJldHVybmVkLiAgVGhlIGNvbnRlbnRzIG9mIHRoaXMKLSAgICAgICBjb250aWd1b3VzIGJ1ZmZlciB3aWxsIGJlIGNvcGllZCBiYWNrIGludG8gdGhlIG9yaWdpbmFsCi0gICAgICAgb2JqZWN0IGFmdGVyIHRoZSBtZW1vcnl2aWV3IG9iamVjdCBpcyBkZWxldGVkIGFzIGxvbmcgYXMKLSAgICAgICB0aGUgb3JpZ2luYWwgb2JqZWN0IGlzIHdyaXRhYmxlIGFuZCBhbGxvd3Mgc2V0dGluZyBhbgotICAgICAgIGV4Y2x1c2l2ZSB3cml0ZSBsb2NrLiBJZiB0aGlzIGlzIG5vdCBhbGxvd2VkIGJ5IHRoZQotICAgICAgIG9yaWdpbmFsIG9iamVjdCwgdGhlbiBhIEJ1ZmZlckVycm9yIGlzIHJhaXNlZC4KLSAgICAgICAKLSAgICAgICBJZiB0aGUgb2JqZWN0IGlzIG11bHRpLWRpbWVuc2lvbmFsIGFuZCBpZiBmb3J0cmFuIGlzICdGJywKLSAgICAgICB0aGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSB1bmRlcmx5aW5nIGFycmF5IHdpbGwgdmFyeSB0aGUKLSAgICAgICBmYXN0ZXN0IGluIHRoZSBidWZmZXIuICBJZiBmb3J0cmFuIGlzICdDJywgdGhlbiB0aGUgbGFzdAotICAgICAgIGRpbWVuc2lvbiB3aWxsIHZhcnkgdGhlIGZhc3Rlc3QgKEMtc3R5bGUgY29udGlndW91cykuICBJZgotICAgICAgIGZvcnRyYW4gaXMgJ0EnLCB0aGVuIGl0IGRvZXMgbm90IG1hdHRlciBhbmQgeW91IHdpbGwgZ2V0Ci0gICAgICAgd2hhdGV2ZXIgdGhlIG9iamVjdCBkZWNpZGVzIGlzIG1vcmUgZWZmaWNpZW50LiAgCi0KLSAgICAgICBBIG5ldyByZWZlcmVuY2UgaXMgcmV0dXJuZWQgdGhhdCBtdXN0IGJlIERFQ1JFRidkIHdoZW4gZmluaXNoZWQuCi0gICAgKi8KLQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdChQeU9iamVjdCAqYmFzZSk7Ci0KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKFB5X2J1ZmZlciAqaW5mbyk7Ci0gICAgLyogY3JlYXRlIG5ldyBpZiBidWZwdHIgaXMgTlVMTCAKLSAgICAgICAgd2lsbCBiZSBhIG5ldyBieXRlc29iamVjdCBpbiBiYXNlICovCiAjZW5kaWYKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIG9yZGVyKTsKIAogCi0vKiBUaGUgc3RydWN0IGlzIGRlY2xhcmVkIGhlcmUgc28gdGhhdCBtYWNyb3MgY2FuIHdvcmssIGJ1dCBpdCBzaG91bGRuJ3QKLSAgIGJlIGNvbnNpZGVyZWQgcHVibGljLiBEb24ndCBhY2Nlc3MgdGhvc2UgZmllbGRzIGRpcmVjdGx5LCB1c2UgdGhlIG1hY3JvcworLyogVGhlIHN0cnVjdHMgYXJlIGRlY2xhcmVkIGhlcmUgc28gdGhhdCBtYWNyb3MgY2FuIHdvcmssIGJ1dCB0aGV5IHNob3VsZG4ndAorICAgYmUgY29uc2lkZXJlZCBwdWJsaWMuIERvbid0IGFjY2VzcyB0aGVpciBmaWVsZHMgZGlyZWN0bHksIHVzZSB0aGUgbWFjcm9zCiAgICBhbmQgZnVuY3Rpb25zIGluc3RlYWQhICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIF9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIGV4cG9ydGVyIGJsb2NrZWQgKi8KKyNkZWZpbmUgX1B5X01BTkFHRURfQlVGRkVSX0ZSRUVfRk9STUFUIDB4MDAyICAvKiBmcmVlIGZvcm1hdCAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9idWZmZXIgdmlldzsKKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCisgICAgUHlfc3NpemVfdCBleHBvcnRzOyAvKiBudW1iZXIgb2YgZGlyZWN0IG1lbW9yeXZpZXcgZXhwb3J0cyAqLworICAgIFB5X2J1ZmZlciBtYXN0ZXI7IC8qIHNuYXBzaG90IGJ1ZmZlciBvYnRhaW5lZCBmcm9tIHRoZSBvcmlnaW5hbCBleHBvcnRlciAqLworfSBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0OworCisKKy8qIHN0YXRpYyBzdG9yYWdlIHVzZWQgZm9yIGNhc3RpbmcgYmV0d2VlbiBmb3JtYXRzICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQgMyAvKiBtdXN0IGJlID49IDMgKi8KKworLyogbWVtb3J5dmlldyBzdGF0ZSBmbGFncyAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIG1hc3RlciBidWZmZXIgYmxvY2tlZCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19DICAgICAgICAgICAweDAwMiAgLyogQy1jb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19GT1JUUkFOICAgICAweDAwNCAgLyogRm9ydHJhbiBjb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19TQ0FMQVIgICAgICAweDAwOCAgLyogc2NhbGFyOiBuZGltID0gMCAqLworI2RlZmluZSBfUHlfTUVNT1JZVklFV19QSUwgICAgICAgICAweDAxMCAgLyogUElMLXN0eWxlIGxheW91dCAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfVkFSX0hFQUQKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOyAvKiBtYW5hZ2VkIGJ1ZmZlciAqLworICAgIFB5X2hhc2hfdCBoYXNoOyAgICAgICAgICAgICAgIC8qIGhhc2ggdmFsdWUgZm9yIHJlYWQtb25seSB2aWV3cyAqLworICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCisgICAgUHlfc3NpemVfdCBleHBvcnRzOyAgICAgICAgICAgLyogbnVtYmVyIG9mIGJ1ZmZlciByZS1leHBvcnRzICovCisgICAgUHlfYnVmZmVyIHZpZXc7ICAgICAgICAgICAgICAgLyogcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIHZpZXcgKi8KKyAgICBjaGFyIGZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUXTsgLyogdXNlZCBmb3IgY2FzdGluZyAqLworICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKKyAgICBQeV9zc2l6ZV90IG9iX2FycmF5WzFdOyAgICAgICAvKiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyAqLwogfSBQeU1lbW9yeVZpZXdPYmplY3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggN2U2N2MwYi4uM2NjMmVhOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC0xNyw3ICsxNyw3IEBACiAKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb24pKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbldpdGhLZXl3b3JkcykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKLQkJCQkJICAgICBQeU9iamVjdCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeU5vQXJnc0Z1bmN0aW9uKShQeU9iamVjdCAqKTsKIAogUHlBUElfRlVOQyhQeUNGdW5jdGlvbikgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24oUHlPYmplY3QgKik7CkBAIC0zMCwyNCArMzAsMjUgQEAKICNkZWZpbmUgUHlDRnVuY3Rpb25fR0VUX0ZVTkNUSU9OKGZ1bmMpIFwKICAgICAgICAgKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX21ldGgpCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpIFwKLQkoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fc2VsZikKKyAgICAgICAgKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX2ZsYWdzICYgTUVUSF9TVEFUSUMgPyBcCisgICAgICAgICBOVUxMIDogKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fc2VsZikKICNkZWZpbmUgUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpIFwKLQkoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfZmxhZ3MpCisgICAgICAgICgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9mbGFncykKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiBzdHJ1Y3QgUHlNZXRob2REZWYgewotICAgIGNvbnN0IGNoYXIJKm1sX25hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbi9tZXRob2QgKi8KLSAgICBQeUNGdW5jdGlvbiAgbWxfbWV0aDsJLyogVGhlIEMgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGl0ICovCi0gICAgaW50CQkgbWxfZmxhZ3M7CS8qIENvbWJpbmF0aW9uIG9mIE1FVEhfeHh4IGZsYWdzLCB3aGljaCBtb3N0bHkKLQkJCQkgICBkZXNjcmliZSB0aGUgYXJncyBleHBlY3RlZCBieSB0aGUgQyBmdW5jICovCi0gICAgY29uc3QgY2hhcgkqbWxfZG9jOwkvKiBUaGUgX19kb2NfXyBhdHRyaWJ1dGUsIG9yIE5VTEwgKi8KKyAgICBjb25zdCBjaGFyICAqbWxfbmFtZTsgICAvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCisgICAgUHlDRnVuY3Rpb24gbWxfbWV0aDsgICAgLyogVGhlIEMgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGl0ICovCisgICAgaW50ICAgICAgICAgbWxfZmxhZ3M7ICAgLyogQ29tYmluYXRpb24gb2YgTUVUSF94eHggZmxhZ3MsIHdoaWNoIG1vc3RseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlIHRoZSBhcmdzIGV4cGVjdGVkIGJ5IHRoZSBDIGZ1bmMgKi8KKyAgICBjb25zdCBjaGFyICAqbWxfZG9jOyAgICAvKiBUaGUgX19kb2NfXyBhdHRyaWJ1dGUsIG9yIE5VTEwgKi8KIH07CiB0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKIAogI2RlZmluZSBQeUNGdW5jdGlvbl9OZXcoTUwsIFNFTEYpIFB5Q0Z1bmN0aW9uX05ld0V4KChNTCksIChTRUxGKSwgTlVMTCkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fTmV3RXgoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKiwgCi0JCQkJCSBQeU9iamVjdCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7CiAKIC8qIEZsYWcgcGFzc2VkIHRvIG5ld21ldGhvZG9iamVjdCAqLwogLyogI2RlZmluZSBNRVRIX09MREFSR1MgIDB4MDAwMCAgIC0tIHVuc3VwcG9ydGVkIG5vdyAqLwpAQCAtODEsNiArODIsMTEgQEAKIAogUHlBUElfRlVOQyhpbnQpIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Qodm9pZCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5Q0Z1bmN0aW9uX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5TWV0aG9kX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCBiZjY0NzhmLi5lY2YxZGNjIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMjMsNiArMjMsOCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiAjZW5kaWYKIAorLyogRHVlIHRvIGEgZ2xpdGNoIGluIDMuMiwgdGhlIF9TaXplVCB2ZXJzaW9ucyB3ZXJlbid0IGV4cG9ydGVkIGZyb20gdGhlIERMTC4gKi8KKyNpZiAhZGVmaW5lZChQWV9TU0laRV9UX0NMRUFOKSB8fCAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiBQeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2UoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlVHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pIFB5X0ZPUk1BVF9QQVJTRVRVUExFKFB5QXJnX1BhcnNlVHVwbGUsIDIsIDMpOwogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLApAQCAtMzEsMTMgKzMzLDE0IEBACiBQeUFQSV9GVU5DKGludCkgUHlBcmdfVW5wYWNrVHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90LCAuLi4pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9CdWlsZFZhbHVlKGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0J1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCAuLi4pOworI2VuZGlmCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5QXJnX05vS2V5d29yZHMoY29uc3QgY2hhciAqZnVuY25hbWUsIFB5T2JqZWN0ICprdyk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1ZhUGFyc2UoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QpOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5X1ZhQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIHZhX2xpc3QpOwogCiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAppbmRleCA3YjJiZjFjLi44MDEzZGQ5IDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKQEAgLTEyLDEwICsxMiwxNCBAQAogI2RlZmluZSBQeU1vZHVsZV9DaGVjayhvcCkgUHlPYmplY3RfVHlwZUNoZWNrKG9wLCAmUHlNb2R1bGVfVHlwZSkKICNkZWZpbmUgUHlNb2R1bGVfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeU1vZHVsZV9UeXBlKQogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX05ld09iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZQorICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX05ldygKICAgICBjb25zdCBjaGFyICpuYW1lICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXREaWN0KFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQxMmYwNQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKQEAgLTAsMCArMSwxNyBAQAorCisvKiBzaW1wbGUgbmFtZXNwYWNlIG9iamVjdCBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBOQU1FU1BBQ0VPQkpFQ1RfSAorI2RlZmluZSBOQU1FU1BBQ0VPQkpFQ1RfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TmFtZXNwYWNlX1R5cGU7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TmFtZXNwYWNlX05ldyhQeU9iamVjdCAqa3dkcyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIU5BTUVTUEFDRU9CSkVDVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL25vZGUuaCBiL0luY2x1ZGUvbm9kZS5oCmluZGV4IDlmNjc2MGMuLjk5YzEzZjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbm9kZS5oCisrKyBiL0luY2x1ZGUvbm9kZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIFJDSElMRChuLCBpKQkoQ0hJTEQobiwgTkNIKG4pICsgaSkpCiAjZGVmaW5lIFRZUEUobikJCSgobiktPm5fdHlwZSkKICNkZWZpbmUgU1RSKG4pCQkoKG4pLT5uX3N0cikKKyNkZWZpbmUgTElORU5PKG4pICAgICAgICgobiktPm5fbGluZW5vKQogCiAvKiBBc3NlcnQgdGhhdCB0aGUgdHlwZSBvZiBhIG5vZGUgaXMgd2hhdCB3ZSBleHBlY3QgKi8KICNkZWZpbmUgUkVRKG4sIHR5cGUpIGFzc2VydChUWVBFKG4pID09ICh0eXBlKSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqZWN0LmggYi9JbmNsdWRlL29iamVjdC5oCmluZGV4IDYxMjBhYjgxMy4uMzg3Y2FkYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmplY3QuaAorKysgYi9JbmNsdWRlL29iamVjdC5oCkBAIC0xMTcsNiArMTE3LDM1IEBACiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAgICAgICAgICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfdHlwZSkKICNkZWZpbmUgUHlfU0laRShvYikgICAgICAgICAgICAgKCgoUHlWYXJPYmplY3QqKShvYikpLT5vYl9zaXplKQogCisvKioqKioqKioqKioqKioqKioqKioqIFN0cmluZyBMaXRlcmFscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVGhpcyBzdHJ1Y3R1cmUgaGVscHMgbWFuYWdpbmcgc3RhdGljIHN0cmluZ3MuIFRoZSBiYXNpYyB1c2FnZSBnb2VzIGxpa2UgdGhpczoKKyAgIEluc3RlYWQgb2YgZG9pbmcKKworICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG8sICJmb28iLCAiYXJncyIsIC4uLik7CisKKyAgIGRvCisKKyAgICAgICBfUHlfSURFTlRJRklFUihmb28pOworICAgICAgIC4uLgorICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX2ZvbywgImFyZ3MiLCAuLi4pOworCisgICBQeUlkX2ZvbyBpcyBhIHN0YXRpYyB2YXJpYWJsZSwgZWl0aGVyIG9uIGJsb2NrIGxldmVsIG9yIGZpbGUgbGV2ZWwuIE9uIGZpcnN0CisgICB1c2FnZSwgdGhlIHN0cmluZyAiZm9vIiBpcyBpbnRlcm5lZCwgYW5kIHRoZSBzdHJ1Y3R1cmVzIGFyZSBsaW5rZWQuIE9uIGludGVycHJldGVyCisgICBzaHV0ZG93biwgYWxsIHN0cmluZ3MgYXJlIHJlbGVhc2VkICh0aHJvdWdoIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKS4KKworICAgQWx0ZXJuYXRpdmVseSwgX1B5X3N0YXRpY19zdHJpbmcgYWxsb3dzIHRvIGNob29zZSB0aGUgdmFyaWFibGUgbmFtZS4KKyAgIF9QeVVuaWNvZGVfRnJvbUlkIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhlIGludGVybmVkIHN0cmluZy4KKyAgIF9QeU9iamVjdF97R2V0LFNldCxIYXN9QXR0cklkIGFyZSBfX2dldGF0dHJfXyB2ZXJzaW9ucyB1c2luZyBfUHlfSWRlbnRpZmllciouCisqLwordHlwZWRlZiBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgeworICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmV4dDsKKyAgICBjb25zdCBjaGFyKiBzdHJpbmc7CisgICAgUHlPYmplY3QgKm9iamVjdDsKK30gX1B5X0lkZW50aWZpZXI7CisKKyNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmcodmFybmFtZSwgdmFsdWUpICBzdGF0aWMgX1B5X0lkZW50aWZpZXIgdmFybmFtZSA9IHsgMCwgdmFsdWUsIDAgfQorI2RlZmluZSBfUHlfSURFTlRJRklFUih2YXJuYW1lKSBfUHlfc3RhdGljX3N0cmluZyhQeUlkXyMjdmFybmFtZSwgI3Zhcm5hbWUpCisKIC8qCiBUeXBlIG9iamVjdHMgY29udGFpbiBhIHN0cmluZyBjb250YWluaW5nIHRoZSB0eXBlIG5hbWUgKHRvIGhlbHAgc29tZXdoYXQKIGluIGRlYnVnZ2luZyksIHRoZSBhbGxvY2F0aW9uIHBhcmFtZXRlcnMgKHNlZSBQeU9iamVjdF9OZXcoKSBhbmQKQEAgLTE1NywxNSArMTg2LDE2IEBACiAgICAgUHlfc3NpemVfdCAqc2hhcGU7CiAgICAgUHlfc3NpemVfdCAqc3RyaWRlczsKICAgICBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzOwotICAgIFB5X3NzaXplX3Qgc21hbGx0YWJsZVsyXTsgIC8qIHN0YXRpYyBzdG9yZSBmb3Igc2hhcGUgYW5kIHN0cmlkZXMgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb25vLWRpbWVuc2lvbmFsIGJ1ZmZlcnMuICovCiAgICAgdm9pZCAqaW50ZXJuYWw7CiB9IFB5X2J1ZmZlcjsKIAogdHlwZWRlZiBpbnQgKCpnZXRidWZmZXJwcm9jKShQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgaW50KTsKIHR5cGVkZWYgdm9pZCAoKnJlbGVhc2VidWZmZXJwcm9jKShQeU9iamVjdCAqLCBQeV9idWZmZXIgKik7CiAKLSAgICAvKiBGbGFncyBmb3IgZ2V0dGluZyBidWZmZXJzICovCisvKiBNYXhpbXVtIG51bWJlciBvZiBkaW1lbnNpb25zICovCisjZGVmaW5lIFB5QlVGX01BWF9ORElNIDY0CisKKy8qIEZsYWdzIGZvciBnZXR0aW5nIGJ1ZmZlcnMgKi8KICNkZWZpbmUgUHlCVUZfU0lNUExFIDAKICNkZWZpbmUgUHlCVUZfV1JJVEFCTEUgMHgwMDAxCiAvKiAgd2UgdXNlZCB0byBpbmNsdWRlIGFuIEUsIGJhY2t3YXJkcyBjb21wYXRpYmxlIGFsaWFzICAqLwpAQCAtNDAzLDYgKzQzMyw5IEBACiB9IFB5VHlwZV9TcGVjOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjKik7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhQeVR5cGVfU3BlYyosIFB5T2JqZWN0Kik7CisjZW5kaWYKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhlICpyZWFsKiBsYXlvdXQgb2YgYSB0eXBlIG9iamVjdCB3aGVuIGFsbG9jYXRlZCBvbiB0aGUgaGVhcCAqLwpAQCAtNDE4LDcgKzQ1MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgZ2l2ZW4gb3BlcmF0b3IgKGUuZy4gX19nZXRpdGVtX18pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYWRkX29wZXJhdG9ycygpIGluIHR5cGVvYmplY3QuYyAuICovCiAgICAgUHlCdWZmZXJQcm9jcyBhc19idWZmZXI7Ci0gICAgUHlPYmplY3QgKmh0X25hbWUsICpodF9zbG90czsKKyAgICBQeU9iamVjdCAqaHRfbmFtZSwgKmh0X3Nsb3RzLCAqaHRfcXVhbG5hbWU7CisgICAgc3RydWN0IF9kaWN0a2V5c29iamVjdCAqaHRfY2FjaGVkX2tleXM7CiAgICAgLyogaGVyZSBhcmUgb3B0aW9uYWwgdXNlciBzbG90cywgZm9sbG93ZWQgYnkgdGhlIG1lbWJlcnMuICovCiB9IFB5SGVhcFR5cGVPYmplY3Q7CiAKQEAgLTQ0OCwxMyArNDgyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlUeXBlX0xvb2t1cChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKiopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIFB5QVBJX0ZVTkMoUHlUeXBlT2JqZWN0ICopIF9QeVR5cGVfQ2FsY3VsYXRlTWV0YWNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNlbmRpZgogUHlBUElfRlVOQyh1bnNpZ25lZCBpbnQpIFB5VHlwZV9DbGVhckNhY2hlKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeVR5cGVfTW9kaWZpZWQoUHlUeXBlT2JqZWN0ICopOwogCiAvKiBHZW5lcmljIG9wZXJhdGlvbnMgb24gb2JqZWN0cyAqLworc3RydWN0IF9QeV9JZGVudGlmaWVyOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICosIEZJTEUgKiwgaW50KTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0JyZWFrUG9pbnQodm9pZCk7CkBAIC00NzIsNiArNTA3LDEwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfU2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9IYXNBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9Jc0Fic3RyYWN0KFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSGFzQXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKiopIF9QeU9iamVjdF9HZXREaWN0UHRyKFB5T2JqZWN0ICopOwogI2VuZGlmCkBAIC00ODIsNiArNTIxLDcgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIoUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9HZW5lcmljU2V0RGljdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCB2b2lkICopOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIFB5T2JqZWN0X0hhc2goUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0lzVHJ1ZShQeU9iamVjdCAqKTsKQEAgLTQ5OCw2ICs1MzgsMTEgQEAKIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAorLyogSGVscGVyIHRvIGxvb2sgdXAgYSBidWlsdGluIG9iamVjdCAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKQorX1B5T2JqZWN0X0dldEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSk7CisjZW5kaWYKIAogLyogUHlPYmplY3RfRGlyKG9iaikgYWN0cyBsaWtlIFB5dGhvbiBidWlsdGlucy5kaXIob2JqKSwgcmV0dXJuaW5nIGEKICAgIGxpc3Qgb2Ygc3RyaW5ncy4gIFB5T2JqZWN0X0RpcihOVUxMKSBpcyBsaWtlIGJ1aWx0aW5zLmRpcigpLApAQCAtNTE1LDYgKzU2MCw3IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgX1B5X0hhc2hEb3VibGUoZG91YmxlKTsKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBfUHlfSGFzaFBvaW50ZXIodm9pZCopOworUHlBUElfRlVOQyhQeV9oYXNoX3QpIF9QeV9IYXNoQnl0ZXModW5zaWduZWQgY2hhciosIFB5X3NzaXplX3QpOwogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTgwMyw2ICs4NDksMTAgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QpIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdDsgLyogRG9uJ3QgdXNlIHRoaXMgZGlyZWN0bHkgKi8KICNkZWZpbmUgUHlfTm90SW1wbGVtZW50ZWQgKCZfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QpCiAKKy8qIE1hY3JvIGZvciByZXR1cm5pbmcgUHlfTm90SW1wbGVtZW50ZWQgZnJvbSBhIGZ1bmN0aW9uICovCisjZGVmaW5lIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRCBcCisgICAgcmV0dXJuIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCksIFB5X05vdEltcGxlbWVudGVkCisKIC8qIFJpY2ggY29tcGFyaXNvbiBvcGNvZGVzICovCiAjZGVmaW5lIFB5X0xUIDAKICNkZWZpbmUgUHlfTEUgMQpAQCAtOTEyLDcgKzk2Miw3IEBACiAqLwogCiAvKiBUaGlzIGlzIHRoZSBvbGQgcHJpdmF0ZSBBUEksIGludm9rZWQgYnkgdGhlIG1hY3JvcyBiZWZvcmUgMy4yLjQuCi0gICBLZXB0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBleHRlbnNpb25zLiAqLworICAgS2VwdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXh0ZW5zaW9ucyB1c2luZyB0aGUgc3RhYmxlIEFCSS4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfZGVzdHJveV9jaGFpbih2b2lkKTsKIFB5QVBJX0RBVEEoaW50KSBfUHlUcmFzaF9kZWxldGVfbmVzdGluZzsKQEAgLTkzOSw2ICs5ODksMTQgQEAKICAgICAgICAgICAgIF9QeVRyYXNoX3RocmVhZF9kZXBvc2l0X29iamVjdCgoUHlPYmplY3QqKW9wKTsgXAogICAgIH0gd2hpbGUgKDApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpCitfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKEZJTEUgKm91dCwgY29uc3QgY2hhciAqYmxvY2tfbmFtZSwgaW50IG51bV9ibG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplb2ZfYmxvY2spOworUHlBUElfRlVOQyh2b2lkKQorX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYgLyogaWZuZGVmIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDhmYzNmYzEuLjNkNWY1MDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC0xMDEsMTMgKzEwMSwxNSBAQAogCiAvKiBNYWNyb3MgKi8KICNpZmRlZiBXSVRIX1BZTUFMTE9DCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYgLyogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSSAqLwogI2lmZGVmIFBZTUFMTE9DX0RFQlVHICAgLyogV0lUSF9QWU1BTExPQyAmJiBQWU1BTExPQ19ERUJVRyAqLwogUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z01hbGxvYyhzaXplX3QgbmJ5dGVzKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdSZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdGcmVlKHZvaWQgKnApOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnQ2hlY2tBZGRyZXNzKGNvbnN0IHZvaWQgKnApOwotUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBfUHlPYmplY3RfRGVidWdNYWxsb2NBcGkoY2hhciBhcGksIHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z1JlYWxsb2NBcGkoY2hhciBhcGksIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdGcmVlQXBpKGNoYXIgYXBpLCB2b2lkICpwKTsKQEAgLTE3OSwxMiArMTgxLDkgQEAKICNlbmRpZgogCiAjZGVmaW5lIF9QeU9iamVjdF9WQVJfU0laRSh0eXBlb2JqLCBuaXRlbXMpICAgICBcCi0gICAgKHNpemVfdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCAoICh0eXBlb2JqKS0+dHBfYmFzaWNzaXplICsgICAgICAgICAgICAgICBcCi0gICAgICAgIChuaXRlbXMpKih0eXBlb2JqKS0+dHBfaXRlbXNpemUgKyAgICAgICBcCi0gICAgICAgIChTSVpFT0ZfVk9JRF9QIC0gMSkgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICApICYgfihTSVpFT0ZfVk9JRF9QIC0gMSkgICAgICAgICAgICAgICAgICBcCi0gICAgKQorICAgIF9QeV9TSVpFX1JPVU5EX1VQKCh0eXBlb2JqKS0+dHBfYmFzaWNzaXplICsgXAorICAgICAgICAobml0ZW1zKSoodHlwZW9iaiktPnRwX2l0ZW1zaXplLCAgICAgICAgXAorICAgICAgICBTSVpFT0ZfVk9JRF9QKQogCiAjZGVmaW5lIFB5T2JqZWN0X05FVyh0eXBlLCB0eXBlb2JqKSBcCiAoICh0eXBlICopIFB5T2JqZWN0X0luaXQoIFwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDZiMTA5NDQuLmE5MDE4NGQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtNywxMTcgKzcsMTE3IEBACiAKIC8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KIAotI2RlZmluZSBTVE9QX0NPREUJMAotI2RlZmluZSBQT1BfVE9QCQkxCi0jZGVmaW5lIFJPVF9UV08JCTIKLSNkZWZpbmUgUk9UX1RIUkVFCTMKLSNkZWZpbmUgRFVQX1RPUAkJNAorI2RlZmluZSBQT1BfVE9QICAgICAgICAgMQorI2RlZmluZSBST1RfVFdPICAgICAgICAgMgorI2RlZmluZSBST1RfVEhSRUUgICAgICAgMworI2RlZmluZSBEVVBfVE9QICAgICAgICAgNAogI2RlZmluZSBEVVBfVE9QX1RXTyAgICAgNQotI2RlZmluZSBOT1AJCTkKKyNkZWZpbmUgTk9QICAgICAgICAgICAgIDkKIAotI2RlZmluZSBVTkFSWV9QT1NJVElWRQkxMAotI2RlZmluZSBVTkFSWV9ORUdBVElWRQkxMQotI2RlZmluZSBVTkFSWV9OT1QJMTIKKyNkZWZpbmUgVU5BUllfUE9TSVRJVkUgIDEwCisjZGVmaW5lIFVOQVJZX05FR0FUSVZFICAxMQorI2RlZmluZSBVTkFSWV9OT1QgICAgICAgMTIKIAotI2RlZmluZSBVTkFSWV9JTlZFUlQJMTUKKyNkZWZpbmUgVU5BUllfSU5WRVJUICAgIDE1CiAKLSNkZWZpbmUgQklOQVJZX1BPV0VSCTE5CisjZGVmaW5lIEJJTkFSWV9QT1dFUiAgICAxOQogCi0jZGVmaW5lIEJJTkFSWV9NVUxUSVBMWQkyMAorI2RlZmluZSBCSU5BUllfTVVMVElQTFkgMjAKIAotI2RlZmluZSBCSU5BUllfTU9EVUxPCTIyCi0jZGVmaW5lIEJJTkFSWV9BREQJMjMKLSNkZWZpbmUgQklOQVJZX1NVQlRSQUNUCTI0Ci0jZGVmaW5lIEJJTkFSWV9TVUJTQ1IJMjUKKyNkZWZpbmUgQklOQVJZX01PRFVMTyAgIDIyCisjZGVmaW5lIEJJTkFSWV9BREQgICAgICAyMworI2RlZmluZSBCSU5BUllfU1VCVFJBQ1QgMjQKKyNkZWZpbmUgQklOQVJZX1NVQlNDUiAgIDI1CiAjZGVmaW5lIEJJTkFSWV9GTE9PUl9ESVZJREUgMjYKICNkZWZpbmUgQklOQVJZX1RSVUVfRElWSURFIDI3CiAjZGVmaW5lIElOUExBQ0VfRkxPT1JfRElWSURFIDI4CiAjZGVmaW5lIElOUExBQ0VfVFJVRV9ESVZJREUgMjkKIAotI2RlZmluZSBTVE9SRV9NQVAJNTQKLSNkZWZpbmUgSU5QTEFDRV9BREQJNTUKLSNkZWZpbmUgSU5QTEFDRV9TVUJUUkFDVAk1NgotI2RlZmluZSBJTlBMQUNFX01VTFRJUExZCTU3CisjZGVmaW5lIFNUT1JFX01BUCAgICAgICA1NAorI2RlZmluZSBJTlBMQUNFX0FERCAgICAgNTUKKyNkZWZpbmUgSU5QTEFDRV9TVUJUUkFDVCAgICAgICAgNTYKKyNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWSAgICAgICAgNTcKIAotI2RlZmluZSBJTlBMQUNFX01PRFVMTwk1OQotI2RlZmluZSBTVE9SRV9TVUJTQ1IJNjAKLSNkZWZpbmUgREVMRVRFX1NVQlNDUgk2MQorI2RlZmluZSBJTlBMQUNFX01PRFVMTyAgNTkKKyNkZWZpbmUgU1RPUkVfU1VCU0NSICAgIDYwCisjZGVmaW5lIERFTEVURV9TVUJTQ1IgICA2MQogCi0jZGVmaW5lIEJJTkFSWV9MU0hJRlQJNjIKLSNkZWZpbmUgQklOQVJZX1JTSElGVAk2MwotI2RlZmluZSBCSU5BUllfQU5ECTY0Ci0jZGVmaW5lIEJJTkFSWV9YT1IJNjUKLSNkZWZpbmUgQklOQVJZX09SCTY2Ci0jZGVmaW5lIElOUExBQ0VfUE9XRVIJNjcKLSNkZWZpbmUgR0VUX0lURVIJNjgKLSNkZWZpbmUgU1RPUkVfTE9DQUxTCTY5Ci0jZGVmaW5lIFBSSU5UX0VYUFIJNzAKKyNkZWZpbmUgQklOQVJZX0xTSElGVCAgIDYyCisjZGVmaW5lIEJJTkFSWV9SU0hJRlQgICA2MworI2RlZmluZSBCSU5BUllfQU5EICAgICAgNjQKKyNkZWZpbmUgQklOQVJZX1hPUiAgICAgIDY1CisjZGVmaW5lIEJJTkFSWV9PUiAgICAgICA2NgorI2RlZmluZSBJTlBMQUNFX1BPV0VSICAgNjcKKyNkZWZpbmUgR0VUX0lURVIgICAgICAgIDY4CisjZGVmaW5lIFNUT1JFX0xPQ0FMUyAgICA2OQorI2RlZmluZSBQUklOVF9FWFBSICAgICAgNzAKICNkZWZpbmUgTE9BRF9CVUlMRF9DTEFTUyA3MQorI2RlZmluZSBZSUVMRF9GUk9NICAgICAgNzIKIAotI2RlZmluZSBJTlBMQUNFX0xTSElGVAk3NQotI2RlZmluZSBJTlBMQUNFX1JTSElGVAk3NgotI2RlZmluZSBJTlBMQUNFX0FORAk3NwotI2RlZmluZSBJTlBMQUNFX1hPUgk3OAotI2RlZmluZSBJTlBMQUNFX09SCTc5Ci0jZGVmaW5lIEJSRUFLX0xPT1AJODAKKyNkZWZpbmUgSU5QTEFDRV9MU0hJRlQgIDc1CisjZGVmaW5lIElOUExBQ0VfUlNISUZUICA3NgorI2RlZmluZSBJTlBMQUNFX0FORCAgICAgNzcKKyNkZWZpbmUgSU5QTEFDRV9YT1IgICAgIDc4CisjZGVmaW5lIElOUExBQ0VfT1IgICAgICA3OQorI2RlZmluZSBCUkVBS19MT09QICAgICAgODAKICNkZWZpbmUgV0lUSF9DTEVBTlVQICAgIDgxCiAKLSNkZWZpbmUgUkVUVVJOX1ZBTFVFCTgzCi0jZGVmaW5lIElNUE9SVF9TVEFSCTg0CisjZGVmaW5lIFJFVFVSTl9WQUxVRSAgICA4MworI2RlZmluZSBJTVBPUlRfU1RBUiAgICAgODQKIAotI2RlZmluZSBZSUVMRF9WQUxVRQk4NgotI2RlZmluZSBQT1BfQkxPQ0sJODcKLSNkZWZpbmUgRU5EX0ZJTkFMTFkJODgKLSNkZWZpbmUgUE9QX0VYQ0VQVAk4OQorI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgODYKKyNkZWZpbmUgUE9QX0JMT0NLICAgICAgIDg3CisjZGVmaW5lIEVORF9GSU5BTExZICAgICA4OAorI2RlZmluZSBQT1BfRVhDRVBUICAgICAgODkKIAotI2RlZmluZSBIQVZFX0FSR1VNRU5UCTkwCS8qIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6ICovCisjZGVmaW5lIEhBVkVfQVJHVU1FTlQgICA5MCAgICAgIC8qIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6ICovCiAKLSNkZWZpbmUgU1RPUkVfTkFNRQk5MAkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgREVMRVRFX05BTUUJOTEJLyogIiIgKi8KLSNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFCTkyCS8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLwotI2RlZmluZSBGT1JfSVRFUgk5MworI2RlZmluZSBTVE9SRV9OQU1FICAgICAgOTAgICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgREVMRVRFX05BTUUgICAgIDkxICAgICAgLyogIiIgKi8KKyNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFIDkyICAgICAgLyogTnVtYmVyIG9mIHNlcXVlbmNlIGl0ZW1zICovCisjZGVmaW5lIEZPUl9JVEVSICAgICAgICA5MwogI2RlZmluZSBVTlBBQ0tfRVggICAgICAgOTQgICAgICAvKiBOdW0gaXRlbXMgYmVmb3JlIHZhcmlhYmxlIHBhcnQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTnVtIGl0ZW1zIGFmdGVyIHZhcmlhYmxlIHBhcnQgPDwgOCkgKi8KIAotI2RlZmluZSBTVE9SRV9BVFRSCTk1CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBERUxFVEVfQVRUUgk5NgkvKiAiIiAqLwotI2RlZmluZSBTVE9SRV9HTE9CQUwJOTcJLyogIiIgKi8KLSNkZWZpbmUgREVMRVRFX0dMT0JBTAk5OAkvKiAiIiAqLworI2RlZmluZSBTVE9SRV9BVFRSICAgICAgOTUgICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgREVMRVRFX0FUVFIgICAgIDk2ICAgICAgLyogIiIgKi8KKyNkZWZpbmUgU1RPUkVfR0xPQkFMICAgIDk3ICAgICAgLyogIiIgKi8KKyNkZWZpbmUgREVMRVRFX0dMT0JBTCAgIDk4ICAgICAgLyogIiIgKi8KIAotI2RlZmluZSBMT0FEX0NPTlNUCTEwMAkvKiBJbmRleCBpbiBjb25zdCBsaXN0ICovCi0jZGVmaW5lIExPQURfTkFNRQkxMDEJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIEJVSUxEX1RVUExFCTEwMgkvKiBOdW1iZXIgb2YgdHVwbGUgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTElTVAkxMDMJLyogTnVtYmVyIG9mIGxpc3QgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfU0VUCTEwNCAgICAgLyogTnVtYmVyIG9mIHNldCBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9NQVAJMTA1CS8qIEFsd2F5cyB6ZXJvIGZvciBub3cgKi8KLSNkZWZpbmUgTE9BRF9BVFRSCTEwNgkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQ09NUEFSRV9PUAkxMDcJLyogQ29tcGFyaXNvbiBvcGVyYXRvciAqLwotI2RlZmluZSBJTVBPUlRfTkFNRQkxMDgJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIElNUE9SVF9GUk9NCTEwOQkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgTE9BRF9DT05TVCAgICAgIDEwMCAgICAgLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLworI2RlZmluZSBMT0FEX05BTUUgICAgICAgMTAxICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgQlVJTERfVFVQTEUgICAgIDEwMiAgICAgLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX0xJU1QgICAgICAxMDMgICAgIC8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCisjZGVmaW5lIEJVSUxEX1NFVCAgICAgICAxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KKyNkZWZpbmUgQlVJTERfTUFQICAgICAgIDEwNSAgICAgLyogQWx3YXlzIHplcm8gZm9yIG5vdyAqLworI2RlZmluZSBMT0FEX0FUVFIgICAgICAgMTA2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgQ09NUEFSRV9PUCAgICAgIDEwNyAgICAgLyogQ29tcGFyaXNvbiBvcGVyYXRvciAqLworI2RlZmluZSBJTVBPUlRfTkFNRSAgICAgMTA4ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgSU1QT1JUX0ZST00gICAgIDEwOSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCiAKLSNkZWZpbmUgSlVNUF9GT1JXQVJECTExMAkvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCAqLwotI2RlZmluZSBKVU1QX0lGX0ZBTFNFX09SX1BPUCAxMTEJLyogVGFyZ2V0IGJ5dGUgb2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIGNvZGUgKi8KLSNkZWZpbmUgSlVNUF9JRl9UUlVFX09SX1BPUCAxMTIJLyogIiIgKi8KLSNkZWZpbmUgSlVNUF9BQlNPTFVURQkxMTMJLyogIiIgKi8KLSNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgMTE0CS8qICIiICovCi0jZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgMTE1CS8qICIiICovCisjZGVmaW5lIEpVTVBfRk9SV0FSRCAgICAxMTAgICAgIC8qIE51bWJlciBvZiBieXRlcyB0byBza2lwICovCisjZGVmaW5lIEpVTVBfSUZfRkFMU0VfT1JfUE9QIDExMSAgICAgICAgLyogVGFyZ2V0IGJ5dGUgb2Zmc2V0IGZyb20gYmVnaW5uaW5nIG9mIGNvZGUgKi8KKyNkZWZpbmUgSlVNUF9JRl9UUlVFX09SX1BPUCAxMTIgLyogIiIgKi8KKyNkZWZpbmUgSlVNUF9BQlNPTFVURSAgIDExMyAgICAgLyogIiIgKi8KKyNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgMTE0ICAgLyogIiIgKi8KKyNkZWZpbmUgUE9QX0pVTVBfSUZfVFJVRSAxMTUgICAgLyogIiIgKi8KIAotI2RlZmluZSBMT0FEX0dMT0JBTAkxMTYJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCisjZGVmaW5lIExPQURfR0xPQkFMICAgICAxMTYgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwogCi0jZGVmaW5lIENPTlRJTlVFX0xPT1AJMTE5CS8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLwotI2RlZmluZSBTRVRVUF9MT09QCTEyMAkvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCi0jZGVmaW5lIFNFVFVQX0VYQ0VQVAkxMjEJLyogIiIgKi8KLSNkZWZpbmUgU0VUVVBfRklOQUxMWQkxMjIJLyogIiIgKi8KKyNkZWZpbmUgQ09OVElOVUVfTE9PUCAgIDExOSAgICAgLyogU3RhcnQgb2YgbG9vcCAoYWJzb2x1dGUpICovCisjZGVmaW5lIFNFVFVQX0xPT1AgICAgICAxMjAgICAgIC8qIFRhcmdldCBhZGRyZXNzIChyZWxhdGl2ZSkgKi8KKyNkZWZpbmUgU0VUVVBfRVhDRVBUICAgIDEyMSAgICAgLyogIiIgKi8KKyNkZWZpbmUgU0VUVVBfRklOQUxMWSAgIDEyMiAgICAgLyogIiIgKi8KIAotI2RlZmluZSBMT0FEX0ZBU1QJMTI0CS8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotI2RlZmluZSBTVE9SRV9GQVNUCTEyNQkvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLSNkZWZpbmUgREVMRVRFX0ZBU1QJMTI2CS8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLworI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgMTI0ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KKyNkZWZpbmUgU1RPUkVfRkFTVCAgICAgIDEyNSAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCisjZGVmaW5lIERFTEVURV9GQVNUICAgICAxMjYgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwogCi0jZGVmaW5lIFJBSVNFX1ZBUkFSR1MJMTMwCS8qIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIgb3IgMykgKi8KKyNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgIDEzMCAgICAgLyogTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiBvciAzKSAqLwogLyogQ0FMTF9GVU5DVElPTl9YWFggb3Bjb2RlcyBkZWZpbmVkIGJlbG93IGRlcGVuZCBvbiB0aGlzIGRlZmluaXRpb24gKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTgkxMzEJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgTUFLRV9GVU5DVElPTgkxMzIJLyogI2RlZmF1bHRzICsgI2t3ZGVmYXVsdHM8PDggKyAjYW5ub3RhdGlvbnM8PDE2ICovCi0jZGVmaW5lIEJVSUxEX1NMSUNFIAkxMzMJLyogTnVtYmVyIG9mIGl0ZW1zICovCisjZGVmaW5lIENBTExfRlVOQ1RJT04gICAxMzEgICAgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIE1BS0VfRlVOQ1RJT04gICAxMzIgICAgIC8qICNkZWZhdWx0cyArICNrd2RlZmF1bHRzPDw4ICsgI2Fubm90YXRpb25zPDwxNiAqLworI2RlZmluZSBCVUlMRF9TTElDRSAgICAgMTMzICAgICAvKiBOdW1iZXIgb2YgaXRlbXMgKi8KIAogI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgMTM0ICAgICAvKiBzYW1lIGFzIE1BS0VfRlVOQ1RJT04gKi8KICNkZWZpbmUgTE9BRF9DTE9TVVJFICAgIDEzNSAgICAgLyogTG9hZCBmcmVlIHZhcmlhYmxlIGZyb20gY2xvc3VyZSAqLwpAQCAtMTI3LDkgKzEyNyw5IEBACiAKIC8qIFRoZSBuZXh0IDMgb3Bjb2RlcyBtdXN0IGJlIGNvbnRpZ3VvdXMgYW5kIHNhdGlzZnkKICAgIChDQUxMX0ZVTkNUSU9OX1ZBUiAtIENBTExfRlVOQ1RJT04pICYgMyA9PSAxICAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAgICAxNDAJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgICAgMTQxCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgICAgIDE0MgkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAgICAxNDAgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgICAgIDE0MSAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgICAgMTQyICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwogCiAjZGVmaW5lIFNFVFVQX1dJVEggMTQzCiAKQEAgLTE0OSw3ICsxNDksNyBAQAogCiAKIGVudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwgUHlDbXBfR1Q9UHlfR1QsIFB5Q21wX0dFPVB5X0dFLAotCSAgICAgUHlDbXBfSU4sIFB5Q21wX05PVF9JTiwgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OworICAgICAgICAgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKIAogI2RlZmluZSBIQVNfQVJHKG9wKSAoKG9wKSA+PSBIQVZFX0FSR1VNRU5UKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhcnNldG9rLmggYi9JbmNsdWRlL3BhcnNldG9rLmgKaW5kZXggNGI3Njk0Zi4uOTExZGZjMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXJzZXRvay5oCisrKyBiL0luY2x1ZGUvcGFyc2V0b2suaApAQCAtOSw3ICs5LDEwIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgZXJyb3I7Ci0gICAgY29uc3QgY2hhciAqZmlsZW5hbWU7ICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLworI2lmbmRlZiBQR0VOCisgICAgLyogVGhlIGZpbGVuYW1lIGlzIHVzZWxlc3MgZm9yIHBnZW4sIHNlZSBjb21tZW50IGluIHRva19zdGF0ZSBzdHJ1Y3R1cmUgKi8KKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisjZW5kaWYKICAgICBpbnQgbGluZW5vOwogICAgIGludCBvZmZzZXQ7CiAgICAgY2hhciAqdGV4dDsgICAgICAgICAgICAgICAgIC8qIFVURi04LWVuY29kZWQgc3RyaW5nICovCkBAIC02Niw4ICs2OSwxMCBAQAogICAgIHBlcnJkZXRhaWwgKmVycl9yZXQsCiAgICAgaW50ICpmbGFncyk7CiAKLS8qIE5vdGUgdGhhdCBoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgZGVmaW5lZCBpbiBweXRob25ydW4uYyBub3QgcGFyc2V0b2suYy4gKi8KKy8qIE5vdGUgdGhhdCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbiBweXRob25ydW4uYywKKyAgIG5vdCBpbiBwYXJzZXRvay5jICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5UGFyc2VyX1NldEVycm9yKHBlcnJkZXRhaWwgKik7CitQeUFQSV9GVU5DKHZvaWQpIFB5UGFyc2VyX0NsZWFyRXJyb3IocGVycmRldGFpbCAqKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCmluZGV4IDA4MzkwNzEuLmI1OTE5YTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCisrKyBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCkBAIC0xNywxOSArMTcsMTUgQEAKIC8qIFZlcnNpb24gcGFyc2VkIG91dCBpbnRvIG51bWVyaWMgdmFsdWVzICovCiAvKi0tc3RhcnQgY29uc3RhbnRzLS0qLwogI2RlZmluZSBQWV9NQUpPUl9WRVJTSU9OCTMKLSNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgkyCi0jZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMworI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTMKKyNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkwCiAjZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9GSU5BTAogI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkwCiAKIC8qIFZlcnNpb24gYXMgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy4yLjMrIgorI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjMuMCsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAotLyogU3VidmVyc2lvbiBSZXZpc2lvbiBudW1iZXIgb2YgdGhpcyBmaWxlIChub3Qgb2YgdGhlIHJlcG9zaXRvcnkpLiBFbXB0eQotICAgc2luY2UgTWVyY3VyaWFsIG1pZ3JhdGlvbi4gKi8KLSNkZWZpbmUgUFlfUEFUQ0hMRVZFTF9SRVZJU0lPTiAgIiIKLQogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCiAgICBVc2UgdGhpcyBmb3IgbnVtZXJpYyBjb21wYXJpc29ucywgZS5nLiAjaWYgUFlfVkVSU0lPTl9IRVggPj0gLi4uICovCiAjZGVmaW5lIFBZX1ZFUlNJT05fSEVYICgoUFlfTUFKT1JfVkVSU0lPTiA8PCAyNCkgfCBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5X2N1cnNlcy5oIGIvSW5jbHVkZS9weV9jdXJzZXMuaAppbmRleCBhODkxYzQyLi5mMmMwOGY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5X2N1cnNlcy5oCisrKyBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKQEAgLTc2LDYgKzc2LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKIAlQeU9iamVjdF9IRUFECiAJV0lORE9XICp3aW47CisJY2hhciAqZW5jb2Rpbmc7CiB9IFB5Q3Vyc2VzV2luZG93T2JqZWN0OwogCiAjZGVmaW5lIFB5Q3Vyc2VzV2luZG93X0NoZWNrKHYpCSAoUHlfVFlQRSh2KSA9PSAmUHlDdXJzZXNXaW5kb3dfVHlwZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggZTIzY2JkYy4uOTdjMmY4YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTE2LDcgKzE2LDYgQEAKIFB5QVBJX0RBVEEoaW50KSBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0Zyb3plbkZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOwotUHlBUElfREFUQShpbnQpIFB5X0RpdmlzaW9uV2FybmluZ0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnOwogUHlBUElfREFUQShpbnQpIFB5X05vVXNlclNpdGVEaXJlY3Rvcnk7CiBQeUFQSV9EQVRBKGludCkgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZzsKQEAgLTI3LDggKzI2LDYgQEAKICAgIFBZVEhPTlBBVEggYW5kIFBZVEhPTkhPTUUgZnJvbSB0aGUgZW52aXJvbm1lbnQgKi8KICNkZWZpbmUgUHlfR0VURU5WKHMpIChQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcgPyBOVUxMIDogZ2V0ZW52KHMpKQogCi1QeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSk7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZXJyb3JzLmggYi9JbmNsdWRlL3B5ZXJyb3JzLmgKaW5kZXggNGJiM2MwMS4uYWYzNzQxMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWVycm9ycy5oCisrKyBiL0luY2x1ZGUvcHllcnJvcnMuaApAQCAtMTAsNyArMTAsOCBAQAogLyogUHlFeGNlcHRpb25fSEVBRCBkZWZpbmVzIHRoZSBpbml0aWFsIHNlZ21lbnQgb2YgZXZlcnkgZXhjZXB0aW9uIGNsYXNzLiAqLwogI2RlZmluZSBQeUV4Y2VwdGlvbl9IRUFEIFB5T2JqZWN0X0hFQUQgUHlPYmplY3QgKmRpY3Q7XAogICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzOyBQeU9iamVjdCAqdHJhY2ViYWNrO1wKLSAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dDsgUHlPYmplY3QgKmNhdXNlOworICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0OyBQeU9iamVjdCAqY2F1c2U7XAorICAgICAgICAgICAgIGNoYXIgc3VwcHJlc3NfY29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKQEAgLTI4LDYgKzI5LDEzIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeUV4Y2VwdGlvbl9IRUFECisgICAgUHlPYmplY3QgKm1zZzsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aDsKK30gUHlJbXBvcnRFcnJvck9iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5RXhjZXB0aW9uX0hFQUQKICAgICBQeU9iamVjdCAqZW5jb2Rpbmc7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwpAQCAtNDUsMTggKzUzLDIzIEBACiAgICAgUHlPYmplY3QgKm15ZXJybm87CiAgICAgUHlPYmplY3QgKnN0cmVycm9yOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKLX0gUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0OwotCiAjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvcjsKKyNlbmRpZgorICAgIFB5X3NzaXplX3Qgd3JpdHRlbjsgICAvKiBvbmx5IGZvciBCbG9ja2luZ0lPRXJyb3IsIC0xIG90aGVyd2lzZSAqLworfSBQeU9TRXJyb3JPYmplY3Q7CisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeUV4Y2VwdGlvbl9IRUFECi0gICAgUHlPYmplY3QgKm15ZXJybm87Ci0gICAgUHlPYmplY3QgKnN0cmVycm9yOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKLSAgICBQeU9iamVjdCAqd2luZXJyb3I7Ci19IFB5V2luZG93c0Vycm9yT2JqZWN0OworICAgIFB5T2JqZWN0ICp2YWx1ZTsKK30gUHlTdG9wSXRlcmF0aW9uT2JqZWN0OworCisvKiBDb21wYXRpYmlsaXR5IHR5cGVkZWZzICovCit0eXBlZGVmIFB5T1NFcnJvck9iamVjdCBQeUVudmlyb25tZW50RXJyb3JPYmplY3Q7CisjaWZkZWYgTVNfV0lORE9XUwordHlwZWRlZiBQeU9TRXJyb3JPYmplY3QgUHlXaW5kb3dzRXJyb3JPYmplY3Q7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBFcnJvciBoYW5kbGluZyBkZWZpbml0aW9ucyAqLwogCkBAIC03MCw3ICs4MywxOSBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9DbGVhcih2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfRmV0Y2goUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1Jlc3RvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSk7CitQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKik7CitQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykgfHwgXAorICAgIChkZWZpbmVkKF9fR05VQ19NQUpPUl9fKSAmJiBcCisgICAgICgoX19HTlVDX01BSk9SX18gPj0gMykgfHwgXAorICAgICAgKF9fR05VQ19NQUpPUl9fID09IDIpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA1KSkpCisjZGVmaW5lIF9QeV9OT19SRVRVUk4gX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKKyNlbHNlCisjZGVmaW5lIF9QeV9OT19SRVRVUk4KKyNlbmRpZgorCitQeUFQSV9GVU5DKHZvaWQpIFB5X0ZhdGFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkgX1B5X05PX1JFVFVSTjsKIAogI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjZGVmaW5lIF9QeUVycl9PQ0NVUlJFRCgpIFB5RXJyX09jY3VycmVkKCkKQEAgLTEyMiwxMCArMTQ3LDkgQEAKIAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Bc3NlcnRpb25FcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQXR0cmlidXRlRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0J1ZmZlckVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FT0ZFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwotUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19FbnZpcm9ubWVudEVycm9yOwotUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKQEAgLTE1MCw2ICsxNzQsMjcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19WYWx1ZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcjsKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19CbG9ja2luZ0lPRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jyb2tlblBpcGVFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ2hpbGRQcm9jZXNzRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Nvbm5lY3Rpb25FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvbkFib3J0ZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvblJlZnVzZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ZpbGVFeGlzdHNFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ludGVycnVwdGVkRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lzQURpcmVjdG9yeUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1Blcm1pc3Npb25FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUHJvY2Vzc0xvb2t1cEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19UaW1lb3V0RXJyb3I7CisKKworLyogQ29tcGF0aWJpbGl0eSBhbGlhc2VzICovCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Vudmlyb25tZW50RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lPRXJyb3I7CiAjaWZkZWYgTVNfV0lORE9XUwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19XaW5kb3dzRXJyb3I7CiAjZW5kaWYKQEAgLTE1Nyw4ICsyMDIsNiBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19WTVNFcnJvcjsKICNlbmRpZgogCi1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0J1ZmZlckVycm9yOwotCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdDsKIAogLyogUHJlZGVmaW5lZCB3YXJuaW5nIGNhdGVnb3JpZXMgKi8KQEAgLTE5OCw4ICsyNDEsNiBAQAogICAgICk7CiAKICNpZmRlZiBNU19XSU5ET1dTCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KAotICAgIGludCwgY29uc3QgY2hhciAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCiAgICAgaW50IGllcnIsCiAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUgICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwpAQCAtMjI0LDYgKzI2NSwxMSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeU9iamVjdCAqLCBpbnQpOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRFeGNXaXRoQXJnc0t3YXJncyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICopOworCiAvKiBFeHBvcnQgdGhlIG9sZCBmdW5jdGlvbiBzbyB0aGF0IHRoZSBleGlzdGluZyBBUEkgcmVtYWlucyBhdmFpbGFibGU6ICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0JhZEludGVybmFsQ2FsbCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubyk7CkBAIC0yOTMsNiArMzM5LDEyIEBACiAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgY29uc3QgY2hhciAqcmVhc29uICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKKyAgICBQeU9iamVjdCAqb2JqZWN0LAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQsCisgICAgY29uc3QgY2hhciAqcmVhc29uICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgKTsKICNlbmRpZgogCiAvKiBnZXQgdGhlIGVuY29kaW5nIGF0dHJpYnV0ZSAqLwpAQCAtMzQ4LDcgKzQwMCw2IEBACiAgICAgY29uc3QgY2hhciAqcmVhc29uICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIAotCiAvKiBUaGVzZSBBUElzIGFyZW4ndCByZWFsbHkgcGFydCBvZiB0aGUgZXJyb3IgaW1wbGVtZW50YXRpb24sIGJ1dAogICAgb2Z0ZW4gbmVlZGVkIHRvIGZvcm1hdCBlcnJvciBtZXNzYWdlczsgdGhlIG5hdGl2ZSBDIGxpYiBBUElzIGFyZQogICAgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLCB3aGljaCBpcyB3aHkgd2UgcHJvdmlkZSBlbXVsYXRpb25zCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZXhwYXQuaCBiL0luY2x1ZGUvcHlleHBhdC5oCmluZGV4IDUzNDBlZjUuLjE2OGI1YjIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlleHBhdC5oCisrKyBiL0luY2x1ZGUvcHlleHBhdC5oCkBAIC00Myw2ICs0Myw4IEBACiAgICAgICAgIFhNTF9QYXJzZXIgcGFyc2VyLCBYTUxfVW5rbm93bkVuY29kaW5nSGFuZGxlciBoYW5kbGVyLAogICAgICAgICB2b2lkICplbmNvZGluZ0hhbmRsZXJEYXRhKTsKICAgICB2b2lkICgqU2V0VXNlckRhdGEpKFhNTF9QYXJzZXIgcGFyc2VyLCB2b2lkICp1c2VyRGF0YSk7CisgICAgdm9pZCAoKlNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKShYTUxfUGFyc2VyIHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydERvY3R5cGVEZWNsSGFuZGxlciBzdGFydCk7CiAgICAgLyogYWx3YXlzIGFkZCBuZXcgc3R1ZmYgdG8gdGhlIGVuZCEgKi8KIH07CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYWNyby5oIGIvSW5jbHVkZS9weW1hY3JvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlOGVlMwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHltYWNyby5oCkBAIC0wLDAgKzEsNjkgQEAKKyNpZm5kZWYgUHlfUFlNQUNST19ICisjZGVmaW5lIFB5X1BZTUFDUk9fSAorCisjZGVmaW5lIFB5X01JTih4LCB5KSAoKCh4KSA+ICh5KSkgPyAoeSkgOiAoeCkpCisjZGVmaW5lIFB5X01BWCh4LCB5KSAoKCh4KSA+ICh5KSkgPyAoeCkgOiAoeSkpCisKKy8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KKyNkZWZpbmUgUHlfQ0hBUk1BU0soYykgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKKworCisvKiBBc3NlcnQgYSBidWlsZC10aW1lIGRlcGVuZGVuY3ksIGFzIGFuIGV4cHJlc3Npb24uCisKKyAgIFlvdXIgY29tcGlsZSB3aWxsIGZhaWwgaWYgdGhlIGNvbmRpdGlvbiBpc24ndCB0cnVlLCBvciBjYW4ndCBiZSBldmFsdWF0ZWQKKyAgIGJ5IHRoZSBjb21waWxlci4gVGhpcyBjYW4gYmUgdXNlZCBpbiBhbiBleHByZXNzaW9uOiBpdHMgdmFsdWUgaXMgMC4KKworICAgRXhhbXBsZToKKworICAgI2RlZmluZSBmb29fdG9fY2hhcihmb28pICBcCisgICAgICAgKChjaGFyICopKGZvbykgICAgICAgIFwKKyAgICAgICAgKyBQeV9CVUlMRF9BU1NFUlRfRVhQUihvZmZzZXRvZihzdHJ1Y3QgZm9vLCBzdHJpbmcpID09IDApKQorCisgICBXcml0dGVuIGJ5IFJ1c3R5IFJ1c3NlbGwsIHB1YmxpYyBkb21haW4sIGh0dHA6Ly9jY29kZWFyY2hpdmUubmV0LyAqLworI2RlZmluZSBQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKSBcCisgICAgKHNpemVvZihjaGFyIFsxIC0gMiohKGNvbmQpXSkgLSAxKQorCisvKiBHZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZpc2libGUgYXJyYXkKKworICAgVGhpcyBkb2VzIG5vdCB3b3JrIG9uIHBvaW50ZXJzLCBvciBhcnJheXMgZGVjbGFyZWQgYXMgW10sIG9yIGZ1bmN0aW9uCisgICBwYXJhbWV0ZXJzLiBXaXRoIGNvcnJlY3QgY29tcGlsZXIgc3VwcG9ydCwgc3VjaCB1c2FnZSB3aWxsIGNhdXNlIGEgYnVpbGQKKyAgIGVycm9yIChzZWUgUHlfQlVJTERfQVNTRVJUX0VYUFIpLgorCisgICBXcml0dGVuIGJ5IFJ1c3R5IFJ1c3NlbGwsIHB1YmxpYyBkb21haW4sIGh0dHA6Ly9jY29kZWFyY2hpdmUubmV0LyAqLworI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pKQorLyogVHdvIGdjYyBleHRlbnNpb25zLgorICAgJmFbMF0gZGVncmFkZXMgdG8gYSBwb2ludGVyOiBhIGRpZmZlcmVudCB0eXBlIGZyb20gYW4gYXJyYXkgKi8KKyNkZWZpbmUgUHlfQVJSQVlfTEVOR1RIKGFycmF5KSBcCisgICAgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKGFycmF5KVswXSkgXAorICAgICArIFB5X0JVSUxEX0FTU0VSVF9FWFBSKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZihhcnJheSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YoJihhcnJheSlbMF0pKSkpCisjZWxzZQorI2RlZmluZSBQeV9BUlJBWV9MRU5HVEgoYXJyYXkpIFwKKyAgICAoc2l6ZW9mKGFycmF5KSAvIHNpemVvZigoYXJyYXkpWzBdKSkKKyNlbmRpZgorCisKKy8qIERlZmluZSBtYWNyb3MgZm9yIGlubGluZSBkb2N1bWVudGF0aW9uLiAqLworI2RlZmluZSBQeURvY19WQVIobmFtZSkgc3RhdGljIGNoYXIgbmFtZVtdCisjZGVmaW5lIFB5RG9jX1NUUlZBUihuYW1lLHN0cikgUHlEb2NfVkFSKG5hbWUpID0gUHlEb2NfU1RSKHN0cikKKyNpZmRlZiBXSVRIX0RPQ19TVFJJTkdTCisjZGVmaW5lIFB5RG9jX1NUUihzdHIpIHN0cgorI2Vsc2UKKyNkZWZpbmUgUHlEb2NfU1RSKHN0cikgIiIKKyNlbmRpZgorCisvKiBCZWxvdyAiYSIgaXMgYSBwb3dlciBvZiAyLiAqLworLyogUm91bmQgZG93biBzaXplICJuIiB0byBiZSBhIG11bHRpcGxlIG9mICJhIi4gKi8KKyNkZWZpbmUgX1B5X1NJWkVfUk9VTkRfRE9XTihuLCBhKSAoKHNpemVfdCkobikgJiB+KHNpemVfdCkoKGEpIC0gMSkpCisvKiBSb3VuZCB1cCBzaXplICJuIiB0byBiZSBhIG11bHRpcGxlIG9mICJhIi4gKi8KKyNkZWZpbmUgX1B5X1NJWkVfUk9VTkRfVVAobiwgYSkgKCgoc2l6ZV90KShuKSArIFwKKyAgICAgICAgKHNpemVfdCkoKGEpIC0gMSkpICYgfihzaXplX3QpKChhKSAtIDEpKQorLyogUm91bmQgcG9pbnRlciAicCIgZG93biB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzIDw9ICJwIi4gKi8KKyNkZWZpbmUgX1B5X0FMSUdOX0RPV04ocCwgYSkgKCh2b2lkICopKChQeV91aW50cHRyX3QpKHApICYgfihQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKy8qIFJvdW5kIHBvaW50ZXIgInAiIHVwIHRvIHRoZSBjbG9zZXN0ICJhIi1hbGlnbmVkIGFkZHJlc3MgPj0gInAiLiAqLworI2RlZmluZSBfUHlfQUxJR05fVVAocCwgYSkgKCh2b2lkICopKCgoUHlfdWludHB0cl90KShwKSArIFwKKyAgICAgICAgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpICYgfihQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKy8qIENoZWNrIGlmIHBvaW50ZXIgInAiIGlzIGFsaWduZWQgdG8gImEiLWJ5dGVzIGJvdW5kYXJ5LiAqLworI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgoUHlfdWludHB0cl90KShwKSAmIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKworI2VuZGlmIC8qIFB5X1BZTUFDUk9fSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hdGguaCBiL0luY2x1ZGUvcHltYXRoLmgKaW5kZXggYjRlZGE2Ni4uNjJhNmM0MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1hdGguaAorKysgYi9JbmNsdWRlL3B5bWF0aC5oCkBAIC0zNywxMiArMzcsNiBAQAogI2VuZGlmIC8qIF9fU1REQ19fICovCiAjZW5kaWYgLyogX01TQ19WRVIgKi8KIAotI2lmZGVmIF9PU0ZfU09VUkNFCi0vKiBPU0YxIDUuMSBkb2Vzbid0IG1ha2UgdGhlc2UgYXZhaWxhYmxlIHdpdGggWE9QRU5fU09VUkNFX0VYVEVOREVEIGRlZmluZWQgKi8KLWV4dGVybiBpbnQgZmluaXRlKGRvdWJsZSk7Ci1leHRlcm4gZG91YmxlIGNvcHlzaWduKGRvdWJsZSwgZG91YmxlKTsKLSNlbmRpZgotCiAvKiBIaWdoIHByZWNpc2lvbiBkZWZpbnRpb24gb2YgcGkgYW5kIGUgKEV1bGVyKQogICogVGhlIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSBsaWJjNidzIG1hdGguaC4KICAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXBvcnQuaCBiL0luY2x1ZGUvcHlwb3J0LmgKaW5kZXggNGVmMGRiMi4uZWJhMzRmOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXBvcnQuaAorKysgYi9JbmNsdWRlL3B5cG9ydC5oCkBAIC0xMzUsNyArMTM1LDcgQEAKICNkZWZpbmUgX1B5SEFTSF9NVUxUSVBMSUVSIDEwMDAwMDMgIC8qIDB4ZjQyNDMgKi8KIAogLyogUGFyYW1ldGVycyB1c2VkIGZvciB0aGUgbnVtZXJpYyBoYXNoIGltcGxlbWVudGF0aW9uLiAgU2VlIG5vdGVzIGZvcgotICAgX1B5SGFzaF9Eb3VibGUgaW4gT2JqZWN0cy9vYmplY3QuYy4gIE51bWVyaWMgaGFzaGVzIGFyZSBiYXNlZCBvbgorICAgX1B5X0hhc2hEb3VibGUgaW4gT2JqZWN0cy9vYmplY3QuYy4gIE51bWVyaWMgaGFzaGVzIGFyZSBiYXNlZCBvbgogICAgcmVkdWN0aW9uIG1vZHVsbyB0aGUgcHJpbWUgMioqX1B5SEFTSF9CSVRTIC0gMS4gKi8KIAogI2lmIFNJWkVPRl9WT0lEX1AgPj0gOApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCAwNjBlZmE3Li4yMDE3YjAyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtMjUsNyArMjUsNyBAQAogICAgIFB5T2JqZWN0ICptb2R1bGVzX2J5X2luZGV4OwogICAgIFB5T2JqZWN0ICpzeXNkaWN0OwogICAgIFB5T2JqZWN0ICpidWlsdGluczsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmc7CisgICAgUHlPYmplY3QgKmltcG9ydGxpYjsKIAogICAgIFB5T2JqZWN0ICpjb2RlY19zZWFyY2hfcGF0aDsKICAgICBQeU9iamVjdCAqY29kZWNfc2VhcmNoX2NhY2hlOwpAQCAtMzMsNiArMzMsNyBAQAogICAgIGludCBjb2RlY3NfaW5pdGlhbGl6ZWQ7CiAgICAgaW50IGZzY29kZWNfaW5pdGlhbGl6ZWQ7CiAKKwogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCkBAIC03NCw5ICs3NSw5IEBACiAgICAgc3RydWN0IF9mcmFtZSAqZnJhbWU7CiAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aDsKICAgICBjaGFyIG92ZXJmbG93ZWQ7IC8qIFRoZSBzdGFjayBoYXMgb3ZlcmZsb3dlZC4gQWxsb3cgNTAgbW9yZSBjYWxscwotCQkgICAgICAgIHRvIGhhbmRsZSB0aGUgcnVudGltZSBlcnJvci4gKi8KLSAgICBjaGFyIHJlY3Vyc2lvbl9jcml0aWNhbDsgLyogVGhlIGN1cnJlbnQgY2FsbHMgbXVzdCBub3QgY2F1c2UgCi0JCQkJYSBzdGFjayBvdmVyZmxvdy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGhhbmRsZSB0aGUgcnVudGltZSBlcnJvci4gKi8KKyAgICBjaGFyIHJlY3Vyc2lvbl9jcml0aWNhbDsgLyogVGhlIGN1cnJlbnQgY2FsbHMgbXVzdCBub3QgY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICAvKiAndHJhY2luZycga2VlcHMgdHJhY2sgb2YgdGhlIGV4ZWN1dGlvbiBkZXB0aCB3aGVuIHRyYWNpbmcvcHJvZmlsaW5nLgogICAgICAgIFRoaXMgaXMgdG8gcHJldmVudCB0aGUgYWN0dWFsIHRyYWNlL3Byb2ZpbGUgY29kZSBmcm9tIGJlaW5nIHJlY29yZGVkIGluCiAgICAgICAgdGhlIHRyYWNlL3Byb2ZpbGUuICovCkBAIC0xMjYsNiArMTI3LDExIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyhpbnQpIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKKy8qIE5ldyBpbiAzLjMgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworUHlBUElfRlVOQyhpbnQpIFB5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiopOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlTdGF0ZV9GaW5kTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiopOwogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9OZXcoUHlJbnRlcnByZXRlclN0YXRlICopOwpAQCAtMTYzLDYgKzE2OSw4IEBACiAgICAgZW51bSB7UHlHSUxTdGF0ZV9MT0NLRUQsIFB5R0lMU3RhdGVfVU5MT0NLRUR9CiAgICAgICAgIFB5R0lMU3RhdGVfU1RBVEU7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorCiAvKiBFbnN1cmUgdGhhdCB0aGUgY3VycmVudCB0aHJlYWQgaXMgcmVhZHkgdG8gY2FsbCB0aGUgUHl0aG9uCiAgICBDIEFQSSwgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBQeXRob24sIG9yIG9mIGl0cwogICAgdGhyZWFkIGxvY2suICBUaGlzIG1heSBiZSBjYWxsZWQgYXMgbWFueSB0aW1lcyBhcyBkZXNpcmVkCkBAIC0yMDQsNiArMjEyLDggQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKKyNlbmRpZiAgIC8qICNpZmRlZiBXSVRIX1RIUkVBRCAqLworCiAvKiBUaGUgaW1wbGVtZW50YXRpb24gb2Ygc3lzLl9jdXJyZW50X2ZyYW1lcygpICBSZXR1cm5zIGEgZGljdCBtYXBwaW5nCiAgICB0aHJlYWQgaWQgdG8gdGhhdCB0aHJlYWQncyBjdXJyZW50IGZyYW1lLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IGUyNDRjZTcuLjRkMjRiMmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtMzAsNiArMzAsOSBAQAogCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemUodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemVFeChpbnQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOworI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CkBAIC04Miw5ICs4NSwxMiBAQAogICAgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzKEZQLCBTLCBCLCAwKQogI2VuZGlmCiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCk7CitQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzRmlsZW5hbWUoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCk7CiBQeUFQSV9GVU5DKHN0cnVjdCBfbm9kZSAqKSBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncyhGSUxFICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5UnVuX1N0cmluZ0ZsYWdzKGNvbnN0IGNoYXIgKiwgaW50LCBQeU9iamVjdCAqLApAQCAtMTc5LDkgKzE4NSw2IEBACiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9zdm52ZXJzaW9uKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X1N1YnZlcnNpb25SZXZpc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9TdWJ2ZXJzaW9uU2hvcnRCcmFuY2godm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOwogI2VuZGlmCkBAIC0xOTEsNyArMTk0LDcgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5QnVpbHRpbl9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdChQeU9iamVjdCAqIGJsdGlubW9kKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlGcmFtZV9Jbml0KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9Jbml0KHZvaWQpOwpAQCAtMjE1LDYgKzIxOCw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RmxvYXRfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aHJlYWQuaCBiL0luY2x1ZGUvcHl0aHJlYWQuaAppbmRleCA5ODA2YzYxLi42ZTlmMzAzIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhyZWFkLmgKKysrIGIvSW5jbHVkZS9weXRocmVhZC5oCkBAIC0zMiw3ICszMiw3IEBACiAgICBvbiBhIGxvY2sgKHNlZSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoKSBiZWxvdykuCiAgICBQWV9USU1FT1VUX01BWCBpcyB0aGUgaGlnaGVzdCB1c2FibGUgdmFsdWUgKGluIG1pY3Jvc2Vjb25kcykgb2YgdGhhdAogICAgdHlwZSwgYW5kIGRlcGVuZHMgb24gdGhlIHN5c3RlbSB0aHJlYWRpbmcgQVBJLgotICAgCisKICAgIE5PVEU6IHRoaXMgaXNuJ3QgdGhlIHNhbWUgdmFsdWUgYXMgYF90aHJlYWQuVElNRU9VVF9NQVhgLiAgVGhlIF90aHJlYWQKICAgIG1vZHVsZSBleHBvc2VzIGEgaGlnaGVyLWxldmVsIEFQSSwgd2l0aCB0aW1lb3V0cyBleHByZXNzZWQgaW4gc2Vjb25kcwogICAgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYWxsb3dlZC4KQEAgLTc0LDYgKzc0LDggQEAKIFB5QVBJX0ZVTkMoc2l6ZV90KSBQeVRocmVhZF9nZXRfc3RhY2tzaXplKHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX3NldF9zdGFja3NpemUoc2l6ZV90KTsKIAorUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VGhyZWFkX0dldEluZm8odm9pZCk7CisKIC8qIFRocmVhZCBMb2NhbCBTdG9yYWdlIChUTFMpIEFQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5VGhyZWFkX2NyZWF0ZV9rZXkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkX2RlbGV0ZV9rZXkoaW50KTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IGQ3MDdiZGIuLjUyOTAyZjUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMyw2ICszLDcgQEAKICNkZWZpbmUgUHlfUFlUSU1FX0gKIAogI2luY2x1ZGUgInB5Y29uZmlnLmgiIC8qIGluY2x1ZGUgZm9yIGRlZmluZXMgKi8KKyNpbmNsdWRlICJvYmplY3QuaCIKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTeW1ib2xzIGFuZCBtYWNyb3MgdG8gc3VwcGx5IHBsYXRmb3JtLWluZGVwZW5kZW50IGludGVyZmFjZXMgdG8gdGltZSByZWxhdGVkCkBAIC0yMSwxMSArMjIsMjUgQEAKIH0gX1B5VGltZV90aW1ldmFsOwogI2VuZGlmCiAKKy8qIFN0cnVjdHVyZSB1c2VkIGJ5IHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uOworICAgIGludCBtb25vdG9uaWM7CisgICAgaW50IGFkanVzdGFibGU7CisgICAgZG91YmxlIHJlc29sdXRpb247Cit9IF9QeV9jbG9ja19pbmZvX3Q7CisKIC8qIFNpbWlsYXIgdG8gUE9TSVggZ2V0dGltZW9mZGF5IGJ1dCBjYW5ub3QgZmFpbC4gIElmIHN5c3RlbSBnZXR0aW1lb2ZkYXkKICAqIGZhaWxzIG9yIGlzIG5vdCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byBsb3dlciByZXNvbHV0aW9uIGNsb2Nrcy4KICAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKTsKIAorLyogU2ltaWxhciB0byBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGJ1dCByZXRyaWV2ZSBhbHNvIGluZm9ybWF0aW9uIG9uIHRoZQorICogY2xvY2sgdXNlZCB0byBnZXQgdGhlIGN1cnJlbnQgdGltZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygKKyAgICBfUHlUaW1lX3RpbWV2YWwgKnRwLAorICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOworCiAjZGVmaW5lIF9QeVRpbWVfQUREX1NFQ09ORFModHYsIGludGVydmFsKSBcCiBkbyB7IFwKICAgICB0di50dl91c2VjICs9IChsb25nKSAoKChsb25nKSBpbnRlcnZhbCAtIGludGVydmFsKSAqIDEwMDAwMDApOyBcCkBAIC0zNyw2ICs1MiwzNyBAQAogICAgICgodHZfZW5kLnR2X3NlYyAtIHR2X3N0YXJ0LnR2X3NlYykgKyBcCiAgICAgICh0dl9lbmQudHZfdXNlYyAtIHR2X3N0YXJ0LnR2X3VzZWMpICogMC4wMDAwMDEpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byB0aW1lX3QuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWVfdCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjKTsKKworLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tVGltZV90KAorICAgIHRpbWVfdCBzZWMpOworCisvKiBDb252ZXJ0IGEgUHlMb25nIHRvIGEgdGltZV90LiAqLworUHlBUElfRlVOQyh0aW1lX3QpIF9QeUxvbmdfQXNUaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaik7CisKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byBhIHRpbWV2YWwgc3RydWN0dXJlLgorICAgdXNlYyBpcyBpbiB0aGUgcmFuZ2UgWzA7IDk5OTk5OV0gYW5kIHJvdW5kZWQgdG93YXJkcyB6ZXJvLgorICAgRm9yIGV4YW1wbGUsIC0xLjIgaXMgY29udmVydGVkIHRvICgtMiwgODAwMDAwKS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZXZhbCgKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIGxvbmcgKnVzZWMpOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1lc3BlYyBzdHJ1Y3R1cmUuCisgICBuc2VjIGlzIGluIHRoZSByYW5nZSBbMDsgOTk5OTk5OTk5XSBhbmQgcm91bmRlZCB0b3dhcmRzIHplcm8uCisgICBGb3IgZXhhbXBsZSwgLTEuMiBpcyBjb252ZXJ0ZWQgdG8gKC0yLCA4MDAwMDAwMDApLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYygKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIHRpbWVfdCAqc2VjLAorICAgIGxvbmcgKm5zZWMpOworI2VuZGlmCisKIC8qIER1bW15IHRvIGZvcmNlIGxpbmtpbmcuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfSW5pdCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggNjIzNDExMS4uYTE0ODc0YiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC05OSw2ICs5OSw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X1BvcChQeU9iamVjdCAqc2V0KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfVXBkYXRlKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICppdGVyYWJsZSk7CisKK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOwogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKaW5kZXggMGI4NWIyYS4uOTQ4ZjY5MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAorKysgYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCkBAIC05LDE2ICs5LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBGb3Igb2Zmc2V0b2YgKi8KIAotLyogVGhlIG9mZnNldG9mKCkgbWFjcm8gY2FsY3VsYXRlcyB0aGUgb2Zmc2V0IG9mIGEgc3RydWN0dXJlIG1lbWJlcgotICAgaW4gaXRzIHN0cnVjdHVyZS4gIFVuZm9ydHVuYXRlbHkgdGhpcyBjYW5ub3QgYmUgd3JpdHRlbiBkb3duCi0gICBwb3J0YWJseSwgaGVuY2UgaXQgaXMgcHJvdmlkZWQgYnkgYSBTdGFuZGFyZCBDIGhlYWRlciBmaWxlLgotICAgRm9yIHByZS1TdGFuZGFyZCBDIGNvbXBpbGVycywgaGVyZSBpcyBhIHZlcnNpb24gdGhhdCB1c3VhbGx5IHdvcmtzCi0gICAoYnV0IHdhdGNoIG91dCEpOiAqLwotCi0jaWZuZGVmIG9mZnNldG9mCi0jZGVmaW5lIG9mZnNldG9mKHR5cGUsIG1lbWJlcikgKCAoaW50KSAmICgodHlwZSopMCkgLT4gbWVtYmVyICkKLSNlbmRpZgotCiAvKiBBbiBhcnJheSBvZiBQeU1lbWJlckRlZiBzdHJ1Y3R1cmVzIGRlZmluZXMgdGhlIG5hbWUsIHR5cGUgYW5kIG9mZnNldAogICAgb2Ygc2VsZWN0ZWQgbWVtYmVycyBvZiBhIEMgc3RydWN0dXJlLiAgVGhlc2UgY2FuIGJlIHJlYWQgYnkKICAgIFB5TWVtYmVyX0dldE9uZSgpIGFuZCBzZXQgYnkgUHlNZW1iZXJfU2V0T25lKCkgKGV4Y2VwdCBpZiB0aGVpciBSRUFET05MWQpAQCAtMjYsNDIgKzE2LDQxIEBACiAgICBwb2ludGVyIGlzIE5VTEwuICovCiAKIHR5cGVkZWYgc3RydWN0IFB5TWVtYmVyRGVmIHsKLQkvKiBDdXJyZW50IHZlcnNpb24sIHVzZSB0aGlzICovCi0JY2hhciAqbmFtZTsKLQlpbnQgdHlwZTsKLQlQeV9zc2l6ZV90IG9mZnNldDsKLQlpbnQgZmxhZ3M7Ci0JY2hhciAqZG9jOworICAgIGNoYXIgKm5hbWU7CisgICAgaW50IHR5cGU7CisgICAgUHlfc3NpemVfdCBvZmZzZXQ7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRvYzsKIH0gUHlNZW1iZXJEZWY7CiAKIC8qIFR5cGVzICovCi0jZGVmaW5lIFRfU0hPUlQJCTAKLSNkZWZpbmUgVF9JTlQJCTEKLSNkZWZpbmUgVF9MT05HCQkyCi0jZGVmaW5lIFRfRkxPQVQJCTMKLSNkZWZpbmUgVF9ET1VCTEUJNAotI2RlZmluZSBUX1NUUklORwk1Ci0jZGVmaW5lIFRfT0JKRUNUCTYKKyNkZWZpbmUgVF9TSE9SVCAgICAgMAorI2RlZmluZSBUX0lOVCAgICAgICAxCisjZGVmaW5lIFRfTE9ORyAgICAgIDIKKyNkZWZpbmUgVF9GTE9BVCAgICAgMworI2RlZmluZSBUX0RPVUJMRSAgICA0CisjZGVmaW5lIFRfU1RSSU5HICAgIDUKKyNkZWZpbmUgVF9PQkpFQ1QgICAgNgogLyogWFhYIHRoZSBvcmRlcmluZyBoZXJlIGlzIHdlaXJkIGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSAqLwotI2RlZmluZSBUX0NIQVIJCTcJLyogMS1jaGFyYWN0ZXIgc3RyaW5nICovCi0jZGVmaW5lIFRfQllURQkJOAkvKiA4LWJpdCBzaWduZWQgaW50ICovCisjZGVmaW5lIFRfQ0hBUiAgICAgIDcgICAvKiAxLWNoYXJhY3RlciBzdHJpbmcgKi8KKyNkZWZpbmUgVF9CWVRFICAgICAgOCAgIC8qIDgtYml0IHNpZ25lZCBpbnQgKi8KIC8qIHVuc2lnbmVkIHZhcmlhbnRzOiAqLwotI2RlZmluZSBUX1VCWVRFCQk5Ci0jZGVmaW5lIFRfVVNIT1JUCTEwCi0jZGVmaW5lIFRfVUlOVAkJMTEKLSNkZWZpbmUgVF9VTE9ORwkJMTIKKyNkZWZpbmUgVF9VQllURSAgICAgOQorI2RlZmluZSBUX1VTSE9SVCAgICAxMAorI2RlZmluZSBUX1VJTlQgICAgICAxMQorI2RlZmluZSBUX1VMT05HICAgICAxMgogCiAvKiBBZGRlZCBieSBKYWNrOiBzdHJpbmdzIGNvbnRhaW5lZCBpbiB0aGUgc3RydWN0dXJlICovCi0jZGVmaW5lIFRfU1RSSU5HX0lOUExBQ0UJMTMKKyNkZWZpbmUgVF9TVFJJTkdfSU5QTEFDRSAgICAxMwogCiAvKiBBZGRlZCBieSBMaWxsbzogYm9vbHMgY29udGFpbmVkIGluIHRoZSBzdHJ1Y3R1cmUgKGFzc3VtZWQgY2hhcikgKi8KLSNkZWZpbmUgVF9CT09MCQkxNAorI2RlZmluZSBUX0JPT0wgICAgICAxNAogCi0jZGVmaW5lIFRfT0JKRUNUX0VYCTE2CS8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKLQkJCQkgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCi0JCQkJICAgY29udmVydGluZyB0byBOb25lLiAqLworI2RlZmluZSBUX09CSkVDVF9FWCAxNiAgLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGluZyB0byBOb25lLiAqLwogI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNyAgCisjZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNwogI2RlZmluZSBUX1VMT05HTE9ORyAgICAgMTgKICNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogCkBAIC03MCwxMCArNTksMTAgQEAKIAogCiAvKiBGbGFncyAqLwotI2RlZmluZSBSRUFET05MWQkxCi0jZGVmaW5lIFJFQURfUkVTVFJJQ1RFRAkyCisjZGVmaW5lIFJFQURPTkxZICAgICAgICAgICAgMQorI2RlZmluZSBSRUFEX1JFU1RSSUNURUQgICAgIDIKICNkZWZpbmUgUFlfV1JJVEVfUkVTVFJJQ1RFRCA0Ci0jZGVmaW5lIFJFU1RSSUNURUQJKFJFQURfUkVTVFJJQ1RFRCB8IFBZX1dSSVRFX1JFU1RSSUNURUQpCisjZGVmaW5lIFJFU1RSSUNURUQgICAgICAgICAgKFJFQURfUkVTVFJJQ1RFRCB8IFBZX1dSSVRFX1JFU1RSSUNURUQpCiAKIAogLyogQ3VycmVudCBBUEksIHVzZSB0aGlzICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5bXRhYmxlLmggYi9JbmNsdWRlL3N5bXRhYmxlLmgKaW5kZXggZmQ3ZGUwNC4uODJmNjI2OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeW10YWJsZS5oCisrKyBiL0luY2x1ZGUvc3ltdGFibGUuaApAQCAtMjMsMTAgKzIzLDEzIEBACiAgICAgUHlPYmplY3QgKnN0X2Jsb2NrczsgICAgICAgICAgICAvKiBkaWN0OiBtYXAgQVNUIG5vZGUgYWRkcmVzc2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICB0byBzeW1ib2wgdGFibGUgZW50cmllcyAqLwogICAgIFB5T2JqZWN0ICpzdF9zdGFjazsgICAgICAgICAgICAgLyogbGlzdDogc3RhY2sgb2YgbmFtZXNwYWNlIGluZm8gKi8KLSAgICBQeU9iamVjdCAqc3RfZ2xvYmFsOyAgICAgICAgICAgIC8qIGJvcnJvd2VkIHJlZiB0byBzdF90b3AtPnN0X3N5bWJvbHMgKi8KLSAgICBpbnQgc3RfbmJsb2NrczsgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgdXNlZCAqLworICAgIFB5T2JqZWN0ICpzdF9nbG9iYWw7ICAgICAgICAgICAgLyogYm9ycm93ZWQgcmVmIHRvIHN0X3RvcC0+c3RlX3N5bWJvbHMgKi8KKyAgICBpbnQgc3RfbmJsb2NrczsgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgdXNlZC4ga2VwdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNpc3RlbmN5IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIHN0cnVjdHVyZSAqLwogICAgIFB5T2JqZWN0ICpzdF9wcml2YXRlOyAgICAgICAgICAgLyogbmFtZSBvZiBjdXJyZW50IGNsYXNzIG9yIE5VTEwgKi8KLSAgICBQeUZ1dHVyZUZlYXR1cmVzICpzdF9mdXR1cmU7ICAgIC8qIG1vZHVsZSdzIGZ1dHVyZSBmZWF0dXJlcyAqLworICAgIFB5RnV0dXJlRmVhdHVyZXMgKnN0X2Z1dHVyZTsgICAgLyogbW9kdWxlJ3MgZnV0dXJlIGZlYXR1cmVzIHRoYXQgYWZmZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc3ltYm9sIHRhYmxlICovCiB9OwogCiB0eXBlZGVmIHN0cnVjdCBfc3ltdGFibGVfZW50cnkgewpAQCAtMzQsNyArMzcsNyBAQAogICAgIFB5T2JqZWN0ICpzdGVfaWQ7ICAgICAgICAvKiBpbnQ6IGtleSBpbiBzdGVfdGFibGUtPnN0X2Jsb2NrcyAqLwogICAgIFB5T2JqZWN0ICpzdGVfc3ltYm9sczsgICAvKiBkaWN0OiB2YXJpYWJsZSBuYW1lcyB0byBmbGFncyAqLwogICAgIFB5T2JqZWN0ICpzdGVfbmFtZTsgICAgICAvKiBzdHJpbmc6IG5hbWUgb2YgY3VycmVudCBibG9jayAqLwotICAgIFB5T2JqZWN0ICpzdGVfdmFybmFtZXM7ICAvKiBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzICovCisgICAgUHlPYmplY3QgKnN0ZV92YXJuYW1lczsgIC8qIGxpc3Qgb2YgZnVuY3Rpb24gcGFyYW1ldGVycyAqLwogICAgIFB5T2JqZWN0ICpzdGVfY2hpbGRyZW47ICAvKiBsaXN0IG9mIGNoaWxkIGJsb2NrcyAqLwogICAgIF9QeV9ibG9ja190eSBzdGVfdHlwZTsgICAvKiBtb2R1bGUsIGNsYXNzLCBvciBmdW5jdGlvbiAqLwogICAgIGludCBzdGVfdW5vcHRpbWl6ZWQ7ICAgICAvKiBmYWxzZSBpZiBuYW1lc3BhY2UgaXMgb3B0aW1pemVkICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3RpbWVmdW5jcy5oIGIvSW5jbHVkZS90aW1lZnVuY3MuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0MzU3NS4uMDAwMDAwMAotLS0gYS9JbmNsdWRlL3RpbWVmdW5jcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLyogIHRpbWVmdW5jcy5oCi0gKi8KLQotLyogVXRpbGl0eSBmdW5jdGlvbiByZWxhdGVkIHRvIHRpbWVtb2R1bGUuYy4gKi8KLQotI2lmbmRlZiBUSU1FRlVOQ1NfSAotI2RlZmluZSBUSU1FRlVOQ1NfSAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0KLS8qIENhc3QgZG91YmxlIHggdG8gdGltZV90LCBidXQgcmFpc2UgVmFsdWVFcnJvciBpZiB4IGlzIHRvbyBsYXJnZQotICogdG8gZml0IGluIGEgdGltZV90LiAgVmFsdWVFcnJvciBpcyBzZXQgb24gcmV0dXJuIGlmZiB0aGUgcmV0dXJuCi0gKiB2YWx1ZSBpcyAodGltZV90KS0xIGFuZCBQeUVycl9PY2N1cnJlZCgpLgotICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKHRpbWVfdCkgX1B5VGltZV9Eb3VibGVUb1RpbWV0KGRvdWJsZSB4KTsKLSNlbmRpZgotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYgIC8qIFRJTUVGVU5DU19IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3RyYWNlYmFjay5oIGIvSW5jbHVkZS90cmFjZWJhY2suaAppbmRleCA2OWUzZDA1Li43NzM0NzA3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3RyYWNlYmFjay5oCisrKyBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKQEAgLTUsNiArNSw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaW5jbHVkZSAicHlzdGF0ZS5oIgorCiBzdHJ1Y3QgX2ZyYW1lOwogCiAvKiBUcmFjZWJhY2sgaW50ZXJmYWNlICovCkBAIC0yOCw2ICszMCw0MiBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VHJhY2VCYWNrX1R5cGU7CiAjZGVmaW5lIFB5VHJhY2VCYWNrX0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZQeVRyYWNlQmFja19UeXBlKQogCisvKiBXcml0ZSB0aGUgUHl0aG9uIHRyYWNlYmFjayBpbnRvIHRoZSBmaWxlICdmZCcuIEZvciBleGFtcGxlOgorCisgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgICAgIEZpbGUgInh4eCIsIGxpbmUgeHh4IGluIDx4eHg+CisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorICAgICAgICAgLi4uCisgICAgICAgICBGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiA8eHh4PgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seSwgdG8gZHVtcCB0aGUgdHJhY2ViYWNrIGluCisgICB0aGUgd29yc3QgY2FzZTogYWZ0ZXIgYSBzZWdtZW50YXRpb24gZmF1bHQsIGF0IGZhdGFsIGVycm9yLCBldGMuIFRoYXQncyB3aHksCisgICBpdCBpcyB2ZXJ5IGxpbWl0ZWQuIFN0cmluZ3MgYXJlIHRydW5jYXRlZCB0byAxMDAgY2hhcmFjdGVycyBhbmQgZW5jb2RlZCB0bworICAgQVNDSUkgd2l0aCBiYWNrc2xhc2hyZXBsYWNlLiBJdCBkb2Vzbid0IHdyaXRlIHRoZSBzb3VyY2UgY29kZSwgb25seSB0aGUKKyAgIGZ1bmN0aW9uIG5hbWUsIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBvZiBlYWNoIGZyYW1lLiBXcml0ZSBvbmx5IHRoZSBmaXJzdAorICAgMTAwIGZyYW1lczogaWYgdGhlIHRyYWNlYmFjayBpcyB0cnVuY2F0ZWQsIHdyaXRlIHRoZSBsaW5lICIgLi4uIi4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworUHlBUElfREFUQSh2b2lkKSBfUHlfRHVtcFRyYWNlYmFjaygKKyAgICBpbnQgZmQsCisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKworLyogV3JpdGUgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpbnRvIHRoZSBmaWxlICdmZCcuIGN1cnJlbnRfdGhyZWFkIGNhbiBiZQorICAgTlVMTC4gUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KKworICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkuIEl0IGNhbGxzCisgICBfUHlfRHVtcFRyYWNlYmFjaygpIGZvciBlYWNoIHRocmVhZCwgYW5kIHNvIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9ucy4gSXQKKyAgIG9ubHkgd3JpdGUgdGhlIHRyYWNlYmFjayBvZiB0aGUgZmlyc3QgMTAwIHRocmVhZHM6IHdyaXRlICIuLi4iIGlmIHRoZXJlIGFyZQorICAgbW9yZSB0aHJlYWRzLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitQeUFQSV9EQVRBKGNvbnN0IGNoYXIqKSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoCisgICAgaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCk7CisKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHVwbGVvYmplY3QuaCBiL0luY2x1ZGUvdHVwbGVvYmplY3QuaAppbmRleCBmMTdiNzg4Li5jMjczY2U3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3R1cGxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS90dXBsZW9iamVjdC5oCkBAIC02Myw2ICs2Myw5IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdCh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS91Y25oYXNoLmggYi9JbmNsdWRlL3Vjbmhhc2guaAppbmRleCA3MGZkZjEzLi44ZGU5YmEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3Vjbmhhc2guaAorKysgYi9JbmNsdWRlL3Vjbmhhc2guaApAQCAtMTksMTEgKzE5LDEzIEBACiAgICAgICAgc3VjY2VzcywgemVybyBpZiBub3QuICBEb2VzIG5vdCBzZXQgUHl0aG9uIGV4Y2VwdGlvbnMuIAogICAgICAgIElmIHNlbGYgaXMgTlVMTCwgZGF0YSBjb21lIGZyb20gdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UuCiAgICAgICAgSWYgaXQgaXMgbm90IE5VTEwsIGl0IHNob3VsZCBiZSBhIHVuaWNvZGVkYXRhLnVjZF9YX1lfWiBvYmplY3QgKi8KLSAgICBpbnQgKCpnZXRuYW1lKShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4pOworICAgIGludCAoKmdldG5hbWUpKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgd2l0aF9hbGlhc19hbmRfc2VxKTsKIAogICAgIC8qIEdldCBjaGFyYWN0ZXIgY29kZSBmb3IgYSBnaXZlbiBuYW1lLiAgU2FtZSBlcnJvciBoYW5kbGluZwogICAgICAgIGFzIGZvciBnZXRuYW1lLiAqLwotICAgIGludCAoKmdldGNvZGUpKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSk7CisgICAgaW50ICgqZ2V0Y29kZSkoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIGludCBuYW1lbGVuLCBQeV9VQ1M0KiBjb2RlLAorICAgICAgICAgICAgICAgICAgIGludCB3aXRoX25hbWVkX3NlcSk7CiAKIH0gX1B5VW5pY29kZV9OYW1lX0NBUEk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggMzc5YTkwYy4uMTM1ZTQ2OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTY0LDE2ICs2NCwxNSBAQAogLyogUHl0aG9uIDMueCByZXF1aXJlcyB1bmljb2RlICovCiAjZGVmaW5lIFB5X1VTSU5HX1VOSUNPREUKIAotLyogRklYTUU6IE12TCdzIG5ldyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgUHlfVU5JQ09ERV9TSVpFIGlzCi0gICBwcm9wZXJseSBzZXQsIGJ1dCB0aGUgZGVmYXVsdCBydWxlcyBiZWxvdyBkb2Vzbid0IHNldCBpdC4gIEknbGwKLSAgIHNvcnQgdGhpcyBvdXQgc29tZSBvdGhlciBkYXkgLS0gZnJlZHJpa0BweXRob253YXJlLmNvbSAqLwotCi0jaWZuZGVmIFB5X1VOSUNPREVfU0laRQotI2Vycm9yIE11c3QgZGVmaW5lIFB5X1VOSUNPREVfU0laRQorI2lmbmRlZiBTSVpFT0ZfV0NIQVJfVAorI2Vycm9yIE11c3QgZGVmaW5lIFNJWkVPRl9XQ0hBUl9UCiAjZW5kaWYKIAotLyogU2V0dGluZyBQeV9VTklDT0RFX1dJREUgZW5hYmxlcyBVQ1MtNCBzdG9yYWdlLiAgT3RoZXJ3aXNlLCBVbmljb2RlCi0gICBzdHJpbmdzIGFyZSBzdG9yZWQgYXMgVUNTLTIgKHdpdGggbGltaXRlZCBzdXBwb3J0IGZvciBVVEYtMTYpICovCisjZGVmaW5lIFB5X1VOSUNPREVfU0laRSBTSVpFT0ZfV0NIQVJfVAorCisvKiBJZiB3Y2hhcl90IGNhbiBiZSB1c2VkIGZvciBVQ1MtNCBzdG9yYWdlLCBzZXQgUHlfVU5JQ09ERV9XSURFLgorICAgT3RoZXJ3aXNlLCBVbmljb2RlIHN0cmluZ3MgYXJlIHN0b3JlZCBhcyBVQ1MtMiAod2l0aCBsaW1pdGVkIHN1cHBvcnQKKyAgIGZvciBVVEYtMTYpICovCiAKICNpZiBQeV9VTklDT0RFX1NJWkUgPj0gNAogI2RlZmluZSBQeV9VTklDT0RFX1dJREUKQEAgLTg0LDE5ICs4MywxNCBAQAogLyogI2RlZmluZSBIQVZFX1dDSEFSX0ggKi8KIC8qICNkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVCAqLwogCi0vKiBEZWZhdWx0cyBmb3IgdmFyaW91cyBwbGF0Zm9ybXMgKi8KLSNpZm5kZWYgUFlfVU5JQ09ERV9UWVBFCisvKiBQeV9VTklDT0RFIHdhcyB0aGUgbmF0aXZlIFVuaWNvZGUgc3RvcmFnZSBmb3JtYXQgKGNvZGUgdW5pdCkgdXNlZCBieQorICAgUHl0aG9uIGFuZCByZXByZXNlbnRzIGEgc2luZ2xlIFVuaWNvZGUgZWxlbWVudCBpbiB0aGUgVW5pY29kZSB0eXBlLgorICAgV2l0aCBQRVAgMzkzLCBQeV9VTklDT0RFIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIHdpdGggYQorICAgdHlwZWRlZiB0byB3Y2hhcl90LiAqLwogCi0vKiBXaW5kb3dzIGhhcyBhIHVzYWJsZSB3Y2hhcl90IHR5cGUgKHVubGVzcyB3ZSdyZSB1c2luZyBVQ1MtNCkgKi8KLSMgaWYgZGVmaW5lZChNU19XSU4zMikgJiYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSMgIGRlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UCi0jICBkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHdjaGFyX3QKLSMgZW5kaWYKLQotIyBpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkKLSMgIGRlZmluZSBQWV9VTklDT0RFX1RZUEUgUHlfVUNTNAotIyBlbmRpZgotCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90Cit0eXBlZGVmIHdjaGFyX3QgUHlfVU5JQ09ERTsKICNlbmRpZgogCiAvKiBJZiB0aGUgY29tcGlsZXIgcHJvdmlkZXMgYSB3Y2hhcl90IHR5cGUgd2UgdHJ5IHRvIHN1cHBvcnQgaXQKQEAgLTEwOSw2ICsxMDMsMTAgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorIyAgZGVmaW5lIEhBVkVfTUJDUworI2VuZGlmCisKICNpZmRlZiBIQVZFX1dDSEFSX0gKIC8qIFdvcmsgYXJvdW5kIGEgY29zbWV0aWMgYnVnIGluIEJTREkgNC54IHdjaGFyLmg7IHRoYW5rcyB0byBUaG9tYXMgV291dGVycyAqLwogIyBpZmRlZiBfSEFWRV9CU0RJCkBAIC0xMTcsMjAxICsxMTUsMjQgQEAKICMgIGluY2x1ZGUgPHdjaGFyLmg+CiAjZW5kaWYKIAotLyoKLSAqIFVzZSB0aGlzIHR5cGVkZWYgd2hlbiB5b3UgbmVlZCB0byByZXByZXNlbnQgYSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKLSAqIGFzIHNpbmdsZSB1bnNpZ25lZCBpbnRlZ2VyLgotICovCi0jaWYgU0laRU9GX0lOVCA+PSA0CisvKiBQeV9VQ1M0IGFuZCBQeV9VQ1MyIGFyZSB0eXBlZGVmcyBmb3IgdGhlIHJlc3BlY3RpdmUKKyAgIHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLiAqLworI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgUHlfVUNTNDsKLSNlbGlmIFNJWkVPRl9MT05HID49IDQKKyNlbGlmIFNJWkVPRl9MT05HID09IDQKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQeV9VQ1M0OwotI2VuZGlmCi0KLS8qIFB5X1VOSUNPREUgaXMgdGhlIG5hdGl2ZSBVbmljb2RlIHN0b3JhZ2UgZm9ybWF0IChjb2RlIHVuaXQpIHVzZWQgYnkKLSAgIFB5dGhvbiBhbmQgcmVwcmVzZW50cyBhIHNpbmdsZSBVbmljb2RlIGVsZW1lbnQgaW4gdGhlIFVuaWNvZGUKLSAgIHR5cGUuICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLXR5cGVkZWYgUFlfVU5JQ09ERV9UWVBFIFB5X1VOSUNPREU7Ci0jZW5kaWYKLQotLyogLS0tIFVDUy0yL1VDUy00IE5hbWUgTWFuZ2xpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIFVuaWNvZGUgQVBJIG5hbWVzIGFyZSBtYW5nbGVkIHRvIGFzc3VyZSB0aGF0IFVDUy0yIGFuZCBVQ1MtNCBidWlsZHMKLSAgIHByb2R1Y2UgZGlmZmVyZW50IGV4dGVybmFsIG5hbWVzIGFuZCB0aHVzIGNhdXNlIGltcG9ydCBlcnJvcnMgaW4KLSAgIGNhc2UgUHl0aG9uIGludGVycHJldGVycyBhbmQgZXh0ZW5zaW9ucyB3aXRoIG1peGVkIGNvbXBpbGVkIGluCi0gICBVbmljb2RlIHdpZHRoIGFzc3VtcHRpb25zIGFyZSBjb21iaW5lZC4gKi8KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLQotIyBkZWZpbmUgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0FTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNDaGFybWFwU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzJfQXNEZWNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNFbmNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNMYXRpbjFTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEYzMlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1VURjE2U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVVEY4U3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhciBQeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nIFB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhclN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3QgUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZSBQeVVuaWNvZGVVQ1MyX0NvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzJfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0NvbmNhdCBQeVVuaWNvZGVVQ1MyX0NvbmNhdAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZCBQeVVuaWNvZGVVQ1MyX0FwcGVuZAotIyBkZWZpbmUgUHlVbmljb2RlX0FwcGVuZEFuZERlbCBQeVVuaWNvZGVVQ1MyX0FwcGVuZEFuZERlbAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbnRhaW5zIFB5VW5pY29kZVVDUzJfQ29udGFpbnMKLSMgZGVmaW5lIFB5VW5pY29kZV9Db3VudCBQeVVuaWNvZGVVQ1MyX0NvdW50Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlIFB5VW5pY29kZVVDUzJfRGVjb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkgUHlVbmljb2RlVUNTMl9EZWNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xIFB5VW5pY29kZVVDUzJfRGVjb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0IFB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSBQeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2IFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjggUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsIFB5VW5pY29kZVVDUzJfRGVjb2RlVVRGOFN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0RlY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGUgUHlVbmljb2RlVUNTMl9FbmNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVBU0NJSSBQeVVuaWNvZGVVQ1MyX0VuY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1MyX0VuY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsIFB5VW5pY29kZVVDUzJfRW5jb2RlRGVjaW1hbAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUxhdGluMSBQeVVuaWNvZGVVQ1MyX0VuY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9FbmNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMzIgUHlVbmljb2RlVUNTMl9FbmNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjE2IFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGMTYKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEY4IFB5VW5pY29kZVVDUzJfRW5jb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9FbmNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRmluZCBQeVVuaWNvZGVVQ1MyX0ZpbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gb3JtYXQgUHlVbmljb2RlVUNTMl9Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1MyX0Zyb21FbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdCBQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0ViBQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXRWCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9iamVjdCBQeVVuaWNvZGVVQ1MyX0Zyb21PYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCBQeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZyBQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSBQeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmdBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUgUHlVbmljb2RlVUNTMl9Gcm9tVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBQeVVuaWNvZGVVQ1MyX0Zyb21XaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTQ29udmVydGVyIFB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0RlY29kZXIgUHlVbmljb2RlVUNTMl9GU0RlY29kZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcgUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRNYXggUHlVbmljb2RlVUNTMl9HZXRNYXgKLSMgZGVmaW5lIFB5VW5pY29kZV9HZXRTaXplIFB5VW5pY29kZVVDUzJfR2V0U2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0lzSWRlbnRpZmllciBQeVVuaWNvZGVVQ1MyX0lzSWRlbnRpZmllcgotIyBkZWZpbmUgUHlVbmljb2RlX0pvaW4gUHlVbmljb2RlVUNTMl9Kb2luCi0jIGRlZmluZSBQeVVuaWNvZGVfUGFydGl0aW9uIFB5VW5pY29kZVVDUzJfUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlBhcnRpdGlvbiBQeVVuaWNvZGVVQ1MyX1JQYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SU3BsaXQgUHlVbmljb2RlVUNTMl9SU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXBsYWNlIFB5VW5pY29kZVVDUzJfUmVwbGFjZQotIyBkZWZpbmUgUHlVbmljb2RlX1Jlc2l6ZSBQeVVuaWNvZGVVQ1MyX1Jlc2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX1JpY2hDb21wYXJlIFB5VW5pY29kZVVDUzJfUmljaENvbXBhcmUKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdCBQeVVuaWNvZGVVQ1MyX1NwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXRsaW5lcyBQeVVuaWNvZGVVQ1MyX1NwbGl0bGluZXMKLSMgZGVmaW5lIFB5VW5pY29kZV9UYWlsbWF0Y2ggUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2gKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGUgUHlVbmljb2RlVUNTMl9UcmFuc2xhdGUKLSMgZGVmaW5lIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwIFB5VW5pY29kZVVDUzJfVHJhbnNsYXRlQ2hhcm1hcAotIyBkZWZpbmUgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIF9QeVVuaWNvZGVVQ1MyX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcKLSMgZGVmaW5lIF9QeVVuaWNvZGVfRmluaSBfUHlVbmljb2RlVUNTMl9GaW5pCi0jIGRlZmluZSBfUHlVbmljb2RlX0luaXQgX1B5VW5pY29kZVVDUzJfSW5pdAotIyBkZWZpbmUgUHlVbmljb2RlX3N0cmR1cCBQeVVuaWNvZGVVQ1MyX3N0cmR1cAotCiAjZWxzZQotCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0NoYXJtYXBTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QgUHlVbmljb2RlVUNTNF9Bc0RlY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzRfQXNEZWNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc0VuY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc0xhdGluMVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjMyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzVVRGMTZTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VURjhTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc1VuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyIFB5VW5pY29kZVVDUzRfQXNXaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcgUHlVbmljb2RlVUNTNF9Bc1dpZGVDaGFyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCBQeVVuaWNvZGVVQ1M0X0NsZWFyRnJlZWxpc3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlIFB5VW5pY29kZVVDUzRfQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTNF9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29uY2F0IFB5VW5pY29kZVVDUzRfQ29uY2F0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kIFB5VW5pY29kZVVDUzRfQXBwZW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsIFB5VW5pY29kZVVDUzRfQXBwZW5kQW5kRGVsCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29udGFpbnMgUHlVbmljb2RlVUNTNF9Db250YWlucwotIyBkZWZpbmUgUHlVbmljb2RlX0NvdW50IFB5VW5pY29kZVVDUzRfQ291bnQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGUgUHlVbmljb2RlVUNTNF9EZWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVBU0NJSSBQeVVuaWNvZGVVQ1M0X0RlY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1M0X0RlY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEgUHlVbmljb2RlVUNTNF9EZWNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQgUHlVbmljb2RlVUNTNF9EZWNvZGVGU0RlZmF1bHQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplIFB5VW5pY29kZVVDUzRfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzIgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYzMlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTYgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEYxNlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOCBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwgUHlVbmljb2RlVUNTNF9EZWNvZGVVVEY4U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRGVjb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZSBQeVVuaWNvZGVVQ1M0X0VuY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUFTQ0lJIFB5VW5pY29kZVVDUzRfRW5jb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzRfRW5jb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZURlY2ltYWwgUHlVbmljb2RlVUNTNF9FbmNvZGVEZWNpbWFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xIFB5VW5pY29kZVVDUzRfRW5jb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0VuY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYzMiBQeVVuaWNvZGVVQ1M0X0VuY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMTYgUHlVbmljb2RlVUNTNF9FbmNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjggUHlVbmljb2RlVUNTNF9FbmNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0VuY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9GaW5kIFB5VW5pY29kZVVDUzRfRmluZAotIyBkZWZpbmUgUHlVbmljb2RlX0Zvcm1hdCBQeVVuaWNvZGVVQ1M0X0Zvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzRfRnJvbUVuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0IFB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXRWIFB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdFYKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT2JqZWN0IFB5VW5pY29kZVVDUzRfRnJvbU9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PcmRpbmFsIFB5VW5pY29kZVVDUzRfRnJvbU9yZGluYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nIFB5VW5pY29kZVVDUzRfRnJvbVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIFB5VW5pY29kZVVDUzRfRnJvbVN0cmluZ0FuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0Zyb21Vbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyIFB5VW5pY29kZVVDUzRfRnJvbVdpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgUHlVbmljb2RlVUNTNF9GU0NvbnZlcnRlcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTRGVjb2RlciBQeVVuaWNvZGVVQ1M0X0ZTRGVjb2RlcgotIyBkZWZpbmUgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyBQeVVuaWNvZGVVQ1M0X0dldERlZmF1bHRFbmNvZGluZwotIyBkZWZpbmUgUHlVbmljb2RlX0dldE1heCBQeVVuaWNvZGVVQ1M0X0dldE1heAotIyBkZWZpbmUgUHlVbmljb2RlX0dldFNpemUgUHlVbmljb2RlVUNTNF9HZXRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfSXNJZGVudGlmaWVyIFB5VW5pY29kZVVDUzRfSXNJZGVudGlmaWVyCi0jIGRlZmluZSBQeVVuaWNvZGVfSm9pbiBQeVVuaWNvZGVVQ1M0X0pvaW4KLSMgZGVmaW5lIFB5VW5pY29kZV9QYXJ0aXRpb24gUHlVbmljb2RlVUNTNF9QYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SUGFydGl0aW9uIFB5VW5pY29kZVVDUzRfUlBhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JTcGxpdCBQeVVuaWNvZGVVQ1M0X1JTcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1JlcGxhY2UgUHlVbmljb2RlVUNTNF9SZXBsYWNlCi0jIGRlZmluZSBQeVVuaWNvZGVfUmVzaXplIFB5VW5pY29kZVVDUzRfUmVzaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfUmljaENvbXBhcmUgUHlVbmljb2RlVUNTNF9SaWNoQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0IFB5VW5pY29kZVVDUzRfU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdGxpbmVzIFB5VW5pY29kZVVDUzRfU3BsaXRsaW5lcwotIyBkZWZpbmUgUHlVbmljb2RlX1RhaWxtYXRjaCBQeVVuaWNvZGVVQ1M0X1RhaWxtYXRjaAotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZSBQeVVuaWNvZGVVQ1M0X1RyYW5zbGF0ZQotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAgUHlVbmljb2RlVUNTNF9UcmFuc2xhdGVDaGFybWFwCi0jIGRlZmluZSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcgX1B5VW5pY29kZVVDUzRfQXNEZWZhdWx0RW5jb2RlZFN0cmluZwotIyBkZWZpbmUgX1B5VW5pY29kZV9GaW5pIF9QeVVuaWNvZGVVQ1M0X0ZpbmkKLSMgZGVmaW5lIF9QeVVuaWNvZGVfSW5pdCBfUHlVbmljb2RlVUNTNF9Jbml0Ci0jIGRlZmluZSBQeVVuaWNvZGVfc3RyZHVwIFB5VW5pY29kZVVDUzRfc3RyZHVwCi0KKyNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTNCIKICNlbmRpZgogCisjaWYgU0laRU9GX1NIT1JUID09IDIKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVUNTMjsKKyNlbHNlCisjZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzIiCisjZW5kaWYKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFB5X1VDUzE7CisKIC8qIC0tLSBJbnRlcm5hbCBVbmljb2RlIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBTaW5jZSBzcGxpdHRpbmcgb24gd2hpdGVzcGFjZSBpcyBhbiBpbXBvcnRhbnQgdXNlIGNhc2UsIGFuZApAQCAtMzUwLDcgKzE3MSw3IEBACiAgICAgUHlfVU5JQ09ERV9JU0RJR0lUKGNoKSB8fCBcCiAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoY2gpKQogCi0jZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBcCiAgICAgUHlfTUVNQ1BZKCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfRklMTCh0YXJnZXQsIHZhbHVlLCBsZW5ndGgpIFwKQEAgLTM1OCwxMyArMTc5LDI3IEBACiAgICAgZm9yIChpXyA9IDA7IGlfIDwgKGxlbmd0aCk7IGlfKyspIHRfW2lfXSA9IHZfO1wKICAgICB9IHdoaWxlICgwKQogCisvKiBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXMgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQorI2RlZmluZSBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikKKyNkZWZpbmUgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKSAoMHhEQzAwIDw9IGNoICYmIGNoIDw9IDB4REZGRikKKy8qIEpvaW4gdHdvIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCByZXR1cm4gYSBzaW5nbGUgUHlfVUNTNCB2YWx1ZS4gKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KSAgXAorICAgICgoKCgoUHlfVUNTNCkoaGlnaCkgJiAweDAzRkYpIDw8IDEwKSB8ICAgICAgXAorICAgICAgKChQeV9VQ1M0KShsb3cpICYgMHgwM0ZGKSkgKyAweDEwMDAwKQorLyogaGlnaCBzdXJyb2dhdGUgPSB0b3AgMTAgYml0cyBhZGRlZCB0byBEODAwICovCisjZGVmaW5lIFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpICgweEQ4MDAgLSAoMHgxMDAwMCA+PiAxMCkgKyAoKGNoKSA+PiAxMCkpCisvKiBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLworI2RlZmluZSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgKyAoKGNoKSAmIDB4M0ZGKSkKKwogLyogQ2hlY2sgaWYgc3Vic3RyaW5nIG1hdGNoZXMgYXQgZ2l2ZW4gb2Zmc2V0LiAgVGhlIG9mZnNldCBtdXN0IGJlCiAgICB2YWxpZCwgYW5kIHRoZSBzdWJzdHJpbmcgbXVzdCBub3QgYmUgZW1wdHkuICovCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9NQVRDSChzdHJpbmcsIG9mZnNldCwgc3Vic3RyaW5nKSBcCi0gICAgKCgqKChzdHJpbmcpLT5zdHIgKyAob2Zmc2V0KSkgPT0gKigoc3Vic3RyaW5nKS0+c3RyKSkgJiYgXAotICAgICgoKigoc3RyaW5nKS0+c3RyICsgKG9mZnNldCkgKyAoc3Vic3RyaW5nKS0+bGVuZ3RoLTEpID09ICooKHN1YnN0cmluZyktPnN0ciArIChzdWJzdHJpbmcpLT5sZW5ndGgtMSkpKSAmJiBcCi0gICAgICFtZW1jbXAoKHN0cmluZyktPnN0ciArIChvZmZzZXQpLCAoc3Vic3RyaW5nKS0+c3RyLCAoc3Vic3RyaW5nKS0+bGVuZ3RoKnNpemVvZihQeV9VTklDT0RFKSkpCisgICAgKCgqKChzdHJpbmcpLT53c3RyICsgKG9mZnNldCkpID09ICooKHN1YnN0cmluZyktPndzdHIpKSAmJiBcCisgICAgICgoKigoc3RyaW5nKS0+d3N0ciArIChvZmZzZXQpICsgKHN1YnN0cmluZyktPndzdHJfbGVuZ3RoLTEpID09ICooKHN1YnN0cmluZyktPndzdHIgKyAoc3Vic3RyaW5nKS0+d3N0cl9sZW5ndGgtMSkpKSAmJiBcCisgICAgICFtZW1jbXAoKHN0cmluZyktPndzdHIgKyAob2Zmc2V0KSwgKHN1YnN0cmluZyktPndzdHIsIChzdWJzdHJpbmcpLT53c3RyX2xlbmd0aCpzaXplb2YoUHlfVU5JQ09ERSkpKQorCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0zNzQsNDEgKzIwOSwzNzQgQEAKIC8qIC0tLSBVbmljb2RlIFR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKKy8qIEFTQ0lJLW9ubHkgc3RyaW5ncyBjcmVhdGVkIHRocm91Z2ggUHlVbmljb2RlX05ldyB1c2UgdGhlIFB5QVNDSUlPYmplY3QKKyAgIHN0cnVjdHVyZS4gc3RhdGUuYXNjaWkgYW5kIHN0YXRlLmNvbXBhY3QgYXJlIHNldCwgYW5kIHRoZSBkYXRhCisgICBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIHN0cnVjdHVyZS4gdXRmOF9sZW5ndGggYW5kIHdzdHJfbGVuZ3RoIGNhbiBiZSBmb3VuZAorICAgaW4gdGhlIGxlbmd0aCBmaWVsZDsgdGhlIHV0ZjggcG9pbnRlciBpcyBlcXVhbCB0byB0aGUgZGF0YSBwb2ludGVyLiAqLwogdHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIFRoZXJlIGFyZSA0IGZvcm1zIG9mIFVuaWNvZGUgc3RyaW5nczoKKworICAgICAgIC0gY29tcGFjdCBhc2NpaToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeUFTQ0lJT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDEKKyAgICAgICAgICogYXNjaWkgPSAxCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiAobGVuZ3RoIGlzIHRoZSBsZW5ndGggb2YgdGhlIHV0ZjggYW5kIHdzdHIgc3RyaW5ncykKKyAgICAgICAgICogKGRhdGEgc3RhcnRzIGp1c3QgYWZ0ZXIgdGhlIHN0cnVjdHVyZSkKKyAgICAgICAgICogKHNpbmNlIEFTQ0lJIGlzIGRlY29kZWQgZnJvbSBVVEYtOCwgdGhlIHV0Zjggc3RyaW5nIGFyZSB0aGUgZGF0YSkKKworICAgICAgIC0gY29tcGFjdDoKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeUNvbXBhY3RVbmljb2RlT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKG9wKQorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQsIFB5VW5pY29kZV8yQllURV9LSU5EIG9yCisgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAxCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiBhc2NpaSA9IDAKKyAgICAgICAgICogdXRmOCBpcyBub3Qgc2hhcmVkIHdpdGggZGF0YQorICAgICAgICAgKiB1dGY4X2xlbmd0aCA9IDAgaWYgdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHdzdHIgaXMgc2hhcmVkIHdpdGggZGF0YSBhbmQgd3N0cl9sZW5ndGg9bGVuZ3RoCisgICAgICAgICAgIGlmIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT0yCisgICAgICAgICAgIG9yIGlmIGtpbmQ9UHlVbmljb2RlXzRCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT00CisgICAgICAgICAqIHdzdHJfbGVuZ3RoID0gMCBpZiB3c3RyIGlzIE5VTEwKKyAgICAgICAgICogKGRhdGEgc3RhcnRzIGp1c3QgYWZ0ZXIgdGhlIHN0cnVjdHVyZSkKKworICAgICAgIC0gbGVnYWN5IHN0cmluZywgbm90IHJlYWR5OgorCisgICAgICAgICAqIHN0cnVjdHVyZSA9IFB5VW5pY29kZU9iamVjdAorICAgICAgICAgKiB0ZXN0OiBraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAqIGxlbmd0aCA9IDAgKHVzZSB3c3RyX2xlbmd0aCkKKyAgICAgICAgICogaGFzaCA9IC0xCisgICAgICAgICAqIGtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMAorICAgICAgICAgKiBhc2NpaSA9IDAKKyAgICAgICAgICogcmVhZHkgPSAwCisgICAgICAgICAqIGludGVybmVkID0gU1NUQVRFX05PVF9JTlRFUk5FRAorICAgICAgICAgKiB3c3RyIGlzIG5vdCBOVUxMCisgICAgICAgICAqIGRhdGEuYW55IGlzIE5VTEwKKyAgICAgICAgICogdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHV0ZjhfbGVuZ3RoID0gMAorCisgICAgICAgLSBsZWdhY3kgc3RyaW5nLCByZWFkeToKKworICAgICAgICAgKiBzdHJ1Y3R1cmUgPSBQeVVuaWNvZGVPYmplY3Qgc3RydWN0dXJlCisgICAgICAgICAqIHRlc3Q6ICFQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgJiYga2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORAorICAgICAgICAgKiBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQsIFB5VW5pY29kZV8yQllURV9LSU5EIG9yCisgICAgICAgICAgIFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAwCisgICAgICAgICAqIHJlYWR5ID0gMQorICAgICAgICAgKiBkYXRhLmFueSBpcyBub3QgTlVMTAorICAgICAgICAgKiB1dGY4IGlzIHNoYXJlZCBhbmQgdXRmOF9sZW5ndGggPSBsZW5ndGggd2l0aCBkYXRhLmFueSBpZiBhc2NpaSA9IDEKKyAgICAgICAgICogdXRmOF9sZW5ndGggPSAwIGlmIHV0ZjggaXMgTlVMTAorICAgICAgICAgKiB3c3RyIGlzIHNoYXJlZCB3aXRoIGRhdGEuYW55IGFuZCB3c3RyX2xlbmd0aCA9IGxlbmd0aAorICAgICAgICAgICBpZiBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfdCk9MgorICAgICAgICAgICBvciBpZiBraW5kPVB5VW5pY29kZV80QllURV9LSU5EIGFuZCBzaXplb2Yod2NoYXJfNCk9NAorICAgICAgICAgKiB3c3RyX2xlbmd0aCA9IDAgaWYgd3N0ciBpcyBOVUxMCisKKyAgICAgICBDb21wYWN0IHN0cmluZ3MgdXNlIG9ubHkgb25lIG1lbW9yeSBibG9jayAoc3RydWN0dXJlICsgY2hhcmFjdGVycyksCisgICAgICAgd2hlcmVhcyBsZWdhY3kgc3RyaW5ncyB1c2Ugb25lIGJsb2NrIGZvciB0aGUgc3RydWN0dXJlIGFuZCBvbmUgYmxvY2sKKyAgICAgICBmb3IgY2hhcmFjdGVycy4KKworICAgICAgIExlZ2FjeSBzdHJpbmdzIGFyZSBjcmVhdGVkIGJ5IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgpIGFuZAorICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKSBmdW5jdGlvbnMuIFRoZXkgYmVjb21lIHJlYWR5CisgICAgICAgd2hlbiBQeVVuaWNvZGVfUkVBRFkoKSBpcyBjYWxsZWQuCisKKyAgICAgICBTZWUgYWxzbyBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKS4KKyAgICAqLwogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IGxlbmd0aDsgICAgICAgICAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgUHlfVU5JQ09ERSAqc3RyOyAgICAgICAgICAgIC8qIFJhdyBVbmljb2RlIGJ1ZmZlciAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgICAgICAgICAvKiBOdW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIHN0cmluZyAqLwogICAgIFB5X2hhc2hfdCBoYXNoOyAgICAgICAgICAgICAvKiBIYXNoIHZhbHVlOyAtMSBpZiBub3Qgc2V0ICovCi0gICAgaW50IHN0YXRlOyAgICAgICAgICAgICAgICAgIC8qICE9IDAgaWYgaW50ZXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgdHdvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlZmVyZW5jZXMgZnJvbSB0aGUgZGljdGlvbmFyeSB0byB0aGlzIG9iamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBhcmUgKm5vdCogY291bnRlZCBpbiBvYl9yZWZjbnQuICovCi0gICAgUHlPYmplY3QgKmRlZmVuYzsgICAgICAgICAgIC8qIChEZWZhdWx0KSBFbmNvZGVkIHZlcnNpb24gYXMgUHl0aG9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZywgb3IgTlVMTDsgdGhpcyBpcyB1c2VkIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRpbmcgdGhlIGJ1ZmZlciBwcm90b2NvbCAqLworICAgIHN0cnVjdCB7CisgICAgICAgIC8qCisgICAgICAgICAgIFNTVEFURV9OT1RfSU5URVJORUQgKDApCisgICAgICAgICAgIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgKDEpCisgICAgICAgICAgIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAoMikKKworICAgICAgICAgICBJZiBpbnRlcm5lZCAhPSBTU1RBVEVfTk9UX0lOVEVSTkVELCB0aGUgdHdvIHJlZmVyZW5jZXMgZnJvbSB0aGUKKyAgICAgICAgICAgZGljdGlvbmFyeSB0byB0aGlzIG9iamVjdCBhcmUgKm5vdCogY291bnRlZCBpbiBvYl9yZWZjbnQuCisgICAgICAgICAqLworICAgICAgICB1bnNpZ25lZCBpbnQgaW50ZXJuZWQ6MjsKKyAgICAgICAgLyogQ2hhcmFjdGVyIHNpemU6CisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfV0NIQVJfS0lORCAoMCk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gd2NoYXJfdCAoMTYgb3IgMzIgYml0cywgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgICAgICAgICAgcGxhdGZvcm0pCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfMUJZVEVfS0lORCAoMSk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTMSAoOCBiaXRzLCB1bnNpZ25lZCkKKyAgICAgICAgICAgICAqIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDBGRiAobGF0aW4xKQorICAgICAgICAgICAgICogaWYgYXNjaWkgaXMgc2V0LCBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzAwN0YKKyAgICAgICAgICAgICAgIChBU0NJSSksIG90aGVyd2lzZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZQorICAgICAgICAgICAgICAgVSswMDgwLVUrMDBGRgorCisgICAgICAgICAgIC0gUHlVbmljb2RlXzJCWVRFX0tJTkQgKDIpOgorCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXIgdHlwZSA9IFB5X1VDUzIgKDE2IGJpdHMsIHVuc2lnbmVkKQorICAgICAgICAgICAgICogYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVStGRkZGIChCTVApCisgICAgICAgICAgICAgKiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZSBVKzAxMDAtVStGRkZGCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfNEJZVEVfS0lORCAoNCk6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTNCAoMzIgYml0cywgdW5zaWduZWQpCisgICAgICAgICAgICAgKiBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzEwRkZGRgorICAgICAgICAgICAgICogYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpcyBpbiB0aGUgcmFuZ2UgVSsxMDAwMC1VKzEwRkZGRgorICAgICAgICAgKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQ6MzsKKyAgICAgICAgLyogQ29tcGFjdCBpcyB3aXRoIHJlc3BlY3QgdG8gdGhlIGFsbG9jYXRpb24gc2NoZW1lLiBDb21wYWN0IHVuaWNvZGUKKyAgICAgICAgICAgb2JqZWN0cyBvbmx5IHJlcXVpcmUgb25lIG1lbW9yeSBibG9jayB3aGlsZSBub24tY29tcGFjdCBvYmplY3RzIHVzZQorICAgICAgICAgICBvbmUgYmxvY2sgZm9yIHRoZSBQeVVuaWNvZGVPYmplY3Qgc3RydWN0IGFuZCBhbm90aGVyIGZvciBpdHMgZGF0YQorICAgICAgICAgICBidWZmZXIuICovCisgICAgICAgIHVuc2lnbmVkIGludCBjb21wYWN0OjE7CisgICAgICAgIC8qIFRoZSBzdHJpbmcgb25seSBjb250YWlucyBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMDdGIChBU0NJSSkKKyAgICAgICAgICAgYW5kIHRoZSBraW5kIGlzIFB5VW5pY29kZV8xQllURV9LSU5ELiBJZiBhc2NpaSBpcyBzZXQgYW5kIGNvbXBhY3QgaXMKKyAgICAgICAgICAgc2V0LCB1c2UgdGhlIFB5QVNDSUlPYmplY3Qgc3RydWN0dXJlLiAqLworICAgICAgICB1bnNpZ25lZCBpbnQgYXNjaWk6MTsKKyAgICAgICAgLyogVGhlIHJlYWR5IGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG9iamVjdCBsYXlvdXQgaXMgaW5pdGlhbGl6ZWQKKyAgICAgICAgICAgY29tcGxldGVseS4gVGhpcyBtZWFucyB0aGF0IHRoaXMgaXMgZWl0aGVyIGEgY29tcGFjdCBvYmplY3QsIG9yCisgICAgICAgICAgIHRoZSBkYXRhIHBvaW50ZXIgaXMgZmlsbGVkIG91dC4gVGhlIGJpdCBpcyByZWR1bmRhbnQsIGFuZCBoZWxwcworICAgICAgICAgICB0byBtaW5pbWl6ZSB0aGUgdGVzdCBpbiBQeVVuaWNvZGVfSVNfUkVBRFkoKS4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IHJlYWR5OjE7CisgICAgfSBzdGF0ZTsKKyAgICB3Y2hhcl90ICp3c3RyOyAgICAgICAgICAgICAgLyogd2NoYXJfdCByZXByZXNlbnRhdGlvbiAobnVsbC10ZXJtaW5hdGVkKSAqLworfSBQeUFTQ0lJT2JqZWN0OworCisvKiBOb24tQVNDSUkgc3RyaW5ncyBhbGxvY2F0ZWQgdGhyb3VnaCBQeVVuaWNvZGVfTmV3IHVzZSB0aGUKKyAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3Qgc3RydWN0dXJlLiBzdGF0ZS5jb21wYWN0IGlzIHNldCwgYW5kIHRoZSBkYXRhCisgICBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIHN0cnVjdHVyZS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeUFTQ0lJT2JqZWN0IF9iYXNlOworICAgIFB5X3NzaXplX3QgdXRmOF9sZW5ndGg7ICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgaW4gdXRmOCwgZXhjbHVkaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0ZXJtaW5hdGluZyBcMC4gKi8KKyAgICBjaGFyICp1dGY4OyAgICAgICAgICAgICAgICAgLyogVVRGLTggcmVwcmVzZW50YXRpb24gKG51bGwtdGVybWluYXRlZCkgKi8KKyAgICBQeV9zc2l6ZV90IHdzdHJfbGVuZ3RoOyAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHdzdHIsIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1cnJvZ2F0ZXMgY291bnQgYXMgdHdvIGNvZGUgcG9pbnRzLiAqLworfSBQeUNvbXBhY3RVbmljb2RlT2JqZWN0OworCisvKiBTdHJpbmdzIGFsbG9jYXRlZCB0aHJvdWdoIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBsZW4pIHVzZSB0aGUKKyAgIFB5VW5pY29kZU9iamVjdCBzdHJ1Y3R1cmUuIFRoZSBhY3R1YWwgc3RyaW5nIGRhdGEgaXMgaW5pdGlhbGx5IGluIHRoZSB3c3RyCisgICBibG9jaywgYW5kIGNvcGllZCBpbnRvIHRoZSBkYXRhIGJsb2NrIHVzaW5nIF9QeVVuaWNvZGVfUmVhZHkuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCBfYmFzZTsKKyAgICB1bmlvbiB7CisgICAgICAgIHZvaWQgKmFueTsKKyAgICAgICAgUHlfVUNTMSAqbGF0aW4xOworICAgICAgICBQeV9VQ1MyICp1Y3MyOworICAgICAgICBQeV9VQ1M0ICp1Y3M0OworICAgIH0gZGF0YTsgICAgICAgICAgICAgICAgICAgICAvKiBDYW5vbmljYWwsIHNtYWxsZXN0LWZvcm0gVW5pY29kZSBidWZmZXIgKi8KIH0gUHlVbmljb2RlT2JqZWN0OwogI2VuZGlmCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVVuaWNvZGVfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVVuaWNvZGVJdGVyX1R5cGU7CiAKLSNkZWZpbmUgU1NUQVRFX05PVF9JTlRFUk5FRCAwCi0jZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9NT1JUQUwgMQotI2RlZmluZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUwgMgotCiAjZGVmaW5lIFB5VW5pY29kZV9DaGVjayhvcCkgXAogICAgICAgICAgICAgICAgICBQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX1VOSUNPREVfU1VCQ0xBU1MpCiAjZGVmaW5lIFB5VW5pY29kZV9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5VW5pY29kZV9UeXBlKQogCiAvKiBGYXN0IGFjY2VzcyBtYWNyb3MgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlVbmljb2RlX0dFVF9TSVpFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+bGVuZ3RoKSkKKworI2RlZmluZSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApIFwKKyAgICAoUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCopb3ApLT5sZW5ndGggOiAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKW9wKS0+d3N0cl9sZW5ndGgpCisKKy8qIFJldHVybnMgdGhlIGRlcHJlY2F0ZWQgUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbidzIHNpemUgaW4gY29kZSB1bml0cworICAgKHRoaXMgaW5jbHVkZXMgc3Vycm9nYXRlIHBhaXJzIGFzIDIgdW5pdHMpLgorICAgSWYgdGhlIFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IGF2YWlsYWJsZSwgaXQgd2lsbCBiZSBjb21wdXRlZAorICAgb24gcmVxdWVzdC4gIFVzZSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgpIGZvciB0aGUgbGVuZ3RoIGluIGNvZGUgcG9pbnRzLiAqLworCisjZGVmaW5lIFB5VW5pY29kZV9HRVRfU0laRShvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpID8gICAgICAgICAgICAgICBcCisgICAgICBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApIDogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICgodm9pZClQeVVuaWNvZGVfQXNVbmljb2RlKChQeU9iamVjdCAqKShvcCkpLCAgXAorICAgICAgIGFzc2VydCgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0ciksICAgICAgICBcCisgICAgICAgUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSkpCisKICNkZWZpbmUgUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5sZW5ndGggKiBzaXplb2YoUHlfVU5JQ09ERSkpKQorICAgIChQeVVuaWNvZGVfR0VUX1NJWkUob3ApICogUHlfVU5JQ09ERV9TSVpFKQorCisvKiBBbGlhcyBmb3IgUHlVbmljb2RlX0FzVW5pY29kZSgpLiAgVGhpcyB3aWxsIGNyZWF0ZSBhIHdjaGFyX3QvUHlfVU5JQ09ERQorICAgcmVwcmVzZW50YXRpb24gb24gZGVtYW5kLiAgVXNpbmcgdGhpcyBtYWNybyBpcyB2ZXJ5IGluZWZmaWNpZW50IG5vdywKKyAgIHRyeSB0byBwb3J0IHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBQeVVuaWNvZGVfKkJZVEVfREFUQSgpIG1hY3JvcyBvcgorICAgdXNlIFB5VW5pY29kZV9XUklURSgpIGFuZCBQeVVuaWNvZGVfUkVBRCgpLiAqLworCiAjZGVmaW5lIFB5VW5pY29kZV9BU19VTklDT0RFKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RyKSkKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0cikgPyAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPndzdHIpIDogXAorICAgICAgUHlVbmljb2RlX0FzVW5pY29kZSgoUHlPYmplY3QgKikob3ApKSkKKwogI2RlZmluZSBQeVVuaWNvZGVfQVNfREFUQShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKChjb25zdCBjaGFyICopKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RyKSkKKyAgICAoKGNvbnN0IGNoYXIgKikoUHlVbmljb2RlX0FTX1VOSUNPREUob3ApKSkKKworCisvKiAtLS0gRmxleGlibGUgU3RyaW5nIFJlcHJlc2VudGF0aW9uIEhlbHBlciBNYWNyb3MgKFBFUCAzOTMpIC0tLS0tLS0tLS0tLS0tICovCisKKy8qIFZhbHVlcyBmb3IgUHlBU0NJSU9iamVjdC5zdGF0ZTogKi8KKworLyogSW50ZXJuaW5nIHN0YXRlLiAqLworI2RlZmluZSBTU1RBVEVfTk9UX0lOVEVSTkVEIDAKKyNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX01PUlRBTCAxCisjZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAyCisKKy8qIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLCBvciAwIGlmIG5vdC4gVGhlCisgICBzdHJpbmcgbWF5IGJlIGNvbXBhY3QgKFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKSBvciBub3QsIGJ1dCBtdXN0IGJlCisgICByZWFkeS4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0lTX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0KilvcCktPnN0YXRlLmFzY2lpKQorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGNvbXBhY3Qgb3IgMCBpZiBub3QuCisgICBObyB0eXBlIGNoZWNrcyBvciBSZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKShvcCkpLT5zdGF0ZS5jb21wYWN0KQorCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgY29tcGFjdCBBU0NJSSBzdHJpbmcgKHVzZSBQeUFTQ0lJT2JqZWN0CisgICBzdHJ1Y3R1cmUpLCBvciAwIGlmIG5vdC4gIE5vIHR5cGUgY2hlY2tzIG9yIFJlYWR5IGNhbGxzIGFyZSBwZXJmb3JtZWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKW9wKS0+c3RhdGUuYXNjaWkgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApKQorCitlbnVtIFB5VW5pY29kZV9LaW5kIHsKKy8qIFN0cmluZyBjb250YWlucyBvbmx5IHdzdHIgYnl0ZSBjaGFyYWN0ZXJzLiAgVGhpcyBpcyBvbmx5IHBvc3NpYmxlCisgICB3aGVuIHRoZSBzdHJpbmcgd2FzIGNyZWF0ZWQgd2l0aCBhIGxlZ2FjeSBBUEkgYW5kIF9QeVVuaWNvZGVfUmVhZHkoKQorICAgaGFzIG5vdCBiZWVuIGNhbGxlZCB5ZXQuICAqLworICAgIFB5VW5pY29kZV9XQ0hBUl9LSU5EID0gMCwKKy8qIFJldHVybiB2YWx1ZXMgb2YgdGhlIFB5VW5pY29kZV9LSU5EKCkgbWFjcm86ICovCisgICAgUHlVbmljb2RlXzFCWVRFX0tJTkQgPSAxLAorICAgIFB5VW5pY29kZV8yQllURV9LSU5EID0gMiwKKyAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCA9IDQKK307CisKKy8qIFJldHVybiBwb2ludGVycyB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gdW5zaWduZWQgY2hhciwKKyAgIFB5X1VDUzIsIG9yIFB5X1VDUzQgZm9yIGRpcmVjdCBjaGFyYWN0ZXIgYWNjZXNzLgorICAgTm8gY2hlY2tzIGFyZSBwZXJmb3JtZWQsIHVzZSBQeVVuaWNvZGVfS0lORCgpIGJlZm9yZSB0byBlbnN1cmUKKyAgIHRoZXNlIHdpbGwgd29yayBjb3JyZWN0bHkuICovCisKKyNkZWZpbmUgUHlVbmljb2RlXzFCWVRFX0RBVEEob3ApICgoUHlfVUNTMSopUHlVbmljb2RlX0RBVEEob3ApKQorI2RlZmluZSBQeVVuaWNvZGVfMkJZVEVfREFUQShvcCkgKChQeV9VQ1MyKilQeVVuaWNvZGVfREFUQShvcCkpCisjZGVmaW5lIFB5VW5pY29kZV80QllURV9EQVRBKG9wKSAoKFB5X1VDUzQqKVB5VW5pY29kZV9EQVRBKG9wKSkKKworLyogUmV0dXJuIG9uZSBvZiB0aGUgUHlVbmljb2RlXypfS0lORCB2YWx1ZXMgZGVmaW5lZCBhYm92ZS4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0tJTkQob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5zdGF0ZS5raW5kKQorCisvKiBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9DT01QQUNUX0RBVEEob3ApICAgICAgICAgICAgICAgICAgICAgXAorICAgIChQeVVuaWNvZGVfSVNfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAoKHZvaWQqKSgoUHlBU0NJSU9iamVjdCopKG9wKSArIDEpKSA6ICAgICAgICAgICAgICBcCisgICAgICgodm9pZCopKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApICsgMSkpKQorCisjZGVmaW5lIF9QeVVuaWNvZGVfTk9OQ09NUEFDVF9EQVRBKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KCgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpLCAgICAgICAgXAorICAgICAoKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPmRhdGEuYW55KSkpCisKKyNkZWZpbmUgUHlVbmljb2RlX0RBVEEob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSA/IF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKG9wKSA6ICAgXAorICAgICBfUHlVbmljb2RlX05PTkNPTVBBQ1RfREFUQShvcCkpCisKKy8qIEluIHRoZSBhY2Nlc3MgbWFjcm9zIGJlbG93LCAia2luZCIgbWF5IGJlIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KKyAgIEFsbCBvdGhlciBtYWNybyBwYXJhbWV0ZXJzIGFyZSBldmFsdWF0ZWQgZXhhY3RseSBvbmNlLCBzbyBpdCBpcyBzYWZlCisgICB0byBwdXQgc2lkZSBlZmZlY3RzIGludG8gdGhlbSAoc3VjaCBhcyBpbmNyZWFzaW5nIHRoZSBpbmRleCkuICovCisKKy8qIFdyaXRlIGludG8gdGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiwgdGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5CisgICBjaGVja3MgYW5kIGlzIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZQorICAga2luZCBhbmQgZGF0YSBwb2ludGVycyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLgorICAgaW5kZXggaXMgdGhlIGluZGV4IGluIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgdmFsdWUgaXMgdGhlIG5ldworICAgY29kZSBwb2ludCB2YWx1ZSB3aGljaCBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGF0IGxvY2F0aW9uLiAqLworI2RlZmluZSBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaW5kZXgsIHZhbHVlKSBcCisgICAgZG8geyBcCisgICAgICAgIHN3aXRjaCAoKGtpbmQpKSB7IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeyBcCisgICAgICAgICAgICAoKFB5X1VDUzEgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzEpKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgKChQeV9VQ1MyICopKGRhdGEpKVsoaW5kZXgpXSA9IChQeV9VQ1MyKSh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWZhdWx0OiB7IFwKKyAgICAgICAgICAgIGFzc2VydCgoa2luZCkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOyBcCisgICAgICAgICAgICAoKFB5X1VDUzQgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzQpKHZhbHVlKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVhZCBhIGNvZGUgcG9pbnQgZnJvbSB0aGUgc3RyaW5nJ3MgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uLiAgTm8gY2hlY2tzCisgICBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCkgXAorICAgICgoUHlfVUNTNCkgXAorICAgICgoa2luZCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgPyBcCisgICAgICAgICgoY29uc3QgUHlfVUNTMSAqKShkYXRhKSlbKGluZGV4KV0gOiBcCisgICAgICAgICgoa2luZCkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQgPyBcCisgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzIgKikoZGF0YSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgKChjb25zdCBQeV9VQ1M0ICopKGRhdGEpKVsoaW5kZXgpXSBcCisgICAgICAgICkgXAorICAgICkpCisKKy8qIFB5VW5pY29kZV9SRUFEX0NIQVIoKSBpcyBsZXNzIGVmZmljaWVudCB0aGFuIFB5VW5pY29kZV9SRUFEKCkgYmVjYXVzZSBpdAorICAgY2FsbHMgUHlVbmljb2RlX0tJTkQoKSBhbmQgbWlnaHQgY2FsbCBpdCB0d2ljZS4gIEZvciBzaW5nbGUgcmVhZHMsIHVzZQorICAgUHlVbmljb2RlX1JFQURfQ0hBUiwgZm9yIG11bHRpcGxlIGNvbnNlY3V0aXZlIHJlYWRzIGNhbGxlcnMgc2hvdWxkCisgICBjYWNoZSBraW5kIGFuZCB1c2UgUHlVbmljb2RlX1JFQUQgaW5zdGVhZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBpbmRleCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSwgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKSwgICAgICAgXAorICAgICAoUHlfVUNTNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoUHlVbmljb2RlX0tJTkQoKHVuaWNvZGUpKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICgoY29uc3QgUHlfVUNTMSAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gOiBcCisgICAgICAgICAgICAoUHlVbmljb2RlX0tJTkQoKHVuaWNvZGUpKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzIgKikoUHlVbmljb2RlX0RBVEEoKHVuaWNvZGUpKSkpWyhpbmRleCldIDogXAorICAgICAgICAgICAgICAgICgoY29uc3QgUHlfVUNTNCAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gXAorICAgICAgICAgICAgKSBcCisgICAgICAgICkpCisKKy8qIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdW5pY29kZSBzdHJpbmcuIFRoZSBjYWxsZXIgaGFzIHRvIG1ha2Ugc3VyZSB0aGF0CisgICB0aGUgc3RyaW5nIGhhcyBpdCdzIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBzZXQgYmVmb3JlIGNhbGxpbmcKKyAgIHRoaXMgbWFjcm8uICBDYWxsIFB5VW5pY29kZV8oRkFTVF8pUmVhZHkgdG8gZW5zdXJlIHRoYXQuICovCisjZGVmaW5lIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisKKworLyogRmFzdCBjaGVjayB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBvYmplY3QgaXMgcmVhZHkuIEVxdWl2YWxlbnQgdG8KKyAgIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSB8fCAoKFB5VW5pY29kZU9iamVjdCopKG9wKSktPmRhdGEuYW55KSAqLworCisjZGVmaW5lIFB5VW5pY29kZV9JU19SRUFEWShvcCkgKCgoUHlBU0NJSU9iamVjdCopb3ApLT5zdGF0ZS5yZWFkeSkKKworLyogUHlVbmljb2RlX1JFQURZKCkgZG9lcyBsZXNzIHdvcmsgdGhhbiBfUHlVbmljb2RlX1JlYWR5KCkgaW4gdGhlIGJlc3QKKyAgIGNhc2UuICBJZiB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGlzIG5vdCB5ZXQgc2V0LCBpdCB3aWxsIHN0aWxsIGNhbGwKKyAgIF9QeVVuaWNvZGVfUmVhZHkoKS4KKyAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCAtMSBvbiBlcnJvcnMuICovCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEWShvcCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFB5VW5pY29kZV9JU19SRUFEWShvcCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgMCA6IF9QeVVuaWNvZGVfUmVhZHkoKFB5T2JqZWN0ICopKG9wKSkpKQorCisvKiBSZXR1cm4gYSBtYXhpbXVtIGNoYXJhY3RlciB2YWx1ZSB3aGljaCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlcgorICAgc3RyaW5nIGJhc2VkIG9uIG9wLiAgVGhpcyBpcyBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQKKyAgIHRoYW4gaXRlcmF0aW5nIG92ZXIgdGhlIHN0cmluZy4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9wKSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoMHg3ZikgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoUHlVbmljb2RlX0tJTkQob3ApID09IFB5VW5pY29kZV8xQllURV9LSU5EID8gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKDB4ZmZVKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKFB5VW5pY29kZV9LSU5EKG9wKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgweGZmZmZVKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICgweDEwZmZmZlUpKSkpKQorCiAjZW5kaWYKIAogLyogLS0tIENvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC00MTgsMTIgKzU4NiwxMDcgQEAKICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrRkZGRCBpcyB0aGUgb2ZmaWNpYWwgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSIGluCiAgICBVbmljb2RlIDMuMC4gKi8KIAotI2RlZmluZSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUiAoKFB5X1VOSUNPREUpIDB4RkZGRCkKKyNkZWZpbmUgUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIgKChQeV9VQ1M0KSAweEZGRkQpCiAKIC8qID09PSBQdWJsaWMgQVBJID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCiAvKiAtLS0gUGxhaW4gUHlfVU5JQ09ERSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAorLyogV2l0aCBQRVAgMzkzLCB0aGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gYWxsb2NhdGUgYSBuZXcgdW5pY29kZSBvYmplY3QuCisgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGUgdGhlIG9iamVjdCBhbmQgaXRzIGJ1ZmZlciBpbiBhIHNpbmdsZSBtZW1vcnkKKyAgIGJsb2NrLiAgT2JqZWN0cyBjcmVhdGVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCByZXNpemFibGUuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX05ldygKKyAgICBQeV9zc2l6ZV90IHNpemUsICAgICAgICAgICAgLyogTnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBuZXcgc3RyaW5nICovCisgICAgUHlfVUNTNCBtYXhjaGFyICAgICAgICAgICAgIC8qIG1heGltdW0gY29kZSBwb2ludCB2YWx1ZSBpbiB0aGUgc3RyaW5nICovCisgICAgKTsKKyNlbmRpZgorCisvKiBJbml0aWFsaXplcyB0aGUgY2Fub25pY2FsIHN0cmluZyByZXByZXNlbnRhdGlvbiBmcm9tIGEgdGhlIGRlcHJlY2F0ZWQKKyAgIHdzdHIvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZQorICAgb2JqZWN0cyB3aGljaCB3ZXJlIGNyZWF0ZWQgdXNpbmcgdGhlIG9sZCBBUEkgdG8gdGhlIG5ldyBmbGV4aWJsZSBmb3JtYXQKKyAgIGludHJvZHVjZWQgd2l0aCBQRVAgMzkzLgorCisgICBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgcHVibGljIFB5VW5pY29kZV9SRUFEWSgpIG1hY3JvCisgICBpbnN0ZWFkLiAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfUmVhZHkoCisgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgKTsKKyNlbmRpZgorCisvKiBHZXQgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Db3B5KAorICAgIFB5T2JqZWN0ICp1bmljb2RlCisgICAgKTsKKyNlbmRpZgorCisvKiBDb3B5IGNoYXJhY3RlciBmcm9tIG9uZSB1bmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIsIHRoaXMgZnVuY3Rpb24gcGVyZm9ybXMKKyAgIGNoYXJhY3RlciBjb252ZXJzaW9uIHdoZW4gbmVjZXNzYXJ5IGFuZCBmYWxscyBiYWNrIHRvIG1lbWNweSgpIGlmIHBvc3NpYmxlLgorCisgICBGYWlsIGlmIHRvIGlzIHRvbyBzbWFsbCAoc21hbGxlciB0aGFuICpob3dfbWFueSogb3Igc21hbGxlciB0aGFuCisgICBsZW4oZnJvbSktZnJvbV9zdGFydCksIG9yIGlmIGtpbmQoZnJvbVtmcm9tX3N0YXJ0OmZyb21fc3RhcnQraG93X21hbnldKSA+CisgICBraW5kKHRvKSwgb3IgaWYgKnRvKiBoYXMgbW9yZSB0aGFuIDEgcmVmZXJlbmNlLgorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3Rlciwgb3IgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24KKyAgIG9uIGVycm9yLgorCisgICBQc2V1ZG8tY29kZToKKworICAgICAgIGhvd19tYW55ID0gbWluKGhvd19tYW55LCBsZW4oZnJvbSkgLSBmcm9tX3N0YXJ0KQorICAgICAgIHRvW3RvX3N0YXJ0OnRvX3N0YXJ0K2hvd19tYW55XSA9IGZyb21bZnJvbV9zdGFydDpmcm9tX3N0YXJ0K2hvd19tYW55XQorICAgICAgIHJldHVybiBob3dfbWFueQorCisgICBOb3RlOiBUaGUgZnVuY3Rpb24gZG9lc24ndCB3cml0ZSBhIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLgorICAgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKAorICAgIFB5T2JqZWN0ICp0bywKKyAgICBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgIFB5T2JqZWN0ICpmcm9tLAorICAgIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICBQeV9zc2l6ZV90IGhvd19tYW55CisgICAgKTsKKworLyogVW5zYWZlIHZlcnNpb24gb2YgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCk6IGRvbid0IGNoZWNrIGFyZ3VtZW50cyBhbmQgc28KKyAgIG1heSBjcmFzaCBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIChlLmcuIGlmIHRoZSBvdXRwdXQgc3RyaW5nCisgICBpcyB0b28gc2hvcnQpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sCisgICAgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICBQeU9iamVjdCAqZnJvbSwKKyAgICBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgUHlfc3NpemVfdCBob3dfbWFueQorICAgICk7CisjZW5kaWYKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogRmlsbCBhIHN0cmluZyB3aXRoIGEgY2hhcmFjdGVyOiB3cml0ZSBmaWxsX2NoYXIgaW50bworICAgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdLgorCisgICBGYWlsIGlmIGZpbGxfY2hhciBpcyBiaWdnZXIgdGhhbiB0aGUgc3RyaW5nIG1heGltdW0gY2hhcmFjdGVyLCBvciBpZiB0aGUKKyAgIHN0cmluZyBoYXMgbW9yZSB0aGFuIDEgcmVmZXJlbmNlLgorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiB3cml0dGVuIGNoYXJhY3Rlciwgb3IgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24KKyAgIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfRmlsbCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgIFB5X1VDUzQgZmlsbF9jaGFyCisgICAgKTsKKworLyogVW5zYWZlIHZlcnNpb24gb2YgUHlVbmljb2RlX0ZpbGwoKTogZG9uJ3QgY2hlY2sgYXJndW1lbnRzIGFuZCBzbyBtYXkgY3Jhc2gKKyAgIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgKGUuZy4gaWYgbGVuZ3RoIGlzIGxvbmdlciB0aGFuIHRoZSBzdHJpbmcpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0Zhc3RGaWxsKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgUHlfVUNTNCBmaWxsX2NoYXIKKyAgICApOworI2VuZGlmCisKIC8qIENyZWF0ZSBhIFVuaWNvZGUgT2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyIHUgb2YgdGhlIGdpdmVuCiAgICBzaXplLgogCkBAIC00NDgsMTMgKzcxMSw2MCBAQAogICAgICk7CiAKIC8qIFNpbWlsYXIgdG8gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCksIGJ1dCB1IHBvaW50cyB0byBudWxsLXRlcm1pbmF0ZWQKLSAgIFVURi04IGVuY29kZWQgYnl0ZXMgKi8KKyAgIFVURi04IGVuY29kZWQgYnl0ZXMuICBUaGUgc2l6ZSBpcyBkZXRlcm1pbmVkIHdpdGggc3RybGVuKCkuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21TdHJpbmcoCiAgICAgY29uc3QgY2hhciAqdSAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBDcmVhdGUgYSBuZXcgc3RyaW5nIGZyb20gYSBidWZmZXIgb2YgUHlfVUNTMSwgUHlfVUNTMiBvciBQeV9VQ1M0IGNoYXJhY3RlcnMuCisgICBTY2FuIHRoZSBzdHJpbmcgdG8gZmluZCB0aGUgbWF4aW11bSBjaGFyYWN0ZXIuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICBpbnQga2luZCwKKyAgICBjb25zdCB2b2lkICpidWZmZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogQ3JlYXRlIGEgbmV3IHN0cmluZyBmcm9tIGEgYnVmZmVyIG9mIEFTQ0lJIGNoYXJhY3RlcnMuCisgICBXQVJOSU5HOiBEb24ndCBjaGVjayBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGFueSBub24tQVNDSUkgY2hhcmFjdGVyLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKAorICAgIGNvbnN0IGNoYXIgKmJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfU3Vic3RyaW5nKAorICAgIFB5T2JqZWN0ICpzdHIsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyIG9mIHRoZSBzdWJzdHJpbmcgdW5pY29kZVtzdGFydDplbmRdLgorICAgUmV0dXJuIDEyNyBmb3IgYW4gZW1wdHkgc3RyaW5nLiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyICgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKKyNlbmRpZgorCisvKiBDb3B5IHRoZSBzdHJpbmcgaW50byBhIFVDUzQgYnVmZmVyIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaWYgY29weV9udWxsCisgICBpcyBzZXQuIFJldHVybiBOVUxMIGFuZCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuIFJhaXNlIGEgVmFsdWVFcnJvciBpZgorICAgdGhlIGJ1ZmZlciBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cmluZy4gUmV0dXJuIGJ1ZmZlciBvbiBzdWNjZXNzLgorCisgICBidWZsZW4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIChQeV9VQ1M0KSBjaGFyYWN0ZXJzLiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KikgUHlVbmljb2RlX0FzVUNTNCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9VQ1M0KiBidWZmZXIsCisgICAgUHlfc3NpemVfdCBidWZsZW4sCisgICAgaW50IGNvcHlfbnVsbCk7CisKKy8qIENvcHkgdGhlIHN0cmluZyBpbnRvIGEgVUNTNCBidWZmZXIuIEEgbmV3IGJ1ZmZlciBpcyBhbGxvY2F0ZWQgdXNpbmcKKyAqIFB5TWVtX01hbGxvYzsgaWYgdGhpcyBmYWlscywgTlVMTCBpcyByZXR1cm5lZCB3aXRoIGEgbWVtb3J5IGVycm9yCisgICBleGNlcHRpb24gc2V0LiAqLworUHlBUElfRlVOQyhQeV9VQ1M0KikgUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnVuaWNvZGUpOworCiAvKiBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAotICAgUHlfVU5JQ09ERSBidWZmZXIuICovCisgICBQeV9VTklDT0RFIGJ1ZmZlci4KKyAgIElmIHRoZSB3Y2hhcl90L1B5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaXMgbm90IHlldCBhdmFpbGFibGUsIHRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgY2FsY3VsYXRlIGl0LiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5X1VOSUNPREUgKikgUHlVbmljb2RlX0FzVW5pY29kZSgKQEAgLTQ2MiwzMCArNzcyLDY5IEBACiAgICAgKTsKICNlbmRpZgogCisvKiBSZXR1cm4gYSByZWFkLW9ubHkgcG9pbnRlciB0byB0aGUgVW5pY29kZSBvYmplY3QncyBpbnRlcm5hbAorICAgUHlfVU5JQ09ERSBidWZmZXIgYW5kIHNhdmUgdGhlIGxlbmd0aCBhdCBzaXplLgorICAgSWYgdGhlIHdjaGFyX3QvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpcyBub3QgeWV0IGF2YWlsYWJsZSwgdGhpcworICAgZnVuY3Rpb24gd2lsbCBjYWxjdWxhdGUgaXQuICovCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfVU5JQ09ERSAqKSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBQeV9zc2l6ZV90ICpzaXplICAgICAgICAgICAgLyogbG9jYXRpb24gd2hlcmUgdG8gc2F2ZSB0aGUgbGVuZ3RoICovCisgICAgKTsKKyNlbmRpZgorCiAvKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBvYmplY3QuICovCiAKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0dldExlbmd0aCgKKyAgICBQeU9iamVjdCAqdW5pY29kZQorKTsKKworLyogR2V0IHRoZSBudW1iZXIgb2YgUHlfVU5JQ09ERSB1bml0cyBpbiB0aGUKKyAgIHN0cmluZyByZXByZXNlbnRhdGlvbi4gKi8KKwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfR2V0U2l6ZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICApOwogCisvKiBSZWFkIGEgY2hhcmFjdGVyIGZyb20gdGhlIHN0cmluZy4gKi8KKworUHlBUElfRlVOQyhQeV9VQ1M0KSBQeVVuaWNvZGVfUmVhZENoYXIoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBpbmRleAorICAgICk7CisKKy8qIFdyaXRlIGEgY2hhcmFjdGVyIHRvIHRoZSBzdHJpbmcuIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICBQeVVuaWNvZGVfTmV3LCBtdXN0IG5vdCBiZSBzaGFyZWQsIGFuZCBtdXN0IG5vdCBoYXZlIGJlZW4gaGFzaGVkIHlldC4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCisKK1B5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfV3JpdGVDaGFyKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfVUNTNCBjaGFyYWN0ZXIKKyAgICApOworCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBHZXQgdGhlIG1heGltdW0gb3JkaW5hbCBmb3IgYSBVbmljb2RlIGNoYXJhY3Rlci4gKi8KIFB5QVBJX0ZVTkMoUHlfVU5JQ09ERSkgUHlVbmljb2RlX0dldE1heCh2b2lkKTsKICNlbmRpZgogCi0vKiBSZXNpemUgYW4gYWxyZWFkeSBhbGxvY2F0ZWQgVW5pY29kZSBvYmplY3QgdG8gdGhlIG5ldyBzaXplIGxlbmd0aC4KKy8qIFJlc2l6ZSBhbiBVbmljb2RlIG9iamVjdC4gVGhlIGxlbmd0aCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGV4Y2VwdAorICAgaWYgdGhlIGtpbmQgb2YgdGhlIHN0cmluZyBpcyBQeVVuaWNvZGVfV0NIQVJfS0lORDogaW4gdGhpcyBjYXNlLCB0aGUgbGVuZ3RoCisgICBpcyB0aGUgbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcmFjdGVycy4KIAogICAgKnVuaWNvZGUgaXMgbW9kaWZpZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyAocmVzaXplZCkgb2JqZWN0IGFuZCAwCiAgICByZXR1cm5lZCBvbiBzdWNjZXNzLgogCi0gICBUaGlzIEFQSSBtYXkgb25seSBiZSBjYWxsZWQgYnkgdGhlIGZ1bmN0aW9uIHdoaWNoIGFsc28gY2FsbGVkIHRoZQotICAgVW5pY29kZSBjb25zdHJ1Y3Rvci4gVGhlIHJlZmNvdW50IG9uIHRoZSBvYmplY3QgbXVzdCBiZSAxLiBPdGhlcndpc2UsCi0gICBhbiBlcnJvciBpcyByZXR1cm5lZC4KKyAgIFRyeSB0byByZXNpemUgdGhlIHN0cmluZyBpbiBwbGFjZSAod2hpY2ggaXMgdXN1YWxseSBmYXN0ZXIgdGhhbiBhbGxvY2F0aW5nCisgICBhIG5ldyBzdHJpbmcgYW5kIGNvcHkgY2hhcmFjdGVycyksIG9yIGNyZWF0ZSBhIG5ldyBzdHJpbmcuCiAKICAgIEVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkIGFzIGZvbGxvd3M6IGFuIGV4Y2VwdGlvbiBpcyBzZXQsIC0xCiAgICBpcyByZXR1cm5lZCBhbmQgKnVuaWNvZGUgbGVmdCB1bnRvdWNoZWQuCiAKLSovCisgICBXQVJOSU5HOiBUaGUgZnVuY3Rpb24gZG9lc24ndCBjaGVjayBzdHJpbmcgY29udGVudCwgdGhlIHJlc3VsdCBtYXkgbm90IGJlIGEKKyAgICAgICAgICAgIHN0cmluZyBpbiBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24uICovCiAKIFB5QVBJX0ZVTkMoaW50KSBQeVVuaWNvZGVfUmVzaXplKAogICAgIFB5T2JqZWN0ICoqdW5pY29kZSwgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCAqLwpAQCAtNTQyLDExICs4OTEsNjcgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgcG9zOworICAgIC8qIG1pbmltdW0gbGVuZ3RoIG9mIHRoZSBidWZmZXIgd2hlbiBvdmVyYWxsb2NhdGlvbiBpcyBlbmFibGVkLAorICAgICAgIHNlZSBfUHlVbmljb2RlV3JpdGVyX0luaXQoKSAqLworICAgIFB5X3NzaXplX3QgbWluX2xlbmd0aDsKKyAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKKyAgICAvKiBJZiByZWFkb25seSBpcyAxLCBidWZmZXIgaXMgYSBzaGFyZWQgc3RyaW5nIChjYW5ub3QgYmUgbW9kaWZpZWQpCisgICAgICAgYW5kIHNpemUgaXMgc2V0IHRvIDAuICovCisgICAgdW5zaWduZWQgY2hhciByZWFkb25seTsKK30gX1B5VW5pY29kZVdyaXRlciA7CisKKy8qIEluaXRpYWxpemUgYSBVbmljb2RlIHdyaXRlci4KKworICAgSWYgbWluX2xlbmd0aCBpcyBncmVhdGVyIHRoYW4gemVybywgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkKKyAgIG92ZXJhbGxvY2F0ZXMgdGhlIGJ1ZmZlciBhbmQgbWluX2xlbmd0aCBpcyB0aGUgbWluaW11bSBsZW5ndGggaW4gY2hhcmFjdGVycworICAgb2YgdGhlIGJ1ZmZlci4gKi8KK1B5QVBJX0ZVTkModm9pZCkKK19QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3QgbWluX2xlbmd0aCk7CisKKy8qIFByZXBhcmUgdGhlIGJ1ZmZlciB0byB3cml0ZSAnbGVuZ3RoJyBjaGFyYWN0ZXJzCisgICB3aXRoIHRoZSBzcGVjaWZpZWQgbWF4aW11bSBjaGFyYWN0ZXIuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworI2RlZmluZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoV1JJVEVSLCBMRU5HVEgsIE1BWENIQVIpICAgICAgICAgICAgIFwKKyAgICAoKChNQVhDSEFSKSA8PSAoV1JJVEVSKS0+bWF4Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiAoTEVOR1RIKSA8PSAoV1JJVEVSKS0+c2l6ZSAtIChXUklURVIpLT5wb3MpICAgICAgICAgICAgICAgICAgXAorICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiAoKChMRU5HVEgpID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICA6IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKChXUklURVIpLCAoTEVOR1RIKSwgKE1BWENIQVIpKSkpCisKKy8qIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKSBtYWNybworICAgaW5zdGVhZC4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcik7CisKK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5T2JqZWN0ICpzdHIpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopCitfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpOworCitQeUFQSV9GVU5DKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKTsKKyNlbmRpZgorCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYKIAogUHlBUElfRlVOQyh2b2lkKSBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKik7CkBAIC01NTksNyArOTY0LDggQEAKICNlbmRpZgogCiAvKiBVc2Ugb25seSBpZiB5b3Uga25vdyBpdCdzIGEgc3RyaW5nICovCi0jZGVmaW5lIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChvcCkgKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPnN0YXRlKQorI2RlZmluZSBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQob3ApIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmludGVybmVkKQogCiAvKiAtLS0gd2NoYXJfdCBzdXBwb3J0IGZvciBwbGF0Zm9ybXMgd2hpY2ggc3VwcG9ydCBpdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjA2LDYgKzEwMTIsMTAgQEAKICAgICBQeV9zc2l6ZV90ICpzaXplICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgb2YgdGhlIHJlc3VsdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCopIF9QeVVuaWNvZGVfQXNLaW5kKFB5T2JqZWN0ICpzLCB1bnNpZ25lZCBpbnQga2luZCk7CisjZW5kaWYKKwogI2VuZGlmCiAKIC8qIC0tLSBVbmljb2RlIG9yZGluYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNjUxLDUwICsxMDYxLDQyIEBACiAKIC8qIC0tLSBNYW5hZ2UgdGhlIGRlZmF1bHQgZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBSZXR1cm4gYSBQeXRob24gc3RyaW5nIGhvbGRpbmcgdGhlIGRlZmF1bHQgZW5jb2RlZCB2YWx1ZSBvZiB0aGUKLSAgIFVuaWNvZGUgb2JqZWN0LgotCi0gICBTYW1lIGFzIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoKSBleGNlcHQKLSAgIHRoZSByZXN1bHRpbmcgc3RyaW5nIGlzIGNhY2hlZCBpbiB0aGUgVW5pY29kZSBvYmplY3QgZm9yIHN1YnNlcXVlbnQKLSAgIHVzYWdlIGJ5IHRoaXMgZnVuY3Rpb24uIFRoZSBjYWNoZWQgdmVyc2lvbiBpcyBuZWVkZWQgdG8gaW1wbGVtZW50Ci0gICB0aGUgY2hhcmFjdGVyIGJ1ZmZlciBpbnRlcmZhY2UgYW5kIHdpbGwgbGl2ZSAoYXQgbGVhc3QpIGFzIGxvbmcgYXMKLSAgIHRoZSBVbmljb2RlIG9iamVjdCBpdHNlbGYuCi0KLSAgIFRoZSByZWZjb3VudCBvZiB0aGUgc3RyaW5nIGlzICpub3QqIGluY3JlbWVudGVkLgotCi0gICAqKiogRXhwb3J0ZWQgZm9yIGludGVybmFsIHVzZSBieSB0aGUgaW50ZXJwcmV0ZXIgb25seSAhISEgKioqCi0KLSovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKAotICAgIFB5T2JqZWN0ICp1bmljb2RlLAotICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7Ci0jZW5kaWYKLQogLyogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcgKFVURi04KSBvZiB0aGUKICAgIFVuaWNvZGUgb2JqZWN0IHVuaWNvZGUgYW5kIHRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIHJlcHJlc2VudGF0aW9uCiAgICBpbiBieXRlcyBzdG9yZWQgaW4gKnNpemUuCiAKICAgIEluIGNhc2Ugb2YgYW4gZXJyb3IsIG5vICpzaXplIGlzIHNldC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYWNoZXMgdGhlIFVURi04IGVuY29kZWQgc3RyaW5nIGluIHRoZSB1bmljb2Rlb2JqZWN0CisgICBhbmQgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiB0aGUgc2FtZSBzdHJpbmcuICBUaGUgbWVtb3J5IGlzIHJlbGVhc2VkCisgICB3aGVuIHRoZSB1bmljb2Rlb2JqZWN0IGlzIGRlYWxsb2NhdGVkLgorCisgICBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSBpcyBhICNkZWZpbmUgZm9yIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplIHRvCisgICBzdXBwb3J0IHRoZSBwcmV2aW91cyBpbnRlcm5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIGJlaGF2aW91ci4KKwogICAgKioqIFRoaXMgQVBJIGlzIGZvciBpbnRlcnByZXRlciBJTlRFUk5BTCBVU0UgT05MWSBhbmQgd2lsbCBsaWtlbHkKICAgICoqKiBiZSByZW1vdmVkIG9yIGNoYW5nZWQgaW4gdGhlIGZ1dHVyZS4KIAogICAgKioqIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgVW5pY29kZSBvYmplY3QgYXMgVVRGLTggYnl0ZXMgc3RyaW5nLAogICAgKioqIHBsZWFzZSB1c2UgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGluc3RlYWQuCi0KICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY2hhciAqKSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSgKK1B5QVBJX0ZVTkMoY2hhciAqKSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSwKICAgICBQeV9zc2l6ZV90ICpzaXplKTsKKyNkZWZpbmUgX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUKICNlbmRpZgogCiAvKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBlbmNvZGluZyAoVVRGLTgpIG9mIHRoZQogICAgVW5pY29kZSBvYmplY3QgdW5pY29kZS4KIAorICAgTGlrZSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSgpLCB0aGlzIGFsc28gY2FjaGVzIHRoZSBVVEYtOCByZXByZXNlbnRhdGlvbgorICAgaW4gdGhlIHVuaWNvZGVvYmplY3QuCisKKyAgIF9QeVVuaWNvZGVfQXNTdHJpbmcgaXMgYSAjZGVmaW5lIGZvciBQeVVuaWNvZGVfQXNVVEY4IHRvCisgICBzdXBwb3J0IHRoZSBwcmV2aW91cyBpbnRlcm5hbCBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIGJlaGF2aW91ci4KKwogICAgVXNlIG9mIHRoaXMgQVBJIGlzIERFUFJFQ0FURUQgc2luY2Ugbm8gc2l6ZSBpbmZvcm1hdGlvbiBjYW4gYmUKICAgIGV4dHJhY3RlZCBmcm9tIHRoZSByZXR1cm5lZCBkYXRhLgogCkBAIC03MDcsNyArMTEwOSw4IEBACiAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNoYXIgKikgX1B5VW5pY29kZV9Bc1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSk7CitQeUFQSV9GVU5DKGNoYXIgKikgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdCAqdW5pY29kZSk7CisjZGVmaW5lIF9QeVVuaWNvZGVfQXNTdHJpbmcgUHlVbmljb2RlX0FzVVRGOAogI2VuZGlmCiAKIC8qIFJldHVybnMgInV0Zi04Ii4gICovCkBAIC04MTIsNiArMTIxNSwxMiBAQAogICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLCAgICAgICAvKiBFbmNvZGUgd2hpdGVzcGFjZSAoc3AsIGh0LCBubCwgY3IpIGluIGJhc2U2NCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVVVEY3KAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGludCBiYXNlNjRTZXRPLCAgICAgICAgICAgICAvKiBFbmNvZGUgUkZDMjE1MiBTZXQgTyBjaGFyYWN0ZXJzIGluIGJhc2U2NCAqLworICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLCAgICAgICAvKiBFbmNvZGUgd2hpdGVzcGFjZSAoc3AsIGh0LCBubCwgY3IpIGluIGJhc2U2NCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogLS0tIFVURi04IENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC04MzQsNiArMTI0MywxMCBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZygKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZVVURjgoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogbnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC05MTUsNiArMTMyOCwxMSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZVVURjMyKAorICAgIFB5T2JqZWN0ICpvYmplY3QsICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgIGludCBieXRlb3JkZXIgICAgICAgICAgICAgICAvKiBieXRlb3JkZXIgdG8gdXNlIDA9Qk9NK25hdGl2ZTstMT1MRSwxPUJFICovCisgICAgKTsKICNlbmRpZgogCiAvKiAtLS0gVVRGLTE2IENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTk5NSw2ICsxNDEzLDExIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIC0tLSBVbmljb2RlLUVzY2FwZSBDb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTA2NCw2ICsxNDg3LDEwIEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsCisgICAgY29uc3QgY2hhciogZXJyb3JzKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC0xMDg4LDYgKzE1MTUsMTAgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKAorICAgIFB5T2JqZWN0KiB1bmljb2RlLAorICAgIGNvbnN0IGNoYXIqIGVycm9ycyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCkBAIC0xMTM5LDYgKzE1NzAsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaWNvZGUgb3JkaW5hbCAtPiBjaGFyIG9yZGluYWwpICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgUHlPYmplY3QgKm1hcHBpbmcsICAgICAgICAgIC8qIGNoYXJhY3RlciBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmljb2RlIG9yZGluYWwgLT4gY2hhciBvcmRpbmFsKSAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CiAjZW5kaWYKIAogLyogVHJhbnNsYXRlIGEgUHlfVU5JQ09ERSBidWZmZXIgb2YgdGhlIGdpdmVuIGxlbmd0aCBieSBhcHBseWluZyBhCkBAIC0xMTYzLDcgKzE2MDAsNyBAQAogICAgICk7CiAjZW5kaWYKIAotI2lmZGVmIE1TX1dJTjMyCisjaWZkZWYgSEFWRV9NQkNTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMTgwLDYgKzE2MTcsMTQgQEAKICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KICAgICApOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoCisgICAgaW50IGNvZGVfcGFnZSwgICAgICAgICAgICAgIC8qIGNvZGUgcGFnZSBudW1iZXIgKi8KKyAgICBjb25zdCBjaGFyICpzdHJpbmcsICAgICAgICAgLyogZW5jb2RlZCBzdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogc2l6ZSBvZiBzdHJpbmcgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCAgICAgICAgLyogYnl0ZXMgY29uc3VtZWQgKi8KKyAgICApOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzTUJDU1N0cmluZygKICAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICApOwpAQCAtMTE4NywxMiArMTYzMiwxOCBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVNQkNTKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKmRhdGEsICAgICAvKiBVbmljb2RlIGNoYXIgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIE51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBudW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogI2VuZGlmCiAKLSNlbmRpZiAvKiBNU19XSU4zMiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZSgKKyAgICBpbnQgY29kZV9wYWdlLCAgICAgICAgICAgICAgLyogY29kZSBwYWdlIG51bWJlciAqLworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgICk7CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTEyNDAsNiArMTY5MSw0OSBAQAogICAgICk7CiAjZW5kaWYKIAorLyogU2ltaWxhciB0byBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoKSwgYnV0IHRha2VzIGEgUHlPYmplY3QKKyAgIGFzIGFyZ3VtZW50IGluc3RlYWQgb2YgYSByYXcgYnVmZmVyIGFuZCBsZW5ndGguICBUaGlzIGZ1bmN0aW9uIGFkZGl0aW9uYWxseQorICAgdHJhbnNmb3JtcyBzcGFjZXMgdG8gQVNDSUkgYmVjYXVzZSB0aGlzIGlzIHdoYXQgdGhlIGNhbGxlcnMgaW4gbG9uZ29iamVjdCwKKyAgIGZsb2F0b2JqZWN0LCBhbmQgY29tcGxleG9iamVjdCBkaWQgYW55d2F5cy4gKi8KKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICApOworI2VuZGlmCisKKy8qIC0tLSBMb2NhbGUgZW5jb2RpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qIERlY29kZSBhIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gVGhlIGRlY29kZXIgaXMgc3RyaWN0IGlmCisgICAqc3Vycm9nYXRlZXNjYXBlKiBpcyBlcXVhbCB0byB6ZXJvLCBvdGhlcndpc2UgaXQgdXNlcyB0aGUgJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgIGVycm9yIGhhbmRsZXIgKFBFUCAzODMpIHRvIGVzY2FwZSB1bmRlY29kYWJsZSBieXRlcy4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbgorICAgYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgYW5kICpzdXJyb2dhdGVlc2NhcGUqIGlzIG5vdCBlcXVhbCB0bworICAgemVybywgdGhlIGJ5dGUgc2VxdWVuY2UgaXMgZXNjYXBlZCB1c2luZyB0aGUgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcgorICAgaW5zdGVhZCBvZiBiZWluZyBkZWNvZGVkLiAqc3RyKiBtdXN0IGVuZCB3aXRoIGEgbnVsbCBjaGFyYWN0ZXIgYnV0IGNhbm5vdAorICAgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgKKyAgICBjb25zdCBjaGFyICpzdHIsCisgICAgUHlfc3NpemVfdCBsZW4sCisgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworLyogU2ltaWxhciB0byBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpLCBidXQgY29tcHV0ZSB0aGUgc3RyaW5nCisgICBsZW5ndGggdXNpbmcgc3RybGVuKCkuICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKAorICAgIGNvbnN0IGNoYXIgKnN0ciwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCisvKiBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBlbmNvZGVyIGlzCisgICBzdHJpY3QgaXMgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIHRoZQorICAgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciBpcyB1c2VkLiBSZXR1cm4gYSBieXRlcyBvYmplY3QuIFRoZSBzdHJpbmcKKyAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4uICovCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycworICAgICk7CisKIC8qIC0tLSBGaWxlIHN5c3RlbSBlbmNvZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgc3RyIG9iamVjdHMgdG8gYnl0ZXMgdXNpbmcKQEAgLTEyOTIsNyArMTc4Niw3IEBACiAKICAgIFRoZXNlIGFyZSBjYXBhYmxlIG9mIGhhbmRsaW5nIFVuaWNvZGUgb2JqZWN0cyBhbmQgc3RyaW5ncyBvbiBpbnB1dAogICAgKHdlIHJlZmVyIHRvIHRoZW0gYXMgc3RyaW5ncyBpbiB0aGUgZGVzY3JpcHRpb25zKSBhbmQgcmV0dXJuCi0gICBVbmljb2RlIG9iamVjdHMgb3IgaW50ZWdlcnMgYXMgYXBwb3JwcmlhdGUuICovCisgICBVbmljb2RlIG9iamVjdHMgb3IgaW50ZWdlcnMgYXMgYXBwcm9wcmlhdGUuICovCiAKIC8qIENvbmNhdCB0d28gc3RyaW5ncyBnaXZpbmcgYSBuZXcgVW5pY29kZSBzdHJpbmcuICovCiAKQEAgLTE0MjcsNiArMTkyMSwxNSBAQAogICAgIGludCBkaXJlY3Rpb24gICAgICAgICAgICAgICAvKiBGaW5kIGRpcmVjdGlvbjogKzEgZm9yd2FyZCwgLTEgYmFja3dhcmQgKi8KICAgICApOwogCisvKiBMaWtlIFB5VW5pY29kZV9GaW5kLCBidXQgc2VhcmNoIGZvciBzaW5nbGUgY2hhcmFjdGVyIG9ubHkuICovCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICBQeU9iamVjdCAqc3RyLAorICAgIFB5X1VDUzQgY2gsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICBpbnQgZGlyZWN0aW9uCisgICAgKTsKKwogLyogQ291bnQgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBzdWJzdHIgaW4gc3RyW3N0YXJ0OmVuZF0uICovCiAKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0NvdW50KApAQCAtMTQ2Myw3ICsxOTY2LDcgQEAKIC8qIFJpY2ggY29tcGFyZSB0d28gc3RyaW5ncyBhbmQgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogCiAgICAtIE5VTEwgaW4gY2FzZSBhbiBleGNlcHRpb24gd2FzIHJhaXNlZAotICAgLSBQeV9UcnVlIG9yIFB5X0ZhbHNlIGZvciBzdWNjZXNzZnVseSBjb21wYXJpc29ucworICAgLSBQeV9UcnVlIG9yIFB5X0ZhbHNlIGZvciBzdWNjZXNzZnVsbHkgY29tcGFyaXNvbnMKICAgIC0gUHlfTm90SW1wbGVtZW50ZWQgaW4gY2FzZSB0aGUgdHlwZSBjb21iaW5hdGlvbiBpcyB1bmtub3duCiAKICAgIE5vdGUgdGhhdCBQeV9FUSBhbmQgUHlfTkUgY29tcGFyaXNvbnMgY2FuIGNhdXNlIGEgVW5pY29kZVdhcm5pbmcgaW4KQEAgLTE1MTQsMzUgKzIwMTcsMjYgQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEV4dGVybmFsbHkgdmlzaWJsZSBmb3Igc3RyLnN0cmlwKHVuaWNvZGUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfWFN0cmlwKAotICAgIFB5VW5pY29kZU9iamVjdCAqc2VsZiwKKyAgICBQeU9iamVjdCAqc2VsZiwKICAgICBpbnQgc3RyaXB0eXBlLAogICAgIFB5T2JqZWN0ICpzZXBvYmoKICAgICApOwogI2VuZGlmCiAKLS8qIFVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZSwgaW5zZXJ0IHRoZSB0aG91c2FuZHMgZ3JvdXBpbmcKLSAgIGludG8gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IGJ1ZmZlci4gIEZvciB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb25zLAotICAgc2VlIE9iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUoUHlfVU5JQ09ERSAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCk7Ci0jZW5kaWYKLQogLyogVXNpbmcgZXhwbGljaXQgcGFzc2VkLWluIHZhbHVlcywgaW5zZXJ0IHRoZSB0aG91c2FuZHMgZ3JvdXBpbmcKICAgIGludG8gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IGJ1ZmZlci4gIEZvciB0aGUgYXJndW1lbnQgZGVzY3JpcHRpb25zLAogICAgc2VlIE9iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKFB5X1VOSUNPREUgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRob3VzYW5kc19zZXApOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICB2b2lkICpkaWdpdHMsCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKKyAgICBjb25zdCBjaGFyICpncm91cGluZywKKyAgICBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9VQ1M0ICptYXhjaGFyKTsKICNlbmRpZgogLyogPT09IENoYXJhY3RlcnMgVHlwZSBBUElzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKQEAgLTE1OTgsNiArMjA5MiwzNCBAQAogICAgIFB5X1VDUzQgY2ggICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KICAgICApOwogCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0xvd2VyRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvVGl0bGVGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0ZvbGRlZEZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoCisgICAgUHlfVUNTNCBjaCAgICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfSXNDYXNlZCgKKyAgICBQeV9VQ1M0IGNoICAgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICApOworCiBQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub0RlY2ltYWxEaWdpdCgKICAgICBQeV9VQ1M0IGNoICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCiAgICAgKTsKQEAgLTE2NzYsNiArMjE5OCwxNyBAQAogICAgICk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmIGRlZmluZWQoUHlfREVCVUcpICYmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKQorUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgKKyAgICBQeU9iamVjdCAqb3AsCisgICAgaW50IGNoZWNrX2NvbnRlbnQpOworI2VuZGlmCisKKy8qIFJldHVybiBhbiBpbnRlcm5lZCBVbmljb2RlIG9iamVjdCBmb3IgYW4gSWRlbnRpZmllcjsgbWF5IGZhaWwgaWYgdGhlcmUgaXMgbm8gbWVtb3J5LiovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gcm9tSWQoX1B5X0lkZW50aWZpZXIqKTsKKy8qIENsZWFyIGFsbCBzdGF0aWMgc3RyaW5ncy4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3Modm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQppbmRleCA0MzM4OGU3Li44OGVlZDFmIDEwMDY0NAotLS0gYS9MSUNFTlNFCisrKyBiL0xJQ0VOU0UKQEAgLTc0LDYgKzc0LDcgQEAKICAgICAzLjIuMSAgICAgICAgICAgMy4yICAgICAgICAgMjAxMSAgICAgICAgUFNGICAgICAgICAgeWVzCiAgICAgMy4yLjIgICAgICAgICAgIDMuMi4xICAgICAgIDIwMTEgICAgICAgIFBTRiAgICAgICAgIHllcwogICAgIDMuMi4zICAgICAgICAgICAzLjIuMiAgICAgICAyMDEyICAgICAgICBQU0YgICAgICAgICB5ZXMKKyAgICAzLjMuMCAgICAgICAgICAgMy4yICAgICAgICAgMjAxMiAgICAgICAgUFNGICAgICAgICAgeWVzCiAKIEZvb3Rub3RlczoKIApkaWZmIC0tZ2l0IGEvTGliL19kdW1teV90aHJlYWQucHkgYi9MaWIvX2R1bW15X3RocmVhZC5weQppbmRleCBlZDUwNTIwLi4xM2IxZjI2IDEwMDY0NAotLS0gYS9MaWIvX2R1bW15X3RocmVhZC5weQorKysgYi9MaWIvX2R1bW15X3RocmVhZC5weQpAQCAtMjQsMTEgKzI0LDcgQEAKICMgaW1wb3J0cyBhcmUgZG9uZSB3aGVuIG5lZWRlZCBvbiBhIGZ1bmN0aW9uLWJ5LWZ1bmN0aW9uIGJhc2lzLiAgU2luY2UgdGhyZWFkcwogIyBhcmUgZGlzYWJsZWQsIHRoZSBpbXBvcnQgbG9jayBzaG91bGQgbm90IGJlIGFuIGlzc3VlIGFueXdheSAoPz8pLgogCi1jbGFzcyBlcnJvcihFeGNlcHRpb24pOgotICAgICIiIkR1bW15IGltcGxlbWVudGF0aW9uIG9mIF90aHJlYWQuZXJyb3IuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCitlcnJvciA9IFJ1bnRpbWVFcnJvcgogCiBkZWYgc3RhcnRfbmV3X3RocmVhZChmdW5jdGlvbiwgYXJncywga3dhcmdzPXt9KToKICAgICAiIiJEdW1teSBpbXBsZW1lbnRhdGlvbiBvZiBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKS4KZGlmZiAtLWdpdCBhL0xpYi9fb3N4X3N1cHBvcnQucHkgYi9MaWIvX29zeF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYWFkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvX29zeF9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsNDg4IEBACisiIiJTaGFyZWQgT1MgWCBzdXBwb3J0IGZ1bmN0aW9ucy4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworX19hbGxfXyA9IFsKKyAgICAnY29tcGlsZXJfZml4dXAnLAorICAgICdjdXN0b21pemVfY29uZmlnX3ZhcnMnLAorICAgICdjdXN0b21pemVfY29tcGlsZXInLAorICAgICdnZXRfcGxhdGZvcm1fb3N4JywKK10KKworIyBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyB0aGF0IG1heSBjb250YWluIHVuaXZlcnNhbCBidWlsZCBmbGFncywKKyMgbGlrZSAiLWFyY2giIG9yICItaXNka3Jvb3QiLCB0aGF0IG1heSBuZWVkIGN1c3RvbWl6YXRpb24gZm9yCisjIHRoZSB1c2VyIGVudmlyb25tZW50CitfVU5JVkVSU0FMX0NPTkZJR19WQVJTID0gKCdDRkxBR1MnLCAnTERGTEFHUycsICdDUFBGTEFHUycsICdCQVNFQ0ZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkxEU0hBUkVEJywgJ0xEU0hBUkVEJywgJ0NDJywgJ0NYWCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BZX0NGTEFHUycsICdQWV9MREZMQUdTJywgJ1BZX0NQUEZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFlfQ09SRV9DRkxBR1MnKQorCisjIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWF5IGNvbnRhaW4gY29tcGlsZXIgY2FsbHMKK19DT01QSUxFUl9DT05GSUdfVkFSUyA9ICgnQkxEU0hBUkVEJywgJ0xEU0hBUkVEJywgJ0NDJywgJ0NYWCcpCisKKyMgcHJlZml4IGFkZGVkIHRvIG9yaWdpbmFsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgbmFtZXMKK19JTklUUFJFID0gJ19PU1hfU1VQUE9SVF9JTklUSUFMXycKKworCitkZWYgX2ZpbmRfZXhlY3V0YWJsZShleGVjdXRhYmxlLCBwYXRoPU5vbmUpOgorICAgICIiIlRyaWVzIHRvIGZpbmQgJ2V4ZWN1dGFibGUnIGluIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJ3BhdGgnLgorCisgICAgQSBzdHJpbmcgbGlzdGluZyBkaXJlY3RvcmllcyBzZXBhcmF0ZWQgYnkgJ29zLnBhdGhzZXAnOyBkZWZhdWx0cyB0bworICAgIG9zLmVudmlyb25bJ1BBVEgnXS4gIFJldHVybnMgdGhlIGNvbXBsZXRlIGZpbGVuYW1lIG9yIE5vbmUgaWYgbm90IGZvdW5kLgorICAgICIiIgorICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorCisgICAgcGF0aHMgPSBwYXRoLnNwbGl0KG9zLnBhdGhzZXApCisgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChleGVjdXRhYmxlKQorCisgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIG9zLm5hbWUgPT0gJ29zMicpIGFuZCAoZXh0ICE9ICcuZXhlJyk6CisgICAgICAgIGV4ZWN1dGFibGUgPSBleGVjdXRhYmxlICsgJy5leGUnCisKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZXhlY3V0YWJsZSk6CisgICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwLCBleGVjdXRhYmxlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZik6CisgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBleGlzdHMsIHdlIGhhdmUgYSBzaG90IGF0IHNwYXduIHdvcmtpbmcKKyAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBleGVjdXRhYmxlCisKKworZGVmIF9yZWFkX291dHB1dChjb21tYW5kc3RyaW5nKToKKyAgICAiIiJPdXRwdXQgZnJvbSBzdWNjZXNmdWwgY29tbWFuZCBleGVjdXRpb24gb3IgTm9uZSIiIgorICAgICMgU2ltaWxhciB0byBvcy5wb3Blbihjb21tYW5kc3RyaW5nLCAiciIpLnJlYWQoKSwKKyAgICAjIGJ1dCB3aXRob3V0IGFjdHVhbGx5IHVzaW5nIG9zLnBvcGVuIGJlY2F1c2UgdGhhdAorICAgICMgZnVuY3Rpb24gaXMgbm90IHVzYWJsZSBkdXJpbmcgcHl0aG9uIGJvb3RzdHJhcC4KKyAgICAjIHRlbXBmaWxlIGlzIGFsc28gbm90IGF2YWlsYWJsZSB0aGVuLgorICAgIGltcG9ydCBjb250ZXh0bGliCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgdGVtcGZpbGUKKyAgICAgICAgZnAgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgZnAgPSBvcGVuKCIvdG1wL19vc3hfc3VwcG9ydC4lcyIlKAorICAgICAgICAgICAgb3MuZ2V0cGlkKCksKSwgIncrYiIpCisKKyAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhmcCkgYXMgZnA6CisgICAgICAgIGNtZCA9ICIlcyAyPi9kZXYvbnVsbCA+JyVzJyIgJSAoY29tbWFuZHN0cmluZywgZnAubmFtZSkKKyAgICAgICAgcmV0dXJuIGZwLnJlYWQoKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKSBpZiBub3Qgb3Muc3lzdGVtKGNtZCkgZWxzZSBOb25lCisKKworZGVmIF9maW5kX2J1aWxkX3Rvb2wodG9vbG5hbWUpOgorICAgICIiIkZpbmQgYSBidWlsZCB0b29sIG9uIGN1cnJlbnQgcGF0aCBvciB1c2luZyB4Y3J1biIiIgorICAgIHJldHVybiAoX2ZpbmRfZXhlY3V0YWJsZSh0b29sbmFtZSkKKyAgICAgICAgICAgICAgICBvciBfcmVhZF9vdXRwdXQoIi91c3IvYmluL3hjcnVuIC1maW5kICVzIiAlICh0b29sbmFtZSwpKQorICAgICAgICAgICAgICAgIG9yICcnCisgICAgICAgICAgICApCisKK19TWVNURU1fVkVSU0lPTiA9IE5vbmUKKworZGVmIF9nZXRfc3lzdGVtX3ZlcnNpb24oKToKKyAgICAiIiJSZXR1cm4gdGhlIE9TIFggc3lzdGVtIHZlcnNpb24gYXMgYSBzdHJpbmciIiIKKyAgICAjIFJlYWRpbmcgdGhpcyBwbGlzdCBpcyBhIGRvY3VtZW50ZWQgd2F5IHRvIGdldCB0aGUgc3lzdGVtCisgICAgIyB2ZXJzaW9uIChzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBHZXN0YWx0IE1hbmFnZXIpCisgICAgIyBXZSBhdm9pZCB1c2luZyBwbGF0Zm9ybS5tYWNfdmVyIHRvIGF2b2lkIHBvc3NpYmxlIGJvb3RzdHJhcCBpc3N1ZXMgZHVyaW5nCisgICAgIyB0aGUgYnVpbGQgb2YgUHl0aG9uIGl0c2VsZiAoZGlzdHV0aWxzIGlzIHVzZWQgdG8gYnVpbGQgc3RhbmRhcmQgbGlicmFyeQorICAgICMgZXh0ZW5zaW9ucykuCisKKyAgICBnbG9iYWwgX1NZU1RFTV9WRVJTSU9OCisKKyAgICBpZiBfU1lTVEVNX1ZFUlNJT04gaXMgTm9uZToKKyAgICAgICAgX1NZU1RFTV9WRVJTSU9OID0gJycKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgIyBXZSdyZSBvbiBhIHBsYWluIGRhcndpbiBib3gsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAorICAgICAgICAgICAgIyBiZWhhdmlvdXIuCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyJzxrZXk+UHJvZHVjdFVzZXJWaXNpYmxlVmVyc2lvbjwva2V5PlxzKicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPHN0cmluZz4oLio/KTwvc3RyaW5nPicsIGYucmVhZCgpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX1NZU1RFTV9WRVJTSU9OID0gJy4nLmpvaW4obS5ncm91cCgxKS5zcGxpdCgnLicpWzoyXSkKKyAgICAgICAgICAgICMgZWxzZTogZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91cgorCisgICAgcmV0dXJuIF9TWVNURU1fVkVSU0lPTgorCitkZWYgX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgb3JpZ2luYWwgdW5tb2RpZmllZCB2YWx1ZXMgZm9yIHRlc3RpbmciIiIKKyAgICAjIFRoaXMgaXMgbmVlZGVkIGZvciBoaWdoZXItbGV2ZWwgY3Jvc3MtcGxhdGZvcm0gdGVzdHMgb2YgZ2V0X3BsYXRmb3JtLgorICAgIGZvciBrIGluIGxpc3QoX2NvbmZpZ192YXJzKToKKyAgICAgICAgaWYgay5zdGFydHN3aXRoKF9JTklUUFJFKToKKyAgICAgICAgICAgIGRlbCBfY29uZmlnX3ZhcnNba10KKworZGVmIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKToKKyAgICAiIiJTYXZlIG1vZGlmaWVkIGFuZCBvcmlnaW5hbCB1bm1vZGlmaWVkIHZhbHVlIG9mIGNvbmZpZ3VyYXRpb24gdmFyIiIiCisKKyAgICBvbGR2YWx1ZSA9IF9jb25maWdfdmFycy5nZXQoY3YsICcnKQorICAgIGlmIChvbGR2YWx1ZSAhPSBuZXd2YWx1ZSkgYW5kIChfSU5JVFBSRSArIGN2IG5vdCBpbiBfY29uZmlnX3ZhcnMpOgorICAgICAgICBfY29uZmlnX3ZhcnNbX0lOSVRQUkUgKyBjdl0gPSBvbGR2YWx1ZQorICAgIF9jb25maWdfdmFyc1tjdl0gPSBuZXd2YWx1ZQorCitkZWYgX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoKToKKyAgICAiIiJSZXR1cm5zIFRydWUgaWYgdW5pdmVyc2FsIGJ1aWxkcyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtIiIiCisgICAgIyBBcyBhbiBhcHByb3hpbWF0aW9uLCB3ZSBhc3N1bWUgdGhhdCBpZiB3ZSBhcmUgcnVubmluZyBvbiAxMC40IG9yIGFib3ZlLAorICAgICMgdGhlbiB3ZSBhcmUgcnVubmluZyB3aXRoIGFuIFhjb2RlIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMgdW5pdmVyc2FsCisgICAgIyBidWlsZHMsIGluIHBhcnRpY3VsYXIgLWlzeXNyb290IGFuZCAtYXJjaCBhcmd1bWVudHMgdG8gdGhlIGNvbXBpbGVyLiBUaGlzCisgICAgIyBpcyBpbiBzdXBwb3J0IG9mIGFsbG93aW5nIDEwLjQgdW5pdmVyc2FsIGJ1aWxkcyB0byBydW4gb24gMTAuMy54IHN5c3RlbXMuCisKKyAgICBvc3hfdmVyc2lvbiA9IF9nZXRfc3lzdGVtX3ZlcnNpb24oKQorICAgIGlmIG9zeF92ZXJzaW9uOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvc3hfdmVyc2lvbiA9IHR1cGxlKGludChpKSBmb3IgaSBpbiBvc3hfdmVyc2lvbi5zcGxpdCgnLicpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gJycKKyAgICByZXR1cm4gYm9vbChvc3hfdmVyc2lvbiA+PSAoMTAsIDQpKSBpZiBvc3hfdmVyc2lvbiBlbHNlIEZhbHNlCisKKworZGVmIF9maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKF9jb25maWdfdmFycyk6CisgICAgIiIiRmluZCBhcHByb3ByaWF0ZSBDIGNvbXBpbGVyIGZvciBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyIiIgorCisgICAgIyBJc3N1ZSAjMTM1OTA6CisgICAgIyAgICBUaGUgT1NYIGxvY2F0aW9uIGZvciB0aGUgY29tcGlsZXIgdmFyaWVzIGJldHdlZW4gT1NYCisgICAgIyAgICAob3IgcmF0aGVyIFhjb2RlKSByZWxlYXNlcy4gIFdpdGggb2xkZXIgcmVsZWFzZXMgKHVwLXRvIDEwLjUpCisgICAgIyAgICB0aGUgY29tcGlsZXIgaXMgaW4gL3Vzci9iaW4sIHdpdGggbmV3ZXIgcmVsZWFzZXMgdGhlIGNvbXBpbGVyCisgICAgIyAgICBjYW4gb25seSBiZSBmb3VuZCBpbnNpZGUgWGNvZGUuYXBwIGlmIHRoZSAiQ29tbWFuZCBMaW5lIFRvb2xzIgorICAgICMgICAgYXJlIG5vdCBpbnN0YWxsZWQuCisgICAgIworICAgICMgICAgRnV0aGVybW9yZSwgdGhlIGNvbXBpbGVyIHRoYXQgY2FuIGJlIHVzZWQgdmFyaWVzIGJldHdlZW4KKyAgICAjICAgIFhjb2RlIHJlbGVhc2VzLiBVcHRvIFhjb2RlIDQgaXQgd2FzIHBvc3NpYmxlIHRvIHVzZSAnZ2NjLTQuMicKKyAgICAjICAgIGFzIHRoZSBjb21waWxlciwgYWZ0ZXIgdGhhdCAnY2xhbmcnIHNob3VsZCBiZSB1c2VkIGJlY2F1c2UKKyAgICAjICAgIGdjYy00LjIgaXMgZWl0aGVyIG5vdCBwcmVzZW50LCBvciBhIGNvcHkgb2YgJ2xsdm0tZ2NjJyB0aGF0CisgICAgIyAgICBtaXNjb21waWxlcyBQeXRob24uCisKKyAgICAjIHNraXAgY2hlY2tzIGlmIHRoZSBjb21waWxlciB3YXMgb3ZlcnJpZGVuIHdpdGggYSBDQyBlbnYgdmFyaWFibGUKKyAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworICAgICMgVGhlIENDIGNvbmZpZyB2YXIgbWlnaHQgY29udGFpbiBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAjIElnbm9yZSB0aGVtIHdoaWxlIHNlYXJjaGluZy4KKyAgICBjYyA9IG9sZGNjID0gX2NvbmZpZ192YXJzWydDQyddLnNwbGl0KClbMF0KKyAgICBpZiBub3QgX2ZpbmRfZXhlY3V0YWJsZShjYyk6CisgICAgICAgICMgQ29tcGlsZXIgaXMgbm90IGZvdW5kIG9uIHRoZSBzaGVsbCBzZWFyY2ggUEFUSC4KKyAgICAgICAgIyBOb3cgc2VhcmNoIGZvciBjbGFuZywgZmlyc3Qgb24gUEFUSCAoaWYgdGhlIENvbW1hbmQgTEluZQorICAgICAgICAjIFRvb2xzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW4gLyBvciBpZiB0aGUgdXNlciBoYXMgcHJvdmlkZWQKKyAgICAgICAgIyBhbm90aGVyIGxvY2F0aW9uIHZpYSBDQykuICBJZiBub3QgZm91bmQsIHRyeSB1c2luZyB4Y3J1bgorICAgICAgICAjIHRvIGZpbmQgYW4gdW5pbnN0YWxsZWQgY2xhbmcgKHdpdGhpbiBhIHNlbGVjdGVkIFhjb2RlKS4KKworICAgICAgICAjIE5PVEU6IENhbm5vdCB1c2Ugc3VicHJvY2VzcyBoZXJlIGJlY2F1c2Ugb2YgYm9vdHN0cmFwCisgICAgICAgICMgaXNzdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIGl0c2VsZiAoYW5kIG9zLnBvcGVuIGlzCisgICAgICAgICMgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHN1YnByb2Nlc3MgYW5kIGlzIHRoZXJlZm9yZSBub3QKKyAgICAgICAgIyB1c2FibGUgYXMgd2VsbCkKKworICAgICAgICBjYyA9IF9maW5kX2J1aWxkX3Rvb2woJ2NsYW5nJykKKworICAgIGVsaWYgb3MucGF0aC5iYXNlbmFtZShjYykuc3RhcnRzd2l0aCgnZ2NjJyk6CisgICAgICAgICMgQ29tcGlsZXIgaXMgR0NDLCBjaGVjayBpZiBpdCBpcyBMTFZNLUdDQworICAgICAgICBkYXRhID0gX3JlYWRfb3V0cHV0KCInJXMnIC0tdmVyc2lvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2MucmVwbGFjZSgiJyIsICInXCInXCInIiksKSkKKyAgICAgICAgaWYgJ2xsdm0tZ2NjJyBpbiBkYXRhOgorICAgICAgICAgICAgIyBGb3VuZCBMTFZNLUdDQywgZmFsbCBiYWNrIHRvIGNsYW5nCisgICAgICAgICAgICBjYyA9IF9maW5kX2J1aWxkX3Rvb2woJ2NsYW5nJykKKworICAgIGlmIG5vdCBjYzoKKyAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoCisgICAgICAgICAgICAgICAiQ2Fubm90IGxvY2F0ZSB3b3JraW5nIGNvbXBpbGVyIikKKworICAgIGlmIGNjICE9IG9sZGNjOgorICAgICAgICAjIEZvdW5kIGEgcmVwbGFjZW1lbnQgY29tcGlsZXIuCisgICAgICAgICMgTW9kaWZ5IGNvbmZpZyB2YXJzIHVzaW5nIG5ldyBjb21waWxlciwgaWYgbm90IGFscmVhZHkgZXhwbGljdGx5CisgICAgICAgICMgb3ZlcnJpZGVuIGJ5IGFuIGVudiB2YXJpYWJsZSwgcHJlc2VydmluZyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4KKyAgICAgICAgZm9yIGN2IGluIF9DT01QSUxFUl9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgY3Zfc3BsaXQgPSBfY29uZmlnX3ZhcnNbY3ZdLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBjdl9zcGxpdFswXSA9IGNjIGlmIGN2ICE9ICdDWFgnIGVsc2UgY2MgKyAnKysnCisgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgJyAnLmpvaW4oY3Zfc3BsaXQpKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBfcmVtb3ZlX3VuaXZlcnNhbF9mbGFncyhfY29uZmlnX3ZhcnMpOgorICAgICIiIlJlbW92ZSBhbGwgdW5pdmVyc2FsIGJ1aWxkIGFyZ3VtZW50cyBmcm9tIGNvbmZpZyB2YXJzIiIiCisKKyAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgIyBEbyBub3QgYWx0ZXIgYSBjb25maWcgdmFyIGV4cGxpY2l0bHkgb3ZlcnJpZGVuIGJ5IGVudiB2YXIKKyAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKKyAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCisgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocyhfY29uZmlnX3ZhcnMpOgorICAgICIiIlJlbW92ZSBhbnkgdW5zdXBwb3J0ZWQgYXJjaHMgZnJvbSBjb25maWcgdmFycyIiIgorICAgICMgRGlmZmVyZW50IFhjb2RlIHJlbGVhc2VzIHN1cHBvcnQgZGlmZmVyZW50IHNldHMgZm9yICctYXJjaCcKKyAgICAjIGZsYWdzLiBJbiBwYXJ0aWN1bGFyLCBYY29kZSA0Lnggbm8gbG9uZ2VyIHN1cHBvcnRzIHRoZQorICAgICMgUFBDIGFyY2hpdGVjdHVyZXMuCisgICAgIworICAgICMgVGhpcyBjb2RlIGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyAnLWFyY2ggcHBjJyBhbmQgJy1hcmNoIHBwYzY0JworICAgICMgd2hlbiB0aGVzZSBhcmUgbm90IHN1cHBvcnRlZC4gVGhhdCBtYWtlcyBpdCBwb3NzaWJsZSB0bworICAgICMgYnVpbGQgZXh0ZW5zaW9ucyBvbiBPU1ggMTAuNyBhbmQgbGF0ZXIgd2l0aCB0aGUgcHJlYnVpbHQKKyAgICAjIDMyLWJpdCBpbnN0YWxsZXIgb24gdGhlIHB5dGhvbi5vcmcgd2Vic2l0ZS4KKworICAgICMgc2tpcCBjaGVja3MgaWYgdGhlIGNvbXBpbGVyIHdhcyBvdmVycmlkZW4gd2l0aCBhIENDIGVudiB2YXJpYWJsZQorICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIF9jb25maWdfdmFycworCisgICAgaWYgcmUuc2VhcmNoKCctYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgorICAgICAgICAjIE5PVEU6IENhbm5vdCB1c2Ugc3VicHJvY2VzcyBoZXJlIGJlY2F1c2Ugb2YgYm9vdHN0cmFwCisgICAgICAgICMgaXNzdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIGl0c2VsZgorICAgICAgICBzdGF0dXMgPSBvcy5zeXN0ZW0oIiclcycgLWFyY2ggcHBjIC14IGMgL2Rldi9udWxsIDI+L2Rldi9udWxsIiUoCisgICAgICAgICAgICBfY29uZmlnX3ZhcnNbJ0NDJ10ucmVwbGFjZSgiJyIsICInXCInXCInIiksKSkKKyAgICAgICAgIyBUaGUgQXBwbGUgY29tcGlsZXIgZHJpdmVycyByZXR1cm4gc3RhdHVzIDI1NSBpZiBubyBQUEMKKyAgICAgICAgaWYgKHN0YXR1cyA+PiA4KSA9PSAyNTU6CisgICAgICAgICAgICAjIENvbXBpbGVyIGRvZXNuJ3Qgc3VwcG9ydCBQUEMsIHJlbW92ZSB0aGUgcmVsYXRlZAorICAgICAgICAgICAgIyAnLWFyY2gnIGZsYWdzIGlmIG5vdCBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgYW4KKyAgICAgICAgICAgICMgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytwcGNcdypccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBfb3ZlcnJpZGVfYWxsX2FyY2hzKF9jb25maWdfdmFycyk6CisgICAgIiIiQWxsb3cgb3ZlcnJpZGUgb2YgYWxsIGFyY2hzIHdpdGggQVJDSEZMQUdTIGVudiB2YXIiIiIKKyAgICAjIE5PVEU6IFRoaXMgbmFtZSB3YXMgaW50cm9kdWNlZCBieSBBcHBsZSBpbiBPU1ggMTAuNSBhbmQKKyAgICAjIGlzIHVzZWQgYnkgc2V2ZXJhbCBzY3JpcHRpbmcgbGFuZ3VhZ2VzIGRpc3RyaWJ1dGVkIHdpdGgKKyAgICAjIHRoYXQgT1MgcmVsZWFzZS4KKyAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KKyAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CisgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kICctYXJjaCcgaW4gX2NvbmZpZ192YXJzW2N2XToKKyAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyArICcgJyArIGFyY2gKKyAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoX2NvbmZpZ192YXJzKToKKyAgICAiIiJSZW1vdmUgcmVmZXJlbmNlcyB0byBhbnkgU0RLcyBub3QgYXZhaWxhYmxlIiIiCisgICAgIyBJZiB3ZSdyZSBvbiBPU1ggMTAuNSBvciBsYXRlciBhbmQgdGhlIHVzZXIgdHJpZXMgdG8KKyAgICAjIGNvbXBpbGUgYW4gZXh0ZW5zaW9uIHVzaW5nIGFuIFNESyB0aGF0IGlzIG5vdCBwcmVzZW50CisgICAgIyBvbiB0aGUgY3VycmVudCBtYWNoaW5lIGl0IGlzIGJldHRlciB0byBub3QgdXNlIGFuIFNESworICAgICMgdGhhbiB0byBmYWlsLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdpdGgKKyAgICAjIHRoZSBzdGFuZGFsb25nIENvbW1hbmQgTGluZSBUb29scyBhbHRlcm5hdGl2ZSB0byBhCisgICAgIyBmdWxsLWJsb3duIFhjb2RlIGluc3RhbGwgc2luY2UgdGhlIENMVCBwYWNrYWdlcyBkbyBub3QKKyAgICAjIHByb3ZpZGUgU0RLcy4gIElmIHRoZSBTREsgaXMgbm90IHByZXNlbnQsIGl0IGlzIGFzc3VtZWQKKyAgICAjIHRoYXQgdGhlIGhlYWRlciBmaWxlcyBhbmQgZGV2IGxpYnMgaGF2ZSBiZWVuIGluc3RhbGxlZAorICAgICMgdG8gL3VzciBhbmQgL1N5c3RlbS9MaWJyYXJ5IGJ5IGVpdGhlciBhIHN0YW5kYWxvbmUgQ0xUCisgICAgIyBwYWNrYWdlIG9yIHRoZSBDTFQgY29tcG9uZW50IHdpdGhpbiBYY29kZS4KKyAgICBjZmxhZ3MgPSBfY29uZmlnX3ZhcnMuZ2V0KCdDRkxBR1MnLCAnJykKKyAgICBtID0gcmUuc2VhcmNoKHInLWlzeXNyb290XHMrKFxTKyknLCBjZmxhZ3MpCisgICAgaWYgbSBpcyBub3QgTm9uZToKKyAgICAgICAgc2RrID0gbS5ncm91cCgxKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2RrKToKKyAgICAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRlbiBieSBlbnYgdmFyCisgICAgICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWlzeXNyb290XHMrXFMrKD86XHN8JCknLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sIGNjX2FyZ3MpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzdHJpcCAnLWlzeXNyb290IFBBVEgnIGFuZCAnLWFyY2ggQVJDSCcgZnJvbSB0aGUKKyAgICBjb21waWxlIGZsYWdzIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgb25lIHRoZW0gaW4gZXh0cmFfY29tcGlsZV9mbGFncy4KKworICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgJy1hcmNoIEFSQ0gnIGFkZHMgYW5vdGhlciBhcmNoaXRlY3R1cmUgdG8gdGhlCisgICAgYnVpbGQsIHdpdGhvdXQgYSB3YXkgdG8gcmVtb3ZlIGFuIGFyY2hpdGVjdHVyZS4gRnVydGhlcm1vcmUgR0NDIHdpbGwKKyAgICBiYXJmIGlmIG11bHRpcGxlICctaXN5c3Jvb3QnIGFyZ3VtZW50cyBhcmUgcHJlc2VudC4KKyAgICAiIiIKKyAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBGYWxzZQorCisgICAgY29tcGlsZXJfc28gPSBsaXN0KGNvbXBpbGVyX3NvKQorCisgICAgaWYgbm90IF9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCk6CisgICAgICAgICMgT1NYIGJlZm9yZSAxMC40LjAsIHRoZXNlIGRvbid0IHN1cHBvcnQgLWFyY2ggYW5kIC1pc3lzcm9vdCBhdAorICAgICAgICAjIGFsbC4KKyAgICAgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHN0cmlwQXJjaCA9ICctYXJjaCcgaW4gY2NfYXJncworICAgICAgICBzdHJpcFN5c3Jvb3QgPSAnLWlzeXNyb290JyBpbiBjY19hcmdzCisKKyAgICBpZiBzdHJpcEFyY2ggb3IgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctYXJjaCcpCisgICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6CisgICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbiBhbmQgbm90IHN0cmlwQXJjaDoKKyAgICAgICAgIyBVc2VyIHNwZWNpZmllZCBkaWZmZXJlbnQgLWFyY2ggZmxhZ3MgaW4gdGhlIGVudmlyb24sCisgICAgICAgICMgc2VlIGFsc28gZGlzdHV0aWxzLnN5c2NvbmZpZworICAgICAgICBjb21waWxlcl9zbyA9IGNvbXBpbGVyX3NvICsgb3MuZW52aXJvblsnQVJDSEZMQUdTJ10uc3BsaXQoKQorCisgICAgaWYgc3RyaXBTeXNyb290OgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGluZGV4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1pc3lzcm9vdCcpCisgICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6CisgICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgIyBDaGVjayBpZiB0aGUgU0RLIHRoYXQgaXMgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gYWN0dWFsbHkgZXhpc3RzLAorICAgICMgdGhlIHVuaXZlcnNhbCBidWlsZCByZXF1aXJlcyB0aGUgdXNhZ2Ugb2YgYSB1bml2ZXJzYWwgU0RLIGFuZCBub3QgYWxsCisgICAgIyB1c2VycyBoYXZlIHRoYXQgaW5zdGFsbGVkIGJ5IGRlZmF1bHQuCisgICAgc3lzcm9vdCA9IE5vbmUKKyAgICBpZiAnLWlzeXNyb290JyBpbiBjY19hcmdzOgorICAgICAgICBpZHggPSBjY19hcmdzLmluZGV4KCctaXN5c3Jvb3QnKQorICAgICAgICBzeXNyb290ID0gY2NfYXJnc1tpZHgrMV0KKyAgICBlbGlmICctaXN5c3Jvb3QnIGluIGNvbXBpbGVyX3NvOgorICAgICAgICBpZHggPSBjb21waWxlcl9zby5pbmRleCgnLWlzeXNyb290JykKKyAgICAgICAgc3lzcm9vdCA9IGNvbXBpbGVyX3NvW2lkeCsxXQorCisgICAgaWYgc3lzcm9vdCBhbmQgbm90IG9zLnBhdGguaXNkaXIoc3lzcm9vdCk6CisgICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKKyAgICAgICAgbG9nLndhcm4oIkNvbXBpbGluZyB3aXRoIGFuIFNESyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBleGlzdDogJXMiLAorICAgICAgICAgICAgICAgIHN5c3Jvb3QpCisgICAgICAgIGxvZy53YXJuKCJQbGVhc2UgY2hlY2sgeW91ciBYY29kZSBpbnN0YWxsYXRpb24iKQorCisgICAgcmV0dXJuIGNvbXBpbGVyX3NvCisKKworZGVmIGN1c3RvbWl6ZV9jb25maWdfdmFycyhfY29uZmlnX3ZhcnMpOgorICAgICIiIkN1c3RvbWl6ZSBQeXRob24gYnVpbGQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCisKKyAgICBDYWxsZWQgaW50ZXJuYWxseSBmcm9tIHN5c2NvbmZpZyB3aXRoIGEgbXV0YWJsZSBtYXBwaW5nCisgICAgY29udGFpbmluZyBuYW1lL3ZhbHVlIHBhaXJzIHBhcnNlZCBmcm9tIHRoZSBjb25maWd1cmVkCisgICAgbWFrZWZpbGUgdXNlZCB0byBidWlsZCB0aGlzIGludGVycHJldGVyLiAgUmV0dXJucworICAgIHRoZSBtYXBwaW5nIHVwZGF0ZWQgYXMgbmVlZGVkIHRvIHJlZmxlY3QgdGhlIGVudmlyb25tZW50CisgICAgaW4gd2hpY2ggdGhlIGludGVycHJldGVyIGlzIHJ1bm5pbmc7IGluIHRoZSBjYXNlIG9mCisgICAgYSBQeXRob24gZnJvbSBhIGJpbmFyeSBpbnN0YWxsZXIsIHRoZSBpbnN0YWxsZWQKKyAgICBlbnZpcm9ubWVudCBtYXkgYmUgdmVyeSBkaWZmZXJlbnQgZnJvbSB0aGUgYnVpbGQKKyAgICBlbnZpcm9ubWVudCwgaS5lLiBkaWZmZXJlbnQgT1MgbGV2ZWxzLCBkaWZmZXJlbnQKKyAgICBidWlsdCB0b29scywgZGlmZmVyZW50IGF2YWlsYWJsZSBDUFUgYXJjaGl0ZWN0dXJlcy4KKworICAgIFRoaXMgY3VzdG9taXphdGlvbiBpcyBwZXJmb3JtZWQgd2hlbmV2ZXIKKyAgICBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9jb25maWdfdmFycygpIGlzIGZpcnN0CisgICAgY2FsbGVkLiAgSXQgbWF5IGJlIHVzZWQgaW4gZW52aXJvbm1lbnRzIHdoZXJlIG5vCisgICAgY29tcGlsZXJzIGFyZSBwcmVzZW50LCBpLmUuIHdoZW4gaW5zdGFsbGluZyBwdXJlCisgICAgUHl0aG9uIGRpc3RzLiAgQ3VzdG9taXphdGlvbiBvZiBjb21waWxlciBwYXRocworICAgIGFuZCBkZXRlY3Rpb24gb2YgdW5hdmFpbGFibGUgYXJjaHMgaXMgZGVmZXJyZWQKKyAgICB1bnRpbCB0aGUgZmlyc3QgZXh0ZW50aW9uIG1vZHVsZSBidWlsZCBpcworICAgIHJlcXVlc3RlZCAoaW4gZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIpLgorCisgICAgQ3VycmVudGx5IGNhbGxlZCBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcKKyAgICAiIiIKKworICAgIGlmIG5vdCBfc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpOgorICAgICAgICAjIE9uIE1hYyBPUyBYIGJlZm9yZSAxMC40LCBjaGVjayBpZiAtYXJjaCBhbmQgLWlzeXNyb290CisgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KKyAgICAgICAgIyBUaGlzIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbnMgb24gYSAxMC4zIHN5c3RlbQorICAgICAgICAjIHVzaW5nIGEgdW5pdmVyc2FsIGJ1aWxkIG9mIHB5dGhvbi4KKyAgICAgICAgX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3MoX2NvbmZpZ192YXJzKQorCisgICAgIyBBbGxvdyB1c2VyIHRvIG92ZXJyaWRlIGFsbCBhcmNocyB3aXRoIEFSQ0hGTEFHUyBlbnYgdmFyCisgICAgX292ZXJyaWRlX2FsbF9hcmNocyhfY29uZmlnX3ZhcnMpCisKKyAgICAjIFJlbW92ZSByZWZlcmVuY2VzIHRvIHNka3MgdGhhdCBhcmUgbm90IGZvdW5kCisgICAgX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoX2NvbmZpZ192YXJzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBjdXN0b21pemVfY29tcGlsZXIoX2NvbmZpZ192YXJzKToKKyAgICAiIiJDdXN0b21pemUgY29tcGlsZXIgcGF0aCBhbmQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuCisKKyAgICBUaGlzIGN1c3RvbWl6YXRpb24gaXMgcGVyZm9ybWVkIHdoZW4gdGhlIGZpcnN0CisgICAgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZCBpcyByZXF1ZXN0ZWQKKyAgICBpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcikuCisgICAgIiIiCisKKyAgICAjIEZpbmQgYSBjb21waWxlciB0byB1c2UgZm9yIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzCisgICAgX2ZpbmRfYXBwcm9wcmlhdGVfY29tcGlsZXIoX2NvbmZpZ192YXJzKQorCisgICAgIyBSZW1vdmUgcHBjIGFyY2ggZmxhZ3MgaWYgbm90IHN1cHBvcnRlZCBoZXJlCisgICAgX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocyhfY29uZmlnX3ZhcnMpCisKKyAgICAjIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgYWxsIGFyY2hzIHdpdGggQVJDSEZMQUdTIGVudiB2YXIKKyAgICBfb3ZlcnJpZGVfYWxsX2FyY2hzKF9jb25maWdfdmFycykKKworICAgIHJldHVybiBfY29uZmlnX3ZhcnMKKworCitkZWYgZ2V0X3BsYXRmb3JtX29zeChfY29uZmlnX3ZhcnMsIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSk6CisgICAgIiIiRmlsdGVyIHZhbHVlcyBmb3IgZ2V0X3BsYXRmb3JtKCkiIiIKKyAgICAjIGNhbGxlZCBmcm9tIGdldF9wbGF0Zm9ybSgpIGluIHN5c2NvbmZpZyBhbmQgZGlzdHV0aWxzLnV0aWwKKyAgICAjCisgICAgIyBGb3Igb3VyIHB1cnBvc2VzLCB3ZSdsbCBhc3N1bWUgdGhhdCB0aGUgc3lzdGVtIHZlcnNpb24gZnJvbQorICAgICMgZGlzdHV0aWxzJyBwZXJzcGVjdGl2ZSBpcyB3aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQKKyAgICAjIHRvLiBUaGlzIG1ha2VzIHRoZSBjb21wYXRpYmlsaXR5IHN0b3J5IGEgYml0IG1vcmUgc2FuZSBiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBpcyBnb2luZyB0byBjb21waWxlIGFuZCBsaW5rIGFzIGlmIGl0IHdlcmUKKyAgICAjIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC4KKworICAgIG1hY3ZlciA9IF9jb25maWdfdmFycy5nZXQoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcsICcnKQorICAgIG1hY3JlbGVhc2UgPSBfZ2V0X3N5c3RlbV92ZXJzaW9uKCkgb3IgbWFjdmVyCisgICAgbWFjdmVyID0gbWFjdmVyIG9yIG1hY3JlbGVhc2UKKworICAgIGlmIG1hY3ZlcjoKKyAgICAgICAgcmVsZWFzZSA9IG1hY3ZlcgorICAgICAgICBvc25hbWUgPSAibWFjb3N4IgorCisgICAgICAgICMgVXNlIHRoZSBvcmlnaW5hbCBDRkxBR1MgdmFsdWUsIGlmIGF2YWlsYWJsZSwgc28gdGhhdCB3ZQorICAgICAgICAjIHJldHVybiB0aGUgc2FtZSBtYWNoaW5lIHR5cGUgZm9yIHRoZSBwbGF0Zm9ybSBzdHJpbmcuCisgICAgICAgICMgT3RoZXJ3aXNlLCBkaXN0dXRpbHMgbWF5IGNvbnNpZGVyIHRoaXMgYSBjcm9zcy1jb21waWxpbmcKKyAgICAgICAgIyBjYXNlIGFuZCBkaXNhbGxvdyBpbnN0YWxscy4KKyAgICAgICAgY2ZsYWdzID0gX2NvbmZpZ192YXJzLmdldChfSU5JVFBSRSsnQ0ZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb25maWdfdmFycy5nZXQoJ0NGTEFHUycsICcnKSkKKyAgICAgICAgaWYgKChtYWNyZWxlYXNlICsgJy4nKSA+PSAnMTAuNC4nIGFuZAorICAgICAgICAgICAgJy1hcmNoJyBpbiBjZmxhZ3Muc3RyaXAoKSk6CisgICAgICAgICAgICAjIFRoZSB1bml2ZXJzYWwgYnVpbGQgd2lsbCBidWlsZCBmYXQgYmluYXJpZXMsIGJ1dCBub3Qgb24KKyAgICAgICAgICAgICMgc3lzdGVtcyBiZWZvcmUgMTAuNAorCisgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKKworICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQorICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCisKKyAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gYXJjaHNbMF0KKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JworICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdpbnRlbCcKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDMnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgncHBjNjQnLCAneDg2XzY0Jyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICdwcGM2NCcsICd4ODZfNjQnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3VuaXZlcnNhbCcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBtYWNoaW5lIHZhbHVlIGZvciBhcmNocz0lciIgJSAoYXJjaHMsKSkKKworICAgICAgICBlbGlmIG1hY2hpbmUgPT0gJ2kzODYnOgorICAgICAgICAgICAgIyBPbiBPU1ggdGhlIG1hY2hpbmUgdHlwZSByZXR1cm5lZCBieSB1bmFtZSBpcyBhbHdheXMgdGhlCisgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcworICAgICAgICAgICAgIyB0aGUgNjQtYml0IHZhcmlhbnQKKyAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JworCisgICAgICAgIGVsaWYgbWFjaGluZSBpbiAoJ1Bvd2VyUEMnLCAnUG93ZXJfTWFjaW50b3NoJyk6CisgICAgICAgICAgICAjIFBpY2sgYSBzYW5lIG5hbWUgZm9yIHRoZSBQUEMgYXJjaGl0ZWN0dXJlLgorICAgICAgICAgICAgIyBTZWUgJ2kzODYnIGNhc2UKKyAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjNjQnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjJworCisgICAgcmV0dXJuIChvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggMmQzNzZkOC4uZmE3N2VjMSAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IGFiYwogaW1wb3J0IGNvZGVjcwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZXJybm8KICMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdAogdHJ5OgpAQCAtMTUsNyArMTQsMTEgQEAKIAogaW1wb3J0IGlvCiBmcm9tIGlvIGltcG9ydCAoX19hbGxfXywgU0VFS19TRVQsIFNFRUtfQ1VSLCBTRUVLX0VORCkKLWZyb20gZXJybm8gaW1wb3J0IEVJTlRSCisKK3ZhbGlkX3NlZWtfZmxhZ3MgPSB7MCwgMSwgMn0gICMgSGFyZHdpcmVkIHZhbHVlcworaWYgaGFzYXR0cihvcywgJ1NFRUtfSE9MRScpIDoKKyAgICB2YWxpZF9zZWVrX2ZsYWdzLmFkZChvcy5TRUVLX0hPTEUpCisgICAgdmFsaWRfc2Vla19mbGFncy5hZGQob3MuU0VFS19EQVRBKQogCiAjIG9wZW4oKSB1c2VzIHN0X2Jsa3NpemUgd2hlbmV2ZXIgd2UgY2FuCiBERUZBVUxUX0JVRkZFUl9TSVpFID0gOCAqIDEwMjQgICMgYnl0ZXMKQEAgLTI0LDIwICsyNywxMiBAQAogIyBkZWZpbmVkIGluIGlvLnB5LiBXZSBkb24ndCB1c2UgcmVhbCBpbmhlcml0YW5jZSB0aG91Z2gsIGJlY2F1c2Ugd2UgZG9uJ3QKICMgd2FudCB0byBpbmhlcml0IHRoZSBDIGltcGxlbWVudGF0aW9ucy4KIAotCi1jbGFzcyBCbG9ja2luZ0lPRXJyb3IoSU9FcnJvcik6Ci0KLSAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gSS9PIHdvdWxkIGJsb2NrIG9uIGEgbm9uLWJsb2NraW5nIEkvTyBzdHJlYW0uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXJybm8sIHN0cmVycm9yLCBjaGFyYWN0ZXJzX3dyaXR0ZW49MCk6Ci0gICAgICAgIHN1cGVyKCkuX19pbml0X18oZXJybm8sIHN0cmVycm9yKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjaGFyYWN0ZXJzX3dyaXR0ZW4sIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNoYXJhY3RlcnNfd3JpdHRlbiBtdXN0IGJlIGEgaW50ZWdlciIpCi0gICAgICAgIHNlbGYuY2hhcmFjdGVyc193cml0dGVuID0gY2hhcmFjdGVyc193cml0dGVuCisjIFJlYmluZCBmb3IgY29tcGF0aWJpbGl0eQorQmxvY2tpbmdJT0Vycm9yID0gQmxvY2tpbmdJT0Vycm9yCiAKIAogZGVmIG9wZW4oZmlsZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsCi0gICAgICAgICBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSk6CisgICAgICAgICBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpOgogCiAgICAgciIiIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuCiAKQEAgLTQ3LDIxICs0MiwyMiBAQAogICAgIHdyYXBwZWQuIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlCiAgICAgcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyBjbG9zZWZkIGlzIHNldCB0byBGYWxzZS4pCiAKLSAgICBtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZQotICAgIGlzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gJ3InIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dAotICAgIG1vZGUuICBPdGhlciBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYKLSAgICBpdCBhbHJlYWR5IGV4aXN0cyksIGFuZCAnYScgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsCi0gICAgbWVhbnMgdGhhdCBhbGwgd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlCi0gICAgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZQotICAgIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3Ci0gICAgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUKLSAgICBtb2RlcyBhcmU6CisgICAgbW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKKyAgICBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQgbW9kZS4gT3RoZXIKKyAgICBjb21tb24gdmFsdWVzIGFyZSAndycgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYgaXQgYWxyZWFkeQorICAgIGV4aXN0cyksICd4JyBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uIG9mIGEgbmV3IGZpbGUsIGFuZCAnYScgZm9yIGFwcGVuZGluZworICAgICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywgbWVhbnMgdGhhdCBhbGwgd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZQorICAgIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzZWVrIHBvc2l0aW9uKS4gSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcworICAgIG5vdCBzcGVjaWZpZWQgdGhlIGVuY29kaW5nIHVzZWQgaXMgcGxhdGZvcm0gZGVwZW5kZW50LiAoRm9yIHJlYWRpbmcgYW5kCisgICAgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZQorICAgIGF2YWlsYWJsZSBtb2RlcyBhcmU6CiAKICAgICA9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgQ2hhcmFjdGVyIE1lYW5pbmcKICAgICAtLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgJ3InICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpCiAgICAgJ3cnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIHRydW5jYXRpbmcgdGhlIGZpbGUgZmlyc3QKKyAgICAneCcgICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgYW5kIG9wZW4gaXQgZm9yIHdyaXRpbmcKICAgICAnYScgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzCiAgICAgJ2InICAgICAgIGJpbmFyeSBtb2RlCiAgICAgJ3QnICAgICAgIHRleHQgbW9kZSAoZGVmYXVsdCkKQEAgLTcyLDcgKzY4LDggQEAKIAogICAgIFRoZSBkZWZhdWx0IG1vZGUgaXMgJ3J0JyAob3BlbiBmb3IgcmVhZGluZyB0ZXh0KS4gRm9yIGJpbmFyeSByYW5kb20KICAgICBhY2Nlc3MsIHRoZSBtb2RlICd3K2InIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGUKLSAgICAncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uCisgICAgJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLiBUaGUgJ3gnIG1vZGUgaW1wbGllcyAndycgYW5kCisgICAgcmFpc2VzIGFuIGBGaWxlRXhpc3RzRXJyb3JgIGlmIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzLgogCiAgICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLAogICAgIGV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpbgpAQCAtMTMyLDYgKzEyOSwxMiBAQAogICAgIGJlIGtlcHQgb3BlbiB3aGVuIHRoZSBmaWxlIGlzIGNsb3NlZC4gVGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4gYSBmaWxlIG5hbWUgaXMKICAgICBnaXZlbiBhbmQgbXVzdCBiZSBUcnVlIGluIHRoYXQgY2FzZS4KIAorICAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZQorICAgIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nCisgICAgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlCisgICAgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvCisgICAgcGFzc2luZyBOb25lKS4KKwogICAgIG9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmQKICAgICB0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nCiAgICAgYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoJ3cnLApAQCAtMTU3LDggKzE2MCw5IEBACiAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShlcnJvcnMsIHN0cik6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBlcnJvcnM6ICVyIiAlIGVycm9ycykKICAgICBtb2RlcyA9IHNldChtb2RlKQotICAgIGlmIG1vZGVzIC0gc2V0KCJhcndiK3RVIikgb3IgbGVuKG1vZGUpID4gbGVuKG1vZGVzKToKKyAgICBpZiBtb2RlcyAtIHNldCgiYXhyd2IrdFUiKSBvciBsZW4obW9kZSkgPiBsZW4obW9kZXMpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIG1vZGU6ICVyIiAlIG1vZGUpCisgICAgY3JlYXRpbmcgPSAieCIgaW4gbW9kZXMKICAgICByZWFkaW5nID0gInIiIGluIG1vZGVzCiAgICAgd3JpdGluZyA9ICJ3IiBpbiBtb2RlcwogICAgIGFwcGVuZGluZyA9ICJhIiBpbiBtb2RlcwpAQCAtMTY2LDE0ICsxNzAsMTQgQEAKICAgICB0ZXh0ID0gInQiIGluIG1vZGVzCiAgICAgYmluYXJ5ID0gImIiIGluIG1vZGVzCiAgICAgaWYgIlUiIGluIG1vZGVzOgotICAgICAgICBpZiB3cml0aW5nIG9yIGFwcGVuZGluZzoKKyAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmc6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCB1c2UgVSBhbmQgd3JpdGluZyBtb2RlIGF0IG9uY2UiKQogICAgICAgICByZWFkaW5nID0gVHJ1ZQogICAgIGlmIHRleHQgYW5kIGJpbmFyeToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSB0ZXh0IGFuZCBiaW5hcnkgbW9kZSBhdCBvbmNlIikKLSAgICBpZiByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDE6CisgICAgaWYgY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDE6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGhhdmUgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSBhdCBvbmNlIikKLSAgICBpZiBub3QgKHJlYWRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcpOgorICAgIGlmIG5vdCAoY3JlYXRpbmcgb3IgcmVhZGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkL3dyaXRlL2FwcGVuZCBtb2RlIikKICAgICBpZiBiaW5hcnkgYW5kIGVuY29kaW5nIGlzIG5vdCBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZW5jb2RpbmcgYXJndW1lbnQiKQpAQCAtMTgyLDExICsxODYsMTIgQEAKICAgICBpZiBiaW5hcnkgYW5kIG5ld2xpbmUgaXMgbm90IE5vbmU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhIG5ld2xpbmUgYXJndW1lbnQiKQogICAgIHJhdyA9IEZpbGVJTyhmaWxlLAorICAgICAgICAgICAgICAgICAoY3JlYXRpbmcgYW5kICJ4IiBvciAiIikgKwogICAgICAgICAgICAgICAgICAocmVhZGluZyBhbmQgInIiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgICh3cml0aW5nIGFuZCAidyIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKGFwcGVuZGluZyBhbmQgImEiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgICh1cGRhdGluZyBhbmQgIisiIG9yICIiKSwKLSAgICAgICAgICAgICAgICAgY2xvc2VmZCkKKyAgICAgICAgICAgICAgICAgY2xvc2VmZCwgb3BlbmVyPW9wZW5lcikKICAgICBsaW5lX2J1ZmZlcmluZyA9IEZhbHNlCiAgICAgaWYgYnVmZmVyaW5nID09IDEgb3IgYnVmZmVyaW5nIDwgMCBhbmQgcmF3LmlzYXR0eSgpOgogICAgICAgICBidWZmZXJpbmcgPSAtMQpAQCAtMjA4LDcgKzIxMyw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGhhdmUgdW5idWZmZXJlZCB0ZXh0IEkvTyIpCiAgICAgaWYgdXBkYXRpbmc6CiAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyaW5nKQotICAgIGVsaWYgd3JpdGluZyBvciBhcHBlbmRpbmc6CisgICAgZWxpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRXcml0ZXIocmF3LCBidWZmZXJpbmcpCiAgICAgZWxpZiByZWFkaW5nOgogICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcmluZykKQEAgLTMwNSw2ICszMTAsNyBAQAogICAgICAgICAqIDAgLS0gc3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCk7IG9mZnNldCBzaG91bGQgYmUgemVybyBvciBwb3NpdGl2ZQogICAgICAgICAqIDEgLS0gY3VycmVudCBzdHJlYW0gcG9zaXRpb247IG9mZnNldCBtYXkgYmUgbmVnYXRpdmUKICAgICAgICAgKiAyIC0tIGVuZCBvZiBzdHJlYW07IG9mZnNldCBpcyB1c3VhbGx5IG5lZ2F0aXZlCisgICAgICAgIFNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgLyBmaWxlIHN5c3RlbXMgY291bGQgcHJvdmlkZSBhZGRpdGlvbmFsIHZhbHVlcy4KIAogICAgICAgICBSZXR1cm4gYW4gaW50IGluZGljYXRpbmcgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4KICAgICAgICAgIiIiCkBAIC04NjUsNyArODcxLDcgQEAKICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKICAgICAgICAgICAgIHNlbGYuX3BvcyA9IG1heCgwLCBsZW4oc2VsZi5fYnVmZmVyKSArIHBvcykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtOTU0LDE1ICs5NjAsMTkgQEAKICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHdoZW4gdGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkIGlzIHVuc3BlY2lmaWVkLgogICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA9PSAtMToKICAgICAgICAgICAgIHNlbGYuX3Jlc2V0X3JlYWRfYnVmKCkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5yYXcsICdyZWFkYWxsJyk6CisgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkYWxsKCkKKyAgICAgICAgICAgICAgICBpZiBjaHVuayBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmW3BvczpdIG9yIE5vbmUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmW3BvczpdICsgY2h1bmsKICAgICAgICAgICAgIGNodW5rcyA9IFtidWZbcG9zOl1dICAjIFN0cmlwIHRoZSBjb25zdW1lZCBieXRlcy4KICAgICAgICAgICAgIGN1cnJlbnRfc2l6ZSA9IDAKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgIyBSZWFkIHVudGlsIEVPRiBvciB1bnRpbCByZWFkKCkgd291bGQgYmxvY2suCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGNodW5rIGluIGVtcHR5X3ZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgbm9kYXRhX3ZhbCA9IGNodW5rCkBAIC05ODQsOSArOTk0LDcgQEAKICAgICAgICAgd2hpbGUgYXZhaWwgPCBuOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCh3YW50ZWQpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawpAQCAtMTAxOSw5ICsxMDI3LDcgQEAKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiBjdXJyZW50OgpAQCAtMTA0Niw3ICsxMDUyLDcgQEAKICAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4udGVsbChzZWxmKSAtIGxlbihzZWxmLl9yZWFkX2J1ZikgKyBzZWxmLl9yZWFkX3BvcwogCiAgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9MCk6Ci0gICAgICAgIGlmIG5vdCAoMCA8PSB3aGVuY2UgPD0gMik6CisgICAgICAgIGlmIHdoZW5jZSBub3QgaW4gdmFsaWRfc2Vla19mbGFnczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgd2l0aCBzZWxmLl9yZWFkX2xvY2s6CiAgICAgICAgICAgICBpZiB3aGVuY2UgPT0gMToKQEAgLTEwNjQsMTkgKzEwNzAsMTMgQEAKICAgICBERUZBVUxUX0JVRkZFUl9TSVpFLgogICAgICIiIgogCi0gICAgX3dhcm5pbmdfc3RhY2tfb2Zmc2V0ID0gMgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdywKLSAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSwgbWF4X2J1ZmZlcl9zaXplPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICBpZiBub3QgcmF3LndyaXRhYmxlKCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCcicmF3IiBhcmd1bWVudCBtdXN0IGJlIHdyaXRhYmxlLicpCiAKICAgICAgICAgX0J1ZmZlcmVkSU9NaXhpbi5fX2luaXRfXyhzZWxmLCByYXcpCiAgICAgICAgIGlmIGJ1ZmZlcl9zaXplIDw9IDA6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGJ1ZmZlciBzaXplIikKLSAgICAgICAgaWYgbWF4X2J1ZmZlcl9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dhcm5pbmdfc3RhY2tfb2Zmc2V0KQogICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemUKICAgICAgICAgc2VsZi5fd3JpdGVfYnVmID0gYnl0ZWFycmF5KCkKICAgICAgICAgc2VsZi5fd3JpdGVfbG9jayA9IExvY2soKQpAQCAtMTEyNiwxMyArMTEyNiwxMSBAQAogICAgICAgICB3aGlsZSBzZWxmLl93cml0ZV9idWY6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbiA9IHNlbGYucmF3LndyaXRlKHNlbGYuX3dyaXRlX2J1ZikKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigic2VsZi5yYXcgc2hvdWxkIGltcGxlbWVudCBSYXdJT0Jhc2U6IGl0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBub3QgcmFpc2UgQmxvY2tpbmdJT0Vycm9yIikKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbiBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIEJsb2NraW5nSU9FcnJvcigKICAgICAgICAgICAgICAgICAgICAgZXJybm8uRUFHQUlOLApAQCAtMTE0NSw4ICsxMTQzLDggQEAKICAgICAgICAgcmV0dXJuIF9CdWZmZXJlZElPTWl4aW4udGVsbChzZWxmKSArIGxlbihzZWxmLl93cml0ZV9idWYpCiAKICAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKLSAgICAgICAgaWYgbm90ICgwIDw9IHdoZW5jZSA8PSAyKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIikKKyAgICAgICAgaWYgd2hlbmNlIG5vdCBpbiB2YWxpZF9zZWVrX2ZsYWdzOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICB3aXRoIHNlbGYuX3dyaXRlX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9mbHVzaF91bmxvY2tlZCgpCiAgICAgICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi5zZWVrKHNlbGYsIHBvcywgd2hlbmNlKQpAQCAtMTE2OCwxNSArMTE2NiwxMSBAQAogICAgICMgWFhYIFRoZSB1c2VmdWxuZXNzIG9mIHRoaXMgKGNvbXBhcmVkIHRvIGhhdmluZyB0d28gc2VwYXJhdGUgSU8KICAgICAjIG9iamVjdHMpIGlzIHF1ZXN0aW9uYWJsZS4KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZXIsIHdyaXRlciwKLSAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSwgbWF4X2J1ZmZlcl9zaXplPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWFkZXIsIHdyaXRlciwgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgogCiAgICAgICAgIFRoZSBhcmd1bWVudHMgYXJlIHR3byBSYXdJTyBpbnN0YW5jZXMuCiAgICAgICAgICIiIgotICAgICAgICBpZiBtYXhfYnVmZmVyX3NpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKLQogICAgICAgICBpZiBub3QgcmVhZGVyLnJlYWRhYmxlKCk6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCcicmVhZGVyIiBhcmd1bWVudCBtdXN0IGJlIHJlYWRhYmxlLicpCiAKQEAgLTEyMzMsMTcgKzEyMjcsMTQgQEAKICAgICBkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLgogICAgICIiIgogCi0gICAgX3dhcm5pbmdfc3RhY2tfb2Zmc2V0ID0gMwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdywKLSAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSwgbWF4X2J1ZmZlcl9zaXplPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpOgogICAgICAgICByYXcuX2NoZWNrU2Vla2FibGUoKQogICAgICAgICBCdWZmZXJlZFJlYWRlci5fX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKQotICAgICAgICBCdWZmZXJlZFdyaXRlci5fX2luaXRfXyhzZWxmLCByYXcsIGJ1ZmZlcl9zaXplLCBtYXhfYnVmZmVyX3NpemUpCisgICAgICAgIEJ1ZmZlcmVkV3JpdGVyLl9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemUpCiAKICAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKLSAgICAgICAgaWYgbm90ICgwIDw9IHdoZW5jZSA8PSAyKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgd2hlbmNlIikKKyAgICAgICAgaWYgd2hlbmNlIG5vdCBpbiB2YWxpZF9zZWVrX2ZsYWdzOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgaWYgc2VsZi5fcmVhZF9idWY6CiAgICAgICAgICAgICAjIFVuZG8gcmVhZCBhaGVhZC4KQEAgLTE0NTUsNyArMTQ0Niw3IEBACiAgICAgciIiIkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuCiAKICAgICBlbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUKLSAgICBkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nLgorICAgIGRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLgogCiAgICAgZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUgdGhlCiAgICAgY29kZWNzLnJlZ2lzdGVyKSBhbmQgZGVmYXVsdHMgdG8gInN0cmljdCIuCkBAIC0xNDc2LDYgKzE0NjcsOSBAQAogCiAgICAgX0NIVU5LX1NJWkUgPSAyMDQ4CiAKKyAgICAjIFRoZSB3cml0ZV90aHJvdWdoIGFyZ3VtZW50IGhhcyBubyBlZmZlY3QgaGVyZSBzaW5jZSB0aGlzCisgICAgIyBpbXBsZW1lbnRhdGlvbiBhbHdheXMgd3JpdGVzIHRocm91Z2guICBUaGUgYXJndW1lbnQgaXMgcHJlc2VudCBvbmx5CisgICAgIyBzbyB0aGF0IHRoZSBzaWduYXR1cmUgY2FuIG1hdGNoIHRoZSBzaWduYXR1cmUgb2YgdGhlIEMgdmVyc2lvbi4KICAgICBkZWYgX19pbml0X18oc2VsZiwgYnVmZmVyLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLAogICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSk6CiAgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5ld2xpbmUsIHN0cik6CkBAIC0xNDk0LDcgKzE0ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIEltcG9ydGluZyBsb2NhbGUgbWF5IGZhaWwgaWYgUHl0aG9uIGlzIGJlaW5nIGJ1aWx0CiAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gImFzY2lpIgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCiAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW5jb2RpbmcsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGVuY29kaW5nOiAlciIgJSBlbmNvZGluZykKQEAgLTE1MjEsNiArMTUxNSw3IEBACiAgICAgICAgIHNlbGYuX3NuYXBzaG90ID0gTm9uZSAgIyBpbmZvIGZvciByZWNvbnN0cnVjdGluZyBkZWNvZGVyIHN0YXRlCiAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gc2VsZi5fdGVsbGluZyA9IHNlbGYuYnVmZmVyLnNlZWthYmxlKCkKICAgICAgICAgc2VsZi5faGFzX3JlYWQxID0gaGFzYXR0cihzZWxmLmJ1ZmZlciwgJ3JlYWQxJykKKyAgICAgICAgc2VsZi5fYjJjcmF0aW8gPSAwLjAKIAogICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZSBhbmQgc2VsZi53cml0YWJsZSgpOgogICAgICAgICAgICAgcG9zaXRpb24gPSBzZWxmLmJ1ZmZlci50ZWxsKCkKQEAgLTE2OTMsNyArMTY4OCwxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaW5wdXRfY2h1bmsgPSBzZWxmLmJ1ZmZlci5yZWFkKHNlbGYuX0NIVU5LX1NJWkUpCiAgICAgICAgIGVvZiA9IG5vdCBpbnB1dF9jaHVuawotICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLl9kZWNvZGVyLmRlY29kZShpbnB1dF9jaHVuaywgZW9mKSkKKyAgICAgICAgZGVjb2RlZF9jaGFycyA9IHNlbGYuX2RlY29kZXIuZGVjb2RlKGlucHV0X2NodW5rLCBlb2YpCisgICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKGRlY29kZWRfY2hhcnMpCisgICAgICAgIGlmIGRlY29kZWRfY2hhcnM6CisgICAgICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IGxlbihpbnB1dF9jaHVuaykgLyBsZW4oc2VsZi5fZGVjb2RlZF9jaGFycykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gMC4wCiAKICAgICAgICAgaWYgc2VsZi5fdGVsbGluZzoKICAgICAgICAgICAgICMgQXQgdGhlIHNuYXBzaG90IHBvaW50LCBsZW4oZGVjX2J1ZmZlcikgYnl0ZXMgYmVmb3JlIHRoZSByZWFkLApAQCAtMTc0NywyMCArMTc0Nyw1NiBAQAogICAgICAgICAjIGZvcndhcmQgdW50aWwgaXQgZ2l2ZXMgdXMgZW5vdWdoIGRlY29kZWQgY2hhcmFjdGVycy4KICAgICAgICAgc2F2ZWRfc3RhdGUgPSBkZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGYXN0IHNlYXJjaCBmb3IgYW4gYWNjZXB0YWJsZSBzdGFydCBwb2ludCwgY2xvc2UgdG8gb3VyCisgICAgICAgICAgICAjIGN1cnJlbnQgcG9zLgorICAgICAgICAgICAgIyBSYXRpb25hbGU6IGNhbGxpbmcgZGVjb2Rlci5kZWNvZGUoKSBoYXMgYSBsYXJnZSBvdmVyaGVhZAorICAgICAgICAgICAgIyByZWdhcmRsZXNzIG9mIGNodW5rIHNpemU7IHdlIHdhbnQgdGhlIG51bWJlciBvZiBzdWNoIGNhbGxzIHRvCisgICAgICAgICAgICAjIGJlIE8oMSkgaW4gbW9zdCBzaXR1YXRpb25zIChjb21tb24gZGVjb2RlcnMsIG5vbi1jcmF6eSBpbnB1dCkuCisgICAgICAgICAgICAjIEFjdHVhbGx5LCBpdCB3aWxsIGJlIGV4YWN0bHkgMSBmb3IgZml4ZWQtc2l6ZSBjb2RlY3MgKGFsbAorICAgICAgICAgICAgIyA4LWJpdCBjb2RlY3MsIGFsc28gVVRGLTE2IGFuZCBVVEYtMzIpLgorICAgICAgICAgICAgc2tpcF9ieXRlcyA9IGludChzZWxmLl9iMmNyYXRpbyAqIGNoYXJzX3RvX3NraXApCisgICAgICAgICAgICBza2lwX2JhY2sgPSAxCisgICAgICAgICAgICBhc3NlcnQgc2tpcF9ieXRlcyA8PSBsZW4obmV4dF9pbnB1dCkKKyAgICAgICAgICAgIHdoaWxlIHNraXBfYnl0ZXMgPiAwOgorICAgICAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUoKGInJywgZGVjX2ZsYWdzKSkKKyAgICAgICAgICAgICAgICAjIERlY29kZSB1cCB0byB0ZW1wdGF0aXZlIHN0YXJ0IHBvaW50CisgICAgICAgICAgICAgICAgbiA9IGxlbihkZWNvZGVyLmRlY29kZShuZXh0X2lucHV0Wzpza2lwX2J5dGVzXSkpCisgICAgICAgICAgICAgICAgaWYgbiA8PSBjaGFyc190b19za2lwOgorICAgICAgICAgICAgICAgICAgICBiLCBkID0gZGVjb2Rlci5nZXRzdGF0ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBiOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBCZWZvcmUgcG9zIGFuZCBubyBieXRlcyBidWZmZXJlZCBpbiBkZWNvZGVyID0+IE9LCisgICAgICAgICAgICAgICAgICAgICAgICBkZWNfZmxhZ3MgPSBkCisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc190b19za2lwIC09IG4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICMgU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljCisgICAgICAgICAgICAgICAgICAgIHNraXBfYnl0ZXMgLT0gbGVuKGIpCisgICAgICAgICAgICAgICAgICAgIHNraXBfYmFjayA9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFdlJ3JlIHRvbyBmYXIgYWhlYWQsIHNraXAgYmFjayBhIGJpdAorICAgICAgICAgICAgICAgICAgICBza2lwX2J5dGVzIC09IHNraXBfYmFjaworICAgICAgICAgICAgICAgICAgICBza2lwX2JhY2sgPSBza2lwX2JhY2sgKiAyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNraXBfYnl0ZXMgPSAwCisgICAgICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQorCiAgICAgICAgICAgICAjIE5vdGUgb3VyIGluaXRpYWwgc3RhcnQgcG9pbnQuCi0gICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCi0gICAgICAgICAgICBzdGFydF9wb3MgPSBwb3NpdGlvbgotICAgICAgICAgICAgc3RhcnRfZmxhZ3MsIGJ5dGVzX2ZlZCwgY2hhcnNfZGVjb2RlZCA9IGRlY19mbGFncywgMCwgMAotICAgICAgICAgICAgbmVlZF9lb2YgPSAwCisgICAgICAgICAgICBzdGFydF9wb3MgPSBwb3NpdGlvbiArIHNraXBfYnl0ZXMKKyAgICAgICAgICAgIHN0YXJ0X2ZsYWdzID0gZGVjX2ZsYWdzCisgICAgICAgICAgICBpZiBjaGFyc190b19za2lwID09IDA6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHN0YXJ0IHBvaW50LgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYWNrX2Nvb2tpZShzdGFydF9wb3MsIHN0YXJ0X2ZsYWdzKQogCiAgICAgICAgICAgICAjIEZlZWQgdGhlIGRlY29kZXIgb25lIGJ5dGUgYXQgYSB0aW1lLiAgQXMgd2UgZ28sIG5vdGUgdGhlCiAgICAgICAgICAgICAjIG5lYXJlc3QgInNhZmUgc3RhcnQgcG9pbnQiIGJlZm9yZSB0aGUgY3VycmVudCBsb2NhdGlvbgogICAgICAgICAgICAgIyAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCiAgICAgICAgICAgICAjIGNhbiBzYWZlbHkgc3RhcnQgZnJvbSB0aGVyZSBhbmQgYWR2YW5jZSB0byB0aGlzIGxvY2F0aW9uKS4KLSAgICAgICAgICAgIG5leHRfYnl0ZSA9IGJ5dGVhcnJheSgxKQotICAgICAgICAgICAgZm9yIG5leHRfYnl0ZVswXSBpbiBuZXh0X2lucHV0OgorICAgICAgICAgICAgYnl0ZXNfZmVkID0gMAorICAgICAgICAgICAgbmVlZF9lb2YgPSAwCisgICAgICAgICAgICAjIENoYXJzIGRlY29kZWQgc2luY2UgYHN0YXJ0X3Bvc2AKKyAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgPSAwCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShza2lwX2J5dGVzLCBsZW4obmV4dF9pbnB1dCkpOgogICAgICAgICAgICAgICAgIGJ5dGVzX2ZlZCArPSAxCi0gICAgICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBsZW4oZGVjb2Rlci5kZWNvZGUobmV4dF9ieXRlKSkKKyAgICAgICAgICAgICAgICBjaGFyc19kZWNvZGVkICs9IGxlbihkZWNvZGVyLmRlY29kZShuZXh0X2lucHV0W2k6aSsxXSkpCiAgICAgICAgICAgICAgICAgZGVjX2J1ZmZlciwgZGVjX2ZsYWdzID0gZGVjb2Rlci5nZXRzdGF0ZSgpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRlY19idWZmZXIgYW5kIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcDoKICAgICAgICAgICAgICAgICAgICAgIyBEZWNvZGVyIGJ1ZmZlciBpcyBlbXB0eSwgc28gdGhpcyBpcyBhIHNhZmUgc3RhcnQgcG9pbnQuCkBAIC0xODE5LDggKzE4NTUsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZXIucmVzZXQoKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uCiAgICAgICAgIGlmIHdoZW5jZSAhPSAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgKCVyLCBzaG91bGQgYmUgMCwgMSBvciAyKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2hlbmNlLCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB3aGVuY2UgKCVyKSIgJSAod2hlbmNlLCkpCiAgICAgICAgIGlmIGNvb2tpZSA8IDA6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBzZWVrIHBvc2l0aW9uICVyIiAlIChjb29raWUsKSkKICAgICAgICAgc2VsZi5mbHVzaCgpCmRpZmYgLS1naXQgYS9MaWIvX3N0cnB0aW1lLnB5IGIvTGliL19zdHJwdGltZS5weQppbmRleCBmYTA2Mzc2Li5iMGNkM2Q2IDEwMDY0NAotLS0gYS9MaWIvX3N0cnB0aW1lLnB5CisrKyBiL0xpYi9fc3RycHRpbWUucHkKQEAgLTQ4NiwxOSArNDg2LDE5IEBACiAKICAgICByZXR1cm4gKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwKLSAgICAgICAgICAgIHdlZWtkYXksIGp1bGlhbiwgdHosIGdtdG9mZiwgdHpuYW1lKSwgZnJhY3Rpb24KKyAgICAgICAgICAgIHdlZWtkYXksIGp1bGlhbiwgdHosIHR6bmFtZSwgZ210b2ZmKSwgZnJhY3Rpb24KIAogZGVmIF9zdHJwdGltZV90aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgdGltZSBzdHJ1Y3QgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCiAgICAgZm9ybWF0IHN0cmluZy4iIiIKICAgICB0dCA9IF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0KVswXQotICAgIHJldHVybiB0aW1lLnN0cnVjdF90aW1lKHR0Wzo5XSkKKyAgICByZXR1cm4gdGltZS5zdHJ1Y3RfdGltZSh0dFs6dGltZS5fU1RSVUNUX1RNX0lURU1TXSkKIAogZGVmIF9zdHJwdGltZV9kYXRldGltZShjbHMsIGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgY2xhc3MgY2xzIGluc3RhbmNlIGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQogICAgIGZvcm1hdCBzdHJpbmcuIiIiCiAgICAgdHQsIGZyYWN0aW9uID0gX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQpCi0gICAgZ210b2ZmLCB0em5hbWUgPSB0dFstMjpdCisgICAgdHpuYW1lLCBnbXRvZmYgPSB0dFstMjpdCiAgICAgYXJncyA9IHR0Wzo2XSArIChmcmFjdGlvbiwpCiAgICAgaWYgZ210b2ZmIGlzIG5vdCBOb25lOgogICAgICAgICB0emRlbHRhID0gZGF0ZXRpbWVfdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKQpkaWZmIC0tZ2l0IGEvTGliL2FiYy5weSBiL0xpYi9hYmMucHkKaW5kZXggYTZjMmRjNC4uMDk3NzhlOCAxMDA2NDQKLS0tIGEvTGliL2FiYy5weQorKysgYi9MaWIvYWJjLnB5CkBAIC0yNiw3ICsyNiw4IEBACiAKIAogY2xhc3MgYWJzdHJhY3RjbGFzc21ldGhvZChjbGFzc21ldGhvZCk6Ci0gICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBjbGFzc21ldGhvZHMuCisgICAgIiIiCisgICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBjbGFzc21ldGhvZHMuCiAKICAgICBTaW1pbGFyIHRvIGFic3RyYWN0bWV0aG9kLgogCkBAIC0zNiw2ICszNyw5IEBACiAgICAgICAgICAgICBAYWJzdHJhY3RjbGFzc21ldGhvZAogICAgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X2NsYXNzbWV0aG9kKGNscywgLi4uKToKICAgICAgICAgICAgICAgICAuLi4KKworICAgICdhYnN0cmFjdGNsYXNzbWV0aG9kJyBpcyBkZXByZWNhdGVkLiBVc2UgJ2NsYXNzbWV0aG9kJyB3aXRoCisgICAgJ2Fic3RyYWN0bWV0aG9kJyBpbnN0ZWFkLgogICAgICIiIgogCiAgICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCkBAIC00Niw3ICs1MCw4IEBACiAKIAogY2xhc3MgYWJzdHJhY3RzdGF0aWNtZXRob2Qoc3RhdGljbWV0aG9kKToKLSAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHN0YXRpY21ldGhvZHMuCisgICAgIiIiCisgICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBzdGF0aWNtZXRob2RzLgogCiAgICAgU2ltaWxhciB0byBhYnN0cmFjdG1ldGhvZC4KIApAQCAtNTYsNiArNjEsOSBAQAogICAgICAgICAgICAgQGFic3RyYWN0c3RhdGljbWV0aG9kCiAgICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CiAgICAgICAgICAgICAgICAgLi4uCisKKyAgICAnYWJzdHJhY3RzdGF0aWNtZXRob2QnIGlzIGRlcHJlY2F0ZWQuIFVzZSAnc3RhdGljbWV0aG9kJyB3aXRoCisgICAgJ2Fic3RyYWN0bWV0aG9kJyBpbnN0ZWFkLgogICAgICIiIgogCiAgICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCkBAIC02Niw3ICs3NCw4IEBACiAKIAogY2xhc3MgYWJzdHJhY3Rwcm9wZXJ0eShwcm9wZXJ0eSk6Ci0gICAgIiIiQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBwcm9wZXJ0aWVzLgorICAgICIiIgorICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgcHJvcGVydGllcy4KIAogICAgIFJlcXVpcmVzIHRoYXQgdGhlIG1ldGFjbGFzcyBpcyBBQkNNZXRhIG9yIGRlcml2ZWQgZnJvbSBpdC4gIEEKICAgICBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gQUJDTWV0YSBjYW5ub3QgYmUKQEAgLTg4LDcgKzk3LDExIEBACiAgICAgICAgICAgICBkZWYgZ2V0eChzZWxmKTogLi4uCiAgICAgICAgICAgICBkZWYgc2V0eChzZWxmLCB2YWx1ZSk6IC4uLgogICAgICAgICAgICAgeCA9IGFic3RyYWN0cHJvcGVydHkoZ2V0eCwgc2V0eCkKKworICAgICdhYnN0cmFjdHByb3BlcnR5JyBpcyBkZXByZWNhdGVkLiBVc2UgJ3Byb3BlcnR5JyB3aXRoICdhYnN0cmFjdG1ldGhvZCcKKyAgICBpbnN0ZWFkLgogICAgICIiIgorCiAgICAgX19pc2Fic3RyYWN0bWV0aG9kX18gPSBUcnVlCiAKIApAQCAtMTMzLDExICsxNDYsMTQgQEAKICAgICAgICAgcmV0dXJuIGNscwogCiAgICAgZGVmIHJlZ2lzdGVyKGNscywgc3ViY2xhc3MpOgotICAgICAgICAiIiJSZWdpc3RlciBhIHZpcnR1YWwgc3ViY2xhc3Mgb2YgYW4gQUJDLiIiIgorICAgICAgICAiIiJSZWdpc3RlciBhIHZpcnR1YWwgc3ViY2xhc3Mgb2YgYW4gQUJDLgorCisgICAgICAgIFJldHVybnMgdGhlIHN1YmNsYXNzLCB0byBhbGxvdyB1c2FnZSBhcyBhIGNsYXNzIGRlY29yYXRvci4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN1YmNsYXNzLCB0eXBlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuIG9ubHkgcmVnaXN0ZXIgY2xhc3NlcyIpCiAgICAgICAgIGlmIGlzc3ViY2xhc3Moc3ViY2xhc3MsIGNscyk6Ci0gICAgICAgICAgICByZXR1cm4gICMgQWxyZWFkeSBhIHN1YmNsYXNzCisgICAgICAgICAgICByZXR1cm4gc3ViY2xhc3MgICMgQWxyZWFkeSBhIHN1YmNsYXNzCiAgICAgICAgICMgU3VidGxlOiB0ZXN0IGZvciBjeWNsZXMgKmFmdGVyKiB0ZXN0aW5nIGZvciAiYWxyZWFkeSBhIHN1YmNsYXNzIjsKICAgICAgICAgIyB0aGlzIG1lYW5zIHdlIGFsbG93IFgucmVnaXN0ZXIoWCkgYW5kIGludGVycHJldCBpdCBhcyBhIG5vLW9wLgogICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgc3ViY2xhc3MpOgpAQCAtMTQ1LDYgKzE2MSw3IEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlJlZnVzaW5nIHRvIGNyZWF0ZSBhbiBpbmhlcml0YW5jZSBjeWNsZSIpCiAgICAgICAgIGNscy5fYWJjX3JlZ2lzdHJ5LmFkZChzdWJjbGFzcykKICAgICAgICAgQUJDTWV0YS5fYWJjX2ludmFsaWRhdGlvbl9jb3VudGVyICs9IDEgICMgSW52YWxpZGF0ZSBuZWdhdGl2ZSBjYWNoZQorICAgICAgICByZXR1cm4gc3ViY2xhc3MKIAogICAgIGRlZiBfZHVtcF9yZWdpc3RyeShjbHMsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIkRlYnVnIGhlbHBlciB0byBwcmludCB0aGUgQUJDIHJlZ2lzdHJ5LiIiIgpkaWZmIC0tZ2l0IGEvTGliL2FpZmMucHkgYi9MaWIvYWlmYy5weQppbmRleCA3NzVmMzljLi5lYzRmODIyIDEwMDY0NAotLS0gYS9MaWIvYWlmYy5weQorKysgYi9MaWIvYWlmYy5weQpAQCAtMTM2LDYgKzEzNiw3IEBACiAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBidWlsdGlucworaW1wb3J0IHdhcm5pbmdzCiAKIF9fYWxsX18gPSBbIkVycm9yIiwgIm9wZW4iLCAib3BlbmZwIl0KIApAQCAtNDQwLDcgKzQ0MSw3IEBACiAgICAgICAgICAgICBrbHVkZ2UgPSAwCiAgICAgICAgICAgICBpZiBjaHVuay5jaHVua3NpemUgPT0gMTg6CiAgICAgICAgICAgICAgICAga2x1ZGdlID0gMQotICAgICAgICAgICAgICAgIHByaW50KCdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplJykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplJykKICAgICAgICAgICAgICAgICBjaHVuay5jaHVua3NpemUgPSAyMwogICAgICAgICAgICAgI0RFQlVHIGVuZAogICAgICAgICAgICAgc2VsZi5fY29tcHR5cGUgPSBjaHVuay5yZWFkKDQpCkBAIC00ODQsMTEgKzQ4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAjIGEgcG9zaXRpb24gMCBhbmQgbmFtZSAnJwogICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXJrZXJzLmFwcGVuZCgoaWQsIHBvcywgbmFtZSkpCiAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCdXYXJuaW5nOiBNQVJLIGNodW5rIGNvbnRhaW5zIG9ubHknLCBlbmQ9JyAnKQotICAgICAgICAgICAgcHJpbnQobGVuKHNlbGYuX21hcmtlcnMpLCBlbmQ9JyAnKQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDE6IHByaW50KCdtYXJrZXInLCBlbmQ9JyAnKQotICAgICAgICAgICAgZWxzZTogcHJpbnQoJ21hcmtlcnMnLCBlbmQ9JyAnKQotICAgICAgICAgICAgcHJpbnQoJ2luc3RlYWQgb2YnLCBubWFya2VycykKKyAgICAgICAgICAgIHcgPSAoJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seSAlcyBtYXJrZXIlcyBpbnN0ZWFkIG9mICVzJyAlCisgICAgICAgICAgICAgICAgIChsZW4oc2VsZi5fbWFya2VycyksICcnIGlmIGxlbihzZWxmLl9tYXJrZXJzKSA9PSAxIGVsc2UgJ3MnLAorICAgICAgICAgICAgICAgICAgbm1hcmtlcnMpKQorICAgICAgICAgICAgd2FybmluZ3Mud2Fybih3KQogCiBjbGFzcyBBaWZjX3dyaXRlOgogICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhpcyBjbGFzczoKZGlmZiAtLWdpdCBhL0xpYi9hcmdwYXJzZS5weSBiL0xpYi9hcmdwYXJzZS5weQppbmRleCBlYjg5NGNhLi5mMjViMWI2IDEwMDY0NAotLS0gYS9MaWIvYXJncGFyc2UucHkKKysrIGIvTGliL2FyZ3BhcnNlLnB5CkBAIC03MSw2ICs3MSw3IEBACiAgICAgJ0FyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyJywKICAgICAnUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyJywKICAgICAnUmF3VGV4dEhlbHBGb3JtYXR0ZXInLAorICAgICdNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXInLAogICAgICdOYW1lc3BhY2UnLAogICAgICdBY3Rpb24nLAogICAgICdPTkVfT1JfTU9SRScsCkBAIC00MTksNyArNDIwLDggQEAKIAogICAgICAgICAgICAgIyBwcm9kdWNlIGFsbCBhcmcgc3RyaW5ncwogICAgICAgICAgICAgZWxpZiBub3QgYWN0aW9uLm9wdGlvbl9zdHJpbmdzOgotICAgICAgICAgICAgICAgIHBhcnQgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGFjdGlvbi5kZXN0KQorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKGFjdGlvbikKKyAgICAgICAgICAgICAgICBwYXJ0ID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQogCiAgICAgICAgICAgICAgICAgIyBpZiBpdCdzIGluIGEgZ3JvdXAsIHN0cmlwIHRoZSBvdXRlciBbXQogICAgICAgICAgICAgICAgIGlmIGFjdGlvbiBpbiBncm91cF9hY3Rpb25zOgpAQCAtNDQxLDcgKzQ0Myw3IEBACiAgICAgICAgICAgICAgICAgIyBpZiB0aGUgT3B0aW9uYWwgdGFrZXMgYSB2YWx1ZSwgZm9ybWF0IGlzOgogICAgICAgICAgICAgICAgICMgICAgLXMgQVJHUyBvciAtLWxvbmcgQVJHUwogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBhY3Rpb24uZGVzdC51cHBlcigpCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChhY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgIGFyZ3Nfc3RyaW5nID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gJyVzICVzJyAlIChvcHRpb25fc3RyaW5nLCBhcmdzX3N0cmluZykKIApAQCAtNTI3LDcgKzUyOSw4IEBACiAKICAgICBkZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rpb24pOgogICAgICAgICBpZiBub3QgYWN0aW9uLm9wdGlvbl9zdHJpbmdzOgotICAgICAgICAgICAgbWV0YXZhciwgPSBzZWxmLl9tZXRhdmFyX2Zvcm1hdHRlcihhY3Rpb24sIGFjdGlvbi5kZXN0KSgxKQorICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoYWN0aW9uKQorICAgICAgICAgICAgbWV0YXZhciwgPSBzZWxmLl9tZXRhdmFyX2Zvcm1hdHRlcihhY3Rpb24sIGRlZmF1bHQpKDEpCiAgICAgICAgICAgICByZXR1cm4gbWV0YXZhcgogCiAgICAgICAgIGVsc2U6CkBAIC01NDEsNyArNTQ0LDcgQEAKICAgICAgICAgICAgICMgaWYgdGhlIE9wdGlvbmFsIHRha2VzIGEgdmFsdWUsIGZvcm1hdCBpczoKICAgICAgICAgICAgICMgICAgLXMgQVJHUywgLS1sb25nIEFSR1MKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdCA9IGFjdGlvbi5kZXN0LnVwcGVyKCkKKyAgICAgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoYWN0aW9uKQogICAgICAgICAgICAgICAgIGFyZ3Nfc3RyaW5nID0gc2VsZi5fZm9ybWF0X2FyZ3MoYWN0aW9uLCBkZWZhdWx0KQogICAgICAgICAgICAgICAgIGZvciBvcHRpb25fc3RyaW5nIGluIGFjdGlvbi5vcHRpb25fc3RyaW5nczoKICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCclcyAlcycgJSAob3B0aW9uX3N0cmluZywgYXJnc19zdHJpbmcpKQpAQCAtNjE5LDYgKzYyMiwxMiBAQAogICAgIGRlZiBfZ2V0X2hlbHBfc3RyaW5nKHNlbGYsIGFjdGlvbik6CiAgICAgICAgIHJldHVybiBhY3Rpb24uaGVscAogCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChzZWxmLCBhY3Rpb24pOgorICAgICAgICByZXR1cm4gYWN0aW9uLmRlc3QudXBwZXIoKQorCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24uZGVzdAorCiAKIGNsYXNzIFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcihIZWxwRm9ybWF0dGVyKToKICAgICAiIiJIZWxwIG1lc3NhZ2UgZm9ybWF0dGVyIHdoaWNoIHJldGFpbnMgYW55IGZvcm1hdHRpbmcgaW4gZGVzY3JpcHRpb25zLgpAQCAtNjI4LDcgKzYzNyw3IEBACiAgICAgIiIiCiAKICAgICBkZWYgX2ZpbGxfdGV4dChzZWxmLCB0ZXh0LCB3aWR0aCwgaW5kZW50KToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW2luZGVudCArIGxpbmUgZm9yIGxpbmUgaW4gdGV4dC5zcGxpdGxpbmVzKFRydWUpXSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oaW5kZW50ICsgbGluZSBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAKIAogY2xhc3MgUmF3VGV4dEhlbHBGb3JtYXR0ZXIoUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKToKQEAgLTY1OSw2ICs2NjgsMjIgQEAKICAgICAgICAgcmV0dXJuIGhlbHAKIAogCitjbGFzcyBNZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIoSGVscEZvcm1hdHRlcik6CisgICAgIiIiSGVscCBtZXNzYWdlIGZvcm1hdHRlciB3aGljaCB1c2VzIHRoZSBhcmd1bWVudCAndHlwZScgYXMgdGhlIGRlZmF1bHQKKyAgICBtZXRhdmFyIHZhbHVlIChpbnN0ZWFkIG9mIHRoZSBhcmd1bWVudCAnZGVzdCcpCisKKyAgICBPbmx5IHRoZSBuYW1lIG9mIHRoaXMgY2xhc3MgaXMgY29uc2lkZXJlZCBhIHB1YmxpYyBBUEkuIEFsbCB0aGUgbWV0aG9kcworICAgIHByb3ZpZGVkIGJ5IHRoZSBjbGFzcyBhcmUgY29uc2lkZXJlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCisgICAgIiIiCisKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24udHlwZS5fX25hbWVfXworCisgICAgZGVmIF9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9wb3NpdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24udHlwZS5fX25hbWVfXworCisKKwogIyA9PT09PT09PT09PT09PT09PT09PT0KICMgT3B0aW9ucyBhbmQgQXJndW1lbnRzCiAjID09PT09PT09PT09PT09PT09PT09PQpAQCAtMTU1NCw3ICsxNTc5LDYgQEAKICAgICAgICAgICAgICAgICAgdXNhZ2U9Tm9uZSwKICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgZXBpbG9nPU5vbmUsCi0gICAgICAgICAgICAgICAgIHZlcnNpb249Tm9uZSwKICAgICAgICAgICAgICAgICAgcGFyZW50cz1bXSwKICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPUhlbHBGb3JtYXR0ZXIsCiAgICAgICAgICAgICAgICAgIHByZWZpeF9jaGFycz0nLScsCkBAIC0xNTYzLDE0ICsxNTg3LDYgQEAKICAgICAgICAgICAgICAgICAgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLAogICAgICAgICAgICAgICAgICBhZGRfaGVscD1UcnVlKToKIAotICAgICAgICBpZiB2ZXJzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICIiIlRoZSAidmVyc2lvbiIgYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIiIiCi0gICAgICAgICAgICAgICAgIiIiUGxlYXNlIHVzZSAiIiIKLSAgICAgICAgICAgICAgICAiIiIiYWRkX2FyZ3VtZW50KC4uLiwgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0iTiIsIC4uLikiICIiIgotICAgICAgICAgICAgICAgICIiImluc3RlYWQiIiIsIERlcHJlY2F0aW9uV2FybmluZykKLQogICAgICAgICBzdXBlcmluaXQgPSBzdXBlcihBcmd1bWVudFBhcnNlciwgc2VsZikuX19pbml0X18KICAgICAgICAgc3VwZXJpbml0KGRlc2NyaXB0aW9uPWRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPXByZWZpeF9jaGFycywKQEAgLTE1ODQsNyArMTYwMCw2IEBACiAgICAgICAgIHNlbGYucHJvZyA9IHByb2cKICAgICAgICAgc2VsZi51c2FnZSA9IHVzYWdlCiAgICAgICAgIHNlbGYuZXBpbG9nID0gZXBpbG9nCi0gICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KICAgICAgICAgc2VsZi5mb3JtYXR0ZXJfY2xhc3MgPSBmb3JtYXR0ZXJfY2xhc3MKICAgICAgICAgc2VsZi5mcm9tZmlsZV9wcmVmaXhfY2hhcnMgPSBmcm9tZmlsZV9wcmVmaXhfY2hhcnMKICAgICAgICAgc2VsZi5hZGRfaGVscCA9IGFkZF9oZWxwCkBAIC0xNTk5LDcgKzE2MTQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHN0cmluZwogICAgICAgICBzZWxmLnJlZ2lzdGVyKCd0eXBlJywgTm9uZSwgaWRlbnRpdHkpCiAKLSAgICAgICAgIyBhZGQgaGVscCBhbmQgdmVyc2lvbiBhcmd1bWVudHMgaWYgbmVjZXNzYXJ5CisgICAgICAgICMgYWRkIGhlbHAgYXJndW1lbnQgaWYgbmVjZXNzYXJ5CiAgICAgICAgICMgKHVzaW5nIGV4cGxpY2l0IGRlZmF1bHQgdG8gb3ZlcnJpZGUgZ2xvYmFsIGFyZ3VtZW50X2RlZmF1bHQpCiAgICAgICAgIGRlZmF1bHRfcHJlZml4ID0gJy0nIGlmICctJyBpbiBwcmVmaXhfY2hhcnMgZWxzZSBwcmVmaXhfY2hhcnNbMF0KICAgICAgICAgaWYgc2VsZi5hZGRfaGVscDoKQEAgLTE2MDcsMTIgKzE2MjIsNiBAQAogICAgICAgICAgICAgICAgIGRlZmF1bHRfcHJlZml4KydoJywgZGVmYXVsdF9wcmVmaXgqMisnaGVscCcsCiAgICAgICAgICAgICAgICAgYWN0aW9uPSdoZWxwJywgZGVmYXVsdD1TVVBQUkVTUywKICAgICAgICAgICAgICAgICBoZWxwPV8oJ3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKSkKLSAgICAgICAgaWYgc2VsZi52ZXJzaW9uOgotICAgICAgICAgICAgc2VsZi5hZGRfYXJndW1lbnQoCi0gICAgICAgICAgICAgICAgZGVmYXVsdF9wcmVmaXgrJ3YnLCBkZWZhdWx0X3ByZWZpeCoyKyd2ZXJzaW9uJywKLSAgICAgICAgICAgICAgICBhY3Rpb249J3ZlcnNpb24nLCBkZWZhdWx0PVNVUFBSRVNTLAotICAgICAgICAgICAgICAgIHZlcnNpb249c2VsZi52ZXJzaW9uLAotICAgICAgICAgICAgICAgIGhlbHA9Xygic2hvdyBwcm9ncmFtJ3MgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQiKSkKIAogICAgICAgICAjIGFkZCBwYXJlbnQgYXJndW1lbnRzIGFuZCBkZWZhdWx0cwogICAgICAgICBmb3IgcGFyZW50IGluIHBhcmVudHM6CkBAIC0xNjMyLDcgKzE2NDEsNiBAQAogICAgICAgICAgICAgJ3Byb2cnLAogICAgICAgICAgICAgJ3VzYWdlJywKICAgICAgICAgICAgICdkZXNjcmlwdGlvbicsCi0gICAgICAgICAgICAndmVyc2lvbicsCiAgICAgICAgICAgICAnZm9ybWF0dGVyX2NsYXNzJywKICAgICAgICAgICAgICdjb25mbGljdF9oYW5kbGVyJywKICAgICAgICAgICAgICdhZGRfaGVscCcsCkBAIC0xOTQwLDI5ICsxOTQ4LDI5IEBACiAgICAgICAgICMgaWYgd2UgZGlkbid0IGNvbnN1bWUgYWxsIHRoZSBhcmd1bWVudCBzdHJpbmdzLCB0aGVyZSB3ZXJlIGV4dHJhcwogICAgICAgICBleHRyYXMuZXh0ZW5kKGFyZ19zdHJpbmdzW3N0b3BfaW5kZXg6XSkKIAotICAgICAgICAjIGlmIHdlIGRpZG4ndCB1c2UgYWxsIHRoZSBQb3NpdGlvbmFsIG9iamVjdHMsIHRoZXJlIHdlcmUgdG9vIGZldwotICAgICAgICAjIGFyZyBzdHJpbmdzIHN1cHBsaWVkLgotICAgICAgICBpZiBwb3NpdGlvbmFsczoKLSAgICAgICAgICAgIHNlbGYuZXJyb3IoXygndG9vIGZldyBhcmd1bWVudHMnKSkKLQotICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgYWN0aW9ucyB3ZXJlIHByZXNlbnQsIGFuZCBjb252ZXJ0IGRlZmF1bHRzLgorICAgICAgICAjIG1ha2Ugc3VyZSBhbGwgcmVxdWlyZWQgYWN0aW9ucyB3ZXJlIHByZXNlbnQgYW5kIGFsc28gY29udmVydAorICAgICAgICAjIGFjdGlvbiBkZWZhdWx0cyB3aGljaCB3ZXJlIG5vdCBnaXZlbiBhcyBhcmd1bWVudHMKKyAgICAgICAgcmVxdWlyZWRfYWN0aW9ucyA9IFtdCiAgICAgICAgIGZvciBhY3Rpb24gaW4gc2VsZi5fYWN0aW9uczoKICAgICAgICAgICAgIGlmIGFjdGlvbiBub3QgaW4gc2Vlbl9hY3Rpb25zOgogICAgICAgICAgICAgICAgIGlmIGFjdGlvbi5yZXF1aXJlZDoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9nZXRfYWN0aW9uX25hbWUoYWN0aW9uKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oJ2FyZ3VtZW50ICVzIGlzIHJlcXVpcmVkJykgJSBuYW1lKQorICAgICAgICAgICAgICAgICAgICByZXF1aXJlZF9hY3Rpb25zLmFwcGVuZChfZ2V0X2FjdGlvbl9uYW1lKGFjdGlvbikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGFjdGlvbiBkZWZhdWx0IG5vdyBpbnN0ZWFkIG9mIGRvaW5nIGl0IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAjIHBhcnNpbmcgYXJndW1lbnRzIHRvIGF2b2lkIGNhbGxpbmcgY29udmVydCBmdW5jdGlvbnMKICAgICAgICAgICAgICAgICAgICAgIyB0d2ljZSAod2hpY2ggbWF5IGZhaWwpIGlmIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4sIGJ1dAogICAgICAgICAgICAgICAgICAgICAjIG9ubHkgaWYgaXQgd2FzIGRlZmluZWQgYWxyZWFkeSBpbiB0aGUgbmFtZXNwYWNlCiAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24uZGVmYXVsdCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFjdGlvbi5kZWZhdWx0LCBzdHIpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRlZmF1bHQgaXMgZ2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFjdGlvbi5kZWZhdWx0LCBzdHIpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kZWZhdWx0IGlzIGdldGF0dHIobmFtZXNwYWNlLCBhY3Rpb24uZGVzdCkpOgogICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfdmFsdWUoYWN0aW9uLCBhY3Rpb24uZGVmYXVsdCkpCiAKKyAgICAgICAgaWYgcmVxdWlyZWRfYWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuZXJyb3IoXygndGhlIGZvbGxvd2luZyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkOiAlcycpICUKKyAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKHJlcXVpcmVkX2FjdGlvbnMpKQorCiAgICAgICAgICMgbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBncm91cHMgaGFkIG9uZSBvcHRpb24gcHJlc2VudAogICAgICAgICBmb3IgZ3JvdXAgaW4gc2VsZi5fbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwczoKICAgICAgICAgICAgIGlmIGdyb3VwLnJlcXVpcmVkOgpAQCAtMjMxNCwxNiArMjMyMiw2IEBACiAgICAgICAgICMgZGV0ZXJtaW5lIGhlbHAgZnJvbSBmb3JtYXQgYWJvdmUKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXRfaGVscCgpCiAKLSAgICBkZWYgZm9ybWF0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgJ1RoZSBmb3JtYXRfdmVyc2lvbiBtZXRob2QgaXMgZGVwcmVjYXRlZCAtLSB0aGUgInZlcnNpb24iICcKLSAgICAgICAgICAgICdhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBubyBsb25nZXIgc3VwcG9ydGVkLicsCi0gICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGZvcm1hdHRlciA9IHNlbGYuX2dldF9mb3JtYXR0ZXIoKQotICAgICAgICBmb3JtYXR0ZXIuYWRkX3RleHQoc2VsZi52ZXJzaW9uKQotICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdF9oZWxwKCkKLQogICAgIGRlZiBfZ2V0X2Zvcm1hdHRlcihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZm9ybWF0dGVyX2NsYXNzKHByb2c9c2VsZi5wcm9nKQogCkBAIC0yMzQwLDE0ICsyMzM4LDYgQEAKICAgICAgICAgICAgIGZpbGUgPSBfc3lzLnN0ZG91dAogICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlKHNlbGYuZm9ybWF0X2hlbHAoKSwgZmlsZSkKIAotICAgIGRlZiBwcmludF92ZXJzaW9uKHNlbGYsIGZpbGU9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgJ1RoZSBwcmludF92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkIC0tIHRoZSAidmVyc2lvbiIgJwotICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuJywKLSAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5fcHJpbnRfbWVzc2FnZShzZWxmLmZvcm1hdF92ZXJzaW9uKCksIGZpbGUpCi0KICAgICBkZWYgX3ByaW50X21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZmlsZT1Ob25lKToKICAgICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IGZiNWFkYWMuLjEzZjU5ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMjUsNyArMjUsNiBAQAogICAgIDpsaWNlbnNlOiBQeXRob24gTGljZW5zZS4KICIiIgogZnJvbSBfYXN0IGltcG9ydCAqCi1mcm9tIF9hc3QgaW1wb3J0IF9fdmVyc2lvbl9fCiAKIAogZGVmIHBhcnNlKHNvdXJjZSwgZmlsZW5hbWU9Jzx1bmtub3duPicsIG1vZGU9J2V4ZWMnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCA2NTU4NTEyLi40ZTI2YmI1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC00OSwxOCArNDksNiBAQAogaW1wb3J0IGFzeW5jb3JlCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogCi1kZWYgYnVmZmVyKG9iaiwgc3RhcnQ9Tm9uZSwgc3RvcD1Ob25lKToKLSAgICAjIGlmIG1lbW9yeXZpZXcgb2JqZWN0cyBnYWluIHNsaWNpbmcgc2VtYW50aWNzLAotICAgICMgdGhpcyBmdW5jdGlvbiB3aWxsIGNoYW5nZSBmb3IgdGhlIGJldHRlcgotICAgICMgbWVtb3J5dmlldyB1c2VkIGZvciB0aGUgVHlwZUVycm9yCi0gICAgbWVtb3J5dmlldyhvYmopCi0gICAgaWYgc3RhcnQgPT0gTm9uZToKLSAgICAgICAgc3RhcnQgPSAwCi0gICAgaWYgc3RvcCA9PSBOb25lOgotICAgICAgICBzdG9wID0gbGVuKG9iaikKLSAgICB4ID0gb2JqW3N0YXJ0OnN0b3BdCi0gICAgIyMgcHJpbnQoImJ1ZmZlciB0eXBlIGlzOiAlcyIlKHR5cGUoeCksKSkKLSAgICByZXR1cm4geAogCiBjbGFzcyBhc3luY19jaGF0IChhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICAiIiJUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLiAgWW91IG11c3QgZGVyaXZlIGZyb20gdGhpcyBjbGFzcywgYW5kIGFkZApAQCAtNzUsNyArNjMsNyBAQAogICAgICMgc2lnbiBvZiBhbiBhcHBsaWNhdGlvbiBidWcgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHBhc3Mgc2lsZW50bHkKIAogICAgIHVzZV9lbmNvZGluZyAgICAgICAgICAgID0gMAotICAgIGVuY29kaW5nICAgICAgICAgICAgICAgID0gJ2xhdGluMScKKyAgICBlbmNvZGluZyAgICAgICAgICAgICAgICA9ICdsYXRpbi0xJwogCiAgICAgZGVmIF9faW5pdF9fIChzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgIyBmb3Igc3RyaW5nIHRlcm1pbmF0b3IgbWF0Y2hpbmcKQEAgLTI0MCw3ICsyMjgsNyBAQAogICAgICAgICAgICAgIyBoYW5kbGUgY2xhc3NpYyBwcm9kdWNlciBiZWhhdmlvcgogICAgICAgICAgICAgb2JzID0gc2VsZi5hY19vdXRfYnVmZmVyX3NpemUKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnVmZmVyKGZpcnN0LCAwLCBvYnMpCisgICAgICAgICAgICAgICAgZGF0YSA9IGZpcnN0WzpvYnNdCiAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIGRhdGEgPSBmaXJzdC5tb3JlKCkKICAgICAgICAgICAgICAgICBpZiBkYXRhOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IGIwNjA3N2YuLjJjYWM4OGIgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogaW1wb3J0IG9zCiBmcm9tIGVycm5vIGltcG9ydCBFQUxSRUFEWSwgRUlOUFJPR1JFU1MsIEVXT1VMREJMT0NLLCBFQ09OTlJFU0VULCBFSU5WQUwsIFwKLSAgICAgRU5PVENPTk4sIEVTSFVURE9XTiwgRUlOVFIsIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKKyAgICAgRU5PVENPTk4sIEVTSFVURE9XTiwgRUlTQ09OTiwgRUJBREYsIEVDT05OQUJPUlRFRCwgRVBJUEUsIEVBR0FJTiwgXAogICAgICBlcnJvcmNvZGUKIAogX0RJU0NPTk5FQ1RFRCA9IGZyb3plbnNldCgoRUNPTk5SRVNFVCwgRU5PVENPTk4sIEVTSFVURE9XTiwgRUNPTk5BQk9SVEVELCBFUElQRSwKQEAgLTE0MywxMSArMTQzLDggQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChyLCB3LCBlLCB0aW1lb3V0KQotICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IEVJTlRSOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGZvciBmZCBpbiByOgogICAgICAgICAgICAgb2JqID0gbWFwLmdldChmZCkKQEAgLTE4NCwxNSArMTgxLDEwIEBACiAgICAgICAgICAgICBpZiBvYmoud3JpdGFibGUoKSBhbmQgbm90IG9iai5hY2NlcHRpbmc6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgotICAgICAgICAgICAgICAgICMgT25seSBjaGVjayBmb3IgZXhjZXB0aW9ucyBpZiBvYmplY3Qgd2FzIGVpdGhlciByZWFkYWJsZQotICAgICAgICAgICAgICAgICMgb3Igd3JpdGFibGUuCi0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExFUlIgfCBzZWxlY3QuUE9MTEhVUCB8IHNlbGVjdC5QT0xMTlZBTAogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuYXJnc1swXSAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKICAgICAgICAgICAgIHIgPSBbXQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQpAQCAtMjkyLDcgKzI4NCw3IEBACiAgICAgICAgICAgICBkZWwgbWFwW2ZkXQogICAgICAgICBzZWxmLl9maWxlbm8gPSBOb25lCiAKLSAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmLCBmYW1pbHksIHR5cGUpOgorICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYsIGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pOgogICAgICAgICBzZWxmLmZhbWlseV9hbmRfdHlwZSA9IGZhbWlseSwgdHlwZQogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUpCiAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoMCkKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IDg5NWQ4MTMuLjQwNDJmMDAgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtMjksMTQgKzI5LDE2IEBACiAKIGJ5dGVzX3R5cGVzID0gKGJ5dGVzLCBieXRlYXJyYXkpICAjIFR5cGVzIGFjY2VwdGFibGUgYXMgYmluYXJ5IGRhdGEKIAotCi1kZWYgX3RyYW5zbGF0ZShzLCBhbHRjaGFycyk6Ci0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCi0gICAgdHJhbnNsYXRpb24gPSBieXRlYXJyYXkocmFuZ2UoMjU2KSkKLSAgICBmb3IgaywgdiBpbiBhbHRjaGFycy5pdGVtcygpOgotICAgICAgICB0cmFuc2xhdGlvbltvcmQoayldID0gdlswXQotICAgIHJldHVybiBzLnRyYW5zbGF0ZSh0cmFuc2xhdGlvbikKK2RlZiBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKToKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzLmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RyaW5nIGFyZ3VtZW50IHNob3VsZCBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycycpCisgICAgZWxpZiBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKKyAgICAgICAgcmV0dXJuIHMKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBieXRlcyBvciBBU0NJSSBzdHJpbmcsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKIAogCiAKQEAgLTYxLDcgKzYzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFsdGNoYXJzLl9fY2xhc3NfXy5fX25hbWVfXykKICAgICAgICAgYXNzZXJ0IGxlbihhbHRjaGFycykgPT0gMiwgcmVwcihhbHRjaGFycykKLSAgICAgICAgcmV0dXJuIF90cmFuc2xhdGUoZW5jb2RlZCwgeycrJzogYWx0Y2hhcnNbMDoxXSwgJy8nOiBhbHRjaGFyc1sxOjJdfSkKKyAgICAgICAgcmV0dXJuIGVuY29kZWQudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhiJysvJywgYWx0Y2hhcnMpKQogICAgIHJldHVybiBlbmNvZGVkCiAKIApAQCAtNzksMTQgKzgxLDExIEBACiAgICAgZGlzY2FyZGVkIHByaW9yIHRvIHRoZSBwYWRkaW5nIGNoZWNrLiAgSWYgdmFsaWRhdGUgaXMgVHJ1ZSwKICAgICBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHJlc3VsdCBpbiBhIGJpbmFzY2lpLkVycm9yLgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhbHRjaGFycywgYnl0ZXNfdHlwZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWx0Y2hhcnMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBhbHRjaGFycyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKGFsdGNoYXJzKQogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQotICAgICAgICBzID0gX3RyYW5zbGF0ZShzLCB7Y2hyKGFsdGNoYXJzWzBdKTogYicrJywgY2hyKGFsdGNoYXJzWzFdKTogYicvJ30pCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYWx0Y2hhcnMsIGInKy8nKSkKICAgICBpZiB2YWxpZGF0ZSBhbmQgbm90IHJlLm1hdGNoKGInXltBLVphLXowLTkrL10qPXswLDJ9JCcsIHMpOgogICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignTm9uLWJhc2U2NCBkaWdpdCBmb3VuZCcpCiAgICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQocykKQEAgLTEwOSw2ICsxMDgsMTAgQEAKICAgICAiIiIKICAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCiAKKworX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uID0gYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBiJy1fJykKK191cmxzYWZlX2RlY29kZV90cmFuc2xhdGlvbiA9IGJ5dGVzLm1ha2V0cmFucyhiJy1fJywgYicrLycpCisKIGRlZiB1cmxzYWZlX2I2NGVuY29kZShzKToKICAgICAiIiJFbmNvZGUgYSBieXRlIHN0cmluZyB1c2luZyBhIHVybC1zYWZlIEJhc2U2NCBhbHBoYWJldC4KIApAQCAtMTE2LDcgKzExOSw3IEBACiAgICAgcmV0dXJuZWQuICBUaGUgYWxwaGFiZXQgdXNlcyAnLScgaW5zdGVhZCBvZiAnKycgYW5kICdfJyBpbnN0ZWFkIG9mCiAgICAgJy8nLgogICAgICIiIgotICAgIHJldHVybiBiNjRlbmNvZGUocywgYictXycpCisgICAgcmV0dXJuIGI2NGVuY29kZShzKS50cmFuc2xhdGUoX3VybHNhZmVfZW5jb2RlX3RyYW5zbGF0aW9uKQogCiBkZWYgdXJsc2FmZV9iNjRkZWNvZGUocyk6CiAgICAgIiIiRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZW5jb2RlZCB3aXRoIHRoZSBzdGFuZGFyZCBCYXNlNjQgYWxwaGFiZXQuCkBAIC0xMjgsNyArMTMxLDkgQEAKIAogICAgIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YgJy8nLgogICAgICIiIgotICAgIHJldHVybiBiNjRkZWNvZGUocywgYictXycpCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCisgICAgcyA9IHMudHJhbnNsYXRlKF91cmxzYWZlX2RlY29kZV90cmFuc2xhdGlvbikKKyAgICByZXR1cm4gYjY0ZGVjb2RlKHMpCiAKIAogCkBAIC0yMTEsOCArMjE2LDcgQEAKICAgICB0aGUgaW5wdXQgaXMgaW5jb3JyZWN0bHkgcGFkZGVkIG9yIGlmIHRoZXJlIGFyZSBub24tYWxwaGFiZXQKICAgICBjaGFyYWN0ZXJzIHByZXNlbnQgaW4gdGhlIGlucHV0LgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIHF1YW50YSwgbGVmdG92ZXIgPSBkaXZtb2QobGVuKHMpLCA4KQogICAgIGlmIGxlZnRvdmVyOgogICAgICAgICByYWlzZSBiaW5hc2NpaS5FcnJvcignSW5jb3JyZWN0IHBhZGRpbmcnKQpAQCAtMjIwLDEwICsyMjQsOSBAQAogICAgICMgRmFsc2UsIG9yIHRoZSBjaGFyYWN0ZXIgdG8gbWFwIHRoZSBkaWdpdCAxIChvbmUpIHRvLiAgSXQgc2hvdWxkIGJlCiAgICAgIyBlaXRoZXIgTCAoZWwpIG9yIEkgKGV5ZSkuCiAgICAgaWYgbWFwMDEgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1hcDAxLCBieXRlc190eXBlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgbWFwMDEuX19jbGFzc19fLl9fbmFtZV9fKQorICAgICAgICBtYXAwMSA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKG1hcDAxKQogICAgICAgICBhc3NlcnQgbGVuKG1hcDAxKSA9PSAxLCByZXByKG1hcDAxKQotICAgICAgICBzID0gX3RyYW5zbGF0ZShzLCB7YicwJzogYidPJywgYicxJzogbWFwMDF9KQorICAgICAgICBzID0gcy50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInMDEnLCBiJ08nICsgbWFwMDEpKQogICAgIGlmIGNhc2Vmb2xkOgogICAgICAgICBzID0gcy51cHBlcigpCiAgICAgIyBTdHJpcCBvZmYgcGFkIGNoYXJhY3RlcnMgZnJvbSB0aGUgcmlnaHQuICBXZSBuZWVkIHRvIGNvdW50IHRoZSBwYWQKQEAgLTI5Miw4ICsyOTUsNyBAQAogICAgIHMgd2VyZSBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzCiAgICAgcHJlc2VudCBpbiB0aGUgc3RyaW5nLgogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQorICAgIHMgPSBfYnl0ZXNfZnJvbV9kZWNvZGVfZGF0YShzKQogICAgIGlmIGNhc2Vmb2xkOgogICAgICAgICBzID0gcy51cHBlcigpCiAgICAgaWYgcmUuc2VhcmNoKGInW14wLTlBLUZdJywgcyk6CmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA5OTlhNjc1Li43YmY5Mjc4IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzLDcgKzIzLDYgQEAKICMKIGltcG9ydCBpbwogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYmluYXNjaWkKIApkaWZmIC0tZ2l0IGEvTGliL2J6Mi5weSBiL0xpYi9iejIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5MThhOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9iejIucHkKQEAgLTAsMCArMSw1MDQgQEAKKyIiIkludGVyZmFjZSB0byB0aGUgbGliYnppcDIgY29tcHJlc3Npb24gbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmaWxlIGludGVyZmFjZSwgY2xhc3NlcyBmb3IgaW5jcmVtZW50YWwKKyhkZSljb21wcmVzc2lvbiwgYW5kIGZ1bmN0aW9ucyBmb3Igb25lLXNob3QgKGRlKWNvbXByZXNzaW9uLgorIiIiCisKK19fYWxsX18gPSBbIkJaMkZpbGUiLCAiQloyQ29tcHJlc3NvciIsICJCWjJEZWNvbXByZXNzb3IiLAorICAgICAgICAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIl0KKworX19hdXRob3JfXyA9ICJOYWRlZW0gVmF3ZGEgPG5hZGVlbS52YXdkYUBnbWFpbC5jb20+IgorCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBpbworaW1wb3J0IHdhcm5pbmdzCisKK3RyeToKKyAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgUkxvY2sKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGR1bW15X3RocmVhZGluZyBpbXBvcnQgUkxvY2sKKworZnJvbSBfYnoyIGltcG9ydCBCWjJDb21wcmVzc29yLCBCWjJEZWNvbXByZXNzb3IKKworCitfTU9ERV9DTE9TRUQgICA9IDAKK19NT0RFX1JFQUQgICAgID0gMQorX01PREVfUkVBRF9FT0YgPSAyCitfTU9ERV9XUklURSAgICA9IDMKKworX0JVRkZFUl9TSVpFID0gODE5MgorCisKK2NsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorCisgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgYnppcDIgKGRlKWNvbXByZXNzaW9uLgorCisgICAgQSBCWjJGaWxlIGNhbiBhY3QgYXMgYSB3cmFwcGVyIGZvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgb3IgcmVmZXIKKyAgICBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KKworICAgIE5vdGUgdGhhdCBCWjJGaWxlIHByb3ZpZGVzIGEgKmJpbmFyeSogZmlsZSBpbnRlcmZhY2UgLSBkYXRhIHJlYWQgaXMKKyAgICByZXR1cm5lZCBhcyBieXRlcywgYW5kIGRhdGEgdG8gYmUgd3JpdHRlbiBzaG91bGQgYmUgZ2l2ZW4gYXMgYnl0ZXMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KToKKyAgICAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZS4KKworICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciBvciBieXRlcyBvYmplY3QsIGlzIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvCisgICAgICAgIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvCisgICAgICAgIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKworICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsIG9yICdhJyBmb3IKKyAgICAgICAgYXBwZW5kaW5nLiBUaGVzZSBjYW4gZXF1aXZhbGVudGx5IGJlIGdpdmVuIGFzICdyYicsICd3YicsIGFuZCAnYWInLgorCisgICAgICAgIGJ1ZmZlcmluZyBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgICAgICAgSWYgbW9kZSBpcyAndycgb3IgJ2EnLCBjb21wcmVzc2xldmVsIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDEKKyAgICAgICAgYW5kIDkgc3BlY2lmeWluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb246IDEgcHJvZHVjZXMgdGhlIGxlYXN0CisgICAgICAgIGNvbXByZXNzaW9uLCBhbmQgOSAoZGVmYXVsdCkgcHJvZHVjZXMgdGhlIG1vc3QgY29tcHJlc3Npb24uCisKKyAgICAgICAgSWYgbW9kZSBpcyAncicsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCisgICAgICAgICIiIgorICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCisgICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgc2VsZi5fbG9jayA9IFJMb2NrKCkKKyAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCisKKyAgICAgICAgaWYgYnVmZmVyaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVXNlIG9mICdidWZmZXJpbmcnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgaWYgbm90ICgxIDw9IGNvbXByZXNzbGV2ZWwgPD0gOSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5IikKKworICAgICAgICBpZiBtb2RlIGluICgiIiwgInIiLCAicmIiKToKKyAgICAgICAgICAgIG1vZGUgPSAicmIiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECisgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBCWjJEZWNvbXByZXNzb3IoKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorICAgICAgICBlbGlmIG1vZGUgaW4gKCJ3IiwgIndiIik6CisgICAgICAgICAgICBtb2RlID0gIndiIgorICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfV1JJVEUKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgICAgIGVsaWYgbW9kZSBpbiAoImEiLCAiYWIiKToKKyAgICAgICAgICAgIG1vZGUgPSAiYWIiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZwID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CisgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIGZpbGUuCisKKyAgICAgICAgTWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiBPbmNlIHRoZSBmaWxlIGlzCisgICAgICAgIGNsb3NlZCwgYW55IG90aGVyIG9wZXJhdGlvbiBvbiBpdCB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAud3JpdGUoc2VsZi5fY29tcHJlc3Nvci5mbHVzaCgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlZnA6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsb3NlZChzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGlzIGZpbGUgaXMgY2xvc2VkLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgdW5kZXJseWluZyBmaWxlLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZwLmZpbGVubygpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHN1cHBvcnRzIHNlZWtpbmcuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2ZwLnNlZWthYmxlKCkKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRikKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3Igd3JpdGluZy4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFCisKKyAgICAjIE1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4KKworICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9XUklURToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCisgICAgICAgIGlmIG5vdCBzZWxmLl9mcC5zZWVrYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmciKQorCisgICAgIyBGaWxsIHRoZSByZWFkYWhlYWQgYnVmZmVyIGlmIGl0IGlzIGVtcHR5LiBSZXR1cm5zIEZhbHNlIG9uIEVPRi4KKyAgICBkZWYgX2ZpbGxfYnVmZmVyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KKyAgICAgICAgd2hpbGUgc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgIHJhd2Jsb2NrID0gKHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAucmVhZChfQlVGRkVSX1NJWkUpKQorCisgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKworICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKKworICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCisgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgIyBSZWFkIGRhdGEgdW50aWwgRU9GLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2FsbChzZWxmLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgorICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIGlmIHJldHVybl9kYXRhOgorICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoc2VsZi5fYnVmZmVyKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgIyBJZiB3ZSBoYXZlIGVub3VnaCBkYXRhIGJ1ZmZlcmVkLCByZXR1cm4gaW1tZWRpYXRlbHkuCisgICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlcl9vZmZzZXQgKyBuCisgICAgICAgIGlmIGVuZCA8PSBsZW4oc2VsZi5fYnVmZmVyKToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBkYXRhIGlmIHJldHVybl9kYXRhIGVsc2UgTm9uZQorCisgICAgICAgICMgVGhlIGxvb3AgYXNzdW1lcyB0aGF0IF9idWZmZXJfb2Zmc2V0IGlzIDAuIEVuc3VyZSB0aGF0IHRoaXMgaXMgdHJ1ZS4KKyAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIHdoaWxlIG4gPiAwIGFuZCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgbiA8IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbOm5dCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IG4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgbiAtPSBsZW4oZGF0YSkKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgZGVmIHBlZWsoc2VsZiwgbj0wKToKKyAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgQWx3YXlzIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgb2YgZGF0YSwgdW5sZXNzIGF0IEVPRi4KKyAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCB1cCB0byBzaXplIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIElmIHNpemUgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBiJycgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fcmVhZCgpCisgICAgICAgICAgICBpZiBzaXplID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9hbGwoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9ibG9jayhzaXplKQorCisgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKKyAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorCisgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCisgICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgIGlmIChzaXplID09IDAgb3IKKyAgICAgICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgorICAgICAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgorICAgICAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgorICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgIGlmIHNpemUgPiAwOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGIuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRikuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGludG8oc2VsZiwgYikKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCBhIGxpbmUgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgVGhlIHRlcm1pbmF0aW5nIG5ld2xpbmUgKGlmIHByZXNlbnQpIGlzIHJldGFpbmVkLiBJZiBzaXplIGlzCisgICAgICAgIG5vbi1uZWdhdGl2ZSwgbm8gbW9yZSB0aGFuIHNpemUgYnl0ZXMgd2lsbCBiZSByZWFkIChpbiB3aGljaAorICAgICAgICBjYXNlIHRoZSBsaW5lIG1heSBiZSBpbmNvbXBsZXRlKS4gUmV0dXJucyBiJycgaWYgYWxyZWFkeSBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaGFzYXR0cihzaXplLCAiX19pbmRleF9fIik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQorICAgICAgICBzaXplID0gc2l6ZS5fX2luZGV4X18oKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9uIGNhc2UgLSB0aGUgd2hvbGUgbGluZSBpcyBpbiB0aGUgYnVmZmVyLgorICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyLmZpbmQoYiJcbiIsIHNlbGYuX2J1ZmZlcl9vZmZzZXQpICsgMQorICAgICAgICAgICAgICAgIGlmIGVuZCA+IDA6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6IGVuZF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgc2l6ZSkKKworICAgIGRlZiByZWFkbGluZXMoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgYSBsaXN0IG9mIGxpbmVzIG9mIHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSBmaWxlLgorCisgICAgICAgIHNpemUgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8KKyAgICAgICAgZnVydGhlciBsaW5lcyB3aWxsIGJlIHJlYWQgb25jZSB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgbGluZXMgcmVhZAorICAgICAgICBzbyBmYXIgZXF1YWxzIG9yIGV4Y2VlZHMgc2l6ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNpemUsICJfX2luZGV4X18iKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiSW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCIpCisgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZXMoc2VsZiwgc2l6ZSkKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4sIHdoaWNoIGlzCisgICAgICAgIGFsd2F5cyBsZW4oZGF0YSkuIE5vdGUgdGhhdCBkdWUgdG8gYnVmZmVyaW5nLCB0aGUgZmlsZSBvbiBkaXNrCisgICAgICAgIG1heSBub3QgcmVmbGVjdCB0aGUgZGF0YSB3cml0dGVuIHVudGlsIGNsb3NlKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3dyaXRlKCkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBzZWxmLl9jb21wcmVzc29yLmNvbXByZXNzKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQorCisgICAgZGVmIHdyaXRlbGluZXMoc2VsZiwgc2VxKToKKyAgICAgICAgIiIiV3JpdGUgYSBzZXF1ZW5jZSBvZiBieXRlIHN0cmluZ3MgdG8gdGhlIGZpbGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuLgorICAgICAgICBzZXEgY2FuIGJlIGFueSBpdGVyYWJsZSB5aWVsZGluZyBieXRlIHN0cmluZ3MuCisKKyAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQorICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAorCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlLiBWYWx1ZXMgZm9yIHdoZW5jZSBhcmU6CisKKyAgICAgICAgICAgIDA6IHN0YXJ0IG9mIHN0cmVhbSAoZGVmYXVsdCk7IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorICAgICAgICAgICAgMTogY3VycmVudCBzdHJlYW0gcG9zaXRpb24KKyAgICAgICAgICAgIDI6IGVuZCBvZiBzdHJlYW07IG9mZnNldCBtdXN0IG5vdCBiZSBwb3NpdGl2ZQorCisgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzbyBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKKworICAgICAgICAgICAgIyBSZWNhbGN1bGF0ZSBvZmZzZXQgYXMgYW4gYWJzb2x1dGUgZmlsZSBwb3NpdGlvbi4KKyAgICAgICAgICAgIGlmIHdoZW5jZSA9PSAwOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsaWYgd2hlbmNlID09IDE6CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fcG9zICsgb2Zmc2V0CisgICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgorICAgICAgICAgICAgICAgICMgU2Vla2luZyByZWxhdGl2ZSB0byBFT0YgLSB3ZSBuZWVkIHRvIGtub3cgdGhlIGZpbGUncyBzaXplLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NpemUgPCAwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9zaXplICsgb2Zmc2V0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQorCisgICAgICAgICAgICAjIE1ha2UgaXQgc28gdGhhdCBvZmZzZXQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIGZvcndhcmQuCisgICAgICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLl9wb3M6CisgICAgICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb2Zmc2V0IC09IHNlbGYuX3BvcworCisgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAgICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKKworICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKworCitkZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTksCisgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKKyAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCisKKyAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwgb3IKKyAgICBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJhIiBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwKKyAgICBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgbW9kZSBpcyAicmIiLCBhbmQgdGhlCisgICAgZGVmYXVsdCBjb21wcmVzc2xldmVsIGlzIDkuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgQloyRmlsZSBjb25zdHJ1Y3RvcjoKKyAgICBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycworICAgIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgQloyRmlsZSBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgICBpby5UZXh0SU9XcmFwcGVyIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IgaGFuZGxpbmcKKyAgICBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAgIiIiCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIGlmICJiIiBpbiBtb2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQorICAgIGVsc2U6CisgICAgICAgIGlmIGVuY29kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2VuY29kaW5nJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgZXJyb3JzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ2Vycm9ycycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisKKyAgICBiel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCisgICAgYmluYXJ5X2ZpbGUgPSBCWjJGaWxlKGZpbGVuYW1lLCBiel9tb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCisKKworZGVmIGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSk6CisgICAgIiIiQ29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgY29tcHJlc3NsZXZlbCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LgorCisgICAgRm9yIGluY3JlbWVudGFsIGNvbXByZXNzaW9uLCB1c2UgYSBCWjJDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGNvbXAgPSBCWjJDb21wcmVzc29yKGNvbXByZXNzbGV2ZWwpCisgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKKworCitkZWYgZGVjb21wcmVzcyhkYXRhKToKKyAgICAiIiJEZWNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSBCWjJEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgaWYgbGVuKGRhdGEpID09IDA6CisgICAgICAgIHJldHVybiBiIiIKKworICAgIHJlc3VsdHMgPSBbXQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGRlY29tcCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKGRlY29tcC5kZWNvbXByZXNzKGRhdGEpKQorICAgICAgICBpZiBub3QgZGVjb21wLmVvZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKyAgICAgICAgaWYgbm90IGRlY29tcC51bnVzZWRfZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihyZXN1bHRzKQorICAgICAgICAjIFRoZXJlIGlzIHVudXNlZCBkYXRhIGxlZnQgb3Zlci4gUHJvY2VlZCB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgZGF0YSA9IGRlY29tcC51bnVzZWRfZGF0YQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggOTBhMzM0NS4uZTk2NGYwYyAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC03Niw3ICs3Niw3IEBACiAgICAgc2VuZCBhbiBlcnJvciBtZXNzYWdlKS4KIAogICAgICIiIgotICAgIGdsb2JhbCBsb2dmcCwgbG9nCisgICAgZ2xvYmFsIGxvZywgbG9nZmlsZSwgbG9nZnAKICAgICBpZiBsb2dmaWxlIGFuZCBub3QgbG9nZnA6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvZ2ZwID0gb3Blbihsb2dmaWxlLCAiYSIpCkBAIC05Niw2ICs5NiwxNSBAQAogICAgICIiIkR1bW15IGZ1bmN0aW9uLCBhc3NpZ25lZCB0byBsb2cgd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkLiIiIgogICAgIHBhc3MKIAorZGVmIGNsb3NlbG9nKCk6CisgICAgIiIiQ2xvc2UgdGhlIGxvZyBmaWxlLiIiIgorICAgIGdsb2JhbCBsb2csIGxvZ2ZpbGUsIGxvZ2ZwCisgICAgbG9nZmlsZSA9ICcnCisgICAgaWYgbG9nZnA6CisgICAgICAgIGxvZ2ZwLmNsb3NlKCkKKyAgICAgICAgbG9nZnAgPSBOb25lCisgICAgbG9nID0gaW5pdGxvZworCiBsb2cgPSBpbml0bG9nICAgICAgICAgICAjIFRoZSBjdXJyZW50IGxvZ2dpbmcgZnVuY3Rpb24KIAogCkBAIC0xMDAzLDcgKzEwMTIsNyBAQAogZGVmIGVzY2FwZShzLCBxdW90ZT1Ob25lKToKICAgICAiIiJEZXByZWNhdGVkIEFQSS4iIiIKICAgICB3YXJuKCJjZ2kuZXNjYXBlIGlzIGRlcHJlY2F0ZWQsIHVzZSBodG1sLmVzY2FwZSBpbnN0ZWFkIiwKLSAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHMgPSBzLnJlcGxhY2UoIiYiLCAiJmFtcDsiKSAjIE11c3QgYmUgZG9uZSBmaXJzdCEKICAgICBzID0gcy5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgIHMgPSBzLnJlcGxhY2UoIj4iLCAiJmd0OyIpCmRpZmYgLS1naXQgYS9MaWIvY2dpdGIucHkgYi9MaWIvY2dpdGIucHkKaW5kZXggN2I1MmM4ZS4uZTNjZTJjYiAxMDA2NDQKLS0tIGEvTGliL2NnaXRiLnB5CisrKyBiL0xpYi9jZ2l0Yi5weQpAQCAtMzEsNyArMzEsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHR5cGVzCiAKIGRlZiByZXNldCgpOgogICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IHJlc2V0cyB0aGUgQ0dJIGFuZCBicm93c2VyIHRvIGEga25vd24gc3RhdGUuIiIiCmRpZmYgLS1naXQgYS9MaWIvY29kZS5weSBiL0xpYi9jb2RlLnB5CmluZGV4IDYwNWFlZGUuLjkwMjBhYWIgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlLnB5CisrKyBiL0xpYi9jb2RlLnB5CkBAIC0xMDUsOSArMTA1LDEwIEBACiAgICAgICAgIFRoZSBvdXRwdXQgaXMgd3JpdHRlbiBieSBzZWxmLndyaXRlKCksIGJlbG93LgogCiAgICAgICAgICIiIgotICAgICAgICB0eXBlLCB2YWx1ZSwgc3lzLmxhc3RfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgdHlwZSwgdmFsdWUsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cGUKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSB0YgogICAgICAgICBpZiBmaWxlbmFtZSBhbmQgdHlwZSBpcyBTeW50YXhFcnJvcjoKICAgICAgICAgICAgICMgV29yayBoYXJkIHRvIHN0dWZmIHRoZSBjb3JyZWN0IGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgIHRyeToKQEAgLTExOSw4ICsxMjAsMTMgQEAKICAgICAgICAgICAgICAgICAjIFN0dWZmIGluIHRoZSByaWdodCBmaWxlbmFtZQogICAgICAgICAgICAgICAgIHZhbHVlID0gU3ludGF4RXJyb3IobXNnLCAoZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBsaW5lKSkKICAgICAgICAgICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVlCi0gICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXBlLCB2YWx1ZSkKLSAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgaWYgc3lzLmV4Y2VwdGhvb2sgaXMgc3lzLl9fZXhjZXB0aG9va19fOgorICAgICAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSWYgc29tZW9uZSBoYXMgc2V0IHN5cy5leGNlcHRob29rLCB3ZSBsZXQgdGhhdCB0YWtlIHByZWNlZGVuY2UKKyAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICBzeXMuZXhjZXB0aG9vayh0eXBlLCB2YWx1ZSwgdGIpCiAKICAgICBkZWYgc2hvd3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgIiIiRGlzcGxheSB0aGUgZXhjZXB0aW9uIHRoYXQganVzdCBvY2N1cnJlZC4KQEAgLTE0Myw3ICsxNDksMTIgQEAKICAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHRibGlzdCA9IHRiID0gTm9uZQotICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgIyBvdmVyIHNlbGYud3JpdGUKKyAgICAgICAgICAgIHN5cy5leGNlcHRob29rKHR5cGUsIHZhbHVlLCB0YikKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBzdHJpbmcuCmRpZmYgLS1naXQgYS9MaWIvY29kZWNzLnB5IGIvTGliL2NvZGVjcy5weQppbmRleCBiMTUwZDY0Li45OTAxZDVjIDEwMDY0NAotLS0gYS9MaWIvY29kZWNzLnB5CisrKyBiL0xpYi9jb2RlY3MucHkKQEAgLTQ4NCw3ICs0ODQsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpcnN0bGluZToKICAgICAgICAgICAgICAgICAgICAgbmV3Y2hhcnMsIGRlY29kZWRieXRlcyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVjb2RlKGRhdGFbOmV4Yy5zdGFydF0sIHNlbGYuZXJyb3JzKQotICAgICAgICAgICAgICAgICAgICBsaW5lcyA9IG5ld2NoYXJzLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBuZXdjaGFycy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lcyk8PTE6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC01MjYsNyArNTI2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLmxpbmVidWZmZXJbMF0KICAgICAgICAgICAgICAgICBzZWxmLmxpbmVidWZmZXIgPSBOb25lCiAgICAgICAgICAgICBpZiBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgcmV0dXJuIGxpbmUKIAogICAgICAgICByZWFkc2l6ZSA9IHNpemUgb3IgNzIKQEAgLTU0Myw3ICs1NDMsNyBAQAogICAgICAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYucmVhZChzaXplPTEsIGNoYXJzPTEpCiAKICAgICAgICAgICAgIGxpbmUgKz0gZGF0YQotICAgICAgICAgICAgbGluZXMgPSBsaW5lLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIGxpbmVzID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICBpZiBsaW5lczoKICAgICAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gMToKICAgICAgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gb25lIGxpbmUgcmVzdWx0OyB0aGUgZmlyc3QgbGluZSBpcyBhIGZ1bGwgbGluZQpAQCAtNTU5LDEwICs1NTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSBvbmUgcmVtYWluaW5nIGxpbmUsIHB1dCBpdCBiYWNrIGludG8gY2hhcmJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gbGluZXNbMF0gKyBzZWxmLmNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgbGluZTB3aXRoZW5kID0gbGluZXNbMF0KLSAgICAgICAgICAgICAgICBsaW5lMHdpdGhvdXRlbmQgPSBsaW5lc1swXS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgIGxpbmUwd2l0aG91dGVuZCA9IGxpbmVzWzBdLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgaWYgbGluZTB3aXRoZW5kICE9IGxpbmUwd2l0aG91dGVuZDogIyBXZSByZWFsbHkgaGF2ZSBhIGxpbmUgZW5kCiAgICAgICAgICAgICAgICAgICAgICMgUHV0IHRoZSByZXN0IGJhY2sgdG9nZXRoZXIgYW5kIGtlZXAgaXQgdW50aWwgdGhlIG5leHQgY2FsbAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSBzZWxmLl9lbXB0eV9jaGFyYnVmZmVyLmpvaW4obGluZXNbMTpdKSArIFwKQEAgLTU3NSw3ICs1NzUsNyBAQAogICAgICAgICAgICAgIyB3ZSBkaWRuJ3QgZ2V0IGFueXRoaW5nIG9yIHRoaXMgd2FzIG91ciBvbmx5IHRyeQogICAgICAgICAgICAgaWYgbm90IGRhdGEgb3Igc2l6ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3Qga2VlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpWzBdCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIHJlYWRzaXplIDwgODAwMDoKICAgICAgICAgICAgICAgICByZWFkc2l6ZSAqPSAyCkBAIC04MDMsNyArODAzLDcgQEAKIAogICAgICAgICBkYXRhID0gc2VsZi5yZWFkZXIucmVhZCgpCiAgICAgICAgIGRhdGEsIGJ5dGVzZW5jb2RlZCA9IHNlbGYuZW5jb2RlKGRhdGEsIHNlbGYuZXJyb3JzKQotICAgICAgICByZXR1cm4gZGF0YS5zcGxpdGxpbmVzKDEpCisgICAgICAgIHJldHVybiBkYXRhLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKIAogICAgIGRlZiBfX25leHRfXyhzZWxmKToKIApAQCAtMTA0MiwxMCArMTA0Miw3IEBACiAgICAgICAgIG1hcHBlZCB0byB0aGVtc2VsdmVzLgogCiAgICAgIiIiCi0gICAgcmVzID0ge30KLSAgICBmb3IgaSBpbiBybmc6Ci0gICAgICAgIHJlc1tpXT1pCi0gICAgcmV0dXJuIHJlcworICAgIHJldHVybiB7aTppIGZvciBpIGluIHJuZ30KIAogZGVmIG1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCk6CiAKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvY29sbGVjdGlvbnMucHkKcmVuYW1lIHRvIExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYjIwMjQzLi5lNWY5NTk5IDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0xLDEzICsxLDE0IEBACiBfX2FsbF9fID0gWydkZXF1ZScsICdkZWZhdWx0ZGljdCcsICduYW1lZHR1cGxlJywgJ1VzZXJEaWN0JywgJ1VzZXJMaXN0JywKLSAgICAgICAgICAgICdVc2VyU3RyaW5nJywgJ0NvdW50ZXInLCAnT3JkZXJlZERpY3QnXQotIyBGb3IgYm9vdHN0cmFwcGluZyByZWFzb25zLCB0aGUgY29sbGVjdGlvbiBBQkNzIGFyZSBkZWZpbmVkIGluIF9hYmNvbGwucHkuCi0jIFRoZXkgc2hvdWxkIGhvd2V2ZXIgYmUgY29uc2lkZXJlZCBhbiBpbnRlZ3JhbCBwYXJ0IG9mIGNvbGxlY3Rpb25zLnB5LgotZnJvbSBfYWJjb2xsIGltcG9ydCAqCi1pbXBvcnQgX2FiY29sbAotX19hbGxfXyArPSBfYWJjb2xsLl9fYWxsX18KKyAgICAgICAgICAgICdVc2VyU3RyaW5nJywgJ0NvdW50ZXInLCAnT3JkZXJlZERpY3QnLCAnQ2hhaW5NYXAnXQorCisjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgY29udGludWUgdG8gbWFrZSB0aGUgY29sbGVjdGlvbnMgQUJDcworIyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlLgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0ICoKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK19fYWxsX18gKz0gY29sbGVjdGlvbnMuYWJjLl9fYWxsX18KIAogZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAotZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlcgorZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBoZWFwcSBhcyBfaGVhcHEKQEAgLTIyOCw3ICsyMjksNyBAQAogICAgICAgICAnJycKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgT3JkZXJlZERpY3QpOgogICAgICAgICAgICAgcmV0dXJuIGxlbihzZWxmKT09bGVuKG90aGVyKSBhbmQgXAotICAgICAgICAgICAgICAgICAgIGFsbChwPT1xIGZvciBwLCBxIGluIHppcChzZWxmLml0ZW1zKCksIG90aGVyLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICAgIGFsbChtYXAoX2VxLCBzZWxmLml0ZW1zKCksIG90aGVyLml0ZW1zKCkpKQogICAgICAgICByZXR1cm4gZGljdC5fX2VxX18oc2VsZiwgb3RoZXIpCiAKIApAQCAtMzE0LDEwICszMTUsMTAgQEAKIAogICAgICIiIgogCi0gICAgIyBQYXJzZSBhbmQgdmFsaWRhdGUgdGhlIGZpZWxkIG5hbWVzLiAgVmFsaWRhdGlvbiBzZXJ2ZXMgdHdvIHB1cnBvc2VzLAotICAgICMgZ2VuZXJhdGluZyBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyBhbmQgcHJldmVudGluZyB0ZW1wbGF0ZSBpbmplY3Rpb24gYXR0YWNrcy4KKyAgICAjIFZhbGlkYXRlIHRoZSBmaWVsZCBuYW1lcy4gIEF0IHRoZSB1c2VyJ3Mgb3B0aW9uLCBlaXRoZXIgZ2VuZXJhdGUgYW4gZXJyb3IKKyAgICAjIG1lc3NhZ2Ugb3IgYXV0b21hdGljYWxseSByZXBsYWNlIHRoZSBmaWVsZCBuYW1lIHdpdGggYSB2YWxpZCBuYW1lLgogICAgIGlmIGlzaW5zdGFuY2UoZmllbGRfbmFtZXMsIHN0cik6Ci0gICAgICAgIGZpZWxkX25hbWVzID0gZmllbGRfbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKSAjIG5hbWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIGFuZC9vciBjb21tYXMKKyAgICAgICAgZmllbGRfbmFtZXMgPSBmaWVsZF9uYW1lcy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAgICAgZmllbGRfbmFtZXMgPSBsaXN0KG1hcChzdHIsIGZpZWxkX25hbWVzKSkKICAgICBpZiByZW5hbWU6CiAgICAgICAgIHNlZW4gPSBzZXQoKQpAQCAtMzMyLDE1ICszMzMsMTkgQEAKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgogICAgICAgICBpZiBub3QgYWxsKGMuaXNhbG51bSgpIG9yIGM9PSdfJyBmb3IgYyBpbiBuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2FuIG9ubHkgY29udGFpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgdW5kZXJzY29yZXM6ICVyJyAlIG5hbWUpCiAgICAgICAgIGlmIF9pc2tleXdvcmQobmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3QgYmUgYSBrZXl3b3JkOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IGJlIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2V5d29yZDogJXInICUgbmFtZSkKICAgICAgICAgaWYgbmFtZVswXS5pc2RpZ2l0KCk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhIG51bWJlcjogJXInICUgbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EgbnVtYmVyOiAlcicgJSBuYW1lKQogICAgIHNlZW4gPSBzZXQoKQogICAgIGZvciBuYW1lIGluIGZpZWxkX25hbWVzOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBhbmQgbm90IHJlbmFtZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ZpZWxkIG5hbWVzIGNhbm5vdCBzdGFydCB3aXRoIGFuIHVuZGVyc2NvcmU6ICVyJyAlIG5hbWUpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcicgJSBuYW1lKQogICAgICAgICBpZiBuYW1lIGluIHNlZW46CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvdW50ZXJlZCBkdXBsaWNhdGUgZmllbGQgbmFtZTogJXInICUgbmFtZSkKICAgICAgICAgc2Vlbi5hZGQobmFtZSkKQEAgLTM1MSwyMSArMzU2LDIzIEBACiAgICAgICAgIGZpZWxkX25hbWVzID0gdHVwbGUoZmllbGRfbmFtZXMpLAogICAgICAgICBudW1fZmllbGRzID0gbGVuKGZpZWxkX25hbWVzKSwKICAgICAgICAgYXJnX2xpc3QgPSByZXByKHR1cGxlKGZpZWxkX25hbWVzKSkucmVwbGFjZSgiJyIsICIiKVsxOi0xXSwKLSAgICAgICAgcmVwcl9mbXQgPSAnLCAnLmpvaW4oX3JlcHJfdGVtcGxhdGUuZm9ybWF0KG5hbWU9bmFtZSkgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXMpLAorICAgICAgICByZXByX2ZtdCA9ICcsICcuam9pbihfcmVwcl90ZW1wbGF0ZS5mb3JtYXQobmFtZT1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWVsZF9uYW1lcyksCiAgICAgICAgIGZpZWxkX2RlZnMgPSAnXG4nLmpvaW4oX2ZpZWxkX3RlbXBsYXRlLmZvcm1hdChpbmRleD1pbmRleCwgbmFtZT1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUoZmllbGRfbmFtZXMpKQogICAgICkKIAotICAgICMgRXhlY3V0ZSB0aGUgdGVtcGxhdGUgc3RyaW5nIGluIGEgdGVtcG9yYXJ5IG5hbWVzcGFjZSBhbmQKLSAgICAjIHN1cHBvcnQgdHJhY2luZyB1dGlsaXRpZXMgYnkgc2V0dGluZyBhIHZhbHVlIGZvciBmcmFtZS5mX2dsb2JhbHNbJ19fbmFtZV9fJ10KKyAgICAjIEV4ZWN1dGUgdGhlIHRlbXBsYXRlIHN0cmluZyBpbiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgYW5kIHN1cHBvcnQKKyAgICAjIHRyYWNpbmcgdXRpbGl0aWVzIGJ5IHNldHRpbmcgYSB2YWx1ZSBmb3IgZnJhbWUuZl9nbG9iYWxzWydfX25hbWVfXyddCiAgICAgbmFtZXNwYWNlID0gZGljdChfX25hbWVfXz0nbmFtZWR0dXBsZV8lcycgJSB0eXBlbmFtZSkKICAgICB0cnk6CiAgICAgICAgIGV4ZWMoY2xhc3NfZGVmaW5pdGlvbiwgbmFtZXNwYWNlKQogICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlOgogICAgICAgICByYWlzZSBTeW50YXhFcnJvcihlLm1zZyArICc6XG5cbicgKyBjbGFzc19kZWZpbml0aW9uKQogICAgIHJlc3VsdCA9IG5hbWVzcGFjZVt0eXBlbmFtZV0KKyAgICByZXN1bHQuX3NvdXJjZSA9IGNsYXNzX2RlZmluaXRpb24KICAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludChjbGFzc19kZWZpbml0aW9uKQorICAgICAgICBwcmludChyZXN1bHQuX3NvdXJjZSkKIAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9tZW50cyB3aGVyZQpAQCAtNjc0LDEyICs2ODEsODYgQEAKICAgICAgICAgICAgICAgICByZXN1bHRbZWxlbV0gPSBuZXdjb3VudAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgX19wb3NfXyhzZWxmKToKKyAgICAgICAgJ0FkZHMgYW4gZW1wdHkgY291bnRlciwgZWZmZWN0aXZlbHkgc3RyaXBwaW5nIG5lZ2F0aXZlIGFuZCB6ZXJvIGNvdW50cycKKyAgICAgICAgcmV0dXJuIHNlbGYgKyBDb3VudGVyKCkKKworICAgIGRlZiBfX25lZ19fKHNlbGYpOgorICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKKyAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KKworICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKworICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKKyAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCisgICAgICAgIG5vbnBvc2l0aXZlID0gW2VsZW0gZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKSBpZiBub3QgY291bnQgPiAwXQorICAgICAgICBmb3IgZWxlbSBpbiBub25wb3NpdGl2ZToKKyAgICAgICAgICAgIGRlbCBzZWxmW2VsZW1dCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19pYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIGFkZCBmcm9tIGFub3RoZXIgY291bnRlciwga2VlcGluZyBvbmx5IHBvc2l0aXZlIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyArPSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDQsICdjJzogMiwgJ2EnOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW2VsZW1dICs9IGNvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKworICAgIGRlZiBfX2lzdWJfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICcnJ0lucGxhY2Ugc3VidHJhY3QgY291bnRlciwgYnV0IGtlZXAgb25seSByZXN1bHRzIHdpdGggcG9zaXRpdmUgY291bnRzLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYmMnKQorICAgICAgICA+Pj4gYyAtPSBDb3VudGVyKCdiY2NkJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAyLCAnYSc6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGZbZWxlbV0gLT0gY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCisgICAgZGVmIF9faW9yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIHVuaW9uIGlzIHRoZSBtYXhpbXVtIG9mIHZhbHVlIGZyb20gZWl0aGVyIGNvdW50ZXIuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgfD0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAzLCAnYyc6IDIsICdhJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBvdGhlcl9jb3VudCBpbiBvdGhlci5pdGVtcygpOgorICAgICAgICAgICAgY291bnQgPSBzZWxmW2VsZW1dCisgICAgICAgICAgICBpZiBvdGhlcl9jb3VudCA+IGNvdW50OgorICAgICAgICAgICAgICAgIHNlbGZbZWxlbV0gPSBvdGhlcl9jb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKKyAgICBkZWYgX19pYW5kX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIGludGVyc2VjdGlvbiBpcyB0aGUgbWluaW11bSBvZiBjb3JyZXNwb25kaW5nIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmInKQorICAgICAgICA+Pj4gYyAmPSBDb3VudGVyKCdiY2MnKQorICAgICAgICA+Pj4gYworICAgICAgICBDb3VudGVyKHsnYic6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgb3RoZXJfY291bnQgPSBvdGhlcltlbGVtXQorICAgICAgICAgICAgaWYgb3RoZXJfY291bnQgPCBjb3VudDoKKyAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gb3RoZXJfY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIpCisjIyMgIENoYWluTWFwIChoZWxwZXIgZm9yIGNvbmZpZ3BhcnNlciBhbmQgc3RyaW5nLlRlbXBsYXRlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWNsYXNzIF9DaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CitjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CiAgICAgJycnIEEgQ2hhaW5NYXAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIChvciBvdGhlciBtYXBwaW5ncykgdG9nZXRoZXIKICAgICB0byBjcmVhdGUgYSBzaW5nbGUsIHVwZGF0ZWFibGUgdmlldy4KIApAQCAtODkwLDYgKzk3MSw4IEBACiAgICAgZGVmIGluc2VydChzZWxmLCBpLCBpdGVtKTogc2VsZi5kYXRhLmluc2VydChpLCBpdGVtKQogICAgIGRlZiBwb3Aoc2VsZiwgaT0tMSk6IHJldHVybiBzZWxmLmRhdGEucG9wKGkpCiAgICAgZGVmIHJlbW92ZShzZWxmLCBpdGVtKTogc2VsZi5kYXRhLnJlbW92ZShpdGVtKQorICAgIGRlZiBjbGVhcihzZWxmKTogc2VsZi5kYXRhLmNsZWFyKCkKKyAgICBkZWYgY29weShzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYpCiAgICAgZGVmIGNvdW50KHNlbGYsIGl0ZW0pOiByZXR1cm4gc2VsZi5kYXRhLmNvdW50KGl0ZW0pCiAgICAgZGVmIGluZGV4KHNlbGYsIGl0ZW0sICphcmdzKTogcmV0dXJuIHNlbGYuZGF0YS5pbmRleChpdGVtLCAqYXJncykKICAgICBkZWYgcmV2ZXJzZShzZWxmKTogc2VsZi5kYXRhLnJldmVyc2UoKQpAQCAtMTAzNCw3ICsxMTE3LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5zcGxpdChzZXAsIG1heHNwbGl0KQogICAgIGRlZiByc3BsaXQoc2VsZiwgc2VwPU5vbmUsIG1heHNwbGl0PS0xKToKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YS5yc3BsaXQoc2VwLCBtYXhzcGxpdCkKLSAgICBkZWYgc3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcz0wKTogcmV0dXJuIHNlbGYuZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQorICAgIGRlZiBzcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzPUZhbHNlKTogcmV0dXJuIHNlbGYuZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzKQogICAgIGRlZiBzdGFydHN3aXRoKHNlbGYsIHByZWZpeCwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuc3RhcnRzd2l0aChwcmVmaXgsIHN0YXJ0LCBlbmQpCiAgICAgZGVmIHN0cmlwKHNlbGYsIGNoYXJzPU5vbmUpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnN0cmlwKGNoYXJzKSkKQEAgLTEwNDQsNDQgKzExMjcsMyBAQAogICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnRyYW5zbGF0ZSgqYXJncykpCiAgICAgZGVmIHVwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLnVwcGVyKCkpCiAgICAgZGVmIHpmaWxsKHNlbGYsIHdpZHRoKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS56ZmlsbCh3aWR0aCkpCi0KLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIFNpbXBsZSB0ZXN0cwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAjIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAotICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKLSAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotICAgIHAgPSBQb2ludCh4PTEwLCB5PTIwKQotICAgIGFzc2VydCBwID09IGxvYWRzKGR1bXBzKHApKQotCi0gICAgIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLSAgICBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICAgICAgIEBwcm9wZXJ0eQotICAgICAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQotICAgICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKLQotICAgIGZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83Lik6Ci0gICAgICAgIHByaW50IChwKQotCi0gICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICAnUG9pbnQgY2xhc3Mgd2l0aCBvcHRpbWl6ZWQgX21ha2UoKSBhbmQgX3JlcGxhY2UoKSB3aXRob3V0IGVycm9yLWNoZWNraW5nJwotICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgICAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCi0gICAgICAgIGRlZiBfcmVwbGFjZShzZWxmLCBfbWFwPW1hcCwgKiprd2RzKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi0gICAgcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCi0KLSAgICBQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCi0gICAgcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi0gICAgaW1wb3J0IGRvY3Rlc3QKLSAgICBUZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQotICAgIHByaW50KFRlc3RSZXN1bHRzKCpkb2N0ZXN0LnRlc3Rtb2QoKSkpCmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzZTM4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQpAQCAtMCwwICsxLDM4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIFNpbXBsZSB0ZXN0cworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyB2ZXJpZnkgdGhhdCBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gcGlja2xlIGltcG9ydCBsb2FkcywgZHVtcHMKK1BvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCwgeScsIFRydWUpCitwID0gUG9pbnQoeD0xMCwgeT0yMCkKK2Fzc2VydCBwID09IGxvYWRzKGR1bXBzKHApKQorCisjIHRlc3QgYW5kIGRlbW9uc3RyYXRlIGFiaWxpdHkgdG8gb3ZlcnJpZGUgbWV0aG9kcworY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgorICAgIF9fc2xvdHNfXyA9ICgpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGh5cG90KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCisKK2ZvciBwIGluIFBvaW50KDMsIDQpLCBQb2ludCgxNCwgNS83Lik6CisgICAgcHJpbnQgKHApCisKK2NsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKyAgICAnUG9pbnQgY2xhc3Mgd2l0aCBvcHRpbWl6ZWQgX21ha2UoKSBhbmQgX3JlcGxhY2UoKSB3aXRob3V0IGVycm9yLWNoZWNraW5nJworICAgIF9fc2xvdHNfXyA9ICgpCisgICAgX21ha2UgPSBjbGFzc21ldGhvZCh0dXBsZS5fX25ld19fKQorICAgIGRlZiBfcmVwbGFjZShzZWxmLCBfbWFwPW1hcCwgKiprd2RzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ha2UoX21hcChrd2RzLmdldCwgKCd4JywgJ3knKSwgc2VsZikpCisKK3ByaW50KFBvaW50KDExLCAyMikuX3JlcGxhY2UoeD0xMDApKQorCitQb2ludDNEID0gbmFtZWR0dXBsZSgnUG9pbnQzRCcsIFBvaW50Ll9maWVsZHMgKyAoJ3onLCkpCitwcmludChQb2ludDNELl9fZG9jX18pCisKK2ltcG9ydCBkb2N0ZXN0LCBjb2xsZWN0aW9ucworVGVzdFJlc3VsdHMgPSBuYW1lZHR1cGxlKCdUZXN0UmVzdWx0cycsICdmYWlsZWQgYXR0ZW1wdGVkJykKK3ByaW50KFRlc3RSZXN1bHRzKCpkb2N0ZXN0LnRlc3Rtb2QoY29sbGVjdGlvbnMpKSkKZGlmZiAtLWdpdCBhL0xpYi9fYWJjb2xsLnB5IGIvTGliL2NvbGxlY3Rpb25zL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvX2FiY29sbC5weQpyZW5hbWUgdG8gTGliL2NvbGxlY3Rpb25zL2FiYy5weQppbmRleCAyNDE3ZDE4Li5kMTdjZmRjIDEwMDY0NAotLS0gYS9MaWIvX2FiY29sbC5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvYWJjLnB5CkBAIC0zLDkgKzMsNyBAQAogCiAiIiJBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGZvciBjb2xsZWN0aW9ucywgYWNjb3JkaW5nIHRvIFBFUCAzMTE5LgogCi1ET04nVCBVU0UgVEhJUyBNT0RVTEUgRElSRUNUTFkhICBUaGUgY2xhc3NlcyBoZXJlIHNob3VsZCBiZSBpbXBvcnRlZAotdmlhIGNvbGxlY3Rpb25zOyB0aGV5IGFyZSBkZWZpbmVkIGhlcmUgb25seSB0byBhbGxldmlhdGUgY2VydGFpbgotYm9vdHN0cmFwcGluZyBpc3N1ZXMuICBVbml0IHRlc3RzIGFyZSBpbiB0ZXN0X2NvbGxlY3Rpb25zLgorVW5pdCB0ZXN0cyBhcmUgaW4gdGVzdF9jb2xsZWN0aW9ucy4KICIiIgogCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKQEAgLTIwLDkgKzE4LDEzIEBACiAgICAgICAgICAgICJCeXRlU3RyaW5nIiwKICAgICAgICAgICAgXQogCi0KLSMjIyBjb2xsZWN0aW9uIHJlbGF0ZWQgdHlwZXMgd2hpY2ggYXJlIG5vdCBleHBvc2VkIHRocm91Z2ggYnVpbHRpbiAjIyMKLSMjIGl0ZXJhdG9ycyAjIworIyBQcml2YXRlIGxpc3Qgb2YgdHlwZXMgdGhhdCB3ZSB3YW50IHRvIHJlZ2lzdGVyIHdpdGggdGhlIHZhcmlvdXMgQUJDcworIyBzbyB0aGF0IHRoZXkgd2lsbCBwYXNzIHRlc3RzIGxpa2U6CisjICAgICAgIGl0ID0gaXRlcihzb21lYnl0ZWFycmF5KQorIyAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdCwgSXRlcmFibGUpCisjIE5vdGU6ICBpbiBvdGhlciBpbXBsZW1lbnRhdGlvbnMsIHRoZXNlIHR5cGVzIG1hbnkgbm90IGJlIGRpc3RpbmN0CisjIGFuZCB0aGV5IG1ha2UgaGF2ZSB0aGVpciBvd24gaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdHlwZXMgdGhhdAorIyBhcmUgbm90IGluY2x1ZGVkIG9uIHRoaXMgbGlzdC4KIGJ5dGVzX2l0ZXJhdG9yID0gdHlwZShpdGVyKGInJykpCiBieXRlYXJyYXlfaXRlcmF0b3IgPSB0eXBlKGl0ZXIoYnl0ZWFycmF5KCkpKQogI2NhbGxhYmxlX2l0ZXJhdG9yID0gPz8/CkBAIC00MSwxMyArNDMsMTUgQEAKIGRpY3RfdmFsdWVzID0gdHlwZSh7fS52YWx1ZXMoKSkKIGRpY3RfaXRlbXMgPSB0eXBlKHt9Lml0ZW1zKCkpCiAjIyBtaXNjICMjCi1kaWN0X3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQorbWFwcGluZ3Byb3h5ID0gdHlwZSh0eXBlLl9fZGljdF9fKQogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwogCiBjbGFzcyBIYXNoYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gMApAQCAtNjUsNiArNjksOCBAQAogCiBjbGFzcyBJdGVyYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICB3aGlsZSBGYWxzZToKQEAgLTgwLDYgKzg2LDggQEAKIAogY2xhc3MgSXRlcmF0b3IoSXRlcmFibGUpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX25leHRfXyhzZWxmKToKICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgpAQCAtMTExLDYgKzExOSw4IEBACiAKIGNsYXNzIFNpemVkKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIDAKQEAgLTEyNSw2ICsxMzUsOCBAQAogCiBjbGFzcyBDb250YWluZXIobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTM5LDYgKzE1MSw4IEBACiAKIGNsYXNzIENhbGxhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTY2LDYgKzE4MCw4IEBACiAgICAgdGhlbiB0aGUgb3RoZXIgb3BlcmF0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93IHN1aXQuCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTZXQpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCkBAIC0yNzcsNiArMjkzLDggQEAKIAogY2xhc3MgTXV0YWJsZVNldChTZXQpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBhZGQoc2VsZiwgdmFsdWUpOgogICAgICAgICAiIiJBZGQgYW4gZWxlbWVudC4iIiIKQEAgLTM1MCw2ICszNjgsOCBAQAogCiBjbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgcmFpc2UgS2V5RXJyb3IKQEAgLTM4NSw2ICs0MDUsOCBAQAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQogCitNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKKwogCiBjbGFzcyBNYXBwaW5nVmlldyhTaXplZCk6CiAKQEAgLTQ1Myw2ICs0NzUsOCBAQAogCiBjbGFzcyBNdXRhYmxlTWFwcGluZyhNYXBwaW5nKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIEtleUVycm9yCkBAIC01MzIsNiArNTU2LDggQEAKICAgICBfX2dldGl0ZW1fXywgYW5kIF9fbGVuX18uCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgpAQCAtNTc3LDEyICs2MDMsMTYgQEAKICAgICBYWFggU2hvdWxkIGFkZCBhbGwgdGhlaXIgbWV0aG9kcy4KICAgICAiIiIKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKIEJ5dGVTdHJpbmcucmVnaXN0ZXIoYnl0ZXMpCiBCeXRlU3RyaW5nLnJlZ2lzdGVyKGJ5dGVhcnJheSkKIAogCiBjbGFzcyBNdXRhYmxlU2VxdWVuY2UoU2VxdWVuY2UpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgdmFsdWUpOgogICAgICAgICByYWlzZSBJbmRleEVycm9yCkBAIC01OTgsNiArNjI4LDEzIEBACiAgICAgZGVmIGFwcGVuZChzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuaW5zZXJ0KGxlbihzZWxmKSwgdmFsdWUpCiAKKyAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5wb3AoKQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiByZXZlcnNlKHNlbGYpOgogICAgICAgICBuID0gbGVuKHNlbGYpCiAgICAgICAgIGZvciBpIGluIHJhbmdlKG4vLzIpOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKaW5kZXggOWYxMWY2OS4uMWUwOThiZSAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CkBAIC00LDcgKzQsNiBAQAogX19hdXRob3JfXyA9ICdCcmlhbiBRdWlubGFuIChicmlhbkBzd2VldGFwcC5jb20pJwogCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQpAQCAtNDcxLDggKzQ3MCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgTE9HR0VSLmNyaXRpY2FsKCdGdXR1cmUgJXMgaW4gdW5leHBlY3RlZCBzdGF0ZTogJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmLmZ1dHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnV0dXJlLl9zdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRlKQogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRnV0dXJlIGluIHVuZXhwZWN0ZWQgc3RhdGUnKQogCiAgICAgZGVmIHNldF9yZXN1bHQoc2VsZiwgcmVzdWx0KToKQEAgLTUzOCwxNSArNTM3LDE5IEBACiAKICAgICAgICAgZnMgPSBbc2VsZi5zdWJtaXQoZm4sICphcmdzKSBmb3IgYXJncyBpbiB6aXAoKml0ZXJhYmxlcyldCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKLSAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoZW5kX3RpbWUgLSB0aW1lLnRpbWUoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6Ci0gICAgICAgICAgICAgICAgZnV0dXJlLmNhbmNlbCgpCisgICAgICAgICMgWWllbGQgbXVzdCBiZSBoaWRkZW4gaW4gY2xvc3VyZSBzbyB0aGF0IHRoZSBmdXR1cmVzIGFyZSBzdWJtaXR0ZWQKKyAgICAgICAgIyBiZWZvcmUgdGhlIGZpcnN0IGl0ZXJhdG9yIHZhbHVlIGlzIHJlcXVpcmVkLgorICAgICAgICBkZWYgcmVzdWx0X2l0ZXJhdG9yKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIGZ1dHVyZSBpbiBmczoKKyAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdCgpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KGVuZF90aW1lIC0gdGltZS50aW1lKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6CisgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5jYW5jZWwoKQorICAgICAgICByZXR1cm4gcmVzdWx0X2l0ZXJhdG9yKCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCB3YWl0PVRydWUpOgogICAgICAgICAiIiJDbGVhbi11cCB0aGUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgRXhlY3V0b3IuCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKaW5kZXggZDNiYmUyYy4uMDQyMzhhNyAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQpAQCAtNDYsOSArNDYsMTIgQEAKIF9fYXV0aG9yX18gPSAnQnJpYW4gUXVpbmxhbiAoYnJpYW5Ac3dlZXRhcHAuY29tKScKIAogaW1wb3J0IGF0ZXhpdAoraW1wb3J0IG9zCiBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgX2Jhc2UKIGltcG9ydCBxdWV1ZQogaW1wb3J0IG11bHRpcHJvY2Vzc2luZworZnJvbSBtdWx0aXByb2Nlc3NpbmcucXVldWVzIGltcG9ydCBTaW1wbGVRdWV1ZSwgRnVsbAorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHdlYWtyZWYKIApAQCAtMTIxLDcgKzEyNCw3IEBACiAgICAgICAgIGNhbGxfaXRlbSA9IGNhbGxfcXVldWUuZ2V0KGJsb2NrPVRydWUpCiAgICAgICAgIGlmIGNhbGxfaXRlbSBpcyBOb25lOgogICAgICAgICAgICAgIyBXYWtlIHVwIHF1ZXVlIG1hbmFnZW1lbnQgdGhyZWFkCi0gICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KE5vbmUpCisgICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KG9zLmdldHBpZCgpKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHIgPSBjYWxsX2l0ZW0uZm4oKmNhbGxfaXRlbS5hcmdzLCAqKmNhbGxfaXRlbS5rd2FyZ3MpCkBAIC0xOTMsNDYgKzE5Niw5MiBAQAogICAgICAgICByZXN1bHRfcXVldWU6IEEgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG9mIF9SZXN1bHRJdGVtcyBnZW5lcmF0ZWQgYnkgdGhlCiAgICAgICAgICAgICBwcm9jZXNzIHdvcmtlcnMuCiAgICAgIiIiCi0gICAgbmJfc2h1dGRvd25fcHJvY2Vzc2VzID0gMAotICAgIGRlZiBzaHV0ZG93bl9vbmVfcHJvY2VzcygpOgotICAgICAgICAiIiJUZWxsIGEgd29ya2VyIHRvIHRlcm1pbmF0ZSwgd2hpY2ggd2lsbCBpbiB0dXJuIHdha2UgdXMgYWdhaW4iIiIKLSAgICAgICAgbm9ubG9jYWwgbmJfc2h1dGRvd25fcHJvY2Vzc2VzCi0gICAgICAgIGNhbGxfcXVldWUucHV0KE5vbmUpCi0gICAgICAgIG5iX3NodXRkb3duX3Byb2Nlc3NlcyArPSAxCisgICAgZXhlY3V0b3IgPSBOb25lCisKKyAgICBkZWYgc2h1dHRpbmdfZG93bigpOgorICAgICAgICByZXR1cm4gX3NodXRkb3duIG9yIGV4ZWN1dG9yIGlzIE5vbmUgb3IgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZAorCisgICAgZGVmIHNodXRkb3duX3dvcmtlcigpOgorICAgICAgICAjIFRoaXMgaXMgYW4gdXBwZXIgYm91bmQKKyAgICAgICAgbmJfY2hpbGRyZW5fYWxpdmUgPSBzdW0ocC5pc19hbGl2ZSgpIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbmJfY2hpbGRyZW5fYWxpdmUpOgorICAgICAgICAgICAgY2FsbF9xdWV1ZS5wdXRfbm93YWl0KE5vbmUpCisgICAgICAgICMgUmVsZWFzZSB0aGUgcXVldWUncyByZXNvdXJjZXMgYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICAgICAgY2FsbF9xdWV1ZS5jbG9zZSgpCisgICAgICAgICMgSWYgLmpvaW4oKSBpcyBub3QgY2FsbGVkIG9uIHRoZSBjcmVhdGVkIHByb2Nlc3NlcyB0aGVuCisgICAgICAgICMgc29tZSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgbWV0aG9kcyBtYXkgZGVhZGxvY2sgb24gTWFjIE9TIFguCisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHAuam9pbigpCisKKyAgICByZWFkZXIgPSByZXN1bHRfcXVldWUuX3JlYWRlcgorCiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgX2FkZF9jYWxsX2l0ZW1fdG9fcXVldWUocGVuZGluZ193b3JrX2l0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrX2lkc19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF9xdWV1ZSkKIAotICAgICAgICByZXN1bHRfaXRlbSA9IHJlc3VsdF9xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSkKLSAgICAgICAgaWYgcmVzdWx0X2l0ZW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3b3JrX2l0ZW0gPSBwZW5kaW5nX3dvcmtfaXRlbXNbcmVzdWx0X2l0ZW0ud29ya19pZF0KLSAgICAgICAgICAgIGRlbCBwZW5kaW5nX3dvcmtfaXRlbXNbcmVzdWx0X2l0ZW0ud29ya19pZF0KLQotICAgICAgICAgICAgaWYgcmVzdWx0X2l0ZW0uZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihyZXN1bHRfaXRlbS5leGNlcHRpb24pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X3Jlc3VsdChyZXN1bHRfaXRlbS5yZXN1bHQpCisgICAgICAgIHNlbnRpbmVscyA9IFtwLnNlbnRpbmVsIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKV0KKyAgICAgICAgYXNzZXJ0IHNlbnRpbmVscworICAgICAgICByZWFkeSA9IHdhaXQoW3JlYWRlcl0gKyBzZW50aW5lbHMpCisgICAgICAgIGlmIHJlYWRlciBpbiByZWFkeToKKyAgICAgICAgICAgIHJlc3VsdF9pdGVtID0gcmVhZGVyLnJlY3YoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBNYXJrIHRoZSBwcm9jZXNzIHBvb2wgYnJva2VuIHNvIHRoYXQgc3VibWl0cyBmYWlsIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKKyAgICAgICAgICAgIGlmIGV4ZWN1dG9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGV4ZWN1dG9yLl9icm9rZW4gPSBUcnVlCisgICAgICAgICAgICAgICAgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZCA9IFRydWUKKyAgICAgICAgICAgICAgICBleGVjdXRvciA9IE5vbmUKKyAgICAgICAgICAgICMgQWxsIGZ1dHVyZXMgaW4gZmxpZ2h0IG11c3QgYmUgbWFya2VkIGZhaWxlZAorICAgICAgICAgICAgZm9yIHdvcmtfaWQsIHdvcmtfaXRlbSBpbiBwZW5kaW5nX3dvcmtfaXRlbXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgIEJyb2tlblByb2Nlc3NQb29sKAorICAgICAgICAgICAgICAgICAgICAgICAgIkEgcHJvY2VzcyBpbiB0aGUgcHJvY2VzcyBwb29sIHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGVybWluYXRlZCBhYnJ1cHRseSB3aGlsZSB0aGUgZnV0dXJlIHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAicnVubmluZyBvciBwZW5kaW5nLiIKKyAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHBlbmRpbmdfd29ya19pdGVtcy5jbGVhcigpCisgICAgICAgICAgICAjIFRlcm1pbmF0ZSByZW1haW5pbmcgd29ya2VycyBmb3JjaWJseTogdGhlIHF1ZXVlcyBvciB0aGVpcgorICAgICAgICAgICAgIyBsb2NrcyBtYXkgYmUgaW4gYSBkaXJ0eSBzdGF0ZSBhbmQgYmxvY2sgZm9yZXZlci4KKyAgICAgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0X2l0ZW0sIGludCk6CisgICAgICAgICAgICAjIENsZWFuIHNodXRkb3duIG9mIGEgd29ya2VyIHVzaW5nIGl0cyBQSUQKKyAgICAgICAgICAgICMgKGF2b2lkcyBtYXJraW5nIHRoZSBleGVjdXRvciBicm9rZW4pCisgICAgICAgICAgICBhc3NlcnQgc2h1dHRpbmdfZG93bigpCisgICAgICAgICAgICBwID0gcHJvY2Vzc2VzLnBvcChyZXN1bHRfaXRlbSkKKyAgICAgICAgICAgIHAuam9pbigpCisgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc2VzOgorICAgICAgICAgICAgICAgIHNodXRkb3duX3dvcmtlcigpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsaWYgcmVzdWx0X2l0ZW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3b3JrX2l0ZW0gPSBwZW5kaW5nX3dvcmtfaXRlbXMucG9wKHJlc3VsdF9pdGVtLndvcmtfaWQsIE5vbmUpCisgICAgICAgICAgICAjIHdvcmtfaXRlbSBjYW4gYmUgTm9uZSBpZiBhbm90aGVyIHByb2Nlc3MgdGVybWluYXRlZCAoc2VlIGFib3ZlKQorICAgICAgICAgICAgaWYgd29ya19pdGVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9pdGVtLmV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKHJlc3VsdF9pdGVtLmV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0X2l0ZW0ucmVzdWx0KQogICAgICAgICAjIENoZWNrIHdoZXRoZXIgd2Ugc2hvdWxkIHN0YXJ0IHNodXR0aW5nIGRvd24uCiAgICAgICAgIGV4ZWN1dG9yID0gZXhlY3V0b3JfcmVmZXJlbmNlKCkKICAgICAgICAgIyBObyBtb3JlIHdvcmsgaXRlbXMgY2FuIGJlIGFkZGVkIGlmOgogICAgICAgICAjICAgLSBUaGUgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93biBPUgogICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIGNvbGxlY3RlZCBPUgogICAgICAgICAjICAgLSBUaGUgZXhlY3V0b3IgdGhhdCBvd25zIHRoaXMgd29ya2VyIGhhcyBiZWVuIHNodXRkb3duLgotICAgICAgICBpZiBfc2h1dGRvd24gb3IgZXhlY3V0b3IgaXMgTm9uZSBvciBleGVjdXRvci5fc2h1dGRvd25fdGhyZWFkOgotICAgICAgICAgICAgIyBTaW5jZSBubyBuZXcgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQsIGl0IGlzIHNhZmUgdG8gc2h1dGRvd24KLSAgICAgICAgICAgICMgdGhpcyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd29yayBpdGVtcy4KLSAgICAgICAgICAgIGlmIG5vdCBwZW5kaW5nX3dvcmtfaXRlbXM6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbmJfc2h1dGRvd25fcHJvY2Vzc2VzIDwgbGVuKHByb2Nlc3Nlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRkb3duX29uZV9wcm9jZXNzKCkKLSAgICAgICAgICAgICAgICAjIElmIC5qb2luKCkgaXMgbm90IGNhbGxlZCBvbiB0aGUgY3JlYXRlZCBwcm9jZXNzZXMgdGhlbgotICAgICAgICAgICAgICAgICMgc29tZSBtdWx0aXByb2Nlc3NpbmcuUXVldWUgbWV0aG9kcyBtYXkgZGVhZGxvY2sgb24gTWFjIE9TCi0gICAgICAgICAgICAgICAgIyBYLgotICAgICAgICAgICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKLSAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKLSAgICAgICAgICAgICAgICBjYWxsX3F1ZXVlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZGVsIGV4ZWN1dG9yCisgICAgICAgIGlmIHNodXR0aW5nX2Rvd24oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFNpbmNlIG5vIG5ldyB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCwgaXQgaXMgc2FmZSB0byBzaHV0ZG93bgorICAgICAgICAgICAgICAgICMgdGhpcyB0aHJlYWQgaWYgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd29yayBpdGVtcy4KKyAgICAgICAgICAgICAgICBpZiBub3QgcGVuZGluZ193b3JrX2l0ZW1zOgorICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGV4Y2VwdCBGdWxsOgorICAgICAgICAgICAgICAgICMgVGhpcyBpcyBub3QgYSBwcm9ibGVtOiB3ZSB3aWxsIGV2ZW50dWFsbHkgYmUgd29rZW4gdXAgKGluCisgICAgICAgICAgICAgICAgIyByZXN1bHRfcXVldWUuZ2V0KCkpIGFuZCBiZSBhYmxlIHRvIHNlbmQgYSBzZW50aW5lbCBhZ2Fpbi4KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGV4ZWN1dG9yID0gTm9uZQogCiBfc3lzdGVtX2xpbWl0c19jaGVja2VkID0gRmFsc2UKIF9zeXN0ZW1fbGltaXRlZCA9IE5vbmUKQEAgLTI0Myw3ICsyOTIsNiBAQAogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfc3lzdGVtX2xpbWl0ZWQpCiAgICAgX3N5c3RlbV9saW1pdHNfY2hlY2tlZCA9IFRydWUKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBuc2Vtc19tYXggPSBvcy5zeXNjb25mKCJTQ19TRU1fTlNFTVNfTUFYIikKICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgIyBzeXNjb25mIG5vdCBhdmFpbGFibGUgb3Igc2V0dGluZyBub3QgYXZhaWxhYmxlCkBAIC0yNTksNiArMzA3LDE0IEBACiAgICAgX3N5c3RlbV9saW1pdGVkID0gInN5c3RlbSBwcm92aWRlcyB0b28gZmV3IHNlbWFwaG9yZXMgKCVkIGF2YWlsYWJsZSwgMjU2IG5lY2Vzc2FyeSkiICUgbnNlbXNfbWF4CiAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihfc3lzdGVtX2xpbWl0ZWQpCiAKKworY2xhc3MgQnJva2VuUHJvY2Vzc1Bvb2woUnVudGltZUVycm9yKToKKyAgICAiIiIKKyAgICBSYWlzZWQgd2hlbiBhIHByb2Nlc3MgaW4gYSBQcm9jZXNzUG9vbEV4ZWN1dG9yIHRlcm1pbmF0ZWQgYWJydXB0bHkKKyAgICB3aGlsZSBhIGZ1dHVyZSB3YXMgaW4gdGhlIHJ1bm5pbmcgc3RhdGUuCisgICAgIiIiCisKKwogY2xhc3MgUHJvY2Vzc1Bvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUpOgogICAgICAgICAiIiJJbml0aWFsaXplcyBhIG5ldyBQcm9jZXNzUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgpAQCAtMjgwLDE0ICszMzYsMjAgQEAKICAgICAgICAgIyBiZWNhdXNlIGZ1dHVyZXMgaW4gdGhlIGNhbGwgcXVldWUgY2Fubm90IGJlIGNhbmNlbGxlZC4KICAgICAgICAgc2VsZi5fY2FsbF9xdWV1ZSA9IG11bHRpcHJvY2Vzc2luZy5RdWV1ZShzZWxmLl9tYXhfd29ya2VycyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUUkFfUVVFVUVEX0NBTExTKQotICAgICAgICBzZWxmLl9yZXN1bHRfcXVldWUgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICAjIEtpbGxlZCB3b3JrZXIgcHJvY2Vzc2VzIGNhbiBwcm9kdWNlIHNwdXJpb3VzICJicm9rZW4gcGlwZSIKKyAgICAgICAgIyB0cmFjZWJhY2tzIGluIHRoZSBxdWV1ZSdzIG93biB3b3JrZXIgdGhyZWFkLiBCdXQgd2UgZGV0ZWN0IGtpbGxlZAorICAgICAgICAjIHByb2Nlc3NlcyBhbnl3YXksIHNvIHNpbGVuY2UgdGhlIHRyYWNlYmFja3MuCisgICAgICAgIHNlbGYuX2NhbGxfcXVldWUuX2lnbm9yZV9lcGlwZSA9IFRydWUKKyAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gU2ltcGxlUXVldWUoKQogICAgICAgICBzZWxmLl93b3JrX2lkcyA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICAgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYuX3Byb2Nlc3NlcyA9IHNldCgpCisgICAgICAgICMgTWFwIG9mIHBpZHMgdG8gcHJvY2Vzc2VzCisgICAgICAgIHNlbGYuX3Byb2Nlc3NlcyA9IHt9CiAKICAgICAgICAgIyBTaHV0ZG93biBpcyBhIHR3by1zdGVwIHByb2Nlc3MuCiAgICAgICAgIHNlbGYuX3NodXRkb3duX3RocmVhZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX2Jyb2tlbiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3F1ZXVlX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9wZW5kaW5nX3dvcmtfaXRlbXMgPSB7fQogCkBAIC0yOTcsNiArMzU5LDggQEAKICAgICAgICAgZGVmIHdlYWtyZWZfY2IoXywgcT1zZWxmLl9yZXN1bHRfcXVldWUpOgogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgaWYgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgaXMgTm9uZToKKyAgICAgICAgICAgICMgU3RhcnQgdGhlIHByb2Nlc3NlcyBzbyB0aGF0IHRoZWlyIHNlbnRpbmVscyBhcmUga25vd24uCisgICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgICBzZWxmLl9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQoCiAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1fcXVldWVfbWFuYWdlbWVudF93b3JrZXIsCiAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLApAQCAtMzE2LDEwICszODAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5fY2FsbF9xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlKSkKICAgICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzLmFkZChwKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc2VzW3AucGlkXSA9IHAKIAogICAgIGRlZiBzdWJtaXQoc2VsZiwgZm4sICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHdpdGggc2VsZi5fc2h1dGRvd25fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2Jyb2tlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBCcm9rZW5Qcm9jZXNzUG9vbCgnQSBjaGlsZCBwcm9jZXNzIHRlcm1pbmF0ZWQgJworICAgICAgICAgICAgICAgICAgICAnYWJydXB0bHksIHRoZSBwcm9jZXNzIHBvb2wgaXMgbm90IHVzYWJsZSBhbnltb3JlJykKICAgICAgICAgICAgIGlmIHNlbGYuX3NodXRkb3duX3RocmVhZDoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2Nhbm5vdCBzY2hlZHVsZSBuZXcgZnV0dXJlcyBhZnRlciBzaHV0ZG93bicpCiAKQEAgLTMzMyw3ICs0MDAsNiBAQAogICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlLnB1dChOb25lKQogCiAgICAgICAgICAgICBzZWxmLl9zdGFydF9xdWV1ZV9tYW5hZ2VtZW50X3RocmVhZCgpCi0gICAgICAgICAgICBzZWxmLl9hZGp1c3RfcHJvY2Vzc19jb3VudCgpCiAgICAgICAgICAgICByZXR1cm4gZgogICAgIHN1Ym1pdC5fX2RvY19fID0gX2Jhc2UuRXhlY3V0b3Iuc3VibWl0Ll9fZG9jX18KIApkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCBmYmFjMDg4Li45NWJiNjgyIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtNzQsNyArNzQsNyBAQAogICAgICAgICAgICAgICAgIHdvcmtfcXVldWUucHV0KE5vbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBkZWwgZXhlY3V0b3IKLSAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgogICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiB3b3JrZXInLCBleGNfaW5mbz1UcnVlKQogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgpkaWZmIC0tZ2l0IGEvTGliL2NvbmZpZ3BhcnNlci5weSBiL0xpYi9jb25maWdwYXJzZXIucHkKaW5kZXggZDE0OGI4OC4uOWQ1Zjc3OSAxMDA2NDQKLS0tIGEvTGliL2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvY29uZmlncGFyc2VyLnB5CkBAIC0xMTksNyArMTE5LDggQEAKICAgICAgICAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMgYXJlIHN1cnJvdW5kZWQgYnkgc3BhY2VzLgogIiIiCiAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE11dGFibGVNYXBwaW5nLCBPcmRlcmVkRGljdCBhcyBfZGVmYXVsdF9kaWN0LCBfQ2hhaW5NYXAKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QgYXMgX2RlZmF1bHRfZGljdCwgQ2hhaW5NYXAgYXMgX0NoYWluTWFwCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KIGltcG9ydCBpdGVydG9vbHMKQEAgLTk5MiwxOCArOTkzLDI2IEBACiAgICAgICAgIGluZGVudF9sZXZlbCA9IDAKICAgICAgICAgZSA9IE5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vbmUsIG9yIGFuIGV4Y2VwdGlvbgogICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShmcCwgc3RhcnQ9MSk6Ci0gICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gTm9uZQorICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IHN5cy5tYXhzaXplCiAgICAgICAgICAgICAjIHN0cmlwIGlubGluZSBjb21tZW50cwotICAgICAgICAgICAgZm9yIHByZWZpeCBpbiBzZWxmLl9pbmxpbmVfY29tbWVudF9wcmVmaXhlczoKLSAgICAgICAgICAgICAgICBpbmRleCA9IGxpbmUuZmluZChwcmVmaXgpCi0gICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gMCBvciAoaW5kZXggPiAwIGFuZCBsaW5lW2luZGV4LTFdLmlzc3BhY2UoKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBpbmRleAotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaW5saW5lX3ByZWZpeGVzID0ge3A6IC0xIGZvciBwIGluIHNlbGYuX2lubGluZV9jb21tZW50X3ByZWZpeGVzfQorICAgICAgICAgICAgd2hpbGUgY29tbWVudF9zdGFydCA9PSBzeXMubWF4c2l6ZSBhbmQgaW5saW5lX3ByZWZpeGVzOgorICAgICAgICAgICAgICAgIG5leHRfcHJlZml4ZXMgPSB7fQorICAgICAgICAgICAgICAgIGZvciBwcmVmaXgsIGluZGV4IGluIGlubGluZV9wcmVmaXhlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IGxpbmUuZmluZChwcmVmaXgsIGluZGV4KzEpCisgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IC0xOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9wcmVmaXhlc1twcmVmaXhdID0gaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gMCBvciAoaW5kZXggPiAwIGFuZCBsaW5lW2luZGV4LTFdLmlzc3BhY2UoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gbWluKGNvbW1lbnRfc3RhcnQsIGluZGV4KQorICAgICAgICAgICAgICAgIGlubGluZV9wcmVmaXhlcyA9IG5leHRfcHJlZml4ZXMKICAgICAgICAgICAgICMgc3RyaXAgZnVsbCBsaW5lIGNvbW1lbnRzCiAgICAgICAgICAgICBmb3IgcHJlZml4IGluIHNlbGYuX2NvbW1lbnRfcHJlZml4ZXM6CiAgICAgICAgICAgICAgICAgaWYgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgocHJlZml4KToKICAgICAgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IDAKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNvbW1lbnRfc3RhcnQgPT0gc3lzLm1heHNpemU6CisgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IE5vbmUKICAgICAgICAgICAgIHZhbHVlID0gbGluZVs6Y29tbWVudF9zdGFydF0uc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IHZhbHVlOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2VtcHR5X2xpbmVzX2luX3ZhbHVlczoKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggNWViYmJjNi4uYmRlMmZlYiAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTAgKzEsMTAgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKIAogaW1wb3J0IHN5cworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIiwgIkV4aXRTdGFjayJdCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMTMsMTIgKzEzLDEyIEBACiAgICAgZGVmIF9yZWNyZWF0ZV9jbShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgcmVjcmVhdGVkIGluc3RhbmNlIG9mIHNlbGYuCiAKLSAgICAgICAgQWxsb3dzIG90aGVyd2lzZSBvbmUtc2hvdCBjb250ZXh0IG1hbmFnZXJzIGxpa2UKKyAgICAgICAgQWxsb3dzIGFuIG90aGVyd2lzZSBvbmUtc2hvdCBjb250ZXh0IG1hbmFnZXIgbGlrZQogICAgICAgICBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIgdG8gc3VwcG9ydCB1c2UgYXMKLSAgICAgICAgZGVjb3JhdG9ycyB2aWEgaW1wbGljaXQgcmVjcmVhdGlvbi4KKyAgICAgICAgYSBkZWNvcmF0b3IgdmlhIGltcGxpY2l0IHJlY3JlYXRpb24uCiAKLSAgICAgICAgTm90ZTogdGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HQ00gaW4gMy4yIGJ1dCB3aWxsIGJlCi0gICAgICAgIHJlbmFtZWQgYW5kIGRvY3VtZW50ZWQgZm9yIHRoaXJkIHBhcnR5IHVzZSBpbiAzLjMKKyAgICAgICAgVGhpcyBpcyBhIHByaXZhdGUgaW50ZXJmYWNlIGp1c3QgZm9yIF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlci4KKyAgICAgICAgU2VlIGlzc3VlICMxMTY0NyBmb3IgZGV0YWlscy4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTEzOSwzICsxMzksMTE3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6CiAgICAgICAgIHNlbGYudGhpbmcuY2xvc2UoKQorCisKKyMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1CitjbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCisKKyAgICBGb3IgZXhhbXBsZToKKworICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZmlsZXMgPSBbc3RhY2suZW50ZXJfY29udGV4dChvcGVuKGZuYW1lKSkgZm9yIGZuYW1lIGluIGZpbGVuYW1lc10KKyAgICAgICAgICAgICMgQWxsIG9wZW5lZCBmaWxlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY2xvc2VkIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAgICMgaW4gdGhlIGxpc3QgdGhyb3cgYW4gZXhjZXB0aW9uCisKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQorCisgICAgZGVmIHBvcF9hbGwoc2VsZik6CisgICAgICAgICIiIlByZXNlcnZlIHRoZSBjb250ZXh0IHN0YWNrIGJ5IHRyYW5zZmVycmluZyBpdCB0byBhIG5ldyBpbnN0YW5jZSIiIgorICAgICAgICBuZXdfc3RhY2sgPSB0eXBlKHNlbGYpKCkKKyAgICAgICAgbmV3X3N0YWNrLl9leGl0X2NhbGxiYWNrcyA9IHNlbGYuX2V4aXRfY2FsbGJhY2tzCisgICAgICAgIHNlbGYuX2V4aXRfY2FsbGJhY2tzID0gZGVxdWUoKQorICAgICAgICByZXR1cm4gbmV3X3N0YWNrCisKKyAgICBkZWYgX3B1c2hfY21fZXhpdChzZWxmLCBjbSwgY21fZXhpdCk6CisgICAgICAgICIiIkhlbHBlciB0byBjb3JyZWN0bHkgcmVnaXN0ZXIgY2FsbGJhY2tzIHRvIF9fZXhpdF9fIG1ldGhvZHMiIiIKKyAgICAgICAgZGVmIF9leGl0X3dyYXBwZXIoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIHJldHVybiBjbV9leGl0KGNtLCAqZXhjX2RldGFpbHMpCisgICAgICAgIF9leGl0X3dyYXBwZXIuX19zZWxmX18gPSBjbQorICAgICAgICBzZWxmLnB1c2goX2V4aXRfd3JhcHBlcikKKworICAgIGRlZiBwdXNoKHNlbGYsIGV4aXQpOgorICAgICAgICAiIiJSZWdpc3RlcnMgYSBjYWxsYmFjayB3aXRoIHRoZSBzdGFuZGFyZCBfX2V4aXRfXyBtZXRob2Qgc2lnbmF0dXJlCisKKyAgICAgICAgQ2FuIHN1cHByZXNzIGV4Y2VwdGlvbnMgdGhlIHNhbWUgd2F5IF9fZXhpdF9fIG1ldGhvZHMgY2FuLgorCisgICAgICAgIEFsc28gYWNjZXB0cyBhbnkgb2JqZWN0IHdpdGggYW4gX19leGl0X18gbWV0aG9kIChyZWdpc3RlcmluZyBhIGNhbGwKKyAgICAgICAgdG8gdGhlIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSBvYmplY3QgaXRzZWxmKQorICAgICAgICAiIiIKKyAgICAgICAgIyBXZSB1c2UgYW4gdW5ib3VuZCBtZXRob2QgcmF0aGVyIHRoYW4gYSBib3VuZCBtZXRob2QgdG8gZm9sbG93CisgICAgICAgICMgdGhlIHN0YW5kYXJkIGxvb2t1cCBiZWhhdmlvdXIgZm9yIHNwZWNpYWwgbWV0aG9kcworICAgICAgICBfY2JfdHlwZSA9IHR5cGUoZXhpdCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhpdF9tZXRob2QgPSBfY2JfdHlwZS5fX2V4aXRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIE5vdCBhIGNvbnRleHQgbWFuYWdlciwgc28gYXNzdW1lIGl0cyBhIGNhbGxhYmxlCisgICAgICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcy5hcHBlbmQoZXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfY21fZXhpdChleGl0LCBleGl0X21ldGhvZCkKKyAgICAgICAgcmV0dXJuIGV4aXQgIyBBbGxvdyB1c2UgYXMgYSBkZWNvcmF0b3IKKworICAgIGRlZiBjYWxsYmFjayhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICIiIlJlZ2lzdGVycyBhbiBhcmJpdHJhcnkgY2FsbGJhY2sgYW5kIGFyZ3VtZW50cy4KKworICAgICAgICBDYW5ub3Qgc3VwcHJlc3MgZXhjZXB0aW9ucy4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBfZXhpdF93cmFwcGVyKGV4Y190eXBlLCBleGMsIHRiKToKKyAgICAgICAgICAgIGNhbGxiYWNrKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICMgV2UgY2hhbmdlZCB0aGUgc2lnbmF0dXJlLCBzbyB1c2luZyBAd3JhcHMgaXMgbm90IGFwcHJvcHJpYXRlLCBidXQKKyAgICAgICAgIyBzZXR0aW5nIF9fd3JhcHBlZF9fIG1heSBzdGlsbCBoZWxwIHdpdGggaW50cm9zcGVjdGlvbgorICAgICAgICBfZXhpdF93cmFwcGVyLl9fd3JhcHBlZF9fID0gY2FsbGJhY2sKKyAgICAgICAgc2VsZi5wdXNoKF9leGl0X3dyYXBwZXIpCisgICAgICAgIHJldHVybiBjYWxsYmFjayAjIEFsbG93IHVzZSBhcyBhIGRlY29yYXRvcgorCisgICAgZGVmIGVudGVyX2NvbnRleHQoc2VsZiwgY20pOgorICAgICAgICAiIiJFbnRlcnMgdGhlIHN1cHBsaWVkIGNvbnRleHQgbWFuYWdlcgorCisgICAgICAgIElmIHN1Y2Nlc3NmdWwsIGFsc28gcHVzaGVzIGl0cyBfX2V4aXRfXyBtZXRob2QgYXMgYSBjYWxsYmFjayBhbmQKKyAgICAgICAgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBfX2VudGVyX18gbWV0aG9kLgorICAgICAgICAiIiIKKyAgICAgICAgIyBXZSBsb29rIHVwIHRoZSBzcGVjaWFsIG1ldGhvZHMgb24gdGhlIHR5cGUgdG8gbWF0Y2ggdGhlIHdpdGggc3RhdGVtZW50CisgICAgICAgIF9jbV90eXBlID0gdHlwZShjbSkKKyAgICAgICAgX2V4aXQgPSBfY21fdHlwZS5fX2V4aXRfXworICAgICAgICByZXN1bHQgPSBfY21fdHlwZS5fX2VudGVyX18oY20pCisgICAgICAgIHNlbGYuX3B1c2hfY21fZXhpdChjbSwgX2V4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiSW1tZWRpYXRlbHkgdW53aW5kIHRoZSBjb250ZXh0IHN0YWNrIiIiCisgICAgICAgIHNlbGYuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgIyBXZSBtYW5pcHVsYXRlIHRoZSBleGNlcHRpb24gc3RhdGUgc28gaXQgYmVoYXZlcyBhcyB0aG91Z2gKKyAgICAgICAgIyB3ZSB3ZXJlIGFjdHVhbGx5IG5lc3RpbmcgbXVsdGlwbGUgd2l0aCBzdGF0ZW1lbnRzCisgICAgICAgIGZyYW1lX2V4YyA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgIGRlZiBfZml4X2V4Y2VwdGlvbl9jb250ZXh0KG5ld19leGMsIG9sZF9leGMpOgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IG5ld19leGMuX19jb250ZXh0X18KKyAgICAgICAgICAgICAgICBpZiBleGNfY29udGV4dCBpbiAoTm9uZSwgZnJhbWVfZXhjKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBuZXdfZXhjID0gZXhjX2NvbnRleHQKKyAgICAgICAgICAgIG5ld19leGMuX19jb250ZXh0X18gPSBvbGRfZXhjCisKKyAgICAgICAgIyBDYWxsYmFja3MgYXJlIGludm9rZWQgaW4gTElGTyBvcmRlciB0byBtYXRjaCB0aGUgYmVoYXZpb3VyIG9mCisgICAgICAgICMgbmVzdGVkIGNvbnRleHQgbWFuYWdlcnMKKyAgICAgICAgc3VwcHJlc3NlZF9leGMgPSBGYWxzZQorICAgICAgICB3aGlsZSBzZWxmLl9leGl0X2NhbGxiYWNrczoKKyAgICAgICAgICAgIGNiID0gc2VsZi5fZXhpdF9jYWxsYmFja3MucG9wKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBjYigqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc2VkX2V4YyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBuZXdfZXhjX2RldGFpbHMgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICMgc2ltdWxhdGUgdGhlIHN0YWNrIG9mIGV4Y2VwdGlvbnMgYnkgc2V0dGluZyB0aGUgY29udGV4dAorICAgICAgICAgICAgICAgIF9maXhfZXhjZXB0aW9uX2NvbnRleHQobmV3X2V4Y19kZXRhaWxzWzFdLCBleGNfZGV0YWlsc1sxXSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjX2RldGFpbHMgPSBuZXdfZXhjX2RldGFpbHMKKyAgICAgICAgcmV0dXJuIHN1cHByZXNzZWRfZXhjCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDA4OWQxMDEuLmQ5NjIwMWUgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC0xNzMsOCArMTczLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bihkZWVwKWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIHJ2LCAxLCBtZW1vKQogCi0gICAgbWVtb1tkXSA9IHkKLSAgICBfa2VlcF9hbGl2ZSh4LCBtZW1vKSAjIE1ha2Ugc3VyZSB4IGxpdmVzIGF0IGxlYXN0IGFzIGxvbmcgYXMgZAorICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgorICAgIGlmIHkgaXMgbm90IHg6CisgICAgICAgIG1lbW9bZF0gPSB5CisgICAgICAgIF9rZWVwX2FsaXZlKHgsIG1lbW8pICMgTWFrZSBzdXJlIHggbGl2ZXMgYXQgbGVhc3QgYXMgbG9uZyBhcyBkCiAgICAgcmV0dXJuIHkKIAogX2RlZXBjb3B5X2Rpc3BhdGNoID0gZCA9IHt9CkBAIC0yMTQsOSArMjE2LDEwIEBACiAgICAgeSA9IFtdCiAgICAgZm9yIGEgaW4geDoKICAgICAgICAgeS5hcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCi0gICAgZCA9IGlkKHgpCisgICAgIyBXZSdyZSBub3QgZ29pbmcgdG8gcHV0IHRoZSB0dXBsZSBpbiB0aGUgbWVtbywgYnV0IGl0J3Mgc3RpbGwgaW1wb3J0YW50IHdlCisgICAgIyBjaGVjayBmb3IgaXQsIGluIGNhc2UgdGhlIHR1cGxlIGNvbnRhaW5zIHJlY3Vyc2l2ZSBtdXRhYmxlIHN0cnVjdHVyZXMuCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gbWVtb1tkXQorICAgICAgICByZXR1cm4gbWVtb1tpZCh4KV0KICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgIHBhc3MKICAgICBmb3IgaSBpbiByYW5nZShsZW4oeCkpOgpAQCAtMjI1LDcgKzIyOCw2IEBACiAgICAgICAgICAgICBicmVhawogICAgIGVsc2U6CiAgICAgICAgIHkgPSB4Ci0gICAgbWVtb1tkXSA9IHkKICAgICByZXR1cm4geQogZFt0dXBsZV0gPSBfZGVlcGNvcHlfdHVwbGUKIApAQCAtMzIxLDY4ICszMjMsMyBAQAogIyBIZWxwZXIgZm9yIGluc3RhbmNlIGNyZWF0aW9uIHdpdGhvdXQgY2FsbGluZyBfX2luaXRfXwogY2xhc3MgX0VtcHR5Q2xhc3M6CiAgICAgcGFzcwotCi1kZWYgX3Rlc3QoKToKLSAgICBsID0gW05vbmUsIDEsIDIsIDMuMTQsICd4eXp6eScsICgxLCAyKSwgWzMuMTQsICdhYmMnXSwKLSAgICAgICAgIHsnYWJjJzogJ0FCQyd9LCAoKSwgW10sIHt9XQotICAgIGwxID0gY29weShsKQotICAgIHByaW50KGwxPT1sKQotICAgIGwxID0gbWFwKGNvcHksIGwpCi0gICAgcHJpbnQobDE9PWwpCi0gICAgbDEgPSBkZWVwY29weShsKQotICAgIHByaW50KGwxPT1sKQotICAgIGNsYXNzIEM6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmc9Tm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmEgPSAxCi0gICAgICAgICAgICBzZWxmLmFyZyA9IGFyZwotICAgICAgICAgICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCi0gICAgICAgICAgICAgICAgZmlsZSA9IHN5cy5hcmd2WzBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBfX2ZpbGVfXwotICAgICAgICAgICAgc2VsZi5mcCA9IG9wZW4oZmlsZSkKLSAgICAgICAgICAgIHNlbGYuZnAuY2xvc2UoKQotICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIHsnYSc6IHNlbGYuYSwgJ2FyZyc6IHNlbGYuYXJnfQotICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHN0YXRlLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBrZXksIHZhbHVlKQotICAgICAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW89Tm9uZSk6Ci0gICAgICAgICAgICBuZXcgPSBzZWxmLl9fY2xhc3NfXyhkZWVwY29weShzZWxmLmFyZywgbWVtbykpCi0gICAgICAgICAgICBuZXcuYSA9IHNlbGYuYQotICAgICAgICAgICAgcmV0dXJuIG5ldwotICAgIGMgPSBDKCdhcmd1bWVudCBza2V0Y2gnKQotICAgIGwuYXBwZW5kKGMpCi0gICAgbDIgPSBjb3B5KGwpCi0gICAgcHJpbnQobCA9PSBsMikKLSAgICBwcmludChsKQotICAgIHByaW50KGwyKQotICAgIGwyID0gZGVlcGNvcHkobCkKLSAgICBwcmludChsID09IGwyKQotICAgIHByaW50KGwpCi0gICAgcHJpbnQobDIpCi0gICAgbC5hcHBlbmQoe2xbMV06IGwsICd4eXonOiBsWzJdfSkKLSAgICBsMyA9IGNvcHkobCkKLSAgICBpbXBvcnQgcmVwcmxpYgotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwxKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMikpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDMpKQotICAgIGwzID0gZGVlcGNvcHkobCkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMSkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDIpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwzKSkKLSAgICBjbGFzcyBvZGljdChkaWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQgPSB7fSk6Ci0gICAgICAgICAgICBzZWxmLmEgPSA5OQotICAgICAgICAgICAgZGljdC5fX2luaXRfXyhzZWxmLCBkKQotICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaywgaSk6Ci0gICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGssIGkpCi0gICAgICAgICAgICBzZWxmLmEKLSAgICBvID0gb2RpY3QoeyJBIiA6ICJCIn0pCi0gICAgeCA9IGRlZXBjb3B5KG8pCi0gICAgcHJpbnQobywgeCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwYzgxYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9jcnlwdC5weQpAQCAtMCwwICsxLDYyIEBACisiIiJXcmFwcGVyIHRvIHRoZSBQT1NJWCBjcnlwdCBsaWJyYXJ5IGNhbGwgYW5kIGFzc29jaWF0ZWQgZnVuY3Rpb25hbGl0eS4iIiIKKworaW1wb3J0IF9jcnlwdAoraW1wb3J0IHN0cmluZyBhcyBfc3RyaW5nCitmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tIGFzIF9TeXN0ZW1SYW5kb20KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKKworCitfc2FsdGNoYXJzID0gX3N0cmluZy5hc2NpaV9sZXR0ZXJzICsgX3N0cmluZy5kaWdpdHMgKyAnLi8nCitfc3IgPSBfU3lzdGVtUmFuZG9tKCkKKworCitjbGFzcyBfTWV0aG9kKF9uYW1lZHR1cGxlKCdfTWV0aG9kJywgJ25hbWUgaWRlbnQgc2FsdF9jaGFycyB0b3RhbF9zaXplJykpOgorCisgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2FsdCBtZXRob2QgcGVyIHRoZSBNb2R1bGFyIENyeXB0IEZvcm1hdCBvciB0aGUKKyAgICBsZWdhY3kgMi1jaGFyYWN0ZXIgY3J5cHQgbWV0aG9kLiIiIgorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxjcnlwdC5NRVRIT0Rfe30+Jy5mb3JtYXQoc2VsZi5uYW1lKQorCisKK2RlZiBta3NhbHQobWV0aG9kPU5vbmUpOgorICAgICIiIkdlbmVyYXRlIGEgc2FsdCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuCisKKyAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgc3Ryb25nZXN0IGF2YWlsYWJsZSBtZXRob2Qgd2lsbCBiZSB1c2VkLgorCisgICAgIiIiCisgICAgaWYgbWV0aG9kIGlzIE5vbmU6CisgICAgICAgIG1ldGhvZCA9IG1ldGhvZHNbMF0KKyAgICBzID0gJyR7fSQnLmZvcm1hdChtZXRob2QuaWRlbnQpIGlmIG1ldGhvZC5pZGVudCBlbHNlICcnCisgICAgcyArPSAnJy5qb2luKF9zci5zYW1wbGUoX3NhbHRjaGFycywgbWV0aG9kLnNhbHRfY2hhcnMpKQorICAgIHJldHVybiBzCisKKworZGVmIGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb25lLXdheSBoYXNoIG9mIGEgcGFzc3dvcmQsIHdpdGggYSBzYWx0CisgICAgcHJlcGVuZGVkLgorCisgICAgSWYgYGBzYWx0YGAgaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgdGhlIHN0cm9uZ2VzdAorICAgIGF2YWlsYWJsZSBtZXRob2Qgd2lsbCBiZSBzZWxlY3RlZCBhbmQgYSBzYWx0IGdlbmVyYXRlZC4gIE90aGVyd2lzZSwKKyAgICBgYHNhbHRgYCBtYXkgYmUgb25lIG9mIHRoZSBgYGNyeXB0Lk1FVEhPRF8qYGAgdmFsdWVzLCBvciBhIHN0cmluZyBhcworICAgIHJldHVybmVkIGJ5IGBgY3J5cHQubWtzYWx0KClgYC4KKworICAgICIiIgorICAgIGlmIHNhbHQgaXMgTm9uZSBvciBpc2luc3RhbmNlKHNhbHQsIF9NZXRob2QpOgorICAgICAgICBzYWx0ID0gbWtzYWx0KHNhbHQpCisgICAgcmV0dXJuIF9jcnlwdC5jcnlwdCh3b3JkLCBzYWx0KQorCisKKyMgIGF2YWlsYWJsZSBzYWx0aW5nL2NyeXB0byBtZXRob2RzCitNRVRIT0RfQ1JZUFQgPSBfTWV0aG9kKCdDUllQVCcsIE5vbmUsIDIsIDEzKQorTUVUSE9EX01ENSA9IF9NZXRob2QoJ01ENScsICcxJywgOCwgMzQpCitNRVRIT0RfU0hBMjU2ID0gX01ldGhvZCgnU0hBMjU2JywgJzUnLCAxNiwgNjMpCitNRVRIT0RfU0hBNTEyID0gX01ldGhvZCgnU0hBNTEyJywgJzYnLCAxNiwgMTA2KQorCittZXRob2RzID0gW10KK2ZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1KToKKyAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCisgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKKyAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKK21ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKK2RlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQppbmRleCAxMTEyMDlhLi5mMGJkNjZhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAjIGxpYnJhcmllcy4gIE9TIFggMTAuMyBpcyBEYXJ3aW4gNywgc28gd2UgY2hlY2sgZm9yCiAgICAgIyB0aGF0LgogCi0gICAgaWYgaW50KF9vcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pIDwgODoKKyAgICBpZiBpbnQoX29zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA8IDg6CiAgICAgICAgIERFRkFVTFRfTU9ERSA9IFJUTERfR0xPQkFMCiAKIGZyb20gX2N0eXBlcyBpbXBvcnQgRlVOQ0ZMQUdfQ0RFQ0wgYXMgX0ZVTkNGTEFHX0NERUNMLCBcCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKaW5kZXggYzcyMDdlYS4uNTYwMGI0MyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKGxhbWJkYSB4PU5hc3R5KCk6IE5vbmUpCi0gICAgICAgIAorCiAKIHRyeToKICAgICBXSU5GVU5DVFlQRQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5CmluZGV4IGFhMjExM2IuLmFlYzRhYWEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIApAQCAtNDksNiArNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc3QoYSwgUE9JTlRFUihjX2J5dGUpKVs6Nzo3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzk3XSkKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9zdHJpbmdfYXQoc2VsZik6CiAgICAgICAgIHMgPSBzdHJpbmdfYXQoYiJmb28gYmFyIikKICAgICAgICAgIyBYWFggVGhlIGZvbGxvd2luZyBtYXkgYmUgd3JvbmcsIGRlcGVuZGluZyBvbiBob3cgUHl0aG9uCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlODNmZDlhLi45NzYyZmI5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTczLDEzICs3MywxMCBAQAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAjIyAgICAgICAgICAgIHByaW50ICIoTm8gY193Y2hhcl9wKSIKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzID0gIjEyMyIKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY193Y2hhcl9wLmZyb21fcGFyYW0ocykuX29iaiBpcyBzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgNDIpCiAKLSAgICAgICAgICAgICMgbmV3IGluIDAuOS4xOiBjb252ZXJ0IChkZWNvZGUpIGFzY2lpIHRvIHVuaWNvZGUKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY193Y2hhcl9wLmZyb21fcGFyYW0oIjEyMyIpLl9vYmosICIxMjMiKQorICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNfd2NoYXJfcC5mcm9tX3BhcmFtLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgYiIxMjNcMzc3IikKIAogICAgICAgICBwYSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtKGNfd2NoYXJfcCgiMTIzIikpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQppbmRleCBmYTY0NjFmLi5hZDEzYjAxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKQEAgLTI1LDE0ICsyNSwxNyBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemUodi5mb3JtYXQpLCBub3JtYWxpemUoZm10KSkKLSAgICAgICAgICAgICAgICBpZiBzaGFwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIHNoYXBlWzBdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpICogc2l6ZW9mKGl0ZW10cCksIHNpemVvZihvYikpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lml0ZW1zaXplLCBzaXplb2YoaXRlbXRwKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc2hhcGUsIHNoYXBlKQotICAgICAgICAgICAgICAgICMgY3R5cGVzIG9iamVjdCBhbHdheXMgaGF2ZSBhIG5vbi1zdHJpZGVkIG1lbW9yeSBibG9jawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCBOb25lKQorICAgICAgICAgICAgICAgICMgWFhYIElzc3VlICMxMjg1MTogUHlDRGF0YV9OZXdHZXRCdWZmZXIoKSBtdXN0IHByb3ZpZGUgc3RyaWRlcworICAgICAgICAgICAgICAgICMgICAgIGlmIHJlcXVlc3RlZC4gbWVtb3J5dmlldyBjdXJyZW50bHkgcmVjb25zdHJ1Y3RzIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjICAgICBzdHJpZGUgaW5mb3JtYXRpb24sIHNvIHRoaXMgYXNzZXJ0IHdpbGwgZmFpbC4KKyAgICAgICAgICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCAoKSkKKwogICAgICAgICAgICAgICAgICMgdGhleSBhcmUgYWx3YXlzIHJlYWQvd3JpdGUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYucmVhZG9ubHkpCiAKQEAgLTUyLDE0ICs1NSwxNSBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LmZvcm1hdCwgZm10KQotICAgICAgICAgICAgICAgIGlmIHNoYXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgc2hhcGVbMF0pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odikgKiBzaXplb2YoaXRlbXRwKSwgc2l6ZW9mKG9iKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuaXRlbXNpemUsIHNpemVvZihpdGVtdHApKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zaGFwZSwgc2hhcGUpCi0gICAgICAgICAgICAgICAgIyBjdHlwZXMgb2JqZWN0IGFsd2F5cyBoYXZlIGEgbm9uLXN0cmlkZWQgbWVtb3J5IGJsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBYWFggSXNzdWUgIzEyODUxCisgICAgICAgICAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgKCkpCisKICAgICAgICAgICAgICAgICAjIHRoZXkgYXJlIGFsd2F5cyByZWFkL3dyaXRlCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2LnJlYWRvbmx5KQogCkBAIC0xMTAsMzQgKzExNCwzNCBAQAogCiAgICAgIyMgc2ltcGxlIHR5cGVzCiAKLSAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfY2hhciksCi0gICAgKGNfYnl0ZSwgICAgICAgICAgICAgICAgICAgICI8YiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2J5dGUpLAotICAgIChjX3VieXRlLCAgICAgICAgICAgICAgICAgICAiPEIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191Ynl0ZSksCi0gICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Nob3J0KSwKLSAgICAoY191c2hvcnQsICAgICAgICAgICAgICAgICAgIjxIIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdXNob3J0KSwKKyAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2NoYXIpLAorICAgIChjX2J5dGUsICAgICAgICAgICAgICAgICAgICAiPGIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYnl0ZSksCisgICAgKGNfdWJ5dGUsICAgICAgICAgICAgICAgICAgICI8QiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191Ynl0ZSksCisgICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19zaG9ydCksCisgICAgKGNfdXNob3J0LCAgICAgICAgICAgICAgICAgICI8SCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191c2hvcnQpLAogCiAgICAgIyBjX2ludCBhbmQgY191aW50IG1heSBiZSBhbGlhc2VzIHRvIGNfbG9uZwotICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfaW50KSwKLSAgICAjKGNfdWludCwgICAgICAgICAgICAgICAgICAgICI8SSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VpbnQpLAorICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2ludCksCisgICAgIyhjX3VpbnQsICAgICAgICAgICAgICAgICAgICAiPEkiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWludCksCiAKLSAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfbG9uZyksCi0gICAgKGNfdWxvbmcsICAgICAgICAgICAgICAgICAgICI8TCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Vsb25nKSwKKyAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2xvbmcpLAorICAgIChjX3Vsb25nLCAgICAgICAgICAgICAgICAgICAiPEwiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWxvbmcpLAogCiAgICAgIyBjX2xvbmdsb25nIGFuZCBjX3Vsb25nbG9uZyBhcmUgYWxpYXNlcyBvbiA2NC1iaXQgcGxhdGZvcm1zCiAgICAgIyhjX2xvbmdsb25nLCAgICAgICAgICAgICAgICAiPHEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nbG9uZyksCiAgICAgIyhjX3Vsb25nbG9uZywgICAgICAgICAgICAgICAiPFEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191bG9uZ2xvbmcpLAogCi0gICAgKGNfZmxvYXQsICAgICAgICAgICAgICAgICAgICI8ZiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2Zsb2F0KSwKLSAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfZG91YmxlKSwKKyAgICAoY19mbG9hdCwgICAgICAgICAgICAgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2Zsb2F0KSwKKyAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2RvdWJsZSksCiAgICAgIyBjX2xvbmdkb3VibGUgbWF5IGJlIGFuIGFsaWFzIHRvIGNfZG91YmxlCiAKLSAgICAoY19ib29sLCAgICAgICAgICAgICAgICAgICAgIjw/IiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfYm9vbCksCi0gICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBweV9vYmplY3QpLAorICAgIChjX2Jvb2wsICAgICAgICAgICAgICAgICAgICAiPD8iLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYm9vbCksCisgICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgcHlfb2JqZWN0KSwKIAogICAgICMjIHBvaW50ZXJzCiAKLSAgICAoUE9JTlRFUihjX2J5dGUpLCAgICAgICAgICAgIiY8YiIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCi0gICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKFBPSU5URVIoY19sb25nKSkpLAorICAgIChQT0lOVEVSKGNfYnl0ZSksICAgICAgICAgICAiJjxiIiwgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCisgICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpKSwKIAogICAgICMjIGFycmF5cyBhbmQgcG9pbnRlcnMKIApAQCAtMTQ1LDMyICsxNDksMzIgQEAKICAgICAoY19mbG9hdCAqIDQgKiAzICogMiwgICAgICAgIigyLDMsNCk8ZiIsICAgICAgICAgICAgKDIsMyw0KSwgICAgICAgIGNfZmxvYXQpLAogICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiwgICAgICAiKDIpJjxoIiwgICAgICAgICAgICAgICAoMiwpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCiAgICAgKFBPSU5URVIoY19zaG9ydCkgKiAyICogMywgICIoMywyKSY8aCIsICAgICAgICAgICAgICgzLDIsKSwgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKLSAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8aCIsICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAorICAgIChQT0lOVEVSKGNfc2hvcnQgKiAyKSwgICAgICAiJigyKTxoIiwgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAogCiAgICAgIyMgc3RydWN0dXJlcyBhbmQgdW5pb25zCiAKLSAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50KSwKKyAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBQb2ludCksCiAgICAgIyBwYWNrZWQgc3RydWN0dXJlcyBkbyBub3QgaW1wbGVtZW50IHRoZSBwZXAKLSAgICAoUGFja2VkUG9pbnQsICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBhY2tlZFBvaW50KSwKLSAgICAoUG9pbnQyLCAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50MiksCi0gICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBFbXB0eVN0cnVjdCksCisgICAgKFBhY2tlZFBvaW50LCAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUGFja2VkUG9pbnQpLAorICAgIChQb2ludDIsICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIFBvaW50MiksCisgICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgRW1wdHlTdHJ1Y3QpLAogICAgICMgdGhlIHBlcCBkb2VzJ3Qgc3VwcG9ydCB1bmlvbnMKLSAgICAoYVVuaW9uLCAgICAgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGFVbmlvbiksCisgICAgKGFVbmlvbiwgICAgICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgYVVuaW9uKSwKIAogICAgICMjIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSBzdHJ1Y3R1cmUKLSAgICAoSW5jb21wbGV0ZSwgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIEluY29tcGxldGUpLAotICAgIChQT0lOVEVSKEluY29tcGxldGUpLCAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCisgICAgKEluY29tcGxldGUsICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgSW5jb21wbGV0ZSksCisgICAgKFBPSU5URVIoSW5jb21wbGV0ZSksICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCiAKICAgICAjICdDb21wbGV0ZScgaXMgYSBzdHJ1Y3R1cmUgdGhhdCBzdGFydHMgaW5jb21wbGV0ZSwgYnV0IGlzIGNvbXBsZXRlZCBhZnRlciB0aGUKICAgICAjIHBvaW50ZXIgdHlwZSB0byBpdCBoYXMgYmVlbiBjcmVhdGVkLgotICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgQ29tcGxldGUpLAorICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICAoKSwgICAgICAgICAgIENvbXBsZXRlKSwKICAgICAjIFVuZm9ydHVuYXRlbHkgdGhlIHBvaW50ZXIgZm9ybWF0IHN0cmluZyBpcyBub3QgZml4ZWQuLi4KLSAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoQ29tcGxldGUpKSwKKyAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKENvbXBsZXRlKSksCiAKICAgICAjIyBvdGhlcgogCiAgICAgIyBmdW5jdGlvbiBzaWduYXR1cmVzIGFyZSBub3QgaW1wbGVtZW50ZWQKLSAgICAoQ0ZVTkNUWVBFKE5vbmUpLCAgICAgICAgICAgIlh7fSIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIENGVU5DVFlQRShOb25lKSksCisgICAgKENGVU5DVFlQRShOb25lKSwgICAgICAgICAgICJYe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKSwKIAogICAgIF0KIApAQCAtMTg2LDEwICsxOTAsMTAgQEAKICMgYW5kIGxpdHRsZSBlbmRpYW4gbWFjaGluZXMuCiAjCiBlbmRpYW5fdHlwZXMgPSBbCi0gICAgKEJFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUez5sOng6Pmw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBCRVBvaW50KSwKLSAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIExFUG9pbnQpLAotICAgIChQT0lOVEVSKEJFUG9pbnQpLCAgICAgICAgICAiJlR7Pmw6eDo+bDp5On0iLCAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihCRVBvaW50KSksCi0gICAgKFBPSU5URVIoTEVQb2ludCksICAgICAgICAgICImVHs8bDp4OjxsOnk6fSIsICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKKyAgICAoQkVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7Pmw6eDo+bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBCRVBvaW50KSwKKyAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBMRVBvaW50KSwKKyAgICAoUE9JTlRFUihCRVBvaW50KSwgICAgICAgICAgIiZUez5sOng6Pmw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKEJFUG9pbnQpKSwKKyAgICAoUE9JTlRFUihMRVBvaW50KSwgICAgICAgICAgIiZUezxsOng6PGw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKICAgICBdCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weQppbmRleCAxZjRjNjAzLi45ZGUzOTgwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogaW1wb3J0IHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yNSw2ICsyNiw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGIiYWJjZGVmZ2hpIiwgMyksIGIiYWJjIikKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9QeVN0cmluZ19Gcm9tU3RyaW5nKHNlbGYpOgogICAgICAgICBweXRob25hcGkuUHlCeXRlc19Gcm9tU3RyaW5nLnJlc3R5cGUgPSBweV9vYmplY3QKICAgICAgICAgcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbVN0cmluZy5hcmd0eXBlcyA9IChjX2NoYXJfcCwpCkBAIC01Niw2ICs1OCw3IEBACiAgICAgICAgICAgICBkZWwgcmVzCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyg0MiksIHJlZjQyKQogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X1B5T2JqX0Zyb21QdHIoc2VsZik6CiAgICAgICAgIHMgPSAiYWJjIGRlZiBnaGkgamtsIgogICAgICAgICByZWYgPSBncmMocykKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weQppbmRleCAzNWE4MWFhLi41NjEzZTdhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjdHlwZXMKIGltcG9ydCBnYwogCkBAIC0xMCw2ICsxMSw3IEBACiAKIGNsYXNzIFJlZmNvdW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0XzEoc2VsZik6CiAgICAgICAgIGZyb20gc3lzIGltcG9ydCBnZXRyZWZjb3VudCBhcyBncmMKIApAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyhjYWxsYmFjayksIDIpCiAKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9yZWZjb3VudChzZWxmKToKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IGdldHJlZmNvdW50IGFzIGdyYwogICAgICAgICBkZWYgZnVuYygqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkKaW5kZXggM2QyNWZhNS4uOTVjZDE2MSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCiBpbXBvcnQgX2N0eXBlc190ZXN0CkBAIC03LDYgKzgsNyBAQAogCiBjbGFzcyBTdHJpbmdQdHJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfX1BPSU5URVJfY19jaGFyKHNlbGYpOgogICAgICAgICBjbGFzcyBYKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoInN0ciIsIFBPSU5URVIoY19jaGFyKSldCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3V0aWwucHkgYi9MaWIvY3R5cGVzL3V0aWwucHkKaW5kZXggMWJiN2QxZC4uNTU1NWIyZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy91dGlsLnB5CisrKyBiL0xpYi9jdHlwZXMvdXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHN1YnByb2Nlc3MKIAogIyBmaW5kX2xpYnJhcnkobmFtZSkgcmV0dXJucyB0aGUgcGF0aG5hbWUgb2YgYSBsaWJyYXJ5LCBvciBOb25lLgogaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMzksOCArNDAsOCBAQAogICAgICAgICAgICAgY2xpYm5hbWUgPSAnbXN2Y3IlZCcgJSAodmVyc2lvbiAqIDEwKQogCiAgICAgICAgICMgSWYgcHl0aG9uIHdhcyBidWlsdCB3aXRoIGluIGRlYnVnIG1vZGUKLSAgICAgICAgaW1wb3J0IGltcAotICAgICAgICBpZiBpbXAuZ2V0X3N1ZmZpeGVzKClbMF1bMF0gPT0gJ19kLnB5ZCc6CisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgICAgICAgIGlmICdfZC5weWQnIGluIGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgogICAgICAgICAgICAgY2xpYm5hbWUgKz0gJ2QnCiAgICAgICAgIHJldHVybiBjbGlibmFtZSsnLmRsbCcKIApAQCAtMTM2LDE2ICsxMzcsMTIgQEAKICAgICAgICAgICAgIHJ2ID0gZi5jbG9zZSgpCiAgICAgICAgICAgICBpZiBydiA9PSAxMDoKICAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdvYmpkdW1wIGNvbW1hbmQgbm90IGZvdW5kJykKLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKG9zLnBvcGVuKGNtZCkpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocidcc1NPTkFNRVxzKyhbXlxzXSspJywgZGF0YSkKKyAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChyJ1xzU09OQU1FXHMrKFteXHNdKyknLCBkdW1wKQogICAgICAgICAgICAgaWYgbm90IHJlczoKICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHJlcy5ncm91cCgxKQogCi0gICAgaWYgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJmcmVlYnNkIikKLSAgICAgICAgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIm9wZW5ic2QiKQotICAgICAgICBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZHJhZ29uZmx5IikpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgiZnJlZWJzZCIsICJvcGVuYnNkIiwgImRyYWdvbmZseSIpKToKIAogICAgICAgICBkZWYgX251bV92ZXJzaW9uKGxpYm5hbWUpOgogICAgICAgICAgICAgIyAibGlieHl6LnNvLk1BSk9SLk1JTk9SIiA9PiBbIE1BSk9SLCBNSU5PUiBdCkBAIC0xNzQsOSArMTcxLDkgQEAKICAgICAgICAgZGVmIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpOgogICAgICAgICAgICAgaW1wb3J0IHN0cnVjdAogICAgICAgICAgICAgaWYgc3RydWN0LmNhbGNzaXplKCdsJykgPT0gNDoKLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XSArICctMzInCisgICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZSArICctMzInCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdICsgJy02NCcKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKS5tYWNoaW5lICsgJy02NCcKICAgICAgICAgICAgIG1hY2hfbWFwID0gewogICAgICAgICAgICAgICAgICd4ODZfNjQtNjQnOiAnbGliYzYseDg2LTY0JywKICAgICAgICAgICAgICAgICAncHBjNjQtNjQnOiAnbGliYzYsNjRiaXQnLApAQCAtMTg3LDEzICsxODQsMTkgQEAKICAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCiAKICAgICAgICAgICAgICMgWFhYIGFzc3VtaW5nIEdMSUJDJ3MgbGRjb25maWcgKHdpdGggb3B0aW9uIC1wKQotICAgICAgICAgICAgZXhwciA9IHInXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkKLSAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKG9zLnBvcGVuKCdMQ19BTEw9QyBMQU5HPUMgL3NiaW4vbGRjb25maWcgLXAgMj4vZGV2L251bGwnKSkgYXMgZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBkYXRhKQotICAgICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgcmV0dXJuIHJlcy5ncm91cCgxKQorICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZSgKKyAgICAgICAgICAgICAgICAnXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKFsnL3NiaW4vbGRjb25maWcnLCAnLXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9eydMQ19BTEwnOiAnQycsICdMQU5HJzogJ0MnfSkgYXMgcDoKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKHJlZ2V4LCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5mc2RlY29kZShyZXMuZ3JvdXAoMSkpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKICAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvY3Vyc2VzL19faW5pdF9fLnB5IGIvTGliL2N1cnNlcy9fX2luaXRfXy5weQppbmRleCBhM2U5ZGVmLi43YmZhNjY3IDEwMDY0NAotLS0gYS9MaWIvY3Vyc2VzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdXJzZXMvX19pbml0X18ucHkKQEAgLTExLDcgKzExLDYgQEAKICIiIgogCiBmcm9tIF9jdXJzZXMgaW1wb3J0ICoKLWZyb20gY3Vyc2VzLndyYXBwZXIgaW1wb3J0IHdyYXBwZXIKIGltcG9ydCBvcyBhcyBfb3MKIGltcG9ydCBzeXMgYXMgX3N5cwogCkBAIC01NSwzICs1NCw0OCBAQAogICAgIGhhc19rZXkKIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgZnJvbSAuaGFzX2tleSBpbXBvcnQgaGFzX2tleQorCisjIFdyYXBwZXIgZm9yIHRoZSBlbnRpcmUgY3Vyc2VzLWJhc2VkIGFwcGxpY2F0aW9uLiAgUnVucyBhIGZ1bmN0aW9uIHdoaWNoCisjIHNob3VsZCBiZSB0aGUgcmVzdCBvZiB5b3VyIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbi4gIElmIHRoZSBhcHBsaWNhdGlvbgorIyByYWlzZXMgYW4gZXhjZXB0aW9uLCB3cmFwcGVyKCkgd2lsbCByZXN0b3JlIHRoZSB0ZXJtaW5hbCB0byBhIHNhbmUgc3RhdGUgc28KKyMgeW91IGNhbiByZWFkIHRoZSByZXN1bHRpbmcgdHJhY2ViYWNrLgorCitkZWYgd3JhcHBlcihmdW5jLCAqYXJncywgKiprd2RzKToKKyAgICAiIiJXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgY3Vyc2VzIGFuZCBjYWxscyBhbm90aGVyIGZ1bmN0aW9uLAorICAgIHJlc3RvcmluZyBub3JtYWwga2V5Ym9hcmQvc2NyZWVuIGJlaGF2aW9yIG9uIGVycm9yLgorICAgIFRoZSBjYWxsYWJsZSBvYmplY3QgJ2Z1bmMnIGlzIHRoZW4gcGFzc2VkIHRoZSBtYWluIHdpbmRvdyAnc3Rkc2NyJworICAgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgZm9sbG93ZWQgYnkgYW55IG90aGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgICB3cmFwcGVyKCkuCisgICAgIiIiCisKKyAgICB0cnk6CisgICAgICAgICMgSW5pdGlhbGl6ZSBjdXJzZXMKKyAgICAgICAgc3Rkc2NyID0gaW5pdHNjcigpCisKKyAgICAgICAgIyBUdXJuIG9mZiBlY2hvaW5nIG9mIGtleXMsIGFuZCBlbnRlciBjYnJlYWsgbW9kZSwKKyAgICAgICAgIyB3aGVyZSBubyBidWZmZXJpbmcgaXMgcGVyZm9ybWVkIG9uIGtleWJvYXJkIGlucHV0CisgICAgICAgIG5vZWNobygpCisgICAgICAgIGNicmVhaygpCisKKyAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3BlY2lhbCBrZXlzCisgICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJlIGludGVycHJldGVkIGFuZAorICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNlcy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCisgICAgICAgIHN0ZHNjci5rZXlwYWQoMSkKKworICAgICAgICAjIFN0YXJ0IGNvbG9yLCB0b28uICBIYXJtbGVzcyBpZiB0aGUgdGVybWluYWwgZG9lc24ndCBoYXZlCisgICAgICAgICMgY29sb3I7IHVzZXIgY2FuIHRlc3Qgd2l0aCBoYXNfY29sb3IoKSBsYXRlciBvbi4gIFRoZSB0cnkvY2F0Y2gKKyAgICAgICAgIyB3b3JrcyBhcm91bmQgYSBtaW5vciBiaXQgb2Ygb3Zlci1jb25zY2llbnRpb3VzbmVzcyBpbiB0aGUgY3Vyc2VzCisgICAgICAgICMgbW9kdWxlIC0tIHRoZSBlcnJvciByZXR1cm4gZnJvbSBDIHN0YXJ0X2NvbG9yKCkgaXMgaWdub3JhYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdGFydF9jb2xvcigpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gZnVuYyhzdGRzY3IsICphcmdzLCAqKmt3ZHMpCisgICAgZmluYWxseToKKyAgICAgICAgIyBTZXQgZXZlcnl0aGluZyBiYWNrIHRvIG5vcm1hbAorICAgICAgICBpZiAnc3Rkc2NyJyBpbiBsb2NhbHMoKToKKyAgICAgICAgICAgIHN0ZHNjci5rZXlwYWQoMCkKKyAgICAgICAgICAgIGVjaG8oKQorICAgICAgICAgICAgbm9jYnJlYWsoKQorICAgICAgICAgICAgZW5kd2luKCkKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvd3JhcHBlci5weSBiL0xpYi9jdXJzZXMvd3JhcHBlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE4M2NlNy4uMDAwMDAwMAotLS0gYS9MaWIvY3Vyc2VzL3dyYXBwZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0iIiJjdXJzZXMud3JhcHBlcgotCi1Db250YWlucyBvbmUgZnVuY3Rpb24sIHdyYXBwZXIoKSwgd2hpY2ggcnVucyBhbm90aGVyIGZ1bmN0aW9uIHdoaWNoCi1zaG91bGQgYmUgdGhlIHJlc3Qgb2YgeW91ciBjdXJzZXMtYmFzZWQgYXBwbGljYXRpb24uICBJZiB0aGUKLWFwcGxpY2F0aW9uIHJhaXNlcyBhbiBleGNlcHRpb24sIHdyYXBwZXIoKSB3aWxsIHJlc3RvcmUgdGhlIHRlcm1pbmFsCi10byBhIHNhbmUgc3RhdGUgc28geW91IGNhbiByZWFkIHRoZSByZXN1bHRpbmcgdHJhY2ViYWNrLgotCi0iIiIKLQotaW1wb3J0IGN1cnNlcwotCi1kZWYgd3JhcHBlcihmdW5jLCAqYXJncywgKiprd2RzKToKLSAgICAiIiJXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgaW5pdGlhbGl6ZXMgY3Vyc2VzIGFuZCBjYWxscyBhbm90aGVyIGZ1bmN0aW9uLAotICAgIHJlc3RvcmluZyBub3JtYWwga2V5Ym9hcmQvc2NyZWVuIGJlaGF2aW9yIG9uIGVycm9yLgotICAgIFRoZSBjYWxsYWJsZSBvYmplY3QgJ2Z1bmMnIGlzIHRoZW4gcGFzc2VkIHRoZSBtYWluIHdpbmRvdyAnc3Rkc2NyJwotICAgIGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgZm9sbG93ZWQgYnkgYW55IG90aGVyIGFyZ3VtZW50cyBwYXNzZWQgdG8KLSAgICB3cmFwcGVyKCkuCi0gICAgIiIiCi0KLSAgICB0cnk6Ci0gICAgICAgICMgSW5pdGlhbGl6ZSBjdXJzZXMKLSAgICAgICAgc3Rkc2NyID0gY3Vyc2VzLmluaXRzY3IoKQotCi0gICAgICAgICMgVHVybiBvZmYgZWNob2luZyBvZiBrZXlzLCBhbmQgZW50ZXIgY2JyZWFrIG1vZGUsCi0gICAgICAgICMgd2hlcmUgbm8gYnVmZmVyaW5nIGlzIHBlcmZvcm1lZCBvbiBrZXlib2FyZCBpbnB1dAotICAgICAgICBjdXJzZXMubm9lY2hvKCkKLSAgICAgICAgY3Vyc2VzLmNicmVhaygpCi0KLSAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Igc3BlY2lhbCBrZXlzCi0gICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJlIGludGVycHJldGVkIGFuZAotICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNlcy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCi0gICAgICAgIHN0ZHNjci5rZXlwYWQoMSkKLQotICAgICAgICAjIFN0YXJ0IGNvbG9yLCB0b28uICBIYXJtbGVzcyBpZiB0aGUgdGVybWluYWwgZG9lc24ndCBoYXZlCi0gICAgICAgICMgY29sb3I7IHVzZXIgY2FuIHRlc3Qgd2l0aCBoYXNfY29sb3IoKSBsYXRlciBvbi4gIFRoZSB0cnkvY2F0Y2gKLSAgICAgICAgIyB3b3JrcyBhcm91bmQgYSBtaW5vciBiaXQgb2Ygb3Zlci1jb25zY2llbnRpb3VzbmVzcyBpbiB0aGUgY3Vyc2VzCi0gICAgICAgICMgbW9kdWxlIC0tIHRoZSBlcnJvciByZXR1cm4gZnJvbSBDIHN0YXJ0X2NvbG9yKCkgaXMgaWdub3JhYmxlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjdXJzZXMuc3RhcnRfY29sb3IoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmV0dXJuIGZ1bmMoc3Rkc2NyLCAqYXJncywgKiprd2RzKQotICAgIGZpbmFsbHk6Ci0gICAgICAgICMgU2V0IGV2ZXJ5dGhpbmcgYmFjayB0byBub3JtYWwKLSAgICAgICAgaWYgJ3N0ZHNjcicgaW4gbG9jYWxzKCk6Ci0gICAgICAgICAgICBzdGRzY3Iua2V5cGFkKDApCi0gICAgICAgICAgICBjdXJzZXMuZWNobygpCi0gICAgICAgICAgICBjdXJzZXMubm9jYnJlYWsoKQotICAgICAgICAgICAgY3Vyc2VzLmVuZHdpbigpCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggYmYyM2U1MC4uZjUwNmU5YSAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTcyLDEwICsxNzIsNiBAQAogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgotICAgIHllYXIgPSB0aW1ldHVwbGVbMF0KLSAgICBpZiB5ZWFyIDwgMTAwMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigieWVhcj0lZCBpcyBiZWZvcmUgMTAwMDsgdGhlIGRhdGV0aW1lIHN0cmZ0aW1lKCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIHJlcXVpcmUgeWVhciA+PSAxMDAwIiAlIHllYXIpCiAgICAgIyBEb24ndCBjYWxsIHV0Y29mZnNldCgpIG9yIHR6bmFtZSgpIHVubGVzcyBhY3R1YWxseSBuZWVkZWQuCiAgICAgZnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCiAgICAgenJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICV6CkBAIC0xMDY5LDEzICsxMDY1LDEzIEBACiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSA9PSAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpICE9IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTExMDMsNyArMTA5OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfY21wZXJyb3Ioc2VsZiwgb3RoZXIpCiAKLSAgICBkZWYgX2NtcChzZWxmLCBvdGhlcik6CisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIsIGFsbG93X21peGVkPUZhbHNlKToKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpCiAgICAgICAgIG15dHogPSBzZWxmLl90emluZm8KICAgICAgICAgb3R0eiA9IG90aGVyLl90emluZm8KQEAgLTExMjIsNyArMTExOCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5fbWljcm9zZWNvbmQpKQogICAgICAgICBpZiBteW9mZiBpcyBOb25lIG9yIG90b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSB0aW1lcyIpCisgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSB0aW1lcyIpCiAgICAgICAgIG15aGhtbSA9IHNlbGYuX2hvdXIgKiA2MCArIHNlbGYuX21pbnV0ZSAtIG15b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgICBvdGhobW0gPSBvdGhlci5faG91ciAqIDYwICsgb3RoZXIuX21pbnV0ZSAtIG90b2ZmLy90aW1lZGVsdGEobWludXRlcz0xKQogICAgICAgICByZXR1cm4gX2NtcCgobXloaG1tLCBzZWxmLl9zZWNvbmQsIHNlbGYuX21pY3Jvc2Vjb25kKSwKQEAgLTEzNjQsNyArMTM2Myw3IEBACiAgICAgICAgIGNvbnZlcnRlciA9IF90aW1lLmxvY2FsdGltZSBpZiB0eiBpcyBOb25lIGVsc2UgX3RpbWUuZ210aW1lCiAKICAgICAgICAgdCwgZnJhYyA9IGRpdm1vZCh0LCAxLjApCi0gICAgICAgIHVzID0gcm91bmQoZnJhYyAqIDFlNikKKyAgICAgICAgdXMgPSBpbnQoZnJhYyAqIDFlNikKIAogICAgICAgICAjIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCiAgICAgICAgICMgZnVsbCBzZWNvbmQsIHVzIGNhbiBiZSByb3VuZGVkIHVwIHRvIDEwMDAwMDAuICBJbiB0aGlzIGNhc2UsCkBAIC0xMzg0LDcgKzEzODMsNyBAQAogICAgIGRlZiB1dGNmcm9tdGltZXN0YW1wKGNscywgdCk6CiAgICAgICAgICJDb25zdHJ1Y3QgYSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuIgogICAgICAgICB0LCBmcmFjID0gZGl2bW9kKHQsIDEuMCkKLSAgICAgICAgdXMgPSByb3VuZChmcmFjICogMWU2KQorICAgICAgICB1cyA9IGludChmcmFjICogMWU2KQogCiAgICAgICAgICMgSWYgdGltZXN0YW1wIGlzIGxlc3MgdGhhbiBvbmUgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGEKICAgICAgICAgIyBmdWxsIHNlY29uZCwgdXMgY2FuIGJlIHJvdW5kZWQgdXAgdG8gMTAwMDAwMC4gIEluIHRoaXMgY2FzZSwKQEAgLTE0MzgsNiArMTQzNywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CisgICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgorICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfdGltZS5ta3RpbWUoKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEpKSArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZiAtIF9FUE9DSCkudG90YWxfc2Vjb25kcygpCisKICAgICBkZWYgdXRjdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFVUQyB0aW1lIHR1cGxlIGNvbXBhdGlibGUgd2l0aCB0aW1lLmdtdGltZSgpLiIKICAgICAgICAgb2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQpAQCAtMTQ4NSw4ICsxNDkzLDMyIEBACiAgICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQsIHR6aW5mbykKIAotICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CisgICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHo9Tm9uZSk6CisgICAgICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgICAgIGxvY2FsID0gZGF0ZXRpbWUoKmxvY2FsdG1bOjZdKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIGdtdG9mZiA9IGxvY2FsdG0udG1fZ210b2ZmCisgICAgICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgQ29tcHV0ZSBVVEMgb2Zmc2V0IGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIGltcGxpZWQKKyAgICAgICAgICAgICAgICAjIGJ5IHRtX2lzZHN0LiAgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUKKyAgICAgICAgICAgICAgICAjIGltcGxpZWQgYnkgdG1faXNkc3QuCisgICAgICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgICAgICBkc3QgPSBfdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtKF90aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgX3RpbWUudGltZXpvbmUpCisgICAgICAgICAgICAgICAgaWYgZGVsdGEgPT0gdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKKyAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgX3RpbWUudHpuYW1lW2RzdF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQorCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKIAogICAgICAgICBteXR6ID0gc2VsZi50emluZm8KQEAgLTE2MTAsNyArMTY0Miw3IEBACiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgPT0gMAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICBlbHNlOgpAQCAtMTYxOCw3ICsxNjUwLDcgQEAKIAogICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIGVsc2U6CkBAIC0xNjU2LDcgKzE2ODgsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2NtcGVycm9yKHNlbGYsIG90aGVyKQogCi0gICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgorICAgIGRlZiBfY21wKHNlbGYsIG90aGVyLCBhbGxvd19taXhlZD1GYWxzZSk6CiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSkKICAgICAgICAgbXl0eiA9IHNlbGYuX3R6aW5mbwogICAgICAgICBvdHR6ID0gb3RoZXIuX3R6aW5mbwpAQCAtMTY2NSwxMCArMTY5Nyw4IEBACiAgICAgICAgIGlmIG15dHogaXMgb3R0ejoKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG15dHogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCi0gICAgICAgICAgICBpZiBvdHR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG90b2ZmID0gb3RoZXIudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQogICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gbXlvZmYgPT0gb3RvZmYKIAogICAgICAgICBpZiBiYXNlX2NvbXBhcmU6CkBAIC0xNjc5LDcgKzE3MDksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgZGF0ZXRpbWVzIikKKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIGRhdGV0aW1lcyIpCiAgICAgICAgICMgWFhYIFdoYXQgZm9sbG93cyBjb3VsZCBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHkuLi4KICAgICAgICAgZGlmZiA9IHNlbGYgLSBvdGhlciAgICAgIyB0aGlzIHdpbGwgdGFrZSBvZmZzZXRzIGludG8gYWNjb3VudAogICAgICAgICBpZiBkaWZmLmRheXMgPCAwOgpAQCAtMTg5NSw3ICsxOTI4LDcgQEAKIHRpbWV6b25lLnV0YyA9IHRpbWV6b25lLl9jcmVhdGUodGltZWRlbHRhKDApKQogdGltZXpvbmUubWluID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lem9uZS5fbWlub2Zmc2V0KQogdGltZXpvbmUubWF4ID0gdGltZXpvbmUuX2NyZWF0ZSh0aW1lem9uZS5fbWF4b2Zmc2V0KQotCitfRVBPQ0ggPSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKQogIiIiCiBTb21lIHRpbWUgem9uZSBhbGdlYnJhLiAgRm9yIGEgZGF0ZXRpbWUgeCwgbGV0CiAgICAgeC5uID0geCBzdHJpcHBlZCBvZiBpdHMgdGltZXpvbmUgLS0gaXRzIG5haXZlIHRpbWUuCmRpZmYgLS1naXQgYS9MaWIvZGVjaW1hbC5weSBiL0xpYi9kZWNpbWFsLnB5CmluZGV4IDQ5ZGU1MzUuLmI3NGFiMDEgMTAwNjQ0Ci0tLSBhL0xpYi9kZWNpbWFsLnB5CisrKyBiL0xpYi9kZWNpbWFsLnB5CkBAIC00Niw4ICs0Niw4IEBACiBEZWNpbWFsKCctMC4wMTIzJykKID4+PiBEZWNpbWFsKDEyMzQ1NikKIERlY2ltYWwoJzEyMzQ1NicpCi0+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4OTAxMjM0NTY3ODkwJykKLURlY2ltYWwoJzEuMjM0NUUrMTIzNDU2Nzg5MDEyMzQ1Njc4OTInKQorPj4+IERlY2ltYWwoJzEyMy40NWUxMjM0NTY3OCcpCitEZWNpbWFsKCcxLjIzNDVFKzEyMzQ1NjgwJykKID4+PiBEZWNpbWFsKCcxLjMzJykgKyBEZWNpbWFsKCcxLjI3JykKIERlY2ltYWwoJzIuNjAnKQogPj4+IERlY2ltYWwoJzEyLjM0JykgKyBEZWNpbWFsKCczLjg3JykgLSBEZWNpbWFsKCcxOC40MScpCkBAIC0xMjIsMTMgKzEyMiwyMCBAQAogICAgICMgRXhjZXB0aW9ucwogICAgICdEZWNpbWFsRXhjZXB0aW9uJywgJ0NsYW1wZWQnLCAnSW52YWxpZE9wZXJhdGlvbicsICdEaXZpc2lvbkJ5WmVybycsCiAgICAgJ0luZXhhY3QnLCAnUm91bmRlZCcsICdTdWJub3JtYWwnLCAnT3ZlcmZsb3cnLCAnVW5kZXJmbG93JywKKyAgICAnRmxvYXRPcGVyYXRpb24nLAogCiAgICAgIyBDb25zdGFudHMgZm9yIHVzZSBpbiBzZXR0aW5nIHVwIGNvbnRleHRzCiAgICAgJ1JPVU5EX0RPV04nLCAnUk9VTkRfSEFMRl9VUCcsICdST1VORF9IQUxGX0VWRU4nLCAnUk9VTkRfQ0VJTElORycsCiAgICAgJ1JPVU5EX0ZMT09SJywgJ1JPVU5EX1VQJywgJ1JPVU5EX0hBTEZfRE9XTicsICdST1VORF8wNVVQJywKIAogICAgICMgRnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgY29udGV4dHMKLSAgICAnc2V0Y29udGV4dCcsICdnZXRjb250ZXh0JywgJ2xvY2FsY29udGV4dCcKKyAgICAnc2V0Y29udGV4dCcsICdnZXRjb250ZXh0JywgJ2xvY2FsY29udGV4dCcsCisKKyAgICAjIExpbWl0cyBmb3IgdGhlIEMgdmVyc2lvbiBmb3IgY29tcGF0aWJpbGl0eQorICAgICdNQVhfUFJFQycsICAnTUFYX0VNQVgnLCAnTUlOX0VNSU4nLCAnTUlOX0VUSU5ZJywKKworICAgICMgQyB2ZXJzaW9uOiBjb21waWxlIHRpbWUgY2hvaWNlIHRoYXQgZW5hYmxlcyB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQKKyAgICAnSEFWRV9USFJFQURTJwogXQogCiBfX3ZlcnNpb25fXyA9ICcxLjcwJyAgICAjIEhpZ2hlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGlzIGNvbXBsaWVzIHdpdGgKQEAgLTEzNyw2ICsxNDQsNyBAQAogaW1wb3J0IGNvcHkgYXMgX2NvcHkKIGltcG9ydCBtYXRoIGFzIF9tYXRoCiBpbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycworaW1wb3J0IHN5cwogCiB0cnk6CiAgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQpAQCAtMTU0LDYgKzE2MiwxOSBAQAogUk9VTkRfSEFMRl9ET1dOID0gJ1JPVU5EX0hBTEZfRE9XTicKIFJPVU5EXzA1VVAgPSAnUk9VTkRfMDVVUCcKIAorIyBDb21wYXRpYmlsaXR5IHdpdGggdGhlIEMgdmVyc2lvbgorSEFWRV9USFJFQURTID0gVHJ1ZQoraWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKKyAgICBNQVhfUFJFQyA9IDk5OTk5OTk5OTk5OTk5OTk5OQorICAgIE1BWF9FTUFYID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUlOX0VNSU4gPSAtOTk5OTk5OTk5OTk5OTk5OTk5CitlbHNlOgorICAgIE1BWF9QUkVDID0gNDI1MDAwMDAwCisgICAgTUFYX0VNQVggPSA0MjUwMDAwMDAKKyAgICBNSU5fRU1JTiA9IC00MjUwMDAwMDAKKworTUlOX0VUSU5ZID0gTUlOX0VNSU4gLSAoTUFYX1BSRUMtMSkKKwogIyBFcnJvcnMKIAogY2xhc3MgRGVjaW1hbEV4Y2VwdGlvbihBcml0aG1ldGljRXJyb3IpOgpAQCAtMzcwLDkgKzM5MSwyNCBAQAogICAgIEluIGFsbCBjYXNlcywgSW5leGFjdCwgUm91bmRlZCwgYW5kIFN1Ym5vcm1hbCB3aWxsIGFsc28gYmUgcmFpc2VkLgogICAgICIiIgogCitjbGFzcyBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBUeXBlRXJyb3IpOgorICAgICIiIkVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSBEZWNpbWFsKCkgY29uc3RydWN0b3IsIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKSBhbmQKKyAgICBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LgorICAgIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcKKyAgICBGbG9hdE9wZXJhdGlvbiBpbiB0aGUgY29udGV4dCBmbGFncy4gIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGgKKyAgICBEZWNpbWFsLmZyb21fZmxvYXQoKSBvciBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSBkbyBub3QKKyAgICBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgRmxvYXRPcGVyYXRpb24uCisgICAgIiIiCisKICMgTGlzdCBvZiBwdWJsaWMgdHJhcHMgYW5kIGZsYWdzCiBfc2lnbmFscyA9IFtDbGFtcGVkLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQsCi0gICAgICAgICAgIFVuZGVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgU3Vibm9ybWFsXQorICAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWwsIEZsb2F0T3BlcmF0aW9uXQogCiAjIE1hcCBjb25kaXRpb25zIChwZXIgdGhlIHNwZWMpIHRvIHNpZ25hbHMKIF9jb25kaXRpb25fbWFwID0ge0NvbnZlcnNpb25TeW50YXg6SW52YWxpZE9wZXJhdGlvbiwKQEAgLTM4MCw2ICs0MTYsMTAgQEAKICAgICAgICAgICAgICAgICAgIERpdmlzaW9uVW5kZWZpbmVkOkludmFsaWRPcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICBJbnZhbGlkQ29udGV4dDpJbnZhbGlkT3BlcmF0aW9ufQogCisjIFZhbGlkIHJvdW5kaW5nIG1vZGVzCitfcm91bmRpbmdfbW9kZXMgPSAoUk9VTkRfRE9XTiwgUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLCBST1VORF9DRUlMSU5HLAorICAgICAgICAgICAgICAgICAgIFJPVU5EX0ZMT09SLCBST1VORF9VUCwgUk9VTkRfSEFMRl9ET1dOLCBST1VORF8wNVVQKQorCiAjIyMjIyBDb250ZXh0IEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIFRoZSBnZXRjb250ZXh0KCkgYW5kIHNldGNvbnRleHQoKSBmdW5jdGlvbiBtYW5hZ2UgYWNjZXNzIHRvIGEgdGhyZWFkLWxvY2FsCkBAIC0zOTIsMTIgKzQzMiwxMSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAjIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWRzOyBjcmVhdGUgYSBtb2NrIG9iamVjdCBpbnN0ZWFkCi0gICAgaW1wb3J0IHN5cwogICAgIGNsYXNzIE1vY2tUaHJlYWRpbmcob2JqZWN0KToKICAgICAgICAgZGVmIGxvY2FsKHNlbGYsIHN5cz1zeXMpOgogICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW19fbmFtZV9fXQogICAgIHRocmVhZGluZyA9IE1vY2tUaHJlYWRpbmcoKQotICAgIGRlbCBzeXMsIE1vY2tUaHJlYWRpbmcKKyAgICBkZWwgTW9ja1RocmVhZGluZwogCiB0cnk6CiAgICAgdGhyZWFkaW5nLmxvY2FsCkBAIC02NTAsNiArNjg5LDExIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGZsb2F0KToKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihGbG9hdE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAic3RyaWN0IHNlbWFudGljcyBmb3IgbWl4aW5nIGZsb2F0cyBhbmQgRGVjaW1hbHMgYXJlICIKKyAgICAgICAgICAgICAgICAiZW5hYmxlZCIpCiAgICAgICAgICAgICB2YWx1ZSA9IERlY2ltYWwuZnJvbV9mbG9hdCh2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuX2V4cCAgPSB2YWx1ZS5fZXhwCiAgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuX3NpZ24KQEAgLTY4NCw3ICs3MjgsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBpbnQpOiAgICAgICAgICAgICAgICAjIGhhbmRsZSBpbnRlZ2VyIGlucHV0cwogICAgICAgICAgICAgcmV0dXJuIGNscyhmKQotICAgICAgICBpZiBfbWF0aC5pc2luZihmKSBvciBfbWF0aC5pc25hbihmKTogICMgcmFpc2VzIFR5cGVFcnJvciBpZiBub3QgYSBmbG9hdAorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0LiIpCisgICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOgogICAgICAgICAgICAgcmV0dXJuIGNscyhyZXByKGYpKQogICAgICAgICBpZiBfbWF0aC5jb3B5c2lnbigxLjAsIGYpID09IDEuMDoKICAgICAgICAgICAgIHNpZ24gPSAwCkBAIC0xODc3LDYgKzE5MjMsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisgICAgICAgIHRoaXJkID0gX2NvbnZlcnRfb3RoZXIodGhpcmQsIHJhaXNlaXQ9VHJ1ZSkKIAogICAgICAgICAjIGNvbXB1dGUgcHJvZHVjdDsgcmFpc2UgSW52YWxpZE9wZXJhdGlvbiBpZiBlaXRoZXIgb3BlcmFuZCBpcwogICAgICAgICAjIGEgc2lnbmFsaW5nIE5hTiBvciBpZiB0aGUgcHJvZHVjdCBpcyB6ZXJvIHRpbWVzIGluZmluaXR5LgpAQCAtMTkwNiwxNyArMTk1MywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogaW50KG90aGVyLl9pbnQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCArIG90aGVyLl9leHApCiAKLSAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQogICAgICAgICByZXR1cm4gcHJvZHVjdC5fX2FkZF9fKHRoaXJkLCBjb250ZXh0KQogCiAgICAgZGVmIF9wb3dlcl9tb2R1bG8oc2VsZiwgb3RoZXIsIG1vZHVsbywgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiVGhyZWUgYXJndW1lbnQgdmVyc2lvbiBvZiBfX3Bvd19fIiIiCiAKLSAgICAgICAgIyBpZiBjYW4ndCBjb252ZXJ0IG90aGVyIGFuZCBtb2R1bG8gdG8gRGVjaW1hbCwgcmFpc2UKLSAgICAgICAgIyBUeXBlRXJyb3I7IHRoZXJlJ3Mgbm8gcG9pbnQgcmV0dXJuaW5nIE5vdEltcGxlbWVudGVkIChubwotICAgICAgICAjIGVxdWl2YWxlbnQgb2YgX19ycG93X18gZm9yIHRocmVlIGFyZ3VtZW50IHBvdykKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotICAgICAgICBtb2R1bG8gPSBfY29udmVydF9vdGhlcihtb2R1bG8sIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvKQorICAgICAgICBpZiBtb2R1bG8gaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gbW9kdWxvCiAKICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQpAQCAtMjAwNyw5ICsyMDU0LDkgQEAKICAgICAgICAgbm9uemVyby4gIEZvciBlZmZpY2llbmN5LCBvdGhlci5fZXhwIHNob3VsZCBub3QgYmUgdG9vIGxhcmdlLAogICAgICAgICBzbyB0aGF0IDEwKiphYnMob3RoZXIuX2V4cCkgaXMgYSBmZWFzaWJsZSBjYWxjdWxhdGlvbi4iIiIKIAotICAgICAgICAjIEluIHRoZSBjb21tZW50cyBiZWxvdywgd2Ugd3JpdGUgeCBmb3IgdGhlIHZhbHVlIG9mIHNlbGYgYW5kCi0gICAgICAgICMgeSBmb3IgdGhlIHZhbHVlIG9mIG90aGVyLiAgV3JpdGUgeCA9IHhjKjEwKip4ZSBhbmQgeSA9Ci0gICAgICAgICMgeWMqMTAqKnllLgorICAgICAgICAjIEluIHRoZSBjb21tZW50cyBiZWxvdywgd2Ugd3JpdGUgeCBmb3IgdGhlIHZhbHVlIG9mIHNlbGYgYW5kIHkgZm9yIHRoZQorICAgICAgICAjIHZhbHVlIG9mIG90aGVyLiAgV3JpdGUgeCA9IHhjKjEwKip4ZSBhbmQgYWJzKHkpID0geWMqMTAqKnllLCB3aXRoIHhjCisgICAgICAgICMgYW5kIHljIHBvc2l0aXZlIGludGVnZXJzIG5vdCBkaXZpc2libGUgYnkgMTAuCiAKICAgICAgICAgIyBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgbWV0aG9kIGlzIHRvIGlkZW50aWZ5IHRoZSAqZmFpbHVyZSoKICAgICAgICAgIyBvZiB4Kip5IHRvIGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSB3aXRoIGFzIGxpdHRsZSBlZmZvcnQgYXMKQEAgLTIwMTcsMTMgKzIwNjQsMTIgQEAKICAgICAgICAgIyBlbGltaW5hdGUgdGhlIHBvc3NpYmlsaXR5IG9mIHgqKnkgYmVpbmcgZXhhY3QuICBPbmx5IGlmIGFsbAogICAgICAgICAjIHRoZXNlIHRlc3RzIGFyZSBwYXNzZWQgZG8gd2UgZ28gb24gdG8gYWN0dWFsbHkgY29tcHV0ZSB4Kip5LgogCi0gICAgICAgICMgSGVyZSdzIHRoZSBtYWluIGlkZWEuICBGaXJzdCBub3JtYWxpemUgYm90aCB4IGFuZCB5LiAgV2UKLSAgICAgICAgIyBleHByZXNzIHkgYXMgYSByYXRpb25hbCBtL24sIHdpdGggbSBhbmQgbiByZWxhdGl2ZWx5IHByaW1lCi0gICAgICAgICMgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIChhdAotICAgICAgICAjICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhIHBvc2l0aXZlCi0gICAgICAgICMgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIG0gaXMgbmVnYXRpdmUKLSAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UKLSAgICAgICAgIyBhIHBvd2VyIG9mIDIqKm4gb3IgNSoqbi4KKyAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG51bWJlciBtL24sIHdpdGggbSBhbmQKKyAgICAgICAgIyBuIHJlbGF0aXZlbHkgcHJpbWUgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseQorICAgICAgICAjIHJlcHJlc2VudGFibGUgKGF0ICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhCisgICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIHkgaXMgbmVnYXRpdmUKKyAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UgYSBwb3dlcgorICAgICAgICAjIG9mIDIqKm4gb3IgNSoqbi4KICAgICAgICAgIwogICAgICAgICAjIFRoZXJlJ3MgYSBsaW1pdCB0byBob3cgc21hbGwgfHl8IGNhbiBiZTogaWYgeT1tL24gYXMgYWJvdmUKICAgICAgICAgIyB0aGVuOgpAQCAtMjA5NSwyMSArMjE0MSw0MyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgICMgbm93IHhjIGlzIGEgcG93ZXIgb2YgMjsgZSBpcyBpdHMgZXhwb25lbnQKICAgICAgICAgICAgICAgICBlID0gX25iaXRzKHhjKS0xCi0gICAgICAgICAgICAgICAgIyBmaW5kIGUqeSBhbmQgeGUqeTsgYm90aCBtdXN0IGJlIGludGVnZXJzCi0gICAgICAgICAgICAgICAgaWYgeWUgPj0gMDoKLSAgICAgICAgICAgICAgICAgICAgeV9hc19pbnQgPSB5YyoxMCoqeWUKLSAgICAgICAgICAgICAgICAgICAgZSA9IGUqeV9hc19pbnQKLSAgICAgICAgICAgICAgICAgICAgeGUgPSB4ZSp5X2FzX2ludAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlbl9wb3cgPSAxMCoqLXllCi0gICAgICAgICAgICAgICAgICAgIGUsIHJlbWFpbmRlciA9IGRpdm1vZChlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgICAgICB4ZSwgcmVtYWluZGVyID0gZGl2bW9kKHhlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgICAgICAgICAgICAgaWYgZSo2NSA+PSBwKjkzOiAjIDkzLzY1ID4gbG9nKDEwKS9sb2coNSkKKyAgICAgICAgICAgICAgICAjIFdlIG5vdyBoYXZlOgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgeCA9IDIqKmUgKiAxMCoqeGUsIGUgPiAwLCBhbmQgeSA8IDAuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgVGhlIGV4YWN0IHJlc3VsdCBpczoKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHgqKnkgPSA1KiooLWUqeSkgKiAxMCoqKGUqeSArIHhlKnkpCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgcHJvdmlkZWQgdGhhdCBib3RoIGUqeSBhbmQgeGUqeSBhcmUgaW50ZWdlcnMuICBOb3RlIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAjIDUqKigtZSp5KSA+PSAxMCoqcCwgdGhlbiB0aGUgcmVzdWx0IGNhbid0IGJlIGV4cHJlc3NlZAorICAgICAgICAgICAgICAgICMgZXhhY3RseSB3aXRoIHAgZGlnaXRzIG9mIHByZWNpc2lvbi4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBVc2luZyB0aGUgYWJvdmUsIHdlIGNhbiBndWFyZCBhZ2FpbnN0IGxhcmdlIHZhbHVlcyBvZiB5ZS4KKyAgICAgICAgICAgICAgICAjIDkzLzY1IGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2coMTApL2xvZyg1KSwgc28gaWYKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHllID49IGxlbihzdHIoOTMqcC8vNjUpKQorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHRoZW4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIC1lKnkgPj0gLXkgPj0gMTAqKnllID4gOTMqcC82NSA+IHAqbG9nKDEwKS9sb2coNSksCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgc28gNSoqKC1lKnkpID49IDEwKipwLCBhbmQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQKKyAgICAgICAgICAgICAgICAjIGNhbid0IGJlIGV4cHJlc3NlZCBpbiBwIGRpZ2l0cy4KKworICAgICAgICAgICAgICAgICMgZW1heCA+PSBsYXJnZXN0IGUgc3VjaCB0aGF0IDUqKmUgPCAxMCoqcC4KKyAgICAgICAgICAgICAgICBlbWF4ID0gcCo5My8vNjUKKyAgICAgICAgICAgICAgICBpZiB5ZSA+PSBsZW4oc3RyKGVtYXgpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgICMgRmluZCAtZSp5IGFuZCAteGUqeTsgYm90aCBtdXN0IGJlIGludGVnZXJzCisgICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQorICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQorICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgeGMgPSA1KiplCiAKQEAgLTIxMjMsMTkgKzIxOTEsMjAgQEAKICAgICAgICAgICAgICAgICB3aGlsZSB4YyAlIDUgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgeGMgLy89IDUKICAgICAgICAgICAgICAgICAgICAgZSAtPSAxCi0gICAgICAgICAgICAgICAgaWYgeWUgPj0gMDoKLSAgICAgICAgICAgICAgICAgICAgeV9hc19pbnRlZ2VyID0geWMqMTAqKnllCi0gICAgICAgICAgICAgICAgICAgIGUgPSBlKnlfYXNfaW50ZWdlcgotICAgICAgICAgICAgICAgICAgICB4ZSA9IHhlKnlfYXNfaW50ZWdlcgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRlbl9wb3cgPSAxMCoqLXllCi0gICAgICAgICAgICAgICAgICAgIGUsIHJlbWFpbmRlciA9IGRpdm1vZChlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgICAgICB4ZSwgcmVtYWluZGVyID0gZGl2bW9kKHhlKnljLCB0ZW5fcG93KQotICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5kZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgICAgIGlmIGUqMyA+PSBwKjEwOiAjIDEwLzMgPiBsb2coMTApL2xvZygyKQorCisgICAgICAgICAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGxhcmdlIHZhbHVlcyBvZiB5ZSwgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgaW4KKyAgICAgICAgICAgICAgICAjIHRoZSAneGMgaXMgYSBwb3dlciBvZiAyJyBicmFuY2guICAxMC8zIGlzIGFuIHVwcGVyIGJvdW5kIGZvcgorICAgICAgICAgICAgICAgICMgbG9nKDEwKS9sb2coMikuCisgICAgICAgICAgICAgICAgZW1heCA9IHAqMTAvLzMKKyAgICAgICAgICAgICAgICBpZiB5ZSA+PSBsZW4oc3RyKGVtYXgpKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHhjID0gMioqZQogICAgICAgICAgICAgZWxzZToKQEAgLTM4MTYsMTEgKzM4ODUsOSBAQAogICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsCi0gICAgICAgICAgICAgICAgIEVtaW49Tm9uZSwgRW1heD1Ob25lLAotICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLAotICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CiAgICAgICAgICMgU2V0IGRlZmF1bHRzOyBmb3IgZXZlcnl0aGluZyBleGNlcHQgZmxhZ3MgYW5kIF9pZ25vcmVkX2ZsYWdzLAogICAgICAgICAjIGluaGVyaXQgZnJvbSBEZWZhdWx0Q29udGV4dC4KICAgICAgICAgdHJ5OgpAQCAtMzg0MywxNyArMzkxMCw3OCBAQAogICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzKQorICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRpY3QoKHMsIGludChzIGluIHRyYXBzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyB0cmFwcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudHJhcHMgPSB0cmFwcwogCiAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdC5mcm9ta2V5cyhfc2lnbmFscywgMCkKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmbGFncywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscykKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0KChzLCBpbnQocyBpbiBmbGFncykpIGZvciBzIGluIF9zaWduYWxzICsgZmxhZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKIAorICAgIGRlZiBfc2V0X2ludGVnZXJfY2hlY2soc2VsZiwgbmFtZSwgdmFsdWUsIHZtaW4sIHZtYXgpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhbiBpbnRlZ2VyIiAlIG5hbWUpCisgICAgICAgIGlmIHZtaW4gPT0gJy1pbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVzLCAlZF0uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxpZiB2bWF4ID09ICdpbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlc10uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbiBvciB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVkXS4gZ290ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKyAgICBkZWYgX3NldF9zaWduYWxfZGljdChzZWxmLCBuYW1lLCBkKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYSBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIGQ6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIGQpCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lID09ICdwcmVjJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMSwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1pbic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsICctaW5mJywgMCkKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWF4JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2FwaXRhbHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NsYW1wJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdyb3VuZGluZyc6CisgICAgICAgICAgICBpZiBub3QgdmFsdWUgaW4gX3JvdW5kaW5nX21vZGVzOgorICAgICAgICAgICAgICAgICMgcmFpc2UgVHlwZUVycm9yIGV2ZW4gZm9yIHN0cmluZ3MgdG8gaGF2ZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgICMgYW1vbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlczogaW52YWxpZCByb3VuZGluZyBtb2RlIiAlIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdmbGFncycgb3IgbmFtZSA9PSAndHJhcHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9zaWduYWxfZGljdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdfaWdub3JlZF9mbGFncyc6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIidkZWNpbWFsLkNvbnRleHQnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGNhbm5vdCBiZSBkZWxldGVkIiAlIG5hbWUpCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHRyYXBzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLAorICAgICAgICAgICAgICAgIChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBmbGFncywgdHJhcHMpKQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuIiIiCiAgICAgICAgIHMgPSBbXQpAQCAtMzg3Miw0MyArNDAwMCwyNyBAQAogICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgogICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKIAorICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKKyAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCisKICAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYudHJhcHMsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogCiAgICAgZGVmIGNvcHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLnRyYXBzLmNvcHkoKSwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCisgICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuY29weSgpLCBzZWxmLnRyYXBzLmNvcHkoKSwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCiAgICAgICAgIHJldHVybiBuYwogICAgIF9fY29weV9fID0gY29weQogCi0gICAgIyBfY2xhbXAgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggdGhpcmQtcGFydHkKLSAgICAjIGNvZGUuICBNYXkgYmUgcmVtb3ZlZCBpbiBQeXRob24gPj0gMy4zLgotICAgIGRlZiBfZ2V0X2NsYW1wKHNlbGYpOgotICAgICAgICAiX2NsYW1wIG1pcnJvcnMgdGhlIGNsYW1wIGF0dHJpYnV0ZS4gIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdVc2Ugb2YgdGhlIF9jbGFtcCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNsYW1wIGluc3RlYWQuJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHJldHVybiBzZWxmLmNsYW1wCi0KLSAgICBkZWYgX3NldF9jbGFtcChzZWxmLCBjbGFtcCk6Ci0gICAgICAgICJfY2xhbXAgbWlycm9ycyB0aGUgY2xhbXAgYXR0cmlidXRlLiAgSXRzIHVzZSBpcyBkZXByZWNhdGVkLiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ1VzZSBvZiB0aGUgX2NsYW1wIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSB1c2UgY2xhbXAgaW5zdGVhZC4nLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wCi0KLSAgICAjIGRvbid0IGJvdGhlciB3aXRoIF9kZWxfY2xhbXA7ICBubyBzYW5lIDNyZCBwYXJ0eSBjb2RlIHNob3VsZAotICAgICMgYmUgZGVsZXRpbmcgdGhlIF9jbGFtcCBhdHRyaWJ1dGUKLSAgICBfY2xhbXAgPSBwcm9wZXJ0eShfZ2V0X2NsYW1wLCBfc2V0X2NsYW1wKQotCiAgICAgZGVmIF9yYWlzZV9lcnJvcihzZWxmLCBjb25kaXRpb24sIGV4cGxhbmF0aW9uID0gTm9uZSwgKmFyZ3MpOgogICAgICAgICAiIiJIYW5kbGVzIGFuIGVycm9yCiAKQEAgLTQwNjgsNiArNDE4MCw4IEBACiAgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICAgRGVjaW1hbCgnMi41MCcpCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQogICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoY29udGV4dD1zZWxmKQogCiAgICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6CkBAIC00Mzc4LDYgKzQ0OTIsOCBAQAogICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCiAgICAgICAgIFRydWUKICAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGEsIERlY2ltYWwpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpc19jYW5vbmljYWwgcmVxdWlyZXMgYSBEZWNpbWFsIGFzIGFuIGFyZ3VtZW50LiIpCiAgICAgICAgIHJldHVybiBhLmlzX2Nhbm9uaWNhbCgpCiAKICAgICBkZWYgaXNfZmluaXRlKHNlbGYsIGEpOgpAQCAtNDk3MCw3ICs1MDg2LDcgQEAKICAgICAgICAgICArTm9ybWFsCiAgICAgICAgICAgK0luZmluaXR5CiAKLSAgICAgICAgPj4+IGMgPSBDb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCiAgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CiAgICAgICAgID4+PiBjLkVtYXggPSA5OTkKICAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCkBAIC01NTM1LDYgKzU2NTEsMjcgQEAKIAogX25iaXRzID0gaW50LmJpdF9sZW5ndGgKIAorZGVmIF9kZWNpbWFsX2xzaGlmdF9leGFjdChuLCBlKToKKyAgICAiIiIgR2l2ZW4gaW50ZWdlcnMgbiBhbmQgZSwgcmV0dXJuIG4gKiAxMCoqZSBpZiBpdCdzIGFuIGludGVnZXIsIGVsc2UgTm9uZS4KKworICAgIFRoZSBjb21wdXRhdGlvbiBpcyBkZXNpZ25lZCB0byBhdm9pZCBjb21wdXRpbmcgbGFyZ2UgcG93ZXJzIG9mIDEwCisgICAgdW5uZWNlc3NhcmlseS4KKworICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMywgNCkKKyAgICAzMDAwMAorICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMzAwLCAtOTk5OTk5OTk5KSAgIyByZXR1cm5zIE5vbmUKKworICAgICIiIgorICAgIGlmIG4gPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBlbGlmIGUgPj0gMDoKKyAgICAgICAgcmV0dXJuIG4gKiAxMCoqZQorICAgIGVsc2U6CisgICAgICAgICMgdmFsX24gPSBsYXJnZXN0IHBvd2VyIG9mIDEwIGRpdmlkaW5nIG4uCisgICAgICAgIHN0cl9uID0gc3RyKGFicyhuKSkKKyAgICAgICAgdmFsX24gPSBsZW4oc3RyX24pIC0gbGVuKHN0cl9uLnJzdHJpcCgnMCcpKQorICAgICAgICByZXR1cm4gTm9uZSBpZiB2YWxfbiA8IC1lIGVsc2UgbiAvLyAxMCoqLWUKKwogZGVmIF9zcXJ0X25lYXJlc3QobiwgYSk6CiAgICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcG9zaXRpdmUgaW50ZWdlciBuLiAgYSBpcwogICAgIGFuIGluaXRpYWwgYXBwcm94aW1hdGlvbiB0byB0aGUgc3F1YXJlIHJvb3QuICBBbnkgcG9zaXRpdmUgaW50ZWdlcgpAQCAtNTkwMSw2ICs2MDM4LDEyIEBACiAgICAgaWYgZXF1YWxpdHlfb3AgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLkNvbXBsZXgpIGFuZCBvdGhlci5pbWFnID09IDA6CiAgICAgICAgIG90aGVyID0gb3RoZXIucmVhbAogICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKKyAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiBlcXVhbGl0eV9vcDoKKyAgICAgICAgICAgIGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSBlbmFibGVkIikKICAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQsIE5vdEltcGxlbWVudGVkCiAKQEAgLTU5MTQsOCArNjA1Nyw4IEBACiAgICAgICAgIHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKICAgICAgICAgdHJhcHM9W0RpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgSW52YWxpZE9wZXJhdGlvbl0sCiAgICAgICAgIGZsYWdzPVtdLAotICAgICAgICBFbWF4PTk5OTk5OTk5OSwKLSAgICAgICAgRW1pbj0tOTk5OTk5OTk5LAorICAgICAgICBFbWF4PTk5OTk5OSwKKyAgICAgICAgRW1pbj0tOTk5OTk5LAogICAgICAgICBjYXBpdGFscz0xLAogICAgICAgICBjbGFtcD0wCiApCkBAIC02MDY1LDcgKzYyMDgsNyBAQAogICAgICMgaWYgZm9ybWF0IHR5cGUgaXMgJ2cnIG9yICdHJyB0aGVuIGEgcHJlY2lzaW9uIG9mIDAgbWFrZXMgbGl0dGxlCiAgICAgIyBzZW5zZTsgY29udmVydCBpdCB0byAxLiAgU2FtZSBpZiBmb3JtYXQgdHlwZSBpcyB1bnNwZWNpZmllZC4KICAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPT0gMDoKLSAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHJzoKKyAgICAgICAgaWYgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpcyBOb25lIG9yIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaW4gJ2dHbic6CiAgICAgICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSAxCiAKICAgICAjIGRldGVybWluZSB0aG91c2FuZHMgc2VwYXJhdG9yLCBncm91cGluZywgYW5kIGRlY2ltYWwgc2VwYXJhdG9yLCBhbmQKQEAgLTYyMzksMTYgKzYzODIsMjYgQEAKIAogIyBDb25zdGFudHMgcmVsYXRlZCB0byB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbjsgIGhhc2goeCkgaXMgYmFzZWQKICMgb24gdGhlIHJlZHVjdGlvbiBvZiB4IG1vZHVsbyBfUHlIQVNIX01PRFVMVVMKLWltcG9ydCBzeXMKIF9QeUhBU0hfTU9EVUxVUyA9IHN5cy5oYXNoX2luZm8ubW9kdWx1cwogIyBoYXNoIHZhbHVlcyB0byB1c2UgZm9yIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0aWVzLCBhbmQgbmFucwogX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgogX1B5SEFTSF9OQU4gPSBzeXMuaGFzaF9pbmZvLm5hbgotZGVsIHN5cwogCiAjIF9QeUhBU0hfMTBJTlYgaXMgdGhlIGludmVyc2Ugb2YgMTAgbW9kdWxvIHRoZSBwcmltZSBfUHlIQVNIX01PRFVMVVMKIF9QeUhBU0hfMTBJTlYgPSBwb3coMTAsIF9QeUhBU0hfTU9EVUxVUyAtIDIsIF9QeUhBU0hfTU9EVUxVUykKK2RlbCBzeXMKIAordHJ5OgorICAgIGltcG9ydCBfZGVjaW1hbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgczEgPSBzZXQoZGlyKCkpCisgICAgczIgPSBzZXQoZGlyKF9kZWNpbWFsKSkKKyAgICBmb3IgbmFtZSBpbiBzMSAtIHMyOgorICAgICAgICBkZWwgZ2xvYmFscygpW25hbWVdCisgICAgZGVsIHMxLCBzMiwgbmFtZQorICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0ICoKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgZG9jdGVzdCwgZGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCBlNmNjNmVlLi5hZTM3N2Q3IDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMjA0LDcgKzIwNCw3IEBACiAgICAgICAgICMgICAgICByZXR1cm5pbmcgdHJ1ZSBpZmYgdGhlIGVsZW1lbnQgaXMgImp1bmsiIC0tIHRoaXMgaGFzCiAgICAgICAgICMgICAgICBzdWJ0bGUgYnV0IGhlbHBmdWwgZWZmZWN0cyBvbiB0aGUgYWxnb3JpdGhtLCB3aGljaCBJJ2xsCiAgICAgICAgICMgICAgICBnZXQgYXJvdW5kIHRvIHdyaXRpbmcgdXAgc29tZWRheSA8MC45IHdpbms+LgotICAgICAgICAjICAgICAgRE9OJ1QgVVNFISAgT25seSBfX2NoYWluX2IgdXNlcyB0aGlzLiAgVXNlIGlzYmp1bmsuCisgICAgICAgICMgICAgICBET04nVCBVU0UhICBPbmx5IF9fY2hhaW5fYiB1c2VzIHRoaXMuICBVc2UgImluIHNlbGYuYmp1bmsiLgogICAgICAgICAjIGJqdW5rCiAgICAgICAgICMgICAgICB0aGUgaXRlbXMgaW4gYiBmb3Igd2hpY2ggaXNqdW5rIGlzIFRydWUuCiAgICAgICAgICMgYnBvcHVsYXIKQEAgLTI4Nyw3ICsyODcsNiBAQAogICAgICMgd2hlbiBzZWxmLmlzanVuayBpcyBkZWZpbmVkLCBqdW5rIGVsZW1lbnRzIGRvbid0IHNob3cgdXAgaW4gdGhpcwogICAgICMgbWFwIGF0IGFsbCwgd2hpY2ggc3RvcHMgdGhlIGNlbnRyYWwgZmluZF9sb25nZXN0X21hdGNoIG1ldGhvZAogICAgICMgZnJvbSBzdGFydGluZyBhbnkgbWF0Y2hpbmcgYmxvY2sgYXQgYSBqdW5rIGVsZW1lbnQgLi4uCi0gICAgIyBhbHNvIGNyZWF0ZXMgdGhlIGZhc3QgaXNianVuayBmdW5jdGlvbiAuLi4KICAgICAjIGIyaiBhbHNvIGRvZXMgbm90IGNvbnRhaW4gZW50cmllcyBmb3IgInBvcHVsYXIiIGVsZW1lbnRzLCBtZWFuaW5nCiAgICAgIyBlbGVtZW50cyB0aGF0IGFjY291bnQgZm9yIG1vcmUgdGhhbiAxICsgMSUgb2YgdGhlIHRvdGFsIGVsZW1lbnRzLCBhbmQKICAgICAjIHdoZW4gdGhlIHNlcXVlbmNlIGlzIHJlYXNvbmFibHkgbGFyZ2UgKD49IDIwMCBlbGVtZW50cyk7IHRoaXMgY2FuCkBAIC04MDAsNyArNzk5LDcgQEAKICAgICAuLi4gICAyLiBFeHBsaWNpdCBpcyBiZXR0ZXIgdGhhbiBpbXBsaWNpdC4KICAgICAuLi4gICAzLiBTaW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KICAgICAuLi4gICA0LiBDb21wbGV4IGlzIGJldHRlciB0aGFuIGNvbXBsaWNhdGVkLgotICAgIC4uLiAnJycuc3BsaXRsaW5lcygxKQorICAgIC4uLiAnJycuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgID4+PiBsZW4odGV4dDEpCiAgICAgNAogICAgID4+PiB0ZXh0MVswXVstMV0KQEAgLTgwOSw3ICs4MDgsNyBAQAogICAgIC4uLiAgIDMuICAgU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICAgLi4uICAgNC4gQ29tcGxpY2F0ZWQgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KICAgICAuLi4gICA1LiBGbGF0IGlzIGJldHRlciB0aGFuIG5lc3RlZC4KLSAgICAuLi4gJycnLnNwbGl0bGluZXMoMSkKKyAgICAuLi4gJycnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKIAogICAgIE5leHQgd2UgaW5zdGFudGlhdGUgYSBEaWZmZXIgb2JqZWN0OgogCkBAIC04OTYsOCArODk1LDggQEAKIAogICAgICAgICBFeGFtcGxlOgogCi0gICAgICAgID4+PiBwcmludCgnJy5qb2luKERpZmZlcigpLmNvbXBhcmUoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKDEpLAotICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKDEpKSksCisgICAgICAgID4+PiBwcmludCgnJy5qb2luKERpZmZlcigpLmNvbXBhcmUoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKFRydWUpLAorICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKFRydWUpKSksCiAgICAgICAgIC4uLiAgICAgICBlbmQ9IiIpCiAgICAgICAgIC0gb25lCiAgICAgICAgID8gIF4KQEAgLTEyNjksOCArMTI2OCw4IEBACiAKICAgICBFeGFtcGxlOgogCi0gICAgPj4+IHByaW50KCcnLmpvaW4oY29udGV4dF9kaWZmKCdvbmVcbnR3b1xudGhyZWVcbmZvdXJcbicuc3BsaXRsaW5lcygxKSwKLSAgICAuLi4gICAgICAgJ3plcm9cbm9uZVxudHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKDEpLCAnT3JpZ2luYWwnLCAnQ3VycmVudCcpKSwKKyAgICA+Pj4gcHJpbnQoJycuam9pbihjb250ZXh0X2RpZmYoJ29uZVxudHdvXG50aHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKFRydWUpLAorICAgIC4uLiAgICAgICAnemVyb1xub25lXG50cmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoVHJ1ZSksICdPcmlnaW5hbCcsICdDdXJyZW50JykpLAogICAgIC4uLiAgICAgICBlbmQ9IiIpCiAgICAgKioqIE9yaWdpbmFsCiAgICAgLS0tIEN1cnJlbnQKQEAgLTEzMzksOCArMTMzOCw4IEBACiAKICAgICBFeGFtcGxlOgogCi0gICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoMSksCi0gICAgLi4uICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcygxKSkKKyAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSwKKyAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgID4+PiBwcmludCgnJy5qb2luKGRpZmYpLCBlbmQ9IiIpCiAgICAgLSBvbmUKICAgICA/ICBeCkBAIC0yMDM0LDggKzIwMzMsOCBAQAogCiAgICAgRXhhbXBsZXM6CiAKLSAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcygxKSwKLSAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKDEpKQorICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpLAorICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAgICAgPj4+IGRpZmYgPSBsaXN0KGRpZmYpCiAgICAgPj4+IHByaW50KCcnLmpvaW4ocmVzdG9yZShkaWZmLCAxKSksIGVuZD0iIikKICAgICBvbmUKZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IGY2NGJhZTYuLjU0M2ZkYzcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMTkwLDYgKzE5MCw5IEBACiAgICAgICAgICAgICAgICAgaWYgZnJlZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBmcmVlID0gY28uY29fY2VsbHZhcnMgKyBjby5jb19mcmVldmFycwogICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGZyZWVbb3BhcmddICsgJyknLCBlbmQ9JyAnKQorICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKKyAgICAgICAgICAgICAgICBwcmludCgnKCVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciknCisgICAgICAgICAgICAgICAgICAgICAgJSAoY29kZVtpLTJdLCBjb2RlW2ktMV0pLCBlbmQ9JyAnKQogICAgICAgICBwcmludCgpCiAKIGRlZiBfZGlzYXNzZW1ibGVfYnl0ZXMoY29kZSwgbGFzdGk9LTEsIHZhcm5hbWVzPU5vbmUsIG5hbWVzPU5vbmUsCkBAIC0yMjksNiArMjMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyglZCknICUgb3BhcmcsIGVuZD0nICcpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2NvbXBhcmU6CiAgICAgICAgICAgICAgICAgcHJpbnQoJygnICsgY21wX29wW29wYXJnXSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFyZ3M6CisgICAgICAgICAgICAgICAgcHJpbnQoJyglZCBwb3NpdGlvbmFsLCAlZCBrZXl3b3JkIHBhaXIpJworICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGVbaS0yXSwgY29kZVtpLTFdKSwgZW5kPScgJykKICAgICAgICAgcHJpbnQoKQogCiBkZWYgX2Rpc2Fzc2VtYmxlX3N0cihzb3VyY2UpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weSBiL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKaW5kZXggYjUyYTlmZS4uMzQ1YWM0ZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQorKysgYi9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CkBAIC0xMyw1ICsxMyw1IEBACiAjIFVwZGF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUgUHl0aG9uIHJlbGVhc2UgcHJvY2Vzcy4KICMKICMtLXN0YXJ0IGNvbnN0YW50cy0tCi1fX3ZlcnNpb25fXyA9ICIzLjIuMyIKK19fdmVyc2lvbl9fID0gIjMuMy4wIgogIy0tZW5kIGNvbnN0YW50cy0tCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IGUzZWQzYWQuLjk1OWE4YmYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0yNjUsMTEgKzI2NSwxMSBAQAogICAgICAgICBjZmdkYXRhID0gY2ZnZGF0YSArIGIiXDAiCiAgICAgICAgIGlmIHNlbGYucHJlX2luc3RhbGxfc2NyaXB0OgogICAgICAgICAgICAgIyBXZSBuZWVkIHRvIG5vcm1hbGl6ZSBuZXdsaW5lcywgc28gd2Ugb3BlbiBpbiB0ZXh0IG1vZGUgYW5kCi0gICAgICAgICAgICAjIGNvbnZlcnQgYmFjayB0byBieXRlcy4gImxhdGluMSIgc2ltcGx5IGF2b2lkcyBhbnkgcG9zc2libGUKKyAgICAgICAgICAgICMgY29udmVydCBiYWNrIHRvIGJ5dGVzLiAibGF0aW4tMSIgc2ltcGx5IGF2b2lkcyBhbnkgcG9zc2libGUKICAgICAgICAgICAgICMgZmFpbHVyZXMuCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcmVfaW5zdGFsbF9zY3JpcHQsICJyIiwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0ibGF0aW4xIikgYXMgc2NyaXB0OgotICAgICAgICAgICAgICAgIHNjcmlwdF9kYXRhID0gc2NyaXB0LnJlYWQoKS5lbmNvZGUoImxhdGluMSIpCisgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImxhdGluLTEiKSBhcyBzY3JpcHQ6CisgICAgICAgICAgICAgICAgc2NyaXB0X2RhdGEgPSBzY3JpcHQucmVhZCgpLmVuY29kZSgibGF0aW4tMSIpCiAgICAgICAgICAgICBjZmdkYXRhID0gY2ZnZGF0YSArIHNjcmlwdF9kYXRhICsgYiJcblwwIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBlbXB0eSBwcmUtaW5zdGFsbCBzY3JpcHQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IDM0YjYxYmQuLmYxNmUyZjEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtOCw2ICs4LDcgQEAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IENvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgKgogZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBjdXN0b21pemVfY29tcGlsZXIsIGdldF9weXRob25fdmVyc2lvbgorZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX2hfZmlsZW5hbWUKIGZyb20gZGlzdHV0aWxzLmRlcF91dGlsIGltcG9ydCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXh0ZW5zaW9uIGltcG9ydCBFeHRlbnNpb24KIGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQpAQCAtMTk2LDggKzE5NywxMSBAQAogCiAgICAgICAgICAgICAjIEFwcGVuZCB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbiBpbmNsdWRlIGFuZCBsaWJyYXJ5IGRpcmVjdG9yaWVzLAogICAgICAgICAgICAgIyB0aGlzIGFsbG93cyBkaXN0dXRpbHMgb24gd2luZG93cyB0byB3b3JrIGluIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICdQQycpKQotICAgICAgICAgICAgaWYgTVNWQ19WRVJTSU9OID09IDk6CisgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5kaXJuYW1lKGdldF9jb25maWdfaF9maWxlbmFtZSgpKSkKKyAgICAgICAgICAgIF9zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChfc3lzX2hvbWUpCisgICAgICAgICAgICBpZiBNU1ZDX1ZFUlNJT04gPj0gOToKICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgLmxpYiBmaWxlcyBmb3IgdGhlIGNvcnJlY3QgYXJjaGl0ZWN0dXJlCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5wbGF0X25hbWUgPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICAgICAgICAgc3VmZml4ID0gJycKQEAgLTIzOSw4ICsyNDMsNyBAQAogICAgICAgICAjIGZvciBleHRlbnNpb25zIHVuZGVyIExpbnV4IG9yIFNvbGFyaXMgd2l0aCBhIHNoYXJlZCBQeXRob24gbGlicmFyeSwKICAgICAgICAgIyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlIGFwcGVuZGVkIHRvIGxpYnJhcnlfZGlycwogICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKQotICAgICAgICBpZiAoKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdnbnUnKQotICAgICAgICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdzdW5vcycpKQorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdnbnUnLCAnc3Vub3MnKSkKICAgICAgICAgICAgIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1B5X0VOQUJMRV9TSEFSRUQnKSk6CiAgICAgICAgICAgICBpZiBzeXMuZXhlY3V0YWJsZS5zdGFydHN3aXRoKG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJiaW4iKSk6CiAgICAgICAgICAgICAgICAgIyBidWlsZGluZyB0aGlyZCBwYXJ0eSBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CmluZGV4IGVjNDM0NzcuLjRiNWIyMmUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CkBAIC0xMjYsMTAgKzEyNiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzaGViYW5nICh7IXJ9KSBpcyBub3QgZGVjb2RhYmxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgc2NyaXB0IGVuY29kaW5nICh7fSkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzaGViYW5nLCBlbmNvZGluZykpCi0gICAgICAgICAgICAgICAgICAgIG91dGYgPSBvcGVuKG91dGZpbGUsICJ3YiIpCi0gICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKLSAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZWxpbmVzKGYucmVhZGxpbmVzKCkpCi0gICAgICAgICAgICAgICAgICAgIG91dGYuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgIndiIikgYXMgb3V0ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGUoc2hlYmFuZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGYud3JpdGVsaW5lcyhmLnJlYWRsaW5lcygpKQogICAgICAgICAgICAgICAgIGlmIGY6CiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC1hbWQ2NC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhMGRjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAtYW1kNjQuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC5leGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjM2JjNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LTEwLjAuZXhlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggODE5ZTFhOS4uMGJkZDUzOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTc4LDYgKzc4LDkgQEAKICAgICAgICAgZWxpZiBtc2NfdmVyID09ICcxNTAwJzoKICAgICAgICAgICAgICMgVlMyMDA4IC8gTVNWQyA5LjAKICAgICAgICAgICAgIHJldHVybiBbJ21zdmNyOTAnXQorICAgICAgICBlbGlmIG1zY192ZXIgPT0gJzE2MDAnOgorICAgICAgICAgICAgIyBWUzIwMTAgLyBNU1ZDIDEwLjAKKyAgICAgICAgICAgIHJldHVybiBbJ21zdmNyMTAwJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gTVMgQ29tcGlsZXIgdmVyc2lvbiAlcyAiICUgbXNjX3ZlcikKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQppbmRleCAxNjkwMmNhLi4zMTc2NDBjIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQpAQCAtMTgsNiArMTgsOCBAQAogIyBUaGVzZSBhcmUgbmVlZGVkIGluIGEgY291cGxlIG9mIHNwb3RzLCBzbyBqdXN0IGNvbXB1dGUgdGhlbSBvbmNlLgogUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQogRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKK0JBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCitCQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIAogIyBQYXRoIHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdC4gT24gV2luZG93cyB0aGUgYmluYXJ5IG1heQogIyBsaXZlIGluIHByb2plY3QvUENCdWlsZDkuICBJZiB3ZSdyZSBkZWFsaW5nIHdpdGggYW4geDY0IFdpbmRvd3MgYnVpbGQsCkBAIC0zOSwxMSArNDEsMjEgQEAKICMgZGlmZmVyZW50IChoYXJkLXdpcmVkKSBkaXJlY3Rvcmllcy4KICMgU2V0dXAubG9jYWwgaXMgYXZhaWxhYmxlIGZvciBNYWtlZmlsZSBidWlsZHMgaW5jbHVkaW5nIFZQQVRIIGJ1aWxkcywKICMgU2V0dXAuZGlzdCBpcyBhdmFpbGFibGUgb24gV2luZG93cwotZGVmIF9weXRob25fYnVpbGQoKToKK2RlZiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoZCk6CiAgICAgZm9yIGZuIGluICgiU2V0dXAuZGlzdCIsICJTZXR1cC5sb2NhbCIpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiTW9kdWxlcyIsIGZuKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQorX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCitpZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAorICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQorZGVmIF9weXRob25fYnVpbGQoKToKKyAgICBpZiBfc3lzX2hvbWU6CisgICAgICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoX3N5c19ob21lKQorICAgIHJldHVybiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIocHJvamVjdF9iYXNlKQogcHl0aG9uX2J1aWxkID0gX3B5dGhvbl9idWlsZCgpCiAKICMgQ2FsY3VsYXRlIHRoZSBidWlsZCBxdWFsaWZpZXIgZmxhZ3MgaWYgdGhleSBhcmUgZGVmaW5lZC4gIEFkZGluZyB0aGUgZmxhZ3MKQEAgLTc0LDExICs4NiwxMSBAQAogICAgIG90aGVyd2lzZSwgdGhpcyBpcyB0aGUgcGF0aCB0byBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXMKICAgICAobmFtZWx5IHB5Y29uZmlnLmgpLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKICAgICAgICAgICAgICMgQXNzdW1lIHRoZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuICBUaGUKQEAgLTg2LDEyICs5OCwxNCBAQAogICAgICAgICAgICAgIyB0aGUgYnVpbGQgZGlyZWN0b3J5IG1heSBub3QgYmUgdGhlIHNvdXJjZSBkaXJlY3RvcnksIHdlCiAgICAgICAgICAgICAjIG11c3QgdXNlICJzcmNkaXIiIGZyb20gdGhlIG1ha2VmaWxlIHRvIGZpbmQgdGhlICJJbmNsdWRlIgogICAgICAgICAgICAgIyBkaXJlY3RvcnkuCi0gICAgICAgICAgICBiYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCisgICAgICAgICAgICBiYXNlID0gX3N5c19ob21lIG9yIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQogICAgICAgICAgICAgaWYgcGxhdF9zcGVjaWZpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gYmFzZQorICAgICAgICAgICAgaWYgX3N5c19ob21lOgorICAgICAgICAgICAgICAgIGluY2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUsIGdldF9jb25maWdfdmFyKCdBU1RfSF9ESVInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaW5jZGlyID0gb3MucGF0aC5qb2luKGdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ0luY2x1ZGUnKQotICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKGluY2RpcikKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKGluY2RpcikKICAgICAgICAgcHl0aG9uX2RpciA9ICdweXRob24nICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkgKyBidWlsZF9mbGFncwogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHByZWZpeCwgImluY2x1ZGUiLCBweXRob25fZGlyKQogICAgIGVsaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMTE1LDExICsxMjksMTQgQEAKICAgICBjb250YWluaW5nIHN0YW5kYXJkIFB5dGhvbiBsaWJyYXJ5IG1vZHVsZXM7IG90aGVyd2lzZSwgcmV0dXJuIHRoZQogICAgIGRpcmVjdG9yeSBmb3Igc2l0ZS1zcGVjaWZpYyBtb2R1bGVzLgogCi0gICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5wcmVmaXggb3IKLSAgICBzeXMuZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KKyAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCisgICAgc3lzLmJhc2VfZXhlY19wcmVmaXggLS0gaS5lLiwgaWdub3JlICdwbGF0X3NwZWNpZmljJy4KICAgICAiIiIKICAgICBpZiBwcmVmaXggaXMgTm9uZToKLSAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCisgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKKyAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEJBU0VfRVhFQ19QUkVGSVggb3IgQkFTRV9QUkVGSVgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAogCiAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgogICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LApAQCAtMTQ2LDcgKzE2Myw3IEBACiAgICAgICAgICAgICAiSSBkb24ndCBrbm93IHdoZXJlIFB5dGhvbiBpbnN0YWxscyBpdHMgbGlicmFyeSAiCiAgICAgICAgICAgICAib24gcGxhdGZvcm0gJyVzJyIgJSBvcy5uYW1lKQogCi1fVVNFX0NMQU5HID0gTm9uZQorCiAKIGRlZiBjdXN0b21pemVfY29tcGlsZXIoY29tcGlsZXIpOgogICAgICIiIkRvIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBjdXN0b21pemF0aW9uIG9mIGEgQ0NvbXBpbGVyIGluc3RhbmNlLgpAQCAtMTU1LDQyICsxNzIsMjggQEAKICAgICB2YXJpZXMgYWNyb3NzIFVuaWNlcyBhbmQgaXMgc3RvcmVkIGluIFB5dGhvbidzIE1ha2VmaWxlLgogICAgICIiIgogICAgIGlmIGNvbXBpbGVyLmNvbXBpbGVyX3R5cGUgPT0gInVuaXgiOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CisgICAgICAgICAgICAjIFBlcmZvcm0gZmlyc3QtdGltZSBjdXN0b21pemF0aW9uIG9mIGNvbXBpbGVyLXJlbGF0ZWQKKyAgICAgICAgICAgICMgY29uZmlnIHZhcnMgb24gT1MgWCBub3cgdGhhdCB3ZSBrbm93IHdlIG5lZWQgYSBjb21waWxlci4KKyAgICAgICAgICAgICMgVGhpcyBpcyBwcmltYXJpbHkgdG8gc3VwcG9ydCBQeXRob25zIGZyb20gYmluYXJ5CisgICAgICAgICAgICAjIGluc3RhbGxlcnMuICBUaGUga2luZCBhbmQgcGF0aHMgdG8gYnVpbGQgdG9vbHMgb24KKyAgICAgICAgICAgICMgdGhlIHVzZXIgc3lzdGVtIG1heSB2YXJ5IHNpZ25pZmljYW50bHkgZnJvbSB0aGUgc3lzdGVtCisgICAgICAgICAgICAjIHRoYXQgUHl0aG9uIGl0c2VsZiB3YXMgYnVpbHQgb24uICBBbHNvIHRoZSB1c2VyIE9TCisgICAgICAgICAgICAjIHZlcnNpb24gYW5kIGJ1aWxkIHRvb2xzIG1heSBub3Qgc3VwcG9ydCB0aGUgc2FtZSBzZXQKKyAgICAgICAgICAgICMgb2YgQ1BVIGFyY2hpdGVjdHVyZXMgZm9yIHVuaXZlcnNhbCBidWlsZHMuCisgICAgICAgICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCisgICAgICAgICAgICBpZiBub3QgX2NvbmZpZ192YXJzLmdldCgnQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInLCAnJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5jdXN0b21pemVfY29tcGlsZXIoX2NvbmZpZ192YXJzKQorICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1snQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInXSA9ICdUcnVlJworCiAgICAgICAgIChjYywgY3h4LCBvcHQsIGNmbGFncywgY2NzaGFyZWQsIGxkc2hhcmVkLCBzb19leHQsIGFyLCBhcl9mbGFncykgPSBcCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoJ0NDJywgJ0NYWCcsICdPUFQnLCAnQ0ZMQUdTJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0NTSEFSRUQnLCAnTERTSEFSRUQnLCAnU08nLCAnQVInLCAnQVJGTEFHUycpCiAKICAgICAgICAgbmV3Y2MgPSBOb25lCiAgICAgICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIG5ld2NjID0gb3MuZW52aXJvblsnQ0MnXQotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY2MgPT0gJ2djYy00LjInOgotICAgICAgICAgICAgIyBJc3N1ZSAjMTM1OTA6Ci0gICAgICAgICAgICAjICAgICAgIFNpbmNlIEFwcGxlIHJlbW92ZWQgZ2NjLTQuMiBpbiBYY29kZSA0LjIsIHdlIGNhbiBubwotICAgICAgICAgICAgIyAgICAgICBsb25nZXIgYXNzdW1lIGl0IGlzIGF2YWlsYWJsZSBmb3IgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMuCi0gICAgICAgICAgICAjICAgICAgIElmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBnY2MtNC4yLCBjaGVjayBmaXJzdCB0byBzZWUgaWYKLSAgICAgICAgICAgICMgICAgICAgaXQgaXMgYXZhaWxhYmxlIG9uIHRoaXMgc3lzdGVtOyBpZiBub3QsIHRyeSB0byB1c2UgY2xhbmcKLSAgICAgICAgICAgICMgICAgICAgaW5zdGVhZCB1bmxlc3MgdGhlIGNhbGxlciBleHBsaWNpdGx5IHNldCBDQy4KLSAgICAgICAgICAgIGdsb2JhbCBfVVNFX0NMQU5HCi0gICAgICAgICAgICBpZiBfVVNFX0NMQU5HIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwotICAgICAgICAgICAgICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKLSAgICAgICAgICAgICAgICBwID0gUG9wZW4oIiEgdHlwZSBnY2MtNC4yICYmIHR5cGUgY2xhbmcgJiYgZXhpdCAyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFKQotICAgICAgICAgICAgICAgIHAud2FpdCgpCi0gICAgICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDI6Ci0gICAgICAgICAgICAgICAgICAgIF9VU0VfQ0xBTkcgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCJnY2MtNC4yIG5vdCBmb3VuZCwgdXNpbmcgY2xhbmcgaW5zdGVhZCIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgX1VTRV9DTEFORyA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfVVNFX0NMQU5HOgotICAgICAgICAgICAgICAgIG5ld2NjID0gJ2NsYW5nJwotICAgICAgICBpZiBuZXdjYzoKLSAgICAgICAgICAgICMgT24gT1MgWCwgaWYgQ0MgaXMgb3ZlcnJpZGRlbiwgdXNlIHRoYXQgYXMgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICMgICAgICAgY29tbWFuZCBmb3IgTERTSEFSRUQgYXMgd2VsbAotICAgICAgICAgICAgaWYgKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJwotICAgICAgICAgICAgICAgICAgICBhbmQgJ0xEU0hBUkVEJyBub3QgaW4gb3MuZW52aXJvbgotICAgICAgICAgICAgICAgICAgICBhbmQgbGRzaGFyZWQuc3RhcnRzd2l0aChjYykpOgotICAgICAgICAgICAgICAgIGxkc2hhcmVkID0gbmV3Y2MgKyBsZHNoYXJlZFtsZW4oY2MpOl0KLSAgICAgICAgICAgIGNjID0gbmV3Y2MKKyAgICAgICAgICAgIGNjID0gb3MuZW52aXJvblsnQ0MnXQogICAgICAgICBpZiAnQ1hYJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgY3h4ID0gb3MuZW52aXJvblsnQ1hYJ10KICAgICAgICAgaWYgJ0xEU0hBUkVEJyBpbiBvcy5lbnZpcm9uOgpAQCAtMjMyLDkgKzIzNSw5IEBACiAgICAgIiIiUmV0dXJuIGZ1bGwgcGF0aG5hbWUgb2YgaW5zdGFsbGVkIHB5Y29uZmlnLmggZmlsZS4iIiIKICAgICBpZiBweXRob25fYnVpbGQ6CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCAiUEMiKQorICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiUEMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5jX2RpciA9IHByb2plY3RfYmFzZQorICAgICAgICAgICAgaW5jX2RpciA9IF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UKICAgICBlbHNlOgogICAgICAgICBpbmNfZGlyID0gZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0xKQogICAgIGlmIGdldF9weXRob25fdmVyc2lvbigpIDwgJzIuMic6CkBAIC0yNDgsNyArMjUxLDggQEAKIGRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gZnVsbCBwYXRobmFtZSBvZiBpbnN0YWxsZWQgTWFrZWZpbGUgZnJvbSB0aGUgUHl0aG9uIGJ1aWxkLiIiIgogICAgIGlmIHB5dGhvbl9idWlsZDoKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCAiTWFrZWZpbGUiKQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ha2VmaWxlIikKICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKICAgICBjb25maWdfZmlsZSA9ICdjb25maWcte317fScuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpLCBidWlsZF9mbGFncykKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpYl9kaXIsIGNvbmZpZ19maWxlLCAnTWFrZWZpbGUnKQpAQCAtNTEwLDcgKzUxNCw3IEBACiAgICAgdmFyaWFibGVzIHJlbGV2YW50IGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4gIEdlbmVyYWxseSB0aGlzIGluY2x1ZGVzCiAgICAgZXZlcnl0aGluZyBuZWVkZWQgdG8gYnVpbGQgZXh0ZW5zaW9ucyBhbmQgaW5zdGFsbCBib3RoIHB1cmUgbW9kdWxlcyBhbmQKICAgICBleHRlbnNpb25zLiAgT24gVW5peCwgdGhpcyBtZWFucyBldmVyeSB2YXJpYWJsZSBkZWZpbmVkIGluIFB5dGhvbidzCi0gICAgaW5zdGFsbGVkIE1ha2VmaWxlOyBvbiBXaW5kb3dzIGFuZCBNYWMgT1MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCisgICAgaW5zdGFsbGVkIE1ha2VmaWxlOyBvbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgogCiAgICAgV2l0aCBhcmd1bWVudHMsIHJldHVybiBhIGxpc3Qgb2YgdmFsdWVzIHRoYXQgcmVzdWx0IGZyb20gbG9va2luZyB1cAogICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KQEAgLTUyOSw2ICs1MzMsMjMgQEAKICAgICAgICAgX2NvbmZpZ192YXJzWydwcmVmaXgnXSA9IFBSRUZJWAogICAgICAgICBfY29uZmlnX3ZhcnNbJ2V4ZWNfcHJlZml4J10gPSBFWEVDX1BSRUZJWAogCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX2NvbmZpZ192YXJzLmdldCgnc3JjZGlyJywgcHJvamVjdF9iYXNlKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBpZiBweXRob25fYnVpbGQ6CisgICAgICAgICAgICAgICAgIyBJZiBzcmNkaXIgaXMgYSByZWxhdGl2ZSBwYXRoICh0eXBpY2FsbHkgJy4nIG9yICcuLicpCisgICAgICAgICAgICAgICAgIyB0aGVuIGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgIyBjb250YWluaW5nIE1ha2VmaWxlLgorICAgICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIHNyY2RpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgbm90IG1lYW5pbmdmdWwgc2luY2UgdGhlIGluc3RhbGxhdGlvbiBpcworICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIE1ha2VmaWxlIHNpbmNlIHdlIGtub3cgaXQKKyAgICAgICAgICAgICAgICAjIGV4aXN0cy4KKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChzcmNkaXIpKQorCiAgICAgICAgICMgQ29udmVydCBzcmNkaXIgaW50byBhbiBhYnNvbHV0ZSBwYXRoIGlmIGl0IGFwcGVhcnMgbmVjZXNzYXJ5LgogICAgICAgICAjIE5vcm1hbGx5IGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkuICBIb3dldmVyLCBkdXJpbmcKICAgICAgICAgIyB0ZXN0aW5nLCBmb3IgZXhhbXBsZSwgd2UgbWlnaHQgYmUgcnVubmluZyBhIG5vbi1pbnN0YWxsZWQgcHl0aG9uCkBAIC01NDMsNDMgKzU2NCwxMSBAQAogICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbihiYXNlLCBfY29uZmlnX3ZhcnNbJ3NyY2RpciddKQogICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1snc3JjZGlyJ10gPSBvcy5wYXRoLm5vcm1wYXRoKHNyY2RpcikKIAorICAgICAgICAjIE9TIFggcGxhdGZvcm1zIHJlcXVpcmUgc3BlY2lhbCBjdXN0b21pemF0aW9uIHRvIGhhbmRsZQorICAgICAgICAjIG11bHRpLWFyY2hpdGVjdHVyZSwgbXVsdGktb3MtdmVyc2lvbiBpbnN0YWxsZXJzCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIEtlcm5lbCB2ZXJzaW9uICg4LjQuMykKLSAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSBpbnQoa2VybmVsX3ZlcnNpb24uc3BsaXQoJy4nKVswXSkKLQotICAgICAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICAgICAgICAgIyBPbiBNYWMgT1MgWCBiZWZvcmUgMTAuNCwgY2hlY2sgaWYgLWFyY2ggYW5kIC1pc3lzcm9vdAotICAgICAgICAgICAgICAgICMgYXJlIGluIENGTEFHUyBvciBMREZMQUdTIGFuZCByZW1vdmUgdGhlbSBpZiB0aGV5IGFyZS4KLSAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyBvbiBhIDEwLjMgc3lzdGVtCi0gICAgICAgICAgICAgICAgIyB1c2luZyBhIHVuaXZlcnNhbCBidWlsZCBvZiBweXRob24uCi0gICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1trZXldCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgIF9jb25maWdfdmFyc1trZXldID0gZmxhZ3MKLQotICAgICAgICAgICAgZWxzZToKLQotICAgICAgICAgICAgICAgICMgQWxsb3cgdGhlIHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGFyY2hpdGVjdHVyZSBmbGFncyB1c2luZwotICAgICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgIyBOT1RFOiBUaGlzIG5hbWUgd2FzIGludHJvZHVjZWQgYnkgQXBwbGUgaW4gT1NYIDEwLjUgYW5kCi0gICAgICAgICAgICAgICAgIyBpcyB1c2VkIGJ5IHNldmVyYWwgc2NyaXB0aW5nIGxhbmd1YWdlcyBkaXN0cmlidXRlZCB3aXRoCi0gICAgICAgICAgICAgICAgIyB0aGF0IE9TIHJlbGVhc2UuCi0KLSAgICAgICAgICAgICAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBhcmNoID0gb3MuZW52aXJvblsnQVJDSEZMQUdTJ10KLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleSBpbiAoJ0xERkxBR1MnLCAnQkFTRUNGTEFHUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIG9mIGRlcml2ZWQgdmFyaWFibGVzLiBUaGVzZSBuZWVkIHRvIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICdDRkxBR1MnLCAnUFlfQ0ZMQUdTJywgJ0JMRFNIQVJFRCcpOgotCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1trZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAotICAgICAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzW2tleV0gPSBmbGFncworICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgX29zeF9zdXBwb3J0LmN1c3RvbWl6ZV9jb25maWdfdmFycyhfY29uZmlnX3ZhcnMpCiAKICAgICBpZiBhcmdzOgogICAgICAgICB2YWxzID0gW10KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CmluZGV4IDhlZGZhYjQuLjFhZmRkNDYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQpAQCAtMSw2ICsxLDggQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmFyY2hpdmVfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiBpbXBvcnQgdGFyZmlsZQogZnJvbSBvcy5wYXRoIGltcG9ydCBzcGxpdGRyaXZlCiBpbXBvcnQgd2FybmluZ3MKQEAgLTI1LDYgKzI3LDE4IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgWkxJQl9TVVBQT1JUID0gRmFsc2UKIAorZGVmIGNhbl9mc19lbmNvZGUoZmlsZW5hbWUpOgorICAgICIiIgorICAgIFJldHVybiBUcnVlIGlmIHRoZSBmaWxlbmFtZSBjYW4gYmUgc2F2ZWQgaW4gdGhlIGZpbGUgc3lzdGVtLgorICAgICIiIgorICAgIGlmIG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXM6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQorICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKIAogY2xhc3MgQXJjaGl2ZVV0aWxUZXN0Q2FzZShzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LkxvZ2dpbmdTaWxlbmNlciwKQEAgLTMyLDYgKzQ2LDI4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCdhcmNoaXZlJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgnw6VyY2hpdicpLAorICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfbGF0aW4xKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgbGF0aW4gY2hhcmFjdGVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnw6VyY2hpdicpICMgbm90ZSB0aGlzIGlzbid0IGEgcmVhbCB3b3JkCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9mc19lbmNvZGUoJ+OBruOCouODvOOCq+OCpOODlicpLAorICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfZXh0ZW5kZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBNaXJyb3IgdGVzdF9tYWtlX3RhcmJhbGwsIGV4Y2VwdCBmaWxlbmFtZSBjb250YWlucyBleHRlbmRlZAorICAgICAgICBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGxhdGluIGNoYXJzZXQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ+OBruOCouODvOOCq+OCpOODlicpICMgamFwYW5lc2UgZm9yIGFyY2hpdmUKKworICAgIGRlZiBfbWFrZV90YXJiYWxsKHNlbGYsIHRhcmdldF9uYW1lKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCkBAIC00Myw3ICs3OSw3IEBACiAgICAgICAgIHVuaXR0ZXN0LnNraXBVbmxlc3Moc3BsaXRkcml2ZSh0bXBkaXIpWzBdID09IHNwbGl0ZHJpdmUodG1wZGlyMilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNvdXJjZSBhbmQgdGFyZ2V0IHNob3VsZCBiZSBvbiBzYW1lIGRyaXZlIikKIAotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCiAKICAgICAgICAgIyB3b3JraW5nIHdpdGggcmVsYXRpdmUgcGF0aHMgdG8gYXZvaWQgdGFyIHdhcm5pbmdzCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQpAQCAtNTgsNyArOTQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCiAKICAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICBvcy5jaGRpcih0bXBkaXIpCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CmluZGV4IGFiN2ExYmYuLmIwOTBiNzkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQpAQCAtMjgsNiArMjgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZS5lbmNvZGUoIlVURi04IikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuZXhlY3V0YWJsZSBpcyBub3QgZW5jb2RhYmxlIHRvIFVURi04IikKKwogICAgICAgICBzdXBlcihCdWlsZFJwbVRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCiAgICAgICAgIHNlbGYub2xkX2xvY2F0aW9uID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgc2VsZi5vbGRfc3lzX2FyZ3YgPSBzeXMuYXJndiwgc3lzLmFyZ3ZbOl0KQEAgLTQyLDcgKzQ3LDcgQEAKIAogICAgICAgICAjIFhYWCBJIGFtIHVuYWJsZSB5ZXQgdG8gbWFrZSB0aGlzIHRlc3Qgd29yayB3aXRob3V0CiAgICAgICAgICMgc3B1cmlvdXMgc2R0b3V0L3N0ZGVyciBvdXRwdXQgdW5kZXIgTWFjIE9TIFgKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdsaW51eDInOgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIHRoaXMgdGVzdCB3aWxsIHJ1biBvbmx5IGlmIHRoZSBycG0gY29tbWFuZHMgYXJlIGZvdW5kCkBAIC04Niw3ICs5MSw3IEBACiAKICAgICAgICAgIyBYWFggSSBhbSB1bmFibGUgeWV0IHRvIG1ha2UgdGhpcyB0ZXN0IHdvcmsgd2l0aG91dAogICAgICAgICAjIHNwdXJpb3VzIHNkdG91dC9zdGRlcnIgb3V0cHV0IHVuZGVyIE1hYyBPUyBYCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnbGludXgyJzoKKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTUzMzE2NApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKaW5kZXggZmJlMjZiZi4uODI2ZWE0MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC01Myw2ICs1MywzNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShjdmFycywgZGljdCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdmFycykKIAorICAgIGRlZiB0ZXN0X3NyY2RpcihzZWxmKToKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoc3JjZGlyKSwgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihzcmNkaXIpLCBzcmNkaXIpCisKKyAgICAgICAgaWYgc3lzY29uZmlnLnB5dGhvbl9idWlsZDoKKyAgICAgICAgICAgICMgVGhlIHB5dGhvbiBleGVjdXRhYmxlIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgc28gc3JjZGlyCisgICAgICAgICAgICAjIHNob3VsZCBiZSBhIGZ1bGwgc291cmNlIGNoZWNrb3V0LgorICAgICAgICAgICAgUHl0aG9uX2ggPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCAnSW5jbHVkZScsICdQeXRob24uaCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoUHl0aG9uX2gpLCBQeXRob25faCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzeXNjb25maWcuX2lzX3B5dGhvbl9zb3VyY2VfZGlyKHNyY2RpcikpCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmRpcm5hbWUoc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY2RpcikKKworICAgIGRlZiB0ZXN0X3NyY2Rpcl9pbmRlcGVuZGVudF9vZl9jd2Qoc2VsZik6CisgICAgICAgICMgc3JjZGlyIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoJy4uJykKKyAgICAgICAgICAgIHNyY2RpcjIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihjd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjZGlyLCBzcmNkaXIyKQorCiAgICAgZGVmIHRlc3RfY3VzdG9taXplX2NvbXBpbGVyKHNlbGYpOgogCiAgICAgICAgICMgbm90IHRlc3RpbmcgaWYgZGVmYXVsdCBjb21waWxlciBpcyBub3QgdW5peApAQCAtMTAyLDcgKzEzMSwyNyBAQAogICAgICAgICBpbXBvcnQgc3lzY29uZmlnIGFzIGdsb2JhbF9zeXNjb25maWcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDRkxBR1MnKSwgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDRkxBR1MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMREZMQUdTJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERGTEFHUycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJyksc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMRFNIQVJFRCcpKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NVU1RPTUlaRURfT1NYX0NPTVBJTEVSJyksJ2NvbXBpbGVyIGZsYWdzIGN1c3RvbWl6ZWQnKQorICAgIGRlZiB0ZXN0X3N5c2NvbmZpZ19jb21waWxlcl92YXJzKHNlbGYpOgorICAgICAgICAjIE9uIE9TIFgsIGJpbmFyeSBpbnN0YWxsZXJzIHN1cHBvcnQgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZGluZyBvbgorICAgICAgICAjIHZhcmlvdXMgbGV2ZWxzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpdGggZGlmZmVyaW5nIFhjb2RlCisgICAgICAgICMgY29uZmlndXJhdGlvbnMuICBUaGlzIHJlcXVpcmVzIGN1c3RvbWl6YXRpb24gb2Ygc29tZSBvZiB0aGUKKyAgICAgICAgIyBjb21waWxlciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgdG8gc3VpdCB0aGUgZW52aXJvbm1lbnQgb24KKyAgICAgICAgIyB0aGUgaW5zdGFsbGVkIG1hY2hpbmUuICBTb21lIG9mIHRoZXNlIGN1c3RvbWl6YXRpb25zIG1heSByZXF1aXJlCisgICAgICAgICMgcnVubmluZyBleHRlcm5hbCBwcm9ncmFtcyBhbmQsIHNvLCBhcmUgZGVmZXJyZWQgdW50aWwgbmVlZGVkIGJ5CisgICAgICAgICMgdGhlIGZpcnN0IGV4dGVuc2lvbiBtb2R1bGUgYnVpbGQuICBXaXRoIFB5dGhvbiAzLjMsIG9ubHkKKyAgICAgICAgIyB0aGUgRGlzdHV0aWxzIHZlcnNpb24gb2Ygc3lzY29uZmlnIGlzIHVzZWQgZm9yIGV4dGVuc2lvbiBtb2R1bGUKKyAgICAgICAgIyBidWlsZHMsIHdoaWNoIGhhcHBlbnMgZWFybGllciBpbiB0aGUgRGlzdHV0aWxzIHRlc3RzLiAgVGhpcyBtYXkKKyAgICAgICAgIyBjYXVzZSB0aGUgZm9sbG93aW5nIHRlc3RzIHRvIGZhaWwgc2luY2Ugbm8gdGVzdHMgaGF2ZSBjYXVzZWQKKyAgICAgICAgIyB0aGUgZ2xvYmFsIHZlcnNpb24gb2Ygc3lzY29uZmlnIHRvIGNhbGwgdGhlIGN1c3RvbWl6YXRpb24geWV0LgorICAgICAgICAjIFRoZSBzb2x1dGlvbiBmb3Igbm93IGlzIHRvIHNpbXBseSBza2lwIHRoaXMgdGVzdCBpbiB0aGlzIGNhc2UuCisgICAgICAgICMgVGhlIGxvbmdlci10ZXJtIHNvbHV0aW9uIGlzIHRvIG9ubHkgaGF2ZSBvbmUgdmVyc2lvbiBvZiBzeXNjb25maWcuCisKKyAgICAgICAgaW1wb3J0IHN5c2NvbmZpZyBhcyBnbG9iYWxfc3lzY29uZmlnCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERTSEFSRUQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpLCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCAxYTA2ZDRjLi5lYWM5YjUxIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtMTMsNiArMTMsNyBAQAogZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcnMKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CitpbXBvcnQgX29zeF9zdXBwb3J0CiAKIGNsYXNzIFV0aWxUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC05Miw2ICs5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgKCdEYXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMS4xOiAnCiAgICAgICAgICAgICAgICAgICAgICdXZWQgT2N0IDEwIDE4OjIzOjI4IFBEVCAyMDA3OyAnCiAgICAgICAgICAgICAgICAgICAgICdyb290OnhudS03OTIuMjUuMjB+MS9SRUxFQVNFX0kzODYnKSwgJ2kzODYnKSkKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKIAogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1ETkRFQlVHIC1nICcKQEAgLTEwNSw2ICsxMDcsNyBAQAogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBjdXJzaXplCiAKICAgICAgICAgIyBtYWNib29rIHdpdGggZmF0IGJpbmFyaWVzIChmYXQsIHVuaXZlcnNhbCBvciBmYXQ2NCkKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuNCcKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKQEAgLTExMywxMCArMTE2LDEyIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4xJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0JykKIAogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0xMjQsMTggKzEyOSwyMSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1pbnRlbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdDMnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCBwcGM2NCAtYXJjaCB4ODZfNjQgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC11bml2ZXJzYWwnKQogCisgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCB4ODZfNjQgLWFyY2ggcHBjNjQgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwpAQCAtMTQ0LDYgKzE1Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQ2NCcpCiAKICAgICAgICAgZm9yIGFyY2ggaW4gKCdwcGMnLCAnaTM4NicsICd4ODZfNjQnLCAncHBjNjQnKToKKyAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhnZXRfY29uZmlnX3ZhcnMoKSkKICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggJXMgLWlzeXNyb290ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKaW5kZXggYzcwYTNjYy4uMDk0YTJmMCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQpAQCAtMjMsNiArMjMsOSBAQAogICAgICBEaXN0dXRpbHNFeGVjRXJyb3IsIENvbXBpbGVFcnJvciwgTGliRXJyb3IsIExpbmtFcnJvcgogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwogCitpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorCiAjIFhYWCBUaGluZ3Mgbm90IGN1cnJlbnRseSBoYW5kbGVkOgogIyAgICogb3B0aW1pemF0aW9uL2RlYnVnL3dhcm5pbmcgZmxhZ3M7IHdlIGp1c3QgdXNlIHdoYXRldmVyJ3MgaW4gUHl0aG9uJ3MKICMgICAgIE1ha2VmaWxlIGFuZCBsaXZlIHdpdGggaXQuICBJcyB0aGlzIGFkZXF1YXRlPyAgSWYgbm90LCB3ZSBtaWdodApAQCAtMzgsNjggKzQxLDYgQEAKICMgICAgIHNob3VsZCBqdXN0IGhhcHBpbHkgc3R1ZmYgdGhlbSBpbnRvIHRoZSBwcmVwcm9jZXNzb3IvY29tcGlsZXIvbGlua2VyCiAjICAgICBvcHRpb25zIGFuZCBjYXJyeSBvbi4KIAotZGVmIF9kYXJ3aW5fY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sIGNjX2FyZ3MpOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzdHJpcCAnLWlzeXNyb290IFBBVEgnIGFuZCAnLWFyY2ggQVJDSCcgZnJvbSB0aGUKLSAgICBjb21waWxlIGZsYWdzIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgb25lIHRoZW0gaW4gZXh0cmFfY29tcGlsZV9mbGFncy4KLQotICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgJy1hcmNoIEFSQ0gnIGFkZHMgYW5vdGhlciBhcmNoaXRlY3R1cmUgdG8gdGhlCi0gICAgYnVpbGQsIHdpdGhvdXQgYSB3YXkgdG8gcmVtb3ZlIGFuIGFyY2hpdGVjdHVyZS4gRnVydGhlcm1vcmUgR0NDIHdpbGwKLSAgICBiYXJmIGlmIG11bHRpcGxlICctaXN5c3Jvb3QnIGFyZ3VtZW50cyBhcmUgcHJlc2VudC4KLSAgICAiIiIKLSAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBGYWxzZQotCi0gICAgY29tcGlsZXJfc28gPSBsaXN0KGNvbXBpbGVyX3NvKQotICAgIGtlcm5lbF92ZXJzaW9uID0gb3MudW5hbWUoKVsyXSAjIDguNC4zCi0gICAgbWFqb3JfdmVyc2lvbiA9IGludChrZXJuZWxfdmVyc2lvbi5zcGxpdCgnLicpWzBdKQotCi0gICAgaWYgbWFqb3JfdmVyc2lvbiA8IDg6Ci0gICAgICAgICMgT1NYIGJlZm9yZSAxMC40LjAsIHRoZXNlIGRvbid0IHN1cHBvcnQgLWFyY2ggYW5kIC1pc3lzcm9vdCBhdAotICAgICAgICAjIGFsbC4KLSAgICAgICAgc3RyaXBBcmNoID0gc3RyaXBTeXNyb290ID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIHN0cmlwQXJjaCA9ICctYXJjaCcgaW4gY2NfYXJncwotICAgICAgICBzdHJpcFN5c3Jvb3QgPSAnLWlzeXNyb290JyBpbiBjY19hcmdzCi0KLSAgICBpZiBzdHJpcEFyY2ggb3IgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctYXJjaCcpCi0gICAgICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6Ci0gICAgICAgICAgICAgICAgZGVsIGNvbXBpbGVyX3NvW2luZGV4OmluZGV4KzJdCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgaWYgJ0FSQ0hGTEFHUycgaW4gb3MuZW52aXJvbiBhbmQgbm90IHN0cmlwQXJjaDoKLSAgICAgICAgIyBVc2VyIHNwZWNpZmllZCBkaWZmZXJlbnQgLWFyY2ggZmxhZ3MgaW4gdGhlIGVudmlyb24sCi0gICAgICAgICMgc2VlIGFsc28gZGlzdHV0aWxzLnN5c2NvbmZpZwotICAgICAgICBjb21waWxlcl9zbyA9IGNvbXBpbGVyX3NvICsgb3MuZW52aXJvblsnQVJDSEZMQUdTJ10uc3BsaXQoKQotCi0gICAgaWYgc3RyaXBTeXNyb290OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbmRleCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICAgICAgIyBTdHJpcCB0aGlzIGFyZ3VtZW50IGFuZCB0aGUgbmV4dCBvbmU6Ci0gICAgICAgICAgICBkZWwgY29tcGlsZXJfc29baW5kZXg6aW5kZXgrMl0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAjIENoZWNrIGlmIHRoZSBTREsgdGhhdCBpcyB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBhY3R1YWxseSBleGlzdHMsCi0gICAgIyB0aGUgdW5pdmVyc2FsIGJ1aWxkIHJlcXVpcmVzIHRoZSB1c2FnZSBvZiBhIHVuaXZlcnNhbCBTREsgYW5kIG5vdCBhbGwKLSAgICAjIHVzZXJzIGhhdmUgdGhhdCBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KLSAgICBzeXNyb290ID0gTm9uZQotICAgIGlmICctaXN5c3Jvb3QnIGluIGNjX2FyZ3M6Ci0gICAgICAgIGlkeCA9IGNjX2FyZ3MuaW5kZXgoJy1pc3lzcm9vdCcpCi0gICAgICAgIHN5c3Jvb3QgPSBjY19hcmdzW2lkeCsxXQotICAgIGVsaWYgJy1pc3lzcm9vdCcgaW4gY29tcGlsZXJfc286Ci0gICAgICAgIGlkeCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQotICAgICAgICBzeXNyb290ID0gY29tcGlsZXJfc29baWR4KzFdCi0KLSAgICBpZiBzeXNyb290IGFuZCBub3Qgb3MucGF0aC5pc2RpcihzeXNyb290KToKLSAgICAgICAgbG9nLndhcm4oIkNvbXBpbGluZyB3aXRoIGFuIFNESyB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBleGlzdDogJXMiLAotICAgICAgICAgICAgICAgIHN5c3Jvb3QpCi0gICAgICAgIGxvZy53YXJuKCJQbGVhc2UgY2hlY2sgeW91ciBYY29kZSBpbnN0YWxsYXRpb24iKQotCi0gICAgcmV0dXJuIGNvbXBpbGVyX3NvCiAKIGNsYXNzIFVuaXhDQ29tcGlsZXIoQ0NvbXBpbGVyKToKIApAQCAtMTY4LDcgKzEwOSw4IEBACiAgICAgZGVmIF9jb21waWxlKHNlbGYsIG9iaiwgc3JjLCBleHQsIGNjX2FyZ3MsIGV4dHJhX3Bvc3RhcmdzLCBwcF9vcHRzKToKICAgICAgICAgY29tcGlsZXJfc28gPSBzZWxmLmNvbXBpbGVyX3NvCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgIGNvbXBpbGVyX3NvID0gX2Rhcndpbl9jb21waWxlcl9maXh1cChjb21waWxlcl9zbywgY2NfYXJncyArIGV4dHJhX3Bvc3RhcmdzKQorICAgICAgICAgICAgY29tcGlsZXJfc28gPSBfb3N4X3N1cHBvcnQuY29tcGlsZXJfZml4dXAoY29tcGlsZXJfc28sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NfYXJncyArIGV4dHJhX3Bvc3RhcmdzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNwYXduKGNvbXBpbGVyX3NvICsgY2NfYXJncyArIFtzcmMsICctbycsIG9ial0gKwogICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9wb3N0YXJncykKQEAgLTI0Nyw3ICsxODksNyBAQAogICAgICAgICAgICAgICAgICAgICBsaW5rZXJbaV0gPSBzZWxmLmNvbXBpbGVyX2N4eFtpXQogCiAgICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICAgICAgICBsaW5rZXIgPSBfZGFyd2luX2NvbXBpbGVyX2ZpeHVwKGxpbmtlciwgbGRfYXJncykKKyAgICAgICAgICAgICAgICAgICAgbGlua2VyID0gX29zeF9zdXBwb3J0LmNvbXBpbGVyX2ZpeHVwKGxpbmtlciwgbGRfYXJncykKIAogICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24obGlua2VyICsgbGRfYXJncykKICAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CmluZGV4IGJjZTg0MDIuLjY3ZDgxNjYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKQEAgLTUzLDYgKzUzLDEwIEBACiAgICAgICAgICAgICByZXR1cm4gJ3dpbi1pYTY0JwogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKKyAgICAjIFNldCBmb3IgY3Jvc3MgYnVpbGRzIGV4cGxpY2l0bHkKKyAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gb3MuZW52aXJvblsiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIl0KKwogICAgIGlmIG9zLm5hbWUgIT0gInBvc2l4IiBvciBub3QgaGFzYXR0cihvcywgJ3VuYW1lJyk6CiAgICAgICAgICMgWFhYIHdoYXQgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZT8gTlQgaXMgSW50ZWwgb3IgQWxwaGEsCiAgICAgICAgICMgTWFjIE9TIGlzIE02OGsgb3IgUFBDLCBldGMuCkBAIC05NCw5NCArOTgsMTAgQEAKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIHJlbGVhc2UgPSBtLmdyb3VwKCkKICAgICBlbGlmIG9zbmFtZVs6Nl0gPT0gImRhcndpbiI6Ci0gICAgICAgICMKLSAgICAgICAgIyBGb3Igb3VyIHB1cnBvc2VzLCB3ZSdsbCBhc3N1bWUgdGhhdCB0aGUgc3lzdGVtIHZlcnNpb24gZnJvbQotICAgICAgICAjIGRpc3R1dGlscycgcGVyc3BlY3RpdmUgaXMgd2hhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0Ci0gICAgICAgICMgdG8uIFRoaXMgbWFrZXMgdGhlIGNvbXBhdGliaWxpdHkgc3RvcnkgYSBiaXQgbW9yZSBzYW5lIGJlY2F1c2UgdGhlCi0gICAgICAgICMgbWFjaGluZSBpcyBnb2luZyB0byBjb21waWxlIGFuZCBsaW5rIGFzIGlmIGl0IHdlcmUKLSAgICAgICAgIyBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQuCi0gICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCi0gICAgICAgIGNmZ3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotCi0gICAgICAgIG1hY3ZlciA9IGNmZ3ZhcnMuZ2V0KCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnKQotCi0gICAgICAgIGlmIDE6Ci0gICAgICAgICAgICAjIEFsd2F5cyBjYWxjdWxhdGUgdGhlIHJlbGVhc2Ugb2YgdGhlIHJ1bm5pbmcgbWFjaGluZSwKLSAgICAgICAgICAgICMgbmVlZGVkIHRvIGRldGVybWluZSBpZiB3ZSBjYW4gYnVpbGQgZmF0IGJpbmFyaWVzIG9yIG5vdC4KLQotICAgICAgICAgICAgbWFjcmVsZWFzZSA9IG1hY3ZlcgotICAgICAgICAgICAgIyBHZXQgdGhlIHN5c3RlbSB2ZXJzaW9uLiBSZWFkaW5nIHRoaXMgcGxpc3QgaXMgYSBkb2N1bWVudGVkCi0gICAgICAgICAgICAjIHdheSB0byBnZXQgdGhlIHN5c3RlbSB2ZXJzaW9uIChzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCi0gICAgICAgICAgICAjIHRoZSBHZXN0YWx0IE1hbmFnZXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IG9wZW4oJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3lzdGVtVmVyc2lvbi5wbGlzdCcpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgcGxhaW4gZGFyd2luIGJveCwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgIyBiZWhhdmlvdXIuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8a2V5PlByb2R1Y3RVc2VyVmlzaWJsZVZlcnNpb248L2tleT5ccyonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxzdHJpbmc+KC4qPyk8L3N0cmluZz4nLCBmLnJlYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hY3JlbGVhc2UgPSAnLicuam9pbihtLmdyb3VwKDEpLnNwbGl0KCcuJylbOjJdKQotICAgICAgICAgICAgICAgICAgICAjIGVsc2U6IGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICBpZiBub3QgbWFjdmVyOgotICAgICAgICAgICAgbWFjdmVyID0gbWFjcmVsZWFzZQotCi0gICAgICAgIGlmIG1hY3ZlcjoKLSAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXJzCi0gICAgICAgICAgICByZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICBvc25hbWUgPSAibWFjb3N4IgotCi0gICAgICAgICAgICBpZiAobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAnLWFyY2gnIGluIGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJywgJycpLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCi0gICAgICAgICAgICAgICAgIyBzeXN0ZW1zIGJlZm9yZSAxMC40Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVHJ5IHRvIGRldGVjdCA0LXdheSB1bml2ZXJzYWwgYnVpbGRzLCB0aG9zZSBoYXZlIG1hY2hpbmUtdHlwZQotICAgICAgICAgICAgICAgICMgJ3VuaXZlcnNhbCcgaW5zdGVhZCBvZiAnZmF0Jy4KLQotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGNmbGFncyA9IGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJykKLQotICAgICAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKLSAgICAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKLQotICAgICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ludGVsJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAndW5pdmVyc2FsJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IG1hY2hpbmUgdmFsdWUgZm9yIGFyY2hzPSVyIiUoYXJjaHMsKSkKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKLSAgICAgICAgICAgICAgICAjIE9uIE9TWCB0aGUgbWFjaGluZSB0eXBlIHJldHVybmVkIGJ5IHVuYW1lIGlzIGFsd2F5cyB0aGUKLSAgICAgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcwotICAgICAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50Ci0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JwotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgotICAgICAgICAgICAgICAgICMgUGljayBhIHNhbmUgbmFtZSBmb3IgdGhlIFBQQyBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGMnCi0KLSAgICAgICAgICAgICAgICAjIFNlZSAnaTM4NicgY2FzZQotICAgICAgICAgICAgICAgIGlmIHN5cy5tYXhzaXplID49IDIqKjMyOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYzY0JworICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0LCBkaXN0dXRpbHMuc3lzY29uZmlnCisgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCiAgICAgcmV0dXJuICIlcy0lcy0lcyIgJSAob3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKQogCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IGUxODljOGYuLjNhZjA1ZmIgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC00NTgsNyArNDU4LDYgQEAKICAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYuc291cmNlLCBzZWxmLndhbnQsIHNlbGYubGluZW5vLCBzZWxmLmluZGVudCwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjX21zZykpCiAKLQogY2xhc3MgRG9jVGVzdDoKICAgICAiIiIKICAgICBBIGNvbGxlY3Rpb24gb2YgZG9jdGVzdCBleGFtcGxlcyB0aGF0IHNob3VsZCBiZSBydW4gaW4gYSBzaW5nbGUKQEAgLTEzNjcsNyArMTM2Niw3IEBACiAgICAgICAgIG0gPSBzZWxmLl9fTElORUNBQ0hFX0ZJTEVOQU1FX1JFLm1hdGNoKGZpbGVuYW1lKQogICAgICAgICBpZiBtIGFuZCBtLmdyb3VwKCduYW1lJykgPT0gc2VsZi50ZXN0Lm5hbWU6CiAgICAgICAgICAgICBleGFtcGxlID0gc2VsZi50ZXN0LmV4YW1wbGVzW2ludChtLmdyb3VwKCdleGFtcGxlbnVtJykpXQotICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBleGFtcGxlLnNvdXJjZS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5zYXZlX2xpbmVjYWNoZV9nZXRsaW5lcyhmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpCiAKQEAgLTE0MTMsNiArMTQxMiw3IEBACiAgICAgICAgICMgTm90ZSB0aGF0IHRoZSBpbnRlcmFjdGl2ZSBvdXRwdXQgd2lsbCBnbyB0byAqb3VyKgogICAgICAgICAjIHNhdmVfc3Rkb3V0LCBldmVuIGlmIHRoYXQncyBub3QgdGhlIHJlYWwgc3lzLnN0ZG91dDsgdGhpcwogICAgICAgICAjIGFsbG93cyB1cyB0byB3cml0ZSB0ZXN0IGNhc2VzIGZvciB0aGUgc2V0X3RyYWNlIGJlaGF2aW9yLgorICAgICAgICBzYXZlX3RyYWNlID0gc3lzLmdldHRyYWNlKCkKICAgICAgICAgc2F2ZV9zZXRfdHJhY2UgPSBwZGIuc2V0X3RyYWNlCiAgICAgICAgIHNlbGYuZGVidWdnZXIgPSBfT3V0cHV0UmVkaXJlY3RpbmdQZGIoc2F2ZV9zdGRvdXQpCiAgICAgICAgIHNlbGYuZGVidWdnZXIucmVzZXQoKQpAQCAtMTQzMiw2ICsxNDMyLDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAgICAgcGRiLnNldF90cmFjZSA9IHNhdmVfc2V0X3RyYWNlCisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2F2ZV90cmFjZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IHNlbGYuc2F2ZV9saW5lY2FjaGVfZ2V0bGluZXMKICAgICAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHNhdmVfZGlzcGxheWhvb2sKICAgICAgICAgICAgIGlmIGNsZWFyX2dsb2JzOgpAQCAtMTYyOCw4ICsxNjI5LDggQEAKICAgICAgICAgIyBDaGVjayBpZiB3ZSBzaG91bGQgdXNlIGRpZmYuCiAgICAgICAgIGlmIHNlbGYuX2RvX2FfZmFuY3lfZGlmZih3YW50LCBnb3QsIG9wdGlvbmZsYWdzKToKICAgICAgICAgICAgICMgU3BsaXQgd2FudCAmIGdvdCBpbnRvIGxpbmVzLgotICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhUcnVlKSAgIyBUcnVlID09IGtlZXAgbGluZSBlbmRzCi0gICAgICAgICAgICBnb3RfbGluZXMgPSBnb3Quc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgd2FudF9saW5lcyA9IHdhbnQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICAgICAgZ290X2xpbmVzID0gZ290LnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgICAgICMgVXNlIGRpZmZsaWIgdG8gZmluZCB0aGVpciBkaWZmZXJlbmNlcy4KICAgICAgICAgICAgIGlmIG9wdGlvbmZsYWdzICYgUkVQT1JUX1VESUZGOgogICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZih3YW50X2xpbmVzLCBnb3RfbGluZXMsIG49MikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weSBiL0xpYi9lbWFpbC9fZW5jb2RlZF93b3Jkcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWY2ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5CkBAIC0wLDAgKzEsMjIxIEBACisiIiIgUm91dGluZXMgZm9yIG1hbmlwdWxhdGluZyBSRkMyMDQ3IGVuY29kZWQgd29yZHMuCisKK1RoaXMgaXMgY3VycmVudGx5IGEgcGFja2FnZS1wcml2YXRlIEFQSSwgYnV0IHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgcHJvbW90aW9uCit0byBhIHB1YmxpYyBBUEkgaWYgdGhlcmUgaXMgZGVtYW5kLgorCisiIiIKKworIyBBbiBlY29kZWQgd29yZCBsb29rcyBsaWtlIHRoaXM6CisjCisjICAgICAgICA9P2NoYXJzZXRbKmxhbmddP2N0ZT9lbmNvZGVkX3N0cmluZz89CisjCisjIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGNoYXJzZXQgc2VlIHRoZSBjaGFyc2V0IG1vZHVsZS4gIEhlcmUgaXQgaXMgb25lCisjIG9mIHRoZSBwcmVmZXJyZWQgTUlNRSBjaGFyc2V0IG5hbWVzIChob3BlZnVsbHk7IHlvdSBuZXZlciBrbm93IHdoZW4gcGFyc2luZykuCisjIGN0ZSAoQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZykgaXMgZWl0aGVyICdxJyBvciAnYicgKGlnbm9yaW5nIGNhc2UpLiAgSW4KKyMgdGhlb3J5IG90aGVyIGxldHRlcnMgY291bGQgYmUgdXNlZCBmb3Igb3RoZXIgZW5jb2RpbmdzLCBidXQgaW4gcHJhY3RpY2UgdGhpcworIyAoYWxtb3N0PykgbmV2ZXIgaGFwcGVucy4gIFRoZXJlIGNvdWxkIGJlIGEgcHVibGljIEFQSSBmb3IgYWRkaW5nIGVudHJpZXMKKyMgdG8gdG8gdGhlIENURSB0YWJsZXMsIGJ1dCBZQUdOSSBmb3Igbm93LiAgJ3EnIGlzIFF1b3RlZCBQcmludGFibGUsICdiJyBpcworIyBCYXNlNjQuICBUaGUgbWVhbmluZyBvZiBlbmNvZGVkX3N0cmluZyBzaG91bGQgYmUgb2J2aW91cy4gICdsYW5nJyBpcyBvcHRpb25hbAorIyBhcyBpbmRpY2F0ZWQgYnkgdGhlIGJyYWNrZXRzICh0aGV5IGFyZSBub3QgcGFydCBvZiB0aGUgc3ludGF4KSBidXQgaXMgYWxtb3N0CisjIG5ldmVyIGVuY291bnRlcmVkIGluIHByYWN0aWNlLgorIworIyBUaGUgZ2VuZXJhbCBpbnRlcmZhY2UgZm9yIGEgQ1RFIGRlY29kZXIgaXMgdGhhdCBpdCB0YWtlcyB0aGUgZW5jb2RlZF9zdHJpbmcKKyMgYXMgaXRzIGFyZ3VtZW50LCBhbmQgcmV0dXJucyBhIHR1cGxlIChjdGVfZGVjb2RlZF9zdHJpbmcsIGRlZmVjdHMpLiAgVGhlCisjIGN0ZV9kZWNvZGVkX3N0cmluZyBpcyB0aGUgb3JpZ2luYWwgYmluYXJ5IHRoYXQgd2FzIGVuY29kZWQgdXNpbmcgdGhlCisjIHNwZWNpZmllZCBjdGUuICAnZGVmZWN0cycgaXMgYSBsaXN0IG9mIE1lc3NhZ2VEZWZlY3QgaW5zdGFuY2VzIGluZGljYXRpbmcgYW55CisjIHByb2JsZW1zIGVuY291bnRlcmVkIGR1cmluZyBjb252ZXJzaW9uLiAgJ2NoYXJzZXQnIGFuZCAnbGFuZycgYXJlIHRoZQorIyBjb3JyZXNwb25kaW5nIHN0cmluZ3MgZXh0cmFjdGVkIGZyb20gdGhlIEVXLCBjYXNlIHByZXNlcnZlZC4KKyMKKyMgVGhlIGdlbmVyYWwgaW50ZXJmYWNlIGZvciBhIENURSBlbmNvZGVyIGlzIHRoYXQgaXQgdGFrZXMgYSBiaW5hcnkgc2VxdWVuY2UKKyMgYXMgaW5wdXQgYW5kIHJldHVybnMgdGhlIGN0ZV9lbmNvZGVkX3N0cmluZywgd2hpY2ggaXMgYW4gYXNjaWktb25seSBzdHJpbmcuCisjCisjIEVhY2ggZGVjb2RlciBtdXN0IGFsc28gc3VwcGx5IGEgbGVuZ3RoIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIGJpbmFyeQorIyBzZXF1ZW5jZSBhcyBpdHMgYXJndW1lbnQgYW5kIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIGVuY29kZWQKKyMgc3RyaW5nLgorIworIyBUaGUgbWFpbiBBUEkgZnVuY3Rpb25zIGZvciB0aGUgbW9kdWxlIGFyZSBkZWNvZGUsIHdoaWNoIGNhbGxzIHRoZSBkZWNvZGVyCisjIHJlZmVyZW5jZWQgYnkgdGhlIGN0ZSBzcGVjaWZpZXIsIGFuZCBlbmNvZGUsIHdoaWNoIGFkZHMgdGhlIGFwcHJvcHJpYXRlCisjIFJGQyAyMDQ3ICJjaHJvbWUiIHRvIHRoZSBlbmNvZGVkIHN0cmluZywgYW5kIGNhbiBvcHRpb25hbGx5IGF1dG9tYXRpY2FsbHkKKyMgc2VsZWN0IHRoZSBzaG9ydGVzdCBwb3NzaWJsZSBlbmNvZGluZy4gIFNlZSB0aGVpciBkb2NzdHJpbmdzIGJlbG93IGZvcgorIyBkZXRhaWxzLgorCitpbXBvcnQgcmUKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IGZ1bmN0b29scworZnJvbSBzdHJpbmcgaW1wb3J0IGFzY2lpX2xldHRlcnMsIGRpZ2l0cworZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCisKK19fYWxsX18gPSBbJ2RlY29kZV9xJywKKyAgICAgICAgICAgJ2VuY29kZV9xJywKKyAgICAgICAgICAgJ2RlY29kZV9iJywKKyAgICAgICAgICAgJ2VuY29kZV9iJywKKyAgICAgICAgICAgJ2xlbl9xJywKKyAgICAgICAgICAgJ2xlbl9iJywKKyAgICAgICAgICAgJ2RlY29kZScsCisgICAgICAgICAgICdlbmNvZGUnLAorICAgICAgICAgICBdCisKKyMKKyMgUXVvdGVkIFByaW50YWJsZQorIworCisjIHJlZ2V4IGJhc2VkIGRlY29kZXIuCitfcV9ieXRlX3N1YmJlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHJlLmNvbXBpbGUoYnInPShbYS1mQS1GMC05XXsyfSknKS5zdWIsCisgICAgICAgIGxhbWJkYSBtOiBieXRlcyhbaW50KG0uZ3JvdXAoMSksIDE2KV0pKQorCitkZWYgZGVjb2RlX3EoZW5jb2RlZCk6CisgICAgZW5jb2RlZCA9IGVuY29kZWQucmVwbGFjZShiJ18nLCBiJyAnKQorICAgIHJldHVybiBfcV9ieXRlX3N1YmJlcihlbmNvZGVkKSwgW10KKworCisjIGRpY3QgbWFwcGluZyBieXRlcyB0byB0aGVpciBlbmNvZGVkIGZvcm0KK2NsYXNzIF9RQnl0ZU1hcChkaWN0KToKKworICAgIHNhZmUgPSBiJy0hKisvJyArIGFzY2lpX2xldHRlcnMuZW5jb2RlKCdhc2NpaScpICsgZGlnaXRzLmVuY29kZSgnYXNjaWknKQorCisgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6CisgICAgICAgIGlmIGtleSBpbiBzZWxmLnNhZmU6CisgICAgICAgICAgICBzZWxmW2tleV0gPSBjaHIoa2V5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZltrZXldID0gIj17OjAyWH0iLmZvcm1hdChrZXkpCisgICAgICAgIHJldHVybiBzZWxmW2tleV0KKworX3FfYnl0ZV9tYXAgPSBfUUJ5dGVNYXAoKQorCisjIEluIGhlYWRlcnMgc3BhY2VzIGFyZSBtYXBwZWQgdG8gJ18nLgorX3FfYnl0ZV9tYXBbb3JkKCcgJyldID0gJ18nCisKK2RlZiBlbmNvZGVfcShic3RyaW5nKToKKyAgICByZXR1cm4gJycuam9pbihfcV9ieXRlX21hcFt4XSBmb3IgeCBpbiBic3RyaW5nKQorCitkZWYgbGVuX3EoYnN0cmluZyk6CisgICAgcmV0dXJuIHN1bShsZW4oX3FfYnl0ZV9tYXBbeF0pIGZvciB4IGluIGJzdHJpbmcpCisKKworIworIyBCYXNlNjQKKyMKKworZGVmIGRlY29kZV9iKGVuY29kZWQpOgorICAgIGRlZmVjdHMgPSBbXQorICAgIHBhZF9lcnIgPSBsZW4oZW5jb2RlZCkgJSA0CisgICAgaWYgcGFkX2VycjoKKyAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KCkpCisgICAgICAgIHBhZGRlZF9lbmNvZGVkID0gZW5jb2RlZCArIGInPT09J1s6NC1wYWRfZXJyXQorICAgIGVsc2U6CisgICAgICAgIHBhZGRlZF9lbmNvZGVkID0gZW5jb2RlZAorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUocGFkZGVkX2VuY29kZWQsIHZhbGlkYXRlPVRydWUpLCBkZWZlY3RzCisgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICAjIFNpbmNlIHdlIGhhZCBjb3JyZWN0IHBhZGRpbmcsIHRoaXMgbXVzdCBhbiBpbnZhbGlkIGNoYXIgZXJyb3IuCisgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KCldCisgICAgICAgICMgVGhlIG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIGFyZSBpZ25vcmVkIGFzIGZhciBhcyBwYWRkaW5nCisgICAgICAgICMgZ29lcywgYnV0IHdlIGRvbid0IGtub3cgaG93IG1hbnkgdGhlcmUgYXJlLiAgU28gd2UnbGwganVzdAorICAgICAgICAjIHRyeSB2YXJpb3VzIHBhZGRpbmcgbGVuZ3RocyB1bnRpbCBzb21ldGhpbmcgd29ya3MuCisgICAgICAgIGZvciBpIGluIDAsIDEsIDIsIDM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoZW5jb2RlZCtiJz0nKmksIHZhbGlkYXRlPUZhbHNlKSwgZGVmZWN0cworICAgICAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgorICAgICAgICAgICAgICAgIGlmIGk9PTA6CisgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigidW5leHBlY3RlZCBiaW5hc2NpaS5FcnJvciIpCisKK2RlZiBlbmNvZGVfYihic3RyaW5nKToKKyAgICByZXR1cm4gYmFzZTY0LmI2NGVuY29kZShic3RyaW5nKS5kZWNvZGUoJ2FzY2lpJykKKworZGVmIGxlbl9iKGJzdHJpbmcpOgorICAgIGdyb3Vwc19vZl8zLCBsZWZ0b3ZlciA9IGRpdm1vZChsZW4oYnN0cmluZyksIDMpCisgICAgIyA0IGJ5dGVzIG91dCBmb3IgZWFjaCAzIGJ5dGVzIChvciBub256ZXJvIGZyYWN0aW9uIHRoZXJlb2YpIGluLgorICAgIHJldHVybiBncm91cHNfb2ZfMyAqIDQgKyAoNCBpZiBsZWZ0b3ZlciBlbHNlIDApCisKKworX2N0ZV9kZWNvZGVycyA9IHsKKyAgICAncSc6IGRlY29kZV9xLAorICAgICdiJzogZGVjb2RlX2IsCisgICAgfQorCitkZWYgZGVjb2RlKGV3KToKKyAgICAiIiJEZWNvZGUgZW5jb2RlZCB3b3JkIGFuZCByZXR1cm4gKHN0cmluZywgY2hhcnNldCwgbGFuZywgZGVmZWN0cykgdHVwbGUuCisKKyAgICBBbiBSRkMgMjA0Ny8yMjQzIGVuY29kZWQgd29yZCBoYXMgdGhlIGZvcm06CisKKyAgICAgICAgPT9jaGFyc2V0Kmxhbmc/Y3RlP2VuY29kZWRfc3RyaW5nPz0KKworICAgIHdoZXJlICcqbGFuZycgbWF5IGJlIG9taXR0ZWQgYnV0IHRoZSBvdGhlciBwYXJ0cyBtYXkgbm90IGJlLgorCisgICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIGV4YWN0bHkgc3VjaCBhIHN0cmluZyAodGhhdCBpcywgaXQgZG9lcyBub3QgY2hlY2sgdGhlCisgICAgc3ludGF4IGFuZCBtYXkgcmFpc2UgZXJyb3JzIGlmIHRoZSBzdHJpbmcgaXMgbm90IHdlbGwgZm9ybWVkKSwgYW5kIHJldHVybnMKKyAgICB0aGUgZW5jb2RlZF9zdHJpbmcgZGVjb2RlZCBmaXJzdCBmcm9tIGl0cyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIGFuZAorICAgIHRoZW4gZnJvbSB0aGUgcmVzdWx0aW5nIGJ5dGVzIGludG8gdW5pY29kZSB1c2luZyB0aGUgc3BlY2lmaWVkIGNoYXJzZXQuICBJZgorICAgIHRoZSBjdGUtZGVjb2RlZCBzdHJpbmcgZG9lcyBub3Qgc3VjY2Vzc2Z1bGx5IGRlY29kZSB1c2luZyB0aGUgc3BlY2lmaWVkCisgICAgY2hhcmFjdGVyIHNldCwgYSBkZWZlY3QgaXMgYWRkZWQgdG8gdGhlIGRlZmVjdHMgbGlzdCBhbmQgdGhlIHVua25vd24gb2N0ZXRzCisgICAgYXJlIHJlcGxhY2VkIGJ5IHRoZSB1bmljb2RlICd1bmtub3duJyBjaGFyYWN0ZXIgXHVGREZGLgorCisgICAgVGhlIHNwZWNpZmllZCBjaGFyc2V0IGFuZCBsYW5ndWFnZSBhcmUgcmV0dXJuZWQuICBUaGUgZGVmYXVsdCBmb3IgbGFuZ3VhZ2UsCisgICAgd2hpY2ggaXMgcmFyZWx5IGlmIGV2ZXIgZW5jb3VudGVyZWQsIGlzIHRoZSBlbXB0eSBzdHJpbmcuCisKKyAgICAiIiIKKyAgICBfLCBjaGFyc2V0LCBjdGUsIGN0ZV9zdHJpbmcsIF8gPSBldy5zcGxpdCgnPycpCisgICAgY2hhcnNldCwgXywgbGFuZyA9IGNoYXJzZXQucGFydGl0aW9uKCcqJykKKyAgICBjdGUgPSBjdGUubG93ZXIoKQorICAgICMgUmVjb3ZlciB0aGUgb3JpZ2luYWwgYnl0ZXMgYW5kIGRvIENURSBkZWNvZGluZy4KKyAgICBic3RyaW5nID0gY3RlX3N0cmluZy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgYnN0cmluZywgZGVmZWN0cyA9IF9jdGVfZGVjb2RlcnNbY3RlXShic3RyaW5nKQorICAgICMgVHVybiB0aGUgQ1RFIGRlY29kZWQgYnl0ZXMgaW50byB1bmljb2RlLgorICAgIHRyeToKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoY2hhcnNldCkKKyAgICBleGNlcHQgVW5pY29kZUVycm9yOgorICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgiRW5jb2RlZCB3b3JkICIKKyAgICAgICAgICAgICJjb250YWlucyBieXRlcyBub3QgZGVjb2RhYmxlIHVzaW5nIHt9IGNoYXJzZXQiLmZvcm1hdChjaGFyc2V0KSkpCisgICAgICAgIHN0cmluZyA9IGJzdHJpbmcuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgIGlmIGNoYXJzZXQubG93ZXIoKSAhPSAndW5rbm93bi04Yml0JzoKKyAgICAgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5DaGFyc2V0RXJyb3IoIlVua25vd24gY2hhcnNldCB7fSAiCisgICAgICAgICAgICAgICAgImluIGVuY29kZWQgd29yZDsgZGVjb2RlZCBhcyB1bmtub3duIGJ5dGVzIi5mb3JtYXQoY2hhcnNldCkpKQorICAgIHJldHVybiBzdHJpbmcsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMKKworCitfY3RlX2VuY29kZXJzID0geworICAgICdxJzogZW5jb2RlX3EsCisgICAgJ2InOiBlbmNvZGVfYiwKKyAgICB9CisKK19jdGVfZW5jb2RlX2xlbmd0aCA9IHsKKyAgICAncSc6IGxlbl9xLAorICAgICdiJzogbGVuX2IsCisgICAgfQorCitkZWYgZW5jb2RlKHN0cmluZywgY2hhcnNldD0ndXRmLTgnLCBlbmNvZGluZz1Ob25lLCBsYW5nPScnKToKKyAgICAiIiJFbmNvZGUgc3RyaW5nIHVzaW5nIHRoZSBDVEUgZW5jb2RpbmcgdGhhdCBwcm9kdWNlcyB0aGUgc2hvcnRlciByZXN1bHQuCisKKyAgICBQcm9kdWNlcyBhbiBSRkMgMjA0Ny8yMjQzIGVuY29kZWQgd29yZCBvZiB0aGUgZm9ybToKKworICAgICAgICA9P2NoYXJzZXQqbGFuZz9jdGU/ZW5jb2RlZF9zdHJpbmc/PQorCisgICAgd2hlcmUgJypsYW5nJyBpcyBvbWl0dGVkIHVubGVzcyB0aGUgJ2xhbmcnIHBhcmFtZXRlciBpcyBnaXZlbiBhIHZhbHVlLgorICAgIE9wdGlvbmFsIGFyZ3VtZW50IGNoYXJzZXQgKGRlZmF1bHRzIHRvIHV0Zi04KSBzcGVjaWZpZXMgdGhlIGNoYXJzZXQgdG8gdXNlCisgICAgdG8gZW5jb2RlIHRoZSBzdHJpbmcgdG8gYmluYXJ5IGJlZm9yZSBDVEUgZW5jb2RpbmcgaXQuICBPcHRpb25hbCBhcmd1bWVudAorICAgICdlbmNvZGluZycgaXMgdGhlIGN0ZSBzcGVjaWZpZXIgZm9yIHRoZSBlbmNvZGluZyB0aGF0IHNob3VsZCBiZSB1c2VkICgncScKKyAgICBvciAnYicpOyBpZiBpdCBpcyBOb25lICh0aGUgZGVmYXVsdCkgdGhlIGVuY29kaW5nIHdoaWNoIHByb2R1Y2VzIHRoZQorICAgIHNob3J0ZXN0IGVuY29kZWQgc2VxdWVuY2UgaXMgdXNlZCwgZXhjZXB0IHRoYXQgJ3EnIGlzIHByZWZlcnJlZCBpZiBpdCBpcyB1cAorICAgIHRvIGZpdmUgY2hhcmFjdGVycyBsb25nZXIuICBPcHRpb25hbCBhcmd1bWVudCAnbGFuZycgKGRlZmF1bHQgJycpIGdpdmVzIHRoZQorICAgIFJGQyAyMjQzIGxhbmd1YWdlIHN0cmluZyB0byBzcGVjaWZ5IGluIHRoZSBlbmNvZGVkIHdvcmQuCisKKyAgICAiIiIKKyAgICBpZiBjaGFyc2V0ID09ICd1bmtub3duLThiaXQnOgorICAgICAgICBic3RyaW5nID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICBlbHNlOgorICAgICAgICBic3RyaW5nID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KQorICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CisgICAgICAgIHFsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ3EnXShic3RyaW5nKQorICAgICAgICBibGVuID0gX2N0ZV9lbmNvZGVfbGVuZ3RoWydiJ10oYnN0cmluZykKKyAgICAgICAgIyBCaWFzIHRvd2FyZCBxLiAgNSBpcyBhcmJpdHJhcnkuCisgICAgICAgIGVuY29kaW5nID0gJ3EnIGlmIHFsZW4gLSBibGVuIDwgNSBlbHNlICdiJworICAgIGVuY29kZWQgPSBfY3RlX2VuY29kZXJzW2VuY29kaW5nXShic3RyaW5nKQorICAgIGlmIGxhbmc6CisgICAgICAgIGxhbmcgPSAnKicgKyBsYW5nCisgICAgcmV0dXJuICI9P3t9e30/e30/e30/PSIuZm9ybWF0KGNoYXJzZXQsIGxhbmcsIGVuY29kaW5nLCBlbmNvZGVkKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MjRlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyOTUzIEBACisiIiJIZWFkZXIgdmFsdWUgcGFyc2VyIGltcGxlbWVudGluZyB2YXJpb3VzIGVtYWlsLXJlbGF0ZWQgUkZDIHBhcnNpbmcgcnVsZXMuCisKK1RoZSBwYXJzaW5nIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBpbXBsZW1lbnQgdmFyaW91cyBlbWFpbCByZWxhdGVkCitwYXJzaW5nIHJ1bGVzLiAgUHJpbmNpcGFsIGFtb25nIHRoZW0gaXMgUkZDIDUzMjIsIHdoaWNoIGlzIHRoZSBmb2xsb3dvbgordG8gUkZDIDI4MjIgYW5kIHByaW1hcmlseSBhIGNsYXJpZmljYXRpb24gb2YgdGhlIGZvcm1lci4gIEl0IGFsc28gaW1wbGVtZW50cworUkZDIDIwNDcgZW5jb2RlZCB3b3JkIGRlY29kaW5nLgorCitSRkMgNTMyMiBnb2VzIHRvIGNvbnNpZGVyYWJsZSB0cm91YmxlIHRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAorUkZDIDgyMiBpbiB0aGUgcGFyc2UgcGhhc2UsIHdoaWxlIGNsZWFuaW5nIHVwIHRoZSBzdHJ1Y3R1cmUgb24gdGhlIGdlbmVyYXRpb24KK3BoYXNlLiAgVGhpcyBwYXJzZXIgc3VwcG9ydHMgY29ycmVjdCBSRkMgNTMyMiBnZW5lcmF0aW9uIGJ5IHRhZ2dpbmcgd2hpdGUgc3BhY2UKK2FzIGZvbGRpbmcgd2hpdGUgc3BhY2Ugb25seSB3aGVuIGZvbGRpbmcgaXMgYWxsb3dlZCBpbiB0aGUgbm9uLW9ic29sZXRlIHJ1bGUKK3NldHMuICBBY3R1YWxseSwgdGhlIHBhcnNlciBpcyBldmVuIG1vcmUgZ2VuZXJvdXMgd2hlbiBhY2NlcHRpbmcgaW5wdXQgdGhhbiBSRkMKKzUzMjIgbWFuZGF0ZXMsIGZvbGxvd2luZyB0aGUgc3Bpcml0IG9mIFBvc3RlbCdzIExhdywgd2hpY2ggUkZDIDUzMjIgZW5jb3VyYWdlcy4KK1doZXJlIHBvc3NpYmxlIGRldmlhdGlvbnMgZnJvbSB0aGUgc3RhbmRhcmQgYXJlIGFubm90YXRlZCBvbiB0aGUgJ2RlZmVjdHMnCithdHRyaWJ1dGUgb2YgdG9rZW5zIHRoYXQgZGV2aWF0ZS4KKworVGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZSBwYXJzZXIgZm9sbG93cyBSRkMgNTMyMiwgYW5kIHVzZXMgaXRzIHRlcm1pbm9sb2d5Cit3aGVyZSB0aGVyZSBpcyBhIGRpcmVjdCBjb3JyZXNwb25kZW5jZS4gIFdoZXJlIHRoZSBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBhCitzb21ld2hhdCBkaWZmZXJlbnQgc3RydWN0dXJlIHRoYW4gdGhhdCB1c2VkIGJ5IHRoZSBmb3JtYWwgZ3JhbW1hciwgbmV3IHRlcm1zCit0aGF0IG1pbWljIHRoZSBjbG9zZXN0IGV4aXN0aW5nIHRlcm1zIGFyZSB1c2VkLiAgVGh1cywgaXQgcmVhbGx5IGhlbHBzIHRvIGhhdmUKK2EgY29weSBvZiBSRkMgNTMyMiBoYW5keSB3aGVuIHN0dWR5aW5nIHRoaXMgY29kZS4KKworSW5wdXQgdG8gdGhlIHBhcnNlciBpcyBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5mb2xkZWQgYWNjb3JkaW5nIHRvCitSRkMgNTMyMiBydWxlcy4gIEFjY29yZGluZyB0byB0aGUgUkZDIHRoaXMgdW5mb2xkaW5nIGlzIHRoZSB2ZXJ5IGZpcnN0IHN0ZXAsIGFuZAordGhpcyBwYXJzZXIgbGVhdmVzIHRoZSB1bmZvbGRpbmcgc3RlcCB0byBhIGhpZ2hlciBsZXZlbCBtZXNzYWdlIHBhcnNlciwgd2hpY2gKK3dpbGwgaGF2ZSBhbHJlYWR5IGRldGVjdGVkIHRoZSBsaW5lIGJyZWFrcyB0aGF0IG5lZWQgdW5mb2xkaW5nIHdoaWxlCitkZXRlcm1pbmluZyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgZWFjaCBoZWFkZXIuCisKK1RoZSBvdXRwdXQgb2YgdGhlIHBhcnNlciBpcyBhIFRva2VuTGlzdCBvYmplY3QsIHdoaWNoIGlzIGEgbGlzdCBzdWJjbGFzcy4gIEEKK1Rva2VuTGlzdCBpcyBhIHJlY3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZS4gIFRoZSB0ZXJtaW5hbCBub2RlcyBvZiB0aGUgc3RydWN0dXJlCithcmUgVGVybWluYWwgb2JqZWN0cywgd2hpY2ggYXJlIHN1YmNsYXNzZXMgb2Ygc3RyLiAgVGhlc2UgZG8gbm90IGNvcnJlc3BvbmQKK2RpcmVjdGx5IHRvIHRlcm1pbmFsIG9iamVjdHMgaW4gdGhlIGZvcm1hbCBncmFtbWFyLCBidXQgYXJlIGluc3RlYWQgbW9yZQorcHJhY3RpY2FsIGhpZ2hlciBsZXZlbCBjb21iaW5hdGlvbnMgb2YgdHJ1ZSB0ZXJtaW5hbHMuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICd2YWx1ZScgYXR0cmlidXRlLCB3aGljaCBwcm9kdWNlcyB0aGUKK3NlbWFudGljYWxseSBtZWFuaW5nZnVsIHZhbHVlIG9mIHRoYXQgcGFydCBvZiB0aGUgcGFyc2Ugc3VidHJlZS4gIFRoZSB2YWx1ZSBvZgorYWxsIHdoaXRlc3BhY2UgdG9rZW5zIChubyBtYXR0ZXIgaG93IG1hbnkgc3ViLXRva2VucyB0aGV5IG1heSBjb250YWluKSBpcyBhCitzaW5nbGUgc3BhY2UsIGFzIHBlciB0aGUgUkZDIHJ1bGVzLiAgVGhpcyBpbmNsdWRlcyAnQ0ZXUycsIHdoaWNoIGlzIGhlcmVpbgoraW5jbHVkZWQgaW4gdGhlIGdlbmVyYWwgY2xhc3Mgb2Ygd2hpdGVzcGFjZSB0b2tlbnMuICBUaGVyZSBpcyBvbmUgZXhjZXB0aW9uIHRvCit0aGUgcnVsZSB0aGF0IHdoaXRlc3BhY2UgdG9rZW5zIGFyZSBjb2xsYXBzZWQgaW50byBzaW5nbGUgc3BhY2VzIGluIHZhbHVlczogaW4KK3RoZSB2YWx1ZSBvZiBhICdiYXJlLXF1b3RlZC1zdHJpbmcnIChhIHF1b3RlZC1zdHJpbmcgd2l0aCBubyBsZWFkaW5nIG9yCit0cmFpbGluZyB3aGl0ZXNwYWNlKSwgYW55IHdoaXRlc3BhY2UgdGhhdCBhcHBlYXJlZCBiZXR3ZWVuIHRoZSBxdW90YXRpb24gbWFya3MKK2lzIHByZXNlcnZlZCBpbiB0aGUgcmV0dXJuZWQgdmFsdWUuICBOb3RlIHRoYXQgaW4gYWxsIFRlcm1pbmFsIHN0cmluZ3MgcXVvdGVkCitwYWlycyBhcmUgdHVybmVkIGludG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLgorCitBbGwgVG9rZW5MaXN0IGFuZCBUZXJtaW5hbCBvYmplY3RzIGFsc28gaGF2ZSBhIHN0cmluZyB2YWx1ZSwgd2hpY2ggYXR0ZW1wdHMgdG8KK2JlIGEgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gb2YgdGhlIFJGQy1jb21wbGlhbnQgZm9ybSBvZiB0aGUgc3Vic3RyaW5nIHRoYXQKK3Byb2R1Y2VkIHRoZSBwYXJzZWQgc3VidHJlZSwgaW5jbHVkaW5nIG1pbmltYWwgdXNlIG9mIHF1b3RlZCBwYWlyIHF1b3RpbmcuCitXaGl0ZXNwYWNlIHJ1bnMgYXJlIG5vdCBjb2xsYXBzZWQuCisKK0NvbW1lbnQgdG9rZW5zIGFsc28gaGF2ZSBhICdjb250ZW50JyBhdHRyaWJ1dGUgcHJvdmlkaW5nIHRoZSBzdHJpbmcgZm91bmQKK2JldHdlZW4gdGhlIHBhcmVucyAoaW5jbHVkaW5nIGFueSBuZXN0ZWQgY29tbWVudHMpIHdpdGggd2hpdGVzcGFjZSBwcmVzZXJ2ZWQuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgaGF2ZSBhICdkZWZlY3RzJyBhdHRyaWJ1dGUgd2hpY2ggaXMgYQorcG9zc2libHkgZW1wdHkgbGlzdCBhbGwgb2YgdGhlIGRlZmVjdHMgZm91bmQgd2hpbGUgY3JlYXRpbmcgdGhlIHRva2VuLiAgRGVmZWN0cworbWF5IGFwcGVhciBvbiBhbnkgdG9rZW4gaW4gdGhlIHRyZWUsIGFuZCBhIGNvbXBvc2l0ZSBsaXN0IG9mIGFsbCBkZWZlY3RzIGluIHRoZQorc3VidHJlZSBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgJ2FsbF9kZWZlY3RzJyBhdHRyaWJ1dGUgb2YgYW55IG5vZGUuICAoRm9yCitUZXJtaW5hbCBub3RlcyB4LmRlZmVjdHMgPT0geC5hbGxfZGVmZWN0cy4pCisKK0VhY2ggb2JqZWN0IGluIGEgcGFyc2UgdHJlZSBpcyBjYWxsZWQgYSAndG9rZW4nLCBhbmQgZWFjaCBoYXMgYSAndG9rZW5fdHlwZScKK2F0dHJpYnV0ZSB0aGF0IGdpdmVzIHRoZSBuYW1lIGZyb20gdGhlIFJGQyA1MzIyIGdyYW1tYXIgdGhhdCBpdCByZXByZXNlbnRzLgorTm90IGFsbCBSRkMgNTMyMiBub2RlcyBhcmUgcHJvZHVjZWQsIGFuZCB0aGVyZSBpcyBvbmUgbm9uLVJGQyA1MzIyIG5vZGUgdGhhdAorbWF5IGJlIHByb2R1Y2VkOiAncHRleHQnLiAgQSAncHRleHQnIGlzIGEgc3RyaW5nIG9mIHByaW50YWJsZSBhc2NpaSBjaGFyYWN0ZXJzLgorSXQgaXMgcmV0dXJuZWQgaW4gcGxhY2Ugb2YgbGlzdHMgb2YgKGN0ZXh0L3F1b3RlZC1wYWlyKSBhbmQKKyhxdGV4dC9xdW90ZWQtcGFpcikuCisKK1hYWDogcHJvdmlkZSBjb21wbGV0ZSBsaXN0IG9mIHRva2VuIHR5cGVzLgorIiIiCisKK2ltcG9ydCByZQoraW1wb3J0IHVybGxpYiAgICMgRm9yIHVybGxpYi5wYXJzZS51bnF1b3RlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLCBPcmRlcmVkRGljdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCisKKyMKKyMgVXNlZnVsIGNvbnN0YW50cyBhbmQgZnVuY3Rpb25zCisjCisKK1dTUCA9IHNldCgnIFx0JykKK0NGV1NfTEVBREVSID0gV1NQIHwgc2V0KCcoJykKK1NQRUNJQUxTID0gc2V0KHInKCk8PkAsOjsuXCJbXScpCitBVE9NX0VORFMgPSBTUEVDSUFMUyB8IFdTUAorRE9UX0FUT01fRU5EUyA9IEFUT01fRU5EUyAtIHNldCgnLicpCisjICcuJywgJyInLCBhbmQgJygnIGRvIG5vdCBlbmQgcGhyYXNlcyBpbiBvcmRlciB0byBzdXBwb3J0IG9icy1waHJhc2UKK1BIUkFTRV9FTkRTID0gU1BFQ0lBTFMgLSBzZXQoJy4iKCcpCitUU1BFQ0lBTFMgPSAoU1BFQ0lBTFMgfCBzZXQoJy8/PScpKSAtIHNldCgnLicpCitUT0tFTl9FTkRTID0gVFNQRUNJQUxTIHwgV1NQCitBU1BFQ0lBTFMgPSBUU1BFQ0lBTFMgfCBzZXQoIionJSIpCitBVFRSSUJVVEVfRU5EUyA9IEFTUEVDSUFMUyB8IFdTUAorRVhURU5ERURfQVRUUklCVVRFX0VORFMgPSBBVFRSSUJVVEVfRU5EUyAtIHNldCgnJScpCisKK2RlZiBxdW90ZV9zdHJpbmcodmFsdWUpOgorICAgIHJldHVybiAnIicrc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgnIicsIHInXCInKSsnIicKKworIworIyBBY2N1bXVsYXRvciBmb3IgaGVhZGVyIGZvbGRpbmcKKyMKKworY2xhc3MgX0ZvbGRlZDoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhsZW4sIHBvbGljeSk6CisgICAgICAgIHNlbGYubWF4bGVuID0gbWF4bGVuCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgIHNlbGYubGFzdGxlbiA9IDAKKyAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBUcnVlCisgICAgICAgIHNlbGYuZG9uZSA9IFtdCisgICAgICAgIHNlbGYuY3VycmVudCA9IFtdCisKKyAgICBkZWYgbmV3bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5kb25lLmV4dGVuZChzZWxmLmN1cnJlbnQpCisgICAgICAgIHNlbGYuZG9uZS5hcHBlbmQoc2VsZi5wb2xpY3kubGluZXNlcCkKKyAgICAgICAgc2VsZi5jdXJyZW50LmNsZWFyKCkKKyAgICAgICAgc2VsZi5sYXN0bGVuID0gMAorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmN1cnJlbnQ6CisgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHNlbGYuZG9uZSkKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgc3Rva2VuKToKKyAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisKKyAgICBkZWYgYXBwZW5kX2lmX2ZpdHMoc2VsZiwgdG9rZW4sIHN0b2tlbj1Ob25lKToKKyAgICAgICAgaWYgc3Rva2VuIGlzIE5vbmU6CisgICAgICAgICAgICBzdG9rZW4gPSBzdHIodG9rZW4pCisgICAgICAgIGwgPSBsZW4oc3Rva2VuKQorICAgICAgICBpZiBzZWxmLnN0aWNreXNwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuID0gbGVuKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICBpZiBzZWxmLmxhc3RsZW4gKyBzdGlja3lzcGFjZV9sZW4gKyBsIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gc3RpY2t5c3BhY2VfbGVuCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICAgICAgc2VsZi5sYXN0bGVuICs9IGwKKyAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgdG9rZW4uaGFzX2Z3czoKKyAgICAgICAgICAgICAgICB3cyA9IHRva2VuLnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICAgICAgaWYgd3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgKz0gc3RyKHdzKQorICAgICAgICAgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gKz0gbGVuKHdzKQorICAgICAgICAgICAgICAgIHRva2VuLl9mb2xkKHNlbGYpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIHN0aWNreXNwYWNlX2xlbiBhbmQgbCArIDEgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICAgICAgbWFyZ2luID0gc2VsZi5tYXhsZW4gLSBsCisgICAgICAgICAgICAgICAgaWYgMCA8IG1hcmdpbiA8IHN0aWNreXNwYWNlX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgdHJpbSA9IHN0aWNreXNwYWNlX2xlbiAtIG1hcmdpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2VbOnRyaW1dKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gc2VsZi5zdGlja3lzcGFjZVt0cmltOl0KKyAgICAgICAgICAgICAgICAgICAgc3RpY2t5c3BhY2VfbGVuID0gdHJpbQorICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgICAgIHNlbGYubGFzdGxlbiA9IGwgKyBzdGlja3lzcGFjZV9sZW4KKyAgICAgICAgICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuZmlyc3RsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICBzZWxmLmZpcnN0bGluZSA9IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLmxhc3RsZW4gKyBsIDw9IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gbAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgbCA8IHNlbGYubWF4bGVuOgorICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgc2VsZi5sYXN0bGVuID0gbAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyMKKyMgVG9rZW5MaXN0IGFuZCBpdHMgc3ViY2xhc3NlcworIworCitjbGFzcyBUb2tlbkxpc3QobGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gTm9uZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICd7fSh7fSknLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbih4LnZhbHVlIGZvciB4IGluIHNlbGYgaWYgeC52YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1bSgoeC5hbGxfZGVmZWN0cyBmb3IgeCBpbiBzZWxmKSwgc2VsZi5kZWZlY3RzKQorCisgICAgIworICAgICMgRm9sZGluZyBBUEkKKyAgICAjCisgICAgIyBwYXJ0cygpOgorICAgICMKKyAgICAjIHJldHVybiBhIGxpc3Qgb2Ygb2JqZWN0cyB0aGF0IGNvbnN0aXR1dGUgdGhlICJoaWdoZXIgbGV2ZWwgc3ludGFjdGljCisgICAgIyBvYmplY3RzIiBzcGVjaWZpZWQgYnkgdGhlIFJGQyBhcyB0aGUgYmVzdCBwbGFjZXMgdG8gZm9sZCBhIGhlYWRlciBsaW5lLgorICAgICMgVGhlIHJldHVybmVkIG9iamVjdHMgbXVzdCBpbmNsdWRlIGxlYWRpbmcgZm9sZGluZyB3aGl0ZSBzcGFjZSwgZXZlbiBpZgorICAgICMgdGhpcyBtZWFucyBtdXRhdGluZyB0aGUgdW5kZXJseWluZyBwYXJzZSB0cmVlIG9mIHRoZSBvYmplY3QuICBFYWNoIG9iamVjdAorICAgICMgaXMgb25seSByZXNwb25zaWJsZSBmb3IgcmV0dXJuaW5nICppdHMqIHBhcnRzLCBhbmQgc2hvdWxkIG5vdCBkcmlsbCBkb3duCisgICAgIyB0byBhbnkgbG93ZXIgbGV2ZWwgZXhjZXB0IGFzIHJlcXVpcmVkIHRvIG1lZXQgdGhlIGxlYWRpbmcgZm9sZGluZyB3aGl0ZQorICAgICMgc3BhY2UgY29uc3RyYWludC4KKyAgICAjCisgICAgIyBfZm9sZChmb2xkZWQpOgorICAgICMKKyAgICAjICAgZm9sZGVkOiB0aGUgcmVzdWx0IGFjY3VtdWxhdG9yLiAgVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiBfRm9sZGVkLgorICAgICMgICAgICAgKFhYWDogSSBoYXZlbid0IGZpbmlzaGVkIGZhY3RvcmluZyB0aGlzIG91dCB5ZXQsIHRoZSBmb2xkaW5nIGNvZGUKKyAgICAjICAgICAgIHByZXR0eSBtdWNoIHVzZXMgdGhpcyBhcyBhIHN0YXRlIG9iamVjdC4pIFdoZW4gdGhlIGZvbGRlZC5jdXJyZW50CisgICAgIyAgICAgICBjb250YWlucyBhcyBtdWNoIHRleHQgYXMgd2lsbCBmaXQsIHRoZSBfZm9sZCBtZXRob2Qgc2hvdWxkIGNhbGwKKyAgICAjICAgICAgIGZvbGRlZC5uZXdsaW5lLgorICAgICMgIGZvbGRlZC5sYXN0bGVuOiB0aGUgY3VycmVudCBsZW5ndGggb2YgdGhlIHRlc3Qgc3RvcmVkIGluIGZvbGRlZC5jdXJyZW50LgorICAgICMgIGZvbGRlZC5tYXhsZW46IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF5IGFwcGVhciBvbiBhCisgICAgIyAgICAgICBmb2xkZWQgbGluZS4gIERpZmZlcnMgZnJvbSB0aGUgcG9saWN5IHNldHRpbmcgaW4gdGhhdCAibm8gbGltaXQiIGlzCisgICAgIyAgICAgICByZXByZXNlbnRlZCBieSAraW5mLCB3aGljaCBtZWFucyBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgdHJpdmlhbGx5CisgICAgIyAgICAgICBsb2dpY2FsIGZhc2hpb24gaW4gY29tcGFyaXNvbnMuCisgICAgIworICAgICMgQ3VycmVudGx5IG5vIHN1YmNsYXNzZXMgaW1wbGVtZW50IHBhcnRzLCBhbmQgSSB0aGluayB0aGlzIHdpbGwgcmVtYWluCisgICAgIyB0cnVlLiAgQSBzdWJjbGFzcyBvbmx5IG5lZWRzIHRvIGltcGxlbWVudCBfZm9sZCB3aGVuIHRoZSBnZW5lcmljIHZlcnNpb24KKyAgICAjIGlzbid0IHN1ZmZpY2llbnQuICBfZm9sZCB3aWxsIG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQgcHJpbWFyaWx5IHdoZW4gaXQgaXMKKyAgICAjIHBvc3NpYmxlIGZvciBlbmNvZGVkIHdvcmRzIHRvIGFwcGVhciBpbiB0aGUgc3BlY2lhbGl6ZWQgdG9rZW4tbGlzdCwgc2luY2UKKyAgICAjIHRoZXJlIGlzIG5vIGdlbmVyaWMgYWxnb3JpdGhtIHRoYXQgY2FuIGtub3cgd2hlcmUgZXhhY3RseSB0aGUgZW5jb2RlZAorICAgICMgd29yZHMgYXJlIGFsbG93ZWQuICBBIF9mb2xkIGltcGxlbWVudGF0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nCisgICAgIyBsaW5lcyBpbiB0aGUgc2FtZSBnZW5lcmFsIHdheSB0aGF0IHRoZSB0b3AgbGV2ZWwgX2ZvbGQgZG9lcy4gSXQgbWF5LCBhbmQKKyAgICAjIHNob3VsZCwgY2FsbCB0aGUgX2ZvbGQgbWV0aG9kIG9mIHN1Yi1vYmplY3RzIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIHRoYXQKKyAgICAjIG9mIHRoZSB0b3AgbGV2ZWwgX2ZvbGQuCisgICAgIworICAgICMgWFhYOiBJJ20gaG9waW5nIGl0IHdpbGwgYmUgcG9zc2libGUgdG8gZmFjdG9yIHRoZSBleGlzdGluZyBjb2RlIGZ1cnRoZXIKKyAgICAjIHRvIHJlZHVjZSByZWR1bmRhbmN5IGFuZCBtYWtlIHRoZSBsb2dpYyBjbGVhcmVyLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRzKHNlbGYpOgorICAgICAgICBrbGFzcyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIHRoaXMgPSBbXQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnN0YXJ0c3dpdGhfZndzKCk6CisgICAgICAgICAgICAgICAgaWYgdGhpczoKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdGhpc1swXSBpZiBsZW4odGhpcyk9PTEgZWxzZSBrbGFzcyh0aGlzKQorICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCkKKyAgICAgICAgICAgIGVuZF93cyA9IHRva2VuLnBvcF90cmFpbGluZ193cygpCisgICAgICAgICAgICB0aGlzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGlmIGVuZF93czoKKyAgICAgICAgICAgICAgICB5aWVsZCBrbGFzcyh0aGlzKQorICAgICAgICAgICAgICAgIHRoaXMgPSBbZW5kX3dzXQorICAgICAgICBpZiB0aGlzOgorICAgICAgICAgICAgeWllbGQgdGhpc1swXSBpZiBsZW4odGhpcyk9PTEgZWxzZSBrbGFzcyh0aGlzKQorCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5zdGFydHN3aXRoX2Z3cygpCisKKyAgICBkZWYgcG9wX2xlYWRpbmdfZndzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ2Z3cyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wb3AoMCkKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ucG9wX2xlYWRpbmdfZndzKCkKKworICAgIGRlZiBwb3BfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIGlmIHNlbGZbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9wKC0xKQorICAgICAgICByZXR1cm4gc2VsZlstMV0ucG9wX3RyYWlsaW5nX3dzKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoYXNfZndzKHNlbGYpOgorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgcGFydC5oYXNfZndzOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmhhc19sZWFkaW5nX2NvbW1lbnQoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICBjb21tZW50cyA9IFtdCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgY29tbWVudHMuZXh0ZW5kKHRva2VuLmNvbW1lbnRzKQorICAgICAgICByZXR1cm4gY29tbWVudHMKKworICAgIGRlZiBmb2xkKHNlbGYsICosIHBvbGljeSk6CisgICAgICAgICMgbWF4X2xpbmVfbGVuZ3RoIDAvTm9uZSBtZWFucyBubyBsaW1pdCwgaWU6IGluZmluaXRlbHkgbG9uZy4KKyAgICAgICAgbWF4bGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCBvciBmbG9hdCgiK2luZiIpCisgICAgICAgIGZvbGRlZCA9IF9Gb2xkZWQobWF4bGVuLCBwb2xpY3kpCisgICAgICAgIHNlbGYuX2ZvbGQoZm9sZGVkKQorICAgICAgICBmb2xkZWQuZmluYWxpemUoKQorICAgICAgICByZXR1cm4gc3RyKGZvbGRlZCkKKworICAgIGRlZiBhc19lbmNvZGVkX3dvcmQoc2VsZiwgY2hhcnNldCk6CisgICAgICAgICMgVGhpcyB3b3JrcyBvbmx5IGZvciB0aGluZ3MgcmV0dXJuZWQgYnkgJ3BhcnRzJywgd2hpY2ggaW5jbHVkZQorICAgICAgICAjIHRoZSBsZWFkaW5nIGZ3cywgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkLgorICAgICAgICByZXMgPSBbXQorICAgICAgICB3cyA9IHNlbGYucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgaWYgd3M6CisgICAgICAgICAgICByZXMuYXBwZW5kKHdzKQorICAgICAgICB0cmFpbGVyID0gc2VsZi5wb3AoLTEpIGlmIHNlbGZbLTFdLnRva2VuX3R5cGU9PSdmd3MnIGVsc2UgJycKKyAgICAgICAgcmVzLmFwcGVuZChfZXcuZW5jb2RlKHN0cihzZWxmKSwgY2hhcnNldCkpCisgICAgICAgIHJlcy5hcHBlbmQodHJhaWxlcikKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQocGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIHBvbGljeSkpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBmb3IgcGFydCBpbiBzZWxmLnBhcnRzOgorICAgICAgICAgICAgdHN0ciA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBYWFg6IHRoaXMgc2hvdWxkIGJlIGEgcG9saWN5IHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5jdGVfZW5jb2RlKGNoYXJzZXQsIGZvbGRlZC5wb2xpY3kpCisgICAgICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQsIHRzdHIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgaWYgYW55IGFuZCBtYWtlIGl0IHN0aWNreSwgdG8KKyAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgd3MgPSBwYXJ0LnBvcF9sZWFkaW5nX2Z3cygpCisgICAgICAgICAgICBpZiB3cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFBlZWwgb2ZmIHRoZSBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgICAgICMgYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cihwYXJ0LnBvcCgwKSkKKyAgICAgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcGFydC5fZm9sZChmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgVGhlcmUgYXJlIG5vIGZvbGQgcG9pbnRzIGluIHRoaXMgb25lOyBpdCBpcyB0b28gbG9uZyBmb3IgYSBzaW5nbGUKKyAgICAgICAgICAgICMgbGluZSBhbmQgY2FuJ3QgYmUgc3BsaXQuLi53ZSBqdXN0IGhhdmUgdG8gcHV0IGl0IG9uIGl0cyBvd24gbGluZS4KKyAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQodHN0cikKKyAgICAgICAgICAgIGZvbGRlZC5uZXdsaW5lKCkKKworICAgIGRlZiBwcHJpbnQoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgcHJpbnQoJ1xuJy5qb2luKHNlbGYuX3BwKGluZGVudD0nJykpKQorCisgICAgZGVmIHBwc3RyKHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHJldHVybiAnXG4nLmpvaW4oc2VsZi5fcHAoaW5kZW50PScnKSkKKworICAgIGRlZiBfcHAoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgeWllbGQgJ3t9e30ve30oJy5mb3JtYXQoCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSkKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih0b2tlbiwgJ19wcCcpOgorICAgICAgICAgICAgICAgIHlpZWxkIChpbmRlbnQgKyAnICAgICEhIGludmFsaWQgZWxlbWVudCBpbiB0b2tlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpc3Q6IHshcn0nLmZvcm1hdCh0b2tlbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHRva2VuLl9wcChpbmRlbnQrJyAgICAnKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICBpZiBzZWxmLmRlZmVjdHM6CisgICAgICAgICAgICBleHRyYSA9ICcgRGVmZWN0czoge30nLmZvcm1hdChzZWxmLmRlZmVjdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHRyYSA9ICcnCisgICAgICAgIHlpZWxkICd7fSl7fScuZm9ybWF0KGluZGVudCwgZXh0cmEpCisKKworY2xhc3MgV2hpdGVTcGFjZVRva2VuTGlzdChUb2tlbkxpc3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJyAnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbeC5jb250ZW50IGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nY29tbWVudCddCisKKworY2xhc3MgVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3Vuc3RydWN0dXJlZCcKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBpZiBhbnkoeC50b2tlbl90eXBlPT0nZW5jb2RlZC13b3JkJyBmb3IgeCBpbiBzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9mb2xkX2VuY29kZWQoZm9sZGVkKQorICAgICAgICAjIEhlcmUgd2UgY2FuIGhhdmUgZWl0aGVyIGEgcHVyZSBBU0NJSSBzdHJpbmcgdGhhdCBtYXkgb3IgbWF5IG5vdAorICAgICAgICAjIGhhdmUgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgYnl0ZXMsIG9yIGEgdW5pY29kZSBzdHJpbmcuCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICBpc19ldyA9IEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gcGFydC5hbGxfZGVmZWN0cyk6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndXRmLTgnCisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSd2ZSBhbHJlYWR5IGRvbmUgYW4gRVcsIGNvbWJpbmUgdGhpcyBvbmUgd2l0aCBpdAorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZXJlJ3Mgcm9vbS4KKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBnZXRfdW5zdHJ1Y3R1cmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0rW3RzdHJdKSkuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgICAgIG9sZGxhc3RsZW4gPSBzdW0obGVuKHgpIGZvciB4IGluIGZvbGRlZC5jdXJyZW50WzpsYXN0X2V3XSkKKyAgICAgICAgICAgICAgICAgICAgc2NodW5rID0gc3RyKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBsY2h1bmsgPSBsZW4oc2NodW5rKQorICAgICAgICAgICAgICAgICAgICBpZiBvbGRsYXN0bGVuICsgbGNodW5rIDw9IGZvbGRlZC5tYXhsZW46CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gb2xkbGFzdGxlbiArIGxjaHVuaworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB0c3RyID0gcGFydC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICBpc19ldyA9IFRydWUKKyAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0LCB0c3RyKToKKyAgICAgICAgICAgICAgICBpZiBpc19ldzoKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihmb2xkZWQuY3VycmVudCkgLSAxCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGlzX2V3IG9yIGxhc3RfZXc6CisgICAgICAgICAgICAgICAgIyBJdCdzIHRvbyBiaWcgdG8gZml0IG9uIHRoZSBsaW5lLCBidXQgc2luY2Ugd2UndmUKKyAgICAgICAgICAgICAgICAjIGdvdCBlbmNvZGVkIHdvcmRzIHdlIGNhbiB1c2UgZW5jb2RlZCB3b3JkIGZvbGRpbmcuCisgICAgICAgICAgICAgICAgcGFydC5fZm9sZF9hc19ldyhmb2xkZWQpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBhbnkgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICB3cyA9IHBhcnQucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgIGlmIHdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cih3cykKKyAgICAgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcGFydC5mb2xkKGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBJdCBjYW4ndCBiZSBzcGxpdC4uLndlIGp1c3QgaGF2ZSB0byBwdXQgaXQgb24gaXRzIG93biBsaW5lLgorICAgICAgICAgICAgZm9sZGVkLmFwcGVuZCh0c3RyKQorICAgICAgICAgICAgZm9sZGVkLm5ld2xpbmUoKQorICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBzcGFydCA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNwYXJ0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3BhcnQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihyZXMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGwgPSBnZXRfdW5zdHJ1Y3R1cmVkKCcnLmpvaW4ocmVzW2xhc3RfZXc6XSArIFtzcGFydF0pKQorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHRsLmFzX2VuY29kZWRfd29yZCgpKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKworY2xhc3MgUGhyYXNlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3BocmFzZScKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICAjIEFzIHdpdGggVW5zdHJ1Y3R1cmVkLCB3ZSBjYW4gaGF2ZSBwdXJlIEFTQ0lJIHdpdGggb3Igd2l0aG91dAorICAgICAgICAjIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGVkIGJ5dGVzLCBvciB3ZSBjb3VsZCBoYXZlIHVuaWNvZGUuICBCdXQgdGhpcworICAgICAgICAjIGNhc2UgaXMgbW9yZSBjb21wbGljYXRlZCwgc2luY2Ugd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhlIHZhcmlvdXMKKyAgICAgICAgIyBzdWItdG9rZW4gdHlwZXMgYW5kIGhvdyB0aGV5IGNhbiBiZSBjb21wb3NlZCBpbiB0aGUgZmFjZSBvZgorICAgICAgICAjIHVuaWNvZGUtdGhhdC1uZWVkcy1DVEUtZW5jb2RpbmcsIGFuZCB0aGUgZmFjdCB0aGF0IGlmIGEgdG9rZW4gYQorICAgICAgICAjIGNvbW1lbnQgdGhhdCBiZWNvbWVzIGEgYmFycmllciBhY3Jvc3Mgd2hpY2ggd2UgY2FuJ3QgY29tcG9zZSBlbmNvZGVkCisgICAgICAgICMgd29yZHMuCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICBoYXNfZXcgPSBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cihwYXJ0KS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIG5vdCBOb25lIGFuZCBub3QgcGFydC5oYXNfbGVhZGluZ19jb21tZW50KCk6CisgICAgICAgICAgICAgICAgICAgICMgV2UndmUgYWxyZWFkeSBkb25lIGFuIEVXLCBsZXQncyBzZWUgaWYgd2UgY2FuIGNvbWJpbmUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGlzIG9uZSB3aXRoIGl0LiAgVGhlIGxhc3RfZXcgbG9naWMgZW5zdXJlcyB0aGF0IGFsbCB3ZQorICAgICAgICAgICAgICAgICAgICAjIGhhdmUgYXQgdGhpcyBwb2ludCBpcyBhdG9tcywgbm8gY29tbWVudHMgb3IgcXVvdGVkCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5ncy4gIFNvIHdlIGNhbiB0cmVhdCB0aGUgdGV4dCBiZXR3ZWVuIHRoZSBsYXN0CisgICAgICAgICAgICAgICAgICAgICMgZW5jb2RlZCB3b3JkIGFuZCB0aGUgY29udGVudCBvZiB0aGlzIHRva2VuIGFzCisgICAgICAgICAgICAgICAgICAgICMgdW5zdHJ1Y3R1cmVkIHRleHQsIGFuZCB0aGluZ3Mgd2lsbCB3b3JrIGNvcnJlY3RseS4gIEJ1dAorICAgICAgICAgICAgICAgICAgICAjIHdlIGhhdmUgdG8gc3RyaXAgb2ZmIGFueSB0cmFpbGluZyBjb21tZW50IG9uIHRoaXMgdG9rZW4KKyAgICAgICAgICAgICAgICAgICAgIyBmaXJzdCwgYW5kIGlmIGl0IGlzIGEgcXVvdGVkIHN0cmluZyB3ZSBoYXZlIHRvIHB1bGwgb3V0CisgICAgICAgICAgICAgICAgICAgICMgdGhlIGNvbnRlbnQgKHdlJ3JlIGVuY29kaW5nIGl0LCBzbyBpdCBubyBsb25nZXIgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBiZSBxdW90ZWQpLgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJ0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyBhbmQgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHBhcnQucG9wKC0xKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIGksIHRva2VuIGluIGVudW1lcmF0ZShwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydFtpXSA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCh0b2tlbls6XSkKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBnZXRfdW5zdHJ1Y3R1cmVkKAorICAgICAgICAgICAgICAgICAgICAgICAgJycuam9pbihmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0rW3RzdHJdKSkuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgICAgIHNjaHVuayA9IHN0cihjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgbGNodW5rID0gbGVuKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyArIGxjaHVuayA8PSBmb2xkZWQubWF4bGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmFwcGVuZChzY2h1bmspCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQubGFzdGxlbiA9IHN1bShsZW4oeCkgZm9yIHggaW4gZm9sZGVkLmN1cnJlbnQpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgICAgICBoYXNfZXcgPSBUcnVlCisgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCwgdHN0cik6CisgICAgICAgICAgICAgICAgaWYgaGFzX2V3IGFuZCBub3QgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IGxlbihmb2xkZWQuY3VycmVudCkgLSAxCisgICAgICAgICAgICAgICAgZWxpZiBwYXJ0LmNvbW1lbnRzIG9yIHBhcnQudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICMgSWYgYSBjb21tZW50IGlzIGludm9sdmVkIHdlIGNhbid0IGNvbWJpbmUgRVdzLiAgQW5kIGlmIGEKKyAgICAgICAgICAgICAgICAgICAgIyBxdW90ZWQgc3RyaW5nIGlzIGludm9sdmVkLCBpdCdzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHRvCisgICAgICAgICAgICAgICAgICAgICMgdHJ5IHRvIGNvbWJpbmUgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydC5fZm9sZChmb2xkZWQpCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICBpc19ldyA9IEZhbHNlCisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBzcGFydCA9IHN0cihwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNwYXJ0LmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3BhcnQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlzX2V3ID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKHJlcykKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICBlbGlmIG5vdCBwYXJ0Lmhhc19sZWFkaW5nX2NvbW1lbnQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFydFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycgYW5kIHBhcnQuY29tbWVudHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSBwYXJ0LnBvcCgtMSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciBpLCB0b2tlbiBpbiBlbnVtZXJhdGUocGFydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRbaV0gPSBVbnN0cnVjdHVyZWRUb2tlbkxpc3QodG9rZW5bOl0pCisgICAgICAgICAgICAgICAgICAgIHRsID0gZ2V0X3Vuc3RydWN0dXJlZCgnJy5qb2luKHJlc1tsYXN0X2V3Ol0gKyBbc3BhcnRdKSkKKyAgICAgICAgICAgICAgICAgICAgcmVzW2xhc3RfZXc6XSA9IFt0bC5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCldCisgICAgICAgICAgICBpZiBwYXJ0LmNvbW1lbnRzIG9yIChub3QgaXNfZXcgYW5kIHBhcnQudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZycpOgorICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworY2xhc3MgV29yZChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd3b3JkJworCisKK2NsYXNzIENGV1NMaXN0KFdoaXRlU3BhY2VUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjZndzJworCisgICAgZGVmIGhhc19sZWFkaW5nX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuY29tbWVudHMpCisKKworY2xhc3MgQXRvbShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhdG9tJworCisKK2NsYXNzIFRva2VuKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3Rva2VuJworCisKK2NsYXNzIEVuY29kZWRXb3JkKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2VuY29kZWQtd29yZCcKKyAgICBjdGUgPSBOb25lCisgICAgY2hhcnNldCA9IE5vbmUKKyAgICBsYW5nID0gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY3RlCisgICAgICAgIF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBzZWxmLmNoYXJzZXQpCisKKworCitjbGFzcyBRdW90ZWRTdHJpbmcoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAncXVvdGVkLXN0cmluZycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcXVvdGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHgudmFsdWUpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi52YWx1ZQorCisKK2NsYXNzIEJhcmVRdW90ZWRTdHJpbmcoUXVvdGVkU3RyaW5nKToKKworICAgIHRva2VuX3R5cGUgPSAnYmFyZS1xdW90ZWQtc3RyaW5nJworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBxdW90ZV9zdHJpbmcoJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQorCisKK2NsYXNzIENvbW1lbnQoV2hpdGVTcGFjZVRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbW1lbnQnCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VtKFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIigiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZi5xdW90ZSh4KSBmb3IgeCBpbiBzZWxmXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIikiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBbXSkpCisKKyAgICBkZWYgcXVvdGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKKyAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCisgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudChzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi5jb250ZW50XQorCitjbGFzcyBBZGRyZXNzTGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhZGRyZXNzLWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJ10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oKHgubWFpbGJveGVzCisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlPT0nYWRkcmVzcycpLCBbXSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VtKCh4LmFsbF9tYWlsYm94ZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJyksIFtdKQorCisKK2NsYXNzIEFkZHJlc3MoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYWRkcmVzcycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnZ3JvdXAnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICBlbGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnaW52YWxpZC1tYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ21haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICBlbGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnaW52YWxpZC1tYWlsYm94JzoKKyAgICAgICAgICAgIHJldHVybiBbc2VsZlswXV0KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcworCitjbGFzcyBNYWlsYm94TGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtYWlsYm94LWxpc3QnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdtYWlsYm94J10KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3ggZm9yIHggaW4gc2VsZgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlIGluICgnbWFpbGJveCcsICdpbnZhbGlkLW1haWxib3gnKV0KKworCitjbGFzcyBHcm91cExpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZ3JvdXAtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGZbMF0udG9rZW5fdHlwZSAhPSAnbWFpbGJveC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmWzBdLnRva2VuX3R5cGUgIT0gJ21haWxib3gtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWxsX21haWxib3hlcworCisKK2NsYXNzIEdyb3VwKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gImdyb3VwIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlsyXS50b2tlbl90eXBlICE9ICdncm91cC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlsyXS5tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzJdLnRva2VuX3R5cGUgIT0gJ2dyb3VwLWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzJdLmFsbF9tYWlsYm94ZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisKK2NsYXNzIE5hbWVBZGRyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ25hbWUtYWRkcicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByb3V0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLnJvdXRlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0uYWRkcl9zcGVjCisKKworY2xhc3MgQW5nbGVBZGRyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FuZ2xlLWFkZHInCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdvYnMtcm91dGUnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmRvbWFpbnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguYWRkcl9zcGVjCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJzw+JworCisKK2NsYXNzIE9ic1JvdXRlKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ29icy1yb3V0ZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW5zKHNlbGYpOgorICAgICAgICByZXR1cm4gW3guZG9tYWluIGZvciB4IGluIHNlbGYgaWYgeC50b2tlbl90eXBlID09ICdkb21haW4nXQorCisKK2NsYXNzIE1haWxib3goVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWFpbGJveCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLmRpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzBdLnRva2VuX3R5cGUgPT0gJ25hbWUtYWRkcic6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5yb3V0ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uYWRkcl9zcGVjCisKKworY2xhc3MgSW52YWxpZE1haWxib3goVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGxvY2FsX3BhcnQgPSBkb21haW4gPSByb3V0ZSA9IGFkZHJfc3BlYyA9IGRpc3BsYXlfbmFtZQorCisKK2NsYXNzIERvbWFpbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb21haW4nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdXBlcigpLnZhbHVlLnNwbGl0KCkpCisKKworY2xhc3MgRG90QXRvbShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbScKKworCitjbGFzcyBEb3RBdG9tVGV4dChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb3QtYXRvbS10ZXh0JworCisKK2NsYXNzIEFkZHJTcGVjKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FkZHItc3BlYycKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5sb2NhbF9wYXJ0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPCAzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBpZiBsZW4oc2VsZikgPCAzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUucnN0cmlwKCkrc2VsZlsxXS52YWx1ZStzZWxmWzJdLnZhbHVlLmxzdHJpcCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBuYW1lc2V0ID0gc2V0KHNlbGYubG9jYWxfcGFydCkKKyAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtRE9UX0FUT01fRU5EUyk6CisgICAgICAgICAgICBscCA9IHF1b3RlX3N0cmluZyhzZWxmLmxvY2FsX3BhcnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBscCA9IHNlbGYubG9jYWxfcGFydAorICAgICAgICBpZiBzZWxmLmRvbWFpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBscCArICdAJyArIHNlbGYuZG9tYWluCisgICAgICAgIHJldHVybiBscAorCisKK2NsYXNzIE9ic0xvY2FsUGFydChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdvYnMtbG9jYWwtcGFydCcKKworCitjbGFzcyBEaXNwbGF5TmFtZShQaHJhc2UpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkaXNwbGF5LW5hbWUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXMgPSBUb2tlbkxpc3Qoc2VsZikKKyAgICAgICAgaWYgcmVzWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmVzLnBvcCgwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcmVzWzBdWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgICAgIHJlc1swXSA9IFRva2VuTGlzdChyZXNbMF1bMTpdKQorICAgICAgICBpZiByZXNbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgcmVzLnBvcCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiByZXNbLTFdWy0xXS50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgICAgICByZXNbLTFdID0gVG9rZW5MaXN0KHJlc1stMV1bOi0xXSkKKyAgICAgICAgcmV0dXJuIHJlcy52YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBxdW90ZSA9IEZhbHNlCisgICAgICAgIGlmIHNlbGYuZGVmZWN0czoKKyAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IFRydWUKKyAgICAgICAgaWYgcXVvdGU6CisgICAgICAgICAgICBwcmUgPSBwb3N0ID0gJycKKyAgICAgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbMF1bMF0udG9rZW5fdHlwZT09J2Nmd3MnOgorICAgICAgICAgICAgICAgIHByZSA9ICcgJworICAgICAgICAgICAgaWYgc2VsZlstMV0udG9rZW5fdHlwZT09J2Nmd3MnIG9yIHNlbGZbLTFdWy0xXS50b2tlbl90eXBlPT0nY2Z3cyc6CisgICAgICAgICAgICAgICAgcG9zdCA9ICcgJworICAgICAgICAgICAgcmV0dXJuIHByZStxdW90ZV9zdHJpbmcoc2VsZi5kaXNwbGF5X25hbWUpK3Bvc3QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnZhbHVlCisKKworY2xhc3MgTG9jYWxQYXJ0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2xvY2FsLXBhcnQnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAicXVvdGVkLXN0cmluZyI6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5xdW90ZWRfdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgIyBTdHJpcCB3aGl0ZXNwYWNlIGZyb20gZnJvbnQsIGJhY2ssIGFuZCBhcm91bmQgZG90cy4KKyAgICAgICAgcmVzID0gW0RPVF0KKyAgICAgICAgbGFzdCA9IERPVAorICAgICAgICBsYXN0X2lzX3RsID0gRmFsc2UKKyAgICAgICAgZm9yIHRvayBpbiBzZWxmWzBdICsgW0RPVF06CisgICAgICAgICAgICBpZiB0b2sudG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIChsYXN0X2lzX3RsIGFuZCB0b2sudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKKyAgICAgICAgICAgICAgICAgICAgbGFzdFstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cycpOgorICAgICAgICAgICAgICAgIHJlc1stMV0gPSBUb2tlbkxpc3QobGFzdFs6LTFdKQorICAgICAgICAgICAgaXNfdGwgPSBpc2luc3RhbmNlKHRvaywgVG9rZW5MaXN0KQorICAgICAgICAgICAgaWYgKGlzX3RsIGFuZCBsYXN0LnRva2VuX3R5cGUgPT0gJ2RvdCcgYW5kCisgICAgICAgICAgICAgICAgICAgIHRva1swXS50b2tlbl90eXBlID09ICdjZndzJyk6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChUb2tlbkxpc3QodG9rWzE6XSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQodG9rKQorICAgICAgICAgICAgbGFzdCA9IHJlc1stMV0KKyAgICAgICAgICAgIGxhc3RfaXNfdGwgPSBpc190bAorICAgICAgICByZXMgPSBUb2tlbkxpc3QocmVzWzE6LTFdKQorICAgICAgICByZXR1cm4gcmVzLnZhbHVlCisKKworY2xhc3MgRG9tYWluTGl0ZXJhbChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdkb21haW4tbGl0ZXJhbCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN1cGVyKCkudmFsdWUuc3BsaXQoKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAncHRleHQnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LnZhbHVlCisKKworY2xhc3MgTUlNRVZlcnNpb24oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWltZS12ZXJzaW9uJworICAgIG1ham9yID0gTm9uZQorICAgIG1pbm9yID0gTm9uZQorCisKK2NsYXNzIFBhcmFtZXRlcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdwYXJhbWV0ZXInCisgICAgc2VjdGlvbmVkID0gRmFsc2UKKyAgICBleHRlbmRlZCA9IEZhbHNlCisgICAgY2hhcnNldCA9ICd1cy1hc2NpaScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZWN0aW9uX251bWJlcihzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIHRoZSBmaXJzdCB0b2tlbiwgdGhlIGF0dHJpYnV0ZSAobmFtZSkgZWF0cyBDRldTLCB0aGUgc2Vjb25kCisgICAgICAgICMgdG9rZW4gaXMgYWx3YXlzIHRoZSBzZWN0aW9uIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgcmV0dXJuIHNlbGZbMV0ubnVtYmVyIGlmIHNlbGYuc2VjdGlvbmVkIGVsc2UgMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgcGFydCBvZiB0aGUgImhhbmRsZSBxdW90ZWQgZXh0ZW5kZWQgcGFyYW1ldGVycyIgaGFjay4KKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICd2YWx1ZSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAndmFsdWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgcmV0dXJuICcnCisKKworY2xhc3MgSW52YWxpZFBhcmFtZXRlcihQYXJhbWV0ZXIpOgorCisgICAgdG9rZW5fdHlwZSA9ICdpbnZhbGlkLXBhcmFtZXRlcicKKworCitjbGFzcyBBdHRyaWJ1dGUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYXR0cmlidXRlJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoJ2F0dHJ0ZXh0Jyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlCisKK2NsYXNzIFNlY3Rpb24oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnc2VjdGlvbicKKyAgICBudW1iZXIgPSBOb25lCisKKworY2xhc3MgVmFsdWUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndmFsdWUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHRva2VuID0gc2VsZlswXQorICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgIHRva2VuID0gc2VsZlsxXQorICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKAorICAgICAgICAgICAgICAgICgncXVvdGVkLXN0cmluZycsICdhdHRyaWJ1dGUnLCAnZXh0ZW5kZWQtYXR0cmlidXRlJykpOgorICAgICAgICAgICAgcmV0dXJuIHRva2VuLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKworY2xhc3MgTWltZVBhcmFtZXRlcnMoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbWltZS1wYXJhbWV0ZXJzJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUaGUgUkZDIHNwZWNpZmljYWxseSBzdGF0ZXMgdGhhdCB0aGUgb3JkZXJpbmcgb2YgcGFyYW1ldGVycyBpcyBub3QKKyAgICAgICAgIyBndWFyYW50ZWVkIGFuZCBtYXkgYmUgcmVvcmRlcmVkIGJ5IHRoZSB0cmFuc3BvcnQgbGF5ZXIuICBTbyB3ZSBoYXZlCisgICAgICAgICMgdG8gYXNzdW1lIHRoZSBSRkMgMjIzMSBwaWVjZXMgY2FuIGNvbWUgaW4gYW55IG9yZGVyLiAgSG93ZXZlciwgd2UKKyAgICAgICAgIyBvdXRwdXQgdGhlbSBpbiB0aGUgb3JkZXIgdGhhdCB3ZSBmaXJzdCBzZWUgYSBnaXZlbiBuYW1lLCB3aGljaCBnaXZlcworICAgICAgICAjIHVzIGEgc3RhYmxlIF9fc3RyX18uCisgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBpZiBub3QgdG9rZW4udG9rZW5fdHlwZS5lbmRzd2l0aCgncGFyYW1ldGVyJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHRva2VuWzBdLnRva2VuX3R5cGUgIT0gJ2F0dHJpYnV0ZSc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG5hbWUgPSB0b2tlblswXS52YWx1ZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgcGFyYW1zW25hbWVdID0gW10KKyAgICAgICAgICAgIHBhcmFtc1tuYW1lXS5hcHBlbmQoKHRva2VuLnNlY3Rpb25fbnVtYmVyLCB0b2tlbikpCisgICAgICAgIGZvciBuYW1lLCBwYXJ0cyBpbiBwYXJhbXMuaXRlbXMoKToKKyAgICAgICAgICAgIHBhcnRzID0gc29ydGVkKHBhcnRzKQorICAgICAgICAgICAgIyBYWFg6IHRoZXJlIG1pZ2h0IGJlIG1vcmUgcmVjb3Zlcnkgd2UgY291bGQgZG8gaGVyZSBpZiwgZm9yCisgICAgICAgICAgICAjIGV4YW1wbGUsIHRoaXMgaXMgcmVhbGx5IGEgY2FzZSBvZiBhIGR1cGxpY2F0ZSBhdHRyaWJ1dGUgbmFtZS4KKyAgICAgICAgICAgIHZhbHVlX3BhcnRzID0gW10KKyAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJ0c1swXVsxXS5jaGFyc2V0CisgICAgICAgICAgICBmb3IgaSwgKHNlY3Rpb25fbnVtYmVyLCBwYXJhbSkgaW4gZW51bWVyYXRlKHBhcnRzKToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uX251bWJlciAhPSBpOgorICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbnNpc3RlbnQgbXVsdGlwYXJ0IHBhcmFtZXRlciBudW1iZXJpbmciKSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcmFtLnBhcmFtX3ZhbHVlCisgICAgICAgICAgICAgICAgaWYgcGFyYW0uZXh0ZW5kZWQ6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdXJsbGliLnBhcnNlLnVucXVvdGVfdG9fYnl0ZXModmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHNvdXJjZSBoYWQgc3Vycm9nYXRlIGVzY2FwZWQgYnl0ZXMuICBXaGF0IHdlIGRvIG5vdworICAgICAgICAgICAgICAgICAgICAgICAgIyBpcyBhIGJpdCBvZiBhbiBvcGVuIHF1ZXN0aW9uLiAgSSdtIG5vdCBzdXJlIHRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGJlc3QgY2hvaWNlLCBidXQgaXQgaXMgd2hhdCB0aGUgb2xkIGFsZ29yaXRobSBkaWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdXJsbGliLnBhcnNlLnVucXVvdGUodmFsdWUsIGVuY29kaW5nPSdsYXRpbi0xJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZShjaGFyc2V0LCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhlcmUgc2hvdWxkIHJlYWxseSBiZSBhIGN1c3RvbSBkZWZlY3QgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmtub3duIGNoYXJhY3RlciBzZXQgdG8gbWFrZSBpdCBlYXN5IHRvIGZpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIG90aGVyd2lzZSB1bmtub3duIGNoYXJzZXQgaXMgYSBzaWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZhaWx1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kZWNvZGUoJ3VzLWFzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KCkpCisgICAgICAgICAgICAgICAgdmFsdWVfcGFydHMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgdmFsdWUgPSAnJy5qb2luKHZhbHVlX3BhcnRzKQorICAgICAgICAgICAgeWllbGQgbmFtZSwgdmFsdWUKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBwYXJhbXMgPSBbXQorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5wYXJhbXM6CisgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKCd7fT17fScuZm9ybWF0KG5hbWUsIHF1b3RlX3N0cmluZyh2YWx1ZSkpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKG5hbWUpCisgICAgICAgIHBhcmFtcyA9ICc7ICcuam9pbihwYXJhbXMpCisgICAgICAgIHJldHVybiAnICcgKyBwYXJhbXMgaWYgcGFyYW1zIGVsc2UgJycKKworCitjbGFzcyBQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUoVG9rZW5MaXN0KToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJhbXMoc2VsZik6CisgICAgICAgIGZvciB0b2tlbiBpbiByZXZlcnNlZChzZWxmKToKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ21pbWUtcGFyYW1ldGVycyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnBhcmFtcworICAgICAgICByZXR1cm4ge30KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYXJ0cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZiBhbmQgc2VsZlstMV0udG9rZW5fdHlwZSA9PSAnbWltZS1wYXJhbWV0ZXJzJzoKKyAgICAgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0byBzdGFydCBhIG5ldyBsaW5lIGlmIGFsbCBvZiB0aGUgcGFyYW1zIGRvbid0IGZpdAorICAgICAgICAgICAgIyBhZnRlciB0aGUgdmFsdWUsIHNvIHVud3JhcCB0aGUgcGFyYW1ldGVyIGxpc3QuCisgICAgICAgICAgICByZXR1cm4gVG9rZW5MaXN0KHNlbGZbOi0xXSArIHNlbGZbLTFdKQorICAgICAgICByZXR1cm4gVG9rZW5MaXN0KHNlbGYpLnBhcnRzCisKKworY2xhc3MgQ29udGVudFR5cGUoUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC10eXBlJworICAgIG1haW50eXBlID0gJ3RleHQnCisgICAgc3VidHlwZSA9ICdwbGFpbicKKworCitjbGFzcyBDb250ZW50RGlzcG9zaXRpb24oUGFyYW1ldGVyaXplZEhlYWRlclZhbHVlKToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC1kaXNwb3NpdGlvbicKKyAgICBjb250ZW50X2Rpc3Bvc2l0aW9uID0gTm9uZQorCisKK2NsYXNzIENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnCisgICAgY3RlID0gJzdiaXQnCisKKworY2xhc3MgSGVhZGVyTGFiZWwoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnaGVhZGVyLWxhYmVsJworCisKK2NsYXNzIEhlYWRlcihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdoZWFkZXInCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgZm9sZGVkKToKKyAgICAgICAgZm9sZGVkLmFwcGVuZChzdHIoc2VsZi5wb3AoMCkpKQorICAgICAgICBmb2xkZWQubGFzdGxlbiA9IGxlbihmb2xkZWQuY3VycmVudFswXSkKKyAgICAgICAgIyBUaGUgZmlyc3QgbGluZSBvZiB0aGUgaGVhZGVyIGlzIGRpZmZlcmVudCBmcm9tIGFsbCBvdGhlcnM6IHdlIGRvbid0CisgICAgICAgICMgd2FudCB0byBzdGFydCBhIG5ldyBvYmplY3Qgb24gYSBuZXcgbGluZSBpZiBpdCBoYXMgYW55IGZvbGQgcG9pbnRzIGluCisgICAgICAgICMgaXQgdGhhdCB3b3VsZCBhbGxvdyBwYXJ0IG9mIGl0IHRvIGJlIG9uIHRoZSBmaXJzdCBoZWFkZXIgbGluZS4KKyAgICAgICAgIyBGdXJ0aGVyLCBpZiB0aGUgZmlyc3QgZm9sZCBwb2ludCB3b3VsZCBmaXQgb24gdGhlIG5ldyBsaW5lLCB3ZSB3YW50CisgICAgICAgICMgdG8gZG8gdGhhdCwgYnV0IGlmIGl0IGRvZXNuJ3Qgd2Ugd2FudCB0byBwdXQgaXQgb24gdGhlIGZpcnN0IGxpbmUuCisgICAgICAgICMgRm9sZGVkIHN1cHBvcnRzIHRoaXMgdmlhIHRoZSBzdGlja3lzcGFjZSBhdHRyaWJ1dGUuICBJZiB0aGlzCisgICAgICAgICMgYXR0cmlidXRlIGlzIG5vdCBOb25lLCBpdCBkb2VzIHRoZSBzcGVjaWFsIGhhbmRsaW5nLgorICAgICAgICBmb2xkZWQuc3RpY2t5c3BhY2UgPSBzdHIoc2VsZi5wb3AoMCkpIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cycgZWxzZSAnJworICAgICAgICByZXN0ID0gc2VsZi5wb3AoMCkKKyAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1hbGZvcm1lZCBIZWFkZXIgdG9rZW4gbGlzdCIpCisgICAgICAgIHJlc3QuX2ZvbGQoZm9sZGVkKQorCisKKyMKKyMgVGVybWluYWwgY2xhc3NlcyBhbmQgaW5zdGFuY2VzCisjCisKK2NsYXNzIFRlcm1pbmFsKHN0cik6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCB0b2tlbl90eXBlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICBzZWxmLnRva2VuX3R5cGUgPSB0b2tlbl90eXBlCisgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAie30oe30pIi5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN1cGVyKCkuX19yZXByX18oKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhbGxfZGVmZWN0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5kZWZlY3RzKQorCisgICAgZGVmIF9wcChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICByZXR1cm4gWyJ7fXt9L3t9KHt9KXt9Ii5mb3JtYXQoCisgICAgICAgICAgICBpbmRlbnQsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgIHNlbGYudG9rZW5fdHlwZSwKKyAgICAgICAgICAgIHN1cGVyKCkuX19yZXByX18oKSwKKyAgICAgICAgICAgICcnIGlmIG5vdCBzZWxmLmRlZmVjdHMgZWxzZSAnIHt9Jy5mb3JtYXQoc2VsZi5kZWZlY3RzKSwKKyAgICAgICAgICAgICldCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICB2YWx1ZSA9IHN0cihzZWxmKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB2YWx1ZS5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIF9ldy5lbmNvZGUodmFsdWUsIGNoYXJzZXQpCisKKyAgICBkZWYgcG9wX3RyYWlsaW5nX3dzKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVybWluYXRlcyB0aGUgcmVjdXJzaW9uLgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHBvcF9sZWFkaW5nX2Z3cyhzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlcm1pbmF0ZXMgdGhlIHJlY3Vyc2lvbi4KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybihzdHIoc2VsZiksIHNlbGYudG9rZW5fdHlwZSkKKworCitjbGFzcyBXaGl0ZVNwYWNlVGVybWluYWwoVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gJyAnCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBoYXNfZndzID0gVHJ1ZQorCisKK2NsYXNzIFZhbHVlVGVybWluYWwoVGVybWluYWwpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIHN0YXJ0c3dpdGhfZndzKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGhhc19md3MgPSBGYWxzZQorCisgICAgZGVmIGFzX2VuY29kZWRfd29yZChzZWxmLCBjaGFyc2V0KToKKyAgICAgICAgcmV0dXJuIF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBjaGFyc2V0KQorCisKK2NsYXNzIEVXV2hpdGVTcGFjZVRlcm1pbmFsKFdoaXRlU3BhY2VUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kZWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzpdCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBoYXNfZndzID0gVHJ1ZQorCisKKyMgWFhYIHRoZXNlIG5lZWQgdG8gYmVjb21lIGNsYXNzZXMgYW5kIHVzZWQgYXMgaW5zdGFuY2VzIHNvCisjIHRoYXQgYSBwcm9ncmFtIGNhbid0IGNoYW5nZSB0aGVtIGluIGEgcGFyc2UgdHJlZSBhbmQgc2NyZXcKKyMgdXAgb3RoZXIgcGFyc2UgdHJlZXMuICBNYXliZSBzaG91bGQgaGF2ZSAgdGVzdHMgZm9yIHRoYXQsIHRvby4KK0RPVCA9IFZhbHVlVGVybWluYWwoJy4nLCAnZG90JykKK0xpc3RTZXBhcmF0b3IgPSBWYWx1ZVRlcm1pbmFsKCcsJywgJ2xpc3Qtc2VwYXJhdG9yJykKK1JvdXRlQ29tcG9uZW50TWFya2VyID0gVmFsdWVUZXJtaW5hbCgnQCcsICdyb3V0ZS1jb21wb25lbnQtbWFya2VyJykKKworIworIyBQYXJzZXIKKyMKKworIiIiUGFyc2Ugc3RyaW5ncyBhY2NvcmRpbmcgdG8gUkZDODIyLzIwNDcvMjgyMi81MzIyIHJ1bGVzLgorCitUaGlzIGlzIGEgc3RhdGVsZXNzIHBhcnNlci4gIEVhY2ggZ2V0X1hYWCBmdW5jdGlvbiBhY2NlcHRzIGEgc3RyaW5nIGFuZAorcmV0dXJucyBlaXRoZXIgYSBUZXJtaW5hbCBvciBhIFRva2VuTGlzdCByZXByZXNlbnRpbmcgdGhlIFJGQyBvYmplY3QgbmFtZWQKK2J5IHRoZSBtZXRob2QgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJlbWFpbmluZyB1bnBhcnNlZCBjaGFyYWN0ZXJzCitmcm9tIHRoZSBpbnB1dC4gIFRodXMgYSBwYXJzZXIgbWV0aG9kIGNvbnN1bWVzIHRoZSBuZXh0IHN5bnRhY3RpYyBjb25zdHJ1Y3QKK29mIGEgZ2l2ZW4gdHlwZSBhbmQgcmV0dXJucyBhIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY29uc3RydWN0IHBsdXMgdGhlCit1bnBhcnNlZCByZW1haW5kZXIgb2YgdGhlIGlucHV0IHN0cmluZy4KKworRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCBlbGVtZW50IG9mIGEgc3RydWN0dXJlZCBoZWFkZXIgaXMgYSAncGhyYXNlJywKK3RoZW46CisKKyAgICBwaHJhc2UsIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKworcmV0dXJucyB0aGUgY29tcGxldGUgcGhyYXNlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgdmFsdWUsIHBsdXMgYW55CitjaGFyYWN0ZXJzIGxlZnQgaW4gdGhlIHN0cmluZyBhZnRlciB0aGUgcGhyYXNlIGlzIHJlbW92ZWQuCisKKyIiIgorCitfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAorX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCitfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbAorX25vbl90b2tlbl9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKKyAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oRVhURU5ERURfQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorCitkZWYgX3ZhbGlkYXRlX3h0ZXh0KHh0ZXh0KToKKyAgICAiIiJJZiBpbnB1dCB0b2tlbiBjb250YWlucyBBU0NJSSBub24tcHJpbnRhYmxlcywgcmVnaXN0ZXIgYSBkZWZlY3QuIiIiCisKKyAgICBub25fcHJpbnRhYmxlcyA9IF9ub25fcHJpbnRhYmxlX2ZpbmRlcih4dGV4dCkKKyAgICBpZiBub25fcHJpbnRhYmxlczoKKyAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk5vblByaW50YWJsZURlZmVjdChub25fcHJpbnRhYmxlcykpCisgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHh0ZXh0KToKKyAgICAgICAgeHRleHQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoCisgICAgICAgICAgICAiTm9uLUFTQ0lJIGNoYXJhY3RlcnMgZm91bmQgaW4gaGVhZGVyIHRva2VuIikpCisKK2RlZiBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCBlbmRjaGFycyk6CisgICAgIiIiU2NhbiBwcmludGFibGVzL3F1b3RlZC1wYWlycyB1bnRpbCBlbmRjaGFycyBhbmQgcmV0dXJuIHVucXVvdGVkIHB0ZXh0LgorCisgICAgVGhpcyBmdW5jdGlvbiB0dXJucyBhIHJ1biBvZiBxY29udGVudCwgY2NvbnRlbnQtd2l0aG91dC1jb21tZW50cywgb3IKKyAgICBkdGV4dC13aXRoLXF1b3RlZC1wcmludGFibGVzIGludG8gYSBzaW5nbGUgc3RyaW5nIGJ5IHVucXVvdGluZyBhbnkKKyAgICBxdW90ZWQgcHJpbnRhYmxlcy4gIEl0IHJldHVybnMgdGhlIHN0cmluZywgdGhlIHJlbWFpbmluZyB2YWx1ZSwgYW5kCisgICAgYSBmbGFnIHRoYXQgaXMgVHJ1ZSBpZmYgdGhlcmUgd2VyZSBhbnkgcXVvdGVkIHByaW50YWJsZXMgZGVjb2RlZC4KKworICAgICIiIgorICAgIGZyYWdtZW50LCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICB2Y2hhcnMgPSBbXQorICAgIGVzY2FwZSA9IEZhbHNlCisgICAgaGFkX3FwID0gRmFsc2UKKyAgICBmb3IgcG9zIGluIHJhbmdlKGxlbihmcmFnbWVudCkpOgorICAgICAgICBpZiBmcmFnbWVudFtwb3NdID09ICdcXCc6CisgICAgICAgICAgICBpZiBlc2NhcGU6CisgICAgICAgICAgICAgICAgZXNjYXBlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBoYWRfcXAgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVzY2FwZSA9IFRydWUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBlc2NhcGU6CisgICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQorICAgICAgICBlbGlmIGZyYWdtZW50W3Bvc10gaW4gZW5kY2hhcnM6CisgICAgICAgICAgICBicmVhaworICAgICAgICB2Y2hhcnMuYXBwZW5kKGZyYWdtZW50W3Bvc10pCisgICAgZWxzZToKKyAgICAgICAgcG9zID0gcG9zICsgMQorICAgIHJldHVybiAnJy5qb2luKHZjaGFycyksICcnLmpvaW4oW2ZyYWdtZW50W3BvczpdXSArIHJlbWFpbmRlciksIGhhZF9xcAorCitkZWYgX2RlY29kZV9ld19ydW4odmFsdWUpOgorICAgICIiIiBEZWNvZGUgYSBydW4gb2YgUkZDMjA0NyBlbmNvZGVkIHdvcmRzLgorCisgICAgICAgIF9kZWNvZGVfZXdfcnVuKHZhbHVlKSAtPiAodGV4dCwgdmFsdWUsIGRlZmVjdHMpCisKKyAgICBTY2FucyB0aGUgc3VwcGxpZWQgdmFsdWUgZm9yIGEgcnVuIG9mIHRva2VucyB0aGF0IGxvb2sgbGlrZSB0aGV5IGFyZSBSRkMKKyAgICAyMDQ3IGVuY29kZWQgd29yZHMsIGRlY29kZXMgdGhvc2Ugd29yZHMgaW50byB0ZXh0IGFjY29yZGluZyB0byBSRkMgMjA0NworICAgIHJ1bGVzICh3aGl0ZXNwYWNlIGJldHdlZW4gZW5jb2RlZCB3b3JkcyBpcyBkaXNjYXJkZWQpLCBhbmQgcmV0dXJucyB0aGUgdGV4dAorICAgIGFuZCB0aGUgcmVtYWluaW5nIHZhbHVlIChpbmNsdWRpbmcgYW55IGxlYWRpbmcgd2hpdGVzcGFjZSBvbiB0aGUgcmVtYWluaW5nCisgICAgdmFsdWUpLCBhcyB3ZWxsIGFzIGEgbGlzdCBvZiBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aGlsZSBkZWNvZGluZy4gIFRoZQorICAgIGlucHV0IHZhbHVlIG1heSBub3QgaGF2ZSBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlLgorCisgICAgIiIiCisgICAgcmVzID0gW10KKyAgICBkZWZlY3RzID0gW10KKyAgICBsYXN0X3dzID0gJycKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rLCB3cywgdmFsdWUgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHRvaywgd3MsIHZhbHVlID0gdmFsdWUsICcnLCAnJworICAgICAgICBpZiBub3QgKHRvay5zdGFydHN3aXRoKCc9PycpIGFuZCB0b2suZW5kc3dpdGgoJz89JykpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKSwgbGFzdF93cyArIHRvayArIHdzICsgdmFsdWUsIGRlZmVjdHMKKyAgICAgICAgdGV4dCwgY2hhcnNldCwgbGFuZywgbmV3X2RlZmVjdHMgPSBfZXcuZGVjb2RlKHRvaykKKyAgICAgICAgcmVzLmFwcGVuZCh0ZXh0KQorICAgICAgICBkZWZlY3RzLmV4dGVuZChuZXdfZGVmZWN0cykKKyAgICAgICAgbGFzdF93cyA9IHdzCisgICAgcmV0dXJuICcnLmpvaW4ocmVzKSwgbGFzdF93cywgZGVmZWN0cworCitkZWYgZ2V0X2Z3cyh2YWx1ZSk6CisgICAgIiIiRldTID0gMSpXU1AKKworICAgIFRoaXMgaXNuJ3QgdGhlIFJGQyBkZWZpbml0aW9uLiAgV2UncmUgdXNpbmcgZndzIHRvIHJlcHJlc2VudCB0b2tlbnMgd2hlcmUKKyAgICBmb2xkaW5nIGNhbiBiZSBkb25lLCBidXQgd2hlbiB3ZSBhcmUgcGFyc2luZyB0aGUgKnVuKmZvbGRpbmcgaGFzIGFscmVhZHkKKyAgICBiZWVuIGRvbmUgc28gd2UgZG9uJ3QgbmVlZCB0byB3YXRjaCBvdXQgZm9yIENSTEYuCisKKyAgICAiIiIKKyAgICBuZXd2YWx1ZSA9IHZhbHVlLmxzdHJpcCgpCisgICAgZndzID0gV2hpdGVTcGFjZVRlcm1pbmFsKHZhbHVlWzpsZW4odmFsdWUpLWxlbihuZXd2YWx1ZSldLCAnZndzJykKKyAgICByZXR1cm4gZndzLCBuZXd2YWx1ZQorCitkZWYgZ2V0X2VuY29kZWRfd29yZCh2YWx1ZSk6CisgICAgIiIiIGVuY29kZWQtd29yZCA9ICI9PyIgY2hhcnNldCAiPyIgZW5jb2RpbmcgIj8iIGVuY29kZWQtdGV4dCAiPz0iCisKKyAgICAiIiIKKyAgICBldyA9IEVuY29kZWRXb3JkKCkKKyAgICBpZiBub3QgdmFsdWUuc3RhcnRzd2l0aCgnPT8nKToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZW5jb2RlZCB3b3JkIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2ssICpyZW1haW5kZXIgPSB2YWx1ZVsyOl0uc3BsaXQoJz89JywgMSkKKyAgICBpZiB0b2sgPT0gdmFsdWVbMjpdOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBlbmNvZGVkIHdvcmQgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIHJlbXN0ciA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIGlmIHJlbXN0cls6Ml0uaXNkaWdpdCgpOgorICAgICAgICByZXN0LCAqcmVtYWluZGVyID0gcmVtc3RyLnNwbGl0KCc/PScsIDEpCisgICAgICAgIHRvayA9IHRvayArICc/PScgKyByZXN0CisgICAgaWYgbGVuKHRvay5zcGxpdCgpKSA+IDE6CisgICAgICAgIGV3LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIndoaXRlc3BhY2UgaW5zaWRlIGVuY29kZWQgd29yZCIpKQorICAgIGV3LmN0ZSA9IHZhbHVlCisgICAgdmFsdWUgPSAnJy5qb2luKHJlbWFpbmRlcikKKyAgICB0cnk6CisgICAgICAgIHRleHQsIGNoYXJzZXQsIGxhbmcsIGRlZmVjdHMgPSBfZXcuZGVjb2RlKCc9PycgKyB0b2sgKyAnPz0nKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJlbmNvZGVkIHdvcmQgZm9ybWF0IGludmFsaWQ6ICd7fSciLmZvcm1hdChldy5jdGUpKQorICAgIGV3LmNoYXJzZXQgPSBjaGFyc2V0CisgICAgZXcubGFuZyA9IGxhbmcKKyAgICBldy5kZWZlY3RzLmV4dGVuZChkZWZlY3RzKQorICAgIHdoaWxlIHRleHQ6CisgICAgICAgIGlmIHRleHRbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHRleHQgPSBnZXRfZndzKHRleHQpCisgICAgICAgICAgICBldy5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBjaGFycywgKnJlbWFpbmRlciA9IF93c3Bfc3BsaXR0ZXIodGV4dCwgMSkKKyAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKGNoYXJzLCAndnRleHQnKQorICAgICAgICBfdmFsaWRhdGVfeHRleHQodnRleHQpCisgICAgICAgIGV3LmFwcGVuZCh2dGV4dCkKKyAgICAgICAgdGV4dCA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHJldHVybiBldywgdmFsdWUKKworZGVmIGdldF91bnN0cnVjdHVyZWQodmFsdWUpOgorICAgICIiInVuc3RydWN0dXJlZCA9ICgqKFtGV1NdIHZjaGFyKSAqV1NQKSAvIG9icy11bnN0cnVjdAorICAgICAgIG9icy11bnN0cnVjdCA9ICooKCpMRiAqQ1IgKihvYnMtdXRleHQpICpMRiAqQ1IpKSAvIEZXUykKKyAgICAgICBvYnMtdXRleHQgPSAlZDAgLyBvYnMtTk8tV1MtQ1RMIC8gTEYgLyBDUgorCisgICAgICAgb2JzLU5PLVdTLUNUTCBpcyBjb250cm9sIGNoYXJhY3RlcnMgZXhjZXB0IFdTUC9DUi9MRi4KKworICAgIFNvLCBiYXNpY2FsbHksIHdlIGhhdmUgcHJpbnRhYmxlIHJ1bnMsIHBsdXMgY29udHJvbCBjaGFyYWN0ZXJzIG9yIG51bGxzIGluCisgICAgdGhlIG9ic29sZXRlIHN5bnRheCwgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuICBTaW5jZSBSRkMgMjA0NyB1c2VzIHRoZQorICAgIG9ic29sZXRlIHN5bnRheCBpbiBpdHMgc3BlY2lmaWNhdGlvbiwgYnV0IHJlcXVpcmVzIHdoaXRlc3BhY2Ugb24gZWl0aGVyCisgICAgc2lkZSBvZiB0aGUgZW5jb2RlZCB3b3JkcywgSSBjYW4gc2VlIG5vIHJlYXNvbiB0byBuZWVkIHRvIHNlcGFyYXRlIHRoZQorICAgIG5vbi1wcmludGFibGUtbm9uLXdoaXRlc3BhY2UgZnJvbSB0aGUgcHJpbnRhYmxlIHJ1bnMgaWYgdGhleSBvY2N1ciwgc28gd2UKKyAgICBwYXJzZSB0aGlzIGludG8geHRleHQgdG9rZW5zIHNlcGFyYXRlZCBieSBXU1AgdG9rZW5zLgorCisgICAgQmVjYXVzZSBhbiAndW5zdHJ1Y3R1cmVkJyB2YWx1ZSBtdXN0IGJ5IGRlZmluaXRpb24gY29uc3RpdHV0ZSB0aGUgZW50aXJlCisgICAgdmFsdWUsIHRoaXMgJ2dldCcgcm91dGluZSBkb2VzIG5vdCByZXR1cm4gYSByZW1haW5pbmcgdmFsdWUsIG9ubHkgdGhlCisgICAgcGFyc2VkIFRva2VuTGlzdC4KKworICAgICIiIgorICAgICMgWFhYOiBidXQgd2hhdCBhYm91dCBiYXJlIENSIGFuZCBMRj8gIFRoZXkgbWlnaHQgc2lnbmFsIHRoZSBzdGFydCBvcgorICAgICMgZW5kIG9mIGFuIGVuY29kZWQgd29yZC4gIFlBR05JIGZvciBub3csIHNpbmNlIG91dCBjdXJyZW50IHBhcnNlcnMKKyAgICAjIHdpbGwgbmV2ZXIgc2VuZCB1cyBzdHJpbmdzIHdpdGggYmFyZCBDUiBvciBMRi4KKworICAgIHVuc3RydWN0dXJlZCA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCgpCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgdmFsdWUuc3RhcnRzd2l0aCgnPT8nKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGF2ZV93cyA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBsZW4odW5zdHJ1Y3R1cmVkKSA+IDA6CisgICAgICAgICAgICAgICAgICAgIGlmIHVuc3RydWN0dXJlZFstMV0udG9rZW5fdHlwZSAhPSAnZndzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyB3aGl0ZXNwYWNlIGJlZm9yZSBlbmNvZGVkIHdvcmQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfd3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIGhhdmVfd3MgYW5kIGxlbih1bnN0cnVjdHVyZWQpID4gMToKKyAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0yXS50b2tlbl90eXBlID09ICdlbmNvZGVkLXdvcmQnOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkWy0xXSA9IEVXV2hpdGVTcGFjZVRlcm1pbmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZFstMV0sICdmd3MnKQorICAgICAgICAgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdG9rLCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih2YWx1ZSwgMSkKKyAgICAgICAgdnRleHQgPSBWYWx1ZVRlcm1pbmFsKHRvaywgJ3Z0ZXh0JykKKyAgICAgICAgX3ZhbGlkYXRlX3h0ZXh0KHZ0ZXh0KQorICAgICAgICB1bnN0cnVjdHVyZWQuYXBwZW5kKHZ0ZXh0KQorICAgICAgICB2YWx1ZSA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHJldHVybiB1bnN0cnVjdHVyZWQKKworZGVmIGdldF9xcF9jdGV4dCh2YWx1ZSk6CisgICAgIiIiY3RleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcICggKT4KKworICAgIFRoaXMgaXMgbm90IHRoZSBSRkMgY3RleHQsIHNpbmNlIHdlIGFyZSBoYW5kbGluZyBuZXN0ZWQgY29tbWVudHMgaW4gY29tbWVudAorICAgIGFuZCB1bnF1b3RpbmcgcXVvdGVkLXBhaXJzIGhlcmUuICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlICcoKScKKyAgICBjaGFyYWN0ZXJzLCBidXQgaWYgd2UgZmluZCBhbnkgQVNDSUkgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlCisgICAgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIFNpbmNlCisgICAgcXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIgdW5xdW90ZWQgdmFsdWVzLCB3aGF0IGlzIHJldHVybmVkIGlzCisgICAgYSAncHRleHQnIHRva2VuLiAgSW4gdGhpcyBjYXNlIGl0IGlzIGEgV2hpdGVTcGFjZVRlcm1pbmFsLCBzbyBpdCdzIHZhbHVlCisgICAgaXMgJyAnLgorCisgICAgIiIiCisgICAgcHRleHQsIHZhbHVlLCBfID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJygpJykKKyAgICBwdGV4dCA9IFdoaXRlU3BhY2VUZXJtaW5hbChwdGV4dCwgJ3B0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQocHRleHQpCisgICAgcmV0dXJuIHB0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X3Fjb250ZW50KHZhbHVlKToKKyAgICAiIiJxY29udGVudCA9IHF0ZXh0IC8gcXVvdGVkLXBhaXIKKworICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgRFFVT1RFIGNoYXJhY3RlciwgYnV0IGlmIHdlIGZpbmQgYW55IEFTQ0lJCisgICAgb3RoZXIgdGhhbiB0aGUgUkZDIGRlZmluZWQgcHJpbnRhYmxlIEFTQ0lJIGFuIE5vblByaW50YWJsZURlZmVjdCBpcworICAgIGFkZGVkIHRvIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdC4gIEFueSBxdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpcgorICAgIHVucXVvdGVkIHZhbHVlcywgc28gd2hhdCBpcyByZXR1cm5lZCBpcyBhICdwdGV4dCcgdG9rZW4uICBJbiB0aGlzIGNhc2UgaXQKKyAgICBpcyBhIFZhbHVlVGVybWluYWwuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIF8gPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnIicpCisgICAgcHRleHQgPSBWYWx1ZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBnZXRfYXRleHQodmFsdWUpOgorICAgICIiImF0ZXh0ID0gPG1hdGNoZXMgX2F0ZXh0X21hdGNoZXI+CisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLUFUT01fRU5EUyBpbiBhdGV4dCwgYnV0IGFkZCBhbiBJbnZhbGlkQVRleHREZWZlY3QgdG8KKyAgICB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tYXRleHQgY2hhcmFjdGVycy4KKyAgICAiIiIKKyAgICBtID0gX25vbl9hdG9tX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0ZXh0KTpdCisgICAgYXRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0ZXh0LCAnYXRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdGV4dCkKKyAgICByZXR1cm4gYXRleHQsIHZhbHVlCisKK2RlZiBnZXRfYmFyZV9xdW90ZWRfc3RyaW5nKHZhbHVlKToKKyAgICAiIiJiYXJlLXF1b3RlZC1zdHJpbmcgPSBEUVVPVEUgKihbRldTXSBxY29udGVudCkgW0ZXU10gRFFVT1RFCisKKyAgICBBIHF1b3RlZC1zdHJpbmcgd2l0aG91dCB0aGUgbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZSBzcGFjZS4gIEl0cworICAgIHZhbHVlIGlzIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHF1b3RlIG1hcmtzLCB3aXRoIHdoaXRlc3BhY2UKKyAgICBwcmVzZXJ2ZWQgYW5kIHF1b3RlZCBwYWlycyBkZWNvZGVkLgorICAgICIiIgorICAgIGlmIHZhbHVlWzBdICE9ICciJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJ1wiJyBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBiYXJlX3F1b3RlZF9zdHJpbmcgPSBCYXJlUXVvdGVkU3RyaW5nKCkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnIic6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCisgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBiYXJlX3F1b3RlZF9zdHJpbmcuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbnNpZGUgcXVvdGVkIHN0cmluZyIpKQorICAgICAgICByZXR1cm4gYmFyZV9xdW90ZWRfc3RyaW5nLCB2YWx1ZQorICAgIHJldHVybiBiYXJlX3F1b3RlZF9zdHJpbmcsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2NvbW1lbnQodmFsdWUpOgorICAgICIiImNvbW1lbnQgPSAiKCIgKihbRldTXSBjY29udGVudCkgW0ZXU10gIikiCisgICAgICAgY2NvbnRlbnQgPSBjdGV4dCAvIHF1b3RlZC1wYWlyIC8gY29tbWVudAorCisgICAgV2UgaGFuZGxlIG5lc3RlZCBjb21tZW50cyBoZXJlLCBhbmQgcXVvdGVkLXBhaXIgaW4gb3VyIHFwLWN0ZXh0IHJvdXRpbmUuCisgICAgIiIiCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcoJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJygnIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGNvbW1lbnQgPSBDb21tZW50KCkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiKSI6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJygnOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2NvbW1lbnQodmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcXBfY3RleHQodmFsdWUpCisgICAgICAgIGNvbW1lbnQuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY29tbWVudC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluc2lkZSBjb21tZW50IikpCisgICAgICAgIHJldHVybiBjb21tZW50LCB2YWx1ZQorICAgIHJldHVybiBjb21tZW50LCB2YWx1ZVsxOl0KKworZGVmIGdldF9jZndzKHZhbHVlKToKKyAgICAiIiJDRldTID0gKDEqKFtGV1NdIGNvbW1lbnQpIFtGV1NdKSAvIEZXUworCisgICAgIiIiCisgICAgY2Z3cyA9IENGV1NMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY29tbWVudCh2YWx1ZSkKKyAgICAgICAgY2Z3cy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGNmd3MsIHZhbHVlCisKK2RlZiBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSk6CisgICAgIiIicXVvdGVkLXN0cmluZyA9IFtDRldTXSA8YmFyZS1xdW90ZWQtc3RyaW5nPiBbQ0ZXU10KKworICAgICdiYXJlLXF1b3RlZC1zdHJpbmcnIGlzIGFuIGludGVybWVkaWF0ZSBjbGFzcyBkZWZpbmVkIGJ5IHRoaXMKKyAgICBwYXJzZXIgYW5kIG5vdCBieSB0aGUgUkZDIGdyYW1tYXIuICBJdCBpcyB0aGUgcXVvdGVkIHN0cmluZworICAgIHdpdGhvdXQgYW55IGF0dGFjaGVkIENGV1MuCisgICAgIiIiCisgICAgcXVvdGVkX3N0cmluZyA9IFF1b3RlZFN0cmluZygpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcXVvdGVkX3N0cmluZy5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2JhcmVfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gcXVvdGVkX3N0cmluZywgdmFsdWUKKworZGVmIGdldF9hdG9tKHZhbHVlKToKKyAgICAiIiJhdG9tID0gW0NGV1NdIDEqYXRleHQgW0NGV1NdCisKKyAgICAiIiIKKyAgICBhdG9tID0gQXRvbSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEFUT01fRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgYXRvbSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCisgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXRvbS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0b20sIHZhbHVlCisKK2RlZiBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSk6CisgICAgIiIiIGRvdC10ZXh0ID0gMSphdGV4dCAqKCIuIiAxKmF0ZXh0KQorCisgICAgIiIiCisgICAgZG90X2F0b21fdGV4dCA9IERvdEF0b21UZXh0KCkKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gaW4gQVRPTV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgYXRvbSBhdCBhIHN0YXJ0IG9mICIKKyAgICAgICAgICAgICJkb3QtYXRvbS10ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQVRPTV9FTkRTOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXRleHQodmFsdWUpCisgICAgICAgIGRvdF9hdG9tX3RleHQuYXBwZW5kKHRva2VuKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJy4nOgorICAgICAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQoRE9UKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBkb3RfYXRvbV90ZXh0Wy0xXSBpcyBET1Q6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBhdG9tIGF0IGVuZCBvZiBkb3QtYXRvbS10ZXh0ICIKKyAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KCcuJyt2YWx1ZSkpCisgICAgcmV0dXJuIGRvdF9hdG9tX3RleHQsIHZhbHVlCisKK2RlZiBnZXRfZG90X2F0b20odmFsdWUpOgorICAgICIiIiBkb3QtYXRvbSA9IFtDRldTXSBkb3QtYXRvbS10ZXh0IFtDRldTXQorCisgICAgIiIiCisgICAgZG90X2F0b20gPSBEb3RBdG9tKCkKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG90X2F0b21fdGV4dCh2YWx1ZSkKKyAgICBkb3RfYXRvbS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBkb3RfYXRvbSwgdmFsdWUKKworZGVmIGdldF93b3JkKHZhbHVlKToKKyAgICAiIiJ3b3JkID0gYXRvbSAvIHF1b3RlZC1zdHJpbmcKKworICAgIEVpdGhlciBhdG9tIG9yIHF1b3RlZC1zdHJpbmcgbWF5IHN0YXJ0IHdpdGggQ0ZXUy4gIFdlIGhhdmUgdG8gcGVlbCBvZmYgdGhpcworICAgIENGV1MgZmlyc3QgdG8gZGV0ZXJtaW5lIHdoaWNoIHR5cGUgb2Ygd29yZCB0byBwYXJzZS4gIEFmdGVyd2FyZCB3ZSBzcGxpY2UKKyAgICB0aGUgbGVhZGluZyBDRldTLCBpZiBhbnksIGludG8gdGhlIHBhcnNlZCBzdWItdG9rZW4uCisKKyAgICBJZiBuZWl0aGVyIGFuIGF0b20gb3IgYSBxdW90ZWQtc3RyaW5nIGlzIGZvdW5kIGJlZm9yZSB0aGUgbmV4dCBzcGVjaWFsLCBhCisgICAgSGVhZGVyUGFyc2VFcnJvciBpcyByYWlzZWQuCisKKyAgICBUaGUgdG9rZW4gcmV0dXJuZWQgaXMgZWl0aGVyIGFuIEF0b20gb3IgYSBRdW90ZWRTdHJpbmcsIGFzIGFwcHJvcHJpYXRlLgorICAgIFRoaXMgbWVhbnMgdGhlICd3b3JkJyBsZXZlbCBvZiB0aGUgZm9ybWFsIGdyYW1tYXIgaXMgbm90IHJlcHJlc2VudGVkIGluIHRoZQorICAgIHBhcnNlIHRyZWU7IHRoaXMgaXMgYmVjYXVzZSBoYXZpbmcgdGhhdCBleHRyYSBsYXllciB3aGVuIG1hbmlwdWxhdGluZyB0aGUKKyAgICBwYXJzZSB0cmVlIGlzIG1vcmUgY29uZnVzaW5nIHRoYW4gaXQgaXMgaGVscGZ1bC4KKworICAgICIiIgorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgZWxzZToKKyAgICAgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdPT0nIic6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIGVsaWYgdmFsdWVbMF0gaW4gU1BFQ0lBTFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCAnYXRvbScgb3IgJ3F1b3RlZC1zdHJpbmcnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICByZXR1cm4gdG9rZW4sIHZhbHVlCisKK2RlZiBnZXRfcGhyYXNlKHZhbHVlKToKKyAgICAiIiIgcGhyYXNlID0gMSp3b3JkIC8gb2JzLXBocmFzZQorICAgICAgICBvYnMtcGhyYXNlID0gd29yZCAqKHdvcmQgLyAiLiIgLyBDRldTKQorCisgICAgVGhpcyBtZWFucyBhIHBocmFzZSBjYW4gYmUgYSBzZXF1ZW5jZSBvZiB3b3JkcywgcGVyaW9kcywgYW5kIENGV1MgaW4gYW55CisgICAgb3JkZXIgYXMgbG9uZyBhcyBpdCBzdGFydHMgd2l0aCBhdCBsZWFzdCBvbmUgd29yZC4gIElmIGFueXRoaW5nIG90aGVyIHRoYW4KKyAgICB3b3JkcyBpcyBkZXRlY3RlZCwgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0CisgICAgbGlzdC4gIFdlIGFsc28gYWNjZXB0IGEgcGhyYXNlIHRoYXQgc3RhcnRzIHdpdGggQ0ZXUyBmb2xsb3dlZCBieSBhIGRvdDsKKyAgICB0aGlzIGlzIHJlZ2lzdGVyZWQgYXMgYW4gSW52YWxpZEhlYWRlckRlZmVjdCwgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCBieQorICAgIGV2ZW4gdGhlIG9ic29sZXRlIGdyYW1tYXIuCisKKyAgICAiIiIKKyAgICBwaHJhc2UgPSBQaHJhc2UoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgIHBocmFzZS5hcHBlbmQodG9rZW4pCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBwaHJhc2UuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAicGhyYXNlIGRvZXMgbm90IHN0YXJ0IHdpdGggd29yZCIpKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFM6CisgICAgICAgIGlmIHZhbHVlWzBdPT0nLic6CisgICAgICAgICAgICBwaHJhc2UuYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgInBlcmlvZCBpbiAncGhyYXNlJyIpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICAgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWVudCBmb3VuZCB3aXRob3V0IGF0b20iKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcGhyYXNlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gcGhyYXNlLCB2YWx1ZQorCitkZWYgZ2V0X2xvY2FsX3BhcnQodmFsdWUpOgorICAgICIiIiBsb2NhbC1wYXJ0ID0gZG90LWF0b20gLyBxdW90ZWQtc3RyaW5nIC8gb2JzLWxvY2FsLXBhcnQKKworICAgICIiIgorICAgIGxvY2FsX3BhcnQgPSBMb2NhbFBhcnQoKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgbG9jYWwtcGFydCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSAhPSAnXFwnIGFuZCB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgdG9rZW4gPSBUb2tlbkxpc3QoKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBsb2NhbF9wYXJ0LmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nXFwnIG9yIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZSA9IGdldF9vYnNfbG9jYWxfcGFydChzdHIobG9jYWxfcGFydCkgKyB2YWx1ZSkKKyAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQudG9rZW5fdHlwZSA9PSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCc6CisgICAgICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGlzIG5vdCBkb3QtYXRvbSwgcXVvdGVkLXN0cmluZywgb3Igb2JzLWxvY2FsLXBhcnQiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJsb2NhbC1wYXJ0IGlzIG5vdCBhIGRvdC1hdG9tIChjb250YWlucyBDRldTKSIpKQorICAgICAgICBsb2NhbF9wYXJ0WzBdID0gb2JzX2xvY2FsX3BhcnQKKyAgICB0cnk6CisgICAgICAgIGxvY2FsX3BhcnQudmFsdWUuZW5jb2RlKCdhc2NpaScpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9uQVNDSUlMb2NhbFBhcnREZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMpIikpCisgICAgcmV0dXJuIGxvY2FsX3BhcnQsIHZhbHVlCisKK2RlZiBnZXRfb2JzX2xvY2FsX3BhcnQodmFsdWUpOgorICAgICIiIiBvYnMtbG9jYWwtcGFydCA9IHdvcmQgKigiLiIgd29yZCkKKyAgICAiIiIKKyAgICBvYnNfbG9jYWxfcGFydCA9IE9ic0xvY2FsUGFydCgpCisgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCisgICAgd2hpbGUgdmFsdWUgYW5kICh2YWx1ZVswXT09J1xcJyBvciB2YWx1ZVswXSBub3QgaW4gUEhSQVNFX0VORFMpOgorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBpZiBsYXN0X25vbl93c193YXNfZG90OgorICAgICAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCByZXBlYXRlZCAnLiciKSkKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZChET1QpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gVHJ1ZQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsaWYgdmFsdWVbMF09PSdcXCc6CisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNwbGFjZWQtc3BlY2lhbCcpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICInXFwnIGNoYXJhY3RlciBvdXRzaWRlIG9mIHF1b3RlZC1zdHJpbmcvY2NvbnRlbnQiKSkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBGYWxzZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgb2JzX2xvY2FsX3BhcnQgYW5kIG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlICE9ICdkb3QnOgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIm1pc3NpbmcgJy4nIGJldHdlZW4gd29yZHMiKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgICAgICBsYXN0X25vbl93c193YXNfZG90ID0gRmFsc2UKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgaWYgdmFsdWVbMF0gbm90IGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKHRva2VuKQorICAgIGlmIChvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlID09ICdkb3QnIG9yCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFswXS50b2tlbl90eXBlPT0nY2Z3cycgYW5kCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFsxXS50b2tlbl90eXBlPT0nZG90Jyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgbGVhZGluZyAnLicgaW4gbG9jYWwgcGFydCIpKQorICAgIGlmIChvYnNfbG9jYWxfcGFydFstMV0udG9rZW5fdHlwZSA9PSAnZG90JyBvcgorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbLTFdLnRva2VuX3R5cGU9PSdjZndzJyBhbmQKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0Wy0yXS50b2tlbl90eXBlPT0nZG90Jyk6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgdHJhaWxpbmcgJy4nIGluIGxvY2FsIHBhcnQiKSkKKyAgICBpZiBvYnNfbG9jYWxfcGFydC5kZWZlY3RzOgorICAgICAgICBvYnNfbG9jYWxfcGFydC50b2tlbl90eXBlID0gJ2ludmFsaWQtb2JzLWxvY2FsLXBhcnQnCisgICAgcmV0dXJuIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZQorCitkZWYgZ2V0X2R0ZXh0KHZhbHVlKToKKyAgICAiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKKyAgICAgICAgb2JzLWR0ZXh0ID0gb2JzLU5PLVdTLUNUTCAvIHF1b3RlZC1wYWlyCisKKyAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIGV4Y2x1ZGVkIGNoYXJhY3RlcnMsIGJ1dCBidXQgaWYgd2UgZmluZCBhbnkKKyAgICBBU0NJSSBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgUXVvdGVkIHBhaXJzIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIKKyAgICB1bnF1b3RlZCB2YWx1ZXMsIHNvIHdoYXQgaXMgcmV0dXJuZWQgaXMgYSBwdGV4dCB0b2tlbiwgaW4gdGhpcyBjYXNlIGEKKyAgICBWYWx1ZVRlcm1pbmFsLiAgSWYgdGhlcmUgd2VyZSBxdW90ZWQtcHJpbnRhYmxlcywgYW4gT2Jzb2xldGVIZWFkZXJEZWZlY3QgaXMKKyAgICBhZGRlZCB0byB0aGUgcmV0dXJuZWQgdG9rZW4ncyBkZWZlY3QgbGlzdC4KKworICAgICIiIgorICAgIHB0ZXh0LCB2YWx1ZSwgaGFkX3FwID0gX2dldF9wdGV4dF90b19lbmRjaGFycyh2YWx1ZSwgJ1tdJykKKyAgICBwdGV4dCA9IFZhbHVlVGVybWluYWwocHRleHQsICdwdGV4dCcpCisgICAgaWYgaGFkX3FwOgorICAgICAgICBwdGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAicXVvdGVkIHByaW50YWJsZSBmb3VuZCBpbiBkb21haW4tbGl0ZXJhbCIpKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgIGlmIHZhbHVlOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICJlbmQgb2YgaW5wdXQgaW5zaWRlIGRvbWFpbi1saXRlcmFsIikpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnZG9tYWluLWxpdGVyYWwtZW5kJykpCisgICAgcmV0dXJuIFRydWUKKworZGVmIGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSk6CisgICAgIiIiIGRvbWFpbi1saXRlcmFsID0gW0NGV1NdICJbIiAqKFtGV1NdIGR0ZXh0KSBbRldTXSAiXSIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBkb21haW5fbGl0ZXJhbCA9IERvbWFpbkxpdGVyYWwoKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkIGRvbWFpbi1saXRlcmFsIikKKyAgICBpZiB2YWx1ZVswXSAhPSAnWyc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnWycgYXQgc3RhcnQgb2YgZG9tYWluLWxpdGVyYWwgIgorICAgICAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnWycsICdkb21haW4tbGl0ZXJhbC1zdGFydCcpKQorICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kdGV4dCh2YWx1ZSkKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICAgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKHRva2VuKQorICAgIGlmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgICAgIHJldHVybiBkb21haW5fbGl0ZXJhbCwgdmFsdWUKKyAgICBpZiB2YWx1ZVswXSAhPSAnXSc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnXScgYXQgZW5kIG9mIGRvbWFpbi1saXRlcmFsICIKKyAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZG9tYWluX2xpdGVyYWwuYXBwZW5kKFZhbHVlVGVybWluYWwoJ10nLCAnZG9tYWluLWxpdGVyYWwtZW5kJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorCitkZWYgZ2V0X2RvbWFpbih2YWx1ZSk6CisgICAgIiIiIGRvbWFpbiA9IGRvdC1hdG9tIC8gZG9tYWluLWxpdGVyYWwgLyBvYnMtZG9tYWluCisgICAgICAgIG9icy1kb21haW4gPSBhdG9tICooIi4iIGF0b20pKQorCisgICAgIiIiCisgICAgZG9tYWluID0gRG9tYWluKCkKKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGRvbWFpbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBpZiB2YWx1ZVswXSA9PSAnWyc6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW5fbGl0ZXJhbCh2YWx1ZSkKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKKyAgICAgICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbSh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBkb21haW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgIGRvbWFpbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZG9tYWluIGlzIG5vdCBhIGRvdC1hdG9tIChjb250YWlucyBDRldTKSIpKQorICAgICAgICBpZiBkb21haW5bMF0udG9rZW5fdHlwZSA9PSAnZG90LWF0b20nOgorICAgICAgICAgICAgZG9tYWluWzpdID0gZG9tYWluWzBdCisgICAgICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBkb21haW4uYXBwZW5kKERPVCkKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdG9tKHZhbHVlWzE6XSkKKyAgICAgICAgICAgIGRvbWFpbi5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvbWFpbiwgdmFsdWUKKworZGVmIGdldF9hZGRyX3NwZWModmFsdWUpOgorICAgICIiIiBhZGRyLXNwZWMgPSBsb2NhbC1wYXJ0ICJAIiBkb21haW4KKworICAgICIiIgorICAgIGFkZHJfc3BlYyA9IEFkZHJTcGVjKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbG9jYWxfcGFydCh2YWx1ZSkKKyAgICBhZGRyX3NwZWMuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnQCc6CisgICAgICAgIGFkZHJfc3BlYy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJhZGQtc3BlYyBsb2NhbCBwYXJ0IHdpdGggbm8gZG9tYWluIikpCisgICAgICAgIHJldHVybiBhZGRyX3NwZWMsIHZhbHVlCisgICAgYWRkcl9zcGVjLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCdAJywgJ2FkZHJlc3MtYXQtc3ltYm9sJykpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgYWRkcl9zcGVjLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYWRkcl9zcGVjLCB2YWx1ZQorCitkZWYgZ2V0X29ic19yb3V0ZSh2YWx1ZSk6CisgICAgIiIiIG9icy1yb3V0ZSA9IG9icy1kb21haW4tbGlzdCAiOiIKKyAgICAgICAgb2JzLWRvbWFpbi1saXN0ID0gKihDRldTIC8gIiwiKSAiQCIgZG9tYWluICooIiwiIFtDRldTXSBbIkAiIGRvbWFpbl0pCisKKyAgICAgICAgUmV0dXJucyBhbiBvYnMtcm91dGUgdG9rZW4gd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3ViLXRva2VucyAodGhhdCBpcywKKyAgICAgICAgdGhlcmUgaXMgbm8gb2JzLWRvbWFpbi1saXN0IGluIHRoZSBwYXJzZSB0cmVlKS4KKyAgICAiIiIKKyAgICBvYnNfcm91dGUgPSBPYnNSb3V0ZSgpCisgICAgd2hpbGUgdmFsdWUgYW5kICh2YWx1ZVswXT09JywnIG9yIHZhbHVlWzBdIGluIENGV1NfTEVBREVSKToKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIG9ic19yb3V0ZS5hcHBlbmQodG9rZW4pCisgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJ0AnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBvYnMtcm91dGUgZG9tYWluIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIG9ic19yb3V0ZS5hcHBlbmQoUm91dGVDb21wb25lbnRNYXJrZXIpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF09PScsJzoKKyAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBicmVhaworICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJ0AnOgorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZChSb3V0ZUNvbXBvbmVudE1hcmtlcikKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb21haW4odmFsdWVbMTpdKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJlbmQgb2YgaGVhZGVyIHdoaWxlIHBhcnNpbmcgb2JzLXJvdXRlIikKKyAgICBpZiB2YWx1ZVswXSAhPSAnOic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCAiZXhwZWN0ZWQgJzonIG1hcmtpbmcgZW5kIG9mICIKKyAgICAgICAgICAgICJvYnMtcm91dGUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgb2JzX3JvdXRlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc6JywgJ2VuZC1vZi1vYnMtcm91dGUtbWFya2VyJykpCisgICAgcmV0dXJuIG9ic19yb3V0ZSwgdmFsdWVbMTpdCisKK2RlZiBnZXRfYW5nbGVfYWRkcih2YWx1ZSk6CisgICAgIiIiIGFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIGFkZHItc3BlYyAiPiIgW0NGV1NdIC8gb2JzLWFuZ2xlLWFkZHIKKyAgICAgICAgb2JzLWFuZ2xlLWFkZHIgPSBbQ0ZXU10gIjwiIG9icy1yb3V0ZSBhZGRyLXNwZWMgIj4iIFtDRldTXQorCisgICAgIiIiCisgICAgYW5nbGVfYWRkciA9IEFuZ2xlQWRkcigpCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gJzwnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhbmdsZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGFuZ2xlX2FkZHIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzwnLCAnYW5nbGUtYWRkci1zdGFydCcpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgIyBBbHRob3VnaCBpdCBpcyBub3QgbGVnYWwgcGVyIFJGQzUzMjIsIFNNVFAgdXNlcyAnPD4nIGluIGNlcnRhaW4KKyAgICAjIGNpcmN1bXN0YW5jZXMuCisgICAgaWYgdmFsdWVbMF0gPT0gJz4nOgorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCisgICAgICAgIGFuZ2xlX2FkZHIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAibnVsbCBhZGRyLXNwZWMgaW4gYW5nbGUtYWRkciIpKQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICByZXR1cm4gYW5nbGVfYWRkciwgdmFsdWUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfb2JzX3JvdXRlKHZhbHVlKQorICAgICAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIm9ic29sZXRlIHJvdXRlIHNwZWNpZmljYXRpb24gaW4gYW5nbGUtYWRkciIpKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYWRkci1zcGVjIG9yIG9icy1yb3V0ZSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hZGRyX3NwZWModmFsdWUpCisgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICc+JzoKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBlbHNlOgorICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIm1pc3NpbmcgdHJhaWxpbmcgJz4nIG9uIGFuZ2xlLWFkZHIiKSkKKyAgICBhbmdsZV9hZGRyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc+JywgJ2FuZ2xlLWFkZHItZW5kJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYW5nbGVfYWRkci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGFuZ2xlX2FkZHIsIHZhbHVlCisKK2RlZiBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKToKKyAgICAiIiIgZGlzcGxheS1uYW1lID0gcGhyYXNlCisKKyAgICBCZWNhdXNlIHRoaXMgaXMgc2ltcGx5IGEgbmFtZS1ydWxlLCB3ZSBkb24ndCByZXR1cm4gYSBkaXNwbGF5LW5hbWUKKyAgICB0b2tlbiBjb250YWluaW5nIGEgcGhyYXNlLCBidXQgcmF0aGVyIGEgZGlzcGxheS1uYW1lIHRva2VuIHdpdGgKKyAgICB0aGUgY29udGVudCBvZiB0aGUgcGhyYXNlLgorCisgICAgIiIiCisgICAgZGlzcGxheV9uYW1lID0gRGlzcGxheU5hbWUoKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9waHJhc2UodmFsdWUpCisgICAgZGlzcGxheV9uYW1lLmV4dGVuZCh0b2tlbls6XSkKKyAgICBkaXNwbGF5X25hbWUuZGVmZWN0cyA9IHRva2VuLmRlZmVjdHNbOl0KKyAgICByZXR1cm4gZGlzcGxheV9uYW1lLCB2YWx1ZQorCisKK2RlZiBnZXRfbmFtZV9hZGRyKHZhbHVlKToKKyAgICAiIiIgbmFtZS1hZGRyID0gW2Rpc3BsYXktbmFtZV0gYW5nbGUtYWRkcgorCisgICAgIiIiCisgICAgbmFtZV9hZGRyID0gTmFtZUFkZHIoKQorICAgICMgQm90aCB0aGUgb3B0aW9uYWwgZGlzcGxheSBuYW1lIGFuZCB0aGUgYW5nbGUtYWRkciBjYW4gc3RhcnQgd2l0aCBjZndzLgorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbmFtZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQobGVhZGVyKSkKKyAgICBpZiB2YWx1ZVswXSAhPSAnPCc6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Rpc3BsYXlfbmFtZSh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG5hbWUtYWRkciBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHRva2VuKSkKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdG9rZW5bMF1bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgbmFtZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYW5nbGVfYWRkcih2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgbmFtZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbmFtZV9hZGRyLCB2YWx1ZQorCitkZWYgZ2V0X21haWxib3godmFsdWUpOgorICAgICIiIiBtYWlsYm94ID0gbmFtZS1hZGRyIC8gYWRkci1zcGVjCisKKyAgICAiIiIKKyAgICAjIFRoZSBvbmx5IHdheSB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBuYW1lLWFkZHIgb3IgYW4KKyAgICAjIGFkZHItc3BlYyBpcyB0byB0cnkgcGFyc2luZyBlYWNoIG9uZS4KKyAgICBtYWlsYm94ID0gTWFpbGJveCgpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbmFtZV9hZGRyKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJfc3BlYyh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIG1haWxib3ggYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgaWYgYW55KGlzaW5zdGFuY2UoeCwgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHRva2VuLmFsbF9kZWZlY3RzKToKKyAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICBtYWlsYm94LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gbWFpbGJveCwgdmFsdWUKKworZGVmIGdldF9pbnZhbGlkX21haWxib3godmFsdWUsIGVuZGNoYXJzKToKKyAgICAiIiIgUmVhZCBldmVyeXRoaW5nIHVwIHRvIG9uZSBvZiB0aGUgY2hhcnMgaW4gZW5kY2hhcnMuCisKKyAgICBUaGlzIGlzIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyLiAgVGhlIEludmFsaWRNYWlsYm94IFRva2VuTGlzdCB0aGF0IGlzCisgICAgcmV0dXJuZWQgYWN0cyBsaWtlIGEgTWFpbGJveCwgYnV0IHRoZSBkYXRhIGF0dHJpYnV0ZXMgYXJlIE5vbmUuCisKKyAgICAiIiIKKyAgICBpbnZhbGlkX21haWxib3ggPSBJbnZhbGlkTWFpbGJveCgpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBlbmRjaGFyczoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICBpbnZhbGlkX21haWxib3guYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGludmFsaWRfbWFpbGJveC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGludmFsaWRfbWFpbGJveCwgdmFsdWUKKworZGVmIGdldF9tYWlsYm94X2xpc3QodmFsdWUpOgorICAgICIiIiBtYWlsYm94LWxpc3QgPSAobWFpbGJveCAqKCIsIiBtYWlsYm94KSkgLyBvYnMtbWJveC1saXN0CisgICAgICAgIG9icy1tYm94LWxpc3QgPSAqKFtDRldTXSAiLCIpIG1haWxib3ggKigiLCIgW21haWxib3ggLyBDRldTXSkKKworICAgIEZvciB0aGlzIHJvdXRpbmUgd2UgZ28gb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIgaW4gb3JkZXIgdG8gaW1wcm92ZSBlcnJvcgorICAgIGhhbmRsaW5nLiAgV2UgcmVjb2duaXplIHRoZSBlbmQgb2YgdGhlIG1haWxib3ggbGlzdCBvbmx5IGF0IHRoZSBlbmQgb2YgdGhlCisgICAgdmFsdWUgb3IgYXQgYSAnOycgKHRoZSBncm91cCB0ZXJtaW5hdG9yKS4gIFRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gdHVybgorICAgIGludmFsaWQgbWFpbGJveGVzIGludG8gSW52YWxpZE1haWxib3ggdG9rZW5zIGFuZCBjb250aW51ZSBwYXJzaW5nIGFueQorICAgIHJlbWFpbmluZyB2YWxpZCBtYWlsYm94ZXMuICBXZSBhbHNvIGFsbG93IGFsbCBtYWlsYm94IGVudHJpZXMgdG8gYmUgbnVsbCwKKyAgICBhbmQgdGhpcyBjb25kaXRpb24gaXMgaGFuZGxlZCBhcHByb3ByaWF0ZWx5IGF0IGEgaGlnaGVyIGxldmVsLgorCisgICAgIiIiCisgICAgbWFpbGJveF9saXN0ID0gTWFpbGJveExpc3QoKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94KHZhbHVlKQorICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSBpbiAnLDsnOgorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgICAgICBlbGlmIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAiZW1wdHkgZWxlbWVudCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gJyw7JzoKKyAgICAgICAgICAgICMgQ3JhcCBhZnRlciBtYWlsYm94OyB0cmVhdCBpdCBhcyBhbiBpbnZhbGlkIG1haWxib3guCisgICAgICAgICAgICAjIFRoZSBtYWlsYm94IGluZm8gd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUuCisgICAgICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Wy0xXQorICAgICAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsOycpCisgICAgICAgICAgICBtYWlsYm94LmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBtYWlsYm94IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZChMaXN0U2VwYXJhdG9yKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gbWFpbGJveF9saXN0LCB2YWx1ZQorCisKK2RlZiBnZXRfZ3JvdXBfbGlzdCh2YWx1ZSk6CisgICAgIiIiIGdyb3VwLWxpc3QgPSBtYWlsYm94LWxpc3QgLyBDRldTIC8gb2JzLWdyb3VwLWxpc3QKKyAgICAgICAgb2JzLWdyb3VwLWxpc3QgPSAxKihbQ0ZXU10gIiwiKSBbQ0ZXU10KKworICAgICIiIgorICAgIGdyb3VwX2xpc3QgPSBHcm91cExpc3QoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGJlZm9yZSBncm91cC1saXN0IikpCisgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gZW1haWwgcGFyc2luZywgc2luY2UgQ0ZXUy1vbmx5IGlzIGEKKyAgICAgICAgICAgICMgbGVnYWwgYWx0ZXJuYXRpdmUgdG8gZ3JvdXAtbGlzdCBpbiBhIGdyb3VwLCB3aGljaCBpcyB0aGUgb25seQorICAgICAgICAgICAgIyBwbGFjZSBncm91cC1saXN0IGFwcGVhcnMuCisgICAgICAgICAgICBncm91cF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluIGdyb3VwLWxpc3QiKSkKKyAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveF9saXN0KHZhbHVlKQorICAgIGlmIGxlbih0b2tlbi5hbGxfbWFpbGJveGVzKT09MDoKKyAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZ3JvdXBfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICBncm91cF9saXN0LmV4dGVuZCh0b2tlbikKKyAgICAgICAgZ3JvdXBfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZ3JvdXAtbGlzdCB3aXRoIGVtcHR5IGVudHJpZXMiKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIGdyb3VwX2xpc3QuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorCitkZWYgZ2V0X2dyb3VwKHZhbHVlKToKKyAgICAiIiIgZ3JvdXAgPSBkaXNwbGF5LW5hbWUgIjoiIFtncm91cC1saXN0XSAiOyIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBncm91cCA9IEdyb3VwKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnOic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCAnOicgYXQgZW5kIG9mIGdyb3VwICIKKyAgICAgICAgICAgICJkaXNwbGF5IG5hbWUgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc6JywgJ2dyb3VwLWRpc3BsYXktbmFtZS10ZXJtaW5hdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICBncm91cC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdncm91cC10ZXJtaW5hdG9yJykpCisgICAgICAgIHJldHVybiBncm91cCwgdmFsdWVbMTpdCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwX2xpc3QodmFsdWUpCisgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgZ3JvdXAuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiZW5kIG9mIGhlYWRlciBpbiBncm91cCIpKQorICAgIGlmIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgJzsnIGF0IGVuZCBvZiBncm91cCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAnZ3JvdXAtdGVybWluYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZ3JvdXAuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBncm91cCwgdmFsdWUKKworZGVmIGdldF9hZGRyZXNzKHZhbHVlKToKKyAgICAiIiIgYWRkcmVzcyA9IG1haWxib3ggLyBncm91cAorCisgICAgTm90ZSB0aGF0IGNvdW50ZXItaW50dWl0aXZlbHksIGFuIGFkZHJlc3MgY2FuIGJlIGVpdGhlciBhIHNpbmdsZSBhZGRyZXNzIG9yCisgICAgYSBsaXN0IG9mIGFkZHJlc3NlcyAoYSBncm91cCkuICBUaGlzIGlzIHdoeSB0aGUgcmV0dXJuZWQgQWRkcmVzcyBvYmplY3QgaGFzCisgICAgYSAnbWFpbGJveGVzJyBhdHRyaWJ1dGUgd2hpY2ggdHJlYXRzIGEgc2luZ2xlIGFkZHJlc3MgYXMgYSBsaXN0IG9mIGxlbmd0aAorICAgIG9uZS4gIFdoZW4geW91IG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRvIHR3byBjYXNlcywgZXh0cmFjdCB0aGUgc2luZ2xlCisgICAgZWxlbWVudCwgd2hpY2ggaXMgZWl0aGVyIGEgbWFpbGJveCBvciBhIGdyb3VwIHRva2VuLgorCisgICAgIiIiCisgICAgIyBUaGUgZm9ybWFsIGdyYW1tYXIgaXNuJ3QgdmVyeSBoZWxwZnVsIHdoZW4gcGFyc2luZyBhbiBhZGRyZXNzLiAgbWFpbGJveAorICAgICMgYW5kIGdyb3VwLCBlc3BlY2lhbGx5IHdoZW4gYWxsb3dpbmcgZm9yIG9ic29sZXRlIGZvcm1zLCBzdGFydCBvZmYgdmVyeQorICAgICMgc2ltaWxhcmx5LiAgSXQgaXMgb25seSB3aGVuIHlvdSByZWFjaCBvbmUgb2YgQCwgPCwgb3IgOiB0aGF0IHlvdSBrbm93CisgICAgIyB3aGF0IHlvdSd2ZSBnb3QuICBTbywgd2UgdHJ5IGVhY2ggb25lIGluIHR1cm4sIHN0YXJ0aW5nIHdpdGggdGhlIG1vcmUKKyAgICAjIGxpa2VseSBvZiB0aGUgdHdvLiAgV2UgY291bGQgcGVyaGFwcyBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnQgYnkgbG9va2luZworICAgICMgZm9yIGEgcGhyYXNlIGFuZCB0aGVuIGJyYW5jaGluZyBiYXNlZCBvbiB0aGUgbmV4dCBjaGFyYWN0ZXIsIGJ1dCB0aGF0CisgICAgIyB3b3VsZCBiZSBhIHByZW1hdHVyZSBvcHRpbWl6YXRpb24uCisgICAgYWRkcmVzcyA9IEFkZHJlc3MoKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2dyb3VwKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3godmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBhZGRyZXNzIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGFkZHJlc3MuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhZGRyZXNzLCB2YWx1ZQorCitkZWYgZ2V0X2FkZHJlc3NfbGlzdCh2YWx1ZSk6CisgICAgIiIiIGFkZHJlc3NfbGlzdCA9IChhZGRyZXNzICooIiwiIGFkZHJlc3MpKSAvIG9icy1hZGRyLWxpc3QKKyAgICAgICAgb2JzLWFkZHItbGlzdCA9ICooW0NGV1NdICIsIikgYWRkcmVzcyAqKCIsIiBbYWRkcmVzcyAvIENGV1NdKQorCisgICAgV2UgZGVwYXJ0IGZyb20gdGhlIGZvcm1hbCBncmFtbWFyIGhlcmUgYnkgY29udGludWluZyB0byBwYXJzZSB1bnRpbCB0aGUgZW5kCisgICAgb2YgdGhlIGlucHV0LCBhc3N1bWluZyB0aGUgaW5wdXQgdG8gYmUgZW50aXJlbHkgY29tcG9zZWQgb2YgYW4KKyAgICBhZGRyZXNzLWxpc3QuICBUaGlzIGlzIGFsd2F5cyB0cnVlIGluIGVtYWlsIHBhcnNpbmcsIGFuZCBhbGxvd3MgdXMKKyAgICB0byBza2lwIGludmFsaWQgYWRkcmVzc2VzIHRvIHBhcnNlIGFkZGl0aW9uYWwgdmFsaWQgb25lcy4KKworICAgICIiIgorICAgIGFkZHJlc3NfbGlzdCA9IEFkZHJlc3NMaXN0KCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJlc3ModmFsdWUpCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImFkZHJlc3MtbGlzdCBlbnRyeSB3aXRoIG5vIGNvbnRlbnQiKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYWRkcmVzcyBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoQWRkcmVzcyhbdG9rZW5dKSkKKyAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnLCc6CisgICAgICAgICAgICAjIENyYXAgYWZ0ZXIgYWRkcmVzczsgdHJlYXQgaXQgYXMgYW4gaW52YWxpZCBtYWlsYm94LgorICAgICAgICAgICAgIyBUaGUgbWFpbGJveCBpbmZvIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLgorICAgICAgICAgICAgbWFpbGJveCA9IGFkZHJlc3NfbGlzdFstMV1bMF0KKyAgICAgICAgICAgIG1haWxib3gudG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLCcpCisgICAgICAgICAgICBtYWlsYm94LmV4dGVuZCh0b2tlbikKKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICBpZiB2YWx1ZTogICMgTXVzdCBiZSBhICwgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLCcsICdsaXN0LXNlcGFyYXRvcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gYWRkcmVzc19saXN0LCB2YWx1ZQorCisjCisjIFhYWDogQXMgSSBiZWdpbiB0byBhZGQgYWRkaXRpb25hbCBoZWFkZXIgcGFyc2VycywgSSdtIHJlYWxpemluZyB3ZSBwcm9iYWJseQorIyBoYXZlIHR3byBsZXZlbCBvZiBwYXJzZXIgcm91dGluZXM6IHRoZSBnZXRfWFhYIG1ldGhvZHMgdGhhdCBnZXQgYSB0b2tlbiBpbgorIyB0aGUgZ3JhbW1hciwgYW5kIHBhcnNlX1hYWCBtZXRob2RzIHRoYXQgcGFyc2UgYW4gZW50aXJlIGZpZWxkIHZhbHVlLiAgU28KKyMgZ2V0X2FkZHJlc3NfbGlzdCBhYm92ZSBzaG91bGQgcmVhbGx5IGJlIGEgcGFyc2VfIG1ldGhvZCwgYXMgcHJvYmFibHkgc2hvdWxkCisjIGJlIGdldF91bnN0cnVjdHVyZWQuCisjCisKK2RlZiBwYXJzZV9taW1lX3ZlcnNpb24odmFsdWUpOgorICAgICIiIiBtaW1lLXZlcnNpb24gPSBbQ0ZXU10gMSpkaWdpdCBbQ0ZXU10gIi4iIFtDRldTXSAxKmRpZ2l0IFtDRldTXQorCisgICAgIiIiCisgICAgIyBUaGUgW0NGV1NdIGlzIGltcGxpY2l0IGluIHRoZSBSRkMgMjA0NSBCTkYuCisgICAgIyBYWFg6IFRoaXMgcm91dGluZSBpcyBhIGJpdCB2ZXJib3NlLCBzaG91bGQgZmFjdG9yIG91dCBhIGdldF9pbnQgbWV0aG9kLgorICAgIG1pbWVfdmVyc2lvbiA9IE1JTUVWZXJzaW9uKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBNSU1FIHZlcnNpb24gbnVtYmVyIChlZzogMS4wKSIpKQorICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKAorICAgICAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCBvbmx5IENGV1MiKSkKKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnLicgYW5kIHZhbHVlWzBdIG5vdCBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IGRpZ2l0cy5pc2RpZ2l0KCk6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIG1ham9yIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQoZGlnaXRzKSkpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICd4dGV4dCcpKQorICAgIGVsc2U6CisgICAgICAgIG1pbWVfdmVyc2lvbi5tYWpvciA9IGludChkaWdpdHMpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICdkaWdpdHMnKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLic6CisgICAgICAgIGlmIG1pbWVfdmVyc2lvbi5tYWpvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlLCAneHRleHQnKSkKKyAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLicsICd2ZXJzaW9uLXNlcGFyYXRvcicpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGlmIG1pbWVfdmVyc2lvbi5tYWpvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiSW5jb21wbGV0ZSBNSU1FIHZlcnNpb247IGZvdW5kIG9ubHkgbWFqb3IgbnVtYmVyIikpCisgICAgICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCBkaWdpdHMuaXNkaWdpdCgpOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgTUlNRSBtaW5vciB2ZXJzaW9uIG51bWJlciBidXQgZm91bmQgeyFyfSIuZm9ybWF0KGRpZ2l0cykpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAneHRleHQnKSkKKyAgICBlbHNlOgorICAgICAgICBtaW1lX3ZlcnNpb24ubWlub3IgPSBpbnQoZGlnaXRzKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4Y2VzcyBub24tQ0ZXUyB0ZXh0IGFmdGVyIE1JTUUgdmVyc2lvbiIpKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWUsICd4dGV4dCcpKQorICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKworZGVmIGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSk6CisgICAgIiIiIFJlYWQgZXZlcnl0aGluZyB1cCB0byB0aGUgbmV4dCAnOycuCisKKyAgICBUaGlzIGlzIG91dHNpZGUgdGhlIGZvcm1hbCBncmFtbWFyLiAgVGhlIEludmFsaWRQYXJhbWV0ZXIgVG9rZW5MaXN0IHRoYXQgaXMKKyAgICByZXR1cm5lZCBhY3RzIGxpa2UgYSBQYXJhbWV0ZXIsIGJ1dCB0aGUgZGF0YSBhdHRyaWJ1dGVzIGFyZSBOb25lLgorCisgICAgIiIiCisgICAgaW52YWxpZF9wYXJhbWV0ZXIgPSBJbnZhbGlkUGFyYW1ldGVyKCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIGludmFsaWRfcGFyYW1ldGVyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGludmFsaWRfcGFyYW1ldGVyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gaW52YWxpZF9wYXJhbWV0ZXIsIHZhbHVlCisKK2RlZiBnZXRfdHRleHQodmFsdWUpOgorICAgICIiInR0ZXh0ID0gPG1hdGNoZXMgX3R0ZXh0X21hdGNoZXI+CisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLVRPS0VOX0VORFMgaW4gdHRleHQsIGJ1dCBhZGQgZGVmZWN0cyB0byB0aGUgdG9rZW4ncworICAgIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi10dGV4dCBjaGFyYWN0ZXJzLiAgV2UgYWxzbyByZWdpc3RlciBkZWZlY3RzIGZvcgorICAgICphbnkqIG5vbi1wcmludGFibGVzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndCBleGNsdWRlIGFsbCBvZiB0aGVtLAorICAgIGJlY2F1c2Ugd2UgZm9sbG93IHRoZSBzcGlyaXQgb2YgUkZDIDUzMjIuCisKKyAgICAiIiIKKyAgICBtID0gX25vbl90b2tlbl9lbmRfbWF0Y2hlcih2YWx1ZSkKKyAgICBpZiBub3QgbToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdHRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdHRleHQgPSBtLmdyb3VwKCkKKyAgICB2YWx1ZSA9IHZhbHVlW2xlbih0dGV4dCk6XQorICAgIHR0ZXh0ID0gVmFsdWVUZXJtaW5hbCh0dGV4dCwgJ3R0ZXh0JykKKyAgICBfdmFsaWRhdGVfeHRleHQodHRleHQpCisgICAgcmV0dXJuIHR0ZXh0LCB2YWx1ZQorCitkZWYgZ2V0X3Rva2VuKHZhbHVlKToKKyAgICAiIiJ0b2tlbiA9IFtDRldTXSAxKnR0ZXh0IFtDRldTXQorCisgICAgVGhlIFJGQyBlcXVpdmFsZW50IG9mIHR0ZXh0IGlzIGFueSBVUy1BU0NJSSBjaGFycyBleGNlcHQgc3BhY2UsIGN0bHMsIG9yCisgICAgdHNwZWNpYWxzLiAgV2UgYWxzbyBleGNsdWRlIHRhYnMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0LgorCisgICAgVGhlIFJGQyBpbXBsaWVzIHRoZSBDRldTIGJ1dCBpcyBub3QgZXhwbGljaXQgYWJvdXQgaXQgaW4gdGhlIEJORi4KKworICAgICIiIgorICAgIG10b2tlbiA9IFRva2VuKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBUT0tFTl9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdHRleHQodmFsdWUpCisgICAgbXRva2VuLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBtdG9rZW4sIHZhbHVlCisKK2RlZiBnZXRfYXR0cnRleHQodmFsdWUpOgorICAgICIiImF0dHJ0ZXh0ID0gMSooYW55IG5vbi1BVFRSSUJVVEVfRU5EUyBjaGFyYWN0ZXIpCisKKyAgICBXZSBhbGxvdyBhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGluIGF0dHJ0ZXh0LCBidXQgYWRkIGRlZmVjdHMgdG8gdGhlCisgICAgdG9rZW4ncyBkZWZlY3RzIGxpc3QgaWYgd2UgZmluZCBub24tYXR0cnRleHQgY2hhcmFjdGVycy4gIFdlIGFsc28gcmVnaXN0ZXIKKyAgICBkZWZlY3RzIGZvciAqYW55KiBub24tcHJpbnRhYmxlcyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QgZXhjbHVkZSBhbGwgb2YKKyAgICB0aGVtLCBiZWNhdXNlIHdlIGZvbGxvdyB0aGUgc3Bpcml0IG9mIFJGQyA1MzIyLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdHRydGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCisgICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnYXR0cnRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdHRydGV4dCkKKyAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCisKK2RlZiBnZXRfYXR0cmlidXRlKHZhbHVlKToKKyAgICAiIiIgW0NGV1NdIDEqYXR0cnRleHQgW0NGV1NdCisKKyAgICBUaGlzIHZlcnNpb24gb2YgdGhlIEJORiBtYWtlcyB0aGUgQ0ZXUyBleHBsaWNpdCwgYW5kIGFzIHVzdWFsIHdlIHVzZSBhCisgICAgdmFsdWUgdGVybWluYWwgZm9yIHRoZSBhY3R1YWwgcnVuIG9mIGNoYXJhY3RlcnMuICBUaGUgUkZDIGVxdWl2YWxlbnQgb2YKKyAgICBhdHRydGV4dCBpcyB0aGUgdG9rZW4gY2hhcmFjdGVycywgd2l0aCB0aGUgc3VidHJhY3Rpb24gb2YgJyonLCAiJyIsIGFuZCAnJScuCisgICAgV2UgaW5jbHVkZSB0YWIgaW4gdGhlIGV4Y2x1ZGVkIHNldCBqdXN0IGFzIHdlIGRvIGZvciB0b2tlbi4KKworICAgICIiIgorICAgIGF0dHJpYnV0ZSA9IEF0dHJpYnV0ZSgpCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQVRUUklCVVRFX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHRva2VuIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRydGV4dCh2YWx1ZSkKKyAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGF0dHJpYnV0ZSwgdmFsdWUKKworZGVmIGdldF9leHRlbmRlZF9hdHRydGV4dCh2YWx1ZSk6CisgICAgIiIiYXR0cnRleHQgPSAxKihhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGNoYXJhY3RlciBwbHVzICclJykKKworICAgIFRoaXMgaXMgYSBzcGVjaWFsIHBhcnNpbmcgcm91dGluZSBzbyB0aGF0IHdlIGdldCBhIHZhbHVlIHRoYXQKKyAgICBpbmNsdWRlcyAlIGVzY2FwZXMgYXMgYSBzaW5nbGUgc3RyaW5nICh3aGljaCB3ZSBkZWNvZGUgYXMgYSBzaW5nbGUKKyAgICBzdHJpbmcgbGF0ZXIpLgorCisgICAgIiIiCisgICAgbSA9IF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBleHRlbmRlZCBhdHRydGV4dCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICBhdHRydGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKGF0dHJ0ZXh0KTpdCisgICAgYXR0cnRleHQgPSBWYWx1ZVRlcm1pbmFsKGF0dHJ0ZXh0LCAnZXh0ZW5kZWQtYXR0cnRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChhdHRydGV4dCkKKyAgICByZXR1cm4gYXR0cnRleHQsIHZhbHVlCisKK2RlZiBnZXRfZXh0ZW5kZWRfYXR0cmlidXRlKHZhbHVlKToKKyAgICAiIiIgW0NGV1NdIDEqZXh0ZW5kZWRfYXR0cnRleHQgW0NGV1NdCisKKyAgICBUaGlzIGlzIGxpa2UgdGhlIG5vbi1leHRlbmRlZCB2ZXJzaW9uIGV4Y2VwdCB3ZSBhbGxvdyAlIGNoYXJhY3RlcnMsIHNvIHRoYXQKKyAgICB3ZSBjYW4gcGljayB1cCBhbiBlbmNvZGVkIHZhbHVlIGFzIGEgc2luZ2xlIHN0cmluZy4KKworICAgICIiIgorICAgICMgWFhYOiBzaG91bGQgd2UgaGF2ZSBhbiBFeHRlbmRlZEF0dHJpYnV0ZSBUb2tlbkxpc3Q/CisgICAgYXR0cmlidXRlID0gQXR0cmlidXRlKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2V4dGVuZGVkX2F0dHJ0ZXh0KHZhbHVlKQorICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYXR0cmlidXRlLCB2YWx1ZQorCitkZWYgZ2V0X3NlY3Rpb24odmFsdWUpOgorICAgICIiIiAnKicgZGlnaXRzCisKKyAgICBUaGUgZm9ybWFsIEJORiBpcyBtb3JlIGNvbXBsaWNhdGVkIGJlY2F1c2UgbGVhZGluZyAwcyBhcmUgbm90IGFsbG93ZWQuICBXZQorICAgIGNoZWNrIGZvciB0aGF0IGFuZCBhZGQgYSBkZWZlY3QuICBXZSBhbHNvIGFzc3VtZSBubyBDRldTIGlzIGFsbG93ZWQgYmV0d2VlbgorICAgIHRoZSAnKicgYW5kIHRoZSBkaWdpdHMsIHRob3VnaCB0aGUgUkZDIGlzIG5vdCBjcnlzdGFsIGNsZWFyIG9uIHRoYXQuCisgICAgVGhlIGNhbGxlciBzaG91bGQgYWxyZWFkeSBoYXZlIGRlYWx0IHdpdGggbGVhZGluZyBDRldTLgorCisgICAgIiIiCisgICAgc2VjdGlvbiA9IFNlY3Rpb24oKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnKic6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBzZWN0aW9uIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSkKKyAgICBzZWN0aW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcqJywgJ3NlY3Rpb24tbWFya2VyJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgdmFsdWUgb3Igbm90IHZhbHVlWzBdLmlzZGlnaXQoKToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHNlY3Rpb24gbnVtYmVyIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICBkaWdpdHMgPSAnJworICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXS5pc2RpZ2l0KCk6CisgICAgICAgIGRpZ2l0cyArPSB2YWx1ZVswXQorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIGRpZ2l0c1swXSA9PSAnMCcgYW5kIGRpZ2l0cyAhPSAnMCc6CisgICAgICAgIHNlY3Rpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJFcnJvcigic2VjdGlvbiBudW1iZXIiCisgICAgICAgICAgICAiaGFzIGFuIGludmFsaWQgbGVhZGluZyAwIikpCisgICAgc2VjdGlvbi5udW1iZXIgPSBpbnQoZGlnaXRzKQorICAgIHNlY3Rpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoZGlnaXRzLCAnZGlnaXRzJykpCisgICAgcmV0dXJuIHNlY3Rpb24sIHZhbHVlCisKKworZGVmIGdldF92YWx1ZSh2YWx1ZSk6CisgICAgIiIiIHF1b3RlZC1zdHJpbmcgLyBhdHRyaWJ1dGUKKworICAgICIiIgorICAgIHYgPSBWYWx1ZSgpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgdmFsdWUgYnV0IGZvdW5kIGVuZCBvZiBzdHJpbmciKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHZhbHVlIGJ1dCBmb3VuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHt9Ii5mb3JtYXQobGVhZGVyKSkKKyAgICBpZiB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9leHRlbmRlZF9hdHRyaWJ1dGUodmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIHYuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiB2LCB2YWx1ZQorCitkZWYgZ2V0X3BhcmFtZXRlcih2YWx1ZSk6CisgICAgIiIiIGF0dHJpYnV0ZSBbc2VjdGlvbl0gWyIqIl0gW0NGV1NdICI9IiB2YWx1ZQorCisgICAgVGhlIENGV1MgaXMgaW1wbGllZCBieSB0aGUgUkZDIGJ1dCBub3QgbWFkZSBleHBsaWNpdCBpbiB0aGUgQk5GLiAgVGhpcworICAgIHNpbXBsaWZpZWQgZm9ybSBvZiB0aGUgQk5GIGZyb20gdGhlIFJGQyBpcyBtYWRlIHRvIGNvbmZvcm0gd2l0aCB0aGUgUkZDIEJORgorICAgIHRocm91Z2ggc29tZSBleHRyYSBjaGVja3MuICBXZSBkbyBpdCB0aGlzIHdheSBiZWNhdXNlIGl0IG1ha2VzIGJvdGggZXJyb3IKKyAgICByZWNvdmVyeSBhbmQgd29ya2luZyB3aXRoIHRoZSByZXN1bHRpbmcgcGFyc2UgdHJlZSBlYXNpZXIuCisgICAgIiIiCisgICAgIyBJdCBpcyBwb3NzaWJsZSBDRldTIHdvdWxkIGFsc28gYmUgaW1wbGljaXRseSBhbGxvd2VkIGJldHdlZW4gdGhlIHNlY3Rpb24KKyAgICAjIGFuZCB0aGUgJ2V4dGVuZGVkLWF0dHJpYnV0ZScgbWFya2VyICh0aGUgJyonKSAsIGJ1dCB3ZSd2ZSBuZXZlciBzZWVuIHRoYXQKKyAgICAjIGluIHRoZSB3aWxkIGFuZCB3ZSB3aWxsIHRoZXJlZm9yZSBpZ25vcmUgdGhlIHBvc3NpYmlsaXR5LgorICAgIHBhcmFtID0gUGFyYW1ldGVyKCkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cmlidXRlKHZhbHVlKQorICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gPT0gJzsnOgorICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgiUGFyYW1ldGVyIGNvbnRhaW5zICIKKyAgICAgICAgICAgICJuYW1lICh7fSkgYnV0IG5vIHZhbHVlIi5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdID09ICcqJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3NlY3Rpb24odmFsdWUpCisgICAgICAgICAgICBwYXJhbS5zZWN0aW9uZWQgPSBUcnVlCisgICAgICAgICAgICBwYXJhbS5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkluY29tcGxldGUgcGFyYW1ldGVyIikKKyAgICAgICAgaWYgdmFsdWVbMF0gPT0gJyonOgorICAgICAgICAgICAgcGFyYW0uYXBwZW5kKFZhbHVlVGVybWluYWwoJyonLCAnZXh0ZW5kZWQtcGFyYW1ldGVyLW1hcmtlcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgICAgIHBhcmFtLmV4dGVuZGVkID0gVHJ1ZQorICAgIGlmIHZhbHVlWzBdICE9ICc9JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIlBhcmFtZXRlciBub3QgZm9sbG93ZWQgYnkgJz0nIikKKyAgICBwYXJhbS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPScsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgcGFyYW0uYXBwZW5kKHRva2VuKQorICAgIHJlbWFpbmRlciA9IE5vbmUKKyAgICBhcHBlbmR0byA9IHBhcmFtCisgICAgaWYgcGFyYW0uZXh0ZW5kZWQgYW5kIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgICMgTm93IGZvciBzb21lIHNlcmlvdXMgaGFja2VyeSB0byBoYW5kbGUgdGhlIGNvbW1vbiBpbnZhbGlkIGNhc2Ugb2YKKyAgICAgICAgIyBkb3VibGUgcXVvdGVzIGFyb3VuZCBhbiBleHRlbmRlZCB2YWx1ZS4gIFdlIGFsc28gYWNjZXB0ICh3aXRoIGRlZmVjdCkKKyAgICAgICAgIyBhIHZhbHVlIG1hcmtlZCBhcyBlbmNvZGVkIHRoYXQgaXNuJ3QgcmVhbGx5LgorICAgICAgICBxc3RyaW5nLCByZW1haW5kZXIgPSBnZXRfcXVvdGVkX3N0cmluZyh2YWx1ZSkKKyAgICAgICAgaW5uZXJfdmFsdWUgPSBxc3RyaW5nLnN0cmlwcGVkX3ZhbHVlCisgICAgICAgIHNlbWlfdmFsaWQgPSBGYWxzZQorICAgICAgICBpZiBwYXJhbS5zZWN0aW9uX251bWJlciA9PSAwOgorICAgICAgICAgICAgaWYgaW5uZXJfdmFsdWUgYW5kIGlubmVyX3ZhbHVlWzBdID09ICInIjoKKyAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9hdHRydGV4dChpbm5lcl92YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiByZXN0IGFuZCByZXN0WzBdID09ICInIjoKKyAgICAgICAgICAgICAgICAgICAgc2VtaV92YWxpZCA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdCA9IGdldF9leHRlbmRlZF9hdHRydGV4dChpbm5lcl92YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN0OgorICAgICAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICBpZiBzZW1pX3ZhbGlkOgorICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIlF1b3RlZCBzdHJpbmcgdmFsdWUgZm9yIGV4dGVuZGVkIHBhcmFtZXRlciBpcyBpbnZhbGlkIikpCisgICAgICAgICAgICBwYXJhbS5hcHBlbmQocXN0cmluZykKKyAgICAgICAgICAgIGZvciB0IGluIHFzdHJpbmc6CisgICAgICAgICAgICAgICAgaWYgdC50b2tlbl90eXBlID09ICdiYXJlLXF1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgICAgICB0WzpdID0gW10KKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kdG8gPSB0CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB2YWx1ZSA9IGlubmVyX3ZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZW1haW5kZXIgPSBOb25lCisgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiUGFyYW1ldGVyIG1hcmtlZCBhcyBleHRlbmRlZCBidXQgYXBwZWFycyB0byBoYXZlIGEgIgorICAgICAgICAgICAgICAgICJxdW90ZWQgc3RyaW5nIHZhbHVlIHRoYXQgaXMgbm9uLWVuY29kZWQiKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gIiciOgorICAgICAgICB0b2tlbiA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdmFsdWUodmFsdWUpCisgICAgaWYgbm90IHBhcmFtLmV4dGVuZGVkIG9yIHBhcmFtLnNlY3Rpb25fbnVtYmVyID4gMDoKKyAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICInIjoKKyAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVtYWluZGVyCisgICAgICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCisgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkFwcGFyZW50IGluaXRpYWwtZXh0ZW5kZWQtdmFsdWUgYnV0IGF0dHJpYnV0ZSAiCisgICAgICAgICAgICAid2FzIG5vdCBtYXJrZWQgYXMgZXh0ZW5kZWQgb3Igd2FzIG5vdCBpbml0aWFsIHNlY3Rpb24iKSkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICMgQXNzdW1lIHRoZSBjaGFyc2V0L2xhbmcgaXMgbWlzc2luZyBhbmQgdGhlIHRva2VuIGlzIHRoZSB2YWx1ZS4KKyAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiTWlzc2luZyByZXF1aXJlZCBjaGFyc2V0L2xhbmcgZGVsaW1pdGVycyIpKQorICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHJlbWFpbmRlciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorICAgIGVsc2U6CisgICAgICAgIGlmIHRva2VuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIHQgaW4gdG9rZW46CisgICAgICAgICAgICAgICAgaWYgdC50b2tlbl90eXBlID09ICdleHRlbmRlZC1hdHRydGV4dCc6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0LnRva2VuX3R5cGUgPT0gJ2F0dHJ0ZXh0JworICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHQpCisgICAgICAgICAgICBwYXJhbS5jaGFyc2V0ID0gdC52YWx1ZQorICAgICAgICBpZiB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgUkZDMjIzMSBjaGFyL2xhbmcgZW5jb2RpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbGltaXRlciwgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCInIiwgJ1JGQzIyMzEgZGVsaW1pdGVyJykpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYXR0cnRleHQodmFsdWUpCisgICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBwYXJhbS5sYW5nID0gdG9rZW4udmFsdWUKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAiJyI6CisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIFJGQzIyMzEgY2hhci9sYW5nIGVuY29kaW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsaW1pdGVyLCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCInIiwgJ1JGQzIyMzEgZGVsaW1pdGVyJykpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAjIFRyZWF0IHRoZSByZXN0IG9mIHZhbHVlIGFzIGJhcmUgcXVvdGVkIHN0cmluZyBjb250ZW50LgorICAgICAgICB2ID0gVmFsdWUoKQorICAgICAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIFdTUDoKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcWNvbnRlbnQodmFsdWUpCisgICAgICAgICAgICB2LmFwcGVuZCh0b2tlbikKKyAgICAgICAgdG9rZW4gPSB2CisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3ZhbHVlKHZhbHVlKQorICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgIGFzc2VydCBub3QgdmFsdWUsIHZhbHVlCisgICAgICAgIHZhbHVlID0gcmVtYWluZGVyCisgICAgcmV0dXJuIHBhcmFtLCB2YWx1ZQorCitkZWYgcGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlKToKKyAgICAiIiIgcGFyYW1ldGVyICooICI7IiBwYXJhbWV0ZXIgKQorCisgICAgVGhhdCBCTkYgaXMgbWVhbnQgdG8gaW5kaWNhdGUgdGhpcyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlcgorICAgIGZpbmRpbmcgYW5kIGhhbmRsaW5nIHRoZSBsZWFkaW5nICc7Jy4gIFRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcnVsZSBpbgorICAgIHRoZSBmb3JtYWwgUkZDIGdyYW1tYXIsIGJ1dCBpdCBpcyBtb3JlIGNvbnZlbmllbnQgZm9yIHVzIGZvciB0aGUgc2V0IG9mCisgICAgcGFyYW1ldGVycyB0byBiZSB0cmVhdGVkIGFzIGl0cyBvd24gVG9rZW5MaXN0LgorCisgICAgVGhpcyBpcyAncGFyc2UnIHJvdXRpbmUgYmVjYXVzZSBpdCBjb25zdW1lcyB0aGUgcmVtaW5haW5nIHZhbHVlLCBidXQgaXQKKyAgICB3b3VsZCBuZXZlciBiZSBjYWxsZWQgdG8gcGFyc2UgYSBmdWxsIGhlYWRlci4gIEluc3RlYWQgaXQgaXMgY2FsbGVkIHRvCisgICAgcGFyc2UgZXZlcnl0aGluZyBhZnRlciB0aGUgbm9uLXBhcmFtZXRlciB2YWx1ZSBvZiBhIHNwZWNpZmljIE1JTUUgaGVhZGVyLgorCisgICAgIiIiCisgICAgbWltZV9wYXJhbWV0ZXJzID0gTWltZVBhcmFtZXRlcnMoKQorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIGxlYWRlciA9IE5vbmUKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWltZV9wYXJhbWV0ZXJzCisgICAgICAgICAgICBpZiB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIgZW50cnkgd2l0aCBubyBjb250ZW50IikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX3BhcmFtZXRlcih2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXI6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBhcmFtZXRlciB7IXJ9Ii5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgICAgICMgSnVuayBhZnRlciB0aGUgb3RoZXJ3aXNlIHZhbGlkIHBhcmFtZXRlci4gIE1hcmsgaXQgYXMKKyAgICAgICAgICAgICMgaW52YWxpZCwgYnV0IGl0IHdpbGwgaGF2ZSBhIHZhbHVlLgorICAgICAgICAgICAgcGFyYW0gPSBtaW1lX3BhcmFtZXRlcnNbLTFdCisgICAgICAgICAgICBwYXJhbS50b2tlbl90eXBlID0gJ2ludmFsaWQtcGFyYW1ldGVyJworICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgcGFyYW0uZXh0ZW5kKHRva2VuKQorICAgICAgICAgICAgbWltZV9wYXJhbWV0ZXJzLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIgd2l0aCBpbnZhbGlkIHRyYWlsaW5nIHRleHQgeyFyfSIuZm9ybWF0KHRva2VuKSkpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgIyBNdXN0IGJlIGEgJzsnIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICByZXR1cm4gbWltZV9wYXJhbWV0ZXJzCisKK2RlZiBfZmluZF9taW1lX3BhcmFtZXRlcnModG9rZW5saXN0LCB2YWx1ZSk6CisgICAgIiIiRG8gb3VyIGJlc3QgdG8gZmluZCB0aGUgcGFyYW1ldGVycyBpbiBhbiBpbnZhbGlkIE1JTUUgaGVhZGVyCisKKyAgICAiIiIKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIHRva2VubGlzdC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4KKyAgICB0b2tlbmxpc3QuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIHRva2VubGlzdC5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisKK2RlZiBwYXJzZV9jb250ZW50X3R5cGVfaGVhZGVyKHZhbHVlKToKKyAgICAiIiIgbWFpbnR5cGUgIi8iIHN1YnR5cGUgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICBUaGUgbWFpbnR5cGUgYW5kIHN1YnN0eXBlIGFyZSB0b2tlbnMuICBUaGVvcmV0aWNhbGx5IHRoZXkgY291bGQKKyAgICBiZSBjaGVja2VkIGFnYWluc3QgdGhlIG9mZmljaWFsIElBTkEgbGlzdCArIHgtdG9rZW4sIGJ1dCB3ZQorICAgIGRvbid0IGRvIHRoYXQuCisgICAgIiIiCisgICAgY3R5cGUgPSBDb250ZW50VHlwZSgpCisgICAgcmVjb3ZlciA9IEZhbHNlCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHR5cGUgc3BlY2lmaWNhdGlvbiIpKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgbWFpbnR5cGUgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5hcHBlbmQodG9rZW4pCisgICAgIyBYWFg6IElmIHdlIHJlYWxseSB3YW50IHRvIGZvbGxvdyB0aGUgZm9ybWFsIGdyYW1tZXIgd2Ugc2hvdWxkIG1ha2UKKyAgICAjIG1hbnR5cGUgYW5kIHN1YnR5cGUgc3BlY2lhbGl6ZWQgVG9rZW5MaXN0cyBoZXJlLiAgUHJvYmFibHkgbm90IHdvcnRoIGl0LgorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnLyc6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkludmFsaWQgY29udGVudCB0eXBlIikpCisgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUubWFpbnR5cGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBjdHlwZS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnLycsICdjb250ZW50LXR5cGUtc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgc3VidHlwZSBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZCh0b2tlbikKKyAgICBjdHlwZS5zdWJ0eXBlID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk9ubHkgcGFyYW1ldGVycyBhcmUgdmFsaWQgYWZ0ZXIgY29udGVudCB0eXBlLCBidXQgIgorICAgICAgICAgICAgImZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICAjIFRoZSBSRkMgcmVxdWlyZXMgdGhhdCBhIHN5bnRhY3RpY2FsbHkgaW52YWxpZCBjb250ZW50LXR5cGUgYmUgdHJlYXRlZAorICAgICAgICAjIGFzIHRleHQvcGxhaW4uICBQZXJoYXBzIHdlIHNob3VsZCBwb3N0ZWwgdGhpcywgYnV0IHdlIHNob3VsZCBwcm9iYWJseQorICAgICAgICAjIG9ubHkgZG8gdGhhdCBpZiB3ZSB3ZXJlIGNoZWNraW5nIHRoZSBzdWJ0eXBlIHZhbHVlIGFnYWluc3QgSUFOQS4KKyAgICAgICAgZGVsIGN0eXBlLm1haW50eXBlLCBjdHlwZS5zdWJ0eXBlCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICBjdHlwZS5hcHBlbmQocGFyc2VfbWltZV9wYXJhbWV0ZXJzKHZhbHVlWzE6XSkpCisgICAgcmV0dXJuIGN0eXBlCisKK2RlZiBwYXJzZV9jb250ZW50X2Rpc3Bvc2l0aW9uX2hlYWRlcih2YWx1ZSk6CisgICAgIiIiIGRpc3Bvc2l0aW9uLXR5cGUgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICAiIiIKKyAgICBkaXNwX2hlYWRlciA9IENvbnRlbnREaXNwb3NpdGlvbigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBkaXNwX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IGRpc3Bvc2l0aW9uIikpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCBkaXNwb3NpdGlvbiBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhkaXNwX2hlYWRlciwgdmFsdWUpCisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIGRpc3BfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICBkaXNwX2hlYWRlci5jb250ZW50X2Rpc3Bvc2l0aW9uID0gdG9rZW4udmFsdWUuc3RyaXAoKS5sb3dlcigpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICBpZiB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGRpc3BfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIk9ubHkgcGFyYW1ldGVycyBhcmUgdmFsaWQgYWZ0ZXIgY29udGVudCBkaXNwb3NpdGlvbiwgYnV0ICIKKyAgICAgICAgICAgICJmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGRpc3BfaGVhZGVyLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgZGlzcF9oZWFkZXIuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIGRpc3BfaGVhZGVyLmFwcGVuZChwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWVbMTpdKSkKKyAgICByZXR1cm4gZGlzcF9oZWFkZXIKKworZGVmIHBhcnNlX2NvbnRlbnRfdHJhbnNmZXJfZW5jb2RpbmdfaGVhZGVyKHZhbHVlKToKKyAgICAiIiIgbWVjaGFuaXNtCisKKyAgICAiIiIKKyAgICAjIFdlIHNob3VsZCBwcm9iYWJseSB2YWxpZGF0ZSB0aGUgdmFsdWVzLCBzaW5jZSB0aGUgbGlzdCBpcyBmaXhlZC4KKyAgICBjdGVfaGVhZGVyID0gQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgY3RlX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAiTWlzc2luZyBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCisgICAgICAgIHJldHVybiBjdGVfaGVhZGVyCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IHRybmFzZmVyIGVuY29kaW5nIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICBlbHNlOgorICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZCh0b2tlbikKKyAgICAgICAgY3RlX2hlYWRlci5jdGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJldHVybiBjdGVfaGVhZGVyCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIGN0ZV9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXh0cmEgdGV4dCBhZnRlciBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIikpCisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgY3RlX2hlYWRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICAgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBjdGVfaGVhZGVyCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BhcnNlYWRkci5weSBiL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CmluZGV4IDc5NTczYzYuLmNkZmEzNzIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CisrKyBiL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5CkBAIC00Nyw2ICs0NywyNSBAQAogCiAgICAgQWNjb3VudHMgZm9yIG1pbGl0YXJ5IHRpbWV6b25lcy4KICAgICAiIiIKKyAgICByZXMgPSBfcGFyc2VkYXRlX3R6KGRhdGEpCisgICAgaWYgbm90IHJlczoKKyAgICAgICAgcmV0dXJuCisgICAgaWYgcmVzWzldIGlzIE5vbmU6CisgICAgICAgIHJlc1s5XSA9IDAKKyAgICByZXR1cm4gdHVwbGUocmVzKQorCitkZWYgX3BhcnNlZGF0ZV90eihkYXRhKToKKyAgICAiIiJDb252ZXJ0IGRhdGUgdG8gZXh0ZW5kZWQgdGltZSB0dXBsZS4KKworICAgIFRoZSBsYXN0IChhZGRpdGlvbmFsKSBlbGVtZW50IGlzIHRoZSB0aW1lIHpvbmUgb2Zmc2V0IGluIHNlY29uZHMsIGV4Y2VwdCBpZgorICAgIHRoZSB0aW1lem9uZSB3YXMgc3BlY2lmaWVkIGFzIC0wMDAwLiAgSW4gdGhhdCBjYXNlIHRoZSBsYXN0IGVsZW1lbnQgaXMKKyAgICBOb25lLiAgVGhpcyBpbmRpY2F0ZXMgYSBVVEMgdGltZXN0YW1wIHRoYXQgZXhwbGljaXRseSBkZWNsYWltcyBrbm93bGVkZ2Ugb2YKKyAgICB0aGUgc291cmNlIHRpbWV6b25lLCBhcyBvcHBvc2VkIHRvIGEgKzAwMDAgdGltZXN0YW1wIHRoYXQgaW5kaWNhdGVzIHRoZQorICAgIHNvdXJjZSB0aW1lem9uZSByZWFsbHkgd2FzIFVUQy4KKworICAgICIiIgorICAgIGlmIG5vdCBkYXRhOgorICAgICAgICByZXR1cm4KICAgICBkYXRhID0gZGF0YS5zcGxpdCgpCiAgICAgIyBUaGUgRldTIGFmdGVyIHRoZSBjb21tYSBhZnRlciB0aGUgZGF5LW9mLXdlZWsgaXMgb3B0aW9uYWwsIHNvIHNlYXJjaCBhbmQKICAgICAjIGFkanVzdCBmb3IgdGhpcy4KQEAgLTk5LDYgKzExOCwxNCBAQAogICAgICAgICB0c3MgPSAnMCcKICAgICBlbGlmIGxlbih0bSkgPT0gMzoKICAgICAgICAgW3RoaCwgdG1tLCB0c3NdID0gdG0KKyAgICBlbGlmIGxlbih0bSkgPT0gMSBhbmQgJy4nIGluIHRtWzBdOgorICAgICAgICAjIFNvbWUgbm9uLWNvbXBsaWFudCBNVUFzIHVzZSAnLicgdG8gc2VwYXJhdGUgdGltZSBlbGVtZW50cy4KKyAgICAgICAgdG0gPSB0bVswXS5zcGxpdCgnLicpCisgICAgICAgIGlmIGxlbih0bSkgPT0gMjoKKyAgICAgICAgICAgIFt0aGgsIHRtbV0gPSB0bQorICAgICAgICAgICAgdHNzID0gMAorICAgICAgICBlbGlmIGxlbih0bSkgPT0gMzoKKyAgICAgICAgICAgIFt0aGgsIHRtbSwgdHNzXSA9IHRtCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIE5vbmUKICAgICB0cnk6CkBAIC0xMzAsNiArMTU3LDggQEAKICAgICAgICAgICAgIHR6b2Zmc2V0ID0gaW50KHR6KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgdHpvZmZzZXQ9PTAgYW5kIHR6LnN0YXJ0c3dpdGgoJy0nKToKKyAgICAgICAgICAgIHR6b2Zmc2V0ID0gTm9uZQogICAgICMgQ29udmVydCBhIHRpbWV6b25lIG9mZnNldCBpbnRvIHNlY29uZHMgOyAtMDUwMCAtPiAtMTgwMDAKICAgICBpZiB0em9mZnNldDoKICAgICAgICAgaWYgdHpvZmZzZXQgPCAwOgpAQCAtMTM5LDcgKzE2OCw3IEBACiAgICAgICAgICAgICB0enNpZ24gPSAxCiAgICAgICAgIHR6b2Zmc2V0ID0gdHpzaWduICogKCAodHpvZmZzZXQvLzEwMCkqMzYwMCArICh0em9mZnNldCAlIDEwMCkqNjApCiAgICAgIyBEYXlsaWdodCBTYXZpbmcgVGltZSBmbGFnIGlzIHNldCB0byAtMSwgc2luY2UgRFNUIGlzIHVua25vd24uCi0gICAgcmV0dXJuIHl5LCBtbSwgZGQsIHRoaCwgdG1tLCB0c3MsIDAsIDEsIC0xLCB0em9mZnNldAorICAgIHJldHVybiBbeXksIG1tLCBkZCwgdGhoLCB0bW0sIHRzcywgMCwgMSwgLTEsIHR6b2Zmc2V0XQogCiAKIGRlZiBwYXJzZWRhdGUoZGF0YSk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEwNjExNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMCwwICsxLDM1OCBAQAorIiIiUG9saWN5IGZyYW1ld29yayBmb3IgdGhlIGVtYWlsIHBhY2thZ2UuCisKK0FsbG93cyBmaW5lIGdyYWluZWQgZmVhdHVyZSBjb250cm9sIG9mIGhvdyB0aGUgcGFja2FnZSBwYXJzZXMgYW5kIGVtaXRzIGRhdGEuCisiIiIKKworaW1wb3J0IGFiYworZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVyCitmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0Citmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKKworX19hbGxfXyA9IFsKKyAgICAnUG9saWN5JywKKyAgICAnQ29tcGF0MzInLAorICAgICdjb21wYXQzMicsCisgICAgXQorCisKK2NsYXNzIF9Qb2xpY3lCYXNlOgorCisgICAgIiIiUG9saWN5IE9iamVjdCBiYXNpYyBmcmFtZXdvcmsuCisKKyAgICBUaGlzIGNsYXNzIGlzIHVzZWxlc3MgdW5sZXNzIHN1YmNsYXNzZWQuICBBIHN1YmNsYXNzIHNob3VsZCBkZWZpbmUKKyAgICBjbGFzcyBhdHRyaWJ1dGVzIHdpdGggZGVmYXVsdHMgZm9yIGFueSB2YWx1ZXMgdGhhdCBhcmUgdG8gYmUKKyAgICBtYW5hZ2VkIGJ5IHRoZSBQb2xpY3kgb2JqZWN0LiAgVGhlIGNvbnN0cnVjdG9yIHdpbGwgdGhlbiBhbGxvdworICAgIG5vbi1kZWZhdWx0IHZhbHVlcyB0byBiZSBzZXQgZm9yIHRoZXNlIGF0dHJpYnV0ZXMgYXQgaW5zdGFuY2UKKyAgICBjcmVhdGlvbiB0aW1lLiAgVGhlIGluc3RhbmNlIHdpbGwgYmUgY2FsbGFibGUsIHRha2luZyB0aGVzZSBzYW1lCisgICAgYXR0cmlidXRlcyBrZXl3b3JkIGFyZ3VtZW50cywgYW5kIHJldHVybmluZyBhIG5ldyBpbnN0YW5jZQorICAgIGlkZW50aWNhbCB0byB0aGUgY2FsbGVkIGluc3RhbmNlIGV4Y2VwdCBmb3IgdGhvc2UgdmFsdWVzIGNoYW5nZWQKKyAgICBieSB0aGUga2V5d29yZCBhcmd1bWVudHMuICBJbnN0YW5jZXMgbWF5IGJlIGFkZGVkLCB5aWVsZGluZyBuZXcKKyAgICBpbnN0YW5jZXMgd2l0aCBhbnkgbm9uLWRlZmF1bHQgdmFsdWVzIGZyb20gdGhlIHJpZ2h0IGhhbmQKKyAgICBvcGVyYW5kIG92ZXJyaWRpbmcgdGhvc2UgaW4gdGhlIGxlZnQgaGFuZCBvcGVyYW5kLiAgVGhhdCBpcywKKworICAgICAgICBBICsgQiA9PSBBKDxub24tZGVmYXVsdCB2YWx1ZXMgb2YgQj4pCisKKyAgICBUaGUgcmVwciBvZiBhbiBpbnN0YW5jZSBjYW4gYmUgdXNlZCB0byByZWNvbnN0cnVjdCB0aGUgb2JqZWN0CisgICAgaWYgYW5kIG9ubHkgaWYgdGhlIHJlcHIgb2YgdGhlIHZhbHVlcyBjYW4gYmUgdXNlZCB0byByZWNvbnN0cnVjdAorICAgIHRob3NlIHZhbHVlcy4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3cpOgorICAgICAgICAiIiJDcmVhdGUgbmV3IFBvbGljeSwgcG9zc2libHkgb3ZlcnJpZGluZyBzb21lIGRlZmF1bHRzLgorCisgICAgICAgIFNlZSBjbGFzcyBkb2NzdHJpbmcgZm9yIGEgbGlzdCBvZiBvdmVycmlkYWJsZSBhdHRyaWJ1dGVzLgorCisgICAgICAgICIiIgorICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4ga3cuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgc3VwZXIoX1BvbGljeUJhc2Usc2VsZikuX19zZXRhdHRyX18obmFtZSwgdmFsdWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgInshcn0gaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhcmdzID0gWyAie309eyFyfSIuZm9ybWF0KG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpIF0KKyAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKQorCisgICAgZGVmIGNsb25lKHNlbGYsICoqa3cpOgorICAgICAgICAiIiJSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugd2l0aCBzcGVjaWZpZWQgYXR0cmlidXRlcyBjaGFuZ2VkLgorCisgICAgICAgIFRoZSBuZXcgaW5zdGFuY2UgaGFzIHRoZSBzYW1lIGF0dHJpYnV0ZSB2YWx1ZXMgYXMgdGhlIGN1cnJlbnQgb2JqZWN0LAorICAgICAgICBleGNlcHQgZm9yIHRoZSBjaGFuZ2VzIHBhc3NlZCBpbiBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgICAgICAiIiIKKyAgICAgICAgbmV3cG9saWN5ID0gc2VsZi5fX2NsYXNzX18uX19uZXdfXyhzZWxmLl9fY2xhc3NfXykKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIHNlbGYuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhuZXdwb2xpY3ksIGF0dHIsIHZhbHVlKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4ga3cuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgInshcn0gaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB7fSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciwgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pKQorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKG5ld3BvbGljeSwgYXR0ciwgdmFsdWUpCisgICAgICAgIHJldHVybiBuZXdwb2xpY3kKKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBtc2cgPSAieyFyfSBvYmplY3QgYXR0cmlidXRlIHshcn0gaXMgcmVhZC1vbmx5IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gInshcn0gb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgeyFyfSIKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobXNnLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkpCisKKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIk5vbi1kZWZhdWx0IHZhbHVlcyBmcm9tIHJpZ2h0IG9wZXJhbmQgb3ZlcnJpZGUgdGhvc2UgZnJvbSBsZWZ0LgorCisgICAgICAgIFRoZSBvYmplY3QgcmV0dXJuZWQgaXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHN1YmNsYXNzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5jbG9uZSgqKm90aGVyLl9fZGljdF9fKQorCisKK2RlZiBfYXBwZW5kX2RvYyhkb2MsIGFkZGVkX2RvYyk6CisgICAgZG9jID0gZG9jLnJzcGxpdCgnXG4nLCAxKVswXQorICAgIGFkZGVkX2RvYyA9IGFkZGVkX2RvYy5zcGxpdCgnXG4nLCAxKVsxXQorICAgIHJldHVybiBkb2MgKyAnXG4nICsgYWRkZWRfZG9jCisKK2RlZiBfZXh0ZW5kX2RvY3N0cmluZ3MoY2xzKToKKyAgICBpZiBjbHMuX19kb2NfXyBhbmQgY2xzLl9fZG9jX18uc3RhcnRzd2l0aCgnKycpOgorICAgICAgICBjbHMuX19kb2NfXyA9IF9hcHBlbmRfZG9jKGNscy5fX2Jhc2VzX19bMF0uX19kb2NfXywgY2xzLl9fZG9jX18pCisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIGF0dHIuX19kb2NfXyBhbmQgYXR0ci5fX2RvY19fLnN0YXJ0c3dpdGgoJysnKToKKyAgICAgICAgICAgIGZvciBjIGluIChjIGZvciBiYXNlIGluIGNscy5fX2Jhc2VzX18gZm9yIGMgaW4gYmFzZS5tcm8oKSk6CisgICAgICAgICAgICAgICAgZG9jID0gZ2V0YXR0cihnZXRhdHRyKGMsIG5hbWUpLCAnX19kb2NfXycpCisgICAgICAgICAgICAgICAgaWYgZG9jOgorICAgICAgICAgICAgICAgICAgICBhdHRyLl9fZG9jX18gPSBfYXBwZW5kX2RvYyhkb2MsIGF0dHIuX19kb2NfXykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gY2xzCisKKworY2xhc3MgUG9saWN5KF9Qb2xpY3lCYXNlLCBtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorCisgICAgciIiIkNvbnRyb2xzIGZvciBob3cgbWVzc2FnZXMgYXJlIGludGVycHJldGVkIGFuZCBmb3JtYXR0ZWQuCisKKyAgICBNb3N0IG9mIHRoZSBjbGFzc2VzIGFuZCBtYW55IG9mIHRoZSBtZXRob2RzIGluIHRoZSBlbWFpbCBwYWNrYWdlIGFjY2VwdAorICAgIFBvbGljeSBvYmplY3RzIGFzIHBhcmFtZXRlcnMuICBBIFBvbGljeSBvYmplY3QgY29udGFpbnMgYSBzZXQgb2YgdmFsdWVzIGFuZAorICAgIGZ1bmN0aW9ucyB0aGF0IGNvbnRyb2wgaG93IGlucHV0IGlzIGludGVycHJldGVkIGFuZCBob3cgb3V0cHV0IGlzIHJlbmRlcmVkLgorICAgIEZvciBleGFtcGxlLCB0aGUgcGFyYW1ldGVyICdyYWlzZV9vbl9kZWZlY3QnIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGFuIFJGQworICAgIHZpb2xhdGlvbiByZXN1bHRzIGluIGFuIGVycm9yIGJlaW5nIHJhaXNlZCBvciBub3QsIHdoaWxlICdtYXhfbGluZV9sZW5ndGgnCisgICAgY29udHJvbHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIG91dHB1dCBsaW5lcyB3aGVuIGEgTWVzc2FnZSBpcyBzZXJpYWxpemVkLgorCisgICAgQW55IHZhbGlkIGF0dHJpYnV0ZSBtYXkgYmUgb3ZlcnJpZGRlbiB3aGVuIGEgUG9saWN5IGlzIGNyZWF0ZWQgYnkgcGFzc2luZworICAgIGl0IGFzIGEga2V5d29yZCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IuICBQb2xpY3kgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLAorICAgIGJ1dCBhIG5ldyBQb2xpY3kgb2JqZWN0IGNhbiBiZSBjcmVhdGVkIHdpdGggb25seSBjZXJ0YWluIHZhbHVlcyBjaGFuZ2VkIGJ5CisgICAgY2FsbGluZyB0aGUgUG9saWN5IGluc3RhbmNlIHdpdGgga2V5d29yZCBhcmd1bWVudHMuICBQb2xpY3kgb2JqZWN0cyBjYW4KKyAgICBhbHNvIGJlIGFkZGVkLCBwcm9kdWNpbmcgYSBuZXcgUG9saWN5IG9iamVjdCBpbiB3aGljaCB0aGUgbm9uLWRlZmF1bHQKKyAgICBhdHRyaWJ1dGVzIHNldCBpbiB0aGUgcmlnaHQgaGFuZCBvcGVyYW5kIG92ZXJ3cml0ZSB0aG9zZSBzcGVjaWZpZWQgaW4gdGhlCisgICAgbGVmdCBvcGVyYW5kLgorCisgICAgU2V0dGFibGUgYXR0cmlidXRlczoKKworICAgIHJhaXNlX29uX2RlZmVjdCAgICAgLS0gSWYgdHJ1ZSwgdGhlbiBkZWZlY3RzIHNob3VsZCBiZSByYWlzZWQgYXMgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogRmFsc2UuCisKKyAgICBsaW5lc2VwICAgICAgICAgICAgIC0tIHN0cmluZyBjb250YWluaW5nIHRoZSB2YWx1ZSB0byB1c2UgYXMgc2VwYXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiBvdXRwdXQgbGluZXMuICBEZWZhdWx0ICdcbicuCisKKyAgICBjdGVfdHlwZSAgICAgICAgICAgIC0tIFR5cGUgb2YgYWxsb3dlZCBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5ncworCisgICAgICAgICAgICAgICAgICAgICAgICAgICA3Yml0ICAtLSBBU0NJSSBvbmx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICA4Yml0ICAtLSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0IGlzIGFsbG93ZWQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogOGJpdC4gIEFsc28gY29udHJvbHMgdGhlIGRpc3Bvc2l0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGluIGhlYWRlcnM7IHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gb2YgdGhlIGJpbmFyeV9mb2xkIG1ldGhvZC4KKworICAgIG1heF9saW5lX2xlbmd0aCAgICAgLS0gbWF4aW11bSBsZW5ndGggb2YgbGluZXMsIGV4Y2x1ZGluZyAnbGluZXNlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgc2VyaWFsaXphdGlvbi4gIE5vbmUgb3IgMCBtZWFucyBubyBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGluZyBpcyBkb25lLiAgRGVmYXVsdCBpcyA3OC4KKworICAgICIiIgorCisgICAgcmFpc2Vfb25fZGVmZWN0ID0gRmFsc2UKKyAgICBsaW5lc2VwID0gJ1xuJworICAgIGN0ZV90eXBlID0gJzhiaXQnCisgICAgbWF4X2xpbmVfbGVuZ3RoID0gNzgKKworICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKKyAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgorCisgICAgICAgICAgICBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICAgIGRlZmVjdCBzaG91bGQgYmUgYSBEZWZlY3Qgc3ViY2xhc3MsIGJ1dCBpbiBhbnkgY2FzZSBtdXN0IGJlIGFuCisgICAgICAgIEV4Y2VwdGlvbiBzdWJjbGFzcy4gIG9iaiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBkZWZlY3Qgc2hvdWxkIGJlCisgICAgICAgIHJlZ2lzdGVyZWQgaWYgaXQgaXMgbm90IHJhaXNlZC4gIElmIHRoZSByYWlzZV9vbl9kZWZlY3QgaXMgVHJ1ZSwgdGhlCisgICAgICAgIGRlZmVjdCBpcyByYWlzZWQgYXMgYW4gZXJyb3IsIG90aGVyd2lzZSB0aGUgb2JqZWN0IGFuZCB0aGUgZGVmZWN0IGFyZQorICAgICAgICBwYXNzZWQgdG8gcmVnaXN0ZXJfZGVmZWN0LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBwYXJzZXJzIHRoYXQgZGlzY292ZXIgZGVmZWN0cy4KKyAgICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgcGFyc2VycyBhbHdheXMgY2FsbCBpdCB3aXRoIERlZmVjdCBpbnN0YW5jZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYucmFpc2Vfb25fZGVmZWN0OgorICAgICAgICAgICAgcmFpc2UgZGVmZWN0CisgICAgICAgIHNlbGYucmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICIiIlJlY29yZCAnZGVmZWN0JyBvbiAnb2JqJy4KKworICAgICAgICBDYWxsZWQgYnkgaGFuZGxlX2RlZmVjdCBpZiByYWlzZV9vbl9kZWZlY3QgaXMgRmFsc2UuICBUaGlzIG1ldGhvZCBpcworICAgICAgICBwYXJ0IG9mIHRoZSBQb2xpY3kgQVBJIHNvIHRoYXQgUG9saWN5IHN1YmNsYXNzZXMgY2FuIGltcGxlbWVudCBjdXN0b20KKyAgICAgICAgZGVmZWN0IGhhbmRsaW5nLiAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlIGFwcGVuZCBtZXRob2Qgb2YKKyAgICAgICAgdGhlIGRlZmVjdHMgYXR0cmlidXRlIG9mIG9iai4gIFRoZSBvYmplY3RzIHVzZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UgYnkKKyAgICAgICAgZGVmYXVsdCB0aGF0IGdldCBwYXNzZWQgdG8gdGhpcyBtZXRob2Qgd2lsbCBhbHdheXMgaGF2ZSBhIGRlZmVjdHMKKyAgICAgICAgYXR0cmlidXRlIHdpdGggYW4gYXBwZW5kIG1ldGhvZC4KKworICAgICAgICAiIiIKKyAgICAgICAgb2JqLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKworICAgIGRlZiBoZWFkZXJfbWF4X2NvdW50KHNlbGYsIG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgaGVhZGVycyBuYW1lZCAnbmFtZScuCisKKyAgICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSBNZXNzYWdlIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZAorICAgICAgICB2YWx1ZSBpcyBub3QgMCBvciBOb25lLCBhbmQgdGhlcmUgYXJlIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoCisgICAgICAgIHRoZSBuYW1lICduYW1lJyBlcXVhbCB0byB0aGUgdmFsdWUgcmV0dXJuZWQsIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuCisKKyAgICAgICAgQmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBNZXNzYWdlJ3MgX19zZXRpdGVtX18gaXMgdG8gYXBwZW5kIHRoZQorICAgICAgICB2YWx1ZSB0byB0aGUgbGlzdCBvZiBoZWFkZXJzLCBpdCBpcyBlYXN5IHRvIGNyZWF0ZSBkdXBsaWNhdGUgaGVhZGVycworICAgICAgICB3aXRob3V0IHJlYWxpemluZyBpdC4gIFRoaXMgbWV0aG9kIGFsbG93cyBjZXJ0YWluIGhlYWRlcnMgdG8gYmUgbGltaXRlZAorICAgICAgICBpbiB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB0aGF0IGhlYWRlciB0aGF0IG1heSBiZSBhZGRlZCB0byBhCisgICAgICAgIE1lc3NhZ2UgcHJvZ3JhbW1hdGljYWxseS4gIChUaGUgbGltaXQgaXMgbm90IG9ic2VydmVkIGJ5IHRoZSBwYXJzZXIsCisgICAgICAgIHdoaWNoIHdpbGwgZmFpdGhmdWxseSBwcm9kdWNlIGFzIG1hbnkgaGVhZGVycyBhcyBleGlzdCBpbiB0aGUgbWVzc2FnZQorICAgICAgICBiZWluZyBwYXJzZWQuKQorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgTm9uZSBmb3IgYWxsIGhlYWRlciBuYW1lcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiJHaXZlbiBhIGxpc3Qgb2YgbGluZXNlcCB0ZXJtaW5hdGVkIHN0cmluZ3MgY29uc3RpdHV0aW5nIHRoZSBsaW5lcyBvZgorICAgICAgICBhIHNpbmdsZSBoZWFkZXIsIHJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSB0dXBsZSB0aGF0IHNob3VsZCBiZSBzdG9yZWQKKyAgICAgICAgaW4gdGhlIG1vZGVsLiAgVGhlIGlucHV0IGxpbmVzIHNob3VsZCByZXRhaW4gdGhlaXIgdGVybWluYXRpbmcgbGluZXNlcAorICAgICAgICBjaGFyYWN0ZXJzLiAgVGhlIGxpbmVzIHBhc3NlZCBpbiBieSB0aGUgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbgorICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBoZWFkZXJfc3RvcmVfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24KKyAgICAgICAgcHJvZ3JhbSwgcmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIHRoYXQgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgbW9kZWwuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gdGhlIHZhbHVlCisgICAgICAgIHRvIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIHRoYXQgaXMgcmVxdWVzdGluZyB0aGF0CisgICAgICAgIGhlYWRlci4gIFRoZSB2YWx1ZSBwYXNzZWQgaW4gYnkgdGhlIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4KKyAgICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpZiB0aGUgbGluZXMgd2VyZSBwYXJzZWQgYnkgYSBCeXRlc1BhcnNlci4KKyAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBub3QgY29udGFpbiBhbnkgc3Vycm9nYXRlZXNjYXBlZCBkYXRhLgorCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIGEgc3RyaW5nCisgICAgICAgIGNvbnRhaW5pbmcgbGluZXNlcCBjaGFyYWN0ZXJzIHRoYXQgaW1wbGVtZW50IHRoZSBmb2xkaW5nIG9mIHRoZSBoZWFkZXIKKyAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3kgY29udHJvbHMuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbAorICAgICAgICBwYWNrYWdlIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEgaWYgdGhlIGxpbmVzIHdlcmUKKyAgICAgICAgcGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIuICBUaGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIG5vdCBjb250YWluIGFueQorICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJHaXZlbiB0aGUgaGVhZGVyIG5hbWUgYW5kIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2RlbCwgcmV0dXJuIGJpbmFyeQorICAgICAgICBkYXRhIGNvbnRhaW5pbmcgbGluZXNlcCBjaGFyYWN0ZXJzIHRoYXQgaW1wbGVtZW50IHRoZSBmb2xkaW5nIG9mIHRoZQorICAgICAgICBoZWFkZXIgYWNjb3JkaW5nIHRvIHRoZSBwb2xpY3kgY29udHJvbHMuICBUaGUgdmFsdWUgcGFzc2VkIGluIGJ5IHRoZQorICAgICAgICBlbWFpbCBwYWNrYWdlIG1heSBjb250YWluIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitAX2V4dGVuZF9kb2NzdHJpbmdzCitjbGFzcyBDb21wYXQzMihQb2xpY3kpOgorCisgICAgIiIiKworICAgIFRoaXMgcGFydGljdWxhciBwb2xpY3kgaXMgdGhlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgUG9saWN5LiAgSXQKKyAgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSB2ZXJzaW9uIDUuMS4KKyAgICAiIiIKKworICAgIGRlZiBfc2FuaXRpemVfaGVhZGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIyBJZiB0aGUgaGVhZGVyIHZhbHVlIGNvbnRhaW5zIHN1cnJvZ2F0ZXMsIHJldHVybiBhIEhlYWRlciB1c2luZworICAgICAgICAjIHRoZSB1bmtub3duLThiaXQgY2hhcnNldCB0byBlbmNvZGUgdGhlIGJ5dGVzIGFzIGVuY29kZWQgd29yZHMuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgYWxyZWFkeSBhIGhlYWRlciBvYmplY3QKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgorICAgICAgICAgICAgcmV0dXJuIGhlYWRlci5IZWFkZXIodmFsdWUsIGNoYXJzZXQ9X2NoYXJzZXQuVU5LTk9XTjhCSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBkZWYgaGVhZGVyX3NvdXJjZV9wYXJzZShzZWxmLCBzb3VyY2VsaW5lcyk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICc6JyBhbmQgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYgdGhlCisgICAgICAgIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwgYW5kCisgICAgICAgIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG5hbWUsIHZhbHVlID0gc291cmNlbGluZXNbMF0uc3BsaXQoJzonLCAxKQorICAgICAgICB2YWx1ZSA9IHZhbHVlLmxzdHJpcCgnIFx0JykgKyAnJy5qb2luKHNvdXJjZWxpbmVzWzE6XSkKKyAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZS5yc3RyaXAoJ1xyXG4nKSkKKworICAgIGRlZiBoZWFkZXJfc3RvcmVfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUpCisKKyAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEgSGVhZGVyIG9iamVjdAorICAgICAgICB1c2luZyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQuICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zYW5pdGl6ZV9oZWFkZXIobmFtZSwgdmFsdWUpCisKKyAgICBkZWYgZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSBIZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcworICAgICAgICBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcyBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZQorICAgICAgICBtYXhfbGluZV9sZW5ndGguICBOb24tQVNDSUkgYmluYXJ5IGRhdGEgYXJlIENURSBlbmNvZGVkIHVzaW5nIHRoZQorICAgICAgICB1bmtub3duLThiaXQgY2hhcnNldC4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHNhbml0aXplPVRydWUpCisKKyAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgSGVhZGVyIGZvbGRpbmcgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMKKyAgICAgICAgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUKKyAgICAgICAgbWF4X2xpbmVfbGVuZ3RoLiAgSWYgY3RlX3R5cGUgaXMgN2JpdCwgbm9uLWFzY2lpIGJpbmFyeSBkYXRhIGlzIENURQorICAgICAgICBlbmNvZGVkIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlCisgICAgICAgIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZyBsaW5lIGJyZWFrcyBhbmQvb3IgYmluYXJ5IGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZvbGRlZCA9IHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHNhbml0aXplPXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKKyAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgbmFtZSwgdmFsdWUsIHNhbml0aXplKToKKyAgICAgICAgcGFydHMgPSBbXQorICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzOiAnICUgbmFtZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICAgICAgaWYgc2FuaXRpemU6CisgICAgICAgICAgICAgICAgICAgIGggPSBoZWFkZXIuSGVhZGVyKHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSByYXcgOGJpdCBkYXRhIGluIGEgYnl0ZSBzdHJpbmcsIHdlIGhhdmUgbm8gaWRlYQorICAgICAgICAgICAgICAgICAgICAjIHdoYXQgdGhlIGVuY29kaW5nIGlzLiAgVGhlcmUgaXMgbm8gc2FmZSB3YXkgdG8gc3BsaXQgdGhpcworICAgICAgICAgICAgICAgICAgICAjIHN0cmluZy4gIElmIGl0J3MgYXNjaWktc3Vic2V0LCB0aGVuIHdlIGNvdWxkIGRvIGEgbm9ybWFsCisgICAgICAgICAgICAgICAgICAgICMgYXNjaWkgc3BsaXQsIGJ1dCBpZiBpdCdzIG11bHRpYnl0ZSB0aGVuIHdlIGNvdWxkIGJyZWFrIHRoZQorICAgICAgICAgICAgICAgICAgICAjIHN0cmluZy4gIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgc28gdGhlIGxlYXN0IGhhcm0gc2VlbXMgdG8KKyAgICAgICAgICAgICAgICAgICAgIyBiZSB0byBub3Qgc3BsaXQgdGhlIHN0cmluZyBhbmQgcmlzayBpdCBiZWluZyB0b28gbG9uZy4KKyAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICBoID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoID0gaGVhZGVyLkhlYWRlcih2YWx1ZSwgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQXNzdW1lIGl0IGlzIGEgSGVhZGVyLWxpa2Ugb2JqZWN0LgorICAgICAgICAgICAgaCA9IHZhbHVlCisgICAgICAgIGlmIGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoaC5lbmNvZGUobGluZXNlcD1zZWxmLmxpbmVzZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGluZWxlbj1zZWxmLm1heF9saW5lX2xlbmd0aCkpCisgICAgICAgIHBhcnRzLmFwcGVuZChzZWxmLmxpbmVzZXApCisgICAgICAgIHJldHVybiAnJy5qb2luKHBhcnRzKQorCisKK2NvbXBhdDMyID0gQ29tcGF0MzIoKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2FyY2hpdGVjdHVyZS5yc3QgYi9MaWIvZW1haWwvYXJjaGl0ZWN0dXJlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGQyNGZlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL2FyY2hpdGVjdHVyZS5yc3QKQEAgLTAsMCArMSwyMTYgQEAKKzptb2Q6YGVtYWlsYCBQYWNrYWdlIEFyY2hpdGVjdHVyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK092ZXJ2aWV3CistLS0tLS0tLQorCitUaGUgZW1haWwgcGFja2FnZSBjb25zaXN0cyBvZiB0aHJlZSBtYWpvciBjb21wb25lbnRzOgorCisgICAgTW9kZWwKKyAgICAgICAgQW4gb2JqZWN0IHN0cnVjdHVyZSB0aGF0IHJlcHJlc2VudHMgYW4gZW1haWwgbWVzc2FnZSwgYW5kIHByb3ZpZGVzIGFuCisgICAgICAgIEFQSSBmb3IgY3JlYXRpbmcsIHF1ZXJ5aW5nLCBhbmQgbW9kaWZ5aW5nIGEgbWVzc2FnZS4KKworICAgIFBhcnNlcgorICAgICAgICBUYWtlcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgb3IgYnl0ZXMgYW5kIHByb2R1Y2VzIGEgbW9kZWwgb2YgdGhlCisgICAgICAgIGVtYWlsIG1lc3NhZ2UgcmVwcmVzZW50ZWQgYnkgdGhvc2UgY2hhcmFjdGVycyBvciBieXRlcy4KKworICAgIEdlbmVyYXRvcgorICAgICAgICBUYWtlcyBhIG1vZGVsIGFuZCB0dXJucyBpdCBpbnRvIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBvciBieXRlcy4gIFRoZQorICAgICAgICBzZXF1ZW5jZSBjYW4gZWl0aGVyIGJlIGludGVuZGVkIGZvciBodW1hbiBjb25zdW1wdGlvbiAoYSBwcmludGFibGUKKyAgICAgICAgdW5pY29kZSBzdHJpbmcpIG9yIGJ5dGVzIHN1aXRhYmxlIGZvciB0cmFuc21pc3Npb24gb3ZlciB0aGUgd2lyZS4gIEluCisgICAgICAgIHRoZSBsYXR0ZXIgY2FzZSBhbGwgZGF0YSBpcyBwcm9wZXJseSBlbmNvZGVkIHVzaW5nIHRoZSBjb250ZW50IHRyYW5zZmVyCisgICAgICAgIGVuY29kaW5ncyBzcGVjaWZpZWQgYnkgdGhlIHJlbGV2YW50IFJGQ3MuCisKK0NvbmNlcHR1YWxseSB0aGUgcGFja2FnZSBpcyBvcmdhbml6ZWQgYXJvdW5kIHRoZSBtb2RlbC4gIFRoZSBtb2RlbCBwcm92aWRlcyBib3RoCisiZXh0ZXJuYWwiIEFQSXMgaW50ZW5kZWQgZm9yIHVzZSBieSBhcHBsaWNhdGlvbiBwcm9ncmFtcyB1c2luZyB0aGUgbGlicmFyeSwKK2FuZCAiaW50ZXJuYWwiIEFQSXMgaW50ZW5kZWQgZm9yIHVzZSBieSB0aGUgUGFyc2VyIGFuZCBHZW5lcmF0b3IgY29tcG9uZW50cy4KK1RoaXMgZGl2aXNpb24gaXMgaW50ZW50aW9uYWxseSBhIGJpdCBmdXp5OyB0aGUgQVBJIGRlc2NyaWJlZCBieSB0aGlzIGRvY3VtZW50YXRpb24KK2lzIGFsbCBhIHB1YmxpYywgc3RhYmxlIEFQSS4gIFRoaXMgYWxsb3dzIGZvciBhbiBhcHBsaWNhdGlvbiB3aXRoIHNwZWNpYWwgbmVlZHMKK3RvIGltcGxlbWVudCBpdHMgb3duIHBhcnNlciBhbmQvb3IgZ2VuZXJhdG9yLgorCitJbiBhZGRpdGlvbiB0byB0aGUgdGhyZWUgbWFqb3IgZnVuY3Rpb25hbCBjb21wb25lbnRzLCB0aGVyZSBpcyBhIHRoaXJkIGtleQorY29tcG9uZW50IHRvIHRoZSBhcmNoaXRlY3R1cmU6CisKKyAgICBQb2xpY3kKKyAgICAgICAgQW4gb2JqZWN0IHRoYXQgc3BlY2lmaWVzIHZhcmlvdXMgYmVoYXZpb3JhbCBzZXR0aW5ncyBhbmQgY2FycmllcworICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBiZWhhdmlvci1jb250cm9sbGluZyBtZXRob2RzLgorCitUaGUgUG9saWN5IGZyYW1ld29yayBwcm92aWRlcyBhIHNpbXBsZSBhbmQgY29udmVuaWVudCB3YXkgdG8gY29udHJvbCB0aGUKK2JlaGF2aW9yIG9mIHRoZSBsaWJyYXJ5LCBtYWtpbmcgaXQgcG9zc2libGUgZm9yIHRoZSBsaWJyYXJ5IHRvIGJlIHVzZWQgaW4gYQordmVyeSBmbGV4aWJsZSBmYXNoaW9uIHdoaWxlIGxldmVyYWdpbmcgdGhlIGNvbW1vbiBjb2RlIHJlcXVpcmVkIHRvIHBhcnNlLAorcmVwcmVzZW50LCBhbmQgZ2VuZXJhdGUgbWVzc2FnZS1saWtlIG9iamVjdHMuICBGb3IgZXhhbXBsZSwgaW4gYWRkaXRpb24gdG8gdGhlCitkZWZhdWx0IDpyZmM6YDUzMjJgIGVtYWlsIG1lc3NhZ2UgcG9saWN5LCB3ZSBhbHNvIGhhdmUgYSBwb2xpY3kgdGhhdCBtYW5hZ2VzCitIVFRQIGhlYWRlcnMgaW4gYSBmYXNoaW9uIGNvbXBsaWFudCB3aXRoIDpyZmM6YDI2MTZgLiAgSW5kaXZpZHVhbCBwb2xpY3kKK2NvbnRyb2xzLCBzdWNoIGFzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoIHByb2R1Y2VkIGJ5IHRoZSBnZW5lcmF0b3IsIGNhbiBhbHNvCitiZSBjb250cm9sbGVkIGluZGl2aWR1YWxseSB0byBtZWV0IHNwZWNpYWxpemVkIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4KKworCitUaGUgTW9kZWwKKy0tLS0tLS0tLQorCitUaGUgbWVzc2FnZSBtb2RlbCBpcyBpbXBsZW1lbnRlZCBieSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcy4KK1RoZSBtb2RlbCBkaXZpZGVzIGEgbWVzc2FnZSBpbnRvIHRoZSB0d28gZnVuZGFtZW50YWwgcGFydHMgZGlzY3Vzc2VkIGJ5IHRoZQorUkZDOiB0aGUgaGVhZGVyIHNlY3Rpb24gYW5kIHRoZSBib2R5LiAgVGhlIGBNZXNzYWdlYCBvYmplY3QgYWN0cyBhcyBhCitwc2V1ZG8tZGljdGlvbmFyeSBvZiBuYW1lZCBoZWFkZXJzLiAgSXRzIGRpY3Rpb25hcnkgaW50ZXJmYWNlIHByb3ZpZGVzCitjb252ZW5pZW50IGFjY2VzcyB0byBpbmRpdmlkdWFsIGhlYWRlcnMgYnkgbmFtZS4gIEhvd2V2ZXIsIGFsbCBoZWFkZXJzIGFyZSBrZXB0CitpbnRlcm5hbGx5IGluIGFuIG9yZGVyZWQgbGlzdCwgc28gdGhhdCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yZGVyIG9mIHRoZQoraGVhZGVycyBpbiB0aGUgb3JpZ2luYWwgbWVzc2FnZSBpcyBwcmVzZXJ2ZWQuCisKK1RoZSBgTWVzc2FnZWAgb2JqZWN0IGFsc28gaGFzIGEgYHBheWxvYWRgIHRoYXQgaG9sZHMgdGhlIGJvZHkuICBBIGBwYXlsb2FkYCBjYW4KK2JlIG9uZSBvZiB0d28gdGhpbmdzOiBkYXRhLCBvciBhIGxpc3Qgb2YgYE1lc3NhZ2VgIG9iamVjdHMuICBUaGUgbGF0dGVyIGlzIHVzZWQKK3RvIHJlcHJlc2VudCBhIG11bHRpcGFydCBNSU1FIG1lc3NhZ2UuICBMaXN0cyBjYW4gYmUgbmVzdGVkIGFyYml0cmFyaWx5IGRlZXBseQoraW4gb3JkZXIgdG8gcmVwcmVzZW50IHRoZSBtZXNzYWdlLCB3aXRoIGFsbCB0ZXJtaW5hbCBsZWF2ZXMgaGF2aW5nIG5vbi1saXN0CitkYXRhIHBheWxvYWRzLgorCisKK01lc3NhZ2UgTGlmZWN5Y2xlCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZ2VuZXJhbCBsaWZlY3lsZSBvZiBhIG1lc3NhZ2UgaXM6CisKKyAgICBDcmVhdGlvbgorICAgICAgICBBIGBNZXNzYWdlYCBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgYnkgYSBQYXJzZXIsIG9yIGl0IGNhbiBiZQorICAgICAgICBpbnN0YW50aWF0ZWQgYXMgYW4gZW1wdHkgbWVzc2FnZSBieSBhbiBhcHBsaWNhdGlvbi4KKworICAgIE1hbmlwdWxhdGlvbgorICAgICAgICBUaGUgYXBwbGljYXRpb24gbWF5IGV4YW1pbmUgb25lIG9yIG1vcmUgaGVhZGVycywgYW5kL29yIHRoZQorICAgICAgICBwYXlsb2FkLCBhbmQgaXQgbWF5IG1vZGlmeSBvbmUgb3IgbW9yZSBoZWFkZXJzIGFuZC9vcgorICAgICAgICB0aGUgcGF5bG9hZC4gIFRoaXMgbWF5IGJlIGRvbmUgb24gdGhlIHRvcCBsZXZlbCBgTWVzc2FnZWAKKyAgICAgICAgb2JqZWN0LCBvciBvbiBhbnkgc3ViLW9iamVjdC4KKworICAgIEZpbmFsaXphdGlvbgorICAgICAgICBUaGUgTW9kZWwgaXMgY29udmVydGVkIGludG8gYSB1bmljb2RlIG9yIGJpbmFyeSBzdHJlYW0sCisgICAgICAgIG9yIHRoZSBtb2RlbCBpcyBkaXNjYXJkZWQuCisKKworCitIZWFkZXIgUG9saWN5IENvbnRyb2wgRHVyaW5nIExpZmVjeWNsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25lIG9mIHRoZSBtYWpvciBjb250cm9scyBleGVydGVkIGJ5IHRoZSBQb2xpY3kgaXMgdGhlIG1hbmFnZW1lbnQgb2YgaGVhZGVycworZHVyaW5nIHRoZSBgTWVzc2FnZWAgbGlmZWN5Y2xlLiAgTW9zdCBhcHBsaWNhdGlvbnMgZG9uJ3QgbmVlZCB0byBiZSBhd2FyZSBvZgordGhpcy4KKworQSBoZWFkZXIgZW50ZXJzIHRoZSBtb2RlbCBpbiBvbmUgb2YgdHdvIHdheXM6IHZpYSBhIFBhcnNlciwgb3IgYnkgYmVpbmcgc2V0IHRvCithIHNwZWNpZmljIHZhbHVlIGJ5IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gYWZ0ZXIgdGhlIE1vZGVsIGFscmVhZHkgZXhpc3RzLgorU2ltaWxhcmx5LCBhIGhlYWRlciBleGl0cyB0aGUgbW9kZWwgaW4gb25lIG9mIHR3byB3YXlzOiBieSBiZWluZyBzZXJpYWxpemVkIGJ5CithIEdlbmVyYXRvciwgb3IgYnkgYmVpbmcgcmV0cmlldmVkIGZyb20gYSBNb2RlbCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtLiAgVGhlCitQb2xpY3kgb2JqZWN0IHByb3ZpZGVzIGhvb2tzIGZvciBhbGwgZm91ciBvZiB0aGVzZSBwYXRod2F5cy4KKworVGhlIG1vZGVsIHN0b3JhZ2UgZm9yIGhlYWRlcnMgaXMgYSBsaXN0IG9mIChuYW1lLCB2YWx1ZSkgdHVwbGVzLgorCitUaGUgUGFyc2VyIGlkZW50aWZpZXMgaGVhZGVycyBkdXJpbmcgcGFyc2luZywgYW5kIHBhc3NlcyB0aGVtIHRvIHRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2VgIG1ldGhvZCBvZiB0aGUgUG9saWN5LiAgVGhlCityZXN1bHQgb2YgdGhhdCBtZXRob2QgaXMgdGhlIChuYW1lLCB2YWx1ZSkgdHVwbGUgdG8gYmUgc3RvcmVkIGluIHRoZSBtb2RlbC4KKworV2hlbiBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHN1cHBsaWVzIGEgaGVhZGVyIHZhbHVlIChmb3IgZXhhbXBsZSwgdGhyb3VnaCB0aGUKK2BNZXNzYWdlYCBvYmplY3QgYF9fc2V0aXRlbV9fYCBpbnRlcmZhY2UpLCB0aGUgbmFtZSBhbmQgdGhlIHZhbHVlIGFyZSBwYXNzZWQgdG8KK3RoZSA6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlYCBtZXRob2Qgb2YgdGhlIFBvbGljeSwgd2hpY2gKK3JldHVybnMgdGhlIChuYW1lLCB2YWx1ZSkgdHVwbGUgdG8gYmUgc3RvcmVkIGluIHRoZSBtb2RlbC4KKworV2hlbiBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHJldHJpZXZlcyBhIGhlYWRlciAodGhyb3VnaCBhbnkgb2YgdGhlIGRpY3Qgb3IgbGlzdAoraW50ZXJmYWNlcyBvZiBgTWVzc2FnZWApLCB0aGUgbmFtZSBhbmQgdmFsdWUgYXJlIHBhc3NlZCB0byB0aGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2VgIG1ldGhvZCBvZiB0aGUgUG9saWN5IHRvCitvYnRhaW4gdGhlIHZhbHVlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4KKworV2hlbiBhIEdlbmVyYXRvciByZXF1ZXN0cyBhIGhlYWRlciBkdXJpbmcgc2VyaWFsaXphdGlvbiwgdGhlIG5hbWUgYW5kIHZhbHVlIGFyZQorcGFzc2VkIHRvIHRoZSA6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuZm9sZGAgbWV0aG9kIG9mIHRoZSBQb2xpY3ksIHdoaWNoCityZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgbGluZSBicmVha3MgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4gIFRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBQb2xpY3kgY29udHJvbCBkZXRlcm1pbmVzIHdoZXRoZXIgb3IKK25vdCBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIGlzIHBlcmZvcm1lZCBvbiB0aGUgZGF0YSBpbiB0aGUgaGVhZGVyLiAgVGhlcmUgaXMKK2Fsc28gYSA6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuYmluYXJ5X2ZvbGRgIG1ldGhvZCBmb3IgdXNlIGJ5IGdlbmVyYXRvcnMKK3RoYXQgcHJvZHVjZSBiaW5hcnkgb3V0cHV0LCB3aGljaCByZXR1cm5zIHRoZSBmb2xkZWQgaGVhZGVyIGFzIGJpbmFyeSBkYXRhLAorcG9zc2libHkgZm9sZGVkIGF0IGRpZmZlcmVudCBwbGFjZXMgdGhhbiB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcgd291bGQgYmUuCisKKworSGFuZGxpbmcgQmluYXJ5IERhdGEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGFuIGlkZWFsIHdvcmxkIGFsbCBtZXNzYWdlIGRhdGEgd291bGQgY29uZm9ybSB0byB0aGUgUkZDcywgbWVhbmluZyB0aGF0IHRoZQorcGFyc2VyIGNvdWxkIGRlY29kZSB0aGUgbWVzc2FnZSBpbnRvIHRoZSBpZGVhbGl6ZWQgdW5pY29kZSBtZXNzYWdlIHRoYXQgdGhlCitzZW5kZXIgb3JpZ2luYWxseSB3cm90ZS4gIEluIHRoZSByZWFsIHdvcmxkLCB0aGUgZW1haWwgcGFja2FnZSBtdXN0IGFsc28gYmUKK2FibGUgdG8gZGVhbCB3aXRoIGJhZGx5IGZvcm1hdHRlZCBtZXNzYWdlcywgaW5jbHVkaW5nIG1lc3NhZ2VzIGNvbnRhaW5pbmcKK25vbi1BU0NJSSBjaGFyYWN0ZXJzIHRoYXQgZWl0aGVyIGhhdmUgbm8gaW5kaWNhdGVkIGNoYXJhY3RlciBzZXQgb3IgYXJlIG5vdAordmFsaWQgY2hhcmFjdGVycyBpbiB0aGUgaW5kaWNhdGVkIGNoYXJhY3RlciBzZXQuCisKK1NpbmNlIGVtYWlsIG1lc3NhZ2VzIGFyZSAqcHJpbWFyaWx5KiB0ZXh0IGRhdGEsIGFuZCBvcGVyYXRpb25zIG9uIG1lc3NhZ2UgZGF0YQorYXJlIHByaW1hcmlseSB0ZXh0IG9wZXJhdGlvbnMgKGV4Y2VwdCBmb3IgYmluYXJ5IHBheWxvYWRzIG9mIGNvdXJzZSksIHRoZSBtb2RlbAorc3RvcmVzIGFsbCB0ZXh0IGRhdGEgYXMgdW5pY29kZSBzdHJpbmdzLiAgVW4tZGVjb2RhYmxlIGJpbmFyeSBpbnNpZGUgdGV4dAorZGF0YSBpcyBoYW5kbGVkIGJ5IHVzaW5nIHRoZSBgc3Vycm9nYXRlZXNjYXBlYCBlcnJvciBoYW5kbGVyIG9mIHRoZSBBU0NJSQorY29kZWMuICBBcyB3aXRoIHRoZSBiaW5hcnkgZmlsZW5hbWVzIHRoZSBlcnJvciBoYW5kbGVyIHdhcyBpbnRyb2R1Y2VkIHRvCitoYW5kbGUsIHRoaXMgYWxsb3dzIHRoZSBlbWFpbCBwYWNrYWdlIHRvICJjYXJyeSIgdGhlIGJpbmFyeSBkYXRhIHJlY2VpdmVkCitkdXJpbmcgcGFyc2luZyBhbG9uZyB1bnRpbCB0aGUgb3V0cHV0IHN0YWdlLCBhdCB3aGljaCB0aW1lIGl0IGlzIHJlZ2VuZXJhdGVkCitpbiBpdHMgb3JpZ2luYWwgZm9ybS4KKworVGhpcyBjYXJyaWVkIGJpbmFyeSBkYXRhIGlzIGFsbW9zdCBlbnRpcmVseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBUaGUgb25lCitwbGFjZSB3aGVyZSBpdCBpcyB2aXNpYmxlIGluIHRoZSBBUEkgaXMgaW4gdGhlICJpbnRlcm5hbCIgQVBJLiAgQSBQYXJzZXIgbXVzdAorZG8gdGhlIGBzdXJyb2dhdGVlc2NhcGVgIGVuY29kaW5nIG9mIGJpbmFyeSBpbnB1dCBkYXRhLCBhbmQgcGFzcyB0aGF0IGRhdGEgdG8KK3RoZSBhcHByb3ByaWF0ZSBQb2xpY3kgbWV0aG9kLiAgVGhlICJpbnRlcm5hbCIgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIEdlbmVyYXRvcgordG8gYWNjZXNzIGhlYWRlciB2YWx1ZXMgcHJlc2VydmVzIHRoZSBgc3Vycm9nYXRlZXNjYXBlZGAgYnl0ZXMuICBBbGwgb3RoZXIKK2ludGVyZmFjZXMgY29udmVydCB0aGUgYmluYXJ5IGRhdGEgZWl0aGVyIGJhY2sgaW50byBieXRlcyBvciBpbnRvIGEgc2FmZSBmb3JtCisobG9zaW5nIGluZm9ybWF0aW9uIGluIHNvbWUgY2FzZXMpLgorCisKK0JhY2t3YXJkIENvbXBhdGliaWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuQ29tcGF0MzJgIFBvbGljeSBwcm92aWRlcyBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSB3aXRoIHZlcnNpb24gNS4xIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgSXQgZG9lcyB0aGlzIHZpYSB0aGUKK2ZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZm91cisxIFBvbGljeSBtZXRob2RzIGRlc2NyaWJlZCBhYm92ZToKKworaGVhZGVyX3NvdXJjZV9wYXJzZQorICAgIFNwbGl0cyB0aGUgZmlyc3QgbGluZSBvbiB0aGUgY29sb24gdG8gb2J0YWluIHRoZSBuYW1lLCBkaXNjYXJkcyBhbnkgc3BhY2VzCisgICAgYWZ0ZXIgdGhlIGNvbG9uLCBhbmQgam9pbnMgdGhlIHJlbWFpbmRlciBvZiB0aGUgbGluZSB3aXRoIGFsbCBvZiB0aGUKKyAgICByZW1haW5pbmcgbGluZXMsIHByZXNlcnZpbmcgdGhlIGxpbmVzZXAgY2hhcmFjdGVycyB0byBvYnRhaW4gdGhlIHZhbHVlLgorICAgIFRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBhbmQvb3IgbGluZWZlZWQgY2hhcmFjdGVycyBhcmUgc3RyaXBwZWQgZnJvbSB0aGUKKyAgICByZXN1bHRpbmcgdmFsdWUgc3RyaW5nLgorCitoZWFkZXJfc3RvcmVfcGFyc2UKKyAgICBSZXR1cm5zIHRoZSBuYW1lIGFuZCB2YWx1ZSBleGFjdGx5IGFzIHJlY2VpdmVkIGZyb20gdGhlIGFwcGxpY2F0aW9uLgorCitoZWFkZXJfZmV0Y2hfcGFyc2UKKyAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYW55IGBzdXJyb2dhdGVlc2NhcGVkYCBiaW5hcnkgZGF0YSwgcmV0dXJuIHRoZSB2YWx1ZQorICAgIGFzIGEgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0LCB1c2luZyB0aGUgY2hhcmFjdGVyIHNldAorICAgIGB1bmtub3duLThiaXRgLiAgT3RoZXJ3aXNlIGp1c3QgcmV0dXJucyB0aGUgdmFsdWUuCisKK2ZvbGQKKyAgICBVc2VzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgJ3MgZm9sZGluZyB0byBmb2xkIGhlYWRlcnMgaW4gdGhlCisgICAgc2FtZSB3YXkgdGhlIGVtYWlsNS4xIGdlbmVyYXRvciBkaWQuCisKK2JpbmFyeV9mb2xkCisgICAgU2FtZSBhcyBmb2xkLCBidXQgZW5jb2RlcyB0byAnYXNjaWknLgorCisKK05ldyBBbGdvcml0aG0KKy0tLS0tLS0tLS0tLS0KKworaGVhZGVyX3NvdXJjZV9wYXJzZQorICAgIFNhbWUgYXMgbGVnYWN5IGJlaGF2aW9yLgorCitoZWFkZXJfc3RvcmVfcGFyc2UKKyAgICBTYW1lIGFzIGxlZ2FjeSBiZWhhdmlvci4KKworaGVhZGVyX2ZldGNoX3BhcnNlCisgICAgSWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0LCByZXR1cm5zIGl0LiAgT3RoZXJ3aXNlLCBwYXJzZXMgdGhlCisgICAgdmFsdWUgdXNpbmcgdGhlIG5ldyBwYXJzZXIsIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgb2JqZWN0IGFzIHRoZSB2YWx1ZS4KKyAgICBgc3Vycm9nYXRlZXNjYXBlZGAgYnl0ZXMgZ2V0IHR1cm5lZCBpbnRvIHVuaWNvZGUgdW5rbm93biBjaGFyYWN0ZXIgY29kZQorICAgIHBvaW50cy4KKworZm9sZAorICAgIFVzZXMgdGhlIG5ldyBoZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHJlc3BlY3RpbmcgdGhlIHBvbGljeSBzZXR0aW5ncy4KKyAgICBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGFyZSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQgZm9yCisgICAgYGBjdGVfdHlwZT03Yml0YGAgb3IgYGA4Yml0YGAuICBSZXR1cm5zIGEgc3RyaW5nLgorCisgICAgQXQgc29tZSBwb2ludCB0aGVyZSB3aWxsIGFsc28gYmUgYSBgYGN0ZV90eXBlPXVuaWNvZGVgYCwgYW5kIGZvciB0aGF0CisgICAgcG9saWN5IGZvbGQgd2lsbCBzZXJpYWxpemUgdGhlIGlkZWFsaXplZCB1bmljb2RlIG1lc3NhZ2Ugd2l0aCBSRkMtbGlrZQorICAgIGZvbGRpbmcsIGNvbnZlcnRpbmcgYW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgaW50byB0aGUgdW5pY29kZQorICAgIHVua25vd24gY2hhcmFjdGVyIGdseXBoLgorCitiaW5hcnlfZm9sZAorICAgIFVzZXMgdGhlIG5ldyBoZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHJlc3BlY3RpbmcgdGhlIHBvbGljeSBzZXR0aW5ncy4KKyAgICBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGFyZSBlbmNvZGVkIHVzaW5nIHRoZSBgdW5rbm93bi04Yml0YCBjaGFyc2V0IGZvcgorICAgIGBgY3RlX3R5cGU9N2JpdGBgLCBhbmQgZ2V0IHR1cm5lZCBiYWNrIGludG8gYnl0ZXMgZm9yIGBgY3RlX3R5cGU9OGJpdGBgLgorICAgIFJldHVybnMgYnl0ZXMuCisKKyAgICBBdCBzb21lIHBvaW50IHRoZXJlIHdpbGwgYWxzbyBiZSBhIGBgY3RlX3R5cGU9dW5pY29kZWBgLCBhbmQgZm9yIHRoYXQKKyAgICBwb2xpY3kgYmluYXJ5X2ZvbGQgd2lsbCBzZXJpYWxpemUgdGhlIG1lc3NhZ2UgYWNjb3JkaW5nIHRvIDpyZmM6YGA1MzM1YGAuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZXJyb3JzLnB5IGIvTGliL2VtYWlsL2Vycm9ycy5weQppbmRleCBkNTJhNjI0Li43OTEyMzlmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZXJyb3JzLnB5CisrKyBiL0xpYi9lbWFpbC9lcnJvcnMucHkKQEAgLTUsNyArNSw2IEBACiAiIiJlbWFpbCBwYWNrYWdlIGV4Y2VwdGlvbiBjbGFzc2VzLiIiIgogCiAKLQwKIGNsYXNzIE1lc3NhZ2VFcnJvcihFeGNlcHRpb24pOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIGVycm9ycyBpbiB0aGUgZW1haWwgcGFja2FnZS4iIiIKIApAQCAtMzAsMTIgKzI5LDEzIEBACiAgICAgIiIiQW4gaWxsZWdhbCBjaGFyc2V0IHdhcyBnaXZlbi4iIiIKIAogCi0MCiAjIFRoZXNlIGFyZSBwYXJzaW5nIGRlZmVjdHMgd2hpY2ggdGhlIHBhcnNlciB3YXMgYWJsZSB0byB3b3JrIGFyb3VuZC4KLWNsYXNzIE1lc3NhZ2VEZWZlY3Q6CitjbGFzcyBNZXNzYWdlRGVmZWN0KFZhbHVlRXJyb3IpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIGEgbWVzc2FnZSBkZWZlY3QuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZT1Ob25lKToKKyAgICAgICAgaWYgbGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obGluZSkKICAgICAgICAgc2VsZi5saW5lID0gbGluZQogCiBjbGFzcyBOb0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoTWVzc2FnZURlZmVjdCk6CkBAIC00NCwxNCArNDQsNjQgQEAKIGNsYXNzIFN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJUaGUgY2xhaW1lZCBzdGFydCBib3VuZGFyeSB3YXMgbmV2ZXIgZm91bmQuIiIiCiAKK2NsYXNzIENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJBIHN0YXJ0IGJvdW5kYXJ5IHdhcyBmb3VuZCwgYnV0IG5vdCB0aGUgY29ycmVzcG9uZGluZyBjbG9zZSBib3VuZGFyeS4iIiIKKwogY2xhc3MgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiQSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbiBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4iIiIKIAogY2xhc3MgTWlzcGxhY2VkRW52ZWxvcGVIZWFkZXJEZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiQSAnVW5peC1mcm9tJyBoZWFkZXIgd2FzIGZvdW5kIGluIHRoZSBtaWRkbGUgb2YgYSBoZWFkZXIgYmxvY2suIiIiCiAKLWNsYXNzIE1hbGZvcm1lZEhlYWRlckRlZmVjdChNZXNzYWdlRGVmZWN0KToKLSAgICAiIiJGb3VuZCBhIGhlYWRlciB0aGF0IHdhcyBtaXNzaW5nIGEgY29sb24sIG9yIHdhcyBvdGhlcndpc2UgbWFsZm9ybWVkLiIiIgorY2xhc3MgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiRm91bmQgbGluZSB3aXRoIG5vIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbm8gY29sb24gYmVmb3JlIGJsYW5rIGxpbmUuIiIiCisjIFhYWDogYmFja3dhcmQgY29tcGF0aWJpbGl0eSwganVzdCBpbiBjYXNlIChpdCB3YXMgbmV2ZXIgZW1pdHRlZCkuCitNYWxmb3JtZWRIZWFkZXJEZWZlY3QgPSBNaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdAogCiBjbGFzcyBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoTWVzc2FnZURlZmVjdCk6CiAgICAgIiIiQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYSBtdWx0aXBhcnQgYnV0IG5vIHN1YnBhcnRzIHdlcmUgZm91bmQuIiIiCisKK2NsYXNzIEludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJBbiBpbnZhbGlkIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcgd2FzIHNldCBvbiB0aGUgbXVsdGlwYXJ0IGl0c2VsZi4iIiIKKworY2xhc3MgVW5kZWNvZGFibGVCeXRlc0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJIZWFkZXIgY29udGFpbmVkIGJ5dGVzIHRoYXQgY291bGQgbm90IGJlIGRlY29kZWQiIiIKKworY2xhc3MgSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiYmFzZTY0IGVuY29kZWQgc2VxdWVuY2UgaGFkIGFuIGluY29ycmVjdCBsZW5ndGgiIiIKKworY2xhc3MgSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QoTWVzc2FnZURlZmVjdCk6CisgICAgIiIiYmFzZTY0IGVuY29kZWQgc2VxdWVuY2UgaGFkIGNoYXJhY3RlcnMgbm90IGluIGJhc2U2NCBhbHBoYWJldCIiIgorCisjIFRoZXNlIGVycm9ycyBhcmUgc3BlY2lmaWMgdG8gaGVhZGVyIHBhcnNpbmcuCisKK2NsYXNzIEhlYWRlckRlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBhIGhlYWRlciBkZWZlY3QuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorCitjbGFzcyBJbnZhbGlkSGVhZGVyRGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIiSGVhZGVyIGlzIG5vdCB2YWxpZCwgbWVzc2FnZSBnaXZlcyBkZXRhaWxzLiIiIgorCitjbGFzcyBIZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZShIZWFkZXJEZWZlY3QpOgorICAgICIiIkEgaGVhZGVyIHRoYXQgbXVzdCBoYXZlIGEgdmFsdWUgaGFkIG5vbmUiIiIKKworY2xhc3MgTm9uUHJpbnRhYmxlRGVmZWN0KEhlYWRlckRlZmVjdCk6CisgICAgIiIiQVNDSUkgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBhc2NpaS1wcmludGFibGUgcmFuZ2UgZm91bmQiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub25fcHJpbnRhYmxlcyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18obm9uX3ByaW50YWJsZXMpCisgICAgICAgIHNlbGYubm9uX3ByaW50YWJsZXMgPSBub25fcHJpbnRhYmxlcworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAoInRoZSBmb2xsb3dpbmcgQVNDSUkgbm9uLXByaW50YWJsZXMgZm91bmQgaW4gaGVhZGVyOiAiCisgICAgICAgICAgICAie30iLmZvcm1hdChzZWxmLm5vbl9wcmludGFibGVzKSkKKworY2xhc3MgT2Jzb2xldGVIZWFkZXJEZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJIZWFkZXIgdXNlcyBzeW50YXggZGVjbGFyZWQgb2Jzb2xldGUgYnkgUkZDIDUzMjIiIiIKKworY2xhc3MgTm9uQVNDSUlMb2NhbFBhcnREZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJsb2NhbF9wYXJ0IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIiIiCisgICAgIyBUaGlzIGRlZmVjdCBvbmx5IG9jY3VycyBkdXJpbmcgdW5pY29kZSBwYXJzaW5nLCBub3Qgd2hlbgorICAgICMgcGFyc2luZyBtZXNzYWdlcyBkZWNvZGVkIGZyb20gYmluYXJ5LgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQppbmRleCBhYThhMmZmLi41NmY1MGRmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weQorKysgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQpAQCAtMjUsNiArMjUsNyBAQAogCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiAKIE5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCiBOTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQpAQCAtMTIwLDkgKzEyMSw2IEBACiAgICAgICAgICMgUmV2ZXJzZSBhbmQgaW5zZXJ0IGF0IHRoZSBmcm9udCBvZiB0aGUgbGluZXMuCiAgICAgICAgIHNlbGYuX2xpbmVzWzowXSA9IGxpbmVzWzo6LTFdCiAKLSAgICBkZWYgaXNfY2xvc2VkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fY2xvc2VkCi0KICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmCiAKQEAgLTEzNyw5ICsxMzUsMjIgQEAKIGNsYXNzIEZlZWRQYXJzZXI6CiAgICAgIiIiQSBmZWVkLXN0eWxlIHBhcnNlciBvZiBlbWFpbC4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZmFjdG9yeT1tZXNzYWdlLk1lc3NhZ2UpOgotICAgICAgICAiIiJfZmFjdG9yeSBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgdG8gY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9mYWN0b3J5PW1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PWNvbXBhdDMyKToKKyAgICAgICAgIiIiX2ZhY3RvcnkgaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIHRvIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iagorCisgICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKKyAgICAgICAgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCisgICAgICAgICIiIgogICAgICAgICBzZWxmLl9mYWN0b3J5ID0gX2ZhY3RvcnkKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX2ZhY3RvcnkocG9saWN5PXNlbGYucG9saWN5KQorICAgICAgICAgICAgc2VsZi5fZmFjdG9yeV9rd2RzID0gbGFtYmRhOiB7J3BvbGljeSc6IHNlbGYucG9saWN5fQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgIyBBc3N1bWUgdGhpcyBpcyBhbiBvbGQtc3R5bGUgZmFjdG9yeQorICAgICAgICAgICAgc2VsZi5fZmFjdG9yeV9rd2RzID0gbGFtYmRhOiB7fQogICAgICAgICBzZWxmLl9pbnB1dCA9IEJ1ZmZlcmVkU3ViRmlsZSgpCiAgICAgICAgIHNlbGYuX21zZ3N0YWNrID0gW10KICAgICAgICAgc2VsZi5fcGFyc2UgPSBzZWxmLl9wYXJzZWdlbigpLl9fbmV4dF9fCkBAIC0xNzEsMTEgKzE4MiwxMiBAQAogICAgICAgICAjIExvb2sgZm9yIGZpbmFsIHNldCBvZiBkZWZlY3RzCiAgICAgICAgIGlmIHJvb3QuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyBcCiAgICAgICAgICAgICAgICBhbmQgbm90IHJvb3QuaXNfbXVsdGlwYXJ0KCk6Ci0gICAgICAgICAgICByb290LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoKSkKKyAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QoKQorICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChyb290LCBkZWZlY3QpCiAgICAgICAgIHJldHVybiByb290CiAKICAgICBkZWYgX25ld19tZXNzYWdlKHNlbGYpOgotICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCkKKyAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeSgqKnNlbGYuX2ZhY3Rvcnlfa3dkcygpKQogICAgICAgICBpZiBzZWxmLl9jdXIgYW5kIHNlbGYuX2N1ci5nZXRfY29udGVudF90eXBlKCkgPT0gJ211bHRpcGFydC9kaWdlc3QnOgogICAgICAgICAgICAgbXNnLnNldF9kZWZhdWx0X3R5cGUoJ21lc3NhZ2UvcmZjODIyJykKICAgICAgICAgaWYgc2VsZi5fbXNnc3RhY2s6CkBAIC0yMDcsNiArMjE5LDggQEAKICAgICAgICAgICAgICAgICAjIChpLmUuIG5ld2xpbmUpLCBqdXN0IHRocm93IGl0IGF3YXkuIE90aGVyd2lzZSB0aGUgbGluZSBpcwogICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgYm9keSBzbyBwdXNoIGl0IGJhY2suCiAgICAgICAgICAgICAgICAgaWYgbm90IE5MQ1JFLm1hdGNoKGxpbmUpOgorICAgICAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dC51bnJlYWRsaW5lKGxpbmUpCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGxpbmUpCkBAIC0yODQsNyArMjk4LDggQEAKICAgICAgICAgICAgICAgICAjIGRlZmluZWQgYSBib3VuZGFyeS4gIFRoYXQncyBhIHByb2JsZW0gd2hpY2ggd2UnbGwgaGFuZGxlIGJ5CiAgICAgICAgICAgICAgICAgIyByZWFkaW5nIGV2ZXJ5dGhpbmcgdW50aWwgdGhlIEVPRiBhbmQgbWFya2luZyB0aGUgbWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICMgZGVmZWN0aXZlLgotICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KCkpCisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5faW5wdXQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgpAQCAtMjkzLDYgKzMwOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3BheWxvYWQoRU1QVFlTVFJJTkcuam9pbihsaW5lcykpCiAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSBhIHZhbGlkIGNvbnRlbnQgdHlwZSB3YXMgc3BlY2lmaWVkIHBlciBSRkMgMjA0NTo2LjQuCisgICAgICAgICAgICBpZiAoc2VsZi5fY3VyLmdldCgnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycsICc4Yml0JykubG93ZXIoKQorICAgICAgICAgICAgICAgICAgICBub3QgaW4gKCc3Yml0JywgJzhiaXQnLCAnYmluYXJ5JykpOgorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5JbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAjIENyZWF0ZSBhIGxpbmUgbWF0Y2ggcHJlZGljYXRlIHdoaWNoIG1hdGNoZXMgdGhlIGludGVyLXBhcnQKICAgICAgICAgICAgICMgYm91bmRhcnkgYXMgd2VsbCBhcyB0aGUgZW5kLW9mLW11bHRpcGFydCBib3VuZGFyeS4gIERvbid0IHB1c2gKICAgICAgICAgICAgICMgdGhpcyBvbnRvIHRoZSBpbnB1dCBzdHJlYW0gdW50aWwgd2UndmUgc2Nhbm5lZCBwYXN0IHRoZQpAQCAtMzA0LDYgKzMyNCw3IEBACiAgICAgICAgICAgICBjYXB0dXJpbmdfcHJlYW1ibGUgPSBUcnVlCiAgICAgICAgICAgICBwcmVhbWJsZSA9IFtdCiAgICAgICAgICAgICBsaW5lc2VwID0gRmFsc2UKKyAgICAgICAgICAgIGNsb3NlX2JvdW5kYXJ5X3NlZW4gPSBGYWxzZQogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5faW5wdXQucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgIGlmIGxpbmUgaXMgTmVlZE1vcmVEYXRhOgpAQCAtMzE4LDYgKzMzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNsb3NpbmcgYm91bmRhcnksIHRoZW4gd2UgbmVlZCB0byBpbml0aWFsaXplIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGVwaWxvZ3VlIHdpdGggdGhlIGVtcHR5IHN0cmluZyAoc2VlIGJlbG93KS4KICAgICAgICAgICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2VuZCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfYm91bmRhcnlfc2VlbiA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzZXAgPSBtby5ncm91cCgnbGluZXNlcCcpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAjIFdlIHNhdyBhbiBpbnRlci1wYXJ0IGJvdW5kYXJ5LiAgV2VyZSB3ZSBpbiB0aGUgcHJlYW1ibGU/CkBAIC0zODYsOSArNDA4LDkgQEAKICAgICAgICAgICAgICMgV2UndmUgc2VlbiBlaXRoZXIgdGhlIEVPRiBvciB0aGUgZW5kIGJvdW5kYXJ5LiAgSWYgd2UncmUgc3RpbGwKICAgICAgICAgICAgICMgY2FwdHVyaW5nIHRoZSBwcmVhbWJsZSwgd2UgbmV2ZXIgc2F3IHRoZSBzdGFydCBib3VuZGFyeS4gIE5vdGUKICAgICAgICAgICAgICMgdGhhdCBhcyBhIGRlZmVjdCBhbmQgc3RvcmUgdGhlIGNhcHR1cmVkIHRleHQgYXMgdGhlIHBheWxvYWQuCi0gICAgICAgICAgICAjIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHRvIHRoZSBFT0YgaXMgZXBpbG9ndWUuCiAgICAgICAgICAgICBpZiBjYXB0dXJpbmdfcHJlYW1ibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKSkKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcGF5bG9hZChFTVBUWVNUUklORy5qb2luKHByZWFtYmxlKSkKICAgICAgICAgICAgICAgICBlcGlsb2d1ZSA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5faW5wdXQ6CkBAIC0zOTcsOCArNDE5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5lcGlsb2d1ZSA9IEVNUFRZU1RSSU5HLmpvaW4oZXBpbG9ndWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAjIElmIHRoZSBlbmQgYm91bmRhcnkgZW5kZWQgaW4gYSBuZXdsaW5lLCB3ZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZQotICAgICAgICAgICAgIyB0aGUgZXBpbG9ndWUgaXNuJ3QgTm9uZQorICAgICAgICAgICAgIyBJZiB3ZSdyZSBub3QgcHJvY2Vzc2luZyB0aGUgcHJlYW1ibGUsIHRoZW4gd2UgbWlnaHQgaGF2ZSBzZWVuCisgICAgICAgICAgICAjIEVPRiB3aXRob3V0IHNlZWluZyB0aGF0IGVuZCBib3VuZGFyeS4uLnRoYXQgaXMgYWxzbyBhIGRlZmVjdC4KKyAgICAgICAgICAgIGlmIG5vdCBjbG9zZV9ib3VuZGFyeV9zZWVuOgorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAjIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIHRvIHRoZSBFT0YgaXMgZXBpbG9ndWUuICBJZiB0aGUgZW5kIGJvdW5kYXJ5CisgICAgICAgICAgICAjIGVuZGVkIGluIGEgbmV3bGluZSwgd2UnbGwgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGVwaWxvZ3VlIGlzbid0CisgICAgICAgICAgICAjIE5vbmUKICAgICAgICAgICAgIGlmIGxpbmVzZXA6CiAgICAgICAgICAgICAgICAgZXBpbG9ndWUgPSBbJyddCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDQwLDE0ICs0NjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgIyBpcyBpbGxlZ2FsLCBzbyBsZXQncyBub3RlIHRoZSBkZWZlY3QsIHN0b3JlIHRoZSBpbGxlZ2FsCiAgICAgICAgICAgICAgICAgICAgICMgbGluZSwgYW5kIGlnbm9yZSBpdCBmb3IgcHVycG9zZXMgb2YgaGVhZGVycy4KICAgICAgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLkZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0KGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgbGFzdHZhbHVlLmFwcGVuZChsaW5lKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBsYXN0aGVhZGVyOgotICAgICAgICAgICAgICAgICMgWFhYIHJlY29uc2lkZXIgdGhlIGpvaW5pbmcgb2YgZm9sZGVkIGxpbmVzCi0gICAgICAgICAgICAgICAgbGhkciA9IEVNUFRZU1RSSU5HLmpvaW4obGFzdHZhbHVlKVs6LTFdLnJzdHJpcCgnXHJcbicpCi0gICAgICAgICAgICAgICAgc2VsZi5fY3VyW2xhc3RoZWFkZXJdID0gbGhkcgorICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcmF3KCpzZWxmLnBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlKGxhc3R2YWx1ZSkpCiAgICAgICAgICAgICAgICAgbGFzdGhlYWRlciwgbGFzdHZhbHVlID0gJycsIFtdCiAgICAgICAgICAgICAjIENoZWNrIGZvciBlbnZlbG9wZSBoZWFkZXIsIGkuZS4gdW5peC1mcm9tCiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0Zyb20gJyk6CkBAIC00NzEsMTkgKzQ5OCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgIyBTcGxpdCB0aGUgbGluZSBvbiB0aGUgY29sb24gc2VwYXJhdGluZyBmaWVsZCBuYW1lIGZyb20gdmFsdWUuCisgICAgICAgICAgICAjIFRoZXJlIHdpbGwgYWx3YXlzIGJlIGEgY29sb24sIGJlY2F1c2UgaWYgdGhlcmUgd2Fzbid0IHRoZSBwYXJ0IG9mCisgICAgICAgICAgICAjIHRoZSBwYXJzZXIgdGhhdCBjYWxscyB1cyB3b3VsZCBoYXZlIHN0YXJ0ZWQgcGFyc2luZyB0aGUgYm9keS4KICAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoJzonKQotICAgICAgICAgICAgaWYgaSA8IDA6Ci0gICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk1hbGZvcm1lZEhlYWRlckRlZmVjdChsaW5lKQotICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCi0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGFzc2VydCBpPjAsICJfcGFyc2VfaGVhZGVycyBmZWQgbGluZSB3aXRoIG5vIDogYW5kIG5vIGxlYWRpbmcgV1MiCiAgICAgICAgICAgICBsYXN0aGVhZGVyID0gbGluZVs6aV0KLSAgICAgICAgICAgIGxhc3R2YWx1ZSA9IFtsaW5lW2krMTpdLmxzdHJpcCgpXQorICAgICAgICAgICAgbGFzdHZhbHVlID0gW2xpbmVdCiAgICAgICAgICMgRG9uZSB3aXRoIGFsbCB0aGUgbGluZXMsIHNvIGhhbmRsZSB0aGUgbGFzdCBoZWFkZXIuCiAgICAgICAgIGlmIGxhc3RoZWFkZXI6Ci0gICAgICAgICAgICAjIFhYWCByZWNvbnNpZGVyIHRoZSBqb2luaW5nIG9mIGZvbGRlZCBsaW5lcwotICAgICAgICAgICAgc2VsZi5fY3VyW2xhc3RoZWFkZXJdID0gRU1QVFlTVFJJTkcuam9pbihsYXN0dmFsdWUpLnJzdHJpcCgnXHJcbicpCisgICAgICAgICAgICBzZWxmLl9jdXIuc2V0X3Jhdygqc2VsZi5wb2xpY3kuaGVhZGVyX3NvdXJjZV9wYXJzZShsYXN0dmFsdWUpKQogCi0MCisKIGNsYXNzIEJ5dGVzRmVlZFBhcnNlcihGZWVkUGFyc2VyKToKICAgICAiIiJMaWtlIEZlZWRQYXJzZXIsIGJ1dCBmZWVkIGFjY2VwdHMgYnl0ZXMuIiIiCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IGM2YmZiNzAuLjg5OWFkYmMgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtMTMsOCArMTMsMTAgQEAKIGltcG9ydCB3YXJuaW5ncwogCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTworZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIKLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKK2ltcG9ydCBlbWFpbC5jaGFyc2V0IGFzIF9jaGFyc2V0CiAKIFVOREVSU0NPUkUgPSAnXycKIE5MID0gJ1xuJyAgIyBYWFg6IG5vIGxvbmdlciB1c2VkIGJ5IHRoZSBjb2RlIGJlbG93LgpAQCAtMzMsNyArMzUsOCBAQAogICAgICMgUHVibGljIGludGVyZmFjZQogICAgICMKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPU5vbmUsICosCisgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIHRoZSBnZW5lcmF0b3IgZm9yIG1lc3NhZ2UgZmxhdHRlbmluZy4KIAogICAgICAgICBvdXRmcCBpcyB0aGUgb3V0cHV0IGZpbGUtbGlrZSBvYmplY3QgZm9yIHdyaXRpbmcgdGhlIG1lc3NhZ2UgdG8uICBJdApAQCAtNDksMTYgKzUyLDIyIEBACiAgICAgICAgIGRlZmluZWQgaW4gdGhlIEhlYWRlciBjbGFzcy4gIFNldCBtYXhoZWFkZXJsZW4gdG8gemVybyB0byBkaXNhYmxlCiAgICAgICAgIGhlYWRlciB3cmFwcGluZy4gIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkKICAgICAgICAgYnkgUkZDIDI4MjIuCisKKyAgICAgICAgVGhlIHBvbGljeSBrZXl3b3JkIHNwZWNpZmllcyBhIHBvbGljeSBvYmplY3QgdGhhdCBjb250cm9scyBhIG51bWJlciBvZgorICAgICAgICBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2ZwID0gb3V0ZnAKICAgICAgICAgc2VsZi5fbWFuZ2xlX2Zyb21fID0gbWFuZ2xlX2Zyb21fCi0gICAgICAgIHNlbGYuX21heGhlYWRlcmxlbiA9IG1heGhlYWRlcmxlbgorICAgICAgICBzZWxmLm1heGhlYWRlcmxlbiA9IG1heGhlYWRlcmxlbgorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgogICAgICAgICAjIEp1c3QgZGVsZWdhdGUgdG8gdGhlIGZpbGUgb2JqZWN0CiAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHMpCiAKLSAgICBkZWYgZmxhdHRlbihzZWxmLCBtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPSdcbicpOgorICAgIGRlZiBmbGF0dGVuKHNlbGYsIG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSk6CiAgICAgICAgIHIiIiJQcmludCB0aGUgbWVzc2FnZSBvYmplY3QgdHJlZSByb290ZWQgYXQgbXNnIHRvIHRoZSBvdXRwdXQgZmlsZQogICAgICAgICBzcGVjaWZpZWQgd2hlbiB0aGUgR2VuZXJhdG9yIGluc3RhbmNlIHdhcyBjcmVhdGVkLgogCkBAIC03MCwyOSArNzksNDcgQEAKICAgICAgICAgTm90ZSB0aGF0IGZvciBzdWJvYmplY3RzLCBubyBGcm9tXyBsaW5lIGlzIHByaW50ZWQuCiAKICAgICAgICAgbGluZXNlcCBzcGVjaWZpZXMgdGhlIGNoYXJhY3RlcnMgdXNlZCB0byBpbmRpY2F0ZSBhIG5ldyBsaW5lIGluCi0gICAgICAgIHRoZSBvdXRwdXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgbW9zdCB1c2VmdWwgZm9yIHR5cGljYWwKLSAgICAgICAgUHl0aG9uIGFwcGxpY2F0aW9ucywgYnV0IGl0IGNhbiBiZSBzZXQgdG8gXHJcbiB0byBwcm9kdWNlIFJGQy1jb21wbGlhbnQKLSAgICAgICAgbGluZSBzZXBhcmF0b3JzIHdoZW4gbmVlZGVkLgorICAgICAgICB0aGUgb3V0cHV0LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcG9saWN5LgogCiAgICAgICAgICIiIgogICAgICAgICAjIFdlIHVzZSB0aGUgX1hYWCBjb25zdGFudHMgZm9yIG9wZXJhdGluZyBvbiBkYXRhIHRoYXQgY29tZXMgZGlyZWN0bHkKICAgICAgICAgIyBmcm9tIHRoZSBtc2csIGFuZCBfZW5jb2RlZF9YWFggY29uc3RhbnRzIGZvciBvcGVyYXRpbmcgb24gZGF0YSB0aGF0CiAgICAgICAgICMgaGFzIGFscmVhZHkgYmVlbiBjb252ZXJ0ZWQgKHRvIGJ5dGVzIGluIHRoZSBCeXRlc0dlbmVyYXRvcikgYW5kCiAgICAgICAgICMgaW5zZXJ0ZWQgaW50byBhIHRlbXBvcmFyeSBidWZmZXIuCi0gICAgICAgIHNlbGYuX05MID0gbGluZXNlcAotICAgICAgICBzZWxmLl9lbmNvZGVkX05MID0gc2VsZi5fZW5jb2RlKGxpbmVzZXApCisgICAgICAgIHBvbGljeSA9IG1zZy5wb2xpY3kgaWYgc2VsZi5wb2xpY3kgaXMgTm9uZSBlbHNlIHNlbGYucG9saWN5CisgICAgICAgIGlmIGxpbmVzZXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwb2xpY3kgPSBwb2xpY3kuY2xvbmUobGluZXNlcD1saW5lc2VwKQorICAgICAgICBpZiBzZWxmLm1heGhlYWRlcmxlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9c2VsZi5tYXhoZWFkZXJsZW4pCisgICAgICAgIHNlbGYuX05MID0gcG9saWN5LmxpbmVzZXAKKyAgICAgICAgc2VsZi5fZW5jb2RlZF9OTCA9IHNlbGYuX2VuY29kZShzZWxmLl9OTCkKICAgICAgICAgc2VsZi5fRU1QVFkgPSAnJwogICAgICAgICBzZWxmLl9lbmNvZGVkX0VNVFBZID0gc2VsZi5fZW5jb2RlKCcnKQotICAgICAgICBpZiB1bml4ZnJvbToKLSAgICAgICAgICAgIHVmcm9tID0gbXNnLmdldF91bml4ZnJvbSgpCi0gICAgICAgICAgICBpZiBub3QgdWZyb206Ci0gICAgICAgICAgICAgICAgdWZyb20gPSAnRnJvbSBub2JvZHkgJyArIHRpbWUuY3RpbWUodGltZS50aW1lKCkpCi0gICAgICAgICAgICBzZWxmLndyaXRlKHVmcm9tICsgc2VsZi5fTkwpCi0gICAgICAgIHNlbGYuX3dyaXRlKG1zZykKKyAgICAgICAgIyBCZWNhdXNlIHdlIHVzZSBjbG9uZSAoYmVsb3cpIHdoZW4gd2UgcmVjdXJzaXZlbHkgcHJvY2VzcyBtZXNzYWdlCisgICAgICAgICMgc3VicGFydHMsIGFuZCBiZWNhdXNlIGNsb25lIHVzZXMgdGhlIGNvbXB1dGVkIHBvbGljeSAobm90IE5vbmUpLAorICAgICAgICAjIHN1Ym1lc3NhZ2VzIHdpbGwgYXV0b21hdGljYWxseSBnZXQgc2V0IHRvIHRoZSBjb21wdXRlZCBwb2xpY3kgd2hlbgorICAgICAgICAjIHRoZXkgYXJlIHByb2Nlc3NlZCBieSB0aGlzIGNvZGUuCisgICAgICAgIG9sZF9nZW5fcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgb2xkX21zZ19wb2xpY3kgPSBtc2cucG9saWN5CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CisgICAgICAgICAgICBtc2cucG9saWN5ID0gcG9saWN5CisgICAgICAgICAgICBpZiB1bml4ZnJvbToKKyAgICAgICAgICAgICAgICB1ZnJvbSA9IG1zZy5nZXRfdW5peGZyb20oKQorICAgICAgICAgICAgICAgIGlmIG5vdCB1ZnJvbToKKyAgICAgICAgICAgICAgICAgICAgdWZyb20gPSAnRnJvbSBub2JvZHkgJyArIHRpbWUuY3RpbWUodGltZS50aW1lKCkpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSh1ZnJvbSArIHNlbGYuX05MKQorICAgICAgICAgICAgc2VsZi5fd3JpdGUobXNnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5wb2xpY3kgPSBvbGRfZ2VuX3BvbGljeQorICAgICAgICAgICAgbXNnLnBvbGljeSA9IG9sZF9tc2dfcG9saWN5CiAKICAgICBkZWYgY2xvbmUoc2VsZiwgZnApOgogICAgICAgICAiIiJDbG9uZSB0aGlzIGdlbmVyYXRvciB3aXRoIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmcCwgc2VsZi5fbWFuZ2xlX2Zyb21fLCBzZWxmLl9tYXhoZWFkZXJsZW4pCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hbmdsZV9mcm9tXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsICMgVXNlIHBvbGljeSBzZXR0aW5nLCB3aGljaCB3ZSd2ZSBhZGp1c3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYucG9saWN5KQogCiAgICAgIwogICAgICMgUHJvdGVjdGVkIGludGVyZmFjZSAtIHVuZG9jdW1lbnRlZCA7LwpAQCAtMTY3LDE2ICsxOTQsOCBAQAogICAgICMKIAogICAgIGRlZiBfd3JpdGVfaGVhZGVycyhzZWxmLCBtc2cpOgotICAgICAgICBmb3IgaCwgdiBpbiBtc2cuaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzOiAnICUgaCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgSGVhZGVyKToKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHYuZW5jb2RlKAotICAgICAgICAgICAgICAgICAgICBtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbiwgbGluZXNlcD1zZWxmLl9OTCkrc2VsZi5fTkwpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgSGVhZGVyJ3MgZ290IGxvdHMgb2Ygc21hcnRzLCBzbyB1c2UgaXQuCi0gICAgICAgICAgICAgICAgaGVhZGVyID0gSGVhZGVyKHYsIG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1oKQotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoaGVhZGVyLmVuY29kZShsaW5lc2VwPXNlbGYuX05MKStzZWxmLl9OTCkKKyAgICAgICAgZm9yIGgsIHYgaW4gbXNnLnJhd19pdGVtcygpOgorICAgICAgICAgICAgc2VsZi53cml0ZShzZWxmLnBvbGljeS5mb2xkKGgsIHYpKQogICAgICAgICAjIEEgYmxhbmsgbGluZSBhbHdheXMgc2VwYXJhdGVzIGhlYWRlcnMgZnJvbSBib2R5CiAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5fTkwpCiAKQEAgLTI2NSwxMiArMjg0LDEyIEBACiAgICAgICAgICMgVGhlIGNvbnRlbnRzIG9mIHNpZ25lZCBwYXJ0cyBoYXMgdG8gc3RheSB1bm1vZGlmaWVkIGluIG9yZGVyIHRvIGtlZXAKICAgICAgICAgIyB0aGUgc2lnbmF0dXJlIGludGFjdCBwZXIgUkZDMTg0NyAyLjEsIHNvIHdlIGRpc2FibGUgaGVhZGVyIHdyYXBwaW5nLgogICAgICAgICAjIFJETTogVGhpcyBpc24ndCBlbm91Z2ggdG8gY29tcGxldGVseSBwcmVzZXJ2ZSB0aGUgcGFydCwgYnV0IGl0IGhlbHBzLgotICAgICAgICBvbGRfbWF4aGVhZGVybGVuID0gc2VsZi5fbWF4aGVhZGVybGVuCisgICAgICAgIHAgPSBzZWxmLnBvbGljeQorICAgICAgICBzZWxmLnBvbGljeSA9IHAuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX21heGhlYWRlcmxlbiA9IDAKICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9tdWx0aXBhcnQobXNnKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbWF4aGVhZGVybGVuID0gb2xkX21heGhlYWRlcmxlbgorICAgICAgICAgICAgc2VsZi5wb2xpY3kgPSBwCiAKICAgICBkZWYgX2hhbmRsZV9tZXNzYWdlX2RlbGl2ZXJ5X3N0YXR1cyhzZWxmLCBtc2cpOgogICAgICAgICAjIFdlIGNhbid0IGp1c3Qgd3JpdGUgdGhlIGhlYWRlcnMgZGlyZWN0bHkgdG8gc2VsZidzIGZpbGUgb2JqZWN0CkBAIC0zMDUsMTAgKzMyNCwxMiBAQAogICAgICAgICAjIG1lc3NhZ2UvcmZjODIyLiAgU3VjaCBtZXNzYWdlcyBhcmUgZ2VuZXJhdGVkIGJ5LCBmb3IgZXhhbXBsZSwKICAgICAgICAgIyBHcm91cHdpc2Ugd2hlbiBmb3J3YXJkaW5nIHVuYWRvcm5lZCBtZXNzYWdlcy4gIChJc3N1ZSA3OTcwLikgIFNvCiAgICAgICAgICMgaW4gdGhhdCBjYXNlIHdlIGp1c3QgZW1pdCB0aGUgc3RyaW5nIGJvZHkuCi0gICAgICAgIHBheWxvYWQgPSBtc2cuZ2V0X3BheWxvYWQoKQorICAgICAgICBwYXlsb2FkID0gbXNnLl9wYXlsb2FkCiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgbGlzdCk6CiAgICAgICAgICAgICBnLmZsYXR0ZW4obXNnLmdldF9wYXlsb2FkKDApLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1zZWxmLl9OTCkKICAgICAgICAgICAgIHBheWxvYWQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBheWxvYWQgPSBzZWxmLl9lbmNvZGUocGF5bG9hZCkKICAgICAgICAgc2VsZi5fZnAud3JpdGUocGF5bG9hZCkKIAogICAgICMgVGhpcyB1c2VkIHRvIGJlIGEgbW9kdWxlIGxldmVsIGZ1bmN0aW9uOyB3ZSB1c2UgYSBjbGFzc21ldGhvZCBmb3IgdGhpcwpAQCAtMzQ0LDcgKzM2NSwxMCBAQAogCiAgICAgRnVuY3Rpb25hbGx5IGlkZW50aWNhbCB0byB0aGUgYmFzZSBHZW5lcmF0b3IgZXhjZXB0IHRoYXQgdGhlIG91dHB1dCBpcwogICAgIGJ5dGVzIGFuZCBub3Qgc3RyaW5nLiAgV2hlbiBzdXJyb2dhdGVzIHdlcmUgdXNlZCBpbiB0aGUgaW5wdXQgdG8gZW5jb2RlCi0gICAgYnl0ZXMsIHRoZXNlIGFyZSBkZWNvZGVkIGJhY2sgdG8gYnl0ZXMgZm9yIG91dHB1dC4KKyAgICBieXRlcywgdGhlc2UgYXJlIGRlY29kZWQgYmFjayB0byBieXRlcyBmb3Igb3V0cHV0LiAgSWYgdGhlIHBvbGljeSBoYXMKKyAgICBjdGVfdHlwZSBzZXQgdG8gN2JpdCwgdGhlbiB0aGUgbWVzc2FnZSBpcyB0cmFuc2Zvcm1lZCBzdWNoIHRoYXQgdGhlCisgICAgbm9uLUFTQ0lJIGJ5dGVzIGFyZSBwcm9wZXJseSBjb250ZW50IHRyYW5zZmVyIGVuY29kZWQsIHVzaW5nIHRoZSBjaGFyc2V0CisgICAgdW5rbm93bi04Yml0LgogCiAgICAgVGhlIG91dGZwIG9iamVjdCBtdXN0IGFjY2VwdCBieXRlcyBpbiBpdHMgd3JpdGUgbWV0aG9kLgogICAgICIiIgpAQCAtMzY1LDIzICszODksOCBAQAogICAgIGRlZiBfd3JpdGVfaGVhZGVycyhzZWxmLCBtc2cpOgogICAgICAgICAjIFRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgdmVyc2lvbiwgZXhjZXB0IGZvciBoYW5kbGluZwogICAgICAgICAjIHN0cmluZ3Mgd2l0aCA4Yml0IGJ5dGVzLgotICAgICAgICBmb3IgaCwgdiBpbiBtc2cuX2hlYWRlcnM6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCclczogJyAlIGgpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIEhlYWRlcik6Ci0gICAgICAgICAgICAgICAgc2VsZi53cml0ZSh2LmVuY29kZShtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbikrc2VsZi5fTkwpCi0gICAgICAgICAgICBlbGlmIF9oYXNfc3Vycm9nYXRlcyh2KToKLSAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgcmF3IDhiaXQgZGF0YSBpbiBhIGJ5dGUgc3RyaW5nLCB3ZSBoYXZlIG5vIGlkZWEKLSAgICAgICAgICAgICAgICAjIHdoYXQgdGhlIGVuY29kaW5nIGlzLiAgVGhlcmUgaXMgbm8gc2FmZSB3YXkgdG8gc3BsaXQgdGhpcwotICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgSWYgaXQncyBhc2NpaS1zdWJzZXQsIHRoZW4gd2UgY291bGQgZG8gYSBub3JtYWwKLSAgICAgICAgICAgICAgICAjIGFzY2lpIHNwbGl0LCBidXQgaWYgaXQncyBtdWx0aWJ5dGUgdGhlbiB3ZSBjb3VsZCBicmVhayB0aGUKLSAgICAgICAgICAgICAgICAjIHN0cmluZy4gIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgc28gdGhlIGxlYXN0IGhhcm0gc2VlbXMgdG8KLSAgICAgICAgICAgICAgICAjIGJlIHRvIG5vdCBzcGxpdCB0aGUgc3RyaW5nIGFuZCByaXNrIGl0IGJlaW5nIHRvbyBsb25nLgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoditOTCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZWFkZXIncyBnb3QgbG90cyBvZiBzbWFydHMgYW5kIHRoaXMgc3RyaW5nIGlzIHNhZmUuLi4KLSAgICAgICAgICAgICAgICBoZWFkZXIgPSBIZWFkZXIodiwgbWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPWgpCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZShoZWFkZXIuZW5jb2RlKGxpbmVzZXA9c2VsZi5fTkwpK3NlbGYuX05MKQorICAgICAgICBmb3IgaCwgdiBpbiBtc2cucmF3X2l0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLnBvbGljeS5mb2xkX2JpbmFyeShoLCB2KSkKICAgICAgICAgIyBBIGJsYW5rIGxpbmUgYWx3YXlzIHNlcGFyYXRlcyBoZWFkZXJzIGZyb20gYm9keQogICAgICAgICBzZWxmLndyaXRlKHNlbGYuX05MKQogCkBAIC0zOTAsNyArMzk5LDcgQEAKICAgICAgICAgIyBqdXN0IHdyaXRlIGl0IGJhY2sgb3V0LgogICAgICAgICBpZiBtc2cuX3BheWxvYWQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXMobXNnLl9wYXlsb2FkKToKKyAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKG1zZy5fcGF5bG9hZCkgYW5kIG5vdCBzZWxmLnBvbGljeS5jdGVfdHlwZT09JzdiaXQnOgogICAgICAgICAgICAgaWYgc2VsZi5fbWFuZ2xlX2Zyb21fOgogICAgICAgICAgICAgICAgIG1zZy5fcGF5bG9hZCA9IGZjcmUuc3ViKCI+RnJvbSAiLCBtc2cuX3BheWxvYWQpCiAgICAgICAgICAgICBzZWxmLndyaXRlKG1zZy5fcGF5bG9hZCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9oZWFkZXIucHkgYi9MaWIvZW1haWwvaGVhZGVyLnB5CmluZGV4IDMyNTBkMzYuLmE4OTIxOWQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9oZWFkZXIucHkKKysrIGIvTGliL2VtYWlsL2hlYWRlci5weQpAQCAtNDAsNyArNDAsNiBAQAogICBcPyAgICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID8KICAgKD9QPGVuY29kZWQ+Lio/KSAgICAgICMgbm9uLWdyZWVkeSB1cCB0byB0aGUgbmV4dCA/PSBpcyB0aGUgZW5jb2RlZCBzdHJpbmcKICAgXD89ICAgICAgICAgICAgICAgICAgICMgbGl0ZXJhbCA/PQotICAoPz1bIFx0XXwkKSAgICAgICAgICAgIyB3aGl0ZXNwYWNlIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZwogICAnJycsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFIHwgcmUuTVVMVElMSU5FKQogCiAjIEZpZWxkIG5hbWUgcmVnZXhwLCBpbmNsdWRpbmcgdHJhaWxpbmcgY29sb24sIGJ1dCBub3Qgc2VwYXJhdGluZyB3aGl0ZXNwYWNlLApAQCAtODYsOCArODUsMTIgQEAKICAgICB3b3JkcyA9IFtdCiAgICAgZm9yIGxpbmUgaW4gaGVhZGVyLnNwbGl0bGluZXMoKToKICAgICAgICAgcGFydHMgPSBlY3JlLnNwbGl0KGxpbmUpCisgICAgICAgIGZpcnN0ID0gVHJ1ZQogICAgICAgICB3aGlsZSBwYXJ0czoKLSAgICAgICAgICAgIHVuZW5jb2RlZCA9IHBhcnRzLnBvcCgwKS5zdHJpcCgpCisgICAgICAgICAgICB1bmVuY29kZWQgPSBwYXJ0cy5wb3AoMCkKKyAgICAgICAgICAgIGlmIGZpcnN0OgorICAgICAgICAgICAgICAgIHVuZW5jb2RlZCA9IHVuZW5jb2RlZC5sc3RyaXAoKQorICAgICAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKICAgICAgICAgICAgIGlmIHVuZW5jb2RlZDoKICAgICAgICAgICAgICAgICB3b3Jkcy5hcHBlbmQoKHVuZW5jb2RlZCwgTm9uZSwgTm9uZSkpCiAgICAgICAgICAgICBpZiBwYXJ0czoKQEAgLTk1LDYgKzk4LDE2IEBACiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBwYXJ0cy5wb3AoMCkubG93ZXIoKQogICAgICAgICAgICAgICAgIGVuY29kZWQgPSBwYXJ0cy5wb3AoMCkKICAgICAgICAgICAgICAgICB3b3Jkcy5hcHBlbmQoKGVuY29kZWQsIGVuY29kaW5nLCBjaGFyc2V0KSkKKyAgICAjIE5vdyBsb29wIG92ZXIgd29yZHMgYW5kIHJlbW92ZSB3b3JkcyB0aGF0IGNvbnNpc3Qgb2Ygd2hpdGVzcGFjZQorICAgICMgYmV0d2VlbiB0d28gZW5jb2RlZCBzdHJpbmdzLgorICAgIGltcG9ydCBzeXMKKyAgICBkcm9wbGlzdCA9IFtdCisgICAgZm9yIG4sIHcgaW4gZW51bWVyYXRlKHdvcmRzKToKKyAgICAgICAgaWYgbj4xIGFuZCB3WzFdIGFuZCB3b3Jkc1tuLTJdWzFdIGFuZCB3b3Jkc1tuLTFdWzBdLmlzc3BhY2UoKToKKyAgICAgICAgICAgIGRyb3BsaXN0LmFwcGVuZChuLTEpCisgICAgZm9yIGQgaW4gcmV2ZXJzZWQoZHJvcGxpc3QpOgorICAgICAgICBkZWwgd29yZHNbZF0KKwogICAgICMgVGhlIG5leHQgc3RlcCBpcyB0byBkZWNvZGUgZWFjaCBlbmNvZGVkIHdvcmQgYnkgYXBwbHlpbmcgdGhlIHJldmVyc2UKICAgICAjIGJhc2U2NCBvciBxdW9wcmkgdHJhbnNmb3JtYXRpb24uICBkZWNvZGVkX3dvcmRzIGlzIG5vdyBhIGxpc3Qgb2YgdGhlCiAgICAgIyBmb3JtIChkZWNvZGVkX3dvcmQsIGNoYXJzZXQpLgpAQCAtMjE3LDIyICsyMzAsMjcgQEAKICAgICAgICAgc2VsZi5fbm9ybWFsaXplKCkKICAgICAgICAgdWNodW5rcyA9IFtdCiAgICAgICAgIGxhc3RjcyA9IE5vbmUKKyAgICAgICAgbGFzdHNwYWNlID0gTm9uZQogICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgICMgV2UgbXVzdCBwcmVzZXJ2ZSBzcGFjZXMgYmV0d2VlbiBlbmNvZGVkIGFuZCBub24tZW5jb2RlZCB3b3JkCiAgICAgICAgICAgICAjIGJvdW5kYXJpZXMsIHdoaWNoIG1lYW5zIGZvciB1cyB3ZSBuZWVkIHRvIGFkZCBhIHNwYWNlIHdoZW4gd2UgZ28KICAgICAgICAgICAgICMgZnJvbSBhIGNoYXJzZXQgdG8gTm9uZS91cy1hc2NpaSwgb3IgZnJvbSBOb25lL3VzLWFzY2lpIHRvIGEKICAgICAgICAgICAgICMgY2hhcnNldC4gIE9ubHkgZG8gdGhpcyBmb3IgdGhlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBjaHVua3MuCisgICAgICAgICAgICAjIERvbid0IGFkZCBhIHNwYWNlIGlmIHRoZSBOb25lL3VzLWFzY2lpIHN0cmluZyBhbHJlYWR5IGhhcworICAgICAgICAgICAgIyBhIHNwYWNlICh0cmFpbGluZyBvciBsZWFkaW5nIGRlcGVuZGluZyBvbiB0cmFuc2l0aW9uKQogICAgICAgICAgICAgbmV4dGNzID0gY2hhcnNldAogICAgICAgICAgICAgaWYgbmV4dGNzID09IF9jaGFyc2V0LlVOS05PV044QklUOgogICAgICAgICAgICAgICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgICAgICAgICBzdHJpbmcgPSBvcmlnaW5hbF9ieXRlcy5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQogICAgICAgICAgICAgaWYgdWNodW5rczoKKyAgICAgICAgICAgICAgICBoYXNzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWzBdKQogICAgICAgICAgICAgICAgIGlmIGxhc3RjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgotICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y3MgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y3MgaW4gKE5vbmUsICd1cy1hc2NpaScpIGFuZCBub3QgaGFzc3BhY2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChTUEFDRSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjcyA9IE5vbmUKLSAgICAgICAgICAgICAgICBlbGlmIG5leHRjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBsYXN0c3BhY2U6CiAgICAgICAgICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKFNQQUNFKQorICAgICAgICAgICAgbGFzdHNwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbLTFdKQogICAgICAgICAgICAgbGFzdGNzID0gbmV4dGNzCiAgICAgICAgICAgICB1Y2h1bmtzLmFwcGVuZChzdHJpbmcpCiAgICAgICAgIHJldHVybiBFTVBUWVNUUklORy5qb2luKHVjaHVua3MpCkBAIC0yOTEsNiArMzA5LDExIEBACiAgICAgICAgICAgICAgICAgY2hhcnNldCA9IFVURjgKICAgICAgICAgc2VsZi5fY2h1bmtzLmFwcGVuZCgocywgY2hhcnNldCkpCiAKKyAgICBkZWYgX25vbmN0ZXh0KHNlbGYsIHMpOgorICAgICAgICAiIiJUcnVlIGlmIHN0cmluZyBzIGlzIG5vdCBhIGN0ZXh0IGNoYXJhY3RlciBvZiBSRkM4MjIuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gcy5pc3NwYWNlKCkgb3IgcyBpbiAoJygnLCAnKScsICdcXCcpCisKICAgICBkZWYgZW5jb2RlKHNlbGYsIHNwbGl0Y2hhcnM9JzssIFx0JywgbWF4bGluZWxlbj1Ob25lLCBsaW5lc2VwPSdcbicpOgogICAgICAgICByIiIiRW5jb2RlIGEgbWVzc2FnZSBoZWFkZXIgaW50byBhbiBSRkMtY29tcGxpYW50IGZvcm1hdC4KIApAQCAtMzM0LDcgKzM1NywyMCBAQAogICAgICAgICAgICAgbWF4bGluZWxlbiA9IDEwMDAwMDAKICAgICAgICAgZm9ybWF0dGVyID0gX1ZhbHVlRm9ybWF0dGVyKHNlbGYuX2hlYWRlcmxlbiwgbWF4bGluZWxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRpbnVhdGlvbl93cywgc3BsaXRjaGFycykKKyAgICAgICAgbGFzdGNzID0gTm9uZQorICAgICAgICBoYXNzcGFjZSA9IGxhc3RzcGFjZSA9IE5vbmUKICAgICAgICAgZm9yIHN0cmluZywgY2hhcnNldCBpbiBzZWxmLl9jaHVua3M6CisgICAgICAgICAgICBpZiBoYXNzcGFjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBoYXNzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWzBdKQorICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgICAgICBpZiBsYXN0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc3NwYWNlIG9yIGNoYXJzZXQgbm90IGluIChOb25lLCAndXMtYXNjaWknKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyc2V0IG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBsYXN0c3BhY2U6CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCisgICAgICAgICAgICBsYXN0c3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1stMV0pCisgICAgICAgICAgICBsYXN0Y3MgPSBjaGFyc2V0CisgICAgICAgICAgICBoYXNzcGFjZSA9IEZhbHNlCiAgICAgICAgICAgICBsaW5lcyA9IHN0cmluZy5zcGxpdGxpbmVzKCkKICAgICAgICAgICAgIGlmIGxpbmVzOgogICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKCcnLCBsaW5lc1swXSwgY2hhcnNldCkKQEAgLTM1MSw2ICszODcsNyBAQAogICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZmVlZChmd3MsIHNsaW5lLCBjaGFyc2V0KQogICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLm5ld2xpbmUoKQorICAgICAgICBpZiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQogICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCiAgICAgICAgIGlmIF9lbWJlZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5IGIvTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYWU5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKQEAgLTAsMCArMSw1ODMgQEAKKyIiIlJlcHJlc2VudGluZyBhbmQgbWFuaXB1bGF0aW5nIGVtYWlsIGhlYWRlcnMgdmlhIGN1c3RvbSBvYmplY3RzLgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgSGVhZGVyUmVnaXN0cnkgQVBJLgorVGhlIGltcGxlbWVudGF0aW9uIGlzIGRlc2lnbmVkIHRvIGZsZXhpYmx5IGZvbGxvdyBSRkM1MzIyIHJ1bGVzLgorCitFdmVudHVhbGx5IEhlYWRlclJlZ2lzdHJ5IHdpbGwgYmUgYSBwdWJsaWMgQVBJLCBidXQgaXQgaXNuJ3QgeWV0LAorYW5kIHdpbGwgcHJvYmFibHkgY2hhbmdlIHNvbWUgYmVmb3JlIHRoYXQgaGFwcGVucy4KKworIiIiCisKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCitmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gZW1haWwgaW1wb3J0IF9oZWFkZXJfdmFsdWVfcGFyc2VyIGFzIHBhcnNlcgorCitjbGFzcyBBZGRyZXNzOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXlfbmFtZT0nJywgdXNlcm5hbWU9JycsIGRvbWFpbj0nJywgYWRkcl9zcGVjPU5vbmUpOgorICAgICAgICAiIiJDcmVhdGUgYW4gb2JqZWN0IHJlcHJlc2V0aW5nIGEgZnVsbCBlbWFpbCBhZGRyZXNzLgorCisgICAgICAgIEFuIGFkZHJlc3MgY2FuIGhhdmUgYSAnZGlzcGxheV9uYW1lJywgYSAndXNlcm5hbWUnLCBhbmQgYSAnZG9tYWluJy4gIEluCisgICAgICAgIGFkZGl0aW9uIHRvIHNwZWNpZnlpbmcgdGhlIHVzZXJuYW1lIGFuZCBkb21haW4gc2VwYXJhdGVseSwgdGhleSBtYXkgYmUKKyAgICAgICAgc3BlY2lmaWVkIHRvZ2V0aGVyIGJ5IHVzaW5nIHRoZSBhZGRyX3NwZWMga2V5d29yZCAqaW5zdGVhZCBvZiogdGhlCisgICAgICAgIHVzZXJuYW1lIGFuZCBkb21haW4ga2V5d29yZHMuICBJZiBhbiBhZGRyX3NwZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpdAorICAgICAgICBtdXN0IGJlIHByb3Blcmx5IHF1b3RlZCBhY2NvcmRpbmcgdG8gUkZDIDUzMjIgcnVsZXM7IGFuIGVycm9yIHdpbGwgYmUKKyAgICAgICAgcmFpc2VkIGlmIGl0IGlzIG5vdC4KKworICAgICAgICBBbiBBZGRyZXNzIG9iamVjdCBoYXMgZGlzcGxheV9uYW1lLCB1c2VybmFtZSwgZG9tYWluLCBhbmQgYWRkcl9zcGVjCisgICAgICAgIGF0dHJpYnV0ZXMsIGFsbCBvZiB3aGljaCBhcmUgcmVhZC1vbmx5LiAgVGhlIGFkZHJfc3BlYyBhbmQgdGhlIHN0cmluZworICAgICAgICB2YWx1ZSBvZiB0aGUgb2JqZWN0IGFyZSBib3RoIHF1b3RlZCBhY2NvcmRpbmcgdG8gUkZDNTMyMiBydWxlcywgYnV0CisgICAgICAgIHdpdGhvdXQgYW55IENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBjbGF1c2Ugd2l0aCBpdHMgcG90ZW50aWFsICdyYWlzZScgbWF5IG9ubHkgaGFwcGVuIHdoZW4gYW4KKyAgICAgICAgIyBhcHBsaWNhdGlvbiBwcm9ncmFtIGNyZWF0ZXMgYW4gQWRkcmVzcyBvYmplY3QgdXNpbmcgYW4gYWRkcl9zcGVjCisgICAgICAgICMga2V5d29yZC4gIFRoZSBlbWFpbCBsaWJyYXJ5IGNvZGUgaXRzZWxmIG11c3QgYWx3YXlzIHN1cHBseSB1c2VybmFtZQorICAgICAgICAjIGFuZCBkb21haW4uCisgICAgICAgIGlmIGFkZHJfc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHVzZXJuYW1lIG9yIGRvbWFpbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFkZHJzcGVjIHNwZWNpZmllZCB3aGVuIHVzZXJuYW1lIGFuZC9vciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb21haW4gYWxzbyBzcGVjaWZpZWQiKQorICAgICAgICAgICAgYV9zLCByZXN0ID0gcGFyc2VyLmdldF9hZGRyX3NwZWMoYWRkcl9zcGVjKQorICAgICAgICAgICAgaWYgcmVzdDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFkZHJfc3BlYzsgb25seSAne30nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBiZSBwYXJzZWQgZnJvbSAne30nIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX3MsIGFkZHJfc3BlYykpCisgICAgICAgICAgICBpZiBhX3MuYWxsX2RlZmVjdHM6CisgICAgICAgICAgICAgICAgcmFpc2UgYV9zLmFsbF9kZWZlY3RzWzBdCisgICAgICAgICAgICB1c2VybmFtZSA9IGFfcy5sb2NhbF9wYXJ0CisgICAgICAgICAgICBkb21haW4gPSBhX3MuZG9tYWluCisgICAgICAgIHNlbGYuX2Rpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZQorICAgICAgICBzZWxmLl91c2VybmFtZSA9IHVzZXJuYW1lCisgICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHVzZXJuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdXNlcm5hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgICIiIlRoZSBhZGRyX3NwZWMgKHVzZXJuYW1lQGRvbWFpbikgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgcXVvdGVkCisgICAgICAgIGFjY29yZGluZyB0byBSRkMgNTMyMiBydWxlcywgYnV0IHdpdGggbm8gQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZy4KKyAgICAgICAgIiIiCisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi51c2VybmFtZSkKKyAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtcGFyc2VyLkRPVF9BVE9NX0VORFMpOgorICAgICAgICAgICAgbHAgPSBwYXJzZXIucXVvdGVfc3RyaW5nKHNlbGYudXNlcm5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBscCA9IHNlbGYudXNlcm5hbWUKKyAgICAgICAgaWYgc2VsZi5kb21haW46CisgICAgICAgICAgICByZXR1cm4gbHAgKyAnQCcgKyBzZWxmLmRvbWFpbgorICAgICAgICBpZiBub3QgbHA6CisgICAgICAgICAgICByZXR1cm4gJzw+JworICAgICAgICByZXR1cm4gbHAKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJBZGRyZXNzKGRpc3BsYXlfbmFtZT17IXJ9LCB1c2VybmFtZT17IXJ9LCBkb21haW49eyFyfSkiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlzcGxheV9uYW1lLCBzZWxmLnVzZXJuYW1lLCBzZWxmLmRvbWFpbikKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBuYW1lc2V0ID0gc2V0KHNlbGYuZGlzcGxheV9uYW1lKQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1wYXJzZXIuU1BFQ0lBTFMpOgorICAgICAgICAgICAgZGlzcCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoc2VsZi5kaXNwbGF5X25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkaXNwID0gc2VsZi5kaXNwbGF5X25hbWUKKyAgICAgICAgaWYgZGlzcDoKKyAgICAgICAgICAgIGFkZHJfc3BlYyA9ICcnIGlmIHNlbGYuYWRkcl9zcGVjPT0nPD4nIGVsc2Ugc2VsZi5hZGRyX3NwZWMKKyAgICAgICAgICAgIHJldHVybiAie30gPHt9PiIuZm9ybWF0KGRpc3AsIGFkZHJfc3BlYykKKyAgICAgICAgcmV0dXJuIHNlbGYuYWRkcl9zcGVjCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgdHlwZShvdGhlcikgIT0gdHlwZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gKHNlbGYuZGlzcGxheV9uYW1lID09IG90aGVyLmRpc3BsYXlfbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID09IG90aGVyLnVzZXJuYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuZG9tYWluID09IG90aGVyLmRvbWFpbikKKworCitjbGFzcyBHcm91cDoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXNwbGF5X25hbWU9Tm9uZSwgYWRkcmVzc2VzPU5vbmUpOgorICAgICAgICAiIiJDcmVhdGUgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhbiBhZGRyZXNzIGdyb3VwLgorCisgICAgICAgIEFuIGFkZHJlc3MgZ3JvdXAgY29uc2lzdHMgb2YgYSBkaXNwbGF5X25hbWUgZm9sbG93ZWQgYnkgY29sb24gYW5kIGFuCisgICAgICAgIGxpc3Qgb2YgYWRkcmVzc2VzIChzZWUgQWRkcmVzcykgdGVybWluYXRlZCBieSBhIHNlbWktY29sb24uICBUaGUgR3JvdXAKKyAgICAgICAgaXMgY3JlYXRlZCBieSBzcGVjaWZ5aW5nIGEgZGlzcGxheV9uYW1lIGFuZCBhIHBvc3NpYmx5IGVtcHR5IGxpc3Qgb2YKKyAgICAgICAgQWRkcmVzcyBvYmplY3RzLiAgQSBHcm91cCBjYW4gYWxzbyBiZSB1c2VkIHRvIHJlcHJlc2VudCBhIHNpbmdsZQorICAgICAgICBhZGRyZXNzIHRoYXQgaXMgbm90IGluIGEgZ3JvdXAsIHdoaWNoIGlzIGNvbnZlbmllbnQgd2hlbiBtYW5pcHVsYXRpbmcKKyAgICAgICAgbGlzdHMgdGhhdCBhcmUgYSBjb21iaW5hdGlvbiBvZiBHcm91cHMgYW5kIGluZGl2aWR1YWwgQWRkcmVzc2VzLiAgSW4KKyAgICAgICAgdGhpcyBjYXNlIHRoZSBkaXNwbGF5X25hbWUgc2hvdWxkIGJlIHNldCB0byBOb25lLiAgSW4gcGFydGljdWxhciwgdGhlCisgICAgICAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIEdyb3VwIHdob3NlIGRpc3BsYXlfbmFtZSBpcyBOb25lIGlzIHRoZSBzYW1lCisgICAgICAgIGFzIHRoZSBBZGRyZXNzIG9iamVjdCwgaWYgdGhlcmUgaXMgb25lIGFuZCBvbmx5IG9uZSBBZGRyZXNzIG9iamVjdCBpbgorICAgICAgICB0aGUgYWRkcmVzc2VzIGxpc3QuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2Rpc3BsYXlfbmFtZSA9IGRpc3BsYXlfbmFtZQorICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSB0dXBsZShhZGRyZXNzZXMpIGlmIGFkZHJlc3NlcyBlbHNlIHR1cGxlKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyZXNzZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzZXMKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJHcm91cChkaXNwbGF5X25hbWU9eyFyfSwgYWRkcmVzc2VzPXshcn0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYuYWRkcmVzc2VzKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuZGlzcGxheV9uYW1lIGlzIE5vbmUgYW5kIGxlbihzZWxmLmFkZHJlc3Nlcyk9PTE6CisgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuYWRkcmVzc2VzWzBdKQorICAgICAgICBkaXNwID0gc2VsZi5kaXNwbGF5X25hbWUKKyAgICAgICAgaWYgZGlzcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG5hbWVzZXQgPSBzZXQoZGlzcCkKKyAgICAgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LXBhcnNlci5TUEVDSUFMUyk6CisgICAgICAgICAgICAgICAgZGlzcCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoZGlzcCkKKyAgICAgICAgYWRyc3RyID0gIiwgIi5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmLmFkZHJlc3NlcykKKyAgICAgICAgYWRyc3RyID0gJyAnICsgYWRyc3RyIGlmIGFkcnN0ciBlbHNlIGFkcnN0cgorICAgICAgICByZXR1cm4gInt9Ont9OyIuZm9ybWF0KGRpc3AsIGFkcnN0cikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiB0eXBlKG90aGVyKSAhPSB0eXBlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAoc2VsZi5kaXNwbGF5X25hbWUgPT0gb3RoZXIuZGlzcGxheV9uYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzc2VzID09IG90aGVyLmFkZHJlc3NlcykKKworCisjIEhlYWRlciBDbGFzc2VzICMKKworY2xhc3MgQmFzZUhlYWRlcihzdHIpOgorCisgICAgIiIiQmFzZSBjbGFzcyBmb3IgbWVzc2FnZSBoZWFkZXJzLgorCisgICAgSW1wbGVtZW50cyBnZW5lcmljIGJlaGF2aW9yIGFuZCBwcm92aWRlcyB0b29scyBmb3Igc3ViY2xhc3Nlcy4KKworICAgIEEgc3ViY2xhc3MgbXVzdCBkZWZpbmUgYSBjbGFzc21ldGhvZCBuYW1lZCAncGFyc2UnIHRoYXQgdGFrZXMgYW4gdW5mb2xkZWQKKyAgICB2YWx1ZSBzdHJpbmcgYW5kIGEgZGljdGlvbmFyeSBhcyBpdHMgYXJndW1lbnRzLiAgVGhlIGRpY3Rpb25hcnkgd2lsbAorICAgIGNvbnRhaW4gb25lIGtleSwgJ2RlZmVjdHMnLCBpbml0aWFsaXplZCB0byBhbiBlbXB0eSBsaXN0LiAgQWZ0ZXIgdGhlIGNhbGwKKyAgICB0aGUgZGljdGlvbmFyeSBtdXN0IGNvbnRhaW4gdHdvIGFkZGl0aW9uYWwga2V5czogcGFyc2VfdHJlZSwgc2V0IHRvIHRoZQorICAgIHBhcnNlIHRyZWUgb2J0YWluZWQgZnJvbSBwYXJzaW5nIHRoZSBoZWFkZXIsIGFuZCAnZGVjb2RlZCcsIHNldCB0byB0aGUKKyAgICBzdHJpbmcgdmFsdWUgb2YgdGhlIGlkZWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBmcm9tIHRoZSB2YWx1ZS4KKyAgICAoVGhhdCBpcywgZW5jb2RlZCB3b3JkcyBhcmUgZGVjb2RlZCwgYW5kIHZhbHVlcyB0aGF0IGhhdmUgY2Fub25pY2FsCisgICAgcmVwcmVzZW50YXRpb25zIGFyZSBzbyByZXByZXNlbnRlZC4pCisKKyAgICBUaGUgZGVmZWN0cyBrZXkgaXMgaW50ZW5kZWQgdG8gY29sbGVjdCBwYXJzaW5nIGRlZmVjdHMsIHdoaWNoIHRoZSBtZXNzYWdlCisgICAgcGFyc2VyIHdpbGwgc3Vic2VxdWVudGx5IGRpc3Bvc2Ugb2YgYXMgYXBwcm9wcmlhdGUuICBUaGUgcGFyc2VyIHNob3VsZCBub3QsCisgICAgaW5zb2ZhciBhcyBwcmFjdGljYWwsIHJhaXNlIGFueSBlcnJvcnMuICBEZWZlY3RzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKyAgICBsaXN0IGluc3RlYWQuICBUaGUgc3RhbmRhcmQgaGVhZGVyIHBhcnNlcnMgcmVnaXN0ZXIgZGVmZWN0cyBmb3IgUkZDCisgICAgY29tcGxpYW5jZSBpc3N1ZXMsIGZvciBvYnNvbGV0ZSBSRkMgc3ludGF4LCBhbmQgZm9yIHVucmVjb3ZlcmFibGUgcGFyc2luZworICAgIGVycm9ycy4KKworICAgIFRoZSBwYXJzZSBtZXRob2QgbWF5IGFkZCBhZGRpdGlvbmFsIGtleXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJbiB0aGlzIGNhc2UKKyAgICB0aGUgc3ViY2xhc3MgbXVzdCBkZWZpbmUgYW4gJ2luaXQnIG1ldGhvZCwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhlCisgICAgZGljdGlvbmFyeSBhcyBpdHMga2V5d29yZCBhcmd1bWVudHMuICBUaGUgbWV0aG9kIHNob3VsZCB1c2UgKHVzdWFsbHkgYnkKKyAgICBzZXR0aW5nIHRoZW0gYXMgdGhlIHZhbHVlIG9mIHNpbWlsYXJseSBuYW1lZCBhdHRyaWJ1dGVzKSBhbmQgcmVtb3ZlIGFsbCB0aGUKKyAgICBleHRyYSBrZXlzIGFkZGVkIGJ5IGl0cyBwYXJzZSBtZXRob2QsIGFuZCB0aGVuIHVzZSBzdXBlciB0byBjYWxsIGl0cyBwYXJlbnQKKyAgICBjbGFzcyB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFuZCBrZXl3b3Jkcy4KKworICAgIFRoZSBzdWJjbGFzcyBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdGhhdCBhICdtYXhfY291bnQnIGF0dHJpYnV0ZSBpcyBkZWZpbmVkCisgICAgdGhhdCBpcyBlaXRoZXIgTm9uZSBvciAxLiBYWFg6IG5lZWQgdG8gYmV0dGVyIGRlZmluZSB0aGlzIEFQSS4KKworICAgICIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGt3ZHMgPSB7J2RlZmVjdHMnOiBbXX0KKyAgICAgICAgY2xzLnBhcnNlKHZhbHVlLCBrd2RzKQorICAgICAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMoa3dkc1snZGVjb2RlZCddKToKKyAgICAgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHV0aWxzLl9zYW5pdGl6ZShrd2RzWydkZWNvZGVkJ10pCisgICAgICAgIHNlbGYgPSBzdHIuX19uZXdfXyhjbHMsIGt3ZHNbJ2RlY29kZWQnXSkKKyAgICAgICAgZGVsIGt3ZHNbJ2RlY29kZWQnXQorICAgICAgICBzZWxmLmluaXQobmFtZSwgKiprd2RzKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGluaXQoc2VsZiwgbmFtZSwgKiwgcGFyc2VfdHJlZSwgZGVmZWN0cyk6CisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3BhcnNlX3RyZWUgPSBwYXJzZV90cmVlCisgICAgICAgIHNlbGYuX2RlZmVjdHMgPSBkZWZlY3RzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZWZlY3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5fZGVmZWN0cykKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgX3JlY29uc3RydWN0X2hlYWRlciwKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgc3RyKHNlbGYpLAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHNlbGYuX19kaWN0X18pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3JlY29uc3RydWN0KGNscywgdmFsdWUpOgorICAgICAgICByZXR1cm4gc3RyLl9fbmV3X18oY2xzLCB2YWx1ZSkKKworICAgIGRlZiBmb2xkKHNlbGYsICosIHBvbGljeSk6CisgICAgICAgICIiIkZvbGQgaGVhZGVyIGFjY29yZGluZyB0byBwb2xpY3kuCisKKyAgICAgICAgVGhlIHBhcnNlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgaGVhZGVyIGlzIGZvbGRlZCBhY2NvcmRpbmcgdG8KKyAgICAgICAgUkZDNTMyMiBydWxlcywgYXMgbW9kaWZpZWQgYnkgdGhlIHBvbGljeS4gIElmIHRoZSBwYXJzZSB0cmVlCisgICAgICAgIGNvbnRhaW5zIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMsIHRoZSBieXRlcyBhcmUgQ1RFIGVuY29kZWQgdXNpbmcKKyAgICAgICAgdGhlIGNoYXJzZXQgJ3Vua25vd24tOGJpdCIuCisKKyAgICAgICAgQW55IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZSBwYXJzZSB0cmVlIGFyZSBDVEUgZW5jb2RlZCB1c2luZworICAgICAgICBjaGFyc2V0IHV0Zi04LiBYWFg6IG1ha2UgdGhpcyBhIHBvbGljeSBzZXR0aW5nLgorCisgICAgICAgIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZyBwb3NzaWJseSBjb250YWluaW5nIGxpbmVzZXAKKyAgICAgICAgY2hhcmFjdGVycywgYW5kIGVuZGluZyB3aXRoIGEgbGluZXNlcCBjaGFyYWN0ZXIuICBUaGUgc3RyaW5nIGluY2x1ZGVzCisgICAgICAgIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlICc6ICcgc2VwYXJhdG9yLgorCisgICAgICAgICIiIgorICAgICAgICAjIEF0IHNvbWUgcG9pbnQgd2UgbmVlZCB0byBvbmx5IHB1dCBmd3MgaGVyZSBpZiBpdCB3YXMgaW4gdGhlIHNvdXJjZS4KKyAgICAgICAgaGVhZGVyID0gcGFyc2VyLkhlYWRlcihbCisgICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoWworICAgICAgICAgICAgICAgIHBhcnNlci5WYWx1ZVRlcm1pbmFsKHNlbGYubmFtZSwgJ2hlYWRlci1uYW1lJyksCisgICAgICAgICAgICAgICAgcGFyc2VyLlZhbHVlVGVybWluYWwoJzonLCAnaGVhZGVyLXNlcCcpXSksCisgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VfdHJlZV0pCisgICAgICAgIHJldHVybiBoZWFkZXIuZm9sZChwb2xpY3k9cG9saWN5KQorCisKK2RlZiBfcmVjb25zdHJ1Y3RfaGVhZGVyKGNsc19uYW1lLCBiYXNlcywgdmFsdWUpOgorICAgIHJldHVybiB0eXBlKGNsc19uYW1lLCBiYXNlcywge30pLl9yZWNvbnN0cnVjdCh2YWx1ZSkKKworCitjbGFzcyBVbnN0cnVjdHVyZWRIZWFkZXI6CisKKyAgICBtYXhfY291bnQgPSBOb25lCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIoa3dkc1sncGFyc2VfdHJlZSddKQorCisKK2NsYXNzIFVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcihVbnN0cnVjdHVyZWRIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIERhdGVIZWFkZXI6CisKKyAgICAiIiJIZWFkZXIgd2hvc2UgdmFsdWUgY29uc2lzdHMgb2YgYSBzaW5nbGUgdGltZXN0YW1wLgorCisgICAgUHJvdmlkZXMgYW4gYWRkaXRpb25hbCBhdHRyaWJ1dGUsIGRhdGV0aW1lLCB3aGljaCBpcyBlaXRoZXIgYW4gYXdhcmUKKyAgICBkYXRldGltZSB1c2luZyBhIHRpbWV6b25lLCBvciBhIG5haXZlIGRhdGV0aW1lIGlmIHRoZSB0aW1lem9uZQorICAgIGluIHRoZSBpbnB1dCBzdHJpbmcgaXMgLTAwMDAuICBBbHNvIGFjY2VwdHMgYSBkYXRldGltZSBhcyBpbnB1dC4KKyAgICBUaGUgJ3ZhbHVlJyBhdHRyaWJ1dGUgaXMgdGhlIG5vcm1hbGl6ZWQgZm9ybSBvZiB0aGUgdGltZXN0YW1wLAorICAgIHdoaWNoIG1lYW5zIGl0IGlzIHRoZSBvdXRwdXQgb2YgZm9ybWF0X2RhdGV0aW1lIG9uIHRoZSBkYXRldGltZS4KKyAgICAiIiIKKworICAgIG1heF9jb3VudCA9IE5vbmUKKworICAgICMgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIGZvbGRpbmcsIG5vdCBmb3IgY3JlYXRpbmcgJ2RlY29kZWQnLgorICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAga3dkc1snZGVmZWN0cyddLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoKSkKKyAgICAgICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSBOb25lCisgICAgICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSAnJworICAgICAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VyLlRva2VuTGlzdCgpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgIHZhbHVlID0gdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHZhbHVlKQorICAgICAgICBrd2RzWydkYXRldGltZSddID0gdmFsdWUKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gdXRpbHMuZm9ybWF0X2RhdGV0aW1lKGt3ZHNbJ2RhdGV0aW1lJ10pCisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIoa3dkc1snZGVjb2RlZCddKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl9kYXRldGltZSA9IGt3LnBvcCgnZGF0ZXRpbWUnKQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kYXRldGltZQorCisKK2NsYXNzIFVuaXF1ZURhdGVIZWFkZXIoRGF0ZUhlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgQWRkcmVzc0hlYWRlcjoKKworICAgIG1heF9jb3VudCA9IE5vbmUKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgdmFsdWVfcGFyc2VyKHZhbHVlKToKKyAgICAgICAgYWRkcmVzc19saXN0LCB2YWx1ZSA9IHBhcnNlci5nZXRfYWRkcmVzc19saXN0KHZhbHVlKQorICAgICAgICBhc3NlcnQgbm90IHZhbHVlLCAndGhpcyBzaG91bGQgbm90IGhhcHBlbicKKyAgICAgICAgcmV0dXJuIGFkZHJlc3NfbGlzdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgIyBXZSBhcmUgdHJhbnNsYXRpbmcgaGVyZSBmcm9tIHRoZSBSRkMgbGFuZ3VhZ2UgKGFkZHJlc3MvbWFpbGJveCkKKyAgICAgICAgICAgICMgdG8gb3VyIEFQSSBsYW5ndWFnZSAoZ3JvdXAvYWRkcmVzcykuCisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBhZGRyZXNzX2xpc3QgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICAgICAgZ3JvdXBzID0gW10KKyAgICAgICAgICAgIGZvciBhZGRyIGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXM6CisgICAgICAgICAgICAgICAgZ3JvdXBzLmFwcGVuZChHcm91cChhZGRyLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBZGRyZXNzKG1iLmRpc3BsYXlfbmFtZSBvciAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmxvY2FsX3BhcnQgb3IgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYi5kb21haW4gb3IgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG1iIGluIGFkZHIuYWxsX21haWxib3hlc10pKQorICAgICAgICAgICAgZGVmZWN0cyA9IGxpc3QoYWRkcmVzc19saXN0LmFsbF9kZWZlY3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgQWRkcmVzcy9Hcm91cCBzdHVmZgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodmFsdWUsICdfX2l0ZXJfXycpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gW3ZhbHVlXQorICAgICAgICAgICAgZ3JvdXBzID0gW0dyb3VwKE5vbmUsIFtpdGVtXSkgaWYgbm90IGhhc2F0dHIoaXRlbSwgJ2FkZHJlc3NlcycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHZhbHVlXQorICAgICAgICAgICAgZGVmZWN0cyA9IFtdCisgICAgICAgIGt3ZHNbJ2dyb3VwcyddID0gZ3JvdXBzCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXSA9IGRlZmVjdHMKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gJywgJy5qb2luKFtzdHIoaXRlbSkgZm9yIGl0ZW0gaW4gZ3JvdXBzXSkKKyAgICAgICAgaWYgJ3BhcnNlX3RyZWUnIG5vdCBpbiBrd2RzOgorICAgICAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gY2xzLnZhbHVlX3BhcnNlcihrd2RzWydkZWNvZGVkJ10pCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX2dyb3VwcyA9IHR1cGxlKGt3LnBvcCgnZ3JvdXBzJykpCisgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGdyb3VwcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2dyb3VwcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYWRkcmVzc2VzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9hZGRyZXNzZXMgPSB0dXBsZShbYWRkcmVzcyBmb3IgZ3JvdXAgaW4gc2VsZi5fZ3JvdXBzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWRkcmVzcyBpbiBncm91cC5hZGRyZXNzZXNdKQorICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc2VzCisKKworY2xhc3MgVW5pcXVlQWRkcmVzc0hlYWRlcihBZGRyZXNzSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBTaW5nbGVBZGRyZXNzSGVhZGVyKEFkZHJlc3NIZWFkZXIpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3Moc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmLmFkZHJlc3NlcykhPTE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCgidmFsdWUgb2Ygc2luZ2xlIGFkZHJlc3MgaGVhZGVyIHt9IGlzIG5vdCAiCisgICAgICAgICAgICAgICAgImEgc2luZ2xlIGFkZHJlc3MiKS5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuYWRkcmVzc2VzWzBdCisKKworY2xhc3MgVW5pcXVlU2luZ2xlQWRkcmVzc0hlYWRlcihTaW5nbGVBZGRyZXNzSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBNSU1FVmVyc2lvbkhlYWRlcjoKKworICAgIG1heF9jb3VudCA9IDEKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfbWltZV92ZXJzaW9uKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKyAgICAgICAga3dkc1snbWFqb3InXSA9IE5vbmUgaWYgcGFyc2VfdHJlZS5taW5vciBpcyBOb25lIGVsc2UgcGFyc2VfdHJlZS5tYWpvcgorICAgICAgICBrd2RzWydtaW5vciddID0gcGFyc2VfdHJlZS5taW5vcgorICAgICAgICBpZiBwYXJzZV90cmVlLm1pbm9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAga3dkc1sndmVyc2lvbiddID0gJ3t9Lnt9Jy5mb3JtYXQoa3dkc1snbWFqb3InXSwga3dkc1snbWlub3InXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGt3ZHNbJ3ZlcnNpb24nXSA9IE5vbmUKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IGt3LnBvcCgndmVyc2lvbicpCisgICAgICAgIHNlbGYuX21ham9yID0ga3cucG9wKCdtYWpvcicpCisgICAgICAgIHNlbGYuX21pbm9yID0ga3cucG9wKCdtaW5vcicpCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWpvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21ham9yCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWlub3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9taW5vcgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKworY2xhc3MgUGFyYW1ldGVyaXplZE1JTUVIZWFkZXI6CisKKyAgICAjIE1peGluIHRoYXQgaGFuZGxlcyB0aGUgcGFyYW1zIGRpY3QuICBNdXN0IGJlIHN1YmNsYXNzZWQgYW5kCisgICAgIyBhIHByb3BlcnR5IHZhbHVlX3BhcnNlciBmb3IgdGhlIHNwZWNpZmljIGhlYWRlciBwcm92aWRlZC4KKworICAgIG1heF9jb3VudCA9IDEKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwYXJzZShjbHMsIHZhbHVlLCBrd2RzKToKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gcGFyc2VfdHJlZSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihwYXJzZV90cmVlKQorICAgICAgICBrd2RzWydkZWZlY3RzJ10uZXh0ZW5kKHBhcnNlX3RyZWUuYWxsX2RlZmVjdHMpCisgICAgICAgIGlmIHBhcnNlX3RyZWUucGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBrd2RzWydwYXJhbXMnXSA9IHt9CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoZSBNSU1FIFJGQ3Mgc3BlY2lmeSB0aGF0IHBhcmFtZXRlciBvcmRlcmluZyBpcyBhcmJpdHJhcnkuCisgICAgICAgICAgICBrd2RzWydwYXJhbXMnXSA9IHt1dGlscy5fc2FuaXRpemUobmFtZSkubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLl9zYW5pdGl6ZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcGFyc2VfdHJlZS5wYXJhbXN9CisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX3BhcmFtcyA9IGt3LnBvcCgncGFyYW1zJykKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtcy5jb3B5KCkKKworCitjbGFzcyBDb250ZW50VHlwZUhlYWRlcihQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcik6CisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfdHlwZV9oZWFkZXIpCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5fbWFpbnR5cGUgPSB1dGlscy5fc2FuaXRpemUoc2VsZi5fcGFyc2VfdHJlZS5tYWludHlwZSkKKyAgICAgICAgc2VsZi5fc3VidHlwZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLnN1YnR5cGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbnR5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYWludHlwZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN1YnR5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zdWJ0eXBlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudF90eXBlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5tYWludHlwZSArICcvJyArIHNlbGYuc3VidHlwZQorCisKK2NsYXNzIENvbnRlbnREaXNwb3NpdGlvbkhlYWRlcihQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcik6CisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisgICAgICAgIGNkID0gc2VsZi5fcGFyc2VfdHJlZS5jb250ZW50X2Rpc3Bvc2l0aW9uCisgICAgICAgIHNlbGYuX2NvbnRlbnRfZGlzcG9zaXRpb24gPSBjZCBpZiBjZCBpcyBOb25lIGVsc2UgdXRpbHMuX3Nhbml0aXplKGNkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnRfZGlzcG9zaXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jb250ZW50X2Rpc3Bvc2l0aW9uCisKKworY2xhc3MgQ29udGVudFRyYW5zZmVyRW5jb2RpbmdIZWFkZXI6CisKKyAgICBtYXhfY291bnQgPSAxCisKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLnBhcnNlX2NvbnRlbnRfdHJhbnNmZXJfZW5jb2RpbmdfaGVhZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9jdGUgPSB1dGlscy5fc2FuaXRpemUoc2VsZi5fcGFyc2VfdHJlZS5jdGUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY3RlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fY3RlCisKKworIyBUaGUgaGVhZGVyIGZhY3RvcnkgIworCitfZGVmYXVsdF9oZWFkZXJfbWFwID0geworICAgICdzdWJqZWN0JzogICAgICAgICAgICAgICAgICAgICAgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyLAorICAgICdkYXRlJzogICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlRGF0ZUhlYWRlciwKKyAgICAncmVzZW50LWRhdGUnOiAgICAgICAgICAgICAgICAgIERhdGVIZWFkZXIsCisgICAgJ29yaWctZGF0ZSc6ICAgICAgICAgICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyLAorICAgICdzZW5kZXInOiAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlU2luZ2xlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LXNlbmRlcic6ICAgICAgICAgICAgICAgIFNpbmdsZUFkZHJlc3NIZWFkZXIsCisgICAgJ3RvJzogICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtdG8nOiAgICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAnY2MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1jYyc6ICAgICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdiY2MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LWJjYyc6ICAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ2Zyb20nOiAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtZnJvbSc6ICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAncmVwbHktdG8nOiAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ21pbWUtdmVyc2lvbic6ICAgICAgICAgICAgICAgICBNSU1FVmVyc2lvbkhlYWRlciwKKyAgICAnY29udGVudC10eXBlJzogICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlSGVhZGVyLAorICAgICdjb250ZW50LWRpc3Bvc2l0aW9uJzogICAgICAgICAgQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyLAorICAgICdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJzogICAgQ29udGVudFRyYW5zZmVyRW5jb2RpbmdIZWFkZXIsCisgICAgfQorCitjbGFzcyBIZWFkZXJSZWdpc3RyeToKKworICAgICIiIkEgaGVhZGVyX2ZhY3RvcnkgYW5kIGhlYWRlciByZWdpc3RyeS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlX2NsYXNzPUJhc2VIZWFkZXIsIGRlZmF1bHRfY2xhc3M9VW5zdHJ1Y3R1cmVkSGVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICB1c2VfZGVmYXVsdF9tYXA9VHJ1ZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIGhlYWRlcl9mYWN0b3J5IHRoYXQgd29ya3Mgd2l0aCB0aGUgUG9saWN5IEFQSS4KKworICAgICAgICBiYXNlX2NsYXNzIGlzIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUgdGhlIGxhc3QgY2xhc3MgaW4gdGhlIGNyZWF0ZWQKKyAgICAgICAgaGVhZGVyIGNsYXNzJ3MgX19iYXNlc19fIGxpc3QuICBkZWZhdWx0X2NsYXNzIGlzIHRoZSBjbGFzcyB0aGF0IHdpbGwgYmUKKyAgICAgICAgdXNlZCBpZiAibmFtZSIgKHNlZSBfX2NhbGxfXykgZG9lcyBub3QgYXBwZWFyIGluIHRoZSByZWdpc3RyeS4KKyAgICAgICAgdXNlX2RlZmF1bHRfbWFwIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBkZWZhdWx0IG1hcHBpbmcgb2YgbmFtZXMgdG8KKyAgICAgICAgc3BlY2lhbGl6ZWQgY2xhc3NlcyBpcyBjb3BpZWQgaW4gdG8gdGhlIHJlZ2lzdHJ5IHdoZW4gdGhlIGZhY3RvcnkgaXMKKyAgICAgICAgY3JlYXRlZC4gIFRoZSBkZWZhdWx0IGlzIFRydWUuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucmVnaXN0cnkgPSB7fQorICAgICAgICBzZWxmLmJhc2VfY2xhc3MgPSBiYXNlX2NsYXNzCisgICAgICAgIHNlbGYuZGVmYXVsdF9jbGFzcyA9IGRlZmF1bHRfY2xhc3MKKyAgICAgICAgaWYgdXNlX2RlZmF1bHRfbWFwOgorICAgICAgICAgICAgc2VsZi5yZWdpc3RyeS51cGRhdGUoX2RlZmF1bHRfaGVhZGVyX21hcCkKKworICAgIGRlZiBtYXBfdG9fdHlwZShzZWxmLCBuYW1lLCBjbHMpOgorICAgICAgICAiIiJSZWdpc3RlciBjbHMgYXMgdGhlIHNwZWNpYWxpemVkIGNsYXNzIGZvciBoYW5kbGluZyAibmFtZSIgaGVhZGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZWdpc3RyeVtuYW1lLmxvd2VyKCldID0gY2xzCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGNscyA9IHNlbGYucmVnaXN0cnkuZ2V0KG5hbWUubG93ZXIoKSwgc2VsZi5kZWZhdWx0X2NsYXNzKQorICAgICAgICByZXR1cm4gdHlwZSgnXycrY2xzLl9fbmFtZV9fLCAoY2xzLCBzZWxmLmJhc2VfY2xhc3MpLCB7fSkKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIGhlYWRlciBpbnN0YW5jZSBmb3IgaGVhZGVyICduYW1lJyBmcm9tICd2YWx1ZScuCisKKyAgICAgICAgQ3JlYXRlcyBhIGhlYWRlciBpbnN0YW5jZSBieSBjcmVhdGluZyBhIHNwZWNpYWxpemVkIGNsYXNzIGZvciBwYXJzaW5nCisgICAgICAgIGFuZCByZXByZXNlbnRpbmcgdGhlIHNwZWNpZmllZCBoZWFkZXIgYnkgY29tYmluaW5nIHRoZSBmYWN0b3J5CisgICAgICAgIGJhc2VfY2xhc3Mgd2l0aCBhIHNwZWNpYWxpemVkIGNsYXNzIGZyb20gdGhlIHJlZ2lzdHJ5IG9yIHRoZQorICAgICAgICBkZWZhdWx0X2NsYXNzLCBhbmQgcGFzc2luZyB0aGUgbmFtZSBhbmQgdmFsdWUgdG8gdGhlIGNvbnN0cnVjdGVkCisgICAgICAgIGNsYXNzJ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmW25hbWVdKG5hbWUsIHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWVzc2FnZS5weQppbmRleCBmMWZmY2RiLi4zZmVhYjUyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWVzc2FnZS5weQpAQCAtMTAsMTQgKzEwLDE0IEBACiBpbXBvcnQgdXUKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBiaW5hc2NpaQotaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogCiAjIEludHJhcGFja2FnZSBpbXBvcnRzCiBmcm9tIGVtYWlsIGltcG9ydCB1dGlscwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsIGltcG9ydCBoZWFkZXIKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0Citmcm9tIGVtYWlsLl9lbmNvZGVkX3dvcmRzIGltcG9ydCBkZWNvZGVfYgogQ2hhcnNldCA9IF9jaGFyc2V0LkNoYXJzZXQKIAogU0VNSVNQQUNFID0gJzsgJwpAQCAtMjYsMjQgKzI2LDYgQEAKICMgZXhpc3RlbmNlIG9mIHdoaWNoIGZvcmNlIHF1b3Rpbmcgb2YgdGhlIHBhcmFtZXRlciB2YWx1ZS4KIHRzcGVjaWFscyA9IHJlLmNvbXBpbGUocidbIFwoXCk8PkAsOzpcXCIvXFtcXVw/PV0nKQogCi0jIEhvdyB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBwcm9jZXNzaW5nIHN0cmluZ3MgdGhhdCBjb21lIGZyb20gYSBieXRlCi0jIHNvdXJjZSB3aXRoIHVuZGVjb2RhYmxlIGNoYXJhY3RlcnMuCi1faGFzX3N1cnJvZ2F0ZXMgPSByZS5jb21waWxlKAotICAgICcoW15cdWQ4MDAtXHVkYmZmXXxcQSlbXHVkYzAwLVx1ZGZmZl0oW15cdWRjMDAtXHVkZmZmXXxcWiknKS5zZWFyY2gKLQotCi0jIEhlbHBlciBmdW5jdGlvbnMKLWRlZiBfc2FuaXRpemVfaGVhZGVyKG5hbWUsIHZhbHVlKToKLSAgICAjIElmIHRoZSBoZWFkZXIgdmFsdWUgY29udGFpbnMgc3Vycm9nYXRlcywgcmV0dXJuIGEgSGVhZGVyIHVzaW5nCi0gICAgIyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQgdG8gZW5jb2RlIHRoZSBieXRlcyBhcyBlbmNvZGVkIHdvcmRzLgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAjIEFzc3VtZSBpdCBpcyBhbHJlYWR5IGEgaGVhZGVyIG9iamVjdAotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBpZiBfaGFzX3N1cnJvZ2F0ZXModmFsdWUpOgotICAgICAgICByZXR1cm4gaGVhZGVyLkhlYWRlcih2YWx1ZSwgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9bmFtZSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gdmFsdWUKIAogZGVmIF9zcGxpdHBhcmFtKHBhcmFtKToKICAgICAjIFNwbGl0IGhlYWRlciBwYXJhbWV0ZXJzLiAgQkFXOiB0aGlzIG1heSBiZSB0b28gc2ltcGxlLiAgSXQgaXNuJ3QKQEAgLTEzNiw3ICsxMTgsOCBAQAogICAgIHlvdSBtdXN0IHVzZSB0aGUgZXhwbGljaXQgQVBJIHRvIHNldCBvciBnZXQgYWxsIHRoZSBoZWFkZXJzLiAgTm90IGFsbCBvZgogICAgIHRoZSBtYXBwaW5nIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9saWN5PWNvbXBhdDMyKToKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKICAgICAgICAgc2VsZi5faGVhZGVycyA9IFtdCiAgICAgICAgIHNlbGYuX3VuaXhmcm9tID0gTm9uZQogICAgICAgICBzZWxmLl9wYXlsb2FkID0gTm9uZQpAQCAtMjQ2LDcgKzIyOSw3IEBACiAgICAgICAgIGN0ZSA9IHN0cihzZWxmLmdldCgnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycsICcnKSkubG93ZXIoKQogICAgICAgICAjIHBheWxvYWQgbWF5IGJlIGJ5dGVzIGhlcmUuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgc3RyKToKLSAgICAgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhwYXlsb2FkKToKKyAgICAgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyhwYXlsb2FkKToKICAgICAgICAgICAgICAgICBicGF5bG9hZCA9IHBheWxvYWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkZWNvZGU6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKQEAgLTI2NywxMSArMjUwLDEyIEBACiAgICAgICAgIGlmIGN0ZSA9PSAncXVvdGVkLXByaW50YWJsZSc6CiAgICAgICAgICAgICByZXR1cm4gdXRpbHMuX3FkZWNvZGUoYnBheWxvYWQpCiAgICAgICAgIGVsaWYgY3RlID09ICdiYXNlNjQnOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBiYXNlNjQuYjY0ZGVjb2RlKGJwYXlsb2FkKQotICAgICAgICAgICAgZXhjZXB0IGJpbmFzY2lpLkVycm9yOgotICAgICAgICAgICAgICAgICMgSW5jb3JyZWN0IHBhZGRpbmcKLSAgICAgICAgICAgICAgICByZXR1cm4gYnBheWxvYWQKKyAgICAgICAgICAgICMgWFhYOiB0aGlzIGlzIGEgYml0IG9mIGEgaGFjazsgZGVjb2RlX2Igc2hvdWxkIHByb2JhYmx5IGJlIGZhY3RvcmVkCisgICAgICAgICAgICAjIG91dCBzb21ld2hlcmUsIGJ1dCBJIGhhdmVuJ3QgZmlndXJlZCBvdXQgd2hlcmUgeWV0LgorICAgICAgICAgICAgdmFsdWUsIGRlZmVjdHMgPSBkZWNvZGVfYihiJycuam9pbihicGF5bG9hZC5zcGxpdGxpbmVzKCkpKQorICAgICAgICAgICAgZm9yIGRlZmVjdCBpbiBkZWZlY3RzOgorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZiwgZGVmZWN0KQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCiAgICAgICAgIGVsaWYgY3RlIGluICgneC11dWVuY29kZScsICd1dWVuY29kZScsICd1dWUnLCAneC11dWUnKToKICAgICAgICAgICAgIGluX2ZpbGUgPSBCeXRlc0lPKGJwYXlsb2FkKQogICAgICAgICAgICAgb3V0X2ZpbGUgPSBCeXRlc0lPKCkKQEAgLTM2Miw3ICszNDYsMTcgQEAKICAgICAgICAgTm90ZTogdGhpcyBkb2VzIG5vdCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUgZmllbGQKICAgICAgICAgbmFtZS4gIFVzZSBfX2RlbGl0ZW1fXygpIGZpcnN0IHRvIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVycy4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKChuYW1lLCB2YWwpKQorICAgICAgICBtYXhfY291bnQgPSBzZWxmLnBvbGljeS5oZWFkZXJfbWF4X2NvdW50KG5hbWUpCisgICAgICAgIGlmIG1heF9jb3VudDoKKyAgICAgICAgICAgIGxuYW1lID0gbmFtZS5sb3dlcigpCisgICAgICAgICAgICBmb3VuZCA9IDAKKyAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CisgICAgICAgICAgICAgICAgaWYgay5sb3dlcigpID09IGxuYW1lOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIGZvdW5kID49IG1heF9jb3VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZXJlIG1heSBiZSBhdCBtb3N0IHt9IHt9IGhlYWRlcnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gYSBtZXNzYWdlIi5mb3JtYXQobWF4X2NvdW50LCBuYW1lKSkKKyAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbCkpCiAKICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICIiIkRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgYSBoZWFkZXIsIGlmIHByZXNlbnQuCkBAIC00MDEsNyArMzk1LDggQEAKICAgICAgICAgQW55IGZpZWxkcyBkZWxldGVkIGFuZCByZS1pbnNlcnRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBoZWFkZXIKICAgICAgICAgbGlzdC4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbX3Nhbml0aXplX2hlYWRlcihrLCB2KSBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzXQorICAgICAgICByZXR1cm4gW3NlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCiAKICAgICBkZWYgaXRlbXMoc2VsZik6CiAgICAgICAgICIiIkdldCBhbGwgdGhlIG1lc3NhZ2UncyBoZWFkZXIgZmllbGRzIGFuZCB2YWx1ZXMuCkBAIC00MTEsNyArNDA2LDggQEAKICAgICAgICAgQW55IGZpZWxkcyBkZWxldGVkIGFuZCByZS1pbnNlcnRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBoZWFkZXIKICAgICAgICAgbGlzdC4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbKGssIF9zYW5pdGl6ZV9oZWFkZXIoaywgdikpIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCisgICAgICAgIHJldHVybiBbKGssIHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KSkKKyAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzXQogCiAgICAgZGVmIGdldChzZWxmLCBuYW1lLCBmYWlsb2JqPU5vbmUpOgogICAgICAgICAiIiJHZXQgYSBoZWFkZXIgdmFsdWUuCkBAIC00MjIsMTAgKzQxOCwyOSBAQAogICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpCiAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnM6CiAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX3Nhbml0aXplX2hlYWRlcihrLCB2KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBvbGljeS5oZWFkZXJfZmV0Y2hfcGFyc2UoaywgdikKICAgICAgICAgcmV0dXJuIGZhaWxvYmoKIAogICAgICMKKyAgICAjICJJbnRlcm5hbCIgbWV0aG9kcyAocHVibGljIEFQSSwgYnV0IG9ubHkgaW50ZW5kZWQgZm9yIHVzZSBieSBhIHBhcnNlcgorICAgICMgb3IgZ2VuZXJhdG9yLCBub3Qgbm9ybWFsIGFwcGxpY2F0aW9uIGNvZGUuCisgICAgIworCisgICAgZGVmIHNldF9yYXcoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiJTdG9yZSBuYW1lIGFuZCB2YWx1ZSBpbiB0aGUgbW9kZWwgd2l0aG91dCBtb2RpZmljYXRpb24uCisKKyAgICAgICAgVGhpcyBpcyBhbiAiaW50ZXJuYWwiIEFQSSwgaW50ZW5kZWQgb25seSBmb3IgdXNlIGJ5IGEgcGFyc2VyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKKworICAgIGRlZiByYXdfaXRlbXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgKG5hbWUsIHZhbHVlKSBoZWFkZXIgcGFpcnMgd2l0aG91dCBtb2RpZmljYXRpb24uCisKKyAgICAgICAgVGhpcyBpcyBhbiAiaW50ZXJuYWwiIEFQSSwgaW50ZW5kZWQgb25seSBmb3IgdXNlIGJ5IGEgZ2VuZXJhdG9yLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5faGVhZGVycy5jb3B5KCkpCisKKyAgICAjCiAgICAgIyBBZGRpdGlvbmFsIHVzZWZ1bCBzdHVmZgogICAgICMKIApAQCAtNDQyLDcgKzQ1Nyw3IEBACiAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoX3Nhbml0aXplX2hlYWRlcihrLCB2KSkKKyAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KSkKICAgICAgICAgaWYgbm90IHZhbHVlczoKICAgICAgICAgICAgIHJldHVybiBmYWlsb2JqCiAgICAgICAgIHJldHVybiB2YWx1ZXMKQEAgLTQ3NSw3ICs0OTAsNyBAQAogICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChfZm9ybWF0cGFyYW0oay5yZXBsYWNlKCdfJywgJy0nKSwgdikpCiAgICAgICAgIGlmIF92YWx1ZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHBhcnRzLmluc2VydCgwLCBfdmFsdWUpCi0gICAgICAgIHNlbGYuX2hlYWRlcnMuYXBwZW5kKChfbmFtZSwgU0VNSVNQQUNFLmpvaW4ocGFydHMpKSkKKyAgICAgICAgc2VsZltfbmFtZV0gPSBTRU1JU1BBQ0Uuam9pbihwYXJ0cykKIAogICAgIGRlZiByZXBsYWNlX2hlYWRlcihzZWxmLCBfbmFtZSwgX3ZhbHVlKToKICAgICAgICAgIiIiUmVwbGFjZSBhIGhlYWRlci4KQEAgLTQ4Nyw3ICs1MDIsNyBAQAogICAgICAgICBfbmFtZSA9IF9uYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGksIChrLCB2KSBpbiB6aXAocmFuZ2UobGVuKHNlbGYuX2hlYWRlcnMpKSwgc2VsZi5faGVhZGVycyk6CiAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gX25hbWU6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc1tpXSA9IChrLCBfdmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc1tpXSA9IHNlbGYucG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZShrLCBfdmFsdWUpCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKF9uYW1lKQpAQCAtODAzLDcgKzgxOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoaykKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXM9JXMnICUgKGssIHYpKQotICAgICAgICAgICAgICAgIG5ld2hlYWRlcnMuYXBwZW5kKChoLCBTRU1JU1BBQ0Uuam9pbihwYXJ0cykpKQorICAgICAgICAgICAgICAgIHZhbCA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQorICAgICAgICAgICAgICAgIG5ld2hlYWRlcnMuYXBwZW5kKHNlbGYucG9saWN5LmhlYWRlcl9zdG9yZV9wYXJzZShoLCB2YWwpKQogCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2hlYWRlcnMuYXBwZW5kKChoLCB2KSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CmluZGV4IDU3NDdkYjUuLjgwZmY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQpAQCAtMTQsNyArMTQsNyBAQAogY2xhc3MgTUlNRVRleHQoTUlNRU5vbk11bHRpcGFydCk6CiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PSd1cy1hc2NpaScpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX3RleHQgaXMgdGhlIHN0cmluZyBmb3IgdGhpcyBtZXNzYWdlIG9iamVjdC4KQEAgLTI1LDYgKzI1LDE4IEBACiAgICAgICAgIGhlYWRlci4gIFRoaXMgZGVmYXVsdHMgdG8gInVzLWFzY2lpIi4gIE5vdGUgdGhhdCBhcyBhIHNpZGUtZWZmZWN0LCB0aGUKICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhbHNvIGJlIHNldC4KICAgICAgICAgIiIiCisKKyAgICAgICAgIyBJZiBubyBfY2hhcnNldCB3YXMgc3BlY2lmaWVkLCBjaGVjayB0byBzZWUgc2VlIGlmIHRoZXJlIGFyZSBub24tYXNjaWkKKyAgICAgICAgIyBjaGFyYWN0ZXJzIHByZXNlbnQuIElmIG5vdCwgdXNlICd1cy1hc2NpaScsIG90aGVyd2lzZSB1c2UgdXRmLTguCisgICAgICAgICMgWFhYOiBUaGlzIGNhbiBiZSByZW1vdmVkIG9uY2UgIzczMDQgaXMgZml4ZWQuCisgICAgICAgIGlmIF9jaGFyc2V0IGlzIE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgX3RleHQuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXMtYXNjaWknCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3V0Zi04JworCiAgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IF9jaGFyc2V0fSkKKwogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF90ZXh0LCBfY2hhcnNldCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wYXJzZXIucHkgYi9MaWIvZW1haWwvcGFyc2VyLnB5CmluZGV4IDFjOTMxZWEuLjFhYWIwMTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9wYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL3BhcnNlci5weQpAQCAtNCwxOCArNCwxOSBAQAogCiAiIiJBIHBhcnNlciBvZiBSRkMgMjgyMiBhbmQgTUlNRSBlbWFpbCBtZXNzYWdlcy4iIiIKIAotX19hbGxfXyA9IFsnUGFyc2VyJywgJ0hlYWRlclBhcnNlcicsICdCeXRlc1BhcnNlciddCitfX2FsbF9fID0gWydQYXJzZXInLCAnSGVhZGVyUGFyc2VyJywgJ0J5dGVzUGFyc2VyJywgJ0J5dGVzSGVhZGVyUGFyc2VyJ10KIAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgVGV4dElPV3JhcHBlcgogCiBmcm9tIGVtYWlsLmZlZWRwYXJzZXIgaW1wb3J0IEZlZWRQYXJzZXIKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIAogCiAMCiBjbGFzcyBQYXJzZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9jbGFzcz1NZXNzYWdlLCAqLCBwb2xpY3k9Y29tcGF0MzIpOgogICAgICAgICAiIiJQYXJzZXIgb2YgUkZDIDI4MjIgYW5kIE1JTUUgZW1haWwgbWVzc2FnZXMuCiAKICAgICAgICAgQ3JlYXRlcyBhbiBpbi1tZW1vcnkgb2JqZWN0IHRyZWUgcmVwcmVzZW50aW5nIHRoZSBlbWFpbCBtZXNzYWdlLCB3aGljaApAQCAtMzAsMjggKzMxLDE0IEBACiAgICAgICAgIF9jbGFzcyBpcyB0aGUgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIG5ldyBtZXNzYWdlIG9iamVjdHMgd2hlbiB0aGV5CiAgICAgICAgIG11c3QgYmUgY3JlYXRlZC4gIFRoaXMgY2xhc3MgbXVzdCBoYXZlIGEgY29uc3RydWN0b3IgdGhhdCBjYW4gdGFrZQogICAgICAgICB6ZXJvIGFyZ3VtZW50cy4gIERlZmF1bHQgaXMgTWVzc2FnZS5NZXNzYWdlLgorCisgICAgICAgIFRoZSBwb2xpY3kga2V5d29yZCBzcGVjaWZpZXMgYSBwb2xpY3kgb2JqZWN0IHRoYXQgY29udHJvbHMgYSBudW1iZXIgb2YKKyAgICAgICAgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCiAgICAgICAgICIiIgotICAgICAgICBpZiBsZW4oYXJncykgPj0gMToKLSAgICAgICAgICAgIGlmICdfY2xhc3MnIGluIGt3czoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmcgJ19jbGFzcyciKQotICAgICAgICAgICAga3dzWydfY2xhc3MnXSA9IGFyZ3NbMF0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICBpZiAnc3RyaWN0JyBpbiBrd3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJNdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJnICdzdHJpY3QnIikKLSAgICAgICAgICAgIGt3c1snc3RyaWN0J10gPSBhcmdzWzFdCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDI6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1RvbyBtYW55IGFyZ3VtZW50cycpCi0gICAgICAgIGlmICdfY2xhc3MnIGluIGt3czoKLSAgICAgICAgICAgIHNlbGYuX2NsYXNzID0ga3dzWydfY2xhc3MnXQotICAgICAgICAgICAgZGVsIGt3c1snX2NsYXNzJ10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2NsYXNzID0gTWVzc2FnZQotICAgICAgICBpZiAnc3RyaWN0JyBpbiBrd3M6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCInc3RyaWN0JyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIChhbmQgaWdub3JlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWwga3dzWydzdHJpY3QnXQotICAgICAgICBpZiBrd3M6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1VuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudHMnKQorICAgICAgICBzZWxmLl9jbGFzcyA9IF9jbGFzcworICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGZwLCBoZWFkZXJzb25seT1GYWxzZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIG1lc3NhZ2Ugc3RydWN0dXJlIGZyb20gdGhlIGRhdGEgaW4gYSBmaWxlLgpAQCAtNjEsNyArNDgsNyBAQAogICAgICAgICBwYXJzaW5nIGFmdGVyIHJlYWRpbmcgdGhlIGhlYWRlcnMgb3Igbm90LiAgVGhlIGRlZmF1bHQgaXMgRmFsc2UsCiAgICAgICAgIG1lYW5pbmcgaXQgcGFyc2VzIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCiAgICAgICAgICIiIgotICAgICAgICBmZWVkcGFyc2VyID0gRmVlZFBhcnNlcihzZWxmLl9jbGFzcykKKyAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoc2VsZi5fY2xhc3MsIHBvbGljeT1zZWxmLnBvbGljeSkKICAgICAgICAgaWYgaGVhZGVyc29ubHk6CiAgICAgICAgICAgICBmZWVkcGFyc2VyLl9zZXRfaGVhZGVyc29ubHkoKQogICAgICAgICB3aGlsZSBUcnVlOgpAQCAtMTM0LDMgKzEyMSwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHRleHQuZGVjb2RlKCdBU0NJSScsIGVycm9ycz0nc3Vycm9nYXRlZXNjYXBlJykKICAgICAgICAgcmV0dXJuIHNlbGYucGFyc2VyLnBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5KQorCisKK2NsYXNzIEJ5dGVzSGVhZGVyUGFyc2VyKEJ5dGVzUGFyc2VyKToKKyAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PVRydWUpOgorICAgICAgICByZXR1cm4gQnl0ZXNQYXJzZXIucGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PVRydWUpCisKKyAgICBkZWYgcGFyc2VieXRlcyhzZWxmLCB0ZXh0LCBoZWFkZXJzb25seT1UcnVlKToKKyAgICAgICAgcmV0dXJuIEJ5dGVzUGFyc2VyLnBhcnNlYnl0ZXMoc2VsZiwgdGV4dCwgaGVhZGVyc29ubHk9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wb2xpY3kucHkgYi9MaWIvZW1haWwvcG9saWN5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2FkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC0wLDAgKzEsMTg4IEBACisiIiJUaGlzIHdpbGwgYmUgdGhlIGhvbWUgZm9yIHRoZSBwb2xpY3kgdGhhdCBob29rcyBpbiB0aGUgbmV3Citjb2RlIHRoYXQgYWRkcyBhbGwgdGhlIGVtYWlsNiBmZWF0dXJlcy4KKyIiIgorCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBQb2xpY3ksIENvbXBhdDMyLCBjb21wYXQzMiwgX2V4dGVuZF9kb2NzdHJpbmdzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CisKK19fYWxsX18gPSBbCisgICAgJ0NvbXBhdDMyJywKKyAgICAnY29tcGF0MzInLAorICAgICdQb2xpY3knLAorICAgICdFbWFpbFBvbGljeScsCisgICAgJ2RlZmF1bHQnLAorICAgICdzdHJpY3QnLAorICAgICdTTVRQJywKKyAgICAnSFRUUCcsCisgICAgXQorCitAX2V4dGVuZF9kb2NzdHJpbmdzCitjbGFzcyBFbWFpbFBvbGljeShQb2xpY3kpOgorCisgICAgIiIiKworICAgIFBST1ZJU0lPTkFMCisKKyAgICBUaGUgQVBJIGV4dGVuc2lvbnMgZW5hYmxlZCBieSB0aGlzIHRoaXMgcG9saWN5IGFyZSBjdXJyZW50bHkgcHJvdmlzaW9uYWwuCisgICAgUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisKKyAgICBUaGlzIHBvbGljeSBhZGRzIG5ldyBoZWFkZXIgcGFyc2luZyBhbmQgZm9sZGluZyBhbGdvcml0aG1zLiAgSW5zdGVhZCBvZgorICAgIHNpbXBsZSBzdHJpbmdzLCBoZWFkZXJzIGFyZSBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBhdHRyaWJ1dGVzCisgICAgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC4gIFRoZSBmb2xkaW5nIGFsZ29yaXRobSBmdWxseQorICAgIGltcGxlbWVudHMgUkZDcyAyMDQ3IGFuZCA1MzIyLgorCisgICAgSW4gYWRkaXRpb24gdG8gdGhlIHNldHRhYmxlIGF0dHJpYnV0ZXMgbGlzdGVkIGFib3ZlIHRoYXQgYXBwbHkgdG8KKyAgICBhbGwgUG9saWNpZXMsIHRoaXMgcG9saWN5IGFkZHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CisKKyAgICByZWZvbGRfc291cmNlICAgICAgIC0tIGlmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIE1lc3NhZ2Ugb2JqZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1lIGZyb20gdGhlIHBhcnNpbmcgb2Ygc29tZSBzb3VyY2UsIHRoaXMgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBnZW5lcmF0b3Igc2hvdWxkIHJlZm9sZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB2YWx1ZSB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUgIC0tIGFsbCBzb3VyY2UgdmFsdWVzIHVzZSBvcmlnaW5hbCBmb2xkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICAtLSBzb3VyY2UgdmFsdWVzIHRoYXQgaGF2ZSBhbnkgbGluZSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nZXIgdGhhbiBtYXhfbGluZV9sZW5ndGggd2lsbCBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb2xkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbCAgLS0gYWxsIHZhbHVlcyBhcmUgcmVmb2xkZWQuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzICdsb25nJy4KKworICAgIGhlYWRlcl9mYWN0b3J5ICAgICAgLS0gYSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMsICduYW1lJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZScsIHdoZXJlICduYW1lJyBpcyBhIGhlYWRlciBmaWVsZCBuYW1lIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJyBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQgdmFsdWUsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyBhIHN0cmluZy1saWtlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLiAgQSBkZWZhdWx0IGhlYWRlcl9mYWN0b3J5IGlzIHByb3ZpZGVkIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIFJGQzUzMjIgaGVhZGVyIGZpZWxkIHR5cGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKEN1cnJlbnRseSBhZGRyZXNzIGZpZWxkcyBhbmQgZGF0ZSBmaWVsZHMgaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbCB0cmVhdG1lbnQsIHdoaWxlIGFsbCBvdGhlciBmaWVsZHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVhdGVkIGFzIHVuc3RydWN0dXJlZC4gIFRoaXMgbGlzdCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgYmVmb3JlIHRoZSBleHRlbnNpb24gaXMgbWFya2VkIHN0YWJsZS4pCisgICAgIiIiCisKKyAgICByZWZvbGRfc291cmNlID0gJ2xvbmcnCisgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CisgICAgICAgICMgRW5zdXJlIHRoYXQgZWFjaCBuZXcgaW5zdGFuY2UgZ2V0cyBhIHVuaXF1ZSBoZWFkZXIgZmFjdG9yeQorICAgICAgICAjIChhcyBvcHBvc2VkIHRvIGNsb25lcywgd2hpY2ggc2hhcmUgdGhlIGZhY3RvcnkpLgorICAgICAgICBpZiAnaGVhZGVyX2ZhY3RvcnknIG5vdCBpbiBrdzoKKyAgICAgICAgICAgIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCAnaGVhZGVyX2ZhY3RvcnknLCBIZWFkZXJSZWdpc3RyeSgpKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3cpCisKKyAgICBkZWYgaGVhZGVyX21heF9jb3VudChzZWxmLCBuYW1lKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgY2xhc3MgcmV0dXJucyB0aGUgbWF4X2NvdW50IGF0dHJpYnV0ZSBmcm9tCisgICAgICAgIHRoZSBzcGVjaWFsaXplZCBoZWFkZXIgY2xhc3MgdGhhdCB3b3VsZCBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhIGhlYWRlcgorICAgICAgICBvZiB0eXBlICduYW1lJy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5W25hbWVdLm1heF9jb3VudAorCisgICAgIyBUaGUgbG9naWMgb2YgdGhlIG5leHQgdGhyZWUgbWV0aG9kcyBpcyBjaG9zZW4gc3VjaCB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvCisgICAgIyBzd2l0Y2ggYSBNZXNzYWdlIG9iamVjdCBiZXR3ZWVuIGEgQ29tcGF0MzIgcG9saWN5IGFuZCBhIHBvbGljeSBkZXJpdmVkCisgICAgIyBmcm9tIHRoaXMgY2xhc3MgYW5kIGhhdmUgdGhlIHJlc3VsdHMgc3RheSBjb25zaXN0ZW50LiAgVGhpcyBhbGxvd3MgYQorICAgICMgTWVzc2FnZSBvYmplY3QgY29uc3RydWN0ZWQgd2l0aCB0aGlzIHBvbGljeSB0byBiZSBwYXNzZWQgdG8gYSBsaWJyYXJ5CisgICAgIyB0aGF0IG9ubHkgaGFuZGxlcyBDb21wYXQzMiBvYmplY3RzLCBvciB0byByZWNlaXZlIHN1Y2ggYW4gb2JqZWN0IGFuZAorICAgICMgY29udmVydCBpdCB0byB1c2UgdGhlIG5ld2VyIHN0eWxlIGJ5IGp1c3QgY2hhbmdpbmcgaXRzIHBvbGljeS4gIEl0IGlzCisgICAgIyBhbHNvIGNob3NlbiBiZWNhdXNlIGl0IHBvc3Rwb25lcyB0aGUgcmVsYXRpdmVseSBleHBlbnNpdmUgZnVsbCByZmM1MzIyCisgICAgIyBwYXJzZSB1bnRpbCBhcyBsYXRlIGFzIHBvc3NpYmxlIHdoZW4gcGFyc2luZyBmcm9tIHNvdXJjZSwgc2luY2UgaW4gbWFueQorICAgICMgYXBwbGljYXRpb25zIG9ubHkgYSBmZXcgaGVhZGVycyB3aWxsIGFjdHVhbGx5IGJlIGluc3BlY3RlZC4KKworICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJzonIGFuZCByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZiB0aGUKKyAgICAgICAgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLCBhbmQKKyAgICAgICAgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4gIChUaGlzCisgICAgICAgIGlzIHRoZSBzYW1lIGFzIENvbXBhdDMyKS4KKworICAgICAgICAiIiIKKyAgICAgICAgbmFtZSwgdmFsdWUgPSBzb3VyY2VsaW5lc1swXS5zcGxpdCgnOicsIDEpCisgICAgICAgIHZhbHVlID0gdmFsdWUubHN0cmlwKCcgXHQnKSArICcnLmpvaW4oc291cmNlbGluZXNbMTpdKQorICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlLnJzdHJpcCgnXHJcbicpKQorCisgICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiAgSWYgdGhlIGlucHV0IHZhbHVlIGhhcyBhICduYW1lJworICAgICAgICBhdHRyaWJ1dGUgYW5kIGl0IG1hdGNoZXMgdGhlIG5hbWUgaWdub3JpbmcgY2FzZSwgdGhlIHZhbHVlIGlzIHJldHVybmVkCisgICAgICAgIHVuY2hhbmdlZC4gIE90aGVyd2lzZSB0aGUgbmFtZSBhbmQgdmFsdWUgYXJlIHBhc3NlZCB0byBoZWFkZXJfZmFjdG9yeQorICAgICAgICBtZXRob2QsIGFuZCB0aGUgcmVzdWx0aW5nIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkIGFzIHRoZQorICAgICAgICB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBpbnB1dCB2YWx1ZSBjb250YWlucworICAgICAgICBDUiBvciBMRiBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpIGFuZCB2YWx1ZS5uYW1lLmxvd2VyKCkgPT0gbmFtZS5sb3dlcigpOgorICAgICAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKSBhbmQgbGVuKHZhbHVlLnNwbGl0bGluZXMoKSk+MToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlYWRlciB2YWx1ZXMgbWF5IG5vdCBjb250YWluIGxpbmVmZWVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGNhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXJzIikKKyAgICAgICAgcmV0dXJuIChuYW1lLCBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKSkKKworICAgIGRlZiBoZWFkZXJfZmV0Y2hfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIElmIHRoZSB2YWx1ZSBoYXMgYSAnbmFtZScgYXR0cmlidXRlLCBpdCBpcyByZXR1cm5lZCB0byB1bm1vZGlmaWVkLgorICAgICAgICBPdGhlcndpc2UgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSB3aXRoIGFueSBsaW5lc2VwIGNoYXJhY3RlcnMgcmVtb3ZlZAorICAgICAgICBhcmUgcGFzc2VkIHRvIHRoZSBoZWFkZXJfZmFjdG9yeSBtZXRob2QsIGFuZCB0aGUgcmVzdWx0aW5nIGN1c3RvbQorICAgICAgICBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiAgQW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgZ2V0IHR1cm5lZAorICAgICAgICBpbnRvIHRoZSB1bmljb2RlIHVua25vd24tY2hhcmFjdGVyIGdseXBoLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsICcnLmpvaW4odmFsdWUuc3BsaXRsaW5lcygpKSkKKworICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSByZWZvbGRfc291cmNlIHBvbGljeSBzZXR0aW5nLiAgQQorICAgICAgICB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIGEgJ3NvdXJjZSB2YWx1ZScgaWYgYW5kIG9ubHkgaWYgaXQgZG9lcyBub3QKKyAgICAgICAgaGF2ZSBhICduYW1lJyBhdHRyaWJ1dGUgKGhhdmluZyBhICduYW1lJyBhdHRyaWJ1dGUgbWVhbnMgaXQgaXMgYSBoZWFkZXIKKyAgICAgICAgb2JqZWN0IG9mIHNvbWUgc29ydCkuICBJZiBhIHNvdXJjZSB2YWx1ZSBuZWVkcyB0byBiZSByZWZvbGRlZCBhY2NvcmRpbmcKKyAgICAgICAgdG8gdGhlIHBvbGljeSwgaXQgaXMgY29udmVydGVkIGludG8gYSBjdXN0b20gaGVhZGVyIG9iamVjdCBieSBwYXNzaW5nCisgICAgICAgIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgd2l0aCBhbnkgbGluZXNlcCBjaGFyYWN0ZXJzIHJlbW92ZWQgdG8gdGhlCisgICAgICAgIGhlYWRlcl9mYWN0b3J5IG1ldGhvZC4gIEZvbGRpbmcgb2YgYSBjdXN0b20gaGVhZGVyIG9iamVjdCBpcyBkb25lIGJ5CisgICAgICAgIGNhbGxpbmcgaXRzIGZvbGQgbWV0aG9kIHdpdGggdGhlIGN1cnJlbnQgcG9saWN5LgorCisgICAgICAgIFNvdXJjZSB2YWx1ZXMgYXJlIHNwbGl0IGludG8gbGluZXMgdXNpbmcgc3BsaXRsaW5lcy4gIElmIHRoZSB2YWx1ZSBpcworICAgICAgICBub3QgdG8gYmUgcmVmb2xkZWQsIHRoZSBsaW5lcyBhcmUgcmVqb2luZWQgdXNpbmcgdGhlIGxpbmVzZXAgZnJvbSB0aGUKKyAgICAgICAgcG9saWN5IGFuZCByZXR1cm5lZC4gIFRoZSBleGNlcHRpb24gaXMgbGluZXMgY29udGFpbmluZyBub24tYXNjaWkKKyAgICAgICAgYmluYXJ5IGRhdGEuICBJbiB0aGF0IGNhc2UgdGhlIHZhbHVlIGlzIHJlZm9sZGVkIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIHJlZm9sZF9zb3VyY2Ugc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YSB0byBiZSBDVEUgZW5jb2RlZAorICAgICAgICB1c2luZyB0aGUgdW5rbm93bi04Yml0IGNoYXJzZXQuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PVRydWUpCisKKyAgICBkZWYgZm9sZF9iaW5hcnkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBzYW1lIGFzIGZvbGQgaWYgY3RlX3R5cGUgaXMgN2JpdCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIGlzCisgICAgICAgIGJ5dGVzLgorCisgICAgICAgIElmIGN0ZV90eXBlIGlzIDhiaXQsIG5vbi1BU0NJSSBiaW5hcnkgZGF0YSBpcyBjb252ZXJ0ZWQgYmFjayBpbnRvCisgICAgICAgIGJ5dGVzLiAgSGVhZGVycyB3aXRoIGJpbmFyeSBkYXRhIGFyZSBub3QgcmVmb2xkZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIHJlZm9sZF9oZWFkZXIgc2V0dGluZywgc2luY2UgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgd2hldGhlciB0aGUgYmluYXJ5CisgICAgICAgIGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgZm9sZGVkID0gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgcmVmb2xkX2JpbmFyeT1zZWxmLmN0ZV90eXBlPT0nN2JpdCcpCisgICAgICAgIHJldHVybiBmb2xkZWQuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIF9mb2xkKHNlbGYsIG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PUZhbHNlKToKKyAgICAgICAgaWYgaGFzYXR0cih2YWx1ZSwgJ25hbWUnKToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mb2xkKHBvbGljeT1zZWxmKQorICAgICAgICBtYXhsZW4gPSBzZWxmLm1heF9saW5lX2xlbmd0aCBpZiBzZWxmLm1heF9saW5lX2xlbmd0aCBlbHNlIGZsb2F0KCdpbmYnKQorICAgICAgICBsaW5lcyA9IHZhbHVlLnNwbGl0bGluZXMoKQorICAgICAgICByZWZvbGQgPSAoc2VsZi5yZWZvbGRfc291cmNlID09ICdhbGwnIG9yCisgICAgICAgICAgICAgICAgICBzZWxmLnJlZm9sZF9zb3VyY2UgPT0gJ2xvbmcnIGFuZAorICAgICAgICAgICAgICAgICAgICAobGVuKGxpbmVzWzBdKStsZW4obmFtZSkrMiA+IG1heGxlbiBvcgorICAgICAgICAgICAgICAgICAgICAgYW55KGxlbih4KSA+IG1heGxlbiBmb3IgeCBpbiBsaW5lc1sxOl0pKSkKKyAgICAgICAgaWYgcmVmb2xkIG9yIHJlZm9sZF9iaW5hcnkgYW5kIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCAnJy5qb2luKGxpbmVzKSkuZm9sZChwb2xpY3k9c2VsZikKKyAgICAgICAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc2VsZi5saW5lc2VwLmpvaW4obGluZXMpICsgc2VsZi5saW5lc2VwCisKKworZGVmYXVsdCA9IEVtYWlsUG9saWN5KCkKKyMgTWFrZSB0aGUgZGVmYXVsdCBwb2xpY3kgdXNlIHRoZSBjbGFzcyBkZWZhdWx0IGhlYWRlcl9mYWN0b3J5CitkZWwgZGVmYXVsdC5oZWFkZXJfZmFjdG9yeQorc3RyaWN0ID0gZGVmYXVsdC5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKK1NNVFAgPSBkZWZhdWx0LmNsb25lKGxpbmVzZXA9J1xyXG4nKQorSFRUUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicsIG1heF9saW5lX2xlbmd0aD1Ob25lKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3V0aWxzLnB5IGIvTGliL2VtYWlsL3V0aWxzLnB5CmluZGV4IGFjNGRhMzcuLjZiNmQ3ZjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC91dGlscy5weQorKysgYi9MaWIvZW1haWwvdXRpbHMucHkKQEAgLTExLDEyICsxMSwxNCBAQAogICAgICdlbmNvZGVfcmZjMjIzMScsCiAgICAgJ2Zvcm1hdGFkZHInLAogICAgICdmb3JtYXRkYXRlJywKKyAgICAnZm9ybWF0X2RhdGV0aW1lJywKICAgICAnZ2V0YWRkcmVzc2VzJywKICAgICAnbWFrZV9tc2dpZCcsCiAgICAgJ21rdGltZV90eicsCiAgICAgJ3BhcnNlYWRkcicsCiAgICAgJ3BhcnNlZGF0ZScsCiAgICAgJ3BhcnNlZGF0ZV90eicsCisgICAgJ3BhcnNlZGF0ZV90b19kYXRldGltZScsCiAgICAgJ3VucXVvdGUnLAogICAgIF0KIApAQCAtMjYsNiArMjgsNyBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNvY2tldAoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCkBAIC0zNCwxNCArMzcsMTMgQEAKIGZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgQWRkcmVzc0xpc3QgYXMgX0FkZHJlc3NMaXN0CiBmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IG1rdGltZV90egogCi0jIFdlIG5lZWQgd29ybWFyb3VuZHMgZm9yIGJ1Z3MgaW4gdGhlc2UgbWV0aG9kcyBpbiBvbGRlciBQeXRob25zIChzZWUgYmVsb3cpCi1mcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSBhcyBfcGFyc2VkYXRlCi1mcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZV90eiBhcyBfcGFyc2VkYXRlX3R6Citmcm9tIGVtYWlsLl9wYXJzZWFkZHIgaW1wb3J0IHBhcnNlZGF0ZSwgcGFyc2VkYXRlX3R6LCBfcGFyc2VkYXRlX3R6CiAKIGZyb20gcXVvcHJpIGltcG9ydCBkZWNvZGVzdHJpbmcgYXMgX3FkZWNvZGUKIAogIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwogZnJvbSBlbWFpbC5lbmNvZGVycyBpbXBvcnQgX2JlbmNvZGUsIF9xZW5jb2RlCitmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIAogQ09NTUFTUEFDRSA9ICcsICcKIEVNUFRZU1RSSU5HID0gJycKQEAgLTUwLDI3ICs1Miw1MyBAQAogVElDSyA9ICInIgogCiBzcGVjaWFsc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCk8PkAsOjsiLl0nKQotZXNjYXBlc3JlID0gcmUuY29tcGlsZShyJ1tdW1xcKCkiXScpCitlc2NhcGVzcmUgPSByZS5jb21waWxlKHInW1xcIl0nKQogCisjIEhvdyB0byBmaWd1cmUgb3V0IGlmIHdlIGFyZSBwcm9jZXNzaW5nIHN0cmluZ3MgdGhhdCBjb21lIGZyb20gYSBieXRlCisjIHNvdXJjZSB3aXRoIHVuZGVjb2RhYmxlIGNoYXJhY3RlcnMuCitfaGFzX3N1cnJvZ2F0ZXMgPSByZS5jb21waWxlKAorICAgICcoW15cdWQ4MDAtXHVkYmZmXXxcQSlbXHVkYzAwLVx1ZGZmZl0oW15cdWRjMDAtXHVkZmZmXXxcWiknKS5zZWFyY2gKKworIyBIb3cgdG8gZGVhbCB3aXRoIGEgc3RyaW5nIGNvbnRhaW5pbmcgYnl0ZXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gdGhlCisjIGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlICdub3JtYWwnIGludGVyZmFjZS4KK2RlZiBfc2FuaXRpemUoc3RyaW5nKToKKyAgICAjIFR1cm4gYW55IGVzY2FwZWQgYnl0ZXMgaW50byB1bmljb2RlICd1bmtub3duJyBjaGFyLgorICAgIG9yaWdpbmFsX2J5dGVzID0gc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICByZXR1cm4gb3JpZ2luYWxfYnl0ZXMuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKIAogCiAjIEhlbHBlcnMKIAotZGVmIGZvcm1hdGFkZHIocGFpcik6CitkZWYgZm9ybWF0YWRkcihwYWlyLCBjaGFyc2V0PSd1dGYtOCcpOgogICAgICIiIlRoZSBpbnZlcnNlIG9mIHBhcnNlYWRkcigpLCB0aGlzIHRha2VzIGEgMi10dXBsZSBvZiB0aGUgZm9ybQogICAgIChyZWFsbmFtZSwgZW1haWxfYWRkcmVzcykgYW5kIHJldHVybnMgdGhlIHN0cmluZyB2YWx1ZSBzdWl0YWJsZQogICAgIGZvciBhbiBSRkMgMjgyMiBGcm9tLCBUbyBvciBDYyBoZWFkZXIuCiAKICAgICBJZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBwYWlyIGlzIGZhbHNlLCB0aGVuIHRoZSBzZWNvbmQgZWxlbWVudCBpcwogICAgIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgICBPcHRpb25hbCBjaGFyc2V0IGlmIGdpdmVuIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgaXMgdXNlZCB0byBlbmNvZGUKKyAgICByZWFsbmFtZSBpbiBjYXNlIHJlYWxuYW1lIGlzIG5vdCBBU0NJSSBzYWZlLiAgQ2FuIGJlIGFuIGluc3RhbmNlIG9mIHN0ciBvcgorICAgIGEgQ2hhcnNldC1saWtlIG9iamVjdCB3aGljaCBoYXMgYSBoZWFkZXJfZW5jb2RlIG1ldGhvZC4gIERlZmF1bHQgaXMKKyAgICAndXRmLTgnLgogICAgICIiIgogICAgIG5hbWUsIGFkZHJlc3MgPSBwYWlyCisgICAgIyBUaGUgYWRkcmVzcyBNVVNUIChwZXIgUkZDKSBiZSBhc2NpaSwgc28gdGhyb3cgYSBVbmljb2RlRXJyb3IgaWYgaXQgaXNuJ3QuCisgICAgYWRkcmVzcy5lbmNvZGUoJ2FzY2lpJykKICAgICBpZiBuYW1lOgotICAgICAgICBxdW90ZXMgPSAnJwotICAgICAgICBpZiBzcGVjaWFsc3JlLnNlYXJjaChuYW1lKToKLSAgICAgICAgICAgIHF1b3RlcyA9ICciJwotICAgICAgICBuYW1lID0gZXNjYXBlc3JlLnN1YihyJ1xcXGc8MD4nLCBuYW1lKQotICAgICAgICByZXR1cm4gJyVzJXMlcyA8JXM+JyAlIChxdW90ZXMsIG5hbWUsIHF1b3RlcywgYWRkcmVzcykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hhcnNldCwgc3RyKToKKyAgICAgICAgICAgICAgICBjaGFyc2V0ID0gQ2hhcnNldChjaGFyc2V0KQorICAgICAgICAgICAgZW5jb2RlZF9uYW1lID0gY2hhcnNldC5oZWFkZXJfZW5jb2RlKG5hbWUpCisgICAgICAgICAgICByZXR1cm4gIiVzIDwlcz4iICUgKGVuY29kZWRfbmFtZSwgYWRkcmVzcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHF1b3RlcyA9ICcnCisgICAgICAgICAgICBpZiBzcGVjaWFsc3JlLnNlYXJjaChuYW1lKToKKyAgICAgICAgICAgICAgICBxdW90ZXMgPSAnIicKKyAgICAgICAgICAgIG5hbWUgPSBlc2NhcGVzcmUuc3ViKHInXFxcZzwwPicsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gJyVzJXMlcyA8JXM+JyAlIChxdW90ZXMsIG5hbWUsIHF1b3RlcywgYWRkcmVzcykKICAgICByZXR1cm4gYWRkcmVzcwogCiAKQEAgLTk0LDYgKzEyMiwxNCBAQAogICAnJycsIHJlLlZFUkJPU0UgfCByZS5JR05PUkVDQVNFKQogCiAKK2RlZiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZSh0aW1ldHVwbGUsIHpvbmUpOgorICAgIHJldHVybiAnJXMsICUwMmQgJXMgJTA0ZCAlMDJkOiUwMmQ6JTAyZCAlcycgJSAoCisgICAgICAgIFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ11bdGltZXR1cGxlWzZdXSwKKyAgICAgICAgdGltZXR1cGxlWzJdLAorICAgICAgICBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywKKyAgICAgICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddW3RpbWV0dXBsZVsxXSAtIDFdLAorICAgICAgICB0aW1ldHVwbGVbMF0sIHRpbWV0dXBsZVszXSwgdGltZXR1cGxlWzRdLCB0aW1ldHVwbGVbNV0sCisgICAgICAgIHpvbmUpCiAKIGRlZiBmb3JtYXRkYXRlKHRpbWV2YWw9Tm9uZSwgbG9jYWx0aW1lPUZhbHNlLCB1c2VnbXQ9RmFsc2UpOgogICAgICIiIlJldHVybnMgYSBkYXRlIHN0cmluZyBhcyBzcGVjaWZpZWQgYnkgUkZDIDI4MjIsIGUuZy46CkBAIC0xMzgsMTQgKzE3NCwyNSBAQAogICAgICAgICAgICAgem9uZSA9ICdHTVQnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB6b25lID0gJy0wMDAwJwotICAgIHJldHVybiAnJXMsICUwMmQgJXMgJTA0ZCAlMDJkOiUwMmQ6JTAyZCAlcycgJSAoCi0gICAgICAgIFsnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnLCAnU3VuJ11bbm93WzZdXSwKLSAgICAgICAgbm93WzJdLAotICAgICAgICBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywKLSAgICAgICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddW25vd1sxXSAtIDFdLAotICAgICAgICBub3dbMF0sIG5vd1szXSwgbm93WzRdLCBub3dbNV0sCi0gICAgICAgIHpvbmUpCisgICAgcmV0dXJuIF9mb3JtYXRfdGltZXR1cGxlX2FuZF96b25lKG5vdywgem9uZSkKIAorZGVmIGZvcm1hdF9kYXRldGltZShkdCwgdXNlZ210PUZhbHNlKToKKyAgICAiIiJUdXJuIGEgZGF0ZXRpbWUgaW50byBhIGRhdGUgc3RyaW5nIGFzIHNwZWNpZmllZCBpbiBSRkMgMjgyMi4KKworICAgIElmIHVzZWdtdCBpcyBUcnVlLCBkdCBtdXN0IGJlIGFuIGF3YXJlIGRhdGV0aW1lIHdpdGggYW4gb2Zmc2V0IG9mIHplcm8uICBJbgorICAgIHRoaXMgY2FzZSAnR01UJyB3aWxsIGJlIHJlbmRlcmVkIGluc3RlYWQgb2YgdGhlIG5vcm1hbCArMDAwMCByZXF1aXJlZCBieQorICAgIFJGQzI4MjIuICBUaGlzIGlzIHRvIHN1cHBvcnQgSFRUUCBoZWFkZXJzIGludm9sdmluZyBkYXRlIHN0YW1wcy4KKyAgICAiIiIKKyAgICBub3cgPSBkdC50aW1ldHVwbGUoKQorICAgIGlmIHVzZWdtdDoKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIE5vbmUgb3IgZHQudHppbmZvICE9IGRhdGV0aW1lLnRpbWV6b25lLnV0YzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZWdtdCBvcHRpb24gcmVxdWlyZXMgYSBVVEMgZGF0ZXRpbWUiKQorICAgICAgICB6b25lID0gJ0dNVCcKKyAgICBlbGlmIGR0LnR6aW5mbyBpcyBOb25lOgorICAgICAgICB6b25lID0gJy0wMDAwJworICAgIGVsc2U6CisgICAgICAgIHpvbmUgPSBkdC5zdHJmdGltZSgiJXoiKQorICAgIHJldHVybiBfZm9ybWF0X3RpbWV0dXBsZV9hbmRfem9uZShub3csIHpvbmUpCiAKIAogZGVmIG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpOgpAQCAtMTcyLDIwICsyMTksMTIgQEAKICAgICByZXR1cm4gbXNnaWQKIAogCi0KLSMgVGhlc2UgZnVuY3Rpb25zIGFyZSBpbiB0aGUgc3RhbmRhbG9uZSBtaW1lbGliIHZlcnNpb24gb25seSBiZWNhdXNlIHRoZXkndmUKLSMgc3Vic2VxdWVudGx5IGJlZW4gZml4ZWQgaW4gdGhlIGxhdGVzdCBQeXRob24gdmVyc2lvbnMuICBXZSB1c2UgdGhpcyB0byB3b3JtCi0jIGFyb3VuZCBicm9rZW4gb2xkZXIgUHl0aG9ucy4KLWRlZiBwYXJzZWRhdGUoZGF0YSk6Ci0gICAgaWYgbm90IGRhdGE6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuIF9wYXJzZWRhdGUoZGF0YSkKLQotCi1kZWYgcGFyc2VkYXRlX3R6KGRhdGEpOgotICAgIGlmIG5vdCBkYXRhOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiBfcGFyc2VkYXRlX3R6KGRhdGEpCitkZWYgcGFyc2VkYXRlX3RvX2RhdGV0aW1lKGRhdGEpOgorICAgICpkdHVwbGUsIHR6ID0gX3BhcnNlZGF0ZV90eihkYXRhKQorICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZSgqZHR1cGxlWzo2XSkKKyAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKmR0dXBsZVs6Nl0sCisgICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9dHopKSkKIAogCiBkZWYgcGFyc2VhZGRyKGFkZHIpOgpAQCAtMzA0LDMgKzM0Myw0OSBAQAogICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKICAgICAgICAgIyBjaGFyc2V0IGlzIG5vdCBhIGtub3duIGNvZGVjLgogICAgICAgICByZXR1cm4gdW5xdW90ZSh0ZXh0KQorCisKKyMKKyMgZGF0ZXRpbWUgZG9lc24ndCBwcm92aWRlIGEgbG9jYWx0aW1lIGZ1bmN0aW9uIHlldCwgc28gcHJvdmlkZSBvbmUuICBDb2RlCisjIGFkYXB0ZWQgZnJvbSB0aGUgcGF0Y2ggaW4gaXNzdWUgOTUyNy4gIFRoaXMgbWF5IG5vdCBiZSBwZXJmZWN0LCBidXQgaXQgaXMKKyMgYmV0dGVyIHRoYW4gbm90IGhhdmluZyBpdC4KKyMKKworZGVmIGxvY2FsdGltZShkdD1Ob25lLCBpc2RzdD0tMSk6CisgICAgIiIiUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LgorCisgICAgSWYgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCoKKyAgICBhcmd1bWVudCBzaG91bGQgYmUgYSBkYXRldGltZSBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUKKyAgICBsb2NhbCB0aW1lIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcworICAgIG5haXZlICh0aGF0IGlzLCBkdC50emluZm8gaXMgTm9uZSksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4KKyAgICBJbiB0aGlzIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgbG9jYWx0aW1lIHRvCisgICAgcHJlc3VtZSBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKQorICAgIGlzIG9yIGlzIG5vdCAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEKKyAgICBuZWdhdGl2ZSB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgdGhlIGxvY2FsdGltZSgpIGZ1bmN0aW9uIHRvIGF0dGVtcHQKKyAgICB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZSBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgICIiIgorICAgIGlmIGR0IGlzIE5vbmU6CisgICAgICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZS5ub3coZGF0ZXRpbWUudGltZXpvbmUudXRjKS5hc3RpbWV6b25lKCkKKyAgICBpZiBkdC50emluZm8gaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBkdC5hc3RpbWV6b25lKCkKKyAgICAjIFdlIGhhdmUgYSBuYWl2ZSBkYXRldGltZS4gIENvbnZlcnQgdG8gYSAobG9jYWx0aW1lKSB0aW1ldHVwbGUgYW5kIHBhc3MgdG8KKyAgICAjIHN5c3RlbSBta3RpbWUgdG9nZXRoZXIgd2l0aCB0aGUgaXNkc3QgaGludC4gIFN5c3RlbSBta3RpbWUgd2lsbCByZXR1cm4KKyAgICAjIHNlY29uZHMgc2luY2UgZXBvY2guCisgICAgdG0gPSBkdC50aW1ldHVwbGUoKVs6LTFdICsgKGlzZHN0LCkKKyAgICBzZWNvbmRzID0gdGltZS5ta3RpbWUodG0pCisgICAgbG9jYWx0bSA9IHRpbWUubG9jYWx0aW1lKHNlY29uZHMpCisgICAgdHJ5OgorICAgICAgICBkZWx0YSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWxvY2FsdG0udG1fZ210b2ZmKQorICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhLCBsb2NhbHRtLnRtX3pvbmUpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIENvbXB1dGUgVVRDIG9mZnNldCBhbmQgY29tcGFyZSB3aXRoIHRoZSB2YWx1ZSBpbXBsaWVkIGJ5IHRtX2lzZHN0LgorICAgICAgICAjIElmIHRoZSB2YWx1ZXMgbWF0Y2gsIHVzZSB0aGUgem9uZSBuYW1lIGltcGxpZWQgYnkgdG1faXNkc3QuCisgICAgICAgIGRlbHRhID0gZHQgLSBkYXRldGltZS5kYXRldGltZSgqdGltZS5nbXRpbWUoc2Vjb25kcylbOjZdKQorICAgICAgICBkc3QgPSB0aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAorICAgICAgICBnbXRvZmYgPSAtKHRpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSB0aW1lLnRpbWV6b25lKQorICAgICAgICBpZiBkZWx0YSA9PSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgorICAgICAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSwgdGltZS50em5hbWVbZHN0XSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEpCisgICAgcmV0dXJuIGR0LnJlcGxhY2UodHppbmZvPXR6KQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDAzNy5weSBiL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKaW5kZXggNGVkZDcwOC4uYmZlMmMxZSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9jcDAzNy5weQorKysgYi9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CkBAIC0zMDEsNiArMzAxLDcgQEAKICAgICAnXHhkOScgICAgICMgIDB4RkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCiAgICAgJ1x4ZGEnICAgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQogICAgICdceDlmJyAgICAgIyAgMHhGRiAtPiBDT05UUk9MCisgICAgJ1x1ZmZmZScgICAjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24KICkKIAogIyMjIEVuY29kaW5nIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5IGIvTGliL2VuY29kaW5ncy9jcDUwMC5weQppbmRleCA1ZjYxNTM1Li5hOTc1YmU3IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKQEAgLTMwMSw2ICszMDEsNyBAQAogICAgICdceGQ5JyAgICAgIyAgMHhGRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICAnXHhkYScgICAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAgJ1x4OWYnICAgICAjICAweEZGIC0+IENPTlRST0wKKyAgICAnXHVmZmZlJyAgICMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbgogKQogCiAjIyMgRW5jb2RpbmcgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weSBiL0xpYi9lbmNvZGluZ3MvY3A2NTAwMS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODdlYjg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5CkBAIC0wLDAgKzEsNDAgQEAKKyIiIgorQ29kZSBwYWdlIDY1MDAxOiBXaW5kb3dzIFVURi04IChDUF9VVEY4KS4KKyIiIgorCitpbXBvcnQgY29kZWNzCitpbXBvcnQgZnVuY3Rvb2xzCisKK2lmIG5vdCBoYXNhdHRyKGNvZGVjcywgJ2NvZGVfcGFnZV9lbmNvZGUnKToKKyAgICByYWlzZSBMb29rdXBFcnJvcigiY3A2NTAwMSBlbmNvZGluZyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBXaW5kb3dzIikKKworIyMjIENvZGVjIEFQSXMKKworZW5jb2RlID0gZnVuY3Rvb2xzLnBhcnRpYWwoY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDY1MDAxKQorZGVjb2RlID0gZnVuY3Rvb2xzLnBhcnRpYWwoY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDY1MDAxKQorCitjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CisgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgorICAgICAgICByZXR1cm4gZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CisgICAgX2J1ZmZlcl9kZWNvZGUgPSBkZWNvZGUKKworY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIGVuY29kZSA9IGVuY29kZQorCitjbGFzcyBTdHJlYW1SZWFkZXIoY29kZWNzLlN0cmVhbVJlYWRlcik6CisgICAgZGVjb2RlID0gZGVjb2RlCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0nY3A2NTAwMScsCisgICAgICAgIGVuY29kZT1lbmNvZGUsCisgICAgICAgIGRlY29kZT1kZWNvZGUsCisgICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCisgICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCisgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCisgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCisgICAgKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9ocF9yb21hbjgucHkgYi9MaWIvZW5jb2RpbmdzL2hwX3JvbWFuOC5weQppbmRleCBkYmFhYTcyLi4yMzM0MjA4IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2hwX3JvbWFuOC5weQorKysgYi9MaWIvZW5jb2RpbmdzL2hwX3JvbWFuOC5weQpAQCAtMTQsMTggKzE0LDE4IEBACiBjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogCiAgICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgcGFzcwpAQCAtNDYsMTA3ICs0NiwyNjcgQEAKICAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKICAgICApCiAKLSMjIyBEZWNvZGluZyBNYXAKIAotZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQotZGVjb2RpbmdfbWFwLnVwZGF0ZSh7Ci0gICAgICAgIDB4MDBhMTogMHgwMGMwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQotICAgICAgICAweDAwYTI6IDB4MDBjMiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYTM6IDB4MDBjOCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGE0OiAweDAwY2EsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGE1OiAweDAwY2IsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwYTY6IDB4MDBjZSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYTc6IDB4MDBjZiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBhODogMHgwMGI0LCAjICAgICAgIEFDVVRFIEFDQ0VOVAotICAgICAgICAweDAwYTk6IDB4MDJjYiwgIyAgICAgICBNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UIChNYW5kYXJpbiBDaGluZXNlIGZvdXJ0aCB0b25lKQotICAgICAgICAweDAwYWE6IDB4MDJjNiwgIyAgICAgICBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKLSAgICAgICAgMHgwMGFiOiAweDAwYTgsICMgICAgICAgRElBRVJFU0lTCi0gICAgICAgIDB4MDBhYzogMHgwMmRjLCAjICAgICAgIFNNQUxMIFRJTERFCi0gICAgICAgIDB4MDBhZDogMHgwMGQ5LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQotICAgICAgICAweDAwYWU6IDB4MDBkYiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYWY6IDB4MjBhNCwgIyAgICAgICBMSVJBIFNJR04KLSAgICAgICAgMHgwMGIwOiAweDAwYWYsICMgICAgICAgTUFDUk9OCi0gICAgICAgIDB4MDBiMTogMHgwMGRkLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwYjI6IDB4MDBmZCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiMzogMHgwMGIwLCAjICAgICAgIERFR1JFRSBTSUdOCi0gICAgICAgIDB4MDBiNDogMHgwMGM3LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiNTogMHgwMGU3LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYjY6IDB4MDBkMSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKLSAgICAgICAgMHgwMGI3OiAweDAwZjEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQotICAgICAgICAweDAwYjg6IDB4MDBhMSwgIyAgICAgICBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCi0gICAgICAgIDB4MDBiOTogMHgwMGJmLCAjICAgICAgIElOVkVSVEVEIFFVRVNUSU9OIE1BUksKLSAgICAgICAgMHgwMGJhOiAweDAwYTQsICMgICAgICAgQ1VSUkVOQ1kgU0lHTgotICAgICAgICAweDAwYmI6IDB4MDBhMywgIyAgICAgICBQT1VORCBTSUdOCi0gICAgICAgIDB4MDBiYzogMHgwMGE1LCAjICAgICAgIFlFTiBTSUdOCi0gICAgICAgIDB4MDBiZDogMHgwMGE3LCAjICAgICAgIFNFQ1RJT04gU0lHTgotICAgICAgICAweDAwYmU6IDB4MDE5MiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0sKLSAgICAgICAgMHgwMGJmOiAweDAwYTIsICMgICAgICAgQ0VOVCBTSUdOCi0gICAgICAgIDB4MDBjMDogMHgwMGUyLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzE6IDB4MDBlYSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGMyOiAweDAwZjQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjMzogMHgwMGZiLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzQ6IDB4MDBlMSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNTogMHgwMGU5LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM2OiAweDAwZjMsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQotICAgICAgICAweDAwYzc6IDB4MDBmYSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjODogMHgwMGUwLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGM5OiAweDAwZTgsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQotICAgICAgICAweDAwY2E6IDB4MDBmMiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjYjogMHgwMGY5LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGNjOiAweDAwZTQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGNkOiAweDAwZWIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGNlOiAweDAwZjYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGNmOiAweDAwZmMsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGQwOiAweDAwYzUsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGQxOiAweDAwZWUsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBkMjogMHgwMGQ4LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGQzOiAweDAwYzYsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKLSAgICAgICAgMHgwMGQ0OiAweDAwZTUsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBkNTogMHgwMGVkLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGQ2OiAweDAwZjgsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGQ3OiAweDAwZTYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEFFCi0gICAgICAgIDB4MDBkODogMHgwMGM0LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGQ5OiAweDAwZWMsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQotICAgICAgICAweDAwZGE6IDB4MDBkNiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkYjogMHgwMGRjLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGRjOiAweDAwYzksICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkZDogMHgwMGVmLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBkZTogMHgwMGRmLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTIChHZXJtYW4pCi0gICAgICAgIDB4MDBkZjogMHgwMGQ0LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBlMDogMHgwMGMxLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTE6IDB4MDBjMywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKLSAgICAgICAgMHgwMGUyOiAweDAwZTMsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERQotICAgICAgICAweDAwZTM6IDB4MDBkMCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEggKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGU0OiAweDAwZjAsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQotICAgICAgICAweDAwZTU6IDB4MDBjZCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU2OiAweDAwY2MsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBlNzogMHgwMGQzLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQotICAgICAgICAweDAwZTg6IDB4MDBkMiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGU5OiAweDAwZDUsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlYTogMHgwMGY1LCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMGViOiAweDAxNjAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlYzogMHgwMTYxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVkOiAweDAwZGEsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlZTogMHgwMTc4LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGVmOiAweDAwZmYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGYwOiAweDAwZGUsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGYxOiAweDAwZmUsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBmMjogMHgwMGI3LCAjICAgICAgIE1JRERMRSBET1QKLSAgICAgICAgMHgwMGYzOiAweDAwYjUsICMgICAgICAgTUlDUk8gU0lHTgotICAgICAgICAweDAwZjQ6IDB4MDBiNiwgIyAgICAgICBQSUxDUk9XIFNJR04KLSAgICAgICAgMHgwMGY1OiAweDAwYmUsICMgICAgICAgVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCi0gICAgICAgIDB4MDBmNjogMHgyMDE0LCAjICAgICAgIEVNIERBU0gKLSAgICAgICAgMHgwMGY3OiAweDAwYmMsICMgICAgICAgVlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSCi0gICAgICAgIDB4MDBmODogMHgwMGJkLCAjICAgICAgIFZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRgotICAgICAgICAweDAwZjk6IDB4MDBhYSwgIyAgICAgICBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgotICAgICAgICAweDAwZmE6IDB4MDBiYSwgIyAgICAgICBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKLSAgICAgICAgMHgwMGZiOiAweDAwYWIsICMgICAgICAgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGZjOiAweDI1YTAsICMgICAgICAgQkxBQ0sgU1FVQVJFCi0gICAgICAgIDB4MDBmZDogMHgwMGJiLCAjICAgICAgIFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZmU6IDB4MDBiMSwgIyAgICAgICBQTFVTLU1JTlVTIFNJR04KLSAgICAgICAgMHgwMGZmOiBOb25lLAotfSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIyMgRW5jb2RpbmcgTWFwCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+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+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x4ODAnICAgICAjICAweDgwIC0+IDxjb250cm9sPgorICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KKyAgICAnXHg4MicgICAgICMgIDB4ODIgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODMnICAgICAjICAweDgzIC0+IDxjb250cm9sPgorICAgICdceDg0JyAgICAgIyAgMHg4NCAtPiA8Y29udHJvbD4KKyAgICAnXHg4NScgICAgICMgIDB4ODUgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODYnICAgICAjICAweDg2IC0+IDxjb250cm9sPgorICAgICdceDg3JyAgICAgIyAgMHg4NyAtPiA8Y29udHJvbD4KKyAgICAnXHg4OCcgICAgICMgIDB4ODggLT4gPGNvbnRyb2w+CisgICAgJ1x4ODknICAgICAjICAweDg5IC0+IDxjb250cm9sPgorICAgICdceDhhJyAgICAgIyAgMHg4QSAtPiA8Y29udHJvbD4KKyAgICAnXHg4YicgICAgICMgIDB4OEIgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGMnICAgICAjICAweDhDIC0+IDxjb250cm9sPgorICAgICdceDhkJyAgICAgIyAgMHg4RCAtPiA8Y29udHJvbD4KKyAgICAnXHg4ZScgICAgICMgIDB4OEUgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGYnICAgICAjICAweDhGIC0+IDxjb250cm9sPgorICAgICdceDkwJyAgICAgIyAgMHg5MCAtPiA8Y29udHJvbD4KKyAgICAnXHg5MScgICAgICMgIDB4OTEgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTInICAgICAjICAweDkyIC0+IDxjb250cm9sPgorICAgICdceDkzJyAgICAgIyAgMHg5MyAtPiA8Y29udHJvbD4KKyAgICAnXHg5NCcgICAgICMgIDB4OTQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTUnICAgICAjICAweDk1IC0+IDxjb250cm9sPgorICAgICdceDk2JyAgICAgIyAgMHg5NiAtPiA8Y29udHJvbD4KKyAgICAnXHg5NycgICAgICMgIDB4OTcgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTgnICAgICAjICAweDk4IC0+IDxjb250cm9sPgorICAgICdceDk5JyAgICAgIyAgMHg5OSAtPiA8Y29udHJvbD4KKyAgICAnXHg5YScgICAgICMgIDB4OUEgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgorICAgICdceDljJyAgICAgIyAgMHg5QyAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZCcgICAgICMgIDB4OUQgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWUnICAgICAjICAweDlFIC0+IDxjb250cm9sPgorICAgICdceDlmJyAgICAgIyAgMHg5RiAtPiA8Y29udHJvbD4KKyAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHhjMCcgICAgICMgIDB4QTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4YzInICAgICAjICAweEEyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4YzgnICAgICAjICAweEEzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGNhJyAgICAgIyAgMHhBNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNiJyAgICAgIyAgMHhBNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4Y2UnICAgICAjICAweEE2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2YnICAgICAjICAweEE3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhiNCcgICAgICMgIDB4QTggLT4gQUNVVEUgQUNDRU5UCisgICAgJ1x1MDJjYicgICAjICAweEE5IC0+IE1PRElGSUVSIExFVFRFUiBHUkFWRSBBQ0NFTlQgKE1BTkRBUklOIENISU5FU0UgRk9VUlRIIFRPTkUpCisgICAgJ1x1MDJjNicgICAjICAweEFBIC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdceGE4JyAgICAgIyAgMHhBQiAtPiBESUFFUkVTSVMKKyAgICAnXHUwMmRjJyAgICMgIDB4QUMgLT4gU01BTEwgVElMREUKKyAgICAnXHhkOScgICAgICMgIDB4QUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZGInICAgICAjICAweEFFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x1MjBhNCcgICAjICAweEFGIC0+IExJUkEgU0lHTgorICAgICdceGFmJyAgICAgIyAgMHhCMCAtPiBNQUNST04KKyAgICAnXHhkZCcgICAgICMgIDB4QjEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4ZmQnICAgICAjICAweEIyIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhiMCcgICAgICMgIDB4QjMgLT4gREVHUkVFIFNJR04KKyAgICAnXHhjNycgICAgICMgIDB4QjQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKyAgICAnXHhlNycgICAgICMgIDB4QjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4ZDEnICAgICAjICAweEI2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGYxJyAgICAgIyAgMHhCNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4YTEnICAgICAjICAweEI4IC0+IElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnXHhiZicgICAgICMgIDB4QjkgLT4gSU5WRVJURUQgUVVFU1RJT04gTUFSSworICAgICdceGE0JyAgICAgIyAgMHhCQSAtPiBDVVJSRU5DWSBTSUdOCisgICAgJ1x4YTMnICAgICAjICAweEJCIC0+IFBPVU5EIFNJR04KKyAgICAnXHhhNScgICAgICMgIDB4QkMgLT4gWUVOIFNJR04KKyAgICAnXHhhNycgICAgICMgIDB4QkQgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MDE5MicgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSworICAgICdceGEyJyAgICAgIyAgMHhCRiAtPiBDRU5UIFNJR04KKyAgICAnXHhlMicgICAgICMgIDB4QzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZWEnICAgICAjICAweEMxIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGY0JyAgICAgIyAgMHhDMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmYicgICAgICMgIDB4QzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZTEnICAgICAjICAweEM0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHhlOScgICAgICMgIDB4QzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdceGYzJyAgICAgIyAgMHhDNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZmEnICAgICAjICAweEM3IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHhlMCcgICAgICMgIDB4QzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQorICAgICdceGU4JyAgICAgIyAgMHhDOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4ZjInICAgICAjICAweENBIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKKyAgICAnXHhmOScgICAgICMgIDB4Q0IgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQorICAgICdceGU0JyAgICAgIyAgMHhDQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGViJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGY2JyAgICAgIyAgMHhDRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGZjJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdceGM1JyAgICAgIyAgMHhEMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorICAgICdceGVlJyAgICAgIyAgMHhEMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhkOCcgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGM2JyAgICAgIyAgMHhEMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQorICAgICdceGU1JyAgICAgIyAgMHhENCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhlZCcgICAgICMgIDB4RDUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGY4JyAgICAgIyAgMHhENiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGU2JyAgICAgIyAgMHhENyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKKyAgICAnXHhjNCcgICAgICMgIDB4RDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGVjJyAgICAgIyAgMHhEOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4ZDYnICAgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkYycgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdceGM5JyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHhlZicgICAgICMgIDB4REQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkZicgICAgICMgIDB4REUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdFUk1BTikKKyAgICAnXHhkNCcgICAgICMgIDB4REYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjMScgICAgICMgIDB4RTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4YzMnICAgICAjICAweEUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQorICAgICdceGUzJyAgICAgIyAgMHhFMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCisgICAgJ1x4ZDAnICAgICAjICAweEUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSUNFTEFORElDKQorICAgICdceGYwJyAgICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJQ0VMQU5ESUMpCisgICAgJ1x4Y2QnICAgICAjICAweEU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGNjJyAgICAgIyAgMHhFNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhkMycgICAgICMgIDB4RTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZDInICAgICAjICAweEU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQorICAgICdceGQ1JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhmNScgICAgICMgIDB4RUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdcdTAxNjAnICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHUwMTYxJyAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdceGRhJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHUwMTc4JyAgICMgIDB4RUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdceGZmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdceGRlJyAgICAgIyAgMHhGMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSUNFTEFORElDKQorICAgICdceGZlJyAgICAgIyAgMHhGMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKElDRUxBTkRJQykKKyAgICAnXHhiNycgICAgICMgIDB4RjIgLT4gTUlERExFIERPVAorICAgICdceGI1JyAgICAgIyAgMHhGMyAtPiBNSUNSTyBTSUdOCisgICAgJ1x4YjYnICAgICAjICAweEY0IC0+IFBJTENST1cgU0lHTgorICAgICdceGJlJyAgICAgIyAgMHhGNSAtPiBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKKyAgICAnXHUyMDE0JyAgICMgIDB4RjYgLT4gRU0gREFTSAorICAgICdceGJjJyAgICAgIyAgMHhGNyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKKyAgICAnXHhiZCcgICAgICMgIDB4RjggLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCisgICAgJ1x4YWEnICAgICAjICAweEY5IC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCisgICAgJ1x4YmEnICAgICAjICAweEZBIC0+IE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGFiJyAgICAgIyAgMHhGQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTI1YTAnICAgIyAgMHhGQyAtPiBCTEFDSyBTUVVBUkUKKyAgICAnXHhiYicgICAgICMgIDB4RkQgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YjEnICAgICAjICAweEZFIC0+IFBMVVMtTUlOVVMgU0lHTgorICAgICdcdWZmZmUnCispCiAKLWVuY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9pZG5hLnB5IGIvTGliL2VuY29kaW5ncy9pZG5hLnB5CmluZGV4IDU4M2JkZjEuLmVhNDA1ODUgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvaWRuYS5weQorKysgYi9MaWIvZW5jb2RpbmdzL2lkbmEucHkKQEAgLTE1Myw2ICsxNTMsMjAgQEAKICAgICAgICAgaWYgbm90IGlucHV0OgogICAgICAgICAgICAgcmV0dXJuIGInJywgMAogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGlucHV0LmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBU0NJSSBuYW1lOiBmYXN0IHBhdGgKKyAgICAgICAgICAgIGxhYmVscyA9IHJlc3VsdC5zcGxpdChiJy4nKQorICAgICAgICAgICAgZm9yIGxhYmVsIGluIGxhYmVsc1s6LTFdOgorICAgICAgICAgICAgICAgIGlmIG5vdCAoMCA8IGxlbihsYWJlbCkgPCA2NCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigibGFiZWwgZW1wdHkgb3IgdG9vIGxvbmciKQorICAgICAgICAgICAgaWYgbGVuKGxhYmVsc1stMV0pID49IDY0OgorICAgICAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFcnJvcigibGFiZWwgdG9vIGxvbmciKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCwgbGVuKGlucHV0KQorCiAgICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGxhYmVscyA9IGRvdHMuc3BsaXQoaW5wdXQpCiAgICAgICAgIGlmIGxhYmVscyBhbmQgbm90IGxhYmVsc1stMV06CkBAIC0xNzksNiArMTkzLDE0IEBACiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGlucHV0LCBieXRlcyk6CiAgICAgICAgICAgICAjIFhYWCBvYnZpb3VzbHkgd3JvbmcsIHNlZSAjMzIzMgogICAgICAgICAgICAgaW5wdXQgPSBieXRlcyhpbnB1dCkKKworICAgICAgICBpZiBhY2VfcHJlZml4IG5vdCBpbiBpbnB1dDoKKyAgICAgICAgICAgICMgRmFzdCBwYXRoCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0LmRlY29kZSgnYXNjaWknKSwgbGVuKGlucHV0KQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgbGFiZWxzID0gaW5wdXQuc3BsaXQoYiIuIikKIAogICAgICAgICBpZiBsYWJlbHMgYW5kIGxlbihsYWJlbHNbLTFdKSA9PSAwOgpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9pc284ODU5XzEucHkgYi9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weQppbmRleCA4Y2ZjMDFmLi5kOWNjNTE2IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weQorKysgYi9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weQpAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgJ1x4ZmQnICAgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKICAgICAnXHhmZScgICAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCiAgICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x1ZmZmZScgICAjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24KICkKIAogIyMjIEVuY29kaW5nIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkgYi9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkKaW5kZXggZTMyMmJlMi4uZGE5ZDRiMSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgZ2VuZXJhdGVkIGZyb20gJ0xBVElOMi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCisiIiIgUHl0aG9uIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIG1hY19sYXRpbjIgZ2VuZXJhdGVkIGZyb20gJ01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL01BQy9MQVRJTjIuVFhUJyB3aXRoIGdlbmNvZGVjLnB5LgogCiBXcml0dGVuIGJ5IE1hcmMtQW5kcmUgTGVtYnVyZyAobWFsQGxlbWJ1cmcuY29tKS4KIApAQCAtMTQsMTggKzE0LDE4IEBACiBjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogCiAgICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgcGFzcwpAQCAtNDYsMTM4ICs0NiwyNjcgQEAKICAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICApCiAKLSMjIyBEZWNvZGluZyBNYXAKIAotZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQotZGVjb2RpbmdfbWFwLnVwZGF0ZSh7Ci0gICAgICAgIDB4MDA4MDogMHgwMGM0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDgxOiAweDAxMDAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwODI6IDB4MDEwMSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwODM6IDB4MDBjOSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDg0OiAweDAxMDQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSwotICAgICAgICAweDAwODU6IDB4MDBkNiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA4NjogMHgwMGRjLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDg3OiAweDAwZTEsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQotICAgICAgICAweDAwODg6IDB4MDEwNSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSwotICAgICAgICAweDAwODk6IDB4MDEwYywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDhhOiAweDAwZTQsICMgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDhiOiAweDAxMGQsICMgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOGM6IDB4MDEwNiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDhkOiAweDAxMDcsICMgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURQotICAgICAgICAweDAwOGU6IDB4MDBlOSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ZjogMHgwMTc5LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURQotICAgICAgICAweDAwOTA6IDB4MDE3YSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5MTogMHgwMTBlLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgotICAgICAgICAweDAwOTI6IDB4MDBlZCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5MzogMHgwMTBmLCAjIExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDk0OiAweDAxMTIsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOTU6IDB4MDExMywgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOTY6IDB4MDExNiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDA5NzogMHgwMGYzLCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDk4OiAweDAxMTcsICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMDk5OiAweDAwZjQsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDA5YTogMHgwMGY2LCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDA5YjogMHgwMGY1LCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMDljOiAweDAwZmEsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwOWQ6IDB4MDExYSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDllOiAweDAxMWIsICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTgotICAgICAgICAweDAwOWY6IDB4MDBmYywgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwYTA6IDB4MjAyMCwgIyBEQUdHRVIKLSAgICAgICAgMHgwMGExOiAweDAwYjAsICMgREVHUkVFIFNJR04KLSAgICAgICAgMHgwMGEyOiAweDAxMTgsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYTQ6IDB4MDBhNywgIyBTRUNUSU9OIFNJR04KLSAgICAgICAgMHgwMGE1OiAweDIwMjIsICMgQlVMTEVUCi0gICAgICAgIDB4MDBhNjogMHgwMGI2LCAjIFBJTENST1cgU0lHTgotICAgICAgICAweDAwYTc6IDB4MDBkZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUwotICAgICAgICAweDAwYTg6IDB4MDBhZSwgIyBSRUdJU1RFUkVEIFNJR04KLSAgICAgICAgMHgwMGFhOiAweDIxMjIsICMgVFJBREUgTUFSSyBTSUdOCi0gICAgICAgIDB4MDBhYjogMHgwMTE5LCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBhYzogMHgwMGE4LCAjIERJQUVSRVNJUwotICAgICAgICAweDAwYWQ6IDB4MjI2MCwgIyBOT1QgRVFVQUwgVE8KLSAgICAgICAgMHgwMGFlOiAweDAxMjMsICMgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBhZjogMHgwMTJlLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGIwOiAweDAxMmYsICMgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGIxOiAweDAxMmEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwYjI6IDB4MjI2NCwgIyBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KLSAgICAgICAgMHgwMGIzOiAweDIyNjUsICMgR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCi0gICAgICAgIDB4MDBiNDogMHgwMTJiLCAjIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBiNTogMHgwMTM2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiNjogMHgyMjAyLCAjIFBBUlRJQUwgRElGRkVSRU5USUFMCi0gICAgICAgIDB4MDBiNzogMHgyMjExLCAjIE4tQVJZIFNVTU1BVElPTgotICAgICAgICAweDAwYjg6IDB4MDE0MiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQotICAgICAgICAweDAwYjk6IDB4MDEzYiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYmE6IDB4MDEzYywgIyBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGJiOiAweDAxM2QsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBiYzogMHgwMTNlLCAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGJkOiAweDAxMzksICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiZTogMHgwMTNhLCAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGJmOiAweDAxNDUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGMwOiAweDAxNDYsICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBjMTogMHgwMTQzLCAjIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQotICAgICAgICAweDAwYzI6IDB4MDBhYywgIyBOT1QgU0lHTgotICAgICAgICAweDAwYzM6IDB4MjIxYSwgIyBTUVVBUkUgUk9PVAotICAgICAgICAweDAwYzQ6IDB4MDE0NCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNTogMHgwMTQ3LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDQVJPTgotICAgICAgICAweDAwYzY6IDB4MjIwNiwgIyBJTkNSRU1FTlQKLSAgICAgICAgMHgwMGM3OiAweDAwYWIsICMgTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGM4OiAweDAwYmIsICMgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBjOTogMHgyMDI2LCAjIEhPUklaT05UQUwgRUxMSVBTSVMKLSAgICAgICAgMHgwMGNhOiAweDAwYTAsICMgTk8tQlJFQUsgU1BBQ0UKLSAgICAgICAgMHgwMGNiOiAweDAxNDgsICMgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTgotICAgICAgICAweDAwY2M6IDB4MDE1MCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBjZDogMHgwMGQ1LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwY2U6IDB4MDE1MSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwY2Y6IDB4MDE0YywgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBkMDogMHgyMDEzLCAjIEVOIERBU0gKLSAgICAgICAgMHgwMGQxOiAweDIwMTQsICMgRU0gREFTSAotICAgICAgICAweDAwZDI6IDB4MjAxYywgIyBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDM6IDB4MjAxZCwgIyBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQ0OiAweDIwMTgsICMgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQ1OiAweDIwMTksICMgUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkNjogMHgwMGY3LCAjIERJVklTSU9OIFNJR04KLSAgICAgICAgMHgwMGQ3OiAweDI1Y2EsICMgTE9aRU5HRQotICAgICAgICAweDAwZDg6IDB4MDE0ZCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZDk6IDB4MDE1NCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGRhOiAweDAxNTUsICMgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQotICAgICAgICAweDAwZGI6IDB4MDE1OCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGRjOiAweDIwMzksICMgU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGRkOiAweDIwM2EsICMgU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkZTogMHgwMTU5LCAjIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGRmOiAweDAxNTYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGUwOiAweDAxNTcsICMgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBlMTogMHgwMTYwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZTI6IDB4MjAxYSwgIyBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGUzOiAweDIwMWUsICMgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBlNDogMHgwMTYxLCAjIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGU1OiAweDAxNWEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlNjogMHgwMTViLCAjIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU3OiAweDAwYzEsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlODogMHgwMTY0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgotICAgICAgICAweDAwZTk6IDB4MDE2NSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlYTogMHgwMGNkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZWI6IDB4MDE3ZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVjOiAweDAxN2UsICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTgotICAgICAgICAweDAwZWQ6IDB4MDE2YSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBlZTogMHgwMGQzLCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQotICAgICAgICAweDAwZWY6IDB4MDBkNCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwZjA6IDB4MDE2YiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwZjE6IDB4MDE2ZSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZjI6IDB4MDBkYSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGYzOiAweDAxNmYsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBmNDogMHgwMTcwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGY1OiAweDAxNzEsICMgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGY2OiAweDAxNzIsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSwotICAgICAgICAweDAwZjc6IDB4MDE3MywgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSwotICAgICAgICAweDAwZjg6IDB4MDBkZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGY5OiAweDAwZmQsICMgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZmE6IDB4MDEzNywgIyBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGZiOiAweDAxN2IsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwZmM6IDB4MDE0MSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBmZDogMHgwMTdjLCAjIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDBmZTogMHgwMTIyLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBmZjogMHgwMmM3LCAjIENBUk9OCi19KQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMjIyBFbmNvZGluZyBNYXAKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+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+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHhjNCcgICAgICMgIDB4ODAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdcdTAxMDAnICAgIyAgMHg4MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OCisgICAgJ1x1MDEwMScgICAjICAweDgyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCisgICAgJ1x4YzknICAgICAjICAweDgzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdcdTAxMDQnICAgIyAgMHg4NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCisgICAgJ1x4ZDYnICAgICAjICAweDg1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkYycgICAgICMgIDB4ODYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdceGUxJyAgICAgIyAgMHg4NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x1MDEwNScgICAjICAweDg4IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCisgICAgJ1x1MDEwYycgICAjICAweDg5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgorICAgICdceGU0JyAgICAgIyAgMHg4QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdcdTAxMGQnICAgIyAgMHg4QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCisgICAgJ1x1MDEwNicgICAjICAweDhDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQorICAgICdcdTAxMDcnICAgIyAgMHg4RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCisgICAgJ1x4ZTknICAgICAjICAweDhFIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKKyAgICAnXHUwMTc5JyAgICMgIDB4OEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFCisgICAgJ1x1MDE3YScgICAjICAweDkwIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKKyAgICAnXHUwMTBlJyAgICMgIDB4OTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OCisgICAgJ1x4ZWQnICAgICAjICAweDkyIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHUwMTBmJyAgICMgIDB4OTMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgorICAgICdcdTAxMTInICAgIyAgMHg5NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OCisgICAgJ1x1MDExMycgICAjICAweDk1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OCisgICAgJ1x1MDExNicgICAjICAweDk2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKyAgICAnXHhmMycgICAgICMgIDB4OTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdcdTAxMTcnICAgIyAgMHg5OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQorICAgICdceGY0JyAgICAgIyAgMHg5OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhmNicgICAgICMgIDB4OUEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmNScgICAgICMgIDB4OUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGZhJyAgICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x1MDExYScgICAjICAweDlEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTgorICAgICdcdTAxMWInICAgIyAgMHg5RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OCisgICAgJ1x4ZmMnICAgICAjICAweDlGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x1MjAyMCcgICAjICAweEEwIC0+IERBR0dFUgorICAgICdceGIwJyAgICAgIyAgMHhBMSAtPiBERUdSRUUgU0lHTgorICAgICdcdTAxMTgnICAgIyAgMHhBMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCisgICAgJ1x4YTMnICAgICAjICAweEEzIC0+IFBPVU5EIFNJR04KKyAgICAnXHhhNycgICAgICMgIDB4QTQgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x1MjAyMicgICAjICAweEE1IC0+IEJVTExFVAorICAgICdceGI2JyAgICAgIyAgMHhBNiAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhkZicgICAgICMgIDB4QTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKyAgICAnXHhhZScgICAgICMgIDB4QTggLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x1MjEyMicgICAjICAweEFBIC0+IFRSQURFIE1BUksgU0lHTgorICAgICdcdTAxMTknICAgIyAgMHhBQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSworICAgICdceGE4JyAgICAgIyAgMHhBQyAtPiBESUFFUkVTSVMKKyAgICAnXHUyMjYwJyAgICMgIDB4QUQgLT4gTk9UIEVRVUFMIFRPCisgICAgJ1x1MDEyMycgICAjICAweEFFIC0+IExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQQorICAgICdcdTAxMmUnICAgIyAgMHhBRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLCisgICAgJ1x1MDEyZicgICAjICAweEIwIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLCisgICAgJ1x1MDEyYScgICAjICAweEIxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHUyMjY0JyAgICMgIDB4QjIgLT4gTEVTUy1USEFOIE9SIEVRVUFMIFRPCisgICAgJ1x1MjI2NScgICAjICAweEIzIC0+IEdSRUFURVItVEhBTiBPUiBFUVVBTCBUTworICAgICdcdTAxMmInICAgIyAgMHhCNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTAxMzYnICAgIyAgMHhCNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQQorICAgICdcdTIyMDInICAgIyAgMHhCNiAtPiBQQVJUSUFMIERJRkZFUkVOVElBTAorICAgICdcdTIyMTEnICAgIyAgMHhCNyAtPiBOLUFSWSBTVU1NQVRJT04KKyAgICAnXHUwMTQyJyAgICMgIDB4QjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKKyAgICAnXHUwMTNiJyAgICMgIDB4QjkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKKyAgICAnXHUwMTNjJyAgICMgIDB4QkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBCisgICAgJ1x1MDEzZCcgICAjICAweEJCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTgorICAgICdcdTAxM2UnICAgIyAgMHhCQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCisgICAgJ1x1MDEzOScgICAjICAweEJEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQorICAgICdcdTAxM2EnICAgIyAgMHhCRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFCisgICAgJ1x1MDE0NScgICAjICAweEJGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCisgICAgJ1x1MDE0NicgICAjICAweEMwIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQQorICAgICdcdTAxNDMnICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKKyAgICAnXHhhYycgICAgICMgIDB4QzIgLT4gTk9UIFNJR04KKyAgICAnXHUyMjFhJyAgICMgIDB4QzMgLT4gU1FVQVJFIFJPT1QKKyAgICAnXHUwMTQ0JyAgICMgIDB4QzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURQorICAgICdcdTAxNDcnICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST04KKyAgICAnXHUyMjA2JyAgICMgIDB4QzYgLT4gSU5DUkVNRU5UCisgICAgJ1x4YWInICAgICAjICAweEM3IC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YmInICAgICAjICAweEM4IC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgIyAgMHhDOSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCisgICAgJ1x4YTAnICAgICAjICAweENBIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x1MDE0OCcgICAjICAweENCIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST04KKyAgICAnXHUwMTUwJyAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQorICAgICdceGQ1JyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHUwMTUxJyAgICMgIDB4Q0UgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHUwMTRjJyAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgorICAgICdcdTIwMTMnICAgIyAgMHhEMCAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAjICAweEQxIC0+IEVNIERBU0gKKyAgICAnXHUyMDFjJyAgICMgIDB4RDIgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICMgIDB4RDMgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOCcgICAjICAweEQ0IC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOScgICAjICAweEQ1IC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGY3JyAgICAgIyAgMHhENiAtPiBESVZJU0lPTiBTSUdOCisgICAgJ1x1MjVjYScgICAjICAweEQ3IC0+IExPWkVOR0UKKyAgICAnXHUwMTRkJyAgICMgIDB4RDggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KKyAgICAnXHUwMTU0JyAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIEFDVVRFCisgICAgJ1x1MDE1NScgICAjICAweERBIC0+IExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEUKKyAgICAnXHUwMTU4JyAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCisgICAgJ1x1MjAzOScgICAjICAweERDIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAzYScgICAjICAweEREIC0+IFNJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxNTknICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCisgICAgJ1x1MDE1NicgICAjICAweERGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBCisgICAgJ1x1MDE1NycgICAjICAweEUwIC0+IExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorICAgICdcdTAxNjAnICAgIyAgMHhFMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHUyMDFhJyAgICMgIDB4RTIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZScgICAjICAweEUzIC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTAxNjEnICAgIyAgMHhFNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MDE1YScgICAjICAweEU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURQorICAgICdcdTAxNWInICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFCisgICAgJ1x4YzEnICAgICAjICAweEU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdcdTAxNjQnICAgIyAgMHhFOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST04KKyAgICAnXHUwMTY1JyAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTgorICAgICdceGNkJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHUwMTdkJyAgICMgIDB4RUIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCisgICAgJ1x1MDE3ZScgICAjICAweEVDIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KKyAgICAnXHUwMTZhJyAgICMgIDB4RUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdceGQzJyAgICAgIyAgMHhFRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhkNCcgICAgICMgIDB4RUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHUwMTZiJyAgICMgIDB4RjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHUwMTZlJyAgICMgIDB4RjEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhkYScgICAgICMgIDB4RjIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x1MDE2ZicgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQorICAgICdcdTAxNzAnICAgIyAgMHhGNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x1MDE3MScgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x1MDE3MicgICAjICAweEY2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUsKKyAgICAnXHUwMTczJyAgICMgIDB4RjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUsKKyAgICAnXHhkZCcgICAgICMgIDB4RjggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4ZmQnICAgICAjICAweEY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHUwMTM3JyAgICMgIDB4RkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBCisgICAgJ1x1MDE3YicgICAjICAweEZCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKKyAgICAnXHUwMTQxJyAgICMgIDB4RkMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorICAgICdcdTAxN2MnICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQorICAgICdcdTAxMjInICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQQorICAgICdcdTAyYzcnICAgIyAgMHhGRiAtPiBDQVJPTgorKQogCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvcGFsbW9zLnB5IGIvTGliL2VuY29kaW5ncy9wYWxtb3MucHkKaW5kZXggNGI3N2UyYi4uYzUwNmQ2NSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9wYWxtb3MucHkKKysrIGIvTGliL2VuY29kaW5ncy9wYWxtb3MucHkKQEAgLTEwLDE4ICsxMCwxOCBAQAogCiBjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQyLDQyICs0MiwyNjcgQEAKICAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICApCiAKLSMjIyBEZWNvZGluZyBNYXAKIAotZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMgVGhlIFBhbG1PUyBjaGFyYWN0ZXIgc2V0IGlzIG1vc3RseSBpc28tODg1OS0xIHdpdGggc29tZSBkaWZmZXJlbmNlcy4KLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwODA6IDB4MjBhYywgIyAgICAgICBFVVJPIFNJR04KLSAgICAgICAgMHgwMDgyOiAweDIwMWEsICMgICAgICAgU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4MzogMHgwMTkyLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwotICAgICAgICAweDAwODQ6IDB4MjAxZSwgIyAgICAgICBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDg1OiAweDIwMjYsICMgICAgICAgSE9SSVpPTlRBTCBFTExJUFNJUwotICAgICAgICAweDAwODY6IDB4MjAyMCwgIyAgICAgICBEQUdHRVIKLSAgICAgICAgMHgwMDg3OiAweDIwMjEsICMgICAgICAgRE9VQkxFIERBR0dFUgotICAgICAgICAweDAwODg6IDB4MDJjNiwgIyAgICAgICBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKLSAgICAgICAgMHgwMDg5OiAweDIwMzAsICMgICAgICAgUEVSIE1JTExFIFNJR04KLSAgICAgICAgMHgwMDhhOiAweDAxNjAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA4YjogMHgyMDM5LCAjICAgICAgIFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4YzogMHgwMTUyLCAjICAgICAgIExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKLSAgICAgICAgMHgwMDhkOiAweDI2NjYsICMgICAgICAgQkxBQ0sgRElBTU9ORCBTVUlUCi0gICAgICAgIDB4MDA4ZTogMHgyNjYzLCAjICAgICAgIEJMQUNLIENMVUIgU1VJVAotICAgICAgICAweDAwOGY6IDB4MjY2NSwgIyAgICAgICBCTEFDSyBIRUFSVCBTVUlUCi0gICAgICAgIDB4MDA5MDogMHgyNjYwLCAjICAgICAgIEJMQUNLIFNQQURFIFNVSVQKLSAgICAgICAgMHgwMDkxOiAweDIwMTgsICMgICAgICAgTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkyOiAweDIwMTksICMgICAgICAgUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MzogMHgyMDFjLCAjICAgICAgIExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5NDogMHgyMDFkLCAjICAgICAgIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTU6IDB4MjAyMiwgIyAgICAgICBCVUxMRVQKLSAgICAgICAgMHgwMDk2OiAweDIwMTMsICMgICAgICAgRU4gREFTSAotICAgICAgICAweDAwOTc6IDB4MjAxNCwgIyAgICAgICBFTSBEQVNICi0gICAgICAgIDB4MDA5ODogMHgwMmRjLCAjICAgICAgIFNNQUxMIFRJTERFCi0gICAgICAgIDB4MDA5OTogMHgyMTIyLCAjICAgICAgIFRSQURFIE1BUksgU0lHTgotICAgICAgICAweDAwOWE6IDB4MDE2MSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5YzogMHgwMTUzLCAjICAgICAgIExBVElOIFNNQUxMIExJR0FUVVJFIE9FCi0gICAgICAgIDB4MDA5ZjogMHgwMTc4LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKLX0pCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+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+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFCisgICAgJ1x1MjBhYycgICAjICAweDgwIC0+IEVVUk8gU0lHTgorICAgICdceDgxJyAgICAgIyAgMHg4MSAtPiA8Y29udHJvbD4KKyAgICAnXHUyMDFhJyAgICMgIDB4ODIgLT4gU0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDE5MicgICAjICAweDgzIC0+IExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSworICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdcdTIwMjAnICAgIyAgMHg4NiAtPiBEQUdHRVIKKyAgICAnXHUyMDIxJyAgICMgIDB4ODcgLT4gRE9VQkxFIERBR0dFUgorICAgICdcdTAyYzYnICAgIyAgMHg4OCAtPiBNT0RJRklFUiBMRVRURVIgQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXHUyMDMwJyAgICMgIDB4ODkgLT4gUEVSIE1JTExFIFNJR04KKyAgICAnXHUwMTYwJyAgICMgIDB4OEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x1MjAzOScgICAjICAweDhCIC0+IFNJTkdMRSBMRUZULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDE1MicgICAjICAweDhDIC0+IExBVElOIENBUElUQUwgTElHQVRVUkUgT0UKKyAgICAnXHUyNjY2JyAgICMgIDB4OEQgLT4gQkxBQ0sgRElBTU9ORCBTVUlUCisgICAgJ1x1MjY2MycgICAjICAweDhFIC0+IEJMQUNLIENMVUIgU1VJVAorICAgICdcdTI2NjUnICAgIyAgMHg4RiAtPiBCTEFDSyBIRUFSVCBTVUlUCisgICAgJ1x1MjY2MCcgICAjICAweDkwIC0+IEJMQUNLIFNQQURFIFNVSVQKKyAgICAnXHUyMDE4JyAgICMgIDB4OTEgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4OTIgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxYycgICAjICAweDkzIC0+IExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxZCcgICAjICAweDk0IC0+IFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjInICAgIyAgMHg5NSAtPiBCVUxMRVQKKyAgICAnXHUyMDEzJyAgICMgIDB4OTYgLT4gRU4gREFTSAorICAgICdcdTIwMTQnICAgIyAgMHg5NyAtPiBFTSBEQVNICisgICAgJ1x1MDJkYycgICAjICAweDk4IC0+IFNNQUxMIFRJTERFCisgICAgJ1x1MjEyMicgICAjICAweDk5IC0+IFRSQURFIE1BUksgU0lHTgorICAgICdcdTAxNjEnICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x4OWInICAgICAjICAweDlCIC0+IDxjb250cm9sPgorICAgICdcdTAxNTMnICAgIyAgMHg5QyAtPiBMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRQorICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CisgICAgJ1x1MDE3OCcgICAjICAweDlGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHhhMScgICAgICMgIDB4QTEgLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSworICAgICdceGEyJyAgICAgIyAgMHhBMiAtPiBDRU5UIFNJR04KKyAgICAnXHhhMycgICAgICMgIDB4QTMgLT4gUE9VTkQgU0lHTgorICAgICdceGE0JyAgICAgIyAgMHhBNCAtPiBDVVJSRU5DWSBTSUdOCisgICAgJ1x4YTUnICAgICAjICAweEE1IC0+IFlFTiBTSUdOCisgICAgJ1x4YTYnICAgICAjICAweEE2IC0+IEJST0tFTiBCQVIKKyAgICAnXHhhNycgICAgICMgIDB4QTcgLT4gU0VDVElPTiBTSUdOCisgICAgJ1x4YTgnICAgICAjICAweEE4IC0+IERJQUVSRVNJUworICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgorICAgICdceGFhJyAgICAgIyAgMHhBQSAtPiBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgorICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgorICAgICdceGFkJyAgICAgIyAgMHhBRCAtPiBTT0ZUIEhZUEhFTgorICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHhhZicgICAgICMgIDB4QUYgLT4gTUFDUk9OCisgICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCisgICAgJ1x4YjEnICAgICAjICAweEIxIC0+IFBMVVMtTUlOVVMgU0lHTgorICAgICdceGIyJyAgICAgIyAgMHhCMiAtPiBTVVBFUlNDUklQVCBUV08KKyAgICAnXHhiMycgICAgICMgIDB4QjMgLT4gU1VQRVJTQ1JJUFQgVEhSRUUKKyAgICAnXHhiNCcgICAgICMgIDB4QjQgLT4gQUNVVEUgQUNDRU5UCisgICAgJ1x4YjUnICAgICAjICAweEI1IC0+IE1JQ1JPIFNJR04KKyAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKKyAgICAnXHhiOCcgICAgICMgIDB4QjggLT4gQ0VESUxMQQorICAgICdceGI5JyAgICAgIyAgMHhCOSAtPiBTVVBFUlNDUklQVCBPTkUKKyAgICAnXHhiYScgICAgICMgIDB4QkEgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCisgICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGJjJyAgICAgIyAgMHhCQyAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKKyAgICAnXHhiZCcgICAgICMgIDB4QkQgLT4gVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCisgICAgJ1x4YmUnICAgICAjICAweEJFIC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUworICAgICdceGJmJyAgICAgIyAgMHhCRiAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCisgICAgJ1x4YzAnICAgICAjICAweEMwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRQorICAgICdceGMxJyAgICAgIyAgMHhDMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHhjMicgICAgICMgIDB4QzIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjMycgICAgICMgIDB4QzMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCisgICAgJ1x4YzQnICAgICAjICAweEM0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjNScgICAgICMgIDB4QzUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKyAgICAnXHhjNicgICAgICMgIDB4QzYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUKKyAgICAnXHhjNycgICAgICMgIDB4QzcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKyAgICAnXHhjOCcgICAgICMgIDB4QzggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4YzknICAgICAjICAweEM5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdceGNhJyAgICAgIyAgMHhDQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNiJyAgICAgIyAgMHhDQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4Y2MnICAgICAjICAweENDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGNkJyAgICAgIyAgMHhDRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhjZScgICAgICMgIDB4Q0UgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjZicgICAgICMgIDB4Q0YgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworICAgICdceGQwJyAgICAgIyAgMHhEMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEggKEljZWxhbmRpYykKKyAgICAnXHhkMScgICAgICMgIDB4RDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4ZDInICAgICAjICAweEQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQorICAgICdceGQzJyAgICAgIyAgMHhEMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhkNCcgICAgICMgIDB4RDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhkNScgICAgICMgIDB4RDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZDYnICAgICAjICAweEQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhkNycgICAgICMgIDB4RDcgLT4gTVVMVElQTElDQVRJT04gU0lHTgorICAgICdceGQ4JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4ZDknICAgICAjICAweEQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQorICAgICdceGRhJyAgICAgIyAgMHhEQSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHhkYicgICAgICMgIDB4REIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhkYycgICAgICMgIDB4REMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdceGRkJyAgICAgIyAgMHhERCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhkZScgICAgICMgIDB4REUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKKyAgICAnXHhkZicgICAgICMgIDB4REYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdlcm1hbikKKyAgICAnXHhlMCcgICAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQorICAgICdceGUxJyAgICAgIyAgMHhFMSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x4ZTInICAgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGUzJyAgICAgIyAgMHhFMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCisgICAgJ1x4ZTQnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZTUnICAgICAjICAweEU1IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorICAgICdceGU2JyAgICAgIyAgMHhFNiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQUUKKyAgICAnXHhlNycgICAgICMgIDB4RTcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCisgICAgJ1x4ZTgnICAgICAjICAweEU4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhlOScgICAgICMgIDB4RTkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdceGVhJyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlYicgICAgICMgIDB4RUIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlYycgICAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGVkJyAgICAgIyAgMHhFRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4ZWUnICAgICAjICAweEVFIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGVmJyAgICAgIyAgMHhFRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworICAgICdceGYwJyAgICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCisgICAgJ1x4ZjEnICAgICAjICAweEYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhmMicgICAgICMgIDB4RjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQorICAgICdceGYzJyAgICAgIyAgMHhGMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x4ZjQnICAgICAjICAweEY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGY1JyAgICAgIyAgMHhGNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZjYnICAgICAjICAweEY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjcnICAgICAjICAweEY3IC0+IERJVklTSU9OIFNJR04KKyAgICAnXHhmOCcgICAgICMgIDB4RjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhmOScgICAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQorICAgICdceGZhJyAgICAgIyAgMHhGQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCisgICAgJ1x4ZmInICAgICAjICAweEZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGZjJyAgICAgIyAgMHhGQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworICAgICdceGZkJyAgICAgIyAgMHhGRCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCisgICAgJ1x4ZmUnICAgICAjICAweEZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQorICAgICdceGZmJyAgICAgIyAgMHhGRiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworKQogCi0jIyMgRW5jb2RpbmcgTWFwCi0KLWVuY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5IGIvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5CmluZGV4IGFlZjg5NzUuLjY1NmI3OWQgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weQorKysgYi9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkKQEAgLTE0LDE4ICsxNCwxOCBAQAogY2xhc3MgQ29kZWMoY29kZWNzLkNvZGVjKToKIAogICAgIGRlZiBlbmNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX3RhYmxlKQogCiAgICAgZGVmIGRlY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfdGFibGUpCiAKIGNsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKICAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkluY3JlbWVudGFsRGVjb2Rlcik6CiAgICAgZGVmIGRlY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgU3RyZWFtV3JpdGVyKENvZGVjLGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgogICAgIHBhc3MKQEAgLTQ2LDEzMCArNDYsMjY3IEBACiAgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCiAgICAgKQogCi0jIyMgRGVjb2RpbmcgTWFwCiAKLWRlY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2lkZW50aXR5X2RpY3QocmFuZ2UoMjU2KSkKLWRlY29kaW5nX21hcC51cGRhdGUoewotICAgICAgICAweDAwODA6IDB4MDQ5NiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4MTogMHgwNDkyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMDgyOiAweDA0ZWUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDgzOiAweDA0OTMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMDg0OiAweDIwMWUsICMgICAgICAgIERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwODU6IDB4MjAyNiwgIyAgICAgICAgSE9SSVpPTlRBTCBFTExJUFNJUwotICAgICAgICAweDAwODY6IDB4MDRiNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4NzogMHgwNGFlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVCi0gICAgICAgIDB4MDA4ODogMHgwNGIyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwODk6IDB4MDRhZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUKLSAgICAgICAgMHgwMDhhOiAweDA0YTAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBU0hLSVIgS0EKLSAgICAgICAgMHgwMDhiOiAweDA0ZTIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDhjOiAweDA0YTIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4ZDogMHgwNDlhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOGU6IDB4MDRiYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQQotICAgICAgICAweDAwOGY6IDB4MDRiOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDA5MDogMHgwNDk3LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5MTogMHgyMDE4LCAjICAgICAgICBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTI6IDB4MjAxOSwgIyAgICAgICAgUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MzogMHgyMDFjLCAjICAgICAgICBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTQ6IDB4MjAxZCwgIyAgICAgICAgUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5NTogMHgyMDIyLCAjICAgICAgICBCVUxMRVQKLSAgICAgICAgMHgwMDk2OiAweDIwMTMsICMgICAgICAgIEVOIERBU0gKLSAgICAgICAgMHgwMDk3OiAweDIwMTQsICMgICAgICAgIEVNIERBU0gKLSAgICAgICAgMHgwMDk4OiAweDA0YjMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOTk6IDB4MDRiNywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOWE6IDB4MDRhMSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBU0hLSVIgS0EKLSAgICAgICAgMHgwMDliOiAweDA0ZTMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA5YzogMHgwNGEzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDlkOiAweDA0OWIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOWU6IDB4MDRiYiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEEKLSAgICAgICAgMHgwMDlmOiAweDA0YjksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMGExOiAweDA0MGUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFUgKEJ5ZWxvcnVzc2lhbikKLSAgICAgICAgMHgwMGEyOiAweDA0NWUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVIChCeWVsb3J1c3NpYW4pCi0gICAgICAgIDB4MDBhMzogMHgwNDA4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRQotICAgICAgICAweDAwYTQ6IDB4MDRlOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE8KLSAgICAgICAgMHgwMGE1OiAweDA0OTgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDBhNjogMHgwNGIwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBhODogMHgwNDAxLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTwotICAgICAgICAweDAwYWE6IDB4MDRkOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0EKLSAgICAgICAgMHgwMGFkOiAweDA0ZWYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBhZjogMHgwNDljLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwYjE6IDB4MDRiMSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGIyOiAweDA0MDYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQotICAgICAgICAweDAwYjM6IDB4MDQ1NiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQotICAgICAgICAweDAwYjQ6IDB4MDQ5OSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDBiNTogMHgwNGU5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8KLSAgICAgICAgMHgwMGI4OiAweDA0NTEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBJTwotICAgICAgICAweDAwYjk6IDB4MjExNiwgIyAgICAgICAgTlVNRVJPIFNJR04KLSAgICAgICAgMHgwMGJhOiAweDA0ZDksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQQotICAgICAgICAweDAwYmM6IDB4MDQ1OCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCi0gICAgICAgIDB4MDBiZDogMHgwNGFhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwYmU6IDB4MDRhYiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDBiZjogMHgwNDlkLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMGMwOiAweDA0MTAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEKLSAgICAgICAgMHgwMGMxOiAweDA0MTEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCi0gICAgICAgIDB4MDBjMjogMHgwNDEyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQotICAgICAgICAweDAwYzM6IDB4MDQxMywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFCi0gICAgICAgIDB4MDBjNDogMHgwNDE0LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQotICAgICAgICAweDAwYzU6IDB4MDQxNSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKLSAgICAgICAgMHgwMGM2OiAweDA0MTYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRQotICAgICAgICAweDAwYzc6IDB4MDQxNywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKLSAgICAgICAgMHgwMGM4OiAweDA0MTgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKLSAgICAgICAgMHgwMGM5OiAweDA0MTksICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAgMHgwMGNhOiAweDA0MWEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDBjYjogMHgwNDFiLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAotICAgICAgICAweDAwY2M6IDB4MDQxYywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU0KLSAgICAgICAgMHgwMGNkOiAweDA0MWQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCi0gICAgICAgIDB4MDBjZTogMHgwNDFlLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCi0gICAgICAgIDB4MDBjZjogMHgwNDFmLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRQotICAgICAgICAweDAwZDA6IDB4MDQyMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKLSAgICAgICAgMHgwMGQxOiAweDA0MjEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCi0gICAgICAgIDB4MDBkMjogMHgwNDIyLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURQotICAgICAgICAweDAwZDM6IDB4MDQyMywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQotICAgICAgICAweDAwZDQ6IDB4MDQyNCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKLSAgICAgICAgMHgwMGQ1OiAweDA0MjUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBCi0gICAgICAgIDB4MDBkNjogMHgwNDI2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKLSAgICAgICAgMHgwMGQ3OiAweDA0MjcsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQotICAgICAgICAweDAwZDg6IDB4MDQyOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBCi0gICAgICAgIDB4MDBkOTogMHgwNDI5LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQotICAgICAgICAweDAwZGE6IDB4MDQyYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCi0gICAgICAgIDB4MDBkYjogMHgwNDJiLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVCi0gICAgICAgIDB4MDBkYzogMHgwNDJjLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KLSAgICAgICAgMHgwMGRkOiAweDA0MmQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKLSAgICAgICAgMHgwMGRlOiAweDA0MmUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlVCi0gICAgICAgIDB4MDBkZjogMHgwNDJmLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQotICAgICAgICAweDAwZTA6IDB4MDQzMCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKLSAgICAgICAgMHgwMGUxOiAweDA0MzEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCRQotICAgICAgICAweDAwZTI6IDB4MDQzMiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDBlMzogMHgwNDMzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCi0gICAgICAgIDB4MDBlNDogMHgwNDM0LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgREUKLSAgICAgICAgMHgwMGU1OiAweDA0MzUsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBJRQotICAgICAgICAweDAwZTY6IDB4MDQzNiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQotICAgICAgICAweDAwZTc6IDB4MDQzNywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFCi0gICAgICAgIDB4MDBlODogMHgwNDM4LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQotICAgICAgICAweDAwZTk6IDB4MDQzOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKLSAgICAgICAgMHgwMGVhOiAweDA0M2EsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQQotICAgICAgICAweDAwZWI6IDB4MDQzYiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCi0gICAgICAgIDB4MDBlYzogMHgwNDNjLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KLSAgICAgICAgMHgwMGVkOiAweDA0M2QsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTgotICAgICAgICAweDAwZWU6IDB4MDQzZSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KLSAgICAgICAgMHgwMGVmOiAweDA0M2YsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBQRQotICAgICAgICAweDAwZjA6IDB4MDQ0MCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSCi0gICAgICAgIDB4MDBmMTogMHgwNDQxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKLSAgICAgICAgMHgwMGYyOiAweDA0NDIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBURQotICAgICAgICAweDAwZjM6IDB4MDQ0MywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUKLSAgICAgICAgMHgwMGY0OiAweDA0NDQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFRgotICAgICAgICAweDAwZjU6IDB4MDQ0NSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCi0gICAgICAgIDB4MDBmNjogMHgwNDQ2LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFCi0gICAgICAgIDB4MDBmNzogMHgwNDQ3LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCi0gICAgICAgIDB4MDBmODogMHgwNDQ4LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCi0gICAgICAgIDB4MDBmOTogMHgwNDQ5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEEKLSAgICAgICAgMHgwMGZhOiAweDA0NGEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KLSAgICAgICAgMHgwMGZiOiAweDA0NGIsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCi0gICAgICAgIDB4MDBmYzogMHgwNDRjLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU09GVCBTSUdOCi0gICAgICAgIDB4MDBmZDogMHgwNDRkLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQotICAgICAgICAweDAwZmU6IDB4MDQ0ZSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCi0gICAgICAgIDB4MDBmZjogMHgwNDRmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWUEKLX0pCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyMjIEVuY29kaW5nIE1hcAorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+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+IERFTEVURSAoREVMKQorICAgICdcdTA0OTYnICAgIyAgMHg4MCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDkyJyAgICMgIDB4ODEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCisgICAgJ1x1MDRlZScgICAjICAweDgyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHUwNDkzJyAgICMgIDB4ODMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQorICAgICdcdTIwMWUnICAgIyAgMHg4NCAtPiBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDI2JyAgICMgIDB4ODUgLT4gSE9SSVpPTlRBTCBFTExJUFNJUworICAgICdcdTA0YjYnICAgIyAgMHg4NiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFlJyAgICMgIDB4ODcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVQorICAgICdcdTA0YjInICAgIyAgMHg4OCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWYnICAgIyAgMHg4OSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVQorICAgICdcdTA0YTAnICAgIyAgMHg4QSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBCisgICAgJ1x1MDRlMicgICAjICAweDhCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHUwNGEyJyAgICMgIDB4OEMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDlhJyAgICMgIDB4OEQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGJhJyAgICMgIDB4OEUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQQorICAgICdcdTA0YjgnICAgIyAgMHg4RiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyAgICAnXHUwNDk3JyAgICMgIDB4OTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFjJyAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAorICAgICdcdTIwMTMnICAgIyAgMHg5NiAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHUwNGIzJyAgICMgIDB4OTggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiNycgICAjICAweDk5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGExJyAgICMgIDB4OUEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBU0hLSVIgS0EKKyAgICAnXHUwNGUzJyAgICMgIDB4OUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKyAgICAnXHUwNGEzJyAgICMgIDB4OUMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5YicgICAjICAweDlEIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YmInICAgIyAgMHg5RSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hIQQorICAgICdcdTA0YjknICAgIyAgMHg5RiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x4YTAnICAgICAjICAweEEwIC0+IE5PLUJSRUFLIFNQQUNFCisgICAgJ1x1MDQwZScgICAjICAweEExIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFUgKEJ5ZWxvcnVzc2lhbikKKyAgICAnXHUwNDVlJyAgICMgIDB4QTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFUgKEJ5ZWxvcnVzc2lhbikKKyAgICAnXHUwNDA4JyAgICMgIDB4QTMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkUKKyAgICAnXHUwNGU4JyAgICMgIDB4QTQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE8KKyAgICAnXHUwNDk4JyAgICMgIDB4QTUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGIwJyAgICMgIDB4QTYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQorICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHUwNDAxJyAgICMgIDB4QTggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU8KKyAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUwNGQ4JyAgICMgIDB4QUEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0EKKyAgICAnXHhhYicgICAgICMgIDB4QUIgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhhYycgICAgICMgIDB4QUMgLT4gTk9UIFNJR04KKyAgICAnXHUwNGVmJyAgICMgIDB4QUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KKyAgICAnXHhhZScgICAgICMgIDB4QUUgLT4gUkVHSVNURVJFRCBTSUdOCisgICAgJ1x1MDQ5YycgICAjICAweEFGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCisgICAgJ1x4YjAnICAgICAjICAweEIwIC0+IERFR1JFRSBTSUdOCisgICAgJ1x1MDRiMScgICAjICAweEIxIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCisgICAgJ1x1MDQwNicgICAjICAweEIyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSQorICAgICdcdTA0NTYnICAgIyAgMHhCMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgJ1x1MDQ5OScgICAjICAweEI0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0ZTknICAgIyAgMHhCNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8KKyAgICAnXHhiNicgICAgICMgIDB4QjYgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YjcnICAgICAjICAweEI3IC0+IE1JRERMRSBET1QKKyAgICAnXHUwNDUxJyAgICMgIDB4QjggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCisgICAgJ1x1MjExNicgICAjICAweEI5IC0+IE5VTUVSTyBTSUdOCisgICAgJ1x1MDRkOScgICAjICAweEJBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQQorICAgICdceGJiJyAgICAgIyAgMHhCQiAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwNDU4JyAgICMgIDB4QkMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFCisgICAgJ1x1MDRhYScgICAjICAweEJEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhYicgICAjICAweEJFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OWQnICAgIyAgMHhCRiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyAgICAnXHUwNDEwJyAgICMgIDB4QzAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQorICAgICdcdTA0MTEnICAgIyAgMHhDMSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRQorICAgICdcdTA0MTInICAgIyAgMHhDMiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRQorICAgICdcdTA0MTMnICAgIyAgMHhDMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKKyAgICAnXHUwNDE0JyAgICMgIDB4QzQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREUKKyAgICAnXHUwNDE1JyAgICMgIDB4QzUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUKKyAgICAnXHUwNDE2JyAgICMgIDB4QzYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCisgICAgJ1x1MDQxNycgICAjICAweEM3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpFCisgICAgJ1x1MDQxOCcgICAjICAweEM4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEkKKyAgICAnXHUwNDE5JyAgICMgIDB4QzkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQorICAgICdcdTA0MWEnICAgIyAgMHhDQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQQorICAgICdcdTA0MWInICAgIyAgMHhDQiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTAorICAgICdcdTA0MWMnICAgIyAgMHhDQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQorICAgICdcdTA0MWQnICAgIyAgMHhDRCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTgorICAgICdcdTA0MWUnICAgIyAgMHhDRSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1x1MDQxZicgICAjICAweENGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCisgICAgJ1x1MDQyMCcgICAjICAweEQwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVSCisgICAgJ1x1MDQyMScgICAjICAweEQxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTCisgICAgJ1x1MDQyMicgICAjICAweEQyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCisgICAgJ1x1MDQyMycgICAjICAweEQzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFUKKyAgICAnXHUwNDI0JyAgICMgIDB4RDQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUYKKyAgICAnXHUwNDI1JyAgICMgIDB4RDUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKKyAgICAnXHUwNDI2JyAgICMgIDB4RDYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFCisgICAgJ1x1MDQyNycgICAjICAweEQ3IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRQorICAgICdcdTA0MjgnICAgIyAgMHhEOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKKyAgICAnXHUwNDI5JyAgICMgIDB4RDkgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEEKKyAgICAnXHUwNDJhJyAgICMgIDB4REEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOCisgICAgJ1x1MDQyYicgICAjICAweERCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDJjJyAgICMgIDB4REMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOCisgICAgJ1x1MDQyZCcgICAjICAweEREIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEUKKyAgICAnXHUwNDJlJyAgICMgIDB4REUgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKKyAgICAnXHUwNDJmJyAgICMgIDB4REYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUEKKyAgICAnXHUwNDMwJyAgICMgIDB4RTAgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEKKyAgICAnXHUwNDMxJyAgICMgIDB4RTEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCisgICAgJ1x1MDQzMicgICAjICAweEUyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBWRQorICAgICdcdTA0MzMnICAgIyAgMHhFMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFCisgICAgJ1x1MDQzNCcgICAjICAweEU0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBERQorICAgICdcdTA0MzUnICAgIyAgMHhFNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUKKyAgICAnXHUwNDM2JyAgICMgIDB4RTYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRQorICAgICdcdTA0MzcnICAgIyAgMHhFNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKKyAgICAnXHUwNDM4JyAgICMgIDB4RTggLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkKKyAgICAnXHUwNDM5JyAgICMgIDB4RTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKyAgICAnXHUwNDNhJyAgICMgIDB4RUEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCisgICAgJ1x1MDQzYicgICAjICAweEVCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTAorICAgICdcdTA0M2MnICAgIyAgMHhFQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU0KKyAgICAnXHUwNDNkJyAgICMgIDB4RUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCisgICAgJ1x1MDQzZScgICAjICAweEVFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBPCisgICAgJ1x1MDQzZicgICAjICAweEVGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBQRQorICAgICdcdTA0NDAnICAgIyAgMHhGMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKKyAgICAnXHUwNDQxJyAgICMgIDB4RjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTCisgICAgJ1x1MDQ0MicgICAjICAweEYyIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBURQorICAgICdcdTA0NDMnICAgIyAgMHhGMyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQorICAgICdcdTA0NDQnICAgIyAgMHhGNCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUYKKyAgICAnXHUwNDQ1JyAgICMgIDB4RjUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBCisgICAgJ1x1MDQ0NicgICAjICAweEY2IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKKyAgICAnXHUwNDQ3JyAgICMgIDB4RjcgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRQorICAgICdcdTA0NDgnICAgIyAgMHhGOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hBCisgICAgJ1x1MDQ0OScgICAjICAweEY5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQorICAgICdcdTA0NGEnICAgIyAgMHhGQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOCisgICAgJ1x1MDQ0YicgICAjICAweEZCIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZRVJVCisgICAgJ1x1MDQ0YycgICAjICAweEZDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDRkJyAgICMgIDB4RkQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEUKKyAgICAnXHUwNDRlJyAgICMgIDB4RkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVCisgICAgJ1x1MDQ0ZicgICAjICAweEZGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBZQQorKQogCi1lbmNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9lbmNvZGluZ19tYXAoZGVjb2RpbmdfbWFwKQorIyMjIEVuY29kaW5nIHRhYmxlCitlbmNvZGluZ190YWJsZT1jb2RlY3MuY2hhcm1hcF9idWlsZChkZWNvZGluZ190YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9maWxlaW5wdXQucHkgYi9MaWIvZmlsZWlucHV0LnB5CmluZGV4IDU1NGJlYjIuLmRiYmJiMjEgMTAwNjQ0Ci0tLSBhL0xpYi9maWxlaW5wdXQucHkKKysrIGIvTGliL2ZpbGVpbnB1dC5weQpAQCAtMzk4LDkgKzM5OCw4IEBACiAKIAogZGVmIGhvb2tfZW5jb2RlZChlbmNvZGluZyk6Ci0gICAgaW1wb3J0IGNvZGVjcwogICAgIGRlZiBvcGVuaG9vayhmaWxlbmFtZSwgbW9kZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3Mub3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcpCisgICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZykKICAgICByZXR1cm4gb3Blbmhvb2sKIAogCmRpZmYgLS1naXQgYS9MaWIvZm5tYXRjaC5weSBiL0xpYi9mbm1hdGNoLnB5CmluZGV4IDcyNmZiZTUuLmY0NDY3NjkgMTAwNjQ0Ci0tLSBhL0xpYi9mbm1hdGNoLnB5CisrKyBiL0xpYi9mbm1hdGNoLnB5CkBAIC0zNSw5ICszNSw5IEBACiAgICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCiAgICAgcmV0dXJuIGZubWF0Y2hjYXNlKG5hbWUsIHBhdCkKIAotQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0yNTApCi1kZWYgX2NvbXBpbGVfcGF0dGVybihwYXQsIGlzX2J5dGVzPUZhbHNlKToKLSAgICBpZiBpc19ieXRlczoKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9MjUwLCB0eXBlZD1UcnVlKQorZGVmIF9jb21waWxlX3BhdHRlcm4ocGF0KToKKyAgICBpZiBpc2luc3RhbmNlKHBhdCwgYnl0ZXMpOgogICAgICAgICBwYXRfc3RyID0gc3RyKHBhdCwgJ0lTTy04ODU5LTEnKQogICAgICAgICByZXNfc3RyID0gdHJhbnNsYXRlKHBhdF9zdHIpCiAgICAgICAgIHJlcyA9IGJ5dGVzKHJlc19zdHIsICdJU08tODg1OS0xJykKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAiIiJSZXR1cm4gdGhlIHN1YnNldCBvZiB0aGUgbGlzdCBOQU1FUyB0aGF0IG1hdGNoIFBBVC4iIiIKICAgICByZXN1bHQgPSBbXQogICAgIHBhdCA9IG9zLnBhdGgubm9ybWNhc2UocGF0KQotICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQsIGlzaW5zdGFuY2UocGF0LCBieXRlcykpCisgICAgbWF0Y2ggPSBfY29tcGlsZV9wYXR0ZXJuKHBhdCkKICAgICBpZiBvcy5wYXRoIGlzIHBvc2l4cGF0aDoKICAgICAgICAgIyBub3JtY2FzZSBvbiBwb3NpeCBpcyBOT1AuIE9wdGltaXplIGl0IGF3YXkgZnJvbSB0aGUgbG9vcC4KICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgVGhpcyBpcyBhIHZlcnNpb24gb2YgZm5tYXRjaCgpIHdoaWNoIGRvZXNuJ3QgY2FzZS1ub3JtYWxpemUKICAgICBpdHMgYXJndW1lbnRzLgogICAgICIiIgotICAgIG1hdGNoID0gX2NvbXBpbGVfcGF0dGVybihwYXQsIGlzaW5zdGFuY2UocGF0LCBieXRlcykpCisgICAgbWF0Y2ggPSBfY29tcGlsZV9wYXR0ZXJuKHBhdCkKICAgICByZXR1cm4gbWF0Y2gobmFtZSkgaXMgbm90IE5vbmUKIAogCmRpZmYgLS1naXQgYS9MaWIvZnRwbGliLnB5IGIvTGliL2Z0cGxpYi5weQppbmRleCA4ZTUzMDIzLi4xODg4N2E2IDEwMDY0NAotLS0gYS9MaWIvZnRwbGliLnB5CisrKyBiL0xpYi9mdHBsaWIucHkKQEAgLTEwMCwxNCArMTAwLDE1IEBACiAgICAgZmlsZSA9IE5vbmUKICAgICB3ZWxjb21lID0gTm9uZQogICAgIHBhc3NpdmVzZXJ2ZXIgPSAxCi0gICAgZW5jb2RpbmcgPSAibGF0aW4xIgorICAgIGVuY29kaW5nID0gImxhdGluLTEiCiAKICAgICAjIEluaXRpYWxpemF0aW9uIG1ldGhvZCAoY2FsbGVkIGJ5IGNsYXNzIGluc3RhbnRpYXRpb24pLgogICAgICMgSW5pdGlhbGl6ZSBob3N0IHRvIGxvY2FsaG9zdCwgcG9ydCB0byBzdGFuZGFyZCBmdHAgcG9ydAogICAgICMgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBob3N0IChmb3IgY29ubmVjdCgpKSwKICAgICAjIGFuZCB1c2VyLCBwYXNzd2QsIGFjY3QgKGZvciBsb2dpbigpKQogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JycsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VULCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKKyAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgaWYgaG9zdDoKICAgICAgICAgICAgIHNlbGYuY29ubmVjdChob3N0KQpAQCAtMTI4LDEwICsxMjksMTIgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnNvY2sgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCi0gICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PS05OTkpOgorICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgdGltZW91dD0tOTk5LCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgJycnQ29ubmVjdCB0byBob3N0LiAgQXJndW1lbnRzIGFyZToKICAgICAgICAgIC0gaG9zdDogaG9zdG5hbWUgdG8gY29ubmVjdCB0byAoc3RyaW5nLCBkZWZhdWx0IHByZXZpb3VzIGhvc3QpCiAgICAgICAgICAtIHBvcnQ6IHBvcnQgdG8gY29ubmVjdCB0byAoaW50ZWdlciwgZGVmYXVsdCBwcmV2aW91cyBwb3J0KQorICAgICAgICAgLSBzb3VyY2VfYWRkcmVzczogYSAyLXR1cGxlIChob3N0LCBwb3J0KSBmb3IgdGhlIHNvY2tldCB0byBiaW5kCisgICAgICAgICAgIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4KICAgICAgICAgJycnCiAgICAgICAgIGlmIGhvc3QgIT0gJyc6CiAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CkBAIC0xMzksNyArMTQyLDEwIEBACiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgIGlmIHRpbWVvdXQgIT0gLTk5OToKICAgICAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKLSAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChzZWxmLmhvc3QsIHNlbGYucG9ydCksIHNlbGYudGltZW91dCkKKyAgICAgICAgaWYgc291cmNlX2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKKyAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChzZWxmLmhvc3QsIHNlbGYucG9ydCksIHNlbGYudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPXNlbGYuc291cmNlX2FkZHJlc3MpCiAgICAgICAgIHNlbGYuYWYgPSBzZWxmLnNvY2suZmFtaWx5CiAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jay5tYWtlZmlsZSgncicsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCiAgICAgICAgIHNlbGYud2VsY29tZSA9IHNlbGYuZ2V0cmVzcCgpCkBAIC0xNjksMTAgKzE3NSw4IEBACiAKICAgICAjIEludGVybmFsOiAic2FuaXRpemUiIGEgc3RyaW5nIGZvciBwcmludGluZwogICAgIGRlZiBzYW5pdGl6ZShzZWxmLCBzKToKLSAgICAgICAgaWYgc1s6NV0gPT0gJ3Bhc3MgJyBvciBzWzo1XSA9PSAnUEFTUyAnOgotICAgICAgICAgICAgaSA9IGxlbihzKQotICAgICAgICAgICAgd2hpbGUgaSA+IDUgYW5kIHNbaS0xXSBpbiB7J1xyJywgJ1xuJ306Ci0gICAgICAgICAgICAgICAgaSA9IGktMQorICAgICAgICBpZiBzWzo1XSBpbiB7J3Bhc3MgJywgJ1BBU1MgJ306CisgICAgICAgICAgICBpID0gbGVuKHMucnN0cmlwKCdcclxuJykpCiAgICAgICAgICAgICBzID0gc1s6NV0gKyAnKicqKGktNSkgKyBzW2k6XQogICAgICAgICByZXR1cm4gcmVwcihzKQogCkBAIC0zMzUsNyArMzM5LDggQEAKICAgICAgICAgc2l6ZSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5wYXNzaXZlc2VydmVyOgogICAgICAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYubWFrZXBhc3YoKQotICAgICAgICAgICAgY29ubiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHNlbGYudGltZW91dCkKKyAgICAgICAgICAgIGNvbm4gPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCBzZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPXNlbGYuc291cmNlX2FkZHJlc3MpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgcmVzdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJSRVNUICVzIiAlIHJlc3QpCkBAIC0zNTQsOCArMzU5LDcgQEAKICAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc29jayA9IHNlbGYubWFrZXBvcnQoKQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLm1ha2Vwb3J0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgICBpZiByZXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRjbWQoIlJFU1QgJXMiICUgcmVzdCkKICAgICAgICAgICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKGNtZCkKQEAgLTM2Nyw4ICszNzEsNiBAQAogICAgICAgICAgICAgICAgIGNvbm4sIHNvY2thZGRyID0gc29jay5hY2NlcHQoKQogICAgICAgICAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQ6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4uc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICBpZiByZXNwWzozXSA9PSAnMTUwJzoKICAgICAgICAgICAgICMgdGhpcyBpcyBjb25kaXRpb25hbCBpbiBjYXNlIHdlIHJlY2VpdmVkIGEgMTI1CiAgICAgICAgICAgICBzaXplID0gcGFyc2UxNTAocmVzcCkKQEAgLTQyNiw3ICs0MjgsNyBAQAogICAgICAgICAiIiJSZXRyaWV2ZSBkYXRhIGluIGxpbmUgbW9kZS4gIEEgbmV3IHBvcnQgaXMgY3JlYXRlZCBmb3IgeW91LgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgY21kOiBBIFJFVFIsIExJU1QsIE5MU1QsIG9yIE1MU0QgY29tbWFuZC4KKyAgICAgICAgICBjbWQ6IEEgUkVUUiwgTElTVCwgb3IgTkxTVCBjb21tYW5kLgogICAgICAgICAgIGNhbGxiYWNrOiBBbiBvcHRpb25hbCBzaW5nbGUgcGFyYW1ldGVyIGNhbGxhYmxlIHRoYXQgaXMgY2FsbGVkCiAgICAgICAgICAgICAgICAgICAgIGZvciBlYWNoIGxpbmUgd2l0aCB0aGUgdHJhaWxpbmcgQ1JMRiBzdHJpcHBlZC4KICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHQ6IHByaW50X2xpbmUoKV0KQEAgLTUyNyw2ICs1MjksMzQgQEAKICAgICAgICAgICAgICAgICBjbWQgPSBjbWQgKyAoJyAnICsgYXJnKQogICAgICAgICBzZWxmLnJldHJsaW5lcyhjbWQsIGZ1bmMpCiAKKyAgICBkZWYgbWxzZChzZWxmLCBwYXRoPSIiLCBmYWN0cz1bXSk6CisgICAgICAgICcnJ0xpc3QgYSBkaXJlY3RvcnkgaW4gYSBzdGFuZGFyZGl6ZWQgZm9ybWF0IGJ5IHVzaW5nIE1MU0QKKyAgICAgICAgY29tbWFuZCAoUkZDLTM2NTkpLiBJZiBwYXRoIGlzIG9taXR0ZWQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisgICAgICAgIGlzIGFzc3VtZWQuICJmYWN0cyIgaXMgYSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSB0eXBlCisgICAgICAgIG9mIGluZm9ybWF0aW9uIGRlc2lyZWQgKGUuZy4gWyJ0eXBlIiwgInNpemUiLCAicGVybSJdKS4KKworICAgICAgICBSZXR1cm4gYSBnZW5lcmF0b3Igb2JqZWN0IHlpZWxkaW5nIGEgdHVwbGUgb2YgdHdvIGVsZW1lbnRzCisgICAgICAgIGZvciBldmVyeSBmaWxlIGZvdW5kIGluIHBhdGguCisgICAgICAgIEZpcnN0IGVsZW1lbnQgaXMgdGhlIGZpbGUgbmFtZSwgdGhlIHNlY29uZCBvbmUgaXMgYSBkaWN0aW9uYXJ5CisgICAgICAgIGluY2x1ZGluZyBhIHZhcmlhYmxlIG51bWJlciBvZiAiZmFjdHMiIGRlcGVuZGluZyBvbiB0aGUgc2VydmVyCisgICAgICAgIGFuZCB3aGV0aGVyICJmYWN0cyIgYXJndW1lbnQgaGFzIGJlZW4gcHJvdmlkZWQuCisgICAgICAgICcnJworICAgICAgICBpZiBmYWN0czoKKyAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiT1BUUyBNTFNUICIgKyAiOyIuam9pbihmYWN0cykgKyAiOyIpCisgICAgICAgIGlmIHBhdGg6CisgICAgICAgICAgICBjbWQgPSAiTUxTRCAlcyIgJSBwYXRoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbWQgPSAiTUxTRCIKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBzZWxmLnJldHJsaW5lcyhjbWQsIGxpbmVzLmFwcGVuZCkKKyAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBmYWN0c19mb3VuZCwgXywgbmFtZSA9IGxpbmUucnN0cmlwKENSTEYpLnBhcnRpdGlvbignICcpCisgICAgICAgICAgICBlbnRyeSA9IHt9CisgICAgICAgICAgICBmb3IgZmFjdCBpbiBmYWN0c19mb3VuZFs6LTFdLnNwbGl0KCI7Iik6CisgICAgICAgICAgICAgICAga2V5LCBfLCB2YWx1ZSA9IGZhY3QucGFydGl0aW9uKCI9IikKKyAgICAgICAgICAgICAgICBlbnRyeVtrZXkubG93ZXIoKV0gPSB2YWx1ZQorICAgICAgICAgICAgeWllbGQgKG5hbWUsIGVudHJ5KQorCiAgICAgZGVmIHJlbmFtZShzZWxmLCBmcm9tbmFtZSwgdG9uYW1lKToKICAgICAgICAgJycnUmVuYW1lIGEgZmlsZS4nJycKICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnUk5GUiAnICsgZnJvbW5hbWUpCkBAIC01NjEsMTAgKzU5MSw3IEBACiAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1NJWkUgJyArIGZpbGVuYW1lKQogICAgICAgICBpZiByZXNwWzozXSA9PSAnMjEzJzoKICAgICAgICAgICAgIHMgPSByZXNwWzM6XS5zdHJpcCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGludChzKQotICAgICAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50KHMpCisgICAgICAgICAgICByZXR1cm4gaW50KHMpCiAKICAgICBkZWYgbWtkKHNlbGYsIGRpcm5hbWUpOgogICAgICAgICAnJydNYWtlIGEgZGlyZWN0b3J5LCByZXR1cm4gaXRzIGZ1bGwgcGF0aG5hbWUuJycnCkBAIC01OTYsMTEgKzYyMywxMSBAQAogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAnJydDbG9zZSB0aGUgY29ubmVjdGlvbiB3aXRob3V0IGFzc3VtaW5nIGFueXRoaW5nIGFib3V0IGl0LicnJwotICAgICAgICBpZiBzZWxmLmZpbGU6CisgICAgICAgIGlmIHNlbGYuZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2sgPSBOb25lCi0KKyAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrID0gTm9uZQogCiB0cnk6CiAgICAgaW1wb3J0IHNzbApAQCAtNjQ0LDcgKzY3MSw3IEBACiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywga2V5ZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VULCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQpAQCAtNjU1LDcgKzY4Miw3IEBACiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKICAgICAgICAgICAgIHNlbGYuX3Byb3RfcCA9IEZhbHNlCi0gICAgICAgICAgICBGVFAuX19pbml0X18oc2VsZiwgaG9zdCwgdXNlciwgcGFzc3dkLCBhY2N0LCB0aW1lb3V0KQorICAgICAgICAgICAgRlRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHVzZXIsIHBhc3N3ZCwgYWNjdCwgdGltZW91dCwgc291cmNlX2FkZHJlc3MpCiAKICAgICAgICAgZGVmIGxvZ2luKHNlbGYsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgc2VjdXJlPVRydWUpOgogICAgICAgICAgICAgaWYgc2VjdXJlIGFuZCBub3QgaXNpbnN0YW5jZShzZWxmLnNvY2ssIHNzbC5TU0xTb2NrZXQpOgpAQCAtNjc5LDYgKzcwNiwxNCBAQAogICAgICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrLm1ha2VmaWxlKG1vZGU9J3InLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogICAgICAgICAgICAgcmV0dXJuIHJlc3AKIAorICAgICAgICBkZWYgY2NjKHNlbGYpOgorICAgICAgICAgICAgJycnU3dpdGNoIGJhY2sgdG8gYSBjbGVhci10ZXh0IGNvbnRyb2wgY29ubmVjdGlvbi4nJycKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuc29jaywgc3NsLlNTTFNvY2tldCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90IHVzaW5nIFRMUyIpCisgICAgICAgICAgICByZXNwID0gc2VsZi52b2lkY21kKCdDQ0MnKQorICAgICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5zb2NrLnVud3JhcCgpCisgICAgICAgICAgICByZXR1cm4gcmVzcAorCiAgICAgICAgIGRlZiBwcm90X3Aoc2VsZik6CiAgICAgICAgICAgICAnJydTZXQgdXAgc2VjdXJlIGRhdGEgY29ubmVjdGlvbi4nJycKICAgICAgICAgICAgICMgUFJPVCBkZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBkYXRhIGNoYW5uZWwgaXMgdG8gYmUgcHJvdGVjdGVkLgpAQCAtNzE1LDggKzc1MCw3IEBACiAKICAgICAgICAgZGVmIHJldHJiaW5hcnkoc2VsZiwgY21kLCBjYWxsYmFjaywgYmxvY2tzaXplPTgxOTIsIHJlc3Q9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLnZvaWRjbWQoJ1RZUEUgSScpCi0gICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KSBhcyBjb25uOgogICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBjb25uLnJlY3YoYmxvY2tzaXplKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKQEAgLTcyNSw4ICs3NTksNiBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgcmV0cmxpbmVzKHNlbGYsIGNtZCwgY2FsbGJhY2sgPSBOb25lKToKQEAgLTczNCw3ICs3NjYsNyBAQAogICAgICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnVFlQRSBBJykKICAgICAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCkKICAgICAgICAgICAgIGZwID0gY29ubi5tYWtlZmlsZSgncicsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIGZwLCBjb25uOgogICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdnaW5nID4gMjogcHJpbnQoJypyZXRyKicsIHJlcHIobGluZSkpCkBAIC03NDgsMTUgKzc4MCwxMSBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIHN0b3JiaW5hcnkoc2VsZiwgY21kLCBmcCwgYmxvY2tzaXplPTgxOTIsIGNhbGxiYWNrPU5vbmUsIHJlc3Q9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLnZvaWRjbWQoJ1RZUEUgSScpCi0gICAgICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KSBhcyBjb25uOgogICAgICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWQoYmxvY2tzaXplKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOiBicmVhawpAQCAtNzY1LDE0ICs3OTMsMTEgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIHN0b3JsaW5lcyhzZWxmLCBjbWQsIGZwLCBjYWxsYmFjaz1Ob25lKToKICAgICAgICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBBJykKLSAgICAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQpIGFzIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZGxpbmUoKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOiBicmVhawpAQCAtNzg0LDggKzgwOSw2IEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiBhYm9ydChzZWxmKToKQEAgLTgxOCwxMSArODQxLDcgQEAKICAgICBtID0gXzE1MF9yZS5tYXRjaChyZXNwKQogICAgIGlmIG5vdCBtOgogICAgICAgICByZXR1cm4gTm9uZQotICAgIHMgPSBtLmdyb3VwKDEpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcmV0dXJuIGludChzKQorICAgIHJldHVybiBpbnQobS5ncm91cCgxKSkKIAogCiBfMjI3X3JlID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Z1bmN0b29scy5weSBiL0xpYi9mdW5jdG9vbHMucHkKaW5kZXggODVlYTI1Ny4uMjI2YTQ2ZSAxMDA2NDQKLS0tIGEvTGliL2Z1bmN0b29scy5weQorKysgYi9MaWIvZnVuY3Rvb2xzLnB5CkBAIC0xMiwxNiArMTIsMjIgQEAKICAgICAgICAgICAgJ3RvdGFsX29yZGVyaW5nJywgJ2NtcF90b19rZXknLCAnbHJ1X2NhY2hlJywgJ3JlZHVjZScsICdwYXJ0aWFsJ10KIAogZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsLCByZWR1Y2UKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBuYW1lZHR1cGxlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiB0cnk6CiAgICAgZnJvbSBfdGhyZWFkIGltcG9ydCBhbGxvY2F0ZV9sb2NrIGFzIExvY2sKIGV4Y2VwdDoKICAgICBmcm9tIF9kdW1teV90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jawogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgdXBkYXRlX3dyYXBwZXIoKSBhbmQgd3JhcHMoKSBkZWNvcmF0b3IKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKICMgdXBkYXRlX3dyYXBwZXIoKSBhbmQgd3JhcHMoKSBhcmUgdG9vbHMgdG8gaGVscCB3cml0ZQogIyB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNhbiBoYW5kbGUgbmFpdmUgaW50cm9zcGVjdGlvbgogCi1XUkFQUEVSX0FTU0lHTk1FTlRTID0gKCdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fZG9jX18nLCAnX19hbm5vdGF0aW9uc19fJykKK1dSQVBQRVJfQVNTSUdOTUVOVFMgPSAoJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nLAorICAgICAgICAgICAgICAgICAgICAgICAnX19hbm5vdGF0aW9uc19fJykKIFdSQVBQRVJfVVBEQVRFUyA9ICgnX19kaWN0X18nLCkKIGRlZiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLAogICAgICAgICAgICAgICAgICAgIHdyYXBwZWQsCkBAIC02NSw2ICs3MSwxMSBAQAogICAgIHJldHVybiBwYXJ0aWFsKHVwZGF0ZV93cmFwcGVyLCB3cmFwcGVkPXdyYXBwZWQsCiAgICAgICAgICAgICAgICAgICAgYXNzaWduZWQ9YXNzaWduZWQsIHVwZGF0ZWQ9dXBkYXRlZCkKIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIHRvdGFsX29yZGVyaW5nIGNsYXNzIGRlY29yYXRvcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwogZGVmIHRvdGFsX29yZGVyaW5nKGNscyk6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIHRoYXQgZmlsbHMgaW4gbWlzc2luZyBvcmRlcmluZyBtZXRob2RzIiIiCiAgICAgY29udmVydCA9IHsKQEAgLTkzLDYgKzEwNCwxMSBAQAogICAgICAgICAgICAgc2V0YXR0cihjbHMsIG9wbmFtZSwgb3BmdW5jKQogICAgIHJldHVybiBjbHMKIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIGNtcF90b19rZXkoKSBmdW5jdGlvbiBjb252ZXJ0ZXIKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKIGRlZiBjbXBfdG9fa2V5KG15Y21wKToKICAgICAiIiJDb252ZXJ0IGEgY21wPSBmdW5jdGlvbiBpbnRvIGEga2V5PSBmdW5jdGlvbiIiIgogICAgIGNsYXNzIEsob2JqZWN0KToKQEAgLTExNCw5NSArMTMwLDE3NCBAQAogICAgICAgICBfX2hhc2hfXyA9IE5vbmUKICAgICByZXR1cm4gSwogCi1fQ2FjaGVJbmZvID0gbmFtZWR0dXBsZSgiQ2FjaGVJbmZvIiwgImhpdHMgbWlzc2VzIG1heHNpemUgY3VycnNpemUiKQordHJ5OgorICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKIAotZGVmIGxydV9jYWNoZShtYXhzaXplPTEwMCk6CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgTFJVIENhY2hlIGZ1bmN0aW9uIGRlY29yYXRvcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworX0NhY2hlSW5mbyA9IG5hbWVkdHVwbGUoIkNhY2hlSW5mbyIsIFsiaGl0cyIsICJtaXNzZXMiLCAibWF4c2l6ZSIsICJjdXJyc2l6ZSJdKQorCitjbGFzcyBfSGFzaGVkU2VxKGxpc3QpOgorICAgIF9fc2xvdHNfXyA9ICdoYXNodmFsdWUnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHVwLCBoYXNoPWhhc2gpOgorICAgICAgICBzZWxmWzpdID0gdHVwCisgICAgICAgIHNlbGYuaGFzaHZhbHVlID0gaGFzaCh0dXApCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmhhc2h2YWx1ZQorCitkZWYgX21ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkLAorICAgICAgICAgICAgIGt3ZF9tYXJrID0gKG9iamVjdCgpLCksCisgICAgICAgICAgICAgZmFzdHR5cGVzID0ge2ludCwgc3RyLCBmcm96ZW5zZXQsIHR5cGUoTm9uZSl9LAorICAgICAgICAgICAgIHNvcnRlZD1zb3J0ZWQsIHR1cGxlPXR1cGxlLCB0eXBlPXR5cGUsIGxlbj1sZW4pOgorICAgICdNYWtlIGEgY2FjaGUga2V5IGZyb20gb3B0aW9uYWxseSB0eXBlZCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cycKKyAgICBrZXkgPSBhcmdzCisgICAgaWYga3dkczoKKyAgICAgICAgc29ydGVkX2l0ZW1zID0gc29ydGVkKGt3ZHMuaXRlbXMoKSkKKyAgICAgICAga2V5ICs9IGt3ZF9tYXJrCisgICAgICAgIGZvciBpdGVtIGluIHNvcnRlZF9pdGVtczoKKyAgICAgICAgICAgIGtleSArPSBpdGVtCisgICAgaWYgdHlwZWQ6CisgICAgICAgIGtleSArPSB0dXBsZSh0eXBlKHYpIGZvciB2IGluIGFyZ3MpCisgICAgICAgIGlmIGt3ZHM6CisgICAgICAgICAgICBrZXkgKz0gdHVwbGUodHlwZSh2KSBmb3IgaywgdiBpbiBzb3J0ZWRfaXRlbXMpCisgICAgZWxpZiBsZW4oa2V5KSA9PSAxIGFuZCB0eXBlKGtleVswXSkgaW4gZmFzdHR5cGVzOgorICAgICAgICByZXR1cm4ga2V5WzBdCisgICAgcmV0dXJuIF9IYXNoZWRTZXEoa2V5KQorCitkZWYgbHJ1X2NhY2hlKG1heHNpemU9MTI4LCB0eXBlZD1GYWxzZSk6CiAgICAgIiIiTGVhc3QtcmVjZW50bHktdXNlZCBjYWNoZSBkZWNvcmF0b3IuCiAKICAgICBJZiAqbWF4c2l6ZSogaXMgc2V0IHRvIE5vbmUsIHRoZSBMUlUgZmVhdHVyZXMgYXJlIGRpc2FibGVkIGFuZCB0aGUgY2FjaGUKICAgICBjYW4gZ3JvdyB3aXRob3V0IGJvdW5kLgogCisgICAgSWYgKnR5cGVkKiBpcyBUcnVlLCBhcmd1bWVudHMgb2YgZGlmZmVyZW50IHR5cGVzIHdpbGwgYmUgY2FjaGVkIHNlcGFyYXRlbHkuCisgICAgRm9yIGV4YW1wbGUsIGYoMy4wKSBhbmQgZigzKSB3aWxsIGJlIHRyZWF0ZWQgYXMgZGlzdGluY3QgY2FsbHMgd2l0aAorICAgIGRpc3RpbmN0IHJlc3VsdHMuCisKICAgICBBcmd1bWVudHMgdG8gdGhlIGNhY2hlZCBmdW5jdGlvbiBtdXN0IGJlIGhhc2hhYmxlLgogCi0gICAgVmlldyB0aGUgY2FjaGUgc3RhdGlzdGljcyBuYW1lZCB0dXBsZSAoaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSkgd2l0aAotICAgIGYuY2FjaGVfaW5mbygpLiAgQ2xlYXIgdGhlIGNhY2hlIGFuZCBzdGF0aXN0aWNzIHdpdGggZi5jYWNoZV9jbGVhcigpLgorICAgIFZpZXcgdGhlIGNhY2hlIHN0YXRpc3RpY3MgbmFtZWQgdHVwbGUgKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpCisgICAgd2l0aCBmLmNhY2hlX2luZm8oKS4gIENsZWFyIHRoZSBjYWNoZSBhbmQgc3RhdGlzdGljcyB3aXRoIGYuY2FjaGVfY2xlYXIoKS4KICAgICBBY2Nlc3MgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gd2l0aCBmLl9fd3JhcHBlZF9fLgogCiAgICAgU2VlOiAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWNoZV9hbGdvcml0aG1zI0xlYXN0X1JlY2VudGx5X1VzZWQKIAogICAgICIiIgorCiAgICAgIyBVc2VycyBzaG91bGQgb25seSBhY2Nlc3MgdGhlIGxydV9jYWNoZSB0aHJvdWdoIGl0cyBwdWJsaWMgQVBJOgogICAgICMgICAgICAgY2FjaGVfaW5mbywgY2FjaGVfY2xlYXIsIGFuZCBmLl9fd3JhcHBlZF9fCiAgICAgIyBUaGUgaW50ZXJuYWxzIG9mIHRoZSBscnVfY2FjaGUgYXJlIGVuY2Fwc3VsYXRlZCBmb3IgdGhyZWFkIHNhZmV0eSBhbmQKICAgICAjIHRvIGFsbG93IHRoZSBpbXBsZW1lbnRhdGlvbiB0byBjaGFuZ2UgKGluY2x1ZGluZyBhIHBvc3NpYmxlIEMgdmVyc2lvbikuCiAKLSAgICBkZWYgZGVjb3JhdGluZ19mdW5jdGlvbih1c2VyX2Z1bmN0aW9uLAotICAgICAgICAgICAgICAgIHR1cGxlPXR1cGxlLCBzb3J0ZWQ9c29ydGVkLCBsZW49bGVuLCBLZXlFcnJvcj1LZXlFcnJvcik6CisgICAgIyBDb25zdGFudHMgc2hhcmVkIGJ5IGFsbCBscnUgY2FjaGUgaW5zdGFuY2VzOgorICAgIHNlbnRpbmVsID0gb2JqZWN0KCkgICAgICAgICAgIyB1bmlxdWUgb2JqZWN0IHVzZWQgdG8gc2lnbmFsIGNhY2hlIG1pc3NlcworICAgIG1ha2Vfa2V5ID0gX21ha2Vfa2V5ICAgICAgICAgIyBidWlsZCBhIGtleSBmcm9tIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKKyAgICBQUkVWLCBORVhULCBLRVksIFJFU1VMVCA9IDAsIDEsIDIsIDMgICAjIG5hbWVzIGZvciB0aGUgbGluayBmaWVsZHMKIAotICAgICAgICBoaXRzID0gbWlzc2VzID0gMAotICAgICAgICBrd2RfbWFyayA9IChvYmplY3QoKSwpICAgICAgICAgICMgc2VwYXJhdGVzIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJncwotICAgICAgICBsb2NrID0gTG9jaygpICAgICAgICAgICAgICAgICAgICMgbmVlZGVkIGJlY2F1c2UgT3JkZXJlZERpY3QgaXNuJ3QgdGhyZWFkc2FmZQorICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24pOgogCi0gICAgICAgIGlmIG1heHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgIGNhY2hlID0gZGljdCgpICAgICAgICAgICAgICAjIHNpbXBsZSBjYWNoZSB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKKyAgICAgICAgY2FjaGUgPSB7fQorICAgICAgICBoaXRzID0gbWlzc2VzID0gY3VycnNpemUgPSAwCisgICAgICAgIGZ1bGwgPSBGYWxzZQorICAgICAgICBjYWNoZV9nZXQgPSBjYWNoZS5nZXQgICAgIyBib3VuZCBtZXRob2QgdG8gbG9va3VwIGEga2V5IG9yIHJldHVybiBOb25lCisgICAgICAgIGxvY2sgPSBMb2NrKCkgICAgICAgICAgICAjIGJlY2F1c2UgbGlua2VkbGlzdCB1cGRhdGVzIGFyZW4ndCB0aHJlYWRzYWZlCisgICAgICAgIHJvb3QgPSBbXSAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgdGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdAorICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdICAgICAjIGluaXRpYWxpemUgYnkgcG9pbnRpbmcgdG8gc2VsZgogCi0gICAgICAgICAgICBAd3JhcHModXNlcl9mdW5jdGlvbikKKyAgICAgICAgaWYgbWF4c2l6ZSA9PSAwOgorCiAgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKLSAgICAgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKLSAgICAgICAgICAgICAgICBrZXkgPSBhcmdzCi0gICAgICAgICAgICAgICAgaWYga3dkczoKLSAgICAgICAgICAgICAgICAgICAga2V5ICs9IGt3ZF9tYXJrICsgdHVwbGUoc29ydGVkKGt3ZHMuaXRlbXMoKSkpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZVtrZXldCisgICAgICAgICAgICAgICAgIyBubyBjYWNoaW5nLCBqdXN0IGEgc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwKKyAgICAgICAgICAgICAgICBub25sb2NhbCBtaXNzZXMKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgZWxpZiBtYXhzaXplIGlzIE5vbmU6CisKKyAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgICMgc2ltcGxlIGNhY2hpbmcgd2l0aG91dCBvcmRlcmluZyBvciBzaXplIGxpbWl0CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzLCBjdXJyc2l6ZQorICAgICAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlX2dldChrZXksIHNlbnRpbmVsKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3Qgc2VudGluZWw6CiAgICAgICAgICAgICAgICAgICAgIGhpdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQogICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQKICAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICAgICAgICAgIGN1cnJzaXplICs9IDEKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjYWNoZSA9IE9yZGVyZWREaWN0KCkgICAgICAgICAgICMgb3JkZXJlZCBsZWFzdCByZWNlbnQgdG8gbW9zdCByZWNlbnQKLSAgICAgICAgICAgIGNhY2hlX3BvcGl0ZW0gPSBjYWNoZS5wb3BpdGVtCi0gICAgICAgICAgICBjYWNoZV9yZW5ldyA9IGNhY2hlLm1vdmVfdG9fZW5kCiAKLSAgICAgICAgICAgIEB3cmFwcyh1c2VyX2Z1bmN0aW9uKQorICAgICAgICBlbHNlOgorCiAgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKLSAgICAgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKLSAgICAgICAgICAgICAgICBrZXkgPSBhcmdzCi0gICAgICAgICAgICAgICAgaWYga3dkczoKLSAgICAgICAgICAgICAgICAgICAga2V5ICs9IGt3ZF9tYXJrICsgdHVwbGUoc29ydGVkKGt3ZHMuaXRlbXMoKSkpCisgICAgICAgICAgICAgICAgIyBzaXplIGxpbWl0ZWQgY2FjaGluZyB0aGF0IHRyYWNrcyBhY2Nlc3NlcyBieSByZWNlbmN5CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgcm9vdCwgaGl0cywgbWlzc2VzLCBjdXJyc2l6ZSwgZnVsbAorICAgICAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQogICAgICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVba2V5XQotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfcmVuZXcoa2V5KSAgICAjIHJlY29yZCByZWNlbnQgdXNlIG9mIHRoaXMga2V5CisgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBjYWNoZV9nZXQoa2V5KQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5rIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSBsaW5rIHRvIHRoZSBmcm9udCBvZiB0aGUgY2lyY3VsYXIgcXVldWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBrZXksIHJlc3VsdCA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldltORVhUXSA9IGxpbmtfbmV4dAorICAgICAgICAgICAgICAgICAgICAgICAgbGlua19uZXh0W1BSRVZdID0gbGlua19wcmV2CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gcm9vdFtQUkVWXQorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rW1BSRVZdID0gbGFzdAorICAgICAgICAgICAgICAgICAgICAgICAgbGlua1tORVhUXSA9IHJvb3QKICAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQogICAgICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdCAgICAgIyByZWNvcmQgcmVjZW50IHVzZSBvZiB0aGlzIGtleQorICAgICAgICAgICAgICAgICAgICBpZiBrZXkgaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGdldHRpbmcgaGVyZSBtZWFucyB0aGF0IHRoaXMgc2FtZSBrZXkgd2FzIGFkZGVkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBjYWNoZSB3aGlsZSB0aGUgbG9jayB3YXMgcmVsZWFzZWQuICBzaW5jZSB0aGUgbGluaworICAgICAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgaXMgYWxyZWFkeSBkb25lLCB3ZSBuZWVkIG9ubHkgcmV0dXJuIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21wdXRlZCByZXN1bHQgYW5kIHVwZGF0ZSB0aGUgY291bnQgb2YgbWlzc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBlbGlmIGZ1bGw6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHVzZSByb290IHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IGtleQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFtSRVNVTFRdID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgb2xkZXN0IGxpbmsgYW5kIG1ha2UgaXQgdGhlIG5ldyByb290CisgICAgICAgICAgICAgICAgICAgICAgICByb290ID0gcm9vdFtORVhUXQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGNhY2hlW3Jvb3RbS0VZXV0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IHJvb3RbUkVTVUxUXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgcHV0IHJlc3VsdCBpbiBhIG5ldyBsaW5rIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rID0gW2xhc3QsIHJvb3QsIGtleSwgcmVzdWx0XQorICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IGxhc3RbTkVYVF0gPSByb290W1BSRVZdID0gbGluaworICAgICAgICAgICAgICAgICAgICAgICAgY3VycnNpemUgKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCA9IChjdXJyc2l6ZSA9PSBtYXhzaXplKQogICAgICAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4oY2FjaGUpID4gbWF4c2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3BvcGl0ZW0oMCkgICAgIyBwdXJnZSBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgICAgIGRlZiBjYWNoZV9pbmZvKCk6CiAgICAgICAgICAgICAiIiJSZXBvcnQgY2FjaGUgc3RhdGlzdGljcyIiIgogICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgbGVuKGNhY2hlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gX0NhY2hlSW5mbyhoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplKQogCiAgICAgICAgIGRlZiBjYWNoZV9jbGVhcigpOgogICAgICAgICAgICAgIiIiQ2xlYXIgdGhlIGNhY2hlIGFuZCBjYWNoZSBzdGF0aXN0aWNzIiIiCi0gICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMKKyAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgY3VycnNpemUsIGZ1bGwKICAgICAgICAgICAgIHdpdGggbG9jazoKICAgICAgICAgICAgICAgICBjYWNoZS5jbGVhcigpCi0gICAgICAgICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKKyAgICAgICAgICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdCisgICAgICAgICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IGN1cnJzaXplID0gMAorICAgICAgICAgICAgICAgIGZ1bGwgPSBGYWxzZQogCiAgICAgICAgIHdyYXBwZXIuY2FjaGVfaW5mbyA9IGNhY2hlX2luZm8KICAgICAgICAgd3JhcHBlci5jYWNoZV9jbGVhciA9IGNhY2hlX2NsZWFyCi0gICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgICAgIHJldHVybiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB1c2VyX2Z1bmN0aW9uKQogCiAgICAgcmV0dXJuIGRlY29yYXRpbmdfZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0xpYi9nZXRvcHQucHkgYi9MaWIvZ2V0b3B0LnB5CmluZGV4IDk4MDg2MWQuLjNkNmVjYmQgMTAwNjQ0Ci0tLSBhL0xpYi9nZXRvcHQucHkKKysrIGIvTGliL2dldG9wdC5weQpAQCAtMTksNyArMTksNyBAQAogIyBHZXJyaXQgSG9sbCA8Z2Vycml0QG5sLmxpbnV4Lm9yZz4gbW92ZWQgdGhlIHN0cmluZy1iYXNlZCBleGNlcHRpb25zCiAjIHRvIGNsYXNzLWJhc2VkIGV4Y2VwdGlvbnMuCiAjCi0jIFBldGVyIMODwoVzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+IGFkZGVkIGdudV9nZXRvcHQoKS4KKyMgUGV0ZXIgw4VzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+IGFkZGVkIGdudV9nZXRvcHQoKS4KICMKICMgVE9ETyBmb3IgZ251X2dldG9wdCgpOgogIwpAQCAtMzQsNiArMzQsMTEgQEAKIF9fYWxsX18gPSBbIkdldG9wdEVycm9yIiwiZXJyb3IiLCJnZXRvcHQiLCJnbnVfZ2V0b3B0Il0KIAogaW1wb3J0IG9zCit0cnk6CisgICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0IGFzIF8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIEJvb3RzdHJhcHBpbmcgUHl0aG9uOiBnZXR0ZXh0J3MgZGVwZW5kZW5jaWVzIG5vdCBidWlsdCB5ZXQKKyAgICBkZWYgXyhzKTogcmV0dXJuIHMKIAogY2xhc3MgR2V0b3B0RXJyb3IoRXhjZXB0aW9uKToKICAgICBvcHQgPSAnJwpAQCAtMTUzLDEwICsxNTgsMTAgQEAKICAgICBpZiBoYXNfYXJnOgogICAgICAgICBpZiBvcHRhcmcgaXMgTm9uZToKICAgICAgICAgICAgIGlmIG5vdCBhcmdzOgotICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyByZXF1aXJlcyBhcmd1bWVudCcgJSBvcHQsIG9wdCkKKyAgICAgICAgICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyByZXF1aXJlcyBhcmd1bWVudCcpICUgb3B0LCBvcHQpCiAgICAgICAgICAgICBvcHRhcmcsIGFyZ3MgPSBhcmdzWzBdLCBhcmdzWzE6XQogICAgIGVsaWYgb3B0YXJnIGlzIG5vdCBOb25lOgotICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0tJXMgbXVzdCBub3QgaGF2ZSBhbiBhcmd1bWVudCcgJSBvcHQsIG9wdCkKKyAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0tJXMgbXVzdCBub3QgaGF2ZSBhbiBhcmd1bWVudCcpICUgb3B0LCBvcHQpCiAgICAgb3B0cy5hcHBlbmQoKCctLScgKyBvcHQsIG9wdGFyZyBvciAnJykpCiAgICAgcmV0dXJuIG9wdHMsIGFyZ3MKIApAQCAtMTY2LDcgKzE3MSw3IEBACiBkZWYgbG9uZ19oYXNfYXJncyhvcHQsIGxvbmdvcHRzKToKICAgICBwb3NzaWJpbGl0aWVzID0gW28gZm9yIG8gaW4gbG9uZ29wdHMgaWYgby5zdGFydHN3aXRoKG9wdCldCiAgICAgaWYgbm90IHBvc3NpYmlsaXRpZXM6Ci0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBub3QgcmVjb2duaXplZCcgJSBvcHQsIG9wdCkKKyAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0tJXMgbm90IHJlY29nbml6ZWQnKSAlIG9wdCwgb3B0KQogICAgICMgSXMgdGhlcmUgYW4gZXhhY3QgbWF0Y2g/CiAgICAgaWYgb3B0IGluIHBvc3NpYmlsaXRpZXM6CiAgICAgICAgIHJldHVybiBGYWxzZSwgb3B0CkBAIC0xNzYsNyArMTgxLDcgQEAKICAgICBpZiBsZW4ocG9zc2liaWxpdGllcykgPiAxOgogICAgICAgICAjIFhYWCBzaW5jZSBwb3NzaWJpbGl0aWVzIGNvbnRhaW5zIGFsbCB2YWxpZCBjb250aW51YXRpb25zLCBtaWdodCBiZQogICAgICAgICAjIG5pY2UgdG8gd29yayB0aGVtIGludG8gdGhlIGVycm9yIG1zZwotICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0tJXMgbm90IGEgdW5pcXVlIHByZWZpeCcgJSBvcHQsIG9wdCkKKyAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0tJXMgbm90IGEgdW5pcXVlIHByZWZpeCcpICUgb3B0LCBvcHQpCiAgICAgYXNzZXJ0IGxlbihwb3NzaWJpbGl0aWVzKSA9PSAxCiAgICAgdW5pcXVlX21hdGNoID0gcG9zc2liaWxpdGllc1swXQogICAgIGhhc19hcmcgPSB1bmlxdWVfbWF0Y2guZW5kc3dpdGgoJz0nKQpAQCAtMTkwLDcgKzE5NSw3IEBACiAgICAgICAgIGlmIHNob3J0X2hhc19hcmcob3B0LCBzaG9ydG9wdHMpOgogICAgICAgICAgICAgaWYgb3B0c3RyaW5nID09ICcnOgogICAgICAgICAgICAgICAgIGlmIG5vdCBhcmdzOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0lcyByZXF1aXJlcyBhcmd1bWVudCcgJSBvcHQsCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtJXMgcmVxdWlyZXMgYXJndW1lbnQnKSAlIG9wdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0KQogICAgICAgICAgICAgICAgIG9wdHN0cmluZywgYXJncyA9IGFyZ3NbMF0sIGFyZ3NbMTpdCiAgICAgICAgICAgICBvcHRhcmcsIG9wdHN0cmluZyA9IG9wdHN0cmluZywgJycKQEAgLTIwMyw3ICsyMDgsNyBAQAogICAgIGZvciBpIGluIHJhbmdlKGxlbihzaG9ydG9wdHMpKToKICAgICAgICAgaWYgb3B0ID09IHNob3J0b3B0c1tpXSAhPSAnOic6CiAgICAgICAgICAgICByZXR1cm4gc2hvcnRvcHRzLnN0YXJ0c3dpdGgoJzonLCBpKzEpCi0gICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtJXMgbm90IHJlY29nbml6ZWQnICUgb3B0LCBvcHQpCisgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0lcyBub3QgcmVjb2duaXplZCcpICUgb3B0LCBvcHQpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvTGliL2dldHBhc3MucHkgYi9MaWIvZ2V0cGFzcy5weQppbmRleCBkYzAyYmQxLi4wMDQ0NzQyIDEwMDY0NAotLS0gYS9MaWIvZ2V0cGFzcy5weQorKysgYi9MaWIvZ2V0cGFzcy5weQpAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICB0ZXJtaW9zLnRjc2V0YXR0cihmZCwgdGNzZXRhdHRyX2ZsYWdzLCBvbGQpCiAgICAgICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkgICMgaXNzdWU3MjA4Ci0gICAgICAgIGV4Y2VwdCB0ZXJtaW9zLmVycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCB0ZXJtaW9zLmVycm9yOgogICAgICAgICAgICAgaWYgcGFzc3dkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICMgX3Jhd19pbnB1dCBzdWNjZWVkZWQuICBUaGUgZmluYWwgdGNzZXRhdHRyIGZhaWxlZC4gIFJlcmFpc2UKICAgICAgICAgICAgICAgICAjIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgdGVybWluYWwgaW4gYW4gdW5rbm93biBzdGF0ZS4KQEAgLTE0NSw4ICsxNDUsNiBAQAogCiAgICAgIiIiCiAKLSAgICBpbXBvcnQgb3MKLQogICAgIGZvciBuYW1lIGluICgnTE9HTkFNRScsICdVU0VSJywgJ0xOQU1FJywgJ1VTRVJOQU1FJyk6CiAgICAgICAgIHVzZXIgPSBvcy5lbnZpcm9uLmdldChuYW1lKQogICAgICAgICBpZiB1c2VyOgpkaWZmIC0tZ2l0IGEvTGliL2dldHRleHQucHkgYi9MaWIvZ2V0dGV4dC5weQppbmRleCAyNTZlMzMxLi5lNDNmMDQ0IDEwMDY0NAotLS0gYS9MaWIvZ2V0dGV4dC5weQorKysgYi9MaWIvZ2V0dGV4dC5weQpAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICAgICAnZGdldHRleHQnLCAnZG5nZXR0ZXh0JywgJ2dldHRleHQnLCAnbmdldHRleHQnLAogICAgICAgICAgICBdCiAKLV9kZWZhdWx0X2xvY2FsZWRpciA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnc2hhcmUnLCAnbG9jYWxlJykKK19kZWZhdWx0X2xvY2FsZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICdzaGFyZScsICdsb2NhbGUnKQogCiAKIGRlZiBjMnB5KHBsdXJhbCk6CmRpZmYgLS1naXQgYS9MaWIvZ3ppcC5weSBiL0xpYi9nemlwLnB5CmluZGV4IGUxYjQzYTUuLmQ4YWJmZmQgMTAwNjQ0Ci0tLSBhL0xpYi9nemlwLnB5CisrKyBiL0xpYi9nemlwLnB5CkBAIC0xNiwxNyArMTYsNDkgQEAKIAogUkVBRCwgV1JJVEUgPSAxLCAyCiAKLWRlZiBVMzIoaSk6Ci0gICAgIiIiUmV0dXJuIGkgYXMgYW4gdW5zaWduZWQgaW50ZWdlciwgYXNzdW1pbmcgaXQgZml0cyBpbiAzMiBiaXRzLgotICAgIElmIGl0J3MgPj0gMkdCIHdoZW4gdmlld2VkIGFzIGEgMzItYml0IHVuc2lnbmVkIGludCwgcmV0dXJuIGEgbG9uZy4KLSAgICAiIiIKLSAgICBpZiBpIDwgMDoKLSAgICAgICAgaSArPSAxIDw8IDMyCi0gICAgcmV0dXJuIGkKK2RlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsIGNvbXByZXNzbGV2ZWw9OSwKKyAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgorICAgICIiIk9wZW4gYSBnemlwLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi1kZWYgTE9XVTMyKGkpOgotICAgICIiIlJldHVybiB0aGUgbG93LW9yZGVyIDMyIGJpdHMsIGFzIGEgbm9uLW5lZ2F0aXZlIGludCIiIgotICAgIHJldHVybiBpICYgMHhGRkZGRkZGRgorICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciBvciBieXRlcyBvYmplY3QpLCBvcgorICAgIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgImEiIG9yICJhYiIgZm9yIGJpbmFyeSBtb2RlLAorICAgIG9yICJydCIsICJ3dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBtb2RlIGlzICJyYiIsIGFuZCB0aGUKKyAgICBkZWZhdWx0IGNvbXByZXNzbGV2ZWwgaXMgOS4KKworICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBHemlwRmlsZSBjb25zdHJ1Y3RvcjoKKyAgICBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkuIEluIHRoaXMgY2FzZSwgdGhlIGVuY29kaW5nLCBlcnJvcnMKKyAgICBhbmQgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgICBGb3IgdGV4dCBtb2RlLCBhIEd6aXBGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZworICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgICAiIiIKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgaWYgImIiIGluIG1vZGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCisgICAgZWxzZToKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKworICAgIGd6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKKyAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKGZpbGVuYW1lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsKQorICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKKyAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShOb25lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsLCBmaWxlbmFtZSkKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorCisgICAgaWYgInQiIGluIG1vZGU6CisgICAgICAgIHJldHVybiBpby5UZXh0SU9XcmFwcGVyKGJpbmFyeV9maWxlLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBiaW5hcnlfZmlsZQogCiBkZWYgd3JpdGUzMnUob3V0cHV0LCB2YWx1ZSk6CiAgICAgIyBUaGUgTCBmb3JtYXQgd3JpdGVzIHRoZSBiaXQgcGF0dGVybiBjb3JyZWN0bHkgd2hldGhlciBzaWduZWQKQEAgLTM2LDE1ICs2OCw2IEBACiBkZWYgcmVhZDMyKGlucHV0KToKICAgICByZXR1cm4gc3RydWN0LnVucGFjaygiPEkiLCBpbnB1dC5yZWFkKDQpKVswXQogCi1kZWYgb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBjb21wcmVzc2xldmVsPTkpOgotICAgICIiIlNob3J0aGFuZCBmb3IgR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLgotCi0gICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGlzIHJlcXVpcmVkOyBtb2RlIGRlZmF1bHRzIHRvICdyYicKLSAgICBhbmQgY29tcHJlc3NsZXZlbCBkZWZhdWx0cyB0byA5LgotCi0gICAgIiIiCi0gICAgcmV0dXJuIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKQotCiBjbGFzcyBfUGFkZGVkRmlsZToKICAgICAiIiJNaW5pbWFsIHJlYWQtb25seSBmaWxlIG9iamVjdCB0aGF0IHByZXBlbmRzIGEgc3RyaW5nIHRvIHRoZSBjb250ZW50cwogICAgIG9mIGFuIGFjdHVhbCBmaWxlLiBTaG91bGRuJ3QgYmUgdXNlZCBvdXRzaWRlIG9mIGd6aXAucHksIGFzIGl0IGxhY2tzCkBAIC0xMDYsNyArMTI5LDcgQEAKICAgICB0aGUgZXhjZXB0aW9uIG9mIHRoZSByZWFkaW50bygpIGFuZCB0cnVuY2F0ZSgpIG1ldGhvZHMuCiAKICAgICBUaGlzIGNsYXNzIG9ubHkgc3VwcG9ydHMgb3BlbmluZyBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gSWYgeW91IG5lZWQgdG8gb3BlbiBhCi0gICAgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgd3JhcCB5b3VyIEd6aXBGaWxlIHdpdGggYW4gaW8uVGV4dElPV3JhcHBlci4KKyAgICBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB1c2UgdGhlIGd6aXAub3BlbigpIGZ1bmN0aW9uLgogCiAgICAgIiIiCiAKQEAgLTE1Myw3ICsxNzYsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICBpZiBtb2RlIGFuZCAoJ3QnIGluIG1vZGUgb3IgJ1UnIGluIG1vZGUpOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiTW9kZSAiICsgbW9kZSArICIgbm90IHN1cHBvcnRlZCIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKICAgICAgICAgaWYgbW9kZSBhbmQgJ2InIG5vdCBpbiBtb2RlOgogICAgICAgICAgICAgbW9kZSArPSAnYicKICAgICAgICAgaWYgZmlsZW9iaiBpcyBOb25lOgpAQCAtMTYzLDEwICsxODYsOSBAQAogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAnJwogICAgICAgICBpZiBtb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKGZpbGVvYmosICdtb2RlJyk6IG1vZGUgPSBmaWxlb2JqLm1vZGUKLSAgICAgICAgICAgIGVsc2U6IG1vZGUgPSAncmInCisgICAgICAgICAgICBtb2RlID0gZ2V0YXR0cihmaWxlb2JqLCAnbW9kZScsICdyYicpCiAKLSAgICAgICAgaWYgbW9kZVswOjFdID09ICdyJzoKKyAgICAgICAgaWYgbW9kZS5zdGFydHN3aXRoKCdyJyk6CiAgICAgICAgICAgICBzZWxmLm1vZGUgPSBSRUFECiAgICAgICAgICAgICAjIFNldCBmbGFnIGluZGljYXRpbmcgc3RhcnQgb2YgYSBuZXcgbWVtYmVyCiAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQpAQCAtMTgxLDcgKzIwMyw3IEBACiAgICAgICAgICAgICBzZWxmLm1pbl9yZWFkc2l6ZSA9IDEwMAogICAgICAgICAgICAgZmlsZW9iaiA9IF9QYWRkZWRGaWxlKGZpbGVvYmopCiAKLSAgICAgICAgZWxpZiBtb2RlWzA6MV0gPT0gJ3cnIG9yIG1vZGVbMDoxXSA9PSAnYSc6CisgICAgICAgIGVsaWYgbW9kZS5zdGFydHN3aXRoKCgndycsICdhJykpOgogICAgICAgICAgICAgc2VsZi5tb2RlID0gV1JJVEUKICAgICAgICAgICAgIHNlbGYuX2luaXRfd3JpdGUoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaihjb21wcmVzc2xldmVsLApAQCAtMTkwLDcgKzIxMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bGliLkRFRl9NRU1fTEVWRUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiTW9kZSAiICsgbW9kZSArICIgbm90IHN1cHBvcnRlZCIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKIAogICAgICAgICBzZWxmLmZpbGVvYmogPSBmaWxlb2JqCiAgICAgICAgIHNlbGYub2Zmc2V0ID0gMApAQCAtMzUzLDYgKzM3NSwzMSBAQAogICAgICAgICBzZWxmLm9mZnNldCArPSBzaXplCiAgICAgICAgIHJldHVybiBjaHVuawogCisgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKKyAgICAgICAgICAgIGltcG9ydCBlcnJubworICAgICAgICAgICAgcmFpc2UgSU9FcnJvcihlcnJuby5FQkFERiwgInJlYWQxKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQorCisgICAgICAgIGlmIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuZmlsZW9iaiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGInJworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRm9yIGNlcnRhaW4gaW5wdXQgZGF0YSwgYSBzaW5nbGUgY2FsbCB0byBfcmVhZCgpIG1heSBub3QgcmV0dXJuCisgICAgICAgICAgICAjIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHJ5IHVudGlsIHdlIGdldCBzb21lIGRhdGEgb3IgcmVhY2ggRU9GLgorICAgICAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPD0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkKCkKKyAgICAgICAgZXhjZXB0IEVPRkVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBpZiBzaXplIDwgMCBvciBzaXplID4gc2VsZi5leHRyYXNpemU6CisgICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKKworICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAorICAgICAgICBjaHVuayA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBvZmZzZXQgKyBzaXplXQorICAgICAgICBzZWxmLmV4dHJhc2l6ZSAtPSBzaXplCisgICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKKyAgICAgICAgcmV0dXJuIGNodW5rCisKICAgICBkZWYgcGVlayhzZWxmLCBuKToKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KQEAgLTM2Niw4ICs0MTMsMTAgQEAKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBiJycKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIDEwMjQgaXMgdGhlIHNhbWUgYnVmZmVyaW5nIGhldXJpc3RpYyB1c2VkIGluIHJlYWQoKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQobWF4KG4sIDEwMjQpKQorICAgICAgICAgICAgICAgICMgRW5zdXJlIHRoYXQgd2UgZG9uJ3QgcmV0dXJuIGIiIiBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgRU9GLgorICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuZXh0cmFzaXplID09IDA6CisgICAgICAgICAgICAgICAgICAgICMgMTAyNCBpcyB0aGUgc2FtZSBidWZmZXJpbmcgaGV1cmlzdGljIHVzZWQgaW4gcmVhZCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQobWF4KG4sIDEwMjQpKQogICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKZGlmZiAtLWdpdCBhL0xpYi9obWFjLnB5IGIvTGliL2htYWMucHkKaW5kZXggOTU2ZmM2NS4uNDI5N2E3MSAxMDA2NDQKLS0tIGEvTGliL2htYWMucHkKKysrIGIvTGliL2htYWMucHkKQEAgLTQsNiArNCw3IEBACiAiIiIKIAogaW1wb3J0IHdhcm5pbmdzIGFzIF93YXJuaW5ncworZnJvbSBvcGVyYXRvciBpbXBvcnQgX2NvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfZGlnZXN0CiAKIHRyYW5zXzVDID0gYnl0ZXMoKHggXiAweDVDKSBmb3IgeCBpbiByYW5nZSgyNTYpKQogdHJhbnNfMzYgPSBieXRlcygoeCBeIDB4MzYpIGZvciB4IGluIHJhbmdlKDI1NikpCkBAIC0xMyw2ICsxNCw3IEBACiBkaWdlc3Rfc2l6ZSA9IE5vbmUKIAogCisKIGNsYXNzIEhNQUM6CiAgICAgIiIiUkZDIDIxMDQgSE1BQyBjbGFzcy4gIEFsc28gY29tcGxpZXMgd2l0aCBSRkMgNDIzMS4KIApAQCAtMzMsNyArMzUsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShrZXksIGJ5dGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIGJ1dCBnb3QgJXIiICUgdHlwZShrZXkpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJrZXk6IGV4cGVjdGVkIGJ5dGVzLCBidXQgZ290ICVyIiAlIHR5cGUoa2V5KS5fX25hbWVfXykKIAogICAgICAgICBpZiBkaWdlc3Rtb2QgaXMgTm9uZToKICAgICAgICAgICAgIGltcG9ydCBoYXNobGliCmRpZmYgLS1naXQgYS9MaWIvaHRtbC9lbnRpdGllcy5weSBiL0xpYi9odG1sL2VudGl0aWVzLnB5CmluZGV4IGUyYjdiZjEuLmZmNzJjZjQgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL2VudGl0aWVzLnB5CisrKyBiL0xpYi9odG1sL2VudGl0aWVzLnB5CkBAIC0yNTYsNiArMjU2LDIyNDIgQEAKICAgICAnenduaic6ICAgICAweDIwMGMsICMgemVybyB3aWR0aCBub24tam9pbmVyLCBVKzIwMEMgTkVXIFJGQyAyMDcwCiB9CiAKKworIyBtYXBzIHRoZSBIVE1MNSBuYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlcyB0byB0aGUgZXF1aXZhbGVudCBVbmljb2RlIGNoYXJhY3RlcihzKQoraHRtbDUgPSB7CisgICAgJ0FhY3V0ZTsnOiAnXHhjMScsCisgICAgJ0FhY3V0ZSc6ICdceGMxJywKKyAgICAnYWFjdXRlOyc6ICdceGUxJywKKyAgICAnYWFjdXRlJzogJ1x4ZTEnLAorICAgICdBYnJldmU7JzogJ1x1MDEwMicsCisgICAgJ2FicmV2ZTsnOiAnXHUwMTAzJywKKyAgICAnYWM7JzogJ1x1MjIzZScsCisgICAgJ2FjZDsnOiAnXHUyMjNmJywKKyAgICAnYWNFOyc6ICdcdTIyM2VcdTAzMzMnLAorICAgICdBY2lyYzsnOiAnXHhjMicsCisgICAgJ0FjaXJjJzogJ1x4YzInLAorICAgICdhY2lyYzsnOiAnXHhlMicsCisgICAgJ2FjaXJjJzogJ1x4ZTInLAorICAgICdhY3V0ZTsnOiAnXHhiNCcsCisgICAgJ2FjdXRlJzogJ1x4YjQnLAorICAgICdBY3k7JzogJ1x1MDQxMCcsCisgICAgJ2FjeTsnOiAnXHUwNDMwJywKKyAgICAnQUVsaWc7JzogJ1x4YzYnLAorICAgICdBRWxpZyc6ICdceGM2JywKKyAgICAnYWVsaWc7JzogJ1x4ZTYnLAorICAgICdhZWxpZyc6ICdceGU2JywKKyAgICAnYWY7JzogJ1x1MjA2MScsCisgICAgJ0FmcjsnOiAnXFUwMDAxZDUwNCcsCisgICAgJ2FmcjsnOiAnXFUwMDAxZDUxZScsCisgICAgJ0FncmF2ZTsnOiAnXHhjMCcsCisgICAgJ0FncmF2ZSc6ICdceGMwJywKKyAgICAnYWdyYXZlOyc6ICdceGUwJywKKyAgICAnYWdyYXZlJzogJ1x4ZTAnLAorICAgICdhbGVmc3ltOyc6ICdcdTIxMzUnLAorICAgICdhbGVwaDsnOiAnXHUyMTM1JywKKyAgICAnQWxwaGE7JzogJ1x1MDM5MScsCisgICAgJ2FscGhhOyc6ICdcdTAzYjEnLAorICAgICdBbWFjcjsnOiAnXHUwMTAwJywKKyAgICAnYW1hY3I7JzogJ1x1MDEwMScsCisgICAgJ2FtYWxnOyc6ICdcdTJhM2YnLAorICAgICdBTVA7JzogJyYnLAorICAgICdBTVAnOiAnJicsCisgICAgJ2FtcDsnOiAnJicsCisgICAgJ2FtcCc6ICcmJywKKyAgICAnQW5kOyc6ICdcdTJhNTMnLAorICAgICdhbmQ7JzogJ1x1MjIyNycsCisgICAgJ2FuZGFuZDsnOiAnXHUyYTU1JywKKyAgICAnYW5kZDsnOiAnXHUyYTVjJywKKyAgICAnYW5kc2xvcGU7JzogJ1x1MmE1OCcsCisgICAgJ2FuZHY7JzogJ1x1MmE1YScsCisgICAgJ2FuZzsnOiAnXHUyMjIwJywKKyAgICAnYW5nZTsnOiAnXHUyOWE0JywKKyAgICAnYW5nbGU7JzogJ1x1MjIyMCcsCisgICAgJ2FuZ21zZDsnOiAnXHUyMjIxJywKKyAgICAnYW5nbXNkYWE7JzogJ1x1MjlhOCcsCisgICAgJ2FuZ21zZGFiOyc6ICdcdTI5YTknLAorICAgICdhbmdtc2RhYzsnOiAnXHUyOWFhJywKKyAgICAnYW5nbXNkYWQ7JzogJ1x1MjlhYicsCisgICAgJ2FuZ21zZGFlOyc6ICdcdTI5YWMnLAorICAgICdhbmdtc2RhZjsnOiAnXHUyOWFkJywKKyAgICAnYW5nbXNkYWc7JzogJ1x1MjlhZScsCisgICAgJ2FuZ21zZGFoOyc6ICdcdTI5YWYnLAorICAgICdhbmdydDsnOiAnXHUyMjFmJywKKyAgICAnYW5ncnR2YjsnOiAnXHUyMmJlJywKKyAgICAnYW5ncnR2YmQ7JzogJ1x1Mjk5ZCcsCisgICAgJ2FuZ3NwaDsnOiAnXHUyMjIyJywKKyAgICAnYW5nc3Q7JzogJ1x4YzUnLAorICAgICdhbmd6YXJyOyc6ICdcdTIzN2MnLAorICAgICdBb2dvbjsnOiAnXHUwMTA0JywKKyAgICAnYW9nb247JzogJ1x1MDEwNScsCisgICAgJ0FvcGY7JzogJ1xVMDAwMWQ1MzgnLAorICAgICdhb3BmOyc6ICdcVTAwMDFkNTUyJywKKyAgICAnYXA7JzogJ1x1MjI0OCcsCisgICAgJ2FwYWNpcjsnOiAnXHUyYTZmJywKKyAgICAnYXBFOyc6ICdcdTJhNzAnLAorICAgICdhcGU7JzogJ1x1MjI0YScsCisgICAgJ2FwaWQ7JzogJ1x1MjI0YicsCisgICAgJ2Fwb3M7JzogIiciLAorICAgICdBcHBseUZ1bmN0aW9uOyc6ICdcdTIwNjEnLAorICAgICdhcHByb3g7JzogJ1x1MjI0OCcsCisgICAgJ2FwcHJveGVxOyc6ICdcdTIyNGEnLAorICAgICdBcmluZzsnOiAnXHhjNScsCisgICAgJ0FyaW5nJzogJ1x4YzUnLAorICAgICdhcmluZzsnOiAnXHhlNScsCisgICAgJ2FyaW5nJzogJ1x4ZTUnLAorICAgICdBc2NyOyc6ICdcVTAwMDFkNDljJywKKyAgICAnYXNjcjsnOiAnXFUwMDAxZDRiNicsCisgICAgJ0Fzc2lnbjsnOiAnXHUyMjU0JywKKyAgICAnYXN0Oyc6ICcqJywKKyAgICAnYXN5bXA7JzogJ1x1MjI0OCcsCisgICAgJ2FzeW1wZXE7JzogJ1x1MjI0ZCcsCisgICAgJ0F0aWxkZTsnOiAnXHhjMycsCisgICAgJ0F0aWxkZSc6ICdceGMzJywKKyAgICAnYXRpbGRlOyc6ICdceGUzJywKKyAgICAnYXRpbGRlJzogJ1x4ZTMnLAorICAgICdBdW1sOyc6ICdceGM0JywKKyAgICAnQXVtbCc6ICdceGM0JywKKyAgICAnYXVtbDsnOiAnXHhlNCcsCisgICAgJ2F1bWwnOiAnXHhlNCcsCisgICAgJ2F3Y29uaW50Oyc6ICdcdTIyMzMnLAorICAgICdhd2ludDsnOiAnXHUyYTExJywKKyAgICAnYmFja2Nvbmc7JzogJ1x1MjI0YycsCisgICAgJ2JhY2tlcHNpbG9uOyc6ICdcdTAzZjYnLAorICAgICdiYWNrcHJpbWU7JzogJ1x1MjAzNScsCisgICAgJ2JhY2tzaW07JzogJ1x1MjIzZCcsCisgICAgJ2JhY2tzaW1lcTsnOiAnXHUyMmNkJywKKyAgICAnQmFja3NsYXNoOyc6ICdcdTIyMTYnLAorICAgICdCYXJ2Oyc6ICdcdTJhZTcnLAorICAgICdiYXJ2ZWU7JzogJ1x1MjJiZCcsCisgICAgJ0JhcndlZDsnOiAnXHUyMzA2JywKKyAgICAnYmFyd2VkOyc6ICdcdTIzMDUnLAorICAgICdiYXJ3ZWRnZTsnOiAnXHUyMzA1JywKKyAgICAnYmJyazsnOiAnXHUyM2I1JywKKyAgICAnYmJya3Ricms7JzogJ1x1MjNiNicsCisgICAgJ2Jjb25nOyc6ICdcdTIyNGMnLAorICAgICdCY3k7JzogJ1x1MDQxMScsCisgICAgJ2JjeTsnOiAnXHUwNDMxJywKKyAgICAnYmRxdW87JzogJ1x1MjAxZScsCisgICAgJ2JlY2F1czsnOiAnXHUyMjM1JywKKyAgICAnQmVjYXVzZTsnOiAnXHUyMjM1JywKKyAgICAnYmVjYXVzZTsnOiAnXHUyMjM1JywKKyAgICAnYmVtcHR5djsnOiAnXHUyOWIwJywKKyAgICAnYmVwc2k7JzogJ1x1MDNmNicsCisgICAgJ2Jlcm5vdTsnOiAnXHUyMTJjJywKKyAgICAnQmVybm91bGxpczsnOiAnXHUyMTJjJywKKyAgICAnQmV0YTsnOiAnXHUwMzkyJywKKyAgICAnYmV0YTsnOiAnXHUwM2IyJywKKyAgICAnYmV0aDsnOiAnXHUyMTM2JywKKyAgICAnYmV0d2VlbjsnOiAnXHUyMjZjJywKKyAgICAnQmZyOyc6ICdcVTAwMDFkNTA1JywKKyAgICAnYmZyOyc6ICdcVTAwMDFkNTFmJywKKyAgICAnYmlnY2FwOyc6ICdcdTIyYzInLAorICAgICdiaWdjaXJjOyc6ICdcdTI1ZWYnLAorICAgICdiaWdjdXA7JzogJ1x1MjJjMycsCisgICAgJ2JpZ29kb3Q7JzogJ1x1MmEwMCcsCisgICAgJ2JpZ29wbHVzOyc6ICdcdTJhMDEnLAorICAgICdiaWdvdGltZXM7JzogJ1x1MmEwMicsCisgICAgJ2JpZ3NxY3VwOyc6ICdcdTJhMDYnLAorICAgICdiaWdzdGFyOyc6ICdcdTI2MDUnLAorICAgICdiaWd0cmlhbmdsZWRvd247JzogJ1x1MjViZCcsCisgICAgJ2JpZ3RyaWFuZ2xldXA7JzogJ1x1MjViMycsCisgICAgJ2JpZ3VwbHVzOyc6ICdcdTJhMDQnLAorICAgICdiaWd2ZWU7JzogJ1x1MjJjMScsCisgICAgJ2JpZ3dlZGdlOyc6ICdcdTIyYzAnLAorICAgICdia2Fyb3c7JzogJ1x1MjkwZCcsCisgICAgJ2JsYWNrbG96ZW5nZTsnOiAnXHUyOWViJywKKyAgICAnYmxhY2tzcXVhcmU7JzogJ1x1MjVhYScsCisgICAgJ2JsYWNrdHJpYW5nbGU7JzogJ1x1MjViNCcsCisgICAgJ2JsYWNrdHJpYW5nbGVkb3duOyc6ICdcdTI1YmUnLAorICAgICdibGFja3RyaWFuZ2xlbGVmdDsnOiAnXHUyNWMyJywKKyAgICAnYmxhY2t0cmlhbmdsZXJpZ2h0Oyc6ICdcdTI1YjgnLAorICAgICdibGFuazsnOiAnXHUyNDIzJywKKyAgICAnYmxrMTI7JzogJ1x1MjU5MicsCisgICAgJ2JsazE0Oyc6ICdcdTI1OTEnLAorICAgICdibGszNDsnOiAnXHUyNTkzJywKKyAgICAnYmxvY2s7JzogJ1x1MjU4OCcsCisgICAgJ2JuZTsnOiAnPVx1MjBlNScsCisgICAgJ2JuZXF1aXY7JzogJ1x1MjI2MVx1MjBlNScsCisgICAgJ2JOb3Q7JzogJ1x1MmFlZCcsCisgICAgJ2Jub3Q7JzogJ1x1MjMxMCcsCisgICAgJ0JvcGY7JzogJ1xVMDAwMWQ1MzknLAorICAgICdib3BmOyc6ICdcVTAwMDFkNTUzJywKKyAgICAnYm90Oyc6ICdcdTIyYTUnLAorICAgICdib3R0b207JzogJ1x1MjJhNScsCisgICAgJ2Jvd3RpZTsnOiAnXHUyMmM4JywKKyAgICAnYm94Ym94Oyc6ICdcdTI5YzknLAorICAgICdib3hETDsnOiAnXHUyNTU3JywKKyAgICAnYm94RGw7JzogJ1x1MjU1NicsCisgICAgJ2JveGRMOyc6ICdcdTI1NTUnLAorICAgICdib3hkbDsnOiAnXHUyNTEwJywKKyAgICAnYm94RFI7JzogJ1x1MjU1NCcsCisgICAgJ2JveERyOyc6ICdcdTI1NTMnLAorICAgICdib3hkUjsnOiAnXHUyNTUyJywKKyAgICAnYm94ZHI7JzogJ1x1MjUwYycsCisgICAgJ2JveEg7JzogJ1x1MjU1MCcsCisgICAgJ2JveGg7JzogJ1x1MjUwMCcsCisgICAgJ2JveEhEOyc6ICdcdTI1NjYnLAorICAgICdib3hIZDsnOiAnXHUyNTY0JywKKyAgICAnYm94aEQ7JzogJ1x1MjU2NScsCisgICAgJ2JveGhkOyc6ICdcdTI1MmMnLAorICAgICdib3hIVTsnOiAnXHUyNTY5JywKKyAgICAnYm94SHU7JzogJ1x1MjU2NycsCisgICAgJ2JveGhVOyc6ICdcdTI1NjgnLAorICAgICdib3hodTsnOiAnXHUyNTM0JywKKyAgICAnYm94bWludXM7JzogJ1x1MjI5ZicsCisgICAgJ2JveHBsdXM7JzogJ1x1MjI5ZScsCisgICAgJ2JveHRpbWVzOyc6ICdcdTIyYTAnLAorICAgICdib3hVTDsnOiAnXHUyNTVkJywKKyAgICAnYm94VWw7JzogJ1x1MjU1YycsCisgICAgJ2JveHVMOyc6ICdcdTI1NWInLAorICAgICdib3h1bDsnOiAnXHUyNTE4JywKKyAgICAnYm94VVI7JzogJ1x1MjU1YScsCisgICAgJ2JveFVyOyc6ICdcdTI1NTknLAorICAgICdib3h1UjsnOiAnXHUyNTU4JywKKyAgICAnYm94dXI7JzogJ1x1MjUxNCcsCisgICAgJ2JveFY7JzogJ1x1MjU1MScsCisgICAgJ2JveHY7JzogJ1x1MjUwMicsCisgICAgJ2JveFZIOyc6ICdcdTI1NmMnLAorICAgICdib3hWaDsnOiAnXHUyNTZiJywKKyAgICAnYm94dkg7JzogJ1x1MjU2YScsCisgICAgJ2JveHZoOyc6ICdcdTI1M2MnLAorICAgICdib3hWTDsnOiAnXHUyNTYzJywKKyAgICAnYm94Vmw7JzogJ1x1MjU2MicsCisgICAgJ2JveHZMOyc6ICdcdTI1NjEnLAorICAgICdib3h2bDsnOiAnXHUyNTI0JywKKyAgICAnYm94VlI7JzogJ1x1MjU2MCcsCisgICAgJ2JveFZyOyc6ICdcdTI1NWYnLAorICAgICdib3h2UjsnOiAnXHUyNTVlJywKKyAgICAnYm94dnI7JzogJ1x1MjUxYycsCisgICAgJ2JwcmltZTsnOiAnXHUyMDM1JywKKyAgICAnQnJldmU7JzogJ1x1MDJkOCcsCisgICAgJ2JyZXZlOyc6ICdcdTAyZDgnLAorICAgICdicnZiYXI7JzogJ1x4YTYnLAorICAgICdicnZiYXInOiAnXHhhNicsCisgICAgJ0JzY3I7JzogJ1x1MjEyYycsCisgICAgJ2JzY3I7JzogJ1xVMDAwMWQ0YjcnLAorICAgICdic2VtaTsnOiAnXHUyMDRmJywKKyAgICAnYnNpbTsnOiAnXHUyMjNkJywKKyAgICAnYnNpbWU7JzogJ1x1MjJjZCcsCisgICAgJ2Jzb2w7JzogJ1xcJywKKyAgICAnYnNvbGI7JzogJ1x1MjljNScsCisgICAgJ2Jzb2xoc3ViOyc6ICdcdTI3YzgnLAorICAgICdidWxsOyc6ICdcdTIwMjInLAorICAgICdidWxsZXQ7JzogJ1x1MjAyMicsCisgICAgJ2J1bXA7JzogJ1x1MjI0ZScsCisgICAgJ2J1bXBFOyc6ICdcdTJhYWUnLAorICAgICdidW1wZTsnOiAnXHUyMjRmJywKKyAgICAnQnVtcGVxOyc6ICdcdTIyNGUnLAorICAgICdidW1wZXE7JzogJ1x1MjI0ZicsCisgICAgJ0NhY3V0ZTsnOiAnXHUwMTA2JywKKyAgICAnY2FjdXRlOyc6ICdcdTAxMDcnLAorICAgICdDYXA7JzogJ1x1MjJkMicsCisgICAgJ2NhcDsnOiAnXHUyMjI5JywKKyAgICAnY2FwYW5kOyc6ICdcdTJhNDQnLAorICAgICdjYXBicmN1cDsnOiAnXHUyYTQ5JywKKyAgICAnY2FwY2FwOyc6ICdcdTJhNGInLAorICAgICdjYXBjdXA7JzogJ1x1MmE0NycsCisgICAgJ2NhcGRvdDsnOiAnXHUyYTQwJywKKyAgICAnQ2FwaXRhbERpZmZlcmVudGlhbEQ7JzogJ1x1MjE0NScsCisgICAgJ2NhcHM7JzogJ1x1MjIyOVx1ZmUwMCcsCisgICAgJ2NhcmV0Oyc6ICdcdTIwNDEnLAorICAgICdjYXJvbjsnOiAnXHUwMmM3JywKKyAgICAnQ2F5bGV5czsnOiAnXHUyMTJkJywKKyAgICAnY2NhcHM7JzogJ1x1MmE0ZCcsCisgICAgJ0NjYXJvbjsnOiAnXHUwMTBjJywKKyAgICAnY2Nhcm9uOyc6ICdcdTAxMGQnLAorICAgICdDY2VkaWw7JzogJ1x4YzcnLAorICAgICdDY2VkaWwnOiAnXHhjNycsCisgICAgJ2NjZWRpbDsnOiAnXHhlNycsCisgICAgJ2NjZWRpbCc6ICdceGU3JywKKyAgICAnQ2NpcmM7JzogJ1x1MDEwOCcsCisgICAgJ2NjaXJjOyc6ICdcdTAxMDknLAorICAgICdDY29uaW50Oyc6ICdcdTIyMzAnLAorICAgICdjY3VwczsnOiAnXHUyYTRjJywKKyAgICAnY2N1cHNzbTsnOiAnXHUyYTUwJywKKyAgICAnQ2RvdDsnOiAnXHUwMTBhJywKKyAgICAnY2RvdDsnOiAnXHUwMTBiJywKKyAgICAnY2VkaWw7JzogJ1x4YjgnLAorICAgICdjZWRpbCc6ICdceGI4JywKKyAgICAnQ2VkaWxsYTsnOiAnXHhiOCcsCisgICAgJ2NlbXB0eXY7JzogJ1x1MjliMicsCisgICAgJ2NlbnQ7JzogJ1x4YTInLAorICAgICdjZW50JzogJ1x4YTInLAorICAgICdDZW50ZXJEb3Q7JzogJ1x4YjcnLAorICAgICdjZW50ZXJkb3Q7JzogJ1x4YjcnLAorICAgICdDZnI7JzogJ1x1MjEyZCcsCisgICAgJ2NmcjsnOiAnXFUwMDAxZDUyMCcsCisgICAgJ0NIY3k7JzogJ1x1MDQyNycsCisgICAgJ2NoY3k7JzogJ1x1MDQ0NycsCisgICAgJ2NoZWNrOyc6ICdcdTI3MTMnLAorICAgICdjaGVja21hcms7JzogJ1x1MjcxMycsCisgICAgJ0NoaTsnOiAnXHUwM2E3JywKKyAgICAnY2hpOyc6ICdcdTAzYzcnLAorICAgICdjaXI7JzogJ1x1MjVjYicsCisgICAgJ2NpcmM7JzogJ1x1MDJjNicsCisgICAgJ2NpcmNlcTsnOiAnXHUyMjU3JywKKyAgICAnY2lyY2xlYXJyb3dsZWZ0Oyc6ICdcdTIxYmEnLAorICAgICdjaXJjbGVhcnJvd3JpZ2h0Oyc6ICdcdTIxYmInLAorICAgICdjaXJjbGVkYXN0Oyc6ICdcdTIyOWInLAorICAgICdjaXJjbGVkY2lyYzsnOiAnXHUyMjlhJywKKyAgICAnY2lyY2xlZGRhc2g7JzogJ1x1MjI5ZCcsCisgICAgJ0NpcmNsZURvdDsnOiAnXHUyMjk5JywKKyAgICAnY2lyY2xlZFI7JzogJ1x4YWUnLAorICAgICdjaXJjbGVkUzsnOiAnXHUyNGM4JywKKyAgICAnQ2lyY2xlTWludXM7JzogJ1x1MjI5NicsCisgICAgJ0NpcmNsZVBsdXM7JzogJ1x1MjI5NScsCisgICAgJ0NpcmNsZVRpbWVzOyc6ICdcdTIyOTcnLAorICAgICdjaXJFOyc6ICdcdTI5YzMnLAorICAgICdjaXJlOyc6ICdcdTIyNTcnLAorICAgICdjaXJmbmludDsnOiAnXHUyYTEwJywKKyAgICAnY2lybWlkOyc6ICdcdTJhZWYnLAorICAgICdjaXJzY2lyOyc6ICdcdTI5YzInLAorICAgICdDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7JzogJ1x1MjIzMicsCisgICAgJ0Nsb3NlQ3VybHlEb3VibGVRdW90ZTsnOiAnXHUyMDFkJywKKyAgICAnQ2xvc2VDdXJseVF1b3RlOyc6ICdcdTIwMTknLAorICAgICdjbHViczsnOiAnXHUyNjYzJywKKyAgICAnY2x1YnN1aXQ7JzogJ1x1MjY2MycsCisgICAgJ0NvbG9uOyc6ICdcdTIyMzcnLAorICAgICdjb2xvbjsnOiAnOicsCisgICAgJ0NvbG9uZTsnOiAnXHUyYTc0JywKKyAgICAnY29sb25lOyc6ICdcdTIyNTQnLAorICAgICdjb2xvbmVxOyc6ICdcdTIyNTQnLAorICAgICdjb21tYTsnOiAnLCcsCisgICAgJ2NvbW1hdDsnOiAnQCcsCisgICAgJ2NvbXA7JzogJ1x1MjIwMScsCisgICAgJ2NvbXBmbjsnOiAnXHUyMjE4JywKKyAgICAnY29tcGxlbWVudDsnOiAnXHUyMjAxJywKKyAgICAnY29tcGxleGVzOyc6ICdcdTIxMDInLAorICAgICdjb25nOyc6ICdcdTIyNDUnLAorICAgICdjb25nZG90Oyc6ICdcdTJhNmQnLAorICAgICdDb25ncnVlbnQ7JzogJ1x1MjI2MScsCisgICAgJ0NvbmludDsnOiAnXHUyMjJmJywKKyAgICAnY29uaW50Oyc6ICdcdTIyMmUnLAorICAgICdDb250b3VySW50ZWdyYWw7JzogJ1x1MjIyZScsCisgICAgJ0NvcGY7JzogJ1x1MjEwMicsCisgICAgJ2NvcGY7JzogJ1xVMDAwMWQ1NTQnLAorICAgICdjb3Byb2Q7JzogJ1x1MjIxMCcsCisgICAgJ0NvcHJvZHVjdDsnOiAnXHUyMjEwJywKKyAgICAnQ09QWTsnOiAnXHhhOScsCisgICAgJ0NPUFknOiAnXHhhOScsCisgICAgJ2NvcHk7JzogJ1x4YTknLAorICAgICdjb3B5JzogJ1x4YTknLAorICAgICdjb3B5c3I7JzogJ1x1MjExNycsCisgICAgJ0NvdW50ZXJDbG9ja3dpc2VDb250b3VySW50ZWdyYWw7JzogJ1x1MjIzMycsCisgICAgJ2NyYXJyOyc6ICdcdTIxYjUnLAorICAgICdDcm9zczsnOiAnXHUyYTJmJywKKyAgICAnY3Jvc3M7JzogJ1x1MjcxNycsCisgICAgJ0NzY3I7JzogJ1xVMDAwMWQ0OWUnLAorICAgICdjc2NyOyc6ICdcVTAwMDFkNGI4JywKKyAgICAnY3N1YjsnOiAnXHUyYWNmJywKKyAgICAnY3N1YmU7JzogJ1x1MmFkMScsCisgICAgJ2NzdXA7JzogJ1x1MmFkMCcsCisgICAgJ2NzdXBlOyc6ICdcdTJhZDInLAorICAgICdjdGRvdDsnOiAnXHUyMmVmJywKKyAgICAnY3VkYXJybDsnOiAnXHUyOTM4JywKKyAgICAnY3VkYXJycjsnOiAnXHUyOTM1JywKKyAgICAnY3VlcHI7JzogJ1x1MjJkZScsCisgICAgJ2N1ZXNjOyc6ICdcdTIyZGYnLAorICAgICdjdWxhcnI7JzogJ1x1MjFiNicsCisgICAgJ2N1bGFycnA7JzogJ1x1MjkzZCcsCisgICAgJ0N1cDsnOiAnXHUyMmQzJywKKyAgICAnY3VwOyc6ICdcdTIyMmEnLAorICAgICdjdXBicmNhcDsnOiAnXHUyYTQ4JywKKyAgICAnQ3VwQ2FwOyc6ICdcdTIyNGQnLAorICAgICdjdXBjYXA7JzogJ1x1MmE0NicsCisgICAgJ2N1cGN1cDsnOiAnXHUyYTRhJywKKyAgICAnY3VwZG90Oyc6ICdcdTIyOGQnLAorICAgICdjdXBvcjsnOiAnXHUyYTQ1JywKKyAgICAnY3VwczsnOiAnXHUyMjJhXHVmZTAwJywKKyAgICAnY3VyYXJyOyc6ICdcdTIxYjcnLAorICAgICdjdXJhcnJtOyc6ICdcdTI5M2MnLAorICAgICdjdXJseWVxcHJlYzsnOiAnXHUyMmRlJywKKyAgICAnY3VybHllcXN1Y2M7JzogJ1x1MjJkZicsCisgICAgJ2N1cmx5dmVlOyc6ICdcdTIyY2UnLAorICAgICdjdXJseXdlZGdlOyc6ICdcdTIyY2YnLAorICAgICdjdXJyZW47JzogJ1x4YTQnLAorICAgICdjdXJyZW4nOiAnXHhhNCcsCisgICAgJ2N1cnZlYXJyb3dsZWZ0Oyc6ICdcdTIxYjYnLAorICAgICdjdXJ2ZWFycm93cmlnaHQ7JzogJ1x1MjFiNycsCisgICAgJ2N1dmVlOyc6ICdcdTIyY2UnLAorICAgICdjdXdlZDsnOiAnXHUyMmNmJywKKyAgICAnY3djb25pbnQ7JzogJ1x1MjIzMicsCisgICAgJ2N3aW50Oyc6ICdcdTIyMzEnLAorICAgICdjeWxjdHk7JzogJ1x1MjMyZCcsCisgICAgJ0RhZ2dlcjsnOiAnXHUyMDIxJywKKyAgICAnZGFnZ2VyOyc6ICdcdTIwMjAnLAorICAgICdkYWxldGg7JzogJ1x1MjEzOCcsCisgICAgJ0RhcnI7JzogJ1x1MjFhMScsCisgICAgJ2RBcnI7JzogJ1x1MjFkMycsCisgICAgJ2RhcnI7JzogJ1x1MjE5MycsCisgICAgJ2Rhc2g7JzogJ1x1MjAxMCcsCisgICAgJ0Rhc2h2Oyc6ICdcdTJhZTQnLAorICAgICdkYXNodjsnOiAnXHUyMmEzJywKKyAgICAnZGJrYXJvdzsnOiAnXHUyOTBmJywKKyAgICAnZGJsYWM7JzogJ1x1MDJkZCcsCisgICAgJ0RjYXJvbjsnOiAnXHUwMTBlJywKKyAgICAnZGNhcm9uOyc6ICdcdTAxMGYnLAorICAgICdEY3k7JzogJ1x1MDQxNCcsCisgICAgJ2RjeTsnOiAnXHUwNDM0JywKKyAgICAnREQ7JzogJ1x1MjE0NScsCisgICAgJ2RkOyc6ICdcdTIxNDYnLAorICAgICdkZGFnZ2VyOyc6ICdcdTIwMjEnLAorICAgICdkZGFycjsnOiAnXHUyMWNhJywKKyAgICAnRERvdHJhaGQ7JzogJ1x1MjkxMScsCisgICAgJ2Rkb3RzZXE7JzogJ1x1MmE3NycsCisgICAgJ2RlZzsnOiAnXHhiMCcsCisgICAgJ2RlZyc6ICdceGIwJywKKyAgICAnRGVsOyc6ICdcdTIyMDcnLAorICAgICdEZWx0YTsnOiAnXHUwMzk0JywKKyAgICAnZGVsdGE7JzogJ1x1MDNiNCcsCisgICAgJ2RlbXB0eXY7JzogJ1x1MjliMScsCisgICAgJ2RmaXNodDsnOiAnXHUyOTdmJywKKyAgICAnRGZyOyc6ICdcVTAwMDFkNTA3JywKKyAgICAnZGZyOyc6ICdcVTAwMDFkNTIxJywKKyAgICAnZEhhcjsnOiAnXHUyOTY1JywKKyAgICAnZGhhcmw7JzogJ1x1MjFjMycsCisgICAgJ2RoYXJyOyc6ICdcdTIxYzInLAorICAgICdEaWFjcml0aWNhbEFjdXRlOyc6ICdceGI0JywKKyAgICAnRGlhY3JpdGljYWxEb3Q7JzogJ1x1MDJkOScsCisgICAgJ0RpYWNyaXRpY2FsRG91YmxlQWN1dGU7JzogJ1x1MDJkZCcsCisgICAgJ0RpYWNyaXRpY2FsR3JhdmU7JzogJ2AnLAorICAgICdEaWFjcml0aWNhbFRpbGRlOyc6ICdcdTAyZGMnLAorICAgICdkaWFtOyc6ICdcdTIyYzQnLAorICAgICdEaWFtb25kOyc6ICdcdTIyYzQnLAorICAgICdkaWFtb25kOyc6ICdcdTIyYzQnLAorICAgICdkaWFtb25kc3VpdDsnOiAnXHUyNjY2JywKKyAgICAnZGlhbXM7JzogJ1x1MjY2NicsCisgICAgJ2RpZTsnOiAnXHhhOCcsCisgICAgJ0RpZmZlcmVudGlhbEQ7JzogJ1x1MjE0NicsCisgICAgJ2RpZ2FtbWE7JzogJ1x1MDNkZCcsCisgICAgJ2Rpc2luOyc6ICdcdTIyZjInLAorICAgICdkaXY7JzogJ1x4ZjcnLAorICAgICdkaXZpZGU7JzogJ1x4ZjcnLAorICAgICdkaXZpZGUnOiAnXHhmNycsCisgICAgJ2RpdmlkZW9udGltZXM7JzogJ1x1MjJjNycsCisgICAgJ2Rpdm9ueDsnOiAnXHUyMmM3JywKKyAgICAnREpjeTsnOiAnXHUwNDAyJywKKyAgICAnZGpjeTsnOiAnXHUwNDUyJywKKyAgICAnZGxjb3JuOyc6ICdcdTIzMWUnLAorICAgICdkbGNyb3A7JzogJ1x1MjMwZCcsCisgICAgJ2RvbGxhcjsnOiAnJCcsCisgICAgJ0RvcGY7JzogJ1xVMDAwMWQ1M2InLAorICAgICdkb3BmOyc6ICdcVTAwMDFkNTU1JywKKyAgICAnRG90Oyc6ICdceGE4JywKKyAgICAnZG90Oyc6ICdcdTAyZDknLAorICAgICdEb3REb3Q7JzogJ1x1MjVjY1x1MjBkYycsCisgICAgJ2RvdGVxOyc6ICdcdTIyNTAnLAorICAgICdkb3RlcWRvdDsnOiAnXHUyMjUxJywKKyAgICAnRG90RXF1YWw7JzogJ1x1MjI1MCcsCisgICAgJ2RvdG1pbnVzOyc6ICdcdTIyMzgnLAorICAgICdkb3RwbHVzOyc6ICdcdTIyMTQnLAorICAgICdkb3RzcXVhcmU7JzogJ1x1MjJhMScsCisgICAgJ2RvdWJsZWJhcndlZGdlOyc6ICdcdTIzMDYnLAorICAgICdEb3VibGVDb250b3VySW50ZWdyYWw7JzogJ1x1MjIyZicsCisgICAgJ0RvdWJsZURvdDsnOiAnXHhhOCcsCisgICAgJ0RvdWJsZURvd25BcnJvdzsnOiAnXHUyMWQzJywKKyAgICAnRG91YmxlTGVmdEFycm93Oyc6ICdcdTIxZDAnLAorICAgICdEb3VibGVMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyMWQ0JywKKyAgICAnRG91YmxlTGVmdFRlZTsnOiAnXHUyYWU0JywKKyAgICAnRG91YmxlTG9uZ0xlZnRBcnJvdzsnOiAnXHUyN2Y4JywKKyAgICAnRG91YmxlTG9uZ0xlZnRSaWdodEFycm93Oyc6ICdcdTI3ZmEnLAorICAgICdEb3VibGVMb25nUmlnaHRBcnJvdzsnOiAnXHUyN2Y5JywKKyAgICAnRG91YmxlUmlnaHRBcnJvdzsnOiAnXHUyMWQyJywKKyAgICAnRG91YmxlUmlnaHRUZWU7JzogJ1x1MjJhOCcsCisgICAgJ0RvdWJsZVVwQXJyb3c7JzogJ1x1MjFkMScsCisgICAgJ0RvdWJsZVVwRG93bkFycm93Oyc6ICdcdTIxZDUnLAorICAgICdEb3VibGVWZXJ0aWNhbEJhcjsnOiAnXHUyMjI1JywKKyAgICAnRG93bkFycm93Oyc6ICdcdTIxOTMnLAorICAgICdEb3duYXJyb3c7JzogJ1x1MjFkMycsCisgICAgJ2Rvd25hcnJvdzsnOiAnXHUyMTkzJywKKyAgICAnRG93bkFycm93QmFyOyc6ICdcdTI5MTMnLAorICAgICdEb3duQXJyb3dVcEFycm93Oyc6ICdcdTIxZjUnLAorICAgICdEb3duQnJldmU7JzogJ1x1MjVjY1x1MDMxMScsCisgICAgJ2Rvd25kb3duYXJyb3dzOyc6ICdcdTIxY2EnLAorICAgICdkb3duaGFycG9vbmxlZnQ7JzogJ1x1MjFjMycsCisgICAgJ2Rvd25oYXJwb29ucmlnaHQ7JzogJ1x1MjFjMicsCisgICAgJ0Rvd25MZWZ0UmlnaHRWZWN0b3I7JzogJ1x1Mjk1MCcsCisgICAgJ0Rvd25MZWZ0VGVlVmVjdG9yOyc6ICdcdTI5NWUnLAorICAgICdEb3duTGVmdFZlY3RvcjsnOiAnXHUyMWJkJywKKyAgICAnRG93bkxlZnRWZWN0b3JCYXI7JzogJ1x1Mjk1NicsCisgICAgJ0Rvd25SaWdodFRlZVZlY3RvcjsnOiAnXHUyOTVmJywKKyAgICAnRG93blJpZ2h0VmVjdG9yOyc6ICdcdTIxYzEnLAorICAgICdEb3duUmlnaHRWZWN0b3JCYXI7JzogJ1x1Mjk1NycsCisgICAgJ0Rvd25UZWU7JzogJ1x1MjJhNCcsCisgICAgJ0Rvd25UZWVBcnJvdzsnOiAnXHUyMWE3JywKKyAgICAnZHJia2Fyb3c7JzogJ1x1MjkxMCcsCisgICAgJ2RyY29ybjsnOiAnXHUyMzFmJywKKyAgICAnZHJjcm9wOyc6ICdcdTIzMGMnLAorICAgICdEc2NyOyc6ICdcVTAwMDFkNDlmJywKKyAgICAnZHNjcjsnOiAnXFUwMDAxZDRiOScsCisgICAgJ0RTY3k7JzogJ1x1MDQwNScsCisgICAgJ2RzY3k7JzogJ1x1MDQ1NScsCisgICAgJ2Rzb2w7JzogJ1x1MjlmNicsCisgICAgJ0RzdHJvazsnOiAnXHUwMTEwJywKKyAgICAnZHN0cm9rOyc6ICdcdTAxMTEnLAorICAgICdkdGRvdDsnOiAnXHUyMmYxJywKKyAgICAnZHRyaTsnOiAnXHUyNWJmJywKKyAgICAnZHRyaWY7JzogJ1x1MjViZScsCisgICAgJ2R1YXJyOyc6ICdcdTIxZjUnLAorICAgICdkdWhhcjsnOiAnXHUyOTZmJywKKyAgICAnZHdhbmdsZTsnOiAnXHUyOWE2JywKKyAgICAnRFpjeTsnOiAnXHUwNDBmJywKKyAgICAnZHpjeTsnOiAnXHUwNDVmJywKKyAgICAnZHppZ3JhcnI7JzogJ1x1MjdmZicsCisgICAgJ0VhY3V0ZTsnOiAnXHhjOScsCisgICAgJ0VhY3V0ZSc6ICdceGM5JywKKyAgICAnZWFjdXRlOyc6ICdceGU5JywKKyAgICAnZWFjdXRlJzogJ1x4ZTknLAorICAgICdlYXN0ZXI7JzogJ1x1MmE2ZScsCisgICAgJ0VjYXJvbjsnOiAnXHUwMTFhJywKKyAgICAnZWNhcm9uOyc6ICdcdTAxMWInLAorICAgICdlY2lyOyc6ICdcdTIyNTYnLAorICAgICdFY2lyYzsnOiAnXHhjYScsCisgICAgJ0VjaXJjJzogJ1x4Y2EnLAorICAgICdlY2lyYzsnOiAnXHhlYScsCisgICAgJ2VjaXJjJzogJ1x4ZWEnLAorICAgICdlY29sb247JzogJ1x1MjI1NScsCisgICAgJ0VjeTsnOiAnXHUwNDJkJywKKyAgICAnZWN5Oyc6ICdcdTA0NGQnLAorICAgICdlRERvdDsnOiAnXHUyYTc3JywKKyAgICAnRWRvdDsnOiAnXHUwMTE2JywKKyAgICAnZURvdDsnOiAnXHUyMjUxJywKKyAgICAnZWRvdDsnOiAnXHUwMTE3JywKKyAgICAnZWU7JzogJ1x1MjE0NycsCisgICAgJ2VmRG90Oyc6ICdcdTIyNTInLAorICAgICdFZnI7JzogJ1xVMDAwMWQ1MDgnLAorICAgICdlZnI7JzogJ1xVMDAwMWQ1MjInLAorICAgICdlZzsnOiAnXHUyYTlhJywKKyAgICAnRWdyYXZlOyc6ICdceGM4JywKKyAgICAnRWdyYXZlJzogJ1x4YzgnLAorICAgICdlZ3JhdmU7JzogJ1x4ZTgnLAorICAgICdlZ3JhdmUnOiAnXHhlOCcsCisgICAgJ2VnczsnOiAnXHUyYTk2JywKKyAgICAnZWdzZG90Oyc6ICdcdTJhOTgnLAorICAgICdlbDsnOiAnXHUyYTk5JywKKyAgICAnRWxlbWVudDsnOiAnXHUyMjA4JywKKyAgICAnZWxpbnRlcnM7JzogJ1x1MjNlNycsCisgICAgJ2VsbDsnOiAnXHUyMTEzJywKKyAgICAnZWxzOyc6ICdcdTJhOTUnLAorICAgICdlbHNkb3Q7JzogJ1x1MmE5NycsCisgICAgJ0VtYWNyOyc6ICdcdTAxMTInLAorICAgICdlbWFjcjsnOiAnXHUwMTEzJywKKyAgICAnZW1wdHk7JzogJ1x1MjIwNScsCisgICAgJ2VtcHR5c2V0Oyc6ICdcdTIyMDUnLAorICAgICdFbXB0eVNtYWxsU3F1YXJlOyc6ICdcdTI1ZmInLAorICAgICdlbXB0eXY7JzogJ1x1MjIwNScsCisgICAgJ0VtcHR5VmVyeVNtYWxsU3F1YXJlOyc6ICdcdTI1YWInLAorICAgICdlbXNwOyc6ICdcdTIwMDMnLAorICAgICdlbXNwMTM7JzogJ1x1MjAwNCcsCisgICAgJ2Vtc3AxNDsnOiAnXHUyMDA1JywKKyAgICAnRU5HOyc6ICdcdTAxNGEnLAorICAgICdlbmc7JzogJ1x1MDE0YicsCisgICAgJ2Vuc3A7JzogJ1x1MjAwMicsCisgICAgJ0VvZ29uOyc6ICdcdTAxMTgnLAorICAgICdlb2dvbjsnOiAnXHUwMTE5JywKKyAgICAnRW9wZjsnOiAnXFUwMDAxZDUzYycsCisgICAgJ2VvcGY7JzogJ1xVMDAwMWQ1NTYnLAorICAgICdlcGFyOyc6ICdcdTIyZDUnLAorICAgICdlcGFyc2w7JzogJ1x1MjllMycsCisgICAgJ2VwbHVzOyc6ICdcdTJhNzEnLAorICAgICdlcHNpOyc6ICdcdTAzYjUnLAorICAgICdFcHNpbG9uOyc6ICdcdTAzOTUnLAorICAgICdlcHNpbG9uOyc6ICdcdTAzYjUnLAorICAgICdlcHNpdjsnOiAnXHUwM2Y1JywKKyAgICAnZXFjaXJjOyc6ICdcdTIyNTYnLAorICAgICdlcWNvbG9uOyc6ICdcdTIyNTUnLAorICAgICdlcXNpbTsnOiAnXHUyMjQyJywKKyAgICAnZXFzbGFudGd0cjsnOiAnXHUyYTk2JywKKyAgICAnZXFzbGFudGxlc3M7JzogJ1x1MmE5NScsCisgICAgJ0VxdWFsOyc6ICdcdTJhNzUnLAorICAgICdlcXVhbHM7JzogJz0nLAorICAgICdFcXVhbFRpbGRlOyc6ICdcdTIyNDInLAorICAgICdlcXVlc3Q7JzogJ1x1MjI1ZicsCisgICAgJ0VxdWlsaWJyaXVtOyc6ICdcdTIxY2MnLAorICAgICdlcXVpdjsnOiAnXHUyMjYxJywKKyAgICAnZXF1aXZERDsnOiAnXHUyYTc4JywKKyAgICAnZXF2cGFyc2w7JzogJ1x1MjllNScsCisgICAgJ2VyYXJyOyc6ICdcdTI5NzEnLAorICAgICdlckRvdDsnOiAnXHUyMjUzJywKKyAgICAnRXNjcjsnOiAnXHUyMTMwJywKKyAgICAnZXNjcjsnOiAnXHUyMTJmJywKKyAgICAnZXNkb3Q7JzogJ1x1MjI1MCcsCisgICAgJ0VzaW07JzogJ1x1MmE3MycsCisgICAgJ2VzaW07JzogJ1x1MjI0MicsCisgICAgJ0V0YTsnOiAnXHUwMzk3JywKKyAgICAnZXRhOyc6ICdcdTAzYjcnLAorICAgICdFVEg7JzogJ1x4ZDAnLAorICAgICdFVEgnOiAnXHhkMCcsCisgICAgJ2V0aDsnOiAnXHhmMCcsCisgICAgJ2V0aCc6ICdceGYwJywKKyAgICAnRXVtbDsnOiAnXHhjYicsCisgICAgJ0V1bWwnOiAnXHhjYicsCisgICAgJ2V1bWw7JzogJ1x4ZWInLAorICAgICdldW1sJzogJ1x4ZWInLAorICAgICdldXJvOyc6ICdcdTIwYWMnLAorICAgICdleGNsOyc6ICchJywKKyAgICAnZXhpc3Q7JzogJ1x1MjIwMycsCisgICAgJ0V4aXN0czsnOiAnXHUyMjAzJywKKyAgICAnZXhwZWN0YXRpb247JzogJ1x1MjEzMCcsCisgICAgJ0V4cG9uZW50aWFsRTsnOiAnXHUyMTQ3JywKKyAgICAnZXhwb25lbnRpYWxlOyc6ICdcdTIxNDcnLAorICAgICdmYWxsaW5nZG90c2VxOyc6ICdcdTIyNTInLAorICAgICdGY3k7JzogJ1x1MDQyNCcsCisgICAgJ2ZjeTsnOiAnXHUwNDQ0JywKKyAgICAnZmVtYWxlOyc6ICdcdTI2NDAnLAorICAgICdmZmlsaWc7JzogJ1x1ZmIwMycsCisgICAgJ2ZmbGlnOyc6ICdcdWZiMDAnLAorICAgICdmZmxsaWc7JzogJ1x1ZmIwNCcsCisgICAgJ0ZmcjsnOiAnXFUwMDAxZDUwOScsCisgICAgJ2ZmcjsnOiAnXFUwMDAxZDUyMycsCisgICAgJ2ZpbGlnOyc6ICdcdWZiMDEnLAorICAgICdGaWxsZWRTbWFsbFNxdWFyZTsnOiAnXHUyNWZjJywKKyAgICAnRmlsbGVkVmVyeVNtYWxsU3F1YXJlOyc6ICdcdTI1YWEnLAorICAgICdmamxpZzsnOiAnZmonLAorICAgICdmbGF0Oyc6ICdcdTI2NmQnLAorICAgICdmbGxpZzsnOiAnXHVmYjAyJywKKyAgICAnZmx0bnM7JzogJ1x1MjViMScsCisgICAgJ2Zub2Y7JzogJ1x1MDE5MicsCisgICAgJ0ZvcGY7JzogJ1xVMDAwMWQ1M2QnLAorICAgICdmb3BmOyc6ICdcVTAwMDFkNTU3JywKKyAgICAnRm9yQWxsOyc6ICdcdTIyMDAnLAorICAgICdmb3JhbGw7JzogJ1x1MjIwMCcsCisgICAgJ2Zvcms7JzogJ1x1MjJkNCcsCisgICAgJ2Zvcmt2Oyc6ICdcdTJhZDknLAorICAgICdGb3VyaWVydHJmOyc6ICdcdTIxMzEnLAorICAgICdmcGFydGludDsnOiAnXHUyYTBkJywKKyAgICAnZnJhYzEyOyc6ICdceGJkJywKKyAgICAnZnJhYzEyJzogJ1x4YmQnLAorICAgICdmcmFjMTM7JzogJ1x1MjE1MycsCisgICAgJ2ZyYWMxNDsnOiAnXHhiYycsCisgICAgJ2ZyYWMxNCc6ICdceGJjJywKKyAgICAnZnJhYzE1Oyc6ICdcdTIxNTUnLAorICAgICdmcmFjMTY7JzogJ1x1MjE1OScsCisgICAgJ2ZyYWMxODsnOiAnXHUyMTViJywKKyAgICAnZnJhYzIzOyc6ICdcdTIxNTQnLAorICAgICdmcmFjMjU7JzogJ1x1MjE1NicsCisgICAgJ2ZyYWMzNDsnOiAnXHhiZScsCisgICAgJ2ZyYWMzNCc6ICdceGJlJywKKyAgICAnZnJhYzM1Oyc6ICdcdTIxNTcnLAorICAgICdmcmFjMzg7JzogJ1x1MjE1YycsCisgICAgJ2ZyYWM0NTsnOiAnXHUyMTU4JywKKyAgICAnZnJhYzU2Oyc6ICdcdTIxNWEnLAorICAgICdmcmFjNTg7JzogJ1x1MjE1ZCcsCisgICAgJ2ZyYWM3ODsnOiAnXHUyMTVlJywKKyAgICAnZnJhc2w7JzogJ1x1MjA0NCcsCisgICAgJ2Zyb3duOyc6ICdcdTIzMjInLAorICAgICdGc2NyOyc6ICdcdTIxMzEnLAorICAgICdmc2NyOyc6ICdcVTAwMDFkNGJiJywKKyAgICAnZ2FjdXRlOyc6ICdcdTAxZjUnLAorICAgICdHYW1tYTsnOiAnXHUwMzkzJywKKyAgICAnZ2FtbWE7JzogJ1x1MDNiMycsCisgICAgJ0dhbW1hZDsnOiAnXHUwM2RjJywKKyAgICAnZ2FtbWFkOyc6ICdcdTAzZGQnLAorICAgICdnYXA7JzogJ1x1MmE4NicsCisgICAgJ0dicmV2ZTsnOiAnXHUwMTFlJywKKyAgICAnZ2JyZXZlOyc6ICdcdTAxMWYnLAorICAgICdHY2VkaWw7JzogJ1x1MDEyMicsCisgICAgJ0djaXJjOyc6ICdcdTAxMWMnLAorICAgICdnY2lyYzsnOiAnXHUwMTFkJywKKyAgICAnR2N5Oyc6ICdcdTA0MTMnLAorICAgICdnY3k7JzogJ1x1MDQzMycsCisgICAgJ0dkb3Q7JzogJ1x1MDEyMCcsCisgICAgJ2dkb3Q7JzogJ1x1MDEyMScsCisgICAgJ2dFOyc6ICdcdTIyNjcnLAorICAgICdnZTsnOiAnXHUyMjY1JywKKyAgICAnZ0VsOyc6ICdcdTJhOGMnLAorICAgICdnZWw7JzogJ1x1MjJkYicsCisgICAgJ2dlcTsnOiAnXHUyMjY1JywKKyAgICAnZ2VxcTsnOiAnXHUyMjY3JywKKyAgICAnZ2Vxc2xhbnQ7JzogJ1x1MmE3ZScsCisgICAgJ2dlczsnOiAnXHUyYTdlJywKKyAgICAnZ2VzY2M7JzogJ1x1MmFhOScsCisgICAgJ2dlc2RvdDsnOiAnXHUyYTgwJywKKyAgICAnZ2VzZG90bzsnOiAnXHUyYTgyJywKKyAgICAnZ2VzZG90b2w7JzogJ1x1MmE4NCcsCisgICAgJ2dlc2w7JzogJ1x1MjJkYlx1ZmUwMCcsCisgICAgJ2dlc2xlczsnOiAnXHUyYTk0JywKKyAgICAnR2ZyOyc6ICdcVTAwMDFkNTBhJywKKyAgICAnZ2ZyOyc6ICdcVTAwMDFkNTI0JywKKyAgICAnR2c7JzogJ1x1MjJkOScsCisgICAgJ2dnOyc6ICdcdTIyNmInLAorICAgICdnZ2c7JzogJ1x1MjJkOScsCisgICAgJ2dpbWVsOyc6ICdcdTIxMzcnLAorICAgICdHSmN5Oyc6ICdcdTA0MDMnLAorICAgICdnamN5Oyc6ICdcdTA0NTMnLAorICAgICdnbDsnOiAnXHUyMjc3JywKKyAgICAnZ2xhOyc6ICdcdTJhYTUnLAorICAgICdnbEU7JzogJ1x1MmE5MicsCisgICAgJ2dsajsnOiAnXHUyYWE0JywKKyAgICAnZ25hcDsnOiAnXHUyYThhJywKKyAgICAnZ25hcHByb3g7JzogJ1x1MmE4YScsCisgICAgJ2duRTsnOiAnXHUyMjY5JywKKyAgICAnZ25lOyc6ICdcdTJhODgnLAorICAgICdnbmVxOyc6ICdcdTJhODgnLAorICAgICdnbmVxcTsnOiAnXHUyMjY5JywKKyAgICAnZ25zaW07JzogJ1x1MjJlNycsCisgICAgJ0dvcGY7JzogJ1xVMDAwMWQ1M2UnLAorICAgICdnb3BmOyc6ICdcVTAwMDFkNTU4JywKKyAgICAnZ3JhdmU7JzogJ2AnLAorICAgICdHcmVhdGVyRXF1YWw7JzogJ1x1MjI2NScsCisgICAgJ0dyZWF0ZXJFcXVhbExlc3M7JzogJ1x1MjJkYicsCisgICAgJ0dyZWF0ZXJGdWxsRXF1YWw7JzogJ1x1MjI2NycsCisgICAgJ0dyZWF0ZXJHcmVhdGVyOyc6ICdcdTJhYTInLAorICAgICdHcmVhdGVyTGVzczsnOiAnXHUyMjc3JywKKyAgICAnR3JlYXRlclNsYW50RXF1YWw7JzogJ1x1MmE3ZScsCisgICAgJ0dyZWF0ZXJUaWxkZTsnOiAnXHUyMjczJywKKyAgICAnR3NjcjsnOiAnXFUwMDAxZDRhMicsCisgICAgJ2dzY3I7JzogJ1x1MjEwYScsCisgICAgJ2dzaW07JzogJ1x1MjI3MycsCisgICAgJ2dzaW1lOyc6ICdcdTJhOGUnLAorICAgICdnc2ltbDsnOiAnXHUyYTkwJywKKyAgICAnR1Q7JzogJz4nLAorICAgICdHVCc6ICc+JywKKyAgICAnR3Q7JzogJ1x1MjI2YicsCisgICAgJ2d0Oyc6ICc+JywKKyAgICAnZ3QnOiAnPicsCisgICAgJ2d0Y2M7JzogJ1x1MmFhNycsCisgICAgJ2d0Y2lyOyc6ICdcdTJhN2EnLAorICAgICdndGRvdDsnOiAnXHUyMmQ3JywKKyAgICAnZ3RsUGFyOyc6ICdcdTI5OTUnLAorICAgICdndHF1ZXN0Oyc6ICdcdTJhN2MnLAorICAgICdndHJhcHByb3g7JzogJ1x1MmE4NicsCisgICAgJ2d0cmFycjsnOiAnXHUyOTc4JywKKyAgICAnZ3RyZG90Oyc6ICdcdTIyZDcnLAorICAgICdndHJlcWxlc3M7JzogJ1x1MjJkYicsCisgICAgJ2d0cmVxcWxlc3M7JzogJ1x1MmE4YycsCisgICAgJ2d0cmxlc3M7JzogJ1x1MjI3NycsCisgICAgJ2d0cnNpbTsnOiAnXHUyMjczJywKKyAgICAnZ3ZlcnRuZXFxOyc6ICdcdTIyNjlcdWZlMDAnLAorICAgICdndm5FOyc6ICdcdTIyNjlcdWZlMDAnLAorICAgICdIYWNlazsnOiAnXHUwMmM3JywKKyAgICAnaGFpcnNwOyc6ICdcdTIwMGEnLAorICAgICdoYWxmOyc6ICdceGJkJywKKyAgICAnaGFtaWx0Oyc6ICdcdTIxMGInLAorICAgICdIQVJEY3k7JzogJ1x1MDQyYScsCisgICAgJ2hhcmRjeTsnOiAnXHUwNDRhJywKKyAgICAnaEFycjsnOiAnXHUyMWQ0JywKKyAgICAnaGFycjsnOiAnXHUyMTk0JywKKyAgICAnaGFycmNpcjsnOiAnXHUyOTQ4JywKKyAgICAnaGFycnc7JzogJ1x1MjFhZCcsCisgICAgJ0hhdDsnOiAnXicsCisgICAgJ2hiYXI7JzogJ1x1MjEwZicsCisgICAgJ0hjaXJjOyc6ICdcdTAxMjQnLAorICAgICdoY2lyYzsnOiAnXHUwMTI1JywKKyAgICAnaGVhcnRzOyc6ICdcdTI2NjUnLAorICAgICdoZWFydHN1aXQ7JzogJ1x1MjY2NScsCisgICAgJ2hlbGxpcDsnOiAnXHUyMDI2JywKKyAgICAnaGVyY29uOyc6ICdcdTIyYjknLAorICAgICdIZnI7JzogJ1x1MjEwYycsCisgICAgJ2hmcjsnOiAnXFUwMDAxZDUyNScsCisgICAgJ0hpbGJlcnRTcGFjZTsnOiAnXHUyMTBiJywKKyAgICAnaGtzZWFyb3c7JzogJ1x1MjkyNScsCisgICAgJ2hrc3dhcm93Oyc6ICdcdTI5MjYnLAorICAgICdob2FycjsnOiAnXHUyMWZmJywKKyAgICAnaG9tdGh0Oyc6ICdcdTIyM2InLAorICAgICdob29rbGVmdGFycm93Oyc6ICdcdTIxYTknLAorICAgICdob29rcmlnaHRhcnJvdzsnOiAnXHUyMWFhJywKKyAgICAnSG9wZjsnOiAnXHUyMTBkJywKKyAgICAnaG9wZjsnOiAnXFUwMDAxZDU1OScsCisgICAgJ2hvcmJhcjsnOiAnXHUyMDE1JywKKyAgICAnSG9yaXpvbnRhbExpbmU7JzogJ1x1MjUwMCcsCisgICAgJ0hzY3I7JzogJ1x1MjEwYicsCisgICAgJ2hzY3I7JzogJ1xVMDAwMWQ0YmQnLAorICAgICdoc2xhc2g7JzogJ1x1MjEwZicsCisgICAgJ0hzdHJvazsnOiAnXHUwMTI2JywKKyAgICAnaHN0cm9rOyc6ICdcdTAxMjcnLAorICAgICdIdW1wRG93bkh1bXA7JzogJ1x1MjI0ZScsCisgICAgJ0h1bXBFcXVhbDsnOiAnXHUyMjRmJywKKyAgICAnaHlidWxsOyc6ICdcdTIwNDMnLAorICAgICdoeXBoZW47JzogJ1x1MjAxMCcsCisgICAgJ0lhY3V0ZTsnOiAnXHhjZCcsCisgICAgJ0lhY3V0ZSc6ICdceGNkJywKKyAgICAnaWFjdXRlOyc6ICdceGVkJywKKyAgICAnaWFjdXRlJzogJ1x4ZWQnLAorICAgICdpYzsnOiAnXHUyMDYzJywKKyAgICAnSWNpcmM7JzogJ1x4Y2UnLAorICAgICdJY2lyYyc6ICdceGNlJywKKyAgICAnaWNpcmM7JzogJ1x4ZWUnLAorICAgICdpY2lyYyc6ICdceGVlJywKKyAgICAnSWN5Oyc6ICdcdTA0MTgnLAorICAgICdpY3k7JzogJ1x1MDQzOCcsCisgICAgJ0lkb3Q7JzogJ1x1MDEzMCcsCisgICAgJ0lFY3k7JzogJ1x1MDQxNScsCisgICAgJ2llY3k7JzogJ1x1MDQzNScsCisgICAgJ2lleGNsOyc6ICdceGExJywKKyAgICAnaWV4Y2wnOiAnXHhhMScsCisgICAgJ2lmZjsnOiAnXHUyMWQ0JywKKyAgICAnSWZyOyc6ICdcdTIxMTEnLAorICAgICdpZnI7JzogJ1xVMDAwMWQ1MjYnLAorICAgICdJZ3JhdmU7JzogJ1x4Y2MnLAorICAgICdJZ3JhdmUnOiAnXHhjYycsCisgICAgJ2lncmF2ZTsnOiAnXHhlYycsCisgICAgJ2lncmF2ZSc6ICdceGVjJywKKyAgICAnaWk7JzogJ1x1MjE0OCcsCisgICAgJ2lpaWludDsnOiAnXHUyYTBjJywKKyAgICAnaWlpbnQ7JzogJ1x1MjIyZCcsCisgICAgJ2lpbmZpbjsnOiAnXHUyOWRjJywKKyAgICAnaWlvdGE7JzogJ1x1MjEyOScsCisgICAgJ0lKbGlnOyc6ICdcdTAxMzInLAorICAgICdpamxpZzsnOiAnXHUwMTMzJywKKyAgICAnSW07JzogJ1x1MjExMScsCisgICAgJ0ltYWNyOyc6ICdcdTAxMmEnLAorICAgICdpbWFjcjsnOiAnXHUwMTJiJywKKyAgICAnaW1hZ2U7JzogJ1x1MjExMScsCisgICAgJ0ltYWdpbmFyeUk7JzogJ1x1MjE0OCcsCisgICAgJ2ltYWdsaW5lOyc6ICdcdTIxMTAnLAorICAgICdpbWFncGFydDsnOiAnXHUyMTExJywKKyAgICAnaW1hdGg7JzogJ1x1MDEzMScsCisgICAgJ2ltb2Y7JzogJ1x1MjJiNycsCisgICAgJ2ltcGVkOyc6ICdcdTAxYjUnLAorICAgICdJbXBsaWVzOyc6ICdcdTIxZDInLAorICAgICdpbjsnOiAnXHUyMjA4JywKKyAgICAnaW5jYXJlOyc6ICdcdTIxMDUnLAorICAgICdpbmZpbjsnOiAnXHUyMjFlJywKKyAgICAnaW5maW50aWU7JzogJ1x1MjlkZCcsCisgICAgJ2lub2RvdDsnOiAnXHUwMTMxJywKKyAgICAnSW50Oyc6ICdcdTIyMmMnLAorICAgICdpbnQ7JzogJ1x1MjIyYicsCisgICAgJ2ludGNhbDsnOiAnXHUyMmJhJywKKyAgICAnaW50ZWdlcnM7JzogJ1x1MjEyNCcsCisgICAgJ0ludGVncmFsOyc6ICdcdTIyMmInLAorICAgICdpbnRlcmNhbDsnOiAnXHUyMmJhJywKKyAgICAnSW50ZXJzZWN0aW9uOyc6ICdcdTIyYzInLAorICAgICdpbnRsYXJoazsnOiAnXHUyYTE3JywKKyAgICAnaW50cHJvZDsnOiAnXHUyYTNjJywKKyAgICAnSW52aXNpYmxlQ29tbWE7JzogJ1x1MjA2MycsCisgICAgJ0ludmlzaWJsZVRpbWVzOyc6ICdcdTIwNjInLAorICAgICdJT2N5Oyc6ICdcdTA0MDEnLAorICAgICdpb2N5Oyc6ICdcdTA0NTEnLAorICAgICdJb2dvbjsnOiAnXHUwMTJlJywKKyAgICAnaW9nb247JzogJ1x1MDEyZicsCisgICAgJ0lvcGY7JzogJ1xVMDAwMWQ1NDAnLAorICAgICdpb3BmOyc6ICdcVTAwMDFkNTVhJywKKyAgICAnSW90YTsnOiAnXHUwMzk5JywKKyAgICAnaW90YTsnOiAnXHUwM2I5JywKKyAgICAnaXByb2Q7JzogJ1x1MmEzYycsCisgICAgJ2lxdWVzdDsnOiAnXHhiZicsCisgICAgJ2lxdWVzdCc6ICdceGJmJywKKyAgICAnSXNjcjsnOiAnXHUyMTEwJywKKyAgICAnaXNjcjsnOiAnXFUwMDAxZDRiZScsCisgICAgJ2lzaW47JzogJ1x1MjIwOCcsCisgICAgJ2lzaW5kb3Q7JzogJ1x1MjJmNScsCisgICAgJ2lzaW5FOyc6ICdcdTIyZjknLAorICAgICdpc2luczsnOiAnXHUyMmY0JywKKyAgICAnaXNpbnN2Oyc6ICdcdTIyZjMnLAorICAgICdpc2ludjsnOiAnXHUyMjA4JywKKyAgICAnaXQ7JzogJ1x1MjA2MicsCisgICAgJ0l0aWxkZTsnOiAnXHUwMTI4JywKKyAgICAnaXRpbGRlOyc6ICdcdTAxMjknLAorICAgICdJdWtjeTsnOiAnXHUwNDA2JywKKyAgICAnaXVrY3k7JzogJ1x1MDQ1NicsCisgICAgJ0l1bWw7JzogJ1x4Y2YnLAorICAgICdJdW1sJzogJ1x4Y2YnLAorICAgICdpdW1sOyc6ICdceGVmJywKKyAgICAnaXVtbCc6ICdceGVmJywKKyAgICAnSmNpcmM7JzogJ1x1MDEzNCcsCisgICAgJ2pjaXJjOyc6ICdcdTAxMzUnLAorICAgICdKY3k7JzogJ1x1MDQxOScsCisgICAgJ2pjeTsnOiAnXHUwNDM5JywKKyAgICAnSmZyOyc6ICdcVTAwMDFkNTBkJywKKyAgICAnamZyOyc6ICdcVTAwMDFkNTI3JywKKyAgICAnam1hdGg7JzogJ1x1MDIzNycsCisgICAgJ0pvcGY7JzogJ1xVMDAwMWQ1NDEnLAorICAgICdqb3BmOyc6ICdcVTAwMDFkNTViJywKKyAgICAnSnNjcjsnOiAnXFUwMDAxZDRhNScsCisgICAgJ2pzY3I7JzogJ1xVMDAwMWQ0YmYnLAorICAgICdKc2VyY3k7JzogJ1x1MDQwOCcsCisgICAgJ2pzZXJjeTsnOiAnXHUwNDU4JywKKyAgICAnSnVrY3k7JzogJ1x1MDQwNCcsCisgICAgJ2p1a2N5Oyc6ICdcdTA0NTQnLAorICAgICdLYXBwYTsnOiAnXHUwMzlhJywKKyAgICAna2FwcGE7JzogJ1x1MDNiYScsCisgICAgJ2thcHBhdjsnOiAnXHUwM2YwJywKKyAgICAnS2NlZGlsOyc6ICdcdTAxMzYnLAorICAgICdrY2VkaWw7JzogJ1x1MDEzNycsCisgICAgJ0tjeTsnOiAnXHUwNDFhJywKKyAgICAna2N5Oyc6ICdcdTA0M2EnLAorICAgICdLZnI7JzogJ1xVMDAwMWQ1MGUnLAorICAgICdrZnI7JzogJ1xVMDAwMWQ1MjgnLAorICAgICdrZ3JlZW47JzogJ1x1MDEzOCcsCisgICAgJ0tIY3k7JzogJ1x1MDQyNScsCisgICAgJ2toY3k7JzogJ1x1MDQ0NScsCisgICAgJ0tKY3k7JzogJ1x1MDQwYycsCisgICAgJ2tqY3k7JzogJ1x1MDQ1YycsCisgICAgJ0tvcGY7JzogJ1xVMDAwMWQ1NDInLAorICAgICdrb3BmOyc6ICdcVTAwMDFkNTVjJywKKyAgICAnS3NjcjsnOiAnXFUwMDAxZDRhNicsCisgICAgJ2tzY3I7JzogJ1xVMDAwMWQ0YzAnLAorICAgICdsQWFycjsnOiAnXHUyMWRhJywKKyAgICAnTGFjdXRlOyc6ICdcdTAxMzknLAorICAgICdsYWN1dGU7JzogJ1x1MDEzYScsCisgICAgJ2xhZW1wdHl2Oyc6ICdcdTI5YjQnLAorICAgICdsYWdyYW47JzogJ1x1MjExMicsCisgICAgJ0xhbWJkYTsnOiAnXHUwMzliJywKKyAgICAnbGFtYmRhOyc6ICdcdTAzYmInLAorICAgICdMYW5nOyc6ICdcdTI3ZWEnLAorICAgICdsYW5nOyc6ICdcdTIzMjknLAorICAgICdsYW5nZDsnOiAnXHUyOTkxJywKKyAgICAnbGFuZ2xlOyc6ICdcdTIzMjknLAorICAgICdsYXA7JzogJ1x1MmE4NScsCisgICAgJ0xhcGxhY2V0cmY7JzogJ1x1MjExMicsCisgICAgJ2xhcXVvOyc6ICdceGFiJywKKyAgICAnbGFxdW8nOiAnXHhhYicsCisgICAgJ0xhcnI7JzogJ1x1MjE5ZScsCisgICAgJ2xBcnI7JzogJ1x1MjFkMCcsCisgICAgJ2xhcnI7JzogJ1x1MjE5MCcsCisgICAgJ2xhcnJiOyc6ICdcdTIxZTQnLAorICAgICdsYXJyYmZzOyc6ICdcdTI5MWYnLAorICAgICdsYXJyZnM7JzogJ1x1MjkxZCcsCisgICAgJ2xhcnJoazsnOiAnXHUyMWE5JywKKyAgICAnbGFycmxwOyc6ICdcdTIxYWInLAorICAgICdsYXJycGw7JzogJ1x1MjkzOScsCisgICAgJ2xhcnJzaW07JzogJ1x1Mjk3MycsCisgICAgJ2xhcnJ0bDsnOiAnXHUyMWEyJywKKyAgICAnbGF0Oyc6ICdcdTJhYWInLAorICAgICdsQXRhaWw7JzogJ1x1MjkxYicsCisgICAgJ2xhdGFpbDsnOiAnXHUyOTE5JywKKyAgICAnbGF0ZTsnOiAnXHUyYWFkJywKKyAgICAnbGF0ZXM7JzogJ1x1MmFhZFx1ZmUwMCcsCisgICAgJ2xCYXJyOyc6ICdcdTI5MGUnLAorICAgICdsYmFycjsnOiAnXHUyOTBjJywKKyAgICAnbGJicms7JzogJ1x1Mjc3MicsCisgICAgJ2xicmFjZTsnOiAneycsCisgICAgJ2xicmFjazsnOiAnWycsCisgICAgJ2xicmtlOyc6ICdcdTI5OGInLAorICAgICdsYnJrc2xkOyc6ICdcdTI5OGYnLAorICAgICdsYnJrc2x1Oyc6ICdcdTI5OGQnLAorICAgICdMY2Fyb247JzogJ1x1MDEzZCcsCisgICAgJ2xjYXJvbjsnOiAnXHUwMTNlJywKKyAgICAnTGNlZGlsOyc6ICdcdTAxM2InLAorICAgICdsY2VkaWw7JzogJ1x1MDEzYycsCisgICAgJ2xjZWlsOyc6ICdcdTIzMDgnLAorICAgICdsY3ViOyc6ICd7JywKKyAgICAnTGN5Oyc6ICdcdTA0MWInLAorICAgICdsY3k7JzogJ1x1MDQzYicsCisgICAgJ2xkY2E7JzogJ1x1MjkzNicsCisgICAgJ2xkcXVvOyc6ICdcdTIwMWMnLAorICAgICdsZHF1b3I7JzogJ1x1MjAxZScsCisgICAgJ2xkcmRoYXI7JzogJ1x1Mjk2NycsCisgICAgJ2xkcnVzaGFyOyc6ICdcdTI5NGInLAorICAgICdsZHNoOyc6ICdcdTIxYjInLAorICAgICdsRTsnOiAnXHUyMjY2JywKKyAgICAnbGU7JzogJ1x1MjI2NCcsCisgICAgJ0xlZnRBbmdsZUJyYWNrZXQ7JzogJ1x1MjMyOScsCisgICAgJ0xlZnRBcnJvdzsnOiAnXHUyMTkwJywKKyAgICAnTGVmdGFycm93Oyc6ICdcdTIxZDAnLAorICAgICdsZWZ0YXJyb3c7JzogJ1x1MjE5MCcsCisgICAgJ0xlZnRBcnJvd0JhcjsnOiAnXHUyMWU0JywKKyAgICAnTGVmdEFycm93UmlnaHRBcnJvdzsnOiAnXHUyMWM2JywKKyAgICAnbGVmdGFycm93dGFpbDsnOiAnXHUyMWEyJywKKyAgICAnTGVmdENlaWxpbmc7JzogJ1x1MjMwOCcsCisgICAgJ0xlZnREb3VibGVCcmFja2V0Oyc6ICdcdTI3ZTYnLAorICAgICdMZWZ0RG93blRlZVZlY3RvcjsnOiAnXHUyOTYxJywKKyAgICAnTGVmdERvd25WZWN0b3I7JzogJ1x1MjFjMycsCisgICAgJ0xlZnREb3duVmVjdG9yQmFyOyc6ICdcdTI5NTknLAorICAgICdMZWZ0Rmxvb3I7JzogJ1x1MjMwYScsCisgICAgJ2xlZnRoYXJwb29uZG93bjsnOiAnXHUyMWJkJywKKyAgICAnbGVmdGhhcnBvb251cDsnOiAnXHUyMWJjJywKKyAgICAnbGVmdGxlZnRhcnJvd3M7JzogJ1x1MjFjNycsCisgICAgJ0xlZnRSaWdodEFycm93Oyc6ICdcdTIxOTQnLAorICAgICdMZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMWQ0JywKKyAgICAnbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjE5NCcsCisgICAgJ2xlZnRyaWdodGFycm93czsnOiAnXHUyMWM2JywKKyAgICAnbGVmdHJpZ2h0aGFycG9vbnM7JzogJ1x1MjFjYicsCisgICAgJ2xlZnRyaWdodHNxdWlnYXJyb3c7JzogJ1x1MjFhZCcsCisgICAgJ0xlZnRSaWdodFZlY3RvcjsnOiAnXHUyOTRlJywKKyAgICAnTGVmdFRlZTsnOiAnXHUyMmEzJywKKyAgICAnTGVmdFRlZUFycm93Oyc6ICdcdTIxYTQnLAorICAgICdMZWZ0VGVlVmVjdG9yOyc6ICdcdTI5NWEnLAorICAgICdsZWZ0dGhyZWV0aW1lczsnOiAnXHUyMmNiJywKKyAgICAnTGVmdFRyaWFuZ2xlOyc6ICdcdTIyYjInLAorICAgICdMZWZ0VHJpYW5nbGVCYXI7JzogJ1x1MjljZicsCisgICAgJ0xlZnRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyYjQnLAorICAgICdMZWZ0VXBEb3duVmVjdG9yOyc6ICdcdTI5NTEnLAorICAgICdMZWZ0VXBUZWVWZWN0b3I7JzogJ1x1Mjk2MCcsCisgICAgJ0xlZnRVcFZlY3RvcjsnOiAnXHUyMWJmJywKKyAgICAnTGVmdFVwVmVjdG9yQmFyOyc6ICdcdTI5NTgnLAorICAgICdMZWZ0VmVjdG9yOyc6ICdcdTIxYmMnLAorICAgICdMZWZ0VmVjdG9yQmFyOyc6ICdcdTI5NTInLAorICAgICdsRWc7JzogJ1x1MmE4YicsCisgICAgJ2xlZzsnOiAnXHUyMmRhJywKKyAgICAnbGVxOyc6ICdcdTIyNjQnLAorICAgICdsZXFxOyc6ICdcdTIyNjYnLAorICAgICdsZXFzbGFudDsnOiAnXHUyYTdkJywKKyAgICAnbGVzOyc6ICdcdTJhN2QnLAorICAgICdsZXNjYzsnOiAnXHUyYWE4JywKKyAgICAnbGVzZG90Oyc6ICdcdTJhN2YnLAorICAgICdsZXNkb3RvOyc6ICdcdTJhODEnLAorICAgICdsZXNkb3RvcjsnOiAnXHUyYTgzJywKKyAgICAnbGVzZzsnOiAnXHUyMmRhXHVmZTAwJywKKyAgICAnbGVzZ2VzOyc6ICdcdTJhOTMnLAorICAgICdsZXNzYXBwcm94Oyc6ICdcdTJhODUnLAorICAgICdsZXNzZG90Oyc6ICdcdTIyZDYnLAorICAgICdsZXNzZXFndHI7JzogJ1x1MjJkYScsCisgICAgJ2xlc3NlcXFndHI7JzogJ1x1MmE4YicsCisgICAgJ0xlc3NFcXVhbEdyZWF0ZXI7JzogJ1x1MjJkYScsCisgICAgJ0xlc3NGdWxsRXF1YWw7JzogJ1x1MjI2NicsCisgICAgJ0xlc3NHcmVhdGVyOyc6ICdcdTIyNzYnLAorICAgICdsZXNzZ3RyOyc6ICdcdTIyNzYnLAorICAgICdMZXNzTGVzczsnOiAnXHUyYWExJywKKyAgICAnbGVzc3NpbTsnOiAnXHUyMjcyJywKKyAgICAnTGVzc1NsYW50RXF1YWw7JzogJ1x1MmE3ZCcsCisgICAgJ0xlc3NUaWxkZTsnOiAnXHUyMjcyJywKKyAgICAnbGZpc2h0Oyc6ICdcdTI5N2MnLAorICAgICdsZmxvb3I7JzogJ1x1MjMwYScsCisgICAgJ0xmcjsnOiAnXFUwMDAxZDUwZicsCisgICAgJ2xmcjsnOiAnXFUwMDAxZDUyOScsCisgICAgJ2xnOyc6ICdcdTIyNzYnLAorICAgICdsZ0U7JzogJ1x1MmE5MScsCisgICAgJ2xIYXI7JzogJ1x1Mjk2MicsCisgICAgJ2xoYXJkOyc6ICdcdTIxYmQnLAorICAgICdsaGFydTsnOiAnXHUyMWJjJywKKyAgICAnbGhhcnVsOyc6ICdcdTI5NmEnLAorICAgICdsaGJsazsnOiAnXHUyNTg0JywKKyAgICAnTEpjeTsnOiAnXHUwNDA5JywKKyAgICAnbGpjeTsnOiAnXHUwNDU5JywKKyAgICAnTGw7JzogJ1x1MjJkOCcsCisgICAgJ2xsOyc6ICdcdTIyNmEnLAorICAgICdsbGFycjsnOiAnXHUyMWM3JywKKyAgICAnbGxjb3JuZXI7JzogJ1x1MjMxZScsCisgICAgJ0xsZWZ0YXJyb3c7JzogJ1x1MjFkYScsCisgICAgJ2xsaGFyZDsnOiAnXHUyOTZiJywKKyAgICAnbGx0cmk7JzogJ1x1MjVmYScsCisgICAgJ0xtaWRvdDsnOiAnXHUwMTNmJywKKyAgICAnbG1pZG90Oyc6ICdcdTAxNDAnLAorICAgICdsbW91c3Q7JzogJ1x1MjNiMCcsCisgICAgJ2xtb3VzdGFjaGU7JzogJ1x1MjNiMCcsCisgICAgJ2xuYXA7JzogJ1x1MmE4OScsCisgICAgJ2xuYXBwcm94Oyc6ICdcdTJhODknLAorICAgICdsbkU7JzogJ1x1MjI2OCcsCisgICAgJ2xuZTsnOiAnXHUyYTg3JywKKyAgICAnbG5lcTsnOiAnXHUyYTg3JywKKyAgICAnbG5lcXE7JzogJ1x1MjI2OCcsCisgICAgJ2xuc2ltOyc6ICdcdTIyZTYnLAorICAgICdsb2FuZzsnOiAnXHUyN2VjJywKKyAgICAnbG9hcnI7JzogJ1x1MjFmZCcsCisgICAgJ2xvYnJrOyc6ICdcdTI3ZTYnLAorICAgICdMb25nTGVmdEFycm93Oyc6ICdcdTI3ZjUnLAorICAgICdMb25nbGVmdGFycm93Oyc6ICdcdTI3ZjgnLAorICAgICdsb25nbGVmdGFycm93Oyc6ICdcdTI3ZjUnLAorICAgICdMb25nTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjdmNycsCisgICAgJ0xvbmdsZWZ0cmlnaHRhcnJvdzsnOiAnXHUyN2ZhJywKKyAgICAnbG9uZ2xlZnRyaWdodGFycm93Oyc6ICdcdTI3ZjcnLAorICAgICdsb25nbWFwc3RvOyc6ICdcdTI3ZmMnLAorICAgICdMb25nUmlnaHRBcnJvdzsnOiAnXHUyN2Y2JywKKyAgICAnTG9uZ3JpZ2h0YXJyb3c7JzogJ1x1MjdmOScsCisgICAgJ2xvbmdyaWdodGFycm93Oyc6ICdcdTI3ZjYnLAorICAgICdsb29wYXJyb3dsZWZ0Oyc6ICdcdTIxYWInLAorICAgICdsb29wYXJyb3dyaWdodDsnOiAnXHUyMWFjJywKKyAgICAnbG9wYXI7JzogJ1x1Mjk4NScsCisgICAgJ0xvcGY7JzogJ1xVMDAwMWQ1NDMnLAorICAgICdsb3BmOyc6ICdcVTAwMDFkNTVkJywKKyAgICAnbG9wbHVzOyc6ICdcdTJhMmQnLAorICAgICdsb3RpbWVzOyc6ICdcdTJhMzQnLAorICAgICdsb3dhc3Q7JzogJ1x1MjIxNycsCisgICAgJ2xvd2JhcjsnOiAnXycsCisgICAgJ0xvd2VyTGVmdEFycm93Oyc6ICdcdTIxOTknLAorICAgICdMb3dlclJpZ2h0QXJyb3c7JzogJ1x1MjE5OCcsCisgICAgJ2xvejsnOiAnXHUyNWNhJywKKyAgICAnbG96ZW5nZTsnOiAnXHUyNWNhJywKKyAgICAnbG96ZjsnOiAnXHUyOWViJywKKyAgICAnbHBhcjsnOiAnKCcsCisgICAgJ2xwYXJsdDsnOiAnXHUyOTkzJywKKyAgICAnbHJhcnI7JzogJ1x1MjFjNicsCisgICAgJ2xyY29ybmVyOyc6ICdcdTIzMWYnLAorICAgICdscmhhcjsnOiAnXHUyMWNiJywKKyAgICAnbHJoYXJkOyc6ICdcdTI5NmQnLAorICAgICdscm07JzogJ1x1MjAwZScsCisgICAgJ2xydHJpOyc6ICdcdTIyYmYnLAorICAgICdsc2FxdW87JzogJ1x1MjAzOScsCisgICAgJ0xzY3I7JzogJ1x1MjExMicsCisgICAgJ2xzY3I7JzogJ1xVMDAwMWQ0YzEnLAorICAgICdMc2g7JzogJ1x1MjFiMCcsCisgICAgJ2xzaDsnOiAnXHUyMWIwJywKKyAgICAnbHNpbTsnOiAnXHUyMjcyJywKKyAgICAnbHNpbWU7JzogJ1x1MmE4ZCcsCisgICAgJ2xzaW1nOyc6ICdcdTJhOGYnLAorICAgICdsc3FiOyc6ICdbJywKKyAgICAnbHNxdW87JzogJ1x1MjAxOCcsCisgICAgJ2xzcXVvcjsnOiAnXHUyMDFhJywKKyAgICAnTHN0cm9rOyc6ICdcdTAxNDEnLAorICAgICdsc3Ryb2s7JzogJ1x1MDE0MicsCisgICAgJ0xUOyc6ICc8JywKKyAgICAnTFQnOiAnPCcsCisgICAgJ0x0Oyc6ICdcdTIyNmEnLAorICAgICdsdDsnOiAnPCcsCisgICAgJ2x0JzogJzwnLAorICAgICdsdGNjOyc6ICdcdTJhYTYnLAorICAgICdsdGNpcjsnOiAnXHUyYTc5JywKKyAgICAnbHRkb3Q7JzogJ1x1MjJkNicsCisgICAgJ2x0aHJlZTsnOiAnXHUyMmNiJywKKyAgICAnbHRpbWVzOyc6ICdcdTIyYzknLAorICAgICdsdGxhcnI7JzogJ1x1Mjk3NicsCisgICAgJ2x0cXVlc3Q7JzogJ1x1MmE3YicsCisgICAgJ2x0cmk7JzogJ1x1MjVjMycsCisgICAgJ2x0cmllOyc6ICdcdTIyYjQnLAorICAgICdsdHJpZjsnOiAnXHUyNWMyJywKKyAgICAnbHRyUGFyOyc6ICdcdTI5OTYnLAorICAgICdsdXJkc2hhcjsnOiAnXHUyOTRhJywKKyAgICAnbHVydWhhcjsnOiAnXHUyOTY2JywKKyAgICAnbHZlcnRuZXFxOyc6ICdcdTIyNjhcdWZlMDAnLAorICAgICdsdm5FOyc6ICdcdTIyNjhcdWZlMDAnLAorICAgICdtYWNyOyc6ICdceGFmJywKKyAgICAnbWFjcic6ICdceGFmJywKKyAgICAnbWFsZTsnOiAnXHUyNjQyJywKKyAgICAnbWFsdDsnOiAnXHUyNzIwJywKKyAgICAnbWFsdGVzZTsnOiAnXHUyNzIwJywKKyAgICAnTWFwOyc6ICdcdTI5MDUnLAorICAgICdtYXA7JzogJ1x1MjFhNicsCisgICAgJ21hcHN0bzsnOiAnXHUyMWE2JywKKyAgICAnbWFwc3RvZG93bjsnOiAnXHUyMWE3JywKKyAgICAnbWFwc3RvbGVmdDsnOiAnXHUyMWE0JywKKyAgICAnbWFwc3RvdXA7JzogJ1x1MjFhNScsCisgICAgJ21hcmtlcjsnOiAnXHUyNWFlJywKKyAgICAnbWNvbW1hOyc6ICdcdTJhMjknLAorICAgICdNY3k7JzogJ1x1MDQxYycsCisgICAgJ21jeTsnOiAnXHUwNDNjJywKKyAgICAnbWRhc2g7JzogJ1x1MjAxNCcsCisgICAgJ21ERG90Oyc6ICdcdTIyM2EnLAorICAgICdtZWFzdXJlZGFuZ2xlOyc6ICdcdTIyMjEnLAorICAgICdNZWRpdW1TcGFjZTsnOiAnXHUyMDVmJywKKyAgICAnTWVsbGludHJmOyc6ICdcdTIxMzMnLAorICAgICdNZnI7JzogJ1xVMDAwMWQ1MTAnLAorICAgICdtZnI7JzogJ1xVMDAwMWQ1MmEnLAorICAgICdtaG87JzogJ1x1MjEyNycsCisgICAgJ21pY3JvOyc6ICdceGI1JywKKyAgICAnbWljcm8nOiAnXHhiNScsCisgICAgJ21pZDsnOiAnXHUyMjIzJywKKyAgICAnbWlkYXN0Oyc6ICcqJywKKyAgICAnbWlkY2lyOyc6ICdcdTJhZjAnLAorICAgICdtaWRkb3Q7JzogJ1x4YjcnLAorICAgICdtaWRkb3QnOiAnXHhiNycsCisgICAgJ21pbnVzOyc6ICdcdTIyMTInLAorICAgICdtaW51c2I7JzogJ1x1MjI5ZicsCisgICAgJ21pbnVzZDsnOiAnXHUyMjM4JywKKyAgICAnbWludXNkdTsnOiAnXHUyYTJhJywKKyAgICAnTWludXNQbHVzOyc6ICdcdTIyMTMnLAorICAgICdtbGNwOyc6ICdcdTJhZGInLAorICAgICdtbGRyOyc6ICdcdTIwMjYnLAorICAgICdtbnBsdXM7JzogJ1x1MjIxMycsCisgICAgJ21vZGVsczsnOiAnXHUyMmE3JywKKyAgICAnTW9wZjsnOiAnXFUwMDAxZDU0NCcsCisgICAgJ21vcGY7JzogJ1xVMDAwMWQ1NWUnLAorICAgICdtcDsnOiAnXHUyMjEzJywKKyAgICAnTXNjcjsnOiAnXHUyMTMzJywKKyAgICAnbXNjcjsnOiAnXFUwMDAxZDRjMicsCisgICAgJ21zdHBvczsnOiAnXHUyMjNlJywKKyAgICAnTXU7JzogJ1x1MDM5YycsCisgICAgJ211Oyc6ICdcdTAzYmMnLAorICAgICdtdWx0aW1hcDsnOiAnXHUyMmI4JywKKyAgICAnbXVtYXA7JzogJ1x1MjJiOCcsCisgICAgJ25hYmxhOyc6ICdcdTIyMDcnLAorICAgICdOYWN1dGU7JzogJ1x1MDE0MycsCisgICAgJ25hY3V0ZTsnOiAnXHUwMTQ0JywKKyAgICAnbmFuZzsnOiAnXHUyMjIwXHUyMGQyJywKKyAgICAnbmFwOyc6ICdcdTIyNDknLAorICAgICduYXBFOyc6ICdcdTJhNzBcdTAzMzgnLAorICAgICduYXBpZDsnOiAnXHUyMjRiXHUwMzM4JywKKyAgICAnbmFwb3M7JzogJ1x1MDE0OScsCisgICAgJ25hcHByb3g7JzogJ1x1MjI0OScsCisgICAgJ25hdHVyOyc6ICdcdTI2NmUnLAorICAgICduYXR1cmFsOyc6ICdcdTI2NmUnLAorICAgICduYXR1cmFsczsnOiAnXHUyMTE1JywKKyAgICAnbmJzcDsnOiAnXHhhMCcsCisgICAgJ25ic3AnOiAnXHhhMCcsCisgICAgJ25idW1wOyc6ICdcdTIyNGVcdTAzMzgnLAorICAgICduYnVtcGU7JzogJ1x1MjI0Zlx1MDMzOCcsCisgICAgJ25jYXA7JzogJ1x1MmE0MycsCisgICAgJ05jYXJvbjsnOiAnXHUwMTQ3JywKKyAgICAnbmNhcm9uOyc6ICdcdTAxNDgnLAorICAgICdOY2VkaWw7JzogJ1x1MDE0NScsCisgICAgJ25jZWRpbDsnOiAnXHUwMTQ2JywKKyAgICAnbmNvbmc7JzogJ1x1MjI0NycsCisgICAgJ25jb25nZG90Oyc6ICdcdTJhNmRcdTAzMzgnLAorICAgICduY3VwOyc6ICdcdTJhNDInLAorICAgICdOY3k7JzogJ1x1MDQxZCcsCisgICAgJ25jeTsnOiAnXHUwNDNkJywKKyAgICAnbmRhc2g7JzogJ1x1MjAxMycsCisgICAgJ25lOyc6ICdcdTIyNjAnLAorICAgICduZWFyaGs7JzogJ1x1MjkyNCcsCisgICAgJ25lQXJyOyc6ICdcdTIxZDcnLAorICAgICduZWFycjsnOiAnXHUyMTk3JywKKyAgICAnbmVhcnJvdzsnOiAnXHUyMTk3JywKKyAgICAnbmVkb3Q7JzogJ1x1MjI1MFx1MDMzOCcsCisgICAgJ05lZ2F0aXZlTWVkaXVtU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ05lZ2F0aXZlVGhpY2tTcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnTmVnYXRpdmVUaGluU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ05lZ2F0aXZlVmVyeVRoaW5TcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnbmVxdWl2Oyc6ICdcdTIyNjInLAorICAgICduZXNlYXI7JzogJ1x1MjkyOCcsCisgICAgJ25lc2ltOyc6ICdcdTIyNDJcdTAzMzgnLAorICAgICdOZXN0ZWRHcmVhdGVyR3JlYXRlcjsnOiAnXHUyMjZiJywKKyAgICAnTmVzdGVkTGVzc0xlc3M7JzogJ1x1MjI2YScsCisgICAgJ05ld0xpbmU7JzogJ1x1MjQwYScsCisgICAgJ25leGlzdDsnOiAnXHUyMjA0JywKKyAgICAnbmV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTmZyOyc6ICdcVTAwMDFkNTExJywKKyAgICAnbmZyOyc6ICdcVTAwMDFkNTJiJywKKyAgICAnbmdFOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2U7JzogJ1x1MjI3MScsCisgICAgJ25nZXE7JzogJ1x1MjI3MScsCisgICAgJ25nZXFxOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICduZ2Vxc2xhbnQ7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25nZXM7JzogJ1x1MmE3ZVx1MDMzOCcsCisgICAgJ25HZzsnOiAnXHUyMmQ5XHUwMzM4JywKKyAgICAnbmdzaW07JzogJ1x1MjI3NScsCisgICAgJ25HdDsnOiAnXHUyMjZiXHUyMGQyJywKKyAgICAnbmd0Oyc6ICdcdTIyNmYnLAorICAgICduZ3RyOyc6ICdcdTIyNmYnLAorICAgICduR3R2Oyc6ICdcdTIyNmJcdTAzMzgnLAorICAgICduaEFycjsnOiAnXHUyMWNlJywKKyAgICAnbmhhcnI7JzogJ1x1MjFhZScsCisgICAgJ25ocGFyOyc6ICdcdTJhZjInLAorICAgICduaTsnOiAnXHUyMjBiJywKKyAgICAnbmlzOyc6ICdcdTIyZmMnLAorICAgICduaXNkOyc6ICdcdTIyZmEnLAorICAgICduaXY7JzogJ1x1MjIwYicsCisgICAgJ05KY3k7JzogJ1x1MDQwYScsCisgICAgJ25qY3k7JzogJ1x1MDQ1YScsCisgICAgJ25sQXJyOyc6ICdcdTIxY2QnLAorICAgICdubGFycjsnOiAnXHUyMTlhJywKKyAgICAnbmxkcjsnOiAnXHUyMDI1JywKKyAgICAnbmxFOyc6ICdcdTIyNjZcdTAzMzgnLAorICAgICdubGU7JzogJ1x1MjI3MCcsCisgICAgJ25MZWZ0YXJyb3c7JzogJ1x1MjFjZCcsCisgICAgJ25sZWZ0YXJyb3c7JzogJ1x1MjE5YScsCisgICAgJ25MZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMWNlJywKKyAgICAnbmxlZnRyaWdodGFycm93Oyc6ICdcdTIxYWUnLAorICAgICdubGVxOyc6ICdcdTIyNzAnLAorICAgICdubGVxcTsnOiAnXHUyMjY2XHUwMzM4JywKKyAgICAnbmxlcXNsYW50Oyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzOyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdubGVzczsnOiAnXHUyMjZlJywKKyAgICAnbkxsOyc6ICdcdTIyZDhcdTAzMzgnLAorICAgICdubHNpbTsnOiAnXHUyMjc0JywKKyAgICAnbkx0Oyc6ICdcdTIyNmFcdTIwZDInLAorICAgICdubHQ7JzogJ1x1MjI2ZScsCisgICAgJ25sdHJpOyc6ICdcdTIyZWEnLAorICAgICdubHRyaWU7JzogJ1x1MjJlYycsCisgICAgJ25MdHY7JzogJ1x1MjI2YVx1MDMzOCcsCisgICAgJ25taWQ7JzogJ1x1MjIyNCcsCisgICAgJ05vQnJlYWs7JzogJ1x1MjA2MCcsCisgICAgJ05vbkJyZWFraW5nU3BhY2U7JzogJ1x4YTAnLAorICAgICdOb3BmOyc6ICdcdTIxMTUnLAorICAgICdub3BmOyc6ICdcVTAwMDFkNTVmJywKKyAgICAnTm90Oyc6ICdcdTJhZWMnLAorICAgICdub3Q7JzogJ1x4YWMnLAorICAgICdub3QnOiAnXHhhYycsCisgICAgJ05vdENvbmdydWVudDsnOiAnXHUyMjYyJywKKyAgICAnTm90Q3VwQ2FwOyc6ICdcdTIyNmQnLAorICAgICdOb3REb3VibGVWZXJ0aWNhbEJhcjsnOiAnXHUyMjI2JywKKyAgICAnTm90RWxlbWVudDsnOiAnXHUyMjA5JywKKyAgICAnTm90RXF1YWw7JzogJ1x1MjI2MCcsCisgICAgJ05vdEVxdWFsVGlsZGU7JzogJ1x1MjI0Mlx1MDMzOCcsCisgICAgJ05vdEV4aXN0czsnOiAnXHUyMjA0JywKKyAgICAnTm90R3JlYXRlcjsnOiAnXHUyMjZmJywKKyAgICAnTm90R3JlYXRlckVxdWFsOyc6ICdcdTIyNzEnLAorICAgICdOb3RHcmVhdGVyRnVsbEVxdWFsOyc6ICdcdTIyNjdcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyR3JlYXRlcjsnOiAnXHUyMjZiXHUwMzM4JywKKyAgICAnTm90R3JlYXRlckxlc3M7JzogJ1x1MjI3OScsCisgICAgJ05vdEdyZWF0ZXJTbGFudEVxdWFsOyc6ICdcdTJhN2VcdTAzMzgnLAorICAgICdOb3RHcmVhdGVyVGlsZGU7JzogJ1x1MjI3NScsCisgICAgJ05vdEh1bXBEb3duSHVtcDsnOiAnXHUyMjRlXHUwMzM4JywKKyAgICAnTm90SHVtcEVxdWFsOyc6ICdcdTIyNGZcdTAzMzgnLAorICAgICdub3RpbjsnOiAnXHUyMjA5JywKKyAgICAnbm90aW5kb3Q7JzogJ1x1MjJmNVx1MDMzOCcsCisgICAgJ25vdGluRTsnOiAnXHUyMmY5XHUwMzM4JywKKyAgICAnbm90aW52YTsnOiAnXHUyMjA5JywKKyAgICAnbm90aW52YjsnOiAnXHUyMmY3JywKKyAgICAnbm90aW52YzsnOiAnXHUyMmY2JywKKyAgICAnTm90TGVmdFRyaWFuZ2xlOyc6ICdcdTIyZWEnLAorICAgICdOb3RMZWZ0VHJpYW5nbGVCYXI7JzogJ1x1MjljZlx1MDMzOCcsCisgICAgJ05vdExlZnRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyZWMnLAorICAgICdOb3RMZXNzOyc6ICdcdTIyNmUnLAorICAgICdOb3RMZXNzRXF1YWw7JzogJ1x1MjI3MCcsCisgICAgJ05vdExlc3NHcmVhdGVyOyc6ICdcdTIyNzgnLAorICAgICdOb3RMZXNzTGVzczsnOiAnXHUyMjZhXHUwMzM4JywKKyAgICAnTm90TGVzc1NsYW50RXF1YWw7JzogJ1x1MmE3ZFx1MDMzOCcsCisgICAgJ05vdExlc3NUaWxkZTsnOiAnXHUyMjc0JywKKyAgICAnTm90TmVzdGVkR3JlYXRlckdyZWF0ZXI7JzogJ1x1MmFhMlx1MDMzOCcsCisgICAgJ05vdE5lc3RlZExlc3NMZXNzOyc6ICdcdTJhYTFcdTAzMzgnLAorICAgICdub3RuaTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YTsnOiAnXHUyMjBjJywKKyAgICAnbm90bml2YjsnOiAnXHUyMmZlJywKKyAgICAnbm90bml2YzsnOiAnXHUyMmZkJywKKyAgICAnTm90UHJlY2VkZXM7JzogJ1x1MjI4MCcsCisgICAgJ05vdFByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZlx1MDMzOCcsCisgICAgJ05vdFByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMmUwJywKKyAgICAnTm90UmV2ZXJzZUVsZW1lbnQ7JzogJ1x1MjIwYycsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGU7JzogJ1x1MjJlYicsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVCYXI7JzogJ1x1MjlkMFx1MDMzOCcsCisgICAgJ05vdFJpZ2h0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmVkJywKKyAgICAnTm90U3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGZcdTAzMzgnLAorICAgICdOb3RTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMmUyJywKKyAgICAnTm90U3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MFx1MDMzOCcsCisgICAgJ05vdFNxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjJlMycsCisgICAgJ05vdFN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnTm90U3Vic2V0RXF1YWw7JzogJ1x1MjI4OCcsCisgICAgJ05vdFN1Y2NlZWRzOyc6ICdcdTIyODEnLAorICAgICdOb3RTdWNjZWVkc0VxdWFsOyc6ICdcdTJhYjBcdTAzMzgnLAorICAgICdOb3RTdWNjZWVkc1NsYW50RXF1YWw7JzogJ1x1MjJlMScsCisgICAgJ05vdFN1Y2NlZWRzVGlsZGU7JzogJ1x1MjI3Zlx1MDMzOCcsCisgICAgJ05vdFN1cGVyc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICdOb3RTdXBlcnNldEVxdWFsOyc6ICdcdTIyODknLAorICAgICdOb3RUaWxkZTsnOiAnXHUyMjQxJywKKyAgICAnTm90VGlsZGVFcXVhbDsnOiAnXHUyMjQ0JywKKyAgICAnTm90VGlsZGVGdWxsRXF1YWw7JzogJ1x1MjI0NycsCisgICAgJ05vdFRpbGRlVGlsZGU7JzogJ1x1MjI0OScsCisgICAgJ05vdFZlcnRpY2FsQmFyOyc6ICdcdTIyMjQnLAorICAgICducGFyOyc6ICdcdTIyMjYnLAorICAgICducGFyYWxsZWw7JzogJ1x1MjIyNicsCisgICAgJ25wYXJzbDsnOiAnXHUyYWZkXHUyMGU1JywKKyAgICAnbnBhcnQ7JzogJ1x1MjIwMlx1MDMzOCcsCisgICAgJ25wb2xpbnQ7JzogJ1x1MmExNCcsCisgICAgJ25wcjsnOiAnXHUyMjgwJywKKyAgICAnbnByY3VlOyc6ICdcdTIyZTAnLAorICAgICducHJlOyc6ICdcdTJhYWZcdTAzMzgnLAorICAgICducHJlYzsnOiAnXHUyMjgwJywKKyAgICAnbnByZWNlcTsnOiAnXHUyYWFmXHUwMzM4JywKKyAgICAnbnJBcnI7JzogJ1x1MjFjZicsCisgICAgJ25yYXJyOyc6ICdcdTIxOWInLAorICAgICducmFycmM7JzogJ1x1MjkzM1x1MDMzOCcsCisgICAgJ25yYXJydzsnOiAnXHUyMTlkXHUwMzM4JywKKyAgICAnblJpZ2h0YXJyb3c7JzogJ1x1MjFjZicsCisgICAgJ25yaWdodGFycm93Oyc6ICdcdTIxOWInLAorICAgICducnRyaTsnOiAnXHUyMmViJywKKyAgICAnbnJ0cmllOyc6ICdcdTIyZWQnLAorICAgICduc2M7JzogJ1x1MjI4MScsCisgICAgJ25zY2N1ZTsnOiAnXHUyMmUxJywKKyAgICAnbnNjZTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnTnNjcjsnOiAnXFUwMDAxZDRhOScsCisgICAgJ25zY3I7JzogJ1xVMDAwMWQ0YzMnLAorICAgICduc2hvcnRtaWQ7JzogJ1x1MjIyNCcsCisgICAgJ25zaG9ydHBhcmFsbGVsOyc6ICdcdTIyMjYnLAorICAgICduc2ltOyc6ICdcdTIyNDEnLAorICAgICduc2ltZTsnOiAnXHUyMjQ0JywKKyAgICAnbnNpbWVxOyc6ICdcdTIyNDQnLAorICAgICduc21pZDsnOiAnXHUyMjI0JywKKyAgICAnbnNwYXI7JzogJ1x1MjIyNicsCisgICAgJ25zcXN1YmU7JzogJ1x1MjJlMicsCisgICAgJ25zcXN1cGU7JzogJ1x1MjJlMycsCisgICAgJ25zdWI7JzogJ1x1MjI4NCcsCisgICAgJ25zdWJFOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3ViZTsnOiAnXHUyMjg4JywKKyAgICAnbnN1YnNldDsnOiAnXHUyMjgyXHUyMGQyJywKKyAgICAnbnN1YnNldGVxOyc6ICdcdTIyODgnLAorICAgICduc3Vic2V0ZXFxOyc6ICdcdTJhYzVcdTAzMzgnLAorICAgICduc3VjYzsnOiAnXHUyMjgxJywKKyAgICAnbnN1Y2NlcTsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnbnN1cDsnOiAnXHUyMjg1JywKKyAgICAnbnN1cEU7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ25zdXBlOyc6ICdcdTIyODknLAorICAgICduc3Vwc2V0Oyc6ICdcdTIyODNcdTIwZDInLAorICAgICduc3Vwc2V0ZXE7JzogJ1x1MjI4OScsCisgICAgJ25zdXBzZXRlcXE7JzogJ1x1MmFjNlx1MDMzOCcsCisgICAgJ250Z2w7JzogJ1x1MjI3OScsCisgICAgJ050aWxkZTsnOiAnXHhkMScsCisgICAgJ050aWxkZSc6ICdceGQxJywKKyAgICAnbnRpbGRlOyc6ICdceGYxJywKKyAgICAnbnRpbGRlJzogJ1x4ZjEnLAorICAgICdudGxnOyc6ICdcdTIyNzgnLAorICAgICdudHJpYW5nbGVsZWZ0Oyc6ICdcdTIyZWEnLAorICAgICdudHJpYW5nbGVsZWZ0ZXE7JzogJ1x1MjJlYycsCisgICAgJ250cmlhbmdsZXJpZ2h0Oyc6ICdcdTIyZWInLAorICAgICdudHJpYW5nbGVyaWdodGVxOyc6ICdcdTIyZWQnLAorICAgICdOdTsnOiAnXHUwMzlkJywKKyAgICAnbnU7JzogJ1x1MDNiZCcsCisgICAgJ251bTsnOiAnIycsCisgICAgJ251bWVybzsnOiAnXHUyMTE2JywKKyAgICAnbnVtc3A7JzogJ1x1MjAwNycsCisgICAgJ252YXA7JzogJ1x1MjI0ZFx1MjBkMicsCisgICAgJ25WRGFzaDsnOiAnXHUyMmFmJywKKyAgICAnblZkYXNoOyc6ICdcdTIyYWUnLAorICAgICdudkRhc2g7JzogJ1x1MjJhZCcsCisgICAgJ252ZGFzaDsnOiAnXHUyMmFjJywKKyAgICAnbnZnZTsnOiAnXHUyMjY1XHUyMGQyJywKKyAgICAnbnZndDsnOiAnPlx1MjBkMicsCisgICAgJ252SGFycjsnOiAnXHUyOTA0JywKKyAgICAnbnZpbmZpbjsnOiAnXHUyOWRlJywKKyAgICAnbnZsQXJyOyc6ICdcdTI5MDInLAorICAgICdudmxlOyc6ICdcdTIyNjRcdTIwZDInLAorICAgICdudmx0Oyc6ICc8XHUyMGQyJywKKyAgICAnbnZsdHJpZTsnOiAnXHUyMmI0XHUyMGQyJywKKyAgICAnbnZyQXJyOyc6ICdcdTI5MDMnLAorICAgICdudnJ0cmllOyc6ICdcdTIyYjVcdTIwZDInLAorICAgICdudnNpbTsnOiAnXHUyMjNjXHUyMGQyJywKKyAgICAnbndhcmhrOyc6ICdcdTI5MjMnLAorICAgICdud0FycjsnOiAnXHUyMWQ2JywKKyAgICAnbndhcnI7JzogJ1x1MjE5NicsCisgICAgJ253YXJyb3c7JzogJ1x1MjE5NicsCisgICAgJ253bmVhcjsnOiAnXHUyOTI3JywKKyAgICAnT2FjdXRlOyc6ICdceGQzJywKKyAgICAnT2FjdXRlJzogJ1x4ZDMnLAorICAgICdvYWN1dGU7JzogJ1x4ZjMnLAorICAgICdvYWN1dGUnOiAnXHhmMycsCisgICAgJ29hc3Q7JzogJ1x1MjI5YicsCisgICAgJ29jaXI7JzogJ1x1MjI5YScsCisgICAgJ09jaXJjOyc6ICdceGQ0JywKKyAgICAnT2NpcmMnOiAnXHhkNCcsCisgICAgJ29jaXJjOyc6ICdceGY0JywKKyAgICAnb2NpcmMnOiAnXHhmNCcsCisgICAgJ09jeTsnOiAnXHUwNDFlJywKKyAgICAnb2N5Oyc6ICdcdTA0M2UnLAorICAgICdvZGFzaDsnOiAnXHUyMjlkJywKKyAgICAnT2RibGFjOyc6ICdcdTAxNTAnLAorICAgICdvZGJsYWM7JzogJ1x1MDE1MScsCisgICAgJ29kaXY7JzogJ1x1MmEzOCcsCisgICAgJ29kb3Q7JzogJ1x1MjI5OScsCisgICAgJ29kc29sZDsnOiAnXHUyOWJjJywKKyAgICAnT0VsaWc7JzogJ1x1MDE1MicsCisgICAgJ29lbGlnOyc6ICdcdTAxNTMnLAorICAgICdvZmNpcjsnOiAnXHUyOWJmJywKKyAgICAnT2ZyOyc6ICdcVTAwMDFkNTEyJywKKyAgICAnb2ZyOyc6ICdcVTAwMDFkNTJjJywKKyAgICAnb2dvbjsnOiAnXHUwMmRiJywKKyAgICAnT2dyYXZlOyc6ICdceGQyJywKKyAgICAnT2dyYXZlJzogJ1x4ZDInLAorICAgICdvZ3JhdmU7JzogJ1x4ZjInLAorICAgICdvZ3JhdmUnOiAnXHhmMicsCisgICAgJ29ndDsnOiAnXHUyOWMxJywKKyAgICAnb2hiYXI7JzogJ1x1MjliNScsCisgICAgJ29obTsnOiAnXHUwM2E5JywKKyAgICAnb2ludDsnOiAnXHUyMjJlJywKKyAgICAnb2xhcnI7JzogJ1x1MjFiYScsCisgICAgJ29sY2lyOyc6ICdcdTI5YmUnLAorICAgICdvbGNyb3NzOyc6ICdcdTI5YmInLAorICAgICdvbGluZTsnOiAnXHUyMDNlJywKKyAgICAnb2x0Oyc6ICdcdTI5YzAnLAorICAgICdPbWFjcjsnOiAnXHUwMTRjJywKKyAgICAnb21hY3I7JzogJ1x1MDE0ZCcsCisgICAgJ09tZWdhOyc6ICdcdTAzYTknLAorICAgICdvbWVnYTsnOiAnXHUwM2M5JywKKyAgICAnT21pY3JvbjsnOiAnXHUwMzlmJywKKyAgICAnb21pY3JvbjsnOiAnXHUwM2JmJywKKyAgICAnb21pZDsnOiAnXHUyOWI2JywKKyAgICAnb21pbnVzOyc6ICdcdTIyOTYnLAorICAgICdPb3BmOyc6ICdcVTAwMDFkNTQ2JywKKyAgICAnb29wZjsnOiAnXFUwMDAxZDU2MCcsCisgICAgJ29wYXI7JzogJ1x1MjliNycsCisgICAgJ09wZW5DdXJseURvdWJsZVF1b3RlOyc6ICdcdTIwMWMnLAorICAgICdPcGVuQ3VybHlRdW90ZTsnOiAnXHUyMDE4JywKKyAgICAnb3BlcnA7JzogJ1x1MjliOScsCisgICAgJ29wbHVzOyc6ICdcdTIyOTUnLAorICAgICdPcjsnOiAnXHUyYTU0JywKKyAgICAnb3I7JzogJ1x1MjIyOCcsCisgICAgJ29yYXJyOyc6ICdcdTIxYmInLAorICAgICdvcmQ7JzogJ1x1MmE1ZCcsCisgICAgJ29yZGVyOyc6ICdcdTIxMzQnLAorICAgICdvcmRlcm9mOyc6ICdcdTIxMzQnLAorICAgICdvcmRmOyc6ICdceGFhJywKKyAgICAnb3JkZic6ICdceGFhJywKKyAgICAnb3JkbTsnOiAnXHhiYScsCisgICAgJ29yZG0nOiAnXHhiYScsCisgICAgJ29yaWdvZjsnOiAnXHUyMmI2JywKKyAgICAnb3JvcjsnOiAnXHUyYTU2JywKKyAgICAnb3JzbG9wZTsnOiAnXHUyYTU3JywKKyAgICAnb3J2Oyc6ICdcdTJhNWInLAorICAgICdvUzsnOiAnXHUyNGM4JywKKyAgICAnT3NjcjsnOiAnXFUwMDAxZDRhYScsCisgICAgJ29zY3I7JzogJ1x1MjEzNCcsCisgICAgJ09zbGFzaDsnOiAnXHhkOCcsCisgICAgJ09zbGFzaCc6ICdceGQ4JywKKyAgICAnb3NsYXNoOyc6ICdceGY4JywKKyAgICAnb3NsYXNoJzogJ1x4ZjgnLAorICAgICdvc29sOyc6ICdcdTIyOTgnLAorICAgICdPdGlsZGU7JzogJ1x4ZDUnLAorICAgICdPdGlsZGUnOiAnXHhkNScsCisgICAgJ290aWxkZTsnOiAnXHhmNScsCisgICAgJ290aWxkZSc6ICdceGY1JywKKyAgICAnT3RpbWVzOyc6ICdcdTJhMzcnLAorICAgICdvdGltZXM7JzogJ1x1MjI5NycsCisgICAgJ290aW1lc2FzOyc6ICdcdTJhMzYnLAorICAgICdPdW1sOyc6ICdceGQ2JywKKyAgICAnT3VtbCc6ICdceGQ2JywKKyAgICAnb3VtbDsnOiAnXHhmNicsCisgICAgJ291bWwnOiAnXHhmNicsCisgICAgJ292YmFyOyc6ICdcdTIzM2QnLAorICAgICdPdmVyQmFyOyc6ICdcdTIwM2UnLAorICAgICdPdmVyQnJhY2U7JzogJ1x1MjNkZScsCisgICAgJ092ZXJCcmFja2V0Oyc6ICdcdTIzYjQnLAorICAgICdPdmVyUGFyZW50aGVzaXM7JzogJ1x1MjNkYycsCisgICAgJ3BhcjsnOiAnXHUyMjI1JywKKyAgICAncGFyYTsnOiAnXHhiNicsCisgICAgJ3BhcmEnOiAnXHhiNicsCisgICAgJ3BhcmFsbGVsOyc6ICdcdTIyMjUnLAorICAgICdwYXJzaW07JzogJ1x1MmFmMycsCisgICAgJ3BhcnNsOyc6ICdcdTJhZmQnLAorICAgICdwYXJ0Oyc6ICdcdTIyMDInLAorICAgICdQYXJ0aWFsRDsnOiAnXHUyMjAyJywKKyAgICAnUGN5Oyc6ICdcdTA0MWYnLAorICAgICdwY3k7JzogJ1x1MDQzZicsCisgICAgJ3BlcmNudDsnOiAnJScsCisgICAgJ3BlcmlvZDsnOiAnLicsCisgICAgJ3Blcm1pbDsnOiAnXHUyMDMwJywKKyAgICAncGVycDsnOiAnXHUyMmE1JywKKyAgICAncGVydGVuazsnOiAnXHUyMDMxJywKKyAgICAnUGZyOyc6ICdcVTAwMDFkNTEzJywKKyAgICAncGZyOyc6ICdcVTAwMDFkNTJkJywKKyAgICAnUGhpOyc6ICdcdTAzYTYnLAorICAgICdwaGk7JzogJ1x1MDNjNicsCisgICAgJ3BoaXY7JzogJ1x1MDNkNScsCisgICAgJ3BobW1hdDsnOiAnXHUyMTMzJywKKyAgICAncGhvbmU7JzogJ1x1MjYwZScsCisgICAgJ1BpOyc6ICdcdTAzYTAnLAorICAgICdwaTsnOiAnXHUwM2MwJywKKyAgICAncGl0Y2hmb3JrOyc6ICdcdTIyZDQnLAorICAgICdwaXY7JzogJ1x1MDNkNicsCisgICAgJ3BsYW5jazsnOiAnXHUyMTBmJywKKyAgICAncGxhbmNraDsnOiAnXHUyMTBlJywKKyAgICAncGxhbmt2Oyc6ICdcdTIxMGYnLAorICAgICdwbHVzOyc6ICcrJywKKyAgICAncGx1c2FjaXI7JzogJ1x1MmEyMycsCisgICAgJ3BsdXNiOyc6ICdcdTIyOWUnLAorICAgICdwbHVzY2lyOyc6ICdcdTJhMjInLAorICAgICdwbHVzZG87JzogJ1x1MjIxNCcsCisgICAgJ3BsdXNkdTsnOiAnXHUyYTI1JywKKyAgICAncGx1c2U7JzogJ1x1MmE3MicsCisgICAgJ1BsdXNNaW51czsnOiAnXHhiMScsCisgICAgJ3BsdXNtbjsnOiAnXHhiMScsCisgICAgJ3BsdXNtbic6ICdceGIxJywKKyAgICAncGx1c3NpbTsnOiAnXHUyYTI2JywKKyAgICAncGx1c3R3bzsnOiAnXHUyYTI3JywKKyAgICAncG07JzogJ1x4YjEnLAorICAgICdQb2luY2FyZXBsYW5lOyc6ICdcdTIxMGMnLAorICAgICdwb2ludGludDsnOiAnXHUyYTE1JywKKyAgICAnUG9wZjsnOiAnXHUyMTE5JywKKyAgICAncG9wZjsnOiAnXFUwMDAxZDU2MScsCisgICAgJ3BvdW5kOyc6ICdceGEzJywKKyAgICAncG91bmQnOiAnXHhhMycsCisgICAgJ1ByOyc6ICdcdTJhYmInLAorICAgICdwcjsnOiAnXHUyMjdhJywKKyAgICAncHJhcDsnOiAnXHUyYWI3JywKKyAgICAncHJjdWU7JzogJ1x1MjI3YycsCisgICAgJ3ByRTsnOiAnXHUyYWIzJywKKyAgICAncHJlOyc6ICdcdTJhYWYnLAorICAgICdwcmVjOyc6ICdcdTIyN2EnLAorICAgICdwcmVjYXBwcm94Oyc6ICdcdTJhYjcnLAorICAgICdwcmVjY3VybHllcTsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXM7JzogJ1x1MjI3YScsCisgICAgJ1ByZWNlZGVzRXF1YWw7JzogJ1x1MmFhZicsCisgICAgJ1ByZWNlZGVzU2xhbnRFcXVhbDsnOiAnXHUyMjdjJywKKyAgICAnUHJlY2VkZXNUaWxkZTsnOiAnXHUyMjdlJywKKyAgICAncHJlY2VxOyc6ICdcdTJhYWYnLAorICAgICdwcmVjbmFwcHJveDsnOiAnXHUyYWI5JywKKyAgICAncHJlY25lcXE7JzogJ1x1MmFiNScsCisgICAgJ3ByZWNuc2ltOyc6ICdcdTIyZTgnLAorICAgICdwcmVjc2ltOyc6ICdcdTIyN2UnLAorICAgICdQcmltZTsnOiAnXHUyMDMzJywKKyAgICAncHJpbWU7JzogJ1x1MjAzMicsCisgICAgJ3ByaW1lczsnOiAnXHUyMTE5JywKKyAgICAncHJuYXA7JzogJ1x1MmFiOScsCisgICAgJ3BybkU7JzogJ1x1MmFiNScsCisgICAgJ3BybnNpbTsnOiAnXHUyMmU4JywKKyAgICAncHJvZDsnOiAnXHUyMjBmJywKKyAgICAnUHJvZHVjdDsnOiAnXHUyMjBmJywKKyAgICAncHJvZmFsYXI7JzogJ1x1MjMyZScsCisgICAgJ3Byb2ZsaW5lOyc6ICdcdTIzMTInLAorICAgICdwcm9mc3VyZjsnOiAnXHUyMzEzJywKKyAgICAncHJvcDsnOiAnXHUyMjFkJywKKyAgICAnUHJvcG9ydGlvbjsnOiAnXHUyMjM3JywKKyAgICAnUHJvcG9ydGlvbmFsOyc6ICdcdTIyMWQnLAorICAgICdwcm9wdG87JzogJ1x1MjIxZCcsCisgICAgJ3Byc2ltOyc6ICdcdTIyN2UnLAorICAgICdwcnVyZWw7JzogJ1x1MjJiMCcsCisgICAgJ1BzY3I7JzogJ1xVMDAwMWQ0YWInLAorICAgICdwc2NyOyc6ICdcVTAwMDFkNGM1JywKKyAgICAnUHNpOyc6ICdcdTAzYTgnLAorICAgICdwc2k7JzogJ1x1MDNjOCcsCisgICAgJ3B1bmNzcDsnOiAnXHUyMDA4JywKKyAgICAnUWZyOyc6ICdcVTAwMDFkNTE0JywKKyAgICAncWZyOyc6ICdcVTAwMDFkNTJlJywKKyAgICAncWludDsnOiAnXHUyYTBjJywKKyAgICAnUW9wZjsnOiAnXHUyMTFhJywKKyAgICAncW9wZjsnOiAnXFUwMDAxZDU2MicsCisgICAgJ3FwcmltZTsnOiAnXHUyMDU3JywKKyAgICAnUXNjcjsnOiAnXFUwMDAxZDRhYycsCisgICAgJ3FzY3I7JzogJ1xVMDAwMWQ0YzYnLAorICAgICdxdWF0ZXJuaW9uczsnOiAnXHUyMTBkJywKKyAgICAncXVhdGludDsnOiAnXHUyYTE2JywKKyAgICAncXVlc3Q7JzogJz8nLAorICAgICdxdWVzdGVxOyc6ICdcdTIyNWYnLAorICAgICdRVU9UOyc6ICciJywKKyAgICAnUVVPVCc6ICciJywKKyAgICAncXVvdDsnOiAnIicsCisgICAgJ3F1b3QnOiAnIicsCisgICAgJ3JBYXJyOyc6ICdcdTIxZGInLAorICAgICdyYWNlOyc6ICdcdTIyM2RcdTAzMzEnLAorICAgICdSYWN1dGU7JzogJ1x1MDE1NCcsCisgICAgJ3JhY3V0ZTsnOiAnXHUwMTU1JywKKyAgICAncmFkaWM7JzogJ1x1MjIxYScsCisgICAgJ3JhZW1wdHl2Oyc6ICdcdTI5YjMnLAorICAgICdSYW5nOyc6ICdcdTI3ZWInLAorICAgICdyYW5nOyc6ICdcdTIzMmEnLAorICAgICdyYW5nZDsnOiAnXHUyOTkyJywKKyAgICAncmFuZ2U7JzogJ1x1MjlhNScsCisgICAgJ3JhbmdsZTsnOiAnXHUyMzJhJywKKyAgICAncmFxdW87JzogJ1x4YmInLAorICAgICdyYXF1byc6ICdceGJiJywKKyAgICAnUmFycjsnOiAnXHUyMWEwJywKKyAgICAnckFycjsnOiAnXHUyMWQyJywKKyAgICAncmFycjsnOiAnXHUyMTkyJywKKyAgICAncmFycmFwOyc6ICdcdTI5NzUnLAorICAgICdyYXJyYjsnOiAnXHUyMWU1JywKKyAgICAncmFycmJmczsnOiAnXHUyOTIwJywKKyAgICAncmFycmM7JzogJ1x1MjkzMycsCisgICAgJ3JhcnJmczsnOiAnXHUyOTFlJywKKyAgICAncmFycmhrOyc6ICdcdTIxYWEnLAorICAgICdyYXJybHA7JzogJ1x1MjFhYycsCisgICAgJ3JhcnJwbDsnOiAnXHUyOTQ1JywKKyAgICAncmFycnNpbTsnOiAnXHUyOTc0JywKKyAgICAnUmFycnRsOyc6ICdcdTI5MTYnLAorICAgICdyYXJydGw7JzogJ1x1MjFhMycsCisgICAgJ3JhcnJ3Oyc6ICdcdTIxOWQnLAorICAgICdyQXRhaWw7JzogJ1x1MjkxYycsCisgICAgJ3JhdGFpbDsnOiAnXHUyOTFhJywKKyAgICAncmF0aW87JzogJ1x1MjIzNicsCisgICAgJ3JhdGlvbmFsczsnOiAnXHUyMTFhJywKKyAgICAnUkJhcnI7JzogJ1x1MjkxMCcsCisgICAgJ3JCYXJyOyc6ICdcdTI5MGYnLAorICAgICdyYmFycjsnOiAnXHUyOTBkJywKKyAgICAncmJicms7JzogJ1x1Mjc3MycsCisgICAgJ3JicmFjZTsnOiAnfScsCisgICAgJ3JicmFjazsnOiAnXScsCisgICAgJ3JicmtlOyc6ICdcdTI5OGMnLAorICAgICdyYnJrc2xkOyc6ICdcdTI5OGUnLAorICAgICdyYnJrc2x1Oyc6ICdcdTI5OTAnLAorICAgICdSY2Fyb247JzogJ1x1MDE1OCcsCisgICAgJ3JjYXJvbjsnOiAnXHUwMTU5JywKKyAgICAnUmNlZGlsOyc6ICdcdTAxNTYnLAorICAgICdyY2VkaWw7JzogJ1x1MDE1NycsCisgICAgJ3JjZWlsOyc6ICdcdTIzMDknLAorICAgICdyY3ViOyc6ICd9JywKKyAgICAnUmN5Oyc6ICdcdTA0MjAnLAorICAgICdyY3k7JzogJ1x1MDQ0MCcsCisgICAgJ3JkY2E7JzogJ1x1MjkzNycsCisgICAgJ3JkbGRoYXI7JzogJ1x1Mjk2OScsCisgICAgJ3JkcXVvOyc6ICdcdTIwMWQnLAorICAgICdyZHF1b3I7JzogJ1x1MjAxZCcsCisgICAgJ3Jkc2g7JzogJ1x1MjFiMycsCisgICAgJ1JlOyc6ICdcdTIxMWMnLAorICAgICdyZWFsOyc6ICdcdTIxMWMnLAorICAgICdyZWFsaW5lOyc6ICdcdTIxMWInLAorICAgICdyZWFscGFydDsnOiAnXHUyMTFjJywKKyAgICAncmVhbHM7JzogJ1x1MjExZCcsCisgICAgJ3JlY3Q7JzogJ1x1MjVhZCcsCisgICAgJ1JFRzsnOiAnXHhhZScsCisgICAgJ1JFRyc6ICdceGFlJywKKyAgICAncmVnOyc6ICdceGFlJywKKyAgICAncmVnJzogJ1x4YWUnLAorICAgICdSZXZlcnNlRWxlbWVudDsnOiAnXHUyMjBiJywKKyAgICAnUmV2ZXJzZUVxdWlsaWJyaXVtOyc6ICdcdTIxY2InLAorICAgICdSZXZlcnNlVXBFcXVpbGlicml1bTsnOiAnXHUyOTZmJywKKyAgICAncmZpc2h0Oyc6ICdcdTI5N2QnLAorICAgICdyZmxvb3I7JzogJ1x1MjMwYicsCisgICAgJ1JmcjsnOiAnXHUyMTFjJywKKyAgICAncmZyOyc6ICdcVTAwMDFkNTJmJywKKyAgICAnckhhcjsnOiAnXHUyOTY0JywKKyAgICAncmhhcmQ7JzogJ1x1MjFjMScsCisgICAgJ3JoYXJ1Oyc6ICdcdTIxYzAnLAorICAgICdyaGFydWw7JzogJ1x1Mjk2YycsCisgICAgJ1JobzsnOiAnXHUwM2ExJywKKyAgICAncmhvOyc6ICdcdTAzYzEnLAorICAgICdyaG92Oyc6ICdcdTAzZjEnLAorICAgICdSaWdodEFuZ2xlQnJhY2tldDsnOiAnXHUyMzJhJywKKyAgICAnUmlnaHRBcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRhcnJvdzsnOiAnXHUyMWQyJywKKyAgICAncmlnaHRhcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnUmlnaHRBcnJvd0JhcjsnOiAnXHUyMWU1JywKKyAgICAnUmlnaHRBcnJvd0xlZnRBcnJvdzsnOiAnXHUyMWM0JywKKyAgICAncmlnaHRhcnJvd3RhaWw7JzogJ1x1MjFhMycsCisgICAgJ1JpZ2h0Q2VpbGluZzsnOiAnXHUyMzA5JywKKyAgICAnUmlnaHREb3VibGVCcmFja2V0Oyc6ICdcdTI3ZTcnLAorICAgICdSaWdodERvd25UZWVWZWN0b3I7JzogJ1x1Mjk1ZCcsCisgICAgJ1JpZ2h0RG93blZlY3RvcjsnOiAnXHUyMWMyJywKKyAgICAnUmlnaHREb3duVmVjdG9yQmFyOyc6ICdcdTI5NTUnLAorICAgICdSaWdodEZsb29yOyc6ICdcdTIzMGInLAorICAgICdyaWdodGhhcnBvb25kb3duOyc6ICdcdTIxYzEnLAorICAgICdyaWdodGhhcnBvb251cDsnOiAnXHUyMWMwJywKKyAgICAncmlnaHRsZWZ0YXJyb3dzOyc6ICdcdTIxYzQnLAorICAgICdyaWdodGxlZnRoYXJwb29uczsnOiAnXHUyMWNjJywKKyAgICAncmlnaHRyaWdodGFycm93czsnOiAnXHUyMWM5JywKKyAgICAncmlnaHRzcXVpZ2Fycm93Oyc6ICdcdTIxOWQnLAorICAgICdSaWdodFRlZTsnOiAnXHUyMmEyJywKKyAgICAnUmlnaHRUZWVBcnJvdzsnOiAnXHUyMWE2JywKKyAgICAnUmlnaHRUZWVWZWN0b3I7JzogJ1x1Mjk1YicsCisgICAgJ3JpZ2h0dGhyZWV0aW1lczsnOiAnXHUyMmNjJywKKyAgICAnUmlnaHRUcmlhbmdsZTsnOiAnXHUyMmIzJywKKyAgICAnUmlnaHRUcmlhbmdsZUJhcjsnOiAnXHUyOWQwJywKKyAgICAnUmlnaHRUcmlhbmdsZUVxdWFsOyc6ICdcdTIyYjUnLAorICAgICdSaWdodFVwRG93blZlY3RvcjsnOiAnXHUyOTRmJywKKyAgICAnUmlnaHRVcFRlZVZlY3RvcjsnOiAnXHUyOTVjJywKKyAgICAnUmlnaHRVcFZlY3RvcjsnOiAnXHUyMWJlJywKKyAgICAnUmlnaHRVcFZlY3RvckJhcjsnOiAnXHUyOTU0JywKKyAgICAnUmlnaHRWZWN0b3I7JzogJ1x1MjFjMCcsCisgICAgJ1JpZ2h0VmVjdG9yQmFyOyc6ICdcdTI5NTMnLAorICAgICdyaW5nOyc6ICdcdTAyZGEnLAorICAgICdyaXNpbmdkb3RzZXE7JzogJ1x1MjI1MycsCisgICAgJ3JsYXJyOyc6ICdcdTIxYzQnLAorICAgICdybGhhcjsnOiAnXHUyMWNjJywKKyAgICAncmxtOyc6ICdcdTIwMGYnLAorICAgICdybW91c3Q7JzogJ1x1MjNiMScsCisgICAgJ3Jtb3VzdGFjaGU7JzogJ1x1MjNiMScsCisgICAgJ3JubWlkOyc6ICdcdTJhZWUnLAorICAgICdyb2FuZzsnOiAnXHUyN2VkJywKKyAgICAncm9hcnI7JzogJ1x1MjFmZScsCisgICAgJ3JvYnJrOyc6ICdcdTI3ZTcnLAorICAgICdyb3BhcjsnOiAnXHUyOTg2JywKKyAgICAnUm9wZjsnOiAnXHUyMTFkJywKKyAgICAncm9wZjsnOiAnXFUwMDAxZDU2MycsCisgICAgJ3JvcGx1czsnOiAnXHUyYTJlJywKKyAgICAncm90aW1lczsnOiAnXHUyYTM1JywKKyAgICAnUm91bmRJbXBsaWVzOyc6ICdcdTI5NzAnLAorICAgICdycGFyOyc6ICcpJywKKyAgICAncnBhcmd0Oyc6ICdcdTI5OTQnLAorICAgICdycHBvbGludDsnOiAnXHUyYTEyJywKKyAgICAncnJhcnI7JzogJ1x1MjFjOScsCisgICAgJ1JyaWdodGFycm93Oyc6ICdcdTIxZGInLAorICAgICdyc2FxdW87JzogJ1x1MjAzYScsCisgICAgJ1JzY3I7JzogJ1x1MjExYicsCisgICAgJ3JzY3I7JzogJ1xVMDAwMWQ0YzcnLAorICAgICdSc2g7JzogJ1x1MjFiMScsCisgICAgJ3JzaDsnOiAnXHUyMWIxJywKKyAgICAncnNxYjsnOiAnXScsCisgICAgJ3JzcXVvOyc6ICdcdTIwMTknLAorICAgICdyc3F1b3I7JzogJ1x1MjAxOScsCisgICAgJ3J0aHJlZTsnOiAnXHUyMmNjJywKKyAgICAncnRpbWVzOyc6ICdcdTIyY2EnLAorICAgICdydHJpOyc6ICdcdTI1YjknLAorICAgICdydHJpZTsnOiAnXHUyMmI1JywKKyAgICAncnRyaWY7JzogJ1x1MjViOCcsCisgICAgJ3J0cmlsdHJpOyc6ICdcdTI5Y2UnLAorICAgICdSdWxlRGVsYXllZDsnOiAnXHUyOWY0JywKKyAgICAncnVsdWhhcjsnOiAnXHUyOTY4JywKKyAgICAncng7JzogJ1x1MjExZScsCisgICAgJ1NhY3V0ZTsnOiAnXHUwMTVhJywKKyAgICAnc2FjdXRlOyc6ICdcdTAxNWInLAorICAgICdzYnF1bzsnOiAnXHUyMDFhJywKKyAgICAnU2M7JzogJ1x1MmFiYycsCisgICAgJ3NjOyc6ICdcdTIyN2InLAorICAgICdzY2FwOyc6ICdcdTJhYjgnLAorICAgICdTY2Fyb247JzogJ1x1MDE2MCcsCisgICAgJ3NjYXJvbjsnOiAnXHUwMTYxJywKKyAgICAnc2NjdWU7JzogJ1x1MjI3ZCcsCisgICAgJ3NjRTsnOiAnXHUyYWI0JywKKyAgICAnc2NlOyc6ICdcdTJhYjAnLAorICAgICdTY2VkaWw7JzogJ1x1MDE1ZScsCisgICAgJ3NjZWRpbDsnOiAnXHUwMTVmJywKKyAgICAnU2NpcmM7JzogJ1x1MDE1YycsCisgICAgJ3NjaXJjOyc6ICdcdTAxNWQnLAorICAgICdzY25hcDsnOiAnXHUyYWJhJywKKyAgICAnc2NuRTsnOiAnXHUyYWI2JywKKyAgICAnc2Nuc2ltOyc6ICdcdTIyZTknLAorICAgICdzY3BvbGludDsnOiAnXHUyYTEzJywKKyAgICAnc2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1NjeTsnOiAnXHUwNDIxJywKKyAgICAnc2N5Oyc6ICdcdTA0NDEnLAorICAgICdzZG90Oyc6ICdcdTIyYzUnLAorICAgICdzZG90YjsnOiAnXHUyMmExJywKKyAgICAnc2RvdGU7JzogJ1x1MmE2NicsCisgICAgJ3NlYXJoazsnOiAnXHUyOTI1JywKKyAgICAnc2VBcnI7JzogJ1x1MjFkOCcsCisgICAgJ3NlYXJyOyc6ICdcdTIxOTgnLAorICAgICdzZWFycm93Oyc6ICdcdTIxOTgnLAorICAgICdzZWN0Oyc6ICdceGE3JywKKyAgICAnc2VjdCc6ICdceGE3JywKKyAgICAnc2VtaTsnOiAnOycsCisgICAgJ3Nlc3dhcjsnOiAnXHUyOTI5JywKKyAgICAnc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NldG1uOyc6ICdcdTIyMTYnLAorICAgICdzZXh0Oyc6ICdcdTI3MzYnLAorICAgICdTZnI7JzogJ1xVMDAwMWQ1MTYnLAorICAgICdzZnI7JzogJ1xVMDAwMWQ1MzAnLAorICAgICdzZnJvd247JzogJ1x1MjMyMicsCisgICAgJ3NoYXJwOyc6ICdcdTI2NmYnLAorICAgICdTSENIY3k7JzogJ1x1MDQyOScsCisgICAgJ3NoY2hjeTsnOiAnXHUwNDQ5JywKKyAgICAnU0hjeTsnOiAnXHUwNDI4JywKKyAgICAnc2hjeTsnOiAnXHUwNDQ4JywKKyAgICAnU2hvcnREb3duQXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ1Nob3J0TGVmdEFycm93Oyc6ICdcdTIxOTAnLAorICAgICdzaG9ydG1pZDsnOiAnXHUyMjIzJywKKyAgICAnc2hvcnRwYXJhbGxlbDsnOiAnXHUyMjI1JywKKyAgICAnU2hvcnRSaWdodEFycm93Oyc6ICdcdTIxOTInLAorICAgICdTaG9ydFVwQXJyb3c7JzogJ1x1MjE5MScsCisgICAgJ3NoeTsnOiAnXHhhZCcsCisgICAgJ3NoeSc6ICdceGFkJywKKyAgICAnU2lnbWE7JzogJ1x1MDNhMycsCisgICAgJ3NpZ21hOyc6ICdcdTAzYzMnLAorICAgICdzaWdtYWY7JzogJ1x1MDNjMicsCisgICAgJ3NpZ21hdjsnOiAnXHUwM2MyJywKKyAgICAnc2ltOyc6ICdcdTIyM2MnLAorICAgICdzaW1kb3Q7JzogJ1x1MmE2YScsCisgICAgJ3NpbWU7JzogJ1x1MjI0MycsCisgICAgJ3NpbWVxOyc6ICdcdTIyNDMnLAorICAgICdzaW1nOyc6ICdcdTJhOWUnLAorICAgICdzaW1nRTsnOiAnXHUyYWEwJywKKyAgICAnc2ltbDsnOiAnXHUyYTlkJywKKyAgICAnc2ltbEU7JzogJ1x1MmE5ZicsCisgICAgJ3NpbW5lOyc6ICdcdTIyNDYnLAorICAgICdzaW1wbHVzOyc6ICdcdTJhMjQnLAorICAgICdzaW1yYXJyOyc6ICdcdTI5NzInLAorICAgICdzbGFycjsnOiAnXHUyMTkwJywKKyAgICAnU21hbGxDaXJjbGU7JzogJ1x1MjIxOCcsCisgICAgJ3NtYWxsc2V0bWludXM7JzogJ1x1MjIxNicsCisgICAgJ3NtYXNocDsnOiAnXHUyYTMzJywKKyAgICAnc21lcGFyc2w7JzogJ1x1MjllNCcsCisgICAgJ3NtaWQ7JzogJ1x1MjIyMycsCisgICAgJ3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzbXQ7JzogJ1x1MmFhYScsCisgICAgJ3NtdGU7JzogJ1x1MmFhYycsCisgICAgJ3NtdGVzOyc6ICdcdTJhYWNcdWZlMDAnLAorICAgICdTT0ZUY3k7JzogJ1x1MDQyYycsCisgICAgJ3NvZnRjeTsnOiAnXHUwNDRjJywKKyAgICAnc29sOyc6ICcvJywKKyAgICAnc29sYjsnOiAnXHUyOWM0JywKKyAgICAnc29sYmFyOyc6ICdcdTIzM2YnLAorICAgICdTb3BmOyc6ICdcVTAwMDFkNTRhJywKKyAgICAnc29wZjsnOiAnXFUwMDAxZDU2NCcsCisgICAgJ3NwYWRlczsnOiAnXHUyNjYwJywKKyAgICAnc3BhZGVzdWl0Oyc6ICdcdTI2NjAnLAorICAgICdzcGFyOyc6ICdcdTIyMjUnLAorICAgICdzcWNhcDsnOiAnXHUyMjkzJywKKyAgICAnc3FjYXBzOyc6ICdcdTIyOTNcdWZlMDAnLAorICAgICdzcWN1cDsnOiAnXHUyMjk0JywKKyAgICAnc3FjdXBzOyc6ICdcdTIyOTRcdWZlMDAnLAorICAgICdTcXJ0Oyc6ICdcdTIyMWEnLAorICAgICdzcXN1YjsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJlOyc6ICdcdTIyOTEnLAorICAgICdzcXN1YnNldDsnOiAnXHUyMjhmJywKKyAgICAnc3FzdWJzZXRlcTsnOiAnXHUyMjkxJywKKyAgICAnc3FzdXA7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3VwZTsnOiAnXHUyMjkyJywKKyAgICAnc3FzdXBzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ3Nxc3Vwc2V0ZXE7JzogJ1x1MjI5MicsCisgICAgJ3NxdTsnOiAnXHUyNWExJywKKyAgICAnU3F1YXJlOyc6ICdcdTI1YTEnLAorICAgICdzcXVhcmU7JzogJ1x1MjVhMScsCisgICAgJ1NxdWFyZUludGVyc2VjdGlvbjsnOiAnXHUyMjkzJywKKyAgICAnU3F1YXJlU3Vic2V0Oyc6ICdcdTIyOGYnLAorICAgICdTcXVhcmVTdWJzZXRFcXVhbDsnOiAnXHUyMjkxJywKKyAgICAnU3F1YXJlU3VwZXJzZXQ7JzogJ1x1MjI5MCcsCisgICAgJ1NxdWFyZVN1cGVyc2V0RXF1YWw7JzogJ1x1MjI5MicsCisgICAgJ1NxdWFyZVVuaW9uOyc6ICdcdTIyOTQnLAorICAgICdzcXVhcmY7JzogJ1x1MjVhYScsCisgICAgJ3NxdWY7JzogJ1x1MjVhYScsCisgICAgJ3NyYXJyOyc6ICdcdTIxOTInLAorICAgICdTc2NyOyc6ICdcVTAwMDFkNGFlJywKKyAgICAnc3NjcjsnOiAnXFUwMDAxZDRjOCcsCisgICAgJ3NzZXRtbjsnOiAnXHUyMjE2JywKKyAgICAnc3NtaWxlOyc6ICdcdTIzMjMnLAorICAgICdzc3RhcmY7JzogJ1x1MjJjNicsCisgICAgJ1N0YXI7JzogJ1x1MjJjNicsCisgICAgJ3N0YXI7JzogJ1x1MjYwNicsCisgICAgJ3N0YXJmOyc6ICdcdTI2MDUnLAorICAgICdzdHJhaWdodGVwc2lsb247JzogJ1x1MDNmNScsCisgICAgJ3N0cmFpZ2h0cGhpOyc6ICdcdTAzZDUnLAorICAgICdzdHJuczsnOiAnXHhhZicsCisgICAgJ1N1YjsnOiAnXHUyMmQwJywKKyAgICAnc3ViOyc6ICdcdTIyODInLAorICAgICdzdWJkb3Q7JzogJ1x1MmFiZCcsCisgICAgJ3N1YkU7JzogJ1x1MmFjNScsCisgICAgJ3N1YmU7JzogJ1x1MjI4NicsCisgICAgJ3N1YmVkb3Q7JzogJ1x1MmFjMycsCisgICAgJ3N1Ym11bHQ7JzogJ1x1MmFjMScsCisgICAgJ3N1Ym5FOyc6ICdcdTJhY2InLAorICAgICdzdWJuZTsnOiAnXHUyMjhhJywKKyAgICAnc3VicGx1czsnOiAnXHUyYWJmJywKKyAgICAnc3VicmFycjsnOiAnXHUyOTc5JywKKyAgICAnU3Vic2V0Oyc6ICdcdTIyZDAnLAorICAgICdzdWJzZXQ7JzogJ1x1MjI4MicsCisgICAgJ3N1YnNldGVxOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRlcXE7JzogJ1x1MmFjNScsCisgICAgJ1N1YnNldEVxdWFsOyc6ICdcdTIyODYnLAorICAgICdzdWJzZXRuZXE7JzogJ1x1MjI4YScsCisgICAgJ3N1YnNldG5lcXE7JzogJ1x1MmFjYicsCisgICAgJ3N1YnNpbTsnOiAnXHUyYWM3JywKKyAgICAnc3Vic3ViOyc6ICdcdTJhZDUnLAorICAgICdzdWJzdXA7JzogJ1x1MmFkMycsCisgICAgJ3N1Y2M7JzogJ1x1MjI3YicsCisgICAgJ3N1Y2NhcHByb3g7JzogJ1x1MmFiOCcsCisgICAgJ3N1Y2NjdXJseWVxOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkczsnOiAnXHUyMjdiJywKKyAgICAnU3VjY2VlZHNFcXVhbDsnOiAnXHUyYWIwJywKKyAgICAnU3VjY2VlZHNTbGFudEVxdWFsOyc6ICdcdTIyN2QnLAorICAgICdTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2YnLAorICAgICdzdWNjZXE7JzogJ1x1MmFiMCcsCisgICAgJ3N1Y2NuYXBwcm94Oyc6ICdcdTJhYmEnLAorICAgICdzdWNjbmVxcTsnOiAnXHUyYWI2JywKKyAgICAnc3VjY25zaW07JzogJ1x1MjJlOScsCisgICAgJ3N1Y2NzaW07JzogJ1x1MjI3ZicsCisgICAgJ1N1Y2hUaGF0Oyc6ICdcdTIyMGInLAorICAgICdTdW07JzogJ1x1MjIxMScsCisgICAgJ3N1bTsnOiAnXHUyMjExJywKKyAgICAnc3VuZzsnOiAnXHUyNjZhJywKKyAgICAnU3VwOyc6ICdcdTIyZDEnLAorICAgICdzdXA7JzogJ1x1MjI4MycsCisgICAgJ3N1cDE7JzogJ1x4YjknLAorICAgICdzdXAxJzogJ1x4YjknLAorICAgICdzdXAyOyc6ICdceGIyJywKKyAgICAnc3VwMic6ICdceGIyJywKKyAgICAnc3VwMzsnOiAnXHhiMycsCisgICAgJ3N1cDMnOiAnXHhiMycsCisgICAgJ3N1cGRvdDsnOiAnXHUyYWJlJywKKyAgICAnc3VwZHN1YjsnOiAnXHUyYWQ4JywKKyAgICAnc3VwRTsnOiAnXHUyYWM2JywKKyAgICAnc3VwZTsnOiAnXHUyMjg3JywKKyAgICAnc3VwZWRvdDsnOiAnXHUyYWM0JywKKyAgICAnU3VwZXJzZXQ7JzogJ1x1MjI4MycsCisgICAgJ1N1cGVyc2V0RXF1YWw7JzogJ1x1MjI4NycsCisgICAgJ3N1cGhzb2w7JzogJ1x1MjdjOScsCisgICAgJ3N1cGhzdWI7JzogJ1x1MmFkNycsCisgICAgJ3N1cGxhcnI7JzogJ1x1Mjk3YicsCisgICAgJ3N1cG11bHQ7JzogJ1x1MmFjMicsCisgICAgJ3N1cG5FOyc6ICdcdTJhY2MnLAorICAgICdzdXBuZTsnOiAnXHUyMjhiJywKKyAgICAnc3VwcGx1czsnOiAnXHUyYWMwJywKKyAgICAnU3Vwc2V0Oyc6ICdcdTIyZDEnLAorICAgICdzdXBzZXQ7JzogJ1x1MjI4MycsCisgICAgJ3N1cHNldGVxOyc6ICdcdTIyODcnLAorICAgICdzdXBzZXRlcXE7JzogJ1x1MmFjNicsCisgICAgJ3N1cHNldG5lcTsnOiAnXHUyMjhiJywKKyAgICAnc3Vwc2V0bmVxcTsnOiAnXHUyYWNjJywKKyAgICAnc3Vwc2ltOyc6ICdcdTJhYzgnLAorICAgICdzdXBzdWI7JzogJ1x1MmFkNCcsCisgICAgJ3N1cHN1cDsnOiAnXHUyYWQ2JywKKyAgICAnc3dhcmhrOyc6ICdcdTI5MjYnLAorICAgICdzd0FycjsnOiAnXHUyMWQ5JywKKyAgICAnc3dhcnI7JzogJ1x1MjE5OScsCisgICAgJ3N3YXJyb3c7JzogJ1x1MjE5OScsCisgICAgJ3N3bndhcjsnOiAnXHUyOTJhJywKKyAgICAnc3psaWc7JzogJ1x4ZGYnLAorICAgICdzemxpZyc6ICdceGRmJywKKyAgICAnVGFiOyc6ICdcdTI0MDknLAorICAgICd0YXJnZXQ7JzogJ1x1MjMxNicsCisgICAgJ1RhdTsnOiAnXHUwM2E0JywKKyAgICAndGF1Oyc6ICdcdTAzYzQnLAorICAgICd0YnJrOyc6ICdcdTIzYjQnLAorICAgICdUY2Fyb247JzogJ1x1MDE2NCcsCisgICAgJ3RjYXJvbjsnOiAnXHUwMTY1JywKKyAgICAnVGNlZGlsOyc6ICdcdTAxNjInLAorICAgICd0Y2VkaWw7JzogJ1x1MDE2MycsCisgICAgJ1RjeTsnOiAnXHUwNDIyJywKKyAgICAndGN5Oyc6ICdcdTA0NDInLAorICAgICd0ZG90Oyc6ICdcdTI1Y2NcdTIwZGInLAorICAgICd0ZWxyZWM7JzogJ1x1MjMxNScsCisgICAgJ1RmcjsnOiAnXFUwMDAxZDUxNycsCisgICAgJ3RmcjsnOiAnXFUwMDAxZDUzMScsCisgICAgJ3RoZXJlNDsnOiAnXHUyMjM0JywKKyAgICAnVGhlcmVmb3JlOyc6ICdcdTIyMzQnLAorICAgICd0aGVyZWZvcmU7JzogJ1x1MjIzNCcsCisgICAgJ1RoZXRhOyc6ICdcdTAzOTgnLAorICAgICd0aGV0YTsnOiAnXHUwM2I4JywKKyAgICAndGhldGFzeW07JzogJ1x1MDNkMScsCisgICAgJ3RoZXRhdjsnOiAnXHUwM2QxJywKKyAgICAndGhpY2thcHByb3g7JzogJ1x1MjI0OCcsCisgICAgJ3RoaWNrc2ltOyc6ICdcdTIyM2MnLAorICAgICdUaGlja1NwYWNlOyc6ICdcdTIwNWZcdTIwMGEnLAorICAgICd0aGluc3A7JzogJ1x1MjAwOScsCisgICAgJ1RoaW5TcGFjZTsnOiAnXHUyMDA5JywKKyAgICAndGhrYXA7JzogJ1x1MjI0OCcsCisgICAgJ3Roa3NpbTsnOiAnXHUyMjNjJywKKyAgICAnVEhPUk47JzogJ1x4ZGUnLAorICAgICdUSE9STic6ICdceGRlJywKKyAgICAndGhvcm47JzogJ1x4ZmUnLAorICAgICd0aG9ybic6ICdceGZlJywKKyAgICAnVGlsZGU7JzogJ1x1MjIzYycsCisgICAgJ3RpbGRlOyc6ICdcdTAyZGMnLAorICAgICdUaWxkZUVxdWFsOyc6ICdcdTIyNDMnLAorICAgICdUaWxkZUZ1bGxFcXVhbDsnOiAnXHUyMjQ1JywKKyAgICAnVGlsZGVUaWxkZTsnOiAnXHUyMjQ4JywKKyAgICAndGltZXM7JzogJ1x4ZDcnLAorICAgICd0aW1lcyc6ICdceGQ3JywKKyAgICAndGltZXNiOyc6ICdcdTIyYTAnLAorICAgICd0aW1lc2JhcjsnOiAnXHUyYTMxJywKKyAgICAndGltZXNkOyc6ICdcdTJhMzAnLAorICAgICd0aW50Oyc6ICdcdTIyMmQnLAorICAgICd0b2VhOyc6ICdcdTI5MjgnLAorICAgICd0b3A7JzogJ1x1MjJhNCcsCisgICAgJ3RvcGJvdDsnOiAnXHUyMzM2JywKKyAgICAndG9wY2lyOyc6ICdcdTJhZjEnLAorICAgICdUb3BmOyc6ICdcVTAwMDFkNTRiJywKKyAgICAndG9wZjsnOiAnXFUwMDAxZDU2NScsCisgICAgJ3RvcGZvcms7JzogJ1x1MmFkYScsCisgICAgJ3Rvc2E7JzogJ1x1MjkyOScsCisgICAgJ3RwcmltZTsnOiAnXHUyMDM0JywKKyAgICAnVFJBREU7JzogJ1x1MjEyMicsCisgICAgJ3RyYWRlOyc6ICdcdTIxMjInLAorICAgICd0cmlhbmdsZTsnOiAnXHUyNWI1JywKKyAgICAndHJpYW5nbGVkb3duOyc6ICdcdTI1YmYnLAorICAgICd0cmlhbmdsZWxlZnQ7JzogJ1x1MjVjMycsCisgICAgJ3RyaWFuZ2xlbGVmdGVxOyc6ICdcdTIyYjQnLAorICAgICd0cmlhbmdsZXE7JzogJ1x1MjI1YycsCisgICAgJ3RyaWFuZ2xlcmlnaHQ7JzogJ1x1MjViOScsCisgICAgJ3RyaWFuZ2xlcmlnaHRlcTsnOiAnXHUyMmI1JywKKyAgICAndHJpZG90Oyc6ICdcdTI1ZWMnLAorICAgICd0cmllOyc6ICdcdTIyNWMnLAorICAgICd0cmltaW51czsnOiAnXHUyYTNhJywKKyAgICAnVHJpcGxlRG90Oyc6ICdcdTI1Y2NcdTIwZGInLAorICAgICd0cmlwbHVzOyc6ICdcdTJhMzknLAorICAgICd0cmlzYjsnOiAnXHUyOWNkJywKKyAgICAndHJpdGltZTsnOiAnXHUyYTNiJywKKyAgICAndHJwZXppdW07JzogJ1x1MjNlMicsCisgICAgJ1RzY3I7JzogJ1xVMDAwMWQ0YWYnLAorICAgICd0c2NyOyc6ICdcVTAwMDFkNGM5JywKKyAgICAnVFNjeTsnOiAnXHUwNDI2JywKKyAgICAndHNjeTsnOiAnXHUwNDQ2JywKKyAgICAnVFNIY3k7JzogJ1x1MDQwYicsCisgICAgJ3RzaGN5Oyc6ICdcdTA0NWInLAorICAgICdUc3Ryb2s7JzogJ1x1MDE2NicsCisgICAgJ3RzdHJvazsnOiAnXHUwMTY3JywKKyAgICAndHdpeHQ7JzogJ1x1MjI2YycsCisgICAgJ3R3b2hlYWRsZWZ0YXJyb3c7JzogJ1x1MjE5ZScsCisgICAgJ3R3b2hlYWRyaWdodGFycm93Oyc6ICdcdTIxYTAnLAorICAgICdVYWN1dGU7JzogJ1x4ZGEnLAorICAgICdVYWN1dGUnOiAnXHhkYScsCisgICAgJ3VhY3V0ZTsnOiAnXHhmYScsCisgICAgJ3VhY3V0ZSc6ICdceGZhJywKKyAgICAnVWFycjsnOiAnXHUyMTlmJywKKyAgICAndUFycjsnOiAnXHUyMWQxJywKKyAgICAndWFycjsnOiAnXHUyMTkxJywKKyAgICAnVWFycm9jaXI7JzogJ1x1Mjk0OScsCisgICAgJ1VicmN5Oyc6ICdcdTA0MGUnLAorICAgICd1YnJjeTsnOiAnXHUwNDVlJywKKyAgICAnVWJyZXZlOyc6ICdcdTAxNmMnLAorICAgICd1YnJldmU7JzogJ1x1MDE2ZCcsCisgICAgJ1VjaXJjOyc6ICdceGRiJywKKyAgICAnVWNpcmMnOiAnXHhkYicsCisgICAgJ3VjaXJjOyc6ICdceGZiJywKKyAgICAndWNpcmMnOiAnXHhmYicsCisgICAgJ1VjeTsnOiAnXHUwNDIzJywKKyAgICAndWN5Oyc6ICdcdTA0NDMnLAorICAgICd1ZGFycjsnOiAnXHUyMWM1JywKKyAgICAnVWRibGFjOyc6ICdcdTAxNzAnLAorICAgICd1ZGJsYWM7JzogJ1x1MDE3MScsCisgICAgJ3VkaGFyOyc6ICdcdTI5NmUnLAorICAgICd1ZmlzaHQ7JzogJ1x1Mjk3ZScsCisgICAgJ1VmcjsnOiAnXFUwMDAxZDUxOCcsCisgICAgJ3VmcjsnOiAnXFUwMDAxZDUzMicsCisgICAgJ1VncmF2ZTsnOiAnXHhkOScsCisgICAgJ1VncmF2ZSc6ICdceGQ5JywKKyAgICAndWdyYXZlOyc6ICdceGY5JywKKyAgICAndWdyYXZlJzogJ1x4ZjknLAorICAgICd1SGFyOyc6ICdcdTI5NjMnLAorICAgICd1aGFybDsnOiAnXHUyMWJmJywKKyAgICAndWhhcnI7JzogJ1x1MjFiZScsCisgICAgJ3VoYmxrOyc6ICdcdTI1ODAnLAorICAgICd1bGNvcm47JzogJ1x1MjMxYycsCisgICAgJ3VsY29ybmVyOyc6ICdcdTIzMWMnLAorICAgICd1bGNyb3A7JzogJ1x1MjMwZicsCisgICAgJ3VsdHJpOyc6ICdcdTI1ZjgnLAorICAgICdVbWFjcjsnOiAnXHUwMTZhJywKKyAgICAndW1hY3I7JzogJ1x1MDE2YicsCisgICAgJ3VtbDsnOiAnXHhhOCcsCisgICAgJ3VtbCc6ICdceGE4JywKKyAgICAnVW5kZXJCYXI7JzogJ18nLAorICAgICdVbmRlckJyYWNlOyc6ICdcdTIzZGYnLAorICAgICdVbmRlckJyYWNrZXQ7JzogJ1x1MjNiNScsCisgICAgJ1VuZGVyUGFyZW50aGVzaXM7JzogJ1x1MjNkZCcsCisgICAgJ1VuaW9uOyc6ICdcdTIyYzMnLAorICAgICdVbmlvblBsdXM7JzogJ1x1MjI4ZScsCisgICAgJ1VvZ29uOyc6ICdcdTAxNzInLAorICAgICd1b2dvbjsnOiAnXHUwMTczJywKKyAgICAnVW9wZjsnOiAnXFUwMDAxZDU0YycsCisgICAgJ3VvcGY7JzogJ1xVMDAwMWQ1NjYnLAorICAgICdVcEFycm93Oyc6ICdcdTIxOTEnLAorICAgICdVcGFycm93Oyc6ICdcdTIxZDEnLAorICAgICd1cGFycm93Oyc6ICdcdTIxOTEnLAorICAgICdVcEFycm93QmFyOyc6ICdcdTI5MTInLAorICAgICdVcEFycm93RG93bkFycm93Oyc6ICdcdTIxYzUnLAorICAgICdVcERvd25BcnJvdzsnOiAnXHUyMTk1JywKKyAgICAnVXBkb3duYXJyb3c7JzogJ1x1MjFkNScsCisgICAgJ3VwZG93bmFycm93Oyc6ICdcdTIxOTUnLAorICAgICdVcEVxdWlsaWJyaXVtOyc6ICdcdTI5NmUnLAorICAgICd1cGhhcnBvb25sZWZ0Oyc6ICdcdTIxYmYnLAorICAgICd1cGhhcnBvb25yaWdodDsnOiAnXHUyMWJlJywKKyAgICAndXBsdXM7JzogJ1x1MjI4ZScsCisgICAgJ1VwcGVyTGVmdEFycm93Oyc6ICdcdTIxOTYnLAorICAgICdVcHBlclJpZ2h0QXJyb3c7JzogJ1x1MjE5NycsCisgICAgJ1Vwc2k7JzogJ1x1MDNkMicsCisgICAgJ3Vwc2k7JzogJ1x1MDNjNScsCisgICAgJ3Vwc2loOyc6ICdcdTAzZDInLAorICAgICdVcHNpbG9uOyc6ICdcdTAzYTUnLAorICAgICd1cHNpbG9uOyc6ICdcdTAzYzUnLAorICAgICdVcFRlZTsnOiAnXHUyMmE1JywKKyAgICAnVXBUZWVBcnJvdzsnOiAnXHUyMWE1JywKKyAgICAndXB1cGFycm93czsnOiAnXHUyMWM4JywKKyAgICAndXJjb3JuOyc6ICdcdTIzMWQnLAorICAgICd1cmNvcm5lcjsnOiAnXHUyMzFkJywKKyAgICAndXJjcm9wOyc6ICdcdTIzMGUnLAorICAgICdVcmluZzsnOiAnXHUwMTZlJywKKyAgICAndXJpbmc7JzogJ1x1MDE2ZicsCisgICAgJ3VydHJpOyc6ICdcdTI1ZjknLAorICAgICdVc2NyOyc6ICdcVTAwMDFkNGIwJywKKyAgICAndXNjcjsnOiAnXFUwMDAxZDRjYScsCisgICAgJ3V0ZG90Oyc6ICdcdTIyZjAnLAorICAgICdVdGlsZGU7JzogJ1x1MDE2OCcsCisgICAgJ3V0aWxkZTsnOiAnXHUwMTY5JywKKyAgICAndXRyaTsnOiAnXHUyNWI1JywKKyAgICAndXRyaWY7JzogJ1x1MjViNCcsCisgICAgJ3V1YXJyOyc6ICdcdTIxYzgnLAorICAgICdVdW1sOyc6ICdceGRjJywKKyAgICAnVXVtbCc6ICdceGRjJywKKyAgICAndXVtbDsnOiAnXHhmYycsCisgICAgJ3V1bWwnOiAnXHhmYycsCisgICAgJ3V3YW5nbGU7JzogJ1x1MjlhNycsCisgICAgJ3ZhbmdydDsnOiAnXHUyOTljJywKKyAgICAndmFyZXBzaWxvbjsnOiAnXHUwM2Y1JywKKyAgICAndmFya2FwcGE7JzogJ1x1MDNmMCcsCisgICAgJ3Zhcm5vdGhpbmc7JzogJ1x1MjIwNScsCisgICAgJ3ZhcnBoaTsnOiAnXHUwM2Q1JywKKyAgICAndmFycGk7JzogJ1x1MDNkNicsCisgICAgJ3ZhcnByb3B0bzsnOiAnXHUyMjFkJywKKyAgICAndkFycjsnOiAnXHUyMWQ1JywKKyAgICAndmFycjsnOiAnXHUyMTk1JywKKyAgICAndmFycmhvOyc6ICdcdTAzZjEnLAorICAgICd2YXJzaWdtYTsnOiAnXHUwM2MyJywKKyAgICAndmFyc3Vic2V0bmVxOyc6ICdcdTIyOGFcdWZlMDAnLAorICAgICd2YXJzdWJzZXRuZXFxOyc6ICdcdTJhY2JcdWZlMDAnLAorICAgICd2YXJzdXBzZXRuZXE7JzogJ1x1MjI4Ylx1ZmUwMCcsCisgICAgJ3ZhcnN1cHNldG5lcXE7JzogJ1x1MmFjY1x1ZmUwMCcsCisgICAgJ3ZhcnRoZXRhOyc6ICdcdTAzZDEnLAorICAgICd2YXJ0cmlhbmdsZWxlZnQ7JzogJ1x1MjJiMicsCisgICAgJ3ZhcnRyaWFuZ2xlcmlnaHQ7JzogJ1x1MjJiMycsCisgICAgJ1ZiYXI7JzogJ1x1MmFlYicsCisgICAgJ3ZCYXI7JzogJ1x1MmFlOCcsCisgICAgJ3ZCYXJ2Oyc6ICdcdTJhZTknLAorICAgICdWY3k7JzogJ1x1MDQxMicsCisgICAgJ3ZjeTsnOiAnXHUwNDMyJywKKyAgICAnVkRhc2g7JzogJ1x1MjJhYicsCisgICAgJ1ZkYXNoOyc6ICdcdTIyYTknLAorICAgICd2RGFzaDsnOiAnXHUyMmE4JywKKyAgICAndmRhc2g7JzogJ1x1MjJhMicsCisgICAgJ1ZkYXNobDsnOiAnXHUyYWU2JywKKyAgICAnVmVlOyc6ICdcdTIyYzEnLAorICAgICd2ZWU7JzogJ1x1MjIyOCcsCisgICAgJ3ZlZWJhcjsnOiAnXHUyMmJiJywKKyAgICAndmVlZXE7JzogJ1x1MjI1YScsCisgICAgJ3ZlbGxpcDsnOiAnXHUyMmVlJywKKyAgICAnVmVyYmFyOyc6ICdcdTIwMTYnLAorICAgICd2ZXJiYXI7JzogJ3wnLAorICAgICdWZXJ0Oyc6ICdcdTIwMTYnLAorICAgICd2ZXJ0Oyc6ICd8JywKKyAgICAnVmVydGljYWxCYXI7JzogJ1x1MjIyMycsCisgICAgJ1ZlcnRpY2FsTGluZTsnOiAnfCcsCisgICAgJ1ZlcnRpY2FsU2VwYXJhdG9yOyc6ICdcdTI3NTgnLAorICAgICdWZXJ0aWNhbFRpbGRlOyc6ICdcdTIyNDAnLAorICAgICdWZXJ5VGhpblNwYWNlOyc6ICdcdTIwMGEnLAorICAgICdWZnI7JzogJ1xVMDAwMWQ1MTknLAorICAgICd2ZnI7JzogJ1xVMDAwMWQ1MzMnLAorICAgICd2bHRyaTsnOiAnXHUyMmIyJywKKyAgICAndm5zdWI7JzogJ1x1MjI4Mlx1MjBkMicsCisgICAgJ3Zuc3VwOyc6ICdcdTIyODNcdTIwZDInLAorICAgICdWb3BmOyc6ICdcVTAwMDFkNTRkJywKKyAgICAndm9wZjsnOiAnXFUwMDAxZDU2NycsCisgICAgJ3Zwcm9wOyc6ICdcdTIyMWQnLAorICAgICd2cnRyaTsnOiAnXHUyMmIzJywKKyAgICAnVnNjcjsnOiAnXFUwMDAxZDRiMScsCisgICAgJ3ZzY3I7JzogJ1xVMDAwMWQ0Y2InLAorICAgICd2c3VibkU7JzogJ1x1MmFjYlx1ZmUwMCcsCisgICAgJ3ZzdWJuZTsnOiAnXHUyMjhhXHVmZTAwJywKKyAgICAndnN1cG5FOyc6ICdcdTJhY2NcdWZlMDAnLAorICAgICd2c3VwbmU7JzogJ1x1MjI4Ylx1ZmUwMCcsCisgICAgJ1Z2ZGFzaDsnOiAnXHUyMmFhJywKKyAgICAndnppZ3phZzsnOiAnXHUyOTlhJywKKyAgICAnV2NpcmM7JzogJ1x1MDE3NCcsCisgICAgJ3djaXJjOyc6ICdcdTAxNzUnLAorICAgICd3ZWRiYXI7JzogJ1x1MmE1ZicsCisgICAgJ1dlZGdlOyc6ICdcdTIyYzAnLAorICAgICd3ZWRnZTsnOiAnXHUyMjI3JywKKyAgICAnd2VkZ2VxOyc6ICdcdTIyNTknLAorICAgICd3ZWllcnA7JzogJ1x1MjExOCcsCisgICAgJ1dmcjsnOiAnXFUwMDAxZDUxYScsCisgICAgJ3dmcjsnOiAnXFUwMDAxZDUzNCcsCisgICAgJ1dvcGY7JzogJ1xVMDAwMWQ1NGUnLAorICAgICd3b3BmOyc6ICdcVTAwMDFkNTY4JywKKyAgICAnd3A7JzogJ1x1MjExOCcsCisgICAgJ3dyOyc6ICdcdTIyNDAnLAorICAgICd3cmVhdGg7JzogJ1x1MjI0MCcsCisgICAgJ1dzY3I7JzogJ1xVMDAwMWQ0YjInLAorICAgICd3c2NyOyc6ICdcVTAwMDFkNGNjJywKKyAgICAneGNhcDsnOiAnXHUyMmMyJywKKyAgICAneGNpcmM7JzogJ1x1MjVlZicsCisgICAgJ3hjdXA7JzogJ1x1MjJjMycsCisgICAgJ3hkdHJpOyc6ICdcdTI1YmQnLAorICAgICdYZnI7JzogJ1xVMDAwMWQ1MWInLAorICAgICd4ZnI7JzogJ1xVMDAwMWQ1MzUnLAorICAgICd4aEFycjsnOiAnXHUyN2ZhJywKKyAgICAneGhhcnI7JzogJ1x1MjdmNycsCisgICAgJ1hpOyc6ICdcdTAzOWUnLAorICAgICd4aTsnOiAnXHUwM2JlJywKKyAgICAneGxBcnI7JzogJ1x1MjdmOCcsCisgICAgJ3hsYXJyOyc6ICdcdTI3ZjUnLAorICAgICd4bWFwOyc6ICdcdTI3ZmMnLAorICAgICd4bmlzOyc6ICdcdTIyZmInLAorICAgICd4b2RvdDsnOiAnXHUyYTAwJywKKyAgICAnWG9wZjsnOiAnXFUwMDAxZDU0ZicsCisgICAgJ3hvcGY7JzogJ1xVMDAwMWQ1NjknLAorICAgICd4b3BsdXM7JzogJ1x1MmEwMScsCisgICAgJ3hvdGltZTsnOiAnXHUyYTAyJywKKyAgICAneHJBcnI7JzogJ1x1MjdmOScsCisgICAgJ3hyYXJyOyc6ICdcdTI3ZjYnLAorICAgICdYc2NyOyc6ICdcVTAwMDFkNGIzJywKKyAgICAneHNjcjsnOiAnXFUwMDAxZDRjZCcsCisgICAgJ3hzcWN1cDsnOiAnXHUyYTA2JywKKyAgICAneHVwbHVzOyc6ICdcdTJhMDQnLAorICAgICd4dXRyaTsnOiAnXHUyNWIzJywKKyAgICAneHZlZTsnOiAnXHUyMmMxJywKKyAgICAneHdlZGdlOyc6ICdcdTIyYzAnLAorICAgICdZYWN1dGU7JzogJ1x4ZGQnLAorICAgICdZYWN1dGUnOiAnXHhkZCcsCisgICAgJ3lhY3V0ZTsnOiAnXHhmZCcsCisgICAgJ3lhY3V0ZSc6ICdceGZkJywKKyAgICAnWUFjeTsnOiAnXHUwNDJmJywKKyAgICAneWFjeTsnOiAnXHUwNDRmJywKKyAgICAnWWNpcmM7JzogJ1x1MDE3NicsCisgICAgJ3ljaXJjOyc6ICdcdTAxNzcnLAorICAgICdZY3k7JzogJ1x1MDQyYicsCisgICAgJ3ljeTsnOiAnXHUwNDRiJywKKyAgICAneWVuOyc6ICdceGE1JywKKyAgICAneWVuJzogJ1x4YTUnLAorICAgICdZZnI7JzogJ1xVMDAwMWQ1MWMnLAorICAgICd5ZnI7JzogJ1xVMDAwMWQ1MzYnLAorICAgICdZSWN5Oyc6ICdcdTA0MDcnLAorICAgICd5aWN5Oyc6ICdcdTA0NTcnLAorICAgICdZb3BmOyc6ICdcVTAwMDFkNTUwJywKKyAgICAneW9wZjsnOiAnXFUwMDAxZDU2YScsCisgICAgJ1lzY3I7JzogJ1xVMDAwMWQ0YjQnLAorICAgICd5c2NyOyc6ICdcVTAwMDFkNGNlJywKKyAgICAnWVVjeTsnOiAnXHUwNDJlJywKKyAgICAneXVjeTsnOiAnXHUwNDRlJywKKyAgICAnWXVtbDsnOiAnXHUwMTc4JywKKyAgICAneXVtbDsnOiAnXHhmZicsCisgICAgJ3l1bWwnOiAnXHhmZicsCisgICAgJ1phY3V0ZTsnOiAnXHUwMTc5JywKKyAgICAnemFjdXRlOyc6ICdcdTAxN2EnLAorICAgICdaY2Fyb247JzogJ1x1MDE3ZCcsCisgICAgJ3pjYXJvbjsnOiAnXHUwMTdlJywKKyAgICAnWmN5Oyc6ICdcdTA0MTcnLAorICAgICd6Y3k7JzogJ1x1MDQzNycsCisgICAgJ1pkb3Q7JzogJ1x1MDE3YicsCisgICAgJ3pkb3Q7JzogJ1x1MDE3YycsCisgICAgJ3plZXRyZjsnOiAnXHUyMTI4JywKKyAgICAnWmVyb1dpZHRoU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ1pldGE7JzogJ1x1MDM5NicsCisgICAgJ3pldGE7JzogJ1x1MDNiNicsCisgICAgJ1pmcjsnOiAnXHUyMTI4JywKKyAgICAnemZyOyc6ICdcVTAwMDFkNTM3JywKKyAgICAnWkhjeTsnOiAnXHUwNDE2JywKKyAgICAnemhjeTsnOiAnXHUwNDM2JywKKyAgICAnemlncmFycjsnOiAnXHUyMWRkJywKKyAgICAnWm9wZjsnOiAnXHUyMTI0JywKKyAgICAnem9wZjsnOiAnXFUwMDAxZDU2YicsCisgICAgJ1pzY3I7JzogJ1xVMDAwMWQ0YjUnLAorICAgICd6c2NyOyc6ICdcVTAwMDFkNGNmJywKKyAgICAnendqOyc6ICdcdTIwMGQnLAorICAgICd6d25qOyc6ICdcdTIwMGMnLAorfQorCiAjIG1hcHMgdGhlIFVuaWNvZGUgY29kZXBvaW50IHRvIHRoZSBIVE1MIGVudGl0eSBuYW1lCiBjb2RlcG9pbnQybmFtZSA9IHt9CiAKZGlmZiAtLWdpdCBhL0xpYi9odG1sL3BhcnNlci5weSBiL0xpYi9odG1sL3BhcnNlci5weQppbmRleCBkZTUwNGFiLi5mOGFjODI4IDEwMDY0NAotLS0gYS9MaWIvaHRtbC9wYXJzZXIucHkKKysrIGIvTGliL2h0bWwvcGFyc2VyLnB5CkBAIC0xMCw2ICsxMCw3IEBACiAKIGltcG9ydCBfbWFya3VwYmFzZQogaW1wb3J0IHJlCitpbXBvcnQgd2FybmluZ3MKIAogIyBSZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgZm9yIHBhcnNpbmcKIApAQCAtMTEzLDE0ICsxMTQsMTYgQEAKIAogICAgIENEQVRBX0NPTlRFTlRfRUxFTUVOVFMgPSAoInNjcmlwdCIsICJzdHlsZSIpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaWN0PVRydWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9RmFsc2UpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuZCByZXNldCB0aGlzIGluc3RhbmNlLgogCi0gICAgICAgIElmIHN0cmljdCBpcyBzZXQgdG8gVHJ1ZSAodGhlIGRlZmF1bHQpLCBlcnJvcnMgYXJlIHJhaXNlZCB3aGVuIGludmFsaWQKLSAgICAgICAgSFRNTCBpcyBlbmNvdW50ZXJlZC4gIElmIHNldCB0byBGYWxzZSwgYW4gYXR0ZW1wdCBpcyBpbnN0ZWFkIG1hZGUgdG8KLSAgICAgICAgY29udGludWUgcGFyc2luZywgbWFraW5nICJiZXN0IGd1ZXNzZXMiIGFib3V0IHRoZSBpbnRlbmRlZCBtZWFuaW5nLCBpbgotICAgICAgICBhIGZhc2hpb24gc2ltaWxhciB0byB3aGF0IGJyb3dzZXJzIHR5cGljYWxseSBkby4KKyAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZSBwYXJzZXIgd2lsbCBwYXJzZSBpbnZhbGlkCisgICAgICAgIG1hcmt1cCwgb3RoZXJ3aXNlIGl0IHdpbGwgcmFpc2UgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHN0cmljdCBtb2RlCisgICAgICAgIGlzIGRlcHJlY2F0ZWQuCiAgICAgICAgICIiIgorICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgc3RyaWN0IG1vZGUgaXMgZGVwcmVjYXRlZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5zdHJpY3QgPSBzdHJpY3QKICAgICAgICAgc2VsZi5yZXNldCgpCiAKQEAgLTI3MSw4ICsyNzQsOCBAQAogICAgICMgU2VlIGFsc28gcGFyc2VfZGVjbGFyYXRpb24gaW4gX21hcmt1cGJhc2UKICAgICBkZWYgcGFyc2VfaHRtbF9kZWNsYXJhdGlvbihzZWxmLCBpKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiByYXdkYXRhW2k6aSsyXSAhPSAnPCEnOgotICAgICAgICAgICAgc2VsZi5lcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2h0bWxfZGVjbGFyYXRpb24oKScpCisgICAgICAgIGFzc2VydCByYXdkYXRhW2k6aSsyXSA9PSAnPCEnLCAoJ3VuZXhwZWN0ZWQgY2FsbCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnNlX2h0bWxfZGVjbGFyYXRpb24oKScpCiAgICAgICAgIGlmIHJhd2RhdGFbaTppKzRdID09ICc8IS0tJzoKICAgICAgICAgICAgICMgdGhpcyBjYXNlIGlzIGFjdHVhbGx5IGFscmVhZHkgaGFuZGxlZCBpbiBnb2FoZWFkKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2NvbW1lbnQoaSkKQEAgLTI5Miw4ICsyOTUsOCBAQAogICAgICMgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI2JvZ3VzLWNvbW1lbnQtc3RhdGUKICAgICBkZWYgcGFyc2VfYm9ndXNfY29tbWVudChzZWxmLCBpLCByZXBvcnQ9MSk6CiAgICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKLSAgICAgICAgaWYgcmF3ZGF0YVtpOmkrMl0gbm90IGluICgnPCEnLCAnPC8nKToKLSAgICAgICAgICAgIHNlbGYuZXJyb3IoJ3VuZXhwZWN0ZWQgY2FsbCB0byBwYXJzZV9jb21tZW50KCknKQorICAgICAgICBhc3NlcnQgcmF3ZGF0YVtpOmkrMl0gaW4gKCc8IScsICc8LycpLCAoJ3VuZXhwZWN0ZWQgY2FsbCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfY29tbWVudCgpJykKICAgICAgICAgcG9zID0gcmF3ZGF0YS5maW5kKCc+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/JwogICAgIHN0cmluZyA9IGFueSgiU1RSSU5HIiwgW3NxM3N0cmluZywgZHEzc3RyaW5nLCBzcXN0cmluZywgZHFzdHJpbmddKQogICAgIHJldHVybiBrdyArICJ8IiArIGJ1aWx0aW4gKyAifCIgKyBjb21tZW50ICsgInwiICsgc3RyaW5nICtcCiAgICAgICAgICAgICJ8IiArIGFueSgiU1lOQyIsIFtyIlxuIl0pCkBAIC0xNDksOSArMTUwLDkgQEAKICAgICAgICAgICAgIHNlbGYuc3RvcF9jb2xvcml6aW5nID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuY29sb3JpemluZyA9IFRydWUKICAgICAgICAgICAgIGlmIERFQlVHOiBwcmludCgiY29sb3JpemluZy4uLiIpCi0gICAgICAgICAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgICAgICAgICAgdDAgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgICAgICBzZWxmLnJlY29sb3JpemVfbWFpbigpCi0gICAgICAgICAgICB0MSA9IHRpbWUuY2xvY2soKQorICAgICAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgICAgICBpZiBERUJVRzogcHJpbnQoIiUuM2Ygc2Vjb25kcyIgJSAodDEtdDApKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5jb2xvcml6aW5nID0gRmFsc2UKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weSBiL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQppbmRleCBiZWMyMTkxLi42YmRjZWNjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CkBAIC0xLDggKzEsOSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBpbXAKK2ltcG9ydCBzeXMKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveApAQCAtMjcsOCArMjgsNyBAQAogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwogICAgIHJlbGVhc2UgPSAnJXMlcycgJSAobWFqb3IsIG1pbm9yKQotICAgIGlmIG1pY3JvOgotICAgICAgICByZWxlYXNlICs9ICclcycgJSAobWljcm8sKQorICAgIHJlbGVhc2UgKz0gJyVzJyAlIChtaWNybywpCiAgICAgaWYgbGV2ZWwgPT0gJ2NhbmRpZGF0ZSc6CiAgICAgICAgIHJlbGVhc2UgKz0gJ3JjJXMnICUgKHNlcmlhbCwpCiAgICAgZWxpZiBsZXZlbCAhPSAnZmluYWwnOgpAQCAtMTIwLDcgKzEyMCw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgZmlsZW5hbWU9Tm9uZSwga2V5PU5vbmUsIHJvb3Q9Tm9uZSk6CiAgICAgICAgIGlmIEVkaXRvcldpbmRvdy5oZWxwX3VybCBpcyBOb25lOgotICAgICAgICAgICAgZG9jaG9tZSA9ICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ0RvYycsICdpbmRleC5odG1sJykKKyAgICAgICAgICAgIGRvY2hvbWUgPSAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ0RvYycsICdpbmRleC5odG1sJykKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5jb3VudCgnbGludXgnKToKICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIGh0bWwgZG9jcyBpbiBhIGNvdXBsZSBvZiBzdGFuZGFyZCBwbGFjZXMKICAgICAgICAgICAgICAgICBweXZlciA9ICdweXRob24tZG9jcy0nICsgJyVzLiVzLiVzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjNdCkBAIC0xMzEsMTMgKzEzMSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCBweXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRG9jJywgJ2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgotICAgICAgICAgICAgICAgIGNobWZpbGUgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ0RvYycsCisgICAgICAgICAgICAgICAgY2htZmlsZSA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICdEb2MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiVzLmNobScgJSBfc3BoaW54X3ZlcnNpb24oKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjaG1maWxlKToKICAgICAgICAgICAgICAgICAgICAgZG9jaG9tZSA9IGNobWZpbGUKICAgICAgICAgICAgIGVsaWYgbWFjb3N4U3VwcG9ydC5ydW5uaW5nQXNPU1hBcHAoKToKICAgICAgICAgICAgICAgICAjIGRvY3VtZW50YXRpb24gaXMgc3RvcmVkIGluc2lkZSB0aGUgcHl0aG9uIGZyYW1ld29yawotICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvdXJjZXMvRW5nbGlzaC5scHJvai9Eb2N1bWVudGF0aW9uL2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgZG9jaG9tZSA9IG9zLnBhdGgubm9ybXBhdGgoZG9jaG9tZSkKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGRvY2hvbWUpOgpAQCAtMTAwNSw3ICsxMDA1LDEwIEBACiAKICAgICBkZWYgbG9hZF9leHRlbnNpb24oc2VsZiwgbmFtZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4nICsgbmFtZSwgcGFja2FnZT1fX3BhY2thZ2VfXykKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKaW5kZXggOTUyOGM5YS4uZWM1MGViMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQpAQCAtNDg1LDYgKzQ4NSw4IEBACiAgICAgICAgICgiQWxsIGZpbGVzIiwgIioiKSwKICAgICAgICAgXQogCisgICAgZGVmYXVsdGV4dGVuc2lvbiA9ICcucHknIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlICcnCisKICAgICBkZWYgYXNrb3BlbmZpbGUoc2VsZik6CiAgICAgICAgIGRpciwgYmFzZSA9IHNlbGYuZGVmYXVsdGZpbGVuYW1lKCJvcGVuIikKICAgICAgICAgaWYgbm90IHNlbGYub3BlbmRpYWxvZzoKQEAgLTUwOCw4ICs1MTAsMTAgQEAKICAgICBkZWYgYXNrc2F2ZWZpbGUoc2VsZik6CiAgICAgICAgIGRpciwgYmFzZSA9IHNlbGYuZGVmYXVsdGZpbGVuYW1lKCJzYXZlIikKICAgICAgICAgaWYgbm90IHNlbGYuc2F2ZWRpYWxvZzoKLSAgICAgICAgICAgIHNlbGYuc2F2ZWRpYWxvZyA9IHRrRmlsZURpYWxvZy5TYXZlQXMobWFzdGVyPXNlbGYudGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGVzPXNlbGYuZmlsZXR5cGVzKQorICAgICAgICAgICAgc2VsZi5zYXZlZGlhbG9nID0gdGtGaWxlRGlhbG9nLlNhdmVBcygKKyAgICAgICAgICAgICAgICAgICAgbWFzdGVyPXNlbGYudGV4dCwKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGVzPXNlbGYuZmlsZXR5cGVzLAorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ZXh0ZW5zaW9uPXNlbGYuZGVmYXVsdGV4dGVuc2lvbikKICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLnNhdmVkaWFsb2cuc2hvdyhpbml0aWFsZGlyPWRpciwgaW5pdGlhbGZpbGU9YmFzZSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL05FV1MudHh0IGIvTGliL2lkbGVsaWIvTkVXUy50eHQKaW5kZXggMzE2MGM3NC4uYTBjOTU3ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTkVXUy50eHQKKysrIGIvTGliL2lkbGVsaWIvTkVXUy50eHQKQEAgLTEsMTAgKzEsMTMgQEAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjIuND8KK1doYXQncyBOZXcgaW4gSURMRSAzLjMuMD8KID09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLSBJc3N1ZSAjNzE2MzogUHJvcGFnYXRlIHJldHVybiB2YWx1ZSBvZiBzeXMuc3Rkb3V0LndyaXRlLgogCiAtIElzc3VlICMxNTMxODogUHJldmVudCB3cml0aW5nIHRvIHN5cy5zdGRpbi4KIAorLSBJc3N1ZSAjNDgzMjogTW9kaWZ5IElETEUgdG8gc2F2ZSBmaWxlcyB3aXRoIC5weSBleHRlbnNpb24gYnkKKyAgZGVmYXVsdCBvbiBXaW5kb3dzIGFuZCBPUyBYIChUayA4LjUpIGFzIGl0IGFscmVhZHkgZG9lcyB3aXRoIFgxMSBUay4KKwogLSBJc3N1ZSAjMTM1MzIsICMxNTMxOTogQ2hlY2sgdGhhdCBhcmd1bWVudHMgdG8gc3lzLnN0ZG91dC53cml0ZSBhcmUgc3RyaW5ncy4KIAogLSBJc3N1ZSAjIDEyNTEwOiBBdHRlbXB0IHRvIGdldCBjZXJ0YWluIHRvb2wgdGlwcyBubyBsb25nZXIgY3Jhc2hlcyBJRExFLgpAQCAtMTgsMTIgKzIxLDEwIEBACiAtIElzc3VlICMxNDkzNzogUGVyZm9ybSBhdXRvLWNvbXBsZXRpb24gb2YgZmlsZW5hbWVzIGluIHN0cmluZ3MgZXZlbiBmb3IKICAgbm9uLUFTQ0lJIGZpbGVuYW1lcy4gTGlrZXdpc2UgZm9yIGlkZW50aWZpZXJzLgogCi0tIElzc3VlICMxNDAxODogVXBkYXRlIGNoZWNrcyBmb3IgdW5zdGFibGUgc3lzdGVtIFRjbC9UayB2ZXJzaW9ucyBvbiBPUyBYCi0gIHRvIGluY2x1ZGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgorLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KKyAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy4yLjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09CistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIGBweXRob24gLW0gaWRsZWxpYmAKIAogLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKICAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZApAQCAtMzMsNiArMzQsOSBAQAogLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwogICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKS4KIAorLSBJc3N1ZSAjMTQwMTg6IFVwZGF0ZSBjaGVja3MgZm9yIHVuc3RhYmxlIHN5c3RlbSBUY2wvVGsgdmVyc2lvbnMgb24gT1MgWAorICB0byBpbmNsdWRlIHZlcnNpb25zIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjcgYW5kIDEwLjggaW4gYWRkaXRpb24gdG8gMTAuNi4KKwogCiBXaGF0J3MgTmV3IGluIElETEUgMy4yLjE/CiA9PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CmluZGV4IGQ4OGE0OGUuLjk5NTRmMDcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogCiBmcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZUl0ZW0KIGZyb20gaWRsZWxpYi5DbGFzc0Jyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCkBAIC03MCw3ICs3MSw5IEBACiAKICAgICBkZWYgbGlzdG1vZHVsZXMoc2VsZiwgYWxsbmFtZXMpOgogICAgICAgICBtb2R1bGVzID0ge30KLSAgICAgICAgc3VmZml4ZXMgPSBpbXAuZ2V0X3N1ZmZpeGVzKCkKKyAgICAgICAgc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XQorICAgICAgICBzdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdCiAgICAgICAgIHNvcnRlZCA9IFtdCiAgICAgICAgIGZvciBzdWZmLCBtb2RlLCBmbGFnIGluIHN1ZmZpeGVzOgogICAgICAgICAgICAgaSA9IC1sZW4oc3VmZikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkgYi9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CmluZGV4IDg4YzAzOTAuLjUwZDYxODIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKKysrIGIvTGliL2lkbGVsaWIvUHlTaGVsbC5weQpAQCAtNDc3LDYgKzQ3NywxMCBAQAogCiAgICAgZGVmIGtpbGxfc3VicHJvY2VzcyhzZWxmKToKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5ycGNjbHQubGlzdGVuaW5nX3NvY2suY2xvc2UoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6ICAjIG5vIHNvY2tldAorICAgICAgICAgICAgcGFzcworICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnJwY2NsdC5jbG9zZSgpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgbm8gc29ja2V0CiAgICAgICAgICAgICBwYXNzCkBAIC0xMDA1LDYgKzEwMDksOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbm9zdWIgPSAiPT09PSBObyBTdWJwcm9jZXNzID09PT0iCisgICAgICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKKwogICAgICAgICBzZWxmLndyaXRlKCJQeXRob24gJXMgb24gJXNcbiVzXG4lcyIgJQogICAgICAgICAgICAgICAgICAgIChzeXMudmVyc2lvbiwgc3lzLnBsYXRmb3JtLCBzZWxmLkNPUFlSSUdIVCwgbm9zdWIpKQogICAgICAgICBzZWxmLnNob3dwcm9tcHQoKQpAQCAtMTIyNyw2ICsxMjMzLDE2IEBACiAgICAgICAgIHNlbGYuc2V0X2xpbmVfYW5kX2NvbHVtbigpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcywgdGFncz0oKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKSBhbmQgbGVuKHMpIGFuZCBtYXgocykgPiAnXHVmZmZmJzoKKyAgICAgICAgICAgICMgVGsgZG9lc24ndCBzdXBwb3J0IG91dHB1dHRpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAjIExldCdzIGFzc3VtZSB3aGF0IHByaW50ZWQgc3RyaW5nIGlzIG5vdCB2ZXJ5IGxvbmcsCisgICAgICAgICAgICAjIGZpbmQgZmlyc3Qgbm9uLUJNUCBjaGFyYWN0ZXIgYW5kIGNvbnN0cnVjdCBpbmZvcm1hdGl2ZQorICAgICAgICAgICAgIyBVbmljb2RlRW5jb2RlRXJyb3IgZXhjZXB0aW9uLgorICAgICAgICAgICAgZm9yIHN0YXJ0LCBjaGFyIGluIGVudW1lcmF0ZShzKToKKyAgICAgICAgICAgICAgICBpZiBjaGFyID4gJ1x1ZmZmZic6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByYWlzZSBVbmljb2RlRW5jb2RlRXJyb3IoIlVDUy0yIiwgY2hhciwgc3RhcnQsIHN0YXJ0KzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbi1CTVAgY2hhcmFjdGVyIG5vdCBzdXBwb3J0ZWQgaW4gVGsnKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnRleHQubWFya19ncmF2aXR5KCJpb21hcmsiLCAicmlnaHQiKQogICAgICAgICAgICAgY291bnQgPSBPdXRwdXRXaW5kb3cud3JpdGUoc2VsZiwgcywgdGFncywgImlvbWFyayIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQppbmRleCAxOGNlOTY1Li41MjhhZGY2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKQEAgLTE1MCwxNiArMTUwLDE2IEBACiAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCiAgICAgICAgICMgWFhYIFRvbyBvZnRlbiB0aGlzIGRpc2NhcmRzIGFyZ3VtZW50cyB0aGUgdXNlciBqdXN0IHNldC4uLgogICAgICAgICBpbnRlcnAucnVuY29tbWFuZCgiIiJpZiAxOgotICAgICAgICAgICAgX2ZpbGVuYW1lID0gJXIKKyAgICAgICAgICAgIF9fZmlsZV9fID0ge2ZpbGVuYW1lIXJ9CiAgICAgICAgICAgICBpbXBvcnQgc3lzIGFzIF9zeXMKICAgICAgICAgICAgIGZyb20gb3MucGF0aCBpbXBvcnQgYmFzZW5hbWUgYXMgX2Jhc2VuYW1lCiAgICAgICAgICAgICBpZiAobm90IF9zeXMuYXJndiBvcgotICAgICAgICAgICAgICAgIF9iYXNlbmFtZShfc3lzLmFyZ3ZbMF0pICE9IF9iYXNlbmFtZShfZmlsZW5hbWUpKToKLSAgICAgICAgICAgICAgICBfc3lzLmFyZ3YgPSBbX2ZpbGVuYW1lXQorICAgICAgICAgICAgICAgIF9iYXNlbmFtZShfc3lzLmFyZ3ZbMF0pICE9IF9iYXNlbmFtZShfX2ZpbGVfXykpOgorICAgICAgICAgICAgICAgIF9zeXMuYXJndiA9IFtfX2ZpbGVfX10KICAgICAgICAgICAgIGltcG9ydCBvcyBhcyBfb3MKLSAgICAgICAgICAgIF9vcy5jaGRpciglcikKLSAgICAgICAgICAgIGRlbCBfZmlsZW5hbWUsIF9zeXMsIF9iYXNlbmFtZSwgX29zCi0gICAgICAgICAgICBcbiIiIiAlIChmaWxlbmFtZSwgZGlybmFtZSkpCisgICAgICAgICAgICBfb3MuY2hkaXIoe2Rpcm5hbWUhcn0pCisgICAgICAgICAgICBkZWwgX3N5cywgX2Jhc2VuYW1lLCBfb3MKKyAgICAgICAgICAgIFxuIiIiLmZvcm1hdChmaWxlbmFtZT1maWxlbmFtZSwgZGlybmFtZT1kaXJuYW1lKSkKICAgICAgICAgaW50ZXJwLnByZXBlbmRfc3lzcGF0aChmaWxlbmFtZSkKICAgICAgICAgIyBYWFggS0JLIDAzSnVsMDQgV2hlbiBydW4gdy9vIHN1YnByb2Nlc3MsIHJ1bnRpbWUgd2FybmluZ3Mgc3RpbGwKICAgICAgICAgIyAgICAgICAgIGdvIHRvIF9fc3RkZXJyX18uICBXaXRoIHN1YnByb2Nlc3MsIHRoZXkgZ28gdG8gdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjY2ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKQEAgLTAsMCArMSw5IEBACisiIiIKK0lETEUgbWFpbiBlbnRyeSBwb2ludAorCitSdW4gSURMRSBhcyBweXRob24gLW0gaWRsZWxpYgorIiIiCisKKworaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAoraWRsZWxpYi5QeVNoZWxsLm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKaW5kZXggZGE5MjcyNi4uNDA0OTAwNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CkBAIC0xNDUsNyArMTQ1LDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKICAgICAgICAgICAgICAgICBjZmdGaWxlID0gb3BlbihmbmFtZSwgJ3cnKQotICAgICAgICAgICAgc2VsZi53cml0ZShjZmdGaWxlKQorICAgICAgICAgICAgd2l0aCBjZmdGaWxlOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2ZnRmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuUmVtb3ZlRmlsZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CmluZGV4IDE3NDU1ZGIuLjhkODMxN2QgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQpAQCAtMSArMSBAQAotSURMRV9WRVJTSU9OID0gIjMuMi4zIgorSURMRV9WRVJTSU9OID0gIjMuMy4wIgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weSBiL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKaW5kZXggOTY5MDQ0Mi4uNjcwNjlmYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQorKysgYi9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CkBAIC0xMiwxMiArMTIsMjIgQEAKIGRlZiBydW5uaW5nQXNPU1hBcHAoKToKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgUHl0aG9uIGlzIHJ1bm5pbmcgZnJvbSB3aXRoaW4gYW4gYXBwIG9uIE9TWC4KLSAgICBJZiBzbywgYXNzdW1lIHRoYXQgUHl0aG9uIHdhcyBidWlsdCB3aXRoIEFxdWEgVGNsL1RrIHJhdGhlciB0aGFuCi0gICAgWDExIFRjbC9Uay4KKyAgICBJZiBzbywgdGhlIHZhcmlvdXMgT1MgWCBjdXN0b21pemF0aW9ucyB3aWxsIGJlIHRyaWdnZXJlZCBsYXRlciAobWVudQorICAgIGZpeHVwLCBldCBhbCkuICAoT3JpZ2luYWxseSwgdGhpcyB0ZXN0IHdhcyBzdXBwb3NlZCB0byBjb25kaXRpb24KKyAgICBiZWhhdmlvciBvbiB3aGV0aGVyIElETEUgd2FzIHJ1bm5pbmcgdW5kZXIgQXF1YSBUayByYXRoZXIgdGhhbgorICAgIHVuZGVyIFgxMSBUayBidXQgdGhhdCBkb2VzIG5vdCB3b3JrIHNpbmNlIGEgZnJhbWV3b3JrIGJ1aWxkCisgICAgY291bGQgYmUgbGlua2VkIHdpdGggWDExLiAgRm9yIHNldmVyYWwgcmVsZWFzZXMsIHRoaXMgdGVzdCBhY3R1YWxseQorICAgIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gd2hldGhlciBJRExFIGlzIHJ1bm5pbmcgZnJvbSBhIGZyYW1ld29yayBvcgorICAgIG5vdC4gIEFzIGEgZnV0dXJlIGVuaGFuY2VtZW50LCBpdCBzaG91bGQgYmUgY29uc2lkZXJlZCB3aGV0aGVyIHRoZXJlCisgICAgc2hvdWxkIGJlIGEgZGlmZmVyZW5jZSBiYXNlZCBvbiBmcmFtZXdvcmsgYW5kIGFueSBuZWVkZWQgWDExIGFkYXB0aW9ucworICAgIHNob3VsZCBiZSBtYWRlIGRlcGVuZGVudCBvbiBhIG5ldyBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IHRlc3RzIGZvciBYMTEuKQogICAgICIiIgogICAgIGdsb2JhbCBfYXBwYnVuZGxlCiAgICAgaWYgX2FwcGJ1bmRsZSBpcyBOb25lOgotICAgICAgICBfYXBwYnVuZGxlID0gKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJy5hcHAnIGluIHN5cy5leGVjdXRhYmxlKQorICAgICAgICBfYXBwYnVuZGxlID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCisgICAgICAgIGlmIF9hcHBidW5kbGU6CisgICAgICAgICAgICBpbXBvcnQgc3lzY29uZmlnCisgICAgICAgICAgICBfYXBwYnVuZGxlID0gYm9vbChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpKQogICAgIHJldHVybiBfYXBwYnVuZGxlCiAKIF9jYXJib25hcXVhdGsgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ycGMucHkgYi9MaWIvaWRsZWxpYi9ycGMucHkKaW5kZXggZGVmNDM5NC4uNzdjYjNhYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnBjLnB5CisrKyBiL0xpYi9pZGxlbGliL3JwYy5weQpAQCAtNDAsNiArNDAsNyBAQAogaW1wb3J0IGNvcHlyZWcKIGltcG9ydCB0eXBlcwogaW1wb3J0IG1hcnNoYWwKK2ltcG9ydCBidWlsdGlucwogCiAKIGRlZiB1bnBpY2tsZV9jb2RlKG1zKToKQEAgLTE5Niw4ICsxOTcsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKCJFUlJPUiIsICJVbnN1cHBvcnRlZCBtZXNzYWdlIHR5cGU6ICVzIiAlIGhvdykKICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CiAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgogICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJldHVybiAoIkNBTExFWEMiLCBleCkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgbXNnID0gIioqKiBJbnRlcm5hbCBFcnJvcjogcnBjLnB5OlNvY2tldElPLmxvY2FsY2FsbCgpXG5cbiJcCiAgICAgICAgICAgICAgICAgICAiIE9iamVjdDogJXMgXG4gTWV0aG9kOiAlcyBcbiBBcmdzOiAlc1xuIgpAQCAtMjU3LDYgKzI2Miw5IEBACiAgICAgICAgIGlmIGhvdyA9PSAiRVJST1IiOgogICAgICAgICAgICAgc2VsZi5kZWJ1ZygiZGVjb2RlcmVzcG9uc2U6IEludGVybmFsIEVSUk9SOiIsIHdoYXQpCiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Iod2hhdCkKKyAgICAgICAgaWYgaG93ID09ICJDQUxMRVhDIjoKKyAgICAgICAgICAgIHNlbGYuZGVidWcoImRlY29kZXJlc3BvbnNlOiBDYWxsIEV4Y2VwdGlvbjoiLCB3aGF0KQorICAgICAgICAgICAgcmFpc2Ugd2hhdAogICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihob3csIHdoYXQpCiAKICAgICBkZWYgZGVjb2RlX2ludGVycnVwdGhvb2soc2VsZik6CkBAIC01OTYsMyArNjA0LDIxIEBACiAKICMgWFhYIEtCSyAwOVNlcDAzICBXZSBuZWVkIGEgcHJvcGVyIHVuaXQgdGVzdCBmb3IgdGhpcyBtb2R1bGUuICBQcmV2aW91c2x5CiAjICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgdGVzdCBjb2RlIHdhcyByZW1vdmVkIGF0IFJldiAxLjI3IChyMzQwOTgpLgorCitkZWYgZGlzcGxheWhvb2sodmFsdWUpOgorICAgICIiIk92ZXJyaWRlIHN0YW5kYXJkIGRpc3BsYXkgaG9vayB0byB1c2Ugbm9uLWxvY2FsZSBlbmNvZGluZyIiIgorICAgIGlmIHZhbHVlIGlzIE5vbmU6CisgICAgICAgIHJldHVybgorICAgICMgU2V0ICdfJyB0byBOb25lIHRvIGF2b2lkIHJlY3Vyc2lvbgorICAgIGJ1aWx0aW5zLl8gPSBOb25lCisgICAgdGV4dCA9IHJlcHIodmFsdWUpCisgICAgdHJ5OgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHRleHQpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgIyBsZXQncyB1c2UgYXNjaWkgd2hpbGUgdXRmOC1ibXAgY29kZWMgZG9lc24ndCBwcmVzZW50CisgICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJworICAgICAgICBieXRlcyA9IHRleHQuZW5jb2RlKGVuY29kaW5nLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIHRleHQgPSBieXRlcy5kZWNvZGUoZW5jb2RpbmcsICdzdHJpY3QnKQorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKHRleHQpCisgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQorICAgIGJ1aWx0aW5zLl8gPSB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnVuLnB5IGIvTGliL2lkbGVsaWIvcnVuLnB5CmluZGV4IDUzNjU2ODAuLjk4NzJhZjQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3J1bi5weQorKysgYi9MaWIvaWRsZWxpYi9ydW4ucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBxdWV1ZQoraW1wb3J0IHRraW50ZXIKIAogZnJvbSBpZGxlbGliIGltcG9ydCBDYWxsVGlwcwogZnJvbSBpZGxlbGliIGltcG9ydCBBdXRvQ29tcGxldGUKQEAgLTM5LDYgKzQwLDE3IEBACiAgICAgICAgIHJldHVybiBzCiAgICAgd2FybmluZ3MuZm9ybWF0d2FybmluZyA9IGlkbGVfZm9ybWF0d2FybmluZ19zdWJwcm9jCiAKKwordGNsID0gdGtpbnRlci5UY2woKQorCisKK2RlZiBoYW5kbGVfdGtfZXZlbnRzKHRjbD10Y2wpOgorICAgICIiIlByb2Nlc3MgYW55IHRrIGV2ZW50cyB0aGF0IGFyZSByZWFkeSB0byBiZSBkaXNwYXRjaGVkIGlmIHRraW50ZXIKKyAgICBoYXMgYmVlbiBpbXBvcnRlZCwgYSB0Y2wgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gY3JlYXRlZCBhbmQgdGsgaGFzIGJlZW4KKyAgICBsb2FkZWQuIiIiCisgICAgdGNsLmV2YWwoInVwZGF0ZSIpCisKKwogIyBUaHJlYWQgc2hhcmVkIGdsb2JhbHM6IEVzdGFibGlzaCBhIHF1ZXVlIGJldHdlZW4gYSBzdWJ0aHJlYWQgKHdoaWNoIGhhbmRsZXMKICMgdGhlIHNvY2tldCkgYW5kIHRoZSBtYWluIHRocmVhZCAod2hpY2ggcnVucyB1c2VyIGNvZGUpLCBwbHVzIGdsb2JhbAogIyBjb21wbGV0aW9uLCBleGl0IGFuZCBpbnRlcnJ1cHRhYmxlICh0aGUgbWFpbiB0aHJlYWQpIGZsYWdzOgpAQCAtOTQsNiArMTA2LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZXEsIHJlcXVlc3QgPSBycGMucmVxdWVzdF9xdWV1ZS5nZXQoYmxvY2s9VHJ1ZSwgdGltZW91dD0wLjA1KQogICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIGhhbmRsZV90a19ldmVudHMoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBtZXRob2QsIGFyZ3MsIGt3YXJncyA9IHJlcXVlc3QKICAgICAgICAgICAgIHJldCA9IG1ldGhvZCgqYXJncywgKiprd2FyZ3MpCkBAIC0yOTUsNiArMzA4LDcgQEAKICAgICAgICAgc3lzLnN0ZGluID0gX1JQQ0lucHV0RmlsZShzZWxmLmNvbnNvbGUpCiAgICAgICAgIHN5cy5zdGRvdXQgPSBfUlBDT3V0cHV0RmlsZShzZWxmLmdldF9yZW1vdGVfcHJveHkoInN0ZG91dCIpKQogICAgICAgICBzeXMuc3RkZXJyID0gX1JQQ091dHB1dEZpbGUoc2VsZi5nZXRfcmVtb3RlX3Byb3h5KCJzdGRlcnIiKSkKKyAgICAgICAgc3lzLmRpc3BsYXlob29rID0gcnBjLmRpc3BsYXlob29rCiAgICAgICAgICMgcGFnZSBoZWxwKCkgdGV4dCB0byBzaGVsbC4KICAgICAgICAgaW1wb3J0IHB5ZG9jICMgaW1wb3J0IG11c3QgYmUgZG9uZSBoZXJlIHRvIGNhcHR1cmUgaS9vIGJpbmRpbmcKICAgICAgICAgcHlkb2MucGFnZXIgPSBweWRvYy5wbGFpbnBhZ2VyCmRpZmYgLS1naXQgYS9MaWIvaW1hcGxpYi5weSBiL0xpYi9pbWFwbGliLnB5CmluZGV4IGMwMzM0ZDguLmUxNmZiOTUgMTAwNjQ0Ci0tLSBhL0xpYi9pbWFwbGliLnB5CisrKyBiL0xpYi9pbWFwbGliLnB5CkBAIC0yMyw3ICsyMyw3IEBACiBfX3ZlcnNpb25fXyA9ICIyLjU4IgogCiBpbXBvcnQgYmluYXNjaWksIGVycm5vLCByYW5kb20sIHJlLCBzb2NrZXQsIHN1YnByb2Nlc3MsIHN5cywgdGltZSwgY2FsZW5kYXIKLQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lLCB0aW1lZGVsdGEKIHRyeToKICAgICBpbXBvcnQgc3NsCiAgICAgSEFWRV9TU0wgPSBUcnVlCkBAIC0yNDksMTUgKzI0OSw3IEBACiAKICAgICBkZWYgcmVhZChzZWxmLCBzaXplKToKICAgICAgICAgIiIiUmVhZCAnc2l6ZScgYnl0ZXMgZnJvbSByZW1vdGUuIiIiCi0gICAgICAgIGNodW5rcyA9IFtdCi0gICAgICAgIHJlYWQgPSAwCi0gICAgICAgIHdoaWxlIHJlYWQgPCBzaXplOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuZmlsZS5yZWFkKG1pbihzaXplLXJlYWQsIDQwOTYpKQotICAgICAgICAgICAgaWYgbm90IGRhdGE6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJlYWQgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBjaHVua3MuYXBwZW5kKGRhdGEpCi0gICAgICAgIHJldHVybiBiJycuam9pbihjaHVua3MpCisgICAgICAgIHJldHVybiBzZWxmLmZpbGUucmVhZChzaXplKQogCiAKICAgICBkZWYgcmVhZGxpbmUoc2VsZik6CkBAIC0xMTc3LDI1ICsxMTY5LDQwIEBACiAKICAgICAgICAgIiIiSU1BUDQgY2xpZW50IGNsYXNzIG92ZXIgU1NMIGNvbm5lY3Rpb24KIAotICAgICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9TU0woW2hvc3RbLCBwb3J0Wywga2V5ZmlsZVssIGNlcnRmaWxlXV1dXSkKKyAgICAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDRfU1NMKFtob3N0WywgcG9ydFssIGtleWZpbGVbLCBjZXJ0ZmlsZVssIHNzbF9jb250ZXh0XV1dXV0pCiAKICAgICAgICAgICAgICAgICBob3N0IC0gaG9zdCdzIG5hbWUgKGRlZmF1bHQ6IGxvY2FsaG9zdCk7Ci0gICAgICAgICAgICAgICAgcG9ydCAtIHBvcnQgbnVtYmVyIChkZWZhdWx0OiBzdGFuZGFyZCBJTUFQNCBTU0wgcG9ydCkuCisgICAgICAgICAgICAgICAgcG9ydCAtIHBvcnQgbnVtYmVyIChkZWZhdWx0OiBzdGFuZGFyZCBJTUFQNCBTU0wgcG9ydCk7CiAgICAgICAgICAgICAgICAga2V5ZmlsZSAtIFBFTSBmb3JtYXR0ZWQgZmlsZSB0aGF0IGNvbnRhaW5zIHlvdXIgcHJpdmF0ZSBrZXkgKGRlZmF1bHQ6IE5vbmUpOwogICAgICAgICAgICAgICAgIGNlcnRmaWxlIC0gUEVNIGZvcm1hdHRlZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIChkZWZhdWx0OiBOb25lKTsKKyAgICAgICAgICAgICAgICBzc2xfY29udGV4dCAtIGEgU1NMQ29udGV4dCBvYmplY3QgdGhhdCBjb250YWlucyB5b3VyIGNlcnRpZmljYXRlIGNoYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcHJpdmF0ZSBrZXkgKGRlZmF1bHQ6IE5vbmUpCisgICAgICAgICAgICAgICAgTm90ZTogaWYgc3NsX2NvbnRleHQgaXMgcHJvdmlkZWQsIHRoZW4gcGFyYW1ldGVycyBrZXlmaWxlIG9yCisgICAgICAgICAgICAgICAgY2VydGZpbGUgc2hvdWxkIG5vdCBiZSBzZXQgb3RoZXJ3aXNlIFZhbHVlRXJyb3IgaXMgdGhyb3duLgogCiAgICAgICAgIGZvciBtb3JlIGRvY3VtZW50YXRpb24gc2VlIHRoZSBkb2NzdHJpbmcgb2YgdGhlIHBhcmVudCBjbGFzcyBJTUFQNC4KICAgICAgICAgIiIiCiAKIAotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCA9ICcnLCBwb3J0ID0gSU1BUDRfU1NMX1BPUlQsIGtleWZpbGUgPSBOb25lLCBjZXJ0ZmlsZSA9IE5vbmUpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBzc2xfY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQorICAgICAgICAgICAgc2VsZi5zc2xfY29udGV4dCA9IHNzbF9jb250ZXh0CiAgICAgICAgICAgICBJTUFQNC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0KQogCiAgICAgICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmKToKICAgICAgICAgICAgIHNvY2sgPSBJTUFQNC5fY3JlYXRlX3NvY2tldChzZWxmKQotICAgICAgICAgICAgcmV0dXJuIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCisgICAgICAgICAgICBpZiBzZWxmLnNzbF9jb250ZXh0OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNzbF9jb250ZXh0LndyYXBfc29ja2V0KHNvY2spCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzc2wud3JhcF9zb2NrZXQoc29jaywgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQogCiAgICAgICAgIGRlZiBvcGVuKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQpOgogICAgICAgICAgICAgIiIiU2V0dXAgY29ubmVjdGlvbiB0byByZW1vdGUgc2VydmVyIG9uICJob3N0OnBvcnQiLgpAQCAtMTMwNiwxMCArMTMxMyw4IEBACiAgICAgICAgICAgICByZXR1cm4gJycKICAgICAgICAgcmV0dXJuIGJpbmFzY2lpLmEyYl9iYXNlNjQoaW5wKQogCi0KLQotTW9uMm51bSA9IHtiJ0phbic6IDEsIGInRmViJzogMiwgYidNYXInOiAzLCBiJ0Fwcic6IDQsIGInTWF5JzogNSwgYidKdW4nOiA2LAotICAgICAgICAgICBiJ0p1bCc6IDcsIGInQXVnJzogOCwgYidTZXAnOiA5LCBiJ09jdCc6IDEwLCBiJ05vdic6IDExLCBiJ0RlYyc6IDEyfQorTW9udGhzID0gJyBKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYycuc3BsaXQoJyAnKQorTW9uMm51bSA9IHtzLmVuY29kZSgpOm4rMSBmb3IgbiwgcyBpbiBlbnVtZXJhdGUoTW9udGhzWzE6XSl9CiAKIGRlZiBJbnRlcm5hbGRhdGUydHVwbGUocmVzcCk6CiAgICAgIiIiUGFyc2UgYW4gSU1BUDQgSU5URVJOQUxEQVRFIHN0cmluZy4KQEAgLTEzNzcsMjggKzEzODIsMzcgQEAKICAgICBSZXR1cm4gc3RyaW5nIGluIGZvcm06ICciREQtTW1tLVlZWVkgSEg6TU06U1MgK0hITU0iJy4gIFRoZQogICAgIGRhdGVfdGltZSBhcmd1bWVudCBjYW4gYmUgYSBudW1iZXIgKGludCBvciBmbG9hdCkgcmVwcmVzZW50aW5nCiAgICAgc2Vjb25kcyBzaW5jZSBlcG9jaCAoYXMgcmV0dXJuZWQgYnkgdGltZS50aW1lKCkpLCBhIDktdHVwbGUKLSAgICByZXByZXNlbnRpbmcgbG9jYWwgdGltZSAoYXMgcmV0dXJuZWQgYnkgdGltZS5sb2NhbHRpbWUoKSksIG9yIGEKKyAgICByZXByZXNlbnRpbmcgbG9jYWwgdGltZSwgYW4gaW5zdGFuY2Ugb2YgdGltZS5zdHJ1Y3RfdGltZSAoYXMKKyAgICByZXR1cm5lZCBieSB0aW1lLmxvY2FsdGltZSgpKSwgYW4gYXdhcmUgZGF0ZXRpbWUgaW5zdGFuY2Ugb3IgYQogICAgIGRvdWJsZS1xdW90ZWQgc3RyaW5nLiAgSW4gdGhlIGxhc3QgY2FzZSwgaXQgaXMgYXNzdW1lZCB0byBhbHJlYWR5CiAgICAgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgogICAgICIiIgotCiAgICAgaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIChpbnQsIGZsb2F0KSk6Ci0gICAgICAgIHR0ID0gdGltZS5sb2NhbHRpbWUoZGF0ZV90aW1lKQotICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsICh0dXBsZSwgdGltZS5zdHJ1Y3RfdGltZSkpOgotICAgICAgICB0dCA9IGRhdGVfdGltZQorICAgICAgICBkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoZGF0ZV90aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUudXRjKS5hc3RpbWV6b25lKCkKKyAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCB0dXBsZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdtdG9mZiA9IGRhdGVfdGltZS50bV9nbXRvZmYKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgaWYgdGltZS5kYXlsaWdodDoKKyAgICAgICAgICAgICAgICBkc3QgPSBkYXRlX3RpbWVbOF0KKyAgICAgICAgICAgICAgICBpZiBkc3QgPT0gLTE6CisgICAgICAgICAgICAgICAgICAgIGRzdCA9IHRpbWUubG9jYWx0aW1lKHRpbWUubWt0aW1lKGRhdGVfdGltZSkpWzhdCisgICAgICAgICAgICAgICAgZ210b2ZmID0gLSh0aW1lLnRpbWV6b25lLCB0aW1lLmFsdHpvbmUpW2RzdF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZ210b2ZmID0gLXRpbWUudGltZXpvbmUKKyAgICAgICAgZGVsdGEgPSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoKmRhdGVfdGltZVs6Nl0sIHR6aW5mbz10aW1lem9uZShkZWx0YSkpCisgICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgZGF0ZXRpbWUpOgorICAgICAgICBpZiBkYXRlX3RpbWUudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkYXRlX3RpbWUgbXVzdCBiZSBhd2FyZSIpCisgICAgICAgIGR0ID0gZGF0ZV90aW1lCiAgICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgc3RyKSBhbmQgKGRhdGVfdGltZVswXSxkYXRlX3RpbWVbLTFdKSA9PSAoJyInLCciJyk6CiAgICAgICAgIHJldHVybiBkYXRlX3RpbWUgICAgICAgICMgQXNzdW1lIGluIGNvcnJlY3QgZm9ybWF0CiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGF0ZV90aW1lIG5vdCBvZiBhIGtub3duIHR5cGUiKQotCi0gICAgZHQgPSB0aW1lLnN0cmZ0aW1lKCIlZC0lYi0lWSAlSDolTTolUyIsIHR0KQotICAgIGlmIGR0WzBdID09ICcwJzoKLSAgICAgICAgZHQgPSAnICcgKyBkdFsxOl0KLSAgICBpZiB0aW1lLmRheWxpZ2h0IGFuZCB0dFstMV06Ci0gICAgICAgIHpvbmUgPSAtdGltZS5hbHR6b25lCi0gICAgZWxzZToKLSAgICAgICAgem9uZSA9IC10aW1lLnRpbWV6b25lCi0gICAgcmV0dXJuICciJyArIGR0ICsgIiAlKzAzZCUwMmQiICUgZGl2bW9kKHpvbmUvLzYwLCA2MCkgKyAnIicKKyAgICBmbXQgPSAnIiVkLXt9LSVZICVIOiVNOiVTICV6IicuZm9ybWF0KE1vbnRoc1tkdC5tb250aF0pCisgICAgcmV0dXJuIGR0LnN0cmZ0aW1lKGZtdCkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXAucHkgYi9MaWIvaW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOWM4NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaW1wLnB5CkBAIC0wLDAgKzEsMjU3IEBACisiIiJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd24gX19pbXBvcnRfXworZnVuY3Rpb24uICBVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIGFyZSBvYnNvbGV0ZS4KKworSW4gbW9zdCBjYXNlcyBpdCBpcyBwcmVmZXJyZWQgeW91IGNvbnNpZGVyIHVzaW5nIHRoZSBpbXBvcnRsaWIgbW9kdWxlJ3MKK2Z1bmN0aW9uYWxpdHkgb3ZlciB0aGlzIG1vZHVsZS4KKworIiIiCisjIChQcm9iYWJseSkgbmVlZCB0byBzdGF5IGluIF9pbXAKK2Zyb20gX2ltcCBpbXBvcnQgKGxvY2tfaGVsZCwgYWNxdWlyZV9sb2NrLCByZWxlYXNlX2xvY2ssCisgICAgICAgICAgICAgICAgICBsb2FkX2R5bmFtaWMsIGdldF9mcm96ZW5fb2JqZWN0LCBpc19mcm96ZW5fcGFja2FnZSwKKyAgICAgICAgICAgICAgICAgIGluaXRfYnVpbHRpbiwgaW5pdF9mcm96ZW4sIGlzX2J1aWx0aW4sIGlzX2Zyb3plbiwKKyAgICAgICAgICAgICAgICAgIF9maXhfY29fZmlsZW5hbWUpCisKKyMgRGlyZWN0bHkgZXhwb3NlZCBieSB0aGlzIG1vZHVsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgbmV3X21vZHVsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgY2FjaGVfZnJvbV9zb3VyY2UsIHNvdXJjZV9mcm9tX2NhY2hlCisKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRva2VuaXplCitpbXBvcnQgd2FybmluZ3MKKworCisjIERFUFJFQ0FURUQKK1NFQVJDSF9FUlJPUiA9IDAKK1BZX1NPVVJDRSA9IDEKK1BZX0NPTVBJTEVEID0gMgorQ19FWFRFTlNJT04gPSAzCitQWV9SRVNPVVJDRSA9IDQKK1BLR19ESVJFQ1RPUlkgPSA1CitDX0JVSUxUSU4gPSA2CitQWV9GUk9aRU4gPSA3CitQWV9DT0RFUkVTT1VSQ0UgPSA4CitJTVBfSE9PSyA9IDkKKworCitkZWYgZ2V0X21hZ2ljKCk6CisgICAgIiIiUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKKyAgICByZXR1cm4gX2Jvb3RzdHJhcC5fTUFHSUNfQllURVMKKworCitkZWYgZ2V0X3RhZygpOgorICAgICIiIlJldHVybiB0aGUgbWFnaWMgdGFnIGZvciAucHljIG9yIC5weW8gZmlsZXMuIiIiCisgICAgcmV0dXJuIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKworCitkZWYgZ2V0X3N1ZmZpeGVzKCk6CisgICAgd2FybmluZ3Mud2FybignaW1wLmdldF9zdWZmaXhlcygpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgY29uc3RhbnRzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkIG9uIGltcG9ydGxpYi5tYWNoaW5lcnkgaW5zdGVhZCcsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgZXh0ZW5zaW9ucyA9IFsocywgJ3JiJywgQ19FWFRFTlNJT04pIGZvciBzIGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNdCisgICAgc291cmNlID0gWyhzLCAnVScsIFBZX1NPVVJDRSkgZm9yIHMgaW4gbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU10KKyAgICBieXRlY29kZSA9IFsocywgJ3JiJywgUFlfQ09NUElMRUQpIGZvciBzIGluIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU10KKworICAgIHJldHVybiBleHRlbnNpb25zICsgc291cmNlICsgYnl0ZWNvZGUKKworCitjbGFzcyBOdWxsSW1wb3J0ZXI6CisKKyAgICAiIiJOdWxsIGltcG9ydCBvYmplY3QuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgIGlmIHBhdGggPT0gJyc6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignZW1wdHkgcGF0aG5hbWUnLCBwYXRoPScnKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignZXhpc3RpbmcgZGlyZWN0b3J5JywgcGF0aD1wYXRoKQorCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiQWx3YXlzIHJldHVybnMgTm9uZS4iIiIKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBfSGFja2VkR2V0RGF0YToKKworICAgICIiIkNvbXBhdGliaWlsdHkgc3VwcG9ydCBmb3IgJ2ZpbGUnIGFyZ3VtZW50cyBvZiB2YXJpb3VzIGxvYWRfKigpCisgICAgZnVuY3Rpb25zLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bGxuYW1lLCBwYXRoLCBmaWxlPU5vbmUpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGZ1bGxuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCisKKyAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIkdyb3NzIGhhY2sgdG8gY29udG9ydCBsb2FkZXIgdG8gZGVhbCB3LyBsb2FkXyooKSdzIGJhZCBBUEkuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgcGF0aCA9PSBzZWxmLnBhdGg6CisgICAgICAgICAgICB3aXRoIHNlbGYuZmlsZToKKyAgICAgICAgICAgICAgICAjIFRlY2huaWNhbGx5IHNob3VsZCBiZSByZXR1cm5pbmcgYnl0ZXMsIGJ1dAorICAgICAgICAgICAgICAgICMgU291cmNlTG9hZGVyLmdldF9jb2RlKCkganVzdCBwYXNzZWQgd2hhdCBpcyByZXR1cm5lZCB0bworICAgICAgICAgICAgICAgICMgY29tcGlsZSgpIHdoaWNoIGNhbiBoYW5kbGUgc3RyLiBBbmQgY29udmVydGluZyB0byBieXRlcyB3b3VsZAorICAgICAgICAgICAgICAgICMgcmVxdWlyZSBmaWd1cmluZyBvdXQgdGhlIGVuY29kaW5nIHRvIGRlY29kZSB0byBhbmQKKyAgICAgICAgICAgICAgICAjIHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIG9ubHkgYWNjZXB0cyBieXRlcy4KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlLnJlYWQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2RhdGEocGF0aCkKKworCitjbGFzcyBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsIF9ib290c3RyYXAuU291cmNlRmlsZUxvYWRlcik6CisKKyAgICAiIiJDb21wYXRpYmlsaXR5IHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBsb2FkX3NvdXJjZSgpLiIiIgorCisKK2RlZiBsb2FkX3NvdXJjZShuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKKyAgICBtc2cgPSAoJ2ltcC5sb2FkX3NvdXJjZSgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpLmxvYWRfbW9kdWxlKCknCisgICAgICAgICAgICcgaW5zdGVhZCcpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gX0xvYWRTb3VyY2VDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKS5sb2FkX21vZHVsZShuYW1lKQorCisKK2NsYXNzIF9Mb2FkQ29tcGlsZWRDb21wYXRpYmlsaXR5KF9IYWNrZWRHZXREYXRhLAorICAgICAgICBfYm9vdHN0cmFwLlNvdXJjZWxlc3NGaWxlTG9hZGVyKToKKworICAgICIiIkNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgaW1wbGVtZW50aW5nIGxvYWRfY29tcGlsZWQoKS4iIiIKKworCitkZWYgbG9hZF9jb21waWxlZChuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKKyAgICBtc2cgPSAoJ2ltcC5sb2FkX2NvbXBpbGVkKCkgaXMgZGVwcmVjYXRlZDsgdXNlICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpLicKKyAgICAgICAgICAgJ2xvYWRfbW9kdWxlKCkgaW5zdGVhZCAnKQorICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgcmV0dXJuIF9Mb2FkQ29tcGlsZWRDb21wYXRpYmlsaXR5KG5hbWUsIHBhdGhuYW1lLCBmaWxlKS5sb2FkX21vZHVsZShuYW1lKQorCisKK2RlZiBsb2FkX3BhY2thZ2UobmFtZSwgcGF0aCk6CisgICAgbXNnID0gKCdpbXAubG9hZF9wYWNrYWdlKCkgaXMgZGVwcmVjYXRlZDsgdXNlIGVpdGhlciAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoKSBvciAnCisgICAgICAgICAgICdpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKCkgaW5zdGVhZCcpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICBleHRlbnNpb25zID0gKG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0gKworICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XSkKKyAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBleHRlbnNpb25zOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAnX19pbml0X18nK2V4dGVuc2lvbikKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnLmZvcm1hdChwYXRoKSkKKyAgICByZXR1cm4gX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpLmxvYWRfbW9kdWxlKG5hbWUpCisKKworZGVmIGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBkZXRhaWxzKToKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgTG9hZCBhIG1vZHVsZSwgZ2l2ZW4gaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgZmluZF9tb2R1bGUoKS4KKworICAgIFRoZSBtb2R1bGUgbmFtZSBtdXN0IGluY2x1ZGUgdGhlIGZ1bGwgcGFja2FnZSBuYW1lLCBpZiBhbnkuCisKKyAgICAiIiIKKyAgICBzdWZmaXgsIG1vZGUsIHR5cGVfID0gZGV0YWlscworICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICBpZiBtb2RlIGFuZCAobm90IG1vZGUuc3RhcnRzd2l0aCgoJ3InLCAnVScpKSBvciAnKycgaW4gbW9kZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdpbnZhbGlkIGZpbGUgb3BlbiBtb2RlIHshcn0nLmZvcm1hdChtb2RlKSkKKyAgICAgICAgZWxpZiBmaWxlIGlzIE5vbmUgYW5kIHR5cGVfIGluIHtQWV9TT1VSQ0UsIFBZX0NPTVBJTEVELCBDX0VYVEVOU0lPTn06CisgICAgICAgICAgICBtc2cgPSAnZmlsZSBvYmplY3QgcmVxdWlyZWQgZm9yIGltcG9ydCAodHlwZSBjb2RlIHt9KScuZm9ybWF0KHR5cGVfKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfU09VUkNFOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfc291cmNlKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IFBZX0NPTVBJTEVEOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRfY29tcGlsZWQobmFtZSwgZmlsZW5hbWUsIGZpbGUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gQ19FWFRFTlNJT046CisgICAgICAgICAgICByZXR1cm4gbG9hZF9keW5hbWljKG5hbWUsIGZpbGVuYW1lLCBmaWxlKQorICAgICAgICBlbGlmIHR5cGVfID09IFBLR19ESVJFQ1RPUlk6CisgICAgICAgICAgICByZXR1cm4gbG9hZF9wYWNrYWdlKG5hbWUsIGZpbGVuYW1lKQorICAgICAgICBlbGlmIHR5cGVfID09IENfQlVJTFRJTjoKKyAgICAgICAgICAgIHJldHVybiBpbml0X2J1aWx0aW4obmFtZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9GUk9aRU46CisgICAgICAgICAgICByZXR1cm4gaW5pdF9mcm96ZW4obmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0IHt9ICh0eXBlIGNvZGUge30pIi5mb3JtYXQobmFtZSwgdHlwZV8pCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKworCitkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKKyAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgU2VhcmNoIGZvciBhIG1vZHVsZS4KKworICAgIElmIHBhdGggaXMgb21pdHRlZCBvciBOb25lLCBzZWFyY2ggZm9yIGEgYnVpbHQtaW4sIGZyb3plbiBvciBzcGVjaWFsCisgICAgbW9kdWxlIGFuZCBjb250aW51ZSBzZWFyY2ggaW4gc3lzLnBhdGguIFRoZSBtb2R1bGUgbmFtZSBjYW5ub3QKKyAgICBjb250YWluICcuJzsgdG8gc2VhcmNoIGZvciBhIHN1Ym1vZHVsZSBvZiBhIHBhY2thZ2UsIHBhc3MgdGhlCisgICAgc3VibW9kdWxlIG5hbWUgYW5kIHRoZSBwYWNrYWdlJ3MgX19wYXRoX18uCisKKyAgICAiIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiduYW1lJyBtdXN0IGJlIGEgc3RyLCBub3Qge30iLmZvcm1hdCh0eXBlKG5hbWUpKSkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHBhdGgsICh0eXBlKE5vbmUpLCBsaXN0KSk6CisgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCInbGlzdCcgbXVzdCBiZSBOb25lIG9yIGEgbGlzdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQorCisgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICBpZiBpc19idWlsdGluKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsICgnJywgJycsIENfQlVJTFRJTikKKyAgICAgICAgZWxpZiBpc19mcm96ZW4obmFtZSk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgKCcnLCAnJywgUFlfRlJPWkVOKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCisKKyAgICBmb3IgZW50cnkgaW4gcGF0aDoKKyAgICAgICAgcGFja2FnZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oZW50cnksIG5hbWUpCisgICAgICAgIGZvciBzdWZmaXggaW4gWycucHknLCBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbMF1dOgorICAgICAgICAgICAgcGFja2FnZV9maWxlX25hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4ocGFja2FnZV9kaXJlY3RvcnksIHBhY2thZ2VfZmlsZV9uYW1lKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZV9wYXRoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgcGFja2FnZV9kaXJlY3RvcnksICgnJywgJycsIFBLR19ESVJFQ1RPUlkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIHR5cGVfIGluIGdldF9zdWZmaXhlcygpOgorICAgICAgICAgICAgICAgIGZpbGVfbmFtZSA9IG5hbWUgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oZW50cnksIGZpbGVfbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYnJlYWsgICMgQnJlYWsgb3V0IG9mIG91dGVyIGxvb3Agd2hlbiBicmVha2luZyBvdXQgb2YgaW5uZXIgbG9vcC4KKyAgICBlbHNlOgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfYm9vdHN0cmFwLl9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorCisgICAgZW5jb2RpbmcgPSBOb25lCisgICAgaWYgbW9kZSA9PSAnVSc6CisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhmaWxlLnJlYWRsaW5lKVswXQorICAgIGZpbGUgPSBvcGVuKGZpbGVfcGF0aCwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgcmV0dXJuIGZpbGUsIGZpbGVfcGF0aCwgKHN1ZmZpeCwgbW9kZSwgdHlwZV8pCisKKworX1JFTE9BRElORyA9IHt9CisKK2RlZiByZWxvYWQobW9kdWxlKToKKyAgICAiIiJSZWxvYWQgdGhlIG1vZHVsZSBhbmQgcmV0dXJuIGl0LgorCisgICAgVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLgorCisgICAgIiIiCisgICAgaWYgbm90IG1vZHVsZSBvciB0eXBlKG1vZHVsZSkgIT0gdHlwZShzeXMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoInJlbG9hZCgpIGFyZ3VtZW50IG11c3QgYmUgbW9kdWxlIikKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgaWYgbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgIG1zZyA9ICJtb2R1bGUge30gbm90IGluIHN5cy5tb2R1bGVzIgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgaWYgbmFtZSBpbiBfUkVMT0FESU5HOgorICAgICAgICByZXR1cm4gX1JFTE9BRElOR1tuYW1lXQorICAgIF9SRUxPQURJTkdbbmFtZV0gPSBtb2R1bGUKKyAgICB0cnk6CisgICAgICAgIHBhcmVudF9uYW1lID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgaWYgcGFyZW50X25hbWUgYW5kIHBhcmVudF9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG1zZyA9ICJwYXJlbnQgeyFyfSBub3QgaW4gc3lzLm1vZHVsZXMiCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KHBhcmVudG5hbWUpLCBuYW1lPXBhcmVudF9uYW1lKQorICAgICAgICByZXR1cm4gbW9kdWxlLl9fbG9hZGVyX18ubG9hZF9tb2R1bGUobmFtZSkKKyAgICBmaW5hbGx5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgX1JFTE9BRElOR1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQppbmRleCAyYmFhZjkzLi42ZjQwZGFjIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTEsMTEwICsxLDc0IEBACi0iIiJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4KLQotUmVmZXJlbmNlcyBvbiBpbXBvcnQ6Ci0KLSAgICAqIExhbmd1YWdlIHJlZmVyZW5jZQotICAgICAgICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvcmVmL2ltcG9ydC5odG1sCi0gICAgKiBfX2ltcG9ydF9fIGZ1bmN0aW9uCi0gICAgICAgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWIvYnVpbHQtaW4tZnVuY3MuaHRtbAotICAgICogUGFja2FnZXMKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG9jL2Vzc2F5cy9wYWNrYWdlcy5odG1sCi0gICAgKiBQRVAgMjM1OiBJbXBvcnQgb24gQ2FzZS1JbnNlbnNpdGl2ZSBQbGF0Zm9ybXMKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyMzUKLSAgICAqIFBFUCAyNzU6IEltcG9ydCBNb2R1bGVzIGZyb20gWmlwIEFyY2hpdmVzCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjczCi0gICAgKiBQRVAgMzAyOiBOZXcgSW1wb3J0IEhvb2tzCi0gICAgICAgICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzAyLwotICAgICogUEVQIDMyODogSW1wb3J0czogTXVsdGktbGluZSBhbmQgQWJzb2x1dGUvUmVsYXRpdmUKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMjgKLQotIiIiCi1fX2FsbF9fID0gWydfX2ltcG9ydF9fJywgJ2ltcG9ydF9tb2R1bGUnXQotCi1mcm9tIC4gaW1wb3J0IF9ib290c3RyYXAKLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCB0b2tlbml6ZQorIiIiQSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCitfX2FsbF9fID0gWydfX2ltcG9ydF9fJywgJ2ltcG9ydF9tb2R1bGUnLCAnaW52YWxpZGF0ZV9jYWNoZXMnXQogCiAjIEJvb3RzdHJhcCBoZWxwICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWRlZiBfY2FzZV9vayhkaXJlY3RvcnksIGNoZWNrKToKLSAgICAiIiJDaGVjayBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIHNvbWV0aGluZyBtYXRjaGluZyAnY2hlY2snLgorIyBVbnRpbCBib290c3RyYXBwaW5nIGlzIGNvbXBsZXRlLCBETyBOT1QgaW1wb3J0IGFueSBtb2R1bGVzIHRoYXQgYXR0ZW1wdAorIyB0byBpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpLiBTaW5jZSB0aGlzCisjIHBhcnRpYWxseSBpbml0aWFsaXNlZCBwYWNrYWdlIHdvdWxkIGJlIHByZXNlbnQgaW4gc3lzLm1vZHVsZXMsIHRob3NlCisjIG1vZHVsZXMgd291bGQgZ2V0IGFuIHVuaW5pdGlhbGlzZWQgY29weSBvZiB0aGUgc291cmNlIHZlcnNpb24sIGluc3RlYWQKKyMgb2YgYSBmdWxseSBpbml0aWFsaXNlZCB2ZXJzaW9uIChlaXRoZXIgdGhlIGZyb3plbiBvbmUgb3IgdGhlIG9uZQorIyBpbml0aWFsaXNlZCBiZWxvdyBpZiB0aGUgZnJvemVuIG9uZSBpcyBub3QgYXZhaWxhYmxlKS4KK2ltcG9ydCBfaW1wICAjIEp1c3QgdGhlIGJ1aWx0aW4gY29tcG9uZW50LCBOT1QgdGhlIGZ1bGwgUHl0aG9uIG1vZHVsZQoraW1wb3J0IHN5cwogCi0gICAgTm8gY2hlY2sgaXMgZG9uZSBpZiB0aGUgZmlsZS9kaXJlY3RvcnkgZXhpc3RzIG9yIG5vdC4KLQotICAgICIiIgotICAgIGlmICdQWVRIT05DQVNFT0snIGluIG9zLmVudmlyb246Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgZWxpZiBjaGVjayBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSBpZiBkaXJlY3RvcnkgZWxzZSBvcy5nZXRjd2QoKSk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF93X2xvbmcoeCk6Ci0gICAgIiIiQ29udmVydCBhIDMyLWJpdCBpbnRlZ2VyIHRvIGxpdHRsZS1lbmRpYW4uCi0KLSAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZC4KLQotICAgICIiIgotICAgIHggPSBpbnQoeCkKLSAgICBpbnRfYnl0ZXMgPSBbXQotICAgIGludF9ieXRlcy5hcHBlbmQoeCAmIDB4RkYpCi0gICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiA4KSAmIDB4RkYpCi0gICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAxNikgJiAweEZGKQotICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMjQpICYgMHhGRikKLSAgICByZXR1cm4gYnl0ZWFycmF5KGludF9ieXRlcykKLQotCi1kZWYgX3JfbG9uZyhpbnRfYnl0ZXMpOgotICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuCi0KLSAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9uIGFyZSBleHBvc2VkLgotCi0gICAgIiIiCi0gICAgeCA9IGludF9ieXRlc1swXQotICAgIHggfD0gaW50X2J5dGVzWzFdIDw8IDgKLSAgICB4IHw9IGludF9ieXRlc1syXSA8PCAxNgotICAgIHggfD0gaW50X2J5dGVzWzNdIDw8IDI0Ci0gICAgcmV0dXJuIHgKLQotCi0jIFJlcXVpcmVkIGJ1aWx0LWluIG1vZHVsZXMuCiB0cnk6Ci0gICAgaW1wb3J0IHBvc2l4IGFzIF9vcworICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYiBhcyBfYm9vdHN0cmFwCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgbnQgYXMgX29zCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgb3MyIGFzIF9vcwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigncG9zaXgsIG50LCBvciBvczIgbW9kdWxlIHJlcXVpcmVkIGZvciBpbXBvcnRsaWInKQotX2Jvb3RzdHJhcC5fb3MgPSBfb3MKLWltcG9ydCBpbXAsIHN5cywgbWFyc2hhbCwgZXJybm8sIF9pbwotX2Jvb3RzdHJhcC5pbXAgPSBpbXAKLV9ib290c3RyYXAuc3lzID0gc3lzCi1fYm9vdHN0cmFwLm1hcnNoYWwgPSBtYXJzaGFsCi1fYm9vdHN0cmFwLmVycm5vID0gZXJybm8KLV9ib290c3RyYXAuX2lvID0gX2lvCi1pbXBvcnQgX3dhcm5pbmdzCi1fYm9vdHN0cmFwLl93YXJuaW5ncyA9IF93YXJuaW5ncworICAgIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAorICAgIF9ib290c3RyYXAuX3NldHVwKHN5cywgX2ltcCkKK2Vsc2U6CisgICAgIyBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpcyB0aGUgYnVpbHQtaW4gaW1wb3J0LCBlbnN1cmUgd2UgZG9uJ3QgY3JlYXRlCisgICAgIyBhIHNlY29uZCBjb3B5IG9mIHRoZSBtb2R1bGUuCisgICAgX2Jvb3RzdHJhcC5fX25hbWVfXyA9ICdpbXBvcnRsaWIuX2Jvb3RzdHJhcCcKKyAgICBfYm9vdHN0cmFwLl9fcGFja2FnZV9fID0gJ2ltcG9ydGxpYicKKyAgICBfYm9vdHN0cmFwLl9fZmlsZV9fID0gX19maWxlX18ucmVwbGFjZSgnX19pbml0X18ucHknLCAnX2Jvb3RzdHJhcC5weScpCisgICAgc3lzLm1vZHVsZXNbJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJ10gPSBfYm9vdHN0cmFwCiAKKyMgVG8gc2ltcGxpZnkgaW1wb3J0cyBpbiB0ZXN0IGNvZGUKK193X2xvbmcgPSBfYm9vdHN0cmFwLl93X2xvbmcKK19yX2xvbmcgPSBfYm9vdHN0cmFwLl9yX2xvbmcKIAotZnJvbSBvcyBpbXBvcnQgc2VwCi0jIEZvciBvcy5wYXRoLmpvaW4gcmVwbGFjZW1lbnQ7IHB1bGwgZnJvbSBJbmNsdWRlL29zZGVmcy5oOlNFUCAuCi1fYm9vdHN0cmFwLnBhdGhfc2VwID0gc2VwCi0KLV9ib290c3RyYXAuX2Nhc2Vfb2sgPSBfY2FzZV9vawotbWFyc2hhbC5fd19sb25nID0gX3dfbG9uZwotbWFyc2hhbC5fcl9sb25nID0gX3JfbG9uZwotCisjIEZ1bGx5IGJvb3RzdHJhcHBlZCBhdCB0aGlzIHBvaW50LCBpbXBvcnQgd2hhdGV2ZXIgeW91IGxpa2UsIGNpcmN1bGFyCisjIGRlcGVuZGVuY2llcyBhbmQgc3RhcnR1cCBvdmVyaGVhZCBtaW5pbWlzYXRpb24gcGVybWl0dGluZyA6KQogCiAjIFB1YmxpYyBBUEkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IF9faW1wb3J0X18KIAogCitkZWYgaW52YWxpZGF0ZV9jYWNoZXMoKToKKyAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgbWV0YSBwYXRoIGZpbmRlcnMgc3RvcmVkIGluCisgICAgc3lzLm1ldGFfcGF0aCAod2hlcmUgaW1wbGVtZW50ZWQpLiIiIgorICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdpbnZhbGlkYXRlX2NhY2hlcycpOgorICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworCitkZWYgZmluZF9sb2FkZXIobmFtZSwgcGF0aD1Ob25lKToKKyAgICAiIiJGaW5kIHRoZSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgorCisgICAgRmlyc3QsIHN5cy5tb2R1bGVzIGlzIGNoZWNrZWQgdG8gc2VlIGlmIHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW1wb3J0ZWQuIElmCisgICAgc28sIHRoZW4gc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXyBpcyByZXR1cm5lZC4gSWYgdGhhdCBoYXBwZW5zIHRvIGJlCisgICAgc2V0IHRvIE5vbmUsIHRoZW4gVmFsdWVFcnJvciBpcyByYWlzZWQuIElmIHRoZSBtb2R1bGUgaXMgbm90IGluCisgICAgc3lzLm1vZHVsZXMsIHRoZW4gc3lzLm1ldGFfcGF0aCBpcyBzZWFyY2hlZCBmb3IgYSBzdWl0YWJsZSBsb2FkZXIgd2l0aCB0aGUKKyAgICB2YWx1ZSBvZiAncGF0aCcgZ2l2ZW4gdG8gdGhlIGZpbmRlcnMuIE5vbmUgaXMgcmV0dXJuZWQgaWYgbm8gbG9hZGVyIGNvdWxkCisgICAgYmUgZm91bmQuCisKKyAgICBEb3R0ZWQgbmFtZXMgZG8gbm90IGhhdmUgdGhlaXIgcGFyZW50IHBhY2thZ2VzIGltcGxpY2l0bHkgaW1wb3J0ZWQuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGxvYWRlciA9IHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX2xvYWRlcl9fIGlzIE5vbmUnLmZvcm1hdChuYW1lKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICByZXR1cm4gX2Jvb3RzdHJhcC5fZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKworCiBkZWYgaW1wb3J0X21vZHVsZShuYW1lLCBwYWNrYWdlPU5vbmUpOgogICAgICIiIkltcG9ydCBhIG1vZHVsZS4KIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CmluZGV4IDkwZWIxYTcuLjk4MzYxYTcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKQEAgLTYsMzMgKzYsOTMgQEAKIHdvcmsuIE9uZSBzaG91bGQgdXNlIGltcG9ydGxpYiBhcyB0aGUgcHVibGljLWZhY2luZyB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLgogCiAiIiIKLQotIyBJbmplY3RlZCBtb2R1bGVzIGFyZSAnX3dhcm5pbmdzJywgJ2ltcCcsICdzeXMnLCAnbWFyc2hhbCcsICdlcnJubycsICdfaW8nLAotIyBhbmQgJ19vcycgKGEuay5hLiAncG9zaXgnLCAnbnQnIG9yICdvczInKS4KLSMgSW5qZWN0ZWQgYXR0cmlidXRlIGlzIHBhdGhfc2VwLgogIworIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1bgorIyBhIHRvcC1sZXZlbCBtYWtlIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24gb2YgdGhlIG1vZHVsZQorIyB1cGRhdGUuIE5vdCBkb2luZyBzbywgd2lsbCByZXN1bHQgaW4gdGhlIE1ha2VmaWxlIHRvIGZhaWwgZm9yCisjIGFsbCBvdGhlcnMgd2hvIGRvbid0IGhhdmUgYSAuL3B5dGhvbiBhcm91bmQgdG8gZnJlZXplIHRoZSBtb2R1bGUKKyMgaW4gdGhlIGVhcmx5IHN0YWdlcyBvZiBjb21waWxhdGlvbi4KKyMKKworIyBTZWUgaW1wb3J0bGliLl9zZXR1cCgpIGZvciB3aGF0IGlzIGluamVjdGVkIGludG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCisKICMgV2hlbiBlZGl0aW5nIHRoaXMgY29kZSBiZSBhd2FyZSB0aGF0IGNvZGUgZXhlY3V0ZWQgYXQgaW1wb3J0IHRpbWUgQ0FOTk9UCiAjIHJlZmVyZW5jZSBhbnkgaW5qZWN0ZWQgb2JqZWN0cyEgVGhpcyBpbmNsdWRlcyBub3Qgb25seSBnbG9iYWwgY29kZSBidXQgYWxzbwogIyBhbnl0aGluZyBzcGVjaWZpZWQgYXQgdGhlIGNsYXNzIGxldmVsLgogCisjIFhYWCBNYWtlIHN1cmUgYWxsIHB1YmxpYyBuYW1lcyBoYXZlIG5vIHNpbmdsZSBsZWFkaW5nIHVuZGVyc2NvcmUgYW5kIGFsbAorIyAgICAgb3RoZXJzIGRvLgorCiAKICMgQm9vdHN0cmFwLXJlbGF0ZWQgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIyBYWFggQ291bGQgYWxzbyBleHBvc2UgTW9kdWxlcy9nZXRwYXRoLmM6am9pbnBhdGgoKQotZGVmIF9wYXRoX2pvaW4oKmFyZ3MpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4uIiIiCi0gICAgcmV0dXJuIHBhdGhfc2VwLmpvaW4oeFs6LWxlbihwYXRoX3NlcCldIGlmIHguZW5kc3dpdGgocGF0aF9zZXApIGVsc2UgeAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGFyZ3MgaWYgeCkKK19DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyA9ICd3aW4nLCAnY3lnd2luJywgJ2RhcndpbicKIAogCi1kZWYgX3BhdGhfZXhpc3RzKHBhdGgpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmV4aXN0cy4iIiIKLSAgICB0cnk6Ci0gICAgICAgIF9vcy5zdGF0KHBhdGgpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJldHVybiBGYWxzZQorZGVmIF9tYWtlX3JlbGF4X2Nhc2UoKToKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gYidQWVRIT05DQVNFT0snIGluIF9vcy5lbnZpcm9uCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIF9yZWxheF9jYXNlCisKKworIyBUT0RPOiBFeHBvc2UgZnJvbSBtYXJzaGFsCitkZWYgX3dfbG9uZyh4KToKKyAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4KKworICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb25zIGFyZSBleHBvc2VkLgorCisgICAgIiIiCisgICAgeCA9IGludCh4KQorICAgIGludF9ieXRlcyA9IFtdCisgICAgaW50X2J5dGVzLmFwcGVuZCh4ICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDgpICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDE2KSAmIDB4RkYpCisgICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAyNCkgJiAweEZGKQorICAgIHJldHVybiBieXRlYXJyYXkoaW50X2J5dGVzKQorCisKKyMgVE9ETzogRXhwb3NlIGZyb20gbWFyc2hhbAorZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKKyAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLgorCisgICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbiBhcmUgZXhwb3NlZC4KKworICAgICIiIgorICAgIHggPSBpbnRfYnl0ZXNbMF0KKyAgICB4IHw9IGludF9ieXRlc1sxXSA8PCA4CisgICAgeCB8PSBpbnRfYnl0ZXNbMl0gPDwgMTYKKyAgICB4IHw9IGludF9ieXRlc1szXSA8PCAyNAorICAgIHJldHVybiB4CisKKworZGVmIF9wYXRoX2pvaW4oKnBhdGhfcGFydHMpOgorICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4oKS4iIiIKKyAgICBuZXdfcGFydHMgPSBbXQorICAgIGZvciBwYXJ0IGluIHBhdGhfcGFydHM6CisgICAgICAgIGlmIG5vdCBwYXJ0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbmV3X3BhcnRzLmFwcGVuZChwYXJ0KQorICAgICAgICBpZiBwYXJ0Wy0xXSBub3QgaW4gcGF0aF9zZXBhcmF0b3JzOgorICAgICAgICAgICAgbmV3X3BhcnRzLmFwcGVuZChwYXRoX3NlcCkKKyAgICByZXR1cm4gJycuam9pbihuZXdfcGFydHNbOi0xXSkgICMgRHJvcCBzdXBlcmZsdW91cyBwYXRoIHNlcGFyYXRvci4KKworCitkZWYgX3BhdGhfc3BsaXQocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXQoKS4iIiIKKyAgICBmb3IgeCBpbiByZXZlcnNlZChwYXRoKToKKyAgICAgICAgaWYgeCBpbiBwYXRoX3NlcGFyYXRvcnM6CisgICAgICAgICAgICBzZXAgPSB4CisgICAgICAgICAgICBicmVhaworICAgIGVsc2U6CisgICAgICAgIHNlcCA9IHBhdGhfc2VwCisgICAgZnJvbnQsIF8sIHRhaWwgPSBwYXRoLnJwYXJ0aXRpb24oc2VwKQorICAgIHJldHVybiBmcm9udCwgdGFpbAogCiAKIGRlZiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgbW9kZSk6CkBAIC01OCw2MSArMTE4LDQwMSBAQAogICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8wNDAwMDApCiAKIAotZGVmIF9wYXRoX3dpdGhvdXRfZXh0KHBhdGgsIGV4dF90eXBlKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdGV4dCgpWzBdLiIiIgotICAgIGZvciBzdWZmaXggaW4gX3N1ZmZpeF9saXN0KGV4dF90eXBlKToKLSAgICAgICAgaWYgcGF0aC5lbmRzd2l0aChzdWZmaXgpOgotICAgICAgICAgICAgcmV0dXJuIHBhdGhbOi1sZW4oc3VmZml4KV0KLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwYXRoIGlzIG5vdCBvZiB0aGUgc3BlY2lmaWVkIHR5cGUiKQotCi0KLWRlZiBfcGF0aF9hYnNvbHV0ZShwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5hYnNwYXRoLiIiIgotICAgIGlmIG5vdCBwYXRoOgotICAgICAgICBwYXRoID0gX29zLmdldGN3ZCgpCitkZWYgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBtb2RlPTBvNjY2KToKKyAgICAiIiJCZXN0LWVmZm9ydCBmdW5jdGlvbiB0byB3cml0ZSBkYXRhIHRvIGEgcGF0aCBhdG9taWNhbGx5LgorICAgIEJlIHByZXBhcmVkIHRvIGhhbmRsZSBhIEZpbGVFeGlzdHNFcnJvciBpZiBjb25jdXJyZW50IHdyaXRpbmcgb2YgdGhlCisgICAgdGVtcG9yYXJ5IGZpbGUgaXMgYXR0ZW1wdGVkLiIiIgorICAgICMgaWQoKSBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgcHNldWRvLXJhbmRvbSBmaWxlbmFtZS4KKyAgICBwYXRoX3RtcCA9ICd7fS57fScuZm9ybWF0KHBhdGgsIGlkKHBhdGgpKQorICAgIGZkID0gX29zLm9wZW4ocGF0aF90bXAsCisgICAgICAgICAgICAgICAgICBfb3MuT19FWENMIHwgX29zLk9fQ1JFQVQgfCBfb3MuT19XUk9OTFksIG1vZGUgJiAwbzY2NikKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfb3MuX2dldGZ1bGxwYXRobmFtZShwYXRoKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCcvJyk6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIF9wYXRoX2pvaW4oX29zLmdldGN3ZCgpLCBwYXRoKQorICAgICAgICAjIFdlIGZpcnN0IHdyaXRlIGRhdGEgdG8gYSB0ZW1wb3JhcnkgZmlsZSwgYW5kIHRoZW4gdXNlIG9zLnJlcGxhY2UoKSB0bworICAgICAgICAjIHBlcmZvcm0gYW4gYXRvbWljIHJlbmFtZS4KKyAgICAgICAgd2l0aCBfaW8uRmlsZUlPKGZkLCAnd2InKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShkYXRhKQorICAgICAgICBfb3MucmVwbGFjZShwYXRoX3RtcCwgcGF0aCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX29zLnVubGluayhwYXRoX3RtcCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHJhaXNlCiAKIAogZGVmIF93cmFwKG5ldywgb2xkKToKLSAgICAiIiJTaW1wbGUgc3Vic3RpdHV0ZSBmb3IgZnVuY3Rvb2xzLndyYXBzLiIiIgotICAgIGZvciByZXBsYWNlIGluIFsnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX2RvY19fJ106Ci0gICAgICAgIHNldGF0dHIobmV3LCByZXBsYWNlLCBnZXRhdHRyKG9sZCwgcmVwbGFjZSkpCisgICAgIiIiU2ltcGxlIHN1YnN0aXR1dGUgZm9yIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlci4iIiIKKyAgICBmb3IgcmVwbGFjZSBpbiBbJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19xdWFsbmFtZV9fJywgJ19fZG9jX18nXToKKyAgICAgICAgaWYgaGFzYXR0cihvbGQsIHJlcGxhY2UpOgorICAgICAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKICAgICBuZXcuX19kaWN0X18udXBkYXRlKG9sZC5fX2RpY3RfXykKIAogCi1jb2RlX3R5cGUgPSB0eXBlKF93cmFwLl9fY29kZV9fKQorX2NvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCiAKLSMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG5ld19tb2R1bGUobmFtZSk6CisgICAgIiIiQ3JlYXRlIGEgbmV3IG1vZHVsZS4KKworICAgIFRoZSBtb2R1bGUgaXMgbm90IGVudGVyZWQgaW50byBzeXMubW9kdWxlcy4KKworICAgICIiIgorICAgIHJldHVybiB0eXBlKF9pbykobmFtZSkKKworCisjIE1vZHVsZS1sZXZlbCBsb2NraW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQSBkaWN0IG1hcHBpbmcgbW9kdWxlIG5hbWVzIHRvIHdlYWtyZWZzIG9mIF9Nb2R1bGVMb2NrIGluc3RhbmNlcworX21vZHVsZV9sb2NrcyA9IHt9CisjIEEgZGljdCBtYXBwaW5nIHRocmVhZCBpZHMgdG8gX01vZHVsZUxvY2sgaW5zdGFuY2VzCitfYmxvY2tpbmdfb24gPSB7fQorCisKK2NsYXNzIF9EZWFkbG9ja0Vycm9yKFJ1bnRpbWVFcnJvcik6CisgICAgcGFzcworCisKK2NsYXNzIF9Nb2R1bGVMb2NrOgorICAgICIiIkEgcmVjdXJzaXZlIGxvY2sgaW1wbGVtZW50YXRpb24gd2hpY2ggaXMgYWJsZSB0byBkZXRlY3QgZGVhZGxvY2tzCisgICAgKGUuZy4gdGhyZWFkIDEgdHJ5aW5nIHRvIHRha2UgbG9ja3MgQSB0aGVuIEIsIGFuZCB0aHJlYWQgMiB0cnlpbmcgdG8KKyAgICB0YWtlIGxvY2tzIEIgdGhlbiBBKS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrKCkKKyAgICAgICAgc2VsZi53YWtldXAgPSBfdGhyZWFkLmFsbG9jYXRlX2xvY2soKQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYub3duZXIgPSBOb25lCisgICAgICAgIHNlbGYuY291bnQgPSAwCisgICAgICAgIHNlbGYud2FpdGVycyA9IDAKKworICAgIGRlZiBoYXNfZGVhZGxvY2soc2VsZik6CisgICAgICAgICMgRGVhZGxvY2sgYXZvaWRhbmNlIGZvciBjb25jdXJyZW50IGNpcmN1bGFyIGltcG9ydHMuCisgICAgICAgIG1lID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB0aWQgPSBzZWxmLm93bmVyCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBsb2NrID0gX2Jsb2NraW5nX29uLmdldCh0aWQpCisgICAgICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICB0aWQgPSBsb2NrLm93bmVyCisgICAgICAgICAgICBpZiB0aWQgPT0gbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBhY3F1aXJlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgQWNxdWlyZSB0aGUgbW9kdWxlIGxvY2suICBJZiBhIHBvdGVudGlhbCBkZWFkbG9jayBpcyBkZXRlY3RlZCwKKyAgICAgICAgYSBfRGVhZGxvY2tFcnJvciBpcyByYWlzZWQuCisgICAgICAgIE90aGVyd2lzZSwgdGhlIGxvY2sgaXMgYWx3YXlzIGFjcXVpcmVkIGFuZCBUcnVlIGlzIHJldHVybmVkLgorICAgICAgICAiIiIKKyAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICBfYmxvY2tpbmdfb25bdGlkXSA9IHNlbGYKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYubG9jazoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwIG9yIHNlbGYub3duZXIgPT0gdGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IHRpZAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmhhc19kZWFkbG9jaygpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgX0RlYWRsb2NrRXJyb3IoImRlYWRsb2NrIGRldGVjdGVkIGJ5ICVyIiAlIHNlbGYpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FrZXVwLmFjcXVpcmUoRmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53YWl0ZXJzICs9IDEKKyAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIGEgcmVsZWFzZSgpIGNhbGwKKyAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5yZWxlYXNlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRlbCBfYmxvY2tpbmdfb25bdGlkXQorCisgICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgIHRpZCA9IF90aHJlYWQuZ2V0X2lkZW50KCkKKyAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICBpZiBzZWxmLm93bmVyICE9IHRpZDoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuY291bnQgPiAwCisgICAgICAgICAgICBzZWxmLmNvdW50IC09IDEKKyAgICAgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53YWl0ZXJzIC09IDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi53YWtldXAucmVsZWFzZSgpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX01vZHVsZUxvY2soJXIpIGF0ICVkIiAlIChzZWxmLm5hbWUsIGlkKHNlbGYpKQorCisKK2NsYXNzIF9EdW1teU1vZHVsZUxvY2s6CisgICAgIiIiQSBzaW1wbGUgX01vZHVsZUxvY2sgZXF1aXZhbGVudCBmb3IgUHl0aG9uIGJ1aWxkcyB3aXRob3V0CisgICAgbXVsdGktdGhyZWFkaW5nIHN1cHBvcnQuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5jb3VudCA9IDAKKworICAgIGRlZiBhY3F1aXJlKHNlbGYpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWxlYXNlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNvdW50ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQorICAgICAgICBzZWxmLmNvdW50IC09IDEKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfRHVtbXlNb2R1bGVMb2NrKCVyKSBhdCAlZCIgJSAoc2VsZi5uYW1lLCBpZChzZWxmKSkKKworCisjIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBhcmUgZm9yIGNvbnN1bXB0aW9uIGJ5IFB5dGhvbi9pbXBvcnQuYy4KKworZGVmIF9nZXRfbW9kdWxlX2xvY2sobmFtZSk6CisgICAgIiIiR2V0IG9yIGNyZWF0ZSB0aGUgbW9kdWxlIGxvY2sgZm9yIGEgZ2l2ZW4gbW9kdWxlIG5hbWUuCisKKyAgICBTaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCB0aGUgaW1wb3J0IGxvY2sgdGFrZW4uIiIiCisgICAgbG9jayA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfbW9kdWxlX2xvY2tzW25hbWVdKCkKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBpZiBsb2NrIGlzIE5vbmU6CisgICAgICAgIGlmIF90aHJlYWQgaXMgTm9uZToKKyAgICAgICAgICAgIGxvY2sgPSBfRHVtbXlNb2R1bGVMb2NrKG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2NrID0gX01vZHVsZUxvY2sobmFtZSkKKyAgICAgICAgZGVmIGNiKF8pOgorICAgICAgICAgICAgZGVsIF9tb2R1bGVfbG9ja3NbbmFtZV0KKyAgICAgICAgX21vZHVsZV9sb2Nrc1tuYW1lXSA9IF93ZWFrcmVmLnJlZihsb2NrLCBjYikKKyAgICByZXR1cm4gbG9jaworCitkZWYgX2xvY2tfdW5sb2NrX21vZHVsZShuYW1lKToKKyAgICAiIiJSZWxlYXNlIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGFuZCBhY3F1aXJlcyB0aGVuIHJlbGVhc2UgdGhlCisgICAgbW9kdWxlIGxvY2sgZm9yIGEgZ2l2ZW4gbW9kdWxlIG5hbWUuCisgICAgVGhpcyBpcyB1c2VkIHRvIGVuc3VyZSBhIG1vZHVsZSBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLCBpbiB0aGUKKyAgICBldmVudCBpdCBpcyBiZWluZyBpbXBvcnRlZCBieSBhbm90aGVyIHRocmVhZC4KKworICAgIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIHRoZSBpbXBvcnQgbG9jayB0YWtlbi4iIiIKKyAgICBsb2NrID0gX2dldF9tb2R1bGVfbG9jayhuYW1lKQorICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKKyAgICB0cnk6CisgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgZXhjZXB0IF9EZWFkbG9ja0Vycm9yOgorICAgICAgICAjIENvbmN1cnJlbnQgY2lyY3VsYXIgaW1wb3J0LCB3ZSdsbCBhY2NlcHQgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKKyAgICAgICAgIyBtb2R1bGUgb2JqZWN0LgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbG9jay5yZWxlYXNlKCkKKworIyBGcmFtZSBzdHJpcHBpbmcgbWFnaWMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZiwgKmFyZ3MsICoqa3dkcyk6CisgICAgIiIicmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMgaW4gaW1wb3J0LmMgd2lsbCBhbHdheXMgcmVtb3ZlIHNlcXVlbmNlcworICAgIG9mIGltcG9ydGxpYiBmcmFtZXMgdGhhdCBlbmQgd2l0aCBhIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgorCisgICAgVXNlIGl0IGluc3RlYWQgb2YgYSBub3JtYWwgY2FsbCBpbiBwbGFjZXMgd2hlcmUgaW5jbHVkaW5nIHRoZSBpbXBvcnRsaWIKKyAgICBmcmFtZXMgaW50cm9kdWNlcyB1bndhbnRlZCBub2lzZSBpbnRvIHRoZSB0cmFjZWJhY2sgKGUuZy4gd2hlbiBleGVjdXRpbmcKKyAgICBtb2R1bGUgY29kZSkKKyAgICAiIiIKKyAgICByZXR1cm4gZigqYXJncywgKiprd2RzKQorCisKKyMgRmluZGVyL2xvYWRlciB1dGlsaXR5IGNvZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgorSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KKworVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQorYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCitBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgorCitUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCistVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCitvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KKworVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KK1RoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKKzEwLgorCitTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCitudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCit0byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQordGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCitjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0CitpdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQordGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCit3aXRoIFB5dGhvbiAzLjJhMC4KKworS25vd24gdmFsdWVzOgorIFB5dGhvbiAxLjU6ICAgMjAxMjEKKyBQeXRob24gMS41LjE6IDIwMTIxCisgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQorICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKKyAgICBQeXRob24gMi4wOiAgIDUwODIzCisgICAgUHl0aG9uIDIuMC4xOiA1MDgyMworICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKKyAgICBQeXRob24gMi4xLjE6IDYwMjAyCisgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgorICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKKyAgICBQeXRob24gMi4zYTA6IDYyMDExCisgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQorICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCisgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQorICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKKyAgICBQeXRob24gMi40YjE6IDYyMDYxCisgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQorICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCisgICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKKyAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCisgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCisgICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCisgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKKyAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCisgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKKyAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQorICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKKyAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCisgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQorICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKKyAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKKyAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKKyAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQorICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCisgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQorICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKKyAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgorICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQorICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgorICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKKyAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgorICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQorICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCisgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKKyAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKKyAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKKyAgICBQeXRob24gMy4zYTAgIDMxOTAgX19jbGFzc19fIHN1cGVyIGNsb3N1cmUgY2hhbmdlZAorICAgIFB5dGhvbiAzLjNhMCAgMzIwMCAoX19xdWFsbmFtZV9fIGFkZGVkKQorICAgICAgICAgICAgICAgICAgICAgMzIxMCAoYWRkZWQgc2l6ZSBtb2R1bG8gMioqMzIgdG8gdGhlIHB5YyBoZWFkZXIpCisgICAgUHl0aG9uIDMuM2ExICAzMjIwIChjaGFuZ2VkIFBFUCAzODAgaW1wbGVtZW50YXRpb24pCisgICAgUHl0aG9uIDMuM2E0ICAzMjMwIChyZXZlcnQgY2hhbmdlcyB0byBpbXBsaWNpdCBfX2NsYXNzX18gY2xvc3VyZSkKKworTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubworbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKK2R1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgorCisiIiIKK19SQVdfTUFHSUNfTlVNQkVSID0gMzIzMCB8IG9yZCgnXHInKSA8PCAxNiB8IG9yZCgnXG4nKSA8PCAyNAorX01BR0lDX0JZVEVTID0gYnl0ZXMoX1JBV19NQUdJQ19OVU1CRVIgPj4gbiAmIDB4ZmYgZm9yIG4gaW4gcmFuZ2UoMCwgMjUsIDgpKQorCitfUFlDQUNIRSA9ICdfX3B5Y2FjaGVfXycKKworU09VUkNFX1NVRkZJWEVTID0gWycucHknXSAgIyBfc2V0dXAoKSBhZGRzIC5weXcgYXMgbmVlZGVkLgorCitERUJVR19CWVRFQ09ERV9TVUZGSVhFUyA9IFsnLnB5YyddCitPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMgPSBbJy5weW8nXQorCitkZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSk6CisgICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljLy5weW8gZmlsZS4KKworICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQorICAgIC5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uCisgICAgd2lsbCBiZSAucHljIHVubGVzcyBzeXMuZmxhZ3Mub3B0aW1pemUgaXMgbm9uLXplcm8sIHRoZW4gaXQgd2lsbCBiZSAucHlvLgorCisgICAgSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHVzZWQgaW4KKyAgICBwbGFjZSBvZiBzeXMuZmxhZ3Mub3B0aW1pemUuCisKKyAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGRlYnVnID0gbm90IHN5cy5mbGFncy5vcHRpbWl6ZSBpZiBkZWJ1Z19vdmVycmlkZSBpcyBOb25lIGVsc2UgZGVidWdfb3ZlcnJpZGUKKyAgICBpZiBkZWJ1ZzoKKyAgICAgICAgc3VmZml4ZXMgPSBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworICAgIGVsc2U6CisgICAgICAgIHN1ZmZpeGVzID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTCisgICAgaGVhZCwgdGFpbCA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgYmFzZV9maWxlbmFtZSwgc2VwLCBfID0gdGFpbC5wYXJ0aXRpb24oJy4nKQorICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKKyAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBmaWxlbmFtZSA9ICcnLmpvaW4oW2Jhc2VfZmlsZW5hbWUsIHNlcCwgdGFnLCBzdWZmaXhlc1swXV0pCisgICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgX1BZQ0FDSEUsIGZpbGVuYW1lKQorCisKK2RlZiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weWMuLy5weW8gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KKworICAgIFRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCisgICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoIGRvZXMKKyAgICBub3QgY29uZm9ybSB0byBQRVAgMzE0NyBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCisgICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCisgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCisgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQorICAgIGlmIHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKSAhPSAyOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgZG90cyBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChweWNhY2hlX2ZpbGVuYW1lKSkKKyAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCisKKworZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKKyAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KKworICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCisgICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgorCisgICAgIiIiCisgICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFyaXRpb24oJy4nKQorICAgIGlmIG5vdCByZXN0IG9yIGV4dGVuc2lvbi5sb3dlcigpWy0zOi0xXSAhPSAnLnB5JzoKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKKworICAgIHRyeToKKyAgICAgICAgc291cmNlX3BhdGggPSBzb3VyY2VfZnJvbV9jYWNoZShieXRlY29kZV9wYXRoKQorICAgIGV4Y2VwdCAoTm90SW1wbGVtZW50ZWRFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHNvdXJjZV9wYXRoID0gYnl0Y29kZV9wYXRoWy0xOl0KKworICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3N0YXRzKSBlbHNlIGJ5dGVjb2RlX3BhdGgKKworCitkZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncyk6CisgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgorICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgorICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgorICAgICAgICAgICAgbWVzc2FnZSA9ICcjICcgKyBtZXNzYWdlCisgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQorCiAKIGRlZiBzZXRfcGFja2FnZShmeG4pOgogICAgICIiIlNldCBfX3BhY2thZ2VfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgotICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHNldF9wYWNrYWdlX3dyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgbW9kdWxlID0gZnhuKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKKyAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CiAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQogICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoc2V0X3BhY2thZ2Vfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBzZXRfcGFja2FnZV93cmFwcGVyCiAKIAogZGVmIHNldF9sb2FkZXIoZnhuKToKICAgICAiIiJTZXQgX19sb2FkZXJfXyBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiIiIgotICAgIGRlZiB3cmFwcGVyKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIHNldF9sb2FkZXJfd3JhcHBlcihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBmeG4oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKHNldF9sb2FkZXJfd3JhcHBlciwgZnhuKQorICAgIHJldHVybiBzZXRfbG9hZGVyX3dyYXBwZXIKIAogCiBkZWYgbW9kdWxlX2Zvcl9sb2FkZXIoZnhuKToKQEAgLTEyMCwzMSArNTIwLDU0IEBACiAKICAgICBUaGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgbW9kdWxlIHRvIHVzZSBpbnN0ZWFkIG9mIHRoZSBtb2R1bGUKICAgICBuYW1lLiBUaGUgbW9kdWxlIHBhc3NlZCBpbiB0byB0aGUgZnVuY3Rpb24gaXMgZWl0aGVyIGZyb20gc3lzLm1vZHVsZXMgaWYKLSAgICBpdCBhbHJlYWR5IGV4aXN0cyBvciBpcyBhIG5ldyBtb2R1bGUgd2hpY2ggaGFzIF9fbmFtZV9fIHNldCBhbmQgaXMgaW5zZXJ0ZWQKLSAgICBpbnRvIHN5cy5tb2R1bGVzLiBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlCi0gICAgbW9kdWxlIGl0IGlzIHN1YnNlcXVlbnRseSByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCisgICAgaXQgYWxyZWFkeSBleGlzdHMgb3IgaXMgYSBuZXcgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGlzIG5ldywgdGhlbiBfX25hbWVfXworICAgIGlzIHNldCB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIG1ldGhvZCwgX19sb2FkZXJfXyBpcyBzZXQgdG8gc2VsZiwgYW5kCisgICAgX19wYWNrYWdlX18gaXMgc2V0IGFjY29yZGluZ2x5IChpZiBzZWxmLmlzX3BhY2thZ2UoKSBpcyBkZWZpbmVkKSB3aWxsIGJlIHNldAorICAgIGJlZm9yZSBpdCBpcyBwYXNzZWQgdG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbiAoaWYgc2VsZi5pc19wYWNrYWdlKCkgZG9lcworICAgIG5vdCB3b3JrIGZvciB0aGUgbW9kdWxlIGl0IHdpbGwgYmUgc2V0IHBvc3QtbG9hZCkuCisKKyAgICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgZGVjb3JhdG9yIGNyZWF0ZWQgdGhlIG1vZHVsZSBpdCBpcworICAgIHN1YnNlcXVlbnRseSByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMuCiAKICAgICBUaGUgZGVjb3JhdG9yIGFzc3VtZXMgdGhhdCB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIHRha2VzIHRoZSBtb2R1bGUgbmFtZSBhcwogICAgIHRoZSBzZWNvbmQgYXJndW1lbnQuCiAKICAgICAiIiIKLSAgICBkZWYgZGVjb3JhdGVkKHNlbGYsIGZ1bGxuYW1lLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlcy5nZXQoZnVsbG5hbWUpCi0gICAgICAgIGlzX3JlbG9hZCA9IGJvb2wobW9kdWxlKQorICAgICAgICBpc19yZWxvYWQgPSBtb2R1bGUgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIG9wZW4oKSBpcyBjYWxsZWQgYXMgdGhlICdpbycgbW9kdWxlCiAgICAgICAgICAgICAjIGltcGxpY2l0bHkgaW1wb3J0cyAnbG9jYWxlJyBhbmQgd291bGQgb3RoZXJ3aXNlIHRyaWdnZXIgYW4KICAgICAgICAgICAgICMgaW5maW5pdGUgbG9vcC4KLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKGZ1bGxuYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gbmV3X21vZHVsZShmdWxsbmFtZSkKKyAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHB1dHRpbmcgdGhlIG1vZHVsZSBpbiBzeXMubW9kdWxlcworICAgICAgICAgICAgIyAob3RoZXJ3aXNlIGFuIG9wdGltaXphdGlvbiBzaG9ydGN1dCBpbiBpbXBvcnQuYyBiZWNvbWVzIHdyb25nKQorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgICAgICBzeXMubW9kdWxlc1tmdWxsbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBpc19wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBmdWxsbmFtZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBUcnVlCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgSWYgX19wYWNrYWdlX18gd2FzIG5vdCBzZXQgYWJvdmUsIF9faW1wb3J0X18oKSB3aWxsIGRvIGl0IGxhdGVyLgogICAgICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBtb2R1bGUsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZDoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgICAgICAgICByYWlzZQotICAgIF93cmFwKGRlY29yYXRlZCwgZnhuKQotICAgIHJldHVybiBkZWNvcmF0ZWQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG1vZHVsZS5fX2luaXRpYWxpemluZ19fID0gRmFsc2UKKyAgICBfd3JhcChtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIKIAogCiBkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKQEAgLTE1NSwzOCArNTc4LDUxIEBACiAgICAgY29tcGFyZWQgYWdhaW5zdC4gSWYgdGhlIGNvbXBhcmlzb24gZmFpbHMgdGhlbiBJbXBvcnRFcnJvciBpcyByYWlzZWQuCiAKICAgICAiIiIKLSAgICBkZWYgaW5uZXIoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgaWYgc2VsZi5fbmFtZSAhPSBuYW1lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImxvYWRlciBjYW5ub3QgaGFuZGxlICVzIiAlIG5hbWUpCisgICAgZGVmIF9jaGVja19uYW1lX3dyYXBwZXIoc2VsZiwgbmFtZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCisgICAgICAgIGVsaWYgc2VsZi5uYW1lICE9IG5hbWU6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMiICUgbmFtZSwgbmFtZT1uYW1lKQogICAgICAgICByZXR1cm4gbWV0aG9kKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3YXJncykKLSAgICBfd3JhcChpbm5lciwgbWV0aG9kKQotICAgIHJldHVybiBpbm5lcgorICAgIF93cmFwKF9jaGVja19uYW1lX3dyYXBwZXIsIG1ldGhvZCkKKyAgICByZXR1cm4gX2NoZWNrX25hbWVfd3JhcHBlcgogCiAKIGRlZiBfcmVxdWlyZXNfYnVpbHRpbihmeG4pOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBidWlsdC1pbi4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgZGVmIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICBpZiBmdWxsbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInswfSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgYnVpbHQtaW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChfcmVxdWlyZXNfYnVpbHRpbl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIKIAogCiBkZWYgX3JlcXVpcmVzX2Zyb3plbihmeG4pOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhlIG5hbWVkIG1vZHVsZSBpcyBmcm96ZW4uIiIiCi0gICAgZGVmIHdyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBpZiBub3QgaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiezB9IGlzIG5vdCBhIGZyb3plbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSkpCisgICAgZGVmIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIG5vdCBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSk6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigie30gaXMgbm90IGEgZnJvemVuIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHJldHVybiBmeG4oc2VsZiwgZnVsbG5hbWUpCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIF9yZXF1aXJlc19mcm96ZW5fd3JhcHBlcgogCiAKLWRlZiBfc3VmZml4X2xpc3Qoc3VmZml4X3R5cGUpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyBiYXNlZCBvbiB0aGUgaW1wIGZpbGUgdHlwZS4iIiIKLSAgICByZXR1cm4gW3N1ZmZpeFswXSBmb3Igc3VmZml4IGluIGltcC5nZXRfc3VmZml4ZXMoKQotICAgICAgICAgICAgaWYgc3VmZml4WzJdID09IHN1ZmZpeF90eXBlXQorZGVmIF9maW5kX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUgYnkgZGVsZWdhdGluZyB0bworICAgIHNlbGYuZmluZF9sb2FkZXIoKS4iIiIKKyAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCisgICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCisgICAgIyByZXR1cm4gTm9uZS4KKyAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKKyAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgorICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKKyAgICByZXR1cm4gbG9hZGVyCisKKwogCiAKICMgTG9hZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTIwMSw2ICs2MzcsMTAgQEAKICAgICAiIiIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChidWlsdC1pbik+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgdGhlIGJ1aWx0LWluIG1vZHVsZS4KIApAQCAtMjA5LDcgKzY0OSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGNscyBpZiBpbXAuaXNfYnVpbHRpbihmdWxsbmFtZSkgZWxzZSBOb25lCisgICAgICAgIHJldHVybiBjbHMgaWYgX2ltcC5pc19idWlsdGluKGZ1bGxuYW1lKSBlbHNlIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBzZXRfcGFja2FnZQpAQCAtMjE5LDcgKzY1OSw3IEBACiAgICAgICAgICIiIkxvYWQgYSBidWlsdC1pbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAuaW5pdF9idWlsdGluKGZ1bGxuYW1lKQorICAgICAgICAgICAgcmV0dXJuIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5pbml0X2J1aWx0aW4sIGZ1bGxuYW1lKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCkBAIC0yNDAsNyArNjgwLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2J1aWx0aW4KICAgICBkZWYgaXNfcGFja2FnZShjbHMsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYnVpbHQtaW4gbW9kdWxlIGFyZSBuZXZlciBwYWNrYWdlcy4iIiIKKyAgICAgICAgIiIiUmV0dXJuIEZhbHNlIGFzIGJ1aWx0LWluIG1vZHVsZXMgYXJlIG5ldmVyIHBhY2thZ2VzLiIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAogCkBAIC0yNTQsOSArNjk0LDEzIEBACiAgICAgIiIiCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKGZyb3plbik+Ii5mb3JtYXQobS5fX25hbWVfXykKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIGEgZnJvemVuIG1vZHVsZS4iIiIKLSAgICAgICAgcmV0dXJuIGNscyBpZiBpbXAuaXNfZnJvemVuKGZ1bGxuYW1lKSBlbHNlIE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2Zyb3plbihmdWxsbmFtZSkgZWxzZSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAc2V0X3BhY2thZ2UKQEAgLTI2Niw3ICs3MTAsMTAgQEAKICAgICAgICAgIiIiTG9hZCBhIGZyb3plbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAuaW5pdF9mcm96ZW4oZnVsbG5hbWUpCisgICAgICAgICAgICBtID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfZnJvemVuLCBmdWxsbmFtZSkKKyAgICAgICAgICAgICMgTGV0IG91ciBvd24gbW9kdWxlX3JlcHIoKSBtZXRob2QgcHJvZHVjZSBhIHN1aXRhYmxlIHJlcHIuCisgICAgICAgICAgICBkZWwgbS5fX2ZpbGVfXworICAgICAgICAgICAgcmV0dXJuIG0KICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgaWYgbm90IGlzX3JlbG9hZCBhbmQgZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXQpAQCAtMjc2LDcgKzcyMyw3IEBACiAgICAgQF9yZXF1aXJlc19mcm96ZW4KICAgICBkZWYgZ2V0X2NvZGUoY2xzLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgZm9yIHRoZSBmcm96ZW4gbW9kdWxlLiIiIgotICAgICAgICByZXR1cm4gaW1wLmdldF9mcm96ZW5fb2JqZWN0KGZ1bGxuYW1lKQorICAgICAgICByZXR1cm4gX2ltcC5nZXRfZnJvemVuX29iamVjdChmdWxsbmFtZSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfZnJvemVuCkBAIC0yODcsNDAgKzczNCwxMTcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2Zyb3plbgogICAgIGRlZiBpc19wYWNrYWdlKGNscywgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gaWYgdGhlIGZyb3plbiBtb2R1bGUgaXMgYSBwYWNrYWdlLiIiIgotICAgICAgICByZXR1cm4gaW1wLmlzX2Zyb3plbl9wYWNrYWdlKGZ1bGxuYW1lKQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnJvemVuIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIHJldHVybiBfaW1wLmlzX2Zyb3plbl9wYWNrYWdlKGZ1bGxuYW1lKQorCisKK2NsYXNzIFdpbmRvd3NSZWdpc3RyeUZpbmRlcjoKKworICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuCisgICAgIiIiCisKKyAgICBSRUdJU1RSWV9LRVkgPSAoCisgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259IgorICAgICAgICAiXFxNb2R1bGVzXFx7ZnVsbG5hbWV9IikKKyAgICBSRUdJU1RSWV9LRVlfREVCVUcgPSAoCisgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFx7c3lzX3ZlcnNpb259IgorICAgICAgICAiXFxNb2R1bGVzXFx7ZnVsbG5hbWV9XFxEZWJ1ZyIpCisgICAgREVCVUdfQlVJTEQgPSBGYWxzZSAgIyBDaGFuZ2VkIGluIF9zZXR1cCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX29wZW5fcmVnaXN0cnkoY2xzLCBrZXkpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gX3dpbnJlZy5PcGVuS2V5KF93aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKKyAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgorICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCisgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6CisgICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgIiIpCisgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZXBhdGgKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiJGaW5kIG1vZHVsZSBuYW1lZCBpbiB0aGUgcmVnaXN0cnkuIiIiCisgICAgICAgIGZpbGVwYXRoID0gY2xzLl9zZWFyY2hfcmVnaXN0cnkoZnVsbG5hbWUpCisgICAgICAgIGlmIGZpbGVwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3Muc3RhdChmaWxlcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcywgXyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpCiAKIAogY2xhc3MgX0xvYWRlckJhc2ljczoKIAogICAgICIiIkJhc2UgY2xhc3Mgb2YgY29tbW9uIGNvZGUgbmVlZGVkIGJ5IGJvdGggU291cmNlTG9hZGVyIGFuZAotICAgIF9Tb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKKyAgICBTb3VyY2VsZXNzRmlsZUxvYWRlci4iIiIKIAogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdExvYWRlci5pc19wYWNrYWdlIGJ5IGNoZWNraW5nIGlmCiAgICAgICAgIHRoZSBwYXRoIHJldHVybmVkIGJ5IGdldF9maWxlbmFtZSBoYXMgYSBmaWxlbmFtZSBvZiAnX19pbml0X18ucHknLiIiIgotICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKS5ycGFydGl0aW9uKHBhdGhfc2VwKVsyXQotICAgICAgICByZXR1cm4gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0gPT0gJ19faW5pdF9fJworICAgICAgICBmaWxlbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKSlbMV0KKyAgICAgICAgZmlsZW5hbWVfYmFzZSA9IGZpbGVuYW1lLnJzcGxpdCgnLicsIDEpWzBdCisgICAgICAgIHRhaWxfbmFtZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQorICAgICAgICByZXR1cm4gZmlsZW5hbWVfYmFzZSA9PSAnX19pbml0X18nIGFuZCB0YWlsX25hbWUgIT0gJ19faW5pdF9fJwogCi0gICAgZGVmIF9ieXRlc19mcm9tX2J5dGVjb2RlKHNlbGYsIGZ1bGxuYW1lLCBkYXRhLCBzb3VyY2VfbXRpbWUpOgorICAgIGRlZiBfYnl0ZXNfZnJvbV9ieXRlY29kZShzZWxmLCBmdWxsbmFtZSwgZGF0YSwgYnl0ZWNvZGVfcGF0aCwgc291cmNlX3N0YXRzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBtYXJzaGFsbGVkIGJ5dGVzIGZyb20gYnl0ZWNvZGUsIHZlcmlmeWluZyB0aGUgbWFnaWMKLSAgICAgICAgbnVtYmVyIGFuZCB0aW1lc3RhbXAgYWxvbmcgdGhlIHdheS4KKyAgICAgICAgbnVtYmVyLCB0aW1lc3RhbXAgYW5kIHNvdXJjZSBzaXplIGFsb25nIHRoZSB3YXkuCiAKLSAgICAgICAgSWYgc291cmNlX210aW1lIGlzIE5vbmUgdGhlbiBza2lwIHRoZSB0aW1lc3RhbXAgY2hlY2suCisgICAgICAgIElmIHNvdXJjZV9zdGF0cyBpcyBOb25lIHRoZW4gc2tpcCB0aGUgdGltZXN0YW1wIGNoZWNrLgogCiAgICAgICAgICIiIgogICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KLSAgICAgICAgaWYgbGVuKG1hZ2ljKSAhPSA0IG9yIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KKyAgICAgICAgaWYgbWFnaWMgIT0gX01BR0lDX0JZVEVTOgorICAgICAgICAgICAgbXNnID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KGZ1bGxuYW1lLCBtYWdpYykKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgotICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCB0aW1lc3RhbXAgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCi0gICAgICAgIGVsaWYgc291cmNlX210aW1lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgbWVzc2FnZSA9ICdiYWQgdGltZXN0YW1wIGluIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQorICAgICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIHNpemUgaW4ge30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Jy5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd19zaXplKSAhPSBzb3VyY2Vfc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAjIENhbid0IHJldHVybiB0aGUgY29kZSBvYmplY3QgYXMgZXJyb3JzIGZyb20gbWFyc2hhbCBsb2FkaW5nIG5lZWQgdG8KICAgICAgICAgIyBwcm9wYWdhdGUgZXZlbiB3aGVuIHNvdXJjZSBpcyBhdmFpbGFibGUuCi0gICAgICAgIHJldHVybiBkYXRhWzg6XQorICAgICAgICByZXR1cm4gZGF0YVsxMjpdCiAKICAgICBAbW9kdWxlX2Zvcl9sb2FkZXIKICAgICBkZWYgX2xvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSwgKiwgc291cmNlbGVzcz1GYWxzZSk6CkBAIC0zMzAsMTYgKzg1NCwxOSBAQAogICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gc2VsZi5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgaWYgbm90IHNvdXJjZWxlc3M6Ci0gICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBjYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBtb2R1bGUuX19maWxlX18KICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbmFtZQogICAgICAgICBpZiBzZWxmLmlzX3BhY2thZ2UobmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbbW9kdWxlLl9fZmlsZV9fLnJzcGxpdChwYXRoX3NlcCwgMSlbMF1dCisgICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbX3BhdGhfc3BsaXQobW9kdWxlLl9fZmlsZV9fKVswXV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAgIGV4ZWMoY29kZV9vYmplY3QsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlX29iamVjdCwgbW9kdWxlLl9fZGljdF9fKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKIApAQCAtMzQ4LDEyICs4NzUsMzEgQEAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHRoYXQgcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgKGFuIGludCkgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aCwgd2hlcmUgcGF0aCBpcyBhIHN0ci4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KLQogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCByZXR1cm5pbmcgYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc3BlY2lmaWVkIHBhdGgKKyAgICAgICAgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyB0aGUgbG9hZGVyIHRvIHJlYWQgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KKworICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGNhY2hlX3BhdGgsIGRhdGEpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgZm9yIHRoZSB3cml0aW5nIG9mIGJ5dGVjb2RlIGZpbGVzLgorCisgICAgICAgIFRoZSBzb3VyY2UgcGF0aCBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHRyYW5zZmVyIHBlcm1pc3Npb25zCisgICAgICAgICIiIgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgZGVsZWdhdGUgdG8gc2V0X2RhdGEoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShjYWNoZV9wYXRoLCBkYXRhKQorCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2Qgd2hpY2ggd3JpdGVzIGRhdGEgKGJ5dGVzKSB0byBhIGZpbGUgcGF0aCAoYSBzdHIpLgogCkBAIC0zNjksMjggKzkxNSw0MiBAQAogICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEocGF0aCkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpIikKLSAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInNvdXJjZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZ2V0X2RhdGEoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YworICAgICAgICByZWFkc291cmNlID0gX2lvLkJ5dGVzSU8oc291cmNlX2J5dGVzKS5yZWFkbGluZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhyZWFkc291cmNlKQorICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZXRlY3QgZW5jb2RpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKICAgICAgICAgbmV3bGluZV9kZWNvZGVyID0gX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBuZXdsaW5lX2RlY29kZXIuZGVjb2RlKHNvdXJjZV9ieXRlcy5kZWNvZGUoZW5jb2RpbmdbMF0pKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHNvdXJjZSBmaWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCiAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmdldF9jb2RlLgogCi0gICAgICAgIFJlYWRpbmcgb2YgYnl0ZWNvZGUgcmVxdWlyZXMgcGF0aF9tdGltZSB0byBiZSBpbXBsZW1lbnRlZC4gVG8gd3JpdGUKKyAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX3N0YXRzIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQogICAgICAgICBieXRlY29kZSwgc2V0X2RhdGEgbXVzdCBhbHNvIGJlIGltcGxlbWVudGVkLgogCiAgICAgICAgICIiIgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfbXRpbWUgPSBOb25lCi0gICAgICAgIGlmIGJ5dGVjb2RlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBjYWNoZV9mcm9tX3NvdXJjZShzb3VyY2VfcGF0aCkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gTm9uZQorICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IHNlbGYucGF0aF9tdGltZShzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICBzdCA9IHNlbGYucGF0aF9zdGF0cyhzb3VyY2VfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gaW50KHN0WydtdGltZSddKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKQEAgLTM5OCwyOSArOTU4LDM3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBtYXJzaGFsLmxvYWRzKGJ5dGVzX2RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmb3VuZCwgX2NvZGVfdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGZvdW5kLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gIk5vbi1jb2RlIG9iamVjdCBpbiB7fSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQotICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgY29kZV9vYmplY3QgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGNvbXBpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgsICdleGVjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgIyBJZiBlLmcuIEp5dGhvbiBldmVyIGltcGxlbWVudHMgaW1wLmNhY2hlX2Zyb21fc291cmNlIHRvIGhhdmUKLSAgICAgICAgICAgICMgdGhlaXIgb3duIGNhY2hlZCBmaWxlIGZvcm1hdCwgdGhpcyBibG9jayBvZiBjb2RlIHdpbGwgbW9zdCBsaWtlbHkKLSAgICAgICAgICAgICMgdGhyb3cgYW4gZXhjZXB0aW9uLgotICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KF9NQUdJQ19CWVRFUykKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobGVuKHNvdXJjZV9ieXRlcykpKQogICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRfZGF0YShieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKQEAgLTQzNiw3ICsxMDA0LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAKLWNsYXNzIF9GaWxlTG9hZGVyOgorY2xhc3MgRmlsZUxvYWRlcjoKIAogICAgICIiIkJhc2UgZmlsZSBsb2FkZXIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyB0aGUgbG9hZGVyIHByb3RvY29sIG1ldGhvZHMgdGhhdAogICAgIHJlcXVpcmUgZmlsZSBzeXN0ZW0gdXNhZ2UuIiIiCkBAIC00NDQsMTMgKzEwMTIsMjAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICAiIiJDYWNoZSB0aGUgbW9kdWxlIG5hbWUgYW5kIHRoZSBwYXRoIHRvIHRoZSBmaWxlIGZvdW5kIGJ5IHRoZQogICAgICAgICBmaW5kZXIuIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBmdWxsbmFtZQotICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLm5hbWUgPSBmdWxsbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBAX2NoZWNrX25hbWUKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJMb2FkIGEgbW9kdWxlIGZyb20gYSBmaWxlLiIiIgorICAgICAgICAjIElzc3VlICMxNDg1NzogQXZvaWQgdGhlIHplcm8tYXJndW1lbnQgZm9ybSBzbyB0aGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgIyBvZiB0aGF0IGZvcm0gY2FuIGJlIHVwZGF0ZWQgd2l0aG91dCBicmVha2luZyB0aGUgZnJvemVuIG1vZHVsZQorICAgICAgICByZXR1cm4gc3VwZXIoRmlsZUxvYWRlciwgc2VsZikubG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZSBhcyBmb3VuZCBieSB0aGUgZmluZGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorICAgICAgICByZXR1cm4gc2VsZi5wYXRoCiAKICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZGF0YSBmcm9tIHBhdGggYXMgcmF3IGJ5dGVzLiIiIgpAQCAtNDU4LDUyICsxMDMzLDUzIEBACiAgICAgICAgICAgICByZXR1cm4gZmlsZS5yZWFkKCkKIAogCi1jbGFzcyBfU291cmNlRmlsZUxvYWRlcihfRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKK2NsYXNzIFNvdXJjZUZpbGVMb2FkZXIoRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKIAogICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIFNvdXJjZUxvYWRlciB1c2luZyB0aGUgZmlsZSBzeXN0ZW0uIiIiCiAKLSAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGguIiIiCi0gICAgICAgIHJldHVybiBpbnQoX29zLnN0YXQocGF0aCkuc3RfbXRpbWUpCisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWV0YWRhdGEgZm9yIHRoZSBwYXRoLiIiIgorICAgICAgICBzdCA9IF9vcy5zdGF0KHBhdGgpCisgICAgICAgIHJldHVybiB7J210aW1lJzogc3Quc3RfbXRpbWUsICdzaXplJzogc3Quc3Rfc2l6ZX0KIAotICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKKyAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKToKKyAgICAgICAgIyBBZGFwdCBiZXR3ZWVuIHRoZSB0d28gQVBJcworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2RlID0gX29zLnN0YXQoc291cmNlX3BhdGgpLnN0X21vZGUKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBtb2RlID0gMG82NjYKKyAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCwgZGF0YSwgX21vZGU9bW9kZSkKKworICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhLCAqLCBfbW9kZT0wbzY2Nik6CiAgICAgICAgICIiIldyaXRlIGJ5dGVzIGRhdGEgdG8gYSBmaWxlLiIiIgotICAgICAgICBwYXJlbnQsIF8sIGZpbGVuYW1lID0gcGF0aC5ycGFydGl0aW9uKHBhdGhfc2VwKQorICAgICAgICBwYXJlbnQsIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICAgICAgcGF0aF9wYXJ0cyA9IFtdCiAgICAgICAgICMgRmlndXJlIG91dCB3aGF0IGRpcmVjdG9yaWVzIGFyZSBtaXNzaW5nLgogICAgICAgICB3aGlsZSBwYXJlbnQgYW5kIG5vdCBfcGF0aF9pc2RpcihwYXJlbnQpOgotICAgICAgICAgICAgcGFyZW50LCBfLCBwYXJ0ID0gcGFyZW50LnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgICAgICBwYXJlbnQsIHBhcnQgPSBfcGF0aF9zcGxpdChwYXJlbnQpCiAgICAgICAgICAgICBwYXRoX3BhcnRzLmFwcGVuZChwYXJ0KQogICAgICAgICAjIENyZWF0ZSBuZWVkZWQgZGlyZWN0b3JpZXMuCiAgICAgICAgIGZvciBwYXJ0IGluIHJldmVyc2VkKHBhdGhfcGFydHMpOgogICAgICAgICAgICAgcGFyZW50ID0gX3BhdGhfam9pbihwYXJlbnQsIHBhcnQpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgX29zLm1rZGlyKHBhcmVudCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBQcm9iYWJseSBhbm90aGVyIFB5dGhvbiBwcm9jZXNzIGFscmVhZHkgY3JlYXRlZCB0aGUgZGlyLgotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgICAgICAjIElmIGNhbid0IGdldCBwcm9wZXIgYWNjZXNzLCB0aGVuIGp1c3QgZm9yZ2V0IGFib3V0IHdyaXRpbmcKICAgICAgICAgICAgICAgICAjIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggX2lvLkZpbGVJTyhwYXRoLCAnd2InKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgIyBEb24ndCB3b3JyeSBpZiB5b3UgY2FuJ3Qgd3JpdGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IChQZXJtaXNzaW9uRXJyb3IsIEZpbGVFeGlzdHNFcnJvcik6CisgICAgICAgICAgICAjIERvbid0IHdvcnJ5IGlmIHlvdSBjYW4ndCB3cml0ZSBieXRlY29kZSBvciBzb21lb25lIGlzIHdyaXRpbmcKKyAgICAgICAgICAgICMgaXQgYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBfU291cmNlbGVzc0ZpbGVMb2FkZXIoX0ZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorY2xhc3MgU291cmNlbGVzc0ZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CiAKICAgICAiIiJMb2FkZXIgd2hpY2ggaGFuZGxlcyBzb3VyY2VsZXNzIGZpbGUgaW1wb3J0cy4iIiIKIApAQCAtNTEzLDE5ICsxMDg5LDI1IEBACiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwgTm9uZSkKKyAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsIHBhdGgsIE5vbmUpCiAgICAgICAgIGZvdW5kID0gbWFyc2hhbC5sb2FkcyhieXRlc19kYXRhKQotICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9cGF0aCkKIAogICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0V4dGVuc2lvbkZpbGVMb2FkZXI6CisjIEZpbGxlZCBpbiBieSBfc2V0dXAoKS4KK0VYVEVOU0lPTl9TVUZGSVhFUyA9IFtdCisKKworY2xhc3MgRXh0ZW5zaW9uRmlsZUxvYWRlcjoKIAogICAgICIiIkxvYWRlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuCiAKQEAgLTUzNCwxNCArMTExNiw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGhlIGxvYWRlci4KLQotICAgICAgICBJZiBpc19wa2cgaXMgVHJ1ZSB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgICAgICAgY2Fubm90IGJlIHRoZSBfX2luaXRfXyBtb2R1bGUgZm9yIGFuIGV4dGVuc2lvbiBtb2R1bGUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgQF9jaGVja19uYW1lCiAgICAgQHNldF9wYWNrYWdlCkBAIC01NTAsMjk3ICsxMTI2LDUyNSBAQAogICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAubG9hZF9keW5hbWljKGZ1bGxuYW1lLCBzZWxmLl9wYXRoKQorICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgbG9hZGVkIGZyb20geyFyfScsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkgYW5kIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIHJhaXNlCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBhbiBleHRlbnNpb24gbW9kdWxlIGNhbiBuZXZlciBiZSBhIHBhY2thZ2UuIiIiCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KKyAgICAgICAgcmV0dXJuIGFueShmaWxlX25hbWUgPT0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gRVhURU5TSU9OX1NVRkZJWEVTKQogCi0gICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW5ub3QgY3JlYXRlIGEgY29kZSBvYmplY3QuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAorY2xhc3MgX05hbWVzcGFjZVBhdGg6CisgICAgIiIiUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgcGF0aC4gIEl0IHVzZXMgdGhlIG1vZHVsZSBuYW1lCisgICAgdG8gZmluZCBpdHMgcGFyZW50IG1vZHVsZSwgYW5kIGZyb20gdGhlcmUgaXQgbG9va3MgdXAgdGhlIHBhcmVudCdzCisgICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCisgICAgdXNpbmcgcGF0aF9maW5kZXIuICBGb3IgdG9wLWxldmUgbW9kdWxlcywgdGhlIHBhcmVudCBtb2R1bGUncyBwYXRoCisgICAgaXMgc3lzLnBhdGguIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpOgorICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpCisgICAgICAgIHNlbGYuX3BhdGhfZmluZGVyID0gcGF0aF9maW5kZXIKKworICAgIGRlZiBfZmluZF9wYXJlbnRfcGF0aF9uYW1lcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxlIG9mIChwYXJlbnQtbW9kdWxlLW5hbWUsIHBhcmVudC1wYXRoLWF0dHItbmFtZSkiIiIKKyAgICAgICAgcGFyZW50LCBkb3QsIG1lID0gc2VsZi5fbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICAgICAgaWYgZG90ID09ICcnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgdG9wLWxldmVsIG1vZHVsZS4gc3lzLnBhdGggY29udGFpbnMgdGhlIHBhcmVudCBwYXRoLgorICAgICAgICAgICAgcmV0dXJuICdzeXMnLCAncGF0aCcKKyAgICAgICAgIyBOb3QgYSB0b3AtbGV2ZWwgbW9kdWxlLiBwYXJlbnQtbW9kdWxlLl9fcGF0aF9fIGNvbnRhaW5zIHRoZQorICAgICAgICAjICBwYXJlbnQgcGF0aC4KKyAgICAgICAgcmV0dXJuIHBhcmVudCwgJ19fcGF0aF9fJworCisgICAgZGVmIF9nZXRfcGFyZW50X3BhdGgoc2VsZik6CisgICAgICAgIHBhcmVudF9tb2R1bGVfbmFtZSwgcGF0aF9hdHRyX25hbWUgPSBzZWxmLl9maW5kX3BhcmVudF9wYXRoX25hbWVzKCkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc3lzLm1vZHVsZXNbcGFyZW50X21vZHVsZV9uYW1lXSwgcGF0aF9hdHRyX25hbWUpCisKKyAgICBkZWYgX3JlY2FsY3VsYXRlKHNlbGYpOgorICAgICAgICAjIElmIHRoZSBwYXJlbnQncyBwYXRoIGhhcyBjaGFuZ2VkLCByZWNhbGN1bGF0ZSBfcGF0aAorICAgICAgICBwYXJlbnRfcGF0aCA9IHR1cGxlKHNlbGYuX2dldF9wYXJlbnRfcGF0aCgpKSAjIE1ha2UgYSBjb3B5CisgICAgICAgIGlmIHBhcmVudF9wYXRoICE9IHNlbGYuX2xhc3RfcGFyZW50X3BhdGg6CisgICAgICAgICAgICBsb2FkZXIsIG5ld19wYXRoID0gc2VsZi5fcGF0aF9maW5kZXIoc2VsZi5fbmFtZSwgcGFyZW50X3BhdGgpCisgICAgICAgICAgICAjIE5vdGUgdGhhdCBubyBjaGFuZ2VzIGFyZSBtYWRlIGlmIGEgbG9hZGVyIGlzIHJldHVybmVkLCBidXQgd2UKKyAgICAgICAgICAgICMgIGRvIHJlbWVtYmVyIHRoZSBuZXcgcGFyZW50IHBhdGgKKyAgICAgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBuZXdfcGF0aAorICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX05hbWVzcGFjZVBhdGgoeyFyfSkiLmZvcm1hdChzZWxmLl9wYXRoKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKKyAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKKworCitjbGFzcyBOYW1lc3BhY2VMb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKG5hbWVzcGFjZSk+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgQG1vZHVsZV9mb3JfbG9hZGVyCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLiIiIgorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNlbGYuX3BhdGgKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisKICMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgUGF0aEZpbmRlcjoKIAotICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy4ocGF0aHxwYXRoX2hvb2tzfHBhdGhfaW1wb3J0ZXJfY2FjaGUpLiIiIgorICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy5wYXRoIGFuZCBwYWNrYWdlIF9fcGF0aF9fIGF0dHJpYnV0ZXMuIiIiCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoLCBob29rcz1Ob25lKToKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoY2xzKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIHBhdGggZW50cnkgZmluZGVycworICAgICAgICBzdG9yZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVzICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgICAgIGZvciBmaW5kZXIgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgogICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCiAKICAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGhvb2tzOgotICAgICAgICAgICAgaG9va3MgPSBzeXMucGF0aF9ob29rcwotICAgICAgICBmb3IgaG9vayBpbiBob29rczoKKyAgICAgICAgaWYgbm90IHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKyAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhvb2socGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHBhdGggaG9vayBmb3VuZCBmb3IgezB9Ii5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCwgZGVmYXVsdD1Ob25lKToKLSAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisgICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6CisgICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgogCi0gICAgICAgIElmIHRoZSBwYXRoIGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlciBhbmQgY2FjaGUKLSAgICAgICAgaXQuIElmIE5vbmUgaXMgY2FjaGVkLCBnZXQgdGhlIGRlZmF1bHQgZmluZGVyIGFuZCBjYWNoZSB0aGF0Ci0gICAgICAgIChpZiBhcHBsaWNhYmxlKS4KLQotICAgICAgICBCZWNhdXNlIG9mIE51bGxJbXBvcnRlciwgc29tZSBmaW5kZXIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgb25seQotICAgICAgICBleHBsaWNpdCBmYWlsIGNhc2UgaXMgaWYgTm9uZSBpcyBjYWNoZWQgYnV0IHRoZSBwYXRoIGNhbm5vdCBiZSB1c2VkIGZvcgotICAgICAgICB0aGUgZGVmYXVsdCBob29rLCBmb3Igd2hpY2ggSW1wb3J0RXJyb3IgaXMgcmFpc2VkLgorICAgICAgICBJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgaW4gdGhlIGNhY2hlLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBmaW5kZXIKKyAgICAgICAgYW5kIGNhY2hlIGl0LiBJZiBubyBmaW5kZXIgaXMgYXZhaWxhYmxlLCBzdG9yZSBOb25lLgogCiAgICAgICAgICIiIgorICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgcGF0aCA9ICcuJwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmaW5kZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBmaW5kZXIgaXMgTm9uZSBhbmQgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAjIFJhaXNlcyBJbXBvcnRFcnJvciBvbiBmYWlsdXJlLgotICAgICAgICAgICAgICAgIGZpbmRlciA9IGRlZmF1bHQocGF0aCkKLSAgICAgICAgICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSA9IGZpbmRlcgogICAgICAgICByZXR1cm4gZmluZGVyCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2dldF9sb2FkZXIoY2xzLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkZpbmQgdGhlIGxvYWRlciBvciBuYW1lc3BhY2VfcGF0aCBmb3IgdGhpcyBtb2R1bGUvcGFja2FnZSBuYW1lLiIiIgorICAgICAgICAjIElmIHRoaXMgZW5kcyB1cCBiZWluZyBhIG5hbWVzcGFjZSBwYWNrYWdlLCBuYW1lc3BhY2VfcGF0aCBpcworICAgICAgICAjICB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdpbGwgYmVjb21lIGl0cyBfX3BhdGhfXworICAgICAgICBuYW1lc3BhY2VfcGF0aCA9IFtdCisgICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgorICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQorICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYSBsb2FkZXI6IHJldHVybiBpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlciwgbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQorICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCisgICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgbmFtZXNwYWNlX3BhdGgKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKLSAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAotICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGZpbmRlcjoKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbG9hZGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyCisgICAgICAgIGxvYWRlciwgbmFtZXNwYWNlX3BhdGggPSBjbHMuX2dldF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBsb2FkZXIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKKyAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCisgICAgICAgICAgICAgICAgIyAgbG9hZGVyIHdoaWNoIGNhbiBjcmVhdGUgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIHJldHVybiBOYW1lc3BhY2VMb2FkZXIoZnVsbG5hbWUsIG5hbWVzcGFjZV9wYXRoLCBjbHMuX2dldF9sb2FkZXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0ZpbGVGaW5kZXI6CitjbGFzcyBGaWxlRmluZGVyOgogCiAgICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCiAKLSAgICBDb25zdHJ1Y3RvciB0YWtlcyBhIGxpc3Qgb2Ygb2JqZWN0cyBkZXRhaWxpbmcgd2hhdCBmaWxlIGV4dGVuc2lvbnMgdGhlaXIKLSAgICBsb2FkZXIgc3VwcG9ydHMgYWxvbmcgd2l0aCB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkIGZvciBhIHBhY2thZ2UuCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KIAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpkZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIGZpbmRlciBkZXRhaWxzLiIiIgotICAgICAgICBwYWNrYWdlcyA9IFtdCi0gICAgICAgIG1vZHVsZXMgPSBbXQotICAgICAgICBmb3IgZGV0YWlsIGluIGRldGFpbHM6Ci0gICAgICAgICAgICBtb2R1bGVzLmV4dGVuZCgoc3VmZml4LCBkZXRhaWwubG9hZGVyKSBmb3Igc3VmZml4IGluIGRldGFpbC5zdWZmaXhlcykKLSAgICAgICAgICAgIGlmIGRldGFpbC5zdXBwb3J0c19wYWNrYWdlczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlcy5leHRlbmQoKHN1ZmZpeCwgZGV0YWlsLmxvYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBkZXRhaWwuc3VmZml4ZXMpCi0gICAgICAgIHNlbGYucGFja2FnZXMgPSBwYWNrYWdlcwotICAgICAgICBzZWxmLm1vZHVsZXMgPSBtb2R1bGVzCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKKyAgICAgICAgMy10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyLCBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcywKKyAgICAgICAgYW5kIGEgYm9vbGVhbiBvZiB3aGV0aGVyIHRoZSBsb2FkZXIgaGFuZGxlcyBwYWNrYWdlcy4iIiIKKyAgICAgICAgbG9hZGVycyA9IFtdCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIGRldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKIAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4iIiIKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBtdGltZS4iIiIKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisKKyAgICBmaW5kX21vZHVsZSA9IF9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKKyAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKKyAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICBpZiBfcGF0aF9pc2RpcihiYXNlX3BhdGgpIGFuZCBfY2FzZV9vayhzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKToKLSAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlciBpbiBzZWxmLnBhY2thZ2VzOgotICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgaWYgKF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgX2Nhc2Vfb2soYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgotICAgICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQoYmFzZV9wYXRoKSwgSW1wb3J0V2FybmluZykKLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYubW9kdWxlczoKLSAgICAgICAgICAgIG1vZF9maWxlbmFtZSA9IHRhaWxfbW9kdWxlICsgc3VmZml4Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKQotICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCkgYW5kIF9jYXNlX29rKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpCi0gICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX29zLnN0YXQoc2VsZi5wYXRoKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGlmIF9wYXRoX2lzZGlyKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpLCBbYmFzZV9wYXRoXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2UsIHJldHVybiB0aGUgcGF0aCBpZiB3ZSBkb24ndCBhbHNvCisgICAgICAgICAgICAgICAgICAgICMgIGZpbmQgYSBtb2R1bGUgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gVHJ1ZQorICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KKyAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvYWRlcihmdWxsbmFtZSwgZnVsbF9wYXRoKSwgW10pCisgICAgICAgIGlmIGlzX25hbWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgW2Jhc2VfcGF0aF0pCisgICAgICAgIHJldHVybiAoTm9uZSwgW10pCiAKLWNsYXNzIF9Tb3VyY2VGaW5kZXJEZXRhaWxzOgorICAgIGRlZiBfZmlsbF9jYWNoZShzZWxmKToKKyAgICAgICAgIiIiRmlsbCB0aGUgY2FjaGUgb2YgcG90ZW50aWFsIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGZvciB0aGlzIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250ZW50cyA9IF9vcy5saXN0ZGlyKHBhdGgpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQgc2luY2UgbGFzdCBpbXBvcnQKKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KGZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZUZpbGVMb2FkZXIKLSAgICBzdXBwb3J0c19wYWNrYWdlcyA9IFRydWUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKKyAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAorICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc3VmZml4ZXMgPSBfc3VmZml4X2xpc3QoaW1wLlBZX1NPVVJDRSkKKyAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLgogCi1jbGFzcyBfU291cmNlbGVzc0ZpbmRlckRldGFpbHM6CisgICAgICAgICIiIgorICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgorICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCisgICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm9ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCIsIHBhdGg9cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZWxlc3NGaWxlTG9hZGVyCi0gICAgc3VwcG9ydHNfcGFja2FnZXMgPSBUcnVlCisgICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuUFlfQ09NUElMRUQpCi0KLQotY2xhc3MgX0V4dGVuc2lvbkZpbmRlckRldGFpbHM6Ci0KLSAgICBsb2FkZXIgPSBfRXh0ZW5zaW9uRmlsZUxvYWRlcgotICAgIHN1cHBvcnRzX3BhY2thZ2VzID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuQ19FWFRFTlNJT04pCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZpbGVGaW5kZXIoJXIpIiAlIChzZWxmLnBhdGgsKQogCiAKICMgSW1wb3J0IGl0c2VsZiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9maWxlX3BhdGhfaG9vayhwYXRoKToKLSAgICAiIiJJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSwgcmV0dXJuIGEgZmlsZS1iYXNlZCBmaW5kZXIuIiIiCi0gICAgaWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgIHJldHVybiBfRmlsZUZpbmRlcihwYXRoLCBfRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQiKQotCi0KLV9ERUZBVUxUX1BBVEhfSE9PSyA9IF9maWxlX3BhdGhfaG9vawotCi1jbGFzcyBfRGVmYXVsdFBhdGhGaW5kZXIoUGF0aEZpbmRlcik6Ci0KLSAgICAiIiJTdWJjbGFzcyBvZiBQYXRoRmluZGVyIHRoYXQgaW1wbGVtZW50cyBpbXBsaWNpdCBzZW1hbnRpY3MgZm9yCi0gICAgX19pbXBvcnRfXy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgYXMgd2VsbCBhcyBpbXBsaWNpdCBwYXRoIGhvb2tzLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBsaWNpdF9ob29rcyA9IFtfREVGQVVMVF9QQVRIX0hPT0ssIGltcC5OdWxsSW1wb3J0ZXJdCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoLCBpbXBsaWNpdF9ob29rcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgotICAgICAgICAiIiJVc2UgdGhlIGRlZmF1bHQgcGF0aCBob29rIHdoZW4gTm9uZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCi0gICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2ltcG9ydGVyX2NhY2hlKHBhdGgsIF9ERUZBVUxUX1BBVEhfSE9PSykKLQotCiBjbGFzcyBfSW1wb3J0TG9ja0NvbnRleHQ6CiAKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRoZSBpbXBvcnQgbG9jay4iIiIKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIkFjcXVpcmUgdGhlIGltcG9ydCBsb2NrLiIiIgotICAgICAgICBpbXAuYWNxdWlyZV9sb2NrKCkKKyAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2spOgogICAgICAgICAiIiJSZWxlYXNlIHRoZSBpbXBvcnQgbG9jayByZWdhcmRsZXNzIG9mIGFueSByYWlzZWQgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAgaW1wLnJlbGVhc2VfbG9jaygpCisgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKIAogCi1fSU1QTElDSVRfTUVUQV9QQVRIID0gW0J1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIF9EZWZhdWx0UGF0aEZpbmRlcl0KK2RlZiBfcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGJpdHMgPSBwYWNrYWdlLnJzcGxpdCgnLicsIGxldmVsIC0gMSkKKyAgICBpZiBsZW4oYml0cykgPCBsZXZlbDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsIHBhY2thZ2UnKQorICAgIGJhc2UgPSBiaXRzWzBdCisgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGJhc2UsIG5hbWUpIGlmIG5hbWUgZWxzZSBiYXNlCiAKLV9FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7fScKKworZGVmIF9maW5kX21vZHVsZShuYW1lLCBwYXRoKToKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgorICAgIGlmIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgorICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfc2FuaXR5X2NoZWNrKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJWZXJpZnkgYXJndW1lbnRzIGFyZSAic2FuZSIuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgaWYgbGV2ZWwgPCAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZXZlbCBtdXN0IGJlID49IDAnKQorICAgIGlmIHBhY2thZ2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmciKQorICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICJpbXBvcnQiKQorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IobXNnLmZvcm1hdChwYWNrYWdlKSkKKyAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgbW9kdWxlIG5hbWUiKQorCisKK19FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7IXJ9JworCitkZWYgX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0Xyk6CisgICAgcGF0aCA9IE5vbmUKKyAgICBwYXJlbnQgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIGlmIHBhcmVudDoKKyAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgcGFyZW50KQorICAgICAgICAjIENyYXp5IHNpZGUtZWZmZWN0cyEKKyAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KKyAgICAgICAgcGFyZW50X21vZHVsZSA9IHN5cy5tb2R1bGVzW3BhcmVudF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICBsb2FkZXIgPSBfZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgICMgVE9ETyhicmV0dCk6IHN3aXRjaCB0byBhIHByb3BlciBNb2R1bGVOb3RGb3VuZCBleGNlcHRpb24gaW4gUHl0aG9uCisgICAgICAgICMgMy40LgorICAgICAgICBleGMuX25vdF9mb3VuZCA9IFRydWUKKyAgICAgICAgcmFpc2UgZXhjCisgICAgZWxpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgorICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnaW1wb3J0IHshcn0gIyB7IXJ9JywgbmFtZSwgbG9hZGVyKQorICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHk7IGJlIG5pY2VyIHRvIHNraXAgdGhlIGRpY3QgbG9va3VwLgorICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgaWYgcGFyZW50OgorICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgorICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQorICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCisgICAgIyBTZXQgX19wYWNrYWdlX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBTZXQgbG9hZGVyIGlmIG5lZWQgYmUuCisgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQorCisKK2RlZiBfZmluZF9hbmRfbG9hZChuYW1lLCBpbXBvcnRfKToKKyAgICAiIiJGaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUsIGFuZCByZWxlYXNlIHRoZSBpbXBvcnQgbG9jay4iIiIKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIGxvY2suYWNxdWlyZSgpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0XykKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCiAKIGRlZiBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlPU5vbmUsIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICAgYmVpbmcgbWFkZSBmcm9tLCBhbmQgdGhlIGxldmVsIGFkanVzdG1lbnQuCiAKICAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5Ci0gICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHR0aW5nIF9fcGFja2FnZV9fIGlmCisgICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHRpbmcgX19wYWNrYWdlX18gaWYKICAgICB0aGUgbG9hZGVyIGRpZCBub3QuCiAKICAgICAiIiIKLSAgICBpZiBwYWNrYWdlOgotICAgICAgICBpZiBub3QgaGFzYXR0cihwYWNrYWdlLCAncmluZGV4Jyk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nIikKLSAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG1zZyA9ICgiUGFyZW50IG1vZHVsZSB7MCFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgImltcG9ydCIpCi0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihtc2cuZm9ybWF0KHBhY2thZ2UpKQotICAgIGlmIG5vdCBuYW1lIGFuZCBsZXZlbCA9PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBtb2R1bGUgbmFtZSIpCisgICAgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgICBpZiBsZXZlbCA+IDA6Ci0gICAgICAgIGRvdCA9IGxlbihwYWNrYWdlKQotICAgICAgICBmb3IgeCBpbiByYW5nZShsZXZlbCwgMSwgLTEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRvdCA9IHBhY2thZ2UucmluZGV4KCcuJywgMCwgZG90KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvcC1sZXZlbCBwYWNrYWdlIikKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2VbOmRvdF0sIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gcGFja2FnZVs6ZG90XQotICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLmZvcm1hdChuYW1lKSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlKQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHBhcmVudCA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHBhdGggPSBOb25lCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgIGlmIHBhcmVudCBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgX2djZF9pbXBvcnQocGFyZW50KQotICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQotICAgICAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoICsgX0lNUExJQ0lUX01FVEFfUEFUSAotICAgICAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKLSAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShuYW1lLCBwYXRoKQotICAgICAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSkKLSAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCi0gICAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCi0gICAgICAgICMgU2V0IF9fcGFja2FnZV9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKLSAgICAgICAgICAgICMgV2F0Y2ggb3V0IGZvciB3aGF0IGNvbWVzIG91dCBvZiBzeXMubW9kdWxlcyB0byBub3QgYmUgYSBtb2R1bGUsCi0gICAgICAgICAgICAjIGUuZy4gYW4gaW50LgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgbmFtZSA9IF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpCisgICAgX2ltcC5hY3F1aXJlX2xvY2soKQorICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWQobmFtZSwgX2djZF9pbXBvcnQpCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIi5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCisgICAgcmV0dXJuIG1vZHVsZQorCitkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKKyAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgorCisgICAgVGhlIGltcG9ydF8gcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgbW9kdWxlIHRvCisgICAgaW1wb3J0LiBJdCBpcyByZXF1aXJlZCB0byBkZWNvdXBsZSB0aGUgZnVuY3Rpb24gZnJvbSBhc3N1bWluZyBpbXBvcnRsaWIncworICAgIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkLgorCisgICAgIiIiCisgICAgIyBUaGUgaGVsbCB0aGF0IGlzIGZyb21saXN0IC4uLgorICAgICMgSWYgYSBwYWNrYWdlIHdhcyBpbXBvcnRlZCwgdHJ5IHRvIGltcG9ydCBzdHVmZiBmcm9tIGZyb21saXN0LgorICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgaWYgJyonIGluIGZyb21saXN0OgorICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQorICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19hbGxfXycpOgorICAgICAgICAgICAgICAgIGZyb21saXN0LmV4dGVuZChtb2R1bGUuX19hbGxfXykKKyAgICAgICAgZm9yIHggaW4gZnJvbWxpc3Q6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsIHgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne30ue30nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAorICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPKGJyZXR0KTogSW4gUHl0aG9uIDMuNCwgaGF2ZSBpbXBvcnQgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIyAgIE1vZHVsZU5vdEZvdW5kIGFuZCBjYXRjaCB0aGF0LgorICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGV4YywgJ19ub3RfZm91bmQnKSBhbmQgZXhjLl9ub3RfZm91bmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgIHJldHVybiBtb2R1bGUKIAogCi1kZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0wKToKK2RlZiBfY2FsY19fX3BhY2thZ2VfXyhnbG9iYWxzKToKKyAgICAiIiJDYWxjdWxhdGUgd2hhdCBfX3BhY2thZ2VfXyBzaG91bGQgYmUuCisKKyAgICBfX3BhY2thZ2VfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkIG9yIGNvdWxkIGJlIHNldCB0byBOb25lCisgICAgdG8gcmVwcmVzZW50IHRoYXQgaXRzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duLgorCisgICAgIiIiCisgICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCisgICAgaWYgcGFja2FnZSBpcyBOb25lOgorICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQorICAgICAgICBpZiAnX19wYXRoX18nIG5vdCBpbiBnbG9iYWxzOgorICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCisgICAgcmV0dXJuIHBhY2thZ2UKKworCitkZWYgX2dldF9zdXBwb3J0ZWRfZmlsZV9sb2FkZXJzKCk6CisgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgZmlsZS1iYXNlZCBtb2R1bGUgbG9hZGVycy4KKworICAgIEVhY2ggaXRlbSBpcyBhIHR1cGxlIChsb2FkZXIsIHN1ZmZpeGVzLCBhbGxvd19wYWNrYWdlcykuCisgICAgIiIiCisgICAgZXh0ZW5zaW9ucyA9IEV4dGVuc2lvbkZpbGVMb2FkZXIsIF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkKKyAgICBzb3VyY2UgPSBTb3VyY2VGaWxlTG9hZGVyLCBTT1VSQ0VfU1VGRklYRVMKKyAgICBieXRlY29kZSA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIHJldHVybiBbZXh0ZW5zaW9ucywgc291cmNlLCBieXRlY29kZV0KKworCitkZWYgX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlLgogCiAgICAgVGhlICdnbG9iYWxzJyBhcmd1bWVudCBpcyB1c2VkIHRvIGluZmVyIHdoZXJlIHRoZSBpbXBvcnQgaXMgb2NjdXJpbmcgZnJvbQpAQCAtODUxLDQwICsxNjU1LDExMiBAQAogICAgIGltcG9ydCAoZS5nLiBgYGZyb20gLi5wa2cgaW1wb3J0IG1vZGBgIHdvdWxkIGhhdmUgYSAnbGV2ZWwnIG9mIDIpLgogCiAgICAgIiIiCi0gICAgaWYgbm90IGhhc2F0dHIobmFtZSwgJ3JwYXJ0aXRpb24nKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCiAgICAgaWYgbGV2ZWwgPT0gMDoKICAgICAgICAgbW9kdWxlID0gX2djZF9pbXBvcnQobmFtZSkKICAgICBlbHNlOgotICAgICAgICAjIF9fcGFja2FnZV9fIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIGRlZmluZWQgb3IgY291bGQgYmUgc2V0IHRvIE5vbmUKLSAgICAgICAgIyB0byByZXByZXNlbnQgdGhhdCBpdCdzIHByb3BlciB2YWx1ZSBpcyB1bmtub3duCi0gICAgICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQotICAgICAgICBpZiBwYWNrYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQotICAgICAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gcGFja2FnZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgZ2xvYmFsc18gPSBnbG9iYWxzIGlmIGdsb2JhbHMgaXMgbm90IE5vbmUgZWxzZSB7fQorICAgICAgICBwYWNrYWdlID0gX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFsc18pCiAgICAgICAgIG1vZHVsZSA9IF9nY2RfaW1wb3J0KG5hbWUsIHBhY2thZ2UsIGxldmVsKQotICAgICMgVGhlIGhlbGwgdGhhdCBpcyBmcm9tbGlzdCAuLi4KICAgICBpZiBub3QgZnJvbWxpc3Q6CiAgICAgICAgICMgUmV0dXJuIHVwIHRvIHRoZSBmaXJzdCBkb3QgaW4gJ25hbWUnLiBUaGlzIGlzIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0CiAgICAgICAgICMgdGhhdCAnbmFtZScgbWF5IGJlIHJlbGF0aXZlLgogICAgICAgICBpZiBsZXZlbCA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWUucGFydGl0aW9uKCcuJylbMF1dCisgICAgICAgICAgICByZXR1cm4gX2djZF9pbXBvcnQobmFtZS5wYXJ0aXRpb24oJy4nKVswXSkKICAgICAgICAgZWxpZiBub3QgbmFtZToKICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRmlndXJlIG91dCB3aGVyZSB0byBzbGljZSB0aGUgbW9kdWxlJ3MgbmFtZSB1cCB0byB0aGUgZmlyc3QgZG90CisgICAgICAgICAgICAjIGluICduYW1lJy4KICAgICAgICAgICAgIGN1dF9vZmYgPSBsZW4obmFtZSkgLSBsZW4obmFtZS5wYXJ0aXRpb24oJy4nKVswXSkKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1ttb2R1bGUuX19uYW1lX19bOi1jdXRfb2ZmXV0KKyAgICAgICAgICAgICMgU2xpY2UgZW5kIG5lZWRzIHRvIGJlIHBvc2l0aXZlIHRvIGFsbGV2aWF0ZSBuZWVkIHRvIHNwZWNpYWwtY2FzZQorICAgICAgICAgICAgIyB3aGVuIGBgJy4nIG5vdCBpbiBuYW1lYGAuCisgICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fWzpsZW4obW9kdWxlLl9fbmFtZV9fKS1jdXRfb2ZmXV0KICAgICBlbHNlOgotICAgICAgICAjIElmIGEgcGFja2FnZSB3YXMgaW1wb3J0ZWQsIHRyeSB0byBpbXBvcnQgc3R1ZmYgZnJvbSBmcm9tbGlzdC4KLSAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICAgICAgaWYgJyonIGluIGZyb21saXN0IGFuZCBoYXNhdHRyKG1vZHVsZSwgJ19fYWxsX18nKToKLSAgICAgICAgICAgICAgICBmcm9tbGlzdCA9IGxpc3QoZnJvbWxpc3QpCi0gICAgICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKLSAgICAgICAgICAgICAgICBmcm9tbGlzdC5leHRlbmQobW9kdWxlLl9fYWxsX18pCi0gICAgICAgICAgICBmb3IgeCBpbiAoeSBmb3IgeSBpbiBmcm9tbGlzdCBpZiBub3QgaGFzYXR0cihtb2R1bGUseSkpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX2djZF9pbXBvcnQoJ3swfS57MX0nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gbW9kdWxlCisgICAgICAgIHJldHVybiBfaGFuZGxlX2Zyb21saXN0KG1vZHVsZSwgZnJvbWxpc3QsIF9nY2RfaW1wb3J0KQorCisKKworZGVmIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CisgICAgIiIiU2V0dXAgaW1wb3J0bGliIGJ5IGltcG9ydGluZyBuZWVkZWQgYnVpbHQtaW4gbW9kdWxlcyBhbmQgaW5qZWN0aW5nIHRoZW0KKyAgICBpbnRvIHRoZSBnbG9iYWwgbmFtZXNwYWNlLgorCisgICAgQXMgc3lzIGlzIG5lZWRlZCBmb3Igc3lzLm1vZHVsZXMgYWNjZXNzIGFuZCBfaW1wIGlzIG5lZWRlZCB0byBsb2FkIGJ1aWx0LWluCisgICAgbW9kdWxlcywgdGhvc2UgdHdvIG1vZHVsZXMgbXVzdCBiZSBleHBsaWNpdGx5IHBhc3NlZCBpbi4KKworICAgICIiIgorICAgIGdsb2JhbCBfaW1wLCBzeXMsIEJZVEVDT0RFX1NVRkZJWEVTCisgICAgX2ltcCA9IF9pbXBfbW9kdWxlCisgICAgc3lzID0gc3lzX21vZHVsZQorCisgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgorICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUworICAgIGVsc2U6CisgICAgICAgIEJZVEVDT0RFX1NVRkZJWEVTID0gREVCVUdfQllURUNPREVfU1VGRklYRVMKKworICAgIGZvciBtb2R1bGUgaW4gKF9pbXAsIHN5cyk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gQnVpbHRpbkltcG9ydGVyCisKKyAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgIGZvciBidWlsdGluX25hbWUgaW4gKCdfaW8nLCAnX3dhcm5pbmdzJywgJ2J1aWx0aW5zJywgJ21hcnNoYWwnKToKKyAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9uYW1lXQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCBidWlsdGluX25hbWUsIGJ1aWx0aW5fbW9kdWxlKQorCisgICAgb3NfZGV0YWlscyA9ICgncG9zaXgnLCBbJy8nXSksICgnbnQnLCBbJ1xcJywgJy8nXSksICgnb3MyJywgWydcXCcsICcvJ10pCisgICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgorICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKKyAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQorICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1swXQorICAgICAgICBpZiBidWlsdGluX29zIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgb3NfbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9vc10KKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3NfbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKGJ1aWx0aW5fb3MpCisgICAgICAgICAgICAgICAgIyBUT0RPOiByaXAgb3V0IG9zMiBjb2RlIGFmdGVyIDMuMyBpcyByZWxlYXNlZCBhcyBwZXIgUEVQIDExCisgICAgICAgICAgICAgICAgaWYgYnVpbHRpbl9vcyA9PSAnb3MyJyBhbmQgJ0VNWCBHQ0MnIGluIHN5cy52ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1sxXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignaW1wb3J0bGliIHJlcXVpcmVzIHBvc2l4IG9yIG50JykKKworICAgIHRyeToKKyAgICAgICAgdGhyZWFkX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX3RocmVhZCcpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAjIFB5dGhvbiB3YXMgYnVpbHQgd2l0aG91dCB0aHJlYWRzCisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBOb25lCisgICAgd2Vha3JlZl9tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ193ZWFrcmVmJykKKworICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgd2lucmVnX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZSgnd2lucmVnJykKKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193aW5yZWcnLCB3aW5yZWdfbW9kdWxlKQorCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19vcycsIG9zX21vZHVsZSkKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3RocmVhZCcsIHRocmVhZF9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsIHNldChwYXRoX3NlcGFyYXRvcnMpKQorICAgICMgQ29uc3RhbnRzCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19yZWxheF9jYXNlJywgX21ha2VfcmVsYXhfY2FzZSgpKQorICAgIEVYVEVOU0lPTl9TVUZGSVhFUy5leHRlbmQoX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKSkKKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIFNPVVJDRV9TVUZGSVhFUy5hcHBlbmQoJy5weXcnKQorICAgICAgICBpZiAnX2QucHlkJyBpbiBFWFRFTlNJT05fU1VGRklYRVM6CisgICAgICAgICAgICBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuREVCVUdfQlVJTEQgPSBUcnVlCisKKworZGVmIF9pbnN0YWxsKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKKyAgICAiIiJJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorICAgIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSkKKyAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCisgICAgc3lzLnBhdGhfaG9va3MuZXh0ZW5kKFtGaWxlRmluZGVyLnBhdGhfaG9vaygqc3VwcG9ydGVkX2xvYWRlcnMpXSkKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChCdWlsdGluSW1wb3J0ZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoRnJvemVuSW1wb3J0ZXIpCisgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9hYmMucHkgYi9MaWIvaW1wb3J0bGliL2FiYy5weQppbmRleCBmYTM0M2Y4Li4zODc1NjdhIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL2FiYy5weQorKysgYi9MaWIvaW1wb3J0bGliL2FiYy5weQpAQCAtMSwxOCArMSw5NCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzc2VzIHJlbGF0ZWQgdG8gaW1wb3J0LiIiIgogZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IG1hY2hpbmVyeQotZnJvbSAuIGltcG9ydCB1dGlsCit0cnk6CisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliCitleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgIGlmIGV4Yy5uYW1lICE9ICdfZnJvemVuX2ltcG9ydGxpYic6CisgICAgICAgIHJhaXNlCisgICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCiBpbXBvcnQgYWJjCiBpbXBvcnQgaW1wCi1pbXBvcnQgaW8KIGltcG9ydCBtYXJzaGFsCi1pbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgdHlwZXMKIGltcG9ydCB3YXJuaW5ncwogCiAKK2RlZiBfcmVnaXN0ZXIoYWJzdHJhY3RfY2xzLCAqY2xhc3Nlcyk6CisgICAgZm9yIGNscyBpbiBjbGFzc2VzOgorICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoY2xzKQorICAgICAgICBpZiBfZnJvemVuX2ltcG9ydGxpYiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoZnJvemVuX2NscykKKworCitjbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKworICAgICIiIkxlZ2FjeSBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycy4KKworICAgIEl0IG1heSBiZSBzdWJjbGFzc2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IHRoaXJkIHBhcnR5CisgICAgcmVpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGltcG9ydCBzeXN0ZW0uICBPdGhlcndpc2UsIGZpbmRlcgorICAgIGltcGxlbWVudGF0aW9ucyBzaG91bGQgZGVyaXZlIGZyb20gdGhlIG1vcmUgc3BlY2lmaWMgTWV0YVBhdGhGaW5kZXIKKyAgICBvciBQYXRoRW50cnlGaW5kZXIgQUJDcy4KKyAgICAiIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IHNob3VsZCBmaW5kIGEgbW9kdWxlLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIE1ldGFQYXRoRmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycyBvbiBzeXMubWV0YV9wYXRoLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KKyAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKE1ldGFQYXRoRmluZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgbWFjaGluZXJ5LlBhdGhGaW5kZXIsIG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisKKworY2xhc3MgUGF0aEVudHJ5RmluZGVyKEZpbmRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBwYXRoIGVudHJ5IGZpbmRlcnMgdXNlZCBieSBQYXRoRmluZGVyLiIiIgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmaW5kX2xvYWRlcihzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCwgd2hlbiBpbXBsZW1lbnRlZCwgcmV0dXJucyBhIG1vZHVsZSBsb2FkZXIuCisgICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ci4gIFJldHVybnMgYSAyLXR1cGxlIG9mIChMb2FkZXIsIHBvcnRpb24pIHdoZXJlCisgICAgICAgIHBvcnRpb24gaXMgYSBzZXF1ZW5jZSBvZiBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgY29udHJpYnV0aW5nIHRvIHBhcnQgb2YKKyAgICAgICAgYSBuYW1lc3BhY2UgcGFja2FnZS4gIFRoZSBzZXF1ZW5jZSBtYXkgYmUgZW1wdHkgYW5kIHRoZSBsb2FkZXIgbWF5IGJlCisgICAgICAgIE5vbmUuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBmaW5kX21vZHVsZSA9IF9ib290c3RyYXAuX2ZpbmRfbW9kdWxlX3NoaW0KKworICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgIiIiQW4gb3B0aW9uYWwgbWV0aG9kIGZvciBjbGVhcmluZyB0aGUgZmluZGVyJ3MgY2FjaGUsIGlmIGFueS4KKyAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZCBieSBQYXRoRmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworX3JlZ2lzdGVyKFBhdGhFbnRyeUZpbmRlciwgbWFjaGluZXJ5LkZpbGVGaW5kZXIpCisKKwogY2xhc3MgTG9hZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgbG9hZGVycy4iIiIKQEAgLTIzLDIzICs5OSwxMiBAQAogICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotCi1jbGFzcyBGaW5kZXIobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKLQotICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcG9ydCBmaW5kZXJzLiIiIgotCiAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgc2hvdWxkIGZpbmQgYSBtb2R1bGUuCi0gICAgICAgIFRoZSBmdWxsbmFtZSBpcyBhIHN0ciBhbmQgdGhlIG9wdGlvbmFsIHBhdGggaXMgYSBzdHIgb3IgTm9uZS4KLSAgICAgICAgUmV0dXJucyBhIExvYWRlciBvYmplY3QuCi0gICAgICAgICIiIgorICAgIGRlZiBtb2R1bGVfcmVwcihzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyKQotRmluZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuUGF0aEZpbmRlcikKLQogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgogCkBAIC04NCw4ICsxNDksOCBAQAogICAgICAgICBtb2R1bGUuICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgc3RyLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikKLUluc3BlY3RMb2FkZXIucmVnaXN0ZXIobWFjaGluZXJ5LkZyb3plbkltcG9ydGVyKQorX3JlZ2lzdGVyKEluc3BlY3RMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQogCiAKIGNsYXNzIEV4ZWN1dGlvbkxvYWRlcihJbnNwZWN0TG9hZGVyKToKQEAgLTEwNCw2ICsxNjksMTUgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKK2NsYXNzIEZpbGVMb2FkZXIoX2Jvb3RzdHJhcC5GaWxlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgcGFydGlhbGx5IGltcGxlbWVudGluZyB0aGUgUmVzb3VyY2VMb2FkZXIgYW5kCisgICAgRXhlY3V0aW9uTG9hZGVyIEFCQ3MuIiIiCisKK19yZWdpc3RlcihGaWxlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKKworCiBjbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgbG9hZGluZyBzb3VyY2UgY29kZSAoYW5kIG9wdGlvbmFsbHkgYW55CkBAIC0xMjMsNyArMTk3LDIwIEBACiAKICAgICBkZWYgcGF0aF9tdGltZShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSAoaW50KSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBhdGggKHN0cikuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgaWYgc2VsZi5wYXRoX3N0YXRzLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX3N0YXRzOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4gaW50KHNlbGYucGF0aF9zdGF0cyhwYXRoKVsnbXRpbWUnXSkKKworICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gYSBtZXRhZGF0YSBkaWN0IGZvciB0aGUgc291cmNlIHBvaW50ZWQgdG8gYnkgdGhlIHBhdGggKHN0cikuCisgICAgICAgIFBvc3NpYmxlIGtleXM6CisgICAgICAgIC0gJ210aW1lJyAobWFuZGF0b3J5KSBpcyB0aGUgbnVtZXJpYyB0aW1lc3RhbXAgb2YgbGFzdCBzb3VyY2UKKyAgICAgICAgICBjb2RlIG1vZGlmaWNhdGlvbjsKKyAgICAgICAgLSAnc2l6ZScgKG9wdGlvbmFsKSBpcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnBhdGhfbXRpbWUuX19mdW5jX18gaXMgU291cmNlTG9hZGVyLnBhdGhfbXRpbWU6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSB0aGUgYnl0ZXMgdG8gdGhlIHBhdGggKGlmIHBvc3NpYmxlKS4KQEAgLTEzNyw2ICsyMjQsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCitfcmVnaXN0ZXIoU291cmNlTG9hZGVyLCBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogY2xhc3MgUHlMb2FkZXIoU291cmNlTG9hZGVyKToKIApAQCAtMTk1LDEwICsyODMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlZSB0aGUgaW1wb3J0bGliIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGJlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAzLjEgb253YXJkcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihuYW1lPWZ1bGxuYW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKIApAQCAtMjI2LDcgKzMxNCw3IEBACiAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIHBhdGggYXZhaWxhYmxlIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSwgbmFtZT1mdWxsbmFtZSkKIAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkdldCBhIGNvZGUgb2JqZWN0IGZyb20gc291cmNlIG9yIGJ5dGVjb2RlLiIiIgpAQCAtMjM0LDcgKzMyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlbW92YWwgaW4gUHl0aG9uIDMuNDsgdXNlIFNvdXJjZUxvYWRlciBpbnN0ZWFkLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIFB5dGhvbiAzLjEgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgc2VlIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhdGVzdCBkb2N1bWVudGF0aW9uIGZvciBQeUxvYWRlci4iLAotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc291cmNlX3RpbWVzdGFtcCA9IHNlbGYuc291cmNlX210aW1lKGZ1bGxuYW1lKQogICAgICAgICAjIFRyeSB0byB1c2UgYnl0ZWNvZGUgaWYgaXQgaXMgYXZhaWxhYmxlLgogICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5ieXRlY29kZV9wYXRoKGZ1bGxuYW1lKQpAQCAtMjQzLDIwICszMzEsMzAgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBtYWdpYyA9IGRhdGFbOjRdCiAgICAgICAgICAgICAgICAgaWYgbGVuKG1hZ2ljKSA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgIHJhd190aW1lc3RhbXAgPSBkYXRhWzQ6OF0KICAgICAgICAgICAgICAgICBpZiBsZW4ocmF3X3RpbWVzdGFtcCkgPCA0OgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiYmFkIHRpbWVzdGFtcCBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKLSAgICAgICAgICAgICAgICBweWNfdGltZXN0YW1wID0gbWFyc2hhbC5fcl9sb25nKHJhd190aW1lc3RhbXApCi0gICAgICAgICAgICAgICAgYnl0ZWNvZGUgPSBkYXRhWzg6XQorICAgICAgICAgICAgICAgIHB5Y190aW1lc3RhbXAgPSBfYm9vdHN0cmFwLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkKKyAgICAgICAgICAgICAgICByYXdfc291cmNlX3NpemUgPSBkYXRhWzg6MTJdCisgICAgICAgICAgICAgICAgaWYgbGVuKHJhd19zb3VyY2Vfc2l6ZSkgIT0gNDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCBmaWxlIHNpemUgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgIyBTb3VyY2Ugc2l6ZSBpcyB1bnVzZWQgYXMgdGhlIEFCQyBkb2VzIG5vdCBwcm92aWRlIGEgd2F5IHRvCisgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHNpemUgb2YgdGhlIHNvdXJjZSBhaGVhZCBvZiByZWFkaW5nIGl0LgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVsxMjpdCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGlzIHZhbGlkLgogICAgICAgICAgICAgICAgIGlmIGltcC5nZXRfbWFnaWMoKSAhPSBtYWdpYzoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgYnl0ZWNvZGUgaXMgbm90IHN0YWxlIChvbmx5IG1hdHRlcnMgd2hlbgogICAgICAgICAgICAgICAgICMgdGhlcmUgaXMgc291cmNlIHRvIGZhbGwgYmFjayBvbi4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wOgogICAgICAgICAgICAgICAgICAgICBpZiBweWNfdGltZXN0YW1wIDwgc291cmNlX3RpbWVzdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJieXRlY29kZSBpcyBzdGFsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUiLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICMgSWYgc291cmNlIGlzIGF2YWlsYWJsZSBnaXZlIGl0IGEgc2hvdC4KICAgICAgICAgICAgICAgICBpZiBzb3VyY2VfdGltZXN0YW1wIGlzIG5vdCBOb25lOgpAQCAtMjY4LDE4ICszNjYsMjAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbC5sb2FkcyhieXRlY29kZSkKICAgICAgICAgZWxpZiBzb3VyY2VfdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gc291cmNlIG9yIGJ5dGVjb2RlIGF2YWlsYWJsZSB0byBjcmVhdGUgY29kZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZm9yIHswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBmb3IgezAhcn0iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICAjIFVzZSB0aGUgc291cmNlLgogICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuc291cmNlX3BhdGgoZnVsbG5hbWUpCiAgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBtZXNzYWdlID0gImEgc291cmNlIHBhdGggbXVzdCBleGlzdCB0byBsb2FkIHswfSIuZm9ybWF0KGZ1bGxuYW1lKQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9ZnVsbG5hbWUpCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gY29tcGlsZShzb3VyY2UsIHNvdXJjZV9wYXRoLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQogICAgICAgICAjIEdlbmVyYXRlIGJ5dGVjb2RlIGFuZCB3cml0ZSBpdCBvdXQuCiAgICAgICAgIGlmIG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoaW1wLmdldF9tYWdpYygpKQotICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKHNvdXJjZV90aW1lc3RhbXApKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX2Jvb3RzdHJhcC5fd19sb25nKGxlbihzb3VyY2UpICYgMHhGRkZGRkZGRikpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYud3JpdGVfYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEpCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQppbmRleCA1MTk3NzQ0Li5mZjgyNmU0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQorKysgYi9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weQpAQCAtMSw1ICsxLDIwIEBACiAiIiJUaGUgbWFjaGluZXJ5IG9mIGltcG9ydGxpYjogZmluZGVycywgbG9hZGVycywgaG9va3MsIGV0Yy4iIiIKIAoraW1wb3J0IF9pbXAKKworZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgKFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTLCBCWVRFQ09ERV9TVUZGSVhFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICBFWFRFTlNJT05fU1VGRklYRVMpCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBCdWlsdGluSW1wb3J0ZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IEZyb3plbkltcG9ydGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IFBhdGhGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IEZpbGVGaW5kZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZUZpbGVMb2FkZXIKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IFNvdXJjZWxlc3NGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBFeHRlbnNpb25GaWxlTG9hZGVyCisKKworZGVmIGFsbF9zdWZmaXhlcygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGFsbCByZWNvZ25pemVkIG1vZHVsZSBzdWZmaXhlcyBmb3IgdGhpcyBwcm9jZXNzIiIiCisgICAgcmV0dXJuIFNPVVJDRV9TVUZGSVhFUyArIEJZVEVDT0RFX1NVRkZJWEVTICsgRVhURU5TSU9OX1NVRkZJWEVTCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjkuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9fX21haW5fXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGVjYzUzZC4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0iIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KLQotU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCi1idWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB1dGlsCi1pbXBvcnQgb3MucGF0aAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGlmICdfX3B5Y2FjaGVfXycgaW4gX19maWxlX186Ci0gICAgICAgIHBhcnRzID0gX19maWxlX18uc3BsaXQob3MucGF0aC5zZXApCi0gICAgICAgIHN0YXJ0X2RpciA9IHNlcC5qb2luKHBhcnRzWzotMl0pCi0gICAgZWxzZToKLSAgICAgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCi0gICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICBpZiAnLS1idWlsdGluJyBpbiBzeXMuYXJndjoKLSAgICAgICAgdXRpbC51c2luZ19fX2ltcG9ydF9fID0gVHJ1ZQotICAgIHJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZGU2YzYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2JlbmNobWFyay5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0iIiJCZW5jaG1hcmsgc29tZSBiYXNpYyBpbXBvcnQgdXNlLWNhc2VzLgotCi1UaGUgYXNzdW1wdGlvbiBpcyBtYWRlIHRoYXQgdGhpcyBiZW5jaG1hcmsgaXMgcnVuIGluIGEgZnJlc2ggaW50ZXJwcmV0ZXIgYW5kCi10aHVzIGhhcyBubyBleHRlcm5hbCBjaGFuZ2VzIG1hZGUgdG8gaW1wb3J0LXJlbGF0ZWQgYXR0cmlidXRlcyBpbiBzeXMuCi0KLSIiIgotZnJvbSAuIGltcG9ydCB1dGlsCi1mcm9tIC5zb3VyY2UgaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCBkZWNpbWFsCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgb3MKLWltcG9ydCBweV9jb21waWxlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGltZWl0Ci0KLQotZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKLSAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCi0gICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCi0gICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKLSAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQotICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6Ci0gICAgICAgIHRvdGFsX3RpbWUgPSAwCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjbGVhbnVwKCkKLSAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCi0gICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKLSAgICAgICAgICAgICAgICBjb3VudCAtPSAxCi0gICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKLQotZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJzeXMubW9kdWxlcyIiIgotICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JwotICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKLSAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJwotICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKLSAgICBuYW1lID0gJ2Vycm5vJwotICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQotICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNpbXBsZSIiIgotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgICAgICAjIENsZWFycyBvdXQgc3lzLm1vZHVsZXMgYW5kIHB1dHMgYW4gZW50cnkgYXQgdGhlIGZyb250IG9mIHN5cy5wYXRoLgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBkZWNpbWFsX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHcvbyBieXRlY29kZTogZGVjaW1hbCIiIgotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBkZWNpbWFsX2J5dGVjb2RlID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pCi0gICAgaWYgb3MucGF0aC5leGlzdHMoZGVjaW1hbF9ieXRlY29kZSk6Ci0gICAgICAgIG9zLnVubGluayhkZWNpbWFsX2J5dGVjb2RlKQotICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQotCi0KLWRlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzaW1wbGUiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgZGVmIGNsZWFudXAoKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiU291cmNlIHdyaXRpbmcgYnl0ZWNvZGU6IGRlY2ltYWwiIiIKLSAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQotICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKGRlY2ltYWwuX19maWxlX18pKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIHNvdXJjZV91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIkJ5dGVjb2RlIHcvIHNvdXJjZTogc2ltcGxlIiIiCi0gICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJwotICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKLSAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCi0gICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiQnl0ZWNvZGUgdy8gc291cmNlOiBkZWNpbWFsIiIiCi0gICAgbmFtZSA9ICdkZWNpbWFsJwotICAgIHB5X2NvbXBpbGUuY29tcGlsZShkZWNpbWFsLl9fZmlsZV9fKQotICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgbWFpbihpbXBvcnRfKToKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydF8KLSAgICBiZW5jaG1hcmtzID0gKGZyb21fY2FjaGUsIGJ1aWx0aW5fbW9kLAotICAgICAgICAgICAgICAgICAgc291cmNlX3VzaW5nX2J5dGVjb2RlLCBzb3VyY2Vfd29fYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdXNpbmdfYnl0ZWNvZGUsIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZSwKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxfd29fYnl0ZWNvZGUsKQotICAgIHNlY29uZHMgPSAxCi0gICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJwotICAgIHJlcGVhdCA9IDMKLSAgICBoZWFkZXIgPSAiTWVhc3VyaW5nIGltcG9ydHMvc2Vjb25kIG92ZXIge30gc2Vjb25ke30sIGJlc3Qgb3V0IG9mIHt9XG4iCi0gICAgcHJpbnQoaGVhZGVyLmZvcm1hdChzZWNvbmRzLCBzZWNvbmRzX3BsdXJhbCwgcmVwZWF0KSkKLSAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6Ci0gICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKLSAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCi0gICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBvcHRwYXJzZQotCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgYXJnczoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ1bnJlY29nbml6ZWQgYXJnczoge30iLmZvcm1hdChhcmdzKSkKLSAgICBpbXBvcnRfID0gX19pbXBvcnRfXwotICAgIGlmIG5vdCBvcHRpb25zLmJ1aWx0aW46Ci0gICAgICAgIGltcG9ydF8gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotCi0gICAgbWFpbihpbXBvcnRfKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYzU4NDAuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5leHRlbnNpb24nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTc4M2RiLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCi1mcm9tIC4uIGltcG9ydCBhYmMKLWZyb20gLi4gaW1wb3J0IHV0aWwKLQotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKLQotICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaWxlTG9hZGVyKGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKLSAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4dF91dGlsLk5BTUUgaW4gc3lzLm1vZHVsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbGVMb2FkZXIpKQotCi0gICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb25zIGFyZSBub3QgZm91bmQgaW4gcGFja2FnZXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgotICAgICAgICAjIEV4dGVuc2lvbnMgYXJlIG5vdCBmb3VuZCBpbiBwYWNrYWdlcy4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKLQotICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgICMgTm8gZWFzeSB3YXkgdG8gdHJpZ2dlciBhIGZhaWx1cmUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGltcG9ydC4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdhc2RmamtsOycpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NDVlZWIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5mcm96ZW4nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZjc2NjEuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuaW1wb3J0XycsIGRpcmVjdG9yeSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QodGVzdF9zdWl0ZSgpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA3NWQ0Mi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0Ci0gICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCi0KLSAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKLSAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoQVBJVGVzdCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFhZGMzMi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKLQotCi1jbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCi0KLSAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncGtnJyBpbiBzeXMubW9kdWxlcykKLQotICAgIGRlZiB0ZXN0X2JhZF9wYXJlbnQoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfbm90X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVHJ5IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbm9uLXBhY2thZ2Ugc2hvdWxkIHJhaXNlIEltcG9ydEVycm9yLgotICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc3lzLCAnX19wYXRoX18nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKLSAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGF0aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhYTIzMS4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0eXBlcyBpbXBvcnQgTWV0aG9kVHlwZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkgaXMgTm9uZSkKLQotICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCi0gICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0ICdwYXRoJyBpcyB1c2VkIHdoZW4gc2V0LgotICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyB1c2VkLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLQotICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCi0gICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGggaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBoYXMgTm9uZSB0aGF0IE5vbmUgaXMgcmV0dXJuZWQuCi0gICAgICAgIGNsZWFyX2NhY2hlID0ge3BhdGg6IE5vbmUgZm9yIHBhdGggaW4gc3lzLnBhdGh9Ci0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT1jbGVhcl9jYWNoZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiAoJ2FzeW5jaGF0JywgJ3N5cycsICc8dGVzdCBtb2R1bGU+Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG5hbWUpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lX2NvbnRpbnVlcyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgaGF2aW5nIE5vbmUgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgY2F1c2VzIHRoZSBzZWFyY2ggdG8KLSAgICAgICAgIyBjb250aW51ZS4KLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9WycxJywgJzInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2ltcG9ydGVyX2NhY2hlPXsnMSc6IE5vbmUsICcyJzogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLQotCi1jbGFzcyBEZWZhdWx0UGF0aEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLiIiIgotCi0gICAgZGVmIHRlc3RfaW1wbGljaXRfaG9va3Moc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBpbXBsaWNpdCBwYXRoIGhvb2tzIGFyZSB1c2VkLgotICAgICAgICBiYWRfcGF0aCA9ICc8cGF0aD4nCi0gICAgICAgIG1vZHVsZSA9ICc8bW9kdWxlPicKLSAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhiYWRfcGF0aCkKLSAgICAgICAgZXhpc3RpbmdfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICAgICAgbm90aGluZyA9IF9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bZXhpc3RpbmdfcGF0aF0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdGhpbmcgaXMgTm9uZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhpc3RpbmdfcGF0aCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2V4aXN0aW5nX3BhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wLk51bGxJbXBvcnRlcikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdCkKLSAgICAgICAgICAgICAgICBub3RoaW5nID0gX2Jvb3RzdHJhcC5fRGVmYXVsdFBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bYmFkX3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJhZF9wYXRoIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2JhZF9wYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuTnVsbEltcG9ydGVyKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJtZGlyKGV4aXN0aW5nX3BhdGgpCi0KLQotICAgIGRlZiB0ZXN0X3BhdGhfaW1wb3J0ZXJfY2FjaGVfaGFzX05vbmUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IHRoZSBkZWZhdWx0IGhvb2sgaXMgdXNlZCB3aGVuIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlCi0gICAgICAgICMgY29udGFpbnMgTm9uZSBmb3IgYSBwYXRoLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgICMgWFhYIE5vdCBibGFja2JveC4KLSAgICAgICAgb3JpZ2luYWxfaG9vayA9IF9ib290c3RyYXAuX0RFRkFVTFRfUEFUSF9IT09LCi0gICAgICAgIG1vY2tfaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQotICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG1vY2tfaG9vawotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IE5vbmV9KToKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSyA9IG9yaWdpbmFsX2hvb2sKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChGaW5kZXJUZXN0cywgRGVmYXVsdFBhdGhGaW5kZXJUZXN0cykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTAzYWU3Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSIiIlJ1biBQeXRob24ncyBzdGFuZGFyZCB0ZXN0IHN1aXRlIHVzaW5nIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi1UZXN0cyBrbm93biB0byBmYWlsIGJlY2F1c2Ugb2YgYXNzdW1wdGlvbnMgdGhhdCBpbXBvcnRsaWIgKHByb3Blcmx5KQotaW52YWxpZGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgc2tpcHBlZCBpZiB0aGUgZW50aXJlIHRlc3Qgc3VpdGUgaXMgcnVuLgotT3RoZXJ3aXNlIGFsbCBjb21tYW5kLWxpbmUgb3B0aW9ucyB2YWxpZCBmb3IgdGVzdC5yZWdydGVzdCBhcmUgYWxzbyB2YWxpZCBmb3IKLXRoaXMgc2NyaXB0LgotCi1YWFggRkFJTElORwotICAqIHRlc3RfaW1wb3J0Ci0gICAgLSB0ZXN0X2luY29ycmVjdF9jb2RlX25hbWUKLSAgICAgICAgZmlsZSBuYW1lIGRpZmZlcmluZyBiZXR3ZWVuIF9fZmlsZV9fIGFuZCBjb19maWxlbmFtZSAocjY4MzYwIG9uIHRydW5rKQotICAgIC0gdGVzdF9pbXBvcnRfYnlfZmlsZW5hbWUKLSAgICAgICAgZXhjZXB0aW9uIGZvciB0cnlpbmcgdG8gaW1wb3J0IGJ5IGZpbGUgbmFtZSBkb2VzIG5vdCBtYXRjaAotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCi0KLSAgICBleGNsdWRlID0gWyctLWV4Y2x1ZGUnLAotICAgICAgICAgICAgICAgICd0ZXN0X2Zyb3plbicsICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcGtnJywgICMgRG9lcyBub3QgZXhwZWN0IF9fbG9hZGVyX18gYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgJ3Rlc3RfcHlkb2MnLCAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICBdCi0KLSAgICAjIFN3aXRjaGluZyBvbiAtLWV4Y2x1ZGUgaW1wbGllcyBydW5uaW5nIGFsbCB0ZXN0IGJ1dCB0aGUgb25lcyBsaXN0ZWQsIHNvCi0gICAgIyBvbmx5IHVzZSBpdCB3aGVuIG9uZSBpcyBub3QgcnVubmluZyBhbiBleHBsaWNpdCB0ZXN0Ci0gICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgotICAgICAgICAjIE5vIHByb2dyYW1tYXRpYyB3YXkgdG8gc3BlY2lmeSB0ZXN0cyB0byBleGNsdWRlCi0gICAgICAgIHN5cy5hcmd2LmV4dGVuZChleGNsdWRlKQotCi0gICAgcmVncnRlc3QubWFpbihxdWlldD1UcnVlLCB2ZXJib3NlMj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NGY3YjYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIFBhdGhIb29rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHRoZSBwYXRoIGhvb2sgZm9yIHNvdXJjZS4iIiIKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKG1hcHBpbmdbJy5yb290J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6Ci0gICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoUGF0aEhvb2tUZXN0KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE1MTYyNi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEltcG9ydE1vZHVsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3QgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9tb2R1bGVfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygndG9wX2xldmVsJykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd0b3BfbGV2ZWwnKQotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfcGFja2FnZV9pbXBvcnQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2Ugd2l0aCBhbiBhYnNvbHV0ZSBuYW1lLgotICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCi0gICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9zaGFsbG93X3JlbGF0aXZlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHRocm91Z2ggYSByZWxhdGl2ZSBpbXBvcnQuCi0gICAgICAgIHBrZ19uYW1lID0gJ3BrZycKLSAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJwotICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCi0gICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHJlbGF0aXZlX25hbWUsIHBrZ19uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBhYnNvbHV0ZV9uYW1lKQotCi0gICAgZGVmIHRlc3RfZGVlcF9yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKLSAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmIuX19pbml0X18nLCAnYS5jJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EnKQotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ2EuYycpCi0KLSAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRfd2l0aF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZSB3aXRoCi0gICAgICAgICMgdGhlICdwYWNrYWdlJyBhcmd1bWVudCBnaXZlbi4KLSAgICAgICAgcGtnX25hbWUgPSAncGtnJwotICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKLQotICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF93b19wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFJlbGF0aXZlIGltcG9ydHMgY2Fubm90IGhhcHBlbiB3aXRob3V0IHRoZSAncGFja2FnZScgYXJndW1lbnQgYmVpbmcKLSAgICAgICAgIyBzZXQuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuc3VwcG9ydCcpCi0KLQotICAgIGRlZiB0ZXN0X2xvYWRlZF9vbmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMzU5MTogTW9kdWxlcyBzaG91bGQgb25seSBiZSBsb2FkZWQgb25jZSB3aGVuCi0gICAgICAgICMgaW5pdGlhbGl6aW5nIHRoZSBwYXJlbnQgcGFja2FnZSBhdHRlbXB0cyB0byBpbXBvcnQgdGhlCi0gICAgICAgICMgbW9kdWxlIGN1cnJlbnRseSBiZWluZyBpbXBvcnRlZC4KLSAgICAgICAgYl9sb2FkX2NvdW50ID0gMAotICAgICAgICBkZWYgbG9hZF9hKCk6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgZGVmIGxvYWRfYigpOgotICAgICAgICAgICAgbm9ubG9jYWwgYl9sb2FkX2NvdW50Ci0gICAgICAgICAgICBiX2xvYWRfY291bnQgKz0gMQotICAgICAgICBjb2RlID0geydhJzogbG9hZF9hLCAnYS5iJzogbG9hZF9ifQotICAgICAgICBtb2R1bGVzID0gWydhLl9faW5pdF9fJywgJ2EuYiddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMsIG1vZHVsZV9jb2RlPWNvZGUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhLmInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJfbG9hZF9jb3VudCwgMSkKLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMjQ0N2YuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotaW1wb3J0IGltcAotaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBNb2R1bGVGb3JMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIuIiIiCi0KLSAgICBkZWYgcmV0dXJuX21vZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcihsYW1iZGEgc2VsZiwgbW9kdWxlOiBtb2R1bGUpCi0gICAgICAgIHJldHVybiBmeG4oc2VsZiwgbmFtZSkKLQotICAgIGRlZiByYWlzZV9leGNlcHRpb24oc2VsZiwgbmFtZSk6Ci0gICAgICAgIGRlZiB0b193cmFwKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICBmeG4gPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKHRvX3dyYXApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ4bihzZWxmLCBuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9uZXdfbW9kdWxlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB3aGVuIG5vIG1vZHVsZSBleGlzdHMgaW4gc3lzLm1vZHVsZXMgYSBuZXcgbW9kdWxlIGlzCi0gICAgICAgICMgY3JlYXRlZC4KLSAgICAgICAgbW9kdWxlX25hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgotICAgICAgICBuYW1lID0gJ2EuYi5jJwotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0gICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCi0gICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmFtZSBub3QgaW4gc3lzLm1vZHVsZXMpCi0KLSAgICBkZWYgdGVzdF9yZWxvYWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBmYWlsdXJlIG9uIHJlbG9hZCBsZWF2ZXMgdGhlIG1vZHVsZSBpbi1wbGFjZS4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUobmFtZSkKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQotCi0KLWNsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLQotICAgICIiIlRlc3RzIGZvciBpbXBvcnRsaWIudXRpbC5zZXRfcGFja2FnZS4iIiIKLQotICAgIGRlZiB2ZXJpZnkoc2VsZiwgbW9kdWxlLCBleHBlY3QpOgotICAgICAgICAiIiJWZXJpZnkgdGhlIG1vZHVsZSBoYXMgdGhlIGV4cGVjdGVkIHZhbHVlIGZvciBfX3BhY2thZ2VfXyBhZnRlcgotICAgICAgICBwYXNzaW5nIHRocm91Z2ggc2V0X3BhY2thZ2UuIiIiCi0gICAgICAgIGZ4biA9IGxhbWJkYTogbW9kdWxlCi0gICAgICAgIHdyYXBwZWQgPSB1dGlsLnNldF9wYWNrYWdlKGZ4bikKLSAgICAgICAgd3JhcHBlZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBtb2R1bGUuX19wYWNrYWdlX18pCi0KLSAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6Ci0gICAgICAgICMgX19wYWNrYWdlX18gc2hvdWxkIGJlIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nIGlmIGEgdG9wLWxldmVsIG1vZHVsZS4KLSAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHdoZW4gcGFja2FnZSBpcyBzZXQgdG8gTm9uZS4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZHVsZScpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgVGVzdCBzZXR0aW5nIF9fcGFja2FnZV9fIGZvciBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cnKQotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJzxwYXRoPiddCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKLQotICAgIGRlZiB0ZXN0X3N1Ym1vZHVsZShzZWxmKToKLSAgICAgICAgIyBUZXN0IF9fcGFja2FnZV9fIGZvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdwa2cubW9kJykKLSAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gTm9uZQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICdwa2cnKQotCi0gICAgZGVmIHRlc3Rfc2V0dGluZ19pZl9taXNzaW5nKHNlbGYpOgotICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgaWYgaXQgaXMgbWlzc2luZy4KLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKToKLSAgICAgICAgICAgIGRlbGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKQotICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUsICcnKQotCi0gICAgZGVmIHRlc3RfbGVhdmluZ19hbG9uZShzZWxmKToKLSAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpcyBzZXQgYW5kIG5vdCBOb25lIHRoZW4gbGVhdmUgaXQgYWxvbmUuCi0gICAgICAgIGZvciB2YWx1ZSBpbiAoVHJ1ZSwgRmFsc2UpOgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ21vZCcpCi0gICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSB2YWx1ZQotICAgICAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCB2YWx1ZSkKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlRm9yTG9hZGVyVGVzdHMsIFNldFBhY2thZ2VUZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggN2I0NGZhMS4uMTMxNjQzNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMywzICszLDE5IEBACiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBtb2R1bGVfZm9yX2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc2V0X3BhY2thZ2UKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IF9yZXNvbHZlX25hbWUKKworCitkZWYgcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpOgorICAgICIiIlJlc29sdmUgYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSB0byBhbiBhYnNvbHV0ZSBvbmUuIiIiCisgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICByZXR1cm4gbmFtZQorICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICBsZXZlbCA9IDAKKyAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CisgICAgICAgIGlmIGNoYXJhY3RlciAhPSAnLic6CisgICAgICAgICAgICBicmVhaworICAgICAgICBsZXZlbCArPSAxCisgICAgcmV0dXJuIF9yZXNvbHZlX25hbWUobmFtZVtsZXZlbDpdLCBwYWNrYWdlLCBsZXZlbCkKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggMjAzMTc1NS4uODhmMGVlMiAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTIyLDI0ICsyMiwyOSBAQAogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKICAgICBjdXJyZW50ZnJhbWUoKSAtIGdldCB0aGUgY3VycmVudCBzdGFjayBmcmFtZQogICAgIHN0YWNrKCksIHRyYWNlKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMgb24gdGhlIHN0YWNrIG9yIGluIGEgdHJhY2ViYWNrCisKKyAgICBzaWduYXR1cmUoKSAtIGdldCBhIFNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBjYWxsYWJsZQogIiIiCiAKICMgVGhpcyBtb2R1bGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uICBObyB3YXJyYW50aWVzLgogCi1fX2F1dGhvcl9fID0gJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JwotX19kYXRlX18gPSAnMSBKYW4gMjAwMScKK19fYXV0aG9yX18gPSAoJ0thLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+JywKKyAgICAgICAgICAgICAgJ1l1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPicpCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHR5cGVzCi1pbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgcmUKIGltcG9ydCBpbXAKLWltcG9ydCB0b2tlbml6ZQoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB0eXBlcworaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgYnVpbHRpbnMKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0CiAKICMgQ3JlYXRlIGNvbnN0YW50cyBmb3IgdGhlIGNvbXBpbGVyIGZsYWdzIGluIEluY2x1ZGUvY29kZS5oCiAjIFdlIHRyeSB0byBnZXQgdGhlbSBmcm9tIGRpcyB0byBhdm9pZCBkdXBsaWNhdGlvbiwgYnV0IGZhbGwKQEAgLTQzMyw2ICs0MzgsOCBAQAogCiBkZWYgZ2V0bW9kdWxlaW5mbyhwYXRoKToKICAgICAiIiJHZXQgdGhlIG1vZHVsZSBuYW1lLCBzdWZmaXgsIG1vZGUsIGFuZCBtb2R1bGUgdHlwZSBmb3IgYSBnaXZlbiBmaWxlLiIiIgorICAgIHdhcm5pbmdzLndhcm4oJ2luc3BlY3QuZ2V0bW9kdWxlaW5mbygpIGlzIGRlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAyKQogICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQogICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCiAgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KQEAgLTQ0MywyMCArNDUwLDI5IEBACiAKIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKLSAgICBpbmZvID0gZ2V0bW9kdWxlaW5mbyhwYXRoKQotICAgIGlmIGluZm86IHJldHVybiBpbmZvWzBdCisgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCisgICAgIyBDaGVjayBmb3IgcGF0aHMgdGhhdCBsb29rIGxpa2UgYW4gYWN0dWFsIG1vZHVsZSBmaWxlCisgICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4KQorICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4IGluIGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCldCisgICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCisgICAgZm9yIG5lZ2xlbiwgc3VmZml4IGluIHN1ZmZpeGVzOgorICAgICAgICBpZiBmbmFtZS5lbmRzd2l0aChzdWZmaXgpOgorICAgICAgICAgICAgcmV0dXJuIGZuYW1lWzpuZWdsZW5dCisgICAgcmV0dXJuIE5vbmUKIAogZGVmIGdldHNvdXJjZWZpbGUob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdGhlIGZpbGVuYW1lIHRoYXQgY2FuIGJlIHVzZWQgdG8gbG9jYXRlIGFuIG9iamVjdCdzIHNvdXJjZS4KICAgICBSZXR1cm4gTm9uZSBpZiBubyB3YXkgY2FuIGJlIGlkZW50aWZpZWQgdG8gZ2V0IHRoZSBzb3VyY2UuCiAgICAgIiIiCiAgICAgZmlsZW5hbWUgPSBnZXRmaWxlKG9iamVjdCkKLSAgICBpZiBmaWxlbmFtZVstNDpdLmxvd2VyKCkgaW4gKCcucHljJywgJy5weW8nKToKLSAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTRdICsgJy5weScKLSAgICBmb3Igc3VmZml4LCBtb2RlLCBraW5kIGluIGltcC5nZXRfc3VmZml4ZXMoKToKLSAgICAgICAgaWYgJ2InIGluIG1vZGUgYW5kIGZpbGVuYW1lWy1sZW4oc3VmZml4KTpdLmxvd2VyKCkgPT0gc3VmZml4OgotICAgICAgICAgICAgIyBMb29rcyBsaWtlIGEgYmluYXJ5IGZpbGUuICBXZSB3YW50IHRvIG9ubHkgcmV0dXJuIGEgdGV4dCBmaWxlLgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBhbGxfYnl0ZWNvZGVfc3VmZml4ZXMgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkRFQlVHX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgYWxsX2J5dGVjb2RlX3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTWzpdCisgICAgaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluIGFsbF9ieXRlY29kZV9zdWZmaXhlcyk6CisgICAgICAgIGZpbGVuYW1lID0gKG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdICsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbMF0pCisgICAgZWxpZiBhbnkoZmlsZW5hbWUuZW5kc3dpdGgocykgZm9yIHMgaW4KKyAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpOgorICAgICAgICByZXR1cm4gTm9uZQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgIyBvbmx5IHJldHVybiBhIG5vbi1leGlzdGVudCBmaWxlbmFtZSBpZiB0aGUgbW9kdWxlIGhhcyBhIFBFUCAzMDIgbG9hZGVyCkBAIC05MzEsNiArOTQ3LDQzIEBACiAgICAgICAgIHNwZWNzLmFwcGVuZChmb3JtYXR2YXJrdyh2YXJrdykgKyBmb3JtYXR2YWx1ZShsb2NhbHNbdmFya3ddKSkKICAgICByZXR1cm4gJygnICsgJywgJy5qb2luKHNwZWNzKSArICcpJwogCitkZWYgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgYXJnbmFtZXMsIHBvcywgdmFsdWVzKToKKyAgICBuYW1lcyA9IFtyZXByKG5hbWUpIGZvciBuYW1lIGluIGFyZ25hbWVzIGlmIG5hbWUgbm90IGluIHZhbHVlc10KKyAgICBtaXNzaW5nID0gbGVuKG5hbWVzKQorICAgIGlmIG1pc3NpbmcgPT0gMToKKyAgICAgICAgcyA9IG5hbWVzWzBdCisgICAgZWxpZiBtaXNzaW5nID09IDI6CisgICAgICAgIHMgPSAie30gYW5kIHt9Ii5mb3JtYXQoKm5hbWVzKQorICAgIGVsc2U6CisgICAgICAgIHRhaWwgPSAiLCB7fSBhbmQge30iLmZvcm1hdChuYW1lc1stMjpdKQorICAgICAgICBkZWwgbmFtZXNbLTI6XQorICAgICAgICBzID0gIiwgIi5qb2luKG5hbWVzKSArIHRhaWwKKyAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgbWlzc2luZyAlaSByZXF1aXJlZCAlcyBhcmd1bWVudCVzOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBtaXNzaW5nLAorICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGlvbmFsIiBpZiBwb3MgZWxzZSAia2V5d29yZC1vbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAiIiBpZiBtaXNzaW5nID09IDEgZWxzZSAicyIsIHMpKQorCitkZWYgX3Rvb19tYW55KGZfbmFtZSwgYXJncywga3dvbmx5LCB2YXJhcmdzLCBkZWZjb3VudCwgZ2l2ZW4sIHZhbHVlcyk6CisgICAgYXRsZWFzdCA9IGxlbihhcmdzKSAtIGRlZmNvdW50CisgICAga3dvbmx5X2dpdmVuID0gbGVuKFthcmcgZm9yIGFyZyBpbiBrd29ubHkgaWYgYXJnIGluIHZhbHVlc10pCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgcGx1cmFsID0gYXRsZWFzdCAhPSAxCisgICAgICAgIHNpZyA9ICJhdCBsZWFzdCAlZCIgJSAoYXRsZWFzdCwpCisgICAgZWxpZiBkZWZjb3VudDoKKyAgICAgICAgcGx1cmFsID0gVHJ1ZQorICAgICAgICBzaWcgPSAiZnJvbSAlZCB0byAlZCIgJSAoYXRsZWFzdCwgbGVuKGFyZ3MpKQorICAgIGVsc2U6CisgICAgICAgIHBsdXJhbCA9IGxlbihhcmdzKSAhPSAxCisgICAgICAgIHNpZyA9IHN0cihsZW4oYXJncykpCisgICAga3dvbmx5X3NpZyA9ICIiCisgICAgaWYga3dvbmx5X2dpdmVuOgorICAgICAgICBtc2cgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSIKKyAgICAgICAga3dvbmx5X3NpZyA9IChtc2cgJSAoInMiIGlmIGdpdmVuICE9IDEgZWxzZSAiIiwga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIgaWYga3dvbmx5X2dpdmVuICE9IDEgZWxzZSAiIikpCisgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIHRha2VzICVzIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlcyAlcyBnaXZlbiIgJQorICAgICAgICAgICAgKGZfbmFtZSwgc2lnLCAicyIgaWYgcGx1cmFsIGVsc2UgIiIsIGdpdmVuLCBrd29ubHlfc2lnLAorICAgICAgICAgICAgICJ3YXMiIGlmIGdpdmVuID09IDEgYW5kIG5vdCBrd29ubHlfZ2l2ZW4gZWxzZSAid2VyZSIpKQorCiBkZWYgZ2V0Y2FsbGFyZ3MoZnVuYywgKnBvc2l0aW9uYWwsICoqbmFtZWQpOgogICAgICIiIkdldCB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMgdG8gdmFsdWVzLgogCkBAIC05NDIsNjYgKzk5NSwxMDggQEAKICAgICBmX25hbWUgPSBmdW5jLl9fbmFtZV9fCiAgICAgYXJnMnZhbHVlID0ge30KIAorCiAgICAgaWYgaXNtZXRob2QoZnVuYykgYW5kIGZ1bmMuX19zZWxmX18gaXMgbm90IE5vbmU6CiAgICAgICAgICMgaW1wbGljaXQgJ3NlbGYnIChvciAnY2xzJyBmb3IgY2xhc3NtZXRob2RzKSBhcmd1bWVudAogICAgICAgICBwb3NpdGlvbmFsID0gKGZ1bmMuX19zZWxmX18sKSArIHBvc2l0aW9uYWwKICAgICBudW1fcG9zID0gbGVuKHBvc2l0aW9uYWwpCi0gICAgbnVtX3RvdGFsID0gbnVtX3BvcyArIGxlbihuYW1lZCkKICAgICBudW1fYXJncyA9IGxlbihhcmdzKQogICAgIG51bV9kZWZhdWx0cyA9IGxlbihkZWZhdWx0cykgaWYgZGVmYXVsdHMgZWxzZSAwCi0gICAgZm9yIGFyZywgdmFsdWUgaW4gemlwKGFyZ3MsIHBvc2l0aW9uYWwpOgotICAgICAgICBhcmcydmFsdWVbYXJnXSA9IHZhbHVlCi0gICAgaWYgdmFyYXJnczoKLSAgICAgICAgaWYgbnVtX3BvcyA+IG51bV9hcmdzOgotICAgICAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gcG9zaXRpb25hbFstKG51bV9wb3MtbnVtX2FyZ3MpOl0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9ICgpCi0gICAgZWxpZiAwIDwgbnVtX2FyZ3MgPCBudW1fcG9zOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgJXMgJWQgcG9zaXRpb25hbCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IG1vc3QnIGlmIGRlZmF1bHRzIGVsc2UgJ2V4YWN0bHknLCBudW1fYXJncywKLSAgICAgICAgICAgICdhcmd1bWVudHMnIGlmIG51bV9hcmdzID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCi0gICAgZWxpZiBudW1fYXJncyA9PSAwIGFuZCBudW1fdG90YWw6Ci0gICAgICAgIGlmIHZhcmt3IG9yIGt3b25seWFyZ3M6Ci0gICAgICAgICAgICBpZiBudW1fcG9zOgotICAgICAgICAgICAgICAgICMgWFhYOiBXZSBzaG91bGQgdXNlIG51bV9wb3MsIGJ1dCBQeXRob24gYWxzbyB1c2VzIG51bV90b3RhbDoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgZXhhY3RseSAwIHBvc2l0aW9uYWwgYXJndW1lbnRzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyglZCBnaXZlbiknICUgKGZfbmFtZSwgbnVtX3RvdGFsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIG51bV90b3RhbCkpCiAKLSAgICBmb3IgYXJnIGluIGl0ZXJ0b29scy5jaGFpbihhcmdzLCBrd29ubHlhcmdzKToKLSAgICAgICAgaWYgYXJnIGluIG5hbWVkOgotICAgICAgICAgICAgaWYgYXJnIGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnJXMnIiAlIChmX25hbWUsIGFyZykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gbmFtZWQucG9wKGFyZykKLSAgICBmb3Iga3dvbmx5YXJnIGluIGt3b25seWFyZ3M6Ci0gICAgICAgIGlmIGt3b25seWFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVtrd29ubHlhcmddID0ga3dvbmx5ZGVmYXVsdHNba3dvbmx5YXJnXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBuZWVkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3dvbmx5YXJnKSkKLSAgICBpZiBkZWZhdWx0czogICAgIyBmaWxsIGluIGFueSBtaXNzaW5nIHZhbHVlcyB3aXRoIHRoZSBkZWZhdWx0cwotICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiB6aXAoYXJnc1stbnVtX2RlZmF1bHRzOl0sIGRlZmF1bHRzKToKLSAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgotICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gdmFsdWUKKyAgICBuID0gbWluKG51bV9wb3MsIG51bV9hcmdzKQorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBhcmcydmFsdWVbYXJnc1tpXV0gPSBwb3NpdGlvbmFsW2ldCisgICAgaWYgdmFyYXJnczoKKyAgICAgICAgYXJnMnZhbHVlW3ZhcmFyZ3NdID0gdHVwbGUocG9zaXRpb25hbFtuOl0pCisgICAgcG9zc2libGVfa3dhcmdzID0gc2V0KGFyZ3MgKyBrd29ubHlhcmdzKQogICAgIGlmIHZhcmt3OgotICAgICAgICBhcmcydmFsdWVbdmFya3ddID0gbmFtZWQKLSAgICBlbGlmIG5hbWVkOgotICAgICAgICB1bmV4cGVjdGVkID0gbmV4dChpdGVyKG5hbWVkKSkKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVzJyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgdW5leHBlY3RlZCkpCi0gICAgdW5hc3NpZ25lZCA9IG51bV9hcmdzIC0gbGVuKFthcmcgZm9yIGFyZyBpbiBhcmdzIGlmIGFyZyBpbiBhcmcydmFsdWVdKQotICAgIGlmIHVuYXNzaWduZWQ6Ci0gICAgICAgIG51bV9yZXF1aXJlZCA9IG51bV9hcmdzIC0gbnVtX2RlZmF1bHRzCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSB0YWtlcyAlcyAlZCAlcyAoJWQgZ2l2ZW4pJyAlICgKLSAgICAgICAgICAgIGZfbmFtZSwgJ2F0IGxlYXN0JyBpZiBkZWZhdWx0cyBlbHNlICdleGFjdGx5JywgbnVtX3JlcXVpcmVkLAotICAgICAgICAgICAgJ2FyZ3VtZW50cycgaWYgbnVtX3JlcXVpcmVkID4gMSBlbHNlICdhcmd1bWVudCcsIG51bV90b3RhbCkpCisgICAgICAgIGFyZzJ2YWx1ZVt2YXJrd10gPSB7fQorICAgIGZvciBrdywgdmFsdWUgaW4gbmFtZWQuaXRlbXMoKToKKyAgICAgICAgaWYga3cgbm90IGluIHBvc3NpYmxlX2t3YXJnczoKKyAgICAgICAgICAgIGlmIG5vdCB2YXJrdzoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgICAgICBhcmcydmFsdWVbdmFya3ddW2t3XSA9IHZhbHVlCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBrdyBpbiBhcmcydmFsdWU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBrdykpCisgICAgICAgIGFyZzJ2YWx1ZVtrd10gPSB2YWx1ZQorICAgIGlmIG51bV9wb3MgPiBudW1fYXJncyBhbmQgbm90IHZhcmFyZ3M6CisgICAgICAgIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seWFyZ3MsIHZhcmFyZ3MsIG51bV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICBudW1fcG9zLCBhcmcydmFsdWUpCisgICAgaWYgbnVtX3BvcyA8IG51bV9hcmdzOgorICAgICAgICByZXEgPSBhcmdzWzpudW1fYXJncyAtIG51bV9kZWZhdWx0c10KKyAgICAgICAgZm9yIGFyZyBpbiByZXE6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCByZXEsIFRydWUsIGFyZzJ2YWx1ZSkKKyAgICAgICAgZm9yIGksIGFyZyBpbiBlbnVtZXJhdGUoYXJnc1tudW1fYXJncyAtIG51bV9kZWZhdWx0czpdKToKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVthcmddID0gZGVmYXVsdHNbaV0KKyAgICBtaXNzaW5nID0gMAorICAgIGZvciBrd2FyZyBpbiBrd29ubHlhcmdzOgorICAgICAgICBpZiBrd2FyZyBub3QgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgaWYga3dhcmcgaW4ga3dvbmx5ZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgYXJnMnZhbHVlW2t3YXJnXSA9IGt3b25seWRlZmF1bHRzW2t3YXJnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtaXNzaW5nICs9IDEKKyAgICBpZiBtaXNzaW5nOgorICAgICAgICBfbWlzc2luZ19hcmd1bWVudHMoZl9uYW1lLCBrd29ubHlhcmdzLCBGYWxzZSwgYXJnMnZhbHVlKQogICAgIHJldHVybiBhcmcydmFsdWUKIAorQ2xvc3VyZVZhcnMgPSBuYW1lZHR1cGxlKCdDbG9zdXJlVmFycycsICdub25sb2NhbHMgZ2xvYmFscyBidWlsdGlucyB1bmJvdW5kJykKKworZGVmIGdldGNsb3N1cmV2YXJzKGZ1bmMpOgorICAgICIiIgorICAgIEdldCB0aGUgbWFwcGluZyBvZiBmcmVlIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIFJldHVybnMgYSBuYW1lZCB0dXBsZSBvZiBkaWN0cyBtYXBwaW5nIHRoZSBjdXJyZW50IG5vbmxvY2FsLCBnbG9iYWwKKyAgICBhbmQgYnVpbHRpbiByZWZlcmVuY2VzIGFzIHNlZW4gYnkgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLiBBIGZpbmFsCisgICAgc2V0IG9mIHVuYm91bmQgbmFtZXMgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgaXMgYWxzbyBwcm92aWRlZC4KKyAgICAiIiIKKworICAgIGlmIGlzbWV0aG9kKGZ1bmMpOgorICAgICAgICBmdW5jID0gZnVuYy5fX2Z1bmNfXworCisgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3shcn0nIGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbiIuZm9ybWF0KGZ1bmMpKQorCisgICAgY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICAjIE5vbmxvY2FsIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX2ZyZWV2YXJzIGFuZCByZXNvbHZlZAorICAgICMgYnkgbG9va2luZyB0aGVtIHVwIGluIF9fY2xvc3VyZV9fIGJ5IHBvc2l0aW9uYWwgaW5kZXgKKyAgICBpZiBmdW5jLl9fY2xvc3VyZV9fIGlzIE5vbmU6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7fQorICAgIGVsc2U6CisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7CisgICAgICAgICAgICB2YXIgOiBjZWxsLmNlbGxfY29udGVudHMKKyAgICAgICAgICAgIGZvciB2YXIsIGNlbGwgaW4gemlwKGNvZGUuY29fZnJlZXZhcnMsIGZ1bmMuX19jbG9zdXJlX18pCisgICAgICAgfQorCisgICAgIyBHbG9iYWwgYW5kIGJ1aWx0aW4gcmVmZXJlbmNlcyBhcmUgbmFtZWQgaW4gY29fbmFtZXMgYW5kIHJlc29sdmVkCisgICAgIyBieSBsb29raW5nIHRoZW0gdXAgaW4gX19nbG9iYWxzX18gb3IgX19idWlsdGluc19fCisgICAgZ2xvYmFsX25zID0gZnVuYy5fX2dsb2JhbHNfXworICAgIGJ1aWx0aW5fbnMgPSBnbG9iYWxfbnMuZ2V0KCJfX2J1aWx0aW5zX18iLCBidWlsdGlucy5fX2RpY3RfXykKKyAgICBpZiBpc21vZHVsZShidWlsdGluX25zKToKKyAgICAgICAgYnVpbHRpbl9ucyA9IGJ1aWx0aW5fbnMuX19kaWN0X18KKyAgICBnbG9iYWxfdmFycyA9IHt9CisgICAgYnVpbHRpbl92YXJzID0ge30KKyAgICB1bmJvdW5kX25hbWVzID0gc2V0KCkKKyAgICBmb3IgbmFtZSBpbiBjb2RlLmNvX25hbWVzOgorICAgICAgICBpZiBuYW1lIGluICgiTm9uZSIsICJUcnVlIiwgIkZhbHNlIik6CisgICAgICAgICAgICAjIEJlY2F1c2UgdGhlc2UgdXNlZCB0byBiZSBidWlsdGlucyBpbnN0ZWFkIG9mIGtleXdvcmRzLCB0aGV5CisgICAgICAgICAgICAjIG1heSBzdGlsbCBzaG93IHVwIGFzIG5hbWUgcmVmZXJlbmNlcy4gV2UgaWdub3JlIHRoZW0uCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnbG9iYWxfdmFyc1tuYW1lXSA9IGdsb2JhbF9uc1tuYW1lXQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzW25hbWVdID0gYnVpbHRpbl9uc1tuYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHVuYm91bmRfbmFtZXMuYWRkKG5hbWUpCisKKyAgICByZXR1cm4gQ2xvc3VyZVZhcnMobm9ubG9jYWxfdmFycywgZ2xvYmFsX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGFjayBmcmFtZSBleHRyYWN0aW9uCiAKIFRyYWNlYmFjayA9IG5hbWVkdHVwbGUoJ1RyYWNlYmFjaycsICdmaWxlbmFtZSBsaW5lbm8gZnVuY3Rpb24gY29kZV9jb250ZXh0IGluZGV4JykKQEAgLTExNzEsNiArMTI2Niw4IEBACiAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikKIAogCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBnZW5lcmF0b3IgaW50cm9zcGVjdGlvbgorCiBHRU5fQ1JFQVRFRCA9ICdHRU5fQ1JFQVRFRCcKIEdFTl9SVU5OSU5HID0gJ0dFTl9SVU5OSU5HJwogR0VOX1NVU1BFTkRFRCA9ICdHRU5fU1VTUEVOREVEJwpAQCAtMTE5MiwzICsxMjg5LDc4NSBAQAogICAgIGlmIGdlbmVyYXRvci5naV9mcmFtZS5mX2xhc3RpID09IC0xOgogICAgICAgICByZXR1cm4gR0VOX0NSRUFURUQKICAgICByZXR1cm4gR0VOX1NVU1BFTkRFRAorCisKK2RlZiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIG1hcHBpbmcgb2YgZ2VuZXJhdG9yIGxvY2FsIHZhcmlhYmxlcyB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4KKworICAgIEEgZGljdCBpcyByZXR1cm5lZCwgd2l0aCB0aGUga2V5cyB0aGUgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHZhbHVlcyB0aGUKKyAgICBib3VuZCB2YWx1ZXMuIiIiCisKKyAgICBpZiBub3QgaXNnZW5lcmF0b3IoZ2VuZXJhdG9yKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIneyFyfScgaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciIuZm9ybWF0KGdlbmVyYXRvcikpCisKKyAgICBmcmFtZSA9IGdldGF0dHIoZ2VuZXJhdG9yLCAiZ2lfZnJhbWUiLCBOb25lKQorICAgIGlmIGZyYW1lIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmdpX2ZyYW1lLmZfbG9jYWxzCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHt9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0IChQRVAgMzYyKQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKK19XcmFwcGVyRGVzY3JpcHRvciA9IHR5cGUodHlwZS5fX2NhbGxfXykKK19NZXRob2RXcmFwcGVyID0gdHlwZShhbGwuX19jYWxsX18pCisKK19Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyA9IChfV3JhcHBlckRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX01ldGhvZFdyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSkKKworCitkZWYgX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKGNscywgbWV0aG9kX25hbWUpOgorICAgIHRyeToKKyAgICAgICAgbWV0aCA9IGdldGF0dHIoY2xzLCBtZXRob2RfbmFtZSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHJldHVybgorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1ldGgsIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CisgICAgICAgICAgICAjIE9uY2UgJ19fc2lnbmF0dXJlX18nIHdpbGwgYmUgYWRkZWQgdG8gJ0MnLWxldmVsCisgICAgICAgICAgICAjIGNhbGxhYmxlcywgdGhpcyBjaGVjayB3b24ndCBiZSBuZWNlc3NhcnkKKyAgICAgICAgICAgIHJldHVybiBtZXRoCisKKworZGVmIHNpZ25hdHVyZShvYmopOgorICAgICcnJ0dldCBhIHNpZ25hdHVyZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQgY2FsbGFibGUuJycnCisKKyAgICBpZiBub3QgY2FsbGFibGUob2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZworICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouX19mdW5jX18pCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisKKyAgICB0cnk6CisgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgaWYgc2lnIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNpZworCisgICAgdHJ5OgorICAgICAgICAjIFdhcyB0aGlzIGZ1bmN0aW9uIHdyYXBwZWQgYnkgYSBkZWNvcmF0b3I/CisgICAgICAgIHdyYXBwZWQgPSBvYmouX193cmFwcGVkX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gc2lnbmF0dXJlKHdyYXBwZWQpCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBmdW5jdG9vbHMucGFydGlhbCk6CisgICAgICAgIHNpZyA9IHNpZ25hdHVyZShvYmouZnVuYykKKworICAgICAgICBuZXdfcGFyYW1zID0gT3JkZXJlZERpY3Qoc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSkKKworICAgICAgICBwYXJ0aWFsX2FyZ3MgPSBvYmouYXJncyBvciAoKQorICAgICAgICBwYXJ0aWFsX2tleXdvcmRzID0gb2JqLmtleXdvcmRzIG9yIHt9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhID0gc2lnLmJpbmRfcGFydGlhbCgqcGFydGlhbF9hcmdzLCAqKnBhcnRpYWxfa2V5d29yZHMpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBtc2cgPSAncGFydGlhbCBvYmplY3QgeyFyfSBoYXMgaW5jb3JyZWN0IGFyZ3VtZW50cycuZm9ybWF0KG9iaikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKSBmcm9tIGV4CisKKyAgICAgICAgZm9yIGFyZ19uYW1lLCBhcmdfdmFsdWUgaW4gYmEuYXJndW1lbnRzLml0ZW1zKCk6CisgICAgICAgICAgICBwYXJhbSA9IG5ld19wYXJhbXNbYXJnX25hbWVdCisgICAgICAgICAgICBpZiBhcmdfbmFtZSBpbiBwYXJ0aWFsX2tleXdvcmRzOgorICAgICAgICAgICAgICAgICMgV2Ugc2V0IGEgbmV3IGRlZmF1bHQgdmFsdWUsIGJlY2F1c2UgdGhlIGZvbGxvd2luZyBjb2RlCisgICAgICAgICAgICAgICAgIyBpcyBjb3JyZWN0OgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjICAgPj4+IGRlZiBmb28oYSk6IHByaW50KGEpCisgICAgICAgICAgICAgICAgIyAgID4+PiBwcmludChwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkoKSkKKyAgICAgICAgICAgICAgICAjICAgMjAKKyAgICAgICAgICAgICAgICAjICAgPj4+IHByaW50KHBhcnRpYWwocGFydGlhbChmb28sIGE9MTApLCBhPTIwKShhPTMwKSkKKyAgICAgICAgICAgICAgICAjICAgMzAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBTbywgd2l0aCAncGFydGlhbCcgb2JqZWN0cywgcGFzc2luZyBhIGtleXdvcmQgYXJndW1lbnQgaXMKKyAgICAgICAgICAgICAgICAjIGxpa2Ugc2V0dGluZyBhIG5ldyBkZWZhdWx0IHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgV2UgYWxzbyBtYXJrIHRoaXMgcGFyYW1ldGVyIHdpdGggJ19wYXJ0aWFsX2t3YXJnJworICAgICAgICAgICAgICAgICMgZmxhZy4gIExhdGVyLCBpbiAnX2JpbmQnLCB0aGUgJ2RlZmF1bHQnIHZhbHVlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlciB3aWxsIGJlIGFkZGVkIHRvICdrd2FyZ3MnLCB0byBzaW11bGF0ZQorICAgICAgICAgICAgICAgICMgdGhlICdmdW5jdG9vbHMucGFydGlhbCcgcmVhbCBjYWxsLgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXNbYXJnX25hbWVdID0gcGFyYW0ucmVwbGFjZShkZWZhdWx0PWFyZ192YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9VHJ1ZSkKKworICAgICAgICAgICAgZWxpZiAocGFyYW0ua2luZCBub3QgaW4gKF9WQVJfS0VZV09SRCwgX1ZBUl9QT1NJVElPTkFMKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgIG5ld19wYXJhbXMucG9wKGFyZ19uYW1lKQorCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisKKyAgICBzaWcgPSBOb25lCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAjIG9iaiBpcyBhIGNsYXNzIG9yIGEgbWV0YWNsYXNzCisKKyAgICAgICAgIyBGaXJzdCwgbGV0J3Mgc2VlIGlmIGl0IGhhcyBhbiBvdmVybG9hZGVkIF9fY2FsbF9fIGRlZmluZWQKKyAgICAgICAgIyBpbiBpdHMgbWV0YWNsYXNzCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE5vdyB3ZSBjaGVjayBpZiB0aGUgJ29iaicgY2xhc3MgaGFzIGEgJ19fbmV3X18nIG1ldGhvZAorICAgICAgICAgICAgbmV3ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19fbmV3X18nKQorICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShuZXcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICBpbml0ID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKG9iaiwgJ19faW5pdF9fJykKKyAgICAgICAgICAgICAgICBpZiBpbml0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzaWcgPSBzaWduYXR1cmUoaW5pdCkKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG9iaiwgX05vblVzZXJEZWZpbmVkQ2FsbGFibGVzKToKKyAgICAgICAgIyBBbiBvYmplY3Qgd2l0aCBfX2NhbGxfXworICAgICAgICAjIFdlIGFsc28gY2hlY2sgdGhhdCB0aGUgJ29iaicgaXMgbm90IGFuIGluc3RhbmNlIG9mCisgICAgICAgICMgX1dyYXBwZXJEZXNjcmlwdG9yIG9yIF9NZXRob2RXcmFwcGVyIHRvIGF2b2lkCisgICAgICAgICMgaW5maW5pdGUgcmVjdXJzaW9uIChhbmQgZXZlbiBwb3RlbnRpYWwgc2VnZmF1bHQpCisgICAgICAgIGNhbGwgPSBfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQorICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGNhbGwpCisKKyAgICBpZiBzaWcgaXMgbm90IE5vbmU6CisgICAgICAgICMgRm9yIGNsYXNzZXMgYW5kIG9iamVjdHMgd2Ugc2tpcCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIHRoZWlyCisgICAgICAgICMgX19jYWxsX18sIF9fbmV3X18sIG9yIF9faW5pdF9fIG1ldGhvZHMKKyAgICAgICAgcmV0dXJuIHNpZy5yZXBsYWNlKHBhcmFtZXRlcnM9dHVwbGUoc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzE6XSkKKworICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlKToKKyAgICAgICAgIyBSYWlzZSBhIG5pY2VyIGVycm9yIG1lc3NhZ2UgZm9yIGJ1aWx0aW5zCisgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24geyFyfScuZm9ybWF0KG9iaikKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCdjYWxsYWJsZSB7IXJ9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc2lnbmF0dXJlJy5mb3JtYXQob2JqKSkKKworCitjbGFzcyBfdm9pZDoKKyAgICAnJydBIHByaXZhdGUgbWFya2VyIC0gdXNlZCBpbiBQYXJhbWV0ZXIgJiBTaWduYXR1cmUnJycKKworCitjbGFzcyBfZW1wdHk6CisgICAgcGFzcworCisKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGludCk6CisgICAgZGVmIF9fbmV3X18oc2VsZiwgKmFyZ3MsIG5hbWUpOgorICAgICAgICBvYmogPSBpbnQuX19uZXdfXyhzZWxmLCAqYXJncykKKyAgICAgICAgb2JqLl9uYW1lID0gbmFtZQorICAgICAgICByZXR1cm4gb2JqCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKworCitfUE9TSVRJT05BTF9PTkxZICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDAsIG5hbWU9J1BPU0lUSU9OQUxfT05MWScpCitfUE9TSVRJT05BTF9PUl9LRVlXT1JEICA9IF9QYXJhbWV0ZXJLaW5kKDEsIG5hbWU9J1BPU0lUSU9OQUxfT1JfS0VZV09SRCcpCitfVkFSX1BPU0lUSU9OQUwgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDIsIG5hbWU9J1ZBUl9QT1NJVElPTkFMJykKK19LRVlXT1JEX09OTFkgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoMywgbmFtZT0nS0VZV09SRF9PTkxZJykKK19WQVJfS0VZV09SRCAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQoNCwgbmFtZT0nVkFSX0tFWVdPUkQnKQorCisKK2NsYXNzIFBhcmFtZXRlcjoKKyAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIG5hbWUgOiBzdHIKKyAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4KKyAgICAqIGRlZmF1bHQgOiBvYmplY3QKKyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdCB2YWx1ZSwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGFubm90YXRpb24KKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIgaWYgc3BlY2lmaWVkLiAgSWYgdGhlCisgICAgICAgIHBhcmFtZXRlciBoYXMgbm8gYW5ub3RhdGlvbiwgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGtpbmQgOiBzdHIKKyAgICAgICAgRGVzY3JpYmVzIGhvdyBhcmd1bWVudCB2YWx1ZXMgYXJlIGJvdW5kIHRvIHRoZSBwYXJhbWV0ZXIuCisgICAgICAgIFBvc3NpYmxlIHZhbHVlczogYFBhcmFtZXRlci5QT1NJVElPTkFMX09OTFlgLAorICAgICAgICBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRGAsIGBQYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUxgLAorICAgICAgICBgUGFyYW1ldGVyLktFWVdPUkRfT05MWWAsIGBQYXJhbWV0ZXIuVkFSX0tFWVdPUkRgLgorICAgICcnJworCisgICAgX19zbG90c19fID0gKCdfbmFtZScsICdfa2luZCcsICdfZGVmYXVsdCcsICdfYW5ub3RhdGlvbicsICdfcGFydGlhbF9rd2FyZycpCisKKyAgICBQT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QT1NJVElPTkFMX09OTFkKKyAgICBQT1NJVElPTkFMX09SX0tFWVdPUkQgICA9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICBWQVJfUE9TSVRJT05BTCAgICAgICAgICA9IF9WQVJfUE9TSVRJT05BTAorICAgIEtFWVdPUkRfT05MWSAgICAgICAgICAgID0gX0tFWVdPUkRfT05MWQorICAgIFZBUl9LRVlXT1JEICAgICAgICAgICAgID0gX1ZBUl9LRVlXT1JECisKKyAgICBlbXB0eSA9IF9lbXB0eQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGtpbmQsICosIGRlZmF1bHQ9X2VtcHR5LCBhbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9RmFsc2UpOgorCisgICAgICAgIGlmIGtpbmQgbm90IGluIChfUE9TSVRJT05BTF9PTkxZLCBfUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgX1ZBUl9QT1NJVElPTkFMLCBfS0VZV09SRF9PTkxZLCBfVkFSX0tFWVdPUkQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB2YWx1ZSBmb3IgJ1BhcmFtZXRlci5raW5kJyBhdHRyaWJ1dGUiKQorICAgICAgICBzZWxmLl9raW5kID0ga2luZAorCisgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGlmIGtpbmQgaW4gKF9WQVJfUE9TSVRJT05BTCwgX1ZBUl9LRVlXT1JEKToKKyAgICAgICAgICAgICAgICBtc2cgPSAne30gcGFyYW1ldGVycyBjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycuZm9ybWF0KGtpbmQpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgIHNlbGYuX2RlZmF1bHQgPSBkZWZhdWx0CisgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uCisKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vbmUgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXIiKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWSBhbmQgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKworICAgICAgICBzZWxmLl9wYXJ0aWFsX2t3YXJnID0gX3BhcnRpYWxfa3dhcmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmF1bHQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kZWZhdWx0CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Fubm90YXRpb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBraW5kKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fa2luZAorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgbmFtZT1fdm9pZCwga2luZD1fdm9pZCwgYW5ub3RhdGlvbj1fdm9pZCwKKyAgICAgICAgICAgICAgICBkZWZhdWx0PV92b2lkLCBfcGFydGlhbF9rd2FyZz1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4nJycKKworICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKKworICAgICAgICBpZiBraW5kIGlzIF92b2lkOgorICAgICAgICAgICAga2luZCA9IHNlbGYuX2tpbmQKKworICAgICAgICBpZiBhbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IHNlbGYuX2Fubm90YXRpb24KKworICAgICAgICBpZiBkZWZhdWx0IGlzIF92b2lkOgorICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2RlZmF1bHQKKworICAgICAgICBpZiBfcGFydGlhbF9rd2FyZyBpcyBfdm9pZDoKKyAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnID0gc2VsZi5fcGFydGlhbF9rd2FyZworCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKG5hbWUsIGtpbmQsIGRlZmF1bHQ9ZGVmYXVsdCwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFydGlhbF9rd2FyZz1fcGFydGlhbF9rd2FyZykKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICBraW5kID0gc2VsZi5raW5kCisKKyAgICAgICAgZm9ybWF0dGVkID0gc2VsZi5fbmFtZQorICAgICAgICBpZiBraW5kID09IF9QT1NJVElPTkFMX09OTFk6CisgICAgICAgICAgICBpZiBmb3JtYXR0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSAnJworICAgICAgICAgICAgZm9ybWF0dGVkID0gJzx7fT4nLmZvcm1hdChmb3JtYXR0ZWQpCisKKyAgICAgICAgIyBBZGQgYW5ub3RhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZQorICAgICAgICBpZiBzZWxmLl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAne306e30nLmZvcm1hdChmb3JtYXR0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uKHNlbGYuX2Fubm90YXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuX2RlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICd7fT17fScuZm9ybWF0KGZvcm1hdHRlZCwgcmVwcihzZWxmLl9kZWZhdWx0KSkKKworICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICcqJyArIGZvcm1hdHRlZAorICAgICAgICBlbGlmIGtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gJyoqJyArIGZvcm1hdHRlZAorCisgICAgICAgIHJldHVybiBmb3JtYXR0ZWQKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8e30gYXQgezojeH0geyFyfT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5uYW1lKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIFBhcmFtZXRlcikgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSA9PSBvdGhlci5fbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9raW5kID09IG90aGVyLl9raW5kIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2RlZmF1bHQgPT0gb3RoZXIuX2RlZmF1bHQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9PSBvdGhlci5fYW5ub3RhdGlvbikKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKK2NsYXNzIEJvdW5kQXJndW1lbnRzOgorICAgICcnJ1Jlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKKyAgICB0byB0aGUgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgorCisgICAgSGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXM6CisKKyAgICAqIGFyZ3VtZW50cyA6IE9yZGVyZWREaWN0CisgICAgICAgIEFuIG9yZGVyZWQgbXV0YWJsZSBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIGFyZ3VtZW50cycgdmFsdWVzLgorICAgICAgICBEb2VzIG5vdCBjb250YWluIGFyZ3VtZW50cycgZGVmYXVsdCB2YWx1ZXMuCisgICAgKiBzaWduYXR1cmUgOiBTaWduYXR1cmUKKyAgICAgICAgVGhlIFNpZ25hdHVyZSBvYmplY3QgdGhhdCBjcmVhdGVkIHRoaXMgaW5zdGFuY2UuCisgICAgKiBhcmdzIDogdHVwbGUKKyAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgorICAgICoga3dhcmdzIDogZGljdAorICAgICAgICBEaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4KKyAgICAnJycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaWduYXR1cmUsIGFyZ3VtZW50cyk6CisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gYXJndW1lbnRzCisgICAgICAgIHNlbGYuX3NpZ25hdHVyZSA9IHNpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNpZ25hdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ25hdHVyZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgICMgS2V5d29yZCBhcmd1bWVudHMgbWFwcGVkIGJ5ICdmdW5jdG9vbHMucGFydGlhbCcKKyAgICAgICAgICAgICAgICAjIChQYXJhbWV0ZXIuX3BhcnRpYWxfa3dhcmcgaXMgVHJ1ZSkgYXJlIG1hcHBlZAorICAgICAgICAgICAgICAgICMgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycsIGFsb25nIHdpdGggVkFSX0tFWVdPUkQgJgorICAgICAgICAgICAgICAgICMgS0VZV09SRF9PTkxZCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgIyBXZSdyZSBkb25lIGhlcmUuIE90aGVyIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICMgd2lsbCBiZSBtYXBwZWQgaW4gJ0JvdW5kQXJndW1lbnRzLmt3YXJncycKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgIyAqYXJncworICAgICAgICAgICAgICAgICAgICBhcmdzLmV4dGVuZChhcmcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgcmV0dXJuIHR1cGxlKGFyZ3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga3dhcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7fQorICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IEZhbHNlCisgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGt3YXJnc19zdGFydGVkOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5fcGFydGlhbF9rd2FyZyk6CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc19zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgbm90IGluIHNlbGYuYXJndW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBub3Qga3dhcmdzX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuYXJndW1lbnRzW3BhcmFtX25hbWVdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAgICAgIyAqKmt3YXJncworICAgICAgICAgICAgICAgICAgICBrd2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHBsYWluIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gYXJnCisKKyAgICAgICAgcmV0dXJuIGt3YXJncworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoaXNzdWJjbGFzcyhvdGhlci5fX2NsYXNzX18sIEJvdW5kQXJndW1lbnRzKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLnNpZ25hdHVyZSA9PSBvdGhlci5zaWduYXR1cmUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVudHMgPT0gb3RoZXIuYXJndW1lbnRzKQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworY2xhc3MgU2lnbmF0dXJlOgorICAgICcnJ0EgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBvdmVyYWxsIHNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uLgorICAgIEl0IHN0b3JlcyBhIFBhcmFtZXRlciBvYmplY3QgZm9yIGVhY2ggcGFyYW1ldGVyIGFjY2VwdGVkIGJ5IHRoZQorICAgIGZ1bmN0aW9uLCBhcyB3ZWxsIGFzIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuCisKKyAgICBBIFNpZ25hdHVyZSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgcHVibGljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHM6CisKKyAgICAqIHBhcmFtZXRlcnMgOiBPcmRlcmVkRGljdAorICAgICAgICBBbiBvcmRlcmVkIG1hcHBpbmcgb2YgcGFyYW1ldGVycycgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgUGFyYW1ldGVyIG9iamVjdHMgKGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIGluIHRoZSBzYW1lIG9yZGVyCisgICAgICAgIGFzIGxpc3RlZCBpbiBgY29kZS5jb192YXJuYW1lc2ApLgorICAgICogcmV0dXJuX2Fubm90YXRpb24gOiBvYmplY3QKKyAgICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gaWYgc3BlY2lmaWVkLgorICAgICAgICBJZiB0aGUgZnVuY3Rpb24gaGFzIG5vIGFubm90YXRpb24gZm9yIGl0cyByZXR1cm4gdHlwZSwgdGhpcworICAgICAgICBhdHRyaWJ1dGUgaXMgbm90IHNldC4KKyAgICAqIGJpbmQoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvCisgICAgICAgIHBhcmFtZXRlcnMuCisgICAgKiBiaW5kX3BhcnRpYWwoKmFyZ3MsICoqa3dhcmdzKSAtPiBCb3VuZEFyZ3VtZW50cworICAgICAgICBDcmVhdGVzIGEgcGFydGlhbCBtYXBwaW5nIGZyb20gcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgdG8gcGFyYW1ldGVycyAoc2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yLikKKyAgICAnJycKKworICAgIF9fc2xvdHNfXyA9ICgnX3JldHVybl9hbm5vdGF0aW9uJywgJ19wYXJhbWV0ZXJzJykKKworICAgIF9wYXJhbWV0ZXJfY2xzID0gUGFyYW1ldGVyCisgICAgX2JvdW5kX2FyZ3VtZW50c19jbHMgPSBCb3VuZEFyZ3VtZW50cworCisgICAgZW1wdHkgPSBfZW1wdHkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJhbWV0ZXJzPU5vbmUsICosIHJldHVybl9hbm5vdGF0aW9uPV9lbXB0eSwKKyAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189VHJ1ZSk6CisgICAgICAgICcnJ0NvbnN0cnVjdHMgU2lnbmF0dXJlIGZyb20gdGhlIGdpdmVuIGxpc3Qgb2YgUGFyYW1ldGVyCisgICAgICAgIG9iamVjdHMgYW5kICdyZXR1cm5fYW5ub3RhdGlvbicuICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBOb25lOgorICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICAgICAgICAgIHRvcF9raW5kID0gX1BPU0lUSU9OQUxfT05MWQorCisgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgICAgICAgICBpZiBraW5kIDwgdG9wX2tpbmQ6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnd3JvbmcgcGFyYW1ldGVyIG9yZGVyOiB7fSBiZWZvcmUge30nCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KHRvcF9raW5kLCBwYXJhbS5raW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0b3Bfa2luZCA9IGtpbmQKKworICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGFyYW0ubmFtZQorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc3RyKGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gcGFyYW0ucmVwbGFjZShuYW1lPW5hbWUpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBwYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZHVwbGljYXRlIHBhcmFtZXRlciBuYW1lOiB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBwYXJhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgoKHBhcmFtLm5hbWUsIHBhcmFtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcmFtIGluIHBhcmFtZXRlcnMpKQorCisgICAgICAgIHNlbGYuX3BhcmFtZXRlcnMgPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKHBhcmFtcykKKyAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSByZXR1cm5fYW5ub3RhdGlvbgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAgICAgJycnQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24nJycKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmdW5jLCB0eXBlcy5GdW5jdGlvblR5cGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQorCisgICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscworCisgICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAorICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKKyAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50CisgICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KKyAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXworICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgICAgIGlmIGRlZmF1bHRzOgorICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKKworICAgICAgICBwYXJhbWV0ZXJzID0gW10KKworICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKKyAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCisKKyAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6CisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCisKKyAgICAgICAgIyAqYXJncworICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiAweDA0OgorICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQorCisgICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKKyAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKKyAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKKworICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQorICAgICAgICAjICoqa3dhcmdzCisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIDB4MDg6CisgICAgICAgICAgICBpbmRleCA9IHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudAorICAgICAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgMHgwNDoKKyAgICAgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbaW5kZXhdCisgICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX0tFWVdPUkQpKQorCisgICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189RmFsc2UpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcmFtZXRlcnMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZXR1cm5fYW5ub3RhdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBwYXJhbWV0ZXJzPV92b2lkLCByZXR1cm5fYW5ub3RhdGlvbj1fdm9pZCk6CisgICAgICAgICcnJ0NyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KKyAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCisgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgorICAgICAgICAnJycKKworICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIF92b2lkOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorCisgICAgICAgIGlmIHJldHVybl9hbm5vdGF0aW9uIGlzIF92b2lkOgorICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uPXJldHVybl9hbm5vdGF0aW9uKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIChub3QgaXNzdWJjbGFzcyh0eXBlKG90aGVyKSwgU2lnbmF0dXJlKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybl9hbm5vdGF0aW9uICE9IG90aGVyLnJldHVybl9hbm5vdGF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgIGxlbihzZWxmLnBhcmFtZXRlcnMpICE9IGxlbihvdGhlci5wYXJhbWV0ZXJzKSk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBvdGhlcl9wb3NpdGlvbnMgPSB7cGFyYW06IGlkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKG90aGVyLnBhcmFtZXRlcnMua2V5cygpKX0KKworICAgICAgICBmb3IgaWR4LCAocGFyYW1fbmFtZSwgcGFyYW0pIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMuaXRlbXMoKSk6CisgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9LRVlXT1JEX09OTFk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9wYXJhbSA9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtICE9IG90aGVyX3BhcmFtOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfaWR4ID0gb3RoZXJfcG9zaXRpb25zW3BhcmFtX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IG90aGVyX2lkeCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0gIT0gb3RoZXIucGFyYW1ldGVyc1twYXJhbV9uYW1lXSk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKyAgICBkZWYgX2JpbmQoc2VsZiwgYXJncywga3dhcmdzLCAqLCBwYXJ0aWFsPUZhbHNlKToKKyAgICAgICAgJycnUHJpdmF0ZSBtZXRob2QuICBEb24ndCB1c2UgZGlyZWN0bHkuJycnCisKKyAgICAgICAgYXJndW1lbnRzID0gT3JkZXJlZERpY3QoKQorCisgICAgICAgIHBhcmFtZXRlcnMgPSBpdGVyKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgcGFyYW1ldGVyc19leCA9ICgpCisgICAgICAgIGFyZ192YWxzID0gaXRlcihhcmdzKQorCisgICAgICAgIGlmIHBhcnRpYWw6CisgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGJpbmRpbmcgYXJndW1lbnRzIHRvICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0cy4KKyAgICAgICAgICAgICMgU2VlICdmdW5jdG9vbHMucGFydGlhbCcgY2FzZSBpbiAnc2lnbmF0dXJlKCknIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICAjIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIChwYXJhbS5fcGFydGlhbF9rd2FyZyBhbmQgcGFyYW1fbmFtZSBub3QgaW4ga3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgIyBTaW11bGF0aW5nICdmdW5jdG9vbHMucGFydGlhbCcgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW3BhcmFtX25hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAjIExldCdzIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYW5kIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICMgcGFyYW1ldGVycworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFyZ192YWwgPSBuZXh0KGFyZ192YWxzKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IG5leHQocGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgIyBObyBtb3JlIHBhcmFtZXRlcnMuIFRoYXQncyBpdC4gSnVzdCBuZWVkIHRvIGNoZWNrIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIG5vIGBrd2FyZ3NgIGFmdGVyIHRoaXMgd2hpbGUgbG9vcAorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgT0ssIGp1c3QgZW1wdHkgKmFyZ3MuICBMZXQncyBzdGFydCBwYXJzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAjIGt3YXJncworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5uYW1lIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYXMgYSBrZXl3b3JkJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5kZWZhdWx0IGlzIG5vdCBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGF0J3MgZmluZSB0b28gLSB3ZSBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIuICBTbywgbGV0cyBzdGFydCBwYXJzaW5nIGBrd2FyZ3NgLCBzdGFydGluZworICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoIHRoZSBjdXJyZW50IHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFydGlhbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzX2V4ID0gKHBhcmFtLCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAne2FyZyFyfSBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlJworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IG1zZy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdG8gcHJvY2VzcworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kIGluIChfVkFSX0tFWVdPUkQsIF9LRVlXT1JEX09OTFkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBMb29rcyBsaWtlIHdlIGhhdmUgbm8gcGFyYW1ldGVyIGZvciB0aGlzIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9QT1NJVElPTkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGFuICcqYXJncyctbGlrZSBhcmd1bWVudCwgbGV0J3MgZmlsbCBpdCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBwb3NpdGlvbmFsIGFyZ3VtZW50cyB3ZSBoYXZlIGxlZnQgYW5kIG1vdmUgb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIG5leHQgcGhhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFthcmdfdmFsXQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmV4dGVuZChhcmdfdmFscykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IHR1cGxlKHZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7YXJnIXJ9Jy5mb3JtYXQoYXJnPXBhcmFtLm5hbWUpKQorCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbS5uYW1lXSA9IGFyZ192YWwKKworICAgICAgICAjIE5vdywgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSByZW1haW5pbmcgcGFyYW1ldGVycyB0byBwcm9jZXNzCisgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAga3dhcmdzX3BhcmFtID0gTm9uZQorICAgICAgICBmb3IgcGFyYW0gaW4gaXRlcnRvb2xzLmNoYWluKHBhcmFtZXRlcnNfZXgsIHBhcmFtZXRlcnMpOgorICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIGNhc2Ugb2YgYSBwcm9wZXJseSBidWlsdAorICAgICAgICAgICAgICAgICMgU2lnbmF0dXJlIG9iamVjdCAoYnV0IGxldCdzIGhhdmUgdGhpcyBjaGVjayBoZXJlCisgICAgICAgICAgICAgICAgIyB0byBlbnN1cmUgY29ycmVjdCBiZWhhdmlvdXIganVzdCBpbiBjYXNlKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigne2FyZyFyfSBwYXJhbWV0ZXIgaXMgcG9zaXRpb25hbCBvbmx5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidXQgd2FzIHBhc3NlZCBhcyBhIGtleXdvcmQnLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW0ubmFtZSkpCisKKyAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1ZBUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgICMgTWVtb3JpemUgdGhhdCB3ZSBoYXZlIGEgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGt3YXJnc19wYXJhbSA9IHBhcmFtCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGFyYW1fbmFtZSA9IHBhcmFtLm5hbWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmdfdmFsID0ga3dhcmdzLnBvcChwYXJhbV9uYW1lKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBubyB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuICBJdCdzIGZpbmUgdGhvdWdoLAorICAgICAgICAgICAgICAgICMgaWYgaXQgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgb3IgaXQgaXMgYW4gJyphcmdzJy1saWtlCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIsIGxlZnQgYWxvbmUgYnkgdGhlIHByb2Nlc3Npbmcgb2YgcG9zaXRpb25hbAorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzLgorICAgICAgICAgICAgICAgIGlmIChub3QgcGFydGlhbCBhbmQgcGFyYW0ua2luZCAhPSBfVkFSX1BPU0lUSU9OQUwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChhcmc9cGFyYW1fbmFtZSkpIGZyb20gTm9uZQorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3VtZW50c1twYXJhbV9uYW1lXSA9IGFyZ192YWwKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBpZiBrd2FyZ3NfcGFyYW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBQcm9jZXNzIG91ciAnKiprd2FyZ3MnLWxpa2UgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgYXJndW1lbnRzW2t3YXJnc19wYXJhbS5uYW1lXSA9IGt3YXJncworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJykKKworICAgICAgICByZXR1cm4gc2VsZi5fYm91bmRfYXJndW1lbnRzX2NscyhzZWxmLCBhcmd1bWVudHMpCisKKyAgICBkZWYgYmluZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgbWFwcyB0aGUgcGFzc2VkIGBhcmdzYAorICAgICAgICBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLiAgUmFpc2VzIGBUeXBlRXJyb3JgCisgICAgICAgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgYmluZF9wYXJ0aWFsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKKyAgICAgICAgcGFzc2VkIGBhcmdzYCBhbmQgYGt3YXJnc2AgdG8gdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlLgorICAgICAgICBSYWlzZXMgYFR5cGVFcnJvcmAgaWYgdGhlIHBhc3NlZCBhcmd1bWVudHMgY2FuIG5vdCBiZSBib3VuZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9iaW5kKGFyZ3MsIGt3YXJncywgcGFydGlhbD1UcnVlKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IFRydWUKKyAgICAgICAgZm9yIGlkeCwgcGFyYW0gaW4gZW51bWVyYXRlKHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKSk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBzdHIocGFyYW0pCisKKyAgICAgICAgICAgIGtpbmQgPSBwYXJhbS5raW5kCisgICAgICAgICAgICBpZiBraW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAjIE9LLCB3ZSBoYXZlIGFuICcqYXJncyctbGlrZSBwYXJhbWV0ZXIsIHNvIHdlIHdvbid0IG5lZWQKKyAgICAgICAgICAgICAgICAjIGEgJyonIHRvIHNlcGFyYXRlIGtleXdvcmQtb25seSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICByZW5kZXJfa3dfb25seV9zZXBhcmF0b3IgPSBGYWxzZQorICAgICAgICAgICAgZWxpZiBraW5kID09IF9LRVlXT1JEX09OTFkgYW5kIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvcjoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyIHRvIHJlbmRlciBhbmQgd2UgaGF2ZW4ndAorICAgICAgICAgICAgICAgICMgcmVuZGVyZWQgYW4gJyphcmdzJy1saWtlIHBhcmFtZXRlciBiZWZvcmUsIHNvIGFkZCBhICcqJworICAgICAgICAgICAgICAgICMgc2VwYXJhdG9yIHRvIHRoZSBwYXJhbWV0ZXJzIGxpc3QgKCJmb28oYXJnMSwgKiwgYXJnMikiIGNhc2UpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKicpCisgICAgICAgICAgICAgICAgIyBUaGlzIGNvbmRpdGlvbiBzaG91bGQgYmUgb25seSB0cmlnZ2VyZWQgb25jZSwgc28KKyAgICAgICAgICAgICAgICAjIHJlc2V0IHRoZSBmbGFnCisgICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmb3JtYXR0ZWQpCisKKyAgICAgICAgcmVuZGVyZWQgPSAnKHt9KScuZm9ybWF0KCcsICcuam9pbihyZXN1bHQpKQorCisgICAgICAgIGlmIHNlbGYucmV0dXJuX2Fubm90YXRpb24gaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgIGFubm8gPSBmb3JtYXRhbm5vdGF0aW9uKHNlbGYucmV0dXJuX2Fubm90YXRpb24pCisgICAgICAgICAgICByZW5kZXJlZCArPSAnIC0+IHt9Jy5mb3JtYXQoYW5ubykKKworICAgICAgICByZXR1cm4gcmVuZGVyZWQKZGlmZiAtLWdpdCBhL0xpYi9pby5weSBiL0xpYi9pby5weQppbmRleCBhNTlhNzVhLi5jZmI3MGFjIDEwMDY0NAotLS0gYS9MaWIvaW8ucHkKKysrIGIvTGliL2lvLnB5CkBAIC01OCw2ICs1OCw5IEBACiAKIE9wZW5XcmFwcGVyID0gX2lvLm9wZW4gIyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIF9weWlvCiAKKyMgUHJldGVuZCB0aGlzIGV4Y2VwdGlvbiB3YXMgY3JlYXRlZCBoZXJlLgorVW5zdXBwb3J0ZWRPcGVyYXRpb24uX19tb2R1bGVfXyA9ICJpbyIKKwogIyBmb3Igc2VlaygpCiBTRUVLX1NFVCA9IDAKIFNFRUtfQ1VSID0gMQpkaWZmIC0tZ2l0IGEvTGliL2lwYWRkcmVzcy5weSBiL0xpYi9pcGFkZHJlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJlZmIwOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTAsMCArMSwyMDkzIEBACisjIENvcHlyaWdodCAyMDA3IEdvb2dsZSBJbmMuCisjICBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisKKyIiIkEgZmFzdCwgbGlnaHR3ZWlnaHQgSVB2NC9JUHY2IG1hbmlwdWxhdGlvbiBsaWJyYXJ5IGluIFB5dGhvbi4KKworVGhpcyBsaWJyYXJ5IGlzIHVzZWQgdG8gY3JlYXRlL3Bva2UvbWFuaXB1bGF0ZSBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcworYW5kIG5ldHdvcmtzLgorCisiIiIKKworX192ZXJzaW9uX18gPSAnMS4wJworCisKK2ltcG9ydCBmdW5jdG9vbHMKKworSVBWNExFTkdUSCA9IDMyCitJUFY2TEVOR1RIID0gMTI4CisKK2NsYXNzIEFkZHJlc3NWYWx1ZUVycm9yKFZhbHVlRXJyb3IpOgorICAgICIiIkEgVmFsdWUgRXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4iIiIKKworCitjbGFzcyBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKToKKyAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIG5ldG1hc2suIiIiCisKKworZGVmIGlwX2FkZHJlc3MoYWRkcmVzcyk6CisgICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yCisgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3Mgb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgKmFkZHJlc3MqIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcworCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIGlwX25ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpOgorICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIG5ldHdvcmsuICBFaXRoZXIgSVB2NCBvcgorICAgICAgICAgIElQdjYgbmV0d29ya3MgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcy4gT3IgaWYgdGhlIG5ldHdvcmsgaGFzIGhvc3QgYml0cyBzZXQuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3QpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3QpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICByYWlzZSBWYWx1ZUVycm9yKCclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2IG5ldHdvcmsnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIGlwX2ludGVyZmFjZShhZGRyZXNzKToKKyAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLiAgRWl0aGVyIElQdjQgb3IKKyAgICAgICAgICBJUHY2IGFkZHJlc3NlcyBtYXkgYmUgc3VwcGxpZWQ7IGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsCisgICAgICAgICAgYmUgY29uc2lkZXJlZCB0byBiZSBJUHY0IGJ5IGRlZmF1bHQuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBJUHY0SW50ZXJmYWNlIG9yIElQdjZJbnRlcmZhY2Ugb2JqZWN0LgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgc3RyaW5nIHBhc3NlZCBpc24ndCBlaXRoZXIgYSB2NCBvciBhIHY2CisgICAgICAgICAgYWRkcmVzcy4KKworICAgIE5vdGVzOgorICAgICAgICBUaGUgSVB2P0ludGVyZmFjZSBjbGFzc2VzIGRlc2NyaWJlIGFuIEFkZHJlc3Mgb24gYSBwYXJ0aWN1bGFyCisgICAgICAgIE5ldHdvcmssIHNvIHRoZXkncmUgYmFzaWNhbGx5IGEgY29tYmluYXRpb24gb2YgYm90aCB0aGUgQWRkcmVzcworICAgICAgICBhbmQgTmV0d29yayBjbGFzc2VzLgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NEludGVyZmFjZShhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NkludGVyZmFjZShhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBpbnRlcmZhY2UnICUKKyAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MpCisKKworZGVmIHY0X2ludF90b19wYWNrZWQoYWRkcmVzcyk6CisgICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgNCBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4KKworICAgIFJldHVybnM6CisgICAgICAgIFRoZSBpbnRlZ2VyIGFkZHJlc3MgcGFja2VkIGFzIDQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICBSYWlzZXM6CisgICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnRlZ2VyIGlzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSB0byBiZSBhbgorICAgICAgICAgIElQdjQgSVAgYWRkcmVzcy4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoNCwgJ2JpZycpCisgICAgZXhjZXB0OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBZGRyZXNzIG5lZ2F0aXZlIG9yIHRvbyBsYXJnZSBmb3IgSVB2NCIpCisKKworZGVmIHY2X2ludF90b19wYWNrZWQoYWRkcmVzcyk6CisgICAgIiIiUmVwcmVzZW50IGFuIGFkZHJlc3MgYXMgMTYgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IElQIGFkZHJlc3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgaW50ZWdlciBhZGRyZXNzIHBhY2tlZCBhcyAxNiBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MudG9fYnl0ZXMoMTYsICdiaWcnKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWRkcmVzcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgZm9yIElQdjYiKQorCisKK2RlZiBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKToKKyAgICAiIiJIZWxwZXIgdG8gc3BsaXQgdGhlIG5ldG1hc2sgYW5kIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yIGlmIG5lZWRlZCIiIgorICAgIGFkZHIgPSBzdHIoYWRkcmVzcykuc3BsaXQoJy8nKQorICAgIGlmIGxlbihhZGRyKSA+IDI6CisgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJPbmx5IG9uZSAnLycgcGVybWl0dGVkIGluICVyIiAlIGFkZHJlc3MpCisgICAgcmV0dXJuIGFkZHIKKworCitkZWYgX2ZpbmRfYWRkcmVzc19yYW5nZShhZGRyZXNzZXMpOgorICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBJUHYjQWRkcmVzcy4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3NlczogYSBsaXN0IG9mIElQdiNBZGRyZXNzIG9iamVjdHMuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3NlcyBpbiB0aGUgc2VxdWVuY2UuCisKKyAgICAiIiIKKyAgICBmaXJzdCA9IGxhc3QgPSBhZGRyZXNzZXNbMF0KKyAgICBmb3IgaXAgaW4gYWRkcmVzc2VzWzE6XToKKyAgICAgICAgaWYgaXAuX2lwID09IGxhc3QuX2lwICsgMToKKyAgICAgICAgICAgIGxhc3QgPSBpcAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gKGZpcnN0LCBsYXN0KQorCisKK2RlZiBfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhudW1iZXIsIGJpdHMpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2YgemVybyBiaXRzIG9uIHRoZSByaWdodCBoYW5kIHNpZGUuCisKKyAgICBBcmdzOgorICAgICAgICBudW1iZXI6IGFuIGludGVnZXIuCisgICAgICAgIGJpdHM6IG1heGltdW0gbnVtYmVyIG9mIGJpdHMgdG8gY291bnQuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mIHRoZSBudW1iZXIuCisKKyAgICAiIiIKKyAgICBpZiBudW1iZXIgPT0gMDoKKyAgICAgICAgcmV0dXJuIGJpdHMKKyAgICBmb3IgaSBpbiByYW5nZShiaXRzKToKKyAgICAgICAgaWYgKG51bWJlciA+PiBpKSAmIDE6CisgICAgICAgICAgICByZXR1cm4gaQorICAgICMgQWxsIGJpdHMgb2YgaW50ZXJlc3Qgd2VyZSB6ZXJvLCBldmVuIGlmIHRoZXJlIGFyZSBtb3JlIGluIHRoZSBudW1iZXIKKyAgICByZXR1cm4gYml0cworCisKK2RlZiBzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCk6CisgICAgIiIiU3VtbWFyaXplIGEgbmV0d29yayByYW5nZSBnaXZlbiB0aGUgZmlyc3QgYW5kIGxhc3QgSVAgYWRkcmVzc2VzLgorCisgICAgRXhhbXBsZToKKyAgICAgICAgPj4+IHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSwKKyAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEzMCcpKQorICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTMwLzMyJyldCisKKyAgICBBcmdzOgorICAgICAgICBmaXJzdDogdGhlIGZpcnN0IElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIGluIHRoZSByYW5nZS4KKyAgICAgICAgbGFzdDogdGhlIGxhc3QgSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3MgaW4gdGhlIHJhbmdlLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gaXRlcmF0b3Igb2YgdGhlIHN1bW1hcml6ZWQgSVB2KDR8NikgbmV0d29yayBvYmplY3RzLgorCisgICAgUmFpc2U6CisgICAgICAgIFR5cGVFcnJvcjoKKyAgICAgICAgICAgIElmIHRoZSBmaXJzdCBhbmQgbGFzdCBvYmplY3RzIGFyZSBub3QgSVAgYWRkcmVzc2VzLgorICAgICAgICAgICAgSWYgdGhlIGZpcnN0IGFuZCBsYXN0IG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLgorICAgICAgICBWYWx1ZUVycm9yOgorICAgICAgICAgICAgSWYgdGhlIGxhc3Qgb2JqZWN0IGlzIG5vdCBncmVhdGVyIHRoYW4gdGhlIGZpcnN0LgorICAgICAgICAgICAgSWYgdGhlIHZlcnNpb24gb2YgdGhlIGZpcnN0IGFkZHJlc3MgaXMgbm90IDQgb3IgNi4KKworICAgICIiIgorICAgIGlmIChub3QgKGlzaW5zdGFuY2UoZmlyc3QsIF9CYXNlQWRkcmVzcykgYW5kCisgICAgICAgICAgICAgaXNpbnN0YW5jZShsYXN0LCBfQmFzZUFkZHJlc3MpKSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZmlyc3QgYW5kIGxhc3QgbXVzdCBiZSBJUCBhZGRyZXNzZXMsIG5vdCBuZXR3b3JrcycpCisgICAgaWYgZmlyc3QudmVyc2lvbiAhPSBsYXN0LnZlcnNpb246CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QpKQorICAgIGlmIGZpcnN0ID4gbGFzdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbGFzdCBJUCBhZGRyZXNzIG11c3QgYmUgZ3JlYXRlciB0aGFuIGZpcnN0JykKKworICAgIGlmIGZpcnN0LnZlcnNpb24gPT0gNDoKKyAgICAgICAgaXAgPSBJUHY0TmV0d29yaworICAgIGVsaWYgZmlyc3QudmVyc2lvbiA9PSA2OgorICAgICAgICBpcCA9IElQdjZOZXR3b3JrCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5rbm93biBJUCB2ZXJzaW9uJykKKworICAgIGlwX2JpdHMgPSBmaXJzdC5fbWF4X3ByZWZpeGxlbgorICAgIGZpcnN0X2ludCA9IGZpcnN0Ll9pcAorICAgIGxhc3RfaW50ID0gbGFzdC5faXAKKyAgICB3aGlsZSBmaXJzdF9pbnQgPD0gbGFzdF9pbnQ6CisgICAgICAgIG5iaXRzID0gbWluKF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGZpcnN0X2ludCwgaXBfYml0cyksCisgICAgICAgICAgICAgICAgICAgIChsYXN0X2ludCAtIGZpcnN0X2ludCArIDEpLmJpdF9sZW5ndGgoKSAtIDEpCisgICAgICAgIG5ldCA9IGlwKCclcy8lZCcgJSAoZmlyc3QsIGlwX2JpdHMgLSBuYml0cykpCisgICAgICAgIHlpZWxkIG5ldAorICAgICAgICBmaXJzdF9pbnQgKz0gMSA8PCBuYml0cworICAgICAgICBpZiBmaXJzdF9pbnQgLSAxID09IGlwLl9BTExfT05FUzoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpcnN0ID0gZmlyc3QuX19jbGFzc19fKGZpcnN0X2ludCkKKworCitkZWYgX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoYWRkcmVzc2VzKToKKyAgICAiIiJMb29wcyB0aHJvdWdoIHRoZSBhZGRyZXNzZXMsIGNvbGxhcHNpbmcgY29uY3VycmVudCBuZXRibG9ja3MuCisKKyAgICBFeGFtcGxlOgorCisgICAgICAgIGlwMSA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjYnKQorICAgICAgICBpcDIgPSBJUHY0TmV0d29yaygnMTkyLjAuMi42NC8yNicpCisgICAgICAgIGlwMyA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNicpCisgICAgICAgIGlwNCA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpCisKKyAgICAgICAgX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoW2lwMSwgaXAyLCBpcDMsIGlwNF0pIC0+CisgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKV0KKworICAgICAgICBUaGlzIHNob3VsZG4ndCBiZSBjYWxsZWQgZGlyZWN0bHk7IGl0IGlzIGNhbGxlZCB2aWEKKyAgICAgICAgICBjb2xsYXBzZV9hZGRyZXNzZXMoW10pLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzc2VzOiBBIGxpc3Qgb2YgSVB2NE5ldHdvcmsncyBvciBJUHY2TmV0d29yaydzCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBIGxpc3Qgb2YgSVB2NE5ldHdvcmsncyBvciBJUHY2TmV0d29yaydzIGRlcGVuZGluZyBvbiB3aGF0IHdlIHdlcmUKKyAgICAgICAgcGFzc2VkLgorCisgICAgIiIiCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGFzdF9hZGRyID0gTm9uZQorICAgICAgICByZXRfYXJyYXkgPSBbXQorICAgICAgICBvcHRpbWl6ZWQgPSBGYWxzZQorCisgICAgICAgIGZvciBjdXJfYWRkciBpbiBhZGRyZXNzZXM6CisgICAgICAgICAgICBpZiBub3QgcmV0X2FycmF5OgorICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCisgICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKKyAgICAgICAgICAgIGVsaWYgKGN1cl9hZGRyLm5ldHdvcmtfYWRkcmVzcyA+PSBsYXN0X2FkZHIubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgIGN1cl9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IGxhc3RfYWRkci5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQorICAgICAgICAgICAgZWxpZiBjdXJfYWRkciA9PSBsaXN0KGxhc3RfYWRkci5zdXBlcm5ldCgpLnN1Ym5ldHMoKSlbMV06CisgICAgICAgICAgICAgICAgcmV0X2FycmF5Wy0xXSA9IGxhc3RfYWRkciA9IGxhc3RfYWRkci5zdXBlcm5ldCgpCisgICAgICAgICAgICAgICAgb3B0aW1pemVkID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYXN0X2FkZHIgPSBjdXJfYWRkcgorICAgICAgICAgICAgICAgIHJldF9hcnJheS5hcHBlbmQoY3VyX2FkZHIpCisKKyAgICAgICAgYWRkcmVzc2VzID0gcmV0X2FycmF5CisgICAgICAgIGlmIG5vdCBvcHRpbWl6ZWQ6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzc2VzCisKKworZGVmIGNvbGxhcHNlX2FkZHJlc3NlcyhhZGRyZXNzZXMpOgorICAgICIiIkNvbGxhcHNlIGEgbGlzdCBvZiBJUCBvYmplY3RzLgorCisgICAgRXhhbXBsZToKKyAgICAgICAgY29sbGFwc2VfYWRkcmVzc2VzKFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldKSAtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKV0KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3NlczogQW4gaXRlcmF0b3Igb2YgSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0cy4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSBjb2xsYXBzZWQgSVB2KDR8NilOZXR3b3JrIG9iamVjdHMuCisKKyAgICBSYWlzZXM6CisgICAgICAgIFR5cGVFcnJvcjogSWYgcGFzc2VkIGEgbGlzdCBvZiBtaXhlZCB2ZXJzaW9uIG9iamVjdHMuCisKKyAgICAiIiIKKyAgICBpID0gMAorICAgIGFkZHJzID0gW10KKyAgICBpcHMgPSBbXQorICAgIG5ldHMgPSBbXQorCisgICAgIyBzcGxpdCBJUCBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzCisgICAgZm9yIGlwIGluIGFkZHJlc3NlczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpcCwgX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgICAgIGlmIGlwcyBhbmQgaXBzWy0xXS5fdmVyc2lvbiAhPSBpcC5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAsIGlwc1stMV0pKQorICAgICAgICAgICAgaXBzLmFwcGVuZChpcCkKKyAgICAgICAgZWxpZiBpcC5fcHJlZml4bGVuID09IGlwLl9tYXhfcHJlZml4bGVuOgorICAgICAgICAgICAgaWYgaXBzIGFuZCBpcHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXBzLmFwcGVuZChpcC5pcCkKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpcHMuYXBwZW5kKGlwLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5ldHMgYW5kIG5ldHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgbmV0c1stMV0pKQorICAgICAgICAgICAgbmV0cy5hcHBlbmQoaXApCisKKyAgICAjIHNvcnQgYW5kIGRlZHVwCisgICAgaXBzID0gc29ydGVkKHNldChpcHMpKQorICAgIG5ldHMgPSBzb3J0ZWQoc2V0KG5ldHMpKQorCisgICAgd2hpbGUgaSA8IGxlbihpcHMpOgorICAgICAgICAoZmlyc3QsIGxhc3QpID0gX2ZpbmRfYWRkcmVzc19yYW5nZShpcHNbaTpdKQorICAgICAgICBpID0gaXBzLmluZGV4KGxhc3QpICsgMQorICAgICAgICBhZGRycy5leHRlbmQoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpKQorCisgICAgcmV0dXJuIGl0ZXIoX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoc29ydGVkKAorICAgICAgICBhZGRycyArIG5ldHMsIGtleT1fQmFzZU5ldHdvcmsuX2dldF9uZXR3b3Jrc19rZXkpKSkKKworCitkZWYgZ2V0X21peGVkX3R5cGVfa2V5KG9iaik6CisgICAgIiIiUmV0dXJuIGEga2V5IHN1aXRhYmxlIGZvciBzb3J0aW5nIGJldHdlZW4gbmV0d29ya3MgYW5kIGFkZHJlc3Nlcy4KKworICAgIEFkZHJlc3MgYW5kIE5ldHdvcmsgb2JqZWN0cyBhcmUgbm90IHNvcnRhYmxlIGJ5IGRlZmF1bHQ7IHRoZXkncmUKKyAgICBmdW5kYW1lbnRhbGx5IGRpZmZlcmVudCBzbyB0aGUgZXhwcmVzc2lvbgorCisgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSA8PSBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKworICAgIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2gKKyAgICB0byBoYXZlIGlwYWRkcmVzcyBzb3J0IHRoZXNlIGZvciB5b3UgYW55d2F5LiBJZiB5b3UgbmVlZCB0byBkbyB0aGlzLCB5b3UKKyAgICBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGtleT0gYXJndW1lbnQgdG8gc29ydGVkKCkuCisKKyAgICBBcmdzOgorICAgICAgb2JqOiBlaXRoZXIgYSBOZXR3b3JrIG9yIEFkZHJlc3Mgb2JqZWN0LgorICAgIFJldHVybnM6CisgICAgICBhcHByb3ByaWF0ZSBrZXkuCisKKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgcmV0dXJuIG9iai5fZ2V0X25ldHdvcmtzX2tleSgpCisgICAgZWxpZiBpc2luc3RhbmNlKG9iaiwgX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgcmV0dXJuIG9iai5fZ2V0X2FkZHJlc3Nfa2V5KCkKKyAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitjbGFzcyBfVG90YWxPcmRlcmluZ01peGluOgorICAgICMgSGVscGVyIHRoYXQgZGVyaXZlcyB0aGUgb3RoZXIgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZyb20KKyAgICAjIF9fbHRfXyBhbmQgX19lcV9fCisgICAgIyBXZSBhdm9pZCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcgYmVjYXVzZSBpdCBkb2Vzbid0IGhhbmRsZQorICAgICMgTm90SW1wbGVtZW50ZWQgY29ycmVjdGx5IHlldCAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwMDQyKQorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGVxdWFsID0gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIGlmIGVxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBub3QgZXF1YWwKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBsZXNzID0gc2VsZi5fX2x0X18ob3RoZXIpCisgICAgICAgIGlmIGxlc3MgaXMgTm90SW1wbGVtZW50ZWQgb3Igbm90IGxlc3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIHJldHVybiBsZXNzCisgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICBlcXVhbCA9IHNlbGYuX19lcV9fKG90aGVyKQorICAgICAgICBpZiBlcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gbm90IChsZXNzIG9yIGVxdWFsKQorICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBsZXNzID0gc2VsZi5fX2x0X18ob3RoZXIpCisgICAgICAgIGlmIGxlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG5vdCBsZXNzCisKK2NsYXNzIF9JUEFkZHJlc3NCYXNlKF9Ub3RhbE9yZGVyaW5nTWl4aW4pOgorCisgICAgIiIiVGhlIG1vdGhlciBjbGFzcy4iIiIKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBleHBsb2RlZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBsb25naGFuZCB2ZXJzaW9uIG9mIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21wcmVzc2VkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHNob3J0aGFuZCB2ZXJzaW9uIG9mIHRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nLiIiIgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgbXNnID0gJyUyMDBzIGhhcyBubyB2ZXJzaW9uIHNwZWNpZmllZCcgJSAodHlwZShzZWxmKSwpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IobXNnKQorCisgICAgZGVmIF9jaGVja19pbnRfYWRkcmVzcyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgYWRkcmVzcyA8IDA6CisgICAgICAgICAgICBtc2cgPSAiJWQgKDwgMCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIHNlbGYuX3ZlcnNpb24pKQorICAgICAgICBpZiBhZGRyZXNzID4gc2VsZi5fQUxMX09ORVM6CisgICAgICAgICAgICBtc2cgPSAiJWQgKD49IDIqKiVkKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdiVkIGFkZHJlc3MiCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgc2VsZi5fbWF4X3ByZWZpeGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uKSkKKworICAgIGRlZiBfY2hlY2tfcGFja2VkX2FkZHJlc3Moc2VsZiwgYWRkcmVzcywgZXhwZWN0ZWRfbGVuKToKKyAgICAgICAgYWRkcmVzc19sZW4gPSBsZW4oYWRkcmVzcykKKyAgICAgICAgaWYgYWRkcmVzc19sZW4gIT0gZXhwZWN0ZWRfbGVuOgorICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gJWQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBhZGRyZXNzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4sIHNlbGYuX3ZlcnNpb24pKQorCisgICAgZGVmIF9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuPU5vbmUpOgorICAgICAgICAiIiJUdXJuIHRoZSBwcmVmaXggbGVuZ3RoIG5ldG1hc2sgaW50byBhIGludCBmb3IgY29tcGFyaXNvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuOiBBbiBpbnRlZ2VyLCB0aGUgcHJlZml4IGxlbmd0aC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50ZWdlci4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcHJlZml4bGVuIGlzIE5vbmU6CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIHNlbGYuX0FMTF9PTkVTIF4gKHNlbGYuX0FMTF9PTkVTID4+IHByZWZpeGxlbikKKworICAgIGRlZiBfcHJlZml4X2Zyb21faXBfaW50KHNlbGYsIGlwX2ludCwgbWFzaz0zMik6CisgICAgICAgICIiIlJldHVybiBwcmVmaXggbGVuZ3RoIGZyb20gdGhlIGRlY2ltYWwgbmV0bWFzay4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfaW50OiBBbiBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4KKyAgICAgICAgICAgIG1hc2s6IFRoZSBuZXRtYXNrLiAgRGVmYXVsdHMgdG8gMzIuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGludGVnZXIsIHRoZSBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFzayAtIF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGlwX2ludCwgbWFzaykKKworICAgIGRlZiBfaXBfc3RyaW5nX2Zyb21fcHJlZml4KHNlbGYsIHByZWZpeGxlbj1Ob25lKToKKyAgICAgICAgIiIiVHVybiBhIHByZWZpeCBsZW5ndGggaW50byBhIGRvdHRlZCBkZWNpbWFsIHN0cmluZy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuOiBBbiBpbnRlZ2VyLCB0aGUgbmV0bWFzayBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIHN0cmluZywgdGhlIGRvdHRlZCBkZWNpbWFsIG5ldG1hc2sgc3RyaW5nLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgcHJlZml4bGVuOgorICAgICAgICAgICAgcHJlZml4bGVuID0gc2VsZi5fcHJlZml4bGVuCisgICAgICAgIHJldHVybiBzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCisKKworY2xhc3MgX0Jhc2VBZGRyZXNzKF9JUEFkZHJlc3NCYXNlKToKKworICAgICIiIkEgZ2VuZXJpYyBJUCBvYmplY3QuCisKKyAgICBUaGlzIElQIGNsYXNzIGNvbnRhaW5zIHRoZSB2ZXJzaW9uIGluZGVwZW5kZW50IG1ldGhvZHMgd2hpY2ggYXJlCisgICAgdXNlZCBieSBzaW5nbGUgSVAgYWRkcmVzc2VzLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIChub3QgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcykKKyAgICAgICAgICAgIGFuZCAnLycgaW4gc3RyKGFkZHJlc3MpKToKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIgJSBhZGRyZXNzKQorCisgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcAorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiAoc2VsZi5faXAgPT0gb3RoZXIuX2lwCisgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgaWYgc2VsZi5faXAgIT0gb3RoZXIuX2lwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIDwgb3RoZXIuX2lwCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgIyBTaG9ydGhhbmQgZm9yIEludGVnZXIgYWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uLiBUaGlzIGlzIG5vdAorICAgICMgbWVhbnQgdG8gZXZlciBzdXBwb3J0IGFkZGl0aW9uL3N1YnRyYWN0aW9uIG9mIGFkZHJlc3Nlcy4KKyAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhpbnQoc2VsZikgKyBvdGhlcikKKworICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludChzZWxmKSAtIG90aGVyKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzKCVyKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmKSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCkpCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKGhleChpbnQoc2VsZi5faXApKSkKKworICAgIGRlZiBfZ2V0X2FkZHJlc3Nfa2V5KHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24sIHNlbGYpCisKKworY2xhc3MgX0Jhc2VOZXR3b3JrKF9JUEFkZHJlc3NCYXNlKToKKworICAgICIiIkEgZ2VuZXJpYyBJUCBuZXR3b3JrIG9iamVjdC4KKworICAgIFRoaXMgSVAgY2xhc3MgY29udGFpbnMgdGhlIHZlcnNpb24gaW5kZXBlbmRlbnQgbWV0aG9kcyB3aGljaCBhcmUKKyAgICB1c2VkIGJ5IG5ldHdvcmtzLgorCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBzZWxmLl9jYWNoZSA9IHt9CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLnByZWZpeGxlbikKKworICAgIGRlZiBob3N0cyhzZWxmKToKKyAgICAgICAgIiIiR2VuZXJhdGUgSXRlcmF0b3Igb3ZlciB1c2FibGUgaG9zdHMgaW4gYSBuZXR3b3JrLgorCisgICAgICAgIFRoaXMgaXMgbGlrZSBfX2l0ZXJfXyBleGNlcHQgaXQgZG9lc24ndCByZXR1cm4gdGhlIG5ldHdvcmsKKyAgICAgICAgb3IgYnJvYWRjYXN0IGFkZHJlc3Nlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIGZvciB4IGluIHJhbmdlKG5ldHdvcmsgKyAxLCBicm9hZGNhc3QpOgorICAgICAgICAgICAgeWllbGQgc2VsZi5fYWRkcmVzc19jbGFzcyh4KQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UobmV0d29yaywgYnJvYWRjYXN0ICsgMSk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9hZGRyZXNzX2NsYXNzKHgpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbik6CisgICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBpZiBuID49IDA6CisgICAgICAgICAgICBpZiBuZXR3b3JrICsgbiA+IGJyb2FkY2FzdDoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhuZXR3b3JrICsgbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG4gKz0gMQorICAgICAgICAgICAgaWYgYnJvYWRjYXN0ICsgbiA8IG5ldHdvcms6CisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MoYnJvYWRjYXN0ICsgbikKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdHlwZScgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKyAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgIT0gb3RoZXIubmV0d29ya19hZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29ya19hZGRyZXNzIDwgb3RoZXIubmV0d29ya19hZGRyZXNzCisgICAgICAgIGlmIHNlbGYubmV0bWFzayAhPSBvdGhlci5uZXRtYXNrOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0bWFzayA8IG90aGVyLm5ldG1hc2sKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl92ZXJzaW9uID09IG90aGVyLl92ZXJzaW9uIGFuZAorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9PSBvdGhlci5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spID09IGludChvdGhlci5uZXRtYXNrKSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgXiBpbnQoc2VsZi5uZXRtYXNrKSkKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAjIGFsd2F5cyBmYWxzZSBpZiBvbmUgaXMgdjQgYW5kIHRoZSBvdGhlciBpcyB2Ni4KKyAgICAgICAgaWYgc2VsZi5fdmVyc2lvbiAhPSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGRlYWxpbmcgd2l0aCBhbm90aGVyIG5ldHdvcmsuCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlTmV0d29yayk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBkZWFsaW5nIHdpdGggYW5vdGhlciBhZGRyZXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybiAoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSA8PSBpbnQob3RoZXIuX2lwKSA8PQorICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykpCisKKyAgICBkZWYgb3ZlcmxhcHMoc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJUZWxsIGlmIHNlbGYgaXMgcGFydGx5IGNvbnRhaW5lZCBpbiBvdGhlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYubmV0d29ya19hZGRyZXNzIGluIG90aGVyIG9yICgKKyAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MgaW4gb3RoZXIgb3IgKAorICAgICAgICAgICAgICAgIG90aGVyLm5ldHdvcmtfYWRkcmVzcyBpbiBzZWxmIG9yICgKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgaW4gc2VsZikpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyb2FkY2FzdF9hZGRyZXNzKHNlbGYpOgorICAgICAgICB4ID0gc2VsZi5fY2FjaGUuZ2V0KCdicm9hZGNhc3RfYWRkcmVzcycpCisgICAgICAgIGlmIHggaXMgTm9uZToKKyAgICAgICAgICAgIHggPSBzZWxmLl9hZGRyZXNzX2NsYXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaG9zdG1hc2spKQorICAgICAgICAgICAgc2VsZi5fY2FjaGVbJ2Jyb2FkY2FzdF9hZGRyZXNzJ10gPSB4CisgICAgICAgIHJldHVybiB4CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaG9zdG1hc2soc2VsZik6CisgICAgICAgIHggPSBzZWxmLl9jYWNoZS5nZXQoJ2hvc3RtYXNrJykKKyAgICAgICAgaWYgeCBpcyBOb25lOgorICAgICAgICAgICAgeCA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KHNlbGYubmV0bWFzaykgXiBzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgIHNlbGYuX2NhY2hlWydob3N0bWFzayddID0geAorICAgICAgICByZXR1cm4geAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5fcHJlZml4bGVuKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYubmV0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5ob3N0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBudW1fYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICAiIiJOdW1iZXIgb2YgaG9zdHMgaW4gdGhlIGN1cnJlbnQgc3VibmV0LiIiIgorICAgICAgICByZXR1cm4gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpIC0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSArIDEKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfYWRkcmVzc19jbGFzcyhzZWxmKToKKyAgICAgICAgIyBSZXR1cm5pbmcgYmFyZSBhZGRyZXNzIG9iamVjdHMgKHJhdGhlciB0aGFuIGludGVyZmFjZXMpIGFsbG93cyBmb3IKKyAgICAgICAgIyBtb3JlIGNvbnNpc3RlbnQgYmVoYXZpb3VyIGFjcm9zcyB0aGUgbmV0d29yayBhZGRyZXNzLCBicm9hZGNhc3QKKyAgICAgICAgIyBhZGRyZXNzIGFuZCBpbmRpdmlkdWFsIGhvc3QgYWRkcmVzc2VzLgorICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIGFzc29jaWF0ZWQgYWRkcmVzcyBjbGFzcycgJSAodHlwZShzZWxmKSwpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IobXNnKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ByZWZpeGxlbgorCisgICAgZGVmIGFkZHJlc3NfZXhjbHVkZShzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlJlbW92ZSBhbiBhZGRyZXNzIGZyb20gYSBsYXJnZXIgYmxvY2suCisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgICAgICAgICAgIGFkZHIyID0gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykKKyAgICAgICAgICAgIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikgPQorICAgICAgICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjIvMzEnKSwKKyAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi40LzMwJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjgvMjknKV0KKworICAgICAgICBvciBJUHY2OgorCisgICAgICAgICAgICBhZGRyMSA9IGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzMyJykKKyAgICAgICAgICAgIGFkZHIyID0gaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMTI4JykKKyAgICAgICAgICAgIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikgPQorICAgICAgICAgICAgICAgIFtpcF9uZXR3b3JrKCcyMDAxOmRiODo6MS8xMjgnKSwKKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo6Mi8xMjcnKSwKKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo6NC8xMjYnKSwKKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo6OC8xMjUnKSwKKyAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICBpcF9uZXR3b3JrKCcyMDAxOmRiODo4MDAwOjovMzMnKV0KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgb3RoZXI6IEFuIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdCBvZiB0aGUgc2FtZSB0eXBlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgdGhlIElQdig0fDYpTmV0d29yayBvYmplY3RzIHdoaWNoIGlzIHNlbGYKKyAgICAgICAgICAgIG1pbnVzIG90aGVyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFR5cGVFcnJvcjogSWYgc2VsZiBhbmQgb3RoZXIgYXJlIG9mIGRpZmZmZXJpbmcgYWRkcmVzcworICAgICAgICAgICAgICB2ZXJzaW9ucywgb3IgaWYgb3RoZXIgaXMgbm90IGEgbmV0d29yayBvYmplY3QuCisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBvdGhlciBpcyBub3QgY29tcGxldGVseSBjb250YWluZWQgYnkgc2VsZi4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIF9CYXNlTmV0d29yayk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGlzIG5vdCBhIG5ldHdvcmsgb2JqZWN0IiAlIG90aGVyKQorCisgICAgICAgIGlmIG5vdCAob3RoZXIubmV0d29ya19hZGRyZXNzID49IHNlbGYubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgbm90IGNvbnRhaW5lZCBpbiAlcycgJSAob3RoZXIsIHNlbGYpKQorICAgICAgICBpZiBvdGhlciA9PSBzZWxmOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgICMgTWFrZSBzdXJlIHdlJ3JlIGNvbXBhcmluZyB0aGUgbmV0d29yayBvZiBvdGhlci4KKyAgICAgICAgb3RoZXIgPSBvdGhlci5fX2NsYXNzX18oJyVzLyVzJyAlIChvdGhlci5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIucHJlZml4bGVuKSkKKworICAgICAgICBzMSwgczIgPSBzZWxmLnN1Ym5ldHMoKQorICAgICAgICB3aGlsZSBzMSAhPSBvdGhlciBhbmQgczIgIT0gb3RoZXI6CisgICAgICAgICAgICBpZiAob3RoZXIubmV0d29ya19hZGRyZXNzID49IHMxLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzMS5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgeWllbGQgczIKKyAgICAgICAgICAgICAgICBzMSwgczIgPSBzMS5zdWJuZXRzKCkKKyAgICAgICAgICAgIGVsaWYgKG90aGVyLm5ldHdvcmtfYWRkcmVzcyA+PSBzMi5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyA8PSBzMi5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgeWllbGQgczEKKyAgICAgICAgICAgICAgICBzMSwgczIgPSBzMi5zdWJuZXRzKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiB3ZSBnb3QgaGVyZSwgdGhlcmUncyBhIGJ1ZyBzb21ld2hlcmUuCisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0Vycm9yIHBlcmZvcm1pbmcgZXhjbHVzaW9uOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3MxOiAlcyBzMjogJXMgb3RoZXI6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMxLCBzMiwgb3RoZXIpKQorICAgICAgICBpZiBzMSA9PSBvdGhlcjoKKyAgICAgICAgICAgIHlpZWxkIHMyCisgICAgICAgIGVsaWYgczIgPT0gb3RoZXI6CisgICAgICAgICAgICB5aWVsZCBzMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiB3ZSBnb3QgaGVyZSwgdGhlcmUncyBhIGJ1ZyBzb21ld2hlcmUuCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRXJyb3IgcGVyZm9ybWluZyBleGNsdXNpb246ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzMTogJXMgczI6ICVzIG90aGVyOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMxLCBzMiwgb3RoZXIpKQorCisgICAgZGVmIGNvbXBhcmVfbmV0d29ya3Moc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJDb21wYXJlIHR3byBJUCBvYmplY3RzLgorCisgICAgICAgIFRoaXMgaXMgb25seSBjb25jZXJuZWQgYWJvdXQgdGhlIGNvbXBhcmlzb24gb2YgdGhlIGludGVnZXIKKyAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmsgYWRkcmVzc2VzLiAgVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAgICBob3N0IGJpdHMgYXJlbid0IGNvbnNpZGVyZWQgYXQgYWxsIGluIHRoaXMgbWV0aG9kLiAgSWYgeW91IHdhbnQKKyAgICAgICAgdG8gY29tcGFyZSBob3N0IGJpdHMsIHlvdSBjYW4gZWFzaWx5IGVub3VnaCBkbyBhCisgICAgICAgICdIb3N0QS5faXAgPCBIb3N0Qi5faXAnCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG90aGVyOiBBbiBJUCBvYmplY3QuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIElmIHRoZSBJUCB2ZXJzaW9ucyBvZiBzZWxmIGFuZCBvdGhlciBhcmUgdGhlIHNhbWUsIHJldHVybnM6CisKKyAgICAgICAgICAgIC0xIGlmIHNlbGYgPCBvdGhlcjoKKyAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSA8IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpCisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKSA8CisgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjIwMDAvMTI0JykKKyAgICAgICAgICAgIDAgaWYgc2VsZiA9PSBvdGhlcgorICAgICAgICAgICAgICBlZzogSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpID09IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvMTI0JykgPT0KKyAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKQorICAgICAgICAgICAgMSBpZiBzZWxmID4gb3RoZXIKKyAgICAgICAgICAgICAgZWc6IElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpID4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpCisgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OjIwMDAvMTI0JykgPgorICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKQorCisgICAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgICBUeXBlRXJyb3IgaWYgdGhlIElQIHZlcnNpb25zIGFyZSBkaWZmZXJlbnQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgZG9lcyB0aGlzIG5lZWQgdG8gcmFpc2UgYSBWYWx1ZUVycm9yPworICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICAjIHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24gYmVsb3cgaGVyZToKKyAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPCBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPiBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAjIHNlbGYubmV0d29ya19hZGRyZXNzID09IG90aGVyLm5ldHdvcmtfYWRkcmVzcyBiZWxvdyBoZXJlOgorICAgICAgICBpZiBzZWxmLm5ldG1hc2sgPCBvdGhlci5uZXRtYXNrOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGlmIHNlbGYubmV0bWFzayA+IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9nZXRfbmV0d29ya3Nfa2V5KHNlbGYpOgorICAgICAgICAiIiJOZXR3b3JrLW9ubHkga2V5IGZ1bmN0aW9uLgorCisgICAgICAgIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgaWRlbnRpZmllcyB0aGlzIGFkZHJlc3MnIG5ldHdvcmsgYW5kCisgICAgICAgIG5ldG1hc2suIFRoaXMgZnVuY3Rpb24gaXMgYSBzdWl0YWJsZSAia2V5IiBhcmd1bWVudCBmb3Igc29ydGVkKCkKKyAgICAgICAgYW5kIGxpc3Quc29ydCgpLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24sIHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLm5ldG1hc2spCisKKyAgICBkZWYgc3VibmV0cyhzZWxmLCBwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpOgorICAgICAgICAiIiJUaGUgc3VibmV0cyB3aGljaCBqb2luIHRvIG1ha2UgdGhlIGN1cnJlbnQgc3VibmV0LgorCisgICAgICAgIEluIHRoZSBjYXNlIHRoYXQgc2VsZiBjb250YWlucyBvbmx5IG9uZSBJUAorICAgICAgICAoc2VsZi5fcHJlZml4bGVuID09IDMyIGZvciBJUHY0IG9yIHNlbGYuX3ByZWZpeGxlbiA9PSAxMjgKKyAgICAgICAgZm9yIElQdjYpLCB5aWVsZCBhbiBpdGVyYXRvciB3aXRoIGp1c3Qgb3Vyc2VsZi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY6IEFuIGludGVnZXIsIHRoZSBhbW91bnQgdGhlIHByZWZpeCBsZW5ndGgKKyAgICAgICAgICAgICAgc2hvdWxkIGJlIGluY3JlYXNlZCBieS4gVGhpcyBzaG91bGQgbm90IGJlIHNldCBpZgorICAgICAgICAgICAgICBuZXdfcHJlZml4IGlzIGFsc28gc2V0LgorICAgICAgICAgICAgbmV3X3ByZWZpeDogVGhlIGRlc2lyZWQgbmV3IHByZWZpeCBsZW5ndGguIFRoaXMgbXVzdCBiZSBhCisgICAgICAgICAgICAgIGxhcmdlciBudW1iZXIgKHNtYWxsZXIgcHJlZml4KSB0aGFuIHRoZSBleGlzdGluZyBwcmVmaXguCisgICAgICAgICAgICAgIFRoaXMgc2hvdWxkIG5vdCBiZSBzZXQgaWYgcHJlZml4bGVuX2RpZmYgaXMgYWxzbyBzZXQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIG9mIElQdig0fDYpIG9iamVjdHMuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogVGhlIHByZWZpeGxlbl9kaWZmIGlzIHRvbyBzbWFsbCBvciB0b28gbGFyZ2UuCisgICAgICAgICAgICAgICAgT1IKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4IGFyZSBib3RoIHNldCBvciBuZXdfcHJlZml4CisgICAgICAgICAgICAgIGlzIGEgc21hbGxlciBudW1iZXIgdGhhbiB0aGUgY3VycmVudCBwcmVmaXggKHNtYWxsZXIKKyAgICAgICAgICAgICAgbnVtYmVyIG1lYW5zIGEgbGFyZ2VyIG5ldHdvcmspCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSBzZWxmLl9tYXhfcHJlZml4bGVuOgorICAgICAgICAgICAgeWllbGQgc2VsZgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbmV3X3ByZWZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ld19wcmVmaXggPCBzZWxmLl9wcmVmaXhsZW46CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbmV3IHByZWZpeCBtdXN0IGJlIGxvbmdlcicpCisgICAgICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiAhPSAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgPSBuZXdfcHJlZml4IC0gc2VsZi5fcHJlZml4bGVuCisKKyAgICAgICAgaWYgcHJlZml4bGVuX2RpZmYgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigncHJlZml4IGxlbmd0aCBkaWZmIG11c3QgYmUgPiAwJykKKyAgICAgICAgbmV3X3ByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbiArIHByZWZpeGxlbl9kaWZmCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soc3RyKG5ld19wcmVmaXhsZW4pKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgJ3ByZWZpeCBsZW5ndGggZGlmZiAlZCBpcyBpbnZhbGlkIGZvciBuZXRibG9jayAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXhsZW4sIHNlbGYpKQorCisgICAgICAgIGZpcnN0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuICsgcHJlZml4bGVuX2RpZmYpKQorCisgICAgICAgIHlpZWxkIGZpcnN0CisgICAgICAgIGN1cnJlbnQgPSBmaXJzdAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYnJvYWRjYXN0ID0gY3VycmVudC5icm9hZGNhc3RfYWRkcmVzcworICAgICAgICAgICAgaWYgYnJvYWRjYXN0ID09IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3M6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBuZXdfYWRkciA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KGJyb2FkY2FzdCkgKyAxKQorICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJSAobmV3X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuKSkKKworICAgICAgICAgICAgeWllbGQgY3VycmVudAorCisgICAgZGVmIHN1cGVybmV0KHNlbGYsIHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSk6CisgICAgICAgICIiIlRoZSBzdXBlcm5ldCBjb250YWluaW5nIHRoZSBjdXJyZW50IG5ldHdvcmsuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmOiBBbiBpbnRlZ2VyLCB0aGUgYW1vdW50IHRoZSBwcmVmaXggbGVuZ3RoIG9mCisgICAgICAgICAgICAgIHRoZSBuZXR3b3JrIHNob3VsZCBiZSBkZWNyZWFzZWQgYnkuICBGb3IgZXhhbXBsZSwgZ2l2ZW4gYQorICAgICAgICAgICAgICAvMjQgbmV0d29yayBhbmQgYSBwcmVmaXhsZW5fZGlmZiBvZiAzLCBhIHN1cGVybmV0IHdpdGggYQorICAgICAgICAgICAgICAvMjEgbmV0bWFzayBpcyByZXR1cm5lZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gSVB2NCBuZXR3b3JrIG9iamVjdC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMC4gSS5lLiwgeW91IGhhdmUKKyAgICAgICAgICAgICAgYSBuZWdhdGl2ZSBwcmVmaXggbGVuZ3RoLgorICAgICAgICAgICAgICAgIE9SCisgICAgICAgICAgICBJZiBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCBhcmUgYm90aCBzZXQgb3IgbmV3X3ByZWZpeCBpcyBhCisgICAgICAgICAgICAgIGxhcmdlciBudW1iZXIgdGhhbiB0aGUgY3VycmVudCBwcmVmaXggKGxhcmdlciBudW1iZXIgbWVhbnMgYQorICAgICAgICAgICAgICBzbWFsbGVyIG5ldHdvcmspCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBpZiBuZXdfcHJlZml4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbmV3X3ByZWZpeCA+IHNlbGYuX3ByZWZpeGxlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZXcgcHJlZml4IG11c3QgYmUgc2hvcnRlcicpCisgICAgICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiAhPSAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXgnKQorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgPSBzZWxmLl9wcmVmaXhsZW4gLSBuZXdfcHJlZml4CisKKyAgICAgICAgaWYgc2VsZi5wcmVmaXhsZW4gLSBwcmVmaXhsZW5fZGlmZiA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICdjdXJyZW50IHByZWZpeGxlbiBpcyAlZCwgY2Fubm90IGhhdmUgYSBwcmVmaXhsZW5fZGlmZiBvZiAlZCcgJQorICAgICAgICAgICAgICAgIChzZWxmLnByZWZpeGxlbiwgcHJlZml4bGVuX2RpZmYpKQorICAgICAgICAjIFRPRE8gKHBtb29keSk6IG9wdGltaXplIHRoaXMuCisgICAgICAgIHQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpCisgICAgICAgIHJldHVybiB0Ll9fY2xhc3NfXygnJXMvJWQnICUgKHQubmV0d29ya19hZGRyZXNzLCB0LnByZWZpeGxlbikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBtdWx0aWNhc3QgYWRkcmVzcy4KKyAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbXVsdGljYXN0IGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfbXVsdGljYXN0KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIG9uZSBvZiB0aGUKKyAgICAgICAgICAgIHJlc2VydmVkIElQdjYgTmV0d29yayByYW5nZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfcmVzZXJ2ZWQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19yZXNlcnZlZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MjkxLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX2xpbmtfbG9jYWwgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19saW5rX2xvY2FsKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDE5My4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19wcml2YXRlIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfcHJpdmF0ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjIuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfdW5zcGVjaWZpZWQgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc191bnNwZWNpZmllZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbG9vcGJhY2sgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19sb29wYmFjaykKKworCitjbGFzcyBfQmFzZVY0OgorCisgICAgIiIiQmFzZSBJUHY0IG9iamVjdC4KKworICAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCBieSBJUHY0IG9iamVjdHMgaW4gYm90aCBzaW5nbGUgSVAKKyAgICBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzLgorCisgICAgIiIiCisKKyAgICAjIEVxdWl2YWxlbnQgdG8gMjU1LjI1NS4yNTUuMjU1IG9yIDMyIGJpdHMgb2YgMSdzLgorICAgIF9BTExfT05FUyA9ICgyKipJUFY0TEVOR1RIKSAtIDEKKyAgICBfREVDSU1BTF9ESUdJVFMgPSBmcm96ZW5zZXQoJzAxMjM0NTY3ODknKQorCisgICAgIyB0aGUgdmFsaWQgb2N0ZXRzIGZvciBob3N0IGFuZCBuZXRtYXNrcy4gb25seSB1c2VmdWwgZm9yIElQdjQuCisgICAgX3ZhbGlkX21hc2tfb2N0ZXRzID0gZnJvemVuc2V0KCgyNTUsIDI1NCwgMjUyLCAyNDgsIDI0MCwgMjI0LCAxOTIsIDEyOCwgMCkpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSA0CisgICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY0TEVOR1RICisKKyAgICBkZWYgX2V4cGxvZGVfc2hvcnRoYW5kX2lwX3N0cmluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCisgICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICAgICAgIiIiVHVybiB0aGUgZ2l2ZW4gSVAgc3RyaW5nIGludG8gYW4gaW50ZWdlciBmb3IgY29tcGFyaXNvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQIGlwX3N0ci4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIElQIGlwX3N0ciBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBpZiBpcF9zdHIgaXNuJ3QgYSB2YWxpZCBJUHY0IEFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpcF9zdHI6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcignQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHknKQorCisgICAgICAgIG9jdGV0cyA9IGlwX3N0ci5zcGxpdCgnLicpCisgICAgICAgIGlmIGxlbihvY3RldHMpICE9IDQ6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJXIiICUgaXBfc3RyKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhtYXAoc2VsZi5fcGFyc2Vfb2N0ZXQsIG9jdGV0cyksICdiaWcnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCisKKyAgICBkZWYgX3BhcnNlX29jdGV0KHNlbGYsIG9jdGV0X3N0cik6CisgICAgICAgICIiIkNvbnZlcnQgYSBkZWNpbWFsIG9jdGV0IGludG8gYW4gaW50ZWdlci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgb2N0ZXRfc3RyOiBBIHN0cmluZywgdGhlIG51bWJlciB0byBwYXJzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIG9jdGV0IGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIG9jdGV0IGlzbid0IHN0cmljdGx5IGEgZGVjaW1hbCBmcm9tIFswLi4yNTVdLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgb2N0ZXRfc3RyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgb2N0ZXQgbm90IHBlcm1pdHRlZCIpCisgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KKyAgICAgICAgaWYgbm90IHNlbGYuX0RFQ0lNQUxfRElHSVRTLmlzc3VwZXJzZXQob2N0ZXRfc3RyKToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgb2N0ZXRfc3RyKQorICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKKyAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKKyAgICAgICAgaWYgbGVuKG9jdGV0X3N0cikgPiAzOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgMyBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgb2N0ZXRfc3RyKQorICAgICAgICAjIENvbnZlcnQgdG8gaW50ZWdlciAod2Uga25vdyBkaWdpdHMgYXJlIGxlZ2FsKQorICAgICAgICBvY3RldF9pbnQgPSBpbnQob2N0ZXRfc3RyLCAxMCkKKyAgICAgICAgIyBBbnkgb2N0ZXRzIHRoYXQgbG9vayBsaWtlIHRoZXkgKm1pZ2h0KiBiZSB3cml0dGVuIGluIG9jdGFsLAorICAgICAgICAjIGFuZCB3aGljaCBkb24ndCBsb29rIGV4YWN0bHkgdGhlIHNhbWUgaW4gYm90aCBvY3RhbCBhbmQKKyAgICAgICAgIyBkZWNpbWFsIGFyZSByZWplY3RlZCBhcyBhbWJpZ3VvdXMKKyAgICAgICAgaWYgb2N0ZXRfaW50ID4gNyBhbmQgb2N0ZXRfc3RyWzBdID09ICcwJzoKKyAgICAgICAgICAgIG1zZyA9ICJBbWJpZ3VvdXMgKG9jdGFsL2RlY2ltYWwpIHZhbHVlIGluICVyIG5vdCBwZXJtaXR0ZWQiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKKyAgICAgICAgaWYgb2N0ZXRfaW50ID4gMjU1OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIiAlIG9jdGV0X2ludCkKKyAgICAgICAgcmV0dXJuIG9jdGV0X2ludAorCisgICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50KToKKyAgICAgICAgIiIiVHVybnMgYSAzMi1iaXQgaW50ZWdlciBpbnRvIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgSVAgYWRkcmVzcyBhcyBhIHN0cmluZyBpbiBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICcuJy5qb2luKG1hcChzdHIsIGlwX2ludC50b19ieXRlcyg0LCAnYmlnJykpKQorCisgICAgZGVmIF9pc192YWxpZF9uZXRtYXNrKHNlbGYsIG5ldG1hc2spOgorICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgbmV0bWFzayBpcyB2YWxpZC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbmV0bWFzazogQSBzdHJpbmcsIGVpdGhlciBhIHByZWZpeCBvciBkb3R0ZWQgZGVjaW1hbAorICAgICAgICAgICAgICBuZXRtYXNrLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIHByZWZpeCByZXByZXNlbnRzIGEgdmFsaWQgSVB2NAorICAgICAgICAgICAgbmV0bWFzay4KKworICAgICAgICAiIiIKKyAgICAgICAgbWFzayA9IG5ldG1hc2suc3BsaXQoJy4nKQorICAgICAgICBpZiBsZW4obWFzaykgPT0gNDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiBtYXNrOgorICAgICAgICAgICAgICAgICAgICBpZiBpbnQoeCkgbm90IGluIHNlbGYuX3ZhbGlkX21hc2tfb2N0ZXRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAjIEZvdW5kIHNvbWV0aGluZyB0aGF0IGlzbid0IGFuIGludGVnZXIgb3IgaXNuJ3QgdmFsaWQKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGZvciBpZHgsIHkgaW4gZW51bWVyYXRlKG1hc2spOgorICAgICAgICAgICAgICAgIGlmIGlkeCA+IDAgYW5kIHkgPiBtYXNrW2lkeCAtIDFdOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ldG1hc2sgPSBpbnQobmV0bWFzaykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIDAgPD0gbmV0bWFzayA8PSBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBkZWYgX2lzX2hvc3RtYXNrKHNlbGYsIGlwX3N0cik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIElQIHN0cmluZyBpcyBhIGhvc3RtYXNrIChyYXRoZXIgdGhhbiBhIG5ldG1hc2spLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgcG90ZW50aWFsIGhvc3RtYXNrLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIElQIHN0cmluZyBpcyBhIGhvc3RtYXNrLgorCisgICAgICAgICIiIgorICAgICAgICBiaXRzID0gaXBfc3RyLnNwbGl0KCcuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFydHMgPSBbeCBmb3IgeCBpbiBtYXAoaW50LCBiaXRzKSBpZiB4IGluIHNlbGYuX3ZhbGlkX21hc2tfb2N0ZXRzXQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBsZW4ocGFydHMpICE9IGxlbihiaXRzKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBwYXJ0c1swXSA8IHBhcnRzWy0xXToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBJUHY0QWRkcmVzcyhfQmFzZVY0LCBfQmFzZUFkZHJlc3MpOgorCisgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY0IEFkZHJlc3Nlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKworICAgICAgICAiIiIKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUAorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykgPT0gSVB2NEFkZHJlc3MoMzIyMTIyNTk4NSkuCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY0QWRkcmVzcyhpbnQoSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX2lwID0gYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcGFja2VkX2FkZHJlc3MoYWRkcmVzcywgNCkKKyAgICAgICAgICAgIHNlbGYuX2lwID0gaW50LmZyb21fYnl0ZXMoYWRkcmVzcywgJ2JpZycpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgc3RyaW5nLgorICAgICAgICBhZGRyX3N0ciA9IHN0cihhZGRyZXNzKQorICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwYWNrZWQoc2VsZik6CisgICAgICAgICIiIlRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBhZGRyZXNzLiIiIgorICAgICAgICByZXR1cm4gdjRfaW50X3RvX3BhY2tlZChzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIHRoZQorICAgICAgICAgICAgIHJlc2VydmVkIElQdjQgTmV0d29yayByYW5nZS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmVzZXJ2ZWRfbmV0d29yayA9IElQdjROZXR3b3JrKCcyNDAuMC4wLjAvNCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIHJlc2VydmVkX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19wcml2YXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDE5MTguCisKKyAgICAgICAgIiIiCisgICAgICAgIHByaXZhdGVfMTAgPSBJUHY0TmV0d29yaygnMTAuMC4wLjAvOCcpCisgICAgICAgIHByaXZhdGVfMTcyID0gSVB2NE5ldHdvcmsoJzE3Mi4xNi4wLjAvMTInKQorICAgICAgICBwcml2YXRlXzE5MiA9IElQdjROZXR3b3JrKCcxOTIuMTY4LjAuMC8xNicpCisgICAgICAgIHJldHVybiAoc2VsZiBpbiBwcml2YXRlXzEwIG9yCisgICAgICAgICAgICAgICAgc2VsZiBpbiBwcml2YXRlXzE3MiBvcgorICAgICAgICAgICAgICAgIHNlbGYgaW4gcHJpdmF0ZV8xOTIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgbXVsdGljYXN0LgorICAgICAgICAgICAgU2VlIFJGQyAzMTcxIGZvciBkZXRhaWxzLgorCisgICAgICAgICIiIgorICAgICAgICBtdWx0aWNhc3RfbmV0d29yayA9IElQdjROZXR3b3JrKCcyMjQuMC4wLjAvNCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIG11bHRpY2FzdF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIGlzIHRoZSB1bnNwZWNpZmllZCBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyA1NzM1IDMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHVuc3BlY2lmaWVkX2FkZHJlc3MgPSBJUHY0QWRkcmVzcygnMC4wLjAuMCcpCisgICAgICAgIHJldHVybiBzZWxmID09IHVuc3BlY2lmaWVkX2FkZHJlc3MKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIHBlciBSRkMgMzMzMC4KKworICAgICAgICAiIiIKKyAgICAgICAgbG9vcGJhY2tfbmV0d29yayA9IElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIGxvb3BiYWNrX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgbGluay1sb2NhbCBwZXIgUkZDIDM5MjcuCisKKyAgICAgICAgIiIiCisgICAgICAgIGxpbmtsb2NhbF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzE2OS4yNTQuMC4wLzE2JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbGlua2xvY2FsX25ldHdvcmsKKworCitjbGFzcyBJUHY0SW50ZXJmYWNlKElQdjRBZGRyZXNzKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgorICAgICAgICAgICAgSVB2NEFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubmV0d29yayA9IElQdjROZXR3b3JrKHNlbGYuX2lwKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisgICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCisKKyAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLm5ldHdvcmsuX3ByZWZpeGxlbgorCisgICAgICAgIHNlbGYubmV0bWFzayA9IHNlbGYubmV0d29yay5uZXRtYXNrCisgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmsucHJlZml4bGVuKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfZXF1YWwgPSBJUHY0QWRkcmVzcy5fX2VxX18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzX2VxdWFsIG9yIGFkZHJlc3NfZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzc19lcXVhbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrID09IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBBbiBpbnRlcmZhY2Ugd2l0aCBhbiBhc3NvY2lhdGVkIG5ldHdvcmsgaXMgTk9UIHRoZQorICAgICAgICAgICAgIyBzYW1lIGFzIGFuIHVuYXNzb2NpYXRlZCBhZGRyZXNzLiBUaGF0J3Mgd2h5IHRoZSBoYXNoCisgICAgICAgICAgICAjIHRha2VzIHRoZSBleHRyYSBpbmZvIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfbGVzcyA9IElQdjRBZGRyZXNzLl9fbHRfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgYWRkcmVzc19sZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPCBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgV2UgKmRvKiBhbGxvdyBhZGRyZXNzZXMgYW5kIGludGVyZmFjZXMgdG8gYmUgc29ydGVkLiBUaGUKKyAgICAgICAgICAgICMgdW5hc3NvY2lhdGVkIGFkZHJlc3MgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gYWxsIGludGVyZmFjZXMuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXAoc2VsZik6CisgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdG1hc2spCisKKworY2xhc3MgSVB2NE5ldHdvcmsoX0Jhc2VWNCwgX0Jhc2VOZXR3b3JrKToKKworICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbmQgbWFuaXB1bGF0ZXMgMzItYml0IElQdjQgbmV0d29yayArIGFkZHJlc3Nlcy4uCisKKyAgICBBdHRyaWJ1dGVzOiBbZXhhbXBsZXMgZm9yIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjcnKV0KKyAgICAgICAgLm5ldHdvcmtfYWRkcmVzczogSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCisgICAgICAgIC5ob3N0bWFzazogSVB2NEFkZHJlc3MoJzAuMC4wLjMxJykKKyAgICAgICAgLmJyb2FkY2FzdF9hZGRyZXNzOiBJUHY0QWRkcmVzcygnMTkyLjAuMi4zMicpCisgICAgICAgIC5uZXRtYXNrOiBJUHY0QWRkcmVzcygnMjU1LjI1NS4yNTUuMjI0JykKKyAgICAgICAgLnByZWZpeGxlbjogMjcKKworICAgICIiIgorICAgICMgQ2xhc3MgdG8gdXNlIHdoZW4gY3JlYXRpbmcgYWRkcmVzcyBvYmplY3RzCisgICAgX2FkZHJlc3NfY2xhc3MgPSBJUHY0QWRkcmVzcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKworICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBJUHY0IG5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVAgWyYgbmV0d29ya10uCisgICAgICAgICAgICAgICcxOTIuMC4yLjAvMjQnCisgICAgICAgICAgICAgICcxOTIuMC4yLjAvMjU1LjI1NS4yNTUuMCcKKyAgICAgICAgICAgICAgJzE5Mi4wLjAuMi8wLjAuMC4yNTUnCisgICAgICAgICAgICAgIGFyZSBhbGwgZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGluIElQdjQuIFNpbWlsYXJseSwKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMScKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMS8yNTUuMjU1LjI1NS4yNTUnCisgICAgICAgICAgICAgICcxOTIuMC4yLjEvMzInCisgICAgICAgICAgICAgIGFyZSBhbHNvIGZ1bmN0aW9uYWx5IGVxdWl2YWxlbnQuIFRoYXQgaXMgdG8gc2F5LCBmYWlsaW5nIHRvCisgICAgICAgICAgICAgIHByb3ZpZGUgYSBzdWJuZXRtYXNrIHdpbGwgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgbWFzayBvZiAvMzIuCisKKyAgICAgICAgICAgICAgSWYgdGhlIG1hc2sgKHBvcnRpb24gYWZ0ZXIgdGhlIC8gaW4gdGhlIGFyZ3VtZW50KSBpcyBnaXZlbiBpbgorICAgICAgICAgICAgICBkb3R0ZWQgcXVhZCBmb3JtLCBpdCBpcyB0cmVhdGVkIGFzIGEgbmV0bWFzayBpZiBpdCBzdGFydHMgd2l0aCBhCisgICAgICAgICAgICAgIG5vbi16ZXJvIGZpZWxkIChlLmcuIC8yNTUuMC4wLjAgPT0gLzgpIGFuZCBhcyBhIGhvc3RtYXNrIGlmIGl0CisgICAgICAgICAgICAgIHN0YXJ0cyB3aXRoIGEgemVybyBmaWVsZCAoZS5nLiAwLjI1NS4yNTUuMjU1ID09IC84KSwgd2l0aCB0aGUKKyAgICAgICAgICAgICAgc2luZ2xlIGV4Y2VwdGlvbiBvZiBhbiBhbGwtemVybyBtYXNrIHdoaWNoIGlzIHRyZWF0ZWQgYXMgYQorICAgICAgICAgICAgICBuZXRtYXNrID09IC8wLiBJZiBubyBtYXNrIGlzIGdpdmVuLCBhIGRlZmF1bHQgb2YgLzMyIGlzIHVzZWQuCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjEnKSA9PSBJUHY0TmV0d29yaygzMjIxMjI1OTg1KQorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2NEludGVyZmFjZShpbnQoSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xJykpKSA9PQorICAgICAgICAgICAgICAgIElQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMScpCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IElmIGlwYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjQgYWRkcmVzcy4KKyAgICAgICAgICAgIE5ldG1hc2tWYWx1ZUVycm9yOiBJZiB0aGUgbmV0bWFzayBpc24ndCB2YWxpZCBmb3IKKyAgICAgICAgICAgICAgYW4gSVB2NCBhZGRyZXNzLgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgc3RyaWN0IGlzIFRydWUgYW5kIGEgbmV0d29yayBhZGRyZXNzIGlzIG5vdAorICAgICAgICAgICAgICBzdXBwbGllZC4KKworICAgICAgICAiIiIKKworICAgICAgICBfQmFzZVY0Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlTmV0d29yay5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlLgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHByZWZpeCBzdHJpbmcuCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzBdKSkKKworICAgICAgICBpZiBsZW4oYWRkcikgPT0gMjoKKyAgICAgICAgICAgIG1hc2sgPSBhZGRyWzFdLnNwbGl0KCcuJykKKworICAgICAgICAgICAgaWYgbGVuKG1hc2spID09IDQ6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGRvdHRlZCBkZWNpbWFsIG5ldG1hc2suCisgICAgICAgICAgICAgICAgaWYgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJbMV0pKQorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5faXNfaG9zdG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMV0pIF4gc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IoJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRkclsxXSkKKworICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeF9mcm9tX2lwX2ludChpbnQoc2VsZi5uZXRtYXNrKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm0uCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKCclciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFkZHJbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gaW50KGFkZHJbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KAorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikpCisKKyAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgaWYgKElQdjRBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KKyAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgaGFzIGhvc3QgYml0cyBzZXQnICUgc2VsZikKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKKworICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gKHNlbGYuX21heF9wcmVmaXhsZW4gLSAxKToKKyAgICAgICAgICAgIHNlbGYuaG9zdHMgPSBzZWxmLl9faXRlcl9fCisKKworY2xhc3MgX0Jhc2VWNjoKKworICAgICIiIkJhc2UgSVB2NiBvYmplY3QuCisKKyAgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgYnkgSVB2NiBvYmplY3RzIGluIGJvdGggc2luZ2xlIElQCisgICAgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworICAgICIiIgorCisgICAgX0FMTF9PTkVTID0gKDIqKklQVjZMRU5HVEgpIC0gMQorICAgIF9IRVhURVRfQ09VTlQgPSA4CisgICAgX0hFWF9ESUdJVFMgPSBmcm96ZW5zZXQoJzAxMjM0NTY3ODlBQkNERUZhYmNkZWYnKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0gNgorICAgICAgICBzZWxmLl9tYXhfcHJlZml4bGVuID0gSVBWNkxFTkdUSAorCisgICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICAgICAgIiIiVHVybiBhbiBJUHY2IGlwX3N0ciBpbnRvIGFuIGludGVnZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUHY2IGlwX3N0ci4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50LCB0aGUgSVB2NiBhZGRyZXNzCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IGlmIGlwX3N0ciBpc24ndCBhIHZhbGlkIElQdjYgQWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlwX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eScpCisKKyAgICAgICAgcGFydHMgPSBpcF9zdHIuc3BsaXQoJzonKQorCisgICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIG5lZWRzIGF0IGxlYXN0IDIgY29sb25zICgzIHBhcnRzKS4KKyAgICAgICAgX21pbl9wYXJ0cyA9IDMKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA8IF9taW5fcGFydHM6CisgICAgICAgICAgICBtc2cgPSAiQXQgbGVhc3QgJWQgcGFydHMgZXhwZWN0ZWQgaW4gJXIiICUgKF9taW5fcGFydHMsIGlwX3N0cikKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKKworICAgICAgICAjIElmIHRoZSBhZGRyZXNzIGhhcyBhbiBJUHY0LXN0eWxlIHN1ZmZpeCwgY29udmVydCBpdCB0byBoZXhhZGVjaW1hbC4KKyAgICAgICAgaWYgJy4nIGluIHBhcnRzWy0xXToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpcHY0X2ludCA9IElQdjRBZGRyZXNzKHBhcnRzLnBvcCgpKS5faXAKKyAgICAgICAgICAgIGV4Y2VwdCBBZGRyZXNzVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQorICAgICAgICAgICAgcGFydHMuYXBwZW5kKCcleCcgJSAoKGlwdjRfaW50ID4+IDE2KSAmIDB4RkZGRikpCisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyV4JyAlIChpcHY0X2ludCAmIDB4RkZGRikpCisKKyAgICAgICAgIyBBbiBJUHY2IGFkZHJlc3MgY2FuJ3QgaGF2ZSBtb3JlIHRoYW4gOCBjb2xvbnMgKDkgcGFydHMpLgorICAgICAgICAjIFRoZSBleHRyYSBjb2xvbiBjb21lcyBmcm9tIHVzaW5nIHRoZSAiOjoiIG5vdGF0aW9uIGZvciBhIHNpbmdsZQorICAgICAgICAjIGxlYWRpbmcgb3IgdHJhaWxpbmcgemVybyBwYXJ0LgorICAgICAgICBfbWF4X3BhcnRzID0gc2VsZi5fSEVYVEVUX0NPVU5UICsgMQorICAgICAgICBpZiBsZW4ocGFydHMpID4gX21heF9wYXJ0czoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0ICVkIGNvbG9ucyBwZXJtaXR0ZWQgaW4gJXIiICUgKF9tYXhfcGFydHMtMSwgaXBfc3RyKQorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQorCisgICAgICAgICMgRGlzcmVnYXJkaW5nIHRoZSBlbmRwb2ludHMsIGZpbmQgJzo6JyB3aXRoIG5vdGhpbmcgaW4gYmV0d2Vlbi4KKyAgICAgICAgIyBUaGlzIGluZGljYXRlcyB0aGF0IGEgcnVuIG9mIHplcm9lcyBoYXMgYmVlbiBza2lwcGVkLgorICAgICAgICBza2lwX2luZGV4ID0gTm9uZQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4ocGFydHMpIC0gMSk6CisgICAgICAgICAgICBpZiBub3QgcGFydHNbaV06CisgICAgICAgICAgICAgICAgaWYgc2tpcF9pbmRleCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBDYW4ndCBoYXZlIG1vcmUgdGhhbiBvbmUgJzo6JworICAgICAgICAgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCBvbmUgJzo6JyBwZXJtaXR0ZWQgaW4gJXIiICUgaXBfc3RyCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBza2lwX2luZGV4ID0gaQorCisgICAgICAgICMgcGFydHNfaGkgaXMgdGhlIG51bWJlciBvZiBwYXJ0cyB0byBjb3B5IGZyb20gYWJvdmUvYmVmb3JlIHRoZSAnOjonCisgICAgICAgICMgcGFydHNfbG8gaXMgdGhlIG51bWJlciBvZiBwYXJ0cyB0byBjb3B5IGZyb20gYmVsb3cvYWZ0ZXIgdGhlICc6OicKKyAgICAgICAgaWYgc2tpcF9pbmRleCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgSWYgd2UgZm91bmQgYSAnOjonLCB0aGVuIGNoZWNrIGlmIGl0IGFsc28gY292ZXJzIHRoZSBlbmRwb2ludHMuCisgICAgICAgICAgICBwYXJ0c19oaSA9IHNraXBfaW5kZXgKKyAgICAgICAgICAgIHBhcnRzX2xvID0gbGVuKHBhcnRzKSAtIHNraXBfaW5kZXggLSAxCisgICAgICAgICAgICBpZiBub3QgcGFydHNbMF06CisgICAgICAgICAgICAgICAgcGFydHNfaGkgLT0gMQorICAgICAgICAgICAgICAgIGlmIHBhcnRzX2hpOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIF46IHJlcXVpcmVzIF46OgorICAgICAgICAgICAgaWYgbm90IHBhcnRzWy0xXToKKyAgICAgICAgICAgICAgICBwYXJ0c19sbyAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFydHNfbG86CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSBpcF9zdHIpICAjIDokIHJlcXVpcmVzIDo6JAorICAgICAgICAgICAgcGFydHNfc2tpcHBlZCA9IHNlbGYuX0hFWFRFVF9DT1VOVCAtIChwYXJ0c19oaSArIHBhcnRzX2xvKQorICAgICAgICAgICAgaWYgcGFydHNfc2tpcHBlZCA8IDE6CisgICAgICAgICAgICAgICAgbXNnID0gIkV4cGVjdGVkIGF0IG1vc3QgJWQgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQtMSwgaXBfc3RyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBhbGxvY2F0ZSB0aGUgZW50aXJlIGFkZHJlc3MgdG8gcGFydHNfaGkuICBUaGUKKyAgICAgICAgICAgICMgZW5kcG9pbnRzIGNvdWxkIHN0aWxsIGJlIGVtcHR5LCBidXQgX3BhcnNlX2hleHRldCgpIHdpbGwgY2hlY2sKKyAgICAgICAgICAgICMgZm9yIHRoYXQuCisgICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IHNlbGYuX0hFWFRFVF9DT1VOVDoKKyAgICAgICAgICAgICAgICBtc2cgPSAiRXhhY3RseSAlZCBwYXJ0cyBleHBlY3RlZCB3aXRob3V0ICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKHNlbGYuX0hFWFRFVF9DT1VOVCwgaXBfc3RyKSkKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKKyAgICAgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgXjogcmVxdWlyZXMgXjo6CisgICAgICAgICAgICBpZiBub3QgcGFydHNbLTFdOgorICAgICAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgOiQgcmVxdWlyZXMgOjokCisgICAgICAgICAgICBwYXJ0c19oaSA9IGxlbihwYXJ0cykKKyAgICAgICAgICAgIHBhcnRzX2xvID0gMAorICAgICAgICAgICAgcGFydHNfc2tpcHBlZCA9IDAKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIE5vdywgcGFyc2UgdGhlIGhleHRldHMgaW50byBhIDEyOC1iaXQgaW50ZWdlci4KKyAgICAgICAgICAgIGlwX2ludCA9IDAKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBhcnRzX2hpKToKKyAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2CisgICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgIGlwX2ludCA8PD0gMTYgKiBwYXJ0c19za2lwcGVkCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtcGFydHNfbG8sIDApOgorICAgICAgICAgICAgICAgIGlwX2ludCA8PD0gMTYKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gc2VsZi5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQorICAgICAgICAgICAgcmV0dXJuIGlwX2ludAorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCisKKyAgICBkZWYgX3BhcnNlX2hleHRldChzZWxmLCBoZXh0ZXRfc3RyKToKKyAgICAgICAgIiIiQ29udmVydCBhbiBJUHY2IGhleHRldCBzdHJpbmcgaW50byBhbiBpbnRlZ2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBoZXh0ZXRfc3RyOiBBIHN0cmluZywgdGhlIG51bWJlciB0byBwYXJzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIGhleHRldCBhcyBhbiBpbnRlZ2VyLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IGlmIHRoZSBpbnB1dCBpc24ndCBzdHJpY3RseSBhIGhleCBudW1iZXIgZnJvbQorICAgICAgICAgICAgICBbMC4uRkZGRl0uCisKKyAgICAgICAgIiIiCisgICAgICAgICMgV2hpdGVsaXN0IHRoZSBjaGFyYWN0ZXJzLCBzaW5jZSBpbnQoKSBhbGxvd3MgYSBsb3Qgb2YgYml6YXJyZSBzdHVmZi4KKyAgICAgICAgaWYgbm90IHNlbGYuX0hFWF9ESUdJVFMuaXNzdXBlcnNldChoZXh0ZXRfc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9ubHkgaGV4IGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIiICUgaGV4dGV0X3N0cikKKyAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCisgICAgICAgICMgaXMgbGlrZWx5IHRvIGJlIG1vcmUgaW5mb3JtYXRpdmUgZm9yIHRoZSB1c2VyCisgICAgICAgIGlmIGxlbihoZXh0ZXRfc3RyKSA+IDQ6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCA0IGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBoZXh0ZXRfc3RyKQorICAgICAgICAjIExlbmd0aCBjaGVjayBtZWFucyB3ZSBjYW4gc2tpcCBjaGVja2luZyB0aGUgaW50ZWdlciB2YWx1ZQorICAgICAgICByZXR1cm4gaW50KGhleHRldF9zdHIsIDE2KQorCisgICAgZGVmIF9jb21wcmVzc19oZXh0ZXRzKHNlbGYsIGhleHRldHMpOgorICAgICAgICAiIiJDb21wcmVzc2VzIGEgbGlzdCBvZiBoZXh0ZXRzLgorCisgICAgICAgIENvbXByZXNzZXMgYSBsaXN0IG9mIHN0cmluZ3MsIHJlcGxhY2luZyB0aGUgbG9uZ2VzdCBjb250aW51b3VzCisgICAgICAgIHNlcXVlbmNlIG9mICIwIiBpbiB0aGUgbGlzdCB3aXRoICIiIGFuZCBhZGRpbmcgZW1wdHkgc3RyaW5ncyBhdAorICAgICAgICB0aGUgYmVnaW5uaW5nIG9yIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzdWNoIHRoYXQgc3Vic2VxdWVudGx5CisgICAgICAgIGNhbGxpbmcgIjoiLmpvaW4oaGV4dGV0cykgd2lsbCBwcm9kdWNlIHRoZSBjb21wcmVzc2VkIHZlcnNpb24gb2YKKyAgICAgICAgdGhlIElQdjYgYWRkcmVzcy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaGV4dGV0czogQSBsaXN0IG9mIHN0cmluZ3MsIHRoZSBoZXh0ZXRzIHRvIGNvbXByZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGxpc3Qgb2Ygc3RyaW5ncy4KKworICAgICAgICAiIiIKKyAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9IC0xCisgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuID0gMAorICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IC0xCisgICAgICAgIGRvdWJsZWNvbG9uX2xlbiA9IDAKKyAgICAgICAgZm9yIGluZGV4LCBoZXh0ZXQgaW4gZW51bWVyYXRlKGhleHRldHMpOgorICAgICAgICAgICAgaWYgaGV4dGV0ID09ICcwJzoKKyAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9sZW4gKz0gMQorICAgICAgICAgICAgICAgIGlmIGRvdWJsZWNvbG9uX3N0YXJ0ID09IC0xOgorICAgICAgICAgICAgICAgICAgICAjIFN0YXJ0IG9mIGEgc2VxdWVuY2Ugb2YgemVyb3MuCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gaW5kZXgKKyAgICAgICAgICAgICAgICBpZiBkb3VibGVjb2xvbl9sZW4gPiBiZXN0X2RvdWJsZWNvbG9uX2xlbjoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBsb25nZXN0IHNlcXVlbmNlIG9mIHplcm9zIHNvIGZhci4KKyAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9sZW4gPSBkb3VibGVjb2xvbl9sZW4KKyAgICAgICAgICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9IGRvdWJsZWNvbG9uX3N0YXJ0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX2xlbiA9IDAKKyAgICAgICAgICAgICAgICBkb3VibGVjb2xvbl9zdGFydCA9IC0xCisKKyAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9sZW4gPiAxOgorICAgICAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9lbmQgPSAoYmVzdF9kb3VibGVjb2xvbl9zdGFydCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2xlbikKKyAgICAgICAgICAgICMgRm9yIHplcm9zIGF0IHRoZSBlbmQgb2YgdGhlIGFkZHJlc3MuCisgICAgICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX2VuZCA9PSBsZW4oaGV4dGV0cyk6CisgICAgICAgICAgICAgICAgaGV4dGV0cyArPSBbJyddCisgICAgICAgICAgICBoZXh0ZXRzW2Jlc3RfZG91YmxlY29sb25fc3RhcnQ6YmVzdF9kb3VibGVjb2xvbl9lbmRdID0gWycnXQorICAgICAgICAgICAgIyBGb3IgemVyb3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYWRkcmVzcy4KKyAgICAgICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fc3RhcnQgPT0gMDoKKyAgICAgICAgICAgICAgICBoZXh0ZXRzID0gWycnXSArIGhleHRldHMKKworICAgICAgICByZXR1cm4gaGV4dGV0cworCisgICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50PU5vbmUpOgorICAgICAgICAiIiJUdXJucyBhIDEyOC1iaXQgaW50ZWdlciBpbnRvIGhleGFkZWNpbWFsIG5vdGF0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIHN0cmluZywgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhZGRyZXNzLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBhZGRyZXNzIGlzIGJpZ2dlciB0aGFuIDEyOCBiaXRzIG9mIGFsbCBvbmVzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBpcF9pbnQgaXMgTm9uZToKKyAgICAgICAgICAgIGlwX2ludCA9IGludChzZWxmLl9pcCkKKworICAgICAgICBpZiBpcF9pbnQgPiBzZWxmLl9BTExfT05FUzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lQdjYgYWRkcmVzcyBpcyB0b28gbGFyZ2UnKQorCisgICAgICAgIGhleF9zdHIgPSAnJTAzMngnICUgaXBfaW50CisgICAgICAgIGhleHRldHMgPSBbJyV4JyAlIGludChoZXhfc3RyW3g6eCs0XSwgMTYpIGZvciB4IGluIHJhbmdlKDAsIDMyLCA0KV0KKworICAgICAgICBoZXh0ZXRzID0gc2VsZi5fY29tcHJlc3NfaGV4dGV0cyhoZXh0ZXRzKQorICAgICAgICByZXR1cm4gJzonLmpvaW4oaGV4dGV0cykKKworICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgorICAgICAgICAiIiJFeHBhbmQgYSBzaG9ydGVuZWQgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIHN0cmluZywgdGhlIGV4cGFuZGVkIElQdjYgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCBJUHY2TmV0d29yayk6CisgICAgICAgICAgICBpcF9zdHIgPSBzdHIoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLCBJUHY2SW50ZXJmYWNlKToKKyAgICAgICAgICAgIGlwX3N0ciA9IHN0cihzZWxmLmlwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYpCisKKyAgICAgICAgaXBfaW50ID0gc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGlwX3N0cikKKyAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKKyAgICAgICAgcGFydHMgPSBbaGV4X3N0clt4OngrNF0gZm9yIHggaW4gcmFuZ2UoMCwgMzIsIDQpXQorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIChfQmFzZU5ldHdvcmssIElQdjZJbnRlcmZhY2UpKToKKyAgICAgICAgICAgIHJldHVybiAnJXMvJWQnICUgKCc6Jy5qb2luKHBhcnRzKSwgc2VsZi5fcHJlZml4bGVuKQorICAgICAgICByZXR1cm4gJzonLmpvaW4ocGFydHMpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWF4X3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisKK2NsYXNzIElQdjZBZGRyZXNzKF9CYXNlVjYsIF9CYXNlQWRkcmVzcyk6CisKKyAgICAiIiJSZXByZXNlbnQgYW5kIG1hbmlwdWxhdGUgc2luZ2xlIElQdjYgQWRkcmVzc2VzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBJUHY2IGFkZHJlc3Mgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVAKKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKSA9PQorICAgICAgICAgICAgICAgIElQdjZBZGRyZXNzKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwKQorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoaW50KElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykpKSA9PQorICAgICAgICAgICAgICAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgX0Jhc2VBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlVjYuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKworICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgaW50KToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ludF9hZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGFkZHJlc3MKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3BhY2tlZF9hZGRyZXNzKGFkZHJlc3MsIDE2KQorICAgICAgICAgICAgc2VsZi5faXAgPSBpbnQuZnJvbV9ieXRlcyhhZGRyZXNzLCAnYmlnJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCisgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIHNlbGYuX2lwID0gc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJfc3RyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhY2tlZChzZWxmKToKKyAgICAgICAgIiIiVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MuIiIiCisgICAgICAgIHJldHVybiB2Nl9pbnRfdG9fcGFja2VkKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX211bHRpY2FzdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbXVsdGljYXN0IGFkZHJlc3MuCisgICAgICAgICAgICBTZWUgUkZDIDIzNzMgMi43IGZvciBkZXRhaWxzLgorCisgICAgICAgICIiIgorICAgICAgICBtdWx0aWNhc3RfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZjAwOjovOCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIG11bHRpY2FzdF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB3aXRoaW4gb25lIG9mIHRoZQorICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmVzZXJ2ZWRfbmV0d29ya3MgPSBbSVB2Nk5ldHdvcmsoJzo6LzgnKSwgSVB2Nk5ldHdvcmsoJzEwMDo6LzgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDo6LzcnKSwgSVB2Nk5ldHdvcmsoJzQwMDo6LzYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJzEwMDA6Oi80JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCc0MDAwOjovMycpLCBJUHY2TmV0d29yaygnNjAwMDo6LzMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzgwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdBMDAwOjovMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnQzAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0UwMDA6Oi80JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdGMDAwOjovNScpLCBJUHY2TmV0d29yaygnRjgwMDo6LzYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0ZFMDA6Oi85JyldCisKKyAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gcmVzZXJ2ZWRfbmV0d29ya3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbGlua19sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbGluay1sb2NhbC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgNDI5MS4KKworICAgICAgICAiIiIKKyAgICAgICAgbGlua2xvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbGlua2xvY2FsX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgUkZDIDM4NzkuCisgICAgICAgIFVzZSBpc19wcml2YXRlIHRvIHRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGluIHRoZSBzcGFjZSBvZiB1bmlxdWUgbG9jYWwKKyAgICAgICAgYWRkcmVzc2VzIGFzIGRlZmluZWQgYnkgUkZDIDQxOTMuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNpdGVsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlYzA6Oi8xMCcpCisgICAgICAgIHJldHVybiBzZWxmIGluIHNpdGVsb2NhbF9uZXR3b3JrCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MTkzLgorCisgICAgICAgICIiIgorICAgICAgICBwcml2YXRlX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmMwMDo6LzcnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBwcml2YXRlX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjIuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBhZGRyZXNzIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICAgIFJGQyAyMzczIDIuNS4zLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwdjRfbWFwcGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIElQdjQgbWFwcGVkIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIElmIHRoZSBJUHY2IGFkZHJlc3MgaXMgYSB2NCBtYXBwZWQgYWRkcmVzcywgcmV0dXJuIHRoZQorICAgICAgICAgICAgSVB2NCBtYXBwZWQgYWRkcmVzcy4gUmV0dXJuIE5vbmUgb3RoZXJ3aXNlLgorCisgICAgICAgICIiIgorICAgICAgICBpZiAoc2VsZi5faXAgPj4gMzIpICE9IDB4RkZGRjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzZWxmLl9pcCAmIDB4RkZGRkZGRkYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdGVyZWRvKHNlbGYpOgorICAgICAgICAiIiJUdXBsZSBvZiBlbWJlZGRlZCB0ZXJlZG8gSVBzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUdXBsZSBvZiB0aGUgKHNlcnZlciwgY2xpZW50KSBJUHMgb3IgTm9uZSBpZiB0aGUgYWRkcmVzcworICAgICAgICAgICAgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB0ZXJlZG8gYWRkcmVzcyAoZG9lc24ndCBzdGFydCB3aXRoCisgICAgICAgICAgICAyMDAxOjovMzIpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChzZWxmLl9pcCA+PiA5NikgIT0gMHgyMDAxMDAwMDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiAoSVB2NEFkZHJlc3MoKHNlbGYuX2lwID4+IDY0KSAmIDB4RkZGRkZGRkYpLAorICAgICAgICAgICAgICAgIElQdjRBZGRyZXNzKH5zZWxmLl9pcCAmIDB4RkZGRkZGRkYpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNpeHRvZm91cihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBJUHY0IDZ0bzQgZW1iZWRkZWQgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVGhlIElQdjQgNnRvNC1lbWJlZGRlZCBhZGRyZXNzIGlmIHByZXNlbnQgb3IgTm9uZSBpZiB0aGUKKyAgICAgICAgICAgIGFkZHJlc3MgZG9lc24ndCBhcHBlYXIgdG8gY29udGFpbiBhIDZ0bzQgZW1iZWRkZWQgYWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgKHNlbGYuX2lwID4+IDExMikgIT0gMHgyMDAyOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKChzZWxmLl9pcCA+PiA4MCkgJiAweEZGRkZGRkZGKQorCisKK2NsYXNzIElQdjZJbnRlcmZhY2UoSVB2NkFkZHJlc3MpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIChieXRlcywgaW50KSk6CisgICAgICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoc2VsZi5faXApCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKyAgICAgICAgSVB2NkFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkclswXSkKKyAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PUZhbHNlKQorICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLm5ldHdvcmsuX3ByZWZpeGxlbgorICAgICAgICBzZWxmLmhvc3RtYXNrID0gc2VsZi5uZXR3b3JrLmhvc3RtYXNrCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrLnByZWZpeGxlbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2VxdWFsID0gSVB2NkFkZHJlc3MuX19lcV9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBub3QgYWRkcmVzc19lcXVhbCBvciBhZGRyZXNzX2VxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3NfZXF1YWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA9PSBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgQW4gaW50ZXJmYWNlIHdpdGggYW4gYXNzb2NpYXRlZCBuZXR3b3JrIGlzIE5PVCB0aGUKKyAgICAgICAgICAgICMgc2FtZSBhcyBhbiB1bmFzc29jaWF0ZWQgYWRkcmVzcy4gVGhhdCdzIHdoeSB0aGUgaGFzaAorICAgICAgICAgICAgIyB0YWtlcyB0aGUgZXh0cmEgaW5mbyBpbnRvIGFjY291bnQuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICBhZGRyZXNzX2xlc3MgPSBJUHY2QWRkcmVzcy5fX2x0X18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIGFkZHJlc3NfbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrIDwgb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIFdlICpkbyogYWxsb3cgYWRkcmVzc2VzIGFuZCBpbnRlcmZhY2VzIHRvIGJlIHNvcnRlZC4gVGhlCisgICAgICAgICAgICAjIHVuYXNzb2NpYXRlZCBhZGRyZXNzIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuIGFsbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCBeIHNlbGYuX3ByZWZpeGxlbiBeIGludChzZWxmLm5ldHdvcmsubmV0d29ya19hZGRyZXNzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwKHNlbGYpOgorICAgICAgICByZXR1cm4gSVB2NkFkZHJlc3Moc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX25ldG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0bWFzaykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX2hvc3RtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgPT0gMCBhbmQgc2VsZi5uZXR3b3JrLmlzX3Vuc3BlY2lmaWVkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbG9vcGJhY2soc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAxIGFuZCBzZWxmLm5ldHdvcmsuaXNfbG9vcGJhY2sKKworCitjbGFzcyBJUHY2TmV0d29yayhfQmFzZVY2LCBfQmFzZU5ldHdvcmspOgorCisgICAgIiIiVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuZCBtYW5pcHVsYXRlcyAxMjgtYml0IElQdjYgbmV0d29ya3MuCisKKyAgICBBdHRyaWJ1dGVzOiBbZXhhbXBsZXMgZm9yIElQdjYoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpXQorICAgICAgICAubmV0d29ya19hZGRyZXNzOiBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorICAgICAgICAuaG9zdG1hc2s6IElQdjZBZGRyZXNzKCc6OmYnKQorICAgICAgICAuYnJvYWRjYXN0X2FkZHJlc3M6IElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwZicpCisgICAgICAgIC5uZXRtYXNrOiBJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmYwJykKKyAgICAgICAgLnByZWZpeGxlbjogMTI0CisKKyAgICAiIiIKKworICAgICMgQ2xhc3MgdG8gdXNlIHdoZW4gY3JlYXRpbmcgYWRkcmVzcyBvYmplY3RzCisgICAgX2FkZHJlc3NfY2xhc3MgPSBJUHY2QWRkcmVzcworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NiBOZXR3b3JrIG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQdjYgbmV0d29yayBvciB0aGUKKyAgICAgICAgICAgICAgSVAgYW5kIHByZWZpeC9uZXRtYXNrLgorICAgICAgICAgICAgICAnMjAwMTpkYjg6Oi8xMjgnCisgICAgICAgICAgICAgICcyMDAxOmRiODowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMC8xMjgnCisgICAgICAgICAgICAgICcyMDAxOmRiODo6JworICAgICAgICAgICAgICBhcmUgYWxsIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBpbiBJUHY2LiAgVGhhdCBpcyB0byBzYXksCisgICAgICAgICAgICAgIGZhaWxpbmcgdG8gcHJvdmlkZSBhIHN1Ym5ldG1hc2sgd2lsbCBjcmVhdGUgYW4gb2JqZWN0IHdpdGgKKyAgICAgICAgICAgICAgYSBtYXNrIG9mIC8xMjguCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykgPT0KKyAgICAgICAgICAgICAgICBJUHY2TmV0d29yayg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKGludChJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpKSkgPT0KKyAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwMTpkYjg6OicpCisKKyAgICAgICAgICAgIHN0cmljdDogQSBib29sZWFuLiBJZiB0cnVlLCBlbnN1cmUgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkCisgICAgICAgICAgICAgIEEgdHJ1ZSBuZXR3b3JrIGFkZHJlc3MsIGVnLCAyMDAxOmRiODo6MTAwMC8xMjQgYW5kIG5vdCBhbgorICAgICAgICAgICAgICBJUCBhZGRyZXNzIG9uIGEgbmV0d29yaywgZWcsIDIwMDE6ZGI4OjoxLzEyNC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgYWRkcmVzcyBpc24ndCBhIHZhbGlkIElQdjYgYWRkcmVzcy4KKyAgICAgICAgICAgIE5ldG1hc2tWYWx1ZUVycm9yOiBJZiB0aGUgbmV0bWFzayBpc24ndCB2YWxpZCBmb3IKKyAgICAgICAgICAgICAgYW4gSVB2NiBhZGRyZXNzLgorICAgICAgICAgICAgVmFsdWVFcnJvcjogSWYgc3RyaWN0IHdhcyBUcnVlIGFuZCBhIG5ldHdvcmsgYWRkcmVzcyB3YXMgbm90CisgICAgICAgICAgICAgIHN1cHBsaWVkLgorCisgICAgICAgICIiIgorICAgICAgICBfQmFzZVY2Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgIF9CYXNlTmV0d29yay5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBwcmVmaXggc3RyaW5nLgorICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKworICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyWzBdKSkKKworICAgICAgICBpZiBsZW4oYWRkcikgPT0gMjoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzX3ZhbGlkX25ldG1hc2soYWRkclsxXSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gaW50KGFkZHJbMV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yKCclciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGFkZHJbMV0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHNlbGYuX3ByZWZpeGxlbikpCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIGlmIChJUHY2QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgaW50KHNlbGYubmV0bWFzaykpICE9CisgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykpCisKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IChzZWxmLl9tYXhfcHJlZml4bGVuIC0gMSk6CisgICAgICAgICAgICBzZWxmLmhvc3RzID0gc2VsZi5fX2l0ZXJfXworCisgICAgZGVmIF9pc192YWxpZF9uZXRtYXNrKHNlbGYsIHByZWZpeGxlbik6CisgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBuZXRtYXNrL3ByZWZpeGxlbiBpcyB2YWxpZC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuOiBBIHN0cmluZywgdGhlIG5ldG1hc2sgaW4gcHJlZml4IGxlbmd0aCBmb3JtYXQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgcHJlZml4IHJlcHJlc2VudHMgYSB2YWxpZCBJUHY2CisgICAgICAgICAgICBuZXRtYXNrLgorCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBpbnQocHJlZml4bGVuKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gMCA8PSBwcmVmaXhsZW4gPD0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3NpdGVfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIHNpdGUtbG9jYWwuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBzaXRlLWxvY2FsIGFkZHJlc3Mgc3BhY2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSBSRkMgMzg3OS4KKyAgICAgICAgVXNlIGlzX3ByaXZhdGUgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbAorICAgICAgICBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSBSRkMgNDE5My4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgMzUxMyAyLjUuNi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19zaXRlX2xvY2FsIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCkKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2RlY29kZXIucHkgYi9MaWIvanNvbi9kZWNvZGVyLnB5CmluZGV4IGRjMTE1NWIuLjA3ZmQ2OTYgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2RlY29kZXIucHkKKysrIGIvTGliL2pzb24vZGVjb2Rlci5weQpAQCAtMTIxLDggKzEyMSw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgXFx1WFhYWCBlc2NhcGUiCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBlbmQpKQogICAgICAgICAgICAgdW5pID0gaW50KGVzYywgMTYpCi0gICAgICAgICAgICAjIENoZWNrIGZvciBzdXJyb2dhdGUgcGFpciBvbiBVQ1MtNCBzeXN0ZW1zCi0gICAgICAgICAgICBpZiAweGQ4MDAgPD0gdW5pIDw9IDB4ZGJmZiBhbmQgc3lzLm1heHVuaWNvZGUgPiA2NTUzNToKKyAgICAgICAgICAgIGlmIDB4ZDgwMCA8PSB1bmkgPD0gMHhkYmZmOgogICAgICAgICAgICAgICAgIG1zZyA9ICJJbnZhbGlkIFxcdVhYWFhcXHVYWFhYIHN1cnJvZ2F0ZSBwYWlyIgogICAgICAgICAgICAgICAgIGlmIG5vdCBzW2VuZCArIDU6ZW5kICsgN10gPT0gJ1xcdSc6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL19fbWFpbl9fLnB5IGIvTGliL2xpYjJ0bzMvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA2ODhiYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9saWIydG8zL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsNCBAQAoraW1wb3J0IHN5cworZnJvbSAubWFpbiBpbXBvcnQgbWFpbgorCitzeXMuZXhpdChtYWluKCJsaWIydG8zLmZpeGVzIikpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQppbmRleCBhZmMwNDY3Li5iMTc2MDU2IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKQEAgLTI3LDcgKzI3LDYgQEAKICAgICBwYXR0ZXJuX3RyZWUgPSBOb25lICMgVHJlZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0dGVybgogICAgIG9wdGlvbnMgPSBOb25lICAjIE9wdGlvbnMgb2JqZWN0IHBhc3NlZCB0byBpbml0aWFsaXplcgogICAgIGZpbGVuYW1lID0gTm9uZSAjIFRoZSBmaWxlbmFtZSAoc2V0IGJ5IHNldF9maWxlbmFtZSkKLSAgICBsb2dnZXIgPSBOb25lICAgIyBBIGxvZ2dlciAoc2V0IGJ5IHNldF9maWxlbmFtZSkKICAgICBudW1iZXJzID0gaXRlcnRvb2xzLmNvdW50KDEpICMgRm9yIG5ld19uYW1lKCkKICAgICB1c2VkX25hbWVzID0gc2V0KCkgIyBBIHNldCBvZiBhbGwgdXNlZCBOQU1FcwogICAgIG9yZGVyID0gInBvc3QiICMgRG9lcyB0aGUgZml4ZXIgcHJlZmVyIHByZS0gb3IgcG9zdC1vcmRlciB0cmF2ZXJzYWwKQEAgLTcwLDEyICs2OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3RyZWU9VHJ1ZSkKIAogICAgIGRlZiBzZXRfZmlsZW5hbWUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiJTZXQgdGhlIGZpbGVuYW1lLCBhbmQgYSBsb2dnZXIgZGVyaXZlZCBmcm9tIGl0LgorICAgICAgICAiIiJTZXQgdGhlIGZpbGVuYW1lLgogCiAgICAgICAgIFRoZSBtYWluIHJlZmFjdG9yaW5nIHRvb2wgc2hvdWxkIGNhbGwgdGhpcy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKGZpbGVuYW1lKQogCiAgICAgZGVmIG1hdGNoKHNlbGYsIG5vZGUpOgogICAgICAgICAiIiJSZXR1cm5zIG1hdGNoIGZvciBhIGdpdmVuIHBhcnNlIHRyZWUgbm9kZS4KZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3B5dHJlZS5weQppbmRleCBmYTQ5NDJmMy4uMTdjYmYwYSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3B5dHJlZS5weQpAQCAtMTA5LDI2ICsxMDksNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIHNldF9wcmVmaXgoc2VsZiwgcHJlZml4KToKLSAgICAgICAgIiIiCi0gICAgICAgIFNldCB0aGUgcHJlZml4IGZvciB0aGUgbm9kZSAoc2VlIExlYWYgY2xhc3MpLgotCi0gICAgICAgIERFUFJFQ0FURUQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IGRpcmVjdGx5LgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2Fybigic2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgcHJlZml4IHByb3BlcnR5IiwKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgc2VsZi5wcmVmaXggPSBwcmVmaXgKLQotICAgIGRlZiBnZXRfcHJlZml4KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIHRoZSBwcmVmaXggZm9yIHRoZSBub2RlIChzZWUgTGVhZiBjbGFzcykuCi0KLSAgICAgICAgREVQUkVDQVRFRDsgdXNlIHRoZSBwcmVmaXggcHJvcGVydHkgZGlyZWN0bHkuCi0gICAgICAgICIiIgotICAgICAgICB3YXJuaW5ncy53YXJuKCJnZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSBwcmVmaXggcHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByZXR1cm4gc2VsZi5wcmVmaXgKLQogICAgIGRlZiByZXBsYWNlKHNlbGYsIG5ldyk6CiAgICAgICAgICIiIlJlcGxhY2UgdGhpcyBub2RlIHdpdGggYSBuZXcgb25lIGluIHRoZSBwYXJlbnQuIiIiCiAgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudCBpcyBub3QgTm9uZSwgc3RyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CmluZGV4IDM4ZmI4ZWQuLjIwMWUxOTMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CkBAIC01NjYsNyArNTY2LDcgQEAKICAgICAgICAgYmxvY2tfbGluZW5vID0gTm9uZQogICAgICAgICBpbmRlbnQgPSBOb25lCiAgICAgICAgIGxpbmVubyA9IDAKLSAgICAgICAgZm9yIGxpbmUgaW4gaW5wdXQuc3BsaXRsaW5lcyhUcnVlKToKKyAgICAgICAgZm9yIGxpbmUgaW4gaW5wdXQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKToKICAgICAgICAgICAgIGxpbmVubyArPSAxCiAgICAgICAgICAgICBpZiBsaW5lLmxzdHJpcCgpLnN0YXJ0c3dpdGgoc2VsZi5QUzEpOgogICAgICAgICAgICAgICAgIGlmIGJsb2NrIGlzIG5vdCBOb25lOgpAQCAtNjEwLDcgKzYxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vLCBlcnIuX19jbGFzc19fLl9fbmFtZV9fLCBlcnIpCiAgICAgICAgICAgICByZXR1cm4gYmxvY2sKICAgICAgICAgaWYgc2VsZi5yZWZhY3Rvcl90cmVlKHRyZWUsIGZpbGVuYW1lKToKLSAgICAgICAgICAgIG5ldyA9IHN0cih0cmVlKS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBuZXcgPSBzdHIodHJlZSkuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgIyBVbmRvIHRoZSBhZGp1c3RtZW50IG9mIHRoZSBsaW5lIG51bWJlcnMgaW4gd3JhcF90b2tzKCkgYmVsb3cuCiAgICAgICAgICAgICBjbGlwcGVkLCBuZXcgPSBuZXdbOmxpbmVuby0xXSwgbmV3W2xpbmVuby0xOl0KICAgICAgICAgICAgIGFzc2VydCBjbGlwcGVkID09IFsiXG4iXSAqIChsaW5lbm8tMSksIGNsaXBwZWQKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKaW5kZXggYWM3ZDkwMC4uYTJhYjFmMyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKQEAgLTMxLDIzICszMSw2IEBACiAKICAgICAiIiJVbml0IHRlc3RzIGZvciBub2RlcyAoQmFzZSwgTGVhZiwgTm9kZSkuIiIiCiAKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgyLDYpOgotICAgICAgICAjIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzIGlzIG5ldyBpbiAyLjYuCi0gICAgICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfcHJlZml4X21ldGhvZHMoc2VsZik6Ci0gICAgICAgICAgICBsID0gcHl0cmVlLkxlYWYoMTAwLCAiZm9vIikKLSAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLmdldF9wcmVmaXgoKSwgIiIpCi0gICAgICAgICAgICAgICAgbC5zZXRfcHJlZml4KCJoaSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwucHJlZml4LCAiaGkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDIpCi0gICAgICAgICAgICBmb3Igd2FybmluZyBpbiB3OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YXJuaW5nLmNhdGVnb3J5IGlzIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbMF0ubWVzc2FnZSksICJnZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIHRoZSBwcmVmaXggcHJvcGVydHkiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1sxXS5tZXNzYWdlKSwgInNldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIpCi0KICAgICBkZWYgdGVzdF9pbnN0YW50aWF0ZV9iYXNlKHNlbGYpOgogICAgICAgICBpZiBfX2RlYnVnX186CiAgICAgICAgICAgICAjIFRlc3QgdGhhdCBpbnN0YW50aWF0aW5nIEJhc2UoKSByYWlzZXMgYW4gQXNzZXJ0aW9uRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5IGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKaW5kZXggNDE5MWIyMi4uZTc5MDE4ZiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKKysrIGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKQEAgLTM2LDE1ICszNiw5IEBACiAgICAgICAgICAgICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLCAnbGFzdFJlc29ydCddCiAKIHRyeToKLSAgICBpbXBvcnQgY29kZWNzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgY29kZWNzID0gTm9uZQotCi10cnk6Ci0gICAgaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiAgICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRocmVhZCA9IE5vbmUKK2V4Y2VwdCBJbXBvcnRFcnJvcjogI3ByYWdtYTogbm8gY292ZXIKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIF9fYXV0aG9yX18gID0gIlZpbmF5IFNhamlwIDx2aW5heV9zYWppcEByZWQtZG92ZS5jb20+IgogX19zdGF0dXNfXyAgPSAicHJvZHVjdGlvbiIKQEAgLTY1LDE2ICs1OSwxNiBAQAogICAgIF9zcmNmaWxlID0gX19maWxlX18KIF9zcmNmaWxlID0gb3MucGF0aC5ub3JtY2FzZShfc3JjZmlsZSkKIAotIyBuZXh0IGJpdCBmaWxjaGVkIGZyb20gMS41LjIncyBpbnNwZWN0LnB5Ci1kZWYgY3VycmVudGZyYW1lKCk6Ci0gICAgIiIiUmV0dXJuIHRoZSBmcmFtZSBvYmplY3QgZm9yIHRoZSBjYWxsZXIncyBzdGFjayBmcmFtZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbgotICAgIGV4Y2VwdDoKLSAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzJdLnRiX2ZyYW1lLmZfYmFjawogCi1pZiBoYXNhdHRyKHN5cywgJ19nZXRmcmFtZScpOiBjdXJyZW50ZnJhbWUgPSBsYW1iZGE6IHN5cy5fZ2V0ZnJhbWUoMykKLSMgZG9uZSBmaWxjaGluZworaWYgaGFzYXR0cihzeXMsICdfZ2V0ZnJhbWUnKToKKyAgICBjdXJyZW50ZnJhbWUgPSBsYW1iZGE6IHN5cy5fZ2V0ZnJhbWUoMykKK2Vsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCisgICAgZGVmIGN1cnJlbnRmcmFtZSgpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZyYW1lIG9iamVjdCBmb3IgdGhlIGNhbGxlcidzIHN0YWNrIGZyYW1lLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzJdLnRiX2ZyYW1lLmZfYmFjawogCiAjIF9zcmNmaWxlIGlzIG9ubHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHN5cy5fZ2V0ZnJhbWUoKS4KICMgVG8gcHJvdmlkZSBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uLCBzZXQgX3NyY2ZpbGUKQEAgLTkyLDIyICs4NiwyMiBAQAogI3JhaXNlRXhjZXB0aW9ucyBpcyB1c2VkIHRvIHNlZSBpZiBleGNlcHRpb25zIGR1cmluZyBoYW5kbGluZyBzaG91bGQgYmUKICNwcm9wYWdhdGVkCiAjCi1yYWlzZUV4Y2VwdGlvbnMgPSAxCityYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCiAKICMKICMgSWYgeW91IGRvbid0IHdhbnQgdGhyZWFkaW5nIGluZm9ybWF0aW9uIGluIHRoZSBsb2csIHNldCB0aGlzIHRvIHplcm8KICMKLWxvZ1RocmVhZHMgPSAxCitsb2dUaHJlYWRzID0gVHJ1ZQogCiAjCiAjIElmIHlvdSBkb24ndCB3YW50IG11bHRpcHJvY2Vzc2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dNdWx0aXByb2Nlc3NpbmcgPSAxCitsb2dNdWx0aXByb2Nlc3NpbmcgPSBUcnVlCiAKICMKICMgSWYgeW91IGRvbid0IHdhbnQgcHJvY2VzcyBpbmZvcm1hdGlvbiBpbiB0aGUgbG9nLCBzZXQgdGhpcyB0byB6ZXJvCiAjCi1sb2dQcm9jZXNzZXMgPSAxCitsb2dQcm9jZXNzZXMgPSBUcnVlCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgICBMZXZlbCByZWxhdGVkIHN0dWZmCkBAIC0xOTcsOSArMTkxLDkgQEAKICN0aGUgbG9jayB3b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBhY3F1aXJlZCAtIHNvIHdlIG5lZWQgYW4gUkxvY2suCiAjVGhlIHNhbWUgYXJndW1lbnQgYXBwbGllcyB0byBMb2dnZXJzIGFuZCBNYW5hZ2VyLmxvZ2dlckRpY3QuCiAjCi1pZiB0aHJlYWQ6CitpZiB0aHJlYWRpbmc6CiAgICAgX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQotZWxzZToKK2Vsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgX2xvY2sgPSBOb25lCiAKIApAQCAtMjUyLDcgKzI0Niw3IEBACiAgICAgICAgICMgZHVyaW5nIGZvcm1hdHRpbmcsIHdlIHRlc3QgdG8gc2VlIGlmIHRoZSBhcmcgaXMgcHJlc2VudCB1c2luZwogICAgICAgICAjICdpZiBzZWxmLmFyZ3M6Jy4gSWYgdGhlIGV2ZW50IGJlaW5nIGxvZ2dlZCBpcyBlLmcuICdWYWx1ZSBpcyAlZCcKICAgICAgICAgIyBhbmQgaWYgdGhlIHBhc3NlZCBhcmcgZmFpbHMgJ2lmIHNlbGYuYXJnczonIHRoZW4gbm8gZm9ybWF0dGluZwotICAgICAgICAjIGlzIGRvbmUuIEZvciBleGFtcGxlLCBsb2dnZXIud2FybignVmFsdWUgaXMgJWQnLCAwKSB3b3VsZCBsb2cKKyAgICAgICAgIyBpcyBkb25lLiBGb3IgZXhhbXBsZSwgbG9nZ2VyLndhcm5pbmcoJ1ZhbHVlIGlzICVkJywgMCkgd291bGQgbG9nCiAgICAgICAgICMgJ1ZhbHVlIGlzICVkJyBpbnN0ZWFkIG9mICdWYWx1ZSBpcyAwJy4KICAgICAgICAgIyBGb3IgdGhlIHVzZSBjYXNlIG9mIHBhc3NpbmcgYSBkaWN0aW9uYXJ5LCB0aGlzIHNob3VsZCBub3QgYmUgYQogICAgICAgICAjIHByb2JsZW0uCkBAIC0yNzYsMTMgKzI3MCwxMyBAQAogICAgICAgICBzZWxmLmNyZWF0ZWQgPSBjdAogICAgICAgICBzZWxmLm1zZWNzID0gKGN0IC0gaW50KGN0KSkgKiAxMDAwCiAgICAgICAgIHNlbGYucmVsYXRpdmVDcmVhdGVkID0gKHNlbGYuY3JlYXRlZCAtIF9zdGFydFRpbWUpICogMTAwMAotICAgICAgICBpZiBsb2dUaHJlYWRzIGFuZCB0aHJlYWQ6Ci0gICAgICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICBpZiBsb2dUaHJlYWRzIGFuZCB0aHJlYWRpbmc6CisgICAgICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICAgICAgc2VsZi50aHJlYWROYW1lID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZQotICAgICAgICBlbHNlOgorICAgICAgICBlbHNlOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQogICAgICAgICAgICAgc2VsZi50aHJlYWROYW1lID0gTm9uZQotICAgICAgICBpZiBub3QgbG9nTXVsdGlwcm9jZXNzaW5nOgorICAgICAgICBpZiBub3QgbG9nTXVsdGlwcm9jZXNzaW5nOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gJ01haW5Qcm9jZXNzJwpAQCAtMjk0LDcgKzI4OCw3IEBACiAgICAgICAgICAgICAgICAgIyBmb3IgYW4gZXhhbXBsZQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzTmFtZSA9IG1wLmN1cnJlbnRfcHJvY2VzcygpLm5hbWUKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgbG9nUHJvY2Vzc2VzIGFuZCBoYXNhdHRyKG9zLCAnZ2V0cGlkJyk6CiAgICAgICAgICAgICBzZWxmLnByb2Nlc3MgPSBvcy5nZXRwaWQoKQpAQCAtNDY2LDYgKzQ2MCw5IEBACiAgICAgICAgIHNlbGYuX2ZtdCA9IHNlbGYuX3N0eWxlLl9mbXQKICAgICAgICAgc2VsZi5kYXRlZm10ID0gZGF0ZWZtdAogCisgICAgZGVmYXVsdF90aW1lX2Zvcm1hdCA9ICclWS0lbS0lZCAlSDolTTolUycKKyAgICBkZWZhdWx0X21zZWNfZm9ybWF0ID0gJyVzLCUwM2QnCisKICAgICBkZWYgZm9ybWF0VGltZShzZWxmLCByZWNvcmQsIGRhdGVmbXQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIGNyZWF0aW9uIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBMb2dSZWNvcmQgYXMgZm9ybWF0dGVkIHRleHQuCkBAIC00ODgsOCArNDg1LDggQEAKICAgICAgICAgaWYgZGF0ZWZtdDoKICAgICAgICAgICAgIHMgPSB0aW1lLnN0cmZ0aW1lKGRhdGVmbXQsIGN0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdCA9IHRpbWUuc3RyZnRpbWUoIiVZLSVtLSVkICVIOiVNOiVTIiwgY3QpCi0gICAgICAgICAgICBzID0gIiVzLCUwM2QiICUgKHQsIHJlY29yZC5tc2VjcykgIyB0aGUgdXNlIG9mICUgaGVyZSBpcyBpbnRlcm5hbAorICAgICAgICAgICAgdCA9IHRpbWUuc3RyZnRpbWUoc2VsZi5kZWZhdWx0X3RpbWVfZm9ybWF0LCBjdCkKKyAgICAgICAgICAgIHMgPSBzZWxmLmRlZmF1bHRfbXNlY19mb3JtYXQgJSAodCwgcmVjb3JkLm1zZWNzKQogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIGZvcm1hdEV4Y2VwdGlvbihzZWxmLCBlaSk6CkBAIC02NDIsMTEgKzYzOSwxMSBAQAogICAgICAgICB5ZXMuIElmIGRlZW1lZCBhcHByb3ByaWF0ZSwgdGhlIHJlY29yZCBtYXkgYmUgbW9kaWZpZWQgaW4tcGxhY2UuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLm5sZW4gPT0gMDoKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYubmFtZSA9PSByZWNvcmQubmFtZToKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbGlmIHJlY29yZC5uYW1lLmZpbmQoc2VsZi5uYW1lLCAwLCBzZWxmLm5sZW4pICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiAocmVjb3JkLm5hbWVbc2VsZi5ubGVuXSA9PSAiLiIpCiAKIGNsYXNzIEZpbHRlcmVyKG9iamVjdCk6CkBAIC02ODYsMTQgKzY4MywxNCBAQAogCiAgICAgICAgICAgIEFsbG93IGZpbHRlcnMgdG8gYmUganVzdCBjYWxsYWJsZXMuCiAgICAgICAgICIiIgotICAgICAgICBydiA9IDEKKyAgICAgICAgcnYgPSBUcnVlCiAgICAgICAgIGZvciBmIGluIHNlbGYuZmlsdGVyczoKICAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgJ2ZpbHRlcicpOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYuZmlsdGVyKHJlY29yZCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZihyZWNvcmQpICMgYXNzdW1lIGNhbGxhYmxlIC0gd2lsbCByYWlzZSBpZiBub3QKICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgcnYgPSAwCisgICAgICAgICAgICAgICAgcnYgPSBGYWxzZQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIHJldHVybiBydgogCkBAIC03NzEsOSArNzY4LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIEFjcXVpcmUgYSB0aHJlYWQgbG9jayBmb3Igc2VyaWFsaXppbmcgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIEkvTy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIHRocmVhZDoKKyAgICAgICAgaWYgdGhyZWFkaW5nOgogICAgICAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHNlbGYubG9jayA9IE5vbmUKIAogICAgIGRlZiBhY3F1aXJlKHNlbGYpOgpAQCAtNzkyLDcgKzc4OSw3IEBACiAKICAgICBkZWYgc2V0TGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICAiIiIKLSAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgaGFuZGxlci4KKyAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgaGFuZGxlci4gIGxldmVsIG11c3QgYmUgYW4gaW50IG9yIGEgc3RyLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogCkBAIC04ODgsNyArODg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHN5cy5zdGRlcnIpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnTG9nZ2VkIGZyb20gZmlsZSAlcywgbGluZSAlc1xuJyAlICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5maWxlbmFtZSwgcmVjb3JkLmxpbmVubykpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgIHBhc3MgICAgIyBzZWUgaXNzdWUgNTk3MQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBkZWwgZWkKQEAgLTk0MSw3ICs5MzgsNyBAQAogICAgICAgICAgICAgc3RyZWFtLndyaXRlKG1zZykKICAgICAgICAgICAgIHN0cmVhbS53cml0ZShzZWxmLnRlcm1pbmF0b3IpCiAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC05NTAsMTQgKzk0NywxMiBAQAogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGxvZ2dpbmcgcmVjb3JkcyB0byBkaXNrIGZpbGVzLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIE9wZW4gdGhlIHNwZWNpZmllZCBmaWxlIGFuZCB1c2UgaXQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4KICAgICAgICAgIiIiCiAgICAgICAgICNrZWVwIHRoZSBhYnNvbHV0ZSBwYXRoLCBvdGhlcndpc2UgZGVyaXZlZCBjbGFzc2VzIHdoaWNoIHVzZSB0aGlzCiAgICAgICAgICNtYXkgY29tZSBhIGNyb3BwZXIgd2hlbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgY2hhbmdlcwotICAgICAgICBpZiBjb2RlY3MgaXMgTm9uZToKLSAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZQogICAgICAgICBzZWxmLmJhc2VGaWxlbmFtZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKICAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKQEAgLTk4OSwxMSArOTg0LDcgQEAKICAgICAgICAgT3BlbiB0aGUgY3VycmVudCBiYXNlIGZpbGUgd2l0aCB0aGUgKG9yaWdpbmFsKSBtb2RlIGFuZCBlbmNvZGluZy4KICAgICAgICAgUmV0dXJuIHRoZSByZXN1bHRpbmcgc3RyZWFtLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5lbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgc3RyZWFtID0gb3BlbihzZWxmLmJhc2VGaWxlbmFtZSwgc2VsZi5tb2RlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3RyZWFtID0gY29kZWNzLm9wZW4oc2VsZi5iYXNlRmlsZW5hbWUsIHNlbGYubW9kZSwgc2VsZi5lbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHN0cmVhbQorICAgICAgICByZXR1cm4gb3BlbihzZWxmLmJhc2VGaWxlbmFtZSwgc2VsZi5tb2RlLCBlbmNvZGluZz1zZWxmLmVuY29kaW5nKQogCiAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC0xMjA1LDEzICsxMTk2LDEzIEBACiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogICAgICAgICBzZWxmLnBhcmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5wcm9wYWdhdGUgPSAxCisgICAgICAgIHNlbGYucHJvcGFnYXRlID0gVHJ1ZQogICAgICAgICBzZWxmLmhhbmRsZXJzID0gW10KLSAgICAgICAgc2VsZi5kaXNhYmxlZCA9IDAKKyAgICAgICAgc2VsZi5kaXNhYmxlZCA9IEZhbHNlCiAKICAgICBkZWYgc2V0TGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICAiIiIKLSAgICAgICAgU2V0IHRoZSBsb2dnaW5nIGxldmVsIG9mIHRoaXMgbG9nZ2VyLgorICAgICAgICBTZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgb2YgdGhpcyBsb2dnZXIuICBsZXZlbCBtdXN0IGJlIGFuIGludCBvciBhIHN0ci4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYubGV2ZWwgPSBfY2hlY2tMZXZlbChsZXZlbCkKIApAQCAtMTI1MSw3ICsxMjQyLDEwIEBACiAgICAgICAgIGlmIHNlbGYuaXNFbmFibGVkRm9yKFdBUk5JTkcpOgogICAgICAgICAgICAgc2VsZi5fbG9nKFdBUk5JTkcsIG1zZywgYXJncywgKiprd2FyZ3MpCiAKLSAgICB3YXJuID0gd2FybmluZworICAgIGRlZiB3YXJuKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgIgorICAgICAgICAgICAgInVzZSAnd2FybmluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgc2VsZi53YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xMzYwLDkgKzEzNTQsOSBAQAogICAgICAgICAgICAgI0lyb25QeXRob24gY2FuIHVzZSBsb2dnaW5nLgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZuLCBsbm8sIGZ1bmMsIHNpbmZvID0gc2VsZi5maW5kQ2FsbGVyKHN0YWNrX2luZm8pCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKICAgICAgICAgaWYgZXhjX2luZm86CiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgpAQCAtMTQ3NCw3ICsxNDY4LDcgQEAKICAgICAgICAgSXMgdGhpcyBsb2dnZXIgZW5hYmxlZCBmb3IgbGV2ZWwgJ2xldmVsJz8KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYubWFuYWdlci5kaXNhYmxlID49IGxldmVsOgotICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gbGV2ZWwgPj0gc2VsZi5nZXRFZmZlY3RpdmVMZXZlbCgpCiAKICAgICBkZWYgZ2V0Q2hpbGQoc2VsZiwgc3VmZml4KToKQEAgLTE1NjQsNyArMTU1OCwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sb2coV0FSTklORywgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgICB3YXJuID0gd2FybmluZworICAgIGRlZiB3YXJuKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgIgorICAgICAgICAgICAgInVzZSAnd2FybmluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgc2VsZi53YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xNTc2LDcgKzE1NzMsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgRGVsZWdhdGUgYW4gZXhjZXB0aW9uIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyLgogICAgICAgICAiIiIKLSAgICAgICAga3dhcmdzWyJleGNfaW5mbyJdID0gMQorICAgICAgICBrd2FyZ3NbImV4Y19pbmZvIl0gPSBUcnVlCiAgICAgICAgIHNlbGYubG9nKEVSUk9SLCBtc2csICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBjcml0aWNhbChzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CkBAIC0xNjU5LDYgKzE2NTYsMTAgQEAKICAgICBzdHJlYW0gICAgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlIFN0cmVhbUhhbmRsZXIuIE5vdGUKICAgICAgICAgICAgICAgdGhhdCB0aGlzIGFyZ3VtZW50IGlzIGluY29tcGF0aWJsZSB3aXRoICdmaWxlbmFtZScgLSBpZiBib3RoCiAgICAgICAgICAgICAgIGFyZSBwcmVzZW50LCAnc3RyZWFtJyBpcyBpZ25vcmVkLgorICAgIGhhbmRsZXJzICBJZiBzcGVjaWZpZWQsIHRoaXMgc2hvdWxkIGJlIGFuIGl0ZXJhYmxlIG9mIGFscmVhZHkgY3JlYXRlZAorICAgICAgICAgICAgICBoYW5kbGVycywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgcm9vdCBoYW5kbGVyLiBBbnkgaGFuZGxlcgorICAgICAgICAgICAgICBpbiB0aGUgbGlzdCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgZm9ybWF0dGVyIGFzc2lnbmVkIHdpbGwgYmUKKyAgICAgICAgICAgICAgYXNzaWduZWQgdGhlIGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uCiAKICAgICBOb3RlIHRoYXQgeW91IGNvdWxkIHNwZWNpZnkgYSBzdHJlYW0gY3JlYXRlZCB1c2luZyBvcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlIGZpbGVuYW1lIGFuZCBtb2RlIGluLiBIb3dldmVyLCBpdCBzaG91bGQgYmUKQEAgLTE2NjYsMjcgKzE2NjcsNDcgQEAKICAgICB1c2luZyBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIpLCB3aGVyZWFzIEZpbGVIYW5kbGVyIGNsb3NlcyBpdHMgc3RyZWFtCiAgICAgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQuCiAKLSAgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy4yCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICBBZGRlZCB0aGUgYGBzdHlsZWBgIHBhcmFtZXRlci4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgQWRkZWQgdGhlIGBgaGFuZGxlcnNgYCBwYXJhbWV0ZXIuIEEgYGBWYWx1ZUVycm9yYGAgaXMgbm93IHRocm93biBmb3IKKyAgICAgICBpbmNvbXBhdGlibGUgYXJndW1lbnRzIChlLmcuIGBgaGFuZGxlcnNgYCBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aAorICAgICAgIGBgZmlsZW5hbWVgYC9gYGZpbGVtb2RlYGAsIG9yIGBgZmlsZW5hbWVgYC9gYGZpbGVtb2RlYGAgc3BlY2lmaWVkCisgICAgICAgdG9nZXRoZXIgd2l0aCBgYHN0cmVhbWBgLCBvciBgYGhhbmRsZXJzYGAgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGgKKyAgICAgICBgYHN0cmVhbWBgLgogICAgICIiIgogICAgICMgQWRkIHRocmVhZCBzYWZldHkgaW4gY2FzZSBzb21lb25lIG1pc3Rha2VubHkgY2FsbHMKICAgICAjIGJhc2ljQ29uZmlnKCkgZnJvbSBtdWx0aXBsZSB0aHJlYWRzCiAgICAgX2FjcXVpcmVMb2NrKCkKICAgICB0cnk6CiAgICAgICAgIGlmIGxlbihyb290LmhhbmRsZXJzKSA9PSAwOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBrd2FyZ3MuZ2V0KCJmaWxlbmFtZSIpCi0gICAgICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgICAgICBtb2RlID0ga3dhcmdzLmdldCgiZmlsZW1vZGUiLCAnYScpCi0gICAgICAgICAgICAgICAgaGRsciA9IEZpbGVIYW5kbGVyKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgaGFuZGxlcnMgPSBrd2FyZ3MuZ2V0KCJoYW5kbGVycyIpCisgICAgICAgICAgICBpZiBoYW5kbGVycyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmICJzdHJlYW0iIGluIGt3YXJncyBhbmQgImZpbGVuYW1lIiBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIGFuZCAnZmlsZW5hbWUnIHNob3VsZCBub3QgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZWQgdG9nZXRoZXIiKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBrd2FyZ3MuZ2V0KCJzdHJlYW0iKQotICAgICAgICAgICAgICAgIGhkbHIgPSBTdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgICAgICBpZiAic3RyZWFtIiBpbiBrd2FyZ3Mgb3IgImZpbGVuYW1lIiBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIidzdHJlYW0nIG9yICdmaWxlbmFtZScgc2hvdWxkIG5vdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCB0b2dldGhlciB3aXRoICdoYW5kbGVycyciKQorICAgICAgICAgICAgaWYgaGFuZGxlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGt3YXJncy5nZXQoImZpbGVuYW1lIikKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IGt3YXJncy5nZXQoImZpbGVtb2RlIiwgJ2EnKQorICAgICAgICAgICAgICAgICAgICBoID0gRmlsZUhhbmRsZXIoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0ga3dhcmdzLmdldCgic3RyZWFtIikKKyAgICAgICAgICAgICAgICAgICAgaCA9IFN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gW2hdCiAgICAgICAgICAgICBmcyA9IGt3YXJncy5nZXQoImZvcm1hdCIsIEJBU0lDX0ZPUk1BVCkKICAgICAgICAgICAgIGRmcyA9IGt3YXJncy5nZXQoImRhdGVmbXQiLCBOb25lKQogICAgICAgICAgICAgc3R5bGUgPSBrd2FyZ3MuZ2V0KCJzdHlsZSIsICclJykKICAgICAgICAgICAgIGZtdCA9IEZvcm1hdHRlcihmcywgZGZzLCBzdHlsZSkKLSAgICAgICAgICAgIGhkbHIuc2V0Rm9ybWF0dGVyKGZtdCkKLSAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoZGxyKQorICAgICAgICAgICAgZm9yIGggaW4gaGFuZGxlcnM6CisgICAgICAgICAgICAgICAgaWYgaC5mb3JtYXR0ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaC5zZXRGb3JtYXR0ZXIoZm10KQorICAgICAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihoKQogICAgICAgICAgICAgbGV2ZWwgPSBrd2FyZ3MuZ2V0KCJsZXZlbCIpCiAgICAgICAgICAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByb290LnNldExldmVsKGxldmVsKQpAQCAtMTc1MCw3ICsxNzcxLDEwIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290Lndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLXdhcm4gPSB3YXJuaW5nCitkZWYgd2Fybihtc2csICphcmdzLCAqKmt3YXJncyk6CisgICAgd2FybmluZ3Mud2FybigiVGhlICd3YXJuJyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICJ1c2UgJ3dhcm5pbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAogZGVmIGluZm8obXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpAQCAtMTgzNSwxMCArMTg1OSwxMCBAQAogICAgIHBhY2thZ2UuCiAgICAgIiIiCiAgICAgZGVmIGhhbmRsZShzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAgICBwYXNzCisgICAgICAgICIiIlN0dWIuIiIiCiAKICAgICBkZWYgY3JlYXRlTG9jayhzZWxmKToKICAgICAgICAgc2VsZi5sb2NrID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDM3M2RhMmIuLjVlZjVjOTEgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTI0LDEzICsyNCwxMyBAQAogVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nJyBhbmQgbG9nIGF3YXkhCiAiIiIKIAotaW1wb3J0IHN5cywgbG9nZ2luZywgbG9nZ2luZy5oYW5kbGVycywgc29ja2V0LCBzdHJ1Y3QsIG9zLCB0cmFjZWJhY2ssIHJlCi1pbXBvcnQgdHlwZXMsIGlvCitpbXBvcnQgc3lzLCBsb2dnaW5nLCBsb2dnaW5nLmhhbmRsZXJzLCBzb2NrZXQsIHN0cnVjdCwgdHJhY2ViYWNrLCByZQoraW1wb3J0IGlvCiAKIHRyeToKICAgICBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkID0gTm9uZQogCiBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcgpAQCAtOTgsOSArOTgsNiBAQAogZGVmIF9zdHJpcF9zcGFjZXMoYWxpc3QpOgogICAgIHJldHVybiBtYXAobGFtYmRhIHg6IHguc3RyaXAoKSwgYWxpc3QpCiAKLWRlZiBfZW5jb2RlZChzKToKLSAgICByZXR1cm4gcyBpZiBpc2luc3RhbmNlKHMsIHN0cikgZWxzZSBzLmVuY29kZSgndXRmLTgnKQotCiBkZWYgX2NyZWF0ZV9mb3JtYXR0ZXJzKGNwKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBmb3JtYXR0ZXJzIiIiCiAgICAgZmxpc3QgPSBjcFsiZm9ybWF0dGVycyJdWyJrZXlzIl0KQEAgLTIxNSw3ICsyMTIsNyBAQAogICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICBleGlzdGluZy5zb3J0KCkKICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTU4OCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgICAgICNhdm9pZCBkaXNhYmxpbmcgY2hpbGQgbG9nZ2VycyBvZiBleHBsaWNpdGx5CiAgICAgICAgICAgICAgICAgI25hbWVkIGxvZ2dlcnMuIFdpdGggYSBzb3J0ZWQgbGlzdCBpdCBpcyBlYXNpZXIKICAgICAgICAgICAgICAgICAjdG8gZmluZCB0aGUgY2hpbGQgbG9nZ2Vycy4KLSAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KGtleT1fZW5jb2RlZCkKKyAgICAgICAgICAgICAgICBleGlzdGluZy5zb3J0KCkKICAgICAgICAgICAgICAgICAjV2UnbGwga2VlcCB0aGUgbGlzdCBvZiBleGlzdGluZyBsb2dnZXJzCiAgICAgICAgICAgICAgICAgI3doaWNoIGFyZSBjaGlsZHJlbiBvZiBuYW1lZCBsb2dnZXJzIGhlcmUuLi4KICAgICAgICAgICAgICAgICBjaGlsZF9sb2dnZXJzID0gW10KQEAgLTc4Niw3ICs3ODMsNyBAQAogICAgIGFuZCB3aGljaCB5b3UgY2FuIGpvaW4oKSB3aGVuIGFwcHJvcHJpYXRlLiBUbyBzdG9wIHRoZSBzZXJ2ZXIsIGNhbGwKICAgICBzdG9wTGlzdGVuaW5nKCkuCiAgICAgIiIiCi0gICAgaWYgbm90IHRocmVhZDoKKyAgICBpZiBub3QgdGhyZWFkOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJsaXN0ZW4oKSBuZWVkcyB0aHJlYWRpbmcgdG8gd29yayIpCiAKICAgICBjbGFzcyBDb25maWdTdHJlYW1IYW5kbGVyKFN0cmVhbVJlcXVlc3RIYW5kbGVyKToKQEAgLTgwNCw3ICs4MDEsNiBAQAogICAgICAgICAgICAgc3RydWN0LnBhY2soIj5MIiwgbiksIGZvbGxvd2VkIGJ5IHRoZSBjb25maWcgZmlsZS4KICAgICAgICAgICAgIFVzZXMgZmlsZUNvbmZpZygpIHRvIGRvIHRoZSBncnVudCB3b3JrLgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjb25uID0gc2VsZi5jb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3YoNCkKQEAgLTgyNSw3ICs4MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVDb25maWcoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggZDRkZjVjNi4uMWJhZDg1NiAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0LDE4ICsyNCwxNCBAQAogIiIiCiAKIGltcG9ydCBlcnJubywgbG9nZ2luZywgc29ja2V0LCBvcywgcGlja2xlLCBzdHJ1Y3QsIHRpbWUsIHJlCitmcm9tIGNvZGVjcyBpbXBvcnQgQk9NX1VURjgKIGZyb20gc3RhdCBpbXBvcnQgU1RfREVWLCBTVF9JTk8sIFNUX01USU1FCiBpbXBvcnQgcXVldWUKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgSW1wb3J0RXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi10cnk6Ci0gICAgaW1wb3J0IGNvZGVjcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNvZGVjcyA9IE5vbmUKLQogIwogIyBTb21lIGNvbnN0YW50cy4uLgogIwpAQCAtNTUsMTUgKzUxLDE1IEBACiAgICAgTm90IG1lYW50IHRvIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gIEluc3RlYWQsIHVzZSBSb3RhdGluZ0ZpbGVIYW5kbGVyCiAgICAgb3IgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBVc2UgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBmb3Igc3RyZWFtZWQgbG9nZ2luZwogICAgICAgICAiIiIKLSAgICAgICAgaWYgY29kZWNzIGlzIE5vbmU6Ci0gICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLm5hbWVyID0gTm9uZQorICAgICAgICBzZWxmLnJvdGF0b3IgPSBOb25lCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTc2LDE3ICs3Miw1NSBAQAogICAgICAgICAgICAgaWYgc2VsZi5zaG91bGRSb2xsb3ZlcihyZWNvcmQpOgogICAgICAgICAgICAgICAgIHNlbGYuZG9Sb2xsb3ZlcigpCiAgICAgICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKIAorICAgIGRlZiByb3RhdGlvbl9maWxlbmFtZShzZWxmLCBkZWZhdWx0X25hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgTW9kaWZ5IHRoZSBmaWxlbmFtZSBvZiBhIGxvZyBmaWxlIHdoZW4gcm90YXRpbmcuCisKKyAgICAgICAgVGhpcyBpcyBwcm92aWRlZCBzbyB0aGF0IGEgY3VzdG9tIGZpbGVuYW1lIGNhbiBiZSBwcm92aWRlZC4KKworICAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICAgIGhhbmRsZXIsIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIGRlZmF1bHQgbmFtZSB0bworICAgICAgICBpdC4gSWYgdGhlIGF0dHJpYnV0ZSBpc24ndCBjYWxsYWJsZSAodGhlIGRlZmF1bHQgaXMgTm9uZSksIHRoZSBuYW1lCisgICAgICAgIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgICA6cGFyYW0gZGVmYXVsdF9uYW1lOiBUaGUgZGVmYXVsdCBuYW1lIGZvciB0aGUgbG9nIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5uYW1lcik6CisgICAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0X25hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYubmFtZXIoZGVmYXVsdF9uYW1lKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcm90YXRlKHNlbGYsIHNvdXJjZSwgZGVzdCk6CisgICAgICAgICIiIgorICAgICAgICBXaGVuIHJvdGF0aW5nLCByb3RhdGUgdGhlIGN1cnJlbnQgbG9nLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZQorICAgICAgICBoYW5kbGVyLCBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBzb3VyY2UgYW5kIGRlc3QgYXJndW1lbnRzIHRvCisgICAgICAgIGl0LiBJZiB0aGUgYXR0cmlidXRlIGlzbid0IGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBOb25lKSwgdGhlIHNvdXJjZQorICAgICAgICBpcyBzaW1wbHkgcmVuYW1lZCB0byB0aGUgZGVzdGluYXRpb24uCisKKyAgICAgICAgOnBhcmFtIHNvdXJjZTogVGhlIHNvdXJjZSBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseSB0aGUgYmFzZQorICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICAgIDpwYXJhbSBkZXN0OiAgIFRoZSBkZXN0aW5hdGlvbiBmaWxlbmFtZS4gVGhpcyBpcyBub3JtYWxseQorICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHRoZSBzb3VyY2UgaXMgcm90YXRlZCB0bywgZS5nLiAndGVzdC5sb2cuMScuCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2VsZi5yb3RhdG9yKToKKyAgICAgICAgICAgIG9zLnJlbmFtZShzb3VyY2UsIGRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJvdGF0b3Ioc291cmNlLCBkZXN0KQorCiBjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyKEJhc2VSb3RhdGluZ0hhbmRsZXIpOgogICAgICIiIgogICAgIEhhbmRsZXIgZm9yIGxvZ2dpbmcgdG8gYSBzZXQgb2YgZmlsZXMsIHdoaWNoIHN3aXRjaGVzIGZyb20gb25lIGZpbGUKICAgICB0byB0aGUgbmV4dCB3aGVuIHRoZSBjdXJyZW50IGZpbGUgcmVhY2hlcyBhIGNlcnRhaW4gc2l6ZS4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBtYXhCeXRlcz0wLCBiYWNrdXBDb3VudD0wLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAKQEAgLTEyNywxNiArMTYxLDE3IEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5iYWNrdXBDb3VudCA+IDA6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShzZWxmLmJhY2t1cENvdW50IC0gMSwgMCwgLTEpOgotICAgICAgICAgICAgICAgIHNmbiA9ICIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsIGkpCi0gICAgICAgICAgICAgICAgZGZuID0gIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSArIDEpCisgICAgICAgICAgICAgICAgc2ZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZSgiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLCBpKSkKKyAgICAgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKCIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZm4pOgogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKICAgICAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHNmbiwgZGZuKQotICAgICAgICAgICAgZGZuID0gc2VsZi5iYXNlRmlsZW5hbWUgKyAiLjEiCisgICAgICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4xIikKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQorICAgICAgICAgICAgc2VsZi5yb3RhdGUoc2VsZi5iYXNlRmlsZW5hbWUsIGRmbikKICAgICAgICAgc2VsZi5tb2RlID0gJ3cnCiAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAKQEAgLTE4NCwxOSArMjE5LDE5IEBACiAgICAgICAgIGlmIHNlbGYud2hlbiA9PSAnUyc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gMSAjIG9uZSBzZWNvbmQKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkXyVILSVNLSVTIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4gPT0gJ00nOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICMgb25lIG1pbnV0ZQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgtJU0iCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnSCc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgKiA2MCAjIG9uZSBob3VyCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZF8lSCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuID09ICdEJyBvciBzZWxmLndoZW4gPT0gJ01JRE5JR0hUJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgIyBvbmUgZGF5CiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZCIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuLnN0YXJ0c3dpdGgoJ1cnKToKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAqIDYwICogMjQgKiA3ICMgb25lIHdlZWsKICAgICAgICAgICAgIGlmIGxlbihzZWxmLndoZW4pICE9IDI6CkBAIC0yMDUsNyArMjQwLDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGRheSBzcGVjaWZpZWQgZm9yIHdlZWtseSByb2xsb3ZlcjogJXMiICUgc2VsZi53aGVuKQogICAgICAgICAgICAgc2VsZi5kYXlPZldlZWsgPSBpbnQoc2VsZi53aGVuWzFdKQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWQiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCByb2xsb3ZlciBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVzIiAlIHNlbGYud2hlbikKIApAQCAtMzM4LDEwICszNzMsMTEgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBhZGRlbmQgPSAtMzYwMAogICAgICAgICAgICAgICAgIHRpbWVUdXBsZSA9IHRpbWUubG9jYWx0aW1lKHQgKyBhZGRlbmQpCi0gICAgICAgIGRmbiA9IHNlbGYuYmFzZUZpbGVuYW1lICsgIi4iICsgdGltZS5zdHJmdGltZShzZWxmLnN1ZmZpeCwgdGltZVR1cGxlKQorICAgICAgICBkZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lICsgIi4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKHNlbGYuc3VmZml4LCB0aW1lVHVwbGUpKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZm4pOgogICAgICAgICAgICAgb3MucmVtb3ZlKGRmbikKLSAgICAgICAgb3MucmVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCisgICAgICAgIHNlbGYucm90YXRlKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCiAgICAgICAgIGlmIHNlbGYuYmFja3VwQ291bnQgPiAwOgogICAgICAgICAgICAgZm9yIHMgaW4gc2VsZi5nZXRGaWxlc1RvRGVsZXRlKCk6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHMpCkBAIC0zODEsNyArNDE3LDcgQEAKICAgICBUaGlzIGhhbmRsZXIgaXMgYmFzZWQgb24gYSBzdWdnZXN0aW9uIGFuZCBwYXRjaCBieSBDaGFkIEouCiAgICAgU2Nocm9lZGVyLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5fX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZSwgZW5jb2RpbmcsIGRlbGF5KQogICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSAtMSwgLTEKICAgICAgICAgc2VsZi5fc3RhdHN0cmVhbSgpCkBAIC00NDAsMTUgKzQ3NiwxNSBAQAogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KIAotICAgICAgICBUaGUgYXR0cmlidXRlICdjbG9zZU9uRXJyb3InIGlzIHNldCB0byAxIC0gd2hpY2ggbWVhbnMgdGhhdCBpZgotICAgICAgICBhIHNvY2tldCBlcnJvciBvY2N1cnMsIHRoZSBzb2NrZXQgaXMgc2lsZW50bHkgY2xvc2VkIGFuZCB0aGVuCi0gICAgICAgIHJlb3BlbmVkIG9uIHRoZSBuZXh0IGxvZ2dpbmcgY2FsbC4KKyAgICAgICAgV2hlbiB0aGUgYXR0cmlidXRlICpjbG9zZU9uRXJyb3IqIGlzIHNldCB0byBUcnVlIC0gaWYgYSBzb2NrZXQgZXJyb3IKKyAgICAgICAgb2NjdXJzLCB0aGUgc29ja2V0IGlzIHNpbGVudGx5IGNsb3NlZCBhbmQgdGhlbiByZW9wZW5lZCBvbiB0aGUgbmV4dAorICAgICAgICBsb2dnaW5nIGNhbGwuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAogICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuc29jayA9IE5vbmUKLSAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSAwCisgICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKICAgICAgICAgc2VsZi5yZXRyeVRpbWUgPSBOb25lCiAgICAgICAgICMKICAgICAgICAgIyBFeHBvbmVudGlhbCBiYWNrb2ZmIHBhcmFtZXRlcnMuCkBAIC00NjUsOCArNTAxLDEyIEBACiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIGlmIGhhc2F0dHIocywgJ3NldHRpbWVvdXQnKToKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICBzLmNvbm5lY3QoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKLSAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5jb25uZWN0KChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCisgICAgICAgICAgICByZXR1cm4gcworICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIGNyZWF0ZVNvY2tldChzZWxmKToKICAgICAgICAgIiIiCkBAIC00NzksNyArNTE5LDcgQEAKICAgICAgICAgIyBpcyB0aGUgZmlyc3QgdGltZSBiYWNrIGFmdGVyIGEgZGlzY29ubmVjdCwgb3IKICAgICAgICAgIyB3ZSd2ZSB3YWl0ZWQgbG9uZyBlbm91Z2guCiAgICAgICAgIGlmIHNlbGYucmV0cnlUaW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBhdHRlbXB0ID0gMQorICAgICAgICAgICAgYXR0ZW1wdCA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGF0dGVtcHQgPSAobm93ID49IHNlbGYucmV0cnlUaW1lKQogICAgICAgICBpZiBhdHRlbXB0OgpAQCAtNTEyLDE0ICs1NTIsMTQgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYuc29jaywgInNlbmRhbGwiKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwocykKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVsc2U6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgICAgIHNlbnRzb2ZhciA9IDAKICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxlbihzKQogICAgICAgICAgICAgICAgICAgICB3aGlsZSBsZWZ0ID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNvY2suc2VuZChzW3NlbnRzb2ZhcjpdKQogICAgICAgICAgICAgICAgICAgICAgICAgc2VudHNvZmFyID0gc2VudHNvZmFyICsgc2VudAogICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGxlZnQgLSBzZW50Ci0gICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IE5vbmUgICMgc28gd2UgY2FuIGNhbGwgY3JlYXRlU29ja2V0IG5leHQgdGltZQogCkBAIC01NjksNyArNjA5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IHNlbGYubWFrZVBpY2tsZShyZWNvcmQpCiAgICAgICAgICAgICBzZWxmLnNlbmQocykKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC02MDMsNyArNjQzLDcgQEAKICAgICAgICAgSW5pdGlhbGl6ZXMgdGhlIGhhbmRsZXIgd2l0aCBhIHNwZWNpZmljIGhvc3QgYWRkcmVzcyBhbmQgcG9ydC4KICAgICAgICAgIiIiCiAgICAgICAgIFNvY2tldEhhbmRsZXIuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCkKLSAgICAgICAgc2VsZi5jbG9zZU9uRXJyb3IgPSAwCisgICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gRmFsc2UKIAogICAgIGRlZiBtYWtlU29ja2V0KHNlbGYpOgogICAgICAgICAiIiIKQEAgLTc0NCwxMCArNzg0LDEwIEBACiAgICAgICAgIHNlbGYuc29ja3R5cGUgPSBzb2NrdHlwZQogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgc3RyKToKLSAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IDEKKyAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3RfdW5peHNvY2tldChhZGRyZXNzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gMAorICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja3R5cGUpCiAgICAgICAgICAgICBpZiBzb2NrdHlwZSA9PSBzb2NrZXQuU09DS19TVFJFQU06CiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY29ubmVjdChhZGRyZXNzKQpAQCAtNzg2LDggKzgyNiw3IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLnVuaXhzb2NrZXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5zb2NrZXQuY2xvc2UoKQogICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLmNsb3NlKHNlbGYpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtODAyLDYgKzg0MSw3IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5wcmlvcml0eV9tYXAuZ2V0KGxldmVsTmFtZSwgIndhcm5pbmciKQogCisgICAgaWRlbnQgPSAnJyAgICAgICAgICAjIHByZXBlbmRlZCB0byBhbGwgbWVzc2FnZXMKICAgICBhcHBlbmRfbnVsID0gVHJ1ZSAgICMgc29tZSBvbGQgc3lzbG9nIGRhZW1vbnMgZXhwZWN0IGEgTlVMIHRlcm1pbmF0b3IKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CkBAIC04MTIsNiArODUyLDggQEAKICAgICAgICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIHByZXNlbnQsIGl0IGlzIE5PVCBzZW50IHRvIHRoZSBzZXJ2ZXIuCiAgICAgICAgICIiIgogICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCisgICAgICAgIGlmIHNlbGYuaWRlbnQ6CisgICAgICAgICAgICBtc2cgPSBzZWxmLmlkZW50ICsgbXNnCiAgICAgICAgIGlmIHNlbGYuYXBwZW5kX251bDoKICAgICAgICAgICAgIG1zZyArPSAnXDAwMCcKICAgICAgICAgIiIiCkBAIC04MzUsNyArODc3LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kdG8obXNnLCBzZWxmLmFkZHJlc3MpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmRhbGwobXNnKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTg0NSw3ICs4ODcsNyBAQAogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCBzZW5kcyBhbiBTTVRQIGVtYWlsIGZvciBlYWNoIGxvZ2dpbmcgZXZlbnQuCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1haWxob3N0LCBmcm9tYWRkciwgdG9hZGRycywgc3ViamVjdCwKLSAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHM9Tm9uZSwgc2VjdXJlPU5vbmUpOgorICAgICAgICAgICAgICAgICBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD01LjApOgogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlci4KIApAQCAtODU5LDYgKzkwMSw4IEBACiAgICAgICAgIHdpbGwgYmUgZWl0aGVyIGFuIGVtcHR5IHR1cGxlLCBvciBhIHNpbmdsZS12YWx1ZSB0dXBsZSB3aXRoIHRoZSBuYW1lCiAgICAgICAgIG9mIGEga2V5ZmlsZSwgb3IgYSAyLXZhbHVlIHR1cGxlIHdpdGggdGhlIG5hbWVzIG9mIHRoZSBrZXlmaWxlIGFuZAogICAgICAgICBjZXJ0aWZpY2F0ZSBmaWxlLiAoVGhpcyB0dXBsZSBpcyBwYXNzZWQgdG8gdGhlIGBzdGFydHRsc2AgbWV0aG9kKS4KKyAgICAgICAgQSB0aW1lb3V0IGluIHNlY29uZHMgY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhlIFNNVFAgY29ubmVjdGlvbiAodGhlCisgICAgICAgIGRlZmF1bHQgaXMgb25lIHNlY29uZCkuCiAgICAgICAgICIiIgogICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKICAgICAgICAgaWYgaXNpbnN0YW5jZShtYWlsaG9zdCwgdHVwbGUpOgpAQCAtODc1LDcgKzkxOSw3IEBACiAgICAgICAgIHNlbGYudG9hZGRycyA9IHRvYWRkcnMKICAgICAgICAgc2VsZi5zdWJqZWN0ID0gc3ViamVjdAogICAgICAgICBzZWxmLnNlY3VyZSA9IHNlY3VyZQotICAgICAgICBzZWxmLl90aW1lb3V0ID0gNS4wCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKIAogICAgIGRlZiBnZXRTdWJqZWN0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtODk4LDcgKzk0Miw3IEBACiAgICAgICAgICAgICBwb3J0ID0gc2VsZi5tYWlscG9ydAogICAgICAgICAgICAgaWYgbm90IHBvcnQ6CiAgICAgICAgICAgICAgICAgcG9ydCA9IHNtdHBsaWIuU01UUF9QT1JUCi0gICAgICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKHNlbGYubWFpbGhvc3QsIHBvcnQsIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKKyAgICAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoc2VsZi5tYWlsaG9zdCwgcG9ydCwgdGltZW91dD1zZWxmLnRpbWVvdXQpCiAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICBtc2cgPSAiRnJvbTogJXNcclxuVG86ICVzXHJcblN1YmplY3Q6ICVzXHJcbkRhdGU6ICVzXHJcblxyXG4lcyIgJSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcm9tYWRkciwKQEAgLTkxMyw3ICs5NTcsNyBAQAogICAgICAgICAgICAgICAgIHNtdHAubG9naW4oc2VsZi51c2VybmFtZSwgc2VsZi5wYXNzd29yZCkKICAgICAgICAgICAgIHNtdHAuc2VuZG1haWwoc2VsZi5mcm9tYWRkciwgc2VsZi50b2FkZHJzLCBtc2cpCiAgICAgICAgICAgICBzbXRwLnF1aXQoKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTEwMDAsNyArMTA0NCw3IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuZ2V0RXZlbnRUeXBlKHJlY29yZCkKICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICAgICAgc2VsZi5fd2VsdS5SZXBvcnRFdmVudChzZWxmLmFwcG5hbWUsIGlkLCBjYXQsIHR5cGUsIFttc2ddKQotICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTA4Myw5ICsxMTI3LDExIEBACiAgICAgICAgICAgICAgICAgcyA9ICgndSVzOiVzJyAlIHNlbGYuY3JlZGVudGlhbHMpLmVuY29kZSgndXRmLTgnKQogICAgICAgICAgICAgICAgIHMgPSAnQmFzaWMgJyArIGJhc2U2NC5iNjRlbmNvZGUocykuc3RyaXAoKQogICAgICAgICAgICAgICAgIGgucHV0aGVhZGVyKCdBdXRob3JpemF0aW9uJywgcykKLSAgICAgICAgICAgIGguZW5kaGVhZGVycyhkYXRhIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIiBlbHNlIE5vbmUpCisgICAgICAgICAgICBoLmVuZGhlYWRlcnMoKQorICAgICAgICAgICAgaWYgc2VsZi5tZXRob2QgPT0gIlBPU1QiOgorICAgICAgICAgICAgICAgIGguc2VuZChkYXRhLmVuY29kZSgndXRmLTgnKSkKICAgICAgICAgICAgIGguZ2V0cmVzcG9uc2UoKSAgICAjY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgcmVzdWx0Ci0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTI2Nyw3ICsxMzEzLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZW5xdWV1ZShzZWxmLnByZXBhcmUocmVjb3JkKSkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC0xMzY0LDYgKzE0MTAsMTYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgZGVmIGVucXVldWVfc2VudGluZWwoc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRoaXMgaXMgdXNlZCB0byBlbnF1ZXVlIHRoZSBzZW50aW5lbCByZWNvcmQuCisKKyAgICAgICAgICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHVzZXMgcHV0X25vd2FpdC4gWW91IG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgICAgIG1ldGhvZCBpZiB5b3Ugd2FudCB0byB1c2UgdGltZW91dHMgb3Igd29yayB3aXRoIGN1c3RvbSBxdWV1ZQorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoc2VsZi5fc2VudGluZWwpCisKICAgICAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFN0b3AgdGhlIGxpc3RlbmVyLgpAQCAtMTM3Myw2ICsxNDI5LDYgQEAKICAgICAgICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5fc3RvcC5zZXQoKQotICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHNlbGYuX3NlbnRpbmVsKQorICAgICAgICAgICAgc2VsZi5lbnF1ZXVlX3NlbnRpbmVsKCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExYjA2NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9sem1hLnB5CkBAIC0wLDAgKzEsNDU0IEBACisiIiJJbnRlcmZhY2UgdG8gdGhlIGxpYmx6bWEgY29tcHJlc3Npb24gbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLAorY2xhc3NlcyBmb3IgaW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uLCBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvcgorb25lLXNob3QgKGRlKWNvbXByZXNzaW9uLgorCitUaGVzZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgc3VwcG9ydCBib3RoIHRoZSBYWiBhbmQgbGVnYWN5IExaTUEKK2NvbnRhaW5lciBmb3JtYXRzLCBhcyB3ZWxsIGFzIHJhdyBjb21wcmVzc2VkIGRhdGEgc3RyZWFtcy4KKyIiIgorCitfX2FsbF9fID0gWworICAgICJDSEVDS19OT05FIiwgIkNIRUNLX0NSQzMyIiwgIkNIRUNLX0NSQzY0IiwgIkNIRUNLX1NIQTI1NiIsCisgICAgIkNIRUNLX0lEX01BWCIsICJDSEVDS19VTktOT1dOIiwKKyAgICAiRklMVEVSX0xaTUExIiwgIkZJTFRFUl9MWk1BMiIsICJGSUxURVJfREVMVEEiLCAiRklMVEVSX1g4NiIsICJGSUxURVJfSUE2NCIsCisgICAgIkZJTFRFUl9BUk0iLCAiRklMVEVSX0FSTVRIVU1CIiwgIkZJTFRFUl9QT1dFUlBDIiwgIkZJTFRFUl9TUEFSQyIsCisgICAgIkZPUk1BVF9BVVRPIiwgIkZPUk1BVF9YWiIsICJGT1JNQVRfQUxPTkUiLCAiRk9STUFUX1JBVyIsCisgICAgIk1GX0hDMyIsICJNRl9IQzQiLCAiTUZfQlQyIiwgIk1GX0JUMyIsICJNRl9CVDQiLAorICAgICJNT0RFX0ZBU1QiLCAiTU9ERV9OT1JNQUwiLCAiUFJFU0VUX0RFRkFVTFQiLCAiUFJFU0VUX0VYVFJFTUUiLAorCisgICAgIkxaTUFDb21wcmVzc29yIiwgIkxaTUFEZWNvbXByZXNzb3IiLCAiTFpNQUZpbGUiLCAiTFpNQUVycm9yIiwKKyAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIiwgImlzX2NoZWNrX3N1cHBvcnRlZCIsCitdCisKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGlvCitmcm9tIF9sem1hIGltcG9ydCAqCitmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCisKKworX01PREVfQ0xPU0VEICAgPSAwCitfTU9ERV9SRUFEICAgICA9IDEKK19NT0RFX1JFQURfRU9GID0gMgorX01PREVfV1JJVEUgICAgPSAzCisKK19CVUZGRVJfU0laRSA9IDgxOTIKKworCitjbGFzcyBMWk1BRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CisKKyAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBMWk1BIChkZSljb21wcmVzc2lvbi4KKworICAgIEFuIExaTUFGaWxlIGNhbiBhY3QgYXMgYSB3cmFwcGVyIGZvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgb3IKKyAgICByZWZlciBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KKworICAgIE5vdGUgdGhhdCBMWk1BRmlsZSBwcm92aWRlcyBhICpiaW5hcnkqIGZpbGUgaW50ZXJmYWNlIC0gZGF0YSByZWFkCisgICAgaXMgcmV0dXJuZWQgYXMgYnl0ZXMsIGFuZCBkYXRhIHRvIGJlIHdyaXR0ZW4gbXVzdCBiZSBnaXZlbiBhcyBieXRlcy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgKiwKKyAgICAgICAgICAgICAgICAgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKKyAgICAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KKworICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yCisgICAgICAgIGJ5dGVzIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4KKyAgICAgICAgYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgICAgIG1vZGUgY2FuIGJlICJyIiBmb3IgcmVhZGluZyAoZGVmYXVsdCksICJ3IiBmb3IgKG92ZXIpd3JpdGluZywgb3IKKyAgICAgICAgImEiIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgInJiIiwgIndiIiwKKyAgICAgICAgYW5kICJhYiIgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgZmlsZS4KKyAgICAgICAgSWYgbW9kZSBpcyAiciIsIHRoaXMgZGVmYXVsdHMgdG8gRk9STUFUX0FVVE8uIE90aGVyd2lzZSwgdGhlCisgICAgICAgIGRlZmF1bHQgaXMgRk9STUFUX1haLgorCisgICAgICAgIGNoZWNrIHNwZWNpZmllcyB0aGUgaW50ZWdyaXR5IGNoZWNrIHRvIHVzZS4gVGhpcyBhcmd1bWVudCBjYW4KKyAgICAgICAgb25seSBiZSB1c2VkIHdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcuIEZvciBGT1JNQVRfWFosCisgICAgICAgIHRoZSBkZWZhdWx0IGlzIENIRUNLX0NSQzY0LiBGT1JNQVRfQUxPTkUgYW5kIEZPUk1BVF9SQVcgZG8gbm90CisgICAgICAgIHN1cHBvcnQgaW50ZWdyaXR5IGNoZWNrcyAtIGZvciB0aGVzZSBmb3JtYXRzLCBjaGVjayBtdXN0IGJlCisgICAgICAgIG9taXR0ZWQsIG9yIGJlIENIRUNLX05PTkUuCisKKyAgICAgICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpwcmVzZXQqIGFyZ3VtZW50IGlzIG5vdAorICAgICAgICBtZWFuaW5nZnVsLCBhbmQgc2hvdWxkIGJlIG9taXR0ZWQuIFRoZSAqZmlsdGVycyogYXJndW1lbnQgc2hvdWxkCisgICAgICAgIGFsc28gYmUgb21pdHRlZCwgZXhjZXB0IHdoZW4gZm9ybWF0IGlzIEZPUk1BVF9SQVcgKGluIHdoaWNoIGNhc2UKKyAgICAgICAgaXQgaXMgcmVxdWlyZWQpLgorCisgICAgICAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSBzZXR0aW5ncyB1c2VkIGJ5IHRoZQorICAgICAgICBjb21wcmVzc29yIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICAgICAgIGxldmVsICh3aXRoIHRoZSAqcHJlc2V0KiBhcmd1bWVudCksIG9yIGluIGRldGFpbCBhcyBhIGN1c3RvbQorICAgICAgICBmaWx0ZXIgY2hhaW4gKHdpdGggdGhlICpmaWx0ZXJzKiBhcmd1bWVudCkuIEZvciBGT1JNQVRfWFogYW5kCisgICAgICAgIEZPUk1BVF9BTE9ORSwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBQUkVTRVRfREVGQVVMVCBwcmVzZXQKKyAgICAgICAgbGV2ZWwuIEZvciBGT1JNQVRfUkFXLCB0aGUgY2FsbGVyIG11c3QgYWx3YXlzIHNwZWNpZnkgYSBmaWx0ZXIKKyAgICAgICAgY2hhaW47IHRoZSByYXcgY29tcHJlc3NvciBkb2VzIG5vdCBzdXBwb3J0IHByZXNldCBjb21wcmVzc2lvbgorICAgICAgICBsZXZlbHMuCisKKyAgICAgICAgcHJlc2V0IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOSwKKyAgICAgICAgb3B0aW9uYWxseSBPUi1lZCB3aXRoIHRoZSBjb25zdGFudCBQUkVTRVRfRVhUUkVNRS4KKworICAgICAgICBmaWx0ZXJzIChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgZGljdHMuIEVhY2ggZGljdAorICAgICAgICBzaG91bGQgaGF2ZSBhbiBlbnRyeSBmb3IgImlkIiBpbmRpY2F0aW5nIElEIG9mIHRoZSBmaWx0ZXIsIHBsdXMKKyAgICAgICAgYWRkaXRpb25hbCBlbnRyaWVzIGZvciBvcHRpb25zIHRvIHRoZSBmaWx0ZXIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICBpZiBtb2RlIGluICgiciIsICJyYiIpOgorICAgICAgICAgICAgaWYgY2hlY2sgIT0gLTE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNwZWNpZnkgYW4gaW50ZWdyaXR5IGNoZWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIGlmIHByZXNldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc3BlY2lmeSBhIHByZXNldCBjb21wcmVzc2lvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwgd2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfQVVUTworICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAorICAgICAgICAgICAgIyBTYXZlIHRoZSBhcmdzIHRvIHBhc3MgdG8gdGhlIExaTUFEZWNvbXByZXNzb3IgaW5pdGlhbGl6ZXIuCisgICAgICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAorICAgICAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4KKyAgICAgICAgICAgIHNlbGYuX2luaXRfYXJncyA9IHsiZm9ybWF0Ijpmb3JtYXQsICJmaWx0ZXJzIjpmaWx0ZXJzfQorICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIsICJhIiwgImFiIik6CisgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfWFoKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTFpNQUNvbXByZXNzb3IoZm9ybWF0PWZvcm1hdCwgY2hlY2s9Y2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0PXByZXNldCwgZmlsdGVycz1maWx0ZXJzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKKyAgICAgICAgICAgICAgICBtb2RlICs9ICJiIgorICAgICAgICAgICAgc2VsZi5fZnAgPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIE1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4gT25jZSB0aGUgZmlsZSBpcworICAgICAgICBjbG9zZWQsIGFueSBvdGhlciBvcGVyYXRpb24gb24gaXQgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKKyAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCisgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhpcyBmaWxlIGlzIGNsb3NlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VECisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIHVuZGVybHlpbmcgZmlsZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9mcC5maWxlbm8oKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQorCisgICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQorICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKKworICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCisgICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKQorCisgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKworICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKworICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCisKKyAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbbjpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICBkZWYgcGVlayhzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgQWx3YXlzIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgb2YgZGF0YSwgdW5sZXNzIGF0IEVPRi4KKyAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvciBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcgorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBJZiBzaXplIGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCisgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yIHNpemUgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2FsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9ibG9jayhzaXplKQorCisgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKKyAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorCisgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCisgICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgKHNpemUgPT0gMCBvciBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yCisgICAgICAgICAgICBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSk6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGlmIDAgPCBzaXplIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyWzpzaXplXQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NpemU6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIGEgYnl0ZXMgb2JqZWN0IHRvIHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMKKyAgICAgICAgYWx3YXlzIGxlbihkYXRhKS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsIHRoZSBmaWxlIG9uIGRpc2sKKyAgICAgICAgbWF5IG5vdCByZWZsZWN0IHRoZSBkYXRhIHdyaXR0ZW4gdW50aWwgY2xvc2UoKSBpcyBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fd3JpdGUoKQorICAgICAgICBjb21wcmVzc2VkID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLl9mcC53cml0ZShjb21wcmVzc2VkKQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBsZW4oZGF0YSkKKworICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgorICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlLiBQb3NzaWJsZSB2YWx1ZXMgZm9yIHdoZW5jZSBhcmU6CisKKyAgICAgICAgICAgIDA6IHN0YXJ0IG9mIHN0cmVhbSAoZGVmYXVsdCk6IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorICAgICAgICAgICAgMTogY3VycmVudCBzdHJlYW0gcG9zaXRpb24KKyAgICAgICAgICAgIDI6IGVuZCBvZiBzdHJlYW07IG9mZnNldCBtdXN0IG5vdCBiZSBwb3NpdGl2ZQorCisgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzcCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKKworICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgorICAgICAgICBpZiB3aGVuY2UgPT0gMDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAorICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgorICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCisgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQorCisgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KKyAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgorICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKKworICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9SRUFEX0VPRjoKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKKworICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKworZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgKiwKKyAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSwKKyAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgorICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KKworICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwKKyAgICBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0CisgICAgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiAoZGVmYXVsdCksICJ3IiwgIndiIiwgImEiLCBvciAiYWIiIGZvcgorICAgIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4KKworICAgIFRoZSBmb3JtYXQsIGNoZWNrLCBwcmVzZXQgYW5kIGZpbHRlcnMgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uCisgICAgc2V0dGluZ3MsIGFzIGZvciBMWk1BQ29tcHJlc3NvciwgTFpNQURlY29tcHJlc3NvciBhbmQgTFpNQUZpbGUuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgTFpNQUZpbGUgY29uc3RydWN0b3I6CisgICAgTFpNQUZpbGUoZmlsZW5hbWUsIG1vZGUsIC4uLikuIEluIHRoaXMgY2FzZSwgdGhlIGVuY29kaW5nLCBlcnJvcnMgYW5kCisgICAgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgICBGb3IgdGV4dCBtb2RlLCBhIExaTUFGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZworICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgICAiIiIKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgaWYgImIiIGluIG1vZGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCisgICAgZWxzZToKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKworICAgIGx6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKKyAgICBiaW5hcnlfZmlsZSA9IExaTUFGaWxlKGZpbGVuYW1lLCBsel9tb2RlLCBmb3JtYXQ9Zm9ybWF0LCBjaGVjaz1jaGVjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKKworCitkZWYgY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgorICAgICIiIkNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIFJlZmVyIHRvIExaTUFDb21wcmVzc29yJ3MgZG9jc3RyaW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgIG9wdGlvbmFsIGFyZ3VtZW50cyAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kICpmaWx0ZXJzKi4KKworICAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGFuIExaTUFDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGNvbXAgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQsIGNoZWNrLCBwcmVzZXQsIGZpbHRlcnMpCisgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKKworCitkZWYgZGVjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CisgICAgIiIiRGVjb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBSZWZlciB0byBMWk1BRGVjb21wcmVzc29yJ3MgZG9jc3RyaW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgIG9wdGlvbmFsIGFyZ3VtZW50cyAqZm9ybWF0KiwgKmNoZWNrKiBhbmQgKmZpbHRlcnMqLgorCisgICAgRm9yIGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24sIHVzZSBhIExaTUFEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgcmVzdWx0cyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgZGVjb21wID0gTFpNQURlY29tcHJlc3Nvcihmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKQorICAgICAgICByZXN1bHRzLmFwcGVuZChkZWNvbXAuZGVjb21wcmVzcyhkYXRhKSkKKyAgICAgICAgaWYgbm90IGRlY29tcC5lb2Y6CisgICAgICAgICAgICByYWlzZSBMWk1BRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICBpZiBub3QgZGVjb21wLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKHJlc3VsdHMpCisgICAgICAgICMgVGhlcmUgaXMgdW51c2VkIGRhdGEgbGVmdCBvdmVyLiBQcm9jZWVkIHRvIG5leHQgc3RyZWFtLgorICAgICAgICBkYXRhID0gZGVjb21wLnVudXNlZF9kYXRhCmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IGM3M2ZiOTUuLmQzYmYzZmQgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0xMTU3LDggKzExNTcsNyBAQAogICAgIGRlZiBnZXRfc2VxdWVuY2VzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBuYW1lLXRvLWtleS1saXN0IGRpY3Rpb25hcnkgdG8gZGVmaW5lIGVhY2ggc2VxdWVuY2UuIiIiCiAgICAgICAgIHJlc3VsdHMgPSB7fQotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3InKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3InLCBlbmNvZGluZz0nQVNDSUknKSBhcyBmOgogICAgICAgICAgICAgYWxsX2tleXMgPSBzZXQoc2VsZi5rZXlzKCkpCiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTExNzcsMTMgKzExNzYsMTEgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRm9ybWF0RXJyb3IoJ0ludmFsaWQgc2VxdWVuY2Ugc3BlY2lmaWNhdGlvbjogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5yc3RyaXAoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICByZXR1cm4gcmVzdWx0cwogCiAgICAgZGVmIHNldF9zZXF1ZW5jZXMoc2VsZiwgc2VxdWVuY2VzKToKICAgICAgICAgIiIiU2V0IHNlcXVlbmNlcyB1c2luZyB0aGUgZ2l2ZW4gbmFtZS10by1rZXktbGlzdCBkaWN0aW9uYXJ5LiIiIgotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3IrJykKKyAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyKycsIGVuY29kaW5nPSdBU0NJSScpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLmNsb3NlKG9zLm9wZW4oZi5uYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fVFJVTkMpKQogICAgICAgICAgICAgZm9yIG5hbWUsIGtleXMgaW4gc2VxdWVuY2VzLml0ZW1zKCk6CkBAIC0xNTIzLDkgKzE1MjAsMTAgQEAKIAogICAgIGRlZiBfYmVjb21lX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgICIiIkFzc3VtZSB0aGUgbm9uLWZvcm1hdC1zcGVjaWZpYyBzdGF0ZSBvZiBtZXNzYWdlLiIiIgotICAgICAgICBmb3IgbmFtZSBpbiAoJ19oZWFkZXJzJywgJ191bml4ZnJvbScsICdfcGF5bG9hZCcsICdfY2hhcnNldCcsCi0gICAgICAgICAgICAgICAgICAgICAncHJlYW1ibGUnLCAnZXBpbG9ndWUnLCAnZGVmZWN0cycsICdfZGVmYXVsdF90eXBlJyk6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gbWVzc2FnZS5fX2RpY3RfX1tuYW1lXQorICAgICAgICB0eXBlX3NwZWNpZmljID0gZ2V0YXR0cihtZXNzYWdlLCAnX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcycsIFtdKQorICAgICAgICBmb3IgbmFtZSBpbiBtZXNzYWdlLl9fZGljdF9fOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdHlwZV9zcGVjaWZpYzoKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gbWVzc2FnZS5fX2RpY3RfX1tuYW1lXQogCiAgICAgZGVmIF9leHBsYWluX3RvKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAiIiJDb3B5IGZvcm1hdC1zcGVjaWZpYyBzdGF0ZSB0byBtZXNzYWdlIGluc29mYXIgYXMgcG9zc2libGUuIiIiCkBAIC0xNTM4LDYgKzE1MzYsOCBAQAogY2xhc3MgTWFpbGRpck1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIE1haWxkaXItc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19zdWJkaXInLCAnX2luZm8nLCAnX2RhdGUnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBNYWlsZGlyTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fc3ViZGlyID0gJ25ldycKQEAgLTE2NDUsNiArMTY0NSw4IEBACiBjbGFzcyBfbWJveE1NREZNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBtYm94LSBvciBNTURGLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfZnJvbSddCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBtYm94TU1ERk1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuc2V0X2Zyb20oJ01BSUxFUi1EQUVNT04nLCBUcnVlKQpAQCAtMTc2MCw2ICsxNzYyLDggQEAKIGNsYXNzIE1ITWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggTUgtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19zZXF1ZW5jZXMnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gTUhNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9zZXF1ZW5jZXMgPSBbXQpAQCAtMTgzMCw2ICsxODM0LDggQEAKIGNsYXNzIEJhYnlsTWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggQmFieWwtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19sYWJlbHMnLCAnX3Zpc2libGUnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gQmFieWxNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9sYWJlbHMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL21haWxjYXAucHkgYi9MaWIvbWFpbGNhcC5weQppbmRleCA0YWUxM2Q3Li45OWY0OTU4IDEwMDY0NAotLS0gYS9MaWIvbWFpbGNhcC5weQorKysgYi9MaWIvbWFpbGNhcC5weQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIGRlZiBsaXN0bWFpbGNhcGZpbGVzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgbWFpbGNhcCBmaWxlcyBmb3VuZCBvbiB0aGUgc3lzdGVtLiIiIgotICAgICMgWFhYIEFjdHVhbGx5LCB0aGlzIGlzIFVuaXgtc3BlY2lmaWMKKyAgICAjIFRoaXMgaXMgbW9zdGx5IGEgVW5peCB0aGluZywgYnV0IHdlIHVzZSB0aGUgT1MgcGF0aCBzZXBhcmF0b3IgYW55d2F5CiAgICAgaWYgJ01BSUxDQVBTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICBzdHIgPSBvcy5lbnZpcm9uWydNQUlMQ0FQUyddCi0gICAgICAgIG1haWxjYXBzID0gc3RyLnNwbGl0KCc6JykKKyAgICAgICAgcGF0aHN0ciA9IG9zLmVudmlyb25bJ01BSUxDQVBTJ10KKyAgICAgICAgbWFpbGNhcHMgPSBwYXRoc3RyLnNwbGl0KG9zLnBhdGhzZXApCiAgICAgZWxzZToKICAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBob21lID0gb3MuZW52aXJvblsnSE9NRSddCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCA4Y2UwMmY5Li4zZjBiZDBlIDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTI0OSw3ICsyNDksNiBAQAogICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdHlwZQogICAgICAgICAgICAgICAgIGkgKz0gMQogCi0gICAgICAgIGRlZmF1bHRfZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICAgd2l0aCBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NMQVNTRVNfUk9PVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidNSU1FXERhdGFiYXNlXENvbnRlbnQgVHlwZScpIGFzIG1pbWVkYjoKICAgICAgICAgICAgIGZvciBjdHlwZSBpbiBlbnVtX3R5cGVzKG1pbWVkYik6CkBAIC00MzQsNiArNDMzLDggQEAKICAgICAgICAgJy5rc2gnICAgIDogJ3RleHQvcGxhaW4nLAogICAgICAgICAnLmxhdGV4JyAgOiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgICcubTF2JyAgICA6ICd2aWRlby9tcGVnJywKKyAgICAgICAgJy5tM3UnICAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKKyAgICAgICAgJy5tM3U4JyAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKICAgICAgICAgJy5tYW4nICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWFuJywKICAgICAgICAgJy5tZScgICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWUnLAogICAgICAgICAnLm1odCcgICAgOiAnbWVzc2FnZS9yZmM4MjInLApkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggZjAzM2JhOS4uNjgzZTMwNSAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9ycwogaW1wb3J0IGRpcwogaW1wb3J0IGltcAogaW1wb3J0IG1hcnNoYWwKQEAgLTksOCArOCw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCBzdHJ1Y3QKIAotUkVBRF9NT0RFID0gInJVIgotCiAjIFhYWCBDbGVhbiB1cCBvbmNlIHN0cjgncyBjc3RvciBtYXRjaGVzIGJ5dGVzLgogTE9BRF9DT05TVCA9IGJ5dGVzKFtkaXMub3BuYW1lLmluZGV4KCdMT0FEX0NPTlNUJyldKQogSU1QT1JUX05BTUUgPSBieXRlcyhbZGlzLm9wbmFtZS5pbmRleCgnSU1QT1JUX05BTUUnKV0pCkBAIC0yOSw5ICsyNiw3IEBACiAKICMgQSBQdWJsaWMgaW50ZXJmYWNlCiBkZWYgQWRkUGFja2FnZVBhdGgocGFja2FnZW5hbWUsIHBhdGgpOgotICAgIHBhdGhzID0gcGFja2FnZVBhdGhNYXAuZ2V0KHBhY2thZ2VuYW1lLCBbXSkKLSAgICBwYXRocy5hcHBlbmQocGF0aCkKLSAgICBwYWNrYWdlUGF0aE1hcFtwYWNrYWdlbmFtZV0gPSBwYXRocworICAgIHBhY2thZ2VQYXRoTWFwLnNldGRlZmF1bHQocGFja2FnZW5hbWUsIFtdKS5hcHBlbmQocGF0aCkKIAogcmVwbGFjZVBhY2thZ2VNYXAgPSB7fQogCkBAIC0xMDYsMTQgKzEwMSwxNCBAQAogCiAgICAgZGVmIHJ1bl9zY3JpcHQoc2VsZiwgcGF0aG5hbWUpOgogICAgICAgICBzZWxmLm1zZygyLCAicnVuX3NjcmlwdCIsIHBhdGhuYW1lKQotICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsIFJFQURfTU9ERSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBzdHVmZiA9ICgiIiwgInIiLCBpbXAuUFlfU09VUkNFKQogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnX19tYWluX18nLCBmcCwgcGF0aG5hbWUsIHN0dWZmKQogCiAgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBwYXRobmFtZSk6CiAgICAgICAgIGRpciwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lLCBSRUFEX01PREUpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUpIGFzIGZwOgogICAgICAgICAgICAgc3R1ZmYgPSAoZXh0LCAiciIsIGltcC5QWV9TT1VSQ0UpCiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKG5hbWUsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAKQEAgLTIyNyw4ICsyMjIsOSBAQAogICAgICAgICAjIEJ1dCB3ZSBtdXN0IGFsc28gY29sbGVjdCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMgLSBhbHRob3VnaAogICAgICAgICAjIHdlIGNhbm5vdCBzZXBhcmF0ZSBub3JtYWwgZGxscyBmcm9tIFB5dGhvbiBleHRlbnNpb25zLgogICAgICAgICBzdWZmaXhlcyA9IFtdCi0gICAgICAgIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpOgotICAgICAgICAgICAgc3VmZml4ZXMuYXBwZW5kKHRyaXBsZVswXSkKKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQogICAgICAgICBmb3IgZGlyIGluIG0uX19wYXRoX186CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcikKQEAgLTI3MCw3ICsyNjYsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtID0gc2VsZi5sb2FkX21vZHVsZShmcW5hbWUsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBmcDogZnAuY2xvc2UoKQorICAgICAgICAgICAgaWYgZnA6CisgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgICBpZiBwYXJlbnQ6CiAgICAgICAgICAgICBzZXRhdHRyKHBhcmVudCwgcGFydG5hbWUsIG0pCiAgICAgICAgIHNlbGYubXNnb3V0KDMsICJpbXBvcnRfbW9kdWxlIC0+IiwgbSkKQEAgLTY2Miw0ICs2NTksNCBAQAogICAgIHRyeToKICAgICAgICAgbWYgPSB0ZXN0KCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRdIikKKyAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdGVkXSIpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQppbmRleCBlNmUxNmM4Li4xZjNlNjdjIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKQEAgLTEzLDMyICsxMyw3IEBACiAjCiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX192ZXJzaW9uX18gPSAnMC43MGExJwpAQCAtNDgsOCArMjMsOCBAQAogICAgICdNYW5hZ2VyJywgJ1BpcGUnLCAnY3B1X2NvdW50JywgJ2xvZ190b19zdGRlcnInLCAnZ2V0X2xvZ2dlcicsCiAgICAgJ2FsbG93X2Nvbm5lY3Rpb25fcGlja2xpbmcnLCAnQnVmZmVyVG9vU2hvcnQnLCAnVGltZW91dEVycm9yJywKICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdDb25kaXRpb24nLAotICAgICdFdmVudCcsICdRdWV1ZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnLCAnVmFsdWUnLCAnQXJyYXknLAotICAgICdSYXdWYWx1ZScsICdSYXdBcnJheScsICdTVUJERUJVRycsICdTVUJXQVJOSU5HJywKKyAgICAnRXZlbnQnLCAnQmFycmllcicsICdRdWV1ZScsICdTaW1wbGVRdWV1ZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnLAorICAgICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsICdSYXdBcnJheScsICdTVUJERUJVRycsICdTVUJXQVJOSU5HJywKICAgICBdCiAKIF9fYXV0aG9yX18gPSAnUi4gT3Vka2VyayAoci5tLm91ZGtlcmtAZ21haWwuY29tKScKQEAgLTE2MSw3ICsxMzYsOSBAQAogICAgICcnJwogICAgIEluc3RhbGwgc3VwcG9ydCBmb3Igc2VuZGluZyBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBiZXR3ZWVuIHByb2Nlc3NlcwogICAgICcnJwotICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCByZWR1Y3Rpb24KKyAgICAjIFRoaXMgaXMgdW5kb2N1bWVudGVkLiAgSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgbXVsdGlwcm9jZXNzaW5nCisgICAgIyBpdHMgb25seSBlZmZlY3Qgd2FzIHRvIG1ha2Ugc29ja2V0IG9iamVjdHMgaW5oZXJpdGFibGUgb24gV2luZG93cy4KKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24KIAogIwogIyBEZWZpbml0aW9ucyBkZXBlbmRpbmcgb24gbmF0aXZlIHNlbWFwaG9yZXMKQEAgLTIwOSw2ICsxODYsMTMgQEAKICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgRXZlbnQKICAgICByZXR1cm4gRXZlbnQoKQogCitkZWYgQmFycmllcihwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKKyAgICAnJycKKyAgICBSZXR1cm5zIGEgYmFycmllciBvYmplY3QKKyAgICAnJycKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgQmFycmllcgorICAgIHJldHVybiBCYXJyaWVyKHBhcnRpZXMsIGFjdGlvbiwgdGltZW91dCkKKwogZGVmIFF1ZXVlKG1heHNpemU9MCk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHF1ZXVlIG9iamVjdApAQCAtMjIzLDYgKzIwNywxMyBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgSm9pbmFibGVRdWV1ZQogICAgIHJldHVybiBKb2luYWJsZVF1ZXVlKG1heHNpemUpCiAKK2RlZiBTaW1wbGVRdWV1ZSgpOgorICAgICcnJworICAgIFJldHVybnMgYSBxdWV1ZSBvYmplY3QKKyAgICAnJycKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMgaW1wb3J0IFNpbXBsZVF1ZXVlCisgICAgcmV0dXJuIFNpbXBsZVF1ZXVlKCkKKwogZGVmIFBvb2wocHJvY2Vzc2VzPU5vbmUsIGluaXRpYWxpemVyPU5vbmUsIGluaXRhcmdzPSgpLCBtYXh0YXNrc3BlcmNoaWxkPU5vbmUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBwcm9jZXNzIHBvb2wgb2JqZWN0CkBAIC0yNDQsMTkgKzIzNSwxOSBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgUmF3QXJyYXkKICAgICByZXR1cm4gUmF3QXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplcikKIAotZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCAqKmt3ZHMpOgorZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIG9iamVjdAogICAgICcnJwogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgVmFsdWUKLSAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsICoqa3dkcykKKyAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9bG9jaykKIAotZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICoqa3dkcyk6CitkZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKToKICAgICAnJycKICAgICBSZXR1cm5zIGEgc3luY2hyb25pemVkIHNoYXJlZCBhcnJheQogICAgICcnJwogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgQXJyYXkKLSAgICByZXR1cm4gQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKQorICAgIHJldHVybiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCBsb2NrPWxvY2spCiAKICMKICMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQppbmRleCA0ZmE2ZjcwLi5mYmJkNWQ5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CkBAIC00LDQ5ICs0LDM0IEBACiAjIG11bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotX19hbGxfXyA9IFsgJ0NsaWVudCcsICdMaXN0ZW5lcicsICdQaXBlJyBdCitfX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnLCAnd2FpdCcgXQogCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAogaW1wb3J0IGVycm5vCiBpbXBvcnQgdGltZQogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgaXRlcnRvb2xzCiAKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBBdXRoZW50aWNhdGlvbkVycm9yCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBBdXRoZW50aWNhdGlvbkVycm9yLCBCdWZmZXJUb29TaG9ydAogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZ2V0X3RlbXBfZGlyLCBGaW5hbGl6ZSwgc3ViX2RlYnVnLCBkZWJ1ZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgZHVwbGljYXRlLCBjbG9zZQotCitmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBGb3JraW5nUGlja2xlcgordHJ5OgorICAgIGltcG9ydCBfd2luYXBpCisgICAgZnJvbSBfd2luYXBpIGltcG9ydCBXQUlUX09CSkVDVF8wLCBXQUlUX1RJTUVPVVQsIElORklOSVRFCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIHJhaXNlCisgICAgX3dpbmFwaSA9IE5vbmUKIAogIwogIwpAQCAtMTIyLDYgKzEwNywzMDkgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYWRkcmVzcyB0eXBlIG9mICVyIHVucmVjb2duaXplZCcgJSBhZGRyZXNzKQogCiAjCisjIENvbm5lY3Rpb24gY2xhc3NlcworIworCitjbGFzcyBfQ29ubmVjdGlvbkJhc2U6CisgICAgX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGUsIHJlYWRhYmxlPVRydWUsIHdyaXRhYmxlPVRydWUpOgorICAgICAgICBoYW5kbGUgPSBoYW5kbGUuX19pbmRleF9fKCkKKyAgICAgICAgaWYgaGFuZGxlIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgaGFuZGxlIikKKyAgICAgICAgaWYgbm90IHJlYWRhYmxlIGFuZCBub3Qgd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJhdCBsZWFzdCBvbmUgb2YgYHJlYWRhYmxlYCBhbmQgYHdyaXRhYmxlYCBtdXN0IGJlIFRydWUiKQorICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5kbGUKKyAgICAgICAgc2VsZi5fcmVhZGFibGUgPSByZWFkYWJsZQorICAgICAgICBzZWxmLl93cml0YWJsZSA9IHdyaXRhYmxlCisKKyAgICAjIFhYWCBzaG91bGQgd2UgdXNlIHV0aWwuRmluYWxpemUgaW5zdGVhZCBvZiBhIF9fZGVsX18/CisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorCisgICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiaGFuZGxlIGlzIGNsb3NlZCIpCisKKyAgICBkZWYgX2NoZWNrX3JlYWRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjb25uZWN0aW9uIGlzIHdyaXRlLW9ubHkiKQorCisgICAgZGVmIF9jaGVja193cml0YWJsZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKQorCisgICAgZGVmIF9iYWRfbWVzc2FnZV9sZW5ndGgoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgIHJhaXNlIElPRXJyb3IoImJhZCBtZXNzYWdlIGxlbmd0aCIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCIiIgorICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlIGlzIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkYWJsZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyB3cml0YWJsZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGFibGUKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIkZpbGUgZGVzY3JpcHRvciBvciBoYW5kbGUgb2YgdGhlIGNvbm5lY3Rpb24iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbiIiIgorICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBOb25lCisKKyAgICBkZWYgc2VuZF9ieXRlcyhzZWxmLCBidWYsIG9mZnNldD0wLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJTZW5kIHRoZSBieXRlcyBkYXRhIGZyb20gYSBieXRlcy1saWtlIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgIyBIQUNLIGZvciBieXRlLWluZGV4aW5nIG9mIG5vbi1ieXRld2lzZSBidWZmZXJzIChlLmcuIGFycmF5LmFycmF5KQorICAgICAgICBpZiBtLml0ZW1zaXplID4gMToKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVzKG0pKQorICAgICAgICBuID0gbGVuKG0pCisgICAgICAgIGlmIG9mZnNldCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgaXMgbmVnYXRpdmUiKQorICAgICAgICBpZiBuIDwgb2Zmc2V0OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSBuIC0gb2Zmc2V0CisgICAgICAgIGVsaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzaXplIGlzIG5lZ2F0aXZlIikKKyAgICAgICAgZWxpZiBvZmZzZXQgKyBzaXplID4gbjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQgKyBzaXplIikKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhtW29mZnNldDpvZmZzZXQgKyBzaXplXSkKKworICAgIGRlZiBzZW5kKHNlbGYsIG9iaik6CisgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQorICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgRm9ya2luZ1BpY2tsZXIoYnVmLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCkuZHVtcChvYmopCisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoYnVmLmdldGJ1ZmZlcigpKQorCisgICAgZGVmIHJlY3ZfYnl0ZXMoc2VsZiwgbWF4bGVuZ3RoPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVjZWl2ZSBieXRlcyBkYXRhIGFzIGEgYnl0ZXMgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICBpZiBtYXhsZW5ndGggaXMgbm90IE5vbmUgYW5kIG1heGxlbmd0aCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBtYXhsZW5ndGgiKQorICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKG1heGxlbmd0aCkKKyAgICAgICAgaWYgYnVmIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9iYWRfbWVzc2FnZV9sZW5ndGgoKQorICAgICAgICByZXR1cm4gYnVmLmdldHZhbHVlKCkKKworICAgIGRlZiByZWN2X2J5dGVzX2ludG8oc2VsZiwgYnVmLCBvZmZzZXQ9MCk6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgaW50byBhIHdyaXRlYWJsZSBidWZmZXItbGlrZSBvYmplY3QuCisgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyhidWYpIGFzIG06CisgICAgICAgICAgICAjIEdldCBieXRlc2l6ZSBvZiBhcmJpdHJhcnkgYnVmZmVyCisgICAgICAgICAgICBpdGVtc2l6ZSA9IG0uaXRlbXNpemUKKyAgICAgICAgICAgIGJ5dGVzaXplID0gaXRlbXNpemUgKiBsZW4obSkKKyAgICAgICAgICAgIGlmIG9mZnNldCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmVnYXRpdmUgb2Zmc2V0IikKKyAgICAgICAgICAgIGVsaWYgb2Zmc2V0ID4gYnl0ZXNpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IHRvbyBsYXJnZSIpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgIHNpemUgPSByZXN1bHQudGVsbCgpCisgICAgICAgICAgICBpZiBieXRlc2l6ZSA8IG9mZnNldCArIHNpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgQnVmZmVyVG9vU2hvcnQocmVzdWx0LmdldHZhbHVlKCkpCisgICAgICAgICAgICAjIE1lc3NhZ2UgY2FuIGZpdCBpbiBkZXN0CisgICAgICAgICAgICByZXN1bHQuc2VlaygwKQorICAgICAgICAgICAgcmVzdWx0LnJlYWRpbnRvKG1bb2Zmc2V0IC8vIGl0ZW1zaXplIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXQgKyBzaXplKSAvLyBpdGVtc2l6ZV0pCisgICAgICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIHJlY3Yoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmUgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCisKKyAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CisgICAgICAgICIiIldoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvbGwodGltZW91dCkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKKworaWYgX3dpbmFwaToKKworICAgIGNsYXNzIFBpcGVDb25uZWN0aW9uKF9Db25uZWN0aW9uQmFzZSk6CisgICAgICAgICIiIgorICAgICAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGEgV2luZG93cyBuYW1lZCBwaXBlLgorICAgICAgICBPdmVybGFwcGVkIEkvTyBpcyB1c2VkLCBzbyB0aGUgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkCisgICAgICAgIHdpdGggRklMRV9GTEFHX09WRVJMQVBQRUQuCisgICAgICAgICIiIgorICAgICAgICBfZ290X2VtcHR5X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX0Nsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgorICAgICAgICAgICAgX0Nsb3NlSGFuZGxlKHNlbGYuX2hhbmRsZSkKKworICAgICAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKKyAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLldyaXRlRmlsZShzZWxmLl9oYW5kbGUsIGJ1Ziwgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CisgICAgICAgICAgICAgICAgICAgIHdhaXRyZXMgPSBfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG53cml0dGVuLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIGFzc2VydCBud3JpdHRlbiA9PSBsZW4oYnVmKQorCisgICAgICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICAgICAgaWYgc2VsZi5fZ290X2VtcHR5X21lc3NhZ2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZ290X2VtcHR5X21lc3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnNpemUgPSAxMjggaWYgbWF4c2l6ZSBpcyBOb25lIGVsc2UgbWluKG1heHNpemUsIDEyOCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgYnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCwgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyID09IF93aW5hcGkuRVJST1JfTU9SRV9EQVRBOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfbW9yZV9kYXRhKG92LCBtYXhzaXplKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgPT0gX3dpbmFwaS5FUlJPUl9CUk9LRU5fUElQRToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzaG91bGRuJ3QgZ2V0IGhlcmU7IGV4cGVjdGVkIEtleWJvYXJkSW50ZXJydXB0IikKKworICAgICAgICBkZWYgX3BvbGwoc2VsZiwgdGltZW91dCk6CisgICAgICAgICAgICBpZiAoc2VsZi5fZ290X2VtcHR5X21lc3NhZ2Ugb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuUGVla05hbWVkUGlwZShzZWxmLl9oYW5kbGUpWzBdICE9IDApOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gYm9vbCh3YWl0KFtzZWxmXSwgdGltZW91dCkpCisKKyAgICAgICAgZGVmIF9nZXRfbW9yZV9kYXRhKHNlbGYsIG92LCBtYXhzaXplKToKKyAgICAgICAgICAgIGJ1ZiA9IG92LmdldGJ1ZmZlcigpCisgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICBmLndyaXRlKGJ1ZikKKyAgICAgICAgICAgIGxlZnQgPSBfd2luYXBpLlBlZWtOYW1lZFBpcGUoc2VsZi5faGFuZGxlKVsxXQorICAgICAgICAgICAgYXNzZXJ0IGxlZnQgPiAwCisgICAgICAgICAgICBpZiBtYXhzaXplIGlzIG5vdCBOb25lIGFuZCBsZW4oYnVmKSArIGxlZnQgPiBtYXhzaXplOgorICAgICAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCisgICAgICAgICAgICBvdiwgZXJyID0gX3dpbmFwaS5SZWFkRmlsZShzZWxmLl9oYW5kbGUsIGxlZnQsIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIHJieXRlcywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGVyciA9PSAwCisgICAgICAgICAgICBhc3NlcnQgcmJ5dGVzID09IGxlZnQKKyAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gZgorCisKK2NsYXNzIENvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKKyAgICAiIiIKKyAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGFuIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0b3IgKFVuaXggb25seSksIG9yCisgICAgYSBzb2NrZXQgaGFuZGxlIChXaW5kb3dzKS4KKyAgICAiIiIKKworICAgIGlmIF93aW5hcGk6CisgICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX2Nsb3NlPV9tdWx0aXByb2Nlc3NpbmcuY2xvc2Vzb2NrZXQpOgorICAgICAgICAgICAgX2Nsb3NlKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgX3dyaXRlID0gX211bHRpcHJvY2Vzc2luZy5zZW5kCisgICAgICAgIF9yZWFkID0gX211bHRpcHJvY2Vzc2luZy5yZWN2CisgICAgZWxzZToKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9b3MuY2xvc2UpOgorICAgICAgICAgICAgX2Nsb3NlKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgX3dyaXRlID0gb3Mud3JpdGUKKyAgICAgICAgX3JlYWQgPSBvcy5yZWFkCisKKyAgICBkZWYgX3NlbmQoc2VsZiwgYnVmLCB3cml0ZT1fd3JpdGUpOgorICAgICAgICByZW1haW5pbmcgPSBsZW4oYnVmKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbiA9IHdyaXRlKHNlbGYuX2hhbmRsZSwgYnVmKQorICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KKyAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSAwOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBidWYgPSBidWZbbjpdCisKKyAgICBkZWYgX3JlY3Yoc2VsZiwgc2l6ZSwgcmVhZD1fcmVhZCk6CisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGUKKyAgICAgICAgcmVtYWluaW5nID0gc2l6ZQorICAgICAgICB3aGlsZSByZW1haW5pbmcgPiAwOgorICAgICAgICAgICAgY2h1bmsgPSByZWFkKGhhbmRsZSwgcmVtYWluaW5nKQorICAgICAgICAgICAgbiA9IGxlbihjaHVuaykKKyAgICAgICAgICAgIGlmIG4gPT0gMDoKKyAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJnb3QgZW5kIG9mIGZpbGUgZHVyaW5nIG1lc3NhZ2UiKQorICAgICAgICAgICAgYnVmLndyaXRlKGNodW5rKQorICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KKyAgICAgICAgcmV0dXJuIGJ1ZgorCisgICAgZGVmIF9zZW5kX2J5dGVzKHNlbGYsIGJ1Zik6CisgICAgICAgICMgRm9yIHdpcmUgY29tcGF0aWJpbGl0eSB3aXRoIDMuMiBhbmQgbG93ZXIKKyAgICAgICAgbiA9IGxlbihidWYpCisgICAgICAgIHNlbGYuX3NlbmQoc3RydWN0LnBhY2soIiFpIiwgbikpCisgICAgICAgICMgVGhlIGNvbmRpdGlvbiBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgImJyb2tlbiBwaXBlIiBlcnJvcnMKKyAgICAgICAgIyB3aGVuIHNlbmRpbmcgYSAwLWxlbmd0aCBidWZmZXIgaWYgdGhlIG90aGVyIGVuZCBjbG9zZWQgdGhlIHBpcGUuCisgICAgICAgIGlmIG4gPiAwOgorICAgICAgICAgICAgc2VsZi5fc2VuZChidWYpCisKKyAgICBkZWYgX3JlY3ZfYnl0ZXMoc2VsZiwgbWF4c2l6ZT1Ob25lKToKKyAgICAgICAgYnVmID0gc2VsZi5fcmVjdig0KQorICAgICAgICBzaXplLCA9IHN0cnVjdC51bnBhY2soIiFpIiwgYnVmLmdldHZhbHVlKCkpCisgICAgICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIHNpemUgPiBtYXhzaXplOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlY3Yoc2l6ZSkKKworICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgciA9IHdhaXQoW3NlbGYuX2hhbmRsZV0sIHRpbWVvdXQpCisgICAgICAgIHJldHVybiBib29sKHIpCisKKworIwogIyBQdWJsaWMgZnVuY3Rpb25zCiAjCiAKQEAgLTE1NCw2ICs0NDIsOCBAQAogCiAgICAgICAgIFJldHVybnMgYSBgQ29ubmVjdGlvbmAgb2JqZWN0LgogICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2xpc3RlbmVyIGlzIGNsb3NlZCcpCiAgICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgICBpZiBzZWxmLl9hdXRoa2V5OgogICAgICAgICAgICAgZGVsaXZlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKQEAgLTE2NCwxMSArNDU0LDE5IEBACiAgICAgICAgICcnJwogICAgICAgICBDbG9zZSB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fbGlzdGVuZXIuX2FkZHJlc3MpCiAgICAgbGFzdF9hY2NlcHRlZCA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9saXN0ZW5lci5fbGFzdF9hY2NlcHRlZCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzLCBmYW1pbHk9Tm9uZSwgYXV0aGtleT1Ob25lKToKICAgICAnJycKQEAgLTIwMSw1NiArNDk5LDUyIEBACiAgICAgICAgICAgICBzMSwgczIgPSBzb2NrZXQuc29ja2V0cGFpcigpCiAgICAgICAgICAgICBzMS5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICAgczIuc2V0YmxvY2tpbmcoVHJ1ZSkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKG9zLmR1cChzMS5maWxlbm8oKSkpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihvcy5kdXAoczIuZmlsZW5vKCkpKQotICAgICAgICAgICAgczEuY2xvc2UoKQotICAgICAgICAgICAgczIuY2xvc2UoKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKHMxLmRldGFjaCgpKQorICAgICAgICAgICAgYzIgPSBDb25uZWN0aW9uKHMyLmRldGFjaCgpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmQxLCBmZDIgPSBvcy5waXBlKCkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihmZDIsIHJlYWRhYmxlPUZhbHNlKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCisgICAgICAgICAgICBjMiA9IENvbm5lY3Rpb24oZmQyLCByZWFkYWJsZT1GYWxzZSkKIAogICAgICAgICByZXR1cm4gYzEsIGMyCiAKIGVsc2U6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCi0KICAgICBkZWYgUGlwZShkdXBsZXg9VHJ1ZSk6CiAgICAgICAgICcnJwogICAgICAgICBSZXR1cm5zIHBhaXIgb2YgY29ubmVjdGlvbiBvYmplY3RzIGF0IGVpdGhlciBlbmQgb2YgYSBwaXBlCiAgICAgICAgICcnJwogICAgICAgICBhZGRyZXNzID0gYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1BJUEUnKQogICAgICAgICBpZiBkdXBsZXg6Ci0gICAgICAgICAgICBvcGVubW9kZSA9IHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWAotICAgICAgICAgICAgYWNjZXNzID0gd2luMzIuR0VORVJJQ19SRUFEIHwgd2luMzIuR0VORVJJQ19XUklURQorICAgICAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1JFQUQgfCBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgIG9ic2l6ZSwgaWJzaXplID0gQlVGU0laRSwgQlVGU0laRQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Blbm1vZGUgPSB3aW4zMi5QSVBFX0FDQ0VTU19JTkJPVU5ECi0gICAgICAgICAgICBhY2Nlc3MgPSB3aW4zMi5HRU5FUklDX1dSSVRFCisgICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfSU5CT1VORAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgICAgICBvYnNpemUsIGlic2l6ZSA9IDAsIEJVRlNJWkUKIAotICAgICAgICBoMSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlLAotICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgMSwgb2JzaXplLCBpYnNpemUsIHdpbjMyLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCB3aW4zMi5OVUxMCisgICAgICAgIGgxID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICBhZGRyZXNzLCBvcGVubW9kZSB8IF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQgfAorICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSwKKyAgICAgICAgICAgIF93aW5hcGkuUElQRV9UWVBFX01FU1NBR0UgfCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8CisgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgIDEsIG9ic2l6ZSwgaWJzaXplLCBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICkKLSAgICAgICAgaDIgPSB3aW4zMi5DcmVhdGVGaWxlKAotICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCB3aW4zMi5OVUxMLCB3aW4zMi5PUEVOX0VYSVNUSU5HLCAwLCB3aW4zMi5OVUxMCisgICAgICAgIGgyID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKKyAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgKQotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgyLCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKKyAgICAgICAgX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKKyAgICAgICAgICAgIGgyLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpbjMyLkNvbm5lY3ROYW1lZFBpcGUoaDEsIHdpbjMyLk5VTEwpCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSB3aW4zMi5FUlJPUl9QSVBFX0NPTk5FQ1RFRDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBvdmVybGFwcGVkID0gX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlKGgxLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgIF8sIGVyciA9IG92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICBhc3NlcnQgZXJyID09IDAKIAotICAgICAgICBjMSA9IF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKLSAgICAgICAgYzIgPSBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKGgyLCByZWFkYWJsZT1kdXBsZXgpCisgICAgICAgIGMxID0gUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKKyAgICAgICAgYzIgPSBQaXBlQ29ubmVjdGlvbihoMiwgcmVhZGFibGU9ZHVwbGV4KQogCiAgICAgICAgIHJldHVybiBjMSwgYzIKIApAQCAtMjY1LDEyICs1NTksMTUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZmFtaWx5LCBiYWNrbG9nPTEpOgogICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KGdldGF0dHIoc29ja2V0LCBmYW1pbHkpKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKKyAgICAgICAgICAgICMgU09fUkVVU0VBRERSIGhhcyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgKGlzc3VlICMyNTUwKS4KKyAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuYmluZChhZGRyZXNzKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0Lmxpc3RlbihiYWNrbG9nKQogICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX3NvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNlbGYuX2ZhbWlseSA9IGZhbWlseQpAQCAtMjg2LDEwICs1ODMsNyBAQAogICAgIGRlZiBhY2NlcHQoc2VsZik6CiAgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkKQotICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKQEAgLTMwNCwyNCArNTk4LDggQEAKICAgICBmYW1pbHkgPSBhZGRyZXNzX3R5cGUoYWRkcmVzcykKICAgICB3aXRoIHNvY2tldC5zb2NrZXQoIGdldGF0dHIoc29ja2V0LCBmYW1pbHkpICkgYXMgczoKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICB0ID0gX2luaXRfdGltZW91dCgpCi0KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUNPTk5SRUZVU0VEIG9yIF9jaGVja190aW1lb3V0KHQpOgotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnZmFpbGVkIHRvIGNvbm5lY3QgdG8gYWRkcmVzcyAlcycsIGFkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQpCi0gICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCiAKICMKICMgRGVmaW5pdGlvbnMgZm9yIGNvbm5lY3Rpb25zIGJhc2VkIG9uIG5hbWVkIHBpcGVzCkBAIC0zMzUsNDggKzYxMyw1NSBAQAogICAgICAgICAnJycKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGJhY2tsb2c9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gYWRkcmVzcwotICAgICAgICAgICAgaGFuZGxlID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKLSAgICAgICAgICAgICAgICB3aW4zMi5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgd2luMzIuTlVMTAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtoYW5kbGVdCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUgPSBbc2VsZi5fbmV3X2hhbmRsZShmaXJzdD1UcnVlKV0KKwogICAgICAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKLQogICAgICAgICAgICAgc3ViX2RlYnVnKCdsaXN0ZW5lciBjcmVhdGVkIHdpdGggYWRkcmVzcz0lcicsIHNlbGYuX2FkZHJlc3MpCi0KICAgICAgICAgICAgIHNlbGYuY2xvc2UgPSBGaW5hbGl6ZSgKICAgICAgICAgICAgICAgICBzZWxmLCBQaXBlTGlzdGVuZXIuX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5faGFuZGxlX3F1ZXVlLCBzZWxmLl9hZGRyZXNzKSwgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgZGVmIGFjY2VwdChzZWxmKToKLSAgICAgICAgICAgIG5ld2hhbmRsZSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzLCB3aW4zMi5QSVBFX0FDQ0VTU19EVVBMRVgsCi0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfV0FJVCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsIEJVRlNJWkUsIEJVRlNJWkUsCi0gICAgICAgICAgICAgICAgd2luMzIuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIHdpbjMyLk5VTEwKKyAgICAgICAgZGVmIF9uZXdfaGFuZGxlKHNlbGYsIGZpcnN0PUZhbHNlKToKKyAgICAgICAgICAgIGZsYWdzID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19EVVBMRVggfCBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECisgICAgICAgICAgICBpZiBmaXJzdDoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBfd2luYXBpLkZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFCisgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcywgZmxhZ3MsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1RZUEVfTUVTU0FHRSB8IF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKG5ld2hhbmRsZSkKKworICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3F1ZXVlLmFwcGVuZChzZWxmLl9uZXdfaGFuZGxlKCkpCiAgICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGVfcXVldWUucG9wKDApCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2luMzIuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIHdpbjMyLk5VTEwpCi0gICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgb3YgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gX3dpbmFwaS5FUlJPUl9OT19EQVRBOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICMgRVJST1JfTk9fREFUQSBjYW4gb2NjdXIgaWYgYSBjbGllbnQgaGFzIGFscmVhZHkgY29ubmVjdGVkLAogICAgICAgICAgICAgICAgICMgd3JpdHRlbiBkYXRhIGFuZCB0aGVuIGRpc2Nvbm5lY3RlZCAtLSBzZWUgSXNzdWUgMTQ3MjUuCi0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfUElQRV9DT05ORUNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfTk9fREFUQSk6CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoYW5kbGUpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUpCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIocXVldWUsIGFkZHJlc3MpOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdjbG9zaW5nIGxpc3RlbmVyIHdpdGggYWRkcmVzcz0lcicsIGFkZHJlc3MpCiAgICAgICAgICAgICBmb3IgaGFuZGxlIGluIHF1ZXVlOgotICAgICAgICAgICAgICAgIGNsb3NlKGhhbmRsZSkKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKIAogICAgIGRlZiBQaXBlQ2xpZW50KGFkZHJlc3MpOgogICAgICAgICAnJycKQEAgLTM4NSwyNCArNjcwLDI1IEBACiAgICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aW4zMi5XYWl0TmFtZWRQaXBlKGFkZHJlc3MsIDEwMDApCi0gICAgICAgICAgICAgICAgaCA9IHdpbjMyLkNyZWF0ZUZpbGUoCi0gICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLkdFTkVSSUNfUkVBRCB8IHdpbjMyLkdFTkVSSUNfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgIDAsIHdpbjMyLk5VTEwsIHdpbjMyLk9QRU5fRVhJU1RJTkcsIDAsIHdpbjMyLk5VTEwKKyAgICAgICAgICAgICAgICBfd2luYXBpLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKKyAgICAgICAgICAgICAgICBoID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLCBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgICAgICAgICAgMCwgX3dpbmFwaS5OVUxMLCBfd2luYXBpLk9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfU0VNX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfUElQRV9CVVNZKSBvciBfY2hlY2tfdGltZW91dCh0KToKKyAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yIG5vdCBpbiAoX3dpbmFwaS5FUlJPUl9TRU1fVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgsIHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQorICAgICAgICBfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAorICAgICAgICAgICAgaCwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaCkKKyAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGgpCiAKICMKICMgQXV0aGVudGljYXRpb24gc3R1ZmYKQEAgLTQ1OSwxMCArNzQ1LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkcyhzKQogCiBkZWYgX3htbF9kdW1wcyhvYmopOgotICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0ZjgnKQorICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0Zi04JykKIAogZGVmIF94bWxfbG9hZHMocyk6Ci0gICAgKG9iaiwpLCBtZXRob2QgPSB4bWxycGNsaWIubG9hZHMocy5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAob2JqLCksIG1ldGhvZCA9IHhtbHJwY2xpYi5sb2FkcyhzLmRlY29kZSgndXRmLTgnKSkKICAgICByZXR1cm4gb2JqCiAKIGNsYXNzIFhtbExpc3RlbmVyKExpc3RlbmVyKToKQEAgLTQ3NiwzICs3NjIsMTQwIEBACiAgICAgZ2xvYmFsIHhtbHJwY2xpYgogICAgIGltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogICAgIHJldHVybiBDb25uZWN0aW9uV3JhcHBlcihDbGllbnQoKmFyZ3MsICoqa3dkcyksIF94bWxfZHVtcHMsIF94bWxfbG9hZHMpCisKKyMKKyMgV2FpdAorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKworICAgIGRlZiBfZXhoYXVzdGl2ZV93YWl0KGhhbmRsZXMsIHRpbWVvdXQpOgorICAgICAgICAjIFJldHVybiBBTEwgaGFuZGxlcyB3aGljaCBhcmUgY3VycmVudGx5IHNpZ25hbGxlZC4gIChPbmx5CisgICAgICAgICMgcmV0dXJuaW5nIHRoZSBmaXJzdCBzaWduYWxsZWQgbWlnaHQgY3JlYXRlIHN0YXJ2YXRpb24gaXNzdWVzLikKKyAgICAgICAgTCA9IGxpc3QoaGFuZGxlcykKKyAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICB3aGlsZSBMOgorICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEwsIEZhbHNlLCB0aW1lb3V0KQorICAgICAgICAgICAgaWYgcmVzID09IFdBSVRfVElNRU9VVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBXQUlUX09CSkVDVF8wIDw9IHJlcyA8IFdBSVRfT0JKRUNUXzAgKyBsZW4oTCk6CisgICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGVsaWYgV0FJVF9BQkFORE9ORURfMCA8PSByZXMgPCBXQUlUX0FCQU5ET05FRF8wICsgbGVuKEwpOgorICAgICAgICAgICAgICAgIHJlcyAtPSBXQUlUX0FCQU5ET05FRF8wCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2hvdWxkIG5vdCBnZXQgaGVyZScpCisgICAgICAgICAgICByZWFkeS5hcHBlbmQoTFtyZXNdKQorICAgICAgICAgICAgTCA9IExbcmVzKzE6XQorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgcmV0dXJuIHJlYWR5CisKKyAgICBfcmVhZHlfZXJyb3JzID0ge193aW5hcGkuRVJST1JfQlJPS0VOX1BJUEUsIF93aW5hcGkuRVJST1JfTkVUTkFNRV9ERUxFVEVEfQorCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBJTkZJTklURQorICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCAqIDEwMDAgKyAwLjUpCisKKyAgICAgICAgb2JqZWN0X2xpc3QgPSBsaXN0KG9iamVjdF9saXN0KQorICAgICAgICB3YWl0aGFuZGxlX3RvX29iaiA9IHt9CisgICAgICAgIG92X2xpc3QgPSBbXQorICAgICAgICByZWFkeV9vYmplY3RzID0gc2V0KCkKKyAgICAgICAgcmVhZHlfaGFuZGxlcyA9IHNldCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIG8gaW4gb2JqZWN0X2xpc3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmaWxlbm8gPSBnZXRhdHRyKG8sICdmaWxlbm8nKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbby5fX2luZGV4X18oKV0gPSBvCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBhbiBvdmVybGFwcGVkIHJlYWQgb2YgbGVuZ3RoIHplcm8KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoZmlsZW5vKCksIDAsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgbm90IGluIF9yZWFkeV9lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG92X2xpc3QuYXBwZW5kKG92KQorICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbb3YuZXZlbnRdID0gbworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBvLmZpbGVubygpIGlzIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVyciA9PSAwIHRoZW4gdGhlcmUgaXMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBwaXBlLCBidXQgaXQgSEFTIE5PVCBiZWVuIGNvbnN1bWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisKKyAgICAgICAgICAgIHJlYWR5X2hhbmRsZXMgPSBfZXhoYXVzdGl2ZV93YWl0KHdhaXRoYW5kbGVfdG9fb2JqLmtleXMoKSwgdGltZW91dCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgcmVxdWVzdCB0aGF0IG92ZXJsYXBwZWQgcmVhZHMgc3RvcAorICAgICAgICAgICAgZm9yIG92IGluIG92X2xpc3Q6CisgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKworICAgICAgICAgICAgIyB3YWl0IGZvciBhbGwgb3ZlcmxhcHBlZCByZWFkcyB0byBzdG9wCisgICAgICAgICAgICBmb3Igb3YgaW4gb3ZfbGlzdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF8sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgaWYgZXJyICE9IF93aW5hcGkuRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIG8gPSB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0KKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIGEgemVybyBsZW5ndGggbWVzc2FnZSBIQVMgYmVlbiBjb25zdW1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobywgJ19nb3RfZW1wdHlfbWVzc2FnZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2dvdF9lbXB0eV9tZXNzYWdlID0gVHJ1ZQorCisgICAgICAgIHJlYWR5X29iamVjdHMudXBkYXRlKHdhaXRoYW5kbGVfdG9fb2JqW2hdIGZvciBoIGluIHJlYWR5X2hhbmRsZXMpCisgICAgICAgIHJldHVybiBbbyBmb3IgbyBpbiBvYmplY3RfbGlzdCBpZiBvIGluIHJlYWR5X29iamVjdHNdCisKK2Vsc2U6CisKKyAgICBkZWYgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIFdhaXQgdGlsbCBhbiBvYmplY3QgaW4gb2JqZWN0X2xpc3QgaXMgcmVhZHkvcmVhZGFibGUuCisKKyAgICAgICAgUmV0dXJucyBsaXN0IG9mIHRob3NlIG9iamVjdHMgaW4gb2JqZWN0X2xpc3Qgd2hpY2ggYXJlIHJlYWR5L3JlYWRhYmxlLgorICAgICAgICAnJycKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCAwKVswXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Quc2VsZWN0KG9iamVjdF9saXN0LCBbXSwgW10sIHRpbWVvdXQpWzBdCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCisKKyMKKyMgTWFrZSBjb25uZWN0aW9uIGFuZCBzb2NrZXQgb2JqZWN0cyBzaGFyYWJsZSBpZiBwb3NzaWJsZQorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjdGlvbi5yZWR1Y2Vfc29ja2V0KQorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjdGlvbi5yZWR1Y2VfY29ubmVjdGlvbikKKyAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihQaXBlQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9waXBlX2Nvbm5lY3Rpb24pCitlbHNlOgorICAgIHRyeToKKyAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBGb3JraW5nUGlja2xlci5yZWdpc3Rlcihzb2NrZXQuc29ja2V0LCByZWR1Y3Rpb24ucmVkdWNlX3NvY2tldCkKKyAgICAgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9jb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKaW5kZXggMTAxYzNjYi4uZTMxZmM2MSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CkBAIC0zNSw3ICszNSw3IEBACiBfX2FsbF9fID0gWwogICAgICdQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nLCAnZnJlZXplX3N1cHBvcnQnLAogICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsCi0gICAgJ0V2ZW50JywgJ1F1ZXVlJywgJ01hbmFnZXInLCAnUGlwZScsICdQb29sJywgJ0pvaW5hYmxlUXVldWUnCisgICAgJ0V2ZW50JywgJ0JhcnJpZXInLCAnUXVldWUnLCAnTWFuYWdlcicsICdQaXBlJywgJ1Bvb2wnLCAnSm9pbmFibGVRdWV1ZScKICAgICBdCiAKICMKQEAgLTQ2LDEyICs0NiwxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBhcnJheQotaW1wb3J0IGl0ZXJ0b29scwogCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgVGltZW91dEVycm9yLCBjcHVfY291bnQKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmR1bW15LmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gdGhyZWFkaW5nIGltcG9ydCBMb2NrLCBSTG9jaywgU2VtYXBob3JlLCBCb3VuZGVkU2VtYXBob3JlCi1mcm9tIHRocmVhZGluZyBpbXBvcnQgRXZlbnQKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudCwgQ29uZGl0aW9uLCBCYXJyaWVyCiBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQogCiAjCkBAIC04NSwxNyArODMsNiBAQAogIwogIwogCi1jbGFzcyBDb25kaXRpb24odGhyZWFkaW5nLl9Db25kaXRpb24pOgotICAgICMgWFhYCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICAgICAgbm90aWZ5X2FsbCA9IHRocmVhZGluZy5fQ29uZGl0aW9uLm5vdGlmeV9hbGwuX19mdW5jX18KLSAgICBlbHNlOgotICAgICAgICBub3RpZnlfYWxsID0gdGhyZWFkaW5nLl9Db25kaXRpb24ubm90aWZ5X2FsbAotCi0jCi0jCi0jCi0KIFByb2Nlc3MgPSBEdW1teVByb2Nlc3MKIGN1cnJlbnRfcHJvY2VzcyA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZAogY3VycmVudF9wcm9jZXNzKCkuX2NoaWxkcmVuID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKaW5kZXggYWYxMDU3OS4uODc0ZWM4ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQpAQCAtNTMsNiArNTMsMTIgQEAKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fYmFja2xvZ19xdWV1ZSkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzKToKICAgICBfaW4sIF9vdXQgPSBRdWV1ZSgpLCBRdWV1ZSgpCkBAIC04NSwzICs5MSw5IEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKaW5kZXggYmM4YWM0NC4uYWY2NTgwZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogaW1wb3J0IG9zCkBAIC0zOCw3ICsxMyw3IEBACiAKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB1dGlsLCBwcm9jZXNzCiAKLV9fYWxsX18gPSBbJ1BvcGVuJywgJ2Fzc2VydF9zcGF3bmluZycsICdleGl0JywgJ2R1cGxpY2F0ZScsICdjbG9zZScsICdGb3JraW5nUGlja2xlciddCitfX2FsbF9fID0gWydQb3BlbicsICdhc3NlcnRfc3Bhd25pbmcnLCAnZHVwbGljYXRlJywgJ2Nsb3NlJywgJ0ZvcmtpbmdQaWNrbGVyJ10KIAogIwogIyBDaGVjayB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBpcyBzcGF3bmluZyBhIGNoaWxkIHByb2Nlc3MKQEAgLTU1LDE4ICszMCwxOCBAQAogIyBUcnkgbWFraW5nIHNvbWUgY2FsbGFibGUgdHlwZXMgcGlja2xhYmxlCiAjCiAKLWZyb20gcGlja2xlIGltcG9ydCBfUGlja2xlciBhcyBQaWNrbGVyCitmcm9tIHBpY2tsZSBpbXBvcnQgUGlja2xlcgorZnJvbSBjb3B5cmVnIGltcG9ydCBkaXNwYXRjaF90YWJsZQorCiBjbGFzcyBGb3JraW5nUGlja2xlcihQaWNrbGVyKToKLSAgICBkaXNwYXRjaCA9IFBpY2tsZXIuZGlzcGF0Y2guY29weSgpCisgICAgX2V4dHJhX3JlZHVjZXJzID0ge30KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBQaWNrbGVyLl9faW5pdF9fKHNlbGYsICphcmdzKQorICAgICAgICBzZWxmLmRpc3BhdGNoX3RhYmxlID0gZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgICAgIHNlbGYuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHNlbGYuX2V4dHJhX3JlZHVjZXJzKQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiByZWdpc3RlcihjbHMsIHR5cGUsIHJlZHVjZSk6Ci0gICAgICAgIGRlZiBkaXNwYXRjaGVyKHNlbGYsIG9iaik6Ci0gICAgICAgICAgICBydiA9IHJlZHVjZShvYmopCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJ2LCBzdHIpOgotICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwob2JqLCBydikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShvYmo9b2JqLCAqcnYpCi0gICAgICAgIGNscy5kaXNwYXRjaFt0eXBlXSA9IGRpc3BhdGNoZXIKKyAgICAgICAgY2xzLl9leHRyYV9yZWR1Y2Vyc1t0eXBlXSA9IHJlZHVjZQogCiBkZWYgX3JlZHVjZV9tZXRob2QobSk6CiAgICAgaWYgbS5fX3NlbGZfXyBpcyBOb25lOgpAQCAtMTAwLDkgKzc1LDYgQEAKICMKIAogaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6Ci0gICAgaW1wb3J0IHRpbWUKLQotICAgIGV4aXQgPSBvcy5fZXhpdAogICAgIGR1cGxpY2F0ZSA9IG9zLmR1cAogICAgIGNsb3NlID0gb3MuY2xvc2UKIApAQCAtMTE4LDE0ICs5MCwyMyBAQAogICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCiAKKyAgICAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSByCisKICAgICAgICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCiAgICAgICAgICAgICBpZiBzZWxmLnBpZCA9PSAwOgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCiAgICAgICAgICAgICAgICAgaWYgJ3JhbmRvbScgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByYW5kb20KICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnNlZWQoKQogICAgICAgICAgICAgICAgIGNvZGUgPSBwcm9jZXNzX29iai5fYm9vdHN0cmFwKCkKICAgICAgICAgICAgICAgICBvcy5fZXhpdChjb2RlKQogCisgICAgICAgICAgICAjIGB3YCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBleGl0cywgYXQgd2hpY2ggcG9pbnQgYHJgCisgICAgICAgICAgICAjIHdpbGwgYmVjb21lIHJlYWR5IGZvciByZWFkaW5nICh1c2luZyBlLmcuIHNlbGVjdCgpKS4KKyAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAociwpKQorCiAgICAgICAgIGRlZiBwb2xsKHNlbGYsIGZsYWc9b3MuV05PSEFORyk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDMsMjYgKzEyNCwyMCBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbCgwKQotICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgICAgIGRlbGF5ID0gMC4wMDA1Ci0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYucG9sbCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBkZWxheSA9IG1pbihkZWxheSAqIDIsIHJlbWFpbmluZywgMC4wNSkKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKGRlbGF5KQotICAgICAgICAgICAgcmV0dXJuIHJlcworICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgd2FpdChbc2VsZi5zZW50aW5lbF0sIHRpbWVvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJsb2NrIGlmIHdhaXQoKSByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbChvcy5XTk9IQU5HIGlmIHRpbWVvdXQgPT0gMC4wIGVsc2UgMCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXQodGltZW91dD0wLjEpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCkBAIC0xNzcsMTIgKzE1Miw5IEBACiBlbHNlOgogICAgIGltcG9ydCBfdGhyZWFkCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcwotICAgIGltcG9ydCB0aW1lCisgICAgaW1wb3J0IF93aW5hcGkKIAotICAgIGZyb20gcGlja2xlIGltcG9ydCBkdW1wLCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCi0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMiwgQ29ubmVjdGlvbiwgUGlwZUNvbm5lY3Rpb24KLSAgICBmcm9tIC51dGlsIGltcG9ydCBGaW5hbGl6ZQorICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCiAKICAgICBkZWYgZHVtcChvYmosIGZpbGUsIHByb3RvY29sPU5vbmUpOgogICAgICAgICBGb3JraW5nUGlja2xlcihmaWxlLCBwcm90b2NvbCkuZHVtcChvYmopCkBAIC0xOTUsOCArMTY3LDcgQEAKICAgICBXSU5FWEUgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpKQogICAgIFdJTlNFUlZJQ0UgPSBzeXMuZXhlY3V0YWJsZS5sb3dlcigpLmVuZHN3aXRoKCJweXRob25zZXJ2aWNlLmV4ZSIpCiAKLSAgICBleGl0ID0gd2luMzIuRXhpdFByb2Nlc3MKLSAgICBjbG9zZSA9IHdpbjMyLkNsb3NlSGFuZGxlCisgICAgY2xvc2UgPSBfd2luYXBpLkNsb3NlSGFuZGxlCiAKICAgICAjCiAgICAgIyBfcHl0aG9uX2V4ZSBpcyB0aGUgYXNzdW1lZCBwYXRoIHRvIHRoZSBweXRob24gZXhlY3V0YWJsZS4KQEAgLTIxOCwxMSArMTg5LDExIEBACiAKICAgICBkZWYgZHVwbGljYXRlKGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3M9Tm9uZSwgaW5oZXJpdGFibGU9RmFsc2UpOgogICAgICAgICBpZiB0YXJnZXRfcHJvY2VzcyBpcyBOb25lOgotICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpCi0gICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoCi0gICAgICAgICAgICBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAotICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF9zdWJwcm9jZXNzLkRVUExJQ0FURV9TQU1FX0FDQ0VTUwotICAgICAgICAgICAgKS5EZXRhY2goKQorICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCkKKyAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAorICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTCisgICAgICAgICAgICApCiAKICAgICAjCiAgICAgIyBXZSBkZWZpbmUgYSBQb3BlbiBjbGFzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZnJvbSBzdWJwcm9jZXNzLCBidXQKQEAgLTIzNiw2ICsyMDcsOSBAQAogICAgICAgICBfdGxzID0gX3RocmVhZC5fbG9jYWwoKQogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CisgICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGdldF9jb21tYW5kX2xpbmUoKSkKKyAgICAgICAgICAgIHByZXBfZGF0YSA9IGdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQorCiAgICAgICAgICAgICAjIGNyZWF0ZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggY2hpbGQKICAgICAgICAgICAgIHJmZCwgd2ZkID0gb3MucGlwZSgpCiAKQEAgLTI0MywzMCArMjE3LDMwIEBACiAgICAgICAgICAgICByaGFuZGxlID0gZHVwbGljYXRlKG1zdmNydC5nZXRfb3NmaGFuZGxlKHJmZCksIGluaGVyaXRhYmxlPVRydWUpCiAgICAgICAgICAgICBvcy5jbG9zZShyZmQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgcHJvY2VzcwotICAgICAgICAgICAgY21kID0gZ2V0X2NvbW1hbmRfbGluZSgpICsgW3JoYW5kbGVdCi0gICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGNtZCkKLSAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKAotICAgICAgICAgICAgICAgIF9weXRob25fZXhlLCBjbWQsIE5vbmUsIE5vbmUsIDEsIDAsIE5vbmUsIE5vbmUsIE5vbmUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBodC5DbG9zZSgpCi0gICAgICAgICAgICBjbG9zZShyaGFuZGxlKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdmZCwgJ3diJywgY2xvc2VmZD1UcnVlKSBhcyB0b19jaGlsZDoKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IHByb2Nlc3MKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfd2luYXBpLkNyZWF0ZVByb2Nlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBfcHl0aG9uX2V4ZSwgY21kICsgKCcgJXMnICUgcmhhbmRsZSksCisgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLCAxLCAwLCBOb25lLCBOb25lLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UocmhhbmRsZSkKIAotICAgICAgICAgICAgIyBzZXQgYXR0cmlidXRlcyBvZiBzZWxmCi0gICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAotICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIHNlbGYKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAorICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSBpbnQoaHApCiAKLSAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAotICAgICAgICAgICAgcHJlcF9kYXRhID0gZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCi0gICAgICAgICAgICB0b19jaGlsZCA9IG9zLmZkb3Blbih3ZmQsICd3YicpCi0gICAgICAgICAgICBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlID0gaW50KGhwKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgICAgICBkdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKLSAgICAgICAgICAgICAgICB0b19jaGlsZC5jbG9zZSgpCisgICAgICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCisgICAgICAgICAgICAgICAgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZSA9IGludChocCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKKyAgICAgICAgICAgICAgICAgICAgZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiB0aHJlYWRfaXNfc3Bhd25pbmcoKToKQEAgLTI3OSwxMyArMjUzLDEzIEBACiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIG1zZWNzID0gX3N1YnByb2Nlc3MuSU5GSU5JVEUKKyAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBfd2luYXBpLklORklOSVRFCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBtYXgoMCwgaW50KHRpbWVvdXQgKiAxMDAwICsgMC41KSkKIAotICAgICAgICAgICAgICAgIHJlcyA9IF9zdWJwcm9jZXNzLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQotICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wOgotICAgICAgICAgICAgICAgICAgICBjb2RlID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgICAgICAgICByZXMgPSBfd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQorICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfd2luYXBpLldBSVRfT0JKRUNUXzA6CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gVEVSTUlOQVRFOgogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IC1zaWduYWwuU0lHVEVSTQogICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBjb2RlCkBAIC0yOTgsOSArMjcyLDkgQEAKICAgICAgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhpbnQoc2VsZi5faGFuZGxlKSwgVEVSTUlOQVRFKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKGludChzZWxmLl9oYW5kbGUpLCBURVJNSU5BVEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTEuMCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAjCkBAIC0zNTAsNyArMzI0LDggQEAKICAgICAgICAgICAgIHJldHVybiBbc3lzLmV4ZWN1dGFibGUsICctLW11bHRpcHJvY2Vzc2luZy1mb3JrJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByb2cgPSAnZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgbWFpbjsgbWFpbigpJwotICAgICAgICAgICAgcmV0dXJuIFtfcHl0aG9uX2V4ZSwgJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQorICAgICAgICAgICAgb3B0cyA9IHV0aWwuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgICAgICByZXR1cm4gW19weXRob25fZXhlXSArIG9wdHMgKyBbJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQogCiAKICAgICBkZWYgbWFpbigpOgpAQCAtMzcyLDcgKzM0Nyw3IEBACiAgICAgICAgIGZyb21fcGFyZW50LmNsb3NlKCkKIAogICAgICAgICBleGl0Y29kZSA9IHNlbGYuX2Jvb3RzdHJhcCgpCi0gICAgICAgIGV4aXQoZXhpdGNvZGUpCisgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQogCiAKICAgICBkZWYgZ2V0X3ByZXBhcmF0aW9uX2RhdGEobmFtZSk6CkBAIC00MDUsMjIgKzM4MCw2IEBACiAKICAgICAgICAgcmV0dXJuIGQKIAotICAgICMKLSAgICAjIE1ha2UgKFBpcGUpQ29ubmVjdGlvbiBwaWNrbGFibGUKLSAgICAjCi0KLSAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgICAgIGlmIG5vdCBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCAlcyBvYmplY3RzIGNhbiBvbmx5IGJlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3Nlc1xuJwotICAgICAgICAgICAgICAgICd1c2luZyBpbmhlcml0YW5jZScgJSB0eXBlKGNvbm4pLl9fbmFtZV9fCi0gICAgICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gdHlwZShjb25uKSwgKFBvcGVuLmR1cGxpY2F0ZV9mb3JfY2hpbGQoY29ubi5maWxlbm8oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKLQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQogIwogIyBQcmVwYXJlIGN1cnJlbnQgcHJvY2VzcwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDBhMjVlZjAuLjRlOTNjMTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTQsMzcgKzQsMTEgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgYmlzZWN0CiBpbXBvcnQgbW1hcAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKQEAgLTUyLDcgKzI2LDcgQEAKIAogaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgaW1wb3J0IF93aW5hcGkKIAogICAgIGNsYXNzIEFyZW5hKG9iamVjdCk6CiAKQEAgLTYyLDcgKzM2LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgICAgIHNlbGYubmFtZSA9ICdweW0tJWQtJWQnICUgKG9zLmdldHBpZCgpLCBuZXh0KEFyZW5hLl9jb3VudGVyKSkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IHdpbjMyLkdldExhc3RFcnJvcigpID09IDAsICd0YWduYW1lIGFscmVhZHkgaW4gdXNlJworICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gMCwgJ3RhZ25hbWUgYWxyZWFkeSBpbiB1c2UnCiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgpAQCAtNzIsNyArNDYsNyBAQAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAgICAgIHNlbGYuc2l6ZSwgc2VsZi5uYW1lID0gc2VsZi5fc3RhdGUgPSBzdGF0ZQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgd2luMzIuR2V0TGFzdEVycm9yKCkgPT0gd2luMzIuRVJST1JfQUxSRUFEWV9FWElTVFMKKyAgICAgICAgICAgIGFzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IF93aW5hcGkuRVJST1JfQUxSRUFEWV9FWElTVFMKIAogZWxzZToKIApAQCAtMjMxLDcgKzIwNSw3IEBACiAgICAgICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQogCiAjCi0jIENsYXNzIHJlcHJlc2VudGluZyBhIGNodW5rIG9mIGFuIG1tYXAgLS0gY2FuIGJlIGluaGVyaXRlZAorIyBDbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBvZiBhbiBtbWFwIC0tIGNhbiBiZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2VzcwogIwogCiBjbGFzcyBCdWZmZXJXcmFwcGVyKG9iamVjdCk6CkBAIC0yNDQsMTEgKzIxOCw2IEBACiAgICAgICAgIHNlbGYuX3N0YXRlID0gKGJsb2NrLCBzaXplKQogICAgICAgICBGaW5hbGl6ZShzZWxmLCBCdWZmZXJXcmFwcGVyLl9oZWFwLmZyZWUsIGFyZ3M9KGJsb2NrLCkpCiAKLSAgICBkZWYgZ2V0X2FkZHJlc3Moc2VsZik6CisgICAgZGVmIGNyZWF0ZV9tZW1vcnl2aWV3KHNlbGYpOgogICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSwgc2l6ZSA9IHNlbGYuX3N0YXRlCi0gICAgICAgIGFkZHJlc3MsIGxlbmd0aCA9IF9tdWx0aXByb2Nlc3NpbmcuYWRkcmVzc19vZl9idWZmZXIoYXJlbmEuYnVmZmVyKQotICAgICAgICBhc3NlcnQgc2l6ZSA8PSBsZW5ndGgKLSAgICAgICAgcmV0dXJuIGFkZHJlc3MgKyBzdGFydAotCi0gICAgZGVmIGdldF9zaXplKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGVbMV0KKyAgICAgICAgcmV0dXJuIG1lbW9yeXZpZXcoYXJlbmEuYnVmZmVyKVtzdGFydDpzdGFydCtzaXplXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggNTU4OGVhZC4uMWFiMTQ3ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC01LDMyICs1LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsgJ0Jhc2VNYW5hZ2VyJywgJ1N5bmNNYW5hZ2VyJywgJ0Jhc2VQcm94eScsICdUb2tlbicgXQpAQCAtMzksMTkgKzE0LDE2IEBACiAjIEltcG9ydHMKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgd2Vha3JlZgogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IGFycmF5CiBpbXBvcnQgcXVldWUKIAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMKLWZyb20gcGlja2xlIGltcG9ydCBQaWNrbGluZ0Vycm9yCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4sIFBvb2wsIHV0aWwsIGNvbm5lY3Rpb24KIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IEF1dGhlbnRpY2F0aW9uU3RyaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBleGl0LCBQb3BlbiwgYXNzZXJ0X3NwYXduaW5nLCBGb3JraW5nUGlja2xlcgotZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgRmluYWxpemUsIGluZm8KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IFBvcGVuLCBGb3JraW5nUGlja2xlcgorZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKICMKICMgUmVnaXN0ZXIgc29tZSB0aGluZ3MgZm9yIHBpY2tsaW5nCkBAIC0xNjgsMjggKzE0MCwzOCBAQAogICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnQgPSB7fQogICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLlJMb2NrKCkKLSAgICAgICAgc2VsZi5zdG9wID0gMAogCiAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIHNlcnZlciBmb3JldmVyCiAgICAgICAgICcnJworICAgICAgICBzZWxmLnN0b3BfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBjdXJyZW50X3Byb2Nlc3MoKS5fbWFuYWdlcl9zZXJ2ZXIgPSBzZWxmCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjY2VwdGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5hY2NlcHRlcikKKyAgICAgICAgICAgIGFjY2VwdGVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIGFjY2VwdGVyLnN0YXJ0KCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKLSAgICAgICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnN0b3BfZXZlbnQuaXNfc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC53YWl0KDEpCiAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnN0b3AgPSA5OTkKLSAgICAgICAgICAgIHNlbGYubGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKKyAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXNldHRpbmcgc3Rkb3V0LCBzdGRlcnInKQorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuX19zdGRvdXRfXworICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXworICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGRlZiBhY2NlcHRlcihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKKyAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgdC5zdGFydCgpCiAKICAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMjM2LDcgKzIxOCw3IEBACiAgICAgICAgIHNlbmQgPSBjb25uLnNlbmQKICAgICAgICAgaWRfdG9fb2JqID0gc2VsZi5pZF90b19vYmoKIAotICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wOgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wX2V2ZW50LmlzX3NldCgpOgogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKQEAgLTM0NiwzMiArMzI4LDEzIEBACiAgICAgICAgIFNodXRkb3duIHRoaXMgcHJvY2VzcwogICAgICAgICAnJycKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ21hbmFnZXIgcmVjZWl2ZWQgc2h1dGRvd24gbWVzc2FnZScpCi0gICAgICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQotCi0gICAgICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKLSAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVzZXR0aW5nIHN0ZG91dCwgc3RkZXJyJykKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotCi0gICAgICAgICAgICAgICAgdXRpbC5fcnVuX2ZpbmFsaXplcnMoMCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAudGVybWluYXRlKCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAuam9pbigpCi0KLSAgICAgICAgICAgICAgICB1dGlsLl9ydW5fZmluYWxpemVycygpCi0gICAgICAgICAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIGV4aXRpbmcgd2l0aCBleGl0Y29kZSAwJykKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICB1dGlsLmRlYnVnKCdtYW5hZ2VyIHJlY2VpdmVkIHNodXRkb3duIG1lc3NhZ2UnKQorICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGV4aXQoMCkKKyAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC5zZXQoKQogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBjLCB0eXBlaWQsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAnJycKQEAgLTQ4MywxMCArNDQ2LDYgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fTGlzdGVuZXIsIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXQogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiB0eXBlKHNlbGYpLmZyb21fYWRkcmVzcywgXAotICAgICAgICAgICAgICAgKHNlbGYuX2FkZHJlc3MsIHNlbGYuX2F1dGhrZXksIHNlbGYuX3NlcmlhbGl6ZXIpCi0KICAgICBkZWYgZ2V0X3NlcnZlcihzZWxmKToKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybiBzZXJ2ZXIgb2JqZWN0IHdpdGggc2VydmVfZm9yZXZlcigpIG1ldGhvZCBhbmQgYWRkcmVzcyBhdHRyaWJ1dGUKQEAgLTU3Niw3ICs1MzUsMTAgQEAKICAgICAgICAgJycnCiAgICAgICAgIEpvaW4gdGhlIG1hbmFnZXIgcHJvY2VzcyAoaWYgaXQgaGFzIGJlZW4gc3Bhd25lZCkKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Muam9pbih0aW1lb3V0KQorICAgICAgICBpZiBzZWxmLl9wcm9jZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2Vzcy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25lCiAKICAgICBkZWYgX2RlYnVnX2luZm8oc2VsZik6CiAgICAgICAgICcnJwpAQCAtNTk5LDYgKzU2MSw5IEBACiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLklOSVRJQUw6CisgICAgICAgICAgICBzZWxmLnN0YXJ0KCkKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNUQVJURUQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKQEAgLTYyMCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTAuMikKKyAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTEuMCkKICAgICAgICAgICAgIGlmIHByb2Nlc3MuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICB1dGlsLmluZm8oJ21hbmFnZXIgc3RpbGwgYWxpdmUnKQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIocHJvY2VzcywgJ3Rlcm1pbmF0ZScpOgpAQCAtOTgyLDggKzk0Nyw5IEBACiAKIGNsYXNzIEFjcXVpcmVyUHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2FjcXVpcmUnLCAncmVsZWFzZScpCi0gICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhY3F1aXJlJywgKGJsb2NraW5nLCkpCisgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgYXJncyA9IChibG9ja2luZywpIGlmIHRpbWVvdXQgaXMgTm9uZSBlbHNlIChibG9ja2luZywgdGltZW91dCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2FjcXVpcmUnLCBhcmdzKQogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgncmVsZWFzZScpCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTEwMDAsNiArOTY2LDI0IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdub3RpZnknKQogICAgIGRlZiBub3RpZnlfYWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnbm90aWZ5X2FsbCcpCisgICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQorICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQorICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAKIGNsYXNzIEV2ZW50UHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2lzX3NldCcsICdzZXQnLCAnY2xlYXInLCAnd2FpdCcpCkBAIC0xMDEyLDYgKzk5NiwyNiBAQAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd3YWl0JywgKHRpbWVvdXQsKSkKIAorCitjbGFzcyBCYXJyaWVyUHJveHkoQmFzZVByb3h5KToKKyAgICBfZXhwb3NlZF8gPSAoJ19fZ2V0YXR0cmlidXRlX18nLCAnd2FpdCcsICdhYm9ydCcsICdyZXNldCcpCisgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3dhaXQnLCAodGltZW91dCwpKQorICAgIGRlZiBhYm9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2Fib3J0JykKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZXNldCcpCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRpZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCdwYXJ0aWVzJywpKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuX3dhaXRpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCduX3dhaXRpbmcnLCkpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyb2tlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ2Jyb2tlbicsKSkKKworCiBjbGFzcyBOYW1lc3BhY2VQcm94eShCYXNlUHJveHkpOgogICAgIF9leHBvc2VkXyA9ICgnX19nZXRhdHRyaWJ1dGVfXycsICdfX3NldGF0dHJfXycsICdfX2RlbGF0dHJfXycpCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGtleSk6CkBAIC0xMDQxLDEyICsxMDQ1LDExIEBACiAKIAogQmFzZUxpc3RQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0Jhc2VMaXN0UHJveHknLCAoCi0gICAgJ19fYWRkX18nLCAnX19jb250YWluc19fJywgJ19fZGVsaXRlbV9fJywgJ19fZGVsc2xpY2VfXycsCi0gICAgJ19fZ2V0aXRlbV9fJywgJ19fZ2V0c2xpY2VfXycsICdfX2xlbl9fJywgJ19fbXVsX18nLAotICAgICdfX3JldmVyc2VkX18nLCAnX19ybXVsX18nLCAnX19zZXRpdGVtX18nLCAnX19zZXRzbGljZV9fJywKKyAgICAnX19hZGRfXycsICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19nZXRpdGVtX18nLCAnX19sZW5fXycsCisgICAgJ19fbXVsX18nLCAnX19yZXZlcnNlZF9fJywgJ19fcm11bF9fJywgJ19fc2V0aXRlbV9fJywKICAgICAnYXBwZW5kJywgJ2NvdW50JywgJ2V4dGVuZCcsICdpbmRleCcsICdpbnNlcnQnLCAncG9wJywgJ3JlbW92ZScsCiAgICAgJ3JldmVyc2UnLCAnc29ydCcsICdfX2ltdWxfXycKLSAgICApKSAgICAgICAgICAgICAgICAgICMgWFhYIF9fZ2V0c2xpY2VfXyBhbmQgX19zZXRzbGljZV9fIHVubmVlZGVkIGluIFB5My4wCisgICAgKSkKIGNsYXNzIExpc3RQcm94eShCYXNlTGlzdFByb3h5KToKICAgICBkZWYgX19pYWRkX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLl9jYWxsbWV0aG9kKCdleHRlbmQnLCAodmFsdWUsKSkKQEAgLTEwNjQsMTcgKzEwNjcsMTggQEAKIAogCiBBcnJheVByb3h5ID0gTWFrZVByb3h5VHlwZSgnQXJyYXlQcm94eScsICgKLSAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2dldHNsaWNlX18nLCAnX19zZXRzbGljZV9fJwotICAgICkpICAgICAgICAgICAgICAgICAgIyBYWFggX19nZXRzbGljZV9fIGFuZCBfX3NldHNsaWNlX18gdW5uZWVkZWQgaW4gUHkzLjAKKyAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycKKyAgICApKQogCiAKIFBvb2xQcm94eSA9IE1ha2VQcm94eVR5cGUoJ1Bvb2xQcm94eScsICgKICAgICAnYXBwbHknLCAnYXBwbHlfYXN5bmMnLCAnY2xvc2UnLCAnaW1hcCcsICdpbWFwX3Vub3JkZXJlZCcsICdqb2luJywKLSAgICAnbWFwJywgJ21hcF9hc3luYycsICd0ZXJtaW5hdGUnCisgICAgJ21hcCcsICdtYXBfYXN5bmMnLCAnc3Rhcm1hcCcsICdzdGFybWFwX2FzeW5jJywgJ3Rlcm1pbmF0ZScKICAgICApKQogUG9vbFByb3h5Ll9tZXRob2RfdG9fdHlwZWlkXyA9IHsKICAgICAnYXBwbHlfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAogICAgICdtYXBfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAorICAgICdzdGFybWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICAnaW1hcCc6ICdJdGVyYXRvcicsCiAgICAgJ2ltYXBfdW5vcmRlcmVkJzogJ0l0ZXJhdG9yJwogICAgIH0KQEAgLTExMDMsNiArMTEwNyw3IEBACiBTeW5jTWFuYWdlci5yZWdpc3RlcignQm91bmRlZFNlbWFwaG9yZScsIHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlLAogICAgICAgICAgICAgICAgICAgICAgQWNxdWlyZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdDb25kaXRpb24nLCB0aHJlYWRpbmcuQ29uZGl0aW9uLCBDb25kaXRpb25Qcm94eSkKK1N5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdCYXJyaWVyJywgdGhyZWFkaW5nLkJhcnJpZXIsIEJhcnJpZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdQb29sJywgUG9vbCwgUG9vbFByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ2xpc3QnLCBsaXN0LCBMaXN0UHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignZGljdCcsIGRpY3QsIERpY3RQcm94eSkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA3NTAyZmY4Li5lYzU3OTM5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQb29sJ10KQEAgLTY0LDYgKzM5LDkgQEAKIGRlZiBtYXBzdGFyKGFyZ3MpOgogICAgIHJldHVybiBsaXN0KG1hcCgqYXJncykpCiAKK2RlZiBzdGFybWFwc3RhcihhcmdzKToKKyAgICByZXR1cm4gbGlzdChpdGVydG9vbHMuc3Rhcm1hcChhcmdzWzBdLCBhcmdzWzFdKSkKKwogIwogIyBDb2RlIHJ1biBieSB3b3JrZXIgcHJvY2Vzc2VzCiAjCkBAIC0yNDcsMTQgKzIyNSwzMCBAQAogICAgICAgICBBcHBseSBgZnVuY2AgdG8gZWFjaCBlbGVtZW50IGluIGBpdGVyYWJsZWAsIGNvbGxlY3RpbmcgdGhlIHJlc3VsdHMKICAgICAgICAgaW4gYSBsaXN0IHRoYXQgaXMgcmV0dXJuZWQuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCi0gICAgICAgIHJldHVybiBzZWxmLm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplKS5nZXQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcChzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgTGlrZSBgbWFwKClgIG1ldGhvZCBidXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBgaXRlcmFibGVgIGFyZSBleHBlY3RlZCB0bworICAgICAgICBiZSBpdGVyYWJsZXMgYXMgd2VsbCBhbmQgd2lsbCBiZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuIEhlbmNlCisgICAgICAgIGBmdW5jYCBhbmQgKGEsIGIpIGJlY29tZXMgZnVuYyhhLCBiKS4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcF9hc3luYyhzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCisgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBzdGFybWFwKClgIG1ldGhvZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssIGVycm9yX2NhbGxiYWNrKQogCiAgICAgZGVmIGltYXAoc2VsZiwgZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZT0xKToKICAgICAgICAgJycnCiAgICAgICAgIEVxdWl2YWxlbnQgb2YgYG1hcCgpYCAtLSBjYW4gYmUgTVVDSCBzbG93ZXIgdGhhbiBgUG9vbC5tYXAoKWAuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgIHJlc3VsdCA9IElNYXBJdGVyYXRvcihzZWxmLl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQpAQCAtMjcyLDcgKzI2Niw4IEBACiAgICAgICAgICcnJwogICAgICAgICBMaWtlIGBpbWFwKClgIG1ldGhvZCBidXQgb3JkZXJpbmcgb2YgcmVzdWx0cyBpcyBhcmJpdHJhcnkuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgIHJlc3VsdCA9IElNYXBVbm9yZGVyZWRJdGVyYXRvcihzZWxmLl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQpAQCAtMjkxLDcgKzI4Niw4IEBACiAgICAgICAgICcnJwogICAgICAgICBBc3luY2hyb25vdXMgdmVyc2lvbiBvZiBgYXBwbHkoKWAgbWV0aG9kLgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBSVU46CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKICAgICAgICAgcmVzdWx0ID0gQXBwbHlSZXN1bHQoc2VsZi5fY2FjaGUsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjaykKICAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoWyhyZXN1bHQuX2pvYiwgTm9uZSwgZnVuYywgYXJncywga3dkcyldLCBOb25lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMzAxLDcgKzI5NywxNSBAQAogICAgICAgICAnJycKICAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYG1hcCgpYCBtZXRob2QuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIG1hcHN0YXIsIGNodW5rc2l6ZSkKKworICAgIGRlZiBfbWFwX2FzeW5jKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBtYXBwZXIsIGNodW5rc2l6ZT1Ob25lLCBjYWxsYmFjaz1Ob25lLAorICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gaW1wbGVtZW50IG1hcCwgc3Rhcm1hcCBhbmQgdGhlaXIgYXN5bmMgY291bnRlcnBhcnRzLgorICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9vbCBub3QgcnVubmluZyIpCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGl0ZXJhYmxlLCAnX19sZW5fXycpOgogICAgICAgICAgICAgaXRlcmFibGUgPSBsaXN0KGl0ZXJhYmxlKQogCkBAIC0zMTUsNyArMzE5LDcgQEAKICAgICAgICAgdGFza19iYXRjaGVzID0gUG9vbC5fZ2V0X3Rhc2tzKGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemUpCiAgICAgICAgIHJlc3VsdCA9IE1hcFJlc3VsdChzZWxmLl9jYWNoZSwgY2h1bmtzaXplLCBsZW4oaXRlcmFibGUpLCBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPWVycm9yX2NhbGxiYWNrKQotICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBtYXBzdGFyLCAoeCwpLCB7fSkKKyAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoKChyZXN1bHQuX2pvYiwgaSwgbWFwcGVyLCAoeCwpLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZSh0YXNrX2JhdGNoZXMpKSwgTm9uZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQKIApAQCAtNTE5LDYgKzUyMywxMiBAQAogICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnY2xlYW5pbmcgdXAgd29ya2VyICVkJyAlIHAucGlkKQogICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKKyAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQorCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuYXBwbHlfYXN5bmMoKWAKICMKQEAgLTUyNiwzMiArNTM2LDI2IEBACiBjbGFzcyBBcHBseVJlc3VsdChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhY2hlLCBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spOgotICAgICAgICBzZWxmLl9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbih0aHJlYWRpbmcuTG9jaygpKQorICAgICAgICBzZWxmLl9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuX2pvYiA9IG5leHQoam9iX2NvdW50ZXIpCiAgICAgICAgIHNlbGYuX2NhY2hlID0gY2FjaGUKLSAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQogICAgICAgICBzZWxmLl9jYWxsYmFjayA9IGNhbGxiYWNrCiAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrID0gZXJyb3JfY2FsbGJhY2sKICAgICAgICAgY2FjaGVbc2VsZi5fam9iXSA9IHNlbGYKIAogICAgIGRlZiByZWFkeShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWR5CisgICAgICAgIHJldHVybiBzZWxmLl9ldmVudC5pc19zZXQoKQogCiAgICAgZGVmIHN1Y2Nlc3NmdWwoc2VsZik6Ci0gICAgICAgIGFzc2VydCBzZWxmLl9yZWFkeQorICAgICAgICBhc3NlcnQgc2VsZi5yZWFkeSgpCiAgICAgICAgIHJldHVybiBzZWxmLl9zdWNjZXNzCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC53YWl0KHRpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICBzZWxmLl9ldmVudC53YWl0KHRpbWVvdXQpCiAKICAgICBkZWYgZ2V0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYud2FpdCh0aW1lb3V0KQotICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZHk6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWR5KCk6CiAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IKICAgICAgICAgaWYgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQpAQCAtNTY0LDEyICs1NjgsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrIGFuZCBub3Qgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAKICMKQEAgLTU4Niw3ICs1ODUsNyBAQAogICAgICAgICBzZWxmLl9jaHVua3NpemUgPSBjaHVua3NpemUKICAgICAgICAgaWYgY2h1bmtzaXplIDw9IDA6CiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IDAKLSAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgICAgIGRlbCBjYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IGxlbmd0aC8vY2h1bmtzaXplICsgYm9vbChsZW5ndGggJSBjaHVua3NpemUpCkBAIC02MDAsMjQgKzU5OSwxNCBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKIAogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmltYXAoKWAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQppbmRleCAzMjYyYjUwLi44OTM1MDdiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nXQpAQCAtOTIsMTIgKzY3LDE2IEBACiAgICAgJycnCiAgICAgX1BvcGVuID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwKKyAgICAgICAgICAgICAgICAgKiwgZGFlbW9uPU5vbmUpOgogICAgICAgICBhc3NlcnQgZ3JvdXAgaXMgTm9uZSwgJ2dyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93JwogICAgICAgICBjb3VudCA9IG5leHQoX2N1cnJlbnRfcHJvY2Vzcy5fY291bnRlcikKICAgICAgICAgc2VsZi5faWRlbnRpdHkgPSBfY3VycmVudF9wcm9jZXNzLl9pZGVudGl0eSArIChjb3VudCwpCiAgICAgICAgIHNlbGYuX2F1dGhrZXkgPSBfY3VycmVudF9wcm9jZXNzLl9hdXRoa2V5Ci0gICAgICAgIHNlbGYuX2RhZW1vbmljID0gX2N1cnJlbnRfcHJvY2Vzcy5fZGFlbW9uaWMKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gX2N1cnJlbnRfcHJvY2Vzcy5fZGFlbW9uaWMKICAgICAgICAgc2VsZi5fdGVtcGRpciA9IF9jdXJyZW50X3Byb2Nlc3MuX3RlbXBkaXIKICAgICAgICAgc2VsZi5fcGFyZW50X3BpZCA9IG9zLmdldHBpZCgpCiAgICAgICAgIHNlbGYuX3BvcGVuID0gTm9uZQpAQCAtMTMwLDYgKzEwOSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmcm9tIC5mb3JraW5nIGltcG9ydCBQb3BlbgogICAgICAgICBzZWxmLl9wb3BlbiA9IFBvcGVuKHNlbGYpCisgICAgICAgIHNlbGYuX3NlbnRpbmVsID0gc2VsZi5fcG9wZW4uc2VudGluZWwKICAgICAgICAgX2N1cnJlbnRfcHJvY2Vzcy5fY2hpbGRyZW4uYWRkKHNlbGYpCiAKICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgpAQCAtMjE2LDYgKzE5NiwxNyBAQAogCiAgICAgcGlkID0gaWRlbnQKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZW50aW5lbChzZWxmKToKKyAgICAgICAgJycnCisgICAgICAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciAoVW5peCkgb3IgaGFuZGxlIChXaW5kb3dzKSBzdWl0YWJsZSBmb3IKKyAgICAgICAgd2FpdGluZyBmb3IgcHJvY2VzcyB0ZXJtaW5hdGlvbi4KKyAgICAgICAgJycnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW50aW5lbAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9jZXNzIG5vdCBzdGFydGVkIikKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZiBpcyBfY3VycmVudF9wcm9jZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gJ3N0YXJ0ZWQnCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDUxZDk5MTIuLjM3MjcxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnXQpAQCAtMzksMTIgKzE0LDEyIEBACiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXRleGl0CiBpbXBvcnQgd2Vha3JlZgoraW1wb3J0IGVycm5vCiAKIGZyb20gcXVldWUgaW1wb3J0IEVtcHR5LCBGdWxsCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBpcGUKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBMb2NrLCBCb3VuZGVkU2VtYXBob3JlLCBTZW1hcGhvcmUsIENvbmRpdGlvbgogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZGVidWcsIGluZm8sIEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBhc3NlcnRfc3Bhd25pbmcKQEAgLTY3LDYgKzQyLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTG9jaygpCiAgICAgICAgIHNlbGYuX3NlbSA9IEJvdW5kZWRTZW1hcGhvcmUobWF4c2l6ZSkKKyAgICAgICAgIyBGb3IgdXNlIGJ5IGNvbmN1cnJlbnQuZnV0dXJlcworICAgICAgICBzZWxmLl9pZ25vcmVfZXBpcGUgPSBGYWxzZQogCiAgICAgICAgIHNlbGYuX2FmdGVyX2ZvcmsoKQogCkBAIC03NSwxMSArNTIsMTEgQEAKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQotICAgICAgICByZXR1cm4gKHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAorICAgICAgICByZXR1cm4gKHNlbGYuX2lnbm9yZV9lcGlwZSwgc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCiAgICAgICAgICAgICAgICAgc2VsZi5fcmxvY2ssIHNlbGYuX3dsb2NrLCBzZWxmLl9zZW0sIHNlbGYuX29waWQpCiAKICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKLSAgICAgICAgKHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAorICAgICAgICAoc2VsZi5faWdub3JlX2VwaXBlLCBzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKICAgICAgICAgIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaywgc2VsZi5fc2VtLCBzZWxmLl9vcGlkKSA9IHN0YXRlCiAgICAgICAgIHNlbGYuX2FmdGVyX2ZvcmsoKQogCkBAIC0xODIsNyArMTU5LDcgQEAKICAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgIHRhcmdldD1RdWV1ZS5fZmVlZCwKICAgICAgICAgICAgIGFyZ3M9KHNlbGYuX2J1ZmZlciwgc2VsZi5fbm90ZW1wdHksIHNlbGYuX3NlbmQsCi0gICAgICAgICAgICAgICAgICBzZWxmLl93bG9jaywgc2VsZi5fd3JpdGVyLmNsb3NlKSwKKyAgICAgICAgICAgICAgICAgIHNlbGYuX3dsb2NrLCBzZWxmLl93cml0ZXIuY2xvc2UsIHNlbGYuX2lnbm9yZV9lcGlwZSksCiAgICAgICAgICAgICBuYW1lPSdRdWV1ZUZlZWRlclRocmVhZCcKICAgICAgICAgICAgICkKICAgICAgICAgc2VsZi5fdGhyZWFkLmRhZW1vbiA9IFRydWUKQEAgLTIzMyw3ICsyMTAsNyBAQAogICAgICAgICAgICAgbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmQsIHdyaXRlbG9jaywgY2xvc2UpOgorICAgIGRlZiBfZmVlZChidWZmZXIsIG5vdGVtcHR5LCBzZW5kLCB3cml0ZWxvY2ssIGNsb3NlLCBpZ25vcmVfZXBpcGUpOgogICAgICAgICBkZWJ1Zygnc3RhcnRpbmcgdGhyZWFkIHRvIGZlZWQgZGF0YSB0byBwaXBlJykKICAgICAgICAgZnJvbSAudXRpbCBpbXBvcnQgaXNfZXhpdGluZwogCkBAIC0yNzUsNiArMjUyLDggQEAKICAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBpZ25vcmVfZXBpcGUgYW5kIGdldGF0dHIoZSwgJ2Vycm5vJywgMCkgPT0gZXJybm8uRVBJUEU6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIFNpbmNlIHRoaXMgcnVucyBpbiBhIGRhZW1vbiB0aHJlYWQgdGhlIHJlc291cmNlcyBpdCB1c2VzCiAgICAgICAgICAgICAjIG1heSBiZSBiZWNvbWUgdW51c2FibGUgd2hpbGUgdGhlIHByb2Nlc3MgaXMgY2xlYW5pbmcgdXAuCiAgICAgICAgICAgICAjIFdlIGlnbm9yZSBlcnJvcnMgd2hpY2ggaGFwcGVuIGFmdGVyIHRoZSBwcm9jZXNzIGhhcwpAQCAtMzU2LDYgKzMzNSw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciA9IFBpcGUoZHVwbGV4PUZhbHNlKQogICAgICAgICBzZWxmLl9ybG9jayA9IExvY2soKQorICAgICAgICBzZWxmLl9wb2xsID0gc2VsZi5fcmVhZGVyLnBvbGwKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICBzZWxmLl93bG9jayA9IE5vbmUKICAgICAgICAgZWxzZToKQEAgLTM2Myw3ICszNDMsNyBAQAogICAgICAgICBzZWxmLl9tYWtlX21ldGhvZHMoKQogCiAgICAgZGVmIGVtcHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX3JlYWRlci5wb2xsKCkKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9wb2xsKCkKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQppbmRleCA2ZTVlNWJjLi42NTZmYThmIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQpAQCAtNSw1MyArNSwyOSBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotX19hbGxfXyA9IFtdCitfX2FsbF9fID0gWydyZWR1Y2Vfc29ja2V0JywgJ3JlZHVjZV9jb25uZWN0aW9uJywgJ3NlbmRfaGFuZGxlJywgJ3JlY3ZfaGFuZGxlJ10KIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2lnbmFsCiAKLWltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBQb3BlbiwgZHVwbGljYXRlLCBjbG9zZSwgRm9ya2luZ1BpY2tsZXIKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGRlYnVnLCBzdWJfZGVidWcKLWZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IENsaWVudCwgTGlzdGVuZXIKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IGlzX2V4aXRpbmcsIHN1Yl93YXJuaW5nCiAKIAogIwogIwogIwogCi1pZiBub3Qoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IgaGFzYXR0cihfbXVsdGlwcm9jZXNzaW5nLCAncmVjdmZkJykpOgoraWYgbm90KHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIChoYXNhdHRyKHNvY2tldCwgJ0NNU0dfTEVOJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoc29ja2V0LCAnU0NNX1JJR0hUUycpKSk6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3BpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIG5vdCBzdXBwb3J0ZWQnKQogCiAjCkBAIC01OSwxNTcgKzM1LDI0NiBAQAogIwogCiBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBpbXBvcnQgX3N1YnByb2Nlc3MKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgIyBXaW5kb3dzCisgICAgX19hbGxfXyArPSBbJ3JlZHVjZV9waXBlX2Nvbm5lY3Rpb24nXQorICAgIGltcG9ydCBfd2luYXBpCiAKICAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgotICAgICAgICBwcm9jZXNzX2hhbmRsZSA9IHdpbjMyLk9wZW5Qcm9jZXNzKAotICAgICAgICAgICAgd2luMzIuUFJPQ0VTU19BTExfQUNDRVNTLCBGYWxzZSwgZGVzdGluYXRpb25fcGlkCi0gICAgICAgICAgICApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5ld19oYW5kbGUgPSBkdXBsaWNhdGUoaGFuZGxlLCBwcm9jZXNzX2hhbmRsZSkKLSAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfaGFuZGxlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2xvc2UocHJvY2Vzc19oYW5kbGUpCisgICAgICAgIGRoID0gRHVwSGFuZGxlKGhhbmRsZSwgX3dpbmFwaS5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MsIGRlc3RpbmF0aW9uX3BpZCkKKyAgICAgICAgY29ubi5zZW5kKGRoKQogCiAgICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgotICAgICAgICByZXR1cm4gY29ubi5yZWN2KCkKKyAgICAgICAgcmV0dXJuIGNvbm4ucmVjdigpLmRldGFjaCgpCiAKLWVsc2U6Ci0gICAgZGVmIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZSwgZGVzdGluYXRpb25fcGlkKToKLSAgICAgICAgX211bHRpcHJvY2Vzc2luZy5zZW5kZmQoY29ubi5maWxlbm8oKSwgaGFuZGxlKQorICAgIGNsYXNzIER1cEhhbmRsZShvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlLCBhY2Nlc3MsIHBpZD1Ob25lKToKKyAgICAgICAgICAgICMgZHVwbGljYXRlIGhhbmRsZSBmb3IgcHJvY2VzcyB3aXRoIGdpdmVuIHBpZAorICAgICAgICAgICAgaWYgcGlkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgICAgIHByb2MgPSBfd2luYXBpLk9wZW5Qcm9jZXNzKF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwgcGlkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgcHJvYywgYWNjZXNzLCBGYWxzZSwgMCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShwcm9jKQorICAgICAgICAgICAgc2VsZi5fYWNjZXNzID0gYWNjZXNzCisgICAgICAgICAgICBzZWxmLl9waWQgPSBwaWQKIAotICAgIGRlZiByZWN2X2hhbmRsZShjb25uKToKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKGNvbm4uZmlsZW5vKCkpCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICAjIHJldHJpZXZlIGhhbmRsZSBmcm9tIHByb2Nlc3Mgd2hpY2ggY3VycmVudGx5IG93bnMgaXQKKyAgICAgICAgICAgIGlmIHNlbGYuX3BpZCA9PSBvcy5nZXRwaWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCisgICAgICAgICAgICBwcm9jID0gX3dpbmFwaS5PcGVuUHJvY2Vzcyhfd2luYXBpLlBST0NFU1NfRFVQX0hBTkRMRSwgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9waWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBzZWxmLl9oYW5kbGUsIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWNjZXNzLCBGYWxzZSwgX3dpbmFwaS5EVVBMSUNBVEVfQ0xPU0VfU09VUkNFKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHByb2MpCiAKLSMKLSMgU3VwcG9ydCBmb3IgYSBwZXItcHJvY2VzcyBzZXJ2ZXIgdGhyZWFkIHdoaWNoIGNhY2hlcyBwaWNrbGVkIGhhbmRsZXMKLSMKKyAgICBjbGFzcyBEdXBTb2NrZXQob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2spOgorICAgICAgICAgICAgbmV3X3NvY2sgPSBzb2NrLmR1cCgpCisgICAgICAgICAgICBkZWYgc2VuZChjb25uLCBwaWQpOgorICAgICAgICAgICAgICAgIHNoYXJlID0gbmV3X3NvY2suc2hhcmUocGlkKQorICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhzaGFyZSkKKyAgICAgICAgICAgIHNlbGYuX2lkID0gcmVzb3VyY2Vfc2hhcmVyLnJlZ2lzdGVyKHNlbmQsIG5ld19zb2NrLmNsb3NlKQogCi1fY2FjaGUgPSBzZXQoKQorICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgY29ubiA9IHJlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaGFyZSA9IGNvbm4ucmVjdl9ieXRlcygpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5mcm9tc2hhcmUoc2hhcmUpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogCi1kZWYgX3Jlc2V0KG9iaik6Ci0gICAgZ2xvYmFsIF9sb2NrLCBfbGlzdGVuZXIsIF9jYWNoZQotICAgIGZvciBoIGluIF9jYWNoZToKLSAgICAgICAgY2xvc2UoaCkKLSAgICBfY2FjaGUuY2xlYXIoKQotICAgIF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgIF9saXN0ZW5lciA9IE5vbmUKKyAgICBkZWYgcmVkdWNlX3NvY2tldChzKToKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfc29ja2V0LCAoRHVwU29ja2V0KHMpLCkKIAotX3Jlc2V0KE5vbmUpCi1yZWdpc3Rlcl9hZnRlcl9mb3JrKF9yZXNldCwgX3Jlc2V0KQorICAgIGRlZiByZWJ1aWxkX3NvY2tldChkcyk6CisgICAgICAgIHJldHVybiBkcy5kZXRhY2goKQogCi1kZWYgX2dldF9saXN0ZW5lcigpOgotICAgIGdsb2JhbCBfbGlzdGVuZXIKKyAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6CisgICAgICAgIGhhbmRsZSA9IGNvbm4uZmlsZW5vKCkKKyAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGhhbmRsZSwgc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIGRzID0gRHVwU29ja2V0KHMpCisgICAgICAgICAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAoZHMsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAKLSAgICBpZiBfbGlzdGVuZXIgaXMgTm9uZToKLSAgICAgICAgX2xvY2suYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIF9saXN0ZW5lciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRlYnVnKCdzdGFydGluZyBsaXN0ZW5lciBhbmQgdGhyZWFkIGZvciBzZW5kaW5nIGhhbmRsZXMnKQotICAgICAgICAgICAgICAgIF9saXN0ZW5lciA9IExpc3RlbmVyKGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKLSAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3NlcnZlKQotICAgICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgX2xvY2sucmVsZWFzZSgpCi0KLSAgICByZXR1cm4gX2xpc3RlbmVyCi0KLWRlZiBfc2VydmUoKToKLSAgICBmcm9tIC51dGlsIGltcG9ydCBpc19leGl0aW5nLCBzdWJfd2FybmluZwotCi0gICAgd2hpbGUgMToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29ubiA9IF9saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgaGFuZGxlX3dhbnRlZCwgZGVzdGluYXRpb25fcGlkID0gY29ubi5yZWN2KCkKLSAgICAgICAgICAgIF9jYWNoZS5yZW1vdmUoaGFuZGxlX3dhbnRlZCkKLSAgICAgICAgICAgIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZV93YW50ZWQsIGRlc3RpbmF0aW9uX3BpZCkKLSAgICAgICAgICAgIGNsb3NlKGhhbmRsZV93YW50ZWQpCi0gICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgbm90IGlzX2V4aXRpbmcoKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgc3ViX3dhcm5pbmcoCi0gICAgICAgICAgICAgICAgICAgICd0aHJlYWQgZm9yIHNoYXJpbmcgaGFuZGxlcyByYWlzZWQgZXhjZXB0aW9uIDpcbicgKwotICAgICAgICAgICAgICAgICAgICAnLScqNzkgKyAnXG4nICsgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSArICctJyo3OQotICAgICAgICAgICAgICAgICAgICApCi0KLSMKLSMgRnVuY3Rpb25zIHRvIGJlIHVzZWQgZm9yIHBpY2tsaW5nL3VucGlja2xpbmcgb2JqZWN0cyB3aXRoIGhhbmRsZXMKLSMKLQotZGVmIHJlZHVjZV9oYW5kbGUoaGFuZGxlKToKLSAgICBpZiBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgcmV0dXJuIChOb25lLCBQb3Blbi5kdXBsaWNhdGVfZm9yX2NoaWxkKGhhbmRsZSksIFRydWUpCi0gICAgZHVwX2hhbmRsZSA9IGR1cGxpY2F0ZShoYW5kbGUpCi0gICAgX2NhY2hlLmFkZChkdXBfaGFuZGxlKQotICAgIHN1Yl9kZWJ1ZygncmVkdWNpbmcgaGFuZGxlICVkJywgaGFuZGxlKQotICAgIHJldHVybiAoX2dldF9saXN0ZW5lcigpLmFkZHJlc3MsIGR1cF9oYW5kbGUsIEZhbHNlKQotCi1kZWYgcmVidWlsZF9oYW5kbGUocGlja2xlZF9kYXRhKToKLSAgICBhZGRyZXNzLCBoYW5kbGUsIGluaGVyaXRlZCA9IHBpY2tsZWRfZGF0YQotICAgIGlmIGluaGVyaXRlZDoKLSAgICAgICAgcmV0dXJuIGhhbmRsZQotICAgIHN1Yl9kZWJ1ZygncmVidWlsZGluZyBoYW5kbGUgJWQnLCBoYW5kbGUpCi0gICAgY29ubiA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCi0gICAgY29ubi5zZW5kKChoYW5kbGUsIG9zLmdldHBpZCgpKSkKLSAgICBuZXdfaGFuZGxlID0gcmVjdl9oYW5kbGUoY29ubikKLSAgICBjb25uLmNsb3NlKCkKLSAgICByZXR1cm4gbmV3X2hhbmRsZQotCi0jCi0jIFJlZ2lzdGVyIGBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1kZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgcmggPSByZWR1Y2VfaGFuZGxlKGNvbm4uZmlsZW5vKCkpCi0gICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKHJoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQotCi1kZWYgcmVidWlsZF9jb25uZWN0aW9uKHJlZHVjZWRfaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpOgotICAgIGhhbmRsZSA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oCi0gICAgICAgIGhhbmRsZSwgcmVhZGFibGU9cmVhZGFibGUsIHdyaXRhYmxlPXdyaXRhYmxlCi0gICAgICAgICkKLQotRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQotIwotIyBSZWdpc3RlciBgc29ja2V0LnNvY2tldGAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWRlZiBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZV8sIHByb3RvPTApOgotICAgIHMgPSBzb2NrZXQuZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVfLCBwcm90bykKLSAgICBpZiBzLl9fY2xhc3NfXyBpcyBub3Qgc29ja2V0LnNvY2tldDoKLSAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoX3NvY2s9cykKLSAgICByZXR1cm4gcwotCi1kZWYgcmVkdWNlX3NvY2tldChzKToKLSAgICByZWR1Y2VkX2hhbmRsZSA9IHJlZHVjZV9oYW5kbGUocy5maWxlbm8oKSkKLSAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChyZWR1Y2VkX2hhbmRsZSwgcy5mYW1pbHksIHMudHlwZSwgcy5wcm90bykKLQotZGVmIHJlYnVpbGRfc29ja2V0KHJlZHVjZWRfaGFuZGxlLCBmYW1pbHksIHR5cGVfLCBwcm90byk6Ci0gICAgZmQgPSByZWJ1aWxkX2hhbmRsZShyZWR1Y2VkX2hhbmRsZSkKLSAgICBfc29jayA9IGZyb21mZChmZCwgZmFtaWx5LCB0eXBlXywgcHJvdG8pCi0gICAgY2xvc2UoZmQpCi0gICAgcmV0dXJuIF9zb2NrCi0KLUZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjZV9zb2NrZXQpCi0KLSMKLSMgUmVnaXN0ZXIgYF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb25gIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgcmVidWlsZF9jb25uZWN0aW9uKGRzLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDb25uZWN0aW9uCisgICAgICAgIHNvY2sgPSBkcy5kZXRhY2goKQorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihzb2NrLmRldGFjaCgpLCByZWFkYWJsZSwgd3JpdGFibGUpCiAKICAgICBkZWYgcmVkdWNlX3BpcGVfY29ubmVjdGlvbihjb25uKToKLSAgICAgICAgcmggPSByZWR1Y2VfaGFuZGxlKGNvbm4uZmlsZW5vKCkpCi0gICAgICAgIHJldHVybiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbiwgKHJoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQorICAgICAgICBhY2Nlc3MgPSAoKF93aW5hcGkuRklMRV9HRU5FUklDX1JFQUQgaWYgY29ubi5yZWFkYWJsZSBlbHNlIDApIHwKKyAgICAgICAgICAgICAgICAgIChfd2luYXBpLkZJTEVfR0VORVJJQ19XUklURSBpZiBjb25uLndyaXRhYmxlIGVsc2UgMCkpCisgICAgICAgIGRoID0gRHVwSGFuZGxlKGNvbm4uZmlsZW5vKCksIGFjY2VzcykKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uLCAoZGgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAKLSAgICBkZWYgcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24ocmVkdWNlZF9oYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSk6Ci0gICAgICAgIGhhbmRsZSA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbigKLSAgICAgICAgICAgIGhhbmRsZSwgcmVhZGFibGU9cmVhZGFibGUsIHdyaXRhYmxlPXdyaXRhYmxlCi0gICAgICAgICAgICApCisgICAgZGVmIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uKGRoLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBQaXBlQ29ubmVjdGlvbgorICAgICAgICBoYW5kbGUgPSBkaC5kZXRhY2goKQorICAgICAgICByZXR1cm4gUGlwZUNvbm5lY3Rpb24oaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpCiAKLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uLCByZWR1Y2VfcGlwZV9jb25uZWN0aW9uKQorZWxzZToKKyAgICAjIFVuaXgKKworICAgICMgT24gTWFjT1NYIHdlIHNob3VsZCBhY2tub3dsZWRnZSByZWNlaXB0IG9mIGZkcyAtLSBzZWUgSXNzdWUxNDY2OQorICAgIEFDS05PV0xFREdFID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCisKKyAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgorICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoY29ubi5maWxlbm8oKSwgc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIHMuc2VuZG1zZyhbYid4J10sIFsoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaygiQGkiLCBoYW5kbGUpKV0pCisgICAgICAgIGlmIEFDS05PV0xFREdFIGFuZCBjb25uLnJlY3ZfYnl0ZXMoKSAhPSBiJ0FDSyc6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RpZCBub3QgcmVjZWl2ZSBhY2tub3dsZWRnZW1lbnQgb2YgZmQnKQorCisgICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCJAaSIpCisgICAgICAgIHdpdGggc29ja2V0LmZyb21mZChjb25uLmZpbGVubygpLCBzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHMucmVjdm1zZygxLCBzb2NrZXQuQ01TR19MRU4oc2l6ZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgQUNLTk9XTEVER0U6CisgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhiJ0FDSycpCisgICAgICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kCisgICAgICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCJAaSIsIGNtc2dfZGF0YVs6c2l6ZV0pWzBdCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IsIHN0cnVjdC5lcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdJbnZhbGlkIGRhdGEgcmVjZWl2ZWQnKQorCisgICAgY2xhc3MgRHVwRmQob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkKToKKyAgICAgICAgICAgIG5ld19mZCA9IG9zLmR1cChmZCkKKyAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CisgICAgICAgICAgICAgICAgc2VuZF9oYW5kbGUoY29ubiwgbmV3X2ZkLCBwaWQpCisgICAgICAgICAgICBkZWYgY2xvc2UoKToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShuZXdfZmQpCisgICAgICAgICAgICBzZWxmLl9pZCA9IHJlc291cmNlX3NoYXJlci5yZWdpc3RlcihzZW5kLCBjbG9zZSkKKworICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgY29ubiA9IHJlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjdl9oYW5kbGUoY29ubikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgcmVkdWNlX3NvY2tldChzKToKKyAgICAgICAgZGYgPSBEdXBGZChzLmZpbGVubygpKQorICAgICAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChkZiwgcy5mYW1pbHksIHMudHlwZSwgcy5wcm90bykKKworICAgIGRlZiByZWJ1aWxkX3NvY2tldChkZiwgZmFtaWx5LCB0eXBlLCBwcm90byk6CisgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tZmQoZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pCisgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICByZXR1cm4gcworCisgICAgZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgorICAgICAgICBkZiA9IER1cEZkKGNvbm4uZmlsZW5vKCkpCisgICAgICAgIHJldHVybiByZWJ1aWxkX2Nvbm5lY3Rpb24sIChkZiwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKKworICAgIGRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24oZGYsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENvbm5lY3Rpb24KKyAgICAgICAgZmQgPSBkZi5kZXRhY2goKQorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihmZCwgcmVhZGFibGUsIHdyaXRhYmxlKQorCisjCisjIFNlcnZlciB3aGljaCBzaGFyZXMgcmVnaXN0ZXJlZCByZXNvdXJjZXMgd2l0aCBjbGllbnRzCisjCisKK2NsYXNzIFJlc291cmNlU2hhcmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9rZXkgPSAwCisgICAgICAgIHNlbGYuX2NhY2hlID0ge30KKyAgICAgICAgc2VsZi5fb2xkX2xvY2tzID0gW10KKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCisgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgcmVnaXN0ZXJfYWZ0ZXJfZm9yayhzZWxmLCBSZXNvdXJjZVNoYXJlci5fYWZ0ZXJmb3JrKQorCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIHNlbmQsIGNsb3NlKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYuX2tleSArPSAxCisgICAgICAgICAgICBzZWxmLl9jYWNoZVtzZWxmLl9rZXldID0gKHNlbmQsIGNsb3NlKQorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9hZGRyZXNzLCBzZWxmLl9rZXkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9jb25uZWN0aW9uKGlkZW50KToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50CisgICAgICAgIGFkZHJlc3MsIGtleSA9IGlkZW50CisgICAgICAgIGMgPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICBjLnNlbmQoKGtleSwgb3MuZ2V0cGlkKCkpKQorICAgICAgICByZXR1cm4gYworCisgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYyA9IENsaWVudChzZWxmLl9hZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgICAgICAgICAgYy5zZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgYy5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4odGltZW91dCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgc3ViX3dhcm4oJ1Jlc291cmNlU2hhcmVyIHRocmVhZCBkaWQgbm90IHN0b3Agd2hlbiBhc2tlZCcpCisgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQorICAgICAgICAgICAgICAgIGZvciBrZXksIChzZW5kLCBjbG9zZSkgaW4gc2VsZi5fY2FjaGUuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlLmNsZWFyKCkKKworICAgIGRlZiBfYWZ0ZXJmb3JrKHNlbGYpOgorICAgICAgICBmb3Iga2V5LCAoc2VuZCwgY2xvc2UpIGluIHNlbGYuX2NhY2hlLml0ZW1zKCk6CisgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgIHNlbGYuX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgIyBJZiBzZWxmLl9sb2NrIHdhcyBsb2NrZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGZvcmssIGl0IG1heSBiZSBicm9rZW4KKyAgICAgICAgIyAtLSBzZWUgaXNzdWUgNjcyMS4gIFJlcGxhY2UgaXQgd2l0aG91dCBsZXR0aW5nIGl0IGJlIGdjJ2VkLgorICAgICAgICBzZWxmLl9vbGRfbG9ja3MuYXBwZW5kKHNlbGYuX2xvY2spCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIGlmIHNlbGYuX2xpc3RlbmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYWRkcmVzcyA9IE5vbmUKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorCisgICAgZGVmIF9zdGFydChzZWxmKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgTGlzdGVuZXIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2xpc3RlbmVyIGlzIE5vbmUKKyAgICAgICAgZGVidWcoJ3N0YXJ0aW5nIGxpc3RlbmVyIGFuZCB0aHJlYWQgZm9yIHNlbmRpbmcgaGFuZGxlcycpCisgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTGlzdGVuZXIoYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICBzZWxmLl9hZGRyZXNzID0gc2VsZi5fbGlzdGVuZXIuYWRkcmVzcworICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fc2VydmUpCisgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gdAorCisgICAgZGVmIF9zZXJ2ZShzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKToKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgcmFuZ2UoMSwgc2lnbmFsLk5TSUcpKQorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgICAgIG1zZyA9IGNvbm4ucmVjdigpCisgICAgICAgICAgICAgICAgaWYgbXNnIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAga2V5LCBkZXN0aW5hdGlvbl9waWQgPSBtc2cKKyAgICAgICAgICAgICAgICBzZW5kLCBjbG9zZSA9IHNlbGYuX2NhY2hlLnBvcChrZXkpCisgICAgICAgICAgICAgICAgc2VuZChjb25uLCBkZXN0aW5hdGlvbl9waWQpCisgICAgICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc19leGl0aW5nKCk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKyAgICAgICAgICAgICAgICAgICAgc3ViX3dhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAndGhyZWFkIGZvciBzaGFyaW5nIGhhbmRsZXMgcmFpc2VkIGV4Y2VwdGlvbiA6XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICctJyo3OSArICdcbicgKyB0cmFjZWJhY2suZm9ybWF0X2V4YygpICsgJy0nKjc5CisgICAgICAgICAgICAgICAgICAgICAgICApCisKK3Jlc291cmNlX3NoYXJlciA9IFJlc291cmNlU2hhcmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKaW5kZXggMWU2OTRkYS4uYTM1OGVkNCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKQEAgLTQsMzUgKzQsOSBAQAogIyBtdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotaW1wb3J0IHN5cwogaW1wb3J0IGN0eXBlcwogaW1wb3J0IHdlYWtyZWYKIApAQCAtODksNyArNjMsNyBAQAogICAgICAgICByZXN1bHQuX19pbml0X18oKnNpemVfb3JfaW5pdGlhbGl6ZXIpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPU5vbmUpOgorZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybiBhIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIGZvciBhIFZhbHVlCiAgICAgJycnCkBAIC0xMDIsMTMgKzc2LDEwIEBACiAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCInJXInIGhhcyBubyBtZXRob2QgJ2FjcXVpcmUnIiAlIGxvY2spCiAgICAgcmV0dXJuIHN5bmNocm9uaXplZChvYmosIGxvY2spCiAKLWRlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqKmt3ZHMpOgorZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJuIGEgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgZm9yIGEgUmF3QXJyYXkKICAgICAnJycKLSAgICBsb2NrID0ga3dkcy5wb3AoJ2xvY2snLCBOb25lKQotICAgIGlmIGt3ZHM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXplZCBrZXl3b3JkIGFyZ3VtZW50KHMpOiAlcycgJSBsaXN0KGt3ZHMua2V5cygpKSkKICAgICBvYmogPSBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogICAgIGlmIGxvY2sgaXMgRmFsc2U6CiAgICAgICAgIHJldHVybiBvYmoKQEAgLTE1OCw3ICsxMjksOCBAQAogICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbmd0aAogICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCi0gICAgb2JqID0gdHlwZV8uZnJvbV9hZGRyZXNzKHdyYXBwZXIuZ2V0X2FkZHJlc3MoKSkKKyAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKKyAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgogICAgIHJldHVybiBvYmoKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKaW5kZXggNzBhZTgyNS4uMjJlYWJlNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsKQEAgLTM3LDE1ICsxMiwxMyBAQAogICAgIF0KIAogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZSwgc2xlZXAgYXMgX3NsZWVwCi0KIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MKLWZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBkZWJ1ZworZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgZGVidWcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGFzc2VydF9zcGF3bmluZywgUG9wZW4KK2Zyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjIFRyeSB0byBpbXBvcnQgdGhlIG1wLnN5bmNocm9uaXplIG1vZHVsZSBjbGVhbmx5LCBpZiBpdCBmYWlscwogIyByYWlzZSBJbXBvcnRFcnJvciBmb3IgcGxhdGZvcm1zIGxhY2tpbmcgYSB3b3JraW5nIHNlbV9vcGVuIGltcGxlbWVudGF0aW9uLgpAQCAtMjQzLDcgKzIxNiw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyB3YWl0IGZvciBub3RpZmljYXRpb24gb3IgdGltZW91dAotICAgICAgICAgICAgcmV0ID0gc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoVHJ1ZSwgdGltZW91dCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICMgaW5kaWNhdGUgdGhhdCB0aGlzIHRocmVhZCBoYXMgd29rZW4KICAgICAgICAgICAgIHNlbGYuX3dva2VuX2NvdW50LnJlbGVhc2UoKQpAQCAtMjUxLDcgKzIyNCw2IEBACiAgICAgICAgICAgICAjIHJlYWNxdWlyZSBsb2NrCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKLSAgICAgICAgICAgIHJldHVybiByZXQKIAogICAgIGRlZiBub3RpZnkoc2VsZik6CiAgICAgICAgIGFzc2VydCBzZWxmLl9sb2NrLl9zZW1sb2NrLl9pc19taW5lKCksICdsb2NrIGlzIG5vdCBvd25lZCcKQEAgLTI5Myw2ICsyNjUsMjQgQEAKICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB3YWl0X2ZvcihzZWxmLCBwcmVkaWNhdGUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKKyAgICAgICAgICAgIHdhaXR0aW1lID0gTm9uZQorICAgICAgICB3aGlsZSBub3QgcmVzdWx0OgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3YWl0dGltZSA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgaWYgd2FpdHRpbWUgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIHJldHVybiByZXN1bHQKKwogIwogIyBFdmVudAogIwpAQCAtMzQzLDMgKzMzMyw0MyBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorCisjCisjIEJhcnJpZXIKKyMKKworY2xhc3MgQmFycmllcih0aHJlYWRpbmcuQmFycmllcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydGllcywgYWN0aW9uPU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuaGVhcCBpbXBvcnQgQnVmZmVyV3JhcHBlcgorICAgICAgICB3cmFwcGVyID0gQnVmZmVyV3JhcHBlcihzdHJ1Y3QuY2FsY3NpemUoJ2knKSAqIDIpCisgICAgICAgIGNvbmQgPSBDb25kaXRpb24oKQorICAgICAgICBzZWxmLl9fc2V0c3RhdGVfXygocGFydGllcywgYWN0aW9uLCB0aW1lb3V0LCBjb25kLCB3cmFwcGVyKSkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAwCisgICAgICAgIHNlbGYuX2NvdW50ID0gMAorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCisgICAgICAgICBzZWxmLl9jb25kLCBzZWxmLl93cmFwcGVyKSA9IHN0YXRlCisgICAgICAgIHNlbGYuX2FycmF5ID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCisgICAgICAgICAgICAgICAgc2VsZi5fY29uZCwgc2VsZi5fd3JhcHBlcikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfc3RhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hcnJheVswXQorCisgICAgQF9zdGF0ZS5zZXR0ZXIKKyAgICBkZWYgX3N0YXRlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fYXJyYXlbMF0gPSB2YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9jb3VudChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FycmF5WzFdCisKKyAgICBAX2NvdW50LnNldHRlcgorICAgIGRlZiBfY291bnQoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9hcnJheVsxXSA9IHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKaW5kZXggMjBiYmEzNy4uNzQ5NTgxMyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQpAQCAtNCwzOSArNCwxOCBAQAogIyBtdWx0aXByb2Nlc3NpbmcvdXRpbC5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKK2ltcG9ydCBzeXMKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBvcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBhdGV4aXQKIGltcG9ydCB0aHJlYWRpbmcgICAgICAgICMgd2Ugd2FudCB0aHJlYWRpbmcgdG8gaW5zdGFsbCBpdCdzCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFudXAgZnVuY3Rpb24gYmVmb3JlIG11bHRpcHJvY2Vzc2luZyBkb2VzCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IF9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MKIAogZnJvbSBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4KIApAQCAtODQsNyArNjMsNyBAQAogICAgIFJldHVybnMgbG9nZ2VyIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nCiAgICAgJycnCiAgICAgZ2xvYmFsIF9sb2dnZXIKLSAgICBpbXBvcnQgbG9nZ2luZywgYXRleGl0CisgICAgaW1wb3J0IGxvZ2dpbmcKIAogICAgIGxvZ2dpbmcuX2FjcXVpcmVMb2NrKCkKICAgICB0cnk6CkBAIC0xODMsMTAgKzE2MiwxNSBAQAogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3Mgb3Ige30KICAgICAgICAgc2VsZi5fa2V5ID0gKGV4aXRwcmlvcml0eSwgbmV4dChfZmluYWxpemVyX2NvdW50ZXIpKQorICAgICAgICBzZWxmLl9waWQgPSBvcy5nZXRwaWQoKQogCiAgICAgICAgIF9maW5hbGl6ZXJfcmVnaXN0cnlbc2VsZi5fa2V5XSA9IHNlbGYKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB3cj1Ob25lKToKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgd3I9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIGJpbmQgdGhlc2UgbG9jYWxseSBiZWNhdXNlIHRoZSBnbG9iYWxzIGNhbiBoYXZlCisgICAgICAgICAgICAgICAgICMgYmVlbiBjbGVhcmVkIGF0IHNodXRkb3duCisgICAgICAgICAgICAgICAgIF9maW5hbGl6ZXJfcmVnaXN0cnk9X2ZpbmFsaXplcl9yZWdpc3RyeSwKKyAgICAgICAgICAgICAgICAgc3ViX2RlYnVnPXN1Yl9kZWJ1ZywgZ2V0cGlkPW9zLmdldHBpZCk6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIGNhbGxiYWNrIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBvciBjYW5jZWxsZWQKICAgICAgICAgJycnCkBAIC0xOTUsOSArMTc5LDEzIEBACiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIG5vIGxvbmdlciByZWdpc3RlcmVkJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGNhbGxpbmcgJXMgd2l0aCBhcmdzICVzIGFuZCBrd2FyZ3MgJXMnLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2ssIHNlbGYuX2FyZ3MsIHNlbGYuX2t3YXJncykKLSAgICAgICAgICAgIHJlcyA9IHNlbGYuX2NhbGxiYWNrKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKKyAgICAgICAgICAgIGlmIHNlbGYuX3BpZCAhPSBnZXRwaWQoKToKKyAgICAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBpZ25vcmVkIGJlY2F1c2UgZGlmZmVyZW50IHByb2Nlc3MnKQorICAgICAgICAgICAgICAgIHJlcyA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgY2FsbGluZyAlcyB3aXRoIGFyZ3MgJXMgYW5kIGt3YXJncyAlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrLCBzZWxmLl9hcmdzLCBzZWxmLl9rd2FyZ3MpCisgICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fY2FsbGJhY2soKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgc2VsZi5fd2Vha3JlZiA9IHNlbGYuX2NhbGxiYWNrID0gc2VsZi5fYXJncyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9rd2FyZ3MgPSBzZWxmLl9rZXkgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4gcmVzCkBAIC0yOTksMTYgKzI4NywyMSBAQAogICAgICAgICBpbmZvKCdwcm9jZXNzIHNodXR0aW5nIGRvd24nKQogICAgICAgICBkZWJ1ZygncnVubmluZyBhbGwgImF0ZXhpdCIgZmluYWxpemVycyB3aXRoIHByaW9yaXR5ID49IDAnKQogICAgICAgICBfcnVuX2ZpbmFsaXplcnMoMCkKKwogICAgICAgICBpZiBjdXJyZW50X3Byb2Nlc3MoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICMgV2UgY2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBOb25lIGhlcmUgYmVjYXVzZSBpZgotICAgICAgICAgICAgIyBpdCdzIE5vbmUsIGFueSBjYWxsIHRvIGBgYWN0aXZlX2NoaWxkcmVuKClgYCB3aWxsIHRocm93IGFuCi0gICAgICAgICAgICAjIEF0dHJpYnV0ZUVycm9yIChhY3RpdmVfY2hpbGRyZW4gd2luZHMgdXAgdHJ5aW5nIHRvIGdldAotICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIFRoaXMgaGFwcGVucyBpbiBhCi0gICAgICAgICAgICAjIHZhcmlldHkgb2Ygc2h1dGRvd24gY2lyY3Vtc3RhbmNlcyB0aGF0IGFyZSBub3Qgd2VsbC11bmRlcnN0b29kCi0gICAgICAgICAgICAjIGJlY2F1c2UgbW9kdWxlLXNjb3BlIHZhcmlhYmxlcyBhcmUgbm90IGFwcGFyZW50bHkgc3VwcG9zZWQgdG8KLSAgICAgICAgICAgICMgYmUgZGVzdHJveWVkIHVudGlsIGFmdGVyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiAgSG93ZXZlciwKLSAgICAgICAgICAgICMgdGhleSBhcmUgaW5kZWVkIGRlc3Ryb3llZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuICBTZWUKLSAgICAgICAgICAgICMgaXNzdWVzICM5Nzc1IGFuZCAjMTU4ODEuICBBbHNvIHJlbGF0ZWQ6ICM0MTA2LCAjOTIwNSwgYW5kICM5MjA3LgorICAgICAgICAgICAgIyBpdCdzIE5vbmUsIGFueSBjYWxsIHRvIGBgYWN0aXZlX2NoaWxkcmVuKClgYCB3aWxsIHRocm93CisgICAgICAgICAgICAjIGFuIEF0dHJpYnV0ZUVycm9yIChhY3RpdmVfY2hpbGRyZW4gd2luZHMgdXAgdHJ5aW5nIHRvCisgICAgICAgICAgICAjIGdldCBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIE9uZQorICAgICAgICAgICAgIyBzaXR1YXRpb24gd2hlcmUgdGhpcyBjYW4gaGFwcGVuIGlzIGlmIHNvbWVvbmUgaGFzCisgICAgICAgICAgICAjIG1hbmlwdWxhdGVkIHN5cy5tb2R1bGVzLCBjYXVzaW5nIHRoaXMgbW9kdWxlIHRvIGJlCisgICAgICAgICAgICAjIGdhcmJhZ2UgY29sbGVjdGVkLiAgVGhlIGRlc3RydWN0b3IgZm9yIHRoZSBtb2R1bGUgdHlwZQorICAgICAgICAgICAgIyB0aGVuIHJlcGxhY2VzIGFsbCB2YWx1ZXMgaW4gdGhlIG1vZHVsZSBkaWN0IHdpdGggTm9uZS4KKyAgICAgICAgICAgICMgRm9yIGluc3RhbmNlLCBhZnRlciBzZXR1cHRvb2xzIHJ1bnMgYSB0ZXN0IGl0IHJlcGxhY2VzCisgICAgICAgICAgICAjIHN5cy5tb2R1bGVzIHdpdGggYSBjb3B5IGNyZWF0ZWQgZWFybGllci4gIFNlZSBpc3N1ZXMKKyAgICAgICAgICAgICMgIzk3NzUgYW5kICMxNTg4MS4gIEFsc28gcmVsYXRlZDogIzQxMDYsICM5MjA1LCBhbmQKKyAgICAgICAgICAgICMgIzkyMDcuCisKICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgogICAgICAgICAgICAgICAgIGlmIHAuX2RhZW1vbmljOgogICAgICAgICAgICAgICAgICAgICBpbmZvKCdjYWxsaW5nIHRlcm1pbmF0ZSgpIGZvciBkYWVtb24gJXMnLCBwLm5hbWUpCmRpZmYgLS1naXQgYS9MaWIvbm50cGxpYi5weSBiL0xpYi9ubnRwbGliLnB5CmluZGV4IDMyYmZmZDguLjJkZTZlYmQgMTAwNjQ0Ci0tLSBhL0xpYi9ubnRwbGliLnB5CisrKyBiL0xpYi9ubnRwbGliLnB5CkBAIC0xNjYsNyArMTY2LDcgQEAKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2LmRlY29kZShlbmMgb3IgJ2FzY2lpJykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodikKLSAgICByZXR1cm4gJyAnLmpvaW4ocGFydHMpCisgICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCiAKIGRlZiBfcGFyc2Vfb3ZlcnZpZXdfZm10KGxpbmVzKToKICAgICAiIiJQYXJzZSBhIGxpc3Qgb2Ygc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgdG8gTElTVCBPVkVSVklFVy5GTVQKQEAgLTM1MSw2ICszNTEsMjAgQEAKICAgICAgICAgIyBMb2cgaW4gYW5kIGVuY3J5cHRpb24gc2V0dXAgb3JkZXIgaXMgbGVmdCB0byBzdWJjbGFzc2VzLgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIGlzX2Nvbm5lY3RlZCA9IGxhbWJkYTogaGFzYXR0cihzZWxmLCAiZmlsZSIpCisgICAgICAgIGlmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucXVpdCgpCisgICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlKCkKKwogICAgIGRlZiBnZXR3ZWxjb21lKHNlbGYpOgogICAgICAgICAiIiJHZXQgdGhlIHdlbGNvbWUgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXIKICAgICAgICAgKHRoaXMgaXMgcmVhZCBhbmQgc3F1aXJyZWxlZCBhd2F5IGJ5IF9faW5pdF9fKCkpLgpAQCAtODE5LDcgKzgzMyw3IEBACiAgICAgICAgIC0gbGlzdDogbGlzdCBvZiAobmFtZSx0aXRsZSkgc3RyaW5ncyIiIgogICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgWEdUSVRMRSBleHRlbnNpb24gaXMgbm90IGFjdGl2ZWx5IHVzZWQsICIKICAgICAgICAgICAgICAgICAgICAgICAidXNlIGRlc2NyaXB0aW9ucygpIGluc3RlYWQiLAotICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBsaW5lX3BhdCA9IHJlLmNvbXBpbGUoJ14oW14gXHRdKylbIFx0XSsoLiopJCcpCiAgICAgICAgIHJlc3AsIHJhd19saW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoJ1hHVElUTEUgJyArIGdyb3VwLCBmaWxlKQogICAgICAgICBsaW5lcyA9IFtdCkBAIC04MzcsNyArODUxLDcgQEAKICAgICAgICAgcGF0aDogZGlyZWN0b3J5IHBhdGggdG8gYXJ0aWNsZQogICAgICAgICAiIiIKICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKICAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdYUEFUSCB7MH0nLmZvcm1hdChpZCkpCiAgICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoJzIyMycpOgpkaWZmIC0tZ2l0IGEvTGliL251bWJlcnMucHkgYi9MaWIvbnVtYmVycy5weQppbmRleCBlY2ZhZDdjLi5iMjA2NDU3IDEwMDY0NAotLS0gYS9MaWIvbnVtYmVycy5weQorKysgYi9MaWIvbnVtYmVycy5weQpAQCAtNSw3ICs1LDcgQEAKIAogVE9ETzogRmlsbCBvdXQgbW9yZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIHRoZSBvcGVyYXRvcnMuIiIiCiAKLWZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZCwgYWJzdHJhY3Rwcm9wZXJ0eQorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiAKIF9fYWxsX18gPSBbIk51bWJlciIsICJDb21wbGV4IiwgIlJlYWwiLCAiUmF0aW9uYWwiLCAiSW50ZWdyYWwiXQogCkBAIC01MCw3ICs1MCw4IEBACiAgICAgICAgICIiIlRydWUgaWYgc2VsZiAhPSAwLiBDYWxsZWQgZm9yIGJvb2woc2VsZikuIiIiCiAgICAgICAgIHJldHVybiBzZWxmICE9IDAKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHJlYWwoc2VsZik6CiAgICAgICAgICIiIlJldHJpZXZlIHRoZSByZWFsIGNvbXBvbmVudCBvZiB0aGlzIG51bWJlci4KIApAQCAtNTgsNyArNTksOCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgaW1hZyhzZWxmKToKICAgICAgICAgIiIiUmV0cmlldmUgdGhlIGltYWdpbmFyeSBjb21wb25lbnQgb2YgdGhpcyBudW1iZXIuCiAKQEAgLTI3MiwxMSArMjc0LDEzIEBACiAKICAgICBfX3Nsb3RzX18gPSAoKQogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgbnVtZXJhdG9yKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBkZW5vbWluYXRvcihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCmRpZmYgLS1naXQgYS9MaWIvb3Bjb2RlLnB5IGIvTGliL29wY29kZS5weQppbmRleCA4ZTE1ZDEzLi5hNjM5ZmUzIDEwMDY0NAotLS0gYS9MaWIvb3Bjb2RlLnB5CisrKyBiL0xpYi9vcGNvZGUucHkKQEAgLTYsNyArNiw3IEBACiAKIF9fYWxsX18gPSBbImNtcF9vcCIsICJoYXNjb25zdCIsICJoYXNuYW1lIiwgImhhc2pyZWwiLCAiaGFzamFicyIsCiAgICAgICAgICAgICJoYXNsb2NhbCIsICJoYXNjb21wYXJlIiwgImhhc2ZyZWUiLCAib3BuYW1lIiwgIm9wbWFwIiwKLSAgICAgICAgICAgIkhBVkVfQVJHVU1FTlQiLCAiRVhURU5ERURfQVJHIl0KKyAgICAgICAgICAgIkhBVkVfQVJHVU1FTlQiLCAiRVhURU5ERURfQVJHIiwgImhhc25hcmdzIl0KIAogY21wX29wID0gKCc8JywgJzw9JywgJz09JywgJyE9JywgJz4nLCAnPj0nLCAnaW4nLCAnbm90IGluJywgJ2lzJywKICAgICAgICAgJ2lzIG5vdCcsICdleGNlcHRpb24gbWF0Y2gnLCAnQkFEJykKQEAgLTE4LDYgKzE4LDcgQEAKIGhhc2xvY2FsID0gW10KIGhhc2NvbXBhcmUgPSBbXQogaGFzZnJlZSA9IFtdCitoYXNuYXJncyA9IFtdCiAKIG9wbWFwID0ge30KIG9wbmFtZSA9IFsnJ10gKiAyNTYKQEAgLTQzLDcgKzQ0LDYgQEAKICMgSW5zdHJ1Y3Rpb24gb3Bjb2RlcyBmb3IgY29tcGlsZWQgY29kZQogIyBCbGFuayBsaW5lcyBjb3JyZXNwb25kIHRvIGF2YWlsYWJsZSBvcGNvZGVzCiAKLWRlZl9vcCgnU1RPUF9DT0RFJywgMCkKIGRlZl9vcCgnUE9QX1RPUCcsIDEpCiBkZWZfb3AoJ1JPVF9UV08nLCAyKQogZGVmX29wKCdST1RfVEhSRUUnLCAzKQpAQCAtODgsNiArODgsNyBAQAogCiBkZWZfb3AoJ1BSSU5UX0VYUFInLCA3MCkKIGRlZl9vcCgnTE9BRF9CVUlMRF9DTEFTUycsIDcxKQorZGVmX29wKCdZSUVMRF9GUk9NJywgNzIpCiAKIGRlZl9vcCgnSU5QTEFDRV9MU0hJRlQnLCA3NSkKIGRlZl9vcCgnSU5QTEFDRV9SU0hJRlQnLCA3NikKQEAgLTE1Miw2ICsxNTMsNyBAQAogCiBkZWZfb3AoJ1JBSVNFX1ZBUkFSR1MnLCAxMzApICAgICMgTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiwgb3IgMykKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTMxKQogZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIE51bWJlciBvZiBhcmdzIHdpdGggZGVmYXVsdCB2YWx1ZXMKIGRlZl9vcCgnQlVJTERfU0xJQ0UnLCAxMzMpICAgICAgIyBOdW1iZXIgb2YgaXRlbXMKIGRlZl9vcCgnTUFLRV9DTE9TVVJFJywgMTM0KQpAQCAtMTY1LDggKzE2NywxMSBAQAogaGFzZnJlZS5hcHBlbmQoMTM4KQogCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSJywgMTQwKSAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTQwKQogZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDE0MSkKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVJfS1cnLCAxNDIpICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxNDIpCiAKIGpyZWxfb3AoJ1NFVFVQX1dJVEgnLCAxNDMpCiAKZGlmZiAtLWdpdCBhL0xpYi9vcHRwYXJzZS5weSBiL0xpYi9vcHRwYXJzZS5weQppbmRleCBkOTdhMWY3Li4zNzc2NGQzIDEwMDY0NAotLS0gYS9MaWIvb3B0cGFyc2UucHkKKysrIGIvTGliL29wdHBhcnNlLnB5CkBAIC04NiwxMCArODYsMTYgQEAKICMgICBJZDogZXJyb3JzLnB5IDUwOSAyMDA2LTA0LTIwIDAwOjU4OjI0WiBnd2FyZAogCiB0cnk6Ci0gICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0CisgICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0LCBuZ2V0dGV4dAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGRlZiBnZXR0ZXh0KG1lc3NhZ2UpOgogICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIG5nZXR0ZXh0KHNpbmd1bGFyLCBwbHVyYWwsIG4pOgorICAgICAgICBpZiBuID09IDE6CisgICAgICAgICAgICByZXR1cm4gc2luZ3VsYXIKKyAgICAgICAgcmV0dXJuIHBsdXJhbAorCiBfID0gZ2V0dGV4dAogCiAKQEAgLTQxMSwxMSArNDE3LDggQEAKIGRlZiBfcGFyc2VfaW50KHZhbCk6CiAgICAgcmV0dXJuIF9wYXJzZV9udW0odmFsLCBpbnQpCiAKLWRlZiBfcGFyc2VfbG9uZyh2YWwpOgotICAgIHJldHVybiBfcGFyc2VfbnVtKHZhbCwgaW50KQotCiBfYnVpbHRpbl9jdnQgPSB7ICJpbnQiIDogKF9wYXJzZV9pbnQsIF8oImludGVnZXIiKSksCi0gICAgICAgICAgICAgICAgICJsb25nIiA6IChfcGFyc2VfbG9uZywgXygibG9uZyBpbnRlZ2VyIikpLAorICAgICAgICAgICAgICAgICAibG9uZyIgOiAoX3BhcnNlX2ludCwgXygiaW50ZWdlciIpKSwKICAgICAgICAgICAgICAgICAgImZsb2F0IiA6IChmbG9hdCwgXygiZmxvYXRpbmctcG9pbnQiKSksCiAgICAgICAgICAgICAgICAgICJjb21wbGV4IiA6IChjb21wbGV4LCBfKCJjb21wbGV4IikpIH0KIApAQCAtMTQ4MywxMSArMTQ4NiwxMCBAQAogICAgICAgICBpZiBvcHRpb24udGFrZXNfdmFsdWUoKToKICAgICAgICAgICAgIG5hcmdzID0gb3B0aW9uLm5hcmdzCiAgICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKSAlIG9wdCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyAlZCBhcmd1bWVudHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG9wdCwgbmFyZ3MpKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IobmdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgbmFyZ3MpICUgeyJvcHRpb24iOiBvcHQsICJudW1iZXIiOiBuYXJnc30pCiAgICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSByYXJncy5wb3AoMCkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNTIyLDExICsxNTI0LDEwIEBACiAKICAgICAgICAgICAgICAgICBuYXJncyA9IG9wdGlvbi5uYXJncwogICAgICAgICAgICAgICAgIGlmIGxlbihyYXJncykgPCBuYXJnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IikgJSBvcHQpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyAlZCBhcmd1bWVudHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcHQsIG5hcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihuZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXJncykgJSB7Im9wdGlvbiI6IG9wdCwgIm51bWJlciI6IG5hcmdzfSkKICAgICAgICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmFyZ3MucG9wKDApCiAgICAgICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9vcy5weSBiL0xpYi9vcy5weQppbmRleCBkMTEwMWEyLi44NDI1MTJhIDEwMDY0NAotLS0gYS9MaWIvb3MucHkKKysrIGIvTGliL29zLnB5CkBAIC0yNCwxMyArMjQsMTggQEAKICMnCiAKIGltcG9ydCBzeXMsIGVycm5vCitpbXBvcnQgc3RhdCBhcyBzdAogCiBfbmFtZXMgPSBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKIAogIyBOb3RlOiAgbW9yZSBuYW1lcyBhcmUgYWRkZWQgdG8gX19hbGxfXyBsYXRlci4KIF9fYWxsX18gPSBbImFsdHNlcCIsICJjdXJkaXIiLCAicGFyZGlyIiwgInNlcCIsICJwYXRoc2VwIiwgImxpbmVzZXAiLAotICAgICAgICAgICAiZGVmcGF0aCIsICJuYW1lIiwgInBhdGgiLCAiZGV2bnVsbCIsCi0gICAgICAgICAgICJTRUVLX1NFVCIsICJTRUVLX0NVUiIsICJTRUVLX0VORCJdCisgICAgICAgICAgICJkZWZwYXRoIiwgIm5hbWUiLCAicGF0aCIsICJkZXZudWxsIiwgIlNFRUtfU0VUIiwgIlNFRUtfQ1VSIiwKKyAgICAgICAgICAgIlNFRUtfRU5EIiwgImZzZW5jb2RlIiwgImZzZGVjb2RlIiwgImdldF9leGVjX3BhdGgiLCAiZmRvcGVuIiwKKyAgICAgICAgICAgInBvcGVuIiwgImV4dHNlcCJdCisKK2RlZiBfZXhpc3RzKG5hbWUpOgorICAgIHJldHVybiBuYW1lIGluIGdsb2JhbHMoKQogCiBkZWYgX2dldF9leHBvcnRzX2xpc3QobW9kdWxlKToKICAgICB0cnk6CkBAIC0zOCwxOSArNDMsMjMgQEAKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIHJldHVybiBbbiBmb3IgbiBpbiBkaXIobW9kdWxlKSBpZiBuWzBdICE9ICdfJ10KIAorIyBBbnkgbmV3IGRlcGVuZGVuY2llcyBvZiB0aGUgb3MgbW9kdWxlIGFuZC9vciBjaGFuZ2VzIGluIHBhdGggc2VwYXJhdG9yCisjIHJlcXVpcmVzIHVwZGF0aW5nIGltcG9ydGxpYiBhcyB3ZWxsLgogaWYgJ3Bvc2l4JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdwb3NpeCcKICAgICBsaW5lc2VwID0gJ1xuJwogICAgIGZyb20gcG9zaXggaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gcG9zaXggaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaW1wb3J0IHBvc2l4cGF0aCBhcyBwYXRoCiAKLSAgICBpbXBvcnQgcG9zaXgKLSAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChwb3NpeCkpCi0gICAgZGVsIHBvc2l4CisgICAgdHJ5OgorICAgICAgICBmcm9tIHBvc2l4IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKIAogZWxpZiAnbnQnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ250JwpAQCAtNTgsNiArNjcsNyBAQAogICAgIGZyb20gbnQgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gbnQgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaW1wb3J0IG50cGF0aCBhcyBwYXRoCkBAIC02NiwxMiArNzYsMTggQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChudCkpCiAgICAgZGVsIG50CiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gbnQgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbGlmICdvczInIGluIF9uYW1lczoKICAgICBuYW1lID0gJ29zMicKICAgICBsaW5lc2VwID0gJ1xyXG4nCiAgICAgZnJvbSBvczIgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gb3MyIGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGlmIHN5cy52ZXJzaW9uLmZpbmQoJ0VNWCBHQ0MnKSA9PSAtMToKQEAgLTg0LDEyICsxMDAsMTggQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChvczIpKQogICAgIGRlbCBvczIKIAorICAgIHRyeToKKyAgICAgICAgZnJvbSBvczIgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbGlmICdjZScgaW4gX25hbWVzOgogICAgIG5hbWUgPSAnY2UnCiAgICAgbGluZXNlcCA9ICdcclxuJwogICAgIGZyb20gY2UgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gY2UgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgIyBXZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIHBhdGguCkBAIC05OSw2ICsxMjEsMTEgQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChjZSkpCiAgICAgZGVsIGNlCiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gY2UgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbHNlOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBvcyBzcGVjaWZpYyBtb2R1bGUgZm91bmQnKQogCkBAIC0xMDgsOCArMTM1LDk3IEBACiAKIGRlbCBfbmFtZXMKIAorCitpZiBfZXhpc3RzKCJfaGF2ZV9mdW5jdGlvbnMiKToKKyAgICBfZ2xvYmFscyA9IGdsb2JhbHMoKQorICAgIGRlZiBfYWRkKHN0ciwgZm4pOgorICAgICAgICBpZiAoZm4gaW4gX2dsb2JhbHMpIGFuZCAoc3RyIGluIF9oYXZlX2Z1bmN0aW9ucyk6CisgICAgICAgICAgICBfc2V0LmFkZChfZ2xvYmFsc1tmbl0pCisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICBfYWRkKCJIQVZFX0ZDSE1PREFUIiwgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FU0FUIiwgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQorICAgIF9hZGQoIkhBVkVfTUtESVJBVCIsICAgICJta2RpciIpCisgICAgX2FkZCgiSEFWRV9NS0ZJRk9BVCIsICAgIm1rZmlmbyIpCisgICAgX2FkZCgiSEFWRV9NS05PREFUIiwgICAgIm1rbm9kIikKKyAgICBfYWRkKCJIQVZFX09QRU5BVCIsICAgICAib3BlbiIpCisgICAgX2FkZCgiSEFWRV9SRUFETElOS0FUIiwgInJlYWRsaW5rIikKKyAgICBfYWRkKCJIQVZFX1JFTkFNRUFUIiwgICAicmVuYW1lIikKKyAgICBfYWRkKCJIQVZFX1NZTUxJTktBVCIsICAic3ltbGluayIpCisgICAgX2FkZCgiSEFWRV9VTkxJTktBVCIsICAgInVubGluayIpCisgICAgX2FkZCgiSEFWRV9VTkxJTktBVCIsICAgInJtZGlyIikKKyAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQorICAgIHN1cHBvcnRzX2Rpcl9mZCA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgIHN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZDSERJUiIsICAgICAiY2hkaXIiKQorICAgIF9hZGQoIkhBVkVfRkNITU9EIiwgICAgICJjaG1vZCIpCisgICAgX2FkZCgiSEFWRV9GQ0hPV04iLCAgICAgImNob3duIikKKyAgICBfYWRkKCJIQVZFX0ZET1BFTkRJUiIsICAibGlzdGRpciIpCisgICAgX2FkZCgiSEFWRV9GRVhFQ1ZFIiwgICAgImV4ZWN2ZSIpCisgICAgX3NldC5hZGQoc3RhdCkgIyBmc3RhdCBhbHdheXMgd29ya3MKKyAgICBfYWRkKCJIQVZFX0ZUUlVOQ0FURSIsICAidHJ1bmNhdGUiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FTlMiLCAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9GVVRJTUVTIiwgICAgInV0aW1lIikKKyAgICBfYWRkKCJIQVZFX0ZQQVRIQ09ORiIsICAicGF0aGNvbmYiKQorICAgIGlmIF9leGlzdHMoInN0YXR2ZnMiKSBhbmQgX2V4aXN0cygiZnN0YXR2ZnMiKTogIyBtYWMgb3MgeDEwLjMKKyAgICAgICAgX2FkZCgiSEFWRV9GU1RBVFZGUyIsICJzdGF0dmZzIikKKyAgICBzdXBwb3J0c19mZCA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgc3VwcG9ydCBsY2htb2QoKS4gIE9mdGVuIHRoZSBmdW5jdGlvbiBleGlzdHMKKyAgICAjIGFueXdheSwgYXMgYSBzdHViIHRoYXQgYWx3YXlzIHJldHVybnMgRU5PU1VQIG9yIHBlcmhhcHMgRU9QTk9UU1VQUC4KKyAgICAjIChObywgSSBkb24ndCBrbm93IHdoeSB0aGF0J3MgYSBnb29kIGRlc2lnbi4pICAuL2NvbmZpZ3VyZSB3aWxsIGRldGVjdAorICAgICMgdGhpcyBhbmQgcmVqZWN0IGl0LS1zbyBIQVZFX0xDSE1PRCBzdGlsbCB3b24ndCBiZSBkZWZpbmVkIG9uIHN1Y2gKKyAgICAjIHBsYXRmb3Jtcy4gIFRoaXMgaXMgVmVyeSBIZWxwZnVsLgorICAgICMKKyAgICAjIEhvd2V2ZXIsIHNvbWV0aW1lcyBwbGF0Zm9ybXMgd2l0aG91dCBhIHdvcmtpbmcgbGNobW9kKCkgKmRvKiBoYXZlCisgICAgIyBmY2htb2RhdCgpLiAgKEV4YW1wbGVzOiBMaW51eCBrZXJuZWwgMy4yIHdpdGggZ2xpYmMgMi4xNSwKKyAgICAjIE9wZW5JbmRpYW5hIDMueC4pICBBbmQgZmNobW9kYXQoKSBoYXMgYSBmbGFnIHRoYXQgdGhlb3JldGljYWxseSBtYWtlcworICAgICMgaXQgYmVoYXZlIGxpa2UgbGNobW9kKCkuICBTbyBpbiB0aGVvcnkgaXQgd291bGQgYmUgYSBzdWl0YWJsZQorICAgICMgcmVwbGFjZW1lbnQgZm9yIGxjaG1vZCgpLiAgQnV0IHdoZW4gbGNobW9kKCkgZG9lc24ndCB3b3JrLCBmY2htb2RhdCgpJ3MKKyAgICAjIGZsYWcgZG9lc24ndCB3b3JrICplaXRoZXIqLiAgU2FkbHkgLi9jb25maWd1cmUgaXNuJ3Qgc29waGlzdGljYXRlZAorICAgICMgZW5vdWdoIHRvIGRldGVjdCB0aGlzIGNvbmRpdGlvbi0taXQgb25seSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90CisgICAgIyBmY2htb2RhdCgpIG1pbmltYWxseSB3b3Jrcy4KKyAgICAjCisgICAgIyBUaGVyZWZvcmUgd2Ugc2ltcGx5IGlnbm9yZSBmY2htb2RhdCgpIHdoZW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QKKyAgICAjIG9zLmNobW9kIHN1cHBvcnRzIGZvbGxvd19zeW1saW5rcy4gIEp1c3QgY2hlY2tpbmcgbGNobW9kKCkgaXMKKyAgICAjIHN1ZmZpY2llbnQuICBBZnRlciBhbGwtLWlmIHlvdSBoYXZlIGEgd29ya2luZyBmY2htb2RhdCgpLCB5b3VyCisgICAgIyBsY2htb2QoKSBhbG1vc3QgY2VydGFpbmx5IHdvcmtzIHRvby4KKyAgICAjCisgICAgIyBfYWRkKCJIQVZFX0ZDSE1PREFUIiwgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfTENIRkxBR1MiLCAgICJjaGZsYWdzIikKKyAgICBfYWRkKCJIQVZFX0xDSE1PRCIsICAgICAiY2htb2QiKQorICAgIGlmIF9leGlzdHMoImxjaG93biIpOiAjIG1hYyBvcyB4MTAuMworICAgICAgICBfYWRkKCJIQVZFX0xDSE9XTiIsICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQorICAgIF9hZGQoIkhBVkVfTFVUSU1FUyIsICAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9MU1RBVCIsICAgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQorICAgIF9hZGQoIk1TX1dJTkRPV1MiLCAgICAgICJzdGF0IikKKyAgICBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MgPSBfc2V0CisKKyAgICBkZWwgX3NldAorICAgIGRlbCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBkZWwgX2dsb2JhbHMKKyAgICBkZWwgX2FkZAorCisKICMgUHl0aG9uIHVzZXMgZml4ZWQgdmFsdWVzIGZvciB0aGUgU0VFS18gY29uc3RhbnRzOyB0aGV5IGFyZSBtYXBwZWQKICMgdG8gbmF0aXZlIGNvbnN0YW50cyBpZiBuZWNlc3NhcnkgaW4gcG9zaXhtb2R1bGUuYworIyBPdGhlciBwb3NzaWJsZSBTRUVLIHZhbHVlcyBhcmUgZGlyZWN0bHkgaW1wb3J0ZWQgZnJvbSBwb3NpeG1vZHVsZS5jCiBTRUVLX1NFVCA9IDAKIFNFRUtfQ1VSID0gMQogU0VFS19FTkQgPSAyCkBAIC0xMjAsOCArMjM2LDYgQEAKICAgICB1bWFzayhtYXNrKQogICAgIHJldHVybiBtb2RlICYgfm1hc2sKIAotIycKLQogIyBTdXBlciBkaXJlY3RvcnkgdXRpbGl0aWVzLgogIyAoSW5zcGlyZWQgYnkgRXJpYyBSYXltb25kOyB0aGUgZG9jIHN0cmluZ3MgYXJlIG1vc3RseSBoaXMpCiAKQEAgLTE1MSw3ICsyNjUsNiBAQAogICAgIHRyeToKICAgICAgICAgbWtkaXIobmFtZSwgbW9kZSkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpbXBvcnQgc3RhdCBhcyBzdAogICAgICAgICBkaXJfZXhpc3RzID0gcGF0aC5pc2RpcihuYW1lKQogICAgICAgICBleHBlY3RlZF9tb2RlID0gX2dldF9tYXNrZWRfbW9kZShtb2RlKQogICAgICAgICBpZiBkaXJfZXhpc3RzOgpAQCAtMTYzLDYgKzI3Niw5IEBACiAgICAgICAgICAgICBhY3R1YWxfbW9kZSA9IC0xCiAgICAgICAgIGlmIG5vdCAoZS5lcnJubyA9PSBlcnJuby5FRVhJU1QgYW5kIGV4aXN0X29rIGFuZCBkaXJfZXhpc3RzIGFuZAogICAgICAgICAgICAgICAgIGFjdHVhbF9tb2RlID09IGV4cGVjdGVkX21vZGUpOgorICAgICAgICAgICAgaWYgZGlyX2V4aXN0cyBhbmQgYWN0dWFsX21vZGUgIT0gZXhwZWN0ZWRfbW9kZToKKyAgICAgICAgICAgICAgICBlLnN0cmVycm9yICs9ICcgKG1vZGUgJW8gIT0gZXhwZWN0ZWQgbW9kZSAlbyknICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX21vZGUsIGV4cGVjdGVkX21vZGUpCiAgICAgICAgICAgICByYWlzZQogCiBkZWYgcmVtb3ZlZGlycyhuYW1lKToKQEAgLTMwMCwxMyArNDE2LDEwNyBAQAogICAgIGZvciBuYW1lIGluIGRpcnM6CiAgICAgICAgIG5ld19wYXRoID0gam9pbih0b3AsIG5hbWUpCiAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgotICAgICAgICAgICAgZm9yIHggaW4gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpOgotICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgaWYgbm90IHRvcGRvd246CiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKK2lmIHtvcGVuLCBzdGF0fSA8PSBzdXBwb3J0c19kaXJfZmQgYW5kIHtsaXN0ZGlyLCBzdGF0fSA8PSBzdXBwb3J0c19mZDoKKworICAgIGRlZiBmd2Fsayh0b3A9Ii4iLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSk6CisgICAgICAgICIiIkRpcmVjdG9yeSB0cmVlIGdlbmVyYXRvci4KKworICAgICAgICBUaGlzIGJlaGF2ZXMgZXhhY3RseSBsaWtlIHdhbGsoKSwgZXhjZXB0IHRoYXQgaXQgeWllbGRzIGEgNC10dXBsZQorCisgICAgICAgICAgICBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzLCBkaXJmZAorCisgICAgICAgIGBkaXJwYXRoYCwgYGRpcm5hbWVzYCBhbmQgYGZpbGVuYW1lc2AgYXJlIGlkZW50aWNhbCB0byB3YWxrKCkgb3V0cHV0LAorICAgICAgICBhbmQgYGRpcmZkYCBpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gdGhlIGRpcmVjdG9yeSBgZGlycGF0aGAuCisKKyAgICAgICAgVGhlIGFkdmFudGFnZSBvZiBmd2FsaygpIG92ZXIgd2FsaygpIGlzIHRoYXQgaXQncyBzYWZlIGFnYWluc3Qgc3ltbGluaworICAgICAgICByYWNlcyAod2hlbiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UpLgorCisgICAgICAgIElmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgICAgICAgICAgYW5kIHRvcCBzaG91bGQgYmUgcmVsYXRpdmU7IHRvcCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCisgICAgICAgICAgKGRpcl9mZCBpcyBhbHdheXMgc3VwcG9ydGVkIGZvciBmd2Fsay4pCisKKyAgICAgICAgQ2F1dGlvbjoKKyAgICAgICAgU2luY2UgZndhbGsoKSB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycywgdGhvc2UgYXJlIG9ubHkgdmFsaWQgdW50aWwgdGhlCisgICAgICAgIG5leHQgaXRlcmF0aW9uIHN0ZXAsIHNvIHlvdSBzaG91bGQgZHVwKCkgdGhlbSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0KKyAgICAgICAgZm9yIGEgbG9uZ2VyIHBlcmlvZC4KKworICAgICAgICBFeGFtcGxlOgorCisgICAgICAgIGltcG9ydCBvcworICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgorICAgICAgICAgICAgcHJpbnQocm9vdCwgImNvbnN1bWVzIiwgZW5kPSIiKQorICAgICAgICAgICAgcHJpbnQoc3VtKFtvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQpLnN0X3NpemUgZm9yIG5hbWUgaW4gZmlsZXNdKSwKKyAgICAgICAgICAgICAgICAgIGVuZD0iIikKKyAgICAgICAgICAgIHByaW50KCJieXRlcyBpbiIsIGxlbihmaWxlcyksICJub24tZGlyZWN0b3J5IGZpbGVzIikKKyAgICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcworICAgICAgICAiIiIKKyAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKKyAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgorICAgICAgICBvcmlnX3N0ID0gc3RhdCh0b3AsIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWRpcl9mZCkKKyAgICAgICAgdG9wZmQgPSBvcGVuKHRvcCwgT19SRE9OTFksIGRpcl9mZD1kaXJfZmQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3Mgb3IgKHN0LlNfSVNESVIob3JpZ19zdC5zdF9tb2RlKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguc2FtZXN0YXQob3JpZ19zdCwgc3RhdCh0b3BmZCkpKSk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfZndhbGsodG9wZmQsIHRvcCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY2xvc2UodG9wZmQpCisKKyAgICBkZWYgX2Z3YWxrKHRvcGZkLCB0b3BwYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAjIE5vdGU6IFRoaXMgdXNlcyBPKGRlcHRoIG9mIHRoZSBkaXJlY3RvcnkgdHJlZSkgZmlsZSBkZXNjcmlwdG9yczogaWYKKyAgICAgICAgIyBuZWNlc3NhcnksIGl0IGNhbiBiZSBhZGFwdGVkIHRvIG9ubHkgcmVxdWlyZSBPKDEpIEZEcywgc2VlIGlzc3VlCisgICAgICAgICMgIzEzNzM0LgorCisgICAgICAgIG5hbWVzID0gbGlzdGRpcih0b3BmZCkKKyAgICAgICAgZGlycywgbm9uZGlycyA9IFtdLCBbXQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIEhlcmUsIHdlIGRvbid0IHVzZSBBVF9TWU1MSU5LX05PRk9MTE9XIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAorICAgICAgICAgICAgICAgICMgd2FsaygpIHdoaWNoIHJlcG9ydHMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXMgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgIyBXZSBkbyBob3dldmVyIGNoZWNrIGZvciBzeW1saW5rcyBiZWZvcmUgcmVjdXJzaW5nIGludG8KKyAgICAgICAgICAgICAgICAjIGEgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIGlmIHN0LlNfSVNESVIoc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQpLnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIEFkZCBkYW5nbGluZyBzeW1saW5rcywgaWdub3JlIGRpc2FwcGVhcmVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGlmIHN0LlNfSVNMTksoc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgdG9wZG93bjoKKyAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCisKKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcmlnX3N0ID0gc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICAgICAgZGlyZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZLCBkaXJfZmQ9dG9wZmQpCisgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGZvbGxvd19zeW1saW5rcyBvciBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQoZGlyZmQpKToKKyAgICAgICAgICAgICAgICAgICAgZGlycGF0aCA9IHBhdGguam9pbih0b3BwYXRoLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF9md2FsayhkaXJmZCwgZGlycGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbG9zZShkaXJmZCkKKworICAgICAgICBpZiBub3QgdG9wZG93bjoKKyAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCisKKyAgICBfX2FsbF9fLmFwcGVuZCgiZndhbGsiKQorCiAjIE1ha2Ugc3VyZSBvcy5lbnZpcm9uIGV4aXN0cywgYXQgbGVhc3QKIHRyeToKICAgICBlbnZpcm9uCkBAIC00NDMsNyArNjUzLDcgQEAKIAogCiAjIENoYW5nZSBlbnZpcm9uIHRvIGF1dG9tYXRpY2FsbHkgY2FsbCBwdXRlbnYoKSwgdW5zZXRlbnYgaWYgdGhleSBleGlzdC4KLWZyb20gX2FiY29sbCBpbXBvcnQgTXV0YWJsZU1hcHBpbmcgICMgQ2FuJ3QgdXNlIGNvbGxlY3Rpb25zIChib290c3RyYXApCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKIAogY2xhc3MgX0Vudmlyb24oTXV0YWJsZU1hcHBpbmcpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhLCBlbmNvZGVrZXksIGRlY29kZWtleSwgZW5jb2RldmFsdWUsIGRlY29kZXZhbHVlLCBwdXRlbnYsIHVuc2V0ZW52KToKQEAgLTYwNywxNSArODE3LDE0IEBACiBmc2VuY29kZSwgZnNkZWNvZGUgPSBfZnNjb2RlYygpCiBkZWwgX2ZzY29kZWMKIAotZGVmIF9leGlzdHMobmFtZSk6Ci0gICAgcmV0dXJuIG5hbWUgaW4gZ2xvYmFscygpCi0KICMgU3VwcGx5IHNwYXduKigpIChwcm9iYWJseSBvbmx5IGZvciBVbml4KQogaWYgX2V4aXN0cygiZm9yayIpIGFuZCBub3QgX2V4aXN0cygic3Bhd252IikgYW5kIF9leGlzdHMoImV4ZWN2Iik6CiAKICAgICBQX1dBSVQgPSAwCiAgICAgUF9OT1dBSVQgPSBQX05PV0FJVE8gPSAxCiAKKyAgICBfX2FsbF9fLmV4dGVuZChbIlBfV0FJVCIsICJQX05PV0FJVCIsICJQX05PV0FJVE8iXSkKKwogICAgICMgWFhYIFNob3VsZCB3ZSBzdXBwb3J0IFBfREVUQUNIPyAgSSBzdXBwb3NlIGl0IGNvdWxkIGZvcmsoKSoqMgogICAgICMgYW5kIGNsb3NlIHRoZSBzdGQgSS9PIHN0cmVhbXMuICBBbHNvLCBQX09WRVJMQVkgaXMgdGhlIHNhbWUKICAgICAjIGFzIGV4ZWN2KigpPwpkaWZmIC0tZ2l0IGEvTGliL3BkYi5weSBiL0xpYi9wZGIucHkKaW5kZXggNjc3NmEzZi4uMzA0MzM5MSAxMDA3NTUKLS0tIGEvTGliL3BkYi5weQorKysgYi9MaWIvcGRiLnB5CkBAIC03Myw2ICs3Myw3IEBACiBpbXBvcnQgYmRiCiBpbXBvcnQgZGlzCiBpbXBvcnQgY29kZQoraW1wb3J0IGdsb2IKIGltcG9ydCBwcHJpbnQKIGltcG9ydCBzaWduYWwKIGltcG9ydCBpbnNwZWN0CkBAIC0xNTUsNiArMTU2LDggQEAKICAgICAgICAgIyBUcnkgdG8gbG9hZCByZWFkbGluZSBpZiBpdCBleGlzdHMKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHJlYWRsaW5lCisgICAgICAgICAgICAjIHJlbW92ZSBzb21lIGNvbW1vbiBmaWxlIG5hbWUgZGVsaW1pdGVycworICAgICAgICAgICAgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoJyBcdFxuYEAjJCVeJiooKT0rW3tdfVxcfDs6XCciLDw+PycpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hbGxvd19rYmRpbnQgPSBGYWxzZQpAQCAtNDQ1LDYgKzQ0OCw2MSBAQAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2cpOgogICAgICAgICBwcmludCgnKioqJywgbXNnLCBmaWxlPXNlbGYuc3Rkb3V0KQogCisgICAgIyBHZW5lcmljIGNvbXBsZXRpb24gZnVuY3Rpb25zLiAgSW5kaXZpZHVhbCBjb21wbGV0ZV9mb28gbWV0aG9kcyBjYW4gYmUKKyAgICAjIGFzc2lnbmVkIGJlbG93IHRvIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NvbXBsZXRlX2xvY2F0aW9uKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhIGZpbGUvbW9kdWxlL2Z1bmN0aW9uIGxvY2F0aW9uIGZvciBicmVhay90YnJlYWsvY2xlYXIuCisgICAgICAgIGlmIGxpbmUuc3RyaXAoKS5lbmRzd2l0aCgoJzonLCAnLCcpKToKKyAgICAgICAgICAgICMgSGVyZSBjb21lcyBhIGxpbmUgbnVtYmVyIG9yIGEgY29uZGl0aW9uIHdoaWNoIHdlIGNhbid0IGNvbXBsZXRlLgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICMgRmlyc3QsIHRyeSB0byBmaW5kIG1hdGNoaW5nIGZ1bmN0aW9ucyAoaS5lLiBleHByZXNzaW9ucykuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX2NvbXBsZXRlX2V4cHJlc3Npb24odGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICByZXQgPSBbXQorICAgICAgICAjIFRoZW4sIHRyeSB0byBjb21wbGV0ZSBmaWxlIG5hbWVzIGFzIHdlbGwuCisgICAgICAgIGdsb2JzID0gZ2xvYi5nbG9iKHRleHQgKyAnKicpCisgICAgICAgIGZvciBmbiBpbiBnbG9iczoKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm4gKyAnLycpCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKGZuKSBhbmQgZm4ubG93ZXIoKS5lbmRzd2l0aCgoJy5weScsICcucHl3JykpOgorICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoZm4gKyAnOicpCisgICAgICAgIHJldHVybiByZXQKKworICAgIGRlZiBfY29tcGxldGVfYnBudW1iZXIoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICAjIENvbXBsZXRlIGEgYnJlYWtwb2ludCBudW1iZXIuICAoVGhpcyB3b3VsZCBiZSBtb3JlIGhlbHBmdWwgaWYgd2UgY291bGQKKyAgICAgICAgIyBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mbyBhbG9uZyB3aXRoIHRoZSBjb21wbGV0aW9ucywgc3VjaCBhcyBmaWxlL2xpbmUKKyAgICAgICAgIyBvZiB0aGUgYnJlYWtwb2ludC4pCisgICAgICAgIHJldHVybiBbc3RyKGkpIGZvciBpLCBicCBpbiBlbnVtZXJhdGUoYmRiLkJyZWFrcG9pbnQuYnBieW51bWJlcikKKyAgICAgICAgICAgICAgICBpZiBicCBpcyBub3QgTm9uZSBhbmQgc3RyKGkpLnN0YXJ0c3dpdGgodGV4dCldCisKKyAgICBkZWYgX2NvbXBsZXRlX2V4cHJlc3Npb24oc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICAjIENvbXBsZXRlIGFuIGFyYml0cmFyeSBleHByZXNzaW9uLgorICAgICAgICBpZiBub3Qgc2VsZi5jdXJmcmFtZToKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAjIENvbGxlY3QgZ2xvYmFscyBhbmQgbG9jYWxzLiAgSXQgaXMgdXN1YWxseSBub3QgcmVhbGx5IHNlbnNpYmxlIHRvIGFsc28KKyAgICAgICAgIyBjb21wbGV0ZSBidWlsdGlucywgYW5kIHRoZXkgY2x1dHRlciB0aGUgbmFtZXNwYWNlIHF1aXRlIGhlYXZpbHksIHNvIHdlCisgICAgICAgICMgbGVhdmUgdGhlbSBvdXQuCisgICAgICAgIG5zID0gc2VsZi5jdXJmcmFtZS5mX2dsb2JhbHMuY29weSgpCisgICAgICAgIG5zLnVwZGF0ZShzZWxmLmN1cmZyYW1lX2xvY2FscykKKyAgICAgICAgaWYgJy4nIGluIHRleHQ6CisgICAgICAgICAgICAjIFdhbGsgYW4gYXR0cmlidXRlIGNoYWluIHVwIHRvIHRoZSBsYXN0IHBhcnQsIHNpbWlsYXIgdG8gd2hhdAorICAgICAgICAgICAgIyBybGNvbXBsZXRlciBkb2VzLiAgVGhpcyB3aWxsIGJhaWwgaWYgYW55IG9mIHRoZSBwYXJ0cyBhcmUgbm90CisgICAgICAgICAgICAjIHNpbXBsZSBhdHRyaWJ1dGUgYWNjZXNzLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQuCisgICAgICAgICAgICBkb3R0ZWQgPSB0ZXh0LnNwbGl0KCcuJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvYmogPSBuc1tkb3R0ZWRbMF1dCisgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gZG90dGVkWzE6LTFdOgorICAgICAgICAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgIHByZWZpeCA9ICcuJy5qb2luKGRvdHRlZFs6LTFdKSArICcuJworICAgICAgICAgICAgcmV0dXJuIFtwcmVmaXggKyBuIGZvciBuIGluIGRpcihvYmopIGlmIG4uc3RhcnRzd2l0aChkb3R0ZWRbLTFdKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQ29tcGxldGUgYSBzaW1wbGUgbmFtZS4KKyAgICAgICAgICAgIHJldHVybiBbbiBmb3IgbiBpbiBucy5rZXlzKCkgaWYgbi5zdGFydHN3aXRoKHRleHQpXQorCiAgICAgIyBDb21tYW5kIGRlZmluaXRpb25zLCBjYWxsZWQgYnkgY21kbG9vcCgpCiAgICAgIyBUaGUgYXJndW1lbnQgaXMgdGhlIHJlbWFpbmluZyBzdHJpbmcgb24gdGhlIGNvbW1hbmQgbGluZQogICAgICMgUmV0dXJuIHRydWUgdG8gZXhpdCBmcm9tIHRoZSBjb21tYW5kIGxvb3AKQEAgLTUyNiw2ICs1ODQsOCBAQAogICAgICAgICAgICAgc2VsZi5jb21tYW5kc19kZWZpbmluZyA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLnByb21wdCA9IHByb21wdF9iYWNrCiAKKyAgICBjb21wbGV0ZV9jb21tYW5kcyA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2JyZWFrKHNlbGYsIGFyZywgdGVtcG9yYXJ5ID0gMCk6CiAgICAgICAgICIiImIocmVhaykgWyAoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXSBdCiAgICAgICAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcy4KQEAgLTYyOCw2ICs2ODgsOSBAQAogCiAgICAgZG9fYiA9IGRvX2JyZWFrCiAKKyAgICBjb21wbGV0ZV9icmVhayA9IF9jb21wbGV0ZV9sb2NhdGlvbgorICAgIGNvbXBsZXRlX2IgPSBfY29tcGxldGVfbG9jYXRpb24KKwogICAgIGRlZiBkb190YnJlYWsoc2VsZiwgYXJnKToKICAgICAgICAgIiIidGJyZWFrIFsgKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl0gXQogICAgICAgICBTYW1lIGFyZ3VtZW50cyBhcyBicmVhaywgYnV0IHNldHMgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludDogaXQKQEAgLTYzNSw2ICs2OTgsOCBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5kb19icmVhayhhcmcsIDEpCiAKKyAgICBjb21wbGV0ZV90YnJlYWsgPSBfY29tcGxldGVfbG9jYXRpb24KKwogICAgIGRlZiBsaW5laW5mbyhzZWxmLCBpZGVudGlmaWVyKToKICAgICAgICAgZmFpbGVkID0gKE5vbmUsIE5vbmUsIE5vbmUpCiAgICAgICAgICMgSW5wdXQgaXMgaWRlbnRpZmllciwgbWF5IGJlIGluIHNpbmdsZSBxdW90ZXMKQEAgLTcwNCw2ICs3NjksOCBAQAogICAgICAgICAgICAgICAgIGJwLmVuYWJsZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdFbmFibGVkICVzJyAlIGJwKQogCisgICAgY29tcGxldGVfZW5hYmxlID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fZGlzYWJsZShzZWxmLCBhcmcpOgogICAgICAgICAiIiJkaXNhYmxlIGJwbnVtYmVyIFticG51bWJlciAuLi5dCiAgICAgICAgIERpc2FibGVzIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mCkBAIC03MjIsNiArNzg5LDggQEAKICAgICAgICAgICAgICAgICBicC5kaXNhYmxlKCkKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0Rpc2FibGVkICVzJyAlIGJwKQogCisgICAgY29tcGxldGVfZGlzYWJsZSA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2NvbmRpdGlvbihzZWxmLCBhcmcpOgogICAgICAgICAiIiJjb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl0KICAgICAgICAgU2V0IGEgbmV3IGNvbmRpdGlvbiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2gKQEAgLTc0NSw2ICs4MTQsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ05ldyBjb25kaXRpb24gc2V0IGZvciBicmVha3BvaW50ICVkLicgJSBicC5udW1iZXIpCiAKKyAgICBjb21wbGV0ZV9jb25kaXRpb24gPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19pZ25vcmUoc2VsZiwgYXJnKToKICAgICAgICAgIiIiaWdub3JlIGJwbnVtYmVyIFtjb3VudF0KICAgICAgICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmCkBAIC03NzYsNiArODQ3LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ1dpbGwgc3RvcCBuZXh0IHRpbWUgYnJlYWtwb2ludCAlZCBpcyByZWFjaGVkLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBicC5udW1iZXIpCiAKKyAgICBjb21wbGV0ZV9pZ25vcmUgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19jbGVhcihzZWxmLCBhcmcpOgogICAgICAgICAiIiJjbChlYXIpIGZpbGVuYW1lOmxpbmVub1xuY2woZWFyKSBbYnBudW1iZXIgW2JwbnVtYmVyLi4uXV0KICAgICAgICAgV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXIKQEAgLTgyNCw2ICs4OTcsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRGVsZXRlZCAlcycgJSBicCkKICAgICBkb19jbCA9IGRvX2NsZWFyICMgJ2MnIGlzIGFscmVhZHkgYW4gYWJicmV2aWF0aW9uIGZvciAnY29udGludWUnCiAKKyAgICBjb21wbGV0ZV9jbGVhciA9IF9jb21wbGV0ZV9sb2NhdGlvbgorICAgIGNvbXBsZXRlX2NsID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgZG9fd2hlcmUoc2VsZiwgYXJnKToKICAgICAgICAgIiIidyhoZXJlKQogICAgICAgICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLgpAQCAtMTAwNyw2ICsxMDgzLDggQEAKICAgICAgICAgc3lzLnNldHRyYWNlKHNlbGYudHJhY2VfZGlzcGF0Y2gpCiAgICAgICAgIHNlbGYubGFzdGNtZCA9IHAubGFzdGNtZAogCisgICAgY29tcGxldGVfZGVidWcgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX3F1aXQoc2VsZiwgYXJnKToKICAgICAgICAgIiIicSh1aXQpXG5leGl0CiAgICAgICAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuCkBAIC0xMDkzLDYgKzExNzEsMTAgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcwogCisgICAgY29tcGxldGVfcHJpbnQgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorICAgIGNvbXBsZXRlX3AgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorICAgIGNvbXBsZXRlX3BwID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb19saXN0KHNlbGYsIGFyZyk6CiAgICAgICAgICIiImwoaXN0KSBbZmlyc3QgWyxsYXN0XSB8IC5dCiAKQEAgLTExNzMsNiArMTI1NSw4IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fcHJpbnRfbGluZXMobGluZXMsIGxpbmVubykKIAorICAgIGNvbXBsZXRlX3NvdXJjZSA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgX3ByaW50X2xpbmVzKHNlbGYsIGxpbmVzLCBzdGFydCwgYnJlYWtzPSgpLCBmcmFtZT1Ob25lKToKICAgICAgICAgIiIiUHJpbnQgYSByYW5nZSBvZiBsaW5lcy4iIiIKICAgICAgICAgaWYgZnJhbWU6CkBAIC0xMjI3LDYgKzEzMTEsOCBAQAogICAgICAgICAjIE5vbmUgb2YgdGhlIGFib3ZlLi4uCiAgICAgICAgIHNlbGYubWVzc2FnZSh0eXBlKHZhbHVlKSkKIAorICAgIGNvbXBsZXRlX3doYXRpcyA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fZGlzcGxheShzZWxmLCBhcmcpOgogICAgICAgICAiIiJkaXNwbGF5IFtleHByZXNzaW9uXQogCkBAIC0xMjQ0LDYgKzEzMzAsOCBAQAogICAgICAgICAgICAgc2VsZi5kaXNwbGF5aW5nLnNldGRlZmF1bHQoc2VsZi5jdXJmcmFtZSwge30pW2FyZ10gPSB2YWwKICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnZGlzcGxheSAlczogJXInICUgKGFyZywgdmFsKSkKIAorICAgIGNvbXBsZXRlX2Rpc3BsYXkgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX3VuZGlzcGxheShzZWxmLCBhcmcpOgogICAgICAgICAiIiJ1bmRpc3BsYXkgW2V4cHJlc3Npb25dCiAKQEAgLTEyNTksNiArMTM0NywxMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5kaXNwbGF5aW5nLnBvcChzZWxmLmN1cmZyYW1lLCBOb25lKQogCisgICAgZGVmIGNvbXBsZXRlX3VuZGlzcGxheShzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgIHJldHVybiBbZSBmb3IgZSBpbiBzZWxmLmRpc3BsYXlpbmcuZ2V0KHNlbGYuY3VyZnJhbWUsIHt9KQorICAgICAgICAgICAgICAgIGlmIGUuc3RhcnRzd2l0aCh0ZXh0KV0KKwogICAgIGRlZiBkb19pbnRlcmFjdChzZWxmLCBhcmcpOgogICAgICAgICAiIiJpbnRlcmFjdAogCkBAIC0xMzEzLDYgKzE0MDUsOSBAQAogICAgICAgICBpZiBhcmdzWzBdIGluIHNlbGYuYWxpYXNlczoKICAgICAgICAgICAgIGRlbCBzZWxmLmFsaWFzZXNbYXJnc1swXV0KIAorICAgIGRlZiBjb21wbGV0ZV91bmFsaWFzKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgcmV0dXJuIFthIGZvciBhIGluIHNlbGYuYWxpYXNlcyBpZiBhLnN0YXJ0c3dpdGgodGV4dCldCisKICAgICAjIExpc3Qgb2YgYWxsIHRoZSBjb21tYW5kcyBtYWtpbmcgdGhlIHByb2dyYW0gcmVzdW1lIGV4ZWN1dGlvbi4KICAgICBjb21tYW5kc19yZXN1bWluZyA9IFsnZG9fY29udGludWUnLCAnZG9fc3RlcCcsICdkb19uZXh0JywgJ2RvX3JldHVybicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX3F1aXQnLCAnZG9fanVtcCddCmRpZmYgLS1naXQgYS9MaWIvcGlja2xlLnB5IGIvTGliL3BpY2tsZS5weQppbmRleCBkMTBhYzc3Ni4uOWU2NTM2OCAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yMyw4ICsyMyw2IEBACiAKICIiIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIiAgICAgICAjIENvZGUgdmVyc2lvbgotCiBmcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUsIEJ1aWx0aW5GdW5jdGlvblR5cGUKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKIGZyb20gY29weXJlZyBpbXBvcnQgX2V4dGVuc2lvbl9yZWdpc3RyeSwgX2ludmVydGVkX3JlZ2lzdHJ5LCBfZXh0ZW5zaW9uX2NhY2hlCkBAIC0yOTksOCArMjk3LDggQEAKICAgICAgICAgICAgIGYoc2VsZiwgb2JqKSAjIENhbGwgdW5ib3VuZCBtZXRob2Qgd2l0aCBleHBsaWNpdCBzZWxmCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIENoZWNrIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKLSAgICAgICAgcmVkdWNlID0gZGlzcGF0Y2hfdGFibGUuZ2V0KHQpCisgICAgICAgICMgQ2hlY2sgcHJpdmF0ZSBkaXNwYXRjaCB0YWJsZSBpZiBhbnksIG9yIGVsc2UgY29weXJlZy5kaXNwYXRjaF90YWJsZQorICAgICAgICByZWR1Y2UgPSBnZXRhdHRyKHNlbGYsICdkaXNwYXRjaF90YWJsZScsIGRpc3BhdGNoX3RhYmxlKS5nZXQodCkKICAgICAgICAgaWYgcmVkdWNlOgogICAgICAgICAgICAgcnYgPSByZWR1Y2Uob2JqKQogICAgICAgICBlbHNlOgpAQCAtMzc3LDcgKzM3NSw3IEBACiAgICAgICAgICAgICAjIGFsbG93aW5nIHByb3RvY29sIDAgYW5kIDEgdG8gd29yayBub3JtYWxseS4gIEZvciB0aGlzIHRvCiAgICAgICAgICAgICAjIHdvcmssIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBfX3JlZHVjZV9fIHNob3VsZCBiZQogICAgICAgICAgICAgIyBjYWxsZWQgX19uZXdvYmpfXywgYW5kIGl0cyBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgICAgICAgICAgIyBuZXctc3R5bGUgY2xhc3MuICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIF9fbmV3b2JqX18KKyAgICAgICAgICAgICMgY2xhc3MuICBUaGUgaW1wbGVtZW50YXRpb24gZm9yIF9fbmV3b2JqX18KICAgICAgICAgICAgICMgc2hvdWxkIGJlIGFzIGZvbGxvd3MsIGFsdGhvdWdoIHBpY2tsZSBoYXMgbm8gd2F5IHRvCiAgICAgICAgICAgICAjIHZlcmlmeSB0aGlzOgogICAgICAgICAgICAgIwpAQCAtNDQwLDYgKzQzOCwxNCBAQAogICAgICAgICBzZWxmLndyaXRlKE5PTkUpCiAgICAgZGlzcGF0Y2hbdHlwZShOb25lKV0gPSBzYXZlX25vbmUKIAorICAgIGRlZiBzYXZlX2VsbGlwc2lzKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwoRWxsaXBzaXMsICdFbGxpcHNpcycpCisgICAgZGlzcGF0Y2hbdHlwZShFbGxpcHNpcyldID0gc2F2ZV9lbGxpcHNpcworCisgICAgZGVmIHNhdmVfbm90aW1wbGVtZW50ZWQoc2VsZiwgb2JqKToKKyAgICAgICAgc2VsZi5zYXZlX2dsb2JhbChOb3RJbXBsZW1lbnRlZCwgJ05vdEltcGxlbWVudGVkJykKKyAgICBkaXNwYXRjaFt0eXBlKE5vdEltcGxlbWVudGVkKV0gPSBzYXZlX25vdGltcGxlbWVudGVkCisKICAgICBkZWYgc2F2ZV9ib29sKHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gMjoKICAgICAgICAgICAgIHNlbGYud3JpdGUob2JqIGFuZCBORVdUUlVFIG9yIE5FV0ZBTFNFKQpAQCAtMTMzMiw3ICsxMzM4LDcgQEAKICAgICByZXR1cm4gZG9jdGVzdC50ZXN0bW9kKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzLCBhcmdwYXJzZQorICAgIGltcG9ydCBhcmdwYXJzZQogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAogICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBjb250ZW50cyBvZiB0aGUgcGlja2xlIGZpbGVzJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IGVjNmNjNTMuLjY2ZjRlZGQgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTUxMCwxMCArNTEwLDcgQEAKICAgICBlbGlmIHMgPT0gYiIwMSI6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBpbnQocykKLSAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgcmV0dXJuIGludChzKQorICAgIHJldHVybiBpbnQocykKIAogZGVmIHJlYWRfZGVjaW1hbG5sX2xvbmcoZik6CiAgICAgciIiIgpAQCAtMTY0Miw2ICsxNjM5LDggQEAKICAgICAgIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCiAKICAgICAgIE5PVEU6ICBjaGVja3MgZm9yIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIHdlbnQgYXdheSBpbiBQeXRob24gMi4zLgorICAgICAgTk9URTogIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNsYXNzZXMgZG9lcworICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlIGluIFB5dGhvbiAzLgogICAgICAgIiIiKSwKIAogICAgIEkobmFtZT0nT0JKJywKZGlmZiAtLWdpdCBhL0xpYi9waXBlcy5weSBiL0xpYi9waXBlcy5weQppbmRleCA0Mjk3MDUzLi5mMWExNmY2IDEwMDY0NAotLS0gYS9MaWIvcGlwZXMucHkKKysrIGIvTGliL3BpcGVzLnB5CkBAIC02MCw3ICs2MCw5IEBACiBpbXBvcnQgcmUKIGltcG9ydCBvcwogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc3RyaW5nCisjIHdlIGltcG9ydCB0aGUgcXVvdGUgZnVuY3Rpb24gcmF0aGVyIHRoYW4gdGhlIG1vZHVsZSBmb3IgYmFja3dhcmQgY29tcGF0CisjIChxdW90ZSB1c2VkIHRvIGJlIGFuIHVuZG9jdW1lbnRlZCBidXQgdXNlZCBmdW5jdGlvbiBpbiBwaXBlcykKK2Zyb20gc2hsZXggaW1wb3J0IHF1b3RlCiAKIF9fYWxsX18gPSBbIlRlbXBsYXRlIl0KIApAQCAtMjQzLDIyICsyNDUsMyBAQAogICAgICAgICBjbWRsaXN0ID0gdHJhcGNtZCArICdcbicgKyBjbWRsaXN0ICsgJ1xuJyArIHJtY21kCiAgICAgIwogICAgIHJldHVybiBjbWRsaXN0Ci0KLQotIyBSZWxpYWJseSBxdW90ZSBhIHN0cmluZyBhcyBhIHNpbmdsZSBhcmd1bWVudCBmb3IgL2Jpbi9zaAotCi0jIFNhZmUgdW5xdW90ZWQKLV9zYWZlY2hhcnMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nKQotCi1kZWYgcXVvdGUoZmlsZSk6Ci0gICAgIiIiUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBmaWxlIHN0cmluZy4iIiIKLSAgICBmb3IgYyBpbiBmaWxlOgotICAgICAgICBpZiBjIG5vdCBpbiBfc2FmZWNoYXJzOgotICAgICAgICAgICAgYnJlYWsKLSAgICBlbHNlOgotICAgICAgICBpZiBub3QgZmlsZToKLSAgICAgICAgICAgIHJldHVybiAiJyciCi0gICAgICAgIHJldHVybiBmaWxlCi0gICAgIyB1c2Ugc2luZ2xlIHF1b3RlcywgYW5kIHB1dCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlcwotICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCi0gICAgcmV0dXJuICInIiArIGZpbGUucmVwbGFjZSgiJyIsICInXCInXCInIikgKyAiJyIKZGlmZiAtLWdpdCBhL0xpYi9wa2d1dGlsLnB5IGIvTGliL3BrZ3V0aWwucHkKaW5kZXggNTFkYTBiMS4uOGJkZWIzMiAxMDA2NDQKLS0tIGEvTGliL3BrZ3V0aWwucHkKKysrIGIvTGliL3BrZ3V0aWwucHkKQEAgLTIsOCArMiwxMCBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXAKIGltcG9ydCBvcy5wYXRoCitmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiBmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCiAKIF9fYWxsX18gPSBbCkBAIC0yMSw3ICsyMyw3IEBACiAgICAgaWYgbWFnaWMgIT0gaW1wLmdldF9tYWdpYygpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgc3RyZWFtLnJlYWQoNCkgIyBTa2lwIHRpbWVzdGFtcAorICAgIHN0cmVhbS5yZWFkKDgpICMgU2tpcCB0aW1lc3RhbXAgYW5kIHNpemUKICAgICByZXR1cm4gbWFyc2hhbC5sb2FkKHN0cmVhbSkKIAogCkBAIC0xNTUsNiArMTU3LDQ5IEBACiAKIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyA9IHNpbXBsZWdlbmVyaWMoaXRlcl9pbXBvcnRlcl9tb2R1bGVzKQogCisjIEltcGxlbWVudCBhIGZpbGUgd2Fsa2VyIGZvciB0aGUgbm9ybWFsIGltcG9ydGxpYiBwYXRoIGhvb2sKK2RlZiBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKGltcG9ydGVyLCBwcmVmaXg9JycpOgorICAgIGlmIGltcG9ydGVyLnBhdGggaXMgTm9uZSBvciBub3Qgb3MucGF0aC5pc2RpcihpbXBvcnRlci5wYXRoKToKKyAgICAgICAgcmV0dXJuCisKKyAgICB5aWVsZGVkID0ge30KKyAgICBpbXBvcnQgaW5zcGVjdAorICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWVzID0gb3MubGlzdGRpcihpbXBvcnRlci5wYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKKyAgICAgICAgZmlsZW5hbWVzID0gW10KKyAgICBmaWxlbmFtZXMuc29ydCgpICAjIGhhbmRsZSBwYWNrYWdlcyBiZWZvcmUgc2FtZS1uYW1lZCBtb2R1bGVzCisKKyAgICBmb3IgZm4gaW4gZmlsZW5hbWVzOgorICAgICAgICBtb2RuYW1lID0gaW5zcGVjdC5nZXRtb2R1bGVuYW1lKGZuKQorICAgICAgICBpZiBtb2RuYW1lPT0nX19pbml0X18nIG9yIG1vZG5hbWUgaW4geWllbGRlZDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihpbXBvcnRlci5wYXRoLCBmbikKKyAgICAgICAgaXNwa2cgPSBGYWxzZQorCisgICAgICAgIGlmIG5vdCBtb2RuYW1lIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpIGFuZCAnLicgbm90IGluIGZuOgorICAgICAgICAgICAgbW9kbmFtZSA9IGZuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBvcy5saXN0ZGlyKHBhdGgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzIGxpa2UgaW1wb3J0IGRvZXMKKyAgICAgICAgICAgICAgICBkaXJjb250ZW50cyA9IFtdCisgICAgICAgICAgICBmb3IgZm4gaW4gZGlyY29udGVudHM6CisgICAgICAgICAgICAgICAgc3VibmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKKyAgICAgICAgICAgICAgICBpZiBzdWJuYW1lPT0nX19pbml0X18nOgorICAgICAgICAgICAgICAgICAgICBpc3BrZyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUgICAgIyBub3QgYSBwYWNrYWdlCisKKyAgICAgICAgaWYgbW9kbmFtZSBhbmQgJy4nIG5vdCBpbiBtb2RuYW1lOgorICAgICAgICAgICAgeWllbGRlZFttb2RuYW1lXSA9IDEKKyAgICAgICAgICAgIHlpZWxkIHByZWZpeCArIG1vZG5hbWUsIGlzcGtnCisKK2l0ZXJfaW1wb3J0ZXJfbW9kdWxlcy5yZWdpc3RlcigKKyAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIsIF9pdGVyX2ZpbGVfZmluZGVyX21vZHVsZXMpCiAKIGNsYXNzIEltcEltcG9ydGVyOgogICAgICIiIlBFUCAzMDIgSW1wb3J0ZXIgdGhhdCB3cmFwcyBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IGFsZ29yaXRobQpAQCAtMTY4LDYgKzIxMyw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD1Ob25lKToKKyAgICAgICAgd2FybigiVGhpcyBlbXVsYXRpb24gaXMgZGVwcmVjYXRlZCwgdXNlICdpbXBvcnRsaWInIGluc3RlYWQiLAorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgpAQCAtMjMyLDYgKzI3OSw4IEBACiAgICAgY29kZSA9IHNvdXJjZSA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGV0Yyk6CisgICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCiAgICAgICAgIHNlbGYuZnVsbG5hbWUgPSBmdWxsbmFtZQpAQCAtMjU2LDcgKzMwNSw3IEBACiAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgc2VsZi5maWxlLmNsb3NlZDoKICAgICAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KICAgICAgICAgICAgIGlmIG1vZF90eXBlPT1pbXAuUFlfU09VUkNFOgotICAgICAgICAgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JVJykKKyAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyJykKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGUgaW4gKGltcC5QWV9DT01QSUxFRCwgaW1wLkNfRVhURU5TSU9OKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpCiAKQEAgLTMwMSw3ICszNTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBtb2RfdHlwZT09aW1wLlBZX0NPTVBJTEVEOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuZmlsZW5hbWVbOi0xXSk6Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWVbOi0xXSwgJ3JVJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5maWxlbmFtZVs6LTFdLCAncicpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZi5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlPT1pbXAuUEtHX0RJUkVDVE9SWToKQEAgLTMxNSw5ICszNjQsOSBAQAogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWU9Tm9uZSk6CiAgICAgICAgIGZ1bGxuYW1lID0gc2VsZi5fZml4X25hbWUoZnVsbG5hbWUpCiAgICAgICAgIG1vZF90eXBlID0gc2VsZi5ldGNbMl0KLSAgICAgICAgaWYgc2VsZi5ldGNbMl09PWltcC5QS0dfRElSRUNUT1JZOgorICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBLR19ESVJFQ1RPUlk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2RlbGVnYXRlKCkuZ2V0X2ZpbGVuYW1lKCkKLSAgICAgICAgZWxpZiBzZWxmLmV0Y1syXSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgorICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCkBAIC0zNjYsMTAgKzQxNSw2IEBACiAgICAgVGhlIHJldHVybmVkIGltcG9ydGVyIGlzIGNhY2hlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQogICAgIGlmIGl0IHdhcyBuZXdseSBjcmVhdGVkIGJ5IGEgcGF0aCBob29rLgogCi0gICAgSWYgdGhlcmUgaXMgbm8gaW1wb3J0ZXIsIGEgd3JhcHBlciBhcm91bmQgdGhlIGJhc2ljIGltcG9ydAotICAgIG1hY2hpbmVyeSBpcyByZXR1cm5lZC4gVGhpcyB3cmFwcGVyIGlzIG5ldmVyIGluc2VydGVkIGludG8KLSAgICB0aGUgaW1wb3J0ZXIgY2FjaGUgKE5vbmUgaXMgaW5zZXJ0ZWQgaW5zdGVhZCkuCi0KICAgICBUaGUgY2FjaGUgKG9yIHBhcnQgb2YgaXQpIGNhbiBiZSBjbGVhcmVkIG1hbnVhbGx5IGlmIGEKICAgICByZXNjYW4gb2Ygc3lzLnBhdGhfaG9va3MgaXMgbmVjZXNzYXJ5LgogICAgICIiIgpAQCAtMzc5LDE4ICs0MjQsMTIgQEAKICAgICAgICAgZm9yIHBhdGhfaG9vayBpbiBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpbXBvcnRlciA9IHBhdGhfaG9vayhwYXRoX2l0ZW0pCisgICAgICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuc2V0ZGVmYXVsdChwYXRoX2l0ZW0sIGltcG9ydGVyKQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaW1wb3J0ZXIgPSBOb25lCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnNldGRlZmF1bHQocGF0aF9pdGVtLCBpbXBvcnRlcikKLQotICAgIGlmIGltcG9ydGVyIGlzIE5vbmU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydGVyID0gSW1wSW1wb3J0ZXIocGF0aF9pdGVtKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBvcnRlciA9IE5vbmUKICAgICByZXR1cm4gaW1wb3J0ZXIKIAogCkBAIC0zOTgsNTUgKzQzNywzNyBAQAogICAgICIiIllpZWxkIFBFUCAzMDIgaW1wb3J0ZXJzIGZvciB0aGUgZ2l2ZW4gbW9kdWxlIG5hbWUKIAogICAgIElmIGZ1bGxuYW1lIGNvbnRhaW5zIGEgJy4nLCB0aGUgaW1wb3J0ZXJzIHdpbGwgYmUgZm9yIHRoZSBwYWNrYWdlCi0gICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBpbXBvcnRlcnMgZm9yIHN5cy5tZXRhX3BhdGgsCi0gICAgc3lzLnBhdGgsIGFuZCBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IG1hY2hpbmVyeSwgaW4gdGhhdCBvcmRlci4gIElmCi0gICAgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUKKyAgICBjb250YWluaW5nIGZ1bGxuYW1lLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbCByZWdpc3RlcmVkIHRvcCBsZXZlbAorICAgIGltcG9ydGVycyAoaS5lLiB0aG9zZSBvbiBib3RoIHN5cy5tZXRhX3BhdGggYW5kIHN5cy5wYXRoX2hvb2tzKS4KKworICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCiAgICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCiAKLSAgICBOb24gUEVQIDMwMiBtZWNoYW5pc21zIChlLmcuIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5KSB1c2VkIGJ5IHRoZQotICAgIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkgdG8gZmluZCBmaWxlcyBpbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbnMKLSAgICBhcmUgcGFydGlhbGx5IHN1cHBvcnRlZCwgYnV0IGFyZSBzZWFyY2hlZCBBRlRFUiBzeXMucGF0aC4gTm9ybWFsbHksCi0gICAgdGhlc2UgbG9jYXRpb25zIGFyZSBzZWFyY2hlZCBCRUZPUkUgc3lzLnBhdGgsIHByZXZlbnRpbmcgc3lzLnBhdGgKLSAgICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCi0KLSAgICBGb3IgdGhpcyB0byBjYXVzZSBhIHZpc2libGUgZGlmZmVyZW5jZSBpbiBiZWhhdmlvdXIsIHRoZXJlIG11c3QKLSAgICBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBib3RoIHN5cy5wYXRoCi0gICAgYW5kIG9uZSBvZiB0aGUgbm9uIFBFUCAzMDIgZmlsZSBzeXN0ZW0gbWVjaGFuaXNtcy4gSW4gdGhpcyBjYXNlLAotICAgIHRoZSBlbXVsYXRpb24gd2lsbCBmaW5kIHRoZSBmb3JtZXIgdmVyc2lvbiwgd2hpbGUgdGhlIGJ1aWx0aW4KLSAgICBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgotCi0gICAgSXRlbXMgb2YgdGhlIGZvbGxvd2luZyB0eXBlcyBjYW4gYmUgYWZmZWN0ZWQgYnkgdGhpcyBkaXNjcmVwYW5jeToKLSAgICAgICAgaW1wLkNfRVhURU5TSU9OLCBpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5QS0dfRElSRUNUT1JZCisgICAgSWYgbm8gbW9kdWxlIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGwgdG9wIGxldmVsIGltcG9ydGVycyBhcmUgcHJvZHVjZWQuCiAgICAgIiIiCiAgICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiUmVsYXRpdmUgbW9kdWxlIG5hbWVzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICBtc2cgPSAiUmVsYXRpdmUgbW9kdWxlIG5hbWUgeyFyfSBub3Qgc3VwcG9ydGVkIi5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZykKICAgICBpZiAnLicgaW4gZnVsbG5hbWU6CiAgICAgICAgICMgR2V0IHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXwotICAgICAgICBwa2cgPSAnLicuam9pbihmdWxsbmFtZS5zcGxpdCgnLicpWzotMV0pCi0gICAgICAgIGlmIHBrZyBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICBfX2ltcG9ydF9fKHBrZykKLSAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGtnXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KKyAgICAgICAgcGtnID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnKQorICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1twa2ddLCAnX19wYXRoX18nLCBOb25lKQorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KICAgICBlbHNlOgogICAgICAgICBmb3IgaW1wb3J0ZXIgaW4gc3lzLm1ldGFfcGF0aDoKICAgICAgICAgICAgIHlpZWxkIGltcG9ydGVyCiAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgIGZvciBpdGVtIGluIHBhdGg6CiAgICAgICAgIHlpZWxkIGdldF9pbXBvcnRlcihpdGVtKQotICAgIGlmICcuJyBub3QgaW4gZnVsbG5hbWU6Ci0gICAgICAgIHlpZWxkIEltcEltcG9ydGVyKCkKIAogZGVmIGdldF9sb2FkZXIobW9kdWxlX29yX25hbWUpOgogICAgICIiIkdldCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBtb2R1bGVfb3JfbmFtZQogCi0gICAgSWYgdGhlIG1vZHVsZSBvciBwYWNrYWdlIGlzIGFjY2Vzc2libGUgdmlhIHRoZSBub3JtYWwgaW1wb3J0Ci0gICAgbWVjaGFuaXNtLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSByZWxldmFudCBwYXJ0IG9mIHRoYXQgbWFjaGluZXJ5Ci0gICAgaXMgcmV0dXJuZWQuICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCisgICAgUmV0dXJucyBOb25lIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgogICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGFscmVhZHkgaW1wb3J0ZWQsIGl0cyBjb250YWluaW5nIHBhY2thZ2UKICAgICAoaWYgYW55KSBpcyBpbXBvcnRlZCwgaW4gb3JkZXIgdG8gZXN0YWJsaXNoIHRoZSBwYWNrYWdlIF9fcGF0aF9fLgotCi0gICAgVGhpcyBmdW5jdGlvbiB1c2VzIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUKLSAgICBsaW1pdGF0aW9ucyByZWdhcmRpbmcgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2gKLSAgICBhcyB0aGUgV2luZG93cyByZWdpc3RyeS4KICAgICAiIiIKICAgICBpZiBtb2R1bGVfb3JfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgbW9kdWxlX29yX25hbWUgPSBzeXMubW9kdWxlc1ttb2R1bGVfb3JfbmFtZV0KQEAgLTQ2MCwyMCArNDgxLDMzIEBACiAgICAgICAgIGZ1bGxuYW1lID0gbW9kdWxlX29yX25hbWUKICAgICByZXR1cm4gZmluZF9sb2FkZXIoZnVsbG5hbWUpCiAKKwogZGVmIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKToKICAgICAiIiJGaW5kIGEgUEVQIDMwMiAibG9hZGVyIiBvYmplY3QgZm9yIGZ1bGxuYW1lCiAKLSAgICBJZiBmdWxsbmFtZSBjb250YWlucyBkb3RzLCBwYXRoIG11c3QgYmUgdGhlIGNvbnRhaW5pbmcgcGFja2FnZSdzIF9fcGF0aF9fLgotICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4gVGhpcyBmdW5jdGlvbiB1c2VzCi0gICAgaXRlcl9pbXBvcnRlcnMoKSwgYW5kIGlzIHRodXMgc3ViamVjdCB0byB0aGUgc2FtZSBsaW1pdGF0aW9ucyByZWdhcmRpbmcKLSAgICBwbGF0Zm9ybS1zcGVjaWZpYyBzcGVjaWFsIGltcG9ydCBsb2NhdGlvbnMgc3VjaCBhcyB0aGUgV2luZG93cyByZWdpc3RyeS4KKyAgICBUaGlzIGlzIHMgY29udmVuaWVuY2Ugd3JhcHBlciBhcm91bmQgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAgdGhhdAorICAgIHNldHMgdGhlICpwYXRoKiBhcmd1bWVudCBjb3JyZWN0bHkgd2hlbiBzZWFyY2hpbmcgZm9yIHN1Ym1vZHVsZXMsIGFuZAorICAgIGFsc28gZW5zdXJlcyBwYXJlbnQgcGFja2FnZXMgKGlmIGFueSkgYXJlIGltcG9ydGVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yCisgICAgc3VibW9kdWxlcy4KICAgICAiIiIKLSAgICBmb3IgaW1wb3J0ZXIgaW4gaXRlcl9pbXBvcnRlcnMoZnVsbG5hbWUpOgotICAgICAgICBsb2FkZXIgPSBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKLSAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgotCi0gICAgcmV0dXJuIE5vbmUKKyAgICBpZiBmdWxsbmFtZS5zdGFydHN3aXRoKCcuJyk6CisgICAgICAgIG1zZyA9ICJSZWxhdGl2ZSBtb2R1bGUgbmFtZSB7IXJ9IG5vdCBzdXBwb3J0ZWQiLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQorICAgIHBhdGggPSBOb25lCisgICAgcGtnX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KKyAgICBpZiBwa2dfbmFtZToKKyAgICAgICAgcGtnID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgIHBhdGggPSBnZXRhdHRyKHBrZywgIl9fcGF0aF9fIiwgTm9uZSkKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbXBvcnRsaWIuZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IsIFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZXg6CisgICAgICAgICMgVGhpcyBoYWNrIGZpeGVzIGFuIGltcGVkYW5jZSBtaXNtYXRjaCBiZXR3ZWVuIHBrZ3V0aWwgYW5kCisgICAgICAgICMgaW1wb3J0bGliLCB3aGVyZSB0aGUgbGF0dGVyIHRocm93cyBvdGhlciBlcnJvcnMgZm9yIGNhc2VzIHdoZXJlCisgICAgICAgICMgcGtndXRpbCBwcmV2aW91c2x5IHRocmV3IEltcG9ydEVycm9yCisgICAgICAgIG1zZyA9ICJFcnJvciB3aGlsZSBmaW5kaW5nIGxvYWRlciBmb3IgeyFyfSAoe306IHt9KSIKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChmdWxsbmFtZSwgdHlwZShleCksIGV4KSkgZnJvbSBleAogCiAKIGRlZiBleHRlbmRfcGF0aChwYXRoLCBuYW1lKToKQEAgLTUxNCwyMSArNTQ4LDQxIEBACiAgICAgICAgICMgZnJvemVuIHBhY2thZ2UuICBSZXR1cm4gdGhlIHBhdGggdW5jaGFuZ2VkIGluIHRoYXQgY2FzZS4KICAgICAgICAgcmV0dXJuIHBhdGgKIAotICAgIHBuYW1lID0gb3MucGF0aC5qb2luKCpuYW1lLnNwbGl0KCcuJykpICMgUmVjb25zdGl0dXRlIGFzIHJlbGF0aXZlIHBhdGgKICAgICBzbmFtZV9wa2cgPSBuYW1lICsgIi5wa2ciCi0gICAgaW5pdF9weSA9ICJfX2luaXRfXy5weSIKIAogICAgIHBhdGggPSBwYXRoWzpdICMgU3RhcnQgd2l0aCBhIGNvcHkgb2YgdGhlIGV4aXN0aW5nIHBhdGgKIAotICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRpciwgc3RyKSBvciBub3Qgb3MucGF0aC5pc2RpcihkaXIpOgorICAgIHBhcmVudF9wYWNrYWdlLCBfLCBmaW5hbF9uYW1lID0gbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICBpZiBwYXJlbnRfcGFja2FnZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VhcmNoX3BhdGggPSBzeXMubW9kdWxlc1twYXJlbnRfcGFja2FnZV0uX19wYXRoX18KKyAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgIyBXZSBjYW4ndCBkbyBhbnl0aGluZzogZmluZF9sb2FkZXIoKSByZXR1cm5zIE5vbmUgd2hlbgorICAgICAgICAgICAgIyBwYXNzZWQgYSBkb3R0ZWQgbmFtZS4KKyAgICAgICAgICAgIHJldHVybiBwYXRoCisgICAgZWxzZToKKyAgICAgICAgc2VhcmNoX3BhdGggPSBzeXMucGF0aAorCisgICAgZm9yIGRpciBpbiBzZWFyY2hfcGF0aDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGlyLCBzdHIpOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgc3ViZGlyID0gb3MucGF0aC5qb2luKGRpciwgcG5hbWUpCi0gICAgICAgICMgWFhYIFRoaXMgbWF5IHN0aWxsIGFkZCBkdXBsaWNhdGUgZW50cmllcyB0byBwYXRoIG9uCi0gICAgICAgICMgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcwotICAgICAgICBpbml0ZmlsZSA9IG9zLnBhdGguam9pbihzdWJkaXIsIGluaXRfcHkpCi0gICAgICAgIGlmIHN1YmRpciBub3QgaW4gcGF0aCBhbmQgb3MucGF0aC5pc2ZpbGUoaW5pdGZpbGUpOgotICAgICAgICAgICAgcGF0aC5hcHBlbmQoc3ViZGlyKQorCisgICAgICAgIGZpbmRlciA9IGdldF9pbXBvcnRlcihkaXIpCisgICAgICAgIGlmIGZpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgSXMgdGhpcyBmaW5kZXIgUEVQIDQyMCBjb21wbGlhbnQ/CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6CisgICAgICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmaW5hbF9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE5vLCBubyBuZWVkIHRvIGNhbGwgaXQKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBOb25lCisgICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQorCisgICAgICAgICAgICBmb3IgcG9ydGlvbiBpbiBwb3J0aW9uczoKKyAgICAgICAgICAgICAgICAjIFhYWCBUaGlzIG1heSBzdGlsbCBhZGQgZHVwbGljYXRlIGVudHJpZXMgdG8gcGF0aCBvbgorICAgICAgICAgICAgICAgICMgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcworICAgICAgICAgICAgICAgIGlmIHBvcnRpb24gbm90IGluIHBhdGg6CisgICAgICAgICAgICAgICAgICAgIHBhdGguYXBwZW5kKHBvcnRpb24pCisKICAgICAgICAgIyBYWFggSXMgdGhpcyB0aGUgcmlnaHQgdGhpbmcgZm9yIHN1YnBhY2thZ2VzIGxpa2Ugem9wZS5hcHA/CiAgICAgICAgICMgSXQgbG9va3MgZm9yIGEgZmlsZSBuYW1lZCAiem9wZS5hcHAucGtnIgogICAgICAgICBwa2dmaWxlID0gb3MucGF0aC5qb2luKGRpciwgc25hbWVfcGtnKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL0NEUk9NLnB5IGIvTGliL3BsYXQtbGludXgvQ0RST00ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9DRFJPTS5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvQ0RST00ucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9ETEZDTi5weSBiL0xpYi9wbGF0LWxpbnV4L0RMRkNOLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvRExGQ04ucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L0RMRkNOLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvSU4ucHkgYi9MaWIvcGxhdC1saW51eC9JTi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL0lOLnB5CnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9JTi5weQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL1RZUEVTLnB5IGIvTGliL3BsYXQtbGludXgvVFlQRVMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9UWVBFUy5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvVFlQRVMucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9yZWdlbiBiL0xpYi9wbGF0LWxpbnV4L3JlZ2VuCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvcmVnZW4KcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L3JlZ2VuCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggOTg1YTlmOC4uYjY1MzgyMiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTExLDYgKzExMSw3IEBACiAKIF9fdmVyc2lvbl9fID0gJzEuMC43JwogCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBzeXMsIG9zLCByZQogCiAjIyMgR2xvYmFscyAmIENvbnN0YW50cwpAQCAtMTMwLDE1ICsxMzEsMTUgQEAKIAogIyMjIFBsYXRmb3JtIHNwZWNpZmljIEFQSXMKIAotX2xpYmNfc2VhcmNoID0gcmUuY29tcGlsZShyJyhfX2xpYmNfaW5pdCknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd8JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnKEdMSUJDXyhbMC05Ll0rKSknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICd8JwotICAgICAgICAgICAgICAgICAgICAgICAgICAnKGxpYmMoX1x3Kyk/XC5zbyg/OlwuKFxkWzAtOS5dKikpPyknLCByZS5BU0NJSSkKK19saWJjX3NlYXJjaCA9IHJlLmNvbXBpbGUoYicoX19saWJjX2luaXQpJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3wnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInKEdMSUJDXyhbMC05Ll0rKSknCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInfCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnInKGxpYmMoX1x3Kyk/XC5zbyg/OlwuKFxkWzAtOS5dKikpPyknLCByZS5BU0NJSSkKIAogZGVmIGxpYmNfdmVyKGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsbGliPScnLHZlcnNpb249JycsCiAKLSAgICAgICAgICAgICBjaHVua3NpemU9MjA0OCk6CisgICAgICAgICAgICAgY2h1bmtzaXplPTE2Mzg0KToKIAogICAgICIiIiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIGxpYmMgdmVyc2lvbiB0aGF0IHRoZSBmaWxlIGV4ZWN1dGFibGUKICAgICAgICAgKHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIpIGlzIGxpbmtlZCBhZ2FpbnN0LgpAQCAtMTU5LDE3ICsxNjAsMjIgQEAKICAgICAgICAgIyBhYmxlIHRvIG9wZW4gc3ltbGlua3MgZm9yIHJlYWRpbmcKICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLnBhdGgucmVhbHBhdGgoZXhlY3V0YWJsZSkKICAgICBmID0gb3BlbihleGVjdXRhYmxlLCdyYicpCi0gICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkuZGVjb2RlKCdsYXRpbi0xJykKKyAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKQogICAgIHBvcyA9IDAKICAgICB3aGlsZSAxOgotICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnkscG9zKQorICAgICAgICBpZiBiJ2xpYmMnIGluIGJpbmFyeSBvciBiJ0dMSUJDJyBpbiBiaW5hcnk6CisgICAgICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnkscG9zKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbSA9IE5vbmUKICAgICAgICAgaWYgbm90IG06Ci0gICAgICAgICAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKS5kZWNvZGUoJ2xhdGluLTEnKQorICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKICAgICAgICAgICAgIGlmIG5vdCBiaW5hcnk6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHBvcyA9IDAKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGxpYmNpbml0LGdsaWJjLGdsaWJjdmVyc2lvbixzbyx0aHJlYWRzLHNvdmVyc2lvbiA9IG0uZ3JvdXBzKCkKKyAgICAgICAgbGliY2luaXQsZ2xpYmMsZ2xpYmN2ZXJzaW9uLHNvLHRocmVhZHMsc292ZXJzaW9uID0gWworICAgICAgICAgICAgcy5kZWNvZGUoJ2xhdGluMScpIGlmIHMgaXMgbm90IE5vbmUgZWxzZSBzCisgICAgICAgICAgICBmb3IgcyBpbiBtLmdyb3VwcygpXQogICAgICAgICBpZiBsaWJjaW5pdCBhbmQgbm90IGxpYjoKICAgICAgICAgICAgIGxpYiA9ICdsaWJjJwogICAgICAgICBlbGlmIGdsaWJjOgpAQCAtMjU1LDcgKzI2MSw3IEBACiBfc3VwcG9ydGVkX2Rpc3RzID0gKAogICAgICdTdVNFJywgJ2RlYmlhbicsICdmZWRvcmEnLCAncmVkaGF0JywgJ2NlbnRvcycsCiAgICAgJ21hbmRyYWtlJywgJ21hbmRyaXZhJywgJ3JvY2tzJywgJ3NsYWNrd2FyZScsICd5ZWxsb3dkb2cnLCAnZ2VudG9vJywKLSAgICAnVW5pdGVkTGludXgnLCAndHVyYm9saW51eCcpCisgICAgJ1VuaXRlZExpbnV4JywgJ3R1cmJvbGludXgnLCAnYXJjaCcsICdtYWdlaWEnKQogCiBkZWYgX3BhcnNlX3JlbGVhc2VfZmlsZShmaXJzdGxpbmUpOgogCkBAIC0zNTcsOTIgKzM2MywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2Rpc3RzPXN1cHBvcnRlZF9kaXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MCkKIAotY2xhc3MgX3BvcGVuOgotCi0gICAgIiIiIEZhaXJseSBwb3J0YWJsZSAoYWx0ZXJuYXRpdmUpIHBvcGVuIGltcGxlbWVudGF0aW9uLgotCi0gICAgICAgIFRoaXMgaXMgbW9zdGx5IG5lZWRlZCBpbiBjYXNlIG9zLnBvcGVuKCkgaXMgbm90IGF2YWlsYWJsZSwgb3IKLSAgICAgICAgZG9lc24ndCB3b3JrIGFzIGFkdmVydGlzZWQsIGUuZy4gaW4gV2luOVggR1VJIHByb2dyYW1zIGxpa2UKLSAgICAgICAgUHl0aG9uV2luIG9yIElETEUuCi0KLSAgICAgICAgV3JpdGluZyB0byB0aGUgcGlwZSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4KLQotICAgICIiIgotICAgIHRtcGZpbGUgPSAnJwotICAgIHBpcGUgPSBOb25lCi0gICAgYnVmc2l6ZSA9IE5vbmUKLSAgICBtb2RlID0gJ3InCi0KLSAgICBkZWYgX19pbml0X18oc2VsZixjbWQsbW9kZT0ncicsYnVmc2l6ZT1Ob25lKToKLQotICAgICAgICBpZiBtb2RlICE9ICdyJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3BvcGVuKCktZW11bGF0aW9uIG9ubHkgc3VwcG9ydHMgcmVhZCBtb2RlJykKLSAgICAgICAgaW1wb3J0IHRlbXBmaWxlCi0gICAgICAgIHNlbGYudG1wZmlsZSA9IHRtcGZpbGUgPSB0ZW1wZmlsZS5ta3RlbXAoKQotICAgICAgICBvcy5zeXN0ZW0oY21kICsgJyA+ICVzJyAlIHRtcGZpbGUpCi0gICAgICAgIHNlbGYucGlwZSA9IG9wZW4odG1wZmlsZSwncmInKQotICAgICAgICBzZWxmLmJ1ZnNpemUgPSBidWZzaXplCi0gICAgICAgIHNlbGYubW9kZSA9IG1vZGUKLQotICAgIGRlZiByZWFkKHNlbGYpOgotCi0gICAgICAgIHJldHVybiBzZWxmLnBpcGUucmVhZCgpCi0KLSAgICBkZWYgcmVhZGxpbmVzKHNlbGYpOgotCi0gICAgICAgIGlmIHNlbGYuYnVmc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBpcGUucmVhZGxpbmVzKCkKLQotICAgIGRlZiBjbG9zZShzZWxmLAotCi0gICAgICAgICAgICAgIHJlbW92ZT1vcy51bmxpbmssZXJyb3I9b3MuZXJyb3IpOgotCi0gICAgICAgIGlmIHNlbGYucGlwZToKLSAgICAgICAgICAgIHJjID0gc2VsZi5waXBlLmNsb3NlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJjID0gMjU1Ci0gICAgICAgIGlmIHNlbGYudG1wZmlsZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZW1vdmUoc2VsZi50bXBmaWxlKQotICAgICAgICAgICAgZXhjZXB0IGVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICAjIEFsaWFzCi0gICAgX19kZWxfXyA9IGNsb3NlCi0KIGRlZiBwb3BlbihjbWQsIG1vZGU9J3InLCBidWZzaXplPS0xKToKIAogICAgICIiIiBQb3J0YWJsZSBwb3BlbigpIGludGVyZmFjZS4KICAgICAiIiIKLSAgICAjIEZpbmQgYSB3b3JraW5nIHBvcGVuIGltcGxlbWVudGF0aW9uIHByZWZlcnJpbmcgd2luMzJwaXBlLnBvcGVuCi0gICAgIyBvdmVyIG9zLnBvcGVuIG92ZXIgX3BvcGVuCi0gICAgcG9wZW4gPSBOb25lCi0gICAgaWYgb3MuZW52aXJvbi5nZXQoJ09TJywnJykgPT0gJ1dpbmRvd3NfTlQnOgotICAgICAgICAjIE9uIE5UIHdpbjMycGlwZSBzaG91bGQgd29yazsgb24gV2luOXggaXQgaGFuZ3MgZHVlIHRvIGJ1Z3MKLSAgICAgICAgIyBpbiB0aGUgTVMgQyBsaWIgKHNlZSBNUyBLbm93bGVkZ2VCYXNlIGFydGljbGUgUTE1MDk1NikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IHdpbjMycGlwZQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3BlbiA9IHdpbjMycGlwZS5wb3BlbgotICAgIGlmIHBvcGVuIGlzIE5vbmU6Ci0gICAgICAgIGlmIGhhc2F0dHIob3MsJ3BvcGVuJyk6Ci0gICAgICAgICAgICBwb3BlbiA9IG9zLnBvcGVuCi0gICAgICAgICAgICAjIENoZWNrIHdoZXRoZXIgaXQgd29ya3MuLi4gaXQgZG9lc24ndCBpbiBHVUkgcHJvZ3JhbXMKLSAgICAgICAgICAgICMgb24gV2luZG93cyBwbGF0Zm9ybXMKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIFhYWCBPdGhlcnMgdG9vID8KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuKCcnKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcG9wZW4gPSBfcG9wZW4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBvcGVuID0gX3BvcGVuCi0gICAgaWYgYnVmc2l6ZSBpcyBOb25lOgotICAgICAgICByZXR1cm4gcG9wZW4oY21kLG1vZGUpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlLGJ1ZnNpemUpCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigndXNlIG9zLnBvcGVuIGluc3RlYWQnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICByZXR1cm4gb3MucG9wZW4oY21kLCBtb2RlLCBidWZzaXplKQogCiBkZWYgX25vcm1fdmVyc2lvbih2ZXJzaW9uLCBidWlsZD0nJyk6CiAKQEAgLTc3NCw3ICs3MDEsNyBAQAogICAgIHBsID0gcGxpc3RsaWIucmVhZFBsaXN0KGZuKQogICAgIHJlbGVhc2UgPSBwbFsnUHJvZHVjdFZlcnNpb24nXQogICAgIHZlcnNpb25pbmZvPSgnJywgJycsICcnKQotICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpWzRdCisgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZQogICAgIGlmIG1hY2hpbmUgaW4gKCdwcGMnLCAnUG93ZXIgTWFjaW50b3NoJyk6CiAgICAgICAgICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZ2VzdGFsdCBiYXNlZCBjb2RlCiAgICAgICAgIG1hY2hpbmUgPSAnUG93ZXJQQycKQEAgLTExMDEsNiArMTAyOCw5IEBACiAKICMjIyBQb3J0YWJsZSB1bmFtZSgpIGludGVyZmFjZQogCit1bmFtZV9yZXN1bHQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJ1bmFtZV9yZXN1bHQiLAorICAgICAgICAgICAgICAgICAgICAic3lzdGVtIG5vZGUgcmVsZWFzZSB2ZXJzaW9uIG1hY2hpbmUgcHJvY2Vzc29yIikKKwogX3VuYW1lX2NhY2hlID0gTm9uZQogCiBkZWYgdW5hbWUoKToKQEAgLTEyMzUsNyArMTE2NSw3IEBACiAgICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgICByZWxlYXNlID0gJ1Zpc3RhJwogCi0gICAgX3VuYW1lX2NhY2hlID0gc3lzdGVtLG5vZGUscmVsZWFzZSx2ZXJzaW9uLG1hY2hpbmUscHJvY2Vzc29yCisgICAgX3VuYW1lX2NhY2hlID0gdW5hbWVfcmVzdWx0KHN5c3RlbSxub2RlLHJlbGVhc2UsdmVyc2lvbixtYWNoaW5lLHByb2Nlc3NvcikKICAgICByZXR1cm4gX3VuYW1lX2NhY2hlCiAKICMjIyBEaXJlY3QgaW50ZXJmYWNlcyB0byBzb21lIG9mIHRoZSB1bmFtZSgpIHJldHVybiB2YWx1ZXMKQEAgLTEyNDcsNyArMTE3Nyw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVswXQorICAgIHJldHVybiB1bmFtZSgpLnN5c3RlbQogCiBkZWYgbm9kZSgpOgogCkBAIC0xMjU3LDcgKzExODcsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbMV0KKyAgICByZXR1cm4gdW5hbWUoKS5ub2RlCiAKIGRlZiByZWxlYXNlKCk6CiAKQEAgLTEyNjYsNyArMTE5Niw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVsyXQorICAgIHJldHVybiB1bmFtZSgpLnJlbGVhc2UKIAogZGVmIHZlcnNpb24oKToKIApAQCAtMTI3NSw3ICsxMjA1LDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzNdCisgICAgcmV0dXJuIHVuYW1lKCkudmVyc2lvbgogCiBkZWYgbWFjaGluZSgpOgogCkBAIC0xMjg0LDcgKzEyMTQsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbNF0KKyAgICByZXR1cm4gdW5hbWUoKS5tYWNoaW5lCiAKIGRlZiBwcm9jZXNzb3IoKToKIApAQCAtMTI5Niw3ICsxMjI2LDcgQEAKICAgICAgICAgZS5nLiAgTmV0QlNEIGRvZXMgdGhpcy4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzVdCisgICAgcmV0dXJuIHVuYW1lKCkucHJvY2Vzc29yCiAKICMjIyBWYXJpb3VzIEFQSXMgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBzeXMudmVyc2lvbgogCmRpZmYgLS1naXQgYS9MaWIvcGxpc3RsaWIucHkgYi9MaWIvcGxpc3RsaWIucHkKaW5kZXggMmU3ZTUxMi4uNDFmZDhmMiAxMDA2NDQKLS0tIGEvTGliL3BsaXN0bGliLnB5CisrKyBiL0xpYi9wbGlzdGxpYi5weQpAQCAtMjM3LDIwICsyMzcsMjYgQEAKICAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJkYXRhIikKIAogICAgIGRlZiB3cml0ZURpY3Qoc2VsZiwgZCk6Ci0gICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJkaWN0IikKLSAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKLSAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgia2V5Iiwga2V5KQotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBpZiBkOgorICAgICAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImRpY3QiKQorICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbXM6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKKyAgICAgICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImtleSIsIGtleSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCisgICAgICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJkaWN0IikKIAogICAgIGRlZiB3cml0ZUFycmF5KHNlbGYsIGFycmF5KToKLSAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImFycmF5IikKLSAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImFycmF5IikKKyAgICAgICAgaWYgYXJyYXk6CisgICAgICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiYXJyYXkiKQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuZW5kRWxlbWVudCgiYXJyYXkiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJhcnJheSIpCiAKIAogY2xhc3MgX0ludGVybmFsRGljdChkaWN0KToKQEAgLTI2NiwxMyArMjcyLDEzIEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiB2YWx1ZQogCiAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIGF0dHIsIHZhbHVlKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJBdHRyaWJ1dGUgYWNjZXNzIGZyb20gcGxpc3QgZGljdHMgaXMgZGVwcmVjYXRlZCwgdXNlIGRba2V5XSAiCi0gICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmW2F0dHJdID0gdmFsdWUKIAogICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBhdHRyKToKQEAgLTI4MiwxNCArMjg4LDE0IEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKIGNsYXNzIERpY3QoX0ludGVybmFsRGljdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIlRoZSBwbGlzdGxpYi5EaWN0IGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSBidWlsdGluIGRpY3QgaW5zdGVhZCIsCi0gICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKIApAQCAtMzAyLDcgKzMwOCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJUaGUgUGxpc3QgY2xhc3MgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSByZWFkUGxpc3QoKSBhbmQgIgotICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKICAgICBkZWYgZnJvbUZpbGUoY2xzLCBwYXRoT3JGaWxlKToKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IDg0ZWE4OGQuLmQ0MmQ5ZGQgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtMjUwLDE1ICsyNTAsMTggQEAKIAogICAgIGRlZiBxdWl0KHNlbGYpOgogICAgICAgICAiIiJTaWdub2ZmOiBjb21taXQgY2hhbmdlcyBvbiBzZXJ2ZXIsIHVubG9jayBtYWlsYm94LCBjbG9zZSBjb25uZWN0aW9uLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQotICAgICAgICBleGNlcHQgZXJyb3JfcHJvdG8gYXMgdmFsOgotICAgICAgICAgICAgcmVzcCA9IHZhbAotICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQotICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICBkZWwgc2VsZi5maWxlLCBzZWxmLnNvY2sKKyAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdRVUlUJykKKyAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKKwogICAgICNfX2RlbF9fID0gcXVpdAogCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IDJlMzYyNWIuLmNiOTM3OTYgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtODgsNyArODgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiAoYSwgKSArIHApCiAgICAgICAgIGlmIHZhbGlkX3R5cGVzOgogICAgICAgICAgICAgIyBNdXN0IGhhdmUgYSBtaXh0dXJlIG9mIHRleHQgYW5kIGJpbmFyeSBkYXRhCi0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb25lbnRzLiIpIGZyb20gTm9uZQogICAgICAgICByYWlzZQogICAgIHJldHVybiBwYXRoCiAKZGlmZiAtLWdpdCBhL0xpYi9wcm9maWxlLnB5IGIvTGliL3Byb2ZpbGUucHkKaW5kZXggMjk3ZTMyZC4uNzQzZTc3ZCAxMDA3NTUKLS0tIGEvTGliL3Byb2ZpbGUucHkKKysrIGIvTGliL3Byb2ZpbGUucHkKQEAgLTgzLDI2ICs4Myw2IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHByb2YucHJpbnRfc3RhdHMoc29ydCkKIAotaWYgaGFzYXR0cihvcywgInRpbWVzIik6Ci0gICAgZGVmIF9nZXRfdGltZV90aW1lcyh0aW1lcj1vcy50aW1lcyk6Ci0gICAgICAgIHQgPSB0aW1lcigpCi0gICAgICAgIHJldHVybiB0WzBdICsgdFsxXQotCi0jIFVzaW5nIGdldHJ1c2FnZSgzKSBpcyBiZXR0ZXIgdGhhbiBjbG9jaygzKSBpZiBhdmFpbGFibGU6Ci0jIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgZ2V0cnVzYWdlIGhhcyBhIGhpZ2hlciByZXNvbHV0aW9uCi0jIEZ1cnRoZXJtb3JlLCBvbiBhIFBPU0lYIHN5c3RlbSwgcmV0dXJucyBtaWNyb3NlY29uZHMsIHdoaWNoCi0jIHdyYXAgYXJvdW5kIGFmdGVyIDM2bWluLgotX2hhc19yZXMgPSAwCi10cnk6Ci0gICAgaW1wb3J0IHJlc291cmNlCi0gICAgcmVzZ2V0cnVzYWdlID0gbGFtYmRhOiByZXNvdXJjZS5nZXRydXNhZ2UocmVzb3VyY2UuUlVTQUdFX1NFTEYpCi0gICAgZGVmIF9nZXRfdGltZV9yZXNvdXJjZSh0aW1lcj1yZXNnZXRydXNhZ2UpOgotICAgICAgICB0ID0gdGltZXIoKQotICAgICAgICByZXR1cm4gdFswXSArIHRbMV0KLSAgICBfaGFzX3JlcyA9IDEKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KIGNsYXNzIFByb2ZpbGU6CiAgICAgIiIiUHJvZmlsZXIgY2xhc3MuCiAKQEAgLTE1NSwyMCArMTM1LDggQEAKICAgICAgICAgc2VsZi5iaWFzID0gYmlhcyAgICAgIyBNYXRlcmlhbGl6ZSBpbiBsb2NhbCBkaWN0IGZvciBsb29rdXAgc3BlZWQuCiAKICAgICAgICAgaWYgbm90IHRpbWVyOgotICAgICAgICAgICAgaWYgX2hhc19yZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHJlc2dldHJ1c2FnZQotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3Jlc291cmNlCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIodGltZSwgJ2Nsb2NrJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHNlbGYuZ2V0X3RpbWUgPSB0aW1lLmNsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIob3MsICd0aW1lcycpOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBvcy50aW1lcwotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3RpbWVzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZWxmLmdldF90aW1lID0gdGltZS50aW1lCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCisgICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUucHJvY2Vzc190aW1lCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2kKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGltZXIgPSB0aW1lcgogICAgICAgICAgICAgdCA9IHNlbGYudGltZXIoKSAjIHRlc3Qgb3V0IHRpbWVyIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9MaWIvcHN0YXRzLnB5IGIvTGliL3BzdGF0cy5weQppbmRleCAzZjBhZGQyLi4xM2Q5NDRjIDEwMDY0NAotLS0gYS9MaWIvcHN0YXRzLnB5CisrKyBiL0xpYi9wc3RhdHMucHkKQEAgLTY3NCwxMyArNjc0LDE0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3AKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpbXBvcnQgc3lzCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6CiAgICAgICAgIGluaXRwcm9maWxlID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICBpbml0cHJvZmlsZSA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGJyb3dzZXIgPSBQcm9maWxlQnJvd3Nlcihpbml0cHJvZmlsZSkKKyAgICAgICAgZm9yIHByb2ZpbGUgaW4gc3lzLmFyZ3ZbMjpdOgorICAgICAgICAgICAgYnJvd3Nlci5kb19hZGQocHJvZmlsZSkKICAgICAgICAgcHJpbnQoIldlbGNvbWUgdG8gdGhlIHByb2ZpbGUgc3RhdGlzdGljcyBicm93c2VyLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCiAgICAgICAgIGJyb3dzZXIuY21kbG9vcCgpCiAgICAgICAgIHByaW50KCJHb29kYnllLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCmRpZmYgLS1naXQgYS9MaWIvcHlfY29tcGlsZS5weSBiL0xpYi9weV9jb21waWxlLnB5CmluZGV4IDVhZGI3MGEuLjYyZDY5YWQgMTAwNjQ0Ci0tLSBhL0xpYi9weV9jb21waWxlLnB5CisrKyBiL0xpYi9weV9jb21waWxlLnB5CkBAIC0xMTAsOSArMTEwLDExIEBACiAgICAgIiIiCiAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGUpIGFzIGY6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChvcy5mc3RhdChmLmZpbGVubygpKS5zdF9tdGltZSkKKyAgICAgICAgICAgIHN0ID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KG9zLnN0YXQoZmlsZSkuc3RfbXRpbWUpCisgICAgICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZSkKKyAgICAgICAgdGltZXN0YW1wID0gaW50KHN0LnN0X210aW1lKQorICAgICAgICBzaXplID0gc3Quc3Rfc2l6ZSAmIDB4RkZGRkZGRkYKICAgICAgICAgY29kZXN0cmluZyA9IGYucmVhZCgpCiAgICAgdHJ5OgogICAgICAgICBjb2Rlb2JqZWN0ID0gYnVpbHRpbnMuY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCAnZXhlYycsCkBAIC0xMzksNiArMTQxLDcgQEAKICAgICB3aXRoIG9wZW4oY2ZpbGUsICd3YicpIGFzIGZjOgogICAgICAgICBmYy53cml0ZShiJ1wwXDBcMFwwJykKICAgICAgICAgd3JfbG9uZyhmYywgdGltZXN0YW1wKQorICAgICAgICB3cl9sb25nKGZjLCBzaXplKQogICAgICAgICBtYXJzaGFsLmR1bXAoY29kZW9iamVjdCwgZmMpCiAgICAgICAgIGZjLmZsdXNoKCkKICAgICAgICAgZmMuc2VlaygwLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3B5Y2xici5weSBiL0xpYi9weWNsYnIucHkKaW5kZXggNjVlOWZiZS4uOWVjMDVlZSAxMDA2NDQKLS0tIGEvTGliL3B5Y2xici5weQorKysgYi9MaWIvcHljbGJyLnB5CkBAIC0zOSw4ICszOSwxMCBAQAogICAgICAgICBsaW5lbm8gLS0gdGhlIGxpbmUgaW4gdGhlIGZpbGUgb24gd2hpY2ggdGhlIGNsYXNzIHN0YXRlbWVudCBvY2N1cnJlZAogIiIiCiAKK2ltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdG9rZW5pemUKIGZyb20gdG9rZW4gaW1wb3J0IE5BTUUsIERFREVOVCwgT1AKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKQEAgLTEzNSwxOSArMTM3LDI0IEBACiAgICAgIyBTZWFyY2ggdGhlIHBhdGggZm9yIHRoZSBtb2R1bGUKICAgICBmID0gTm9uZQogICAgIGlmIGlucGFja2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgZiwgZm5hbWUsIChfcywgX20sIHR5KSA9IGltcC5maW5kX21vZHVsZShtb2R1bGUsIHBhdGgpCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aAogICAgIGVsc2U6Ci0gICAgICAgIGYsIGZuYW1lLCAoX3MsIF9tLCB0eSkgPSBpbXAuZmluZF9tb2R1bGUobW9kdWxlLCBwYXRoICsgc3lzLnBhdGgpCi0gICAgaWYgdHkgPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbZm5hbWVdCi0gICAgICAgIHBhdGggPSBbZm5hbWVdICsgcGF0aAotICAgICAgICBmLCBmbmFtZSwgKF9zLCBfbSwgdHkpID0gaW1wLmZpbmRfbW9kdWxlKCdfX2luaXRfXycsIFtmbmFtZV0pCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aCArIHN5cy5wYXRoCisgICAgbG9hZGVyID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxtb2R1bGUsIHNlYXJjaF9wYXRoKQorICAgIGZuYW1lID0gbG9hZGVyLmdldF9maWxlbmFtZShmdWxsbW9kdWxlKQogICAgIF9tb2R1bGVzW2Z1bGxtb2R1bGVdID0gZGljdAotICAgIGlmIHR5ICE9IGltcC5QWV9TT1VSQ0U6CisgICAgaWYgbG9hZGVyLmlzX3BhY2thZ2UoZnVsbG1vZHVsZSk6CisgICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbb3MucGF0aC5kaXJuYW1lKGZuYW1lKV0KKyAgICB0cnk6CisgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKGZ1bGxtb2R1bGUpCisgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CiAgICAgICAgICMgbm90IFB5dGhvbiBzb3VyY2UsIGNhbid0IGRvIGFueXRoaW5nIHdpdGggdGhpcyBtb2R1bGUKLSAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBkaWN0CiAKKyAgICBmID0gaW8uU3RyaW5nSU8oc291cmNlKQorCiAgICAgc3RhY2sgPSBbXSAjIHN0YWNrIG9mIChjbGFzcywgaW5kZW50KSBwYWlycwogCiAgICAgZyA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhmLnJlYWRsaW5lKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5CmluZGV4IDM3NjE2ZmIuLmFhMjk2YzQgMTAwNzU1Ci0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTEsNyArMSw3IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAiIiJHZW5lcmF0ZSBQeXRob24gZG9jdW1lbnRhdGlvbiBpbiBIVE1MIG9yIHRleHQgZm9yIGludGVyYWN0aXZlIHVzZS4KIAotSW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgZG8gImZyb20gcHlkb2MgaW1wb3J0IGhlbHAiIHRvIHByb3ZpZGUgb25saW5lCitJbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCBkbyAiZnJvbSBweWRvYyBpbXBvcnQgaGVscCIgdG8gcHJvdmlkZQogaGVscC4gIENhbGxpbmcgaGVscCh0aGluZykgb24gYSBQeXRob24gb2JqZWN0IGRvY3VtZW50cyB0aGUgb2JqZWN0LgogCiBPciwgYXQgdGhlIHNoZWxsIGNvbW1hbmQgbGluZSBvdXRzaWRlIG9mIFB5dGhvbjoKQEAgLTIyLDExICsyMiw2IEBACiBvcGVuIGEgV2ViIGJyb3dzZXIgdG8gaW50ZXJhY3RpdmVseSBicm93c2UgZG9jdW1lbnRhdGlvbi4gIFRoZSAtcCBvcHRpb24KIGNhbiBiZSB1c2VkIHdpdGggdGhlIC1iIG9wdGlvbiB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHNlcnZlciBwb3J0LgogCi1Gb3IgcGxhdGZvcm1zIHdpdGhvdXQgYSBjb21tYW5kIGxpbmUsICJweWRvYyAtZyIgc3RhcnRzIHRoZSBIVFRQIHNlcnZlcgotYW5kIGFsc28gcG9wcyB1cCBhIGxpdHRsZSB3aW5kb3cgZm9yIGNvbnRyb2xsaW5nIGl0LiAgVGhpcyBvcHRpb24gaXMKLWRlcHJlY2F0ZWQsIHNpbmNlIHRoZSBzZXJ2ZXIgY2FuIG5vdyBiZSBjb250cm9sbGVkIGRpcmVjdGx5IGZyb20gSFRUUAotY2xpZW50cy4KLQogUnVuICJweWRvYyAtdyA8bmFtZT4iIHRvIHdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZQogdG8gYSBmaWxlIG5hbWVkICI8bmFtZT4uaHRtbCIuCiAKQEAgLTQyLDcgKzM3LDYgQEAKIF9fYXV0aG9yX18gPSAiS2EtUGluZyBZZWUgPHBpbmdAbGZ3Lm9yZz4iCiBfX2RhdGVfXyA9ICIyNiBGZWJydWFyeSAyMDAxIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIgogX19jcmVkaXRzX18gPSAiIiJHdWlkbyB2YW4gUm9zc3VtLCBmb3IgYW4gZXhjZWxsZW50IHByb2dyYW1taW5nIGxhbmd1YWdlLgogVG9tbXkgQnVybmV0dGUsIHRoZSBvcmlnaW5hbCBjcmVhdG9yIG9mIG1hbnB5LgogUGF1bCBQcmVzY29kLCBmb3IgYWxsIGhpcyB3b3JrIG9uIG9ubGluZWhlbHAuCkBAIC01OSw2ICs1Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMTY4LDEyICsxNjMsMTIgQEAKIAogZGVmIHZpc2libGVuYW1lKG5hbWUsIGFsbD1Ob25lLCBvYmo9Tm9uZSk6CiAgICAgIiIiRGVjaWRlIHdoZXRoZXIgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIGEgdmFyaWFibGUuIiIiCi0gICAgIyBDZXJ0YWluIHNwZWNpYWwgbmFtZXMgYXJlIHJlZHVuZGFudC4KLSAgICBfaGlkZGVuX25hbWVzID0gKCdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3Nsb3RzX18nLCAnX19wYWNrYWdlX18nLAotICAgICAgICAgICAgICAgICAgICAgJ19fY2FjaGVkX18nLCAnX19hdXRob3JfXycsICdfX2NyZWRpdHNfXycsICdfX2RhdGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX192ZXJzaW9uX18nKQotICAgIGlmIG5hbWUgaW4gX2hpZGRlbl9uYW1lczogcmV0dXJuIDAKKyAgICAjIENlcnRhaW4gc3BlY2lhbCBuYW1lcyBhcmUgcmVkdW5kYW50IG9yIGludGVybmFsLgorICAgIGlmIG5hbWUgaW4geydfX2F1dGhvcl9fJywgJ19fYnVpbHRpbnNfXycsICdfX2NhY2hlZF9fJywgJ19fY3JlZGl0c19fJywKKyAgICAgICAgICAgICAgICAnX19kYXRlX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2luaXRpYWxpemluZ19fJywKKyAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAnX19wYXRoX18nLCAnX19xdWFsbmFtZV9fJywgJ19fc2xvdHNfXycsICdfX3ZlcnNpb25fXyd9OgorICAgICAgICByZXR1cm4gMAogICAgICMgUHJpdmF0ZSBuYW1lcyBhcmUgaGlkZGVuLCBidXQgc3BlY2lhbCBuYW1lcyBhcmUgZGlzcGxheWVkLgogICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbmFtZS5lbmRzd2l0aCgnX18nKTogcmV0dXJuIDEKICAgICAjIE5hbWVkdHVwbGVzIGhhdmUgcHVibGljIGZpZWxkcyBhbmQgbWV0aG9kcyB3aXRoIGEgc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZQpAQCAtMjI2LDIwICsyMjEsMzQgQEAKICAgICBtdGltZSA9IG9zLnN0YXQoZmlsZW5hbWUpLnN0X210aW1lCiAgICAgbGFzdHVwZGF0ZSwgcmVzdWx0ID0gY2FjaGUuZ2V0KGZpbGVuYW1lLCAoTm9uZSwgTm9uZSkpCiAgICAgaWYgbGFzdHVwZGF0ZSBpcyBOb25lIG9yIGxhc3R1cGRhdGUgPCBtdGltZToKLSAgICAgICAgaW5mbyA9IGluc3BlY3QuZ2V0bW9kdWxlaW5mbyhmaWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmlsZSA9IHRva2VuaXplLm9wZW4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgIyBtb2R1bGUgY2FuJ3QgYmUgb3BlbmVkLCBzbyBza2lwIGl0CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBpbmZvIGFuZCAnYicgaW4gaW5mb1syXTogIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCi0gICAgICAgICAgICB0cnk6IG1vZHVsZSA9IGltcC5sb2FkX21vZHVsZSgnX190ZW1wX18nLCBmaWxlLCBmaWxlbmFtZSwgaW5mb1sxOl0pCi0gICAgICAgICAgICBleGNlcHQ6IHJldHVybiBOb25lCisgICAgICAgIGJpbmFyeV9zdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0KKyAgICAgICAgYmluYXJ5X3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCisgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbiBiaW5hcnlfc3VmZml4ZXMpOgorICAgICAgICAgICAgIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCisgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKToKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX190ZW1wX18nKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICByZXN1bHQgPSAobW9kdWxlLl9fZG9jX18gb3IgJycpLnNwbGl0bGluZXMoKVswXQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3RlbXBfXyddCi0gICAgICAgIGVsc2U6ICMgdGV4dCBtb2R1bGVzIGNhbiBiZSBkaXJlY3RseSBleGFtaW5lZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB0ZXh0IG1vZHVsZXMgY2FuIGJlIGRpcmVjdGx5IGV4YW1pbmVkCiAgICAgICAgICAgICByZXN1bHQgPSBzb3VyY2Vfc3lub3BzaXMoZmlsZSkKICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCiAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9IChtdGltZSwgcmVzdWx0KQogICAgIHJldHVybiByZXN1bHQKIApAQCAtMzA1LDkgKzMxNCw4IEBACiAgICAgICAgIGVsaWYgZXhjIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBBIFN5bnRheEVycm9yIG9jY3VycmVkIGJlZm9yZSB3ZSBjb3VsZCBleGVjdXRlIHRoZSBtb2R1bGUuCiAgICAgICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydCh2YWx1ZS5maWxlbmFtZSwgaW5mbykKLSAgICAgICAgZWxpZiBleGMgaXMgSW1wb3J0RXJyb3IgYW5kIGV4dHJhY3RfdGIodGIpWy0xXVsyXT09J3NhZmVpbXBvcnQnOgotICAgICAgICAgICAgIyBUaGUgaW1wb3J0IGVycm9yIG9jY3VycmVkIGRpcmVjdGx5IGluIHRoaXMgZnVuY3Rpb24sCi0gICAgICAgICAgICAjIHdoaWNoIG1lYW5zIHRoZXJlIGlzIG5vIHN1Y2ggbW9kdWxlIGluIHRoZSBwYXRoLgorICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICAgICAgIyBObyBzdWNoIG1vZHVsZSBpbiB0aGUgcGF0aC4KICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBpbXBvcnRpbmcgcHJvY2Vzcy4KQEAgLTM2MSw3ICszNjksNyBAQAogCiAgICAgICAgIGRvY2xvYyA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05ET0NTIiwgc2VsZi5QWVRIT05ET0NTKQogCi0gICAgICAgIGJhc2VkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKKyAgICAgICAgYmFzZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlKG9zKSkgYW5kCiAgICAgICAgICAgICAob2JqZWN0Ll9fbmFtZV9fIGluICgnZXJybm8nLCAnZXhjZXB0aW9ucycsICdnYycsICdpbXAnLApAQCAtOTYzLDYgKzk3MSw5IEBACiAgICAgICAgIG1vZHBrZ3MgPSBbXQogICAgICAgICBpZiBzaGFkb3dlZCBpcyBOb25lOiBzaGFkb3dlZCA9IHt9CiAgICAgICAgIGZvciBpbXBvcnRlciwgbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW2Rpcl0pOgorICAgICAgICAgICAgaWYgYW55KCgweEQ4MDAgPD0gb3JkKGNoKSA8PSAweERGRkYpIGZvciBjaCBpbiBuYW1lKToKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbW9kcGtncy5hcHBlbmQoKG5hbWUsICcnLCBpc3BrZywgbmFtZSBpbiBzaGFkb3dlZCkpCiAgICAgICAgICAgICBzaGFkb3dlZFtuYW1lXSA9IDEKIApAQCAtMTgyNyw3ICsxODM4LDcgQEAKIAogICAgIGRlZiBpbnRybyhzZWxmKToKICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCi1XZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIG9ubGluZSBoZWxwIHV0aWxpdHkuCitXZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIGludGVyYWN0aXZlIGhlbHAgdXRpbGl0eS4KIAogSWYgdGhpcyBpcyB5b3VyIGZpcnN0IHRpbWUgdXNpbmcgUHl0aG9uLCB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0CiB0aGUgdHV0b3JpYWwgb24gdGhlIEludGVybmV0IGF0IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJXMvdHV0b3JpYWwvLgpAQCAtMjAxOCwxNCArMjAyOSw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLnF1aXQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgIyBYWFggU2tpcHBpbmcgdGhpcyBmaWxlIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcKLSAgICAgICAgICAgICMgdGhhdCBjYXVzZXMgcHl0aG9uIHRvIGNyYXNoIHdpdGggYSBzZWdmYXVsdC4KLSAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTkzMTkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVE9ETyBSZW1vdmUgdGhpcyBvbmNlIHRoZSBidWcgaXMgZml4ZWQuCi0gICAgICAgICAgICBpZiBtb2RuYW1lIGluIHsndGVzdC5iYWRzeW50YXhfcGVwMzEyMCcsICdiYWRzeW50YXhfcGVwMzEyMCd9OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KICAgICAgICAgICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUsIG1vZG5hbWUsICcnKQogICAgICAgICAgICAgZWxzZToKQEAgLTIwMzcsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfc291cmNlJyk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKG1vZG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMDc0LDI3MiArMjA3Nyw2IEBACiAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnKSAjIGlnbm9yZSBwcm9ibGVtcyBkdXJpbmcgaW1wb3J0CiAgICAgICAgIE1vZHVsZVNjYW5uZXIoKS5ydW4oY2FsbGJhY2ssIGtleSwgb25lcnJvcj1vbmVycm9yKQogCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXZWIgYnJvd3NlciBpbnRlcmZhY2UKLQotZGVmIHNlcnZlKHBvcnQsIGNhbGxiYWNrPU5vbmUsIGNvbXBsZXRlcj1Ob25lKToKLSAgICBpbXBvcnQgaHR0cC5zZXJ2ZXIsIGVtYWlsLm1lc3NhZ2UsIHNlbGVjdAotCi0gICAgbXNnID0gJ3RoZSBweWRvYy5zZXJ2ZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQnCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgRG9jSGFuZGxlcihodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKLSAgICAgICAgZGVmIHNlbmRfZG9jdW1lbnQoc2VsZiwgdGl0bGUsIGNvbnRlbnRzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKQotICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoaHRtbC5wYWdlKHRpdGxlLCBjb250ZW50cykuZW5jb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6IHBhc3MKLQotICAgICAgICBkZWYgZG9fR0VUKHNlbGYpOgotICAgICAgICAgICAgcGF0aCA9IHNlbGYucGF0aAotICAgICAgICAgICAgaWYgcGF0aFstNTpdID09ICcuaHRtbCc6IHBhdGggPSBwYXRoWzotNV0KLSAgICAgICAgICAgIGlmIHBhdGhbOjFdID09ICcvJzogcGF0aCA9IHBhdGhbMTpdCi0gICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoICE9ICcuJzoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9iaiA9IGxvY2F0ZShwYXRoLCBmb3JjZWxvYWQ9MSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXJyb3JEdXJpbmdJbXBvcnQgYXMgdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLCBodG1sLmVzY2FwZShzdHIodmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgb2JqOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQoZGVzY3JpYmUob2JqKSwgaHRtbC5kb2N1bWVudChvYmosIHBhdGgpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLAotJ25vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlcycgJSByZXByKHBhdGgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAotJzxiaWc+PGJpZz48c3Ryb25nPlB5dGhvbjogSW5kZXggb2YgTW9kdWxlczwvc3Ryb25nPjwvYmlnPjwvYmlnPicsCi0nI2ZmZmZmZicsICcjNzc5OWVlJykKLSAgICAgICAgICAgICAgICBkZWYgYmx0aW5saW5rKG5hbWUpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiVzLmh0bWwiPiVzPC9hPicgJSAobmFtZSwgbmFtZSkKLSAgICAgICAgICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyBpZiB4ICE9ICdfX21haW5fXyddCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBodG1sLm11bHRpY29sdW1uKG5hbWVzLCBibHRpbmxpbmspCi0gICAgICAgICAgICAgICAgaW5kaWNlcyA9IFsnPHA+JyArIGh0bWwuYmlnc2VjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0J1aWx0LWluIE1vZHVsZXMnLCAnI2ZmZmZmZicsICcjZWU3N2FhJywgY29udGVudHMpXQotCi0gICAgICAgICAgICAgICAgc2VlbiA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKLSAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaHRtbC5pbmRleChkaXIsIHNlZW4pKQotICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gaGVhZGluZyArICcgJy5qb2luKGluZGljZXMpICsgJycnPHAgYWxpZ249cmlnaHQ+Ci08Zm9udCBjb2xvcj0iIzkwOTA5MCIgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+PHN0cm9uZz4KLXB5ZG9jPC9zdHJvbmc+IGJ5IEthLVBpbmcgWWVlICZsdDtwaW5nQGxmdy5vcmcmZ3Q7PC9mb250PicnJwotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudCgnSW5kZXggb2YgTW9kdWxlcycsIGNvbnRlbnRzKQotCi0gICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCAqYXJncyk6IHBhc3MKLQotICAgIGNsYXNzIERvY1NlcnZlcihodHRwLnNlcnZlci5IVFRQU2VydmVyKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGNhbGxiYWNrKToKLSAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0JwotICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gKGhvc3QsIHBvcnQpCi0gICAgICAgICAgICBzZWxmLnVybCA9ICdodHRwOi8vJXM6JWQvJyAlIChob3N0LCBwb3J0KQotICAgICAgICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCi0gICAgICAgICAgICBzZWxmLmJhc2UuX19pbml0X18oc2VsZiwgc2VsZi5hZGRyZXNzLCBzZWxmLmhhbmRsZXIpCi0KLSAgICAgICAgZGVmIHNlcnZlX3VudGlsX3F1aXQoc2VsZik6Ci0gICAgICAgICAgICBpbXBvcnQgc2VsZWN0Ci0gICAgICAgICAgICBzZWxmLnF1aXQgPSBGYWxzZQotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgICAgICByZCwgd3IsIGV4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zb2NrZXQuZmlsZW5vKCldLCBbXSwgW10sIDEpCi0gICAgICAgICAgICAgICAgaWYgcmQ6IHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQotCi0gICAgICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmJhc2Uuc2VydmVyX2FjdGl2YXRlKHNlbGYpCi0gICAgICAgICAgICBpZiBzZWxmLmNhbGxiYWNrOiBzZWxmLmNhbGxiYWNrKHNlbGYpCi0KLSAgICBEb2NTZXJ2ZXIuYmFzZSA9IGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIKLSAgICBEb2NTZXJ2ZXIuaGFuZGxlciA9IERvY0hhbmRsZXIKLSAgICBEb2NIYW5kbGVyLk1lc3NhZ2VDbGFzcyA9IGVtYWlsLm1lc3NhZ2UuTWVzc2FnZQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgRG9jU2VydmVyKHBvcnQsIGNhbGxiYWNrKS5zZXJ2ZV91bnRpbF9xdWl0KCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgc2VsZWN0LmVycm9yKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb21wbGV0ZXI6IGNvbXBsZXRlcigpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ3JhcGhpY2FsIGludGVyZmFjZQotCi1kZWYgZ3VpKCk6Ci0gICAgIiIiR3JhcGhpY2FsIGludGVyZmFjZSAoc3RhcnRzIFdlYiBzZXJ2ZXIgYW5kIHBvcHMgdXAgYSBjb250cm9sIHdpbmRvdykuIiIiCi0KLSAgICBtc2cgPSAoJ3RoZSBweWRvYy5ndWkoKSBmdW5jdGlvbiBhbmQgInB5ZG9jIC1nIiBvcHRpb24gYXJlIGRlcHJlY2F0ZWRcbicsCi0gICAgICAgICAgICd1c2UgInB5ZG9jLmJyb3dzZSgpIGZ1bmN0aW9uIGFuZCAicHlkb2MgLWIiIG9wdGlvbiBpbnN0ZWFkLicpCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgR1VJOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93LCBwb3J0PTc0NjQpOgotICAgICAgICAgICAgc2VsZi53aW5kb3cgPSB3aW5kb3cKLSAgICAgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTm9uZQotCi0gICAgICAgICAgICBpbXBvcnQgdGtpbnRlcgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnRpdGxlX2xibCA9IHRraW50ZXIuTGFiZWwoc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J1N0YXJ0aW5nIHNlcnZlci4uLlxuICcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J29wZW4gYnJvd3NlcicsIGNvbW1hbmQ9c2VsZi5vcGVuLCBzdGF0ZT0nZGlzYWJsZWQnKQotICAgICAgICAgICAgc2VsZi5xdWl0X2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VydmVyX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdxdWl0IHNlcnZpbmcnLCBjb21tYW5kPXNlbGYucXVpdCwgc3RhdGU9J2Rpc2FibGVkJykKLQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwgPSB0a2ludGVyLkxhYmVsKHNlbGYuc2VhcmNoX2ZybSwgdGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQgPSB0a2ludGVyLkVudHJ5KHNlbGYuc2VhcmNoX2ZybSkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5iaW5kKCc8UmV0dXJuPicsIHNlbGYuc2VhcmNoKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VhcmNoX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdzdG9wJywgcGFkeT0wLCBjb21tYW5kPXNlbGYuc3RvcCwgc3RhdGU9J2Rpc2FibGVkJykKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICMgVHJ5aW5nIHRvIGhpZGUgYW5kIHNob3cgdGhpcyBidXR0b24gY3Jhc2hlcyB1bmRlciBXaW5kb3dzLgotICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9idG4ucGFjayhzaWRlPSdyaWdodCcpCi0KLSAgICAgICAgICAgIHNlbGYud2luZG93LnRpdGxlKCdweWRvYycpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5wcm90b2NvbCgnV01fREVMRVRFX1dJTkRPVycsIHNlbGYucXVpdCkKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYucXVpdF9idG4ucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYuc2VydmVyX2ZybS5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J3gnKQotCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9jdXNfc2V0KCkKLQotICAgICAgICAgICAgZm9udCA9ICgnaGVsdmV0aWNhJywgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIDggb3IgMTApCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QgPSB0a2ludGVyLkxpc3Rib3god2luZG93LCBmb250PWZvbnQsIGhlaWdodD02KQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmJpbmQoJzxCdXR0b24tMT4nLCBzZWxmLnNlbGVjdCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5iaW5kKCc8RG91YmxlLUJ1dHRvbi0xPicsIHNlbGYuZ290bykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3NjciA9IHRraW50ZXIuU2Nyb2xsYmFyKHdpbmRvdywKLSAgICAgICAgICAgICAgICBvcmllbnQ9J3ZlcnRpY2FsJywgY29tbWFuZD1zZWxmLnJlc3VsdF9sc3QueXZpZXcpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNlbGYucmVzdWx0X3Njci5zZXQpCi0KLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybSA9IHRraW50ZXIuRnJhbWUod2luZG93KQotICAgICAgICAgICAgc2VsZi5nb3RvX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdnbyB0byBzZWxlY3RlZCcsIGNvbW1hbmQ9c2VsZi5nb3RvKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdoaWRlIHJlc3VsdHMnLCBjb21tYW5kPXNlbGYuaGlkZSkKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4ucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0bi5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotCi0gICAgICAgICAgICBzZWxmLndpbmRvdy51cGRhdGUoKQotICAgICAgICAgICAgc2VsZi5taW53aWR0aCA9IHNlbGYud2luZG93LndpbmZvX3dpZHRoKCkKLSAgICAgICAgICAgIHNlbGYubWluaGVpZ2h0ID0gc2VsZi53aW5kb3cud2luZm9faGVpZ2h0KCkKLSAgICAgICAgICAgIHNlbGYuYmlnbWluaGVpZ2h0ID0gKHNlbGYuc2VydmVyX2ZybS53aW5mb19yZXFoZWlnaHQoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlYXJjaF9mcm0ud2luZm9fcmVxaGVpZ2h0KCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LndpbmZvX3JlcWhlaWdodCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybS53aW5mb19yZXFoZWlnaHQoKSkKLSAgICAgICAgICAgIHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0ID0gc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWQgPSAwCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy50ay53aWxsZGlzcGF0Y2goKQotCi0gICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCi0gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKAotICAgICAgICAgICAgICAgIHRhcmdldD1zZXJ2ZSwgYXJncz0ocG9ydCwgc2VsZi5yZWFkeSwgc2VsZi5xdWl0KSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiByZWFkeShzZWxmLCBzZXJ2ZXIpOgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLmNvbmZpZygKLSAgICAgICAgICAgICAgICB0ZXh0PSdQeXRob24gZG9jdW1lbnRhdGlvbiBzZXJ2ZXIgYXRcbicgKyBzZXJ2ZXIudXJsKQotICAgICAgICAgICAgc2VsZi5vcGVuX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnF1aXRfYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLQotICAgICAgICBkZWYgb3BlbihzZWxmLCBldmVudD1Ob25lLCB1cmw9Tm9uZSk6Ci0gICAgICAgICAgICB1cmwgPSB1cmwgb3Igc2VsZi5zZXJ2ZXIudXJsCi0gICAgICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgotICAgICAgICAgICAgd2ViYnJvd3Nlci5vcGVuKHVybCkKLQotICAgICAgICBkZWYgcXVpdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnF1aXQgPSAxCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5xdWl0KCkKLQotICAgICAgICBkZWYgc2VhcmNoKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAga2V5ID0gc2VsZi5zZWFyY2hfZW50LmdldCgpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuLnBhY2soc2lkZT0ncmlnaHQnKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwuY29uZmlnKHRleHQ9J1NlYXJjaGluZyBmb3IgIiVzIi4uLicgJSBrZXkpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5wYWNrKHNpZGU9J2xlZnQnKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZCgpCi0KLSAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICAgICAgICAgIGlmIHNlbGYuc2Nhbm5lcjoKLSAgICAgICAgICAgICAgICBzZWxmLnNjYW5uZXIucXVpdCA9IDEKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE1vZHVsZVNjYW5uZXIoKQotICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5zY2FubmVyLnJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi51cGRhdGUsIGtleSwgc2VsZi5kb25lKSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiB1cGRhdGUoc2VsZiwgcGF0aCwgbW9kbmFtZSwgZGVzYyk6Ci0gICAgICAgICAgICBpZiBtb2RuYW1lWy05Ol0gPT0gJy5fX2luaXRfXyc6Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWVbOi05XSArICcgKHBhY2thZ2UpJwotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0Lmluc2VydCgnZW5kJywKLSAgICAgICAgICAgICAgICBtb2RuYW1lICsgJyAtICcgKyAoZGVzYyBvciAnKG5vIGRlc2NyaXB0aW9uKScpKQotCi0gICAgICAgIGRlZiBzdG9wKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgaWYgc2VsZi5zY2FubmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lci5xdWl0ID0gMQotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLQotICAgICAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5jb25maWcodGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6IHNlbGYuc3RvcF9idG4uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0KLSAgICAgICAgZGVmIHNlbGVjdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotCi0gICAgICAgIGRlZiBnb3RvKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZWN0aW9uID0gc2VsZi5yZXN1bHRfbHN0LmN1cnNlbGVjdGlvbigpCi0gICAgICAgICAgICBpZiBzZWxlY3Rpb246Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IHNlbGYucmVzdWx0X2xzdC5nZXQoc2VsZWN0aW9uWzBdKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICAgICAgc2VsZi5vcGVuKHVybD1zZWxmLnNlcnZlci51cmwgKyBtb2RuYW1lICsgJy5odG1sJykKLQotICAgICAgICBkZWYgY29sbGFwc2Uoc2VsZik6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLmJpZ3dpZHRoID0gc2VsZi53aW5kb3cud2luZm9fd2lkdGgoKQotICAgICAgICAgICAgc2VsZi5iaWdoZWlnaHQgPSBzZWxmLndpbmRvdy53aW5mb19oZWlnaHQoKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fZ2VvbWV0cnkoJyVkeCVkJyAlIChzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9taW5zaXplKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KQotICAgICAgICAgICAgc2VsZi5leHBhbmRlZCA9IDAKLQotICAgICAgICBkZWYgZXhwYW5kKHNlbGYpOgotICAgICAgICAgICAgaWYgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0ucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neScpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QucGFjayhzaWRlPSd0b3AnLCBmaWxsPSdib3RoJywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkID0gMQotCi0gICAgICAgIGRlZiBoaWRlKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgIHNlbGYuY29sbGFwc2UoKQotCi0gICAgaW1wb3J0IHRraW50ZXIKLSAgICB0cnk6Ci0gICAgICAgIHJvb3QgPSB0a2ludGVyLlRrKCkKLSAgICAgICAgIyBUayB3aWxsIGNyYXNoIGlmIHB5dGhvbncuZXhlIGhhcyBhbiBYUCAubWFuaWZlc3QKLSAgICAgICAgIyBmaWxlIGFuZCB0aGUgcm9vdCBoYXMgaXMgbm90IGRlc3Ryb3llZCBleHBsaWNpdGx5LgotICAgICAgICAjIElmIHRoZSBwcm9ibGVtIGlzIGV2ZXIgZml4ZWQgaW4gVGssIHRoZSBleHBsaWNpdAotICAgICAgICAjIGRlc3Ryb3kgY2FuIGdvLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBndWkgPSBHVUkocm9vdCkKLSAgICAgICAgICAgIHJvb3QubWFpbmxvb3AoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcm9vdC5kZXN0cm95KCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHBhc3MKLQotCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlbmhhbmNlZCBXZWIgYnJvd3NlciBpbnRlcmZhY2UKIAogZGVmIF9zdGFydF9zZXJ2ZXIodXJsaGFuZGxlciwgcG9ydCk6CkBAIC0yNzk2LDE1ICsyNTMzLDEyIEBACiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCAnLicpCiAKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2JnazpwOncnKQorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdiazpwOncnKQogICAgICAgICB3cml0aW5nID0gRmFsc2UKICAgICAgICAgc3RhcnRfc2VydmVyID0gRmFsc2UKICAgICAgICAgb3Blbl9icm93c2VyID0gRmFsc2UKICAgICAgICAgcG9ydCA9IE5vbmUKICAgICAgICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgICAgICBpZiBvcHQgPT0gJy1nJzoKLSAgICAgICAgICAgICAgICBndWkoKQotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgaWYgb3B0ID09ICctYic6CiAgICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgIG9wZW5fYnJvd3NlciA9IFRydWUKQEAgLTI4NjUsOSArMjU5OSw2IEBACiAgICAgdG8gaW50ZXJhY3RpdmVseSBicm93c2UgZG9jdW1lbnRhdGlvbi4gIFRoZSAtcCBvcHRpb24gY2FuIGJlIHVzZWQgd2l0aAogICAgIHRoZSAtYiBvcHRpb24gdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzZXJ2ZXIgcG9ydC4KIAote2NtZH0gLWcKLSAgICBEZXByZWNhdGVkLgotCiB7Y21kfSAtdyA8bmFtZT4gLi4uCiAgICAgV3JpdGUgb3V0IHRoZSBIVE1MIGRvY3VtZW50YXRpb24gZm9yIGEgbW9kdWxlIHRvIGEgZmlsZSBpbiB0aGUgY3VycmVudAogICAgIGRpcmVjdG9yeS4gIElmIDxuYW1lPiBjb250YWlucyBhICd7c2VwfScsIGl0IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZTsgaWYKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCAwOGE5ZTdjLi42MmE1NGE5IDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDE2ICsxLDE3IEBACi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFRodSBGZWIgMjMgMTg6Mzc6NTQgMjAxMgorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IEF1ZyAyNSAxMjoxMjo0NSAyMDEyCiB0b3BpY3MgPSB7J2Fzc2VydCc6ICdcblRoZSBgYGFzc2VydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2VydCBzdGF0ZW1lbnRzIGFyZSBhIGNvbnZlbmllbnQgd2F5IHRvIGluc2VydCBkZWJ1Z2dpbmcgYXNzZXJ0aW9uc1xuaW50byBhIHByb2dyYW06XG5cbiAgIGFzc2VydF9zdG10IDo6PSAiYXNzZXJ0IiBleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbl1cblxuVGhlIHNpbXBsZSBmb3JtLCBgYGFzc2VydCBleHByZXNzaW9uYGAsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCBgYGFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjJgYCwgaXMgZXF1aXZhbGVudFxudG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgaWYgbm90IGV4cHJlc3Npb24xOiByYWlzZSBBc3NlcnRpb25FcnJvcihleHByZXNzaW9uMilcblxuVGhlc2UgZXF1aXZhbGVuY2VzIGFzc3VtZSB0aGF0IGBgX19kZWJ1Z19fYGAgYW5kIGBgQXNzZXJ0aW9uRXJyb3JgYFxucmVmZXIgdG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgYGBfX2RlYnVnX19gYCBpcyBgYFRydWVgYCB1bmRlclxubm9ybWFsIGNpcmN1bXN0YW5jZXMsIGBgRmFsc2VgYCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWRcbihjb21tYW5kIGxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGVcbmZvciBhbiBhc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlXG50aW1lLiAgTm90ZSB0aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGVcbmV4cHJlc3Npb24gdGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzXG5wYXJ0IG9mIHRoZSBzdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gYGBfX2RlYnVnX19gYCBhcmUgaWxsZWdhbC4gIFRoZSB2YWx1ZSBmb3IgdGhlIGJ1aWx0LWluXG52YXJpYWJsZSBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGludGVycHJldGVyIHN0YXJ0cy5cbicsCiAgJ2Fzc2lnbm1lbnQnOiAnXG5Bc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCB0b1xubW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuXG4gICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbiAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbiAgICAgICAgICAgICAgfCAiWyIgdGFyZ2V0X2xpc3QgIl0iXG4gICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4gICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4gICAgICAgICAgICAgIHwgc2xpY2luZ1xuICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0OiBUaGUgb2JqZWN0IGlzIGFzc2lnbmVkIHRvXG4gIHRoYXQgdGFyZ2V0LlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHM6IFRoZSBvYmplY3RcbiAgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyB0aGVyZSBhcmVcbiAgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG9cbiAgcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiAgKiBJZiB0aGUgdGFyZ2V0IGxpc3QgY29udGFpbnMgb25lIHRhcmdldCBwcmVmaXhlZCB3aXRoIGFuIGFzdGVyaXNrLFxuICAgIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSBhIHNlcXVlbmNlIHdpdGggYXRcbiAgICBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgbWludXNcbiAgICBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gICAgcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZCB0YXJnZXQuICBUaGUgZmluYWwgaXRlbXNcbiAgICBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXRzIGFmdGVyIHRoZSBzdGFycmVkXG4gICAgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXMgaW4gdGhlIHNlcXVlbmNlIGlzIHRoZW5cbiAgICBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0IGNhbiBiZSBlbXB0eSkuXG5cbiAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSBgYGdsb2JhbGBgIG9yIGBgbm9ubG9jYWxgYFxuICAgIHN0YXRlbWVudCBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGVcbiAgICBvYmplY3QgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuXG4gICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlXG4gICAgb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5IGBgbm9ubG9jYWxgYCwgcmVzcGVjdGl2ZWx5LlxuXG4gIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSB0aGVcbiAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgdG8gcmVhY2hcbiAgemVybywgY2F1c2luZyB0aGUgb2JqZWN0IHRvIGJlIGRlYWxsb2NhdGVkIGFuZCBpdHMgZGVzdHJ1Y3RvciAoaWYgaXRcbiAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSB0YXJnZXQgbGlzdCBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcyBvciBpbiBzcXVhcmVcbiAgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCBpdHMgaXRlbXMgYXJlXG4gIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGBgVHlwZUVycm9yYGAgaXNcbiAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0b1xuICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgcmFpc2VzXG4gIGFuIGV4Y2VwdGlvbiAodXN1YWxseSBidXQgbm90IG5lY2Vzc2FyaWx5IGBgQXR0cmlidXRlRXJyb3JgYCkuXG5cbiAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZVxuICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyBleHByZXNzaW9uLFxuICBgYGEueGBgIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCBgYGEueGBgIGlzXG4gIGFsd2F5cyBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gIFRodXMsIHRoZSB0d28gb2NjdXJyZW5jZXMgb2YgYGBhLnhgYCBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlXG4gIHNhbWUgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLFxuICB0aGUgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoIGBgcHJvcGVydHkoKWBgLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSBzZXF1ZW5jZVxuICBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSBvciBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSkuXG4gIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgeWllbGQgYW4gaW50ZWdlci4gIElmIGl0IGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmVcbiAgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSBpcyBhc2tlZFxuICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICBJZiB0aGVcbiAgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCBgYEluZGV4RXJyb3JgYCBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gYVxuICBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyB0byBhIGxpc3QpLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZ1wncyBrZXkgdHlwZSxcbiAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgd2hpY2ggbWFwc1xuICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgcmVwbGFjZSBhblxuICBleGlzdGluZyBrZXkvdmFsdWUgcGFpciB3aXRoIHRoZSBzYW1lIGtleSB2YWx1ZSwgb3IgaW5zZXJ0IGEgbmV3XG4gIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cblxuICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSBgYF9fc2V0aXRlbV9fKClgYCBtZXRob2QgaXMgY2FsbGVkXG4gIHdpdGggYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZSByZWZlcmVuY2VcbiAgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYVxuICBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0IG9mIHRoZSBzYW1lXG4gIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQsXG4gIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWYgZWl0aGVyIGJvdW5kIGlzXG4gIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZ1xuICBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCxcbiAgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlIHRoZVxuICBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mIHRoZVxuICBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgb2JqZWN0XG4gIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5XQVJOSU5HOiBBbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwc1xuYmV0d2VlbiB0aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2FmZVwnIChmb3JcbmV4YW1wbGUgYGBhLCBiID0gYiwgYWBgIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIGFyZSBub3Qgc2FmZSEgIEZvciBpbnN0YW5jZSwgdGhlXG5mb2xsb3dpbmcgcHJvZ3JhbSBwcmludHMgYGBbMCwgMl1gYDpcblxuICAgeCA9IFswLCAxXVxuICAgaSA9IDBcbiAgIGksIHhbaV0gPSAxLCAyXG4gICBwcmludCh4KVxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEzMioqIC0gRXh0ZW5kZWQgSXRlcmFibGUgVW5wYWNraW5nXG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGBgKnRhcmdldGBgIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlIGBgeCArPSAxYGAgY2FuIGJlIHJld3JpdHRlbiBhc1xuYGB4ID0geCArIDFgYCB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW5cbnRoZSBhdWdtZW50ZWQgdmVyc2lvbiwgYGB4YGAgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlblxucG9zc2libGUsIHRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXRcbnJhdGhlciB0aGFuIGNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCxcbnRoZSBvbGQgb2JqZWN0IGlzIG1vZGlmaWVkIGluc3RlYWQuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAogICdhdG9tLWlkZW50aWZpZXJzJzogJ1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgYGBOYW1lRXJyb3JgYCBleGNlcHRpb24uXG5cbioqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0IHRleHR1YWxseSBvY2N1cnMgaW5cbmEgY2xhc3MgZGVmaW5pdGlvbiBiZWdpbnMgd2l0aCB0d28gb3IgbW9yZSB1bmRlcnNjb3JlIGNoYXJhY3RlcnMgYW5kXG5kb2VzIG5vdCBlbmQgaW4gdHdvIG9yIG1vcmUgdW5kZXJzY29yZXMsIGl0IGlzIGNvbnNpZGVyZWQgYSAqcHJpdmF0ZVxubmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSBsb25nZXIgZm9ybVxuYmVmb3JlIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGVtLiAgVGhlIHRyYW5zZm9ybWF0aW9uIGluc2VydHMgdGhlXG5jbGFzcyBuYW1lIGluIGZyb250IG9mIHRoZSBuYW1lLCB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgcmVtb3ZlZCwgYW5kXG5hIHNpbmdsZSB1bmRlcnNjb3JlIGluc2VydGVkIGluIGZyb250IG9mIHRoZSBjbGFzcyBuYW1lLiAgRm9yIGV4YW1wbGUsXG50aGUgaWRlbnRpZmllciBgYF9fc3BhbWBgIG9jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkIGBgSGFtYGAgd2lsbCBiZVxudHJhbnNmb3JtZWQgdG8gYGBfSGFtX19zcGFtYGAuICBUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mXG50aGUgc3ludGFjdGljYWwgY29udGV4dCBpbiB3aGljaCB0aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlXG50cmFuc2Zvcm1lZCBuYW1lIGlzIGV4dHJlbWVseSBsb25nIChsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksXG5pbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHRydW5jYXRpb24gbWF5IGhhcHBlbi4gIElmIHRoZSBjbGFzcyBuYW1lXG5jb25zaXN0cyBvbmx5IG9mIHVuZGVyc2NvcmVzLCBubyB0cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKICAnYXRvbS1saXRlcmFscyc6ICJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlXG4gICByZXR1cm5lZC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtYWNjZXNzJzogJ1xuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiBgYGRpcigpYGAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCiAgJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogJ1xuQXR0cmlidXRlIHJlZmVyZW5jZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgcGVyaW9kIGFuZCBhIG5hbWU6XG5cbiAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgdGhhdCBzdXBwb3J0c1xuYXR0cmlidXRlIHJlZmVyZW5jZXMsIHdoaWNoIG1vc3Qgb2JqZWN0cyBkby4gIFRoaXMgb2JqZWN0IGlzIHRoZW5cbmFza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSBpZGVudGlmaWVyICh3aGljaCBjYW5cbmJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgYGBfX2dldGF0dHJfXygpYGAgbWV0aG9kKS4gIElmIHRoaXNcbmF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uIGBgQXR0cmlidXRlRXJyb3JgYCBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKICAnYXVnYXNzaWduJzogJ1xuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlIGBgeCArPSAxYGAgY2FuIGJlIHJld3JpdHRlbiBhc1xuYGB4ID0geCArIDFgYCB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW5cbnRoZSBhdWdtZW50ZWQgdmVyc2lvbiwgYGB4YGAgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlblxucG9zc2libGUsIHRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXRcbnJhdGhlciB0aGFuIGNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCxcbnRoZSBvbGQgb2JqZWN0IGlzIG1vZGlmaWVkIGluc3RlYWQuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiAnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiLy8iIHVfZXhwciB8IG1fZXhwciAiLyIgdV9leHByXG4gICAgICAgICAgICAgIHwgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgYGAqYGAgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50XG5tdXN0IGJlIGFuIGludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXJcbmNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkXG50b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGFcbm5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlIGBgL2BgIChkaXZpc2lvbikgYW5kIGBgLy9gYCAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBJbnRlZ2VyIGRpdmlzaW9uIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSBgYFplcm9EaXZpc2lvbkVycm9yYGAgZXhjZXB0aW9uLlxuXG5UaGUgYGAlYGAgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCBgYDMuMTQlMC43YGAgZXF1YWxzIGBgMC4zNGBgIChzaW5jZSBgYDMuMTRgYCBlcXVhbHNcbmBgNCowLjcgKyAwLjM0YGAuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGhcbnRoZSBzYW1lIHNpZ24gYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mXG50aGUgcmVzdWx0IGlzIHN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxub3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiBgYHggPT0gKHgvL3kpKnkgKyAoeCV5KWBgLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmVcbmFsc28gY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgZGl2bW9kKClgYDogYGBkaXZtb2QoeCwgeSlcbj09ICh4Ly95LCB4JXkpYGAuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgYGAlYGBcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpPbGQgU3RyaW5nIEZvcm1hdHRpbmcgT3BlcmF0aW9ucyouXG5cblRoZSBmbG9vciBkaXZpc2lvbiBvcGVyYXRvciwgdGhlIG1vZHVsbyBvcGVyYXRvciwgYW5kIHRoZSBgYGRpdm1vZCgpYGBcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlIGBgYWJzKClgYCBmdW5jdGlvbiBpZiBhcHByb3ByaWF0ZS5cblxuVGhlIGBgK2BgIChhZGRpdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBzdW0gb2YgaXRzIGFyZ3VtZW50cy4gIFRoZVxuYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycyBvciBib3RoIHNlcXVlbmNlcyBvZiB0aGUgc2FtZVxudHlwZS4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIG51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlXG5hbmQgdGhlbiBhZGRlZCB0b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNlcXVlbmNlcyBhcmVcbmNvbmNhdGVuYXRlZC5cblxuVGhlIGBgLWBgIChzdWJ0cmFjdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBkaWZmZXJlbmNlIG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb25cbnR5cGUuXG4nLAorICdiaW5hcnknOiAnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiLy8iIHVfZXhwciB8IG1fZXhwciAiLyIgdV9leHByXG4gICAgICAgICAgICAgIHwgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgYGAqYGAgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50XG5tdXN0IGJlIGFuIGludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXJcbmNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkXG50b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGFcbm5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlIGBgL2BgIChkaXZpc2lvbikgYW5kIGBgLy9gYCAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBJbnRlZ2VyIGRpdmlzaW9uIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSBgYFplcm9EaXZpc2lvbkVycm9yYGAgZXhjZXB0aW9uLlxuXG5UaGUgYGAlYGAgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCBgYDMuMTQlMC43YGAgZXF1YWxzIGBgMC4zNGBgIChzaW5jZSBgYDMuMTRgYCBlcXVhbHNcbmBgNCowLjcgKyAwLjM0YGAuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGhcbnRoZSBzYW1lIHNpZ24gYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mXG50aGUgcmVzdWx0IGlzIHN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxub3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiBgYHggPT0gKHgvL3kpKnkgKyAoeCV5KWBgLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmVcbmFsc28gY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgZGl2bW9kKClgYDogYGBkaXZtb2QoeCwgeSlcbj09ICh4Ly95LCB4JXkpYGAuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgYGAlYGBcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgYGBkaXZtb2QoKWBgXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSBgYGFicygpYGAgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSBgYCtgYCAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSBgYC1gYCAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHNcbmFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uXG50eXBlLlxuJywKICAnYml0d2lzZSc6ICdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgYGAmYGAgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIEFORCBvZiBpdHMgYXJndW1lbnRzLCB3aGljaCBtdXN0XG5iZSBpbnRlZ2Vycy5cblxuVGhlIGBgXmBgIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBYT1IgKGV4Y2x1c2l2ZSBPUikgb2YgaXRzXG5hcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG5cblRoZSBgYHxgYCBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAogICdibHRpbi1jb2RlLW9iamVjdHMnOiAnXG5Db2RlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5Db2RlIG9iamVjdHMgYXJlIHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvIHJlcHJlc2VudCAicHNldWRvLVxuY29tcGlsZWQiIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUgc3VjaCBhcyBhIGZ1bmN0aW9uIGJvZHkuIFRoZXkgZGlmZmVyXG5mcm9tIGZ1bmN0aW9uIG9iamVjdHMgYmVjYXVzZSB0aGV5IGRvblwndCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZWlyXG5nbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSByZXR1cm5lZCBieSB0aGUgYnVpbHQtXG5pbiBgYGNvbXBpbGUoKWBgIGZ1bmN0aW9uIGFuZCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gZnVuY3Rpb24gb2JqZWN0c1xudGhyb3VnaCB0aGVpciBgYF9fY29kZV9fYGAgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgYGBjb2RlYGAgbW9kdWxlLlxuXG5BIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyBpdCAoaW5zdGVhZCBvZiBhXG5zb3VyY2Ugc3RyaW5nKSB0byB0aGUgYGBleGVjKClgYCBvciBgYGV2YWwoKWBgICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcblRoZSBFbGxpcHNpcyBPYmplY3RcbioqKioqKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgKlNsaWNpbmdzKikuICBJdCBzdXBwb3J0c1xubm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZFxuYGBFbGxpcHNpc2BgIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgRWxsaXBzaXNgYCBvciBgYC4uLmBgLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiAiXG5UaGUgTnVsbCBPYmplY3RcbioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVybiBhXG52YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIG51bGxcbm9iamVjdCwgbmFtZWQgYGBOb25lYGAgKGEgYnVpbHQtaW4gbmFtZSkuXG5cbkl0IGlzIHdyaXR0ZW4gYXMgYGBOb25lYGAuXG4iLAorICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbmBgRWxsaXBzaXNgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShFbGxpcHNpcykoKWBgIHByb2R1Y2VzIHRoZVxuYGBFbGxpcHNpc2BgIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC5cbicsCisgJ2JsdGluLW51bGwtb2JqZWN0JzogIlxuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkIGBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLiAgYGB0eXBlKE5vbmUpKClgYCBwcm9kdWNlc1xudGhlIHNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLlxuIiwKICAnYmx0aW4tdHlwZS1vYmplY3RzJzogIlxuVHlwZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuVHlwZSBvYmplY3RzIHJlcHJlc2VudCB0aGUgdmFyaW91cyBvYmplY3QgdHlwZXMuICBBbiBvYmplY3QncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGB0eXBlKClgYC4gIFRoZXJlIGFyZSBubyBzcGVjaWFsXG5vcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSBgYHR5cGVzYGAgZGVmaW5lcyBuYW1lcyBmb3JcbmFsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cblxuVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiBgYDxjbGFzcyAnaW50Jz5gYC5cbiIsCiAgJ2Jvb2xlYW5zJzogJ1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiBgYEZhbHNlYGAsIGBgTm9uZWBgLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbnN0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuZGljdGlvbmFyaWVzLCBzZXRzIGFuZCBmcm96ZW5zZXRzKS4gIEFsbCBvdGhlciB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyB0cnVlLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIGN1c3RvbWl6ZSB0aGVpciB0cnV0aCB2YWx1ZSBieVxucHJvdmlkaW5nIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgYGBub3RgYCB5aWVsZHMgYGBUcnVlYGAgaWYgaXRzIGFyZ3VtZW50IGlzIGZhbHNlLFxuYGBGYWxzZWBgIG90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gYGB4IGFuZCB5YGAgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIGZhbHNlLCBpdHNcbnZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWVcbmlzIHJldHVybmVkLlxuXG5UaGUgZXhwcmVzc2lvbiBgYHggb3IgeWBgIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHNcbnZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWVcbmlzIHJldHVybmVkLlxuXG4oTm90ZSB0aGF0IG5laXRoZXIgYGBhbmRgYCBub3IgYGBvcmBgIHJlc3RyaWN0IHRoZSB2YWx1ZSBhbmQgdHlwZSB0aGV5XG5yZXR1cm4gdG8gYGBGYWxzZWBgIGFuZCBgYFRydWVgYCwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgYGBzYGAgaXMgYSBzdHJpbmcgdGhhdFxuc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgZGVmYXVsdCB2YWx1ZSBpZiBpdCBpcyBlbXB0eSwgdGhlIGV4cHJlc3Npb25cbmBgcyBvciBcJ2Zvb1wnYGAgeWllbGRzIHRoZSBkZXNpcmVkIHZhbHVlLiAgQmVjYXVzZSBgYG5vdGBgIGhhcyB0b1xuaW52ZW50IGEgdmFsdWUgYW55d2F5LCBpdCBkb2VzIG5vdCBib3RoZXIgdG8gcmV0dXJuIGEgdmFsdWUgb2YgdGhlXG5zYW1lIHR5cGUgYXMgaXRzIGFyZ3VtZW50LCBzbyBlLmcuLCBgYG5vdCBcJ2Zvb1wnYGAgeWllbGRzIGBgRmFsc2VgYCxcbm5vdCBgYFwnXCdgYC4pXG4nLAogICdicmVhayc6ICdcblRoZSBgYGJyZWFrYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBicmVha19zdG10IDo6PSAiYnJlYWsiXG5cbmBgYnJlYWtgYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGBgZm9yYGAgb3JcbmBgd2hpbGVgYCBsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb25cbndpdGhpbiB0aGF0IGxvb3AuXG5cbkl0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbFxuYGBlbHNlYGAgY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgYGBmb3JgYCBsb29wIGlzIHRlcm1pbmF0ZWQgYnkgYGBicmVha2BgLCB0aGUgbG9vcCBjb250cm9sIHRhcmdldFxua2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG5cbldoZW4gYGBicmVha2BgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5sZWF2aW5nIHRoZSBsb29wLlxuJywKQEAgLTE4LDEzICsxOSwxMyBAQAogICdjYWxscyc6ICdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgZnVuY3Rpb24pIHdpdGggYSBwb3NzaWJseVxuZW1wdHkgc2VyaWVzIG9mIGFyZ3VtZW50czpcblxuICAgY2FsbCAgICAgICAgICAgICAgICAgOjo9IHByaW1hcnkgIigiIFthcmd1bWVudF9saXN0IFsiLCJdIHwgY29tcHJlaGVuc2lvbl0gIikiXG4gICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiBrZXl3b3JkX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKiIgZXhwcmVzc2lvbl0gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmRfYXJndW1lbnRzIFsiLCIgIioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCAiKiIgZXhwcmVzc2lvbiBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBleHByZXNzaW9uXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gZXhwcmVzc2lvbiAoIiwiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9hcmd1bWVudHMgICAgOjo9IGtleXdvcmRfaXRlbSAoIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuXG5BIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkXG5hcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbmZ1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG5vYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG5gYF9fY2FsbF9fKClgYCBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsIHBhcmFtZXRlciBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgYGBOb25lYGAsIGl0IGZpbGxzIHRoZSBzbG90KS4gIFdoZW4gYWxsIGFyZ3VtZW50cyBoYXZlXG5iZWVuIHByb2Nlc3NlZCwgdGhlIHNsb3RzIHRoYXQgYXJlIHN0aWxsIHVuZmlsbGVkIGFyZSBmaWxsZWQgd2l0aCB0aGVcbmNvcnJlc3BvbmRpbmcgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgKERlZmF1bHRcbnZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxubXV0YWJsZSBvYmplY3Qgc3VjaCBhcyBhIGxpc3Qgb3IgZGljdGlvbmFyeSB1c2VkIGFzIGRlZmF1bHQgdmFsdWUgd2lsbFxuYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvblwndCBzcGVjaWZ5IGFuIGFyZ3VtZW50IHZhbHVlIGZvciB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSBhbnlcbnVuZmlsbGVkIHNsb3RzIGZvciB3aGljaCBubyBkZWZhdWx0IHZhbHVlIGlzIHNwZWNpZmllZCwgYVxuYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWRcbnNsb3RzIGlzIHVzZWQgYXMgdGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlIGBgUHlBcmdfUGFyc2VUdXBsZSgpYGAgdG9cbnBhcnNlIHRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgcGFyYW1ldGVyXG51c2luZyB0aGUgc3ludGF4IGBgKmlkZW50aWZpZXJgYCBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCBgYCoqaWRlbnRpZmllcmBgIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdFxuZm9ybWFsIHBhcmFtZXRlciByZWNlaXZlcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZXhjZXNzIGtleXdvcmRcbmFyZ3VtZW50cyAodXNpbmcgdGhlIGtleXdvcmRzIGFzIGtleXMgYW5kIHRoZSBhcmd1bWVudCB2YWx1ZXMgYXNcbmNvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgbm9cbmV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cy5cblxuSWYgdGhlIHN5bnRheCBgYCpleHByZXNzaW9uYGAgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbmBgZXhwcmVzc2lvbmBgIG11c3QgZXZhbHVhdGUgdG8gYW4gaXRlcmFibGUuICBFbGVtZW50cyBmcm9tIHRoaXNcbml0ZXJhYmxlIGFyZSB0cmVhdGVkIGFzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzO1xuaWYgdGhlcmUgYXJlIHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgYW5kIGBgZXhwcmVzc2lvbmBgXG5ldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sICp5TSosIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhIGNhbGxcbndpdGggTStOIHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgKnkxKiwgLi4uLCAqeU0qLlxuXG5BIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBhbHRob3VnaCB0aGUgYGAqZXhwcmVzc2lvbmBgIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiB0aGVcbmtleXdvcmQgYXJndW1lbnRzIChhbmQgdGhlIGBgKipleHByZXNzaW9uYGAgYXJndW1lbnQsIGlmIGFueSAtLSBzZWVcbmJlbG93KS4gIFNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSBgYCpleHByZXNzaW9uYGBcbnN5bnRheCB0byBiZSB1c2VkIGluIHRoZSBzYW1lIGNhbGwsIHNvIGluIHByYWN0aWNlIHRoaXMgY29uZnVzaW9uIGRvZXNcbm5vdCBhcmlzZS5cblxuSWYgdGhlIHN5bnRheCBgYCoqZXhwcmVzc2lvbmBgIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG5gYGV4cHJlc3Npb25gYCBtdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSW4gdGhlIGNhc2Ugb2YgYSBrZXl3b3JkXG5hcHBlYXJpbmcgaW4gYm90aCBgYGV4cHJlc3Npb25gYCBhbmQgYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCxcbmEgYGBUeXBlRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLlxuXG5Gb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4IGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgXG5jYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbm5hbWVzLlxuXG5BIGNhbGwgYWx3YXlzIHJldHVybnMgc29tZSB2YWx1ZSwgcG9zc2libHkgYGBOb25lYGAsIHVubGVzcyBpdCByYWlzZXNcbmFuIGV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgKkZ1bmN0aW9uIGRlZmluaXRpb25zKi4gIFdoZW4gdGhlIGNvZGUgYmxvY2sgZXhlY3V0ZXMgYSBgYHJldHVybmBgXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhIGBgX19jYWxsX18oKWBgIG1ldGhvZDsgdGhlIGVmZmVjdCBpcyB0aGVuXG4gICB0aGUgc2FtZSBhcyBpZiB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkLlxuJywKICAnY2xhc3MnOiAnXG5DbGFzcyBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgYGBvYmplY3RgYDsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoIGBgc2VsZi5uYW1lID0gdmFsdWVgYC4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uXG4iYGBzZWxmLm5hbWVgYCIsIGFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGVcbndpdGggdGhlIHNhbWUgbmFtZSB3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmVcbnVzZWQgYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlc1xudGhlcmUgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0b1xuY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC0gQ2xhc3NcbiAgIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzIHRoZXJlXG4gICAgaXMgYSBgYGZpbmFsbHlgYCBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyIGV4Y2VwdGlvbi5cbiAgICBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYW5cbiAgICBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGBgcmV0dXJuYGAsIGBgY29udGludWVgYCwgb3JcbiAgICBgYGJyZWFrYGAgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzIGBgX19kb2NfX2BgIGF0dHJpYnV0ZSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyBgYF9fZG9jX19gYCBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAogICdjb21wYXJpc29ucyc6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLCBidXQgY29tcGFyaXNvbnMgb2ZcbmBgZmxvYXRgYCBhbmQgYGBEZWNpbWFsYGAgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYXZvaWQgdGhlIGluZXZpdGFibGVcbmNvbmZ1c2lvbiBhcmlzaW5nIGZyb20gcmVwcmVzZW50YXRpb24gaXNzdWVzIHN1Y2ggYXMgYGBmbG9hdChcJzEuMVwnKWBgXG5iZWluZyBpbmV4YWN0bHkgcmVwcmVzZW50ZWQgYW5kIHRoZXJlZm9yZSBub3QgZXhhY3RseSBlcXVhbCB0b1xuYGBEZWNpbWFsKFwnMS4xXCcpYGAgd2hpY2ggaXMuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpcyBub3RcbnN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgVGhpcyBjYW5cbmNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygbm9uLXRyYW5zaXRpdml0eSBiZXR3ZWVuIHN1cHBvcnRlZCBjcm9zcy10eXBlXG5jb21wYXJpc29ucyBhbmQgdW5zdXBwb3J0ZWQgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDIpID09XG4yYGAgYW5kIGBgMiA9PSBmbG9hdCgyKWBgIGJ1dCBgYERlY2ltYWwoMikgIT0gZmxvYXQoMilgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAotICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiwgaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmRcbm9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIElmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgcmFpc2VzIGFub3RoZXJcbmV4Y2VwdGlvbiBvciBleGVjdXRlcyBhIGBgcmV0dXJuYGAgb3IgYGBicmVha2BgIHN0YXRlbWVudCwgdGhlIHNhdmVkXG5leGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiAgVGhlIGV4Y2VwdGlvblxuaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmcgZXhlY3V0aW9uIG9mIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5XaGVuIGEgYGByZXR1cm5gYCwgYGBicmVha2BgIG9yIGBgY29udGludWVgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5cbnRoZSBgYHRyeWBgIHN1aXRlIG9mIGEgYGB0cnlgYC4uLmBgZmluYWxseWBgIHN0YXRlbWVudCwgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UgaXMgYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgaXMgaWxsZWdhbCBpbiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhXG5wcm9ibGVtIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlXG5saWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vblxuYGB0cnlgYC4uLmBgZXhjZXB0YGAuLi5gYGZpbmFsbHlgYCB1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWRcbmZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSBgYHdpdGhfaXRlbWBgKVxuICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cblxuMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZW50ZXJfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4gICB2YWx1ZSBmcm9tIGBgX19lbnRlcl9fKClgYCBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlIGBgX19lbnRlcl9fKClgYFxuICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuIGBgX19leGl0X18oKWBgIHdpbGwgYWx3YXlzXG4gICAgIGJlIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBgYF9fZXhpdF9fKClgYC4gT3RoZXJ3aXNlLFxuICAgdGhyZWUgYGBOb25lYGAgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlIGBgX19leGl0X18oKWBgIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXNcbiAgIHJlcmFpc2VkLiAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgc3VwcHJlc3NlZCwgYW5kIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZ1xuICAgdGhlIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gYGBfX2V4aXRfXygpYGAgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlIGBgd2l0aGBgIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCisgJ2NvbXBvdW5kJzogJ1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlIGBgaWZgYCwgYGB3aGlsZWBgIGFuZCBgYGZvcmBgIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsXG5jb250cm9sIGZsb3cgY29uc3RydWN0cy4gIGBgdHJ5YGAgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3JcbmNsZWFudXAgY29kZSBmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzLCB3aGlsZSB0aGUgYGB3aXRoYGAgc3RhdGVtZW50XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGFcbmJsb2NrIG9mIGNvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseVxuY29tcG91bmQgc3RhdGVtZW50cy5cblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb25zaXN0IG9mIG9uZSBvciBtb3JlIFwnY2xhdXNlcy5cJyAgQSBjbGF1c2VcbmNvbnNpc3RzIG9mIGEgaGVhZGVyIGFuZCBhIFwnc3VpdGUuXCcgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG5wYXJ0aWN1bGFyIGNvbXBvdW5kIHN0YXRlbWVudCBhcmUgYWxsIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uIGxldmVsLlxuRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCBhbmQgZW5kc1xud2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSBhXG5jbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBoZWFkZXIsIGZvbGxvd2luZyB0aGUgaGVhZGVyXCdzXG5jb2xvbiwgb3IgaXQgY2FuIGJlIG9uZSBvciBtb3JlIGluZGVudGVkIHN0YXRlbWVudHMgb24gc3Vic2VxdWVudFxubGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCBgYGlmYGAgY2xhdXNlIGEgZm9sbG93aW5nIGBgZWxzZWBgIGNsYXVzZSB3b3VsZCBiZWxvbmc6XG5cbiAgIGlmIHRlc3QxOiBpZiB0ZXN0MjogcHJpbnQoeClcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG5gYHByaW50KClgYCBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgYGBORVdMSU5FYGAgcG9zc2libHkgZm9sbG93ZWQgYnlcbmEgYGBERURFTlRgYC4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5c1xuYmVnaW4gd2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgYGBlbHNlYGBcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgYGBpZmBgIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuXG5UaGUgZm9ybWF0dGluZyBvZiB0aGUgZ3JhbW1hciBydWxlcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIHBsYWNlc1xuZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpc1xuZXhlY3V0ZWQgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmdvZXMgYmFjayB0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuXG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYVxuc2VxdWVuY2UgKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG5gYGV4cHJlc3Npb25fbGlzdGBgLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgYGBTdG9wSXRlcmF0aW9uYGBcbmV4Y2VwdGlvbiksIHRoZSBzdWl0ZSBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCxcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5jb250aW51ZXMgd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSBgYGVsc2VgYCBjbGF1c2UgaWYgdGhlcmUgd2FzXG5ubyBuZXh0IGl0ZW0uXG5cblRoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgZG9lc1xubm90IGFmZmVjdCB0aGUgbmV4dCBpdGVtIGFzc2lnbmVkIHRvIGl0LlxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsXG5ieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYHJhbmdlKClgYCByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzIGBgZm9yXG5pIDo9IGEgdG8gYiBkb2BgOyBlLmcuLCBgYGxpc3QocmFuZ2UoMykpYGAgcmV0dXJucyB0aGUgbGlzdCBgYFswLCAxLFxuMl1gYC5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcFxuICAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIGl0IGlzXG5yZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGBcbmNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24gdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlXG5jb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uOyBpZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIGV4ZWN1dGVzIGFcbmBgcmV0dXJuYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIGRpc2NhcmRlZDpcblxuICAgZGVmIGYoKTpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIDEvMFxuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIHJldHVybiA0MlxuXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4gICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgYGB3aXRoYGAgc3RhdGVtZW50LiBUaGUgY29udGV4dFxubWFuYWdlciBoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZVxuY29udGV4dCBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlXG5ub3JtYWxseSBpbnZva2VkIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4qVGhlIHdpdGggc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyXG5tZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBgYHdpdGhgYFxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgYGBOb25lYGAuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0IGBgX19leGl0X18oKWBgIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cbicsCiAgJ2NvbnRpbnVlJzogJ1xuVGhlIGBgY29udGludWVgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcblxuYGBjb250aW51ZWBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgYGBmb3JgYCBvclxuYGB3aGlsZWBgIGxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvclxuYGBmaW5hbGx5YGAgY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZVxub2YgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG5cbldoZW4gYGBjb250aW51ZWBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKICAnY29udmVyc2lvbnMnOiAnXG5Bcml0aG1ldGljIGNvbnZlcnNpb25zXG4qKioqKioqKioqKioqKioqKioqKioqXG5cbldoZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlIHBocmFzZVxuInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzIG1lYW5zXG50aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgdGhhdCB3YXk6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlIG90aGVyXG4gIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGxlZnRcbmFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lIHRoZWlyIG93blxuY29udmVyc2lvbiBiZWhhdmlvci5cbicsCi0gJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBTZWUgYWxzbyB0aGUgKi1SKiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuJywKLSAnZGVidWdnZXInOiAnXG5gYHBkYmBgIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBtb2R1bGUgYGBwZGJgYCBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG5gYFBkYmBgLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5XG5yZWFkaW5nIHRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzIGBgYmRiYGBcbmFuZCBgYGNtZGBgLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzIGBgKFBkYilgYC4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtXG51bmRlciBjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbmBgcGRiLnB5YGAgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLlxuRm9yIGV4YW1wbGU6XG5cbiAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuICBBZnRlciBwb3N0LVxubW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgd2lsbFxucmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGJcJ3Mgc3RhdGUgKHN1Y2hcbmFzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nIHRoZVxuZGVidWdnZXIgdXBvbiBwcm9ncmFtXCdzIGV4aXQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMjogYGBwZGIucHlgYCBub3cgYWNjZXB0cyBhIGBgLWNgYCBvcHRpb24gdGhhdFxuZXhlY3V0ZXMgY29tbWFuZHMgYXMgaWYgZ2l2ZW4gaW4gYSBgYC5wZGJyY2BgIGZpbGUsIHNlZSAqRGVidWdnZXJcbkNvbW1hbmRzKi5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgZnJvbSBhIHJ1bm5pbmcgcHJvZ3JhbSBpc1xudG8gaW5zZXJ0XG5cbiAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuXG5hdCB0aGUgbG9jYXRpb24geW91IHdhbnQgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIuICBZb3UgY2FuIHRoZW5cbnN0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSBydW5uaW5nXG53aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgYGBjb250aW51ZWBgIGNvbW1hbmQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gbXltb2R1bGUudGVzdCgpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuICAgICAgIHRlc3QyKClcbiAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbiAgICAgICBwcmludChzcGFtKVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50KHNwYW0pXG4gICAoUGRiKVxuXG5UaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSBkZWJ1Z2dlclxuaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuXG5wZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpIHVuZGVyXG4gICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpc1xuICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlIGBgY29udGludWVgYCwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgYGBzdGVwYGAgb3IgYGBuZXh0YGAgKGFsbCB0aGVzZVxuICAgY29tbWFuZHMgYXJlIGV4cGxhaW5lZCBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKlxuICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzIGV4ZWN1dGVkOyBieVxuICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlIGBgX19tYWluX19gYCBpcyB1c2VkLiAgKFNlZVxuICAgdGhlIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiBgYGV4ZWMoKWBgIG9yIGBgZXZhbCgpYGBcbiAgIGZ1bmN0aW9ucy4pXG5cbnBkYi5ydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpXG4gICB1bmRlciBkZWJ1Z2dlciBjb250cm9sLiAgV2hlbiBgYHJ1bmV2YWwoKWBgIHJldHVybnMsIGl0IHJldHVybnMgdGhlXG4gICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG9cbiAgIGBgcnVuKClgYC5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiBgYHJ1bmNhbGwoKWBgIHJldHVybnMsIGl0IHJldHVybnNcbiAgIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybmVkLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzXG4gICBhcyBzb29uIGFzIHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkLlxuXG5wZGIuc2V0X3RyYWNlKClcblxuICAgRW50ZXIgdGhlIGRlYnVnZ2VyIGF0IHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lLiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgIGhhcmQtY29kZSBhIGJyZWFrcG9pbnQgYXQgYSBnaXZlbiBwb2ludCBpbiBhIHByb2dyYW0sIGV2ZW4gaWYgdGhlXG4gICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbiAgIGZhaWxzKS5cblxucGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIGdpdmVuICp0cmFjZWJhY2sqIG9iamVjdC4gIElmIG5vXG4gICAqdHJhY2ViYWNrKiBpcyBnaXZlbiwgaXQgdXNlcyB0aGUgb25lIG9mIHRoZSBleGNlcHRpb24gdGhhdCBpc1xuICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgaWYgdGhlXG4gICBkZWZhdWx0IGlzIHRvIGJlIHVzZWQpLlxuXG5wZGIucG0oKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC5cblxuVGhlIGBgcnVuKmBgIGZ1bmN0aW9ucyBhbmQgYGBzZXRfdHJhY2UoKWBgIGFyZSBhbGlhc2VzIGZvclxuaW5zdGFudGlhdGluZyB0aGUgYGBQZGJgYCBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lXG5uYW1lLiAgSWYgeW91IHdhbnQgdG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXNcbnlvdXJzZWxmOlxuXG5jbGFzcyBjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PVwndGFiXCcsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlKVxuXG4gICBgYFBkYmBgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cblxuICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZVxuICAgdW5kZXJseWluZyBgYGNtZC5DbWRgYCBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBDdHJsLUMgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgYVxuICAgYGBjb250aW51ZWBgIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgQ3RybC1DLiAgSWYgeW91IHdhbnQgUGRiIG5vdCB0byB0b3VjaCB0aGUgU0lHSU5UXG4gICBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0b3QgdHJ1ZS5cblxuICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuXG4gICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9W1wnZGphbmdvLipcJ10pLnNldF90cmFjZSgpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgKm5vc2lnaW50KiBhcmd1bWVudC4gIFByZXZpb3VzbHksIGEgU0lHSU5UXG4gICBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkgUGRiLlxuXG4gICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuICAgcnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbiAgIHNldF90cmFjZSgpXG5cbiAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZ1bmN0aW9ucyBleHBsYWluZWQgYWJvdmUuXG5cblxuRGVidWdnZXIgQ29tbWFuZHNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBjb21tYW5kcyByZWNvZ25pemVkIGJ5IHRoZSBkZWJ1Z2dlciBhcmUgbGlzdGVkIGJlbG93LiAgTW9zdFxuY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7IGUuZy5cbmBgaChlbHApYGAgbWVhbnMgdGhhdCBlaXRoZXIgYGBoYGAgb3IgYGBoZWxwYGAgY2FuIGJlIHVzZWQgdG8gZW50ZXJcbnRoZSBoZWxwIGNvbW1hbmQgKGJ1dCBub3QgYGBoZWBgIG9yIGBgaGVsYGAsIG5vciBgYEhgYCBvciBgYEhlbHBgYCBvclxuYGBIRUxQYGApLiAgQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2VcbihzcGFjZXMgb3IgdGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0c1xuKGBgW11gYCkgaW4gdGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyXG4oYGB8YGApLlxuXG5FbnRlcmluZyBhIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kIGVudGVyZWQuICBFeGNlcHRpb246IGlmXG50aGUgbGFzdCBjb21tYW5kIHdhcyBhIGBgbGlzdGBgIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoYGAhYGApLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgZnVuY3Rpb24uXG5XaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lIGlzXG5wcmludGVkIGJ1dCB0aGUgZGVidWdnZXJcJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG5cblRoZSBkZWJ1Z2dlciBzdXBwb3J0cyAqYWxpYXNlcyouICBBbGlhc2VzIGNhbiBoYXZlIHBhcmFtZXRlcnMgd2hpY2hcbmFsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuZXhhbWluYXRpb24uXG5cbk11bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieVxuYGA7O2BgLiAgKEEgc2luZ2xlIGBgO2BgIGlzIG5vdCB1c2VkIGFzIGl0IGlzIHRoZSBzZXBhcmF0b3IgZm9yXG5tdWx0aXBsZSBjb21tYW5kcyBpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm9cbmludGVsbGlnZW5jZSBpcyBhcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUgaW5wdXQgaXMgc3BsaXRcbmF0IHRoZSBmaXJzdCBgYDs7YGAgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkXG5zdHJpbmcuXG5cbklmIGEgZmlsZSBgYC5wZGJyY2BgIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBgYC5wZGJyY2BgIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyB0aGF0XG5jb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgYGBjb250aW51ZWBgIG9yIGBgbmV4dGBgLiAgUHJldmlvdXNseSxcbnRoZXNlIGNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgYGBoZWxwIHBkYmBgXG4gICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSBgYHBkYmBgXG4gICBtb2R1bGUpLiAgU2luY2UgdGhlICpjb21tYW5kKiBhcmd1bWVudCBtdXN0IGJlIGFuIGlkZW50aWZpZXIsXG4gICBgYGhlbHAgZXhlY2BgIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgYGAhYGAgY29tbWFuZC5cblxudyhoZXJlKVxuXG4gICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLiAgQW5cbiAgIGFycm93IGluZGljYXRlcyB0aGUgY3VycmVudCBmcmFtZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29udGV4dCBvZlxuICAgbW9zdCBjb21tYW5kcy5cblxuZChvd24pIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIGRvd24gaW4gdGhlXG4gICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG5cbnUocCkgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgdXAgaW4gdGhlIHN0YWNrXG4gICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuXG5iKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgV2l0aCBhICpsaW5lbm8qIGFyZ3VtZW50LCBzZXQgYSBicmVhayB0aGVyZSBpbiB0aGUgY3VycmVudCBmaWxlLlxuICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCBleGVjdXRhYmxlXG4gICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlIHByZWZpeGVkXG4gICB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sIHRvIHNwZWNpZnkgYSBicmVha3BvaW50IGluIGFub3RoZXJcbiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc25cJ3QgYmVlbiBsb2FkZWQgeWV0KS4gIFRoZSBmaWxlIGlzXG4gICBzZWFyY2hlZCBvbiBgYHN5cy5wYXRoYGAuICBOb3RlIHRoYXQgZWFjaCBicmVha3BvaW50IGlzIGFzc2lnbmVkIGFcbiAgIG51bWJlciB0byB3aGljaCBhbGwgdGhlIG90aGVyIGJyZWFrcG9pbnQgY29tbWFuZHMgcmVmZXIuXG5cbiAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC5cblxuICAgV2l0aG91dCBhcmd1bWVudCwgbGlzdCBhbGwgYnJlYWtzLCBpbmNsdWRpbmcgZm9yIGVhY2ggYnJlYWtwb2ludCxcbiAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlIGN1cnJlbnRcbiAgIGlnbm9yZSBjb3VudCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBpZiBhbnkuXG5cbnRicmVhayBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCBpc1xuICAgZmlyc3QgaGl0LiBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYGBicmVha2BgLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgYGBlbmRgYCB0byB0ZXJtaW5hdGUgdGhlIGNvbW1hbmRzLiBBbiBleGFtcGxlOlxuXG4gICAgICAoUGRiKSBjb21tYW5kcyAxXG4gICAgICAoY29tKSBwcmludCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCBgYGVuZGBgOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuXG4gICBXaXRoIG5vICpicG51bWJlciogYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdCBicmVha3BvaW50XG4gICBzZXQuXG5cbiAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwIGFnYWluLlxuICAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyIGNvbW1hbmQgdGhhdFxuICAgcmVzdW1lcyBleGVjdXRpb24uXG5cbiAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgY29udGludWUsXG4gICBzdGVwLCBuZXh0LCByZXR1cm4sIGp1bXAsIHF1aXQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMpIHRlcm1pbmF0ZXNcbiAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnlcbiAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiB3aXRoIGFcbiAgIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5IGVuY291bnRlciBhbm90aGVyIGJyZWFrcG9pbnQtLXdoaWNoXG4gICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0IHdoaWNoXG4gICBsaXN0IHRvIGV4ZWN1dGUuXG5cbiAgIElmIHlvdSB1c2UgdGhlIFwnc2lsZW50XCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgdXN1YWxcbiAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgVGhpcyBtYXkgYmVcbiAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyBtZXNzYWdlIGFuZFxuICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCB5b3VcbiAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG5cbnModGVwKVxuXG4gICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlIG9jY2FzaW9uXG4gICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiB0aGVcbiAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuXG5uKGV4dClcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaXNcbiAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGBgbmV4dGBgIGFuZFxuICAgYGBzdGVwYGAgaXMgdGhhdCBgYHN0ZXBgYCBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlXG4gICBgYG5leHRgYCBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHlcbiAgIHN0b3BwaW5nIGF0IHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuXG51bnQoaWwpIFtsaW5lbm9dXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG5cbiAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgbnVtYmVyXG4gICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gc3RvcCB3aGVuXG4gICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSBudW1iZXIuXG5cbnIoZXR1cm4pXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuXG5jKG9udChpbnVlKSlcblxuICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgZW5jb3VudGVyZWQuXG5cbmoodW1wKSBsaW5lbm9cblxuICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gdGhlXG4gICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlIGNvZGUgYWdhaW4sXG4gICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvblwndCB3YW50IHRvIHJ1bi5cblxuICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgaW5zdGFuY2VcbiAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhIGBgZm9yYGAgbG9vcCBvciBvdXRcbiAgIG9mIGEgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5sKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG5cbiAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgbGlzdCAxMVxuICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzIGxpc3RpbmcuXG4gICBXaXRoIGBgLmBgIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLlxuICAgV2l0aCBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSBgYC0+YGAuICBJZlxuICAgYW4gZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uIHdhc1xuICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgYGA+PmBgLCBpZiBpdFxuICAgZGlmZmVycyBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlIGBgPj5gYCBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgYGBsaXN0YGAuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYShyZ3MpXG5cbiAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuXG5wKHJpbnQpIGV4cHJlc3Npb25cblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCBpdHNcbiAgIHZhbHVlLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlIGBgcHJpbnRgYCBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzXG4gICBwcmV0dHktcHJpbnRlZCB1c2luZyB0aGUgYGBwcHJpbnRgYCBtb2R1bGUuXG5cbndoYXRpcyBleHByZXNzaW9uXG5cbiAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG5cbnNvdXJjZSBleHByZXNzaW9uXG5cbiAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4gICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnVuZGlzcGxheSBbZXhwcmVzc2lvbl1cblxuICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuaW50ZXJhY3RcblxuICAgU3RhcnQgYW4gaW50ZXJhdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlIGBgY29kZWBgIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5IGBgJTFgYCwgYGAlMmBgLCBhbmQgc28gb24sIHdoaWxlIGBgJSpgYCBpcyByZXBsYWNlZCBieVxuICAgYWxsIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlIGBgLnBkYnJjYGAgZmlsZSk6XG5cbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbiAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4gICAgICBhbGlhcyBwcyBwaSBzZWxmXG5cbnVuYWxpYXMgbmFtZVxuXG4gICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cblxuISBzdGF0ZW1lbnRcblxuICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudFxuICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCBhXG4gICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCBhXG4gICBgYGdsb2JhbGBgIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuXG4gICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbXCctbFwnXVxuICAgICAgKFBkYilcblxucnVuIFthcmdzIC4uLl1cbnJlc3RhcnQgW2FyZ3MgLi4uXVxuXG4gICBSZXN0YXJ0IHRoZSBkZWJ1Z2dlZCBQeXRob24gcHJvZ3JhbS4gIElmIGFuIGFyZ3VtZW50IGlzIHN1cHBsaWVkLFxuICAgaXQgaXMgc3BsaXQgd2l0aCBgYHNobGV4YGAgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICBgYHN5cy5hcmd2YGAuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciBvcHRpb25zXG4gICBhcmUgcHJlc2VydmVkLiBgYHJlc3RhcnRgYCBpcyBhbiBhbGlhcyBmb3IgYGBydW5gYC5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlIGlzXG4gICAgZGV0ZXJtaW5lZCBieSB0aGUgYGBfX25hbWVfX2BgIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKLSAnZGVsJzogJ1xuVGhlIGBgZGVsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsIG9yXG5nbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbmBgTmFtZUVycm9yYGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yLlxuJywKKyAnY3VzdG9taXphdGlvbic6ICdcbkJhc2ljIGN1c3RvbWl6YXRpb25cbioqKioqKioqKioqKioqKioqKipcblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gIGBgX19uZXdfXygpYGAgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgYGBfX25ld19fKClgYCBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHlcbiAgIGFuIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgdXNpbmdcbiAgIGBgc3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSlgYCB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgYGBfX25ld19fKClgYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgYGBfX2luaXRfXyhzZWxmWywgLi4uXSlgYCwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYC5cblxuICAgSWYgYGBfX25ld19fKClgYCBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgIGBgX19uZXdfXygpYGAgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgYGBfX2luaXRfXygpYGAgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9faW5pdF9fKClgYCBtZXRob2QsXG4gICBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2ZcbiAgIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgIGBgQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSlgYC4gIEFzIGEgc3BlY2lhbCBjb25zdHJhaW50XG4gICBvbiBjb25zdHJ1Y3RvcnMsIG5vIHZhbHVlIG1heSBiZSByZXR1cm5lZDsgZG9pbmcgc28gd2lsbCBjYXVzZSBhXG4gICBgYFR5cGVFcnJvcmBgIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhIGBgX19kZWxfXygpYGAgbWV0aG9kLFxuICAgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2RlbF9fKClgYCBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5XG4gICBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGVcbiAgIGluc3RhbmNlLiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yXG4gICB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6IGBgZGVsIHhgYCBkb2VzblwndCBkaXJlY3RseSBjYWxsIGBgeC5fX2RlbF9fKClgYCAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGBgeGBgIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXJcbiAgICAgaXMgb25seSBjYWxsZWQgd2hlbiBgYHhgYFwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZVxuICAgICBjb21tb24gc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW5cbiAgICAgb2JqZWN0IGZyb20gZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW5cbiAgICAgb2JqZWN0cyAoZS5nLiwgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGhcbiAgICAgcGFyZW50IGFuZCBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlXG4gICAgIHN0YWNrIGZyYW1lIG9mIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrXG4gICAgIHN0b3JlZCBpbiBgYHN5cy5leGNfaW5mbygpWzJdYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3JcbiAgICAgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW5cbiAgICAgdW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyBgYE5vbmVgYCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLiBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZVxuICAgICBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnlcbiAgICAgZGVmYXVsdCksIGJ1dCBjYW4gb25seSBiZSBjbGVhbmVkIHVwIGlmIHRoZXJlIGFyZSBubyBQeXRob24tXG4gICAgIGxldmVsIGBgX19kZWxfXygpYGAgbWV0aG9kcyBpbnZvbHZlZC4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25cbiAgICAgZm9yIHRoZSBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGdhcmJhZ2VgYCB2YWx1ZS5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgc3RyKClgYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlIGBgcHJpbnQoKWBgXG4gICBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gYGBfX3JlcHJfXygpYGAgaW4gdGhhdCBpdCBkb2VzIG5vdCBoYXZlXG4gICB0byBiZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlXG4gICByZXByZXNlbnRhdGlvbiBtYXkgYmUgdXNlZCBpbnN0ZWFkLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBieXRlcygpYGAgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgZm9ybWF0KClgYCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICBgYGZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIENsYXNzZXMgd2hpY2ggaW5oZXJpdCBhIGBgX19oYXNoX18oKWBgIG1ldGhvZCBmcm9tIGEgcGFyZW50IGNsYXNzXG4gICBidXQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIGBgX19lcV9fKClgYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWVcbiAgIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYSB2YWx1ZS1cbiAgIGJhc2VkIGNvbmNlcHQgb2YgZXF1YWxpdHkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpZGVudGl0eSBiYXNlZFxuICAgZXF1YWxpdHkpIGNhbiBleHBsaWNpdGx5IGZsYWcgdGhlbXNlbHZlcyBhcyBiZWluZyB1bmhhc2hhYmxlIGJ5XG4gICBzZXR0aW5nIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvIG1lYW5zXG4gICB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhbiBhcHByb3ByaWF0ZVxuICAgYGBUeXBlRXJyb3JgYCB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLFxuICAgYnV0IHRoZXkgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlblxuICAgY2hlY2tpbmcgYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgKHVubGlrZSBjbGFzc2VzXG4gICB3aGljaCBkZWZpbmUgdGhlaXIgb3duIGBgX19oYXNoX18oKWBgIHRvIGV4cGxpY2l0bHkgcmFpc2VcbiAgIGBgVHlwZUVycm9yYGApLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBgYF9faGFzaF9fKClgYCBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGVcbiAgIGludGVycHJldGVyIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyBgYF9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX19gYC4gT3RoZXJ3aXNlIHRoZSBpbmhlcml0YW5jZSBvZlxuICAgYGBfX2hhc2hfXygpYGAgd2lsbCBiZSBibG9ja2VkLCBqdXN0IGFzIGlmIGBgX19oYXNoX19gYCBoYWQgYmVlblxuICAgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSBgYF9faGFzaF9fKClgYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWVcbiAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyBgYFBZVEhPTkhBU0hTRUVEYGAuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG4nLAorICdkZWJ1Z2dlcic6ICdcbmBgcGRiYGAgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG1vZHVsZSBgYHBkYmBgIGRlZmluZXMgYW4gaW50ZXJhY3RpdmUgc291cmNlIGNvZGUgZGVidWdnZXIgZm9yXG5QeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgYW5kXG5zaW5nbGUgc3RlcHBpbmcgYXQgdGhlIHNvdXJjZSBsaW5lIGxldmVsLCBpbnNwZWN0aW9uIG9mIHN0YWNrIGZyYW1lcyxcbnNvdXJjZSBjb2RlIGxpc3RpbmcsIGFuZCBldmFsdWF0aW9uIG9mIGFyYml0cmFyeSBQeXRob24gY29kZSBpbiB0aGVcbmNvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmdcbmFuZCBjYW4gYmUgY2FsbGVkIHVuZGVyIHByb2dyYW0gY29udHJvbC5cblxuVGhlIGRlYnVnZ2VyIGlzIGV4dGVuc2libGUgLS0gaXQgaXMgYWN0dWFsbHkgZGVmaW5lZCBhcyB0aGUgY2xhc3NcbmBgUGRiYGAuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnlcbnJlYWRpbmcgdGhlIHNvdXJjZS4gIFRoZSBleHRlbnNpb24gaW50ZXJmYWNlIHVzZXMgdGhlIG1vZHVsZXMgYGBiZGJgYFxuYW5kIGBgY21kYGAuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgYGAoUGRiKWBgLiBUeXBpY2FsIHVzYWdlIHRvIHJ1biBhIHByb2dyYW1cbnVuZGVyIGNvbnRyb2wgb2YgdGhlIGRlYnVnZ2VyIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IHBkYi5ydW4oXCdteW1vZHVsZS50ZXN0KClcJylcbiAgID4gPHN0cmluZz4oMCk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgTmFtZUVycm9yOiBcJ3NwYW1cJ1xuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYilcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSBgYHJlYWRsaW5lYGAgbW9kdWxlIGlzXG5hdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZCBjb21tYW5kIGFyZ3VtZW50cywgZS5nLiB0aGUgY3VycmVudCBnbG9iYWxcbmFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlIGBgcHJpbnRgYCBjb21tYW5kLlxuXG5gYHBkYi5weWBgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy5cbkZvciBleGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6IGBgcGRiLnB5YGAgbm93IGFjY2VwdHMgYSBgYC1jYGAgb3B0aW9uIHRoYXRcbmV4ZWN1dGVzIGNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgYGAucGRicmNgYCBmaWxlLCBzZWUgKkRlYnVnZ2VyXG5Db21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlIGBgY29udGludWVgYCBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSBgYGNvbnRpbnVlYGAsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nIGBgc3RlcGBgIG9yIGBgbmV4dGBgIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSBgYF9fbWFpbl9fYGAgaXMgdXNlZC4gIChTZWVcbiAgIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBvciBgYGV2YWwoKWBgXG4gICBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gYGBydW5ldmFsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICBgYHJ1bigpYGAuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gYGBydW5jYWxsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cblRoZSBgYHJ1bipgYCBmdW5jdGlvbnMgYW5kIGBgc2V0X3RyYWNlKClgYCBhcmUgYWxpYXNlcyBmb3Jcbmluc3RhbnRpYXRpbmcgdGhlIGBgUGRiYGAgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZVxubmFtZS4gIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzXG55b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgYGBQZGJgYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgYGBjbWQuQ21kYGAgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgIGBgY29udGludWVgYCBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG5gYGgoZWxwKWBgIG1lYW5zIHRoYXQgZWl0aGVyIGBgaGBgIG9yIGBgaGVscGBgIGNhbiBiZSB1c2VkIHRvIGVudGVyXG50aGUgaGVscCBjb21tYW5kIChidXQgbm90IGBgaGVgYCBvciBgYGhlbGBgLCBub3IgYGBIYGAgb3IgYGBIZWxwYGAgb3JcbmBgSEVMUGBgKS4gIEFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlXG4oc3BhY2VzIG9yIHRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHNcbihgYFtdYGApIGluIHRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKGBgfGBgKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSBgYGxpc3RgYCBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKGBgIWBgKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnlcbmBgOztgYC4gIChBIHNpbmdsZSBgYDtgYCBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvclxubXVsdGlwbGUgY29tbWFuZHMgaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vXG5pbnRlbGxpZ2VuY2UgaXMgYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0XG5hdCB0aGUgZmlyc3QgYGA7O2BgIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZFxuc3RyaW5nLlxuXG5JZiBhIGZpbGUgYGAucGRicmNgYCBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogYGAucGRicmNgYCBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzIGBgY29udGludWVgYCBvciBgYG5leHRgYC4gIFByZXZpb3VzbHksXG50aGVzZSBjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gIGBgaGVscCBwZGJgYFxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgYGBwZGJgYFxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLFxuICAgYGBoZWxwIGV4ZWNgYCBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlIGBgIWBgIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gYGBzeXMucGF0aGBgLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIGBgYnJlYWtgYC5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0IGBgZW5kYGAgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcHJpbnQgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggYGBlbmRgYDsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgYG5leHRgYCBhbmRcbiAgIGBgc3RlcGBgIGlzIHRoYXQgYGBzdGVwYGAgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZVxuICAgYGBuZXh0YGAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5XG4gICBzdG9wcGluZyBhdCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSBgYGZvcmBgIGxvb3Agb3Igb3V0XG4gICBvZiBhIGBgZmluYWxseWBgIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCBgYC5gYCBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS5cbiAgIFdpdGggb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgYGAtPmBgLiAgSWZcbiAgIGFuIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5IGBgPj5gYCwgaWYgaXRcbiAgIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSBgYD4+YGAgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yIGBgbGlzdGBgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucChyaW50KSBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSBgYHByaW50YGAgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgcHJldHR5LXByaW50ZWQgdXNpbmcgdGhlIGBgcHByaW50YGAgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSBgYGNvZGVgYCBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSBgYCUxYGAsIGBgJTJgYCwgYW5kIHNvIG9uLCB3aGlsZSBgYCUqYGAgaXMgcmVwbGFjZWQgYnlcbiAgIGFsbCB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSBgYC5wZGJyY2BgIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggYGBzaGxleGBgIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgYGBzeXMuYXJndmBgLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9uc1xuICAgYXJlIHByZXNlcnZlZC4gYGByZXN0YXJ0YGAgaXMgYW4gYWxpYXMgZm9yIGBgcnVuYGAuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZSBpc1xuICAgIGRldGVybWluZWQgYnkgdGhlIGBgX19uYW1lX19gYCBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCisgJ2RlbCc6ICdcblRoZSBgYGRlbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgYGBnbG9iYWxgYFxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG5gYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG5mcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZFxuYmxvY2suXG4nLAogICdkaWN0JzogJ1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvblxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxubmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4iZm9yIiBhbmQgImlmIiBjbGF1c2VzLiBXaGVuIHRoZSBjb21wcmVoZW5zaW9uIGlzIHJ1biwgdGhlIHJlc3VsdGluZ1xua2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSBvcmRlclxudGhleSBhcmUgcHJvZHVjZWQuXG5cblJlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZXMgb2YgdGhlIGtleSB2YWx1ZXMgYXJlIGxpc3RlZCBlYXJsaWVyIGluXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqLiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG5zaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG5iZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbnJpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCiAgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5JZiB0aGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cblRoZSBgYGV2YWwoKWBgIGFuZCBgYGV4ZWMoKWBgIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlIGBgZXhlYygpYGAgYW5kIGBgZXZhbCgpYGAgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCiAgJ2Vsc2UnOiAnXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKQEAgLTMzLDE0ICszNCwxNCBAQAogICdleHBybGlzdHMnOiAnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG5cbkFuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZVxubGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlXG5leHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6IGBgKClgYC4pXG4nLAogICdmbG9hdGluZyc6ICdcbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5GbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuZGVmaW5pdGlvbnM6XG5cbiAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4gICBwb2ludGZsb2F0ICAgIDo6PSBbaW50cGFydF0gZnJhY3Rpb24gfCBpbnRwYXJ0ICIuIlxuICAgZXhwb25lbnRmbG9hdCA6Oj0gKGludHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuICAgaW50cGFydCAgICAgICA6Oj0gZGlnaXQrXG4gICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXQrXG4gICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdCtcblxuTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nXG5yYWRpeCAxMC4gRm9yIGV4YW1wbGUsIGBgMDc3ZTAxMGBgIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZVxubnVtYmVyIGFzIGBgNzdlMTBgYC4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlIGBgLTFgYFxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgYGAtYGAgYW5kIHRoZVxubGl0ZXJhbCBgYDFgYC5cbicsCiAgJ2Zvcic6ICdcblRoZSBgYGZvcmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGZvcmBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYVxuc2VxdWVuY2UgKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG5gYGV4cHJlc3Npb25fbGlzdGBgLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG5wcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgYGBTdG9wSXRlcmF0aW9uYGBcbmV4Y2VwdGlvbiksIHRoZSBzdWl0ZSBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCxcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5jb250aW51ZXMgd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSBgYGVsc2VgYCBjbGF1c2UgaWYgdGhlcmUgd2FzXG5ubyBuZXh0IGl0ZW0uXG5cblRoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgZG9lc1xubm90IGFmZmVjdCB0aGUgbmV4dCBpdGVtIGFzc2lnbmVkIHRvIGl0LlxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsXG5ieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYHJhbmdlKClgYCByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzIGBgZm9yXG5pIDo9IGEgdG8gYiBkb2BgOyBlLmcuLCBgYGxpc3QocmFuZ2UoMykpYGAgcmV0dXJucyB0aGUgbGlzdCBgYFswLCAxLFxuMl1gYC5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcFxuICAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogJ1xuRm9ybWF0IFN0cmluZyBTeW50YXhcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHN0ci5mb3JtYXQoKWBgIG1ldGhvZCBhbmQgdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mIGBgRm9ybWF0dGVyYGAsXG5zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cblxuRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlc1xuYGB7fWBgLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbFxudGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgdG8gaW5jbHVkZVxuYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgZG91Ymxpbmc6XG5gYHt7YGAgYW5kIGBgfX1gYC5cblxuVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcblxuICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiBjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbiAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbiAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4gICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbiAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJdIj4gK1xuICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbj5cblxuSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCBhXG4qZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSBmb3JtYXR0ZWRcbmFuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgZmllbGQuIFRoZVxuKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qIGZpZWxkLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgYGBcJyFcJ2BgLCBhbmQgYSAqZm9ybWF0X3NwZWMqLCB3aGljaFxuaXMgcHJlY2VkZWQgYnkgYSBjb2xvbiBgYFwnOlwnYGAuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0XG5mb3IgdGhlIHJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgYGBcJzEwXCdgYCBvclxuYGBcJzotXVwnYGApIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSBmb2xsb3dlZCBieVxuYW55IG51bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgdGhlXG5mb3JtIGBgXCcubmFtZVwnYGAgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nIGBgZ2V0YXR0cigpYGAsXG53aGlsZSBhbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtIGBgXCdbaW5kZXhdXCdgYCBkb2VzIGFuIGluZGV4IGxvb2t1cFxudXNpbmcgYGBfX2dldGl0ZW1fXygpYGAuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyBgYFwne30ge31cJ2BgIGlzIGVxdWl2YWxlbnQgdG8gYGBcJ3swfSB7MX1cJ2BgLlxuXG5Tb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuXG4gICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gezF9IlxuICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbiAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICMgRmlyc3QgZWxlbWVudCBvZiBrZXl3b3JkIGFyZ3VtZW50IFwncGxheWVyc1wnLlxuXG5UaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlIGZvcm1hdHRpbmcuXG5Ob3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGVcbmBgX19mb3JtYXRfXygpYGAgbWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzXG5pdCBpcyBkZXNpcmFibGUgdG8gZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZyxcbm92ZXJyaWRpbmcgaXRzIG93biBkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZVxudG8gYSBzdHJpbmcgYmVmb3JlIGNhbGxpbmcgYGBfX2Zvcm1hdF9fKClgYCwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nXG5sb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogYGBcJyFzXCdgYCB3aGljaCBjYWxsc1xuYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZSwgYGBcJyFyXCdgYCB3aGljaCBjYWxscyBgYHJlcHIoKWBgIGFuZCBgYFwnIWFcJ2BgXG53aGljaCBjYWxscyBgYGFzY2lpKClgYC5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBjYW4gY29udGFpbiBvbmx5IGEgZmllbGRcbm5hbWU7IGNvbnZlcnNpb24gZmxhZ3MgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQuICBUaGVcbnJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZSBzdWJzdGl0dXRlZCBiZWZvcmUgdGhlXG4qZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpcyBhbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYVxudmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluIGBgZm9ybWF0KClgYCBmdW5jdGlvbi4gIEVhY2ggZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvd1xudGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yIGZvcm1hdFxuc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgb25seVxuc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuXG5BIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKGBgIiJgYCkgcHJvZHVjZXNcbnRoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCBgYHN0cigpYGAgb24gdGhlIHZhbHVlLiBBIG5vbi1cbmVtcHR5IGZvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG5cblRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG5cbiAgIGZvcm1hdF9zcGVjIDo6PSBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuICAgZmlsbCAgICAgICAgOjo9IDxhIGNoYXJhY3RlciBvdGhlciB0aGFuIFwnfVwnPlxuICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuICAgd2lkdGggICAgICAgOjo9IGludGVnZXJcbiAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4gICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG5cblRoZSAqZmlsbCogY2hhcmFjdGVyIGNhbiBiZSBhbnkgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCcuICBUaGVcbnByZXNlbmNlIG9mIGEgZmlsbCBjaGFyYWN0ZXIgaXMgc2lnbmFsZWQgYnkgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmdcbml0LCB3aGljaCBtdXN0IGJlIG9uZSBvZiB0aGUgYWxpZ25tZW50IG9wdGlvbnMuICBJZiB0aGUgc2Vjb25kXG5jaGFyYWN0ZXIgb2YgKmZvcm1hdF9zcGVjKiBpcyBub3QgYSB2YWxpZCBhbGlnbm1lbnQgb3B0aW9uLCB0aGVuIGl0IGlzXG5hc3N1bWVkIHRoYXQgYm90aCB0aGUgZmlsbCBjaGFyYWN0ZXIgYW5kIHRoZSBhbGlnbm1lbnQgb3B0aW9uIGFyZVxuYWJzZW50LlxuXG5UaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyBmb2xsb3dzOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCc8XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0IG9iamVjdHMpLiAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz5cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG51bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPVwnYGAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgdGhlIHNpZ24gKGlmIGFueSkgICAgfFxuICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yIHByaW50aW5nIGZpZWxkcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gXCcrMDAwMDAwMTIwXCcuIFRoaXMgYWxpZ25tZW50IG9wdGlvbiBpcyBvbmx5ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnXlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSBmaWVsZCB3aWR0aFxud2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyB0aGF0IHRoZVxuYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG5cblRoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiBiZSBvbmUgb2ZcbnRoZSBmb2xsb3dpbmc6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJytcJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbiAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnLVwnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgdXNlZCBvbiBwb3NpdGl2ZSAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBgYFwnI1wnYGAgb3B0aW9uIGNhdXNlcyB0aGUgImFsdGVybmF0ZSBmb3JtIiB0byBiZSB1c2VkIGZvciB0aGVcbmNvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgZGlmZmVyZW50XG50eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCBjb21wbGV4IGFuZFxuRGVjaW1hbCB0eXBlcy4gRm9yIGludGVnZXJzLCB3aGVuIGJpbmFyeSwgb2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dFxuaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgYGBcJzBiXCdgYCwgYGBcJzBvXCdgYCwgb3JcbmBgXCcweFwnYGAgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgRGVjaW1hbCB0aGVcbmFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIHRvIGFsd2F5cyBjb250YWluIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuIE5vcm1hbGx5LCBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgY29udmVyc2lvbnNcbm9ubHkgaWYgYSBkaWdpdCBmb2xsb3dzIGl0LiBJbiBhZGRpdGlvbiwgZm9yIGBgXCdnXCdgYCBhbmQgYGBcJ0dcJ2BgXG5jb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC5cblxuVGhlIGBgXCcsXCdgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgdGhvdXNhbmRzXG5zZXBhcmF0b3IuIEZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgYGBcJ25cJ2BgIGludGVnZXJcbnByZXNlbnRhdGlvbiB0eXBlIGluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSBgYFwnLFwnYGAgb3B0aW9uIChzZWUgYWxzbyAqKlBFUFxuMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuSWYgdGhlICp3aWR0aCogZmllbGQgaXMgcHJlY2VkZWQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciwgdGhpc1xuZW5hYmxlcyB6ZXJvLXBhZGRpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYW4gKmFsaWdubWVudCogdHlwZSBvZlxuYGBcJz1cJ2BgIGFuZCBhICpmaWxsKiBjaGFyYWN0ZXIgb2YgYGBcJzBcJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdFXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgYGBcJ2VcJ2BgIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdmXCdgYCAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRlwnYGAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgXCdmXCdgYCwgYnV0IGNvbnZlcnRzIGBgbmFuYGAgdG8gICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgTkFOYGAgYW5kIGBgaW5mYGAgdG8gYGBJTkZgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiBgYHAgPj0gMWBgLCB0aGlzICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAgd291bGQgaGF2ZSBleHBvbmVudCBgYGV4cGBgLiAgVGhlbiBpZiBgYC00IDw9IGV4cCAgfFxuICAgfCAgICAgICAgICAgfCA8IHBgYCwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBcJ2ZcJ2BgIGFuZCBwcmVjaXNpb24gYGBwLTEtZXhwYGAuIE90aGVyd2lzZSwgdGhlIG51bWJlciAgIHxcbiAgIHwgICAgICAgICAgIHwgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYC4gSW4gYm90aCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAgICB8XG4gICB8ICAgICAgICAgICB8IHJlbW92ZWQgZnJvbSB0aGUgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyAgICAgfFxuICAgfCAgICAgICAgICAgfCBhbHNvIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICAgIHxcbiAgIHwgICAgICAgICAgIHwgaXQuICBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB8XG4gICB8ICAgICAgICAgICB8IHplcm8sIGFuZCBuYW5zLCBhcmUgZm9ybWF0dGVkIGFzIGBgaW5mYGAsIGBgLWluZmBgLCBgYDBgYCwgfFxuICAgfCAgICAgICAgICAgfCBgYC0wYGAgYW5kIGBgbmFuYGAgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgYGAwYGAgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50ICB8XG4gICB8ICAgICAgICAgICB8IHRvIGEgcHJlY2lzaW9uIG9mIGBgMWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyBgYFwnZ1wnYGAgZXhjZXB0IHN3aXRjaGVzIHRvIGBgXCdFXCdgYCB8XG4gICB8ICAgICAgICAgICB8IGlmIHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBpbmZpbml0eSBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdnXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJyVcJ2BgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKGBgXCdmXCdgYCkgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gYGBcJ2dcJ2BgLCBleGNlcHQgd2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBkZWNpbWFsIHBvaW50IGFuZCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBUaGlzIGlzICAgfFxuICAgfCAgICAgICAgICAgfCBpbnRlbmRlZCB0byBtYXRjaCBgYHN0cigpYGAsIGV4Y2VwdCB5b3UgY2FuIGFkZCB0aGUgb3RoZXIgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCBgYCVgYC1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZFxuYGAlYGAtZm9ybWF0dGluZywgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBge31gYCBhbmQgd2l0aCBgYDpgYCB1c2VkXG5pbnN0ZWFkIG9mIGBgJWBgLiBGb3IgZXhhbXBsZSwgYGBcJyUwMy4yZlwnYGAgY2FuIGJlIHRyYW5zbGF0ZWQgdG9cbmBgXCd7OjAzLjJmfVwnYGAuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+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+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuJywKKyAnZm9ybWF0c3RyaW5ncyc6ICdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBzdHIuZm9ybWF0KClgYCBtZXRob2QgYW5kIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiBgYEZvcm1hdHRlcmBgLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbmBge31gYC4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuYGB7e2BgIGFuZCBgYH19YGAuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgXCchXCdgYCwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2hcbmlzIHByZWNlZGVkIGJ5IGEgY29sb24gYGBcJzpcJ2BgLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdFxuZm9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzIGBgXCcxMFwnYGAgb3JcbmBgXCc6LV1cJ2BgKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnlcbmFueSBudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZVxuZm9ybSBgYFwnLm5hbWVcJ2BgIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyBgYGdldGF0dHIoKWBgLFxud2hpbGUgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYFwnW2luZGV4XVwnYGAgZG9lcyBhbiBpbmRleCBsb29rdXBcbnVzaW5nIGBgX19nZXRpdGVtX18oKWBgLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gYGBcJ3t9IHt9XCdgYCBpcyBlcXVpdmFsZW50IHRvIGBgXCd7MH0gezF9XCdgYC5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlXG5gYF9fZm9ybWF0X18oKWBgIG1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlc1xuaXQgaXMgZGVzaXJhYmxlIHRvIGZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsXG5vdmVycmlkaW5nIGl0cyBvd24gZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWVcbnRvIGEgc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGBgX19mb3JtYXRfXygpYGAsIHRoZSBub3JtYWwgZm9ybWF0dGluZ1xubG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBgXCchc1wnYGAgd2hpY2ggY2FsbHNcbmBgc3RyKClgYCBvbiB0aGUgdmFsdWUsIGBgXCchclwnYGAgd2hpY2ggY2FsbHMgYGByZXByKClgYCBhbmQgYGBcJyFhXCdgYFxud2hpY2ggY2FsbHMgYGBhc2NpaSgpYGAuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiBgYGZvcm1hdCgpYGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nIChgYCIiYGApIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZS4gQSBub24tXG5lbXB0eSBmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJz5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5UaGUgKmZpbGwqIGNoYXJhY3RlciBjYW4gYmUgYW55IGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnLiAgVGhlXG5wcmVzZW5jZSBvZiBhIGZpbGwgY2hhcmFjdGVyIGlzIHNpZ25hbGVkIGJ5IHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nXG5pdCwgd2hpY2ggbXVzdCBiZSBvbmUgb2YgdGhlIGFsaWdubWVudCBvcHRpb25zLiAgSWYgdGhlIHNlY29uZFxuY2hhcmFjdGVyIG9mICpmb3JtYXRfc3BlYyogaXMgbm90IGEgdmFsaWQgYWxpZ25tZW50IG9wdGlvbiwgdGhlbiBpdCBpc1xuYXNzdW1lZCB0aGF0IGJvdGggdGhlIGZpbGwgY2hhcmFjdGVyIGFuZCB0aGUgYWxpZ25tZW50IG9wdGlvbiBhcmVcbmFic2VudC5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnPFwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc+XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz1cJ2BgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ15cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCcrXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJy1cJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYGBcJyNcJ2BgIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlIGBgXCcwYlwnYGAsIGBgXCcwb1wnYGAsIG9yXG5gYFwnMHhcJ2BgIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciBgYFwnZ1wnYGAgYW5kIGBgXCdHXCdgYFxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSBgYFwnLFwnYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kc1xuc2VwYXJhdG9yLiBGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlIGBgXCduXCdgYCBpbnRlZ2VyXG5wcmVzZW50YXRpb24gdHlwZSBpbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgYGBcJyxcJ2BgIG9wdGlvbiAoc2VlIGFsc28gKipQRVBcbjM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cblByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhIHplcm8gKGBgXCcwXCdgYCkgY2hhcmFjdGVyIGVuYWJsZXNcbnNpZ24tYXdhcmUgemVyby1wYWRkaW5nIGZvciBudW1lcmljIHR5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGFcbipmaWxsKiBjaGFyYWN0ZXIgb2YgYGBcJzBcJ2BgIHdpdGggYW4gKmFsaWdubWVudCogdHlwZSBvZiBgYFwnPVwnYGAuXG5cblRoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgZGlnaXRzIHNob3VsZFxuYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlXG5mb3JtYXR0ZWQgd2l0aCBgYFwnZlwnYGAgYW5kIGBgXCdGXCdgYCwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbFxucG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggYGBcJ2dcJ2BgIG9yIGBgXCdHXCdgYC5cbkZvciBub24tbnVtYmVyIHR5cGVzIHRoZSBmaWVsZCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gZmllbGQgc2l6ZSAtIGluXG5vdGhlciB3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgY29udGVudC5cblRoZSAqcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG5cbkZpbmFsbHksIHRoZSAqdHlwZSogZGV0ZXJtaW5lcyBob3cgdGhlIGRhdGEgc2hvdWxkIGJlIHByZXNlbnRlZC5cblxuVGhlIGF2YWlsYWJsZSBzdHJpbmcgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnc1wnYGAgICB8IFN0cmluZyBmb3JtYXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgdHlwZSBmb3Igc3RyaW5ncyBhbmQgICAgfFxuICAgfCAgICAgICAgICAgfCBtYXkgYmUgb21pdHRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzIGBgXCdzXCdgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnYlwnYGAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDIuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2NcJ2BgICAgfCBDaGFyYWN0ZXIuIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIHRoZSBjb3JyZXNwb25kaW5nICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlIHByaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZFwnYGAgICB8IERlY2ltYWwgSW50ZWdlci4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTAuICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ29cJ2BgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDguICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCd4XCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIGxvd2VyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ1hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgdXBwZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZFwnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzIGBgXCdkXCdgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5JbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJlc2VudGF0aW9uIHR5cGVzLCBpbnRlZ2VycyBjYW4gYmUgZm9ybWF0dGVkXG53aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93IChleGNlcHRcbmBgXCduXCdgYCBhbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sIGBgZmxvYXQoKWBgIGlzIHVzZWQgdG8gY29udmVydCB0aGVcbmludGVnZXIgdG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnZVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gU2FtZSBhcyBgYFwnZVwnYGAgZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIFwnRVwnIGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhIGZpeGVkLXBvaW50IG51bWJlci4gIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdGXCdgYCAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgYGBcJ2ZcJ2BgLCBidXQgY29udmVydHMgYGBuYW5gYCB0byAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBOQU5gYCBhbmQgYGBpbmZgYCB0byBgYElORmBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZ1wnYGAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uIGBgcCA+PSAxYGAsIHRoaXMgICAgfFxuICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byBgYHBgYCBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0cyB0aGUgcmVzdWx0IGluIGVpdGhlciBmaXhlZC1wb2ludCBmb3JtYXQgb3IgaW4gICAgICB8XG4gICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgbWFnbml0dWRlLiAgVGhlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgdGhlIHJlc3VsdCAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYCB3b3VsZCBoYXZlIGV4cG9uZW50IGBgZXhwYGAuICBUaGVuIGlmIGBgLTQgPD0gZXhwICB8XG4gICB8ICAgICAgICAgICB8IDwgcGBgLCB0aGUgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYFwnZlwnYGAgYW5kIHByZWNpc2lvbiBgYHAtMS1leHBgYC4gT3RoZXJ3aXNlLCB0aGUgbnVtYmVyICAgfFxuICAgfCAgICAgICAgICAgfCBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgLiBJbiBib3RoIGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVtb3ZlZCBmcm9tIHRoZSBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzICAgICB8XG4gICB8ICAgICAgICAgICB8IGFsc28gcmVtb3ZlZCBpZiB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgICAgfFxuICAgfCAgICAgICAgICAgfCBpdC4gIFBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHxcbiAgIHwgICAgICAgICAgIHwgemVybywgYW5kIG5hbnMsIGFyZSBmb3JtYXR0ZWQgYXMgYGBpbmZgYCwgYGAtaW5mYGAsIGBgMGBgLCB8XG4gICB8ICAgICAgICAgICB8IGBgLTBgYCBhbmQgYGBuYW5gYCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiBgYDBgYCBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgIHxcbiAgIHwgICAgICAgICAgIHwgdG8gYSBwcmVjaXNpb24gb2YgYGAxYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnR1wnYGAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzIGBgXCdnXCdgYCBleGNlcHQgc3dpdGNoZXMgdG8gYGBcJ0VcJ2BgIHxcbiAgIHwgICAgICAgICAgIHwgaWYgdGhlIG51bWJlciBnZXRzIHRvbyBsYXJnZS4gVGhlIHJlcHJlc2VudGF0aW9ucyBvZiAgICAgICB8XG4gICB8ICAgICAgICAgICB8IGluZmluaXR5IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsIHRvby4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2dcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnJVwnYGAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgYW5kIGRpc3BsYXlzIGluICAgfFxuICAgfCAgICAgICAgICAgfCBmaXhlZCAoYGBcJ2ZcJ2BgKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byBgYFwnZ1wnYGAsIGV4Y2VwdCB3aXRoIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGRlY2ltYWwgcG9pbnQgYW5kIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgMTIuIFRoaXMgaXMgICB8XG4gICB8ICAgICAgICAgICB8IGludGVuZGVkIHRvIG1hdGNoIGBgc3RyKClgYCwgZXhjZXB0IHlvdSBjYW4gYWRkIHRoZSBvdGhlciAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXQgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblxuRm9ybWF0IGV4YW1wbGVzXG49PT09PT09PT09PT09PT1cblxuVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGV4YW1wbGVzIG9mIHRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbmQgY29tcGFyaXNvblxud2l0aCB0aGUgb2xkIGBgJWBgLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkXG5gYCVgYC1mb3JtYXR0aW5nLCB3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgYGB7fWBgIGFuZCB3aXRoIGBgOmBgIHVzZWRcbmluc3RlYWQgb2YgYGAlYGAuIEZvciBleGFtcGxlLCBgYFwnJTAzLjJmXCdgYCBjYW4gYmUgdHJhbnNsYXRlZCB0b1xuYGBcJ3s6MDMuMmZ9XCdgYC5cblxuVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgb3B0aW9ucywgc2hvd25cbmluIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG5cbiAgID4+PiBcJ3swfSwgezF9LCB7Mn1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7fSwge30sIHt9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpICAjIDMuMSsgb25seVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJylcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KCpcJ2FiY1wnKSAgICAgICMgdW5wYWNraW5nIGFyZ3VtZW50IHNlcXVlbmNlXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezB9ezF9ezB9XCcuZm9ybWF0KFwnYWJyYVwnLCBcJ2NhZFwnKSAgICMgYXJndW1lbnRzXCcgaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbiAgIFwnYWJyYWNhZGFicmFcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG5cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdChsYXRpdHVkZT1cJzM3LjI0TlwnLCBsb25naXR1ZGU9XCctMTE1LjgxV1wnKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG4gICA+Pj4gY29vcmQgPSB7XCdsYXRpdHVkZVwnOiBcJzM3LjI0TlwnLCBcJ2xvbmdpdHVkZVwnOiBcJy0xMTUuODFXXCd9XG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQoKipjb29yZClcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgYXR0cmlidXRlczpcblxuICAgPj4+IGMgPSAzLTVqXG4gICA+Pj4gKFwnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IHswLnJlYWx9IFwnXG4gICAuLi4gIFwnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS5cJykuZm9ybWF0KGMpXG4gICBcJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLlwnXG4gICA+Pj4gY2xhc3MgUG9pbnQ6XG4gICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4LCB5KTpcbiAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ1BvaW50KHtzZWxmLnh9LCB7c2VsZi55fSlcJy5mb3JtYXQoc2VsZj1zZWxmKVxuICAgLi4uXG4gICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuICAgXCdQb2ludCg0LCAyKVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBpdGVtczpcblxuICAgPj4+IGNvb3JkID0gKDMsIDUpXG4gICA+Pj4gXCdYOiB7MFswXX07ICBZOiB7MFsxXX1cJy5mb3JtYXQoY29vcmQpXG4gICBcJ1g6IDM7ICBZOiA1XCdcblxuUmVwbGFjaW5nIGBgJXNgYCBhbmQgYGAlcmBgOlxuXG4gICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiB7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4gICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG5cbkFsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG5cbiAgID4+PiBcJ3s6PDMwfVwnLmZvcm1hdChcJ2xlZnQgYWxpZ25lZFwnKVxuICAgXCdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICBcJ1xuICAgPj4+IFwnezo+MzB9XCcuZm9ybWF0KFwncmlnaHQgYWxpZ25lZFwnKVxuICAgXCcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWRcJ1xuICAgPj4+IFwnezpeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJylcbiAgIFwnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6Kl4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKSAgIyB1c2UgXCcqXCcgYXMgYSBmaWxsIGNoYXJcbiAgIFwnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqXCdcblxuUmVwbGFjaW5nIGBgJStmYGAsIGBgJS1mYGAsIGFuZCBgYCUgZmBgIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcblxuICAgPj4+IFwnezorZn07IHs6K2Z9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0IGFsd2F5c1xuICAgXCcrMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7OiBmfTsgezogZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuICAgXCcgMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7Oi1mfTsgezotZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgbWludXMgLS0gc2FtZSBhcyBcJ3s6Zn07IHs6Zn1cJ1xuICAgXCczLjE0MDAwMDsgLTMuMTQwMDAwXCdcblxuUmVwbGFjaW5nIGBgJXhgYCBhbmQgYGAlb2BgIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnRcbmJhc2VzOlxuXG4gICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDp4fTsgIG9jdDogezA6b307ICBiaW46IHswOmJ9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwXCdcbiAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiB7MDojYn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMHgyYTsgIG9jdDogMG81MjsgIGJpbjogMGIxMDEwMTBcJ1xuXG5Vc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuXG4gICA+Pj4gXCd7Oix9XCcuZm9ybWF0KDEyMzQ1Njc4OTApXG4gICBcJzEsMjM0LDU2Nyw4OTBcJ1xuXG5FeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcblxuICAgPj4+IHBvaW50cyA9IDE5XG4gICA+Pj4gdG90YWwgPSAyMlxuICAgPj4+IFwnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX1cJy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuICAgXCdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JVwnXG5cblVzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcblxuICAgPj4+IGltcG9ydCBkYXRldGltZVxuICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuICAgPj4+IFwnezolWS0lbS0lZCAlSDolTTolU31cJy5mb3JtYXQoZClcbiAgIFwnMjAxMC0wNy0wNCAxMjoxNTo1OFwnXG5cbk5lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG5cbiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKFwnPF4+XCcsIFtcJ2xlZnRcJywgXCdjZW50ZXJcJywgXCdyaWdodFwnXSk6XG4gICAuLi4gICAgIFwnezA6e2ZpbGx9e2FsaWdufTE2fVwnLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCBhbGlnbj1hbGlnbilcbiAgIC4uLlxuICAgXCdsZWZ0PDw8PDw8PDw8PDw8XCdcbiAgIFwnXl5eXl5jZW50ZXJeXl5eXlwnXG4gICBcJz4+Pj4+Pj4+Pj4+cmlnaHRcJ1xuICAgPj4+XG4gICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuICAgPj4+IFwnezowMlh9ezowMlh9ezowMlh9ezowMlh9XCcuZm9ybWF0KCpvY3RldHMpXG4gICBcJ0MwQTgwMDAxXCdcbiAgID4+PiBpbnQoXywgMTYpXG4gICAzMjMyMjM1NTIxXG4gICA+Pj5cbiAgID4+PiB3aWR0aCA9IDVcbiAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOlxuICAgLi4uICAgICBmb3IgYmFzZSBpbiBcJ2RYb2JcJzpcbiAgIC4uLiAgICAgICAgIHByaW50KFwnezA6e3dpZHRofXtiYXNlfX1cJy5mb3JtYXQobnVtLCBiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSwgZW5kPVwnIFwnKVxuICAgLi4uICAgICBwcmludCgpXG4gICAuLi5cbiAgICAgICA1ICAgICA1ICAgICA1ICAgMTAxXG4gICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuICAgICAgIDcgICAgIDcgICAgIDcgICAxMTFcbiAgICAgICA4ICAgICA4ICAgIDEwICAxMDAwXG4gICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuICAgICAgMTAgICAgIEEgICAgMTIgIDEwMTBcbiAgICAgIDExICAgICBCICAgIDEzICAxMDExXG4nLAorICdmdW5jdGlvbic6ICdcbkZ1bmN0aW9uIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSpcbiAgICAgICAgICAgICAgICAgICAgICBbLCAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgcGFyYW1ldGVycyBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKICAnZ2xvYmFsJzogJ1xuVGhlIGBgZ2xvYmFsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlIGBgZ2xvYmFsYGAgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSBlbnRpcmVcbmN1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gYmVcbmludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhIGdsb2JhbFxudmFyaWFibGUgd2l0aG91dCBgYGdsb2JhbGBgLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWVcbmNvZGUgYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0IGBgZ2xvYmFsYGAgc3RhdGVtZW50LlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhIGBgZm9yYGAgbG9vcCBjb250cm9sIHRhcmdldCwgYGBjbGFzc2BgIGRlZmluaXRpb24sXG5mdW5jdGlvbiBkZWZpbml0aW9uLCBvciBgYGltcG9ydGBgIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgbGF0dGVyIHR3byByZXN0cmljdGlvbnMsIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlXG50aGlzIGZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseVxuY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgYGBnbG9iYWxgYCBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLlxuSXQgYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIGBgZ2xvYmFsYGBcbnN0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiBgYGV4ZWMoKWBgIGZ1bmN0aW9uIGRvZXMgbm90XG5hZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgY29kZVxuY29udGFpbmVkIGluIHN1Y2ggYSBzdHJpbmcgaXMgdW5hZmZlY3RlZCBieSBgYGdsb2JhbGBgIHN0YXRlbWVudHMgaW5cbnRoZSBjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZVxuYGBldmFsKClgYCBhbmQgYGBjb21waWxlKClgYCBmdW5jdGlvbnMuXG4nLAogICdpZC1jbGFzc2VzJzogJ1xuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG5gYF8qYGBcbiAgIE5vdCBpbXBvcnRlZCBieSBgYGZyb20gbW9kdWxlIGltcG9ydCAqYGAuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyXG4gICBgYF9gYCBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mXG4gICB0aGUgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlIGBgYnVpbHRpbnNgYCBtb2R1bGUuICBXaGVuXG4gICBub3QgaW4gaW50ZXJhY3RpdmUgbW9kZSwgYGBfYGAgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90XG4gICBkZWZpbmVkLiBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuXG4gICBOb3RlOiBUaGUgbmFtZSBgYF9gYCBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgYGBnZXR0ZXh0YGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuYGBfXypfX2BgXG4gICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlIGludGVycHJldGVyXG4gICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgQ3VycmVudFxuICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogc2VjdGlvblxuICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiBgYF9fKl9fYGAgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXNcbiAgIG5vdCBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZVxuICAgd2l0aG91dCB3YXJuaW5nLlxuXG5gYF9fKmBgXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKICAnaWRlbnRpZmllcnMnOiAnXG5JZGVudGlmaWVycyBhbmQga2V5d29yZHNcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5JZGVudGlmaWVycyAoYWxzbyByZWZlcnJlZCB0byBhcyAqbmFtZXMqKSBhcmUgZGVzY3JpYmVkIGJ5IHRoZVxuZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG5cblRoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIHN0YW5kYXJkXG5hbm5leCBVQVgtMzEsIHdpdGggZWxhYm9yYXRpb24gYW5kIGNoYW5nZXMgYXMgZGVmaW5lZCBiZWxvdzsgc2VlIGFsc29cbioqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuXG5XaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCBjaGFyYWN0ZXJzIGZvclxuaWRlbnRpZmllcnMgYXJlIHRoZSBzYW1lIGFzIGluIFB5dGhvbiAyLng6IHRoZSB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZVxubGV0dGVycyBgYEFgYCB0aHJvdWdoIGBgWmBgLCB0aGUgdW5kZXJzY29yZSBgYF9gYCBhbmQsIGV4Y2VwdCBmb3IgdGhlXG5maXJzdCBjaGFyYWN0ZXIsIHRoZSBkaWdpdHMgYGAwYGAgdGhyb3VnaCBgYDlgYC5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbmBgdW5pY29kZWRhdGFgYCBtb2R1bGUuXG5cbklkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cblxuICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCBMbCwgTHQsIExtLCBMbywgTmwsIHRoZSB1bmRlcnNjb3JlLCBhbmQgY2hhcmFjdGVycyB3aXRoIHRoZSBPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbiAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzIGNoYXJhY3RlcnMgaW4gdGhlIGNhdGVnb3JpZXMgTW4sIE1jLCBOZCwgUGMgYW5kIG90aGVycyB3aXRoIHRoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbiAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfc3RhcnQgeGlkX2NvbnRpbnVlKiI+XG4gICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG5cblRoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG5cbiogKkx1KiAtIHVwcGVyY2FzZSBsZXR0ZXJzXG5cbiogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG5cbiogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG5cbiogKkxtKiAtIG1vZGlmaWVyIGxldHRlcnNcblxuKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuXG4qICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuXG4qICpNbiogLSBub25zcGFjaW5nIG1hcmtzXG5cbiogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG5cbiogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuXG4qICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zXG5cbiogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiBQcm9wTGlzdC50eHQgdG9cbiAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4qICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZVxuXG5BbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlIHBhcnNpbmc7XG5jb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG5cbkEgbm9uLW5vcm1hdGl2ZSBIVE1MIGZpbGUgbGlzdGluZyBhbGwgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXJzIGZvclxuVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly93d3cuZGNsLmhwaS51bmktXG5wb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cblxuXG5LZXl3b3Jkc1xuPT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgKmtleXdvcmRzKiBvZlxudGhlIGxhbmd1YWdlLCBhbmQgY2Fubm90IGJlIHVzZWQgYXMgb3JkaW5hcnkgaWRlbnRpZmllcnMuICBUaGV5IG11c3RcbmJlIHNwZWxsZWQgZXhhY3RseSBhcyB3cml0dGVuIGhlcmU6XG5cbiAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4gICBOb25lICAgICAgIGNvbnRpbnVlICAgZm9yICAgICAgICBsYW1iZGEgICAgIHRyeVxuICAgVHJ1ZSAgICAgICBkZWYgICAgICAgIGZyb20gICAgICAgbm9ubG9jYWwgICB3aGlsZVxuICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4gICBhcyAgICAgICAgIGVsaWYgICAgICAgaWYgICAgICAgICBvciAgICAgICAgIHlpZWxkXG4gICBhc3NlcnQgICAgIGVsc2UgICAgICAgaW1wb3J0ICAgICBwYXNzXG4gICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuXG5cblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuYGBfKmBgXG4gICBOb3QgaW1wb3J0ZWQgYnkgYGBmcm9tIG1vZHVsZSBpbXBvcnQgKmBgLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllclxuICAgYGBfYGAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZlxuICAgdGhlIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSBgYGJ1aWx0aW5zYGAgbW9kdWxlLiAgV2hlblxuICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsIGBgX2BgIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgYGBfYGAgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2V0dGV4dGBgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbmBgX18qX19gYFxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgYGBfXypfX2BgIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzXG4gICBub3QgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2VcbiAgIHdpdGhvdXQgd2FybmluZy5cblxuYGBfXypgYFxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCiAgJ2lmJzogJ1xuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCiAgJ2ltYWdpbmFyeSc6ICdcbkltYWdpbmFyeSBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqXG5cbkltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgaW50cGFydCkgKCJqIiB8ICJKIilcblxuQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuXG5Db21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzXG5hbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSBjb21wbGV4XG5udW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsXG5lLmcuLCBgYCgzKzRqKWBgLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG5cbiAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGpcbicsCi0gJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkltcG9ydCBzdGF0ZW1lbnRzIGFyZSBleGVjdXRlZCBpbiB0d28gc3RlcHM6ICgxKSBmaW5kIGEgbW9kdWxlLCBhbmRcbmluaXRpYWxpemUgaXQgaWYgbmVjZXNzYXJ5OyAoMikgZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWxcbm5hbWVzcGFjZSAob2YgdGhlIHNjb3BlIHdoZXJlIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMpLiBUaGVcbnN0YXRlbWVudCBjb21lcyBpbiB0d28gZm9ybXMgZGlmZmVyaW5nIG9uIHdoZXRoZXIgaXQgdXNlcyB0aGUgYGBmcm9tYGBcbmtleXdvcmQuIFRoZSBmaXJzdCBmb3JtICh3aXRob3V0IGBgZnJvbWBgKSByZXBlYXRzIHRoZXNlIHN0ZXBzIGZvclxuZWFjaCBpZGVudGlmaWVyIGluIHRoZSBsaXN0LiBUaGUgZm9ybSB3aXRoIGBgZnJvbWBgIHBlcmZvcm1zIHN0ZXAgKDEpXG5vbmNlLCBhbmQgdGhlbiBwZXJmb3JtcyBzdGVwICgyKSByZXBlYXRlZGx5LiBGb3IgYSByZWZlcmVuY2VcbmltcGxlbWVudGF0aW9uIG9mIHN0ZXAgKDEpLCBzZWUgdGhlIGBgaW1wb3J0bGliYGAgbW9kdWxlLlxuXG5UbyB1bmRlcnN0YW5kIGhvdyBzdGVwICgxKSBvY2N1cnMsIG9uZSBtdXN0IGZpcnN0IHVuZGVyc3RhbmQgaG93XG5QeXRob24gaGFuZGxlcyBoaWVyYXJjaGljYWwgbmFtaW5nIG9mIG1vZHVsZXMuIFRvIGhlbHAgb3JnYW5pemVcbm1vZHVsZXMgYW5kIHByb3ZpZGUgYSBoaWVyYXJjaHkgaW4gbmFtaW5nLCBQeXRob24gaGFzIGEgY29uY2VwdCBvZlxucGFja2FnZXMuIEEgcGFja2FnZSBjYW4gY29udGFpbiBvdGhlciBwYWNrYWdlcyBhbmQgbW9kdWxlcyB3aGlsZVxubW9kdWxlcyBjYW5ub3QgY29udGFpbiBvdGhlciBtb2R1bGVzIG9yIHBhY2thZ2VzLiBGcm9tIGEgZmlsZSBzeXN0ZW1cbnBlcnNwZWN0aXZlLCBwYWNrYWdlcyBhcmUgZGlyZWN0b3JpZXMgYW5kIG1vZHVsZXMgYXJlIGZpbGVzLiBUaGVcbm9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIHBhY2thZ2VzIGlzIHN0aWxsIGF2YWlsYWJsZSB0byByZWFkLFxuYWx0aG91Z2ggbWlub3IgZGV0YWlscyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHdyaXRpbmcgb2YgdGhhdFxuZG9jdW1lbnQuXG5cbk9uY2UgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpcyBrbm93biAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZVxudGVybSAibW9kdWxlIiB3aWxsIHJlZmVyIHRvIGJvdGggcGFja2FnZXMgYW5kIG1vZHVsZXMpLCBzZWFyY2hpbmcgZm9yXG50aGUgbW9kdWxlIG9yIHBhY2thZ2UgY2FuIGJlZ2luLiBUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBpc1xuYGBzeXMubW9kdWxlc2BgLCB0aGUgY2FjaGUgb2YgYWxsIG1vZHVsZXMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWRcbnByZXZpb3VzbHkuIElmIHRoZSBtb2R1bGUgaXMgZm91bmQgdGhlcmUgdGhlbiBpdCBpcyB1c2VkIGluIHN0ZXAgKDIpXG5vZiBpbXBvcnQgdW5sZXNzIGBgTm9uZWBgIGlzIGZvdW5kIGluIGBgc3lzLm1vZHVsZXNgYCwgaW4gd2hpY2ggY2FzZVxuYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC5cblxuSWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gdGhlIGNhY2hlLCB0aGVuIGBgc3lzLm1ldGFfcGF0aGBgIGlzXG5zZWFyY2hlZCAodGhlIHNwZWNpZmljYXRpb24gZm9yIGBgc3lzLm1ldGFfcGF0aGBgIGNhbiBiZSBmb3VuZCBpblxuKipQRVAgMzAyKiopLiBUaGUgb2JqZWN0IGlzIGEgbGlzdCBvZiAqZmluZGVyKiBvYmplY3RzIHdoaWNoIGFyZVxucXVlcmllZCBpbiBvcmRlciBhcyB0byB3aGV0aGVyIHRoZXkga25vdyBob3cgdG8gbG9hZCB0aGUgbW9kdWxlIGJ5XG5jYWxsaW5nIHRoZWlyIGBgZmluZF9tb2R1bGUoKWBgIG1ldGhvZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIElmXG50aGUgbW9kdWxlIGhhcHBlbnMgdG8gYmUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UgKGFzIGRlbm90ZWQgYnkgdGhlXG5leGlzdGVuY2Ugb2YgYSBkb3QgaW4gdGhlIG5hbWUpLCB0aGVuIGEgc2Vjb25kIGFyZ3VtZW50IHRvXG5gYGZpbmRfbW9kdWxlKClgYCBpcyBnaXZlbiBhcyB0aGUgdmFsdWUgb2YgdGhlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGVcbmZyb20gdGhlIHBhcmVudCBwYWNrYWdlIChldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0IGRvdCBpbiB0aGUgbmFtZSBvZlxudGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCkuIElmIGEgZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUgaXQgcmV0dXJuc1xuYSAqbG9hZGVyKiAoZGlzY3Vzc2VkIGxhdGVyKSBvciByZXR1cm5zIGBgTm9uZWBgLlxuXG5JZiBub25lIG9mIHRoZSBmaW5kZXJzIG9uIGBgc3lzLm1ldGFfcGF0aGBgIGFyZSBhYmxlIHRvIGZpbmQgdGhlXG5tb2R1bGUgdGhlbiBzb21lIGltcGxpY2l0bHkgZGVmaW5lZCBmaW5kZXJzIGFyZSBxdWVyaWVkLlxuSW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbiB2YXJ5IGluIHdoYXQgaW1wbGljaXQgbWV0YSBwYXRoIGZpbmRlcnMgYXJlXG5kZWZpbmVkLiBUaGUgb25lIHRoZXkgYWxsIGRvIGRlZmluZSwgdGhvdWdoLCBpcyBvbmUgdGhhdCBoYW5kbGVzXG5gYHN5cy5wYXRoX2hvb2tzYGAsIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCwgYW5kIGBgc3lzLnBhdGhgYC5cblxuVGhlIGltcGxpY2l0IGZpbmRlciBzZWFyY2hlcyBmb3IgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaW4gdGhlICJwYXRocyJcbnNwZWNpZmllZCBpbiBvbmUgb2YgdHdvIHBsYWNlcyAoInBhdGhzIiBkbyBub3QgaGF2ZSB0byBiZSBmaWxlIHN5c3RlbVxucGF0aHMpLiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIHN1cHBvc2VkIHRvIGJlIGNvbnRhaW5lZFxud2l0aGluIGEgcGFja2FnZSB0aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQgcGFzc2VkIHRvIGBgZmluZF9tb2R1bGUoKWBgLFxuYGBfX3BhdGhfX2BgIG9uIHRoZSBwYXJlbnQgcGFja2FnZSwgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mIHBhdGhzLiBJZlxudGhlIG1vZHVsZSBpcyBub3QgY29udGFpbmVkIGluIGEgcGFja2FnZSB0aGVuIGBgc3lzLnBhdGhgYCBpcyB1c2VkIGFzXG50aGUgc291cmNlIG9mIHBhdGhzLlxuXG5PbmNlIHRoZSBzb3VyY2Ugb2YgcGF0aHMgaXMgY2hvc2VuIGl0IGlzIGl0ZXJhdGVkIG92ZXIgdG8gZmluZCBhXG5maW5kZXIgdGhhdCBjYW4gaGFuZGxlIHRoYXQgcGF0aC4gVGhlIGRpY3QgYXRcbmBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCBjYWNoZXMgZmluZGVycyBmb3IgcGF0aHMgYW5kIGlzIGNoZWNrZWRcbmZvciBhIGZpbmRlci4gSWYgdGhlIHBhdGggZG9lcyBub3QgaGF2ZSBhIGZpbmRlciBjYWNoZWQgdGhlblxuYGBzeXMucGF0aF9ob29rc2BgIGlzIHNlYXJjaGVkIGJ5IGNhbGxpbmcgZWFjaCBvYmplY3QgaW4gdGhlIGxpc3Qgd2l0aFxuYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIHBhdGgsIHJldHVybmluZyBhIGZpbmRlciBvciByYWlzZXNcbmBgSW1wb3J0RXJyb3JgYC4gSWYgYSBmaW5kZXIgaXMgcmV0dXJuZWQgdGhlbiBpdCBpcyBjYWNoZWQgaW5cbmBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCBhbmQgdGhlbiB1c2VkIGZvciB0aGF0IHBhdGggZW50cnkuIElmIG5vXG5maW5kZXIgY2FuIGJlIGZvdW5kIGJ1dCB0aGUgcGF0aCBleGlzdHMgdGhlbiBhIHZhbHVlIG9mIGBgTm9uZWBgIGlzXG5zdG9yZWQgaW4gYGBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWBgIHRvIHNpZ25pZnkgdGhhdCBhbiBpbXBsaWNpdCxcbmZpbGUtYmFzZWQgZmluZGVyIHRoYXQgaGFuZGxlcyBtb2R1bGVzIHN0b3JlZCBhcyBpbmRpdmlkdWFsIGZpbGVzXG5zaG91bGQgYmUgdXNlZCBmb3IgdGhhdCBwYXRoLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBleGlzdCB0aGVuIGEgZmluZGVyXG53aGljaCBhbHdheXMgcmV0dXJucyBgYE5vbmVgYCBpcyBwbGFjZWQgaW4gdGhlIGNhY2hlIGZvciB0aGUgcGF0aC5cblxuSWYgbm8gZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUgdGhlbiBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuT3RoZXJ3aXNlIHNvbWUgZmluZGVyIHJldHVybmVkIGEgbG9hZGVyIHdob3NlIGBgbG9hZF9tb2R1bGUoKWBgIG1ldGhvZFxuaXMgY2FsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIChzZWUgKipQRVAgMzAyKiogZm9yIHRoZVxub3JpZ2luYWwgZGVmaW5pdGlvbiBvZiBsb2FkZXJzKS4gQSBsb2FkZXIgaGFzIHNldmVyYWwgcmVzcG9uc2liaWxpdGllc1xudG8gcGVyZm9ybSBvbiBhIG1vZHVsZSBpdCBsb2Fkcy4gRmlyc3QsIGlmIHRoZSBtb2R1bGUgYWxyZWFkeSBleGlzdHNcbmluIGBgc3lzLm1vZHVsZXNgYCAoYSBwb3NzaWJpbGl0eSBpZiB0aGUgbG9hZGVyIGlzIGNhbGxlZCBvdXRzaWRlIG9mXG50aGUgaW1wb3J0IG1hY2hpbmVyeSkgdGhlbiBpdCBpcyB0byB1c2UgdGhhdCBtb2R1bGUgZm9yIGluaXRpYWxpemF0aW9uXG5hbmQgbm90IGEgbmV3IG1vZHVsZS4gQnV0IGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3QgaW5cbmBgc3lzLm1vZHVsZXNgYCB0aGVuIGl0IGlzIHRvIGJlIGFkZGVkIHRvIHRoYXQgZGljdCBiZWZvcmVcbmluaXRpYWxpemF0aW9uIGJlZ2lucy4gSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIG9mIHRoZSBtb2R1bGVcbmFuZCBpdCB3YXMgYWRkZWQgdG8gYGBzeXMubW9kdWxlc2BgIGl0IGlzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgZGljdC5cbklmIGFuIGVycm9yIG9jY3VycyBidXQgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeSBpbiBgYHN5cy5tb2R1bGVzYGAgaXQgaXNcbmxlZnQgaW4gdGhlIGRpY3QuXG5cblRoZSBsb2FkZXIgbXVzdCBzZXQgc2V2ZXJhbCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2R1bGUuIGBgX19uYW1lX19gYCBpc1xudG8gYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIGBgX19maWxlX19gYCBpcyB0byBiZSB0aGUgInBhdGgiXG50byB0aGUgZmlsZSB1bmxlc3MgdGhlIG1vZHVsZSBpcyBidWlsdC1pbiAoYW5kIHRodXMgbGlzdGVkIGluXG5gYHN5cy5idWlsdGluX21vZHVsZV9uYW1lc2BgKSBpbiB3aGljaCBjYXNlIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHNldC5cbklmIHdoYXQgaXMgYmVpbmcgaW1wb3J0ZWQgaXMgYSBwYWNrYWdlIHRoZW4gYGBfX3BhdGhfX2BgIGlzIHRvIGJlIHNldFxudG8gYSBsaXN0IG9mIHBhdGhzIHRvIGJlIHNlYXJjaGVkIHdoZW4gbG9va2luZyBmb3IgbW9kdWxlcyBhbmRcbnBhY2thZ2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQuIGBgX19wYWNrYWdlX19gYFxuaXMgb3B0aW9uYWwgYnV0IHNob3VsZCBiZSBzZXQgdG8gdGhlIG5hbWUgb2YgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZVxubW9kdWxlIG9yIHBhY2thZ2UgKHRoZSBlbXB0eSBzdHJpbmcgaXMgdXNlZCBmb3IgbW9kdWxlIG5vdCBjb250YWluZWRcbmluIGEgcGFja2FnZSkuIGBgX19sb2FkZXJfX2BgIGlzIGFsc28gb3B0aW9uYWwgYnV0IHNob3VsZCBiZSBzZXQgdG9cbnRoZSBsb2FkZXIgb2JqZWN0IHRoYXQgaXMgbG9hZGluZyB0aGUgbW9kdWxlLlxuXG5JZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGxvYWRpbmcgdGhlbiB0aGUgbG9hZGVyIHJhaXNlc1xuYGBJbXBvcnRFcnJvcmBgIGlmIHNvbWUgb3RoZXIgZXhjZXB0aW9uIGlzIG5vdCBhbHJlYWR5IGJlaW5nXG5wcm9wYWdhdGVkLiBPdGhlcndpc2UgdGhlIGxvYWRlciByZXR1cm5zIHRoZSBtb2R1bGUgdGhhdCB3YXMgbG9hZGVkXG5hbmQgaW5pdGlhbGl6ZWQuXG5cbldoZW4gc3RlcCAoMSkgZmluaXNoZXMgd2l0aG91dCByYWlzaW5nIGFuIGV4Y2VwdGlvbiwgc3RlcCAoMikgY2FuXG5iZWdpbi5cblxuVGhlIGZpcnN0IGZvcm0gb2YgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgYmluZHMgdGhlIG1vZHVsZSBuYW1lIGluIHRoZVxubG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LCBhbmQgdGhlbiBnb2VzIG9uIHRvIGltcG9ydCB0aGVcbm5leHQgaWRlbnRpZmllciwgaWYgYW55LiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCxcbnRoZSBuYW1lIGZvbGxvd2luZyBgYGFzYGAgaXMgdXNlZCBhcyB0aGUgbG9jYWwgbmFtZSBmb3IgdGhlIG1vZHVsZS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gZG9lcyBub3QgYmluZCB0aGUgbW9kdWxlIG5hbWU6IGl0IGdvZXMgdGhyb3VnaCB0aGVcbmxpc3Qgb2YgaWRlbnRpZmllcnMsIGxvb2tzIGVhY2ggb25lIG9mIHRoZW0gdXAgaW4gdGhlIG1vZHVsZSBmb3VuZCBpblxuc3RlcCAoMSksIGFuZCBiaW5kcyB0aGUgbmFtZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBvYmplY3QgdGh1c1xuZm91bmQuICBBcyB3aXRoIHRoZSBmaXJzdCBmb3JtIG9mIGBgaW1wb3J0YGAsIGFuIGFsdGVybmF0ZSBsb2NhbCBuYW1lXG5jYW4gYmUgc3VwcGxpZWQgYnkgc3BlY2lmeWluZyAiYGBhc2BgIGxvY2FsbmFtZSIuICBJZiBhIG5hbWUgaXMgbm90XG5mb3VuZCwgYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC4gIElmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzXG5yZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlXG5hcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBvZiB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiBgYF9fYWxsX19gYFxuc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZFxuYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzXG5saWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuXG5cblRoZSBgYGZyb21gYCBmb3JtIHdpdGggYGAqYGAgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuICBUaGVcbndpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyBvbmx5IGFsbG93ZWQgYXQgdGhlXG5tb2R1bGUgbGV2ZWwuIEF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zXG53aWxsIHJhaXNlIGEgYGBTeW50YXhFcnJvcmBgLlxuXG5XaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5IHRoZVxuYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgY29udGFpbmVkXG53aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgd2l0aGluXG50aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuIEJ5XG51c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciBgYGZyb21gYFxueW91IGNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbmBgZnJvbSAuIGltcG9ydCBtb2RgYCBmcm9tIGEgbW9kdWxlIGluIHRoZSBgYHBrZ2BgIHBhY2thZ2UgdGhlbiB5b3VcbndpbGwgZW5kIHVwIGltcG9ydGluZyBgYHBrZy5tb2RgYC4gSWYgeW91IGV4ZWN1dGUgYGBmcm9tIC4uc3VicGtnMlxuaW1wb3J0IG1vZGBgIGZyb20gd2l0aGluIGBgcGtnLnN1YnBrZzFgYCB5b3Ugd2lsbCBpbXBvcnRcbmBgcGtnLnN1YnBrZzIubW9kYGAuIFRoZSBzcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzXG5jb250YWluZWQgd2l0aGluICoqUEVQIDMyOCoqLlxuXG5gYGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKClgYCBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgd2hpY2ggbW9kdWxlcyBuZWVkIHRvIGJlIGxvYWRlZCBkeW5hbWljYWxseS5cblxuXG5GdXR1cmUgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT1cblxuQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyXG5tb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG5hdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uLiAgVGhlIGZ1dHVyZVxuc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob25cbnRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0IGFsbG93cyB1c2Ugb2ZcbnRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGUgcmVsZWFzZSBpbiB3aGljaCB0aGVcbmZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlIGBgYWJzb2x1dGVfaW1wb3J0YGAsXG5gYGRpdmlzaW9uYGAsIGBgZ2VuZXJhdG9yc2BgLCBgYHVuaWNvZGVfbGl0ZXJhbHNgYCxcbmBgcHJpbnRfZnVuY3Rpb25gYCwgYGBuZXN0ZWRfc2NvcGVzYGAgYW5kIGBgd2l0aF9zdGF0ZW1lbnRgYC4gIFRoZXlcbmFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBvbmx5IGtlcHQgZm9yXG5iYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSBgYF9fZnV0dXJlX19gYCwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXRcbndpbGwgYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuZXhlY3V0ZWQuXG5cblRoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbmVuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG5cbk5vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcblxuICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG5cblRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXRcJ3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCB3aXRoXG5ubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuXG5Db2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBleGVjKClgYCBhbmRcbmBgY29tcGlsZSgpYGAgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSBgYE1gYCBjb250YWluaW5nIGEgZnV0dXJlXG5zdGF0ZW1lbnQgd2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkXG53aXRoIHRoZSBmdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbFxuYXJndW1lbnRzIHRvIGBgY29tcGlsZSgpYGAgLS0tIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uXG5mb3IgZGV0YWlscy5cblxuQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCB3aWxsXG50YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAqLWkqIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0IG5hbWVcbnRvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBpblxuZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuZXhlY3V0ZWQuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbiAgICAgIFRoZSBvcmlnaW5hbCBwcm9wb3NhbCBmb3IgdGhlIF9fZnV0dXJlX18gbWVjaGFuaXNtLlxuJywKKyAnaW1wb3J0JzogJ1xuVGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vIGBgZnJvbWBgIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG5zdGVwczpcblxuMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuXG4yLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZSB3aGVyZVxuICAgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IG9jY3Vycy5cblxuV2hlbiB0aGUgc3RhdGVtZW50IGNvbnRhaW5zIG11bHRpcGxlIGNsYXVzZXMgKHNlcGFyYXRlZCBieSBjb21tYXMpIHRoZVxudHdvIHN0ZXBzIGFyZSBjYXJyaWVkIG91dCBzZXBhcmF0ZWx5IGZvciBlYWNoIGNsYXVzZSwganVzdCBhcyB0aG91Z2hcbnRoZSBjbGF1c2VzIGhhZCBiZWVuIHNlcGFyYXRlZCBvdXQgaW50byBpbmRpdmlkaXVhbCBpbXBvcnQgc3RhdGVtZW50cy5cblxuVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBpc1xuZGVzY3JpYmVkIGluIGdyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSAqaW1wb3J0IHN5c3RlbSosXG53aGljaCBhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0XG5jYW4gYmUgaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvXG5jdXN0b21pemUgdGhlIGltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5XG5pbmRpY2F0ZSBlaXRoZXIgdGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW5cbmVycm9yIG9jY3VycmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb25cbm9mIHRoZSBtb2R1bGVcJ3MgY29kZS5cblxuSWYgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaXMgcmV0cmlldmVkIHN1Y2Nlc3NmdWxseSwgaXQgd2lsbCBiZSBtYWRlXG5hdmFpbGFibGUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBpbiBvbmUgb2YgdGhyZWUgd2F5czpcblxuKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgYGBhc2BgLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICBgYGFzYGAgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cblxuKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYVxuICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlXCdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZVxuICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG5cbiogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlXG4gIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpblxuICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlXG4gIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4gIHJhdGhlciB0aGFuIGRpcmVjdGx5XG5cblRoZSBgYGZyb21gYCBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcblxuMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgYGBmcm9tYGAgY2xhdXNlIGxvYWRpbmcgYW5kXG4gICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuXG4yLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSBgYGltcG9ydGBgIGNsYXVzZXM6XG5cbiAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcblxuICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgdGhlblxuICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcblxuICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBib3VuZCBpbiB0aGUgbG9jYWxcbiAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlIGBgYXNgYCBjbGF1c2UgaWYgaXQgaXMgcHJlc2VudCxcbiAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcblxuRXhhbXBsZXM6XG5cbiAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgZmJiXG4gICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBiYXpcbiAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyBhdHRyXG5cbklmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoYGBcJypcJ2BgKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiAgYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLlxuQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhXG5gYFN5bnRheEVycm9yYGAuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXRcbm11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5XG50aGF0IG1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljXG5hbmQgYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2ZcbnB1YmxpYyBuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2hcbmRvIG5vdCBiZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyIChgYFwnX1wnYGApLiAgYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCiAgJ2luJzogJ1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlIGBgYSA8IGIgPCBjYGAgaGF2ZSB0aGVcbmludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuXG4gICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4gICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4gICAgICAgICAgICAgICAgICAgICB8ICJpcyIgWyJub3QiXSB8IFsibm90Il0gImluIlxuXG5Db21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogYGBUcnVlYGAgb3IgYGBGYWxzZWBgLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgYGB4IDwgeSA8PSB6YGAgaXNcbmVxdWl2YWxlbnQgdG8gYGB4IDwgeSBhbmQgeSA8PSB6YGAsIGV4Y2VwdCB0aGF0IGBgeWBgIGlzIGV2YWx1YXRlZFxub25seSBvbmNlIChidXQgaW4gYm90aCBjYXNlcyBgYHpgYCBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuIGBgeCA8XG55YGAgaXMgZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuIGBgYSBvcDEgYiBvcDIgYyAuLi4geVxub3BOIHpgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHpgYCxcbmV4Y2VwdCB0aGF0IGVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYXQgbW9zdCBvbmNlLlxuXG5Ob3RlIHRoYXQgYGBhIG9wMSBiIG9wMiBjYGAgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvblxuYmV0d2VlbiAqYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgYGB4IDwgeSA+IHpgYCBpcyBwZXJmZWN0bHkgbGVnYWxcbih0aG91Z2ggcGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIG9wZXJhdG9ycyBgYDxgYCwgYGA+YGAsIGBgPT1gYCwgYGA+PWBgLCBgYDw9YGAsIGFuZCBgYCE9YGAgY29tcGFyZVxudGhlIHZhbHVlcyBvZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS5cbklmIGJvdGggYXJlIG51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLFxudGhlIGBgPT1gYCBhbmQgYGAhPWBgIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdG8gYmUgdW5lcXVhbCwgd2hpbGUgdGhlIGBgPGBgLCBgYD5gYCwgYGA+PWBgIGFuZCBgYDw9YGBcbm9wZXJhdG9ycyByYWlzZSBhIGBgVHlwZUVycm9yYGAgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRoYXQgZG8gbm90IGltcGxlbWVudCB0aGVzZSBvcGVyYXRvcnMgZm9yIHRoZSBnaXZlbiBwYWlyIG9mXG50eXBlcy4gIFlvdSBjYW4gY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Ygbm9uLWJ1aWx0LWluXG50eXBlcyBieSBkZWZpbmluZyByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBsaWtlIGBgX19ndF9fKClgYCwgZGVzY3JpYmVkXG5pbiBzZWN0aW9uICpCYXNpYyBjdXN0b21pemF0aW9uKi5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBUaGUgdmFsdWVzIGBgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBEZWNpbWFsKFwnTmFOXCcpYGAgYXJlIHNwZWNpYWwuIFRoZVxuICBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMsIGBgeCBpcyB4YGAgYnV0IGFyZSBub3QgZXF1YWwgdG9cbiAgdGhlbXNlbHZlcywgYGB4ICE9IHhgYC4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSB0byBhXG4gIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiBgYEZhbHNlYGAuICBGb3IgZXhhbXBsZSwgYm90aCBgYDMgPFxuICBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYGZsb2F0KFwnTmFOXCcpIDwgM2BgIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC5cblxuKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICB2YWx1ZXMgb2YgdGhlaXIgZWxlbWVudHMuXG5cbiogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgZXF1aXZhbGVudHNcbiAgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgb3JkKClgYCkgb2YgdGhlaXIgY2hhcmFjdGVycy5cbiAgWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhblwndCBiZSBjb21wYXJlZCFcblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uIG9mXG4gIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsIGBgWzEsMix4XSA8PSBbMSwyLHldYGAgaGFzIHRoZVxuICBzYW1lIHZhbHVlIGFzIGBgeCA8PSB5YGAuICBJZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90XG4gIGV4aXN0LCB0aGUgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgYGBbMSwyXSA8XG4gIFsxLDIsM11gYCkuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlXG4gIHNhbWUgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgYGAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLFxuICBcJz5cJylgYCByYWlzZSBgYFR5cGVFcnJvcmBgLlxuXG4qIFNldHMgYW5kIGZyb3plbnNldHMgZGVmaW5lIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZFxuICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAodGhlXG4gIHR3byBzZXRzIGBgezEsMn1gYCBhbmQgezIsM30gYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4gIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlIG5vdFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgb3JkZXJpbmcuXG4gIEZvciBleGFtcGxlLCBgYG1pbigpYGAsIGBgbWF4KClgYCwgYW5kIGBgc29ydGVkKClgYCBwcm9kdWNlXG4gIHVuZGVmaW5lZCByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cblxuKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5IGFyZVxuICB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWQgc21hbGxlclxuICBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dCBjb25zaXN0ZW50bHlcbiAgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgZWl0aGVyXG5vZiB0aGUgdHlwZXMgcHJvdmlkZSBleHBsaWNpdCBzdXBwb3J0IGZvciB0aGUgY29tcGFyaXNvbi4gIE1vc3Rcbm51bWVyaWMgdHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIsIGJ1dCBjb21wYXJpc29ucyBvZlxuYGBmbG9hdGBgIGFuZCBgYERlY2ltYWxgYCBhcmUgbm90IHN1cHBvcnRlZCB0byBhdm9pZCB0aGUgaW5ldml0YWJsZVxuY29uZnVzaW9uIGFyaXNpbmcgZnJvbSByZXByZXNlbnRhdGlvbiBpc3N1ZXMgc3VjaCBhcyBgYGZsb2F0KFwnMS4xXCcpYGBcbmJlaW5nIGluZXhhY3RseSByZXByZXNlbnRlZCBhbmQgdGhlcmVmb3JlIG5vdCBleGFjdGx5IGVxdWFsIHRvXG5gYERlY2ltYWwoXCcxLjFcJylgYCB3aGljaCBpcy4gIFdoZW4gY3Jvc3MtdHlwZSBjb21wYXJpc29uIGlzIG5vdFxuc3VwcG9ydGVkLCB0aGUgY29tcGFyaXNvbiBtZXRob2QgcmV0dXJucyBgYE5vdEltcGxlbWVudGVkYGAuICBUaGlzIGNhblxuY3JlYXRlIHRoZSBpbGx1c2lvbiBvZiBub24tdHJhbnNpdGl2aXR5IGJldHdlZW4gc3VwcG9ydGVkIGNyb3NzLXR5cGVcbmNvbXBhcmlzb25zIGFuZCB1bnN1cHBvcnRlZCBjb21wYXJpc29ucy4gIEZvciBleGFtcGxlLCBgYERlY2ltYWwoMikgPT1cbjJgYCBhbmQgYGAyID09IGZsb2F0KDIpYGAgYnV0IGBgRGVjaW1hbCgyKSAhPSBmbG9hdCgyKWBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaW5gYCBhbmQgYGBub3QgaW5gYCB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgYGB4IGluIHNgYFxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gIGBgeFxubm90IGluIHNgYCByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiBgYHggaW4gc2BgLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggYGBpbmBgXG50ZXN0cyB3aGV0aGVyIGEgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzXG5zdWNoIGFzIGxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiBgYHggaW4geWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSlgYC5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCBgYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqXG5pcyBhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgYGB5LmZpbmQoeCkgIT0gLTFgYC5cbkVtcHR5IHN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlclxuc3RyaW5nLCBzbyBgYCIiIGluICJhYmMiYGAgd2lsbCByZXR1cm4gYGBUcnVlYGAuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlIGBgX19jb250YWluc19fKClgYCBtZXRob2QsXG5gYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgYGB5Ll9fY29udGFpbnNfXyh4KWBgIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCBidXQgZG9cbmRlZmluZSBgYF9faXRlcl9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgYGB6YGAgd2l0aCBgYHhcbj09IHpgYCBpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciBgYHlgYC4gIElmIGFuIGV4Y2VwdGlvbiBpc1xucmFpc2VkIGR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiBgYGluYGAgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbmBgX19nZXRpdGVtX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgYGB4ID09IHlbaV1gYCwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSBgYEluZGV4RXJyb3JgYCBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiBgYGluYGAgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yIGBgbm90IGluYGAgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbmBgaW5gYC5cblxuVGhlIG9wZXJhdG9ycyBgYGlzYGAgYW5kIGBgaXMgbm90YGAgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiBgYHggaXNcbnlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICBgYHggaXNcbm5vdCB5YGAgeWllbGRzIHRoZSBpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCiAgJ2ludGVnZXJzJzogJ1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4MTAwMDAwMDAwXG4gICAgICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgICAgICAgICAgMHhkZWFkYmVlZlxuJywKICAnbGFtYmRhJzogJ1xuTGFtYmRhc1xuKioqKioqKlxuXG4gICBsYW1iZGFfZm9ybSAgICAgICAgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25cbiAgIGxhbWJkYV9mb3JtX25vY29uZCA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvbl9ub2NvbmRcblxuTGFtYmRhIGZvcm1zIChsYW1iZGEgZXhwcmVzc2lvbnMpIGhhdmUgdGhlIHNhbWUgc3ludGFjdGljIHBvc2l0aW9uIGFzXG5leHByZXNzaW9ucy4gIFRoZXkgYXJlIGEgc2hvcnRoYW5kIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zOyB0aGVcbmV4cHJlc3Npb24gYGBsYW1iZGEgYXJndW1lbnRzOiBleHByZXNzaW9uYGAgeWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LlxuVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uIG9iamVjdCBkZWZpbmVkIHdpdGhcblxuICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4gICAgICAgcmV0dXJuIGV4cHJlc3Npb25cblxuU2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgbGlzdHMuXG5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZm9ybXMgY2Fubm90IGNvbnRhaW5cbnN0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLApAQCAtNDksMzAgKzUwLDMwIEBACiAgJ25vbmxvY2FsJzogJ1xuVGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgYGBub25sb2NhbGBgIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlLiAgVGhpcyBpc1xuaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXMgdG8gc2VhcmNoIHRoZVxubG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3MgZW5jYXBzdWxhdGVkIGNvZGUgdG9cbnJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGUgYmVzaWRlcyB0aGUgZ2xvYmFsXG4obW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBub25sb2NhbGBgIHN0YXRlbWVudCwgdW5saWtlIHRvIHRob3NlIGxpc3RlZCBpbiBhXG5gYGdsb2JhbGBgIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbmVuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlIGNyZWF0ZWRcbmNhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQuXG4nLAogICdudW1iZXJzJzogIlxuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGBcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICdgYC1gYCcgYW5kXG50aGUgbGl0ZXJhbCBgYDFgYC5cbiIsCiAgJ251bWVyaWMtdHlwZXMnOiAiXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmQnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsXG4gICBgYCoqPWBgLCBgYDw8PWBgLCBgYD4+PWBgLCBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHNcbiAgIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZFxuICAgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSxcbiAgICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV4ZWN1dGUgdGhlIHN0YXRlbWVudCBgYHggKz0geWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19pYWRkX18oeSlgYCBpc1xuICAgY2FsbGVkLiAgSWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBkZWZpbmUgYVxuICAgYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19hZGRfXyh5KWBgIGFuZCBgYHkuX19yYWRkX18oeClgYCBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGB4ICsgeWBgLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgLWBgLCBgYCtgYCxcbiAgIGBgYWJzKClgYCBhbmQgYGB+YGApLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgY29tcGxleCgpYGAsXG4gICBgYGludCgpYGAsIGBgZmxvYXQoKWBgIGFuZCBgYHJvdW5kKClgYC4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZlxuICAgdGhlIGFwcHJvcHJpYXRlIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBgYG9wZXJhdG9yLmluZGV4KClgYC4gIEFsc28gY2FsbGVkIHdoZW5ldmVyXG4gICBQeXRob24gbmVlZHMgYW4gaW50ZWdlciBvYmplY3QgKHN1Y2ggYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlXG4gICBidWlsdC1pbiBgYGJpbigpYGAsIGBgaGV4KClgYCBhbmQgYGBvY3QoKWBgIGZ1bmN0aW9ucykuIE11c3QgcmV0dXJuXG4gICBhbiBpbnRlZ2VyLlxuIiwKLSAnb2JqZWN0cyc6ICdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnYGBpc2BgXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlIGBgaWQoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eSAoY3VycmVudGx5IGltcGxlbWVudGVkIGFzIGl0cyBhZGRyZXNzKS4gQW5cbm9iamVjdFwncyAqdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXSBBbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzXG50aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHMgKGUuZy4sICJkb2VzIGl0IGhhdmUgYVxubGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3Igb2JqZWN0cyBvZiB0aGF0XG50eXBlLiAgVGhlIGBgdHlwZSgpYGAgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcJ3MgdHlwZSAod2hpY2ggaXMgYW5cbm9iamVjdCBpdHNlbGYpLiAgVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzXG53aG9zZSB2YWx1ZSBjYW4gY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZVxuaXMgdW5jaGFuZ2VhYmxlIG9uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlXG52YWx1ZSBvZiBhbiBpbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGFcbm11dGFibGUgb2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyXCdzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXJcbnRoZSBjb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gb2Zcbm9iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSBzdWJ0bGUuKVxuQW4gb2JqZWN0XCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxubnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyBhbmRcbmxpc3RzIGFyZSBtdXRhYmxlLlxuXG5PYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSBpdCBpc1xuYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5pbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbnJlYWNoYWJsZS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgcmVmZXJlbmNlLVxuY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5IGxpbmtlZFxuZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbmNpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKGV4OlxuYWx3YXlzIGNsb3NlIGZpbGVzKS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCdgYHRyeWBgLi4uYGBleGNlcHRgYFwnXG5zdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzIG9wZW5cbmZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSBmcmVlZFxud2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5ub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgd2F5IHRvXG5yZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhIGBgY2xvc2UoKWBgIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCdgYHRyeWBgLi4uYGBmaW5hbGx5YGBcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJ2Bgd2l0aGBgXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgYGBhID0gMTsgYiA9XG4xYGAsIGBgYWBgIGFuZCBgYGJgYCBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGVcbnZhbHVlIG9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyIGBgYyA9IFtdOyBkID1cbltdYGAsIGBgY2BgIGFuZCBgYGRgYCBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LFxudW5pcXVlLCBuZXdseSBjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0IGBgYyA9IGQgPSBbXWBgIGFzc2lnbnNcbnRoZSBzYW1lIG9iamVjdCB0byBib3RoIGBgY2BgIGFuZCBgYGRgYC4pXG4nLAorICdvYmplY3RzJzogJ1xuT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4qT2JqZWN0cyogYXJlIFB5dGhvblwncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgUHl0aG9uXG5wcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gb2JqZWN0cy4gKEluXG5hIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG5wcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuXG5FdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3RcJ3NcbippZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXRcbmFzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCdgYGlzYGBcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgYGBpZCgpYGAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG5yZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCBgYGlkKHgpYGAgaXMgdGhlXG5tZW1vcnkgYWRkcmVzcyB3aGVyZSBgYHhgYCBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSBgYHR5cGUoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzXG50eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3RcJ3Ncbip0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG5cblRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW5cbmNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlXG5vbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhblxuaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGVcbm9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyIHRoZVxuY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBgYGdjYGAgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChleDpcbmFsd2F5cyBjbG9zZSBmaWxlcykuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnYGB0cnlgYC4uLmBgZXhjZXB0YGBcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSBgYGNsb3NlKClgYCBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnYGB0cnlgYC4uLmBgZmluYWxseWBgXCcgc3RhdGVtZW50IGFuZCB0aGUgXCdgYHdpdGhgYFwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyIGBgYSA9IDE7IGIgPVxuMWBgLCBgYGFgYCBhbmQgYGBiYGAgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlXG52YWx1ZSBvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciBgYGMgPSBbXTsgZCA9XG5bXWBgLCBgYGNgYCBhbmQgYGBkYGAgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCxcbnVuaXF1ZSwgbmV3bHkgY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCBgYGMgPSBkID0gW11gYCBhc3NpZ25zXG50aGUgc2FtZSBvYmplY3QgdG8gYm90aCBgYGNgYCBhbmQgYGBkYGAuKVxuJywKICAnb3BlcmF0b3Itc3VtbWFyeSc6ICdcblN1bW1hcnlcbioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlcyBpbiBQeXRob24sXG5mcm9tIGxvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgKG1vc3RcbmJpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGNvbXBhcmlzb25zLCBpbmNsdWRpbmdcbnRlc3RzLCB3aGljaCBhbGwgaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBjaGFpbiBmcm9tIGxlZnQgdG8gcmlnaHRcbi0tLSBzZWUgc2VjdGlvbiAqQ29tcGFyaXNvbnMqIC0tLSBhbmQgZXhwb25lbnRpYXRpb24sIHdoaWNoIGdyb3Vwc1xuZnJvbSByaWdodCB0byBsZWZ0KS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYGxhbWJkYWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGlmYGAgLS0gYGBlbHNlYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYG9yYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGFuZGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYG5vdGBgICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGluYGAsIGBgbm90YGAgYGBpbmBgLCBgYGlzYGAsIGBgaXMgbm90YGAsICAgICB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCBgYDxgYCwgYGA8PWBgLCBgYD5gYCwgYGA+PWBgLCBgYCE9YGAsIGBgPT1gYCAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cywgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHxgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYF5gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCZgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYDw8YGAsIGBgPj5gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCtgYCwgYGAtYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwgcmVtYWluZGVyICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFs1XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCt4YGAsIGBgLXhgYCwgYGB+eGBgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYCoqYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHhbaW5kZXhdYGAsIGBgeFtpbmRleDppbmRleF1gYCwgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCBgYHgoYXJndW1lbnRzLi4uKWBgLCBgYHguYXR0cmlidXRlYGAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYChleHByZXNzaW9ucy4uLilgYCwgYGBbZXhwcmVzc2lvbnMuLi5dYGAsICAgICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCBgYHtrZXk6ZGF0dW0uLi59YGAsIGBge2V4cHJlc3Npb25zLi4ufWBgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlIGBgYWJzKHgleSkgPCBhYnMoeSlgYCBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCBmb3IgZmxvYXRzIGl0XG4gICAgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciBleGFtcGxlLCBhbmRcbiAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuIElFRUUgNzU0IGRvdWJsZS1cbiAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0IGBgLTFlLTEwMCAlIDFlMTAwYGAgaGF2ZSB0aGUgc2FtZVxuICAgIHNpZ24gYXMgYGAxZTEwMGBgLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzIGBgLTFlLTEwMCArIDFlMTAwYGAsXG4gICAgd2hpY2ggaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byBgYDFlMTAwYGAuICBUaGUgZnVuY3Rpb25cbiAgICBgYG1hdGguZm1vZCgpYGAgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2ZcbiAgICB0aGUgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgYGAtMWUtMTAwYGAgaW4gdGhpc1xuICAgIGNhc2UuIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGVcbiAgICBhcHBsaWNhdGlvbi5cblxuWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHksIGl0XCdzXG4gICAgcG9zc2libGUgZm9yIGBgeC8veWBgIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiBgYCh4LXgleSkvL3lgYCBkdWUgdG9cbiAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgcmVzdWx0LCBpblxuICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgYGBkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeWBgIGJlIHZlcnlcbiAgICBjbG9zZSB0byBgYHhgYC5cblxuWzNdIFdoaWxlIGNvbXBhcmlzb25zIGJldHdlZW4gc3RyaW5ncyBtYWtlIHNlbnNlIGF0IHRoZSBieXRlIGxldmVsLFxuICAgIHRoZXkgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlIHRvIHVzZXJzLiAgRm9yIGV4YW1wbGUsIHRoZSBzdHJpbmdzXG4gICAgYGAiXFx1MDBDNyJgYCBhbmQgYGAiXFx1MDMyN1xcdTAwNDMiYGAgY29tcGFyZSBkaWZmZXJlbnRseSwgZXZlblxuICAgIHRob3VnaCB0aGV5IGJvdGggcmVwcmVzZW50IHRoZSBzYW1lIHVuaWNvZGUgY2hhcmFjdGVyIChMQVRJTlxuICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBKS4gIFRvIGNvbXBhcmUgc3RyaW5ncyBpbiBhIGh1bWFuXG4gICAgcmVjb2duaXphYmxlIHdheSwgY29tcGFyZSB1c2luZyBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZSBkeW5hbWljXG4gICAgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbCBiZWhhdmlvdXJcbiAgICBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlIGBgaXNgYCBvcGVyYXRvciwgbGlrZSB0aG9zZSBpbnZvbHZpbmdcbiAgICBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yIGNvbnN0YW50cy4gIENoZWNrIHRoZWlyXG4gICAgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlIGBgJWBgIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7IHRoZSBzYW1lXG4gICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuXG5bNl0gVGhlIHBvd2VyIG9wZXJhdG9yIGBgKipgYCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiBhcml0aG1ldGljIG9yXG4gICAgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsIGBgMioqLTFgYCBpc1xuICAgIGBgMC41YGAuXG4nLAogICdwYXNzJzogJ1xuVGhlIGBgcGFzc2BgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuXG5gYHBhc3NgYCBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKICAncG93ZXInOiAnXG5UaGUgcG93ZXIgb3BlcmF0b3JcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xubGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZVxuc3ludGF4IGlzOlxuXG4gICBwb3dlciA6Oj0gcHJpbWFyeSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiBgYC0xKioyYGAgcmVzdWx0cyBpbiBgYC0xYGAuXG5cblRoZSBwb3dlciBvcGVyYXRvciBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRoZSBidWlsdC1pbiBgYHBvdygpYGBcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbmBgMTAqKjJgYCByZXR1cm5zIGBgMTAwYGAsIGJ1dCBgYDEwKiotMmBgIHJldHVybnMgYGAwLjAxYGAuXG5cblJhaXNpbmcgYGAwLjBgYCB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYVxuYGBaZXJvRGl2aXNpb25FcnJvcmBgLiBSYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlclxucmVzdWx0cyBpbiBhIGBgY29tcGxleGBgIG51bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGFcbmBgVmFsdWVFcnJvcmBgLilcbicsCiAgJ3JhaXNlJzogJ1xuVGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cblxuSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsIGBgcmFpc2VgYCByZS1yYWlzZXMgdGhlIGxhc3QgZXhjZXB0aW9uXG50aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlIGluXG50aGUgY3VycmVudCBzY29wZSwgYSBgYFJ1bnRpbWVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsIGBgcmFpc2VgYCBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxub2JqZWN0LiAgSXQgbXVzdCBiZSBlaXRoZXIgYSBzdWJjbGFzcyBvciBhbiBpbnN0YW5jZSBvZlxuYGBCYXNlRXhjZXB0aW9uYGAuIElmIGl0IGlzIGEgY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBiZVxub2J0YWluZWQgd2hlbiBuZWVkZWQgYnkgaW5zdGFudGlhdGluZyB0aGUgY2xhc3Mgd2l0aCBubyBhcmd1bWVudHMuXG5cblRoZSAqdHlwZSogb2YgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlXCdzIGNsYXNzLCB0aGVcbip2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cblxuQSB0cmFjZWJhY2sgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGFuIGV4Y2VwdGlvblxuaXMgcmFpc2VkIGFuZCBhdHRhY2hlZCB0byBpdCBhcyB0aGUgYGBfX3RyYWNlYmFja19fYGAgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlIGBgd2l0aF90cmFjZWJhY2soKWBgIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoXG5yZXR1cm5zIHRoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHNcbmFyZ3VtZW50KSwgbGlrZSBzbzpcblxuICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG5cblRoZSBgYGZyb21gYCBjbGF1c2UgaXMgdXNlZCBmb3IgZXhjZXB0aW9uIGNoYWluaW5nOiBpZiBnaXZlbiwgdGhlXG5zZWNvbmQgKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoXG53aWxsIHRoZW4gYmUgYXR0YWNoZWQgdG8gdGhlIHJhaXNlZCBleGNlcHRpb24gYXMgdGhlIGBgX19jYXVzZV9fYGBcbmF0dHJpYnV0ZSAod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90XG5oYW5kbGVkLCBib3RoIGV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlcjogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiBpcyB0aGVuIGF0dGFjaGVkIGFzIHRoZVxubmV3IGV4Y2VwdGlvblwncyBgYF9fY29udGV4dF9fYGAgYXR0cmlidXRlOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQ6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluIHNlY3Rpb25cbipUaGUgdHJ5IHN0YXRlbWVudCouXG4nLAotICdyZXR1cm4nOiAnXG5UaGUgYGByZXR1cm5gYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByZXR1cm5fc3RtdCA6Oj0gInJldHVybiIgW2V4cHJlc3Npb25fbGlzdF1cblxuYGByZXR1cm5gYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uXG5kZWZpbml0aW9uLCBub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgYGBOb25lYGAgaXNcbnN1YnN0aXR1dGVkLlxuXG5gYHJldHVybmBgIGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGV4cHJlc3Npb24gbGlzdFxuKG9yIGBgTm9uZWBgKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gYGByZXR1cm5gYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxubGVhdmluZyB0aGUgZnVuY3Rpb24uXG5cbkluIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgYGByZXR1cm5gYCBzdGF0ZW1lbnQgaXMgbm90IGFsbG93ZWQgdG9cbmluY2x1ZGUgYW4gYGBleHByZXNzaW9uX2xpc3RgYC4gIEluIHRoYXQgY29udGV4dCwgYSBiYXJlIGBgcmV0dXJuYGBcbmluZGljYXRlcyB0aGF0IHRoZSBnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSBgYFN0b3BJdGVyYXRpb25gYFxudG8gYmUgcmFpc2VkLlxuJywKKyAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZVxuZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGAgdG8gYmUgcmFpc2VkLiBUaGVcbnJldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG5gYFN0b3BJdGVyYXRpb25gYCBhbmQgYmVjb21lcyB0aGUgYGBTdG9wSXRlcmF0aW9uLnZhbHVlYGAgYXR0cmlidXRlLlxuJywKICAnc2VxdWVuY2UtdHlwZXMnOiAiXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoIGBgMCA8PSBrIDwgTmBgXG53aGVyZSAqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoXG5kZWZpbmUgYSByYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlXG50aGUgbWV0aG9kcyBgYGtleXMoKWBgLCBgYHZhbHVlcygpYGAsIGBgaXRlbXMoKWBgLCBgYGdldCgpYGAsXG5gYGNsZWFyKClgYCwgYGBzZXRkZWZhdWx0KClgYCwgYGBwb3AoKWBgLCBgYHBvcGl0ZW0oKWBgLCBgYGNvcHkoKWBgLFxuYW5kIGBgdXBkYXRlKClgYCBiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuJ3QgZGVmaW5lIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kIGFuZCB3aG9zZSBgYF9fbGVuX18oKWBgXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy4gIEFcbiAgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGhcbiAgYGBOb25lYGAuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiBgYHNlbGZba2V5XWBgLiBGb3Igc2VxdWVuY2VcbiAgIHR5cGVzLCB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlXG4gICBjbGFzcyB3aXNoZXMgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZVxuICAgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLiBJZiAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsXG4gICBgYFR5cGVFcnJvcmBgIG1heSBiZSByYWlzZWQ7IGlmIG9mIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mXG4gICBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mXG4gICBuZWdhdGl2ZSB2YWx1ZXMpLCBgYEluZGV4RXJyb3JgYCBzaG91bGQgYmUgcmFpc2VkLiBGb3IgbWFwcGluZ1xuICAgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGUgY29udGFpbmVyKSwgYGBLZXlFcnJvcmBgXG4gICBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiBgYGZvcmBgIGxvb3BzIGV4cGVjdCB0aGF0IGFuIGBgSW5kZXhFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgYGBfX2dldGl0ZW1fXygpYGBcbiAgIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCBgYGtleXMoKWBgLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgYGBfX3JldmVyc2VkX18oKWBgIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZVxuICAgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlXG4gICBwcm90b2NvbCAoYGBfX2xlbl9fKClgYCBhbmQgYGBfX2dldGl0ZW1fXygpYGApLiAgT2JqZWN0cyB0aGF0XG4gICBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbCBzaG91bGQgb25seSBwcm92aWRlXG4gICBgYF9fcmV2ZXJzZWRfXygpYGAgaWYgdGhleSBjYW4gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzXG4gICBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnkgYGByZXZlcnNlZCgpYGAuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzIChgYGluYGAgYW5kIGBgbm90IGluYGApIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4iLAogICdzaGlmdGluZyc6ICdcblNoaWZ0aW5nIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG5vcGVyYXRpb25zOlxuXG4gICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcblxuVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSBmaXJzdFxuYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZVxuc2Vjb25kIGFyZ3VtZW50LlxuXG5BIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZGl2aXNpb24gYnkgYGBwb3coMixuKWBgLiAgQVxubGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggYGBwb3coMixuKWBgLlxuXG5Ob3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpcyByZXF1aXJlZCB0b1xuICBiZSBhdCBtb3N0IGBgc3lzLm1heHNpemVgYC4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgbGFyZ2VyXG4gIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFuIGBgT3ZlcmZsb3dFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICdzbGljaW5ncyc6ICdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciBgYGRlbGBgIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhXG5zbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZVxudG8gYSBtYXBwaW5nIG9iamVjdCwgYW5kIGl0IGlzIGluZGV4ZWQgKHVzaW5nIHRoZSBzYW1lXG5gYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhIGtleSB0aGF0IGlzXG5jb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbmBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nIGBgTm9uZWBgIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKLSAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiBgYF9fbXJvX19gYC5cblxuY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuXG4gICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGltbWVkaWF0ZVxuICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSByZWZlcmVuY2VzXG4gICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcblxuICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4gICAgICBbPGNsYXNzIFwnYm9vbFwnPl1cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgZm91bmQgaW5cbiAgICB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKCpCYXNpYyBjdXN0b21pemF0aW9uKikuXG5cblsyXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCBgYFsxLCAyXWBgIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICBgYFsxLjAsIDIuMF1gYCwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eSBiZWluZ1xuICAgIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSwgb3IgIkx0IlxuICAgIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYSBzaW5nbGV0b25cbiAgICB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCi0gJ3NwZWNpYWxuYW1lcyc6ICdcblNwZWNpYWwgbWV0aG9kIG5hbWVzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgc3BlY2lhbFxuc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kIHNsaWNpbmcpIGJ5XG5kZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob25cJ3MgYXBwcm9hY2ggdG9cbipvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biBiZWhhdmlvclxud2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBkZWZpbmVzXG5hIG1ldGhvZCBuYW1lZCBgYF9fZ2V0aXRlbV9fKClgYCwgYW5kIGBgeGBgIGlzIGFuIGluc3RhbmNlIG9mIHRoaXNcbmNsYXNzLCB0aGVuIGBgeFtpXWBgIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBgYHR5cGUoeCkuX19nZXRpdGVtX18oeCxcbmkpYGAuICBFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiByYWlzZVxuYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuYGBBdHRyaWJ1dGVFcnJvcmBgIG9yIGBgVHlwZUVycm9yYGApLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbmBgTm9kZUxpc3RgYCBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuXG5cbkJhc2ljIGN1c3RvbWl6YXRpb25cbj09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gIGBgX19uZXdfXygpYGAgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgYGBfX25ld19fKClgYCBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHlcbiAgIGFuIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgdXNpbmdcbiAgIGBgc3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSlgYCB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgYGBfX25ld19fKClgYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgYGBfX2luaXRfXyhzZWxmWywgLi4uXSlgYCwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYC5cblxuICAgSWYgYGBfX25ld19fKClgYCBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgIGBgX19uZXdfXygpYGAgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgYGBfX2luaXRfXygpYGAgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9faW5pdF9fKClgYCBtZXRob2QsXG4gICBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2ZcbiAgIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgIGBgQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSlgYC4gIEFzIGEgc3BlY2lhbCBjb25zdHJhaW50XG4gICBvbiBjb25zdHJ1Y3RvcnMsIG5vIHZhbHVlIG1heSBiZSByZXR1cm5lZDsgZG9pbmcgc28gd2lsbCBjYXVzZSBhXG4gICBgYFR5cGVFcnJvcmBgIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhIGBgX19kZWxfXygpYGAgbWV0aG9kLFxuICAgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2RlbF9fKClgYCBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5XG4gICBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGVcbiAgIGluc3RhbmNlLiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yXG4gICB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6IGBgZGVsIHhgYCBkb2VzblwndCBkaXJlY3RseSBjYWxsIGBgeC5fX2RlbF9fKClgYCAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGBgeGBgIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXJcbiAgICAgaXMgb25seSBjYWxsZWQgd2hlbiBgYHhgYFwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZVxuICAgICBjb21tb24gc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW5cbiAgICAgb2JqZWN0IGZyb20gZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW5cbiAgICAgb2JqZWN0cyAoZS5nLiwgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGhcbiAgICAgcGFyZW50IGFuZCBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlXG4gICAgIHN0YWNrIGZyYW1lIG9mIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrXG4gICAgIHN0b3JlZCBpbiBgYHN5cy5leGNfaW5mbygpWzJdYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3JcbiAgICAgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW5cbiAgICAgdW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyBgYE5vbmVgYCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLiBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZVxuICAgICBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnlcbiAgICAgZGVmYXVsdCksIGJ1dCBjYW4gb25seSBiZSBjbGVhbmVkIHVwIGlmIHRoZXJlIGFyZSBubyBQeXRob24tXG4gICAgIGxldmVsIGBgX19kZWxfXygpYGAgbWV0aG9kcyBpbnZvbHZlZC4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25cbiAgICAgZm9yIHRoZSBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGdhcmJhZ2VgYCB2YWx1ZS5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgc3RyKClgYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlIGBgcHJpbnQoKWBgXG4gICBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gYGBfX3JlcHJfXygpYGAgaW4gdGhhdCBpdCBkb2VzIG5vdCBoYXZlXG4gICB0byBiZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlXG4gICByZXByZXNlbnRhdGlvbiBtYXkgYmUgdXNlZCBpbnN0ZWFkLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBieXRlcygpYGAgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgZm9ybWF0KClgYCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICBgYGZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBgYGlkKHgpYGAuXG5cbiAgIENsYXNzZXMgd2hpY2ggaW5oZXJpdCBhIGBgX19oYXNoX18oKWBgIG1ldGhvZCBmcm9tIGEgcGFyZW50IGNsYXNzXG4gICBidXQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIGBgX19lcV9fKClgYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWVcbiAgIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYSB2YWx1ZS1cbiAgIGJhc2VkIGNvbmNlcHQgb2YgZXF1YWxpdHkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpZGVudGl0eSBiYXNlZFxuICAgZXF1YWxpdHkpIGNhbiBleHBsaWNpdGx5IGZsYWcgdGhlbXNlbHZlcyBhcyBiZWluZyB1bmhhc2hhYmxlIGJ5XG4gICBzZXR0aW5nIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvIG1lYW5zXG4gICB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhbiBhcHByb3ByaWF0ZVxuICAgYGBUeXBlRXJyb3JgYCB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLFxuICAgYnV0IHRoZXkgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlblxuICAgY2hlY2tpbmcgYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgKHVubGlrZSBjbGFzc2VzXG4gICB3aGljaCBkZWZpbmUgdGhlaXIgb3duIGBgX19oYXNoX18oKWBgIHRvIGV4cGxpY2l0bHkgcmFpc2VcbiAgIGBgVHlwZUVycm9yYGApLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBgYF9faGFzaF9fKClgYCBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGVcbiAgIGludGVycHJldGVyIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyBgYF9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX19gYC4gT3RoZXJ3aXNlIHRoZSBpbmhlcml0YW5jZSBvZlxuICAgYGBfX2hhc2hfXygpYGAgd2lsbCBiZSBibG9ja2VkLCBqdXN0IGFzIGlmIGBgX19oYXNoX19gYCBoYWQgYmVlblxuICAgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAuXG5cbiAgIFNlZSBhbHNvIHRoZSAqLVIqIGNvbW1hbmQtbGluZSBvcHRpb24uXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiAgQSBsaXN0IG11c3QgYmVcbiAgIHJldHVybmVkLlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgYGB0eXBlKClgYC4gQSBjbGFzc1xuZGVmaW5pdGlvbiBpcyByZWFkIGludG8gYSBzZXBhcmF0ZSBuYW1lc3BhY2UgYW5kIHRoZSB2YWx1ZSBvZiBjbGFzc1xubmFtZSBpcyBib3VuZCB0byB0aGUgcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgZGljdClgYC5cblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyByZWFkLCBpZiBhIGNhbGxhYmxlIGBgbWV0YWNsYXNzYGAga2V5d29yZFxuYXJndW1lbnQgaXMgcGFzc2VkIGFmdGVyIHRoZSBiYXNlcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiwgdGhlXG5jYWxsYWJsZSBnaXZlbiB3aWxsIGJlIGNhbGxlZCBpbnN0ZWFkIG9mIGBgdHlwZSgpYGAuICBJZiBvdGhlciBrZXl3b3JkXG5hcmd1bWVudHMgYXJlIHBhc3NlZCwgdGhleSB3aWxsIGFsc28gYmUgcGFzc2VkIHRvIHRoZSBtZXRhY2xhc3MuICBUaGlzXG5hbGxvd3MgY2xhc3NlcyBvciBmdW5jdGlvbnMgdG8gYmUgd3JpdHRlbiB3aGljaCBtb25pdG9yIG9yIGFsdGVyIHRoZVxuY2xhc3MgY3JlYXRpb24gcHJvY2VzczpcblxuKiBNb2RpZnlpbmcgdGhlIGNsYXNzIGRpY3Rpb25hcnkgcHJpb3IgdG8gdGhlIGNsYXNzIGJlaW5nIGNyZWF0ZWQuXG5cbiogUmV0dXJuaW5nIGFuIGluc3RhbmNlIG9mIGFub3RoZXIgY2xhc3MgLS0gZXNzZW50aWFsbHkgcGVyZm9ybWluZyB0aGVcbiAgcm9sZSBvZiBhIGZhY3RvcnkgZnVuY3Rpb24uXG5cblRoZXNlIHN0ZXBzIHdpbGwgaGF2ZSB0byBiZSBwZXJmb3JtZWQgaW4gdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgXG5tZXRob2QgLS0gYGB0eXBlLl9fbmV3X18oKWBgIGNhbiB0aGVuIGJlIGNhbGxlZCBmcm9tIHRoaXMgbWV0aG9kIHRvXG5jcmVhdGUgYSBjbGFzcyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgVGhpcyBleGFtcGxlIGFkZHMgYSBuZXdcbmVsZW1lbnQgdG8gdGhlIGNsYXNzIGRpY3Rpb25hcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjbGFzczpcblxuICAgY2xhc3MgbWV0YWNscyh0eXBlKTpcbiAgICAgICBkZWYgX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkaWN0KTpcbiAgICAgICAgICAgZGljdFtcJ2Zvb1wnXSA9IFwnbWV0YWNscyB3YXMgaGVyZVwnXG4gICAgICAgICAgIHJldHVybiB0eXBlLl9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdClcblxuWW91IGNhbiBvZiBjb3Vyc2UgYWxzbyBvdmVycmlkZSBvdGhlciBjbGFzcyBtZXRob2RzIChvciBhZGQgbmV3XG5tZXRob2RzKTsgZm9yIGV4YW1wbGUgZGVmaW5pbmcgYSBjdXN0b20gYGBfX2NhbGxfXygpYGAgbWV0aG9kIGluIHRoZVxubWV0YWNsYXNzIGFsbG93cyBjdXN0b20gYmVoYXZpb3Igd2hlbiB0aGUgY2xhc3MgaXMgY2FsbGVkLCBlLmcuIG5vdFxuYWx3YXlzIGNyZWF0aW5nIGEgbmV3IGluc3RhbmNlLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX18oKWBgIGF0dHJpYnV0ZSAodXN1YWxseVxuaW1wbGVtZW50ZWQgYXMgYSBjbGFzcyBvciBzdGF0aWMgbWV0aG9kKSwgaXQgaXMgY2FsbGVkIGJlZm9yZSB0aGVcbmNsYXNzIGJvZHkgaXMgZXZhbHVhdGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGFuZCBhIHR1cGxlIG9mIGl0c1xuYmFzZXMgZm9yIGFyZ3VtZW50cy4gIEl0IHNob3VsZCByZXR1cm4gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgdGhlXG5tYXBwaW5nIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBzdG9yZSB0aGUgbmFtZXNwYWNlIG9mIHRoZVxuY2xhc3MuICBUaGUgZGVmYXVsdCBpcyBhIHBsYWluIGRpY3Rpb25hcnkuICBUaGlzIGNvdWxkIGJlIHVzZWQsIGZvclxuZXhhbXBsZSwgdG8ga2VlcCB0cmFjayBvZiB0aGUgb3JkZXIgdGhhdCBjbGFzcyBhdHRyaWJ1dGVzIGFyZSBkZWNsYXJlZFxuaW4gYnkgcmV0dXJuaW5nIGFuIG9yZGVyZWQgZGljdGlvbmFyeS5cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHJlY2VkZW5jZVxucnVsZXM6XG5cbiogSWYgdGhlIGBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudCBpcyBwYXNzZWQgd2l0aCB0aGUgYmFzZXMsIGl0XG4gIGlzIHVzZWQuXG5cbiogT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYmFzZSBjbGFzcywgaXRzIG1ldGFjbGFzcyBpc1xuICB1c2VkLlxuXG4qIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgbWV0YWNsYXNzIChgYHR5cGVgYCkgaXMgdXNlZC5cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRpbmcgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWNcbmRlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kXG5hdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG5cbkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbmBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYCB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyBtZW1iZXJzXG53ZXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGNsYXNzZGljdCk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KGNsYXNzZGljdCkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUoY2xhc3NkaWN0KVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzIGBgX19wcmVwYXJlX18oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSBgYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kc1xuYW5kIGF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgYGBtZW1iZXJzYGAuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG5gYGlzaW5zdGFuY2UoKWBgIGFuZCBgYGlzc3ViY2xhc3MoKWBgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyBgYGFiYy5BQkNNZXRhYGAgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzXG5pbiBvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKWBgLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcylgYC5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuICAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nIGBgaXNpbnN0YW5jZSgpYGAgYW5kXG4gICAgICBgYGlzc3ViY2xhc3MoKWBgIGJlaGF2aW9yIHRocm91Z2ggYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kXG4gICAgICBgYF9fc3ViY2xhc3NjaGVja19fKClgYCwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGluIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgYGBhYmNgYFxuICAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgYGB4KGFyZzEsIGFyZzIsIC4uLilgYCBpcyBhIHNob3J0aGFuZCBmb3JcbiAgIGBgeC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pYGAuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuXCd0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKLSAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5nIG9iamVjdHMgc3VwcG9ydCB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3cuXG5cbkluIGFkZGl0aW9uLCBQeXRob25cJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGxpc3QsXG50dXBsZSwgcmFuZ2UqIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSAqU3RyaW5nXG5Gb3JtYXR0aW5nKiBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIGBgcmVgYCBtb2R1bGUgZm9yIHN0cmluZyBmdW5jdGlvbnNcbmJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBsaW1pdFxuICAgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAotICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAiUiJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIlxuICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydGJ5dGVzaXRlbSogXCciXCdcbiAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuXG5PbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgdGhhdFxud2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSBgYHN0cmluZ3ByZWZpeGBgIG9yXG5gYGJ5dGVzcHJlZml4YGAgYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXRcbmlzIGRlZmluZWQgYnkgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZ1xuZGVjbGFyYXRpb24gaXMgZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmdcbmRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzIChgYFwnYGApIG9yIGRvdWJsZSBxdW90ZXMgKGBgImBgKS4gIFRoZXkgY2FuIGFsc28gYmVcbmVuY2xvc2VkIGluIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2VcbmFyZSBnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaFxuKGBgXFxgYCkgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCBgYFwnYlwnYGAgb3IgYGBcJ0JcJ2BgOyB0aGV5XG5wcm9kdWNlIGFuIGluc3RhbmNlIG9mIHRoZSBgYGJ5dGVzYGAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBgYHN0cmBgIHR5cGUuXG5UaGV5IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2ZcbjEyOCBvciBncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhbiBiZVxuICAgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZVxuICAgcmVxdWlyZWQuXG5cbjUuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheSwgYnV0IGNoYXJhY3RlcnNcbiAgIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSB3aWxsIGJlIGVuY29kZWQgdXNpbmcgYVxuICAgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHRvIHVzZSAxNi1iaXQgY29kZSB1bml0cyAodGhlXG4gICBkZWZhdWx0KS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cblVubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gdGhlXG5zdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSBzdHJpbmcqLiAgKFRoaXNcbmJlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIG1pc3R5cGVkLFxudGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgYWxzb1xuaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nXG5saXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlc1xubGl0ZXJhbHMuXG5cbkV2ZW4gaW4gYSByYXcgc3RyaW5nLCBzdHJpbmcgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsXG5idXQgdGhlIGJhY2tzbGFzaCByZW1haW5zIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCBgYHIiXFwiImBgIGlzIGFcbnZhbGlkIHN0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhXG5kb3VibGUgcXVvdGU7IGBgciJcXCJgYCBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhd1xuc3RyaW5nIGNhbm5vdCBlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphXG5yYXcgc3RyaW5nIGNhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaFxud291bGQgZXNjYXBlIHRoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlXG5iYWNrc2xhc2ggZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzXG5hcyBwYXJ0IG9mIHRoZSBzdHJpbmcsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAorICdzcGVjaWFsYXR0cnMnOiAnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSBgYGRpcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24uXG5cbm9iamVjdC5fX2RpY3RfX1xuXG4gICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBvYmplY3RcJ3NcbiAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cblxuaW5zdGFuY2UuX19jbGFzc19fXG5cbiAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG5cbmNsYXNzLl9fYmFzZXNfX1xuXG4gICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuXG5jbGFzcy5fX25hbWVfX1xuXG4gICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuY2xhc3MuX19xdWFsbmFtZV9fXG5cbiAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiBgYF9fbXJvX19gYC5cblxuY2xhc3MuX19zdWJjbGFzc2VzX18oKVxuXG4gICBFYWNoIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGltbWVkaWF0ZVxuICAgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCB0aG9zZSByZWZlcmVuY2VzXG4gICBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcblxuICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4gICAgICBbPGNsYXNzIFwnYm9vbFwnPl1cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgZm91bmQgaW5cbiAgICB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKCpCYXNpYyBjdXN0b21pemF0aW9uKikuXG5cblsyXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCBgYFsxLCAyXWBgIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICBgYFsxLjAsIDIuMF1gYCwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eSBiZWluZ1xuICAgIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSwgb3IgIkx0IlxuICAgIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYSBzaW5nbGV0b25cbiAgICB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCisgJ3NwZWNpYWxuYW1lcyc6ICdcblNwZWNpYWwgbWV0aG9kIG5hbWVzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGNhbiBpbXBsZW1lbnQgY2VydGFpbiBvcGVyYXRpb25zIHRoYXQgYXJlIGludm9rZWQgYnkgc3BlY2lhbFxuc3ludGF4IChzdWNoIGFzIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvciBzdWJzY3JpcHRpbmcgYW5kIHNsaWNpbmcpIGJ5XG5kZWZpbmluZyBtZXRob2RzIHdpdGggc3BlY2lhbCBuYW1lcy4gVGhpcyBpcyBQeXRob25cJ3MgYXBwcm9hY2ggdG9cbipvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biBiZWhhdmlvclxud2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBkZWZpbmVzXG5hIG1ldGhvZCBuYW1lZCBgYF9fZ2V0aXRlbV9fKClgYCwgYW5kIGBgeGBgIGlzIGFuIGluc3RhbmNlIG9mIHRoaXNcbmNsYXNzLCB0aGVuIGBgeFtpXWBgIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBgYHR5cGUoeCkuX19nZXRpdGVtX18oeCxcbmkpYGAuICBFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiByYWlzZVxuYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuYGBBdHRyaWJ1dGVFcnJvcmBgIG9yIGBgVHlwZUVycm9yYGApLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbmBgTm9kZUxpc3RgYCBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuXG5cbkJhc2ljIGN1c3RvbWl6YXRpb25cbj09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gIGBgX19uZXdfXygpYGAgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgYGBfX25ld19fKClgYCBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHlcbiAgIGFuIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgdXNpbmdcbiAgIGBgc3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSlgYCB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgYGBfX25ld19fKClgYCByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgYGBfX2luaXRfXyhzZWxmWywgLi4uXSlgYCwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYC5cblxuICAgSWYgYGBfX25ld19fKClgYCBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgIGBgX19uZXdfXygpYGAgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGNyZWF0ZWQuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgYGBfX2luaXRfXygpYGAgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9faW5pdF9fKClgYCBtZXRob2QsXG4gICBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2ZcbiAgIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgIGBgQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSlgYC4gIEFzIGEgc3BlY2lhbCBjb25zdHJhaW50XG4gICBvbiBjb25zdHJ1Y3RvcnMsIG5vIHZhbHVlIG1heSBiZSByZXR1cm5lZDsgZG9pbmcgc28gd2lsbCBjYXVzZSBhXG4gICBgYFR5cGVFcnJvcmBgIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhIGBgX19kZWxfXygpYGAgbWV0aG9kLFxuICAgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2RlbF9fKClgYCBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5XG4gICBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGVcbiAgIGluc3RhbmNlLiAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yXG4gICB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6IGBgZGVsIHhgYCBkb2VzblwndCBkaXJlY3RseSBjYWxsIGBgeC5fX2RlbF9fKClgYCAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGBgeGBgIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXJcbiAgICAgaXMgb25seSBjYWxsZWQgd2hlbiBgYHhgYFwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZVxuICAgICBjb21tb24gc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW5cbiAgICAgb2JqZWN0IGZyb20gZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW5cbiAgICAgb2JqZWN0cyAoZS5nLiwgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGhcbiAgICAgcGFyZW50IGFuZCBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlXG4gICAgIHN0YWNrIGZyYW1lIG9mIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrXG4gICAgIHN0b3JlZCBpbiBgYHN5cy5leGNfaW5mbygpWzJdYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3JcbiAgICAgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW5cbiAgICAgdW5oYW5kbGVkIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyBgYE5vbmVgYCBpblxuICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLiBDaXJjdWxhciByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZVxuICAgICBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgZGV0ZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnlcbiAgICAgZGVmYXVsdCksIGJ1dCBjYW4gb25seSBiZSBjbGVhbmVkIHVwIGlmIHRoZXJlIGFyZSBubyBQeXRob24tXG4gICAgIGxldmVsIGBgX19kZWxfXygpYGAgbWV0aG9kcyBpbnZvbHZlZC4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25cbiAgICAgZm9yIHRoZSBgYGdjYGAgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBgYGdhcmJhZ2VgYCB2YWx1ZS5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2ggYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvblxuICAgICBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvIGBgc3lzLnN0ZGVycmBgIGluc3RlYWQuXG4gICAgIEFsc28sIHdoZW4gYGBfX2RlbF9fKClgYCBpcyBpbnZva2VkIGluIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nXG4gICAgIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlclxuICAgICBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmVcbiAgICAgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHRvcm4gZG93biAoZS5nLiB0aGVcbiAgICAgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzIHJlYXNvbiwgYGBfX2RlbF9fKClgYFxuICAgICBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWQgdG8gbWFpbnRhaW5cbiAgICAgZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsIFB5dGhvblxuICAgICBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGByZXByKClgYCBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZVxuICAgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLFxuICAgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkXG4gICB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgYGA8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+YGAgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzIGBgX19yZXByX18oKWBgXG4gICBidXQgbm90IGBgX19zdHJfXygpYGAsIHRoZW4gYGBfX3JlcHJfXygpYGAgaXMgYWxzbyB1c2VkIHdoZW4gYW5cbiAgICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzXG4gICByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgc3RyKClgYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlIGBgcHJpbnQoKWBgXG4gICBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gYGBfX3JlcHJfXygpYGAgaW4gdGhhdCBpdCBkb2VzIG5vdCBoYXZlXG4gICB0byBiZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlXG4gICByZXByZXNlbnRhdGlvbiBtYXkgYmUgdXNlZCBpbnN0ZWFkLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYVxuICAgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYGBieXRlcygpYGAgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhIGBgYnl0ZXNgYCBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgZm9ybWF0KClgYCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICBgYGZvcm1hdCgpYGAgbWV0aG9kIG9mIGNsYXNzIGBgc3RyYGApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpc1xuICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwXG4gICB0byB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgYGBfX2Zvcm1hdF9fKClgYCwgaG93ZXZlciBtb3N0IGNsYXNzZXNcbiAgIHdpbGwgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3JcbiAgIHVzZSBhIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogYGB4PHlgYCBjYWxscyBgYHguX19sdF9fKHkpYGAsIGBgeDw9eWBgIGNhbGxzXG4gICBgYHguX19sZV9fKHkpYGAsIGBgeD09eWBgIGNhbGxzIGBgeC5fX2VxX18oeSlgYCwgYGB4IT15YGAgY2FsbHNcbiAgIGBgeC5fX25lX18oeSlgYCwgYGB4PnlgYCBjYWxscyBgYHguX19ndF9fKHkpYGAsIGFuZCBgYHg+PXlgYCBjYWxsc1xuICAgYGB4Ll9fZ2VfXyh5KWBgLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uXG4gICBgYE5vdEltcGxlbWVudGVkYGAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGFcbiAgIGdpdmVuIHBhaXIgb2YgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCBgYEZhbHNlYGAgYW5kIGBgVHJ1ZWBgIGFyZVxuICAgcmV0dXJuZWQgZm9yIGEgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhblxuICAgcmV0dXJuIGFueSB2YWx1ZSwgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhXG4gICBCb29sZWFuIGNvbnRleHQgKGUuZy4sIGluIHRoZSBjb25kaXRpb24gb2YgYW4gYGBpZmBgIHN0YXRlbWVudCksXG4gICBQeXRob24gd2lsbCBjYWxsIGBgYm9vbCgpYGAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0XG4gICBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiBgYHg9PXlgYCBkb2VzIG5vdCBpbXBseSB0aGF0IGBgeCE9eWBgIGlzIGZhbHNlLlxuICAgQWNjb3JkaW5nbHksIHdoZW4gZGVmaW5pbmcgYGBfX2VxX18oKWBgLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICBgYF9fbmVfXygpYGAgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlXG4gICB0aGUgcGFyYWdyYXBoIG9uIGBgX19oYXNoX18oKWBgIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCBgYF9fbHRfXygpYGAgYW5kIGBgX19ndF9fKClgYCBhcmUgZWFjaFxuICAgb3RoZXJcJ3MgcmVmbGVjdGlvbiwgYGBfX2xlX18oKWBgIGFuZCBgYF9fZ2VfXygpYGAgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sIGFuZCBgYF9fZXFfXygpYGAgYW5kIGBgX19uZV9fKClgYCBhcmUgdGhlaXIgb3duXG4gICByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlIGBgZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKClgYC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiBgYGhhc2goKWBgIGFuZCBmb3Igb3BlcmF0aW9ucyBvblxuICAgbWVtYmVycyBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIGBgc2V0YGAsIGBgZnJvemVuc2V0YGAsIGFuZFxuICAgYGBkaWN0YGAuICBgYF9faGFzaF9fKClgYCBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seVxuICAgcmVxdWlyZWQgcHJvcGVydHkgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZVxuICAgaGFzaCB2YWx1ZTsgaXQgaXMgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZ1xuICAgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaCB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdFxuICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuIGBgX19lcV9fKClgYCBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgYGBfX2hhc2hfXygpYGAgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lc1xuICAgYGBfX2VxX18oKWBgIGJ1dCBub3QgYGBfX2hhc2hfXygpYGAsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmVcbiAgIHVzYWJsZSBhcyBpdGVtcyBpbiBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbXV0YWJsZSBvYmplY3RzIGFuZCBpbXBsZW1lbnRzIGFuIGBgX19lcV9fKClgYCBtZXRob2QsIGl0IHNob3VsZFxuICAgbm90IGltcGxlbWVudCBgYF9faGFzaF9fKClgYCwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlXG4gICBjb2xsZWN0aW9ucyByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGVcbiAgIG9iamVjdFwncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSBgYF9fZXFfXygpYGAgYW5kIGBgX19oYXNoX18oKWBgIG1ldGhvZHNcbiAgIGJ5IGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0IGBgeCA9PSB5YGAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09XG4gICBoYXNoKHkpYGAuXG5cbiAgIENsYXNzZXMgd2hpY2ggaW5oZXJpdCBhIGBgX19oYXNoX18oKWBgIG1ldGhvZCBmcm9tIGEgcGFyZW50IGNsYXNzXG4gICBidXQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIGBgX19lcV9fKClgYCBzdWNoIHRoYXQgdGhlIGhhc2ggdmFsdWVcbiAgIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYSB2YWx1ZS1cbiAgIGJhc2VkIGNvbmNlcHQgb2YgZXF1YWxpdHkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBpZGVudGl0eSBiYXNlZFxuICAgZXF1YWxpdHkpIGNhbiBleHBsaWNpdGx5IGZsYWcgdGhlbXNlbHZlcyBhcyBiZWluZyB1bmhhc2hhYmxlIGJ5XG4gICBzZXR0aW5nIGBgX19oYXNoX18gPSBOb25lYGAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvIG1lYW5zXG4gICB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhbiBhcHByb3ByaWF0ZVxuICAgYGBUeXBlRXJyb3JgYCB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLFxuICAgYnV0IHRoZXkgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzIHVuaGFzaGFibGUgd2hlblxuICAgY2hlY2tpbmcgYGBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpYGAgKHVubGlrZSBjbGFzc2VzXG4gICB3aGljaCBkZWZpbmUgdGhlaXIgb3duIGBgX19oYXNoX18oKWBgIHRvIGV4cGxpY2l0bHkgcmFpc2VcbiAgIGBgVHlwZUVycm9yYGApLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzIGBgX19lcV9fKClgYCBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiBgYF9faGFzaF9fKClgYCBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGVcbiAgIGludGVycHJldGVyIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyBgYF9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX19gYC4gT3RoZXJ3aXNlIHRoZSBpbmhlcml0YW5jZSBvZlxuICAgYGBfX2hhc2hfXygpYGAgd2lsbCBiZSBibG9ja2VkLCBqdXN0IGFzIGlmIGBgX19oYXNoX19gYCBoYWQgYmVlblxuICAgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSBgYF9faGFzaF9fKClgYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWVcbiAgICAgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyBgYFBZVEhPTkhBU0hTRUVEYGAuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgIGBgYm9vbCgpYGA7IHNob3VsZCByZXR1cm4gYGBGYWxzZWBgIG9yIGBgVHJ1ZWBgLiAgV2hlbiB0aGlzIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIGBgX19sZW5fXygpYGAgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlXG4gICBvYmplY3QgaXMgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3NcbiAgIGRlZmluZXMgbmVpdGhlciBgYF9fbGVuX18oKWBgIG5vciBgYF9fYm9vbF9fKClgYCwgYWxsIGl0cyBpbnN0YW5jZXNcbiAgIGFyZSBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mIGBgeC5uYW1lYGApXG5mb3IgY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciBgYHNlbGZgYCkuICBgYG5hbWVgYCBpcyB0aGUgYXR0cmlidXRlIG5hbWUuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZVxuICAgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgIGBgX19nZXRhdHRyX18oKWBgIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gYGBfX2dldGF0dHJfXygpYGAgYW5kIGBgX19zZXRhdHRyX18oKWBgLikgVGhpcyBpcyBkb25lIGJvdGhcbiAgIGZvciBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlIGBgX19nZXRhdHRyX18oKWBgXG4gICB3b3VsZCBoYXZlIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlXG4gICB0aGF0IGF0IGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5XG4gICBub3QgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXNcbiAgIGBgX19nZXRhdHRyX18oKWBgLCB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3NcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgZWl0aGVyIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAuIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZClcbiAgIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLiBJbiBvcmRlclxuICAgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb25cbiAgIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvXG4gICBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKWBgLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kc1xuICAgICBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheCBvclxuICAgICBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiBgYF9fc2V0YXR0cl9fKClgYCB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlgYC5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgYGBfX3NldGF0dHJfXygpYGAgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgYGBkZWwgb2JqLm5hbWVgYCBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gYGBkaXIoKWBgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiBgYGRpcigpYGAgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnIGBgX19kaWN0X19gYC5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yIGBgTm9uZWBgIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCwgYW5kXG5gYF9fZGVsZXRlX18oKWBgLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LFxuaXQgaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCBgYGEueGBgIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCBgYGEuX19kaWN0X19bXCd4XCddYGAsIHRoZW5cbmBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ11gYCwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG5gYHR5cGUoYSlgYCBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsIGBgYS54YGAuXG5Ib3cgdGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gYGBhYGA6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgIGBgeC5fX2dldF9fKGEpYGAuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCBgYGEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiBgYHR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSlgYC5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCBgYEEueGBgIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICBgYEEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSlgYC5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgYGBhYGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBzdXBlcmBgLCB0aGVuIHRoZSBiaW5kaW5nIGBgc3VwZXIoQixcbiAgIG9iaikubSgpYGAgc2VhcmNoZXMgYGBvYmouX19jbGFzc19fLl9fbXJvX19gYCBmb3IgdGhlIGJhc2UgY2xhc3NcbiAgIGBgQWBgIGltbWVkaWF0ZWx5IHByZWNlZGluZyBgYEJgYCBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yXG4gICB3aXRoIHRoZSBjYWxsOiBgYEEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKWBgLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgIGFuZCBgYF9fZGVsZXRlX18oKWBgLlxuSWYgaXQgZG9lcyBub3QgZGVmaW5lIGBgX19nZXRfXygpYGAsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbFxucmV0dXJuIHRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlXG5vYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgYGBfX3NldF9fKClgYFxuYW5kL29yIGBgX19kZWxldGVfXygpYGAsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzXG5uZWl0aGVyLCBpdCBpcyBhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9yc1xuZGVmaW5lIGJvdGggYGBfX2dldF9fKClgYCBhbmQgYGBfX3NldF9fKClgYCwgd2hpbGUgbm9uLWRhdGFcbmRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGUgYGBfX2dldF9fKClgYCBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGhcbmBgX19zZXRfXygpYGAgYW5kIGBgX19nZXRfXygpYGAgZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb25cbmluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJbiBjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlXG5vdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyBgYHN0YXRpY21ldGhvZCgpYGAgYW5kIGBgY2xhc3NtZXRob2QoKWBgKVxuYXJlIGltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgYGBwcm9wZXJ0eSgpYGAgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICBJZiBkZWZpbmVkIGluIGFcbiAgIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmRcbiAgIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3JcbiAgIGVhY2ggaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyBgYEF0dHJpYnV0ZUVycm9yYGAuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gIGBgXCdfX2RpY3RfX1wnYGAgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzIGRlZmluaW5nXG4gICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW5zdGFuY2VzLiBJZiB3ZWFrXG4gIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGQgYGBcJ19fd2Vha3JlZl9fXCdgYCB0byB0aGVcbiAgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZSBpbnN0YW5jZVxuICB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlIChleGNlcHQgYnlcbiAgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS4gVGhpc1xuICByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzIGBgaW50YGAsIGBgc3RyYGAgYW5kXG4gIGBgdHVwbGVgYC5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzIG1heVxuICBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgYGB0eXBlKClgYC4gVGhlIGNsYXNzIGJvZHlcbmlzIGV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0b1xudGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSlgYC5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbmBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCBgYE15Q2xhc3NgYCBhbmQgYGBNeVN1YmNsYXNzYGAgYXJlXG5pbnN0YW5jZXMgb2YgYGBNZXRhYGA6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiBgYHR5cGUoKWBgIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gIGBgdHlwZSgpYGAsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgYGB0eXBlKClgYCBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiBgYHR5cGUoY2xzKWBgKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggYGBUeXBlRXJyb3JgYC5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgYGBfX3ByZXBhcmVfX2BgXG5hdHRyaWJ1dGUsIGl0IGlzIGNhbGxlZCBhcyBgYG5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLFxuYmFzZXMsICoqa3dkcylgYCAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZVxuZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgYGBkaWN0KClgYCBpbnN0YW5jZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG4gICAgICBJbnRyb2R1Y2VkIHRoZSBgYF9fcHJlcGFyZV9fYGAgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgYGBleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSlgYC4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byBgYGV4ZWMoKWBgIGlzXG50aGF0IGxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYGBtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcylgYCAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gYGBfX3ByZXBhcmVfX2BgKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgYGBzdXBlcigpYGAuIGBgX19jbGFzc19fYGAgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyIGBgX19jbGFzc19fYGAgb3IgYGBzdXBlcmBgLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudFxuZm9ybSBvZiBgYHN1cGVyKClgYCB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWRcbmJhc2VkIG9uIGxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG9cbm1ha2UgdGhlIGN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWRcbnRvIHRoZSBtZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbiAgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgYGBfX2NsYXNzX19gYCBjbG9zdXJlIHJlZmVyZW5jZVxuXG5cbk1ldGFjbGFzcyBleGFtcGxlXG4tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlXG5iZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWNcbmRlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kXG5hdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG5cbkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbmBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYCB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyBtZW1iZXJzXG53ZXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX3ByZXBhcmVfXygpYGAgbWV0aG9kIHdoaWNoIHJldHVybnMgYW5cbmVtcHR5IGBgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgYC4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSBtZXRob2RzXG5hbmQgYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNsYXNzXG5zdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCBkaWN0aW9uYXJ5XG5pcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYCBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCBgYG1lbWJlcnNgYC5cblxuXG5DdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGVcbmBgaXNpbnN0YW5jZSgpYGAgYW5kIGBgaXNzdWJjbGFzcygpYGAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzIGBgYWJjLkFCQ01ldGFgYCBpbXBsZW1lbnRzIHRoZXNlIG1ldGhvZHNcbmluIG9yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGFzXG4idmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgYnVpbHQtaW5cbnR5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG5cbmNsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKWBgLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4gICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgYGBpc2luc3RhbmNlKClgYCBhbmRcbiAgICAgIGBgaXNzdWJjbGFzcygpYGAgYmVoYXZpb3IgdGhyb3VnaCBgYF9faW5zdGFuY2VjaGVja19fKClgYCBhbmRcbiAgICAgIGBgX19zdWJjbGFzc2NoZWNrX18oKWBgLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eVxuICAgICAgaW4gdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSBgYGFiY2BgXG4gICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCBgYHgoYXJnMSwgYXJnMiwgLi4uKWBgIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgYGB4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLilgYC5cblxuXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoIGBgMCA8PSBrIDwgTmBgXG53aGVyZSAqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoXG5kZWZpbmUgYSByYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlXG50aGUgbWV0aG9kcyBgYGtleXMoKWBgLCBgYHZhbHVlcygpYGAsIGBgaXRlbXMoKWBgLCBgYGdldCgpYGAsXG5gYGNsZWFyKClgYCwgYGBzZXRkZWZhdWx0KClgYCwgYGBwb3AoKWBgLCBgYHBvcGl0ZW0oKWBgLCBgYGNvcHkoKWBgLFxuYW5kIGBgdXBkYXRlKClgYCBiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3JcbnNlcXVlbmNlcywgaXQgc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9faXRlcl9fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZVxuY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsIGBgX19pdGVyX18oKWBgIHNob3VsZCBiZSB0aGUgc2FtZSBhc1xuYGBrZXlzKClgYDsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmFsdWVzLlxuXG5vYmplY3QuX19sZW5fXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGAuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgYGA+PWBgIDAuICBBbHNvLCBhbiBvYmplY3RcbiAgIHRoYXQgZG9lc25cJ3QgZGVmaW5lIGEgYGBfX2Jvb2xfXygpYGAgbWV0aG9kIGFuZCB3aG9zZSBgYF9fbGVuX18oKWBgXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy4gIEFcbiAgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGhcbiAgYGBOb25lYGAuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiBgYHNlbGZba2V5XWBgLiBGb3Igc2VxdWVuY2VcbiAgIHR5cGVzLCB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlXG4gICBjbGFzcyB3aXNoZXMgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZVxuICAgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLiBJZiAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsXG4gICBgYFR5cGVFcnJvcmBgIG1heSBiZSByYWlzZWQ7IGlmIG9mIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mXG4gICBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mXG4gICBuZWdhdGl2ZSB2YWx1ZXMpLCBgYEluZGV4RXJyb3JgYCBzaG91bGQgYmUgcmFpc2VkLiBGb3IgbWFwcGluZ1xuICAgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGUgY29udGFpbmVyKSwgYGBLZXlFcnJvcmBgXG4gICBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiBgYGZvcmBgIGxvb3BzIGV4cGVjdCB0aGF0IGFuIGBgSW5kZXhFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiBgYHNlbGZba2V5XWBgLiAgU2FtZSBub3RlIGFzIGZvclxuICAgYGBfX2dldGl0ZW1fXygpYGAuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgYGBfX2dldGl0ZW1fXygpYGBcbiAgIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCBgYGtleXMoKWBgLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgYGBfX3JldmVyc2VkX18oKWBgIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZVxuICAgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlXG4gICBwcm90b2NvbCAoYGBfX2xlbl9fKClgYCBhbmQgYGBfX2dldGl0ZW1fXygpYGApLiAgT2JqZWN0cyB0aGF0XG4gICBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbCBzaG91bGQgb25seSBwcm92aWRlXG4gICBgYF9fcmV2ZXJzZWRfXygpYGAgaWYgdGhleSBjYW4gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzXG4gICBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnkgYGByZXZlcnNlZCgpYGAuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzIChgYGluYGAgYW5kIGBgbm90IGluYGApIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAsIHRoZSBtZW1iZXJzaGlwXG4gICB0ZXN0IGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgYGBfX2l0ZXJfXygpYGAsIHRoZW4gdGhlIG9sZFxuICAgc2VxdWVuY2UgaXRlcmF0aW9uIHByb3RvY29sIHZpYSBgYF9fZ2V0aXRlbV9fKClgYCwgc2VlICp0aGlzXG4gICBzZWN0aW9uIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UqLlxuXG5cbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCArIHlgYCwgd2hlcmVcbiAgICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19hZGRfXygpYGAgbWV0aG9kLFxuICAgYGB4Ll9fYWRkX18oeSlgYCBpcyBjYWxsZWQuICBUaGUgYGBfX2Rpdm1vZF9fKClgYCBtZXRob2Qgc2hvdWxkIGJlXG4gICB0aGUgZXF1aXZhbGVudCB0byB1c2luZyBgYF9fZmxvb3JkaXZfXygpYGAgYW5kIGBgX19tb2RfXygpYGA7IGl0XG4gICBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gYGBfX3RydWVkaXZfXygpYGAuICBOb3RlIHRoYXRcbiAgIGBgX19wb3dfXygpYGAgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0IGFuIG9wdGlvbmFsIHRoaXJkXG4gICBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pbiBgYHBvdygpYGAgZnVuY3Rpb25cbiAgIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seVxuICAgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZ1xuICAgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3JcbiAgIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcyBhblxuICAgaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fcnN1Yl9fKClgYCBtZXRob2QsXG4gICBgYHkuX19yc3ViX18oeClgYCBpcyBjYWxsZWQgaWYgYGB4Ll9fc3ViX18oeSlgYCByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSBgYHBvdygpYGAgd2lsbCBub3QgdHJ5IGNhbGxpbmcgYGBfX3Jwb3dfXygpYGBcbiAgICh0aGUgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kXCdzXG4gICAgIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3NlcyB0b1xuICAgICBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsXG4gICBgYCoqPWBgLCBgYDw8PWBgLCBgYD4+PWBgLCBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHNcbiAgIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZFxuICAgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSxcbiAgICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV4ZWN1dGUgdGhlIHN0YXRlbWVudCBgYHggKz0geWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19pYWRkX18oeSlgYCBpc1xuICAgY2FsbGVkLiAgSWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBkZWZpbmUgYVxuICAgYGBfX2lhZGRfXygpYGAgbWV0aG9kLCBgYHguX19hZGRfXyh5KWBgIGFuZCBgYHkuX19yYWRkX18oeClgYCBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgYGB4ICsgeWBgLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgLWBgLCBgYCtgYCxcbiAgIGBgYWJzKClgYCBhbmQgYGB+YGApLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgY29tcGxleCgpYGAsXG4gICBgYGludCgpYGAsIGBgZmxvYXQoKWBgIGFuZCBgYHJvdW5kKClgYC4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZlxuICAgdGhlIGFwcHJvcHJpYXRlIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBgYG9wZXJhdG9yLmluZGV4KClgYC4gIEFsc28gY2FsbGVkIHdoZW5ldmVyXG4gICBQeXRob24gbmVlZHMgYW4gaW50ZWdlciBvYmplY3QgKHN1Y2ggYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlXG4gICBidWlsdC1pbiBgYGJpbigpYGAsIGBgaGV4KClgYCBhbmQgYGBvY3QoKWBgIGZ1bmN0aW9ucykuIE11c3QgcmV0dXJuXG4gICBhbiBpbnRlZ2VyLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgYGB3aXRoYGAgc3RhdGVtZW50LiBUaGUgY29udGV4dFxubWFuYWdlciBoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZVxuY29udGV4dCBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlXG5ub3JtYWxseSBpbnZva2VkIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4qVGhlIHdpdGggc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyXG5tZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBgYHdpdGhgYFxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgYGBOb25lYGAuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0IGBgX19leGl0X18oKWBgIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuXG5TcGVjaWFsIG1ldGhvZCBsb29rdXBcbj09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmUgb25seVxuZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3QgaW5cbnRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbiAgID4+PiBsZW4oYylcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgXCdDXCcgaGFzIG5vIGxlbigpXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiBzcGVjaWFsXG5tZXRob2RzIHN1Y2ggYXMgYGBfX2hhc2hfXygpYGAgYW5kIGBgX19yZXByX18oKWBgIHRoYXQgYXJlIGltcGxlbWVudGVkXG5ieSBhbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZlxudGhlc2UgbWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbFxud2hlbiBpbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgbWV0YWNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbiAgIC4uLiAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4gICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSBpbnN0YW5jZVxuICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSB0eXBlXG4gICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4gICAxMFxuXG5CeXBhc3NpbmcgdGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvblxucHJvdmlkZXMgc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZVxuaW50ZXJwcmV0ZXIsIGF0IHRoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mXG5zcGVjaWFsIG1ldGhvZHMgKHRoZSBzcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3Rcbml0c2VsZiBpbiBvcmRlciB0byBiZSBjb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEl0ICppcyogcG9zc2libGUgaW4gc29tZSBjYXNlcyB0byBjaGFuZ2UgYW4gb2JqZWN0XCdzIHR5cGUsIHVuZGVyXG4gICAgY2VydGFpbiBjb250cm9sbGVkIGNvbmRpdGlvbnMuIEl0IGdlbmVyYWxseSBpc25cJ3QgYSBnb29kIGlkZWFcbiAgICB0aG91Z2gsIHNpbmNlIGl0IGNhbiBsZWFkIHRvIHNvbWUgdmVyeSBzdHJhbmdlIGJlaGF2aW91ciBpZiBpdCBpc1xuICAgIGhhbmRsZWQgaW5jb3JyZWN0bHkuXG5cblsyXSBGb3Igb3BlcmFuZHMgb2YgdGhlIHNhbWUgdHlwZSwgaXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSBub24tXG4gICAgcmVmbGVjdGVkIG1ldGhvZCAoc3VjaCBhcyBgYF9fYWRkX18oKWBgKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzXG4gICAgbm90IHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZSByZWZsZWN0ZWQgbWV0aG9kIGlzIG5vdCBjYWxsZWQuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcblN0cmluZyBNZXRob2RzXG4qKioqKioqKioqKioqKlxuXG5TdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMsIGFsb25nIHdpdGhcbnRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuXG5TdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGFcbmxhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlIGBgc3RyLmZvcm1hdCgpYGAsXG4qRm9ybWF0IFN0cmluZyBTeW50YXgqIGFuZCAqU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyIGJhc2VkIG9uXG5DIGBgcHJpbnRmYGAgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciByYW5nZSBvZiB0eXBlc1xuYW5kIGlzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gZmFzdGVyIGZvciB0aGVcbmNhc2VzIGl0IGNhbiBoYW5kbGUgKCpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqKS5cblxuVGhlICpUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMqIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgY292ZXJzXG5hIG51bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCB1dGlsaXRpZXNcbihpbmNsdWRpbmcgcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlIGBgcmVgYCBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciBgYFwnXHhjM1x4OWZcJ2BgIGlzIGVxdWl2YWxlbnQgdG9cbiAgIGBgInNzImBgLiBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgYGBsb3dlcigpYGAgd291bGQgZG9cbiAgIG5vdGhpbmcgdG8gYGBcJ1x4YzNceDlmXCdgYDsgYGBjYXNlZm9sZCgpYGAgY29udmVydHMgaXQgdG8gYGAic3MiYGAuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzIGBgXCd1dGYtOFwnYGAuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuIE90aGVyXG4gICBwb3NzaWJsZSB2YWx1ZXMgYXJlIGBgXCdpZ25vcmVcJ2BgLCBgYFwncmVwbGFjZVwnYGAsXG4gICBgYFwneG1sY2hhcnJlZnJlcGxhY2VcJ2BgLCBgYFwnYmFja3NsYXNocmVwbGFjZVwnYGAgYW5kIGFueSBvdGhlciBuYW1lXG4gICByZWdpc3RlcmVkIHZpYSBgYGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpYGAsIHNlZSBzZWN0aW9uICpDb2RlYyBCYXNlXG4gICBDbGFzc2VzKi4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZFxuICAgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZlxuICAgc3VmZml4ZXMgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0XG4gICB0aGF0IHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IHplcm8gb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUaGUgY29sdW1uIG51bWJlciBpcyByZXNldCB0byB6ZXJvIGFmdGVyIGVhY2hcbiAgIG5ld2xpbmUgb2NjdXJyaW5nIGluIHRoZSBzdHJpbmcuIElmICp0YWJzaXplKiBpcyBub3QgZ2l2ZW4sIGEgdGFiXG4gICBzaXplIG9mIGBgOGBgIGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4gIFRoaXMgZG9lc25cJ3QgdW5kZXJzdGFuZCBvdGhlclxuICAgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgb3IgZXNjYXBlIHNlcXVlbmNlcy5cblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIGlmICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlIGBgZmluZCgpYGAgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vdyB0aGVcbiAgICAgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsIHVzZVxuICAgICB0aGUgYGBpbmBgIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgYGB7fWBgLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gYGBzdHIuZm9ybWF0KCoqbWFwcGluZylgYCwgZXhjZXB0IHRoYXQgYGBtYXBwaW5nYGAgaXNcbiAgIHVzZWQgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSBgYGRpY3RgYCAuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3JcbiAgIGV4YW1wbGUgYGBtYXBwaW5nYGAgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYGZpbmQoKWBgLCBidXQgcmFpc2UgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXJcbiAgIGBgY2BgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zIGBgVHJ1ZWBgOlxuICAgYGBjLmlzYWxwaGEoKWBgLCBgYGMuaXNkZWNpbWFsKClgYCwgYGBjLmlzZGlnaXQoKWBgLCBvclxuICAgYGBjLmlzbnVtZXJpYygpYGAuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuIGBgcmVwcigpYGAgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRlcnJgYC4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgYGBUeXBlRXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgYGBieXRlc2BgIG9iamVjdHMuXG4gICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgdGhpcyBtZXRob2QuXG5cbnN0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgc3RyLnRyYW5zbGF0ZSgpYGAuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYHJmaW5kKClgYCBidXQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKlxuICAgaXMgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICBgYE5vbmVgYCwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvclxuICAgc3BsaXR0aW5nIGZyb20gdGhlIHJpZ2h0LCBgYHJzcGxpdCgpYGAgYmVoYXZlcyBsaWtlIGBgc3BsaXQoKWBgXG4gICB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG5zdHIucnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICBcJyAgIHNwYWNpb3VzXCdcbiAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciBgYC0xYGAsIHRoZW4gdGhlcmUgaXNcbiAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgYGBcJzEsLDJcJy5zcGxpdChcJyxcJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJ1wnLCBcJzJcJ11gYCkuICBUaGUgKnNlcCpcbiAgIGFyZ3VtZW50IG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgYGBcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgKS4gU3BsaXR0aW5nXG4gICBhbiBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyBgYFtcJ1wnXWBgLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSBgYE5vbmVgYCBzZXBhcmF0b3IgcmV0dXJuc1xuICAgYGBbXWBgLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJyAxICAyICAgMyAgXCcuc3BsaXQoKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCxcbiAgIGFuZCBgYFwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSlgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzIgICAzICBcJ11gYC5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gVGhpcyBtZXRob2QgdXNlcyB0aGUgKnVuaXZlcnNhbCBuZXdsaW5lcyogYXBwcm9hY2ggdG9cbiAgIHNwbGl0dGluZyBsaW5lcy4gTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpYGAgcmV0dXJuc1xuICAgYGBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXWBgLCB3aGlsZSB0aGUgc2FtZSBjYWxsIHdpdGhcbiAgIGBgc3BsaXRsaW5lcyhUcnVlKWBgIHJldHVybnMgYGBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJyxcbiAgIFwna2xcXHJcXG5cJ11gYC5cblxuICAgVW5saWtlIGBgc3BsaXQoKWBgIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZS5cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZVxuICAgcmV0dXJuIGBgRmFsc2VgYC4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rXG4gICBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzXG4gICB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgIFwnc3BhY2lvdXNcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgdGhhdFxuICAgYGBzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzYGAuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIuemZpbGwod2lkdGgpXG5cbiAgIFJldHVybiB0aGUgbnVtZXJpYyBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCB6ZXJvcyBpbiBhIHN0cmluZyBvZlxuICAgbGVuZ3RoICp3aWR0aCouICBBIHNpZ24gcHJlZml4IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAgVGhlIG9yaWdpbmFsXG4gICBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYGBsZW4ocylgYC5cbicsCisgJ3N0cmluZ3MnOiAnXG5TdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblN0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4gICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIlxuICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnIHNob3J0c3RyaW5naXRlbSogXCciXCdcbiAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIGxvbmdzdHJpbmdpdGVtICA6Oj0gbG9uZ3N0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbiAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ3N0cmluZ2NoYXIgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuXG4gICBieXRlc2xpdGVyYWwgICA6Oj0gYnl0ZXNwcmVmaXgoc2hvcnRieXRlcyB8IGxvbmdieXRlcylcbiAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydGJ5dGVzaXRlbSogXCciXCdcbiAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbiAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuXG5PbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgdGhhdFxud2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSBgYHN0cmluZ3ByZWZpeGBgIG9yXG5gYGJ5dGVzcHJlZml4YGAgYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXRcbmlzIGRlZmluZWQgYnkgdGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZ1xuZGVjbGFyYXRpb24gaXMgZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmdcbmRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzIChgYFwnYGApIG9yIGRvdWJsZSBxdW90ZXMgKGBgImBgKS4gIFRoZXkgY2FuIGFsc28gYmVcbmVuY2xvc2VkIGluIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2VcbmFyZSBnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaFxuKGBgXFxgYCkgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCBgYFwnYlwnYGAgb3IgYGBcJ0JcJ2BgOyB0aGV5XG5wcm9kdWNlIGFuIGluc3RhbmNlIG9mIHRoZSBgYGJ5dGVzYGAgdHlwZSBpbnN0ZWFkIG9mIHRoZSBgYHN0cmBgIHR5cGUuXG5UaGV5IG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2ZcbjEyOCBvciBncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cblxuQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggdW5pY29kZSBzdHJpbmdzIHdpdGggYVxuYGB1YGAgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYDsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgKnJhdyBzdHJpbmdzKiBhbmRcbnRyZWF0IGJhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmdcbmxpdGVyYWxzLCBgYFwnXFxVXCdgYCBhbmQgYGBcJ1xcdVwnYGAgZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWRcbnNwZWNpYWxseS4gR2l2ZW4gdGhhdCBQeXRob24gMi54XCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZVxuZGlmZmVyZW50bHkgdGhhbiBQeXRob24gMy54XCdzIHRoZSBgYFwndXJcJ2BgIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYFwncmJcJ2BgIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzXG4gICBiZWVuIGFkZGVkIGFzIGEgc3lub255bSBvZiBgYFwnYnJcJ2BgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsXG4gICAoYGB1XCd2YWx1ZVwnYGApIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWxcbiAgIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuSW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIHN0cmluZy4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlXG5zdHJpbmcsIGkuZS4gZWl0aGVyIGBgXCdgYCBvciBgYCJgYC4pXG5cblVubGVzcyBhbiBgYFwnclwnYGAgb3IgYGBcJ1JcJ2BgIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluXG5zdHJpbmdzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZSB1c2VkIGJ5XG5TdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcXG5ld2xpbmVgYCAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxcXGBgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKGBgXFxgYCkgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxcJ2BgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKGBgXCdgYCkgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFwiYGAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoYGAiYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcYWBgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGJgYCAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxmYGAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcbmBgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHJgYCAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx0YGAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdmBgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG9vb2BgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx4aGhgYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxOe25hbWV9YGAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdXh4eHhgYCAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFV4eHh4eHh4eGBgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZSBieXRlXG4gICB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlcyBkZW5vdGUgYVxuICAgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhbiBiZVxuICAgZW5jb2RlZCB1c2luZyB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZVxuICAgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheSwgYnV0IGNoYXJhY3RlcnNcbiAgIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoQk1QKSB3aWxsIGJlIGVuY29kZWQgdXNpbmcgYVxuICAgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHRvIHVzZSAxNi1iaXQgY29kZSB1bml0cyAodGhlXG4gICBkZWZhdWx0KS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cblVubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gdGhlXG5zdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSBzdHJpbmcqLiAgKFRoaXNcbmJlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIG1pc3R5cGVkLFxudGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgYWxzb1xuaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nXG5saXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlc1xubGl0ZXJhbHMuXG5cbkV2ZW4gaW4gYSByYXcgc3RyaW5nLCBzdHJpbmcgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsXG5idXQgdGhlIGJhY2tzbGFzaCByZW1haW5zIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCBgYHIiXFwiImBgIGlzIGFcbnZhbGlkIHN0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhXG5kb3VibGUgcXVvdGU7IGBgciJcXCJgYCBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhd1xuc3RyaW5nIGNhbm5vdCBlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphXG5yYXcgc3RyaW5nIGNhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaFxud291bGQgZXNjYXBlIHRoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlXG5iYWNrc2xhc2ggZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzXG5hcyBwYXJ0IG9mIHRoZSBzdHJpbmcsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAogICdzdWJzY3JpcHRpb25zJzogJ1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb24sXG5lLmcuIGEgbGlzdCBvciBkaWN0aW9uYXJ5LiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC5cblxuRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0IHN1cHBvcnRcbnN1YnNjcmlwdGlvbjpcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgZXZhbHVhdGUgdG8gYW5cbm9iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCB0aGVcbnN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoYXRcbmtleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyBleGFjdGx5IG9uZVxuaXRlbS4pXG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0IGV2YWx1YXRlIHRvXG5hbiBpbnRlZ2VyIG9yIGEgc2xpY2UgKGFzIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLlxuXG5UaGUgZm9ybWFsIHN5bnRheCBtYWtlcyBubyBzcGVjaWFsIHByb3Zpc2lvbiBmb3IgbmVnYXRpdmUgaW5kaWNlcyBpblxuc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSBgYF9fZ2V0aXRlbV9fKClgYFxubWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgbGVuZ3RoIG9mIHRoZVxuc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0IGBgeFstMV1gYCBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2ZcbmBgeGBgKS4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuXG50aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGVcbml0ZW0gd2hvc2UgaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnRcbmZvciBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzXG5gYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QsIHN1YmNsYXNzZXMgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB3aWxsIG5lZWRcbnRvIGV4cGxpY2l0bHkgYWRkIHRoYXQgc3VwcG9ydC5cblxuQSBzdHJpbmdcJ3MgaXRlbXMgYXJlIGNoYXJhY3RlcnMuICBBIGNoYXJhY3RlciBpcyBub3QgYSBzZXBhcmF0ZSBkYXRhXG50eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAogICd0cnV0aCc6ICJcblRydXRoIFZhbHVlIFRlc3RpbmdcbioqKioqKioqKioqKioqKioqKipcblxuQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiBgYGlmYGAgb3JcbmBgd2hpbGVgYCBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiBUaGVcbmZvbGxvd2luZyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZmFsc2U6XG5cbiogYGBOb25lYGBcblxuKiBgYEZhbHNlYGBcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCBgYDBgYCwgYGAwLjBgYCwgYGAwamBgLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsIGBgJydgYCwgYGAoKWBgLCBgYFtdYGAuXG5cbiogYW55IGVtcHR5IG1hcHBpbmcsIGZvciBleGFtcGxlLCBgYHt9YGAuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gIGBgX19ib29sX18oKWBgIG9yIGBgX19sZW5fXygpYGAgbWV0aG9kLCB3aGVuIHRoYXQgbWV0aG9kIHJldHVybnMgdGhlXG4gIGludGVnZXIgemVybyBvciBgYGJvb2xgYCB2YWx1ZSBgYEZhbHNlYGAuIFsxXVxuXG5BbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyBhcmVcbmFsd2F5cyB0cnVlLlxuXG5PcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgYWx3YXlzXG5yZXR1cm4gYGAwYGAgb3IgYGBGYWxzZWBgIGZvciBmYWxzZSBhbmQgYGAxYGAgb3IgYGBUcnVlYGAgZm9yIHRydWUsXG51bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnNcbmBgb3JgYCBhbmQgYGBhbmRgYCBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4iLAotICd0cnknOiAnXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kXG5vZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHJhaXNlcyBhbm90aGVyXG5leGNlcHRpb24gb3IgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gIFRoZSBleGNlcHRpb25cbmluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGVcbmBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogJ1xuVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gIEV4dGVuc2lvblxubW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbmltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcblB5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgbnVtYmVycyxcbmVmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoIGFkZGl0aW9uc1xud2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cblxuU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG5cJ3NwZWNpYWwgYXR0cmlidXRlcy5cJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byB0aGVcbmltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyIGRlZmluaXRpb25cbm1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxuTm9uZVxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lIGBgTm9uZWBgLlxuICAgSXQgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLFxuICAgZS5nLiwgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb25cJ3QgZXhwbGljaXRseSByZXR1cm5cbiAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG5cbk5vdEltcGxlbWVudGVkXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbiAgIGBgTm90SW1wbGVtZW50ZWRgYC4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBtYXlcbiAgIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciB0aGVcbiAgIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZSByZWZsZWN0ZWRcbiAgIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvci4pICBJdHNcbiAgIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgYGAuLi5gYCBvciB0aGVcbiAgIGJ1aWx0LWluIG5hbWUgYGBFbGxpcHNpc2BgLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbmBgbnVtYmVycy5OdW1iZXJgYFxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgIGBgbnVtYmVycy5JbnRlZ3JhbGBgXG4gICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiBpbnRlZ2Vyc1xuICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG5cbiAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG5cbiAgICAgIEludGVnZXJzIChgYGludGBgKVxuXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbiAgICAgICAgIGF2YWlsYWJsZSAodmlydHVhbCkgbWVtb3J5IG9ubHkuICBGb3IgdGhlIHB1cnBvc2Ugb2Ygc2hpZnRcbiAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsIGFuZFxuICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDJcJ3NcbiAgICAgICAgIGNvbXBsZW1lbnQgd2hpY2ggZ2l2ZXMgdGhlIGlsbHVzaW9uIG9mIGFuIGluZmluaXRlIHN0cmluZyBvZlxuICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cblxuICAgICAgQm9vbGVhbnMgKGBgYm9vbGBgKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzIEZhbHNlIGFuZCBUcnVlIGFyZSB0aGUgb25seVxuICAgICAgICAgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGUgaW50ZWdlclxuICAgICAgICAgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCBhbmQgMSxcbiAgICAgICAgIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiBiZWluZ1xuICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgYGAiRmFsc2UiYGAgb3JcbiAgICAgICAgIGBgIlRydWUiYGAgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgIGBgbnVtYmVycy5SZWFsYGAgKGBgZmxvYXRgYClcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnRcbiAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbiAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCBzaW5nbGUtXG4gICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yIGFuZFxuICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgaXNcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICBgYG51bWJlcnMuQ29tcGxleGBgIChgYGNvbXBsZXhgYClcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbiAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgYXBwbHlcbiAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIGFcbiAgICAgIGNvbXBsZXggbnVtYmVyIGBgemBgIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzIGBgei5yZWFsYGAgYW5kIGBgei5pbWFnYGAuXG5cblNlcXVlbmNlc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbiAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mXG4gICBpdGVtcyBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZVxuICAgaW5kZXggc2V0IGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZlxuICAgc2VxdWVuY2UgKmEqIGlzIHNlbGVjdGVkIGJ5IGBgYVtpXWBgLlxuXG4gICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6IGBgYVtpOmpdYGAgc2VsZWN0cyBhbGwgaXRlbXMgd2l0aFxuICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogYGA8PWBgICprKiBgYDxgYCAqaiouICBXaGVuIHVzZWQgYXMgYW5cbiAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyBpbXBsaWVzXG4gICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuXG4gICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAic3RlcCJcbiAgIHBhcmFtZXRlcjogYGBhW2k6ajprXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KlxuICAgd2hlcmUgYGB4ID0gaSArIG4qa2BgLCAqbiogYGA+PWBgIGBgMGBgIGFuZCAqaSogYGA8PWBgICp4KiBgYDxgYFxuICAgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgc3RyaW5nIG9iamVjdCBhcmUgVW5pY29kZSBjb2RlIHVuaXRzLiAgQVxuICAgICAgICAgVW5pY29kZSBjb2RlIHVuaXQgaXMgcmVwcmVzZW50ZWQgYnkgYSBzdHJpbmcgb2JqZWN0IG9mIG9uZVxuICAgICAgICAgaXRlbSBhbmQgY2FuIGhvbGQgZWl0aGVyIGEgMTYtYml0IG9yIDMyLWJpdCB2YWx1ZVxuICAgICAgICAgcmVwcmVzZW50aW5nIGEgVW5pY29kZSBvcmRpbmFsICh0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlXG4gICAgICAgICBvcmRpbmFsIGlzIGdpdmVuIGluIGBgc3lzLm1heHVuaWNvZGVgYCwgYW5kIGRlcGVuZHMgb24gaG93XG4gICAgICAgICBQeXRob24gaXMgY29uZmlndXJlZCBhdCBjb21waWxlIHRpbWUpLiAgU3Vycm9nYXRlIHBhaXJzIG1heVxuICAgICAgICAgYmUgcHJlc2VudCBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZCB3aWxsIGJlIHJlcG9ydGVkIGFzIHR3b1xuICAgICAgICAgc2VwYXJhdGUgaXRlbXMuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgY2hyKClgYCBhbmRcbiAgICAgICAgIGBgb3JkKClgYCBjb252ZXJ0IGJldHdlZW4gY29kZSB1bml0cyBhbmQgbm9ubmVnYXRpdmUgaW50ZWdlcnNcbiAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZSBvcmRpbmFscyBhcyBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICAgICAgICBTdGFuZGFyZCAzLjAuIENvbnZlcnNpb24gZnJvbSBhbmQgdG8gb3RoZXIgZW5jb2RpbmdzIGFyZVxuICAgICAgICAgcG9zc2libGUgdGhyb3VnaCB0aGUgc3RyaW5nIG1ldGhvZCBgYGVuY29kZSgpYGAuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgICAgIEJ5dGVzXG4gICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlIDgtYml0XG4gICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbiAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlIGBgYlwnYWJjXCdgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICBgYGJ5dGVzKClgYCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4gICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSBgYGRlY29kZSgpYGBcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgYGBkZWxgYCAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiBgYGJ5dGVhcnJheSgpYGAgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSBgYGFycmF5YGAgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mXG4gICAgICBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGBcbiAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlIGZhc3RcbiAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbiAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cblxuICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yXG4gICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgYGAxLjBgYCksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHNldCgpYGAgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHNldmVyYWxcbiAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgYGBhZGQoKWBgLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gYGBmcm96ZW5zZXQoKWBgIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXNcbiAgICAgIGltbXV0YWJsZSBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZlxuICAgICAgYW5vdGhlciBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiBgYGFba11gYCBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnlcbiAgIGBga2BgIGZyb20gdGhlIG1hcHBpbmcgYGBhYGA7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kXG4gICBhcyB0aGUgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yIGBgZGVsYGAgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluXG4gICBmdW5jdGlvbiBgYGxlbigpYGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgYGAxYGAgYW5kXG4gICAgICBgYDEuMGBgKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4gICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuXG4gICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlIGBgey4uLn1gYFxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyBgYGRibS5uZGJtYGAgYW5kIGBgZGJtLmdudWBgIHByb3ZpZGVcbiAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGVcbiAgICAgIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8IGBgX19kb2NfX2BgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgYGBOb25lYGAgaWYgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX25hbWVfX2BgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX21vZHVsZV9fYGAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19kZWZhdWx0c19fYGAgICAgICAgICAgfCBBIHR1cGxlIGNvbnRhaW5pbmcgZGVmYXVsdCAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciBgYE5vbmVgYCBpZiBubyBhcmd1bWVudHMgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19jb2RlX19gYCAgICAgICAgICAgICAgfCBUaGUgY29kZSBvYmplY3QgcmVwcmVzZW50aW5nICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19nbG9iYWxzX19gYCAgICAgICAgICAgfCBBIHJlZmVyZW5jZSB0byB0aGUgZGljdGlvbmFyeSAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb25cJ3MgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGljdF9fYGAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY2xvc3VyZV9fYGAgICAgICAgICAgIHwgYGBOb25lYGAgb3IgYSB0dXBsZSBvZiBjZWxscyAgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvblwncyBmcmVlIHZhcmlhYmxlcy4gICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19hbm5vdGF0aW9uc19fYGAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgcGFyYW1ldGVycy4gIFRoZSBrZXlzIG9mIHRoZSB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciBgYFwncmV0dXJuXCdgYCBmb3IgdGhlIHJldHVybiAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbm5vdGF0aW9uLCBpZiBwcm92aWRlZC4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2t3ZGVmYXVsdHNfX2BgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcblxuICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mIHRoZVxuICAgICAgYXNzaWduZWQgdmFsdWUuXG5cbiAgICAgIEZ1bmN0aW9uIG9iamVjdHMgYWxzbyBzdXBwb3J0IGdldHRpbmcgYW5kIHNldHRpbmcgYXJiaXRyYXJ5XG4gICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCBtZXRhZGF0YVxuICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gZ2V0IGFuZFxuICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5XG4gICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuIEZ1bmN0aW9uXG4gICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuICAgICAgZnV0dXJlLipcblxuICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uXCdzIGRlZmluaXRpb24gY2FuIGJlXG4gICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgaW50ZXJuYWxcbiAgICAgIHR5cGVzIGJlbG93LlxuXG4gICBJbnN0YW5jZSBtZXRob2RzXG4gICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgYW5kXG4gICAgICBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbikuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgX19zZWxmX19gYCBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgYGBfX2Z1bmNfX2BgIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7IGBgX19kb2NfX2BgIGlzIHRoZVxuICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX2RvY19fYGApO1xuICAgICAgYGBfX25hbWVfX2BgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyBgYF9fZnVuY19fLl9fbmFtZV9fYGApO1xuICAgICAgYGBfX21vZHVsZV9fYGAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkXG4gICAgICBpbiwgb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuXG5cbiAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgYXJiaXRyYXJ5XG4gICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgVXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3RzIG1heSBiZSBjcmVhdGVkIHdoZW4gZ2V0dGluZyBhblxuICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCBpZlxuICAgICAgdGhhdCBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IG9yIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSB1c2VyLVxuICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzIGluc3RhbmNlcyxcbiAgICAgIGl0cyBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBtZXRob2RcbiAgICAgIG9iamVjdCBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgYGBfX2Z1bmNfX2BgXG4gICAgICBhdHRyaWJ1dGUgaXMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgYGBfX2Z1bmNfX2BgXG4gICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCBvYmplY3RcbiAgICAgIGJ1dCBpdHMgYGBfX2Z1bmNfX2BgIGF0dHJpYnV0ZS5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzIGBgX19zZWxmX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgYGBfX2Z1bmNfX2BgIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbiAoYGBfX2Z1bmNfX2BgKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIChgYF9fc2VsZl9fYGApIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLFxuICAgICAgd2hlbiBgYENgYCBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvblxuICAgICAgYGBmKClgYCwgYW5kIGBgeGBgIGlzIGFuIGluc3RhbmNlIG9mIGBgQ2BgLCBjYWxsaW5nIGBgeC5mKDEpYGBcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgYEMuZih4LCAxKWBgLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiBgYF9fc2VsZl9fYGAgd2lsbFxuICAgICAgYWN0dWFsbHkgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciBgYHguZigxKWBgXG4gICAgICBvciBgYEMuZigxKWBgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBgYGYoQywxKWBgIHdoZXJlIGBgZmBgIGlzXG4gICAgICB0aGUgdW5kZXJseWluZyBmdW5jdGlvbi5cblxuICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byBpbnN0YW5jZVxuICAgICAgbWV0aG9kIG9iamVjdCBoYXBwZW5zIGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZCBmcm9tXG4gICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuICAgICAgYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2FsbCB0aGF0IGxvY2FsXG4gICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyBmb3JcbiAgICAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM7IG90aGVyIGNhbGxhYmxlIG9iamVjdHMgKGFuZCBhbGwgbm9uLVxuICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgaXNcbiAgICAgIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHdoaWNoIGFyZVxuICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4gICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuIGF0dHJpYnV0ZVxuICAgICAgb2YgdGhlIGNsYXNzLlxuXG4gICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4gICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgYGBfX25leHRfXygpYGAgbWV0aG9kIHdpbGwgY2F1c2UgdGhlIGZ1bmN0aW9uIHRvXG4gICAgICBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQuXG4gICAgICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhIGBgcmV0dXJuYGAgc3RhdGVtZW50IG9yIGZhbGxzIG9mZlxuICAgICAgdGhlIGVuZCwgYSBgYFN0b3BJdGVyYXRpb25gYCBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGVcbiAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gYmVcbiAgICAgIHJldHVybmVkLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSBgYGxlbigpYGAgYW5kIGBgbWF0aC5zaW4oKWBgXG4gICAgICAoYGBtYXRoYGAgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6IGBgX19kb2NfX2BgIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4gICAgICBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlOyBgYF9fbmFtZV9fYGAgaXMgdGhlXG4gICAgICBmdW5jdGlvblwncyBuYW1lOyBgYF9fc2VsZl9fYGAgaXMgc2V0IHRvIGBgTm9uZWBgIChidXQgc2VlIHRoZVxuICAgICAgbmV4dCBpdGVtKTsgYGBfX21vZHVsZV9fYGAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGVcbiAgICAgIGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICBCdWlsdC1pbiBtZXRob2RzXG4gICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCB0aGlzXG4gICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4gICAgICBgYGFsaXN0LmFwcGVuZCgpYGAsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSBgYF9fc2VsZl9fYGAgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgYGBfX25ld19fKClgYC4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4gICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gYGBfX25ld19fKClgYCBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4gICAgICBgYF9faW5pdF9fKClgYCB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhIGBgX19jYWxsX18oKWBgIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cblxuTW9kdWxlc1xuICAgTW9kdWxlcyBhcmUgaW1wb3J0ZWQgYnkgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IChzZWUgc2VjdGlvbiAqVGhlXG4gICBpbXBvcnQgc3RhdGVtZW50KikuIEEgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnlcbiAgIGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGVcbiAgIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS5cbiAgIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnhgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdYGAuIEEgbW9kdWxlIG9iamVjdFxuICAgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZSBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGVcbiAgIChzaW5jZSBpdCBpc25cJ3QgbmVlZGVkIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksXG4gICBlLmcuLCBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLlxuXG4gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IGBgX19kaWN0X19gYCBpcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZVxuICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBCZWNhdXNlIG9mIHRoZSB3YXkgQ1B5dGhvblxuICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlIGNsZWFyZWRcbiAgIHdoZW4gdGhlIG1vZHVsZSBmYWxscyBvdXQgb2Ygc2NvcGUgZXZlbiBpZiB0aGUgZGljdGlvbmFyeSBzdGlsbCBoYXNcbiAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCB0aGVcbiAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiBgYF9fbmFtZV9fYGAgaXMgdGhlIG1vZHVsZVwnc1xuICAgbmFtZTsgYGBfX2RvY19fYGAgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGBcbiAgIGlmIHVuYXZhaWxhYmxlOyBgYF9fZmlsZV9fYGAgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2hcbiAgIHRoZSBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlXG4gICBgYF9fZmlsZV9fYGAgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50IGZvciBDIG1vZHVsZXMgdGhhdCBhcmVcbiAgIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXNcbiAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGVcbiAgIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYEMueGBgIGlzIHRyYW5zbGF0ZWQgdG9cbiAgIGBgQy5fX2RpY3RfX1sieCJdYGAgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaFxuICAgYWxsb3cgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGVcbiAgIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgYGBDYGAsIHNheSkgd291bGQgeWllbGRcbiAgIGEgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlcyBpcyBgYENgYC4gIFdoZW4gaXQgd291bGQgeWllbGRcbiAgIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkXG4gICBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyBgYF9fZGljdF9fYGAuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBjbGFzcyBuYW1lOyBgYF9fbW9kdWxlX19gYFxuICAgaXMgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgYGBfX2RpY3RfX2BgIGlzXG4gICB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7IGBgX19iYXNlc19fYGAgaXMgYVxuICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsXG4gICBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0O1xuICAgYGBfX2RvY19fYGAgaXMgdGhlIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmXG4gICB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzXG4gICBgYF9fZGljdF9fYGAuICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzXG4gICBjbGFzcyBoYXMgYSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlXG4gICBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgYGBfX3NldGF0dHJfXygpYGAgb3IgYGBfX2RlbGF0dHJfXygpYGAgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX2RpY3RfX2BgIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgIGBgX19jbGFzc19fYGAgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgYGBvcGVuKClgYCBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvIGBgb3MucG9wZW4oKWBgLCBgYG9zLmZkb3BlbigpYGAsIGFuZCB0aGUgYGBtYWtlZmlsZSgpYGBcbiAgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgYGBzeXMuc3RkaW5gYCwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgIGBgaW8uVGV4dElPQmFzZWBgIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBjb19uYW1lYGAgZ2l2ZXMgdGhlIGZ1bmN0aW9uXG4gICAgICBuYW1lOyBgYGNvX2FyZ2NvdW50YGAgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAgKGluY2x1ZGluZyBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7IGBgY29fbmxvY2Fsc2BgIGlzIHRoZVxuICAgICAgbnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMpOyBgYGNvX3Zhcm5hbWVzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZlxuICAgICAgdGhlIGxvY2FsIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpO1xuICAgICAgYGBjb19jZWxsdmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7XG4gICAgICBgYGNvX2ZyZWV2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlXG4gICAgICB2YXJpYWJsZXM7IGBgY29fY29kZWBgIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgYGBjb19jb25zdHNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG4gICAgICBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19uYW1lc2BgIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX2ZpbGVuYW1lYGAgaXNcbiAgICAgIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgIGBgY29fZmlyc3RsaW5lbm9gYCBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgYGBjb19sbm90YWJgYCBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgYGBjb19zdGFja3NpemVgYCBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyBgYGNvX2ZsYWdzYGAgaXMgYW4gaW50ZWdlciBlbmNvZGluZ1xuICAgICAgYSBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yIGBgY29fZmxhZ3NgYDogYml0XG4gICAgICBgYDB4MDRgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKmFyZ3VtZW50c2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdFxuICAgICAgYGAweDA4YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCoqa2V5d29yZHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHM7IGJpdCBgYDB4MjBgYCBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zIChgYGZyb20gX19mdXR1cmVfXyBpbXBvcnRcbiAgICAgIGRpdmlzaW9uYGApIGFsc28gdXNlIGJpdHMgaW4gYGBjb19mbGFnc2BgIHRvIGluZGljYXRlIHdoZXRoZXIgYVxuICAgICAgY29kZSBvYmplY3Qgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0XG4gICAgICBgYDB4MjAwMGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlXG4gICAgICBkaXZpc2lvbiBlbmFibGVkOyBiaXRzIGBgMHgxMGBgIGFuZCBgYDB4MTAwMGBgIHdlcmUgdXNlZCBpblxuICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gYGBjb19mbGFnc2BgIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgIGBgY29fY29uc3RzYGAgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBmX2JhY2tgYCBpcyB0byB0aGUgcHJldmlvdXNcbiAgICAgIHN0YWNrIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciBgYE5vbmVgYCBpZiB0aGlzIGlzIHRoZVxuICAgICAgYm90dG9tIHN0YWNrIGZyYW1lOyBgYGZfY29kZWBgIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZFxuICAgICAgaW4gdGhpcyBmcmFtZTsgYGBmX2xvY2Fsc2BgIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cFxuICAgICAgbG9jYWwgdmFyaWFibGVzOyBgYGZfZ2xvYmFsc2BgIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICBgYGZfYnVpbHRpbnNgYCBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lcztcbiAgICAgIGBgZl9sYXN0aWBgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG9cbiAgICAgIHRoZSBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiBgYGZfdHJhY2VgYCwgaWYgbm90IGBgTm9uZWBgLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyBgYGZfbGluZW5vYGAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgIG9mIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb25cbiAgICAgIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQVxuICAgICAgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudClcbiAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgYGBzeXMuZXhjX2luZm8oKWBgLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zXG4gICAgICBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5XG4gICAgICBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpc1xuICAgICAgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXNcbiAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgdGJfbmV4dGBgIGlzIHRoZSBuZXh0IGxldmVsIGluXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkKSwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgYGB0Yl9mcmFtZWBgXG4gICAgICBwb2ludHMgdG8gdGhlIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDtcbiAgICAgIGBgdGJfbGluZW5vYGAgZ2l2ZXMgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkOyBgYHRiX2xhc3RpYGAgaW5kaWNhdGVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlXG4gICAgICBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXJcbiAgICAgIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZSBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQgaW4gYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIG5vIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2VcbiAgICAgIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciBgYF9fZ2V0aXRlbV9fKClgYFxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gYGBzbGljZSgpYGBcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHN0YXJ0YGAgaXMgdGhlIGxvd2VyIGJvdW5kO1xuICAgICAgYGBzdG9wYGAgaXMgdGhlIHVwcGVyIGJvdW5kOyBgYHN0ZXBgYCBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpc1xuICAgICAgYGBOb25lYGAgaWYgb21pdHRlZC4gVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgIGBgc3RhdGljbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiBgYGNsYXNzbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cbicsCisgJ3RyeSc6ICdcblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCBpdCBpc1xucmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgXG5jbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgc2V0IGFzIHRoZVxuY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbjsgaWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBleGVjdXRlcyBhXG5gYHJldHVybmBgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAorICd0eXBlcyc6ICdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSBgYE5vbmVgYC5cbiAgIEl0IGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucyxcbiAgIGUuZy4sIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICBgYE5vdEltcGxlbWVudGVkYGAuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsIGBgLi4uYGAgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lIGBgRWxsaXBzaXNgYC4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5gYG51bWJlcnMuTnVtYmVyYGBcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICBgYG51bWJlcnMuSW50ZWdyYWxgYFxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoYGBpbnRgYClcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zIChgYGJvb2xgYClcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZSBhcmUgdGhlIG9ubHlcbiAgICAgICAgIEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlIGludGVnZXJcbiAgICAgICAgIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGBgIkZhbHNlImBgIG9yXG4gICAgICAgICBgYCJUcnVlImBgIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICBgYG51bWJlcnMuUmVhbGBgIChgYGZsb2F0YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGlzXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgYGBudW1iZXJzLkNvbXBsZXhgYCAoYGBjb21wbGV4YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciBgYHpgYCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyBgYHoucmVhbGBgIGFuZCBgYHouaW1hZ2BgLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZlxuICAgaXRlbXMgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGVcbiAgIGluZGV4IHNldCBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2ZcbiAgIHNlcXVlbmNlICphKiBpcyBzZWxlY3RlZCBieSBgYGFbaV1gYC5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiBgYGFbaTpqXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqIGBgPD1gYCAqayogYGA8YGAgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6IGBgYVtpOmo6a11gYCBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCpcbiAgIHdoZXJlIGBgeCA9IGkgKyBuKmtgYCwgKm4qIGBgPj1gYCBgYDBgYCBhbmQgKmkqIGBgPD1gYCAqeCogYGA8YGBcbiAgICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGVcbiAgICAgICAgIGNvZGVwb2ludHMuIEFsbCB0aGUgY29kZXBvaW50cyBpbiByYW5nZSBgYFUrMDAwMCAtIFUrMTBGRkZGYGBcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGFcbiAgICAgICAgIGBgY2hyYGAgdHlwZSwgYW5kIGV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlzXG4gICAgICAgICByZXByZXNlbnRlZCBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggYGAxYGAuICBUaGUgYnVpbHQtXG4gICAgICAgICBpbiBmdW5jdGlvbiBgYG9yZCgpYGAgY29udmVydHMgYSBjaGFyYWN0ZXIgdG8gaXRzIGNvZGVwb2ludFxuICAgICAgICAgKGFzIGFuIGludGVnZXIpOyBgYGNocigpYGAgY29udmVydHMgYW4gaW50ZWdlciBpbiByYW5nZSBgYDAgLVxuICAgICAgICAgMTBGRkZGYGAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiBgYHN0ci5lbmNvZGUoKWBgIGNhblxuICAgICAgICAgYmUgdXNlZCB0byBjb252ZXJ0IGEgYGBzdHJgYCB0byBgYGJ5dGVzYGAgdXNpbmcgdGhlIGdpdmVuXG4gICAgICAgICBlbmNvZGluZywgYW5kIGBgYnl0ZXMuZGVjb2RlKClgYCBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZVxuICAgICAgICAgb3Bwb3NpdGUuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgICAgIEJ5dGVzXG4gICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlIDgtYml0XG4gICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbiAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlIGBgYlwnYWJjXCdgYCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICBgYGJ5dGVzKClgYCBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4gICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSBgYGRlY29kZSgpYGBcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgYGBkZWxgYCAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiBgYGJ5dGVhcnJheSgpYGAgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSBgYGFycmF5YGAgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mXG4gICAgICBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGxlbigpYGBcbiAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlIGZhc3RcbiAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbiAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cblxuICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yXG4gICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgYGAxLjBgYCksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHNldCgpYGAgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHNldmVyYWxcbiAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgYGBhZGQoKWBgLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gYGBmcm96ZW5zZXQoKWBgIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXNcbiAgICAgIGltbXV0YWJsZSBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZlxuICAgICAgYW5vdGhlciBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiBgYGFba11gYCBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnlcbiAgIGBga2BgIGZyb20gdGhlIG1hcHBpbmcgYGBhYGA7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kXG4gICBhcyB0aGUgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yIGBgZGVsYGAgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluXG4gICBmdW5jdGlvbiBgYGxlbigpYGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgYGAxYGAgYW5kXG4gICAgICBgYDEuMGBgKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4gICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuXG4gICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlIGBgey4uLn1gYFxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyBgYGRibS5uZGJtYGAgYW5kIGBgZGJtLmdudWBgIHByb3ZpZGVcbiAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGVcbiAgICAgIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8IGBgX19kb2NfX2BgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgYGBOb25lYGAgaWYgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX25hbWVfX2BgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX3F1YWxuYW1lX19gYCAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkIG5hbWUqIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19tb2R1bGVfX2BgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGVmYXVsdHNfX2BgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgbm8gYXJndW1lbnRzICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhhdmUgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY29kZV9fYGAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZ2xvYmFsc19fYGAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RpY3RfX2BgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Nsb3N1cmVfX2BgICAgICAgICAgICB8IGBgTm9uZWBgIG9yIGEgdHVwbGUgb2YgY2VsbHMgICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fYW5ub3RhdGlvbnNfX2BgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBcJ3JldHVyblwnYGAgZm9yIHRoZSByZXR1cm4gIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19rd2RlZmF1bHRzX19gYCAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYF9fc2VsZl9fYGAgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsIGBgX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyBgYF9fZG9jX19gYCBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzIGBgX19mdW5jX18uX19kb2NfX2BgKTtcbiAgICAgIGBgX19uYW1lX19gYCBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX25hbWVfX2BgKTtcbiAgICAgIGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZFxuICAgICAgaW4sIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kXG4gICAgICBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyBgYF9fc2VsZl9fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKGBgX19mdW5jX19gYCkgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoYGBfX3NlbGZfX2BgKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSxcbiAgICAgIHdoZW4gYGBDYGAgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb25cbiAgICAgIGBgZigpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYENgYCwgY2FsbGluZyBgYHguZigxKWBgXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBDLmYoeCwgMSlgYC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gYGBfX3NlbGZfX2BgIHdpbGxcbiAgICAgIGFjdHVhbGx5IGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgYGB4LmYoMSlgYFxuICAgICAgb3IgYGBDLmYoMSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBmKEMsMSlgYCB3aGVyZSBgYGZgYCBpc1xuICAgICAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzIGBgX19uZXh0X18oKWBgIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuICAgICAgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50LlxuICAgICAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSBgYHJldHVybmBgIHN0YXRlbWVudCBvciBmYWxscyBvZmZcbiAgICAgIHRoZSBlbmQsIGEgYGBTdG9wSXRlcmF0aW9uYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgYGBsZW4oKWBgIGFuZCBgYG1hdGguc2luKClgYFxuICAgICAgKGBgbWF0aGBgIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiBgYF9fZG9jX19gYCBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZTsgYGBfX25hbWVfX2BgIGlzIHRoZVxuICAgICAgZnVuY3Rpb25cJ3MgbmFtZTsgYGBfX3NlbGZfX2BgIGlzIHNldCB0byBgYE5vbmVgYCAoYnV0IHNlZSB0aGVcbiAgICAgIG5leHQgaXRlbSk7IGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlXG4gICAgICBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgYGBhbGlzdC5hcHBlbmQoKWBgLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgYGBfX3NlbGZfX2BgIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlIGBgX19uZXdfXygpYGAuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgYGBfX2luaXRfXygpYGAgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSBgYF9fY2FsbF9fKClgYCBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSBgYGltcG9ydGBgXG4gICBzdGF0ZW1lbnQgKHNlZSBgYGltcG9ydGBgKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuICAgYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgYW5kIGJ1aWx0LWluIGBgX19pbXBvcnRfXygpYGAuICBBXG4gICBtb2R1bGUgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0XG4gICAodGhpcyBpcyB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZ2xvYmFsc19fYGAgYXR0cmlidXRlXG4gICBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpc1xuICAgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpblxuICAgdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc25cJ3RcbiAgIG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiBgYF9fZGljdF9fYGAgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBtb2R1bGVcJ3NcbiAgIG5hbWU7IGBgX19kb2NfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgXG4gICBpZiB1bmF2YWlsYWJsZTsgYGBfX2ZpbGVfX2BgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoXG4gICB0aGUgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZVxuICAgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLFxuICAgc3VjaCBhcyBDIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7XG4gICBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXRcbiAgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgQy54YGAgaXMgdHJhbnNsYXRlZCB0b1xuICAgYGBDLl9fZGljdF9fWyJ4Il1gYCAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoXG4gICBhbGxvdyBmb3Igb3RoZXIgbWVhbnMgb2YgbG9jYXRpbmcgYXR0cmlidXRlcykuIFdoZW4gdGhlIGF0dHJpYnV0ZVxuICAgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuICAgY2xhc3Nlcy4gVGhpcyBzZWFyY2ggb2YgdGhlIGJhc2UgY2xhc3NlcyB1c2VzIHRoZSBDMyBtZXRob2RcbiAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2ZcbiAgIFwnZGlhbW9uZFwnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4gICBpbmhlcml0YW5jZSBwYXRocyBsZWFkaW5nIGJhY2sgdG8gYSBjb21tb24gYW5jZXN0b3IuIEFkZGl0aW9uYWxcbiAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4gICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbiAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyBgYENgYCwgc2F5KSB3b3VsZCB5aWVsZFxuICAgYSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuICAgb2JqZWN0IHdob3NlIGBgX19zZWxmX19gYCBhdHRyaWJ1dGVzIGlzIGBgQ2BgLiAgV2hlbiBpdCB3b3VsZCB5aWVsZFxuICAgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWRcbiAgIGJ5IHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzIGBgX19kaWN0X19gYC5cblxuICAgQ2xhc3MgYXR0cmlidXRlIGFzc2lnbm1lbnRzIHVwZGF0ZSB0aGUgY2xhc3NcJ3MgZGljdGlvbmFyeSwgbmV2ZXJcbiAgIHRoZSBkaWN0aW9uYXJ5IG9mIGEgYmFzZSBjbGFzcy5cblxuICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzIGluc3RhbmNlXG4gICAoc2VlIGJlbG93KS5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiBgYF9fbmFtZV9fYGAgaXMgdGhlIGNsYXNzIG5hbWU7IGBgX19tb2R1bGVfX2BgXG4gICBpcyB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyBgYF9fZGljdF9fYGAgaXNcbiAgIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgYGBfX2Jhc2VzX19gYCBpcyBhXG4gICB0dXBsZSAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcyxcbiAgIGluIHRoZSBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7XG4gICBgYF9fZG9jX19gYCBpcyB0aGUgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWZcbiAgIHVuZGVmaW5lZC5cblxuQ2xhc3MgaW5zdGFuY2VzXG4gICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlIGFib3ZlKS5cbiAgIEEgY2xhc3MgaW5zdGFuY2UgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGFzIGEgZGljdGlvbmFyeSB3aGljaFxuICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbiAgIFdoZW4gYW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZCB0aGVyZSwgYW5kIHRoZSBpbnN0YW5jZVwncyBjbGFzcyBoYXNcbiAgIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUsIHRoZSBzZWFyY2ggY29udGludWVzIHdpdGggdGhlIGNsYXNzXG4gICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhIHVzZXItZGVmaW5lZFxuICAgZnVuY3Rpb24gb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3RcbiAgIHdob3NlIGBgX19zZWxmX19gYCBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3NcbiAgIGBgX19kaWN0X19gYC4gIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3NcbiAgIGNsYXNzIGhhcyBhIGBgX19nZXRhdHRyX18oKWBgIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGVcbiAgIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICBgYF9fc2V0YXR0cl9fKClgYCBvciBgYF9fZGVsYXR0cl9fKClgYCBtZXRob2QsIHRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHVwZGF0aW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciBtYXBwaW5nc1xuICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuICAgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKi5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiBgYF9fZGljdF9fYGAgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgYGBfX2NsYXNzX19gYCBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkkvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbiAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSBgYG9wZW4oKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLFxuICAgYW5kIGFsc28gYGBvcy5wb3BlbigpYGAsIGBgb3MuZmRvcGVuKClgYCwgYW5kIHRoZSBgYG1ha2VmaWxlKClgYFxuICAgbWV0aG9kIG9mIHNvY2tldCBvYmplY3RzIChhbmQgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kc1xuICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuXG4gICBUaGUgb2JqZWN0cyBgYHN5cy5zdGRpbmBgLCBgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgYXJlXG4gICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXJcJ3NcbiAgIHN0YW5kYXJkIGlucHV0LCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXM7IHRoZXkgYXJlIGFsbCBvcGVuIGluIHRleHRcbiAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuICAgYGBpby5UZXh0SU9CYXNlYGAgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYGNvX25hbWVgYCBnaXZlcyB0aGUgZnVuY3Rpb25cbiAgICAgIG5hbWU7IGBgY29fYXJnY291bnRgYCBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4gICAgICAoaW5jbHVkaW5nIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgYGBjb19ubG9jYWxzYGAgaXMgdGhlXG4gICAgICBudW1iZXIgb2YgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmdcbiAgICAgIGFyZ3VtZW50cyk7IGBgY29fdmFybmFtZXNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mXG4gICAgICB0aGUgbG9jYWwgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7XG4gICAgICBgYGNvX2NlbGx2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbFxuICAgICAgdmFyaWFibGVzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkgbmVzdGVkIGZ1bmN0aW9ucztcbiAgICAgIGBgY29fZnJlZXZhcnNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWVcbiAgICAgIHZhcmlhYmxlczsgYGBjb19jb2RlYGAgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZlxuICAgICAgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyBgYGNvX2NvbnN0c2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGVcbiAgICAgIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX25hbWVzYGAgaXMgYSB0dXBsZVxuICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7IGBgY29fZmlsZW5hbWVgYCBpc1xuICAgICAgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgYGBjb19maXJzdGxpbmVub2BgIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4gICAgICBgYGNvX2xub3RhYmBgIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbiAgICAgIG9mZnNldHMgdG8gbGluZSBudW1iZXJzIChmb3IgZGV0YWlscyBzZWUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZVxuICAgICAgaW50ZXJwcmV0ZXIpOyBgYGNvX3N0YWNrc2l6ZWBgIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7IGBgY29fZmxhZ3NgYCBpcyBhbiBpbnRlZ2VyIGVuY29kaW5nXG4gICAgICBhIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuXG4gICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgYGBjb19mbGFnc2BgOiBiaXRcbiAgICAgIGBgMHgwNGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYGAqYXJndW1lbnRzYGAgc3ludGF4XG4gICAgICB0byBhY2NlcHQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0XG4gICAgICBgYDB4MDhgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKiprZXl3b3Jkc2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50czsgYml0IGBgMHgyMGBgIGlzIHNldCBpZlxuICAgICAgdGhlIGZ1bmN0aW9uIGlzIGEgZ2VuZXJhdG9yLlxuXG4gICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKGBgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydFxuICAgICAgZGl2aXNpb25gYCkgYWxzbyB1c2UgYml0cyBpbiBgYGNvX2ZsYWdzYGAgdG8gaW5kaWNhdGUgd2hldGhlciBhXG4gICAgICBjb2RlIG9iamVjdCB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXRcbiAgICAgIGBgMHgyMDAwYGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmVcbiAgICAgIGRpdmlzaW9uIGVuYWJsZWQ7IGJpdHMgYGAweDEwYGAgYW5kIGBgMHgxMDAwYGAgd2VyZSB1c2VkIGluXG4gICAgICBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiBgYGNvX2ZsYWdzYGAgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG5cbiAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuICAgICAgYGBjb19jb25zdHNgYCBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuICAgICAgYGBOb25lYGAgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYGZfYmFja2BgIGlzIHRvIHRoZSBwcmV2aW91c1xuICAgICAgc3RhY2sgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yIGBgTm9uZWBgIGlmIHRoaXMgaXMgdGhlXG4gICAgICBib3R0b20gc3RhY2sgZnJhbWU7IGBgZl9jb2RlYGAgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkXG4gICAgICBpbiB0aGlzIGZyYW1lOyBgYGZfbG9jYWxzYGAgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwXG4gICAgICBsb2NhbCB2YXJpYWJsZXM7IGBgZl9nbG9iYWxzYGAgaXMgdXNlZCBmb3IgZ2xvYmFsIHZhcmlhYmxlcztcbiAgICAgIGBgZl9idWlsdGluc2BgIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzO1xuICAgICAgYGBmX2xhc3RpYGAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50b1xuICAgICAgdGhlIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuXG4gICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6IGBgZl90cmFjZWBgLCBpZiBub3QgYGBOb25lYGAsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7IGBgZl9saW5lbm9gYCBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlclxuICAgICAgb2YgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvblxuICAgICAganVtcHMgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBXG4gICAgICBkZWJ1Z2dlciBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KVxuICAgICAgYnkgd3JpdGluZyB0byBmX2xpbmVuby5cblxuICAgVHJhY2ViYWNrIG9iamVjdHNcbiAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gIEFcbiAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuIHRoZVxuICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssIGF0XG4gICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250IG9mXG4gICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIGVudGVyZWQsXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgc2VjdGlvblxuICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgdGhlXG4gICAgICB0dXBsZSByZXR1cm5lZCBieSBgYHN5cy5leGNfaW5mbygpYGAuIFdoZW4gdGhlIHByb2dyYW0gY29udGFpbnNcbiAgICAgIG5vIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHlcbiAgICAgIGZvcm1hdHRlZCkgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzXG4gICAgICBpbnRlcmFjdGl2ZSwgaXQgaXMgYWxzbyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgdXNlciBhc1xuICAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGB0Yl9uZXh0YGAgaXMgdGhlIG5leHQgbGV2ZWwgaW5cbiAgICAgIHRoZSBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQpLCBvciBgYE5vbmVgYCBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyBgYHRiX2ZyYW1lYGBcbiAgICAgIHBvaW50cyB0byB0aGUgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsO1xuICAgICAgYGB0Yl9saW5lbm9gYCBnaXZlcyB0aGUgbGluZSBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQ7IGBgdGJfbGFzdGlgYCBpbmRpY2F0ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGVcbiAgICAgIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlclxuICAgICAgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZCBpbiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggbm8gbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZVxuICAgICAgb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuXG4gICBTbGljZSBvYmplY3RzXG4gICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yIGBgX19nZXRpdGVtX18oKWBgXG4gICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiBgYHNsaWNlKClgYFxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgc3RhcnRgYCBpcyB0aGUgbG93ZXIgYm91bmQ7XG4gICAgICBgYHN0b3BgYCBpcyB0aGUgdXBwZXIgYm91bmQ7IGBgc3RlcGBgIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzXG4gICAgICBgYE5vbmVgYCBpZiBvbWl0dGVkLiBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuXG4gICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4gICAgICAgICBjb21wdXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2xpY2UgdGhhdCB0aGUgc2xpY2Ugb2JqZWN0XG4gICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogaXRlbXMuXG4gICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSBhcmVcbiAgICAgICAgIHRoZSAqc3RhcnQqIGFuZCAqc3RvcCogaW5kaWNlcyBhbmQgdGhlICpzdGVwKiBvciBzdHJpZGVcbiAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG5cbiAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyBkZXNjcmliZWRcbiAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4gICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsIHRoZVxuICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4gICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlXG4gICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwIHVzdWFsbHlcbiAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzdGF0aWNtZXRob2QoKWBgIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluIGBgY2xhc3NtZXRob2QoKWBgIGNvbnN0cnVjdG9yLlxuJywKICAndHlwZXNmdW5jdGlvbnMnOiAnXG5GdW5jdGlvbnNcbioqKioqKioqKlxuXG5GdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlIG9ubHlcbm9wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiBgYGZ1bmMoYXJndW1lbnQtbGlzdClgYC5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21hcHBpbmcnOiAnXG5NYXBwaW5nIFR5cGVzIC0tLSBgYGRpY3RgYFxuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdFxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KFthcmddKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IG9yIGZyb20gYSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuICBJZiBubyBhcmd1bWVudHMgYXJlXG4gICBnaXZlbiwgcmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuICBJZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgKmFyZyogaXMgYSBtYXBwaW5nIG9iamVjdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSBzYW1lXG4gICBrZXlzIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyBkb2VzIHRoZSBtYXBwaW5nIG9iamVjdC4gIE90aGVyd2lzZSB0aGVcbiAgIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzXG4gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJndW1lbnRcbiAgIG11c3QgZWFjaCBhbHNvIGJlIG9mIG9uZSBvZiB0aG9zZSBraW5kcywgYW5kIGVhY2ggbXVzdCBpbiB0dXJuXG4gICBjb250YWluIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3QgaXMgdXNlZCBhcyBhIGtleSBpbiB0aGUgbmV3XG4gICBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBhcyB0aGUga2V5XCdzIHZhbHVlLiAgSWYgYSBnaXZlbiBrZXkgaXNcbiAgIHNlZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyByZXRhaW5lZFxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHdpdGggdGhlaXJcbiAgIGFzc29jaWF0ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBpdGVtcyB0byB0aGUgZGljdGlvbmFyeS4gIElmIGEga2V5XG4gICBpcyBzcGVjaWZpZWQgYm90aCBpbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgYXMgYSBrZXl3b3JkXG4gICBhcmd1bWVudCwgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5d29yZCBpcyByZXRhaW5lZCBpbiB0aGVcbiAgIGRpY3Rpb25hcnkuICBGb3IgZXhhbXBsZSwgdGhlc2UgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWwgdG9cbiAgIGBgeyJvbmUiOiAxLCAidHdvIjogMn1gYDpcblxuICAgKiBgYGRpY3Qob25lPTEsIHR3bz0yKWBgXG5cbiAgICogYGBkaWN0KHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlgYFxuXG4gICAqIGBgZGljdCh6aXAoKFwnb25lXCcsIFwndHdvXCcpLCAoMSwgMikpKWBgXG5cbiAgICogYGBkaWN0KFtbXCd0d29cJywgMl0sIFtcJ29uZVwnLCAxXV0pYGBcblxuICAgVGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3Iga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob25cbiAgIGlkZW50aWZpZXJzOyB0aGUgb3RoZXJzIHdvcmsgd2l0aCBhbnkgdmFsaWQga2V5cy5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kIGBgX19taXNzaW5nX18oKWBgLCBpZiB0aGVcbiAgICAgIGtleSAqa2V5KiBpcyBub3QgcHJlc2VudCwgdGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uIGNhbGxzIHRoYXRcbiAgICAgIG1ldGhvZCB3aXRoIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgYGBkW2tleV1gYCBvcGVyYXRpb25cbiAgICAgIHRoZW4gcmV0dXJucyBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgYGBfX21pc3NpbmdfXyhrZXkpYGAgY2FsbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LiBObyBvdGhlclxuICAgICAgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZSBgYF9fbWlzc2luZ19fKClgYC4gSWZcbiAgICAgIGBgX19taXNzaW5nX18oKWBgIGlzIG5vdCBkZWZpbmVkLCBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuIGluc3RhbmNlXG4gICAgICB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgU2VlIGBgY29sbGVjdGlvbnMuQ291bnRlcmBgIGZvciBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uXG4gICAgICBpbmNsdWRpbmcgb3RoZXIgbWV0aG9kcyBoZWxwZnVsIGZvciBhY2N1bXVsYXRpbmcgYW5kIG1hbmFnaW5nXG4gICAgICB0YWxsaWVzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgYGBkW2tleV1gYCB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSBgYGRba2V5XWBgIGZyb20gKmQqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgYGBGYWxzZWBgLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byBgYG5vdCBrZXkgaW4gZGBgLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKGQua2V5cygpKWBgLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgYGBmcm9ta2V5cygpYGAgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLFxuICAgICAgc28gdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGBcbiAgICAgIHBhaXJzKS4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIGJlbG93IGZvclxuICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSBgYChrZXksIHZhbHVlKWBgIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgIGBgcG9waXRlbSgpYGAgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgYGBwb3BpdGVtKClgYCByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuIGBgTm9uZWBgLlxuXG4gICAgICBgYHVwZGF0ZSgpYGAgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6IGBgZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpYGAuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG5cbkRpY3Rpb25hcnkgdmlldyBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb2JqZWN0cyByZXR1cm5lZCBieSBgYGRpY3Qua2V5cygpYGAsIGBgZGljdC52YWx1ZXMoKWBgIGFuZFxuYGBkaWN0Lml0ZW1zKClgYCBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljIHZpZXcgb25cbnRoZSBkaWN0aW9uYXJ5XCdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeVxuY2hhbmdlcywgdGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cblxuRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciByZXNwZWN0aXZlIGRhdGEsXG5hbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuXG5sZW4oZGljdHZpZXcpXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbml0ZXIoZGljdHZpZXcpXG5cbiAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgKHJlcHJlc2VudGVkIGFzXG4gICB0dXBsZXMgb2YgYGAoa2V5LCB2YWx1ZSlgYCkgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBgYCh2YWx1ZSwga2V5KWBgIHBhaXJzXG4gICB1c2luZyBgYHppcCgpYGA6IGBgcGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpYGAuICBBbm90aGVyXG4gICB3YXkgdG8gY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgYGBwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpblxuICAgZC5pdGVtcygpXWBgLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhIGBgUnVudGltZUVycm9yYGAgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzIGtleXMsXG4gICB2YWx1ZXMgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhIGBgKGtleSxcbiAgIHZhbHVlKWBgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0IGBgKGtleSwgdmFsdWUpYGAgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyBgYGNvbGxlY3Rpb25zLlNldGBgIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCBgYD09YGAsXG5gYDxgYCwgb3IgYGBeYGApLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKKyAndHlwZXNtYXBwaW5nJzogJ1xuTWFwcGluZyBUeXBlcyAtLS0gYGBkaWN0YGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQtXG5pbiBgYGxpc3RgYCwgYGBzZXRgYCwgYW5kIGBgdHVwbGVgYCBjbGFzc2VzLCBhbmQgdGhlIGBgY29sbGVjdGlvbnNgYFxubW9kdWxlLilcblxuQSBkaWN0aW9uYXJ5XCdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgdGhhdCBhcmVcbm5vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgZGljdGlvbmFyaWVzIG9yXG5vdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbmlkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5XG50aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWxcbihzdWNoIGFzIGBgMWBgIGFuZCBgYDEuMGBgKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvXG5pbmRleCB0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSBjb21wdXRlcnNcbnN0b3JlIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSB1bndpc2UgdG9cbnVzZSB0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG5cbkRpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2ZcbmBga2V5OiB2YWx1ZWBgIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiBgYHtcJ2phY2tcJzogNDA5OCxcblwnc2pvZXJkXCc6IDQxMjd9YGAgb3IgYGB7NDA5ODogXCdqYWNrXCcsIDQxMjc6IFwnc2pvZXJkXCd9YGAsIG9yIGJ5IHRoZVxuYGBkaWN0YGAgY29uc3RydWN0b3IuXG5cbmNsYXNzIGNsYXNzIGRpY3QoW2FyZ10pXG5cbiAgIFJldHVybiBhIG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIGZyb20gYW4gb3B0aW9uYWwgcG9zaXRpb25hbFxuICAgYXJndW1lbnQgb3IgZnJvbSBhIHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIG5vIGFyZ3VtZW50cyBhcmVcbiAgIGdpdmVuLCByZXR1cm4gYSBuZXcgZW1wdHkgZGljdGlvbmFyeS4gIElmIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAqYXJnKiBpcyBhIG1hcHBpbmcgb2JqZWN0LCByZXR1cm4gYSBkaWN0aW9uYXJ5IG1hcHBpbmcgdGhlIHNhbWVcbiAgIGtleXMgdG8gdGhlIHNhbWUgdmFsdWVzIGFzIGRvZXMgdGhlIG1hcHBpbmcgb2JqZWN0LiAgT3RoZXJ3aXNlIHRoZVxuICAgcG9zaXRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHNcbiAgIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3Igb2JqZWN0LiAgVGhlIGVsZW1lbnRzIG9mIHRoZSBhcmd1bWVudFxuICAgbXVzdCBlYWNoIGFsc28gYmUgb2Ygb25lIG9mIHRob3NlIGtpbmRzLCBhbmQgZWFjaCBtdXN0IGluIHR1cm5cbiAgIGNvbnRhaW4gZXhhY3RseSB0d28gb2JqZWN0cy4gIFRoZSBmaXJzdCBpcyB1c2VkIGFzIGEga2V5IGluIHRoZSBuZXdcbiAgIGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIGFzIHRoZSBrZXlcJ3MgdmFsdWUuICBJZiBhIGdpdmVuIGtleSBpc1xuICAgc2VlbiBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0IGlzIHJldGFpbmVkXG4gICBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG5cbiAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmRzIHRoZW1zZWx2ZXMgd2l0aCB0aGVpclxuICAgYXNzb2NpYXRlZCB2YWx1ZXMgYXJlIGFkZGVkIGFzIGl0ZW1zIHRvIHRoZSBkaWN0aW9uYXJ5LiAgSWYgYSBrZXlcbiAgIGlzIHNwZWNpZmllZCBib3RoIGluIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IGFuZCBhcyBhIGtleXdvcmRcbiAgIGFyZ3VtZW50LCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXl3b3JkIGlzIHJldGFpbmVkIGluIHRoZVxuICAgZGljdGlvbmFyeS4gIEZvciBleGFtcGxlLCB0aGVzZSBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbCB0b1xuICAgYGB7Im9uZSI6IDEsICJ0d28iOiAyfWBgOlxuXG4gICAqIGBgZGljdChvbmU9MSwgdHdvPTIpYGBcblxuICAgKiBgYGRpY3Qoe1wnb25lXCc6IDEsIFwndHdvXCc6IDJ9KWBgXG5cbiAgICogYGBkaWN0KHppcCgoXCdvbmVcJywgXCd0d29cJyksICgxLCAyKSkpYGBcblxuICAgKiBgYGRpY3QoW1tcJ3R3b1wnLCAyXSwgW1wnb25lXCcsIDFdXSlgYFxuXG4gICBUaGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvciBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvblxuICAgaWRlbnRpZmllcnM7IHRoZSBvdGhlcnMgd29yayB3aXRoIGFueSB2YWxpZCBrZXlzLlxuXG4gICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kIHRoZXJlZm9yZSxcbiAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG5cbiAgIGxlbihkKVxuXG4gICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG5cbiAgIGRba2V5XVxuXG4gICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmXG4gICAgICAqa2V5KiBpcyBub3QgaW4gdGhlIG1hcC5cblxuICAgICAgSWYgYSBzdWJjbGFzcyBvZiBkaWN0IGRlZmluZXMgYSBtZXRob2QgYGBfX21pc3NpbmdfXygpYGAsIGlmIHRoZVxuICAgICAga2V5ICprZXkqIGlzIG5vdCBwcmVzZW50LCB0aGUgYGBkW2tleV1gYCBvcGVyYXRpb24gY2FsbHMgdGhhdFxuICAgICAgbWV0aG9kIHdpdGggdGhlIGtleSAqa2V5KiBhcyBhcmd1bWVudC4gIFRoZSBgYGRba2V5XWBgIG9wZXJhdGlvblxuICAgICAgdGhlbiByZXR1cm5zIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICBgYF9fbWlzc2luZ19fKGtleSlgYCBjYWxsIGlmIHRoZSBrZXkgaXMgbm90IHByZXNlbnQuIE5vIG90aGVyXG4gICAgICBvcGVyYXRpb25zIG9yIG1ldGhvZHMgaW52b2tlIGBgX19taXNzaW5nX18oKWBgLiBJZlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgaXMgbm90IGRlZmluZWQsIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBtdXN0IGJlIGEgbWV0aG9kOyBpdCBjYW5ub3QgYmUgYW4gaW5zdGFuY2VcbiAgICAgIHZhcmlhYmxlOlxuXG4gICAgICAgICA+Pj4gY2xhc3MgQ291bnRlcihkaWN0KTpcbiAgICAgICAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAgICAgICAuLi4gICAgICAgICByZXR1cm4gMFxuICAgICAgICAgPj4+IGMgPSBDb3VudGVyKClcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAwXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXSArPSAxXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMVxuXG4gICAgICBTZWUgYGBjb2xsZWN0aW9ucy5Db3VudGVyYGAgZm9yIGEgY29tcGxldGUgaW1wbGVtZW50YXRpb25cbiAgICAgIGluY2x1ZGluZyBvdGhlciBtZXRob2RzIGhlbHBmdWwgZm9yIGFjY3VtdWxhdGluZyBhbmQgbWFuYWdpbmdcbiAgICAgIHRhbGxpZXMuXG5cbiAgIGRba2V5XSA9IHZhbHVlXG5cbiAgICAgIFNldCBgYGRba2V5XWBgIHRvICp2YWx1ZSouXG5cbiAgIGRlbCBkW2tleV1cblxuICAgICAgUmVtb3ZlIGBgZFtrZXldYGAgZnJvbSAqZCouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWYgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgbWFwLlxuXG4gICBrZXkgaW4gZFxuXG4gICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKmQqIGhhcyBhIGtleSAqa2V5KiwgZWxzZSBgYEZhbHNlYGAuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvIGBgbm90IGtleSBpbiBkYGAuXG5cbiAgIGl0ZXIoZClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICBUaGlzIGlzIGFcbiAgICAgIHNob3J0Y3V0IGZvciBgYGl0ZXIoZC5rZXlzKCkpYGAuXG5cbiAgIGNsZWFyKClcblxuICAgICAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjb3B5KClcblxuICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjbGFzc21ldGhvZCBmcm9ta2V5cyhzZXFbLCB2YWx1ZV0pXG5cbiAgICAgIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tICpzZXEqIGFuZCB2YWx1ZXMgc2V0IHRvXG4gICAgICAqdmFsdWUqLlxuXG4gICAgICBgYGZyb21rZXlzKClgYCBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gYGBOb25lYGAuXG5cbiAgIGdldChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2VcbiAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsXG4gICAgICBzbyB0aGF0IHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhIGBgS2V5RXJyb3JgYC5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYFxuICAgICAgcGFpcnMpLiBTZWUgdGhlICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgcG9wKGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiBhbmQgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICBwb3BpdGVtKClcblxuICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5IGBgKGtleSwgdmFsdWUpYGAgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgYGBwb3BpdGVtKClgYCBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyBlbXB0eSwgY2FsbGluZyBgYHBvcGl0ZW0oKWBgIHJhaXNlcyBhIGBgS2V5RXJyb3JgYC5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gYGBOb25lYGAuXG5cbiAgIHVwZGF0ZShbb3RoZXJdKVxuXG4gICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gKm90aGVyKixcbiAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gYGBOb25lYGAuXG5cbiAgICAgIGBgdXBkYXRlKClgYCBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogYGBkLnVwZGF0ZShyZWQ9MSxcbiAgICAgIGJsdWU9MilgYC5cblxuICAgdmFsdWVzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgdmFsdWVzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuU2VlIGFsc286XG5cbiAgIGBgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWBgIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlYWQtb25seSB2aWV3XG4gICBvZiBhIGBgZGljdGBgLlxuXG5cbkRpY3Rpb25hcnkgdmlldyBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb2JqZWN0cyByZXR1cm5lZCBieSBgYGRpY3Qua2V5cygpYGAsIGBgZGljdC52YWx1ZXMoKWBgIGFuZFxuYGBkaWN0Lml0ZW1zKClgYCBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljIHZpZXcgb25cbnRoZSBkaWN0aW9uYXJ5XCdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeVxuY2hhbmdlcywgdGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cblxuRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciByZXNwZWN0aXZlIGRhdGEsXG5hbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuXG5sZW4oZGljdHZpZXcpXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbml0ZXIoZGljdHZpZXcpXG5cbiAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgKHJlcHJlc2VudGVkIGFzXG4gICB0dXBsZXMgb2YgYGAoa2V5LCB2YWx1ZSlgYCkgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBgYCh2YWx1ZSwga2V5KWBgIHBhaXJzXG4gICB1c2luZyBgYHppcCgpYGA6IGBgcGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpYGAuICBBbm90aGVyXG4gICB3YXkgdG8gY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgYGBwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpblxuICAgZC5pdGVtcygpXWBgLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhIGBgUnVudGltZUVycm9yYGAgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzIGtleXMsXG4gICB2YWx1ZXMgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhIGBgKGtleSxcbiAgIHZhbHVlKWBgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0IGBgKGtleSwgdmFsdWUpYGAgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyBgYGNvbGxlY3Rpb25zLmFiYy5TZXRgYCBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLFxuYGA8YGAsIG9yIGBgXmBgKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCiAgJ3R5cGVzbWV0aG9kcyc6ICJcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzIGBgYXBwZW5kKClgYCBvblxubGlzdHMpIGFuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkXG53aXRoIHRoZSB0eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cblxuSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgbmFtZXNwYWNlKVxudGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCBtZXRob2QqIChhbHNvXG5jYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkIHRoZVxuYGBzZWxmYGAgYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50IGxpc3QuICBCb3VuZCBtZXRob2RzIGhhdmUgdHdvXG5zcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYG0uX19zZWxmX19gYCBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoXG50aGUgbWV0aG9kIG9wZXJhdGVzLCBhbmQgYGBtLl9fZnVuY19fYGAgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZ1xudGhlIG1ldGhvZC4gIENhbGxpbmcgYGBtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbilgYCBpcyBjb21wbGV0ZWx5XG5lcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLFxuYXJnLW4pYGAuXG5cbkxpa2UgZnVuY3Rpb24gb2JqZWN0cywgYm91bmQgbWV0aG9kIG9iamVjdHMgc3VwcG9ydCBnZXR0aW5nIGFyYml0cmFyeVxuYXR0cmlidXRlcy4gIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBzdG9yZWQgb25cbnRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoYGBtZXRoLl9fZnVuY19fYGApLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhIG1ldGhvZFxuYXR0cmlidXRlIHJlc3VsdHMgaW4gYSBgYFR5cGVFcnJvcmBgIGJlaW5nIHJhaXNlZC4gIEluIG9yZGVyIHRvIHNldCBhXG5tZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBpdCBvbiB0aGUgdW5kZXJseWluZ1xuZnVuY3Rpb24gb2JqZWN0OlxuXG4gICBjbGFzcyBDOlxuICAgICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAgICAgICAgIHBhc3NcblxuICAgYyA9IEMoKVxuICAgYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gJ215IG5hbWUgaXMgYydcblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiwKICAndHlwZXNtb2R1bGVzJzogIlxuTW9kdWxlc1xuKioqKioqKlxuXG5UaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOlxuYGBtLm5hbWVgYCwgd2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWRcbmluICptKidzIHN5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGVcbnRoYXQgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50IGlzIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGFuIG9wZXJhdGlvblxub24gYSBtb2R1bGUgb2JqZWN0OyBgYGltcG9ydCBmb29gYCBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdFxubmFtZWQgKmZvbyogdG8gZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKlxuZm9yIGEgbW9kdWxlIG5hbWVkICpmb28qIHNvbWV3aGVyZS4pXG5cbkEgc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzIGBgX19kaWN0X19gYC4gVGhpcyBpcyB0aGVcbmRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgdGhpc1xuZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLCBidXQgZGlyZWN0XG5hc3NpZ25tZW50IHRvIHRoZSBgYF9fZGljdF9fYGAgYXR0cmlidXRlIGlzIG5vdCBwb3NzaWJsZSAoeW91IGNhblxud3JpdGUgYGBtLl9fZGljdF9fWydhJ10gPSAxYGAsIHdoaWNoIGRlZmluZXMgYGBtLmFgYCB0byBiZSBgYDFgYCwgYnV0XG55b3UgY2FuJ3Qgd3JpdGUgYGBtLl9fZGljdF9fID0ge31gYCkuICBNb2RpZnlpbmcgYGBfX2RpY3RfX2BgIGRpcmVjdGx5XG5pcyBub3QgcmVjb21tZW5kZWQuXG5cbk1vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiBgYDxtb2R1bGVcbidzeXMnIChidWlsdC1pbik+YGAuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlIHdyaXR0ZW4gYXNcbmBgPG1vZHVsZSAnb3MnIGZyb20gJy91c3IvbG9jYWwvbGliL3B5dGhvblguWS9vcy5weWMnPmBgLlxuIiwKLSAndHlwZXNzZXEnOiAnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gYGBzdHJgYCwgYGBieXRlc2BgLCBgYGJ5dGVhcnJheWBgLCBgYGxpc3RgYCwgYGB0dXBsZWBgLCBgYHJhbmdlYGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgc2l4IHNlcXVlbmNlIHR5cGVzOiBzdHJpbmdzLCBieXRlIHNlcXVlbmNlcyAoYGBieXRlc2BgXG5vYmplY3RzKSwgYnl0ZSBhcnJheXMgKGBgYnl0ZWFycmF5YGAgb2JqZWN0cyksIGxpc3RzLCB0dXBsZXMsIGFuZFxucmFuZ2Ugb2JqZWN0cy4gIEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gYGBkaWN0YGAgYW5kXG5gYHNldGBgIGNsYXNzZXMsIGFuZCB0aGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZS5cblxuU3RyaW5ncyBjb250YWluIFVuaWNvZGUgY2hhcmFjdGVycy4gIFRoZWlyIGxpdGVyYWxzIGFyZSB3cml0dGVuIGluXG5zaW5nbGUgb3IgZG91YmxlIHF1b3RlczogYGBcJ3h5enp5XCdgYCwgYGAiZnJvYm96eiJgYC4gIFNlZSAqU3RyaW5nIGFuZFxuQnl0ZXMgbGl0ZXJhbHMqIGZvciBtb3JlIGFib3V0IHN0cmluZyBsaXRlcmFscy4gIEluIGFkZGl0aW9uIHRvIHRoZVxuZnVuY3Rpb25hbGl0eSBkZXNjcmliZWQgaGVyZSwgdGhlcmUgYXJlIGFsc28gc3RyaW5nLXNwZWNpZmljIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlN0cmluZyBNZXRob2RzKiBzZWN0aW9uLlxuXG5CeXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgY29udGFpbiBzaW5nbGUgYnl0ZXMgLS0gdGhlIGZvcm1lciBpc1xuaW1tdXRhYmxlIHdoaWxlIHRoZSBsYXR0ZXIgaXMgYSBtdXRhYmxlIHNlcXVlbmNlLiAgQnl0ZXMgb2JqZWN0cyBjYW5cbmJlIGNvbnN0cnVjdGVkIHRoZSBjb25zdHJ1Y3RvciwgYGBieXRlcygpYGAsIGFuZCBmcm9tIGxpdGVyYWxzOyB1c2UgYVxuYGBiYGAgcHJlZml4IHdpdGggbm9ybWFsIHN0cmluZyBzeW50YXg6IGBgYlwneHl6enlcJ2BgLiAgVG8gY29uc3RydWN0XG5ieXRlIGFycmF5cywgdXNlIHRoZSBgYGJ5dGVhcnJheSgpYGAgZnVuY3Rpb24uXG5cbldoaWxlIHN0cmluZyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyAocmVwcmVzZW50ZWQgYnlcbnN0cmluZ3Mgb2YgbGVuZ3RoIDEpLCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZlxuKmludGVnZXJzKiAoYmV0d2VlbiAwIGFuZCAyNTUpLCByZXByZXNlbnRpbmcgdGhlIEFTQ0lJIHZhbHVlIG9mIHNpbmdsZVxuYnl0ZXMuICBUaGF0IG1lYW5zIHRoYXQgZm9yIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgXG53aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheVxub2JqZWN0IG9mIGxlbmd0aCAxLiAgVGhlIHJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGVcbmxpdGVyYWwgZm9ybWF0IChgYGJcJy4uLlwnYGApIHNpbmNlIGl0IGlzIGdlbmVyYWxseSBtb3JlIHVzZWZ1bCB0aGFuXG5lLmcuIGBgYnl0ZXMoWzUwLCAxOSwgMTAwXSlgYC4gIFlvdSBjYW4gYWx3YXlzIGNvbnZlcnQgYSBieXRlcyBvYmplY3RcbmludG8gYSBsaXN0IG9mIGludGVnZXJzIHVzaW5nIGBgbGlzdChiKWBgLlxuXG5BbHNvLCB3aGlsZSBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMsIGJ5dGUgc3RyaW5ncyBhbmQgVW5pY29kZVxuc3RyaW5ncyBjb3VsZCBiZSBleGNoYW5nZWQgZm9yIGVhY2ggb3RoZXIgcmF0aGVyIGZyZWVseSAoYmFycmluZ1xuZW5jb2RpbmcgaXNzdWVzKSwgc3RyaW5ncyBhbmQgYnl0ZXMgYXJlIG5vdyBjb21wbGV0ZWx5IHNlcGFyYXRlXG5jb25jZXB0cy4gIFRoZXJlXCdzIG5vIGltcGxpY2l0IGVuLS9kZWNvZGluZyBpZiB5b3UgcGFzcyBhbiBvYmplY3Qgb2ZcbnRoZSB3cm9uZyB0eXBlLiAgQSBzdHJpbmcgYWx3YXlzIGNvbXBhcmVzIHVuZXF1YWwgdG8gYSBieXRlcyBvclxuYnl0ZWFycmF5IG9iamVjdC5cblxuTGlzdHMgYXJlIGNvbnN0cnVjdGVkIHdpdGggc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGhcbmNvbW1hczogYGBbYSwgYiwgY11gYC4gIFR1cGxlcyBhcmUgY29uc3RydWN0ZWQgYnkgdGhlIGNvbW1hIG9wZXJhdG9yXG4obm90IHdpdGhpbiBzcXVhcmUgYnJhY2tldHMpLCB3aXRoIG9yIHdpdGhvdXQgZW5jbG9zaW5nIHBhcmVudGhlc2VzLFxuYnV0IGFuIGVtcHR5IHR1cGxlIG11c3QgaGF2ZSB0aGUgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBzdWNoIGFzIGBgYSxcbmIsIGNgYCBvciBgYCgpYGAuICBBIHNpbmdsZSBpdGVtIHR1cGxlIG11c3QgaGF2ZSBhIHRyYWlsaW5nIGNvbW1hLFxuc3VjaCBhcyBgYChkLClgYC5cblxuT2JqZWN0cyBvZiB0eXBlIHJhbmdlIGFyZSBjcmVhdGVkIHVzaW5nIHRoZSBgYHJhbmdlKClgYCBmdW5jdGlvbi5cblRoZXkgZG9uXCd0IHN1cHBvcnQgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLCBhbmQgdXNpbmcgYGBtaW4oKWBgIG9yXG5gYG1heCgpYGAgb24gdGhlbSBpcyBpbmVmZmljaWVudC5cblxuTW9zdCBzZXF1ZW5jZSB0eXBlcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4gIFRoZSBgYGluYGAgYW5kXG5gYG5vdCBpbmBgIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZSBjb21wYXJpc29uXG5vcGVyYXRpb25zLiAgVGhlIGBgK2BgIGFuZCBgYCpgYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXNcbnRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4gWzNdIEFkZGl0aW9uYWwgbWV0aG9kcyBhcmVcbnByb3ZpZGVkIGZvciAqTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcyouXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eVxuKG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkpLiAgSW4gdGhlIHRhYmxlLFxuKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlOyAqbiosICppKiwgKmoqIGFuZCAqayogYXJlXG5pbnRlZ2Vycy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCBgYHggaW4gc2BgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHggbm90IGluIHNgYCAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKyB0YGAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKiBuLCBuICogc2BgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgICB8ICgyKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaV1gYCAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXWBgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg0KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdYGAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYGxlbihzKWBgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1pbihzKWBgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1heChzKWBgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoaSlgYCAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCAqaSogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoaSlgYCAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJlbmNlcyBvZiAgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgfCAqaSogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZSB0eXBlcyBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLCB0dXBsZXMgYW5kXG5saXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nIGNvcnJlc3BvbmRpbmdcbmVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdFxuY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlXG50aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgKkNvbXBhcmlzb25zKiBpbiB0aGUgbGFuZ3VhZ2VcbnJlZmVyZW5jZS4pXG5cbk5vdGVzOlxuXG4xLiBXaGVuICpzKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9uc1xuICAgYWN0IGxpa2UgYSBzdWJzdHJpbmcgdGVzdC5cblxuMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gYGAwYGAgYXJlIHRyZWF0ZWQgYXMgYGAwYGAgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgdGhlIGNvcGllc1xuICAgYXJlIHNoYWxsb3c7IG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSBub3QgY29waWVkLiAgVGhpcyBvZnRlbiBoYXVudHNcbiAgIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuXG4gICA+Pj4gbGlzdHMgPSBbW11dICogM1xuICAgPj4+IGxpc3RzXG4gICBbW10sIFtdLCBbXV1cbiAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgID4+PiBsaXN0c1xuICAgW1szXSwgWzNdLCBbM11dXG5cbiAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgYGBbW11dYGAgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiBgYFtbXV0gKiAzYGAgYXJlIChwb2ludGVyc1xuICAgdG8pIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuICAgYGBsaXN0c2BgIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuXG4gICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4gICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFs1XSwgWzddXVxuXG4zLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGVcbiAgIHN0cmluZzogYGBsZW4ocykgKyBpYGAgb3IgYGBsZW4ocykgKyBqYGAgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCBgYC0wYGAgaXMgc3RpbGwgYGAwYGAuXG5cbjQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlIG9mXG4gICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgYGBpIDw9IGsgPCBqYGAuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gYGBsZW4ocylgYCwgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogaXMgb21pdHRlZCBvclxuICAgYGBOb25lYGAsIHVzZSBgYDBgYC4gIElmICpqKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB1c2VcbiAgIGBgbGVuKHMpYGAuICBJZiAqaSogaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzXG4gICBlbXB0eS5cblxuNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzIHRoZVxuICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgYGB4ID0gaSArIG4qa2BgIHN1Y2ggdGhhdCBgYDAgPD0gbiA8XG4gICAoai1pKS9rYGAuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlIGBgaWBgLCBgYGkra2BgLFxuICAgYGBpKzIqa2BgLCBgYGkrMyprYGAgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXRcbiAgIG5ldmVyIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gYGBsZW4ocylgYCxcbiAgIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhleSBiZWNvbWVcbiAgICJlbmQiIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKlxuICAgY2Fubm90IGJlIHplcm8uIElmICprKiBpcyBgYE5vbmVgYCwgaXQgaXMgdHJlYXRlZCBsaWtlIGBgMWBgLlxuXG42LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzdHJpbmdzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC5cbiAgIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHN0cmluZyBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uIHdpbGxcbiAgIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzdHJpbmcgbGVuZ3RoLiAgVG8gZ2V0IGFcbiAgIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlIGFsdGVybmF0aXZlc1xuICAgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHN0cmBgIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2VcbiAgICAgYGBzdHIuam9pbigpYGAgYXQgdGhlIGVuZDtcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgYnl0ZXNgYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgYGBieXRlcy5qb2luKClgYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZSBjb25jYXRlbmF0aW9uIHdpdGggYVxuICAgICBgYGJ5dGVhcnJheWBgIG9iamVjdC4gIGBgYnl0ZWFycmF5YGAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQgaGF2ZVxuICAgICBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtLlxuXG5cblN0cmluZyBNZXRob2RzXG49PT09PT09PT09PT09PVxuXG5TdHJpbmcgb2JqZWN0cyBzdXBwb3J0IHRoZSBtZXRob2RzIGxpc3RlZCBiZWxvdy5cblxuSW4gYWRkaXRpb24sIFB5dGhvblwncyBzdHJpbmdzIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHR5cGUgbWV0aG9kc1xuZGVzY3JpYmVkIGluIHRoZSAqU2VxdWVuY2UgVHlwZXMgLS0tIHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSwgbGlzdCxcbnR1cGxlLCByYW5nZSogc2VjdGlvbi4gVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlICpTdHJpbmdcbkZvcm1hdHRpbmcqIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgYGByZWBgIG1vZHVsZSBmb3Igc3RyaW5nIGZ1bmN0aW9uc1xuYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzIGBgXCd1dGYtOFwnYGAuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuIE90aGVyXG4gICBwb3NzaWJsZSB2YWx1ZXMgYXJlIGBgXCdpZ25vcmVcJ2BgLCBgYFwncmVwbGFjZVwnYGAsXG4gICBgYFwneG1sY2hhcnJlZnJlcGxhY2VcJ2BgLCBgYFwnYmFja3NsYXNocmVwbGFjZVwnYGAgYW5kIGFueSBvdGhlciBuYW1lXG4gICByZWdpc3RlcmVkIHZpYSBgYGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpYGAsIHNlZSBzZWN0aW9uICpDb2RlYyBCYXNlXG4gICBDbGFzc2VzKi4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZFxuICAgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZlxuICAgc3VmZml4ZXMgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0XG4gICB0aGF0IHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IHplcm8gb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUaGUgY29sdW1uIG51bWJlciBpcyByZXNldCB0byB6ZXJvIGFmdGVyIGVhY2hcbiAgIG5ld2xpbmUgb2NjdXJyaW5nIGluIHRoZSBzdHJpbmcuIElmICp0YWJzaXplKiBpcyBub3QgZ2l2ZW4sIGEgdGFiXG4gICBzaXplIG9mIGBgOGBgIGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4gIFRoaXMgZG9lc25cJ3QgdW5kZXJzdGFuZCBvdGhlclxuICAgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgb3IgZXNjYXBlIHNlcXVlbmNlcy5cblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIGluIHRoZSBzbGljZSBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIGlmICpzdWIqIGlzIG5vdCBmb3VuZC5cblxuICAgTm90ZTogVGhlIGBgZmluZCgpYGAgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vdyB0aGVcbiAgICAgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsIHVzZVxuICAgICB0aGUgYGBpbmBgIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgYGB7fWBgLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyBlaXRoZXJcbiAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgb2YgYVxuICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZVxuICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cblxuICAgPj4+ICJUaGUgc3VtIG9mIDEgKyAyIGlzIHswfSIuZm9ybWF0KDErMilcbiAgIFwnVGhlIHN1bSBvZiAxICsgMiBpcyAzXCdcblxuICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIHZhcmlvdXNcbiAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG5cbnN0ci5mb3JtYXRfbWFwKG1hcHBpbmcpXG5cbiAgIFNpbWlsYXIgdG8gYGBzdHIuZm9ybWF0KCoqbWFwcGluZylgYCwgZXhjZXB0IHRoYXQgYGBtYXBwaW5nYGAgaXNcbiAgIHVzZWQgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSBgYGRpY3RgYCAuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3JcbiAgIGV4YW1wbGUgYGBtYXBwaW5nYGAgaXMgYSBkaWN0IHN1YmNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbiAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4gICAuLi5cbiAgID4+PiBcJ3tuYW1lfSB3YXMgYm9ybiBpbiB7Y291bnRyeX1cJy5mb3JtYXRfbWFwKERlZmF1bHQobmFtZT1cJ0d1aWRvXCcpKVxuICAgXCdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5XCdcblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5zdHIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYGZpbmQoKWBgLCBidXQgcmFpc2UgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXJcbiAgIGBgY2BgIGlzIGFscGhhbnVtZXJpYyBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXR1cm5zIGBgVHJ1ZWBgOlxuICAgYGBjLmlzYWxwaGEoKWBgLCBgYGMuaXNkZWNpbWFsKClgYCwgYGBjLmlzZGlnaXQoKWBgLCBvclxuICAgYGBjLmlzbnVtZXJpYygpYGAuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuIGBgcmVwcigpYGAgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byBgYHN5cy5zdGRvdXRgYCBvciBgYHN5cy5zdGRlcnJgYC4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgYGBUeXBlRXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgYGBieXRlc2BgIG9iamVjdHMuXG4gICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgdGhpcyBtZXRob2QuXG5cbnN0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICBgYE5vbmVgYCwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvclxuICAgc3BsaXR0aW5nIGZyb20gdGhlIHJpZ2h0LCBgYHJzcGxpdCgpYGAgYmVoYXZlcyBsaWtlIGBgc3BsaXQoKWBgXG4gICB3aGljaCBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG5zdHIucnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICBcJyAgIHNwYWNpb3VzXCdcbiAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCBgYG1heHNwbGl0KzFgYFxuICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGxpbWl0XG4gICBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uIG9mIGFcbiAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiB3b3JrcyBpblxuICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiBjb250cmFjdGlvbnMgYW5kXG4gICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgZGVzaXJlZFxuICAgcmVzdWx0OlxuXG4gICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcblxuICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgcmVndWxhclxuICAgZXhwcmVzc2lvbnM6XG5cbiAgICAgID4+PiBpbXBvcnQgcmVcbiAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuICAgICAgICAgICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzKVxuXG4gICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbiAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuXG5zdHIudHJhbnNsYXRlKG1hcClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgKnMqIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlICptYXAqIHdoaWNoIG11c3QgYmUgYSBkaWN0aW9uYXJ5IG9mIFVuaWNvZGUgb3JkaW5hbHNcbiAgIChpbnRlZ2VycykgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBgYE5vbmVgYC4gIFVubWFwcGVkXG4gICBjaGFyYWN0ZXJzIGFyZSBsZWZ0IHVudG91Y2hlZC4gQ2hhcmFjdGVycyBtYXBwZWQgdG8gYGBOb25lYGAgYXJlXG4gICBkZWxldGVkLlxuXG4gICBZb3UgY2FuIHVzZSBgYHN0ci5tYWtldHJhbnMoKWBgIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIG1hcCBmcm9tXG4gICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuXG4gICBOb3RlOiBBbiBldmVuIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tIGNoYXJhY3RlclxuICAgICBtYXBwaW5nIGNvZGVjIHVzaW5nIHRoZSBgYGNvZGVjc2BgIG1vZHVsZSAoc2VlXG4gICAgIGBgZW5jb2RpbmdzLmNwMTI1MWBgIGZvciBhbiBleGFtcGxlKS5cblxuc3RyLnVwcGVyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0XG4gICBiZSBgYEZhbHNlYGAgaWYgYGBzYGAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlXG4gICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5zdHIuemZpbGwod2lkdGgpXG5cbiAgIFJldHVybiB0aGUgbnVtZXJpYyBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCB6ZXJvcyBpbiBhIHN0cmluZyBvZlxuICAgbGVuZ3RoICp3aWR0aCouICBBIHNpZ24gcHJlZml4IGlzIGhhbmRsZWQgY29ycmVjdGx5LiAgVGhlIG9yaWdpbmFsXG4gICBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuXG5PbGQgU3RyaW5nIEZvcm1hdHRpbmcgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuTm90ZTogVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgb2Jzb2xldGUgYW5kIG1heSBnb1xuICBhd2F5IGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24uICBVc2UgdGhlIG5ldyAqU3RyaW5nIEZvcm1hdHRpbmcqXG4gIGluIG5ldyBjb2RlLlxuXG5TdHJpbmcgb2JqZWN0cyBoYXZlIG9uZSB1bmlxdWUgYnVpbHQtaW4gb3BlcmF0aW9uOiB0aGUgYGAlYGAgb3BlcmF0b3Jcbihtb2R1bG8pLiBUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIHN0cmluZyAqZm9ybWF0dGluZyogb3JcbippbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4gR2l2ZW4gYGBmb3JtYXQgJSB2YWx1ZXNgYCAod2hlcmUgKmZvcm1hdCogaXNcbmEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9ucyBpbiAqZm9ybWF0KiBhcmUgcmVwbGFjZWRcbndpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLiBUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gdGhlXG51c2luZyBgYHNwcmludGYoKWBgIGluIHRoZSBDIGxhbmd1YWdlLlxuXG5JZiAqZm9ybWF0KiByZXF1aXJlcyBhIHNpbmdsZSBhcmd1bWVudCwgKnZhbHVlcyogbWF5IGJlIGEgc2luZ2xlIG5vbi1cbnR1cGxlIG9iamVjdC4gWzVdICBPdGhlcndpc2UsICp2YWx1ZXMqIG11c3QgYmUgYSB0dXBsZSB3aXRoIGV4YWN0bHlcbnRoZSBudW1iZXIgb2YgaXRlbXMgc3BlY2lmaWVkIGJ5IHRoZSBmb3JtYXQgc3RyaW5nLCBvciBhIHNpbmdsZVxubWFwcGluZyBvYmplY3QgKGZvciBleGFtcGxlLCBhIGRpY3Rpb25hcnkpLlxuXG5BIGNvbnZlcnNpb24gc3BlY2lmaWVyIGNvbnRhaW5zIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgYW5kIGhhcyB0aGVcbmZvbGxvd2luZyBjb21wb25lbnRzLCB3aGljaCBtdXN0IG9jY3VyIGluIHRoaXMgb3JkZXI6XG5cbjEuIFRoZSBgYFwnJVwnYGAgY2hhcmFjdGVyLCB3aGljaCBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlIHNwZWNpZmllci5cblxuMi4gTWFwcGluZyBrZXkgKG9wdGlvbmFsKSwgY29uc2lzdGluZyBvZiBhIHBhcmVudGhlc2lzZWQgc2VxdWVuY2Ugb2ZcbiAgIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLCBgYChzb21lbmFtZSlgYCkuXG5cbjMuIENvbnZlcnNpb24gZmxhZ3MgKG9wdGlvbmFsKSwgd2hpY2ggYWZmZWN0IHRoZSByZXN1bHQgb2Ygc29tZVxuICAgY29udmVyc2lvbiB0eXBlcy5cblxuNC4gTWluaW11bSBmaWVsZCB3aWR0aCAob3B0aW9uYWwpLiAgSWYgc3BlY2lmaWVkIGFzIGFuIGBgXCcqXCdgYFxuICAgKGFzdGVyaXNrKSwgdGhlIGFjdHVhbCB3aWR0aCBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGVcbiAgIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgdGhlIG9iamVjdCB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZVxuICAgbWluaW11bSBmaWVsZCB3aWR0aCBhbmQgb3B0aW9uYWwgcHJlY2lzaW9uLlxuXG41LiBQcmVjaXNpb24gKG9wdGlvbmFsKSwgZ2l2ZW4gYXMgYSBgYFwnLlwnYGAgKGRvdCkgZm9sbG93ZWQgYnkgdGhlXG4gICBwcmVjaXNpb24uICBJZiBzcGVjaWZpZWQgYXMgYGBcJypcJ2BgIChhbiBhc3RlcmlzayksIHRoZSBhY3R1YWxcbiAgIHByZWNpc2lvbiBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgdHVwbGUgaW4gKnZhbHVlcyosXG4gICBhbmQgdGhlIHZhbHVlIHRvIGNvbnZlcnQgY29tZXMgYWZ0ZXIgdGhlIHByZWNpc2lvbi5cblxuNi4gTGVuZ3RoIG1vZGlmaWVyIChvcHRpb25hbCkuXG5cbjcuIENvbnZlcnNpb24gdHlwZS5cblxuV2hlbiB0aGUgcmlnaHQgYXJndW1lbnQgaXMgYSBkaWN0aW9uYXJ5IChvciBvdGhlciBtYXBwaW5nIHR5cGUpLCB0aGVuXG50aGUgZm9ybWF0cyBpbiB0aGUgc3RyaW5nICptdXN0KiBpbmNsdWRlIGEgcGFyZW50aGVzaXNlZCBtYXBwaW5nIGtleVxuaW50byB0aGF0IGRpY3Rpb25hcnkgaW5zZXJ0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGBgXCclXCdgYCBjaGFyYWN0ZXIuXG5UaGUgbWFwcGluZyBrZXkgc2VsZWN0cyB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkIGZyb20gdGhlIG1hcHBpbmcuXG5Gb3IgZXhhbXBsZTpcblxuPj4+IHByaW50KFwnJShsYW5ndWFnZSlzIGhhcyAlKG51bWJlcikwM2QgcXVvdGUgdHlwZXMuXCcgJVxuLi4uICAgICAgIHtcJ2xhbmd1YWdlXCc6ICJQeXRob24iLCAibnVtYmVyIjogMn0pXG5QeXRob24gaGFzIDAwMiBxdW90ZSB0eXBlcy5cblxuSW4gdGhpcyBjYXNlIG5vIGBgKmBgIHNwZWNpZmllcnMgbWF5IG9jY3VyIGluIGEgZm9ybWF0IChzaW5jZSB0aGV5XG5yZXF1aXJlIGEgc2VxdWVudGlhbCBwYXJhbWV0ZXIgbGlzdCkuXG5cblRoZSBjb252ZXJzaW9uIGZsYWcgY2hhcmFjdGVycyBhcmU6XG5cbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgRmxhZyAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBcJyNcJ2BgICAgfCBUaGUgdmFsdWUgY29udmVyc2lvbiB3aWxsIHVzZSB0aGUgImFsdGVybmF0ZSBmb3JtIiAod2hlcmUgZGVmaW5lZCAgICAgfFxufCAgICAgICAgICAgfCBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnMFwnYGAgICB8IFRoZSBjb252ZXJzaW9uIHdpbGwgYmUgemVybyBwYWRkZWQgZm9yIG51bWVyaWMgdmFsdWVzLiAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgXCctXCdgYCAgIHwgVGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBsZWZ0IGFkanVzdGVkIChvdmVycmlkZXMgdGhlIGBgXCcwXCdgYCAgICAgICAgICAgfFxufCAgICAgICAgICAgfCBjb252ZXJzaW9uIGlmIGJvdGggYXJlIGdpdmVuKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnIFwnYGAgICB8IChhIHNwYWNlKSBBIGJsYW5rIHNob3VsZCBiZSBsZWZ0IGJlZm9yZSBhIHBvc2l0aXZlIG51bWJlciAob3IgZW1wdHkgICB8XG58ICAgICAgICAgICB8IHN0cmluZykgcHJvZHVjZWQgYnkgYSBzaWduZWQgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgXCcrXCdgYCAgIHwgQSBzaWduIGNoYXJhY3RlciAoYGBcJytcJ2BgIG9yIGBgXCctXCdgYCkgd2lsbCBwcmVjZWRlIHRoZSBjb252ZXJzaW9uICAgICB8XG58ICAgICAgICAgICB8IChvdmVycmlkZXMgYSAic3BhY2UiIGZsYWcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkEgbGVuZ3RoIG1vZGlmaWVyIChgYGhgYCwgYGBsYGAsIG9yIGBgTGBgKSBtYXkgYmUgcHJlc2VudCwgYnV0IGlzXG5pZ25vcmVkIGFzIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIFB5dGhvbiAtLSBzbyBlLmcuIGBgJWxkYGAgaXNcbmlkZW50aWNhbCB0byBgYCVkYGAuXG5cblRoZSBjb252ZXJzaW9uIHR5cGVzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBDb252ZXJzaW9uICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFwnZFwnYGAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdpXCdgYCAgICAgIHwgU2lnbmVkIGludGVnZXIgZGVjaW1hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ29cJ2BgICAgICAgfCBTaWduZWQgb2N0YWwgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgxKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwndVwnYGAgICAgICB8IE9ic29sZXRlIHR5cGUgLS0gaXQgaXMgaWRlbnRpY2FsIHRvIGBgXCdkXCdgYC4gICAgICAgICAgfCAoNykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3hcJ2BgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKGxvd2VyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnWFwnYGAgICAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAodXBwZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICAgIHwgKDIpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdlXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0IChsb3dlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ0VcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKHVwcGVyY2FzZSkuICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnZlwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdGXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZGVjaW1hbCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ2dcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgbG93ZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnR1wnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyB1cHBlcmNhc2UgZXhwb25lbnRpYWwgICAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdjXCdgYCAgICAgIHwgU2luZ2xlIGNoYXJhY3RlciAoYWNjZXB0cyBpbnRlZ2VyIG9yIHNpbmdsZSBjaGFyYWN0ZXIgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgc3RyaW5nKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3JcJ2BgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIGBgcmVwcigpYGApLiB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnc1wnYGAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgYGBzdHIoKWBgKS4gIHwgKDUpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdhXCdgYCAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyAgICAgICAgICAgICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgIHwgYGBhc2NpaSgpYGApLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJyVcJ2BgICAgICAgfCBObyBhcmd1bWVudCBpcyBjb252ZXJ0ZWQsIHJlc3VsdHMgaW4gYSBgYFwnJVwnYGAgICAgICAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IGNoYXJhY3RlciBpbiB0aGUgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyB6ZXJvIChgYFwnMFwnYGApIHRvIGJlIGluc2VydGVkXG4gICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZVxuICAgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uXG5cbjIuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgYSBsZWFkaW5nIGBgXCcweFwnYGAgb3IgYGBcJzBYXCdgYCAoZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZSBgYFwneFwnYGAgb3IgYGBcJ1hcJ2BgIGZvcm1hdCB3YXMgdXNlZCkgdG8gYmUgaW5zZXJ0ZWRcbiAgIGJldHdlZW4gbGVmdC1oYW5kIHBhZGRpbmcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlXG4gICBsZWFkaW5nIGNoYXJhY3RlciBvZiB0aGUgcmVzdWx0IGlzIG5vdCBhbHJlYWR5IGEgemVyby5cblxuMy4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbFxuICAgcG9pbnQsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsXG4gICBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNC4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbFxuICAgcG9pbnQsIGFuZCB0cmFpbGluZyB6ZXJvZXMgYXJlIG5vdCByZW1vdmVkIGFzIHRoZXkgd291bGQgb3RoZXJ3aXNlXG4gICBiZS5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGJlZm9yZVxuICAgYW5kIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBkZWZhdWx0cyB0byA2LlxuXG41LiBJZiBwcmVjaXNpb24gaXMgYGBOYGAsIHRoZSBvdXRwdXQgaXMgdHJ1bmNhdGVkIHRvIGBgTmBgIGNoYXJhY3RlcnMuXG5cbjEuIFNlZSAqKlBFUCAyMzcqKi5cblxuU2luY2UgUHl0aG9uIHN0cmluZ3MgaGF2ZSBhbiBleHBsaWNpdCBsZW5ndGgsIGBgJXNgYCBjb252ZXJzaW9ucyBkb1xubm90IGFzc3VtZSB0aGF0IGBgXCdcXDBcJ2BgIGlzIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogYGAlZmBgIGNvbnZlcnNpb25zIGZvciBudW1iZXJzIHdob3NlIGFic29sdXRlXG52YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vIGxvbmdlciByZXBsYWNlZCBieSBgYCVnYGAgY29udmVyc2lvbnMuXG5cbkFkZGl0aW9uYWwgc3RyaW5nIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgaW4gc3RhbmRhcmQgbW9kdWxlc1xuYGBzdHJpbmdgYCBhbmQgYGByZWBgLlxuXG5cblJhbmdlIFR5cGVcbj09PT09PT09PT1cblxuVGhlIGBgcmFuZ2VgYCB0eXBlIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB3aGljaCBpcyBjb21tb25seSB1c2VkIGZvclxubG9vcGluZy4gIFRoZSBhZHZhbnRhZ2Ugb2YgdGhlIGBgcmFuZ2VgYCB0eXBlIGlzIHRoYXQgYW4gYGByYW5nZWBgXG5vYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSBhbW91bnQgb2YgbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemVcbm9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzLlxuXG5SYW5nZSBvYmplY3RzIGhhdmUgcmVsYXRpdmVseSBsaXR0bGUgYmVoYXZpb3I6IHRoZXkgc3VwcG9ydCBpbmRleGluZyxcbmNvbnRhaW5zLCBpdGVyYXRpb24sIHRoZSBgYGxlbigpYGAgZnVuY3Rpb24sIGFuZCB0aGUgZm9sbG93aW5nXG5tZXRob2RzOlxuXG5yYW5nZS5jb3VudCh4KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiAqaSpcJ3MgZm9yIHdoaWNoIGBgc1tpXSA9PSB4YGAuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxucmFuZ2UuaW5kZXgoeClcblxuICAgUmV0dXJuIHRoZSBzbWFsbGVzdCAqaSogc3VjaCB0aGF0IGBgc1tpXSA9PSB4YGAuICBSYWlzZXNcbiAgIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBpbiB0aGUgcmFuZ2UuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkxpc3QgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgYWRkaXRpb25hbCBvcGVyYXRpb25zIHRoYXQgYWxsb3dcbmluLXBsYWNlIG1vZGlmaWNhdGlvbiBvZiB0aGUgb2JqZWN0LiAgT3RoZXIgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlc1xuKHdoZW4gYWRkZWQgdG8gdGhlIGxhbmd1YWdlKSBzaG91bGQgYWxzbyBzdXBwb3J0IHRoZXNlIG9wZXJhdGlvbnMuXG5TdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczogc3VjaCBvYmplY3RzIGNhbm5vdFxuYmUgbW9kaWZpZWQgb25jZSBjcmVhdGVkLiBUaGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgb25cbm11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZXJlICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0KS5cblxuTm90ZSB0aGF0IHdoaWxlIGxpc3RzIGFsbG93IHRoZWlyIGl0ZW1zIHRvIGJlIG9mIGFueSB0eXBlLCBieXRlYXJyYXlcbm9iamVjdCAiaXRlbXMiIGFyZSBhbGwgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFt4XWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuZXh0ZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSA9IHhgYCB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KHgpYGAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSpcJ3MgZm9yIHdoaWNoIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5pbmRleCh4WywgaVssIGpdXSlgYCAgICAgICB8IHJldHVybiBzbWFsbGVzdCAqayogc3VjaCB0aGF0ICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2tdID09IHhgYCBhbmQgYGBpIDw9IGsgPCBqYGAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6aV0gPSBbeF1gYCAgICAgICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgeCA9IHNbaV07IGRlbCBzW2ldOyAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiB4YGAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgZGVsIHNbcy5pbmRleCh4KV1gYCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnNvcnQoW2tleVssIHJldmVyc2VdXSlgYCAgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqIGluIHBsYWNlICAgfCAoNiksICg3KSwgKDgpICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiAqeCogY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuXG5cbjMuIFJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuIGEgbmVnYXRpdmVcbiAgIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgc2Vjb25kIG9yIHRoaXJkIHBhcmFtZXRlciB0byB0aGUgYGBpbmRleCgpYGBcbiAgIG1ldGhvZCwgdGhlIHNlcXVlbmNlIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlIGluZGljZXMuICBJZiBpdFxuICAgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZCB0byB6ZXJvLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy5cblxuNC4gV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIHRoZVxuICAgYGBpbnNlcnQoKWBgIG1ldGhvZCwgdGhlIHNlcXVlbmNlIGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yIHNsaWNlXG4gICBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZCB0byB6ZXJvLCBhcyBmb3JcbiAgIHNsaWNlIGluZGljZXMuXG5cbjUuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHRcbiAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjYuIFRoZSBgYHNvcnQoKWBgIGFuZCBgYHJldmVyc2UoKWBgIG1ldGhvZHMgbW9kaWZ5IHRoZSBzZXF1ZW5jZSBpblxuICAgcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiBzb3J0aW5nIG9yIHJldmVyc2luZyBhIGxhcmdlXG4gICBzZXF1ZW5jZS4gIFRvIHJlbWluZCB5b3UgdGhhdCB0aGV5IG9wZXJhdGUgYnkgc2lkZSBlZmZlY3QsIHRoZXlcbiAgIGRvblwndCByZXR1cm4gdGhlIHNvcnRlZCBvciByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNy4gVGhlIGBgc29ydCgpYGAgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgdGhlXG4gICBjb21wYXJpc29ucy4gIEVhY2ggbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LlxuXG4gICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3RcbiAgIGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogYGBrZXk9c3RyLmxvd2VyYGAuICBUaGVcbiAgIGRlZmF1bHQgdmFsdWUgaXMgYGBOb25lYGAuIFVzZSBgYGZ1bmN0b29scy5jbXBfdG9fa2V5KClgYCB0b1xuICAgY29udmVydCBhbiBvbGQtc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdFxuICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cblxuICAgVGhlIGBgc29ydCgpYGAgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZVxuICAgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0XG4gICBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW4gbXVsdGlwbGUgcGFzc2VzXG4gICAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIGlmIGl0IGNhbiBkZXRlY3RcbiAgIHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG44LiBgYHNvcnQoKWBgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYGBieXRlYXJyYXlgYCBvYmplY3RzLlxuXG5cbkJ5dGVzIGFuZCBCeXRlIEFycmF5IE1ldGhvZHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzLCBiZWluZyAic3RyaW5ncyBvZiBieXRlcyIsIGhhdmUgYWxsXG5tZXRob2RzIGZvdW5kIG9uIHN0cmluZ3MsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgYGVuY29kZSgpYGAsXG5gYGZvcm1hdCgpYGAgYW5kIGBgaXNpZGVudGlmaWVyKClgYCwgd2hpY2ggZG8gbm90IG1ha2Ugc2Vuc2Ugd2l0aFxudGhlc2UgdHlwZXMuICBGb3IgY29udmVydGluZyB0aGUgb2JqZWN0cyB0byBzdHJpbmdzLCB0aGV5IGhhdmUgYVxuYGBkZWNvZGUoKWBgIG1ldGhvZC5cblxuV2hlcmV2ZXIgb25lIG9mIHRoZXNlIG1ldGhvZHMgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhc1xuY2hhcmFjdGVycyAoZS5nLiB0aGUgYGBpcy4uLigpYGAgbWV0aG9kcyksIHRoZSBBU0NJSSBjaGFyYWN0ZXIgc2V0IGlzXG5hc3N1bWVkLlxuXG5Ob3RlOiBUaGUgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgZG9uXCd0IGFjY2VwdCBzdHJpbmdzIGFzXG4gIHRoZWlyIGFyZ3VtZW50cywganVzdCBhcyB0aGUgbWV0aG9kcyBvbiBzdHJpbmdzIGRvblwndCBhY2NlcHQgYnl0ZXNcbiAgYXMgdGhlaXIgYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIHlvdSBoYXZlIHRvIHdyaXRlXG5cbiAgICAgYSA9ICJhYmMiXG4gICAgIGIgPSBhLnJlcGxhY2UoImEiLCAiZiIpXG5cbiAgYW5kXG5cbiAgICAgYSA9IGIiYWJjIlxuICAgICBiID0gYS5yZXBsYWNlKGIiYSIsIGIiZiIpXG5cbmJ5dGVzLmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5ieXRlYXJyYXkuZGVjb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGEgc3RyaW5nIGRlY29kZWQgZnJvbSB0aGUgZ2l2ZW4gYnl0ZXMuICBEZWZhdWx0IGVuY29kaW5nIGlzXG4gICBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG4gICBoYW5kbGluZyBzY2hlbWUuICBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsIG1lYW5pbmdcbiAgIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlIGBgXCdpZ25vcmVcJ2BgLCBgYFwncmVwbGFjZVwnYGAgYW5kIGFueSBvdGhlciBuYW1lXG4gICByZWdpc3RlcmVkIHZpYSBgYGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpYGAsIHNlZSBzZWN0aW9uICpDb2RlYyBCYXNlXG4gICBDbGFzc2VzKi4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZFxuICAgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgc3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMuXG5cblRoZSBieXRlcyBhbmQgYnl0ZWFycmF5IHR5cGVzIGhhdmUgYW4gYWRkaXRpb25hbCBjbGFzcyBtZXRob2Q6XG5cbmNsYXNzbWV0aG9kIGJ5dGVzLmZyb21oZXgoc3RyaW5nKVxuY2xhc3NtZXRob2QgYnl0ZWFycmF5LmZyb21oZXgoc3RyaW5nKVxuXG4gICBUaGlzIGBgYnl0ZXNgYCBjbGFzcyBtZXRob2QgcmV0dXJucyBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QsXG4gICBkZWNvZGluZyB0aGUgZ2l2ZW4gc3RyaW5nIG9iamVjdC4gIFRoZSBzdHJpbmcgbXVzdCBjb250YWluIHR3b1xuICAgaGV4YWRlY2ltYWwgZGlnaXRzIHBlciBieXRlLCBzcGFjZXMgYXJlIGlnbm9yZWQuXG5cbiAgID4+PiBieXRlcy5mcm9taGV4KFwnZjAgZjFmMiAgXCcpXG4gICBiXCdcXHhmMFxceGYxXFx4ZjJcJ1xuXG5UaGUgbWFrZXRyYW5zIGFuZCB0cmFuc2xhdGUgbWV0aG9kcyBkaWZmZXIgaW4gc2VtYW50aWNzIGZyb20gdGhlXG52ZXJzaW9ucyBhdmFpbGFibGUgb24gc3RyaW5nczpcblxuYnl0ZXMudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSlcbmJ5dGVhcnJheS50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0IHdoZXJlIGFsbCBieXRlc1xuICAgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlKiBhcmUgcmVtb3ZlZCwgYW5kIHRoZVxuICAgcmVtYWluaW5nIGJ5dGVzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb25cbiAgIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG5cbiAgIFlvdSBjYW4gdXNlIHRoZSBgYGJ5dGVzLm1ha2V0cmFucygpYGAgbWV0aG9kIHRvIGNyZWF0ZSBhXG4gICB0cmFuc2xhdGlvbiB0YWJsZS5cblxuICAgU2V0IHRoZSAqdGFibGUqIGFyZ3VtZW50IHRvIGBgTm9uZWBgIGZvciB0cmFuc2xhdGlvbnMgdGhhdCBvbmx5XG4gICBkZWxldGUgY2hhcmFjdGVyczpcblxuICAgICAgPj4+IGJcJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0XCcudHJhbnNsYXRlKE5vbmUsIGJcJ2FlaW91XCcpXG4gICAgICBiXCdyZCB0aHMgc2hydCB0eHRcJ1xuXG5zdGF0aWMgYnl0ZXMubWFrZXRyYW5zKGZyb20sIHRvKVxuc3RhdGljIGJ5dGVhcnJheS5tYWtldHJhbnMoZnJvbSwgdG8pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBieXRlcy50cmFuc2xhdGUoKWBgIHRoYXQgd2lsbCBtYXAgZWFjaCBjaGFyYWN0ZXIgaW4gKmZyb20qIGludG9cbiAgIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4gKnRvKjsgKmZyb20qIGFuZCAqdG8qIG11c3QgYmVcbiAgIGJ5dGVzIG9iamVjdHMgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjEuXG4nLAotICd0eXBlc3NlcS1tdXRhYmxlJzogJ1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCkuXG5cbk5vdGUgdGhhdCB3aGlsZSBsaXN0cyBhbGxvdyB0aGVpciBpdGVtcyB0byBiZSBvZiBhbnkgdHlwZSwgYnl0ZWFycmF5XG5vYmplY3QgIml0ZW1zIiBhcmUgYWxsIGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSB4YGAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgamBgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5zb3J0KFtrZXlbLCByZXZlcnNlXV0pYGAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDYpLCAoNyksICg4KSAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gKngqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG4zLiBSYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlXG4gICBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGBgaW5kZXgoKWBgXG4gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXRcbiAgIGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuXG5cbjQuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgIGBgaW5zZXJ0KClgYCBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZVxuICAgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yXG4gICBzbGljZSBpbmRpY2VzLlxuXG41LiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG42LiBUaGUgYGBzb3J0KClgYCBhbmQgYGByZXZlcnNlKClgYCBtZXRob2RzIG1vZGlmeSB0aGUgc2VxdWVuY2UgaW5cbiAgIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZVxuICAgc2VxdWVuY2UuICBUbyByZW1pbmQgeW91IHRoYXQgdGhleSBvcGVyYXRlIGJ5IHNpZGUgZWZmZWN0LCB0aGV5XG4gICBkb25cJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjcuIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCB0YWtlcyBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGNvbnRyb2xsaW5nIHRoZVxuICAgY29tcGFyaXNvbnMuICBFYWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6IGBga2V5PXN0ci5sb3dlcmBgLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLiBVc2UgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdG9cbiAgIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGVcbiAgIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICAgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3Nlc1xuICAgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW4gZGV0ZWN0XG4gICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuOC4gYGBzb3J0KClgYCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGBgYnl0ZWFycmF5YGAgb2JqZWN0cy5cbicsCisgJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgbGlzdGBgLCBgYHR1cGxlYGAsIGBgcmFuZ2VgYFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxub2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAqYmluYXJ5XG5kYXRhKiBhbmQgKnRleHQgc3RyaW5ncyogYXJlIGRlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuXG5cblxuQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlXG50eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSBgYGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWBgXG5BQkMgaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZVxub3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eVxuKG9wZXJhdGlvbnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkpLiAgSW4gdGhlIHRhYmxlLFxuKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKiwgKmoqIGFuZCAqayogYXJlXG5pbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmQgdmFsdWVcbnJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGVcbmNvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlIGBgK2BgIChjb25jYXRlbmF0aW9uKSBhbmQgYGAqYGBcbihyZXBldGl0aW9uKSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmdcbm51bWVyaWMgb3BlcmF0aW9ucy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCBgYHggaW4gc2BgICAgICAgICAgICAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHggbm90IGluIHNgYCAgICAgICAgICAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMgKyB0YGAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbmBgIG9yIGBgbiAqIHNgYCAgICAgfCAqbiogc2hhbGxvdyBjb3BpZXMgb2YgKnMqICAgICAgICB8ICgyKSg3KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYGxlbihzKWBgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWF4KHMpYGAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgIHwgKDgpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsXG50dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbmNvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbnR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW5cbnRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hpbGUgdGhlIGBgaW5gYCBhbmQgYGBub3QgaW5gYCBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgYGBzdHJgYCwgYGBieXRlc2BgIGFuZCBgYGJ5dGVhcnJheWBgKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1tdLCBbXSwgW11dXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC5cbiAgIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb25cbiAgIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHNlcXVlbmNlIGxlbmd0aC5cbiAgIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0byBvbmUgb2YgdGhlXG4gICBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHN0cmBgIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2VcbiAgICAgYGBzdHIuam9pbigpYGAgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgYGBpby5TdHJpbmdJT2BgXG4gICAgIGluc3RhbmNlIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBieXRlc2BgIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuICAgICBgYGJ5dGVzLmpvaW4oKWBgIG9yIGBgaW8uQnl0ZXNJT2BgLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlXG4gICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhIGBgYnl0ZWFycmF5YGAgb2JqZWN0LiAgYGBieXRlYXJyYXlgYCBvYmplY3RzXG4gICAgIGFyZSBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgdHVwbGVgYCBvYmplY3RzLCBleHRlbmQgYSBgYGxpc3RgYCBpbnN0ZWFkXG5cbiAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvblxuXG43LiBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIGBgcmFuZ2VgYCkgb25seSBzdXBwb3J0IGl0ZW0gc2VxdWVuY2VzXG4gICB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0IHNlcXVlbmNlXG4gICBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguIGBgaW5kZXhgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlblxuICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCBhbGxvd1xuICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgdGhlXG4gICBleHRyYSBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgc1tpOmpdLmluZGV4KHgpYGAsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlIGBgaGFzaCgpYGAgYnVpbHQtaW4uXG5cblRoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyBgYHR1cGxlYGAgaW5zdGFuY2VzLFxudG8gYmUgdXNlZCBhcyBgYGRpY3RgYCBrZXlzIGFuZCBzdG9yZWQgaW4gYGBzZXRgYCBhbmQgYGBmcm96ZW5zZXRgYFxuaW5zdGFuY2VzLlxuXG5BdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZVxudmFsdWVzIHdpbGwgcmVzdWx0IGluIGBgVHlwZUVycm9yYGAuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYGAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgYGBieXRlYXJyYXlgYCBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYCAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ID0gdGBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6aV0gPSBbeF1gYCkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiBgYHJlbW92ZWBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgYGByZXZlcnNlKClgYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215XG4gICBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXRcbiAgIG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLlxuXG41LiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cblxuXG5MaXN0c1xuPT09PT1cblxuTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgdmFyeSBieVxuYXBwbGljYXRpb24pLlxuXG5jbGFzcyBjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG5cbiAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6IGBgW11gYFxuXG4gICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYV1gYCxcbiAgICAgYGBbYSwgYiwgY11gYFxuXG4gICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiBgYFt4IGZvciB4IGluIGl0ZXJhYmxlXWBgXG5cbiAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6IGBgbGlzdCgpYGAgb3IgYGBsaXN0KGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4gICByZXR1cm5lZCwgc2ltaWxhciB0byBgYGl0ZXJhYmxlWzpdYGAuIEZvciBleGFtcGxlLCBgYGxpc3QoXCdhYmNcJylgYFxuICAgcmV0dXJucyBgYFtcJ2FcJywgXCdiXCcsIFwnY1wnXWBgIGFuZCBgYGxpc3QoICgxLCAyLCAzKSApYGAgcmV0dXJucyBgYFsxLFxuICAgMiwgM11gYC4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3XG4gICBlbXB0eSBsaXN0LCBgYFtdYGAuXG5cbiAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGVcbiAgIGBgc29ydGVkKClgYCBidWlsdC1pbi5cblxuICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogYW5kICptdXRhYmxlKiBzZXF1ZW5jZVxuICAgb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG5cbiAgIHNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSlcblxuICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgYGA8YGBcbiAgICAgIGNvbXBhcmlzb25zIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWZcbiAgICAgIGFueSBjb21wYXJpc29uIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsXG4gICAgICBmYWlsIChhbmQgdGhlIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZFxuICAgICAgc3RhdGUpLlxuXG4gICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvXG4gICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yIGV4YW1wbGUsXG4gICAgICBgYGtleT1zdHIubG93ZXJgYCkuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gdGhlXG4gICAgICBsaXN0IGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmdcbiAgICAgIHByb2Nlc3MuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmVcbiAgICAgIHNvcnRlZCBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhXG4gICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiB0aGUgbGlzdFxuICAgICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cblxuICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlXG4gICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzXG4gICAgICBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgKHVzZVxuICAgICAgYGBzb3J0ZWQoKWBgIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpc1xuICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2ZcbiAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluXG4gICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5XG4gICAgICBncmFkZSkuXG5cbiAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuXG4gICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cblxuVHVwbGVzXG49PT09PT1cblxuVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGVcbmBgZW51bWVyYXRlKClgYCBidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhblxuaW1tdXRhYmxlIHNlcXVlbmNlIG9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nXG5zdG9yYWdlIGluIGEgYGBzZXRgYCBvciBgYGRpY3RgYCBpbnN0YW5jZSkuXG5cbmNsYXNzIGNsYXNzIHR1cGxlKFtpdGVyYWJsZV0pXG5cbiAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcblxuICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogYGAoKWBgXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6IGBgYSxgYCBvciBgYChhLClgYFxuXG4gICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgYSwgYiwgY2BgIG9yIGBgKGEsIGIsIGMpYGBcblxuICAgKiBVc2luZyB0aGUgYGB0dXBsZSgpYGAgYnVpbHQtaW46IGBgdHVwbGUoKWBgIG9yXG4gICAgIGBgdHVwbGUoaXRlcmFibGUpYGBcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4gICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCBgYHR1cGxlKFwnYWJjXCcpYGAgcmV0dXJucyBgYChcJ2FcJywgXCdiXCcsXG4gICBcJ2NcJylgYCBhbmQgYGB0dXBsZSggWzEsIDIsIDNdIClgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuIElmIG5vXG4gICBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsXG4gICBgYCgpYGAuXG5cbiAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZVxuICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHlcbiAgIHR1cGxlIGNhc2UsIG9yIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuXG4gICBGb3IgZXhhbXBsZSwgYGBmKGEsIGIsIGMpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWVcbiAgIGFyZ3VtZW50cywgd2hpbGUgYGBmKChhLCBiLCBjKSlgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGVcbiAgIGFzIHRoZSBzb2xlIGFyZ3VtZW50LlxuXG4gICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucy5cblxuRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyBjbGVhcmVyXG50aGFuIGFjY2VzcyBieSBpbmRleCwgYGBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKClgYCBtYXkgYmUgYSBtb3JlXG5hcHByb3ByaWF0ZSBjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuXG5cblxuUmFuZ2VzXG49PT09PT1cblxuVGhlIGBgcmFuZ2VgYCB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluIGBgZm9yYGAgbG9vcHMuXG5cbmNsYXNzIGNsYXNzIHJhbmdlKFtzdGFydF0sIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiBgYGludGBgIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBgYF9faW5kZXhfX2BgXG4gICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvXG4gICBgYDFgYC4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAwYGAuIElmXG4gICAqc3RlcCogaXMgemVybywgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlIGBgcmBgIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSBgYHJbaV0gPSBzdGFydCArIHN0ZXAqaWBgIHdoZXJlIGBgaSA+PSAwYGAgYW5kXG4gICBgYHJbaV0gPCBzdG9wYGAuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCwgYnV0IHRoZVxuICAgY29uc3RyYWludHMgYXJlIGBgaSA+PSAwYGAgYW5kIGBgcltpXSA+IHN0b3BgYC5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiBgYHJbMF1gYCBkb2VzIG5vdCBtZWFudCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiBgYHN5cy5tYXhzaXplYGAgYXJlXG4gICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgYGBsZW4oKWBgKSBtYXkgcmFpc2VcbiAgIGBgT3ZlcmZsb3dFcnJvcmBgLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBvdmVyIGEgcmVndWxhciBgYGxpc3RgYCBvclxuYGB0dXBsZWBgIGlzIHRoYXQgYSBgYHJhbmdlYGAgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKVxuYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdFxub25seSBzdG9yZXMgdGhlIGBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIHZhbHVlcywgY2FsY3VsYXRpbmdcbmluZGl2aWR1YWwgaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuXG5SYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgYGBjb2xsZWN0aW9ucy5TZXF1ZW5jZWBgIEFCQywgYW5kIHByb3ZpZGVcbmZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLCBzbGljaW5nIGFuZFxuc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS0gbGlzdCwgdHVwbGUsXG5yYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCBgYD09YGAgYW5kIGBgIT1gYCBjb21wYXJlc1xudGhlbSBhcyBzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZlxudGhleSByZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2Vcbm9iamVjdHMgdGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50IGBgc3RhcnRgYCwgYGBzdG9wYGBcbmFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSBgYHJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpYGAgb3JcbmBgcmFuZ2UoMCwgMywgMikgPT0gcmFuZ2UoMCwgNCwgMilgYC4pXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0IHNsaWNpbmdcbmFuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0IGBgaW50YGAgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudFxudGltZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lIFwnPT1cJyBhbmQgXCchPVwnIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0c1xuYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmdcbmJhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlIGBgc3RhcnRgYCwgYGBzdG9wYGAgYW5kIGBgc3RlcGBgIGF0dHJpYnV0ZXMuXG4nLAorICd0eXBlc3NlcS1tdXRhYmxlJzogIlxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYGAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgYGBieXRlYXJyYXlgYCBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gYGAwIDw9IHggPD0gMjU1YGApLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbbGVuKHMpOmxlbihzKV0gPSBbeF1gYCkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNsZWFyKClgYCAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSBgYHNgYCAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYGRlbCBzWzpdYGApICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmNvcHkoKWBgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiBgYHNgYCAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbOl1gYCkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh0KWBgICAgICAgICAgICAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ID0gdGBgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6aV0gPSBbeF1gYCkgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgYGBzW2ldID09IHhgYCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiBgYHJlbW92ZWBgIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgYGByZXZlcnNlKClgYCBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215XG4gICBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXRcbiAgIG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkIHNlcXVlbmNlLlxuXG41LiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyBgYGRpY3RgYCBhbmQgYGBzZXRgYClcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBgYGNsZWFyKClgYCBhbmQgYGBjb3B5KClgYCBtZXRob2RzLlxuIiwKICAndW5hcnknOiAnXG5VbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHk6XG5cbiAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcblxuVGhlIHVuYXJ5IGBgLWBgIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuYXJndW1lbnQuXG5cblRoZSB1bmFyeSBgYCtgYCAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5IGBgfmBgIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgaXRzXG5pbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGBgeGBgIGlzIGRlZmluZWQgYXNcbmBgLSh4KzEpYGAuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCiAgJ3doaWxlJzogJ1xuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZiBwcmVzZW50LCBpc1xuZXhlY3V0ZWQgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmdvZXMgYmFjayB0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKICAnd2l0aCc6ICdcblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vblxuYGB0cnlgYC4uLmBgZXhjZXB0YGAuLi5gYGZpbmFsbHlgYCB1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWRcbmZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSBgYHdpdGhfaXRlbWBgKVxuICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cblxuMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZW50ZXJfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4gICB2YWx1ZSBmcm9tIGBgX19lbnRlcl9fKClgYCBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlIGBgd2l0aGBgIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlIGBgX19lbnRlcl9fKClgYFxuICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuIGBgX19leGl0X18oKWBgIHdpbGwgYWx3YXlzXG4gICAgIGJlIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBgYF9fZXhpdF9fKClgYC4gT3RoZXJ3aXNlLFxuICAgdGhyZWUgYGBOb25lYGAgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlIGBgX19leGl0X18oKWBgIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXNcbiAgIHJlcmFpc2VkLiAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgc3VwcHJlc3NlZCwgYW5kIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZ1xuICAgdGhlIGBgd2l0aGBgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gYGBfX2V4aXRfXygpYGAgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlIGBgd2l0aGBgIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob25cbiAgICAgIGBgd2l0aGBgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogJ1xuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYSBnZW5lcmF0b3JcbmZ1bmN0aW9uLCBhbmQgaXMgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uXG5Vc2luZyBhIGBgeWllbGRgYCBzdGF0ZW1lbnQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG9cbmNhdXNlIHRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhXG5ub3JtYWwgZnVuY3Rpb24uIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuXG5pdGVyYXRvciBrbm93biBhcyBhIGdlbmVyYXRvciBpdGVyYXRvciwgb3IgbW9yZSBjb21tb25seSwgYSBnZW5lcmF0b3IuXG5UaGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlXG5gYG5leHQoKWBgIGZ1bmN0aW9uIG9uIHRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi5cblxuV2hlbiBhIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQsIHRoZSBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGlzXG5mcm96ZW4gYW5kIHRoZSB2YWx1ZSBvZiBgYGV4cHJlc3Npb25fbGlzdGBgIGlzIHJldHVybmVkIHRvXG5gYG5leHQoKWBgXCdzIGNhbGxlci4gIEJ5ICJmcm96ZW4iIHdlIG1lYW4gdGhhdCBhbGwgbG9jYWwgc3RhdGUgaXNcbnJldGFpbmVkLCBpbmNsdWRpbmcgdGhlIGN1cnJlbnQgYmluZGluZ3Mgb2YgbG9jYWwgdmFyaWFibGVzLCB0aGVcbmluc3RydWN0aW9uIHBvaW50ZXIsIGFuZCB0aGUgaW50ZXJuYWwgZXZhbHVhdGlvbiBzdGFjazogZW5vdWdoXG5pbmZvcm1hdGlvbiBpcyBzYXZlZCBzbyB0aGF0IHRoZSBuZXh0IHRpbWUgYGBuZXh0KClgYCBpcyBpbnZva2VkLCB0aGVcbmZ1bmN0aW9uIGNhbiBwcm9jZWVkIGV4YWN0bHkgYXMgaWYgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgd2VyZSBqdXN0XG5hbm90aGVyIGV4dGVybmFsIGNhbGwuXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGFsbG93ZWQgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlIG9mIGEgYGB0cnlgYFxuLi4uICBgYGZpbmFsbHlgYCBjb25zdHJ1Y3QuICBJZiB0aGUgZ2VuZXJhdG9yIGlzIG5vdCByZXN1bWVkIGJlZm9yZSBpdFxuaXMgZmluYWxpemVkIChieSByZWFjaGluZyBhIHplcm8gcmVmZXJlbmNlIGNvdW50IG9yIGJ5IGJlaW5nIGdhcmJhZ2VcbmNvbGxlY3RlZCksIHRoZSBnZW5lcmF0b3ItaXRlcmF0b3JcJ3MgYGBjbG9zZSgpYGAgbWV0aG9kIHdpbGwgYmVcbmNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgYGBmaW5hbGx5YGAgY2xhdXNlcyB0byBleGVjdXRlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDI1NSoqIC0gU2ltcGxlIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4gICAgICB0byBQeXRob24uXG5cbiAgICoqUEVQIDAzNDIqKiAtIENvcm91dGluZXMgdmlhIEVuaGFuY2VkIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCB0aGF0LCBhbW9uZyBvdGhlciBnZW5lcmF0b3IgZW5oYW5jZW1lbnRzLCBwcm9wb3NlZFxuICAgICAgYWxsb3dpbmcgYGB5aWVsZGBgIHRvIGFwcGVhciBpbnNpZGUgYSBgYHRyeWBgIC4uLiBgYGZpbmFsbHlgYFxuICAgICAgYmxvY2suXG4nfQorICd5aWVsZCc6ICdcblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yXG5mdW5jdGlvbiwgYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuVXNpbmcgYSBgYHlpZWxkYGAgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvXG5jYXVzZSB0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYVxubm9ybWFsIGZ1bmN0aW9uLlxuXG5XaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhbiBpdGVyYXRvciBrbm93biBhcyBhXG5nZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLiAgVGhlIGJvZHkgb2YgdGhlXG5nZW5lcmF0b3IgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYnkgY2FsbGluZyB0aGUgYGBuZXh0KClgYCBmdW5jdGlvbiBvblxudGhlIGdlbmVyYXRvciByZXBlYXRlZGx5IHVudGlsIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cbldoZW4gYSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkLCB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBpc1xuZnJvemVuIGFuZCB0aGUgdmFsdWUgb2YgYGBleHByZXNzaW9uX2xpc3RgYCBpcyByZXR1cm5lZCB0b1xuYGBuZXh0KClgYFwncyBjYWxsZXIuICBCeSAiZnJvemVuIiB3ZSBtZWFuIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzXG5yZXRhaW5lZCwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlXG5pbnN0cnVjdGlvbiBwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaFxuaW5mb3JtYXRpb24gaXMgc2F2ZWQgc28gdGhhdCB0aGUgbmV4dCB0aW1lIGBgbmV4dCgpYGAgaXMgaW52b2tlZCwgdGhlXG5mdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IHdlcmUganVzdFxuYW5vdGhlciBleHRlcm5hbCBjYWxsLlxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSBgYHRyeWBgIGNsYXVzZSBvZiBhIGBgdHJ5YGBcbi4uLiAgYGBmaW5hbGx5YGAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgcmVzdW1lZCBiZWZvcmUgaXRcbmlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZyBnYXJiYWdlXG5jb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yXCdzIGBgY2xvc2UoKWBgIG1ldGhvZCB3aWxsIGJlXG5jYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIGBgZmluYWxseWBgIGNsYXVzZXMgdG8gZXhlY3V0ZS5cblxuV2hlbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgdXNlZCwgaXQgdHJlYXRzIHRoZSBzdXBwbGllZCBleHByZXNzaW9uXG5hcyBhIHN1Yml0ZXJhdG9yLCBwcm9kdWNpbmcgdmFsdWVzIGZyb20gaXQgdW50aWwgdGhlIHVuZGVybHlpbmdcbml0ZXJhdG9yIGlzIGV4aGF1c3RlZC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlXG4gICBjb250cm9sIGZsb3cgdG8gYSBzdWJpdGVyYXRvclxuXG5Gb3IgZnVsbCBkZXRhaWxzIG9mIGBgeWllbGRgYCBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMDI1NSoqIC0gU2ltcGxlIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4gICAgICB0byBQeXRob24uXG5cbiAgICoqUEVQIDAzNDIqKiAtIENvcm91dGluZXMgdmlhIEVuaGFuY2VkIEdlbmVyYXRvcnNcbiAgICAgIFRoZSBwcm9wb3NhbCB0byBlbmhhbmNlIHRoZSBBUEkgYW5kIHN5bnRheCBvZiBnZW5lcmF0b3JzLCBtYWtpbmdcbiAgICAgIHRoZW0gdXNhYmxlIGFzIHNpbXBsZSBjb3JvdXRpbmVzLlxuXG4gICAqKlBFUCAwMzgwKiogLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3JcbiAgICAgIFRoZSBwcm9wb3NhbCB0byBpbnRyb2R1Y2UgdGhlIGBgeWllbGRfZnJvbWBgIHN5bnRheCwgbWFraW5nXG4gICAgICBkZWxlZ2F0aW9uIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3F1ZXVlLnB5IGIvTGliL3F1ZXVlLnB5CmluZGV4IGJlZTdlZDQuLmMzMjk2ZmUgMTAwNjQ0Ci0tLSBhL0xpYi9xdWV1ZS5weQorKysgYi9MaWIvcXVldWUucHkKQEAgLTEsNDkgKzEsNTcgQEAKLSIiIkEgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIHF1ZXVlLiIiIgorJycnQSBtdWx0aS1wcm9kdWNlciwgbXVsdGktY29uc3VtZXIgcXVldWUuJycnCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcgYXMgX3RocmVhZGluZworICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKKyAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWltcG9ydCBoZWFwcQorZnJvbSBoZWFwcSBpbXBvcnQgaGVhcHB1c2gsIGhlYXBwb3AKK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lCiAKIF9fYWxsX18gPSBbJ0VtcHR5JywgJ0Z1bGwnLCAnUXVldWUnLCAnUHJpb3JpdHlRdWV1ZScsICdMaWZvUXVldWUnXQogCiBjbGFzcyBFbXB0eShFeGNlcHRpb24pOgotICAgICJFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLmdldChibG9jaz0wKS9nZXRfbm93YWl0KCkuIgorICAgICdFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLmdldChibG9jaz0wKS9nZXRfbm93YWl0KCkuJwogICAgIHBhc3MKIAogY2xhc3MgRnVsbChFeGNlcHRpb24pOgotICAgICJFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLnB1dChibG9jaz0wKS9wdXRfbm93YWl0KCkuIgorICAgICdFeGNlcHRpb24gcmFpc2VkIGJ5IFF1ZXVlLnB1dChibG9jaz0wKS9wdXRfbm93YWl0KCkuJwogICAgIHBhc3MKIAogY2xhc3MgUXVldWU6Ci0gICAgIiIiQ3JlYXRlIGEgcXVldWUgb2JqZWN0IHdpdGggYSBnaXZlbiBtYXhpbXVtIHNpemUuCisgICAgJycnQ3JlYXRlIGEgcXVldWUgb2JqZWN0IHdpdGggYSBnaXZlbiBtYXhpbXVtIHNpemUuCiAKICAgICBJZiBtYXhzaXplIGlzIDw9IDAsIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgotICAgICIiIgorICAgICcnJworCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heHNpemU9MCk6CiAgICAgICAgIHNlbGYubWF4c2l6ZSA9IG1heHNpemUKICAgICAgICAgc2VsZi5faW5pdChtYXhzaXplKQorCiAgICAgICAgICMgbXV0ZXggbXVzdCBiZSBoZWxkIHdoZW5ldmVyIHRoZSBxdWV1ZSBpcyBtdXRhdGluZy4gIEFsbCBtZXRob2RzCiAgICAgICAgICMgdGhhdCBhY3F1aXJlIG11dGV4IG11c3QgcmVsZWFzZSBpdCBiZWZvcmUgcmV0dXJuaW5nLiAgbXV0ZXgKICAgICAgICAgIyBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgdGhyZWUgY29uZGl0aW9ucywgc28gYWNxdWlyaW5nIGFuZAogICAgICAgICAjIHJlbGVhc2luZyB0aGUgY29uZGl0aW9ucyBhbHNvIGFjcXVpcmVzIGFuZCByZWxlYXNlcyBtdXRleC4KLSAgICAgICAgc2VsZi5tdXRleCA9IF90aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCisKICAgICAgICAgIyBOb3RpZnkgbm90X2VtcHR5IHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIHF1ZXVlOyBhCiAgICAgICAgICMgdGhyZWFkIHdhaXRpbmcgdG8gZ2V0IGlzIG5vdGlmaWVkIHRoZW4uCi0gICAgICAgIHNlbGYubm90X2VtcHR5ID0gX3RocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKyAgICAgICAgc2VsZi5ub3RfZW1wdHkgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisKICAgICAgICAgIyBOb3RpZnkgbm90X2Z1bGwgd2hlbmV2ZXIgYW4gaXRlbSBpcyByZW1vdmVkIGZyb20gdGhlIHF1ZXVlOwogICAgICAgICAjIGEgdGhyZWFkIHdhaXRpbmcgdG8gcHV0IGlzIG5vdGlmaWVkIHRoZW4uCi0gICAgICAgIHNlbGYubm90X2Z1bGwgPSBfdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorICAgICAgICBzZWxmLm5vdF9mdWxsID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorCiAgICAgICAgICMgTm90aWZ5IGFsbF90YXNrc19kb25lIHdoZW5ldmVyIHRoZSBudW1iZXIgb2YgdW5maW5pc2hlZCB0YXNrcwogICAgICAgICAjIGRyb3BzIHRvIHplcm87IHRocmVhZCB3YWl0aW5nIHRvIGpvaW4oKSBpcyBub3RpZmllZCB0byByZXN1bWUKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZSA9IF90aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCiAgICAgICAgIHNlbGYudW5maW5pc2hlZF90YXNrcyA9IDAKIAogICAgIGRlZiB0YXNrX2RvbmUoc2VsZik6Ci0gICAgICAgICIiIkluZGljYXRlIHRoYXQgYSBmb3JtZXJseSBlbnF1ZXVlZCB0YXNrIGlzIGNvbXBsZXRlLgorICAgICAgICAnJydJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4KIAogICAgICAgICBVc2VkIGJ5IFF1ZXVlIGNvbnN1bWVyIHRocmVhZHMuICBGb3IgZWFjaCBnZXQoKSB1c2VkIHRvIGZldGNoIGEgdGFzaywKICAgICAgICAgYSBzdWJzZXF1ZW50IGNhbGwgdG8gdGFza19kb25lKCkgdGVsbHMgdGhlIHF1ZXVlIHRoYXQgdGhlIHByb2Nlc3NpbmcKQEAgLTU1LDQzICs2MywzNSBAQAogCiAgICAgICAgIFJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgY2FsbGVkIG1vcmUgdGltZXMgdGhhbiB0aGVyZSB3ZXJlIGl0ZW1zCiAgICAgICAgIHBsYWNlZCBpbiB0aGUgcXVldWUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgICcnJworICAgICAgICB3aXRoIHNlbGYuYWxsX3Rhc2tzX2RvbmU6CiAgICAgICAgICAgICB1bmZpbmlzaGVkID0gc2VsZi51bmZpbmlzaGVkX3Rhc2tzIC0gMQogICAgICAgICAgICAgaWYgdW5maW5pc2hlZCA8PSAwOgogICAgICAgICAgICAgICAgIGlmIHVuZmluaXNoZWQgPCAwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0YXNrX2RvbmUoKSBjYWxsZWQgdG9vIG1hbnkgdGltZXMnKQogICAgICAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUubm90aWZ5X2FsbCgpCiAgICAgICAgICAgICBzZWxmLnVuZmluaXNoZWRfdGFza3MgPSB1bmZpbmlzaGVkCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLnJlbGVhc2UoKQogCiAgICAgZGVmIGpvaW4oc2VsZik6Ci0gICAgICAgICIiIkJsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KKyAgICAgICAgJycnQmxvY2tzIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgUXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgogCiAgICAgICAgIFRoZSBjb3VudCBvZiB1bmZpbmlzaGVkIHRhc2tzIGdvZXMgdXAgd2hlbmV2ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byB0aGUKICAgICAgICAgcXVldWUuIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMgdGFza19kb25lKCkKICAgICAgICAgdG8gaW5kaWNhdGUgdGhlIGl0ZW0gd2FzIHJldHJpZXZlZCBhbmQgYWxsIHdvcmsgb24gaXQgaXMgY29tcGxldGUuCiAKICAgICAgICAgV2hlbiB0aGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBkcm9wcyB0byB6ZXJvLCBqb2luKCkgdW5ibG9ja3MuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgICcnJworICAgICAgICB3aXRoIHNlbGYuYWxsX3Rhc2tzX2RvbmU6CiAgICAgICAgICAgICB3aGlsZSBzZWxmLnVuZmluaXNoZWRfdGFza3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS53YWl0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUucmVsZWFzZSgpCiAKICAgICBkZWYgcXNpemUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgYXBwcm94aW1hdGUgc2l6ZSBvZiB0aGUgcXVldWUgKG5vdCByZWxpYWJsZSEpLiIiIgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICBuID0gc2VsZi5fcXNpemUoKQotICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQotICAgICAgICByZXR1cm4gbgorICAgICAgICAnJydSZXR1cm4gdGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHF1ZXVlIChub3QgcmVsaWFibGUhKS4nJycKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3FzaXplKCkKIAogICAgIGRlZiBlbXB0eShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZW1wdHksIEZhbHNlIG90aGVyd2lzZSAobm90IHJlbGlhYmxlISkuCiAKICAgICAgICAgVGhpcyBtZXRob2QgaXMgbGlrZWx5IHRvIGJlIHJlbW92ZWQgYXQgc29tZSBwb2ludC4gIFVzZSBxc2l6ZSgpID09IDAKICAgICAgICAgYXMgYSBkaXJlY3Qgc3Vic3RpdHV0ZSwgYnV0IGJlIGF3YXJlIHRoYXQgZWl0aGVyIGFwcHJvYWNoIHJpc2tzIGEgcmFjZQpAQCAtMTAwLDI5ICsxMDAsMjMgQEAKIAogICAgICAgICBUbyBjcmVhdGUgY29kZSB0aGF0IG5lZWRzIHRvIHdhaXQgZm9yIGFsbCBxdWV1ZWQgdGFza3MgdG8gYmUKICAgICAgICAgY29tcGxldGVkLCB0aGUgcHJlZmVycmVkIHRlY2huaXF1ZSBpcyB0byB1c2UgdGhlIGpvaW4oKSBtZXRob2QuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIG4gPSBub3Qgc2VsZi5fcXNpemUoKQotICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQotICAgICAgICByZXR1cm4gbgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xc2l6ZSgpCiAKICAgICBkZWYgZnVsbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGZ1bGwsIEZhbHNlIG90aGVyd2lzZSAobm90IHJlbGlhYmxlISkuCisgICAgICAgICcnJ1JldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA+PSBuCiAgICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKICAgICAgICAgY29uZGl0aW9uIHdoZXJlIGEgcXVldWUgY2FuIHNocmluayBiZWZvcmUgdGhlIHJlc3VsdCBvZiBmdWxsKCkgb3IKICAgICAgICAgcXNpemUoKSBjYW4gYmUgdXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgbiA9IDAgPCBzZWxmLm1heHNpemUgPD0gc2VsZi5fcXNpemUoKQotICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQotICAgICAgICByZXR1cm4gbgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgcmV0dXJuIDAgPCBzZWxmLm1heHNpemUgPD0gc2VsZi5fcXNpemUoKQogCiAgICAgZGVmIHB1dChzZWxmLCBpdGVtLCBibG9jaz1UcnVlLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICAiIiJQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZS4KKyAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCiAKICAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgIGJsb2NrIGlmIG5lY2Vzc2FyeSB1bnRpbCBhIGZyZWUgc2xvdCBpcyBhdmFpbGFibGUuIElmICd0aW1lb3V0JyBpcwpAQCAtMTMxLDkgKzEyNSw4IEBACiAgICAgICAgIE90aGVyd2lzZSAoJ2Jsb2NrJyBpcyBmYWxzZSksIHB1dCBhbiBpdGVtIG9uIHRoZSBxdWV1ZSBpZiBhIGZyZWUgc2xvdAogICAgICAgICBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsIGVsc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uICgndGltZW91dCcKICAgICAgICAgaXMgaWdub3JlZCBpbiB0aGF0IGNhc2UpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ub3RfZnVsbC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm5vdF9mdWxsOgogICAgICAgICAgICAgaWYgc2VsZi5tYXhzaXplID4gMDoKICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3FzaXplKCkgPj0gc2VsZi5tYXhzaXplOgpAQCAtMTQ0LDI4ICsxMzcsMTggQEAKICAgICAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIndGltZW91dCcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3FzaXplKCkgPj0gc2VsZi5tYXhzaXplOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwLjA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRnVsbAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC53YWl0KHJlbWFpbmluZykKICAgICAgICAgICAgIHNlbGYuX3B1dChpdGVtKQogICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzICs9IDEKICAgICAgICAgICAgIHNlbGYubm90X2VtcHR5Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm5vdF9mdWxsLnJlbGVhc2UoKQotCi0gICAgZGVmIHB1dF9ub3dhaXQoc2VsZiwgaXRlbSk6Ci0gICAgICAgICIiIlB1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCi0KLSAgICAgICAgT25seSBlbnF1ZXVlIHRoZSBpdGVtIGlmIGEgZnJlZSBzbG90IGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KLSAgICAgICAgT3RoZXJ3aXNlIHJhaXNlIHRoZSBGdWxsIGV4Y2VwdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnB1dChpdGVtLCBGYWxzZSkKIAogICAgIGRlZiBnZXQoc2VsZiwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS4KKyAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZS4KIAogICAgICAgICBJZiBvcHRpb25hbCBhcmdzICdibG9jaycgaXMgdHJ1ZSBhbmQgJ3RpbWVvdXQnIGlzIE5vbmUgKHRoZSBkZWZhdWx0KSwKICAgICAgICAgYmxvY2sgaWYgbmVjZXNzYXJ5IHVudGlsIGFuIGl0ZW0gaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKQEAgLTE3NCw5ICsxNTcsOCBAQAogICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCByZXR1cm4gYW4gaXRlbSBpZiBvbmUgaXMgaW1tZWRpYXRlbHkKICAgICAgICAgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24gKCd0aW1lb3V0JyBpcyBpZ25vcmVkCiAgICAgICAgIGluIHRoYXQgY2FzZSkuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLm5vdF9lbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLm5vdF9lbXB0eToKICAgICAgICAgICAgIGlmIG5vdCBibG9jazoKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcXNpemUoKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKQEAgLTE4NiwyNSArMTY4LDMxIEBACiAgICAgICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIid0aW1lb3V0JyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgICAgICAgICAgZW5kdGltZSA9IHRpbWUoKSArIHRpbWVvdXQKICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fcXNpemUoKToKLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gZW5kdGltZSAtIHRpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgICBpdGVtID0gc2VsZi5fZ2V0KCkKICAgICAgICAgICAgIHNlbGYubm90X2Z1bGwubm90aWZ5KCkKICAgICAgICAgICAgIHJldHVybiBpdGVtCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS5yZWxlYXNlKCkKKworICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgorICAgICAgICAnJydQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgorCisgICAgICAgIE9ubHkgZW5xdWV1ZSB0aGUgaXRlbSBpZiBhIGZyZWUgc2xvdCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCisgICAgICAgIE90aGVyd2lzZSByYWlzZSB0aGUgRnVsbCBleGNlcHRpb24uCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5wdXQoaXRlbSwgYmxvY2s9RmFsc2UpCiAKICAgICBkZWYgZ2V0X25vd2FpdChzZWxmKToKLSAgICAgICAgIiIiUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgorICAgICAgICAnJydSZW1vdmUgYW5kIHJldHVybiBhbiBpdGVtIGZyb20gdGhlIHF1ZXVlIHdpdGhvdXQgYmxvY2tpbmcuCiAKICAgICAgICAgT25seSBnZXQgYW4gaXRlbSBpZiBvbmUgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLiBPdGhlcndpc2UKICAgICAgICAgcmFpc2UgdGhlIEVtcHR5IGV4Y2VwdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmdldChGYWxzZSkKKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLmdldChibG9jaz1GYWxzZSkKIAogICAgICMgT3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyB0byBpbXBsZW1lbnQgb3RoZXIgcXVldWUgb3JnYW5pemF0aW9ucwogICAgICMgKGUuZy4gc3RhY2sgb3IgcHJpb3JpdHkgcXVldWUpLgpAQCAtMjE0LDcgKzIwMiw3IEBACiAgICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgICBzZWxmLnF1ZXVlID0gZGVxdWUoKQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKICAgICAjIFB1dCBhIG5ldyBpdGVtIGluIHRoZSBxdWV1ZQpAQCAtMjM1LDEzICsyMjMsMTMgQEAKICAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgIHNlbGYucXVldWUgPSBbXQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKLSAgICBkZWYgX3B1dChzZWxmLCBpdGVtLCBoZWFwcHVzaD1oZWFwcS5oZWFwcHVzaCk6CisgICAgZGVmIF9wdXQoc2VsZiwgaXRlbSk6CiAgICAgICAgIGhlYXBwdXNoKHNlbGYucXVldWUsIGl0ZW0pCiAKLSAgICBkZWYgX2dldChzZWxmLCBoZWFwcG9wPWhlYXBxLmhlYXBwb3ApOgorICAgIGRlZiBfZ2V0KHNlbGYpOgogICAgICAgICByZXR1cm4gaGVhcHBvcChzZWxmLnF1ZXVlKQogCiAKQEAgLTI1MSw3ICsyMzksNyBAQAogICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICAgc2VsZi5xdWV1ZSA9IFtdCiAKLSAgICBkZWYgX3FzaXplKHNlbGYsIGxlbj1sZW4pOgorICAgIGRlZiBfcXNpemUoc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5xdWV1ZSkKIAogICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggOWI2MTIwOC4uNjM4OGYyOSAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC00MSw3ICs0MSw3IEBACiBmcm9tIG1hdGggaW1wb3J0IGxvZyBhcyBfbG9nLCBleHAgYXMgX2V4cCwgcGkgYXMgX3BpLCBlIGFzIF9lLCBjZWlsIGFzIF9jZWlsCiBmcm9tIG1hdGggaW1wb3J0IHNxcnQgYXMgX3NxcnQsIGFjb3MgYXMgX2Fjb3MsIGNvcyBhcyBfY29zLCBzaW4gYXMgX3NpbgogZnJvbSBvcyBpbXBvcnQgdXJhbmRvbSBhcyBfdXJhbmRvbQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2V0IGFzIF9TZXQsIFNlcXVlbmNlIGFzIF9TZXF1ZW5jZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKIGZyb20gaGFzaGxpYiBpbXBvcnQgc2hhNTEyIGFzIF9zaGE1MTIKIAogX19hbGxfXyA9IFsiUmFuZG9tIiwic2VlZCIsInJhbmRvbSIsInVuaWZvcm0iLCJyYW5kaW50IiwiY2hvaWNlIiwic2FtcGxlIiwKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCA4NWM1YTU3Li45YWU1MTc0IDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0yMTUsNyArMjE1LDcgQEAKIAogZGVmIHB1cmdlKCk6CiAgICAgIkNsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGVzIgotICAgIF9jb21waWxlX3R5cGVkLmNhY2hlX2NsZWFyKCkKKyAgICBfY29tcGlsZS5jYWNoZV9jbGVhcigpCiAgICAgX2NvbXBpbGVfcmVwbC5jYWNoZV9jbGVhcigpCiAKIGRlZiB0ZW1wbGF0ZShwYXR0ZXJuLCBmbGFncz0wKToKQEAgLTIyMywxMiArMjIzLDE0IEBACiAgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzfFQpCiAKIF9hbHBoYW51bV9zdHIgPSBmcm96ZW5zZXQoCi0gICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5MCIpCisgICAgIl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQogX2FscGhhbnVtX2J5dGVzID0gZnJvemVuc2V0KAotICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKKyAgICBiIl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQogCiBkZWYgZXNjYXBlKHBhdHRlcm4pOgotICAgICJFc2NhcGUgYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycyBpbiBwYXR0ZXJuLiIKKyAgICAiIiIKKyAgICBFc2NhcGUgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHBhdHRlcm4gZXhjZXB0IEFTQ0lJIGxldHRlcnMsIG51bWJlcnMgYW5kICdfJy4KKyAgICAiIiIKICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIHN0cik6CiAgICAgICAgIGFscGhhbnVtID0gX2FscGhhbnVtX3N0cgogICAgICAgICBzID0gbGlzdChwYXR0ZXJuKQpAQCAtMjU5LDExICsyNjEsOCBAQAogCiBfcGF0dGVybl90eXBlID0gdHlwZShzcmVfY29tcGlsZS5jb21waWxlKCIiLCAwKSkKIAorQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT01MDAsIHR5cGVkPVRydWUpCiBkZWYgX2NvbXBpbGUocGF0dGVybiwgZmxhZ3MpOgotICAgIHJldHVybiBfY29tcGlsZV90eXBlZCh0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFncykKLQotQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT01MDApCi1kZWYgX2NvbXBpbGVfdHlwZWQodGV4dF9ieXRlc190eXBlLCBwYXR0ZXJuLCBmbGFncyk6CiAgICAgIyBpbnRlcm5hbDogY29tcGlsZSBwYXR0ZXJuCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBfcGF0dGVybl90eXBlKToKICAgICAgICAgaWYgZmxhZ3M6CmRpZmYgLS1naXQgYS9MaWIvcnVucHkucHkgYi9MaWIvcnVucHkucHkKaW5kZXggN2NiNDY2OC4uMzljMGU5ZiAxMDA2NDQKLS0tIGEvTGliL3J1bnB5LnB5CisrKyBiL0xpYi9ydW5weS5weQpAQCAtOSwxMyArOSwxMiBAQAogIyBXcml0dGVuIGJ5IE5pY2sgQ29naGxhbiA8bmNvZ2hsYW4gYXQgZ21haWwuY29tPgogIyAgICB0byBpbXBsZW1lbnQgUEVQIDMzOCAoRXhlY3V0aW5nIE1vZHVsZXMgYXMgU2NyaXB0cykKIAorCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5ICMgaW1wb3J0bGliIGZpcnN0IHNvIHdlIGNhbiB0ZXN0ICMxNTM4NiB2aWEgLW0KIGltcG9ydCBpbXAKLWZyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlCi10cnk6Ci0gICAgZnJvbSBpbXAgaW1wb3J0IGdldF9sb2FkZXIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHBrZ3V0aWwgaW1wb3J0IGdldF9sb2FkZXIKK2Zyb20gcGtndXRpbCBpbXBvcnQgcmVhZF9jb2RlLCBnZXRfbG9hZGVyLCBnZXRfaW1wb3J0ZXIKIAogX19hbGxfXyA9IFsKICAgICAicnVuX21vZHVsZSIsICJydW5fcGF0aCIsCkBAIC05NSw3ICs5NCw3IEBACiAgICAgZm9yIGF0dHIgaW4gKCJnZXRfZmlsZW5hbWUiLCAiX2dldF9maWxlbmFtZSIpOgogICAgICAgICBtZXRoID0gZ2V0YXR0cihsb2FkZXIsIGF0dHIsIE5vbmUpCiAgICAgICAgIGlmIG1ldGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbWV0aChtb2RfbmFtZSkKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgobWV0aChtb2RfbmFtZSkpCiAgICAgcmV0dXJuIE5vbmUKIAogIyBIZWxwZXIgdG8gZ2V0IHRoZSBsb2FkZXIsIGNvZGUgYW5kIGZpbGVuYW1lIGZvciBhIG1vZHVsZQpAQCAtMTgxLDQ3ICsxODAsMjMgQEAKIGRlZiBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKToKICAgICAjIEhlbHBlciB0aGF0IGdpdmVzIGEgbmljZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGF0dGVtcHRpbmcgdG8KICAgICAjIGV4ZWN1dGUgYSB6aXBmaWxlIG9yIGRpcmVjdG9yeSBieSBpbnZva2luZyBfX21haW5fXy5weQorICAgICMgQWxzbyBtb3ZlcyB0aGUgc3RhbmRhcmQgX19tYWluX18gb3V0IG9mIHRoZSB3YXkgc28gdGhhdCB0aGUKKyAgICAjIHByZWV4aXN0aW5nIF9fbG9hZGVyX18gZW50cnkgZG9lc24ndCBjYXVzZSBpc3N1ZXMKICAgICBtYWluX25hbWUgPSAiX19tYWluX18iCisgICAgc2F2ZWRfbWFpbiA9IHN5cy5tb2R1bGVzW21haW5fbmFtZV0KKyAgICBkZWwgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIF9nZXRfbW9kdWxlX2RldGFpbHMobWFpbl9uYW1lKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CiAgICAgICAgIGlmIG1haW5fbmFtZSBpbiBzdHIoZXhjKToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJjYW4ndCBmaW5kICVyIG1vZHVsZSBpbiAlciIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5fbmFtZSwgc3lzLnBhdGhbMF0pKSBmcm9tIGV4YwogICAgICAgICByYWlzZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzW21haW5fbmFtZV0gPSBzYXZlZF9tYWluCiAKIAotIyBYWFggKG5jb2dobGFuKTogUGVyaGFwcyBleHBvc2UgdGhlIEMgQVBJIGZ1bmN0aW9uCi0jIGFzIGltcC5nZXRfaW1wb3J0ZXIgaW5zdGVhZCBvZiByZWltcGxlbWVudGluZyBpdCBpbiBQeXRob24/Ci1kZWYgX2dldF9pbXBvcnRlcihwYXRoX25hbWUpOgotICAgICIiIlB5dGhvbiB2ZXJzaW9uIG9mIFB5SW1wb3J0X0dldEltcG9ydGVyIEMgQVBJIGZ1bmN0aW9uIiIiCi0gICAgY2FjaGUgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0ZXIgPSBjYWNoZVtwYXRoX25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjIE5vdCB5ZXQgY2FjaGVkLiBGbGFnIGFzIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIG1hY2hpbmVyeSB1bnRpbCB3ZSBmaW5pc2gKLSAgICAgICAgIyBjaGVja2luZyB0aGUgaG9va3MKLSAgICAgICAgY2FjaGVbcGF0aF9uYW1lXSA9IE5vbmUKLSAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBob29rKHBhdGhfbmFtZSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBjaGVjayBsb29rcyBhIGJpdCBvZGQuIFRoZSB0cmljayBpcyB0aGF0Ci0gICAgICAgICAgICAjIE51bGxJbXBvcnRlciB0aHJvd3MgSW1wb3J0RXJyb3IgaWYgdGhlIHN1cHBsaWVkIHBhdGggaXMgYQotICAgICAgICAgICAgIyAqdmFsaWQqIGRpcmVjdG9yeSBlbnRyeSAoYW5kIGhlbmNlIGFibGUgdG8gYmUgaGFuZGxlZAotICAgICAgICAgICAgIyBieSB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbXBvcnRlciA9IGltcC5OdWxsSW1wb3J0ZXIocGF0aF9uYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGNhY2hlW3BhdGhfbmFtZV0gPSBpbXBvcnRlcgotICAgIHJldHVybiBpbXBvcnRlcgotCi1kZWYgX2dldF9jb2RlX2Zyb21fZmlsZShmbmFtZSk6CitkZWYgX2dldF9jb2RlX2Zyb21fZmlsZShydW5fbmFtZSwgZm5hbWUpOgogICAgICMgQ2hlY2sgZm9yIGEgY29tcGlsZWQgZmlsZSBmaXJzdAogICAgIHdpdGggb3BlbihmbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgY29kZSA9IHJlYWRfY29kZShmKQpAQCAtMjI5LDcgKzIwNCwxMCBAQAogICAgICAgICAjIFRoYXQgZGlkbid0IHdvcmssIHNvIHRyeSBpdCBhcyBub3JtYWwgc291cmNlIGNvZGUKICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZi5yZWFkKCksIGZuYW1lLCAnZXhlYycpCi0gICAgcmV0dXJuIGNvZGUKKyAgICAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihydW5fbmFtZSwgZm5hbWUpCisgICAgZWxzZToKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcihydW5fbmFtZSwgZm5hbWUpCisgICAgcmV0dXJuIGNvZGUsIGxvYWRlcgogCiBkZWYgcnVuX3BhdGgocGF0aF9uYW1lLCBpbml0X2dsb2JhbHM9Tm9uZSwgcnVuX25hbWU9Tm9uZSk6CiAgICAgIiIiRXhlY3V0ZSBjb2RlIGxvY2F0ZWQgYXQgdGhlIHNwZWNpZmllZCBmaWxlc3lzdGVtIGxvY2F0aW9uCkBAIC0yNDQsMTMgKzIyMiwxMyBAQAogICAgIGlmIHJ1bl9uYW1lIGlzIE5vbmU6CiAgICAgICAgIHJ1bl9uYW1lID0gIjxydW5fcGF0aD4iCiAgICAgcGtnX25hbWUgPSBydW5fbmFtZS5ycGFydGl0aW9uKCIuIilbMF0KLSAgICBpbXBvcnRlciA9IF9nZXRfaW1wb3J0ZXIocGF0aF9uYW1lKQotICAgIGlmIGlzaW5zdGFuY2UoaW1wb3J0ZXIsIGltcC5OdWxsSW1wb3J0ZXIpOgorICAgIGltcG9ydGVyID0gZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKKyAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCAodHlwZShOb25lKSwgaW1wLk51bGxJbXBvcnRlcikpOgogICAgICAgICAjIE5vdCBhIHZhbGlkIHN5cy5wYXRoIGVudHJ5LCBzbyBydW4gdGhlIGNvZGUgZGlyZWN0bHkKICAgICAgICAgIyBleGVjZmlsZSgpIGRvZXNuJ3QgaGVscCBhcyB3ZSB3YW50IHRvIGFsbG93IGNvbXBpbGVkIGZpbGVzCi0gICAgICAgIGNvZGUgPSBfZ2V0X2NvZGVfZnJvbV9maWxlKHBhdGhfbmFtZSkKKyAgICAgICAgY29kZSwgbW9kX2xvYWRlciA9IF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIHBhdGhfbmFtZSkKICAgICAgICAgcmV0dXJuIF9ydW5fbW9kdWxlX2NvZGUoY29kZSwgaW5pdF9nbG9iYWxzLCBydW5fbmFtZSwgcGF0aF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfbmFtZT1wa2dfbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX2xvYWRlciwgcGtnX25hbWUpCiAgICAgZWxzZToKICAgICAgICAgIyBJbXBvcnRlciBpcyBkZWZpbmVkIGZvciBwYXRoLCBzbyBhZGQgaXQgdG8KICAgICAgICAgIyB0aGUgc3RhcnQgb2Ygc3lzLnBhdGgKQEAgLTI2MiwxMyArMjQwLDcgQEAKICAgICAgICAgICAgICMgaGF2ZSBubyBjaG9pY2UgYW5kIHdlIGhhdmUgdG8gcmVtb3ZlIGl0IGV2ZW4gd2hpbGUgd2UgcmVhZCB0aGUKICAgICAgICAgICAgICMgY29kZS4gSWYgd2UgZG9uJ3QgZG8gdGhpcywgYSBfX2xvYWRlcl9fIGF0dHJpYnV0ZSBpbiB0aGUKICAgICAgICAgICAgICMgZXhpc3RpbmcgX19tYWluX18gbW9kdWxlIG1heSBwcmV2ZW50IGxvY2F0aW9uIG9mIHRoZSBuZXcgbW9kdWxlLgotICAgICAgICAgICAgbWFpbl9uYW1lID0gIl9fbWFpbl9fIgotICAgICAgICAgICAgc2F2ZWRfbWFpbiA9IHN5cy5tb2R1bGVzW21haW5fbmFtZV0KLSAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttYWluX25hbWVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kX25hbWUsIGxvYWRlciwgY29kZSwgZm5hbWUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgorICAgICAgICAgICAgbW9kX25hbWUsIGxvYWRlciwgY29kZSwgZm5hbWUgPSBfZ2V0X21haW5fbW9kdWxlX2RldGFpbHMoKQogICAgICAgICAgICAgd2l0aCBfVGVtcE1vZHVsZShydW5fbmFtZSkgYXMgdGVtcF9tb2R1bGUsIFwKICAgICAgICAgICAgICAgICAgX01vZGlmaWVkQXJndjAocGF0aF9uYW1lKToKICAgICAgICAgICAgICAgICBtb2RfZ2xvYmFscyA9IHRlbXBfbW9kdWxlLm1vZHVsZS5fX2RpY3RfXwpkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IGExMTk4OTIuLjU1NTFmNzEgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTI4LDEyICsyOCwyMSBAQAogIyBYWFggaW5zdGVhZCBvZiBoYXZpbmcgdG8gZGVmaW5lIGEgbW9kdWxlIG9yIGNsYXNzIGp1c3QgdG8gaG9sZAogIyBYWFggdGhlIGdsb2JhbCBzdGF0ZSBvZiB5b3VyIHBhcnRpY3VsYXIgdGltZSBhbmQgZGVsYXkgZnVuY3Rpb25zLgogCitpbXBvcnQgdGltZQogaW1wb3J0IGhlYXBxCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAotY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQnKSk6CitjbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzJykpOgogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX25lX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSAhPSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQpAQCAtNDIsMzIgKzUxLDM2IEBACiAgICAgZGVmIF9fZ2VfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID49IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAKIGNsYXNzIHNjaGVkdWxlcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZWZ1bmMsIGRlbGF5ZnVuYyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGltZWZ1bmM9X3RpbWUsIGRlbGF5ZnVuYz10aW1lLnNsZWVwKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZSwgcGFzc2luZyB0aGUgdGltZSBhbmQgZGVsYXkKICAgICAgICAgZnVuY3Rpb25zIiIiCiAgICAgICAgIHNlbGYuX3F1ZXVlID0gW10KKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgIHNlbGYudGltZWZ1bmMgPSB0aW1lZnVuYwogICAgICAgICBzZWxmLmRlbGF5ZnVuYyA9IGRlbGF5ZnVuYwogCi0gICAgZGVmIGVudGVyYWJzKHNlbGYsIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KToKKyAgICBkZWYgZW50ZXJhYnMoc2VsZiwgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9W10sIGt3YXJncz17fSk6CiAgICAgICAgICIiIkVudGVyIGEgbmV3IGV2ZW50IGluIHRoZSBxdWV1ZSBhdCBhbiBhYnNvbHV0ZSB0aW1lLgogCiAgICAgICAgIFJldHVybnMgYW4gSUQgZm9yIHRoZSBldmVudCB3aGljaCBjYW4gYmUgdXNlZCB0byByZW1vdmUgaXQsCiAgICAgICAgIGlmIG5lY2Vzc2FyeS4KIAogICAgICAgICAiIiIKLSAgICAgICAgZXZlbnQgPSBFdmVudCh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKLSAgICAgICAgaGVhcHEuaGVhcHB1c2goc2VsZi5fcXVldWUsIGV2ZW50KQotICAgICAgICByZXR1cm4gZXZlbnQgIyBUaGUgSUQKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgZXZlbnQgPSBFdmVudCh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKQorICAgICAgICAgICAgaGVhcHEuaGVhcHB1c2goc2VsZi5fcXVldWUsIGV2ZW50KQorICAgICAgICAgICAgcmV0dXJuIGV2ZW50ICMgVGhlIElECiAKLSAgICBkZWYgZW50ZXIoc2VsZiwgZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KToKKyAgICBkZWYgZW50ZXIoc2VsZiwgZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50PVtdLCBrd2FyZ3M9e30pOgogICAgICAgICAiIiJBIHZhcmlhbnQgdGhhdCBzcGVjaWZpZXMgdGhlIHRpbWUgYXMgYSByZWxhdGl2ZSB0aW1lLgogCiAgICAgICAgIFRoaXMgaXMgYWN0dWFsbHkgdGhlIG1vcmUgY29tbW9ubHkgdXNlZCBpbnRlcmZhY2UuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQotICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgdGltZSA9IHNlbGYudGltZWZ1bmMoKSArIGRlbGF5CisgICAgICAgICAgICByZXR1cm4gc2VsZi5lbnRlcmFicyh0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzKQogCiAgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudCk6CiAgICAgICAgICIiIlJlbW92ZSBhbiBldmVudCBmcm9tIHRoZSBxdWV1ZS4KQEAgLTc2LDE1ICs4OSwyMCBAQAogICAgICAgICBJZiB0aGUgZXZlbnQgaXMgbm90IGluIHRoZSBxdWV1ZSwgdGhpcyByYWlzZXMgVmFsdWVFcnJvci4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcXVldWUucmVtb3ZlKGV2ZW50KQotICAgICAgICBoZWFwcS5oZWFwaWZ5KHNlbGYuX3F1ZXVlKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9xdWV1ZS5yZW1vdmUoZXZlbnQpCisgICAgICAgICAgICBoZWFwcS5oZWFwaWZ5KHNlbGYuX3F1ZXVlKQogCiAgICAgZGVmIGVtcHR5KHNlbGYpOgogICAgICAgICAiIiJDaGVjayB3aGV0aGVyIHRoZSBxdWV1ZSBpcyBlbXB0eS4iIiIKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xdWV1ZQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gbm90IHNlbGYuX3F1ZXVlCiAKLSAgICBkZWYgcnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6CiAgICAgICAgICIiIkV4ZWN1dGUgZXZlbnRzIHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eS4KKyAgICAgICAgSWYgYmxvY2tpbmcgaXMgRmFsc2UgZXhlY3V0ZXMgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvCisgICAgICAgIGV4cGlyZSBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiB0aGUgZGVhZGxpbmUgb2YgdGhlCisgICAgICAgIG5leHQgc2NoZWR1bGVkIGNhbGwgaW4gdGhlIHNjaGVkdWxlci4KIAogICAgICAgICBXaGVuIHRoZXJlIGlzIGEgcG9zaXRpdmUgZGVsYXkgdW50aWwgdGhlIGZpcnN0IGV2ZW50LCB0aGUKICAgICAgICAgZGVsYXkgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCB0aGUgZXZlbnQgaXMgbGVmdCBpbiB0aGUgcXVldWU7CkBAIC0xMDYsMjQgKzEyNCwyNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIyBsb2NhbGl6ZSB2YXJpYWJsZSBhY2Nlc3MgdG8gbWluaW1pemUgb3ZlcmhlYWQKICAgICAgICAgIyBhbmQgdG8gaW1wcm92ZSB0aHJlYWQgc2FmZXR5Ci0gICAgICAgIHEgPSBzZWxmLl9xdWV1ZQotICAgICAgICBkZWxheWZ1bmMgPSBzZWxmLmRlbGF5ZnVuYwotICAgICAgICB0aW1lZnVuYyA9IHNlbGYudGltZWZ1bmMKLSAgICAgICAgcG9wID0gaGVhcHEuaGVhcHBvcAotICAgICAgICB3aGlsZSBxOgotICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQgPSBjaGVja2VkX2V2ZW50ID0gcVswXQotICAgICAgICAgICAgbm93ID0gdGltZWZ1bmMoKQotICAgICAgICAgICAgaWYgbm93IDwgdGltZToKLSAgICAgICAgICAgICAgICBkZWxheWZ1bmModGltZSAtIG5vdykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBwb3AocSkKLSAgICAgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBldmVudCB3YXMgbm90IHJlbW92ZWQgb3IgYWx0ZXJlZAotICAgICAgICAgICAgICAgICMgYnkgYW5vdGhlciB0aHJlYWQgYWZ0ZXIgd2UgbGFzdCBsb29rZWQgYXQgcVswXS4KLSAgICAgICAgICAgICAgICBpZiBldmVudCBpcyBjaGVja2VkX2V2ZW50OgotICAgICAgICAgICAgICAgICAgICBhY3Rpb24oKmFyZ3VtZW50KQotICAgICAgICAgICAgICAgICAgICBkZWxheWZ1bmMoMCkgICAjIExldCBvdGhlciB0aHJlYWRzIHJ1bgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBxID0gc2VsZi5fcXVldWUKKyAgICAgICAgICAgIGRlbGF5ZnVuYyA9IHNlbGYuZGVsYXlmdW5jCisgICAgICAgICAgICB0aW1lZnVuYyA9IHNlbGYudGltZWZ1bmMKKyAgICAgICAgICAgIHBvcCA9IGhlYXBxLmhlYXBwb3AKKyAgICAgICAgICAgIHdoaWxlIHE6CisgICAgICAgICAgICAgICAgdGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncyA9IGNoZWNrZWRfZXZlbnQgPSBxWzBdCisgICAgICAgICAgICAgICAgbm93ID0gdGltZWZ1bmMoKQorICAgICAgICAgICAgICAgIGlmIG5vdyA8IHRpbWU6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBibG9ja2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lIC0gbm93CisgICAgICAgICAgICAgICAgICAgIGRlbGF5ZnVuYyh0aW1lIC0gbm93KQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhlYXBxLmhlYXBwdXNoKHEsIGV2ZW50KQorICAgICAgICAgICAgICAgICAgICBldmVudCA9IHBvcChxKQorICAgICAgICAgICAgICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSBldmVudCB3YXMgbm90IHJlbW92ZWQgb3IgYWx0ZXJlZAorICAgICAgICAgICAgICAgICAgICAjIGJ5IGFub3RoZXIgdGhyZWFkIGFmdGVyIHdlIGxhc3QgbG9va2VkIGF0IHFbMF0uCisgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50IGlzIGNoZWNrZWRfZXZlbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5ZnVuYygwKSAgICMgTGV0IG90aGVyIHRocmVhZHMgcnVuCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChxLCBldmVudCkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBxdWV1ZShzZWxmKToKQEAgLTEzNiw1ICsxNTcsNiBAQAogICAgICAgICAjIFVzZSBoZWFwcSB0byBzb3J0IHRoZSBxdWV1ZSByYXRoZXIgdGhhbiB1c2luZyAnc29ydGVkKHNlbGYuX3F1ZXVlKScuCiAgICAgICAgICMgV2l0aCBoZWFwcSwgdHdvIGV2ZW50cyBzY2hlZHVsZWQgYXQgdGhlIHNhbWUgdGltZSB3aWxsIHNob3cgaW4KICAgICAgICAgIyB0aGUgYWN0dWFsIG9yZGVyIHRoZXkgd291bGQgYmUgcmV0cmlldmVkLgotICAgICAgICBldmVudHMgPSBzZWxmLl9xdWV1ZVs6XQotICAgICAgICByZXR1cm4gbWFwKGhlYXBxLmhlYXBwb3AsIFtldmVudHNdKmxlbihldmVudHMpKQorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBldmVudHMgPSBzZWxmLl9xdWV1ZVs6XQorICAgICAgICAgICAgcmV0dXJuIG1hcChoZWFwcS5oZWFwcG9wLCBbZXZlbnRzXSpsZW4oZXZlbnRzKSkKZGlmZiAtLWdpdCBhL0xpYi9zaGxleC5weSBiL0xpYi9zaGxleC5weQppbmRleCAzZWRkM2RiLi42OWYzYjQ1IDEwMDY0NAotLS0gYS9MaWIvc2hsZXgucHkKKysrIGIvTGliL3NobGV4LnB5CkBAIC02LDEzICs2LDE0IEBACiAjIFBvc2l4IGNvbXBsaWFuY2UsIHNwbGl0KCksIHN0cmluZyBhcmd1bWVudHMsIGFuZAogIyBpdGVyYXRvciBpbnRlcmZhY2UgYnkgR3VzdGF2byBOaWVtZXllciwgQXByaWwgMjAwMy4KIAotaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCi1fX2FsbF9fID0gWyJzaGxleCIsICJzcGxpdCJdCitfX2FsbF9fID0gWyJzaGxleCIsICJzcGxpdCIsICJxdW90ZSJdCiAKIGNsYXNzIHNobGV4OgogICAgICJBIGxleGljYWwgYW5hbHl6ZXIgY2xhc3MgZm9yIHNpbXBsZSBzaGVsbC1saWtlIHN5bnRheGVzLiIKQEAgLTI3NCw2ICsyNzUsMjEgQEAKICAgICAgICAgbGV4LmNvbW1lbnRlcnMgPSAnJwogICAgIHJldHVybiBsaXN0KGxleCkKIAorCitfZmluZF91bnNhZmUgPSByZS5jb21waWxlKHInW15cd0AlKz06LC4vLV0nLCByZS5BU0NJSSkuc2VhcmNoCisKK2RlZiBxdW90ZShzKToKKyAgICAiIiJSZXR1cm4gYSBzaGVsbC1lc2NhcGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyAqcyouIiIiCisgICAgaWYgbm90IHM6CisgICAgICAgIHJldHVybiAiJyciCisgICAgaWYgX2ZpbmRfdW5zYWZlKHMpIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBzCisKKyAgICAjIHVzZSBzaW5nbGUgcXVvdGVzLCBhbmQgcHV0IHNpbmdsZSBxdW90ZXMgaW50byBkb3VibGUgcXVvdGVzCisgICAgIyB0aGUgc3RyaW5nICQnYiBpcyB0aGVuIHF1b3RlZCBhcyAnJCciJyInYicKKyAgICByZXR1cm4gIiciICsgcy5yZXBsYWNlKCInIiwgIidcIidcIiciKSArICInIgorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgogICAgICAgICBsZXhlciA9IHNobGV4KCkKZGlmZiAtLWdpdCBhL0xpYi9zaHV0aWwucHkgYi9MaWIvc2h1dGlsLnB5CmluZGV4IGVmMjlhZTIuLjVkYzMxMWUgMTAwNjQ0Ci0tLSBhL0xpYi9zaHV0aWwucHkKKysrIGIvTGliL3NodXRpbC5weQpAQCAtMTUsNiArMTUsNyBAQAogCiB0cnk6CiAgICAgaW1wb3J0IGJ6MgorICAgIGRlbCBiejIKICAgICBfQloyX1NVUFBPUlRFRCA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfQloyX1NVUFBPUlRFRCA9IEZhbHNlCkBAIC0zNCw3ICszNSw5IEBACiAgICAgICAgICAgICJFeGVjRXJyb3IiLCAibWFrZV9hcmNoaXZlIiwgImdldF9hcmNoaXZlX2Zvcm1hdHMiLAogICAgICAgICAgICAicmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQiLCAidW5yZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdCIsCiAgICAgICAgICAgICJnZXRfdW5wYWNrX2Zvcm1hdHMiLCAicmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCIsCi0gICAgICAgICAgICJ1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQiLCAidW5wYWNrX2FyY2hpdmUiLCAiaWdub3JlX3BhdHRlcm5zIl0KKyAgICAgICAgICAgInVucmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdCIsICJ1bnBhY2tfYXJjaGl2ZSIsCisgICAgICAgICAgICJpZ25vcmVfcGF0dGVybnMiLCAiY2hvd24iLCAid2hpY2giXQorICAgICAgICAgICAjIGRpc2tfdXNhZ2UgaXMgYWRkZWQgbGF0ZXIsIGlmIGF2YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0KIAogY2xhc3MgRXJyb3IoRW52aXJvbm1lbnRFcnJvcik6CiAgICAgcGFzcwpAQCAtNzksOCArODIsMTMgQEAKICAgICByZXR1cm4gKG9zLnBhdGgubm9ybWNhc2Uob3MucGF0aC5hYnNwYXRoKHNyYykpID09CiAgICAgICAgICAgICBvcy5wYXRoLm5vcm1jYXNlKG9zLnBhdGguYWJzcGF0aChkc3QpKSkKIAotZGVmIGNvcHlmaWxlKHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGRhdGEgZnJvbSBzcmMgdG8gZHN0IiIiCitkZWYgY29weWZpbGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGRhdGEgZnJvbSBzcmMgdG8gZHN0LgorCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIG5vdCBzZXQgYW5kIHNyYyBpcyBhIHN5bWJvbGljIGxpbmssIGEgbmV3CisgICAgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGl0IHBvaW50cyB0by4KKworICAgICIiIgogICAgIGlmIF9zYW1lZmlsZShzcmMsIGRzdCk6CiAgICAgICAgIHJhaXNlIEVycm9yKCJgJXNgIGFuZCBgJXNgIGFyZSB0aGUgc2FtZSBmaWxlIiAlIChzcmMsIGRzdCkpCiAKQEAgLTk1LDU2ICsxMDMsMTQwIEBACiAgICAgICAgICAgICBpZiBzdGF0LlNfSVNGSUZPKHN0LnN0X21vZGUpOgogICAgICAgICAgICAgICAgIHJhaXNlIFNwZWNpYWxGaWxlRXJyb3IoImAlc2AgaXMgYSBuYW1lZCBwaXBlIiAlIGZuKQogCi0gICAgd2l0aCBvcGVuKHNyYywgJ3JiJykgYXMgZnNyYzoKLSAgICAgICAgd2l0aCBvcGVuKGRzdCwgJ3diJykgYXMgZmRzdDoKLSAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QpCisgICAgaWYgbm90IGZvbGxvd19zeW1saW5rcyBhbmQgb3MucGF0aC5pc2xpbmsoc3JjKToKKyAgICAgICAgb3Muc3ltbGluayhvcy5yZWFkbGluayhzcmMpLCBkc3QpCisgICAgZWxzZToKKyAgICAgICAgd2l0aCBvcGVuKHNyYywgJ3JiJykgYXMgZnNyYzoKKyAgICAgICAgICAgIHdpdGggb3Blbihkc3QsICd3YicpIGFzIGZkc3Q6CisgICAgICAgICAgICAgICAgY29weWZpbGVvYmooZnNyYywgZmRzdCkKKyAgICByZXR1cm4gZHN0CiAKLWRlZiBjb3B5bW9kZShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBtb2RlIGJpdHMgZnJvbSBzcmMgdG8gZHN0IiIiCi0gICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6Ci0gICAgICAgIHN0ID0gb3Muc3RhdChzcmMpCi0gICAgICAgIG1vZGUgPSBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkKLSAgICAgICAgb3MuY2htb2QoZHN0LCBtb2RlKQorZGVmIGNvcHltb2RlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBtb2RlIGJpdHMgZnJvbSBzcmMgdG8gZHN0LgogCi1kZWYgY29weXN0YXQoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgYWxsIHN0YXQgaW5mbyAobW9kZSBiaXRzLCBhdGltZSwgbXRpbWUsIGZsYWdzKSBmcm9tIHNyYyB0byBkc3QiIiIKLSAgICBzdCA9IG9zLnN0YXQoc3JjKQorICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBub3Qgc2V0LCBzeW1saW5rcyBhcmVuJ3QgZm9sbG93ZWQgaWYgYW5kIG9ubHkKKyAgICBpZiBib3RoIGBzcmNgIGFuZCBgZHN0YCBhcmUgc3ltbGlua3MuICBJZiBgbGNobW9kYCBpc24ndCBhdmFpbGFibGUKKyAgICAoZS5nLiBMaW51eCkgdGhpcyBtZXRob2QgZG9lcyBub3RoaW5nLgorCisgICAgIiIiCisgICAgaWYgbm90IGZvbGxvd19zeW1saW5rcyBhbmQgb3MucGF0aC5pc2xpbmsoc3JjKSBhbmQgb3MucGF0aC5pc2xpbmsoZHN0KToKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc3RhdF9mdW5jLCBjaG1vZF9mdW5jID0gb3MubHN0YXQsIG9zLmxjaG1vZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuCisgICAgZWxpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKKyAgICAgICAgc3RhdF9mdW5jLCBjaG1vZF9mdW5jID0gb3Muc3RhdCwgb3MuY2htb2QKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4KKworICAgIHN0ID0gc3RhdF9mdW5jKHNyYykKKyAgICBjaG1vZF9mdW5jKGRzdCwgc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpKQorCitpZiBoYXNhdHRyKG9zLCAnbGlzdHhhdHRyJyk6CisgICAgZGVmIF9jb3B5eGF0dHIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAgICAgIiIiQ29weSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMgZnJvbSBgc3JjYCB0byBgZHN0YC4KKworICAgICAgICBPdmVyd3JpdGUgZXhpc3RpbmcgYXR0cmlidXRlcy4KKworICAgICAgICBJZiBgZm9sbG93X3N5bWxpbmtzYCBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIG5hbWUgaW4gb3MubGlzdHhhdHRyKHNyYywgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBvcy5nZXR4YXR0cihzcmMsIG5hbWUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZHN0LCBuYW1lLCB2YWx1ZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyBub3QgaW4gKGVycm5vLkVQRVJNLCBlcnJuby5FTk9UU1VQLCBlcnJuby5FTk9EQVRBKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKK2Vsc2U6CisgICAgZGVmIF9jb3B5eGF0dHIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcGFzcworCitkZWYgY29weXN0YXQoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGFsbCBzdGF0IGluZm8gKG1vZGUgYml0cywgYXRpbWUsIG10aW1lLCBmbGFncykgZnJvbSBzcmMgdG8gZHN0LgorCisgICAgSWYgdGhlIG9wdGlvbmFsIGZsYWcgYGZvbGxvd19zeW1saW5rc2AgaXMgbm90IHNldCwgc3ltbGlua3MgYXJlbid0IGZvbGxvd2VkIGlmIGFuZAorICAgIG9ubHkgaWYgYm90aCBgc3JjYCBhbmQgYGRzdGAgYXJlIHN5bWxpbmtzLgorCisgICAgIiIiCisgICAgZGVmIF9ub3AoKmFyZ3MsIG5zPU5vbmUsIGZvbGxvd19zeW1saW5rcz1Ob25lKToKKyAgICAgICAgcGFzcworCisgICAgIyBmb2xsb3cgc3ltbGlua3MgKGFrYSBkb24ndCBub3QgZm9sbG93IHN5bWxpbmtzKQorICAgIGZvbGxvdyA9IGZvbGxvd19zeW1saW5rcyBvciBub3QgKG9zLnBhdGguaXNsaW5rKHNyYykgYW5kIG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgaWYgZm9sbG93OgorICAgICAgICAjIHVzZSB0aGUgcmVhbCBmdW5jdGlvbiBpZiBpdCBleGlzdHMKKyAgICAgICAgZGVmIGxvb2t1cChuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG9zLCBuYW1lLCBfbm9wKQorICAgIGVsc2U6CisgICAgICAgICMgdXNlIHRoZSByZWFsIGZ1bmN0aW9uIG9ubHkgaWYgaXQgZXhpc3RzCisgICAgICAgICMgKmFuZCogaXQgc3VwcG9ydHMgZm9sbG93X3N5bWxpbmtzCisgICAgICAgIGRlZiBsb29rdXAobmFtZSk6CisgICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUsIF9ub3ApCisgICAgICAgICAgICBpZiBmbiBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZuCisgICAgICAgICAgICByZXR1cm4gX25vcAorCisgICAgc3QgPSBsb29rdXAoInN0YXQiKShzcmMsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAgICAgbW9kZSA9IHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKQotICAgIGlmIGhhc2F0dHIob3MsICd1dGltZScpOgotICAgICAgICBvcy51dGltZShkc3QsIChzdC5zdF9hdGltZSwgc3Quc3RfbXRpbWUpKQotICAgIGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgotICAgICAgICBvcy5jaG1vZChkc3QsIG1vZGUpCi0gICAgaWYgaGFzYXR0cihvcywgJ2NoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJyk6CisgICAgbG9va3VwKCJ1dGltZSIpKGRzdCwgbnM9KHN0LnN0X2F0aW1lX25zLCBzdC5zdF9tdGltZV9ucyksCisgICAgICAgIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCisgICAgdHJ5OgorICAgICAgICBsb29rdXAoImNobW9kIikoZHN0LCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQorICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAjIGlmIHdlIGdvdCBhIE5vdEltcGxlbWVudGVkRXJyb3IsIGl0J3MgYmVjYXVzZQorICAgICAgICAjICAgKiBmb2xsb3dfc3ltbGlua3M9RmFsc2UsCisgICAgICAgICMgICAqIGxjaG93bigpIGlzIHVuYXZhaWxhYmxlLCBhbmQKKyAgICAgICAgIyAgICogZWl0aGVyCisgICAgICAgICMgICAgICAgKiBmY2hvd25hdCgpIGlzIHVudmFpbGFibGUgb3IKKyAgICAgICAgIyAgICAgICAqIGZjaG93bmF0KCkgZG9lc24ndCBpbXBsZW1lbnQgQVRfU1lNTElOS19OT0ZPTExPVy4KKyAgICAgICAgIyAgICAgICAgIChpdCByZXR1cm5lZCBFTk9TVVAuKQorICAgICAgICAjIHRoZXJlZm9yZSB3ZSdyZSBvdXQgb2Ygb3B0aW9ucy0td2Ugc2ltcGx5IGNhbm5vdCBjaG93biB0aGUKKyAgICAgICAgIyBzeW1saW5rLiAgZ2l2ZSB1cCwgc3VwcHJlc3MgdGhlIGVycm9yLgorICAgICAgICAjICh3aGljaCBpcyB3aGF0IHNodXRpbCBhbHdheXMgZGlkIGluIHRoaXMgY2lyY3Vtc3RhbmNlLikKKyAgICAgICAgcGFzcworICAgIGlmIGhhc2F0dHIoc3QsICdzdF9mbGFncycpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5jaGZsYWdzKGRzdCwgc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICBsb29rdXAoImNoZmxhZ3MiKShkc3QsIHN0LnN0X2ZsYWdzLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyB3aHk6CiAgICAgICAgICAgICBmb3IgZXJyIGluICdFT1BOT1RTVVBQJywgJ0VOT1RTVVAnOgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZXJybm8sIGVycikgYW5kIHdoeS5lcnJubyA9PSBnZXRhdHRyKGVycm5vLCBlcnIpOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZQorICAgIF9jb3B5eGF0dHIoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3cpCiAKLWRlZiBjb3B5KHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGRhdGEgYW5kIG1vZGUgYml0cyAoImNwIHNyYyBkc3QiKS4KK2RlZiBjb3B5KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGFuZCBtb2RlIGJpdHMgKCJjcCBzcmMgZHN0IikuIFJldHVybiB0aGUgZmlsZSdzIGRlc3RpbmF0aW9uLgogCiAgICAgVGhlIGRlc3RpbmF0aW9uIG1heSBiZSBhIGRpcmVjdG9yeS4KIAorICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuIFRoaXMKKyAgICByZXNlbWJsZXMgR05VJ3MgImNwIC1QIHNyYyBkc3QiLgorCiAgICAgIiIiCiAgICAgaWYgb3MucGF0aC5pc2Rpcihkc3QpOgogICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oZHN0LCBvcy5wYXRoLmJhc2VuYW1lKHNyYykpCi0gICAgY29weWZpbGUoc3JjLCBkc3QpCi0gICAgY29weW1vZGUoc3JjLCBkc3QpCisgICAgY29weWZpbGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgY29weW1vZGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgY29weTIoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgZGF0YSBhbmQgYWxsIHN0YXQgaW5mbyAoImNwIC1wIHNyYyBkc3QiKS4KK2RlZiBjb3B5MihzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgZGF0YSBhbmQgYWxsIHN0YXQgaW5mbyAoImNwIC1wIHNyYyBkc3QiKS4gUmV0dXJuIHRoZSBmaWxlJ3MKKyAgICBkZXN0aW5hdGlvbi4iCiAKICAgICBUaGUgZGVzdGluYXRpb24gbWF5IGJlIGEgZGlyZWN0b3J5LgogCisgICAgSWYgZm9sbG93X3N5bWxpbmtzIGlzIGZhbHNlLCBzeW1saW5rcyB3b24ndCBiZSBmb2xsb3dlZC4gVGhpcworICAgIHJlc2VtYmxlcyBHTlUncyAiY3AgLVAgc3JjIGRzdCIuCisKICAgICAiIiIKICAgICBpZiBvcy5wYXRoLmlzZGlyKGRzdCk6CiAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihkc3QsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKLSAgICBjb3B5ZmlsZShzcmMsIGRzdCkKLSAgICBjb3B5c3RhdChzcmMsIGRzdCkKKyAgICBjb3B5ZmlsZShzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICBjb3B5c3RhdChzcmMsIGRzdCwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICByZXR1cm4gZHN0CiAKIGRlZiBpZ25vcmVfcGF0dGVybnMoKnBhdHRlcm5zKToKICAgICAiIiJGdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGNvcHl0cmVlKCkgaWdub3JlIHBhcmFtZXRlci4KQEAgLTIxMSw3ICszMDMsMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHNyY25hbWUpOgogICAgICAgICAgICAgICAgIGxpbmt0byA9IG9zLnJlYWRsaW5rKHNyY25hbWUpCiAgICAgICAgICAgICAgICAgaWYgc3ltbGlua3M6CisgICAgICAgICAgICAgICAgICAgICMgV2UgY2FuJ3QganVzdCBsZWF2ZSBpdCB0byBgY29weV9mdW5jdGlvbmAgYmVjYXVzZSBsZWdhY3kKKyAgICAgICAgICAgICAgICAgICAgIyBjb2RlIHdpdGggYSBjdXN0b20gYGNvcHlfZnVuY3Rpb25gIG1heSByZWx5IG9uIGNvcHl0cmVlCisgICAgICAgICAgICAgICAgICAgICMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nLgogICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGxpbmt0bywgZHN0bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgY29weXN0YXQoc3JjbmFtZSwgZHN0bmFtZSwgZm9sbG93X3N5bWxpbmtzPW5vdCBzeW1saW5rcykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIGlnbm9yZSBkYW5nbGluZyBzeW1saW5rIGlmIHRoZSBmbGFnIGlzIG9uCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaW5rdG8pIGFuZCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M6CkBAIC0yMzksMjQgKzMzNSwxMCBAQAogICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoc3JjLCBkc3QsIHN0cih3aHkpKSkKICAgICBpZiBlcnJvcnM6CiAgICAgICAgIHJhaXNlIEVycm9yKGVycm9ycykKKyAgICByZXR1cm4gZHN0CiAKLWRlZiBybXRyZWUocGF0aCwgaWdub3JlX2Vycm9ycz1GYWxzZSwgb25lcnJvcj1Ob25lKToKLSAgICAiIiJSZWN1cnNpdmVseSBkZWxldGUgYSBkaXJlY3RvcnkgdHJlZS4KLQotICAgIElmIGlnbm9yZV9lcnJvcnMgaXMgc2V0LCBlcnJvcnMgYXJlIGlnbm9yZWQ7IG90aGVyd2lzZSwgaWYgb25lcnJvcgotICAgIGlzIHNldCwgaXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGUgZXJyb3Igd2l0aCBhcmd1bWVudHMgKGZ1bmMsCi0gICAgcGF0aCwgZXhjX2luZm8pIHdoZXJlIGZ1bmMgaXMgb3MubGlzdGRpciwgb3MucmVtb3ZlLCBvciBvcy5ybWRpcjsKLSAgICBwYXRoIGlzIHRoZSBhcmd1bWVudCB0byB0aGF0IGZ1bmN0aW9uIHRoYXQgY2F1c2VkIGl0IHRvIGZhaWw7IGFuZAotICAgIGV4Y19pbmZvIGlzIGEgdHVwbGUgcmV0dXJuZWQgYnkgc3lzLmV4Y19pbmZvKCkuICBJZiBpZ25vcmVfZXJyb3JzCi0gICAgaXMgZmFsc2UgYW5kIG9uZXJyb3IgaXMgTm9uZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotICAgICIiIgotICAgIGlmIGlnbm9yZV9lcnJvcnM6Ci0gICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBlbGlmIG9uZXJyb3IgaXMgTm9uZToKLSAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgotICAgICAgICAgICAgcmFpc2UKKyMgdmVyc2lvbiB2dWxuZXJhYmxlIHRvIHJhY2UgY29uZGl0aW9ucworZGVmIF9ybXRyZWVfdW5zYWZlKHBhdGgsIG9uZXJyb3IpOgogICAgIHRyeToKICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6CiAgICAgICAgICAgICAjIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzIGFyZSBmb3JiaWRkZW4sIHNlZSBidWcgIzE2NjkKQEAgLTI2OCw3ICszNTAsNyBAQAogICAgIG5hbWVzID0gW10KICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihwYXRoKQotICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnI6CisgICAgZXhjZXB0IG9zLmVycm9yOgogICAgICAgICBvbmVycm9yKG9zLmxpc3RkaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQpAQCAtMjc3LDE3ICszNTksMTA5IEBACiAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgICAgIG1vZGUgPSAwCiAgICAgICAgIGlmIHN0YXQuU19JU0RJUihtb2RlKToKLSAgICAgICAgICAgIHJtdHJlZShmdWxsbmFtZSwgaWdub3JlX2Vycm9ycywgb25lcnJvcikKKyAgICAgICAgICAgIF9ybXRyZWVfdW5zYWZlKGZ1bGxuYW1lLCBvbmVycm9yKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmdWxsbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgb25lcnJvcihvcy5yZW1vdmUsIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoZnVsbG5hbWUpCisgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgb25lcnJvcihvcy51bmxpbmssIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKICAgICB0cnk6CiAgICAgICAgIG9zLnJtZGlyKHBhdGgpCiAgICAgZXhjZXB0IG9zLmVycm9yOgogICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKIAorIyBWZXJzaW9uIHVzaW5nIGZkLWJhc2VkIEFQSXMgdG8gcHJvdGVjdCBhZ2FpbnN0IHJhY2VzCitkZWYgX3JtdHJlZV9zYWZlX2ZkKHRvcGZkLCBwYXRoLCBvbmVycm9yKToKKyAgICBuYW1lcyA9IFtdCisgICAgdHJ5OgorICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIodG9wZmQpCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICBvbmVycm9yKG9zLmxpc3RkaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX3N0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgIG1vZGUgPSBvcmlnX3N0LnN0X21vZGUKKyAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgbW9kZSA9IDAKKyAgICAgICAgaWYgc3RhdC5TX0lTRElSKG1vZGUpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihuYW1lLCBvcy5PX1JET05MWSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mub3BlbiwgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguc2FtZXN0YXQob3JpZ19zdCwgb3MuZnN0YXQoZGlyZmQpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIF9ybXRyZWVfc2FmZV9mZChkaXJmZCwgZnVsbG5hbWUsIG9uZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIobmFtZSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXRvcGZkKQorICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MudW5saW5rLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisKK191c2VfZmRfZnVuY3Rpb25zID0gKHtvcy5vcGVuLCBvcy5zdGF0LCBvcy51bmxpbmssIG9zLnJtZGlyfSA8PQorICAgICAgICAgICAgICAgICAgICAgb3Muc3VwcG9ydHNfZGlyX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgb3MubGlzdGRpciBpbiBvcy5zdXBwb3J0c19mZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzKQorCitkZWYgcm10cmVlKHBhdGgsIGlnbm9yZV9lcnJvcnM9RmFsc2UsIG9uZXJyb3I9Tm9uZSk6CisgICAgIiIiUmVjdXJzaXZlbHkgZGVsZXRlIGEgZGlyZWN0b3J5IHRyZWUuCisKKyAgICBJZiBpZ25vcmVfZXJyb3JzIGlzIHNldCwgZXJyb3JzIGFyZSBpZ25vcmVkOyBvdGhlcndpc2UsIGlmIG9uZXJyb3IKKyAgICBpcyBzZXQsIGl0IGlzIGNhbGxlZCB0byBoYW5kbGUgdGhlIGVycm9yIHdpdGggYXJndW1lbnRzIChmdW5jLAorICAgIHBhdGgsIGV4Y19pbmZvKSB3aGVyZSBmdW5jIGlzIHBsYXRmb3JtIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQ7CisgICAgcGF0aCBpcyB0aGUgYXJndW1lbnQgdG8gdGhhdCBmdW5jdGlvbiB0aGF0IGNhdXNlZCBpdCB0byBmYWlsOyBhbmQKKyAgICBleGNfaW5mbyBpcyBhIHR1cGxlIHJldHVybmVkIGJ5IHN5cy5leGNfaW5mbygpLiAgSWYgaWdub3JlX2Vycm9ycworICAgIGlzIGZhbHNlIGFuZCBvbmVycm9yIGlzIE5vbmUsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgICAiIiIKKyAgICBpZiBpZ25vcmVfZXJyb3JzOgorICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6CisgICAgICAgICAgICBwYXNzCisgICAgZWxpZiBvbmVycm9yIGlzIE5vbmU6CisgICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKKyAgICAgICAgICAgIHJhaXNlCisgICAgaWYgX3VzZV9mZF9mdW5jdGlvbnM6CisgICAgICAgICMgV2hpbGUgdGhlIHVuc2FmZSBybXRyZWUgd29ya3MgZmluZSBvbiBieXRlcywgdGhlIGZkIGJhc2VkIGRvZXMgbm90LgorICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgICAgIHBhdGggPSBvcy5mc2RlY29kZShwYXRoKQorICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAorICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfc3QgPSBvcy5sc3RhdChwYXRoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgb25lcnJvcihvcy5sc3RhdCwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fUkRPTkxZKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgb25lcnJvcihvcy5sc3RhdCwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgKHN0YXQuU19JU0RJUihvcmlnX3N0LnN0X21vZGUpIGFuZAorICAgICAgICAgICAgICAgIG9zLnBhdGguc2FtZXN0YXQob3JpZ19zdCwgb3MuZnN0YXQoZmQpKSk6CisgICAgICAgICAgICAgICAgX3JtdHJlZV9zYWZlX2ZkKGZkLCBwYXRoLCBvbmVycm9yKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIocGF0aCkKKyAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3Iob3Mucm1kaXIsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBOb3RBRGlyZWN0b3J5RXJyb3IoMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgYSBkaXJlY3Rvcnk6ICd7fSciLmZvcm1hdChwYXRoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBfcm10cmVlX3Vuc2FmZShwYXRoLCBvbmVycm9yKQorCisjIEFsbG93IGludHJvc3BlY3Rpb24gb2Ygd2hldGhlciBvciBub3QgdGhlIGhhcmRlbmluZyBhZ2FpbnN0IHN5bWxpbmsKKyMgYXR0YWNrcyBpcyBzdXBwb3J0ZWQgb24gdGhlIGN1cnJlbnQgcGxhdGZvcm0KK3JtdHJlZS5hdm9pZHNfc3ltbGlua19hdHRhY2tzID0gX3VzZV9mZF9mdW5jdGlvbnMKIAogZGVmIF9iYXNlbmFtZShwYXRoKToKICAgICAjIEEgYmFzZW5hbWUoKSB2YXJpYW50IHdoaWNoIGZpcnN0IHN0cmlwcyB0aGUgdHJhaWxpbmcgc2xhc2gsIGlmIHByZXNlbnQuCkBAIC0yOTYsNyArNDcwLDggQEAKIAogZGVmIG1vdmUoc3JjLCBkc3QpOgogICAgICIiIlJlY3Vyc2l2ZWx5IG1vdmUgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGlzCi0gICAgc2ltaWxhciB0byB0aGUgVW5peCAibXYiIGNvbW1hbmQuCisgICAgc2ltaWxhciB0byB0aGUgVW5peCAibXYiIGNvbW1hbmQuIFJldHVybiB0aGUgZmlsZSBvciBkaXJlY3RvcnkncworICAgIGRlc3RpbmF0aW9uLgogCiAgICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5IG9yIGEgc3ltbGluayB0byBhIGRpcmVjdG9yeSwgdGhlIHNvdXJjZQogICAgIGlzIG1vdmVkIGluc2lkZSB0aGUgZGlyZWN0b3J5LiBUaGUgZGVzdGluYXRpb24gcGF0aCBtdXN0IG5vdCBhbHJlYWR5CkBAIC0zMDYsNyArNDgxLDEwIEBACiAgICAgb3ZlcndyaXR0ZW4gZGVwZW5kaW5nIG9uIG9zLnJlbmFtZSgpIHNlbWFudGljcy4KIAogICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBvbiBvdXIgY3VycmVudCBmaWxlc3lzdGVtLCB0aGVuIHJlbmFtZSgpIGlzIHVzZWQuCi0gICAgT3RoZXJ3aXNlLCBzcmMgaXMgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBhbmQgdGhlbiByZW1vdmVkLgorICAgIE90aGVyd2lzZSwgc3JjIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gYW5kIHRoZW4gcmVtb3ZlZC4gU3ltbGlua3MgYXJlCisgICAgcmVjcmVhdGVkIHVuZGVyIHRoZSBuZXcgbmFtZSBpZiBvcy5yZW5hbWUoKSBmYWlscyBiZWNhdXNlIG9mIGNyb3NzCisgICAgZmlsZXN5c3RlbSByZW5hbWVzLgorCiAgICAgQSBsb3QgbW9yZSBjb3VsZCBiZSBkb25lIGhlcmUuLi4gIEEgbG9vayBhdCBhIG12LmMgc2hvd3MgYSBsb3Qgb2YKICAgICB0aGUgaXNzdWVzIHRoaXMgaW1wbGVtZW50YXRpb24gZ2xvc3NlcyBvdmVyLgogCkBAIC0zMjQsOCArNTAyLDEyIEBACiAgICAgICAgICAgICByYWlzZSBFcnJvcigiRGVzdGluYXRpb24gcGF0aCAnJXMnIGFscmVhZHkgZXhpc3RzIiAlIHJlYWxfZHN0KQogICAgIHRyeToKICAgICAgICAgb3MucmVuYW1lKHNyYywgcmVhbF9kc3QpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHNyYyk6CisgICAgICAgICAgICBsaW5rdG8gPSBvcy5yZWFkbGluayhzcmMpCisgICAgICAgICAgICBvcy5zeW1saW5rKGxpbmt0bywgcmVhbF9kc3QpCisgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoc3JjKToKICAgICAgICAgICAgIGlmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDYW5ub3QgbW92ZSBhIGRpcmVjdG9yeSAnJXMnIGludG8gaXRzZWxmICclcycuIiAlIChzcmMsIGRzdCkpCiAgICAgICAgICAgICBjb3B5dHJlZShzcmMsIHJlYWxfZHN0LCBzeW1saW5rcz1UcnVlKQpAQCAtMzMzLDYgKzUxNSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb3B5MihzcmMsIHJlYWxfZHN0KQogICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKyAgICByZXR1cm4gcmVhbF9kc3QKIAogZGVmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgogICAgIHNyYyA9IGFic3BhdGgoc3JjKQpAQCAtMzkxLDcgKzU3NCw3IEBACiAgICAgICAgIGNvbXByZXNzX2V4dFsnYnppcDInXSA9ICcuYnoyJwogCiAgICAgIyBmbGFncyBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSwgZWFjaCBlbGVtZW50IG9mIGxpc3Qgd2lsbCBiZSBhbiBhcmd1bWVudAotICAgIGlmIGNvbXByZXNzIGlzIG5vdCBOb25lIGFuZCBjb21wcmVzcyBub3QgaW4gY29tcHJlc3NfZXh0LmtleXMoKToKKyAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnLCBvciBjb21wcmVzc2lvbiBmb3JtYXQgbm90ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkIDogezB9Ii5mb3JtYXQoY29tcHJlc3MpKQogCkBAIC00OTYsNyArNjc5LDcgQEAKIF9BUkNISVZFX0ZPUk1BVFMgPSB7CiAgICAgJ2d6dGFyJzogKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2d6aXAnKV0sICJnemlwJ2VkIHRhci1maWxlIiksCiAgICAgJ3Rhcic6ICAgKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgTm9uZSldLCAidW5jb21wcmVzc2VkIHRhciBmaWxlIiksCi0gICAgJ3ppcCc6ICAgKF9tYWtlX3ppcGZpbGUsIFtdLCJaSVAgZmlsZSIpCisgICAgJ3ppcCc6ICAgKF9tYWtlX3ppcGZpbGUsIFtdLCAiWklQIGZpbGUiKQogICAgIH0KIAogaWYgX0JaMl9TVVBQT1JURUQ6CkBAIC01MjksNyArNzEyLDcgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShleHRyYV9hcmdzLCAodHVwbGUsIGxpc3QpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHRyYV9hcmdzIG5lZWRzIHRvIGJlIGEgc2VxdWVuY2UnKQogICAgIGZvciBlbGVtZW50IGluIGV4dHJhX2FyZ3M6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVsZW1lbnQsICh0dXBsZSwgbGlzdCkpIG9yIGxlbihlbGVtZW50KSAhPTIgOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbGVtZW50LCAodHVwbGUsIGxpc3QpKSBvciBsZW4oZWxlbWVudCkgIT0yOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHRyYV9hcmdzIGVsZW1lbnRzIGFyZSA6IChhcmdfbmFtZSwgdmFsdWUpJykKIAogICAgIF9BUkNISVZFX0ZPUk1BVFNbbmFtZV0gPSAoZnVuY3Rpb24sIGV4dHJhX2FyZ3MsIGRlc2NyaXB0aW9uKQpAQCAtNjgxLDcgKzg2NCw3IEBACiAgICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnLycpOgogICAgICAgICAgICAgICAgICMgZmlsZQogICAgICAgICAgICAgICAgIGRhdGEgPSB6aXAucmVhZChpbmZvLmZpbGVuYW1lKQotICAgICAgICAgICAgICAgIGYgPSBvcGVuKHRhcmdldCwnd2InKQorICAgICAgICAgICAgICAgIGYgPSBvcGVuKHRhcmdldCwgJ3diJykKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKICAgICAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtNzU1LDMgKzkzOCwxNjUgQEAKICAgICAgICAgZnVuYyA9IF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzFdCiAgICAgICAgIGt3YXJncyA9IGRpY3QoX1VOUEFDS19GT1JNQVRTW2Zvcm1hdF1bMl0pCiAgICAgICAgIGZ1bmMoZmlsZW5hbWUsIGV4dHJhY3RfZGlyLCAqKmt3YXJncykKKworCitpZiBoYXNhdHRyKG9zLCAnc3RhdHZmcycpOgorCisgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQorICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKworICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgorCisgICAgICAgIFJldHVybmVkIHZhbHVlIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKKyAgICAgICAgJ2ZyZWUnLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZiB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisgICAgICAgICIiIgorICAgICAgICBzdCA9IG9zLnN0YXR2ZnMocGF0aCkKKyAgICAgICAgZnJlZSA9IHN0LmZfYmF2YWlsICogc3QuZl9mcnNpemUKKyAgICAgICAgdG90YWwgPSBzdC5mX2Jsb2NrcyAqIHN0LmZfZnJzaXplCisgICAgICAgIHVzZWQgPSAoc3QuZl9ibG9ja3MgLSBzdC5mX2JmcmVlKSAqIHN0LmZfZnJzaXplCisgICAgICAgIHJldHVybiBfbnR1cGxlX2Rpc2t1c2FnZSh0b3RhbCwgdXNlZCwgZnJlZSkKKworZWxpZiBvcy5uYW1lID09ICdudCc6CisKKyAgICBpbXBvcnQgbnQKKyAgICBfX2FsbF9fLmFwcGVuZCgnZGlza191c2FnZScpCisgICAgX250dXBsZV9kaXNrdXNhZ2UgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCd1c2FnZScsICd0b3RhbCB1c2VkIGZyZWUnKQorCisgICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CisgICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCisKKyAgICAgICAgUmV0dXJuZWQgdmFsdXMgaXMgYSBuYW1lZCB0dXBsZSB3aXRoIGF0dHJpYnV0ZXMgJ3RvdGFsJywgJ3VzZWQnIGFuZAorICAgICAgICAnZnJlZScsIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mIHRvdGFsLCB1c2VkIGFuZCBmcmVlIHNwYWNlLCBpbiBieXRlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRvdGFsLCBmcmVlID0gbnQuX2dldGRpc2t1c2FnZShwYXRoKQorICAgICAgICB1c2VkID0gdG90YWwgLSBmcmVlCisgICAgICAgIHJldHVybiBfbnR1cGxlX2Rpc2t1c2FnZSh0b3RhbCwgdXNlZCwgZnJlZSkKKworCitkZWYgY2hvd24ocGF0aCwgdXNlcj1Ob25lLCBncm91cD1Ob25lKToKKyAgICAiIiJDaGFuZ2Ugb3duZXIgdXNlciBhbmQgZ3JvdXAgb2YgdGhlIGdpdmVuIHBhdGguCisKKyAgICB1c2VyIGFuZCBncm91cCBjYW4gYmUgdGhlIHVpZC9naWQgb3IgdGhlIHVzZXIvZ3JvdXAgbmFtZXMsIGFuZCBpbiB0aGF0IGNhc2UsCisgICAgdGhleSBhcmUgY29udmVydGVkIHRvIHRoZWlyIHJlc3BlY3RpdmUgdWlkL2dpZC4KKyAgICAiIiIKKworICAgIGlmIHVzZXIgaXMgTm9uZSBhbmQgZ3JvdXAgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidXNlciBhbmQvb3IgZ3JvdXAgbXVzdCBiZSBzZXQiKQorCisgICAgX3VzZXIgPSB1c2VyCisgICAgX2dyb3VwID0gZ3JvdXAKKworICAgICMgLTEgbWVhbnMgZG9uJ3QgY2hhbmdlIGl0CisgICAgaWYgdXNlciBpcyBOb25lOgorICAgICAgICBfdXNlciA9IC0xCisgICAgIyB1c2VyIGNhbiBlaXRoZXIgYmUgYW4gaW50ICh0aGUgdWlkKSBvciBhIHN0cmluZyAodGhlIHN5c3RlbSB1c2VybmFtZSkKKyAgICBlbGlmIGlzaW5zdGFuY2UodXNlciwgc3RyKToKKyAgICAgICAgX3VzZXIgPSBfZ2V0X3VpZCh1c2VyKQorICAgICAgICBpZiBfdXNlciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoIm5vIHN1Y2ggdXNlcjogeyFyfSIuZm9ybWF0KHVzZXIpKQorCisgICAgaWYgZ3JvdXAgaXMgTm9uZToKKyAgICAgICAgX2dyb3VwID0gLTEKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGdyb3VwLCBpbnQpOgorICAgICAgICBfZ3JvdXAgPSBfZ2V0X2dpZChncm91cCkKKyAgICAgICAgaWYgX2dyb3VwIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBMb29rdXBFcnJvcigibm8gc3VjaCBncm91cDogeyFyfSIuZm9ybWF0KGdyb3VwKSkKKworICAgIG9zLmNob3duKHBhdGgsIF91c2VyLCBfZ3JvdXApCisKK2RlZiBnZXRfdGVybWluYWxfc2l6ZShmYWxsYmFjaz0oODAsIDI0KSk6CisgICAgIiIiR2V0IHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cuCisKKyAgICBGb3IgZWFjaCBvZiB0aGUgdHdvIGRpbWVuc2lvbnMsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgQ09MVU1OUworICAgIGFuZCBMSU5FUyByZXNwZWN0aXZlbHksIGlzIGNoZWNrZWQuIElmIHRoZSB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZAorICAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCisKKyAgICBXaGVuIENPTFVNTlMgb3IgTElORVMgaXMgbm90IGRlZmluZWQsIHdoaWNoIGlzIHRoZSBjb21tb24gY2FzZSwKKyAgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIHN5cy5fX3N0ZG91dF9fIGlzIHF1ZXJpZWQKKyAgICBieSBpbnZva2luZyBvcy5nZXRfdGVybWluYWxfc2l6ZS4KKworICAgIElmIHRoZSB0ZXJtaW5hbCBzaXplIGNhbm5vdCBiZSBzdWNjZXNzZnVsbHkgcXVlcmllZCwgZWl0aGVyIGJlY2F1c2UKKyAgICB0aGUgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBxdWVyeWluZywgb3IgYmVjYXVzZSB3ZSBhcmUgbm90CisgICAgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIHRoZSB2YWx1ZSBnaXZlbiBpbiBmYWxsYmFjayBwYXJhbWV0ZXIKKyAgICBpcyB1c2VkLiBGYWxsYmFjayBkZWZhdWx0cyB0byAoODAsIDI0KSB3aGljaCBpcyB0aGUgZGVmYXVsdAorICAgIHNpemUgdXNlZCBieSBtYW55IHRlcm1pbmFsIGVtdWxhdG9ycy4KKworICAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgb3MudGVybWluYWxfc2l6ZS4KKyAgICAiIiIKKyAgICAjIGNvbHVtbnMsIGxpbmVzIGFyZSB0aGUgd29ya2luZyB2YWx1ZXMKKyAgICB0cnk6CisgICAgICAgIGNvbHVtbnMgPSBpbnQob3MuZW52aXJvblsnQ09MVU1OUyddKQorICAgIGV4Y2VwdCAoS2V5RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBjb2x1bW5zID0gMAorCisgICAgdHJ5OgorICAgICAgICBsaW5lcyA9IGludChvcy5lbnZpcm9uWydMSU5FUyddKQorICAgIGV4Y2VwdCAoS2V5RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICBsaW5lcyA9IDAKKworICAgICMgb25seSBxdWVyeSBpZiBuZWNlc3NhcnkKKyAgICBpZiBjb2x1bW5zIDw9IDAgb3IgbGluZXMgPD0gMDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IG9zLmdldF90ZXJtaW5hbF9zaXplKHN5cy5fX3N0ZG91dF9fLmZpbGVubygpKQorICAgICAgICBleGNlcHQgKE5hbWVFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICBzaXplID0gb3MudGVybWluYWxfc2l6ZShmYWxsYmFjaykKKyAgICAgICAgaWYgY29sdW1ucyA8PSAwOgorICAgICAgICAgICAgY29sdW1ucyA9IHNpemUuY29sdW1ucworICAgICAgICBpZiBsaW5lcyA8PSAwOgorICAgICAgICAgICAgbGluZXMgPSBzaXplLmxpbmVzCisKKyAgICByZXR1cm4gb3MudGVybWluYWxfc2l6ZSgoY29sdW1ucywgbGluZXMpKQorCitkZWYgd2hpY2goY21kLCBtb2RlPW9zLkZfT0sgfCBvcy5YX09LLCBwYXRoPU5vbmUpOgorICAgICIiIkdpdmVuIGEgY29tbWFuZCwgbW9kZSwgYW5kIGEgUEFUSCBzdHJpbmcsIHJldHVybiB0aGUgcGF0aCB3aGljaAorICAgIGNvbmZvcm1zIHRvIHRoZSBnaXZlbiBtb2RlIG9uIHRoZSBQQVRILCBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHN1Y2gKKyAgICBmaWxlLgorCisgICAgYG1vZGVgIGRlZmF1bHRzIHRvIG9zLkZfT0sgfCBvcy5YX09LLiBgcGF0aGAgZGVmYXVsdHMgdG8gdGhlIHJlc3VsdAorICAgIG9mIG9zLmVudmlyb24uZ2V0KCJQQVRIIiksIG9yIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYSBjdXN0b20gc2VhcmNoCisgICAgcGF0aC4KKworICAgICIiIgorICAgICMgQ2hlY2sgdGhhdCBhIGdpdmVuIGZpbGUgY2FuIGJlIGFjY2Vzc2VkIHdpdGggdGhlIGNvcnJlY3QgbW9kZS4KKyAgICAjIEFkZGl0aW9uYWxseSBjaGVjayB0aGF0IGBmaWxlYCBpcyBub3QgYSBkaXJlY3RvcnksIGFzIG9uIFdpbmRvd3MKKyAgICAjIGRpcmVjdG9yaWVzIHBhc3MgdGhlIG9zLmFjY2VzcyBjaGVjay4KKyAgICBkZWYgX2FjY2Vzc19jaGVjayhmbiwgbW9kZSk6CisgICAgICAgIHJldHVybiAob3MucGF0aC5leGlzdHMoZm4pIGFuZCBvcy5hY2Nlc3MoZm4sIG1vZGUpCisgICAgICAgICAgICAgICAgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKGZuKSkKKworICAgICMgU2hvcnQgY2lyY3VpdC4gSWYgd2UncmUgZ2l2ZW4gYSBmdWxsIHBhdGggd2hpY2ggbWF0Y2hlcyB0aGUgbW9kZQorICAgICMgYW5kIGl0IGV4aXN0cywgd2UncmUgZG9uZSBoZXJlLgorICAgIGlmIF9hY2Nlc3NfY2hlY2soY21kLCBtb2RlKToKKyAgICAgICAgcmV0dXJuIGNtZAorCisgICAgcGF0aCA9IChwYXRoIG9yIG9zLmVudmlyb24uZ2V0KCJQQVRIIiwgb3MuZGVmcGF0aCkpLnNwbGl0KG9zLnBhdGhzZXApCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgIyBUaGUgY3VycmVudCBkaXJlY3RvcnkgdGFrZXMgcHJlY2VkZW5jZSBvbiBXaW5kb3dzLgorICAgICAgICBpZiBub3Qgb3MuY3VyZGlyIGluIHBhdGg6CisgICAgICAgICAgICBwYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisKKyAgICAgICAgIyBQQVRIRVhUIGlzIG5lY2Vzc2FyeSB0byBjaGVjayBvbiBXaW5kb3dzLgorICAgICAgICBwYXRoZXh0ID0gb3MuZW52aXJvbi5nZXQoIlBBVEhFWFQiLCAiIikuc3BsaXQob3MucGF0aHNlcCkKKyAgICAgICAgIyBTZWUgaWYgdGhlIGdpdmVuIGZpbGUgbWF0Y2hlcyBhbnkgb2YgdGhlIGV4cGVjdGVkIHBhdGggZXh0ZW5zaW9ucy4KKyAgICAgICAgIyBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gc2hvcnQgY2lyY3VpdCB3aGVuIGdpdmVuICJweXRob24uZXhlIi4KKyAgICAgICAgbWF0Y2hlcyA9IFtjbWQgZm9yIGV4dCBpbiBwYXRoZXh0IGlmIGNtZC5sb3dlcigpLmVuZHN3aXRoKGV4dC5sb3dlcigpKV0KKyAgICAgICAgIyBJZiBpdCBkb2VzIG1hdGNoLCBvbmx5IHRlc3QgdGhhdCBvbmUsIG90aGVyd2lzZSB3ZSBoYXZlIHRvIHRyeQorICAgICAgICAjIG90aGVycy4KKyAgICAgICAgZmlsZXMgPSBbY21kXSBpZiBtYXRjaGVzIGVsc2UgW2NtZCArIGV4dC5sb3dlcigpIGZvciBleHQgaW4gcGF0aGV4dF0KKyAgICBlbHNlOgorICAgICAgICAjIE9uIG90aGVyIHBsYXRmb3JtcyB5b3UgZG9uJ3QgaGF2ZSB0aGluZ3MgbGlrZSBQQVRIRVhUIHRvIHRlbGwgeW91CisgICAgICAgICMgd2hhdCBmaWxlIHN1ZmZpeGVzIGFyZSBleGVjdXRhYmxlLCBzbyBqdXN0IHBhc3Mgb24gY21kIGFzLWlzLgorICAgICAgICBmaWxlcyA9IFtjbWRdCisKKyAgICBzZWVuID0gc2V0KCkKKyAgICBmb3IgZGlyIGluIHBhdGg6CisgICAgICAgIGRpciA9IG9zLnBhdGgubm9ybWNhc2UoZGlyKQorICAgICAgICBpZiBub3QgZGlyIGluIHNlZW46CisgICAgICAgICAgICBzZWVuLmFkZChkaXIpCisgICAgICAgICAgICBmb3IgdGhlZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKGRpciwgdGhlZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBfYWNjZXNzX2NoZWNrKG5hbWUsIG1vZGUpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IGEyYzBiZWMuLjBhYWY0NmIgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC0xMyw2ICsxMywxOSBAQAogcmVzdWx0aW5nIGRpcmVjdG9yaWVzLCBpZiB0aGV5IGV4aXN0LCBhcmUgYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZAogYWxzbyBpbnNwZWN0ZWQgZm9yIHBhdGggY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKworQWxsIG9mIHRoZSByZXN1bHRpbmcgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlCithcHBlbmRlZCB0byBzeXMucGF0aCwgYW5kIGFsc28gaW5zcGVjdGVkIGZvciBwYXRoIGNvbmZpZ3VyYXRpb24KK2ZpbGVzLgorCiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybQogPHBhY2thZ2U+LnB0aDsgaXRzIGNvbnRlbnRzIGFyZSBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIChvbmUgcGVyIGxpbmUpCiB0byBiZSBhZGRlZCB0byBzeXMucGF0aC4gIE5vbi1leGlzdGluZyBkaXJlY3RvcmllcyAob3IKQEAgLTU0LDggKzY3LDggQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IHRyYWNlYmFjawogCiAjIFByZWZpeGVzIGZvciBzaXRlLXBhY2thZ2VzOyBhZGQgYWRkaXRpb25hbCBwcmVmaXhlcyBsaWtlIC91c3IvbG9jYWwgaGVyZQogUFJFRklYRVMgPSBbc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4XQpAQCAtODIsNyArOTUsOCBAQAogZGVmIGFic19wYXRocygpOgogICAgICIiIlNldCBhbGwgbW9kdWxlIF9fZmlsZV9fIGFuZCBfX2NhY2hlZF9fIGF0dHJpYnV0ZXMgdG8gYW4gYWJzb2x1dGUgcGF0aCIiIgogICAgIGZvciBtIGluIHNldChzeXMubW9kdWxlcy52YWx1ZXMoKSk6Ci0gICAgICAgIGlmIGhhc2F0dHIobSwgJ19fbG9hZGVyX18nKToKKyAgICAgICAgaWYgKGdldGF0dHIoZ2V0YXR0cihtLCAnX19sb2FkZXJfXycsIE5vbmUpLCAnX19tb2R1bGVfXycsIE5vbmUpICE9CisgICAgICAgICAgICAgICAgJ19mcm96ZW5faW1wb3J0bGliJyk6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgZG9uJ3QgbWVzcyB3aXRoIGEgUEVQIDMwMi1zdXBwbGllZCBfX2ZpbGVfXwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG0uX19maWxlX18pCkBAIC0xMzgsNyArMTUyLDcgQEAKICAgICAgICAgcmVzZXQgPSAwCiAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4oc2l0ZWRpciwgbmFtZSkKICAgICB0cnk6Ci0gICAgICAgIGYgPSBvcGVuKGZ1bGxuYW1lLCAiclUiKQorICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInIiKQogICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICByZXR1cm4KICAgICB3aXRoIGY6CkBAIC0xNTQsOSArMTY4LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbm90IGRpcmNhc2UgaW4ga25vd25fcGF0aHMgYW5kIG9zLnBhdGguZXhpc3RzKGRpcik6CiAgICAgICAgICAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChkaXIpCiAgICAgICAgICAgICAgICAgICAgIGtub3duX3BhdGhzLmFkZChkaXJjYXNlKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciBwcm9jZXNzaW5nIGxpbmUgezpkfSBvZiB7fTpcbiIuZm9ybWF0KG4rMSwgZnVsbG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgICAgICAgICAgZm9yIHJlY29yZCBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpOgogICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiByZWNvcmQuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyAgJytsaW5lLCBmaWxlPXN5cy5zdGRlcnIpCkBAIC0xNzgsNiArMTkzLDcgQEAKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CisgICAgICAgIGtub3duX3BhdGhzLmFkZChzaXRlZGlyY2FzZSkKICAgICB0cnk6CiAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihzaXRlZGlyKQogICAgIGV4Y2VwdCBvcy5lcnJvcjoKQEAgLTI0MSw3ICsyNTcsNiBAQAogICAgICAgICByZXR1cm4gVVNFUl9TSVRFCiAKICAgICBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BhdGgKLSAgICBpbXBvcnQgb3MKIAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCkBAIC0yNjYsMTggKzI4MSwyMSBAQAogICAgICAgICBhZGRzaXRlZGlyKHVzZXJfc2l0ZSwga25vd25fcGF0aHMpCiAgICAgcmV0dXJuIGtub3duX3BhdGhzCiAKLWRlZiBnZXRzaXRlcGFja2FnZXMoKToKK2RlZiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXM9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMKICAgICAoYW5kIHBvc3NpYmx5IHNpdGUtcHl0aG9uKS4KIAotICAgIEZvciBlYWNoIGRpcmVjdG9yeSBwcmVzZW50IGluIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgLCB0aGlzIGZ1bmN0aW9uCi0gICAgd2lsbCBmaW5kIGl0cyBgc2l0ZS1wYWNrYWdlc2Agc3ViZGlyZWN0b3J5IGRlcGVuZGluZyBvbiB0aGUgc3lzdGVtCi0gICAgZW52aXJvbm1lbnQsIGFuZCB3aWxsIHJldHVybiBhIGxpc3Qgb2YgZnVsbCBwYXRocy4KKyAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiBgYHByZWZpeGVzYGAgKG9yIHRoZSBnbG9iYWwgYGBQUkVGSVhFU2BgKSwKKyAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlCisgICAgc3lzdGVtIGVudmlyb25tZW50LCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGZ1bGwgcGF0aHMuCiAgICAgIiIiCiAgICAgc2l0ZXBhY2thZ2VzID0gW10KICAgICBzZWVuID0gc2V0KCkKIAotICAgIGZvciBwcmVmaXggaW4gUFJFRklYRVM6CisgICAgaWYgcHJlZml4ZXMgaXMgTm9uZToKKyAgICAgICAgcHJlZml4ZXMgPSBQUkVGSVhFUworCisgICAgZm9yIHByZWZpeCBpbiBwcmVmaXhlczoKICAgICAgICAgaWYgbm90IHByZWZpeCBvciBwcmVmaXggaW4gc2VlbjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHNlZW4uYWRkKHByZWZpeCkKQEAgLTMwMyw5ICszMjEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKLWRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpOgorZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6CiAgICAgIiIiQWRkIHNpdGUtcGFja2FnZXMgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikgdG8gc3lzLnBhdGgiIiIKLSAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMoKToKKyAgICBmb3Igc2l0ZWRpciBpbiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXMpOgogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNpdGVkaXIpOgogICAgICAgICAgICAgYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocykKIApAQCAtMzg1LDcgKzQwMyw3IEBACiAgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc2VsZi5fX2ZpbGVzOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyVSIpCisgICAgICAgICAgICAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInIiKQogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZnAucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTQ3NSw2ICs0OTMsNjEgQEAKICAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKIAogCitDT05GSUdfTElORSA9IHJlLmNvbXBpbGUocideKD9QPGtleT4oXHd8Wy1fXSkrKVxzKj1ccyooP1A8dmFsdWU+LiopXHMqJCcpCisKK2RlZiB2ZW52KGtub3duX3BhdGhzKToKKyAgICBnbG9iYWwgUFJFRklYRVMsIEVOQUJMRV9VU0VSX1NJVEUKKworICAgIGVudiA9IG9zLmVudmlyb24KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CisgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICBlbHNlOgorICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICBleGVjdXRhYmxlX2RpciwgZXhlY3V0YWJsZV9uYW1lID0gb3MucGF0aC5zcGxpdChleGVjdXRhYmxlKQorICAgIHNpdGVfcHJlZml4ID0gb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGVfZGlyKQorICAgIHN5cy5faG9tZSA9IE5vbmUKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgZXhlY3V0YWJsZV9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChleGVjdXRhYmxlX25hbWUpWzBdCisgICAgY29uZl9iYXNlbmFtZSA9ICdweXZlbnYuY2ZnJworICAgIGNhbmRpZGF0ZV9jb25mcyA9IFsKKyAgICAgICAgY29uZmZpbGUgZm9yIGNvbmZmaWxlIGluICgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihleGVjdXRhYmxlX2RpciwgY29uZl9iYXNlbmFtZSksCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2l0ZV9wcmVmaXgsIGNvbmZfYmFzZW5hbWUpCisgICAgICAgICAgICApCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNvbmZmaWxlKQorICAgICAgICBdCisKKyAgICBpZiBjYW5kaWRhdGVfY29uZnM6CisgICAgICAgIHZpcnR1YWxfY29uZiA9IGNhbmRpZGF0ZV9jb25mc1swXQorICAgICAgICBzeXN0ZW1fc2l0ZSA9ICJ0cnVlIgorICAgICAgICB3aXRoIG9wZW4odmlydHVhbF9jb25mKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgbSA9IENPTkZJR19MSU5FLm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICAgICAgZCA9IG0uZ3JvdXBkaWN0KCkKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWx1ZSA9IGRbJ2tleSddLmxvd2VyKCksIGRbJ3ZhbHVlJ10KKyAgICAgICAgICAgICAgICAgICAgaWYga2V5ID09ICdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQorICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQorCisgICAgICAgIHN5cy5wcmVmaXggPSBzeXMuZXhlY19wcmVmaXggPSBzaXRlX3ByZWZpeAorCisgICAgICAgICMgRG9pbmcgdGhpcyBoZXJlIGVuc3VyZXMgdmVudiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdXNlci1zaXRlCisgICAgICAgIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgW3N5cy5wcmVmaXhdKQorCisgICAgICAgICMgYWRkc2l0ZXBhY2thZ2VzIHdpbGwgcHJvY2VzcyBzaXRlX3ByZWZpeCBhZ2FpbiBpZiBpdHMgaW4gUFJFRklYRVMsCisgICAgICAgICMgYnV0IHRoYXQncyBvazsga25vd25fcGF0aHMgd2lsbCBwcmV2ZW50IGFueXRoaW5nIGJlaW5nIGFkZGVkIHR3aWNlCisgICAgICAgIGlmIHN5c3RlbV9zaXRlID09ICJ0cnVlIjoKKyAgICAgICAgICAgIFBSRUZJWEVTLmluc2VydCgwLCBzeXMucHJlZml4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgUFJFRklYRVMgPSBbc3lzLnByZWZpeF0KKyAgICAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBGYWxzZQorCisgICAgcmV0dXJuIGtub3duX3BhdGhzCisKKwogZGVmIGV4ZWNzaXRlY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6CkBAIC01MDgsMTAgKzU4MSwxNiBAQAogCiAKIGRlZiBtYWluKCk6CisgICAgIiIiQWRkIHN0YW5kYXJkIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgICB1bmxlc3MgdGhlIHB5dGhvbiBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZSAtUyBmbGFnLgorICAgICIiIgogICAgIGdsb2JhbCBFTkFCTEVfVVNFUl9TSVRFCiAKICAgICBhYnNfcGF0aHMoKQogICAgIGtub3duX3BhdGhzID0gcmVtb3ZlZHVwcGF0aHMoKQorICAgIGtub3duX3BhdGhzID0gdmVudihrbm93bl9wYXRocykKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFIGlzIE5vbmU6CiAgICAgICAgIEVOQUJMRV9VU0VSX1NJVEUgPSBjaGVja19lbmFibGV1c2Vyc2l0ZSgpCiAgICAga25vd25fcGF0aHMgPSBhZGR1c2Vyc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKQpAQCAtNTI2LDcgKzYwNSwxMCBAQAogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKIAotbWFpbigpCisjIFByZXZlbnQgZWRpdGlvbiBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAorIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgoraWYgbm90IHN5cy5mbGFncy5ub19zaXRlOgorICAgIG1haW4oKQogCiBkZWYgX3NjcmlwdCgpOgogICAgIGhlbHAgPSAiIiJcCmRpZmYgLS1naXQgYS9MaWIvc210cGQucHkgYi9MaWIvc210cGQucHkKaW5kZXggOGNkNDA1Yy4uNzc4ZDZkNiAxMDA3NTUKLS0tIGEvTGliL3NtdHBkLnB5CisrKyBiL0xpYi9zbXRwZC5weQpAQCAtMSw1ICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCi0iIiJBbiBSRkMgMjgyMSBzbXRwIHByb3h5LgorIiIiQW4gUkZDIDUzMjEgc210cCBwcm94eS4KIAogVXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zXSBbbG9jYWxob3N0OmxvY2FscG9ydCBbcmVtb3RlaG9zdDpyZW1vdGVwb3J0XV0KIApAQCAtMjAsNiArMjAsMTEgQEAKICAgICAgICAgVXNlIGBjbGFzc25hbWUnIGFzIHRoZSBjb25jcmV0ZSBTTVRQIHByb3h5IGNsYXNzLiAgVXNlcyBgUHVyZVByb3h5JyBieQogICAgICAgICBkZWZhdWx0LgogCisgICAgLS1zaXplIGxpbWl0CisgICAgLXMgbGltaXQKKyAgICAgICAgUmVzdHJpY3QgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gImxpbWl0IiBudW1iZXIgb2YKKyAgICAgICAgYnl0ZXMgdmlhIHRoZSBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4gIERlZmF1bHRzIHRvIDMzNTU0NDMyIGJ5dGVzLgorCiAgICAgLS1kZWJ1ZwogICAgIC1kCiAgICAgICAgIFR1cm4gb24gZGVidWdnaW5nIHByaW50cy4KQEAgLTM1LDEwICs0MCw5IEBACiBhbmQgaWYgcmVtb3RlcG9ydCBpcyBub3QgZ2l2ZW4sIHRoZW4gMjUgaXMgdXNlZC4KICIiIgogCi0MCiAjIE92ZXJ2aWV3OgogIwotIyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBTTVRQIHByb3RvY29sIGFzIGRlZmluZWQgaW4gUkZDIDgyMS4gIEl0CisjIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBtaW5pbWFsIFNNVFAgcHJvdG9jb2wgYXMgZGVmaW5lZCBpbiBSRkMgNTMyMS4gIEl0CiAjIGhhcyBhIGhpZXJhcmNoeSBvZiBjbGFzc2VzIHdoaWNoIGltcGxlbWVudCB0aGUgYmFja2VuZCBmdW5jdGlvbmFsaXR5IGZvciB0aGUKICMgc210cGQuICBBIG51bWJlciBvZiBjbGFzc2VzIGFyZSBwcm92aWRlZDoKICMKQEAgLTY2LDcgKzcwLDcgQEAKICMKICMgLSBzdXBwb3J0IG1haWxib3ggZGVsaXZlcnkKICMgLSBhbGlhcyBmaWxlcwotIyAtIEVTTVRQCisjIC0gSGFuZGxlIG1vcmUgRVNNVFAgZXh0ZW5zaW9ucwogIyAtIGhhbmRsZSBlcnJvciBjb2RlcyBmcm9tIHRoZSBiYWNrZW5kIHNtdHBkCiAKIGltcG9ydCBzeXMKQEAgLTc3LDEyICs4MSwxNCBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFzeW5jb3JlCiBpbXBvcnQgYXN5bmNoYXQKK2ltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgorZnJvbSBlbWFpbC5faGVhZGVyX3ZhbHVlX3BhcnNlciBpbXBvcnQgZ2V0X2FkZHJfc3BlYywgZ2V0X2FuZ2xlX2FkZHIKIAogX19hbGxfXyA9IFsiU01UUFNlcnZlciIsIkRlYnVnZ2luZ1NlcnZlciIsIlB1cmVQcm94eSIsIk1haWxtYW5Qcm94eSJdCiAKIHByb2dyYW0gPSBzeXMuYXJndlswXQotX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjInCitfX3ZlcnNpb25fXyA9ICdQeXRob24gU01UUCBwcm94eSB2ZXJzaW9uIDAuMycKIAogCiBjbGFzcyBEZXZudWxsOgpAQCAtOTQsOSArMTAwLDkgQEAKIE5FV0xJTkUgPSAnXG4nCiBFTVBUWVNUUklORyA9ICcnCiBDT01NQVNQQUNFID0gJywgJworREFUQV9TSVpFX0RFRkFVTFQgPSAzMzU1NDQzMgogCiAKLQwKIGRlZiB1c2FnZShjb2RlLCBtc2c9JycpOgogICAgIHByaW50KF9fZG9jX18gJSBnbG9iYWxzKCksIGZpbGU9c3lzLnN0ZGVycikKICAgICBpZiBtc2c6CkBAIC0xMDQsMTkgKzExMCwyMyBAQAogICAgIHN5cy5leGl0KGNvZGUpCiAKIAotDAogY2xhc3MgU01UUENoYW5uZWwoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CiAgICAgQ09NTUFORCA9IDAKICAgICBEQVRBID0gMQogCi0gICAgZGF0YV9zaXplX2xpbWl0ID0gMzM1NTQ0MzIKICAgICBjb21tYW5kX3NpemVfbGltaXQgPSA1MTIKKyAgICBjb21tYW5kX3NpemVfbGltaXRzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhIHg9Y29tbWFuZF9zaXplX2xpbWl0OiB4KQorICAgIGNvbW1hbmRfc2l6ZV9saW1pdHMudXBkYXRlKHsKKyAgICAgICAgJ01BSUwnOiBjb21tYW5kX3NpemVfbGltaXQgKyAyNiwKKyAgICAgICAgfSkKKyAgICBtYXhfY29tbWFuZF9zaXplX2xpbWl0ID0gbWF4KGNvbW1hbmRfc2l6ZV9saW1pdHMudmFsdWVzKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCisgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQogICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gJycKQEAgLTEzNywxMjcgKzE0NywxMjggQEAKICAgICAgICAgcHJpbnQoJ1BlZXI6JywgcmVwcihzZWxmLnBlZXIpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBfX3ZlcnNpb25fXykpCiAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKIAogICAgICMgcHJvcGVydGllcyBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3NlcnZlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc210cF9zZXJ2ZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNtdHBfc2VydmVyCiAgICAgQF9fc2VydmVyLnNldHRlcgogICAgIGRlZiBfX3NlcnZlcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19zZXJ2ZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2xpbmUoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2xpbmUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2xpbmVzJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlZF9saW5lcwogICAgIEBfX2xpbmUuc2V0dGVyCiAgICAgZGVmIF9fbGluZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19saW5lIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19zdGF0ZShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fc3RhdGUgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc210cF9zdGF0ZScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc210cF9zdGF0ZQogICAgIEBfX3N0YXRlLnNldHRlcgogICAgIGRlZiBfX3N0YXRlKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19ncmVldGluZyhzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZ3JlZXRpbmcgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuc2Vlbl9ncmVldGluZwogICAgIEBfX2dyZWV0aW5nLnNldHRlcgogICAgIGRlZiBfX2dyZWV0aW5nKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19tYWlsZnJvbShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fbWFpbGZyb20gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ21haWxmcm9tJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5tYWlsZnJvbQogICAgIEBfX21haWxmcm9tLnNldHRlcgogICAgIGRlZiBfX21haWxmcm9tKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX21haWxmcm9tIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdtYWlsZnJvbScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdtYWlsZnJvbScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19yY3B0dG9zKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19yY3B0dG9zIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdyY3B0dG9zJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3JjcHR0b3MnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnJjcHR0b3MKICAgICBAX19yY3B0dG9zLnNldHRlcgogICAgIGRlZiBfX3JjcHR0b3Moc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fcmNwdHRvcyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncmNwdHRvcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdyY3B0dG9zJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnJjcHR0b3MgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fZGF0YShzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fZGF0YSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlZF9kYXRhCiAgICAgQF9fZGF0YS5zZXR0ZXIKICAgICBkZWYgX19kYXRhKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2RhdGEgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2ZxZG4oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2ZxZG4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2ZxZG4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnZnFkbicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuZnFkbgogICAgIEBfX2ZxZG4uc2V0dGVyCiAgICAgZGVmIF9fZnFkbihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19mcWRuIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdmcWRuJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2ZxZG4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuZnFkbiA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19wZWVyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19wZWVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdwZWVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3BlZXInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnBlZXIKICAgICBAX19wZWVyLnNldHRlcgogICAgIGRlZiBfX3BlZXIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fcGVlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncGVlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdwZWVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnBlZXIgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fY29ubihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fY29ubiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAnY29ubicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdjb25uJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5jb25uCiAgICAgQF9fY29ubi5zZXR0ZXIKICAgICBkZWYgX19jb25uKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX2Nvbm4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ2Nvbm4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnY29ubicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5jb25uID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2FkZHIoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2FkZHIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2FkZHInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnYWRkcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuYWRkcgogICAgIEBfX2FkZHIuc2V0dGVyCiAgICAgZGVmIF9fYWRkcihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19hZGRyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuYWRkciA9IHZhbHVlCiAKICAgICAjIE92ZXJyaWRlcyBiYXNlIGNsYXNzIGZvciBjb252ZW5pZW5jZQpAQCAtMjY4LDE0ICsyNzksMTQgQEAKICAgICBkZWYgY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYsIGRhdGEpOgogICAgICAgICBsaW1pdCA9IE5vbmUKICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKLSAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5jb21tYW5kX3NpemVfbGltaXQKKyAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5tYXhfY29tbWFuZF9zaXplX2xpbWl0CiAgICAgICAgIGVsaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuREFUQToKICAgICAgICAgICAgIGxpbWl0ID0gc2VsZi5kYXRhX3NpemVfbGltaXQKICAgICAgICAgaWYgbGltaXQgYW5kIHNlbGYubnVtX2J5dGVzID4gbGltaXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxpZiBsaW1pdDoKICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzICs9IGxlbihkYXRhKQotICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgInV0ZjgiKSkKKyAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICJ1dGYtOCIpKQogCiAgICAgIyBJbXBsZW1lbnRhdGlvbiBvZiBiYXNlIGNsYXNzIGFic3RyYWN0IG1ldGhvZAogICAgIGRlZiBmb3VuZF90ZXJtaW5hdG9yKHNlbGYpOgpAQCAtMjgzLDExICsyOTQsNyBAQAogICAgICAgICBwcmludCgnRGF0YTonLCByZXByKGxpbmUpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKLSAgICAgICAgICAgIGlmIHNlbGYubnVtX2J5dGVzID4gc2VsZi5jb21tYW5kX3NpemVfbGltaXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmcnKQotICAgICAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCisgICAgICAgICAgICBzeiwgc2VsZi5udW1fYnl0ZXMgPSBzZWxmLm51bV9ieXRlcywgMAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGJhZCBzeW50YXgnKQogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMjk5LDkgKzMwNiwxNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb21tYW5kID0gbGluZVs6aV0udXBwZXIoKQogICAgICAgICAgICAgICAgIGFyZyA9IGxpbmVbaSsxOl0uc3RyaXAoKQorICAgICAgICAgICAgbWF4X3N6ID0gKHNlbGYuY29tbWFuZF9zaXplX2xpbWl0c1tjb21tYW5kXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwIGVsc2Ugc2VsZi5jb21tYW5kX3NpemVfbGltaXQpCisgICAgICAgICAgICBpZiBzeiA+IG1heF9zejoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZycpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKHNlbGYsICdzbXRwXycgKyBjb21tYW5kLCBOb25lKQogICAgICAgICAgICAgaWYgbm90IG1ldGhvZDoKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMiBFcnJvcjogY29tbWFuZCAiJXMiIG5vdCBpbXBsZW1lbnRlZCcgJSBjb21tYW5kKQorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBjb21tYW5kICIlcyIgbm90IHJlY29nbml6ZWQnICUgY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1ldGhvZChhcmcpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMxMCwxMiArMzIyLDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc0NTEgSW50ZXJuYWwgY29uZnVzaW9uJykKICAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGlmIHNlbGYubnVtX2J5dGVzID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdCBhbmQgc2VsZi5udW1fYnl0ZXMgPiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhJykKICAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICMgUmVtb3ZlIGV4dHJhbmVvdXMgY2FycmlhZ2UgcmV0dXJucyBhbmQgZGUtdHJhbnNwYXJlbmN5IGFjY29yZGluZwotICAgICAgICAgICAgIyB0byBSRkMgODIxLCBTZWN0aW9uIDQuNS4yLgorICAgICAgICAgICAgIyB0byBSRkMgNTMyMSwgU2VjdGlvbiA0LjUuMi4KICAgICAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICAgICAgZm9yIHRleHQgaW4gbGluZS5zcGxpdCgnXHJcbicpOgogICAgICAgICAgICAgICAgIGlmIHRleHQgYW5kIHRleHRbMF0gPT0gJy4nOgpAQCAtMzMzLDcgKzM0NSw3IEBACiAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN0YXR1cykKIApAQCAtMzQ2LDU4ICszNTgsMTg4IEBACiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZworICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwICVzJyAlIHNlbGYuZnFkbikKIAorICAgIGRlZiBzbXRwX0VITE8oc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogRUhMTyBob3N0bmFtZScpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLSVzJyAlIHNlbGYuZnFkbikKKyAgICAgICAgICAgIGlmIHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBIRUxQJykKKwogICAgIGRlZiBzbXRwX05PT1Aoc2VsZiwgYXJnKToKICAgICAgICAgaWYgYXJnOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBOT09QJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1FVSVQoc2VsZiwgYXJnKToKICAgICAgICAgIyBhcmdzIGlzIGlnbm9yZWQKICAgICAgICAgc2VsZi5wdXNoKCcyMjEgQnllJykKICAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogCi0gICAgIyBmYWN0b3JlZAotICAgIGRlZiBfX2dldGFkZHIoc2VsZiwga2V5d29yZCwgYXJnKToKLSAgICAgICAgYWRkcmVzcyA9IE5vbmUKKyAgICBkZWYgX3N0cmlwX2NvbW1hbmRfa2V5d29yZChzZWxmLCBrZXl3b3JkLCBhcmcpOgogICAgICAgICBrZXlsZW4gPSBsZW4oa2V5d29yZCkKICAgICAgICAgaWYgYXJnWzprZXlsZW5dLnVwcGVyKCkgPT0ga2V5d29yZDoKLSAgICAgICAgICAgIGFkZHJlc3MgPSBhcmdba2V5bGVuOl0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IGFkZHJlc3M6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBhZGRyZXNzWzBdID09ICc8JyBhbmQgYWRkcmVzc1stMV0gPT0gJz4nIGFuZCBhZGRyZXNzICE9ICc8Pic6Ci0gICAgICAgICAgICAgICAgIyBBZGRyZXNzZXMgY2FuIGJlIGluIHRoZSBmb3JtIDxwZXJzb25AZG9tLmNvbT4gYnV0IHdhdGNoIG91dAotICAgICAgICAgICAgICAgICMgZm9yIG51bGwgYWRkcmVzcywgZS5nLiA8PgotICAgICAgICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzWzE6LTFdCi0gICAgICAgIHJldHVybiBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4gYXJnW2tleWxlbjpdLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBkZWYgX2dldGFkZHIoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IGFyZzoKKyAgICAgICAgICAgIHJldHVybiAnJywgJycKKyAgICAgICAgaWYgYXJnLmxzdHJpcCgpLnN0YXJ0c3dpdGgoJzwnKToKKyAgICAgICAgICAgIGFkZHJlc3MsIHJlc3QgPSBnZXRfYW5nbGVfYWRkcihhcmcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRyZXNzLCByZXN0ID0gZ2V0X2FkZHJfc3BlYyhhcmcpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgcmV0dXJuIGFkZHJlc3MsIHJlc3QKKyAgICAgICAgcmV0dXJuIGFkZHJlc3MuYWRkcl9zcGVjLCByZXN0CisKKyAgICBkZWYgX2dldHBhcmFtcyhzZWxmLCBwYXJhbXMpOgorICAgICAgICAjIFJldHVybiBhbnkgcGFyYW1ldGVycyB0aGF0IGFwcGVhciB0byBiZSBzeW50YWN0aWNhbGx5IHZhbGlkIGFjY29yZGluZworICAgICAgICAjIHRvIFJGQyAxODY5LCBpZ25vcmUgYWxsIG90aGVycy4gIChQb3N0ZWwgcnVsZTogYWNjZXB0IHdoYXQgd2UgY2FuLikKKyAgICAgICAgcGFyYW1zID0gW3BhcmFtLnNwbGl0KCc9JywgMSkgZm9yIHBhcmFtIGluIHBhcmFtcy5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICc9JyBpbiBwYXJhbV0KKyAgICAgICAgcmV0dXJuIHtrOiB2IGZvciBrLCB2IGluIHBhcmFtcyBpZiBrLmlzYWxudW0oKX0KKworICAgIGRlZiBzbXRwX0hFTFAoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgYXJnOgorICAgICAgICAgICAgZXh0ZW5kZWQgPSAnIFtTUCA8bWFpbCBwYXJhbWV0ZXJzXScKKyAgICAgICAgICAgIGxjX2FyZyA9IGFyZy51cHBlcigpCisgICAgICAgICAgICBpZiBsY19hcmcgPT0gJ0VITE8nOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogRUhMTyBob3N0bmFtZScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnSEVMTyc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBIRUxPIGhvc3RuYW1lJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdNQUlMJzoKKyAgICAgICAgICAgICAgICBtc2cgPSAnMjUwIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCisgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2gobXNnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1JDUFQnOgorICAgICAgICAgICAgICAgIG1zZyA9ICcyNTAgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nCisgICAgICAgICAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gZXh0ZW5kZWQKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2gobXNnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ0RBVEEnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogREFUQScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnUlNFVCc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBSU0VUJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdOT09QJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IE5PT1AnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1FVSVQnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUVVJVCcpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnVlJGWSc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBWUkZZIDxhZGRyZXNzPicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdEQVRBIFJTRVQgTk9PUCBRVUlUIFZSRlknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3VwcG9ydGVkIGNvbW1hbmRzOiBFSExPIEhFTE8gTUFJTCBSQ1BUIERBVEEgJworICAgICAgICAgICAgICAgICAgICAgICdSU0VUIE5PT1AgUVVJVCBWUkZZJykKKworICAgIGRlZiBzbXRwX1ZSRlkoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgYXJnOgorICAgICAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCisgICAgICAgICAgICBpZiBhZGRyZXNzOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUyIENhbm5vdCBWUkZZIHVzZXIsIGJ1dCB3aWxsIGFjY2VwdCBtZXNzYWdlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDIgQ291bGQgbm90IFZSRlkgJXMnICUgYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBWUkZZIDxhZGRyZXNzPicpCiAKICAgICBkZWYgc210cF9NQUlMKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJz09PT4gTUFJTCcsIGFyZywgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgYWRkcmVzcyA9IHNlbGYuX19nZXRhZGRyKCdGUk9NOicsIGFyZykgaWYgYXJnIGVsc2UgTm9uZQorICAgICAgICBzeW50YXhlcnIgPSAnNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz4nCisgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgIHN5bnRheGVyciArPSAnIFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl0nCisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmcgPSBzZWxmLl9zdHJpcF9jb21tYW5kX2tleXdvcmQoJ0ZST006JywgYXJnKQorICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKICAgICAgICAgaWYgbm90IGFkZHJlc3M6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IE1BSUwgRlJPTTo8YWRkcmVzcz4nKQorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5leHRlbmRlZF9zbXRwIGFuZCBwYXJhbXM6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLm1haWxmcm9tOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhwYXJhbXMudXBwZXIoKSkKKyAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNpemUgPSBwYXJhbXMucG9wKCdTSVpFJywgTm9uZSkKKyAgICAgICAgaWYgc2l6ZToKKyAgICAgICAgICAgIGlmIG5vdCBzaXplLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdCBhbmQgaW50KHNpemUpID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IGFkZHJlc3MKICAgICAgICAgcHJpbnQoJ3NlbmRlcjonLCBzZWxmLm1haWxmcm9tLCBmaWxlPURFQlVHU1RSRUFNKQotICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX1JDUFQoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBwcmludCgnPT09PiBSQ1BUJywgYXJnLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBpZiBub3Qgc2VsZi5tYWlsZnJvbToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZWVkIE1BSUwgY29tbWFuZCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgYWRkcmVzcyA9IHNlbGYuX19nZXRhZGRyKCdUTzonLCBhcmcpIGlmIGFyZyBlbHNlIE5vbmUKKyAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicKKyAgICAgICAgaWYgc2VsZi5leHRlbmRlZF9zbXRwOgorICAgICAgICAgICAgc3ludGF4ZXJyICs9ICcgW1NQIDxtYWlsLXBhcmFtZXRlcnM+XScKKyAgICAgICAgaWYgYXJnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGFyZyA9IHNlbGYuX3N0cmlwX2NvbW1hbmRfa2V5d29yZCgnVE86JywgYXJnKQorICAgICAgICBhZGRyZXNzLCBwYXJhbXMgPSBzZWxmLl9nZXRhZGRyKGFyZykKKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHBhcmFtczoKKyAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCisgICAgICAgICAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgcGFyYW1zIGFuZCBsZW4ocGFyYW1zLmtleXMoKSkgPiAwOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZCcpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IGFkZHJlc3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPicpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5yY3B0dG9zLmFwcGVuZChhZGRyZXNzKQogICAgICAgICBwcmludCgncmVjaXBzOicsIHNlbGYucmNwdHRvcywgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9SU0VUKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKQEAgLTQwOCw5ICs1NTAsMTIgQEAKICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KICAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECi0gICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfREFUQShzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBzZWxmLnJjcHR0b3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVlZCBSQ1BUIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCkBAIC00MjEsMTUgKzU2NiwyMCBAQAogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbi5cclxuJykKICAgICAgICAgc2VsZi5wdXNoKCczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPicpCiAKKyAgICAjIENvbW1hbmRzIHRoYXQgaGF2ZSBub3QgYmVlbiBpbXBsZW1lbnRlZAorICAgIGRlZiBzbXRwX0VYUE4oc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCc1MDIgRVhQTiBub3QgaW1wbGVtZW50ZWQnKQogCi0MCisKIGNsYXNzIFNNVFBTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAgICAgIyBTTVRQQ2hhbm5lbCBjbGFzcyB0byB1c2UgZm9yIG1hbmFnaW5nIGNsaWVudCBjb25uZWN0aW9ucwogICAgIGNoYW5uZWxfY2xhc3MgPSBTTVRQQ2hhbm5lbAogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKKyAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxUKToKICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gbG9jYWxhZGRyCiAgICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCisgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCkBAIC00NDcsNyArNTk3LDcgQEAKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CiAgICAgICAgIHByaW50KCdJbmNvbWluZyBjb25uZWN0aW9uIGZyb20gJXMnICUgcmVwcihhZGRyKSwgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyKQorICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuZGF0YV9zaXplX2xpbWl0KQogCiAgICAgIyBBUEkgZm9yICJkb2luZyBzb21ldGhpbmcgdXNlZnVsIHdpdGggdGhlIG1lc3NhZ2UiCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CkBAIC00NzUsNyArNjI1LDYgQEAKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAKLQwKIGNsYXNzIERlYnVnZ2luZ1NlcnZlcihTTVRQU2VydmVyKToKICAgICAjIERvIHNvbWV0aGluZyB3aXRoIHRoZSBnYXRoZXJlZCBtZXNzYWdlCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CkBAIC00OTEsNyArNjQwLDYgQEAKICAgICAgICAgcHJpbnQoJy0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0nKQogCiAKLQwKIGNsYXNzIFB1cmVQcm94eShTTVRQU2VydmVyKToKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KCdcbicpCkBAIC01MzIsNyArNjgwLDYgQEAKICAgICAgICAgcmV0dXJuIHJlZnVzZWQKIAogCi0MCiBjbGFzcyBNYWlsbWFuUHJveHkoUHVyZVByb3h5KToKICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KQEAgLTYxMSwxOSArNzU4LDE4IEBACiAgICAgICAgICAgICAgICAgbXNnLkVucXVldWUobWxpc3QsIHRvcmVxdWVzdD0xKQogCiAKLQwKIGNsYXNzIE9wdGlvbnM6CiAgICAgc2V0dWlkID0gMQogICAgIGNsYXNzbmFtZSA9ICdQdXJlUHJveHknCisgICAgc2l6ZV9saW1pdCA9IE5vbmUKIAogCi0MCiBkZWYgcGFyc2VhcmdzKCk6CiAgICAgZ2xvYmFsIERFQlVHU1RSRUFNCiAgICAgdHJ5OgogICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdCgKLSAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6ZCcsCi0gICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnZGVidWcnXSkKKyAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6czpkJywKKyAgICAgICAgICAgIFsnY2xhc3M9JywgJ25vc2V0dWlkJywgJ3ZlcnNpb24nLCAnaGVscCcsICdzaXplPScsICdkZWJ1ZyddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgZToKICAgICAgICAgdXNhZ2UoMSwgZSkKIApAQCAtNjQwLDYgKzc4NiwxMyBAQAogICAgICAgICAgICAgb3B0aW9ucy5jbGFzc25hbWUgPSBhcmcKICAgICAgICAgZWxpZiBvcHQgaW4gKCctZCcsICctLWRlYnVnJyk6CiAgICAgICAgICAgICBERUJVR1NUUkVBTSA9IHN5cy5zdGRlcnIKKyAgICAgICAgZWxpZiBvcHQgaW4gKCctcycsICctLXNpemUnKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbnRfc2l6ZSA9IGludChhcmcpCisgICAgICAgICAgICAgICAgb3B0aW9ucy5zaXplX2xpbWl0ID0gaW50X3NpemUKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwcmludCgnSW52YWxpZCBzaXplOiAnICsgYXJnLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgICMgcGFyc2UgdGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50cwogICAgIGlmIGxlbihhcmdzKSA8IDE6CkBAIC02NzQsNyArODI3LDYgQEAKICAgICByZXR1cm4gb3B0aW9ucwogCiAKLQwKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgb3B0aW9ucyA9IHBhcnNlYXJncygpCiAgICAgIyBCZWNvbWUgbm9ib2R5CkBAIC02ODcsNyArODM5LDggQEAKICAgICAgICAgaW1wb3J0IF9fbWFpbl9fIGFzIG1vZAogICAgIGNsYXNzXyA9IGdldGF0dHIobW9kLCBjbGFzc25hbWUpCiAgICAgcHJveHkgPSBjbGFzc18oKG9wdGlvbnMubG9jYWxob3N0LCBvcHRpb25zLmxvY2FscG9ydCksCi0gICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSkKKyAgICAgICAgICAgICAgICAgICAob3B0aW9ucy5yZW1vdGVob3N0LCBvcHRpb25zLnJlbW90ZXBvcnQpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCkKICAgICBpZiBvcHRpb25zLnNldHVpZDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHB3ZApkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCBmYmVmOTZlLi5kMzdiMGUyIDEwMDY0NAotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtMTMzLDI0ICsxMzMsMTggQEAKICAgICBjb21iaW5hdGlvbiBwcm92aWRlZC4KICAgICAiIiIKIAotZGVmIHF1b3RlYWRkcihhZGRyKToKK2RlZiBxdW90ZWFkZHIoYWRkcnN0cmluZyk6CiAgICAgIiIiUXVvdGUgYSBzdWJzZXQgb2YgdGhlIGVtYWlsIGFkZHJlc3NlcyBkZWZpbmVkIGJ5IFJGQyA4MjEuCiAKICAgICBTaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYW55dGhpbmcgZW1haWwudXRpbHMucGFyc2VhZGRyIGNhbiBoYW5kbGUuCiAgICAgIiIiCi0gICAgbSA9IChOb25lLCBOb25lKQotICAgIHRyeToKLSAgICAgICAgbSA9IGVtYWlsLnV0aWxzLnBhcnNlYWRkcihhZGRyKVsxXQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGlmIG0gPT0gKE5vbmUsIE5vbmUpOiAgIyBJbmRpY2F0ZXMgcGFyc2UgZmFpbHVyZSBvciBBdHRyaWJ1dGVFcnJvcgotICAgICAgICAjIHNvbWV0aGluZyB3ZWlyZCBoZXJlLi4gcHVudCAtZGRtCi0gICAgICAgIHJldHVybiAiPCVzPiIgJSBhZGRyCi0gICAgZWxpZiBtIGlzIE5vbmU6Ci0gICAgICAgICMgdGhlIHNlbmRlciB3YW50cyBhbiBlbXB0eSByZXR1cm4gYWRkcmVzcwotICAgICAgICByZXR1cm4gIjw+IgotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiPCVzPiIgJSBtCisgICAgZGlzcGxheW5hbWUsIGFkZHIgPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcnN0cmluZykKKyAgICBpZiAoZGlzcGxheW5hbWUsIGFkZHIpID09ICgnJywgJycpOgorICAgICAgICAjIHBhcnNlYWRkciBjb3VsZG4ndCBwYXJzZSBpdCwgdXNlIGl0IGFzIGlzIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KKyAgICAgICAgaWYgYWRkcnN0cmluZy5zdHJpcCgpLnN0YXJ0c3dpdGgoJzwnKToKKyAgICAgICAgICAgIHJldHVybiBhZGRyc3RyaW5nCisgICAgICAgIHJldHVybiAiPCVzPiIgJSBhZGRyc3RyaW5nCisgICAgcmV0dXJuICI8JXM+IiAlIGFkZHIKIAogZGVmIF9hZGRyX29ubHkoYWRkcnN0cmluZyk6CiAgICAgZGlzcGxheW5hbWUsIGFkZHIgPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcnN0cmluZykKQEAgLTE4MCwyNyArMTc0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfaGF2ZV9zc2wgPSBGYWxzZQogZWxzZToKLSAgICBjbGFzcyBTU0xGYWtlRmlsZToKLSAgICAgICAgIiIiQSBmYWtlIGZpbGUgbGlrZSBvYmplY3QgdGhhdCByZWFsbHkgd3JhcHMgYSBTU0xPYmplY3QuCi0KLSAgICAgICAgSXQgb25seSBzdXBwb3J0cyB3aGF0IGlzIG5lZWRlZCBpbiBzbXRwbGliLgotICAgICAgICAiIiIKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNzbG9iaik6Ci0gICAgICAgICAgICBzZWxmLnNzbG9iaiA9IHNzbG9iagotCi0gICAgICAgIGRlZiByZWFkbGluZShzZWxmKToKLSAgICAgICAgICAgIHN0ciA9IGIiIgotICAgICAgICAgICAgY2hyID0gTm9uZQotICAgICAgICAgICAgd2hpbGUgY2hyICE9IGIiXG4iOgotICAgICAgICAgICAgICAgIGNociA9IHNlbGYuc3Nsb2JqLnJlYWQoMSkKLSAgICAgICAgICAgICAgICBpZiBub3QgY2hyOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHN0ciArPSBjaHIKLSAgICAgICAgICAgIHJldHVybiBzdHIKLQotICAgICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICAgICBwYXNzCi0KICAgICBfaGF2ZV9zc2wgPSBUcnVlCiAKIApAQCAtMjQyLDcgKzIxNSw4IEBACiAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9QT1JUCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAorICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4KIAogICAgICAgICBJZiBzcGVjaWZpZWQsIGBob3N0JyBpcyB0aGUgbmFtZSBvZiB0aGUgcmVtb3RlIGhvc3QgdG8gd2hpY2ggdG8KQEAgLTI1MCwxMSArMjI0LDE2IEBACiAgICAgICAgIEJ5IGRlZmF1bHQsIHNtdHBsaWIuU01UUF9QT1JUIGlzIHVzZWQuICBBbiBTTVRQQ29ubmVjdEVycm9yIGlzIHJhaXNlZAogICAgICAgICBpZiB0aGUgc3BlY2lmaWVkIGBob3N0JyBkb2Vzbid0IHJlc3BvbmQgY29ycmVjdGx5LiAgSWYgc3BlY2lmaWVkLAogICAgICAgICBgbG9jYWxfaG9zdG5hbWVgIGlzIHVzZWQgYXMgdGhlIEZRRE4gb2YgdGhlIGxvY2FsIGhvc3QuICBCeSBkZWZhdWx0LAotICAgICAgICB0aGUgbG9jYWwgaG9zdG5hbWUgaXMgZm91bmQgdXNpbmcgc29ja2V0LmdldGZxZG4oKS4KKyAgICAgICAgdGhlIGxvY2FsIGhvc3RuYW1lIGlzIGZvdW5kIHVzaW5nIHNvY2tldC5nZXRmcWRuKCkuIFRoZQorICAgICAgICBgc291cmNlX2FkZHJlc3NgIHBhcmFtZXRlciB0YWtlcyBhIDItdHVwbGUgKGhvc3QsIHBvcnQpIGZvciB0aGUgc29ja2V0CisgICAgICAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZiB0aGUgaG9zdCBpcyAnJworICAgICAgICBhbmQgcG9ydCBpcyAwLCB0aGUgT1MgZGVmYXVsdCBiZWhhdmlvciB3aWxsIGJlIHVzZWQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lc210cF9mZWF0dXJlcyA9IHt9CisgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworCiAgICAgICAgIGlmIGhvc3Q6CiAgICAgICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuY29ubmVjdChob3N0LCBwb3J0KQogICAgICAgICAgICAgaWYgY29kZSAhPSAyMjA6CkBAIC0yNzcsNiArMjU2LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2hvc3RuYW1lID0gJ1slc10nICUgYWRkcgogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGUsIG1lc3NhZ2UgPSBzZWxmLmRvY21kKCJRVUlUIikKKyAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIxOgorICAgICAgICAgICAgICAgIHJhaXNlIFNNVFBSZXNwb25zZUV4Y2VwdGlvbihjb2RlLCBtZXNzYWdlKQorICAgICAgICBleGNlcHQgU01UUFNlcnZlckRpc2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorCiAgICAgZGVmIHNldF9kZWJ1Z2xldmVsKHNlbGYsIGRlYnVnbGV2ZWwpOgogICAgICAgICAiIiJTZXQgdGhlIGRlYnVnIG91dHB1dCBsZXZlbC4KIApAQCAtMjkwLDEwICsyODIsMTIgQEAKICAgICAgICAgIyBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgZm9yIFNNVFBfU1NMIHRvIHVzZSB0aGUgU01UUCBjb25uZWN0IGNvZGUKICAgICAgICAgIyBhbmQganVzdCBhbHRlciB0aGUgc29ja2V0IGNvbm5lY3Rpb24gYml0LgogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKLSAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQpCisgICAgICAgICAgICBwcmludCgnY29ubmVjdDogdG8nLCAoaG9zdCwgcG9ydCksIHNlbGYuc291cmNlX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKKyAgICAgICAgcmV0dXJuIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiQ29ubmVjdCB0byBhIGhvc3Qgb24gYSBnaXZlbiBwb3J0LgogCiAgICAgICAgIElmIHRoZSBob3N0bmFtZSBlbmRzIHdpdGggYSBjb2xvbiAoYDonKSBmb2xsb3dlZCBieSBhIG51bWJlciwgYW5kCkBAIC0zMDQsNiArMjk4LDEwIEBACiAgICAgICAgIHNwZWNpZmllZCBkdXJpbmcgaW5zdGFudGlhdGlvbi4KIAogICAgICAgICAiIiIKKworICAgICAgICBpZiBzb3VyY2VfYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworCiAgICAgICAgIGlmIG5vdCBwb3J0IGFuZCAoaG9zdC5maW5kKCc6JykgPT0gaG9zdC5yZmluZCgnOicpKToKICAgICAgICAgICAgIGkgPSBob3N0LnJmaW5kKCc6JykKICAgICAgICAgICAgIGlmIGkgPj0gMDoKQEAgLTMxNyw2ICszMTUsNyBAQAogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fZ2V0X3NvY2tldChob3N0LCBwb3J0LCBzZWxmLnRpbWVvdXQpCisgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgIHByaW50KCJjb25uZWN0OiIsIG1zZywgZmlsZT1zdGRlcnIpCkBAIC0zODgsNyArMzg3LDggQEAKIAogICAgICAgICBlcnJtc2cgPSBiIlxuIi5qb2luKHJlc3ApCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBwcmludCgncmVwbHk6IHJldGNvZGUgKCVzKTsgTXNnOiAlcycgJSAoZXJyY29kZSwgZXJybXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN0ZGVycikKICAgICAgICAgcmV0dXJuIGVycmNvZGUsIGVycm1zZwogCiAgICAgZGVmIGRvY21kKHNlbGYsIGNtZCwgYXJncz0iIik6CkBAIC02MzIsNyArNjMyLDcgQEAKICAgICAgICAgIyBXZSBjb3VsZCBub3QgbG9naW4gc3VjZXNzZnVsbHkuIFJldHVybiByZXN1bHQgb2YgbGFzdCBhdHRlbXB0LgogICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQogCi0gICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSk6CisgICAgZGVmIHN0YXJ0dGxzKHNlbGYsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKToKICAgICAgICAgIiIiUHV0cyB0aGUgY29ubmVjdGlvbiB0byB0aGUgU01UUCBzZXJ2ZXIgaW50byBUTFMgbW9kZS4KIAogICAgICAgICBJZiB0aGVyZSBoYXMgYmVlbiBubyBwcmV2aW91cyBFSExPIG9yIEhFTE8gY29tbWFuZCB0aGlzIHNlc3Npb24sIHRoaXMKQEAgLTY1Niw4ICs2NTYsMTcgQEAKICAgICAgICAgaWYgcmVzcCA9PSAyMjA6CiAgICAgICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTm8gU1NMIHN1cHBvcnQgaW5jbHVkZWQgaW4gdGhpcyBQeXRob24iKQotICAgICAgICAgICAgc2VsZi5zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29jaywga2V5ZmlsZSwgY2VydGZpbGUpCi0gICAgICAgICAgICBzZWxmLmZpbGUgPSBTU0xGYWtlRmlsZShzZWxmLnNvY2spCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrLCBrZXlmaWxlLCBjZXJ0ZmlsZSkKKyAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgICMgUkZDIDMyMDc6CiAgICAgICAgICAgICAjIFRoZSBjbGllbnQgTVVTVCBkaXNjYXJkIGFueSBrbm93bGVkZ2Ugb2J0YWluZWQgZnJvbQogICAgICAgICAgICAgIyB0aGUgc2VydmVyLCBzdWNoIGFzIHRoZSBsaXN0IG9mIFNNVFAgc2VydmljZSBleHRlbnNpb25zLApAQCAtNzg2LDcgKzc5NSw4IEBACiAgICAgICAgICMgVE9ETyBpbXBsZW1lbnQgaGV1cmlzdGljcyB0byBndWVzcyB0aGUgY29ycmVjdCBSZXNlbnQtKiBibG9jayB3aXRoIGFuCiAgICAgICAgICMgb3B0aW9uIGFsbG93aW5nIHRoZSB1c2VyIHRvIGVuYWJsZSB0aGUgaGV1cmlzdGljcy4gIChJdCBzaG91bGQgYmUKICAgICAgICAgIyBwb3NzaWJsZSB0byBndWVzcyBjb3JyZWN0bHkgYWxtb3N0IGFsbCBvZiB0aGUgdGltZS4pCi0gICAgICAgIHJlc2VudCA9bXNnLmdldF9hbGwoJ1Jlc2VudC1EYXRlJykKKworICAgICAgICByZXNlbnQgPSBtc2cuZ2V0X2FsbCgnUmVzZW50LURhdGUnKQogICAgICAgICBpZiByZXNlbnQgaXMgTm9uZToKICAgICAgICAgICAgIGhlYWRlcl9wcmVmaXggPSAnJwogICAgICAgICBlbGlmIGxlbihyZXNlbnQpID09IDE6CkBAIC03OTUsMTMgKzgwNSwxMyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWVzc2FnZSBoYXMgbW9yZSB0aGFuIG9uZSAnUmVzZW50LScgaGVhZGVyIGJsb2NrIikKICAgICAgICAgaWYgZnJvbV9hZGRyIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFByZWZlciB0aGUgc2VuZGVyIGZpZWxkIHBlciBSRkMgMjgyMjozLjYuMi4KLSAgICAgICAgICAgIGZyb21fYWRkciA9IChtc2dbaGVhZGVyX3ByZWZpeCsnU2VuZGVyJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfcHJlZml4KydTZW5kZXInKSBpbiBtc2cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbXNnW2hlYWRlcl9wcmVmaXgrJ0Zyb20nXSkKKyAgICAgICAgICAgIGZyb21fYWRkciA9IChtc2dbaGVhZGVyX3ByZWZpeCArICdTZW5kZXInXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9wcmVmaXggKyAnU2VuZGVyJykgaW4gbXNnCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0Zyb20nXSkKICAgICAgICAgaWYgdG9fYWRkcnMgaXMgTm9uZToKLSAgICAgICAgICAgIGFkZHJfZmllbGRzID0gW2YgZm9yIGYgaW4gKG1zZ1toZWFkZXJfcHJlZml4KydUbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXgrJ0JjYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXgrJ0NjJ10pIGlmIGYgaXMgbm90IE5vbmVdCisgICAgICAgICAgICBhZGRyX2ZpZWxkcyA9IFtmIGZvciBmIGluIChtc2dbaGVhZGVyX3ByZWZpeCArICdUbyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQmNjJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dbaGVhZGVyX3ByZWZpeCArICdDYyddKSBpZiBmIGlzIG5vdCBOb25lXQogICAgICAgICAgICAgdG9fYWRkcnMgPSBbYVsxXSBmb3IgYSBpbiBlbWFpbC51dGlscy5nZXRhZGRyZXNzZXMoYWRkcl9maWVsZHMpXQogICAgICAgICAjIE1ha2UgYSBsb2NhbCBjb3B5IHNvIHdlIGNhbiBkZWxldGUgdGhlIGJjYyBoZWFkZXJzLgogICAgICAgICBtc2dfY29weSA9IGNvcHkuY29weShtc2cpCkBAIC04MzUsMjYgKzg0NSw0MSBAQAogICAgICAgICAiIiIgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSBTTVRQIHRoYXQgY29ubmVjdHMgb3ZlciBhbiBTU0wgZW5jcnlwdGVkCiAgICAgICAgIHNvY2tldCAodG8gdXNlIHRoaXMgY2xhc3MgeW91IG5lZWQgYSBzb2NrZXQgbW9kdWxlIHRoYXQgd2FzIGNvbXBpbGVkIHdpdGggU1NMCiAgICAgICAgIHN1cHBvcnQpLiBJZiBob3N0IGlzIG5vdCBzcGVjaWZpZWQsICcnICh0aGUgbG9jYWwgaG9zdCkgaXMgdXNlZC4gSWYgcG9ydCBpcwotICAgICAgICBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuIGtleWZpbGUgYW5kIGNlcnRmaWxlCisgICAgICAgIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBTTVRQLW92ZXItU1NMIHBvcnQgKDQ2NSkgaXMgdXNlZC4gVGhlIG9wdGlvbmFsCisgICAgICAgIHNvdXJjZV9hZGRyZXNzIHRha2VzIGEgdHdvLXR1cGxlIChob3N0LHBvcnQpIGZvciBzb2NrZXQgdG8gYmluZCB0by4ga2V5ZmlsZSBhbmQgY2VydGZpbGUKICAgICAgICAgYXJlIGFsc28gb3B0aW9uYWwgLSB0aGV5IGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleSBhbmQKLSAgICAgICAgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLgorICAgICAgICBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uIGNvbnRleHQgYWxzbyBvcHRpb25hbCwgY2FuIGNvbnRhaW4KKyAgICAgICAgYSBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzIHNwZWNpZmllZCBib3RoCisgICAgICAgIGtleWZpbGUgYW5kIGNlcnRmaWxlIG11c3QgYmUgTm9uZS4KICAgICAgICAgIiIiCiAKICAgICAgICAgZGVmYXVsdF9wb3J0ID0gU01UUF9TU0xfUE9SVAogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PTAsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBrZXlmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKLSAgICAgICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWUsIHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CisgICAgICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcykKIAogICAgICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCi0gICAgICAgICAgICBuZXdfc29ja2V0ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCkKLSAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQobmV3X3NvY2tldCwgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQotICAgICAgICAgICAgc2VsZi5maWxlID0gU1NMRmFrZUZpbGUobmV3X3NvY2tldCkKKyAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzKQorICAgICAgICAgICAgaWYgc2VsZi5jb250ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzZWxmLmNvbnRleHQud3JhcF9zb2NrZXQobmV3X3NvY2tldCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNzbC53cmFwX3NvY2tldChuZXdfc29ja2V0LCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAgICAgICAgICAgICByZXR1cm4gbmV3X3NvY2tldAogCiAgICAgX19hbGxfXy5hcHBlbmQoIlNNVFBfU1NMIikKQEAgLTg3OSwxOCArOTA0LDIxIEBACiAKICAgICBlaGxvX21zZyA9ICJsaGxvIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsCisgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIG5ldyBpbnN0YW5jZS4iIiIKLSAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZSkKKyAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZT1sb2NhbF9ob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1zb3VyY2VfYWRkcmVzcykKIAotICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nbG9jYWxob3N0JywgcG9ydD0wLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgIiIiQ29ubmVjdCB0byB0aGUgTE1UUCBkYWVtb24sIG9uIGVpdGhlciBhIFVuaXggb3IgYSBUQ1Agc29ja2V0LiIiIgogICAgICAgICBpZiBob3N0WzBdICE9ICcvJzoKLSAgICAgICAgICAgIHJldHVybiBTTVRQLmNvbm5lY3Qoc2VsZiwgaG9zdCwgcG9ydCkKKyAgICAgICAgICAgIHJldHVybiBTTVRQLmNvbm5lY3Qoc2VsZiwgaG9zdCwgcG9ydCwgc291cmNlX2FkZHJlc3M9c291cmNlX2FkZHJlc3MpCiAKICAgICAgICAgIyBIYW5kbGUgVW5peC1kb21haW4gc29ja2V0cy4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5maWxlID0gTm9uZQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3QoaG9zdCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgpkaWZmIC0tZ2l0IGEvTGliL3NvY2tldC5weSBiL0xpYi9zb2NrZXQucHkKaW5kZXggZWE1NmE2Ny4uZDRmMWI2NSAxMDA2NDQKLS0tIGEvTGliL3NvY2tldC5weQorKysgYi9MaWIvc29ja2V0LnB5CkBAIC0xMiw2ICsxMiw3IEBACiBzb2NrZXQoKSAtLSBjcmVhdGUgYSBuZXcgc29ja2V0IG9iamVjdAogc29ja2V0cGFpcigpIC0tIGNyZWF0ZSBhIHBhaXIgb2YgbmV3IHNvY2tldCBvYmplY3RzIFsqXQogZnJvbWZkKCkgLS0gY3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIFsqXQorZnJvbXNoYXJlKCkgLS0gY3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGRhdGEgcmVjZWl2ZWQgZnJvbSBzb2NrZXQuc2hhcmUoKSBbKl0KIGdldGhvc3RuYW1lKCkgLS0gcmV0dXJuIHRoZSBjdXJyZW50IGhvc3RuYW1lCiBnZXRob3N0YnluYW1lKCkgLS0gbWFwIGEgaG9zdG5hbWUgdG8gaXRzIElQIG51bWJlcgogZ2V0aG9zdGJ5YWRkcigpIC0tIG1hcCBhbiBJUCBudW1iZXIgb3IgaG9zdG5hbWUgdG8gRE5TIGluZm8KQEAgLTUzLDcgKzU0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBlcnJubyA9IE5vbmUKIEVCQURGID0gZ2V0YXR0cihlcnJubywgJ0VCQURGJywgOSkKLUVJTlRSID0gZ2V0YXR0cihlcnJubywgJ0VJTlRSJywgNCkKIEVBR0FJTiA9IGdldGF0dHIoZXJybm8sICdFQUdBSU4nLCAxMSkKIEVXT1VMREJMT0NLID0gZ2V0YXR0cihlcnJubywgJ0VXT1VMREJMT0NLJywgMTEpCiAKQEAgLTExMiw2ICsxMTIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzWzc6XSkKICAgICAgICAgcmV0dXJuIHMKIAorICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHNlcmlhbGl6ZSBzb2NrZXQgb2JqZWN0IikKKwogICAgIGRlZiBkdXAoc2VsZik6CiAgICAgICAgICIiImR1cCgpIC0+IHNvY2tldCBvYmplY3QKIApAQCAtMjA3LDcgKzIxMCw2IEBACiAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZGV0YWNoKCkKIAotCiBkZWYgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGUsIHByb3RvPTApOgogICAgICIiIiBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZVssIHByb3RvXSkgLT4gc29ja2V0IG9iamVjdAogCkBAIC0yMTcsNiArMjE5LDE0IEBACiAgICAgbmZkID0gZHVwKGZkKQogICAgIHJldHVybiBzb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgbmZkKQogCitpZiBoYXNhdHRyKF9zb2NrZXQuc29ja2V0LCAic2hhcmUiKToKKyAgICBkZWYgZnJvbXNoYXJlKGluZm8pOgorICAgICAgICAiIiIgZnJvbXNoYXJlKGluZm8pIC0+IHNvY2tldCBvYmplY3QKKworICAgICAgICBDcmVhdGUgYSBzb2NrZXQgb2JqZWN0IGZyb20gYSB0aGUgYnl0ZXMgb2JqZWN0IHJldHVybmVkIGJ5CisgICAgICAgIHNvY2tldC5zaGFyZShwaWQpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNvY2tldCgwLCAwLCAwLCBpbmZvKQogCiBpZiBoYXNhdHRyKF9zb2NrZXQsICJzb2NrZXRwYWlyIik6CiAKQEAgLTI4OCwxMSArMjk4LDEwIEBACiAgICAgICAgICAgICBleGNlcHQgdGltZW91dDoKICAgICAgICAgICAgICAgICBzZWxmLl90aW1lb3V0X29jY3VycmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgbiA9IGUuYXJnc1swXQotICAgICAgICAgICAgICAgIGlmIG4gPT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbiBpbiBfYmxvY2tpbmdfZXJybm9zOgorICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSBpbiBfYmxvY2tpbmdfZXJybm9zOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHJhaXNlCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IGFkZjlmMzguLjI2MWUyOGUgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtMTUzLDggKzE1Myw4IEBACiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgc2VsZWN0LmVycm9yKSBhcyBlOgotICAgICAgICAgICAgaWYgZS5hcmdzWzBdICE9IGVycm5vLkVJTlRSOgorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICByYWlzZQogCiBjbGFzcyBCYXNlU2VydmVyOgpAQCAtMTgwLDYgKzE4MCw3IEBACiAgICAgLSBwcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgLSBzaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgLSBjbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgLSBzZXJ2aWNlX2FjdGlvbnMoKQogICAgIC0gaGFuZGxlX2Vycm9yKCkKIAogICAgIE1ldGhvZHMgZm9yIGRlcml2ZWQgY2xhc3NlczoKQEAgLTIzNiw2ICsyMzcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9sbF9pbnRlcnZhbCkKICAgICAgICAgICAgICAgICBpZiBzZWxmIGluIHI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQorCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2aWNlX2FjdGlvbnMoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi5zZXQoKQpAQCAtMjUwLDYgKzI1MywxNCBAQAogICAgICAgICBzZWxmLl9fc2h1dGRvd25fcmVxdWVzdCA9IFRydWUKICAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi53YWl0KCkKIAorICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CisgICAgICAgICIiIkNhbGxlZCBieSB0aGUgc2VydmVfZm9yZXZlcigpIGxvb3AuCisKKyAgICAgICAgTWF5IGJlIG92ZXJyaWRkZW4gYnkgYSBzdWJjbGFzcyAvIE1peGluIHRvIGltcGxlbWVudCBhbnkgY29kZSB0aGF0CisgICAgICAgIG5lZWRzIHRvIGJlIHJ1biBkdXJpbmcgdGhlIGxvb3AuCisgICAgICAgICIiIgorICAgICAgICBwYXNzCisKICAgICAjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGhhbmRsaW5nLCBnZXR0aW5nLCBwcm9jZXNzaW5nIGFuZAogICAgICMgZmluaXNoaW5nIGEgcmVxdWVzdCBpcyBmYWlybHkgYXJiaXRyYXJ5LiAgUmVtZW1iZXI6CiAgICAgIwpAQCAtNTUwLDkgKzU2MSwxNSBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKIAorICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CisgICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4aW4uCisKKyAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKwogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKLSAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKICAgICAgICAgcGlkID0gb3MuZm9yaygpCiAgICAgICAgIGlmIHBpZDoKICAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MKQEAgLTU2MCw2ICs1NzcsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gW10KICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFwcGVuZChwaWQpCiAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgogICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKaW5kZXggMjAyYmQzOC4uYjdlYzFhZCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CkBAIC0xLDQgKzEsNCBAQAotIy0qLSBjb2Rpbmc6IElTTy04ODU5LTEgLSotCisjLSotIGNvZGluZzogaXNvLTg4NTktMSAtKi0KICMgcHlzcWxpdGUyL3Rlc3QvZGJhcGkucHk6IHRlc3RzIGZvciBEQi1BUEkgY29tcGxpYW5jZQogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKaW5kZXggN2Y2ZjM0Ny4uOWU4MzNhZSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2ZhY3RvcnkucHk6IHRlc3RzIGZvciB0aGUgdmFyaW91cyBmYWN0b3JpZXMgaW4gcHlzcWxpdGUKICMKICMgQ29weXJpZ2h0IChDKSAyMDA1LTIwMDcgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpAQCAtMTc4LDYgKzE3OCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyb3dbMF0uZW5kc3dpdGgoInJlaWNoIiksICJjb2x1bW4gbXVzdCBjb250YWluIG9yaWdpbmFsIGRhdGEiKQogCiAgICAgZGVmIENoZWNrT3B0aW1pemVkVW5pY29kZShzZWxmKToKKyAgICAgICAgIyBJbiBweTNrLCBzdHIgb2JqZWN0cyBhcmUgYWx3YXlzIHJldHVybmVkIHdoZW4gdGV4dF9mYWN0b3J5CisgICAgICAgICMgaXMgT3B0aW1pemVkVW5pY29kZQogICAgICAgICBzZWxmLmNvbi50ZXh0X2ZhY3RvcnkgPSBzcWxpdGUuT3B0aW1pemVkVW5pY29kZQogICAgICAgICBhdXN0cmlhID0gItZzdGVycmVpY2giCiAgICAgICAgIGdlcm1hbnkgPSAiRGV1dGNobGFuZCIKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CmluZGV4IGE5MmU4MzguLjNkYzQ0ZjYgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2hvb2tzLnB5OiB0ZXN0cyBmb3IgdmFyaW91cyBTUUxpdGUtc3BlY2lmaWMgaG9va3MKICMKICMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpAQCAtMTc2LDEwICsxNzYsNjAgQEAKICAgICAgICAgY29uLmV4ZWN1dGUoInNlbGVjdCAxIHVuaW9uIHNlbGVjdCAyIHVuaW9uIHNlbGVjdCAzIikuZmV0Y2hhbGwoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdGlvbiwgMCwgInByb2dyZXNzIGhhbmRsZXIgd2FzIG5vdCBjbGVhcmVkIikKIAorY2xhc3MgVHJhY2VDYWxsYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgQ2hlY2tUcmFjZUNhbGxiYWNrVXNlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgdHJhY2UgY2FsbGJhY2sgaXMgaW52b2tlZCBvbmNlIGl0IGlzIHNldC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIGZvbyhhLCBiKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0cmFjZWRfc3RhdGVtZW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSgiY3JlYXRlIHRhYmxlIGZvbyIgaW4gc3RtdCBmb3Igc3RtdCBpbiB0cmFjZWRfc3RhdGVtZW50cykpCisKKyAgICBkZWYgQ2hlY2tDbGVhclRyYWNlQ2FsbGJhY2soc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgc2V0dGluZyB0aGUgdHJhY2UgY2FsbGJhY2sgdG8gTm9uZSBjbGVhcnMgdGhlIHByZXZpb3VzbHkgc2V0IGNhbGxiYWNrLgorICAgICAgICAiIiIKKyAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKyAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMgPSBbXQorICAgICAgICBkZWYgdHJhY2Uoc3RhdGVtZW50KToKKyAgICAgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzLmFwcGVuZChzdGF0ZW1lbnQpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2sodHJhY2UpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2soTm9uZSkKKyAgICAgICAgY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSBmb28oYSwgYikiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHRyYWNlZF9zdGF0ZW1lbnRzLCAidHJhY2UgY2FsbGJhY2sgd2FzIG5vdCBjbGVhcmVkIikKKworICAgIGRlZiBDaGVja1VuaWNvZGVDb250ZW50KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBzdGF0ZW1lbnQgY2FuIGNvbnRhaW4gdW5pY29kZSBsaXRlcmFscy4KKyAgICAgICAgIiIiCisgICAgICAgIHVuaWNvZGVfdmFsdWUgPSAnXHhmNlx4ZTRceGZjXHhkNlx4YzRceGRjXHhkZlx1MjBhYycKKyAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKyAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMgPSBbXQorICAgICAgICBkZWYgdHJhY2Uoc3RhdGVtZW50KToKKyAgICAgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzLmFwcGVuZChzdGF0ZW1lbnQpCisgICAgICAgIGNvbi5zZXRfdHJhY2VfY2FsbGJhY2sodHJhY2UpCisgICAgICAgIGNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgZm9vKHgpIikKKyAgICAgICAgIyBDYW4ndCBleGVjdXRlIGJvdW5kIHBhcmFtZXRlcnMgYXMgdGhlaXIgdmFsdWVzIGRvbid0IGFwcGVhcgorICAgICAgICAjIGluIHRyYWNlZCBzdGF0ZW1lbnRzIGJlZm9yZSBTUUxpdGUgMy42LjIxCisgICAgICAgICMgKGNmLiBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvZHJhZnQvcmVsZWFzZWxvZy8zXzZfMjEuaHRtbCkKKyAgICAgICAgY29uLmV4ZWN1dGUoJ2luc2VydCBpbnRvIGZvbyh4KSB2YWx1ZXMgKCIlcyIpJyAlIHVuaWNvZGVfdmFsdWUpCisgICAgICAgIGNvbi5jb21taXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KHVuaWNvZGVfdmFsdWUgaW4gc3RtdCBmb3Igc3RtdCBpbiB0cmFjZWRfc3RhdGVtZW50cyksCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZSBkYXRhICVzIGdhcmJsZWQgaW4gdHJhY2UgY2FsbGJhY2s6ICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoYXNjaWkodW5pY29kZV92YWx1ZSksICcsICcuam9pbihtYXAoYXNjaWksIHRyYWNlZF9zdGF0ZW1lbnRzKSkpKQorCisKKwogZGVmIHN1aXRlKCk6CiAgICAgY29sbGF0aW9uX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKENvbGxhdGlvblRlc3RzLCAiQ2hlY2siKQogICAgIHByb2dyZXNzX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFByb2dyZXNzVGVzdHMsICJDaGVjayIpCi0gICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoY29sbGF0aW9uX3N1aXRlLCBwcm9ncmVzc19zdWl0ZSkpCisgICAgdHJhY2Vfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhY2VDYWxsYmFja1Rlc3RzLCAiQ2hlY2siKQorICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGNvbGxhdGlvbl9zdWl0ZSwgcHJvZ3Jlc3Nfc3VpdGUsIHRyYWNlX3N1aXRlKSkKIAogZGVmIHRlc3QoKToKICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKaW5kZXggYzc1NTFlMy4uOWQ3YjI3NiAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3JlZ3Jlc3Npb24ucHk6IHB5c3FsaXRlIHJlZ3Jlc3Npb24gdGVzdHMKICMKICMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTAgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQppbmRleCA3MGU5NmExLi5mZWI0ZmExIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3RyYW5zYWN0aW9ucy5weTogdGVzdHMgdHJhbnNhY3Rpb25zCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CmluZGV4IDI5NDEzZTEuLjNiNGNiNmQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3R5cGVzLnB5OiB0ZXN0cyBmb3IgdHlwZSBjb252ZXJzaW9uIGFuZCBkZXRlY3Rpb24KICMKICMgQ29weXJpZ2h0IChDKSAyMDA1IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3ZhbCwgYnl0ZXMpOgogICAgICAgICAgICAgICAgICMgc3FsaXRlMyBhbHdheXMgY2FsbHMgX19pbml0X18gd2l0aCBhIGJ5dGVzIGNyZWF0ZWQgZnJvbSBhCiAgICAgICAgICAgICAgICAgIyBVVEYtOCBzdHJpbmcgd2hlbiBfX2NvbmZvcm1fXyB3YXMgdXNlZCB0byBzdG9yZSB0aGUgb2JqZWN0LgotICAgICAgICAgICAgICAgIF92YWwgPSBfdmFsLmRlY29kZSgndXRmOCcpCisgICAgICAgICAgICAgICAgX3ZhbCA9IF92YWwuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgICAgICBzZWxmLnZhbCA9IF92YWwKIAogICAgICAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKaW5kZXggZTAxMzQxZS4uMTRmNmI2NSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L3VzZXJmdW5jdGlvbnMucHk6IHRlc3RzIGZvciB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVzLgogIwpkaWZmIC0tZ2l0IGEvTGliL3NyZV9jb21waWxlLnB5IGIvTGliL3NyZV9jb21waWxlLnB5CmluZGV4IGY1MmVhMDEuLjc1ZjNhMDkgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29tcGlsZS5weQorKysgYi9MaWIvc3JlX2NvbXBpbGUucHkKQEAgLTMxOCwxMSArMzE4LDEzIEBACiAgICAgICAgICAgICAgICAgIyBYWFg6IGNvdWxkIGV4cGFuZCBjYXRlZ29yeQogICAgICAgICAgICAgICAgIHJldHVybiBjaGFyc2V0ICMgY2Fubm90IGNvbXByZXNzCiAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICMgbm9uLUJNUCBjaGFyYWN0ZXJzCisgICAgICAgICMgbm9uLUJNUCBjaGFyYWN0ZXJzOyBYWFggbm93IHRoZXkgc2hvdWxkIHdvcmsKICAgICAgICAgcmV0dXJuIGNoYXJzZXQKICAgICBpZiBuZWdhdGU6CiAgICAgICAgIGlmIHN5cy5tYXh1bmljb2RlICE9IDY1NTM1OgogICAgICAgICAgICAgIyBYWFg6IG5lZ2F0aW9uIGRvZXMgbm90IHdvcmsgd2l0aCBiaWcgY2hhcnNldHMKKyAgICAgICAgICAgICMgWFhYMjogbm93IHRoZXkgc2hvdWxkIHdvcmssIGJ1dCByZW1vdmluZyB0aGlzIHdpbGwgbWFrZSB0aGUKKyAgICAgICAgICAgICMgY2hhcm1hcCAxNyB0aW1lcyBiaWdnZXIKICAgICAgICAgICAgIHJldHVybiBjaGFyc2V0CiAgICAgICAgIGZvciBpIGluIHJhbmdlKDY1NTM2KToKICAgICAgICAgICAgIGNoYXJtYXBbaV0gPSBub3QgY2hhcm1hcFtpXQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggMTM3MzdjYS4uZDM1ODY0NiAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC0xNzcsNiArMTc3LDcgQEAKIAogY2xhc3MgVG9rZW5pemVyOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpbmcpOgorICAgICAgICBzZWxmLmlzdGV4dCA9IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpCiAgICAgICAgIHNlbGYuc3RyaW5nID0gc3RyaW5nCiAgICAgICAgIHNlbGYuaW5kZXggPSAwCiAgICAgICAgIHNlbGYuX19uZXh0KCkKQEAgLTE4NywxNCArMTg4LDE0IEBACiAgICAgICAgIGNoYXIgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4OnNlbGYuaW5kZXgrMV0KICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBzdHI4LCBzaW5jZSBpbmRleGluZyByZXR1cm5zIGEgaW50ZWdlcgogICAgICAgICAjIFhYWCBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciB0ZXN0X2J1Z185MjYwNzUgaW4gdGVzdF9yZS5weQotICAgICAgICBpZiBjaGFyIGFuZCBpc2luc3RhbmNlKGNoYXIsIGJ5dGVzKToKKyAgICAgICAgaWYgY2hhciBhbmQgbm90IHNlbGYuaXN0ZXh0OgogICAgICAgICAgICAgY2hhciA9IGNocihjaGFyWzBdKQogICAgICAgICBpZiBjaGFyID09ICJcXCI6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYyA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXggKyAxXQogICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZSAoZW5kIG9mIGxpbmUpIikKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5zdHJpbmcsIGJ5dGVzKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzdGV4dDoKICAgICAgICAgICAgICAgICBjID0gY2hyKGMpCiAgICAgICAgICAgICBjaGFyID0gY2hhciArIGMKICAgICAgICAgc2VsZi5pbmRleCA9IHNlbGYuaW5kZXggKyBsZW4oY2hhcikKQEAgLTIwOSw2ICsyMTAsMTUgQEAKICAgICAgICAgdGhpcyA9IHNlbGYubmV4dAogICAgICAgICBzZWxmLl9fbmV4dCgpCiAgICAgICAgIHJldHVybiB0aGlzCisgICAgZGVmIGdldHdoaWxlKHNlbGYsIG4sIGNoYXJzZXQpOgorICAgICAgICByZXN1bHQgPSAnJworICAgICAgICBmb3IgXyBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGMgPSBzZWxmLm5leHQKKyAgICAgICAgICAgIGlmIGMgbm90IGluIGNoYXJzZXQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJlc3VsdCArPSBjCisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgIHJldHVybiByZXN1bHQKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgsIHNlbGYubmV4dAogICAgIGRlZiBzZWVrKHNlbGYsIGluZGV4KToKQEAgLTI0MSwyMCArMjUxLDMwIEBACiAgICAgICAgIGMgPSBlc2NhcGVbMToyXQogICAgICAgICBpZiBjID09ICJ4IjoKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlIChleGFjdGx5IHR3byBkaWdpdHMpCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBIRVhESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKLSAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZVsyOl0KLSAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcigiXFwiICsgZXNjYXBlKSkKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlLCAxNikgJiAweGZmCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikgJiAweGZmCisgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CisgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGVpZ2h0IGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoOCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgICAgIGNocihjKSAjIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQgY29kZQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGMKICAgICAgICAgZWxpZiBjIGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICMgb2N0YWwgZXNjYXBlICh1cCB0byB0aHJlZSBkaWdpdHMpCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBPQ1RESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKLSAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZVsxOl0KLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKICAgICAgICAgZWxpZiBjIGluIERJR0lUUzoKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtMjczLDE1ICsyOTMsMjcgQEAKICAgICAgICAgYyA9IGVzY2FwZVsxOjJdCiAgICAgICAgIGlmIGMgPT0gIngiOgogICAgICAgICAgICAgIyBoZXhhZGVjaW1hbCBlc2NhcGUKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIEhFWERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gT0NURElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZSAqb3IqIGRlY2ltYWwgZ3JvdXAgcmVmZXJlbmNlIChzaWdoKQpAQCAtNzkxLDcgKzgyMyw3IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUaGUgdG9rZW5pemVyIGltcGxpY2l0bHkgZGVjb2RlcyBieXRlcyBvYmplY3RzIGFzIGxhdGluLTEsIHdlIG11c3QKICAgICAgICAgIyB0aGVyZWZvcmUgcmUtZW5jb2RlIHRoZSBmaW5hbCByZXByZXNlbnRhdGlvbi4KLSAgICAgICAgZW5jb2RlID0gbGFtYmRhIHg6IHguZW5jb2RlKCdsYXRpbjEnKQorICAgICAgICBlbmNvZGUgPSBsYW1iZGEgeDogeC5lbmNvZGUoJ2xhdGluLTEnKQogICAgIGZvciBjLCBzIGluIHA6CiAgICAgICAgIGlmIGMgaXMgTUFSSzoKICAgICAgICAgICAgIGdyb3Vwc2FwcGVuZCgoaSwgcykpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCA4MTM3MjMxLi4zMTYyZjU2IDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTYwLDEwICs2MCwyNSBAQAogaW1wb3J0IF9zc2wgICAgICAgICAgICAgIyBpZiB3ZSBjYW4ndCBpbXBvcnQgaXQsIGxldCB0aGUgZXJyb3IgcHJvcGFnYXRlCiAKIGZyb20gX3NzbCBpbXBvcnQgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiwgT1BFTlNTTF9WRVJTSU9OX0lORk8sIE9QRU5TU0xfVkVSU0lPTgotZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgU1NMRXJyb3IKK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQKK2Zyb20gX3NzbCBpbXBvcnQgKAorICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAorICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCisgICAgKQogZnJvbSBfc3NsIGltcG9ydCBDRVJUX05PTkUsIENFUlRfT1BUSU9OQUwsIENFUlRfUkVRVUlSRUQKLWZyb20gX3NzbCBpbXBvcnQgT1BfQUxMLCBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX1RMU3YxCi1mcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2VnZCwgUkFORF9hZGQKK2Zyb20gX3NzbCBpbXBvcnQgKAorICAgIE9QX0FMTCwgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19UTFN2MSwKKyAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UKKyAgICApCit0cnk6CisgICAgZnJvbSBfc3NsIGltcG9ydCBPUF9OT19DT01QUkVTU0lPTgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9zc2wgaW1wb3J0IE9QX1NJTkdMRV9FQ0RIX1VTRQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Zyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfZWdkLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTF9FUlJPUl9aRVJPX1JFVFVSTiwKICAgICBTU0xfRVJST1JfV0FOVF9SRUFELApAQCAtNzUsOCArOTAsOSBAQAogICAgIFNTTF9FUlJPUl9FT0YsCiAgICAgU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERSwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IEhBU19TTkkKLWZyb20gX3NzbCBpbXBvcnQgUFJPVE9DT0xfU1NMdjMsIFBST1RPQ09MX1NTTHYyMywgUFJPVE9DT0xfVExTdjEKK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4KK2Zyb20gX3NzbCBpbXBvcnQgKFBST1RPQ09MX1NTTHYzLCBQUk9UT0NPTF9TU0x2MjMsCisgICAgICAgICAgICAgICAgICBQUk9UT0NPTF9UTFN2MSkKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAogX1BST1RPQ09MX05BTUVTID0gewpAQCAtOTQsMTEgKzExMCwxNiBAQAogCiBmcm9tIHNvY2tldCBpbXBvcnQgZ2V0bmFtZWluZm8gYXMgX2dldG5hbWVpbmZvCiBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgc29ja2V0X2Vycm9yCi1mcm9tIHNvY2tldCBpbXBvcnQgc29ja2V0LCBBRl9JTkVULCBTT0NLX1NUUkVBTQorZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVCwgU09DS19TVFJFQU0sIGNyZWF0ZV9jb25uZWN0aW9uCiBpbXBvcnQgYmFzZTY0ICAgICAgICAjIGZvciBERVItdG8tUEVNIHRyYW5zbGF0aW9uCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZXJybm8KIAoraWYgX3NzbC5IQVNfVExTX1VOSVFVRToKKyAgICBDSEFOTkVMX0JJTkRJTkdfVFlQRVMgPSBbJ3Rscy11bmlxdWUnXQorZWxzZToKKyAgICBDSEFOTkVMX0JJTkRJTkdfVFlQRVMgPSBbXQorCiAjIERpc2FibGUgd2VhayBvciBpbnNlY3VyZSBjaXBoZXJzIGJ5IGRlZmF1bHQKICMgKE9wZW5TU0wncyBkZWZhdWx0IHNldHRpbmcgaXMgJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTCcpCiBfREVGQVVMVF9DSVBIRVJTID0gJ0RFRkFVTFQ6IWFOVUxMOiFlTlVMTDohTE9XOiFFWFBPUlQ6IVNTTHYyJwpAQCAtMTg4LDYgKzIwOSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKIAorICAgIGRlZiBzZXRfbnBuX3Byb3RvY29scyhzZWxmLCBucG5fcHJvdG9jb2xzKToKKyAgICAgICAgcHJvdG9zID0gYnl0ZWFycmF5KCkKKyAgICAgICAgZm9yIHByb3RvY29sIGluIG5wbl9wcm90b2NvbHM6CisgICAgICAgICAgICBiID0gYnl0ZXMocHJvdG9jb2wsICdhc2NpaScpCisgICAgICAgICAgICBpZiBsZW4oYikgPT0gMCBvciBsZW4oYikgPiAyNTU6CisgICAgICAgICAgICAgICAgcmFpc2UgU1NMRXJyb3IoJ05QTiBwcm90b2NvbHMgbXVzdCBiZSAxIHRvIDI1NSBpbiBsZW5ndGgnKQorICAgICAgICAgICAgcHJvdG9zLmFwcGVuZChsZW4oYikpCisgICAgICAgICAgICBwcm90b3MuZXh0ZW5kKGIpCisKKyAgICAgICAgc2VsZi5fc2V0X25wbl9wcm90b2NvbHMocHJvdG9zKQorCiAKIGNsYXNzIFNTTFNvY2tldChzb2NrZXQpOgogICAgICIiIlRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHN1YnR5cGUgb2Ygc29ja2V0LnNvY2tldCB0aGF0IHdyYXBzCkBAIC0xOTksNyArMjMxLDcgQEAKICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249UFJPVE9DT0xfU1NMdjIzLCBjYV9jZXJ0cz1Ob25lLAogICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCi0gICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIGNpcGhlcnM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKIApAQCAtMjE5LDYgKzI1MSw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYV9jZXJ0cykKICAgICAgICAgICAgIGlmIGNlcnRmaWxlOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgaWYgY2lwaGVyczoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKQEAgLTMxOSw2ICszNTMsMTMgQEAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCiAKKyAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmogb3Igbm90IF9zc2wuSEFTX05QTjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKICAgICBkZWYgY2lwaGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC0zMjYsNiArMzY3LDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNpcGhlcigpCiAKKyAgICBkZWYgY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNvbXByZXNzaW9uKCkKKwogICAgIGRlZiBzZW5kKHNlbGYsIGRhdGEsIGZsYWdzPTApOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKQEAgLTM1OCw2ICs0MDYsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZHRvKHNlbGYsIGRhdGEsIGZsYWdzX29yX2FkZHIsIGFkZHIpCiAKKyAgICBkZWYgc2VuZG1zZyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIEVuc3VyZSBwcm9ncmFtcyBkb24ndCBzZW5kIGRhdGEgdW5lbmNyeXB0ZWQgaWYgdGhleSB0cnkgdG8KKyAgICAgICAgIyB1c2UgdGhpcyBtZXRob2QuCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInNlbmRtc2cgbm90IGFsbG93ZWQgb24gaW5zdGFuY2VzIG9mICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18pCisKICAgICBkZWYgc2VuZGFsbChzZWxmLCBkYXRhLCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC00MTYsNiArNDcwLDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnJlY3Zmcm9tX2ludG8oc2VsZiwgYnVmZmVyLCBuYnl0ZXMsIGZsYWdzKQogCisgICAgZGVmIHJlY3Ztc2coc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicmVjdm1zZyBub3QgYWxsb3dlZCBvbiBpbnN0YW5jZXMgb2YgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKKworICAgIGRlZiByZWN2bXNnX2ludG8oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigicmVjdm1zZ19pbnRvIG5vdCBhbGxvd2VkIG9uIGluc3RhbmNlcyBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiAlIHNlbGYuX19jbGFzc19fKQorCiAgICAgZGVmIHBlbmRpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtNTAyLDYgKzU2NCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb19oYW5kc2hha2Vfb25fY29ubmVjdCksCiAgICAgICAgICAgICAgICAgYWRkcikKIAorICAgIGRlZiBnZXRfY2hhbm5lbF9iaW5kaW5nKHNlbGYsIGNiX3R5cGU9InRscy11bmlxdWUiKToKKyAgICAgICAgIiIiR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24uICBSYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIHRoZSByZXF1ZXN0ZWQgYGNiX3R5cGVgIGlzIG5vdCBzdXBwb3J0ZWQuICBSZXR1cm4gYnl0ZXMgb2YgdGhlIGRhdGEKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgZGF0YSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIGJlZm9yZSB0aGUgaGFuZHNoYWtlKS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNiX3R5cGUgbm90IGluIENIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIikKKyAgICAgICAgaWYgY2JfdHlwZSAhPSAidGxzLXVuaXF1ZSI6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0gY2hhbm5lbCBiaW5kaW5nIHR5cGUgbm90IGltcGxlbWVudGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoY2JfdHlwZSkpCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai50bHNfdW5pcXVlX2NiKCkKKwogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAjIHN5cy5zdGRlcnIud3JpdGUoIl9fZGVsX18gb24gJXNcbiIgJSByZXByKHNlbGYpKQogICAgICAgICBzZWxmLl9yZWFsX2Nsb3NlKCkKQEAgLTUxMSw3ICs1ODgsOCBAQAogICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLCBjZXJ0X3JlcXM9Q0VSVF9OT05FLAogICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAotICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIGNpcGhlcnM9Tm9uZSk6CisgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUpOgogCiAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIGtleWZpbGU9a2V5ZmlsZSwgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgY2VydF9yZXFzPWNlcnRfcmVxcywKQEAgLTU2Niw5ICs2NDQsOSBAQAogICAgICAgICBjZXJ0X3JlcXMgPSBDRVJUX1JFUVVJUkVECiAgICAgZWxzZToKICAgICAgICAgY2VydF9yZXFzID0gQ0VSVF9OT05FCi0gICAgcyA9IHdyYXBfc29ja2V0KHNvY2tldCgpLCBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwKKyAgICBzID0gY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcikKKyAgICBzID0gd3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1jZXJ0X3JlcXMsIGNhX2NlcnRzPWNhX2NlcnRzKQotICAgIHMuY29ubmVjdChhZGRyKQogICAgIGRlcmNlcnQgPSBzLmdldHBlZXJjZXJ0KFRydWUpCiAgICAgcy5jbG9zZSgpCiAgICAgcmV0dXJuIERFUl9jZXJ0X3RvX1BFTV9jZXJ0KGRlcmNlcnQpCmRpZmYgLS1naXQgYS9MaWIvc3RhdC5weSBiL0xpYi9zdGF0LnB5CmluZGV4IDc4Y2NkNWUuLjcwNGFkZmUgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0LnB5CisrKyBiL0xpYi9zdGF0LnB5CkBAIC0xOSw3OCArMTksMTMxIEBACiAjIEV4dHJhY3QgYml0cyBmcm9tIHRoZSBtb2RlCiAKIGRlZiBTX0lNT0RFKG1vZGUpOgorICAgICIiIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBjYW4gYmUgc2V0IGJ5CisgICAgb3MuY2htb2QoKS4KKyAgICAiIiIKICAgICByZXR1cm4gbW9kZSAmIDBvNzc3NwogCiBkZWYgU19JRk1UKG1vZGUpOgorICAgICIiIlJldHVybiB0aGUgcG9ydGlvbiBvZiB0aGUgZmlsZSdzIG1vZGUgdGhhdCBkZXNjcmliZXMgdGhlCisgICAgZmlsZSB0eXBlLgorICAgICIiIgogICAgIHJldHVybiBtb2RlICYgMG8xNzAwMDAKIAogIyBDb25zdGFudHMgdXNlZCBhcyBTX0lGTVQoKSBmb3IgdmFyaW91cyBmaWxlIHR5cGVzCiAjIChub3QgYWxsIGFyZSBpbXBsZW1lbnRlZCBvbiBhbGwgc3lzdGVtcykKIAotU19JRkRJUiAgPSAwbzA0MDAwMAotU19JRkNIUiAgPSAwbzAyMDAwMAotU19JRkJMSyAgPSAwbzA2MDAwMAotU19JRlJFRyAgPSAwbzEwMDAwMAotU19JRklGTyAgPSAwbzAxMDAwMAotU19JRkxOSyAgPSAwbzEyMDAwMAotU19JRlNPQ0sgPSAwbzE0MDAwMAorU19JRkRJUiAgPSAwbzA0MDAwMCAgIyBkaXJlY3RvcnkKK1NfSUZDSFIgID0gMG8wMjAwMDAgICMgY2hhcmFjdGVyIGRldmljZQorU19JRkJMSyAgPSAwbzA2MDAwMCAgIyBibG9jayBkZXZpY2UKK1NfSUZSRUcgID0gMG8xMDAwMDAgICMgcmVndWxhciBmaWxlCitTX0lGSUZPICA9IDBvMDEwMDAwICAjIGZpZm8gKG5hbWVkIHBpcGUpCitTX0lGTE5LICA9IDBvMTIwMDAwICAjIHN5bWJvbGljIGxpbmsKK1NfSUZTT0NLID0gMG8xNDAwMDAgICMgc29ja2V0IGZpbGUKIAogIyBGdW5jdGlvbnMgdG8gdGVzdCBmb3IgZWFjaCBmaWxlIHR5cGUKIAogZGVmIFNfSVNESVIobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgZGlyZWN0b3J5LiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkRJUgogCiBkZWYgU19JU0NIUihtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZDSFIKIAogZGVmIFNfSVNCTEsobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZCTEsKIAogZGVmIFNfSVNSRUcobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgcmVndWxhciBmaWxlLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlJFRwogCiBkZWYgU19JU0ZJRk8obW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgRklGTyAobmFtZWQgcGlwZSkuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGSUZPCiAKIGRlZiBTX0lTTE5LKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHN5bWJvbGljIGxpbmsuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGTE5LCiAKIGRlZiBTX0lTU09DSyhtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzb2NrZXQuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGU09DSwogCiAjIE5hbWVzIGZvciBwZXJtaXNzaW9uIGJpdHMKIAotU19JU1VJRCA9IDBvNDAwMAotU19JU0dJRCA9IDBvMjAwMAotU19FTkZNVCA9IFNfSVNHSUQKLVNfSVNWVFggPSAwbzEwMDAKLVNfSVJFQUQgPSAwbzA0MDAKLVNfSVdSSVRFID0gMG8wMjAwCi1TX0lFWEVDID0gMG8wMTAwCi1TX0lSV1hVID0gMG8wNzAwCi1TX0lSVVNSID0gMG8wNDAwCi1TX0lXVVNSID0gMG8wMjAwCi1TX0lYVVNSID0gMG8wMTAwCi1TX0lSV1hHID0gMG8wMDcwCi1TX0lSR1JQID0gMG8wMDQwCi1TX0lXR1JQID0gMG8wMDIwCi1TX0lYR1JQID0gMG8wMDEwCi1TX0lSV1hPID0gMG8wMDA3Ci1TX0lST1RIID0gMG8wMDA0Ci1TX0lXT1RIID0gMG8wMDAyCi1TX0lYT1RIID0gMG8wMDAxCitTX0lTVUlEID0gMG80MDAwICAjIHNldCBVSUQgYml0CitTX0lTR0lEID0gMG8yMDAwICAjIHNldCBHSUQgYml0CitTX0VORk1UID0gU19JU0dJRCAjIGZpbGUgbG9ja2luZyBlbmZvcmNlbWVudAorU19JU1ZUWCA9IDBvMTAwMCAgIyBzdGlja3kgYml0CitTX0lSRUFEID0gMG8wNDAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JUlVTUgorU19JV1JJVEUgPSAwbzAyMDAgIyBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVdVU1IKK1NfSUVYRUMgPSAwbzAxMDAgICMgVW5peCBWNyBzeW5vbnltIGZvciBTX0lYVVNSCitTX0lSV1hVID0gMG8wNzAwICAjIG1hc2sgZm9yIG93bmVyIHBlcm1pc3Npb25zCitTX0lSVVNSID0gMG8wNDAwICAjIHJlYWQgYnkgb3duZXIKK1NfSVdVU1IgPSAwbzAyMDAgICMgd3JpdGUgYnkgb3duZXIKK1NfSVhVU1IgPSAwbzAxMDAgICMgZXhlY3V0ZSBieSBvd25lcgorU19JUldYRyA9IDBvMDA3MCAgIyBtYXNrIGZvciBncm91cCBwZXJtaXNzaW9ucworU19JUkdSUCA9IDBvMDA0MCAgIyByZWFkIGJ5IGdyb3VwCitTX0lXR1JQID0gMG8wMDIwICAjIHdyaXRlIGJ5IGdyb3VwCitTX0lYR1JQID0gMG8wMDEwICAjIGV4ZWN1dGUgYnkgZ3JvdXAKK1NfSVJXWE8gPSAwbzAwMDcgICMgbWFzayBmb3Igb3RoZXJzIChub3QgaW4gZ3JvdXApIHBlcm1pc3Npb25zCitTX0lST1RIID0gMG8wMDA0ICAjIHJlYWQgYnkgb3RoZXJzCitTX0lXT1RIID0gMG8wMDAyICAjIHdyaXRlIGJ5IG90aGVycworU19JWE9USCA9IDBvMDAwMSAgIyBleGVjdXRlIGJ5IG90aGVycwogCiAjIE5hbWVzIGZvciBmaWxlIGZsYWdzCiAKLVVGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEKLVVGX0lNTVVUQUJMRSA9IDB4MDAwMDAwMDIKLVVGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQKLVVGX09QQVFVRSAgICA9IDB4MDAwMDAwMDgKLVVGX05PVU5MSU5LICA9IDB4MDAwMDAwMTAKLVVGX0NPTVBSRVNTRUQgPSAweDAwMDAwMDIwICAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKLVVGX0hJRERFTiAgICA9IDB4MDAwMDgwMDAgICAjIE9TIFg6IGZpbGUgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQKLVNGX0FSQ0hJVkVEICA9IDB4MDAwMTAwMDAKLVNGX0lNTVVUQUJMRSA9IDB4MDAwMjAwMDAKLVNGX0FQUEVORCAgICA9IDB4MDAwNDAwMDAKLVNGX05PVU5MSU5LICA9IDB4MDAxMDAwMDAKLVNGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAKK1VGX05PRFVNUCAgICA9IDB4MDAwMDAwMDEgICMgZG8gbm90IGR1bXAgZmlsZQorVUZfSU1NVVRBQkxFID0gMHgwMDAwMDAwMiAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZAorVUZfQVBQRU5EICAgID0gMHgwMDAwMDAwNCAgIyBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvCitVRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4ICAjIGRpcmVjdG9yeSBpcyBvcGFxdWUgd2hlbiB2aWV3ZWQgdGhyb3VnaCBhIHVuaW9uIHN0YWNrCitVRl9OT1VOTElOSyAgPSAweDAwMDAwMDEwICAjIGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKK1VGX0NPTVBSRVNTRUQgPSAweDAwMDAwMDIwICMgT1MgWDogZmlsZSBpcyBoZnMtY29tcHJlc3NlZAorVUZfSElEREVOICAgID0gMHgwMDAwODAwMCAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkCitTRl9BUkNISVZFRCAgPSAweDAwMDEwMDAwICAjIGZpbGUgbWF5IGJlIGFyY2hpdmVkCitTRl9JTU1VVEFCTEUgPSAweDAwMDIwMDAwICAjIGZpbGUgbWF5IG5vdCBiZSBjaGFuZ2VkCitTRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwICAjIGZpbGUgbWF5IG9ubHkgYmUgYXBwZW5kZWQgdG8KK1NGX05PVU5MSU5LICA9IDB4MDAxMDAwMDAgICMgZmlsZSBtYXkgbm90IGJlIHJlbmFtZWQgb3IgZGVsZXRlZAorU0ZfU05BUFNIT1QgID0gMHgwMDIwMDAwMCAgIyBmaWxlIGlzIGEgc25hcHNob3QgZmlsZQorCisKK19maWxlbW9kZV90YWJsZSA9ICgKKyAgICAoKFNfSUZMTkssICAgICAgICAgImwiKSwKKyAgICAgKFNfSUZSRUcsICAgICAgICAgIi0iKSwKKyAgICAgKFNfSUZCTEssICAgICAgICAgImIiKSwKKyAgICAgKFNfSUZESVIsICAgICAgICAgImQiKSwKKyAgICAgKFNfSUZDSFIsICAgICAgICAgImMiKSwKKyAgICAgKFNfSUZJRk8sICAgICAgICAgInAiKSksCisKKyAgICAoKFNfSVJVU1IsICAgICAgICAgInIiKSwpLAorICAgICgoU19JV1VTUiwgICAgICAgICAidyIpLCksCisgICAgKChTX0lYVVNSfFNfSVNVSUQsICJzIiksCisgICAgIChTX0lTVUlELCAgICAgICAgICJTIiksCisgICAgIChTX0lYVVNSLCAgICAgICAgICJ4IikpLAorCisgICAgKChTX0lSR1JQLCAgICAgICAgICJyIiksKSwKKyAgICAoKFNfSVdHUlAsICAgICAgICAgInciKSwpLAorICAgICgoU19JWEdSUHxTX0lTR0lELCAicyIpLAorICAgICAoU19JU0dJRCwgICAgICAgICAiUyIpLAorICAgICAoU19JWEdSUCwgICAgICAgICAieCIpKSwKKworICAgICgoU19JUk9USCwgICAgICAgICAiciIpLCksCisgICAgKChTX0lXT1RILCAgICAgICAgICJ3IiksKSwKKyAgICAoKFNfSVhPVEh8U19JU1ZUWCwgInQiKSwKKyAgICAgKFNfSVNWVFgsICAgICAgICAgIlQiKSwKKyAgICAgKFNfSVhPVEgsICAgICAgICAgIngiKSkKKykKKworZGVmIGZpbGVtb2RlKG1vZGUpOgorICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuIiIiCisgICAgcGVybSA9IFtdCisgICAgZm9yIHRhYmxlIGluIF9maWxlbW9kZV90YWJsZToKKyAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKKyAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgorICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKKyAgICByZXR1cm4gIiIuam9pbihwZXJtKQpkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggMGY0ZWRlMi4uYjU3Yzc5YiAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC00NiwyMyArNDYsNyBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogaW1wb3J0IHJlIGFzIF9yZQotCi1jbGFzcyBfbXVsdGltYXA6Ci0gICAgIiIiSGVscGVyIGNsYXNzIGZvciBjb21iaW5pbmcgbXVsdGlwbGUgbWFwcGluZ3MuCi0KLSAgICBVc2VkIGJ5IC57c2FmZV8sfXN1YnN0aXR1dGUoKSB0byBjb21iaW5lIHRoZSBtYXBwaW5nIGFuZCBrZXl3b3JkCi0gICAgYXJndW1lbnRzLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmltYXJ5LCBzZWNvbmRhcnkpOgotICAgICAgICBzZWxmLl9wcmltYXJ5ID0gcHJpbWFyeQotICAgICAgICBzZWxmLl9zZWNvbmRhcnkgPSBzZWNvbmRhcnkKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHJpbWFyeVtrZXldCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZWNvbmRhcnlba2V5XQotCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAogCiBjbGFzcyBfVGVtcGxhdGVNZXRhY2xhc3ModHlwZSk6CiAgICAgcGF0dGVybiA9IHIiIiIKQEAgLTEwMCw3ICs4NCw3IEBACiAKICAgICBkZWYgX2ludmFsaWQoc2VsZiwgbW8pOgogICAgICAgICBpID0gbW8uc3RhcnQoJ2ludmFsaWQnKQotICAgICAgICBsaW5lcyA9IHNlbGYudGVtcGxhdGVbOmldLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgIGlmIG5vdCBsaW5lczoKICAgICAgICAgICAgIGNvbG5vID0gMQogICAgICAgICAgICAgbGluZW5vID0gMQpAQCAtMTE2LDcgKzEwMCw3IEBACiAgICAgICAgIGlmIG5vdCBhcmdzOgogICAgICAgICAgICAgbWFwcGluZyA9IGt3cwogICAgICAgICBlbGlmIGt3czoKLSAgICAgICAgICAgIG1hcHBpbmcgPSBfbXVsdGltYXAoa3dzLCBhcmdzWzBdKQorICAgICAgICAgICAgbWFwcGluZyA9IENoYWluTWFwKGt3cywgYXJnc1swXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1hcHBpbmcgPSBhcmdzWzBdCiAgICAgICAgICMgSGVscGVyIGZ1bmN0aW9uIGZvciAuc3ViKCkKQEAgLTE0Miw3ICsxMjYsNyBAQAogICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICAgZWxpZiBrd3M6Ci0gICAgICAgICAgICBtYXBwaW5nID0gX211bHRpbWFwKGt3cywgYXJnc1swXSkKKyAgICAgICAgICAgIG1hcHBpbmcgPSBDaGFpbk1hcChrd3MsIGFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gYXJnc1swXQogICAgICAgICAjIEhlbHBlciBmdW5jdGlvbiBmb3IgLnN1YigpCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IDkzMjYyZGYuLjc3NWRiNTAgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xOTEsOCArMTkxLDEwIEBACiAKIEEgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZCBpZiBQb3BlbiBpcyBjYWxsZWQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cy4KIAotY2hlY2tfY2FsbCgpIGFuZCBjaGVja19vdXRwdXQoKSB3aWxsIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciwgaWYgdGhlCi1jYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuIGNvZGUuCitFeGNlcHRpb25zIGRlZmluZWQgd2l0aGluIHRoaXMgbW9kdWxlIGluaGVyaXQgZnJvbSBTdWJwcm9jZXNzRXJyb3IuCitjaGVja19jYWxsKCkgYW5kIGNoZWNrX291dHB1dCgpIHdpbGwgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yIGlmIHRoZQorY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLiAgVGltZW91dEV4cGlyZWQKK2JlIHJhaXNlZCBpZiBhIHRpbWVvdXQgd2FzIHNwZWNpZmllZCBhbmQgZXhwaXJlZC4KIAogCiBTZWN1cml0eQpAQCAtMzQwLDE1ICszNDIsMjMgQEAKIAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgZ2MKIGltcG9ydCBzaWduYWwKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZXJybm8KK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCi1jbGFzcyBDYWxsZWRQcm9jZXNzRXJyb3IoRXhjZXB0aW9uKToKK2NsYXNzIFN1YnByb2Nlc3NFcnJvcihFeGNlcHRpb24pOiBwYXNzCisKKworY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKFN1YnByb2Nlc3NFcnJvcik6CiAgICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSBjaGVja19jYWxsKCkgb3IKICAgICBjaGVja19vdXRwdXQoKSByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCiAgICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKQEAgLTM2MiwxMCArMzcyLDI0IEBACiAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkIiAlIChzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCiAKK2NsYXNzIFRpbWVvdXRFeHBpcmVkKFN1YnByb2Nlc3NFcnJvcik6CisgICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcyB3aGlsZSB3YWl0aW5nIGZvciBhCisgICAgY2hpbGQgcHJvY2Vzcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY21kLCB0aW1lb3V0LCBvdXRwdXQ9Tm9uZSk6CisgICAgICAgIHNlbGYuY21kID0gY21kCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCJDb21tYW5kICclcycgdGltZWQgb3V0IGFmdGVyICVzIHNlY29uZHMiICUKKyAgICAgICAgICAgICAgICAoc2VsZi5jbWQsIHNlbGYudGltZW91dCkpCisKKwogaWYgbXN3aW5kb3dzOgogICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgaW1wb3J0IF9zdWJwcm9jZXNzCisgICAgaW1wb3J0IF93aW5hcGkKICAgICBjbGFzcyBTVEFSVFVQSU5GTzoKICAgICAgICAgZHdGbGFncyA9IDAKICAgICAgICAgaFN0ZElucHV0ID0gTm9uZQpAQCAtMzc3LDUzICs0MDEsNDkgQEAKIGVsc2U6CiAgICAgaW1wb3J0IHNlbGVjdAogICAgIF9oYXNfcG9sbCA9IGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpCi0gICAgaW1wb3J0IGZjbnRsCi0gICAgaW1wb3J0IHBpY2tsZQotCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgX3Bvc2l4c3VicHJvY2VzcwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgX3Bvc2l4c3VicHJvY2VzcyA9IE5vbmUKLSAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIF9wb3NpeHN1YnByb2Nlc3MgbW9kdWxlIGlzIG5vdCBiZWluZyB1c2VkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgIkNoaWxkIHByb2Nlc3MgcmVsaWFiaWxpdHkgbWF5IHN1ZmZlciBpZiB5b3VyICIKLSAgICAgICAgICAgICAgICAgICAgICAicHJvZ3JhbSB1c2VzIHRocmVhZHMuIiwgUnVudGltZVdhcm5pbmcpCisgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKKyAgICBfY3JlYXRlX3BpcGUgPSBfcG9zaXhzdWJwcm9jZXNzLmNsb2V4ZWNfcGlwZQogCiAgICAgIyBXaGVuIHNlbGVjdCBvciBwb2xsIGhhcyBpbmRpY2F0ZWQgdGhhdCB0aGUgZmlsZSBpcyB3cml0YWJsZSwKICAgICAjIHdlIGNhbiB3cml0ZSB1cCB0byBfUElQRV9CVUYgYnl0ZXMgd2l0aG91dCByaXNrIG9mIGJsb2NraW5nLgogICAgICMgUE9TSVggZGVmaW5lcyBQSVBFX0JVRiBhcyA+PSA1MTIuCiAgICAgX1BJUEVfQlVGID0gZ2V0YXR0cihzZWxlY3QsICdQSVBFX0JVRicsIDUxMikKIAotICAgIF9GRF9DTE9FWEVDID0gZ2V0YXR0cihmY250bCwgJ0ZEX0NMT0VYRUMnLCAxKQotCi0gICAgZGVmIF9zZXRfY2xvZXhlYyhmZCwgY2xvZXhlYyk6Ci0gICAgICAgIG9sZCA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZEKQotICAgICAgICBpZiBjbG9leGVjOgotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkQsIG9sZCB8IF9GRF9DTE9FWEVDKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkQsIG9sZCAmIH5fRkRfQ0xPRVhFQykKLQotICAgIGlmIF9wb3NpeHN1YnByb2Nlc3M6Ci0gICAgICAgIF9jcmVhdGVfcGlwZSA9IF9wb3NpeHN1YnByb2Nlc3MuY2xvZXhlY19waXBlCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9jcmVhdGVfcGlwZSgpOgotICAgICAgICAgICAgZmRzID0gb3MucGlwZSgpCi0gICAgICAgICAgICBfc2V0X2Nsb2V4ZWMoZmRzWzBdLCBUcnVlKQotICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkc1sxXSwgVHJ1ZSkKLSAgICAgICAgICAgIHJldHVybiBmZHMKIAogX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCi0gICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciJdCisgICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIl0KIAogaWYgbXN3aW5kb3dzOgotICAgIGZyb20gX3N1YnByb2Nlc3MgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJURl9VU0VTVERIQU5ETEVTLCBTVEFSVEZfVVNFU0hPV1dJTkRPVykKKyAgICBmcm9tIF93aW5hcGkgaW1wb3J0IChDUkVBVEVfTkVXX0NPTlNPTEUsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVJURl9VU0VTVERIQU5ETEVTLCBTVEFSVEZfVVNFU0hPV1dJTkRPVykKIAogICAgIF9fYWxsX18uZXh0ZW5kKFsiQ1JFQVRFX05FV19DT05TT0xFIiwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfSU5QVVRfSEFORExFIiwgIlNURF9PVVRQVVRfSEFORExFIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCiAgICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyJdKQorCisgICAgY2xhc3MgSGFuZGxlKGludCk6CisgICAgICAgIGNsb3NlZCA9IEZhbHNlCisKKyAgICAgICAgZGVmIENsb3NlKHNlbGYsIENsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKHNlbGYpCisKKyAgICAgICAgZGVmIERldGFjaChzZWxmKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhbHJlYWR5IGNsb3NlZCIpCisKKyAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuICJIYW5kbGUoJWQpIiAlIGludChzZWxmKQorCisgICAgICAgIF9fZGVsX18gPSBDbG9zZQorICAgICAgICBfX3N0cl9fID0gX19yZXByX18KKwogdHJ5OgogICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQogZXhjZXB0OgpAQCAtNDQ4LDI3ICs0NjgsNjMgQEAKIAogUElQRSA9IC0xCiBTVERPVVQgPSAtMgorREVWTlVMTCA9IC0zCiAKIAogZGVmIF9laW50cl9yZXRyeV9jYWxsKGZ1bmMsICphcmdzKToKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLSAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQogCiAKLWRlZiBjYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiJSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cy4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KLSAgICByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgorIyBYWFggVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIGFuZCB0aGUgdGVzdCBzdWl0ZSwKKyMgYnV0IGl0J3MgaGVyZSBzbyB0aGF0IGl0IGNhbiBiZSBpbXBvcnRlZCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0CisjIHRocmVhZHMuCisKK2RlZiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CisgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCisgICAgZmxhZ19vcHRfbWFwID0geworICAgICAgICAnZGVidWcnOiAnZCcsCisgICAgICAgICMgJ2luc3BlY3QnOiAnaScsCisgICAgICAgICMgJ2ludGVyYWN0aXZlJzogJ2knLAorICAgICAgICAnb3B0aW1pemUnOiAnTycsCisgICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAorICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAorICAgICAgICAnbm9fc2l0ZSc6ICdTJywKKyAgICAgICAgJ2lnbm9yZV9lbnZpcm9ubWVudCc6ICdFJywKKyAgICAgICAgJ3ZlcmJvc2UnOiAndicsCisgICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAorICAgICAgICAncXVpZXQnOiAncScsCisgICAgICAgICdoYXNoX3JhbmRvbWl6YXRpb24nOiAnUicsCisgICAgfQorICAgIGFyZ3MgPSBbXQorICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6CisgICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKKyAgICAgICAgaWYgdiA+IDA6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyBvcHQgKiB2KQorICAgIGZvciBvcHQgaW4gc3lzLndhcm5vcHRpb25zOgorICAgICAgICBhcmdzLmFwcGVuZCgnLVcnICsgb3B0KQorICAgIHJldHVybiBhcmdzCisKKworZGVmIGNhbGwoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlIG9yCisgICAgdGltZW91dCwgdGhlbiByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgogCiAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CiAKICAgICByZXRjb2RlID0gY2FsbChbImxzIiwgIi1sIl0pCiAgICAgIiIiCi0gICAgcmV0dXJuIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKS53YWl0KCkKKyAgICB3aXRoIFBvcGVuKCpwb3BlbmFyZ3MsICoqa3dhcmdzKSBhcyBwOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gcC53YWl0KHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcC5raWxsKCkKKyAgICAgICAgICAgIHAud2FpdCgpCisgICAgICAgICAgICByYWlzZQogCiAKIGRlZiBjaGVja19jYWxsKCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKQEAgLTQ3Nyw3ICs1MzMsNyBAQAogICAgIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZSBDYWxsZWRQcm9jZXNzRXJyb3Igb2JqZWN0IHdpbGwgaGF2ZSB0aGUKICAgICByZXR1cm4gY29kZSBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCiAKLSAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKKyAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIGNhbGwgZnVuY3Rpb24uICBFeGFtcGxlOgogCiAgICAgY2hlY2tfY2FsbChbImxzIiwgIi1sIl0pCiAgICAgIiIiCkBAIC00OTAsNyArNTQ2LDcgQEAKICAgICByZXR1cm4gMAogCiAKLWRlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgKiprd2FyZ3MpOgorZGVmIGNoZWNrX291dHB1dCgqcG9wZW5hcmdzLCB0aW1lb3V0PU5vbmUsICoqa3dhcmdzKToKICAgICByIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCiAKICAgICBJZiB0aGUgZXhpdCBjb2RlIHdhcyBub24temVybyBpdCByYWlzZXMgYSBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUKQEAgLTUxMiwxNCArNTY4LDIwIEBACiAgICAgIiIiCiAgICAgaWYgJ3N0ZG91dCcgaW4ga3dhcmdzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQotICAgIHByb2Nlc3MgPSBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpCi0gICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCi0gICAgaWYgcmV0Y29kZToKLSAgICAgICAgY21kID0ga3dhcmdzLmdldCgiYXJncyIpCi0gICAgICAgIGlmIGNtZCBpcyBOb25lOgotICAgICAgICAgICAgY21kID0gcG9wZW5hcmdzWzBdCi0gICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBjbWQsIG91dHB1dD1vdXRwdXQpCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCBzdGRvdXQ9UElQRSwgKiprd2FyZ3MpIGFzIHByb2Nlc3M6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUodGltZW91dD10aW1lb3V0KQorICAgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChwcm9jZXNzLmFyZ3MsIHRpbWVvdXQsIG91dHB1dD1vdXRwdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0Y29kZSA9IHByb2Nlc3MucG9sbCgpCisgICAgICAgIGlmIHJldGNvZGU6CisgICAgICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgcHJvY2Vzcy5hcmdzLCBvdXRwdXQ9b3V0cHV0KQogICAgIHJldHVybiBvdXRwdXQKIAogCkBAIC02MTQsMTEgKzY3NiwxOSBAQAogICAgID4+PiBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dCgnL2Jpbi9qdW5rJykKICAgICAoMjU2LCAnc2g6IC9iaW4vanVuazogbm90IGZvdW5kJykKICAgICAiIiIKLSAgICBwaXBlID0gb3MucG9wZW4oJ3sgJyArIGNtZCArICc7IH0gMj4mMScsICdyJykKLSAgICB0ZXh0ID0gcGlwZS5yZWFkKCkKLSAgICBzdHMgPSBwaXBlLmNsb3NlKCkKLSAgICBpZiBzdHMgaXMgTm9uZTogc3RzID0gMAotICAgIGlmIHRleHRbLTE6XSA9PSAnXG4nOiB0ZXh0ID0gdGV4dFs6LTFdCisgICAgd2l0aCBvcy5wb3BlbigneyAnICsgY21kICsgJzsgfSAyPiYxJywgJ3InKSBhcyBwaXBlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXh0ID0gcGlwZS5yZWFkKCkKKyAgICAgICAgICAgIHN0cyA9IHBpcGUuY2xvc2UoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jZXNzID0gcGlwZS5fcHJvYworICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKKyAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICByYWlzZQorICAgIGlmIHN0cyBpcyBOb25lOgorICAgICAgICBzdHMgPSAwCisgICAgaWYgdGV4dFstMTpdID09ICdcbic6CisgICAgICAgIHRleHQgPSB0ZXh0WzotMV0KICAgICByZXR1cm4gc3RzLCB0ZXh0CiAKIApAQCAtNjUwLDYgKzcyMCw4IEBACiAgICAgICAgIF9jbGVhbnVwKCkKIAogICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5faW5wdXQgPSBOb25lCisgICAgICAgIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKICAgICAgICAgICAgIGJ1ZnNpemUgPSAwICAjIFJlc3RvcmUgZGVmYXVsdAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWZzaXplLCBpbnQpOgpAQCAtNjg0LDYgKzc1Niw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY3JlYXRpb25mbGFncyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybXMiKQogCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKICAgICAgICAgc2VsZi5zdGRpbiA9IE5vbmUKICAgICAgICAgc2VsZi5zdGRvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuc3RkZXJyID0gTm9uZQpAQCAtNzI0LDcgKzc5Nyw3IEBACiAKICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgorICAgICAgICAgICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzOgogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkKICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8ub3BlbihjMnByZWFkLCAncmInLCBidWZzaXplKQpAQCAtNzM3LDcgKzgxMCw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9jaGlsZChhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLApAQCAtNzg0LDE5ICs4NTcsMjggQEAKICAgICAgICAgICAgICMgQ2hpbGQgaXMgc3RpbGwgcnVubmluZywga2VlcCB1cyBhbGl2ZSB1bnRpbCB3ZSBjYW4gd2FpdCBvbiBpdC4KICAgICAgICAgICAgIF9hY3RpdmUuYXBwZW5kKHNlbGYpCiAKKyAgICBkZWYgX2dldF9kZXZudWxsKHNlbGYpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgIHNlbGYuX2Rldm51bGwgPSBvcy5vcGVuKG9zLmRldm51bGwsIG9zLk9fUkRXUikKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rldm51bGwKIAotICAgIGRlZiBjb21tdW5pY2F0ZShzZWxmLCBpbnB1dD1Ob25lKToKKyAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbQogICAgICAgICBzdGRvdXQgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yCi0gICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhCi0gICAgICAgIHN0cmluZyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCisgICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZQorICAgICAgICBieXRlcyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCiAgICAgICAgIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KIAogICAgICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLiIiIgogCi0gICAgICAgICMgT3B0aW1pemF0aW9uOiBJZiB3ZSBhcmUgb25seSB1c2luZyBvbmUgcGlwZSwgb3Igbm8gcGlwZSBhdAotICAgICAgICAjIGFsbCwgdXNpbmcgc2VsZWN0KCkgb3IgdGhyZWFkcyBpcyB1bm5lY2Vzc2FyeS4KLSAgICAgICAgaWYgW3NlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycl0uY291bnQoTm9uZSkgPj0gMjoKKyAgICAgICAgaWYgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZCBpbnB1dDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBzZW5kIGlucHV0IGFmdGVyIHN0YXJ0aW5nIGNvbW11bmljYXRpb24iKQorCisgICAgICAgICMgT3B0aW1pemF0aW9uOiBJZiB3ZSBhcmUgbm90IHdvcnJpZWQgYWJvdXQgdGltZW91dHMsIHdlIGhhdmVuJ3QKKyAgICAgICAgIyBzdGFydGVkIGNvbW11bmljYXRpbmcsIGFuZCB3ZSBoYXZlIG9uZSBvciB6ZXJvIHBpcGVzLCB1c2luZyBzZWxlY3QoKQorICAgICAgICAjIG9yIHRocmVhZHMgaXMgdW5uZWNlc3NhcnkuCisgICAgICAgIGlmICh0aW1lb3V0IGlzIE5vbmUgYW5kIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgYW5kCisgICAgICAgICAgICBbc2VsZi5zdGRpbiwgc2VsZi5zdGRvdXQsIHNlbGYuc3RkZXJyXS5jb3VudChOb25lKSA+PSAyKToKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUKICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CkBAIC04MTQsMTUgKzg5Niw0MiBAQAogICAgICAgICAgICAgICAgIHN0ZGVyciA9IF9laW50cl9yZXRyeV9jYWxsKHNlbGYuc3RkZXJyLnJlYWQpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi53YWl0KCkKLSAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQogCi0gICAgICAgIHJldHVybiBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlKGlucHV0LCBlbmR0aW1lLCB0aW1lb3V0KQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBUcnVlCisKKyAgICAgICAgICAgIHN0cyA9IHNlbGYud2FpdCh0aW1lb3V0PXNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpKQorCisgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKIAogICAgIGRlZiBwb2xsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faW50ZXJuYWxfcG9sbCgpCiAKIAorICAgIGRlZiBfcmVtYWluaW5nX3RpbWUoc2VsZiwgZW5kdGltZSk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBfY29tbXVuaWNhdGUgd2hlbiBjb21wdXRpbmcgdGltZW91dHMuIiIiCisgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gZW5kdGltZSAtIF90aW1lKCkKKworCisgICAgZGVmIF9jaGVja190aW1lb3V0KHNlbGYsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICIiIkNvbnZlbmllbmNlIGZvciBjaGVja2luZyBpZiBhIHRpbWVvdXQgaGFzIGV4cGlyZWQuIiIiCisgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBfdGltZSgpID4gZW5kdGltZToKKyAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorCisKICAgICBpZiBtc3dpbmRvd3M6CiAgICAgICAgICMKICAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKQEAgLTgzOSwxMSArOTQ4LDE2IEBACiAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IC0xLCAtMQogCiAgICAgICAgICAgICBpZiBzdGRpbiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX0lOUFVUX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBwMmNyZWFkID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfSU5QVVRfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIHAyY3JlYWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBwMmNyZWFkID0gSGFuZGxlKHAyY3JlYWQpCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gUElQRToKLSAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gSGFuZGxlKHAyY3JlYWQpLCBIYW5kbGUocDJjd3JpdGUpCisgICAgICAgICAgICBlbGlmIHN0ZGluID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgcDJjcmVhZCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGluKQogICAgICAgICAgICAgZWxzZToKQEAgLTg1MiwxMSArOTY2LDE2IEBACiAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShwMmNyZWFkKQogCiAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IF9zdWJwcm9jZXNzLkdldFN0ZEhhbmRsZShfc3VicHJvY2Vzcy5TVERfT1VUUFVUX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX09VVFBVVF9IQU5ETEUpCiAgICAgICAgICAgICAgICAgaWYgYzJwd3JpdGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgXywgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIF8sIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlID0gSGFuZGxlKGMycHdyaXRlKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKF8pCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgotICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3dpbmFwaS5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUgPSBIYW5kbGUoYzJwcmVhZCksIEhhbmRsZShjMnB3cml0ZSkKKyAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZG91dCkKICAgICAgICAgICAgIGVsc2U6CkBAIC04NjUsMTMgKzk4NCwxOCBAQAogICAgICAgICAgICAgYzJwd3JpdGUgPSBzZWxmLl9tYWtlX2luaGVyaXRhYmxlKGMycHdyaXRlKQogCiAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkdldFN0ZEhhbmRsZShfc3VicHJvY2Vzcy5TVERfRVJST1JfSEFORExFKQorICAgICAgICAgICAgICAgIGVycndyaXRlID0gX3dpbmFwaS5HZXRTdGRIYW5kbGUoX3dpbmFwaS5TVERfRVJST1JfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIF8sIGVycndyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IEhhbmRsZShlcnJ3cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShfKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gUElQRToKLSAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlID0gSGFuZGxlKGVycnJlYWQpLCBIYW5kbGUoZXJyd3JpdGUpCiAgICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBjMnB3cml0ZQorICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHNlbGYuX2dldF9kZXZudWxsKCkpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc3RkZXJyKQogICAgICAgICAgICAgZWxzZToKQEAgLTg4NiwyMCArMTAxMCwyMiBAQAogCiAgICAgICAgIGRlZiBfbWFrZV9pbmhlcml0YWJsZShzZWxmLCBoYW5kbGUpOgogICAgICAgICAgICAgIiIiUmV0dXJuIGEgZHVwbGljYXRlIG9mIGhhbmRsZSwgd2hpY2ggaXMgaW5oZXJpdGFibGUiIiIKLSAgICAgICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoX3N1YnByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLCBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MpCisgICAgICAgICAgICBoID0gX3dpbmFwaS5EdXBsaWNhdGVIYW5kbGUoCisgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCAwLCAxLAorICAgICAgICAgICAgICAgIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQorICAgICAgICAgICAgcmV0dXJuIEhhbmRsZShoKQogCiAKICAgICAgICAgZGVmIF9maW5kX3c5eHBvcGVuKHNlbGYpOgogICAgICAgICAgICAgIiIiRmluZCBhbmQgcmV0dXJuIGFic29sdXQgcGF0aCB0byB3OXhwb3Blbi5leGUiIiIKICAgICAgICAgICAgIHc5eHBvcGVuID0gb3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfc3VicHJvY2Vzcy5HZXRNb2R1bGVGaWxlTmFtZSgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKF93aW5hcGkuR2V0TW9kdWxlRmlsZU5hbWUoMCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInc5eHBvcGVuLmV4ZSIpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgogICAgICAgICAgICAgICAgICMgRWVlayAtIGZpbGUtbm90LWZvdW5kIC0gcG9zc2libHkgYW4gZW1iZWRkaW5nCiAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gLSBzZWUgaWYgd2UgY2FuIGxvY2F0ZSBpdCBpbiBzeXMuZXhlY19wcmVmaXgKLSAgICAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWNfcHJlZml4KSwKKyAgICAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmJhc2VfZXhlY19wcmVmaXgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh3OXhwb3Blbik6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGxvY2F0ZSB3OXhwb3Blbi5leGUsIHdoaWNoIGlzICIKQEAgLTkwOSw3ICsxMDM1LDcgQEAKIAogCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCkBAIC05MjYsMTcgKzEwNTIsMTcgQEAKICAgICAgICAgICAgIGlmIHN0YXJ0dXBpbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8gPSBTVEFSVFVQSU5GTygpCiAgICAgICAgICAgICBpZiAtMSBub3QgaW4gKHAyY3JlYWQsIGMycHdyaXRlLCBlcnJ3cml0ZSk6Ci0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfc3VicHJvY2Vzcy5TVEFSVEZfVVNFU1RESEFORExFUworICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU1RESEFORExFUwogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmhTdGRJbnB1dCA9IHAyY3JlYWQKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkT3V0cHV0ID0gYzJwd3JpdGUKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkRXJyb3IgPSBlcnJ3cml0ZQogCiAgICAgICAgICAgICBpZiBzaGVsbDoKLSAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5kd0ZsYWdzIHw9IF9zdWJwcm9jZXNzLlNUQVJURl9VU0VTSE9XV0lORE9XCi0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8ud1Nob3dXaW5kb3cgPSBfc3VicHJvY2Vzcy5TV19ISURFCisgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfd2luYXBpLlNUQVJURl9VU0VTSE9XV0lORE9XCisgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8ud1Nob3dXaW5kb3cgPSBfd2luYXBpLlNXX0hJREUKICAgICAgICAgICAgICAgICBjb21zcGVjID0gb3MuZW52aXJvbi5nZXQoIkNPTVNQRUMiLCAiY21kLmV4ZSIpCiAgICAgICAgICAgICAgICAgYXJncyA9ICd7fSAvYyAie30iJy5mb3JtYXQgKGNvbXNwZWMsIGFyZ3MpCi0gICAgICAgICAgICAgICAgaWYgKF9zdWJwcm9jZXNzLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCisgICAgICAgICAgICAgICAgaWYgKF93aW5hcGkuR2V0VmVyc2lvbigpID49IDB4ODAwMDAwMDAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoY29tc3BlYykubG93ZXIoKSA9PSAiY29tbWFuZC5jb20iKToKICAgICAgICAgICAgICAgICAgICAgIyBXaW45eCwgb3IgdXNpbmcgY29tbWFuZC5jb20gb24gTlQuIFdlIG5lZWQgdG8KICAgICAgICAgICAgICAgICAgICAgIyB1c2UgdGhlIHc5eHBvcGVuIGludGVybWVkaWF0ZSBwcm9ncmFtLiBGb3IgbW9yZQpAQCAtOTUwLDExICsxMDc2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICMgdXNlIGF0IHh4eCIgYW5kIGEgaG9wZWZ1bCB3YXJuaW5nIGFib3V0IHRoZQogICAgICAgICAgICAgICAgICAgICAjIHN0YWJpbGl0eSBvZiB5b3VyIHN5c3RlbS4gIENvc3QgaXMgQ3RybCtDIHdvbid0CiAgICAgICAgICAgICAgICAgICAgICMga2lsbCBjaGlsZHJlbi4KLSAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25mbGFncyB8PSBfc3VicHJvY2Vzcy5DUkVBVEVfTkVXX0NPTlNPTEUKKyAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25mbGFncyB8PSBfd2luYXBpLkNSRUFURV9ORVdfQ09OU09MRQogCiAgICAgICAgICAgICAjIFN0YXJ0IHRoZSBwcm9jZXNzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF9zdWJwcm9jZXNzLkNyZWF0ZVByb2Nlc3MoZXhlY3V0YWJsZSwgYXJncywKKyAgICAgICAgICAgICAgICBocCwgaHQsIHBpZCwgdGlkID0gX3dpbmFwaS5DcmVhdGVQcm9jZXNzKGV4ZWN1dGFibGUsIGFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gc3BlY2lhbCBzZWN1cml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQobm90IGNsb3NlX2ZkcyksCkBAIC05ODEsMTcgKzExMDcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgYzJwd3JpdGUuQ2xvc2UoKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlICE9IC0xOgogICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZS5DbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2Rldm51bGwnKToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5fZGV2bnVsbCkKIAogICAgICAgICAgICAgIyBSZXRhaW4gdGhlIHByb2Nlc3MgaGFuZGxlLCBidXQgY2xvc2UgdGhlIHRocmVhZCBoYW5kbGUKICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gSGFuZGxlKGhwKQogICAgICAgICAgICAgc2VsZi5waWQgPSBwaWQKLSAgICAgICAgICAgIGh0LkNsb3NlKCkKKyAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCiAKICAgICAgICAgZGVmIF9pbnRlcm5hbF9wb2xsKHNlbGYsIF9kZWFkc3RhdGU9Tm9uZSwKLSAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0LAotICAgICAgICAgICAgICAgIF9XQUlUX09CSkVDVF8wPV9zdWJwcm9jZXNzLldBSVRfT0JKRUNUXzAsCi0gICAgICAgICAgICAgICAgX0dldEV4aXRDb2RlUHJvY2Vzcz1fc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3MpOgorICAgICAgICAgICAgICAgIF9XYWl0Rm9yU2luZ2xlT2JqZWN0PV93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdCwKKyAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fd2luYXBpLldBSVRfT0JKRUNUXzAsCisgICAgICAgICAgICAgICAgX0dldEV4aXRDb2RlUHJvY2Vzcz1fd2luYXBpLkdldEV4aXRDb2RlUHJvY2Vzcyk6CiAgICAgICAgICAgICAiIiJDaGVjayBpZiBjaGlsZCBwcm9jZXNzIGhhcyB0ZXJtaW5hdGVkLiAgUmV0dXJucyByZXR1cm5jb2RlCiAgICAgICAgICAgICBhdHRyaWJ1dGUuCiAKQEAgLTEwMDUsMTMgKzExMzMsMjEgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiB3YWl0KHNlbGYpOgorICAgICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUsIGVuZHRpbWU9Tm9uZSk6CiAgICAgICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLiIiIgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcyA9IF93aW5hcGkuSU5GSU5JVEUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBpbnQodGltZW91dCAqIDEwMDApCiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5XYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYuX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zdWJwcm9jZXNzLklORklOSVRFKQotICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gX3dpbmFwaS5XYWl0Rm9yU2luZ2xlT2JqZWN0KHNlbGYuX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X21pbGxpcykKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQgPT0gX3dpbmFwaS5XQUlUX1RJTUVPVVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgdGltZW91dCkKKyAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIApAQCAtMTAyMCwyMiArMTE1NiwyMyBAQAogICAgICAgICAgICAgZmguY2xvc2UoKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICBzdGRvdXQgPSBOb25lICMgUmV0dXJuCi0gICAgICAgICAgICBzdGRlcnIgPSBOb25lICMgUmV0dXJuCi0KLSAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHN0ZG91dCA9IFtdCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZG91dCwgc3Rkb3V0KSkKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHN0ZGVyciA9IFtdCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZGVyciwgc3RkZXJyKSkKLSAgICAgICAgICAgICAgICBzdGRlcnJfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICAgICAgICAgICBzdGRlcnJfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgICMgU3RhcnQgcmVhZGVyIHRocmVhZHMgZmVlZGluZyBpbnRvIGEgbGlzdCBoYW5naW5nIG9mZiBvZiB0aGlzCisgICAgICAgICAgICAjIG9iamVjdCwgdW5sZXNzIHRoZXkndmUgYWxyZWFkeSBiZWVuIHN0YXJ0ZWQuCisgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBhbmQgbm90IGhhc2F0dHIoc2VsZiwgIl9zdGRvdXRfYnVmZiIpOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuc3Rkb3V0LCBzZWxmLl9zdGRvdXRfYnVmZikpCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3RkZXJyX2J1ZmYiKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZGVyciwgc2VsZi5fc3RkZXJyX2J1ZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKICAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKQEAgLTEwNDYsMTAgKzExODMsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQogCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSByZWFkZXIgdGhyZWFkcywgb3IgdGltZSBvdXQuICBJZiB3ZSB0aW1lIG91dCwgdGhlCisgICAgICAgICAgICAjIHRocmVhZHMgcmVtYWluIHJlYWRpbmcgYW5kIHRoZSBmZHMgbGVmdCBvcGVuIGluIGNhc2UgdGhlIHVzZXIKKyAgICAgICAgICAgICMgY2FsbHMgY29tbXVuaWNhdGUgYWdhaW4uCisgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dF90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dF90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisgICAgICAgICAgICBpZiBzZWxmLnN0ZGVyciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuam9pbihzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisKKyAgICAgICAgICAgICMgQ29sbGVjdCB0aGUgb3V0cHV0IGZyb20gYW5kIGNsb3NlIGJvdGggcGlwZXMsIG5vdyB0aGF0IHdlIGtub3cKKyAgICAgICAgICAgICMgYm90aCBoYXZlIGJlZW4gcmVhZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICBzdGRvdXQgPSBOb25lCisgICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXRfdGhyZWFkLmpvaW4oKQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3N0ZG91dF9idWZmCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6Ci0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9zdGRlcnJfYnVmZgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKIAogICAgICAgICAgICAgIyBBbGwgZGF0YSBleGNoYW5nZWQuICBUcmFuc2xhdGUgbGlzdHMgaW50byBzdHJpbmdzLgogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgpAQCAtMTA1Nyw3ICsxMjEyLDYgQEAKICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzdGRlcnJbMF0KIAotICAgICAgICAgICAgc2VsZi53YWl0KCkKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKICAgICAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CkBAIC0xMDc2LDE0ICsxMjMwLDEyIEBACiAgICAgICAgICAgICAiIiJUZXJtaW5hdGVzIHRoZSBwcm9jZXNzCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5UZXJtaW5hdGVQcm9jZXNzKHNlbGYuX2hhbmRsZSwgMSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKHNlbGYuX2hhbmRsZSwgMSkKKyAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBFUlJPUl9BQ0NFU1NfREVOSUVEICh3aW5lcnJvciA1KSBpcyByZWNlaXZlZCB3aGVuIHRoZQogICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbHJlYWR5IGRpZWQuCi0gICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciAhPSA1OgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIHJjID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKLSAgICAgICAgICAgICAgICBpZiByYyA9PSBfc3VicHJvY2Vzcy5TVElMTF9BQ1RJVkU6CisgICAgICAgICAgICAgICAgcmMgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCisgICAgICAgICAgICAgICAgaWYgcmMgPT0gX3dpbmFwaS5TVElMTF9BQ1RJVkU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gcmMKIApAQCAtMTEwNSw2ICsxMjU3LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQorICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkaW4sIGludCk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IHN0ZGluCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTExNSw2ICsxMjY5LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgogICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX2NyZWF0ZV9waXBlKCkKKyAgICAgICAgICAgIGVsaWYgc3Rkb3V0ID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3Rkb3V0LCBpbnQpOgogICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc3Rkb3V0CiAgICAgICAgICAgICBlbHNlOgpAQCAtMTEyNyw2ICsxMjgzLDggQEAKICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9jcmVhdGVfcGlwZSgpCiAgICAgICAgICAgICBlbGlmIHN0ZGVyciA9PSBTVERPVVQ6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBjMnB3cml0ZQorICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IHNlbGYuX2dldF9kZXZudWxsKCkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRlcnIsIGludCk6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzdGRlcnIKICAgICAgICAgICAgIGVsc2U6CkBAIC0xMTQ5LDcgKzEzMDcsNyBAQAogCiAKICAgICAgICAgZGVmIF9leGVjdXRlX2NoaWxkKHNlbGYsIGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwgdW5pdmVyc2FsX25ld2xpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8sIGNyZWF0aW9uZmxhZ3MsIHNoZWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKQEAgLTExNTcsNyArMTMxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uKToKICAgICAgICAgICAgICIiIkV4ZWN1dGUgcHJvZ3JhbSAoUE9TSVggdmVyc2lvbikiIiIKIAotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCBzdHIpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmdzLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgICAgIGFyZ3MgPSBbYXJnc10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXJncyA9IGxpc3QoYXJncykKQEAgLTExNzYsMTQ5ICsxMzM0LDM0IEBACiAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKKyAgICAgICAgICAgICAgICAgICAgIyBtYWxsb2Mgb3IgZnJlZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBhdm9pZAorICAgICAgICAgICAgICAgICAgICAjIHBvdGVudGlhbCBkZWFkbG9ja3MsIHRodXMgd2UgZG8gYWxsIHRoaXMgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQogCi0gICAgICAgICAgICAgICAgICAgIGlmIF9wb3NpeHN1YnByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdlIG11c3QgYXZvaWQgY29tcGxleCB3b3JrIHRoYXQgY291bGQgaW52b2x2ZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBtYWxsb2Mgb3IgZnJlZSBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBhdm9pZAotICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBwYXNzIGl0IHRvIGZvcmtfZXhlYygpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVudiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IFtvcy5mc2VuY29kZShrKSArIGInPScgKyBvcy5mc2VuY29kZSh2KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGVudi5pdGVtcygpXQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IE5vbmUgICMgVXNlIGV4ZWN2IGluc3RlYWQgb2YgZXhlY3ZlLgotICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmZzZW5jb2RlKGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gKGV4ZWN1dGFibGUsKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygb3MuX2V4ZWN2cGUoKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSB0dXBsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKGRpciksIGV4ZWN1dGFibGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gb3MuZ2V0X2V4ZWNfcGF0aChlbnYpKQotICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gX3Bvc2l4c3VicHJvY2Vzcy5mb3JrX2V4ZWMoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGV4ZWN1dGFibGVfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzLCBzb3J0ZWQoZmRzX3RvX2tlZXApLCBjd2QsIGVudl9saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwgYzJwcmVhZCwgYzJwd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscywgc3RhcnRfbmV3X3Nlc3Npb24sIHByZWV4ZWNfZm4pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnZfbGlzdCA9IFtvcy5mc2VuY29kZShrKSArIGInPScgKyBvcy5mc2VuY29kZSh2KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gZW52Lml0ZW1zKCldCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uOiBJdCBpcyBub3QgdGhyZWFkIHNhZmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaW1wbGVtZW50YXRpb24gbWF5IGRlYWRsb2NrIGluIHRoZSBjaGlsZCBpZiB5b3VyCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBhcmVudCBwcm9jZXNzIGhhcyBhbnkgb3RoZXIgdGhyZWFkcyBydW5uaW5nLgotCi0gICAgICAgICAgICAgICAgICAgICAgICBnY193YXNfZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUgZ2MgdG8gYXZvaWQgYnVnIHdoZXJlIGdjIC0+IGZpbGVfZGVhbGxvYyAtPgotICAgICAgICAgICAgICAgICAgICAgICAgIyB3cml0ZSB0byBzdGRlcnIgLT4gaGFuZy4gIFNlZSBpc3N1ZTEzMzYKLSAgICAgICAgICAgICAgICAgICAgICAgIGdjLmRpc2FibGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZ2Nfd2FzX2VuYWJsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBpZCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50J3MgcGlwZSBlbmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UocDJjd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnByZWFkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycmVhZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycGlwZV9yZWFkKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkdXBpbmcgZmRzLCBpZiB0aGVyZSBhcmlzZXMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVyZSBvbmUgb2YgdGhlIGZkcyBpcyBlaXRoZXIgMCwgMSBvciAyLCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHBvc3NpYmxlIHRoYXQgaXQgaXMgb3ZlcndyaXR0ZW4gKCMxMjYwNykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG9zLmR1cChjMnB3cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgPT0gMCBvciBlcnJ3cml0ZSA9PSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBvcy5kdXAoZXJyd3JpdGUpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEdXAgZmRzIGZvciBjaGlsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgX2R1cDIoYSwgYik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGR1cDIoKSByZW1vdmVzIHRoZSBDTE9FWEVDIGZsYWcgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIG11c3QgZG8gaXQgb3Vyc2VsdmVzIGlmIGR1cDIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBhIG5vLW9wIChpc3N1ZSAjMTA4MDYpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYSA9PSBiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhhLCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5kdXAyKGEsIGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKHAyY3JlYWQsIDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKGMycHdyaXRlLCAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVwMihlcnJ3cml0ZSwgMikKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHBpcGUgZmRzLiAgTWFrZSBzdXJlIHdlIGRvbid0IGNsb3NlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNhbWUgZmQgbW9yZSB0aGFuIG9uY2UsIG9yIHN0YW5kYXJkIGZkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZkIGluIFtwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmQgPiAyIGFuZCBmZCBub3QgaW4gY2xvc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZC5hZGQoZmQpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZSBhbGwgb3RoZXIgZmRzLCBpZiBhc2tlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xvc2VfZmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZkcyhmZHNfdG9fa2VlcCkKLQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN3ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBjb3B5IG9mIFB5dGhvbi9weXRob25ydW4uYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIF9QeV9SZXN0b3JlU2lnbmFscygpLiAgSWYgdGhhdCB3ZXJlIGV4cG9zZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcyBhIHN5cy5fcHlfcmVzdG9yZXNpZ25hbHMgZnVuYyBpdCB3b3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJldHRlci4uIGJ1dCB0aGlzIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXNuJ3QgbGlrZWx5IHRvIGJlIHVzZWQgbXVjaCBhbnltb3JlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN0b3JlX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxzID0gKCdTSUdQSVBFJywgJ1NJR1hGWicsICdTSUdYRlNaJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzaWcgaW4gc2lnbmFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNpZ25hbCwgc2lnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChnZXRhdHRyKHNpZ25hbCwgc2lnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuU0lHX0RGTCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGFydF9uZXdfc2Vzc2lvbiBhbmQgaGFzYXR0cihvcywgJ3NldHNpZCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2V0c2lkKCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwcmVleGVjX2ZuOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbigpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZW52IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5leGVjdnAoZXhlY3V0YWJsZSwgYXJncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmV4ZWN2cGUoZXhlY3V0YWJsZSwgYXJncywgZW52KQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfdHlwZSwgZXhjX3ZhbHVlID0gc3lzLmV4Y19pbmZvKClbOjJdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y192YWx1ZSwgT1NFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fbnVtID0gZXhjX3ZhbHVlLmVycm5vCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX251bSA9IDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnJXM6JXg6JXMnICUgKGV4Y190eXBlLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fbnVtLCBleGNfdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoZXJyb3JzPSJzdXJyb2dhdGVwYXNzIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLndyaXRlKGVycnBpcGVfd3JpdGUsIG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIE1VU1Qgbm90IGFsbG93IGFueXRoaW5nIG9kZCBoYXBwZW5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWJvdmUgdG8gcHJldmVudCB1cyBmcm9tIGV4aXRpbmcgYmVsb3cuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZXhpdGNvZGUgd29uJ3QgYmUgcmVwb3J0ZWQgdG8gYXBwbGljYXRpb25zCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzbyBpdCByZWFsbHkgZG9lc24ndCBtYXR0ZXIgd2hhdCB3ZSByZXR1cm4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMjU1KQotCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFBhcmVudAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZ2Nfd2FzX2VuYWJsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2MuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudl9saXN0ID0gTm9uZSAgIyBVc2UgZXhlY3YgaW5zdGVhZCBvZiBleGVjdmUuCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5mc2VuY29kZShleGVjdXRhYmxlKQorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlX2xpc3QgPSAoZXhlY3V0YWJsZSwpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygb3MuX2V4ZWN2cGUoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IHR1cGxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShkaXIpLCBleGVjdXRhYmxlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkaXIgaW4gb3MuZ2V0X2V4ZWNfcGF0aChlbnYpKQorICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcCA9IHNldChwYXNzX2ZkcykKKyAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAuYWRkKGVycnBpcGVfd3JpdGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGlkID0gX3Bvc2l4c3VicHJvY2Vzcy5mb3JrX2V4ZWMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgZXhlY3V0YWJsZV9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcywgc29ydGVkKGZkc190b19rZWVwKSwgY3dkLCBlbnZfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwgYzJwcmVhZCwgYzJwd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscywgc3RhcnRfbmV3X3Nlc3Npb24sIHByZWV4ZWNfZm4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NoaWxkX2NyZWF0ZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgIyBiZSBzdXJlIHRoZSBGRCBpcyBjbG9zZWQgbm8gbWF0dGVyIHdoYXQKICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycGlwZV93cml0ZSkKQEAgLTEzMjksNiArMTM3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGMycHdyaXRlKQogICAgICAgICAgICAgICAgIGlmIGVycndyaXRlICE9IC0xIGFuZCBlcnJyZWFkICE9IC0xOgogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJ3cml0ZSkKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfZGV2bnVsbCcpOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9kZXZudWxsKQogCiAgICAgICAgICAgICAgICAgIyBXYWl0IGZvciBleGVjIHRvIGZhaWwgb3Igc3VjY2VlZDsgcG9zc2libHkgcmFpc2luZyBhbgogICAgICAgICAgICAgICAgICMgZXhjZXB0aW9uIChsaW1pdGVkIGluIHNpemUpCkBAIC0xNDEzLDI1ICsxNDU4LDU3IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIAotICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgZGVmIF90cnlfd2FpdChzZWxmLCB3YWl0X2ZsYWdzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIHdhaXRfZmxhZ3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCisgICAgICAgICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3VyCisgICAgICAgICAgICAgICAgIyBwcm9jZXNzLiAgVGhpcyBjaGlsZCBpcyBkZWFkLCB3ZSBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KKyAgICAgICAgICAgICAgICBwaWQgPSBzZWxmLnBpZAorICAgICAgICAgICAgICAgIHN0cyA9IDAKKyAgICAgICAgICAgIHJldHVybiAocGlkLCBzdHMpCisKKworICAgICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUsIGVuZHRpbWU9Tm9uZSk6CiAgICAgICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLiIiIgotICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwaWQsIHN0cyA9IF9laW50cl9yZXRyeV9jYWxsKG9zLndhaXRwaWQsIHNlbGYucGlkLCAwKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgaWYgU0lHQ0xEIGlzIHNldCB0byBiZSBpZ25vcmVkIG9yIHdhaXRpbmcKLSAgICAgICAgICAgICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3VyCi0gICAgICAgICAgICAgICAgICAgICMgcHJvY2Vzcy4gIFRoaXMgY2hpbGQgaXMgZGVhZCwgd2UgY2FuJ3QgZ2V0IHRoZSBzdGF0dXMuCi0gICAgICAgICAgICAgICAgICAgIHN0cyA9IDAKKyAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCisKKyAgICAgICAgICAgICMgZW5kdGltZSBpcyBwcmVmZXJyZWQgdG8gdGltZW91dC4gIHRpbWVvdXQgaXMgb25seSB1c2VkIGZvcgorICAgICAgICAgICAgIyBwcmludGluZy4KKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmUgb3IgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgIGVsaWYgdGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkKKworICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIEVudGVyIGEgYnVzeSBsb29wIGlmIHdlIGhhdmUgYSB0aW1lb3V0LiAgVGhpcyBidXN5IGxvb3Agd2FzCisgICAgICAgICAgICAgICAgIyBjcmliYmVkIGZyb20gTGliL3RocmVhZGluZy5weSBpbiBUaHJlYWQud2FpdCgpIGF0IHI3MTA2NS4KKyAgICAgICAgICAgICAgICBkZWxheSA9IDAuMDAwNSAjIDUwMCB1cyAtPiBpbml0aWFsIGRlbGF5IG9mIDEgbXMKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gc2VsZi5fdHJ5X3dhaXQob3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHBpZCA9PSBzZWxmLnBpZCBvciBwaWQgPT0gMAorICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgdGltZW91dCkKKyAgICAgICAgICAgICAgICAgICAgZGVsYXkgPSBtaW4oZGVsYXkgKiAyLCByZW1haW5pbmcsIC4wNSkKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChkZWxheSkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgKHBpZCwgc3RzKSA9IHNlbGYuX3RyeV93YWl0KDApCiAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZShzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICBpZiBzZWxmLnN0ZGluOgorICAgICAgICBkZWYgX2NvbW11bmljYXRlKHNlbGYsIGlucHV0LCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKICAgICAgICAgICAgICAgICAjIEZsdXNoIHN0ZGlvIGJ1ZmZlci4gIFRoaXMgbWlnaHQgYmxvY2ssIGlmIHRoZSB1c2VyIGhhcwogICAgICAgICAgICAgICAgICMgYmVlbiB3cml0aW5nIHRvIC5zdGRpbiBpbiBhbiB1bmNvbnRyb2xsZWQgZmFzaGlvbi4KICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmZsdXNoKCkKQEAgLTE0MzksOSArMTUxNiwxMyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKIAogICAgICAgICAgICAgaWYgX2hhc19wb2xsOgotICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9wb2xsKGlucHV0KQorICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9wb2xsKGlucHV0LCBlbmR0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChpbnB1dCkKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KGlucHV0LCBlbmR0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ190aW1lb3V0KQorCisgICAgICAgICAgICBzZWxmLndhaXQodGltZW91dD1zZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKIAogICAgICAgICAgICAgIyBBbGwgZGF0YSBleGNoYW5nZWQuICBUcmFuc2xhdGUgbGlzdHMgaW50byBzdHJpbmdzLgogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgpAQCAtMTQ1OSw2NyArMTU0MCw5MiBAQAogICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZW5jb2RpbmcpCiAKLSAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3BvbGwoc2VsZiwgaW5wdXQpOgorICAgICAgICBkZWYgX3NhdmVfaW5wdXQoc2VsZiwgaW5wdXQpOgorICAgICAgICAgICAgIyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgX2NvbW11bmljYXRlX3dpdGhfKigpIG1ldGhvZHMKKyAgICAgICAgICAgICMgc28gdGhhdCBpZiB3ZSB0aW1lIG91dCB3aGlsZSBjb21tdW5pY2F0aW5nLCB3ZSBjYW4gY29udGludWUKKyAgICAgICAgICAgICMgc2VuZGluZyBpbnB1dCBpZiB3ZSByZXRyeS4KKyAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIHNlbGYuX2lucHV0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ID0gMAorICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gaW5wdXQKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaW5wdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcpCisKKworICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfcG9sbChzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUgIyBSZXR1cm4KICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUgIyBSZXR1cm4KLSAgICAgICAgICAgIGZkMmZpbGUgPSB7fQotICAgICAgICAgICAgZmQyb3V0cHV0ID0ge30KKworICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlID0ge30KIAogICAgICAgICAgICAgcG9sbGVyID0gc2VsZWN0LnBvbGwoKQogICAgICAgICAgICAgZGVmIHJlZ2lzdGVyX2FuZF9hcHBlbmQoZmlsZV9vYmosIGV2ZW50bWFzayk6CiAgICAgICAgICAgICAgICAgcG9sbGVyLnJlZ2lzdGVyKGZpbGVfb2JqLmZpbGVubygpLCBldmVudG1hc2spCi0gICAgICAgICAgICAgICAgZmQyZmlsZVtmaWxlX29iai5maWxlbm8oKV0gPSBmaWxlX29iagorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMmZpbGVbZmlsZV9vYmouZmlsZW5vKCldID0gZmlsZV9vYmoKIAogICAgICAgICAgICAgZGVmIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCk6CiAgICAgICAgICAgICAgICAgcG9sbGVyLnVucmVnaXN0ZXIoZmQpCi0gICAgICAgICAgICAgICAgZmQyZmlsZVtmZF0uY2xvc2UoKQotICAgICAgICAgICAgICAgIGZkMmZpbGUucG9wKGZkKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMmZpbGVbZmRdLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJmaWxlLnBvcChmZCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfYW5kX2FwcGVuZChzZWxmLnN0ZGluLCBzZWxlY3QuUE9MTE9VVCkKIAorICAgICAgICAgICAgIyBPbmx5IGNyZWF0ZSB0aGlzIG1hcHBpbmcgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5LgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXQgPSB7fQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRvdXQuZmlsZW5vKCldID0gW10KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3RkZXJyLmZpbGVubygpXSA9IFtdCisKICAgICAgICAgICAgIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSA9IHNlbGVjdC5QT0xMSU4gfCBzZWxlY3QuUE9MTFBSSQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfYW5kX2FwcGVuZChzZWxmLnN0ZG91dCwgc2VsZWN0X1BPTExJTl9QT0xMUFJJKQotICAgICAgICAgICAgICAgIGZkMm91dHB1dFtzZWxmLnN0ZG91dC5maWxlbm8oKV0gPSBzdGRvdXQgPSBbXQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZG91dC5maWxlbm8oKV0KICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyX2FuZF9hcHBlbmQoc2VsZi5zdGRlcnIsIHNlbGVjdF9QT0xMSU5fUE9MTFBSSSkKLSAgICAgICAgICAgICAgICBmZDJvdXRwdXRbc2VsZi5zdGRlcnIuZmlsZW5vKCldID0gc3RkZXJyID0gW10KKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRlcnIuZmlsZW5vKCldCiAKLSAgICAgICAgICAgIGlucHV0X29mZnNldCA9IDAKLSAgICAgICAgICAgIHdoaWxlIGZkMmZpbGU6CisgICAgICAgICAgICBzZWxmLl9zYXZlX2lucHV0KGlucHV0KQorCisgICAgICAgICAgICB3aGlsZSBzZWxmLl9mZDJmaWxlOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gcG9sbGVyLnBvbGwoKQorICAgICAgICAgICAgICAgICAgICByZWFkeSA9IHBvbGxlci5wb2xsKHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gPT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3RpbWVvdXQoZW5kdGltZSwgb3JpZ190aW1lb3V0KQogCiAgICAgICAgICAgICAgICAgIyBYWFggUmV3cml0ZSB0aGVzZSB0byB1c2Ugbm9uLWJsb2NraW5nIEkvTyBvbiB0aGUKICAgICAgICAgICAgICAgICAjIGZpbGUgb2JqZWN0czsgdGhleSBhcmUgbm8gbG9uZ2VyIHVzaW5nIEMgc3RkaW8hCiAKICAgICAgICAgICAgICAgICBmb3IgZmQsIG1vZGUgaW4gcmVhZHk6CiAgICAgICAgICAgICAgICAgICAgIGlmIG1vZGUgJiBzZWxlY3QuUE9MTE9VVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gaW5wdXRbaW5wdXRfb2Zmc2V0IDogaW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQorICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLl9pbnB1dFtzZWxmLl9pbnB1dF9vZmZzZXQgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ICs9IG9zLndyaXRlKGZkLCBjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoZmQsIGNodW5rKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfb2Zmc2V0ID49IGxlbihpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wdXRfb2Zmc2V0ID49IGxlbihzZWxmLl9pbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBtb2RlICYgc2VsZWN0X1BPTExJTl9QT0xMUFJJOgogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQoZmQsIDQwOTYpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCi0gICAgICAgICAgICAgICAgICAgICAgICBmZDJvdXRwdXRbZmRdLmFwcGVuZChkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmQyb3V0cHV0W2ZkXS5hcHBlbmQoZGF0YSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgSWdub3JlIGhhbmcgdXAgb3IgZXJyb3JzLgogICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQpAQCAtMTUyNyw2MSArMTYzMyw4MyBAQAogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9zZWxlY3Qoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgcmVhZF9zZXQgPSBbXQotICAgICAgICAgICAgd3JpdGVfc2V0ID0gW10KKyAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChzZWxmLCBpbnB1dCwgZW5kdGltZSwgb3JpZ190aW1lb3V0KToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldCA9IFtdCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldC5hcHBlbmQoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3Rkb3V0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRlcnIpCisKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfaW5wdXQoaW5wdXQpCisKICAgICAgICAgICAgIHN0ZG91dCA9IE5vbmUgIyBSZXR1cm4KICAgICAgICAgICAgIHN0ZGVyciA9IE5vbmUgIyBSZXR1cm4KIAotICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgaW5wdXQ6Ci0gICAgICAgICAgICAgICAgd3JpdGVfc2V0LmFwcGVuZChzZWxmLnN0ZGluKQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgcmVhZF9zZXQuYXBwZW5kKHNlbGYuc3Rkb3V0KQotICAgICAgICAgICAgICAgIHN0ZG91dCA9IFtdCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3Rkb3V0X2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3N0ZG91dF9idWZmCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICByZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRlcnIpCi0gICAgICAgICAgICAgICAgc3RkZXJyID0gW10KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fc3RkZXJyX2J1ZmYKIAotICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ID0gMAotICAgICAgICAgICAgd2hpbGUgcmVhZF9zZXQgb3Igd3JpdGVfc2V0OgorICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmVhZF9zZXQgb3Igc2VsZi5fd3JpdGVfc2V0OgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmUgYW5kIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJsaXN0LCB3bGlzdCwgeGxpc3QgPSBzZWxlY3Quc2VsZWN0KHJlYWRfc2V0LCB3cml0ZV9zZXQsIFtdKQorICAgICAgICAgICAgICAgICAgICAocmxpc3QsIHdsaXN0LCB4bGlzdCkgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KHNlbGYuX3JlYWRfc2V0LCBzZWxmLl93cml0ZV9zZXQsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09IGVycm5vLkVJTlRSOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAorICAgICAgICAgICAgICAgICMgQWNjb3JkaW5nIHRvIHRoZSBkb2NzLCByZXR1cm5pbmcgdGhyZWUgZW1wdHkgbGlzdHMgaW5kaWNhdGVzCisgICAgICAgICAgICAgICAgIyB0aGF0IHRoZSB0aW1lb3V0IGV4cGlyZWQuCisgICAgICAgICAgICAgICAgaWYgbm90IChybGlzdCBvciB3bGlzdCBvciB4bGlzdCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorICAgICAgICAgICAgICAgICMgV2UgYWxzbyBjaGVjayB3aGF0IHRpbWUgaXQgaXMgb3Vyc2VsdmVzIGZvciBnb29kIG1lYXN1cmUuCisgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQpCisKICAgICAgICAgICAgICAgICAjIFhYWCBSZXdyaXRlIHRoZXNlIHRvIHVzZSBub24tYmxvY2tpbmcgSS9PIG9uIHRoZQogICAgICAgICAgICAgICAgICMgZmlsZSBvYmplY3RzOyB0aGV5IGFyZSBubyBsb25nZXIgdXNpbmcgQyBzdGRpbyEKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gaW4gd2xpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rID0gaW5wdXRbaW5wdXRfb2Zmc2V0IDogaW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuX2lucHV0W3NlbGYuX2lucHV0X29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ICsgX1BJUEVfQlVGXQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc193cml0dGVuID0gb3Mud3JpdGUoc2VsZi5zdGRpbi5maWxlbm8oKSwgY2h1bmspCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgKz0gYnl0ZXNfd3JpdHRlbgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfb2Zmc2V0ID49IGxlbihpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gYnl0ZXNfd3JpdHRlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5wdXRfb2Zmc2V0ID49IGxlbihzZWxmLl9pbnB1dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0IGluIHJsaXN0OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChzZWxmLnN0ZG91dC5maWxlbm8oKSwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRvdXQpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRvdXQpCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5hcHBlbmQoZGF0YSkKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyIGluIHJsaXN0OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChzZWxmLnN0ZGVyci5maWxlbm8oKSwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5yZW1vdmUoc2VsZi5zdGRlcnIpCiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyci5hcHBlbmQoZGF0YSkKIAogICAgICAgICAgICAgcmV0dXJuIChzdGRvdXQsIHN0ZGVycikKQEAgLTE2MDEsNjggKzE3MjksMyBAQAogICAgICAgICAgICAgIiIiS2lsbCB0aGUgcHJvY2VzcyB3aXRoIFNJR0tJTEwKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5zZW5kX3NpZ25hbChzaWduYWwuU0lHS0lMTCkKLQotCi1kZWYgX2RlbW9fcG9zaXgoKToKLSAgICAjCi0gICAgIyBFeGFtcGxlIDE6IFNpbXBsZSByZWRpcmVjdGlvbjogR2V0IHByb2Nlc3MgbGlzdAotICAgICMKLSAgICBwbGlzdCA9IFBvcGVuKFsicHMiXSwgc3Rkb3V0PVBJUEUpLmNvbW11bmljYXRlKClbMF0KLSAgICBwcmludCgiUHJvY2VzcyBsaXN0OiIpCi0gICAgcHJpbnQocGxpc3QpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDI6IENoYW5nZSB1aWQgYmVmb3JlIGV4ZWN1dGluZyBjaGlsZAotICAgICMKLSAgICBpZiBvcy5nZXR1aWQoKSA9PSAwOgotICAgICAgICBwID0gUG9wZW4oWyJpZCJdLCBwcmVleGVjX2ZuPWxhbWJkYTogb3Muc2V0dWlkKDEwMCkpCi0gICAgICAgIHAud2FpdCgpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDM6IENvbm5lY3Rpbmcgc2V2ZXJhbCBzdWJwcm9jZXNzZXMKLSAgICAjCi0gICAgcHJpbnQoIkxvb2tpbmcgZm9yICdoZGEnLi4uIikKLSAgICBwMSA9IFBvcGVuKFsiZG1lc2ciXSwgc3Rkb3V0PVBJUEUpCi0gICAgcDIgPSBQb3BlbihbImdyZXAiLCAiaGRhIl0sIHN0ZGluPXAxLnN0ZG91dCwgc3Rkb3V0PVBJUEUpCi0gICAgcHJpbnQocmVwcihwMi5jb21tdW5pY2F0ZSgpWzBdKSkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgNDogQ2F0Y2ggZXhlY3V0aW9uIGVycm9yCi0gICAgIwotICAgIHByaW50KCkKLSAgICBwcmludCgiVHJ5aW5nIGEgd2VpcmQgZmlsZS4uLiIpCi0gICAgdHJ5OgotICAgICAgICBwcmludChQb3BlbihbIi90aGlzL3BhdGgvZG9lcy9ub3QvZXhpc3QiXSkuY29tbXVuaWNhdGUoKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgIHByaW50KCJUaGUgZmlsZSBkaWRuJ3QgZXhpc3QuICBJIHRob3VnaHQgc28uLi4iKQotICAgICAgICAgICAgcHJpbnQoIkNoaWxkIHRyYWNlYmFjazoiKQotICAgICAgICAgICAgcHJpbnQoZS5jaGlsZF90cmFjZWJhY2spCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiRXJyb3IiLCBlLmVycm5vKQotICAgIGVsc2U6Ci0gICAgICAgIHByaW50KCJHb3NoLiAgTm8gZXJyb3IuIiwgZmlsZT1zeXMuc3RkZXJyKQotCi0KLWRlZiBfZGVtb193aW5kb3dzKCk6Ci0gICAgIwotICAgICMgRXhhbXBsZSAxOiBDb25uZWN0aW5nIHNldmVyYWwgc3VicHJvY2Vzc2VzCi0gICAgIwotICAgIHByaW50KCJMb29raW5nIGZvciAnUFJPTVBUJyBpbiBzZXQgb3V0cHV0Li4uIikKLSAgICBwMSA9IFBvcGVuKCJzZXQiLCBzdGRvdXQ9UElQRSwgc2hlbGw9VHJ1ZSkKLSAgICBwMiA9IFBvcGVuKCdmaW5kICJQUk9NUFQiJywgc3RkaW49cDEuc3Rkb3V0LCBzdGRvdXQ9UElQRSkKLSAgICBwcmludChyZXByKHAyLmNvbW11bmljYXRlKClbMF0pKQotCi0gICAgIwotICAgICMgRXhhbXBsZSAyOiBTaW1wbGUgZXhlY3V0aW9uIG9mIHByb2dyYW0KLSAgICAjCi0gICAgcHJpbnQoIkV4ZWN1dGluZyBjYWxjLi4uIikKLSAgICBwID0gUG9wZW4oImNhbGMiKQotICAgIHAud2FpdCgpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpZiBtc3dpbmRvd3M6Ci0gICAgICAgIF9kZW1vX3dpbmRvd3MoKQotICAgIGVsc2U6Ci0gICAgICAgIF9kZW1vX3Bvc2l4KCkKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IGIyMTgzZDguLmJhNDAyNGYgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtMSw4ICsxLDggQEAKLSIiIlByb3ZpZGUgYWNjZXNzIHRvIFB5dGhvbidzIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisiIiJBY2Nlc3MgdG8gUHl0aG9uJ3MgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4iIiIKIAotIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cwogZnJvbSBvcy5wYXRoIGltcG9ydCBwYXJkaXIsIHJlYWxwYXRoCiAKIF9fYWxsX18gPSBbCkBAIC0xNyw1MCArMTcsNTAgQEAKICAgICAnZ2V0X3B5dGhvbl92ZXJzaW9uJywKICAgICAnZ2V0X3NjaGVtZV9uYW1lcycsCiAgICAgJ3BhcnNlX2NvbmZpZ19oJywKLSAgICBdCitdCiAKIF9JTlNUQUxMX1NDSEVNRVMgPSB7CiAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdwbGF0bGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOgotICAgICAgICAgICAgJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAorICAgICAgICAgICAgJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKICAgICAgICAgJ3BsYXRpbmNsdWRlJzoKLSAgICAgICAgICAgICd7cGxhdGJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCisgICAgICAgICAgICAne2luc3RhbGxlZF9wbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L2JpbicsCiAgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ3Bvc2l4X2hvbWUnOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAorICAgICAgICAnc3RkbGliJzogJ3tpbnN0YWxsZWRfYmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCi0gICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbicsCi0gICAgICAgICdwbGF0aW5jbHVkZSc6ICd7YmFzZX0vaW5jbHVkZS9weXRob24nLAorICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKKyAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob24nLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne2Jhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAnbnQnOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L0xpYicsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9MaWInLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vTGliJywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YScgICA6ICd7YmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdvczInOiB7Ci0gICAgICAgICdzdGRsaWInOiAne2Jhc2V9L0xpYicsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9MaWInLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7YmFzZX0vTGliJywKICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne2Jhc2V9L0xpYi9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAotICAgICAgICAncGxhdGluY2x1ZGUnOiAne2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAnaW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAorICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9JbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne2Jhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YScgICA6ICd7YmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdvczJfaG9tZSc6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLApAQCAtNjksNyArNjksNyBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L2JpbicsCi0gICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAnbnRfdXNlcic6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fScsCkBAIC03OCw3ICs3OCw3IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9JbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9TY3JpcHRzJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgICdwb3NpeF91c2VyJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgICdvc3hfZnJhbWV3b3JrX3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9uJywKQEAgLTk2LDIwICs5NiwyNiBAQAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob24vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgIH0KIAogX1NDSEVNRV9LRVlTID0gKCdzdGRsaWInLCAncGxhdHN0ZGxpYicsICdwdXJlbGliJywgJ3BsYXRsaWInLCAnaW5jbHVkZScsCiAgICAgICAgICAgICAgICAgJ3NjcmlwdHMnLCAnZGF0YScpCisKKyAjIEZJWE1FIGRvbid0IHJlbHkgb24gc3lzLnZlcnNpb24gaGVyZSwgaXRzIGZvcm1hdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKKyAjIG9mIENQeXRob24sIHVzZSBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5oZXh2ZXJzaW9uCiBfUFlfVkVSU0lPTiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KIF9QWV9WRVJTSU9OX1NIT1JUID0gc3lzLnZlcnNpb25bOjNdCiBfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCiBfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQorX0JBU0VfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpCiBfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjX3ByZWZpeCkKK19CQVNFX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9leGVjX3ByZWZpeCkKIF9DT05GSUdfVkFSUyA9IE5vbmUKIF9VU0VSX0JBU0UgPSBOb25lCiAKKwogZGVmIF9zYWZlX3JlYWxwYXRoKHBhdGgpOgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgpCkBAIC0xMzIsMTkgKzEzOCwzNSBAQAogaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY2J1aWxkXFxhbWQ2NCIgaW4gX1BST0pFQ1RfQkFTRVstMTQ6XS5sb3dlcigpOgogICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyLCBwYXJkaXIpKQogCi1kZWYgaXNfcHl0aG9uX2J1aWxkKCk6CisjIHNldCBmb3IgY3Jvc3MgYnVpbGRzCitpZiAiX1BZVEhPTl9QUk9KRUNUX0JBU0UiIGluIG9zLmVudmlyb246CisgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLmVudmlyb25bIl9QWVRIT05fUFJPSkVDVF9CQVNFIl0pCisKK2RlZiBfaXNfcHl0aG9uX3NvdXJjZV9kaXIoZCk6CiAgICAgZm9yIGZuIGluICgiU2V0dXAuZGlzdCIsICJTZXR1cC5sb2NhbCIpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIk1vZHVsZXMiLCBmbikpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZCwgIk1vZHVsZXMiLCBmbikpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKIAotX1BZVEhPTl9CVUlMRCA9IGlzX3B5dGhvbl9idWlsZCgpCitfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKK2lmIF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZCBcCisgICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdwY2J1aWxkJywgJ3BjYnVpbGRcXGFtZDY0JykpOgorICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCisgICAgaWYgX3N5c19ob21lLmVuZHN3aXRoKCdwY2J1aWxkJyk6ICAgIyBtdXN0IGJlIGFtZDY0CisgICAgICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCitkZWYgaXNfcHl0aG9uX2J1aWxkKGNoZWNrX2hvbWU9RmFsc2UpOgorICAgIGlmIGNoZWNrX2hvbWUgYW5kIF9zeXNfaG9tZToKKyAgICAgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihfc3lzX2hvbWUpCisgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2RpcihfUFJPSkVDVF9CQVNFKQorCitfUFlUSE9OX0JVSUxEID0gaXNfcHl0aG9uX2J1aWxkKFRydWUpCiAKIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgZm9yIHNjaGVtZSBpbiAoJ3Bvc2l4X3ByZWZpeCcsICdwb3NpeF9ob21lJyk6CiAgICAgICAgIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXVsnaW5jbHVkZSddID0gJ3tzcmNkaXJ9L0luY2x1ZGUnCiAgICAgICAgIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXVsncGxhdGluY2x1ZGUnXSA9ICd7cHJvamVjdGJhc2V9Ly4nCiAKKwogZGVmIF9zdWJzdF92YXJzKHMsIGxvY2FsX3ZhcnMpOgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHMuZm9ybWF0KCoqbG9jYWxfdmFycykKQEAgLTE2MSw2ICsxODMsNyBAQAogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdGFyZ2V0X2RpY3Rba2V5XSA9IHZhbHVlCiAKKwogZGVmIF9leHBhbmRfdmFycyhzY2hlbWUsIHZhcnMpOgogICAgIHJlcyA9IHt9CiAgICAgaWYgdmFycyBpcyBOb25lOgpAQCAtMTczLDI5ICsxOTYsNDEgQEAKICAgICAgICAgcmVzW2tleV0gPSBvcy5wYXRoLm5vcm1wYXRoKF9zdWJzdF92YXJzKHZhbHVlLCB2YXJzKSkKICAgICByZXR1cm4gcmVzCiAKKwogZGVmIF9nZXRfZGVmYXVsdF9zY2hlbWUoKToKICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CiAgICAgICAgICMgdGhlIGRlZmF1bHQgc2NoZW1lIGZvciBwb3NpeCBpcyBwb3NpeF9wcmVmaXgKICAgICAgICAgcmV0dXJuICdwb3NpeF9wcmVmaXgnCiAgICAgcmV0dXJuIG9zLm5hbWUKIAorCiBkZWYgX2dldHVzZXJiYXNlKCk6CiAgICAgZW52X2Jhc2UgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVVNFUkJBU0UiLCBOb25lKQorCiAgICAgZGVmIGpvaW51c2VyKCphcmdzKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmpvaW4oKmFyZ3MpKQogCiAgICAgIyB3aGF0IGFib3V0ICdvczJlbXgnLCAncmlzY29zJyA/CiAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICBiYXNlID0gb3MuZW52aXJvbi5nZXQoIkFQUERBVEEiKSBvciAifiIKLSAgICAgICAgcmV0dXJuIGVudl9iYXNlIGlmIGVudl9iYXNlIGVsc2Ugam9pbnVzZXIoYmFzZSwgIlB5dGhvbiIpCisgICAgICAgIGlmIGVudl9iYXNlOgorICAgICAgICAgICAgcmV0dXJuIGVudl9iYXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gam9pbnVzZXIoYmFzZSwgIlB5dGhvbiIpCiAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgIGZyYW1ld29yayA9IGdldF9jb25maWdfdmFyKCJQWVRIT05GUkFNRVdPUksiKQogICAgICAgICBpZiBmcmFtZXdvcms6Ci0gICAgICAgICAgICByZXR1cm4gZW52X2Jhc2UgaWYgZW52X2Jhc2UgZWxzZSBqb2ludXNlcigifiIsICJMaWJyYXJ5IiwgZnJhbWV3b3JrLCAiJWQuJWQiJSgKLSAgICAgICAgICAgICAgICBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCisgICAgICAgICAgICBpZiBlbnZfYmFzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW52X2Jhc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGpvaW51c2VyKCJ+IiwgIkxpYnJhcnkiLCBmcmFtZXdvcmssICIlZC4lZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKIAotICAgIHJldHVybiBlbnZfYmFzZSBpZiBlbnZfYmFzZSBlbHNlIGpvaW51c2VyKCJ+IiwgIi5sb2NhbCIpCisgICAgaWYgZW52X2Jhc2U6CisgICAgICAgIHJldHVybiBlbnZfYmFzZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBqb2ludXNlcigifiIsICIubG9jYWwiKQogCiAKIGRlZiBfcGFyc2VfbWFrZWZpbGUoZmlsZW5hbWUsIHZhcnM9Tm9uZSk6CkBAIC0yMDUsNyArMjQwLDYgQEAKICAgICBvcHRpb25hbCBkaWN0aW9uYXJ5IGlzIHBhc3NlZCBpbiBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LCBpdCBpcwogICAgIHVzZWQgaW5zdGVhZCBvZiBhIG5ldyBkaWN0aW9uYXJ5LgogICAgICIiIgotICAgIGltcG9ydCByZQogICAgICMgUmVnZXhlcyBuZWVkZWQgZm9yIHBhcnNpbmcgTWFrZWZpbGUgKGFuZCBzaW1pbGFyIHN5bnRheGVzLAogICAgICMgbGlrZSBvbGQtc3R5bGUgU2V0dXAgZmlsZXMpLgogICAgIF92YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUoIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQpAQCAtMjY3LDcgKzMwMSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBvcy5lbnZpcm9uW25dCiAKICAgICAgICAgICAgICAgICBlbGlmIG4gaW4gcmVuYW1lZF92YXJpYWJsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnUFlfJykgYW5kIG5hbWVbMzpdIGluIHJlbmFtZWRfdmFyaWFibGVzOgorICAgICAgICAgICAgICAgICAgICBpZiAobmFtZS5zdGFydHN3aXRoKCdQWV8nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVbMzpdIGluIHJlbmFtZWRfdmFyaWFibGVzKToKICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSAiIgogCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgJ1BZXycgKyBuIGluIG5vdGRvbmU6CkBAIC0zMDAsNyArMzM1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBkb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25lW25hbWVdID0gdmFsdWUKIAotCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgYm9ndXMgdmFyaWFibGUgcmVmZXJlbmNlIChlLmcuICJwcmVmaXg9JC9vcHQvcHl0aG9uIik7CiAgICAgICAgICAgICAgICAgIyBqdXN0IGRyb3AgaXQgc2luY2Ugd2UgY2FuJ3QgZGVhbApAQCAtMzIwLDE0ICszNTQsMTcgQEAKIGRlZiBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKToKICAgICAiIiJSZXR1cm4gdGhlIHBhdGggb2YgdGhlIE1ha2VmaWxlLiIiIgogICAgIGlmIF9QWVRIT05fQlVJTEQ6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIk1ha2VmaWxlIikKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcte317fScuZm9ybWF0KF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ01ha2VmaWxlJykKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgX1BST0pFQ1RfQkFTRSwgIk1ha2VmaWxlIikKKyAgICBpZiBoYXNhdHRyKHN5cywgJ2FiaWZsYWdzJyk6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWctJXMlcycgJSAoX1BZX1ZFUlNJT05fU0hPUlQsIHN5cy5hYmlmbGFncykKKyAgICBlbHNlOgorICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnJworICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZ2V0X3BhdGgoJ3N0ZGxpYicpLCBjb25maWdfZGlyX25hbWUsICdNYWtlZmlsZScpCiAKLQotZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgotICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKK2RlZiBfZ2VuZXJhdGVfcG9zaXhfdmFycygpOgorICAgICIiIkdlbmVyYXRlIHRoZSBQeXRob24gbW9kdWxlIGNvbnRhaW5pbmcgYnVpbGQtdGltZSB2YXJpYWJsZXMuIiIiCisgICAgaW1wb3J0IHBwcmludAorICAgIHZhcnMgPSB7fQogICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgogICAgIG1ha2VmaWxlID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKICAgICB0cnk6CkBAIC0zNTMsNiArMzkwLDE5IEBACiAgICAgaWYgX1BZVEhPTl9CVUlMRDoKICAgICAgICAgdmFyc1snTERTSEFSRUQnXSA9IHZhcnNbJ0JMRFNIQVJFRCddCiAKKyAgICBkZXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnX3N5c2NvbmZpZ2RhdGEucHknKQorICAgIHdpdGggb3BlbihkZXN0ZmlsZSwgJ3cnLCBlbmNvZGluZz0ndXRmOCcpIGFzIGY6CisgICAgICAgIGYud3JpdGUoJyMgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZ2VuZXJhdGVkIGFuZCB1c2VkIGJ5JworICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCisgICAgICAgIGYud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCisgICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWYpCisKK2RlZiBfaW5pdF9wb3NpeCh2YXJzKToKKyAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCisgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKKyAgICB2YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCisKIGRlZiBfaW5pdF9ub25fcG9zaXgodmFycyk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBOVCIiIgogICAgICMgc2V0IGJhc2ljIGluc3RhbGwgZGlyZWN0b3JpZXMKQEAgLTM3Niw3ICs0MjYsNiBAQAogICAgIG9wdGlvbmFsIGRpY3Rpb25hcnkgaXMgcGFzc2VkIGluIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGl0IGlzCiAgICAgdXNlZCBpbnN0ZWFkIG9mIGEgbmV3IGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgaWYgdmFycyBpcyBOb25lOgogICAgICAgICB2YXJzID0ge30KICAgICBkZWZpbmVfcnggPSByZS5jb21waWxlKCIjZGVmaW5lIChbQS1aXVtBLVphLXowLTlfXSspICguKilcbiIpCkBAIC0zODksOCArNDM4LDEwIEBACiAgICAgICAgIG0gPSBkZWZpbmVfcngubWF0Y2gobGluZSkKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIG4sIHYgPSBtLmdyb3VwKDEsIDIpCi0gICAgICAgICAgICB0cnk6IHYgPSBpbnQodikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOiBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdiA9IGludCh2KQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdmFyc1tuXSA9IHYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG0gPSB1bmRlZl9yeC5tYXRjaChsaW5lKQpAQCAtMzk4LDI3ICs0NDksMjkgQEAKICAgICAgICAgICAgICAgICB2YXJzW20uZ3JvdXAoMSldID0gMAogICAgIHJldHVybiB2YXJzCiAKKwogZGVmIGdldF9jb25maWdfaF9maWxlbmFtZSgpOgogICAgICIiIlJldHVybiB0aGUgcGF0aCBvZiBweWNvbmZpZy5oLiIiIgogICAgIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIlBDIikKKyAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIF9QUk9KRUNUX0JBU0UsICJQQyIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbmNfZGlyID0gX1BST0pFQ1RfQkFTRQorICAgICAgICAgICAgaW5jX2RpciA9IF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFCiAgICAgZWxzZToKICAgICAgICAgaW5jX2RpciA9IGdldF9wYXRoKCdwbGF0aW5jbHVkZScpCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihpbmNfZGlyLCAncHljb25maWcuaCcpCiAKKwogZGVmIGdldF9zY2hlbWVfbmFtZXMoKToKICAgICAiIiJSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBzY2hlbWVzIG5hbWVzLiIiIgotICAgIHNjaGVtZXMgPSBsaXN0KF9JTlNUQUxMX1NDSEVNRVMua2V5cygpKQotICAgIHNjaGVtZXMuc29ydCgpCi0gICAgcmV0dXJuIHR1cGxlKHNjaGVtZXMpCisgICAgcmV0dXJuIHR1cGxlKHNvcnRlZChfSU5TVEFMTF9TQ0hFTUVTKSkKKwogCiBkZWYgZ2V0X3BhdGhfbmFtZXMoKToKICAgICAiIiJSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBwYXRocyBuYW1lcy4iIiIKICAgICByZXR1cm4gX1NDSEVNRV9LRVlTCiAKKwogZGVmIGdldF9wYXRocyhzY2hlbWU9X2dldF9kZWZhdWx0X3NjaGVtZSgpLCB2YXJzPU5vbmUsIGV4cGFuZD1UcnVlKToKICAgICAiIiJSZXR1cm4gYSBtYXBwaW5nIGNvbnRhaW5pbmcgYW4gaW5zdGFsbCBzY2hlbWUuCiAKQEAgLTQzMCw2ICs0ODMsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV0KIAorCiBkZWYgZ2V0X3BhdGgobmFtZSwgc2NoZW1lPV9nZXRfZGVmYXVsdF9zY2hlbWUoKSwgdmFycz1Ob25lLCBleHBhbmQ9VHJ1ZSk6CiAgICAgIiIiUmV0dXJuIGEgcGF0aCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzY2hlbWUuCiAKQEAgLTQzNywxNyArNDkxLDE3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGdldF9wYXRocyhzY2hlbWUsIHZhcnMsIGV4cGFuZClbbmFtZV0KIAorCiBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAiIiJXaXRoIG5vIGFyZ3VtZW50cywgcmV0dXJuIGEgZGljdGlvbmFyeSBvZiBhbGwgY29uZmlndXJhdGlvbgogICAgIHZhcmlhYmxlcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCiAKICAgICBPbiBVbml4LCB0aGlzIG1lYW5zIGV2ZXJ5IHZhcmlhYmxlIGRlZmluZWQgaW4gUHl0aG9uJ3MgaW5zdGFsbGVkIE1ha2VmaWxlOwotICAgIE9uIFdpbmRvd3MgYW5kIE1hYyBPUyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KKyAgICBPbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgogCiAgICAgV2l0aCBhcmd1bWVudHMsIHJldHVybiBhIGxpc3Qgb2YgdmFsdWVzIHRoYXQgcmVzdWx0IGZyb20gbG9va2luZyB1cAogICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICBnbG9iYWwgX0NPTkZJR19WQVJTCiAgICAgaWYgX0NPTkZJR19WQVJTIGlzIE5vbmU6CiAgICAgICAgIF9DT05GSUdfVkFSUyA9IHt9CkBAIC00NTksNyArNTEzLDkgQEAKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uJ10gPSBfUFlfVkVSU0lPTgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydiYXNlJ10gPSBfUFJFRklYCisgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX3BsYXRiYXNlJ10gPSBfQkFTRV9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3BsYXRiYXNlJ10gPSBfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydwcm9qZWN0YmFzZSddID0gX1BST0pFQ1RfQkFTRQogICAgICAgICB0cnk6CkBAIC00NzcsODggKzUzMywyOCBAQAogICAgICAgICAjIHRoZSBpbml0LWZ1bmN0aW9uLgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3VzZXJiYXNlJ10gPSBfZ2V0dXNlcmJhc2UoKQogCi0gICAgICAgIGlmICdzcmNkaXInIG5vdCBpbiBfQ09ORklHX1ZBUlM6Ci0gICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gX1BST0pFQ1RfQkFTRQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9zYWZlX3JlYWxwYXRoKF9DT05GSUdfVkFSU1snc3JjZGlyJ10pCi0KLQotICAgICAgICAjIENvbnZlcnQgc3JjZGlyIGludG8gYW4gYWJzb2x1dGUgcGF0aCBpZiBpdCBhcHBlYXJzIG5lY2Vzc2FyeS4KLSAgICAgICAgIyBOb3JtYWxseSBpdCBpcyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgSG93ZXZlciwgZHVyaW5nCi0gICAgICAgICMgdGVzdGluZywgZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IGJlIHJ1bm5pbmcgYSBub24taW5zdGFsbGVkIHB5dGhvbgotICAgICAgICAjIGZyb20gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgotICAgICAgICBpZiBfUFlUSE9OX0JVSUxEIGFuZCBvcy5uYW1lID09ICJwb3NpeCI6Ci0gICAgICAgICAgICBiYXNlID0gX1BST0pFQ1RfQkFTRQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBjd2QgPSBOb25lCi0gICAgICAgICAgICBpZiAobm90IG9zLnBhdGguaXNhYnMoX0NPTkZJR19WQVJTWydzcmNkaXInXSkgYW5kCi0gICAgICAgICAgICAgICAgYmFzZSAhPSBjd2QpOgotICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIHJlbGF0aXZlIGFuZCB3ZSBhcmUgbm90IGluIHRoZSBzYW1lIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICMgYXMgdGhlIGV4ZWN1dGFibGUuIEFzc3VtZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGFuZCBtYWtlIHNyY2RpciBhYnNvbHV0ZS4KLSAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgX0NPTkZJR19WQVJTWydzcmNkaXInXSkKLSAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gb3MucGF0aC5ub3JtcGF0aChzcmNkaXIpCi0KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBvcy51bmFtZSgpWzJdICMgS2VybmVsIHZlcnNpb24gKDguNC4zKQotICAgICAgICAgICAgbWFqb3JfdmVyc2lvbiA9IGludChrZXJuZWxfdmVyc2lvbi5zcGxpdCgnLicpWzBdKQotCi0gICAgICAgICAgICBpZiBtYWpvcl92ZXJzaW9uIDwgODoKLSAgICAgICAgICAgICAgICAjIE9uIE1hYyBPUyBYIGJlZm9yZSAxMC40LCBjaGVjayBpZiAtYXJjaCBhbmQgLWlzeXNyb290Ci0gICAgICAgICAgICAgICAgIyBhcmUgaW4gQ0ZMQUdTIG9yIExERkxBR1MgYW5kIHJlbW92ZSB0aGVtIGlmIHRoZXkgYXJlLgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIG9uIGEgMTAuMyBzeXN0ZW0KLSAgICAgICAgICAgICAgICAjIHVzaW5nIGEgdW5pdmVyc2FsIGJ1aWxkIG9mIHB5dGhvbi4KLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6Ci0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX0NPTkZJR19WQVJTW2tleV0KLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNba2V5XSA9IGZsYWdzCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX0NPTkZJR19WQVJTLmdldCgnc3JjZGlyJywgX1BST0pFQ1RfQkFTRSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKKyAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKKyAgICAgICAgICAgICAgICAjIHRoZW4gaXQgc2hvdWxkIGJlIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAjIGNvbnRhaW5pbmcgTWFrZWZpbGUuCisgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgc3JjZGlyKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBhcmNoaXRlY3R1cmUgZmxhZ3MgdXNpbmcKLSAgICAgICAgICAgICAgICAjIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICMgTk9URTogVGhpcyBuYW1lIHdhcyBpbnRyb2R1Y2VkIGJ5IEFwcGxlIGluIE9TWCAxMC41IGFuZAotICAgICAgICAgICAgICAgICMgaXMgdXNlZCBieSBzZXZlcmFsIHNjcmlwdGluZyBsYW5ndWFnZXMgZGlzdHJpYnV0ZWQgd2l0aAotICAgICAgICAgICAgICAgICMgdGhhdCBPUyByZWxlYXNlLgotICAgICAgICAgICAgICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgICAgIGFyY2ggPSBvcy5lbnZpcm9uWydBUkNIRkxBR1MnXQotICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6CisgICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgbm90IG1lYW5pbmdmdWwgc2luY2UgdGhlIGluc3RhbGxhdGlvbiBpcworICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIE1ha2VmaWxlIHNpbmNlIHdlIGtub3cgaXQKKyAgICAgICAgICAgICAgICAjIGV4aXN0cy4KKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgIF9DT05GSUdfVkFSU1snc3JjZGlyJ10gPSBfc2FmZV9yZWFscGF0aChzcmNkaXIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX0NPTkZJR19WQVJTW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCi0gICAgICAgICAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNba2V5XSA9IGZsYWdzCi0KLSAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIG9uIE9TWCAxMC41IG9yIGxhdGVyIGFuZCB0aGUgdXNlciB0cmllcyB0bwotICAgICAgICAgICAgICAgICMgY29tcGlsZXMgYW4gZXh0ZW5zaW9uIHVzaW5nIGFuIFNESyB0aGF0IGlzIG5vdCBwcmVzZW50Ci0gICAgICAgICAgICAgICAgIyBvbiB0aGUgY3VycmVudCBtYWNoaW5lIGl0IGlzIGJldHRlciB0byBub3QgdXNlIGFuIFNESwotICAgICAgICAgICAgICAgICMgdGhhbiB0byBmYWlsLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRoZSBtYWpvciB1c2VjYXNlIGZvciB0aGlzIGlzIHVzZXJzIHVzaW5nIGEgUHl0aG9uLm9yZwotICAgICAgICAgICAgICAgICMgYmluYXJ5IGluc3RhbGxlciAgb24gT1NYIDEwLjY6IHRoYXQgaW5zdGFsbGVyIHVzZXMKLSAgICAgICAgICAgICAgICAjIHRoZSAxMC40dSBTREssIGJ1dCB0aGF0IFNESyBpcyBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQKLSAgICAgICAgICAgICAgICAjIHdoZW4geW91IGluc3RhbGwgWGNvZGUuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIENGTEFHUyA9IF9DT05GSUdfVkFSUy5nZXQoJ0NGTEFHUycsICcnKQotICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goJy1pc3lzcm9vdFxzKyhcUyspJywgQ0ZMQUdTKQotICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNkayA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNkayk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBvZiBkZXJpdmVkIHZhcmlhYmxlcy4gVGhlc2UgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0ZMQUdTJywgJ1BZX0NGTEFHUycsICdCTERTSEFSRUQnKToKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX0NPTkZJR19WQVJTW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290XHMrXFMrKFxzfCQpJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNba2V5XSA9IGZsYWdzCisgICAgICAgICMgT1MgWCBwbGF0Zm9ybXMgcmVxdWlyZSBzcGVjaWFsIGN1c3RvbWl6YXRpb24gdG8gaGFuZGxlCisgICAgICAgICMgbXVsdGktYXJjaGl0ZWN0dXJlLCBtdWx0aS1vcy12ZXJzaW9uIGluc3RhbGxlcnMKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgX29zeF9zdXBwb3J0LmN1c3RvbWl6ZV9jb25maWdfdmFycyhfQ09ORklHX1ZBUlMpCiAKICAgICBpZiBhcmdzOgogICAgICAgICB2YWxzID0gW10KQEAgLTU2OCw2ICs1NjQsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBfQ09ORklHX1ZBUlMKIAorCiBkZWYgZ2V0X2NvbmZpZ192YXIobmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIHNpbmdsZSB2YXJpYWJsZSB1c2luZyB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCBieQogICAgICdnZXRfY29uZmlnX3ZhcnMoKScuCkBAIC01NzYsNiArNTczLDcgQEAKICAgICAiIiIKICAgICByZXR1cm4gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KG5hbWUpCiAKKwogZGVmIGdldF9wbGF0Zm9ybSgpOgogICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCiAKQEAgLTYwMSw3ICs1OTksNiBAQAogCiAgICAgRm9yIG90aGVyIG5vbi1QT1NJWCBwbGF0Zm9ybXMsIGN1cnJlbnRseSBqdXN0IHJldHVybnMgJ3N5cy5wbGF0Zm9ybScuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAjIHNuaWZmIHN5cy52ZXJzaW9uIGZvciBhcmNoaXRlY3R1cmUuCiAgICAgICAgIHByZWZpeCA9ICIgYml0ICgiCkBAIC02MTcsMTAgKzYxNCwxMyBAQAogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKICAgICBpZiBvcy5uYW1lICE9ICJwb3NpeCIgb3Igbm90IGhhc2F0dHIob3MsICd1bmFtZScpOgotICAgICAgICAjIFhYWCB3aGF0IGFib3V0IHRoZSBhcmNoaXRlY3R1cmU/IE5UIGlzIEludGVsIG9yIEFscGhhLAotICAgICAgICAjIE1hYyBPUyBpcyBNNjhrIG9yIFBQQywgZXRjLgorICAgICAgICAjIFhYWCB3aGF0IGFib3V0IHRoZSBhcmNoaXRlY3R1cmU/IE5UIGlzIEludGVsIG9yIEFscGhhCiAgICAgICAgIHJldHVybiBzeXMucGxhdGZvcm0KIAorICAgICMgU2V0IGZvciBjcm9zcyBidWlsZHMgZXhwbGljaXRseQorICAgIGlmICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQorCiAgICAgIyBUcnkgdG8gZGlzdGluZ3Vpc2ggdmFyaW91cyBmbGF2b3VycyBvZiBVbml4CiAgICAgb3NuYW1lLCBob3N0LCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lID0gb3MudW5hbWUoKQogCkBAIC02NTEsOTcgKzY1MSwxNSBAQAogICAgICAgICByZXR1cm4gIiVzLSVzLiVzIiAlIChvc25hbWUsIHZlcnNpb24sIHJlbGVhc2UpCiAgICAgZWxpZiBvc25hbWVbOjZdID09ICJjeWd3aW4iOgogICAgICAgICBvc25hbWUgPSAiY3lnd2luIgotICAgICAgICByZWxfcmUgPSByZS5jb21waWxlIChyJ1tcZC5dKycpCisgICAgICAgIHJlbF9yZSA9IHJlLmNvbXBpbGUocidbXGQuXSsnKQogICAgICAgICBtID0gcmVsX3JlLm1hdGNoKHJlbGVhc2UpCiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICByZWxlYXNlID0gbS5ncm91cCgpCiAgICAgZWxpZiBvc25hbWVbOjZdID09ICJkYXJ3aW4iOgotICAgICAgICAjCi0gICAgICAgICMgRm9yIG91ciBwdXJwb3Nlcywgd2UnbGwgYXNzdW1lIHRoYXQgdGhlIHN5c3RlbSB2ZXJzaW9uIGZyb20KLSAgICAgICAgIyBkaXN0dXRpbHMnIHBlcnNwZWN0aXZlIGlzIHdoYXQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGlzIHNldAotICAgICAgICAjIHRvLiBUaGlzIG1ha2VzIHRoZSBjb21wYXRpYmlsaXR5IHN0b3J5IGEgYml0IG1vcmUgc2FuZSBiZWNhdXNlIHRoZQotICAgICAgICAjIG1hY2hpbmUgaXMgZ29pbmcgdG8gY29tcGlsZSBhbmQgbGluayBhcyBpZiBpdCB3ZXJlCi0gICAgICAgICMgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULgotICAgICAgICAjCi0gICAgICAgIGNmZ3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotICAgICAgICBtYWN2ZXIgPSBjZmd2YXJzLmdldCgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJykKLQotICAgICAgICBpZiAxOgotICAgICAgICAgICAgIyBBbHdheXMgY2FsY3VsYXRlIHRoZSByZWxlYXNlIG9mIHRoZSBydW5uaW5nIG1hY2hpbmUsCi0gICAgICAgICAgICAjIG5lZWRlZCB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGJ1aWxkIGZhdCBiaW5hcmllcyBvciBub3QuCi0KLSAgICAgICAgICAgIG1hY3JlbGVhc2UgPSBtYWN2ZXIKLSAgICAgICAgICAgICMgR2V0IHRoZSBzeXN0ZW0gdmVyc2lvbi4gUmVhZGluZyB0aGlzIHBsaXN0IGlzIGEgZG9jdW1lbnRlZAotICAgICAgICAgICAgIyB3YXkgdG8gZ2V0IHRoZSBzeXN0ZW0gdmVyc2lvbiAoc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgotICAgICAgICAgICAgIyB0aGUgR2VzdGFsdCBNYW5hZ2VyKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYgPSBvcGVuKCcvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QnKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBXZSdyZSBvbiBhIHBsYWluIGRhcndpbiBib3gsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICMgYmVoYXZpb3VyLgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPGtleT5Qcm9kdWN0VXNlclZpc2libGVWZXJzaW9uPC9rZXk+XHMqJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8c3RyaW5nPiguKj8pPC9zdHJpbmc+JywgZi5yZWFkKCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYWNyZWxlYXNlID0gJy4nLmpvaW4obS5ncm91cCgxKS5zcGxpdCgnLicpWzoyXSkKLSAgICAgICAgICAgICAgICAgICAgIyBlbHNlOiBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0KLSAgICAgICAgaWYgbm90IG1hY3ZlcjoKLSAgICAgICAgICAgIG1hY3ZlciA9IG1hY3JlbGVhc2UKLQotICAgICAgICBpZiBtYWN2ZXI6Ci0gICAgICAgICAgICByZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICBvc25hbWUgPSAibWFjb3N4IgotCi0gICAgICAgICAgICBpZiAobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAnLWFyY2gnIGluIGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJywgJycpLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCi0gICAgICAgICAgICAgICAgIyBzeXN0ZW1zIGJlZm9yZSAxMC40Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVHJ5IHRvIGRldGVjdCA0LXdheSB1bml2ZXJzYWwgYnVpbGRzLCB0aG9zZSBoYXZlIG1hY2hpbmUtdHlwZQotICAgICAgICAgICAgICAgICMgJ3VuaXZlcnNhbCcgaW5zdGVhZCBvZiAnZmF0Jy4KLQotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGNmbGFncyA9IGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJykKLQotICAgICAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKLSAgICAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKLQotICAgICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ludGVsJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAndW5pdmVyc2FsJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IG1hY2hpbmUgdmFsdWUgZm9yIGFyY2hzPSVyIiUoYXJjaHMsKSkKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKLSAgICAgICAgICAgICAgICAjIE9uIE9TWCB0aGUgbWFjaGluZSB0eXBlIHJldHVybmVkIGJ5IHVuYW1lIGlzIGFsd2F5cyB0aGUKLSAgICAgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcwotICAgICAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50Ci0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JwotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgotICAgICAgICAgICAgICAgICMgUGljayBhIHNhbmUgbmFtZSBmb3IgdGhlIFBQQyBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgIyBTZWUgJ2kzODYnIGNhc2UKLSAgICAgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGM2NCcKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYycKKyAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUgPSBfb3N4X3N1cHBvcnQuZ2V0X3BsYXRmb3JtX29zeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKIAogICAgIHJldHVybiAiJXMtJXMtJXMiICUgKG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKIApAQCAtNzQ5LDIxICs2NjcsMjcgQEAKIGRlZiBnZXRfcHl0aG9uX3ZlcnNpb24oKToKICAgICByZXR1cm4gX1BZX1ZFUlNJT05fU0hPUlQKIAorCiBkZWYgX3ByaW50X2RpY3QodGl0bGUsIGRhdGEpOgogICAgIGZvciBpbmRleCwgKGtleSwgdmFsdWUpIGluIGVudW1lcmF0ZShzb3J0ZWQoZGF0YS5pdGVtcygpKSk6CiAgICAgICAgIGlmIGluZGV4ID09IDA6Ci0gICAgICAgICAgICBwcmludCgnezB9OiAnLmZvcm1hdCh0aXRsZSkpCi0gICAgICAgIHByaW50KCdcdHswfSA9ICJ7MX0iJy5mb3JtYXQoa2V5LCB2YWx1ZSkpCisgICAgICAgICAgICBwcmludCgnJXM6ICcgJSAodGl0bGUpKQorICAgICAgICBwcmludCgnXHQlcyA9ICIlcyInICUgKGtleSwgdmFsdWUpKQorCiAKIGRlZiBfbWFpbigpOgogICAgICIiIkRpc3BsYXkgYWxsIGluZm9ybWF0aW9uIHN5c2NvbmZpZyBkZXRhaW5zLiIiIgotICAgIHByaW50KCdQbGF0Zm9ybTogInswfSInLmZvcm1hdChnZXRfcGxhdGZvcm0oKSkpCi0gICAgcHJpbnQoJ1B5dGhvbiB2ZXJzaW9uOiAiezB9IicuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpKSkKLSAgICBwcmludCgnQ3VycmVudCBpbnN0YWxsYXRpb24gc2NoZW1lOiAiezB9IicuZm9ybWF0KF9nZXRfZGVmYXVsdF9zY2hlbWUoKSkpCi0gICAgcHJpbnQoJycpCisgICAgaWYgJy0tZ2VuZXJhdGUtcG9zaXgtdmFycycgaW4gc3lzLmFyZ3Y6CisgICAgICAgIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICAgICAgcmV0dXJuCisgICAgcHJpbnQoJ1BsYXRmb3JtOiAiJXMiJyAlIGdldF9wbGF0Zm9ybSgpKQorICAgIHByaW50KCdQeXRob24gdmVyc2lvbjogIiVzIicgJSBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKKyAgICBwcmludCgnQ3VycmVudCBpbnN0YWxsYXRpb24gc2NoZW1lOiAiJXMiJyAlIF9nZXRfZGVmYXVsdF9zY2hlbWUoKSkKKyAgICBwcmludCgpCiAgICAgX3ByaW50X2RpY3QoJ1BhdGhzJywgZ2V0X3BhdGhzKCkpCi0gICAgcHJpbnQoJycpCisgICAgcHJpbnQoKQogICAgIF9wcmludF9kaWN0KCdWYXJpYWJsZXMnLCBnZXRfY29uZmlnX3ZhcnMoKSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90YWJuYW5ueS5weSBiL0xpYi90YWJuYW5ueS5weQppbmRleCA0NmY4MTYzLi40YTU0Zjg5IDEwMDc1NQotLS0gYS9MaWIvdGFibmFubnkucHkKKysrIGIvTGliL3RhYm5hbm55LnB5CkBAIC0xMjYsNiArMTI2LDkgQEAKICAgICAgICAgICAgIGVsc2U6IHByaW50KGZpbGUsIGJhZGxpbmUsIHJlcHIobGluZSkpCiAgICAgICAgIHJldHVybgogCisgICAgZmluYWxseToKKyAgICAgICAgZi5jbG9zZSgpCisKICAgICBpZiB2ZXJib3NlOgogICAgICAgICBwcmludCgiJXI6IENsZWFuIGJpbGwgb2YgaGVhbHRoLiIgJSAoZmlsZSwpKQogCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IGYyNjk1M2UuLjdiOWY0MDcgMTAwNjQ0Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC0yOSw4ICsyOSw2IEBACiAiIiJSZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRhciBmb3JtYXQgYXJjaGl2ZXMuCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogdmVyc2lvbiAgICAgPSAiMC45LjAiCiBfX2F1dGhvcl9fICA9ICJMYXJzIEd1c3RcdTAwZTRiZWwgKGxhcnNAZ3VzdGFlYmVsLmRlKSIKIF9fZGF0ZV9fICAgID0gIiREYXRlOiAyMDExLTAyLTI1IDE3OjQyOjAxICswMjAwIChGcmksIDI1IEZlYiAyMDExKSAkIgpAQCAtNDIsOSArNDAsOSBAQAogIy0tLS0tLS0tLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgaW8KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0Ci1pbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgY29weQpAQCAtMjQ3LDggKzI0NSw4IEBACiAgICAgICAgdGhlIGhpZ2ggYml0IHNldC4gU28gd2UgY2FsY3VsYXRlIHR3byBjaGVja3N1bXMsIHVuc2lnbmVkIGFuZAogICAgICAgIHNpZ25lZC4KICAgICAiIiIKLSAgICB1bnNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFjaygiMTQ4QiIsIGJ1Zls6MTQ4XSkgKyBzdHJ1Y3QudW5wYWNrKCIzNTZCIiwgYnVmWzE1Njo1MTJdKSkKLSAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2soIjE0OGIiLCBidWZbOjE0OF0pICsgc3RydWN0LnVucGFjaygiMzU2YiIsIGJ1ZlsxNTY6NTEyXSkpCisgICAgdW5zaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Qjh4MzU2QiIsIGJ1ZikpCisgICAgc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrX2Zyb20oIjE0OGI4eDM1NmIiLCBidWYpKQogICAgIHJldHVybiB1bnNpZ25lZF9jaGtzdW0sIHNpZ25lZF9jaGtzdW0KIAogZGVmIGNvcHlmaWxlb2JqKHNyYywgZHN0LCBsZW5ndGg9Tm9uZSk6CkBAIC0yNzYsNDcgKzI3NCwxMyBAQAogICAgICAgICBkc3Qud3JpdGUoYnVmKQogICAgIHJldHVybgogCi1maWxlbW9kZV90YWJsZSA9ICgKLSAgICAoKFNfSUZMTkssICAgICAgImwiKSwKLSAgICAgKFNfSUZSRUcsICAgICAgIi0iKSwKLSAgICAgKFNfSUZCTEssICAgICAgImIiKSwKLSAgICAgKFNfSUZESVIsICAgICAgImQiKSwKLSAgICAgKFNfSUZDSFIsICAgICAgImMiKSwKLSAgICAgKFNfSUZJRk8sICAgICAgInAiKSksCi0KLSAgICAoKFRVUkVBRCwgICAgICAgInIiKSwpLAotICAgICgoVFVXUklURSwgICAgICAidyIpLCksCi0gICAgKChUVUVYRUN8VFNVSUQsICJzIiksCi0gICAgIChUU1VJRCwgICAgICAgICJTIiksCi0gICAgIChUVUVYRUMsICAgICAgICJ4IikpLAotCi0gICAgKChUR1JFQUQsICAgICAgICJyIiksKSwKLSAgICAoKFRHV1JJVEUsICAgICAgInciKSwpLAotICAgICgoVEdFWEVDfFRTR0lELCAicyIpLAotICAgICAoVFNHSUQsICAgICAgICAiUyIpLAotICAgICAoVEdFWEVDLCAgICAgICAieCIpKSwKLQotICAgICgoVE9SRUFELCAgICAgICAiciIpLCksCi0gICAgKChUT1dSSVRFLCAgICAgICJ3IiksKSwKLSAgICAoKFRPRVhFQ3xUU1ZUWCwgInQiKSwKLSAgICAgKFRTVlRYLCAgICAgICAgIlQiKSwKLSAgICAgKFRPRVhFQywgICAgICAgIngiKSkKLSkKLQogZGVmIGZpbGVtb2RlKG1vZGUpOgotICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybQotICAgICAgIC1yd3hyd3hyd3guCi0gICAgICAgVXNlZCBieSBUYXJGaWxlLmxpc3QoKQotICAgICIiIgotICAgIHBlcm0gPSBbXQotICAgIGZvciB0YWJsZSBpbiBmaWxlbW9kZV90YWJsZToKLSAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKLSAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgotICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKLSAgICByZXR1cm4gIiIuam9pbihwZXJtKQorICAgICIiIkRlcHJlY2F0ZWQgaW4gdGhpcyBsb2NhdGlvbjsgdXNlIHN0YXQuZmlsZW1vZGUuIiIiCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigiZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBzdGF0LmZpbGVtb2RlIiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShtb2RlKQorCiAKIGNsYXNzIFRhckVycm9yKEV4Y2VwdGlvbik6CiAgICAgIiIiQmFzZSBleGNlcHRpb24uIiIiCkBAIC00MjMsMTAgKzM4NywxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpCiAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZF9neigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gemxpYi5lcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfd3JpdGVfZ3ooKQogCi0gICAgICAgICAgICBpZiBjb21wdHlwZSA9PSAiYnoyIjoKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gImJ6MiI6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgYnoyCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDM0LDggKzM5OSwyNSBAQAogICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBJT0Vycm9yCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gInh6IjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBsem1hCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJsem1hIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYnVmID0gYiIiCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBsem1hLkxaTUFFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgIT0gInRhciI6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigidW5rbm93biBjb21wcmVzc2lvbiB0eXBlICVyIiAlIGNvbXB0eXBlKQorCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leHRmaWxlb2JqOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCkBAIC01ODcsNyArNTY5LDcgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuY21wLmRlY29tcHJlc3MoYnVmKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc2VsZi5leGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSIpCiAgICAgICAgICAgICBzZWxmLmRidWYgKz0gYnVmCiAgICAgICAgICAgICBjICs9IGxlbihidWYpCkBAIC02MjUsNzYgKzYwNywxOSBAQAogICAgICAgICByZXR1cm4gc2VsZi5idWYKIAogICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5idWYuc3RhcnRzd2l0aChiIlwwMzdcMjEzXDAxMCIpOgorICAgICAgICBpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKGIiXHgxZlx4OGJceDA4Iik6CiAgICAgICAgICAgICByZXR1cm4gImd6IgotICAgICAgICBpZiBzZWxmLmJ1ZlswOjNdID09IGIiQlpoIiBhbmQgc2VsZi5idWZbNDoxMF0gPT0gYiIxQVkmU1kiOgorICAgICAgICBlbGlmIHNlbGYuYnVmWzA6M10gPT0gYiJCWmgiIGFuZCBzZWxmLmJ1Zls0OjEwXSA9PSBiIjFBWSZTWSI6CiAgICAgICAgICAgICByZXR1cm4gImJ6MiIKLSAgICAgICAgcmV0dXJuICJ0YXIiCisgICAgICAgIGVsaWYgc2VsZi5idWYuc3RhcnRzd2l0aCgoYiJceDVkXHgwMFx4MDBceDgwIiwgYiJceGZkN3pYWiIpKToKKyAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gInRhciIKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICMgY2xhc3MgU3RyZWFtUHJveHkKIAotY2xhc3MgX0JaMlByb3h5KG9iamVjdCk6Ci0gICAgIiIiU21hbGwgcHJveHkgY2xhc3MgdGhhdCBlbmFibGVzIGV4dGVybmFsIGZpbGUgb2JqZWN0Ci0gICAgICAgc3VwcG9ydCBmb3IgInI6YnoyIiBhbmQgInc6YnoyIiBtb2Rlcy4gVGhpcyBpcyBhY3R1YWxseQotICAgICAgIGEgd29ya2Fyb3VuZCBmb3IgYSBsaW1pdGF0aW9uIGluIGJ6MiBtb2R1bGUncyBCWjJGaWxlCi0gICAgICAgY2xhc3Mgd2hpY2ggKHVubGlrZSBnemlwLkd6aXBGaWxlKSBoYXMgbm8gc3VwcG9ydCBmb3IKLSAgICAgICBhIGZpbGUgb2JqZWN0IGFyZ3VtZW50LgotICAgICIiIgotCi0gICAgYmxvY2tzaXplID0gMTYgKiAxMDI0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSk6Ci0gICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKLSAgICAgICAgc2VsZi5tb2RlID0gbW9kZQotICAgICAgICBzZWxmLm5hbWUgPSBnZXRhdHRyKHNlbGYuZmlsZW9iaiwgIm5hbWUiLCBOb25lKQotICAgICAgICBzZWxmLmluaXQoKQotCi0gICAgZGVmIGluaXQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBiejIKLSAgICAgICAgc2VsZi5wb3MgPSAwCi0gICAgICAgIGlmIHNlbGYubW9kZSA9PSAiciI6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgIHNlbGYuYnVmID0gYiIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB4ID0gbGVuKHNlbGYuYnVmKQotICAgICAgICB3aGlsZSB4IDwgc2l6ZToKLSAgICAgICAgICAgIHJhdyA9IHNlbGYuZmlsZW9iai5yZWFkKHNlbGYuYmxvY2tzaXplKQotICAgICAgICAgICAgaWYgbm90IHJhdzoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZGF0YSA9IHNlbGYuYnoyb2JqLmRlY29tcHJlc3MocmF3KQotICAgICAgICAgICAgc2VsZi5idWYgKz0gZGF0YQotICAgICAgICAgICAgeCArPSBsZW4oZGF0YSkKLQotICAgICAgICBidWYgPSBzZWxmLmJ1Zls6c2l6ZV0KLSAgICAgICAgc2VsZi5idWYgPSBzZWxmLmJ1ZltzaXplOl0KLSAgICAgICAgc2VsZi5wb3MgKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHNlZWsoc2VsZiwgcG9zKToKLSAgICAgICAgaWYgcG9zIDwgc2VsZi5wb3M6Ci0gICAgICAgICAgICBzZWxmLmluaXQoKQotICAgICAgICBzZWxmLnJlYWQocG9zIC0gc2VsZi5wb3MpCi0KLSAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucG9zCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYucG9zICs9IGxlbihkYXRhKQotICAgICAgICByYXcgPSBzZWxmLmJ6Mm9iai5jb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUocmF3KQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1vZGUgPT0gInciOgotICAgICAgICAgICAgcmF3ID0gc2VsZi5iejJvYmouZmx1c2goKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHJhdykKLSMgY2xhc3MgX0JaMlByb3h5Ci0KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRXh0cmFjdGlvbiBmaWxlIG9iamVjdAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzA5LDYgKzYzNCw4IEBACiAgICAgICAgIHNlbGYub2Zmc2V0ID0gb2Zmc2V0CiAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IDAKKyAgICAgICAgc2VsZi5uYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAibmFtZSIsIE5vbmUpCisgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKIAogICAgICAgICBpZiBibG9ja2luZm8gaXMgTm9uZToKICAgICAgICAgICAgIGJsb2NraW5mbyA9IFsoMCwgc2l6ZSldCkBAIC03MjcsMTAgKzY1NCwxNiBAQAogICAgICAgICBpZiBsYXN0cG9zIDwgc2VsZi5zaXplOgogICAgICAgICAgICAgc2VsZi5tYXAuYXBwZW5kKChGYWxzZSwgbGFzdHBvcywgc2VsZi5zaXplLCBOb25lKSkKIAorICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5maWxlb2JqLCAic2Vla2FibGUiKToKLSAgICAgICAgICAgICMgWFhYIGd6aXAuR3ppcEZpbGUgYW5kIGJ6Mi5CWjJGaWxlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqLnNlZWthYmxlKCkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtNzM4LDEwICs2NzEsMjEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnBvc2l0aW9uCiAKLSAgICBkZWYgc2VlayhzZWxmLCBwb3NpdGlvbik6CisgICAgZGVmIHNlZWsoc2VsZiwgcG9zaXRpb24sIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgICIiIlNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYucG9zaXRpb24gPSBwb3NpdGlvbgorICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19TRVQ6CisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3NpdGlvbiwgMCksIHNlbGYuc2l6ZSkKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICBpZiBwb3NpdGlvbiA8IDA6CisgICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChzZWxmLnBvc2l0aW9uICsgcG9zaXRpb24sIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvc2l0aW9uLCBzZWxmLnNpemUpCisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfRU5EOgorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChtaW4oc2VsZi5zaXplICsgcG9zaXRpb24sIHNlbGYuc2l6ZSksIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IikKKyAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgICIiIlJlYWQgZGF0YSBmcm9tIHRoZSBmaWxlLgpAQCAtNzcwLDE0NSArNzE0LDIyIEBACiAgICAgICAgICAgICBzaXplIC09IGxlbmd0aAogICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW5ndGgKICAgICAgICAgcmV0dXJuIGJ1ZgotI2NsYXNzIF9GaWxlSW5GaWxlCiAKLQotY2xhc3MgRXhGaWxlT2JqZWN0KG9iamVjdCk6Ci0gICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KLSAgICAgICBJcyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkuCi0gICAgIiIiCi0gICAgYmxvY2tzaXplID0gMTAyNAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmZpbGUsIHRhcmluZm8pOgotICAgICAgICBzZWxmLmZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8ub2Zmc2V0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5zcGFyc2UpCi0gICAgICAgIHNlbGYubmFtZSA9IHRhcmluZm8ubmFtZQotICAgICAgICBzZWxmLm1vZGUgPSAiciIKLSAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnNpemUgPSB0YXJpbmZvLnNpemUKLQotICAgICAgICBzZWxmLnBvc2l0aW9uID0gMAotICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotCi0gICAgZGVmIHJlYWRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHdyaXRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iai5zZWVrYWJsZSgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgotICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcyBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIG5vdAotICAgICAgICAgICBwcmVzZW50IG9yIE5vbmUsIHJlYWQgYWxsIGRhdGEgdW50aWwgRU9GIGlzIHJlYWNoZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIGJ1ZiA9IGIiIgotICAgICAgICBpZiBzZWxmLmJ1ZmZlcjoKLSAgICAgICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuYnVmZmVyWzpzaXplXQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gc2VsZi5idWZmZXJbc2l6ZTpdCi0KLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgYnVmICs9IHNlbGYuZmlsZW9iai5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1ZiArPSBzZWxmLmZpbGVvYmoucmVhZChzaXplIC0gbGVuKGJ1ZikpCi0KLSAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW4oYnVmKQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICAjIFhYWCBUZXh0SU9XcmFwcGVyIHVzZXMgdGhlIHJlYWQxKCkgbWV0aG9kLgotICAgIHJlYWQxID0gcmVhZAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICAiIiJSZWFkIG9uZSBlbnRpcmUgbGluZSBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIHByZXNlbnQKLSAgICAgICAgICAgYW5kIG5vbi1uZWdhdGl2ZSwgcmV0dXJuIGEgc3RyaW5nIHdpdGggYXQgbW9zdCB0aGF0Ci0gICAgICAgICAgIHNpemUsIHdoaWNoIG1heSBiZSBhbiBpbmNvbXBsZXRlIGxpbmUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgYnVmID0gc2VsZi5maWxlb2JqLnJlYWQoc2VsZi5ibG9ja3NpemUpCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gYnVmCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZiBvciBiIlxuIiBpbiBidWY6Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICAgICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGxlbihzZWxmLmJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBzaXplICE9IC0xOgotICAgICAgICAgICAgcG9zID0gbWluKHNpemUsIHBvcykKLQotICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcls6cG9zXQotICAgICAgICBzZWxmLmJ1ZmZlciA9IHNlbGYuYnVmZmVyW3BvczpdCi0gICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCB3aXRoIGFsbCByZW1haW5pbmcgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpbmUpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KLQotICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPW9zLlNFRUtfU0VUKToKLSAgICAgICAgIiIiU2VlayB0byBhIHBvc2l0aW9uIGluIHRoZSBmaWxlLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICBpZiB3aGVuY2UgPT0gb3MuU0VFS19TRVQ6Ci0gICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3MsIDApLCBzZWxmLnNpemUpCi0gICAgICAgIGVsaWYgd2hlbmNlID09IG9zLlNFRUtfQ1VSOgotICAgICAgICAgICAgaWYgcG9zIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KHNlbGYucG9zaXRpb24gKyBwb3MsIDApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvcywgc2VsZi5zaXplKQotICAgICAgICBlbGlmIHdoZW5jZSA9PSBvcy5TRUVLX0VORDoKLSAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgobWluKHNlbGYuc2l6ZSArIHBvcywgc2VsZi5zaXplKSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYXJndW1lbnQiKQotCi0gICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKHNlbGYucG9zaXRpb24pCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICBidWYgPSBzZWxmLnJlYWQobGVuKGIpKQorICAgICAgICBiWzpsZW4oYnVmKV0gPSBidWYKKyAgICAgICAgcmV0dXJuIGxlbihidWYpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICIiIkNsb3NlIHRoZSBmaWxlIG9iamVjdC4KLSAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorI2NsYXNzIF9GaWxlSW5GaWxlCiAKLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIkdldCBhbiBpdGVyYXRvciBvdmVyIHRoZSBmaWxlJ3MgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHlpZWxkIGxpbmUKK2NsYXNzIEV4RmlsZU9iamVjdChpby5CdWZmZXJlZFJlYWRlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSwgdGFyaW5mbyk6CisgICAgICAgIGZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosIHRhcmluZm8ub2Zmc2V0X2RhdGEsCisgICAgICAgICAgICAgICAgdGFyaW5mby5zaXplLCB0YXJpbmZvLnNwYXJzZSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmaWxlb2JqKQogI2NsYXNzIEV4RmlsZU9iamVjdAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDg3LDcgKzkwOCw3IEBACiAgICAgZGVmIGNyZWF0ZV9wYXhfZ2xvYmFsX2hlYWRlcihjbHMsIHBheF9oZWFkZXJzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBibG9jayBzZXF1ZW5jZS4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV9wYXhfZ2VuZXJpY19oZWFkZXIocGF4X2hlYWRlcnMsIFhHTFRZUEUsICJ1dGY4IikKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlX3BheF9nZW5lcmljX2hlYWRlcihwYXhfaGVhZGVycywgWEdMVFlQRSwgInV0Zi04IikKIAogICAgIGRlZiBfcG9zaXhfc3BsaXRfbmFtZShzZWxmLCBuYW1lKToKICAgICAgICAgIiIiU3BsaXQgYSBuYW1lIGxvbmdlciB0aGFuIDEwMCBjaGFycyBpbnRvIGEgcHJlZml4CkBAIC0xMTcwLDcgKzk5MSw3IEBACiAgICAgICAgIGJpbmFyeSA9IEZhbHNlCiAgICAgICAgIGZvciBrZXl3b3JkLCB2YWx1ZSBpbiBwYXhfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmOCIsICJzdHJpY3QiKQorICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmLTgiLCAic3RyaWN0IikKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgYmluYXJ5ID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMTgxLDEzICsxMDAyLDEzIEBACiAgICAgICAgICAgICByZWNvcmRzICs9IGIiMjEgaGRyY2hhcnNldD1CSU5BUllcbiIKIAogICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGtleXdvcmQgPSBrZXl3b3JkLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBrZXl3b3JkID0ga2V5d29yZC5lbmNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGlmIGJpbmFyeToKICAgICAgICAgICAgICAgICAjIFRyeSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBieXRlIHJlcHJlc2VudGF0aW9uIG9mIGB2YWx1ZScuCiAgICAgICAgICAgICAgICAgIyBOZWVkbGVzcyB0byBzYXksIHRoYXQgdGhlIGVuY29kaW5nIG11c3QgbWF0Y2ggdGhlIHN0cmluZy4KICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZShlbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgidXRmLTgiKQogCiAgICAgICAgICAgICBsID0gbGVuKGtleXdvcmQpICsgbGVuKHZhbHVlKSArIDMgICAjICcgJyArICc9JyArICdcbicKICAgICAgICAgICAgIG4gPSBwID0gMApAQCAtMTM5Niw3ICsxMjE3LDcgQEAKICAgICAgICAgIyB0aGUgdHJhbnNsYXRpb24gdG8gVVRGLTggZmFpbHMuCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGJyIlxkKyBoZHJjaGFyc2V0PShbXlxuXSspXG4iLCBidWYpCiAgICAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGF4X2hlYWRlcnNbImhkcmNoYXJzZXQiXSA9IG1hdGNoLmdyb3VwKDEpLmRlY29kZSgidXRmOCIpCisgICAgICAgICAgICBwYXhfaGVhZGVyc1siaGRyY2hhcnNldCJdID0gbWF0Y2guZ3JvdXAoMSkuZGVjb2RlKCJ1dGYtOCIpCiAKICAgICAgICAgIyBGb3IgdGhlIHRpbWUgYmVpbmcsIHdlIGRvbid0IGNhcmUgYWJvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiAiQklOQVJZIi4KICAgICAgICAgIyBUaGUgb25seSBvdGhlciB2YWx1ZSB0aGF0IGlzIGN1cnJlbnRseSBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZCBpcwpAQCAtMTQwNSw3ICsxMjI2LDcgQEAKICAgICAgICAgaWYgaGRyY2hhcnNldCA9PSAiQklOQVJZIjoKICAgICAgICAgICAgIGVuY29kaW5nID0gdGFyZmlsZS5lbmNvZGluZwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmOCIKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IgogCiAgICAgICAgICMgUGFyc2UgcGF4IGhlYWRlciBpbmZvcm1hdGlvbi4gQSByZWNvcmQgbG9va3MgbGlrZSB0aGF0OgogICAgICAgICAjICIlZCAlcz0lc1xuIiAlIChsZW5ndGgsIGtleXdvcmQsIHZhbHVlKS4gbGVuZ3RoIGlzIHRoZSBzaXplCkBAIC0xNDIyLDIwICsxMjQzLDIwIEBACiAgICAgICAgICAgICBsZW5ndGggPSBpbnQobGVuZ3RoKQogICAgICAgICAgICAgdmFsdWUgPSBidWZbbWF0Y2guZW5kKDIpICsgMTptYXRjaC5zdGFydCgxKSArIGxlbmd0aCAtIDFdCiAKLSAgICAgICAgICAgICMgTm9ybWFsbHksIHdlIGNvdWxkIGp1c3QgdXNlICJ1dGY4IiBhcyB0aGUgZW5jb2RpbmcgYW5kICJzdHJpY3QiCisgICAgICAgICAgICAjIE5vcm1hbGx5LCB3ZSBjb3VsZCBqdXN0IHVzZSAidXRmLTgiIGFzIHRoZSBlbmNvZGluZyBhbmQgInN0cmljdCIKICAgICAgICAgICAgICMgYXMgdGhlIGVycm9yIGhhbmRsZXIsIGJ1dCB3ZSBiZXR0ZXIgbm90IHRha2UgdGhlIHJpc2suIEZvcgogICAgICAgICAgICAgIyBleGFtcGxlLCBHTlUgdGFyIDw9IDEuMjMgaXMga25vd24gdG8gc3RvcmUgZmlsZW5hbWVzIGl0IGNhbm5vdAogICAgICAgICAgICAgIyB0cmFuc2xhdGUgdG8gVVRGLTggYXMgcmF3IHN0cmluZ3MgKHVuZm9ydHVuYXRlbHkgd2l0aG91dCBhCiAgICAgICAgICAgICAjIGhkcmNoYXJzZXQ9QklOQVJZIGhlYWRlcikuCiAgICAgICAgICAgICAjIFdlIGZpcnN0IHRyeSB0aGUgc3RyaWN0IHN0YW5kYXJkIGVuY29kaW5nLCBhbmQgaWYgdGhhdCBmYWlscyB3ZQogICAgICAgICAgICAgIyBmYWxsIGJhY2sgb24gdGhlIHVzZXIncyBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KLSAgICAgICAgICAgIGtleXdvcmQgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKGtleXdvcmQsICJ1dGY4IiwgInV0ZjgiLAorICAgICAgICAgICAga2V5d29yZCA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQoa2V5d29yZCwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBpZiBrZXl3b3JkIGluIFBBWF9OQU1FX0ZJRUxEUzoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsIGVuY29kaW5nLCB0YXJmaWxlLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgInV0ZjgiLCAidXRmOCIsCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKHZhbHVlLCAidXRmLTgiLCAidXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAKICAgICAgICAgICAgIHBheF9oZWFkZXJzW2tleXdvcmRdID0gdmFsdWUKQEAgLTE1OTUsNyArMTQxNiw3IEBACiAKICAgICB0YXJpbmZvID0gVGFySW5mbyAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBUYXJJbmZvIGNsYXNzIHRvIHVzZS4KIAotICAgIGZpbGVvYmplY3QgPSBFeEZpbGVPYmplY3QgICAjIFRoZSBkZWZhdWx0IEV4RmlsZU9iamVjdCBjbGFzcyB0byB1c2UuCisgICAgZmlsZW9iamVjdCA9IEV4RmlsZU9iamVjdCAgICMgVGhlIGZpbGUtb2JqZWN0IGZvciBleHRyYWN0ZmlsZSgpLgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLApAQCAtMTcxNCwxOCArMTUzNSwyMiBAQAogICAgICAgICAgICAncjonICAgICAgICAgb3BlbiBmb3IgcmVhZGluZyBleGNsdXNpdmVseSB1bmNvbXByZXNzZWQKICAgICAgICAgICAgJ3I6Z3onICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBnemlwIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyOmJ6MicgICAgICBvcGVuIGZvciByZWFkaW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KKyAgICAgICAgICAgJ3I6eHonICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdhJyBvciAnYTonICBvcGVuIGZvciBhcHBlbmRpbmcsIGNyZWF0aW5nIHRoZSBmaWxlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAndycgb3IgJ3c6JyAgb3BlbiBmb3Igd3JpdGluZyB3aXRob3V0IGNvbXByZXNzaW9uCiAgICAgICAgICAgICd3Omd6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbgogICAgICAgICAgICAndzpiejInICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICAgICAgICd3Onh6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggbHptYSBjb21wcmVzc2lvbgogCiAgICAgICAgICAgICdyfConICAgICAgICBvcGVuIGEgc3RyZWFtIG9mIHRhciBibG9ja3Mgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbgogICAgICAgICAgICAncnwnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MgZm9yIHJlYWRpbmcKICAgICAgICAgICAgJ3J8Z3onICAgICAgIG9wZW4gYSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKICAgICAgICAgICAgJ3J8YnoyJyAgICAgIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCisgICAgICAgICAgICdyfHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwogICAgICAgICAgICAnd3wnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgICAgICd3fGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICAnd3xiejInICAgICAgb3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCisgICAgICAgICAgICd3fHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IG5hbWUgYW5kIG5vdCBmaWxlb2JqOgpAQCAtMTgzMiwxMCArMTY1Nyw4IEBACiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImJ6MiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCiAKLSAgICAgICAgaWYgZmlsZW9iaiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBfQloyUHJveHkoZmlsZW9iaiwgbW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShmaWxlb2JqIG9yIG5hbWUsIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQpAQCAtMTg0NSwxMSArMTY2OCwzNSBAQAogICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICAgcmV0dXJuIHQKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB4em9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBwcmVzZXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAiIiJPcGVuIGx6bWEgY29tcHJlc3NlZCB0YXIgYXJjaGl2ZSBuYW1lIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuCisgICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InIG9yICd3JyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGx6bWEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigibHptYSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgZmlsZW9iaiA9IGx6bWEuTFpNQUZpbGUoZmlsZW9iaiBvciBuYW1lLCBtb2RlLCBwcmVzZXQ9cHJlc2V0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IChsem1hLkxaTUFFcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgZmlsZW9iai5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoIm5vdCBhbiBsem1hIGZpbGUiKQorICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHQKKwogICAgICMgQWxsICpvcGVuKCkgbWV0aG9kcyBhcmUgcmVnaXN0ZXJlZCBoZXJlLgogICAgIE9QRU5fTUVUSCA9IHsKICAgICAgICAgInRhciI6ICJ0YXJvcGVuIiwgICAjIHVuY29tcHJlc3NlZCB0YXIKICAgICAgICAgImd6IjogICJnem9wZW4iLCAgICAjIGd6aXAgY29tcHJlc3NlZCB0YXIKLSAgICAgICAgImJ6MiI6ICJiejJvcGVuIiAgICAjIGJ6aXAyIGNvbXByZXNzZWQgdGFyCisgICAgICAgICJiejIiOiAiYnoyb3BlbiIsICAgIyBiemlwMiBjb21wcmVzc2VkIHRhcgorICAgICAgICAieHoiOiAgInh6b3BlbiIgICAgICMgbHptYSBjb21wcmVzc2VkIHRhcgogICAgIH0KIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjAwOSw3ICsxODU2LDcgQEAKIAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBzZWxmOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludChmaWxlbW9kZSh0YXJpbmZvLm1vZGUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBwcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLmduYW1lIG9yIHRhcmluZm8uZ2lkKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBpZiB0YXJpbmZvLmlzY2hyKCkgb3IgdGFyaW5mby5pc2JsaygpOgpAQCAtMjE5MiwxMiArMjAzOSw5IEBACiAKICAgICBkZWYgZXh0cmFjdGZpbGUoc2VsZiwgbWVtYmVyKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuIGBtZW1iZXInIG1heSBiZQotICAgICAgICAgICBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIElmIGBtZW1iZXInIGlzIGEgcmVndWxhciBmaWxlLCBhCi0gICAgICAgICAgIGZpbGUtbGlrZSBvYmplY3QgaXMgcmV0dXJuZWQuIElmIGBtZW1iZXInIGlzIGEgbGluaywgYSBmaWxlLWxpa2UKLSAgICAgICAgICAgb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGxpbmsncyB0YXJnZXQuIElmIGBtZW1iZXInIGlzIG5vbmUgb2YKLSAgICAgICAgICAgdGhlIGFib3ZlLCBOb25lIGlzIHJldHVybmVkLgotICAgICAgICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgbWV0aG9kczogcmVhZCgpLCByZWFkbGluZSgpLCByZWFkbGluZXMoKSwgc2VlaygpIGFuZCB0ZWxsKCkKKyAgICAgICAgICAgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBJZiBgbWVtYmVyJyBpcyBhIHJlZ3VsYXIgZmlsZSBvciBhCisgICAgICAgICAgIGxpbmssIGFuIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBOb25lIGlzCisgICAgICAgICAgIHJldHVybmVkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMjA2LDEyICsyMDUwLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhcmluZm8gPSBtZW1iZXIKIAotICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqZWN0KHNlbGYsIHRhcmluZm8pCi0KLSAgICAgICAgZWxpZiB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKLSAgICAgICAgICAgICMgSWYgYSBtZW1iZXIncyB0eXBlIGlzIHVua25vd24sIGl0IGlzIHRyZWF0ZWQgYXMgYQotICAgICAgICAgICAgIyByZWd1bGFyIGZpbGUuCisgICAgICAgIGlmIHRhcmluZm8uaXNyZWcoKSBvciB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKKyAgICAgICAgICAgICMgTWVtYmVycyB3aXRoIHVua25vd24gdHlwZXMgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBmaWxlcy4KICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmplY3Qoc2VsZiwgdGFyaW5mbykKIAogICAgICAgICBlbGlmIHRhcmluZm8uaXNsbmsoKSBvciB0YXJpbmZvLmlzc3ltKCk6CkBAIC0yMjgzLDkgKzIxMjMsOCBAQAogICAgICAgICAgICAgIyBVc2UgYSBzYWZlIG1vZGUgZm9yIHRoZSBkaXJlY3RvcnksIHRoZSByZWFsIG1vZGUgaXMgc2V0CiAgICAgICAgICAgICAjIGxhdGVyIGluIF9leHRyYWN0X21lbWJlcigpLgogICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCwgMG83MDApCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIG1ha2VmaWxlKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgogICAgICAgICAiIiJNYWtlIGEgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KZGlmZiAtLWdpdCBhL0xpYi90ZW1wZmlsZS5weSBiL0xpYi90ZW1wZmlsZS5weQppbmRleCAzNGRmZjMwLi4zOWViZjVhIDEwMDY0NAotLS0gYS9MaWIvdGVtcGZpbGUucHkKKysrIGIvTGliL3RlbXBmaWxlLnB5CkBAIC0xMCw4ICsxMCw2IEBACiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCiAgICAgICAgICAgICAgZ2l2aW5nIHVwLgotICB0ZW1wbGF0ZSAtIHRoZSBkZWZhdWx0IHByZWZpeCBmb3IgYWxsIHRlbXBvcmFyeSBuYW1lcy4KLSAgICAgICAgICAgICBZb3UgbWF5IGNoYW5nZSB0aGlzIHRvIGNvbnRyb2wgdGhlIGRlZmF1bHQgcHJlZml4LgogICB0ZW1wZGlyICAtIElmIHRoaXMgaXMgc2V0IHRvIGEgc3RyaW5nIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mCiAgICAgICAgICAgICAgYW55IHJvdXRpbmUgZnJvbSB0aGlzIG1vZHVsZSwgaXQgd2lsbCBiZSBjb25zaWRlcmVkIGFzCiAgICAgICAgICAgICAgYW5vdGhlciBjYW5kaWRhdGUgbG9jYXRpb24gdG8gc3RvcmUgdGVtcG9yYXJ5IGZpbGVzLgpAQCAtMzMsNyArMzEsNiBAQAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgaW8gYXMgX2lvCiBpbXBvcnQgb3MgYXMgX29zCi1pbXBvcnQgZXJybm8gYXMgX2Vycm5vCiBmcm9tIHJhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIF9SYW5kb20KIAogdHJ5OgpAQCAtNDUsNyArNDIsNyBAQAogICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmbGFncyA9IF9mY250bC5mY250bChmZCwgX2ZjbnRsLkZfR0VURkQsIDApCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZmxhZ3MgcmVhZCBzdWNjZXNzZnVsbHksIG1vZGlmeQpAQCAtNzQsNiArNzEsOCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAorIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcworIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04NSwxOSArODQsMTYgQEAKIGVsaWYgaGFzYXR0cihfb3MsICJzdGF0Iik6CiAgICAgX3N0YXQgPSBfb3Muc3RhdAogZWxzZToKLSAgICAjIEZhbGxiYWNrLiAgQWxsIHdlIG5lZWQgaXMgc29tZXRoaW5nIHRoYXQgcmFpc2VzIG9zLmVycm9yIGlmIHRoZQorICAgICMgRmFsbGJhY2suICBBbGwgd2UgbmVlZCBpcyBzb21ldGhpbmcgdGhhdCByYWlzZXMgT1NFcnJvciBpZiB0aGUKICAgICAjIGZpbGUgZG9lc24ndCBleGlzdC4KICAgICBkZWYgX3N0YXQoZm4pOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gb3BlbihmbikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBfb3MuZXJyb3IKKyAgICAgICAgZiA9IG9wZW4oZm4pCiAgICAgICAgIGYuY2xvc2UoKQogCiBkZWYgX2V4aXN0cyhmbik6CiAgICAgdHJ5OgogICAgICAgICBfc3RhdChmbikKLSAgICBleGNlcHQgX29zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMTQ5LDcgKzE0NSw3IEBACiAgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgdHJ5OgogICAgICAgICBkaXJsaXN0LmFwcGVuZChfb3MuZ2V0Y3dkKCkpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgX29zLmVycm9yKToKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmN1cmRpcikKIAogICAgIHJldHVybiBkaXJsaXN0CkBAIC0xODEsMTIgKzE3NywxMSBAQAogICAgICAgICAgICAgICAgIF9vcy51bmxpbmsoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgZGVsIGZwLCBmZAogICAgICAgICAgICAgICAgIHJldHVybiBkaXIKLSAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gX2Vycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRU5PRU5ULAotICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvdW5kIGluICVzIiAlIGRpcmxpc3QpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhayAgICMgbm8gcG9pbnQgdHJ5aW5nIG1vcmUgbmFtZXMgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm91bmQgaW4gJXMiICUgZGlybGlzdCkKIAogX25hbWVfc2VxdWVuY2UgPSBOb25lCiAKQEAgLTIxNiwxMiArMjExLDEwIEBACiAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGZpbGUsIGZsYWdzLCAwbzYwMCkKICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZCkKICAgICAgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vID09IF9lcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgY29udGludWUgIyB0cnkgYWdhaW4KLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQogCiAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCkBAIC0zMDUsMTIgKzI5OCwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MubWtkaXIoZmlsZSwgMG83MDApCiAgICAgICAgICAgICByZXR1cm4gZmlsZQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgdHJ5IGFnYWluCi0gICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KIAotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVFWElTVCwgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCiAKIGRlZiBta3RlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKICAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiAgVGhlCkBAIC0zMzksNyArMzMwLDcgQEAKICAgICAgICAgaWYgbm90IF9leGlzdHMoZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZQogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlbmFtZSBmb3VuZCIpCisgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKCJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvdW5kIikKIAogCiBjbGFzcyBfVGVtcG9yYXJ5RmlsZVdyYXBwZXI6CkBAIC01OTIsOCArNTgzLDEzIEBACiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlLnRlbGwoKQogCi0gICAgZGVmIHRydW5jYXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKCkKKyAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZT1Ob25lKToKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzaXplID4gc2VsZi5fbWF4X3NpemU6CisgICAgICAgICAgICAgICAgc2VsZi5yb2xsb3ZlcigpCisgICAgICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKHNpemUpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgIGZpbGUgPSBzZWxmLl9maWxlCkBAIC02NjksNyArNjY1LDcgQEAKICAgICBfaXNsaW5rID0gc3RhdGljbWV0aG9kKF9vcy5wYXRoLmlzbGluaykKICAgICBfcmVtb3ZlID0gc3RhdGljbWV0aG9kKF9vcy5yZW1vdmUpCiAgICAgX3JtZGlyID0gc3RhdGljbWV0aG9kKF9vcy5ybWRpcikKLSAgICBfb3NfZXJyb3IgPSBfb3MuZXJyb3IKKyAgICBfb3NfZXJyb3IgPSBPU0Vycm9yCiAgICAgX3dhcm4gPSBfd2FybmluZ3Mud2FybgogCiAgICAgZGVmIF9ybXRyZWUoc2VsZiwgcGF0aCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkgYi9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkKaW5kZXggNmQyMGY3ZC4uY2Y1NGMyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weQpAQCAtMjAwLDcgKzIwMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ2FiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKEZhbHNlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYidcbicsIGInYWJjXG4nLCBiJ2RlZlxyXG4nLCBiJ2doaVxuJywgYidcciddLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYicnLCBiJ2FiYycsIGInZGVmJywgYidnaGknLCBiJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ1xuJywgYidhYmNcbicsIGInZGVmXHJcbicsIGInZ2hpXG4nLCBiJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFyc2hhbChiJ2FiYycpLnNwbGl0bGluZXMsIDQyLCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRSBiL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRQppbmRleCAyYTczZTFiLi4wMjU5YTA2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUKKysrIGIvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FCkBAIC0xNCwzICsxNCw3IEBACiBPbmNlIHRoZSBjcmFzaCBpcyBmaXhlZCwgdGhlIHRlc3QgY2FzZSBzaG91bGQgYmUgbW92ZWQgaW50byBhbiBhcHByb3ByaWF0ZSB0ZXN0CiAoZXZlbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBmcm9tIHRoZSB0ZXN0IHN1aXRlKS4gIFRoaXMgZW5zdXJlcyB0aGUgcmVncmVzc2lvbgogZG9lc24ndCBoYXBwZW4gYWdhaW4uICBBbmQgaWYgaXQgZG9lcywgaXQgc2hvdWxkIGJlIGVhc2llciB0byB0cmFjayBkb3duLgorCitBbHNvIHNlZSBMaWIvdGVzdF9jcmFzaGVycy5weSB3aGljaCBleGVyY2lzZXMgdGhlIGNyYXNoZXJzIGluIHRoaXMgZGlyZWN0b3J5LgorSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHRvIGFkZCBhbnkgbmV3IGluZmluaXRlIGxvb3AgY3Jhc2hlcnMgdG8gdGhlIGJsYWNrCitsaXN0IHNvIGl0IGRvZXNuJ3QgdHJ5IHRvIHJ1biB0aGVtLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzEucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyZjQ2NC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIHRoZSBjYWxsIGluIGRpY3RvYmplY3QuYy4KLSIiIgotCi1jbGFzcyBBKG9iamVjdCk6Ci0gICAgcGFzcwotCi1jbGFzcyBCKG9iamVjdCk6Ci0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHByaW50KCdoaScpCi0gICAgICAgIGRlbCBELl9fbWlzc2luZ19fCi0KLWNsYXNzIEQoZGljdCk6Ci0gICAgY2xhc3MgX19taXNzaW5nX186Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KLQotZCA9IEQoKQotYSA9IEEoKQotYS5jeWNsZSA9IGEKLWEub3RoZXIgPSBCKCkKLWRlbCBhCi0KLXByZXYgPSBOb25lCi13aGlsZSAxOgotICAgIGRbNV0KLSAgICBwcmV2ID0gKHByZXYsKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzIucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MDNlYi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKCkuCi0KLU5CLiBvbiBteSBtYWNoaW5lIHRoaXMgY3Jhc2hlcyBpbiAyLjUgZGVidWcgYnV0IG5vdCByZWxlYXNlLgotIiIiCi0KLWNsYXNzIEEob2JqZWN0KToKLSAgICBwYXNzCi0KLWNsYXNzIEIob2JqZWN0KToKLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgcHJpbnQoImhpIikKLSAgICAgICAgZGVsIEMuZAotCi1jbGFzcyBEKG9iamVjdCk6Ci0gICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuaGVsbG8gPSA0MgotCi1jbGFzcyBDKG9iamVjdCk6Ci0gICAgZCA9IEQoKQotCi0gICAgZGVmIGcoKToKLSAgICAgICAgcGFzcwotCi0KLWMgPSBDKCkKLWEgPSBBKCkKLWEuY3ljbGUgPSBhCi1hLm90aGVyID0gQigpCi0KLWxzdCA9IFtOb25lXSAqIDEwMDAwMDAKLWkgPSAwCi1kZWwgYQotd2hpbGUgMToKLSAgICBjLmQgPSA0MiAgICAgICAgICMgc2VnZmF1bHRzIGluIFB5TWV0aG9kX05ldyhfX2Z1bmNfXz1ELl9fc2V0X18sIF9fc2VsZl9fPWQpCi0gICAgbHN0W2ldID0gYy5nICAgICAjIGNvbnN1bWUgdGhlIGZyZWUgbGlzdCBvZiBpbnN0YW5jZW1ldGhvZCBvYmplY3RzCi0gICAgaSArPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkKaW5kZXggNDk1NGJkZC4uMzFmMjhhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5CisrKyBiL0xpYi90ZXN0L2NyYXNoZXJzL2NvbXBpbGVyX3JlY3Vyc2lvbi5weQpAQCAtMSw1ICsxLDEzIEBACiAiIiIKLVRoZSBjb21waWxlciAoPj0gMi41KSByZWN1cnNlcyBoYXBwaWx5LgorVGhlIGNvbXBpbGVyICg+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+PiAxMCkpICsgXAotICAgICAgICAgICAgICAgICAgIF91bmljaHIoMHhkYzAwICsgKCh2IC0gMHgxMDAwMCkgJiAweDNmZikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocih2KQotICAgIF9vcmQgPSBvcmQKLSAgICBkZWYgb3JkKGMpOgotICAgICAgICBpZiBsZW4oYykgPT0gMjoKLSAgICAgICAgICAgIHJldHVybiAweDEwMDAwICsgKChfb3JkKGNbMF0pIC0gMHhkODAwKSA8PCAxMCkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvcmQoY1sxXSkgLSAweGRjMDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX29yZChjKQogCiBjbGFzcyBUZXN0QmFzZV9NYXBwaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXNzX2VuY3Rlc3QgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwODBmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdib3RoX3BvcnRpb25zIGZvbyBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzMWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL3R3by5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcCBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzZhOTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbWlzc2luZ19kaXJlY3RvcnkuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjYmVkYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAnaW4gbW9kdWxlJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC9lbXB0eQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QvZW1wdHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25lc3RlZF9wb3J0aW9uMS56aXAgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMjI0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZjVjODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmNWM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5MmUxZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMiBmb28gdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3NmZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwMzdiYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YWJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQvdGhyZWUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdGhyZWUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy90b3BfbGV2ZWxfcG9ydGlvbjEuemlwIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjg2NmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKaW5kZXggNGQ0OTFiMC4uZmIwNDgzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQpAQCAtNCwxMCArNCwxMSBAQAogaW1wb3J0IHBpY2tsZXRvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgY29weXJlZworaW1wb3J0IHdlYWtyZWYKIGZyb20gaHR0cC5jb29raWVzIGltcG9ydCBTaW1wbGVDb29raWUKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKLSAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwKKyAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwgbm9fdHJhY2luZywKICAgICBfMkcsIF80RywgYmlnbWVtdGVzdCwKICAgICApCiAKQEAgLTE4LDcgKzE5LDcgQEAKICMga2luZCBvZiBvdXRlciBsb29wLgogcHJvdG9jb2xzID0gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKQogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCiAKIAogIyBSZXR1cm4gVHJ1ZSBpZiBvcGNvZGUgY29kZSBhcHBlYXJzIGluIHRoZSBwaWNrbGUsIGVsc2UgRmFsc2UuCkBAIC03NDcsNiArNzQ4LDE4IEBACiAgICAgICAgICAgICAgICAgdSA9IHNlbGYubG9hZHMocykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHUpCiAKKyAgICBkZWYgdGVzdF9lbGxpcHNpcyhzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKC4uLiwgcHJvdG8pCisgICAgICAgICAgICB1ID0gc2VsZi5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCguLi4sIHUpCisKKyAgICBkZWYgdGVzdF9ub3RpbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKE5vdEltcGxlbWVudGVkLCBwcm90bykKKyAgICAgICAgICAgIHUgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCB1KQorCiAgICAgIyBUZXN0cyBmb3IgcHJvdG9jb2wgMgogCiAgICAgZGVmIHRlc3RfcHJvdG8oc2VsZik6CkBAIC04ODAsNiArODkzLDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCKHgpLCBCKHkpLCBkZXRhaWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fLCB5Ll9fZGljdF9fLCBkZXRhaWwpCiAKKyAgICBkZWYgdGVzdF9uZXdvYmpfcHJveGllcyhzZWxmKToKKyAgICAgICAgIyBORVdPQkogc2hvdWxkIHVzZSB0aGUgX19jbGFzc19fIHJhdGhlciB0aGFuIHRoZSByYXcgdHlwZQorICAgICAgICBjbGFzc2VzID0gbXljbGFzc2VzWzpdCisgICAgICAgICMgQ2Fubm90IGNyZWF0ZSB3ZWFrcHJveGllcyB0byB0aGVzZSBjbGFzc2VzCisgICAgICAgIGZvciBjIGluIChNeUludCwgTXlUdXBsZSk6CisgICAgICAgICAgICBjbGFzc2VzLnJlbW92ZShjKQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgZm9yIEMgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBCID0gQy5fX2Jhc2VfXworICAgICAgICAgICAgICAgIHggPSBDKEMuc2FtcGxlKQorICAgICAgICAgICAgICAgIHguZm9vID0gNDIKKyAgICAgICAgICAgICAgICBwID0gd2Vha3JlZi5wcm94eSh4KQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHAsIHByb3RvKQorICAgICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHkpLCB0eXBlKHgpKSAgIyByYXRoZXIgdGhhbiB0eXBlKHApCisgICAgICAgICAgICAgICAgZGV0YWlsID0gKHByb3RvLCBDLCBCLCB4LCB5LCB0eXBlKHkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQih4KSwgQih5KSwgZGV0YWlsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeS5fX2RpY3RfXywgZGV0YWlsKQorCiAgICAgIyBSZWdpc3RlciBhIHR5cGUgd2l0aCBjb3B5cmVnLCB3aXRoIGV4dGVuc2lvbiBjb2RlIGV4dGNvZGUuICBQaWNrbGUKICAgICAjIGFuIG9iamVjdCBvZiB0aGF0IHR5cGUuICBDaGVjayB0aGF0IHRoZSByZXN1bHRpbmcgcGlja2xlIHVzZXMgb3Bjb2RlCiAgICAgIyAoRVhUWzEyNF0pIHVuZGVyIHByb3RvIDIsIGFuZCBub3QgaW4gcHJvdG8gMS4KQEAgLTEwNDAsMTMgKzEwNzIsMTMgQEAKICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX3JlZHVjZV9jYWxsZWQsIDEpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZF9nZXRhdHRyKHNlbGYpOgogICAgICAgICB4ID0gQmFkR2V0YXR0cigpCiAgICAgICAgIGZvciBwcm90byBpbiAwLCAxOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmR1bXBzLCB4LCBwcm90bykKICAgICAgICAgIyBwcm90b2NvbCAyIGRvbid0IHJhaXNlIGEgUnVudGltZUVycm9yLgogICAgICAgICBkID0gc2VsZi5kdW1wcyh4LCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYubG9hZHMsIGQpCiAKICAgICBkZWYgdGVzdF9yZWR1Y2VfYmFkX2l0ZXJhdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlNDE3NjogY3Jhc2ggd2hlbiA0dGggYW5kIDV0aCBpdGVtcyBvZiBfX3JlZHVjZV9fKCkKQEAgLTExMzYsNiArMTE2OCwxNSBAQAogICAgICAgICBlbXB0eSA9IHNlbGYubG9hZHMoYidceDgwXHgwM1VceDAwcVx4MDAuJywgZW5jb2Rpbmc9J2tvaTgtcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksICcnKQogCisgICAgZGVmIHRlc3RfaW50X3BpY2tsaW5nX2VmZmljaWVuY3koc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYWNpdHkgb2YgaW50IHJlcHJlc2VudGF0aW9uIChzZWUgaXNzdWUgIzEyNzQ0KQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgc2l6ZXMgPSBbbGVuKHNlbGYuZHVtcHMoMioqbiwgcHJvdG8pKSBmb3IgbiBpbiByYW5nZSg3MCldCisgICAgICAgICAgICAjIHRoZSBzaXplIGZ1bmN0aW9uIGlzIG1vbm90b25pYworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2l6ZXMpLCBzaXplcykKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc2l6ZXNbLTFdLCAxNCkKKwogICAgIGRlZiBjaGVja19uZWdhdGl2ZV8zMmJfYmluWFhYKHNlbGYsIGR1bXBlZCk6CiAgICAgICAgIGlmIHN5cy5tYXhzaXplID4gMioqMzI6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IGlzIG9ubHkgbWVhbmluZ2Z1bCBvbiAzMi1iaXQgYnVpbGRzIikKQEAgLTEyMTcsNyArMTI1OCw3IEBACiAgICAgIyBBbGwgcHJvdG9jb2xzIHVzZSAxLWJ5dGUgcGVyIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXI7IHdlIGFkZCBhbm90aGVyCiAgICAgIyBieXRlIGJlY2F1c2UgdGhlIGVuY29kZWQgZm9ybSBoYXMgdG8gYmUgY29waWVkIGludG8gdGhlIGludGVybmFsIGJ1ZmZlci4KIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGNoYXJhY3Rlcl9zaXplLCBkcnlfcnVuPUZhbHNlKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGFzY2lpX2NoYXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9odWdlX3N0cl8zMmIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGRhdGEgPSAiYWJjZCIgKiAoc2l6ZSAvLyA0KQogICAgICAgICB0cnk6CkBAIC0xMjM0LDcgKzEyNzUsNyBAQAogICAgICMgQklOVU5JQ09ERSAocHJvdG9jb2xzIDEsIDIgYW5kIDMpIGNhbm5vdCBjYXJyeSBtb3JlIHRoYW4KICAgICAjIDIqKjMyIC0gMSBieXRlcyBvZiB1dGYtOCBlbmNvZGVkIHVuaWNvZGUuCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfaHVnZV9zdHJfNjRiKHNlbGYsIHNpemUpOgogICAgICAgICBkYXRhID0gImEiICogc2l6ZQogICAgICAgICB0cnk6CkBAIC0xNTc4LDYgKzE2MTksMTA1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bnBpY2tsZXIubG9hZCgpLCBkYXRhKQogCiAKKyMgVGVzdHMgZm9yIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZQorCitSRURVQ0VfQSA9ICdyZWR1Y2VfQScKKworY2xhc3MgQUFBKG9iamVjdCk6CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfQSwpCisKK2NsYXNzIEJCQihvYmplY3QpOgorICAgIHBhc3MKKworY2xhc3MgQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgIyBObyBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUgYnkgZGVmYXVsdAorICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHAgPSBzZWxmLnBpY2tsZXJfY2xhc3MoZiwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwLmRpc3BhdGNoX3RhYmxlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihwLCAnZGlzcGF0Y2hfdGFibGUnKSkKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBiZSBzcGVjaWZpZWQgY2xhc3Mtd2lkZQorICAgICAgICBkdCA9IHNlbGYuZ2V0X2Rpc3BhdGNoX3RhYmxlKCkKKworICAgICAgICBjbGFzcyBNeVBpY2tsZXIoc2VsZi5waWNrbGVyX2NsYXNzKToKKyAgICAgICAgICAgIGRpc3BhdGNoX3RhYmxlID0gZHQKKworICAgICAgICBkZWYgZHVtcHMob2JqLCBwcm90b2NvbD1Ob25lKToKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIHAgPSBNeVBpY2tsZXIoZiwgcHJvdG9jb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGlzcGF0Y2hfdGFibGUsIGR0KQorICAgICAgICAgICAgcC5kdW1wKG9iaikKKyAgICAgICAgICAgIHJldHVybiBmLmdldHZhbHVlKCkKKworICAgICAgICBzZWxmLl90ZXN0X2Rpc3BhdGNoX3RhYmxlKGR1bXBzLCBkdCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbnN0YW5jZS13aWRlCisgICAgICAgIGR0ID0gc2VsZi5nZXRfZGlzcGF0Y2hfdGFibGUoKQorCisgICAgICAgIGRlZiBkdW1wcyhvYmosIHByb3RvY29sPU5vbmUpOgorICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgcCA9IHNlbGYucGlja2xlcl9jbGFzcyhmLCBwcm90b2NvbCkKKyAgICAgICAgICAgIHAuZGlzcGF0Y2hfdGFibGUgPSBkdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRpc3BhdGNoX3RhYmxlLCBkdCkKKyAgICAgICAgICAgIHAuZHVtcChvYmopCisgICAgICAgICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCisKKyAgICAgICAgc2VsZi5fdGVzdF9kaXNwYXRjaF90YWJsZShkdW1wcywgZHQpCisKKyAgICBkZWYgX3Rlc3RfZGlzcGF0Y2hfdGFibGUoc2VsZiwgZHVtcHMsIGRpc3BhdGNoX3RhYmxlKToKKyAgICAgICAgZGVmIGN1c3RvbV9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMoZHVtcHMob2JqLCAwKSkKKworICAgICAgICBkZWYgZGVmYXVsdF9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9iaiwgMCkpCisKKyAgICAgICAgIyBwaWNrbGluZyBjb21wbGV4IG51bWJlcnMgdXNpbmcgcHJvdG9jb2wgMCByZWxpZXMgb24gY29weXJlZworICAgICAgICAjIHNvIGNoZWNrIHBpY2tsaW5nIGEgY29tcGxleCBudW1iZXIgc3RpbGwgd29ya3MKKyAgICAgICAgeiA9IDEgKyAyagorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoeiksIHopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgY29tcGxleAorICAgICAgICBSRURVQ0VfMSA9ICdyZWR1Y2VfMScKKyAgICAgICAgZGVmIHJlZHVjZV8xKG9iaik6CisgICAgICAgICAgICByZXR1cm4gc3RyLCAoUkVEVUNFXzEsKQorICAgICAgICBkaXNwYXRjaF90YWJsZVtjb21wbGV4XSA9IHJlZHVjZV8xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcCh6KSwgUkVEVUNFXzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBjaGVjayBwaWNrbGFiaWxpdHkgb2YgQUFBIGFuZCBCQkIKKyAgICAgICAgYSA9IEFBQSgpCisgICAgICAgIGIgPSBCQkIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgQkJCCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0JCQl0gPSByZWR1Y2VfMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYiksIFJFRFVDRV8xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyByZXZlcnQgcGlja2xpbmcgb2YgQkJCIGFuZCBtb2RpZnkgcGlja2xpbmcgb2YgQUFBCisgICAgICAgIFJFRFVDRV8yID0gJ3JlZHVjZV8yJworICAgICAgICBkZWYgcmVkdWNlXzIob2JqKToKKyAgICAgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfMiwpCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0FBQV0gPSByZWR1Y2VfMgorICAgICAgICBkZWwgZGlzcGF0Y2hfdGFibGVbQkJCXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV8yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAjIFByaW50IHNvbWUgc3R1ZmYgdGhhdCBjYW4gYmUgdXNlZCB0byByZXdyaXRlIERBVEF7MCwxLDJ9CiAgICAgZnJvbSBwaWNrbGV0b29scyBpbXBvcnQgZGlzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IDI5ZjJiZjAuLmU5NzdlNDIgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yMCw2ICsyMCwxMSBAQAogT3B0aW9uczoKIAogLWgvLS1oZWxwICAgICAgIC0tIHByaW50IHRoaXMgdGV4dCBhbmQgZXhpdAorLS10aW1lb3V0IFRJTUVPVVQKKyAgICAgICAgICAgICAgICAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUKKyAgICAgICAgICAgICAgICAgICB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgIG9yIGVxdWFscyB0byB6ZXJvCistLXdhaXQgICAgICAgICAgLS0gd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciB0byBiZSBhdHRhY2hlZAogCiBWZXJib3NpdHkKIApAQCAtNDQsNiArNDksOSBAQAogICAgICAgICAgICAgICAgIC0tIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuCiAtTS8tLW1lbWxpbWl0IExJTUlUCiAgICAgICAgICAgICAgICAgLS0gcnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cworICAgLS10ZXN0ZGlyIERJUgorICAgICAgICAgICAgICAgIC0tIGV4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAoaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpCiAKIFNwZWNpYWwgcnVucwogCkBAIC0xMjUsNiArMTMzLDggQEAKIAogICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCiAKKyAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCisKICAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgogICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgogICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCkBAIC0xNTUsOCArMTY1LDExIEBACiBvcHRpb24gJy11YWxsLC1ndWknLgogIiIiCiAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKwogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZXJybm8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBnZXRvcHQKIGltcG9ydCBpbwogaW1wb3J0IGpzb24KQEAgLTE2Niw2ICsxNzksNyBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKQEAgLTIyNSw2ICsyMzksNyBAQAogU0tJUFBFRCA9IC0yCiBSRVNPVVJDRV9ERU5JRUQgPSAtMwogSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0yNjgsNiArMjgzLDE4IEBACiAgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KICAgICAiIiIKIAorICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCisgICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQorCisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKKyAgICBzaWduYWxzID0gW10KKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQorICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKKyAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKKwogICAgIHJlcGxhY2Vfc3Rkb3V0KCkKIAogICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQpAQCAtMjc4LDcgKzMwNSw4IEBACiAgICAgICAgICAgICAgJ3VzZT0nLCAndGhyZXNob2xkPScsICdjb3ZlcmRpcj0nLCAnbm9jb3ZlcmRpcicsCiAgICAgICAgICAgICAgJ3J1bmxlYWtzJywgJ2h1bnRybGVha3M9JywgJ21lbWxpbWl0PScsICdyYW5kc2VlZD0nLAogICAgICAgICAgICAgICdtdWx0aXByb2Nlc3M9JywgJ2NvdmVyYWdlJywgJ3NsYXZlYXJncz0nLCAnZm9yZXZlcicsICdkZWJ1ZycsCi0gICAgICAgICAgICAgJ3N0YXJ0PScsICdub3dpbmRvd3MnLCAnaGVhZGVyJywgJ2ZhaWxmYXN0JywgJ21hdGNoJ10pCisgICAgICAgICAgICAgJ3N0YXJ0PScsICdub3dpbmRvd3MnLCAnaGVhZGVyJywgJ3Rlc3RkaXI9JywgJ3RpbWVvdXQ9JywgJ3dhaXQnLAorICAgICAgICAgICAgICdmYWlsZmFzdCcsICdtYXRjaCddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgogICAgICAgICB1c2FnZShtc2cpCiAKQEAgLTI4OSw2ICszMTcsNyBAQAogICAgICAgICB1c2VfcmVzb3VyY2VzID0gW10KICAgICBkZWJ1ZyA9IEZhbHNlCiAgICAgc3RhcnQgPSBOb25lCisgICAgdGltZW91dCA9IE5vbmUKICAgICBmb3IgbywgYSBpbiBvcHRzOgogICAgICAgICBpZiBvIGluICgnLWgnLCAnLS1oZWxwJyk6CiAgICAgICAgICAgICBwcmludChfX2RvY19fKQpAQCAtMzMyLDcgKzM2MSw5IEBACiAgICAgICAgIGVsaWYgbyBpbiAoJy1UJywgJy0tY292ZXJhZ2UnKToKICAgICAgICAgICAgIHRyYWNlID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctRCcsICctLWNvdmVyZGlyJyk6Ci0gICAgICAgICAgICBjb3ZlcmRpciA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgYSkKKyAgICAgICAgICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAgICAgICAgICMgbmVlZCAgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZ29lcyB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgICAgICAgICAgY292ZXJkaXIgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgYSkKICAgICAgICAgZWxpZiBvIGluICgnLU4nLCAnLS1ub2NvdmVyZGlyJyk6CiAgICAgICAgICAgICBjb3ZlcmRpciA9IE5vbmUKICAgICAgICAgZWxpZiBvIGluICgnLVInLCAnLS1odW50cmxlYWtzJyk6CkBAIC0zNTAsOSArMzgxLDkgQEAKICAgICAgICAgICAgICAgICBodW50cmxlYWtzWzFdID0gaW50KGh1bnRybGVha3NbMV0pCiAgICAgICAgICAgICBpZiBsZW4oaHVudHJsZWFrcykgPT0gMiBvciBub3QgaHVudHJsZWFrc1syXToKICAgICAgICAgICAgICAgICBodW50cmxlYWtzWzI6XSA9IFsicmVmbG9nLnR4dCJdCi0gICAgICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdGhlIGNoYXJhY3RlciBjYWNoZSBpbgotICAgICAgICAgICAgIyBzdHJpbmdvYmplY3QuYyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhCi0gICAgICAgICAgICB3YXJtX2NoYXJfY2FjaGUoKQorICAgICAgICAgICAgIyBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZHVlIHRvIHZhcmlvdXMgY2FjaGVzCisgICAgICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6CisgICAgICAgICAgICB3YXJtX2NhY2hlcygpCiAgICAgICAgIGVsaWYgbyBpbiAoJy1NJywgJy0tbWVtbGltaXQnKToKICAgICAgICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KGEpCiAgICAgICAgIGVsaWYgbyBpbiAoJy11JywgJy0tdXNlJyk6CkBAIC0zNjEsNiArMzkyLDkgQEAKICAgICAgICAgICAgICAgICBpZiByID09ICdhbGwnOgogICAgICAgICAgICAgICAgICAgICB1c2VfcmVzb3VyY2VzWzpdID0gUkVTT1VSQ0VfTkFNRVMKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiByID09ICdub25lJzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHVzZV9yZXNvdXJjZXNbOl0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICByZW1vdmUgPSBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHJbMF0gPT0gJy0nOgogICAgICAgICAgICAgICAgICAgICByZW1vdmUgPSBUcnVlCkBAIC0zOTEsMTggKzQyNSw0NSBAQAogICAgICAgICAgICAgZm9yZXZlciA9IFRydWUKICAgICAgICAgZWxpZiBvIGluICgnLWonLCAnLS1tdWx0aXByb2Nlc3MnKToKICAgICAgICAgICAgIHVzZV9tcCA9IGludChhKQorICAgICAgICAgICAgaWYgdXNlX21wIDw9IDA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisgICAgICAgICAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCisgICAgICAgICAgICAgICAgICAgIHVzZV9tcCA9IDIgKyBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKKyAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgdXNlX21wID0gMworICAgICAgICAgICAgaWYgdXNlX21wID09IDE6CisgICAgICAgICAgICAgICAgdXNlX21wID0gTm9uZQogICAgICAgICBlbGlmIG8gPT0gJy0taGVhZGVyJzoKICAgICAgICAgICAgIGhlYWRlciA9IFRydWUKICAgICAgICAgZWxpZiBvID09ICctLXNsYXZlYXJncyc6CiAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBqc29uLmxvYWRzKGEpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsICcnCiAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCBlLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IENISUxEX0VSUk9SLCBzdHIoZSkKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCiAgICAgICAgICAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCkpCiAgICAgICAgICAgICBzeXMuZXhpdCgwKQorICAgICAgICBlbGlmIG8gPT0gJy0tdGVzdGRpcic6CisgICAgICAgICAgICAjIENXRCBpcyByZXBsYWNlZCB3aXRoIGEgdGVtcG9yYXJ5IGRpciBiZWZvcmUgY2FsbGluZyBtYWluKCksIHNvIHdlCisgICAgICAgICAgICAjIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGVuZHMgdXAgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KKyAgICAgICAgICAgIHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgYSkKKyAgICAgICAgZWxpZiBvID09ICctLXRpbWVvdXQnOgorICAgICAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja3NfbGF0ZXInKToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZmxvYXQoYSkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDw9IDA6CisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgorICAgICAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tzX2xhdGVyIikKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gTm9uZQorICAgICAgICBlbGlmIG8gPT0gJy0td2FpdCc6CisgICAgICAgICAgICBpbnB1dCgiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS4uLiIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmludCgoIk5vIGhhbmRsZXIgZm9yIG9wdGlvbiB7fS4gIFBsZWFzZSByZXBvcnQgdGhpcyBhcyBhIGJ1ZyAiCiAgICAgICAgICAgICAgICAgICAgImF0IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcuIikuZm9ybWF0KG8pLCBmaWxlPXN5cy5zdGRlcnIpCkBAIC00ODEsNyArNTQyLDEzIEBACiAgICAgICAgIHByaW50KCI9PSAgIiwgb3MuZ2V0Y3dkKCkpCiAgICAgICAgIHByaW50KCJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzKQogCi0gICAgYWxsdGVzdHMgPSBmaW5kdGVzdHModGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQorICAgICMgaWYgdGVzdGRpciBpcyBzZXQsIHRoZW4gd2UgYXJlIG5vdCBydW5uaW5nIHRoZSBweXRob24gdGVzdHMgc3VpdGUsIHNvCisgICAgIyBkb24ndCBhZGQgZGVmYXVsdCB0ZXN0cyB0byBiZSBleGVjdXRlZCBvciBza2lwcGVkIChwYXNzIGVtcHR5IHZhbHVlcykKKyAgICBpZiB0ZXN0ZGlyOgorICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBsaXN0KCksIHNldCgpKQorICAgIGVsc2U6CisgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKwogICAgIHNlbGVjdGVkID0gdGVzdHMgb3IgYXJncyBvciBhbGx0ZXN0cwogICAgIGlmIHNpbmdsZToKICAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZFs6MV0KQEAgLTUwMSw3ICs1NjgsNyBAQAogICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxlY3RlZCkKICAgICBpZiB0cmFjZToKICAgICAgICAgaW1wb3J0IHRyYWNlLCB0ZW1wZmlsZQotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsCisgICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLmdldHRlbXBkaXIoKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPUZhbHNlLCBjb3VudD1UcnVlKQogCkBAIC01NjYsNyArNjMzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0LCB2ZXJib3NlLCBxdWlldCksCiAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9aHVudHJsZWFrcywgdXNlX3Jlc291cmNlcz11c2VfcmVzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz1kZWJ1Zywgb3V0cHV0X29uX2ZhaWx1cmU9dmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PWZhaWxmYXN0LCBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LCBmYWlsZmFzdD1mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgIyAtRSBpcyBuZWVkZWQgYnkgc29tZSB0ZXN0cywgZS5nLiB0ZXN0X2ltcG9ydAogICAgICAgICAgICAgICAgICAgICAjIFJ1bm5pbmcgdGhlIGNoaWxkIGZyb20gdGhlIHNhbWUgd29ya2luZyBkaXJlY3RvcnkgZW5zdXJlcwpAQCAtNTc4LDEwICs2NDYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPShvcy5uYW1lICE9ICdudCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKICAgICAgICAgICAgICAgICAgICAgIyBTdHJpcCBsYXN0IHJlZmNvdW50IG91dHB1dCBsaW5lIGlmIGl0IGV4aXN0cywgc2luY2UgaXQKICAgICAgICAgICAgICAgICAgICAgIyBjb21lcyBmcm9tIHRoZSBzaHV0ZG93biBvZiB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIHN1YmNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IGRlYnVnX291dHB1dF9wYXQuc3ViKCIiLCBzdGRlcnIpCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgXywgcmVzdWx0ID0gc3Rkb3V0LnN0cmlwKCkucnBhcnRpdGlvbigiXG4iKQorICAgICAgICAgICAgICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0hJTERfRVJST1IsICJFeGl0IGNvZGUgJXMiICUgcmV0Y29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgpAQCAtNjE0LDggKzY4Nyw5IEBACiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcmVzdWx0WzFdID09ICdLZXlib2FyZEludGVycnVwdCcKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQgICAjIFdoYXQgZWxzZT8KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gQ0hJTERfRVJST1I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2hpbGQgZXJyb3Igb24ge306IHt9Ii5mb3JtYXQodGVzdCwgcmVzdWx0WzFdKSkKICAgICAgICAgICAgICAgICB0ZXN0X2luZGV4ICs9IDEKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCkBAIC02MzIsMTMgKzcwNiwxNCBAQAogICAgICAgICAgICAgaWYgdHJhY2U6CiAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cwogICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgotICAgICAgICAgICAgICAgIHRyYWNlci5ydW5jdHgoJ3J1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQpJywKKyAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0LCB0aW1lb3V0PXRpbWVvdXQpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9dmFycygpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsIGh1bnRybGVha3MsIGRlYnVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPXZlcmJvc2UzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PWZhaWxmYXN0LCBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGZhaWxmYXN0PWZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQogICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKQEAgLTcwOSw3ICs3ODQsNyBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgcXVpZXQsIGh1bnRybGVha3MsIGRlYnVnKQorICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcsIHRpbWVvdXQ9dGltZW91dCkKICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwogICAgICAgICAgICAgICAgIHByaW50KCkKQEAgLTczNCw2ICs4MDksOCBAQAogICAgIHN5cy5leGl0KGxlbihiYWQpID4gMCBvciBpbnRlcnJ1cHRlZCkKIAogCisjIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgorIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCiBTVERURVNUUyA9IFsKICAgICAndGVzdF9ncmFtbWFyJywKICAgICAndGVzdF9vcGNvZGVzJywKQEAgLTc0NCwxMiArODIxLDExIEBACiAgICAgJ3Rlc3RfdW5pdHRlc3QnLAogICAgICd0ZXN0X2RvY3Rlc3QnLAogICAgICd0ZXN0X2RvY3Rlc3QyJywKKyAgICAndGVzdF9zdXBwb3J0JwogXQogCi1OT1RURVNUUyA9IHsKLSAgICAndGVzdF9mdXR1cmUxJywKLSAgICAndGVzdF9mdXR1cmUyJywKLX0KKyMgc2V0IG9mIHRlc3RzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBiZSBleGVjdXRlZCB3aGVuIHVzaW5nIHJlZ3J0ZXN0CitOT1RURVNUUyA9IHNldCgpCiAKIGRlZiBmaW5kdGVzdHModGVzdGRpcj1Ob25lLCBzdGR0ZXN0cz1TVERURVNUUywgbm90dGVzdHM9Tk9UVEVTVFMpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGFwcGxpY2FibGUgdGVzdCBtb2R1bGVzLiIiIgpAQCAtNzU4LDkgKzgzNCw5IEBACiAgICAgdGVzdHMgPSBbXQogICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cwogICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBtb2RuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIG1vZG5hbWVbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCA9PSAiLnB5IiBhbmQgbW9kbmFtZSBub3QgaW4gb3RoZXJzOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZG5hbWUpCisgICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6CisgICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQogICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKIAogIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgpAQCAtNzg1LDE3ICs4NjEsMTQgQEAKIGRlZiByZXBsYWNlX3N0ZG91dCgpOgogICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgogICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCi0gICAgaWYgb3MubmFtZSA9PSAibnQiOgotICAgICAgICAjIFJlcGxhY2Ugc3lzLnN0ZG91dCBicmVha3MgdGhlIHN0ZG91dCBuZXdsaW5lcyBvbiBXaW5kb3dzOiBpc3N1ZSAjODUzMwotICAgICAgICByZXR1cm4KLQogICAgIGltcG9ydCBhdGV4aXQKIAogICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKICAgICBzeXMuc3Rkb3V0ID0gb3BlbihzdGRvdXQuZmlsZW5vKCksICd3JywKICAgICAgICAgZW5jb2Rpbmc9c3Rkb3V0LmVuY29kaW5nLAogICAgICAgICBlcnJvcnM9ImJhY2tzbGFzaHJlcGxhY2UiLAotICAgICAgICBjbG9zZWZkPUZhbHNlKQorICAgICAgICBjbG9zZWZkPUZhbHNlLAorICAgICAgICBuZXdsaW5lPSdcbicpCiAKICAgICBkZWYgcmVzdG9yZV9zdGRvdXQoKToKICAgICAgICAgc3lzLnN0ZG91dC5jbG9zZSgpCkBAIC04MDQsNyArODc3LDggQEAKIAogZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCiAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCBkZWJ1Zz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLAotICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lKToKKyAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSwKKyAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSk6CiAgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCiAKICAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CkBAIC04MTQsNiArODg4LDggQEAKICAgICBodW50cmxlYWtzIC0tIHJ1biBtdWx0aXBsZSB0aW1lcyB0byB0ZXN0IGZvciBsZWFrczsgcmVxdWlyZXMgYSBkZWJ1ZwogICAgICAgICAgICAgICAgICAgYnVpbGQ7IGEgdHJpcGxlIGNvcnJlc3BvbmRpbmcgdG8gLVIncyB0aHJlZSBhcmd1bWVudHMKICAgICBvdXRwdXRfb25fZmFpbHVyZSAtLSBpZiB0cnVlLCBkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUKKyAgICB0aW1lb3V0IC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCisgICAgICAgICAgICAgICB0aW1lb3V0IHNlY29uZHMKIAogICAgIFJldHVybnMgb25lIG9mIHRoZSB0ZXN0IHJlc3VsdCBjb25zdGFudHM6CiAgICAgICAgIElOVEVSUlVQVEVEICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiBydW4gdW5kZXIgLWoKQEAgLTgyNiw2ICs5MDIsOSBAQAogCiAgICAgaWYgdXNlX3Jlc291cmNlcyBpcyBub3QgTm9uZToKICAgICAgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gdXNlX3Jlc291cmNlcworICAgIHVzZV90aW1lb3V0ID0gKHRpbWVvdXQgaXMgbm90IE5vbmUpCisgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja3NfbGF0ZXIodGltZW91dCwgZXhpdD1UcnVlKQogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG1hdGNoX3Rlc3RzCiAgICAgICAgIGlmIGZhaWxmYXN0OgpAQCAtODY0LDYgKzk0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1ub3QgdmVyYm9zZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGZpbmFsbHk6CisgICAgICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKQogICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIHZlcmJvc2UpCiBydW50ZXN0LnN0cmluZ2lvID0gTm9uZQogCkBAIC05MDksMTAgKzk5MCwxMCBAQAogICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAogICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKICAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCi0gICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsCi0gICAgICAgICAgICAgICAgICdzaHV0aWwuYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbC51bnBhY2tfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAogICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywgJ3RocmVhZGluZy5fZGFuZ2xpbmcnLAogICAgICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nJywKKyAgICAgICAgICAgICAgICAgJ3N5c2NvbmZpZy5fQ09ORklHX1ZBUlMnLCAnc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMnLAogICAgICAgICAgICAgICAgICAnc3VwcG9ydC5URVNURk4nLAogICAgICAgICAgICAgICAgICkKIApAQCAtOTYxLDYgKzEwNDIsMTEgQEAKICAgICAgICAgc3lzLnBhdGhfaG9va3MgPSBzYXZlZF9ob29rc1sxXQogICAgICAgICBzeXMucGF0aF9ob29rc1s6XSA9IHNhdmVkX2hvb2tzWzJdCiAKKyAgICBkZWYgZ2V0X3N5c19nZXR0cmFjZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5nZXR0cmFjZSgpCisgICAgZGVmIHJlc3RvcmVfc3lzX2dldHRyYWNlKHNlbGYsIHRyYWNlX2Z4bik6CisgICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZV9meG4pCisKICAgICBkZWYgZ2V0X19faW1wb3J0X18oc2VsZik6CiAgICAgICAgIHJldHVybiBidWlsdGlucy5fX2ltcG9ydF9fCiAgICAgZGVmIHJlc3RvcmVfX19pbXBvcnRfXyhzZWxmLCBpbXBvcnRfKToKQEAgLTEwNDQsNiArMTEzMCwyNCBAQAogICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY2xlYXIoKQogICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQogCisgICAgZGVmIGdldF9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgZGljdCBpcyBpbml0aWFsaXplZAorICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3ByZWZpeCcpCisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9DT05GSUdfVkFSUyksIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsCisgICAgICAgICAgICAgICAgZGljdChzeXNjb25maWcuX0NPTkZJR19WQVJTKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzYXZlZFsyXSkKKworICAgIGRlZiBnZXRfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZik6CisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMpLCBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUywKKyAgICAgICAgICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jb3B5KCkpCisgICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMudXBkYXRlKHNhdmVkWzJdKQorCiAgICAgZGVmIGdldF9zdXBwb3J0X1RFU1RGTihzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc3VwcG9ydC5URVNURk4pOgogICAgICAgICAgICAgcmVzdWx0ID0gJ2YnCkBAIC0xMTA4LDE0ICsxMjEyLDE1IEBACiAgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHRoZV9wYWNrYWdlID0gX19pbXBvcnRfXyhhYnN0ZXN0LCBnbG9iYWxzKCksIGxvY2FscygpLCBbXSkKICAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBnZXRhdHRyKHRoZV9wYWNrYWdlLCB0ZXN0KQotICAgICAgICAgICAgIyBPbGQgdGVzdHMgcnVuIHRvIGNvbXBsZXRpb24gc2ltcGx5IGFzIGEgc2lkZS1lZmZlY3Qgb2YKLSAgICAgICAgICAgICMgYmVpbmcgaW1wb3J0ZWQuICBGb3IgdGVzdHMgYmFzZWQgb24gdW5pdHRlc3Qgb3IgZG9jdGVzdCwKLSAgICAgICAgICAgICMgZXhwbGljaXRseSBpbnZva2UgdGhlaXIgdGVzdF9tYWluKCkgZnVuY3Rpb24gKGlmIGl0IGV4aXN0cykuCi0gICAgICAgICAgICBpbmRpcmVjdF90ZXN0ID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIGluZGlyZWN0X3Rlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaW5kaXJlY3RfdGVzdCgpCisgICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGhhcyBhIHRlc3RfbWFpbiwgdGhhdCB3aWxsIHJ1biB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICMgdGVzdHMuICBJZiBub3QsIHVzZSBub3JtYWwgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLgorICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQorICAgICAgICAgICAgaWYgdGVzdF9ydW5uZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0ZXN0cyA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBsYW1iZGE6IHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3RzKQorICAgICAgICAgICAgdGVzdF9ydW5uZXIoKQogICAgICAgICAgICAgaWYgaHVudHJsZWFrczoKLSAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIGluZGlyZWN0X3Rlc3QsCisgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwKICAgICAgICAgICAgICAgICAgICAgaHVudHJsZWFrcykKICAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQogICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKQEAgLTExOTgsNyArMTMwMyw4IEBACiAgICAgICAgIEZhbHNlIGlmIHRoZSB0ZXN0IGRpZG4ndCBsZWFrIHJlZmVyZW5jZXM7IFRydWUgaWYgd2UgZGV0ZWN0ZWQgcmVmbGVha3MuCiAgICAgIiIiCiAgICAgIyBUaGlzIGNvZGUgaXMgaGFja2lzaCBhbmQgaW5lbGVnYW50LCBidXQgaXQgc2VlbXMgdG8gZG8gdGhlIGpvYi4KLSAgICBpbXBvcnQgY29weXJlZywgX2FiY29sbAorICAgIGltcG9ydCBjb3B5cmVnCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgogICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRyYWNraW5nIHJlZmVyZW5jZSBsZWFrcyByZXF1aXJlcyBhIGRlYnVnIGJ1aWxkICIKQEAgLTEyMTUsNyArMTMyMSw3IEBACiAgICAgZWxzZToKICAgICAgICAgemRjID0gemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNvcHkoKQogICAgIGFiY3MgPSB7fQotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoX2FiY29sbCwgYSkgZm9yIGEgaW4gX2FiY29sbC5fX2FsbF9fXToKKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgogICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgpAQCAtMTI2MSw3ICsxMzY3LDcgQEAKICAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKICAgICBpbXBvcnQgX3N0cnB0aW1lLCBsaW5lY2FjaGUKICAgICBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdCwgbWltZXR5cGVzLCBkb2N0ZXN0Ci0gICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgX2FiY29sbAorICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIGNvbGxlY3Rpb25zLmFiYwogICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBfcGF0aF9jcmVhdGVkCiAgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CiAKQEAgLTEyODgsNyArMTM5NCw3IEBACiAgICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKIAogICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoX2FiY29sbCwgYSkgZm9yIGEgaW4gX2FiY29sbC5fX2FsbF9fXToKKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgogICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgpAQCAtMTMyNCwxMCArMTQzMCwxNSBAQAogICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2guCiAgICAgZ2MuY29sbGVjdCgpCiAKLWRlZiB3YXJtX2NoYXJfY2FjaGUoKToKK2RlZiB3YXJtX2NhY2hlcygpOgorICAgICMgY2hhciBjYWNoZQogICAgIHMgPSBieXRlcyhyYW5nZSgyNTYpKQogICAgIGZvciBpIGluIHJhbmdlKDI1Nik6CiAgICAgICAgIHNbaTppKzFdCisgICAgIyB1bmljb2RlIGNhY2hlCisgICAgeCA9IFtjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KV0KKyAgICAjIGludCBjYWNoZQorICAgIHggPSBsaXN0KHJhbmdlKC01LCAyNTcpKQogCiBkZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKICAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpcgpAQCAtMTM3NCwxMyArMTQ4NSwxNCBAQAogIyBUZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBza2lwcGVkIGV2ZXJ5d2hlcmUgZXhjZXB0IG9uIG9uZSBwbGF0Zm9ybQogIyBhcmUgYWxzbyBoYW5kbGVkIHNlcGFyYXRlbHkuCiAKLV9leHBlY3RhdGlvbnMgPSB7Ci0gICAgJ3dpbjMyJzoKK19leHBlY3RhdGlvbnMgPSAoCisgICAgKCd3aW4zMicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X19sb2NhbGUKICAgICAgICAgdGVzdF9jcnlwdAogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2RibQorICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9mY250bAogICAgICAgICB0ZXN0X2ZvcmsxCiAgICAgICAgIHRlc3RfZXBvbGwKQEAgLTE0MDMsMTUgKzE1MTUsMTYgQEAKICAgICAgICAgdGVzdF90aHJlYWRzaWduYWxzCiAgICAgICAgIHRlc3Rfd2FpdDMKICAgICAgICAgdGVzdF93YWl0NAotICAgICAgICAiIiIsCi0gICAgJ2xpbnV4Mic6CisgICAgICAgICIiIiksCisgICAgKCdsaW51eCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcworICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9sYXJnZWZpbGUKICAgICAgICAgdGVzdF9rcXVldWUKICAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICAiIiIsCi0gICAgJ3VuaXh3YXJlNyc6CisgICAgICAgICIiIiksCisgICAgKCd1bml4d2FyZScsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfbGFyZ2VmaWxlCkBAIC0xNDIxLDggKzE1MzQsOCBAQAogICAgICAgICB0ZXN0X3B5ZXhwYXQKICAgICAgICAgdGVzdF9zYXgKICAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiLAotICAgICdvcGVudW5peDgnOgorICAgICAgICAiIiIpLAorICAgICgnb3BlbnVuaXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2xhcmdlZmlsZQpAQCAtMTQzMiw4ICsxNTQ1LDggQEAKICAgICAgICAgdGVzdF9weWV4cGF0CiAgICAgICAgIHRlc3Rfc2F4CiAgICAgICAgIHRlc3Rfc3VuZHJ5Ci0gICAgICAgICIiIiwKLSAgICAnc2NvX3N2Myc6CisgICAgICAgICIiIiksCisgICAgKCdzY29fc3YnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9hc3luY2hhdAogICAgICAgICB0ZXN0X2ZvcmsxCkBAIC0xNDUyLDExICsxNTY1LDEyIEBACiAgICAgICAgIHRlc3RfdGhyZWFkZWRfaW1wb3J0CiAgICAgICAgIHRlc3RfdGhyZWFkZWR0ZW1wZmlsZQogICAgICAgICB0ZXN0X3RocmVhZGluZwotICAgICAgICAiIiIsCi0gICAgJ2Rhcndpbic6CisgICAgICAgICIiIiksCisgICAgKCdkYXJ3aW4nLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9fbG9jYWxlCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2dkYgpAQCAtMTQ2NSw4ICsxNTc5LDggQEAKICAgICAgICAgdGVzdF9taW5pZG9tCiAgICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKICAgICAgICAgdGVzdF9wb2xsCi0gICAgICAgICIiIiwKLSAgICAnc3Vub3M1JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3N1bm9zJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCkBAIC0xNDc3LDggKzE1OTEsOCBAQAogICAgICAgICB0ZXN0X29wZW5wdHkKICAgICAgICAgdGVzdF96aXBmaWxlCiAgICAgICAgIHRlc3RfemxpYgotICAgICAgICAiIiIsCi0gICAgJ2hwLXV4MTEnOgorICAgICAgICAiIiIpLAorICAgICgnaHAtdXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTQ5MywxMSArMTYwNywxMiBAQAogICAgICAgICB0ZXN0X3NheAogICAgICAgICB0ZXN0X3ppcGZpbGUKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnY3lnd2luJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2N5Z3dpbicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2RibQorICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2lvY3RsCiAgICAgICAgIHRlc3Rfa3F1ZXVlCkBAIC0xNTA1LDggKzE2MjAsOCBAQAogICAgICAgICB0ZXN0X2xvY2FsZQogICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2CiAgICAgICAgIHRlc3Rfc29ja2V0c2VydmVyCi0gICAgICAgICIiIiwKLSAgICAnb3MyZW14JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ29zMmVteCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2F1ZGlvb3AKICAgICAgICAgdGVzdF9jdXJzZXMKQEAgLTE1MTksOSArMTYzNCwxMCBAQAogICAgICAgICB0ZXN0X3B0eQogICAgICAgICB0ZXN0X3Jlc291cmNlCiAgICAgICAgIHRlc3Rfc2lnbmFsCi0gICAgICAgICIiIiwKLSAgICAnZnJlZWJzZDQnOgorICAgICAgICAiIiIpLAorICAgICgnZnJlZWJzZCcsCiAgICAgICAgICIiIgorICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2RibV9nbnUKICAgICAgICAgdGVzdF9sb2NhbGUKQEAgLTE1MzYsOCArMTY1Miw4IEBACiAgICAgICAgIHRlc3RfdGltZW91dAogICAgICAgICB0ZXN0X3VybGxpYm5ldAogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi0gICAgJ2FpeDUnOgorICAgICAgICAiIiIpLAorICAgICgnYWl4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfYnoyCiAgICAgICAgIHRlc3RfZXBvbGwKQEAgLTE1NTEsMTAgKzE2NjcsMTEgQEAKICAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKICAgICAgICAgdGVzdF96aXBpbXBvcnQKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnb3BlbmJzZDMnOgorICAgICAgICAiIiIpLAorICAgICgnb3BlbmJzZCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N0eXBlcworICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2RibV9nbnUKICAgICAgICAgdGVzdF9sb2NhbGUKQEAgLTE1NjYsMTEgKzE2ODMsMTIgQEAKICAgICAgICAgdGVzdF90dGtfZ3Vpb25seQogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi0gICAgJ25ldGJzZDMnOgorICAgICAgICAiIiIpLAorICAgICgnbmV0YnNkJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3R5cGVzCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTU4MSwxMiArMTY5OSw4IEBACiAgICAgICAgIHRlc3RfdHRrX2d1aW9ubHkKICAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKICAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiLAotfQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDUnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q2J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCi1fZXhwZWN0YXRpb25zWydmcmVlYnNkNyddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDgnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KKyAgICAgICAgIiIiKSwKKykKIAogY2xhc3MgX0V4cGVjdGVkU2tpcHM6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMTU5NCw5ICsxNzA4LDEzIEBACiAgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF90aW1lb3V0CiAKICAgICAgICAgc2VsZi52YWxpZCA9IEZhbHNlCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiBfZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgcyA9IF9leHBlY3RhdGlvbnNbc3lzLnBsYXRmb3JtXQotICAgICAgICAgICAgc2VsZi5leHBlY3RlZCA9IHNldChzLnNwbGl0KCkpCisgICAgICAgIGV4cGVjdGVkID0gTm9uZQorICAgICAgICBmb3IgaXRlbSBpbiBfZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoaXRlbVswXSk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBpdGVtWzFdCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkID0gc2V0KGV4cGVjdGVkLnNwbGl0KCkpCiAKICAgICAgICAgICAgICMgVGhlc2UgYXJlIGJyb2tlbiB0ZXN0cywgZm9yIG5vdyBza2lwcGVkIG9uIGV2ZXJ5IHBsYXRmb3JtLgogICAgICAgICAgICAgIyBYWFggRml4IHRoZXNlIQpAQCAtMTY1Niw5ICsxNzc0LDggQEAKICAgICAgICAgVEVNUERJUiA9IG9zLnBhdGguYWJzcGF0aChURU1QRElSKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKIAogICAgICMgRGVmaW5lIGEgd3JpdGFibGUgdGVtcCBkaXIgdGhhdCB3aWxsIGJlIHVzZWQgYXMgY3dkIHdoaWxlIHJ1bm5pbmcKICAgICAjIHRoZSB0ZXN0cy4gVGhlIG5hbWUgb2YgdGhlIGRpciBpbmNsdWRlcyB0aGUgcGlkIHRvIGFsbG93IHBhcmFsbGVsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZXBlcmYucHkgYi9MaWIvdGVzdC9yZXBlcmYucHkKaW5kZXggN2M2ODIzNC4uZTkzYmFjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcmVwZXJmLnB5CisrKyBiL0xpYi90ZXN0L3JlcGVyZi5weQpAQCAtOSwxMyArOSwxMyBAQAogICAgIHRpbWVmdW5jKDEwLCBwLmZpbmRhbGwsIHMpCiAKIGRlZiB0aW1lZnVuYyhuLCBmdW5jLCAqYXJncywgKiprdyk6Ci0gICAgdDAgPSB0aW1lLmNsb2NrKCkKKyAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICB0cnk6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgICAgICAgcmVzdWx0ID0gZnVuYygqYXJncywgKiprdykKICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGZpbmFsbHk6Ci0gICAgICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgICAgIHQxID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgICAgICBpZiBuID4gMToKICAgICAgICAgICAgIHByaW50KG4sICJ0aW1lcyIsIGVuZD0nICcpCiAgICAgICAgIHByaW50KGZ1bmMuX19uYW1lX18sICIlLjNmIiAlICh0MS10MCksICJDUFUgc2Vjb25kcyIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5IGIvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQppbmRleCBiYTQ0NmNkLi5iMDlmNGJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CisrKyBiL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKQEAgLTEsNiArMSw3IEBACiAjIENvbW1vbiB1dGlsaXR5IGZ1bmN0aW9ucyB1c2VkIGJ5IHZhcmlvdXMgc2NyaXB0IGV4ZWN1dGlvbiB0ZXN0cwogIyAgZS5nLiB0ZXN0X2NtZF9saW5lLCB0ZXN0X2NtZF9saW5lX3NjcmlwdCBhbmQgdGVzdF9ydW5weQogCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCkBAIC01OSwxMSArNjAsMTIgQEAKICAgICAiIiIKICAgICByZXR1cm4gX2Fzc2VydF9weXRob24oRmFsc2UsICphcmdzLCAqKmVudl92YXJzKQogCi1kZWYgc3Bhd25fcHl0aG9uKCphcmdzKToKK2RlZiBzcGF3bl9weXRob24oKmFyZ3MsICoqa3cpOgogICAgIGNtZF9saW5lID0gW3N5cy5leGVjdXRhYmxlLCAnLUUnXQogICAgIGNtZF9saW5lLmV4dGVuZChhcmdzKQogICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKGNtZF9saW5lLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3KQogCiBkZWYga2lsbF9weXRob24ocCk6CiAgICAgcC5zdGRpbi5jbG9zZSgpCkBAIC05Miw2ICs5NCw3IEBACiAgICAgc2NyaXB0X2ZpbGUgPSBvcGVuKHNjcmlwdF9uYW1lLCAndycsIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgc2NyaXB0X2ZpbGUud3JpdGUoc291cmNlKQogICAgIHNjcmlwdF9maWxlLmNsb3NlKCkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgIHJldHVybiBzY3JpcHRfbmFtZQogCiBkZWYgbWFrZV96aXBfc2NyaXB0KHppcF9kaXIsIHppcF9iYXNlbmFtZSwgc2NyaXB0X25hbWUsIG5hbWVfaW5femlwPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CmluZGV4IGY2NTVjMjkuLmYxODVhODIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKQEAgLTQsNiArNCw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cworaW1wb3J0IHBpY2tsZQogCiAjIFZhcmlvdXMgaXRlcmFibGVzCiAjIFRoaXMgaXMgdXNlZCBmb3IgY2hlY2tpbmcgdGhlIGNvbnN0cnVjdG9yIChoZXJlIGFuZCBpbiB0ZXN0X2RlcXVlLnB5KQpAQCAtMzg4LDMgKzM4OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5pbmRleCgwLCAtNCpzeXMubWF4c2l6ZSwgNCpzeXMubWF4c2l6ZSksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEuaW5kZXgsIDAsIDQqc3lzLm1heHNpemUsLTQqc3lzLm1heHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEuaW5kZXgsIDIsIDAsIC0xMCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgbHN0ID0gc2VsZi50eXBlMnRlc3QoWzQsIDUsIDYsIDddKQorICAgICAgICBsc3QyID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhsc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdDIsIGxzdCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChsc3QyKSwgaWQobHN0KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5IGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKaW5kZXggMGNlODhkZS4uYWY3YzBiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc29ydHBlcmYucHkKKysrIGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKQEAgLTU3LDkgKzU3LDkgQEAKICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAogZGVmIGRvaXQoTCk6Ci0gICAgdDAgPSB0aW1lLmNsb2NrKCkKKyAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICBMLnNvcnQoKQotICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgcHJpbnQoIiU2LjJmIiAlICh0MS10MCksIGVuZD0nICcpCiAgICAgZmx1c2goKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zc2xfa2V5LnBhc3N3ZC5wZW0gYi9MaWIvdGVzdC9zc2xfa2V5LnBhc3N3ZC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUyNDY3MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbQpAQCAtMCwwICsxLDE4IEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitQcm9jLVR5cGU6IDQsRU5DUllQVEVECitERUstSW5mbzogREVTLUVERTMtQ0JDLDFBOEQ5RDJBMDJFQzY5OEEKKwora0pZYmZaOEwwc2ZlOU90eTNndzBhbG9Oblk1RThmZWdSZlFMWmxOb3hUbDZqTnQwbkl3SThrREozNkNaZ1I5YwordTNGREptL0txcmZVb3o4dlcrcUVuV2hTRzdRUFgyd1dHUEhkNEs5NFl6L0ZnclJ6WjBEb0s3WHhYcTlnT3RWQQorQVZHUWhuejMycCs2V2hmR3NDcjlBclhFd1JaclRrL0Z2ekVQYVU1Zkhjb1Nrck5WQUdYOElwU1ZrU0R3RURRcgorR3YxNytjZms5OVVWMU9DemE2eUtIb0ZrVHRyQytQWlU3MUxvbUJhYml2UzJPYzRCOWhZdVNSMmhGMDF3VEhQKworWWxXTmFnWk9PVnROejRvS0s5eDllTlFwbWZRWFF2UFBUZnVzZXhLSWJLZlpyTXZKb3hjbTFnZmNaMEgvd0s2UAorNndtWFNHMzVxTU9PenRDWk50cGVyanMxd3pFQlh6bnlLOFFtTGNBSkJqa2ZhckFCSlg5dkJFelpWME9VS2h5Kworbm9PUkZ3SFRsbHBoYm15ZExodTZlaExVWk1IUGh6QVM1VU43c3J0cFNOODFlZXJETXkwUk1VQXdBNy9Qb2ZYMQorOTRNZTg1UThqUDBQQzlFVGRzSmNQcUx6QVBFVEVZdTBFTGV3S1JjcmR5V2krdGxMRnJwRTVLVC9zNWVjYmw5bAorN0I2MVU0S2ZkMVBJWGMvc2lJTmhVM0EzYllLKzg0NVl5VUFyVU9uS2Yxa0VveDdwMVJwRDd5RnFWVDA0bFJUbworY2liTktBVEJ1c1hTdUJycDJHNkdOdWhXRU9TYWZXQ0tKUUF6Z0NZSXA2WlRWMmtoaE1VR3BwYy8ySDNDRjZjTworelgwS3RsUFZaQzdoTGtCNkhUOFN4WVV3RjF6cVdZNysvWFBQZGMzN01lRVo4N1EzVXVad3FPUkxZK1owaHBndAorTDVKWEJDb2tsWmhDQWFOMkdxd0ZMWHRHaVJTUkZHWTd4WEloYkRUbEU2NVd2MVdHR2dETE1LR0UxZ096M3lBbworMmpqRzEreUFISlVkRTY5WFRGSFNxU2t2YWxvQTFXMDNMZE1YWjlWdVFKL3lTWENpZTZBQkFRPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zc2xfc2VydmVycy5weSBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CmluZGV4IDc3YzA1NDIuLjg2ODYxNTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CkBAIC05NCw3ICs5NCwxMiBAQAogICAgICAgICAiIiJTZXJ2ZSBhIEdFVCByZXF1ZXN0LiIiIgogICAgICAgICBzb2NrID0gc2VsZi5yZmlsZS5yYXcuX3NvY2sKICAgICAgICAgY29udGV4dCA9IHNvY2suY29udGV4dAotICAgICAgICBib2R5ID0gcHByaW50LnBmb3JtYXQoY29udGV4dC5zZXNzaW9uX3N0YXRzKCkpCisgICAgICAgIHN0YXRzID0geworICAgICAgICAgICAgJ3Nlc3Npb25fY2FjaGUnOiBjb250ZXh0LnNlc3Npb25fc3RhdHMoKSwKKyAgICAgICAgICAgICdjaXBoZXInOiBzb2NrLmNpcGhlcigpLAorICAgICAgICAgICAgJ2NvbXByZXNzaW9uJzogc29jay5jb21wcmVzc2lvbigpLAorICAgICAgICAgICAgfQorICAgICAgICBib2R5ID0gcHByaW50LnBmb3JtYXQoc3RhdHMpCiAgICAgICAgIGJvZHkgPSBib2R5LmVuY29kZSgndXRmLTgnKQogICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIpCkBAIC0xNzIsNiArMTc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywgaGVscD0nYmUgbGVzcyB2ZXJib3NlJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXN0YXRzJywgZGVzdD0ndXNlX3N0YXRzX2hhbmRsZXInLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nYWx3YXlzIHJldHVybiBzdGF0cyBwYWdlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWN1cnZlLW5hbWUnLCBkZXN0PSdjdXJ2ZV9uYW1lJywgdHlwZT1zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2N1cnZlIG5hbWUgZm9yIEVDLWJhc2VkIERpZmZpZS1IZWxsbWFuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRoJywgZGVzdD0nZGhfZmlsZScsIHR5cGU9c3RyLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1BFTSBmaWxlIGNvbnRhaW5pbmcgREggcGFyYW1ldGVycycpCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIHN1cHBvcnQudmVyYm9zZSA9IGFyZ3MudmVyYm9zZQpAQCAtMTgyLDYgKzE5MiwxMCBAQAogICAgICAgICBoYW5kbGVyX2NsYXNzLnJvb3QgPSBvcy5nZXRjd2QoKQogICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgaWYgYXJncy5jdXJ2ZV9uYW1lOgorICAgICAgICBjb250ZXh0LnNldF9lY2RoX2N1cnZlKGFyZ3MuY3VydmVfbmFtZSkKKyAgICBpZiBhcmdzLmRoX2ZpbGU6CisgICAgICAgIGNvbnRleHQubG9hZF9kaF9wYXJhbXMoYXJncy5kaF9maWxlKQogCiAgICAgc2VydmVyID0gSFRUUFNTZXJ2ZXIoKCIiLCBhcmdzLnBvcnQpLCBoYW5kbGVyX2NsYXNzLCBjb250ZXh0KQogICAgIGlmIGFyZ3MudmVyYm9zZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weSBiL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQppbmRleCA0MTNmOWRkLi5lNDY4OGQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKKysrIGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CkBAIC0yOCw2ICsyOCwxMSBAQAogICAgICMgQ2hhbmdlIGluIHN1YmNsYXNzZXMgdG8gY2hhbmdlIHRoZSBiZWhhdmlvdXIgb2YgZml4dGVzdHR5cGUoKQogICAgIHR5cGUydGVzdCA9IE5vbmUKIAorICAgICMgV2hldGhlciB0aGUgImNvbnRhaW5lZCBpdGVtcyIgb2YgdGhlIGNvbnRhaW5lciBhcmUgaW50ZWdlcnMgaW4KKyAgICAjIHJhbmdlKDAsIDI1NikgKGkuZS4gYnl0ZXMsIGJ5dGVhcnJheSkgb3Igc3RyaW5ncyBvZiBsZW5ndGggMQorICAgICMgKHN0cikKKyAgICBjb250YWluc19ieXRlcyA9IEZhbHNlCisKICAgICAjIEFsbCB0ZXN0cyBwYXNzIHRoZWlyIGFyZ3VtZW50cyB0byB0aGUgdGVzdGluZyBtZXRob2RzCiAgICAgIyBhcyBzdHIgb2JqZWN0cy4gZml4dGVzdHR5cGUoKSBjYW4gYmUgdXNlZCB0byBwcm9wYWdhdGUKICAgICAjIHRoZXNlIGFyZ3VtZW50cyB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQpAQCAtNDcsMTEgKzUyLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gb2JqCiAKICAgICAjIGNoZWNrIHRoYXQgb2JqLm1ldGhvZCgqYXJncykgcmV0dXJucyByZXN1bHQKLSAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iaiwgbWV0aG9kbmFtZSwgKmFyZ3MpOgorICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqLCBtZXRob2RuYW1lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmZpeHR5cGUocmVzdWx0KQogICAgICAgICBvYmogPSBzZWxmLmZpeHR5cGUob2JqKQogICAgICAgICBhcmdzID0gc2VsZi5maXh0eXBlKGFyZ3MpCi0gICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iaiwgbWV0aG9kbmFtZSkoKmFyZ3MpCisgICAgICAgIGt3YXJncyA9IHtrOiBzZWxmLmZpeHR5cGUodikgZm9yIGssdiBpbiBrd2FyZ3MuaXRlbXMoKX0KKyAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqLCBtZXRob2RuYW1lKSgqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICByZXN1bHQsCiAgICAgICAgICAgICByZWFscmVzdWx0CkBAIC0xMTYsNyArMTIyLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnJywgJ2NvdW50JywgJ3h4Jywgc3lzLm1heHNpemUsIDApCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdjb3VudCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdoZWxsbycsICdjb3VudCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdjb3VudCcsIDQyKQogCiAgICAgICAgICMgRm9yIGEgdmFyaWV0eSBvZiBjb21iaW5hdGlvbnMsCiAgICAgICAgICMgICAgdmVyaWZ5IHRoYXQgc3RyLmNvdW50KCkgbWF0Y2hlcyBhbiBlcXVpdmFsZW50IGZ1bmN0aW9uCkBAIC0xNjIsNyArMTcyLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCggMiwgJ3JyYXJycnJycnJycmEnLCAnZmluZCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2ZpbmQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2ZpbmQnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnaGVsbG8nLCAnZmluZCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJywgNDIpCiAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICcnLCAnZmluZCcsICcnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICcnLCAnZmluZCcsICcnLCAxLCAxKQpAQCAtMjE2LDcgKzIzMCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ3JmaW5kJywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmZpbmQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2hlbGxvJywgJ3JmaW5kJywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJywgNDIpCiAKICAgICAgICAgIyBGb3IgYSB2YXJpZXR5IG9mIGNvbWJpbmF0aW9ucywKICAgICAgICAgIyAgICB2ZXJpZnkgdGhhdCBzdHIucmZpbmQoKSBtYXRjaGVzIF9fY29udGFpbnNfXwpAQCAtMjQ0LDYgKzI2Miw5IEBACiAgICAgICAgICMgaXNzdWUgNzQ1OAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhYicsICdyZmluZCcsICd4eHgnLCBzeXMubWF4c2l6ZSArIDEsIDApCiAKKyAgICAgICAgIyBpc3N1ZSAjMTU1MzQKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICc8Li4uLi4uXHUwNDNjLi4uJywgInJmaW5kIiwgIjwiKQorCiAgICAgZGVmIHRlc3RfaW5kZXgoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnYWJjZGVmZ2hpYWJjJywgJ2luZGV4JywgJycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgzLCAnYWJjZGVmZ2hpYWJjJywgJ2luZGV4JywgJ2RlZicpCkBAIC0yNjMsNyArMjg0LDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCggMiwgJ3JyYXJycnJycnJycmEnLCAnaW5kZXgnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdpbmRleCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnLCA0MikKIAogICAgIGRlZiB0ZXN0X3JpbmRleChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEyLCAnYWJjZGVmZ2hpYWJjJywgJ3JpbmRleCcsICcnKQpAQCAtMjg1LDcgKzMxMCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ3JpbmRleCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnLCA0MikKIAogICAgIGRlZiB0ZXN0X2xvd2VyKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ2hlbGxvJywgJ0hlTExvJywgJ2xvd2VyJykKQEAgLTM2Myw2ICszOTIsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYSddKjE4ICsgWydhQkxBSGEnXSwgKCdhQkxBSCcqMjApWzotNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnc3BsaXQnLCAnQkxBSCcsIDE4KQogCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdiJywgJ2MnLCAnZCddLCAnYXxifGN8ZCcsICdzcGxpdCcsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYnxjfGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3NwbGl0JywgJ3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsIHNlcD0nfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYnxjfGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3NwbGl0JywgbWF4c3BsaXQ9MSwgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdiIGMgZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2EgYiBjIGQnLCAnc3BsaXQnLCBtYXhzcGxpdD0xKQorCiAgICAgICAgICMgYXJndW1lbnQgdHlwZQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3NwbGl0JywgNDIsIDQyLCA0MikKIApAQCAtNDIwLDYgKzQ2MCwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhQkxBSGEnXSArIFsnYSddKjE4LCAoJ2FCTEFIJyoyMClbOi00XSwKICAgICAgICAgICAgICAgICAgICAgICAgICdyc3BsaXQnLCAnQkxBSCcsIDE4KQogCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdiJywgJ2MnLCAnZCddLCAnYXxifGN8ZCcsICdyc3BsaXQnLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCAnfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2F8YnxjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3JzcGxpdCcsIHNlcD0nfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2F8YnxjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3JzcGxpdCcsIG1heHNwbGl0PTEsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EgYiBjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhIGIgYyBkJywgJ3JzcGxpdCcsIG1heHNwbGl0PTEpCisKICAgICAgICAgIyBhcmd1bWVudCB0eXBlCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncnNwbGl0JywgNDIsIDQyLCA0MikKIApAQCAtNTQ5LDYgKzYwMCw4IEBACiAgICAgICAgIEVRKCJSZXlLS2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgImsiLCAiS0siLCAxKQogICAgICAgICBFUSgiUmV5a2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgImsiLCAiS0siLCAwKQogICAgICAgICBFUSgiQS0tLS1CLS0tLUMtLS0tIiwgIkEuQi5DLiIsICJyZXBsYWNlIiwgIi4iLCAiLS0tLSIpCisgICAgICAgICMgaXNzdWUgIzE1NTM0CisgICAgICAgIEVRKCcuLi5cdTA0M2MuLi4uLi4mbHQ7JywgJy4uLlx1MDQzYy4uLi4uLjwnLCAicmVwbGFjZSIsICI8IiwgIiZsdDsiKQogCiAgICAgICAgIEVRKCJSZXlramF2aWsiLCAiUmV5a2phdmlrIiwgInJlcGxhY2UiLCAicSIsICJLSyIpCiAKQEAgLTY0Myw3ICs2OTYsNyBAQAogCiAgICAgICAgICMgY2hlY2sgdGhhdCB0aXRsZWNhc2VkIGNoYXJzIGFyZSBsb3dlcmVkIGNvcnJlY3RseQogICAgICAgICAjIFx1MWZmYyBpcyB0aGUgdGl0bGVjYXNlZCBjaGFyCi0gICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUxZmZjXHUxZmYzXHUxZmYzXHUxZmYzJywKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdcdTAzYTlcdTAzOTlcdTFmZjNcdTFmZjNcdTFmZjMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1x1MWZmM1x1MWZmM1x1MWZmY1x1MWZmYycsICdjYXBpdGFsaXplJykKICAgICAgICAgIyBjaGVjayB3aXRoIGNhc2VkIG5vbi1sZXR0ZXIgY2hhcnMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdcdTI0YzVcdTI0ZThcdTI0ZTNcdTI0ZDdcdTI0ZGVcdTI0ZGQnLApAQCAtOTA4LDcgKzk2MSwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhYmMnLCAnZGVmJywgJ2doaSddLCAiYWJjXG5kZWZcclxuZ2hpXG4iLCAnc3BsaXRsaW5lcycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnJywgJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnKQotICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydcbicsICdhYmNcbicsICdkZWZcclxuJywgJ2doaVxuJywgJ1xyJ10sICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIDEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJycsICdhYmMnLCAnZGVmJywgJ2doaScsICcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIEZhbHNlKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydcbicsICdhYmNcbicsICdkZWZcclxuJywgJ2doaVxuJywgJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NwbGl0bGluZXMnLCBrZWVwZW5kcz1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywga2VlcGVuZHM9VHJ1ZSkKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2FiYycsICdzcGxpdGxpbmVzJywgNDIsIDQyKQogCkBAIC0xMTQyLDYgKzEyMDIsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclMTAuKmYnLCAnX19tb2RfXycsICgnZm9vJywgNDIuKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnJTEwJywgJ19fbW9kX18nLCAoNDIsKSkKIAorICAgICAgICAjIE91dHJhZ2VvdXNseSBsYXJnZSB3aWR0aCBvciBwcmVjaXNpb24gc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IuCisgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUlJWRmJyAlICgyKio2NCksICdfX21vZF9fJywgKDMuMikpCisgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUlLiVkZicgJSAoMioqNjQpLCAnX19tb2RfXycsICgzLjIpKQorCiAgICAgICAgIGNsYXNzIFgob2JqZWN0KTogcGFzcwogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2FiYycsICdfX21vZF9fJywgWCgpKQogCkBAIC0xMjYwLDYgKzEzMjQsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgcideZW5kc3dpdGhcKCcsIHMuZW5kc3dpdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIE5vbmUsIE5vbmUsIE5vbmUpCiAKKyAgICAgICAgIyBpc3N1ZSAjMTU1MzQKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwLCAiLi4uXHUwNDNjLi4uLi4uPCIsICJmaW5kIiwgIjwiKQorCiAKIGNsYXNzIE1peGluU3RyVW5pY29kZVRlc3Q6CiAgICAgIyBBZGRpdGlvbmFsIHRlc3RzIHRoYXQgb25seSB3b3JrIHdpdGggc3RyIGFuZCB1bmljb2RlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC5weSBiL0xpYi90ZXN0L3N1cHBvcnQucHkKaW5kZXggZTFlYzllMi4uMDE0YmNmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0LnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgaW1wCkBAIC0zNywyNiArMzcsNDEgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHpsaWIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgYnoyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQogCiBfX2FsbF9fID0gWwotICAgICJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLAotICAgICJ2ZXJib3NlIiwgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKKyAgICAiRXJyb3IiLCAiVGVzdEZhaWxlZCIsICJSZXNvdXJjZURlbmllZCIsICJpbXBvcnRfbW9kdWxlIiwgInZlcmJvc2UiLAorICAgICJ1c2VfcmVzb3VyY2VzIiwgIm1heF9tZW11c2UiLCAicmVjb3JkX29yaWdpbmFsX3N0ZG91dCIsCiAgICAgImdldF9vcmlnaW5hbF9zdGRvdXQiLCAidW5sb2FkIiwgInVubGluayIsICJybXRyZWUiLCAiZm9yZ2V0IiwKLSAgICAiaXNfcmVzb3VyY2VfZW5hYmxlZCIsICJyZXF1aXJlcyIsICJyZXF1aXJlc19tYWNfdmVyIiwKLSAgICAiZmluZF91bnVzZWRfcG9ydCIsICJiaW5kX3BvcnQiLAotICAgICJmY21wIiwgImlzX2p5dGhvbiIsICJURVNURk4iLCAiSE9TVCIsICJGVVpaIiwgIlNBVkVEQ1dEIiwgInRlbXBfY3dkIiwKLSAgICAiZmluZGZpbGUiLCAic29ydGRpY3QiLCAiY2hlY2tfc3ludGF4X2Vycm9yIiwgIm9wZW5fdXJscmVzb3VyY2UiLAotICAgICJjaGVja193YXJuaW5ncyIsICJDbGVhbkltcG9ydCIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwKLSAgICAiVHJhbnNpZW50UmVzb3VyY2UiLCAiY2FwdHVyZWRfb3V0cHV0IiwgImNhcHR1cmVkX3N0ZG91dCIsCi0gICAgImNhcHR1cmVkX3N0ZGluIiwgImNhcHR1cmVkX3N0ZGVyciIsCi0gICAgInRpbWVfb3V0IiwgInNvY2tldF9wZWVyX3Jlc2V0IiwgImlvZXJyb3JfcGVlcl9yZXNldCIsCi0gICAgInJ1bl93aXRoX2xvY2FsZSIsICd0ZW1wX3VtYXNrJywgInRyYW5zaWVudF9pbnRlcm5ldCIsCi0gICAgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLCAiQmFzaWNUZXN0UnVubmVyIiwKLSAgICAicnVuX3VuaXR0ZXN0IiwgInJ1bl9kb2N0ZXN0IiwgInRocmVhZGluZ19zZXR1cCIsICJ0aHJlYWRpbmdfY2xlYW51cCIsCi0gICAgInJlYXBfY2hpbGRyZW4iLCAiY3B5dGhvbl9vbmx5IiwgImNoZWNrX2ltcGxfZGV0YWlsIiwgImdldF9hdHRyaWJ1dGUiLAotICAgICJzd2FwX2l0ZW0iLCAic3dhcF9hdHRyIiwgInJlcXVpcmVzX0lFRUVfNzU0IiwKKyAgICAiaXNfcmVzb3VyY2VfZW5hYmxlZCIsICJyZXF1aXJlcyIsICJyZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24iLAorICAgICJyZXF1aXJlc19saW51eF92ZXJzaW9uIiwgInJlcXVpcmVzX21hY192ZXIiLCAiZmluZF91bnVzZWRfcG9ydCIsCisgICAgImJpbmRfcG9ydCIsICJJUFY2X0VOQUJMRUQiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIlNBVkVEQ1dEIiwKKyAgICAidGVtcF9jd2QiLCAiZmluZGZpbGUiLCAiY3JlYXRlX2VtcHR5X2ZpbGUiLCAic29ydGRpY3QiLAorICAgICJjaGVja19zeW50YXhfZXJyb3IiLCAib3Blbl91cmxyZXNvdXJjZSIsICJjaGVja193YXJuaW5ncyIsICJDbGVhbkltcG9ydCIsCisgICAgIkVudmlyb25tZW50VmFyR3VhcmQiLCAiVHJhbnNpZW50UmVzb3VyY2UiLCAiY2FwdHVyZWRfc3Rkb3V0IiwKKyAgICAiY2FwdHVyZWRfc3RkaW4iLCAiY2FwdHVyZWRfc3RkZXJyIiwgInRpbWVfb3V0IiwgInNvY2tldF9wZWVyX3Jlc2V0IiwKKyAgICAiaW9lcnJvcl9wZWVyX3Jlc2V0IiwgInJ1bl93aXRoX2xvY2FsZSIsICd0ZW1wX3VtYXNrJywKKyAgICAidHJhbnNpZW50X2ludGVybmV0IiwgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLAorICAgICJCYXNpY1Rlc3RSdW5uZXIiLCAicnVuX3VuaXR0ZXN0IiwgInJ1bl9kb2N0ZXN0IiwgInRocmVhZGluZ19zZXR1cCIsCisgICAgInRocmVhZGluZ19jbGVhbnVwIiwgInJlYXBfY2hpbGRyZW4iLCAiY3B5dGhvbl9vbmx5IiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKKyAgICAiZ2V0X2F0dHJpYnV0ZSIsICJzd2FwX2l0ZW0iLCAic3dhcF9hdHRyIiwgInJlcXVpcmVzX0lFRUVfNzU0IiwKICAgICAiVGVzdEhhbmRsZXIiLCAiTWF0Y2hlciIsICJjYW5fc3ltbGluayIsICJza2lwX3VubGVzc19zeW1saW5rIiwKLSAgICAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJmYWlsZmFzdCIsICJydW5fd2l0aF90eiIKKyAgICAic2tpcF91bmxlc3NfeGF0dHIiLCAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJyZXF1aXJlc196bGliIiwKKyAgICAiUElQRV9NQVhfU0laRSIsICJmYWlsZmFzdCIsICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAicnVuX3dpdGhfdHoiLAorICAgICJyZXF1aXJlc19iejIiLCAicmVxdWlyZXNfbHptYSIKICAgICBdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkBAIC0xMjcsNiArMTQyLDE3IEBACiAgICAgcmV0dXJuIHNhdmVkCiAKIAorZGVmIGFudGljaXBhdGVfZmFpbHVyZShjb25kaXRpb24pOgorICAgICIiIkRlY29yYXRvciB0byBtYXJrIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGJyb2tlbiBpbiBzb21lIGNhc2VzCisKKyAgICAgICBBbnkgdXNlIG9mIHRoaXMgZGVjb3JhdG9yIHNob3VsZCBoYXZlIGEgY29tbWVudCBpZGVudGlmeWluZyB0aGUKKyAgICAgICBhc3NvY2lhdGVkIHRyYWNrZXIgaXNzdWUuCisgICAgIiIiCisgICAgaWYgY29uZGl0aW9uOgorICAgICAgICByZXR1cm4gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKKwogZGVmIGltcG9ydF9mcmVzaF9tb2R1bGUobmFtZSwgZnJlc2g9KCksIGJsb2NrZWQ9KCksIGRlcHJlY2F0ZWQ9RmFsc2UpOgogICAgICIiIkltcG9ydHMgYW5kIHJldHVybnMgYSBtb2R1bGUsIGRlbGliZXJhdGVseSBieXBhc3NpbmcgdGhlIHN5cy5tb2R1bGVzIGNhY2hlCiAgICAgYW5kIGltcG9ydGluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIG1vZHVsZS4gT25jZSB0aGUgaW1wb3J0IGlzIGNvbXBsZXRlLApAQCAtMTcwLDggKzE5Niw3IEBACiAgICAgdHJ5OgogICAgICAgICBhdHRyaWJ1dGUgPSBnZXRhdHRyKG9iaiwgbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJtb2R1bGUgJXMgaGFzIG5vIGF0dHJpYnV0ZSAlcyIgJSAoCi0gICAgICAgICAgICBvYmouX19uYW1lX18sIG5hbWUpKQorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib2JqZWN0ICVyIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKG9iaiwgbmFtZSkpCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZQogCkBAIC0yNzYsOCArMzAxLDcgQEAKICAgICB0cnk6CiAgICAgICAgIF9ybXRyZWUocGF0aCkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgIyBVbml4IHJldHVybnMgRU5PRU5ULCBXaW5kb3dzIHJldHVybnMgRVNSQ0guCi0gICAgICAgIGlmIGVycm9yLmVycm5vIG5vdCBpbiAoZXJybm8uRU5PRU5ULCBlcnJuby5FU1JDSCk6CisgICAgICAgIGlmIGVycm9yLmVycm5vICE9IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgIHJhaXNlCiAKIGRlZiBtYWtlX2xlZ2FjeV9weWMoc291cmNlKToKQEAgLTM2Miw5ICszODYsNTIgQEAKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpOgogICAgICAgICBpZiBtc2cgaXMgTm9uZToKLSAgICAgICAgICAgIG1zZyA9ICJVc2Ugb2YgdGhlIGAlcycgcmVzb3VyY2Ugbm90IGVuYWJsZWQiICUgcmVzb3VyY2UKKyAgICAgICAgICAgIG1zZyA9ICJVc2Ugb2YgdGhlICVyIHJlc291cmNlIG5vdCBlbmFibGVkIiAlIHJlc291cmNlCiAgICAgICAgIHJhaXNlIFJlc291cmNlRGVuaWVkKG1zZykKIAorZGVmIF9yZXF1aXJlc191bml4X3ZlcnNpb24oc3lzbmFtZSwgbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBgc3lzbmFtZWAgYW5kIHRoZSB2ZXJzaW9uIGlzIGxlc3MKKyAgICB0aGFuIGBtaW5fdmVyc2lvbmAuCisKKyAgICBGb3IgZXhhbXBsZSwgQF9yZXF1aXJlc191bml4X3ZlcnNpb24oJ0ZyZWVCU0QnLCAoNywgMikpIHJhaXNlcyBTa2lwVGVzdCBpZgorICAgIHRoZSBGcmVlQlNEIHZlcnNpb24gaXMgbGVzcyB0aGFuIDcuMi4KKyAgICAiIiIKKyAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09IHN5c25hbWU6CisgICAgICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5yZWxlYXNlKCkuc3BsaXQoJy0nLCAxKVswXQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHZlcnNpb25fdHh0LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA8IG1pbl92ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb25fdHh0ID0gJy4nLmpvaW4obWFwKHN0ciwgbWluX3ZlcnNpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHZlcnNpb24gJXMgb3IgaGlnaGVyIHJlcXVpcmVkLCBub3QgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3lzbmFtZSwgbWluX3ZlcnNpb25fdHh0LCB2ZXJzaW9uX3R4dCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgcmV0dXJuIGRlY29yYXRvcgorCitkZWYgcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKCptaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIEZyZWVCU0QgYW5kIHRoZSBGcmVlQlNEIHZlcnNpb24gaXMKKyAgICBsZXNzIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDcsIDIpIHJhaXNlcyBTa2lwVGVzdCBpZiB0aGUgRnJlZUJTRAorICAgIHZlcnNpb24gaXMgbGVzcyB0aGFuIDcuMi4KKyAgICAiIiIKKyAgICByZXR1cm4gX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignRnJlZUJTRCcsIG1pbl92ZXJzaW9uKQorCitkZWYgcmVxdWlyZXNfbGludXhfdmVyc2lvbigqbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBMaW51eCBhbmQgdGhlIExpbnV4IHZlcnNpb24gaXMKKyAgICBsZXNzIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAcmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAzMikgcmFpc2VzIFNraXBUZXN0IGlmIHRoZSBMaW51eAorICAgIHZlcnNpb24gaXMgbGVzcyB0aGFuIDIuNi4zMi4KKyAgICAiIiIKKyAgICByZXR1cm4gX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignTGludXgnLCBtaW5fdmVyc2lvbikKKwogZGVmIHJlcXVpcmVzX21hY192ZXIoKm1pbl92ZXJzaW9uKToKICAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgTWFjIE9TIFggYW5kIHRoZSBPUyBYCiAgICAgdmVyc2lvbiBpZiBsZXNzIHRoYW4gbWluX3ZlcnNpb24uCkBAIC0zOTIsNiArNDU5LDcgQEAKICAgICAgICAgcmV0dXJuIHdyYXBwZXIKICAgICByZXR1cm4gZGVjb3JhdG9yCiAKKwogSE9TVCA9ICdsb2NhbGhvc3QnCiAKIGRlZiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKToKQEAgLTQ4NywyOSArNTU1LDQxIEBACiAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQogICAgIHJldHVybiBwb3J0CiAKLUZVWlogPSAxZS02Ci0KLWRlZiBmY21wKHgsIHkpOiAjIGZ1enp5IGNvbXBhcmlzb24gZnVuY3Rpb24KLSAgICBpZiBpc2luc3RhbmNlKHgsIGZsb2F0KSBvciBpc2luc3RhbmNlKHksIGZsb2F0KToKK2RlZiBfaXNfaXB2Nl9lbmFibGVkKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBJUHY2IGlzIGVuYWJsZWQgb24gdGhpcyBob3N0LiIiIgorICAgIGlmIHNvY2tldC5oYXNfaXB2NjoKKyAgICAgICAgc29jayA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnV6eiA9IChhYnMoeCkgKyBhYnMoeSkpICogRlVaWgotICAgICAgICAgICAgaWYgYWJzKHgteSkgPD0gZnV6ejoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNvY2suYmluZCgoJzo6MScsIDApKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIHNvY2tldC5nYWllcnJvcik6CiAgICAgICAgICAgICBwYXNzCi0gICAgZWxpZiB0eXBlKHgpID09IHR5cGUoeSkgYW5kIGlzaW5zdGFuY2UoeCwgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKG1pbihsZW4oeCksIGxlbih5KSkpOgotICAgICAgICAgICAgb3V0Y29tZSA9IGZjbXAoeFtpXSwgeVtpXSkKLSAgICAgICAgICAgIGlmIG91dGNvbWUgIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gb3V0Y29tZQotICAgICAgICByZXR1cm4gKGxlbih4KSA+IGxlbih5KSkgLSAobGVuKHgpIDwgbGVuKHkpKQotICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc29jazoKKyAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICByZXR1cm4gRmFsc2UKKworSVBWNl9FTkFCTEVEID0gX2lzX2lwdjZfZW5hYmxlZCgpCisKKworIyBBIGNvbnN0YW50IGxpa2VseSBsYXJnZXIgdGhhbiB0aGUgdW5kZXJseWluZyBPUyBwaXBlIGJ1ZmZlciBzaXplLgorIyBXaW5kb3dzIGxpbWl0IHNlZW1zIHRvIGJlIGFyb3VuZCA1MTJCLCBhbmQgbW9zdCBVbml4IGtlcm5lbHMgaGF2ZSBhIDY0SyBwaXBlCisjIGJ1ZmZlciBzaXplOiB0YWtlIDFNIHRvIGJlIHN1cmUuCitQSVBFX01BWF9TSVpFID0gMTAyNCAqIDEwMjQKKwogCiAjIGRlY29yYXRvciBmb3Igc2tpcHBpbmcgdGVzdHMgb24gbm9uLUlFRUUgNzU0IHBsYXRmb3JtcwogcmVxdWlyZXNfSUVFRV83NTQgPSB1bml0dGVzdC5za2lwVW5sZXNzKAogICAgIGZsb2F0Ll9fZ2V0Zm9ybWF0X18oImRvdWJsZSIpLnN0YXJ0c3dpdGgoIklFRUUiKSwKICAgICAidGVzdCByZXF1aXJlcyBJRUVFIDc1NCBkb3VibGVzIikKIAorcmVxdWlyZXNfemxpYiA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgJ3JlcXVpcmVzIHpsaWInKQorCityZXF1aXJlc19iejIgPSB1bml0dGVzdC5za2lwVW5sZXNzKGJ6MiwgJ3JlcXVpcmVzIGJ6MicpCisKK3JlcXVpcmVzX2x6bWEgPSB1bml0dGVzdC5za2lwVW5sZXNzKGx6bWEsICdyZXF1aXJlcyBsem1hJykKKwogaXNfanl0aG9uID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKQogCiAjIEZpbGVuYW1lIHVzZWQgZm9yIHRlc3RpbmcKQEAgLTYxMCwxNCArNjkwLDE1IEBACiAgICAgICAgICAgICBybXRyZWUobmFtZSkKIAogCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIHRlbXBfdW1hc2sodW1hc2spOgotICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suIiIiCi0gICAgb2xkbWFzayA9IG9zLnVtYXNrKHVtYXNrKQotICAgIHRyeToKLSAgICAgICAgeWllbGQKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy51bWFzayhvbGRtYXNrKQoraWYgaGFzYXR0cihvcywgInVtYXNrIik6CisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgdGVtcF91bWFzayh1bWFzayk6CisgICAgICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suIiIiCisgICAgICAgIG9sZG1hc2sgPSBvcy51bWFzayh1bWFzaykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVtYXNrKG9sZG1hc2spCiAKIAogZGVmIGZpbmRmaWxlKGZpbGUsIGhlcmU9X19maWxlX18sIHN1YmRpcj1Ob25lKToKQEAgLTYzNSw2ICs3MTYsMTEgQEAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZm4pOiByZXR1cm4gZm4KICAgICByZXR1cm4gZmlsZQogCitkZWYgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIkNyZWF0ZSBhbiBlbXB0eSBmaWxlLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgdHJ1bmNhdGUgaXQuIiIiCisgICAgZmQgPSBvcy5vcGVuKGZpbGVuYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQgfCBvcy5PX1RSVU5DKQorICAgIG9zLmNsb3NlKGZkKQorCiBkZWYgc29ydGRpY3QoZGljdCk6CiAgICAgIkxpa2UgcmVwcihkaWN0KSwgYnV0IGluIHNvcnRlZCBvcmRlci4iCiAgICAgaXRlbXMgPSBzb3J0ZWQoZGljdC5pdGVtcygpKQpAQCAtNjk5LDcgKzc4NSw3IEBACiAgICAgZiA9IGNoZWNrX3ZhbGlkX2ZpbGUoZm4pCiAgICAgaWYgZiBpcyBub3QgTm9uZToKICAgICAgICAgcmV0dXJuIGYKLSAgICByYWlzZSBUZXN0RmFpbGVkKCdpbnZhbGlkIHJlc291cmNlICIlcyInICUgZm4pCisgICAgcmFpc2UgVGVzdEZhaWxlZCgnaW52YWxpZCByZXNvdXJjZSAlcicgJSBmbikKIAogCiBjbGFzcyBXYXJuaW5nc1JlY29yZGVyKG9iamVjdCk6CkBAIC04MjAsNyArOTA2LDcgQEAKICAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKHNlbGYub3JpZ2luYWxfbW9kdWxlcykKIAogCi1jbGFzcyBFbnZpcm9ubWVudFZhckd1YXJkKGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKK2NsYXNzIEVudmlyb25tZW50VmFyR3VhcmQoY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nKToKIAogICAgICIiIkNsYXNzIHRvIGhlbHAgcHJvdGVjdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgcHJvcGVybHkuICBDYW4gYmUgdXNlZCBhcwogICAgIGEgY29udGV4dCBtYW5hZ2VyLiIiIgpAQCAtOTUxLDcgKzEwMzcsNyBAQAogICAgICAgICAoJ1dTQU5PX0RBVEEnLCAxMTAwNCksCiAgICAgXQogCi0gICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICclcycgaXMgbm90IGF2YWlsYWJsZSIgJSByZXNvdXJjZV9uYW1lKQorICAgIGRlbmllZCA9IFJlc291cmNlRGVuaWVkKCJSZXNvdXJjZSAlciBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCiAgICAgY2FwdHVyZWRfZXJybm9zID0gZXJybm9zCiAgICAgZ2FpX2Vycm5vcyA9IFtdCiAgICAgaWYgbm90IGNhcHR1cmVkX2Vycm5vczoKQEAgLTEwNDAsNiArMTEyNiwxNiBAQAogICAgIGdjLmNvbGxlY3QoKQogICAgIGdjLmNvbGxlY3QoKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGRpc2FibGVfZ2MoKToKKyAgICBoYXZlX2djID0gZ2MuaXNlbmFibGVkKCkKKyAgICBnYy5kaXNhYmxlKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgaWYgaGF2ZV9nYzoKKyAgICAgICAgICAgIGdjLmVuYWJsZSgpCisKIAogZGVmIHB5dGhvbl9pc19vcHRpbWl6ZWQoKToKICAgICAiIiJGaW5kIGlmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBvcHRpbWl6YXRpb25zLiIiIgpAQCAtMTA0OCwxOSArMTE0NCwyMSBAQAogICAgIGZvciBvcHQgaW4gY2ZsYWdzLnNwbGl0KCk6CiAgICAgICAgIGlmIG9wdC5zdGFydHN3aXRoKCctTycpOgogICAgICAgICAgICAgZmluYWxfb3B0ID0gb3B0Ci0gICAgcmV0dXJuIGZpbmFsX29wdCBhbmQgZmluYWxfb3B0ICE9ICctTzAnCisgICAgcmV0dXJuIGZpbmFsX29wdCAhPSAnJyBhbmQgZmluYWxfb3B0ICE9ICctTzAnCiAKIAotX2hlYWRlciA9ICcyUCcKK19oZWFkZXIgPSAnblAnCitfYWxpZ24gPSAnMG4nCiBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICBfaGVhZGVyID0gJzJQJyArIF9oZWFkZXIKLV92aGVhZGVyID0gX2hlYWRlciArICdQJworICAgIF9hbGlnbiA9ICcwUCcKK192aGVhZGVyID0gX2hlYWRlciArICduJwogCiBkZWYgY2FsY29ianNpemUoZm10KToKLSAgICByZXR1cm4gc3RydWN0LmNhbGNzaXplKF9oZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArIF9hbGlnbikKIAogZGVmIGNhbGN2b2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyBfYWxpZ24pCiAKIAogX1RQRkxBR1NfSEFWRV9HQyA9IDE8PDE0CkBAIC0xMTc5LDQxICsxMjc3LDM1IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01lbW9yeSBsaW1pdCAlciB0b28gbG93IHRvIGJlIHVzZWZ1bCcgJSAobGltaXQsKSkKICAgICBtYXhfbWVtdXNlID0gbWVtbGltaXQKIAotZGVmIF9tZW1vcnlfd2F0Y2hkb2coc3RhcnRfZXZ0LCBmaW5pc2hfZXZ0LCBwZXJpb2Q9MTAuMCk6Ci0gICAgIiIiQSBmdW5jdGlvbiB3aGljaCBwZXJpb2RpY2FsbHkgd2F0Y2hlcyB0aGUgcHJvY2VzcycgbWVtb3J5IGNvbnN1bXB0aW9uCitjbGFzcyBfTWVtb3J5V2F0Y2hkb2c6CisgICAgIiIiQW4gb2JqZWN0IHdoaWNoIHBlcmlvZGljYWxseSB3YXRjaGVzIHRoZSBwcm9jZXNzJyBtZW1vcnkgY29uc3VtcHRpb24KICAgICBhbmQgcHJpbnRzIGl0IG91dC4KICAgICAiIiIKLSAgICAjIFhYWDogYmVjYXVzZSBvZiB0aGUgR0lMLCBhbmQgYmVjYXVzZSB0aGUgdmVyeSBsb25nIG9wZXJhdGlvbnMgdGVzdGVkCi0gICAgIyBpbiBtb3N0IGJpZ21lbSB0ZXN0cyBhcmUgdW5pbnRlcnJ1cHRpYmxlLCB0aGUgbG9vcCBiZWxvdyBnZXRzIHdva2VuIHVwCi0gICAgIyBtdWNoIGxlc3Mgb2Z0ZW4gdGhhbiBleHBlY3RlZC4KLSAgICAjIFRoZSBwb2xsaW5nIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiByYXcgQywgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwsCi0gICAgIyBhbmQgcHVzaCByZXN1bHRzIG9udG8gYW4gYW5vbnltb3VzIHBpcGUuCi0gICAgdHJ5OgotICAgICAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFU0laRScpCi0gICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYucHJvY2ZpbGUgPSAnL3Byb2Mve3BpZH0vc3RhdG0nLmZvcm1hdChwaWQ9b3MuZ2V0cGlkKCkpCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IEZhbHNlCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VfU0laRScpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgotICAgICAgICAgICAgcGFnZV9zaXplID0gNDA5NgotICAgIHByb2NmaWxlID0gJy9wcm9jL3twaWR9L3N0YXRtJy5mb3JtYXQocGlkPW9zLmdldHBpZCgpKQotICAgIHRyeToKLSAgICAgICAgZiA9IG9wZW4ocHJvY2ZpbGUsICdyYicpCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgd2FybmluZ3Mud2FybignL3Byb2Mgbm90IGF2YWlsYWJsZSBmb3Igc3RhdHM6IHt9Jy5mb3JtYXQoZSksCi0gICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICByZXR1cm4KLSAgICB3aXRoIGY6Ci0gICAgICAgIHN0YXJ0X2V2dC5zZXQoKQotICAgICAgICBvbGRfZGF0YSA9IC0xCi0gICAgICAgIHdoaWxlIG5vdCBmaW5pc2hfZXZ0LndhaXQocGVyaW9kKToKLSAgICAgICAgICAgIGYuc2VlaygwKQotICAgICAgICAgICAgc3RhdG0gPSBmLnJlYWQoKS5kZWNvZGUoJ2FzY2lpJykKLSAgICAgICAgICAgIGRhdGEgPSBpbnQoc3RhdG0uc3BsaXQoKVs1XSkKLSAgICAgICAgICAgIGlmIGRhdGEgIT0gb2xkX2RhdGE6Ci0gICAgICAgICAgICAgICAgb2xkX2RhdGEgPSBkYXRhCi0gICAgICAgICAgICAgICAgcHJpbnQoIiAuLi4gcHJvY2VzcyBkYXRhIHNpemU6IHtkYXRhOi4xZn1HIgotICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGRhdGE9ZGF0YSAqIHBhZ2Vfc2l6ZSAvICgxMDI0ICoqIDMpKSkKKyAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYucHJvY2ZpbGUsICdyJykKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJy9wcm9jIG5vdCBhdmFpbGFibGUgZm9yIHN0YXRzOiB7fScuZm9ybWF0KGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgd2F0Y2hkb2dfc2NyaXB0ID0gZmluZGZpbGUoIm1lbW9yeV93YXRjaGRvZy5weSIpCisgICAgICAgIHNlbGYubWVtX3dhdGNoZG9nID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsIHdhdGNoZG9nX3NjcmlwdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1mLCBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5zdGFydGVkID0gVHJ1ZQorCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc3RhcnRlZDoKKyAgICAgICAgICAgIHNlbGYubWVtX3dhdGNoZG9nLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzZWxmLm1lbV93YXRjaGRvZy53YWl0KCkKKwogCiBkZWYgYmlnbWVtdGVzdChzaXplLCBtZW11c2UsIGRyeV9ydW49VHJ1ZSk6CiAgICAgIiIiRGVjb3JhdG9yIGZvciBiaWdtZW0gdGVzdHMuCkBAIC0xMjQwLDI3ICsxMzMyLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIG1lbW9yeTogJS4xZkcgbWluaW11bSBuZWVkZWQiCiAgICAgICAgICAgICAgICAgICAgICUgKHNpemUgKiBtZW11c2UgLyAoMTAyNCAqKiAzKSkpCiAKLSAgICAgICAgICAgIGlmIHJlYWxfbWF4X21lbXVzZSBhbmQgdmVyYm9zZSBhbmQgdGhyZWFkaW5nOgorICAgICAgICAgICAgaWYgcmVhbF9tYXhfbWVtdXNlIGFuZCB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgICBwcmludCgiIC4uLiBleHBlY3RlZCBwZWFrIG1lbW9yeSB1c2U6IHtwZWFrOi4xZn1HIgogICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQocGVhaz1zaXplICogbWVtdXNlIC8gKDEwMjQgKiogMykpKQotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgICAgIHN0YXJ0X2V2dCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgICAgICAgICAgZmluaXNoX2V2dCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9tZW1vcnlfd2F0Y2hkb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc3RhcnRfZXZ0LCBmaW5pc2hfZXZ0LCAwLjUpKQotICAgICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAgICAgICAgIHN0YXJ0X2V2dC5zZXQoKQorICAgICAgICAgICAgICAgIHdhdGNoZG9nID0gX01lbW9yeVdhdGNoZG9nKCkKKyAgICAgICAgICAgICAgICB3YXRjaGRvZy5zdGFydCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHQgPSBOb25lCisgICAgICAgICAgICAgICAgd2F0Y2hkb2cgPSBOb25lCiAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gZihzZWxmLCBtYXhzaXplKQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiB0OgotICAgICAgICAgICAgICAgICAgICBmaW5pc2hfZXZ0LnNldCgpCi0gICAgICAgICAgICAgICAgICAgIHQuam9pbigpCisgICAgICAgICAgICAgICAgaWYgd2F0Y2hkb2c6CisgICAgICAgICAgICAgICAgICAgIHdhdGNoZG9nLnN0b3AoKQogCiAgICAgICAgIHdyYXBwZXIuc2l6ZSA9IHNpemUKICAgICAgICAgd3JhcHBlci5tZW11c2UgPSBtZW11c2UKQEAgLTEzNDIsNiArMTQyNywzMyBAQAogICAgIHJldHVybiBndWFyZHMuZ2V0KHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLmxvd2VyKCksIGRlZmF1bHQpCiAKIAorZGVmIG5vX3RyYWNpbmcoZnVuYyk6CisgICAgIiIiRGVjb3JhdG9yIHRvIHRlbXBvcmFyaWx5IHR1cm4gb2ZmIHRyYWNpbmcgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIHRlc3QuIiIiCisgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKToKKyAgICAgICAgcmV0dXJuIGZ1bmMKKyAgICBlbHNlOgorICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBvcmlnaW5hbF90cmFjZSA9IHN5cy5nZXR0cmFjZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzeXMuc2V0dHJhY2Uob3JpZ2luYWxfdHJhY2UpCisgICAgICAgIHJldHVybiB3cmFwcGVyCisKKworZGVmIHJlZmNvdW50X3Rlc3QodGVzdCk6CisgICAgIiIiRGVjb3JhdG9yIGZvciB0ZXN0cyB3aGljaCBpbnZvbHZlIHJlZmVyZW5jZSBjb3VudGluZy4KKworICAgIFRvIHN0YXJ0LCB0aGUgZGVjb3JhdG9yIGRvZXMgbm90IHJ1biB0aGUgdGVzdCBpZiBpcyBub3QgcnVuIGJ5IENQeXRob24uCisgICAgQWZ0ZXIgdGhhdCwgYW55IHRyYWNlIGZ1bmN0aW9uIGlzIHVuc2V0IGR1cmluZyB0aGUgdGVzdCB0byBwcmV2ZW50CisgICAgdW5leHBlY3RlZCByZWZjb3VudHMgY2F1c2VkIGJ5IHRoZSB0cmFjZSBmdW5jdGlvbi4KKworICAgICIiIgorICAgIHJldHVybiBub190cmFjaW5nKGNweXRob25fb25seSh0ZXN0KSkKKworCiBkZWYgX2ZpbHRlcl9zdWl0ZShzdWl0ZSwgcHJlZCk6CiAgICAgIiIiUmVjdXJzaXZlbHkgZmlsdGVyIHRlc3QgY2FzZXMgaW4gYSBzdWl0ZSBiYXNlZCBvbiBhIHByZWRpY2F0ZS4iIiIKICAgICBuZXd0ZXN0cyA9IFtdCkBAIC0xMzU0LDcgKzE0NjYsNiBAQAogICAgICAgICAgICAgICAgIG5ld3Rlc3RzLmFwcGVuZCh0ZXN0KQogICAgIHN1aXRlLl90ZXN0cyA9IG5ld3Rlc3RzCiAKLQogZGVmIF9ydW5fc3VpdGUoc3VpdGUpOgogICAgICIiIlJ1biB0ZXN0cyBmcm9tIGEgdW5pdHRlc3QuVGVzdFN1aXRlLWRlcml2ZWQgY2xhc3MuIiIiCiAgICAgaWYgdmVyYm9zZToKQEAgLTE0MDMsNyArMTUxNCw3IEBACiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgZG9jdGVzdCBkcml2ZXIuCiAKLWRlZiBydW5fZG9jdGVzdChtb2R1bGUsIHZlcmJvc2l0eT1Ob25lKToKK2RlZiBydW5fZG9jdGVzdChtb2R1bGUsIHZlcmJvc2l0eT1Ob25lLCBvcHRpb25mbGFncz0wKToKICAgICAiIiJSdW4gZG9jdGVzdCBvbiB0aGUgZ2l2ZW4gbW9kdWxlLiAgUmV0dXJuICgjZmFpbHVyZXMsICN0ZXN0cykuCiAKICAgICBJZiBvcHRpb25hbCBhcmd1bWVudCB2ZXJib3NpdHkgaXMgbm90IHNwZWNpZmllZCAob3IgaXMgTm9uZSksIHBhc3MKQEAgLTE0MTgsNyArMTUyOSw3IEBACiAgICAgZWxzZToKICAgICAgICAgdmVyYm9zaXR5ID0gTm9uZQogCi0gICAgZiwgdCA9IGRvY3Rlc3QudGVzdG1vZChtb2R1bGUsIHZlcmJvc2U9dmVyYm9zaXR5KQorICAgIGYsIHQgPSBkb2N0ZXN0LnRlc3Rtb2QobW9kdWxlLCB2ZXJib3NlPXZlcmJvc2l0eSwgb3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MpCiAgICAgaWYgZjoKICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiJWQgb2YgJWQgZG9jdGVzdHMgZmFpbGVkIiAlIChmLCB0KSkKICAgICBpZiB2ZXJib3NlOgpAQCAtMTU3NiwyOCArMTY4NywxMyBAQAogICAgIFRoaXMgd2lsbCB0eXBpY2FsbHkgYmUgcnVuIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbW11bmljYXRlKCkgbWV0aG9kCiAgICAgb2YgYSBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdC4KICAgICAiIiIKLSAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmc1xdXHI/XG4/JCIsIGIiIiwgc3RkZXJyKS5zdHJpcCgpCisgICAgc3RkZXJyID0gcmUuc3ViKGJyIlxbXGQrIHJlZnNcXVxyP1xuPyIsIGIiIiwgc3RkZXJyKS5zdHJpcCgpCiAgICAgcmV0dXJuIHN0ZGVycgogCiBkZWYgYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50Ci0gICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgotICAgIGZsYWdfb3B0X21hcCA9IHsKLSAgICAgICAgJ2J5dGVzX3dhcm5pbmcnOiAnYicsCi0gICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAotICAgICAgICAnaGFzaF9yYW5kb21pemF0aW9uJzogJ1InLAotICAgICAgICAnaWdub3JlX2Vudmlyb25tZW50JzogJ0UnLAotICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAotICAgICAgICAnbm9fc2l0ZSc6ICdTJywKLSAgICAgICAgJ29wdGltaXplJzogJ08nLAotICAgICAgICAndmVyYm9zZSc6ICd2JywKLSAgICB9Ci0gICAgYXJncyA9IFtdCi0gICAgZm9yIGZsYWcsIG9wdCBpbiBmbGFnX29wdF9tYXAuaXRlbXMoKToKLSAgICAgICAgdiA9IGdldGF0dHIoc3lzLmZsYWdzLCBmbGFnKQotICAgICAgICBpZiB2ID4gMDoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctJyArIG9wdCAqIHYpCi0gICAgcmV0dXJuIGFyZ3MKKyAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKIAogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBTdXBwb3J0IGZvciBhc3NlcnRpb25zIGFib3V0IGxvZ2dpbmcuCkBAIC0xNjg3LDYgKzE3ODMsNDAgQEAKICAgICBtc2cgPSAiUmVxdWlyZXMgZnVuY3Rpb25hbCBzeW1saW5rIGltcGxlbWVudGF0aW9uIgogICAgIHJldHVybiB0ZXN0IGlmIG9rIGVsc2UgdW5pdHRlc3Quc2tpcChtc2cpKHRlc3QpCiAKK19jYW5feGF0dHIgPSBOb25lCitkZWYgY2FuX3hhdHRyKCk6CisgICAgZ2xvYmFsIF9jYW5feGF0dHIKKyAgICBpZiBfY2FuX3hhdHRyIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gX2Nhbl94YXR0cgorICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKKyAgICAgICAgY2FuID0gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICB0bXBfZnAsIHRtcF9uYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBURVNURk4gJiB0ZW1wZmlsZSBtYXkgdXNlIGRpZmZlcmVudCBmaWxlIHN5c3RlbXMgd2l0aAorICAgICAgICAgICAgICAgICAgICAjIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMKKyAgICAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIodG1wX2ZwLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQorICAgICAgICAgICAgICAgICAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KKyAgICAgICAgICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgIGNhbiA9IG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY2FuID0gRmFsc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgICAgICB1bmxpbmsodG1wX25hbWUpCisgICAgX2Nhbl94YXR0ciA9IGNhbgorICAgIHJldHVybiBjYW4KKworZGVmIHNraXBfdW5sZXNzX3hhdHRyKHRlc3QpOgorICAgICIiIlNraXAgZGVjb3JhdG9yIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZnVuY3Rpb25hbCBleHRlbmRlZCBhdHRyaWJ1dGVzIiIiCisgICAgb2sgPSBjYW5feGF0dHIoKQorICAgIG1zZyA9ICJubyBub24tYnJva2VuIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdXBwb3J0IgorICAgIHJldHVybiB0ZXN0IGlmIG9rIGVsc2UgdW5pdHRlc3Quc2tpcChtc2cpKHRlc3QpCisKIGRlZiBwYXRjaCh0ZXN0X2luc3RhbmNlLCBvYmplY3RfdG9fcGF0Y2gsIGF0dHJfbmFtZSwgbmV3X3ZhbHVlKToKICAgICAiIiJPdmVycmlkZSAnb2JqZWN0X3RvX3BhdGNoJy4nYXR0cl9uYW1lJyB3aXRoICduZXdfdmFsdWUnLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKaW5kZXggM2ZhZGI1Ny4uNDIzMWYzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQpAQCAtMSwyMyArMSwyNSBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogZnJvbSBfbG9jYWxlIGltcG9ydCAoc2V0bG9jYWxlLCBMQ19BTEwsIExDX0NUWVBFLCBMQ19OVU1FUklDLCBsb2NhbGVjb252LCBFcnJvcikKIHRyeToKICAgICBmcm9tIF9sb2NhbGUgaW1wb3J0IChSQURJWENIQVIsIFRIT1VTRVAsIG5sX2xhbmdpbmZvKQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG5sX2xhbmdpbmZvID0gTm9uZQogCi1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgdW5hbWUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAotaWYgdW5hbWUoKVswXSA9PSAiRGFyd2luIjoKLSAgICBtYWosIG1pbiwgbWljID0gW2ludChwYXJ0KSBmb3IgcGFydCBpbiB1bmFtZSgpWzJdLnNwbGl0KCIuIildCitpZiB1bmFtZSgpLnN5c3RlbSA9PSAiRGFyd2luIjoKKyAgICBtYWosIG1pbiwgbWljID0gW2ludChwYXJ0KSBmb3IgcGFydCBpbiB1bmFtZSgpLnJlbGVhc2Uuc3BsaXQoIi4iKV0KICAgICBpZiAobWFqLCBtaW4sIG1pYykgPCAoOCwgMCwgMCk6CiAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJsb2NhbGUgc3VwcG9ydCBicm9rZW4gZm9yIE9TIFggPCAxMC40IikKIAogY2FuZGlkYXRlX2xvY2FsZXMgPSBbJ2VzX1VZJywgJ2ZyX0ZSJywgJ2ZpX0ZJJywgJ2VzX0NPJywgJ3B0X1BUJywgJ2l0X0lUJywKICAgICAnZXRfRUUnLCAnZXNfUFknLCAnbm9fTk8nLCAnbmxfTkwnLCAnbHZfTFYnLCAnZWxfR1InLCAnYmVfQlknLCAnZnJfQkUnLAogICAgICdyb19STycsICdydV9VQScsICdydV9SVScsICdlc19WRScsICdjYV9FUycsICdzZV9OTycsICdlc19FQycsICdpZF9JRCcsCi0gICAgJ2thX0dFJywgJ2VzX0NMJywgJ2h1X0hVJywgJ3dhX0JFJywgJ2x0X0xUJywgJ3NsX1NJJywgJ2hyX0hSJywgJ2VzX0FSJywKKyAgICAna2FfR0UnLCAnZXNfQ0wnLCAnd2FfQkUnLCAnaHVfSFUnLCAnbHRfTFQnLCAnc2xfU0knLCAnaHJfSFInLCAnZXNfQVInLAogICAgICdlc19FUycsICdvY19GUicsICdnbF9FUycsICdiZ19CRycsICdpc19JUycsICdta19NSycsICdkZV9BVCcsICdwdF9CUicsCiAgICAgJ2RhX0RLJywgJ25uX05PJywgJ2NzX0NaJywgJ2RlX0xVJywgJ2VzX0JPJywgJ3NxX0FMJywgJ3NrX1NLJywgJ2ZyX0NIJywKICAgICAnZGVfREUnLCAnc3JfWVUnLCAnYnJfRlInLCAnbmxfQkUnLCAnc3ZfRkknLCAncGxfUEwnLCAnZnJfQ0EnLCAnZm9fRk8nLApAQCAtMjUsNiArMjcsMzEgQEAKICAgICAnZXVfRVMnLCAndmlfVk4nLCAnYWZfWkEnLCAnbmJfTk8nLCAnZW5fREsnLCAndGdfVEonLCAnZW5fVVMnLAogICAgICdlc19FUy5JU084ODU5LTEnLCAnZnJfRlIuSVNPODg1OS0xNScsICdydV9SVS5LT0k4LVInLCAna29fS1IuZXVjS1InXQogCisjIElzc3VlICMxMzQ0MTogU2tpcCBzb21lIGxvY2FsZXMgKGUuZy4gY3NfQ1ogYW5kIGh1X0hVKSBvbiBTb2xhcmlzIHRvCisjIHdvcmthcm91bmQgYSBtYnN0b3djcygpIGJ1Zy4gRm9yIGV4YW1wbGUsIG9uIFNvbGFyaXMsIHRoZSBodV9IVSBsb2NhbGUgdXNlcworIyB0aGUgbG9jYWxlIGVuY29kaW5nIElTTy04ODU5LTIsIHRoZSB0aG91c2F1ZHMgc2VwYXJhdG9yIGlzIGInXHhBMCcgYW5kIGl0IGlzCisjIGRlY29kZWQgYXMgVSszMDAwMDAyMCAoYW4gaW52YWxpZCBjaGFyYWN0ZXIpIGJ5IG1ic3Rvd2NzKCkuCitpZiBzeXMucGxhdGZvcm0gPT0gJ3N1bm9zNSc6CisgICAgb2xkX2xvY2FsZSA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKKyAgICB0cnk6CisgICAgICAgIGxvY2FsZXMgPSBbXQorICAgICAgICBmb3IgbG9jIGluIGNhbmRpZGF0ZV9sb2NhbGVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgbG9jKQorICAgICAgICAgICAgZXhjZXB0IEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2NhbGVjb252KCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBTa2lwIGxvY2FsZSAlcyAoZW5jb2RpbmcgJXMpOiBbJXNdICVzIgorICAgICAgICAgICAgICAgICAgICAgICUgKGxvYywgZW5jb2RpbmcsIHR5cGUoZXJyKSwgZXJyKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9jYWxlcy5hcHBlbmQobG9jKQorICAgICAgICBjYW5kaWRhdGVfbG9jYWxlcyA9IGxvY2FsZXMKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsIG9sZF9sb2NhbGUpCisKICMgV29ya2Fyb3VuZCBmb3IgTVNWQzYoZGVidWcpIGNyYXNoIGJ1ZwogaWYgIk1TQyB2LjEyMDAiIGluIHN5cy52ZXJzaW9uOgogICAgIGRlZiBhY2NlcHQobG9jKToKQEAgLTg2LDkgKzExMywxMCBAQAogICAgICAgICAgICAgICAgIHNldGxvY2FsZShMQ19DVFlQRSwgbG9jKQogICAgICAgICAgICAgZXhjZXB0IEVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3JtYXR0aW5nID0gbG9jYWxlY29udigpCiAgICAgICAgICAgICBmb3IgbGMgaW4gKCJkZWNpbWFsX3BvaW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0aG91c2FuZHNfc2VwIik6Ci0gICAgICAgICAgICAgICAgc2VsZi5udW1lcmljX3Rlc3RlcignbG9jYWxlY29udicsIGxvY2FsZWNvbnYoKVtsY10sIGxjLCBsb2MpCisgICAgICAgICAgICAgICAgc2VsZi5udW1lcmljX3Rlc3RlcignbG9jYWxlY29udicsIGZvcm1hdHRpbmdbbGNdLCBsYywgbG9jKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobmxfbGFuZ2luZm8sICJubF9sYW5naW5mbyBpcyBub3QgYXZhaWxhYmxlIikKICAgICBkZWYgdGVzdF9sY19udW1lcmljX2Jhc2ljKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjE1OWVjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKQEAgLTAsMCArMSwyNzkgQEAKKyIiIgorVGVzdCBzdWl0ZSBmb3IgX29zeF9zdXBwb3J0OiBzaGFyZWQgT1MgWCBzdXBwb3J0IGZ1bmN0aW9ucy4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgdGVzdC5zdXBwb3J0CisKK2ltcG9ydCBfb3N4X3N1cHBvcnQKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImRhcndpbiIpLCAicmVxdWlyZXMgT1MgWCIpCitjbGFzcyBUZXN0X09TWFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYucHJvZ19uYW1lID0gJ2JvZ3VzX3Byb2dyYW1feHh4eCcKKyAgICAgICAgc2VsZi50ZW1wX3BhdGhfZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLmdldGN3ZCgpKQorICAgICAgICBzZWxmLmVudiA9IHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuZW52Ll9fZXhpdF9fKQorICAgICAgICBmb3IgY3YgaW4gKCdDRkxBR1MnLCAnTERGTEFHUycsICdDUFBGTEFHUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JBU0VDRkxBR1MnLCAnQkxEU0hBUkVEJywgJ0xEU0hBUkVEJywgJ0NDJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ1hYJywgJ1BZX0NGTEFHUycsICdQWV9MREZMQUdTJywgJ1BZX0NQUEZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFlfQ09SRV9DRkxBR1MnKToKKyAgICAgICAgICAgIGlmIGN2IGluIHNlbGYuZW52OgorICAgICAgICAgICAgICAgIHNlbGYuZW52LnVuc2V0KGN2KQorCisgICAgZGVmIGFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhzZWxmLCBjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycyk6CisgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIGluaXRpYWwgdmFsdWVzIGZvciBhbGwgbW9kaWZpZWQgY29uZmlnIHZhcnMKKyAgICAgICAgIyBhcmUgYWxzbyBzYXZlZCB3aXRoIG1vZGlmaWVkIGtleXMuCisgICAgICAgIGV4cGVjdGVkX3ZhcnMudXBkYXRlKCgnX09TWF9TVVBQT1JUX0lOSVRJQUxfJysgaywKKyAgICAgICAgICAgICAgICBjb25maWdfdmFyc1trXSkgZm9yIGsgaW4gY29uZmlnX3ZhcnMKKyAgICAgICAgICAgICAgICAgICAgaWYgY29uZmlnX3ZhcnNba10gIT0gZXhwZWN0ZWRfdmFyc1trXSkKKworICAgIGRlZiB0ZXN0X19maW5kX2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZW52WydQQVRIJ106CisgICAgICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gc2VsZi5lbnZbJ1BBVEgnXSArICc6JworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gc2VsZi5lbnZbJ1BBVEgnXSArIG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpCisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsoc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKF9vc3hfc3VwcG9ydC5fZmluZF9leGVjdXRhYmxlKHNlbGYucHJvZ19uYW1lKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucHJvZ19uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcm9nX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuL2Jpbi9lY2hvIE9LXG4iKQorICAgICAgICBvcy5jaG1vZChzZWxmLnByb2dfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucHJvZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fZmluZF9leGVjdXRhYmxlKHNlbGYucHJvZ19uYW1lKSkKKworICAgIGRlZiB0ZXN0X19yZWFkX291dHB1dChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5lbnZbJ1BBVEgnXToKKyAgICAgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgJzonCisgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhzZWxmLnByb2dfbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucHJvZ19uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5wcm9nX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuL2Jpbi9lY2hvIEV4cGVjdGVkT3V0cHV0XG4iKQorICAgICAgICBvcy5jaG1vZChzZWxmLnByb2dfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFeHBlY3RlZE91dHB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZWFkX291dHB1dChzZWxmLnByb2dfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9fZmluZF9idWlsZF90b29sKHNlbGYpOgorICAgICAgICBvdXQgPSBfb3N4X3N1cHBvcnQuX2ZpbmRfYnVpbGRfdG9vbCgnY2MnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2Mgbm90IGZvdW5kIC0gY2hlY2sgeGNvZGUtc2VsZWN0JykKKworICAgIGRlZiB0ZXN0X19nZXRfc3lzdGVtX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbGF0Zm9ybS5tYWNfdmVyKClbMF0uc3RhcnRzd2l0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fZ2V0X3N5c3RlbV92ZXJzaW9uKCkpKQorCisgICAgZGVmIHRlc3RfX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBjdiA9ICdDQycKKyAgICAgICAgbmV3dmFsdWUgPSAnY2xhbmcgLXB0aHJlYWRzJworICAgICAgICBfb3N4X3N1cHBvcnQuX3NhdmVfbW9kaWZpZWRfdmFsdWUoY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleHBlY3RlZF92YXJzLCBjb25maWdfdmFycykKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGNvbmZpZ192YXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorCisgICAgZGVmIHRlc3RfX3NhdmVfbW9kaWZpZWRfdmFsdWUoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKyAgICAgICAgY3YgPSAnQ0MnCisgICAgICAgIG5ld3ZhbHVlID0gJ2NsYW5nIC1wdGhyZWFkcycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9zYXZlX21vZGlmaWVkX3ZhbHVlKGNvbmZpZ192YXJzLCBjdiwgbmV3dmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisKKyAgICBkZWYgdGVzdF9fc2F2ZV9tb2RpZmllZF92YWx1ZV91bmNoYW5nZWQoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0gY29uZmlnX3ZhcnMuY29weSgpCisgICAgICAgIGN2ID0gJ0NDJworICAgICAgICBuZXd2YWx1ZSA9ICdnY2MtdGVzdCAtcHRocmVhZHMnCisgICAgICAgIF9vc3hfc3VwcG9ydC5fc2F2ZV9tb2RpZmllZF92YWx1ZShjb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorCisgICAgZGVmIHRlc3RfX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoc2VsZik6CisgICAgICAgIGltcG9ydCBwbGF0Zm9ybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtLm1hY192ZXIoKVswXS5zcGxpdCgnLicpID49IFsnMTAnLCAnNCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpKQorCisgICAgZGVmIHRlc3RfX2ZpbmRfYXBwcm9wcmlhdGVfY29tcGlsZXIoc2VsZik6CisgICAgICAgIGNvbXBpbGVycyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICgnZ2NjLXRlc3QnLCAnaTY4Ni1hcHBsZS1kYXJ3aW4xMS1sbHZtLWdjYy00LjInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICgnY2xhbmcnLCAnY2xhbmcgdmVyc2lvbiAzLjEnKSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2djYy10ZXN0IC1wdGhyZWFkcycsCisgICAgICAgICdDWFgnOiAnY2MrKy10ZXN0JywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLXRlc3QgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtdGVzdCAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nIC1wdGhyZWFkcycsCisgICAgICAgICdDWFgnOiAnY2xhbmcrKycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2NsYW5nIC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnY2xhbmcgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHN1ZmZpeCA9ICgnOicgKyBzZWxmLmVudlsnUEFUSCddKSBpZiBzZWxmLmVudlsnUEFUSCddIGVsc2UgJycKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpICsgc3VmZml4CisgICAgICAgIGZvciBjX25hbWUsIGNfb3V0cHV0IGluIGNvbXBpbGVyczoKKyAgICAgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsoY19uYW1lKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIGNfbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihjX25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCIjIS9iaW4vc2hcbi9iaW4vZWNobyAiICsgY19vdXRwdXQpCisgICAgICAgICAgICBvcy5jaG1vZChjX25hbWUsIHN0YXQuU19JUldYVSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zICAgICcsCisgICAgICAgICdMREZMQUdTJzogJyAgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gICcsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgIC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgICAgIC1nJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocyhzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAgLWFyY2ggaTM4NiAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHN1ZmZpeCA9ICgnOicgKyBzZWxmLmVudlsnUEFUSCddKSBpZiBzZWxmLmVudlsnUEFUSCddIGVsc2UgJycKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IG9zLnBhdGguYWJzcGF0aChzZWxmLnRlbXBfcGF0aF9kaXIpICsgc3VmZml4CisgICAgICAgIGNfbmFtZSA9ICdjbGFuZycKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhjX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQudW5saW5rLCBjX25hbWUpCisgICAgICAgICMgZXhpdCBzdGF0dXMgMjU1IG1lYW5zIG5vIFBQQyBzdXBwb3J0IGluIHRoaXMgY29tcGlsZXIgY2hhaW4KKyAgICAgICAgd2l0aCBvcGVuKGNfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG5leGl0IDI1NSIpCisgICAgICAgIG9zLmNobW9kKGNfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfdW5zdXBwb3J0ZWRfYXJjaHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9fb3ZlcnJpZGVfYWxsX2FyY2hzKHNlbGYpOgorICAgICAgICBzZWxmLmVudlsnQVJDSEZMQUdTJ10gPSAnLWFyY2ggeDg2XzY0JworICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgICAgIC1hcmNoIHg4Nl82NCcsCisgICAgICAgICdMREZMQUdTJzogJyAgICAtZyAtYXJjaCB4ODZfNjQnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAgLWcgLWFyY2ggeDg2XzY0JywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgIC1pc3lzcm9vdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZyAtYXJjaCB4ODZfNjQnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX292ZXJyaWRlX2FsbF9hcmNocygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkaycsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuICAnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnIC1nJywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmFkZF9leHBlY3RlZF9zYXZlZF9pbml0aWFsX3ZhbHVlcyhjb25maWdfdmFycywgZXhwZWN0ZWRfdmFycykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9jaGVja19mb3JfdW5hdmFpbGFibGVfc2RrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfZ2V0X3BsYXRmb3JtX29zeChzZWxmKToKKyAgICAgICAgIyBOb3RlLCBnZXRfcGxhdGZvcm1fb3N4IGlzIGN1cnJlbnRseSB0ZXN0ZWQgbW9yZSBleHRlbnNpdmVseQorICAgICAgICAjIGluZGlyZWN0bHkgYnkgdGVzdF9zeXNjb25maWcgYW5kIHRlc3RfZGlzdHV0aWxzCisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrJywKKyAgICAgICAgJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCc6ICcxMC42JywKKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBfb3N4X3N1cHBvcnQuZ2V0X3BsYXRmb3JtX29zeChjb25maWdfdmFycywgJyAnLCAnICcsICcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ21hY29zeCcsICcxMC42JywgJ2ZhdCcpLCByZXN1bHQpCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdF9PU1hTdXBwb3J0KQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWJjLnB5CmluZGV4IGQ4NmY5N2MuLjY1M2M5NTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWJjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWJjLnB5CkBAIC0xMCwxNCArMTAsNyBAQAogZnJvbSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0CiAKIAotY2xhc3MgVGVzdEFCQyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9iYXNpY3Moc2VsZik6Ci0gICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcwotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQotICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorY2xhc3MgVGVzdExlZ2FjeUFQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9hYnN0cmFjdHByb3BlcnR5X2Jhc2ljcyhzZWxmKToKICAgICAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CkBAIC0yOSwxMCArMjIsMTIgQEAKICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgQGFiYy5hYnN0cmFjdHByb3BlcnR5CiAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCiAgICAgICAgIGNsYXNzIEQoQyk6CiAgICAgICAgICAgICBAcHJvcGVydHkKICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihELmZvbywgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQogCiAgICAgZGVmIHRlc3RfYWJzdHJhY3RjbGFzc21ldGhvZF9iYXNpY3Moc2VsZik6CiAgICAgICAgIEBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZApAQCAtNDAsNyArMzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgZGVmIGJhcihjbHMpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgQGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kCkBAIC01OCw3ICs1Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCiAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgZGVmIGJhcigpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgQGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZApAQCAtOTgsNiArOTMsMTYzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYpICAjIGJlY2F1c2UgYmFyIGlzIGFic3RyYWN0IG5vdwogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoRikpCiAKKworY2xhc3MgVGVzdEFCQyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9iYXNpY3Moc2VsZik6CisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIpKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3Rwcm9wZXJ0eV9iYXNpY3Moc2VsZik6CisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKyAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCisKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vLCAzKQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RjbGFzc21ldGhvZF9iYXNpY3Moc2VsZik6CisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oY2xzKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIGJhcihjbHMpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKKworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzKTogcmV0dXJuIGNscy5fX25hbWVfXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzKTogcmV0dXJuIHN1cGVyKCkuZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELmZvbygpLCAnRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbygpLCAnRCcpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdHN0YXRpY21ldGhvZF9iYXNpY3Moc2VsZik6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQorCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbygpLCA0KQorCisgICAgZGVmIHRlc3RfYWJzdHJhY3RtZXRob2RfaW50ZWdyYXRpb24oc2VsZik6CisgICAgICAgIGZvciBhYnN0cmFjdHRoaW5nIGluIFthYmMuYWJzdHJhY3RtZXRob2QsIGFiYy5hYnN0cmFjdHByb3BlcnR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmMuYWJzdHJhY3RzdGF0aWNtZXRob2RdOgorICAgICAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgICAgIEBhYnN0cmFjdHRoaW5nCisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcyAgIyBhYnN0cmFjdAorICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImZvbyJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKSAgIyBiZWNhdXNlIGZvbyBpcyBhYnN0cmFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoQykpCisgICAgICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgY29uY3JldGUgb3ZlcnJpZGUgb2YgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImZvbyJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKSAgIyBiZWNhdXNlIGZvbyBpcyBzdGlsbCBhYnN0cmFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzYWJzdHJhY3QoRCkpCisgICAgICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRS5fX2Fic3RyYWN0bWV0aG9kc19fLCBzZXQoKSkKKyAgICAgICAgICAgIEUoKSAgIyBub3cgZm9vIGlzIGNvbmNyZXRlLCB0b28KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNhYnN0cmFjdChFKSkKKyAgICAgICAgICAgIGNsYXNzIEYoRSk6CisgICAgICAgICAgICAgICAgQGFic3RyYWN0dGhpbmcKKyAgICAgICAgICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzICAjIGFic3RyYWN0IG92ZXJyaWRlIG9mIGNvbmNyZXRlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYuX19hYnN0cmFjdG1ldGhvZHNfXywgeyJiYXIifSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRikgICMgYmVjYXVzZSBiYXIgaXMgYWJzdHJhY3Qgbm93CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChGKSkKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JzX3dpdGhfYWJzdHJhY3RtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIDMKKyAgICAgICAgICAgIEBmb28uc2V0dGVyCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBEKEMpOgorICAgICAgICAgICAgQEMuZm9vLmdldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCkKKyAgICAgICAgY2xhc3MgRShEKToKKyAgICAgICAgICAgIEBELmZvby5zZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEUoKS5mb28sIDMpCisgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcHJvcGVydHkncyBfX2lzYWJzdHJhY3RtZXRob2RfXyBkZXNjcmlwdG9yIGRvZXMgdGhlCisgICAgICAgICMgcmlnaHQgdGhpbmcgd2hlbiBwcmVzZW50ZWQgd2l0aCBhIHZhbHVlIHRoYXQgZmFpbHMgdHJ1dGggdGVzdGluZzoKKyAgICAgICAgY2xhc3MgTm90Qm9vbChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQorICAgICAgICAgICAgX19sZW5fXyA9IF9fbm9uemVyb19fCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBGKEMpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBiYXIuX19pc2Fic3RyYWN0bWV0aG9kX18gPSBOb3RCb29sKCkKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShiYXIpCisKKworICAgIGRlZiB0ZXN0X2N1c3RvbWRlc2NyaXB0b3JzX3dpdGhfYWJzdHJhY3RtZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmdldCwgZnNldD1Ob25lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9mZ2V0ID0gZmdldAorICAgICAgICAgICAgICAgIHNlbGYuX2ZzZXQgPSBmc2V0CisgICAgICAgICAgICBkZWYgZ2V0dGVyKHNlbGYsIGNhbGxhYmxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVzY3JpcHRvcihjYWxsYWJsZSwgc2VsZi5fZmdldCkKKyAgICAgICAgICAgIGRlZiBzZXR0ZXIoc2VsZiwgY2FsbGFibGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZXNjcmlwdG9yKHNlbGYuX2ZnZXQsIGNhbGxhYmxlKQorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgX19pc2Fic3RyYWN0bWV0aG9kX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIChnZXRhdHRyKHNlbGYuX2ZnZXQsICdfX2lzYWJzdHJhY3RtZXRob2RfXycsIEZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2V0YXR0cihzZWxmLl9mc2V0LCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBEZXNjcmlwdG9yCisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICAgICAgQGZvby5zZXR0ZXIKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKQorICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgQEQuZm9vLnNldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRS5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisKICAgICBkZWYgdGVzdF9tZXRhY2xhc3NfYWJjKHNlbGYpOgogICAgICAgICAjIE1ldGFjbGFzc2VzIGNhbiBiZSBBQkNzLCB0b28uCiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKQEAgLTEyMSwxMSArMjczLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhCLCAoQSwpKSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGIsIEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShiLCAoQSwpKQotICAgICAgICBBLnJlZ2lzdGVyKEIpCisgICAgICAgIEIxID0gQS5yZWdpc3RlcihCKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCBBKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQiwgKEEsKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCBBKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgKEEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCMSwgQikKICAgICAgICAgY2xhc3MgQyhCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgYyA9IEMoKQpAQCAtMTM0LDYgKzI4NywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgQSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIChBLCkpCiAKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9hc19jbGFzc19kZWNvKHNlbGYpOgorICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIEBBLnJlZ2lzdGVyCisgICAgICAgIGNsYXNzIEIob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYiA9IEIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQiwgKEEsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgKEEsKSkKKyAgICAgICAgQEEucmVnaXN0ZXIKKyAgICAgICAgY2xhc3MgQyhCKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYyA9IEMoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBBKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgKEEsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgKEEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhDLCBBLnJlZ2lzdGVyKEMpKQorCiAgICAgZGVmIHRlc3RfaXNpbnN0YW5jZV9pbnZhbGlkYXRpb24oc2VsZik6CiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weQppbmRleCAyYTM5NmNkLi4yNTNlNmYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLnJlYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgaW50KDcpLmltYWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLmNvbmp1Z2F0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC03LCBpbnQoLTcpLmNvbmp1Z2F0ZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGludCg3KS5udW1lcmF0b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgaW50KDcpLmRlbm9taW5hdG9yKQogCkBAIC0yNCw2ICsyNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNy4zLCBmbG9hdCg3LjMpLnJlYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZmxvYXQoNy4zKS5pbWFnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcuMywgZmxvYXQoNy4zKS5jb25qdWdhdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtNy4zLCBmbG9hdCgtNy4zKS5jb25qdWdhdGUoKSkKIAogICAgIGRlZiB0ZXN0X2NvbXBsZXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhjb21wbGV4LCBSZWFsKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQppbmRleCBlZTRhZDZiLi5hZDZmNjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgY2FwdHVyZWRfc3Rkb3V0LCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluawogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIGltcG9ydCBpbwpAQCAtMjA3LDExICsyMDcsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAogICAgICAgICBiICs9IGInTUFSSycgKyBzdHJ1Y3QucGFjaygnPkxoQicsIDMsIDEsIDEpCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKICAgICAgICAgICAgIGYgPSBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHMuZ2V0dmFsdWUoKSwKLSAgICAgICAgICAgICdXYXJuaW5nOiBNQVJLIGNodW5rIGNvbnRhaW5zIG9ubHkgMCBtYXJrZXJzIGluc3RlYWQgb2YgMVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldG1hcmtlcnMoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3JlYWRfY29tbV9rbHVkZ2VfY29tcG5hbWVfZXZlbihzZWxmKToKQEAgLTIxOSw5ICsyMTYsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ05PTkUnICsgc3RydWN0LnBhY2soJ0InLCA0KSArIGInZXZlbicgKyBiJ1x4MDAnCiAgICAgICAgIGIgKz0gYidTU05EJyArIHN0cnVjdC5wYWNrKCc+TCcsIDgpICsgYidceDAwJyAqIDgKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgZiA9IGFpZmMub3Blbihpby5CeXRlc0lPKGIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemVcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXRjb21wbmFtZSgpLCBiJ2V2ZW4nKQogCiAgICAgZGVmIHRlc3RfcmVhZF9jb21tX2tsdWRnZV9jb21wbmFtZV9vZGQoc2VsZik6CkBAIC0yMjksOSArMjI1LDggQEAKICAgICAgICAgYiArPSBiJ0NPTU0nICsgc3RydWN0LnBhY2soJz5MaGxoaExMJywgMTgsIDAsIDAsIDAsIDAsIDAsIDApCiAgICAgICAgIGIgKz0gYidOT05FJyArIHN0cnVjdC5wYWNrKCdCJywgMykgKyBiJ29kZCcKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CiAgICAgICAgICAgICBmID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGNvbXBuYW1lKCksIGInb2RkJykKIAogICAgIGRlZiB0ZXN0X3dyaXRlX3BhcmFtc19yYWlzZXMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQppbmRleCAyMmMyNmNjLi5jMDZjOTQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKQEAgLTEzMjMsMjAgKzEzMjMsMjEgQEAKIGNsYXNzIFRlc3RQYXJzZXJEZWZhdWx0NDIoUGFyc2VyVGVzdENhc2UpOgogICAgICIiIlRlc3QgYWN0aW9ucyB3aXRoIGEgcGFyc2VyLWxldmVsIGRlZmF1bHQgb2YgNDIiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYXJndW1lbnRfZGVmYXVsdD00MiwgdmVyc2lvbj0nMS4wJykKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKGFyZ3VtZW50X2RlZmF1bHQ9NDIpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKSwKICAgICAgICAgU2lnKCdmb28nLCBuYXJncz0nPycpLAogICAgICAgICBTaWcoJ2JhcicsIG5hcmdzPScqJyksCiAgICAgICAgIFNpZygnLS1iYXonLCBhY3Rpb249J3N0b3JlX3RydWUnKSwKICAgICBdCiAgICAgZmFpbHVyZXMgPSBbJy14J10KICAgICBzdWNjZXNzZXMgPSBbCi0gICAgICAgICgnJywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej00MikpLAotICAgICAgICAoJ2EnLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej00MikpLAotICAgICAgICAoJ2EgYicsIE5TKGZvbz0nYScsIGJhcj1bJ2InXSwgYmF6PTQyKSksCi0gICAgICAgICgnLS1iYXonLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PVRydWUpKSwKLSAgICAgICAgKCdhIC0tYmF6JywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9VHJ1ZSkpLAotICAgICAgICAoJy0tYmF6IGEgYicsIE5TKGZvbz0nYScsIGJhcj1bJ2InXSwgYmF6PVRydWUpKSwKKyAgICAgICAgKCcnLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PTQyLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYScsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PTQyLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCctLWJheicsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9VHJ1ZSwgdmVyc2lvbj00MikpLAorICAgICAgICAoJ2EgLS1iYXonLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnLS1iYXogYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9VHJ1ZSwgdmVyc2lvbj00MikpLAogICAgIF0KIAogCkBAIC0yOTI3LDEwICsyOTI4LDkgQEAKICAgICAgICAgICAgICAgICBwYXJzZXJfdGV4dCA9IHNmaWxlLmdldHZhbHVlKCkKICAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KHRlc3RlciwgcGFyc2VyX3RleHQpCiAKLSAgICAgICAgIyBhZGQgdGVzdHMgZm9yIHtmb3JtYXQscHJpbnR9X3t1c2FnZSxoZWxwLHZlcnNpb259CisgICAgICAgICMgYWRkIHRlc3RzIGZvciB7Zm9ybWF0LHByaW50fV97dXNhZ2UsaGVscH0KICAgICAgICAgZm9yIGZ1bmNfc3VmZml4LCBzdGRfbmFtZSBpbiBbKCd1c2FnZScsICdzdGRvdXQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdoZWxwJywgJ3N0ZG91dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3ZlcnNpb24nLCAnc3RkZXJyJyldOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnc3Rkb3V0JyldOgogICAgICAgICAgICAgQWRkVGVzdHMoY2xzLCBmdW5jX3N1ZmZpeCwgc3RkX25hbWUpCiAKIGJhc2VzID0gVGVzdENhc2UsCkBAIC0yOTQxLDggKzI5NDEsOSBAQAogICAgICIiIk1ha2Ugc3VyZSB0aGF0IGFyZ3VtZW50IGhlbHAgYWxpZ25zIHdoZW4gb3B0aW9ucyBhcmUgbG9uZ2VyIiIiCiAKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nREVTQ1JJUFRJT04nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnLCB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyksCiAgICAgICAgIFNpZygnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdYIEhFTFAnKSwKICAgICAgICAgU2lnKCctLXknLCBoZWxwPSdZIEhFTFAnKSwKICAgICAgICAgU2lnKCdmb28nLCBoZWxwPSdGT08gSEVMUCcpLApAQCAtMjk3Nyw4ICsyOTc4LDkgQEAKICAgICAiIiJNYWtlIHN1cmUgdGhhdCBhcmd1bWVudCBoZWxwIGFsaWducyB3aGVuIG9wdGlvbnMgYXJlIGxvbmdlciIiIgogCiAgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgZGVzY3JpcHRpb249J0RFU0NSSVBUSU9OJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nRVBJTE9HJywgdmVyc2lvbj0nMC4xJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nRVBJTE9HJykKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpLAogICAgICAgICBTaWcoJy14JywgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nWCBIRUxQJyksCiAgICAgICAgIFNpZygnLS15JywgaGVscD0nWSBIRUxQJyksCiAgICAgICAgIFNpZygnZm9vJywgaGVscD0nRk9PIEhFTFAnKSwKQEAgLTMxNDUsOSArMzE0Nyw5IEBACiBjbGFzcyBUZXN0SGVscFdyYXBwaW5nTG9uZ05hbWVzKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgdGV4dCBhZnRlciBsb25nIG5hbWVzIHN0YXJ0cyBvbiB0aGUgbmV4dCBsaW5lIiIiCiAKLSAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHVzYWdlPSdVU0FHRScsIGRlc2NyaXB0aW9uPSAnRCBEJyAqIDMwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj0nViBWJyozMCkKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHVzYWdlPSdVU0FHRScsIGRlc2NyaXB0aW9uPSAnRCBEJyAqIDMwKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nViBWJyAqIDMwKSwKICAgICAgICAgU2lnKCcteCcsIG1ldGF2YXI9J1gnICogMjUsIGhlbHA9J1hIIFhIJyAqIDIwKSwKICAgICAgICAgU2lnKCd5JywgbWV0YXZhcj0neScgKiAyNSwgaGVscD0nWUggWUgnICogMjApLAogICAgIF0KQEAgLTM3NTAsOCArMzc1Miw5IEBACiBjbGFzcyBUZXN0SGVscFZlcnNpb25PcHRpb25hbChIZWxwVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhhdCB0aGUgLS12ZXJzaW9uIGFyZ3VtZW50IGNhbiBiZSBzdXBwcmVzc2VkIGhlbHAgbWVzc2FnZXMiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIHZlcnNpb249JzEuMCcpCisgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJykKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpLAogICAgICAgICBTaWcoJy0tZm9vJywgaGVscD0nZm9vIGhlbHAnKSwKICAgICAgICAgU2lnKCdzcGFtJywgaGVscD0nc3BhbSBoZWxwJyksCiAgICAgXQpAQCAtMzk4NCw4ICszOTg3LDggQEAKIGNsYXNzIFRlc3RIZWxwU3VicGFyc2Vyc09yZGVyaW5nKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBvcmRlcmluZyBvZiBzdWJjb21tYW5kcyBpbiBoZWxwIG1hdGNoZXMgdGhlIGNvZGUiIiIKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpXQogCiAgICAgc3VicGFyc2Vyc19zaWduYXR1cmVzID0gW1NpZyhuYW1lPW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluICgnYScsICdiJywgJ2MnLCAnZCcsICdlJyldCkBAIC00MDEzLDggKzQwMTYsOCBAQAogY2xhc3MgVGVzdEhlbHBTdWJwYXJzZXJzV2l0aEhlbHBPcmRlcmluZyhIZWxwVGVzdENhc2UpOgogICAgICIiIlRlc3Qgb3JkZXJpbmcgb2Ygc3ViY29tbWFuZHMgaW4gaGVscCBtYXRjaGVzIHRoZSBjb2RlIiIiCiAgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNwbGF5IHNvbWUgc3ViY29tbWFuZHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj0nMC4xJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdkaXNwbGF5IHNvbWUgc3ViY29tbWFuZHMnKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKV0KIAogICAgIHN1YmNvbW1hbmRfZGF0YSA9ICgoJ2EnLCAnYSBzdWJjb21tYW5kIGhlbHAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgJ2Igc3ViY29tbWFuZCBoZWxwJyksCkBAIC00MDUyLDYgKzQwNTUsMzcgQEAKICAgICAgICAgJycnCiAKIAorCitjbGFzcyBUZXN0SGVscE1ldGF2YXJUeXBlRm9ybWF0dGVyKEhlbHBUZXN0Q2FzZSk6CisgICAgIiIiIiIiCisKKyAgICBkZWYgY3VzdG9tX3R5cGUoc3RyaW5nKToKKyAgICAgICAgcmV0dXJuIHN0cmluZworCisgICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgZGVzY3JpcHRpb249J2Rlc2NyaXB0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJ2EnLCB0eXBlPWludCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWcoJy1iJywgdHlwZT1jdXN0b21fdHlwZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWcoJy1jJywgdHlwZT1mbG9hdCwgbWV0YXZhcj0nU09NRSBGTE9BVCcpXQorICAgIGFyZ3VtZW50X2dyb3VwX3NpZ25hdHVyZXMgPSBbXQorICAgIHVzYWdlID0gJycnXAorICAgICAgICB1c2FnZTogUFJPRyBbLWhdIFstYiBjdXN0b21fdHlwZV0gWy1jIFNPTUUgRkxPQVRdIGludAorICAgICAgICAnJycKKyAgICBoZWxwID0gdXNhZ2UgKyAnJydcCisKKyAgICAgICAgZGVzY3JpcHRpb24KKworICAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICBpbnQKKworICAgICAgICBvcHRpb25hbCBhcmd1bWVudHM6CisgICAgICAgICAgLWgsIC0taGVscCAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAgICAtYiBjdXN0b21fdHlwZQorICAgICAgICAgIC1jIFNPTUUgRkxPQVQKKyAgICAgICAgJycnCisgICAgdmVyc2lvbiA9ICcnCisKKwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIE9wdGlvbmFsL1Bvc2l0aW9uYWwgY29uc3RydWN0b3IgdGVzdHMKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDI4MCwzMiArNDMxNCwyOCBAQAogICAgICAgICAgICAgcGFyc2VyLmZvcm1hdF9oZWxwKCksCiAgICAgICAgICAgICBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIGFyZ3Nfc3RyLnNwbGl0KCkpLnN0ZG91dCkKIAotICAgIGRlZiBhc3NlcnRQcmludFZlcnNpb25FeGl0KHNlbGYsIHBhcnNlciwgYXJnc19zdHIpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcGFyc2VyLmZvcm1hdF92ZXJzaW9uKCksCi0gICAgICAgICAgICBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIGFyZ3Nfc3RyLnNwbGl0KCkpLnN0ZGVycikKLQogICAgIGRlZiBhc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHNlbGYsIHBhcnNlciwgKmFyZ3MpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yLCBwYXJzZXIucGFyc2VfYXJncywgYXJncykKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHZlcnNpb249JzEuMCcpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgJy1oJykKICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgJy0taGVscCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctdicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctLXZlcnNpb24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BQUCcsIHZlcnNpb249JyUocHJvZylzIDMuNScpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BQUCcpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JyUocHJvZylzIDMuNScpCiAgICAgICAgIG1zZyA9IHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgWyctdiddKS5zdGRlcnIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUFBQIDMuNVxuJywgbXNnKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9ub19oZWxwKHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSwgdmVyc2lvbj0nMS4wJykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoYWRkX2hlbHA9RmFsc2UpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihwYXJzZXIsICctaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0QXJndW1lbnRQYXJzZXJFcnJvcihwYXJzZXIsICctLWhlbHAnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLXYnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLS12ZXJzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fYWN0aW9uKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdYWFgnKQpAQCAtNDMyNSwxMiArNDM1NSwxMyBAQAogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCcteCcsIGFjdGlvbj0naGVscCcpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy15JywgYWN0aW9uPSd2ZXJzaW9uJykKICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgJy14JykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy15JykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy12JykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy0tdmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKICAgICBkZWYgdGVzdF9oZWxwX3ZlcnNpb25fZXh0cmFfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcih2ZXJzaW9uPScxLjAnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcigpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy14JywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgneScpCiAKQEAgLTQzNDIsOCArNDM3Myw3IEBACiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gJyVzICUlcyAlcycgJSAocHJlZml4LCBzdWZmaXgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLWgnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRQcmludEhlbHBFeGl0KHBhcnNlciwgZm9ybWF0ICUgJy0taGVscCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLXYnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgZm9ybWF0ICUgJy0tdmVyc2lvbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAKICMgPT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDM5OCw3ICs0NDI4LDcgQEAKICAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycpCiAgICAgICAgIHN0cmluZyA9ICgKICAgICAgICAgICAgICJBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9Tm9uZSwgZGVzY3JpcHRpb249Tm9uZSwgIgotICAgICAgICAgICAgInZlcnNpb249Tm9uZSwgZm9ybWF0dGVyX2NsYXNzPSVyLCBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsICIKKyAgICAgICAgICAgICJmb3JtYXR0ZXJfY2xhc3M9JXIsIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywgIgogICAgICAgICAgICAgImFkZF9oZWxwPVRydWUpIiAlIGFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwocGFyc2VyLCBzdHJpbmcpCiAKQEAgLTQ0NDIsNyArNDQ3Miw3IEBACiAgICAgZGVmIF90ZXN0X21vZHVsZV9lbmNvZGluZyhzZWxmLCBwYXRoKToKICAgICAgICAgcGF0aCwgXyA9IG9zLnBhdGguc3BsaXRleHQocGF0aCkKICAgICAgICAgcGF0aCArPSAiLnB5IgotICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0ZjgnKSBhcyBmOgorICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHBhdGgsICdyJywgJ3V0Zi04JykgYXMgZjoKICAgICAgICAgICAgIGYucmVhZCgpCiAKICAgICBkZWYgdGVzdF9hcmdwYXJzZV9tb2R1bGVfZW5jb2Rpbmcoc2VsZik6CkBAIC00NDg0LDYgKzQ1MTQsNjcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgpCiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PQorIyBNZXNzYWdlQ29udGVudEVycm9yIHRlc3RzCisjID09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgVGVzdE1lc3NhZ2VDb250ZW50RXJyb3IoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbWlzc2luZ19hcmd1bWVudF9uYW1lX2luX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncmVxX3BvcycsIHR5cGU9c3RyKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcmVxX29wdCcsIHR5cGU9aW50LCByZXF1aXJlZD1UcnVlKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCduZWVkX29uZScsIHR5cGU9c3RyLCBuYXJncz0nKycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnbXlYYXJndW1lbnQnXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICduZWVkX29uZScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJ215WGFyZ3VtZW50JywgJy1yZXFfb3B0PTEnXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICduZWVkX29uZScpCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9vcHRpb25hbF9ub3RfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJywgdHlwZT1zdHIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVxX29wdCcsIHR5cGU9aW50LCByZXF1aXJlZD1UcnVlKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW9wdF9vcHQnLCB0eXBlPWJvb2wsIG5hcmdzPSc/JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRfb3B0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnLS1yZXFfb3B0PTEnXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdyZXFfb3B0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRfb3B0JykKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX3Bvc2l0aW9uYWxfbm90X2luX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT0nJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgncmVxX3BvcycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ29wdGlvbmFsX3Bvc2l0aW9uYWwnLCBuYXJncz0nPycsIGRlZmF1bHQ9J2VnZ3MnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoW10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4obXNnLCAnb3B0aW9uYWxfcG9zaXRpb25hbCcpCisKKwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgQ2hlY2sgdGhhdCB0aGUgdHlwZSBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBvbmNlCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDc4MiwxMyArNDg3Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0ZW1zKSwgc29ydGVkKGFyZ3BhcnNlLl9fYWxsX18pKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgIyBzaWxlbmNlIHdhcm5pbmdzIGFib3V0IHZlcnNpb24gYXJndW1lbnQgLSB0aGVzZSBhcmUgZXhwZWN0ZWQKLSAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoCi0gICAgICAgICAgICAoJ1RoZSAidmVyc2lvbiIgYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgZGVwcmVjYXRlZC4nLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZyksCi0gICAgICAgICAgICAoJ1RoZSAoZm9ybWF0fHByaW50KV92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkJywKLSAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAgICAgIyBSZW1vdmUgZ2xvYmFsIHJlZmVyZW5jZXMgdG8gYXZvaWQgbG9va2luZyBsaWtlIHdlIGhhdmUgcmVmbGVha3MuCiAgICAgUkZpbGUuc2VlbiA9IHt9CiAgICAgV0ZpbGUuc2VlbiA9IHNldCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCBlMjZlOWFkLi41NDRjMmNlIDEwMDc1NQotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTE2LDYgKzE2LDEzIEBACiBpbXBvcnQgYXJyYXkKIGZyb20gYXJyYXkgaW1wb3J0IF9hcnJheV9yZWNvbnN0cnVjdG9yIGFzIGFycmF5X3JlY29uc3RydWN0b3IKIAordHJ5OgorICAgICMgVHJ5IHRvIGRldGVybWluZSBhdmFpbGFiaWxpdHkgb2YgbG9uZyBsb25nIGluZGVwZW5kZW50bHkKKyAgICAjIG9mIHRoZSBhcnJheSBtb2R1bGUgdW5kZXIgdGVzdAorICAgIHN0cnVjdC5jYWxjc2l6ZSgnQHEnKQorICAgIGhhdmVfbG9uZ19sb25nID0gVHJ1ZQorZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICBoYXZlX2xvbmdfbG9uZyA9IEZhbHNlCiAKIGNsYXNzIEFycmF5U3ViY2xhc3MoYXJyYXkuYXJyYXkpOgogICAgIHBhc3MKQEAgLTI2LDYgKzMzLDggQEAKIAogdGVzdHMgPSBbXSAjIGxpc3QgdG8gYWNjdW11bGF0ZSBhbGwgdGVzdHMKIHR5cGVjb2RlcyA9ICJ1YkJoSGlJbExmZCIKK2lmIGhhdmVfbG9uZ19sb25nOgorICAgIHR5cGVjb2RlcyArPSAncVEnCiAKIGNsYXNzIEJhZENvbnN0cnVjdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwOSwxMCArMjE4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlbMV0sIGxlbihhKSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzd2FwKHNlbGYpOgotICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBpZiBzZWxmLnR5cGVjb2RlID09ICd1JzoKKyAgICAgICAgICAgIGV4YW1wbGUgPSAnXFUwMDEwMDEwMCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4YW1wbGUgPSBzZWxmLmV4YW1wbGUKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGV4YW1wbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5ieXRlc3dhcCwgNDIpCiAgICAgICAgIGlmIGEuaXRlbXNpemUgaW4gKDEsIDIsIDQsIDgpOgotICAgICAgICAgICAgYiA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBleGFtcGxlKQogICAgICAgICAgICAgYi5ieXRlc3dhcCgpCiAgICAgICAgICAgICBpZiBhLml0ZW1zaXplPT0xOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKQEAgLTI3Miw2ICsyODUsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS54LCBiLngpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIHR5cGUoYikpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIG9yZ2l0ID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKG9yZ2l0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUob3JnaXQpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKSkKKworICAgICAgICBpZiBsZW4oZGF0YSk6CisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpWzE6XSkKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKICAgICAgICAgYS5pbnNlcnQoMCwgc2VsZi5leGFtcGxlWzBdKQpAQCAtOTkxLDE0ICsxMDE4LDE0IEBACiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mX3dpdGhfYnVmZmVyKHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCc0UGknKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCdQbjJQaScpCiAgICAgICAgIGJ1ZmZlcl9zaXplID0gYS5idWZmZXJfaW5mbygpWzFdICogYS5pdGVtc2l6ZQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBhLCBiYXNlc2l6ZSArIGJ1ZmZlcl9zaXplKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mX3dpdGhvdXRfYnVmZmVyKHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSkKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnNFBpJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGN2b2Jqc2l6ZSgnUG4yUGknKQogICAgICAgICBzdXBwb3J0LmNoZWNrX3NpemVvZihzZWxmLCBhLCBiYXNlc2l6ZSkKIAogCkBAIC0xMDE4LDYgKzEwNDUsMTYgQEAKICAgICBtaW5pdGVtc2l6ZSA9IDIKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBjdHlwZXMKKyAgICAgICAgICAgIHNpemVvZl93Y2hhciA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgICAgIHNpemVvZl93Y2hhciA9IDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2l6ZW9mX3djaGFyID0gNAorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYXJyYXkuYXJyYXksICdiJywgJ2ZvbycpCiAKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgJ1x4YTBceGMyXHUxMjM0JykKQEAgLTEwMjcsNiArMTA2NCw3IEBACiAgICAgICAgIGEuZnJvbXVuaWNvZGUoJ1x4MTFhYmNceGZmXHUxMjM0JykKICAgICAgICAgcyA9IGEudG91bmljb2RlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAnXHhhMFx4YzJcdTEyMzQgXHgxMWFiY1x4ZmZcdTEyMzQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuaXRlbXNpemUsIHNpemVvZl93Y2hhcikKIAogICAgICAgICBzID0gJ1x4MDA9IlwnYVxcYlx4ODBceGZmXHUwMDAwXHUwMDAxXHUxMjM0JwogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ3UnLCBzKQpAQCAtMTIxOCw2ICsxMjU2LDE4IEBACiAgICAgbWluaXRlbXNpemUgPSA0CiB0ZXN0cy5hcHBlbmQoVW5zaWduZWRMb25nVGVzdCkKIAorQHVuaXR0ZXN0LnNraXBJZihub3QgaGF2ZV9sb25nX2xvbmcsICduZWVkIGxvbmcgbG9uZyBzdXBwb3J0JykKK2NsYXNzIExvbmdMb25nVGVzdChTaWduZWROdW1iZXJUZXN0KToKKyAgICB0eXBlY29kZSA9ICdxJworICAgIG1pbml0ZW1zaXplID0gOAordGVzdHMuYXBwZW5kKExvbmdMb25nVGVzdCkKKworQHVuaXR0ZXN0LnNraXBJZihub3QgaGF2ZV9sb25nX2xvbmcsICduZWVkIGxvbmcgbG9uZyBzdXBwb3J0JykKK2NsYXNzIFVuc2lnbmVkTG9uZ0xvbmdUZXN0KFVuc2lnbmVkTnVtYmVyVGVzdCk6CisgICAgdHlwZWNvZGUgPSAnUScKKyAgICBtaW5pdGVtc2l6ZSA9IDgKK3Rlc3RzLmFwcGVuZChVbnNpZ25lZExvbmdMb25nVGVzdCkKKwogY2xhc3MgRlBUZXN0KE51bWJlclRlc3QpOgogICAgIGV4YW1wbGUgPSBbLTQyLjAsIDAsIDQyLCAxZTUsIC0xZTEwXQogICAgIHNtYWxsZXJleGFtcGxlID0gWy00Mi4wLCAwLCA0MiwgMWU1LCAtMmUxMF0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKaW5kZXggMjg4NzA5Mi4uYTg4NTNjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKQEAgLTEsNiArMSwxMCBAQAotaW1wb3J0IHN5cywgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhc3QKK2ltcG9ydCB3ZWFrcmVmCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBkZWYgdG9fdHVwbGUodCk6CiAgICAgaWYgdCBpcyBOb25lIG9yIGlzaW5zdGFuY2UodCwgKHN0ciwgaW50LCBjb21wbGV4KSk6CkBAIC01Miw2ICs1Niw5IEBACiAgICAgIndoaWxlIHY6cGFzcyIsCiAgICAgIyBJZgogICAgICJpZiB2OnBhc3MiLAorICAgICMgV2l0aAorICAgICJ3aXRoIHggYXMgeTogcGFzcyIsCisgICAgIndpdGggeCBhcyB5LCB6IGFzIHE6IHBhc3MiLAogICAgICMgUmFpc2UKICAgICAicmFpc2UgRXhjZXB0aW9uKCdzdHJpbmcnKSIsCiAgICAgIyBUcnlFeGNlcHQKQEAgLTE5MSw2ICsxOTgsOSBAQAogICAgIGRlZiB0ZXN0X0FTVF9vYmplY3RzKHNlbGYpOgogICAgICAgICB4ID0gYXN0LkFTVCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fZmllbGRzLCAoKSkKKyAgICAgICAgeC5mb29iYXIgPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vYmFyLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fWyJmb29iYXIiXSwgNDIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgICAgICB4LnZhcmFyZwpAQCAtMTk5LDYgKzIwOSwxNyBAQAogICAgICAgICAgICAgIyAiX2FzdC5BU1QgY29uc3RydWN0b3IgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKICAgICAgICAgICAgIGFzdC5BU1QoMikKIAorICAgIGRlZiB0ZXN0X0FTVF9nYXJiYWdlX2NvbGxlY3Rpb24oc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGEgPSBhc3QuQVNUKCkKKyAgICAgICAgYS54ID0gWCgpCisgICAgICAgIGEueC5hID0gYQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihhLngpCisgICAgICAgIGRlbCBhCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAgICAgZGVmIHRlc3Rfc25pcHBldHMoc2VsZik6CiAgICAgICAgIGZvciBpbnB1dCwgb3V0cHV0LCBraW5kIGluICgoZXhlY190ZXN0cywgZXhlY19yZXN1bHRzLCAiZXhlYyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpbmdsZV90ZXN0cywgc2luZ2xlX3Jlc3VsdHMsICJzaW5nbGUiKSwKQEAgLTM5MCw3ICs0MTEsOSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAxLzAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBhc3QucGFyc2UsIHIiJ1xVJyIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgIGFzdC5saXRlcmFsX2V2YWwociInXFUnIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGUuZXhjZXB0aW9uLl9fY29udGV4dF9fKQogCiAgICAgZGVmIHRlc3RfZHVtcChzZWxmKToKICAgICAgICAgbm9kZSA9IGFzdC5wYXJzZSgnc3BhbShlZ2dzLCAiYW5kIGNoZWVzZSIpJykKQEAgLTUwNCw4ICs1MjcsNDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImludmFsaWQgaW50ZWdlciB2YWx1ZTogTm9uZSIsIHN0cihjbS5leGNlcHRpb24pKQogCiAKK2NsYXNzIEFTVFZhbGlkYXRvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBtb2Qoc2VsZiwgbW9kLCBtc2c9Tm9uZSwgbW9kZT0iZXhlYyIsICosIGV4Yz1WYWx1ZUVycm9yKToKKyAgICAgICAgbW9kLmxpbmVubyA9IG1vZC5jb2xfb2Zmc2V0ID0gMAorICAgICAgICBhc3QuZml4X21pc3NpbmdfbG9jYXRpb25zKG1vZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhleGMpIGFzIGNtOgorICAgICAgICAgICAgY29tcGlsZShtb2QsICI8dGVzdD4iLCBtb2RlKQorICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1zZywgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICBkZWYgZXhwcihzZWxmLCBub2RlLCBtc2c9Tm9uZSwgKiwgZXhjPVZhbHVlRXJyb3IpOgorICAgICAgICBtb2QgPSBhc3QuTW9kdWxlKFthc3QuRXhwcihub2RlKV0pCisgICAgICAgIHNlbGYubW9kKG1vZCwgbXNnLCBleGM9ZXhjKQorCisgICAgZGVmIHN0bXQoc2VsZiwgc3RtdCwgbXNnPU5vbmUpOgorICAgICAgICBtb2QgPSBhc3QuTW9kdWxlKFtzdG10XSkKKyAgICAgICAgc2VsZi5tb2QobW9kLCBtc2cpCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIG0gPSBhc3QuSW50ZXJhY3RpdmUoW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pCisgICAgICAgIHNlbGYubW9kKG0sICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IiwgInNpbmdsZSIpCisgICAgICAgIG0gPSBhc3QuRXhwcmVzc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5tb2QobSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiLCAiZXZhbCIpCisKKyAgICBkZWYgX2NoZWNrX2FyZ3VtZW50cyhzZWxmLCBmYWMsIGNoZWNrKToKKyAgICAgICAgZGVmIGFyZ3VtZW50cyhhcmdzPU5vbmUsIHZhcmFyZz1Ob25lLCB2YXJhcmdhbm5vdGF0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAga3dvbmx5YXJncz1Ob25lLCBrd2FyZz1Ob25lLCBrd2FyZ2Fubm90YXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0cz1Ob25lLCBrd19kZWZhdWx0cz1Ob25lKToKKyAgICAgICAgICAgIGlmIGFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBhcmdzID0gW10KKyAgICAgICAgICAgIGlmIGt3b25seWFyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBrd29ubHlhcmdzID0gW10KKyAgICAgICAgICAgIGlmIGRlZmF1bHRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVmYXVsdHMgPSBbXQorICAgICAgICAgICAgaWYga3dfZGVmYXVsdHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBrd19kZWZhdWx0cyA9IFtdCisgICAgICAgICAgICBhcmdzID0gYXN0LmFyZ3VtZW50cyhhcmdzLCB2YXJhcmcsIHZhcmFyZ2Fubm90YXRpb24sIGt3b25seWFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZywga3dhcmdhbm5vdGF0aW9uLCBkZWZhdWx0cywga3dfZGVmYXVsdHMpCisgICAgICAgICAgICByZXR1cm4gZmFjKGFyZ3MpCisgICAgICAgIGFyZ3MgPSBbYXN0LmFyZygieCIsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0KKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGFyZ3M9YXJncyksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKHZhcmFyZ2Fubm90YXRpb249YXN0Lk51bSgzKSksCisgICAgICAgICAgICAgICJ2YXJhcmdhbm5vdGF0aW9uIGJ1dCBubyB2YXJhcmciKQorICAgICAgICBjaGVjayhhcmd1bWVudHModmFyYXJnYW5ub3RhdGlvbj1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgdmFyYXJnPSJ4IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dvbmx5YXJncz1hcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dhcmdhbm5vdGF0aW9uPWFzdC5OdW0oNDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgImt3YXJnYW5ub3RhdGlvbiBidXQgbm8ga3dhcmciKQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dhcmdhbm5vdGF0aW9uPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZz0ieCIpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhkZWZhdWx0cz1bYXN0Lk51bSgzKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAibW9yZSBwb3NpdGlvbmFsIGRlZmF1bHRzIHRoYW4gYXJncyIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd19kZWZhdWx0cz1bYXN0Lk51bSg0KV0pLAorICAgICAgICAgICAgICAgICAgICAgICAibGVuZ3RoIG9mIGt3b25seWFyZ3MgaXMgbm90IHRoZSBzYW1lIGFzIGt3X2RlZmF1bHRzIikKKyAgICAgICAgYXJncyA9IFthc3QuYXJnKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSldCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhhcmdzPWFyZ3MsIGRlZmF1bHRzPVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGFyZ3MgPSBbYXN0LmFyZygiYSIsIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpLAorICAgICAgICAgICAgICAgIGFzdC5hcmcoImIiLCBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpKV0KKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3b25seWFyZ3M9YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAga3dfZGVmYXVsdHM9W05vbmUsIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CisgICAgICAgIGEgPSBhc3QuYXJndW1lbnRzKFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKQorICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW10sIFtdLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQoZiwgImVtcHR5IGJvZHkgb24gRnVuY3Rpb25EZWYiKQorICAgICAgICBmID0gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYSwgW2FzdC5QYXNzKCldLCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChmLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGYgPSBhc3QuRnVuY3Rpb25EZWYoIngiLCBhLCBbYXN0LlBhc3MoKV0sIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoZiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgZmFjKGFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFzdC5GdW5jdGlvbkRlZigieCIsIGFyZ3MsIFthc3QuUGFzcygpXSwgW10sIE5vbmUpCisgICAgICAgIHNlbGYuX2NoZWNrX2FyZ3VtZW50cyhmYWMsIHNlbGYuc3RtdCkKKworICAgIGRlZiB0ZXN0X2NsYXNzZGVmKHNlbGYpOgorICAgICAgICBkZWYgY2xzKGJhc2VzPU5vbmUsIGtleXdvcmRzPU5vbmUsIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLAorICAgICAgICAgICAgICAgIGJvZHk9Tm9uZSwgZGVjb3JhdG9yX2xpc3Q9Tm9uZSk6CisgICAgICAgICAgICBpZiBiYXNlcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJhc2VzID0gW10KKyAgICAgICAgICAgIGlmIGtleXdvcmRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAga2V5d29yZHMgPSBbXQorICAgICAgICAgICAgaWYgYm9keSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJvZHkgPSBbYXN0LlBhc3MoKV0KKyAgICAgICAgICAgIGlmIGRlY29yYXRvcl9saXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QgPSBbXQorICAgICAgICAgICAgcmV0dXJuIGFzdC5DbGFzc0RlZigibXljbGFzcyIsIGJhc2VzLCBrZXl3b3Jkcywgc3RhcmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncywgYm9keSwgZGVjb3JhdG9yX2xpc3QpCisgICAgICAgIHNlbGYuc3RtdChjbHMoYmFzZXM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoa2V5d29yZHM9W2FzdC5rZXl3b3JkKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoc3RhcmFyZ3M9YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGt3YXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoYm9keT1bXSksICJlbXB0eSBib2R5IG9uIENsYXNzRGVmIikKKyAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGRlY29yYXRvcl9saXN0PVthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZGVsZXRlKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkRlbGV0ZShbXSksICJlbXB0eSB0YXJnZXRzIG9uIERlbGV0ZSIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRGVsZXRlKFtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkRlbGV0ZShbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBEZWwgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9hc3NpZ24oc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFtdLCBhc3QuTnVtKDMpKSwgImVtcHR5IHRhcmdldHMgb24gQXNzaWduIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW05vbmVdLCBhc3QuTnVtKDMpKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSwgYXN0Lk51bSgzKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9hdWdhc3NpZ24oc2VsZik6CisgICAgICAgIGF1ZyA9IGFzdC5BdWdBc3NpZ24oYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgYXN0LkFkZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkpCisgICAgICAgIHNlbGYuc3RtdChhdWcsICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIGF1ZyA9IGFzdC5BdWdBc3NpZ24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFzdC5BZGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGF1ZywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZm9yKHNlbGYpOgorICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgcCA9IGFzdC5QYXNzKCkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgeSwgW10sIFtdKSwgImVtcHR5IGJvZHkgb24gRm9yIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgeSwgW3BdLCBbXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwgW3BdLCBbXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGUgPSBhc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgeSwgW2VdLCBbXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Gb3IoeCwgeSwgW3BdLCBbZV0pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF93aGlsZShzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaGlsZShhc3QuTnVtKDMpLCBbXSwgW10pLCAiZW1wdHkgYm9keSBvbiBXaGlsZSIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2hpbGUoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFthc3QuUGFzcygpXSwgW10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldoaWxlKGFzdC5OdW0oMyksIFthc3QuUGFzcygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9pZihzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5JZihhc3QuTnVtKDMpLCBbXSwgW10pLCAiZW1wdHkgYm9keSBvbiBJZiIpCisgICAgICAgIGkgPSBhc3QuSWYoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFthc3QuUGFzcygpXSwgW10pCisgICAgICAgIHNlbGYuc3RtdChpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGkgPSBhc3QuSWYoYXN0Lk51bSgzKSwgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0sIFtdKQorICAgICAgICBzZWxmLnN0bXQoaSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBpID0gYXN0LklmKGFzdC5OdW0oMyksIFthc3QuUGFzcygpXSwKKyAgICAgICAgICAgICAgICAgICBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSkKKyAgICAgICAgc2VsZi5zdG10KGksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3dpdGgoc2VsZik6CisgICAgICAgIHAgPSBhc3QuUGFzcygpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbXSwgW3BdKSwgImVtcHR5IGl0ZW1zIG9uIFdpdGgiKQorICAgICAgICBpID0gYXN0LndpdGhpdGVtKGFzdC5OdW0oMyksIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbaV0sIFtdKSwgImVtcHR5IGJvZHkgb24gV2l0aCIpCisgICAgICAgIGkgPSBhc3Qud2l0aGl0ZW0oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbaV0sIFtwXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgaSA9IGFzdC53aXRoaXRlbShhc3QuTnVtKDMpLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXN0LldpdGgoW2ldLCBbcF0pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfcmFpc2Uoc2VsZik6CisgICAgICAgIHIgPSBhc3QuUmFpc2UoTm9uZSwgYXN0Lk51bSgzKSkKKyAgICAgICAgc2VsZi5zdG10KHIsICJSYWlzZSB3aXRoIGNhdXNlIGJ1dCBubyBleGNlcHRpb24iKQorICAgICAgICByID0gYXN0LlJhaXNlKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBOb25lKQorICAgICAgICBzZWxmLnN0bXQociwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICByID0gYXN0LlJhaXNlKGFzdC5OdW0oNCksIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQociwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfdHJ5KHNlbGYpOgorICAgICAgICBwID0gYXN0LlBhc3MoKQorICAgICAgICB0ID0gYXN0LlRyeShbXSwgW10sIFtdLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiZW1wdHkgYm9keSBvbiBUcnkiKQorICAgICAgICB0ID0gYXN0LlRyeShbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSwgW10sIFtdLCBbcF0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgW10sIFtdLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJUcnkgaGFzIG5laXRoZXIgZXhjZXB0IGhhbmRsZXJzIG5vciBmaW5hbGJvZHkiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIFtdLCBbcF0sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJUcnkgaGFzIG9yZWxzZSBidXQgbm8gZXhjZXB0IGhhbmRsZXJzIikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBbYXN0LkV4Y2VwdEhhbmRsZXIoTm9uZSwgIngiLCBbXSldLCBbXSwgW10pCisgICAgICAgIHNlbGYuc3RtdCh0LCAiZW1wdHkgYm9keSBvbiBFeGNlcHRIYW5kbGVyIikKKyAgICAgICAgZSA9IFthc3QuRXhjZXB0SGFuZGxlcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgInkiLCBbcF0pXQorICAgICAgICBzZWxmLnN0bXQoYXN0LlRyeShbcF0sIGUsIFtdLCBbXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZSA9IFthc3QuRXhjZXB0SGFuZGxlcihOb25lLCAieCIsIFtwXSldCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgZSwgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBlLCBbcF0sIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKQorICAgICAgICBzZWxmLnN0bXQodCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0KHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2VydChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGFzc3J0ID0gYXN0LkFzc2VydChhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChhc3NydCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LkltcG9ydChbXSksICJlbXB0eSBuYW1lcyBvbiBJbXBvcnQiKQorCisgICAgZGVmIHRlc3RfaW1wb3J0ZnJvbShzZWxmKToKKyAgICAgICAgaW1wID0gYXN0LkltcG9ydEZyb20oTm9uZSwgW2FzdC5hbGlhcygieCIsIE5vbmUpXSwgLTQyKQorICAgICAgICBzZWxmLnN0bXQoaW1wLCAibGV2ZWwgbGVzcyB0aGFuIC0xIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnRGcm9tKE5vbmUsIFtdLCAwKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydEZyb20iKQorCisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0Lkdsb2JhbChbXSksICJlbXB0eSBuYW1lcyBvbiBHbG9iYWwiKQorCisgICAgZGVmIHRlc3Rfbm9ubG9jYWwoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuTm9ubG9jYWwoW10pLCAiZW1wdHkgbmFtZXMgb24gTm9ubG9jYWwiKQorCisgICAgZGVmIHRlc3RfZXhwcihzZWxmKToKKyAgICAgICAgZSA9IGFzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoZSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfYm9vbG9wKHNlbGYpOgorICAgICAgICBiID0gYXN0LkJvb2xPcChhc3QuQW5kKCksIFtdKQorICAgICAgICBzZWxmLmV4cHIoYiwgImxlc3MgdGhhbiAyIHZhbHVlcyIpCisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW2FzdC5OdW0oMyldKQorICAgICAgICBzZWxmLmV4cHIoYiwgImxlc3MgdGhhbiAyIHZhbHVlcyIpCisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW2FzdC5OdW0oNCksIE5vbmVdKQorICAgICAgICBzZWxmLmV4cHIoYiwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW2FzdC5OdW0oNCksIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3VuYXJ5b3Aoc2VsZik6CisgICAgICAgIHUgPSBhc3QuVW5hcnlPcChhc3QuTm90KCksIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLmV4cHIodSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgorICAgICAgICBhID0gYXN0LmFyZ3VtZW50cyhbXSwgTm9uZSwgTm9uZSwgW10sIE5vbmUsIE5vbmUsIFtdLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGFzdC5MYW1iZGEoYSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgZmFjKGFyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGFzdC5MYW1iZGEoYXJncywgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5leHByKQorCisgICAgZGVmIHRlc3RfaWZleHAoc2VsZik6CisgICAgICAgIGwgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHMgPSBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKQorICAgICAgICBmb3IgYXJncyBpbiAocywgbCwgbCksIChsLCBzLCBsKSwgKGwsIGwsIHMpOgorICAgICAgICAgICAgc2VsZi5leHByKGFzdC5JZkV4cCgqYXJncyksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBhc3QuRGljdChbXSwgW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldKQorICAgICAgICBzZWxmLmV4cHIoZCwgInNhbWUgbnVtYmVyIG9mIGtleXMgYXMgdmFsdWVzIikKKyAgICAgICAgZCA9IGFzdC5EaWN0KFtOb25lXSwgW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldKQorICAgICAgICBzZWxmLmV4cHIoZCwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIGQgPSBhc3QuRGljdChbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0sIFtOb25lXSkKKyAgICAgICAgc2VsZi5leHByKGQsICJOb25lIGRpc2FsbG93ZWQiKQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBzZWxmLmV4cHIoYXN0LlNldChbTm9uZV0pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgcyA9IGFzdC5TZXQoW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgc2VsZi5leHByKHMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiBfY2hlY2tfY29tcHJlaGVuc2lvbihzZWxmLCBmYWMpOgorICAgICAgICBzZWxmLmV4cHIoZmFjKFtdKSwgImNvbXByZWhlbnNpb24gd2l0aCBubyBnZW5lcmF0b3JzIikKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKKyAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIF9zaW1wbGVfY29tcChzZWxmLCBmYWMpOgorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2ddKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIHdyYXAoZ2Vucyk6CisgICAgICAgICAgICByZXR1cm4gZmFjKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBnZW5zKQorICAgICAgICBzZWxmLl9jaGVja19jb21wcmVoZW5zaW9uKHdyYXApCisKKyAgICBkZWYgdGVzdF9saXN0Y29tcChzZWxmKToKKyAgICAgICAgc2VsZi5fc2ltcGxlX2NvbXAoYXN0Lkxpc3RDb21wKQorCisgICAgZGVmIHRlc3Rfc2V0Y29tcChzZWxmKToKKyAgICAgICAgc2VsZi5fc2ltcGxlX2NvbXAoYXN0LlNldENvbXApCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JleHAoc2VsZik6CisgICAgICAgIHNlbGYuX3NpbXBsZV9jb21wKGFzdC5HZW5lcmF0b3JFeHApCisKKyAgICBkZWYgdGVzdF9kaWN0Y29tcChzZWxmKToKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgIGMgPSBhc3QuRGljdENvbXAoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSwgW2ddKQorICAgICAgICBzZWxmLmV4cHIoYywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksIFtnXSkKKyAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZGVmIGZhY3RvcnkoY29tcHMpOgorICAgICAgICAgICAgayA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgICAgIHYgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgICAgICByZXR1cm4gYXN0LkRpY3RDb21wKGssIHYsIGNvbXBzKQorICAgICAgICBzZWxmLl9jaGVja19jb21wcmVoZW5zaW9uKGZhY3RvcnkpCisKKyAgICBkZWYgdGVzdF95aWVsZChzZWxmKToKKyAgICAgICAgc2VsZi5leHByKGFzdC5ZaWVsZChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksICJtdXN0IGhhdmUgTG9hZCIpCisgICAgICAgIHNlbGYuZXhwcihhc3QuWWllbGRGcm9tKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwgIm11c3QgaGF2ZSBMb2FkIikKKworICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CisgICAgICAgIGxlZnQgPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShsZWZ0LCBbYXN0LkluKCldLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJubyBjb21wYXJhdG9ycyIpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShsZWZ0LCBbYXN0LkluKCldLCBbYXN0Lk51bSg0KSwgYXN0Lk51bSg1KV0pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAiZGlmZmVyZW50IG51bWJlciBvZiBjb21wYXJhdG9ycyBhbmQgb3BlcmFuZHMiKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUoYXN0Lk51bSgiYmxhaCIpLCBbYXN0LkluKCldLCBbbGVmdF0pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAibm9uLW51bWVyaWMiLCBleGM9VHlwZUVycm9yKQorICAgICAgICBjb21wID0gYXN0LkNvbXBhcmUobGVmdCwgW2FzdC5JbigpXSwgW2FzdC5OdW0oImJsYWgiKV0pCisgICAgICAgIHNlbGYuZXhwcihjb21wLCAibm9uLW51bWVyaWMiLCBleGM9VHlwZUVycm9yKQorCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgZnVuYyA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgYXJncyA9IFthc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpXQorICAgICAgICBrZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LkxvYWQoKSkpXQorICAgICAgICBzdGFyYXJnID0gYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKQorICAgICAgICBrd2FyZyA9IGFzdC5OYW1lKCJxIiwgYXN0LkxvYWQoKSkKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgW05vbmVdLCBrZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgYmFkX2tleXdvcmRzID0gW2FzdC5rZXl3b3JkKCJ3IiwgYXN0Lk5hbWUoInoiLCBhc3QuU3RvcmUoKSkpXQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywgYmFkX2tleXdvcmRzLCBzdGFyYXJnLCBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBhc3QuTmFtZSgieiIsIGFzdC5TdG9yZSgpKSwga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ3IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfbnVtKHNlbGYpOgorICAgICAgICBjbGFzcyBzdWJpbnQoaW50KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xhc3Mgc3ViZmxvYXQoZmxvYXQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBzdWJjb21wbGV4KGNvbXBsZXgpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3Igb2JqIGluICIwIiwgImhlbGxvIiwgc3ViaW50KCksIHN1YmZsb2F0KCksIHN1YmNvbXBsZXgoKToKKyAgICAgICAgICAgIHNlbGYuZXhwcihhc3QuTnVtKG9iaiksICJub24tbnVtZXJpYyIsIGV4Yz1UeXBlRXJyb3IpCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGF0dHIgPSBhc3QuQXR0cmlidXRlKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCAieSIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHNlbGYuZXhwcihhdHRyLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9zdWJzY3JpcHQoc2VsZik6CisgICAgICAgIHN1YiA9IGFzdC5TdWJzY3JpcHQoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFzdC5JbmRleChhc3QuTnVtKDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTG9hZCgpKQorICAgICAgICBzZWxmLmV4cHIoc3ViLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIHN1YiA9IGFzdC5TdWJzY3JpcHQoeCwgYXN0LkluZGV4KGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTG9hZCgpKQorICAgICAgICBzZWxmLmV4cHIoc3ViLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHMgPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQorICAgICAgICBmb3IgYXJncyBpbiAocywgTm9uZSwgTm9uZSksIChOb25lLCBzLCBOb25lKSwgKE5vbmUsIE5vbmUsIHMpOgorICAgICAgICAgICAgc2wgPSBhc3QuU2xpY2UoKmFyZ3MpCisgICAgICAgICAgICBzZWxmLmV4cHIoYXN0LlN1YnNjcmlwdCh4LCBzbCwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzbCA9IGFzdC5FeHRTbGljZShbXSkKKyAgICAgICAgc2VsZi5leHByKGFzdC5TdWJzY3JpcHQoeCwgc2wsIGFzdC5Mb2FkKCkpLCAiZW1wdHkgZGltcyBvbiBFeHRTbGljZSIpCisgICAgICAgIHNsID0gYXN0LkV4dFNsaWNlKFthc3QuSW5kZXgocyldKQorICAgICAgICBzZWxmLmV4cHIoYXN0LlN1YnNjcmlwdCh4LCBzbCwgYXN0LkxvYWQoKSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3N0YXJyZWQoc2VsZik6CisgICAgICAgIGxlZnQgPSBhc3QuTGlzdChbYXN0LlN0YXJyZWQoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgYXN0LlN0b3JlKCkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5TdG9yZSgpKQorICAgICAgICBhc3NpZ24gPSBhc3QuQXNzaWduKFtsZWZ0XSwgYXN0Lk51bSg0KSkKKyAgICAgICAgc2VsZi5zdG10KGFzc2lnbiwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKworICAgIGRlZiBfc2VxdWVuY2Uoc2VsZiwgZmFjKToKKyAgICAgICAgc2VsZi5leHByKGZhYyhbTm9uZV0sIGFzdC5Mb2FkKCkpLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5leHByKGZhYyhbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3NlcXVlbmNlKGFzdC5MaXN0KQorCisgICAgZGVmIHRlc3RfdHVwbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3NlcXVlbmNlKGFzdC5UdXBsZSkKKworICAgIGRlZiB0ZXN0X3N0ZGxpYl92YWxpZGF0ZXMoc2VsZik6CisgICAgICAgIHN0ZGxpYiA9IG9zLnBhdGguZGlybmFtZShhc3QuX19maWxlX18pCisgICAgICAgIHRlc3RzID0gW2ZuIGZvciBmbiBpbiBvcy5saXN0ZGlyKHN0ZGxpYikgaWYgZm4uZW5kc3dpdGgoIi5weSIpXQorICAgICAgICB0ZXN0cy5leHRlbmQoWyJ0ZXN0L3Rlc3RfZ3JhbW1hci5weSIsICJ0ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5Il0pCisgICAgICAgIGZvciBtb2R1bGUgaW4gdGVzdHM6CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihzdGRsaWIsIG1vZHVsZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbiwgInIiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIG1vZCA9IGFzdC5wYXJzZShzb3VyY2UpCisgICAgICAgICAgICBjb21waWxlKG1vZCwgZm4sICJleGVjIikKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQVNUX1Rlc3RzLCBBU1RIZWxwZXJzX1Rlc3QpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQVNUX1Rlc3RzLCBBU1RIZWxwZXJzX1Rlc3QsIEFTVFZhbGlkYXRvclRlc3RzKQogCiBkZWYgbWFpbigpOgogICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6CkBAIC01MzksOSArOTY3LDExIEBACiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ1doaWxlJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNiksICd2JywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCA4KSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnSWYnLCAoMSwgMCksICgnTmFtZScsICgxLCAzKSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDUpKV0sIFtdKV0pLAorKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMTMpKV0pXSksCisoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpLCAoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDEzKSwgJ3onLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAncScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMjEpKV0pXSksCiAoJ01vZHVsZScsIFsoJ1JhaXNlJywgKDEsIDApLCAoJ0NhbGwnLCAoMSwgNiksICgnTmFtZScsICgxLCA2KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIFsoJ1N0cicsICgxLCAxNiksICdzdHJpbmcnKV0sIFtdLCBOb25lLCBOb25lKSwgTm9uZSldKSwKLSgnTW9kdWxlJywgWygnVHJ5RXhjZXB0JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ0V4Y2VwdEhhbmRsZXInLCAoMywgMCksICgnTmFtZScsICgzLCA3KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIE5vbmUsIFsoJ1Bhc3MnLCAoNCwgMikpXSldLCBbXSldKSwKLSgnTW9kdWxlJywgWygnVHJ5RmluYWxseScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbKCdQYXNzJywgKDQsIDIpKV0pXSksCisoJ01vZHVsZScsIFsoJ1RyeScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbKCdFeGNlcHRIYW5kbGVyJywgKDMsIDApLCAoJ05hbWUnLCAoMywgNyksICdFeGNlcHRpb24nLCAoJ0xvYWQnLCkpLCBOb25lLCBbKCdQYXNzJywgKDQsIDIpKV0pXSwgW10sIFtdKV0pLAorKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgW10sIFtdLCBbKCdQYXNzJywgKDQsIDIpKV0pXSksCiAoJ01vZHVsZScsIFsoJ0Fzc2VydCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDcpLCAndicsICgnTG9hZCcsKSksIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0ltcG9ydCcsICgxLCAwKSwgWygnYWxpYXMnLCAnc3lzJywgTm9uZSldKV0pLAogKCdNb2R1bGUnLCBbKCdJbXBvcnRGcm9tJywgKDEsIDApLCAnc3lzJywgWygnYWxpYXMnLCAndicsIE5vbmUpXSwgMCldKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IDVmNTVkZjguLjQyYTI1MjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtMjEsNiArMjEsOCBAQAogCiBIT1NUID0gc3VwcG9ydC5IT1NUCiAKK0hBU19VTklYX1NPQ0tFVFMgPSBoYXNhdHRyKHNvY2tldCwgJ0FGX1VOSVgnKQorCiBjbGFzcyBkdW1teXNvY2tldDoKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKQEAgLTcyLDE1ICs3NCwxNiBAQAogICAgICAgICBwYXNzCiAgICAgZWxzZToKICAgICAgICAgbiA9IDIwMAotICAgICAgICB3aGlsZSBuID4gMDoKLSAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KFtjb25uXSwgW10sIFtdKQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHdoaWxlIG4gPiAwIGFuZCB0aW1lLnRpbWUoKSAtIHN0YXJ0IDwgMy4wOgorICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QoW2Nvbm5dLCBbXSwgW10sIDAuMSkKICAgICAgICAgICAgIGlmIHI6CisgICAgICAgICAgICAgICAgbiAtPSAxCiAgICAgICAgICAgICAgICAgZGF0YSA9IGNvbm4ucmVjdigxMCkKICAgICAgICAgICAgICAgICAjIGtlZXAgZXZlcnl0aGluZyBleGNlcHQgZm9yIHRoZSBuZXdsaW5lIHRlcm1pbmF0b3IKICAgICAgICAgICAgICAgICBidWYud3JpdGUoZGF0YS5yZXBsYWNlKGInXG4nLCBiJycpKQogICAgICAgICAgICAgICAgIGlmIGInXG4nIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBuIC09IDEKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKIAogICAgICAgICBjb25uLmNsb3NlKCkKQEAgLTg4LDYgKzkxLDEzIEBACiAgICAgICAgIHNlcnYuY2xvc2UoKQogICAgICAgICBldnQuc2V0KCkKIAorZGVmIGJpbmRfYWZfYXdhcmUoc29jaywgYWRkcik6CisgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIGJpbmQgYSBzb2NrZXQgYWNjb3JkaW5nIHRvIGl0cyBmYW1pbHkuIiIiCisgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc29jay5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXRoIGRvZXNuJ3QgZXhpc3QuCisgICAgICAgIHVubGluayhhZGRyKQorICAgIHNvY2suYmluZChhZGRyKQorCiAKIGNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlYWR3cml0ZWV4YyhzZWxmKToKQEAgLTM1Myw3ICszNjMsNyBAQAogICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CiAgICAgICAgIGV2dCA9IHRocmVhZGluZy5FdmVudCgpCi0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc29jay5zZXR0aW1lb3V0KDMpCiAgICAgICAgIHBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzb2NrKQogCkBAIC0zNjgsNyArMzc4LDcgQEAKIAogICAgICAgICAgICAgZGF0YSA9IGIiU3VwcG9zZSB0aGVyZSBpc24ndCBhIDE2LXRvbiB3ZWlnaHQ/IgogICAgICAgICAgICAgZCA9IGRpc3BhdGNoZXJ3aXRoc2VuZF9ub3JlYWQoKQotICAgICAgICAgICAgZC5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBkLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgZC5jb25uZWN0KChIT1NULCBwb3J0KSkKIAogICAgICAgICAgICAgIyBnaXZlIHRpbWUgZm9yIHNvY2tldCB0byBjb25uZWN0CkBAIC00NjgsMjIgKzQ3OCwyMiBAQAogICAgICAgICByYWlzZQogCiAKLWNsYXNzIFRDUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyKToKK2NsYXNzIEJhc2VTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAgICAgIiIiQSBzZXJ2ZXIgd2hpY2ggbGlzdGVucyBvbiBhbiBhZGRyZXNzIGFuZCBkaXNwYXRjaGVzIHRoZQogICAgIGNvbm5lY3Rpb24gdG8gYSBoYW5kbGVyLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXI9QmFzZVRlc3RIYW5kbGVyLCBob3N0PUhPU1QsIHBvcnQ9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseSwgYWRkciwgaGFuZGxlcj1CYXNlVGVzdEhhbmRsZXIpOgogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZmFtaWx5KQogICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKLSAgICAgICAgc2VsZi5iaW5kKChob3N0LCBwb3J0KSkKKyAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgc2VsZi5saXN0ZW4oNSkKICAgICAgICAgc2VsZi5oYW5kbGVyID0gaGFuZGxlcgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGFkZHJlc3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICByZXR1cm4gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBzb2NrLCBhZGRyKToKICAgICAgICAgc2VsZi5oYW5kbGVyKHNvY2spCkBAIC00OTQsOSArNTA0LDkgQEAKIAogY2xhc3MgQmFzZUNsaWVudChCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHJlc3MpOgogICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCiAgICAgICAgIHNlbGYuY29ubmVjdChhZGRyZXNzKQogCiAgICAgZGVmIGhhbmRsZV9jb25uZWN0KHNlbGYpOgpAQCAtNTI2LDggKzUzNiw4IEBACiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9hY2NlcHQoc2VsZik6CkBAIC01MzUsMTggKzU0NSwxOCBAQAogCiAgICAgICAgIGNsYXNzIFRlc3RMaXN0ZW5lcihCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyKToKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCisgICAgICAgICAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKCkKLSAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gVGVzdExpc3RlbmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhzZXJ2ZXIpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfYWNjZXB0ZWQoc2VsZik6CkBAIC01NTQsMTIgKzU2NCwxMiBAQAogCiAgICAgICAgIGNsYXNzIFRlc3RMaXN0ZW5lcihCYXNlVGVzdEhhbmRsZXIpOgogCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyKToKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgICAgICBzZWxmLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCisgICAgICAgICAgICAgICAgYmluZF9hZl9hd2FyZShzZWxmLnNvY2tldCwgYWRkcikKICAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQotICAgICAgICAgICAgICAgIHNlbGYuYWRkcmVzcyA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKQogCiAgICAgICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLmhhbmRsZV9hY2NlcHQoc2VsZikKQEAgLTU2OCw4ICs1NzgsOCBAQAogICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKHNlcnZlcikKIAogCkBAIC01ODUsOCArNTk1LDggQEAKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgICAgICBzZWxmLnNlbmQoYid4JyAqIDEwMjQpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX3dyaXRlKHNlbGYpOgpAQCAtNTk2LDggKzYwNiw4IEBACiAgICAgICAgICAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfY2xvc2Uoc2VsZik6CkBAIC02MjAsOCArNjMwLDQwIEBACiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2Nsb3NlX2FmdGVyX2Nvbm5fYnJva2VuKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgRUNPTk5SRVNFVC9FUElQRSBpcyBjb3JyZWN0bHkgaGFuZGxlZCAoaXNzdWVzICM1NjYxIGFuZAorICAgICAgICAjICMxMTI2NSkuCisKKyAgICAgICAgZGF0YSA9IGInXDAnICogMTI4CisKKyAgICAgICAgY2xhc3MgVGVzdENsaWVudChCYXNlQ2xpZW50KToKKworICAgICAgICAgICAgZGVmIGhhbmRsZV93cml0ZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoZGF0YSkKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVfZXhwdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgY2xhc3MgVGVzdEhhbmRsZXIoQmFzZVRlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYucmVjdihsZW4oZGF0YSkpCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisKKyAgICAgICAgICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKSwKQEAgLTYzMCw5ICs2NzIsMTIgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgaGFuZGxlX2V4cHQgaXMgY2FsbGVkIG9uIE9PQiBkYXRhIHJlY2VpdmVkLgogICAgICAgICAjIE5vdGU6IHRoaXMgbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3JtcyBhcyBPT0IgZGF0YSBpcwogICAgICAgICAjIHRlbnVvdXNseSBzdXBwb3J0ZWQgYW5kIHJhcmVseSB1c2VkLgorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQogCiAgICAgICAgIGNsYXNzIFRlc3RDbGllbnQoQmFzZUNsaWVudCk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2V4cHQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQucmVjdigxMDI0LCBzb2NrZXQuTVNHX09PQikKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKICAgICAgICAgY2xhc3MgVGVzdEhhbmRsZXIoQmFzZVRlc3RIYW5kbGVyKToKQEAgLTY0MCw4ICs2ODUsOCBAQAogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LnNlbmQoYnl0ZXMoY2hyKDI0NCksICdsYXRpbi0xJyksIHNvY2tldC5NU0dfT09CKQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcihUZXN0SGFuZGxlcikKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyLCBUZXN0SGFuZGxlcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9lcnJvcihzZWxmKToKQEAgLTY1OCwxMyArNzAzLDEzIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJleGNlcHRpb24gbm90IHJhaXNlZCIpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfY29ubmVjdGlvbl9hdHRyaWJ1dGVzKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogCiAgICAgICAgICMgd2Ugc3RhcnQgZGlzY29ubmVjdGVkCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VydmVyLmNvbm5lY3RlZCkKQEAgLTY5NCwyNSArNzM5LDI5IEBACiAKICAgICBkZWYgdGVzdF9jcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCi0gICAgICAgIHMuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC5mYW1pbHksIHNlbGYuZmFtaWx5KQogICAgICAgICBTT0NLX05PTkJMT0NLID0gZ2V0YXR0cihzb2NrZXQsICdTT0NLX05PTkJMT0NLJywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvY2tldC50eXBlLCBzb2NrZXQuU09DS19TVFJFQU0gfCBTT0NLX05PTkJMT0NLKQogCiAgICAgZGVmIHRlc3RfYmluZChzZWxmKToKKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKICAgICAgICAgczEgPSBhc3luY29yZS5kaXNwYXRjaGVyKCkKLSAgICAgICAgczEuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzMS5iaW5kKChIT1NULCAwKSkKKyAgICAgICAgczEuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKKyAgICAgICAgczEuYmluZChzZWxmLmFkZHIpCiAgICAgICAgIHMxLmxpc3Rlbig1KQogICAgICAgICBwb3J0ID0gczEuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KIAogICAgICAgICBzMiA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoKQotICAgICAgICBzMi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHMyLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgICMgRUFERFJJTlVTRSBpbmRpY2F0ZXMgdGhlIHNvY2tldCB3YXMgY29ycmVjdGx5IGJvdW5kCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgczIuYmluZCwgKEhPU1QsIHBvcnQpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHMyLmJpbmQsIChzZWxmLmFkZHJbMF0sIHBvcnQpKQogCiAgICAgZGVmIHRlc3Rfc2V0X3JldXNlX2FkZHIoc2VsZik6Ci0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgaWYgSEFTX1VOSVhfU09DS0VUUyBhbmQgc2VsZi5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVg6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJOb3QgYXBwbGljYWJsZSB0byBBRl9VTklYIHNvY2tldHMuIikKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2suc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKQEAgLTcyMCwxMSArNzY5LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGlmIFNPX1JFVVNFQUREUiBzdWNjZWVkZWQgZm9yIHNvY2sgd2UgZXhwZWN0IGFzeW5jb3JlCiAgICAgICAgICAgICAjIHRvIGRvIHRoZSBzYW1lCi0gICAgICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KCkpCisgICAgICAgICAgICBzID0gYXN5bmNvcmUuZGlzcGF0Y2hlcihzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSkKICAgICAgICAgICAgIHMuc29ja2V0LmNsb3NlKCkKLSAgICAgICAgICAgIHMuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQogICAgICAgICAgICAgcy5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zb2NrZXQuZ2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSKSkKQEAgLTczNSwxMiArNzg0LDE0IEBACiAgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfcXVpY2tfY29ubmVjdChzZWxmKToKICAgICAgICAgIyBzZWU6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDM0MAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bGFtYmRhOiBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4xLCBjb3VudD01MDApKQotICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgaWYgc2VsZi5mYW1pbHkgaW4gKHNvY2tldC5BRl9JTkVULCBnZXRhdHRyKHNvY2tldCwgIkFGX0lORVQ2Iiwgb2JqZWN0KCkpKToKKyAgICAgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6IGFzeW5jb3JlLmxvb3AodGltZW91dD0wLjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50PTUwMCkpCisgICAgICAgICAgICB0LnN0YXJ0KCkKIAotICAgICAgICBmb3IgeCBpbiByYW5nZSgyMCk6Ci0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzZWxmLmZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICAgICAgcy5zZXR0aW1lb3V0KC4yKQogICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fTElOR0VSLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKCdpaScsIDEsIDApKQpAQCAtNzUxLDE4ICs4MDIsNTIgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKLWNsYXNzIFRlc3RBUElfVXNlU2VsZWN0KEJhc2VUZXN0QVBJKToKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFNvY2tldHMoQmFzZVRlc3RBUEkpOgorICAgIGZhbWlseSA9IHNvY2tldC5BRl9JTkVUCisgICAgYWRkciA9IChIT1NULCAwKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgc3VwcG9ydCByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZUlQdjZTb2NrZXRzKEJhc2VUZXN0QVBJKToKKyAgICBmYW1pbHkgPSBzb2NrZXQuQUZfSU5FVDYKKyAgICBhZGRyID0gKCc6OjEnLCAwKQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfVU5JWF9TT0NLRVRTLCAnVW5peCBzb2NrZXRzIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlVW5peFNvY2tldHMoQmFzZVRlc3RBUEkpOgorICAgIGlmIEhBU19VTklYX1NPQ0tFVFM6CisgICAgICAgIGZhbWlseSA9IHNvY2tldC5BRl9VTklYCisgICAgYWRkciA9IHN1cHBvcnQuVEVTVEZOCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHVubGluayhzZWxmLmFkZHIpCisgICAgICAgIEJhc2VUZXN0QVBJLnRlYXJEb3duKHNlbGYpCisKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFNlbGVjdChUZXN0QVBJX1VzZUlQdjRTb2NrZXRzKToKICAgICB1c2VfcG9sbCA9IEZhbHNlCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQotY2xhc3MgVGVzdEFQSV9Vc2VQb2xsKEJhc2VUZXN0QVBJKToKK2NsYXNzIFRlc3RBUElfVXNlSVB2NFBvbGwoVGVzdEFQSV9Vc2VJUHY0U29ja2V0cyk6CiAgICAgdXNlX3BvbGwgPSBUcnVlCiAKK2NsYXNzIFRlc3RBUElfVXNlSVB2NlNlbGVjdChUZXN0QVBJX1VzZUlQdjZTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IEZhbHNlCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VJUHY2UG9sbChUZXN0QVBJX1VzZUlQdjZTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IFRydWUKKworY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1NlbGVjdChUZXN0QVBJX1VzZVVuaXhTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IEZhbHNlCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpLCAnc2VsZWN0LnBvbGwgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1BvbGwoVGVzdEFQSV9Vc2VVbml4U29ja2V0cyk6CisgICAgdXNlX3BvbGwgPSBUcnVlCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtIZWxwZXJGdW5jdGlvblRlc3RzLCBEaXNwYXRjaGVyVGVzdHMsIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzLAotICAgICAgICAgICAgIERpc3BhdGNoZXJXaXRoU2VuZFRlc3RzX1VzZVBvbGwsIFRlc3RBUElfVXNlU2VsZWN0LAotICAgICAgICAgICAgIFRlc3RBUElfVXNlUG9sbCwgRmlsZVdyYXBwZXJUZXN0XQorICAgICAgICAgICAgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbCwgRmlsZVdyYXBwZXJUZXN0LAorICAgICAgICAgICAgVGVzdEFQSV9Vc2VJUHY0U2VsZWN0LCBUZXN0QVBJX1VzZUlQdjRQb2xsLCBUZXN0QVBJX1VzZUlQdjZTZWxlY3QsCisgICAgICAgICAgICBUZXN0QVBJX1VzZUlQdjZQb2xsLCBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzU2VsZWN0LAorICAgICAgICAgICAgVGVzdEFQSV9Vc2VVbml4U29ja2V0c1BvbGxdCiAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5IGIvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKaW5kZXggY2E5NDUwNC4uMjU2OTQ3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkKQEAgLTEwMyw0NCArMTAzLDUzIEBACiAKICAgICBkZWYgdGVzdF9iNjRkZWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iKSwgYiJ3d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYidBQT09JyksIGInXHgwMCcpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZUT09IiksIGIiYSIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0k9IiksIGIiYWIiKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGIiWVdKaiIpLCBiImFiYyIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYcEJRa05FIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiUlVaSFNFbEtTMHhOVGs5UVVWSlRWRlZXVjFoWldqQXhNak0wXG5OVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iKSwKLSAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKLSAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iKQotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInJyksIGInJykKKworICAgICAgICB0ZXN0cyA9IHtiImQzZDNMbkI1ZEdodmJpNXZjbWM9IjogYiJ3d3cucHl0aG9uLm9yZyIsCisgICAgICAgICAgICAgICAgIGInQUE9PSc6IGInXHgwMCcsCisgICAgICAgICAgICAgICAgIGIiWVE9PSI6IGIiYSIsCisgICAgICAgICAgICAgICAgIGIiWVdJPSI6IGIiYWIiLAorICAgICAgICAgICAgICAgICBiIllXSmoiOiBiImFiYyIsCisgICAgICAgICAgICAgICAgIGIiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHBCUWtORSIKKyAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBcbk5UIgorICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iOgorCisgICAgICAgICAgICAgICAgIGIiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCisgICAgICAgICAgICAgICAgIGIiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCisgICAgICAgICAgICAgICAgIGIiMDEyMzQ1Njc4OSFAIzBeJiooKTs6PD4sLiBbXXt9IiwKKyAgICAgICAgICAgICAgICAgYicnOiBiJycsCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKKwogICAgICAgICAjIFRlc3Qgd2l0aCBhcmJpdHJhcnkgYWx0ZXJuYXRpdmUgY2hhcmFjdGVycwotICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGInMDFhKmIkY2QnLCBhbHRjaGFycz1iJyokJyksIGInXHhkM1ZceGJlb1x4ZjdceDFkJykKLSAgICAgICAgIyBDaGVjayBpZiBwYXNzaW5nIGEgc3RyIG9iamVjdCByYWlzZXMgYW4gZXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCBiIiIsIGFsdGNoYXJzPSIiKQorICAgICAgICB0ZXN0c19hbHRjaGFycyA9IHsoYicwMWEqYiRjZCcsIGInKiQnKTogYidceGQzVlx4YmVvXHhmN1x4MWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciAoZGF0YSwgYWx0Y2hhcnMpLCByZXMgaW4gdGVzdHNfYWx0Y2hhcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGRhdGFfc3RyID0gZGF0YS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGFsdGNoYXJzX3N0ciA9IGFsdGNoYXJzLmRlY29kZSgnYXNjaWknKQorCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEsIGFsdGNoYXJzPWFsdGNoYXJzKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhX3N0ciwgYWx0Y2hhcnM9YWx0Y2hhcnMpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEsIGFsdGNoYXJzPWFsdGNoYXJzX3N0ciksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YV9zdHIsIGFsdGNoYXJzPWFsdGNoYXJzX3N0ciksIHJlcykKKwogICAgICAgICAjIFRlc3Qgc3RhbmRhcmQgYWxwaGFiZXQKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiImQzZDNMbkI1ZEdodmJpNXZjbWM9IiksIGIid3d3LnB5dGhvbi5vcmciKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVE9PSIpLCBiImEiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdJPSIpLCBiImFiIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXSmoiKSwgYiJhYmMiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiIiksIGIiIikKLSAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShiIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwQlFrTkUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBOVCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlkzT0RraFFDTXdYaVlxS0NrN09qdytMQzRnVzExN2ZRPT0iKSwKLSAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKLSAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iKQotICAgICAgICAjIENoZWNrIGlmIHBhc3NpbmcgYSBzdHIgb2JqZWN0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsIGIiIiwgYWx0Y2hhcnM9IiIpCisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCisKICAgICAgICAgIyBUZXN0IHdpdGggJ1VSTCBzYWZlJyBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXJzCi0gICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShiJzAxYS1iX2NkJyksIGInXHhkM1ZceGJlb1x4ZjdceDFkJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUsICIiKQorICAgICAgICB0ZXN0c191cmxzYWZlID0ge2InMDFhLWJfY2QnOiBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicnOiBiJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzX3VybHNhZmUuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQogCiAgICAgZGVmIHRlc3RfYjY0ZGVjb2RlX3BhZGRpbmdfZXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCBiJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjY0ZGVjb2RlLCAnYWJjJykKIAogICAgIGRlZiB0ZXN0X2I2NGRlY29kZV9pbnZhbGlkX2NoYXJzKHNlbGYpOgogICAgICAgICAjIGlzc3VlIDE0NjYwNjU6IFRlc3Qgc29tZSBpbnZhbGlkIGNoYXJhY3RlcnMuCkBAIC0xNTUsOCArMTY0LDExIEBACiAgICAgICAgICAgICAgICAgIChiJ1lXSmpcbllXST0nLCBiJ2FiY2FiJykpCiAgICAgICAgIGZvciBic3RyLCByZXMgaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2U2NC5iNjRkZWNvZGUoYnN0ciksIHJlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZTY0LmI2NGRlY29kZShic3RyLmRlY29kZSgnYXNjaWknKSksIHJlcykKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgogICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoYnN0ciwgdmFsaWRhdGU9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iNjRkZWNvZGUoYnN0ci5kZWNvZGUoJ2FzY2lpJyksIHZhbGlkYXRlPVRydWUpCiAKICAgICBkZWYgdGVzdF9iMzJlbmNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtMTcxLDQwICsxODMsNjMgQEAKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYicnKSwgYicnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInQUE9PT09PT0nKSwgYidceDAwJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01FPT09PT09JyksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJBPT09PScpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHPT09JyksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkE9JyksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pERicpLCBiJ2FiY2RlJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCAiIikKKyAgICAgICAgdGVzdHMgPSB7YicnOiBiJycsCisgICAgICAgICAgICAgICAgIGInQUE9PT09PT0nOiBiJ1x4MDAnLAorICAgICAgICAgICAgICAgICBiJ01FPT09PT09JzogYidhJywKKyAgICAgICAgICAgICAgICAgYidNRlJBPT09PSc6IGInYWInLAorICAgICAgICAgICAgICAgICBiJ01GUkdHPT09JzogYidhYmMnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkE9JzogYidhYmNkJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pERic6IGInYWJjZGUnLAorICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCiAKICAgICBkZWYgdGVzdF9iMzJkZWNvZGVfY2FzZWZvbGQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInJywgVHJ1ZSksIGInJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01FPT09PT09JywgVHJ1ZSksIGInYScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJBPT09PScsIFRydWUpLCBiJ2FiJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHPT09JywgVHJ1ZSksIGInYWJjJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkE9JywgVHJ1ZSksIGInYWJjZCcpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNRlJHR1pERicsIFRydWUpLCBiJ2FiY2RlJykKLSAgICAgICAgIyBMb3dlciBjYXNlcwotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWU9PT09PT0nLCBUcnVlKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmE9PT09JywgVHJ1ZSksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2c9PT0nLCBUcnVlKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2d6YT0nLCBUcnVlKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ21mcmdnemRmJywgVHJ1ZSksIGInYWJjZGUnKQotICAgICAgICAjIEV4cGVjdGVkIGV4Y2VwdGlvbnMKKyAgICAgICAgdGVzdHMgPSB7YicnOiBiJycsCisgICAgICAgICAgICAgICAgIGInTUU9PT09PT0nOiBiJ2EnLAorICAgICAgICAgICAgICAgICBiJ01GUkE9PT09JzogYidhYicsCisgICAgICAgICAgICAgICAgIGInTUZSR0c9PT0nOiBiJ2FiYycsCisgICAgICAgICAgICAgICAgIGInTUZSR0daQT0nOiBiJ2FiY2QnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkRGJzogYidhYmNkZScsCisgICAgICAgICAgICAgICAgICMgTG93ZXIgY2FzZXMKKyAgICAgICAgICAgICAgICAgYidtZT09PT09PSc6IGInYScsCisgICAgICAgICAgICAgICAgIGInbWZyYT09PT0nOiBiJ2FiJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZz09PSc6IGInYWJjJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZ3phPSc6IGInYWJjZCcsCisgICAgICAgICAgICAgICAgIGInbWZyZ2d6ZGYnOiBiJ2FiY2RlJywKKyAgICAgICAgICAgICAgICAgfQorCisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgVHJ1ZSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJyksIFRydWUpLCByZXMpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiJ21lPT09PT09JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCAnbWU9PT09PT0nKQorCiAgICAgICAgICMgTWFwcGluZyB6ZXJvIGFuZCBvbmUKICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01MTzIzNDU2JyksIGInYlx4ZGRceGFkXHhmM1x4YmUnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTTEwMjM0NTYnLCBtYXAwMT1iJ0wnKSwgYidiXHhkZFx4YWRceGYzXHhiZScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNMTAyMzQ1NicsIG1hcDAxPWInSScpLCBiJ2JceDFkXHhhZFx4ZjNceGJlJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYXNlNjQuYjMyZGVjb2RlLCBiIiIsIG1hcDAxPSIiKQorICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKCdNTE8yMzQ1NicpLCBiJ2JceGRkXHhhZFx4ZjNceGJlJykKKworICAgICAgICBtYXBfdGVzdHMgPSB7KGInTTEwMjM0NTYnLCBiJ0wnKTogYidiXHhkZFx4YWRceGYzXHhiZScsCisgICAgICAgICAgICAgICAgICAgICAoYidNMTAyMzQ1NicsIGInSScpOiBiJ2JceDFkXHhhZFx4ZjNceGJlJywKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChkYXRhLCBtYXAwMSksIHJlcyBpbiBtYXBfdGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGRhdGFfc3RyID0gZGF0YS5kZWNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIG1hcDAxX3N0ciA9IG1hcDAxLmRlY29kZSgnYXNjaWknKQorCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIG1hcDAxPW1hcDAxKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhX3N0ciwgbWFwMDE9bWFwMDEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGEsIG1hcDAxPW1hcDAxX3N0ciksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YV9zdHIsIG1hcDAxPW1hcDAxX3N0ciksIHJlcykKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZV9lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInYWJjJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInQUJDREVGPT0nKQorICAgICAgICBmb3IgZGF0YSBpbiBbYidhYmMnLCBiJ0FCQ0RFRj09J106CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlKGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yKToKKyAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogCiAgICAgZGVmIHRlc3RfYjE2ZW5jb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKQEAgLTIxNSwxMiArMjUwLDI0IEBACiAgICAgZGVmIHRlc3RfYjE2ZGVjb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAxMDJBQkNERUYnKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAxMDJBQkNERUYnKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMCcpLCBiJ1x4MDAnKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMCcpLCBiJ1x4MDAnKQogICAgICAgICAjIExvd2VyIGNhc2UgaXMgbm90IGFsbG93ZWQgd2l0aG91dCBhIGZsYWcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsIGInMDEwMmFiY2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJpbmFzY2lpLkVycm9yLCBiYXNlNjQuYjE2ZGVjb2RlLCAnMDEwMmFiY2RlZicpCiAgICAgICAgICMgQ2FzZSBmb2xkCiAgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoYicwMTAyYWJjZGVmJywgVHJ1ZSksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsICIiKQorICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKCcwMTAyYWJjZGVmJywgVHJ1ZSksIGInXHgwMVx4MDJceGFiXHhjZFx4ZWYnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX25vbmFzY2lpX3N0cihzZWxmKToKKyAgICAgICAgZGVjb2RlX2Z1bmNzID0gKGJhc2U2NC5iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LmIzMmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC5iMTZkZWNvZGUpCisgICAgICAgIGZvciBmIGluIGRlY29kZV9mdW5jczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYsICd3aXRoIG5vbi1hc2NpaSBceGNiJykKIAogICAgIGRlZiB0ZXN0X0Vycm9ySGVyaXRhZ2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGJpbmFzY2lpLkVycm9yLCBWYWx1ZUVycm9yKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5IGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKaW5kZXggZjNjNmViYi4uMGU1NDU5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKQEAgLTEsMyArMSwxMyBAQAorIiIiQmlnbWVtIHRlc3RzIC0gdGVzdHMgZm9yIHRoZSAzMi1iaXQgYm91bmRhcnkgaW4gY29udGFpbmVycy4KKworVGhlc2UgdGVzdHMgdHJ5IHRvIGV4ZXJjaXNlIHRoZSAzMi1iaXQgYm91bmRhcnkgdGhhdCBpcyBzb21ldGltZXMsIGlmCityYXJlbHksIGV4Y2VlZGVkIGluIHByYWN0aWNlLCBidXQgYWxtb3N0IG5ldmVyIHRlc3RlZC4gIFRoZXkgYXJlIHJlYWxseSBvbmx5CittZWFuaW5nZnVsIG9uIDY0LWJpdCBidWlsZHMgb24gbWFjaGluZXMgd2l0aCBhICpsb3QqIG9mIG1lbW9yeSwgYnV0IHRoZQordGVzdHMgYXJlIGFsd2F5cyBydW4sIHVzdWFsbHkgd2l0aCB2ZXJ5IGxvdyBtZW1vcnkgbGltaXRzIHRvIG1ha2Ugc3VyZSB0aGUKK3Rlc3RzIHRoZW1zZWx2ZXMgZG9uJ3Qgc3VmZmVyIGZyb20gYml0cm90LiAgVG8gcnVuIHRoZW0gZm9yIHJlYWwsIHBhc3MgYQoraGlnaCBtZW1vcnkgbGltaXQgdG8gcmVncnRlc3QsIHdpdGggdGhlIC1NIG9wdGlvbi4KKyIiIgorCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfMUcsIF8yRywgXzRHCiAKQEAgLTYsMjAgKzE2LDM1IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgZnVuY3Rvb2xzCiAKKyMgVGhlc2UgdGVzdHMgYWxsIHVzZSBvbmUgb2YgdGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9ycyB0byBpbmRpY2F0ZSBob3cgbXVjaAorIyBtZW1vcnkgdGhleSB1c2UgYW5kIGhvdyBtdWNoIG1lbW9yeSB0aGV5IG5lZWQgdG8gYmUgZXZlbiBtZWFuaW5nZnVsLiAgVGhlCisjIGRlY29yYXRvcnMgdGFrZSB0d28gYXJndW1lbnRzOiBhICdtZW11c2UnIGluZGljYXRvciBkZWNsYXJpbmcKKyMgKGFwcHJveGltYXRlKSBieXRlcyBwZXIgc2l6ZS11bml0IHRoZSB0ZXN0IHdpbGwgdXNlIChhdCBwZWFrIHVzYWdlKSwgYW5kIGEKKyMgJ21pbnNpemUnIGluZGljYXRvciBkZWNsYXJpbmcgYSBtaW5pbXVtICp1c2VmdWwqIHNpemUuICBBIHRlc3QgdGhhdAorIyBhbGxvY2F0ZXMgYSBieXRlc3RyaW5nIHRvIHRlc3QgdmFyaW91cyBvcGVyYXRpb25zIG5lYXIgdGhlIGVuZCB3aWxsIGhhdmUgYQorIyBtaW5zaXplIG9mIGF0IGxlYXN0IDJHYiAob3IgaXQgd291bGRuJ3QgcmVhY2ggdGhlIDMyLWJpdCBsaW1pdCwgc28gdGhlCisjIHRlc3Qgd291bGRuJ3QgYmUgdmVyeSB1c2VmdWwpIGFuZCBhIG1lbXVzZSBvZiAxIChvbmUgYnl0ZSBwZXIgc2l6ZS11bml0LAorIyBpZiBpdCBhbGxvY2F0ZXMgb25seSBvbmUgYmlnIHN0cmluZyBhdCBhIHRpbWUuKQorIworIyBXaGVuIHJ1biB3aXRoIGEgbWVtb3J5IGxpbWl0IHNldCwgYm90aCBkZWNvcmF0b3JzIHNraXAgdGVzdHMgdGhhdCBuZWVkCisjIG1vcmUgbWVtb3J5IHRoYW4gYXZhaWxhYmxlIHRvIGJlIG1lYW5pbmdmdWwuICBUaGUgcHJlY2lzaW9uYmlnbWVtdGVzdCB3aWxsCisjIGFsd2F5cyBwYXNzIG1pbnNpemUgYXMgc2l6ZSwgZXZlbiBpZiB0aGVyZSBpcyBtdWNoIG1vcmUgbWVtb3J5IGF2YWlsYWJsZS4KKyMgVGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9yIHdpbGwgc2NhbGUgc2l6ZSB1cHdhcmQgdG8gZmlsbCBhdmFpbGFibGUgbWVtb3J5LgorIwogIyBCaWdtZW0gdGVzdGluZyBob3VzZXJ1bGVzOgogIwogIyAgLSBUcnkgbm90IHRvIGFsbG9jYXRlIHRvbyBtYW55IGxhcmdlIG9iamVjdHMuIEl0J3Mgb2theSB0byByZWx5IG9uCi0jICAgIHJlZmNvdW50aW5nIHNlbWFudGljcywgYnV0IGRvbid0IGZvcmdldCB0aGF0ICdzID0gY3JlYXRlX2xhcmdlc3RyaW5nKCknCisjICAgIHJlZmNvdW50aW5nIHNlbWFudGljcywgYW5kIGRvbid0IGZvcmdldCB0aGF0ICdzID0gY3JlYXRlX2xhcmdlc3RyaW5nKCknCiAjICAgIGRvZXNuJ3QgcmVsZWFzZSB0aGUgb2xkICdzJyAoaWYgaXQgZXhpc3RzKSB1bnRpbCB3ZWxsIGFmdGVyIGl0cyBuZXcKICMgICAgdmFsdWUgaGFzIGJlZW4gY3JlYXRlZC4gVXNlICdkZWwgcycgYmVmb3JlIHRoZSBjcmVhdGVfbGFyZ2VzdHJpbmcgY2FsbC4KICMKLSMgIC0gRG8gKm5vdCogY29tcGFyZSBsYXJnZSBvYmplY3RzIHVzaW5nIGFzc2VydEVxdWFsIG9yIHNpbWlsYXIuIEl0J3MgYQotIyAgICBsZW5ndGh5IG9wZXJhdGlvbiBhbmQgdGhlIGVycm9ybWVzc2FnZSB3aWxsIGJlIHV0dGVybHkgdXNlbGVzcyBkdWUgdG8KLSMgICAgaXRzIHNpemUuIFRvIG1ha2Ugc3VyZSB3aGV0aGVyIGEgcmVzdWx0IGhhcyB0aGUgcmlnaHQgY29udGVudHMsIGJldHRlcgotIyAgICB0byB1c2UgdGhlIHN0cmlwIG9yIGNvdW50IG1ldGhvZHMsIG9yIGNvbXBhcmUgbWVhbmluZ2Z1bCBzbGljZXMuCisjICAtIERvICpub3QqIGNvbXBhcmUgbGFyZ2Ugb2JqZWN0cyB1c2luZyBhc3NlcnRFcXVhbCwgYXNzZXJ0SW4gb3Igc2ltaWxhci4KKyMgICAgSXQncyBhIGxlbmd0aHkgb3BlcmF0aW9uIGFuZCB0aGUgZXJyb3JtZXNzYWdlIHdpbGwgYmUgdXR0ZXJseSB1c2VsZXNzCisjICAgIGR1ZSB0byBpdHMgc2l6ZS4gIFRvIG1ha2Ugc3VyZSB3aGV0aGVyIGEgcmVzdWx0IGhhcyB0aGUgcmlnaHQgY29udGVudHMsCisjICAgIGJldHRlciB0byB1c2UgdGhlIHN0cmlwIG9yIGNvdW50IG1ldGhvZHMsIG9yIGNvbXBhcmUgbWVhbmluZ2Z1bCBzbGljZXMuCiAjCiAjICAtIERvbid0IGZvcmdldCB0byB0ZXN0IGZvciBsYXJnZSBpbmRpY2VzLCBvZmZzZXRzIGFuZCByZXN1bHRzIGFuZCBzdWNoLAotIyAgICBpbiBhZGRpdGlvbiB0byBsYXJnZSBzaXplcy4KKyMgICAgaW4gYWRkaXRpb24gdG8gbGFyZ2Ugc2l6ZXMuIEFueXRoaW5nIHRoYXQgcHJvYmVzIHRoZSAzMi1iaXQgYm91bmRhcnkuCiAjCiAjICAtIFdoZW4gcmVwZWF0aW5nIGFuIG9iamVjdCAoc2F5LCBhIHN1YnN0cmluZywgb3IgYSBzbWFsbCBsaXN0KSB0byBjcmVhdGUKICMgICAgYSBsYXJnZSBvYmplY3QsIG1ha2UgdGhlIHN1Ym9iamVjdCBvZiBhIGxlbmd0aCB0aGF0IGlzIG5vdCBhIHBvd2VyIG9mCkBAIC0zNywxMyArNjIsMTQgQEAKICMgZmFpbCBhcyB3ZWxsLiBJIGRvIG5vdCBrbm93IHdoZXRoZXIgaXQgaXMgZHVlIHRvIG1lbW9yeSBmcmFnbWVudGF0aW9uCiAjIGlzc3Vlcywgb3Igb3RoZXIgc3BlY2lmaWNzIG9mIHRoZSBwbGF0Zm9ybSBtYWxsb2MoKSByb3V0aW5lLgogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCit1Y3MyX2NoYXJfc2l6ZSA9IDIKK3VjczRfY2hhcl9zaXplID0gNAogCiAKIGNsYXNzIEJhc2VTdHJUZXN0OgogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQotICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IHNlbGYuZnJvbV9sYXRpbjEoJyBhYmMgZGVmIGdoaScpCiAgICAgICAgIHMgPSBfKCctJykgKiBzaXplICsgU1VCU1RSCkBAIC05Miw3ICsxMTgsNyBAQAogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzID0gXygnLScpICogc2l6ZQogICAgICAgICB0YWJzaXplID0gOAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZXhwYW5kdGFicygpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5leHBhbmR0YWJzKCkgPT0gcykKICAgICAgICAgZGVsIHMKICAgICAgICAgc2xlbiwgcmVtYWluZGVyID0gZGl2bW9kKHNpemUsIHRhYnNpemUpCiAgICAgICAgIHMgPSBfKCcgICAgICAgXHQnKSAqIHNsZW4KQEAgLTM0Nyw3ICszNzMsNyBAQAogICAgICMgc3VmZmVyIGZvciB0aGUgbGlzdCBzaXplLiAoT3RoZXJ3aXNlLCBpdCdkIGNvc3QgYW5vdGhlciA0OCB0aW1lcwogICAgICMgc2l6ZSBpbiBieXRlcyEpIE5ldmVydGhlbGVzcywgYSBsaXN0IG9mIHNpemUgdGFrZXMKICAgICAjIDgqc2l6ZSBieXRlcy4KLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDUsIG1lbXVzZT0xMCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDUsIG1lbXVzZT0yICogYXNjaWlfY2hhcl9zaXplICsgOCkKICAgICBkZWYgdGVzdF9zcGxpdF9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgcyA9IF8oJyBhJykgKiBzaXplICsgXygnICcpCkBAIC0zNjYsOSArMzkyLDkgQEAKICAgICAgICAgIyB0YWtlIHVwIGFuIGlub3JkaW5hdGUgYW1vdW50IG9mIG1lbW9yeQogICAgICAgICBjaHVua3NpemUgPSBpbnQoc2l6ZSAqKiAwLjUgKyAyKSAvLyAyCiAgICAgICAgIFNVQlNUUiA9IF8oJyAnKSAqIGNodW5rc2l6ZSArIF8oJ1xuJykgKyBfKCcgJykgKiBjaHVua3NpemUgKyBfKCdcclxuJykKLSAgICAgICAgcyA9IFNVQlNUUiAqIGNodW5rc2l6ZQorICAgICAgICBzID0gU1VCU1RSICogKGNodW5rc2l6ZSAqIDIpCiAgICAgICAgIGwgPSBzLnNwbGl0bGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgY2h1bmtzaXplICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obCksIGNodW5rc2l6ZSAqIDQpCiAgICAgICAgIGV4cGVjdGVkID0gXygnICcpICogY2h1bmtzaXplCiAgICAgICAgIGZvciBpdGVtIGluIGw6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0sIGV4cGVjdGVkKQpAQCAtMzk0LDggKzQyMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCBzaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc3RyaXAoKSwgU1VCU1RSLnN0cmlwKCkpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCJhQmNEZUZHMTIuJ1x4YTlceDAwIikKICAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKQEAgLTQwNiw4ICs0MzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbOnN1YmxlbiAqIDNdLCBTVUJTVFIuc3dhcGNhc2UoKSAqIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stc3VibGVuICogMzpdLCBTVUJTVFIuc3dhcGNhc2UoKSAqIDMpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgZGVmIF90ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBTVUJTVFIgPSBfKCdTcGFhSEFhYUFhaGFtJykKICAgICAgICAgcyA9IFNVQlNUUiAqIChzaXplIC8vIGxlbihTVUJTVFIpICsgMikKQEAgLTQxOSwxNCArNDQzLDcgQEAKICAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oJ2Faei56LkFhei4nKQotICAgICAgICBpZiBpc2luc3RhbmNlKFNVQlNUUiwgc3RyKToKLSAgICAgICAgICAgIHRyYW5zID0gewotICAgICAgICAgICAgICAgIG9yZChfKCcuJykpOiBfKCctJyksCi0gICAgICAgICAgICAgICAgb3JkKF8oJ2EnKSk6IF8oJyEnKSwKLSAgICAgICAgICAgICAgICBvcmQoXygnWicpKTogXygnJCcpLAotICAgICAgICAgICAgfQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJhbnMgPSBieXRlcy5tYWtldHJhbnMoYicuYVonLCBiJy0hJCcpCisgICAgICAgIHRyYW5zID0gYnl0ZXMubWFrZXRyYW5zKGInLmFaJywgYictISQnKQogICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQogICAgICAgICByZXBlYXRzID0gc2l6ZSAvLyBzdWJsZW4gKyAyCiAgICAgICAgIHMgPSBTVUJTVFIgKiByZXBlYXRzCkBAIC01MTksMTkgKzUzNiwxOSBAQAogICAgICAgICBlZGdlID0gXygnLScpICogKHNpemUgLy8gMikKICAgICAgICAgcyA9IF8oJycpLmpvaW4oW2VkZ2UsIFNVQlNUUiwgZWRnZV0pCiAgICAgICAgIGRlbCBlZGdlCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oU1VCU1RSLCBzKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKFNVQlNUUiAqIDIsIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oXygnLScpLCBzKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKF8oJ2EnKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFNVQlNUUiBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFNVQlNUUiAqIDIgaW4gcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF8oJy0nKSBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF8oJ2EnKSBpbiBzKQogICAgICAgICBzICs9IF8oJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEluKF8oJ2EnKSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF8oJ2EnKSBpbiBzKQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPTIpCiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgczEgPSBfKCctJykgKiBzaXplCiAgICAgICAgIHMyID0gXygnLScpICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMxID09IHMyKQogICAgICAgICBkZWwgczIKICAgICAgICAgczIgPSBzMSArIF8oJ2EnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMxID09IHMyKQpAQCAtNTUyLDcgKzU2OSw3IEBACiAgICAgICAgIGgxID0gaGFzaChzKQogICAgICAgICBkZWwgcwogICAgICAgICBzID0gXygnXHgwMCcpICogKHNpemUgKyAxKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGgxID09IGhhc2gocykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaDEsIGhhc2gocykpCiAKIAogY2xhc3MgU3RyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgpAQCAtNTYzLDcgKzU4MCw2IEBACiAgICAgZGVmIGJhc2ljX2VuY29kZV90ZXN0KHNlbGYsIHNpemUsIGVuYywgYz0nLicsIGV4cGVjdGVkc2l6ZT1Ob25lKToKICAgICAgICAgaWYgZXhwZWN0ZWRzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZHNpemUgPSBzaXplCi0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcyA9IGMgKiBzaXplCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmVuY29kZShlbmMpKSwgZXhwZWN0ZWRzaXplKQpAQCAtNTgyLDQ4ICs1OTgsNjQgQEAKICAgICAgICAgICAgICAgICBtZW11c2UgPSBtZXRoLm1lbXVzZQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtZXRoLm1lbXVzZSA9IGNoYXJhY3Rlcl9zaXplICogbWVtdXNlCisgICAgICAgICAgICBtZXRoLm1lbXVzZSA9IGFzY2lpX2NoYXJfc2l6ZSAqIG1lbXVzZQogICAgICAgICAgICAgc2VsZi5fYWRqdXN0ZWRbbmFtZV0gPSBtZW11c2UKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIG5hbWUsIG1lbXVzZSBpbiBzZWxmLl9hZGp1c3RlZC5pdGVtcygpOgogICAgICAgICAgICAgZ2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lKS5tZW11c2UgPSBtZW11c2UKIAotICAgICMgdGhlIHV0ZjggZW5jb2RlciBwcmVhbGxvY2F0ZXMgYmlnIHRpbWUgKDR4IHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycykKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDQpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT11Y3M0X2NoYXJfc2l6ZSAqIDMpCisgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3Rfc3dhcGNhc2Uoc2l6ZSkKKworICAgICMgTWFueSBjb2RlY3MgY29udmVydCB0byB0aGUgbGVnYWN5IHJlcHJlc2VudGF0aW9uIGZpcnN0LCBleHBsYWluaW5nCisgICAgIyB3aHkgd2UgYWRkICd1Y3M0X2NoYXJfc2l6ZScgdG8gdGhlICdtZW11c2UnIGJlbG93LgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYtOCcpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA2ICsgMiwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA2ICsgMiwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIHVjczRfY2hhcl9zaXplICsgMSkKICAgICBkZWYgdGVzdF9lbmNvZGVfcmF3X3VuaWNvZGVfZXNjYXBlKHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAncmF3X3VuaWNvZGVfZXNjYXBlJykKICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIGFjY2VwdGFibGUgb24gMzItYml0CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1ICsgNzAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSArIDcwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgdWNzNF9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV91dGY3KHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmNycpCiAgICAgICAgIGV4Y2VwdCBNZW1vcnlFcnJvcjoKICAgICAgICAgICAgIHBhc3MgIyBhY2NlcHRhYmxlIG9uIDMyLWJpdAogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNCArIDUsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSArIDQpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNCArIDUsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyB1Y3M0X2NoYXJfc2l6ZSArIDQpCiAgICAgZGVmIHRlc3RfZW5jb2RlX3V0ZjMyKHNlbGYsIHNpemUpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmMzInLCBleHBlY3RlZHNpemU9NCpzaXplKzQpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAndXRmMzInLCBleHBlY3RlZHNpemU9NCAqIHNpemUgKyA0KQogICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgICAgICBwYXNzICMgYWNjZXB0YWJsZSBvbiAzMi1iaXQKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC0gMSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAtIDEsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV9hc2NpaShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ2FzY2lpJywgYz0nQScpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAyKQorICAgICMgc3RyICUgKC4uLikgdXNlcyBhIFB5X1VDUzQgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMiArIHVjczRfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmLCBzaXplKToKICAgICAgICAgcyA9ICctJyAqIHNpemUKICAgICAgICAgc2YgPSAnJXMnICUgKHMsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNmKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocyA9PSBzZikKICAgICAgICAgZGVsIHNmCiAgICAgICAgIHNmID0gJy4uJXMuLicgJSAocywpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNmKSwgbGVuKHMpICsgNCkKQEAgLTY0MCw3ICs2NzIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJy4nKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCctJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogMikKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogMikKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJy0nICogc2l6ZQogICAgICAgICBzID0gcmVwcihzKQpAQCAtNjYxLDcgKzY5Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnXFwnKSwgc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogNSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICogNSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJ1x4MDAnICogc2l6ZQogICAgICAgICBzID0gcmVwcihzKQpAQCAtNjcxLDcgKzcwMywxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJ1xcJyksIHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnMCcpLCBzaXplICogMikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiA3KQorICAgICMgYXNjaWkoKSBjYWxscyBlbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKSwgd2hpY2ggaXRzZWxmCisgICAgIyBjcmVhdGVzIGEgdGVtcG9yYXJ5IFB5X1VOSUNPREUgcmVwcmVzZW50YXRpb24gaW4gYWRkaXRpb24gdG8gdGhlCisgICAgIyBvcmlnaW5hbCAoUHlfVUNTMikgb25lCisgICAgIyBUaGVyZSdzIGFsc28gc29tZSBvdmVyYWxsb2NhdGlvbiB3aGVuIHJlc2l6aW5nIHRoZSBhc2NpaSgpIHJlc3VsdAorICAgICMgdGhhdCBpc24ndCB0YWtlbiBpbnRvIGFjY291bnQgaGVyZS4KKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPXVjczJfY2hhcl9zaXplICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjczRfY2hhcl9zaXplICsgYXNjaWlfY2hhcl9zaXplICogNikKICAgICBkZWYgdGVzdF91bmljb2RlX3JlcHIoc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgVXNlIGFuIGFzc2lnbmVkLCBidXQgbm90IHByaW50YWJsZSBjb2RlIHBvaW50LgogICAgICAgICAjIEl0IGlzIGluIHRoZSByYW5nZSBvZiB0aGUgbG93IHN1cnJvZ2F0ZXMgXHVEQzAwLVx1REZGRi4KQEAgLTY4Niw5ICs3MjQsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgciA9IHMgPSBOb25lCiAKLSAgICAjIFRoZSBjaGFyYWN0ZXIgdGFrZXMgNCBieXRlcyBldmVuIGluIFVDUy0yIGJ1aWxkcyBiZWNhdXNlIGl0IHdpbGwKLSAgICAjIGJlIGRlY29tcG9zZWQgaW50byBzdXJyb2dhdGVzLgotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9NCArIGNoYXJhY3Rlcl9zaXplICogOSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyA1ICsgMSwgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMiArIGFzY2lpX2NoYXJfc2l6ZSAqIDEwKQogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVwcl93aWRlKHNlbGYsIHNpemUpOgogICAgICAgICBjaGFyID0gIlxVMDAwMURDQkEiCiAgICAgICAgIHMgPSBjaGFyICogc2l6ZQpAQCAtNzAxLDM5ICs3MzcsNzYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHIgPSBzID0gTm9uZQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgLy8gNSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICogKDYgKyAxKSkKLSAgICBkZWYgX3Rlc3RfdW5pY29kZV9yZXByX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICAjIFhYWCBub3Qgc3VyZSB3aGF0IHRoaXMgdGVzdCBpcyBhYm91dAotICAgICAgICBjaGFyID0gIlx1RENCQSIKLSAgICAgICAgcyA9IGNoYXIgKiBzaXplCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHIgPSByZXByKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocyA9PSBldmFsKHIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgciA9IHMgPSBOb25lCisgICAgIyBUaGUgb3JpZ2luYWwgdGVzdF90cmFuc2xhdGUgaXMgb3ZlcnJpZGVuIGhlcmUsIHNvIGFzIHRvIGdldCB0aGUKKyAgICAjIGNvcnJlY3Qgc2l6ZSBlc3RpbWF0ZTogc3RyLnRyYW5zbGF0ZSgpIHVzZXMgYW4gaW50ZXJtZWRpYXRlIFB5X1VDUzQKKyAgICAjIHJlcHJlc2VudGF0aW9uLgorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyICsgdWNzNF9jaGFyX3NpemUpCisgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYsIHNpemUpOgorICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQorICAgICAgICBTVUJTVFIgPSBfKCdhWnouei5BYXouJykKKyAgICAgICAgdHJhbnMgPSB7CisgICAgICAgICAgICBvcmQoXygnLicpKTogXygnLScpLAorICAgICAgICAgICAgb3JkKF8oJ2EnKSk6IF8oJyEnKSwKKyAgICAgICAgICAgIG9yZChfKCdaJykpOiBfKCckJyksCisgICAgICAgIH0KKyAgICAgICAgc3VibGVuID0gbGVuKFNVQlNUUikKKyAgICAgICAgcmVwZWF0cyA9IHNpemUgLy8gc3VibGVuICsgMgorICAgICAgICBzID0gU1VCU1RSICogcmVwZWF0cworICAgICAgICBzID0gcy50cmFuc2xhdGUodHJhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCByZXBlYXRzICogc3VibGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbOnN1Ymxlbl0sIFNVQlNUUi50cmFuc2xhdGUodHJhbnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLXN1YmxlbjpdLCBTVUJTVFIudHJhbnNsYXRlKHRyYW5zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJy4nKSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudChfKCchJykpLCByZXBlYXRzICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJ3onKSksIHJlcGVhdHMgKiAzKQogCiAKIGNsYXNzIEJ5dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgogCiAgICAgZGVmIGZyb21fbGF0aW4xKHNlbGYsIHMpOgotICAgICAgICByZXR1cm4gcy5lbmNvZGUoImxhdGluMSIpCisgICAgICAgIHJldHVybiBzLmVuY29kZSgibGF0aW4tMSIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSBzZWxmLmZyb21fbGF0aW4xKCcuJykgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZGVjb2RlKCd1dGYtOCcpKSwgc2l6ZSkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3N3YXBjYXNlKHNpemUpCisKIAogY2xhc3MgQnl0ZWFycmF5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgQmFzZVN0clRlc3QpOgogCiAgICAgZGVmIGZyb21fbGF0aW4xKHNlbGYsIHMpOgotICAgICAgICByZXR1cm4gYnl0ZWFycmF5KHMuZW5jb2RlKCJsYXRpbjEiKSkKKyAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShzLmVuY29kZSgibGF0aW4tMSIpKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGNoYXJhY3Rlcl9zaXplKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYsIHNpemUpOgogICAgICAgICBzID0gc2VsZi5mcm9tX2xhdGluMSgnLicpICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzLmRlY29kZSgndXRmLTgnKSksIHNpemUpCiAKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9jYXBpdGFsaXplKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfdGl0bGUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9zd2FwY2FzZShzaXplKQorCiAgICAgdGVzdF9oYXNoID0gTm9uZQogICAgIHRlc3Rfc3BsaXRfbGFyZ2UgPSBOb25lCiAKQEAgLTc1Miw3ICs4MjUsNyBAQAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHQxID0gKCcnLCkgKiBzaXplCiAgICAgICAgIHQyID0gKCcnLCkgKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodDEgPT0gdDIpCiAgICAgICAgIGRlbCB0MgogICAgICAgICB0MiA9ICgnJywpICogKHNpemUgKyAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQxID09IHQyKQpAQCAtNzgzLDkgKzg1Niw5IEBACiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHQgPSAoMSwgMiwgMywgNCwgNSkgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCBzaXplICogNSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbig1LCB0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCgxLCAyLCAzLCA0LCA1KSwgdCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigwLCB0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoNSBpbiB0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgxLCAyLCAzLCA0LCA1KSBpbiB0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gdCkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT04KQogICAgIGRlZiB0ZXN0X2hhc2goc2VsZiwgc2l6ZSk6CkBAIC04NjksMTEgKzk0MiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLTU6XSwgJzAsIDApJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKQEAgLTg4OCw3ICs5NjEsNyBAQAogICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGwxID0gWycnXSAqIHNpemUKICAgICAgICAgbDIgPSBbJyddICogc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwxLCBsMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGwxID09IGwyKQogICAgICAgICBkZWwgbDIKICAgICAgICAgbDIgPSBbJyddICogKHNpemUgKyAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGwxID09IGwyKQpAQCAtOTM0LDkgKzEwMDcsOSBAQAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYsIHNpemUpOgogICAgICAgICBsID0gWzEsIDIsIDMsIDQsIDVdICogc2l6ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgc2l6ZSAqIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oNSwgbCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihbMSwgMiwgMywgNCwgNV0sIGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMCwgbCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDUgaW4gbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShbMSwgMiwgMywgNCwgNV0gaW4gbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGwpCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9OCkKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYsIHNpemUpOgpAQCAtMTA0NCwxMSArMTExNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbLTU6XSwgJzAsIDBdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gMyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX3NtYWxsKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTggKyAzICogY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBhc2NpaV9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfcmVwcl9sYXJnZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfdGVzdF9yZXByKHNpemUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CmluZGV4IDFlOWU4ODguLjA0ZDhmOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQpAQCAtMjA4LDkgKzIwOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInt9KHshcn0pIHJhaXNlcyB7IXJ9Ii5mb3JtYXQoZnVuYywgZW1wdHksIGVycikpCiAKLSAgICBkZWYgdGVzdF91bmljb2RlX3N0cmluZ3Moc2VsZik6Ci0gICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBub3QgYWNjZXB0ZWQuCi0gICAgICAgIGZvciBmdW5jIGluIGFsbF9mdW5jdGlvbnM6CisgICAgZGVmIHRlc3RfdW5pY29kZV9iMmEoc2VsZik6CisgICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBub3QgYWNjZXB0ZWQgYnkgYjJhXyogZnVuY3Rpb25zLgorICAgICAgICBmb3IgZnVuYyBpbiBzZXQoYWxsX2Z1bmN0aW9ucykgLSBzZXQoYTJiX2Z1bmN0aW9ucykgfCB7J3JsZWRlY29kZV9ocXgnfToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIoYmluYXNjaWksIGZ1bmMpLCAidGVzdCIpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKQEAgLTIxOCw2ICsyMTgsMzQgQEAKICAgICAgICAgIyBjcmNfaHF4IG5lZWRzIDIgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmluYXNjaWkuY3JjX2hxeCwgInRlc3QiLCAwKQogCisgICAgZGVmIHRlc3RfdW5pY29kZV9hMmIoc2VsZik6CisgICAgICAgICMgVW5pY29kZSBzdHJpbmdzIGFyZSBhY2NlcHRlZCBieSBhMmJfKiBmdW5jdGlvbnMuCisgICAgICAgIE1BWF9BTEwgPSA0NQorICAgICAgICByYXcgPSBzZWxmLnJhd2RhdGFbOk1BWF9BTExdCisgICAgICAgIGZvciBmYSwgZmIgaW4gemlwKGEyYl9mdW5jdGlvbnMsIGIyYV9mdW5jdGlvbnMpOgorICAgICAgICAgICAgaWYgZmEgPT0gJ3JsZWRlY29kZV9ocXgnOgorICAgICAgICAgICAgICAgICMgVGFrZXMgbm9uLUFTQ0lJIGRhdGEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYTJiID0gZ2V0YXR0cihiaW5hc2NpaSwgZmEpCisgICAgICAgICAgICBiMmEgPSBnZXRhdHRyKGJpbmFzY2lpLCBmYikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhID0gYjJhKHNlbGYudHlwZTJ0ZXN0KHJhdykpCisgICAgICAgICAgICAgICAgYmluYXJ5X3JlcyA9IGEyYihhKQorICAgICAgICAgICAgICAgIGEgPSBhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgICAgIHJlcyA9IGEyYihhKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fS97fSBjb252ZXJzaW9uIHJhaXNlcyB7IXJ9Ii5mb3JtYXQoZmIsIGZhLCBlcnIpKQorICAgICAgICAgICAgaWYgZmIgPT0gJ2IyYV9ocXgnOgorICAgICAgICAgICAgICAgICMgYjJhX2hxeCByZXR1cm5zIGEgdHVwbGUKKyAgICAgICAgICAgICAgICByZXMsIF8gPSByZXMKKyAgICAgICAgICAgICAgICBiaW5hcnlfcmVzLCBfID0gYmluYXJ5X3JlcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHJhdywgInt9L3t9IGNvbnZlcnNpb246ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInshcn0gIT0geyFyfSIuZm9ybWF0KGZiLCBmYSwgcmVzLCByYXcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIGJpbmFyeV9yZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmVzLCBieXRlcykKKyAgICAgICAgICAgICMgbm9uLUFTQ0lJIHN0cmluZworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYTJiLCAiXHg4MCIpCisKIAogY2xhc3MgQXJyYXlCaW5BU0NJSVRlc3QoQmluQVNDSUlUZXN0KToKICAgICBkZWYgdHlwZTJ0ZXN0KHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5IGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CmluZGV4IGIyOTY4NzAuLjRiYWIyOGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKQEAgLTMzMCw2ICszMzAsMTYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbikgYXMgZV9sZW46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVfYm9vbCksIHN0cihlX2xlbikpCiAKKyAgICBkZWYgdGVzdF9yZWFsX2FuZF9pbWFnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUucmVhbCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShUcnVlLnJlYWwpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShUcnVlLmltYWcpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UucmVhbCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS5pbWFnLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmFsc2UucmVhbCksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZhbHNlLmltYWcpLCBpbnQpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChCb29sVGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmNkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTAsMCArMSw0MjczIEBACisjCisjIFRoZSBuZGFycmF5IG9iamVjdCBmcm9tIF90ZXN0YnVmZmVyLmMgaXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZgorIyBhIFBFUC0zMTE4IGJ1ZmZlciBwcm92aWRlci4gSXQgaXMgaW5kZXBlbmRlbnQgZnJvbSBOdW1QeSdzIG5kYXJyYXkKKyMgYW5kIHRoZSB0ZXN0cyBkb24ndCByZXF1aXJlIE51bVB5LgorIworIyBJZiBOdW1QeSBpcyBwcmVzZW50LCBzb21lIHRlc3RzIGNoZWNrIGJvdGggbmRhcnJheSBpbXBsZW1lbnRhdGlvbnMKKyMgYWdhaW5zdCBlYWNoIG90aGVyLgorIworIyBNb3N0IG5kYXJyYXkgdGVzdHMgYWxzbyBjaGVjayB0aGF0IG1lbW9yeXZpZXcobmRhcnJheSkgYmVoYXZlcyBpbgorIyB0aGUgc2FtZSB3YXkgYXMgdGhlIG9yaWdpbmFsLiBUaHVzLCBhIHN1YnN0YW50aWFsIHBhcnQgb2YgdGhlCisjIG1lbW9yeXZpZXcgdGVzdHMgaXMgbm93IGluIHRoaXMgbW9kdWxlLgorIworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucywgcHJvZHVjdAorZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlLCBjaG9pY2UKK2Zyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgoraW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgc3lzLCBhcnJheSwgaW8KK2Zyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAorZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCisKK3RyeToKKyAgICBmcm9tIF90ZXN0YnVmZmVyIGltcG9ydCAqCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbmRhcnJheSA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBzdHJ1Y3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBzdHJ1Y3QgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgY3R5cGVzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY3R5cGVzID0gTm9uZQorCit0cnk6CisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICBmcm9tIG51bXB5IGltcG9ydCBuZGFycmF5IGFzIG51bXB5X2FycmF5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbnVtcHlfYXJyYXkgPSBOb25lCisKKworU0hPUlRfVEVTVCA9IFRydWUKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgIFJhbmRvbSBsaXN0cyBieSBmb3JtYXQgc3BlY2lmaWVyCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBOYXRpdmUgZm9ybWF0IGNoYXJzIGFuZCB0aGVpciByYW5nZXMuCitOQVRJVkUgPSB7CisgICAgJz8nOjAsICdjJzowLCAnYic6MCwgJ0InOjAsCisgICAgJ2gnOjAsICdIJzowLCAnaSc6MCwgJ0knOjAsCisgICAgJ2wnOjAsICdMJzowLCAnbic6MCwgJ04nOjAsCisgICAgJ2YnOjAsICdkJzowLCAnUCc6MAorfQorCisjIE51bVB5IGRvZXMgbm90IGhhdmUgJ24nIG9yICdOJzoKK2lmIG51bXB5X2FycmF5OgorICAgIGRlbCBOQVRJVkVbJ24nXQorICAgIGRlbCBOQVRJVkVbJ04nXQorCitpZiBzdHJ1Y3Q6CisgICAgdHJ5OgorICAgICAgICAjIEFkZCAicVEiIGlmIHByZXNlbnQgaW4gbmF0aXZlIG1vZGUuCisgICAgICAgIHN0cnVjdC5wYWNrKCdRJywgMioqNjQtMSkKKyAgICAgICAgTkFUSVZFWydxJ10gPSAwCisgICAgICAgIE5BVElWRVsnUSddID0gMAorICAgIGV4Y2VwdCBzdHJ1Y3QuZXJyb3I6CisgICAgICAgIHBhc3MKKworIyBTdGFuZGFyZCBmb3JtYXQgY2hhcnMgYW5kIHRoZWlyIHJhbmdlcy4KK1NUQU5EQVJEID0geworICAgICc/JzooMCwgMiksICAgICAgICAgICAgJ2MnOigwLCAxPDw4KSwKKyAgICAnYic6KC0oMTw8NyksIDE8PDcpLCAgICdCJzooMCwgMTw8OCksCisgICAgJ2gnOigtKDE8PDE1KSwgMTw8MTUpLCAnSCc6KDAsIDE8PDE2KSwKKyAgICAnaSc6KC0oMTw8MzEpLCAxPDwzMSksICdJJzooMCwgMTw8MzIpLAorICAgICdsJzooLSgxPDwzMSksIDE8PDMxKSwgJ0wnOigwLCAxPDwzMiksCisgICAgJ3EnOigtKDE8PDYzKSwgMTw8NjMpLCAnUSc6KDAsIDE8PDY0KSwKKyAgICAnZic6KC0oMTw8NjMpLCAxPDw2MyksICdkJzooLSgxPDwxMDIzKSwgMTw8MTAyMykKK30KKworZGVmIG5hdGl2ZV90eXBlX3JhbmdlKGZtdCk6CisgICAgIiIiUmV0dXJuIHJhbmdlIG9mIGEgbmF0aXZlIHR5cGUuIiIiCisgICAgaWYgZm10ID09ICdjJzoKKyAgICAgICAgbGggPSAoMCwgMjU2KQorICAgIGVsaWYgZm10ID09ICc/JzoKKyAgICAgICAgbGggPSAoMCwgMikKKyAgICBlbGlmIGZtdCA9PSAnZic6CisgICAgICAgIGxoID0gKC0oMTw8NjMpLCAxPDw2MykKKyAgICBlbGlmIGZtdCA9PSAnZCc6CisgICAgICAgIGxoID0gKC0oMTw8MTAyMyksIDE8PDEwMjMpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGV4cCBpbiAoMTI4LCAxMjcsIDY0LCA2MywgMzIsIDMxLCAxNiwgMTUsIDgsIDcpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrKGZtdCwgKDE8PGV4cCktMSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGxoID0gKC0oMTw8ZXhwKSwgMTw8ZXhwKSBpZiBleHAgJiAxIGVsc2UgKDAsIDE8PGV4cCkKKyAgICByZXR1cm4gbGgKKworZm10ZGljdCA9IHsKKyAgICAnJzpOQVRJVkUsCisgICAgJ0AnOk5BVElWRSwKKyAgICAnPCc6U1RBTkRBUkQsCisgICAgJz4nOlNUQU5EQVJELAorICAgICc9JzpTVEFOREFSRCwKKyAgICAnISc6U1RBTkRBUkQKK30KKworaWYgc3RydWN0OgorICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICBmbXRkaWN0WydAJ11bZm10XSA9IG5hdGl2ZV90eXBlX3JhbmdlKGZtdCkKKworTUVNT1JZVklFVyA9IE5BVElWRS5jb3B5KCkKK0FSUkFZID0gTkFUSVZFLmNvcHkoKQorZm9yIGsgaW4gTkFUSVZFOgorICAgIGlmIG5vdCBrIGluICJiQmhIaUlsTGZkIjoKKyAgICAgICAgZGVsIEFSUkFZW2tdCisKK0JZVEVGTVQgPSBOQVRJVkUuY29weSgpCitmb3IgayBpbiBOQVRJVkU6CisgICAgaWYgbm90IGsgaW4gIkJiYyI6CisgICAgICAgIGRlbCBCWVRFRk1UW2tdCisKK2ZtdGRpY3RbJ20nXSAgPSBNRU1PUllWSUVXCitmbXRkaWN0WydAbSddID0gTUVNT1JZVklFVworZm10ZGljdFsnYSddICA9IEFSUkFZCitmbXRkaWN0WydiJ10gID0gQllURUZNVAorZm10ZGljdFsnQGInXSAgPSBCWVRFRk1UCisKKyMgQ2FwYWJpbGl0aWVzIG9mIHRoZSB0ZXN0IG9iamVjdHM6CitNT0RFID0gMAorTVVMVCA9IDEKK2NhcCA9IHsgICAgICAgICAjIGZvcm1hdCBjaGFycyAgICAgICAgICAgICAgICAgICMgbXVsdGlwbGllcgorICAnbmRhcnJheSc6ICAgIChbJycsICdAJywgJzwnLCAnPicsICc9JywgJyEnXSwgWycnLCAnMScsICcyJywgJzMnXSksCisgICdhcnJheSc6ICAgICAgKFsnYSddLCAgICAgICAgICAgICAgICAgICAgICAgICBbJyddKSwKKyAgJ251bXB5JzogICAgICAoWycnXSwgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJ10pLAorICAnbWVtb3J5dmlldyc6IChbJ0BtJywgJ20nXSwgICAgICAgICAgICAgICAgICAgWycnXSksCisgICdieXRlZm10JzogICAgKFsnQGInLCAnYiddLCAgICAgICAgICAgICAgICAgICBbJyddKSwKK30KKworZGVmIHJhbmRyYW5nZV9mbXQobW9kZSwgY2hhciwgb2JqKToKKyAgICAiIiJSZXR1cm4gcmFuZG9tIGl0ZW0gZm9yIGEgdHlwZSBzcGVjaWZpZWQgYnkgYSBtb2RlIGFuZCBhIHNpbmdsZQorICAgICAgIGZvcm1hdCBjaGFyYWN0ZXIuIiIiCisgICAgeCA9IHJhbmRyYW5nZSgqZm10ZGljdFttb2RlXVtjaGFyXSkKKyAgICBpZiBjaGFyID09ICdjJzoKKyAgICAgICAgeCA9IGJ5dGVzKGNocih4KSwgJ2xhdGluMScpCisgICAgaWYgY2hhciA9PSAnPyc6CisgICAgICAgIHggPSBib29sKHgpCisgICAgaWYgY2hhciA9PSAnZicgb3IgY2hhciA9PSAnZCc6CisgICAgICAgIHggPSBzdHJ1Y3QucGFjayhjaGFyLCB4KQorICAgICAgICB4ID0gc3RydWN0LnVucGFjayhjaGFyLCB4KVswXQorICAgIGlmIG9iaiA9PSAnbnVtcHknIGFuZCB4ID09IGInXHgwMCc6CisgICAgICAgICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkyNQorICAgICAgICB4ID0gYidceDAxJworICAgIHJldHVybiB4CisKK2RlZiBnZW5faXRlbShmbXQsIG9iaik6CisgICAgIiIiUmV0dXJuIHNpbmdsZSByYW5kb20gaXRlbS4iIiIKKyAgICBtb2RlLCBjaGFycyA9IGZtdC5zcGxpdCgnIycpCisgICAgeCA9IFtdCisgICAgZm9yIGMgaW4gY2hhcnM6CisgICAgICAgIHguYXBwZW5kKHJhbmRyYW5nZV9mbXQobW9kZSwgYywgb2JqKSkKKyAgICByZXR1cm4geFswXSBpZiBsZW4oeCkgPT0gMSBlbHNlIHR1cGxlKHgpCisKK2RlZiBnZW5faXRlbXMobiwgZm10LCBvYmopOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcmFuZG9tIGl0ZW1zIChvciBhIHNjYWxhcikuIiIiCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gZ2VuX2l0ZW0oZm10LCBvYmopCisgICAgbHN0ID0gWzBdICogbgorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICBsc3RbaV0gPSBnZW5faXRlbShmbXQsIG9iaikKKyAgICByZXR1cm4gbHN0CisKK2RlZiBzdHJ1Y3RfaXRlbXMobiwgb2JqKToKKyAgICBtb2RlID0gY2hvaWNlKGNhcFtvYmpdW01PREVdKQorICAgIHhmbXQgPSBtb2RlICsgJyMnCisgICAgZm10ID0gbW9kZS5zdHJpcCgnYW1iJykKKyAgICBubWVtYiA9IHJhbmRyYW5nZSgyLCAxMCkgIyBudW1iZXIgb2Ygc3RydWN0IG1lbWJlcnMKKyAgICBmb3IgXyBpbiByYW5nZShubWVtYik6CisgICAgICAgIGNoYXIgPSBjaG9pY2UodHVwbGUoZm10ZGljdFttb2RlXSkpCisgICAgICAgIG11bHRpcGxpZXIgPSBjaG9pY2UoY2FwW29ial1bTVVMVF0pCisgICAgICAgIHhmbXQgKz0gKGNoYXIgKiBpbnQobXVsdGlwbGllciBpZiBtdWx0aXBsaWVyIGVsc2UgMSkpCisgICAgICAgIGZtdCArPSAobXVsdGlwbGllciArIGNoYXIpCisgICAgaXRlbXMgPSBnZW5faXRlbXMobiwgeGZtdCwgb2JqKQorICAgIGl0ZW0gPSBnZW5faXRlbSh4Zm10LCBvYmopCisgICAgcmV0dXJuIGZtdCwgaXRlbXMsIGl0ZW0KKworZGVmIHJhbmRpdGVtcyhuLCBvYmo9J25kYXJyYXknLCBtb2RlPU5vbmUsIGNoYXI9Tm9uZSk6CisgICAgIiIiUmV0dXJuIHJhbmRvbSBmb3JtYXQsIGl0ZW1zLCBpdGVtLiIiIgorICAgIGlmIG1vZGUgaXMgTm9uZToKKyAgICAgICAgbW9kZSA9IGNob2ljZShjYXBbb2JqXVtNT0RFXSkKKyAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgIGNoYXIgPSBjaG9pY2UodHVwbGUoZm10ZGljdFttb2RlXSkpCisgICAgbXVsdGlwbGllciA9IGNob2ljZShjYXBbb2JqXVtNVUxUXSkKKyAgICBmbXQgPSBtb2RlICsgJyMnICsgY2hhciAqIGludChtdWx0aXBsaWVyIGlmIG11bHRpcGxpZXIgZWxzZSAxKQorICAgIGl0ZW1zID0gZ2VuX2l0ZW1zKG4sIGZtdCwgb2JqKQorICAgIGl0ZW0gPSBnZW5faXRlbShmbXQsIG9iaikKKyAgICBmbXQgPSBtb2RlLnN0cmlwKCdhbWInKSArIG11bHRpcGxpZXIgKyBjaGFyCisgICAgcmV0dXJuIGZtdCwgaXRlbXMsIGl0ZW0KKworZGVmIGl0ZXJfbW9kZShuLCBvYmo9J25kYXJyYXknKToKKyAgICAiIiJJdGVyYXRlIHRocm91Z2ggc3VwcG9ydGVkIG1vZGUvY2hhciBjb21iaW5hdGlvbnMuIiIiCisgICAgZm9yIG1vZGUgaW4gY2FwW29ial1bTU9ERV06CisgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbbW9kZV06CisgICAgICAgICAgICB5aWVsZCByYW5kaXRlbXMobiwgb2JqLCBtb2RlLCBjaGFyKQorCitkZWYgaXRlcl9mb3JtYXQobml0ZW1zLCB0ZXN0b2JqPSduZGFycmF5Jyk6CisgICAgIiIiWWllbGQgKGZvcm1hdCwgaXRlbXMsIGl0ZW0pIGZvciBhbGwgcG9zc2libGUgbW9kZXMgYW5kIGZvcm1hdAorICAgICAgIGNoYXJhY3RlcnMgcGx1cyBvbmUgcmFuZG9tIGNvbXBvdW5kIGZvcm1hdCBzdHJpbmcuIiIiCisgICAgZm9yIHQgaW4gaXRlcl9tb2RlKG5pdGVtcywgdGVzdG9iaik6CisgICAgICAgIHlpZWxkIHQKKyAgICBpZiB0ZXN0b2JqICE9ICduZGFycmF5JzoKKyAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgIHlpZWxkIHN0cnVjdF9pdGVtcyhuaXRlbXMsIHRlc3RvYmopCisKKworZGVmIGlzX2J5dGVfZm9ybWF0KGZtdCk6CisgICAgcmV0dXJuICdjJyBpbiBmbXQgb3IgJ2InIGluIGZtdCBvciAnQicgaW4gZm10CisKK2RlZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICIiImZvcm1hdCBzdWl0YWJsZSBmb3IgbWVtb3J5dmlldyIiIgorICAgIHggPSBsZW4oZm10KQorICAgIHJldHVybiAoKHggPT0gMSBvciAoeCA9PSAyIGFuZCBmbXRbMF0gPT0gJ0AnKSkgYW5kCisgICAgICAgICAgICBmbXRbeC0xXSBpbiBNRU1PUllWSUVXKQorCitOT05fQllURV9GT1JNQVQgPSBbYyBmb3IgYyBpbiBmbXRkaWN0WydAJ10gaWYgbm90IGlzX2J5dGVfZm9ybWF0KGMpXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICBNdWx0aS1kaW1lbnNpb25hbCB0b2xpc3QoKSwgc2xpY2luZyBhbmQgc2xpY2UgYXNzaWdubWVudHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgYXRvbXAobHN0KToKKyAgICAiIiJUdXBsZSBpdGVtcyAocmVwcmVzZW50aW5nIHN0cnVjdHMpIGFyZSByZWdhcmRlZCBhcyBhdG9tcy4iIiIKKyAgICByZXR1cm4gbm90IGlzaW5zdGFuY2UobHN0LCBsaXN0KQorCitkZWYgbGlzdHAobHN0KToKKyAgICByZXR1cm4gaXNpbnN0YW5jZShsc3QsIGxpc3QpCisKK2RlZiBwcm9kKGxzdCk6CisgICAgIiIiUHJvZHVjdCBvZiBsaXN0IGVsZW1lbnRzLiIiIgorICAgIGlmIGxlbihsc3QpID09IDA6CisgICAgICAgIHJldHVybiAwCisgICAgeCA9IGxzdFswXQorICAgIGZvciB2IGluIGxzdFsxOl06CisgICAgICAgIHggKj0gdgorICAgIHJldHVybiB4CisKK2RlZiBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCBsYXlvdXQpOgorICAgICIiIkNhbGN1bGF0ZSBzdHJpZGVzIG9mIGEgY29udGlndW91cyBhcnJheS4gTGF5b3V0IGlzICdDJyBvcgorICAgICAgICdGJyAoRm9ydHJhbikuIiIiCisgICAgaWYgbmRpbSA9PSAwOgorICAgICAgICByZXR1cm4gKCkKKyAgICBpZiBsYXlvdXQgPT0gJ0MnOgorICAgICAgICBzdHJpZGVzID0gbGlzdChzaGFwZVsxOl0pICsgW2l0ZW1zaXplXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuZGltLTIsIC0xLCAtMSk6CisgICAgICAgICAgICBzdHJpZGVzW2ldICo9IHN0cmlkZXNbaSsxXQorICAgIGVsc2U6CisgICAgICAgIHN0cmlkZXMgPSBbaXRlbXNpemVdICsgbGlzdChzaGFwZVs6LTFdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBuZGltKToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gKj0gc3RyaWRlc1tpLTFdCisgICAgcmV0dXJuIHN0cmlkZXMKKworZGVmIF9jYShpdGVtcywgcyk6CisgICAgIiIiQ29udmVydCBmbGF0IGl0ZW0gbGlzdCB0byB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAgIG11bHRpZGltZW5zaW9uYWwgQyBhcnJheSB3aXRoIHNoYXBlICdzJy4iIiIKKyAgICBpZiBhdG9tcChpdGVtcyk6CisgICAgICAgIHJldHVybiBpdGVtcworICAgIGlmIGxlbihzKSA9PSAwOgorICAgICAgICByZXR1cm4gaXRlbXNbMF0KKyAgICBsc3QgPSBbMF0gKiBzWzBdCisgICAgc3RyaWRlID0gbGVuKGl0ZW1zKSAvLyBzWzBdIGlmIHNbMF0gZWxzZSAwCisgICAgZm9yIGkgaW4gcmFuZ2Uoc1swXSk6CisgICAgICAgIHN0YXJ0ID0gaSpzdHJpZGUKKyAgICAgICAgbHN0W2ldID0gX2NhKGl0ZW1zW3N0YXJ0OnN0YXJ0K3N0cmlkZV0sIHNbMTpdKQorICAgIHJldHVybiBsc3QKKworZGVmIF9mYShpdGVtcywgcyk6CisgICAgIiIiQ29udmVydCBmbGF0IGl0ZW0gbGlzdCB0byB0aGUgbmVzdGVkIGxpc3QgcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAgIG11bHRpZGltZW5zaW9uYWwgRm9ydHJhbiBhcnJheSB3aXRoIHNoYXBlICdzJy4iIiIKKyAgICBpZiBhdG9tcChpdGVtcyk6CisgICAgICAgIHJldHVybiBpdGVtcworICAgIGlmIGxlbihzKSA9PSAwOgorICAgICAgICByZXR1cm4gaXRlbXNbMF0KKyAgICBsc3QgPSBbMF0gKiBzWzBdCisgICAgc3RyaWRlID0gc1swXQorICAgIGZvciBpIGluIHJhbmdlKHNbMF0pOgorICAgICAgICBsc3RbaV0gPSBfZmEoaXRlbXNbaTo6c3RyaWRlXSwgc1sxOl0pCisgICAgcmV0dXJuIGxzdAorCitkZWYgY2FycmF5KGl0ZW1zLCBzaGFwZSk6CisgICAgaWYgbGlzdHAoaXRlbXMpIGFuZCBub3QgMCBpbiBzaGFwZSBhbmQgcHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHJvZChzaGFwZSkgIT0gbGVuKGl0ZW1zKSIpCisgICAgcmV0dXJuIF9jYShpdGVtcywgc2hhcGUpCisKK2RlZiBmYXJyYXkoaXRlbXMsIHNoYXBlKToKKyAgICBpZiBsaXN0cChpdGVtcykgYW5kIG5vdCAwIGluIHNoYXBlIGFuZCBwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpIikKKyAgICByZXR1cm4gX2ZhKGl0ZW1zLCBzaGFwZSkKKworZGVmIGluZGljZXMoc2hhcGUpOgorICAgICIiIkdlbmVyYXRlIGFsbCBwb3NzaWJsZSB0dXBsZXMgb2YgaW5kaWNlcy4iIiIKKyAgICBpdGVyYWJsZXMgPSBbcmFuZ2UodikgZm9yIHYgaW4gc2hhcGVdCisgICAgcmV0dXJuIHByb2R1Y3QoKml0ZXJhYmxlcykKKworZGVmIGdldGluZGV4KG5kaW0sIGluZCwgc3RyaWRlcyk6CisgICAgIiIiQ29udmVydCBtdWx0aS1kaW1lbnNpb25hbCBpbmRleCB0byB0aGUgcG9zaXRpb24gaW4gdGhlIGZsYXQgbGlzdC4iIiIKKyAgICByZXQgPSAwCisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIHJldCArPSBzdHJpZGVzW2ldICogaW5kW2ldCisgICAgcmV0dXJuIHJldAorCitkZWYgdHJhbnNwb3NlKHNyYywgc2hhcGUpOgorICAgICIiIlRyYW5zcG9zZSBmbGF0IGl0ZW0gbGlzdCB0aGF0IGlzIHJlZ2FyZGVkIGFzIGEgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICBtYXRyaXggZGVmaW5lZCBieSBzaGFwZTogZGVzdC4uLltrXVtqXVtpXSA9IHNyY1tpXVtqXVtrXS4uLiAgIiIiCisgICAgaWYgbm90IHNoYXBlOgorICAgICAgICByZXR1cm4gc3JjCisgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICBzc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgMSwgJ0MnKQorICAgIGRzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlWzo6LTFdLCAxLCAnQycpCisgICAgZGVzdCA9IFswXSAqIGxlbihzcmMpCisgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgZnIgPSBnZXRpbmRleChuZGltLCBpbmQsIHNzdHJpZGVzKQorICAgICAgICB0byA9IGdldGluZGV4KG5kaW0sIGluZFs6Oi0xXSwgZHN0cmlkZXMpCisgICAgICAgIGRlc3RbdG9dID0gc3JjW2ZyXQorICAgIHJldHVybiBkZXN0CisKK2RlZiBfZmxhdHRlbihsc3QpOgorICAgICIiImZsYXR0ZW4gbGlzdCIiIgorICAgIGlmIGxzdCA9PSBbXToKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBbbHN0XQorICAgIHJldHVybiBfZmxhdHRlbihsc3RbMF0pICsgX2ZsYXR0ZW4obHN0WzE6XSkKKworZGVmIGZsYXR0ZW4obHN0KToKKyAgICAiIiJmbGF0dGVuIGxpc3Qgb3IgcmV0dXJuIHNjYWxhciIiIgorICAgIGlmIGF0b21wKGxzdCk6ICMgc2NhbGFyCisgICAgICAgIHJldHVybiBsc3QKKyAgICByZXR1cm4gX2ZsYXR0ZW4obHN0KQorCitkZWYgc2xpY2Vfc2hhcGUobHN0LCBzbGljZXMpOgorICAgICIiIkdldCB0aGUgc2hhcGUgb2YgbHN0IGFmdGVyIHNsaWNpbmc6IHNsaWNlcyBpcyBhIGxpc3Qgb2Ygc2xpY2UKKyAgICAgICBvYmplY3RzLiIiIgorICAgIGlmIGF0b21wKGxzdCk6CisgICAgICAgIHJldHVybiBbXQorICAgIHJldHVybiBbbGVuKGxzdFtzbGljZXNbMF1dKV0gKyBzbGljZV9zaGFwZShsc3RbMF0sIHNsaWNlc1sxOl0pCisKK2RlZiBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKToKKyAgICAiIiJNdWx0aS1kaW1lbnNpb25hbCBzbGljaW5nOiBzbGljZXMgaXMgYSBsaXN0IG9mIHNsaWNlIG9iamVjdHMuIiIiCisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIHJldHVybiBbbXVsdGlzbGljZShzdWJsc3QsIHNsaWNlc1sxOl0pIGZvciBzdWJsc3QgaW4gbHN0W3NsaWNlc1swXV1dCisKK2RlZiBtX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJNdWx0aS1kaW1lbnNpb25hbCBzbGljZSBhc3NpZ25tZW50OiBsbHN0IGFuZCBybHN0IGFyZSB0aGUgb3BlcmFuZHMsCisgICAgICAgbHNsaWNlcyBhbmQgcnNsaWNlcyBhcmUgbGlzdHMgb2Ygc2xpY2Ugb2JqZWN0cy4gbGxzdCBhbmQgcmxzdCBtdXN0CisgICAgICAgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUuCisKKyAgICAgICBGb3IgYSB0d28tZGltZW5zaW9uYWwgZXhhbXBsZSwgdGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgaW4gUHl0aG9uOgorCisgICAgICAgICBsbHN0WzA6MzoyLCAwOjM6Ml0gPSBybHN0WzE6MzoxLCAxOjM6MV0KKworICAgICAgIEluc3RlYWQgd2Ugd3JpdGU6CisKKyAgICAgICAgIGxzbGljZXMgPSBbc2xpY2UoMCwzLDIpLCBzbGljZSgwLDMsMildCisgICAgICAgICByc2xpY2VzID0gW3NsaWNlKDEsMywxKSwgc2xpY2UoMSwzLDEpXQorICAgICAgICAgbXVsdGlzbGljZV9hc3NpZ24obGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcykKKyAgICAiIiIKKyAgICBpZiBhdG9tcChybHN0KToKKyAgICAgICAgcmV0dXJuIHJsc3QKKyAgICBybHN0ID0gW21fYXNzaWduKGwsIHIsIGxzbGljZXNbMTpdLCByc2xpY2VzWzE6XSkKKyAgICAgICAgICAgIGZvciBsLCByIGluIHppcChsbHN0W2xzbGljZXNbMF1dLCBybHN0W3JzbGljZXNbMF1dKV0KKyAgICBsbHN0W2xzbGljZXNbMF1dID0gcmxzdAorICAgIHJldHVybiBsbHN0CisKK2RlZiBjbXBfc3RydWN0dXJlKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIkNvbXBhcmUgdGhlIHN0cnVjdHVyZSBvZiBsbHN0W2xzbGljZXNdIGFuZCBybHN0W3JzbGljZXNdLiIiIgorICAgIGxzaGFwZSA9IHNsaWNlX3NoYXBlKGxsc3QsIGxzbGljZXMpCisgICAgcnNoYXBlID0gc2xpY2Vfc2hhcGUocmxzdCwgcnNsaWNlcykKKyAgICBpZiAobGVuKGxzaGFwZSkgIT0gbGVuKHJzaGFwZSkpOgorICAgICAgICByZXR1cm4gLTEKKyAgICBmb3IgaSBpbiByYW5nZShsZW4obHNoYXBlKSk6CisgICAgICAgIGlmIGxzaGFwZVtpXSAhPSByc2hhcGVbaV06CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgbHNoYXBlW2ldID09IDA6CisgICAgICAgICAgICByZXR1cm4gMAorICAgIHJldHVybiAwCisKK2RlZiBtdWx0aXNsaWNlX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKToKKyAgICAiIiJSZXR1cm4gbGxzdCBhZnRlciBhc3NpZ25pbmc6IGxsc3RbbHNsaWNlc10gPSBybHN0W3JzbGljZXNdIiIiCisgICAgaWYgY21wX3N0cnVjdHVyZShsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKSA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImx2YWx1ZSBhbmQgcnZhbHVlIGhhdmUgZGlmZmVyZW50IHN0cnVjdHVyZXMiKQorICAgIHJldHVybiBtX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZG9tIHN0cnVjdHVyZXMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjCisjIFBFUC0zMTE4IGlzIHZlcnkgcGVybWlzc2l2ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGNvbnRlbnRzIG9mIGEKKyMgUHlfYnVmZmVyLiBJbiBwYXJ0aWN1bGFyOgorIworIyAgIC0gc2hhcGUgY2FuIGJlIHplcm8KKyMgICAtIHN0cmlkZXMgY2FuIGJlIGFueSBpbnRlZ2VyLCBpbmNsdWRpbmcgemVybworIyAgIC0gb2Zmc2V0IGNhbiBwb2ludCB0byBhbnkgbG9jYXRpb24gaW4gdGhlIHVuZGVybHlpbmcKKyMgICAgIG1lbW9yeSBibG9jaywgcHJvdmlkZWQgdGhhdCBpdCBpcyBhIG11bHRpcGxlIG9mCisjICAgICBpdGVtc2l6ZS4KKyMKKyMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gdGVzdCBhbmQgdmVyaWZ5IHJhbmRvbSBzdHJ1Y3R1cmVzCisjIGluIGZ1bGwgZ2VuZXJhbGl0eS4gQSBzdHJ1Y3R1cmUgaXMgdmFsaWQgaWZmIGl0IGZpdHMgaW4gdGhlCisjIHVuZGVybHlpbmcgbWVtb3J5IGJsb2NrLgorIworIyBUaGUgc3RydWN0dXJlICd0JyAoc2hvcnQgZm9yICd0dXBsZScpIGlzIGZ1bGx5IGRlZmluZWQgYnk6CisjCisjICAgdCA9IChtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KQorIworCitkZWYgdmVyaWZ5X3N0cnVjdHVyZShtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KToKKyAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcGFyYW1ldGVycyByZXByZXNlbnQgYSB2YWxpZCBhcnJheSB3aXRoaW4KKyAgICAgICB0aGUgYm91bmRzIG9mIHRoZSBhbGxvY2F0ZWQgbWVtb3J5OgorICAgICAgICAgICBjaGFyICptZW06IHN0YXJ0IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgYmxvY2sKKyAgICAgICAgICAgbWVtbGVuOiBsZW5ndGggb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICBvZmZzZXQ6IChjaGFyICopYnVmIC0gbWVtCisgICAgIiIiCisgICAgaWYgb2Zmc2V0ICUgaXRlbXNpemU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG9mZnNldCA8IDAgb3Igb2Zmc2V0K2l0ZW1zaXplID4gbWVtbGVuOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiBhbnkodiAlIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXMpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIG5kaW0gPD0gMDoKKyAgICAgICAgcmV0dXJuIG5kaW0gPT0gMCBhbmQgbm90IHNoYXBlIGFuZCBub3Qgc3RyaWRlcworICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBpbWluID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdIDw9IDApCisgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA+IDApCisKKyAgICByZXR1cm4gMCA8PSBvZmZzZXQraW1pbiBhbmQgb2Zmc2V0K2ltYXgraXRlbXNpemUgPD0gbWVtbGVuCisKK2RlZiBnZXRfaXRlbShsc3QsIGluZGljZXMpOgorICAgIGZvciBpIGluIGluZGljZXM6CisgICAgICAgIGxzdCA9IGxzdFtpXQorICAgIHJldHVybiBsc3QKKworZGVmIG1lbW9yeV9pbmRleChpbmRpY2VzLCB0KToKKyAgICAiIiJMb2NhdGlvbiBvZiBhbiBpdGVtIGluIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4iIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHAgPSBvZmZzZXQKKyAgICBmb3IgaSBpbiByYW5nZShuZGltKToKKyAgICAgICAgcCArPSBzdHJpZGVzW2ldKmluZGljZXNbaV0KKyAgICByZXR1cm4gcAorCitkZWYgaXNfb3ZlcmxhcHBpbmcodCk6CisgICAgIiIiVGhlIHN0cnVjdHVyZSAndCcgaXMgb3ZlcmxhcHBpbmcgaWYgYXQgbGVhc3Qgb25lIG1lbW9yeSBsb2NhdGlvbgorICAgICAgIGlzIHZpc2l0ZWQgdHdpY2Ugd2hpbGUgaXRlcmF0aW5nIHRocm91Z2ggYWxsIHBvc3NpYmxlIHR1cGxlcyBvZgorICAgICAgIGluZGljZXMuIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICB2aXNpdGVkID0gMTw8bWVtbGVuCisgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgaSA9IG1lbW9yeV9pbmRleChpbmQsIHQpCisgICAgICAgIGJpdCA9IDE8PGkKKyAgICAgICAgaWYgdmlzaXRlZCAmIGJpdDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHZpc2l0ZWQgfD0gYml0CisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgdmFsaWQsIG1heGRpbT01LCBtYXhzaGFwZT0xNiwgc2hhcGU9KCkpOgorICAgICIiIlJldHVybiByYW5kb20gc3RydWN0dXJlOgorICAgICAgICAgICAobWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCkKKyAgICAgICBJZiAndmFsaWQnIGlzIHRydWUsIHRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgaXMgdmFsaWQsIG90aGVyd2lzZSBpbnZhbGlkLgorICAgICAgIElmICdzaGFwZScgaXMgZ2l2ZW4sIHVzZSB0aGF0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSByYW5kb20gc2hhcGUuCisgICAgIiIiCisgICAgaWYgbm90IHNoYXBlOgorICAgICAgICBuZGltID0gcmFuZHJhbmdlKG1heGRpbSsxKQorICAgICAgICBpZiAobmRpbSA9PSAwKToKKyAgICAgICAgICAgIGlmIHZhbGlkOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVtc2l6ZSwgaXRlbXNpemUsIG5kaW0sICgpLCAoKSwgMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuaXRlbXMgPSByYW5kcmFuZ2UoMSwgMTYrMSkKKyAgICAgICAgICAgICAgICBtZW1sZW4gPSBuaXRlbXMgKiBpdGVtc2l6ZQorICAgICAgICAgICAgICAgIG9mZnNldCA9IC1pdGVtc2l6ZSBpZiByYW5kcmFuZ2UoMikgPT0gMCBlbHNlIG1lbWxlbgorICAgICAgICAgICAgICAgIHJldHVybiBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCAoKSwgKCksIG9mZnNldAorCisgICAgICAgIG1pbnNoYXBlID0gMgorICAgICAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICAgICAgaWYgbiA+PSA5NSBhbmQgdmFsaWQ6CisgICAgICAgICAgICBtaW5zaGFwZSA9IDAKKyAgICAgICAgZWxpZiBuID49IDkwOgorICAgICAgICAgICAgbWluc2hhcGUgPSAxCisgICAgICAgIHNoYXBlID0gWzBdICogbmRpbQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKG5kaW0pOgorICAgICAgICAgICAgc2hhcGVbaV0gPSByYW5kcmFuZ2UobWluc2hhcGUsIG1heHNoYXBlKzEpCisgICAgZWxzZToKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKworICAgIG1heHN0cmlkZSA9IDUKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICB6ZXJvX3N0cmlkZSA9IFRydWUgaWYgbiA+PSA5NSBhbmQgbiAmIDEgZWxzZSBGYWxzZQorCisgICAgc3RyaWRlcyA9IFswXSAqIG5kaW0KKyAgICBzdHJpZGVzW25kaW0tMV0gPSBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgtbWF4c3RyaWRlLCBtYXhzdHJpZGUrMSkKKyAgICBpZiBub3QgemVyb19zdHJpZGUgYW5kIHN0cmlkZXNbbmRpbS0xXSA9PSAwOgorICAgICAgICBzdHJpZGVzW25kaW0tMV0gPSBpdGVtc2l6ZQorCisgICAgZm9yIGkgaW4gcmFuZ2UobmRpbS0yLCAtMSwgLTEpOgorICAgICAgICBtYXhzdHJpZGUgKj0gc2hhcGVbaSsxXSBpZiBzaGFwZVtpKzFdIGVsc2UgMQorICAgICAgICBpZiB6ZXJvX3N0cmlkZToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gPSBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgtbWF4c3RyaWRlLCBtYXhzdHJpZGUrMSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gPSAoKDEsLTEpW3JhbmRyYW5nZSgyKV0gKgorICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZSAqIHJhbmRyYW5nZSgxLCBtYXhzdHJpZGUrMSkpCisKKyAgICBpbWluID0gaW1heCA9IDAKKyAgICBpZiBub3QgMCBpbiBzaGFwZToKKyAgICAgICAgaW1pbiA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICAgICAgaW1heCA9IHN1bShzdHJpZGVzW2pdKihzaGFwZVtqXS0xKSBmb3IgaiBpbiByYW5nZShuZGltKQorICAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPiAwKQorCisgICAgbml0ZW1zID0gaW1heCAtIGltaW4KKyAgICBpZiB2YWxpZDoKKyAgICAgICAgb2Zmc2V0ID0gLWltaW4gKiBpdGVtc2l6ZQorICAgICAgICBtZW1sZW4gPSBvZmZzZXQgKyAoaW1heCsxKSAqIGl0ZW1zaXplCisgICAgZWxzZToKKyAgICAgICAgbWVtbGVuID0gKC1pbWluICsgaW1heCkgKiBpdGVtc2l6ZQorICAgICAgICBvZmZzZXQgPSAtaW1pbi1pdGVtc2l6ZSBpZiByYW5kcmFuZ2UoMikgPT0gMCBlbHNlIG1lbWxlbgorICAgIHJldHVybiBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0CisKK2RlZiByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbGlzdGxlbik6CisgICAgIiIiQ3JlYXRlIGEgcmFuZG9tIHNsaWNlIG9mIGxlbiBzbGljZWxlbiB0aGF0IGZpdHMgaW50byBsaXN0bGVuLiIiIgorICAgIG1heHN0YXJ0ID0gbGlzdGxlbiAtIHNsaWNlbGVuCisgICAgc3RhcnQgPSByYW5kcmFuZ2UobWF4c3RhcnQrMSkKKyAgICBtYXhzdGVwID0gKGxpc3RsZW4gLSBzdGFydCkgLy8gc2xpY2VsZW4gaWYgc2xpY2VsZW4gZWxzZSAxCisgICAgc3RlcCA9IHJhbmRyYW5nZSgxLCBtYXhzdGVwKzEpCisgICAgc3RvcCA9IHN0YXJ0ICsgc2xpY2VsZW4gKiBzdGVwCisgICAgcyA9IHNsaWNlKHN0YXJ0LCBzdG9wLCBzdGVwKQorICAgIF8sIF8sIF8sIGNvbnRyb2wgPSBzbGljZV9pbmRpY2VzKHMsIGxpc3RsZW4pCisgICAgaWYgY29udHJvbCAhPSBzbGljZWxlbjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgcmV0dXJuIHMKKworZGVmIHJhbmRzbGljZV9mcm9tX3NoYXBlKG5kaW0sIHNoYXBlKToKKyAgICAiIiJDcmVhdGUgdHdvIHNldHMgb2Ygc2xpY2VzIGZvciBhbiBhcnJheSB4IHdpdGggc2hhcGUgJ3NoYXBlJworICAgICAgIHN1Y2ggdGhhdCBzaGFwZW9mKHhbbHNsaWNlc10pID09IHNoYXBlb2YoeFtyc2xpY2VzXSkuIiIiCisgICAgbHNsaWNlcyA9IFswXSAqIG5kaW0KKyAgICByc2xpY2VzID0gWzBdICogbmRpbQorICAgIGZvciBuIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBsID0gc2hhcGVbbl0KKyAgICAgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UoMSwgbCsxKSBpZiBsID4gMCBlbHNlIDAKKyAgICAgICAgbHNsaWNlc1tuXSA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBsKQorICAgICAgICByc2xpY2VzW25dID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGwpCisgICAgcmV0dXJuIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKQorCitkZWYgcmFuZF9hbGlnbmVkX3NsaWNlcyhtYXhkaW09NSwgbWF4c2hhcGU9MTYpOgorICAgICIiIkNyZWF0ZSAobHNoYXBlLCByc2hhcGUsIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKSkgc3VjaCB0aGF0CisgICAgICAgc2hhcGVvZih4W2xzbGljZXNdKSA9PSBzaGFwZW9mKHlbcnNsaWNlc10pLCB3aGVyZSB4IGlzIGFuIGFycmF5CisgICAgICAgd2l0aCBzaGFwZSAnbHNoYXBlJyBhbmQgeSBpcyBhbiBhcnJheSB3aXRoIHNoYXBlICdyc2hhcGUnLiIiIgorICAgIG5kaW0gPSByYW5kcmFuZ2UoMSwgbWF4ZGltKzEpCisgICAgbWluc2hhcGUgPSAyCisgICAgbiA9IHJhbmRyYW5nZSgxMDApCisgICAgaWYgbiA+PSA5NToKKyAgICAgICAgbWluc2hhcGUgPSAwCisgICAgZWxpZiBuID49IDkwOgorICAgICAgICBtaW5zaGFwZSA9IDEKKyAgICBhbGxfcmFuZG9tID0gVHJ1ZSBpZiByYW5kcmFuZ2UoMTAwKSA+PSA4MCBlbHNlIEZhbHNlCisgICAgbHNoYXBlID0gWzBdKm5kaW07IHJzaGFwZSA9IFswXSpuZGltCisgICAgbHNsaWNlcyA9IFswXSpuZGltOyByc2xpY2VzID0gWzBdKm5kaW0KKworICAgIGZvciBuIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBzbWFsbCA9IHJhbmRyYW5nZShtaW5zaGFwZSwgbWF4c2hhcGUrMSkKKyAgICAgICAgYmlnID0gcmFuZHJhbmdlKG1pbnNoYXBlLCBtYXhzaGFwZSsxKQorICAgICAgICBpZiBiaWcgPCBzbWFsbDoKKyAgICAgICAgICAgIGJpZywgc21hbGwgPSBzbWFsbCwgYmlnCisKKyAgICAgICAgIyBDcmVhdGUgYSBzbGljZSB0aGF0IGZpdHMgdGhlIHNtYWxsZXIgdmFsdWUuCisgICAgICAgIGlmIGFsbF9yYW5kb206CisgICAgICAgICAgICBzdGFydCA9IHJhbmRyYW5nZSgtc21hbGwsIHNtYWxsKzEpCisgICAgICAgICAgICBzdG9wID0gcmFuZHJhbmdlKC1zbWFsbCwgc21hbGwrMSkKKyAgICAgICAgICAgIHN0ZXAgPSAoMSwtMSlbcmFuZHJhbmdlKDIpXSAqIHJhbmRyYW5nZSgxLCBzbWFsbCsyKQorICAgICAgICAgICAgc19zbWFsbCA9IHNsaWNlKHN0YXJ0LCBzdG9wLCBzdGVwKQorICAgICAgICAgICAgXywgXywgXywgc2xpY2VsZW4gPSBzbGljZV9pbmRpY2VzKHNfc21hbGwsIHNtYWxsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UoMSwgc21hbGwrMSkgaWYgc21hbGwgPiAwIGVsc2UgMAorICAgICAgICAgICAgc19zbWFsbCA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBzbWFsbCkKKworICAgICAgICAjIENyZWF0ZSBhIHNsaWNlIG9mIHRoZSBzYW1lIGxlbmd0aCBmb3IgdGhlIGJpZ2dlciB2YWx1ZS4KKyAgICAgICAgc19iaWcgPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgYmlnKQorICAgICAgICBpZiByYW5kcmFuZ2UoMikgPT0gMDoKKyAgICAgICAgICAgIHJzaGFwZVtuXSwgbHNoYXBlW25dID0gYmlnLCBzbWFsbAorICAgICAgICAgICAgcnNsaWNlc1tuXSwgbHNsaWNlc1tuXSA9IHNfYmlnLCBzX3NtYWxsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByc2hhcGVbbl0sIGxzaGFwZVtuXSA9IHNtYWxsLCBiaWcKKyAgICAgICAgICAgIHJzbGljZXNbbl0sIGxzbGljZXNbbl0gPSBzX3NtYWxsLCBzX2JpZworCisgICAgcmV0dXJuIGxzaGFwZSwgcnNoYXBlLCB0dXBsZShsc2xpY2VzKSwgdHVwbGUocnNsaWNlcykKKworZGVmIHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHQpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcmFuZG9tIGl0ZW1zIGZvciBzdHJ1Y3R1cmUgJ3QnIHdpdGggZm9ybWF0CisgICAgICAgJ2ZtdGNoYXInLiIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIF8sIF8sIF8sIF8gPSB0CisgICAgcmV0dXJuIGdlbl9pdGVtcyhtZW1sZW4vL2l0ZW1zaXplLCAnIycrZm10LCAnbnVtcHknKQorCitkZWYgbmRhcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0LCBmbGFncz0wKToKKyAgICAiIiJSZXR1cm4gbmRhcnJheSBmcm9tIHRoZSB0dXBsZSByZXR1cm5lZCBieSByYW5kX3N0cnVjdHVyZSgpIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICByZXR1cm4gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICBvZmZzZXQ9b2Zmc2V0LCBmbGFncz1ORF9XUklUQUJMRXxmbGFncykKKworZGVmIG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpOgorICAgICIiIlJldHVybiBudW1weV9hcnJheSBmcm9tIHRoZSB0dXBsZSByZXR1cm5lZCBieSByYW5kX3N0cnVjdHVyZSgpIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgbmRpbSwgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCA9IHQKKyAgICBidWYgPSBieXRlYXJyYXkobWVtbGVuKQorICAgIGZvciBqLCB2IGluIGVudW1lcmF0ZShpdGVtcyk6CisgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBidWYsIGoqaXRlbXNpemUsIHYpCisgICAgcmV0dXJuIG51bXB5X2FycmF5KGJ1ZmZlcj1idWYsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPWZtdCwgb2Zmc2V0PW9mZnNldCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcgY2FzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZWYgY2FzdF9pdGVtcyhleHBvcnRlciwgZm10LCBpdGVtc2l6ZSwgc2hhcGU9Tm9uZSk6CisgICAgIiIiSW50ZXJwcmV0IHRoZSByYXcgbWVtb3J5IG9mICdleHBvcnRlcicgYXMgYSBsaXN0IG9mIGl0ZW1zIHdpdGgKKyAgICAgICBzaXplICdpdGVtc2l6ZScuIElmIHNoYXBlPU5vbmUsIHRoZSBuZXcgc3RydWN0dXJlIGlzIGFzc3VtZWQgdG8KKyAgICAgICBiZSAxLUQgd2l0aCBuICogaXRlbXNpemUgPSBieXRlbGVuLiBJZiBzaGFwZSBpcyBnaXZlbiwgdGhlIHVzdWFsCisgICAgICAgY29uc3RyYWludCBmb3IgY29udGlndW91cyBhcnJheXMgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSA9IGJ5dGVsZW4KKyAgICAgICBhcHBsaWVzLiBPbiBzdWNjZXNzLCByZXR1cm4gKGl0ZW1zLCBzaGFwZSkuIElmIHRoZSBjb25zdHJhaW50cworICAgICAgIGNhbm5vdCBiZSBtZXQsIHJldHVybiAoTm9uZSwgTm9uZSkuIElmIGEgY2h1bmsgb2YgYnl0ZXMgaXMgaW50ZXJwcmV0ZWQKKyAgICAgICBhcyBOYU4gYXMgYSByZXN1bHQgb2YgZmxvYXQgY29udmVyc2lvbiwgcmV0dXJuICgnbmFuJywgTm9uZSkuIiIiCisgICAgYnl0ZWxlbiA9IGV4cG9ydGVyLm5ieXRlcworICAgIGlmIHNoYXBlOgorICAgICAgICBpZiBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplICE9IGJ5dGVsZW46CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgc2hhcGUKKyAgICBlbGlmIHNoYXBlID09IFtdOgorICAgICAgICBpZiBleHBvcnRlci5uZGltID09IDAgb3IgaXRlbXNpemUgIT0gYnl0ZWxlbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorICAgIGVsc2U6CisgICAgICAgIG4sIHIgPSBkaXZtb2QoYnl0ZWxlbiwgaXRlbXNpemUpCisgICAgICAgIHNoYXBlID0gW25dCisgICAgICAgIGlmIHIgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorCisgICAgbWVtID0gZXhwb3J0ZXIudG9ieXRlcygpCisgICAgYnl0ZWl0ZW1zID0gW21lbVtpOmkraXRlbXNpemVdIGZvciBpIGluIHJhbmdlKDAsIGxlbihtZW0pLCBpdGVtc2l6ZSldCisKKyAgICBpdGVtcyA9IFtdCisgICAgZm9yIHYgaW4gYnl0ZWl0ZW1zOgorICAgICAgICBpdGVtID0gc3RydWN0LnVucGFjayhmbXQsIHYpWzBdCisgICAgICAgIGlmIGl0ZW0gIT0gaXRlbToKKyAgICAgICAgICAgIHJldHVybiAnbmFuJywgc2hhcGUKKyAgICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0pCisKKyAgICByZXR1cm4gKGl0ZW1zLCBzaGFwZSkgaWYgc2hhcGUgIT0gW10gZWxzZSAoaXRlbXNbMF0sIHNoYXBlKQorCitkZWYgZ2VuY2FzdHNoYXBlcygpOgorICAgICIiIkdlbmVyYXRlIHNoYXBlcyB0byB0ZXN0IGNhc3RpbmcuIiIiCisgICAgZm9yIG4gaW4gcmFuZ2UoMzIpOgorICAgICAgICB5aWVsZCBbbl0KKyAgICBuZGltID0gcmFuZHJhbmdlKDQsIDYpCisgICAgbWluc2hhcGUgPSAxIGlmIHJhbmRyYW5nZSgxMDApID4gODAgZWxzZSAyCisgICAgeWllbGQgW3JhbmRyYW5nZShtaW5zaGFwZSwgNSkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisgICAgbmRpbSA9IHJhbmRyYW5nZSgyLCA0KQorICAgIG1pbnNoYXBlID0gMSBpZiByYW5kcmFuZ2UoMTAwKSA+IDgwIGVsc2UgMgorICAgIHlpZWxkIFtyYW5kcmFuZ2UobWluc2hhcGUsIDUpIGZvciBfIGluIHJhbmdlKG5kaW0pXQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdHVhbCB0ZXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBnZW5zbGljZXMobik6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHNsaWNlcyBmb3IgYSBzaW5nbGUgZGltZW5zaW9uLiIiIgorICAgIHJldHVybiBwcm9kdWN0KHJhbmdlKC1uLCBuKzEpLCByYW5nZSgtbiwgbisxKSwgcmFuZ2UoLW4sIG4rMSkpCisKK2RlZiBnZW5zbGljZXNfbmRpbShuZGltLCBzaGFwZSk6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHNsaWNlIHR1cGxlcyBmb3IgJ3NoYXBlJy4iIiIKKyAgICBpdGVyYWJsZXMgPSBbZ2Vuc2xpY2VzKHNoYXBlW25dKSBmb3IgbiBpbiByYW5nZShuZGltKV0KKyAgICByZXR1cm4gcHJvZHVjdCgqaXRlcmFibGVzKQorCitkZWYgcnNsaWNlKG4sIGFsbG93X2VtcHR5PUZhbHNlKToKKyAgICAiIiJHZW5lcmF0ZSByYW5kb20gc2xpY2UgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbiBvZiBsZW5ndGggbi4KKyAgICAgICBJZiB6ZXJvPVRydWUsIHRoZSBzbGljZXMgbWF5IGJlIGVtcHR5LCBvdGhlcndpc2UgdGhleSB3aWxsCisgICAgICAgYmUgbm9uLWVtcHR5LiIiIgorICAgIG1pbmxlbiA9IDAgaWYgYWxsb3dfZW1wdHkgb3IgbiA9PSAwIGVsc2UgMQorICAgIHNsaWNlbGVuID0gcmFuZHJhbmdlKG1pbmxlbiwgbisxKQorICAgIHJldHVybiByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbikKKworZGVmIHJzbGljZXMobiwgYWxsb3dfZW1wdHk9RmFsc2UpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZXMgZm9yIGEgc2luZ2xlIGRpbWVuc2lvbi4iIiIKKyAgICBmb3IgXyBpbiByYW5nZSg1KToKKyAgICAgICAgeWllbGQgcnNsaWNlKG4sIGFsbG93X2VtcHR5KQorCitkZWYgcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlLCBpdGVyYXRpb25zPTUpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZSB0dXBsZXMgZm9yICdzaGFwZScuIiIiCisgICAgIyBub24tZW1wdHkgc2xpY2VzCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRlcmF0aW9ucyk6CisgICAgICAgIHlpZWxkIHR1cGxlKHJzbGljZShzaGFwZVtuXSkgZm9yIG4gaW4gcmFuZ2UobmRpbSkpCisgICAgIyBwb3NzaWJseSBlbXB0eSBzbGljZXMKKyAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKKyAgICAgICAgeWllbGQgdHVwbGUocnNsaWNlKHNoYXBlW25dLCBhbGxvd19lbXB0eT1UcnVlKSBmb3IgbiBpbiByYW5nZShuZGltKSkKKyAgICAjIGludmFsaWQgc2xpY2VzCisgICAgeWllbGQgdHVwbGUoc2xpY2UoMCwxLDApIGZvciBfIGluIHJhbmdlKG5kaW0pKQorCitkZWYgcnBlcm11dGF0aW9uKGl0ZXJhYmxlLCByPU5vbmUpOgorICAgIHBvb2wgPSB0dXBsZShpdGVyYWJsZSkKKyAgICByID0gbGVuKHBvb2wpIGlmIHIgaXMgTm9uZSBlbHNlIHIKKyAgICB5aWVsZCB0dXBsZShzYW1wbGUocG9vbCwgcikpCisKK2RlZiBuZGFycmF5X3ByaW50KG5kKToKKyAgICAiIiJQcmludCBuZGFycmF5IGZvciBkZWJ1Z2dpbmcuIiIiCisgICAgdHJ5OgorICAgICAgICB4ID0gbmQudG9saXN0KCkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgIHggPSBuZC50b2J5dGVzKCkKKyAgICBpZiBpc2luc3RhbmNlKG5kLCBuZGFycmF5KToKKyAgICAgICAgb2Zmc2V0ID0gbmQub2Zmc2V0CisgICAgICAgIGZsYWdzID0gbmQuZmxhZ3MKKyAgICBlbHNlOgorICAgICAgICBvZmZzZXQgPSAndW5rbm93bicKKyAgICAgICAgZmxhZ3MgPSAndW5rbm93bicKKyAgICBwcmludCgibmRhcnJheSglcywgc2hhcGU9JXMsIHN0cmlkZXM9JXMsIHN1Ym9mZnNldHM9JXMsIG9mZnNldD0lcywgIgorICAgICAgICAgICJmb3JtYXQ9JyVzJywgaXRlbXNpemU9JXMsIGZsYWdzPSVzKSIgJQorICAgICAgICAgICh4LCBuZC5zaGFwZSwgbmQuc3RyaWRlcywgbmQuc3Vib2Zmc2V0cywgb2Zmc2V0LAorICAgICAgICAgICBuZC5mb3JtYXQsIG5kLml0ZW1zaXplLCBmbGFncykpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKworSVRFUkFUSU9OUyA9IDEwMAorTUFYRElNID0gNQorTUFYU0hBUEUgPSAxMAorCitpZiBTSE9SVF9URVNUOgorICAgIElURVJBVElPTlMgPSAxMAorICAgIE1BWERJTSA9IDMKKyAgICBNQVhTSEFQRSA9IDQKKyAgICBnZW5zbGljZXMgPSByc2xpY2VzCisgICAgZ2Vuc2xpY2VzX25kaW0gPSByc2xpY2VzX25kaW0KKyAgICBwZXJtdXRhdGlvbnMgPSBycGVybXV0YXRpb24KKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdHJ1Y3QsICdzdHJ1Y3QgbW9kdWxlIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKG5kYXJyYXksICduZGFycmF5IG9iamVjdCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKK2NsYXNzIFRlc3RCdWZmZXJQcm90b2NvbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICMgVGhlIHN1Ym9mZnNldHMgdGVzdHMgbmVlZCBzaXplb2Yodm9pZCAqKS4KKyAgICAgICAgc2VsZi5zaXplb2Zfdm9pZF9wID0gZ2V0X3NpemVvZl92b2lkX3AoKQorCisgICAgZGVmIHZlcmlmeShzZWxmLCByZXN1bHQsIG9iaj0tMSwKKyAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXsxfSwgZm10PS0xLCByZWFkb25seT17MX0sCisgICAgICAgICAgICAgICAgICAgICBuZGltPXsxfSwgc2hhcGU9LTEsIHN0cmlkZXM9LTEsCisgICAgICAgICAgICAgICAgICAgICBsc3Q9LTEsIHNsaWNlZD1GYWxzZSwgY2FzdD1GYWxzZSk6CisgICAgICAgICMgVmVyaWZ5IGJ1ZmZlciBjb250ZW50cyBhZ2FpbnN0IGV4cGVjdGVkIHZhbHVlcy4gRGVmYXVsdCB2YWx1ZXMKKyAgICAgICAgIyBhcmUgZGVsaWJlcmF0ZWx5IGluaXRpYWxpemVkIHRvIGludmFsaWQgdHlwZXMuCisgICAgICAgIGlmIHNoYXBlOgorICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gcHJvZChzaGFwZSkqaXRlbXNpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBmbXQ6ICMgYXJyYXkgaGFzIGJlZW4gaW1wbGljaXRseSBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbGVuID0gbGVuKGxzdCkKKyAgICAgICAgICAgIGVsc2U6ICMgbmRpbSA9IDAKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBpdGVtc2l6ZQorCisgICAgICAgICMgUmVjb25zdHJ1Y3Qgc3Vib2Zmc2V0cyBmcm9tIHN0cmlkZXMuIFN1cHBvcnQgZm9yIHNsaWNpbmcKKyAgICAgICAgIyBjb3VsZCBiZSBhZGRlZCwgYnV0IGlzIGN1cnJlbnRseSBvbmx5IG5lZWRlZCBmb3IgdGVzdF9nZXRidWYoKS4KKyAgICAgICAgc3Vib2Zmc2V0cyA9ICgpCisgICAgICAgIGlmIHJlc3VsdC5zdWJvZmZzZXRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKG5kaW0sIDApCisKKyAgICAgICAgICAgIHN1Ym9mZnNldDAgPSAwCisgICAgICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCBuZGltKToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZVtuXSA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbbl0gPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgc3Vib2Zmc2V0MCArPSAtc3RyaWRlc1tuXSAqIChzaGFwZVtuXS0xKQorCisgICAgICAgICAgICBzdWJvZmZzZXRzID0gW3N1Ym9mZnNldDBdICsgWy0xIGZvciB2IGluIHJhbmdlKG5kaW0tMSldCisKKyAgICAgICAgICAgICMgTm90IGNvcnJlY3QgaWYgc2xpY2luZyBoYXMgb2NjdXJyZWQgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4KKyAgICAgICAgICAgIHN0cmlkZTAgPSBzZWxmLnNpemVvZl92b2lkX3AKKyAgICAgICAgICAgIGlmIHN0cmlkZXNbMF0gPCAwOgorICAgICAgICAgICAgICAgIHN0cmlkZTAgPSAtc3RyaWRlMAorICAgICAgICAgICAgc3RyaWRlcyA9IFtzdHJpZGUwXSArIGxpc3Qoc3RyaWRlc1sxOl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQub2JqLCBvYmopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5ieXRlcywgZXhwZWN0ZWRfbGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5pdGVtc2l6ZSwgaXRlbXNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmZvcm1hdCwgZm10KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5yZWFkb25seSwgcmVhZG9ubHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm5kaW0sIG5kaW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnNoYXBlLCB0dXBsZShzaGFwZSkpCisgICAgICAgIGlmIG5vdCAoc2xpY2VkIGFuZCBzdWJvZmZzZXRzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0cmlkZXMsIHR1cGxlKHN0cmlkZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdWJvZmZzZXRzLCB0dXBsZShzdWJvZmZzZXRzKSkKKworICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgbmRhcnJheSkgb3IgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgIHJlcCA9IHJlc3VsdC50b2xpc3QoKSBpZiBmbXQgZWxzZSByZXN1bHQudG9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcCwgbHN0KQorCisgICAgICAgIGlmIG5vdCBmbXQ6ICMgYXJyYXkgaGFzIGJlZW4gY2FzdCB0byB1bnNpZ25lZCBieXRlcywKKyAgICAgICAgICAgIHJldHVybiAgIyB0aGUgcmVtYWluaW5nIHRlc3RzIHdvbid0IHdvcmsuCisKKyAgICAgICAgIyBQeUJ1ZmZlcl9HZXRQb2ludGVyKCkgaXMgdGhlIGRlZmluaXRpb24gaG93IHRvIGFjY2VzcyBhbiBpdGVtLgorICAgICAgICAjIElmIFB5QnVmZmVyX0dldFBvaW50ZXIoaW5kaWNlcykgaXMgY29ycmVjdCBmb3IgYWxsIHBvc3NpYmxlCisgICAgICAgICMgY29tYmluYXRpb25zIG9mIGluZGljZXMsIHRoZSBidWZmZXIgaXMgY29ycmVjdC4KKyAgICAgICAgIworICAgICAgICAjIEFsc28gdGVzdCB0b2J5dGVzKCkgYWdhaW5zdCB0aGUgZmxhdHRlbmVkICdsc3QnLCB3aXRoIGFsbCBpdGVtcworICAgICAgICAjIHBhY2tlZCB0byBieXRlcy4KKyAgICAgICAgaWYgbm90IGNhc3Q6ICMgY2FzdHMgY2hvcCB1cCAnbHN0JyBpbiBkaWZmZXJlbnQgd2F5cworICAgICAgICAgICAgYiA9IGJ5dGVhcnJheSgpCisgICAgICAgICAgICBidWZfZXJyID0gTm9uZQorICAgICAgICAgICAgZm9yIGluZCBpbiBpbmRpY2VzKHNoYXBlKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0xID0gZ2V0X3BvaW50ZXIocmVzdWx0LCBpbmQpCisgICAgICAgICAgICAgICAgICAgIGl0ZW0yID0gZ2V0X2l0ZW0obHN0LCBpbmQpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbTIsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzdHJ1Y3QucGFjayhmbXQsICppdGVtMikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBzdHJ1Y3QucGFjayhmbXQsIGl0ZW0yKQorICAgICAgICAgICAgICAgICAgICBiLmV4dGVuZCh4KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnVmX2VyciA9IFRydWUgIyByZS1leHBvcnRlciBkb2VzIG5vdCBwcm92aWRlIGZ1bGwgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtMSwgaXRlbTIpCisKKyAgICAgICAgICAgIGlmIG5vdCBidWZfZXJyOgorICAgICAgICAgICAgICAgICMgdGVzdCB0b2J5dGVzKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50b2J5dGVzKCksIGIpCisKKyAgICAgICAgICAgICAgICAjIGxzdCA6PSBleHBlY3RlZCBtdWx0aS1kaW1lbnNpb25hbCBsb2dpY2FsIHJlcHJlc2VudGF0aW9uCisgICAgICAgICAgICAgICAgIyBmbGF0dGVuKGxzdCkgOj0gZWxlbWVudHMgaW4gQy1vcmRlcgorICAgICAgICAgICAgICAgIGZmID0gZm10IGlmIGZtdCBlbHNlICdCJworICAgICAgICAgICAgICAgIGZsYXR0ZW5lZCA9IGZsYXR0ZW4obHN0KQorCisgICAgICAgICAgICAgICAgIyBSdWxlcyBmb3IgJ0EnOiBpZiB0aGUgYXJyYXkgaXMgYWxyZWFkeSBjb250aWd1b3VzLCByZXR1cm4KKyAgICAgICAgICAgICAgICAjIHRoZSBhcnJheSB1bmFsdGVyZWQuIE90aGVyd2lzZSwgcmV0dXJuIGEgY29udGlndW91cyAnQycKKyAgICAgICAgICAgICAgICAjIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIGlmIG9yZGVyID09ICdGJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0EnKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0MnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvciBjb25zdHJ1Y3RpbmcgdGhlIG5kYXJyYXksIGNvbnZlcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbGF0dGVuZWQgbG9naWNhbCByZXByZXNlbnRhdGlvbiB0byBGb3J0cmFuIG9yZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zID0gdHJhbnNwb3NlKGZsYXR0ZW5lZCwgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZGFycmF5KHRyYW5zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAgICAgICAgICAgICBlbHNlOiAjICdDJywgJ0EnCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfY29udGlndW91cyhyZXN1bHQsICdBJykgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfY29udGlndW91cyhyZXN1bHQsICdGJykgYW5kIG9yZGVyID09ICdDJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBmbGF0dGVuZWQgbGlzdCBpcyBhbHJlYWR5IGluIEMtb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZGFycmF5KGZsYXR0ZW5lZCwgc2hhcGU9c2hhcGUsIGZvcm1hdD1mZikKKworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBnZXRfY29udGlndW91cyhyZXN1bHQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRpZy50b2J5dGVzKCksIGIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKGNvbnRpZywgZXhwZWN0ZWQpKQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5kaW0gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgbm1lbWIgPSBsZW4oZmxhdHRlbmVkKQorICAgICAgICAgICAgICAgICAgICBybyA9IDAgaWYgcmVhZG9ubHkgZWxzZSBORF9XUklUQUJMRQorCisgICAgICAgICAgICAgICAgICAgICMjIyBTZWUgY29tbWVudCBpbiB0ZXN0X3B5X2J1ZmZlcl90b19jb250aWd1b3VzIGZvciBhbgorICAgICAgICAgICAgICAgICAgICAjIyMgZXhwbGFuYXRpb24gd2h5IHRoZXNlIHRlc3RzIGFyZSB2YWxpZC4KKworICAgICAgICAgICAgICAgICAgICAjIFRvICdDJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdDJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KGluaXRsc3QsIHNoYXBlPXNoYXBlLCBmbGFncz1ybywgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnRicKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShpbml0bHN0LCBzaGFwZT1zaGFwZSwgZmxhZ3M9cm98TkRfRk9SVFJBTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgICAgICAgICAgICAgIyBUbyAnQScKKyAgICAgICAgICAgICAgICAgICAgY29udGlnID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMocmVzdWx0LCAnQScsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNvbnRpZyksIG5tZW1iICogaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbc3RydWN0LnVucGFja19mcm9tKGZtdCwgY29udGlnLCBuKml0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKG5tZW1iKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKGluaXRsc3RbMF0pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3ZbMF0gZm9yIHYgaW4gaW5pdGxzdF0KKworICAgICAgICAgICAgICAgICAgICBmID0gTkRfRk9SVFJBTiBpZiBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0YnKSBlbHNlIDAKKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoaW5pdGxzdCwgc2hhcGU9c2hhcGUsIGZsYWdzPWZ8cm8sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhyZXN1bHQpKQorCisgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcocmVzdWx0KQorICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOiAjIHJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZnVsbCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZXggPSByZXN1bHQub2JqIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBtZW1vcnl2aWV3KSBlbHNlIHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmJ5dGVzLCBleHBlY3RlZF9sZW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uaXRlbXNpemUsIGl0ZW1zaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvcm1hdCwgZm10KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWRvbmx5LCByZWFkb25seSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uZGltLCBuZGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNoYXBlLCB0dXBsZShzaGFwZSkpCisgICAgICAgICAgICBpZiBub3QgKHNsaWNlZCBhbmQgc3Vib2Zmc2V0cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN0cmlkZXMsIHR1cGxlKHN0cmlkZXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsIHR1cGxlKHN1Ym9mZnNldHMpKQorCisgICAgICAgICAgICBuID0gMSBpZiBuZGltID09IDAgZWxzZSBsZW4obHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obSksIG4pCisKKyAgICAgICAgICAgIHJlcCA9IHJlc3VsdC50b2xpc3QoKSBpZiBmbXQgZWxzZSByZXN1bHQudG9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcCwgbHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCByZXN1bHQpCisKKyAgICBkZWYgdmVyaWZ5X2dldGJ1ZihzZWxmLCBvcmlnX2V4LCBleCwgcmVxLCBzbGljZWQ9RmFsc2UpOgorICAgICAgICBkZWYgc2ltcGxlX2ZtdChleCk6CisgICAgICAgICAgICByZXR1cm4gZXguZm9ybWF0ID09ICcnIG9yIGV4LmZvcm1hdCA9PSAnQicKKyAgICAgICAgZGVmIG1hdGNoKHJlcSwgZmxhZyk6CisgICAgICAgICAgICByZXR1cm4gKChyZXEmZmxhZykgPT0gZmxhZykKKworICAgICAgICBpZiAoIyB3cml0YWJsZSByZXF1ZXN0IHRvIHJlYWQtb25seSBleHBvcnRlcgorICAgICAgICAgICAgKGV4LnJlYWRvbmx5IGFuZCBtYXRjaChyZXEsIFB5QlVGX1dSSVRBQkxFKSkgb3IKKyAgICAgICAgICAgICMgY2Fubm90IG1hdGNoIGV4cGxpY2l0IGNvbnRpZ3VpdHkgcmVxdWVzdAorICAgICAgICAgICAgKG1hdGNoKHJlcSwgUHlCVUZfQ19DT05USUdVT1VTKSBhbmQgbm90IGV4LmNfY29udGlndW91cykgb3IKKyAgICAgICAgICAgIChtYXRjaChyZXEsIFB5QlVGX0ZfQ09OVElHVU9VUykgYW5kIG5vdCBleC5mX2NvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAobWF0Y2gocmVxLCBQeUJVRl9BTllfQ09OVElHVU9VUykgYW5kIG5vdCBleC5jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgIyBidWZmZXIgbmVlZHMgc3Vib2Zmc2V0cworICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX0lORElSRUNUKSBhbmQgZXguc3Vib2Zmc2V0cykgb3IKKyAgICAgICAgICAgICMgYnVmZmVyIHdpdGhvdXQgc3RyaWRlcyBtdXN0IGJlIEMtY29udGlndW91cworICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX1NUUklERVMpIGFuZCBub3QgZXguY19jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgIyBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQKKyAgICAgICAgICAgIChub3QgbWF0Y2gocmVxLCBQeUJVRl9ORCkgYW5kIG1hdGNoKHJlcSwgUHlCVUZfRk9STUFUKSkpOgorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1yZXEpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBpc2luc3RhbmNlKGV4LCBuZGFycmF5KSBvciBpc19tZW1vcnl2aWV3X2Zvcm1hdChleC5mb3JtYXQpOgorICAgICAgICAgICAgbHN0ID0gZXgudG9saXN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgICAgICBsc3QgPSBuZC50b2xpc3QoKQorCisgICAgICAgICMgVGhlIGNvbnN1bWVyIG1heSBoYXZlIHJlcXVlc3RlZCBkZWZhdWx0IHZhbHVlcyBvciBhIE5VTEwgZm9ybWF0LgorICAgICAgICBybyA9IDAgaWYgbWF0Y2gocmVxLCBQeUJVRl9XUklUQUJMRSkgZWxzZSBleC5yZWFkb25seQorICAgICAgICBmbXQgPSBleC5mb3JtYXQKKyAgICAgICAgaXRlbXNpemUgPSBleC5pdGVtc2l6ZQorICAgICAgICBuZGltID0gZXgubmRpbQorICAgICAgICBpZiBub3QgbWF0Y2gocmVxLCBQeUJVRl9GT1JNQVQpOgorICAgICAgICAgICAgIyBpdGVtc2l6ZSByZWZlcnMgdG8gdGhlIG9yaWdpbmFsIGl0ZW1zaXplIGJlZm9yZSB0aGUgY2FzdC4KKyAgICAgICAgICAgICMgVGhlIGVxdWFsaXR5IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gc3RpbGwgaG9sZHMuCisgICAgICAgICAgICAjIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkLgorICAgICAgICAgICAgZm10ID0gJycKKyAgICAgICAgICAgIGxzdCA9IG9yaWdfZXgudG9ieXRlcygpICMgSXNzdWUgMTI4MzQKKyAgICAgICAgaWYgbm90IG1hdGNoKHJlcSwgUHlCVUZfTkQpOgorICAgICAgICAgICAgbmRpbSA9IDEKKyAgICAgICAgc2hhcGUgPSBvcmlnX2V4LnNoYXBlIGlmIG1hdGNoKHJlcSwgUHlCVUZfTkQpIGVsc2UgKCkKKyAgICAgICAgc3RyaWRlcyA9IG9yaWdfZXguc3RyaWRlcyBpZiBtYXRjaChyZXEsIFB5QlVGX1NUUklERVMpIGVsc2UgKCkKKworICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1yZXEpCisgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT1ybywKKyAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBzbGljZWQ9c2xpY2VkKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9nZXRidWYoc2VsZik6CisgICAgICAgIHJlcXVlc3RzID0gKAorICAgICAgICAgICAgIyBkaXN0aW5jdCBmbGFncworICAgICAgICAgICAgUHlCVUZfSU5ESVJFQ1QsIFB5QlVGX1NUUklERVMsIFB5QlVGX05ELCBQeUJVRl9TSU1QTEUsCisgICAgICAgICAgICBQeUJVRl9DX0NPTlRJR1VPVVMsIFB5QlVGX0ZfQ09OVElHVU9VUywgUHlCVUZfQU5ZX0NPTlRJR1VPVVMsCisgICAgICAgICAgICAjIGNvbXBvdW5kIHJlcXVlc3RzCisgICAgICAgICAgICBQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLAorICAgICAgICAgICAgUHlCVUZfUkVDT1JEUywgUHlCVUZfUkVDT1JEU19STywKKyAgICAgICAgICAgIFB5QlVGX1NUUklERUQsIFB5QlVGX1NUUklERURfUk8sCisgICAgICAgICAgICBQeUJVRl9DT05USUcsIFB5QlVGX0NPTlRJR19STywKKyAgICAgICAgKQorICAgICAgICAjIGl0ZW1zIGFuZCBmb3JtYXQKKyAgICAgICAgaXRlbXNfZm10ID0gKAorICAgICAgICAgICAgKFtUcnVlIGlmIHggJSAyIGVsc2UgRmFsc2UgZm9yIHggaW4gcmFuZ2UoMTIpXSwgJz8nKSwKKyAgICAgICAgICAgIChbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdLCAnYicpLAorICAgICAgICAgICAgKFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0sICdCJyksCisgICAgICAgICAgICAoWygyKiozMS14KSBpZiB4ICUgMiBlbHNlICgtMioqMzEreCkgZm9yIHggaW4gcmFuZ2UoMTIpXSwgJ2wnKQorICAgICAgICApCisgICAgICAgICMgc2hhcGUsIHN0cmlkZXMsIG9mZnNldAorICAgICAgICBzdHJ1Y3R1cmUgPSAoCisgICAgICAgICAgICAoW10sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMTJdLCBbXSwgMCksCisgICAgICAgICAgICAoWzEyXSwgWy0xXSwgMTEpLAorICAgICAgICAgICAgKFs2XSwgWzJdLCAwKSwKKyAgICAgICAgICAgIChbNl0sIFstMl0sIDExKSwKKyAgICAgICAgICAgIChbMywgNF0sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMywgNF0sIFstNCwgLTFdLCAxMSksCisgICAgICAgICAgICAoWzIsIDJdLCBbNCwgMV0sIDQpLAorICAgICAgICAgICAgKFsyLCAyXSwgWy00LCAtMV0sIDgpCisgICAgICAgICkKKyAgICAgICAgIyBuZGFycmF5IGNyZWF0aW9uIGZsYWdzCisgICAgICAgIG5kZmxhZ3MgPSAoCisgICAgICAgICAgICAwLCBORF9XUklUQUJMRSwgTkRfRk9SVFJBTiwgTkRfRk9SVFJBTnxORF9XUklUQUJMRSwKKyAgICAgICAgICAgIE5EX1BJTCwgTkRfUElMfE5EX1dSSVRBQkxFCisgICAgICAgICkKKyAgICAgICAgIyBmbGFncyB0aGF0IGNhbiBhY3R1YWxseSBiZSB1c2VkIGFzIGZsYWdzCisgICAgICAgIHJlYWxfZmxhZ3MgPSAoMCwgUHlCVUZfV1JJVEFCTEUsIFB5QlVGX0ZPUk1BVCwKKyAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQpCisKKyAgICAgICAgZm9yIGl0ZW1zLCBmbXQgaW4gaXRlbXNfZm10OgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgaW4gc3RydWN0dXJlOgorICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBbdiAqIGl0ZW1zaXplIGZvciB2IGluIHN0cmlkZXNdCisgICAgICAgICAgICAgICAgb2Zmc2V0ICo9IGl0ZW1zaXplCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluIG5kZmxhZ3M6CisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlcyBhbmQgKGZsYWdzJk5EX0ZPUlRSQU4pOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNoYXBlIGFuZCAoZmxhZ3MmTkRfUElMKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgX2l0ZW1zID0gaXRlbXMgaWYgc2hhcGUgZWxzZSBpdGVtc1swXQorICAgICAgICAgICAgICAgICAgICBleDEgPSBuZGFycmF5KF9pdGVtcywgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywgb2Zmc2V0PW9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAgZXgyID0gZXgxWzo6LTJdIGlmIHNoYXBlIGVsc2UgTm9uZQorCisgICAgICAgICAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhleDEpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhleDIpCisgICAgICAgICAgICAgICAgICAgIGlmIGV4MS5uZGltID09IDAgb3IgKGV4MS5uZGltID09IDEgYW5kIHNoYXBlIGFuZCBzdHJpZGVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgyIGFuZCBleDIubmRpbSA9PSAxIGFuZCBzaGFwZSBhbmQgc3RyaWRlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgICAgICAgICBmb3IgcmVxIGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJpdHMgaW4gcmVhbF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgxLCBleDEsIHJlcXxiaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDEsIG0xLCByZXF8Yml0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBleDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDIsIGV4MiwgcmVxfGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQ9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MiwgbTIsIHJlcXxiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VkPVRydWUpCisKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgIyBORF9HRVRCVUZfRkFJTAorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZsYWdzPU5EX0dFVEJVRl9GQUlMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgpCisKKyAgICAgICAgIyBSZXF1ZXN0IGNvbXBsZXggc3RydWN0dXJlIGZyb20gYSBzaW1wbGUgZXhwb3J0ZXIuIEluIHRoaXMKKyAgICAgICAgIyBwYXJ0aWN1bGFyIGNhc2UgdGhlIHRlc3Qgb2JqZWN0IGlzIG5vdCBQRVAtMzExOCBjb21wbGlhbnQuCisgICAgICAgIGJhc2UgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBleCA9IG5kYXJyYXkoYmFzZSwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX05EKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9TVFJJREVTKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9DX0NPTlRJR1VPVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0ZfQ09OVElHVU9VUykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfQU5ZX0NPTlRJR1VPVVMpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBuZG0gPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisKKyAgICAgICAgIyBJbml0aWFsaXphdGlvbiBvZiBhIG5ldyBuZGFycmF5IG9yIG11dGF0aW9uIG9mIGFuIGV4aXN0aW5nIGFycmF5LgorICAgICAgICBmb3IgYyBpbiAobmRhcnJheSwgbmQucHVzaCwgbmRtLnB1c2gpOgorICAgICAgICAgICAgIyBJbnZhbGlkIHR5cGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCB7MSwyLDN9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLCczJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsKDMsNCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT17M30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz17MX0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgb2Zmc2V0PVtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PXt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZmxhZ3M9e30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBnZXRidWY9e30pCisKKyAgICAgICAgICAgICMgTkRfRk9SVFJBTiBmbGFnIGlzIG9ubHkgdmFsaWQgd2l0aG91dCBzdHJpZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorCisgICAgICAgICAgICAjIE5EX1BJTCBmbGFnIGlzIG9ubHkgdmFsaWQgd2l0aCBuZGltID4gMC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bXSwgZmxhZ3M9TkRfUElMKQorCisgICAgICAgICAgICAjIEludmFsaWQgaXRlbXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbXSwgc2hhcGU9WzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWydYWFgnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkwiKQorICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGl0ZW1zIGFuZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIGMsIFsxMDAwXSwgc2hhcGU9WzFdLCBmb3JtYXQ9IkIiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsKDIsMyldLCBzaGFwZT1bMl0sIGZvcm1hdD0iQiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iUUwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgbmRpbS4KKyAgICAgICAgICAgIG4gPSBORF9NQVhfTkRJTSsxCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMV0qbiwgc2hhcGU9WzFdKm4pCisKKyAgICAgICAgICAgICMgSW52YWxpZCBzaGFwZS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxXSwgc2hhcGU9Wy0xXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVsnMyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYywgWzFdLCBzaGFwZT1bMioqMTI4XSkKKyAgICAgICAgICAgICMgcHJvZChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBsZW4oaXRlbXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDMsNCw1XSwgc2hhcGU9WzIsMl0sIG9mZnNldD0zKQorCisgICAgICAgICAgICAjIEludmFsaWQgc3RyaWRlcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz1bJzEnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bMioqMTI4XSkKKworICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHN0cmlkZXMgYW5kIHNoYXBlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMl0sIHNoYXBlPVsyLDFdLCBzdHJpZGVzPVsxXSkKKyAgICAgICAgICAgICMgSW52YWxpZCBjb21iaW5hdGlvbiBvZiBzdHJpZGVzIGFuZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDMsNF0sIHNoYXBlPVsyXSwgc3RyaWRlcz1bM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgb2Zmc2V0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBvZmZzZXQ9NCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVsxXSwgb2Zmc2V0PTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkwiKQorCisgICAgICAgICAgICAjIEludmFsaWQgZm9ybWF0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9IiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIGMsIFsoMSwyLDMpXSwgc2hhcGU9WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSJAIyQiKQorCisgICAgICAgICAgICAjIFN0cmlkaW5nIG91dCBvZiB0aGUgbWVtb3J5IGJvdW5kcy4KKyAgICAgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgaXRlbXMsIHNoYXBlPVsyLDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bLTMsIC0yXSwgb2Zmc2V0PTUpCisKKyAgICAgICAgICAgICMgQ29uc3RydWN0aW5nIGNvbnN1bWVyOiBmb3JtYXQgYXJndW1lbnQgaW52YWxpZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgYnl0ZWFycmF5KCksIGZvcm1hdD0iUSIpCisKKyAgICAgICAgICAgICMgQ29uc3RydWN0aW5nIG9yaWdpbmFsIGJhc2Ugb2JqZWN0OiBnZXRidWYgYXJndW1lbnQgaW52YWxpZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGdldGJ1Zj1QeUJVRl9GVUxMKQorCisgICAgICAgICAgICAjIFNoYXBlIGFyZ3VtZW50IGlzIG1hbmRhdG9yeSBmb3Igb3JpZ2luYWwgYmFzZSBvYmplY3RzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0pCisKKworICAgICAgICAjIFB5QlVGX1dSSVRBQkxFIHJlcXVlc3QgdG8gcmVhZC1vbmx5IHByb3ZpZGVyLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgYicxMjMnLCBnZXRidWY9UHlCVUZfV1JJVEFCTEUpCisKKyAgICAgICAgIyBORF9WQVJFWFBPUlQgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorCisgICAgICAgICMgSW52YWxpZCBvcGVyYXRpb24gZm9yIGNvbnN1bWVyczogcHVzaC9wb3AKKyAgICAgICAgbmQgPSBuZGFycmF5KGInMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorCisgICAgICAgICMgTkRfVkFSRVhQT1JUIG5vdCBzZXQ6IHB1c2gvcG9wIGZhaWwgd2l0aCBleHBvcnRlZCBidWZmZXJzCisgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSkKKyAgICAgICAgbmQucHVzaChbMV0sIFsxXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wdXNoLCBbMV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgbmQucG9wKCkKKworICAgICAgICAjIFNpbmdsZSByZW1haW5pbmcgYnVmZmVyOiBwb3AgZmFpbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnBvcCkKKyAgICAgICAgZGVsIG5kCisKKyAgICAgICAgIyBnZXRfcG9pbnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X3BvaW50ZXIsIHt9LCBbMSwyLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9wb2ludGVyLCBiJzEyMycsIHt9KQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEwMCkpLCBzaGFwZT1bMV0qMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFs1XSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMiwzLDRdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFszLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFstMywzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0X3BvaW50ZXIsIG5kLCBbMTw8NjQsM10pCisKKyAgICAgICAgIyB0b2xpc3QoKSBuZWVkcyBmb3JtYXQKKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC50b2xpc3QpCisKKyAgICAgICAgIyBtZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgZXgxID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0nTCcpCisgICAgICAgIGV4MiA9IG5kYXJyYXkoZXgxKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsoMSwpKjIwMF0sIHNoYXBlPVsxXSwgZm9ybWF0PSdMJyoyMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICBuID0gTkRfTUFYX05ESU0KKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UobikpLCBzaGFwZT1bMV0qbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICAjIGdldF9jb250aWd1b3VzKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgInh5eiIsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCAyKio2NCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgOTYxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1MjAwNycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgJ1onKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIDI1NSwgJ0EnKQorCisgICAgICAgICMgY21wX2NvbnRpZygpCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCAxLCAyLCAzLCA0LCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIHt9LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXBfY29udGlnLCBuZCwge30pCisKKyAgICAgICAgIyBpc19jb250aWd1b3VzKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzX2NvbnRpZ3VvdXMsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNfY29udGlndW91cywge30sICdBJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc19jb250aWd1b3VzLCBuZCwgMjAxKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9saW5rZWRfbGlzdChzZWxmKToKKyAgICAgICAgZm9yIHBlcm0gaW4gcGVybXV0YXRpb25zKHJhbmdlKDUpKToKKyAgICAgICAgICAgIG0gPSBbMF0qNQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICAgICAgbVswXSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgICAgIG5kLnB1c2goWzEsMiwzXSwgc2hhcGU9WzNdKQorICAgICAgICAgICAgICAgIG1baV0gPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICBtW3Blcm1baV1dLnJlbGVhc2UoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICAgICAgZGVsIG5kCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zY2FsYXIoc2VsZik6CisgICAgICAgICMgbmRpbSA9IDA6IHNjYWxhcgorICAgICAgICBmb3IgZm10LCBzY2FsYXIsIF8gaW4gaXRlcl9mb3JtYXQoMCk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoc2NhbGFyLCBzaGFwZT0oKSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0wLCBzaGFwZT0oKSwgc3RyaWRlcz0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1zY2FsYXIpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zaGFwZShzZWxmKToKKyAgICAgICAgIyBuZGltID0gMSwgc2hhcGUgPSBbbl0KKyAgICAgICAgbml0ZW1zID0gIHJhbmRyYW5nZSgxLCAxMCkKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobml0ZW1zKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtuaXRlbXNdLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT0obml0ZW1zLCksIHN0cmlkZXM9KGl0ZW1zaXplLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWl0ZW1zKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3JtYXRfc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyBuZGltID0gMSwgc3RyaWRlcworICAgICAgICBuaXRlbXMgPSByYW5kcmFuZ2UoMSwgMzApCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KG5pdGVtcyk6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3Igc3RlcCBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgaWYgc3RlcCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc2hhcGUgPSBbbGVuKGl0ZW1zWzo6c3RlcF0pXQorICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBbc3RlcCppdGVtc2l6ZV0KKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVtc2l6ZSoobml0ZW1zLTEpIGlmIHN0ZXAgPCAwIGVsc2UgMAorCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Zm10LCBvZmZzZXQ9b2Zmc2V0LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9aXRlbXNbOjpzdGVwXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ydHJhbihzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9KDMsIDQpLCBzdHJpZGVzPSgxLCAzKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfRl9DT05USUdVT1VTfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgZmFycmF5KGl0ZW1zLCAoMywgNCkpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgZm9yIG5kaW0gaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBzaGFwZV90ID0gW3JhbmRyYW5nZSgyLCAxMCkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisgICAgICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICBpZiBuZGltID09IDAgYW5kIGZsYWdzID09IE5EX1BJTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBDIGFycmF5CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIGl0ZW1zaXplLCAnQycpCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBtZW1vcnl2aWV3OiByZWNvbnN0cnVjdCBzdHJpZGVzCisgICAgICAgICAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZC5zdHJpZGVzID09ICgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbXYgPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG12LCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgICAgICAgICAjIEZvcnRyYW4gYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX0ZPUlRSQU4pCisKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsICdGJykKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIG5vdCB3cml0YWJsZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19zZXRpdGVtX18sIDEsIDgpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDEsIDgpCisKKyAgICAgICAgIyBjYW5ub3QgYmUgZGVsZXRlZAorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZGVsaXRlbV9fLCAxKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fZGVsaXRlbV9fLCAxKQorCisgICAgICAgICMgb3ZlcmZsb3cKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbmQuX19nZXRpdGVtX18sIDE8PDY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBuZC5fX3NldGl0ZW1fXywgMTw8NjQsIDgpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAxPDw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIDE8PDY0LCA4KQorCisgICAgICAgICMgZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOF0KKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbGVuKGl0ZW1zKV0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxLCAoMTAwLCAyMDApKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMiwgMzAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAxLCAoMTAwLCAyMDApKQorCisgICAgICAgIGl0ZW1zID0gWygxLDIpLCAoMyw0KSwgKDUsNildCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W2xlbihpdGVtcyldLCBmb3JtYXQ9IkxRIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgbmQuX19zZXRpdGVtX18sIDEsIChiJ1x4MDAxJywgMjAwKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfc2NhbGFyKHNlbGYpOgorICAgICAgICAjIHNjYWxhcgorICAgICAgICBuZCA9IG5kYXJyYXkoMSwgc2hhcGU9KCksIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorCisgICAgICAgIHggPSBuZFsoKV07ICBzZWxmLmFzc2VydEVxdWFsKHgsIDEpCisgICAgICAgIHggPSBuZFsuLi5dOyBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHggPSBtdlsoKV07ICBzZWxmLmFzc2VydEVxdWFsKHgsIDEpCisgICAgICAgIHggPSBtdlsuLi5dOyBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19zZXRpdGVtX18sIDAsIDgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDAsIDgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgMSkKKworICAgICAgICBuZFsoKV0gPSA5OyBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCA5KQorICAgICAgICBtdlsoKV0gPSA5OyBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCA5KQorCisgICAgICAgIG5kWy4uLl0gPSA1OyBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCA1KQorICAgICAgICBtdlsuLi5dID0gNTsgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgNSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfbnVsbF9zdHJpZGVzKHNlbGYpOgorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyKjQpKSwgc2hhcGU9WzIsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHKQorCisgICAgICAgICMgU3ViLXZpZXdzIGFyZSBvbmx5IHBvc3NpYmxlIGZvciBmdWxsIGV4cG9ydGVycy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAxKQorICAgICAgICAjIFNhbWUgZm9yIHNsaWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCBzbGljZSgzLDUsMSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2dldGl0ZW1fc2luZ2xlKHNlbGYpOgorICAgICAgICAjIGdldGl0ZW0KKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19nZXRpdGVtX18sIC02KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19nZXRpdGVtX18sIDUpCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdltpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX2dldGl0ZW1fXywgLTYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19nZXRpdGVtX18sIDUpCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBzdHJpZGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZsYWdzPU5EX1dSSVRBQkxFLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHfFB5QlVGX0ZPUk1BVCkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIG12ID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdi5fX2VxX18obmQpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICMgZ2V0aXRlbSB3aXRoIG51bGwgZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNV0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19STykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBzaGFwZS9zdHJpZGVzL2Zvcm1hdAorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDVdCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X3NldGl0ZW1fc2luZ2xlKHNlbGYpOgorICAgICAgICAjIGFzc2lnbiBzaW5nbGUgdmFsdWUKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZV9pdGVtIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgICAgIG5kW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX3NldGl0ZW1fXywgLTYsIHNpbmdsZV9pdGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbmQuX19zZXRpdGVtX18sIDUsIHNpbmdsZV9pdGVtKQorCisgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgICAgICBtdltpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIC02LCBzaW5nbGVfaXRlbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fc2V0aXRlbV9fLCA1LCBzaW5nbGVfaXRlbSkKKworCisgICAgICAgICMgYXNzaWduIHNpbmdsZSB2YWx1ZTogbG9iamVjdCA9IHJvYmplY3QKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZV9pdGVtIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDQpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSsxXQorICAgICAgICAgICAgICAgIG5kW2ldID0gbmRbaSsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDQpOgorICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSsxXQorICAgICAgICAgICAgICAgIG12W2ldID0gbXZbaSsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgaXRlbXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2dldGl0ZW1fbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKworICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgICMgQyBhcnJheQorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtc2hhcGVbMF0sIHNoYXBlWzBdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV0sIG5kW2ldLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgtc2hhcGVbMV0sIHNoYXBlWzFdKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdLCBuZFtpXVtqXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKC1zaGFwZVsyXSwgc2hhcGVbMl0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdW2tdLCBuZFtpXVtqXVtrXSkKKworICAgICAgICAgICAgICAgICMgRm9ydHJhbiBhcnJheQorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICAgICAgbHN0ID0gZmFycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1zaGFwZVswXSwgc2hhcGVbMF0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXSwgbmRbaV0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKC1zaGFwZVsxXSwgc2hhcGVbMV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal0sIG5kW2ldW2pdLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2Uoc2hhcGVbMl0sIHNoYXBlWzJdKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXVtrXSwgbmRbaV1bal1ba10pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NlcXVlbmNlKHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkoMSwgc2hhcGU9KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjEgaW4gbmQiLCBsb2NhbHMoKSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiMSBpbiBtdiIsIGxvY2FscygpKQorCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUobmQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaXRlbXNbaV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYgaW4gbmQpCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShtdik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaXRlbXNbaV0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2IGluIG12KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDhdCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGFuIGV4cG9ydGVyCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDgsMSksIGl0ZW1zKQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhIGZ1bGwgZXhwb3J0ZXIKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHhyID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX05EKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgeHIpCisKKyAgICAgICAgIyB6ZXJvIHN0ZXAKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCBzbGljZSgwLDEsMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCBzbGljZSgwLDEsMCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMiw0XSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19nZXRpdGVtX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGljZSgwLDEsMCksIHNsaWNlKDAsMSwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sICJAJSQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLCAoIkAlJCIsIHNsaWNlKDAsMSwxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sIChzbGljZSgwLDEsMSksIHt9KSkKKworICAgICAgICAjIG1lbW9yeXZpZXc6IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtdi5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwxKSwgc2xpY2UoMCwxLDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX2dldGl0ZW1fXywgIkAlJCIpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgZm9ybWF0CisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBkaWZmZXJpbmcgaXRlbXNpemUKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJMIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIGRpZmZlcmluZyBuZGltCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzIsIDRdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBbWzEsMiwzLDRdLCBbNSw2LDcsOF1dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtcls3OjhdKQorCisgICAgICAgICMgZGlmZmVyaW5nIHNoYXBlCisgICAgICAgIHhsID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIpCisgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDEpLCB4cls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhsLnRvbGlzdCgpLCBpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsMiwxKSwgbXJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgIyBfdGVzdGJ1ZmZlci5jIG1vZHVsZSBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbGljZV9pbmRpY2VzLCBzbGljZSgwLDEsMiksIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlX2luZGljZXMsICIjIyMjIyMjIyMjIyIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNsaWNlX2luZGljZXMsIHNsaWNlKDAsMSwwKSwgNCkKKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5hZGRfc3Vib2Zmc2V0cykKKworICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJCIikKKyAgICAgICAgeCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC5hZGRfc3Vib2Zmc2V0cykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfemVyb19zaGFwZShzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgeCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMl0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZm9ybWF0PSJMIikKKyAgICAgICAgeFs0OjRdID0geVs5OjldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLCB5KQorICAgICAgICBtbFs0OjRdID0gbXJbOTo5XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMsIDRdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeSA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs0LCAzXSwgZm9ybWF0PSJMIikKKyAgICAgICAgeFsxOjIsIDI6Ml0gPSB5WzE6MiwgMzozXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIGNhcnJheShpdGVtcywgWzMsIDRdKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfbXVsdGlkaW0oc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSkKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBzbGljZXMgaW4gcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKworICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQgPSBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgbmRzbGljZWQgPSBuZFtzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBpZiBuZGVyciBvciBsaXN0ZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRzbGljZWQudG9saXN0KCksIHNsaWNlZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfcmVkdW5kYW50X3N1Ym9mZnNldHMoc2VsZik6CisgICAgICAgIHNoYXBlX3QgPSAoMiwgMywgNSwgMikKKyAgICAgICAgbmRpbSA9IGxlbihzaGFwZV90KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgbmQuYWRkX3N1Ym9mZnNldHMoKQorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGV4LmFkZF9zdWJvZmZzZXRzKCkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIGZvciBzbGljZXMgaW4gcnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKworICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzbGljZWQgPSBtdWx0aXNsaWNlKGxzdCwgc2xpY2VzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG5kc2xpY2VkID0gbmRbc2xpY2VzXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgaWYgbmRlcnIgb3IgbGlzdGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbGlzdGVycikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kc2xpY2VkLnRvbGlzdCgpLCBzbGljZWQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2Fzc2lnbl9zaW5nbGUoc2VsZik6CisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDUpOgorICAgICAgICAgICAgZm9yIGxzbGljZSBpbiBnZW5zbGljZXMoNSk6CisgICAgICAgICAgICAgICAgZm9yIHJzbGljZSBpbiBnZW5zbGljZXMoNSk6CisgICAgICAgICAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKworICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsYWdzfE5EX1dSSVRBQkxFCisgICAgICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1mKQorICAgICAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICAgICAgICAgICAgICBsc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmX3N0cnVjdHVyZSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdCA9IGl0ZW1zWzpdCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHZhbCA9IGxzdFtsc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZhbCA9IGxzdFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0W2xzbGljZV0gPSBsc3RbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc3RydWN0dXJlID0gbGVuKGx2YWwpICE9IGxlbihydmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kW2xzbGljZV0gPSBuZFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWZmX3N0cnVjdHVyZTogIyBuZGFycmF5IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBsc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhuZGVyciwgbHN0ZXJyKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBtdmVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdltsc2xpY2VdID0gbXZbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlmZl9zdHJ1Y3R1cmU6ICMgbWVtb3J5dmlldyBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdmVyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgbHN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobXZlcnIsIGxzdGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtdiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9bmQuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kLm5kaW0sIHNoYXBlPW5kLnNoYXBlLCBzdHJpZGVzPW5kLnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bmQudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2Fzc2lnbl9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgICAgICAgICAgbHNsaWNlcywgcnNsaWNlcyA9IHJhbmRzbGljZV9mcm9tX3NoYXBlKG5kaW0sIHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1mbGFnc3xORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBtdWx0aXNsaWNlX2Fzc2lnbihsc3QsIGxzdCwgbHNsaWNlcywgcnNsaWNlcykKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kW2xzbGljZXNdID0gbmRbcnNsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIG5kZXJyIG9yIGxpc3RlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb20oc2VsZik6CisgICAgICAgICMgY29uc3RydWN0aW9uIG9mIHZhbGlkIGFycmF5cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIHQgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgVHJ1ZSwgbWF4ZGltPU1BWERJTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2hhcGU9TUFYU0hBUEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnQpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCkKKworICAgICAgICAgICAgICAgIHggPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgeGxpc3QgPSB4LnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICBtdmxpc3QgPSBtdi50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12bGlzdCwgeGxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiB0WzJdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBuZGltID4gMDogdGVzdCBhZ2FpbnN0IHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeWxpc3QgPSB5LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxpc3QsIHlsaXN0KQorCisgICAgICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgICAgICAgICBpZiBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG12bGlzdCA9IG12LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12bGlzdCwgeWxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSB0WzNdCisgICAgICAgICAgICAgICAgICAgIGlmIDAgaW4gc2hhcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MTAKKyAgICAgICAgICAgICAgICAgICAgeiA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHgsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT16Lml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPXoubmRpbSwgc2hhcGU9ei5zaGFwZSwgc3RyaWRlcz16LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD16LnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb21faW52YWxpZChzZWxmKToKKyAgICAgICAgIyBleGNlcHRpb25zIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgaW52YWxpZCBhcnJheXMKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoSVRFUkFUSU9OUyk6CisgICAgICAgICAgICBmb3IgZm10IGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICB0ID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIEZhbHNlLCBtYXhkaW09TUFYRElNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhzaGFwZT1NQVhTSEFQRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZlcmlmeV9zdHJ1Y3R1cmUoKnQpKQorICAgICAgICAgICAgICAgIGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCkKKworICAgICAgICAgICAgICAgIG5kZXJyID0gRmFsc2UKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHggPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5kZXJyKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIG51bXB5X2VyciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShpdGVtcywgZm10LCB0KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBudW1weV9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIDA6ICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkxMAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bXB5X2VycikKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfcmFuZG9tX3NsaWNlX2Fzc2lnbihzZWxmKToKKyAgICAgICAgIyB2YWxpZCBzbGljZSBhc3NpZ25tZW50cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIGxzaGFwZSwgcnNoYXBlLCBsc2xpY2VzLCByc2xpY2VzID0gXAorICAgICAgICAgICAgICAgICAgICByYW5kX2FsaWduZWRfc2xpY2VzKG1heGRpbT1NQVhESU0sIG1heHNoYXBlPU1BWFNIQVBFKQorICAgICAgICAgICAgICAgIHRsID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIFRydWUsIHNoYXBlPWxzaGFwZSkKKyAgICAgICAgICAgICAgICB0ciA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBUcnVlLCBzaGFwZT1yc2hhcGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcmlmeV9zdHJ1Y3R1cmUoKnRsKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdHIpKQorICAgICAgICAgICAgICAgIGxpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHRsKQorICAgICAgICAgICAgICAgIHJpdGVtcyA9IHJhbmRpdGVtc19mcm9tX3N0cnVjdHVyZShmbXQsIHRyKQorCisgICAgICAgICAgICAgICAgeGwgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCkKKyAgICAgICAgICAgICAgICB4ciA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyKQorICAgICAgICAgICAgICAgIHhsW2xzbGljZXNdID0geHJbcnNsaWNlc10KKyAgICAgICAgICAgICAgICB4bGxpc3QgPSB4bC50b2xpc3QoKQorICAgICAgICAgICAgICAgIHhybGlzdCA9IHhyLnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgICAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHhyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIHhsbGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1yLnRvbGlzdCgpLCB4cmxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiB0bFsyXSA+IDAgYW5kIHRyWzJdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBuZGltID4gMDogdGVzdCBhZ2FpbnN0IHN1Ym9mZnNldHMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgICAgIHlsID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgICAgICAgICAgeXIgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKHJpdGVtcywgZm10LCB0ciwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5bFtsc2xpY2VzXSA9IHlyW3JzbGljZXNdCisgICAgICAgICAgICAgICAgICAgIHlsbGlzdCA9IHlsLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHlybGlzdCA9IHlyLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxsaXN0LCB5bGxpc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeHJsaXN0LCB5cmxpc3QpCisKKyAgICAgICAgICAgICAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHlsKQorICAgICAgICAgICAgICAgICAgICBtciA9IG1lbW9yeXZpZXcoeXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIHlsbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtci50b2xpc3QoKSwgeXJsaXN0KQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIGlmIDAgaW4gbHNoYXBlIG9yIDAgaW4gcnNoYXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTEwCisKKyAgICAgICAgICAgICAgICAgICAgemwgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShsaXRlbXMsIGZtdCwgdGwpCisgICAgICAgICAgICAgICAgICAgIHpyID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyKQorICAgICAgICAgICAgICAgICAgICB6bFtsc2xpY2VzXSA9IHpyW3JzbGljZXNdCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX292ZXJsYXBwaW5nKHRsKSBhbmQgbm90IGlzX292ZXJsYXBwaW5nKHRyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2xpY2UgYXNzaWdubWVudCBvZiBvdmVybGFwcGluZyBzdHJ1Y3R1cmVzCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHVuZGVmaW5lZCBpbiBOdW1QeS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHhsLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXpsLml0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT16bC5uZGltLCBzaGFwZT16bC5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9emwuc3RyaWRlcywgbHN0PXpsLnRvbGlzdCgpKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KHhyLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9enIuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09enIubmRpbSwgc2hhcGU9enIuc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9enIuc3RyaWRlcywgbHN0PXpyLnRvbGlzdCgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yZV9leHBvcnQoc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXQorCisgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgZXggPSBuZGFycmF5KG5kKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleC5mbGFncyAmIE5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhleC5vYmosIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LnN1Ym9mZnNldHMsICgwLCAtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguY19jb250aWd1b3VzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmZfY29udGlndW91cykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5jb250aWd1b3VzKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV96ZXJvX3NoYXBlKHNlbGYpOgorICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMF0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIFtdKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzAsMywzXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbXSkKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszLDAsM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgW1tdLCBbXSwgW11dKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzMsMywwXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1tdLCBbXSwgW11dLCBbW10sIFtdLCBbXV0sIFtbXSwgW10sIFtdXV0pCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3plcm9fc3RyaWRlcyhzZWxmKToKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzVdLCBzdHJpZGVzPVswXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFsxLCAxLCAxLCAxLCAxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIFsxLCAxLCAxLCAxLCAxXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfb2Zmc2V0KHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgyMCkpLCBzaGFwZT1bM10sIG9mZnNldD03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLm9mZnNldCwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgWzcsOCw5XSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlcihzZWxmKToKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMykpLCBzaGFwZT1bM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZ2V0X3BvaW50ZXIoc2VsZik6CisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMpKSwgc2hhcGU9WzNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGdldF9wb2ludGVyKG5kLCBbaV0pKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV90b2xpc3RfbnVsbF9zdHJpZGVzKHNlbGYpOgorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgyMCkpLCBzaGFwZT1bMiwyLDVdKQorCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX05EfFB5QlVGX0ZPUk1BVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgZXgudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2NtcF9jb250aWcoc2VsZik6CisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbXBfY29udGlnKGIiMTIzIiwgYiI0NTYiKSkKKworICAgICAgICB4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICB5ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVs0LDNdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNtcF9jb250aWcoeCwgeSkpCisKKyAgICAgICAgeCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iQiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKHgsIGInXHgwMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY21wX2NvbnRpZyhiJ1x4MDEnLCB4KSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaGFzaChzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwyLDNdKQorICAgICAgICBuZCA9IG5kYXJyYXkoYSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbmQpCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwKKyAgICAgICAgYiA9IGJ5dGVzKGxpc3QocmFuZ2UoMTIpKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgQy1jb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDIsMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBGb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgYiA9IGJ5dGVzKHRyYW5zcG9zZShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVs0LDNdKSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgYiA9IGJ5dGVzKHRyYW5zcG9zZShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0pKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobmQpLCBoYXNoKGIpKQorCisgICAgICAgICMgc3Vib2Zmc2V0cworICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBub24tYnl0ZSBmb3JtYXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2gobmQudG9ieXRlcygpKSkKKworICAgIGRlZiB0ZXN0X3B5X2J1ZmZlcl90b19jb250aWd1b3VzKHNlbGYpOgorCisgICAgICAgICMgVGhlIHJlcXVlc3RzIGFyZSB1c2VkIGluIF90ZXN0YnVmZmVyLmM6cHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMKKyAgICAgICAgIyB0byBnZW5lcmF0ZSBidWZmZXJzIHdpdGhvdXQgZnVsbCBpbmZvcm1hdGlvbiBmb3IgdGVzdGluZy4KKyAgICAgICAgcmVxdWVzdHMgPSAoCisgICAgICAgICAgICAjIGRpc3RpbmN0IGZsYWdzCisgICAgICAgICAgICBQeUJVRl9JTkRJUkVDVCwgUHlCVUZfU1RSSURFUywgUHlCVUZfTkQsIFB5QlVGX1NJTVBMRSwKKyAgICAgICAgICAgICMgY29tcG91bmQgcmVxdWVzdHMKKyAgICAgICAgICAgIFB5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sCisgICAgICAgICAgICBQeUJVRl9SRUNPUkRTLCBQeUJVRl9SRUNPUkRTX1JPLAorICAgICAgICAgICAgUHlCVUZfU1RSSURFRCwgUHlCVUZfU1RSSURFRF9STywKKyAgICAgICAgICAgIFB5QlVGX0NPTlRJRywgUHlCVUZfQ09OVElHX1JPLAorICAgICAgICApCisKKyAgICAgICAgIyBubyBidWZmZXIgaW50ZXJmYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMsIHt9LCAnRicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX0ZVTExfUk8pCisKKyAgICAgICAgIyBzY2FsYXIsIHJlYWQtb25seSByZXF1ZXN0CisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoOCkpLCBzaGFwZT1bMiwgMCwgN10sIGZvcm1hdD0iTCIsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgIyMjIE9uZS1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHRyaXZpYWwsIHNpbmNlIEZvcnRyYW4gYW5kIEMgb3JkZXIKKyAgICAgICAgIyMjIGFyZSB0aGUgc2FtZS4KKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbAorICAgICAgICBmb3IgZiBpbiBbMCwgTkRfRk9SVFJBTl06CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZvcm1hdD0iaCIsIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBuZGJ5dGVzID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVszXSwgZm9ybWF0PSJiIiwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9TVFJJREVTLCBQeUJVRl9GVUxMXToKKyAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICBuZCA9IG5kWzo6LTFdCisgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgICMjIworICAgICAgICAjIyMgTXVsdGktZGltZW5zaW9uYWwgYXJyYXlzOgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIFRoZSBnb2FsIGhlcmUgaXMgdG8gcHJlc2VydmUgdGhlIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlCisgICAgICAgICMjIyBpbnB1dCBhcnJheSBidXQgY2hhbmdlIHRoZSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBpZiBuZWNlc3NhcnkuCisgICAgICAgICMjIworICAgICAgICAjIyMgX3Rlc3RidWZmZXIgZXhhbXBsZToKKyAgICAgICAgIyMjID09PT09PT09PT09PT09PT09PT09CisgICAgICAgICMjIworICAgICAgICAjIyMgICAgQyBpbnB1dCBhcnJheToKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kLnRvbGlzdCgpCisgICAgICAgICMjIyAgICAgICBbWzAsIDEsIDIsIDNdLAorICAgICAgICAjIyMgICAgICAgIFs0LCA1LCA2LCA3XSwKKyAgICAgICAgIyMjICAgICAgICBbOCwgOSwgMTAsIDExXV0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBGb3J0cmFuIG91dHB1dDoKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgICMjIyAgICAgICA+Pj4gYidceDAwXHgwNFx4MDhceDAxXHgwNVx0XHgwMlx4MDZcblx4MDNceDA3XHgwYicKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBUaGUgcmV0dXJuIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoaXMgaW5wdXQgbGlzdCBmb3IKKyAgICAgICAgIyMjICAgIF90ZXN0YnVmZmVyJ3MgbmRhcnJheToKKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoWzAsNCw4LDEsNSw5LDIsNiwxMCwzLDcsMTFdLCBzaGFwZT1bMyw0XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgIyMjICAgICAgID4+PiBuZC50b2xpc3QoKQorICAgICAgICAjIyMgICAgICAgW1swLCAxLCAyLCAzXSwKKyAgICAgICAgIyMjICAgICAgICBbNCwgNSwgNiwgN10sCisgICAgICAgICMjIyAgICAgICAgWzgsIDksIDEwLCAxMV1dCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgVGhlIGxvZ2ljYWwgYXJyYXkgaXMgdGhlIHNhbWUsIGJ1dCB0aGUgdmFsdWVzIGluIG1lbW9yeSBhcmUgbm93CisgICAgICAgICMjIyAgICBpbiBGb3J0cmFuIG9yZGVyLgorICAgICAgICAjIyMKKyAgICAgICAgIyMjIE51bVB5IGV4YW1wbGU6CisgICAgICAgICMjIyA9PT09PT09PT09PT09PQorICAgICAgICAjIyMgICAgX3Rlc3RidWZmZXIncyBuZGFycmF5IHRha2VzIGxpc3RzIHRvIGluaXRpYWxpemUgdGhlIG1lbW9yeS4KKyAgICAgICAgIyMjICAgIEhlcmUncyB0aGUgc2FtZSBzZXF1ZW5jZSBpbiBOdW1QeToKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBDIGlucHV0OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoYnVmZmVyPWJ5dGVhcnJheShsaXN0KHJhbmdlKDEyKSkpLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZT1bMywgNF0sIGR0eXBlPSdCJykKKyAgICAgICAgIyMjICAgICAgID4+PiBuZAorICAgICAgICAjIyMgICAgICAgYXJyYXkoW1sgMCwgIDEsICAyLCAgM10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSwgZHR5cGU9dWludDgpCisgICAgICAgICMjIworICAgICAgICAjIyMgICAgRm9ydHJhbiBvdXRwdXQ6CisgICAgICAgICMjIyAgICAtLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBmb3J0cmFuX2J1ZiA9IG5kLnRvc3RyaW5nKG9yZGVyPSdGJykKKyAgICAgICAgIyMjICAgICAgID4+PiBmb3J0cmFuX2J1ZgorICAgICAgICAjIyMgICAgICAgYidceDAwXHgwNFx4MDhceDAxXHgwNVx0XHgwMlx4MDZcblx4MDNceDA3XHgwYicKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQgPSBuZGFycmF5KGJ1ZmZlcj1mb3J0cmFuX2J1Ziwgc2hhcGU9WzMsIDRdLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT0nQicsIG9yZGVyPSdGJykKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQKKyAgICAgICAgIyMjICAgICAgIGFycmF5KFtbIDAsICAxLCAgMiwgIDNdLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgNCwgIDUsICA2LCAgN10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0sIGR0eXBlPXVpbnQ4KQorICAgICAgICAjIyMKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBjb250aWd1b3VzIGlucHV0CisgICAgICAgIGxzdCA9IGxpc3QocmFuZ2UoMTIpKQorICAgICAgICBmb3IgZiBpbiBbMCwgTkRfRk9SVFJBTl06CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICBuYSA9IG51bXB5X2FycmF5KGJ1ZmZlcj1ieXRlYXJyYXkobHN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVszLCA0XSwgZHR5cGU9J0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI9J0MnIGlmIGYgPT0gMCBlbHNlICdGJykKKworICAgICAgICAgICAgIyAnQycgcmVxdWVzdAorICAgICAgICAgICAgaWYgZiA9PSBORF9GT1JUUkFOOiAjICdGJyB0byAnQycKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbNCwgM10pLCBzaGFwZT1bMywgNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSB4LnRvYnl0ZXMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdDJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYSBDIGFycmF5IHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQgYXJyYXkuCisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdDJykpCisKKyAgICAgICAgICAgICMgJ0YnIHJlcXVlc3QKKyAgICAgICAgICAgIGlmIGYgPT0gMDogIyAnQycgdG8gJ0YnCisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzMsIDRdKSwgc2hhcGU9WzQsIDNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBleHBlY3RlZCA9IHgudG9ieXRlcygpCisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiBbUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywgUHlCVUZfSU5ESVJFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfU1RSSURFUywgUHlCVUZfTkRdOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnRicsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhIEZvcnRyYW4gYXJyYXkgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCBhcnJheS4KKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9GT1JUUkFOfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuYS50b3N0cmluZyhvcmRlcj0nRicpKQorCisgICAgICAgICAgICAjICdBJyByZXF1ZXN0CisgICAgICAgICAgICBpZiBmID09IE5EX0ZPUlRSQU46CisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXkobHN0LCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0geC50b2J5dGVzKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLCBQeUJVRl9JTkRJUkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORF06CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdBJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGV4cGVjdGVkKQorCisgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IG91dHB1dCBjYW4gYmUgdXNlZCBhcyB0aGUgYmFzaXMgZm9yIGNvbnN0cnVjdGluZworICAgICAgICAgICAgICAgICMgYW4gYXJyYXkgd2l0aCBvcmRlcj1mIHRoYXQgaXMgbG9naWNhbGx5IGlkZW50aWNhbCB0byB0aGUgaW5wdXQKKyAgICAgICAgICAgICAgICAjIGFycmF5LgorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPWZ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdBJykpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisKKyAgICAgICAgIyAnQycKKyAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCAnQycsIFB5QlVGX0ZVTExfUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmQudG9ieXRlcygpKQorICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAjICdGJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgeCA9IG5kYXJyYXkodHJhbnNwb3NlKGxzdCwgWzMsIDRdKSwgc2hhcGU9WzQsIDNdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB4LnRvYnl0ZXMoKSkKKyAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfRk9SVFJBTnxORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAjICdBJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdBJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb25zdHJ1Y3Rpb24oc2VsZik6CisKKyAgICAgICAgaXRlbXNfc2hhcGUgPSBbKDksIFtdKSwgKFsxLDIsM10sIFszXSksIChsaXN0KHJhbmdlKDIqMyo1KSksIFsyLDMsNV0pXQorCisgICAgICAgICMgTnVtUHkgc3R5bGUsIEMtY29udGlndW91czoKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNfY29udGlndW91cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNvbnRpZ3VvdXMpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnQycpCisgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiBubyBzdHJpZGVzCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zdHJpZGVzLCAoKSkKKyAgICAgICAgICAgIG0gPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoKTogbm8gZm9ybWF0LCBzaGFwZSwgc3RyaWRlcworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5mb3JtYXQsICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC5zaGFwZSwgKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnN0cmlkZXMsICgpKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorCisgICAgICAgICAgICBsc3QgPSBbaXRlbXNdIGlmIG5kaW0gPT0gMCBlbHNlIGl0ZW1zCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVtleC5uYnl0ZXNdLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgTnVtUHkgc3R5bGUsIEZvcnRyYW4gY29udGlndW91czoKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmZfY29udGlndW91cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmNvbnRpZ3VvdXMpCisKKyAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnRicpCisgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBGcm9tIG1lbW9yeXZpZXc6CisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcobSkKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAjIFBJTCBzdHlsZToKKyAgICAgICAgZm9yIGl0ZW1zLCBzaGFwZSBpbiBpdGVtc19zaGFwZVsxOl06CisKKyAgICAgICAgICAgICMgRnJvbSBQRVAtMzExOCBjb21wbGlhbnQgZXhwb3J0ZXI6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPWV4LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPWV4LnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbW9yeXZpZXcsIGInOScsICd4JykKKyAgICAgICAgIyBOb3QgYSBidWZmZXIgcHJvdmlkZXI6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtb3J5dmlldywge30pCisgICAgICAgICMgTm9uLWNvbXBsaWFudCBidWZmZXIgcHJvdmlkZXI6CisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisKKyAgICAgICAgIyBuZGltID4gNjQKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSoxMjgsIHNoYXBlPVsxXSoxMjgsIGZvcm1hdD0nTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1lbW9yeXZpZXcsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCAnRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZFs6Oi0xXSwgUHlCVUZfUkVBRCwgJ0MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0X3plcm9fc2hhcGUoc2VsZik6CisgICAgICAgICMgQ2FzdHMgYXJlIHVuZGVmaW5lZCBpZiBzaGFwZSBjb250YWlucyB6ZXJvcy4gVGhlc2UgYXJyYXlzIGFyZQorICAgICAgICAjIHJlZ2FyZGVkIGFzIEMtY29udGlndW91cyBieSBOdW1weSBhbmQgUHlCdWZmZXJfR2V0Q29udGlndW91cygpLAorICAgICAgICAjIHNvIHRoZXkgYXJlIG5vdCBjYXVnaHQgYnkgdGhlIHRlc3QgZm9yIEMtY29udGlndWl0eSBpbiBtZW1vcnlfY2FzdCgpLgorICAgICAgICBpdGVtcyA9IFsxLDIsM10KKyAgICAgICAgZm9yIHNoYXBlIGluIChbMCwzLDNdLCBbMywwLDNdLCBbMCwzLDNdKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXguY19jb250aWd1b3VzKQorICAgICAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgJ2MnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zdHJ1Y3RfbW9kdWxlKHNlbGYpOgorCisgICAgICAgIGNsYXNzIElOVChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKKyAgICAgICAgICAgIGRlZiBfX2ludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbAorCisgICAgICAgIGNsYXNzIElEWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgc2VsZi52YWwgPSB2YWwKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsCisKKyAgICAgICAgZGVmIGYoKTogcmV0dXJuIDcKKworICAgICAgICB2YWx1ZXMgPSBbSU5UKDkpLCBJRFgoOSksCisgICAgICAgICAgICAgICAgICAyLjIrM2osIERlY2ltYWwoIi0yMS4xIiksIDEyLjIsIEZyYWN0aW9uKDUsIDIpLAorICAgICAgICAgICAgICAgICAgWzEsMiwzXSwgezQsNSw2fSwgezc6OH0sICgpLCAoOSwpLAorICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsIE5vbmUsIE5vdEltcGxlbWVudGVkLAorICAgICAgICAgICAgICAgICAgYidhJywgYidhYmMnLCBieXRlYXJyYXkoYidhJyksIGJ5dGVhcnJheShiJ2FiYycpLAorICAgICAgICAgICAgICAgICAgJ2EnLCAnYWJjJywgcidhJywgcidhYmMnLAorICAgICAgICAgICAgICAgICAgZiwgbGFtYmRhIHg6IHhdCisKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIGl0ZW0gaW4gaXRlcl9mb3JtYXQoMTAsICdtZW1vcnl2aWV3Jyk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMF0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTBdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICBzdHJ1Y3QucGFja19pbnRvKGZtdCwgbmQsIDAsIGl0ZW0pCisgICAgICAgICAgICBtWzBdID0gaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBuZFswXSkKKworICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgaWYgJ1AnIGluIGZtdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmb3IgdiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc3RydWN0X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBuZCwgaXRlbXNpemUsIHYpCisgICAgICAgICAgICAgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0X2VyciA9IHN0cnVjdC5lcnJvcgorCisgICAgICAgICAgICAgICAgbXZfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbVsxXSA9IHYKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgbXZfZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgIGlmIHN0cnVjdF9lcnIgb3IgbXZfZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHN0cnVjdF9lcnIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobXZfZXJyLCBOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgbmRbMV0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfemVyb19zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIENhc3RzIGFyZSB1bmRlZmluZWQgaWYgc3RyaWRlcyBjb250YWlucyB6ZXJvcy4gVGhlc2UgYXJyYXlzIGFyZQorICAgICAgICAjIChzb21ldGltZXMhKSByZWdhcmRlZCBhcyBDLWNvbnRpZ3VvdXMgYnkgTnVtcHksIGJ1dCBub3QgYnkKKyAgICAgICAgIyBQeUJ1ZmZlcl9HZXRDb250aWd1b3VzKCkuCisgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIHN0cmlkZXM9WzBdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmNfY29udGlndW91cykKKyAgICAgICAgbXNyYyA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCAnYycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfaW52YWxpZChzZWxmKToKKyAgICAgICAgIyBpbnZhbGlkIGZvcm1hdAorICAgICAgICBmb3Igc2ZtdCBpbiBOT05fQllURV9GT1JNQVQ6CisgICAgICAgICAgICBzZm9ybWF0ID0gJ0AnICsgc2ZtdCBpZiByYW5kcmFuZ2UoMikgZWxzZSBzZm10CisgICAgICAgICAgICBzc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShzZm9ybWF0KQorICAgICAgICAgICAgZm9yIGRmbXQgaW4gTk9OX0JZVEVfRk9STUFUOgorICAgICAgICAgICAgICAgIGRmb3JtYXQgPSAnQCcgKyBkZm10IGlmIHJhbmRyYW5nZSgyKSBlbHNlIGRmbXQKKyAgICAgICAgICAgICAgICBkc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShkZm9ybWF0KQorICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDMyKSksIHNoYXBlPVszMi8vc3NpemVdLCBmb3JtYXQ9c2Zvcm1hdCkKKyAgICAgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwgWzMyLy9kc2l6ZV0pCisKKyAgICAgICAgZm9yIHNmbXQsIHNpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgxKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShzaXRlbXMsIHNoYXBlPVsxXSwgZm9ybWF0PXNmbXQpCisgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGZvciBkZm10LCBfLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgorICAgICAgICAgICAgICAgIGlmIChub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoc2ZtdCkgb3IKKyAgICAgICAgICAgICAgICAgICAgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGRmbXQpKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMzIvL2RzaXplXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfYnl0ZV9mb3JtYXQoc2ZtdCkgYW5kIG5vdCBpc19ieXRlX2Zvcm1hdChkZm10KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCBkZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMyLy9kc2l6ZV0pCisKKyAgICAgICAgIyBpbnZhbGlkIHNoYXBlCisgICAgICAgIHNpemVfaCA9IHN0cnVjdC5jYWxjc2l6ZSgnaCcpCisgICAgICAgIHNpemVfZCA9IHN0cnVjdC5jYWxjc2l6ZSgnZCcpCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqMipzaXplX2QpKSwgc2hhcGU9WzIsMixzaXplX2RdLCBmb3JtYXQ9J2gnKQorICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsIHNoYXBlPVsyLDIsc2l6ZV9oXSwgZm9ybWF0PSdkJykKKworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgMSwgMiwgMykKKworICAgICAgICAjIGluY29ycmVjdCBkZXN0IGZvcm1hdCB0eXBlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCB7fSkKKworICAgICAgICAjIGluY29ycmVjdCBkZXN0IGZvcm1hdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJYIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQFgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJAWFkiKQorCisgICAgICAgICMgZGVzdCBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIj1CIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiIUwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICI8UCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIj5sIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQkkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJ4QkkiKQorCisgICAgICAgICMgc3JjIGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgZXggPSBuZGFycmF5KFsoMSwyKSwgKDMsNCldLCBzaGFwZT1bMl0sIGZvcm1hdD0iSUkiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgIyBpbmNvcnJlY3Qgc2hhcGUgdHlwZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT17fSkKKworICAgICAgICAjIGluY29ycmVjdCBzaGFwZSBlbGVtZW50cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjApKSwgc2hhcGU9WzIqMyo0KjVdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyKio2NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bLTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LC0xXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1LDYsNywwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LCd4J10pCisKKyAgICAgICAgIyBOLUQgLT4gTi1EIGNhc3QKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QoWzkgZm9yIF8gaW4gcmFuZ2UoMyo1KjcqMTEpXSksIHNoYXBlPVszLDUsNywxMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkkiLCBzaGFwZT1bMiwzLDQsNV0pCisKKyAgICAgICAgIyBjYXN0IHdpdGggbmRpbSA+IDY0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdJJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgJ0knLCBbMV0qMTI4KQorCisgICAgICAgICMgdmlldy0+bGVuIG5vdCBhIG11bHRpcGxlIG9mIGl0ZW1zaXplCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KFs5IGZvciBfIGluIHJhbmdlKDMqNSo3KjExKV0pLCBzaGFwZT1bMyo1KjcqMTFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJJIiwgc2hhcGU9WzIsMyw0LDVdKQorCisgICAgICAgICMgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAhPSBidWZmZXIgc2l6ZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChbOSBmb3IgXyBpbiByYW5nZSgzKjUqNyoxMSldKSwgc2hhcGU9WzMqNSo3KjExXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVsyLDMsNCw1XSkKKworICAgICAgICAjIHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgb3ZlcmZsb3cKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0knKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyOCkpLCBzaGFwZT1bMTI4XSwgZm9ybWF0PSdCJykKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBpZiBzeXMubWF4c2l6ZSA9PSAyKio2My0xOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNywgNywgNzMsIDEyNywgMzM3LCA5MjczNywgNjQ5NjU3XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioyMCwgMioqMjAsIDIqKjEwLCAyKioxMCwgMioqM10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5jYXN0LCAnSScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMjAsIDIqKjIwLCAyKioxMCwgMioqMTAsIDIqKjFdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMSwgMjE0NzQ4MzY0N10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMS5jYXN0LCAnQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMioqMTAsIDIqKjEwLCAyKio1LCAyKio1LCAyKioxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLmNhc3QsICdJJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioxMCwgMioqMTAsIDIqKjUsIDIqKjMsIDIqKjFdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0KHNlbGYpOgorICAgICAgICBieXRlc3BlYyA9ICgKKyAgICAgICAgICAoJ0InLCBsYW1iZGEgZXg6IGxpc3QoZXgudG9ieXRlcygpKSksCisgICAgICAgICAgKCdiJywgbGFtYmRhIGV4OiBbeC0yNTYgaWYgeCA+IDEyNyBlbHNlIHggZm9yIHggaW4gbGlzdChleC50b2J5dGVzKCkpXSksCisgICAgICAgICAgKCdjJywgbGFtYmRhIGV4OiBbYnl0ZXMoY2hyKHgpLCAnbGF0aW4tMScpIGZvciB4IGluIGxpc3QoZXgudG9ieXRlcygpKV0pLAorICAgICAgICApCisKKyAgICAgICAgZGVmIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KToKKyAgICAgICAgICAgIHNyY3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIGJ5dGVmbXQsIHRvX2J5dGVsaXN0IGluIGJ5dGVzcGVjOgorCisgICAgICAgICAgICAgICAgbTIgPSBtLmNhc3QoYnl0ZWZtdCkKKyAgICAgICAgICAgICAgICBsc3QgPSB0b19ieXRlbGlzdChleCkKKyAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1ieXRlZm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzMxKnNyY3NpemVdLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgbTMgPSBtMi5jYXN0KGZtdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zLCBleCkKKyAgICAgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0zLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c3Jjc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVszMV0sIHN0cmlkZXM9KHNyY3NpemUsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgIyBjYXN0IGZyb20gbmRpbSA9IDAgdG8gbmRpbSA9IDEKKyAgICAgICAgc3Jjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnSScpCisgICAgICAgIGV4ID0gbmRhcnJheSg5LCBzaGFwZT1bXSwgZm9ybWF0PSdJJykKKyAgICAgICAgZGVzdGl0ZW1zLCBkZXN0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCAnQicsIDEpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtMiA9IG0uY2FzdCgnQicpCisgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9ZGVzdHNoYXBlLCBzdHJpZGVzPSgxLCksCisgICAgICAgICAgICAgICAgICAgIGxzdD1kZXN0aXRlbXMsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAjIGNhc3QgZnJvbSBuZGltID0gMSB0byBuZGltID0gMAorICAgICAgICBkZXN0c2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnSScpCisgICAgICAgIGV4ID0gbmRhcnJheShbOV0qZGVzdHNpemUsIHNoYXBlPVtkZXN0c2l6ZV0sIGZvcm1hdD0nQicpCisgICAgICAgIGRlc3RpdGVtcywgZGVzdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgJ0knLCBkZXN0c2l6ZSwgc2hhcGU9W10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtMiA9IG0uY2FzdCgnSScsIHNoYXBlPVtdKQorICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1kZXN0c2l6ZSwgZm10PSdJJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0wLCBzaGFwZT0oKSwgc3RyaWRlcz0oKSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWRlc3RpdGVtcywgY2FzdD1UcnVlKQorCisgICAgICAgICMgYXJyYXkuYXJyYXk6IHJvdW5kdHJpcCB0by9mcm9tIGJ5dGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDMxLCAnYXJyYXknKToKKyAgICAgICAgICAgIGV4ID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpCisKKyAgICAgICAgIyBuZGFycmF5OiByb3VuZHRyaXAgdG8vZnJvbSBieXRlcworICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCgzMSwgJ21lbW9yeXZpZXcnKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzMxXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIGl0ZXJfcm91bmR0cmlwKGV4LCBtLCBpdGVtcywgZm10KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jYXN0XzFEX05EKHNlbGYpOgorICAgICAgICAjIENhc3QgYmV0d2VlbiBDLWNvbnRpZ3VvdXMgYnVmZmVycy4gQXQgbGVhc3Qgb25lIGJ1ZmZlciBtdXN0CisgICAgICAgICMgYmUgMUQsIGF0IGxlYXN0IG9uZSBmb3JtYXQgbXVzdCBiZSAnYycsICdiJyBvciAnQicuCisgICAgICAgIGZvciBfdHNoYXBlIGluIGdlbmNhc3RzaGFwZXMoKToKKyAgICAgICAgICAgIGZvciBjaGFyIGluIGZtdGRpY3RbJ0AnXToKKyAgICAgICAgICAgICAgICB0Zm10ID0gKCcnLCAnQCcpW3JhbmRyYW5nZSgyKV0gKyBjaGFyCisgICAgICAgICAgICAgICAgdHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUodGZtdCkKKyAgICAgICAgICAgICAgICBuID0gcHJvZChfdHNoYXBlKSAqIHRzaXplCisgICAgICAgICAgICAgICAgb2JqID0gJ21lbW9yeXZpZXcnIGlmIGlzX2J5dGVfZm9ybWF0KHRmbXQpIGVsc2UgJ2J5dGVmbXQnCisgICAgICAgICAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobiwgb2JqKToKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gW25dIGlmIG4gPiAwIGVsc2UgW10KKyAgICAgICAgICAgICAgICAgICAgdHNoYXBlID0gX3RzaGFwZSArIFtzaXplXQorCisgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICAgICAgICAgIHRpdGVtcywgdHNoYXBlID0gY2FzdF9pdGVtcyhleCwgdGZtdCwgdHNpemUsIHNoYXBlPXRzaGFwZSkKKworICAgICAgICAgICAgICAgICAgICBpZiB0aXRlbXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCB0Zm10LCB0c2hhcGUpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiB0aXRlbXMgPT0gJ25hbic6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIE5hTnMgaW4gbGlzdHMgYXJlIGEgcmVjaXBlIGZvciB0cm91YmxlLgorCisgICAgICAgICAgICAgICAgICAgICMgMUQgLT4gTkQKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KHRpdGVtcywgc2hhcGU9dHNoYXBlLCBmb3JtYXQ9dGZtdCkKKworICAgICAgICAgICAgICAgICAgICBtMiA9IG0uY2FzdCh0Zm10LCBzaGFwZT10c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIG5kaW0gPSBsZW4odHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gbmQuc3RyaWRlcworICAgICAgICAgICAgICAgICAgICBsc3QgPSBuZC50b2xpc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT10c2l6ZSwgZm10PXRmbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9dHNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAgICAgICAgICAgICAjIE5EIC0+IDFECisgICAgICAgICAgICAgICAgICAgIG0zID0gbTIuY2FzdChmbXQpCisgICAgICAgICAgICAgICAgICAgIG00ID0gbTIuY2FzdChmbXQsIHNoYXBlPXNoYXBlKQorICAgICAgICAgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gZXguc3RyaWRlcworICAgICAgICAgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0zLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG00LCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2xpc3Qoc2VsZik6CisKKyAgICAgICAgIyBNb3N0IHRvbGlzdCgpIHRlc3RzIGFyZSBpbiBzZWxmLnZlcmlmeSgpIGV0Yy4KKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2gnLCBsaXN0KHJhbmdlKC02LCA2KSkpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorCisgICAgICAgIGEgPSBhWzI6OjNdCisgICAgICAgIG0gPSBtWzI6OjNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqMyo1KjcqMTEpKSwgc2hhcGU9WzExLDIsNywzLDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgICAgICBleCA9IG5kYXJyYXkoWygyLCA1KSwgKDcsIDExKV0sIHNoYXBlPVsyXSwgZm9ybWF0PSdsaCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2InMTIzNDUnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9InMiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiImEiLGIiYiIsYiJjIixiImQiLGIiZSIsYiJmIl0sIHNoYXBlPVsyLDNdLCBmb3JtYXQ9J3MnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS50b2xpc3QpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlcHIoc2VsZik6CisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVhcnJheSg5KSkKKyAgICAgICAgciA9IG0uX19yZXByX18oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8bWVtb3J5IikpCisKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgciA9IG0uX19yZXByX18oKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCI8cmVsZWFzZWQiKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2VxdWVuY2Uoc2VsZik6CisKKyAgICAgICAgZm9yIGZtdCBpbiAoJ2QnLCAnZicpOgorICAgICAgICAgICAgaW5mID0gZmxvYXQoM2U0MDApCisgICAgICAgICAgICBleCA9IGFycmF5LmFycmF5KGZtdCwgWzEuMCwgaW5mLCAzLjBdKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDEuMCwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oNWU3MDAsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKDMuMCwgbSkKKworICAgICAgICBleCA9IG5kYXJyYXkoOS4wLCBbXSwgZm9ybWF0PSdmJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIjkuMCBpbiBtIiwgbG9jYWxzKCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2luZGV4KHNlbGYpOgorCisgICAgICAgICMgbmRpbSA9IDAKKyAgICAgICAgZXggPSBuZGFycmF5KDEyLjUsIHNoYXBlPVtdLCBmb3JtYXQ9J2QnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMTIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy4uLl0sIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsuLi5dLCBleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorCisgICAgICAgIGV4ID0gbmRhcnJheSgoMSwyLDMpLCBzaGFwZT1bXSwgZm9ybWF0PSdpaWknKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisKKyAgICAgICAgIyByYW5nZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDIqKjY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDIuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwLjApCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIC04KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCA4KQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Fzc2lnbihzZWxmKToKKworICAgICAgICAjIG5kaW0gPSAwCisgICAgICAgIGV4ID0gbmRhcnJheSgxMi41LCBzaGFwZT1bXSwgZm9ybWF0PSdmJywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWygpXSA9IDIyLjUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMjIuNSkKKyAgICAgICAgbVsuLi5dID0gMjMuNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAyMy41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDI0LjcpCisKKyAgICAgICAgIyByZWFkLW9ubHkKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDIsIDEwKQorCisgICAgICAgICMgcmFuZ2UKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoNykpLCBzaGFwZT1bN10sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCAyKio2NCwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAyLjAsIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAuMCwgMTEpCisKKyAgICAgICAgIyBvdXQgb2YgYm91bmRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sIC04LCAyMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgOCwgMjUpCisKKyAgICAgICAgIyBwYWNrX3NpbmdsZSgpIHN1Y2Nlc3M6CisgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgaWYgZm10ID09ICdjJyBvciBmbXQgPT0gJz8nOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaSA9IHJhbmRyYW5nZSgtMywgMykKKyAgICAgICAgICAgIG1baV0gPSA4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1baV0sIDgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1baV0sIGV4W2ldKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxJywgYicyJywgYiczJ10sIHNoYXBlPVszXSwgZm9ybWF0PSdjJywKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVsyXSA9IGInOScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBiJzknKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbVHJ1ZSwgRmFsc2UsIFRydWVdLCBzaGFwZT1bM10sIGZvcm1hdD0nPycsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bMV0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgVHJ1ZSkKKworICAgICAgICAjIHBhY2tfc2luZ2xlKCkgZXhjZXB0aW9uczoKKyAgICAgICAgbmQgPSBuZGFycmF5KFtiJ3gnXSwgc2hhcGU9WzFdLCBmb3JtYXQ9J2MnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMTAwKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBmb3IgZm10LCBfcmFuZ2UgaW4gZm10ZGljdFsnQCddLml0ZW1zKCk6CisgICAgICAgICAgICBpZiAoZm10ID09ICc/Jyk6ICMgUHlPYmplY3RfSXNUcnVlKCkgYWNjZXB0cyBhbnl0aGluZworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBmbXQgPT0gJ2MnOiAjIHNwZWNpYWwgY2FzZSB0ZXN0ZWQgYWJvdmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbTIgPSBtMS5jYXN0KGZtdCkKKyAgICAgICAgICAgIGxvLCBoaSA9IF9yYW5nZQorICAgICAgICAgICAgaWYgZm10ID09ICdkJyBvciBmbXQgPT0gJ2YnOgorICAgICAgICAgICAgICAgIGxvLCBoaSA9IC0yKioxMDI0LCAyKioxMDI0CisgICAgICAgICAgICBpZiBmbXQgIT0gJ1AnOiAjIFB5TG9uZ19Bc1ZvaWRQdHIoKSBhY2NlcHRzIG5lZ2F0aXZlIG51bWJlcnMKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgbG8tMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCAieHl6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBoaSkKKworICAgICAgICAjIGludmFsaWQgaXRlbQorICAgICAgICBtMiA9IG0xLmNhc3QoJ2MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtMi5fX3NldGl0ZW1fXywgMCwgYidceGZmXHhmZicpCisKKyAgICAgICAgIyBmb3JtYXQgbm90IGltcGxlbWVudGVkCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEpKSwgc2hhcGU9WzFdLCBmb3JtYXQ9InhMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxMjM0NSddLCBzaGFwZT1bMV0sIGZvcm1hdD0icyIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMSkKKworICAgICAgICAjIE5vdCBpbXBsZW1lbnRlZDogbXVsdGlkaW1lbnNpb25hbCBzdWItdmlld3MKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCBbMiwgM10pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NsaWNlKHNlbGYpOgorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICAjIHplcm8gc3RlcAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCBzbGljZSgwLDIsMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMiwwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIGludmFsaWQgc2xpY2Uga2V5CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCisKKyAgICAgICAgIyBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMiwxKSwgc2xpY2UoMCwyLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMiwxKSwgc2xpY2UoMCwyLDEpKSwgYnl0ZWFycmF5KFsxLDJdKSkKKworICAgICAgICAjIGludmFsaWQgc2xpY2UgdHVwbGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoc2xpY2UoMCwyLDEpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgKHNsaWNlKDAsMiwxKSwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgcnZhbHVlIGlzIG5vdCBhbiBleHBvcnRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgWzFdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMgc2xpY2UgYXNzaWdubWVudAorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bLTFdLCBvZmZzZXQ9MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfGZsYWdzKQorICAgICAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDI0KSksIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyhleDEpCisgICAgICAgICAgICBtMiA9IG1lbW9yeXZpZXcoZXgyKQorCisgICAgICAgICAgICBleDFbMjo1XSA9IGV4MVsyOjVdCisgICAgICAgICAgICBtMVsyOjVdID0gbTJbMjo1XQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgIGV4MVsxOjNdWzo6LTFdID0gZXgyWzA6Ml1bOjoxXQorICAgICAgICAgICAgbTFbMTozXVs6Oi0xXSA9IG0yWzA6Ml1bOjoxXQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICAgICAgICAgIGV4MVs0OjE6LTJdWzo6LTFdID0gZXgxWzE6NDoyXVs6OjFdCisgICAgICAgICAgICBtMVs0OjE6LTJdWzo6LTFdID0gbTFbMTo0OjJdWzo6MV0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19hcnJheShzZWxmKToKKworICAgICAgICBkZWYgY21wdGVzdCh0ZXN0Y2FzZSwgYSwgYiwgbSwgc2luZ2xlaXRlbSk6CisgICAgICAgICAgICBmb3IgaSwgXyBpbiBlbnVtZXJhdGUoYSk6CisgICAgICAgICAgICAgICAgYWkgPSBhW2ldCisgICAgICAgICAgICAgICAgbWkgPSBtW2ldCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYWksIG1pKQorICAgICAgICAgICAgICAgIGFbaV0gPSBzaW5nbGVpdGVtCisgICAgICAgICAgICAgICAgaWYgc2luZ2xlaXRlbSAhPSBhaToKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0Tm90RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICAgICAgICAgIG1baV0gPSBzaW5nbGVpdGVtCisgICAgICAgICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoYSwgbSkKKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChiLCBtKQorICAgICAgICAgICAgICAgIGFbaV0gPSBhaQorICAgICAgICAgICAgICAgIG1baV0gPSBtaQorCisgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgZm9yIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gaW4gaXRlcl9mb3JtYXQobiwgJ2FycmF5Jyk6CisgICAgICAgICAgICAgICAgZm9yIGxzbGljZSBpbiBnZW5zbGljZXMobik6CisgICAgICAgICAgICAgICAgICAgIGZvciByc2xpY2UgaW4gZ2Vuc2xpY2VzKG4pOgorCisgICAgICAgICAgICAgICAgICAgICAgICBhID0gYXJyYXkuYXJyYXkoZm10LCBpdGVtcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYS50b2J5dGVzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgbGVuKGEpKQorCisgICAgICAgICAgICAgICAgICAgICAgICBjbXB0ZXN0KHNlbGYsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2VyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfcmVzaXplID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsID0gYVtsc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXIgPSBhW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2xzbGljZV0gPSBhW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX3Jlc2l6ZSA9IGxlbihhbCkgIT0gbGVuKGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1bbHNsaWNlXSA9IG1bcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGF2ZV9yZXNpemU6ICMgbWVtb3J5dmlldyBjYW5ub3QgY2hhbmdlIHNoYXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtX2VyciwgVmFsdWVFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbV9lcnIgb3IgYXJyYXlfZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobV9lcnIsIGFycmF5X2VycikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgYS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBhLnRvYnl0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXB0ZXN0KHNlbGYsIGEsIGIsIG0sIHNpbmdsZWl0ZW0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfc3BlY2lhbF9jYXNlcyhzZWxmKToKKworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0wnLCBbMSwgMiwgM10pCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnTCcsIFsxLCAyLCA3XSkKKworICAgICAgICAjIE9yZGVyaW5nIGNvbXBhcmlzb25zIHJhaXNlOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhiKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ19fbHRfXycsICdfX2xlX18nLCAnX19ndF9fJywgJ19fZ2VfXycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHYsIGF0dHIpKHcpLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihhLCBhdHRyKSh2KSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICAgICAgIyBSZWxlYXNlZCB2aWV3cyBjb21wYXJlIGVxdWFsIHRvIHRoZW1zZWx2ZXM6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHYucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHYpCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdy5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisKKyAgICAgICAgIyBPcGVyYW5kIGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyIHByb3RvY29sOgorICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIFsxLCAyLCAzXSkKKworICAgICAgICAjIE5hTnMKKyAgICAgICAgbmQgPSBuZGFycmF5KFsoMCwgMCldLCBzaGFwZT1bMV0sIGZvcm1hdD0nbCB4IGQgeCcsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBuZFswXSA9ICgtMSwgZmxvYXQoJ25hbicpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG1lbW9yeXZpZXcobmQpLCBuZCkKKworICAgICAgICAjIERlcGVuZHMgb24gaXNzdWUgIzE1NjI1OiB0aGUgc3RydWN0IG1vZHVsZSBkb2VzIG5vdCB1bmRlcnN0YW5kICd1Jy4KKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCd1JywgJ3h5eicpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBhKQorCisgICAgICAgICMgU29tZSBjdHlwZXMgZm9ybWF0IHN0cmluZ3MgYXJlIHVua25vd24gdG8gdGhlIHN0cnVjdCBtb2R1bGUuCisgICAgICAgIGlmIGN0eXBlczoKKyAgICAgICAgICAgICMgZm9ybWF0OiAiVHs+bDp4Oj5sOnk6fSIKKyAgICAgICAgICAgIGNsYXNzIEJFUG9pbnQoY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY3R5cGVzLmNfbG9uZyksICgieSIsIGN0eXBlcy5jX2xvbmcpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgcG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHBvaW50LCBhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgYS50b2xpc3QpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbmRpbV96ZXJvKHNlbGYpOgorCisgICAgICAgIG5kMSA9IG5kYXJyYXkoMTcyOSwgc2hhcGU9W10sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KDE3MjksIHNoYXBlPVtdLCBmb3JtYXQ9J0wnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMSwgdykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuX19uZV9fKHcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHcuX19uZV9fKHYpKQorCisgICAgICAgIHdbKCldID0gMTcyOAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDEsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2Ll9fZXFfXyh3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3Ll9fZXFfXyh2KSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgbVs5XSA9IDEwMAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0sIG5kKQorCisgICAgICAgICMgc3RydWN0IG1vZHVsZTogZXF1YWwKKyAgICAgICAgbmQxID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J0xmNXMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0naGY1cycsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDEsIHcpCisKKyAgICAgICAgIyBzdHJ1Y3QgbW9kdWxlOiBub3QgZXF1YWwKKyAgICAgICAgbmQxID0gbmRhcnJheSgoMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J0xmNXMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KCgtMTcyOSwgMS4yLCBiJzEyMzQ1JyksIHNoYXBlPVtdLCBmb3JtYXQ9J2hmNXMnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQxLCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbmRpbV9vbmUoc2VsZik6CisKKyAgICAgICAgIyBjb250aWd1b3VzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIDcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBjb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9JzxpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIDcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSc+aCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBub24tY29udGlndW91cworICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSchaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9JzxsJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzLCBzdWJvZmZzZXRzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSdoICAwYycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9Jz4gIGgnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDJbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Wzo6Ml0sIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3Wzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodls6Oi0xXSwgd1s6Oi0yXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV96ZXJvX3NoYXBlKHNlbGYpOgorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstOTAwLCAtOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9Jz0gaDBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTkwMCwgLTk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSdAICAgaScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfemVyb19zdHJpZGVzKHNlbGYpOgorCisgICAgICAgICMgemVybyBzdHJpZGVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMCwgOTAwLCA5MDAsIDkwMF0sIHNoYXBlPVs0XSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWzkwMF0sIHNoYXBlPVs0XSwgc3RyaWRlcz1bMF0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDkwMCwgOTAwKV0qNCwgc2hhcGU9WzRdLCBmb3JtYXQ9J0AgTGknKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoOTAwLCA5MDApXSwgc2hhcGU9WzRdLCBzdHJpZGVzPVswXSwgZm9ybWF0PSchTCAgaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfcmFuZG9tX2Zvcm1hdHMoc2VsZik6CisKKyAgICAgICAgIyByYW5kb20gc2luZ2xlIGNoYXJhY3RlciBuYXRpdmUgZm9ybWF0cworICAgICAgICBuID0gMTAKKyAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFsnQG0nXToKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIHNpbmdsZWl0ZW0gPSByYW5kaXRlbXMobiwgJ21lbW9yeXZpZXcnLCAnQCcsIGNoYXIpCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbl0sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICAgICAgICAgICAgICBuZCA9IG5kWzo6LTNdCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgICAgICAjIHJhbmRvbSBmb3JtYXRzCisgICAgICAgIG4gPSAxMAorICAgICAgICBmb3IgXyBpbiByYW5nZSgxMDApOgorICAgICAgICAgICAgZm10LCBpdGVtcywgc2luZ2xlaXRlbSA9IHJhbmRpdGVtcyhuKQorICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W25dLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgICAgICAgICAgICAgbmQgPSBuZFs6Oi0zXQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1fYyhzZWxmKToKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMCwgMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMCwgMSwgMildKjMwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPWYgcSB4eEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoLTEuMiwgMSwgMildKjMwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPCBmIDJRJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMCwgMSwgMildKjIxLCBzaGFwZT1bMywgN10sIGZvcm1hdD0nISBiIEIgeEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoMCwgMSwgMildKjIxLCBzaGFwZT1bNywgM10sIGZvcm1hdD0nPSBReCBsIHh4TCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdsJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9mb3J0cmFuKHNlbGYpOgorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDAsIDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IHZhbHVlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMioqNjQtMSwgLTEpXSo2LCBzaGFwZT1bMiwgM10sIGZvcm1hdD0nPVFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KFsoLTEsIDIqKjY0LTEpXSo2LCBzaGFwZT1bMiwgM10sIGZvcm1hdD0nPXFRJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9JzBsbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAyLCAzXSwgZm9ybWF0PSdAYicsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9taXhlZChzZWxmKToKKworICAgICAgICAjIG1peGVkIEMvRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIGxzdDEgPSBsaXN0KHJhbmdlKC0xNSwgMTUpKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdsJywgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBtaXhlZCBDL0ZvcnRyYW4gY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBsc3QxID0gWygtMy4zLCAtMjIsIGIneCcpXSozMAorICAgICAgICBsc3QxWzVdID0gKC0yLjIsIC0yMiwgYid4JykKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisgICAgICAgIG5kMSA9IG5kYXJyYXkobHN0MSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2QgYiBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nZCBoIGMnLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCB2YWx1ZXMsIG5vbi1jb250aWd1b3VzCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nQEknKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0knKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzYW1lIHZhbHVlcywgbm9uLWNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIqKjMxLTEsIC0yKiozMSldKjIyLCBzaGFwZT1bMTEsIDJdLCBmb3JtYXQ9Jz1paScpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKiozMS0xLCAtMioqMzEpXSoyMiwgc2hhcGU9WzExLCAyXSwgZm9ybWF0PSc+aWknKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nQicpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIsIGInMTIzJyldKjMwLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0nYjNzJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygyLCBiJzEyMycpXSozMCwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J2kzcycpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3plcm9fc2hhcGUoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzAsIDMsIDJdLCBmb3JtYXQ9J2knKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDAsIDJdLCBmb3JtYXQ9J0BpJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMCwgMywgMl0sIGZvcm1hdD0naScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMCwgMl0sIGZvcm1hdD0nQGknKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3plcm9fc3RyaWRlcyhzZWxmKToKKworICAgICAgICAjIHplcm8gc3RyaWRlcworICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDBdKjgwLCBzaGFwZT1bNCwgNSwgNF0sIGZvcm1hdD0nQEwnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFs5MDBdLCBzaGFwZT1bNCwgNSwgNF0sIHN0cmlkZXM9WzAsIDAsIDBdLCBmb3JtYXQ9J0wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudG9saXN0KCksIHcudG9saXN0KCkpCisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbKDEsIDIpXSoxMCwgc2hhcGU9WzIsIDVdLCBmb3JtYXQ9Jz1sUScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygxLCAyKV0sIHNoYXBlPVsyLCA1XSwgc3RyaWRlcz1bMCwgMF0sIGZvcm1hdD0nPGxRJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9zdWJvZmZzZXRzKHNlbGYpOgorCisgICAgICAgICMgc3Vib2Zmc2V0cworICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0BJJykKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdJJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjQwLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nPVFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZXgxWzJdWzddID0gKDEsIC0yKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorCisgICAgICAgIGV4MiA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjQwLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nPlFxJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MlsyXVs3XSA9ICgxLCAtMikKKyAgICAgICAgbmQyID0gZXgyWzE6MzoxLCA6Oi0yXQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdiJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMioqOC0xLCAtMSldKjQwLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nQmInLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgbmQxID0gZXgxWzE6MjosIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjgtMSwgLTEpXSo0MCwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J0JiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MjosIDo6LTJdCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBmb3JtYXQKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdpJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdASScsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzLCBkaWZmZXJlbnQgZm9ybWF0LCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWyhiJ2hlbGxvJywgYicnLCAxKV0qMjcsIHNoYXBlPVszLCAzLCAzXSwgZm9ybWF0PSc1czBzUCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBleDFbMV1bMl1bMl0gPSAoYidzdXNoaScsIGInJywgMSkKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKGInaGVsbG8nLCBiJycsIDEpXSoyNywgc2hhcGU9WzMsIDMsIDNdLCBmb3JtYXQ9JzVzMHNQJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MVsxXVsyXVsyXSA9IChiJ3N1c2hpJywgYicnLCAxKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKworICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgaW5pdGlhbGl6ZSBtaXhlZCBDL0ZvcnRyYW4gKyBzdWJvZmZzZXRzCisgICAgICAgIGxzdDEgPSBsaXN0KHJhbmdlKC0xNSwgMTUpKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGwnLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLCBmbGFncz1ORF9GT1JUUkFOfE5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBpbml0aWFsaXplIG1peGVkIEMvRm9ydHJhbiArIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbHN0MSA9IFsoYidzYXNoaW1pJywgYidzbGljZWQnLCAyMC4wNSldKjMwCisgICAgICAgIGxzdDFbMTFdID0gKGIncmFtZW4nLCBiJ3NwaWN5JywgOS40NSkKKyAgICAgICAgbHN0MiA9IHRyYW5zcG9zZShsc3QxLCBbMywgMiwgNV0pCisKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPCAxMHAgOXAgZCcsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nPiAxMHAgOXAgZCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTnxORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX25vdF9lcXVhbChzZWxmKToKKworICAgICAgICAjIGl0ZW1zIG5vdCBlcXVhbAorICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIFsnPScsICc8JywgJz4nLCAnISddOgorICAgICAgICAgICAgeCA9IG5kYXJyYXkoWzIqKjYzXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLCBmb3JtYXQ9Ynl0ZW9yZGVyKydRJykKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KFsyKio2M10qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwgZm9ybWF0PWJ5dGVvcmRlcisnUScsCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICAgICAgeVsyXVszXVsxXVsxXVsxXSA9IDEKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgICAgICBiID0gbWVtb3J5dmlldyh5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiLCB4KQorCisgICAgICAgICAgICB4ID0gbmRhcnJheShbKDIqKjYzLCAyKiozMSwgMioqMTUpXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWJ5dGVvcmRlcisnUUxIJykKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KFsoMioqNjMsIDIqKjMxLCAyKioxNSldKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Ynl0ZW9yZGVyKydRTEgnLCBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICAgICAgeVsyXVszXVsxXVsxXVsxXSA9ICgxLCAxLCAxKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGIsIHgpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NoZWNrX3JlbGVhc2VkKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgICMgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1vcnl2aWV3LCBtKQorICAgICAgICAjIG1lbW9yeXZpZXcuY2FzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgJ2MnKQorICAgICAgICAjIGdldGJ1ZmZlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kYXJyYXksIG0pCisgICAgICAgICMgbWVtb3J5dmlldy50b2xpc3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLnRvbGlzdCkKKyAgICAgICAgIyBtZW1vcnl2aWV3LnRvYnl0ZXMoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLnRvYnl0ZXMpCisgICAgICAgICMgc2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXZhbCwgIjEuMCBpbiBtIiwgbG9jYWxzKCkpCisgICAgICAgICMgc3Vic2NyaXB0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgICMgYXNzaWdubWVudAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgIGZvciBhdHRyIGluICgnb2JqJywgJ25ieXRlcycsICdyZWFkb25seScsICdpdGVtc2l6ZScsICdmb3JtYXQnLCAnbmRpbScsCisgICAgICAgICAgICAgICAgICAgICAnc2hhcGUnLCAnc3RyaWRlcycsICdzdWJvZmZzZXRzJywgJ2NfY29udGlndW91cycsCisgICAgICAgICAgICAgICAgICAgICAnZl9jb250aWd1b3VzJywgJ2NvbnRpZ3VvdXMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRhdHRyaWJ1dGVfXywgYXR0cikKKworICAgICAgICAjIHJpY2hjb21wYXJlCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnZCcsIFsxLjEsIDIuMiwgMy4zXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIG0yKQorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtMSwgbTIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobTEsIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIG0xKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2J5dGVzKHNlbGYpOgorICAgICAgICAjIE1hbnkgaW1wbGljaXQgdGVzdHMgYXJlIGFscmVhZHkgaW4gc2VsZi52ZXJpZnkoKS4KKworICAgICAgICB0ID0gKC01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5KQorCisgICAgICAgIG5kID0gbmRhcnJheSh0LCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdF0sIHNoYXBlPVsxXSwgZm9ybWF0PSc+aFFpTGwnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbdCBmb3IgXyBpbiByYW5nZSgxMildLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9Jz1oUWlMbCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0IGZvciBfIGluIHJhbmdlKDEyMCldLCBzaGFwZT1bNSwyLDIsMywyXSwKKyAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0nPGhRaUxsJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICAjIFVua25vd24gZm9ybWF0cyBhcmUgaGFuZGxlZDogdG9ieXRlcygpIHB1cmVseSBkZXBlbmRzIG9uIGl0ZW1zaXplLgorICAgICAgICBpZiBjdHlwZXM6CisgICAgICAgICAgICAjIGZvcm1hdDogIlR7Pmw6eDo+bDp5On0iCisgICAgICAgICAgICBjbGFzcyBCRVBvaW50KGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGN0eXBlcy5jX2xvbmcpLCAoInkiLCBjdHlwZXMuY19sb25nKV0KKyAgICAgICAgICAgIHBvaW50ID0gQkVQb2ludCgxMDAsIDIwMCkKKyAgICAgICAgICAgIGEgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnRvYnl0ZXMoKSwgYnl0ZXMocG9pbnQpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19nZXRfY29udGlndW91cyhzZWxmKToKKyAgICAgICAgIyBNYW55IGltcGxpY2l0IHRlc3RzIGFyZSBhbHJlYWR5IGluIHNlbGYudmVyaWZ5KCkuCisKKyAgICAgICAgIyBubyBidWZmZXIgaW50ZXJmYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIHt9LCBQeUJVRl9SRUFELCAnRicpCisKKyAgICAgICAgIyB3cml0YWJsZSByZXF1ZXN0IHRvIHJlYWQtb25seSBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBiJ3gnLCBQeUJVRl9XUklURSwgJ0MnKQorCisgICAgICAgICMgd3JpdGFibGUgcmVxdWVzdCB0byBub24tY29udGlndW91cyBvYmplY3QKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzJdLCBzdHJpZGVzPVsyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdBJykKKworICAgICAgICAjIHNjYWxhciwgcmVhZC1vbmx5IHJlcXVlc3QgZnJvbSByZWFkLW9ubHkgZXhwb3J0ZXIKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCA5KQorCisgICAgICAgICMgc2NhbGFyLCByZWFkLW9ubHkgcmVxdWVzdCBmcm9tIHdyaXRhYmxlIGV4cG9ydGVyCisgICAgICAgIG5kID0gbmRhcnJheSg5LCBzaGFwZT0oKSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgIyBzY2FsYXIsIHdyaXRhYmxlIHJlcXVlc3QKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG5kWygpXSA9IDkKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgICAgIG1bKCldID0gMTAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFsoKV0sIDEwKQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgW10pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoOCkpLCBzaGFwZT1bMiwgMCwgN10sIGZvcm1hdD0iTCIsCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIFtbXSwgW11dKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJoIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVszXSwgZm9ybWF0PSJiIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cworICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMSwgMjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWzFdLCAzKQorCisgICAgICAgIG5kID0gbmRbOjotMV0KKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMSwgMjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWzFdLCAxKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIGNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1dSSVRFLCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsICdGJykKKyAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sCisgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRXxORF9GT1JUUkFOKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0MnKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzIGlucHV0CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcikKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgICMgZmxhZ3MKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsMyw0LDVdLCBzaGFwZT1bM10sIHN0cmlkZXM9WzJdKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsICdDJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY19jb250aWd1b3VzKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zZXJpYWxpemluZyhzZWxmKToKKworICAgICAgICAjIEMtY29udGlndW91cworICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCdpJykKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdpJywgWzEsMiwzLDQsNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KnNpemUpCisgICAgICAgIGJ1Zi5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBiKQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCdMJykKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZm9ybWF0PSJMIikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKjMqMipzaXplKQorICAgICAgICBidWYucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYikKKworICAgICAgICAjIEZvcnRyYW4gY29udGlndW91cywgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgICAgI3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0wnKQorICAgICAgICAjbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSwgZm9ybWF0PSJMIiwKKyAgICAgICAgIyAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAjbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICNidWYgPSBpby5CeXRlc0lPKG0pCisgICAgICAgICNiID0gYnl0ZWFycmF5KDIqMyoyKnNpemUpCisgICAgICAgICNidWYucmVhZGludG8oYikKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2hhc2goc2VsZik6CisKKyAgICAgICAgIyBieXRlcyBleHBvcnRlcgorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorICAgICAgICBtID0gbWVtb3J5dmlldyhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYiksIGhhc2gobSkpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMKKyAgICAgICAgbWMgPSBtLmNhc3QoJ2MnLCBzaGFwZT1bMyw0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1jKSwgaGFzaChiKSkKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzCisgICAgICAgIG14ID0gbVs6Oi0yXQorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpWzo6LTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobXgpLCBoYXNoKGIpKQorCisgICAgICAgICMgRm9ydHJhbiBjb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLDIsNV0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2gobmQpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwgc2xpY2UKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsMiw1XSkKKyAgICAgICAgeCA9IG5kWzo6MiwgOjosIDo6LTFdCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaCh4KSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsIHNsaWNlIHdpdGggc3Vib2Zmc2V0cworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMiw1LDNdLCBmbGFncz1ORF9QSUwpCisgICAgICAgIHggPSBuZFs6OjIsIDo6LCA6Oi0xXQorICAgICAgICBtID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goeCkpCisKKyAgICAgICAgIyBub24tYnl0ZSBmb3JtYXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nTCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2gobmQudG9ieXRlcygpKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgtNiwgNikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J2gnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKG5kLnRvYnl0ZXMoKSkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3JlbGVhc2Uoc2VsZik6CisKKyAgICAgICAgIyBDcmVhdGUgcmUtZXhwb3J0ZXIgZnJvbSBnZXRidWZmZXIobWVtb3J5dmlldyksIHRoZW4gcmVsZWFzZSB0aGUgdmlldy4KKyAgICAgICAgYSA9IGJ5dGVhcnJheShbMSwyLDNdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhhKQorICAgICAgICBuZCA9IG5kYXJyYXkobSkgIyByZS1leHBvcnRlcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbS5yZWxlYXNlKQorICAgICAgICBkZWwgbmQKKyAgICAgICAgbS5yZWxlYXNlKCkKKworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG5kMSA9IG5kYXJyYXkobSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBuZDIgPSBuZGFycmF5KG5kMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKG5kMi5vYmosIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZDEsIG5kMgorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgICMgY2hhaW5lZCB2aWV3cworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIG5kID0gbmRhcnJheShtMikgIyByZS1leHBvcnRlcgorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0yLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZAorICAgICAgICBtMi5yZWxlYXNlKCkKKworICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhhKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIG5kMSA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbmQyID0gbmRhcnJheShuZDEsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhuZDIub2JqLCBtMikKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtMi5yZWxlYXNlKQorICAgICAgICBkZWwgbmQxLCBuZDIKKyAgICAgICAgbTIucmVsZWFzZSgpCisKKyAgICAgICAgIyBBbGxvdyBjaGFuZ2luZyBsYXlvdXQgd2hpbGUgYnVmZmVycyBhcmUgZXhwb3J0ZWQuCisgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIG5kLnB1c2goWzQsNSw2LDcsOF0sIHNoYXBlPVs1XSkgIyBtdXRhdGUgbmQKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIHggPSBtZW1vcnl2aWV3KG0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9saXN0KCksIG0xLnRvbGlzdCgpKQorCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KG0yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkudG9saXN0KCksIG0yLnRvbGlzdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICBtMi5yZWxlYXNlKCkKKyAgICAgICAgeS5yZWxlYXNlKCkKKworICAgICAgICBuZC5wb3AoKSAjIHBvcCB0aGUgY3VycmVudCB2aWV3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgZGVsIG5kCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICB4LnJlbGVhc2UoKQorCisgICAgICAgICMgSWYgbXVsdGlwbGUgbWVtb3J5dmlld3Mgc2hhcmUgdGhlIHNhbWUgbWFuYWdlZCBidWZmZXIsIGltcGxpY2l0CisgICAgICAgICMgcmVsZWFzZSgpIGluIHRoZSBjb250ZXh0IG1hbmFnZXIncyBfX2V4aXRfXygpIG1ldGhvZCBzaG91bGQgc3RpbGwKKyAgICAgICAgIyB3b3JrLgorICAgICAgICBkZWYgY2F0Y2gyMihiKToKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyBtMjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xWzBdLCBvcmQoYicxJykpCisKKyAgICAgICAgeCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwyLDNdLCBmb3JtYXQ9J2wnKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeCkKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG06CisgICAgICAgICAgICBjYXRjaDIyKG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMDoxXS50b2xpc3QoKSwgW1tbMCwgMSwgMl0sIFszLCA0LCA1XV1dKQorCisgICAgICAgICMgVGVzdCBnYXJiYWdlIGNvbGxlY3Rpb24uCisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUkVESVJFQ1QpOgorICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShtMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh5KSBhcyBtMjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHkKKyAgICAgICAgICAgICAgICAgICAgeiA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG0zOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTMpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0yKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTJbMV0sIG9yZChiJzInKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTNbMl0sIG9yZChiJzMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBtMworICAgICAgICAgICAgICAgICAgICBkZWwgbTIKKyAgICAgICAgICAgICAgICBkZWwgbTEKKworICAgICAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbTE6CisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShtMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh5KSBhcyBtMjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHkKKyAgICAgICAgICAgICAgICAgICAgeiA9IG5kYXJyYXkobTIsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHopIGFzIG0zOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTEpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0yKQorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTJbMV0sIG9yZChiJzInKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTNbMl0sIG9yZChiJzMnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBtMSwgbTIsIG0zCisKKyAgICAgICAgIyBtZW1vcnl2aWV3LnJlbGVhc2UoKSBmYWlscyBpZiB0aGUgdmlldyBoYXMgZXhwb3J0ZWQgYnVmZmVycy4KKyAgICAgICAgeCA9IGJ5dGVhcnJheShiJzEyMycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG06CisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KG0pCisgICAgICAgICAgICAgICAgbVswXSA9PSBvcmQoYicxJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVkaXJlY3Qoc2VsZik6CisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLjAgKiB4IGZvciB4IGluIHJhbmdlKDEyKV0sIHNoYXBlPVsxMl0sIGZvcm1hdD0nZCcpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnZCcsIFsxLjAgKiB4IGZvciB4IGluIHJhbmdlKDEyKV0pCisKKyAgICAgICAgZm9yIHggaW4gKG5kLCBhKToKKyAgICAgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCB6KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeFsxOjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHlbMTozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB6WzE6M10pCisgICAgICAgICAgICBkZWwgeSwgegorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHhbMTozXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZnJvbV9zdGF0aWNfZXhwb3J0ZXIoc2VsZik6CisKKyAgICAgICAgZm10ID0gJ0InCisgICAgICAgIGxzdCA9IFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExXQorCisgICAgICAgICMgZXhjZXB0aW9ucworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN0YXRpY2FycmF5LCAxLCAyLCAzKQorCisgICAgICAgICMgdmlldy5vYmo9PXgKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi52ZXJpZnkoeSwgb2JqPXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeVtpXSwgaSkKKyAgICAgICAgZGVsIHgKKyAgICAgICAgZGVsIHkKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBkZWwgeQorICAgICAgICBkZWwgeAorCisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeikKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXosCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHgpCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj14LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgICAgICMgdmlldy5vYmo9PU5VTEwKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYudmVyaWZ5KHksIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlbaV0sIGkpCisgICAgICAgIGRlbCB4CisgICAgICAgIGRlbCB5CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIGRlbCB5CisgICAgICAgIGRlbCB4CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeikKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXosCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KGxlZ2FjeV9tb2RlPVRydWUpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICAjIENsZWFybHkgc2V0dGluZyB2aWV3Lm9iaj09TlVMTCBpcyBpbmZlcmlvciwgc2luY2UgaXQKKyAgICAgICAgIyBtZXNzZXMgdXAgdGhlIHJlZGlyZWN0aW9uIGNoYWluOgorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB5KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eSwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZ2V0YnVmZmVyX3VuZGVmaW5lZChzZWxmKToKKworICAgICAgICAjIGdldGJ1ZmZlcnByb2MgZG9lcyBub3QgYWRoZXJlIHRvIHRoZSBuZXcgZG9jdW1lbnRhdGlvbgorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgWzNdLCBmbGFncz1ORF9HRVRCVUZfRkFJTHxORF9HRVRCVUZfVU5ERUZJTkVEKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisKKyAgICBkZWYgdGVzdF9pc3N1ZV83Mzg1KHNlbGYpOgorICAgICAgICB4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZsYWdzPU5EX0dFVEJVRl9GQUlMKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgeCkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEJ1ZmZlclByb3RvY29sKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCA1NWZiNjNhLi5jMzI5OTJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC0xLDE5ICsxLDIxIEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBidWlsdC1pbiBmdW5jdGlvbnMKIAotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncworaW1wb3J0IGFzdAoraW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBpbworaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCi1pbXBvcnQgYXN0Ci1pbXBvcnQgdHlwZXMKLWltcG9ydCBidWlsdGlucworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmNtcCwgVEVTVEZOLCB1bmxpbmssICBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBuZWcKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKIHRyeToKICAgICBpbXBvcnQgcHR5LCBzaWduYWwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTExMCw3ICsxMTIsMzAgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogCitkZWYgZmlsdGVyX2NoYXIoYXJnKToKKyAgICByZXR1cm4gb3JkKGFyZykgPiBvcmQoImQiKQorCitkZWYgbWFwX2NoYXIoYXJnKToKKyAgICByZXR1cm4gY2hyKG9yZChhcmcpKzEpCisKIGNsYXNzIEJ1aWx0aW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEhlbHBlciB0byBjaGVjayBwaWNrbGFiaWxpdHkKKyAgICBkZWYgY2hlY2tfaXRlcl9waWNrbGUoc2VsZiwgaXQsIHNlcSk6CisgICAgICAgIGl0b3JnID0gaXQKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcSkKKworICAgICAgICAjdGVzdCB0aGUgaXRlcmF0b3IgYWZ0ZXIgZHJvcHBpbmcgb25lIGZyb20gaXQKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKIAogICAgIGRlZiB0ZXN0X2ltcG9ydChzZWxmKToKICAgICAgICAgX19pbXBvcnRfXygnc3lzJykKQEAgLTI1NSw4ICsyODAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweGZmKSwgJ1x4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjaHIsIDE8PDI0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocihzeXMubWF4dW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKCgnXFxVJTA4eCcgJSAoc3lzLm1heHVuaWNvZGUpKS5lbmNvZGUoImFzY2lpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlLWVzY2FwZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cignXFxVMDAxMGZmZmYnLmVuY29kZSgiYXNjaWkiKSwgJ3VuaWNvZGUtZXNjYXBlJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2hyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweDAwMDBGRkZGKSwgIlxVMDAwMEZGRkYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNocigweDAwMDEwMDAwKSwgIlxVMDAwMTAwMDAiKQpAQCAtMzc4LDcgKzQwMiwxNSBAQAogICAgICAgICBmID0gRm9vKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpcihmKSA9PSBbImdhIiwgImthbiIsICJyb28iXSkKIAotICAgICAgICAjIGRpcihvYmpfX2Rpcl9fbm90X2xpc3QpCisgICAgICAgICMgZGlyKG9ial9fZGlyX190dXBsZSkKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKCJiIiwgImMiLCAiYSIpCisgICAgICAgIHJlcyA9IGRpcihGb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlcywgbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcyA9PSBbImEiLCAiYiIsICJjIl0pCisKKyAgICAgICAgIyBkaXIob2JqX19kaXJfX25vdF9zZXF1ZW5jZSkKICAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gNwpAQCAtMzkxLDYgKzQyMyw4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihzeXMuZXhjX2luZm8oKVsyXSkpLCA0KQogCisgICAgICAgICMgdGVzdCB0aGF0IG9iamVjdCBoYXMgYSBfX2Rpcl9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoW10uX19kaXJfXygpKSwgZGlyKFtdKSkKIAogICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXZtb2QoMTIsIDcpLCAoMSwgNSkpCkBAIC00MDAsMTAgKzQzNCwxMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGl2bW9kKC1zeXMubWF4c2l6ZS0xLCAtMSksIChzeXMubWF4c2l6ZSsxLCAwKSkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKDMuMjUsIDEuMCksICgzLjAsIDAuMjUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgtMy4yNSwgMS4wKSwgKC00LjAsIDAuNzUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgzLjI1LCAtMS4wKSwgKC00LjAsIC0wLjc1KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoLTMuMjUsIC0xLjApLCAoMy4wLCAtMC4yNSkpKQorICAgICAgICBmb3IgbnVtLCBkZW5vbSwgZXhwX3Jlc3VsdCBpbiBbICgzLjI1LCAxLjAsICgzLjAsIDAuMjUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuMjUsIDEuMCwgKC00LjAsIDAuNzUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMy4yNSwgLTEuMCwgKC00LjAsIC0wLjc1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0zLjI1LCAtMS4wLCAoMy4wLCAtMC4yNSkpXToKKyAgICAgICAgICAgIHJlc3VsdCA9IGRpdm1vZChudW0sIGRlbm9tKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChyZXN1bHRbMF0sIGV4cF9yZXN1bHRbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHJlc3VsdFsxXSwgZXhwX3Jlc3VsdFsxXSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpdm1vZCkKIApAQCAtNTE4LDYgKzU1NSwzOSBAQAogICAgICAgICAgICAgZGVsIGxbJ19fYnVpbHRpbnNfXyddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGcsIGwpLCAoeydhJzogMX0sIHsnYic6IDJ9KSkKIAorICAgIGRlZiB0ZXN0X2V4ZWNfZ2xvYmFscyhzZWxmKToKKyAgICAgICAgY29kZSA9IGNvbXBpbGUoInByaW50KCdIZWxsbyBXb3JsZCEnKSIsICIiLCAiZXhlYyIpCisgICAgICAgICMgbm8gYnVpbHRpbiBmdW5jdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5hbWVFcnJvciwgIm5hbWUgJ3ByaW50JyBpcyBub3QgZGVmaW5lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiB7fX0pCisgICAgICAgICMgX19idWlsdGluc19fIG11c3QgYmUgYSBtYXBwaW5nIHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IDEyM30pCisKKyAgICAgICAgIyBubyBfX2J1aWxkX2NsYXNzX18gZnVuY3Rpb24KKyAgICAgICAgY29kZSA9IGNvbXBpbGUoImNsYXNzIEE6IHBhc3MiLCAiIiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5hbWVFcnJvciwgIl9fYnVpbGRfY2xhc3NfXyBub3QgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzoge319KQorCisgICAgICAgIGNsYXNzIGZyb3plbmRpY3RfZXJyb3IoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBmcm96ZW5kaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIGZyb3plbmRpY3RfZXJyb3IoImZyb3plbmRpY3QgaXMgcmVhZG9ubHkiKQorCisgICAgICAgICMgcmVhZC1vbmx5IGJ1aWx0aW5zCisgICAgICAgIGZyb3plbl9idWlsdGlucyA9IGZyb3plbmRpY3QoX19idWlsdGluc19fKQorICAgICAgICBjb2RlID0gY29tcGlsZSgiX19idWlsdGluc19fWydzdXBlcmdsb2JhbCddPTI7IHByaW50KHN1cGVyZ2xvYmFsKSIsICJ0ZXN0IiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmcm96ZW5kaWN0X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IGZyb3plbl9idWlsdGluc30pCisKKyAgICAgICAgIyByZWFkLW9ubHkgZ2xvYmFscworICAgICAgICBuYW1lc3BhY2UgPSBmcm96ZW5kaWN0KHt9KQorICAgICAgICBjb2RlID0gY29tcGlsZSgieD0xIiwgInRlc3QiLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZyb3plbmRpY3RfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIG5hbWVzcGFjZSkKKwogICAgIGRlZiB0ZXN0X2V4ZWNfcmVkaXJlY3RlZChzZWxmKToKICAgICAgICAgc2F2ZXN0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgc3lzLnN0ZG91dCA9IE5vbmUgIyBXaGF0ZXZlciB0aGF0IGNhbm5vdCBmbHVzaCgpCkBAIC01NTQsNiArNjI0LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChmaWx0ZXIobGFtYmRhIHg6IHg+PTMsICgxLCAyLCAzLCA0KSkpLCBbMywgNF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgZmlsdGVyKDQyLCAoMSwgMikpKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3BpY2tsZShzZWxmKToKKyAgICAgICAgZjEgPSBmaWx0ZXIoZmlsdGVyX2NoYXIsICJhYmNkZWFiY2RlIikKKyAgICAgICAgZjIgPSBmaWx0ZXIoZmlsdGVyX2NoYXIsICJhYmNkZWFiY2RlIikKKyAgICAgICAgc2VsZi5jaGVja19pdGVyX3BpY2tsZShmMSwgbGlzdChmMikpCisKICAgICBkZWYgdGVzdF9nZXRhdHRyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2V0YXR0cihzeXMsICdzdGRvdXQnKSBpcyBzeXMuc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIsIHN5cywgMSkKQEAgLTc0Nyw2ICs4MjIsMTEgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxpc3QsIG1hcChiYWRmdW5jLCByYW5nZSg1KSkpCiAKKyAgICBkZWYgdGVzdF9tYXBfcGlja2xlKHNlbGYpOgorICAgICAgICBtMSA9IG1hcChtYXBfY2hhciwgIklzIHRoaXMgdGhlIHJlYWwgbGlmZT8iKQorICAgICAgICBtMiA9IG1hcChtYXBfY2hhciwgIklzIHRoaXMgdGhlIHJlYWwgbGlmZT8iKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJfcGlja2xlKG0xLCBsaXN0KG0yKSkKKwogICAgIGRlZiB0ZXN0X21heChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoJzEyMzEyMycpLCAnMycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF4KDEsIDIsIDMpLCAzKQpAQCAtODgwLDcgKzk2MCwyOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5yZWFkKDEwMDApLCAnWVlZJyoxMDApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgIHVubGluayhURVNURk4pCisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfb3Blbl9kZWZhdWx0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBvbGRfZW52aXJvbiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IGEgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIHRvIGNoZWNrIHRoYXQgb3BlbigpIHVzZXMgdGhlIGN1cnJlbnQgbG9jYWxlCisgICAgICAgICAgICAjIGVuY29kaW5nIGFuZCBub3QgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nCisgICAgICAgICAgICBmb3Iga2V5IGluICgnTENfQUxMJywgJ0xBTkcnLCAnTENfQ1RZUEUnKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorCisgICAgICAgICAgICBzZWxmLndyaXRlX3Rlc3RmaWxlKCkKKyAgICAgICAgICAgIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgICAgICAgICAgZnAgPSBvcGVuKFRFU1RGTiwgJ3cnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAuZW5jb2RpbmcsIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUob2xkX2Vudmlyb24pCiAKICAgICBkZWYgdGVzdF9vcmQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JkKCcgJyksIDMyKQpAQCAtMTE5Nyw2ICsxMjk5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIDQyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgWydhJywgJ2InLCAnYyddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgWydhJywgJ2InLCAnYyddLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFtiJ2EnLCBiJ2MnXSwgYicnKQorICAgICAgICB2YWx1ZXMgPSBbYnl0ZWFycmF5KGInYScpLCBieXRlYXJyYXkoYidiJyldCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCB2YWx1ZXMsIGJ5dGVhcnJheShiJycpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW1sxXSwgWzJdLCBbM11dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW3syOjN9XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIFt7MjozfV0qMiwgezI6M30pCkBAIC0xMjg1LDYgKzEzOTAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwgemlwKEJhZFNlcSgpLCBCYWRTZXEoKSkpCiAKKyAgICBkZWYgdGVzdF96aXBfcGlja2xlKHNlbGYpOgorICAgICAgICBhID0gKDEsIDIsIDMpCisgICAgICAgIGIgPSAoNCwgNSwgNikKKyAgICAgICAgdCA9IFsoMSwgNCksICgyLCA1KSwgKDMsIDYpXQorICAgICAgICB6MSA9IHppcChhLCBiKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJfcGlja2xlKHoxLCB0KQorCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhlIGJhc2ljIG1hY2hpbmVyeSBvZiB0aGUgZm9ybWF0KCkgYnVpbHRpbi4gIERvbid0IHRlc3QKICAgICAgICAgIyAgdGhlIHNwZWNpZmljcyBvZiB0aGUgdmFyaW91cyBmb3JtYXR0ZXJzCkBAIC0xMzU4LDE0ICsxNDcwLDE0IEBACiAKICAgICAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAjIElzc3VlICM3OTk0OiBvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMKLSAgICAgICAgIyAgcGVuZGluZyBkZXByZWNhdGVkCisgICAgICAgICMgIGRlcHJlY2F0ZWQKICAgICAgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9mb3JtYXRfc3RyaW5nKG9iaiwgZm10X3N0ciwgc2hvdWxkX3JhaXNlX3dhcm5pbmcpOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgZm9ybWF0KG9iaiwgZm10X3N0cikKICAgICAgICAgICAgIGlmIHNob3VsZF9yYWlzZV93YXJuaW5nOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3WzBdLm1lc3NhZ2UsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdbMF0ubWVzc2FnZSwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ29iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLCBzdHIod1swXS5tZXNzYWdlKSkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNDA5LDYgKzE1MjEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeC50cmFuc2xhdGUsIGIiMSIsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50cmFuc2xhdGUsIGIiMSIqMjU2LCAxKQogCisgICAgZGVmIHRlc3RfY29uc3RydWN0X3NpbmdsZXRvbnMoc2VsZik6CisgICAgICAgIGZvciBjb25zdCBpbiBOb25lLCBFbGxpcHNpcywgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICB0cCA9IHR5cGUoY29uc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHRwKCksIGNvbnN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0cCwgMSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdHAsIGE9MSwgYj0yKQorCiBjbGFzcyBUZXN0U29ydGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggNWVhYjhmNS4uOGNlNmMyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0xODgsMjQgKzE4OCwyNiBAQAogCiAgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjIgotICAgICAgICBmb3IgZW5jIGluICgidXRmOCIsICJ1dGYxNiIpOgorICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYudHlwZTJ0ZXN0KHNhbXBsZS5lbmNvZGUoZW5jKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc2VsZi50eXBlMnRlc3QsIHNhbXBsZSwgImxhdGluMSIpCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbjEiLCAiaWdub3JlIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzZWxmLnR5cGUydGVzdCwgc2FtcGxlLCAibGF0aW4tMSIpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbi0xIiwgImlnbm9yZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlWzotM10sICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiY1xkZWYwXGRlZjAiCi0gICAgICAgIGZvciBlbmMgaW4gKCJ1dGY4IiwgInV0ZjE2Iik6CisgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZW5jKSwgc2FtcGxlKQogICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx4ODBceDgxXHhmZVx4ZmYiCi0gICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbjEiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIuZGVjb2RlLCAidXRmOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoInV0ZjgiLCAiaWdub3JlIiksICJIZWxsbyB3b3JsZFxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlcnJvcnM9Imlnbm9yZSIsIGVuY29kaW5nPSJ1dGY4IiksCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsICJsYXRpbi0xIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiLmRlY29kZSwgInV0Zi04IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZSgidXRmLTgiLCAiaWdub3JlIiksICJIZWxsbyB3b3JsZFxuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlcnJvcnM9Imlnbm9yZSIsIGVuY29kaW5nPSJ1dGYtOCIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJIZWxsbyB3b3JsZFxuIikKKyAgICAgICAgIyBEZWZhdWx0IGVuY29kaW5nIGlzIHV0Zi04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYidceGUyXHg5OFx4ODMnKS5kZWNvZGUoKSwgJ1x1MjYwMycpCiAKICAgICBkZWYgdGVzdF9mcm9tX2ludChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KDApCkBAIC0yOTEsMTAgKzI5MywyNyBAQAogCiAgICAgZGVmIHRlc3RfY291bnQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICBwID0gMTEyCisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJyksIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3NzJyksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3cnKSwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoaSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudCh3KSwgMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJywgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3AnLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInaScsIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidwJywgNywgOSksIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGksIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQocCwgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KHAsIDcsIDkpLCAxKQorCiAgICAgZGVmIHRlc3Rfc3RhcnRzd2l0aChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYudHlwZTJ0ZXN0KCkuc3RhcnRzd2l0aChiImFueXRoaW5nIikpCkBAIC0zMjUsMzUgKzM0NCw4NiBAQAogCiAgICAgZGVmIHRlc3RfZmluZChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAzKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDcpLCAyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgMyksIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3cnKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInbWlzc2lzc2lwcGlhbicpLCAtMSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQodyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDEsIDcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgMyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGksIDYpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQodywgMSwgMyksIC0xKQorCisgICAgICAgIGZvciBpbmRleCBpbiAoLTEsIDI1Niwgc3lzLm1heHNpemUgKyAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVmFsdWVFcnJvciwgcidieXRlIG11c3QgYmUgaW4gcmFuZ2VcKDAsIDI1NlwpJywKKyAgICAgICAgICAgICAgICBiLmZpbmQsIGluZGV4KQorCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAzKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAwLCA2KSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGIndycpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInbWlzc2lzc2lwcGlhbicpLCAtMSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQodyksIC0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChiJ3NzJywgMCwgNiksIDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSwgMywgOSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZCh3LCAxLCAzKSwgLTEpCisKICAgICBkZWYgdGVzdF9pbmRleChzZWxmKToKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYid3JyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ29ybCcpLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3dvcm0nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ2xkbycpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYid3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidtaXNzaXNzaXBwaWFuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInc3MnLCAxLCA3KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgYidzcycsIDEsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGksIDYpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIHcsIDEsIDMpCiAKICAgICBkZWYgdGVzdF9yaW5kZXgoc2VsZik6Ci0gICAgICAgICMgWFhYIGNvdWxkIGJlIG1vcmUgcmlnb3JvdXMKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGIndycpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInb3JsJyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ3dvcm0nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYidsZG8nKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYid3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGInbWlzc2lzc2lwcGlhbicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChpKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGInc3MnLCAwLCA2KSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDMsIDkpLCA3KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgdywgMSwgMykKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKQEAgLTM2NSw2ICs0MzUsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInaScpLCBbYidtJywgYidzcycsIGInc3MnLCBiJ3BwJywgYicnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInc3MnKSwgW2InbWknLCBiJ2knLCBiJ2lwcGknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGIndycpLCBbYl0pCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYXxifGN8ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChzZXA9Yid8JyksIFtiJ2EnLCBiJ2InLCBiJ2MnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KGInfCcsIG1heHNwbGl0PTEpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoc2VwPWInfCcsIG1heHNwbGl0PTEpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQobWF4c3BsaXQ9MSwgc2VwPWInfCcpLCBbYidhJywgYidifGN8ZCddKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhIGIgYyBkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KG1heHNwbGl0PTEpLCBbYidhJywgYidiIGMgZCddKQogCiAgICAgZGVmIHRlc3Rfc3BsaXRfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKGInICBhcmYgIGJhcmYgICcsIGInYXJmXHRiYXJmJywgYidhcmZcbmJhcmYnLCBiJ2FyZlxyYmFyZicsCkBAIC0zOTMsNiArNDcxLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYidpJyksIFtiJ20nLCBiJ3NzJywgYidzcycsIGIncHAnLCBiJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInc3MnKSwgW2InbWknLCBiJ2knLCBiJ2lwcGknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ3cnKSwgW2JdKQorICAgICAgICAjIHdpdGgga2V5d29yZCBhcmdzCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2F8YnxjfGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KHNlcD1iJ3wnKSwgW2InYScsIGInYicsIGInYycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGInfCcsIG1heHNwbGl0PTEpLCBbYidhfGJ8YycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KHNlcD1iJ3wnLCBtYXhzcGxpdD0xKSwgW2InYXxifGMnLCBiJ2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChtYXhzcGxpdD0xLCBzZXA9Yid8JyksIFtiJ2F8YnxjJywgYidkJ10pCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2EgYiBjIGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KG1heHNwbGl0PTEpLCBbYidhIGIgYycsIGInZCddKQogCiAgICAgZGVmIHRlc3RfcnNwbGl0X3doaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIGZvciBiIGluIChiJyAgYXJmICBiYXJmICAnLCBiJ2FyZlx0YmFyZicsIGInYXJmXG5iYXJmJywgYidhcmZccmJhcmYnLApAQCAtNDMyLDYgKzUxOCwyNCBAQAogICAgICAgICAgICAgICAgIHEgPSBwaWNrbGUubG9hZHMocHMpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBxKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGZvciBiIGluIGIiIiwgYiJhIiwgYiJhYmMiLCBiIlx4ZmZhYlx4ODAiLCBiIlwwXDBcMzc3XDBcMCI6CisgICAgICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihzZWxmLnR5cGUydGVzdChiKSkKKyAgICAgICAgICAgIGRhdGEgPSBsaXN0KHNlbGYudHlwZTJ0ZXN0KGIpKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEpCisKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGFbMTpdKQorCiAgICAgZGVmIHRlc3Rfc3RyaXAoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnN0cmlwKGInaScpLCBiJ21pc3Npc3NpcHAnKQpAQCAtNDczLDYgKzU3NywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYWJjJykubHN0cmlwLCAnYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5yc3RyaXAsICdiJykKIAorICAgIGRlZiB0ZXN0X2NlbnRlcihzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNlbnRlcig3LCBmaWxsX3R5cGUoYictJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdChiJy0tYWJjLS0nKSkKKworICAgIGRlZiB0ZXN0X2xqdXN0KHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIubGp1c3QoNywgZmlsbF90eXBlKGInLScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QoYidhYmMtLS0tJykpCisKKyAgICBkZWYgdGVzdF9yanVzdChzZWxmKToKKyAgICAgICAgIyBGaWxsIGNoYXJhY3RlciBjYW4gYmUgZWl0aGVyIGJ5dGVzIG9yIGJ5dGVhcnJheSAoaXNzdWUgMTIzODApCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2FiYycpCisgICAgICAgIGZvciBmaWxsX3R5cGUgaW4gKGJ5dGVzLCBieXRlYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJqdXN0KDcsIGZpbGxfdHlwZShiJy0nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0KGInLS0tLWFiYycpKQorCiAgICAgZGVmIHRlc3Rfb3JkKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidcMEFceDdmXHg4MFx4ZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtvcmQoYltpOmkrMV0pIGZvciBpIGluIHJhbmdlKGxlbihiKSldLApAQCAtNTI5LDYgKzY1NCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGIuc3RhcnRzd2l0aChoLCBOb25lLCAtMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGIuc3RhcnRzd2l0aCh4LCBOb25lLCBOb25lKSkKIAorICAgIGRlZiB0ZXN0X2ludGVnZXJfYXJndW1lbnRzX291dF9vZl9ieXRlX3JhbmdlKHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoYi5jb3VudCwgYi5maW5kLCBiLmluZGV4LCBiLnJmaW5kLCBiLnJpbmRleCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kLCAyNTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIDk5OTkpCisKICAgICBkZWYgdGVzdF9maW5kX2V0Y19yYWlzZV9jb3JyZWN0X2Vycm9yX21lc3NhZ2VzKHNlbGYpOgogICAgICAgICAjIGlzc3VlIDExODI4CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKQEAgLTYzNCw2ICs3NjcsMzkgQEAKICAgICAgICAgYi5yZXZlcnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiKQogCisgICAgZGVmIHRlc3RfY2xlYXIoc2VsZik6CisgICAgICAgIGIgPSBieXRlYXJyYXkoYidweXRob24nKQorICAgICAgICBiLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJycpCisKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJycpCisgICAgICAgIGIuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICBiID0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgYi5hcHBlbmQob3JkKCdyJykpCisgICAgICAgIGIuY2xlYXIoKQorICAgICAgICBiLmFwcGVuZChvcmQoJ3AnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ3AnKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ2FiYycpCisgICAgICAgIGJiID0gYi5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYiwgYidhYmMnKQorCisgICAgICAgIGIgPSBieXRlYXJyYXkoYicnKQorICAgICAgICBiYiA9IGIuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmIsIGInJykKKworICAgICAgICAjIHRlc3QgdGhhdCBpdCdzIGluZGVlZCBhIGNvcHkgYW5kIG5vdCBhIHJlZmVyZW5jZQorICAgICAgICBiID0gYnl0ZWFycmF5KGInYWJjJykKKyAgICAgICAgYmIgPSBiLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGJiKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGIsIGJiKQorICAgICAgICBiYi5hcHBlbmQob3JkKCdkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmIsIGInYWJjZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidhYmMnKQorCiAgICAgZGVmIHRlc3RfcmVnZXhwcyhzZWxmKToKICAgICAgICAgZGVmIGJ5KHMpOgogICAgICAgICAgICAgcmV0dXJuIGJ5dGVhcnJheShtYXAob3JkLCBzKSkKQEAgLTExMDUsOSArMTI3MSwxMSBAQAogCiBjbGFzcyBCeXRlQXJyYXlBc1N0cmluZ1Rlc3QoRml4ZWRTdHJpbmdUZXN0KToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKKyAgICBjb250YWluc19ieXRlcyA9IFRydWUKIAogY2xhc3MgQnl0ZXNBc1N0cmluZ1Rlc3QoRml4ZWRTdHJpbmdUZXN0KToKICAgICB0eXBlMnRlc3QgPSBieXRlcworICAgIGNvbnRhaW5zX2J5dGVzID0gVHJ1ZQogCiAKIGNsYXNzIFN1YmNsYXNzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J6Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CmluZGV4IGJlMzU1ODAuLjI1N2IxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CkBAIC0xLDEwICsxLDExIEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGJpZ21lbXRlc3QsIF80RwogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIApAQCAtMjEsOSArMjIsMzggQEAKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICJCYXNlIGZvciBvdGhlciB0ZXN0Y2FzZXMuIgotICAgIFRFWFQgPSBiJ3Jvb3Q6eDowOjA6cm9vdDovcm9vdDovYmluL2Jhc2hcbmJpbjp4OjE6MTpiaW46L2JpbjpcbmRhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG5hZG06eDozOjQ6YWRtOi92YXIvYWRtOlxubHA6eDo0Ojc6bHA6L3Zhci9zcG9vbC9scGQ6XG5zeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG5zaHV0ZG93bjp4OjY6MDpzaHV0ZG93bjovc2Jpbjovc2Jpbi9zaHV0ZG93blxuaGFsdDp4Ojc6MDpoYWx0Oi9zYmluOi9zYmluL2hhbHRcbm1haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxubmV3czp4Ojk6MTM6bmV3czovdmFyL3Nwb29sL25ld3M6XG51dWNwOng6MTA6MTQ6dXVjcDovdmFyL3Nwb29sL3V1Y3A6XG5vcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG5nYW1lczp4OjEyOjEwMDpnYW1lczovdXNyL2dhbWVzOlxuZ29waGVyOng6MTM6MzA6Z29waGVyOi91c3IvbGliL2dvcGhlci1kYXRhOlxuZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG5ub2JvZHk6eDo2NTUzNDo2NTUzNDpOb2JvZHk6L2hvbWU6XG5wb3N0Zml4Ong6MTAwOjEwMTpwb3N0Zml4Oi92YXIvc3Bvb2wvcG9zdGZpeDpcbm5pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG5wb3N0Z3Jlczp4OjEwMToxMDI6UG9zdGdyZVNRTCBTZXJ2ZXI6L3Zhci9saWIvcGdzcWw6L2Jpbi9iYXNoXG5teXNxbDp4OjEwMjoxMDM6TXlTUUwgc2VydmVyOi92YXIvbGliL215c3FsOi9iaW4vYmFzaFxud3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJworICAgIFRFWFRfTElORVMgPSBbCisgICAgICAgIGIncm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidiaW46eDoxOjE6YmluOi9iaW46XG4nLAorICAgICAgICBiJ2RhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG4nLAorICAgICAgICBiJ2FkbTp4OjM6NDphZG06L3Zhci9hZG06XG4nLAorICAgICAgICBiJ2xwOng6NDo3OmxwOi92YXIvc3Bvb2wvbHBkOlxuJywKKyAgICAgICAgYidzeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG4nLAorICAgICAgICBiJ3NodXRkb3duOng6NjowOnNodXRkb3duOi9zYmluOi9zYmluL3NodXRkb3duXG4nLAorICAgICAgICBiJ2hhbHQ6eDo3OjA6aGFsdDovc2Jpbjovc2Jpbi9oYWx0XG4nLAorICAgICAgICBiJ21haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxuJywKKyAgICAgICAgYiduZXdzOng6OToxMzpuZXdzOi92YXIvc3Bvb2wvbmV3czpcbicsCisgICAgICAgIGIndXVjcDp4OjEwOjE0OnV1Y3A6L3Zhci9zcG9vbC91dWNwOlxuJywKKyAgICAgICAgYidvcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG4nLAorICAgICAgICBiJ2dhbWVzOng6MTI6MTAwOmdhbWVzOi91c3IvZ2FtZXM6XG4nLAorICAgICAgICBiJ2dvcGhlcjp4OjEzOjMwOmdvcGhlcjovdXNyL2xpYi9nb3BoZXItZGF0YTpcbicsCisgICAgICAgIGInZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ25vYm9keTp4OjY1NTM0OjY1NTM0Ok5vYm9keTovaG9tZTpcbicsCisgICAgICAgIGIncG9zdGZpeDp4OjEwMDoxMDE6cG9zdGZpeDovdmFyL3Nwb29sL3Bvc3RmaXg6XG4nLAorICAgICAgICBiJ25pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ3Bvc3RncmVzOng6MTAxOjEwMjpQb3N0Z3JlU1FMIFNlcnZlcjovdmFyL2xpYi9wZ3NxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInbXlzcWw6eDoxMDI6MTAzOk15U1FMIHNlcnZlcjovdmFyL2xpYi9teXNxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInd3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJywKKyAgICAgICAgXQorICAgIFRFWFQgPSBiJycuam9pbihURVhUX0xJTkVTKQogICAgIERBVEEgPSBiJ0JaaDkxQVkmU1kuXHhjOE5ceDE4XHgwMFx4MDE+X1x4ODBceDAwXHgxMEBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMDBceDAxXHg5OVx4YWFceDAwXHhjMFx4MDNGXHg4Nlx4OGMjJlx4ODNGXHg5YVx4MDNceDA2XHhhNlx4ZDBceGE2XHg5M01ceDBmUVx4YTdceGE4XHgwNlx4ODA0aGhceDEyJFx4MTFceGE0aTRceGYxNFNceGQyPFFceGI1XHgwZkhceGQzXHhkNFx4ZGRceGQ1XHg4N1x4YmJceGY4XHg5NFxyXHg4Zlx4YWZJXHgxMlx4ZTFceGM5XHhmOC9FXHgwMHB1XHg4OVx4MTJdXHhjOVx4YmJETFxuUVx4MGVcdDFceDEyXHhkZlx4YTBceGMwXHg5N1x4YWMyTzlceDg5XHgxM1x4OTRceDBlXHgxYzdceDBlZFx4OTVJXHgwY1x4YWFKXHhhNFx4MThMXHgxMFx4MDUjXHg5Y1x4YWZceGJhXHhiYy9ceDk3XHg4YSNDXHhjOFx4ZTFceDhjV1x4ZjlceGUyXHhkMFx4ZDZNXHhhN1x4OGJYYTxlXHg4NHRceGNiTFx4YjNceGE3XHhkOVx4Y2RceGQxXHhjYlx4ODQuXHhhZlx4YjNceGFiXHhhYlx4YWRgbn1ceGEwbGhcdEUsXHg4ZVpceDE1XHgxN1ZIPlx4ODhceGU1XHhjZDlnZDZceDBiXG5ceGU5XHg5Ylx4ZDVceDhhXHg5OVx4ZjdceDA4LktceDhldlx4ZmJceGY3eHdceGJiXHhkZlx4YTFceDkyXHhmMVx4ZGR8LyI7XHhhMlx4YmFceDlmXHhkNVx4YjEjQVx4YjZceGY2XHhiM29ceGM5XHhjNXlcXFx4ZWJPXHhlN1x4ODVceDlhXHhiY1x4YjZmOFx4OTUyXHhkNVx4ZDciJVx4ODk+VixceGY3XHhhNnpceGUyXHg5Zlx4YTNceGRmXHgxMVx4MTEiXHhkNkUpSVx4YTlceDEzXlx4Y2FceGYzclx4ZDBceDAzVVx4OTIyXHhmMjZceGVjXHhiNlx4ZWRceDhiXHhjM1VceDEzXHg5ZFx4YzVceDE3MFx4YTRceGZhXlx4OTJceGFjREZceDhhXHg5N1x4ZDZceDE5XHhmZVx4ZGRceGI4XHhiZFx4MWFceDlhXHgxOVx4YTNceDgwYW5rUlx4OGJceGU1XHhkODNdXHhhOVx4YzZceDA4XHg4MmZceGY2XHhiOSI2bCRceGI4akBceGMwXHg4YVx4YjBsMS4uXHhiYWtceDgzbHNceDE1XHhiY1x4ZjRceGMxXHgxM1x4YmVceGY4RVx4YjhceDlkXHJceGE4XHg5ZGtceDg0XHhkM25ceGZhXHhhY1FceDA3XHhiMSV5XHhhYXZceGI0XHgwOFx4ZTB6XHgxYlx4MTZceGY1XHgwNFx4ZTlceGNjXHhiOVx4MDh6XHgxZW43LkdceGZjXVx4YzlceDE0XHhlMUJAXHhiYiE4YCcKLSAgICBEQVRBX0NSTEYgPSBiJ0JaaDkxQVkmU1lceGFlelx4YmJOXHgwMFx4MDFIXHhkZlx4ODBceDAwXHgxMkBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMEBceDAxXHhiY1x4YzZgXHg4NipceDhkPU1ceGE5XHg5YVx4ODZceGQwTEBceDBmSVx4YTYhXHhhMVx4MTNceGM4XHg4OGpkaVx4OGRAXHgwM0BceDFhXHgxYVx4MGNceDBjXHg4MyBceDAwXHhjNGgyXHgxOVx4MDFceDgyRFx4ODRlXHRceGU4XHg5OVx4ODlceDE5XHgxYWhceDAwXHJceDFhXHgxMVx4YWZceDliXHgwZkdceGY1KFx4MWJceDFmP1x0XHgxMlx4Y2ZceGI1XHhmY1x4OTVFXHgwMHBzXHg4OVx4MTJeXHhhNFx4ZGRceGEyJlx4MDUoXHg4N1x4MDRceDk4XHg4OXVceGU0MCVceGI2XHgxOVwnXHg4Y1x4YzRceDg5XHhjYVx4MDdceDBlXHgxYiFceDkxVUlGVSVDXHg5OTQhRElceGQyXHhmYVx4ZjBceGYxTjhXXHhkZVx4MTNBXHhmNVx4OWNyJT9ceDlmMztJNDVBXHhkMVx4OGJUXHhiMTxsXHhiYVx4Y2JfXHhjMDB4WVx4MTdyXHgxN1x4ODhceDA4XHgwOEBceGEwXHJ5QFx4MTBceDA0JClgXHhmMlx4Y2VceDg5elx4YjBzXHhlY1x4OWIuaVdceDlkXHg4MVx4YjUtK3RceDlmXHgxYVwnXHg5N2RCXHhmNXhceGI1XHhiZS5bLlx4ZDdceDBlXHg4MVx4ZTdceDA4XHgxY05gXHg4OFx4MTBceGNhXHg4N1x4YzMhIlx4ODBceDkyUlx4YTEvXHhkMVx4YzBceGU2bWZceGFjXHhiZFx4OTlceGNjYVx4YjNceDg3ODA+XHhhNFx4YzdceDhkXHgxYVxcIlx4YWRceGExXHhhYnlCZ1x4MTVceGI5bFx4ODhceDg4XHg5MWsiXHg5NFx4YTRceGQ0XHg4OVx4YWUqXHhhNlx4MGJceDEwXHgwY1x4ZDZceGQ0bVx4ZTg2XHhlY1x4YjVqXHg4YVx4ODZqXCc7XHhjYS5ceDAxSVx4ZjJceGFhSlx4ZThceDg4XHg4Y1UrdDNceGZiXHgwY1xuXHhhMzNceDEzcjJcclx4MTZceGUwXHhiMyhceGJmXHgxZFx4ODNyXHhlN01ceGYwRFx4MTM2NVx4ZDhceDg4XHhkM1x4YTRceDkyXHhjYjJceDA2XHgwNFxcXHhjMVx4YjBceGVhLy9ceGJlayZceGQ4XHhlNit0XHhlNVx4YTFceDEzXHhhZGFceDE2XHhkZXI1InddXHhhMmlceGI3W1x4OTdSIFx4ZTJJVFx4Y2Q7Wlx4MDRkazRceGFkXHg4YVx0XHhkM1x4ODF6XHgxMFx4ZjE6XmBceGFiXHgxZlx4YzVceGRjXHg5MU5ceDE0JCtceDllXHhhZVx4ZDNceDgwJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gVEVTVEZOCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuZmlsZW5hbWUpOgorICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZmlsZW5hbWUpCiAKICAgICBpZiBoYXNfY21kbGluZV9idW56aXAyOgogICAgICAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKQEAgLTQ3LDkwICs3NywxNDkgQEAKIGNsYXNzIEJaMkZpbGVUZXN0KEJhc2VUZXN0KToKICAgICAiVGVzdCBCWjJGaWxlIHR5cGUgbWlzY2VsbGFuZW91cyBtZXRob2RzLiIKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5maWxlbmFtZSA9IFRFU1RGTgotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmZpbGVuYW1lKToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmZpbGVuYW1lKQotCi0gICAgZGVmIGNyZWF0ZVRlbXBGaWxlKHNlbGYsIGNybGY9MCk6CisgICAgZGVmIGNyZWF0ZVRlbXBGaWxlKHNlbGYsIHN0cmVhbXM9MSk6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgaWYgY3JsZjoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5EQVRBX0NSTEYKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuREFUQQotICAgICAgICAgICAgZi53cml0ZShkYXRhKQorICAgICAgICAgICAgZi53cml0ZShzZWxmLkRBVEEgKiBzdHJlYW1zKQorCisgICAgZGVmIHRlc3RCYWRBcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKDEyMy40NTYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAieiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAicngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQloyRmlsZSgiL2Rldi9udWxsIiwgInJidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCBjb21wcmVzc2xldmVsPTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCBjb21wcmVzc2xldmVsPTEwKQogCiAgICAgZGVmIHRlc3RSZWFkKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0UmVhZE11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCisKKyAgICBkZWYgdGVzdFJlYWRNb25rZXlNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgIyBUZXN0IEJaMkZpbGUucmVhZCgpIG9uIGEgbXVsdGktc3RyZWFtIGFyY2hpdmUgd2hlcmUgYSBzdHJlYW0KKyAgICAgICAgIyBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kIG9mIHRoZSByYXcgcmVhZCBidWZmZXIuCisgICAgICAgIGJ1ZmZlcl9zaXplID0gYnoyLl9CVUZGRVJfU0laRQorICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGJ1ZmZlcl9zaXplCisKICAgICBkZWYgdGVzdFJlYWQwKHNlbGYpOgotICAgICAgICAjIFRlc3QgQkJaMkZpbGUucmVhZCgwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgwKSwgYiIiKQogCiAgICAgZGVmIHRlc3RSZWFkQ2h1bmsxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWQoKSBpbiBjaHVua3Mgb2YgMTAgYnl0ZXMiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHRleHQgPSBiJycKLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHN0ciA9IGJ6MmYucmVhZCgxMCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0UmVhZENodW5rMTBNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgdGV4dCA9IGInJworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBzdHIgPSBiejJmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHN0cjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICB0ZXh0ICs9IHN0cgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQgKiA1KQorCiAgICAgZGVmIHRlc3RSZWFkMTAwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgxMDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgxMDApLCBzZWxmLlRFWFRbOjEwMF0pCiAKKyAgICBkZWYgdGVzdFBlZWsoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHBkYXRhKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLlRFWFQuc3RhcnRzd2l0aChwZGF0YSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFJlYWRJbnRvKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBuID0gMTI4CisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGludG8oYiksIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuVEVYVFs6bl0pCisgICAgICAgICAgICBuID0gbGVuKHNlbGYuVEVYVCkgLSBuCisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KGxlbihzZWxmLlRFWFQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRpbnRvKGIpLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuXSwgc2VsZi5URVhUWy1uOl0pCisKICAgICBkZWYgdGVzdFJlYWRMaW5lKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZGxpbmUoKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lLCBOb25lKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzaW8ucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLlRFWFRfTElORVM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIGxpbmUpCisKKyAgICBkZWYgdGVzdFJlYWRMaW5lTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZSwgTm9uZSkKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuVEVYVF9MSU5FUyAqIDU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIGxpbmUpCiAKICAgICBkZWYgdGVzdFJlYWRMaW5lcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnJlYWRsaW5lcygpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmVzLCBOb25lKQotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIHNpby5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2VsZi5URVhUX0xJTkVTKQorCisgICAgZGVmIHRlc3RSZWFkTGluZXNNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lcywgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2VsZi5URVhUX0xJTkVTICogNSkKIAogICAgIGRlZiB0ZXN0SXRlcmF0b3Ioc2VsZik6Ci0gICAgICAgICMgIlRlc3QgaXRlcihCWjJGaWxlKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2lvID0gQnl0ZXNJTyhzZWxmLlRFWFQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNpby5yZWFkbGluZXMoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2VsZi5URVhUX0xJTkVTKQorCisgICAgZGVmIHRlc3RJdGVyYXRvck11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihiejJmKSksIHNlbGYuVEVYVF9MSU5FUyAqIDUpCiAKICAgICBkZWYgdGVzdENsb3NlZEl0ZXJhdG9yRGVhZGxvY2soc2VsZik6Ci0gICAgICAgICMgIlRlc3QgdGhhdCBpdGVyYXRpb24gb24gYSBjbG9zZWQgYnoyZmlsZSByZWxlYXNlcyB0aGUgbG9jay4iCi0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzMDkKKyAgICAgICAgIyBJc3N1ZSAjMzMwOTogSXRlcmF0aW9uIG9uIGEgY2xvc2VkIEJaMkZpbGUgc2hvdWxkIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBiejJmID0gQloyRmlsZShzZWxmLmZpbGVuYW1lKQogICAgICAgICBiejJmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5fX25leHRfXykKLSAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBvZiB0aGUgYWJvdmUgLl9fbmV4dF9fIGNhbGwgZmFpbGVkIHRvCisgICAgICAgICMgVGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgaWYgdGhlIGFib3ZlIC5fX25leHRfXyBjYWxsIGZhaWxlZCB0bwogICAgICAgICAjIHJlbGVhc2UgdGhlIGxvY2suCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGxpbmVzKQogCiAgICAgZGVmIHRlc3RXcml0ZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLndyaXRlKCkiCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCiAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKQEAgLTEzOCwxMCArMjI3LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RXcml0ZUNodW5rczEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGUoKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKICAgICAgICAgICAgIG4gPSAwCi0gICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBzdHIgPSBzZWxmLlRFWFRbbioxMDoobisxKSoxMF0KICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTUwLDEzICsyMzgsMTkgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0V3JpdGVOb25EZWZhdWx0Q29tcHJlc3NMZXZlbChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBiejIuY29tcHJlc3Moc2VsZi5URVhULCBjb21wcmVzc2xldmVsPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIsIGNvbXByZXNzbGV2ZWw9NSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RXcml0ZUxpbmVzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGVsaW5lcygpIgogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlbGluZXMpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIGJ6MmYud3JpdGVsaW5lcyhzaW8ucmVhZGxpbmVzKCkpCi0gICAgICAgICMgcGF0Y2ggIzE1MzU1MDAKKyAgICAgICAgICAgIGJ6MmYud3JpdGVsaW5lcyhzZWxmLlRFWFRfTElORVMpCisgICAgICAgICMgSXNzdWUgIzE1MzU1MDA6IENhbGxpbmcgd3JpdGVsaW5lcygpIG9uIGEgY2xvc2VkIEJaMkZpbGUKKyAgICAgICAgIyBzaG91bGQgcmFpc2UgYW4gZXhjZXB0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRlbGluZXMsIFsiYSJdKQogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQpAQCAtMTY5LDM5ICsyNjMsNzMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ6MmYud3JpdGUsIGIiYSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiejJmLndyaXRlbGluZXMsIFtiImEiXSkKIAorICAgIGRlZiB0ZXN0QXBwZW5kKHNlbGYpOgorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlKQorICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCisgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhmLnJlYWQoKSksIHNlbGYuVEVYVCAqIDIpCisKICAgICBkZWYgdGVzdFNlZWtGb3J3YXJkKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygxNTAsIDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYuc2VlaykKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCiAKKyAgICBkZWYgdGVzdFNlZWtGb3J3YXJkQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICBiejJmLnNlZWsobGVuKHNlbGYuVEVYVCkgKyAxNTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKICAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHMoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDEpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnJlYWQoNTAwKQogICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbNTAwLTE1MDpdKQogCisgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzQWNyb3NzU3RyZWFtcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgcmVhZHRvID0gbGVuKHNlbGYuVEVYVCkgKyAxMDAKKyAgICAgICAgICAgIHdoaWxlIHJlYWR0byA+IDA6CisgICAgICAgICAgICAgICAgcmVhZHRvIC09IGxlbihiejJmLnJlYWQocmVhZHRvKSkKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzEwMC0xNTA6XSArIHNlbGYuVEVYVCkKKwogICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Zyb21FbmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKC0xNTAsIDIpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFtsZW4oc2VsZi5URVhUKS0xNTA6XSkKIAorICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0Zyb21FbmRBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoLTEwMDAsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCAoc2VsZi5URVhUICogMilbLTEwMDA6XSkKKwogICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKDE1MDAwMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKIAorICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKKwogICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRUd2ljZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoMTUwMDAwKSB0d2ljZSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKQEAgLTIwOSwyNyArMzM3LDEwOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCiAKKyAgICBkZWYgdGVzdFNlZWtQb3N0RW5kVHdpY2VNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIGJ6MmYuc2VlaygxNTAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSAqIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBiIiIpCisKICAgICBkZWYgdGVzdFNlZWtQcmVTdGFydChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKIAorICAgIGRlZiB0ZXN0U2Vla1ByZVN0YXJ0TXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdEZpbGVubyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyByYXdmOgorICAgICAgICAgICAgYnoyZiA9IEJaMkZpbGUocmF3ZikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYuZmlsZW5vKCksIHJhd2YuZmlsZW5vKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLmZpbGVubykKKworICAgIGRlZiB0ZXN0U2Vla2FibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGJ6MmYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgICAgICBzcmMgPSBCeXRlc0lPKHNlbGYuREFUQSkKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBiejJmID0gQloyRmlsZShzcmMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuc2Vla2FibGUpCisKKyAgICBkZWYgdGVzdFJlYWRhYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBiejJmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYucmVhZGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnJlYWRhYmxlKQorCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oKSwgbW9kZT0idyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdFdyaXRhYmxlKHNlbGYpOgorICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKHNlbGYuREFUQSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi53cml0YWJsZSgpKQorICAgICAgICAgICAgYnoyZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnoyZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGFibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYud3JpdGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLndyaXRhYmxlKQorCiAgICAgZGVmIHRlc3RPcGVuRGVsKHNlbGYpOgotICAgICAgICAjICJUZXN0IG9wZW5pbmcgYW5kIGRlbGV0aW5nIGEgZmlsZSBtYW55IHRpbWVzIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgogICAgICAgICAgICAgbyA9IEJaMkZpbGUoc2VsZi5maWxlbmFtZSkKICAgICAgICAgICAgIGRlbCBvCiAKICAgICBkZWYgdGVzdE9wZW5Ob25leGlzdGVudChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBvcGVuaW5nIGEgbm9uZXhpc3RlbnQgZmlsZSIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgQloyRmlsZSwgIi9ub24vZXhpc3RlbnQiKQogCi0gICAgZGVmIHRlc3RCdWcxMTkxMDQzKHNlbGYpOgotICAgICAgICAjIHJlYWRsaW5lcygpIGZvciBmaWxlcyBjb250YWluaW5nIG5vIG5ld2xpbmUKKyAgICBkZWYgdGVzdFJlYWRsaW5lc05vTmV3bGluZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTE5MTA0MzogcmVhZGxpbmVzKCkgZmFpbHMgb24gYSBmaWxlIGNvbnRhaW5pbmcgbm8gbmV3bGluZS4KICAgICAgICAgZGF0YSA9IGInQlpoOTFBWSZTWVx4ZDliXHg4OV1ceDAwXHgwMFx4MDBceDAzXHg4MFx4MDRceDAwXHgwMlx4MDBceDBjXHgwMCBceDAwIVx4OWFoM01ceDEzPF1ceGM5XHgxNFx4ZTFCQ2VceDhhJXQnCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhKQpAQCAtMjQxLDcgKzQ1MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGxpbmVzLCBbYidUZXN0J10pCiAKICAgICBkZWYgdGVzdENvbnRleHRQcm90b2NvbChzZWxmKToKLSAgICAgICAgIyBCWjJGaWxlIHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wKICAgICAgICAgZiA9IE5vbmUKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIieHh4IikKQEAgLTI2NCw3ICs0NzMsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdFRocmVhZGluZyhzZWxmKToKLSAgICAgICAgIyBVc2luZyBhIEJaMkZpbGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgZG9lc24ndCBkZWFkbG9jayAoaXNzdWUgIzcyMDUpLgorICAgICAgICAjIElzc3VlICM3MjA1OiBVc2luZyBhIEJaMkZpbGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgc2hvdWxkbid0IGRlYWRsb2NrLgogICAgICAgICBkYXRhID0gYiIxIiAqIDIqKjIwCiAgICAgICAgIG50aHJlYWRzID0gMTAKICAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgpAQCAtMjc3LDIyICs0ODYsOTggQEAKICAgICAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICAgICAgdC5qb2luKCkKIAotICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25SZWFkcyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjODM5NzogbWl4ZWQgaXRlcmF0aW9uIGFuZCByZWFkcyBzaG91bGQgYmUgZm9yYmlkZGVuLgotICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICAjIFRoZSBpbnRlcm5hbCBidWZmZXIgc2l6ZSBpcyBoYXJkLXdpcmVkIHRvIDgxOTIgYnl0ZXMsIHdlIG11c3QKLSAgICAgICAgICAgICMgd3JpdGUgb3V0IG1vcmUgdGhhbiB0aGF0IGZvciB0aGUgdGVzdCB0byBzdG9wIGhhbGYgdGhyb3VnaAotICAgICAgICAgICAgIyB0aGUgYnVmZmVyLgotICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQgKiAxMDApCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgIG5leHQoZikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKKyAgICBkZWYgdGVzdFdpdGhvdXRUaHJlYWRpbmcoc2VsZik6CisgICAgICAgIGJ6MiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiYnoyIiwgYmxvY2tlZD0oInRocmVhZGluZyIsKSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiImFiYyIpCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiYWJjIikKKworICAgIGRlZiB0ZXN0TWl4ZWRJdGVyYXRpb25BbmRSZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIGxpbmVsZW4gPSBsZW4oc2VsZi5URVhUX0xJTkVTWzBdKQorICAgICAgICBoYWxmbGVuID0gbGluZWxlbiAvLyAyCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZChoYWxmbGVuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGJ6MmYpLCBzZWxmLlRFWFRfTElORVNbMF1baGFsZmxlbjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUW2xpbmVsZW46XSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5yZWFkbGluZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1sxXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZSgpLCBzZWxmLlRFWFRfTElORVNbMl0pCisgICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgbmV4dChiejJmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBbXSkKKworICAgIGRlZiB0ZXN0TXVsdGlTdHJlYW1PcmRlcmluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBvcmRlcmluZyBvZiBzdHJlYW1zIHdoZW4gcmVhZGluZyBhIG11bHRpLXN0cmVhbSBhcmNoaXZlLgorICAgICAgICBkYXRhMSA9IGIiZm9vIiAqIDEwMDAKKyAgICAgICAgZGF0YTIgPSBiImJhciIgKiAxMDAwCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgImEiKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShkYXRhMikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBkYXRhMSArIGRhdGEyKQorCisgICAgZGVmIHRlc3RPcGVuQnl0ZXNGaWxlbmFtZShzZWxmKToKKyAgICAgICAgc3RyX2ZpbGVuYW1lID0gc2VsZi5maWxlbmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IHN0cl9maWxlbmFtZS5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB3aXRoIEJaMkZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorICAgICAgICAjIFNhbml0eSBjaGVjayB0aGF0IHdlIGFyZSBhY3R1YWxseSBvcGVyYXRpbmcgb24gdGhlIHJpZ2h0IGZpbGUuCisgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKKworICAgICMgVGVzdHMgZm9yIGEgQloyRmlsZSB3cmFwcGluZyBhbm90aGVyIGZpbGUgb2JqZWN0OgorCisgICAgZGVmIHRlc3RSZWFkQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5jbG9zZWQpCisKKyAgICBkZWYgdGVzdFBlZWtCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHBkYXRhID0gYnoyZi5wZWVrKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihwZGF0YSksIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuVEVYVC5zdGFydHN3aXRoKHBkYXRhKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCisKKyAgICBkZWYgdGVzdFdyaXRlQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbywgInciKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKSwgc2VsZi5URVhUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQorCisgICAgZGVmIHRlc3RTZWVrRm9yd2FyZEJ5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnNlZWspCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKDE1MCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTUwOl0pCisKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIGJ6MmYucmVhZCg1MDApCisgICAgICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUWzUwMC0xNTA6XSkKIAogY2xhc3MgQloyQ29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkiCiAgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJjLmNvbXByZXNzKQogICAgICAgICBkYXRhID0gYnoyYy5jb21wcmVzcyhzZWxmLlRFWFQpCkBAIC0zMDAsMTEgKzU4NSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhkYXRhKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3RDb21wcmVzc0NodW5rczEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkNvbXByZXNzb3IuY29tcHJlc3MoKS9mbHVzaCgpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJjID0gQloyQ29tcHJlc3NvcigpCiAgICAgICAgIG4gPSAwCiAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgd2hpbGUgMToKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHN0ciA9IHNlbGYuVEVYVFtuKjEwOihuKzEpKjEwXQogICAgICAgICAgICAgaWYgbm90IHN0cjoKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMzEzLDIzICs1OTcsMzggQEAKICAgICAgICAgZGF0YSArPSBiejJjLmZsdXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZGF0YSksIHNlbGYuVEVYVCkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdENvbXByZXNzNEcoc2VsZiwgc2l6ZSk6CisgICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQorICAgICAgICBkYXRhID0gYiJ4IiAqIHNpemUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6MmMuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIGNvbXByZXNzZWQgKz0gYnoyYy5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkYXRhID0gTm9uZSAgIyBSZWxlYXNlIG1lbW9yeQorICAgICAgICBkYXRhID0gYnoyLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisKIGNsYXNzIEJaMkRlY29tcHJlc3NvclRlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X0NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEJaMkRlY29tcHJlc3NvciwgNDIpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3Moc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZC5kZWNvbXByZXNzKQogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NDaHVua3MxMChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGInJwogICAgICAgICBuID0gMAotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3RyID0gc2VsZi5EQVRBW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0zMzgsNyArNjM3LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NVbnVzZWREYXRhKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCB1bnVzZWQgZGF0YSIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHVudXNlZF9kYXRhID0gYiJ0aGlzIGlzIHVudXNlZCBkYXRhIgogICAgICAgICB0ZXh0ID0gYnoyZC5kZWNvbXByZXNzKHNlbGYuREFUQSt1bnVzZWRfZGF0YSkKQEAgLTM0Niw0NCArNjQ0LDE1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmQudW51c2VkX2RhdGEsIHVudXNlZF9kYXRhKQogCiAgICAgZGVmIHRlc3RFT0ZFcnJvcihzZWxmKToKLSAgICAgICAgIyAiQ2FsbGluZyBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIGFmdGVyIEVPUyBtdXN0IHJhaXNlIEVPRkVycm9yIgogICAgICAgICBiejJkID0gQloyRGVjb21wcmVzc29yKCkKICAgICAgICAgdGV4dCA9IGJ6MmQuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBiejJkLmRlY29tcHJlc3MsIGIiYW55dGhpbmciKQogCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0RGVjb21wcmVzczRHKHNlbGYsIHNpemUpOgorICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYmxvY2tzaXplID0gMTAgKiAxMDI0ICogMTAyNAorICAgICAgICBibG9jayA9IHJhbmRvbS5nZXRyYW5kYml0cyhibG9ja3NpemUgKiA4KS50b19ieXRlcyhibG9ja3NpemUsICdsaXR0bGUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6Mi5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBkZWNvbXByZXNzZWQgPSBiejJkLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZWNvbXByZXNzZWQgPT0gZGF0YSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgICAgICBjb21wcmVzc2VkID0gTm9uZQorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gTm9uZQogCi1jbGFzcyBGdW5jVGVzdChCYXNlVGVzdCk6Ci0gICAgIlRlc3QgbW9kdWxlIGZ1bmN0aW9ucyIKIAorY2xhc3MgQ29tcHJlc3NEZWNvbXByZXNzVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RDb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBjb21wcmVzcygpIGZ1bmN0aW9uIgogICAgICAgICBkYXRhID0gYnoyLmNvbXByZXNzKHNlbGYuVEVYVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZGF0YSksIHNlbGYuVEVYVCkKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzRW1wdHkoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIHdpdGggZW1wdHkgc3RyaW5nIgogICAgICAgICB0ZXh0ID0gYnoyLmRlY29tcHJlc3MoYiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIGIiIikKIAogICAgIGRlZiB0ZXN0RGVjb21wcmVzc0luY29tcGxldGUoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgZGVjb21wcmVzcygpIGZ1bmN0aW9uIHdpdGggaW5jb21wbGV0ZSBkYXRhIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejIuZGVjb21wcmVzcywgc2VsZi5EQVRBWzotMTBdKQogCisgICAgZGVmIHRlc3REZWNvbXByZXNzTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEgKiA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCisKKworY2xhc3MgT3BlblRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0X3RleHRfbW9kZXMoc2VsZik6CisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHRleHRfbmF0aXZlX2VvbCA9IHRleHQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB0ZXh0X25hdGl2ZV9lb2wgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB0ZXh0ID0gc2VsZi5URVhULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB0ZXh0X25hdGl2ZV9lb2wgPSB0ZXh0LnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYtbGUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHRleHQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZ19lcnJvcl9oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIG5ld2xpbmU9IlxyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgQloyRmlsZVRlc3QsCiAgICAgICAgIEJaMkNvbXByZXNzb3JUZXN0LAogICAgICAgICBCWjJEZWNvbXByZXNzb3JUZXN0LAotICAgICAgICBGdW5jVGVzdAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NUZXN0LAorICAgICAgICBPcGVuVGVzdCwKICAgICApCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQotCi0jIHZpbTp0cz00OnN3PTQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IDk0OGExMTkuLmU1OTRlMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNSw4ICs1LDE5IEBACiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogaW1wb3J0IHRpbWUKIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBzeXMKIGltcG9ydCBkYXRldGltZQogCityZXN1bHRfMjAwNF8wMV90ZXh0ID0gIiIiCisgICAgSmFudWFyeSAyMDA0CitNbyBUdSBXZSBUaCBGciBTYSBTdQorICAgICAgICAgIDEgIDIgIDMgIDQKKyA1ICA2ICA3ICA4ICA5IDEwIDExCisxMiAxMyAxNCAxNSAxNiAxNyAxOAorMTkgMjAgMjEgMjIgMjMgMjQgMjUKKzI2IDI3IDI4IDI5IDMwIDMxCisiIiIKKwogcmVzdWx0XzIwMDRfdGV4dCA9ICIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDQKIApAQCAtNDYsMTEgKzU3LDExIEBACiAiIiIKIAogcmVzdWx0XzIwMDRfaHRtbCA9ICIiIgotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iYXNjaWkiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiUoZSlzIj8+CiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbD4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9YXNjaWkiIC8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lKGUpcyIgLz4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNhbGVuZGFyLmNzcyIgLz4KIDx0aXRsZT5DYWxlbmRhciBmb3IgMjAwNDwvdGl0bGU+CiA8L2hlYWQ+CkBAIC0xNzAsNiArMTgxLDEzNSBAQAogPC9odG1sPgogIiIiCiAKK3Jlc3VsdF8yMDA0X2RheXMgPSBbCisgICAgW1tbMCwgMCwgMCwgMSwgMiwgMywgNF0sCisgICAgICBbNSwgNiwgNywgOCwgOSwgMTAsIDExXSwKKyAgICAgIFsxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOF0sCisgICAgICBbMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVdLAorICAgICAgWzI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAwLCAxXSwKKyAgICAgIFsyLCAzLCA0LCA1LCA2LCA3LCA4XSwKKyAgICAgIFs5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XSwKKyAgICAgIFsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMl0sCisgICAgICBbMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldXSwKKyAgICAgW1sxLCAyLCAzLCA0LCA1LCA2LCA3XSwKKyAgICAgIFs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdLAorICAgICAgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxXSwKKyAgICAgIFsyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOF0sCisgICAgICBbMjksIDMwLCAzMSwgMCwgMCwgMCwgMF1dXSwKKyAgICBbW1swLCAwLCAwLCAxLCAyLCAzLCA0XSwKKyAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdLAorICAgICAgWzEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XSwKKyAgICAgIFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNV0sCisgICAgICBbMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMSwgMl0sCisgICAgICBbMywgNCwgNSwgNiwgNywgOCwgOV0sCisgICAgICBbMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdLAorICAgICAgWzE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzXSwKKyAgICAgIFsyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMF0sCisgICAgICBbMzEsIDAsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAxLCAyLCAzLCA0LCA1LCA2XSwKKyAgICAgIFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10sCisgICAgICBbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdLAorICAgICAgWzIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3XSwKKyAgICAgIFsyOCwgMjksIDMwLCAwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDEsIDIsIDMsIDRdLAorICAgICAgWzUsIDYsIDcsIDgsIDksIDEwLCAxMV0sCisgICAgICBbMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLAorICAgICAgWzE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XSwKKyAgICAgIFsyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMCwgMV0sCisgICAgICBbMiwgMywgNCwgNSwgNiwgNywgOF0sCisgICAgICBbOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICBbMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjJdLAorICAgICAgWzIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSwKKyAgICAgIFszMCwgMzEsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAwLCAxLCAyLCAzLCA0LCA1XSwKKyAgICAgIFs2LCA3LCA4LCA5LCAxMCwgMTEsIDEyXSwKKyAgICAgIFsxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOV0sCisgICAgICBbMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjZdLAorICAgICAgWzI3LCAyOCwgMjksIDMwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDAsIDEsIDIsIDNdLAorICAgICAgWzQsIDUsIDYsIDcsIDgsIDksIDEwXSwKKyAgICAgIFsxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10sCisgICAgICBbMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjRdLAorICAgICAgWzI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxXV0sCisgICAgIFtbMSwgMiwgMywgNCwgNSwgNiwgN10sCisgICAgICBbOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0XSwKKyAgICAgIFsxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMV0sCisgICAgICBbMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjhdLAorICAgICAgWzI5LCAzMCwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDAsIDEsIDIsIDMsIDQsIDVdLAorICAgICAgWzYsIDcsIDgsIDksIDEwLCAxMSwgMTJdLAorICAgICAgWzEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XSwKKyAgICAgIFsyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNl0sCisgICAgICBbMjcsIDI4LCAyOSwgMzAsIDMxLCAwLCAwXV1dCitdCisKK3Jlc3VsdF8yMDA0X2RhdGVzID0gXAorICAgIFtbWycxMi8yOS8wMyAxMi8zMC8wMyAxMi8zMS8wMyAwMS8wMS8wNCAwMS8wMi8wNCAwMS8wMy8wNCAwMS8wNC8wNCcsCisgICAgICAgJzAxLzA1LzA0IDAxLzA2LzA0IDAxLzA3LzA0IDAxLzA4LzA0IDAxLzA5LzA0IDAxLzEwLzA0IDAxLzExLzA0JywKKyAgICAgICAnMDEvMTIvMDQgMDEvMTMvMDQgMDEvMTQvMDQgMDEvMTUvMDQgMDEvMTYvMDQgMDEvMTcvMDQgMDEvMTgvMDQnLAorICAgICAgICcwMS8xOS8wNCAwMS8yMC8wNCAwMS8yMS8wNCAwMS8yMi8wNCAwMS8yMy8wNCAwMS8yNC8wNCAwMS8yNS8wNCcsCisgICAgICAgJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0J10sCisgICAgICBbJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0JywKKyAgICAgICAnMDIvMDIvMDQgMDIvMDMvMDQgMDIvMDQvMDQgMDIvMDUvMDQgMDIvMDYvMDQgMDIvMDcvMDQgMDIvMDgvMDQnLAorICAgICAgICcwMi8wOS8wNCAwMi8xMC8wNCAwMi8xMS8wNCAwMi8xMi8wNCAwMi8xMy8wNCAwMi8xNC8wNCAwMi8xNS8wNCcsCisgICAgICAgJzAyLzE2LzA0IDAyLzE3LzA0IDAyLzE4LzA0IDAyLzE5LzA0IDAyLzIwLzA0IDAyLzIxLzA0IDAyLzIyLzA0JywKKyAgICAgICAnMDIvMjMvMDQgMDIvMjQvMDQgMDIvMjUvMDQgMDIvMjYvMDQgMDIvMjcvMDQgMDIvMjgvMDQgMDIvMjkvMDQnXSwKKyAgICAgIFsnMDMvMDEvMDQgMDMvMDIvMDQgMDMvMDMvMDQgMDMvMDQvMDQgMDMvMDUvMDQgMDMvMDYvMDQgMDMvMDcvMDQnLAorICAgICAgICcwMy8wOC8wNCAwMy8wOS8wNCAwMy8xMC8wNCAwMy8xMS8wNCAwMy8xMi8wNCAwMy8xMy8wNCAwMy8xNC8wNCcsCisgICAgICAgJzAzLzE1LzA0IDAzLzE2LzA0IDAzLzE3LzA0IDAzLzE4LzA0IDAzLzE5LzA0IDAzLzIwLzA0IDAzLzIxLzA0JywKKyAgICAgICAnMDMvMjIvMDQgMDMvMjMvMDQgMDMvMjQvMDQgMDMvMjUvMDQgMDMvMjYvMDQgMDMvMjcvMDQgMDMvMjgvMDQnLAorICAgICAgICcwMy8yOS8wNCAwMy8zMC8wNCAwMy8zMS8wNCAwNC8wMS8wNCAwNC8wMi8wNCAwNC8wMy8wNCAwNC8wNC8wNCddXSwKKyAgICAgW1snMDMvMjkvMDQgMDMvMzAvMDQgMDMvMzEvMDQgMDQvMDEvMDQgMDQvMDIvMDQgMDQvMDMvMDQgMDQvMDQvMDQnLAorICAgICAgICcwNC8wNS8wNCAwNC8wNi8wNCAwNC8wNy8wNCAwNC8wOC8wNCAwNC8wOS8wNCAwNC8xMC8wNCAwNC8xMS8wNCcsCisgICAgICAgJzA0LzEyLzA0IDA0LzEzLzA0IDA0LzE0LzA0IDA0LzE1LzA0IDA0LzE2LzA0IDA0LzE3LzA0IDA0LzE4LzA0JywKKyAgICAgICAnMDQvMTkvMDQgMDQvMjAvMDQgMDQvMjEvMDQgMDQvMjIvMDQgMDQvMjMvMDQgMDQvMjQvMDQgMDQvMjUvMDQnLAorICAgICAgICcwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCddLAorICAgICAgWycwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCcsCisgICAgICAgJzA1LzAzLzA0IDA1LzA0LzA0IDA1LzA1LzA0IDA1LzA2LzA0IDA1LzA3LzA0IDA1LzA4LzA0IDA1LzA5LzA0JywKKyAgICAgICAnMDUvMTAvMDQgMDUvMTEvMDQgMDUvMTIvMDQgMDUvMTMvMDQgMDUvMTQvMDQgMDUvMTUvMDQgMDUvMTYvMDQnLAorICAgICAgICcwNS8xNy8wNCAwNS8xOC8wNCAwNS8xOS8wNCAwNS8yMC8wNCAwNS8yMS8wNCAwNS8yMi8wNCAwNS8yMy8wNCcsCisgICAgICAgJzA1LzI0LzA0IDA1LzI1LzA0IDA1LzI2LzA0IDA1LzI3LzA0IDA1LzI4LzA0IDA1LzI5LzA0IDA1LzMwLzA0JywKKyAgICAgICAnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnXSwKKyAgICAgIFsnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnLAorICAgICAgICcwNi8wNy8wNCAwNi8wOC8wNCAwNi8wOS8wNCAwNi8xMC8wNCAwNi8xMS8wNCAwNi8xMi8wNCAwNi8xMy8wNCcsCisgICAgICAgJzA2LzE0LzA0IDA2LzE1LzA0IDA2LzE2LzA0IDA2LzE3LzA0IDA2LzE4LzA0IDA2LzE5LzA0IDA2LzIwLzA0JywKKyAgICAgICAnMDYvMjEvMDQgMDYvMjIvMDQgMDYvMjMvMDQgMDYvMjQvMDQgMDYvMjUvMDQgMDYvMjYvMDQgMDYvMjcvMDQnLAorICAgICAgICcwNi8yOC8wNCAwNi8yOS8wNCAwNi8zMC8wNCAwNy8wMS8wNCAwNy8wMi8wNCAwNy8wMy8wNCAwNy8wNC8wNCddXSwKKyAgICAgW1snMDYvMjgvMDQgMDYvMjkvMDQgMDYvMzAvMDQgMDcvMDEvMDQgMDcvMDIvMDQgMDcvMDMvMDQgMDcvMDQvMDQnLAorICAgICAgICcwNy8wNS8wNCAwNy8wNi8wNCAwNy8wNy8wNCAwNy8wOC8wNCAwNy8wOS8wNCAwNy8xMC8wNCAwNy8xMS8wNCcsCisgICAgICAgJzA3LzEyLzA0IDA3LzEzLzA0IDA3LzE0LzA0IDA3LzE1LzA0IDA3LzE2LzA0IDA3LzE3LzA0IDA3LzE4LzA0JywKKyAgICAgICAnMDcvMTkvMDQgMDcvMjAvMDQgMDcvMjEvMDQgMDcvMjIvMDQgMDcvMjMvMDQgMDcvMjQvMDQgMDcvMjUvMDQnLAorICAgICAgICcwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCddLAorICAgICAgWycwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCcsCisgICAgICAgJzA4LzAyLzA0IDA4LzAzLzA0IDA4LzA0LzA0IDA4LzA1LzA0IDA4LzA2LzA0IDA4LzA3LzA0IDA4LzA4LzA0JywKKyAgICAgICAnMDgvMDkvMDQgMDgvMTAvMDQgMDgvMTEvMDQgMDgvMTIvMDQgMDgvMTMvMDQgMDgvMTQvMDQgMDgvMTUvMDQnLAorICAgICAgICcwOC8xNi8wNCAwOC8xNy8wNCAwOC8xOC8wNCAwOC8xOS8wNCAwOC8yMC8wNCAwOC8yMS8wNCAwOC8yMi8wNCcsCisgICAgICAgJzA4LzIzLzA0IDA4LzI0LzA0IDA4LzI1LzA0IDA4LzI2LzA0IDA4LzI3LzA0IDA4LzI4LzA0IDA4LzI5LzA0JywKKyAgICAgICAnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnXSwKKyAgICAgIFsnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnLAorICAgICAgICcwOS8wNi8wNCAwOS8wNy8wNCAwOS8wOC8wNCAwOS8wOS8wNCAwOS8xMC8wNCAwOS8xMS8wNCAwOS8xMi8wNCcsCisgICAgICAgJzA5LzEzLzA0IDA5LzE0LzA0IDA5LzE1LzA0IDA5LzE2LzA0IDA5LzE3LzA0IDA5LzE4LzA0IDA5LzE5LzA0JywKKyAgICAgICAnMDkvMjAvMDQgMDkvMjEvMDQgMDkvMjIvMDQgMDkvMjMvMDQgMDkvMjQvMDQgMDkvMjUvMDQgMDkvMjYvMDQnLAorICAgICAgICcwOS8yNy8wNCAwOS8yOC8wNCAwOS8yOS8wNCAwOS8zMC8wNCAxMC8wMS8wNCAxMC8wMi8wNCAxMC8wMy8wNCddXSwKKyAgICAgW1snMDkvMjcvMDQgMDkvMjgvMDQgMDkvMjkvMDQgMDkvMzAvMDQgMTAvMDEvMDQgMTAvMDIvMDQgMTAvMDMvMDQnLAorICAgICAgICcxMC8wNC8wNCAxMC8wNS8wNCAxMC8wNi8wNCAxMC8wNy8wNCAxMC8wOC8wNCAxMC8wOS8wNCAxMC8xMC8wNCcsCisgICAgICAgJzEwLzExLzA0IDEwLzEyLzA0IDEwLzEzLzA0IDEwLzE0LzA0IDEwLzE1LzA0IDEwLzE2LzA0IDEwLzE3LzA0JywKKyAgICAgICAnMTAvMTgvMDQgMTAvMTkvMDQgMTAvMjAvMDQgMTAvMjEvMDQgMTAvMjIvMDQgMTAvMjMvMDQgMTAvMjQvMDQnLAorICAgICAgICcxMC8yNS8wNCAxMC8yNi8wNCAxMC8yNy8wNCAxMC8yOC8wNCAxMC8yOS8wNCAxMC8zMC8wNCAxMC8zMS8wNCddLAorICAgICAgWycxMS8wMS8wNCAxMS8wMi8wNCAxMS8wMy8wNCAxMS8wNC8wNCAxMS8wNS8wNCAxMS8wNi8wNCAxMS8wNy8wNCcsCisgICAgICAgJzExLzA4LzA0IDExLzA5LzA0IDExLzEwLzA0IDExLzExLzA0IDExLzEyLzA0IDExLzEzLzA0IDExLzE0LzA0JywKKyAgICAgICAnMTEvMTUvMDQgMTEvMTYvMDQgMTEvMTcvMDQgMTEvMTgvMDQgMTEvMTkvMDQgMTEvMjAvMDQgMTEvMjEvMDQnLAorICAgICAgICcxMS8yMi8wNCAxMS8yMy8wNCAxMS8yNC8wNCAxMS8yNS8wNCAxMS8yNi8wNCAxMS8yNy8wNCAxMS8yOC8wNCcsCisgICAgICAgJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0J10sCisgICAgICBbJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0JywKKyAgICAgICAnMTIvMDYvMDQgMTIvMDcvMDQgMTIvMDgvMDQgMTIvMDkvMDQgMTIvMTAvMDQgMTIvMTEvMDQgMTIvMTIvMDQnLAorICAgICAgICcxMi8xMy8wNCAxMi8xNC8wNCAxMi8xNS8wNCAxMi8xNi8wNCAxMi8xNy8wNCAxMi8xOC8wNCAxMi8xOS8wNCcsCisgICAgICAgJzEyLzIwLzA0IDEyLzIxLzA0IDEyLzIyLzA0IDEyLzIzLzA0IDEyLzI0LzA0IDEyLzI1LzA0IDEyLzI2LzA0JywKKyAgICAgICAnMTIvMjcvMDQgMTIvMjgvMDQgMTIvMjkvMDQgMTIvMzAvMDQgMTIvMzEvMDQgMDEvMDEvMDUgMDEvMDIvMDUnXV1dCisKIAogY2xhc3MgT3V0cHV0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBub3JtYWxpemVfY2FsZW5kYXIoc2VsZiwgcyk6CkBAIC0xNzgsMTIgKzMxOCwxOSBAQAogICAgICAgICAgICAgcmV0dXJuIG5vdCBjLmlzc3BhY2UoKSBhbmQgbm90IGMuaXNkaWdpdCgpCiAKICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoRmFsc2UpOgorICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpOgogICAgICAgICAgICAgIyBEcm9wIHRleHRzLCBhcyB0aGV5IGFyZSBsb2NhbGUgZGVwZW5kZW50CiAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgZmlsdGVyKG5laXRoZXJzcGFjZW5vcmRpZ2l0LCBsaW5lKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKKyAgICBkZWYgY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKHNlbGYsIHJlcSwgcmVzKToKKyAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1yZXEpLnN0cmlwKGInIFx0XG4nKSwKKyAgICAgICAgICAgIChyZXN1bHRfMjAwNF9odG1sICUgeydlJzogcmVzfSkuc3RyaXAoJyBcdFxuJykuZW5jb2RlKHJlcykKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2VsZi5ub3JtYWxpemVfY2FsZW5kYXIoY2FsZW5kYXIuY2FsZW5kYXIoMjAwNCkpLApAQCAtMTk2LDEyICszNDMsNjAgQEAKICAgICAgICAgICAgIHJlc3VsdF8yMDA0X3RleHQuc3RyaXAoKQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyKHNlbGYpOgotICAgICAgICBlbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX2FzY2lpKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygnYXNjaWknLCAnYXNjaWknKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ191dGY4KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygndXRmLTgnLCAndXRmLTgnKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ19kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZyhOb25lLCBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkpCisKKyAgICBkZWYgdGVzdF95ZWFyZGF0ZXNjYWxlbmRhcihzZWxmKToKKyAgICAgICAgZGVmIHNocmluayhjYWwpOgorICAgICAgICAgICAgcmV0dXJuIFtbWycgJy5qb2luKCd7OjAyZH0vezowMmR9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQubW9udGgsIGQuZGF5LCBzdHIoZC55ZWFyKVstMjpdKSBmb3IgZCBpbiB6KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB6IGluIHldIGZvciB5IGluIHhdIGZvciB4IGluIGNhbF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1lbmNvZGluZykuc3RyaXAoYicgXHRcbicpLAotICAgICAgICAgICAgcmVzdWx0XzIwMDRfaHRtbC5zdHJpcCgnIFx0XG4nKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzaHJpbmsoY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF0ZXNjYWxlbmRhcigyMDA0KSksCisgICAgICAgICAgICByZXN1bHRfMjAwNF9kYXRlcworICAgICAgICApCisKKyAgICBkZWYgdGVzdF95ZWFyZGF5c2NhbGVuZGFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF5c2NhbGVuZGFyKDIwMDQpLAorICAgICAgICAgICAgcmVzdWx0XzIwMDRfZGF5cworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXR3ZWVraGVhZGVyX3Nob3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcigyKSwKKyAgICAgICAgICAgICdNbyBUdSBXZSBUaCBGciBTYSBTdScKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0d2Vla2hlYWRlcl9sb25nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcig5KSwKKyAgICAgICAgICAgICcgIE1vbmRheSAgIFR1ZXNkYXkgIFdlZG5lc2RheSAgVGh1cnNkYXkgJworICAgICAgICAgICAgJyAgRnJpZGF5ICAgU2F0dXJkYXkgICBTdW5kYXkgJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLmZvcm1hdG1vbnRoKDIwMDQsIDEpLnN0cmlwKCksCisgICAgICAgICAgICByZXN1bHRfMjAwNF8wMV90ZXh0LnN0cmlwKCkKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1UcnVlKSwKKyAgICAgICAgICAgICc8dHI+PHRoIGNvbHNwYW49IjciIGNsYXNzPSJtb250aCI+SmFudWFyeSAyMDA0PC90aD48L3RyPicKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhvdXRfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1GYWxzZSksCisgICAgICAgICAgICAnPHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0ibW9udGgiPkphbnVhcnk8L3RoPjwvdHI+JwogICAgICAgICApCiAKIApAQCAtMjI3LDcgKzQyMiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGVuZGFyLmZpcnN0d2Vla2RheSgpLCBjYWxlbmRhci5NT05EQVkpCiAgICAgICAgIGNhbGVuZGFyLnNldGZpcnN0d2Vla2RheShvcmlnKQogCi0gICAgZGVmIHRlc3RfZW51bWVyYXRld2Vla2RheXMoc2VsZik6CisgICAgZGVmIHRlc3RfaWxsZWdhbF93ZWVrZGF5X3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbFdlZWtkYXlFcnJvciwgJzEyMycpOgorICAgICAgICAgICAgY2FsZW5kYXIuc2V0Zmlyc3R3ZWVrZGF5KDEyMykKKworICAgIGRlZiB0ZXN0X2VudW1lcmF0ZV93ZWVrZGF5cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X2FiYnIuX19nZXRpdGVtX18sIC0xMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X25hbWUuX19nZXRpdGVtX18sIDEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihbZCBmb3IgZCBpbiBjYWxlbmRhci5kYXlfYWJicl0pLCA3KQpAQCAtMjUzLDcgKzQ1Miw3IEBACiAgICAgICAgICAgICAjIHZlcmlmeSBpdCAiYWN0cyBsaWtlIGEgc2VxdWVuY2UiIGluIHR3byBmb3JtcyBvZiBpdGVyYXRpb24KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbOjotMV0sIGxpc3QocmV2ZXJzZWQodmFsdWUpKSkKIAotICAgIGRlZiB0ZXN0X2xvY2FsZWNhbGVuZGFycyhzZWxmKToKKyAgICBkZWYgdGVzdF9sb2NhbGVfY2FsZW5kYXJzKHNlbGYpOgogICAgICAgICAjIGVuc3VyZSB0aGF0IExvY2FsZXtUZXh0LEhUTUx9Q2FsZW5kYXIgcmVzZXRzIHRoZSBsb2NhbGUgcHJvcGVybHkKICAgICAgICAgIyAoaXQgaXMgc3RpbGwgbm90IHRocmVhZC1zYWZlIHRob3VnaCkKICAgICAgICAgb2xkX29jdG9iZXIgPSBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXRtb250aG5hbWUoMjAxMCwgMTAsIDEwKQpAQCAtNDM3LDYgKzYzNiwxMCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNhbGVuZGFyLklsbGVnYWxNb250aEVycm9yKToKICAgICAgICAgICAgIGNhbGVuZGFyLm1vbnRocmFuZ2UoMjAwNCwgMTMpCiAKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX21vbnRoX3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbE1vbnRoRXJyb3IsICc2NScpOgorICAgICAgICAgICAgY2FsZW5kYXIubW9udGhyYW5nZSgyMDA0LCA2NSkKKwogY2xhc3MgTGVhcGRheXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfbm9fcmFuZ2Uoc2VsZik6CiAgICAgICAgICMgdGVzdCB3aGVuIG5vIHJhbmdlIGkuZS4gdHdvIGlkZW50aWNhbCB5ZWFycyBhcyBhcmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggNGQ5MzFmOC4uZDNjNGEwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNTIsMTMgKzUyLDM2IEBACiAgICAgICAgIChvdXQsIGVycikgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgIyBUaGlzIHVzZWQgdG8gY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucnN0cmlwKCksCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIucnN0cmlwKCkuc3RhcnRzd2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZhdGFsIFB5dGhvbiBlcnJvcjonCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicgUHlUaHJlYWRTdGF0ZV9HZXQ6IG5vIGN1cnJlbnQgdGhyZWFkJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyBQeVRocmVhZFN0YXRlX0dldDogbm8gY3VycmVudCB0aHJlYWQnKSkKIAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZnJvbV9OVUxMX3BvaW50ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5tYWtlX21lbW9yeXZpZXdfZnJvbV9OVUxMX3BvaW50ZXIpCiAKKyAgICBkZWYgdGVzdF9leGNfaW5mbyhzZWxmKToKKyAgICAgICAgcmFpc2VkX2V4Y2VwdGlvbiA9IFZhbHVlRXJyb3IoIjUiKQorICAgICAgICBuZXdfZXhjID0gVHlwZUVycm9yKCJURVNUIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgcmFpc2VkX2V4Y2VwdGlvbgorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIG9yaWdfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIG9yaWdfZXhjX2luZm8gPSBfdGVzdGNhcGkuc2V0X2V4Y19pbmZvKG5ld19leGMuX19jbGFzc19fLCBuZXdfZXhjLCBOb25lKQorICAgICAgICAgICAgbmV3X3N5c19leGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBuZXdfZXhjX2luZm8gPSBfdGVzdGNhcGkuc2V0X2V4Y19pbmZvKCpvcmlnX2V4Y19pbmZvKQorICAgICAgICAgICAgcmVzZXRfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnX2V4Y19pbmZvWzFdLCBlKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwob3JpZ19leGNfaW5mbywgKHJhaXNlZF9leGNlcHRpb24uX19jbGFzc19fLCByYWlzZWRfZXhjZXB0aW9uLCB0YikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwob3JpZ19zeXNfZXhjX2luZm8sIG9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwocmVzZXRfc3lzX2V4Y19pbmZvLCBvcmlnX2V4Y19pbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKG5ld19leGNfaW5mbywgKG5ld19leGMuX19jbGFzc19fLCBuZXdfZXhjLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChuZXdfc3lzX2V4Y19pbmZvLCBuZXdfZXhjX2luZm8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfcG9zaXhzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3Rfc2VxX2J5dGVzX3RvX2NoYXJwX2FycmF5KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNTczMjogY3Jhc2ggaW4gX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoKQpAQCAtMjIyLDkgKzI0NSw4MCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MuY2hkaXIob2xkY3dkKQogCitjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJZiB0aGlzIHRlc3QgZmFpbGVkLCB5b3UgcHJvYmFibHkgYWRkZWQgYSBuZXcgImZvcm1hdCB1bml0IgorICAgICAgICBpbiBQeXRob24vZ2V0YXJncy5jLCBidXQgbmVnbGVjdGVkIHRvIHVwZGF0ZSBvdXIgcG9vciBmcmllbmQKKyAgICAgICAgc2tpcGl0ZW0oKSBpbiB0aGUgc2FtZSBmaWxlLiAgKElmIHNvLCBzaGFtZSBvbiB5b3UhKQorCisgICAgICAgIFdpdGggYSBmZXcgZXhjZXB0aW9ucyoqLCB0aGlzIGZ1bmN0aW9uIGJydXRlLWZvcmNlIHRlc3RzIGFsbAorICAgICAgICBwcmludGFibGUgQVNDSUkqKiogY2hhcmFjdGVycyAoMzIgdG8gMTI2IGluY2x1c2l2ZSkgYXMgZm9ybWF0IHVuaXRzLAorICAgICAgICBjaGVja2luZyB0byBzZWUgdGhhdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSByZXR1cm4gY29uc2lzdGVudAorICAgICAgICBlcnJvcnMgYm90aCB3aGVuIHRoZSB1bml0IGlzIGF0dGVtcHRlZCB0byBiZSB1c2VkIGFuZCB3aGVuIGl0IGlzCisgICAgICAgIHNraXBwZWQuICBJZiB0aGUgZm9ybWF0IHVuaXQgZG9lc24ndCBleGlzdCwgd2UnbGwgZ2V0IG9uZSBvZiB0d28KKyAgICAgICAgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgKG9uZSBmb3IgdXNlZCwgb25lIGZvciBza2lwcGVkKTsgaWYgaXQgZG9lcworICAgICAgICBleGlzdCB3ZSAqd29uJ3QqIGdldCB0aGF0IGVycm9yLS13ZSdsbCBnZXQgZWl0aGVyIG5vIGVycm9yIG9yIHNvbWUKKyAgICAgICAgb3RoZXIgZXJyb3IuICBJZiB3ZSBnZXQgdGhlIHNwZWNpZmljICJkb2VzIG5vdCBleGlzdCIgZXJyb3IgZm9yIG9uZQorICAgICAgICB0ZXN0IGFuZCBub3QgZm9yIHRoZSBvdGhlciwgdGhlcmUncyBhIG1pc21hdGNoLCBhbmQgdGhlIHRlc3QgZmFpbHMuCisKKyAgICAgICAgICAgKiogU29tZSBmb3JtYXQgdW5pdHMgaGF2ZSBzcGVjaWFsIGZ1bm55IHNlbWFudGljcyBhbmQgaXQgd291bGQKKyAgICAgICAgICAgICAgYmUgZGlmZmljdWx0IHRvIGFjY29tb2RhdGUgdGhlbSBoZXJlLiAgU2luY2UgdGhlc2UgYXJlIGFsbAorICAgICAgICAgICAgICB3ZWxsLWVzdGFibGlzaGVkIGFuZCBwcm9wZXJseSBza2lwcGVkIGluIHNraXBpdGVtKCkgd2UgY2FuCisgICAgICAgICAgICAgIGdldCBhd2F5IHdpdGggbm90IHRlc3RpbmcgdGhlbS0tdGhpcyB0ZXN0IGlzIHJlYWxseSBpbnRlbmRlZAorICAgICAgICAgICAgICB0byBjYXRjaCAqbmV3KiBmb3JtYXQgdW5pdHMuCisKKyAgICAgICAgICAqKiogUHl0aG9uIEMgc291cmNlIGZpbGVzIG11c3QgYmUgQVNDSUkuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlCisgICAgICAgICAgICAgIHRvIGhhdmUgbm9uLUFTQ0lJIGZvcm1hdCB1bml0cy4KKworICAgICAgICAiIiIKKyAgICAgICAgZW1wdHlfdHVwbGUgPSAoKQorICAgICAgICB0dXBsZV8xID0gKDAsKQorICAgICAgICBkaWN0X2IgPSB7J2InOjF9CisgICAgICAgIGtleXdvcmRzID0gWyJhIiwgImIiXQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMyLCAxMjcpOgorICAgICAgICAgICAgYyA9IGNocihpKQorCisgICAgICAgICAgICAjIHNraXAgcGFyZW50aGVzZXMsIHRoZSBlcnJvciByZXBvcnRpbmcgaXMgaW5jb25zaXN0ZW50IGFib3V0IHRoZW0KKyAgICAgICAgICAgICMgc2tpcCAnZScsIGl0J3MgYWx3YXlzIGEgdHdvLWNoYXJhY3RlciBjb2RlCisgICAgICAgICAgICAjIHNraXAgJ3wnIGFuZCAnJCcsIHRoZXkgZG9uJ3QgcmVwcmVzZW50IGFyZ3VtZW50cyBhbnl3YXkKKyAgICAgICAgICAgIGlmIGMgaW4gJygpZXwkJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gbm90IHNraXBwZWQKKyAgICAgICAgICAgIGZvcm1hdCA9IGMgKyAiaSIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIChub3RlOiB0aGUgZm9ybWF0IHN0cmluZyBtdXN0IGJlIGJ5dGVzISkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHR1cGxlXzEsIGRpY3RfYiwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIG11c3QgYmUgaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+LCBub3QgaW50IgorICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBza2lwcGVkCisgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQgPSAifCIgKyBmb3JtYXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKGVtcHR5X3R1cGxlLCBkaWN0X2IsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQorICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQorCisgICAgICAgICAgICBtZXNzYWdlID0gKCJ0ZXN0X3NraXBpdGVtX3Bhcml0eTogIgorICAgICAgICAgICAgICAgICJkZXRlY3RlZCBtaXNtYXRjaCBiZXR3ZWVuIGNvbnZlcnRzaW1wbGUgYW5kIHNraXBpdGVtICIKKyAgICAgICAgICAgICAgICAiZm9yIGZvcm1hdCB1bml0ICd7fScgKHt9KSwgbm90IHNraXBwZWQge30sIHNraXBwZWQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYywgaSwgd2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkLCBtZXNzYWdlKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0FQSVRlc3QsIFRlc3RQZW5kaW5nQ2FsbHMsIFRlc3Q2MDEyLCBFbWJlZGRpbmdUZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENBUElUZXN0LCBUZXN0UGVuZGluZ0NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q2MDEyLCBFbWJlZGRpbmdUZXN0LCBTa2lwaXRlbVRlc3QpCiAKICAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCd0ZXN0XycpOgpAQCAtMjQxLDE4ICszMzUsMTcgQEAKICAgICAgICAgaWRlbnRzID0gW10KIAogICAgICAgICBkZWYgY2FsbGJhY2soKToKLSAgICAgICAgICAgIGlkZW50cy5hcHBlbmQoX3RocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgICAgIGlkZW50cy5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogCiAgICAgICAgIF90ZXN0Y2FwaS5fdGVzdF90aHJlYWRfc3RhdGUoY2FsbGJhY2spCiAgICAgICAgIGEgPSBiID0gY2FsbGJhY2sKICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAjIENoZWNrIG91ciBtYWluIHRocmVhZCBpcyBpbiB0aGUgbGlzdCBleGFjdGx5IDMgdGltZXMuCi0gICAgICAgIGlmIGlkZW50cy5jb3VudChfdGhyZWFkLmdldF9pZGVudCgpKSAhPSAzOgorICAgICAgICBpZiBpZGVudHMuY291bnQodGhyZWFkaW5nLmdldF9pZGVudCgpKSAhPSAzOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgbWFpbiB0aHJlYWQgY29ycmVjdGx5IGluIHRoZSBsaXN0IikKIAogICAgIGlmIHRocmVhZGluZzoKLSAgICAgICAgaW1wb3J0IF90aHJlYWQKICAgICAgICAgaW1wb3J0IHRpbWUKICAgICAgICAgVGVzdFRocmVhZFN0YXRlKCkKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PVRlc3RUaHJlYWRTdGF0ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggMzAzMWZiMy4uNTUxMGEwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTwogCiBjbGFzcyBIYWNrZWRTeXNNb2R1bGU6CkBAIC0xMTksOSArMTIwLDEzIEBACiBjbGFzcyBDZ2lUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QgJmFtcDsgc3RyaW5nIiwgY2dpLmVzY2FwZSgidGVzdCAmIHN0cmluZyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImcXVvdDt0ZXN0IHN0cmluZyZxdW90OyIsIGNnaS5lc2NhcGUoJyJ0ZXN0IHN0cmluZyInLCBUcnVlKSkKKyAgICAgICAgIyBjZ2kuZXNjYXBlKCkgaXMgZGVwcmVjYXRlZC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICdjZ2lcLmVzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJnF1b3Q7dGVzdCBzdHJpbmcmcXVvdDsiLCBjZ2kuZXNjYXBlKCcidGVzdCBzdHJpbmciJywgVHJ1ZSkpCiAKICAgICBkZWYgdGVzdF9zdHJpY3Qoc2VsZik6CiAgICAgICAgIGZvciBvcmlnLCBleHBlY3QgaW4gcGFyc2Vfc3RyaWN0X3Rlc3RfY2FzZXM6CkBAIC0xNjAsMTMgKzE2NSw3IEBACiAgICAgICAgICAgICBjZ2kubG9nZnAgPSBOb25lCiAgICAgICAgICAgICBjZ2kubG9nZmlsZSA9ICIvZGV2L251bGwiCiAgICAgICAgICAgICBjZ2kuaW5pdGxvZygiJXMiLCAiVGVzdGluZyBsb2cgMyIpCi0gICAgICAgICAgICBkZWYgbG9nX2NsZWFudXAoKToKLSAgICAgICAgICAgICAgICAiIiJSZXN0b3JlIHRoZSBnbG9iYWwgc3RhdGUgb2YgdGhlIGxvZyB2YXJzLiIiIgotICAgICAgICAgICAgICAgIGNnaS5sb2dmaWxlID0gJycKLSAgICAgICAgICAgICAgICBjZ2kubG9nZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNnaS5sb2dmcCA9IE5vbmUKLSAgICAgICAgICAgICAgICBjZ2kubG9nID0gY2dpLmluaXRsb2cKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dfY2xlYW51cCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjZ2kuY2xvc2Vsb2cpCiAgICAgICAgICAgICBjZ2kubG9nKCJUZXN0aW5nIGxvZyA0IikKIAogICAgIGRlZiB0ZXN0X2ZpZWxkc3RvcmFnZV9yZWFkbGluZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YTRiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CkBAIC0wLDAgKzEsNTUgQEAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBjZ2l0YgorCitjbGFzcyBUZXN0Q2dpdGIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZm9udHMoc2VsZik6CisgICAgICAgIHRleHQgPSAiSGVsbG8gUm9iYmllISIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCh0ZXh0KSwgIjxzbWFsbD57fTwvc21hbGw+Ii5mb3JtYXQodGV4dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuc3Ryb25nKHRleHQpLCAiPHN0cm9uZz57fTwvc3Ryb25nPiIuZm9ybWF0KHRleHQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkodGV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzxmb250IGNvbG9yPSIjOTA5MDkwIj57fTwvZm9udD4nLmZvcm1hdCh0ZXh0KSkKKworICAgIGRlZiB0ZXN0X2JsYW5rcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCgiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnN0cm9uZygiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkoIiIpLCAiIikKKworICAgIGRlZiB0ZXN0X2h0bWwoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBJZiB0aGUgaHRtbCB3YXMgdGVtcGxhdGVkIHdlIGNvdWxkIGRvIGEgYml0IG1vcmUgaGVyZS4KKyAgICAgICAgICAgICMgQXQgbGVhc3QgY2hlY2sgdGhhdCB3ZSBnZXQgZGV0YWlscyBvbiB3aGF0IHdlIGp1c3QgcmFpc2VkLgorICAgICAgICAgICAgaHRtbCA9IGNnaXRiLmh0bWwoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgaHRtbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKGVyciksIGh0bWwpCisKKyAgICBkZWYgdGVzdF90ZXh0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHRleHQgPSBjZ2l0Yi50ZXh0KHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJIZWxsbyBXb3JsZCIsIHRleHQpCisKKyAgICBkZWYgdGVzdF9ob29rKHNlbGYpOgorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ltcG9ydCBjZ2l0YjsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NnaXRiLmVuYWJsZSgpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFpc2UgVmFsdWVFcnJvcigiSGVsbG8gV29ybGQiKScpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0ID0gcHJvYy5zdGRvdXQucmVhZCgpLmRlY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwcm9jLnN0ZG91dC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiSGVsbG8gV29ybGQiLCBvdXQpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChUZXN0Q2dpdGIpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWQucHkKaW5kZXggM2E0NjM1NS4uNjYxODUzNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWQucHkKQEAgLTIyOCw3ICsyMjgsNyBAQAogCiBkZWYgdGVzdF9jb3ZlcmFnZShjb3ZlcmRpcik6CiAgICAgdHJhY2UgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RyYWNlJykKLSAgICB0cmFjZXI9dHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyPXRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigncmVsb2FkKGNtZCk7dGVzdF9tYWluKCknKQogICAgIHI9dHJhY2VyLnJlc3VsdHMoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKaW5kZXggZjQ2M2FmNC4uNzY0NGRiMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CkBAIC0zMSwxMiArMzEsNiBAQAogICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctTycpCiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1PTycpCiAKLSAgICBkZWYgdGVzdF9xKHNlbGYpOgotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUW9sZCcpCi0gICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1RbmV3JykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVF3YXJuJykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVF3YXJuYWxsJykKLQogICAgIGRlZiB0ZXN0X3NpdGVfZmxhZyhzZWxmKToKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVMnKQogCkBAIC0xNTEsNyArMTQ1LDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICd0ZXN0IHNwZWNpZmljIHRvIE1hYyBPUyBYJykKICAgICBkZWYgdGVzdF9vc3hfdXRmOChzZWxmKToKICAgICAgICAgZGVmIGNoZWNrX291dHB1dCh0ZXh0KToKLSAgICAgICAgICAgIGRlY29kZWQgPSB0ZXh0LmRlY29kZSgndXRmOCcsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICAgICAgZGVjb2RlZCA9IHRleHQuZGVjb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBhc2NpaShkZWNvZGVkKS5lbmNvZGUoJ2FzY2lpJykgKyBiJ1xuJwogCiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQpAQCAtMjIzLDcgKzIxNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aDIuZW5jb2RlKCdhc2NpaScpLCBvdXQpCiAKICAgICBkZWYgdGVzdF9kaXNwbGF5aG9va191bmVuY29kYWJsZShzZWxmKToKLSAgICAgICAgZm9yIGVuY29kaW5nIGluICgnYXNjaWknLCAnbGF0aW4xJywgJ3V0ZjgnKToKKyAgICAgICAgZm9yIGVuY29kaW5nIGluICgnYXNjaWknLCAnbGF0aW4tMScsICd1dGYtOCcpOgogICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgICAgIGVudlsnUFlUSE9OSU9FTkNPRElORyddID0gZW5jb2RpbmcKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKApAQCAtMjk5LDcgKzI5Myw3IEBACiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRXhjZXB0aW9uIElPRXJyb3I6IC4qIGlnbm9yZWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gT1NFcnJvcjogLiogaWdub3JlZCcpCiAKICAgICBkZWYgdGVzdF9jbG9zZWRfc3Rkb3V0KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMzQ0NDogaWYgc3Rkb3V0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY2xvc2VkLCB3ZSBzaG91bGQKQEAgLTM1MywxNCArMzQ3LDE0IEBACiAgICAgICAgIGhhc2hlcyA9IFtdCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgogICAgICAgICAgICAgY29kZSA9ICdwcmludChoYXNoKCJzcGFtIikpJwotICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLVInLCAnLWMnLCBjb2RlKQorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgICAgIGhhc2hlcy5hcHBlbmQob3V0KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGhhc2hlc1swXSwgaGFzaGVzWzFdKQogCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3lzLmZsYWdzIGNvbnRhaW5zIGhhc2hfcmFuZG9taXphdGlvbgogICAgICAgICBjb2RlID0gJ2ltcG9ydCBzeXM7IHByaW50KCJyYW5kb20gaXMiLCBzeXMuZmxhZ3MuaGFzaF9yYW5kb21pemF0aW9uKScKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLVInLCAnLWMnLCBjb2RlKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidyYW5kb20gaXMgMScsIG91dCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQppbmRleCA2YjU5ZDk2Li4xN2RmYmMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQpAQCAtMSwxNSArMSwyMCBAQAogIyB0ZXN0cyBjb21tYW5kIGxpbmUgZXhlY3V0aW9uIG9mIHNjcmlwdHMKIAoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCB6aXBpbXBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHB5X2NvbXBpbGUKIAoraW1wb3J0IHRleHR3cmFwCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCiAgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwKLSAgICBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHRlbXBfZGlyKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIsCisgICAgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogdmVyYm9zZSA9IHN1cHBvcnQudmVyYm9zZQogCkBAIC0zMiw2ICszNyw5IEBACiBhc3NlcnRFcXVhbChyZXN1bHQsIFsnVG9wIGxldmVsIGFzc2lnbm1lbnQnLCAnTG93ZXIgbGV2ZWwgcmVmZXJlbmNlJ10pCiAjIENoZWNrIHBvcHVsYXRpb24gb2YgbWFnaWMgdmFyaWFibGVzCiBhc3NlcnRFcXVhbChfX25hbWVfXywgJ19fbWFpbl9fJykKK2Zyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgQnVpbHRpbkltcG9ydGVyCitfbG9hZGVyID0gX19sb2FkZXJfXyBpZiBfX2xvYWRlcl9fIGlzIEJ1aWx0aW5JbXBvcnRlciBlbHNlIHR5cGUoX19sb2FkZXJfXykKK3ByaW50KCdfX2xvYWRlcl9fPT0lYScgJSBfbG9hZGVyKQogcHJpbnQoJ19fZmlsZV9fPT0lYScgJSBfX2ZpbGVfXykKIGFzc2VydEVxdWFsKF9fY2FjaGVkX18sIE5vbmUpCiBwcmludCgnX19wYWNrYWdlX189PSVyJyAlIF9fcGFja2FnZV9fKQpAQCAtNDksMTIgKzU3LDE2IEBACiAiIiIKIAogZGVmIF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlPXRlc3Rfc291cmNlKToKLSAgICByZXR1cm4gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdG9fcmV0dXJuID0gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKIGRlZiBfbWFrZV90ZXN0X3ppcF9wa2coemlwX2RpciwgemlwX2Jhc2VuYW1lLCBwa2dfbmFtZSwgc2NyaXB0X2Jhc2VuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9dGVzdF9zb3VyY2UsIGRlcHRoPTEpOgotICAgIHJldHVybiBtYWtlX3ppcF9wa2coemlwX2RpciwgemlwX2Jhc2VuYW1lLCBwa2dfbmFtZSwgc2NyaXB0X2Jhc2VuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLCBkZXB0aCkKKyAgICB0b19yZXR1cm4gPSBtYWtlX3ppcF9wa2coemlwX2RpciwgemlwX2Jhc2VuYW1lLCBwa2dfbmFtZSwgc2NyaXB0X2Jhc2VuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGRlcHRoKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgcmV0dXJuIHRvX3JldHVybgogCiAjIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gcGFzcyB0aGUgc2NyaXB0IGRpcmVjdG9yeSBpbiB0byBnZXQKICMgLW0gdG8gd29yayAoYXZvaWRpbmcgdGhhdCBpcyB0aGUgd2hvbGUgcG9pbnQgb2YgbWFraW5nCkBAIC03MiwxNiArODQsMjAgQEAKICAgICBlbHNlOgogICAgICAgICBwYXRoID0gcmVwcihwYXRoKQogICAgIHNvdXJjZSA9IGxhdW5jaF9zb3VyY2UgJSAocGF0aCwgbW9kdWxlX25hbWUpCi0gICAgcmV0dXJuIG1ha2Vfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlKQorICAgIHRvX3JldHVybiA9IG1ha2Vfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgcmV0dXJuIHRvX3JldHVybgogCiBjbGFzcyBDbWRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9jaGVja19vdXRwdXQoc2VsZiwgc2NyaXB0X25hbWUsIGV4aXRfY29kZSwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZSwgZXhwZWN0ZWRfYXJndjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhdGgwLCBleHBlY3RlZF9wYWNrYWdlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aDAsIGV4cGVjdGVkX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvYWRlcik6CiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOgogICAgICAgICAgICAgcHJpbnQoIk91dHB1dCBmcm9tIHRlc3Qgc2NyaXB0ICVyOiIgJSBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHByaW50KGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdF9jb2RlLCAwKQorICAgICAgICBwcmludGVkX2xvYWRlciA9ICdfX2xvYWRlcl9fPT0lYScgJSBleHBlY3RlZF9sb2FkZXIKICAgICAgICAgcHJpbnRlZF9maWxlID0gJ19fZmlsZV9fPT0lYScgJSBleHBlY3RlZF9maWxlCiAgICAgICAgIHByaW50ZWRfcGFja2FnZSA9ICdfX3BhY2thZ2VfXz09JXInICUgZXhwZWN0ZWRfcGFja2FnZQogICAgICAgICBwcmludGVkX2FyZ3YwID0gJ3N5cy5hcmd2WzBdPT0lYScgJSBleHBlY3RlZF9hcmd2MApAQCAtOTMsNiArMTA5LDcgQEAKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfcGFja2FnZSkKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfYXJndjApCiAgICAgICAgICAgICBwcmludChwcmludGVkX2N3ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX2xvYWRlci5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHJpbnRlZF9maWxlLmVuY29kZSgndXRmLTgnKSwgZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX3BhY2thZ2UuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfYXJndjAuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQpAQCAtMTAxLDE0ICsxMTgsMTUgQEAKIAogICAgIGRlZiBfY2hlY2tfc2NyaXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBleHBlY3RlZF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgogICAgICAgICBpZiBub3QgX19kZWJ1Z19fOgogICAgICAgICAgICAgY21kX2xpbmVfc3dpdGNoZXMgKz0gKCctJyArICdPJyAqIHN5cy5mbGFncy5vcHRpbWl6ZSwpCiAgICAgICAgIHJ1bl9hcmdzID0gY21kX2xpbmVfc3dpdGNoZXMgKyAoc2NyaXB0X25hbWUsKSArIHR1cGxlKGV4YW1wbGVfYXJncykKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqcnVuX2FyZ3MpCiAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCArIGVyciwgZXhwZWN0ZWRfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwgZXhwZWN0ZWRfcGFja2FnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlcikKIAogICAgIGRlZiBfY2hlY2tfaW1wb3J0X2Vycm9yKHNlbGYsIHNjcmlwdF9uYW1lLCBleHBlY3RlZF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzKToKQEAgLTEyMCwxMSArMTM4LDMwIEBACiAgICAgICAgICAgICBwcmludCgnRXhwZWN0ZWQgb3V0cHV0OiAlcicgJSBleHBlY3RlZF9tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWRfbXNnLmVuY29kZSgndXRmLTgnKSwgZXJyKQogCisgICAgZGVmIHRlc3RfZGFzaF9jX2xvYWRlcihzZWxmKToKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCAicHJpbnQoX19sb2FkZXJfXykiKQorICAgICAgICBleHBlY3RlZCA9IHJlcHIoaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIpLmVuY29kZSgidXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKKyAgICBkZWYgdGVzdF9zdGRpbl9sb2FkZXIoc2VsZik6CisgICAgICAgICMgVW5mb3J0dW5hdGVseSwgdGhlcmUncyBubyB3YXkgdG8gYXV0b21hdGljYWxseSB0ZXN0IHRoZSBmdWxseQorICAgICAgICAjIGludGVyYWN0aXZlIFJFUEwsIHNpbmNlIHRoYXQgY29kZSBwYXRoIG9ubHkgZ2V0cyBleGVjdXRlZCB3aGVuCisgICAgICAgICMgc3RkaW4gaXMgYW4gaW50ZXJhY3RpdmUgdHR5LgorICAgICAgICBwID0gc3Bhd25fcHl0aG9uKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcC5zdGRpbi53cml0ZShiInByaW50KF9fbG9hZGVyX18pXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvdXQgPSBraWxsX3B5dGhvbihwKQorICAgICAgICBleHBlY3RlZCA9IHJlcHIoaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIpLmVuY29kZSgidXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9zY3JpcHRfY29tcGlsZWQoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMTMzLDEzICsxNzAsMTUgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHB5Y19maWxlID0gc3VwcG9ydC5tYWtlX2xlZ2FjeV9weWMoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQocHljX2ZpbGUsIHB5Y19maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCBOb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9uYW1lLCBzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xNDgsNyArMTg3LDggQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHB5Y19maWxlID0gc3VwcG9ydC5tYWtlX2xlZ2FjeV9weWMoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2RpciwgcHljX2ZpbGUsIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9lcnJvcihzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xNTksMTQgKzE5OSwxNiBAQAogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfY29tcGlsZWQoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgY29tcGlsZWRfbmFtZSA9IHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIGNvbXBpbGVkX25hbWUpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE4MSwxOSArMjIzLDI0IEBACiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcF9uYW1lLCAndGVzdF9wa2cnLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fc3VicGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JywgZGVwdGg9MikKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnRlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCAndGVzdF9wa2cudGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZy50ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0yMDIsNyArMjQ5LDggQEAKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0yMTQsNyArMjYyLDggQEAKICAgICAgICAgICAgIHB5Y19maWxlID0gc3VwcG9ydC5tYWtlX2xlZ2FjeV9weWMoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHB5Y19maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTI1MSw3ICszMDAsOCBAQAogICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gImluaXRfYXJndjA9PSVyIiAlICctbScKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLmVuY29kZSgndXRmLTgnKSwgb3V0KQogICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfaXNzdWU4MjAyX2Rhc2hfY19maWxlX2lnbm9yZWQoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgIi1jIiBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQpAQCAtMjc3LDcgKzMyNyw4IEBACiAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoImRhdGEiKQogICAgICAgICAgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdvdGhlcicsICpleGFtcGxlX2FyZ3MpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgJycsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9kYXNoX21fZXJyb3JfY29kZV9pc19vbmUoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgaXMgaW52b2tlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgZmxhZwpAQCAtMjk0LDYgKzM0NSwyNCBAQAogICAgICAgICAgICAgICAgICAgICBwcmludChvdXQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMSkKIAorICAgIGRlZiB0ZXN0X3BlcF80MDlfdmVyYmlhZ2Uoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIFBFUCA0MDkgc3ludGF4IHByb3Blcmx5IHN1cHByZXNzZXMKKyAgICAgICAgIyB0aGUgY29udGV4dCBvZiBhbiBleGNlcHRpb24KKyAgICAgICAgc2NyaXB0ID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yIGZyb20gTm9uZQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcsIHNjcmlwdCkKKyAgICAgICAgICAgIGV4aXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZShzY3JpcHRfbmFtZSkKKyAgICAgICAgICAgIHRleHQgPSBzdGRlcnIuZGVjb2RlKCdhc2NpaScpLnNwbGl0KCdcbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXh0WzBdLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbMV0uc3RhcnRzd2l0aCgnICBGaWxlICcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbM10uc3RhcnRzd2l0aCgnTmFtZUVycm9yJykpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDbWRMaW5lVGVzdCkKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlLnB5CmluZGV4IGUxYzdhNzguLjMzNzdhN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGUucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGZyZWV2YXJzOiAoKQogbmxvY2FsczogMgogZmxhZ3M6IDMKLWNvbnN0czogKCdOb25lJywgJzxjb2RlIG9iamVjdCBnPicpCitjb25zdHM6ICgnTm9uZScsICc8Y29kZSBvYmplY3QgZz4nLCAiJ2YuPGxvY2Fscz4uZyciKQogCiA+Pj4gZHVtcChmKDQpLl9fY29kZV9fKQogbmFtZTogZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRlZjE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTAsMCArMSw3MiBAQAorIlRlc3QgSW50ZXJhY3RpdmVDb25zb2xlIGFuZCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGZyb20gY29kZSBtb2R1bGUiCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworY29kZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY29kZScpCisKKworY2xhc3MgVGVzdEludGVyYWN0aXZlQ29uc29sZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uc29sZSA9IGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlKCkKKyAgICAgICAgc2VsZi5tb2NrX3N5cygpCisKKyAgICBkZWYgbW9ja19zeXMoc2VsZik6CisgICAgICAgICJNb2NrIHN5c3RlbSBlbnZpcm9ubWVudCBmb3IgSW50ZXJhY3RpdmVDb25zb2xlIgorICAgICAgICAjIHVzZSBleGl0IHN0YWNrIHRvIG1hdGNoIHBhdGNoIGNvbnRleHQgbWFuYWdlcnMgdG8gYWRkQ2xlYW51cAorICAgICAgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdGFjay5jbG9zZSkKKyAgICAgICAgc2VsZi5pbmZ1bmMgPSBzdGFjay5lbnRlcl9jb250ZXh0KG1vY2sucGF0Y2goJ2NvZGUuaW5wdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpKQorICAgICAgICBzZWxmLnN0ZG91dCA9IHN0YWNrLmVudGVyX2NvbnRleHQobW9jay5wYXRjaCgnY29kZS5zeXMuc3Rkb3V0JykpCisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RhY2suZW50ZXJfY29udGV4dChtb2NrLnBhdGNoKCdjb2RlLnN5cy5zdGRlcnInKSkKKyAgICAgICAgcHJlcGF0Y2ggPSBtb2NrLnBhdGNoKCdjb2RlLnN5cycsIHdyYXBzPWNvZGUuc3lzLCBzcGVjPWNvZGUuc3lzKQorICAgICAgICBzZWxmLnN5c21vZCA9IHN0YWNrLmVudGVyX2NvbnRleHQocHJlcGF0Y2gpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIHNlbGYuc3lzbW9kLmV4Y2VwdGhvb2sgPSBzZWxmLnN5c21vZC5fX2V4Y2VwdGhvb2tfXworCisgICAgZGVmIHRlc3RfcHMxKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zeXNtb2QucHMxLCAnPj4+ICcpCisKKyAgICBkZWYgdGVzdF9wczIoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN5c21vZC5wczIsICcuLi4gJykKKworICAgIGRlZiB0ZXN0X2NvbnNvbGVfc3RkZXJyKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsiJ2FudGlvY2gnIiwgIiIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBsaXN0KHNlbGYuc3Rkb3V0Lm1ldGhvZF9jYWxscyk6CisgICAgICAgICAgICBpZiAnYW50aW9jaCcgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIm5vIGNvbnNvbGUgc3Rkb3V0IikKKworICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInVuZGVmaW5lZCIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHM6CisgICAgICAgICAgICBpZiAnTmFtZUVycm9yOicgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIk5vIHN5bnRheCBlcnJvciBmcm9tIGNvbnNvbGUiKQorCisgICAgZGVmIHRlc3Rfc3lzZXhjZXB0aG9vayhzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBob29rID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5zeXNtb2QuZXhjZXB0aG9vayA9IGhvb2sKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvb2suY2FsbGVkKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SW50ZXJhY3RpdmVDb25zb2xlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKaW5kZXggZTY1NmQyZi4uODFiZjgwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CkBAIC0xLDUgKzEsMTggQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0Ci1pbXBvcnQgc3lzLCBjb2RlY3MsIGh0bWwuZW50aXRpZXMsIHVuaWNvZGVkYXRhCitpbXBvcnQgY29kZWNzCitpbXBvcnQgaHRtbC5lbnRpdGllcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHVuaWNvZGVkYXRhCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCit0cnk6CisgICAgaW1wb3J0IGN0eXBlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGN0eXBlcyA9IE5vbmUKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IC0xCitlbHNlOgorICAgIFNJWkVPRl9XQ0hBUl9UID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMTM1LDIyICsxNDgsMTQgQEAKICAgICBkZWYgdGVzdF9iYWNrc2xhc2hlc2NhcGUoc2VsZik6CiAgICAgICAgICMgRG9lcyB0aGUgc2FtZSBhcyB0aGUgInVuaWNvZGUtZXNjYXBlIiBlbmNvZGluZywgYnV0IHdpdGggZGlmZmVyZW50CiAgICAgICAgICMgYmFzZSBlbmNvZGluZ3MuCi0gICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzaW4gKz0gY2hyKHN5cy5tYXh1bmljb2RlKQotICAgICAgICBzb3V0ID0gYiJhXFx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwXFUwMDEwZmZmZiIKKyAgICAgICAgc291dCA9IGIiYVxceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiYXNjaWkiLCAiYmFja3NsYXNocmVwbGFjZSIpLCBzb3V0KQogCi0gICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwIgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHNvdXQgKz0gYnl0ZXMoIlxcVSUwOHgiICUgc3lzLm1heHVuaWNvZGUsICJhc2NpaSIpCisgICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKLSAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKICAgICBkZWYgdGVzdF9kZWNvZGluZ19jYWxsYmFja3Moc2VsZik6CkBAIC0yMDAsMzMgKzIwNSwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgc2luLCAicmVwbGFjZSIsIGNoYXJtYXApCiAKICAgICBkZWYgdGVzdF9kZWNvZGV1bmljb2RlaW50ZXJuYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLAotICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlLAotICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAotICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUsCisgICAgICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAorICAgICAgICAgICAgKQorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgZGVmIGhhbmRsZXJfdW5pY29kZWludGVybmFsKGV4Yyk6CiAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjLCBVbmljb2RlRGVjb2RlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGhhbmRsZSAlciIgJSBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICgiXHgwMSIsIDEpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDAiCi0gICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwIgorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKKyAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKKyAgICAgICAgICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QuaHVpIiwgaGFuZGxlcl91bmljb2RlaW50ZXJuYWwpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInRlc3QuaHVpIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAidGVzdC5odWkiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgIGRlZiBoYW5kbGVyMShleGMpOgpAQCAtMzU1LDcgKzM2NCw3IEBACiAgICAgICAgICAgICBbImFzY2lpIiwgIlx1ZmZmZngiLCAwLCAxLCAib3VjaCJdLAogICAgICAgICAgICAgIidhc2NpaScgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciAnXFx1ZmZmZicgaW4gcG9zaXRpb24gMDogb3VjaCIKICAgICAgICAgKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgaWYgU0laRU9GX1dDSEFSX1QgPT0gNDoKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhjZXB0aW9ub2JqZWN0YXJncygKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgWyJhc2NpaSIsICJcVTAwMDEwMDAweCIsIDAsIDEsICJvdWNoIl0sCkBAIC0zOTAsNyArMzk5LDcgQEAKICAgICAgICAgICAgIFsiZ1x1ZmZmZnJrIiwgMSwgMiwgIm91Y2giXSwKICAgICAgICAgICAgICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHVmZmZmJyBpbiBwb3NpdGlvbiAxOiBvdWNoIgogICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgc2VsZi5jaGVja19leGNlcHRpb25vYmplY3RhcmdzKAogICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvciwKICAgICAgICAgICAgICAgICBbImdcVTAwMDEwMDAwcmsiLCAxLCAyLCAib3VjaCJdLApAQCAtNTc3LDMxICs1ODYsMzAgQEAKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZmZmZiIsIDAsIDEsICJvdWNoIikpLAogICAgICAgICAgICAgKCJcXHVmZmZmIiwgMSkKICAgICAgICAgKQotICAgICAgICAjIDEgb24gVUNTLTQgYnVpbGRzLCAyIG9uIFVDUy0yCi0gICAgICAgIGxlbl93aWRlID0gbGVuKCJcVTAwMDEwMDAwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMDEwMDAwIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAxMGZmZmYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMTBmZmZmIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAotICAgICAgICAgICAgKCJcXHVkODAwIiwgMSkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkZmZmIiwgMCwgMSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQotICAgICAgICApCisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID4gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXFUwMDAxMDAwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcVTAwMTBmZmZmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFxVMDAxMGZmZmYiLCAxKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFx1ZDgwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcdWRmZmYiLCAwLCAxLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYmFkaGFuZGxlcnJlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3VsdHMgPSAoIDQyLCAiZm9vIiwgKDEsMiwzKSwgKCJmb28iLCAxLCAzKSwgKCJmb28iLCBOb25lKSwgKCJmb28iLCksICgiZm9vIiwgMSwgMyksICgiZm9vIiwgTm9uZSksICgiZm9vIiwpICkKQEAgLTYyMiwxMiArNjMwLDE0IEBACiAgICAgICAgICAgICAgICAgKCJ1dGYtNyIsIGIiK3gtIiksCiAgICAgICAgICAgICAgICAgKCJ1bmljb2RlLWludGVybmFsIiwgYiJceDAwIiksCiAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgZW5jLAotICAgICAgICAgICAgICAgICAgICAidGVzdC5iYWRoYW5kbGVyIgotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0LmJhZGhhbmRsZXIiCisgICAgICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xvb2t1cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3Muc3RyaWN0X2Vycm9ycywgY29kZWNzLmxvb2t1cF9lcnJvcigic3RyaWN0IikpCkBAIC02NzksNyArNjg5LDcgQEAKICAgICAgICAgIyBQeXRob24vY29kZWNzLmM6OlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMoKQogICAgICAgICAjIGFuZCBpbmxpbmUgaW1wbGVtZW50YXRpb25zCiAgICAgICAgIHYgPSAoMSwgNSwgMTAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMCwgMTAwMDAsIDUwMDAwKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZT49MTAwMDAwOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgdiArPSAoMTAwMDAwLCA1MDAwMDAsIDEwMDAwMDApCiAgICAgICAgIHMgPSAiIi5qb2luKFtjaHIoeCkgZm9yIHggaW4gdl0pCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC54bWxjaGFycmVmcmVwbGFjZSIsIGNvZGVjcy54bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMpCkBAIC03NDQsNyArNzU0LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IE5vbmV9KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCBEKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IDB4MTEwMDAwfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCiAKICAgICBkZWYgdGVzdF9lbmNvZGVoZWxwZXIoc2VsZik6CiAgICAgICAgICMgZW5oYW5jZSBjb3ZlcmFnZSBvZjoKQEAgLTg0Myw4ICs4NTMsMTIgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgJXIiICUgZXhjKQogICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QucmVwbGFjaW5nIiwgcmVwbGFjaW5nKQotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5kZWNvZGUoZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCiAKICAgICAgICAgZGVmIG11dGF0aW5nKGV4Yyk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgVW5pY29kZURlY29kZUVycm9yKToKQEAgLTg1NSw4ICs4NjksMTEgQEAKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lm11dGF0aW5nIiwgbXV0YXRpbmcpCiAgICAgICAgICMgSWYgdGhlIGRlY29kZXIgZG9lc24ndCBwaWNrIHVwIHRoZSBtb2RpZmllZCBpbnB1dCB0aGUgZm9sbG93aW5nCiAgICAgICAgICMgd2lsbCBsZWFkIHRvIGFuIGVuZGxlc3MgbG9vcAotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgZm9yIChlbmNvZGluZywgZGF0YSkgaW4gYmFkZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuZGVjb2RlKGVuY29kaW5nLCAidGVzdC5yZXBsYWNpbmciKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDb2RlY0NhbGxiYWNrVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGRjYTlmMTAuLmIwOGM1ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtNSw1NCArNSw1NyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0dCMjMxMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IyMzEyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMjMxMicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjIzMTInKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCiAgICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAogICAgICkKIAotY2xhc3MgVGVzdF9HQksodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0dCSyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYmsnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2JrJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAogICAgICAgICAoYiJceDgzXHgzNFx4ODNceDMxIiwgInN0cmljdCIsIE5vbmUpLAogICAgICAgICAoIlx1MzBmYiIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0IxODAzMCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IxODAzMChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IxODAzMCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAotICAgICAgICAoYiJhYmNceDg0XHgzOVx4ODRceDM5XHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4NFx4MzlceDg0XHgzOVx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkOVx1ZmZmZDlcdTgwNGEiKSwKICAgICAgICAgKCJcdTMwZmIiLCAic3RyaWN0IiwgYiJceDgxOVx4YTc5IiksCisgICAgICAgIChiImFiY1x4ODRceDMyXHg4MFx4ODBkZWYiLCAicmVwbGFjZSIsICdhYmNcdWZmZmQyXHVmZmZkXHVmZmZkZGVmJyksCisgICAgICAgIChiImFiY1x4ODFceDMwXHg4MVx4MzBkZWYiLCAic3RyaWN0IiwgJ2FiY1x4ODBkZWYnKSwKKyAgICAgICAgKGIiYWJjXHg4Nlx4MzBceDgxXHgzMGRlZiIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZDBcdWZmZmQwZGVmJyksCiAgICAgKQogICAgIGhhc19pc28xMDY0NiA9IFRydWUKIAotY2xhc3MgVGVzdF9IWih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSFoobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2h6JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyB0ZXN0ICd+XG4nICgzIGxpbmVzKQogICAgICAgICAoYidUaGlzIHNlbnRlbmNlIGlzIGluIEFTQ0lJLlxuJwpAQCAtNzQsOSArNzcsMTEgQEAKICAgICAgICAgICdcdTVkZjFcdTYyNDBcdTRlMGRcdTZiMzJcdWZmMGNcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDInCiAgICAgICAgICAnQnllLlxuJyksCiAgICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEZCcpLAorICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEY2QnKSwKICAgICAgICAgKGInYWJceGZmY2QnLCAncmVwbGFjZScsICdhYlx1RkZGRGNkJyksCiAgICAgICAgIChiJ2FifntceDgxXHg4MVx4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEXHVGRkZEXHU4MDRBY2QnKSwKKyAgICAgICAgKGInYWJ+e1x4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHU4MDRBY2QnKSwKKyAgICAgICAgKGIiYWJ+e1x4NzlceDc5XHg0MVx4NDR+fWNkIiwgInJlcGxhY2UiLCAiYWJcdWZmZmRcdWZmZmRcdTgwNGFjZCIpLAogICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggY2NkYzBiNC4uMzEzNjNmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC01LDE4ICs1LDE4IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNUhLU0NTKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9CaWc1SEtTQ1MobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzVoa3NjcycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YzZlOGE1Li5lNGMxODM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBDT01NT05fQ09ERUNfVEVTVFMgPSAoCkBAIC0xMywyMyArMTMsMjMgQEAKICAgICAgICAgKGInYWJceDFCJGRlZicsICdyZXBsYWNlJywgJ2FiXHVGRkZEJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfSlAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9KUDIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdpc28yMDIyX2pwXzInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiZGVmJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfa3InKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCBmNTZhMzczLi4zMGM5ZTE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTUsNjAgKzUsNjcgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDkzMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5MzIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTMyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgxXHgwMFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHgwMFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx4MDBcdWZmNDRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x4MDBcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJceEVCeHkiLCAicmVwbGFjZSIsICJhYlx1RkZGRHh5IiksCisgICAgICAgIChiImFiXHhGMFx4Mzl4eSIsICJyZXBsYWNlIiwgImFiXHVGRkZEOXh5IiksCisgICAgICAgIChiImFiXHhFQVx4RjB4eSIsICJyZXBsYWNlIiwgJ2FiXHVmZmZkXHVlMDM4eScpLAogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXFxceDdlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJyZXBsYWNlIiwgIlx1ZmYzY1x1MjIyNVx1ZmYwZCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSklTWDAyMTModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorZXVjX2NvbW1vbnRlc3RzID0gKAorICAgICMgaW52YWxpZCBieXRlcworICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTc5NTYiKSwKKyAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKKyAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKKyAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmZmQiKSwKKyAgICAoYiJceDgyXHhGQ3h5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkeHkiKSwKKyAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKKyAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCisgICAgKGIiXHhhMVx4YzBcXCIsICJzdHJpY3QiLCAiXHVmZjNjXFwiKSwKKyAgICAoYiJceDhlWFkiLCAicmVwbGFjZSIsICJcdWZmZmRYWSIpLAorKQorCitjbGFzcyBUZXN0X0VVQ19KSVNfMjAwNChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGVuY29kaW5nID0gJ2V1Y19qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAgICAgKGIiYWJjXHg4Zlx4ODNceDgzIiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkIiksCi0gICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCi0gICAgKQorICAgIGVuY29kaW5nID0gJ2V1Y19qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qaXN4MDIxMycpCisgICAgY29kZWN0ZXN0cyA9IGV1Y19jb21tb250ZXN0cwogICAgIHhtbGNoYXJuYW1ldGVzdCA9ICgKICAgICAgICAgIlx4YWJcdTIxMWNceGJiID0gXHUyMzI5XHUxMjM0XHUyMzJhIiwKICAgICAgICAgYiJceGE5XHhhOCZyZWFsO1x4YTlceGIyID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKICAgICApCiAKLWV1Y2pwX2NvbW1vbnRlc3RzID0gKAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTYiKSwKLSAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQiKSwKLSAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKLSkKK2NsYXNzIFRlc3RfRVVDX0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzCisgICAgeG1sY2hhcm5hbWV0ZXN0ID0gKAorICAgICAgICAiXHhhYlx1MjExY1x4YmIgPSBcdTIzMjlcdTEyMzRcdTIzMmEiLAorICAgICAgICBiIlx4YTlceGE4JnJlYWw7XHhhOVx4YjIgPSAmbGFuZzsmIzQ2NjA7JnJhbmc7IgorICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKK2NsYXNzIFRlc3RfRVVDX0pQX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qcCcpCi0gICAgY29kZWN0ZXN0cyA9IGV1Y2pwX2NvbW1vbnRlc3RzICsgKAotICAgICAgICAoYiJceGExXHhjMFxcIiwgInN0cmljdCIsICJcdWZmM2NcXCIpLAorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2pwJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzICsgKAogICAgICAgICAoIlx4YTUiLCAic3RyaWN0IiwgYiJceDVjIiksCiAgICAgICAgICgiXHUyMDNlIiwgInN0cmljdCIsIGIiXHg3ZSIpLAogICAgICkKQEAgLTY2LDI5ICs3Myw0OCBAQAogc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgPSAoCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NCIpLAotICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NGRlZiIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NGRlZiIpLAogKQogCi1jbGFzcyBUZXN0X1NKSVNfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlxcXHg3ZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAic3RyaWN0IiwgIlx1ZmYzY1x1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceDgxXHgzOSIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmQ5IiksCisgICAgICAgIChiImFiY1x4RUFceEZDIiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceEZGXHg1OCIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmRYIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X1NKSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfU0pJU18yMDA0KG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgY29kZWN0ZXN0cyA9IHNoaWZ0amlzX2NvbW1vbmVuY3Rlc3RzICsgKAorICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlx4YTVcdTIwM2UiKSwKKyAgICAgICAgKGIiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInN0cmljdCIsICJcXFx1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceEVBXHhGQyIsICJzdHJpY3QiLCAgImFiY1x1NjRiZiIpLAorICAgICAgICAoYiJceDgxXHgzOXh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZDl4eSIpLAorICAgICAgICAoYiJceEZGXHg1OHh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZFh4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0eHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmRcdWZmNDR4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0XHg4OHh5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkXHVmZjQ0XHU1ODY0eSIpLAorICAgICAgICAoYiJceEZDXHhGQnh5IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU5NWI0eScpLAorICAgICkKKyAgICB4bWxjaGFybmFtZXRlc3QgPSAoCisgICAgICAgICJceGFiXHUyMTFjXHhiYiA9IFx1MjMyOVx1MTIzNFx1MjMyYSIsCisgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCisgICAgKQorCitjbGFzcyBUZXN0X1NKSVNYMDIxMyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ZjgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRkZWYiLCAiaWdub3JlIiwgICJhYmNcdWZmNDRkZWYiKSwKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXHhhNVx1MjAzZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAicmVwbGFjZSIsICJceDVjXHUyMDE2XHUyMjEyIiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBkZTRkYTdmLi40ZGQ2MDQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTUsMzAgKzUsMzAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDk0OSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5NDkobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0IiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0XHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfRVVDS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0VVQ0tSKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfa3InKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZFx1ZmZmZFx1Yzg5NCcpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHVjODk0IiksCiAKICAgICAgICAgIyBjb21wb3NlZCBtYWtlLXVwIHNlcXVlbmNlIGVycm9ycwpAQCAtNDAsMjYgKzQwLDMxIEBACiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGQ0IiwgInN0cmljdCIsICJcdWM0ZDQiKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNFx4ZDR4IiwgInN0cmljdCIsICJcdWM0ZDR4IiksCi0gICAgICAgIChiImFceGE0XHhkNFx4YTRceGI2XHhhNCIsICJyZXBsYWNlIiwgImFcdWZmZmQiKSwKKyAgICAgICAgKGIiYVx4YTRceGQ0XHhhNFx4YjZceGE0IiwgInJlcGxhY2UiLCAnYVx1ZmZmZCcpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTNceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTNceGQwXHhhNFx4ZDQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTNceGQ0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1ZmZmZFx1MzE2MFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1ZmZmZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1NTcyZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4ZmZceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRkNCcpLAogICAgICAgICAoYiJceGMxXHhjNCIsICJzdHJpY3QiLCAiXHVjODk0IiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0pPSEFCKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9KT0hBQihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnam9oYWInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3XHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjciKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjdcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Y2QyNyIpLAorICAgICAgICAoYiJceEQ4YWJjIiwgInJlcGxhY2UiLCAgIlx1RkZGRGFiYyIpLAorICAgICAgICAoYiJceEQ4XHhGRmFiYyIsICJyZXBsYWNlIiwgICJcdUZGRkRcdUZGRkRhYmMiKSwKKyAgICAgICAgKGIiXHg4NGJ4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRieHkiKSwKKyAgICAgICAgKGIiXHg4Q0J4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRCeHkiKSwKICAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDEyZDNjOWYuLjk2MjQ1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtNSwxOCArNSwxOCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0JpZzUodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0JpZzUobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzUnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzUnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggMDYzOTE5ZC4uMWE3NjFjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTUsMjEgKzUsMjEgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdEdCMjMxMk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQjIzMTJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1DTi5UWFQnCiAKLWNsYXNzIFRlc3RHQktNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0JLTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy8nIFwKICAgICAgICAgICAgICAgICAgJ01JQ1NGVC9XSU5ET1dTL0NQOTM2LlRYVCcKIAotY2xhc3MgVGVzdEdCMTgwMzBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0IxODAzME1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCBiYmUxZjJmLi41ZjRlN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtNSwxMCArNSwxMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QmlnNUhLU0NTTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEJpZzVIS1NDU01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1aGtzY3MnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0JJRzVIS1NDUy0yMDA0LlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNjUyYmQ4MS4uMWZkYmY2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTUsMTAgKzUsMTAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdENQOTMyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTMyTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5MzInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTI0LDE0ICsyNCwxNCBAQAogICAgICAgICBzdXBtYXBzLmFwcGVuZCgoYnl0ZXMoW2ldKSwgY2hyKGkrMHhmZWMwKSkpCiAKIAotY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2pwJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KUC5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KUC5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNDT01QQVRNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0U0pJU0NPTVBBVE1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwogICAgIG1hcGZpbGVuYW1lID0gJ1NISUZUSklTLlRYVCcKQEAgLTQ2LDE0ICs0NiwxNCBAQAogICAgICAgICAoYidceDgxXycsICdcXCcpLAogICAgIF0KIAotY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KSVNYMDIxMy5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KSVNYMDIxMy5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNYMDIxM01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRfSklTWDAyMTMuVFhUJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCBkOTA5YzhiLi4wMzU2NDAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtNSwxNyArNSwxNyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5NDlNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NDlNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk0OScKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUJyBcCiAgICAgICAgICAgICAgICAgICcvV0lORE9XUy9DUDk0OS5UWFQnCiAKIAotY2xhc3MgVGVzdEVVQ0tSTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0tSTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2tyJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+cGVya3kvaTE4bi9FVUMtS1IuVFhUJwpAQCAtMjUsNyArMjUsNyBAQAogICAgIHBhc3NfZGVjdGVzdCA9IFsoYidceGE0XHhkNCcsICdcdTMxNjQnKV0KIAogCi1jbGFzcyBUZXN0Sk9IQUJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Sk9IQUJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdqb2hhYicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCA2ZGI1MDkxLi40NDQ2N2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtNSwxNiArNSwxNiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QklHNU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCSUc1TWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvT0JTT0xFVEUvJyBcCiAgICAgICAgICAgICAgICAgICdFQVNUQVNJQS9PVEhFUi9CSUc1LlRYVCcKIAotY2xhc3MgVGVzdENQOTUwTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTUwTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5NTAnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTIzLDYgKzIzLDkgQEAKICAgICAgICAgKGInXHhhMlx4Y2MnLCAnXHU1MzQxJyksCiAgICAgICAgIChiJ1x4YTJceGNlJywgJ1x1NTM0NScpLAogICAgIF0KKyAgICBjb2RlY3Rlc3RzID0gKAorICAgICAgICAoYiJceEZGeHkiLCAicmVwbGFjZSIsICAiXHVmZmZkeHkiKSwKKyAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggZjM0MmQ4OC4uNGU4MDhlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTEsOCArMSwyNSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBpbwogaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5cywgX3Rlc3RjYXBpLCBpbworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCitlbHNlOgorICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisgICAgU0laRU9GX1dDSEFSX1QgPSAtMQorZWxzZToKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCiAKIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgIiIiCkBAIC02NDQsOCArNjYxLDExMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ2NwNjUwMDEgaXMgYSBXaW5kb3dzLW9ubHkgY29kZWMnKQorY2xhc3MgQ1A2NTAwMVRlc3QoUmVhZFRlc3QpOgorICAgIGVuY29kaW5nID0gImNwNjUwMDEiCisKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGMzXHhhOVx4ZTJceDgyXHhhYycpLAorICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsIGInXHhmNFx4OGZceGJmXHhiZicpLAorICAgICAgICBdCisgICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCisgICAgICAgICAgICApKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCisgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBlbmNvZGVkID0gdGV4dC5lbmNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGVuY29kZSAlYSB0byBjcDY1MDAxIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWQsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZW5jb2RlKCJjcDY1MDAxIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlICh0ZXh0LCBlcnJvcnMsIGVuY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICB0ZXh0LmVuY29kZSwgImNwNjUwMDEiLCBlcnJvcnMpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4YzNceGE5XHhlMlx4ODJceGFjJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYidceGY0XHg4Zlx4YmZceGJmJywgJ3N0cmljdCcsICdcVTAwMTBmZmZmJyksCisgICAgICAgICAgICAoYidceGVmXHhiZlx4YmQnLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgKGInW1x4YzNceGE5XScsICdzdHJpY3QnLCAnW1x4ZTldJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgIF0KKyAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAorICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsICdbXHVkYzgwXScpLAorICAgICAgICAgICAgKSkKKyAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IHJhdy5kZWNvZGUoJ2NwNjUwMDEnLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGRlY29kZSAlYSBmcm9tIGNwNjUwMDEgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmRlY29kZSgiY3A2NTAwMSIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAocmF3LCBlcnJvcnMsIGRlY29kZWQsIGV4cGVjdGVkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKKyAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tcXHVkYzgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAieG1sY2hhcnJlZnJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1smIzU2NDQ4O10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1x4ODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQorICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCisKKworCiBjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTciCiAKQEAgLTkwNiw2MSArMTAyOCw4MCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCiBjbGFzcyBVbmljb2RlSW50ZXJuYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2J1ZzEyNTEzMDAoc2VsZik6CiAgICAgICAgICMgRGVjb2Rpbmcgd2l0aCB1bmljb2RlX2ludGVybmFsIHVzZWQgdG8gbm90IGNvcnJlY3RseSBoYW5kbGUgImNvZGUKICAgICAgICAgIyBwb2ludHMiIGFib3ZlIDB4MTBmZmZmIG9uIFVDUy00IGJ1aWxkcy4KLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBvayA9IFsKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgxMFx4ZmZceGZmIiwgIlxVMDAxMGZmZmYiKSwKLSAgICAgICAgICAgICAgICAoYiJceDAwXHgwMFx4MDFceDAxIiwgIlxVMDAwMDAxMDEiKSwKLSAgICAgICAgICAgICAgICAoYiIiLCAiIiksCi0gICAgICAgICAgICBdCi0gICAgICAgICAgICBub3Rfb2sgPSBbCi0gICAgICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKLSAgICAgICAgICAgICAgICBiIlx4ODBceDAwXHgwMFx4MDAiLAotICAgICAgICAgICAgICAgIGIiXHg4MVx4MDBceDAwXHgwMCIsCi0gICAgICAgICAgICAgICAgYiJceDAwIiwKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIiwKLSAgICAgICAgICAgIF0KLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgotICAgICAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICBvayA9IFsKKyAgICAgICAgICAgIChiIlx4MDBceDEwXHhmZlx4ZmYiLCAiXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgKGIiXHgwMFx4MDBceDAxXHgwMSIsICJcVTAwMDAwMTAxIiksCisgICAgICAgICAgICAoYiIiLCAiIiksCisgICAgICAgIF0KKyAgICAgICAgbm90X29rID0gWworICAgICAgICAgICAgYiJceDdmXHhmZlx4ZmZceGZmIiwKKyAgICAgICAgICAgIGIiXHg4MFx4MDBceDAwXHgwMCIsCisgICAgICAgICAgICBiIlx4ODFceDAwXHgwMFx4MDAiLAorICAgICAgICAgICAgYiJceDAwIiwKKyAgICAgICAgICAgIGIiXHgwMFx4MDBceDAwXHgwMFx4MDAiLAorICAgICAgICBdCisgICAgICAgIGZvciBpbnRlcm5hbCwgdW5pIGluIG9rOgorICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBpbnRlcm5hbC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKSkKLSAgICAgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6Ci0gICAgICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWwgPSBieXRlcyhyZXZlcnNlZChpbnRlcm5hbCkpCisgICAgICAgIGZvciBpbnRlcm5hbCBpbiBub3Rfb2s6CisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgorICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBpbnRlcm5hbC5kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CisgICAgICAgICAgICBpbnZhbGlkID0gYiJceDAwXHgwMFx4MTFceDAwIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MTFceDAwXHgwMCIKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkLmRlY29kZSwgInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW52YWxpZC5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHVmZmZkJykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgdHJ5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCd1bmljb2RlX2ludGVybmFsIGNvZGVjIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIi5kZWNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBleDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIiwgZXgub2JqZWN0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgZXguc3RhcnQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ1bmljb2RlX2ludGVybmFsIiwgZXguZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHgwMFx4MDBceDAwXHgwMFx4MDBceDExXHgxMVx4MDAiLCBleC5vYmplY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGV4LnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4LCBleC5lbmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9kZWNvZGVfY2FsbGJhY2soc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJVbmljb2RlSW50ZXJuYWxUZXN0IiwgY29kZWNzLmlnbm9yZV9lcnJvcnMpCi0gICAgICAgICAgICBkZWNvZGVyID0gY29kZWNzLmdldGRlY29kZXIoInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoIlVuaWNvZGVJbnRlcm5hbFRlc3QiLCBjb2RlY3MuaWdub3JlX2Vycm9ycykKKyAgICAgICAgZGVjb2RlciA9IGNvZGVjcy5nZXRkZWNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIGFiID0gImFiIi5lbmNvZGUoInVuaWNvZGVfaW50ZXJuYWwiKS5kZWNvZGUoKQogICAgICAgICAgICAgaWdub3JlZCA9IGRlY29kZXIoYnl0ZXMoIiVzXHgyMlx4MjJceDIyXHgyMiVzIiAlIChhYls6NF0sIGFiWzQ6XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNjaWkiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmljb2RlSW50ZXJuYWxUZXN0IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJhYiIsIDEyKSwgaWdub3JlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoImFiIiwgMTIpLCBpZ25vcmVkKQogCiAgICAgZGVmIHRlc3RfZW5jb2RlX2xlbmd0aChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAzNzM5Ci0gICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoIlx4ZTlcdTAxNDIiKVsxXSwgMikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgSXNzdWUgMzczOQorICAgICAgICAgICAgZW5jb2RlciA9IGNvZGVjcy5nZXRlbmNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiYSIpWzFdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyKCJceGU5XHUwMTQyIilbMV0sIDIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZXNjYXBlX2VuY29kZShicidceDAwJylbMV0sIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZW5jb2RlKGJyJ1x4MDAnKVsxXSwgNCkKIAogIyBGcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vZHJhZnQtam9zZWZzc29uLWlkbi10ZXN0LXZlY3RvcnMuaHRtbAogbmFtZXByZXBfdGVzdHMgPSBbCkBAIC0xMjg0LDcgKzE0MjUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVmLnJlYWQoKSwgYidcXFx4ZDVcblx4MDBceDAwXHhhZScpCiAKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBlZiA9IGNvZGVjcy5FbmNvZGVkRmlsZShmLCAndXRmLTgnLCAnbGF0aW4xJykKKyAgICAgICAgZWYgPSBjb2RlY3MuRW5jb2RlZEZpbGUoZiwgJ3V0Zi04JywgJ2xhdGluLTEnKQogICAgICAgICBlZi53cml0ZShiJ1x4YzNceGJjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKCksIGInXHhmYycpCiAKQEAgLTE0MTYsMTAgKzE1NTcsMTMgQEAKICAgICAgICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gImxhdGluXzEiOgogICAgICAgICAgICAgICAgIG5hbWUgPSAibGF0aW5fMSIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RpbmcucmVwbGFjZSgiXyIsICItIiksIG5hbWUucmVwbGFjZSgiXyIsICItIikpCi0gICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbGVuKHMpLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoc2l6ZSwgbGVuKHMpLCBlbmNvZGluZykpCi0gICAgICAgICAgICAoY2hhcnMsIHNpemUpID0gY29kZWNzLmdldGRlY29kZXIoZW5jb2RpbmcpKGIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAoYiwgc2l6ZSkgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihzKSwgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKHNpemUsIGxlbihzKSwgZW5jb2RpbmcpKQorICAgICAgICAgICAgICAgIChjaGFycywgc2l6ZSkgPSBjb2RlY3MuZ2V0ZGVjb2RlcihlbmNvZGluZykoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXJzLCBzLCAiJXIgIT0gJXIgKGVuY29kaW5nPSVyKSIgJSAoY2hhcnMsIHMsIGVuY29kaW5nKSkKIAogICAgICAgICAgICAgaWYgZW5jb2Rpbmcgbm90IGluIGJyb2tlbl91bmljb2RlX3dpdGhfc3RyZWFtczoKICAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cmVhbSByZWFkZXIvd3JpdGVyCkBAIC0xNTIzLDcgKzE2NjcsOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9lbmNvZGVfYXJncyhzZWxmKToKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGFsbF91bmljb2RlX2VuY29kaW5nczoKICAgICAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcihlbmNvZGluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZW5jb2RlcikKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlbmNvZGVyKQogCiAgICAgZGVmIHRlc3RfZW5jb2RpbmdfbWFwX3R5cGVfaW5pdGlhbGl6ZWQoc2VsZik6CiAgICAgICAgIGZyb20gZW5jb2RpbmdzIGltcG9ydCBjcDExNDAKQEAgLTE1NDYsNiArMTY5MiwxMSBAQAogICAgICAgICAgICAgKCJhYmMiLCAzKQogICAgICAgICApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLCAiXFUwMDEwRkZGRmJjIiksCisgICAgICAgICAgICAoIlxVMDAxMEZGRkZiYyIsIDMpCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsICJhYiIKICAgICAgICAgKQpAQCAtMTY1NCw5ICsxODA1LDE1IEBACiAgICAgICAgICAgICAoIlxVMDAxMEZGRkZiYyIsIDMpCiAgICAgICAgICkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IHN5cy5tYXh1bmljb2RlLCAxOiBiLCAyOiBjfSksCisgICAgICAgICAgICAoY2hyKHN5cy5tYXh1bmljb2RlKSArICJiYyIsIDMpCisgICAgICAgICkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHgwMFx4MDFceDAyIiwgInN0cmljdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAweDExMDAwMCwgMTogYiwgMjogY30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6IHN5cy5tYXh1bmljb2RlICsgMSwgMTogYiwgMjogY30KICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKQEAgLTE3MjAsNiArMTg3NywxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUoYnIiXHUxMjM0IiksICgiXHUxMjM0IiwgNikpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUsIGJyIlxVMDAxMTAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJyZXBsYWNlIiksICgiXHVmZmZkIiwgMTApKQorCiBjbGFzcyBTdXJyb2dhdGVFc2NhcGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3V0Zjgoc2VsZik6CkBAIC0xNzUwLDcgKzE5MTMsNyBAQAogCiAgICAgZGVmIHRlc3RfbGF0aW4xKHNlbGYpOgogICAgICAgICAjIElzc3VlNjM3MwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcdWRjZTRcdWRjZWJcdWRjZWZcdWRjZjZcdWRjZmMiLmVuY29kZSgibGF0aW4tMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZTRceGViXHhlZlx4ZjZceGZjIikKIAogCkBAIC0xODU5LDYgKzIwMjIsMTU1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvdXQsIGIiXHg4MCIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnY29kZSBwYWdlcyBhcmUgc3BlY2lmaWMgdG8gV2luZG93cycpCitjbGFzcyBDb2RlUGFnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQ1BfVVRGOCBpcyBhbHJlYWR5IHRlc3RlZCBieSBDUDY1MDAxVGVzdAorICAgIENQX1VURjggPSA2NTAwMQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb2RlX3BhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAtMSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgLTEsIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFdpbmRvd3NFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDEyMywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCAxMjMsIGInYScpCisKKyAgICBkZWYgdGVzdF9jb2RlX3BhZ2VfbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRW5jb2RlRXJyb3IsICdjcDkzMicsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgOTMyLCAnXHhmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnY3A5MzInLAorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIDkzMiwgYidceDgxXHgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZURlY29kZUVycm9yLCAnQ1BfVVRGOCcsCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnKQorCisgICAgZGVmIGNoZWNrX2RlY29kZShzZWxmLCBjcCwgdGVzdHMpOgorICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoY3AsIHJhdywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBkZWNvZGUgJWEgZnJvbSAiY3AlcyIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3JzPSVyOiAlcycgJSAocmF3LCBjcCwgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZFswXSwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5kZWNvZGUoImNwJXMiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHJhdywgY3AsIGVycm9ycywgZGVjb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgICMgYXNzZXJ0IDAgPD0gZGVjb2RlZFsxXSA8PSBsZW4ocmF3KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGRlY29kZWRbMV0sIDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKworICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKKyAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVuY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2VuY29kZShjcCwgdGV4dCwgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBlbmNvZGUgJWEgdG8gImNwJXMiIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHRleHQsIGNwLCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzBdLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmVuY29kZSgiY3AlcyIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAodGV4dCwgY3AsIGVycm9ycywgZW5jb2RlZFswXSwgZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFsxXSwgbGVuKHRleHQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCBjcCwgdGV4dCwgZXJyb3JzKQorCisgICAgZGVmIHRlc3RfY3A5MzIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKDkzMiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHVmZjQ0XHU5YTNlJywgJ3N0cmljdCcsIGInXHg4Mlx4ODRceGU5XHg4MCcpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCisgICAgICAgICAgICAoJ1x4ZmYnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1tceGZmXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdyZXBsYWNlJywgYidbeV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY10nLCAncmVwbGFjZScsIGInWz9dJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgYidbXFx4ZmZdJyksCisgICAgICAgICAgICAoJ1tceGZmXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMjU1O10nKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHg4Mlx4ODRceGU5XHg4MCcsICdzdHJpY3QnLCAnXHVmZjQ0XHU5YTNlJyksCisgICAgICAgICAgICAjIGludmFsaWQgYnl0ZXMKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ2lnbm9yZScsICdceDAwYWJjJyksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdyZXBsYWNlJywgJ1x1ZmZmZFx4MDBhYmMnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoMTI1MiwgKAorICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAorICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1x1MDE0MScsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAncmVwbGFjZScsIGInTCcpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSgxMjUyLCAoCisgICAgICAgICAgICAoYidhYmMnLCAnc3RyaWN0JywgJ2FiYycpLAorICAgICAgICAgICAgKGInXHhlOVx4ODAnLCAnc3RyaWN0JywgJ1x4ZTlcdTIwYWMnKSwKKyAgICAgICAgICAgIChiJ1x4ZmYnLCAnc3RyaWN0JywgJ1x4ZmYnKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2NwX3V0Zjcoc2VsZik6CisgICAgICAgIGNwID0gNjUwMDAKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoY3AsICgKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInK0FPa2dyQS0nKSwKKyAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCAgYicrMi8vZi93LScpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgYicrM0lBLScpLAorICAgICAgICAgICAgKCdcdWZmZmQnLCAnc3RyaWN0JywgYicrLy8wLScpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZShjcCwgKAorICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJytBT2tnckEtJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYicrMi8vZi93LScsICdzdHJpY3QnLCAnXFUwMDEwZmZmZicpLAorICAgICAgICAgICAgKGInKzNJQS0nLCAnc3RyaWN0JywgJ1x1ZGM4MCcpLAorICAgICAgICAgICAgKGInKy8vMC0nLCAnc3RyaWN0JywgJ1x1ZmZmZCcpLAorICAgICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgICAgICAgICAoYidbKy9dJywgJ3N0cmljdCcsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N0cmljdCcsICdbXHhmZl0nKSwKKyAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X211bHRpYnl0ZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoOTMyLCAoCisgICAgICAgICAgICAoYidceDg0XHhlOVx4ODAnLCAnaWdub3JlJywgJ1x1OWEzZScpLAorICAgICAgICAgICAgKGInXHg4NFx4ZTlceDgwJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHU5YTNlJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAnaWdub3JlJywgJ1xVMDAxMGZmZmYnKSwKKyAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ3JlcGxhY2UnLCAnXHVmZmZkXFUwMDEwZmZmZicpLAorICAgICAgICApKQorICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAorICAgICAgICAgICAgKSkKKworICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgorICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCcnLCAwKSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGU5XHg4MFx4ZTknLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnXHU5YTNlJywgMikpCisKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlOVx4ODBceGU5XHg4MCcsICdzdHJpY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdcdTlhM2VcdTlhM2UnLCA0KSkKKworICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBVVEYzMlRlc3QsCkBAIC0xODY5LDYgKzIxODEsNyBAQAogICAgICAgICBVVEYxNkJFVGVzdCwKICAgICAgICAgVVRGOFRlc3QsCiAgICAgICAgIFVURjhTaWdUZXN0LAorICAgICAgICBDUDY1MDAxVGVzdCwKICAgICAgICAgVVRGN1Rlc3QsCiAgICAgICAgIFVURjE2RXhUZXN0LAogICAgICAgICBSZWFkQnVmZmVyVGVzdCwKQEAgLTE4ODcsNiArMjIwMCw3IEBACiAgICAgICAgIFN1cnJvZ2F0ZUVzY2FwZVRlc3QsCiAgICAgICAgIEJvbVRlc3QsCiAgICAgICAgIFRyYW5zZm9ybUNvZGVjVGVzdCwKKyAgICAgICAgQ29kZVBhZ2VUZXN0LAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CmluZGV4IGY5ZGIwYjQuLmRmZDU0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kaW5nLnB5CkBAIC0xLDcgKzEsNiBAQAotCiBpbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCB1bmxvYWQKLWltcG9ydCBvcywgc3lzCitpbXBvcnQgaW1wb3J0bGliLCBvcywgc3lzCiAKIGNsYXNzIENvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2JhZF9jb2Rpbmcoc2VsZik6CkBAIC00MCw2ICszOSw3IEBACiAgICAgICAgICAgICBmLndyaXRlKCInQSB2ZXJ5IGxvbmcgc3RyaW5nICVzJ1xuIiAlICgiWCIgKiAxMDAwKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CmluZGV4IDhkYzU1NTkuLjg4YzMxMjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlVuaXQgdGVzdHMgZm9yIGNvbGxlY3Rpb25zLnB5LiIiIgogCiBpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QsIG9wZXJhdG9yCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmb3JnZXQsIHVubGluawogaW1wb3J0IGluc3BlY3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSwgQ291bnRlciwgT3JkZXJlZERpY3QsIF9jb3VudF9lbGVtZW50cwpAQCAtMTAsMjEgKzExLDIwIEBACiBpbXBvcnQga2V5d29yZAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBfQ2hhaW5NYXAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTZXQsIE11dGFibGVTZXQKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3LCBVc2VyRGljdAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQnl0ZVN0cmluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckRpY3QKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgX0NoYWluTWFwIChoZWxwZXIgY2xhc3MgZm9yIGNvbmZpZ3BhcnNlcikKKyMjIyBDaGFpbk1hcCAoaGVscGVyIGNsYXNzIGZvciBjb25maWdwYXJzZXIgYW5kIHRoZSBzdHJpbmcgbW9kdWxlKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotQ2hhaW5NYXAgPSBfQ2hhaW5NYXAgICMgcmVuYW1lIHRvIGtlZXAgdGVzdCBjb2RlIGluIHN5bmMgd2l0aCAzLjMgdmVyc2lvbgotCiBjbGFzcyBUZXN0Q2hhaW5NYXAodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMTI4LDYgKzEyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19tb2R1bGVfXywgX19uYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19nZXRpdGVtX18sIHR1cGxlLl9fZ2V0aXRlbV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9maWVsZHMsICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIFBvaW50KHR1cGxlKScsIFBvaW50Ll9zb3VyY2UpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2FiYyUnLCAnZWZnIGdoaScpICAgICAgICMgdHlwZSBoYXMgbm9uLWFscGhhIGNoYXIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmFtZWR0dXBsZSwgJ2NsYXNzJywgJ2VmZyBnaGknKSAgICAgICMgdHlwZSBoYXMga2V5d29yZApAQCAtMzI3LDYgKzMyOCwxNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQigxKSksICdCKHg9MSknKQogCisgICAgZGVmIHRlc3Rfc291cmNlKHNlbGYpOgorICAgICAgICAjIHZlcmlmeSB0aGF0IF9zb3VyY2UgY2FuIGJlIHJ1biB0aHJvdWdoIGV4ZWMoKQorICAgICAgICB0bXAgPSBuYW1lZHR1cGxlKCdOVENvbG9yJywgJ3JlZCBncmVlbiBibHVlJykKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgcmVtb3ZlIGFydGlmYWN0cyBmcm9tIG90aGVyIHRlc3RzCisgICAgICAgIGV4ZWModG1wLl9zb3VyY2UsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTlRDb2xvcicsIGdsb2JhbHMoKSkKKyAgICAgICAgYyA9IE5UQ29sb3IoMTAsIDIwLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYy5yZWQsIGMuZ3JlZW4sIGMuYmx1ZSksICgxMCwgMjAsIDMwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKKyAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CisKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBBYnN0cmFjdCBCYXNlIENsYXNzZXMKQEAgLTcyOSw2ICs3NDEsNDQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKE11dGFibGVTZXF1ZW5jZSwgJ19fY29udGFpbnNfXycsICdfX2l0ZXJfXycsCiAgICAgICAgICAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2RlbGl0ZW1fXycsICdpbnNlcnQnKQogCisgICAgZGVmIHRlc3RfTXV0YWJsZVNlcXVlbmNlX21peGlucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBtaXhpbnMgb2YgTXV0YWJsZVNlcXVlbmNlIGJ5IGNyZWF0aW5nIGEgbWltaW5hbCBjb25jcmV0ZQorICAgICAgICAjIGNsYXNzIGluaGVyaXRlZCBmcm9tIGl0LgorICAgICAgICBjbGFzcyBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcyhNdXRhYmxlU2VxdWVuY2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0ID0gW10KKworICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3RbaW5kZXhdID0gdmFsdWUKKworICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sc3RbaW5kZXhdCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKKyAgICAgICAgICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYubHN0W2luZGV4XQorCisgICAgICAgICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sc3QuaW5zZXJ0KGluZGV4LCB2YWx1ZSkKKworICAgICAgICBtc3MgPSBNdXRhYmxlU2VxdWVuY2VTdWJjbGFzcygpCisgICAgICAgIG1zcy5hcHBlbmQoMCkKKyAgICAgICAgbXNzLmV4dGVuZCgoMSwgMiwgMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAzKQorICAgICAgICBtc3MucmV2ZXJzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWzNdLCAxKQorICAgICAgICBtc3MucG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNzKSwgNCkKKyAgICAgICAgbXNzLnJlbW92ZSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCAzKQorICAgICAgICBtc3MgKz0gKDEwLCAyMCwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNzWy0xXSwgMzApCisgICAgICAgIG1zcy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDApCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQ291bnRlcgpAQCAtODgyLDYgKzkzMiwyNyBAQAogICAgICAgICAgICAgICAgIHNldF9yZXN1bHQgPSBzZXRvcChzZXQocC5lbGVtZW50cygpKSwgc2V0KHEuZWxlbWVudHMoKSkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudGVyX3Jlc3VsdCwgZGljdC5mcm9ta2V5cyhzZXRfcmVzdWx0LCAxKSkKIAorICAgIGRlZiB0ZXN0X2lucGxhY2Vfb3BlcmF0aW9ucyhzZWxmKToKKyAgICAgICAgZWxlbWVudHMgPSAnYWJjZCcKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICAjIHRlc3QgcmFuZG9tIHBhaXJzIG9mIG11bHRpc2V0cworICAgICAgICAgICAgcCA9IENvdW50ZXIoZGljdCgoZWxlbSwgcmFuZHJhbmdlKC0yLDQpKSBmb3IgZWxlbSBpbiBlbGVtZW50cykpCisgICAgICAgICAgICBwLnVwZGF0ZShlPTEsIGY9LTEsIGc9MCkKKyAgICAgICAgICAgIHEgPSBDb3VudGVyKGRpY3QoKGVsZW0sIHJhbmRyYW5nZSgtMiw0KSkgZm9yIGVsZW0gaW4gZWxlbWVudHMpKQorICAgICAgICAgICAgcS51cGRhdGUoaD0xLCBpPS0xLCBqPTApCisgICAgICAgICAgICBmb3IgaW5wbGFjZV9vcCwgcmVndWxhcl9vcCBpbiBbCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pYWRkX18sIENvdW50ZXIuX19hZGRfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pc3ViX18sIENvdW50ZXIuX19zdWJfXyksCisgICAgICAgICAgICAgICAgKENvdW50ZXIuX19pb3JfXywgQ291bnRlci5fX29yX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faWFuZF9fLCBDb3VudGVyLl9fYW5kX18pLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgICAgICBjID0gcC5jb3B5KCkKKyAgICAgICAgICAgICAgICBjX2lkID0gaWQoYykKKyAgICAgICAgICAgICAgICByZWd1bGFyX3Jlc3VsdCA9IHJlZ3VsYXJfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBpbnBsYWNlX3Jlc3VsdCA9IGlucGxhY2Vfb3AoYywgcSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucGxhY2VfcmVzdWx0LCByZWd1bGFyX3Jlc3VsdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGlucGxhY2VfcmVzdWx0KSwgY19pZCkKKwogICAgIGRlZiB0ZXN0X3N1YnRyYWN0KHNlbGYpOgogICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQogICAgICAgICBjLnN1YnRyYWN0KGE9MSwgYj0yLCBjPS0zLCBkPTEwLCBlPTIwLCBmPTMwLCBoPS01MCkKQEAgLTg5Myw2ICs5NjQsMTEgQEAKICAgICAgICAgYy5zdWJ0cmFjdCgnYWFhYWJiY2NlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBDb3VudGVyKGE9LTEsIGI9MCwgYz0tMSwgZD0xLCBlPS0xKSkKIAorICAgIGRlZiB0ZXN0X3VuYXJ5KHNlbGYpOgorICAgICAgICBjID0gQ291bnRlcihhPS01LCBiPTAsIGM9NSwgZD0xMCwgZT0xNSxnPTQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoK2MpLCBkaWN0KGM9NSwgZD0xMCwgZT0xNSwgZz00MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdCgtYyksIGRpY3QoYT01KSkKKwogICAgIGRlZiB0ZXN0X3JlcHJfbm9uc29ydGFibGUoc2VsZik6CiAgICAgICAgIGMgPSBDb3VudGVyKGE9MiwgYj1Ob25lKQogICAgICAgICByID0gcmVwcihjKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDU4ZWYyOTcuLjcyMzQyZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTEsMTAgKzEsMTcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IF9hc3QKK2ltcG9ydCB0eXBlcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIGNvbXBpbGVfc2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIGNvbXBpbGUoc291cmNlLCAiPHNpbmdsZT4iLCAic2luZ2xlIikKKworICAgIGRlZiBhc3NlcnRJbnZhbGlkU2luZ2xlKHNlbGYsIHNvdXJjZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBzZWxmLmNvbXBpbGVfc2luZ2xlLCBzb3VyY2UpCisKICAgICBkZWYgdGVzdF9ub19lbmRpbmdfbmV3bGluZShzZWxmKToKICAgICAgICAgY29tcGlsZSgiaGkiLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICBjb21waWxlKCJoaVxyIiwgIjx0ZXN0PiIsICJleGVjIikKQEAgLTQzMyw2ICs0NDAsMzkgQEAKICAgICAgICAgYXN0LmJvZHkgPSBbX2FzdC5Cb29sT3AoKV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBhc3QsICc8YXN0PicsICdleGVjJykKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NhbWVfZmlsZW5hbWVfdXNlZChzZWxmKToKKyAgICAgICAgcyA9ICIiImRlZiBmKCk6IHBhc3NcbmRlZiBnKCk6IHBhc3MiIiIKKyAgICAgICAgYyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgZm9yIG9iaiBpbiBjLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvYmouY29fZmlsZW5hbWUsIGMuY29fZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIlxuMSArIDIiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcblxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcdFx0XG4iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxICsgMlx0XHRcbiAgICAgICAgIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDIgIyBvbmUgcGx1cyB0d28iKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCIxOyAyIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiaW1wb3J0IHN5czsgc3lzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiZGVmIGYoKTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJ3aGlsZSBGYWxzZTpcbiAgIHBhc3MiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJpZiB4OlxuICAgZih4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImlmIHg6XG4gICBmKHgpXG5lbHNlOlxuICAgZyh4KSIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImNsYXNzIFQ6XG4gICBwYXNzIikKKworICAgIGRlZiB0ZXN0X2JhZF9zaW5nbGVfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJzFcbjInKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2RlZiBmKCk6IHBhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2EgPSAxM1xuYiA9IDE4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZGVsIHhcbmRlbCB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdmKClcbmcoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG4jIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG54eSAjIGJsYWhcbmJsYWgoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgneCA9IDUgIyBjb21tZW50XG54ID0gNlxuJykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTcGVjaWZpY3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDJhZmE5MzguLjZhZTQ1MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xOSw3ICsxOSw3IEBACiBmcm9tIGNvbmN1cnJlbnQgaW1wb3J0IGZ1dHVyZXMKIGZyb20gY29uY3VycmVudC5mdXR1cmVzLl9iYXNlIGltcG9ydCAoCiAgICAgUEVORElORywgUlVOTklORywgQ0FOQ0VMTEVELCBDQU5DRUxMRURfQU5EX05PVElGSUVELCBGSU5JU0hFRCwgRnV0dXJlKQotaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzCitmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5wcm9jZXNzIGltcG9ydCBCcm9rZW5Qcm9jZXNzUG9vbAogCiAKIGRlZiBjcmVhdGVfZnV0dXJlKHN0YXRlPVBFTkRJTkcsIGV4Y2VwdGlvbj1Ob25lLCByZXN1bHQ9Tm9uZSk6CkBAIC0zNCw3ICszNCw3IEBACiBSVU5OSU5HX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UlVOTklORykKIENBTkNFTExFRF9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRCkKIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRURfQU5EX05PVElGSUVEKQotRVhDRVBUSU9OX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1JT0Vycm9yKCkpCitFWENFUFRJT05fRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPU9TRXJyb3IoKSkKIFNVQ0NFU1NGVUxfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgcmVzdWx0PTQyKQogCiAKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgICAgICBwcm9jZXNzZXMgPSBzZWxmLmV4ZWN1dG9yLl9wcm9jZXNzZXMKICAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bigpCiAKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3NodXRkb3duKHNlbGYpOgpAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZS5tYXAoYWJzLCByYW5nZSgtNSwgNSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzUsIDQsIDMsIDIsIDEsIDAsIDEsIDIsIDMsIDRdKQogCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogICAgIGRlZiB0ZXN0X2RlbF9zaHV0ZG93bihzZWxmKToKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICBkZWwgZXhlY3V0b3IKIAogICAgICAgICBxdWV1ZV9tYW5hZ2VtZW50X3RocmVhZC5qb2luKCkKLSAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzOgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBwLmpvaW4oKQogCiAKQEAgLTI2OCwxNCArMjY4LDE0IEBACiAKICAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgogICAgICAgICBmdXR1cmUxID0gc2VsZi5leGVjdXRvci5zdWJtaXQobXVsLCA2LCA3KQotICAgICAgICBmdXR1cmUyID0gc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgMykKKyAgICAgICAgZnV0dXJlMiA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDYpCiAKICAgICAgICAgZmluaXNoZWQsIHBlbmRpbmcgPSBmdXR1cmVzLndhaXQoCiAgICAgICAgICAgICAgICAgW0NBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLAogICAgICAgICAgICAgICAgICBFWENFUFRJT05fRlVUVVJFLAogICAgICAgICAgICAgICAgICBTVUNDRVNTRlVMX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgZnV0dXJlMSwgZnV0dXJlMl0sCi0gICAgICAgICAgICAgICAgdGltZW91dD0xLjUsCisgICAgICAgICAgICAgICAgdGltZW91dD01LAogICAgICAgICAgICAgICAgIHJldHVybl93aGVuPWZ1dHVyZXMuQUxMX0NPTVBMRVRFRCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChbQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUsCkBAIC0zNzksOCArMzc5LDggQEAKICAgICAgICAgcmVzdWx0cyA9IFtdCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBpIGluIHNlbGYuZXhlY3V0b3IubWFwKHRpbWUuc2xlZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEuNSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwgNl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTUpOgogICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKGkpCiAgICAgICAgIGV4Y2VwdCBmdXR1cmVzLlRpbWVvdXRFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTM4OSwxMyArMzg5LDM4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbTm9uZSwgTm9uZV0sIHJlc3VsdHMpCiAKKyAgICBkZWYgdGVzdF9zaHV0ZG93bl9yYWNlX2lzc3VlMTI0NTYoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEyNDU2OiByYWNlIGNvbmRpdGlvbiBhdCBzaHV0ZG93biB3aGVyZSB0cnlpbmcgdG8gcG9zdCBhCisgICAgICAgICMgc2VudGluZWwgaW4gdGhlIGNhbGwgcXVldWUgYmxvY2tzICh0aGUgcXVldWUgaXMgZnVsbCB3aGlsZSBwcm9jZXNzZXMKKyAgICAgICAgIyBoYXZlIGV4aXRlZCkuCisgICAgICAgIHNlbGYuZXhlY3V0b3IubWFwKHN0ciwgWzJdICogKHNlbGYud29ya2VyX2NvdW50ICsgMSkpCisgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24oKQorCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvclRlc3QoVGhyZWFkUG9vbE1peGluLCBFeGVjdXRvclRlc3QpOgotICAgIHBhc3MKKyAgICBkZWYgdGVzdF9tYXBfc3VibWl0c193aXRob3V0X2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdmVyaWZ5aW5nIGlzc3VlIDExNzc3LiIiIgorICAgICAgICBmaW5pc2hlZCA9IFtdCisgICAgICAgIGRlZiByZWNvcmRfZmluaXNoZWQobik6CisgICAgICAgICAgICBmaW5pc2hlZC5hcHBlbmQobikKKworICAgICAgICBzZWxmLmV4ZWN1dG9yLm1hcChyZWNvcmRfZmluaXNoZWQsIHJhbmdlKDEwKSkKKyAgICAgICAgc2VsZi5leGVjdXRvci5zaHV0ZG93bih3YWl0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaW5pc2hlZCwgcmFuZ2UoMTApKQogCiAKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3JUZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCk6Ci0gICAgcGFzcworICAgIGRlZiB0ZXN0X2tpbGxlZF9jaGlsZChzZWxmKToKKyAgICAgICAgIyBXaGVuIGEgY2hpbGQgcHJvY2VzcyBpcyBhYnJ1cHRseSB0ZXJtaW5hdGVkLCB0aGUgd2hvbGUgcG9vbCBnZXRzCisgICAgICAgICMgImJyb2tlbiIuCisgICAgICAgIGZ1dHVyZXMgPSBbc2VsZi5leGVjdXRvci5zdWJtaXQodGltZS5zbGVlcCwgMyldCisgICAgICAgICMgR2V0IG9uZSBvZiB0aGUgcHJvY2Vzc2VzLCBhbmQgdGVybWluYXRlIChraWxsKSBpdAorICAgICAgICBwID0gbmV4dChpdGVyKHNlbGYuZXhlY3V0b3IuX3Byb2Nlc3Nlcy52YWx1ZXMoKSkpCisgICAgICAgIHAudGVybWluYXRlKCkKKyAgICAgICAgZm9yIGZ1dCBpbiBmdXR1cmVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIGZ1dC5yZXN1bHQpCisgICAgICAgICMgU3VibWl0dGluZyBvdGhlciBqb2JzIGZhaWxzIGFzIHdlbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJyb2tlblByb2Nlc3NQb29sLCBzZWxmLmV4ZWN1dG9yLnN1Ym1pdCwgcG93LCAyLCA4KQogCiAKIGNsYXNzIEZ1dHVyZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5OCw3ICs1MjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWNhbmNlbGxlZD4nKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAogICAgICAgICAgICAgICAgIHJlcHIoRVhDRVBUSU9OX0ZVVFVSRSksCi0gICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9ZmluaXNoZWQgcmFpc2VkIElPRXJyb3I+JykKKyAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1maW5pc2hlZCByYWlzZWQgT1NFcnJvcj4nKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KAogICAgICAgICAgICAgICAgIHJlcHIoU1VDQ0VTU0ZVTF9GVVRVUkUpLAogICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWZpbmlzaGVkIHJldHVybmVkIGludD4nKQpAQCAtNTA5LDcgKzUzNCw3IEBACiAgICAgICAgIGYyID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1SVU5OSU5HKQogICAgICAgICBmMyA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEKQogICAgICAgICBmNCA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEX0FORF9OT1RJRklFRCkKLSAgICAgICAgZjUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249SU9FcnJvcigpKQorICAgICAgICBmNSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1PU0Vycm9yKCkpCiAgICAgICAgIGY2ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgcmVzdWx0PTUpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxLmNhbmNlbCgpKQpAQCAtNTYzLDcgKzU4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9GVVRVUkUucmVzdWx0LCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBFWENFUFRJT05fRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBFWENFUFRJT05fRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNVQ0NFU1NGVUxfRlVUVVJFLnJlc3VsdCh0aW1lb3V0PTApLCA0MikKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdF93aXRoX3N1Y2Nlc3Moc2VsZik6CkBAIC02MDIsNyArNjI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnV0dXJlcy5DYW5jZWxsZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRF9GVVRVUkUuZXhjZXB0aW9uLCB0aW1lb3V0PTApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEVYQ0VQVElPTl9GVVRVUkUuZXhjZXB0aW9uKHRpbWVvdXQ9MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPRXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTVUNDRVNTRlVMX0ZVVFVSRS5leGNlcHRpb24odGltZW91dD0wKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl93aXRoX3N1Y2Nlc3Moc2VsZik6CkBAIC02MTEsMTQgKzYzNiwxNCBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAgICAgd2l0aCBmMS5fY29uZGl0aW9uOgogICAgICAgICAgICAgICAgIGYxLl9zdGF0ZSA9IEZJTklTSEVECi0gICAgICAgICAgICAgICAgZjEuX2V4Y2VwdGlvbiA9IElPRXJyb3IoKQorICAgICAgICAgICAgICAgIGYxLl9leGNlcHRpb24gPSBPU0Vycm9yKCkKICAgICAgICAgICAgICAgICBmMS5fY29uZGl0aW9uLm5vdGlmeV9hbGwoKQogCiAgICAgICAgIGYxID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1QRU5ESU5HKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9bm90aWZpY2F0aW9uKQogICAgICAgICB0LnN0YXJ0KCkKIAotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmMS5leGNlcHRpb24odGltZW91dD01KSwgSU9FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYxLmV4Y2VwdGlvbih0aW1lb3V0PTUpLCBPU0Vycm9yKSkKIAogQHRlc3Quc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKQEAgLTYzMSw3ICs2NTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xBc0NvbXBsZXRlZFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NQb29sU2h1dGRvd25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xTaHV0ZG93blRlc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkUG9vbFNodXRkb3duVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgZmluYWxseToKICAgICAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfY2ZncGFyc2VyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCBhNmU5MDUwLi44ZDgyMTgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMTYxOCw2ICsxNjE4LDQyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlMSksIHJlcHIoZTIpKQogCiAKK2NsYXNzIElubGluZUNvbW1lbnRTdHJpcHBpbmdUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIGlzc3VlICMxNDU5MDogQ29uZmlnUGFyc2VyIGRvZXNuJ3Qgc3RyaXAgaW5saW5lIGNvbW1lbnQgd2hlbgorICAgIGRlbGltaXRlciBvY2N1cnMgZWFybGllciB3aXRob3V0IHByZWNlZGluZyBzcGFjZS4uIiIiCisKKyAgICBkZWYgdGVzdF9zdHJpcHBpbmcoc2VsZik6CisgICAgICAgIGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9KCc7JywgJyMnLAorICAgICAgICAgICAgICAgICcvLycpKQorICAgICAgICBjZmcucmVhZF9zdHJpbmcoIiIiCisgICAgICAgIFtzZWN0aW9uXQorICAgICAgICBrMSA9IHYxO3N0aWxsIHYxCisgICAgICAgIGsyID0gdjIgO2EgY29tbWVudAorICAgICAgICBrMyA9IHYzIDsgYWxzbyBhIGNvbW1lbnQKKyAgICAgICAgazQgPSB2NDtzdGlsbCB2NCA7YSBjb21tZW50CisgICAgICAgIGs1ID0gdjU7c3RpbGwgdjUgOyBhbHNvIGEgY29tbWVudAorICAgICAgICBrNiA9IHY2O3N0aWxsIHY2OyBhbmQgc3RpbGwgdjYgO2EgY29tbWVudAorICAgICAgICBrNyA9IHY3O3N0aWxsIHY3OyBhbmQgc3RpbGwgdjcgOyBhbHNvIGEgY29tbWVudAorCisgICAgICAgIFttdWx0aXByZWZpeF0KKyAgICAgICAgazEgPSB2MTtzdGlsbCB2MSAjYSBjb21tZW50IDsgeWVhaCwgcHJldHR5IG11Y2gKKyAgICAgICAgazIgPSB2MiAvLyB0aGlzIGFscmVhZHkgaXMgYSBjb21tZW50IDsgY29udGludWVkCisgICAgICAgIGszID0gdjM7Iy8vc3RpbGwgdjMjIGFuZCBzdGlsbCB2MyA7IGEgY29tbWVudAorICAgICAgICAiIiIpCisgICAgICAgIHMgPSBjZmdbJ3NlY3Rpb24nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2sxJ10sICd2MTtzdGlsbCB2MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazInXSwgJ3YyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMyddLCAndjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s0J10sICd2NDtzdGlsbCB2NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazUnXSwgJ3Y1O3N0aWxsIHY1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNiddLCAndjY7c3RpbGwgdjY7IGFuZCBzdGlsbCB2NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazcnXSwgJ3Y3O3N0aWxsIHY3OyBhbmQgc3RpbGwgdjcnKQorICAgICAgICBzID0gY2ZnWydtdWx0aXByZWZpeCddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazEnXSwgJ3YxO3N0aWxsIHYxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMiddLCAndjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIENvbmZpZ1BhcnNlclRlc3RDYXNlLApAQCAtMTY0MCw0ICsxNjc2LDUgQEAKICAgICAgICAgUmVhZEZpbGVUZXN0Q2FzZSwKICAgICAgICAgQ292ZXJhZ2VPbmVIdW5kcmVkVGVzdENhc2UsCiAgICAgICAgIEV4Y2VwdGlvblBpY2tsaW5nVGVzdENhc2UsCisgICAgICAgIElubGluZUNvbW1lbnRTdHJpcHBpbmdUZXN0Q2FzZSwKICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDZlMzgzMDUuLmU1MmVkOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTM3MCw2ICszNzAsMjMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUsIFsxLCAnc29tZXRoaW5nIGVsc2UnLCA5OTldKQogCiAKK2NsYXNzIFRlc3RFeGl0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fcmVzb3VyY2VzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY2FsbGJhY2soc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCgpLCB7fSksCisgICAgICAgICAgICAoKDEsKSwge30pLAorICAgICAgICAgICAgKCgxLDIpLCB7fSksCisgICAgICAgICAgICAoKCksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgICAgICAoKDEsKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgICAgICgoMSwyKSwgZGljdChleGFtcGxlPTEpKSwKKyAgICAgICAgXQorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBkZWYgX2V4aXQoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAiIiJUZXN0IG1ldGFkYXRhIHByb3BhZ2F0aW9uIiIiCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKChhcmdzLCBrd2RzKSkKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZvciBhcmdzLCBrd2RzIGluIHJldmVyc2VkKGV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBpZiBhcmdzIGFuZCBrd2RzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgZWxpZiBhcmdzOgorICAgICAgICAgICAgICAgICAgICBmID0gc3RhY2suY2FsbGJhY2soX2V4aXQsICphcmdzKQorICAgICAgICAgICAgICAgIGVsaWYga3dkczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZiwgX2V4aXQpCisgICAgICAgICAgICBmb3Igd3JhcHBlciBpbiBzdGFjay5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fd3JhcHBlZF9fLCBfZXhpdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19uYW1lX18sIF9leGl0Ll9fbmFtZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyYXBwZXIuX19kb2NfXywgX2V4aXQuX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcHVzaChzZWxmKToKKyAgICAgICAgZXhjX3JhaXNlZCA9IFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGRlZiBfZXhwZWN0X2V4YyhleGNfdHlwZSwgZXhjLCBleGNfdGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleGNfdHlwZSwgZXhjX3JhaXNlZCkKKyAgICAgICAgZGVmIF9zdXBwcmVzc19leGMoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGRlZiBfZXhwZWN0X29rKGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGNfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Y190YikKKyAgICAgICAgY2xhc3MgRXhpdENNKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY2hlY2tfZXhjKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4YyA9IGNoZWNrX2V4YworICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlNob3VsZCBub3QgYmUgY2FsbGVkISIpCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2V4YygqZXhjX2RldGFpbHMpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3Rfb2spCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9leHBlY3Rfb2spCisgICAgICAgICAgICBjbSA9IEV4aXRDTShfZXhwZWN0X29rKQorICAgICAgICAgICAgc3RhY2sucHVzaChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICBzdGFjay5wdXNoKF9zdXBwcmVzc19leGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9zdXBwcmVzc19leGMpCisgICAgICAgICAgICBjbSA9IEV4aXRDTShfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzdGFjay5wdXNoKF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZW50ZXJfY29udGV4dChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdENNKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMykKKworICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBjbSA9IFRlc3RDTSgpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBAc3RhY2suY2FsbGJhY2sgICMgUmVnaXN0ZXJlZCBmaXJzdCA9PiBjbGVhbmVkIHVwIGxhc3QKKyAgICAgICAgICAgIGRlZiBfZXhpdCgpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKF9leGl0KQorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChjbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXS5fX3NlbGZfXywgY20pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgMywgNF0pCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIEBzdGFjay5jYWxsYmFjaworICAgICAgICAgICAgZGVmIF9leGl0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoX2V4aXQpCisgICAgICAgICAgICBzdGFjay5jbG9zZSgpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9wb3BfYWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgQHN0YWNrLmNhbGxiYWNrCisgICAgICAgICAgICBkZWYgX2V4aXQoKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShfZXhpdCkKKyAgICAgICAgICAgIG5ld19zdGFjayA9IHN0YWNrLnBvcF9hbGwoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgxKQorICAgICAgICByZXN1bHQuYXBwZW5kKDIpCisgICAgICAgIG5ld19zdGFjay5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgM10pCisKKyAgICBkZWYgdGVzdF9leGl0X3JhaXNlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogRmFsc2UpCisgICAgICAgICAgICAgICAgMS8wCisKKyAgICBkZWYgdGVzdF9leGl0X3N1cHByZXNzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogVHJ1ZSkKKyAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmdfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICAjIFNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBFeGl0U3RhY2sgY2hhaW5pbmcgbWF0Y2hlcworICAgICAgICAjIGFjdHVhbCBuZXN0ZWQgd2l0aCBzdGF0ZW1lbnRzCisgICAgICAgIGNsYXNzIFJhaXNlRXhjOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Yyk6CisgICAgICAgICAgICAgICAgc2VsZi5leGMgPSBleGMKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZXhjCisKKyAgICAgICAgY2xhc3MgUmFpc2VFeGNXaXRoQ29udGV4dDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRlciwgaW5uZXIpOgorICAgICAgICAgICAgICAgIHNlbGYub3V0ZXIgPSBvdXRlcgorICAgICAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBpbm5lcgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmlubmVyCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxmLm91dGVyCisKKyAgICAgICAgY2xhc3MgU3VwcHJlc3NFeGM6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICB0eXBlKHNlbGYpLnNhdmVkX2RldGFpbHMgPSBleGNfZGV0YWlscworICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBSYWlzZUV4YyhJbmRleEVycm9yKToKKyAgICAgICAgICAgICAgICB3aXRoIFJhaXNlRXhjV2l0aENvbnRleHQoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBTdXBwcmVzc0V4YygpOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBSYWlzZUV4YyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgSW5kZXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBLZXlFcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sIEF0dHJpYnV0ZUVycm9yKQorICAgICAgICAgICAgIyBJbm5lciBleGNlcHRpb25zIHdlcmUgc3VwcHJlc3NlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLl9fY29udGV4dF9fKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBJbmRleEVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyByYWlzZWQiKQorICAgICAgICAjIENoZWNrIHRoZSBpbm5lciBleGNlcHRpb25zCisgICAgICAgIGlubmVyX2V4YyA9IFN1cHByZXNzRXhjLnNhdmVkX2RldGFpbHNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4YywgVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGlubmVyX2V4Yy5fX2NvbnRleHRfXywgWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF9leGl0X2V4Y2VwdGlvbl9jaGFpbmluZyhzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgZXhjZXB0aW9uIGNoYWluaW5nIG1hdGNoZXMgdGhlIHJlZmVyZW5jZSBiZWhhdmlvdXIKKyAgICAgICAgZGVmIHJhaXNlX2V4YyhleGMpOgorICAgICAgICAgICAgcmFpc2UgZXhjCisKKyAgICAgICAgc2F2ZWRfZGV0YWlscyA9IE5vbmUKKyAgICAgICAgZGVmIHN1cHByZXNzX2V4YygqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgbm9ubG9jYWwgc2F2ZWRfZGV0YWlscworICAgICAgICAgICAgc2F2ZWRfZGV0YWlscyA9IGV4Y19kZXRhaWxzCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBJbmRleEVycm9yKQorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgS2V5RXJyb3IpCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN1cHByZXNzX2V4YykKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXywgS2V5RXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICMgSW5uZXIgZXhjZXB0aW9ucyB3ZXJlIHN1cHByZXNzZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgSW5kZXhFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIikKKyAgICAgICAgIyBDaGVjayB0aGUgaW5uZXIgZXhjZXB0aW9ucworICAgICAgICBpbm5lcl9leGMgPSBzYXZlZF9kZXRhaWxzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmdfc3VwcHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBzdGFjay5wdXNoKGxhbWJkYSAqZXhjOiBUcnVlKQorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogMS8wKQorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4Yzoge31bMV0pCisKKyAgICBkZWYgdGVzdF9leGNlc3NpdmVfbmVzdGluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gd291bGQgZGllIHdpdGggUmVjdXJzaW9uRXJyb3IgaGVyZQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMDApOgorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKGludCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2J5cGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRXhhbXBsZShvYmplY3QpOiBwYXNzCisgICAgICAgIGNtID0gRXhhbXBsZSgpCisgICAgICAgIGNtLl9fZXhpdF9fID0gb2JqZWN0KCkKKyAgICAgICAgc3RhY2sgPSBFeGl0U3RhY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc3RhY2suZW50ZXJfY29udGV4dCwgY20pCisgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgY20pCisKKwogIyBUaGlzIGlzIG5lZWRlZCB0byBtYWtlIHRoZSB0ZXN0IGFjdHVhbGx5IHJ1biB1bmRlciByZWdydGVzdC5weSEKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCBhODRjMTA5Li5jNGJhYWU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIyBBdHRlbXB0IGZ1bGwgbGluZSBjb3ZlcmFnZSBvZiBjb3B5LnB5IGZyb20gdG9wIHRvIGJvdHRvbQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHkuRXJyb3IgaXMgY29weS5lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LkVycm9yLCBjb3B5LmVycm9yKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhjb3B5LkVycm9yLCBFeGNlcHRpb24pKQogCiAgICAgIyBUaGUgY29weSgpIG1ldGhvZApAQCAtNTQsMjAgKzU0LDI2IEBACiAgICAgZGVmIHRlc3RfY29weV9yZWR1Y2VfZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBbMV0pCiAKICAgICBkZWYgdGVzdF9jb3B5X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfY29weV9jYW50KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC05MSw3ICs5Nyw3IEBACiAgICAgICAgICAgICAgICAgICJoZWxsbyIsICJoZWxsb1x1MTIzNCIsIGYuX19jb2RlX18sCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCByYW5nZSgxMCksIENsYXNzaWMsIG1heF0KICAgICAgICAgZm9yIHggaW4gdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weS5jb3B5KHgpIGlzIHgsIHJlcHIoeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKIAogICAgIGRlZiB0ZXN0X2NvcHlfbGlzdChzZWxmKToKICAgICAgICAgeCA9IFsxLCAyLCAzXQpAQCAtMTg1LDkgKzE5MSw5IEBACiAgICAgICAgIHggPSBbeCwgeF0KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgbm90IHhbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIHlbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5WzBdLCB4WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHlbMF0sIHlbMV0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pc3N1YmNsYXNzKHNlbGYpOgogICAgICAgICAjIFhYWCBOb3RlOiB0aGVyZSdzIG5vIHdheSB0byB0ZXN0IHRoZSBUeXBlRXJyb3IgY29taW5nIG91dCBvZgpAQCAtMjI3LDIwICsyMzMsMjYgQEAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWR1Y2VfZXgoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZG4ndCBjYWxsIHRoaXMiKQorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVkdWNlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBjLmFwcGVuZCgxKQogICAgICAgICAgICAgICAgIHJldHVybiAiIgorICAgICAgICBjID0gW10KICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfY2FudChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtMjY0LDE0ICsyNzYsMTQgQEAKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIHJhbmdlKDEwKSwgQ2xhc3NpYywgbWF4XQogICAgICAgICBmb3IgeCBpbiB0ZXN0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5LmRlZXBjb3B5KHgpIGlzIHgsIHJlcHIoeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuZGVlcGNvcHkoeCksIHgpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9saXN0KHNlbGYpOgogICAgICAgICB4ID0gW1sxLCAyXSwgM10KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX2xpc3Qoc2VsZik6CiAgICAgICAgIHggPSBbXQpAQCAtMjc5LDE2ICsyOTEsMjYgQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5WzBdLCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih5KSwgMSkKIAorICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2VtcHR5X3R1cGxlKHNlbGYpOgorICAgICAgICB4ID0gKCkKKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LCB5KQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfdHVwbGUoc2VsZik6CiAgICAgICAgIHggPSAoWzEsIDJdLCAzKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCisKKyAgICBkZWYgdGVzdF9kZWVwY29weV90dXBsZV9vZl9pbW11dGFibGVzKHNlbGYpOgorICAgICAgICB4ID0gKCgxLCAyKSwgMykKKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4LCB5KQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX3R1cGxlKHNlbGYpOgogICAgICAgICB4ID0gKFtdLCkKQEAgLTI5NiwxNiArMzE4LDE2IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIGZvciBvcCBpbiBjb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyBub3QgeFswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF1bMF0gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXVswXSwgeSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RpY3Qoc2VsZik6CiAgICAgICAgIHggPSB7ImZvbyI6IFsxLCAyXSwgImJhciI6IDN9CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyBub3QgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WyJmb28iXSwgeVsiZm9vIl0pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfZGljdChzZWxmKToKICAgICAgICAgeCA9IHt9CkBAIC0zMTUsMTUgKzMzNywzMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgeSwgeCkKICAgICAgICAgZm9yIG9wIGluIGVxdWFsaXR5X2NvbXBhcmlzb25zOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Wydmb28nXSBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVsnZm9vJ10sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfa2VlcGFsaXZlKHNlbGYpOgogICAgICAgICBtZW1vID0ge30KLSAgICAgICAgeCA9IDQyCisgICAgICAgIHggPSBbXQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4LCBtZW1vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWVtb1tpZCh4KV0gaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZW1vW2lkKG1lbW8pXVswXSwgeCkKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RvbnRfbWVtb19pbW11dGFibGUoc2VsZik6CisgICAgICAgIG1lbW8gPSB7fQorICAgICAgICB4ID0gWzEsIDIsIDMsIDRdCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgsIG1lbW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgIyBUaGVyZSdzIHRoZSBlbnRyeSBmb3IgdGhlIG5ldyBsaXN0LCBhbmQgdGhlIGtlZXAgYWxpdmUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1lbW8pLCAyKQorCisgICAgICAgIG1lbW8gPSB7fQorICAgICAgICB4ID0gWygxLCAyKV0KKyAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCwgbWVtbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICAjIFR1cGxlcyB3aXRoIGltbXV0YWJsZSBjb250ZW50cyBhcmUgaW1tdXRhYmxlIGZvciBkZWVwY29weS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWVtbyksIDIpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X3ZhbmlsbGEoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zMzQsNyArMzcxLDcgQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNDcsOCArMzg0LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0aW5pdGFyZ3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNjEsOCArMzk4LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zNzUsOCArNDEyLDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3Rfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC0zODksOCArNDI2LDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0c3RhdGVfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CkBAIC00MDUsOCArNDQyLDggQEAKICAgICAgICAgeCA9IEMoWzQyXSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV9pbnN0KHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtNDE0LDggKzQ1MSw4IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSB4CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHkuZm9vLCB5KQogCiAgICAgIyBfcmVjb25zdHJ1Y3QoKQogCkBAIC00MjUsOSArNDYyLDkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgeCA9IEMoKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3Rfbm9zdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDM2LDkgKzQ3Myw5IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSA0MgogICAgICAgICB5ID0gY29weS5jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Ll9fY2xhc3NfXyBpcyB4Ll9fY2xhc3NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Ll9fY2xhc3NfXywgeC5fX2NsYXNzX18pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5Ll9fY2xhc3NfXyBpcyB4Ll9fY2xhc3NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Ll9fY2xhc3NfXywgeC5fX2NsYXNzX18pCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9zdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDUyLDcgKzQ4OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X3N0YXRlX3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NjgsNyArNTA1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3RfcmVmbGV4aXZlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC00NzYsOCArNTEzLDggQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IHgKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5mb28sIHkpCiAKICAgICAjIEFkZGl0aW9ucyBmb3IgUHl0aG9uIDIuMyBhbmQgcGlja2xlIHByb3RvY29sIDIKIApAQCAtNDkxLDEyICs1MjgsMTIgQEAKICAgICAgICAgeCA9IEMoW1sxLCAyXSwgM10pCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzKHhbMF0sIHlbMF0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X3JlZHVjZV81dHVwbGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMoZGljdCk6CkBAIC01MDgsMTIgKzU0NSwxMiBAQAogICAgICAgICB4ID0gQyhbKCJmb28iLCBbMSwgMl0pLCAoImJhciIsIDMpXSkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WyJmb28iXSwgeVsiZm9vIl0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WyJmb28iXSBpcyBub3QgeVsiZm9vIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WyJmb28iXSwgeVsiZm9vIl0pCiAKICAgICBkZWYgdGVzdF9jb3B5X3Nsb3RzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC01MjEsNyArNTU4LDcgQEAKICAgICAgICAgeCA9IEMoKQogICAgICAgICB4LmZvbyA9IFs0Ml0KICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfc2xvdHMoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTUzMCw3ICs1NjcsNyBAQAogICAgICAgICB4LmZvbyA9IFs0Ml0KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvbywgeS5mb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyBub3QgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfZGljdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhkaWN0KToKQEAgLTU0Nyw3ICs1ODQsNyBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fa2V5cywgeS5fa2V5cykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKICAgICAgICAgeFsnYmFyJ10gPSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoeCwgeSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh4Ll9rZXlzLCB5Ll9rZXlzKQpAQCAtNTYwLDggKzU5Nyw4IEBACiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHgpLCBsaXN0KHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCB5LmZvbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgeVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKHhbMF0sIHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeC5mb28sIHkuZm9vKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfbGlzdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhsaXN0KToKQEAgLTU3MSw4ICs2MDgsOCBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoeCksIGxpc3QoeSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIHkuZm9vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIG5vdCB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2NvcHlfdHVwbGVfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEModHVwbGUpOgpAQCAtNTg5LDggKzYyNiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoeCksIChbMSwgMl0sIDMpKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHkpLCAoWzEsIDJdLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X2dldHN0YXRlX2V4YyhzZWxmKToKICAgICAgICAgY2xhc3MgRXZpbFN0YXRlKG9iamVjdCk6CkBAIC02MTgsMTAgKzY1NSwxMCBAQAogICAgICAgICBvYmogPSBDKCkKICAgICAgICAgeCA9IHdlYWtyZWYucmVmKG9iaikKICAgICAgICAgeSA9IF9jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKICAgICAgICAgZGVsIG9iagogICAgICAgICB5ID0gX2NvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQogCiAgICAgZGVmIHRlc3RfY29weV93ZWFrcmVmKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja193ZWFrcmVmKGNvcHkuY29weSkKQEAgLTYzNyw3ICs2NzQsNyBAQAogICAgICAgICB1W2FdID0gYgogICAgICAgICB1W2NdID0gZAogICAgICAgICB2ID0gY29weS5jb3B5KHUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodiBpcyB1KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2FdLCBiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbY10sIGQpCkBAIC02NjcsOCArNzA0LDggQEAKICAgICAgICAgdiA9IGNvcHkuZGVlcGNvcHkodSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2W2FdIGlzIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodltjXSBpcyBkKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHZbYV0sIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodltjXSwgZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2FdLmksIGIuaSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2NdLmksIGQuaSkKICAgICAgICAgZGVsIGMKQEAgLTY4NywxMiArNzI0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDIpCiAgICAgICAgICh4LCB5KSwgKHosIHQpID0gc29ydGVkKHYuaXRlbXMoKSwga2V5PWxhbWJkYSBwYWlyOiBwYWlyWzBdLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeCBpcyBhKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5pLCBhLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeiBpcyBjKQorICAgICAgICBzZWxmLmFzc2VydElzKHksIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeiwgYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LmksIGMuaSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQgaXMgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0LCBkKQogICAgICAgICBkZWwgeCwgeSwgeiwgdAogICAgICAgICBkZWwgZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgMSkKQEAgLTcwNSw3ICs3NDIsNyBAQAogICAgICAgICBmLmIgPSBmLm0KICAgICAgICAgZyA9IGNvcHkuZGVlcGNvcHkoZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLm0sIGcuYikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcuYi5fX3NlbGZfXyBpcyBnKQorICAgICAgICBzZWxmLmFzc2VydElzKGcuYi5fX3NlbGZfXywgZykKICAgICAgICAgZy5iKCkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBhZTE3YzJiLi41Njc2NjY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTE4LDE2ICsxOCwxOSBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb3VudGVyX2R1cmluZ19kZWFsbG9jKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2xzcHJvZgogICAgICAgICAjIE11c3QgdXNlIGEgZmlsZSBhcyBTdHJpbmdJTyBkb2Vzbid0IHRyaWdnZXIgdGhlIGJ1Zy4KLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmaWxlOgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IGZpbGUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKGxhbWJkYTogaW50KQotICAgICAgICAgICAgICAgIG9iai5lbmFibGUoKQotICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIoMSkKLSAgICAgICAgICAgICAgICBvYmouZGlzYWJsZSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBmaWxlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKGxhbWJkYTogaW50KQorICAgICAgICAgICAgICAgICAgICBvYmouZW5hYmxlKCkKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcigxKQorICAgICAgICAgICAgICAgICAgICBvYmouZGlzYWJsZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNmNjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CkBAIC0wLDAgKzEsMzggQEAKKyMgVGVzdHMgdGhhdCB0aGUgY3Jhc2hlcnMgaW4gdGhlIExpYi90ZXN0L2NyYXNoZXJzIGRpcmVjdG9yeSBhY3R1YWxseQorIyBkbyBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgYXMgZXhwZWN0ZWQKKyMKKyMgSWYgYSBjcmFzaGVyIGlzIGZpeGVkLCBpdCBzaG91bGQgYmUgbW92ZWQgZWxzZXdoZXJlIGluIHRoZSB0ZXN0IHN1aXRlIHRvCisjIGVuc3VyZSBpdCBjb250aW51ZXMgdG8gd29yayBjb3JyZWN0bHkuCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGdsb2IKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVzdC5zdXBwb3J0Citmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCisKK0NSQVNIRVJfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJjcmFzaGVycyIpCitDUkFTSEVSX0ZJTEVTID0gb3MucGF0aC5qb2luKENSQVNIRVJfRElSLCAiKi5weSIpCisKK2luZmluaXRlX2xvb3BzID0gWyJpbmZpbml0ZV9sb29wX3JlLnB5IiwgIm5hc3R5X2VxX3ZzX2RpY3QucHkiXQorCitjbGFzcyBDcmFzaGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcCgidGhlc2UgdGVzdHMgYXJlIHRvbyBmcmFnaWxlIikKKyAgICBAdGVzdC5zdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NyYXNoZXJzX2NyYXNoKHNlbGYpOgorICAgICAgICBmb3IgZm5hbWUgaW4gZ2xvYi5nbG9iKENSQVNIRVJfRklMRVMpOgorICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShmbmFtZSkgaW4gaW5maW5pdGVfbG9vcHM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgU29tZSAiY3Jhc2hlcnMiIG9ubHkgdHJpZ2dlciBhbiBleGNlcHRpb24gcmF0aGVyIHRoYW4gYQorICAgICAgICAgICAgIyBzZWdmYXVsdC4gQ29uc2lkZXIgdGhhdCBhbiBhY2NlcHRhYmxlIG91dGNvbWUuCisgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiQ2hlY2tpbmcgY3Jhc2hlcjoiLCBmbmFtZSkKKyAgICAgICAgICAgIGFzc2VydF9weXRob25fZmFpbHVyZShmbmFtZSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDcmFzaGVyVGVzdCkKKyAgICB0ZXN0LnN1cHBvcnQucmVhcF9jaGlsZHJlbigpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkgYi9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CmluZGV4IDJhZGIyOGQuLmRjMTA3ZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQpAQCAtMTAsNiArMTAsMjUgQEAKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ1Rlc3QgZW5jcnlwdGlvbjogJywgYykKIAorICAgIGRlZiB0ZXN0X3NhbHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNyeXB0Ll9zYWx0Y2hhcnMpLCA2NCkKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzOgorICAgICAgICAgICAgc2FsdCA9IGNyeXB0Lm1rc2FsdChtZXRob2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzYWx0KSwKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLnNhbHRfY2hhcnMgKyAoMyBpZiBtZXRob2QuaWRlbnQgZWxzZSAwKSkKKworICAgIGRlZiB0ZXN0X3NhbHRlZGNyeXB0KHNlbGYpOgorICAgICAgICBmb3IgbWV0aG9kIGluIGNyeXB0Lm1ldGhvZHM6CisgICAgICAgICAgICBwdyA9IGNyeXB0LmNyeXB0KCdhc3N3b3JkJywgbWV0aG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocHcpLCBtZXRob2QudG90YWxfc2l6ZSkKKyAgICAgICAgICAgIHB3ID0gY3J5cHQuY3J5cHQoJ2Fzc3dvcmQnLCBjcnlwdC5ta3NhbHQobWV0aG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHB3KSwgbWV0aG9kLnRvdGFsX3NpemUpCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIEd1cmFudGVlIHRoYXQgTUVUSE9EX0NSWVBUIGlzIHRoZSBsYXN0IG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGNyeXB0Lm1ldGhvZHMpID49IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3J5cHQuTUVUSE9EX0NSWVBULCBjcnlwdC5tZXRob2RzWy0xXSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENyeXB0VGVzdENhc2UpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKaW5kZXggNTgxMjE0Ny4uZTk1OTYyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKQEAgLTI2NCwxMSArMjY0LDUzIEBACiAgICAgY3Vyc2VzLnVuZ2V0Y2goMTAyNSkKICAgICBzdGRzY3IuZ2V0a2V5KCkKIAorZGVmIHRlc3RfdW5nZXRfd2NoKHN0ZHNjcik6CisgICAgaWYgbm90IGhhc2F0dHIoY3Vyc2VzLCAndW5nZXRfd2NoJyk6CisgICAgICAgIHJldHVybgorICAgIGVuY29kaW5nID0gc3Rkc2NyLmVuY29kaW5nCisgICAgZm9yIGNoIGluICgnYScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBGRkZGJyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNoLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGN1cnNlcy51bmdldF93Y2goY2gpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ1bmdldF93Y2goJWEpIGZhaWxlZCB3aXRoIGVuY29kaW5nICVzOiAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjaCwgc3Rkc2NyLmVuY29kaW5nLCBlcnIpKQorICAgICAgICByZWFkID0gc3Rkc2NyLmdldF93Y2goKQorICAgICAgICBpZiByZWFkICE9IGNoOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVyICE9ICVyIiAlIChyZWFkLCBjaCkpCisKKyAgICAgICAgY29kZSA9IG9yZChjaCkKKyAgICAgICAgY3Vyc2VzLnVuZ2V0X3djaChjb2RlKQorICAgICAgICByZWFkID0gc3Rkc2NyLmdldF93Y2goKQorICAgICAgICBpZiByZWFkICE9IGNoOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVyICE9ICVyIiAlIChyZWFkLCBjaCkpCisKIGRlZiB0ZXN0X2lzc3VlMTA1NzAoKToKICAgICBiID0gY3Vyc2VzLnRwYXJtKGN1cnNlcy50aWdldHN0cigiY3VwIiksIDUsIDMpCiAgICAgYXNzZXJ0IHR5cGUoYikgaXMgYnl0ZXMKICAgICBjdXJzZXMucHV0cChiKQogCitkZWYgdGVzdF9lbmNvZGluZyhzdGRzY3IpOgorICAgIGltcG9ydCBjb2RlY3MKKyAgICBlbmNvZGluZyA9IHN0ZHNjci5lbmNvZGluZworICAgIGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpCisgICAgdHJ5OgorICAgICAgICBzdGRzY3IuZW5jb2RpbmcgPSAxMAorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVHlwZUVycm9yIG5vdCByYWlzZWQiKQorICAgIHN0ZHNjci5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgdHJ5OgorICAgICAgICBkZWwgc3Rkc2NyLmVuY29kaW5nCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJUeXBlRXJyb3Igbm90IHJhaXNlZCIpCisKIGRlZiBtYWluKHN0ZHNjcik6CiAgICAgY3Vyc2VzLnNhdmV0dHkoKQogICAgIHRyeToKQEAgLTI3NywxNiArMzE5LDE4IEBACiAgICAgICAgIHRlc3RfdXNlcnB0cl93aXRob3V0X3NldChzdGRzY3IpCiAgICAgICAgIHRlc3RfcmVzaXplX3Rlcm0oc3Rkc2NyKQogICAgICAgICB0ZXN0X2lzc3VlNjI0MyhzdGRzY3IpCisgICAgICAgIHRlc3RfdW5nZXRfd2NoKHN0ZHNjcikKICAgICAgICAgdGVzdF9pc3N1ZTEwNTcwKCkKKyAgICAgICAgdGVzdF9lbmNvZGluZyhzdGRzY3IpCiAgICAgZmluYWxseToKICAgICAgICAgY3Vyc2VzLnJlc2V0dHkoKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgaWYgbm90IHN5cy5zdGRvdXQuaXNhdHR5KCk6Ci0gICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzeXMuc3Rkb3V0IGlzIG5vdCBhIHR0eSIpCisgICAgaWYgbm90IHN5cy5fX3N0ZG91dF9fLmlzYXR0eSgpOgorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic3lzLl9fc3Rkb3V0X18gaXMgbm90IGEgdHR5IikKICAgICAjIHRlc3Rpbmcgc2V0dXB0ZXJtKCkgaW5zaWRlIGluaXRzY3IvZW5kd2luCiAgICAgIyBjYXVzZXMgdGVybWluYWwgYnJlYWthZ2UKLSAgICBjdXJzZXMuc2V0dXB0ZXJtKGZkPXN5cy5zdGRvdXQuZmlsZW5vKCkpCisgICAgY3Vyc2VzLnNldHVwdGVybShmZD1zeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKICAgICB0cnk6CiAgICAgICAgIHN0ZHNjciA9IGN1cnNlcy5pbml0c2NyKCkKICAgICAgICAgbWFpbihzdGRzY3IpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDI2ZDRjMTQuLjAyZGY3ZTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC03MSw4ICs3MSw4IEBACiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYW55ZGJtX2NyZWF0aW9uX25fZmlsZV9leGlzdHNfd2l0aF9pbnZhbGlkX2NvbnRlbnRzKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oX2ZuYW1lLCAidyIpIGFzIHc6Ci0gICAgICAgICAgICBwYXNzICMgY3JlYXRlIGFuIGVtcHR5IGZpbGUKKyAgICAgICAgIyBjcmVhdGUgYW4gZW1wdHkgZmlsZQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoX2ZuYW1lKQogCiAgICAgICAgIGYgPSBkYm0ub3BlbihfZm5hbWUsICduJykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGYuY2xvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKaW5kZXggMzBkMzk3MS4uZWM1ZGI5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQpAQCAtMTYsNyArMTYsNyBAQAogCiBDb3dsaXNoYXcncyB0ZXN0cyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgogCi0gICB3d3cyLmh1cnNsZXkuaWJtLmNvbS9kZWNpbWFsL2RlY3Rlc3QuemlwCisgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjdGVzdC56aXAKIAogVGhpcyB0ZXN0IG1vZHVsZSBjYW4gYmUgY2FsbGVkIGZyb20gY29tbWFuZCBsaW5lIHdpdGggb25lIHBhcmFtZXRlciAoQXJpdGhtZXRpYwogb3IgQmVoYXZpb3VyKSB0byB0ZXN0IGVhY2ggcGFydCwgb3Igd2l0aG91dCBwYXJhbWV0ZXIgdG8gdGVzdCBib3RoIHBhcnRzLiBJZgpAQCAtMzAsMzcgKzMwLDc1IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBwaWNrbGUsIGNvcHkKIGltcG9ydCB1bml0dGVzdAotZnJvbSBkZWNpbWFsIGltcG9ydCAqCiBpbXBvcnQgbnVtYmVycworaW1wb3J0IGxvY2FsZQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJ1bl9kb2N0ZXN0LCBpc19yZXNvdXJjZV9lbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19JRUVFXzc1NCkKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjaGVja193YXJuaW5ncywgaW1wb3J0X2ZyZXNoX21vZHVsZSwgVGVzdEZhaWxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3dpdGhfbG9jYWxlKQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHRpbWUKK2ltcG9ydCB3YXJuaW5ncwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKLSMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKLVNpZ25hbHMgPSB0dXBsZShnZXRjb250ZXh0KCkuZmxhZ3Mua2V5cygpKQogCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCitvcmlnX3N5c19kZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisjIGZyYWN0aW9ucyBtb2R1bGUgbXVzdCBpbXBvcnQgdGhlIGNvcnJlY3QgZGVjaW1hbCBtb2R1bGUuCitjZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCitwZnJhY3Rpb25zID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZnJhY3Rpb25zJywgZnJlc2g9WydmcmFjdGlvbnMnXSkKK3N5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCitmcmFjdGlvbnMgPSB7QzpjZnJhY3Rpb25zLCBQOnBmcmFjdGlvbnN9CitzeXMubW9kdWxlc1snZGVjaW1hbCddID0gb3JpZ19zeXNfZGVjaW1hbAorCisKKyMgVXNlZnVsIFRlc3QgQ29uc3RhbnQKK1NpZ25hbHMgPSB7CisgIEM6IHR1cGxlKEMuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IHR1cGxlKFAuZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkKK30KICMgU2lnbmFscyBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBwcmVjZWRlbmNlOiB3aGVuIGFuIG9wZXJhdGlvbgogIyBwcm9kdWNlcyBtdWx0aXBsZSBzaWduYWxzLCBzaWduYWxzIG9jY3VycmluZyBsYXRlciBpbiB0aGUgbGlzdAogIyBzaG91bGQgYmUgaGFuZGxlZCBiZWZvcmUgdGhvc2Ugb2NjdXJyaW5nIGVhcmxpZXIgaW4gdGhlIGxpc3QuCi1PcmRlcmVkU2lnbmFscyA9IChDbGFtcGVkLCBSb3VuZGVkLCBJbmV4YWN0LCBTdWJub3JtYWwsCi0gICAgICAgICAgICAgICAgICBVbmRlcmZsb3csIE92ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbikKK09yZGVyZWRTaWduYWxzID0geworICBDOiBbQy5DbGFtcGVkLCBDLlJvdW5kZWQsIEMuSW5leGFjdCwgQy5TdWJub3JtYWwsIEMuVW5kZXJmbG93LAorICAgICAgQy5PdmVyZmxvdywgQy5EaXZpc2lvbkJ5WmVybywgQy5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgQy5GbG9hdE9wZXJhdGlvbl0gaWYgQyBlbHNlIE5vbmUsCisgIFA6IFtQLkNsYW1wZWQsIFAuUm91bmRlZCwgUC5JbmV4YWN0LCBQLlN1Ym5vcm1hbCwgUC5VbmRlcmZsb3csCisgICAgICBQLk92ZXJmbG93LCBQLkRpdmlzaW9uQnlaZXJvLCBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICBQLkZsb2F0T3BlcmF0aW9uXQorfQorZGVmIGFzc2VydF9zaWduYWxzKGNscywgY29udGV4dCwgYXR0ciwgZXhwZWN0ZWQpOgorICAgIGQgPSBnZXRhdHRyKGNvbnRleHQsIGF0dHIpCisgICAgY2xzLmFzc2VydFRydWUoYWxsKGRbc10gaWYgcyBpbiBleHBlY3RlZCBlbHNlIG5vdCBkW3NdIGZvciBzIGluIGQpKQorCitSb3VuZGluZ01vZGVzID0geworICBDOiAoQy5ST1VORF9VUCwgQy5ST1VORF9ET1dOLCBDLlJPVU5EX0NFSUxJTkcsIEMuUk9VTkRfRkxPT1IsCisgICAgICBDLlJPVU5EX0hBTEZfVVAsIEMuUk9VTkRfSEFMRl9ET1dOLCBDLlJPVU5EX0hBTEZfRVZFTiwKKyAgICAgIEMuUk9VTkRfMDVVUCkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IChQLlJPVU5EX1VQLCBQLlJPVU5EX0RPV04sIFAuUk9VTkRfQ0VJTElORywgUC5ST1VORF9GTE9PUiwKKyAgICAgIFAuUk9VTkRfSEFMRl9VUCwgUC5ST1VORF9IQUxGX0RPV04sIFAuUk9VTkRfSEFMRl9FVkVOLAorICAgICAgUC5ST1VORF8wNVVQKQorfQogCiAjIFRlc3RzIGFyZSBidWlsdCBhcm91bmQgdGhlc2UgYXNzdW1lZCBjb250ZXh0IGRlZmF1bHRzLgogIyB0ZXN0X21haW4oKSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgY29udGV4dC4KLWRlZiBpbml0KCk6Ci0gICAgZ2xvYmFsIE9SSUdJTkFMX0NPTlRFWFQKLSAgICBPUklHSU5BTF9DT05URVhUID0gZ2V0Y29udGV4dCgpLmNvcHkoKQotICAgIERlZmF1bHRUZXN0Q29udGV4dCA9IENvbnRleHQoCi0gICAgICAgIHByZWMgPSA5LAotICAgICAgICByb3VuZGluZyA9IFJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgdHJhcHMgPSBkaWN0LmZyb21rZXlzKFNpZ25hbHMsIDApCi0gICAgICAgICkKLSAgICBzZXRjb250ZXh0KERlZmF1bHRUZXN0Q29udGV4dCkKK09SSUdJTkFMX0NPTlRFWFQgPSB7CisgIEM6IEMuZ2V0Y29udGV4dCgpLmNvcHkoKSBpZiBDIGVsc2UgTm9uZSwKKyAgUDogUC5nZXRjb250ZXh0KCkuY29weSgpCit9CitkZWYgaW5pdChtKToKKyAgICBpZiBub3QgbTogcmV0dXJuCisgICAgRGVmYXVsdFRlc3RDb250ZXh0ID0gbS5Db250ZXh0KAorICAgICAgIHByZWM9OSwgcm91bmRpbmc9bS5ST1VORF9IQUxGX0VWRU4sIHRyYXBzPWRpY3QuZnJvbWtleXMoU2lnbmFsc1ttXSwgMCkKKyAgICApCisgICAgbS5zZXRjb250ZXh0KERlZmF1bHRUZXN0Q29udGV4dCkKIAogVEVTVERBVEFESVIgPSAnZGVjaW1hbHRlc3RkYXRhJwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKQEAgLTcyLDE0OSArMTEwLDE3NSBAQAogCiBza2lwX2V4cGVjdGVkID0gbm90IG9zLnBhdGguaXNkaXIoZGlyZWN0b3J5KQogCi0jIGxpc3Qgb2YgaW5kaXZpZHVhbCAuZGVjVGVzdCB0ZXN0IGlkcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGVzdHMgdGhhdAotIyB3ZSdyZSBza2lwcGluZyBmb3Igb25lIHJlYXNvbiBvciBhbm90aGVyLgotc2tpcHBlZF90ZXN0X2lkcyA9IHNldChbCi0gICAgIyBTa2lwIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHNjYWxlYiB0ZXN0cy4KLSAgICAnc2NieDE2NCcsCi0gICAgJ3NjYngxNjUnLAotCi0gICAgIyBGb3Igc29tZSBvcGVyYXRpb25zIChjdXJyZW50bHkgZXhwLCBsbiwgbG9nMTAsIHBvd2VyKSwgdGhlIGRlY051bWJlcgotICAgICMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGltcG9zZXMgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgb24gdGhlIGNvbnRleHQKLSAgICAjIGFuZCBvcGVyYW5kcy4gIFRoZXNlIHJlc3RyaWN0aW9ucyBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb247Ci0gICAgIyBob3dldmVyLCB0aGUgZWZmZWN0IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBkb2VzIHNob3cgdXAgaW4gc29tZSBvZiB0aGUKLSAgICAjIHRlc3RjYXNlcy4gIFdlIHNraXAgdGVzdGNhc2VzIHRoYXQgdmlvbGF0ZSB0aGVzZSByZXN0cmljdGlvbnMsIHNpbmNlCi0gICAgIyBEZWNpbWFsIGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSBkZWNOdW1iZXIgZm9yIHRoZXNlIHRlc3RjYXNlcyBzbyB0aGVzZQotICAgICMgdGVzdGNhc2VzIHdvdWxkIG90aGVyd2lzZSBmYWlsLgotICAgICdleHB4OTAxJywKLSAgICAnZXhweDkwMicsCi0gICAgJ2V4cHg5MDMnLAotICAgICdleHB4OTA1JywKLSAgICAnbG54OTAxJywKLSAgICAnbG54OTAyJywKLSAgICAnbG54OTAzJywKLSAgICAnbG54OTA1JywKLSAgICAnbG9neDkwMScsCi0gICAgJ2xvZ3g5MDInLAotICAgICdsb2d4OTAzJywKLSAgICAnbG9neDkwNScsCi0gICAgJ3Bvd3gxMTgzJywKLSAgICAncG93eDExODQnLAotICAgICdwb3d4NDAwMScsCi0gICAgJ3Bvd3g0MDAyJywKLSAgICAncG93eDQwMDMnLAotICAgICdwb3d4NDAwNScsCi0gICAgJ3Bvd3g0MDA4JywKLSAgICAncG93eDQwMTAnLAotICAgICdwb3d4NDAxMicsCi0gICAgJ3Bvd3g0MDE0JywKLSAgICBdKQotCiAjIE1ha2Ugc3VyZSBpdCBhY3R1YWxseSByYWlzZXMgZXJyb3JzIHdoZW4gbm90IGV4cGVjdGVkIGFuZCBjYXVnaHQgaW4gZmxhZ3MKICMgU2xvd2VyLCBzaW5jZSBpdCBydW5zIHNvbWUgdGhpbmdzIHNldmVyYWwgdGltZXMuCiBFWFRFTkRFREVSUk9SVEVTVCA9IEZhbHNlCiAKLSNNYXAgdGhlIHRlc3QgY2FzZXMnIGVycm9yIG5hbWVzIHRvIHRoZSBhY3R1YWwgZXJyb3JzCi1FcnJvck5hbWVzID0geydjbGFtcGVkJyA6IENsYW1wZWQsCi0gICAgICAgICAgICAgICdjb252ZXJzaW9uX3N5bnRheCcgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnZGl2aXNpb25fYnlfemVybycgOiBEaXZpc2lvbkJ5WmVybywKLSAgICAgICAgICAgICAgJ2RpdmlzaW9uX2ltcG9zc2libGUnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2RpdmlzaW9uX3VuZGVmaW5lZCcgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnaW5leGFjdCcgOiBJbmV4YWN0LAotICAgICAgICAgICAgICAnaW52YWxpZF9jb250ZXh0JyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdpbnZhbGlkX29wZXJhdGlvbicgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnb3ZlcmZsb3cnIDogT3ZlcmZsb3csCi0gICAgICAgICAgICAgICdyb3VuZGVkJyA6IFJvdW5kZWQsCi0gICAgICAgICAgICAgICdzdWJub3JtYWwnIDogU3Vibm9ybWFsLAotICAgICAgICAgICAgICAndW5kZXJmbG93JyA6IFVuZGVyZmxvd30KKyMgVGVzdCBleHRyYSBmdW5jdGlvbmFsaXR5IGluIHRoZSBDIHZlcnNpb24gKC1ERVhUUkFfRlVOQ1RJT05BTElUWSkuCitFWFRSQV9GVU5DVElPTkFMSVRZID0gVHJ1ZSBpZiBoYXNhdHRyKEMsICdEZWNDbGFtcGVkJykgZWxzZSBGYWxzZQorcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eSA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgIEVYVFJBX0ZVTkNUSU9OQUxJVFksICJ0ZXN0IHJlcXVpcmVzIGJ1aWxkIHdpdGggLURFWFRSQV9GVU5DVElPTkFMSVRZIikKK3NraXBfaWZfZXh0cmFfZnVuY3Rpb25hbGl0eSA9IHVuaXR0ZXN0LnNraXBJZigKKyAgRVhUUkFfRlVOQ1RJT05BTElUWSwgInRlc3QgcmVxdWlyZXMgcmVndWxhciBidWlsZCIpCiAKIAotZGVmIE5vbmZ1bmN0aW9uKCphcmdzKToKLSAgICAiIiJEb2Vzbid0IGRvIGFueXRoaW5nLiIiIgotICAgIHJldHVybiBOb25lCitjbGFzcyBJQk1UZXN0Q2FzZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkNsYXNzIHdoaWNoIHRlc3RzIHRoZSBEZWNpbWFsIGNsYXNzIGFnYWluc3QgdGhlIElCTSB0ZXN0IGNhc2VzLiIiIgogCi1Sb3VuZGluZ0RpY3QgPSB7J2NlaWxpbmcnIDogUk9VTkRfQ0VJTElORywgI01hcHMgdGVzdC1jYXNlIG5hbWVzIHRvIHJvdW5kaW5ncy4KLSAgICAgICAgICAgICAgICAnZG93bicgOiBST1VORF9ET1dOLAotICAgICAgICAgICAgICAgICdmbG9vcicgOiBST1VORF9GTE9PUiwKLSAgICAgICAgICAgICAgICAnaGFsZl9kb3duJyA6IFJPVU5EX0hBTEZfRE9XTiwKLSAgICAgICAgICAgICAgICAnaGFsZl9ldmVuJyA6IFJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgICAgICAgICAnaGFsZl91cCcgOiBST1VORF9IQUxGX1VQLAotICAgICAgICAgICAgICAgICd1cCcgOiBST1VORF9VUCwKLSAgICAgICAgICAgICAgICAnMDV1cCcgOiBST1VORF8wNVVQfQotCi0jIE5hbWUgYWRhcHRlciB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgRGVjaW1hbCBhbmQgQ29udGV4dAotIyBpbnRlcmZhY2Ugd2l0aG91dCBjaGFuZ2luZyB0aGUgdGVzdCBmaWxlcyBmcm9tIENvd2xpc2hhdwotbmFtZUFkYXB0ZXIgPSB7J2FuZCc6J2xvZ2ljYWxfYW5kJywKLSAgICAgICAgICAgICAgICdhcHBseSc6J19hcHBseScsCi0gICAgICAgICAgICAgICAnY2xhc3MnOidudW1iZXJfY2xhc3MnLAotICAgICAgICAgICAgICAgJ2NvbXBhcmVzaWcnOidjb21wYXJlX3NpZ25hbCcsCi0gICAgICAgICAgICAgICAnY29tcGFyZXRvdGFsJzonY29tcGFyZV90b3RhbCcsCi0gICAgICAgICAgICAgICAnY29tcGFyZXRvdG1hZyc6J2NvbXBhcmVfdG90YWxfbWFnJywKLSAgICAgICAgICAgICAgICdjb3B5JzonY29weV9kZWNpbWFsJywKLSAgICAgICAgICAgICAgICdjb3B5YWJzJzonY29weV9hYnMnLAotICAgICAgICAgICAgICAgJ2NvcHluZWdhdGUnOidjb3B5X25lZ2F0ZScsCi0gICAgICAgICAgICAgICAnY29weXNpZ24nOidjb3B5X3NpZ24nLAotICAgICAgICAgICAgICAgJ2RpdmlkZWludCc6J2RpdmlkZV9pbnQnLAotICAgICAgICAgICAgICAgJ2ludmVydCc6J2xvZ2ljYWxfaW52ZXJ0JywKLSAgICAgICAgICAgICAgICdpc2Nhbm9uaWNhbCc6J2lzX2Nhbm9uaWNhbCcsCi0gICAgICAgICAgICAgICAnaXNmaW5pdGUnOidpc19maW5pdGUnLAotICAgICAgICAgICAgICAgJ2lzaW5maW5pdGUnOidpc19pbmZpbml0ZScsCi0gICAgICAgICAgICAgICAnaXNuYW4nOidpc19uYW4nLAotICAgICAgICAgICAgICAgJ2lzbm9ybWFsJzonaXNfbm9ybWFsJywKLSAgICAgICAgICAgICAgICdpc3FuYW4nOidpc19xbmFuJywKLSAgICAgICAgICAgICAgICdpc3NpZ25lZCc6J2lzX3NpZ25lZCcsCi0gICAgICAgICAgICAgICAnaXNzbmFuJzonaXNfc25hbicsCi0gICAgICAgICAgICAgICAnaXNzdWJub3JtYWwnOidpc19zdWJub3JtYWwnLAotICAgICAgICAgICAgICAgJ2lzemVybyc6J2lzX3plcm8nLAotICAgICAgICAgICAgICAgJ21heG1hZyc6J21heF9tYWcnLAotICAgICAgICAgICAgICAgJ21pbm1hZyc6J21pbl9tYWcnLAotICAgICAgICAgICAgICAgJ25leHRtaW51cyc6J25leHRfbWludXMnLAotICAgICAgICAgICAgICAgJ25leHRwbHVzJzonbmV4dF9wbHVzJywKLSAgICAgICAgICAgICAgICduZXh0dG93YXJkJzonbmV4dF90b3dhcmQnLAotICAgICAgICAgICAgICAgJ29yJzonbG9naWNhbF9vcicsCi0gICAgICAgICAgICAgICAncmVkdWNlJzonbm9ybWFsaXplJywKLSAgICAgICAgICAgICAgICdyZW1haW5kZXJuZWFyJzoncmVtYWluZGVyX25lYXInLAotICAgICAgICAgICAgICAgJ3NhbWVxdWFudHVtJzonc2FtZV9xdWFudHVtJywKLSAgICAgICAgICAgICAgICdzcXVhcmVyb290Jzonc3FydCcsCi0gICAgICAgICAgICAgICAndG9lbmcnOid0b19lbmdfc3RyaW5nJywKLSAgICAgICAgICAgICAgICd0b2ludGVncmFsJzondG9faW50ZWdyYWxfdmFsdWUnLAotICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWx4JzondG9faW50ZWdyYWxfZXhhY3QnLAotICAgICAgICAgICAgICAgJ3Rvc2NpJzondG9fc2NpX3N0cmluZycsCi0gICAgICAgICAgICAgICAneG9yJzonbG9naWNhbF94b3InLAotICAgICAgICAgICAgICB9Ci0KLSMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIFRydWUvRmFsc2UgcmF0aGVyIHRoYW4gYSBEZWNpbWFsIGluc3RhbmNlCi0KLUxPR0lDQUxfRlVOQ1RJT05TID0gKAotICAgICdpc19jYW5vbmljYWwnLAotICAgICdpc19maW5pdGUnLAotICAgICdpc19pbmZpbml0ZScsCi0gICAgJ2lzX25hbicsCi0gICAgJ2lzX25vcm1hbCcsCi0gICAgJ2lzX3FuYW4nLAotICAgICdpc19zaWduZWQnLAotICAgICdpc19zbmFuJywKLSAgICAnaXNfc3Vibm9ybWFsJywKLSAgICAnaXNfemVybycsCi0gICAgJ3NhbWVfcXVhbnR1bScsCi0gICAgKQotCi1jbGFzcyBEZWNpbWFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQ2xhc3Mgd2hpY2ggdGVzdHMgdGhlIERlY2ltYWwgY2xhc3MgYWdhaW5zdCB0aGUgdGVzdCBjYXNlcy4KLQotICAgIENoYW5nZWQgZm9yIHVuaXR0ZXN0LgotICAgICIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5jb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuY29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgc2VsZi5yZWFkY29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKICAgICAgICAgc2VsZi5pZ25vcmVfbGlzdCA9IFsnIyddCi0gICAgICAgICMgQmFzaWNhbGx5LCBhICMgbWVhbnMgcmV0dXJuIE5hTiBJbnZhbGlkT3BlcmF0aW9uLgotICAgICAgICAjIERpZmZlcmVudCBmcm9tIGEgc05hTiBpbiB0cmltCiAKKyAgICAgICAgIyBMaXN0IG9mIGluZGl2aWR1YWwgLmRlY1Rlc3QgdGVzdCBpZHMgdGhhdCBjb3JyZXNwb25kIHRvIHRlc3RzIHRoYXQKKyAgICAgICAgIyB3ZSdyZSBza2lwcGluZyBmb3Igb25lIHJlYXNvbiBvciBhbm90aGVyLgorICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMgPSBzZXQoWworICAgICAgICAgICAgIyBTa2lwIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHNjYWxlYiB0ZXN0cy4KKyAgICAgICAgICAgICdzY2J4MTY0JywKKyAgICAgICAgICAgICdzY2J4MTY1JywKKworICAgICAgICAgICAgIyBGb3Igc29tZSBvcGVyYXRpb25zIChjdXJyZW50bHkgZXhwLCBsbiwgbG9nMTAsIHBvd2VyKSwgdGhlIGRlY051bWJlcgorICAgICAgICAgICAgIyByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaW1wb3NlcyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBvbiB0aGUgY29udGV4dAorICAgICAgICAgICAgIyBhbmQgb3BlcmFuZHMuICBUaGVzZSByZXN0cmljdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uOworICAgICAgICAgICAgIyBob3dldmVyLCB0aGUgZWZmZWN0IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBkb2VzIHNob3cgdXAgaW4gc29tZSBvZiB0aGUKKyAgICAgICAgICAgICMgdGVzdGNhc2VzLiAgV2Ugc2tpcCB0ZXN0Y2FzZXMgdGhhdCB2aW9sYXRlIHRoZXNlIHJlc3RyaWN0aW9ucywgc2luY2UKKyAgICAgICAgICAgICMgRGVjaW1hbCBiZWhhdmVzIGRpZmZlcmVudGx5IGZyb20gZGVjTnVtYmVyIGZvciB0aGVzZSB0ZXN0Y2FzZXMgc28gdGhlc2UKKyAgICAgICAgICAgICMgdGVzdGNhc2VzIHdvdWxkIG90aGVyd2lzZSBmYWlsLgorICAgICAgICAgICAgJ2V4cHg5MDEnLAorICAgICAgICAgICAgJ2V4cHg5MDInLAorICAgICAgICAgICAgJ2V4cHg5MDMnLAorICAgICAgICAgICAgJ2V4cHg5MDUnLAorICAgICAgICAgICAgJ2xueDkwMScsCisgICAgICAgICAgICAnbG54OTAyJywKKyAgICAgICAgICAgICdsbng5MDMnLAorICAgICAgICAgICAgJ2xueDkwNScsCisgICAgICAgICAgICAnbG9neDkwMScsCisgICAgICAgICAgICAnbG9neDkwMicsCisgICAgICAgICAgICAnbG9neDkwMycsCisgICAgICAgICAgICAnbG9neDkwNScsCisgICAgICAgICAgICAncG93eDExODMnLAorICAgICAgICAgICAgJ3Bvd3gxMTg0JywKKyAgICAgICAgICAgICdwb3d4NDAwMScsCisgICAgICAgICAgICAncG93eDQwMDInLAorICAgICAgICAgICAgJ3Bvd3g0MDAzJywKKyAgICAgICAgICAgICdwb3d4NDAwNScsCisgICAgICAgICAgICAncG93eDQwMDgnLAorICAgICAgICAgICAgJ3Bvd3g0MDEwJywKKyAgICAgICAgICAgICdwb3d4NDAxMicsCisgICAgICAgICAgICAncG93eDQwMTQnLAorICAgICAgICAgICAgXSkKKworICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgICMgc3RhdHVzIGhhcyBhZGRpdGlvbmFsIFN1Ym5vcm1hbCwgVW5kZXJmbG93CisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd3N4ODAzJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3c3g4MDUnKQorICAgICAgICAgICAgIyBDb3JyZWN0IHJvdW5kaW5nIChza2lwcGVkIGZvciBkZWNOdW1iZXIsIHRvbykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzAyJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzAzJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzQyJykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3Bvd3g0MzQzJykKKyAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTcwNDkKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3bXgzMjUnKQorICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdteDMyNicpCisKKyAgICAgICAgIyBNYXAgdGVzdCBkaXJlY3RpdmVzIHRvIHNldHRlciBmdW5jdGlvbnMuCiAgICAgICAgIHNlbGYuQ2hhbmdlRGljdCA9IHsncHJlY2lzaW9uJyA6IHNlbGYuY2hhbmdlX3ByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAncm91bmRpbmcnIDogc2VsZi5jaGFuZ2Vfcm91bmRpbmdfbWV0aG9kLAotICAgICAgICAgICAgICAgICAgICAgICdtYXhleHBvbmVudCcgOiBzZWxmLmNoYW5nZV9tYXhfZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgJ21pbmV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21pbl9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAnY2xhbXAnIDogc2VsZi5jaGFuZ2VfY2xhbXB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAncm91bmRpbmcnIDogc2VsZi5jaGFuZ2Vfcm91bmRpbmdfbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heGV4cG9uZW50JyA6IHNlbGYuY2hhbmdlX21heF9leHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5leHBvbmVudCcgOiBzZWxmLmNoYW5nZV9taW5fZXhwb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xhbXAnIDogc2VsZi5jaGFuZ2VfY2xhbXB9CisKKyAgICAgICAgIyBOYW1lIGFkYXB0ZXIgdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIERlY2ltYWwgYW5kIENvbnRleHQKKyAgICAgICAgIyBpbnRlcmZhY2Ugd2l0aG91dCBjaGFuZ2luZyB0aGUgdGVzdCBmaWxlcyBmcm9tIENvd2xpc2hhdy4KKyAgICAgICAgc2VsZi5OYW1lQWRhcHRlciA9IHsnYW5kJzonbG9naWNhbF9hbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHBseSc6J19hcHBseScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzJzonbnVtYmVyX2NsYXNzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXNpZyc6J2NvbXBhcmVfc2lnbmFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyZXRvdGFsJzonY29tcGFyZV90b3RhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmV0b3RtYWcnOidjb21wYXJlX3RvdGFsX21hZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHknOidjb3B5X2RlY2ltYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5YWJzJzonY29weV9hYnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5bmVnYXRlJzonY29weV9uZWdhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5c2lnbic6J2NvcHlfc2lnbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlkZWludCc6J2RpdmlkZV9pbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZlcnQnOidsb2dpY2FsX2ludmVydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzY2Fub25pY2FsJzonaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNmaW5pdGUnOidpc19maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc2luZmluaXRlJzonaXNfaW5maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc25hbic6J2lzX25hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzbm9ybWFsJzonaXNfbm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNxbmFuJzonaXNfcW5hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzc2lnbmVkJzonaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNzbmFuJzonaXNfc25hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzc3Vibm9ybWFsJzonaXNfc3Vibm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXN6ZXJvJzonaXNfemVybycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heG1hZyc6J21heF9tYWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW5tYWcnOidtaW5fbWFnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dG1pbnVzJzonbmV4dF9taW51cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25leHRwbHVzJzonbmV4dF9wbHVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmV4dHRvd2FyZCc6J25leHRfdG93YXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3InOidsb2dpY2FsX29yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVkdWNlJzonbm9ybWFsaXplJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVybmVhcic6J3JlbWFpbmRlcl9uZWFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtZXF1YW50dW0nOidzYW1lX3F1YW50dW0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcXVhcmVyb290Jzonc3FydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvZW5nJzondG9fZW5nX3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWwnOid0b19pbnRlZ3JhbF92YWx1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvaW50ZWdyYWx4JzondG9faW50ZWdyYWxfZXhhY3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b3NjaSc6J3RvX3NjaV9zdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4b3InOidsb2dpY2FsX3hvcid9CisKKyAgICAgICAgIyBNYXAgdGVzdC1jYXNlIG5hbWVzIHRvIHJvdW5kaW5ncy4KKyAgICAgICAgc2VsZi5Sb3VuZGluZ0RpY3QgPSB7J2NlaWxpbmcnIDogc2VsZi5kZWNpbWFsLlJPVU5EX0NFSUxJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3duJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvb3InIDogc2VsZi5kZWNpbWFsLlJPVU5EX0ZMT09SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFsZl9kb3duJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX0RPV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWxmX2V2ZW4nIDogc2VsZi5kZWNpbWFsLlJPVU5EX0hBTEZfRVZFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbGZfdXAnIDogc2VsZi5kZWNpbWFsLlJPVU5EX0hBTEZfVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1cCcgOiBzZWxmLmRlY2ltYWwuUk9VTkRfVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwNXVwJyA6IHNlbGYuZGVjaW1hbC5ST1VORF8wNVVQfQorCisgICAgICAgICMgTWFwIHRoZSB0ZXN0IGNhc2VzJyBlcnJvciBuYW1lcyB0byB0aGUgYWN0dWFsIGVycm9ycy4KKyAgICAgICAgc2VsZi5FcnJvck5hbWVzID0geydjbGFtcGVkJyA6IHNlbGYuZGVjaW1hbC5DbGFtcGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25fc3ludGF4JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2J5X3plcm8nIDogc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX2ltcG9zc2libGUnIDogc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb25fdW5kZWZpbmVkJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luZXhhY3QnIDogc2VsZi5kZWNpbWFsLkluZXhhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZF9jb250ZXh0JyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWRfb3BlcmF0aW9uJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ292ZXJmbG93JyA6IHNlbGYuZGVjaW1hbC5PdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb3VuZGVkJyA6IHNlbGYuZGVjaW1hbC5Sb3VuZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1Ym5vcm1hbCcgOiBzZWxmLmRlY2ltYWwuU3Vibm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyZmxvdycgOiBzZWxmLmRlY2ltYWwuVW5kZXJmbG93fQorCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIFRydWUvRmFsc2UgcmF0aGVyIHRoYW4gYQorICAgICAgICAjIERlY2ltYWwgaW5zdGFuY2UuCisgICAgICAgIHNlbGYuTG9naWNhbEZ1bmN0aW9ucyA9ICgnaXNfY2Fub25pY2FsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19maW5pdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2luZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19uYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX25vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfcW5hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfc2lnbmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19zdWJub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3plcm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbWVfcXVhbnR1bScpCisKKyAgICBkZWYgcmVhZF91bmxpbWl0ZWQoc2VsZiwgdiwgY29udGV4dCk6CisgICAgICAgICIiIldvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgMzItYml0IF9kZWNpbWFsIHZlcnNpb24uIFRoZQorICAgICAgICAgICBndWFyYW50ZWVkIG1heGltdW0gdmFsdWVzIGZvciBwcmVjLCBFbWF4IGV0Yy4gYXJlIDQyNTAwMDAwMCwKKyAgICAgICAgICAgYnV0IGhpZ2hlciB2YWx1ZXMgdXN1YWxseSB3b3JrLCBleGNlcHQgZm9yIHJhcmUgY29ybmVyIGNhc2VzLgorICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBhbGwgb2YgdGhlIElCTSB0ZXN0cyBwYXNzIHdpdGggbWF4aW11bSB2YWx1ZXMKKyAgICAgICAgICAgb2YgMTA3MDAwMDAwMC4iIiIKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfRU1BWCA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLnJlYWRjb250ZXh0Ll91bnNhZmVfc2V0cHJlYygxMDcwMDAwMDAwKQorICAgICAgICAgICAgc2VsZi5yZWFkY29udGV4dC5fdW5zYWZlX3NldGVtYXgoMTA3MDAwMDAwMCkKKyAgICAgICAgICAgIHNlbGYucmVhZGNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKC0xMDcwMDAwMDAwKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVhZGNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY2ltYWwuRGVjaW1hbCh2LCBjb250ZXh0KQogCiAgICAgZGVmIGV2YWxfZmlsZShzZWxmLCBmaWxlKToKICAgICAgICAgZ2xvYmFsIHNraXBfZXhwZWN0ZWQKQEAgLTIyNyw3ICsyOTEsNyBAQAogICAgICAgICAgICAgICAgICNwcmludCBsaW5lCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0ID0gc2VsZi5ldmFsX2xpbmUobGluZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRGVjaW1hbEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuZGVjaW1hbC5EZWNpbWFsRXhjZXB0aW9uIGFzIGV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgI0V4Y2VwdGlvbiByYWlzZWQgd2hlcmUgdGhlcmUgc2hvdWxkbid0IGhhdmUgYmVlbiBvbmUuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICInK2V4Y2VwdGlvbi5fX2NsYXNzX18uX19uYW1lX18gKyAnIiByYWlzZWQgb24gbGluZSAnK2xpbmUpCiAKQEAgLTI1NCwyMyArMzE4LDIzIEBACiAgICAgZGVmIGV2YWxfZGlyZWN0aXZlKHNlbGYsIHMpOgogICAgICAgICBmdW5jdCwgdmFsdWUgPSAoeC5zdHJpcCgpLmxvd2VyKCkgZm9yIHggaW4gcy5zcGxpdCgnOicpKQogICAgICAgICBpZiBmdW5jdCA9PSAncm91bmRpbmcnOgotICAgICAgICAgICAgdmFsdWUgPSBSb3VuZGluZ0RpY3RbdmFsdWVdCisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuUm91bmRpbmdEaWN0W3ZhbHVlXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgTm9uZnVuY3Rpb24pCisgICAgICAgIGZ1bmN0ID0gc2VsZi5DaGFuZ2VEaWN0LmdldChmdW5jdCwgKGxhbWJkYSAqYXJnczogTm9uZSkpCiAgICAgICAgIGZ1bmN0KHZhbHVlKQogCiAgICAgZGVmIGV2YWxfZXF1YXRpb24oc2VsZiwgcyk6Ci0gICAgICAgICNnbG9iYWwgREVGQVVMVF9QUkVDSVNJT04KLSAgICAgICAgI3ByaW50IERFRkFVTFRfUFJFQ0lTSU9OCiAKICAgICAgICAgaWYgbm90IFRFU1RfQUxMIGFuZCByYW5kb20ucmFuZG9tKCkgPCAwLjkwOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgc2VsZi5jb250ZXh0LmNsZWFyX2ZsYWdzKCkKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBTaWRlcyA9IHMuc3BsaXQoJy0+JykKICAgICAgICAgICAgIEwgPSBTaWRlc1swXS5zdHJpcCgpLnNwbGl0KCkKQEAgLTI4MywyNiArMzQ3LDI2IEBACiAgICAgICAgICAgICBhbnMgPSBMWzBdCiAgICAgICAgICAgICBleGNlcHRpb25zID0gTFsxOl0KICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBJbmRleEVycm9yKToKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCiAgICAgICAgIGRlZiBGaXhRdW90ZXModmFsKToKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInJyIsICdTaW5nbGVRdW90ZScpLnJlcGxhY2UoJyIiJywgJ0RvdWJsZVF1b3RlJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInIiwgJycpLnJlcGxhY2UoJyInLCAnJykKICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCdTaW5nbGVRdW90ZScsICInIikucmVwbGFjZSgnRG91YmxlUXVvdGUnLCAnIicpCiAgICAgICAgICAgICByZXR1cm4gdmFsCiAKLSAgICAgICAgaWYgaWQgaW4gc2tpcHBlZF90ZXN0X2lkczoKKyAgICAgICAgaWYgaWQgaW4gc2VsZi5za2lwcGVkX3Rlc3RfaWRzOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgZm5hbWUgPSBuYW1lQWRhcHRlci5nZXQoZnVuY3QsIGZ1bmN0KQorICAgICAgICBmbmFtZSA9IHNlbGYuTmFtZUFkYXB0ZXIuZ2V0KGZ1bmN0LCBmdW5jdCkKICAgICAgICAgaWYgZm5hbWUgPT0gJ3Jlc2NhbGUnOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGZ1bmN0ID0gZ2V0YXR0cihzZWxmLmNvbnRleHQsIGZuYW1lKQogICAgICAgICB2YWxzID0gW10KICAgICAgICAgY29uZ2xvbWVyYXRlID0gJycKICAgICAgICAgcXVvdGUgPSAwCi0gICAgICAgIHRoZWlyZXhjZXB0aW9ucyA9IFtFcnJvck5hbWVzW3gubG93ZXIoKV0gZm9yIHggaW4gZXhjZXB0aW9uc10KKyAgICAgICAgdGhlaXJleGNlcHRpb25zID0gW3NlbGYuRXJyb3JOYW1lc1t4Lmxvd2VyKCldIGZvciB4IGluIGV4Y2VwdGlvbnNdCiAKLSAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBTaWduYWxzOgorICAgICAgICBmb3IgZXhjZXB0aW9uIGluIFNpZ25hbHNbc2VsZi5kZWNpbWFsXToKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMSAjQ2F0Y2ggdGhlc2UgYnVncy4uLgogICAgICAgICBmb3IgZXhjZXB0aW9uIGluIHRoZWlyZXhjZXB0aW9uczoKICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMApAQCAtMzI0LDcgKzM4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Qoc2VsZi5jb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHYpKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLCBzLCBlcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzMyLDcgKzM5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXJyb3JdID0gMAogICAgICAgICAgICAgICAgIHYgPSBzZWxmLmNvbnRleHQuY3JlYXRlX2RlY2ltYWwodikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IERlY2ltYWwodiwgc2VsZi5jb250ZXh0KQorICAgICAgICAgICAgICAgIHYgPSBzZWxmLnJlYWRfdW5saW1pdGVkKHYsIHNlbGYuY29udGV4dCkKICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHYpCiAKICAgICAgICAgYW5zID0gRml4UXVvdGVzKGFucykKQEAgLTM0NCw3ICs0MDgsNyBAQAogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXMgd2hlbiAlcyBkaXNhYmxlZCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNTIsMTQgKzQxNiwxNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAwCiAKICAgICAgICAgICAgICMgYXMgYWJvdmUsIGJ1dCBhZGQgdHJhcHMgY3VtdWxhdGl2ZWx5LCB0byBjaGVjayBwcmVjZWRlbmNlCi0gICAgICAgICAgICBvcmRlcmVkX2Vycm9ycyA9IFtlIGZvciBlIGluIE9yZGVyZWRTaWduYWxzIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQorICAgICAgICAgICAgb3JkZXJlZF9lcnJvcnMgPSBbZSBmb3IgZSBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIGUgaW4gdGhlaXJleGNlcHRpb25zXQogICAgICAgICAgICAgZm9yIGVycm9yIGluIG9yZGVyZWRfZXJyb3JzOgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC50cmFwc1tlcnJvcl0gPSAxCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmdW5jdCgqdmFscykKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJSYWlzZWQgJXMgaW4gJXM7IGV4cGVjdGVkICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShlKSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzMsNTQgKzQzNyw2OSBAQAogICAgICAgICAgICAgcHJpbnQoIi0tIiwgc2VsZi5jb250ZXh0KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXN1bHQgPSBzdHIoZnVuY3QoKnZhbHMpKQotICAgICAgICAgICAgaWYgZm5hbWUgaW4gTE9HSUNBTF9GVU5DVElPTlM6CisgICAgICAgICAgICBpZiBmbmFtZSBpbiBzZWxmLkxvZ2ljYWxGdW5jdGlvbnM6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyKGludChldmFsKHJlc3VsdCkpKSAjICdUcnVlJywgJ0ZhbHNlJyAtPiAnMScsICcwJwotICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlcnJvcjoKKyAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlcnJvcjoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzIiAlIChlcnJvciwgcykpCiAgICAgICAgIGV4Y2VwdDogI0NhdGNoIGFueSBlcnJvciBsb25nIGVub3VnaCB0byBzdGF0ZSB0aGUgdGVzdCBjYXNlLgogICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiIsIHMpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIG15ZXhjZXB0aW9ucyA9IHNlbGYuZ2V0ZXhjZXB0aW9ucygpCi0gICAgICAgIHNlbGYuY29udGV4dC5jbGVhcl9mbGFncygpCiAKICAgICAgICAgbXlleGNlcHRpb25zLnNvcnQoa2V5PXJlcHIpCiAgICAgICAgIHRoZWlyZXhjZXB0aW9ucy5zb3J0KGtleT1yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBhbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCBhbnN3ZXIgZm9yICcgKyBzICsgJyAtLSBnb3QgJyArIHJlc3VsdCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZXhjZXB0aW9ucywgdGhlaXJleGNlcHRpb25zLAogICAgICAgICAgICAgICAnSW5jb3JyZWN0IGZsYWdzIHNldCBpbiAnICsgcyArICcgLS0gZ290ICcgKyBzdHIobXlleGNlcHRpb25zKSkKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgZ2V0ZXhjZXB0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIFNpZ25hbHMgaWYgc2VsZi5jb250ZXh0LmZsYWdzW2VdXQorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGlmIHNlbGYuY29udGV4dC5mbGFnc1tlXV0KIAogICAgIGRlZiBjaGFuZ2VfcHJlY2lzaW9uKHNlbGYsIHByZWMpOgotICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRwcmVjKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQucHJlYyA9IHByZWMKICAgICBkZWYgY2hhbmdlX3JvdW5kaW5nX21ldGhvZChzZWxmLCByb3VuZGluZyk6CiAgICAgICAgIHNlbGYuY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCiAgICAgZGVmIGNoYW5nZV9taW5fZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtaW4gPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWluKGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWluID0gZXhwCiAgICAgZGVmIGNoYW5nZV9tYXhfZXhwb25lbnQoc2VsZiwgZXhwKToKLSAgICAgICAgc2VsZi5jb250ZXh0LkVtYXggPSBleHAKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEMgYW5kIHNlbGYuZGVjaW1hbC5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuX3Vuc2FmZV9zZXRlbWF4KGV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY29udGV4dC5FbWF4ID0gZXhwCiAgICAgZGVmIGNoYW5nZV9jbGFtcChzZWxmLCBjbGFtcCk6CiAgICAgICAgIHNlbGYuY29udGV4dC5jbGFtcCA9IGNsYW1wCiAKLQorY2xhc3MgQ0lCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUlCTVRlc3RDYXNlcyhJQk1UZXN0Q2FzZXMpOgorICAgIGRlY2ltYWwgPSBQCiAKICMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIHRlc3QgdGhlIGJlaGF2aW91ciBvZiBEZWNpbWFsIGFjY29yZGluZyB0byBQRVAgMzI3CiAKLWNsYXNzIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBFeHBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2VtcHR5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCksIERlY2ltYWwoIjAiKSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fTm9uZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21faW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCkBAIC00MzgsNyArNTE3LDE4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCiAKKyAgICAgICAgIyBzaW5nbGUgd29yZCBsb25ncworICAgICAgICBmb3IgbiBpbiByYW5nZSgwLCAzMik6CisgICAgICAgICAgICBmb3Igc2lnbiBpbiAoLTEsIDEpOgorICAgICAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgaSA9IHNpZ24gKiAoMioqbiArIHgpCisgICAgICAgICAgICAgICAgICAgIGQgPSBEZWNpbWFsKGkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCBzdHIoaSkpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgI2VtcHR5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJycpKSwgJ05hTicpCkBAIC00NTgsOCArNTQ4LDM1IEBACiAgICAgICAgICNsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHBlcm1pdHRlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxLjNFNCBcbicpKSwgJzEuM0UrNCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJyAgLTcuODknKSksICctNy44OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIiAgMy40NTY3OSAgIikpLCAnMy40NTY3OScpCisKKyAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKKyAgICAgICAgZm9yIGxlYWQgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICBmb3IgdHJhaWwgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChsZWFkICsgJzkuMzExRSsyOCcgKyB0cmFpbCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzkuMzExRSsyOCcpCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgICMgSW52YWxpZCBzdHJpbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJ4eXoiKQorICAgICAgICAgICAgIyBUd28gYXJndW1lbnRzIG1heAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsLCAiMTIzNCIsICJ4IiwgInkiKQorCisgICAgICAgICAgICAjIHNwYWNlIHdpdGhpbiB0aGUgbnVtZXJpYyBwYXJ0CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMVx1MDBhMDJcdTAwYTAzIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTAxXHUwMGEwMlx1MDBhMCIpCisKKyAgICAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiXHUwMGEwIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICJcdTAwYTBcdTAwYTAiKQorCisgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCisKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fdHVwbGVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjemVybwogICAgICAgICBkID0gRGVjaW1hbCggKDAsICgwLCksIDApICkKQEAgLTQ3Nyw2ICs1OTQsMTAgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNCksIC0yNSkgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCiAKKyAgICAgICAgI2luZgorICAgICAgICBkID0gRGVjaW1hbCggKDAsICgpLCAiRiIpICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICdJbmZpbml0eScpCisKICAgICAgICAgI3dyb25nIG51bWJlciBvZiBpdGVtcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIDksIDEpKSApCiAKQEAgLTQ5MSw0NSArNjEyLDYzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMywgNCwgOSwgMSksICcxJykgKQogCiAgICAgICAgICNiYWQgY29lZmZpY2llbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAieHl6IiwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIE5vbmUsIDEpLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgLTMsIDQsIDksIDEpLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMTAsIDQsIDksIDEpLCAyKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwsICgxLCAoNCwgMywgNCwgJ2EnLCAxKSwgMikgKQogCisgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBkID0gRGVjaW1hbChbMCwgWzBdLCAwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICcwJykKKworICAgICAgICBkID0gRGVjaW1hbChbMSwgWzQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDRdLCAtMjVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzEsICg0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0KSwgLTI1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQorCisgICAgICAgIGQgPSBEZWNpbWFsKCgxLCBbNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNF0sIC0yNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKKwogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fYm9vbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgc2VsZi5hc3NlcnRJcyhib29sKERlY2ltYWwoMCkpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhib29sKERlY2ltYWwoMSkpLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoRmFsc2UpLCBEZWNpbWFsKDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoVHJ1ZSksIERlY2ltYWwoMSkpCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX0RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICNwb3NpdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCg0NSkKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc0NScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgICAgICN2ZXJ5IGxhcmdlIHBvc2l0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKDUwMDAwMDEyMykKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc1MDAwMDAxMjMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjbmVnYXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoLTQ1KQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJy00NScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgICAgICN6ZXJvCiAgICAgICAgIGQgPSBEZWNpbWFsKDApCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9mbG9hdChzZWxmKToKKworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICByID0gRGVjaW1hbCgwLjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgRGVjaW1hbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksCkBAIC01NTAsOCArNjg5LDExIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KERlY2ltYWwoeCkpKSAjIHJvdW5kdHJpcAogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfY29udGV4dF9jcmVhdGVfZGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKIAotICAgICAgICBuYyA9IGNvcHkuY29weShnZXRjb250ZXh0KCkpCisgICAgICAgIG5jID0gY29weS5jb3B5KHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0KCkpCiAgICAgICAgIG5jLnByZWMgPSAzCiAKICAgICAgICAgIyBlbXB0eQpAQCAtNTkyLDcgKzczNCw3MyBAQAogICAgICAgICBkID0gbmMuY3JlYXRlX2RlY2ltYWwocHJldmRlYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICc1LjAwRSs4JykKIAorICAgICAgICAjIG1vcmUgaW50ZWdlcnMKKyAgICAgICAgbmMucHJlYyA9IDI4CisgICAgICAgIG5jLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIGZvciB2IGluIFstMioqNjMtMSwgLTIqKjYzLCAtMioqMzEtMSwgLTIqKjMxLCAwLAorICAgICAgICAgICAgICAgICAgIDIqKjMxLTEsIDIqKjMxLCAyKio2My0xLCAyKio2M106CisgICAgICAgICAgICBkID0gbmMuY3JlYXRlX2RlY2ltYWwodikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGQsIERlY2ltYWwpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZCksIHYpCisKKyAgICAgICAgbmMucHJlYyA9IDMKKyAgICAgICAgbmMudHJhcHNbUm91bmRlZF0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJvdW5kZWQsIG5jLmNyZWF0ZV9kZWNpbWFsLCAxMjM0KQorCisgICAgICAgICMgZnJvbSBzdHJpbmcKKyAgICAgICAgbmMucHJlYyA9IDI4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCcwRS0wMTcnKSksICcwRS0xNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCc0NScpKSwgJzQ1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJy1JbmYnKSksICctSW5maW5pdHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnTmFOMTIzJykpLCAnTmFOMTIzJykKKworICAgICAgICAjIGludmFsaWQgYXJndW1lbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisKKyAgICAgICAgIyB0b28gbWFueSBOYU4gcGF5bG9hZCBkaWdpdHMKKyAgICAgICAgbmMucHJlYyA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICdOYU4xMjM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCdOYU4xMjM0NScpKQorCisgICAgICAgIG5jLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTjEyMzQ1JykpLCAnTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgIG5jLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoRGVjaW1hbCgnTmFOMTIzNDUnKSkpLCAnTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfY29udGV4dF9jcmVhdGVfZnJvbV9mbG9hdChzZWxmKToKKworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBuYyA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgciA9IG5jLmNyZWF0ZV9kZWNpbWFsKDAuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHIpLCBEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwgJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnbmFuJykpLmlzX3FuYW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCdpbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCctaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCduYW4nKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnTmFOJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnaW5mJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ0luZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLWluZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctSW5maW5pdHknKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKGZsb2F0KCctMC4wJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJy0wJykpKQorICAgICAgICBuYy5wcmVjID0gMTAwCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQobmMuY3JlYXRlX2RlY2ltYWwoeCkpKSAjIHJvdW5kdHJpcAorCiAgICAgZGVmIHRlc3RfdW5pY29kZV9kaWdpdHMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHRlc3RfdmFsdWVzID0gewogICAgICAgICAgICAgJ1x1ZmYxMSc6ICcxJywKICAgICAgICAgICAgICdcdTA2NjAuXHUwNjYwXHUwNjYzXHUwNjY3XHUwNjYyZS1cdTA2NjMnIDogJzAuMDAwMDM3MicsCkBAIC02MDEsMjkgKzgwOSw0MSBAQAogICAgICAgICBmb3IgaW5wdXQsIGV4cGVjdGVkIGluIHRlc3RfdmFsdWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKGlucHV0KSksIGV4cGVjdGVkKQogCitjbGFzcyBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5RXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotY2xhc3MgRGVjaW1hbEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIEltcGxpY2l0IENvbnN0cnVjdGlvbiBjYXNlcyBvZiBEZWNpbWFsLicnJwogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9Ob25lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgTm9uZScsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyBOb25lJywgbG9jYWxzKCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX2ludChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgI25vcm1hbAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKDUpICsgNDUpLCAnNTAnKQogICAgICAgICAjZXhjZWVkaW5nIHByZWNpc2lvbgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNSkgKyAxMjM0NTY3ODkwMDAsIERlY2ltYWwoMTIzNDU2Nzg5MDAwKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fc3RyaW5nKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgIjMiJywgZ2xvYmFscygpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArICIzIicsIGxvY2FscygpKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9mbG9hdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIDIuMicsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAyLjInLCBsb2NhbHMoKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fRGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1KSArIERlY2ltYWwoNDUpLCBEZWNpbWFsKDUwKSkKIAogICAgIGRlZiB0ZXN0X3JvcChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgIyBBbGxvdyBvdGhlciBjbGFzc2VzIHRvIGJlIHRyYWluZWQgdG8gaW50ZXJhY3Qgd2l0aCBEZWNpbWFscwogICAgICAgICBjbGFzcyBFOgogICAgICAgICAgICAgZGVmIF9fZGl2bW9kX18oc2VsZiwgb3RoZXIpOgpAQCAtNjcxLDEwICs4OTEsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgnRGVjaW1hbCgxMCknICsgc3ltICsgJ0UoKScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTAnICsgcm9wICsgJ3N0cicpCiAKK2NsYXNzIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QoSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QoSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KToKKyAgICBkZWNpbWFsID0gUAogCi1jbGFzcyBEZWNpbWFsRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBGb3JtYXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciB0aGUgZm9ybWF0IGZ1bmN0aW9uLicnJwogICAgIGRlZiB0ZXN0X2Zvcm1hdHRpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICMgdHJpcGxlcyBnaXZpbmcgYSBmb3JtYXQsIGEgRGVjaW1hbCwgYW5kIHRoZSBleHBlY3RlZCByZXN1bHQKICAgICAgICAgdGVzdF92YWx1ZXMgPSBbCiAgICAgICAgICAgICAoJ2UnLCAnMEUtMTUnLCAnMGUtMTUnKSwKQEAgLTczMCw2ICs5NTYsNyBAQAogICAgICAgICAgICAgKCdnJywgJzBFLTcnLCAnMGUtNycpLAogICAgICAgICAgICAgKCdnJywgJy0wRTInLCAnLTBlKzInKSwKICAgICAgICAgICAgICgnLjBnJywgJzMuMTQxNTkyNjUnLCAnMycpLCAgIyAwIHNpZyBmaWcgLT4gMSBzaWcgZmlnCisgICAgICAgICAgICAoJy4wbicsICczLjE0MTU5MjY1JywgJzMnKSwgICMgc2FtZSBmb3IgJ24nCiAgICAgICAgICAgICAoJy4xZycsICczLjE0MTU5MjY1JywgJzMnKSwKICAgICAgICAgICAgICgnLjJnJywgJzMuMTQxNTkyNjUnLCAnMy4xJyksCiAgICAgICAgICAgICAoJy41ZycsICczLjE0MTU5MjY1JywgJzMuMTQxNicpLApAQCAtODE0LDU2ICsxMDQxLDYwIEBACiAKICAgICAgICAgICAgICMgaXNzdWUgNjg1MAogICAgICAgICAgICAgKCdhPS03LjAnLCAnMC4xMjM0NScsICdhYWFhMC4xJyksCi0KLSAgICAgICAgICAgICMgSXNzdWUgNzA5NDogQWx0ZXJuYXRlIGZvcm1hdHRpbmcgKHNwZWNpZmllZCBieSAjKQotICAgICAgICAgICAgKCcuMGUnLCAnMS4wJywgJzFlKzAnKSwKLSAgICAgICAgICAgICgnIy4wZScsICcxLjAnLCAnMS5lKzAnKSwKLSAgICAgICAgICAgICgnLjBmJywgJzEuMCcsICcxJyksCi0gICAgICAgICAgICAoJyMuMGYnLCAnMS4wJywgJzEuJyksCi0gICAgICAgICAgICAoJ2cnLCAnMS4xJywgJzEuMScpLAotICAgICAgICAgICAgKCcjZycsICcxLjEnLCAnMS4xJyksCi0gICAgICAgICAgICAoJy4wZycsICcxJywgJzEnKSwKLSAgICAgICAgICAgICgnIy4wZycsICcxJywgJzEuJyksCi0gICAgICAgICAgICAoJy4wJScsICcxLjAnLCAnMTAwJScpLAotICAgICAgICAgICAgKCcjLjAlJywgJzEuMCcsICcxMDAuJScpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZm10LCBkLCByZXN1bHQgaW4gdGVzdF92YWx1ZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChEZWNpbWFsKGQpLCBmbXQpLCByZXN1bHQpCiAKKyAgICAgICAgIyBieXRlcyBmb3JtYXQgYXJndW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sIGInLTAyMCcpCisKICAgICBkZWYgdGVzdF9uX2Zvcm1hdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGRlZiBtYWtlX2dyb3VwaW5nKGxzdCk6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihbY2hyKHgpIGZvciB4IGluIGxzdF0pIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGVsc2UgbHN0CisKKyAgICAgICAgZGVmIGdldF9mbXQoeCwgb3ZlcnJpZGU9Tm9uZSwgZm10PSduJyk6CisgICAgICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbCh4KS5fX2Zvcm1hdF9fKGZtdCwgb3ZlcnJpZGUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHgpLl9fZm9ybWF0X18oZm10LCBfbG9jYWxlY29udj1vdmVycmlkZSkKKwogICAgICAgICAjIFNldCB1cCBzb21lIGxvY2FsZWNvbnYtbGlrZSBkaWN0aW9uYXJpZXMKICAgICAgICAgZW5fVVMgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLicsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogWzMsIDMsIDBdLAotICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnOiAnLCcKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKICAgICAgICAgICAgIH0KIAogICAgICAgICBmcl9GUiA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcsJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbQ0hBUl9NQVhdLAorICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IG1ha2VfZ3JvdXBpbmcoW0NIQVJfTUFYXSksCiAgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnJwogICAgICAgICAgICAgfQogCiAgICAgICAgIHJ1X1JVID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJywnLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFszLCAzLCAwXSwKKyAgICAgICAgICAgICdncm91cGluZyc6IG1ha2VfZ3JvdXBpbmcoWzMsIDMsIDBdKSwKICAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcgJwogICAgICAgICAgICAgfQogCiAgICAgICAgIGNyYXp5ID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJyYnLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFsxLCA0LCAyLCBDSEFSX01BWF0sCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFsxLCA0LCAyLCBDSEFSX01BWF0pLAogICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJy0nCiAgICAgICAgICAgICB9CiAKLQotICAgICAgICBkZWYgZ2V0X2ZtdCh4LCBsb2NhbGUsIGZtdD0nbicpOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwuX19mb3JtYXRfXyhEZWNpbWFsKHgpLCBmbXQsIF9sb2NhbGVjb252PWxvY2FsZSkKKyAgICAgICAgZG90c2VwX3dpZGUgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiBiJ1x4YzJceGJmJy5kZWNvZGUoJ3V0Zi04JyksCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiBiJ1x4YzJceGI0Jy5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIH0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoRGVjaW1hbCgnMTIuNycpLCBlbl9VUyksICcxMi43JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJzEyLjcnKSwgZnJfRlIpLCAnMTIsNycpCkBAIC05MDIsMTEgKzExMzMsMzQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KDEyMzQ1NiwgY3JhenksICcwMTJuJyksICcwMC0wMS0yMzQ1LTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoMTIzNDU2LCBjcmF6eSwgJzAxM24nKSwgJzAwMC0wMS0yMzQ1LTYnKQogCisgICAgICAgICMgd2lkZSBjaGFyIHNlcGFyYXRvciBhbmQgZGVjaW1hbCBwb2ludAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9mbXQoRGVjaW1hbCgnLTEuNScpLCBkb3RzZXBfd2lkZSwgJzAyMG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnLTBcdTAwYjQwMDBcdTAwYjQwMDBcdTAwYjQwMDBcdTAwYjQwMDFcdTAwYmY1JykKIAotY2xhc3MgRGVjaW1hbEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAncHNfQUYnKQorICAgIGRlZiB0ZXN0X3dpZGVfY2hhcl9zZXBhcmF0b3JfZGVjaW1hbF9wb2ludChzZWxmKToKKyAgICAgICAgIyBsb2NhbGUgd2l0aCB3aWRlIGNoYXIgc2VwYXJhdG9yIGFuZCBkZWNpbWFsIHBvaW50CisgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZGVjaW1hbF9wb2ludCA9IGxvY2FsZS5sb2NhbGVjb252KClbJ2RlY2ltYWxfcG9pbnQnXQorICAgICAgICB0aG91c2FuZHNfc2VwID0gbG9jYWxlLmxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCisgICAgICAgIGlmIGRlY2ltYWxfcG9pbnQgIT0gJ1x1MDY2Yicgb3IgdGhvdXNhbmRzX3NlcCAhPSAnXHUwNjZjJzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KERlY2ltYWwoJzEwMDAwMDAwMC4xMjMnKSwgJ24nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAwXHUwNjZjMDAwXHUwNjZjMDAwXHUwNjZiMTIzJykKKworY2xhc3MgQ0Zvcm1hdFRlc3QoRm9ybWF0VGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Rm9ybWF0VGVzdChGb3JtYXRUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBBcml0aG1ldGljT3BlcmF0b3JzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgYWxsIGFyaXRobWV0aWMgb3BlcmF0b3JzLCBiaW5hcnkgYW5kIHVuYXJ5LicnJwogCiAgICAgZGVmIHRlc3RfYWRkaXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTExLjEnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzIyLjInKQpAQCAtOTM0LDYgKzExODgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxNi4xJykpCiAKICAgICBkZWYgdGVzdF9zdWJ0cmFjdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctMTEuMScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMjIuMicpCkBAIC05NjEsNiArMTIxNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy0zOC4zJykpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMycpCkBAIC05ODgsNiArMTI0NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy03NScpKQogCiAgICAgZGVmIHRlc3RfZGl2aXNpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTAxNSw2ICsxMjcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnLTAuNjI1JykpCiAKICAgICBkZWYgdGVzdF9mbG9vcl9kaXZpc2lvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwNDIsNiArMTMwMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJzEnKSkKIAogICAgIGRlZiB0ZXN0X3Bvd2VyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTA2OSw2ICsxMzI4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMzkwNjI1JykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMicpCkBAIC0xMDk2LDYgKzEzNTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxJykpCiAKICAgICBkZWYgdGVzdF9mbG9vcl9kaXZfbW9kdWxlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTEyMiw2ICsxMzgzLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHEpLCB0eXBlKGQxKSkKIAogICAgIGRlZiB0ZXN0X3VuYXJ5X29wZXJhdG9ycyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgrRGVjaW1hbCg0NSksIERlY2ltYWwoKzQ1KSkgICAgICAgICAgICMgICsKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtRGVjaW1hbCg0NSksIERlY2ltYWwoLTQ1KSkgICAgICAgICAgICMgIC0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhYnMoRGVjaW1hbCg0NSkpLCBhYnMoRGVjaW1hbCgtNDUpKSkgICMgYWJzCkBAIC0xMTM0LDYgKzEzOTcsOSBAQAogCiAgICAgICAgICMgZXF1YWxpdHkgY29tcGFyaXNvbnMgKD09LCAhPSkgaW52b2x2aW5nIG9ubHkgcXVpZXQgbmFucwogICAgICAgICAjIGRvbid0IHNpZ25hbCwgYnV0IHJldHVybiBGYWxzZSBvciBUcnVlIHJlc3BlY3RpdmVseS4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CiAKICAgICAgICAgbiA9IERlY2ltYWwoJ05hTicpCiAgICAgICAgIHMgPSBEZWNpbWFsKCdzTmFOJykKQEAgLTExNzksNTMgKzE0NDUsMTI0IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG9wLCB4LCB5KQogCiAgICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBkID0gRGVjaW1hbCgxKS5jb3B5X3NpZ24oRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCisgICAgICAgIGQgPSBEZWNpbWFsKDEpLmNvcHlfc2lnbihEZWNpbWFsKC0yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEpLmNvcHlfc2lnbigtMiksIGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5jb3B5X3NpZ24sICctMicpCiAKK2NsYXNzIENBcml0aG1ldGljT3BlcmF0b3JzVGVzdChBcml0aG1ldGljT3BlcmF0b3JzVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5QXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QoQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QpOgorICAgIGRlY2ltYWwgPSBQCisKICMgVGhlIGZvbGxvd2luZyBhcmUgdHdvIGZ1bmN0aW9ucyB1c2VkIHRvIHRlc3QgdGhyZWFkaW5nIGluIHRoZSBuZXh0IGNsYXNzCiAKIGRlZiB0aGZ1bmMxKGNscyk6CisgICAgRGVjaW1hbCA9IGNscy5kZWNpbWFsLkRlY2ltYWwKKyAgICBJbnZhbGlkT3BlcmF0aW9uID0gY2xzLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgIERpdmlzaW9uQnlaZXJvID0gY2xzLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICBPdmVyZmxvdyA9IGNscy5kZWNpbWFsLk92ZXJmbG93CisgICAgVW5kZXJmbG93ID0gY2xzLmRlY2ltYWwuVW5kZXJmbG93CisgICAgSW5leGFjdCA9IGNscy5kZWNpbWFsLkluZXhhY3QKKyAgICBnZXRjb250ZXh0ID0gY2xzLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgIGxvY2FsY29udGV4dCA9IGNscy5kZWNpbWFsLmxvY2FsY29udGV4dAorCiAgICAgZDEgPSBEZWNpbWFsKDEpCiAgICAgZDMgPSBEZWNpbWFsKDMpCiAgICAgdGVzdDEgPSBkMS9kMwotICAgIGNscy5zeW5jaHJvLndhaXQoKQotICAgIHRlc3QyID0gZDEvZDMKLSAgICBjbHMuZmluaXNoMS5zZXQoKQogCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QxLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKLSAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorICAgIGNscy5maW5pc2gxLnNldCgpCisgICAgY2xzLnN5bmNocm8ud2FpdCgpCisKKyAgICB0ZXN0MiA9IGQxL2QzCisgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgY2xzLmFzc2VydFRydWUoYzIuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoRGl2aXNpb25CeVplcm8sIGMyLmRpdmlkZSwgZDEsIDApCisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMzoKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbRGl2aXNpb25CeVplcm9dKQorICAgICAgICAgICAgY2xzLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjMy5jb21wYXJlLCBkMSwgRGVjaW1hbCgnc05hTicpKQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMyLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICBkZWwgYzIKKworICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCisKKyAgICBjMSA9IGdldGNvbnRleHQoKQorICAgIGNscy5hc3NlcnRUcnVlKGMxLmZsYWdzW0luZXhhY3RdKQorICAgIGZvciBzaWcgaW4gT3ZlcmZsb3csIFVuZGVyZmxvdywgRGl2aXNpb25CeVplcm8sIEludmFsaWRPcGVyYXRpb246CisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMS5mbGFnc1tzaWddKQogICAgIHJldHVybgogCiBkZWYgdGhmdW5jMihjbHMpOgorICAgIERlY2ltYWwgPSBjbHMuZGVjaW1hbC5EZWNpbWFsCisgICAgSW52YWxpZE9wZXJhdGlvbiA9IGNscy5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICBEaXZpc2lvbkJ5WmVybyA9IGNscy5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgT3ZlcmZsb3cgPSBjbHMuZGVjaW1hbC5PdmVyZmxvdworICAgIFVuZGVyZmxvdyA9IGNscy5kZWNpbWFsLlVuZGVyZmxvdworICAgIEluZXhhY3QgPSBjbHMuZGVjaW1hbC5JbmV4YWN0CisgICAgZ2V0Y29udGV4dCA9IGNscy5kZWNpbWFsLmdldGNvbnRleHQKKyAgICBsb2NhbGNvbnRleHQgPSBjbHMuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgIGQxID0gRGVjaW1hbCgxKQogICAgIGQzID0gRGVjaW1hbCgzKQogICAgIHRlc3QxID0gZDEvZDMKKwogICAgIHRoaXNjb250ZXh0ID0gZ2V0Y29udGV4dCgpCiAgICAgdGhpc2NvbnRleHQucHJlYyA9IDE4CiAgICAgdGVzdDIgPSBkMS9kMworCisgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgY2xzLmFzc2VydFRydWUoYzIuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMyLm11bHRpcGx5LCBEZWNpbWFsKCcxZTQyNTAwMDAwMCcpLCA5OTkpCisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQodGhpc2NvbnRleHQpIGFzIGMzOgorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbSW5leGFjdF0pCisgICAgICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgYzMudHJhcHNbVW5kZXJmbG93XSA9IFRydWUKKyAgICAgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoVW5kZXJmbG93LCBjMy5kaXZpZGUsIERlY2ltYWwoJzFlLTQyNTAwMDAwMCcpLCA5OTkpCisgICAgICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMy5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICAgICAgZGVsIGMzCisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMi5mbGFnc1tVbmRlcmZsb3ddKQorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzIudHJhcHNbVW5kZXJmbG93XSkKKyAgICAgICAgZGVsIGMyCisKICAgICBjbHMuc3luY2hyby5zZXQoKQogICAgIGNscy5maW5pc2gyLnNldCgpCiAKLSAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKICAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDIsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzJykpCisKKyAgICBjbHMuYXNzZXJ0RmFsc2UodGhpc2NvbnRleHQudHJhcHNbVW5kZXJmbG93XSkKKyAgICBjbHMuYXNzZXJ0VHJ1ZSh0aGlzY29udGV4dC5mbGFnc1tJbmV4YWN0XSkKKyAgICBmb3Igc2lnIGluIE92ZXJmbG93LCBVbmRlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uOgorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UodGhpc2NvbnRleHQuZmxhZ3Nbc2lnXSkKICAgICByZXR1cm4KIAotCi1jbGFzcyBEZWNpbWFsVXNlT2ZDb250ZXh0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgJycnVW5pdCB0ZXN0cyBmb3IgVXNlIG9mIENvbnRleHQgY2FzZXMgaW4gRGVjaW1hbC4nJycKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHRocmVhZGluZwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgdGhyZWFkaW5nID0gTm9uZQorY2xhc3MgVGhyZWFkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgJycnVW5pdCB0ZXN0cyBmb3IgdGhyZWFkIGxvY2FsIGNvbnRleHRzIGluIERlY2ltYWwuJycnCiAKICAgICAjIFRha2UgY2FyZSBleGVjdXRpbmcgdGhpcyB0ZXN0IGZyb20gSURMRSwgdGhlcmUncyBhbiBpc3N1ZSBpbiB0aHJlYWRpbmcKICAgICAjIHRoYXQgaGFuZ3MgSURMRSBhbmQgSSBjb3VsZG4ndCBmaW5kIGl0CiAKICAgICBkZWYgdGVzdF90aHJlYWRpbmcoc2VsZik6Ci0gICAgICAgICNUZXN0IHRoZSAidGhyZWFkaW5nIGlzb2xhdGlvbiIgb2YgYSBDb250ZXh0LgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBub3Qgc2VsZi5kZWNpbWFsLkhBVkVfVEhSRUFEUzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkaW5nIikKKyAgICAgICAgIyBUZXN0IHRoZSAidGhyZWFkaW5nIGlzb2xhdGlvbiIgb2YgYSBDb250ZXh0LiBBbHNvIHRlc3QgY2hhbmdpbmcKKyAgICAgICAgIyB0aGUgRGVmYXVsdENvbnRleHQsIHdoaWNoIGFjdHMgYXMgYSB0ZW1wbGF0ZSBmb3IgdGhlIHRocmVhZC1sb2NhbAorICAgICAgICAjIGNvbnRleHRzLgorICAgICAgICBzYXZlX3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisgICAgICAgIHNhdmVfZW1heCA9IERlZmF1bHRDb250ZXh0LkVtYXgKKyAgICAgICAgc2F2ZV9lbWluID0gRGVmYXVsdENvbnRleHQuRW1pbgorICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gMjQKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWluID0gLTQyNTAwMDAwMAogCiAgICAgICAgIHNlbGYuc3luY2hybyA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuZmluaXNoMSA9IHRocmVhZGluZy5FdmVudCgpCkBAIC0xMjM5LDE3ICsxNTc2LDI5IEBACiAKICAgICAgICAgc2VsZi5maW5pc2gxLndhaXQoKQogICAgICAgICBzZWxmLmZpbmlzaDIud2FpdCgpCisKKyAgICAgICAgZm9yIHNpZyBpbiBTaWduYWxzW3NlbGYuZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKERlZmF1bHRDb250ZXh0LmZsYWdzW3NpZ10pCisKKyAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IHNhdmVfcHJlYworICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWF4ID0gc2F2ZV9lbWF4CisgICAgICAgIERlZmF1bHRDb250ZXh0LkVtaW4gPSBzYXZlX2VtaW4KICAgICAgICAgcmV0dXJuCiAKLSAgICBpZiB0aHJlYWRpbmcgaXMgTm9uZToKLSAgICAgICAgZGVsIHRlc3RfdGhyZWFkaW5nCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICd0aHJlYWRpbmcgcmVxdWlyZWQnKQorY2xhc3MgQ1RocmVhZGluZ1Rlc3QoVGhyZWFkaW5nVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ3RocmVhZGluZyByZXF1aXJlZCcpCitjbGFzcyBQeVRocmVhZGluZ1Rlc3QoVGhyZWFkaW5nVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotCi1jbGFzcyBEZWNpbWFsVXNhYmlsaXR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBVc2FiaWxpdHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBVc2FiaWxpdHkgY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmlzb25fb3BlcmF0b3JzKHNlbGYpOgogCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGRhID0gRGVjaW1hbCgnMjMuNDInKQogICAgICAgICBkYiA9IERlY2ltYWwoJzIzLjQyJykKICAgICAgICAgZGMgPSBEZWNpbWFsKCc0NScpCkBAIC0xMjgzLDYgKzE2MzIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKICAgICBkZWYgdGVzdF9kZWNpbWFsX2Zsb2F0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGRhID0gRGVjaW1hbCgnMC4yNScpCiAgICAgICAgIGRiID0gRGVjaW1hbCgnMy4wJykKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRhLCAzLjApCkBAIC0xMjk5LDcgKzE2NTAsNzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLjAsIGRiKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAuMSwgRGVjaW1hbCgnMC4xJykpCiAKKyAgICBkZWYgdGVzdF9kZWNpbWFsX2NvbXBsZXhfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZGEgPSBEZWNpbWFsKCcwLjI1JykKKyAgICAgICAgZGIgPSBEZWNpbWFsKCczLjAnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhLCAoMS41KzBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgoMS41KzBqKSwgZGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGEsICgwLjI1KzBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMC4yNSswaiksIGRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgzLjArMGopLCBkYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYiwgKDMuMCswaikpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYiwgKDMuMCsxaikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoKDMuMCsxaiksIGRiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19sdF9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbGVfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkYi5fX2d0X18oMy4wKzBqKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19sZV9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9mcmFjdGlvbl9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgRiA9IGZyYWN0aW9uc1tzZWxmLmRlY2ltYWxdLkZyYWN0aW9uCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisKKyAgICAgICAgZW1heCA9IEMuTUFYX0VNQVggaWYgQyBlbHNlIDk5OTk5OTk5OQorICAgICAgICBlbWluID0gQy5NSU5fRU1JTiBpZiBDIGVsc2UgLTk5OTk5OTk5OQorICAgICAgICBldGlueSA9IEMuTUlOX0VUSU5ZIGlmIEMgZWxzZSAtMTk5OTk5OTk5NworICAgICAgICBjID0gQ29udGV4dChFbWF4PWVtYXgsIEVtaW49ZW1pbikKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjKToKKyAgICAgICAgICAgIGMucHJlYyA9IGVtYXgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKDApLCBGKDEsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRigtMSw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSwgRCgwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhGKDAsMSksIEQoIjFlIiArIHN0cihldGlueSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoIi0xZSIgKyBzdHIoZXRpbnkpKSwgRigwLDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEYoMCw5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5KSwgRCgiMWUiICsgc3RyKGV0aW55KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRCgiLTFlIiArIHN0cihldGlueSkpLCBGKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4xIiksIEYoMSwxMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEYoMSwxMCksIEQoIjAuMSIpKQorCisgICAgICAgICAgICBjLnByZWMgPSAzMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRCgxKS8zLCBGKDEsMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEYoMSwzKSwgRCgxKS8zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChGKDEyMDk4NDIzNywgOTk5OTk5OTk5OSksIEQoIjllIiArIHN0cihlbWF4KSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChEKCI5ZSIgKyBzdHIoZW1heCkpLCBGKDEyMDk4NDIzNywgOTk5OTk5OTk5OSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihEKCdpbmYnKSwgRig5OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKEQoJ2luZicpLCBGKC05OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoJy1pbmYnKSwgRig5OTk5OTk5OTk5OSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoJy1pbmYnKSwgRigtOTk5OTk5OTk5OTksMTIzKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCgnbmFuJykuX19ndF9fLCBGKC05LDEyMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKE5vdEltcGxlbWVudGVkLCBGKC05LDEyMykuX19sdF9fKEQoJ25hbicpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRCgnbmFuJyksIEYoLTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRigtOSwxMjMpLCBEKCduYW4nKSkKKwogICAgIGRlZiB0ZXN0X2NvcHlfYW5kX2RlZXBjb3B5X21ldGhvZHMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIGQgPSBEZWNpbWFsKCc0My4yNCcpCiAgICAgICAgIGMgPSBjb3B5LmNvcHkoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChjKSwgaWQoZCkpCkBAIC0xMzA3LDYgKzE3MjIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChkYyksIGlkKGQpKQogCiAgICAgZGVmIHRlc3RfaGFzaF9tZXRob2Qoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgICAgICBkZWYgaGFzaGl0KGQpOgogICAgICAgICAgICAgYSA9IGhhc2goZCkKICAgICAgICAgICAgIGIgPSBkLl9faGFzaF9fKCkKQEAgLTEzNjcsMjQgKzE3ODYsMjcgQEAKICAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hpdChmKSwgaGFzaGl0KGQpKQogCi0gICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGhhc2ggZG9lc24ndCBkZXBlbmQgb24gdGhlCi0gICAgICAgICMgY3VycmVudCBjb250ZXh0IChpc3N1ZSAjMTc1NykKLSAgICAgICAgYyA9IGdldGNvbnRleHQoKQotICAgICAgICBvbGRfcHJlY2lzaW9uID0gYy5wcmVjCi0gICAgICAgIHggPSBEZWNpbWFsKCIxMjM0NTY3ODkuMSIpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdmFsdWUgb2YgdGhlIGhhc2ggZG9lc24ndCBkZXBlbmQgb24gdGhlCisgICAgICAgICAgICAjIGN1cnJlbnQgY29udGV4dCAoaXNzdWUgIzE3NTcpCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTIzNDU2Nzg5LjEiKQogCi0gICAgICAgIGMucHJlYyA9IDYKLSAgICAgICAgaDEgPSBoYXNoaXQoeCkKLSAgICAgICAgYy5wcmVjID0gMTAKLSAgICAgICAgaDIgPSBoYXNoaXQoeCkKLSAgICAgICAgYy5wcmVjID0gMTYKLSAgICAgICAgaDMgPSBoYXNoaXQoeCkKKyAgICAgICAgICAgIGMucHJlYyA9IDYKKyAgICAgICAgICAgIGgxID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSAxMAorICAgICAgICAgICAgaDIgPSBoYXNoaXQoeCkKKyAgICAgICAgICAgIGMucHJlYyA9IDE2CisgICAgICAgICAgICBoMyA9IGhhc2hpdCh4KQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMykKLSAgICAgICAgYy5wcmVjID0gb2xkX3ByZWNpc2lvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMykKKworICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgICAgIHggPSAxMTAwICoqIDEyNDgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGl0KERlY2ltYWwoeCkpLCBoYXNoaXQoeCkpCiAKICAgICBkZWYgdGVzdF9taW5fYW5kX21heF9tZXRob2RzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzE1LjMyJykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyOC41JykKQEAgLTE0MDQsNiArMTgyNiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobWF4KGQyLGwxKSwgZDIpCiAKICAgICBkZWYgdGVzdF9hc19ub256ZXJvKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjYXMgZmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEZWNpbWFsKDApKQogICAgICAgICAjYXMgdHJ1ZQpAQCAtMTQxMSw2ICsxODM1LDcgQEAKIAogICAgIGRlZiB0ZXN0X3Rvc3RyaW5nX21ldGhvZHMoc2VsZik6CiAgICAgICAgICNUZXN0IHN0ciBhbmQgcmVwciBtZXRob2RzLgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkID0gRGVjaW1hbCgnMTUuMzInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJzE1LjMyJykgICAgICAgICAgICAgICAjIHN0cgpAQCAtMTQxOCw2ICsxODQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3RvbnVtX21ldGhvZHMoc2VsZik6CiAgICAgICAgICNUZXN0IGZsb2F0IGFuZCBpbnQgbWV0aG9kcy4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc2NicpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMTUuMzInKQpAQCAtMTQ0MCw2ICsxODY2LDcgQEAKICAgICAgICAgICAgICgnLTExLjAnLCAtMTEpLAogICAgICAgICAgICAgKCcwLjAnLCAwKSwKICAgICAgICAgICAgICgnLTBFMycsIDApLAorICAgICAgICAgICAgKCc4OTg5MTIxMTcxMjM3OTgxMjczNi4xJywgODk4OTEyMTE3MTIzNzk4MTI3MzYpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZCwgaSBpbiB0ZXN0X3BhaXJzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmZsb29yKERlY2ltYWwoZCkpLCBpKQpAQCAtMTQ1OSw2ICsxODg2LDcgQEAKICAgICAgICAgICAgICgnLTExLjAnLCAtMTEpLAogICAgICAgICAgICAgKCcwLjAnLCAwKSwKICAgICAgICAgICAgICgnLTBFMycsIDApLAorICAgICAgICAgICAgKCc4OTg5MTIxMTcxMjM3OTgxMjczNi4xJywgODk4OTEyMTE3MTIzNzk4MTI3MzcpLAogICAgICAgICAgICAgXQogICAgICAgICBmb3IgZCwgaSBpbiB0ZXN0X3BhaXJzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmNlaWwoRGVjaW1hbChkKSksIGkpCkBAIC0xNTE5LDE2ICsxOTQ3LDIxIEBACiAgICAgZGVmIHRlc3RfbmFuX3RvX2Zsb2F0KHNlbGYpOgogICAgICAgICAjIFRlc3QgY29udmVyc2lvbnMgb2YgZGVjaW1hbCBOQU5zIHRvIGZsb2F0LgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTU1NDQKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIGZvciBzIGluICgnbmFuJywgJ25hbjEyMzQnLCAnLW5hbicsICctbmFuMjQ2OCcpOgogICAgICAgICAgICAgZiA9IGZsb2F0KERlY2ltYWwocykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmKSkKKyAgICAgICAgICAgIHNpZ24gPSBtYXRoLmNvcHlzaWduKDEuMCwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbiwgLTEuMCBpZiBzLnN0YXJ0c3dpdGgoJy0nKSBlbHNlIDEuMCkKIAogICAgIGRlZiB0ZXN0X3NuYW5fdG9fZmxvYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBmb3IgcyBpbiAoJ3NuYW4nLCAnLXNuYW4nLCAnc25hbjEzNTcnLCAnLXNuYW4xMjM0Jyk6CiAgICAgICAgICAgICBkID0gRGVjaW1hbChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGQpCiAKICAgICBkZWYgdGVzdF9ldmFsX3JvdW5kX3RyaXAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN3aXRoIHplcm8KICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAwKSApCkBAIC0xNTQ3LDYgKzE5ODAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGV2YWwocmVwcihkKSkpCiAKICAgICBkZWYgdGVzdF9hc190dXBsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3dpdGggemVybwogICAgICAgICBkID0gRGVjaW1hbCgwKQpAQCAtMTU2MCw3ICsxOTk0LDggQEAKICAgICAgICAgZCA9IERlY2ltYWwoIi00LjM0OTEzNTM0RS0xNyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjUpICkKIAotICAgICAgICAjaW5mCisgICAgICAgICMgVGhlICcwJyBjb2VmZmljaWVudCBpcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0byBkZWNpbWFsLnB5LgorICAgICAgICAjIEl0IGhhcyBubyBtZWFuaW5nIGluIHRoZSBDLXZlcnNpb24gYW5kIGlzIGlnbm9yZWQgdGhlcmUuCiAgICAgICAgIGQgPSBEZWNpbWFsKCJJbmZpbml0eSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSApCiAKQEAgLTE1ODAsMTQgKzIwMTUsMjIwMCBAQAogICAgICAgICBkID0gRGVjaW1hbCggKDEsICgpLCAnbicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoKSwgJ24nKSApCiAKLSAgICAgICAgI2NvZWZmaWNpZW50IGluIGluZmluaXR5IHNob3VsZCBiZSBpZ25vcmVkCisgICAgICAgICMgRm9yIGluZmluaXRpZXMsIGRlY2ltYWwucHkgaGFzIGFsd2F5cyBzaWxlbnRseSBhY2NlcHRlZCBhbnkKKyAgICAgICAgIyBjb2VmZmljaWVudCB0dXBsZS4KKyAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAnRicpICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgwLCAoMCwpLCAnRicpKQogICAgICAgICBkID0gRGVjaW1hbCggKDAsICg0LCA1LCAzLCA0KSwgJ0YnKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSkKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoMCwgMiwgNywgMSksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICgwLCksICdGJykpCiAKLSAgICBkZWYgdGVzdF9pbW11dGFiaWxpdHlfb3BlcmF0aW9ucyhzZWxmKToKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCisgICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCisgICAgICAgIGQgPSBkMSArIGQyCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKworICAgICAgICBkID0gZDEubWF4KGQyKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisKKyAgICAgICAgZCA9IGNvcHkuY29weShkMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBNeURlY2ltYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZDEpCisKKyAgICAgICAgZCA9IGNvcHkuZGVlcGNvcHkoZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGQxKQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQorICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zX2Zyb21faW50KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbWV0aG9kcyB0YWtpbmcgYSBzZWNvbmQgRGVjaW1hbCBhcmd1bWVudCB3aWxsCisgICAgICAgICMgYWx3YXlzIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHBsYWNlIG9mIGEgRGVjaW1hbC4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmUoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKERlY2ltYWwoMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZCgxMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZChEZWNpbWFsKDEwMDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKDEwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoMTAwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heCgxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXgoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4X21hZygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXhfbWFnKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbigxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW4oRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluX21hZygxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW5fbWFnKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKDEyMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5xdWFudGl6ZSgxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkucXVhbnRpemUoRGVjaW1hbCgxMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoMTIzNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMTIzNCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzKS5yb3RhdGUoMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjMpLnJvdGF0ZShEZWNpbWFsKDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bSgxMDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCc5LjEyMycpLnNjYWxlYigtMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCc5LjEyMycpLnNjYWxlYihEZWNpbWFsKC0xMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQ1Nikuc2hpZnQoLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNDU2KS5zaGlmdChEZWNpbWFsKC0xKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCA2NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIDY3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgRGVjaW1hbCg2NykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKKworY2xhc3MgQ1VzYWJpbGl0eVRlc3QoVXNhYmlsaXR5VGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5VXNhYmlsaXR5VGVzdChVc2FiaWxpdHlUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBQeXRob25BUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuTnVtYmVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuUmVhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLk51bWJlcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuUmVhbCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisKKyAgICAgICAgIyBSb3VuZCB0cmlwCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgZCA9IERlY2ltYWwoJy0zLjE0MTU5MDAwMCcpCisgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoZCkKKyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGUpCisKKyAgICAgICAgaWYgQzoKKyAgICAgICAgICAgICMgVGVzdCBpbnRlcmNoYW5nZWFiaWxpdHkKKyAgICAgICAgICAgIHggPSBDLkRlY2ltYWwoJy0zLjEyM2U4MTcyMycpCisgICAgICAgICAgICB5ID0gUC5EZWNpbWFsKCctMy4xMjNlODE3MjMnKQorCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworICAgICAgICAgICAgc3ggPSBwaWNrbGUuZHVtcHMoeCkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICByID0gcGlja2xlLmxvYWRzKHN4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIFAuRGVjaW1hbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwociwgeSkKKworICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IFAKKyAgICAgICAgICAgIHN5ID0gcGlja2xlLmR1bXBzKHkpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworICAgICAgICAgICAgciA9IHBpY2tsZS5sb2FkcyhzeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBDLkRlY2ltYWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIHgpCisKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoaW50KGQpKSwgcikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJy1uYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCdzbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgRGVjaW1hbCgnLWluZicpKQorCisgICAgZGVmIHRlc3RfdHJ1bmMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBmb3IgeCBpbiByYW5nZSgtMjUwLCAyNTApOgorICAgICAgICAgICAgcyA9ICclMC4yZicgJSAoeCAvIDEwMC4wKQorICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyBmb3IgZmxvYXRzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChEZWNpbWFsKHMpKSwgaW50KGZsb2F0KHMpKSkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgdG9faW50ZWdyYWwgaW4gdGhlIFJPVU5EX0RPV04gbW9kZQorICAgICAgICAgICAgZCA9IERlY2ltYWwocykKKyAgICAgICAgICAgIHIgPSBkLnRvX2ludGVncmFsKFJPVU5EX0RPV04pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwobWF0aC50cnVuYyhkKSksIHIpCisKKyAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNeURlY2ltYWwsIERlY2ltYWwpKQorCisgICAgICAgIHIgPSBNeURlY2ltYWwuZnJvbV9mbG9hdCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihyKSwKKyAgICAgICAgICAgICAgICAnMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1JykKKyAgICAgICAgYmlnaW50ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeURlY2ltYWwuZnJvbV9mbG9hdChiaWdpbnQpLCBNeURlY2ltYWwoYmlnaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkuaXNfcW5hbigpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJ0luZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKERlY2ltYWwoJy1JbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeURlY2ltYWwuZnJvbV9mbG9hdCwgJ2FiYycpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICB4ID0gcmFuZG9tLmV4cG92YXJpYXRlKDAuMDEpICogKHJhbmRvbS5yYW5kb20oKSAqIDIuMCAtIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgZmxvYXQoTXlEZWNpbWFsLmZyb21fZmxvYXQoeCkpKSAjIHJvdW5kdHJpcAorCisgICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKyAgICAgICAgUk9VTkRfVVAgPSBzZWxmLmRlY2ltYWwuUk9VTkRfVVAKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAorICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICAgICAgKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX1VQKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KG1hdGgucGkpLAorICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE2JykKKyAgICAgICAgKQorICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHRyYXBzPVtJbmV4YWN0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbmV4YWN0LAorICAgICAgICAgICAgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LAorICAgICAgICAgICAgbWF0aC5waQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoLTAuMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCctMCcpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxLjApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMScpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgxMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxMCcpIikKKworICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBST1VORF9ET1dOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0RPV04KKworICAgICAgICBjID0gQ29udGV4dChFbWF4PTk5OTk5LCBFbWluPS05OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJykpLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zNCcpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzM1JykucXVhbnRpemUoRGVjaW1hbCgnLjAxJyksIHJvdW5kaW5nPVJPVU5EX0RPV04pLAorICAgICAgICAgICAgRGVjaW1hbCgnNy4zMycpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgRGVjaW1hbCgiMTBlOTk5OTkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUxMDAwMDAnKSwgY29udGV4dD1jCisgICAgICAgICkKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBEZWNpbWFsKCIwLjg3MTgzMWU4MDAiKQorICAgICAgICB4ID0gZC5xdWFudGl6ZShjb250ZXh0PWMsIGV4cD1EZWNpbWFsKCIxZTc5NyIpLCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzguNzFFKzc5OScpKQorCisgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgeCA9IERlY2ltYWwoIjkuODE4MjczMWUxODEyNzMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgucmVhbCwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5jb25qdWdhdGUoKSwgeCkKKworICAgICAgICB4ID0gRGVjaW1hbCgiMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleCh4KSwgY29tcGxleChmbG9hdCgxKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdyZWFsJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ2ltYWcnLCAxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCB4LCAnY29uanVnYXRlJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ19fY29tcGxleF9fJywgMTAwKQorCisgICAgZGVmIHRlc3RfbmFtZWRfcGFyYW1ldGVycyhzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworCisgICAgICAgIHhjID0gQ29udGV4dCgpCisgICAgICAgIHhjLnByZWMgPSAxCisgICAgICAgIHhjLkVtYXggPSAxCisgICAgICAgIHhjLkVtaW4gPSAtMQorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoOSwgeGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDksIGNvbnRleHQ9eGMpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMsIHZhbHVlPTkpLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRCwgInh5eiIsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgyKS5leHAoY29udGV4dD14YyksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgRCg4KS5leHAsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDIpLmxuKGNvbnRleHQ9eGMpLCBEKCcwLjcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoLTEpLmxuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9nMTAoY29udGV4dD14YyksIEQoJy1pbmYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgtMSkubmV4dF9taW51cyhjb250ZXh0PXhjKSwgLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoLTEpLm5leHRfcGx1cyhjb250ZXh0PXhjKSwgRCgnLTAuOScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5LjczIikubm9ybWFsaXplKGNvbnRleHQ9eGMpLCBEKCcxRSsxJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjk5OTkiKS50b19pbnRlZ3JhbChjb250ZXh0PXhjKSwgOTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiLTIwMDAiKS50b19pbnRlZ3JhbF9leGFjdChjb250ZXh0PXhjKSwgLTIwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjEyMyIpLnRvX2ludGVncmFsX3ZhbHVlKGNvbnRleHQ9eGMpLCAxMjMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLnNxcnQoY29udGV4dD14YyksIEQoJzAuMicpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDYyNSIpLmNvbXBhcmUoY29udGV4dD14Yywgb3RoZXI9MyksIC0xKQorICAgICAgICAgICAgeGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoIjAiKS5jb21wYXJlX3NpZ25hbCwgRCgnbmFuJyksIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDEiKS5tYXgoRCgnMC4wMTAxJyksIGNvbnRleHQ9eGMpLCBEKCcwLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMSIpLm1heChEKCcwLjAxMDEnKSwgY29udGV4dD14YyksIEQoJzAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjIiKS5tYXhfbWFnKEQoJy0wLjMnKSwgY29udGV4dD14YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJy0wLjMnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMiIpLm1pbihEKCctMC4wMycpLCBjb250ZXh0PXhjKSwgRCgnLTAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjAyIikubWluX21hZyhEKCctMC4wMycpLCBjb250ZXh0PXhjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMC4wJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMiIpLm5leHRfdG93YXJkKEQoJy0xJyksIGNvbnRleHQ9eGMpLCBEKCcwLjEnKSkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCIwLjIiKS5xdWFudGl6ZSwgRCgnMWUxMCcpLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5Ljk5IikucmVtYWluZGVyX25lYXIoRCgnMS41JyksIGNvbnRleHQ9eGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCctMC41JykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS45IikuZm1hKHRoaXJkPUQoJzAuOScpLCBjb250ZXh0PXhjLCBvdGhlcj03KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnN0UrMScpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfY2Fub25pY2FsLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX2Zpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19pbmZpbml0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19uYW4sIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfcW5hbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19zbmFuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX3NpZ25lZCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc196ZXJvLCBjb250ZXh0PXhjKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEQoIjAuMDEiKS5pc19ub3JtYWwoY29udGV4dD14YykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRCgiMC4wMSIpLmlzX3N1Ym5vcm1hbChjb250ZXh0PXhjKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmFkanVzdGVkLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNvbmp1Z2F0ZSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5yYWRpeCwgY29udGV4dD14YykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKC0xMTEpLmxvZ2IoY29udGV4dD14YyksIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMCkubG9naWNhbF9pbnZlcnQoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAuMDEnKS5udW1iZXJfY2xhc3MoY29udGV4dD14YyksICcrU3Vibm9ybWFsJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMC4yMScpLnRvX2VuZ19zdHJpbmcoY29udGV4dD14YyksICcwLjIxJykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfYW5kKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcxMScpLmxvZ2ljYWxfb3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAxJykubG9naWNhbF94b3IoRCgnMTAnKSwgY29udGV4dD14YyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzIzJykucm90YXRlKDEsIGNvbnRleHQ9eGMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcyMycpLnJvdGF0ZSgxLCBjb250ZXh0PXhjKSwgMykKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnMjMnKS5zY2FsZWIsIDEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeGMuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMjMnKS5zaGlmdCgtMSwgY29udGV4dD14YyksIDApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRC5mcm9tX2Zsb2F0LCAxLjEsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMCkuYXNfdHVwbGUsIGNvbnRleHQ9eGMpCisKKyAgICAgICAgICAgIGlmIChzZWxmLmRlY2ltYWwgPT0gQyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmNhbm9uaWNhbCwgY29udGV4dD14YykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIi0xIikuY29weV9hYnMoY29udGV4dD14YyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIxIikuY29weV9uZWdhdGUoY29udGV4dD14YyksIC0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMSkuY2Fub25pY2FsKGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgiLTEiKS5jb3B5X2FicywgY29udGV4dD14YykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoIi0xIikuY29weV9uZWdhdGUsIGNvbnRleHQ9eGMpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faGllcmFyY2h5KHNlbGYpOgorCisgICAgICAgIGRlY2ltYWwgPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgRGVjaW1hbEV4Y2VwdGlvbiA9IGRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbgorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IGRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBkZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIEluZXhhY3QgPSBkZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IGRlY2ltYWwuUm91bmRlZAorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbEV4Y2VwdGlvbiwgQXJpdGhtZXRpY0Vycm9yKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRmxvYXRPcGVyYXRpb24sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhGbG9hdE9wZXJhdGlvbiwgVHlwZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGl2aXNpb25CeVplcm8sIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEaXZpc2lvbkJ5WmVybywgWmVyb0RpdmlzaW9uRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPdmVyZmxvdywgUm91bmRlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE92ZXJmbG93LCBJbmV4YWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoT3ZlcmZsb3csIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIEluZXhhY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFJvdW5kZWQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIFN1Ym5vcm1hbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuZGVyZmxvdywgRGVjaW1hbEV4Y2VwdGlvbikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU3Vibm9ybWFsLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSW5leGFjdCwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJvdW5kZWQsIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDbGFtcGVkLCBEZWNpbWFsRXhjZXB0aW9uKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkNvbnZlcnNpb25TeW50YXgsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uSW1wb3NzaWJsZSwgSW52YWxpZE9wZXJhdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGRlY2ltYWwuSW52YWxpZENvbnRleHQsIEludmFsaWRPcGVyYXRpb24pKQorCitjbGFzcyBDUHl0aG9uQVBJdGVzdHMoUHl0aG9uQVBJdGVzdHMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVB5dGhvbkFQSXRlc3RzKFB5dGhvbkFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0QVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIHNhdmVkZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2VsZi5kZWNpbWFsCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIGUucHJlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIGUuRW1pbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIGUuRW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCBlLnJvdW5kaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIGUuY2FwaXRhbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgZS5jbGFtcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBlLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudHJhcHMsIGUudHJhcHMpCisKKyAgICAgICAgIyBUZXN0IGludGVyY2hhbmdlYWJpbGl0eQorICAgICAgICBjb21iaW5hdGlvbnMgPSBbKEMsIFApLCAoUCwgQyldIGlmIEMgZWxzZSBbKFAsIFApXQorICAgICAgICBmb3IgZHVtcGVyLCBsb2FkZXIgaW4gY29tYmluYXRpb25zOgorICAgICAgICAgICAgZm9yIHJpLCBfIGluIGVudW1lcmF0ZShSb3VuZGluZ01vZGVzW2R1bXBlcl0pOgorICAgICAgICAgICAgICAgIGZvciBmaSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisgICAgICAgICAgICAgICAgICAgIGZvciB0aSwgXyBpbiBlbnVtZXJhdGUoT3JkZXJlZFNpZ25hbHNbZHVtcGVyXSk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAsIDApCisgICAgICAgICAgICAgICAgICAgICAgICBlbWF4ID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAgPSByYW5kb20ucmFuZHJhbmdlKDIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgT25lIG1vZHVsZSBkdW1wcworICAgICAgICAgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IGR1bXBlcgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGR1bXBlci5Db250ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlYz1wcmVjLCBFbWluPWVtaW4sIEVtYXg9ZW1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJvdW5kaW5nTW9kZXNbZHVtcGVyXVtyaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1jYXBzLCBjbGFtcD1jbGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOmZpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU9yZGVyZWRTaWduYWxzW2R1bXBlcl1bOnRpXQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhjKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBvdGhlciBtb2R1bGUgbG9hZHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBsb2FkZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLCBsb2FkZXIuQ29udGV4dCkKKworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnByZWMsIHByZWMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJvdW5kaW5nLCBSb3VuZGluZ01vZGVzW2xvYWRlcl1bcmldKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmNhcGl0YWxzLCBjYXBzKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmNsYW1wLCBjbGFtcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGQsICdmbGFncycsIE9yZGVyZWRTaWduYWxzW2xvYWRlcl1bOmZpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGQsICd0cmFwcycsIE9yZGVyZWRTaWduYWxzW2xvYWRlcl1bOnRpXSkKKworICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2F2ZWRlY2ltYWwKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5X3dpdGhfb3RoZXJfdHlwZXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oRGVjaW1hbCgxMCksIFsnYScsIDEuMCwgRGVjaW1hbCgxMCksICgxLDIpLCB7fV0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oRGVjaW1hbCgxMCksIFsnYScsIDEuMCwgKDEsMiksIHt9XSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjKSwgaWQoZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy5mbGFncyksIGlkKGQuZmxhZ3MpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMudHJhcHMpLCBpZChkLnRyYXBzKSkKKyAgICAgICAgazEgPSBzZXQoYy5mbGFncy5rZXlzKCkpCisgICAgICAgIGsyID0gc2V0KGQuZmxhZ3Mua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGsxLCBrMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBkLmZsYWdzKQorCisgICAgZGVmIHRlc3RfX2NsYW1wKHNlbGYpOgorICAgICAgICAjIEluIFB5dGhvbiAzLjIsIHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBgX2NsYW1wYCB3YXMgbWFkZQorICAgICAgICAjIHB1YmxpYyAoaXNzdWUgODU0MCksIHdpdGggdGhlIG9sZCBgX2NsYW1wYCBiZWNvbWluZyBhCisgICAgICAgICMgcHJvcGVydHkgd3JhcHBpbmcgYGNsYW1wYC4gIEZvciB0aGUgZHVyYXRpb24gb2YgUHl0aG9uIDMuMgorICAgICAgICAjIG9ubHksIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGdldHRhYmxlL3NldHRhYmxlIHZpYSBib3RoCisgICAgICAgICMgYGNsYW1wYCBhbmQgYF9jbGFtcGA7IGluIFB5dGhvbiAzLjMsIGBfY2xhbXBgIHNob3VsZCBiZQorICAgICAgICAjIHJlbW92ZWQuCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBjLCAnX2NsYW1wJykKKworICAgIGRlZiB0ZXN0X2FicyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuYWJzKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWJzKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFicywgJy0xJykKKworICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuYWRkKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hZGQsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZShEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZSwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZSwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV9zaWduYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3NpZ25hbCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWxfbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9hYnMoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2FicygtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2FicywgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfZGVjaW1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9kZWNpbWFsKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9kZWNpbWFsKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfZGVjaW1hbCwgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X25lZ2F0ZShEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfbmVnYXRlKC0xKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfbmVnYXRlLCAnLTEnKQorCisgICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgRGVjaW1hbCgtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oMSwgLTIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKERlY2ltYWwoMSksIC0yKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sICcxJywgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIDEsICctMicpCisKKyAgICBkZWYgdGVzdF9kaXZpZGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdmlkZShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZGl2bW9kKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZtb2QoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfZXhwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5leHAoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leHAoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZXhwLCAnMTAnKQorCisgICAgZGVmIHRlc3RfZm1hKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgRGVjaW1hbCg0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCAzLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCBEZWNpbWFsKDMpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCBEZWNpbWFsKDQpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgJzInLCAzLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAnMycsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsIDMsICc0JykKKworICAgICAgICAjIElzc3VlIDEyMDc5IGZvciBDb250ZXh0LmZtYSAuLi4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgwKSwgIm5vdCBhIGRlY2ltYWwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEpLCBEZWNpbWFsKCdzbmFuJyksIDEuMjIyKQorICAgICAgICAjIC4uLiBhbmQgZm9yIERlY2ltYWwuZm1hLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoJ0luZmluaXR5JykuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDApLCAibm90IGEgZGVjaW1hbCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJ3NuYW4nKSwgMS4yMjIpCisKKyAgICBkZWYgdGVzdF9pc19maW5pdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX2Zpbml0ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2Zpbml0ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19maW5pdGUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19pbmZpbml0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfaW5maW5pdGUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19pbmZpbml0ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19pbmZpbml0ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX25hbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25hbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX25vcm1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfbm9ybWFsKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfbm9ybWFsKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX25vcm1hbCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3FuYW4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19xbmFuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3FuYW4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zaWduZWQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3NpZ25lZChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NpZ25lZCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zaWduZWQsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19zbmFuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc25hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zbmFuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc3Vibm9ybWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zdWJub3JtYWwoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc3Vibm9ybWFsLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfemVybyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfemVybyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3plcm8oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfemVybywgJzEwJykKKworICAgIGRlZiB0ZXN0X2xuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxuKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9nMTAoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisKKyAgICBkZWYgdGVzdF9sb2diKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2diKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nYigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2diLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9hbmQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfYW5kKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZCgxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2FuZCwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfaW52ZXJ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX2ludmVydChEZWNpbWFsKDEwMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9pbnZlcnQoMTAwMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2ludmVydCwgJzEwMDAnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF9vcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF9vcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9vciwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9vciwgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfbG9naWNhbF94b3Ioc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgJzEnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X21heChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWF4KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXgsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWF4X21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWF4X21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4X21hZywgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4X21hZywgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWluKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW4oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW5fbWFnKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5taW5fbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9taW51cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWludXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW51cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW51cywgJzEwJykKKworICAgIGRlZiB0ZXN0X211bHRpcGx5KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9uZXh0X21pbnVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X21pbnVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9taW51cygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X21pbnVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbmV4dF9wbHVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X3BsdXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3BsdXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9wbHVzLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbmV4dF90b3dhcmQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubm9ybWFsaXplKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubm9ybWFsaXplKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5vcm1hbGl6ZSwgJzEwJykKKworICAgIGRlZiB0ZXN0X251bWJlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygxMjMpLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKDApLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygtNDUpLCBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKC00NSkpKQorCisgICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucGx1cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBsdXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucGx1cywgJzEwJykKKworICAgIGRlZiB0ZXN0X3Bvd2VyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCA0KSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIERlY2ltYWwoNCkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgJzEnLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsICc0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKG1vZHVsbz01LCBiPTgsIGE9MiksIDEpCisKKyAgICBkZWYgdGVzdF9xdWFudGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfcmVtYWluZGVyKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9yZW1haW5kZXJfbmVhcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlcl9uZWFyLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfcm90YXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zcXJ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zcXJ0KERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3FydCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zcXJ0LCAnMTAnKQorCisgICAgZGVmIHRlc3Rfc2FtZV9xdWFudHVtKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zY2FsZWIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnNjYWxlYihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2NhbGViKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3NoaWZ0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zaGlmdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfdG9fZW5nX3N0cmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9fZW5nX3N0cmluZyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2VuZ19zdHJpbmcoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fZW5nX3N0cmluZywgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX3NjaV9zdHJpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX3NjaV9zdHJpbmcoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX3NjaV9zdHJpbmcsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF9leGFjdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF9leGFjdCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF9leGFjdCwgJzEwJykKKworICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX3ZhbHVlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX3ZhbHVlKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX3ZhbHVlLCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsIDEwLCAneCcpCisKK2NsYXNzIENDb250ZXh0QVBJdGVzdHMoQ29udGV4dEFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0QVBJdGVzdHMoQ29udGV4dEFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0V2l0aFN0YXRlbWVudCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBDYW4ndCBkbyB0aGVzZSBhcyBkb2NzdHJpbmdzIHVudGlsIFB5dGhvbiAyLjYKKyAgICAjIGFzIGRvY3Rlc3QgY2FuJ3QgaGFuZGxlIF9fZnV0dXJlX18gc3RhdGVtZW50cworCisgICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0KHNlbGYpOgorICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGVudGVyX2N0eDoKKyAgICAgICAgICAgIHNldF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgZmluYWxfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19jdHgsIGZpbmFsX2N0eCwgJ2RpZCBub3QgcmVzdG9yZSBjb250ZXh0IGNvcnJlY3RseScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19jdHgsIHNldF9jdHgsICdkaWQgbm90IGNvcHkgdGhlIGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNldF9jdHgsIGVudGVyX2N0eCwgJ19fZW50ZXJfXyByZXR1cm5lZCB3cm9uZyBjb250ZXh0JykKKworICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dGFyZyhzZWxmKToKKyAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jaworICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIG5ld19jdHggPSBDb250ZXh0KHByZWM9NDIpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5ld19jdHgpIGFzIGVudGVyX2N0eDoKKyAgICAgICAgICAgIHNldF9jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgZmluYWxfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19jdHgsIGZpbmFsX2N0eCwgJ2RpZCBub3QgcmVzdG9yZSBjb250ZXh0IGNvcnJlY3RseScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0X2N0eC5wcmVjLCBuZXdfY3R4LnByZWMsICdkaWQgbm90IHNldCBjb3JyZWN0IGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG5ld19jdHgsIHNldF9jdHgsICdkaWQgbm90IGNvcHkgdGhlIGNvbnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydElzKHNldF9jdHgsIGVudGVyX2N0eCwgJ19fZW50ZXJfXyByZXR1cm5lZCB3cm9uZyBjb250ZXh0JykKKworICAgIGRlZiB0ZXN0X25lc3RlZF93aXRoX3N0YXRlbWVudHMoc2VsZik6CisgICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBvcmlnX2N0eC5jbGVhcl9mbGFncygpCisgICAgICAgIG5ld19jdHggPSBDb250ZXh0KEVtYXg9Mzg0KQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMS5mbGFncywgb3JpZ19jdHguZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMxLnRyYXBzLCBvcmlnX2N0eC50cmFwcykKKyAgICAgICAgICAgIGMxLnRyYXBzW0NsYW1wZWRdID0gVHJ1ZQorICAgICAgICAgICAgYzEuRW1pbiA9IC0zODMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ19jdHguRW1pbiwgLTM4MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKENsYW1wZWQsIGMxLmNyZWF0ZV9kZWNpbWFsLCAnMGUtOTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMS5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5ld19jdHgpIGFzIGMyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzIuZmxhZ3MsIG5ld19jdHguZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMi50cmFwcywgbmV3X2N0eC50cmFwcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYzIucG93ZXIsIERlY2ltYWwoJzMuNGUyMDAnKSwgMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMyLmZsYWdzW0NsYW1wZWRdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMxLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdfY3R4LkVtaW4sIC0zODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3JpZ19jdHguZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3JpZ19jdHguZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19jdHguZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3X2N0eC5mbGFnc1tPdmVyZmxvd10pCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudHNfZ2MxKHNlbGYpOgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjNAorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRzX2djMihzZWxmKToKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChjMSkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzIpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgYzIKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzMpIGFzIGM0OgorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50c19nYzMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgZGVsIGMxCisgICAgICAgICAgICBuMSA9IENvbnRleHQocHJlYz0xKQorICAgICAgICAgICAgc2V0Y29udGV4dChuMSkKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG4xKSBhcyBjMjoKKyAgICAgICAgICAgICAgICBkZWwgbjEKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMyLnByZWMsIDEpCisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgbjIgPSBDb250ZXh0KHByZWM9MikKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG4yKQorICAgICAgICAgICAgICAgIGRlbCBuMgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDIpCisgICAgICAgICAgICAgICAgbjMgPSBDb250ZXh0KHByZWM9MykKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KG4zKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDMpCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobjMpIGFzIGMzOgorICAgICAgICAgICAgICAgICAgICBkZWwgbjMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMy5wcmVjLCAzKQorICAgICAgICAgICAgICAgICAgICBkZWwgYzMKKyAgICAgICAgICAgICAgICAgICAgbjQgPSBDb250ZXh0KHByZWM9NCkKKyAgICAgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuNCkKKyAgICAgICAgICAgICAgICAgICAgZGVsIG40CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0Y29udGV4dCgpLnByZWMsIDQpCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGM0LnByZWMsIDQpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworY2xhc3MgQ0NvbnRleHRXaXRoU3RhdGVtZW50KENvbnRleHRXaXRoU3RhdGVtZW50KToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb250ZXh0V2l0aFN0YXRlbWVudChDb250ZXh0V2l0aFN0YXRlbWVudCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dEZsYWdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ZsYWdzX2lycmVsZXZhbnQoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IChudW1lcmljIHJlc3VsdCArIGZsYWdzIHJhaXNlZCkgb2YgYW4KKyAgICAgICAgIyBhcml0aG1ldGljIG9wZXJhdGlvbiBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgY3VycmVudCBmbGFncworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gc2VsZi5kZWNpbWFsLlJvdW5kZWQKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKyAgICAgICAgU3Vibm9ybWFsID0gc2VsZi5kZWNpbWFsLlN1Ym5vcm1hbAorICAgICAgICBST1VORF9IQUxGX0VWRU4gPSBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOCisKKyAgICAgICAgZGVmIHJhaXNlX2Vycm9yKGNvbnRleHQsIGZsYWcpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgY29udGV4dC5mbGFnc1tmbGFnXSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBjb250ZXh0LnRyYXBzW2ZsYWddOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBmbGFnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTQyNTAwMDAwMCwgRW1heCA9IDQyNTAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisKKyAgICAgICAgIyBvcGVyYXRpb25zIHRoYXQgcmFpc2UgdmFyaW91cyBmbGFncywgaW4gdGhlIGZvcm0gKGZ1bmN0aW9uLCBhcmdsaXN0KQorICAgICAgICBvcGVyYXRpb25zID0gWworICAgICAgICAgICAgKGNvbnRleHQuX2FwcGx5LCBbRGVjaW1hbCgiMTAwRS00MjUwMDAwMTAiKV0pLAorICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKKyAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCisgICAgICAgICAgICBdCisKKyAgICAgICAgIyB0cnkgdmFyaW91cyBmbGFncyBpbmRpdmlkdWFsbHksIHRoZW4gYSB3aG9sZSBsb3QgYXQgb25jZQorICAgICAgICBmbGFnc2V0cyA9IFtbSW5leGFjdF0sIFtSb3VuZGVkXSwgW1VuZGVyZmxvd10sIFtDbGFtcGVkXSwgW1N1Ym5vcm1hbF0sCisgICAgICAgICAgICAgICAgICAgIFtJbmV4YWN0LCBSb3VuZGVkLCBVbmRlcmZsb3csIENsYW1wZWQsIFN1Ym5vcm1hbF1dCisKKyAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6CisgICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQorICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKworICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgorICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJyb3IoY29udGV4dCwgZmxhZykKKyAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCisKKyAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQorICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorCisgICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKKworICAgIGRlZiB0ZXN0X2ZsYWdfY29tcGFyaXNvbnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorCisgICAgICAgICMgVmFsaWQgU2lnbmFsRGljdAorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzID0gYy50cmFwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBjLmZsYWdzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBjLnRyYXBzID0gYy5mbGFncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGMudHJhcHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50cmFwcywgYy5mbGFncykKKworICAgICAgICBkID0ge30KKyAgICAgICAgZC51cGRhdGUoYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgZFtJbmV4YWN0XSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgIyBJbnZhbGlkIFNpZ25hbERpY3QKKyAgICAgICAgZCA9IHtJbmV4YWN0OkZhbHNlfQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgICAgICBkID0gWyJ4eXoiXQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGQsIGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYy5mbGFncywgZCkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2Zsb2F0X29wZXJhdGlvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIyMjIyB0cmFwIGlzIG9mZiBieSBkZWZhdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gc2V0cyB0aGUgZmxhZworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNy41KSwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jcmVhdGVfZGVjaW1hbCg3LjUpLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMgZXhwbGljaXQgY29udmVyc2lvbiBkb2VzIG5vdCBzZXQgdGhlIGZsYWcKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IERlY2ltYWwuZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICAgICAgIyBjb21wYXJpc29uIHNldHMgdGhlIGZsYWcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIyMjIyBzZXQgdGhlIHRyYXAKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgICAgICAjIGltcGxpY2l0IGNvbnZlcnNpb24gcmFpc2VzCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZsb2F0T3BlcmF0aW9uLCBEZWNpbWFsLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmxvYXRPcGVyYXRpb24sIGMuY3JlYXRlX2RlY2ltYWwsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyBleHBsaWNpdCBjb252ZXJzaW9uIGlzIHNpbGVudAorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gRGVjaW1hbC5mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IGMuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgZGVmIHRlc3RfZmxvYXRfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRyKGEsIGIsIGF0dHIsIGNvbnRleHQsIHNpZ25hbD1Ob25lKToKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgZiA9IGdldGF0dHIoYSwgYXR0cikKKyAgICAgICAgICAgIGlmIHNpZ25hbCA9PSBGbG9hdE9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzaWduYWwsIGYsIGIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZihiKSwgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICBzbWFsbF9kID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGJpZ19kID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc21hbGxfZiA9IDAuMjUKKyAgICAgICAgYmlnX2YgPSAzLjAKKworICAgICAgICB6ZXJvX2QgPSBEZWNpbWFsKCcwLjAnKQorICAgICAgICBuZWdfemVyb19kID0gRGVjaW1hbCgnLTAuMCcpCisgICAgICAgIHplcm9fZiA9IDAuMAorICAgICAgICBuZWdfemVyb19mID0gLTAuMAorCisgICAgICAgIGluZl9kID0gRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICBuZWdfaW5mX2QgPSBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICBpbmZfZiA9IGZsb2F0KCdpbmYnKQorICAgICAgICBuZWdfaW5mX2YgPSBmbG9hdCgnLWluZicpCisKKyAgICAgICAgZGVmIGRvaXQoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgIyBPcmRlcgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ19fbHRfXycsICdfX2xlX18nOgorICAgICAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCBhdHRyLCBjLCBzaWduYWwpCisKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdfX2d0X18nLCAnX19nZV9fJzoKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cihiaWdfZCwgc21hbGxfZiwgYXR0ciwgYywgc2lnbmFsKQorCisgICAgICAgICAgICAjIEVxdWFsaXR5CisgICAgICAgICAgICBhc3NlcnRfYXR0cihzbWFsbF9kLCBzbWFsbF9mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX3plcm9fZCwgbmVnX3plcm9fZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cih6ZXJvX2QsIG5lZ196ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoemVyb19kLCB6ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfaW5mX2QsIG5lZ19pbmZfZiwgJ19fZXFfXycsIGMsIE5vbmUpCisgICAgICAgICAgICBhc3NlcnRfYXR0cihpbmZfZCwgaW5mX2YsICdfX2VxX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICAjIEluZXF1YWxpdHkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHNtYWxsX2QsIGJpZ19mLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIoRGVjaW1hbCgnMC4xJyksIDAuMSwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ19pbmZfZCwgaW5mX2YsICdfX25lX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoaW5mX2QsIG5lZ19pbmZfZiwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKERlY2ltYWwoJ05hTicpLCBmbG9hdCgnbmFuJyksICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpOgorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzID0gc2V0KFsxMDAuMCwgRGVjaW1hbCgnMTAwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBpZiBzaWduYWw6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2lnbmFsLCBzb3J0ZWQsIFsxLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHMgPSBzb3J0ZWQoWzEwLjAsIERlY2ltYWwoJzEwLjAnKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgYiA9IDEwLjAgaW4gW0RlY2ltYWwoJzEwLjAnKSwgMS4wXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGIgPSAxMC4wIGluIHtEZWNpbWFsKCcxMC4wJyk6J2EnLCAxLjA6J2InfQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgIG5jID0gQ29udGV4dCgpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG5jKSBhcyBjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgIGRvaXQoYywgc2lnbmFsPU5vbmUpCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPU5vbmUpCisKKyAgICAgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgZG9pdChjLCBzaWduYWw9RmxvYXRPcGVyYXRpb24pCisgICAgICAgICAgICB0ZXN0X2NvbnRhaW5lcnMoYywgc2lnbmFsPUZsb2F0T3BlcmF0aW9uKQorCisgICAgZGVmIHRlc3RfZmxvYXRfb3BlcmF0aW9uX2RlZmF1bHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIEZsb2F0T3BlcmF0aW9uPSBzZWxmLmRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKworICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgY29udGV4dC5jbGVhcl90cmFwcygpCisgICAgICAgIGNvbnRleHQudHJhcHNbSW5leGFjdF0gPSBUcnVlCisgICAgICAgIGNvbnRleHQudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGV4dC50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZXh0LnRyYXBzW0luZXhhY3RdKQorCitjbGFzcyBDQ29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dEZsYWdzKENvbnRleHRGbGFncyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgU3BlY2lhbENvbnRleHRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoZSBjb250ZXh0IHRlbXBsYXRlcy4iIiIKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBCYXNpY0NvbnRleHQgPSBzZWxmLmRlY2ltYWwuQmFzaWNDb250ZXh0CisgICAgICAgIEV4dGVuZGVkQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5FeHRlbmRlZENvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuc2V0Y29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gc2VsZi5kZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBDbGFtcGVkID0gc2VsZi5kZWNpbWFsLkNsYW1wZWQKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBCYXNpY0NvbnRleHQsICd0cmFwcycsCisgICAgICAgICAgICBbSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBVbmRlcmZsb3csIENsYW1wZWRdCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgYmFzaWNfY29udGV4dF9wcmVjID0gQmFzaWNDb250ZXh0LnByZWMKKyAgICAgICAgZXh0ZW5kZWRfY29udGV4dF9wcmVjID0gRXh0ZW5kZWRDb250ZXh0LnByZWMKKworICAgICAgICBleCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBFeHRlbmRlZENvbnRleHQucHJlYyA9IDQ0MQorICAgICAgICAgICAgZm9yIHRlbXBsYXRlIGluIEJhc2ljQ29udGV4dCwgRXh0ZW5kZWRDb250ZXh0OgorICAgICAgICAgICAgICAgIHNldGNvbnRleHQodGVtcGxhdGUpCisgICAgICAgICAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgdGVtcGxhdGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDQ0MSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXggPSBlLl9fY2xhc3NfXworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzaWNDb250ZXh0LnByZWMgPSBiYXNpY19jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIEV4dGVuZGVkQ29udGV4dC5wcmVjID0gZXh0ZW5kZWRfY29udGV4dF9wcmVjCisgICAgICAgICAgICBzZXRjb250ZXh0KHNhdmVjb250ZXh0KQorICAgICAgICAgICAgaWYgZXg6CisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKyAgICAgICAgQmFzaWNDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkJhc2ljQ29udGV4dAorICAgICAgICBFeHRlbmRlZENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXNpY0NvbnRleHQucHJlYywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFeHRlbmRlZENvbnRleHQucHJlYywgOSkKKworICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBEZWZhdWx0Q29udGV4dCwgJ3RyYXBzJywKKyAgICAgICAgICAgIFtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3ddCisgICAgICAgICkKKworICAgICAgICBzYXZlY29udGV4dCA9IGdldGNvbnRleHQoKS5jb3B5KCkKKyAgICAgICAgZGVmYXVsdF9jb250ZXh0X3ByZWMgPSBEZWZhdWx0Q29udGV4dC5wcmVjCisKKyAgICAgICAgZXggPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNhdmVwcmVjID0gYy5wcmVjCisKKyAgICAgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSA5NjEKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBzYXZlcHJlYykKKworICAgICAgICAgICAgc2V0Y29udGV4dChEZWZhdWx0Q29udGV4dCkKKyAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYywgRGVmYXVsdENvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgOTYxKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBleCA9IGUuX19jbGFzc19fCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gZGVmYXVsdF9jb250ZXh0X3ByZWMKKyAgICAgICAgICAgIHNldGNvbnRleHQoc2F2ZWNvbnRleHQpCisgICAgICAgICAgICBpZiBleDoKKyAgICAgICAgICAgICAgICByYWlzZSBleAorCitjbGFzcyBDU3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5U3BlY2lhbENvbnRleHRzKFNwZWNpYWxDb250ZXh0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dElucHV0VmFsaWRhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnRleHQoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICAjIHByZWMsIEVtYXgKKyAgICAgICAgZm9yIGF0dHIgaW4gWydwcmVjJywgJ0VtYXgnXToKKyAgICAgICAgICAgIHNldGF0dHIoYywgYXR0ciwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCA5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3h5eicpCisKKyAgICAgICAgIyBFbWluCisgICAgICAgIHNldGF0dHIoYywgJ0VtaW4nLCAtOTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYywgJ0VtaW4nKSwgLTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdFbWluJywgKDEsMiwzKSkKKworICAgICAgICAjIHJvdW5kaW5nOiBhbHdheXMgcmFpc2UgVHlwZUVycm9yIGluIG9yZGVyIHRvIGdldCBjb25zaXN0ZW50CisgICAgICAgICMgZXhjZXB0aW9ucyBhY3Jvc3MgaW1wbGVtZW50YXRpb25zLiBJbiBkZWNpbWFsLCByb3VuZGluZworICAgICAgICAjIG1vZGVzIGFyZSBzdHJpbmdzLCBpbiBfZGVjaW1hbCB0aGV5IGFyZSBpbnRlZ2Vycy4gVGhlIGlkZWEKKyAgICAgICAgIyBpcyB0byB2aWV3IHJvdW5kaW5nIGFzIGFuIGFic3RyYWN0IHR5cGUgYW5kIG5vdCBtaW5kIHRoZQorICAgICAgICAjIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisgICAgICAgICMgSGVuY2UsIGEgdXNlciBzaG91bGQgdmlldyB0aGUgcm91bmRpbmcgbW9kZXMgYXMgaWYgdGhleQorICAgICAgICAjIGhhZCBiZWVuIGRlZmluZWQgaW4gYSBsYW5ndWFnZSB0aGF0IHN1cHBvcnRzIGFic3RyYWN0CisgICAgICAgICMgZGF0YSB0eXBlcywgZS5nLiBvY2FtbDoKKyAgICAgICAgIworICAgICAgICAjICAgdHlwZSByb3VuZGluZyA9IFJPVU5EX0RPV04gfCBST1VORF9IQUxGX1VQIHwgLi4uIDs7CisgICAgICAgICMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdyb3VuZGluZycsIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAneHl6JykKKworICAgICAgICAjIGNhcGl0YWxzLCBjbGFtcAorICAgICAgICBmb3IgYXR0ciBpbiBbJ2NhcGl0YWxzJywgJ2NsYW1wJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIFsxLDIsM10pCisKKyAgICAgICAgIyBJbnZhbGlkIGF0dHJpYnV0ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgYywgJ2VtYXgnLCAxMDApCisKKyAgICAgICAgIyBJbnZhbGlkIHNpZ25hbCBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICd0cmFwcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsnSW52YWxpZE9wZXJhdGlvbic6MH0pCisKKyAgICAgICAgIyBBdHRyaWJ1dGVzIGNhbm5vdCBiZSBkZWxldGVkCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4JywgJ0VtaW4nLCAncm91bmRpbmcnLCAnY2FwaXRhbHMnLCAnY2xhbXAnLAorICAgICAgICAgICAgICAgICAgICAgJ2ZsYWdzJywgJ3RyYXBzJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgYy5fX2RlbGF0dHJfXywgYXR0cikKKworICAgICAgICAjIEludmFsaWQgYXR0cmlidXRlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGF0dHIsIGMsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgOSkKKworICAgICAgICAjIEludmFsaWQgdmFsdWVzIGluIGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgcm91bmRpbmc9OTk5OTk5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIHJvdW5kaW5nPSd4eXonKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBDb250ZXh0LCBjbGFtcD0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBDb250ZXh0LCBjYXBpdGFscz0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIENvbnRleHQsIGZsYWdzPVsiUCJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgQ29udGV4dCwgdHJhcHM9WyJRIl0pCisKKyAgICAgICAgIyBUeXBlIGVycm9yIGluIGNvbnZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCBmbGFncz0oMCwxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCB0cmFwcz0oMSwwKSkKKworY2xhc3MgQ0NvbnRleHRJbnB1dFZhbGlkYXRpb24oQ29udGV4dElucHV0VmFsaWRhdGlvbik6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dElucHV0VmFsaWRhdGlvbihDb250ZXh0SW5wdXRWYWxpZGF0aW9uKToKKyAgICBkZWNpbWFsID0gUAorCitjbGFzcyBDb250ZXh0U3ViY2xhc3NpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY29udGV4dF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgZGVjaW1hbCA9IHNlbGYuZGVjaW1hbAorICAgICAgICBEZWNpbWFsID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBkZWNpbWFsLkNvbnRleHQKKyAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gZGVjaW1hbC5ST1VORF9IQUxGX0VWRU4KKyAgICAgICAgUk9VTkRfRE9XTiA9IGRlY2ltYWwuUk9VTkRfRE9XTgorICAgICAgICBDbGFtcGVkID0gZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBJbmV4YWN0ID0gZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIE92ZXJmbG93ID0gZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBSb3VuZGVkID0gZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IGRlY2ltYWwuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IGRlY2ltYWwuVW5kZXJmbG93CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBkZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICBjbGFzcyBNeUNvbnRleHQoQ29udGV4dCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPU5vbmUpOgorICAgICAgICAgICAgICAgIENvbnRleHQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgICAgICBpZiBwcmVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWMgPSBwcmVjCisgICAgICAgICAgICAgICAgaWYgcm91bmRpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICAgICAgICAgIGlmIEVtaW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuRW1pbiA9IEVtaW4KKyAgICAgICAgICAgICAgICBpZiBFbWF4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLkVtYXggPSBFbWF4CisgICAgICAgICAgICAgICAgaWYgY2FwaXRhbHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMgPSBjYXBpdGFscworICAgICAgICAgICAgICAgIGlmIGNsYW1wIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYW1wID0gY2xhbXAKKyAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmbGFncywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHt2Oih2IGluIGZsYWdzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIGZsYWdzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKKyAgICAgICAgICAgICAgICBpZiB0cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0cmFwcywgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcyA9IHt2Oih2IGluIHRyYXBzKSBmb3IgdiBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXSArIHRyYXBzfQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBNeUNvbnRleHQoKQorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAncm91bmRpbmcnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJywKKyAgICAgICAgICAgICAgICAgICAgICdmbGFncycsICd0cmFwcycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsIGF0dHIpLCBnZXRhdHRyKGQsIGF0dHIpKQorCisgICAgICAgICMgcHJlYworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydwcmVjJzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQocHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5xdWFudGl6ZSwgRGVjaW1hbCgnOWUyJyksIDApCisKKyAgICAgICAgIyByb3VuZGluZworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J3JvdW5kaW5nJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQocm91bmRpbmc9Uk9VTkRfRE9XTiwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0RPV04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wbHVzKERlY2ltYWwoJzkuOScpKSwgOSkKKworICAgICAgICAjIEVtaW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnRW1pbic6NX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1pbj0tMSwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTEpCisgICAgICAgIHggPSBjLmFkZChEZWNpbWFsKCcxZS05OScpLCBEZWNpbWFsKCcyLjIzNGUtMjAwMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMCcpKQorICAgICAgICBmb3Igc2lnbmFsIGluIChJbmV4YWN0LCBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgUm91bmRlZCwgQ2xhbXBlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgRW1heAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydFbWF4JzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoRW1heD0xLCBwcmVjPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5hZGQsIERlY2ltYWwoJzFlOTknKSwgRGVjaW1hbCgnMi4yMzRlMjAwMCcpKQorICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQzoKKyAgICAgICAgICAgIGZvciBzaWduYWwgaW4gKEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tzaWduYWxdKQorCisgICAgICAgICMgY2FwaXRhbHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnY2FwaXRhbHMnOi0xfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjYXBpdGFscz0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIDApCisgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsKCcxRTIyMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKHgpLCAnMWUrMjIyJykKKworICAgICAgICAjIGNsYW1wCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J2NsYW1wJzoyfSkKKyAgICAgICAgYyA9IE15Q29udGV4dChjbGFtcD0xLCBFbWF4PTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIDEpCisgICAgICAgIHggPSBjLnBsdXMoRGVjaW1hbCgnMWU5OScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih4KSwgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRSs5OScpCisKKyAgICAgICAgIyBmbGFncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J2ZsYWdzJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQoZmxhZ3M9W1JvdW5kZWQsIERpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiAoUm91bmRlZCwgRGl2aXNpb25CeVplcm8pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3Nbc2lnbmFsXSkKKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGZvciBzaWduYWwgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3Nbc2lnbmFsXSkKKworICAgICAgICAjIHRyYXBzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlDb250ZXh0LCAqKnsndHJhcHMnOidYWVonfSkKKyAgICAgICAgYyA9IE15Q29udGV4dCh0cmFwcz1bUm91bmRlZCwgRGl2aXNpb25CeVplcm9dKQorICAgICAgICBmb3Igc2lnbmFsIGluIChSb3VuZGVkLCBEaXZpc2lvbkJ5WmVybyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy50cmFwc1tzaWduYWxdKQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBPcmRlcmVkU2lnbmFsc1tkZWNpbWFsXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy50cmFwc1tzaWduYWxdKQorCitjbGFzcyBDQ29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dFN1YmNsYXNzaW5nKENvbnRleHRTdWJjbGFzc2luZyk6CisgICAgZGVjaW1hbCA9IFAKKworQHNraXBfaWZfZXh0cmFfZnVuY3Rpb25hbGl0eQorY2xhc3MgQ2hlY2tBdHRyaWJ1dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgICMgQXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBjb250ZXh0IGxpbWl0cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUFYX1BSRUMsIFAuTUFYX1BSRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NQVhfRU1BWCwgUC5NQVhfRU1BWCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1JTl9FTUlOLCBQLk1JTl9FTUlOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUlOX0VUSU5ZLCBQLk1JTl9FVElOWSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoQy5IQVZFX1RIUkVBRFMgaXMgVHJ1ZSBvciBDLkhBVkVfVEhSRUFEUyBpcyBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuSEFWRV9USFJFQURTIGlzIFRydWUgb3IgUC5IQVZFX1RIUkVBRFMgaXMgRmFsc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fdmVyc2lvbl9fLCBQLl9fdmVyc2lvbl9fKQorCisgICAgICAgIHggPSBkaXIoQykKKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X2F0dHJpYnV0ZXMoc2VsZik6CisKKyAgICAgICAgeCA9IFtzIGZvciBzIGluIGRpcihDLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQLkNvbnRleHQoKSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCisgICAgZGVmIHRlc3RfZGVjaW1hbF9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgIHggPSBbcyBmb3IgcyBpbiBkaXIoQy5EZWNpbWFsKDkpKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQorICAgICAgICB5ID0gW3MgZm9yIHMgaW4gZGlyKEMuRGVjaW1hbCg5KSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCitjbGFzcyBDb3ZlcmFnZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hZGp1c3RlZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCcxMjM0ZTk5OTknKS5hZGp1c3RlZCgpLCAxMDAwMikKKyAgICAgICAgIyBYWFggcmFpc2U/CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnbmFuJykuYWRqdXN0ZWQoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCdpbmYnKS5hZGp1c3RlZCgpLCAwKQorCisgICAgZGVmIHRlc3RfY2Fub25pY2FsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgeCA9IERlY2ltYWwoOSkuY2Fub25pY2FsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCA5KQorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgeCA9IGMuY2Fub25pY2FsKERlY2ltYWwoOSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgOSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfcmVwcihzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5EZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICBjLnByZWMgPSA0MjUwMDAwMDAKKyAgICAgICAgYy5FbWF4ID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1pbiA9IC00MjUwMDAwMDAKKyAgICAgICAgYy5yb3VuZGluZyA9IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgorICAgICAgICAgICAgYy5mbGFnc1tzaWddID0gRmFsc2UKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IEZhbHNlCisKKyAgICAgICAgcyA9IGMuX19yZXByX18oKQorICAgICAgICB0ID0gIkNvbnRleHQocHJlYz00MjUwMDAwMDAsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRE9XTiwgIiBcCisgICAgICAgICAgICAiRW1pbj0tNDI1MDAwMDAwLCBFbWF4PTQyNTAwMDAwMCwgY2FwaXRhbHM9MCwgY2xhbXA9MSwgIiBcCisgICAgICAgICAgICAiZmxhZ3M9W10sIHRyYXBzPVtdKSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCB0KQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfY29udGV4dChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorCisgICAgICAgICAgICAjIGFicworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhYnMoRGVjaW1hbCgiLTEwIikpLCAxMCkKKyAgICAgICAgICAgICMgYWRkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjciKSArIDEsIDgpCisgICAgICAgICAgICAjIGRpdmlkZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC8gNSwgMikKKyAgICAgICAgICAgICMgZGl2aWRlX2ludAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC8vIDcsIDEpCisgICAgICAgICAgICAjIGZtYQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjIiKS5mbWEoRGVjaW1hbCgiMC4wMSIpLCAxKSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRGVjaW1hbCgiTmFOIikuZm1hKDcsIDEpLmlzX25hbigpLCBUcnVlKQorICAgICAgICAgICAgIyB0aHJlZSBhcmcgcG93ZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG93KERlY2ltYWwoMTApLCAyLCA3KSwgMikKKyAgICAgICAgICAgICMgZXhwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMDEiKS5leHAoKSwgMykKKyAgICAgICAgICAgICMgaXNfbm9ybWFsCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKERlY2ltYWwoIjAuMDEiKS5pc19ub3JtYWwoKSwgRmFsc2UpCisgICAgICAgICAgICAjIGlzX3N1Ym5vcm1hbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhEZWNpbWFsKCIwLjAxIikuaXNfc3Vibm9ybWFsKCksIFRydWUpCisgICAgICAgICAgICAjIGxuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjIwIikubG4oKSwgMykKKyAgICAgICAgICAgICMgbG9nMTAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMjAiKS5sb2cxMCgpLCAxKQorICAgICAgICAgICAgIyBsb2diCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjU4MCIpLmxvZ2IoKSwgMikKKyAgICAgICAgICAgICMgbG9naWNhbF9pbnZlcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5sb2dpY2FsX2ludmVydCgpLCAxKQorICAgICAgICAgICAgIyBtaW51cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtRGVjaW1hbCgiLTEwIiksIDEwKQorICAgICAgICAgICAgIyBtdWx0aXBseQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIyIikgKiA0LCA4KQorICAgICAgICAgICAgIyBuZXh0X21pbnVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubmV4dF9taW51cygpLCA5KQorICAgICAgICAgICAgIyBuZXh0X3BsdXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5uZXh0X3BsdXMoKSwgRGVjaW1hbCgnMkUrMScpKQorICAgICAgICAgICAgIyBub3JtYWxpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiLTEwIikubm9ybWFsaXplKCksIERlY2ltYWwoJy0xRSsxJykpCisgICAgICAgICAgICAjIG51bWJlcl9jbGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLm51bWJlcl9jbGFzcygpLCAnK05vcm1hbCcpCisgICAgICAgICAgICAjIHBsdXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoK0RlY2ltYWwoIi0xIiksIC0xKQorICAgICAgICAgICAgIyByZW1haW5kZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAlIDcsIDMpCisgICAgICAgICAgICAjIHN1YnRyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgLSA3LCAzKQorICAgICAgICAgICAgIyB0b19pbnRlZ3JhbF9leGFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjEyMzQ1IikudG9faW50ZWdyYWxfZXhhY3QoKSwgMSkKKworICAgICAgICAgICAgIyBCb29sZWFuIGZ1bmN0aW9ucworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjEiKS5pc19jYW5vbmljYWwoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIxIikuaXNfZmluaXRlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMSIpLmlzX2Zpbml0ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoInNuYW4iKS5pc19zbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiLTEiKS5pc19zaWduZWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIwIikuaXNfemVybygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjAiKS5pc196ZXJvKCkpCisKKyAgICAgICAgIyBDb3B5CisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgICAgICB4ID0gMTIyOCAqKiAxNTIzCisgICAgICAgICAgICB5ID0gLURlY2ltYWwoeCkKKworICAgICAgICAgICAgeiA9IHkuY29weV9hYnMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgICAgICAgICB6ID0geS5jb3B5X25lZ2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHosIHgpCisKKyAgICAgICAgICAgIHogPSB5LmNvcHlfc2lnbihEZWNpbWFsKDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBzZWxmLmRlY2ltYWwuRGl2aXNpb25CeVplcm8KKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIjEwOTEyODM3MTI5IiksIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIERlY2ltYWwoJzEwOTAxOTM1JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIERlY2ltYWwoJzE5NCcpKQorCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoIk5hTiIpLCA3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBGYWxzZQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJOYU4iKSwgNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJpbmYiKSwgRGVjaW1hbCgiaW5mIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiaW5mIiksIDEwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX2luZmluaXRlKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoMCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IEZhbHNlCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgxMSksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19pbmZpbml0ZSgpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisKKyAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEuMCIpICoqIDEwMCwgRGVjaW1hbCgnMS4wMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbUm91bmRlZF0pCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGMudHJhcHNbT3ZlcmZsb3ddID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDAwMCkgKiogRGVjaW1hbCgiMC41IiksIERlY2ltYWwoJ2luZicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDk5KS5xdWFudGl6ZShEZWNpbWFsKCIxZTEiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmlzX25hbigpKQorCisgICAgZGVmIHRlc3RfcmFkaXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMSIpLnJhZGl4KCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmFkaXgoKSwgMTApCisKKyAgICBkZWYgdGVzdF9yb3Aoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGZvciBhdHRyIGluICgnX19yYWRkX18nLCAnX19yc3ViX18nLCAnX19ybXVsX18nLCAnX19ydHJ1ZWRpdl9fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3JkaXZtb2RfXycsICdfX3Jtb2RfXycsICdfX3JmbG9vcmRpdl9fJywgJ19fcnBvd19fJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoRGVjaW1hbCgiMSIpLCBhdHRyKSgieHl6IiksIE5vdEltcGxlbWVudGVkKQorCisgICAgZGVmIHRlc3Rfcm91bmQoc2VsZik6CisgICAgICAgICMgUHl0aG9uMyBiZWhhdmlvcjogcm91bmQoKSByZXR1cm5zIERlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgYy5wcmVjID0gMjgKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCI5Ljk5IikuX19yb3VuZF9fKCkpLCAiMTAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCI5Ljk5ZS01IikuX19yb3VuZF9fKCkpLCAiMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NTY3ODkiKS5fX3JvdW5kX18oNSkpLCAiMS4yMzQ1NyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NSIpLl9fcm91bmRfXygxMCkpLCAiMS4yMzQ1MDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiMS4yMzQ1IikuX19yb3VuZF9fKC0xMCkpLCAiMEUrMTAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywgIjUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sIDUsIDgpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZGVjaW1hbChzZWxmKToKKyAgICAgICAgYyA9IHNlbGYuZGVjaW1hbC5Db250ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy5jcmVhdGVfZGVjaW1hbCwgWyIlIl0pCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gOTk5OQorICAgICAgICAgICAgeCA9IERlY2ltYWwoMTIyMSoqMTI3MSkgLyAxMCoqMzkyMworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoeCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWwoKSwgMikKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgYy5wcmVjID0gMTAwMDAKKyAgICAgICAgeCA9IC0oMTE3MiAqKiAxNzEyKQorCisgICAgICAgIHkgPSBjLmNvcHlfYWJzKHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKKyAgICAgICAgeSA9IGMuY29weV9uZWdhdGUoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworICAgICAgICB5ID0gYy5jb3B5X3NpZ24oeCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCAteCkKKworY2xhc3MgQ0NvdmVyYWdlKENvdmVyYWdlKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlDb3ZlcmFnZShDb3ZlcmFnZSk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgUHlGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIGRlY2ltYWwucHkiIiIKKworICAgIGRlZiB0ZXN0X3B5X3F1YW50aXplX3dhdGNoZXhwKHNlbGYpOgorICAgICAgICAjIHdhdGNoZXhwIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIGMuRW1heCA9IDEKKyAgICAgICAgICAgIGMuRW1pbiA9IC0xCisgICAgICAgICAgICB4ID0gRGVjaW1hbCg5OTk5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUzIiksIHdhdGNoZXhwPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxLjAwRSs1JykpCisKKyAgICBkZWYgdGVzdF9weV9hbHRlcm5hdGVfZm9ybWF0dGluZyhzZWxmKToKKyAgICAgICAgIyB0cmlwbGVzIGdpdmluZyBhIGZvcm1hdCwgYSBEZWNpbWFsLCBhbmQgdGhlIGV4cGVjdGVkIHJlc3VsdAorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CisKKyAgICAgICAgdGVzdF92YWx1ZXMgPSBbCisgICAgICAgICAgICAjIElzc3VlIDcwOTQ6IEFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgIykKKyAgICAgICAgICAgICgnLjBlJywgJzEuMCcsICcxZSswJyksCisgICAgICAgICAgICAoJyMuMGUnLCAnMS4wJywgJzEuZSswJyksCisgICAgICAgICAgICAoJy4wZicsICcxLjAnLCAnMScpLAorICAgICAgICAgICAgKCcjLjBmJywgJzEuMCcsICcxLicpLAorICAgICAgICAgICAgKCdnJywgJzEuMScsICcxLjEnKSwKKyAgICAgICAgICAgICgnI2cnLCAnMS4xJywgJzEuMScpLAorICAgICAgICAgICAgKCcuMGcnLCAnMScsICcxJyksCisgICAgICAgICAgICAoJyMuMGcnLCAnMScsICcxLicpLAorICAgICAgICAgICAgKCcuMCUnLCAnMS4wJywgJzEwMCUnKSwKKyAgICAgICAgICAgICgnIy4wJScsICcxLjAnLCAnMTAwLiUnKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZm9yIGZtdCwgZCwgcmVzdWx0IGluIHRlc3RfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoRGVjaW1hbChkKSwgZm10KSwgcmVzdWx0KQorCitjbGFzcyBQeVdoaXRlYm94KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGl0ZSBib3ggdGVzdGluZyBmb3IgZGVjaW1hbC5weSIiIgorCisgICAgZGVmIHRlc3RfcHlfZXhhY3RfcG93ZXIoc2VsZik6CisgICAgICAgICMgUmFyZWx5IGV4ZXJjaXNlZCBsaW5lcyBpbiBfcG93ZXJfZXhhY3QuCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSA4CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgyKioxNikgKiogRGVjaW1hbCgiLTAuNSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzAuMDAzOTA2MjUnKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqMTYpICoqIERlY2ltYWwoIi0wLjYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcwLjAwMTI4ODU4MTknKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoIjI1NmU3IikgKiogRGVjaW1hbCgiLTAuNSIpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDE1MjU4Nzg5MDYyNSkgKiogRGVjaW1hbCgnLTAuMDYyNScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoIjAuMiIpKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTUyNTg3ODkwNjI1ZTciKSAqKiBEZWNpbWFsKCctMC4wNjI1JykKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoNSoqMjY1OSkgKiogRGVjaW1hbCgnLTAuMDYyNScpCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIxNTI1ODc4OTA2MjUiKSAqKiBEZWNpbWFsKCctMC41JykKKyAgICAgICAgICAgIGMucHJlYyA9IDIwMQorICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqNTc4KSAqKiBEZWNpbWFsKCItMC41IikKKworICAgIGRlZiB0ZXN0X3B5X2ltbXV0YWJpbGl0eV9vcGVyYXRpb25zKHNlbGYpOgogICAgICAgICAjIERvIG9wZXJhdGlvbnMgYW5kIGNoZWNrIHRoYXQgaXQgZGlkbid0IGNoYW5nZSBjaGFuZ2UgaW50ZXJuYWwgb2JqZWN0cy4KKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IFAuRGVmYXVsdENvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IFAuc2V0Y29udGV4dAorCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKyAgICAgICAgYy50cmFwcyA9IGRpY3QoKHMsIDApIGZvciBzIGluIE9yZGVyZWRTaWduYWxzW1BdKQorICAgICAgICBzZXRjb250ZXh0KGMpCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCctMjVlNTUnKQogICAgICAgICBiMSA9IERlY2ltYWwoJy0yNWU1NScpCkBAIC0xNjU5LDcxMyArNDI4MCw3OTkgQEAKICAgICAgICAgY2hlY2tTYW1lRGVjKCJ0b19lbmdfc3RyaW5nIikKICAgICAgICAgY2hlY2tTYW1lRGVjKCJ0b19pbnRlZ3JhbCIpCiAKLSAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKLSAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKKyAgICBkZWYgdGVzdF9weV9kZWNpbWFsX2lkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCiAKLSAgICAgICAgY2xhc3MgTXlEZWNpbWFsKERlY2ltYWwpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBkID0gRGVjaW1hbCg0NSkKKyAgICAgICAgZSA9IERlY2ltYWwoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICc0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogCi0gICAgICAgIGQxID0gTXlEZWNpbWFsKDEpCi0gICAgICAgIGQyID0gTXlEZWNpbWFsKDIpCi0gICAgICAgIGQgPSBkMSArIGQyCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKyAgICBkZWYgdGVzdF9weV9yZXNjYWxlKHNlbGYpOgorICAgICAgICAjIENvdmVyYWdlCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgUk9VTkRfVVAgPSBQLlJPVU5EX1VQCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CiAKLSAgICAgICAgZCA9IGQxLm1heChkMikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiTmFOIikuX3Jlc2NhbGUoMywgUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKIAotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcmVzdWx0cyB3aGVuIGNvbnRleHQgZ2l2ZW4gaW1wbGljaXRseS4gIChJc3N1ZSAyNDc4KQotICAgICAgICBjID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoMCkuc3FydCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYy5zcXJ0KERlY2ltYWwoMCkpKSkKKyAgICBkZWYgdGVzdF9weV9fcm91bmQoc2VsZik6CisgICAgICAgICMgQ292ZXJhZ2UKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBST1VORF9VUCA9IFAuUk9VTkRfVVAKIAotICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zX2Zyb21faW50KHNlbGYpOgotICAgICAgICAjIENoZWNrIHRoYXQgbWV0aG9kcyB0YWtpbmcgYSBzZWNvbmQgRGVjaW1hbCBhcmd1bWVudCB3aWxsCi0gICAgICAgICMgYWx3YXlzIGFjY2VwdCBhbiBpbnRlZ2VyIGluIHBsYWNlIG9mIGEgRGVjaW1hbC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmUoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWwoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKERlY2ltYWwoMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZCgxMDAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX2FuZChEZWNpbWFsKDEwMDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKDEwMDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfb3IoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoMTAwMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF94b3IoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heCgxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXgoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWF4X21hZygxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5tYXhfbWFnKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbigxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW4oRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDU2NykubWluX21hZygxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5taW5fbWFnKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKDEyMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg1NjcpLm5leHRfdG93YXJkKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5xdWFudGl6ZSgxMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzNCkucXVhbnRpemUoRGVjaW1hbCgxMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDc2OCkucmVtYWluZGVyX25lYXIoMTIzNCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMTIzNCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzKS5yb3RhdGUoMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjMpLnJvdGF0ZShEZWNpbWFsKDEpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bSgxMDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCc5LjEyMycpLnNjYWxlYigtMTAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCc5LjEyMycpLnNjYWxlYihEZWNpbWFsKC0xMDApKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQ1Nikuc2hpZnQoLTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNDU2KS5zaGlmdChEZWNpbWFsKC0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwoIjMuMTIzNCIpLl9yb3VuZCwgMCwgUk9VTkRfVVApCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCA2NyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIDY3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYSg0NSwgRGVjaW1hbCg2NykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKK2NsYXNzIENGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIF9kZWNpbWFsIiIiCiAKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfaWVlZV9jb250ZXh0KHNlbGYpOgorICAgICAgICAjIGlzc3VlIDg3ODY6IEFkZCBzdXBwb3J0IGZvciBJRUVFIDc1NCBjb250ZXh0cyB0byBkZWNpbWFsIG1vZHVsZS4KKyAgICAgICAgSUVFRUNvbnRleHQgPSBDLklFRUVDb250ZXh0CisgICAgICAgIERFQ0lNQUwzMiA9IEMuREVDSU1BTDMyCisgICAgICAgIERFQ0lNQUw2NCA9IEMuREVDSU1BTDY0CisgICAgICAgIERFQ0lNQUwxMjggPSBDLkRFQ0lNQUwxMjgKIAotY2xhc3MgRGVjaW1hbFB5dGhvbkFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgZGVmIGFzc2VydF9yZXN0KHNlbGYsIGNvbnRleHQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmNsYW1wLCAxKQorICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgY29udGV4dCwgJ3RyYXBzJywgW10pCisgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBjb250ZXh0LCAnZmxhZ3MnLCBbXSkKIAotICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5OdW1iZXIpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoRGVjaW1hbCwgbnVtYmVycy5SZWFsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuTnVtYmVyKQotICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5SZWFsKQorICAgICAgICBjID0gSUVFRUNvbnRleHQoREVDSU1BTDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDk2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTk1KQorICAgICAgICBhc3NlcnRfcmVzdChzZWxmLCBjKQogCi0gICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBkID0gRGVjaW1hbCgnLTMuMTQxNTkwMDAwJykKLSAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhkKQotICAgICAgICBlID0gcGlja2xlLmxvYWRzKHApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgYyA9IElFRUVDb250ZXh0KERFQ0lNQUw2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgMzg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTM4MykKKyAgICAgICAgYXNzZXJ0X3Jlc3Qoc2VsZiwgYykKIAotICAgIGRlZiB0ZXN0X2ludChzZWxmKToKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKLSAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKLSAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCi0gICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKGludChkKSksIHIpCisgICAgICAgIGMgPSBJRUVFQ29udGV4dChERUNJTUFMMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgMzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA2MTQ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTYxNDMpCisgICAgICAgIGFzc2VydF9yZXN0KHNlbGYsIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCctbmFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgRGVjaW1hbCgnc25hbicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJ2luZicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgIyBJbnZhbGlkIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBJRUVFQ29udGV4dCwgMioqNjMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIElFRUVDb250ZXh0LCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgSUVFRUNvbnRleHQsIDEwMjQpCiAKLSAgICBkZWYgdGVzdF90cnVuYyhzZWxmKToKLSAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKLSAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKLSAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKLSAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCi0gICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKG1hdGgudHJ1bmMoZCkpLCByKQorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0KHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CiAKLSAgICBkZWYgdGVzdF9mcm9tX2Zsb2F0KHNlbGYpOgorICAgICAgICBjID0gQ29udGV4dChmbGFncz1DLkRlY0NsYW1wZWQsIHRyYXBzPUMuRGVjUm91bmRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgQy5EZWNDbGFtcGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX3RyYXBzLCBDLkRlY1JvdW5kZWQpCiAKLSAgICAgICAgY2xhc3MgIE15RGVjaW1hbChEZWNpbWFsKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByID0gTXlEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIE15RGVjaW1hbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksCi0gICAgICAgICAgICAgICAgJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCi0gICAgICAgIGJpZ2ludCA9IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlEZWNpbWFsLmZyb21fZmxvYXQoYmlnaW50KSwgTXlEZWNpbWFsKGJpZ2ludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpLmlzX3FuYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpLmlzX2luZmluaXRlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdOYU4nKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdJbmZpbml0eScpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCctSW5maW5pdHknKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlEZWNpbWFsLmZyb21fZmxvYXQsICdhYmMnKQotICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgotICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KE15RGVjaW1hbC5mcm9tX2Zsb2F0KHgpKSkgIyByb3VuZHRyaXAKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZik6Ci0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKLSAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jb25zdGFudHMoc2VsZik6CisgICAgICAgICMgQ29uZGl0aW9uIGZsYWdzCisgICAgICAgIGNvbmQgPSAoCisgICAgICAgICAgICBDLkRlY0NsYW1wZWQsIEMuRGVjQ29udmVyc2lvblN5bnRheCwgQy5EZWNEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlLCBDLkRlY0RpdmlzaW9uVW5kZWZpbmVkLAorICAgICAgICAgICAgQy5EZWNGcHVFcnJvciwgQy5EZWNJbmV4YWN0LCBDLkRlY0ludmFsaWRDb250ZXh0LAorICAgICAgICAgICAgQy5EZWNJbnZhbGlkT3BlcmF0aW9uLCBDLkRlY01hbGxvY0Vycm9yLAorICAgICAgICAgICAgQy5EZWNGbG9hdE9wZXJhdGlvbiwgQy5EZWNPdmVyZmxvdywgQy5EZWNSb3VuZGVkLAorICAgICAgICAgICAgQy5EZWNTdWJub3JtYWwsIEMuRGVjVW5kZXJmbG93CiAgICAgICAgICkKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9VUCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKLSAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNicpCi0gICAgICAgICkKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgSW5leGFjdCwKLSAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKLSAgICAgICAgICAgIG1hdGgucGkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KC0wLjApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnLTAnKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMS4wKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEnKSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMTApKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMTAnKSIpCiAKLWNsYXNzIENvbnRleHRBUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICMgSUVFRUNvbnRleHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRFQ0lNQUwzMiwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5ERUNJTUFMNjQsIDY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuREVDSU1BTDEyOCwgMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuSUVFRV9DT05URVhUX01BWF9CSVRTLCA1MTIpCiAKLSAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgICMgUm91bmRpbmcgbW9kZXMKKyAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKFJvdW5kaW5nTW9kZXNbQ10pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuUk9VTkRfVFJVTkMsIDgpCisKKyAgICAgICAgIyBDb25kaXRpb25zCisgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShjb25kKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMTw8aSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25JbXBvc3NpYmxlfAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRGl2aXNpb25VbmRlZmluZWR8CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNGcHVFcnJvcnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0fAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY01hbGxvY0Vycm9yKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNFcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uQnlaZXJvKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5EZWNUcmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0Vycm9yc3xDLkRlY092ZXJmbG93fEMuRGVjVW5kZXJmbG93KQorCitjbGFzcyBDV2hpdGVib3godW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIldoaXRlYm94IHRlc3RpbmcgZm9yIF9kZWNpbWFsIiIiCisKKyAgICBkZWYgdGVzdF9iaWdudW0oc2VsZik6CisgICAgICAgICMgTm90IGV4YWN0bHkgd2hpdGVib3gsIGJ1dCB0b28gc2xvdyB3aXRoIHB5ZGVjaW1hbC4KKworICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgYjEgPSAxMCoqMzUKKyAgICAgICAgYjIgPSAxMCoqMzYKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMTAwMDAwMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgYSA9IHJhbmRvbS5yYW5kcmFuZ2UoYjEsIGIyKQorICAgICAgICAgICAgICAgIGIgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAsIDEyMDApCisgICAgICAgICAgICAgICAgeCA9IGEgKiogYgorICAgICAgICAgICAgICAgIHkgPSBEZWNpbWFsKGEpICoqIERlY2ltYWwoYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbnN0cnVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDLkRlY2ltYWwsIDksICJ4eXoiKQorCisgICAgZGVmIHRlc3RfY19pbnB1dF9yZXN0cmljdGlvbihzZWxmKToKKyAgICAgICAgIyBUb28gbGFyZ2UgZm9yIF9kZWNpbWFsIHRvIGJlIGNvbnZlcnRlZCBleGFjdGx5CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoQ29udGV4dCgpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMWU5OTk5OTk5OTk5OTk5OTk5OTk5IikKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9yZXByKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCBpcyBfZGVjaW1hbC1vbmx5IGJlY2F1c2UgZmxhZ3MgYXJlIG5vdCBwcmludGVkCisgICAgICAgICMgaW4gdGhlIHNhbWUgb3JkZXIuCisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IEMuRmxvYXRPcGVyYXRpb24KKyAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gQy5ST1VORF9IQUxGX0RPV04KKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgYy5wcmVjID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtaW4gPSAtNDI1MDAwMDAwCisgICAgICAgIGMucm91bmRpbmcgPSBST1VORF9IQUxGX0RPV04KKyAgICAgICAgYy5jYXBpdGFscyA9IDAKKyAgICAgICAgYy5jbGFtcCA9IDEKKyAgICAgICAgZm9yIHNpZyBpbiBPcmRlcmVkU2lnbmFsc1tDXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbc2lnXSA9IFRydWUKKyAgICAgICAgYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgIGMudHJhcHNbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtDbGFtcGVkLCBJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgIiBcCisgICAgICAgICAgICAgICAgICAgIkZsb2F0T3BlcmF0aW9uLCBPdmVyZmxvdywgUm91bmRlZCwgU3Vibm9ybWFsLCBVbmRlcmZsb3ddLCAiIFwKKyAgICAgICAgICAgICJ0cmFwcz1bQ2xhbXBlZCwgSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsICIgXAorICAgICAgICAgICAgICAgICAgICJGbG9hdE9wZXJhdGlvbiwgT3ZlcmZsb3csIFJvdW5kZWQsIFN1Ym5vcm1hbCwgVW5kZXJmbG93XSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2NfY29udGV4dF9lcnJvcnMoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBDLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IEMuc2V0Y29udGV4dAorICAgICAgICBIQVZFX0NPTkZJR182NCA9IChDLk1BWF9QUkVDID4gNDI1MDAwMDAwKQorCiAgICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpCi0gICAgICAgIGZvciBrIGluIHZhcnMoYyk6Ci0gICAgICAgICAgICB2MSA9IHZhcnMoYylba10KLSAgICAgICAgICAgIHYyID0gdmFycyhlKVtrXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2MSwgdjIpCiAKLSAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisgICAgICAgICMgU2lnbmFsRGljdDogaW5wdXQgdmFsaWRhdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy5mbGFncy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYy50cmFwcy5fX3NldGl0ZW1fXywgODAxLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLmZsYWdzLl9fZGVsaXRlbV9fLCBPdmVyZmxvdykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy50cmFwcy5fX2RlbGl0ZW1fXywgSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBbJ3gnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCd0cmFwcycsIFsneSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgezA6MX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCB7MDoxfSkKIAotICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgICAgICMgQWxsIGNvcGllcyBzaG91bGQgYmUgZGVlcAorICAgICAgICAjIFRlc3QgYXNzaWdubWVudCBmcm9tIGEgc2lnbmFsIGRpY3Qgd2l0aCB0aGUgY29ycmVjdCBsZW5ndGggYnV0CisgICAgICAgICMgb25lIGludmFsaWQga2V5LgorICAgICAgICBkID0gYy5mbGFncy5jb3B5KCkKKyAgICAgICAgZGVsIGRbRmxvYXRPcGVyYXRpb25dCisgICAgICAgIGRbIlhZWiJdID0gOTEyODM3MTkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLCBkKQorCisgICAgICAgICMgSW5wdXQgY29ybmVyIGNhc2VzCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICBndF9tYXhfZW1heCA9IDEwKioxOCBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDEwKio5CisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluCisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4J106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ0VtaW4nLCAtZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBwcmVjLCBFbWF4LCBFbWluIGluIGNvbnRleHQgY29uc3RydWN0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgcHJlYz1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1heD1ndF9tYXhfZW1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgRW1pbj0tZ3RfbWF4X2VtYXgpCisKKyAgICAgICAgIyBPdmVyZmxvdyBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIHByZWM9aW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBFbWF4PWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgRW1pbj0taW50X21heC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCByb3VuZGluZz1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIGNsYW1wPWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgY2FwaXRhbHM9aW50X21heCsxKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBWYWx1ZUVycm9yCisgICAgICAgIGZvciBhdHRyIGluICgncHJlYycsICdFbWluJywgJ0VtYXgnLCAnY2FwaXRhbHMnLCAnY2xhbXAnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yLCBnZW5lcmFsIFR5cGVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ3JvdW5kaW5nJywpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMikKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yOiBfdW5zYWZlX3NldHByZWMsIF91bnNhZmVfc2V0ZW1pbiwgX3Vuc2FmZV9zZXRlbWF4CisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRwcmVjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKworICAgICAgICAjIFZhbHVlRXJyb3I6IF91bnNhZmVfc2V0cHJlYywgX3Vuc2FmZV9zZXRlbWluLCBfdW5zYWZlX3NldGVtYXgKKyAgICAgICAgaWYgQy5NQVhfUFJFQyA9PSA0MjUwMDAwMDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldHByZWMnKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0cHJlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDAwMDAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1heCcpLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1heCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDAwMDAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0ZW1pbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwgMSkKKworICAgICAgICAjIGNhcGl0YWxzLCBjbGFtcAorICAgICAgICBmb3IgYXR0ciBpbiBbJ2NhcGl0YWxzJywgJ2NsYW1wJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIFsxLDIsM10pCisgICAgICAgICAgICBpZiBIQVZFX0NPTkZJR182NDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKiozMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKiozMisxKQorCisgICAgICAgICMgSW52YWxpZCBsb2NhbCBjb250ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXhlYywgJ3dpdGggbG9jYWxjb250ZXh0KCJ4eXoiKTogcGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscygpKQorCisgICAgICAgICMgc2V0Y29udGV4dAorICAgICAgICBzYXZlZF9jb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0Y29udGV4dCwgInh5eiIpCisgICAgICAgIHNldGNvbnRleHQoc2F2ZWRfY29udGV4dCkKKworICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0X2Vycm9yc19leHRyYShzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IEMuQ29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gQy5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBDLnNldGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKKwogICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHkoKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMpLCBpZChkKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLmZsYWdzKSwgaWQoZC5mbGFncykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy50cmFwcyksIGlkKGQudHJhcHMpKQogCi0gICAgZGVmIHRlc3RfX2NsYW1wKHNlbGYpOgotICAgICAgICAjIEluIFB5dGhvbiAzLjIsIHRoZSBwcml2YXRlIGF0dHJpYnV0ZSBgX2NsYW1wYCB3YXMgbWFkZQotICAgICAgICAjIHB1YmxpYyAoaXNzdWUgODU0MCksIHdpdGggdGhlIG9sZCBgX2NsYW1wYCBiZWNvbWluZyBhCi0gICAgICAgICMgcHJvcGVydHkgd3JhcHBpbmcgYGNsYW1wYC4gIEZvciB0aGUgZHVyYXRpb24gb2YgUHl0aG9uIDMuMgotICAgICAgICAjIG9ubHksIHRoZSBhdHRyaWJ1dGUgc2hvdWxkIGJlIGdldHRhYmxlL3NldHRhYmxlIHZpYSBib3RoCi0gICAgICAgICMgYGNsYW1wYCBhbmQgYF9jbGFtcGA7IGluIFB5dGhvbiAzLjMsIGBfY2xhbXBgIHNob3VsZCBiZQotICAgICAgICAjIHJlbW92ZWQuCi0gICAgICAgIGMgPSBDb250ZXh0KGNsYW1wID0gMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQorICAgICAgICAjIElucHV0IGNvcm5lciBjYXNlcworICAgICAgICBpbnRfbWF4ID0gMioqNjMtMSBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDIqKjMxLTEKIAotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBjLl9jbGFtcCA9IDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAxKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAxKQorICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVmFsdWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgaW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLWludF9tYXgtMikKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgaW50X21heCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBUeXBlRXJyb3IKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdfZmxhZ3MnLCAnX3RyYXBzJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0yKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMSkKKworICAgICAgICAjIF9hbGxjcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCBbMSwyLDNdKQorICAgICAgICBpZiBIQVZFX0NPTkZJR182NDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKiozMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdfYWxsY3InLCAyKiozMisxKQorCisgICAgICAgICMgX2ZsYWdzLCBfdHJhcHMKKyAgICAgICAgZm9yIGF0dHIgaW4gWydfZmxhZ3MnLCAnX3RyYXBzJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIDk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgJ3gnKQorCisgICAgZGVmIHRlc3RfY192YWxpZF9jb250ZXh0KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGFyZSBmb3IgY29kZSBjb3ZlcmFnZSBpbiBfZGVjaW1hbC4KKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CisgICAgICAgIFJPVU5EX0hBTEZfVVAgPSBDLlJPVU5EX0hBTEZfVVAKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBJbmV4YWN0ID0gQy5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgU3Vibm9ybWFsID0gQy5TdWJub3JtYWwKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgIyBFeGVyY2lzZSBhbGwgZ2V0dGVycyBhbmQgc2V0dGVycworICAgICAgICBjLnByZWMgPSAzNAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9VUAorICAgICAgICBjLkVtYXggPSAzMDAwCisgICAgICAgIGMuRW1pbiA9IC0zMDAwCisgICAgICAgIGMuY2FwaXRhbHMgPSAxCiAgICAgICAgIGMuY2xhbXAgPSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIFJPVU5EX0hBTEZfVVApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtMzAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDMwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAwKQotICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2NsYW1wLCAwKQogCi0gICAgZGVmIHRlc3RfYWJzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmFicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFicygtMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hYnMsICctMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FdGlueSgpLCAtMzAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkV0b3AoKSwgMjk2NykKIAotICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5hZGQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFkZCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAxLCAnMScpCisgICAgICAgICMgRXhlcmNpc2UgYWxsIHVuc2FmZSBzZXR0ZXJzCisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgYy5fdW5zYWZlX3NldHByZWMoOTk5OTk5OTk5KQorICAgICAgICAgICAgYy5fdW5zYWZlX3NldGVtYXgoOTk5OTk5OTk5KQorICAgICAgICAgICAgYy5fdW5zYWZlX3NldGVtaW4oLTk5OTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA5OTk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgOTk5OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC05OTk5OTk5OTkpCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfdmFsaWRfY29udGV4dF9leHRyYShzZWxmKToKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3NpZ25hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9hbGxjciwgMSkKKyAgICAgICAgYy5fYWxsY3IgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fYWxsY3IsIDApCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWwsIDEsICcxJykKKyAgICBkZWYgdGVzdF9jX3JvdW5kKHNlbGYpOgorICAgICAgICAjIFJlc3RyaWN0ZWQgaW5wdXQuCisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBNQVhfRU1BWCA9IEMuTUFYX0VNQVgKKyAgICAgICAgTUlOX0VUSU5ZID0gQy5NSU5fRVRJTlkKKyAgICAgICAgaW50X21heCA9IDIqKjYzLTEgaWYgQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCBlbHNlIDIqKjMxLTEKIAotICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG90YWxfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgJzEnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsIDEsICcxJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaW50X21heC0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9tYXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KE1BWF9FTUFYKzEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQy5JbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludChNSU5fRVRJTlktMSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCiAKLSAgICBkZWYgdGVzdF9jb3B5X2FicyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2FicyhEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfYWJzKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfYWJzLCAnLTEnKQorICAgIGRlZiB0ZXN0X2NfZm9ybWF0KHNlbGYpOgorICAgICAgICAjIFJlc3RyaWN0ZWQgaW5wdXQKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKIAotICAgIGRlZiB0ZXN0X2NvcHlfZGVjaW1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X2RlY2ltYWwoRGVjaW1hbCgtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2RlY2ltYWwoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9kZWNpbWFsLCAnLTEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIFtdLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIj0xMC4xMCIsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBbXSkKIAotICAgIGRlZiB0ZXN0X2NvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfbmVnYXRlKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9uZWdhdGUoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9uZWdhdGUsICctMScpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCAiPD49MTAuMTAiKQorICAgICAgICAgICAgbWF4c2l6ZSA9IDIqKjYzLTEgaWYgSEFWRV9DT05GSUdfNjQgZWxzZSAyKiozMS0xCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxLjIzNDU2Nzg5IikuX19mb3JtYXRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI9JWQuMSIgJSBtYXhzaXplKQogCi0gICAgZGVmIHRlc3RfY29weV9zaWduKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCAtMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIERlY2ltYWwoLTIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgJzEnLCAtMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgMSwgJy0yJykKKyAgICBkZWYgdGVzdF9jX2ludGVncmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgUk9VTkRfVVAgPSBDLlJPVU5EX1VQCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CiAKLSAgICBkZWYgdGVzdF9kaXZpZGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGUoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgMSwgJzInKQorICAgICAgICB4ID0gRGVjaW1hbCgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCAxMCkKIAotICAgIGRlZiB0ZXN0X2RpdmlkZV9pbnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlX2ludCwgMSwgJzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9faW50ZWdyYWxfdmFsdWUoKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsIDEwKQogCi0gICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmRpdm1vZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsIDEsICcyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsX2V4YWN0KCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX2V4YWN0LCAxMCkKIAotICAgIGRlZiB0ZXN0X2V4cChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5leHAoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leHAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZXhwLCAnMTAnKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkuOSIpLnRvX2ludGVncmFsX3ZhbHVlKFJPVU5EX1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSkKIAotICAgIGRlZiB0ZXN0X2ZtYShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgRGVjaW1hbCg0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCAzLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCBEZWNpbWFsKDMpLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYSgyLCAzLCBEZWNpbWFsKDQpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZtYShEZWNpbWFsKDIpLCBEZWNpbWFsKDMpLCA0KSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgJzInLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAnMycsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsIDIsIDMsICc0JykKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OS45IikudG9faW50ZWdyYWxfZXhhY3QoUk9VTkRfVVApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIERlY2ltYWwoJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpKQogCi0gICAgZGVmIHRlc3RfaXNfZmluaXRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX2Zpbml0ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2Zpbml0ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19maW5pdGUsICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5leGFjdCwgRGVjaW1hbCgiOTk5LjkiKS50b19pbnRlZ3JhbF9leGFjdCwgUk9VTkRfVVApCiAKLSAgICBkZWYgdGVzdF9pc19pbmZpbml0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19pbmZpbml0ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX2luZmluaXRlKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2luZmluaXRlLCAnMTAnKQorICAgIGRlZiB0ZXN0X2NfZnVuY3Moc2VsZik6CisgICAgICAgICMgSW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gQy5EaXZpc2lvbkJ5WmVybworICAgICAgICBST1VORF9VUCA9IEMuUk9VTkRfVVAKKyAgICAgICAgZ2V0Y29udGV4dCA9IEMuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAogCi0gICAgZGVmIHRlc3RfaXNfbmFuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX25hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25hbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19uYW4sICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS45OWUxMCcpLnRvX2VuZ19zdHJpbmcoKSwgJzk5LjlFKzknKQogCi0gICAgZGVmIHRlc3RfaXNfbm9ybWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX25vcm1hbChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25vcm1hbCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19ub3JtYWwsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93LCBEZWNpbWFsKDEpLCAyLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCg5KS5udW1iZXJfY2xhc3MsICJ4IiwgInkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoOSkuc2FtZV9xdWFudHVtLCAzLCAieCIsICJ5IikKIAotICAgIGRlZiB0ZXN0X2lzX3FuYW4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfcW5hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3FuYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfcW5hbiwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCBbXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgZ2V0Y29udGV4dCgpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICBEZWNpbWFsKCIxLjIzNDU2Nzg5IikucXVhbnRpemUsIERlY2ltYWwoJzFlLTEwMDAwMCcpLCAxMAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgUk9VTkRfVVAsIDEwMDAKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfaXNfc2lnbmVkKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3NpZ25lZChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NpZ25lZCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zaWduZWQsICcxMCcpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMuY2xlYXJfdHJhcHMoKQogCi0gICAgZGVmIHRlc3RfaXNfc25hbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zbmFuKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc25hbigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zbmFuLCAnMTAnKQorICAgICAgICAgICAgIyBJbnZhbGlkIGFyZ3VtZW50cworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfc2lnbiwgRGVjaW1hbCgxKSwgIngiLCAieSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY2Fub25pY2FsLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfY2Fub25pY2FsLCAyMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCA5LCA4LCAieCIsICJ5IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sIDksIDMsICJ4IiwgInkiKQogCi0gICAgZGVmIHRlc3RfaXNfc3Vibm9ybWFsKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3N1Ym5vcm1hbCgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19zdWJub3JtYWwsICcxMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNhbm9uaWNhbChEZWNpbWFsKDIwMCkpKSwgJzIwMCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmFkaXgoKSwgMTApCiAKLSAgICBkZWYgdGVzdF9pc196ZXJvKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3plcm8oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc196ZXJvKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3plcm8sICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKIAotICAgIGRlZiB0ZXN0X2xuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxuKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG4sICcxMCcpCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKDkpLl9fZGl2bW9kX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBjLmRpdm1vZCwgOSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKIAotICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZzEwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nMTAoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nMTAsICcxMCcpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgYy5wcmVjID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgcG93LCBEZWNpbWFsKDEwMDApLCAxLCA1MDEpCiAKLSAgICBkZWYgdGVzdF9sb2diKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2IoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2diKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2IsICcxMCcpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfdGVtcGxhdGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5CYXNpY0NvbnRleHQuX3RyYXBzLAorICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnxDLkRlY0RpdmlzaW9uQnlaZXJvfEMuRGVjT3ZlcmZsb3d8CisgICAgICAgICAgICBDLkRlY1VuZGVyZmxvd3xDLkRlY0NsYW1wZWQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgQy5EZWZhdWx0Q29udGV4dC5fdHJhcHMsCisgICAgICAgICAgICBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9ufEMuRGVjRGl2aXNpb25CeVplcm98Qy5EZWNPdmVyZmxvdworICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX2FuZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX3NpZ25hbF9kaWN0KHNlbGYpOgogCi0gICAgZGVmIHRlc3RfbG9naWNhbF9pbnZlcnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfaW52ZXJ0KDEwMDApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9pbnZlcnQsICcxMDAwJykKKyAgICAgICAgIyBTaWduYWxEaWN0IGNvdmVyYWdlCisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBDLkRlZmF1bHRDb250ZXh0CiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX29yKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IEMuRGl2aXNpb25CeVplcm8KKyAgICAgICAgT3ZlcmZsb3cgPSBDLk92ZXJmbG93CisgICAgICAgIFN1Ym5vcm1hbCA9IEMuU3Vibm9ybWFsCisgICAgICAgIFVuZGVyZmxvdyA9IEMuVW5kZXJmbG93CisgICAgICAgIFJvdW5kZWQgPSBDLlJvdW5kZWQKKyAgICAgICAgSW5leGFjdCA9IEMuSW5leGFjdAorICAgICAgICBDbGFtcGVkID0gQy5DbGFtcGVkCiAKLSAgICBkZWYgdGVzdF9sb2dpY2FsX3hvcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAxLCAnMScpCisgICAgICAgIERlY0NsYW1wZWQgPSBDLkRlY0NsYW1wZWQKKyAgICAgICAgRGVjSW52YWxpZE9wZXJhdGlvbiA9IEMuRGVjSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEZWNJRUVFSW52YWxpZE9wZXJhdGlvbiA9IEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb24KIAotICAgIGRlZiB0ZXN0X21heChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tYXgoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAxLCAnMicpCisgICAgICAgIGRlZiBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KHNpZ25hbCwgc2lnbmFsX2RpY3QpOgorICAgICAgICAgICAgZm9yIHNpZyBpbiBzaWduYWxfZGljdDoKKyAgICAgICAgICAgICAgICBpZiBzaWcgPT0gc2lnbmFsOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2lnbmFsX2RpY3Rbc2lnXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNpZ25hbF9kaWN0W3NpZ10pCiAKLSAgICBkZWYgdGVzdF9tYXhfbWFnKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKKyAgICAgICAgYyA9IERlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgICMgU2lnbmFsIGRpY3QgbWV0aG9kcworICAgICAgICBzZWxmLmFzc2VydFRydWUoT3ZlcmZsb3cgaW4gYy50cmFwcykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBrIGluIGMudHJhcHMua2V5cygpOgorICAgICAgICAgICAgYy50cmFwc1trXSA9IFRydWUKKyAgICAgICAgZm9yIHYgaW4gYy50cmFwcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2KQorICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgZm9yIGssIHYgaW4gYy50cmFwcy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFncy5nZXQoT3ZlcmZsb3cpKQorICAgICAgICBzZWxmLmFzc2VydElzKGMuZmxhZ3MuZ2V0KCJ4IiksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncy5nZXQoIngiLCAieSIpLCAieSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbGFncy5nZXQsICJ4IiwgInkiLCAieiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYy5mbGFncyksIGxlbihjLnRyYXBzKSkKKyAgICAgICAgcyA9IHN5cy5nZXRzaXplb2YoYy5mbGFncykKKyAgICAgICAgcyA9IHN5cy5nZXRzaXplb2YoYy50cmFwcykKKyAgICAgICAgcyA9IGMuZmxhZ3MuX19yZXByX18oKQorCisgICAgICAgICMgU2V0IGZsYWdzL3RyYXBzLgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgYy5fZmxhZ3MgPSBEZWNDbGFtcGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0NsYW1wZWRdKQorCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBjLl90cmFwcyA9IERlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgIyBTZXQgZmxhZ3MvdHJhcHMgZnJvbSBkaWN0aW9uYXJ5LgorICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgZCA9IGMuZmxhZ3MuY29weSgpCisgICAgICAgIGRbRGl2aXNpb25CeVplcm9dID0gVHJ1ZQorICAgICAgICBjLmZsYWdzID0gZAorICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KERpdmlzaW9uQnlaZXJvLCBjLmZsYWdzKQogCi0gICAgZGVmIHRlc3RfbWluKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm1pbihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW4sIDEsICcyJykKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGQgPSBjLnRyYXBzLmNvcHkoKQorICAgICAgICBkW1VuZGVyZmxvd10gPSBUcnVlCisgICAgICAgIGMudHJhcHMgPSBkCisgICAgICAgIGFzc2VydElzRXhjbHVzaXZlbHlTZXQoVW5kZXJmbG93LCBjLnRyYXBzKQogCi0gICAgZGVmIHRlc3RfbWluX21hZyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW5fbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW5fbWFnLCAxLCAnMicpCisgICAgICAgICMgUmFuZG9tIGNvbnN0cnVjdG9ycworICAgICAgICBJbnRTaWduYWxzID0geworICAgICAgICAgIENsYW1wZWQ6IEMuRGVjQ2xhbXBlZCwKKyAgICAgICAgICBSb3VuZGVkOiBDLkRlY1JvdW5kZWQsCisgICAgICAgICAgSW5leGFjdDogQy5EZWNJbmV4YWN0LAorICAgICAgICAgIFN1Ym5vcm1hbDogQy5EZWNTdWJub3JtYWwsCisgICAgICAgICAgVW5kZXJmbG93OiBDLkRlY1VuZGVyZmxvdywKKyAgICAgICAgICBPdmVyZmxvdzogQy5EZWNPdmVyZmxvdywKKyAgICAgICAgICBEaXZpc2lvbkJ5WmVybzogQy5EZWNEaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICBJbnZhbGlkT3BlcmF0aW9uOiBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIH0KKyAgICAgICAgSW50Q29uZCA9IFsKKyAgICAgICAgICBDLkRlY0RpdmlzaW9uSW1wb3NzaWJsZSwgQy5EZWNEaXZpc2lvblVuZGVmaW5lZCwgQy5EZWNGcHVFcnJvciwKKyAgICAgICAgICBDLkRlY0ludmFsaWRDb250ZXh0LCBDLkRlY0ludmFsaWRPcGVyYXRpb24sIEMuRGVjTWFsbG9jRXJyb3IsCisgICAgICAgICAgQy5EZWNDb252ZXJzaW9uU3ludGF4LAorICAgICAgICBdCiAKLSAgICBkZWYgdGVzdF9taW51cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW51cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbnVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbnVzLCAnMTAnKQorICAgICAgICBsaW0gPSBsZW4oT3JkZXJlZFNpZ25hbHNbQ10pCisgICAgICAgIGZvciByIGluIHJhbmdlKGxpbSk6CisgICAgICAgICAgICBmb3IgdCBpbiByYW5nZShsaW0pOgorICAgICAgICAgICAgICAgIGZvciByb3VuZCBpbiBSb3VuZGluZ01vZGVzW0NdOgorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJhbmRvbS5zYW1wbGUoT3JkZXJlZFNpZ25hbHNbQ10sIHIpCisgICAgICAgICAgICAgICAgICAgIHRyYXBzID0gcmFuZG9tLnNhbXBsZShPcmRlcmVkU2lnbmFsc1tDXSwgdCkKKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwMDApCisgICAgICAgICAgICAgICAgICAgIGVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC0xMDAwMCwgMCkKKyAgICAgICAgICAgICAgICAgICAgZW1heCA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTAwMDApCisgICAgICAgICAgICAgICAgICAgIGNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjYXBzID0gcmFuZG9tLnJhbmRyYW5nZSgwLCAyKQorICAgICAgICAgICAgICAgICAgICBjciA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMikKKyAgICAgICAgICAgICAgICAgICAgYyA9IENvbnRleHQocHJlYz1wcmVjLCByb3VuZGluZz1yb3VuZCwgRW1pbj1lbWluLCBFbWF4PWVtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPWNhcHMsIGNsYW1wPWNsYW1wLCBmbGFncz1saXN0KGZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcHM9bGlzdCh0cmFwcykpCiAKLSAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tdWx0aXBseShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubXVsdGlwbHksICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAxLCAnMicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBwcmVjKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucm91bmRpbmcsIHJvdW5kKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgZW1pbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIGVtYXgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jYXBpdGFscywgY2FwcykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCBjbGFtcCkKIAotICAgIGRlZiB0ZXN0X25leHRfbWludXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF9taW51cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfbWludXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9taW51cywgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9mbGFncywgZikKIAotICAgIGRlZiB0ZXN0X25leHRfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5uZXh0X3BsdXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3BsdXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9wbHVzLCAnMTAnKQorICAgICAgICAgICAgICAgICAgICBmID0gMAorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiB0cmFwczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYgfD0gSW50U2lnbmFsc1t4XQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX3RyYXBzLCBmKQogCi0gICAgZGVmIHRlc3RfbmV4dF90b3dhcmQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfdG93YXJkLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgMSwgJzInKQorICAgICAgICBmb3IgY29uZCBpbiBJbnRDb25kOgorICAgICAgICAgICAgYy5fZmxhZ3MgPSBjb25kCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5fZmxhZ3MmRGVjSUVFRUludmFsaWRPcGVyYXRpb24pCisgICAgICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KEludmFsaWRPcGVyYXRpb24sIGMuZmxhZ3MpCiAKLSAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubm9ybWFsaXplKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubm9ybWFsaXplKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5vcm1hbGl6ZSwgJzEwJykKKyAgICAgICAgZm9yIGNvbmQgaW4gSW50Q29uZDoKKyAgICAgICAgICAgIGMuX3RyYXBzID0gY29uZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuX3RyYXBzJkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChJbnZhbGlkT3BlcmF0aW9uLCBjLnRyYXBzKQogCi0gICAgZGVmIHRlc3RfbnVtYmVyX2NsYXNzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKKyAgICBkZWYgdGVzdF9pbnZhbGlkX292ZXJyaWRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCiAKLSAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCA0LCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIERlY2ltYWwoNCksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoMSwgNCwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihEZWNpbWFsKDEpLCBEZWNpbWFsKDQpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAnMScsIDQsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgMSwgJzQnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsIDQsICcyJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBsb2NhbGUgaW1wb3J0IENIQVJfTUFYCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgZGVmIHRlc3RfcGx1cyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wbHVzLCAnMTAnKQorICAgICAgICBkZWYgbWFrZV9ncm91cGluZyhsc3QpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocih4KSBmb3IgeCBpbiBsc3RdKQogCi0gICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucXVhbnRpemUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnF1YW50aXplLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgMSwgJzInKQorICAgICAgICBkZWYgZ2V0X2ZtdCh4LCBvdmVycmlkZT1Ob25lLCBmbXQ9J24nKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHgpLl9fZm9ybWF0X18oZm10LCBvdmVycmlkZSkKIAotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyLCAxLCAnMicpCisgICAgICAgIGludmFsaWRfZ3JvdXBpbmcgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMjU1LCAyNTUsIDBdKSwKKyAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICcsJworICAgICAgICB9CisgICAgICAgIGludmFsaWRfZG90ID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJ3h4eHh4JywKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX3NlcCA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcuJywKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAneXl5eXknCisgICAgICAgIH0KIAotICAgIGRlZiB0ZXN0X3JlbWFpbmRlcl9uZWFyKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKKyAgICAgICAgaWYgQ0hBUl9NQVggPT0gMTI3OiAjIG5lZ2F0aXZlIGdyb3VwaW5nIGluIG92ZXJyaWRlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfZ3JvdXBpbmcsICdnJykKIAotICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yb3RhdGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdGF0ZSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucm90YXRlLCAxLCAnMicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9mbXQsIDEyMzQ1LCBpbnZhbGlkX2RvdCwgJ2cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwgaW52YWxpZF9zZXAsICdnJykKIAotICAgIGRlZiB0ZXN0X3NxcnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc3FydChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNxcnQoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3FydCwgJzEwJykKKyAgICBkZWYgdGVzdF9leGFjdF9jb252ZXJzaW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KIAotICAgIGRlZiB0ZXN0X3NhbWVfcXVhbnR1bShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bShEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNhbWVfcXVhbnR1bSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCAxLCAnMicpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKIAotICAgIGRlZiB0ZXN0X3NjYWxlYihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zY2FsZWIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAxLCAnMicpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQogCi0gICAgZGVmIHRlc3Rfc2hpZnQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2hpZnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgMSwgJzInKQorICAgICAgICAgICAgIyBDbGFtcGVkCisgICAgICAgICAgICB4ID0gIjBlJWQiICUgc3lzLm1heHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3VidHJhY3QsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAxLCAnMicpCisgICAgICAgICAgICB4ID0gIjBlJWQiICUgKC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX2VuZ19zdHJpbmcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9fZW5nX3N0cmluZyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2VuZ19zdHJpbmcoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fZW5nX3N0cmluZywgJzEwJykKKyAgICAgICAgICAgICMgT3ZlcmZsb3cKKyAgICAgICAgICAgIHggPSAiMWUlZCIgJSBzeXMubWF4c2l6ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX3NjaV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9fc2NpX3N0cmluZyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX3NjaV9zdHJpbmcoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9fc2NpX3N0cmluZywgJzEwJykKKyAgICAgICAgICAgICMgVW5kZXJmbG93CisgICAgICAgICAgICB4ID0gIjFlJWQiICUgKC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX2V4YWN0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfZXhhY3QoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisgICAgZGVmIHRlc3RfZnJvbV90dXBsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdwogCi0gICAgZGVmIHRlc3RfdG9faW50ZWdyYWxfdmFsdWUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF92YWx1ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgogCi1jbGFzcyBXaXRoU3RhdGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBDYW4ndCBkbyB0aGVzZSBhcyBkb2NzdHJpbmdzIHVudGlsIFB5dGhvbiAyLjYKLSAgICAjIGFzIGRvY3Rlc3QgY2FuJ3QgaGFuZGxlIF9fZnV0dXJlX18gc3RhdGVtZW50cworICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbT3ZlcmZsb3ddID0gVHJ1ZQorICAgICAgICAgICAgYy50cmFwc1tVbmRlcmZsb3ddID0gVHJ1ZQogCi0gICAgZGVmIHRlc3RfbG9jYWxjb250ZXh0KHNlbGYpOgotICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgY29udGV4dCBpbiB0aGUgYmxvY2sKLSAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBlbnRlcl9jdHg6Ci0gICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQotICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisgICAgICAgICAgICAjIFNTSVpFX01BWAorICAgICAgICAgICAgeCA9ICgxLCAoKSwgc3lzLm1heHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNyZWF0ZV9kZWNpbWFsKHgpKSwgJy0wRSs5OTk5OTknKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dGFyZyhzZWxmKToKLSAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIHRoZSBibG9jawotICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChwcmVjPTQyKQotICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBlbnRlcl9jdHg6Ci0gICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldF9jdHgucHJlYywgbmV3X2N0eC5wcmVjLCAnZGlkIG5vdCBzZXQgY29ycmVjdCBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuZXdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisgICAgICAgICAgICB4ID0gKDEsICgwLCAxLCAyKSwgc3lzLm1heHNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywgYy5jcmVhdGVfZGVjaW1hbCwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLWNsYXNzIENvbnRleHRGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZmxhZ3NfaXJyZWxldmFudChzZWxmKToKLSAgICAgICAgIyBjaGVjayB0aGF0IHRoZSByZXN1bHQgKG51bWVyaWMgcmVzdWx0ICsgZmxhZ3MgcmFpc2VkKSBvZiBhbgotICAgICAgICAjIGFyaXRobWV0aWMgb3BlcmF0aW9uIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBjdXJyZW50IGZsYWdzCisgICAgICAgICAgICAjIFNTSVpFX01JTgorICAgICAgICAgICAgeCA9ICgxLCAoKSwgLXN5cy5tYXhzaXplLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjLmNyZWF0ZV9kZWNpbWFsKHgpKSwgJy0wRS0xMDAwMDI2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz05LCBFbWluID0gLTk5OTk5OTk5OSwgRW1heCA9IDk5OTk5OTk5OSwKLSAgICAgICAgICAgICAgICAgICAgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1bXSwgZmxhZ3M9W10pCisgICAgICAgICAgICB4ID0gKDEsICgwLCAxLCAyKSwgLXN5cy5tYXhzaXplLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmRlcmZsb3csIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgICAgICMgb3BlcmF0aW9ucyB0aGF0IHJhaXNlIHZhcmlvdXMgZmxhZ3MsIGluIHRoZSBmb3JtIChmdW5jdGlvbiwgYXJnbGlzdCkKLSAgICAgICAgb3BlcmF0aW9ucyA9IFsKLSAgICAgICAgICAgIChjb250ZXh0Ll9hcHBseSwgW0RlY2ltYWwoIjEwMEUtMTAwMDAwMDAwOSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5zcXJ0LCBbRGVjaW1hbCgyKV0pLAotICAgICAgICAgICAgKGNvbnRleHQuYWRkLCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIChjb250ZXh0Lm11bHRpcGx5LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIChjb250ZXh0LnN1YnRyYWN0LCBbRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLCBEZWNpbWFsKCI5Ljg3NjU0MzIxIildKSwKLSAgICAgICAgICAgIF0KKyAgICAgICAgICAgICMgT3ZlcmZsb3dFcnJvcgorICAgICAgICAgICAgeCA9ICgxLCAoKSwgc3lzLm1heHNpemUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsLCB4KQogCi0gICAgICAgICMgdHJ5IHZhcmlvdXMgZmxhZ3MgaW5kaXZpZHVhbGx5LCB0aGVuIGEgd2hvbGUgbG90IGF0IG9uY2UKLSAgICAgICAgZmxhZ3NldHMgPSBbW0luZXhhY3RdLCBbUm91bmRlZF0sIFtVbmRlcmZsb3ddLCBbQ2xhbXBlZF0sIFtTdWJub3JtYWxdLAotICAgICAgICAgICAgICAgICAgICBbSW5leGFjdCwgUm91bmRlZCwgVW5kZXJmbG93LCBDbGFtcGVkLCBTdWJub3JtYWxdXQorICAgICAgICAgICAgeCA9ICgxLCAoKSwgLXN5cy5tYXhzaXplLTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCwgeCkKIAotICAgICAgICBmb3IgZm4sIGFyZ3MgaW4gb3BlcmF0aW9uczoKLSAgICAgICAgICAgICMgZmluZCBhbnN3ZXIgYW5kIGZsYWdzIHJhaXNlZCB1c2luZyBhIGNsZWFuIGNvbnRleHQKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICAgICAgYW5zID0gZm4oKmFyZ3MpCi0gICAgICAgICAgICBmbGFncyA9IFtrIGZvciBrLCB2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICAgICAgIyBTcGVjaWFscworICAgICAgICAgICAgeCA9ICgxLCAoKSwgIk4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCh4KSksICctc05hTicpCisgICAgICAgICAgICB4ID0gKDEsICgwLCksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4nKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4xJykKIAotICAgICAgICAgICAgZm9yIGV4dHJhX2ZsYWdzIGluIGZsYWdzZXRzOgotICAgICAgICAgICAgICAgICMgc2V0IGZsYWdzLCBiZWZvcmUgY2FsbGluZyBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoZmxhZykKLSAgICAgICAgICAgICAgICBuZXdfYW5zID0gZm4oKmFyZ3MpCiAKLSAgICAgICAgICAgICAgICAjIGZsYWdzIHRoYXQgd2UgZXhwZWN0IHRvIGJlIHNldCBhZnRlciB0aGUgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmxhZ3MgPSBsaXN0KGZsYWdzKQotICAgICAgICAgICAgICAgIGZvciBmbGFnIGluIGV4dHJhX2ZsYWdzOgotICAgICAgICAgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiBleHBlY3RlZF9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLmFwcGVuZChmbGFnKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzLnNvcnQoa2V5PWlkKQorYWxsX3Rlc3RzID0gWworICBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0LCBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKKyAgQ0ltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCisgIENGb3JtYXRUZXN0LCAgICAgICAgICAgICAgIFB5Rm9ybWF0VGVzdCwKKyAgQ0FyaXRobWV0aWNPcGVyYXRvcnNUZXN0LCAgUHlBcml0aG1ldGljT3BlcmF0b3JzVGVzdCwKKyAgQ1RocmVhZGluZ1Rlc3QsICAgICAgICAgICAgUHlUaHJlYWRpbmdUZXN0LAorICBDVXNhYmlsaXR5VGVzdCwgICAgICAgICAgICBQeVVzYWJpbGl0eVRlc3QsCisgIENQeXRob25BUEl0ZXN0cywgICAgICAgICAgIFB5UHl0aG9uQVBJdGVzdHMsCisgIENDb250ZXh0QVBJdGVzdHMsICAgICAgICAgIFB5Q29udGV4dEFQSXRlc3RzLAorICBDQ29udGV4dFdpdGhTdGF0ZW1lbnQsICAgICBQeUNvbnRleHRXaXRoU3RhdGVtZW50LAorICBDQ29udGV4dEZsYWdzLCAgICAgICAgICAgICBQeUNvbnRleHRGbGFncywKKyAgQ1NwZWNpYWxDb250ZXh0cywgICAgICAgICAgUHlTcGVjaWFsQ29udGV4dHMsCisgIENDb250ZXh0SW5wdXRWYWxpZGF0aW9uLCAgIFB5Q29udGV4dElucHV0VmFsaWRhdGlvbiwKKyAgQ0NvbnRleHRTdWJjbGFzc2luZywgICAgICAgUHlDb250ZXh0U3ViY2xhc3NpbmcsCisgIENDb3ZlcmFnZSwgICAgICAgICAgICAgICAgIFB5Q292ZXJhZ2UsCisgIENGdW5jdGlvbmFsaXR5LCAgICAgICAgICAgIFB5RnVuY3Rpb25hbGl0eSwKKyAgQ1doaXRlYm94LCAgICAgICAgICAgICAgICAgUHlXaGl0ZWJveCwKKyAgQ0lCTVRlc3RDYXNlcywgICAgICAgICAgICAgUHlJQk1UZXN0Q2FzZXMsCitdCiAKLSAgICAgICAgICAgICAgICAjIGZsYWdzIHdlIGFjdHVhbGx5IGdvdAotICAgICAgICAgICAgICAgIG5ld19mbGFncyA9IFtrIGZvciBrLHYgaW4gY29udGV4dC5mbGFncy5pdGVtcygpIGlmIHZdCi0gICAgICAgICAgICAgICAgbmV3X2ZsYWdzLnNvcnQoa2V5PWlkKQorIyBEZWxldGUgQyB0ZXN0cyBpZiBfZGVjaW1hbC5zbyBpcyBub3QgcHJlc2VudC4KK2lmIG5vdCBDOgorICAgIGFsbF90ZXN0cyA9IGFsbF90ZXN0c1sxOjoyXQorZWxzZToKKyAgICBhbGxfdGVzdHMuaW5zZXJ0KDAsIENoZWNrQXR0cmlidXRlcykKIAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBuZXdfYW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBwcm9kdWNlcyBkaWZmZXJlbnQgYW5zd2VycyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzLiIgJSAoYW5zLCBuZXdfYW5zKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19mbGFncywgZXhwZWN0ZWRfZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiByYWlzZXMgZGlmZmVyZW50IGZsYWdzIGRlcGVuZGluZyBvbiBmbGFncyBzZXQ6ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlcywgZ290ICVzIiAlIChleHBlY3RlZF9mbGFncywgbmV3X2ZsYWdzKSkKIAogZGVmIHRlc3RfbWFpbihhcml0aD1GYWxzZSwgdmVyYm9zZT1Ob25lLCB0b2RvX3Rlc3RzPU5vbmUsIGRlYnVnPU5vbmUpOgogICAgICIiIiBFeGVjdXRlIHRoZSB0ZXN0cy4KQEAgLTIzNzQsMjcgKzUwODEsMTYgQEAKICAgICBpcyBlbmFibGVkIGluIHJlZ3J0ZXN0LnB5CiAgICAgIiIiCiAKLSAgICBpbml0KCkKKyAgICBpbml0KEMpCisgICAgaW5pdChQKQogICAgIGdsb2JhbCBURVNUX0FMTCwgREVCVUcKICAgICBURVNUX0FMTCA9IGFyaXRoIG9yIGlzX3Jlc291cmNlX2VuYWJsZWQoJ2RlY2ltYWwnKQogICAgIERFQlVHID0gZGVidWcKIAogICAgIGlmIHRvZG9fdGVzdHMgaXMgTm9uZToKLSAgICAgICAgdGVzdF9jbGFzc2VzID0gWwotICAgICAgICAgICAgRGVjaW1hbEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QsCi0gICAgICAgICAgICBEZWNpbWFsRm9ybWF0VGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxVc2VPZkNvbnRleHRUZXN0LAotICAgICAgICAgICAgRGVjaW1hbFVzYWJpbGl0eVRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsUHl0aG9uQVBJdGVzdHMsCi0gICAgICAgICAgICBDb250ZXh0QVBJdGVzdHMsCi0gICAgICAgICAgICBEZWNpbWFsVGVzdCwKLSAgICAgICAgICAgIFdpdGhTdGF0ZW1lbnRUZXN0LAotICAgICAgICAgICAgQ29udGV4dEZsYWdzCi0gICAgICAgIF0KKyAgICAgICAgdGVzdF9jbGFzc2VzID0gYWxsX3Rlc3RzCiAgICAgZWxzZToKLSAgICAgICAgdGVzdF9jbGFzc2VzID0gW0RlY2ltYWxUZXN0XQorICAgICAgICB0ZXN0X2NsYXNzZXMgPSBbQ0lCTVRlc3RDYXNlcywgUHlJQk1UZXN0Q2FzZXNdCiAKICAgICAjIER5bmFtaWNhbGx5IGJ1aWxkIGN1c3RvbSB0ZXN0IGRlZmluaXRpb24gZm9yIGVhY2ggZmlsZSBpbiB0aGUgdGVzdAogICAgICMgZGlyZWN0b3J5IGFuZCBhZGQgdGhlIGRlZmluaXRpb25zIHRvIHRoZSBEZWNpbWFsVGVzdCBjbGFzcy4gIFRoaXMKQEAgLTI0MDYsMTcgKzUxMDIsMzIgQEAKICAgICAgICAgaWYgdG9kb190ZXN0cyBpcyBub3QgTm9uZSBhbmQgaGVhZCBub3QgaW4gdG9kb190ZXN0czoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRlc3RlciA9IGxhbWJkYSBzZWxmLCBmPWZpbGVuYW1lOiBzZWxmLmV2YWxfZmlsZShkaXJlY3RvcnkgKyBmKQotICAgICAgICBzZXRhdHRyKERlY2ltYWxUZXN0LCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQorICAgICAgICBzZXRhdHRyKENJQk1UZXN0Q2FzZXMsICd0ZXN0XycgKyBoZWFkLCB0ZXN0ZXIpCisgICAgICAgIHNldGF0dHIoUHlJQk1UZXN0Q2FzZXMsICd0ZXN0XycgKyBoZWFkLCB0ZXN0ZXIpCiAgICAgICAgIGRlbCBmaWxlbmFtZSwgaGVhZCwgdGFpbCwgdGVzdGVyCiAKIAogICAgIHRyeToKICAgICAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCiAgICAgICAgIGlmIHRvZG9fdGVzdHMgaXMgTm9uZToKLSAgICAgICAgICAgIGltcG9ydCBkZWNpbWFsIGFzIERlY2ltYWxNb2R1bGUKLSAgICAgICAgICAgIHJ1bl9kb2N0ZXN0KERlY2ltYWxNb2R1bGUsIHZlcmJvc2UpCisgICAgICAgICAgICBmcm9tIGRvY3Rlc3QgaW1wb3J0IElHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICAgICAgICBzYXZlZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKyAgICAgICAgICAgIGlmIEM6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgICAgICBydW5fZG9jdGVzdChDLCB2ZXJib3NlLCBvcHRpb25mbGFncz1JR05PUkVfRVhDRVBUSU9OX0RFVEFJTCkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICBydW5fZG9jdGVzdChQLCB2ZXJib3NlKQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCiAgICAgZmluYWxseToKLSAgICAgICAgc2V0Y29udGV4dChPUklHSU5BTF9DT05URVhUKQorICAgICAgICBpZiBDOiBDLnNldGNvbnRleHQoT1JJR0lOQUxfQ09OVEVYVFtDXSkKKyAgICAgICAgUC5zZXRjb250ZXh0KE9SSUdJTkFMX0NPTlRFWFRbUF0pCisgICAgICAgIGlmIG5vdCBDOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybignQyB0ZXN0cyBza2lwcGVkOiBubyBtb2R1bGUgbmFtZWQgX2RlY2ltYWwuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcpCisgICAgICAgIGlmIG5vdCBvcmlnX3N5c19kZWNpbWFsIGlzIHN5cy5tb2R1bGVzWydkZWNpbWFsJ106CisgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCJJbnRlcm5hbCBlcnJvcjogdW5iYWxhbmNlZCBudW1iZXIgb2YgY2hhbmdlcyB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlc1snZGVjaW1hbCddLiIpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgb3B0cGFyc2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IGYwYWZlMWQuLmE4NDg3ZDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtNDcyLDYgKzQ3MiwxOSBAQAogIyMgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKICMjICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZVstMV0pKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVxdWUocmFuZ2UoMjAwKSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgbGlzdChkYXRhKVsxOl0pCisKICAgICBkZWYgdGVzdF9kZWVwY29weShzZWxmKToKICAgICAgICAgbXV0ID0gWzEwXQogICAgICAgICBkID0gZGVxdWUoW211dF0pCkBAIC01MjQsNyArNTM3LDcgQEAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6CiAgICAgICAgIEJMT0NLTEVOID0gNjIKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRQbFAnKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJQNG5sUCcpCiAgICAgICAgIGJsb2Nrc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnMlAlZFAnICUgQkxPQ0tMRU4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oZGVxdWUoKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQppbmRleCBjZGFmN2QyLi4wNzlmNjBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKQEAgLTY1NCwxOSArNjU0LDE5IEBACiAgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPUFNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBCKG1ldGFjbGFzcz1CTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgQk1ldGEuX19uZXdfXyBjYWxscyBBTWV0YS5fX25ld19fIHdpdGggc3VwZXI6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQyhBLCBCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBCTWV0YToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgIyBCTWV0YS5fX3ByZXBhcmVfXyBzaG91bGQndmUgYmVlbiBjYWxsZWQ6CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQy5fX2RpY3RfXykKIApAQCAtNjc0LDIwICs2NzQsMjAgQEAKICAgICAgICAgY2xhc3MgQzIoQiwgQSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQzIuX19kaWN0X18pCiAKICAgICAgICAgIyBDaGVjayBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbiB3aGVuIGEgbWV0YWNsYXNzIGlzIGRlY2xhcmVkOgogICAgICAgICBjbGFzcyBEKEMsIG1ldGFjbGFzcz10eXBlKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBELl9fZGljdF9fKQogCiAgICAgICAgIGNsYXNzIEUoQywgbWV0YWNsYXNzPUFNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JNZXRhJywgJ0FNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk1ldGFfd2FzX2hlcmUnLCBFLl9fZGljdF9fKQogCiAgICAgICAgICMgU3BlY2lhbCBjYXNlOiB0aGUgZ2l2ZW4gbWV0YWNsYXNzIGlzbid0IGEgY2xhc3MsCkBAIC03MjksMzMgKzcyOSwzMyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEFOb3RNZXRhLCB0eXBlKEEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEIobWV0YWNsYXNzPUJOb3RNZXRhKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShCKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBDKEEsIEIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEMyKEIsIEEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEMyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICAjIFRoaXMgaXMgYSBUeXBlRXJyb3IsIGJlY2F1c2Ugb2YgYSBtZXRhY2xhc3MgY29uZmxpY3Q6CiAgICAgICAgICMgQk5vdE1ldGEgaXMgbmVpdGhlciBhIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIHR5cGUKQEAgLTc2NywyNSArNzY3LDI1IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgRihvYmplY3QoKSwgQyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoRikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgRjIoQywgb2JqZWN0KCkpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICAjIFR5cGVFcnJvcjogQk5vdE1ldGEgaXMgbmVpdGhlciBhCiAgICAgICAgICMgc3ViY2xhc3MsIG5vciBhIHN1cGVyY2xhc3Mgb2YgaW50CkBAIC0xNDQ0LDYgKzE0NDQsMTQgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiY2xhc3NtZXRob2Qgc2hvdWxkbid0IGFjY2VwdCBrZXl3b3JkIGFyZ3MiKQogCisgICAgICAgIGNtID0gY2xhc3NtZXRob2QoZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5fX2RpY3RfXywge30pCisgICAgICAgIGNtLnggPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLngsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLl9fZGljdF9fLCB7IngiIDogNDJ9KQorICAgICAgICBkZWwgY20ueAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY20sICJ4IikpCisKICAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3RfY2xhc3NtZXRob2RzX2luX2Moc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBDLWJhc2VkIGNsYXNzIG1ldGhvZHMuLi4KQEAgLTE0OTEsNiArMTQ5OSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZ29vKDEpLCAoMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZm9vKDEpLCAoZCwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oZCwgMSksIChkLCAxKSkKKyAgICAgICAgc20gPSBzdGF0aWNtZXRob2QoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS5fX2RpY3RfXywge30pCisgICAgICAgIHNtLnggPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtLngsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtLl9fZGljdF9fLCB7IngiIDogNDJ9KQorICAgICAgICBkZWwgc20ueAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoc20sICJ4IikpCiAKICAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3Rfc3RhdGljbWV0aG9kc19pbl9jKHNlbGYpOgpAQCAtMTc3MSw2ICsxNzg2LDcgQEAKICAgICAgICAgICAgICgiX19mb3JtYXRfXyIsIGZvcm1hdCwgZm9ybWF0X2ltcGwsIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fZmxvb3JfXyIsIG1hdGguZmxvb3IsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fdHJ1bmNfXyIsIG1hdGgudHJ1bmMsIHplcm8sIHNldCgpLCB7fSksCisgICAgICAgICAgICAoIl9fdHJ1bmNfXyIsIGludCwgemVybywgc2V0KCksIHt9KSwKICAgICAgICAgICAgICgiX19jZWlsX18iLCBtYXRoLmNlaWwsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fZGlyX18iLCBkaXIsIGVtcHR5X3NlcSwgc2V0KCksIHt9KSwKICAgICAgICAgICAgIF0KQEAgLTE4MTYsMTIgKzE4MzIsNyBAQAogICAgICAgICAgICAgZm9yIGF0dHIsIG9iaiBpbiBlbnYuaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZXRhdHRyKFgsIGF0dHIsIG9iaikKICAgICAgICAgICAgIHNldGF0dHIoWCwgbmFtZSwgRXJyRGVzY3IoKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBydW5uZXIoWCgpKQotICAgICAgICAgICAgZXhjZXB0IE15RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJ7MCFyfSBkaWRuJ3QgcmFpc2UiLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXhjZXB0aW9uLCBydW5uZXIsIFgoKSkKIAogICAgIGRlZiB0ZXN0X3NwZWNpYWxzKHNlbGYpOgogICAgICAgICAjIFRlc3Rpbmcgc3BlY2lhbCBvcGVyYXRvcnMuLi4KQEAgLTIyNTgsOSArMjI2OSw2IEBACiAgICAgICAgICMgVHdvIGVzc2VudGlhbGx5IGZlYXR1cmVsZXNzIG9iamVjdHMsIGp1c3QgaW5oZXJpdGluZyBzdHVmZiBmcm9tCiAgICAgICAgICMgb2JqZWN0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihOb3RJbXBsZW1lbnRlZCksIGRpcihFbGxpcHNpcykpCi0gICAgICAgIGlmIHN1cHBvcnQuY2hlY2tfaW1wbF9kZXRhaWwoKToKLSAgICAgICAgICAgICMgTm9uZSBkaWZmZXJzIGluIFB5UHk6IGl0IGhhcyBhIF9fbm9uemVyb19fCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihOb25lKSwgZGlyKEVsbGlwc2lzKSkKIAogICAgICAgICAjIE5hc3R5IHRlc3QgY2FzZSBmb3IgcHJveGllZCBvYmplY3RzCiAgICAgICAgIGNsYXNzIFdyYXBwZXIob2JqZWN0KToKQEAgLTQ0NTYsNiArNDQ2NCw1NCBAQAogICAgICAgICB4LnkgPSA0MgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhbInkiXSwgNDIpCiAKKyAgICBkZWYgdGVzdF9zbG90X3NoYWRvd3NfY2xhc3NfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgICAgIF9fc2xvdHNfXyA9IFsiZm9vIl0KKyAgICAgICAgICAgICAgICBmb28gPSBOb25lCisgICAgICAgIG0gPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCInZm9vJyBpbiBfX3Nsb3RzX18gY29uZmxpY3RzIHdpdGggY2xhc3MgdmFyaWFibGUiLCBtKQorCisgICAgZGVmIHRlc3Rfc2V0X2RvYyhzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgICJlbGVwaGFudCIKKyAgICAgICAgWC5fX2RvY19fID0gImJhbmFuYSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLl9fZG9jX18sICJiYW5hbmEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICB0eXBlKGxpc3QpLl9fZGljdF9fWyJfX2RvY19fIl0uX19zZXRfXyhsaXN0LCAiYmxhaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbid0IHNldCBsaXN0Ll9fZG9jX18iLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHlwZShYKS5fX2RpY3RfX1siX19kb2NfXyJdLl9fZGVsZXRlX18oWCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiY2FuJ3QgZGVsZXRlIFguX19kb2NfXyIsIHN0cihjbS5leGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguX19kb2NfXywgImJhbmFuYSIpCisKKyAgICBkZWYgdGVzdF9xdWFsbmFtZShzZWxmKToKKyAgICAgICAgZGVzY3JpcHRvcnMgPSBbc3RyLmxvd2VyLCBjb21wbGV4LnJlYWwsIGZsb2F0LnJlYWwsIGludC5fX2FkZF9fXQorICAgICAgICB0eXBlcyA9IFsnbWV0aG9kJywgJ21lbWJlcicsICdnZXRzZXQnLCAnd3JhcHBlciddCisKKyAgICAgICAgIyBtYWtlIHN1cmUgd2UgaGF2ZSBhbiBleGFtcGxlIG9mIGVhY2ggdHlwZSBvZiBkZXNjcmlwdG9yCisgICAgICAgIGZvciBkLCBuIGluIHppcChkZXNjcmlwdG9ycywgdHlwZXMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGQpLl9fbmFtZV9fLCBuICsgJ19kZXNjcmlwdG9yJykKKworICAgICAgICBmb3IgZCBpbiBkZXNjcmlwdG9yczoKKyAgICAgICAgICAgIHF1YWxuYW1lID0gZC5fX29iamNsYXNzX18uX19xdWFsbmFtZV9fICsgJy4nICsgZC5fX25hbWVfXworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLl9fcXVhbG5hbWVfXywgcXVhbG5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIubG93ZXIuX19xdWFsbmFtZV9fLCAnc3RyLmxvd2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4LnJlYWwuX19xdWFsbmFtZV9fLCAnY29tcGxleC5yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdC5yZWFsLl9fcXVhbG5hbWVfXywgJ2Zsb2F0LnJlYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludC5fX2FkZF9fLl9fcXVhbG5hbWVfXywgJ2ludC5fX2FkZF9fJykKKworICAgIGRlZiB0ZXN0X3F1YWxuYW1lX2RpY3Qoc2VsZik6CisgICAgICAgIG5zID0geydfX3F1YWxuYW1lX18nOiAnc29tZS5uYW1lJ30KKyAgICAgICAgdHAgPSB0eXBlKCdGb28nLCAoKSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuX19xdWFsbmFtZV9fLCAnc29tZS5uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cC5fX2RpY3RfX1snX19xdWFsbmFtZV9fJ10sICdzb21lLm5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLCB7J19fcXVhbG5hbWVfXyc6ICdzb21lLm5hbWUnfSkKKworICAgICAgICBucyA9IHsnX19xdWFsbmFtZV9fJzogMX0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0eXBlLCAnRm9vJywgKCksIG5zKQorCiAgICAgZGVmIHRlc3RfY3ljbGVfdGhyb3VnaF9kaWN0KHNlbGYpOgogICAgICAgICAjIFNlZSBidWcgIzE0Njk2MjkKICAgICAgICAgY2xhc3MgWChkaWN0KToKQEAgLTQ0NzEsNiArNDUyNywyNyBAQAogICAgICAgICBmb3IgbyBpbiBnYy5nZXRfb2JqZWN0cygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0eXBlKG8pLCBYKQogCisgICAgZGVmIHRlc3Rfb2JqZWN0X25ld19hbmRfaW5pdF93aXRoX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNjgzMzY4CisgICAgICAgIGNsYXNzIE92ZXJyaWRlTmVpdGhlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPdmVycmlkZU5laXRoZXIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3ZlcnJpZGVOZWl0aGVyLCBrdz0xKQorICAgICAgICBjbGFzcyBPdmVycmlkZU5ldzoKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgZm9vLCBrdz0wLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorICAgICAgICBjbGFzcyBPdmVycmlkZUluaXQ6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vLCBrdz0wLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBjbGFzcyBPdmVycmlkZUJvdGgoT3ZlcnJpZGVOZXcsIE92ZXJyaWRlSW5pdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBjYXNlIGluIE92ZXJyaWRlTmV3LCBPdmVycmlkZUluaXQsIE92ZXJyaWRlQm90aDoKKyAgICAgICAgICAgIGNhc2UoMSkKKyAgICAgICAgICAgIGNhc2UoMSwga3c9MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2FzZSwgMSwgMiwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY2FzZSwgMSwgMiwgZm9vPTMpCisKKwogY2xhc3MgRGljdFByb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDQ3OCw2ICs0NTU1LDggQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuQyA9IEMKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl9rZXlzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgZGljdC1wcm94eSBrZXlzLi4uCiAgICAgICAgIGl0ID0gc2VsZi5DLl9fZGljdF9fLmtleXMoKQpAQCAtNDQ4NSwxNSArNDU2NCwxOSBAQAogICAgICAgICBrZXlzID0gbGlzdChpdCkKICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBbJ19fZGljdF9fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsCi0gICAgICAgICAgICAnX193ZWFrcmVmX18nLCAnbWV0aCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19xdWFsbmFtZV9fJywgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxfXycpCiAgICAgZGVmIHRlc3RfaXRlcl92YWx1ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IHZhbHVlcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy52YWx1ZXMoKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaXQsIGxpc3QpCiAgICAgICAgIHZhbHVlcyA9IGxpc3QoaXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlcyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlcyksIDYpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2FsX18nKQogICAgIGRlZiB0ZXN0X2l0ZXJfaXRlbXMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBkaWN0LXByb3h5IGl0ZXJpdGVtcy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpCkBAIC00NTAxLDcgKzQ1ODQsNyBAQAogICAgICAgICBrZXlzID0gW2l0ZW1bMF0gZm9yIGl0ZW0gaW4gaXRdCiAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgWydfX2RpY3RfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLAotICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcXVhbG5hbWVfXycsICdfX3dlYWtyZWZfXycsICdtZXRoJ10pCiAKICAgICBkZWYgdGVzdF9kaWN0X3R5cGVfd2l0aF9tZXRhY2xhc3Moc2VsZik6CiAgICAgICAgICMgVGVzdGluZyB0eXBlIG9mIF9fZGljdF9fIHdoZW4gbWV0YWNsYXNzIHNldC4uLgpAQCAtNDUxNSwxOSArNDU5OCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoQy5fX2RpY3RfXyksIHR5cGUoQi5fX2RpY3RfXykpCiAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgotICAgICAgICAjIFRlc3RpbmcgZGljdF9wcm94eS5fX3JlcHJfXwotICAgICAgICBkZWYgc29ydGVkX2RpY3RfcmVwcihyZXByXyk6Ci0gICAgICAgICAgICAjIEdpdmVuIHRoZSByZXByIG9mIGEgZGljdCwgc29ydCB0aGUga2V5cwotICAgICAgICAgICAgYXNzZXJ0IHJlcHJfLnN0YXJ0c3dpdGgoJ3snKQotICAgICAgICAgICAgYXNzZXJ0IHJlcHJfLmVuZHN3aXRoKCd9JykKLSAgICAgICAgICAgIGt2cyA9IHJlcHJfWzE6LTFdLnNwbGl0KCcsICcpCi0gICAgICAgICAgICByZXR1cm4gJ3snICsgJywgJy5qb2luKHNvcnRlZChrdnMpKSArICd9JwotICAgICAgICBkaWN0XyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpfQotICAgICAgICByZXByXyA9IHJlcHIoc2VsZi5DLl9fZGljdF9fKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcl8uc3RhcnRzd2l0aCgnZGljdF9wcm94eSgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHJfLmVuZHN3aXRoKCcpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkX2RpY3RfcmVwcihyZXByX1tsZW4oJ2RpY3RfcHJveHkoJyk6LWxlbignKScpXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkX2RpY3RfcmVwcigneyFyfScuZm9ybWF0KGRpY3RfKSkpCisgICAgICAgICMgVGVzdGluZyBtYXBwaW5ncHJveHkuX19yZXByX18uCisgICAgICAgICMgV2UgY2FuJ3QgYmxpbmRseSBjb21wYXJlIHdpdGggdGhlIHJlcHIgb2YgYW5vdGhlciBkaWN0IGFzIG9yZGVyaW5nCisgICAgICAgICMgb2Yga2V5cyBhbmQgdmFsdWVzIGlzIGFyYml0cmFyeSBhbmQgbWF5IGRpZmZlci4KKyAgICAgICAgciA9IHJlcHIoc2VsZi5DLl9fZGljdF9fKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFydHN3aXRoKCdtYXBwaW5ncHJveHkoJyksIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLmVuZHN3aXRoKCcpJyksIHIpCisgICAgICAgIGZvciBrLCB2IGluIHNlbGYuQy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigneyFyfTogeyFyfScuZm9ybWF0KGssIHYpLCByKQogCiAKIGNsYXNzIFBUeXBlc0xvbmdJbml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00NTUyLDEwICs0NjMwLDM4IEBACiAgICAgICAgIHR5cGUubXJvKHR1cGxlKQogCiAKK2NsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdHlwZV9sb29rdXBfbXJvX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQxOTk6IF9QeVR5cGVfTG9va3VwKCkgaGFzIHRvIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvCisgICAgICAgICMgdGhlIHR5cGUgTVJPIGJlY2F1c2UgaXQgbWF5IGJlIG1vZGlmaWVkIGR1cmluZyB0aGUgbG9va3VwLCBpZgorICAgICAgICAjIF9fYmFzZXNfXyBpcyBzZXQgZHVyaW5nIHRoZSBsb29rdXAgZm9yIGV4YW1wbGUuCisgICAgICAgIGNsYXNzIE15S2V5KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goJ215a2V5JykKKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgWC5fX2Jhc2VzX18gPSAoQmFzZTIsKQorCisgICAgICAgIGNsYXNzIEJhc2Uob2JqZWN0KToKKyAgICAgICAgICAgIG15a2V5ID0gJ2Zyb20gQmFzZScKKyAgICAgICAgICAgIG15a2V5MiA9ICdmcm9tIEJhc2UnCisKKyAgICAgICAgY2xhc3MgQmFzZTIob2JqZWN0KToKKyAgICAgICAgICAgIG15a2V5ID0gJ2Zyb20gQmFzZTInCisgICAgICAgICAgICBteWtleTIgPSAnZnJvbSBCYXNlMicKKworICAgICAgICBYID0gdHlwZSgnWCcsIChCYXNlLCksIHtNeUtleSgpOiA1fSkKKyAgICAgICAgIyBteWtleSBpcyByZWFkIGZyb20gQmFzZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFgubXlrZXksICdmcm9tIEJhc2UnKQorICAgICAgICAjIG15a2V5MiBpcyByZWFkIGZyb20gQmFzZTIgYmVjYXVzZSBNeUtleS5fX2VxX18gaGFzIHNldCBfX2Jhc2VzX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLm15a2V5MiwgJ2Zyb20gQmFzZTInKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIFJ1biBhbGwgbG9jYWwgdGVzdCBjYXNlcywgd2l0aCBQVHlwZXNMb25nSW5pdFRlc3QgZmlyc3QuCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUFR5cGVzTG9uZ0luaXRUZXN0LCBPcGVyYXRvcnNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NQcm9wZXJ0aWVzQW5kTWV0aG9kcywgRGljdFByb3h5VGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NQcm9wZXJ0aWVzQW5kTWV0aG9kcywgRGljdFByb3h5VGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTWlzY1Rlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQppbmRleCAyZGIzZDMzLi5mNDk1ZTE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKQEAgLTE3MCw2ICsxNzAsNyBAQAogICAgICAnX19jb250YWluc19fJywKICAgICAgJ19fZGVsYXR0cl9fJywKICAgICAgJ19fZGVsaXRlbV9fJywKKyAgICAgJ19fZGlyX18nLAogICAgICAnX19kb2NfXycsCiAgICAgICdfX2VxX18nLAogICAgICAnX19mb3JtYXRfXycsCkBAIC0xOTksNiArMjAwLDggQEAKICAgICAgJ19fc3RyX18nLAogICAgICAnX19zdWJjbGFzc2hvb2tfXycsCiAgICAgICdhcHBlbmQnLAorICAgICAnY2xlYXInLAorICAgICAnY29weScsCiAgICAgICdjb3VudCcsCiAgICAgICdleHRlbmQnLAogICAgICAnaW5kZXgnLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZjRlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKQEAgLTAsMCArMSw5NCBAQAorIyBUZXN0IGNhc2UgZm9yIHRoZSBzZWxlY3QuZGV2cG9sbCgpIGZ1bmN0aW9uCisKKyMgSW5pdGlhbCB0ZXN0cyBhcmUgY29waWVkIGFzIGlzIGZyb20gInRlc3RfcG9sbC5weSIKKworaW1wb3J0IG9zLCBzZWxlY3QsIHJhbmRvbSwgdW5pdHRlc3QsIHN5cworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0CisKK3RyeToKKyAgICBzZWxlY3QuZGV2cG9sbAorZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJzZWxlY3QuZGV2cG9sbCBub3QgZGVmaW5lZCAtLSBza2lwcGluZyB0ZXN0X2RldnBvbGwiKQorCisKK2RlZiBmaW5kX3JlYWR5X21hdGNoaW5nKHJlYWR5LCBmbGFnKToKKyAgICBtYXRjaCA9IFtdCisgICAgZm9yIGZkLCBtb2RlIGluIHJlYWR5OgorICAgICAgICBpZiBtb2RlICYgZmxhZzoKKyAgICAgICAgICAgIG1hdGNoLmFwcGVuZChmZCkKKyAgICByZXR1cm4gbWF0Y2gKKworY2xhc3MgRGV2UG9sbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RldnBvbGwxKHNlbGYpOgorICAgICAgICAjIEJhc2ljIGZ1bmN0aW9uYWwgdGVzdCBvZiBwb2xsIG9iamVjdAorICAgICAgICAjIENyZWF0ZSBhIGJ1bmNoIG9mIHBpcGUgYW5kIHRlc3QgdGhhdCBwb2xsIHdvcmtzIHdpdGggdGhlbS4KKworICAgICAgICBwID0gc2VsZWN0LmRldnBvbGwoKQorCisgICAgICAgIE5VTV9QSVBFUyA9IDEyCisgICAgICAgIE1TRyA9IGIiIFRoaXMgaXMgYSB0ZXN0LiIKKyAgICAgICAgTVNHX0xFTiA9IGxlbihNU0cpCisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICB3cml0ZXJzID0gW10KKyAgICAgICAgcjJ3ID0ge30KKyAgICAgICAgdzJyID0ge30KKworICAgICAgICBmb3IgaSBpbiByYW5nZShOVU1fUElQRVMpOgorICAgICAgICAgICAgcmQsIHdyID0gb3MucGlwZSgpCisgICAgICAgICAgICBwLnJlZ2lzdGVyKHJkKQorICAgICAgICAgICAgcC5tb2RpZnkocmQsIHNlbGVjdC5QT0xMSU4pCisgICAgICAgICAgICBwLnJlZ2lzdGVyKHdyLCBzZWxlY3QuUE9MTE9VVCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHJkKQorICAgICAgICAgICAgd3JpdGVycy5hcHBlbmQod3IpCisgICAgICAgICAgICByMndbcmRdID0gd3IKKyAgICAgICAgICAgIHcyclt3cl0gPSByZAorCisgICAgICAgIGJ1ZnMgPSBbXQorCisgICAgICAgIHdoaWxlIHdyaXRlcnM6CisgICAgICAgICAgICByZWFkeSA9IHAucG9sbCgpCisgICAgICAgICAgICByZWFkeV93cml0ZXJzID0gZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgc2VsZWN0LlBPTExPVVQpCisgICAgICAgICAgICBpZiBub3QgcmVhZHlfd3JpdGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHBpcGVzIHJlYWR5IGZvciB3cml0aW5nIikKKyAgICAgICAgICAgIHdyID0gcmFuZG9tLmNob2ljZShyZWFkeV93cml0ZXJzKQorICAgICAgICAgICAgb3Mud3JpdGUod3IsIE1TRykKKworICAgICAgICAgICAgcmVhZHkgPSBwLnBvbGwoKQorICAgICAgICAgICAgcmVhZHlfcmVhZGVycyA9IGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIHNlbGVjdC5QT0xMSU4pCisgICAgICAgICAgICBpZiBub3QgcmVhZHlfcmVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHBpcGVzIHJlYWR5IGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3cyclt3cl1dLCByZWFkeV9yZWFkZXJzKQorICAgICAgICAgICAgcmQgPSByZWFkeV9yZWFkZXJzWzBdCisgICAgICAgICAgICBidWYgPSBvcy5yZWFkKHJkLCBNU0dfTEVOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYnVmKSwgTVNHX0xFTikKKyAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGJ1ZikKKyAgICAgICAgICAgIG9zLmNsb3NlKHIyd1tyZF0pIDsgb3MuY2xvc2UocmQpCisgICAgICAgICAgICBwLnVucmVnaXN0ZXIocjJ3W3JkXSkKKyAgICAgICAgICAgIHAudW5yZWdpc3RlcihyZCkKKyAgICAgICAgICAgIHdyaXRlcnMucmVtb3ZlKHIyd1tyZF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZzLCBbTVNHXSAqIE5VTV9QSVBFUykKKworICAgIGRlZiB0ZXN0X3RpbWVvdXRfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIHBvbGxzdGVyID0gc2VsZWN0LmRldnBvbGwoKQorICAgICAgICB3LCByID0gb3MucGlwZSgpCisgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKHcpCisKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgLTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvbGxzdGVyLnBvbGwsIC0xIDw8IDMxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAtMSA8PCA2NCkKKworICAgICAgICBwb2xsc3Rlci5wb2xsKDApCisgICAgICAgIHBvbGxzdGVyLnBvbGwoMSkKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgxIDw8IDMwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDMxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDYzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAxIDw8IDY0KQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KERldlBvbGxUZXN0cykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IGQyNzQwYTMuLmRkNGQ1NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTIsNyArMiw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogaW1wb3J0IGNvbGxlY3Rpb25zLCByYW5kb20sIHN0cmluZworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogaW1wb3J0IGdjLCB3ZWFrcmVmCitpbXBvcnQgcGlja2xlCiAKIAogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzE5LDYgKzMyMSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDIuaGFzaF9jb3VudCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmVxX2NvdW50ICsgaGFzaGVkMi5lcV9jb3VudCwgMSkKIAorICAgIGRlZiB0ZXN0X3NldGl0ZW1fYXRvbWljX2F0X3Jlc2l6ZShzZWxmKToKKyAgICAgICAgY2xhc3MgSGFzaGVkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5oYXNoX2NvdW50ID0gMAorICAgICAgICAgICAgICAgIHNlbGYuZXFfY291bnQgPSAwCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5oYXNoX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuZXFfY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBpZChzZWxmKSA9PSBpZChvdGhlcikKKyAgICAgICAgaGFzaGVkMSA9IEhhc2hlZCgpCisgICAgICAgICMgNSBpdGVtcworICAgICAgICB5ID0ge2hhc2hlZDE6IDUsIDA6IDAsIDE6IDEsIDI6IDIsIDM6IDN9CisgICAgICAgIGhhc2hlZDIgPSBIYXNoZWQoKQorICAgICAgICAjIDZ0aCBpdGVtIGZvcmNlcyBhIHJlc2l6ZQorICAgICAgICB5W2hhc2hlZDJdID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmhhc2hfY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMi5oYXNoX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDEuZXFfY291bnQgKyBoYXNoZWQyLmVxX2NvdW50LCAxKQorCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKICAgICAgICAgIyBkaWN0LnBvcGl0ZW0oKQogICAgICAgICBmb3IgY29weW1vZGUgaW4gLTEsICsxOgpAQCAtMzc5LDcgKzQwMiw3IEBACiAgICAgICAgIHguZmFpbCA9IFRydWUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBkLnBvcCwgeCkKIAotICAgIGRlZiB0ZXN0X211dGF0aW5naXRlcmF0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X211dGF0aW5nX2l0ZXJhdGlvbihzZWxmKToKICAgICAgICAgIyBjaGFuZ2luZyBkaWN0IHNpemUgZHVyaW5nIGl0ZXJhdGlvbgogICAgICAgICBkID0ge30KICAgICAgICAgZFsxXSA9IDEKQEAgLTM4Nyw2ICs0MTAsMzIgQEAKICAgICAgICAgICAgIGZvciBpIGluIGQ6CiAgICAgICAgICAgICAgICAgZFtpKzFdID0gMQogCisgICAgZGVmIHRlc3RfbXV0YXRpbmdfbG9va3VwKHNlbGYpOgorICAgICAgICAjIGNoYW5naW5nIGRpY3QgZHVyaW5nIGEgbG9va3VwIChpc3N1ZSAjMTQ0MTcpCisgICAgICAgIGNsYXNzIE5hc3R5S2V5OgorICAgICAgICAgICAgbXV0YXRlX2RpY3QgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAjIGhhc2ggY29sbGlzaW9uIQorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIE5hc3R5S2V5Lm11dGF0ZV9kaWN0OgorICAgICAgICAgICAgICAgICAgICBteWRpY3QsIGtleSA9IE5hc3R5S2V5Lm11dGF0ZV9kaWN0CisgICAgICAgICAgICAgICAgICAgIE5hc3R5S2V5Lm11dGF0ZV9kaWN0ID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBkZWwgbXlkaWN0W2tleV0KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZQorCisgICAgICAgIGtleTEgPSBOYXN0eUtleSgxKQorICAgICAgICBrZXkyID0gTmFzdHlLZXkoMikKKyAgICAgICAgZCA9IHtrZXkxOiAxfQorICAgICAgICBOYXN0eUtleS5tdXRhdGVfZGljdCA9IChkLCBrZXkxKQorICAgICAgICBkW2tleTJdID0gMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHtrZXkyOiAyfSkKKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZCksICd7fScpCkBAIC03NzYsNiArODI1LDc1IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3RyYWNrZWQoTXlEaWN0KCkpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICBpdCA9IGl0ZXIoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXQpLCBzb3J0ZWQoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIGRlbCBkYXRhW2Ryb3BdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgc29ydGVkKGRhdGEpKQorCisgICAgZGVmIHRlc3RfaXRlbWl0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CisgICAgICAgICMgZGljdHZpZXdzIGFyZW4ndCBwaWNrbGFibGUsIG9ubHkgdGhlaXIgaXRlcmF0b3JzCisgICAgICAgIGl0b3JnID0gaXRlcihkYXRhLml0ZW1zKCkpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgbm90ZSB0aGF0IHRoZSB0eXBlIG9mIHR5cGUgb2YgdGhlIHVucGlja2xlZCBpdGVyYXRvcgorICAgICAgICAjIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwuICBJdCBpcworICAgICAgICAjIG1lcmVseSBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgaXRlcmF0b3IgcHJvdG9jb2wsIHlpZWxkaW5nCisgICAgICAgICMgdGhlIHNhbWUgb2JqZWN0cyBhcyB0aGUgb3JpZ2luYWwgb25lLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGl0KSwgZGF0YSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZGVsIGRhdGFbZHJvcFswXV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KGl0KSwgZGF0YSkKKworICAgIGRlZiB0ZXN0X3ZhbHVlc2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CisgICAgICAgICMgZGF0YS52YWx1ZXMoKSBpc24ndCBwaWNrbGFibGUsIG9ubHkgaXRzIGl0ZXJhdG9yCisgICAgICAgIGl0ID0gaXRlcihkYXRhLnZhbHVlcygpKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChsaXN0KGl0KSksIHNvcnRlZChsaXN0KGRhdGEudmFsdWVzKCkpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkcm9wID0gbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdmFsdWVzID0gbGlzdChpdCkgKyBbZHJvcF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodmFsdWVzKSwgc29ydGVkKGxpc3QoZGF0YS52YWx1ZXMoKSkpKQorCisgICAgZGVmIHRlc3RfaW5zdGFuY2VfZGljdF9nZXRhdHRyX3N0cl9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5tc2cgPSBtc2cKKyAgICAgICAgZiA9IEZvbygnMTIzJykKKyAgICAgICAgY2xhc3MgX3N0cihzdHIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYubXNnLCBnZXRhdHRyKGYsIF9zdHIoJ21zZycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1zZywgZi5fX2RpY3RfX1tfc3RyKCdtc2cnKV0pCisKKyAgICBkZWYgdGVzdF9vYmplY3Rfc2V0X2l0ZW1fc2luZ2xlX2luc3RhbmNlX25vbl9zdHJfa2V5KHNlbGYpOgorICAgICAgICBjbGFzcyBGb286IHBhc3MKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYuX19kaWN0X19bMV0gPSAxCisgICAgICAgIGYuYSA9ICdhJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19kaWN0X18sIHsxOjEsICdhJzonYSd9KQogCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCA1YzU5ZWFhLi4xYmNkNjkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSwxMSArMSwzNSBAQAogIyBNaW5pbWFsIHRlc3RzIGZvciBkaXMgbW9kdWxlCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNhcHR1cmVkX3N0ZG91dAoraW1wb3J0IGRpZmZsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGRpcwogaW1wb3J0IGlvCiAKK2NsYXNzIF9DOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geCA9PSAxCisKK2Rpc19jX2luc3RhbmNlX21ldGhvZCA9ICIiIlwKKyAlLTRkICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKKyAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKworZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAxICgxKQorICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorIiIiCiAKIGRlZiBfZihhKToKICAgICBwcmludChhKQpAQCAtMTQsNyArMzgsNyBAQAogZGlzX2YgPSAiIiJcCiAgJS00ZCAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHByaW50KQogICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQotICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgIDkgUE9QX1RPUAogCiAgJS00ZCAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCkBAIC0yMyw2ICs0NywxNiBAQAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCitkaXNfZl9jb19jb2RlID0gIiIiXAorICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAwICgwKQorICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAwICgwKQorICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAxICgxKQorICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisiIiIKKworCiBkZWYgYnVnNzA4OTAxKCk6CiAgICAgZm9yIHJlcyBpbiByYW5nZSgxLAogICAgICAgICAgICAgICAgICAgICAgMTApOgpAQCAtMzQsNyArNjgsNyBAQAogICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCiAgJS00ZCAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCiAgICAgICAgICAgICAgMTUgR0VUX0lURVIKICAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCiAgICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKQEAgLTEzOCwxOCArMTcyLDI3IEBACiAiIiIKIAogY2xhc3MgRGlzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBkb19kaXNhc3NlbWJseV90ZXN0KHNlbGYsIGZ1bmMsIGV4cGVjdGVkKToKKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CiAgICAgICAgIHMgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIHNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzeXMuc3Rkb3V0ID0gcwotICAgICAgICBkaXMuZGlzKGZ1bmMpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAotICAgICAgICBnb3QgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgd3JhcHBlcjoKKyAgICAgICAgICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpcy5kaXNhc3NlbWJsZShmdW5jLCBsYXN0aSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogICAgICAgICAjIFRyaW0gdHJhaWxpbmcgYmxhbmtzIChpZiBhbnkpLgotICAgICAgICBsaW5lcyA9IGdvdC5zcGxpdCgnXG4nKQotICAgICAgICBsaW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBsaW5lIGluIGxpbmVzXQotICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnNwbGl0KCJcbiIpCi0gICAgICAgIGltcG9ydCBkaWZmbGliCisgICAgICAgIHJldHVybiBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBzLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpXQorCisgICAgZGVmIGdldF9kaXNhc3NlbWJsZV9hc19zdHJpbmcoc2VsZiwgZnVuYywgbGFzdGk9LTEpOgorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KGZ1bmMsIGxhc3RpLCBGYWxzZSkpCisKKyAgICBkZWYgZG9fZGlzYXNzZW1ibHlfdGVzdChzZWxmLCBmdW5jLCBleHBlY3RlZCk6CisgICAgICAgIGxpbmVzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoZnVuYykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5zcGxpdGxpbmVzKCkKICAgICAgICAgaWYgZXhwZWN0ZWQgIT0gbGluZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoCiAgICAgICAgICAgICAgICAgImV2ZW50cyBkaWQgbm90IG1hdGNoIGV4cGVjdGF0aW9uOlxuIiArCkBAIC0xNTcsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcykpKQogCiAgICAgZGVmIHRlc3Rfb3BtYXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzLm9wbWFwWyJTVE9QX0NPREUiXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMub3BtYXBbIk5PUCJdLCA5KQogICAgICAgICBzZWxmLmFzc2VydEluKGRpcy5vcG1hcFsiTE9BRF9DT05TVCJdLCBkaXMuaGFzY29uc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGlzLm9wbWFwWyJTVE9SRV9OQU1FIl0sIGRpcy5oYXNuYW1lKQogCkBAIC0yMTEsNiArMjU0LDQ0IEBACiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZi5fX2NvZGVfXy5jb19jb2RlLCBkaXNfZl9jb19jb2RlKQorCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfbWV0aG9kKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX0MoMSkuX19pbml0X18sIGRpc19jX2luc3RhbmNlX21ldGhvZCkKKworICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX21ldGhvZF9ieXRlcyhzZWxmKToKKyAgICAgICAgbWV0aG9kX2J5dGVjb2RlID0gX0MoMSkuX19pbml0X18uX19jb2RlX18uY29fY29kZQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QobWV0aG9kX2J5dGVjb2RlLCBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMpCisKKyAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZGlzLmRpcywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2Rpc19vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGlzLmRpcywgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9kaXNfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCisKKyAgICAgICAgdGJfZGlzID0gc2VsZi5nZXRfZGlzYXNzZW1ibGVfYXNfc3RyaW5nKHRiLnRiX2ZyYW1lLmZfY29kZSwgdGIudGJfbGFzdGkpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChOb25lLCB0Yl9kaXMpCisKKyAgICBkZWYgdGVzdF9kaXNfb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5kaXMsIG9iamVjdCgpKQorCiBjb2RlX2luZm9fY29kZV9pbmZvID0gIiIiXAogTmFtZTogICAgICAgICAgICAgIGNvZGVfaW5mbwogRmlsZW5hbWU6ICAgICAgICAgICguKikKQEAgLTI1OCw2ICszMzksNyBAQAogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogPGNvZGUgb2JqZWN0IGYgYXQgKC4qKSwgZmlsZSAiKC4qKSIsIGxpbmUgKC4qKT4KKyAgIDI6ICd0cmlja3kuPGxvY2Fscz4uZicKIFZhcmlhYmxlIG5hbWVzOgogICAgMDogeAogICAgMTogeQpAQCAtMzY0LDYgKzQ0NiwxMyBAQAogICAgICAgICAgICAgICAgIGRpcy5zaG93X2NvZGUoeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LmdldHZhbHVlKCksIGV4cGVjdGVkKyJcbiIpCiAKKyAgICBkZWYgdGVzdF9jb2RlX2luZm9fb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5jb2RlX2luZm8sIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfcHJldHR5X2ZsYWdzX25vX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcy5wcmV0dHlfZmxhZ3MoMCksICcweDAnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoRGlzVGVzdHMsIENvZGVJbmZvVGVzdHMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCBhNmMxN2NjLi44ZjhjN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTQzMiw3ICs0MzMsNyBAQAogICAgID4+PiB0ZXN0cyA9IGZpbmRlci5maW5kKHNhbXBsZV9mdW5jKQogCiAgICAgPj4+IHByaW50KHRlc3RzKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTcgKDEgZXhhbXBsZSk+XQorICAgIFs8RG9jVGVzdCBzYW1wbGVfZnVuYyBmcm9tIC4uLjoxOCAoMSBleGFtcGxlKT5dCiAKIFRoZSBleGFjdCBuYW1lIGRlcGVuZHMgb24gaG93IHRlc3RfZG9jdGVzdCB3YXMgaW52b2tlZCwgc28gYWxsb3cgZm9yCiBsZWFkaW5nIHBhdGggY29tcG9uZW50cy4KQEAgLTE3NDUsMjI2ICsxNzQ2LDIyNyBAQAogCiAiIiIKIAotZGVmIHRlc3RfcGRiX3NldF90cmFjZSgpOgotICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCitpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIG9yIG5vdCBzeXMuZ2V0dHJhY2UoKToKKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlKCk6CisgICAgICAgICIiIlVzaW5nIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuCiAKLSAgICBZb3UgY2FuIHVzZSBwZGIuc2V0X3RyYWNlIGZyb20gYSBkb2N0ZXN0LiAgVG8gZG8gc28sIHlvdSBtdXN0Ci0gICAgcmV0cmlldmUgdGhlIHNldF90cmFjZSBmdW5jdGlvbiBmcm9tIHRoZSBwZGIgbW9kdWxlIGF0IHRoZSB0aW1lCi0gICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KLSAgICBjYXB0dXJlIHByb2dyYW0gb3V0cHV0LiAgSXQgYWxzbyB0ZW1wb3JhcmlseSByZXBsYWNlcyBwZGIuc2V0X3RyYWNlCi0gICAgd2l0aCBhIHZlcnNpb24gdGhhdCByZXN0b3JlcyBzdGRvdXQuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgeW91IHRvCi0gICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KKyAgICAgICAgWW91IGNhbiB1c2UgcGRiLnNldF90cmFjZSBmcm9tIGEgZG9jdGVzdC4gIFRvIGRvIHNvLCB5b3UgbXVzdAorICAgICAgICByZXRyaWV2ZSB0aGUgc2V0X3RyYWNlIGZ1bmN0aW9uIGZyb20gdGhlIHBkYiBtb2R1bGUgYXQgdGhlIHRpbWUKKyAgICAgICAgeW91IHVzZSBpdC4gIFRoZSBkb2N0ZXN0IG1vZHVsZSBjaGFuZ2VzIHN5cy5zdGRvdXQgc28gdGhhdCBpdCBjYW4KKyAgICAgICAgY2FwdHVyZSBwcm9ncmFtIG91dHB1dC4gIEl0IGFsc28gdGVtcG9yYXJpbHkgcmVwbGFjZXMgcGRiLnNldF90cmFjZQorICAgICAgICB3aXRoIGEgdmVyc2lvbiB0aGF0IHJlc3RvcmVzIHN0ZG91dC4gIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciB5b3UgdG8KKyAgICAgICAgc2VlIGRlYnVnZ2VyIG91dHB1dC4KIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4ID0gNDIKLSAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKLSAgICAgIC4uLiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4gRXhjZXB0aW9uOiBjbMOpCi0gICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgLi4uICcnJwotICAgICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHggPSA0MgorICAgICAgICAgIC4uLiA+Pj4gcmFpc2UgRXhjZXB0aW9uKCdjbMOpJykKKyAgICAgICAgICAuLi4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgIC4uLiBFeGNlcHRpb246IGNsw6kKKyAgICAgICAgICAuLi4gPj4+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIC4uLiAnJycKKyAgICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIHt9LCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiBydW5uZXIgPSBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSkKIAotICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAotICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKKyAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CisgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgPj4+IGltcG9ydCB0ZW1wZmlsZQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKKyAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseTogc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIHByaW50KHgpCi0gICAgICA0MgotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MykKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCisgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgKFBkYikgcHJpbnQoeCkKKyAgICAgICAgICA0MgorICAgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0zKQogCi0gICAgICBZb3UgY2FuIGFsc28gcHV0IHBkYi5zZXRfdHJhY2UgaW4gYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhIHRlc3Q6CisgICAgICAgICAgWW91IGNhbiBhbHNvIHB1dCBwZGIuc2V0X3RyYWNlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSB0ZXN0OgogCi0gICAgICA+Pj4gZGVmIGNhbGxzX3NldF90cmFjZSgpOgotICAgICAgLi4uICAgIHk9MgotICAgICAgLi4uICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgID4+PiBkZWYgY2FsbHNfc2V0X3RyYWNlKCk6CisgICAgICAgICAgLi4uICAgIHk9MgorICAgICAgICAgIC4uLiAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiB4PTEKLSAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAncHJpbnQoeSknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uCi0gICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KLSAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKLSAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgICAuLi4gICAgJyddKQorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IHg9MQorICAgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAuLi4gJycnCisgICAgICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCisgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCisgICAgICAgICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3VwJywgICAgICAgIyBvdXQgb2YgZnVuY3Rpb24KKyAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCisgICAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgICAuLi4gICAgJyddKQogCi0gICAgICA+Pj4gdHJ5OgotICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseToKLSAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKLSAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgKFBkYikgcHJpbnQoeSkKLSAgICAgIDIKLSAgICAgIChQZGIpIHVwCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAgIC0+IGNhbGxzX3NldF90cmFjZSgpCi0gICAgICAoUGRiKSBwcmludCh4KQotICAgICAgMQotICAgICAgKFBkYikgY29udGludWUKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAgICAgICA+Pj4gdHJ5OgorICAgICAgICAgIC4uLiAgICAgcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgorICAgICAgICAgIC0tUmV0dXJuLS0KKyAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgICAgMgorICAgICAgICAgIChQZGIpIHVwCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCisgICAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAgIDEKKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKIAotICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgotICAgIGRvY3Rlc3QgZXhhbXBsZXM6CisgICAgICAgIER1cmluZyBpbnRlcmFjdGl2ZSBkZWJ1Z2dpbmcsIHNvdXJjZSBjb2RlIGlzIHNob3duLCBldmVuIGZvcgorICAgICAgICBkb2N0ZXN0IGV4YW1wbGVzOgogCi0gICAgICA+Pj4gZG9jID0gJycnCi0gICAgICAuLi4gPj4+IGRlZiBmKHgpOgotICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCi0gICAgICAuLi4gPj4+IGRlZiBnKHgpOgotICAgICAgLi4uIC4uLiAgICAgcHJpbnQoeCszKQotICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICAuLi4gPj4+IGYoMykKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBnKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAxCi0gICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKLSAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAzCi0gICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgICAgLi4uICAgICcnXSkKLSAgICAgID4+PiB0cnk6IHJ1bm5lci5ydW4odGVzdCkKLSAgICAgIC4uLiBmaW5hbGx5OiBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCi0gICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMV0+KDMpZygpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIGxpc3QKLSAgICAgICAgMSAgICAgZGVmIGcoeCk6Ci0gICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCi0gICAgICAgIDMgIC0+ICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBuZXh0Ci0gICAgICAtLVJldHVybi0tCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzBdPigyKWYoKS0+Tm9uZQotICAgICAgLT4gZyh4KjIpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgICAgIGRlZiBmKHgpOgotICAgICAgICAyICAtPiAgICAgZyh4KjIpCi0gICAgICBbRU9GXQotICAgICAgKFBkYikgbmV4dAotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsyXT4oMSk8bW9kdWxlPigpLT5Ob25lCi0gICAgICAtPiBmKDMpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgIC0+IGYoMykKLSAgICAgIFtFT0ZdCi0gICAgICAoUGRiKSBjb250aW51ZQotICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgICAgRmlsZSAiZm9vLWJhckBiYXoucHkiLCBsaW5lIDcsIGluIGZvby1iYXJAYmF6Ci0gICAgICBGYWlsZWQgZXhhbXBsZToKLSAgICAgICAgICBmKDMpCi0gICAgICBFeHBlY3RlZCBub3RoaW5nCi0gICAgICBHb3Q6Ci0gICAgICAgICAgOQotICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0zKQotICAgICAgIiIiCisgICAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAgIC4uLiA+Pj4gZGVmIGYoeCk6CisgICAgICAgICAgLi4uIC4uLiAgICAgZyh4KjIpCisgICAgICAgICAgLi4uID4+PiBkZWYgZyh4KToKKyAgICAgICAgICAuLi4gLi4uICAgICBwcmludCh4KzMpCisgICAgICAgICAgLi4uIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgLi4uID4+PiBmKDMpCisgICAgICAgICAgLi4uICcnJworICAgICAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAyCisgICAgICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZygpCisgICAgICAgICAgLi4uICAgICdsaXN0JywgICAgICMgbGlzdCBzb3VyY2UgZnJvbSBleGFtcGxlIDEKKyAgICAgICAgICAuLi4gICAgJ25leHQnLCAgICAgIyByZXR1cm4gZnJvbSBmKCkKKyAgICAgICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMworICAgICAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCisgICAgICAgICAgLi4uICAgICcnXSkKKyAgICAgICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCisgICAgICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAuLi4gIyBkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMylnKCktPk5vbmUKKyAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAgICBkZWYgZyh4KToKKyAgICAgICAgICAgIDIgICAgICAgICBwcmludCh4KzMpCisgICAgICAgICAgICAzICAtPiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMF0+KDIpZigpLT5Ob25lCisgICAgICAgICAgLT4gZyh4KjIpCisgICAgICAgICAgKFBkYikgbGlzdAorICAgICAgICAgICAgMSAgICAgZGVmIGYoeCk6CisgICAgICAgICAgICAyICAtPiAgICAgZyh4KjIpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBuZXh0CisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQorICAgICAgICAgIC0+IGYoMykKKyAgICAgICAgICAoUGRiKSBsaXN0CisgICAgICAgICAgICAxICAtPiBmKDMpCisgICAgICAgICAgW0VPRl0KKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICBGaWxlICJmb28tYmFyQGJhei5weSIsIGxpbmUgNywgaW4gZm9vLWJhckBiYXoKKyAgICAgICAgICBGYWlsZWQgZXhhbXBsZToKKyAgICAgICAgICAgICAgZigzKQorICAgICAgICAgIEV4cGVjdGVkIG5vdGhpbmcKKyAgICAgICAgICBHb3Q6CisgICAgICAgICAgICAgIDkKKyAgICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MSwgYXR0ZW1wdGVkPTMpCisgICAgICAgICAgIiIiCiAKLWRlZiB0ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkKCk6Ci0gICAgIiIiVGhpcyBpbGx1c3RyYXRlcyBtb3JlLWRlbWFuZGluZyB1c2Ugb2Ygc2V0X3RyYWNlIHdpdGggbmVzdGVkIGZ1bmN0aW9ucy4KKyAgICBkZWYgdGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCgpOgorICAgICAgICAiIiJUaGlzIGlsbHVzdHJhdGVzIG1vcmUtZGVtYW5kaW5nIHVzZSBvZiBzZXRfdHJhY2Ugd2l0aCBuZXN0ZWQgZnVuY3Rpb25zLgogCi0gICAgPj4+IGNsYXNzIEMob2JqZWN0KToKLSAgICAuLi4gICAgIGRlZiBjYWxsc19zZXRfdHJhY2Uoc2VsZik6Ci0gICAgLi4uICAgICAgICAgeSA9IDEKLSAgICAuLi4gICAgICAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAuLi4gICAgICAgICBzZWxmLmYxKCkKLSAgICAuLi4gICAgICAgICB5ID0gMgotICAgIC4uLiAgICAgZGVmIGYxKHNlbGYpOgotICAgIC4uLiAgICAgICAgIHggPSAxCi0gICAgLi4uICAgICAgICAgc2VsZi5mMigpCi0gICAgLi4uICAgICAgICAgeCA9IDIKLSAgICAuLi4gICAgIGRlZiBmMihzZWxmKToKLSAgICAuLi4gICAgICAgICB6ID0gMQotICAgIC4uLiAgICAgICAgIHogPSAyCisgICAgICAgID4+PiBjbGFzcyBDKG9iamVjdCk6CisgICAgICAgIC4uLiAgICAgZGVmIGNhbGxzX3NldF90cmFjZShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeSA9IDEKKyAgICAgICAgLi4uICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuZjEoKQorICAgICAgICAuLi4gICAgICAgICB5ID0gMgorICAgICAgICAuLi4gICAgIGRlZiBmMShzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeCA9IDEKKyAgICAgICAgLi4uICAgICAgICAgc2VsZi5mMigpCisgICAgICAgIC4uLiAgICAgICAgIHggPSAyCisgICAgICAgIC4uLiAgICAgZGVmIGYyKHNlbGYpOgorICAgICAgICAuLi4gICAgICAgICB6ID0gMQorICAgICAgICAuLi4gICAgICAgICB6ID0gMgogCi0gICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKKyAgICAgICAgPj4+IGNhbGxzX3NldF90cmFjZSA9IEMoKS5jYWxsc19zZXRfdHJhY2UKIAotICAgID4+PiBkb2MgPSAnJycKLSAgICAuLi4gPj4+IGEgPSAxCi0gICAgLi4uID4+PiBjYWxsc19zZXRfdHJhY2UoKQotICAgIC4uLiAnJycKLSAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKLSAgICA+Pj4gcnVubmVyID0gZG9jdGVzdC5Eb2NUZXN0UnVubmVyKHZlcmJvc2U9RmFsc2UpCi0gICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCi0gICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KLSAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHgpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHkpJywKLSAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAotICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCi0gICAgLi4uICAgICcnXSkKKyAgICAgICAgPj4+IGRvYyA9ICcnJworICAgICAgICAuLi4gPj4+IGEgPSAxCisgICAgICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLi4uICcnJworICAgICAgICA+Pj4gcGFyc2VyID0gZG9jdGVzdC5Eb2NUZXN0UGFyc2VyKCkKKyAgICAgICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQorICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKKyAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAuLi4gICAgJ3ByaW50KHkpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGluIHRoZSBmdW5jdGlvbgorICAgICAgICAuLi4gICAgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3ByaW50KHopJywKKyAgICAgICAgLi4uICAgICd1cCcsICdwcmludCh4KScsCisgICAgICAgIC4uLiAgICAndXAnLCAncHJpbnQoeSknLAorICAgICAgICAuLi4gICAgJ3VwJywgJ3ByaW50KGZvbyknLAorICAgICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZworICAgICAgICAuLi4gICAgJyddKQogCi0gICAgPj4+IHRyeToKLSAgICAuLi4gICAgIHJ1bm5lci5ydW4odGVzdCkKLSAgICAuLi4gZmluYWxseToKLSAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KLSAgICAuLi4gIyBkb2N0ZXN0OiArUkVQT1JUX05ESUZGCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgc3RlcAotICAgIC0tQ2FsbC0tCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig3KWYxKCkKLSAgICAtPiBkZWYgZjEoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOClmMSgpCi0gICAgLT4geCA9IDEKLSAgICAoUGRiKSBzdGVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig5KWYxKCkKLSAgICAtPiBzZWxmLmYyKCkKLSAgICAoUGRiKSBzdGVwCi0gICAgLS1DYWxsLS0KLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKLSAgICAtPiBkZWYgZjIoc2VsZik6Ci0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQotICAgIC0+IHogPSAxCi0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQotICAgIC0+IHogPSAyCi0gICAgKFBkYikgcHJpbnQoeikKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQotICAgIC0+IHNlbGYuZjIoKQotICAgIChQZGIpIHByaW50KHgpCi0gICAgMQotICAgIChQZGIpIHVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCi0gICAgLT4gc2VsZi5mMSgpCi0gICAgKFBkYikgcHJpbnQoeSkKLSAgICAxCi0gICAgKFBkYikgdXAKLSAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKLSAgICAtPiBjYWxsc19zZXRfdHJhY2UoKQotICAgIChQZGIpIHByaW50KGZvbykKLSAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCi0gICAgKFBkYikgY29udGludWUKLSAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCi0iIiIKKyAgICAgICAgPj4+IHRyeToKKyAgICAgICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCisgICAgICAgIC4uLiBmaW5hbGx5OgorICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgLi4uICMgZG9jdGVzdDogK1JFUE9SVF9ORElGRgorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDUpY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLT4gc2VsZi5mMSgpCisgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgIDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDcpZjEoKQorICAgICAgICAtPiBkZWYgZjEoc2VsZik6CisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig4KWYxKCkKKyAgICAgICAgLT4geCA9IDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQorICAgICAgICAtPiBzZWxmLmYyKCkKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICAtLUNhbGwtLQorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDExKWYyKCkKKyAgICAgICAgLT4gZGVmIGYyKHNlbGYpOgorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTIpZjIoKQorICAgICAgICAtPiB6ID0gMQorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oMTMpZjIoKQorICAgICAgICAtPiB6ID0gMgorICAgICAgICAoUGRiKSBwcmludCh6KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOSlmMSgpCisgICAgICAgIC0+IHNlbGYuZjIoKQorICAgICAgICAoUGRiKSBwcmludCh4KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNSljYWxsc19zZXRfdHJhY2UoKQorICAgICAgICAtPiBzZWxmLmYxKCkKKyAgICAgICAgKFBkYikgcHJpbnQoeSkKKyAgICAgICAgMQorICAgICAgICAoUGRiKSB1cAorICAgICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigxKTxtb2R1bGU+KCkKKyAgICAgICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgKFBkYikgcHJpbnQoZm9vKQorICAgICAgICAqKiogTmFtZUVycm9yOiBuYW1lICdmb28nIGlzIG5vdCBkZWZpbmVkCisgICAgICAgIChQZGIpIGNvbnRpbnVlCisgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MikKKyAgICAiIiIKIAogZGVmIHRlc3RfRG9jVGVzdFN1aXRlKCk6CiAgICAgIiIiRG9jVGVzdFN1aXRlIGNyZWF0ZXMgYSB1bml0dGVzdCB0ZXN0IHN1aXRlIGZyb20gYSBkb2N0ZXN0LgpAQCAtMjU2Niw3ICsyNTY4LDcgQEAKIAogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCi0gICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigndGVzdF9tYWluKCknKQogICAgIHIgPSB0cmFjZXIucmVzdWx0cygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weSBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CmluZGV4IGM2MTA3OGQuLjJmYWZlMWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkLnB5CkBAIC0zNSw4ICszNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jayBvYmplY3QgZGlkIG5vdCByZWxlYXNlIHByb3Blcmx5LiIpCiAKICAgICBkZWYgdGVzdF9pbXByb3Blcl9yZWxlYXNlKHNlbGYpOgotICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBfdGhyZWFkLmVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKF90aHJlYWQuZXJyb3IsIHNlbGYubG9jay5yZWxlYXNlKQorICAgICAgICAjTWFrZSBzdXJlIHJlbGVhc2Ugb2YgYW4gdW5sb2NrZWQgdGhyZWFkIHJhaXNlcyBSdW50aW1lRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmxvY2sucmVsZWFzZSkKIAogICAgIGRlZiB0ZXN0X2NvbmRfYWNxdWlyZV9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjTWFrZSBzdXJlIHRoZSBjb25kaXRpb25hbCBhY3F1aXJpbmcgb2YgdGhlIGxvY2sgd29ya3MuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlYmJhNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgotIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMKLQotIyBUaGUgc3BlY2lmaWMgdGVzdHMgbm93IGxpdmUgaW4gTGliL2VtYWlsL3Rlc3QKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBzdWl0ZQotZnJvbSBlbWFpbC50ZXN0LnRlc3RfZW1haWxfY29kZWNzIGltcG9ydCBzdWl0ZSBhcyBjb2RlY3Nfc3VpdGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3Qoc3VpdGUoKSkKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChjb2RlY3Nfc3VpdGUoKSkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwNmFjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNTAgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgZW1haWwKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyaworCisjIFJ1biBhbGwgdGVzdHMgaW4gcGFja2FnZSBmb3IgJy1tIHVuaXR0ZXN0IHRlc3QudGVzdF9lbWFpbCcKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHRoaXNfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIGlmIHBhdHRlcm4gaXMgTm9uZToKKyAgICAgICAgcGF0dGVybiA9ICJ0ZXN0KiIKKyAgICBwYWNrYWdlX3Rlc3RzID0gbG9hZGVyLmRpc2NvdmVyKHN0YXJ0X2Rpcj10aGlzX2RpciwgcGF0dGVybj1wYXR0ZXJuKQorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3RzKHBhY2thZ2VfdGVzdHMpCisgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCisKKworIyB1c2VkIGJ5IHJlZ3J0ZXN0IGFuZCBfX21haW5fXy4KK2RlZiB0ZXN0X21haW4oKToKKyAgICBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICMgVW5pdHRlc3QgbXVja3Mgd2l0aCB0aGUgcGF0aCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlCisgICAgIyBpdCB0byBrZWVwIHJlZ3J0ZXN0IGhhcHB5LgorICAgIHNhdmVwYXRoID0gc3lzLnBhdGhbOl0KKyAgICB0ZXN0LnN1cHBvcnQuX3J1bl9zdWl0ZSh1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3ZlcihoZXJlKSkKKyAgICBzeXMucGF0aFs6XSA9IHNhdmVwYXRoCisKKworIyBoZWxwZXIgY29kZSB1c2VkIGJ5IGEgbnVtYmVyIG9mIHRlc3QgbW9kdWxlcy4KKworZGVmIG9wZW5maWxlKGZpbGVuYW1lLCAqYXJncywgKiprd3MpOgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCBmaWxlbmFtZSkKKyAgICByZXR1cm4gb3BlbihwYXRoLCAqYXJncywgKiprd3MpCisKKworIyBCYXNlIHRlc3QgY2xhc3MKK2NsYXNzIFRlc3RFbWFpbEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbWF4RGlmZiA9IE5vbmUKKyAgICAjIEN1cnJlbnRseSB0aGUgZGVmYXVsdCBwb2xpY3kgaXMgY29tcGF0MzIuICBCeSBzZXR0aW5nIHRoYXQgYXMgdGhlIGRlZmF1bHQKKyAgICAjIGhlcmUgd2UgbWFrZSBtaW5pbWFsIGNoYW5nZXMgaW4gdGhlIHRlc3RfZW1haWwgdGVzdHMgY29tcGFyZWQgdG8gdGhlaXIKKyAgICAjIHByZS0zLjMgc3RhdGUuCisgICAgcG9saWN5ID0gY29tcGF0MzIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuYWRkVHlwZUVxdWFsaXR5RnVuYyhieXRlcywgc2VsZi5hc3NlcnRCeXRlc0VxdWFsKQorCisgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvIG1pbmltaXplIHRlc3RfZW1haWwgdGVzdCBjaGFuZ2VzLgorICAgIG5kaWZmQXNzZXJ0RXF1YWwgPSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAorCisgICAgZGVmIF9tc2dvYmooc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICB3aXRoIG9wZW5maWxlKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIF9zdHJfbXNnKHNlbGYsIHN0cmluZywgbWVzc2FnZT1NZXNzYWdlLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kKKyAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyaW5nLCBtZXNzYWdlLCBwb2xpY3k9cG9saWN5KQorCisgICAgZGVmIF9ieXRlc19yZXByKHNlbGYsIGIpOgorICAgICAgICByZXR1cm4gW3JlcHIoeCkgZm9yIHggaW4gYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXQorCisgICAgZGVmIGFzc2VydEJ5dGVzRXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCwgbXNnKToKKyAgICAgICAgIiIiT3VyIGJ5dGUgc3RyaW5ncyBhcmUgcmVhbGx5IGVuY29kZWQgc3RyaW5nczsgaW1wcm92ZSBkaWZmIG91dHB1dCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2J5dGVzX3JlcHIoZmlyc3QpLCBzZWxmLl9ieXRlc19yZXByKHNlY29uZCkpCisKKyAgICBkZWYgYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYsIGFjdHVhbCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhY3R1YWwpLCBsZW4oZXhwZWN0ZWQpLCBhY3R1YWwpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3R1YWwpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhY3R1YWxbaV0sIGV4cGVjdGVkW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2l0ZW0ge30nLmZvcm1hdChpKSkKKworCitkZWYgcGFyYW1ldGVyaXplKGNscyk6CisgICAgIiIiQSB0ZXN0IG1ldGhvZCBwYXJhbWV0ZXJpemF0aW9uIGNsYXNzIGRlY29yYXRvci4KKworICAgIFBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBhcyB0aGUgdmFsdWUgb2YgYSBjbGFzcyBhdHRyaWJ1dGUgdGhhdCBlbmRzIHdpdGgKKyAgICB0aGUgc3RyaW5nICdfcGFyYW1zJy4gIENhbGwgdGhlIHBvcnRpb24gYmVmb3JlICdfcGFyYW1zJyB0aGUgcHJlZml4LiAgVGhlbgorICAgIGEgbWV0aG9kIHRvIGJlIHBhcmFtZXRlcml6ZWQgbXVzdCBoYXZlIHRoZSBzYW1lIHByZWZpeCwgdGhlIHN0cmluZworICAgICdfYXNfJywgYW5kIGFuIGFyYml0cmFyeSBzdWZmaXguCisKKyAgICBUaGUgdmFsdWUgb2YgdGhlIF9wYXJhbXMgYXR0cmlidXRlIG1heSBiZSBlaXRoZXIgYSBkaWN0aW9uYXJ5IG9yIGEgbGlzdC4KKyAgICBUaGUgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFuZCB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgbWF5IGVpdGhlciBiZQorICAgIHNpbmdsZSB2YWx1ZXMsIG9yIGEgbGlzdC4gIElmIHNpbmdsZSB2YWx1ZXMsIHRoZXkgYXJlIHR1cm5lZCBpbnRvIHNpbmdsZQorICAgIGVsZW1lbnQgdHVwbGVzLiAgSG93ZXZlciBkZXJpdmVkLCB0aGUgcmVzdWx0aW5nIHNlcXVlbmNlIGlzIHBhc3NlZCB2aWEKKyAgICAqYXJncyB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IGZ1bmN0aW9uLgorCisgICAgSW4gYSBfcGFyYW1zIGRpY3Rpb2FucnksIHRoZSBrZXlzIGJlY29tZSBwYXJ0IG9mIHRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQKKyAgICB0ZXN0cy4gIEluIGEgX3BhcmFtcyBsaXN0LCB0aGUgdmFsdWVzIGluIHRoZSBsaXN0IGFyZSBjb252ZXJ0ZWQgaW50byBhCisgICAgc3RyaW5nIGJ5IGpvaW5pbmcgdGhlIHN0cmluZyB2YWx1ZXMgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSB0dXBsZSBieSAnXycgYW5kCisgICAgY29udmVydGluZyBhbnkgYmxhbmtzIGludG8gJ18ncywgYW5kIHRoaXMgYmVjb21lIHBhcnQgb2YgdGhlIG5hbWUuCisgICAgVGhlICBmdWxsIG5hbWUgb2YgYSBnZW5lcmF0ZWQgdGVzdCBpcyBhICd0ZXN0XycgcHJlZml4LCB0aGUgcG9ydGlvbiBvZiB0aGUKKyAgICB0ZXN0IGZ1bmN0aW9uIG5hbWUgYWZ0ZXIgdGhlICAnX2FzXycgc2VwYXJhdG9yLCBwbHVzIGFuICdfJywgcGx1cyB0aGUgbmFtZQorICAgIGRlcml2ZWQgYXMgZXhwbGFpbmVkIGFib3ZlLgorCisgICAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmU6CisKKyAgICAgICAgY291bnRfcGFyYW1zID0gcmFuZ2UoMikKKworICAgICAgICBkZWYgY291bnRfYXNfZm9vX2FyZyhzZWxmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28rMSwgbXlmdW5jKGZvbykpCisKKyAgICB3ZSB3aWxsIGdldCBwYXJhbWV0ZXJpemVkIHRlc3QgbWV0aG9kcyBuYW1lZDoKKyAgICAgICAgdGVzdF9mb29fYXJnXzAKKyAgICAgICAgdGVzdF9mb29fYXJnXzEKKyAgICAgICAgdGVzdF9mb29fYXJnXzIKKworICAgIE9yIHdlIGNvdWxkIGhhdmU6CisKKyAgICAgICAgZXhhbXBsZV9wYXJhbXMgPSB7J2Zvbyc6ICgnYmFyJywgMSksICdiaW5nJzogKCdiYW5nJywgMil9CisKKyAgICAgICAgZGVmIGV4YW1wbGVfYXNfbXlmdW5jX2lucHV0KHNlbGYsIG5hbWUsIGNvdW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZStzdHIoY291bnQpLCBteWZ1bmMobmFtZSwgY291bnQpKQorCisgICAgYW5kIGdldDoKKyAgICAgICAgdGVzdF9teWZ1bmNfaW5wdXRfZm9vCisgICAgICAgIHRlc3RfbXlmdW5jX2lucHV0X2JpbmcKKworICAgIE5vdGU6IGlmIGFuZCBvbmx5IGlmIHRoZSBnZW5lcmF0ZWQgdGVzdCBuYW1lIGlzIGEgdmFsaWQgaWRlbnRpZmllciBjYW4gaXQKKyAgICBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgdGVzdCBpbmRpdmlkdWFsbHkgZnJvbSB0aGUgdW5pdHRlc3QgY29tbWFuZCBsaW5lLgorCisgICAgIiIiCisgICAgcGFyYW1kaWN0cyA9IHt9CisgICAgZm9yIG5hbWUsIGF0dHIgaW4gY2xzLl9fZGljdF9fLml0ZW1zKCk6CisgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoJ19wYXJhbXMnKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGF0dHIsICdrZXlzJyk6CisgICAgICAgICAgICAgICAgZCA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gYXR0cjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoeCwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gKHgsKQorICAgICAgICAgICAgICAgICAgICBuID0gJ18nLmpvaW4oc3RyKHYpIGZvciB2IGluIHgpLnJlcGxhY2UoJyAnLCAnXycpCisgICAgICAgICAgICAgICAgICAgIGRbbl0gPSB4CisgICAgICAgICAgICAgICAgYXR0ciA9IGQKKyAgICAgICAgICAgIHBhcmFtZGljdHNbbmFtZVs6LTddICsgJ19hc18nXSA9IGF0dHIKKyAgICB0ZXN0ZnVuY3MgPSB7fQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBmb3IgcGFyYW1zbmFtZSwgcGFyYW1zZGljdCBpbiBwYXJhbWRpY3RzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocGFyYW1zbmFtZSk6CisgICAgICAgICAgICAgICAgdGVzdG5hbWVyb290ID0gJ3Rlc3RfJyArIG5hbWVbbGVuKHBhcmFtc25hbWUpOl0KKyAgICAgICAgICAgICAgICBmb3IgcGFyYW1uYW1lLCBwYXJhbXMgaW4gcGFyYW1zZGljdC5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gKGxhbWJkYSBzZWxmLCBuYW1lPW5hbWUsIHBhcmFtcz1wYXJhbXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIG5hbWUpKCpwYXJhbXMpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0bmFtZSA9IHRlc3RuYW1lcm9vdCArICdfJyArIHBhcmFtbmFtZQorICAgICAgICAgICAgICAgICAgICB0ZXN0Ll9fbmFtZV9fID0gdGVzdG5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGVzdGZ1bmNzW3Rlc3RuYW1lXSA9IHRlc3QKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0ZXN0ZnVuY3MuaXRlbXMoKToKKyAgICAgICAgc2V0YXR0cihjbHMsIGtleSwgdmFsdWUpCisgICAgcmV0dXJuIGNscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThhZjllYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgdGVzdF9tYWluCisKK3Rlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL1B5QmFubmVyMDQ4LmdpZiBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9QeUJhbm5lcjA0OC5naWYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvUHlCYW5uZXIwNDguZ2lmCnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvUHlCYW5uZXIwNDguZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvYXVkaW90ZXN0LmF1IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL2F1ZGlvdGVzdC5hdQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9hdWRpb3Rlc3QuYXUKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9hdWRpb3Rlc3QuYXUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzExLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTJhLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTJhLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMmEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMxLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMzLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzMudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzQudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM0LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzUudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM1LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM2LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzYudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzcudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM3LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzgudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM4LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zOC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM5LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzkudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180MC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDAudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQwLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Mi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180My50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180NC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Ni50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ2LnR4dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Mzk1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwxODcgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgX2VuY29kZWRfd29yZHMgYXMgX2V3Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdERlY29kZVEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCBleF9yZXN1bHQsIGV4X2RlZmVjdHM9W10pOgorICAgICAgICByZXN1bHQsIGRlZmVjdHMgPSBfZXcuZGVjb2RlX3Eoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkZWZlY3RzLCBleF9kZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfbm9fZW5jb2RlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsIGInZm9vYmFyJykKKworICAgIGRlZiB0ZXN0X3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvbz0yMGJhcj0yMCcsIGInZm9vIGJhciAnKQorICAgICAgICBzZWxmLl90ZXN0KGInZm9vX2Jhcl8nLCBiJ2ZvbyBiYXIgJykKKworICAgIGRlZiB0ZXN0X3J1bl9vZl9lbmNvZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vPTIwPTIwPTIxPTJDYmFyJywgYidmb28gICEsYmFyJykKKworCitjbGFzcyBUZXN0RGVjb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIGV4X3Jlc3VsdCwgZXhfZGVmZWN0cz1bXSk6CisgICAgICAgIHJlc3VsdCwgZGVmZWN0cyA9IF9ldy5kZWNvZGVfYihzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleF9yZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGRlZmVjdHMsIGV4X2RlZmVjdHMpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidabTl2JywgYidmb28nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1rJywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidkbVx4MDFrPT09JywgYid2aScsIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJfYW5kX2JhZF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1ceDAxaycsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworCitjbGFzcyBUZXN0RGVjb2RlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIHRlc3Rfd3JvbmdfZm9ybWF0X2lucHV0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJz0/YmFkb25lPz0nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnPT8nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX2V3LmRlY29kZSgnJykKKworICAgIGRlZiBfdGVzdChzZWxmLCBzb3VyY2UsIHJlc3VsdCwgY2hhcnNldD0ndXMtYXNjaWknLCBsYW5nPScnLCBkZWZlY3RzPVtdKToKKyAgICAgICAgcmVzLCBjaGFyLCBsLCBkID0gX2V3LmRlY29kZShzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhciwgY2hhcnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsLCBsYW5nKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkLCBkZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Eoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/cT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2Ioc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3RfcV9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/UT9mb28/PScsICdmb28nKQorCisgICAgZGVmIHRlc3RfYl9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Qj9kbWs9Pz0nLCAndmknKQorCisgICAgZGVmIHRlc3Rfbm9uX3RyaXZpYWxfcShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT9sYXRpbi0xP3E/PTIwRj1mY3I9MjBFbGlzZT0yMD89JywgJyBGw7xyIEVsaXNlICcsICdsYXRpbi0xJykKKworICAgIGRlZiB0ZXN0X3FfZXNjcGFlZF9ieXRlc19wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYic9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89Jy5kZWNvZGUoJ3VzLWFzY2lpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJyBcdURDQUNmb28nLAorICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl91bmRlY29kYWJsZV9ieXRlc19pZ25vcmVkX3dpdGhfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInPT91cy1hc2NpaT9iP2RtXHhBQ2s/PScuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gWworICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QsCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaWdub3JlZF93aXRoX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2RtXHgwMWs9PT0/PScsCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iX2ludmFsaWRfYnl0ZXNfaW5jb3JyZWN0X3BhZGRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbVx4MDFrPz0nLAorICAgICAgICAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl9wYWRkaW5nX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91cy1hc2NpaT9iP2Rtaz89JywKKyAgICAgICAgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9ub25udWxsX2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWkqaml2ZT9xP3Rlc3Q/PScsICd0ZXN0JywgbGFuZz0naml2ZScpCisKKyAgICBkZWYgdGVzdF91bmtub3duXzhiaXRfY2hhcnNldChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnPT91bmtub3duLThiaXQ/cT9mb289QUNiYXI/PScsCisgICAgICAgICAgICAgICAgICAgYidmb29ceGFjYmFyJy5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSAndW5rbm93bi04Yml0JywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW10pCisKKyAgICBkZWYgdGVzdF91bmtub3duX2NoYXJzZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/Zm9vYmFyP3E/Zm9vPUFDYmFyPz0nLAorICAgICAgICAgICAgICAgICAgIGInZm9vXHhhY2JhcicuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ2Zvb2JhcicsCisgICAgICAgICAgICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgYmUgYSBuZXcgRGVmZWN0IGluc3RlYWQ/CisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuQ2hhcnNldEVycm9yXSkKKworCitjbGFzcyBUZXN0RW5jb2RlUShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdChzZWxmLCBzcmMsIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX3Eoc3JjKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9hbGxfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb2JhcicsICdmb29iYXInKQorCisgICAgZGVmIHRlc3Rfc3BhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vIGJhciAnLCAnZm9vX2Jhcl8nKQorCisgICAgZGVmIHRlc3RfcnVuX29mX2VuY29kYWJsZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb28gICwsYmFyJywgJ2Zvb19fPTJDPTJDYmFyJykKKworCitjbGFzcyBUZXN0RW5jb2RlQihUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYidmb28nKSwgJ1ptOXYnKQorCisgICAgZGVmIHRlc3RfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlX2IoYid2aScpLCAnZG1rPScpCisKKworY2xhc3MgVGVzdEVuY29kZShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3Eoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgJ3V0Zi04JywgJ3EnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9iKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycsICd1dGYtOCcsICdiJyksICc9P3V0Zi04P2I/Wm05dj89JykKKworICAgIGRlZiB0ZXN0X2F1dG9fcShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb28nLCAndXRmLTgnKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfc2hvcnRfbW9zdGx5X3NhZmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgndmkuJywgJ3V0Zi04JyksICc9P3V0Zi04P3E/dmk9MkU/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX2JfaWZfZW5vdWdoX3Vuc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCcuLi4uLicsICd1dGYtOCcpLCAnPT91dGYtOD9iP0xpNHVMaTQ9Pz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19iX2lmX2xvbmdfdW5zYWZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ3ZpLnZpLnZpLnZpLnZpLicsICd1dGYtOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1rdWRta3VkbWt1ZG1rdWRta3U/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3FfaWZfbG9uZ19tb3N0bHlfc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCd2aSB2aSB2aS52aSAnLCAndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91dGYtOD9xP3ZpX3ZpX3ZpPTJFdmlfPz0nKQorCisgICAgZGVmIHRlc3RfdXRmOF9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycpLCAnPT91dGYtOD9xP2Zvbz89JykKKworICAgIGRlZiB0ZXN0X2xhbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgbGFuZz0naml2ZScpLCAnPT91dGYtOCpqaXZlP3E/Zm9vPz0nKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2Zvb1x1RENBQ2JhcicsIGNoYXJzZXQ9J3Vua25vd24tOGJpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3Vua25vd24tOGJpdD9xP2Zvbz1BQ2Jhcj89JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDFlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTAsMCArMSwyNTUyIEBACitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IF9oZWFkZXJfdmFsdWVfcGFyc2VyIGFzIHBhcnNlcgorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKKworY2xhc3MgVGVzdFRva2VucyhUZXN0RW1haWxCYXNlKToKKworICAgICMgRVdXaGl0ZVNwYWNlVGVybWluYWwKKworICAgIGRlZiB0ZXN0X0VXV2hpdGVTcGFjZVRlcm1pbmFsKHNlbGYpOgorICAgICAgICB4ID0gcGFyc2VyLkVXV2hpdGVTcGFjZVRlcm1pbmFsKCcgXHQnLCAnZndzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAnIFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsdWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZW5jb2RlZCwgJyBcdCcpCisKKyAgICAjIFVuc3RydWN0dXJlZFRva2VuTGlzdAorCisgICAgZGVmIHRlc3RfdW5kZWNvZGFibGVfYnl0ZXNfZXJyb3JfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBiYWRzdHIgPSBiImxlIHBvdWYgY1x4YWZsZWJyZSIuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICB1bnN0ID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQoYmFkc3RyKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbCh1bnN0LmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorICAgICAgICBwYXJ0cyA9IGxpc3QodW5zdC5wYXJ0cykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwocGFydHNbMF0uYWxsX2RlZmVjdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChwYXJ0c1sxXS5hbGxfZGVmZWN0cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHBhcnRzWzJdLmFsbF9kZWZlY3RzLCBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKQorCisKK2NsYXNzIFRlc3RQYXJzZXJNaXhpbjoKKworICAgIGRlZiBfYXNzZXJ0X3Jlc3VsdHMoc2VsZiwgdGwsIHJlc3QsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsIHJlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0bCksIHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bC52YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHRsLmFsbF9kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3QsIHJlbWFpbmRlcikKKyAgICAgICAgaWYgY29tbWVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmNvbW1lbnRzLCBjb21tZW50cykKKworICAgIGRlZiBfdGVzdF9nZXRfeChzZWxmLCBtZXRob2QsIHNvdXJjZSwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyLCBjb21tZW50cz1Ob25lKToKKyAgICAgICAgdGwsIHJlc3QgPSBtZXRob2Qoc291cmNlKQorICAgICAgICBzZWxmLl9hc3NlcnRfcmVzdWx0cyh0bCwgcmVzdCwgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywgcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cz1Ob25lKQorICAgICAgICByZXR1cm4gdGwKKworICAgIGRlZiBfdGVzdF9wYXJzZV94KHNlbGYsIG1ldGhvZCwgaW5wdXQsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRzPU5vbmUpOgorICAgICAgICB0bCA9IG1ldGhvZChpbnB1dCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlc3VsdHModGwsICcnLCBzdHJpbmcsIHZhbHVlLCBkZWZlY3RzLCAnJywgY29tbWVudHMpCisgICAgICAgIHJldHVybiB0bAorCisKK2NsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlck1peGluLCBUZXN0RW1haWxCYXNlKToKKworICAgICMgX3dzcF9zcGxpdHRlcgorCisgICAgcmZjX3ByaW50YWJsZV9hc2NpaSA9IGJ5dGVzKHJhbmdlKDMzLCAxMjcpKS5kZWNvZGUoJ2FzY2lpJykKKyAgICByZmNfYXRleHRfY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIhIyQlJlwnKistLz0/Xl9ge318fiIpCisgICAgcmZjX2R0ZXh0X2NoYXJzID0gcmZjX3ByaW50YWJsZV9hc2NpaS50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnJywnJyxyJ1xbXScpKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vJywgMSksIFsnZm9vJ10pCisKKyAgICBkZWYgdGVzdF9fd3NwX3NwbGl0dGVyX3R3b193b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vIGRlZicsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZvbycsICcgJywgJ2RlZiddKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl93c19ydW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5fd3NwX3NwbGl0dGVyKCdmb28gXHQgZGVmIGppaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZm9vJywgJyBcdCAnLCAnZGVmIGppayddKQorCisKKyAgICAjIGdldF9md3MKKworICAgIGRlZiB0ZXN0X2dldF9md3Nfb25seShzZWxmKToKKyAgICAgICAgZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBcdCAgJywgJyBcdCAgJywgJyAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZndzLnRva2VuX3R5cGUsICdmd3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c19zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Z3cywgJyBmb28nLCAnICcsICcgJywgW10sICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Z3c193c19ydW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9md3MsICcgXHQgZm9vICcsICcgXHQgJywgJyAnLCBbXSwgJ2ZvbyAnKQorCisgICAgIyBnZXRfZW5jb2RlZF93b3JkCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX21pc3Npbmdfc3RhcnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCdhYmMnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9taXNzaW5nX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9lbmNvZGVkX3dvcmQoJz0/YWJjJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbWlzc2luZ19taWRkbGVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCc9P2FiYz89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfdmFsaWRfZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXMtYXNjaWk/cT90aGlzX2lzX2FfdGVzdD89ICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBhIHRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgYmlyZCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2ludGVybmFsX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP3RoaXMgaXMgYSB0ZXN0Pz0gIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgYSB0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJpcmQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9nZXRzX2ZpcnN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PSAgPT91dGYtOD9xP3NlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgPT91dGYtOD9xP3NlY29uZD89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfZ2V0c19maXJzdF9ldmVuX2lmX25vX3NwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Q/PT0/dXRmLTg/cT9zZWNvbmQ/PScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3V0Zi04P3E/c2Vjb25kPz0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9zZXRzX2V4dHJhX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGV3ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaSpqaXZlP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpKmppdmU/cT9maXJzdF9zZWNvbmQ/PScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcuY2hhcnNldCwgJ3VzLWFzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5sYW5nLCAnaml2ZScpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2xhbmdfZGVmYXVsdF9pc19ibGFuayhzZWxmKToKKyAgICAgICAgZXcgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmVuY29kZWQsICc9P3VzLWFzY2lpP3E/Zmlyc3Rfc2Vjb25kPz0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmNoYXJzZXQsICd1cy1hc2NpaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcubGFuZywgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX25vbl9wcmludGFibGVfZGVmZWN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/Zmlyc3RceDAyc2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdFx4MDJzZWNvbmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbGVhZGluZ19pbnRlcm5hbF9zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/PTIwZm9vPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgICMgZ2V0X3Vuc3RydWN0dXJlZAorCisgICAgZGVmIF9nZXRfdW5zdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHRva2VuID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQodmFsdWUpCisgICAgICAgIHJldHVybiB0b2tlbiwgJycKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbnVsbChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJycsICcnLCAnJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9vbmVfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbycsICdmb28nLCAnZm9vJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ub3JtYWxfcGhyYXNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vcm1hbF9waHJhc2Vfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0IGJhciAgICAgIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9sZWFkaW5nX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICcgIGZvbyBiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90cmFpbGluZ193aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbGVhZGluZ19hbmRfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZm9vIGJhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmb28gYmFyICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfb25lX3ZhbGlkX2V3X25vX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV9ld190cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJz0/dXMtYXNjaWk/cT9iYXI/PSAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV92YWxpZF9ld190cmFpbGluZ190ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnPT91cy1hc2NpaT9xP2Jhcj89IGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X2luX21pZGRsZV9vZl90ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX3R3b19ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICdmb28gPT91cy1hc2NpaT9xP2Jhcj89ID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF90d29fZXdfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSA9P3VzLWFzY2lpP3E/YmlyZD89ICAgJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCAgICcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX2V3X3dpdGhfbGVhZGluZ193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICcgID0/dXMtYXNjaWk/cT9iYXI/PScsCisgICAgICAgICAgICAnICBiYXInLAorICAgICAgICAgICAgJyBiYXInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfcGhyYXNlX3dpdGhfdHdvX2V3X2V4dHJhX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJ2ZvbyA9P3VzLWFzY2lpP3E/YmFyPz0gXHQgID0/dXMtYXNjaWk/cT9iaXJkPz0nLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkJywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF90d29fZXdfZXh0cmFfd3NfdHJhaWxpbmdfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/dGVzdD89ICAgPT91cy1hc2NpaT9xP2Zvbz89ICB2YWwnLAorICAgICAgICAgICAgJ3Rlc3Rmb28gIHZhbCcsCisgICAgICAgICAgICAndGVzdGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfZXdfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P2lzby04ODU5LTE/cT9oZWxsbz0yMHdvcmxkPz0nLAorICAgICAgICAgICAgJ2hlbGxvIHdvcmxkJywKKyAgICAgICAgICAgICdoZWxsbyB3b3JsZCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ld193aXRoX2ludGVybmFsX2xlYWRpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnICAgPT91cy1hc2NpaT9xPz0yMHRlc3Q/PSAgID0/dXMtYXNjaWk/cT89MjBmb28/PSAgdmFsJywKKyAgICAgICAgICAgICcgICAgdGVzdCBmb28gIHZhbCcsCisgICAgICAgICAgICAnICB0ZXN0IGZvbyB2YWwnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWlsZF9ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgICc9P3Rlc3QgdmFsJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3VuZGVjb2RhYmxlX2J5dGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgYid0ZXN0IFx4QUNmb28gIHZhbCcuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICd0ZXN0IFx1RENBQ2ZvbyB2YWwnLAorICAgICAgICAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF91bmRlY29kYWJsZV9ieXRlc19pbl9FVyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgIChiJz0/dXMtYXNjaWk/cT89MjB0ZXN0Pz0gICA9P3VzLWFzY2lpP3E/PTIwXHhBQ2Zvbz89JworICAgICAgICAgICAgICAgIGInICB2YWwnKS5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgJyB0ZXN0IFx1RENBQ2ZvbyAgdmFsJywKKyAgICAgICAgICAgICcgdGVzdCBcdURDQUNmb28gdmFsJywKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9taXNzaW5nX2Jhc2U2NF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJz0/dXRmLTg/Yj9kbWs/PScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2ludmFsaWRfYmFzZTY0X2NoYXJhY3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz09PT89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfaW52YWxpZF9iYXNlNjRfY2hhcmFjdGVyX2FuZF9iYWRfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1ceDAxaz89JywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCwKKyAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX25vX3doaXRlc3BhY2VfYmV0d2Vlbl9ld3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91dGYtOD9xP2Zvbz89PT91dGYtOD9xP2Jhcj89JywKKyAgICAgICAgICAgICdmb29iYXInLAorICAgICAgICAgICAgJ2Zvb2JhcicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICAjIGdldF9xcF9jdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICcgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LnRva2VuX3R5cGUsICdwdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfYWxsX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHdpdGhfcXAgPSBzZWxmLnJmY19wcmludGFibGVfYXNjaWkucmVwbGFjZSgnXFwnLCAnXFxcXCcpCisgICAgICAgIHdpdGhfcXAgPSB3aXRoX3FwLiAgcmVwbGFjZSgnKCcsIHInXCgnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC5yZXBsYWNlKCcpJywgcidcKScpCisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9xcCwgc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLCAnICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnICcsIFtdLCAnIGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdFx0ZGUnLCAnZm9vJywgJyAnLCBbXSwgJyBcdFx0ZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX2Nsb3NlX3BhcmVuX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28pJywgJ2ZvbycsICcgJywgW10sICcpJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF93c3BfYmVmb3JlX2Nsb3NlX3BhcmVuX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgKScsICdmb28nLCAnICcsIFtdLCAnICApJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyliYXInLCAnZm9vJywgJyAnLCBbXSwgJyliYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3VwX3RvX29wZW5fcGFyZW5fb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbygnLCAnZm9vJywgJyAnLCBbXSwgJygnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X3dzcF9iZWZvcmVfb3Blbl9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICgnLCAnZm9vJywgJyAnLCBbXSwgJyAgKCcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfb3Blbl9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3FwX2N0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyhiYXInLCAnZm9vJywgJyAnLCBbXSwgJyhiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIpJywgJ2Zvb1x4MDBiYXInLCAnICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X3Fjb250ZW50CisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfb25seShzZWxmKToKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29iYXInLCAnZm9vYmFyJywgJ2Zvb2JhcicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdGV4dC50b2tlbl90eXBlLCAncHRleHQnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2FsbF9wcmludGFibGVzKHNlbGYpOgorICAgICAgICB3aXRoX3FwID0gc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC4gIHJlcGxhY2UoJyInLCByJ1wiJykKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsIHdpdGhfcXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19wcmludGFibGVfYXNjaWksIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBkZScsICdmb28nLCAnZm9vJywgW10sICcgZGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRkZScsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF91cF90b19kcXVvdGVfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfd3NwX2JlZm9yZV9jbG9zZV9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICInLCAnZm9vJywgJ2ZvbycsIFtdLCAnICAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF9jbG9zZV9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyJiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnImJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGZnIicsICdmb29ceDAwZmcnLCAnZm9vXHgwMGZnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnIicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgIyBnZXRfYXRleHQKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF9vbmx5KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcicsICdmb29iYXInLCAnZm9vYmFyJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LnRva2VuX3R5cGUsICdhdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfYWxsX2F0ZXh0KHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwgc2VsZi5yZmNfYXRleHRfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19hdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2F0ZXh0X2NoYXJzLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyBiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIFx0XHRiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X3VwX3RvX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBhdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXIoJywgJ2Zvb1x4MDBiYXInLCAnZm9vXHgwMGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJygnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X2JhcmVfcXVvdGVkX3N0cmluZworCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBicXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vIicsICciZm9vIicsICdmb28nLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnFzLnRva2VuX3R5cGUsICdiYXJlLXF1b3RlZC1zdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19tdXN0X3N0YXJ0X3dpdGhfZHF1b3RlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nKCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZygnICAiZm9vIicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIlx0IGJhcicsICciZm9vIicsICdmb28nLCBbXSwgJ1x0IGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vIGJhciBtb28iJywgJyJmb28gYmFyIG1vbyInLCAnZm9vIGJhciBtb28nLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX211bHRpcGxlX3dvcmRzX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyIgZm9vICBtb29cdCInLCAnIiBmb28gIG1vb1x0IicsICcgZm9vICBtb29cdCcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfZW5kX2RxdW90ZV9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyJiYXInLCAnImZvbyInLCAnZm9vJywgW10sICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19xdW90ZWRfZHF1b3RlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgIHInImZvb1wiaW4iYScsIHInImZvb1wiaW4iJywgJ2ZvbyJpbicsIFtdLCAnYScpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciYVx4MDFhIicsICciYVx4MDFhIicsICdhXHgwMWEnLAorICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX25vX2VuZF9kcXVvdGUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyJmb28nLCAnImZvbyInLCAnZm9vJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyAnLCAnImZvbyAiJywgJ2ZvbyAnLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19lbXB0eV9xdW90ZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIiInLCAnIiInLCAnJywgW10sICcnKQorCisgICAgIyBnZXRfY29tbWVudAorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfb25seShzZWxmKToKKyAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KScsICcoY29tbWVudCknLCAnICcsIFtdLCAnJywgWydjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudC50b2tlbl90eXBlLCAnY29tbWVudCcpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdXN0X3N0YXJ0X3dpdGhfcGFyZW4oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9jb21tZW50KCdmb28iJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2NvbW1lbnQoJyAgKGZvbyInKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhjb21tZW50KSAgXHQnLCAnKGNvbW1lbnQpJywgJyAnLCBbXSwgJyAgXHQnLCBbJ2NvbW1lbnQnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X211bHRpcGxlX3dvcmRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIGJhcikgIFx0JywgJyhmb28gYmFyKScsICcgJywgW10sICcgIFx0JywgWydmb28gYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV93b3Jkc193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoIGZvbyAgYmFyXHQgKSAgXHQnLCAnKCBmb28gIGJhclx0ICknLCAnICcsIFtdLCAnICBcdCcsCisgICAgICAgICAgICAgICAgWycgZm9vICBiYXJcdCAnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VuZF9wYXJlbl9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyliYXInLCAnKGZvbyknLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3F1b3RlZF9wYXJlbnMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb29cKSBcKFwpYmFyKScsICcoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vXHg3RmJhciknLCAnKGZvb1x4N0ZiYXIpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJywgWydmb29ceDdGYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub19lbmRfcGFyZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb28gYmFyJywgJyhmb28gYmFyKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXInXSkKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyBiYXIgICcsICcoZm9vIGJhciAgKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyBiYXIgICddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vKGJhcikpJywgJyhmb28oYmFyKSknLCAnICcsIFtdLCAnJywgWydmb28oYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMV0uY29udGVudCwgJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9uZXN0ZWRfY29tbWVudF93c3Aoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vICggYmFyICkgKScsICcoZm9vICggYmFyICkgKScsICcgJywgW10sICcnLCBbJ2ZvbyAoIGJhciApICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJyBiYXIgJykKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2VtcHR5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJygpJywgJygpJywgJyAnLCBbXSwgJycsIFsnJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV9uZXN0aW5nKHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKCgoKChmb28pKSkpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLCBbXSwgJycsIFsnKCgoKGZvbykpKSknXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCwgMCwgLTEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzBdLmNvbnRlbnQsICcoJyooaS0xKSsnZm9vJysnKScqKGktMSkpCisgICAgICAgICAgICBjb21tZW50ID0gY29tbWVudFswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnQuY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9taXNzaW5nX2VuZF9vZl9uZXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoKCgoKGZvbykpKScsICcoKCgoKGZvbykpKSkpJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLCAnJywgWycoKCgoZm9vKSkpKSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJ2IpJykKKworICAgICMgZ2V0X2Nmd3MKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX29ubHlfd3Moc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIFx0IFx0JywgJyAgXHQgXHQnLCAnICcsIFtdLCAnJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3cy50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcoZm9vKScsICcoZm9vKScsICcgJywgW10sICcnLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X21peGVkKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnIChmb28gKSAgKCBiYXIpICcsICcgKGZvbyApICAoIGJhcikgJywgJyAnLCBbXSwgJycsCisgICAgICAgICAgICAgICAgWydmb28gJywgJyBiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzFdLmNvbnRlbnQsICdmb28gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzNdLmNvbnRlbnQsICcgYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2VuZHNfYXRfbm9uX2xlYWRlcihzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28pIGJhcicsICcoZm9vKSAnLCAnICcsIFtdLCAnYmFyJywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbnRlbnQsICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfZW5kc19hdF9ub25fcHJpbnRhYmxlKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbykgXHgwNycsICcoZm9vKSAnLCAnICcsIFtdLCAnXHgwNycsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1swXS5jb250ZW50LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28gXHgwNykgInRlc3QiJywgJyhmb28gXHgwNykgJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnInRlc3QiJywgWydmb28gXHgwNyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbyBceDA3JykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcgIChmb28gJywgJyAgKGZvbyApJywgJyAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycsIFsnZm9vICddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMV0uY29udGVudCwgJ2ZvbyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3NfbXVsdGlwbGVfbmVzdGVkX2NvbW1lbnRzKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnKGZvbyAoYmFyKSkgKChhKShhKSknLCAnICcsIFtdLAorICAgICAgICAgICAgICAgICcnLCBbJ2ZvbyAoYmFyKScsICcoYSkoYSknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbW1lbnRzLCBbJ2ZvbyAoYmFyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMl0uY29tbWVudHMsIFsnKGEpKGEpJ10pCisKKyAgICAjIGdldF9xdW90ZWRfc3RyaW5nCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19vbmx5KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyJib2IiJywgJyJib2IiJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnImJvYiInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgICcsICdcdCAiYm9iIiAgJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9jb21tZW50c19hbmRfd3NwKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoZm9vKSAiYm9iIihiYXIpJywgJyAoZm9vKSAiYm9iIihiYXIpJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdWzFdLmNvbnRlbnQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdWzBdLmNvbnRlbnQsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIiAnKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKGZvbykgKGJhcikgImJvYiIoYmlyZCknLCAnIChmb28pIChiYXIpICJib2IiKGJpcmQpJywgJyBib2IgJywKKyAgICAgICAgICAgICAgICBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2JpcmQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKFx4MEEpICJib2IiJywgJyAoXHgwQSkgImJvYiInLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydceDBBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vbl9wcmludGFibGVfaW5fcWNvbnRlbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYVx4MEIiJywgJyAoYSkgImFceDBCIicsICcgYVx4MEInLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdhXHgwQicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJhXHgwQiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfaW50ZXJuYWxfd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiZm9vICBiYXIgIicsICcgKGEpICJmb28gIGJhciAiJywgJyBmb28gIGJhciAnLAorICAgICAgICAgICAgICAgIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2ZvbyAgYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJmb28gIGJhciAiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChhKSAiYm9iIiAoYScsICcgKGEpICJib2IiIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzJdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2hlYWRlcl9lbmRzX2luX3Fjb250ZW50KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImJvYicsICcgKGEpICJib2IiJywgJyBib2InLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiInKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfbm9fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcoJyAoYWIpIHh5eicpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19xc19lbmRzX2F0X25vbmNmd3Moc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnXHQgImJvYiIgZmVlJywgJ1x0ICJib2IiICcsICcgYm9iICcsIFtdLCAnZmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgICMgZ2V0X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX29ubHkoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdib2InLCAnYm9iJywgJ2JvYicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tLnRva2VuX3R5cGUsICdhdG9tJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfd3NwKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICdcdCBib2IgICcsICdcdCBib2IgICcsICcgYm9iICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSBib2IoYmFyKScsICcgKGZvbykgYm9iKGJhciknLCAnIGJvYiAnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXVsxXS5jb250ZW50LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzJdWzBdLmNvbnRlbnQsICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fd2l0aF9tdWx0aXBsZV9jb21tZW50cyhzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSAoYmFyKSBib2IoYmlyZCknLCAnIChmb28pIChiYXIpIGJvYihiaXJkKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJywgJ2JhciddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMl0uY29tbWVudHMsIFsnYmlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fbm9uX3ByaW50YWJsZV9pbl9jb21tZW50KHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChceDBBKSBib2InLCAnIChceDBBKSBib2InLCAnIGJvYicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ1x4MEEnXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vbl9wcmludGFibGVfaW5fYXRleHQoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGEpIGFceDBCJywgJyAoYSkgYVx4MEInLCAnIGFceDBCJywKKyAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnYSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21faGVhZGVyX2VuZHNfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoYSkgYm9iIChhJywgJyAoYSkgYm9iIChhKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydhJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9ub19hdG9tKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYXRvbSgnIChhYikgJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vX2F0b21fYmVmb3JlX3NwZWNpYWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hdG9tKCcgKGFiKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChmb28pIGJvYihiYXIpICBAYmFuZycsICcgKGZvbykgYm9iKGJhcikgICcsICcgYm9iICcsIFtdLCAnQGJhbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXS5jb21tZW50cywgWydiYXInXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2F0b21fZW5kc19hdF9ub25jZndzKHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnYm9iICBmcmVkJywgJ2JvYiAgJywgJ2JvYiAnLCBbXSwgJ2ZyZWQnKQorCisgICAgIyBnZXRfZG90X2F0b21fdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28uYmFyLmJhbmcnLCAnZm9vLmJhci5iYW5nJywgJ2Zvby5iYXIuYmFuZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbV90ZXh0LnRva2VuX3R5cGUsICdkb3QtYXRvbS10ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG90X2F0b21fdGV4dCksIDUpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9sb25lX2F0b21faXNfdmFsaWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb28nLCAnZm9vJywgJ2ZvbycsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl9sZWFkaW5nX2RvdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQoJy5mb28uYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3JhaXNlc19vbl90cmFpbGluZ19kb3Qoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdmb28uYmFyLicpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9yYWlzZXNfb25fbGVhZGluZ19ub25fYXRleHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCcgZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCdAZm9vLmJhcicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCciZm9vLmJhciInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfdGV4dF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIGRvdF9hdG9tX3RleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCwKKyAgICAgICAgICAgICdmb29AYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ0BiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfdHJhaWxpbmdfd3NfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vIC5iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIC5iYXInKQorCisgICAgIyBnZXRfZG90X2F0b20KKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV9vbmx5KHNlbGYpOgorICAgICAgICBkb3RfYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdmb28uYmFyLmJpbmcnLCAnZm9vLmJhci5iaW5nJywgJ2Zvby5iYXIuYmluZycsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb3RfYXRvbS50b2tlbl90eXBlLCAnZG90LWF0b20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb3RfYXRvbSksIDEpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fd2l0aF93c3Aoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICdcdCAgZm9vLmJhci5iaW5nICAnLCAnXHQgIGZvby5iYXIuYmluZyAgJywgJyBmb28uYmFyLmJpbmcgJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywgJyAoc2luZykgIGZvby5iYXIuYmluZyAoaGVyZSkgJywKKyAgICAgICAgICAgICAgICAnIGZvby5iYXIuYmluZyAnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fc3BhY2VfZW5kc19kb3RfYXRvbShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tLAorICAgICAgICAgICAgJyAoc2luZykgIGZvby5iYXIgLmJpbmcgKGhlcmUpICcsICcgKHNpbmcpICBmb28uYmFyICcsCisgICAgICAgICAgICAgICAgJyBmb28uYmFyICcsIFtdLCAnLmJpbmcgKGhlcmUpICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbm9fYXRvbV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnIChmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fbGVhZGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSAuYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90d29fZG90c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbSgnYmFyLi5iYW5nJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90cmFpbGluZ19kb3RfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSBiYXIuYmFuZy4gZm9vJykKKworICAgICMgZ2V0X3dvcmQgKGlmIHRoaXMgd2VyZSBibGFjayBib3ggd2UnZCByZXBlYXQgYWxsIHRoZSBxcy9hdG9tIHRlc3RzKQorCisgICAgZGVmIHRlc3RfZ2V0X3dvcmRfYXRvbV95aWVsZHNfYXRvbShzZWxmKToKKyAgICAgICAgd29yZCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF93b3JkLAorICAgICAgICAgICAgJyAoZm9vKSBiYXIgKGJhbmcpIDphaCcsICcgKGZvbykgYmFyIChiYW5nKSAnLCAnIGJhciAnLCBbXSwgJzphaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAnYXRvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnY2Z3cycpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9xc195aWVsZHNfcXMoc2VsZik6CisgICAgICAgIHdvcmQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfd29yZCwKKyAgICAgICAgICAgICciYmFyICIgKGJhbmcpIGFoJywgJyJiYXIgIiAoYmFuZykgJywgJ2JhciAgJywgW10sICdhaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC50b2tlbl90eXBlLCAncXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS50b2tlbl90eXBlLCAnYmFyZS1xdW90ZWQtc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3b3JkWzBdLnZhbHVlLCAnYmFyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZC5jb250ZW50LCAnYmFyICcpCisKKyAgICBkZWYgdGVzdF9nZXRfd29yZF9lbmRzX2F0X2RvdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3dvcmQsCisgICAgICAgICAgICAnZm9vLicsICdmb28nLCAnZm9vJywgW10sICcuJykKKworICAgICMgZ2V0X3BocmFzZQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9zaW1wbGUoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUsIG9oLicsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUnLAorICAgICAgICAgICAgJ0ZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIG9oLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlLnRva2VuX3R5cGUsICdwaHJhc2UnKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9jb21wbGV4KHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJyAoQSkgYmlyZCAoaW4gKG15fHlvdXIpKSAiaGFuZCAgIiBpcyBtZXNzeVx0PD5cdCcsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQnLAorICAgICAgICAgICAgJyBiaXJkIGhhbmQgICBpcyBtZXNzeSAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnPD5cdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdWzBdLmNvbW1lbnRzLCBbJ0EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaHJhc2VbMF1bMl0uY29tbWVudHMsIFsnaW4gKG15fHlvdXIpJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfcGhyYXNlX29ic29sZXRlKHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEuIC5PIEpvaG5zb24nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaHJhc2UpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVszXS5jb21tZW50cywgWyd3ZWlyZCddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9waGFyc2VfbXVzdF9zdGFydF93aXRoX3dvcmQoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnIC5uYW1lJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0gKyBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdLmNvbW1lbnRzLCBbJ2V2ZW4gd2VpcmRlciddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgcGhyYXNlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3BocmFzZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4gJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnOmJvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBocmFzZSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzNdLmNvbW1lbnRzLCBbJ3dpdGggdHJhaWxpbmcgY29tbWVudCddKQorCisgICAgZGVmIGdldF9waHJhc2VfY2Z3c19vbmx5X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X3BocmFzZSgnIChmb28pICcpCisKKyAgICAjIGdldF9sb2NhbF9wYXJ0CisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zaW1wbGUoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBweXRob24ub3JnJywgJ2RpbnNkYWxlJywgJ2RpbnNkYWxlJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLkEuSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZC5BLkpvaG5zb24nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3dpdGhfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyBGcmVkLkEuSm9obnNvbiAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgKGZvbykgRnJlZC5BLkpvaG5zb24gKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pIEZyZWQuQS5Kb2huc29uIChiYXIgKGJpcmQpKSAgJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVswXS5jb21tZW50cywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0WzBdWzJdLmNvbW1lbnRzLCBbJ2JhciAoYmlyZCknXSkKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9xdW90ZWQoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICciZGluc2RhbGUiQHB5dGhvbi5vcmcnLCAnImRpbnNkYWxlIicsICciZGluc2RhbGUiJywgW10sICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC50b2tlbl90eXBlLCAnbG9jYWwtcGFydCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9xdW90ZWRfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIkZyZWQuQS5Kb2huc29uIkBweXRob24ub3JnJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgICciRnJlZC5BLkpvaG5zb24iJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnICJGcmVkIEEuIEpvaG5zb24iICAnLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBKb2huc29uIiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQgQS4gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28pICIgRnJlZCBBLiBKb2huc29uICIgKGJhciAoYmlyZCkpICAnLAorICAgICAgICAgICAgJyAiIEZyZWQgQS4gSm9obnNvbiAiICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnIEZyZWQgQS4gSm9obnNvbiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnRbMF1bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVsyXS5jb21tZW50cywgWydiYXIgKGJpcmQpJ10pCisKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NpbXBsZV9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbkBweXRob24ub3JnJywKKyAgICAgICAgICAgICdGcmVkLiBBLkpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQuIEEuSm9obnNvbicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV8xKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24uImFuZCAgZG9ncyAiQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uLiJhbmQgIGRvZ3MgIicsCisgICAgICAgICAgICAnIEZyZWQgLiBBLiBKb2huc29uLmFuZCAgZG9ncyAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uLmFuZCAgZG9ncyAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfY29tcGxleF9vYnNvbGV0ZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyJAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIChmb28gKUZyZWQgKGJhcikuKGJpcmQpIEEuKHNoZWVwKUpvaG5zb24gImFuZCAgZG9ncyInLAorICAgICAgICAgICAgJyBGcmVkIC4gQS4gSm9obnNvbiBhbmQgIGRvZ3MnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbiBhbmQgIGRvZ3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbm9fcGFydF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3NwZWNpYWxfaW5zdGVhZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9sb2NhbF9wYXJ0KCcgKGZvbykgQHB5dGhvbi5vcmcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdHJhaWxpbmdfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIGJvcnJpcy5AcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIGJvcnJpcy4nLAorICAgICAgICAgICAgJyBib3JyaXMuJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF90cmFpbGluZ19kb3Rfd2l0aF93cyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuIEBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLiAnLAorICAgICAgICAgICAgJyBib3JyaXMuICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2JvcnJpcy4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfbGVhZGluZ19kb3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcuYm9ycmlzQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgJy5ib3JyaXMnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICcuYm9ycmlzJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2xlYWRpbmdfZG90X2FmdGVyX3dzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIC5ib3JyaXNAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIC5ib3JyaXMnLAorICAgICAgICAgICAgJyAuYm9ycmlzJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnLmJvcnJpcycpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9kb3VibGVfZG90X3JhaXNlcyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuKGZvbykubmF0YXNoYUBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgYm9ycmlzLihmb28pLm5hdGFzaGEnLAorICAgICAgICAgICAgJyBib3JyaXMuIC5uYXRhc2hhJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnYm9ycmlzLi5uYXRhc2hhJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSInLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdmFsaWRfYW5kX2ludmFsaWRfcXBfaW5fYXRvbV9saXN0KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICByJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIHInIlxcImV4YW1wbGVcXCIgZXhhbXBsZSInLAorICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSo1LAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCByJ1xleGFtcGxlXFwgZXhhbXBsZScpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF91bmljb2RlX2RlZmVjdChzZWxmKToKKyAgICAgICAgIyBDdXJyZW50bHkgdGhpcyBvbmx5IGhhcHBlbnMgd2hlbiBwYXJzaW5nIHVuaWNvZGUsIG5vdCB3aGVuIHBhcnNpbmcKKyAgICAgICAgIyBzdHVmZiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJpbmFyeS4KKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJ2V4w6FtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleMOhbXBsZScsCisgICAgICAgICAgICAnZXjDoW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdF0sCisgICAgICAgICAgICAnQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdleMOhbXBsZScpCisKKyAgICAjIGdldF9kdGV4dAorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29ubHkoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICdmb29iYXInLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQudG9rZW5fdHlwZSwgJ3B0ZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF9hbGxfZHRleHQoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LCBzZWxmLnJmY19kdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2R0ZXh0X2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfZHRleHRfY2hhcnMsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF90d29fd29yZHNfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gXHRcdGJhcicsICdmb28nLCAnZm9vJywgW10sICcgXHRcdGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfbm9uX3ByaW50YWJsZXMoc2VsZik6CisgICAgICAgIGR0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXHgwMGJhcl0nLCAnZm9vXHgwMGJhcicsICdmb29ceDAwYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRleHQuZGVmZWN0c1swXS5ub25fcHJpbnRhYmxlc1swXSwgJ1x4MDAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dpdGhfcXAoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29cXVxbXFxiYXJcYlxlXGxcbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2Zvb11bXGJhcmJlbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29dW1xiYXJiZWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fY2xvc2VfYnJhY2tldF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vXScsICdmb28nLCAnZm9vJywgW10sICddJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF93c3BfYmVmb3JlX2Nsb3NlX2JyYWNrZXRfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vICBdJywgJ2ZvbycsICdmb28nLCBbXSwgJyAgXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfY2xvc2VfYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb11iYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnXWJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdXBfdG9fb3Blbl9icmFja2V0X29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29bJywgJ2ZvbycsICdmb28nLCBbXSwgJ1snKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3dzcF9iZWZvcmVfb3Blbl9icmFja2V0X3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgWycsICdmb28nLCAnZm9vJywgW10sICcgIFsnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X29wZW5fYnJhY2tldF9taWRfd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1tiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnW2JhcicpCisKKyAgICAjIGdldF9kb21haW5fbGl0ZXJhbAorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX29ubHkoc2VsZik6CisgICAgICAgIGRvbWFpbl9saXRlcmFsID0gZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC50b2tlbl90eXBlLCAnZG9tYWluLWxpdGVyYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfd2l0aF9pbnRlcm5hbF93cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbICAxMjcuMC4wLjFcdCBdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sgIDEyNy4wLjAuMVx0IF0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyAxMjcuMC4wLjEgXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuaXAsICcxMjcuMC4wLjEnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX3dpdGhfc3Vycm91bmRpbmdfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluX2xpdGVyYWwgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsgIDEyNy4wLjAuMV0gKGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbICAxMjcuMC4wLjFdIChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbIDEyNy4wLjAuMV0gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5pcCwgJzEyNy4wLjAuMScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfbm9fc3RhcnRfY2hhcl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9ub19zdGFydF9jaGFyX2JlZm9yZV9zcGVjaWFsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsKCcoZm9vKSBAJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9iYWRfZHRleHRfY2hhcl9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgW2FiY1tAJykKKworICAgICMgZ2V0X2RvbWFpbgorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9yZWd1bGFyX2RvbWFpbl9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9kb21haW5fbGl0ZXJhbF9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi50b2tlbl90eXBlLCAnZG9tYWluJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGRvbWFpbiA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUuY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl9saXRlcmFsX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl93aXRoX2Nmd3NfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKWV4YW1wbGUuY29tXHQoYmFyKSwgbmV4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pZXhhbXBsZS5jb21cdChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUuY29tICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fZG9tYWluX2xpdGVyYWxfd2l0aF9jZndzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciksIG5leHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKVsxMjcuMC4wLjFdXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBbMTI3LjAuMC4xXSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlIC4gKGJpcmQpY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pIGV4YW1wbGUgLiAoYmlyZCljb20oYmFyKVx0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4YW1wbGUgLiBjb20gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9ub19ub25fY2Z3c19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW4oIiAgKGZvbylcdCIpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX25vX2F0b21fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluKCIgIChmb28pXHQsIGJyb2tlbiIpCisKKworICAgICMgZ2V0X2FkZHJfc3BlYworCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19ub3JtYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy50b2tlbl90eXBlLCAnYWRkci1zcGVjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfZG9hbWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmFkZHJfc3BlYywgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyX3NwZWNfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcoZm9vKSBkaW5zZGFsZShiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcgZGluc2RhbGVAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfcW91b3RlZF9zdHJpbmdfYW5kX2Nmd3Moc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKScsCisgICAgICAgICAgICAgICAgJyAicm95IGEgYnVnIkBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAncm95IGEgYnVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICcicm95IGEgYnVnIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcl9zcGVjID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAnKGZvbykgInJveSBhIGJ1ZyIoYmFyKUAgKGJpcmQpIGV4YW1wbGUuY29tIChib2cpICwgbmV4dCcsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKSAnLAorICAgICAgICAgICAgICAgICcgInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3JveSBhIGJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZXhhbXBsZSBleGFtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX2RvdF9hdG9tKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgJ3N0YXIuYS5zdGFyQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnc3Rhci5hLnN0YXJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3N0YXIuYS5zdGFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScpCisKKyAgICAjIGdldF9vYnNfcm91dGUKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfc2ltcGxlKHNlbGYpOgorICAgICAgICBvYnNfcm91dGUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfb2JzX3JvdXRlLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbSwgQHR3by5leGFtcGxlLmNvbTonLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUudG9rZW5fdHlwZSwgJ29icy1yb3V0ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzX3JvdXRlLmRvbWFpbnMsIFsnZXhhbXBsZS5jb20nLCAndHdvLmV4YW1wbGUuY29tJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX2NvbXBsZXgoc2VsZik6CisgICAgICAgIG9ic19yb3V0ZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9vYnNfcm91dGUsCisgICAgICAgICAgICAnKGZvbyksLCAoYmx1ZSlAZXhhbXBsZS5jb20gKGJhciksQHR3by4oZm9vKSBleGFtcGxlLmNvbSAoYmlyZCk6JywKKyAgICAgICAgICAgICcoZm9vKSwsIChibHVlKUBleGFtcGxlLmNvbSAoYmFyKSxAdHdvLihmb28pIGV4YW1wbGUuY29tIChiaXJkKTonLAorICAgICAgICAgICAgJyAsLCBAZXhhbXBsZS5jb20gLEB0d28uIGV4YW1wbGUuY29tIDonLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICAjIFRoaXMgaXMgdGhlIG9icy1kb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic19yb3V0ZS50b2tlbl90eXBlLCAnb2JzLXJvdXRlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUuZG9tYWlucywgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfbm9fcm91dGVfYmVmb3JlX2VuZF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSwnKQorCisgICAgZGVmIHRlc3RfZ2V0X29ic19yb3V0ZV9ub19yb3V0ZV9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIFthYmNdLCcpCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX25vX3JvdXRlX2JlZm9yZV9zcGVjaWFsX3JhaXNlczIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9vYnNfcm91dGUoJyhmb28pIEBleGFtcGxlLmNvbSBbYWJjXSwnKQorCisgICAgIyBnZXRfYW5nbGVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfc2ltcGxlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIudG9rZW5fdHlwZSwgJ2FuZ2xlLWFkZHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VtcHR5KHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci50b2tlbl90eXBlLCAnYW5nbGUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIubG9jYWxfcGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgKGZvbykgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpJywKKyAgICAgICAgICAgICcgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLnRva2VuX3R5cGUsICdhbmdsZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9xc19hbmRfZG9tYWluX2xpdGVyYWwoc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgICc8IkZyZWQgUGVyZmVjdCJAWzEyNy4wLjAuMV0+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnRnJlZCBQZXJmZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJyJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2ludGVybmFsX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8KGZvbykgZGluc2RhbGVAZXhhbXBsZS5jb20oYmFyKT4nLAorICAgICAgICAgICAgJzwoZm9vKSBkaW5zZGFsZUBleGFtcGxlLmNvbShiYXIpPicsCisgICAgICAgICAgICAnPCBkaW5zZGFsZUBleGFtcGxlLmNvbSA+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfb2JzX3JvdXRlKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnKGZvbyk8QGV4YW1wbGUuY29tLCAoYmlyZCkgQHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+IChiYXIpICcsCisgICAgICAgICAgICAnIDxAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5yb3V0ZSwgWydleGFtcGxlLmNvbScsICd0d28uZXhhbXBsZS5jb20nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX21pc3NpbmdfY2xvc2luZ19hbmdsZShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbWlzc2luZ19jbG9zaW5nX2FuZ2xlX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbSAoZm9vKScsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tIChmb28pPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tID4nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyksIG5leHQnLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGZvbyknLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfcmFpc2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hbmdsZV9hZGRyKCcoZm9vKSAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfbm9fYW5nbGVfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYW5nbGVfYWRkcignKGZvbykgLCBuZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX25vX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJ2JhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9zcGVjaWFsX2FmdGVyX2FuZ2xlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJyhmb28pIDwsIGJhcicpCisKKyAgICAjIGdldF9kaXNwbGF5X25hbWUgIFRoaXMgaXMgcGhyYXNlIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHZhbHVlLgorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9zaW1wbGUoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnRnJlZCBBIEpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQgQSBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEgSm9obnNvbicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBIEpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9jb21wbGV4MShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZSwgb2guJywKKyAgICAgICAgICAgICciRnJlZCBBLiBKb2huc29uIiBpcyBoaXMgbmFtZScsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZSInLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBvaC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS50b2tlbl90eXBlLCAnZGlzcGxheS1uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnRnJlZCBBLiBKb2huc29uIGlzIGhpcyBuYW1lJykKKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfY29tcGxleDIoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQ8Plx0JywKKyAgICAgICAgICAgICcgKEEpIGJpcmQgKGluIChteXx5b3VyKSkgImhhbmQgICIgaXMgbWVzc3lcdCcsCisgICAgICAgICAgICAnICJiaXJkIGhhbmQgICBpcyBtZXNzeSIgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJzw+XHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXVswXS5jb21tZW50cywgWydBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzBdWzJdLmNvbW1lbnRzLCBbJ2luIChteXx5b3VyKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS5kaXNwbGF5X25hbWUsICdiaXJkIGhhbmQgICBpcyBtZXNzeScpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX29ic29sZXRlKHNlbGYpOgorICAgICAgICBkaXNwbGF5X25hbWUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLih3ZWlyZCkuTyBKb2huc29uJywKKyAgICAgICAgICAgICciRnJlZCBBLiAuTyBKb2huc29uIicsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpc3BsYXlfbmFtZSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzNdLmNvbW1lbnRzLCBbJ3dlaXJkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ0ZyZWQgQS4gLk8gSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX3BoYXJzZV9tdXN0X3N0YXJ0X3dpdGhfd29yZChzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcoZXZlbiB3ZWlyZGVyKS5uYW1lJywKKyAgICAgICAgICAgICcgIi5uYW1lIicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdICsgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXNwbGF5X25hbWUpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXS5jb21tZW50cywgWydldmVuIHdlaXJkZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnLm5hbWUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9lbmRpbmdfd2l0aF9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdzaW1wbGUgcGhyYXNlLih3aXRoIHRyYWlsaW5nIGNvbW1lbnQpOmJvbycsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KScsCisgICAgICAgICAgICAnInNpbXBsZSBwaHJhc2UuIiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICc6Ym9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlzcGxheV9uYW1lKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWVbM10uY29tbWVudHMsIFsnd2l0aCB0cmFpbGluZyBjb21tZW50J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ3NpbXBsZSBwaHJhc2UuJykKKworICAgICMgZ2V0X25hbWVfYWRkcgorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl9hbmdsZV9hZGRyX29ubHkoc2VsZik6CisgICAgICAgIG5hbWVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9uYW1lX2FkZHIsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci50b2tlbl90eXBlLCAnbmFtZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ0RpbnNkYWxlIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIudG9rZW5fdHlwZSwgJ25hbWUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ0RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYXRvbV9uYW1lX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICcoZm9vKSBEaW5zZGFsZSAoYmFyKSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+IChiaXJkKScsCisgICAgICAgICAgICAnKGZvbykgRGluc2RhbGUgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyBEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+ICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdEaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25hbWVfd2l0aF9jZndzX2FuZF9kb3RzKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyhmb28pIFJveS5BLkJlYXIgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyAiUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdSb3kuQS5CZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfcXNfbmFtZShzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ1JveS5BLkJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl93aXRoX3JvdXRlKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8QHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxAdHdvLmV4YW1wbGUuY29tOiBkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIucm91dGUsIFsndHdvLmV4YW1wbGUuY29tJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCBuZXh0JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25vX2NvbnRlbnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbmFtZV9hZGRyKCcgKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fY29udGVudF9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9uYW1lX2FkZHIoJyAoZm9vKSAsJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfbm9fYW5nbGVfYWZ0ZXJfZGlzcGxheV9uYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X25hbWVfYWRkcignZm9vIGJhcicpCisKKyAgICAjIGdldF9tYWlsYm94CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9hZGRyX3NwZWNfb25seShzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfYW5nbGVfYWRkcl9vbmx5KHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9uYW1lX2FkZHIoc2VsZik6CisgICAgICAgIG1haWxib3ggPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveCwKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kaXNwbGF5X25hbWUsICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfZW5kc19hdF9zcGVjaWFsKHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCByZXN0JywKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIHJlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZGlzcGxheV9uYW1lLCAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X3F1b3RlZF9zdHJpbmdzX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nKQorCisgICAgIyBnZXRfbWFpbGJveF9saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3NpbmdsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBtYWlsYm94ID0gbWFpbGJveF9saXN0Lm1haWxib3hlc1swXQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfdHdvX3NpbXBsZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbSwgZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20sIGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QudG9rZW5fdHlwZSwgJ21haWxib3gtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF90d29fbmFtZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3R3b19jb21wbGV4KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCcoZm9vKSAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4oYmFyKSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnKGZvbykgIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+KGJhciksJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuKGJpcmQpZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyAiUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LiBleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF91bnBhcnNlYWJsZV9tYWlsYm94X251bGwoc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciJbXSBkaW5zZGFsZUBleGFtcGxlLmNvbSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIltdIGRpbnNkYWxlQGV4YW1wbGUuY29tLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LihiaXJkKWV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiW10gZGluc2RhbGVAZXhhbXBsZS5jb20sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuIGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlICdleHRyYScgdGV4dCBhZnRlciB0aGUgbG9jYWwgcGFydAorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgdGhlIGxvY2FsIHBhcnQgd2l0aCBubyBhbmdsZS1hZGRyCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAgIyBwZXJpb2QgaW4gZXh0cmEgdGV4dCAoZXhhbXBsZS5jb20pCisgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyAoYmlyZCkgaW4gdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJyJSb3kgQS4gQmVhciInKQorICAgICAgICBzZWxmLmFzc2VydElzKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0Lm1haWxib3hlc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9qdW5rX2FmdGVyX3ZhbGlkX2FkZHJlc3Moc2VsZik6CisgICAgICAgIG1haWxib3hfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94X2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPkBALCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT5AQCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+QEAsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZC1tYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfZW1wdHlfbGlzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sIChiaXJkKSwsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgKGJpcmQpLCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAsLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEZsaW50c3RvbmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9vbmx5X2VtcHR5X2VsZW1lbnRzKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyhmb28pLCwgKGJhciknLAorICAgICAgICAgICAgJyAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzKQorCisgICAgIyBnZXRfZ3JvdXBfbGlzdAorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2xpc3RfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGhpZGRlbik7JywKKyAgICAgICAgICAgICcoaGlkZGVuKScsCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICc7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X21haWxib3hfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUub3JnLCAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5vcmc+JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLm9yZywgIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUub3JnPicsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5vcmcsICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLm9yZz4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbGlzdF9vYnNfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJywgKGZvbyksLChiYXIpJywKKyAgICAgICAgICAgICcsIChmb28pLCwoYmFyKScsCisgICAgICAgICAgICAnLCAsLCAnLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X2NvbW1lbnRfb25seV9pbnZhbGlkKHNlbGYpOgorICAgICAgICBncm91cF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwX2xpc3QsCisgICAgICAgICAgICAnKGJhciknLAorICAgICAgICAgICAgJyhiYXIpJywKKyAgICAgICAgICAgICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0LnRva2VuX3R5cGUsICdncm91cC1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXBfbGlzdC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2xpc3QuYWxsX21haWxib3hlcykKKworICAgICMgZ2V0X2dyb3VwCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfZW1wdHkoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbnVsbF9hZGRyX3NwZWMoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ2ZvbzogPD47JywKKyAgICAgICAgICAgICdmb286IDw+OycsCisgICAgICAgICAgICAnZm9vOiA8PjsnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLmFsbF9tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmFsbF9tYWlsYm94ZXNbMF0udmFsdWUsICc8PicpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfY2Z3c19vbmx5KHNlbGYpOgorICAgICAgICBncm91cCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IChoaWRkZW4pOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAoaGlkZGVuKTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9zaW5nbGVfbWFpbGJveChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+OycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbWl4ZWRfbGlzdChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIDxwaW5nQGV4YW1wZWxlLmNvbT4sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgICgnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnKGZvbykgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgUm9nZXIgPHBpbmdAZXhhbXBlbGUuY29tPiwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdSb2dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzJdLmxvY2FsX3BhcnQsICd4JykKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9vbmVfaW52YWxpZChzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIHBpbmdAZXhhbXBlbGUuY29tLCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyBSb2dlciBwaW5nQGV4YW1wZWxlLmNvbSwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgbm9uLWFuZ2xlIGFkZHIgbWFrZXMgbG9jYWwgcGFydCBpbnZhbGlkCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAgICMgYW5kIGl0cyBub3Qgb2JzLWxvY2FsIGVpdGhlcjogbm8gZG90cy4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLnRva2VuX3R5cGUsICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAuZGlzcGxheV9uYW1lLCAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JvdXAuYWxsX21haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5tYWlsYm94ZXNbMV0ubG9jYWxfcGFydCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShncm91cC5hbGxfbWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSkKKworICAgICMgZ2V0X2FkZHJlc3MKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX3NpbXBsZShzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfY29tcGxleChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyhmb28pICJGcmVkIEEuIEJlYXIiIDwoYmlyZClkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBCZWFyIiA8IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MudG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ21haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19ncm91cChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogeEBleGFtcGxlLmNvbSwgeUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAneCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJyJmb28gYmFyIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnImZvbyBiYXIiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciZm9vIGJhciJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBuZXh0JywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2ludmFsaWRfbWFpbGJveF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbSwgbmV4dCcsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAncGluZyBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgYWRkci1zcGVjIHdpdGggbm8gZG9tYWluCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgaW52YWxpZCBsb2NhbC1wYXJ0CisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgICMgbWlzc2luZyAucyBpbiBsb2NhbC1wYXJ0CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5hbGxfbWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmRvbWFpbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLmFsbF9tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ3BpbmcgZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NbMF0udG9rZW5fdHlwZSwgJ2ludmFsaWQtbWFpbGJveCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdleGFtcGxlIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJykKKworCisgICAgIyBnZXRfYWRkcmVzc19saXN0CisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0WzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYWRkcmVzc19saXN0WzBdLmRpc3BsYXlfbmFtZSkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX3R3b19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnZm9vQGV4YW1wbGUuY29tLCAiRnJlZCBBLiBCYXIiIDxiYXJAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20sICJGcmVkIEEuIEJhciIgPGJhckBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbSwgIkZyZWQgQS4gQmFyIiA8YmFyQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwgIkZyZWQgQS4gQmFyIikKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfbWFpbGJveGVzX2NvbXBsZXgoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICcocGluZykgRm9vIDx4QGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCA8eUAoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPHlAKGJpcmQpZXhhbXBsZS4oYmFkKWNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJ0ZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICciTm9ib2R5IElzLiBTcGVjaWFsIiA8eUBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0LCAjIHBlcmlvZCBpbiBJcy4KKyAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICMgY2Z3cyBpbiBkb21haW4KKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHIoeCkgZm9yIHggaW4gYWRkcmVzc19saXN0LmFkZHJlc3Nlc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1sxXS5sb2NhbF9wYXJ0LCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1syXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19pbnZhbGlkX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyhwaW5nKSBGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnTm9ib2R5IElzLiBTcGVjaWFsIDwoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyB4QGV4YW1wbGUuY29tW10sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPChiaXJkKWV4YW1wbGUuKGJhZCljb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnIk5vYm9keSBJcy4gU3BlY2lhbCIgPCBleGFtcGxlLiBjb20+JyksCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgaW52YWxpZCBhZGRyZXNzIGluIGxpc3QKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyAnRm9vIHgnIGxvY2FsIHBhcnQgaW52YWxpZC4KKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBNaXNzaW5nIC4gaW4gJ0ZvbyB4JyBsb2NhbCBwYXJ0CisgICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCwgICMgcGVyaW9kIGluICdJcy4nIGRpc3AtbmFtZSBwaHJhc2UKKyAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QsICAgIyBubyBkb21haW4gcGFydCBpbiBhZGRyLXNwZWMKKyAgICAgICAgICAgICAgZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwgIyBhZGRyLXNwZWMgaGFzIGNvbW1lbnQgaW4gaXQKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0udG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0ubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdGb28geCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICJOb2JvZHkgSXMuIFNwZWNpYWwiKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9ncm91cF9lbXB0eShzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IDsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiA7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LnRva2VuX3R5cGUsICdhZGRyZXNzLWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfZ3JvdXBfc2ltcGxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiBkaW5zZGFsZUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X2dyb3VwX2FuZF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb20sICJGcmVkIiA8ZmxpbnRAZXhhbXBsZS5jb20+OywgJworICAgICAgICAgICAgICAgICdBYmUgPHhAZXhhbXBsZS5jb20+LCBCZWUgPHlAZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3NlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzBdLmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzFdLmxvY2FsX3BhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZsaW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzFdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzJdLm1haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICd5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMl0pKQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RfcGFyc2VfbWltZV92ZXJzaW9uKFRlc3RQYXJzZXJNaXhpbiwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgbWltZV92ZXJzaW9uX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVjdHMpOgorICAgICAgICBtaW1lX3ZlcnNpb24gPSBzZWxmLl90ZXN0X3BhcnNlX3gocGFyc2VyLnBhcnNlX21pbWVfdmVyc2lvbiwKKyAgICAgICAgICAgIHZhbHVlLCB0bF9zdHIsIHRsX3ZhbHVlLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbWVfdmVyc2lvbi5tYWpvciwgbWFqb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWltZV92ZXJzaW9uLm1pbm9yLCBtaW5vcikKKworICAgIG1pbWVfdmVyc2lvbl9wYXJhbXMgPSB7CisKKyAgICAgICAgJ3JmY18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyAxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzQnOiAoCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuIDAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2VtcHR5JzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSksCisKKyAgICAgICAgfQorCisKKworY2xhc3MgVGVzdEZvbGRpbmcoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIF90ZXN0KHNlbGYsIHRsLCBmb2xkZWQsIHBvbGljeT1wb2xpY3kpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRsLmZvbGQocG9saWN5PXBvbGljeSksIGZvbGRlZCwgdGwucHBzdHIoKSkKKworICAgIGRlZiB0ZXN0X3NpbXBsZV91bnN0cnVjdHVyZWRfbm9fZm9sZHMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYSB0ZXN0IiksCisgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSB0ZXN0XG4iKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3Vuc3RydWN0dXJlZF9mb2xkZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIlRoaXMgaXMgYWxzbyBhIHRlc3QsIGJ1dCB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIHRoZXJlIGFyZSBlbm91Z2ggd29yZHMgKGFuZCBldmVuIHNvbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgInN5bWJvbHMpIHRvIG1ha2UgaXQgd3JhcDsgYXQgbGVhc3QgaW4gdGhlb3J5LiIpLAorICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGFsc28gYSB0ZXN0LCBidXQgdGhpcyB0aW1lIHRoZXJlIGFyZSBlbm91Z2ggIgorICAgICAgICAgICAgICAgICAgICAgICAgIndvcmRzIChhbmQgZXZlbiBzb21lXG4iCisgICAgICAgICAgICAgICAgICAgIiBzeW1ib2xzKSB0byBtYWtlIGl0IHdyYXA7IGF0IGxlYXN0IGluIHRoZW9yeS5cbiIpCisKKyAgICBkZWYgdGVzdF91bnN0cnVjdHVyZWRfd2l0aF91bmljb2RlX25vX2ZvbGRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJow7xic2NoIGtsZWluZXIgYmVpw590IiksCisgICAgICAgICAgICAgICAgICAgIj0/dXRmLTg/cT9oPUMzPUJDYnNjaF9rbGVpbmVyX2JlaT1DMz05RnQ/PVxuIikKKworICAgIGRlZiB0ZXN0X29uZV9ld19vbl9lYWNoX29mX3R3b193cmFwcGVkX2xpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJNZWluIGtsZWluZXIgS2FrdHVzIGlzdCBzZWhyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaMO8YnNjaC4gIEVzIGhhdCB2aWVsZSBTdGFjaGVsbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZCBvZnQgYmVpw590IG1pY2guIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4ga2xlaW5lciBLYWt0dXMgaXN0IHNlaHIgPT91dGYtOD9xP2g9QzM9QkNic2NoPTJFPz0gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJFcyBoYXQgdmllbGUgU3RhY2hlbG5cbiIKKyAgICAgICAgICAgICAgICAgICAiIHVuZCBvZnQgPT91dGYtOD9xP2JlaT1DMz05RnQ/PSBtaWNoLlxuIikKKworICAgIGRlZiB0ZXN0X2V3c19jb21iaW5lZF9iZWZvcmVfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgiTWVpbiBLYWt0dXMgaXN0IGjDvGJzY2guICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVzIGJlacOfdCBtaWNoLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbmQgdGhhdCdzIGFsbCBJJ20gc2F5aW4uIiksCisgICAgICAgICAgICAgICAgICAgIk1laW4gS2FrdHVzIGlzdCA9P3V0Zi04P3E/aD1DMz1CQ2JzY2g9MkVfX0VzX2JlaT1DMz05RnQ/PSAiCisgICAgICAgICAgICAgICAgICAgICAgICAibWljaC4gIEFuZCB0aGF0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAiIGFsbCBJJ20gc2F5aW4uXG4iKQorCisgICAgIyBYWFggTmVlZCB0ZXN0IG9mIGFuIGVuY29kZWQgd29yZCBzbyBsb25nIHRoYXQgaXQgbmVlZHMgdG8gYmUgd3JhcHBlZAorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoImFiYyA8eHl6QGV4YW1wbGUuY29tPiIpWzBdLAorICAgICAgICAgICAgICAgICAgICJhYmMgPHh5ekBleGFtcGxlLmNvbT5cbiIpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2xpc3RfZm9sZGluZ19hdF9jb21tYXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJKLlAuQ29vbCIgPGhvdEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJLPD55IiA8a2V5QGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlyZXNhbGUgPGNoZWFwQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGVuZEBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICAgICAgICAgJ2FiYyA8eHl6QGV4YW1wbGUuY29tPiwgIkZyZWQgQmx1bnQiIDxzaGFycEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgICAgICcgIkouUC5Db29sIiA8aG90QGV4YW1wbGUuY29tPiwgIks8PnkiIDxrZXlAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAnIEZpcmVzYWxlIDxjaGVhcEBleGFtcGxlLmNvbT4sIDxlbmRAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19saXN0X3dpdGhfdW5pY29kZV9uYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCgKKyAgICAgICAgICAgICdIw7xic2NoIEtha3R1cyA8YmVhdXRpZnVsQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdiZWnDn3QgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfbGlzdF93aXRoX3VuaWNvZGVfbmFtZXNfaW5fcXVvdGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfYWRkcmVzc19saXN0KAorICAgICAgICAgICAgJyJIw7xic2NoIEtha3R1cyIgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnImJlacOfdCIgYmVpw590IDxiaXRlckBleGFtcGxlLmNvbT4nKVswXSwKKyAgICAgICAgICAgICc9P3V0Zi04P3E/SD1DMz1CQ2JzY2g/PSBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sXG4nCisgICAgICAgICAgICAgICAgJyA9P3V0Zi04P3E/YmVpPUMzPTlGdF9iZWk9QzM9OUZ0Pz0gPGJpdGVyQGV4YW1wbGUuY29tPlxuJykKKworICAgICMgWFhYIE5lZWQgdGVzdHMgd2l0aCBjb21tZW50cyBvbiB2YXJpb3VzIHNpZGVzIG9mIGEgdW5pY29kZSB0b2tlbiwKKyAgICAjIGFuZCB3aXRoIHVuaWNvZGUgdG9rZW5zIGluIHRoZSBjb21tZW50cy4gIFNwYWNlcyBpbnNpZGUgdGhlIHF1b3RlcworICAgICMgY3VycmVudGx5IGRvbid0IGRvIHRoZSByaWdodCB0aGluZy4KKworICAgIGRlZiB0ZXN0X2luaXRpYWxfd2hpdGVzcGFjZV9zcGxpdHRpbmcoc2VsZik6CisgICAgICAgIGJvZHkgPSBwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgnICAgJyArICd4Jyo3NykKKyAgICAgICAgaGVhZGVyID0gcGFyc2VyLkhlYWRlcihbCisgICAgICAgICAgICBwYXJzZXIuSGVhZGVyTGFiZWwoW3BhcnNlci5WYWx1ZVRlcm1pbmFsKCd0ZXN0OicsICdhdGV4dCcpXSksCisgICAgICAgICAgICBwYXJzZXIuQ0ZXU0xpc3QoW3BhcnNlci5XaGl0ZVNwYWNlVGVybWluYWwoJyAnLCAnZndzJyldKSwgYm9keV0pCisgICAgICAgIHNlbGYuX3Rlc3QoaGVhZGVyLCAndGVzdDogICBcbiAnICsgJ3gnKjc3ICsgJ1xuJykKKworICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfc3BsaXR0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCd4eHggICAnICsgJ3knKjc3KSwKKyAgICAgICAgICAgICAgICAgICAneHh4ICBcbiAnICsgJ3knKjc3ICsgJ1xuJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBjYTg1ZjU3Li4wODkyNjlmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCitmcm9tIHRlc3QudGVzdF9lbWFpbC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpAQCAtNDEsNyArNDEsNyBAQAogSGVsbG8gV29ybGQhID0/aXNvLTIwMjItanA/Yj9HeVJDSlU4bGJTRThKVzhoUENWckpVa2hLaHNvUWc9PT89CiAgPT9pc28tODg1OS0xP3E/R3I9RkM9REZfR290dCE/PSIiIikKICAgICAgICAgZXEoZGVjb2RlX2hlYWRlcihoLmVuY29kZSgpKSwKLSAgICAgICAgICAgWyhiJ0hlbGxvIFdvcmxkIScsIE5vbmUpLAorICAgICAgICAgICBbKGInSGVsbG8gV29ybGQhICcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHgxYiRCJU8lbSE8JW8hPCVrJUkhKlx4MWIoQicsICdpc28tMjAyMi1qcCcpLAogICAgICAgICAgICAgKGInR3JceGZjXHhkZiBHb3R0IScsIGdjb2RlKV0pCiAgICAgICAgIHN1YmplY3RfYnl0ZXMgPSAoYid0ZXN0LWphIFx4YTRceGQ4XHhjNVx4ZWFceGI5XHhjNlx4YTRceGI1JwpAQCAtNzgsMTYgKzc4LDUgQEAKIAogCiAMCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoVGVzdEVtYWlsQXNpYW5Db2RlY3MpKQotICAgIHJldHVybiBzdWl0ZQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEVtYWlsQXNpYW5Db2RlY3MpCi0KLQotDAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdzdWl0ZScpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZGVmZWN0X2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDU0MzJkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weQpAQCAtMCwwICsxLDMyMCBAQAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjb250ZXh0bGliCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0RGVmZWN0c0Jhc2U6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorICAgIHJhaXNlX2V4cGVjdGVkID0gRmFsc2UKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB5aWVsZAorCisgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IFhYCisgICAgICAgICAgICBGcm9tOiB4eEB4eC5kaworICAgICAgICAgICAgVG86IFhYCisgICAgICAgICAgICBNaW1lLXZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICAgICBib3VuZGFyeT0iTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydCIKKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0CisgICAgICAgICAgICBDb250ZW50LXR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKyAgICAgICAgICAgICAgIGJvdW5kYXJ5PSJNU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0IgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iSVNPLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgdGV4dAorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJJU08tODg1OS0xIgorICAgICAgICAgICAgQ29udGVudC10cmFuc2Zlci1lbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQorCisgICAgICAgICAgICA8SFRNTD48L0hUTUw+CisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydC0tCisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBpbWFnZS9naWY7IG5hbWU9Inh4LmdpZiI7CisgICAgICAgICAgICBDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50CisgICAgICAgICAgICBDb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgU29tZSByZW1vdmVkIGJhc2U2NCBlbmNvZGVkIGNoYXJzLgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQtLQorCisgICAgICAgICAgICAiIiIpCisgICAgICAgICMgWFhYIGJldHRlciB3b3VsZCBiZSB0byBhY3R1YWxseSBkZXRlY3QgdGhlIGR1cGxpY2F0ZS4KKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgaW5uZXIgPSBtc2cuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoaW5uZXIsICdkZWZlY3RzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMoaW5uZXIpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhpbm5lcilbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRGF0ZTogRnJpLCA2IEFwciAyMDAxIDA5OjIzOjA2IC0wODAwIChHTVQtMDgwMCkKKyAgICAgICAgICAgIEZyb206IGZvb2JhcgorICAgICAgICAgICAgU3ViamVjdDogYnJva2VuIG1haWwKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9yZXBvcnQ7IHJlcG9ydC10eXBlPWRlbGl2ZXJ5LXN0YXR1czsKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKworICAgICAgICAgICAgT25lIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKworICAgICAgICAgICAgSGVhZGVyOiBBbm90aGVyIHBhcnQKKworICAgICAgICAgICAgLS1KQUIwMzIyNS45ODY1Nzc3ODYvemluZmFuZGVsLmxhY2l0YS5jb20tLQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzb3VyY2UpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKKworICAgIG11bHRpcGFydF9tc2cgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICBEYXRlOiBXZWQsIDE0IE5vdiAyMDA3IDEyOjU2OjIzIEdNVAorICAgICAgICBGcm9tOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgVG86IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBTdWJqZWN0OiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQgYW5kIG11bHRpcGFydAorICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsKKyAgICAgICAgICAgIGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0ie30KKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICBUZXN0IG1lc3NhZ2UKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PQorICAgICAgICBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQorICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICBZV0pqCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0tLQorICAgICAgICAiIiIpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfaW52YWxpZF9jdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoCisgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMCkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgZm9yIGN0ZSBpbiAoJzdiaXQnLCAnOGJpdCcsICdCSU5hcnknKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiAiK2N0ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAwLCAiY3RlPSIrY3RlKQorCisgICAgZGVmIHRlc3RfbHlpbmdfbXVsdGlwYXJ0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogIkFsbGlzb24gRHVubGFwIiA8eHh4QGV4YW1wbGUuY29tPgorICAgICAgICAgICAgVG86IHl5eUBleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogNjQ0MjMKKyAgICAgICAgICAgIERhdGU6IFN1biwgMTEgSnVsIDIwMDQgMTY6MDk6MjcgLTAzMDAKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKworICAgICAgICAgICAgQmxhaCBibGFoIGJsYWgKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobXNnLCAnZGVmZWN0cycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKG1zZykpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzZWxmLmdldF9kZWZlY3RzKG1zZylbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19zdGFydF9ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQUFBIgorICAgICAgICAgICAgRnJvbTogTWFpbCBEZWxpdmVyeSBTdWJzeXN0ZW0gPHh4eEBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgIFRvOiB5eXlAZXhhbXBsZS5jb20KKworICAgICAgICAgICAgLS1BQUEKKworICAgICAgICAgICAgU3R1ZmYKKworICAgICAgICAgICAgLS1BQUEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbWVzc2FnZS9yZmM4MjIKKworICAgICAgICAgICAgRnJvbTogd2VibWFzdGVyQHB5dGhvbi5vcmcKKyAgICAgICAgICAgIFRvOiB6enpAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQkJCIgorCisgICAgICAgICAgICAtLUJCQi0tCisKKyAgICAgICAgICAgIC0tQUFBLS0KKworICAgICAgICAgICAgIiIiKQorICAgICAgICAjIFRoZSBtZXNzYWdlIHN0cnVjdHVyZSBpczoKKyAgICAgICAgIworICAgICAgICAjIG11bHRpcGFydC9taXhlZAorICAgICAgICAjICAgIHRleHQvcGxhaW4KKyAgICAgICAgIyAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAjICAgICAgICBtdWx0aXBhcnQvbWl4ZWQgWypdCisgICAgICAgICMKKyAgICAgICAgIyBbKl0gVGhpcyBtZXNzYWdlIGlzIG1pc3NpbmcgaXRzIHN0YXJ0IGJvdW5kYXJ5CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBvdXRlciA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgYmFkID0gb3V0ZXIuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhiYWQpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhiYWQpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X2ZpcnN0X2xpbmVfaXNfY29udGludWF0aW9uX2hlYWRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnIExpbmUgMVxuU3ViamVjdDogdGVzdFxuXG5ib2R5JykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLmxpbmUsICcgTGluZSAxXG4nKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19oZWFkZXJfYm9keV9zZXBhcmF0b3Ioc2VsZik6CisgICAgICAgICMgT3VyIGhldXJpc3RpYyBpZiB3ZSBzZWUgYSBsaW5lIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBoZWFkZXIgKG5vCisgICAgICAgICMgbGVhZGluZyB3aGl0ZXNwYWNlIGJ1dCBubyAnOicpIGlzIHRvIGFzc3VtZSB0aGF0IHRoZSBibGFuayBsaW5lIHRoYXQKKyAgICAgICAgIyBzZXBhcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGlzIG1pc3NpbmcsIGFuZCB0byBzdG9wIHBhcnNpbmcKKyAgICAgICAgIyBoZWFkZXJzIGFuZCBzdGFydCBwYXJzaW5nIHRoZSBib2R5LgorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiB0ZXN0XG5ub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JhZF9wYWRkaW5nX2luX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgZG1rCisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgICAgICBkbVx4MDFrPT09CisgICAgICAgICAgICAiIiIpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCk6CisgICAgICAgICAgICBwYXlsb2FkID0gbXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBiJ3ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoc2VsZi5nZXRfZGVmZWN0cyhtc2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZW5kaW5nX2JvdW5kYXJ5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IDFAaGFycnlkb21haW40LmNvbQorICAgICAgICAgICAgU3ViamVjdDogRndkOiAxCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisgICAgICAgICAgICAgYm91bmRhcnk9Ii0tLS0tLS0tLS0tLTAwMDEwMTAyMDIwMTA4MDkwMDA0MDMwMSIKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKyAgICAgICAgICAgIEFsdGVybmF0aXZlIDEKKworICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKKworICAgICAgICAgICAgQWx0ZXJuYXRpdmUgMgorCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5nZXRfcGF5bG9hZCgpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoMSkuZ2V0X3BheWxvYWQoKSwgJ0FsdGVybmF0aXZlIDJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3RdKQorCisKK2NsYXNzIFRlc3REZWZlY3REZXRlY3Rpb24oVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gb2JqLmRlZmVjdHMKKworCitjbGFzcyBUZXN0RGVmZWN0Q2FwdHVyZShUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgY2xhc3MgQ2FwdHVyZVBvbGljeShwb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBjYXB0dXJlZCA9IE5vbmUKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmNhcHR1cmVkLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucG9saWN5ID0gc2VsZi5DYXB0dXJlUG9saWN5KGNhcHR1cmVkPWxpc3QoKSkKKworICAgIGRlZiBnZXRfZGVmZWN0cyhzZWxmLCBvYmopOgorICAgICAgICByZXR1cm4gc2VsZi5wb2xpY3kuY2FwdHVyZWQKKworCitjbGFzcyBUZXN0RGVmZWN0UmFpc2luZyhUZXN0RGVmZWN0c0Jhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gVGVzdERlZmVjdHNCYXNlLnBvbGljeQorICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgICByYWlzZV9leHBlY3RlZCA9IFRydWUKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9yYWlzZV9wb2ludChzZWxmLCBkZWZlY3QpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGRlZmVjdCk6CisgICAgICAgICAgICB5aWVsZAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCAzNTJiOWIxLi4zNmMzNDRmIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiAKIGltcG9ydCBlbWFpbAoraW1wb3J0IGVtYWlsLnBvbGljeQogCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKIGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBIZWFkZXIsIGRlY29kZV9oZWFkZXIsIG1ha2VfaGVhZGVyCkBAIC0zNiw0MCArMzcsMTQgQEAKIGZyb20gZW1haWwgaW1wb3J0IGJhc2U2NG1pbWUKIGZyb20gZW1haWwgaW1wb3J0IHF1b3ByaW1pbWUKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIHVubGluawotZnJvbSBlbWFpbC50ZXN0IGltcG9ydCBfX2ZpbGVfXyBhcyBsYW5kbWFyawotCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxpbmsKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBvcGVuZmlsZSwgVGVzdEVtYWlsQmFzZQogCiBOTCA9ICdcbicKIEVNUFRZU1RSSU5HID0gJycKIFNQQUNFID0gJyAnCiAKIAotCi1kZWYgb3BlbmZpbGUoZmlsZW5hbWUsICphcmdzLCAqKmt3cyk6Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsIGZpbGVuYW1lKQotICAgIHJldHVybiBvcGVuKHBhdGgsICphcmdzLCAqKmt3cykKLQotCi0KLSMgQmFzZSB0ZXN0IGNsYXNzCi1jbGFzcyBUZXN0RW1haWxCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgbmRpZmZBc3NlcnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kKToKLSAgICAgICAgIiIiTGlrZSBhc3NlcnRFcXVhbCBleGNlcHQgdXNlIG5kaWZmIGZvciByZWFkYWJsZSBvdXRwdXQuIiIiCi0gICAgICAgIGlmIGZpcnN0ICE9IHNlY29uZDoKLSAgICAgICAgICAgIHNmaXJzdCA9IHN0cihmaXJzdCkKLSAgICAgICAgICAgIHNzZWNvbmQgPSBzdHIoc2Vjb25kKQotICAgICAgICAgICAgcmZpcnN0ID0gW3JlcHIobGluZSkgZm9yIGxpbmUgaW4gc2ZpcnN0LnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIHJzZWNvbmQgPSBbcmVwcihsaW5lKSBmb3IgbGluZSBpbiBzc2Vjb25kLnNwbGl0bGluZXMoKV0KLSAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLm5kaWZmKHJmaXJzdCwgcnNlY29uZCkKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihOTCArIE5MLmpvaW4oZGlmZikpCi0KLSAgICBkZWYgX21zZ29iaihzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoZmlsZW5hbWUpKSBhcyBmcDoKLSAgICAgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKLQotCi0KICMgVGVzdCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIE1lc3NhZ2UgY2xhc3MncyBBUEkKIGNsYXNzIFRlc3RNZXNzYWdlQVBJKFRlc3RFbWFpbEJhc2UpOgogICAgIGRlZiB0ZXN0X2dldF9hbGwoc2VsZik6CkBAIC0xOTQsNyArMTY5LDcgQEAKICAgICBkZWYgdGVzdF9tZXNzYWdlX3JmYzgyMl9vbmx5KHNlbGYpOgogICAgICAgICAjIElzc3VlIDc5NzA6IG1lc3NhZ2UvcmZjODIyIG5vdCBpbiBtdWx0aXBhcnQgcGFyc2VkIGJ5CiAgICAgICAgICMgSGVhZGVyUGFyc2VyIGNhdXNlZCBhbiBleGNlcHRpb24gd2hlbiBmbGF0dGVuZWQuCi0gICAgICAgIHdpdGggb3BlbmZpbGUoZmluZGZpbGUoJ21zZ180Ni50eHQnKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnKSBhcyBmcDoKICAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgcGFyc2VyID0gSGVhZGVyUGFyc2VyKCkKICAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlc3RyKG1zZ2RhdGEpCkBAIC0yMDMsNiArMTc4LDE3IEBACiAgICAgICAgIGdlbi5mbGF0dGVuKG1zZywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCksIG1zZ2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ieXRlX21lc3NhZ2VfcmZjODIyX29ubHkoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIG5ldyBieXRlcyBoZWFkZXIgcGFyc2VyIGFsc28gcGFzc2VzIHRoaXMuCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ180Ni50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZ2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgcGFyc2VyID0gZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyKCkKKyAgICAgICAgbXNnID0gcGFyc2VyLnBhcnNlYnl0ZXMobXNnZGF0YSkKKyAgICAgICAgb3V0ID0gQnl0ZXNJTygpCisgICAgICAgIGdlbiA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihvdXQpCisgICAgICAgIGdlbi5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuZ2V0dmFsdWUoKSwgbXNnZGF0YSkKKwogICAgIGRlZiB0ZXN0X2dldF9kZWNvZGVkX3BheWxvYWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18xMC50eHQnKQpAQCAtMjczLDYgKzI1OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1swXS5zdGFydHN3aXRoKCdGcm9tICcpKQogICAgICAgICBlcSh0ZXh0LCBOTC5qb2luKGxpbmVzWzE6XSkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLmJhZF9wYXJhbXMKICAgICBkZWYgdGVzdF9iYWRfcGFyYW0oc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIkNvbnRlbnQtVHlwZTogYmxhcmc7IGJhejsgYm9vXG4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JheicpLCAnJykKQEAgLTMwNiw2ICsyOTMsNyBAQAogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtcyhoZWFkZXI9J3gtaGVhZGVyJyksCiAgICAgICAgICAgIFsoJ2ZvbycsICcnKSwgKCdiYXInLCAnb25lJyksICgnYmF6JywgJ3R3bycpXSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuc3BhY2VzX2Fyb3VuZF9wYXJhbV9lcXVhbHMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fbGliZXJhbChzZWxmKToKICAgICAgICAgbXNnID0gTWVzc2FnZSgpCiAgICAgICAgIG1zZ1snQ29udGVudC1UeXBlJ10gPSAnQ29udGVudC1UeXBlOiBNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5ID0gIkNQSU1TU01UUEMwNnA1ZjN0RyInCkBAIC0zMjgsMTAgKzMxNiwxMiBAQAogICAgICAgICAjIG1zZy5nZXRfcGFyYW0oIndlaXJkIikKICAgICAgICAgIyB5ZXQuCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnNwYWNlc19hcm91bmRfc2VtaXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fZnVua3lfY29udGludWF0aW9uX2xpbmVzKHNlbGYpOgogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18yMi50eHQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgxKS5nZXRfcGFyYW0oJ25hbWUnKSwgJ3dpYmJsZS5KUEcnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5zZW1pc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX3dpdGhfc2VtaXNfaW5fcXVvdGVzKHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKAogICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZTogaW1hZ2UvcGpwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIlxuJykKQEAgLTMzOSw2ICszMjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ25hbWUnLCB1bnF1b3RlPUZhbHNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnIkppbSZhbXA7JmFtcDtKaWxsIicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnF1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZQogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV93aXRoX3F1b3RlcyhzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygKICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGZvbzsgYmFyKjA9ImJhelxcImZvb2JhciI7IGJhcioxPSJcXCJiYXoiJykKQEAgLTUyNyw2ICs1MTgsNyBAQAogICAgICAgICBlcShtc2cudmFsdWVzKCksIFsnT25lIEh1bmRyZWQnLCAnVHdlbnR5JywgJ1RocmVlJywgJ0VsZXZlbiddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbXNnLnJlcGxhY2VfaGVhZGVyLCAnRm91cnRoJywgJ01pc3NpbmcnKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwogICAgICAgICBtc2cgPSBNZXNzYWdlKCkKQEAgLTUzNCw3ICs1MjYsMTAgQEAKICAgICAgICAgbXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10gPSAnYmFzZTY0JwogICAgICAgICBtc2cuc2V0X3BheWxvYWQoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzKHgsICdyYXctdW5pY29kZS1lc2NhcGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidceDAzXHgwMFx4ZTlceGQwXHhmZVx4ZmZceGZmLlx4OGJceGMwJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4YTFceDAwcFx4ZjZceGJmXHhlOVx4MGYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KQogCiAgICAgZGVmIHRlc3RfYnJva2VuX3VuaWNvZGVfcGF5bG9hZChzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3QgaW1wcm92ZXMgY292ZXJhZ2UgYnV0IGlzIG5vdCBhIGNvbXBsaWFuY2UgdGVzdC4KQEAgLTYzMiw2ICs2MjcsMTggQEAKICAgICAgICAgICAgIGFiYwogICAgICAgICAgICAgIiIiKSkKIAorICAgIGRlZiB0ZXN0X3VuaWNvZGVfYm9keV9kZWZhdWx0c190b191dGY4X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlIDE0MjkxCisgICAgICAgIG0gPSBNSU1FVGV4dCgnw4kgdGVzdGFiY1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgICAgIHc0a2dkR1Z6ZEdGaVl3bz0KKyAgICAgICAgICAgICIiIikpCisKKwogIyBUZXN0IHRoZSBlbWFpbC5lbmNvZGVycyBtb2R1bGUKIGNsYXNzIFRlc3RFbmNvZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY1Nyw3ICs2NjQsNyBAQAogICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJzdiaXQnKQogICAgICAgICAjIFNpbWlsYXIsIGJ1dCB3aXRoIDhiaXQgZGF0YQogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcpCi0gICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnOGJpdCcpCisgICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAnYmFzZTY0JykKICAgICAgICAgIyBBbmQgbm93IHdpdGggYSBkaWZmZXJlbnQgY2hhcnNldAogICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gXHhmOCB3b3JsZCcsIF9jaGFyc2V0PSdpc28tODg1OS0xJykKICAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICdxdW90ZWQtcHJpbnRhYmxlJykKQEAgLTEyNDMsNiArMTI1MCw3IEBACiAgICAgICAgICAgICAgPT91dGYtOD9xP19mb2xkaW5nX3doaXRlX3NwYWNlX3dvcmtzPz0iIiIpKydcbicpCiAKIAorCiAjIFRlc3QgbWFuZ2xpbmcgb2YgIkZyb20gIiBsaW5lcyBpbiB0aGUgYm9keSBvZiBhIG1lc3NhZ2UKIGNsYXNzIFRlc3RGcm9tTWFuZ2xpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTEzMTYsMTMgKzEzMjQsNyBAQAogIyBUZXN0IHRoZSBiYXNpYyBNSU1FQXVkaW8gY2xhc3MKIGNsYXNzIFRlc3RNSU1FQXVkaW8odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBNYWtlIHN1cmUgd2UgcGljayB1cCB0aGUgYXVkaW90ZXN0LmF1IHRoYXQgbGl2ZXMgaW4gZW1haWwvdGVzdC9kYXRhLgotICAgICAgICAjIEluIFB5dGhvbiwgdGhlcmUncyBhbiBhdWRpb3Rlc3QuYXUgbGl2aW5nIGluIExpYi90ZXN0IGJ1dCB0aGF0IGlzbid0Ci0gICAgICAgICMgaW5jbHVkZWQgaW4gc29tZSBiaW5hcnkgZGlzdHJvcyB0aGF0IGRvbid0IGluY2x1ZGUgdGhlIHRlc3QKLSAgICAgICAgIyBwYWNrYWdlLiAgVGhlIHRyYWlsaW5nIGVtcHR5IHN0cmluZyBvbiB0aGUgLmpvaW4oKSBpcyBzaWduaWZpY2FudAotICAgICAgICAjIHNpbmNlIGZpbmRmaWxlKCkgd2lsbCBkbyBhIGRpcm5hbWUoKS4KLSAgICAgICAgZGF0YWRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobGFuZG1hcmspLCAnZGF0YScsICcnKQotICAgICAgICB3aXRoIG9wZW4oZmluZGZpbGUoJ2F1ZGlvdGVzdC5hdScsIGRhdGFkaXIpLCAncmInKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CiAgICAgICAgICAgICBzZWxmLl9hdWRpb2RhdGEgPSBmcC5yZWFkKCkKICAgICAgICAgc2VsZi5fYXUgPSBNSU1FQXVkaW8oc2VsZi5fYXVkaW9kYXRhKQogCkBAIC0xODUwLDYgKzE4NTIsNyBAQAogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgorCiAgICAgZGVmIHRlc3RfcGFyc2VfbWlzc2luZ19taW5vcl90eXBlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMTQudHh0JykKQEAgLTE4NTcsNiArMTg2MCw3IEBACiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpLCAndGV4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9zdWJ0eXBlKCksICdwbGFpbicpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3Rfc2FtZV9ib3VuZGFyeV9pbm5lcl9vdXRlcihzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzE1LnR4dCcpCkBAIC0xODY3LDE1ICsxODcxLDYyIEBACiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKGlubmVyLmRlZmVjdHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19ib3VuZGFyeShzZWxmKToKICAgICAgICAgdW5sZXNzID0gc2VsZi5hc3NlcnRUcnVlCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI1LnR4dCcpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDIpCi0gICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLCBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCkpCiAKKyAgICBtdWx0aXBhcnRfbXNnID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogV2VkLCAxNCBOb3YgMjAwNyAxMjo1NjoyMyBHTVQKKyAgICAgICAgRnJvbTogZm9vQGJhci5pbnZhbGlkCisgICAgICAgIFRvOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgU3ViamVjdDogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IGFuZCBtdWx0aXBhcnQKKyAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICBib3VuZGFyeT0iPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09Int9CisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgVGVzdCBtZXNzYWdlCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgWVdKagorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09LS0KKyAgICAgICAgIiIiKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF9pbnZhbGlkX2N0ZShzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgIHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCkKKworICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfbm9fY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X211bHRpcGFydF92YWxpZF9jdGVfbm9fZGVmZWN0KHNlbGYpOgorICAgICAgICBmb3IgY3RlIGluICgnN2JpdCcsICc4Yml0JywgJ0JJTmFyeScpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiB7fSIuZm9ybWF0KGN0ZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAwKQorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlvcGVIZWFkZXIgaW52YWxpZF8xIGFuZCBpbnZhbGlkXzIuCiAgICAgZGVmIHRlc3RfaW52YWxpZF9jb250ZW50X3R5cGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBuZXEgPSBzZWxmLm5kaWZmQXNzZXJ0RXF1YWwKQEAgLTE5MjUsMTUgKzE5NzYsMTggQEAKIGNvdW50ZXIgdG8gUkZDIDI4MjIsIHRoZXJlJ3Mgbm8gc2VwYXJhdGluZyBuZXdsaW5lIGhlcmUKICIiIikKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9seWluZ19tdWx0aXBhcnQoc2VsZik6CiAgICAgICAgIHVubGVzcyA9IHNlbGYuYXNzZXJ0VHJ1ZQogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ180MS50eHQnKQogICAgICAgICB1bmxlc3MoaGFzYXR0cihtc2csICdkZWZlY3RzJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMikKLSAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQorICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCiAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9taXNzaW5nX3N0YXJ0X2JvdW5kYXJ5KHNlbGYpOgogICAgICAgICBvdXRlciA9IHNlbGYuX21zZ29iaignbXNnXzQyLnR4dCcpCiAgICAgICAgICMgVGhlIG1lc3NhZ2Ugc3RydWN0dXJlIGlzOgpAQCAtMTk0OSwxNyArMjAwMywyOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShiYWQuZGVmZWN0c1swXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCkpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfZmlyc3RfbGluZV9pc19jb250aW51YXRpb25faGVhZGVyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgbSA9ICcgTGluZSAxXG5MaW5lIDJcbkxpbmUgMycKKyAgICAgICAgbSA9ICcgTGluZSAxXG5TdWJqZWN0OiB0ZXN0XG5cbmJvZHknCiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobSkKLSAgICAgICAgZXEobXNnLmtleXMoKSwgW10pCi0gICAgICAgIGVxKG1zZy5nZXRfcGF5bG9hZCgpLCAnTGluZSAyXG5MaW5lIDMnKQorICAgICAgICBlcShtc2cua2V5cygpLCBbJ1N1YmplY3QnXSkKKyAgICAgICAgZXEobXNnLmdldF9wYXlsb2FkKCksICdib2R5JykKICAgICAgICAgZXEobGVuKG1zZy5kZWZlY3RzKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKG1zZy5kZWZlY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5GaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdF0pCiAgICAgICAgIGVxKG1zZy5kZWZlY3RzWzBdLmxpbmUsICcgTGluZSAxXG4nKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZworICAgIGRlZiB0ZXN0X21pc3NpbmdfaGVhZGVyX2JvZHlfc2VwYXJhdG9yKHNlbGYpOgorICAgICAgICAjIE91ciBoZXVyaXN0aWMgaWYgd2Ugc2VlIGEgbGluZSB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgaGVhZGVyIChubworICAgICAgICAjIGxlYWRpbmcgd2hpdGVzcGFjZSBidXQgbm8gJzonKSBpcyB0byBhc3N1bWUgdGhhdCB0aGUgYmxhbmsgbGluZSB0aGF0CisgICAgICAgICMgc2VwYXJhdGVzIHRoZSBoZWFkZXIgZnJvbSB0aGUgYm9keSBpcyBtaXNzaW5nLCBhbmQgdG8gc3RvcCBwYXJzaW5nCisgICAgICAgICMgaGVhZGVycyBhbmQgc3RhcnQgcGFyc2luZyB0aGUgYm9keS4KKyAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogdGVzdFxubm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICdub3QgYSBoZWFkZXJcblRvOiBhYmNcblxuYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwobXNnLmRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RdKQogCiAKICMgVGVzdCBSRkMgMjA0NyBoZWFkZXIgZW5jb2RpbmcgYW5kIGRlY29kaW5nCkBAIC0xOTcwLDkgKzIwMzYsOSBAQAogIGZvbyBiYXIgPT9tYWMtaWNlbGFuZD9xP3I9OEFrc209OUFyZz04Q3M/PSIiIgogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKICAgICAgICAgZXEoZGgsIFsKLSAgICAgICAgICAgIChiJ1JlOicsIE5vbmUpLAorICAgICAgICAgICAgKGInUmU6ICcsIE5vbmUpLAogICAgICAgICAgICAgKGInclx4OGFrc21ceDlhcmdceDhjcycsICdtYWMtaWNlbGFuZCcpLAotICAgICAgICAgICAgKGInYmF6IGZvbyBiYXInLCBOb25lKSwKKyAgICAgICAgICAgIChiJyBiYXogZm9vIGJhciAnLCBOb25lKSwKICAgICAgICAgICAgIChiJ3JceDhha3NtXHg5YXJnXHg4Y3MnLCAnbWFjLWljZWxhbmQnKV0pCiAgICAgICAgIGhlYWRlciA9IG1ha2VfaGVhZGVyKGRoKQogICAgICAgICBlcShzdHIoaGVhZGVyKSwKQEAgLTE5ODEsMzUgKzIwNDcsMzcgQEAKIFJlOiA9P21hYy1pY2VsYW5kP3E/cj04QWtzbT05QXJnPThDcz89IGJheiBmb28gYmFyID0/bWFjLWljZWxhbmQ/cT9yPThBa3NtPz0KICA9P21hYy1pY2VsYW5kP3E/PTlBcmc9OENzPz0iIiIpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyX3VuaWNvZGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9rZWVwZXJfdW5pY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnPT9JU08tODg1OS0xP1E/QW5kcj1FOT89IFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JwogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKICAgICAgICAgZXEoZGgsIFsoYidBbmRyXHhlOScsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgKGInUGlyYXJkIDxwaXJhcmRAZG9tLmFpbj4nLCBOb25lKV0pCisgICAgICAgICAgICAgICAgKGInIFBpcmFyZCA8cGlyYXJkQGRvbS5haW4+JywgTm9uZSldKQogICAgICAgICBoZWFkZXIgPSBzdHIobWFrZV9oZWFkZXIoZGgpKQogICAgICAgICBlcShoZWFkZXIsICdBbmRyXHhlOSBQaXJhcmQgPHBpcmFyZEBkb20uYWluPicpCiAKLSAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2VhdGVyX3VuaWNvZGVfMihzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcl91bmljb2RlXzIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gJ1RoZSA9P2lzby04ODU5LTE/Yj9jWFZwWTJzZ1luSnZkMjRnWm05ND89IGp1bXBlZCBvdmVyIHRoZSA9P2lzby04ODU5LTE/Yj9iR0Y2ZVNCa2IyYz0/PScKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCi0gICAgICAgIGVxKGRoLCBbKGInVGhlJywgTm9uZSksIChiJ3F1aWNrIGJyb3duIGZveCcsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgKGInanVtcGVkIG92ZXIgdGhlJywgTm9uZSksIChiJ2xhenkgZG9nJywgJ2lzby04ODU5LTEnKV0pCisgICAgICAgIGVxKGRoLCBbKGInVGhlICcsIE5vbmUpLCAoYidxdWljayBicm93biBmb3gnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgIChiJyBqdW1wZWQgb3ZlciB0aGUgJywgTm9uZSksIChiJ2xhenkgZG9nJywgJ2lzby04ODU5LTEnKV0pCiAgICAgICAgIGh1ID0gc3RyKG1ha2VfaGVhZGVyKGRoKSkKICAgICAgICAgZXEoaHUsICdUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIHRoZSBsYXp5IGRvZycpCiAKICAgICBkZWYgdGVzdF9yZmMyMDQ3X21pc3Npbmdfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgcyA9ICdTbT0/SVNPLTg4NTktMT9CPzlnPT0/PXJnPT9JU08tODg1OS0xP0I/NVE9PT89c2JvcmQnCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKHMsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaCwgWyhiJ1NtJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIncmcnLCBOb25lKSwgKGInXHhlNScsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidzYm9yZCcsIE5vbmUpXSkKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfd2l0aF93aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBzID0gJ1NtID0/SVNPLTg4NTktMT9CPzlnPT0/PSByZyA9P0lTTy04ODU5LTE/Qj81UT09Pz0gc2JvcmQnCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20nLCBOb25lKSwgKGInXHhmNicsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidyZycsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ3Nib3JkJywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRoLCBbKGInU20gJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInIHJnICcsIE5vbmUpLCAoYidceGU1JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJyBzYm9yZCcsIE5vbmUpXSkKIAogICAgIGRlZiB0ZXN0X3JmYzIwNDdfQl9iYWRfcGFkZGluZyhzZWxmKToKICAgICAgICAgcyA9ICc9P2lzby04ODU5LTE/Qj8lcz89JwpAQCAtMjAyNyw2ICsyMDk1LDY3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsoYidhbmRyXHhlOT16eicsICdpc28tODY1OS0xJyldKQogCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzEoc2VsZik6CisgICAgICAgICMgMXN0IHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzIoc2VsZik6CisgICAgICAgICMgMm5kIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSBiKScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYScsICdpc28tODg1OS0xJyksIChiJyBiKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N18zKHNlbGYpOgorICAgICAgICAjIDNyZCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzQoc2VsZik6CisgICAgICAgICMgNHRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PSAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzVhKHNlbGYpOgorICAgICAgICAjIDV0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NyBuZXdsaW5lIGlzIFxyXG4KKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89XHJcbiAgICA9P0lTTy04ODU5LTE/UT9iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNWIoc2VsZik6CisgICAgICAgICMgNXRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3IG5ld2xpbmUgaXMgXG4KKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89XG4gICAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzYoc2VsZik6CisgICAgICAgICMgNnRoIHRlc3RjYXNlIGF0IGVuZCBvZiByZmMyMDQ3CisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2FfYj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYSBiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N183KHNlbGYpOgorICAgICAgICAjIDd0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gPT9JU08tODg1OS0yP1E/X2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicgYicsICdpc28tODg1OS0yJyksCisgICAgICAgICAgICAgKGInKScsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKS5lbmNvZGUoKSwgcy5sb3dlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksICcoYSBiKScpCisKKyAgICBkZWYgdGVzdF9tdWx0aWxpbmVfaGVhZGVyKHNlbGYpOgorICAgICAgICBzID0gJz0/d2luZG93cy0xMjUyP3E/PTIyTT1GQ2xsZXJfVD0yMj89XHJcbiA8VC5NdWVsbGVyQHh4eC5jb20+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInIk1ceGZjbGxlciBUIicsICd3aW5kb3dzLTEyNTInKSwKKyAgICAgICAgICAgICAoYic8VC5NdWVsbGVyQHh4eC5jb20+JywgTm9uZSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIocykpLmVuY29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcnLmpvaW4ocy5zcGxpdGxpbmVzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJNw7xsbGVyIFQiIDxULk11ZWxsZXJAeHh4LmNvbT4nKQorCiAKICMgVGVzdCB0aGUgTUlNRU1lc3NhZ2UgY2xhc3MKIGNsYXNzIFRlc3RNSU1FTWVzc2FnZShUZXN0RW1haWxCYXNlKToKQEAgLTI1NTIsNiArMjY4MSwxMyBAQAogICAgICAgICBmb3Igc3VicGFydCBpbiBtc2cud2FsaygpOgogICAgICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2Uoc3VicGFydCwgTXlNZXNzYWdlKSkKIAorICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2RvZXNfbm90X3JlcXVpcmVfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1lc3NhZ2UoTWVzc2FnZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coIlN1YmplY3Q6IHRlc3RcblxudGVzdCIsIE15TWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLCBNeU1lc3NhZ2UpKQorCiAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgogICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKCdlbWFpbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG1vZHVsZS5fX2FsbF9fKSwgWwpAQCAtMjU4Miw4ICsyNzE4LDE3IEBACiAgICAgICAgICAgICB1dGlscy5mb3JtYXRkYXRlKG5vdywgbG9jYWx0aW1lPUZhbHNlLCB1c2VnbXQ9VHJ1ZSksCiAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclYSwgJWQgJWIgJVkgJUg6JU06JVMgR01UJywgdGltZS5nbXRpbWUobm93KSkpCiAKLSAgICBkZWYgdGVzdF9wYXJzZWRhdGVfbm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWRhdGUoJycpLCBOb25lKQorICAgICMgcGFyc2VkYXRlIGFuZCBwYXJzZWRhdGVfdHogd2lsbCBiZWNvbWUgZGVwcmVjYXRlZCBpbnRlcmZhY2VzIHNvbWVkYXkKKyAgICBkZWYgdGVzdF9wYXJzZWRhdGVfcmV0dXJuc19Ob25lX2Zvcl9pbnZhbGlkX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZV90eignJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnMCcpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGVfdHooJzAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlKCdBIENvbXBsZXRlIFdhc3RlIG9mIFRpbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KCdBIENvbXBsZXRlIFdhc3RlIG9mIFRpbWUnKSkKKyAgICAgICAgIyBOb3QgYSBwYXJ0IG9mIHRoZSBzcGVjIGJ1dCwgYnV0IHRoaXMgaGFzIGhpc3RvcmljYWxseSB3b3JrZWQ6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZShOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KE5vbmUpKQogCiAgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2NvbXBhY3Qoc2VsZik6CiAgICAgICAgICMgVGhlIEZXUyBhZnRlciB0aGUgY29tbWEgaXMgb3B0aW9uYWwKQEAgLTI2MTAsNiArMjc1NSwxMyBAQAogICAgICAgICAgICAoMjAwMiwgNCwgMywgMTQsIDU4LCAyNiwgMCwgMSwgLTEsIC0yODgwMCkpCiAKIAorICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9hY2NlcHRzX3RpbWVfd2l0aF9kb3RzKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZXEodXRpbHMucGFyc2VkYXRlX3R6KCc1IEZlYiAyMDAzIDEzLjQ3LjI2IC0wODAwJyksCisgICAgICAgICAgICgyMDAzLCAyLCA1LCAxMywgNDcsIDI2LCAwLCAxLCAtMSwgLTI4ODAwKSkKKyAgICAgICAgZXEodXRpbHMucGFyc2VkYXRlX3R6KCc1IEZlYiAyMDAzIDEzLjQ3IC0wODAwJyksCisgICAgICAgICAgICgyMDAzLCAyLCA1LCAxMywgNDcsIDAsIDAsIDEsIC0xLCAtMjg4MDApKQorCiAgICAgZGVmIHRlc3RfcGFyc2VkYXRlX2FjY2VwdGFibGVfdG9fdGltZV9mdW5jdGlvbnMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICB0aW1ldHVwID0gdXRpbHMucGFyc2VkYXRlKCc1IEZlYiAyMDAzIDEzOjQ3OjI2IC0wODAwJykKQEAgLTI2NTIsNyArMjgwNCwxMCBAQAogICAgIGRlZiB0ZXN0X2VzY2FwZV9kdW1wKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigoJ0EgKFZlcnkpIFNpbGx5IFBlcnNvbicsICdwZXJzb25AZG9tLmFpbicpKSwKLSAgICAgICAgICAgIHInIkEgXChWZXJ5XCkgU2lsbHkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JykKKyAgICAgICAgICAgIHInIkEgKFZlcnkpIFNpbGx5IFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB1dGlscy5wYXJzZWFkZHIociciQSBcKFZlcnlcKSBTaWxseSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nKSwKKyAgICAgICAgICAgICgnQSAoVmVyeSkgU2lsbHkgUGVyc29uJywgJ3BlcnNvbkBkb20uYWluJykpCiAgICAgICAgIGEgPSByJ0EgXChTcGVjaWFsXCkgUGVyc29uJwogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlYWRkcih1dGlscy5mb3JtYXRhZGRyKChhLCBiKSkpLCAoYSwgYikpCkBAIC0yNjY1LDYgKzI4MjAsNDYgQEAKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWFkZHIodXRpbHMuZm9ybWF0YWRkcigoYSwgYikpKSwgKGEsIGIpKQogCisgICAgZGVmIHRlc3RfcXVvdGVzX3VuaWNvZGVfbmFtZXMoc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgdXRmOF9iYXNlNjQgPSAiPT91dGYtOD9iP1NNT2tibk1nVjhPOGNuTjA/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBsYXRpbjFfcXVvcHJpID0gIj0/aXNvLTg4NTktMT9xP0g9RTRuc19XPUZDcnN0Pz0gPHBlcnNvbkBkb20uYWluPiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSksIHV0ZjhfYmFzZTY0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgbGF0aW4xX3F1b3ByaSkKKworICAgIGRlZiB0ZXN0X2FjY2VwdHNfYW55X2NoYXJzZXRfbGlrZV9vYmplY3Qoc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgbmFtZSA9ICJIXHUwMGU0bnMgV1x1MDBmY3JzdCIKKyAgICAgICAgYWRkciA9ICdwZXJzb25AZG9tLmFpbicKKyAgICAgICAgdXRmOF9iYXNlNjQgPSAiPT91dGYtOD9iP1NNT2tibk1nVjhPOGNuTjA/PSA8cGVyc29uQGRvbS5haW4+IgorICAgICAgICBmb29iYXIgPSAiRk9PQkFSIgorICAgICAgICBjbGFzcyBDaGFyc2V0TW9jazoKKyAgICAgICAgICAgIGRlZiBoZWFkZXJfZW5jb2RlKHNlbGYsIHN0cmluZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvb2JhcgorICAgICAgICBtb2NrID0gQ2hhcnNldE1vY2soKQorICAgICAgICBtb2NrX2V4cGVjdGVkID0gIiVzIDwlcz4iICUgKGZvb2JhciwgYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSwgbW9jayksIG1vY2tfZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkciksIENoYXJzZXQoJ3V0Zi04JykpLAorICAgICAgICAgICAgdXRmOF9iYXNlNjQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJzZXRfbGlrZV9vYmplY3RfcmFpc2VzX2Vycm9yKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE2OTA2MDguICBlbWFpbC51dGlscy5mb3JtYXRhZGRyKCkgc2hvdWxkIGJlIHJmYzIwNDcgYXdhcmUuCisgICAgICAgIG5hbWUgPSAiSFx1MDBlNG5zIFdcdTAwZmNyc3QiCisgICAgICAgIGFkZHIgPSAncGVyc29uQGRvbS5haW4nCisgICAgICAgICMgQSBvYmplY3Qgd2l0aG91dCBhIGhlYWRlcl9lbmNvZGUgbWV0aG9kOgorICAgICAgICBiYWRfY2hhcnNldCA9IG9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB1dGlscy5mb3JtYXRhZGRyLCAobmFtZSwgYWRkciksCisgICAgICAgICAgICBiYWRfY2hhcnNldCkKKworICAgIGRlZiB0ZXN0X3VuaWNvZGVfYWRkcmVzc19yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgICMgaXNzdWUgMTY5MDYwOC4gIGVtYWlsLnV0aWxzLmZvcm1hdGFkZHIoKSBzaG91bGQgYmUgcmZjMjA0NyBhd2FyZS4KKyAgICAgICAgYWRkciA9ICdwZXJzXHUwMGY2bkBkb20uaW4nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgdXRpbHMuZm9ybWF0YWRkciwgKE5vbmUsIGFkZHIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIHV0aWxzLmZvcm1hdGFkZHIsICgiTmFtZSIsIGFkZHIpKQorCiAgICAgZGVmIHRlc3RfbmFtZV93aXRoX2RvdChzZWxmKToKICAgICAgICAgeCA9ICdKb2huIFguIERvZSA8anhkQGV4YW1wbGUuY29tPicKICAgICAgICAgeSA9ICciSm9obiBYLiBEb2UiIDxqeGRAZXhhbXBsZS5jb20+JwpAQCAtMjcxMCw2ICsyOTA1LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCcnLCAnbWVyd29rLndvay53b2tAeGFtcGxlLmNvbScpLAogICAgICAgICAgICAgdXRpbHMucGFyc2VhZGRyKCdtZXJ3b2suIHdvayAuICB3b2tAeGFtcGxlLmNvbScpKQogCisgICAgZGVmIHRlc3RfZm9ybWF0YWRkcl9kb2VzX25vdF9xdW90ZV9wYXJlbnNfaW5fcXVvdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgYWRkciA9ICgiJ2Zvb0BleGFtcGxlLmNvbScgKGZvb0BleGFtcGxlLmNvbSkiLAorICAgICAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20nKQorICAgICAgICBhZGRyc3RyID0gKCciXCdmb29AZXhhbXBsZS5jb21cJyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb29AZXhhbXBsZS5jb20pIiA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VhZGRyKGFkZHJzdHIpLCBhZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoYWRkciksIGFkZHJzdHIpCisKKwogICAgIGRlZiB0ZXN0X211bHRpbGluZV9mcm9tX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIHggPSAiIiJcCiBGb28KQEAgLTI5NDUsNiArMzE0OSw3IEBACiAKIAogY2xhc3MgVGVzdFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CisKICAgICBkZWYgdGVzdF9oZWFkZXJfcGFyc2VyKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyBQYXJzZSBvbmx5IHRoZSBoZWFkZXJzIG9mIGEgY29tcGxleCBtdWx0aXBhcnQgTUlNRSBkb2N1bWVudApAQCAtMjk1Niw2ICszMTYxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXNnLmlzX211bHRpcGFydCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKIAorICAgIGRlZiB0ZXN0X2J5dGVzX2hlYWRlcl9wYXJzZXIoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICAjIFBhcnNlIG9ubHkgdGhlIGhlYWRlcnMgb2YgYSBjb21wbGV4IG11bHRpcGFydCBNSU1FIGRvY3VtZW50CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ21zZ18wMi50eHQnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZyA9IGVtYWlsLnBhcnNlci5CeXRlc0hlYWRlclBhcnNlcigpLnBhcnNlKGZwKQorICAgICAgICBlcShtc2dbJ2Zyb20nXSwgJ3BwcC1yZXF1ZXN0QHp6ei5vcmcnKQorICAgICAgICBlcShtc2dbJ3RvJ10sICdwcHBAenp6Lm9yZycpCisgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF90eXBlKCksICdtdWx0aXBhcnQvbWl4ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1zZy5pc19tdWx0aXBhcnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKCksIHN0cikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksIGJ5dGVzKSkKKwogICAgIGRlZiB0ZXN0X3doaXRlc3BhY2VfY29udGludWF0aW9uKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgIyBUaGlzIG1lc3NhZ2UgY29udGFpbnMgYSBsaW5lIGFmdGVyIHRoZSBTdWJqZWN0OiBoZWFkZXIgdGhhdCBoYXMgb25seQpAQCAtMzE3OCwxNSArMzM5NSwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAncMO2c3TDoWxcbicuZW5jb2RlKCd1dGYtOCcpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF84Yml0X2luX2Jhc2U2NF9ib2R5KHNlbGYpOgotICAgICAgICAjIFN0aWNraW5nIGFuIDhiaXQgYnl0ZSBpbiBhIGJhc2U2NCBibG9jayBtYWtlcyBpdCB1bmRlY29kYWJsZSBieQotICAgICAgICAjIG5vcm1hbCBtZWFucywgc28gdGhlIGJsb2NrIGlzIHJldHVybmVkIHVuZGVjb2RlZCwgYnV0IGFzIGJ5dGVzLgorICAgICAgICAjIElmIHdlIGdldCA4Yml0IGJ5dGVzIGluIGEgYmFzZTY0IGJvZHksIHdlIGNhbiBqdXN0IGlnbm9yZSB0aGVtCisgICAgICAgICMgYXMgYmVpbmcgb3V0c2lkZSB0aGUgYmFzZTY0IGFscGhhYmV0IGFuZCBkZWNvZGUgYW55d2F5LiAgQnV0CisgICAgICAgICMgd2UgcmVnaXN0ZXIgYSBkZWZlY3QuCiAgICAgICAgIG0gPSBzZWxmLmJvZHl0ZXN0X21zZy5mb3JtYXQoY2hhcnNldD0ndXRmLTgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0ZT0nYmFzZTY0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5bGluZT0nY01PMmMzUmhiQcOhPScpLmVuY29kZSgndXRmLTgnKQogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMobSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdjTU8yYzNSaGJBw6E9XG4nLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAncMO2c3RhbCcuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QpCiAKICAgICBkZWYgdGVzdF84Yml0X2luX3V1ZW5jb2RlX2JvZHkoc2VsZik6CiAgICAgICAgICMgU3RpY2tpbmcgYW4gOGJpdCBieXRlIGluIGEgdXVlbmNvZGUgYmxvY2sgbWFrZXMgaXQgdW5kZWNvZGFibGUgYnkKQEAgLTMyNjcsNiArMzQ4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X21haW50eXBlKCksICJ0ZXh0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfc3VidHlwZSgpLCAicGxcdUZGRkRpbiIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLm5vbl9hc2NpaV9pbl9wYXJhbXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1zX3dpdGhfOGJpdChzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKAogICAgICAgICAgICAgJ1gtSGVhZGVyOiBmb289XHhhN25lOyBiXHhhN3I9dHdvOyBiYXo9dGhyZWVcbicuZW5jb2RlKCdsYXRpbi0xJykpCkBAIC0zMjc2LDYgKzM0OTgsNyBAQAogICAgICAgICAjIFhYWDogc29tZWRheSB5b3UgbWlnaHQgYmUgYWJsZSB0byBnZXQgJ2JceGE3cicsIGZvciBub3cgeW91IGNhbid0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGFyYW0oJ2JceGE3cicsIGhlYWRlcj0neC1oZWFkZXInKSwgTm9uZSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIubm9uX2FzY2lpX2luX3JmYzIyMzFfdmFsdWUKICAgICBkZWYgdGVzdF9nZXRfcmZjMjIzMV9wYXJhbXNfd2l0aF84Yml0KHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXModGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsKQEAgLTM1MjEsMTIgKzM3NDQsNyBAQAogICAgICAgICBiID0gQnl0ZXNJTygpCiAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYiwgbWF4aGVhZGVybGVuPTApCiAgICAgICAgIGcuZmxhdHRlbihtc2csIHVuaXhmcm9tPXVuaXhmcm9tLCBsaW5lc2VwPXNlbGYubGluZXNlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRCeXRlU3RyaW5nc0VxdWFsKGRhdGEsIGIuZ2V0dmFsdWUoKSkKLQotICAgIGRlZiBhc3NlcnRCeXRlU3RyaW5nc0VxdWFsKHNlbGYsIHN0cjEsIHN0cjIpOgotICAgICAgICAjIE5vdCB1c2luZyBzZWxmLmJsaW5lc2VwIGhlcmUgaXMgaW50ZW50aW9uYWwuICBUaGlzIHdheSB0aGUgb3V0cHV0Ci0gICAgICAgICMgaXMgbW9yZSB1c2VmdWwgd2hlbiB0aGUgZmFpbHVyZSByZXN1bHRzIGluIG1peGVkIGxpbmUgZW5kaW5ncy4KLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoc3RyMS5zcGxpdChiJ1xuJyksIHN0cjIuc3BsaXQoYidcbicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIuZ2V0dmFsdWUoKSkKIAogCiBjbGFzcyBUZXN0Qnl0ZXNHZW5lcmF0b3JJZGVtcG90ZW50TkwoQmFzZVRlc3RCeXRlc0dlbmVyYXRvcklkZW1wb3RlbnQsCkBAIC00MjkyLDExICs0NTEwLDExIEBACiAgICAgICAgIGggPSBtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKQogICAgICAgICBlcShoLmVuY29kZSgpLCBzKQogCi0gICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9lYXRlcihzZWxmKToKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2tlZXBlcihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHMgPSAnU3ViamVjdDogPT9rb2k4LXI/Yj84TkxQMThYU3k4RWd6c0VneHNuT3djell6dGs9Pz0gPT9rb2k4LXI/cT89Q0E/PSB6ei4nCiAgICAgICAgIHBhcnRzID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBlcShwYXJ0cywgWyhiJ1N1YmplY3Q6JywgTm9uZSksIChiJ1x4ZjBceGQyXHhjZlx4ZDdceGM1XHhkMlx4Y2JceGMxIFx4Y2VceGMxIFx4YzZceGM5XHhjZVx4YzFceGNjXHhkOFx4Y2VceGQ5XHhjYScsICdrb2k4LXInKSwgKGInenouJywgTm9uZSldKQorICAgICAgICBlcShwYXJ0cywgWyhiJ1N1YmplY3Q6ICcsIE5vbmUpLCAoYidceGYwXHhkMlx4Y2ZceGQ3XHhjNVx4ZDJceGNiXHhjMSBceGNlXHhjMSBceGM2XHhjOVx4Y2VceGMxXHhjY1x4ZDhceGNlXHhkOVx4Y2EnLCAna29pOC1yJyksIChiJyB6ei4nLCBOb25lKV0pCiAgICAgICAgIGhkciA9IG1ha2VfaGVhZGVyKHBhcnRzKQogICAgICAgICBlcShoZHIuZW5jb2RlKCksCiAgICAgICAgICAgICdTdWJqZWN0OiA9P2tvaTgtcj9iPzhOTFAxOFhTeThFZ3pzRWd4c25Pd2N6WXp0bks/PSB6ei4nKQpAQCAtNDMyNiw2ICs0NTQ0LDkgQEAKIAogIyBUZXN0IFJGQyAyMjMxIGhlYWRlciBwYXJhbWV0ZXJzIChlbi9kZSljb2RpbmcKIGNsYXNzIFRlc3RSRkMyMjMxKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3RlcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzI5LnR4dCcpCkBAIC00NDExLDExICs0NjMyLDE1IEBACiAtTWUKICIiIikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX2NoYXJzZXQKKyAgICAjIEkgY2hhbmdlZCB0aGUgY2hhcnNldCBuYW1lLCB0aG91Z2gsIGJlY2F1c2UgdGhlIG9uZSBpbiB0aGUgZmlsZSBpc24ndAorICAgICMgYSBsZWdhbCBjaGFyc2V0IG5hbWUuICBTaG91bGQgYWRkIGEgdGVzdCBmb3IgYW4gaWxsZWdhbCBjaGFyc2V0LgogICAgIGRlZiB0ZXN0X3JmYzIyMzFfZ2V0X2NvbnRlbnRfY2hhcnNldChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzMyLnR4dCcpCiAgICAgICAgIGVxKG1zZy5nZXRfY29udGVudF9jaGFyc2V0KCksICd1cy1hc2NpaScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF9ub19kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJzZV9yZmNfcXVvdGluZyhzZWxmKToKICAgICAgICAgbSA9IHRleHR3cmFwLmRlZGVudCgnJydcCiAgICAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDI5LDYgKzQ2NTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbXNnLmFzX3N0cmluZygpKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJzZV9leHRyYV9xdW90aW5nKHNlbGYpOgogICAgICAgICBtID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKICAgICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0NDIsNiArNDY2OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBtc2cuYXNfc3RyaW5nKCkpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldAorICAgICMgYnV0IG5ldyB0ZXN0IHVzZXMgKjAqIGJlY2F1c2Ugb3RoZXJ3aXNlIGxhbmcvY2hhcnNldCBpcyBub3QgdmFsaWQuCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NlZ21lbnRlZF9ub3JtYWxfdmFsdWVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0KHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtNDQ1Niw2ICs0Njg1LDcgQEAKICAgICAgICAgICAgIHBhcmFtLAogICAgICAgICAgICAgJ2ZpbGVfX19fQ19fRE9DVU1FTlRTXzIwQU5EXzIwU0VUVElOR1NfRkFCSUVOX0xPQ0FMXzIwU0VUVElOR1NfVEVNUF9uc21haWwuaHRtJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX25vX2NoYXJzZXQKICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXRfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDY4LDYgKzQ2OTgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfZmlsZW5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogCisgICAgIyBEdXBsaWNhdGUgb2YgcHJldmlvdXMgdGVzdD8KICAgICBkZWYgdGVzdF9yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXRfaW5fZmlsZW5hbWVfZW5jb2RlZChzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ0ODAsNiArNDcxMSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9maWxlbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfcGFydGx5X2VuY29kZWQsCisgICAgIyBidXQgdGhlIHRlc3QgYmVsb3cgaXMgd3JvbmcgKHRoZSBmaXJzdCBwYXJ0IHNob3VsZCBiZSBkZWNvZGVkKS4KICAgICBkZWYgdGVzdF9yZmMyMjMxX3BhcnRseV9lbmNvZGVkKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDUzMSw2ICs0NzY0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2NvbnRlbnRfY2hhcnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfdW5rbm93bl9jaGFyc2V0X3RyZWF0ZWRfYXNfYXNjaWkKICAgICBkZWYgdGVzdF9yZmMyMjMxX2JhZF9lbmNvZGluZ19pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ1OTcsNiArNDgzMSw3IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCBOb25lKQogICAgICAgICBlcShzLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luc2lkZV9kb3VibGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9zaW5nbGVfdGlja19pbl9maWxlbmFtZShzZWxmKToKICAgICAgICAgbSA9ICIiIlwKIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287IG5hbWUqMD1cIkZyYW5rJ3NcIjsgbmFtZSoxPVwiIERvY3VtZW50XCIKQEAgLTQ2MDcsNiArNDg0Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShwYXJhbSwgdHVwbGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luX3ZhbHVlX3dpdGhfY2hhcnNldF9hbmRfbGFuZwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdGlja19hdHRhY2tfZXh0ZW5kZWQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDYyMCw2ICs0ODU2LDcgQEAKICAgICAgICAgZXEobGFuZ3VhZ2UsICdlbi11cycpCiAgICAgICAgIGVxKHMsICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5fbm9uX2VuY29kZWRfdmFsdWUKICAgICBkZWYgdGVzdF9yZmMyMjMxX3RpY2tfYXR0YWNrKHNlbGYpOgogICAgICAgICBtID0gIiIiXAogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbzsKQEAgLTQ2MzEsNiArNDg2OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShwYXJhbSwgdHVwbGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLCAidXMtYXNjaWknZW4tdXMnRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3Rlc19pbnNpZGVfcXVvdGVzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19leHRlbmRlZF92YWx1ZXMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDY0MCw2ICs0ODc4LDcgQEAKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhtKQogICAgICAgICBlcShtc2cuZ2V0X3BhcmFtKCduYW1lJyksICJGcmFuaydzIERvY3VtZW50IikKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ2NTUsNiArNDg5NCw4IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCAnZW4tdXMnKQogICAgICAgICBlcShzLCAnTXkgRG9jdW1lbnQgRm9yIFlvdScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cworICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9xdW90ZWRfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00Njc4LDcgKzQ5MTksNyBAQAogY2xhc3MgVGVzdFNpZ25lZChUZXN0RW1haWxCYXNlKToKIAogICAgIGRlZiBfbXNnX2FuZF9vYmooc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICB3aXRoIG9wZW5maWxlKGZpbmRmaWxlKGZpbGVuYW1lKSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoZmlsZW5hbWUpIGFzIGZwOgogICAgICAgICAgICAgb3JpZ2luYWwgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcob3JpZ2luYWwpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbCwgbXNnCkBAIC00NzEwLDIzICs0OTUxLDUgQEAKIAogCiAKLWRlZiBfdGVzdGNsYXNzZXMoKToKLSAgICBtb2QgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KLSAgICByZXR1cm4gW2dldGF0dHIobW9kLCBuYW1lKSBmb3IgbmFtZSBpbiBkaXIobW9kKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1Rlc3QnKV0KLQotCi1kZWYgc3VpdGUoKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCi0gICAgZm9yIHRlc3RjbGFzcyBpbiBfdGVzdGNsYXNzZXMoKToKLSAgICAgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUodGVzdGNsYXNzKSkKLSAgICByZXR1cm4gc3VpdGUKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZm9yIHRlc3RjbGFzcyBpbiBfdGVzdGNsYXNzZXMoKToKLSAgICAgICAgcnVuX3VuaXR0ZXN0KHRlc3RjbGFzcykKLQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nc3VpdGUnKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxNzQwOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKQEAgLTAsMCArMSwxOTkgQEAKK2ltcG9ydCBpbworaW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvciwgQnl0ZXNHZW5lcmF0b3IKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RHZW5lcmF0b3JCYXNlOgorCisgICAgcG9saWN5ID0gcG9saWN5LmRlZmF1bHQKKworICAgIGRlZiBtc2dtYWtlcihzZWxmLCBtc2csIHBvbGljeT1Ob25lKToKKyAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kKKyAgICAgICAgcmV0dXJuIHNlbGYubXNnZnVuYyhtc2csIHBvbGljeT1wb2xpY3kpCisKKyAgICByZWZvbGRfbG9uZ19leHBlY3RlZCA9IHsKKyAgICAgICAgMDogdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tCisgICAgICAgICAgICBGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogV2UgdGhlIHdpbGxpbmcgbGVkIGJ5IHRoZSB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZQorICAgICAgICAgICAgIGltcG9zc2libGUgZm9yIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaCBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZQorICAgICAgICAgICAgIHdlIGFyZSBub3cgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgIyBGcm9tIGlzIHdyYXBwZWQgYmVjYXVzZSB3cmFwcGVkIGl0IGZpdHMgaW4gNDAuCisgICAgICAgIDQwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206CisgICAgICAgICAgICAgbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUKKyAgICAgICAgICAgICB1bmtub3dpbmcgYXJlIGRvaW5nIHRoZSBpbXBvc3NpYmxlIGZvcgorICAgICAgICAgICAgIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaAorICAgICAgICAgICAgIGZvciBzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cKKyAgICAgICAgICAgICBxdWFsaWZpZWQgdG8gZG8gYW55dGhpbmcgd2l0aCBub3RoaW5nLgorCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICAiIiIpLAorICAgICAgICAjIE5laXRoZXIgdG8gbm9yIGZyb20gZml0IGV2ZW4gaWYgcHV0IG9uIGEgbmV3IGxpbmUsCisgICAgICAgICMgc28gd2UgbGVhdmUgdGhlbSBzdGlja2luZyBvdXQgb24gdGhlIGZpcnN0IGxpbmUuCisgICAgICAgIDIwOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb20KKyAgICAgICAgICAgIEZyb206IG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tCisgICAgICAgICAgICBTdWJqZWN0OiBXZSB0aGUKKyAgICAgICAgICAgICB3aWxsaW5nIGxlZCBieSB0aGUKKyAgICAgICAgICAgICB1bmtub3dpbmcgYXJlIGRvaW5nCisgICAgICAgICAgICAgdGhlIGltcG9zc2libGUgZm9yCisgICAgICAgICAgICAgdGhlIHVuZ3JhdGVmdWwuIFdlCisgICAgICAgICAgICAgaGF2ZSBkb25lIHNvIG11Y2gKKyAgICAgICAgICAgICBmb3Igc28gbG9uZyB3aXRoIHNvCisgICAgICAgICAgICAgbGl0dGxlIHdlIGFyZSBub3cKKyAgICAgICAgICAgICBxdWFsaWZpZWQgdG8gZG8KKyAgICAgICAgICAgICBhbnl0aGluZyB3aXRoCisgICAgICAgICAgICAgbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgfQorICAgIHJlZm9sZF9sb25nX2V4cGVjdGVkWzEwMF0gPSByZWZvbGRfbG9uZ19leHBlY3RlZFswXQorCisgICAgcmVmb2xkX2FsbF9leHBlY3RlZCA9IHJlZm9sZF9sb25nX2V4cGVjdGVkLmNvcHkoKQorICAgIHJlZm9sZF9hbGxfZXhwZWN0ZWRbMF0gPSAoCisgICAgICAgICAgICAiVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIlN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgIgorICAgICAgICAgICAgICAiaW1wb3NzaWJsZSBmb3IgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmUgZG9uZSBzbyBtdWNoIGZvciAiCisgICAgICAgICAgICAgICJzbyBsb25nIHdpdGggc28gbGl0dGxlIHdlIGFyZSBub3cgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nICIKKyAgICAgICAgICAgICAgIndpdGggbm90aGluZy5cbiIKKyAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAiTm9uZVxuIikKKyAgICByZWZvbGRfYWxsX2V4cGVjdGVkWzEwMF0gPSAoCisgICAgICAgICAgICAiVG86IHdob21faXRfbWF5X2NvbmNlcm5AZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbVxuIgorICAgICAgICAgICAgIlN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgIgorICAgICAgICAgICAgICAgICJpbXBvc3NpYmxlIGZvciB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZVxuIgorICAgICAgICAgICAgICAiIGRvbmUgc28gbXVjaCBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZSB3ZSBhcmUgbm93IHF1YWxpZmllZCAiCisgICAgICAgICAgICAgICAgInRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy5cbiIKKyAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAiTm9uZVxuIikKKworICAgIGxlbmd0aF9wYXJhbXMgPSBbbiBmb3IgbiBpbiByZWZvbGRfbG9uZ19leHBlY3RlZF0KKworICAgIGRlZiBsZW5ndGhfYXNfbWF4aGVhZGVybGVuX3BhcmFtZXRlcihzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIG1heGhlYWRlcmxlbj1uLCBwb2xpY3k9c2VsZi5wb2xpY3kpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4X2xpbmVfbGVuZ3RoX3BvbGljeShzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShtYXhfbGluZV9sZW5ndGg9bikpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4aGVhZGVybGVuX3Bhcm1fb3ZlcnJpZGVzX3BvbGljeShzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIG1heGhlYWRlcmxlbj1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhfbGluZV9sZW5ndGhfd2l0aF9yZWZvbGRfbm9uZV9kb2VzX25vdF9mb2xkKHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKHJlZm9sZF9zb3VyY2U9J25vbmUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xpbmVfbGVuZ3RoPW4pKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heF9saW5lX2xlbmd0aF93aXRoX3JlZm9sZF9hbGxfZm9sZHMoc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUocmVmb2xkX3NvdXJjZT0nYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9saW5lX2xlbmd0aD1uKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2FsbF9leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgdGVzdF9jcmxmX2NvbnRyb2xfdmlhX3BvbGljeShzZWxmKToKKyAgICAgICAgc291cmNlID0gIlN1YmplY3Q6IHRlc3RcclxuXHJcbnRlc3QgYm9keVxyXG4iCisgICAgICAgIGV4cGVjdGVkID0gc291cmNlCisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc291cmNlKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1wb2xpY3kuU01UUCkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X2ZsYXR0ZW5fbGluZXNlcF9vdmVycmlkZXNfcG9saWN5KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAiU3ViamVjdDogdGVzdFxuXG50ZXN0IGJvZHlcbiIKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3VyY2UKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzb3VyY2UpKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXBvbGljeS5TTVRQKQorICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChleHBlY3RlZCkpCisKKworY2xhc3MgVGVzdEdlbmVyYXRvcihUZXN0R2VuZXJhdG9yQmFzZSwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBtc2dmdW5jID0gc3RhdGljbWV0aG9kKG1lc3NhZ2VfZnJvbV9zdHJpbmcpCisgICAgZ2VuY2xhc3MgPSBHZW5lcmF0b3IKKyAgICBpb2NsYXNzID0gaW8uU3RyaW5nSU8KKyAgICB0eXAgPSBzdHIKKworCitjbGFzcyBUZXN0Qnl0ZXNHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgbXNnZnVuYyA9IHN0YXRpY21ldGhvZChtZXNzYWdlX2Zyb21fYnl0ZXMpCisgICAgZ2VuY2xhc3MgPSBCeXRlc0dlbmVyYXRvcgorICAgIGlvY2xhc3MgPSBpby5CeXRlc0lPCisgICAgdHlwID0gbGFtYmRhIHNlbGYsIHg6IHguZW5jb2RlKCdhc2NpaScpCisKKyAgICBkZWYgdGVzdF9jdGVfdHlwZV83Yml0X2hhbmRsZXNfdW5rbm93bl84Yml0KHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAoIlN1YmplY3Q6IE1haW50ZW5hbnQgamUgdm91cyBwcsOpc2VudGUgbW9uICIKKyAgICAgICAgICAgICAgICAgImNvbGzDqGd1ZVxuXG4iKS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZXhwZWN0ZWQgPSAoJ1N1YmplY3Q6IE1haW50ZW5hbnQgamUgdm91cyA9P3Vua25vd24tOGJpdD9xPycKKyAgICAgICAgICAgICAgICAgICAgJ3ByPUMzPUE5c2VudGVfbW9uX2NvbGw9QzM9QThndWU/PVxuXG4nKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2J5dGVzKHNvdXJjZSkKKyAgICAgICAgcyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKGN0ZV90eXBlPSc3Yml0JykpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2N0ZV90eXBlXzdiaXRfdHJhbnNmb3Jtc184Yml0X2N0ZShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IGZvb0BiYXIuY29tCisgICAgICAgICAgICBUbzogRGluc2RhbGUKKyAgICAgICAgICAgIFN1YmplY3Q6IE51ZGdlIG51ZGdlLCB3aW5rLCB3aW5rCisgICAgICAgICAgICBNaW1lLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJsYXRpbi0xIgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCisgICAgICAgICAgICBvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKS5lbmNvZGUoJ2xhdGluMScpCisgICAgICAgIG1zZyA9IG1lc3NhZ2VfZnJvbV9ieXRlcyhzb3VyY2UpCisgICAgICAgIGV4cGVjdGVkID0gIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBmb29AYmFyLmNvbQorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luaworICAgICAgICAgICAgTWltZS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0iaXNvLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgb2ggbD1FMCBsPUUwLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuPworICAgICAgICAgICAgIiIiKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcyA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKGN0ZV90eXBlPSc3Yml0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc2VwPSdcbicpKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmE4MWYyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0wLDAgKzEsMTUxNSBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MsIEdyb3VwCisKKworRElUVE8gPSBvYmplY3QoKQorCisKK2NsYXNzIFRlc3RIZWFkZXJSZWdpc3RyeShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X2FyYml0cmFyeV9uYW1lX3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9uYW1lX2Nhc2VfaWdub3JlZChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgIyBXaGl0ZWJveCBjaGVjayB0aGF0IHRlc3QgaXMgdmFsaWQKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignU3ViamVjdCcsIGZhY3RvcnkucmVnaXN0cnkpCisgICAgICAgIGggPSBmYWN0b3J5KCdTdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGNsYXNzIEZvb0Jhc2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2Jhc2VfY2xhc3Moc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeShiYXNlX2NsYXNzPXNlbGYuRm9vQmFzZSkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ2Zvb2JhcicsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vQmFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGNsYXNzIEZvb0RlZmF1bHQ6CisgICAgICAgIHBhcnNlID0gaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyLnBhcnNlCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZV9kZWZhdWx0X2NsYXNzKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoZGVmYXVsdF9jbGFzcz1zZWxmLkZvb0RlZmF1bHQpCisgICAgICAgIGggPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb29EZWZhdWx0KQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVmYXVsdF9jbGFzc19vbmx5X292ZXJyaWRlc19kZWZhdWx0KHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoZGVmYXVsdF9jbGFzcz1zZWxmLkZvb0RlZmF1bHQpCisgICAgICAgIGggPSBmYWN0b3J5KCdzdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKworICAgIGRlZiB0ZXN0X2RvbnRfdXNlX2RlZmF1bHRfbWFwKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkodXNlX2RlZmF1bHRfbWFwPUZhbHNlKQorICAgICAgICBoID0gZmFjdG9yeSgnc3ViamVjdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9tYXBfdG9fdHlwZShzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKyAgICAgICAgaDEgPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIGZhY3RvcnkubWFwX3RvX3R5cGUoJ2Zvb2JhcicsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZVVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgaDIgPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMSwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgxLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMiwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgyLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIpCisKKworY2xhc3MgVGVzdEhlYWRlckJhc2UoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoKQorCisgICAgZGVmIG1ha2VfaGVhZGVyKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZmFjdG9yeShuYW1lLCB2YWx1ZSkKKworCitjbGFzcyBUZXN0QmFzZUhlYWRlckZlYXR1cmVzKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGgpLCAndGhpcyBpcyBhIHRlc3QnKQorCisgICAgZGVmIHRlc3Rfc3Vic3RyKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaFs1OjddLCAnaXMnKQorCisgICAgZGVmIHRlc3RfaGFzX25hbWUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsICdzdWJqZWN0JykKKworICAgIGRlZiBfdGVzdF9hdHRyX3JvKHNlbGYsIGF0dHIpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2V0YXR0cihoLCBhdHRyLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X25hbWVfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oJ25hbWUnKQorCisgICAgZGVmIHRlc3RfZGVmZWN0c19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybygnZGVmZWN0cycpCisKKyAgICBkZWYgdGVzdF9kZWZlY3RzX2lzX3R1cGxlKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHMsIHR1cGxlKQorICAgICAgICAjIE1ha2Ugc3VyZSBpdCBpcyBzdGlsbCB0cnVlIHdoZW4gdGhlcmUgYXJlIGRlZmVjdHMuCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHMsIHR1cGxlKQorCisgICAgIyBYWFg6IEZJWE1FCisgICAgI2RlZiB0ZXN0X0NSX2luX3ZhbHVlKHNlbGYpOgorICAgICMgICAgIyBYWFg6IHRoaXMgYWxzbyByZS1yYWlzZXMgdGhlIGlzc3VlIG9mIGVtYmVkZGVkIGhlYWRlcnMsCisgICAgIyAgICAjIG5lZWQgdGVzdCBhbmQgc29sdXRpb24gZm9yIHRoYXQuCisgICAgIyAgICB2YWx1ZSA9ICdccicuam9pbihbJ3RoaXMgaXMnLCAnIGEgdGVzdCddKQorICAgICMgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCB2YWx1ZSkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgdmFsdWUpCisgICAgIyAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfUkZDMjA0N192YWx1ZV9kZWNvZGVkKHNlbGYpOgorICAgICAgICB2YWx1ZSA9ICc9P3V0Zi04P3E/dGhpc19pc19hX3Rlc3Q/PScKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAndGhpcyBpcyBhIHRlc3QnKQorCisKK2NsYXNzIFRlc3REYXRlSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRhdGVzdHJpbmcgPSAnU3VuLCAyMyBTZXAgMjAwMSAyMDoxMDo1NSAtMDcwMCcKKyAgICB1dGNvZmZzZXQgPSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9LTcpCisgICAgdHogPSBkYXRldGltZS50aW1lem9uZSh1dGNvZmZzZXQpCisgICAgZHQgPSBkYXRldGltZS5kYXRldGltZSgyMDAxLCA5LCAyMywgMjAsIDEwLCA1NSwgdHppbmZvPXR6KQorCisgICAgZGVmIHRlc3RfcGFyc2VfZGF0ZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kYXRldGltZS51dGNvZmZzZXQoKSwgc2VsZi51dGNvZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUsIHNlbGYuZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X2RhdGVfaGVhZGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5pcXVlRGF0ZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1heF9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRlZmVjdHMsICgpKQorCisgICAgZGVmIHRlc3RfcmVzZW50X2RhdGVfaGVhZGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdyZXNlbnQtZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkRhdGVIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYXhfY291bnQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X25vX3ZhbHVlX2lzX2RlZmVjdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5kZWZlY3RzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGVmZWN0c1swXSwgZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKQorCisgICAgZGVmIHRlc3RfZGF0ZXRpbWVfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmRhdGV0aW1lID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X3NldF9kYXRlX2hlYWRlcl9mcm9tX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ0RhdGUnXSA9IHNlbGYuZHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydEYXRlJ10sIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydEYXRlJ10uZGF0ZXRpbWUsIHNlbGYuZHQpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdENvbnRlbnRUeXBlSGVhZGVyKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjb250ZW50X3R5cGVfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzKToKKyAgICAgICAgbCA9IGxlbihhcmdzKQorICAgICAgICBwYXJtZGljdCA9IGFyZ3NbMF0gaWYgbD4wIGVsc2Uge30KKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzFdIGlmIGw+MSBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1syXSBpZiBsPjIgYW5kIGFyZ3NbMl0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LVR5cGU6JyArICcgJyBpZiBzb3VyY2UgZWxzZSAnJworICAgICAgICBmb2xkZWQgPSBhcmdzWzNdIGlmIGw+MyBlbHNlIGhlYWRlciArIHNvdXJjZSArICdcbicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmNvbnRlbnRfdHlwZSwgY29udGVudF90eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWFpbnR5cGUsIG1haW50eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguc3VidHlwZSwgc3VidHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnBhcmFtcywgcGFybWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjb250ZW50X3R5cGVfcGFyYW1zID0geworCisgICAgICAgICMgRXhhbXBsZXMgZnJvbSBSRkMgMjA0NS4KKworICAgICAgICAnUkZDXzIwNDVfMSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpIChQbGFpbiB0ZXh0KScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicpLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30pLAorCisgICAgICAgICMgUkZDIDIwNDUgNS4yIHNheXMgc3ludGFjdGljYWxseSBpbnZhbGlkIHZhbHVlcyBhcmUgdG8gYmUgdHJlYXRlZCBhcworICAgICAgICAjIHRleHQvcGxhaW4uCisKKyAgICAgICAgJ25vX3N1YnR5cGVfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ3RleHQvJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdub19zbGFzaF9pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdqdW5rX3RleHRfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJzxjcmF6eSAic3R1ZmYiPicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAndG9vX21hbnlfc2xhc2hlc19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZy9mb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgIyBCdXQgdW5rbm93biBuYW1lcyBhcmUgT0suICBXZSBjb3VsZCBtYWtlIG5vbi1JQU5BIG5hbWVzIGEgZGVmZWN0LCBidXQKKyAgICAgICAgIyBieSBub3QgZG9pbmcgc28gd2UgbWFrZSBvdXJzZWx2ZXMgZnV0dXJlIHByb29mLiAgVGhlIGZhY3QgdGhhdCB0aGV5CisgICAgICAgICMgYXJlIHVua25vd24gd2lsbCBiZSBkZXRlY3RhYmxlIGJ5IHRoZSBmYWN0IHRoYXQgdGhleSBkb24ndCBhcHBlYXIgaW4KKyAgICAgICAgIyB0aGUgbWltZV9yZWdpc3RyeS4uLmFuZCB0aGUgYXBwbGljYXRpb24gaXMgZnJlZSB0byBleHRlbmQgdGhhdCBsaXN0CisgICAgICAgICMgdG8gaGFuZGxlIHRoZW0gZXZlbiBpZiB0aGUgY29yZSBsaWJyYXJ5IGRvZXNuJ3QuCisKKyAgICAgICAgJ3Vua25vd25fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ2JhZC9uYW1lcycsCisgICAgICAgICAgICAnYmFkL25hbWVzJywKKyAgICAgICAgICAgICdiYWQnLAorICAgICAgICAgICAgJ25hbWVzJyksCisKKyAgICAgICAgIyBUaGUgY29udGVudCB0eXBlIGlzIGNhc2UgaW5zZW5zaXRpdmUsIGFuZCBDRldTIGlzIGlnbm9yZWQuCisKKyAgICAgICAgJ21peGVkX2Nhc2VfY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ0ltQWdlL0pQZWcnLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJyksCisKKyAgICAgICAgJ3NwYWNlc19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnICB0ZXh0ICAvICBwbGFpbiAgJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicpLAorCisgICAgICAgICdjZndzX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICcoZm9vKSB0ZXh0IChiYXIpLyhiYXopcGxhaW4oc3R1ZmYpJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicpLAorCisgICAgICAgICMgdGVzdCBzb21lIHBhcmFtZXRlcnMgKG1vcmUgdGVzdHMgY291bGQgYmUgYWRkZWQgZm9yIHBhcmFtZXRlcnMKKyAgICAgICAgIyBhc3NvY2lhdGVkIHdpdGggb3RoZXIgY29udGVudCB0eXBlcywgYnV0IHNpbmNlIHBhcmFtZXRlciBwYXJzaW5nIGlzCisgICAgICAgICMgZ2VuZXJpYyB0aGV5IHdvdWxkIGJlIHJlZHVuZGFudCBmb3IgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24pLgorCisgICAgICAgICdjaGFyc2V0X3BhcmFtJzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04J30pLAorCisgICAgICAgICdjYXBpdGFsaXplZF9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9IlVTLUFTQ0lJIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ1VTLUFTQ0lJJ30pLAorCisgICAgICAgICd1bmtub3duX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0iZk9vIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ2ZPbyd9KSwKKworICAgICAgICAnY2FwaXRhbGl6ZWRfY2hhcnNldF9wYXJhbV9uYW1lX2FuZF9jb21tZW50JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IChpbnRlcmplY3Rpb24pIENoYXJzZXQ9InV0Zi04IicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICMgU2hvdWxkIHRoZSBwYXJhbWV0ZXIgbmFtZSBiZSBsb3dlcmNhc2VkIGhlcmU/CisgICAgICAgICAgICAndGV4dC9wbGFpbjsgQ2hhcnNldD0idXRmLTgiJyksCisKKyAgICAgICAgIyBTaW5jZSB0aGlzIGlzIHByZXR0eSBtdWNoIHRoZSB1ci1taW1laGVhZGVyLCB3ZSdsbCBwdXQgYWxsIHRoZSB0ZXN0cworICAgICAgICAjIHRoYXQgZXhlcmNpc2UgdGhlIHBhcmFtZXRlciBwYXJzaW5nIGFuZCBmb3JtYXR0aW5nIGhlcmUuCisgICAgICAgICMKKyAgICAgICAgIyBYWFg6IHF1ZXN0aW9uOiBpcyBtaW5pbWFsIHF1b3RpbmcgcHJlZmVycmVkPworCisgICAgICAgICd1bnF1b3RlZF9wYXJhbV92YWx1ZSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT1mb28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnZm9vJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iZm9vIicpLAorCisgICAgICAgICdwYXJhbV92YWx1ZV93aXRoX3RzcGVjaWFscyc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iKGJhcilmb28gYmx1ZSInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsndGl0bGUnOiAnKGJhcilmb28gYmx1ZSd9KSwKKworICAgICAgICAncGFyYW1fd2l0aF9leHRyYV9xdW90ZWRfd2hpdGVzcGFjZSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyB0aXRsZT0iICBhICAgICBsb29uZyAgd2F5IFx0IGhvbWUgICAiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J3RpdGxlJzogJyAgYSAgICAgbG9vbmcgIHdheSBcdCBob21lICAgJ30pLAorCisgICAgICAgICdiYWRfcGFyYW1zJzogKAorICAgICAgICAgICAgJ2JsYXJnOyBiYXo7IGJvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydiYXonOiAnJywgJ2Jvbyc6ICcnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMyksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfcGFyYW1fZXF1YWxzJzogKAorICAgICAgICAgICAgJ011bHRpcGFydC9taXhlZDsgYm91bmRhcnkgPSAiQ1BJTVNTTVRQQzA2cDVmM3RHIicsCisgICAgICAgICAgICAnbXVsdGlwYXJ0L21peGVkJywKKyAgICAgICAgICAgICdtdWx0aXBhcnQnLAorICAgICAgICAgICAgJ21peGVkJywKKyAgICAgICAgICAgIHsnYm91bmRhcnknOiAnQ1BJTVNTTVRQQzA2cDVmM3RHJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSJDUElNU1NNVFBDMDZwNWYzdEciJyksCisKKyAgICAgICAgJ3NwYWNlc19hcm91bmRfc2VtaXMnOiAoCisgICAgICAgICAgICAoJ2ltYWdlL2pwZWc7IG5hbWU9IndpYmJsZS5KUEciIDsgeC1tYWMtdHlwZT0iNEE1MDQ1NDciIDsgJworICAgICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSInKSwKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAnd2liYmxlLkpQRycsCisgICAgICAgICAgICAgJ3gtbWFjLXR5cGUnOiAnNEE1MDQ1NDcnLAorICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yJzogJzQ3NEI0RjRFJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICgnaW1hZ2UvanBlZzsgbmFtZT0id2liYmxlLkpQRyI7IHgtbWFjLXR5cGU9IjRBNTA0NTQ3IjsgJworICAgICAgICAgICAgICAgICd4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSInKSwKKyAgICAgICAgICAgICMgWFhYOiBpdCBjb3VsZCBiZSB0aGF0IHdlIHdpbGwgZXZlbnR1YWxseSBwcmVmZXIgdG8gZm9sZCBzdGFydGluZworICAgICAgICAgICAgIyBmcm9tIHRoZSBkZWNvZGVkIHZhbHVlLCBpbiB3aGljaCBjYXNlIHRoZXNlIHNwYWNlcyBhbmQgc2ltaWxhcgorICAgICAgICAgICAgIyBzcGFjZXMgaW4gb3RoZXIgdGVzdHMgd2lsbCBiZSB3cm9uZy4KKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBpbWFnZS9qcGVnOyBuYW1lPSJ3aWJibGUuSlBHIiA7ICcKKyAgICAgICAgICAgICAgICAneC1tYWMtdHlwZT0iNEE1MDQ1NDciIDtcbicKKyAgICAgICAgICAgICAnIHgtbWFjLWNyZWF0b3I9IjQ3NEI0RjRFIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdzZW1pc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSZhbXA7JmFtcDtKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ0ppbSZhbXA7JmFtcDtKaWxsJ30pLAorCisgICAgICAgICdzaW5nbGVfcXVvdGVzX2luc2lkZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwnQm9iXCcgSmlsbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJKaW0gJ0JvYicgSmlsbCJ9KSwKKworICAgICAgICAnZG91YmxlX3F1b3Rlc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBuYW1lPSJKaW0gXCJCb2JcIiBKaWxsIicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ0ppbSAiQm9iIiBKaWxsJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwiQm9iXCIgSmlsbCInKSwKKworICAgICAgICAjIFhYWDogVGhpcyB0ZXN0IHdvcmtzIGV4Y2VwdCBmb3IgdGhlIHJlZm9sZGluZyBvZiB0aGUgaGVhZGVyLiAgSSdsbAorICAgICAgICAjIGRlYWwgd2l0aCB0aGF0IGJ1ZyB3aGVuIEkgZGVhbCB3aXRoIHRoZSBvdGhlciBmb2xkaW5nIGJ1Z3MuCisgICAgICAgICMnbm9uX2FzY2lpX2luX3BhcmFtcyc6ICgKKyAgICAgICAgIyAgICAoJ2Zvb1x4YTcvYmFyOyBiXHhhN3I9dHdvOyAnCisgICAgICAgICMgICAgICAgICdiYXo9dGhyXHhhN2UnLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpKSwKKyAgICAgICAgIyAgICAnZm9vXHVGRkZEL2JhcicsCisgICAgICAgICMgICAgJ2Zvb1x1RkZGRCcsCisgICAgICAgICMgICAgJ2JhcicsCisgICAgICAgICMgICAgeydiXHVGRkZEcic6ICd0d28nLCAnYmF6JzogJ3Roclx1RkZGRGUnfSwKKyAgICAgICAgIyAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKjMsCisgICAgICAgICMgICAgJ2Zvb++/vS9iYXI7IGLvv71yPSJ0d28iOyBiYXo9InRocu+/vWUiJywKKyAgICAgICAgIyAgICApLAorCisgICAgICAgICMgUkZDIDIyMzEgcGFyYW1ldGVyIHRlc3RzLgorCisgICAgICAgICdyZmMyMjMxX3NlZ21lbnRlZF9ub3JtYWxfdmFsdWVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWUqMD0iYWJjIjsgbmFtZSoxPSIuaHRtbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJhYmMuaHRtbCJ9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnaW1hZ2UvanBlZzsgbmFtZT0iYWJjLmh0bWwiJyksCisKKyAgICAgICAgJ3F1b3Rlc19pbnNpZGVfcmZjMjIzMV92YWx1ZSc6ICgKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgYmFyKjA9ImJhelwiZm9vYmFyIjsgYmFyKjE9IlwiYmF6IicsCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeydiYXInOiAnYmF6ImZvb2JhciJiYXonfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgcidpbWFnZS9qcGVnOyBiYXI9ImJhelwiZm9vYmFyXCJiYXoiJyksCisKKyAgICAgICAgIyBYWFg6IFRoaXMgdGVzdCB3b3JrcyBleGNlcHQgZm9yIHRoZSByZWZvbGRpbmcgb2YgdGhlIGhlYWRlci4gIEknbGwKKyAgICAgICAgIyBkZWFsIHdpdGggdGhhdCBidWcgd2hlbiBJIGRlYWwgd2l0aCB0aGUgb3RoZXIgZm9sZGluZyBidWdzLgorICAgICAgICAjJ25vbl9hc2NpaV9yZmMyMjMxX3ZhbHVlJzogKAorICAgICAgICAjICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsgJworICAgICAgICAjICAgICAidGl0bGUqPXVzLWFzY2lpJ2VuJ1RoaXMlMjBpcyUyMCIKKyAgICAgICAgIyAgICAgJ25vdCUyMGZceGE3bicpLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAjICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgIyAgICAndGV4dCcsCisgICAgICAgICMgICAgJ3BsYWluJywKKyAgICAgICAgIyAgICB7J2NoYXJzZXQnOiAndXMtYXNjaWknLCAndGl0bGUnOiAnVGhpcyBpcyBub3QgZlx1RkZGRG4nfSwKKyAgICAgICAgIyAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgIyAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIjsgdGl0bGU9IlRoaXMgaXMgbm90IGbvv71uIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0Kj1hbnNpLXgzLjQtMTk2OFwnXCd1cy1hc2NpaScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAjIFRoaXMgZm9sbG93cyB0aGUgUkZDOiBubyBkb3VibGUgcXVvdGVzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcy4KKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9ub19kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjAqPScnVGhpcyUyMGlzJTIwOyIKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjEqPSUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMDsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzICoqKmZ1bioqKiBpcyBpdCBub3QucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdG5hbWUqMCo9XCdcJ1RoaXMlMjBpcyUyMDtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMDtcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBhbHNvIGhhbmRsZSBpdCBpZiB0aGVyZSBhcmUgc3B1cnJpb3VzIGRvdWJsZSBxb3V0ZXMuCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfd2l0aF9kb3VibGVfcXVvdGVzJzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJ1cy1hc2NpaVwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9InVzLWFzY2lpXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdCBub3QucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaTsnCisgICAgICAgICAgICAgICAnXHR0aXRsZSowKj0idXMtYXNjaWlcJ2VuXCdUaGlzJTIwaXMlMjByZWFsbHklMjAiOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICdcdHRpdGxlKjI9ImlzblwndCBpdCEiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJywgJ3RpdGxlJzogIlRoaXMgaXMgcmVhbGx5ICoqKmZ1bioqKiBpc24ndCBpdCEifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICgndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiOyAnCisgICAgICAgICAgICAgICAndGl0bGU9IlRoaXMgaXMgcmVhbGx5ICoqKmZ1bioqKiBpc25cJ3QgaXQhIicpLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7XG4nCisgICAgICAgICAgICAgJ1x0dGl0bGUqMCo9InVzLWFzY2lpXCdlblwnVGhpcyUyMGlzJTIwcmVhbGx5JTIwIjtcbicKKyAgICAgICAgICAgICAnXHR0aXRsZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdHRpdGxlKjI9ImlzblwndCBpdCEiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luX3ZhbHVlX3dpdGhfY2hhcnNldF9hbmRfbGFuZyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICJcdG5hbWUqMCo9XCJ1cy1hc2NpaSdlbi11cydGcmFuaydzXCI7IG5hbWUqMSo9XCIgRG9jdW1lbnRcIiIpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogIkZyYW5rJ3MgRG9jdW1lbnQifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iRnJhbmtcJ3MgRG9jdW1lbnQiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyI7XG4nCisgICAgICAgICAgICAgJyBuYW1lKjEqPSIgRG9jdW1lbnQiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfc2luZ2xlX3F1b3RlX2luX25vbl9lbmNvZGVkX3ZhbHVlJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgIlx0bmFtZSowPVwidXMtYXNjaWknZW4tdXMnRnJhbmsnc1wiOyBuYW1lKjE9XCIgRG9jdW1lbnRcIiIpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3MgRG9jdW1lbnQifSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJ1cy1hc2NpaVwnZW4tdXNcJ0ZyYW5rXCdzIERvY3VtZW50IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyI7XG4nCisgICAgICAgICAgICAgJyBuYW1lKjE9IiBEb2N1bWVudCJcbicpLAorICAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBOQU1FKjAqPWVuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCcsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ2VuZ2xpc2hfaXNfdGhlX2RlZmF1bHQuaHRtbCd9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBOQU1FPSJlbmdsaXNoX2lzX3RoZV9kZWZhdWx0Lmh0bWwiJyksCisKKyAgICAgICAgJ3JmYzIyMzFfZW5jb2RlZF9ub19jaGFyc2V0JzogKAorICAgICAgICAgICAgKCJ0ZXh0L3BsYWluOyIKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHRuYW1lKjI9ImlzIGl0LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIFhYWDogc2VlIGJlbG93Li4udGhlIGZpcnN0IG5hbWUgbGluZSBoZXJlIHNob3VsZCBiZSAqMCBub3QgKjAqLgorICAgICAgICAncmZjMjIzMV9wYXJ0bHlfZW5jb2RlZCc6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfcGFydGx5X2VuY29kZWRfMic6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyBldmVuIG1vcmUgJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwaXMgaXQucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IG5hbWU9IlRoaXMgaXMgZXZlbiBtb3JlICUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMGlzIGl0LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ3JmYzIyMzFfdW5rbm93bl9jaGFyc2V0X3RyZWF0ZWRfYXNfYXNjaWknOiAoCisgICAgICAgICAgICAidGV4dC9wbGFpbjsgbmFtZSowKj1ib2d1cyd4eCdhc2NpaV9pc190aGVfZGVmYXVsdCIsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ2FzY2lpX2lzX3RoZV9kZWZhdWx0J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJhc2NpaV9pc190aGVfZGVmYXVsdCInKSwKKworICAgICAgICAncmZjMjIzMV9iYWRfY2hhcmFjdGVyX2luX2NoYXJzZXRfcGFyYW1ldGVyX3ZhbHVlJzogKAorICAgICAgICAgICAgInRleHQvcGxhaW47IGNoYXJzZXQqPWFzY2lpJyd1dGYtOCVFMiU4MCU5RCIsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3V0Zi04XHVGRkZEXHVGRkZEXHVGRkZEJ30sCisgICAgICAgICAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdLAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04XHVGRkZEXHVGRkZEXHVGRkZEIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfdGhlbl91bmVuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjAqPSJ1cy1hc2NpaVwnZW4tdXNcJ015IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxPSIgRG9jdW1lbnQiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogJ015IERvY3VtZW50IEZvciBZb3UnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9Ik15IERvY3VtZW50IEZvciBZb3UiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxPSIgRG9jdW1lbnQiO1x0bmFtZSoyPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIE15IHJlYWRpbmcgb2YgdGhlIFJGQyBpcyB0aGF0IHRoaXMgaXMgYW4gaW52YWxpZCBoZWFkZXIuICBUaGUgUkZDCisgICAgICAgICMgc2F5cyB0aGF0IGlmIGNoYXJzZXQgYW5kIGxhbmd1YWdlIGluZm9ybWF0aW9uIGlzIGdpdmVuLCB0aGUgZmlyc3QKKyAgICAgICAgIyBzZWdtZW50ICptdXN0KiBiZSBlbmNvZGVkLgorICAgICAgICAncmZjMjIzMV91bmVuY29kZWRfdGhlbl9lbmNvZGVkX3NlZ21lbnRzJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowPXVzLWFzY2lpXCdlbi11c1wnTXk7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogJ015IERvY3VtZW50IEZvciBZb3UnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0iTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0bmFtZSowPXVzLWFzY2lpJ2VuLXVzJ015O1x0IgorICAgICAgICAgICAgICAgICMgWFhYOiB0aGUgbmV3bGluZSBpcyBpbiB0aGUgd3JvbmcgcGxhY2UsIGNvbWUgYmFjayBhbmQgZml4CisgICAgICAgICAgICAgICAgIyB0aGlzIHdoZW4gdGhlIHJlc3Qgb2YgdGVzdHMgcGFzcy4KKyAgICAgICAgICAgICAgICAnbmFtZSoxKj0iIERvY3VtZW50IlxuOycKKyAgICAgICAgICAgICAnXHRuYW1lKjIqPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAjIFhYWDogSSB3b3VsZCBzYXkgdGhpcyBvbmUgc2hvdWxkIGRlZmF1bHQgdG8gYXNjaWkvZW4gZm9yIHRoZQorICAgICAgICAjICJlbmNvZGVkIiBzZWdtZW50LCBzaW5jZSB0aGUgdGhlIGZpcnN0IHNlZ21lbnQgaXMgbm90IGVuY29kZWQgYW5kIGlzCisgICAgICAgICMgaW4gZG91YmxlIHF1b3RlcywgbWFraW5nIHRoZSB2YWx1ZSBhIHZhbGlkIG5vbi1lbmNvZGVkIHN0cmluZy4gIFRoZQorICAgICAgICAjIG9sZCBwYXJzZXIgZGVjb2RlcyB0aGlzIGp1c3QgbGlrZSB0aGUgcHJldmlvdXMgY2FzZSwgd2hpY2ggbWF5IGJlIHRoZQorICAgICAgICAjIGJldHRlciBQb3N0ZWwgcnVsZSwgYnV0IGNvdWxkIGVxdWFsbHkgcmVzdWx0IGluIGJvcmtpbmcgaGVhZGVycyB0aGF0CisgICAgICAgICMgaW50ZW50aWFsbHkgaGF2ZSBxdW90ZWQgcXVvdGVzIGluIHRoZW0uICBXZSBjb3VsZCBnZXQgdGhpcyA5OCUgcmlnaHQKKyAgICAgICAgIyBpZiB3ZSB0cmVhdCBpdCBhcyBhIHF1b3RlZCBzdHJpbmcgKnVubGVzcyogaXQgbWF0Y2hlcyB0aGUKKyAgICAgICAgIyBjaGFyc2V0J2xhbmcndmFsdWUgcGF0dGVybiBleGFjdGx5ICphbmQqIHRoZXJlIGlzIGF0IGxlYXN0IG9uZQorICAgICAgICAjIGVuY29kZWQgc2VnbWVudC4gIEltcGxlbWVudGluZyB0aGF0IGFsZ29yaXRobSB3aWxsIHJlcXVpcmUgc29tZQorICAgICAgICAjIHJlZmFjdG9yaW5nLCBzbyBJIGhhdmVuJ3QgZG9uZSBpdCAoeWV0KS4KKworICAgICAgICAncmZjMjIzMV9xb3V0ZWRfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICdcdG5hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMio9IiBGb3IgWW91IicpLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vJywKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbicsCisgICAgICAgICAgICAneC1mb28nLAorICAgICAgICAgICAgeyduYW1lJzogInVzLWFzY2lpJ2VuLXVzJ015IERvY3VtZW50IEZvciBZb3UifSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0idXMtYXNjaWlcJ2VuLXVzXCdNeSBEb2N1bWVudCBGb3IgWW91IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMD0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iIERvY3VtZW50IjtcdG5hbWUqMio9IiBGb3IgWW91IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RDb250ZW50VHJhbnNmZXJFbmNvZGluZyhUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgY3RlX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBjdGUsCisgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgZGVmZWN0cyA9ICBhcmdzWzBdIGlmIGw+MCBlbHNlIFtdCisgICAgICAgIGRlY29kZWQgPSAgYXJnc1sxXSBpZiBsPjEgYW5kIGFyZ3NbMV0gaXMgbm90IERJVFRPIGVsc2Ugc291cmNlCisgICAgICAgIGhlYWRlciA9ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOicgKyAnICcgaWYgc291cmNlIGVsc2UgJycKKyAgICAgICAgZm9sZGVkID0gYXJnc1syXSBpZiBsPjIgZWxzZSBoZWFkZXIgKyBzb3VyY2UgKyAnXG4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguY3RlLCBjdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCBmb2xkZWQpCisKKyAgICBjdGVfcGFyYW1zID0geworCisgICAgICAgICdSRkNfMjE4M18xJzogKAorICAgICAgICAgICAgJ2Jhc2U2NCcsCisgICAgICAgICAgICAnYmFzZTY0JywpLAorCisgICAgICAgICdub192YWx1ZSc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJzdiaXQnLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0sCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOlxuJywKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ2p1bmtfYWZ0ZXJfY3RlJzogKAorICAgICAgICAgICAgJzdiaXQgYW5kIGEgYnVuY2ggbW9yZScsCisgICAgICAgICAgICAnN2JpdCcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudERpc3Bvc2l0aW9uKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiBjb250ZW50X2Rpc3BfYXNfdmFsdWUoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgcGFybWRpY3QgPSBhcmdzWzBdIGlmIGw+MCBlbHNlIHt9CisgICAgICAgIGRlZmVjdHMgPSAgYXJnc1sxXSBpZiBsPjEgZWxzZSBbXQorICAgICAgICBkZWNvZGVkID0gIGFyZ3NbMl0gaWYgbD4yIGFuZCBhcmdzWzJdIGlzIG5vdCBESVRUTyBlbHNlIHNvdXJjZQorICAgICAgICBoZWFkZXIgPSAnQ29udGVudC1EaXNwb3NpdGlvbjonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbM10gaWYgbD4zIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmNvbnRlbnRfZGlzcG9zaXRpb24sIGNvbnRlbnRfZGlzcG9zaXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5wYXJhbXMsIHBhcm1kaWN0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgZm9sZGVkKQorCisgICAgY29udGVudF9kaXNwX3BhcmFtcyA9IHsKKworICAgICAgICAjIEV4YW1wbGVzIGZyb20gUkZDIDIxODMuCisKKyAgICAgICAgJ1JGQ18yMTgzXzEnOiAoCisgICAgICAgICAgICAnaW5saW5lJywKKyAgICAgICAgICAgICdpbmxpbmUnLCksCisKKyAgICAgICAgJ1JGQ18yMTgzXzInOiAoCisgICAgICAgICAgICAoJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPWdlbm9tZS5qcGVnOycKKyAgICAgICAgICAgICAnICBtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCI7JyksCisgICAgICAgICAgICAnYXR0YWNobWVudCcsCisgICAgICAgICAgICB7J2ZpbGVuYW1lJzogJ2dlbm9tZS5qcGVnJywKKyAgICAgICAgICAgICAnbW9kaWZpY2F0aW9uLWRhdGUnOiAnV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAoJ2F0dGFjaG1lbnQ7IGZpbGVuYW1lPSJnZW5vbWUuanBlZyI7ICcKKyAgICAgICAgICAgICAgICAgJ21vZGlmaWNhdGlvbi1kYXRlPSJXZWQsIDEyIEZlYiAxOTk3IDE2OjI5OjUxIC0wNTAwIicpLAorICAgICAgICAgICAgKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1nZW5vbWUuanBlZztcbicKKyAgICAgICAgICAgICAnICBtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCI7XG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgJ25vX3ZhbHVlJzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlXSwKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ0NvbnRlbnQtRGlzcG9zaXRpb246XG4nKSwKKworICAgICAgICAnaW52YWxpZF92YWx1ZSc6ICgKKyAgICAgICAgICAgICdhYi4vaycsCisgICAgICAgICAgICAnYWIuJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ2ludmFsaWRfdmFsdWVfd2l0aF9wYXJhbXMnOiAoCisgICAgICAgICAgICAnYWIuL2s7IGZpbGVuYW1lPSJmb28iJywKKyAgICAgICAgICAgICdhYi4nLAorICAgICAgICAgICAgeydmaWxlbmFtZSc6ICdmb28nfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgfQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RNSU1FVmVyc2lvbkhlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgdmVyc2lvbl9zdHJpbmdfYXNfTUlNRV9WZXJzaW9uKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlY3RzKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ01JTUUtVmVyc2lvbicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudmVyc2lvbiwgdmVyc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1ham9yLCBtYWpvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1pbm9yLCBtaW5vcikKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBpZiBzb3VyY2U6CisgICAgICAgICAgICBzb3VyY2UgPSAnICcgKyBzb3VyY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdNSU1FLVZlcnNpb246JyArIHNvdXJjZSArICdcbicpCisKKyAgICB2ZXJzaW9uX3N0cmluZ19wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIHRoZSBSRkMuCisKKyAgICAgICAgJ1JGQ18yMDQ1XzEnOiAoCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMic6ICgKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAgKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzMnOiAoCisgICAgICAgICAgICAnKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpIDEuMCcsCisgICAgICAgICAgICAnKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpIDEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV80JzogKAorICAgICAgICAgICAgJzEuKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpMCcsCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgIyBPdGhlciB2YWxpZCB2YWx1ZXMuCisKKyAgICAgICAgJzFfMSc6ICgKKyAgICAgICAgICAgICcxLjEnLAorICAgICAgICAgICAgJzEuMScsCisgICAgICAgICAgICAnMS4xJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICcyXzEnOiAoCisgICAgICAgICAgICAnMi4xJywKKyAgICAgICAgICAgICcyLjEnLAorICAgICAgICAgICAgJzIuMScsCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnd2hpdGVzcGFjZSc6ICgKKyAgICAgICAgICAgICcxIC4wJywKKyAgICAgICAgICAgICcxIC4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ2xlYWRpbmdfdHJhaWxpbmdfd2hpdGVzcGFjZV9pZ25vcmVkJzogKAorICAgICAgICAgICAgJyAgMS4wICAnLAorICAgICAgICAgICAgJyAgMS4wICAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAjIFJlY292ZXJhYmxlIGludmFsaWQgdmFsdWVzLiAgV2UgY2FuIHJlY292ZXIgaGVyZSBvbmx5IGJlY2F1c2Ugd2UKKyAgICAgICAgIyBhbHJlYWR5IGhhdmUgYSB2YWxpZCB2YWx1ZSBieSB0aGUgdGltZSB3ZSBlbmNvdW50ZXIgdGhlIGdhcmJhZ2UuCisgICAgICAgICMgQW55d2hlcmUgZWxzZSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGdhcmJhZ2UgZW5kcy4KKworICAgICAgICAnbm9uX2NvbW1lbnRfZ2FyYmFnZV9hZnRlcic6ICgKKyAgICAgICAgICAgICcxLjAgPGFiYz4nLAorICAgICAgICAgICAgJzEuMCA8YWJjPicsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgIyBVbnJlY292ZXJhYmxlIGludmFsaWQgdmFsdWVzLiAgV2UgKmNvdWxkKiBhcHBseSBtb3JlIGhldXJpc3RpY3MgdG8KKyAgICAgICAgIyBnZXQgc29tZWluZyBvdXQgb2YgdGhlIGZpcnN0IHR3bywgYnV0IGRvaW5nIHNvIGlzIG5vdCB3b3J0aCB0aGUKKyAgICAgICAgIyBlZmZvcnQuCisKKyAgICAgICAgJ25vbl9jb21tZW50X2dhcmJhZ2VfYmVmb3JlJzogKAorICAgICAgICAgICAgJzxhYmM+IDEuMCcsCisgICAgICAgICAgICAnPGFiYz4gMS4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdub25fY29tbWVudF9nYXJiYWdlX2luc2lkZSc6ICgKKyAgICAgICAgICAgICcxLjxhYmM+MCcsCisgICAgICAgICAgICAnMS48YWJjPjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ3R3b19wZXJpb2RzJzogKAorICAgICAgICAgICAgJzEuLjAnLAorICAgICAgICAgICAgJzEuLjAnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJzJfeCc6ICgKKyAgICAgICAgICAgICcyLngnLAorICAgICAgICAgICAgJzIueCcsCisgICAgICAgICAgICBOb25lLCAgIyBUaGlzIGNvdWxkIGJlIDIsIGJ1dCBpdCBzZWVtcyBzYWZlciB0byBtYWtlIGl0IE5vbmUuCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdmb28nOiAoCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgICdmb28nLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ21pc3NpbmcnOiAoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0pLAorCisgICAgICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0QWRkcmVzc0hlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBleGFtcGxlX3BhcmFtcyA9IHsKKworICAgICAgICAnZW1wdHknOgorICAgICAgICAgICAgKCc8PicsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2FkZHJlc3Nfb25seSc6CisgICAgICAgICAgICAoJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ3ppcHB5JywKKyAgICAgICAgICAgICAncGluaGVhZC5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICduYW1lX2FuZF9hZGRyZXNzJzoKKyAgICAgICAgICAgICgnWmFwaHJvZCBCZWJsZWJydXggPHppcHB5QHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4IDx6aXBweUBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCcsCisgICAgICAgICAgICAgJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnemlwcHknLAorICAgICAgICAgICAgICdwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgICgnWmFwaHJvZCBCZWJsZWJydXggPCJmb28gYmFyIkBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCA8ImZvbyBiYXIiQHBpbmhlYWQuY29tPicsCisgICAgICAgICAgICAgJ1phcGhyb2QgQmVibGVicnV4JywKKyAgICAgICAgICAgICAnImZvbyBiYXIiQHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnZm9vIGJhcicsCisgICAgICAgICAgICAgJ3BpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX3BhcmVuc19pbl9uYW1lJzoKKyAgICAgICAgICAgIChyJyJBIFwoU3BlY2lhbFwpIFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJyJBIChTcGVjaWFsKSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgICdBIChTcGVjaWFsKSBQZXJzb24nLAorICAgICAgICAgICAgICdwZXJzb25AZG9tLmFpbicsCisgICAgICAgICAgICAgJ3BlcnNvbicsCisgICAgICAgICAgICAgJ2RvbS5haW4nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfYmFja3NsYXNoZXNfaW5fbmFtZSc6CisgICAgICAgICAgICAociciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICByJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgIHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicsCisgICAgICAgICAgICAgJ3BlcnNvbkBkb20uYWluJywKKyAgICAgICAgICAgICAncGVyc29uJywKKyAgICAgICAgICAgICAnZG9tLmFpbicsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ25hbWVfd2l0aF9kb3QnOgorICAgICAgICAgICAgKCdKb2huIFguIERvZSA8anhkQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJyJKb2huIFguIERvZSIgPGp4ZEBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgICdKb2huIFguIERvZScsCisgICAgICAgICAgICAgJ2p4ZEBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ2p4ZCcsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX3N0cmluZ3NfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAoJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZScsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnZXNjYXBlZF9xdW90ZWRfc3RyaW5nc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgIChyJyJcImV4YW1wbGVcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgciciXCJleGFtcGxlXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIHInIlwiZXhhbXBsZVwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICByJyJleGFtcGxlIiBleGFtcGxlJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2VzY2FwZWRfZXNjYXBlc19pbl9sb2NhbF9wYXJ0JzoKKyAgICAgICAgICAgIChyJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjUsCisgICAgICAgICAgICAgciciXFxleGFtcGxlXFxcXCBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgciciXFxleGFtcGxlXFxcXCBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgcidcZXhhbXBsZVxcIGV4YW1wbGUnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnc3BhY2VzX2luX3VucXVvdGVkX2xvY2FsX3BhcnRfY29sbGFwc2VkJzoKKyAgICAgICAgICAgICgnbWVyd29rICB3b2sgIEBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgICcibWVyd29rIHdvayJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICcibWVyd29rIHdvayJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdtZXJ3b2sgd29rJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdzcGFjZXNfYXJvdW5kX2RvdHNfaW5fbG9jYWxfcGFydF9yZW1vdmVkJzoKKyAgICAgICAgICAgICgnbWVyd29rLiB3b2sgLiAgd29rQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAnbWVyd29rLndvay53b2tAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICdtZXJ3b2sud29rLndva0BleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgJ21lcndvay53b2sud29rJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgIH0KKworICAgICAgICAjIFhYWDogTmVlZCBtYW55IG1vcmUgZXhhbXBsZXMsIGFuZCBpbiBwYXJ0aWN1bGFyIHNvbWUgd2l0aCBuYW1lcyBpbgorICAgICAgICAjIHRyYWlsaW5nIGNvbW1lbnRzLCB3aGljaCBhcmVuJ3QgY3VycmVudGx5IGhhbmRsZWQuICBjb21tZW50cyBpbgorICAgICAgICAjIGdlbmVyYWwgYXJlIG5vdCBoYW5kbGVkIHlldC4KKworICAgIGRlZiBleGFtcGxlX2FzX2FkZHJlc3Moc2VsZiwgc291cmNlLCBkZWZlY3RzLCBkZWNvZGVkLCBkaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3NwZWMsIHVzZXJuYW1lLCBkb21haW4sIGNvbW1lbnQpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgYSA9IGguYWRkcmVzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFthXSwgbGlzdChoLmdyb3Vwc1swXS5hZGRyZXNzZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFthXSwgbGlzdChoLmFkZHJlc3NlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsIGRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgYWRkcl9zcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsIHVzZXJuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCBkb21haW4pCisgICAgICAgICMgWFhYOiB3ZSBoYXZlIG5vIGNvbW1lbnQgc3VwcG9ydCB5ZXQuCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKGEuY29tbWVudCwgY29tbWVudCkKKworICAgIGRlZiBleGFtcGxlX2FzX2dyb3VwKHNlbGYsIHNvdXJjZSwgZGVmZWN0cywgZGVjb2RlZCwgZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfc3BlYywgdXNlcm5hbWUsIGRvbWFpbiwgY29tbWVudCk6CisgICAgICAgIHNvdXJjZSA9ICdmb286IHt9OycuZm9ybWF0KHNvdXJjZSkKKyAgICAgICAgZ2RlY29kZWQgPSAnZm9vOiB7fTsnLmZvcm1hdChkZWNvZGVkKSBpZiBkZWNvZGVkIGVsc2UgJ2Zvbzo7JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZ2RlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1swXS5hZGRyZXNzZXMsIGguYWRkcmVzc2VzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgMSkKKyAgICAgICAgYSA9IGguYWRkcmVzc2VzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCBkaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsIGFkZHJfc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgZG9tYWluKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgdmFsdWUgPSAoJ0ZyZWQgPGRpbnNkYWxlQHB5dGhvbi5vcmc+LCBmb29AZXhhbXBsZS5jb20sICcKKyAgICAgICAgICAgICAgICAgICAgJyJIYXJyeSBXLiBIYXN0aW5ncyIgPGhhc3R5QGV4YW1wbGUuY29tPicpCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgMykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzW2ldLmFkZHJlc3Nlc1swXSwgaC5hZGRyZXNzZXNbaV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzBdKSwgJ0ZyZWQgPGRpbnNkYWxlQHB5dGhvbi5vcmc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMV0pLCAnZm9vQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbMl0pLAorICAgICAgICAgICAgJyJIYXJyeSBXLiBIYXN0aW5ncyIgPGhhc3R5QGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5hZGRyZXNzZXNbMl0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0hhcnJ5IFcuIEhhc3RpbmdzJykKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfYWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBleGFtcGxlcyA9IGxpc3Qoc2VsZi5leGFtcGxlX3BhcmFtcy52YWx1ZXMoKSkKKyAgICAgICAgc291cmNlID0gKCdkdW1teSBsaXN0OjssIGFub3RoZXI6IChlbXB0eSk7LCcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbOjRdXSkgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAgciciQSBcImxpc3RcIiI6ICcgKworICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbNDo2XV0pICsgJzssJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFswXSBmb3IgeCBpbiBleGFtcGxlc1s2Ol1dKQorICAgICAgICAgICAgKQorICAgICAgICAjIFhYWDogdGhlIGZhY3QgdGhhdCAoZW1wdHkpIGRpc2FwcGVhcnMgaGVyZSBpcyBhIHBvdGVudGlhbCBBUEkgZGVzaWduCisgICAgICAgICMgYnVnLiAgV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYSB3YXkgdG8gcHJlc2VydmUgY29tbWVudHMuCisgICAgICAgIGV4cGVjdGVkID0gKCdkdW1teSBsaXN0OjssIGFub3RoZXI6OywgJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s6NF1dKSArICcsICcgKworICAgICAgICAgICAgICAgICByJyJBIFwibGlzdFwiIjogJyArCisgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s0OjZdXSkgKyAnOywgJyArCisgICAgICAgICAgICAgICAgICcsICcuam9pbihbeFsyXSBmb3IgeCBpbiBleGFtcGxlc1s2Ol1dKQorICAgICAgICAgICAgKQorCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnNwbGl0KCcsJyksIGV4cGVjdGVkLnNwbGl0KCcsJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgNyArIGxlbihleGFtcGxlcykgLSA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzBdLmRpc3BsYXlfbmFtZSwgJ2R1bW15IGxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzFdLmRpc3BsYXlfbmFtZSwgJ2Fub3RoZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZ3JvdXBzWzZdLmRpc3BsYXlfbmFtZSwgJ0EgImxpc3QiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5hZGRyZXNzZXMpLCBsZW4oZXhhbXBsZXMpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGguZ3JvdXBzW2krMl0uZGlzcGxheV9uYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5ncm91cHNbaSsyXS5hZGRyZXNzZXNbMF0pLCBleGFtcGxlc1tpXVsyXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNywgNyArIGxlbihleGFtcGxlcykgLSA2KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGguZ3JvdXBzW2ldLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguZ3JvdXBzW2ldLmFkZHJlc3Nlc1swXSksIGV4YW1wbGVzW2ktMV1bMl0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihleGFtcGxlcykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaC5hZGRyZXNzZXNbaV0pLCBleGFtcGxlc1tpXVsyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5hZGRyZXNzZXNbaV0uYWRkcl9zcGVjLCBleGFtcGxlc1tpXVs0XSkKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc2VuZGVyJywgJ2FiY0B4eXouY29tJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBoLmFkZHJlc3MgPSAnZm9vJworCisgICAgZGVmIHRlc3RfYWRkcmVzc2VzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5hZGRyZXNzZXMgPSAnZm9vJworCisgICAgZGVmIHRlc3RfZ3JvdXBzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5ncm91cHMgPSAnZm9vJworCisgICAgZGVmIHRlc3RfYWRkcmVzc2VzX3R5cGVzKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAnbWUgPHdob0BleGFtcGxlLmNvbT4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguYWRkcmVzc2VzLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguYWRkcmVzc2VzWzBdLCBBZGRyZXNzKQorCisgICAgZGVmIHRlc3RfZ3JvdXBzX3R5cGVzKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSAnbWUgPHdob0BleGFtcGxlLmNvbT4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZ3JvdXBzLCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZ3JvdXBzWzBdLCBHcm91cCkKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0FkZHJlc3Moc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIEFkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPicpCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9BZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3lvdScsICdiYXInLCAnZXhhbXBsZS5jb20nKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+LCB5b3UgPGJhckBleGFtcGxlLmNvbT4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fQWRkcmVzc19hbmRfR3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0FkZHJlc3MoJ21lJywgJ2ZvbycsICdleGFtcGxlLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAoJ2JpbmcnLCBbQWRkcmVzcygnZml6JywgJ3onLCAnYi5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3ppZicsICdmJywgJ2MuY29tJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ3lvdScsICdiYXInLCAnZXhhbXBsZS5jb20nKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ21lIDxmb29AZXhhbXBsZS5jb20+LCBiaW5nOiBmaXogPHpAYi5jb20+LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ppZiA8ZkBjLmNvbT47LCB5b3UgPGJhckBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTQwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAndG86IG1lIDxmb29AZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAgICAgJyBiaW5nOiBmaXogPHpAYi5jb20+LCB6aWYgPGZAYy5jb20+OyxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgeW91IDxiYXJAZXhhbXBsZS5jb20+XG4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fR3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgW0dyb3VwKCdiaW5nJywgW0FkZHJlc3MoJ2ZpeicsICd6JywgJ2IuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd6aWYnLCAnZicsICdjLmNvbScpXSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdiaW5nOiBmaXogPHpAYi5jb20+LCB6aWYgPGZAYy5jb20+OycpCisKKworY2xhc3MgVGVzdEFkZHJlc3NBbmRHcm91cChUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiBfdGVzdF9hdHRyX3JvKHNlbGYsIG9iaiwgYXR0cik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2V0YXR0cihvYmosIGF0dHIsICdmb28nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19kaXNwbGF5X25hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAnZGlzcGxheV9uYW1lJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfdXNlcm5hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAndXNlcm5hbWUnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19kb21haW5fcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpLCAnZG9tYWluJykKKworICAgIGRlZiB0ZXN0X2dyb3VwX2Rpc3BsYXlfbmFtZV9ybyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKEdyb3VwKCdmb28nKSwgJ2Rpc3BsYXlfbmFtZScpCisKKyAgICBkZWYgdGVzdF9ncm91cF9hZGRyZXNzZXNfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhHcm91cCgnZm9vJyksICdhZGRyZXNzZXMnKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19mcm9tX3VzZXJuYW1lX2RvbWFpbihzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnZm9vIDxiYXJAYmF6PicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2Zyb21fYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnZm9vIDxiYXJAYmF6PicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3dpdGhfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcyhhZGRyX3NwZWM9J2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X251bGxfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICc8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnPD4nKQorCisgICAgZGVmIHRlc3RfZG9tYWluX29ubHkoc2VsZik6CisgICAgICAgICMgVGhpcyBpc24ndCByZWFsbHkgYSB2YWxpZCBhZGRyZXNzLgorICAgICAgICBhID0gQWRkcmVzcyhkb21haW49J2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnQGJ1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ0BidXp6JykKKworICAgIGRlZiB0ZXN0X3VzZXJuYW1lX29ubHkoc2VsZik6CisgICAgICAgICMgVGhpcyBpc24ndCByZWFsbHkgYSB2YWxpZCBhZGRyZXNzLgorICAgICAgICBhID0gQWRkcmVzcyh1c2VybmFtZT0nYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdidXp6JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9vbmx5KHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICc8PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYnV6eiA8PicpCisKKyAgICBkZWYgdGVzdF9xdW90aW5nKHNlbGYpOgorICAgICAgICAjIElkZWFsbHkgd2UnZCBjaGVjayBldmVyeSBzcGVjaWFsIGluZGl2aWR1YWxseSwgYnV0IEknbSBub3QgdXAgZm9yCisgICAgICAgICMgd3JpdGluZyB0aGF0IG1hbnkgdGVzdHMuCisgICAgICAgIGEgPSBBZGRyZXNzKCdTYXJhIEouJywgJ2JhZCBuYW1lJywgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ1NhcmEgSi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYWQgbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICciYmFkIG5hbWUiQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICciU2FyYSBKLiIgPCJiYWQgbmFtZSJAZXhhbXBsZS5jb20+JykKKworICAgIGRlZiB0ZXN0X2lsOG4oc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCfDiXJpYycsICd3b2snLCAnZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJ8OJcmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnd29rJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgJ2V4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsICd3b2tAZXjDoG1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICfDiXJpYyA8d29rQGV4w6BtcGxlLmNvbT4nKQorCisgICAgIyBYWFg6IHRoZXJlIGlzIGFuIEFQSSBkZXNpZ24gaXNzdWUgdGhhdCBuZWVkcyB0byBiZSBzb2x2ZWQgaGVyZS4KKyAgICAjZGVmIHRlc3Rfbm9uX2FzY2lpX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAjICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgIyAgICAgICAgQWRkcmVzcygnZm9vJywgJ3fFkWsnLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpX3VzZXJuYW1lX2luX2FkZHJfc3BlY19yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9J3fFkWtAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX3VzZXJuYW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgdXNlcm5hbWU9J2JpbmcnLCBhZGRyX3NwZWM9J2JhckBiYXonKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX2RvbWFpbl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGRvbWFpbj0nYmluZycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2FkZHJfc3BlY19hbmRfdXNlcm5hbWVfYW5kX2RvbWFpbl9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIHVzZXJuYW1lPSdib25nJywgZG9tYWluPSdiaW5nJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X3NwYWNlX2luX2FkZHJfc3BlY191c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBhZGRyX3NwZWM9ImJhZCBuYW1lQGV4YW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyX3NlcGNfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSJuYW1lQGV4W11hbXBsZS5jb20iKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnZm9vOjsnKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZ3JvdXBfbGlzdChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28nLCBhZGRyZXNzZXM9W10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2Zvbzo7JykKKworICAgIGRlZiB0ZXN0X251bGxfZ3JvdXAoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ05vbmU6OycpCisKKyAgICBkZWYgdGVzdF9ncm91cF93aXRoX2FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgYWRkcnMgPSBbQWRkcmVzcygnYicsICdiJywgJ2MnKSwgQWRkcmVzcygnYScsICdiJywnYycpXQorICAgICAgICBnID0gR3JvdXAoJ2ZvbycsIGFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2ZvbzogYiA8YkBjPiwgYSA8YkBjPjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9hZGRyZXNzZXNfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhZGRycyA9IFtBZGRyZXNzKCdiJywgJ2InLCAnYycpLCBBZGRyZXNzKCdhJywgJ2InLCdjJyldCisgICAgICAgIGcgPSBHcm91cChhZGRyZXNzZXM9YWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnTm9uZTogYiA8YkBjPiwgYSA8YkBjPjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9vbmVfYWRkcmVzc19ub19kaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIGFkZHJzID0gW0FkZHJlc3MoJ2InLCAnYicsICdjJyldCisgICAgICAgIGcgPSBHcm91cChhZGRyZXNzZXM9YWRkcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZShhZGRycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGcpLCAnYiA8YkBjPicpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfcXVvdGluZyhzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28uYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2Zvby5iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJyJmb28uYmFyIjo7JykKKworICAgIGRlZiB0ZXN0X2Rpc3BsYXlfbmFtZV9ibGFua3Nfbm90X3F1b3RlZChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbyBiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2ZvbyBiYXI6OycpCisKKyAgICBkZWYgdGVzdF9zZXRfbWVzc2FnZV9oZWFkZXJfZnJvbV9hZGRyZXNzKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnZm9vJywgJ2JhcicsICdleGFtcGxlLmNvbScpCisgICAgICAgIG0gPSBNZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbVsnVG8nXSA9IGEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLCAnZm9vIDxiYXJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWyd0byddLmFkZHJlc3NlcywgKGEsKSkKKworICAgIGRlZiB0ZXN0X3NldF9tZXNzYWdlX2hlYWRlcl9mcm9tX2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbyBiYXInKQorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ1RvJ10gPSBnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXSwgJ2ZvbyBiYXI6OycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXS5hZGRyZXNzZXMsIGcuYWRkcmVzc2VzKQorCisKK2NsYXNzIFRlc3RGb2xkaW5nKFRlc3RIZWFkZXJCYXNlKToKKworICAgIGRlZiB0ZXN0X3Nob3J0X3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJqZWN0OiB0aGlzIGlzIGEgdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2xvbmdfdW5zdHJ1Y3R1cmVkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICdUaGlzIGlzIGEgbG9uZyBoZWFkZXIgJworICAgICAgICAgICAgJ2xpbmUgdGhhdCB3aWxsIG5lZWQgdG8gYmUgZm9sZGVkIGludG8gdHdvIGxpbmVzICcKKyAgICAgICAgICAgICdhbmQgd2lsbCBkZW1vbnN0cmF0ZSBiYXNpYyBmb2xkaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTdWJqZWN0OiBUaGlzIGlzIGEgbG9uZyBoZWFkZXIgbGluZSB0aGF0IHdpbGwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGJlIGZvbGRlZCBpbnRvIHR3byBsaW5lc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgJyBhbmQgd2lsbCBkZW1vbnN0cmF0ZSBiYXNpYyBmb2xkaW5nXG4nKQorCisgICAgZGVmIHRlc3RfdW5zdHJ1Y3R1cmVkX3Nob3J0X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpcyBpcyBhIHNob3J0IGhlYWRlciAnCisgICAgICAgICAgICAndGhhdCB3aWxsIGJlIGZvbGRlZCBhbnl3YXknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgICAgU3ViamVjdDogdGhpcyBpcyBhCisgICAgICAgICAgICAgICAgIHNob3J0IGhlYWRlciB0aGF0CisgICAgICAgICAgICAgICAgIHdpbGwgYmUgZm9sZGVkCisgICAgICAgICAgICAgICAgIGFueXdheQorICAgICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF9zaW5nbGVfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksICdTdWJqZWN0OiB0ZXN0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfc2hvcnQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3Rlc3QgdGVzdCB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdTdWJqZWN0OiB0ZXN0IHRlc3QgdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfb3Zlcmxvbmdfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmEnCisgICAgICAgICAgICAnc2luZ2xld29yZHRoYXR3b250Zml0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICAnU3ViamVjdDogdGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmFzaW5nbGV3b3JkdGhhdHdvbnRmaXRcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX3R3b19vdmVybG9uZ193b3JkcyhzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmEnCisgICAgICAgICAgICAnc2luZ2xld29yZHRoYXR3b250Zml0IHBsdXNhbm90aGVydmVyeWxvbmd3b3JkdGhhdHdvbnRmaXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MjApKSwKKyAgICAgICAgICAgICdTdWJqZWN0OiB0aGlzaXNhdmVyeWxvbmdsaW5lY29uc2lzdGluZ29mYXNpbmdsZXdvcmR0aGF0d29udGZpdFxuJworICAgICAgICAgICAgICAgICcgcGx1c2Fub3RoZXJ2ZXJ5bG9uZ3dvcmR0aGF0d29udGZpdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3dpdGhfc2xpZ2h0bHlfbG9uZ193b3JkKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0aGlzbG9uZ3dvcmRpc2xlc3N0aGFubWF4bGluZWxlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0zNSkpLAorICAgICAgICAgICAgJ1N1YmplY3Q6XG4gdGhpc2xvbmd3b3JkaXNsZXNzdGhhbm1heGxpbmVsZW5cbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX2NvbW1hcyhzZWxmKToKKyAgICAgICAgIyBUaGUgb2xkIHdyYXBwZXIgd291bGQgZm9sZCB0aGlzIGF0IHRoZSBjb21tYXMuCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgIlRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvICIKKyAgICAgICAgICAgICJkZW1vbnN0cmF0ZSwgaW4gYSBmYWlybHkgc3VzaW5jdCB3YXksIHRoYXQgd2Ugbm93IGRvICIKKyAgICAgICAgICAgICJub3QgZ2l2ZSBhICwgc3BlY2lhbCB0cmVhdG1lbnQgaW4gdW5zdHJ1Y3R1cmVkIGhlYWRlcnMuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTYwKSksCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgICAgIFN1YmplY3Q6IFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGRlbW9uc3RyYXRlLCBpbiBhIGZhaXJseQorICAgICAgICAgICAgICAgICBzdXNpbmN0IHdheSwgdGhhdCB3ZSBub3cgZG8gbm90IGdpdmUgYSAsIHNwZWNpYWwgdHJlYXRtZW50CisgICAgICAgICAgICAgICAgIGluIHVuc3RydWN0dXJlZCBoZWFkZXJzLgorICAgICAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF9hZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdUbycsICciVGhlb2RvcmUgSC4gUGVyZmVjdCIgPHllc0BtYW4uY29tPiwgJworICAgICAgICAgICAgJyJNeSBhZGRyZXNzIGlzIHZlcnkgbG9uZyBiZWNhdXNlIG15IG5hbWUgaXMgbG9uZyIgPGZvb0BiYXIuY29tPiwgJworICAgICAgICAgICAgJyJPbmx5IEEuIEZyaWVuZCIgPG5vQHllcy5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiAiVGhlb2RvcmUgSC4gUGVyZmVjdCIgPHllc0BtYW4uY29tPiwKKyAgICAgICAgICAgICAiTXkgYWRkcmVzcyBpcyB2ZXJ5IGxvbmcgYmVjYXVzZSBteSBuYW1lIGlzIGxvbmciIDxmb29AYmFyLmNvbT4sCisgICAgICAgICAgICAgIk9ubHkgQS4gRnJpZW5kIiA8bm9AeWVzLmNvbT4KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF9kYXRlX2hlYWRlcihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0RhdGUnLCAnU2F0LCAyIEZlYiAyMDAyIDE3OjAwOjA2IC0wODAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlOiBTYXQsIDAyIEZlYiAyMDAyIDE3OjAwOjA2IC0wODAwXG4nKQorCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNjM2Y4MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorCisKK2NsYXNzIFRlc3QoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBwb2xpY3kgPSBwb2xpY3kuZGVmYXVsdAorCisgICAgZGVmIHRlc3RfZXJyb3Jfb25fc2V0aXRlbV9pZl9tYXhfY291bnRfZXhjZWVkZWQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCIiKQorICAgICAgICBtWydUbyddID0gJ2FiY0B4eXonCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBtWydUbyddID0gJ3h5ekBhYmMnCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhYmQxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0wLDAgKzEsMzYgQEAKK2ltcG9ydCBpbworaW1wb3J0IGVtYWlsCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0Q3VzdG9tTWVzc2FnZShUZXN0RW1haWxCYXNlKToKKworICAgIGNsYXNzIE15TWVzc2FnZShNZXNzYWdlKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvbGljeSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BvbGljeSA9IHBvbGljeQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICBNeVBvbGljeSA9IFRlc3RFbWFpbEJhc2UucG9saWN5LmNsb25lKGxpbmVzZXA9J2JvbycpCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9nZXRzX3BvbGljeV9pZl9wb3NzaWJsZV9mcm9tX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiU3ViamVjdDogYm9ndXNcblxubXNnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTXlNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cuY2hlY2tfcG9saWN5LCBzZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZ2V0c19wb2xpY3lfaWZfcG9zc2libGVfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBzb3VyY2VfZmlsZSA9IGlvLlN0cmluZ0lPKCJTdWJqZWN0OiBib2d1c1xuXG5tc2dcbiIpCisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKHNvdXJjZV9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk15TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1zZy5jaGVja19wb2xpY3ksIHNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFhYWCBhZGQgdGVzdHMgZm9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgTWVzc2FnZSBhcmcuCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BpY2tsZWFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFhOGQyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5CkBAIC0wLDAgKzEsNzQgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgY29weQoraW1wb3J0IHBpY2tsZQoraW1wb3J0IGVtYWlsCitpbXBvcnQgZW1haWwubWVzc2FnZQorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UsIHBhcmFtZXRlcml6ZQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RQaWNrbGVDb3B5SGVhZGVyKFRlc3RFbWFpbEJhc2UpOgorCisgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCisKKyAgICB1bnN0cnVjdHVyZWQgPSBoZWFkZXJfZmFjdG9yeSgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisKKyAgICBoZWFkZXJfcGFyYW1zID0geworICAgICAgICAnc3ViamVjdCc6ICgnc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpLAorICAgICAgICAnZnJvbSc6ICAgICgnZnJvbScsICAgICdmcm9kb0Btb3Jkb3IubmV0JyksCisgICAgICAgICd0byc6ICAgICAgKCd0bycsICAgICAgJ2E6IGtAYi5jb20sIHlAei5jb207LCBqQGYuY29tJyksCisgICAgICAgICdkYXRlJzogICAgKCdkYXRlJywgICAgJ1R1ZSwgMjkgTWF5IDIwMTIgMDk6MjQ6MjYgKzEwMDAnKSwKKyAgICAgICAgfQorCisgICAgZGVmIGhlYWRlcl9hc19kZWVwY29weShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGhlYWRlciA9IHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpCisgICAgICAgIGggPSBjb3B5LmRlZXBjb3B5KGhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksIHN0cihoZWFkZXIpKQorCisgICAgZGVmIGhlYWRlcl9hc19waWNrbGUoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBoZWFkZXIgPSBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKQorICAgICAgICBwID0gcGlja2xlLmR1bXBzKGhlYWRlcikKKyAgICAgICAgaCA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwgc3RyKGhlYWRlcikpCisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdFBpY2tsZUNvcHlNZXNzYWdlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgIyBNZXNzYWdlIG9iamVjdHMgYXJlIGEgc2VxdWVuY2UsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGVtIGEgb25lLXR1cGxlIGluCisgICAgIyBtc2dfcGFyYW1zIHNvIHRoZXkgZ2V0IHBhc3NlZCB0byB0aGUgcGFyYW1ldGVyaXplZCB0ZXN0IG1ldGhvZCBhcyBhCisgICAgIyBzaW5nbGUgYXJndW1lbnQgaW5zdGVhZCBvZiBhcyBhIGxpc3Qgb2YgaGVhZGVycy4KKyAgICBtc2dfcGFyYW1zID0ge30KKworICAgICMgTm90ZTogdGhlcmUgd2lsbCBiZSBubyBjdXN0b20gaGVhZGVyIG9iamVjdHMgaW4gdGhlIHBhcnNlZCBtZXNzYWdlLgorICAgIG1zZ19wYXJhbXNbJ3BhcnNlZCddID0gKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcodGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMAorICAgICAgICBGcm9tOiBmcm9kb0Btb3Jkb3IubmV0CisgICAgICAgIFRvOiBiaWxib0B1bmRlcmhpbGwub3JnCisgICAgICAgIFN1YmplY3Q6IGhlbHAKKworICAgICAgICBJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLgorICAgICAgICAiIiIpLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCkKKworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXSA9IChlbWFpbC5tZXNzYWdlLk1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KSwpCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydEYXRlJ10gPSAnVHVlLCAyOSBNYXkgMjAxMiAwOToyNDoyNiArMTAwMCcKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ0Zyb20nXSA9ICdmcm9kb0Btb3Jkb3IubmV0JworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnVG8nXSA9ICdiaWxib0B1bmRlcmhpbGwub3JnJworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnU3ViamVjdCddID0gJ2hlbHAnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdLnNldF9wYXlsb2FkKCdJIHRoaW5rIEkgZm9yZ290IHRoZSByaW5nLicpCisKKyAgICBkZWYgbXNnX2FzX2RlZXBjb3B5KHNlbGYsIG1zZyk6CisgICAgICAgIG1zZzIgPSBjb3B5LmRlZXBjb3B5KG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cyLmFzX3N0cmluZygpLCBtc2cuYXNfc3RyaW5nKCkpCisKKyAgICBkZWYgbXNnX2FzX3BpY2tsZShzZWxmLCBtc2cpOgorICAgICAgICBwID0gcGlja2xlLmR1bXBzKG1zZykKKyAgICAgICAgbXNnMiA9IHBpY2tsZS5sb2FkcyhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZzIuYXNfc3RyaW5nKCksIG1zZy5hc19zdHJpbmcoKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgzYmQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTAsMCArMSwzMjIgQEAKK2ltcG9ydCBpbworaW1wb3J0IHR5cGVzCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVtYWlsLnBvbGljeQoraW1wb3J0IGVtYWlsLnBhcnNlcgoraW1wb3J0IGVtYWlsLmdlbmVyYXRvcgorZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKKworZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgorICAgIGRlZmF1bHRzID0gYmFzZV9kZWZhdWx0cy5jb3B5KCkKKyAgICBkZWZhdWx0cy51cGRhdGUoZGlmZmVyZW5jZXMpCisgICAgcmV0dXJuIGRlZmF1bHRzCisKK2NsYXNzIFBvbGljeUFQSVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGxvbmdNZXNzYWdlID0gVHJ1ZQorCisgICAgIyBCYXNlIGRlZmF1bHQgdmFsdWVzLgorICAgIGNvbXBhdDMyX2RlZmF1bHRzID0geworICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogICAgICAgICAgNzgsCisgICAgICAgICdsaW5lc2VwJzogICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAorICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCisgICAgICAgIH0KKyAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCisgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCisgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCisgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ2hlYWRlcl9mYWN0b3J5JzogICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSwKKyAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKKyAgICAgICAgfSkKKworICAgICMgRm9yIGVhY2ggcG9saWN5IHVuZGVyIHRlc3QsIHdlIGdpdmUgaGVyZSB3aGF0IHdlIGV4cGVjdCB0aGUgZGVmYXVsdHMgdG8KKyAgICAjIGJlIGZvciB0aGF0IHBvbGljeS4gIFRoZSBzZWNvbmQgYXJndW1lbnQgdG8gbWFrZSBkZWZhdWx0cyBpcyB0aGUKKyAgICAjIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYmFzZSBkZWZhdWx0cyBhbmQgdGhhdCBmb3IgdGhlIHBhcnRpY3VsYXIgcG9saWN5LgorICAgIG5ld19wb2xpY3kgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgIHBvbGljaWVzID0geworICAgICAgICBlbWFpbC5wb2xpY3kuY29tcGF0MzI6IG1ha2VfZGVmYXVsdHMoY29tcGF0MzJfZGVmYXVsdHMsIHt9KSwKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQ6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIGVtYWlsLnBvbGljeS5TTVRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nfSksCisgICAgICAgIGVtYWlsLnBvbGljeS5IVFRQOiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydsaW5lc2VwJzogJ1xyXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21heF9saW5lX2xlbmd0aCc6IE5vbmV9KSwKKyAgICAgICAgZW1haWwucG9saWN5LnN0cmljdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeydyYWlzZV9vbl9kZWZlY3QnOiBUcnVlfSksCisgICAgICAgIG5ld19wb2xpY3k6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLCB7fSksCisgICAgICAgIH0KKyAgICAjIENyZWF0aW5nIGEgbmV3IHBvbGljeSBjcmVhdGVzIGEgbmV3IGhlYWRlciBmYWN0b3J5LiAgVGhlcmUgaXMgYSB0ZXN0CisgICAgIyBsYXRlciB0aGF0IHByb3ZlcyB0aGlzLgorICAgIHBvbGljaWVzW25ld19wb2xpY3ldWydoZWFkZXJfZmFjdG9yeSddID0gbmV3X3BvbGljeS5oZWFkZXJfZmFjdG9yeQorCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorCisgICAgZGVmIHRlc3RfYWxsX2F0dHJpYnV0ZXNfY292ZXJlZChzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHBvbGljeSk6CisgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGdldGF0dHIoZW1haWwucG9saWN5LkVtYWlsUG9saWN5LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKKworICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZW1haWwucG9saWN5LlBvbGljeSgpCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIGFic3RyYWN0X21ldGhvZHMgPSAoJ2ZvbGQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2xkX2JpbmFyeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9mZXRjaF9wYXJzZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcl9zb3VyY2VfcGFyc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJfc3RvcmVfcGFyc2UnKQorICAgICAgICBmb3IgbWV0aG9kIGluIGFic3RyYWN0X21ldGhvZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1ldGhvZCwgbXNnKQorCisgICAgZGVmIHRlc3RfcG9saWN5X2lzX2ltbXV0YWJsZShzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeSwgZGVmYXVsdHMgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBhdHRyKyIuKnJlYWQtb25seSIpOgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHBvbGljeSwgYXR0ciwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ25vIGF0dHJpYnV0ZS4qZm9vJyk6CisgICAgICAgICAgICAgICAgcG9saWN5LmZvbyA9IE5vbmUKKworICAgIGRlZiB0ZXN0X3NldF9wb2xpY3lfYXR0cnNfd2hlbl9jbG9uZWQoc2VsZik6CisgICAgICAgICMgTm9uZSBvZiB0aGUgYXR0cmlidXRlcyBoYXMgYSBkZWZhdWx0IHZhbHVlIG9mIE5vbmUsIHNvIHdlIHNldCB0aGVtCisgICAgICAgICMgYWxsIHRvIE5vbmUgaW4gdGhlIGNsb25lIGNhbGwgYW5kIGNoZWNrIHRoYXQgaXQgd29ya2VkLgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MsIGRlZmF1bHRzIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIHRlc3RhdHRyZGljdCA9IHthdHRyOiBOb25lIGZvciBhdHRyIGluIGRlZmF1bHRzfQorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5Y2xhc3MuY2xvbmUoKip0ZXN0YXR0cmRpY3QpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiBkZWZhdWx0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZXRhdHRyKHBvbGljeSwgYXR0cikpCisKKyAgICBkZWYgdGVzdF9yZWplY3Rfbm9uX3BvbGljeV9rZXl3b3JkX3doZW5fY2FsbGVkKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5Y2xhc3MgaW4gc2VsZi5wb2xpY2llczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBwb2xpY3ljbGFzcyh0aGlzX2tleXdvcmRfc2hvdWxkX25vdF9iZV92YWxpZD1Ob25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBvbGljeWNsYXNzKG5ld3RsaW5lPU5vbmUpCisKKyAgICBkZWYgdGVzdF9wb2xpY3lfYWRkaXRpb24oc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5wb2xpY3lfZGVmYXVsdHMuY29weSgpCisgICAgICAgIHAxID0gZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTEwMCkKKyAgICAgICAgcDIgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9NTApCisgICAgICAgIGFkZGVkID0gcDEgKyBwMgorICAgICAgICBleHBlY3RlZC51cGRhdGUobWF4X2xpbmVfbGVuZ3RoPTUwKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorICAgICAgICBhZGRlZCA9IHAyICsgcDEKKyAgICAgICAgZXhwZWN0ZWQudXBkYXRlKG1heF9saW5lX2xlbmd0aD0xMDApCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGFkZGVkLCBhdHRyKSwgdmFsdWUpCisgICAgICAgIGFkZGVkID0gYWRkZWQgKyBlbWFpbC5wb2xpY3kuZGVmYXVsdAorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZGVmZWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorICAgICAgICBvYmogPSBEdW1teSgpCisgICAgICAgIGRlZmVjdCA9IG9iamVjdCgpCisgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeS5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3RdKQorICAgICAgICBkZWZlY3QyID0gb2JqZWN0KCkKKyAgICAgICAgcG9saWN5LnJlZ2lzdGVyX2RlZmVjdChvYmosIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLmRlZmVjdHMsIFtkZWZlY3QsIGRlZmVjdDJdKQorCisgICAgY2xhc3MgTXlPYmo6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuZGVmZWN0cyA9IFtdCisKKyAgICBjbGFzcyBNeURlZmVjdChFeGNlcHRpb24pOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JhaXNlc19vbl9zdHJpY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QgPSBzZWxmLk15RGVmZWN0KCJ0aGUgdGVsbHkgaXMgYnJva2VuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuTXlEZWZlY3QsICJ0aGUgdGVsbHkgaXMgYnJva2VuIik6CisgICAgICAgICAgICBlbWFpbC5wb2xpY3kuc3RyaWN0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfZGVmZWN0X3JlZ2lzdGVyc19kZWZlY3Qoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QxID0gc2VsZi5NeURlZmVjdCgib25lIikKKyAgICAgICAgZW1haWwucG9saWN5LmRlZmF1bHQuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgZGVmZWN0MiA9IHNlbGYuTXlEZWZlY3QoInR3byIpCisgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbZGVmZWN0MSwgZGVmZWN0Ml0pCisKKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kpOgorICAgICAgICBkZWZlY3RzID0gTm9uZQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgZGVmZWN0cz1bXSwgKiprdykKKyAgICAgICAgZGVmIHJlZ2lzdGVyX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CisgICAgICAgICAgICBzZWxmLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRkZW5fcmVnaXN0ZXJfZGVmZWN0X3N0aWxsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdCA9IHNlbGYuTXlEZWZlY3QoInRoZSB0ZWxseSBpcyBicm9rZW4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZi5NeURlZmVjdCwgInRoZSB0ZWxseSBpcyBicm9rZW4iKToKKyAgICAgICAgICAgIHNlbGYuTXlQb2xpY3kocmFpc2Vfb25fZGVmZWN0PVRydWUpLmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZW5fcmVnaXN0ZXJfZGVmZWN0X3dvcmtzKHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0MSA9IHNlbGYuTXlEZWZlY3QoIm9uZSIpCisgICAgICAgIG15X3BvbGljeSA9IHNlbGYuTXlQb2xpY3koKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisgICAgICAgIGRlZmVjdDIgPSBzZWxmLk15RGVmZWN0KCJ0d28iKQorICAgICAgICBteV9wb2xpY3kuaGFuZGxlX2RlZmVjdChmb28sIGRlZmVjdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcG9saWN5LmRlZmVjdHMsIFtkZWZlY3QxLCBkZWZlY3QyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW10pCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2hlYWRlcl9mYWN0b3J5KHNlbGYpOgorICAgICAgICBoID0gZW1haWwucG9saWN5LmRlZmF1bHQuaGVhZGVyX2ZhY3RvcnkoJ1Rlc3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnVGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorCisgICAgY2xhc3MgRm9vOgorICAgICAgICBwYXJzZSA9IGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlci5wYXJzZQorCisgICAgZGVmIHRlc3RfZWFjaF9Qb2xpY3lfZ2V0c191bmlxdWVfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5Lm1hcF90b190eXBlKCdmb28nLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBoID0gcG9saWN5Mi5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9jbG9uZV9jb3BpZXNfZmFjdG9yeShzZWxmKToKKyAgICAgICAgcG9saWN5MSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIHBvbGljeTIgPSBwb2xpY3kxLmNsb25lKCkKKyAgICAgICAgcG9saWN5MS5oZWFkZXJfZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vJywgc2VsZi5Gb28pCisgICAgICAgIGggPSBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKyAgICAgICAgaCA9IHBvbGljeTIuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorCisgICAgZGVmIHRlc3RfbmV3X2ZhY3Rvcnlfb3ZlcnJpZGVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIG15cG9saWN5ID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgbXlmYWN0b3J5ID0gbXlwb2xpY3kuaGVhZGVyX2ZhY3RvcnkKKyAgICAgICAgbmV3cG9saWN5ID0gbXlwb2xpY3kgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LCBteWZhY3RvcnkpCisgICAgICAgIG5ld3BvbGljeSA9IGVtYWlsLnBvbGljeS5zdHJpY3QgKyBteXBvbGljeQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5oZWFkZXJfZmFjdG9yeSwgbXlmYWN0b3J5KQorCisgICAgZGVmIHRlc3RfYWRkaW5nX2RlZmF1bHRfcG9saWNpZXNfcHJlc2VydmVzX2RlZmF1bHRfZmFjdG9yeShzZWxmKToKKyAgICAgICAgbmV3cG9saWN5ID0gZW1haWwucG9saWN5LmRlZmF1bHQgKyBlbWFpbC5wb2xpY3kuc3RyaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5LmhlYWRlcl9mYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuX19kaWN0X18sIHsncmFpc2Vfb25fZGVmZWN0JzogVHJ1ZX0pCisKKyAgICAjIFhYWDogTmVlZCBzdWJjbGFzc2luZyB0ZXN0cy4KKyAgICAjIEZvciBhZGRpbmcgc3ViY2xhc3NlZCBvYmplY3RzLCBtYWtlIHN1cmUgdGhlIHVzdWFsIHJ1bGVzIGFwcGx5IChzdWJjbGFzcworICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgorCisKK2NsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgorICAgICMgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdCwgc28gaWYgdGhlIGV4Y2VwdGlvbiBnZXRzIHJhaXNlZCB3ZSBrbm93IHRoYXQgdGhlCisgICAgIyBwb2xpY3kgd2FzIGFjdHVhbGx5IHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgdG8gZmVlZHBhcnNlci4KKyAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuUG9saWN5KToKKyAgICAgICAgZGVmIGJhZG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInRlc3QiKQorICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCisgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CisgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCisKKyAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCisKKyAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CisgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKKworICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQorICAgICMgcG9saWN5IGluIHRvIGZlZWRwYXJzZXIsIHdlIGNhbiB1c2UgbWVzc2FnZV9mcm9tX3N0cmluZyBmb3IKKyAgICAjIHRoZSByZXN0IG9mIHRoZSBwcm9wYWdhdGlvbiB0ZXN0cy4KKworICAgIGRlZiBfbWFrZV9tc2coc2VsZiwgc291cmNlPSdTdWJqZWN0OiB0ZXN0XG5cbicsIHBvbGljeT1Ob25lKToKKyAgICAgICAgc2VsZi5wb2xpY3kgPSBlbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZSgpIGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKHNvdXJjZSwgcG9saWN5PXNlbGYucG9saWN5KQorCisgICAgZGVmIHRlc3RfcGFyc2VyX3Byb3BhZ2F0ZXNfcG9saWN5X3RvX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cucG9saWN5LCBzZWxmLnBvbGljeSkKKworICAgIGRlZiB0ZXN0X3BhcnNlcl9wcm9wYWdhdGVzX3BvbGljeV90b19zdWJfbWVzc2FnZXMoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiBtaW1lIHRlc3QKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZCwgYm91bmRhcnk9IlhYWCIKKworICAgICAgICAgICAgLS1YWFgKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCisgICAgICAgICAgICB0ZXN0CisgICAgICAgICAgICAtLVhYWAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgICAgIHRlc3QyCisgICAgICAgICAgICAtLVhYWC0tCisgICAgICAgICAgICAiIiIpKQorICAgICAgICBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXJ0LnBvbGljeSwgc2VsZi5wb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV9wcm9wYWdhdGVzX3RvX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgcyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IocykKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX3BvbGljeV91c2VkX2J5X2FzX3N0cmluZyhzZWxmKToKKyAgICAgICAgbXNnID0gc2VsZi5fbWFrZV9tc2coIlN1YmplY3Q6IHRlc3RcblRvOiBmb29cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKGxpbmVzZXA9J1gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuYXNfc3RyaW5nKCksICJTdWJqZWN0OiB0ZXN0WFRvOiBmb29YWCIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWRlNzcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3V0aWxzLnB5CkBAIC0wLDAgKzEsMTM2IEBACitpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZW1haWwgaW1wb3J0IHV0aWxzCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2NsYXNzIERhdGVUaW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGF0ZXN0cmluZyA9ICdTdW4sIDIzIFNlcCAyMDAxIDIwOjEwOjU1JworICAgIGRhdGVhcmdzID0gKDIwMDEsIDksIDIzLCAyMCwgMTAsIDU1KQorICAgIG9mZnNldHN0cmluZyA9ICcgLTA3MDAnCisgICAgdXRjb2Zmc2V0ID0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS03KQorICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUodXRjb2Zmc2V0KQorICAgIG5haXZlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzKQorICAgIGF3YXJlX2R0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoKmRhdGVhcmdzLCB0emluZm89dHopCisKKyAgICBkZWYgdGVzdF9uYWl2ZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgJyAtMDAwMCcpCisKKyAgICBkZWYgdGVzdF9hd2FyZV9kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5hd2FyZV9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgc2VsZi5vZmZzZXRzdHJpbmcpCisKKyAgICBkZWYgdGVzdF91c2VnbXQoc2VsZik6CisgICAgICAgIHV0Y19kdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCpzZWxmLmRhdGVhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kYXRldGltZSh1dGNfZHQsIHVzZWdtdD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGVzdHJpbmcgKyAnIEdNVCcpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9uYWl2ZV9kYXRldGltZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5uYWl2ZV9kdCwgdXNlZ210PVRydWUpCisKKyAgICBkZWYgdGVzdF91c2VnbXRfd2l0aF9ub25fdXRjX2RhdGV0aW1lX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWxzLmZvcm1hdF9kYXRldGltZShzZWxmLmF3YXJlX2R0LCB1c2VnbXQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV90b19kYXRldGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZShzZWxmLmRhdGVzdHJpbmcgKyBzZWxmLm9mZnNldHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmF3YXJlX2R0KQorCisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX3RvX2RhdGV0aW1lX25haXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgdXRpbHMucGFyc2VkYXRlX3RvX2RhdGV0aW1lKHNlbGYuZGF0ZXN0cmluZyArICcgLTAwMDAnKSwKKyAgICAgICAgICAgIHNlbGYubmFpdmVfZHQpCisKKworY2xhc3MgTG9jYWx0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2lzX3R6X2F3YXJlX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9pc190el9hd2FyZV9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0ID0gdXRpbHMubG9jYWx0aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0LnR6aW5mbywgTm9uZSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0tMSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2RheWxpZ2h0X2ZhbHNlX2RzdF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9LTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF90cnVlX2RzdF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF9mYWxzZV9kc3RfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9MSkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfdXRjX2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIEB0ZXN0LnN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX3V0Y19kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHQyID0gdDAgLSBkYXRldGltZS50aW1lZGVsdGEoaG91cnM9NSkKKyAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbyA9IGRhdGV0aW1lLnRpbWV6b25lKGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF9ub3R6X2RheWxpZ2h0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfbm90el9kYXlsaWdodF9mYWxzZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIEZhbHNlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5NzAsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MC5yZXBsYWNlKHR6aW5mbz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICAjIFhYWDogTmVlZCBhIG1vcmUgcm9idXN0IHRlc3QgZm9yIE9sc29uJ3MgdHpkYXRhCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksCisgICAgICAgICAgICAgICAgICAgICAiV2luZG93cyBkb2VzIG5vdCB1c2UgT2xzb24ncyBUWiBkYXRhYmFzZSIpCisgICAgQHRlc3Quc3VwcG9ydC5ydW5fd2l0aF90eignRXVyb3BlL0tpZXYnKQorICAgIGRlZiB0ZXN0X3ZhcmlhYmxlX3R6bmFtZShzZWxmKToKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTg0LCAxLCAxLCB0emluZm89ZGF0ZXRpbWUudGltZXpvbmUudXRjKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS50em5hbWUoKSwgJ01TSycpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5NCwgMSwgMSwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEudHpuYW1lKCksICdFRVQnKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF90b3J0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfdG9ydHVyZS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC90b3J0dXJlX3Rlc3QucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMDk1ODIwYi4uMmU5MDRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKK2ltcG9ydCBwaWNrbGUKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTYxLDcgKzYyLDI1IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZgogCi1jbGFzcyBFbnVtZXJhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBQaWNrbGVUZXN0OgorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19waWNrbGUoc2VsZiwgaXRvcmcsIHNlcSk6CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlcVsxOl0pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxWzE6XSkKKworY2xhc3MgRW51bWVyYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZW51bSA9IGVudW1lcmF0ZQogICAgIHNlcSwgcmVzID0gJ2FiYycsIFsoMCwnYScpLCAoMSwnYicpLCAoMiwnYycpXQpAQCAtNzMsNiArOTIsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKHNlbGYuc2VxKSksIHNlbGYucmVzKQogICAgICAgICBzZWxmLmVudW0uX19kb2NfXwogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShzZWxmLmVudW0oc2VsZi5zZXEpLCBzZWxmLnJlcykKKwogICAgIGRlZiB0ZXN0X2dldGl0ZW1zZXFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5lbnVtKEcoc2VsZi5zZXEpKSksIHNlbGYucmVzKQogICAgICAgICBlID0gc2VsZi5lbnVtKEcoJycpKQpAQCAtMTI2LDcgKzE0OCw3IEBACiAgICAgc2VxID0gcmFuZ2UoMTAsMjAwMDAsMikKICAgICByZXMgPSBsaXN0KHppcChyYW5nZSgyMDAwMCksIHNlcSkpCiAKLWNsYXNzIFRlc3RSZXZlcnNlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0UmV2ZXJzZWQodW5pdHRlc3QuVGVzdENhc2UsIFBpY2tsZVRlc3QpOgogCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgogICAgICAgICBjbGFzcyBBOgpAQCAtMjEyLDYgKzIzNCwxMCBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKKwogCiBjbGFzcyBFbnVtZXJhdGVTdGFydFRlc3RDYXNlKEVudW1lcmF0ZVRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggMDgzZmQ3Zi4uN2Y5NTQ3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC03NSw2ICs3NSw5IEBACiAgICAgICAgIGVwLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVwLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXAuZmlsZW5vKQorICAgICAgICBpZiBoYXNhdHRyKHNlbGVjdCwgIkVQT0xMX0NMT0VYRUMiKToKKyAgICAgICAgICAgIHNlbGVjdC5lcG9sbChzZWxlY3QuRVBPTExfQ0xPRVhFQykuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZWN0LmVwb2xsLCBmbGFncz0xMjM1NikKIAogICAgIGRlZiB0ZXN0X2JhZGNyZWF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3QuZXBvbGwsIDEsIDIsIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKaW5kZXggN2EyZGQwYy4uNDEzZjRkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQpAQCAtOCw3ICs4LDE2IEBACiBpbXBvcnQgZXJybm8KIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChURVNURk4sIHVubGluaywgcnVuX3VuaXR0ZXN0LCBjYXB0dXJlZF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGdjX2NvbGxlY3QsIGNweXRob25fb25seSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfY29sbGVjdCwgY3B5dGhvbl9vbmx5LCBub190cmFjaW5nKQorCitjbGFzcyBOYWl2ZUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgc2VsZi54ID0geAorCitjbGFzcyBTbG90dGVkTmFpdmVFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBfX3Nsb3RzX18gPSAoJ3gnLCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHNlbGYueCA9IHgKIAogIyBYWFggVGhpcyBpcyBub3QgcmVhbGx5IGVub3VnaCwgZWFjaCAqb3BlcmF0aW9uKiBzaG91bGQgYmUgdGVzdGVkIQogCkBAIC00Niw4ICs1NSw4IEBACiAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCi0gICAgICAgIHNlbGYucmFpc2VfY2F0Y2goSU9FcnJvciwgIklPRXJyb3IiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBvcGVuLCAndGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0JywgJ3InKQorICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKE9TRXJyb3IsICJPU0Vycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3BlbiwgJ3RoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCcsICdyJykKIAogICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKEltcG9ydEVycm9yLCAiSW1wb3J0RXJyb3IiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInVuZGVmaW5lZF9tb2R1bGUiKQpAQCAtMTkyLDExICsyMDEsMzUgQEAKICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFdpbmRvd3NFcnJvcigxMDAxKSksICIxMDAxIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFdpbmRvd3NFcnJvcigxMDAxLCAibWVzc2FnZSIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIltFcnJvciAxMDAxXSBtZXNzYWdlIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoV2luZG93c0Vycm9yKDEwMDEsICJtZXNzYWdlIikuZXJybm8sIDIyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChXaW5kb3dzRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKS53aW5lcnJvciwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoV2luZG93c0Vycm9yLCBPU0Vycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT1NFcnJvcigxMDAxKSksICIxMDAxIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9TRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbRXJybm8gMTAwMV0gbWVzc2FnZSIpCisgICAgICAgICAgICAjIFBPU0lYIGVycm5vICg5IGFrYSBFQkFERikgaXMgdW50cmFuc2xhdGVkCisgICAgICAgICAgICB3ID0gT1NFcnJvcig5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltFcnJubyA5XSBmb286ICdiYXInIikKKyAgICAgICAgICAgICMgRVJST1JfUEFUSF9OT1RfRk9VTkQgKHdpbiBlcnJvciAzKSBiZWNvbWVzIEVOT0VOVCAoMikKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDAsICdmb28nLCAnYmFyJywgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodyksICJbV2luRXJyb3IgM10gZm9vOiAnYmFyJyIpCisgICAgICAgICAgICAjIFVua25vd24gd2luIGVycm9yIGJlY29tZXMgRUlOVkFMICgyMikKKyAgICAgICAgICAgIHcgPSBPU0Vycm9yKDAsICdmb28nLCBOb25lLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCAyMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3KSwgIltXaW5FcnJvciAxMDAxXSBmb28iKQorICAgICAgICAgICAgIyBOb24tbnVtZXJpYyAiZXJybm8iCisgICAgICAgICAgICB3ID0gT1NFcnJvcignYmFyJywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LnN0cmVycm9yLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5maWxlbmFtZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0IHRoYXQgZXhjZXB0aW9uIGF0dHJpYnV0ZXMgYXJlIGhhcHB5CkBAIC0yNzIsMTMgKzMwNSwxOCBAQAogICAgICAgICAgICAgICAgIHsnYXJncycgOiAoJ1x1MzA0MicsIDAsIDEsICdvdWNoJyksCiAgICAgICAgICAgICAgICAgICdvYmplY3QnIDogJ1x1MzA0MicsICdyZWFzb24nIDogJ291Y2gnLAogICAgICAgICAgICAgICAgICAnc3RhcnQnIDogMCwgJ2VuZCcgOiAxfSksCisgICAgICAgICAgICAoTmFpdmVFeGNlcHRpb24sICgnZm9vJywpLAorICAgICAgICAgICAgICAgIHsnYXJncyc6ICgnZm9vJywpLCAneCc6ICdmb28nfSksCisgICAgICAgICAgICAoU2xvdHRlZE5haXZlRXhjZXB0aW9uLCAoJ2ZvbycsKSwKKyAgICAgICAgICAgICAgICB7J2FyZ3MnOiAoJ2ZvbycsKSwgJ3gnOiAnZm9vJ30pLAogICAgICAgICBdCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTW9yZSB0ZXN0cyBhcmUgaW4gdGVzdF9XaW5kb3dzRXJyb3IKICAgICAgICAgICAgIGV4Y2VwdGlvbkxpc3QuYXBwZW5kKAogICAgICAgICAgICAgICAgIChXaW5kb3dzRXJyb3IsICgxLCAnc3RyRXJyb3JTdHInLCAnZmlsZW5hbWVTdHInKSwKICAgICAgICAgICAgICAgICAgICAgeydhcmdzJyA6ICgxLCAnc3RyRXJyb3JTdHInKSwKLSAgICAgICAgICAgICAgICAgICAgICdzdHJlcnJvcicgOiAnc3RyRXJyb3JTdHInLCAnd2luZXJyb3InIDogMSwKLSAgICAgICAgICAgICAgICAgICAgICdlcnJubycgOiAyMiwgJ2ZpbGVuYW1lJyA6ICdmaWxlbmFtZVN0cid9KQorICAgICAgICAgICAgICAgICAgICAgJ3N0cmVycm9yJyA6ICdzdHJFcnJvclN0cicsICd3aW5lcnJvcicgOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgJ2Vycm5vJyA6IDEsICdmaWxlbmFtZScgOiAnZmlsZW5hbWVTdHInfSkKICAgICAgICAgICAgICkKICAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTI5MSw3ICszMjksOCBAQAogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVmVyaWZ5IG1vZHVsZSBuYW1lCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUpLl9fbW9kdWxlX18sICdidWlsdGlucycpCisgICAgICAgICAgICAgICAgaWYgbm90IHR5cGUoZSkuX19uYW1lX18uZW5kc3dpdGgoJ05haXZlRXhjZXB0aW9uJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlKS5fX21vZHVsZV9fLCAnYnVpbHRpbnMnKQogICAgICAgICAgICAgICAgICMgVmVyaWZ5IG5vIHJlZiBsZWFrcyBpbiBFeGNfc3RyKCkKICAgICAgICAgICAgICAgICBzID0gc3RyKGUpCiAgICAgICAgICAgICAgICAgZm9yIGNoZWNrQXJnTmFtZSBpbiBleHBlY3RlZDoKQEAgLTM2MiwxOSArNDAxLDM3IEBACiAKICAgICBkZWYgdGVzdENoYWluaW5nQXR0cnMoc2VsZik6CiAgICAgICAgIGUgPSBFeGNlcHRpb24oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jb250ZXh0X18sIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NhdXNlX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQogCiAgICAgICAgIGUgPSBUeXBlRXJyb3IoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jb250ZXh0X18sIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NhdXNlX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQogCiAgICAgICAgIGNsYXNzIE15RXhjZXB0aW9uKEVudmlyb25tZW50RXJyb3IpOgogICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGUgPSBNeUV4Y2VwdGlvbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NvbnRleHRfXywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY2F1c2VfXywgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisKKyAgICBkZWYgdGVzdENoYWluaW5nRGVzY3JpcHRvcnMoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgZSA9IGV4YworCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCisKKyAgICAgICAgZS5fX2NvbnRleHRfXyA9IE5hbWVFcnJvcigpCisgICAgICAgIGUuX19jYXVzZV9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgTmFtZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgIGUuX19zdXBwcmVzc19jb250ZXh0X18gPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuX19zdXBwcmVzc19jb250ZXh0X18pCiAKICAgICBkZWYgdGVzdEtleXdvcmRBcmdzKHNlbGYpOgogICAgICAgICAjIHRlc3QgdGhhdCBidWlsdGluIGV4Y2VwdGlvbiBkb24ndCB0YWtlIGtleXdvcmQgYXJncywKQEAgLTM4OSw2ICs0NDYsNyBAQAogICAgICAgICB4ID0gRGVyaXZlZEV4Y2VwdGlvbihmYW5jeV9hcmc9NDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mYW5jeV9hcmcsIDQyKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdEluZmluaXRlUmVjdXJzaW9uKHNlbGYpOgogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgcmV0dXJuIGYoKQpAQCAtNzIxLDYgKzc3OSw3IEBACiAgICAgICAgIHUuc3RhcnQgPSAxMDAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUpLCAiY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlcnMgaW4gcG9zaXRpb24gMTAwMC00OiA5NjUyMzA5NTE0NDM2ODU3MjQ5OTciKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9iYWRpc2luc3RhbmNlKHNlbGYpOgogICAgICAgICAjIEJ1ZyAjMjU0MjogaWYgaXNzdWJjbGFzcyhlLCBNeUV4Y2VwdGlvbikgcmFpc2VzIGFuIGV4Y2VwdGlvbiwKICAgICAgICAgIyBpdCBzaG91bGQgYmUgaWdub3JlZApAQCAtODMxLDYgKzg5MCw3IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIk1lbW9yeUVycm9yIG5vdCByYWlzZWQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X3JlY3Vyc2lvbl9lcnJvcl9jbGVhbnVwKHNlbGYpOgogICAgICAgICAjIFNhbWUgdGVzdCBhcyBhYm92ZSwgYnV0IHdpdGggInJlY3Vyc2lvbiBleGNlZWRlZCIgZXJyb3JzCiAgICAgICAgIGNsYXNzIEM6CkBAIC04NTcsOCArOTE3LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9URElSLCBjbS5leGNlcHRpb24pCiAKIAorY2xhc3MgSW1wb3J0RXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIFNldHRpbmcgJ25hbWUnIGFuZCAncGF0aCcgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0uCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5wYXRoKQorCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JywgbmFtZT0nc29tZW1vZHVsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm5hbWUsICdzb21lbW9kdWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjLnBhdGgpCisKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoJ3Rlc3QnLCBwYXRoPSdzb21lcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnBhdGgsICdzb21lcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5uYW1lKQorCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JywgcGF0aD0nc29tZXBhdGgnLCBuYW1lPSdzb21lbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm5hbWUsICdzb21lbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnBhdGgsICdzb21lcGF0aCcpCisKKyAgICBkZWYgdGVzdF9ub25fc3RyX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNTc3OAorICAgICAgICBhcmcgPSBiJ2FiYycKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoYXJnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhcmcpLCBzdHIoZXhjKSkKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEV4Y2VwdGlvblRlc3RzKQorICAgIHJ1bl91bml0dGVzdChFeGNlcHRpb25UZXN0cywgSW1wb3J0RXJyb3JUZXN0cykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQppbmRleCAxZjdmNjMwLi42YjZjMTJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CkBAIC02NiwxNyArNjYsMTcgQEAKICAgICA+Pj4gZygpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGcoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ3gnCiAKICAgICA+Pj4gZygqKCkpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGcoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ3gnCiAKICAgICA+Pj4gZygqKCksICoqe30pCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGcoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ3gnCiAKICAgICA+Pj4gZygxKQogICAgIDEgKCkge30KQEAgLTE1MSw3ICsxNTEsNyBAQAogICAgID4+PiBnKDEsIDIsIDMsICoqeyd4JzogNCwgJ3knOiA1fSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGcoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICd4JworICAgIFR5cGVFcnJvcjogZygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICd4JwogCiAgICAgPj4+IGYoKip7MToyfSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CkBAIC0yNjMsMjkgKzI2Myw4MCBAQAogICAgID4+PiBmKCoqeCkKICAgICAxIDIKIAotQSBvYnNjdXJlIG1lc3NhZ2U6CitUb28gbWFueSBhcmd1bWVudHM6CiAKLSAgICA+Pj4gZGVmIGYoYSwgYik6Ci0gICAgLi4uICAgIHBhc3MKLSAgICA+Pj4gZihiPTEpCisgICAgPj4+IGRlZiBmKCk6IHBhc3MKKyAgICA+Pj4gZigxKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGV4YWN0bHkgMiBhcmd1bWVudHMgKDEgZ2l2ZW4pCi0KLVRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCBpbiBpbmNsdWRlcyBrZXl3b3JkczoKLQotICAgID4+PiBkZWYgZihhKToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKDYsIGE9NCwgKigxLCAyLCAzKSkKKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAxIHdhcyBnaXZlbgorICAgID4+PiBkZWYgZihhKTogcGFzcworICAgID4+PiBmKDEsIDIpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAxIHBvc2l0aW9uYWwgYXJndW1lbnQgKDUgZ2l2ZW4pCi0gICAgPj4+IGRlZiBmKGEsICosIGt3KToKLSAgICAuLi4gICAgcGFzcwotICAgID4+PiBmKDYsIDQsIGt3PTQpCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMSBwb3NpdGlvbmFsIGFyZ3VtZW50IGJ1dCAyIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoYSwgYj0xKTogcGFzcworICAgID4+PiBmKDEsIDIsIDMpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZXhhY3RseSAxIHBvc2l0aW9uYWwgYXJndW1lbnQgKDMgZ2l2ZW4pCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZnJvbSAxIHRvIDIgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZigqLCBrdyk6IHBhc3MKKyAgICA+Pj4gZigxLCBrdz0zKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDAgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDEgcG9zaXRpb25hbCBhcmd1bWVudCAoYW5kIDEga2V5d29yZC1vbmx5IGFyZ3VtZW50KSB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKCosIGt3LCBiKTogcGFzcworICAgID4+PiBmKDEsIDIsIDMsIGI9Mywga3c9MykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHBvc2l0aW9uYWwgYXJndW1lbnRzIChhbmQgMiBrZXl3b3JkLW9ubHkgYXJndW1lbnRzKSB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKGEsIGI9MiwgKiwga3cpOiBwYXNzCisgICAgPj4+IGYoMiwgMywgNCwga3c9NCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoYW5kIDEga2V5d29yZC1vbmx5IGFyZ3VtZW50KSB3ZXJlIGdpdmVuCisKK1RvbyBmZXcgYW5kIG1pc3NpbmcgYXJndW1lbnRzOgorCisgICAgPj4+IGRlZiBmKGEpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAnYScKKyAgICA+Pj4gZGVmIGYoYSwgYik6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAyIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnRzOiAnYScgYW5kICdiJworICAgID4+PiBkZWYgZihhLCBiLCBjKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDMgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICdhJywgJ2InLCBhbmQgJ2MnCisgICAgPj4+IGRlZiBmKGEsIGIsIGMsIGQsIGUpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgNSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJ2EnLCAnYicsICdjJywgJ2QnLCBhbmQgJ2UnCisgICAgPj4+IGRlZiBmKGEsIGI9NCwgYz01LCBkPTUpOiBwYXNzCisgICAgPj4+IGYoYz0xMiwgYj05KQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAnYScKKworU2FtZSB3aXRoIGtleXdvcmQgb25seSBhcmdzOgorCisgICAgPj4+IGRlZiBmKCosIHcpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMSByZXF1aXJlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6ICd3JworICAgID4+PiBkZWYgZigqLCBhLCBiLCBjLCBkLCBlKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDUgcmVxdWlyZWQga2V5d29yZC1vbmx5IGFyZ3VtZW50czogJ2EnLCAnYicsICdjJywgJ2QnLCBhbmQgJ2UnCisKICIiIgogCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MWIzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtMCwwICsxLDU5MyBAQAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNpZ25hbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHVuaXR0ZXN0CisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgSEFWRV9USFJFQURTID0gVHJ1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIEhBVkVfVEhSRUFEUyA9IEZhbHNlCisKK1RJTUVPVVQgPSAwLjUKKwordHJ5OgorICAgIGZyb20gcmVzb3VyY2UgaW1wb3J0IHNldHJsaW1pdCwgUkxJTUlUX0NPUkUsIGVycm9yIGFzIHJlc291cmNlX2Vycm9yCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcHJlcGFyZV9zdWJwcm9jZXNzID0gTm9uZQorZWxzZToKKyAgICBkZWYgcHJlcGFyZV9zdWJwcm9jZXNzKCk6CisgICAgICAgICMgZG9uJ3QgY3JlYXRlIGNvcmUgZmlsZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXRybGltaXQoUkxJTUlUX0NPUkUsICgwLCAwKSkKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCByZXNvdXJjZV9lcnJvcik6CisgICAgICAgICAgICBwYXNzCisKK2RlZiBleHBlY3RlZF90cmFjZWJhY2sobGluZW5vMSwgbGluZW5vMiwgaGVhZGVyLCBtaW5fY291bnQ9MSk6CisgICAgcmVnZXggPSBoZWFkZXIKKyAgICByZWdleCArPSAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gZnVuY1xuJyAlIGxpbmVubzEKKyAgICByZWdleCArPSAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gPG1vZHVsZT4nICUgbGluZW5vMgorICAgIGlmIDEgPCBtaW5fY291bnQ6CisgICAgICAgIHJldHVybiAnXicgKyAocmVnZXggKyAnXG4nKSAqIChtaW5fY291bnQgLSAxKSArIHJlZ2V4CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICdeJyArIHJlZ2V4ICsgJyQnCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHRlbXBvcmFyeV9maWxlbmFtZSgpOgorICAgIGZpbGVuYW1lID0gdGVtcGZpbGUubWt0ZW1wKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkIGZpbGVuYW1lCisgICAgZmluYWxseToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoZmlsZW5hbWUpCisKK2NsYXNzIEZhdWx0SGFuZGxlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgZ2V0X291dHB1dChzZWxmLCBjb2RlLCBmaWxlbmFtZT1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJ1biB0aGUgc3BlY2lmaWVkIGNvZGUgaW4gUHl0aG9uIChpbiBhIG5ldyBjaGlsZCBwcm9jZXNzKSBhbmQgcmVhZCB0aGUKKyAgICAgICAgb3V0cHV0IGZyb20gdGhlIHN0YW5kYXJkIGVycm9yIG9yIGZyb20gYSBmaWxlIChpZiBmaWxlbmFtZSBpcyBzZXQpLgorICAgICAgICBSZXR1cm4gdGhlIG91dHB1dCBsaW5lcyBhcyBhIGxpc3QuCisKKyAgICAgICAgU3RyaXAgdGhlIHJlZmVyZW5jZSBjb3VudCBmcm9tIHRoZSBzdGFuZGFyZCBlcnJvciBmb3IgUHl0aG9uIGRlYnVnCisgICAgICAgIGJ1aWxkLCBhbmQgcmVwbGFjZSAiQ3VycmVudCB0aHJlYWQgMHgwMDAwN2Y4ZDhmYmQ5NzAwIiBieSAiQ3VycmVudAorICAgICAgICB0aHJlYWQgWFhYIi4KKyAgICAgICAgIiIiCisgICAgICAgIG9wdGlvbnMgPSB7fQorICAgICAgICBpZiBwcmVwYXJlX3N1YnByb2Nlc3M6CisgICAgICAgICAgICBvcHRpb25zWydwcmVleGVjX2ZuJ10gPSBwcmVwYXJlX3N1YnByb2Nlc3MKKyAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUsICoqb3B0aW9ucykKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQorICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3Rkb3V0KQorICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJycpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCisgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQorCisgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgdGhlIGZhdWx0IGhhbmRsZXIgZm9yIGZhdGFsIGVycm9ycyBpcyBlbmFibGVkIGFuZCBjaGVjayB0aGUKKyAgICAgICAgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgb3V0cHV0LgorCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgYWxsX3RocmVhZHM6CisgICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgWFhYJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGVhZGVyID0gJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCknCisgICAgICAgIHJlZ2V4ID0gIiIiCiteRmF0YWwgUHl0aG9uIGVycm9yOiB7bmFtZX0KKwore2hlYWRlcn06CisgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiA8bW9kdWxlPgorIiIiLnN0cmlwKCkKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQoCisgICAgICAgICAgICBsaW5lbm89bGluZV9udW1iZXIsCisgICAgICAgICAgICBuYW1lPW5hbWVfcmVnZXgsCisgICAgICAgICAgICBoZWFkZXI9cmUuZXNjYXBlKGhlYWRlcikpCisgICAgICAgIGlmIG90aGVyX3JlZ2V4OgorICAgICAgICAgICAgcmVnZXggKz0gJ3wnICsgb3RoZXJfcmVnZXgKKyAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0ID0gJ1xuJy5qb2luKG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfcmVhZF9udWxsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAjIElzc3VlICMxMjcwMDogUmVhZCBOVUxMIHJhaXNlcyBTSUdJTEwgb24gTWFjIE9TIFggTGlvbgorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorCisgICAgZGVmIHRlc3Rfc2lnc2VndihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdzZWd2KCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnKQorCisgICAgZGVmIHRlc3Rfc2lnYWJydChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdhYnJ0KCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdBYm9ydGVkJykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAiU0lHRlBFIGNhbm5vdCBiZSBjYXVnaHQgb24gV2luZG93cyIpCisgICAgZGVmIHRlc3Rfc2lnZnBlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2ZwZSgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uJykKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnX3NpZ2J1cycpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLl9zaWdidXMoKSIpCisgICAgZGVmIHRlc3Rfc2lnYnVzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2J1cygpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnQnVzIGVycm9yJykKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnX3NpZ2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLl9zaWdpbGwoKSIpCisgICAgZGVmIHRlc3Rfc2lnaWxsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnSWxsZWdhbCBpbnN0cnVjdGlvbicpCisKKyAgICBkZWYgdGVzdF9mYXRhbF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5fZmF0YWxfZXJyb3IoYid4eXonKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAyLAorICAgICAgICAgICAgJ3h5eicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJykgYW5kIEhBVkVfVEhSRUFEUywKKyAgICAgICAgICAgICAgICAgICAgICJJc3N1ZSAjMTI4Njg6IHNpZ2FsdHN0YWNrKCkgZG9lc24ndCB3b3JrIG9uICIKKyAgICAgICAgICAgICAgICAgICAgICJPcGVuQlNEIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIHB0aHJlYWQiKQorICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnX3N0YWNrX292ZXJmbG93JyksCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuX3N0YWNrX292ZXJmbG93KCknKQorICAgIGRlZiB0ZXN0X3N0YWNrX292ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3N0YWNrX292ZXJmbG93KCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yKScsCisgICAgICAgICAgICBvdGhlcl9yZWdleD0ndW5hYmxlIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3cnKQorCisgICAgZGVmIHRlc3RfZ2lsX3JlbGVhc2VkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbChUcnVlKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorCisgICAgZGVmIHRlc3RfZW5hYmxlX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorb3V0cHV0ID0gb3Blbih7ZmlsZW5hbWV9LCAnd2InKQorZmF1bHRoYW5kbGVyLmVuYWJsZShvdXRwdXQpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKS5mb3JtYXQoZmlsZW5hbWU9cmVwcihmaWxlbmFtZSkpLAorICAgICAgICAgICAgICAgIDQsCisgICAgICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknLAorICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfZW5hYmxlX3NpbmdsZV90aHJlYWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPUZhbHNlKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknLAorICAgICAgICAgICAgYWxsX3RocmVhZHM9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9kaXNhYmxlKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5kaXNhYmxlKCkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpCisgICAgICAgIG5vdF9leHBlY3RlZCA9ICdGYXRhbCBQeXRob24gZXJyb3InCisgICAgICAgIHN0ZGVyciwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSkKKyAgICAgICAgc3RkZXIgPSAnXG4nLmpvaW4oc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90X2V4cGVjdGVkIG5vdCBpbiBzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAiJXIgaXMgcHJlc2VudCBpbiAlciIgJSAobm90X2V4cGVjdGVkLCBzdGRlcnIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZChzZWxmKToKKyAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcmVncnRlc3QgbWF5IHJlcGxhY2Ugc3lzLnN0ZGVyciBieSBpby5TdHJpbmdJTyBvYmplY3QsIGJ1dAorICAgICAgICAgICAgIyBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgcmVxdWlyZXMgdGhhdCBzeXMuc3RkZXJyIGhhcyBhIGZpbGVubygpCisgICAgICAgICAgICAjIG1ldGhvZAorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCisKKyAgICAgICAgICAgIHdhc19lbmFibGVkID0gZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kaXNhYmxlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIHdhc19lbmFibGVkOgorICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKworICAgIGRlZiB0ZXN0X2Rpc2FibGVkX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgQnkgZGVmYXVsdCwgdGhlIG1vZHVsZSBzaG91bGQgYmUgZGlzYWJsZWQKKyAgICAgICAgY29kZSA9ICJpbXBvcnQgZmF1bHRoYW5kbGVyOyBwcmludChmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKSIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCBjb2RlKQorICAgICAgICBzdGRvdXQgPSAoc3Rkb3V0ICsgc3RkZXJyKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBiIkZhbHNlIikKKworICAgIGRlZiB0ZXN0X3N5c194b3B0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHB5dGhvbiAtWCBmYXVsdGhhbmRsZXIKKyAgICAgICAgY29kZSA9ICJpbXBvcnQgZmF1bHRoYW5kbGVyOyBwcmludChmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKSIKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLVgiLCAiZmF1bHRoYW5kbGVyIiwgIi1jIiwgY29kZSkKKyAgICAgICAgc3Rkb3V0ID0gKHN0ZG91dCArIHN0ZGVycikuc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJUcnVlIikKKworICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFjayhzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBFeHBsaWNpdGx5IGNhbGwgZHVtcF90cmFjZWJhY2soKSBmdW5jdGlvbiBhbmQgY2hlY2sgaXRzIG91dHB1dC4KKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCisKK2RlZiBmdW5jQigpOgorICAgIGlmIHtoYXNfZmlsZW5hbWV9OgorICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPUZhbHNlKQorICAgIGVsc2U6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKKworZGVmIGZ1bmNBKCk6CisgICAgZnVuY0IoKQorCitmdW5jQSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgKQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGxpbmVubyA9IDYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVubyA9IDgKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTonLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lICVzIGluIGZ1bmNCJyAlIGxpbmVubywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMSBpbiBmdW5jQScsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTMgaW4gPG1vZHVsZT4nCisgICAgICAgIF0KKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKE5vbmUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhmaWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgorICAgICAgICBtYXhsZW4gPSA1MDAKKyAgICAgICAgZnVuY19uYW1lID0gJ3gnICogKG1heGxlbiArIDUwKQorICAgICAgICB0cnVuY2F0ZWQgPSAneCcgKiBtYXhsZW4gKyAnLi4uJworICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCisKK2RlZiB7ZnVuY19uYW1lfSgpOgorICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKKwore2Z1bmNfbmFtZX0oKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZnVuY19uYW1lPWZ1bmNfbmFtZSwKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgNCBpbiAlcycgJSB0cnVuY2F0ZWQsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgNiBpbiA8bW9kdWxlPicKKyAgICAgICAgXQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFja190aHJlYWRzKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiCisgICAgICAgIENhbGwgZXhwbGljaXRseSBkdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1UcnVlKSBhbmQgY2hlY2sgdGhlIG91dHB1dC4KKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkLCBFdmVudAoraW1wb3J0IHRpbWUKKworZGVmIGR1bXAoKToKKyAgICBpZiB7ZmlsZW5hbWV9OgorICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPVRydWUpCisgICAgZWxzZToKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGFsbF90aHJlYWRzPVRydWUpCisKK2NsYXNzIFdhaXRlcihUaHJlYWQpOgorICAgICMgYXZvaWQgYmxvY2tpbmcgaWYgdGhlIG1haW4gdGhyZWFkIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgZGFlbW9uID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5ydW5uaW5nID0gRXZlbnQoKQorICAgICAgICBzZWxmLnN0b3AgPSBFdmVudCgpCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bm5pbmcuc2V0KCkKKyAgICAgICAgc2VsZi5zdG9wLndhaXQoKQorCit3YWl0ZXIgPSBXYWl0ZXIoKQord2FpdGVyLnN0YXJ0KCkKK3dhaXRlci5ydW5uaW5nLndhaXQoKQorZHVtcCgpCit3YWl0ZXIuc3RvcC5zZXQoKQord2FpdGVyLmpvaW4oKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpKQorICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIGxpbmVubyA9IDgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmVubyA9IDEwCisgICAgICAgIHJlZ2V4ID0gIiIiCiteVGhyZWFkIDB4WzAtOWEtZl0rOgorKD86ICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIFtfYS16XSsKKyl7ezEsM319ICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjMgaW4gcnVuCisgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcF9pbm5lcgorICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXAKKworQ3VycmVudCB0aHJlYWQgWFhYOgorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gZHVtcAorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjggaW4gPG1vZHVsZT4kCisiIiIuc3RyaXAoKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChsaW5lbm89bGluZW5vKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja190aHJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoTm9uZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX3RocmVhZHNfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhmaWxlbmFtZSkKKworICAgIGRlZiBfY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0LCBjYW5jZWwsIGZpbGVuYW1lLCBsb29wcyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2ViYWNrIGlzIHdyaXR0ZW4gaW4gdGltZW91dCB4IDIuNSBzZWNvbmRzLAorICAgICAgICBvciB0aW1lb3V0IHggMy41IHNlY29uZHMgaWYgY2FuY2VsIGlzIFRydWU6IDEsIDIgb3IgMyB0aW1lcyBkZXBlbmRpbmcKKyAgICAgICAgb24gcmVwZWF0IGFuZCBjYW5jZWwgb3B0aW9ucy4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICB0aW1lb3V0X3N0ciA9IHN0cihkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1USU1FT1VUKSkKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IHRpbWUKKworZGVmIGZ1bmModGltZW91dCwgcmVwZWF0LCBjYW5jZWwsIGZpbGUsIGxvb3BzKToKKyAgICBmb3IgbG9vcCBpbiByYW5nZShsb29wcyk6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCByZXBlYXQ9cmVwZWF0LCBmaWxlPWZpbGUpCisgICAgICAgIGlmIGNhbmNlbDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICB0aW1lLnNsZWVwKHRpbWVvdXQgKiA1KQorICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKwordGltZW91dCA9IHt0aW1lb3V0fQorcmVwZWF0ID0ge3JlcGVhdH0KK2NhbmNlbCA9IHtjYW5jZWx9Citsb29wcyA9IHtsb29wc30KK2lmIHtoYXNfZmlsZW5hbWV9OgorICAgIGZpbGUgPSBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpCitlbHNlOgorICAgIGZpbGUgPSBOb25lCitmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcykKK2lmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgZmlsZS5jbG9zZSgpCisiIiIuc3RyaXAoKQorICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCisgICAgICAgICAgICB0aW1lb3V0PVRJTUVPVVQsCisgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgY2FuY2VsPWNhbmNlbCwKKyAgICAgICAgICAgIGxvb3BzPWxvb3BzLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICkKKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKKworICAgICAgICBpZiBub3QgY2FuY2VsOgorICAgICAgICAgICAgY291bnQgPSBsb29wcworICAgICAgICAgICAgaWYgcmVwZWF0OgorICAgICAgICAgICAgICAgIGNvdW50ICo9IDIKKyAgICAgICAgICAgIGhlYWRlciA9IHInVGltZW91dCBcKCVzXCkhXG5UaHJlYWQgMHhbMC05YS1mXSs6XG4nICUgdGltZW91dF9zdHIKKyAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDksIDIwLCBoZWFkZXIsIG1pbl9jb3VudD1jb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKScpCisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdD1GYWxzZSwgY2FuY2VsPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1GYWxzZSwgdHdpY2U9RmFsc2UpOgorICAgICAgICBpZiB0d2ljZToKKyAgICAgICAgICAgIGxvb3BzID0gMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9vcHMgPSAxCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbG9vcHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQsIGNhbmNlbCwgTm9uZSwgbG9vcHMpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9yZXBlYXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0PVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9jYW5jZWwoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoY2FuY2VsPVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZpbGU9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX3R3aWNlKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHR3aWNlPVRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgInJlZ2lzdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIucmVnaXN0ZXIiKQorICAgIGRlZiBjaGVja19yZWdpc3RlcihzZWxmLCBmaWxlbmFtZT1GYWxzZSwgYWxsX3RocmVhZHM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgIHVucmVnaXN0ZXI9RmFsc2UsIGNoYWluPUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlZ2lzdGVyIGEgaGFuZGxlciBkaXNwbGF5aW5nIHRoZSB0cmFjZWJhY2sgb24gYSB1c2VyIHNpZ25hbC4gUmFpc2UgdGhlCisgICAgICAgIHNpZ25hbCBhbmQgY2hlY2sgdGhlIHdyaXR0ZW4gdHJhY2ViYWNrLgorCisgICAgICAgIElmIGNoYWluIGlzIFRydWUsIGNoZWNrIHRoYXQgdGhlIHByZXZpb3VzIHNpZ25hbCBoYW5kbGVyIGlzIGNhbGxlZC4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworCitkZWYgZnVuYyhzaWdudW0pOgorICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKworZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgaGFuZGxlci5jYWxsZWQgPSBUcnVlCitoYW5kbGVyLmNhbGxlZCA9IEZhbHNlCisKK2V4aXRjb2RlID0gMAorc2lnbnVtID0ge3NpZ251bX0KK3VucmVnaXN0ZXIgPSB7dW5yZWdpc3Rlcn0KK2NoYWluID0ge2NoYWlufQorCitpZiB7aGFzX2ZpbGVuYW1lfToKKyAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorZWxzZToKKyAgICBmaWxlID0gTm9uZQoraWYgY2hhaW46CisgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCitmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBmaWxlPWZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9e2FsbF90aHJlYWRzfSwgY2hhaW49e2NoYWlufSkKK2lmIHVucmVnaXN0ZXI6CisgICAgZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoc2lnbnVtKQorZnVuYyhzaWdudW0pCitpZiBjaGFpbiBhbmQgbm90IGhhbmRsZXIuY2FsbGVkOgorICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIG91dHB1dCA9IGZpbGUKKyAgICBlbHNlOgorICAgICAgICBvdXRwdXQgPSBzeXMuc3RkZXJyCisgICAgcHJpbnQoIkVycm9yOiBzaWduYWwgaGFuZGxlciBub3QgY2FsbGVkISIsIGZpbGU9b3V0cHV0KQorICAgIGV4aXRjb2RlID0gMQoraWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICBmaWxlLmNsb3NlKCkKK3N5cy5leGl0KGV4aXRjb2RlKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCisgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywKKyAgICAgICAgICAgIHNpZ251bT1zaWdudW0sCisgICAgICAgICAgICB1bnJlZ2lzdGVyPXVucmVnaXN0ZXIsCisgICAgICAgICAgICBjaGFpbj1jaGFpbiwKKyAgICAgICAgKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQorICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWDpcbicKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVnZXggPSAnVHJhY2ViYWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soNywgMjgsIHJlZ2V4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCAnJykKKyAgICAgICAgaWYgdW5yZWdpc3RlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoKQorCisgICAgZGVmIHRlc3RfdW5yZWdpc3RlcihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3Rlcih1bnJlZ2lzdGVyPVRydWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3RocmVhZHMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2NoYWluKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGNoYWluPVRydWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZhdWx0SGFuZGxlclRlc3RzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IGYzMTI4ODIuLjFlNzA2NDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yLDE4ICsyLDMzIEBACiBUZXN0cyBmb3IgZmlsZWlucHV0IG1vZHVsZS4KIE5pY2sgTWF0aGV3c29uCiAnJycKLQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgcmUKK2ltcG9ydCBmaWxlaW5wdXQKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluawotaW1wb3J0IHN5cywgcmUKKwordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IGd6aXAKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnemlwID0gTm9uZQorCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSBmaWxlaW5wdXQgaW1wb3J0IEZpbGVJbnB1dCwgaG9va19lbmNvZGVkCiAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworCisKICMgVGhlIGZpbGVpbnB1dCBtb2R1bGUgaGFzIDIgaW50ZXJmYWNlczogdGhlIEZpbGVJbnB1dCBjbGFzcyB3aGljaCBkb2VzCiAjIGFsbCB0aGUgd29yaywgYW5kIGEgZmV3IGZ1bmN0aW9ucyAoaW5wdXQsIGV0Yy4pIHRoYXQgdXNlIGEgZ2xvYmFsIF9zdGF0ZQotIyB2YXJpYWJsZS4gIFdlIG9ubHkgdGVzdCB0aGUgRmlsZUlucHV0IGNsYXNzLCBzaW5jZSB0aGUgb3RoZXIgZnVuY3Rpb25zCi0jIG9ubHkgcHJvdmlkZSBhIHRoaW4gZmFjYWRlIG92ZXIgRmlsZUlucHV0LgorIyB2YXJpYWJsZS4KIAogIyBXcml0ZSBsaW5lcyAoYSBsaXN0IG9mIGxpbmVzKSB0byB0ZW1wIGZpbGUgbnVtYmVyIGksIGFuZCByZXR1cm4gdGhlCiAjIHRlbXAgZmlsZSdzIG5hbWUuCkBAIC0xMjEsNyArMTM2LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtLmdyb3VwKDEpKSwgZmkuZmlsZWxpbmVubygpKQogICAgICAgICBmaS5jbG9zZSgpCiAKK2NsYXNzIFVuY29uZGl0aW9uYWxseVJhaXNlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNlcHRpb25fdHlwZSk6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uX3R5cGUgPSBleGNlcHRpb25fdHlwZQorICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgIHJhaXNlIHNlbGYuZXhjZXB0aW9uX3R5cGUoKQorCiBjbGFzcyBGaWxlSW5wdXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKICAgICBkZWYgdGVzdF96ZXJvX2J5dGVfZmlsZXMoc2VsZik6CiAgICAgICAgIHQxID0gdDIgPSB0MyA9IHQ0ID0gTm9uZQogICAgICAgICB0cnk6CkBAIC0yMTksMTcgKzI0MywyMCBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJGaWxlSW5wdXQgc2hvdWxkIGNoZWNrIG9wZW5ob29rIGZvciBiZWluZyBjYWxsYWJsZSIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgICAgICAjIFhYWCBUaGUgcm90MTMgY29kZWMgd2FzIHJlbW92ZWQuCi0gICAgICAgICMgICAgIFNvIHRoaXMgdGVzdCBuZWVkcyB0byBiZSBjaGFuZ2VkIHRvIHVzZSBzb21ldGhpbmcgZWxzZS4KLSAgICAgICAgIyAgICAgKE9yIHBlcmhhcHMgdGhlIEFQSSBuZWVkcyB0byBjaGFuZ2Ugc28gd2UgY2FuIGp1c3QgcGFzcwotICAgICAgICAjICAgICBhbiBlbmNvZGluZyByYXRoZXIgdGhhbiB1c2luZyBhIGhvb2s/KQotIyMgICAgICAgICB0cnk6Ci0jIyAgICAgICAgICAgICB0MSA9IHdyaXRlVG1wKDEsIFsiQVxuQiJdLCBtb2RlPSJ3YiIpCi0jIyAgICAgICAgICAgICBmaSA9IEZpbGVJbnB1dChmaWxlcz10MSwgb3Blbmhvb2s9aG9va19lbmNvZGVkKCJyb3QxMyIpKQotIyMgICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQotIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgWyJOXG4iLCAiTyJdKQotIyMgICAgICAgICBmaW5hbGx5OgotIyMgICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSkKKworICAgICAgICBjbGFzcyBDdXN0b21PcGVuSG9vazoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmludm9rZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW4oKmFyZ3MpCisKKyAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIGN1c3RvbV9vcGVuX2hvb2sgPSBDdXN0b21PcGVuSG9vaygpCisgICAgICAgIHdpdGggRmlsZUlucHV0KFt0XSwgb3Blbmhvb2s9Y3VzdG9tX29wZW5faG9vaykgYXMgZmk6CisgICAgICAgICAgICBmaS5yZWFkbGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdXN0b21fb3Blbl9ob29rLmludm9rZWQsICJvcGVuaG9vayBub3QgaW52b2tlZCIpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTI1NCw5ICsyODEsNTc2IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsZXNfbGlzdF9zcGVjaWZpZWRfdG9fY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVtdKSBhcyBmaToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmkuX2ZpbGVzLCAoJy0nLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgICAgIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHJldHZhbDEgPSBmaVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXR2YWwxLCAibGluZTFcbiIpCisgICAgICAgICAgICByZXR2YWwyID0gZmlbMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dmFsMiwgImxpbmUyXG4iKQorCisgICAgZGVmIHRlc3RfX2dldGl0ZW1fX2ludmFsaWRfa2V5KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIGFuIGluZGV4IHVuZXF1YWwgdG8KKyAgICAgICAgICAgdGhlIGxpbmUgbnVtYmVyIiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbImxpbmUxXG4iLCAibGluZTJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmaVsxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzLCAoImFjY2Vzc2luZyBsaW5lcyBvdXQgb2Ygb3JkZXIiLCkpCisKKyAgICBkZWYgdGVzdF9fZ2V0aXRlbV9fZW9mKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQuX19nZXRpdGVtX18oKSB3aXRoIHRoZSBsaW5lIG51bWJlciBidXQgYXQKKyAgICAgICAgICAgZW5kLW9mLWlucHV0IiIiCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGZpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3MsICgiZW5kIG9mIGlucHV0IHJlYWNoZWQiLCkpCisKKyAgICBkZWYgdGVzdF9uZXh0ZmlsZV9vc2Vycm9yX2RlbGV0aW5nX2JhY2t1cChzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Lm5leHRmaWxlKCkgd2hlbiB0aGUgYXR0ZW1wdCB0byBkZWxldGUKKyAgICAgICAgICAgdGhlIGJhY2t1cCBmaWxlIHdvdWxkIHJhaXNlIE9TRXJyb3IuICBUaGlzIGVycm9yIGlzIGV4cGVjdGVkIHRvIGJlCisgICAgICAgICAgIHNpbGVudGx5IGlnbm9yZWQiIiIKKworICAgICAgICBvc191bmxpbmtfb3JpZyA9IG9zLnVubGluaworICAgICAgICBvc191bmxpbmtfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgbmV4dChmaSkgIyBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgb3BlbmVkCisgICAgICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX3JlcGxhY2VtZW50CisgICAgICAgICAgICAgICAgZmkubmV4dGZpbGUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rID0gb3NfdW5saW5rX29yaWcKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvc191bmxpbmtfcmVwbGFjZW1lbnQuaW52b2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJvcy51bmxpbmsoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfZnN0YXRfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuZnN0YXQoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19mc3RhdF9vcmlnID0gb3MuZnN0YXQKKyAgICAgICAgb3NfZnN0YXRfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuZnN0YXQgPSBvc19mc3RhdF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmZzdGF0ID0gb3NfZnN0YXRfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2ZzdGF0X3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihvcywgImNobW9kIiksICJvcy5jaG1vZCBkb2VzIG5vdCBleGlzdCIpCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfb3NfY2htb2RfcmFpc2VzX09TRXJyb3Ioc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5yZWFkbGluZSgpIHdoZW4gb3MuY2htb2QoKSByYWlzZXMgT1NFcnJvci4KKyAgICAgICAgICAgVGhpcyBleGNlcHRpb24gc2hvdWxkIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4iIiIKKworICAgICAgICBvc19jaG1vZF9vcmlnID0gb3MuY2htb2QKKyAgICAgICAgb3NfY2htb2RfcmVwbGFjZW1lbnQgPSBVbmNvbmRpdGlvbmFsbHlSYWlzZShPU0Vycm9yKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0sIGlucGxhY2U9VHJ1ZSkgYXMgZmk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QgPSBvc19jaG1vZF9yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLnJlYWRsaW5lKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNobW9kID0gb3NfY2htb2Rfb3JpZworCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zX2NobW9kX3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MuZnN0YXQoKSB3YXMgbm90IGludm9rZWQiKQorCisgICAgZGVmIHRlc3RfZmlsZW5vX3doZW5fVmFsdWVFcnJvcl9yYWlzZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEZpbGVub1JhaXNlc1ZhbHVlRXJyb3IoVW5jb25kaXRpb25hbGx5UmFpc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIFVuY29uZGl0aW9uYWxseVJhaXNlLl9faW5pdF9fKHNlbGYsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX19jYWxsX18oKQorCisgICAgICAgIHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yID0gRmlsZW5vUmFpc2VzVmFsdWVFcnJvcigpCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgZmlsZV9iYWNrdXAgPSBmaS5fZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpLl9maWxlID0gdW5jb25kaXRpb25hbGx5X3JhaXNlX1ZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmaS5maWxlbm8oKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmaS5fZmlsZSA9IGZpbGVfYmFja3VwICMgbWFrZSBzdXJlIHRoZSBmaWxlIGdldHMgY2xlYW5lZCB1cAorCisgICAgICAgICMgc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciB0ZXN0IHNjZW5hcmlvIHdhcyBhY3R1YWxseSBoaXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yLmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAiX2ZpbGUuZmlsZW5vKCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgLTEsICJmaWxlbm8oKSBzaG91bGQgcmV0dXJuIC0xIikKKworY2xhc3MgTW9ja0ZpbGVJbnB1dDoKKyAgICAiIiJBIGNsYXNzIHRoYXQgbW9ja3Mgb3V0IGZpbGVpbnB1dC5GaWxlSW5wdXQgZm9yIHVzZSBkdXJpbmcgdW5pdCB0ZXN0cyIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CisgICAgICAgIHNlbGYuZmlsZXMgPSBmaWxlcworICAgICAgICBzZWxmLmlucGxhY2UgPSBpbnBsYWNlCisgICAgICAgIHNlbGYuYmFja3VwID0gYmFja3VwCisgICAgICAgIHNlbGYuYnVmc2l6ZSA9IGJ1ZnNpemUKKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQorICAgICAgICBzZWxmLm9wZW5ob29rID0gb3Blbmhvb2sKKyAgICAgICAgc2VsZi5fZmlsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYTogMCkKKyAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWVzID0ge30KKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siY2xvc2UiXSArPSAxCisKKyAgICBkZWYgbmV4dGZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbIm5leHRmaWxlIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJuZXh0ZmlsZSJdCisKKyAgICBkZWYgZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImZpbGVuYW1lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdCisKKyAgICBkZWYgbGluZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJsaW5lbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImxpbmVubyJdCisKKyAgICBkZWYgZmlsZWxpbmVubyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siZmlsZWxpbmVubyJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siZmlsZWxpbmVubyJdCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJmaWxlbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImZpbGVubyJdCisKKyAgICBkZWYgaXNmaXJzdGxpbmUoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImlzZmlyc3RsaW5lIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJpc2ZpcnN0bGluZSJdCisKKyAgICBkZWYgaXNzdGRpbihzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siaXNzdGRpbiJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siaXNzdGRpbiJdCisKK2NsYXNzIEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdW5pdCB0ZXN0cyBmb3IgdGhlIGdsb2JhbCBmdW5jdGlvbiBvZgorICAgICAgIHRoZSBmaWxlaW5wdXQgbW9kdWxlLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl9vcmlnX3N0YXRlID0gZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICBzZWxmLl9vcmlnX0ZpbGVJbnB1dCA9IGZpbGVpbnB1dC5GaWxlSW5wdXQKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IE1vY2tGaWxlSW5wdXQKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dCA9IHNlbGYuX29yaWdfRmlsZUlucHV0CisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBzZWxmLl9vcmlnX3N0YXRlCisKKyAgICBkZWYgYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oc2VsZiwgbW9ja19maWxlX2lucHV0LCBtZXRob2RfbmFtZSk6CisgICAgICAgICMgYXNzZXJ0IHRoYXQgdGhlIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBuYW1lIHdhcyBpbnZva2VkIG9uY2UKKyAgICAgICAgYWN0dWFsX2NvdW50ID0gbW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzW21ldGhvZF9uYW1lXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb3VudCwgMSwgbWV0aG9kX25hbWUpCisgICAgICAgICMgYXNzZXJ0IHRoYXQgbm8gb3RoZXIgdW5leHBlY3RlZCBtZXRob2RzIHdlcmUgaW52b2tlZAorICAgICAgICBhY3R1YWxfdG90YWxfY291bnQgPSBsZW4obW9ja19maWxlX2lucHV0Lmludm9jYXRpb25fY291bnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF90b3RhbF9jb3VudCwgMSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfaW5wdXQoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaW5wdXQoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICBhbmQgaXRzIF9maWxlIGF0dHJpYnV0ZSBpcyBhbHNvIG5vdCBOb25lLiAgRXhwZWN0IFJ1bnRpbWVFcnJvciB0bworICAgICAgICAgICBiZSByYWlzZWQgd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZSBhbmQgZm9yIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gKm5vdCogYmUgbW9kaWZpZWQuIiIiCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLl9maWxlID0gb2JqZWN0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pbnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJpbnB1dCgpIGFscmVhZHkgYWN0aXZlIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnN0YW5jZSwgZmlsZWlucHV0Ll9zdGF0ZSwgImZpbGVpbnB1dC5fc3RhdGUiKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmVfYW5kX3N0YXRlX2ZpbGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgZmlsZWlucHV0LmlucHV0KCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lCisgICAgICAgICAgIGJ1dCBpdHMgX2ZpbGUgYXR0cmlidXRlICppcyogTm9uZS4gIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybgorICAgICAgICAgICBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdCB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQKKyAgICAgICAgICAgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKSBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkIGluc3RhbmNlLiIiIgorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5fZmlsZSA9IE5vbmUKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYuZG9fdGVzdF9jYWxsX2lucHV0KCkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lCisgICAgICAgICAgIEV4cGVjdCBpdCB0byBjcmVhdGUgYW5kIHJldHVybiBhIG5ldyBmaWxlaW5wdXQuRmlsZUlucHV0IG9iamVjdAorICAgICAgICAgICB3aXRoIGFsbCBtZXRob2QgcGFyYW1ldGVycyBwYXNzZWQgZXhwbGljaXRseSB0byB0aGUgX19pbml0X18oKQorICAgICAgICAgICBtZXRob2Q7IGFsc28gZW5zdXJlIHRoYXQgZmlsZWlucHV0Ll9zdGF0ZSBpcyBzZXQgdG8gdGhlIHJldHVybmVkCisgICAgICAgICAgIGluc3RhbmNlLiIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBzZWxmLmRvX3Rlc3RfY2FsbF9pbnB1dCgpCisKKyAgICBkZWYgZG9fdGVzdF9jYWxsX2lucHV0KHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVpbnB1dC5pbnB1dCgpIGNyZWF0ZXMgYSBuZXcgZmlsZWlucHV0LkZpbGVJbnB1dAorICAgICAgICAgICBvYmplY3QsIHBhc3NpbmcgdGhlIGdpdmVuIHBhcmFtZXRlcnMgdW5tb2RpZmllZCB0bworICAgICAgICAgICBmaWxlaW5wdXQuRmlsZUlucHV0Ll9faW5pdF9fKCkuICBOb3RlIHRoYXQgdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgIG1vbmtleSBwYXRjaGluZyBvZiBmaWxlaW5wdXQuRmlsZUlucHV0IGRvbmUgYnkgc2V0VXAoKS4iIiIKKyAgICAgICAgZmlsZXMgPSBvYmplY3QoKQorICAgICAgICBpbnBsYWNlID0gb2JqZWN0KCkKKyAgICAgICAgYmFja3VwID0gb2JqZWN0KCkKKyAgICAgICAgYnVmc2l6ZSA9IG9iamVjdCgpCisgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICBvcGVuaG9vayA9IG9iamVjdCgpCisKKyAgICAgICAgIyBjYWxsIGZpbGVpbnB1dC5pbnB1dCgpIHdpdGggZGlmZmVyZW50IHZhbHVlcyBmb3IgZWFjaCBhcmd1bWVudAorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMsIGlucGxhY2U9aW5wbGFjZSwgYmFja3VwPWJhY2t1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9YnVmc2l6ZSwKKyAgICAgICAgICAgIG1vZGU9bW9kZSwgb3Blbmhvb2s9b3Blbmhvb2spCisKKyAgICAgICAgIyBlbnN1cmUgZmlsZWlucHV0Ll9zdGF0ZSB3YXMgc2V0IHRvIHRoZSByZXR1cm5lZCBvYmplY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIGZpbGVpbnB1dC5fc3RhdGUsICJmaWxlaW5wdXQuX3N0YXRlIikKKworICAgICAgICAjIGVuc3VyZSB0aGUgcGFyYW1ldGVycyB0byBmaWxlaW5wdXQuaW5wdXQoKSB3ZXJlIHBhc3NlZCBkaXJlY3RseQorICAgICAgICAjIHRvIEZpbGVJbnB1dC5fX2luaXRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZXMsIHJlc3VsdC5maWxlcywgImZpbGVzIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhpbnBsYWNlLCByZXN1bHQuaW5wbGFjZSwgImlucGxhY2UiKQorICAgICAgICBzZWxmLmFzc2VydElzKGJhY2t1cCwgcmVzdWx0LmJhY2t1cCwgImJhY2t1cCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnVmc2l6ZSwgcmVzdWx0LmJ1ZnNpemUsICJidWZzaXplIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2RlLCByZXN1bHQubW9kZSwgIm1vZGUiKQorICAgICAgICBzZWxmLmFzc2VydElzKG9wZW5ob29rLCByZXN1bHQub3Blbmhvb2ssICJvcGVuaG9vayIpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2Nsb3NlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmNsb3NlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgZG9lcyBub3RoaW5nIGlmIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgaXMgTm9uZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICBmaWxlaW5wdXQuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIHRoYXQgZmlsZWlucHV0LmNsb3NlKCkgaW52b2tlcyBjbG9zZSgpIG9uIGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgYW5kIHNldHMgX3N0YXRlPU5vbmUiIiIKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIGZpbGVpbnB1dC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJjbG9zZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X25leHRmaWxlKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lm5leHRmaWxlKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5uZXh0ZmlsZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5uZXh0ZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lm5leHRmaWxlKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubmV4dGZpbGUoKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgbmV4dGZpbGVfcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1sibmV4dGZpbGUiXSA9IG5leHRmaWxlX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lm5leHRmaWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgIm5leHRmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIG5leHRmaWxlX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5hbWUoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZW5hbWUoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVuYW1lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVuYW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5hbWUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5maWxlbmFtZSgpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbmFtZV9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbmFtZSJdID0gZmlsZW5hbWVfcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5hbWUoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZW5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgZmlsZW5hbWVfcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9saW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQubGluZW5vKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5saW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQubGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUubGluZW5vKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJsaW5lbm8iXSA9IGxpbmVub19yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5saW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAibGluZW5vIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGxpbmVub19yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuZmlsZWxpbmVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5maWxlbGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZWxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVsaW5lbm8oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgZmlsZWxpbmVub19yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJmaWxlbGluZW5vIl0gPSBmaWxlbGluZW5vX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmZpbGVsaW5lbm8oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiZmlsZWxpbmVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbGluZW5vX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfZmlsZW5vKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmZpbGVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuZmlsZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmZpbGVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmZpbGVubygpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBmaWxlbm9fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siZmlsZW5vIl0gPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGluc3RhbmNlLmZpbGVub19yZXR2YWwgPSBmaWxlbm9fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuZmlsZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImZpbGVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBmaWxlbm9fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9pc2ZpcnN0bGluZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzZmlyc3RsaW5lKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGlzZmlyc3RsaW5lX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImlzZmlyc3RsaW5lIl0gPSBpc2ZpcnN0bGluZV9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5pc2ZpcnN0bGluZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJpc2ZpcnN0bGluZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc2ZpcnN0bGluZV9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4oQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaXNzdGRpbigpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5pc3N0ZGluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNzdGRpbigpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmlzc3RkaW4oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgaXNzdGRpbl9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJpc3N0ZGluIl0gPSBpc3N0ZGluX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0Lmlzc3RkaW4oKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiaXNzdGRpbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBpc3N0ZGluX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgSW52b2NhdGlvblJlY29yZGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50ID0gMAorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnQgKz0gMQorICAgICAgICBzZWxmLmxhc3RfaW52b2NhdGlvbiA9IChhcmdzLCBrd2FyZ3MpCisKK2NsYXNzIFRlc3RfaG9va19jb21wcmVzc2VkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKCkiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiIiwgMSkKKworICAgIGRlZiB0ZXN0X25vX2V4dChzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QiLCAyKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ3ppcCwgIlJlcXVpcmVzIGd6aXAgYW5kIHpsaWIiKQorICAgIGRlZiB0ZXN0X2d6X2V4dF9mYWtlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gZ3ppcC5vcGVuCisgICAgICAgIGd6aXAub3BlbiA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuZ3oiLCAzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZ3ppcC5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuZ3oiLCAzKSwge30pKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoYnoyLCAiUmVxdWlyZXMgYnoyIikKKyAgICBkZWYgdGVzdF9iejJfZXh0X2Zha2Uoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBiejIuQloyRmlsZSA9IHNlbGYuZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoInRlc3QuYnoyIiwgNCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6Mi5CWjJGaWxlID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sICgoInRlc3QuYnoyIiwgNCksIHt9KSkKKworICAgIGRlZiB0ZXN0X2JsYWhfZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5ibGFoIiwgNSkKKworICAgIGRlZiB0ZXN0X2d6X2V4dF9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5HeiIsIDYpCisKKyAgICBkZWYgdGVzdF9iejJfZXh0X2J1aWx0aW4oc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkLkJ6MiIsIDcpCisKKyAgICBkZWYgZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKHNlbGYsIGZpbGVuYW1lLCBtb2RlKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IHNlbGYucmVwbGFjZV9idWlsdGluX29wZW4oc2VsZi5mYWtlX29wZW4pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2NvbXByZXNzZWQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnJlcGxhY2VfYnVpbHRpbl9vcGVuKG9yaWdpbmFsX29wZW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpbGVuYW1lLCBtb2RlKSwge30pKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiByZXBsYWNlX2J1aWx0aW5fb3BlbihuZXdfb3Blbl9mdW5jKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KKyAgICAgICAgYnVpbHRpbnMub3BlbiA9IG5ld19vcGVuX2Z1bmMKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsX29wZW4KKworY2xhc3MgVGVzdF9ob29rX2VuY29kZWQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSIiIgorCisgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKworICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQorICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgorICAgICAgICBidWlsdGlucy5vcGVuID0gZmFrZV9vcGVuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb2JqZWN0KCkKKyAgICAgICAgICAgIG1vZGUgPSBvYmplY3QoKQorICAgICAgICAgICAgb3Blbl9yZXN1bHQgPSByZXN1bHQoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBidWlsdGlucy5vcGVuID0gb3JpZ2luYWxfb3BlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisKKyAgICAgICAgYXJncywga3dhcmdzID0gZmFrZV9vcGVuLmxhc3RfaW52b2NhdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1ZmZlclNpemVzVGVzdHMsIEZpbGVJbnB1dFRlc3RzKQorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQnVmZmVyU2l6ZXNUZXN0cywKKyAgICAgICAgRmlsZUlucHV0VGVzdHMsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lucHV0LAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9jbG9zZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfbmV4dGZpbGUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVuYW1lLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9saW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVsaW5lbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2ZpbGVubywKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfaXNmaXJzdGxpbmUsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lzc3RkaW4sCisgICAgICAgIFRlc3RfaG9va19jb21wcmVzc2VkLAorICAgICAgICBUZXN0X2hvb2tfZW5jb2RlZCwKKyAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKaW5kZXggNTUwNGVhMy4uOTA2OTUyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgZXJybm8KIGltcG9ydCB1bml0dGVzdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKQEAgLTM0NywxMCArMzQ4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQogICAgICAgICBmLnRydW5jYXRlKDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDEwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBvcy5TRUVLX0VORCksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIGlvLlNFRUtfRU5EKSwgNSkKICAgICAgICAgZi50cnVuY2F0ZSgxNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgb3MuU0VFS19FTkQpLCAxNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgaW8uU0VFS19FTkQpLCAxNSkKICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdFRydW5jYXRlT25XaW5kb3dzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggNGQ3YmJiYS4uNTAyMjkyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAiICAtMHgzLnAtMSAgIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICIgICsweDMucC0xICAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KCIgIDI1LmUtMSAgIiksIDIuNSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmZjbXAoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoIiAgLjI1ZS0xICAiKSwgLjAyNSkKIAogICAgIGRlZiB0ZXN0X2Zsb2F0Y29udmVyc2lvbihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBjYWxscyB0byBfX2Zsb2F0X18oKSB3b3JrIHByb3Blcmx5CkBAIC04NjAsMTUgKzg2MCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigxZTMwMCAqIDFlMzAwICogMCksICJuYW4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cigtMWUzMDAgKiAxZTMwMCAqIDApLCAibmFuIikKIAotICAgIGRlZiBub3Rlc3RfZmxvYXRfbmFuKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoTkFOLmlzX25hbigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKElORi5pc19uYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMC4pLmlzX25hbigpKQorICAgIGRlZiB0ZXN0X2luZl9zaWducyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCdpbmYnKSksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCctaW5mJykpLCAtMS4wKQogCi0gICAgZGVmIG5vdGVzdF9mbG9hdF9pbmYoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTkYuaXNfaW5mKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoTkFOLmlzX2luZigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgwLikuaXNfaW5mKCkpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihzeXMsICdmbG9hdF9yZXByX3N0eWxlJywgJycpID09ICdzaG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGxpZXMgb25seSB3aGVuIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIgc3R5bGUiKQorICAgIGRlZiB0ZXN0X25hbl9zaWducyhzZWxmKToKKyAgICAgICAgIyBXaGVuIHVzaW5nIHRoZSBkdG9hLmMgY29kZSwgdGhlIHNpZ24gb2YgZmxvYXQoJ25hbicpIHNob3VsZAorICAgICAgICAjIGJlIHByZWRpY3RhYmxlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJ25hbicpKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlzaWduKDEuMCwgZmxvYXQoJy1uYW4nKSksIC0xLjApCisKIAogZnJvbUhleCA9IGZsb2F0LmZyb21oZXgKIHRvSGV4ID0gZmxvYXQuaGV4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDdmYTk1MGQuLmI2ZTI1NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0xLDQgKzEsNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRlc3RGYWlsZWQKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXN0LnN1cHBvcnQgYXMgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNjMsNiArMjY0LDUxIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoJyIlKmQiJShtYXhzaXplLCAtMTI3KSBzaG91bGQgZmFpbCcpCiAKKyAgICBkZWYgdGVzdF9ub25fYXNjaWkoc2VsZik6CisgICAgICAgIHRlc3Rmb3JtYXQoIlx1MjBhYz0lZiIsICgxLjAsKSwgIlx1MjBhYz0xLjAwMDAwMCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoImFiYyIsICJcdTIwMDc8NSIpLCAiYWJjXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzLCAiXHUyMDA3PDUiKSwgIjEyM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyLjMsICJcdTIwMDc8NiIpLCAiMTIuM1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PDQiKSwgIjBqXHUyMDA3XHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwNzw4IiksICIoMSsyailcdTIwMDdcdTIwMDciKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KCJhYmMiLCAiXHUyMDA3PjUiKSwgIlx1MjAwN1x1MjAwN2FiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMywgIlx1MjAwNz41IiksICJcdTIwMDdcdTIwMDcxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMi4zLCAiXHUyMDA3PjYiKSwgIlx1MjAwN1x1MjAwNzEyLjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxKzJqLCAiXHUyMDA3PjgiKSwgIlx1MjAwN1x1MjAwNygxKzJqKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDBqLCAiXHUyMDA3PjQiKSwgIlx1MjAwN1x1MjAwNzBqIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgiYWJjIiwgIlx1MjAwN141IiksICJcdTIwMDdhYmNcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjMsICJcdTIwMDdeNSIpLCAiXHUyMDA3MTIzXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIuMywgIlx1MjAwN142IiksICJcdTIwMDcxMi4zXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwN144IiksICJcdTIwMDcoMSsyailcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgwaiwgIlx1MjAwN140IiksICJcdTIwMDcwalx1MjAwNyIpCisKKyAgICBkZWYgdGVzdF9sb2NhbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9sZGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgJycpCisgICAgICAgIGV4Y2VwdCBsb2NhbGUuRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQ2Fubm90IHNldCBsb2NhbGU6IHt9Ii5mb3JtYXQoZXJyKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9jYWxlY29udiA9IGxvY2FsZS5sb2NhbGVjb252KCkKKyAgICAgICAgICAgIHNlcCA9IGxvY2FsZWNvbnZbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICAgICAgcG9pbnQgPSBsb2NhbGVjb252WydkZWNpbWFsX3BvaW50J10KKworICAgICAgICAgICAgdGV4dCA9IGZvcm1hdCgxMjM0NTY3ODksICJuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VwLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0NTY3ODknKQorCisgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0KDEyMzQuNSwgIm4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZXAsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBvaW50LCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnJlcGxhY2Uoc2VwLCAnJyksICcxMjM0JyArIHBvaW50ICsgJzUnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBvbGRsb2MpCisKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm9ybWF0VGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCAwODRhZTBjLi4xZmFkOTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtNDAxLDE0ICs0MDEsMTAgQEAKIAogICAgIGRlZiB0ZXN0TWl4aW5nV2l0aERlY2ltYWwoc2VsZik6CiAgICAgICAgICMgRGVjaW1hbCByZWZ1c2VzIG1peGVkIGFyaXRobWV0aWMgKGJ1dCBub3QgbWl4ZWQgY29tcGFyaXNvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGUocykgZm9yICs6ICdGcmFjdGlvbicgYW5kICdEZWNpbWFsJyIsCi0gICAgICAgICAgICBvcGVyYXRvci5hZGQsIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciArOiAnRGVjaW1hbCcgYW5kICdGcmFjdGlvbiciLAotICAgICAgICAgICAgb3BlcmF0b3IuYWRkLCBEZWNpbWFsKCczLjE0MTU5MjYnKSwgRigzLDExKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEYoMywxMSksIERlY2ltYWwoJzMuMTQxNTkyNicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnMy4xNDE1OTI2JyksIEYoMywxMSkpCiAKICAgICBkZWYgdGVzdENvbXBhcmlzb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoRigxLCAyKSA8IEYoMiwgMykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weSBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CmluZGV4IDUyNDNlYmIuLmZkNjc2MWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJvemVuLnB5CkBAIC01LDYgKzUsMTIgQEAKIGltcG9ydCBzeXMKIAogY2xhc3MgRnJvemVuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlX2F0dHJzID0gZnJvemVuc2V0KFsnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nXSkKKyAgICBwYWNrYWdlX2F0dHJzID0gZnJvemVuc2V0KGxpc3QobW9kdWxlX2F0dHJzKSArIFsnX19wYXRoX18nXSkKKwogICAgIGRlZiB0ZXN0X2Zyb3plbihzZWxmKToKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICB0cnk6CkBAIC0xMiw3ICsxOCw5IEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX2hlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9faGVsbG9fXy5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX2hlbGxvX18pKSwgNywgZGlyKF9faGVsbG9fXykpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5tb2R1bGVfYXR0cnMpCisgICAgICAgICAgICBleHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19oZWxsb19fKSksIGV4cGVjdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CkBAIC0yMSwxMCArMjksMTMgQEAKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB4OgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiaW1wb3J0IF9fcGhlbGxvX18gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uaW5pdGlhbGl6ZWQsIFRydWUpCisgICAgICAgICAgICBleHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQogICAgICAgICAgICAgaWYgbm90ICJfX3BoZWxsb19fLnNwYW0iIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDgsIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDksIGRpcihfX3BoZWxsb19fKSkKKyAgICAgICAgICAgICAgICBleHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uX19wYXRoX18sIFtfX3BoZWxsb19fLl9fbmFtZV9fXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICdIZWxsbyB3b3JsZCFcbicpCiAKQEAgLTM0LDggKzQ1LDEzIEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX3BoZWxsb19fLnNwYW0gZmFpbGVkOiIgKyBzdHIoeCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9fcGhlbGxvX18uc3BhbS5pbml0aWFsaXplZCwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fLnNwYW0pKSwgNykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcihfX3BoZWxsb19fKSksIDkpCisgICAgICAgICAgICBzcGFtX2V4cGVjdCA9IHNldChzZWxmLm1vZHVsZV9hdHRycykKKyAgICAgICAgICAgIHNwYW1fZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18uc3BhbSkpLCBzcGFtX2V4cGVjdCkKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QgPSBzZXQoc2VsZi5wYWNrYWdlX2F0dHJzKQorICAgICAgICAgICAgcGhlbGxvX2V4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QuYWRkKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fKSksIHBoZWxsb19leHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQogCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggNzFiYzIzZS4uNzAyOGY0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTIyLDEwICsyMiwyNSBAQAogdGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiAjIHRoZSBkdW1teSBkYXRhIHJldHVybmVkIGJ5IHNlcnZlciBvdmVyIHRoZSBkYXRhIGNoYW5uZWwgd2hlbgotIyBSRVRSLCBMSVNUIGFuZCBOTFNUIGNvbW1hbmRzIGFyZSBpc3N1ZWQKKyMgUkVUUiwgTElTVCwgTkxTVCwgTUxTRCBjb21tYW5kcyBhcmUgaXNzdWVkCiBSRVRSX0RBVEEgPSAnYWJjZGUxMjM0NVxyXG4nICogMTAwMAogTElTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJwogTkxTVF9EQVRBID0gJ2Zvb1xyXG5iYXJcclxuJworTUxTRF9EQVRBID0gKCJ0eXBlPWNkaXI7cGVybT1lbDt1bmlxdWU9PWtlVk8xK1pGNDsgdGVzdFxyXG4iCisgICAgICAgICAgICAgInR5cGU9cGRpcjtwZXJtPWU7dW5pcXVlPT1rZVZPMStkPzM7IC4uXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1PUy51bml4PXNsaW5rOi9mb29iYXI7cGVybT07dW5pcXVlPT1rZVZPMSs0RzQ7IGZvb2JhclxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1jaHItMTMvMjk7cGVybT07dW5pcXVlPT1rZVZPMSs1RzQ7IGRldmljZVxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1ibGstMTEvMTA4O3Blcm09O3VuaXF1ZT09a2VWTzErNkc0OyBibG9ja1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPWF3cjt1bmlxdWU9PWtlVk8xKzhHNDsgd3JpdGFibGVcclxuIgorICAgICAgICAgICAgICJ0eXBlPWRpcjtwZXJtPWNwbWVsO3VuaXF1ZT09a2VWTzErN0c0OyBwcm9taXNjdW91c1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09O3VuaXF1ZT09a2VWTzErMXQyOyBuby1leGVjXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0VHNDsgdHdvIHdvcmRzXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xK0lINDsgIGxlYWRpbmcgc3BhY2VcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlMVxyXG4iCisgICAgICAgICAgICAgInR5cGU9ZGlyO3Blcm09Y3BtZWw7dW5pcXVlPT1rZVZPMSs3RzQ7IGluY29taW5nXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTJcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlM1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGU0XHJcbiIpCiAKIAogY2xhc3MgRHVtbXlEVFBIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgpAQCAtNDksNiArNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuZHRwX2Nvbm5fY2xvc2VkID0gVHJ1ZQogCiAgICAgZGVmIHB1c2goc2VsZiwgd2hhdCk6CisgICAgICAgIGlmIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdoYXQgPSBzZWxmLmJhc2VjbGFzcy5uZXh0X2RhdGEKKyAgICAgICAgICAgIHNlbGYuYmFzZWNsYXNzLm5leHRfZGF0YSA9IE5vbmUKKyAgICAgICAgaWYgbm90IHdoYXQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jbG9zZV93aGVuX2RvbmUoKQogICAgICAgICBzdXBlcihEdW1teURUUEhhbmRsZXIsIHNlbGYpLnB1c2god2hhdC5lbmNvZGUoJ2FzY2lpJykpCiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgpAQCAtNjksNiArODksNyBAQAogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfY21kID0gTm9uZQogICAgICAgICBzZWxmLmxhc3RfcmVjZWl2ZWRfZGF0YSA9ICcnCiAgICAgICAgIHNlbGYubmV4dF9yZXNwb25zZSA9ICcnCisgICAgICAgIHNlbGYubmV4dF9kYXRhID0gTm9uZQogICAgICAgICBzZWxmLnJlc3QgPSBOb25lCiAgICAgICAgIHNlbGYucHVzaCgnMjIwIHdlbGNvbWUnKQogCkBAIC0xMDQsNyArMTI1LDcgQEAKICAgICAgICAgYWRkciA9IGxpc3QobWFwKGludCwgYXJnLnNwbGl0KCcsJykpKQogICAgICAgICBpcCA9ICclZC4lZC4lZC4lZCcgJXR1cGxlKGFkZHJbOjRdKQogICAgICAgICBwb3J0ID0gKGFkZHJbNF0gKiAyNTYpICsgYWRkcls1XQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0xMjIsNyArMTQzLDcgQEAKICAgICBkZWYgY21kX2VwcnQoc2VsZiwgYXJnKToKICAgICAgICAgYWYsIGlwLCBwb3J0ID0gYXJnLnNwbGl0KGFyZ1swXSlbMTotMV0KICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MTApCisgICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGlwLCBwb3J0KSwgdGltZW91dD0yKQogICAgICAgICBzZWxmLmR0cCA9IHNlbGYuZHRwX2hhbmRsZXIocywgYmFzZWNsYXNzPXNlbGYpCiAgICAgICAgIHNlbGYucHVzaCgnMjAwIGFjdGl2ZSBkYXRhIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQnKQogCkBAIC0yMTMsNiArMjM0LDE0IEBACiAgICAgICAgIHNlbGYuZHRwLnB1c2goTkxTVF9EQVRBKQogICAgICAgICBzZWxmLmR0cC5jbG9zZV93aGVuX2RvbmUoKQogCisgICAgZGVmIGNtZF9vcHRzKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMjAwIG9wdHMgb2snKQorCisgICAgZGVmIGNtZF9tbHNkKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnMTI1IG1sc2Qgb2snKQorICAgICAgICBzZWxmLmR0cC5wdXNoKE1MU0RfREFUQSkKKyAgICAgICAgc2VsZi5kdHAuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teUZUUFNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMjc0LDExICszMDMsMTEgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCiAKQEAgLTMxMyw3ICszNDIsMTAgQEAKICAgICAgICAgICAgICAgICAjIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9vcGVuc3NsLXVzZXJzQG9wZW5zc2wub3JnL21zZzYwNzEwLmh0bWwKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLl9zc2xfY2xvc2luZyA9IEZhbHNlCi0gICAgICAgICAgICBzdXBlcihTU0xDb25uZWN0aW9uLCBzZWxmKS5jbG9zZSgpCisgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfY2NjJywgRmFsc2UpID09IEZhbHNlOgorICAgICAgICAgICAgICAgIHN1cGVyKFNTTENvbm5lY3Rpb24sIHNlbGYpLmNsb3NlKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlZiBoYW5kbGVfcmVhZF9ldmVudChzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NzbF9hY2NlcHRpbmc6CkBAIC0zODEsMTIgKzQxMywxOCBAQAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgICAgICBEdW1teUZUUEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgIHNlbGYuc2VjdXJlX2RhdGFfY2hhbm5lbCA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9jY2MgPSBGYWxzZQogCiAgICAgICAgIGRlZiBjbWRfYXV0aChzZWxmLCBsaW5lKToKICAgICAgICAgICAgICIiIlNldCB1cCBzZWN1cmUgY29udHJvbCBjaGFubmVsLiIiIgogICAgICAgICAgICAgc2VsZi5wdXNoKCcyMzQgQVVUSCBUTFMgc3VjY2Vzc2Z1bCcpCiAgICAgICAgICAgICBzZWxmLnNlY3VyZV9jb25uZWN0aW9uKCkKIAorICAgICAgICBkZWYgY21kX2NjYyhzZWxmLCBsaW5lKToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjIwIFJldmVydGluZyBiYWNrIHRvIGNsZWFyLXRleHQnKQorICAgICAgICAgICAgc2VsZi5fY2NjID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZG9fc3NsX3NodXRkb3duKCkKKwogICAgICAgICBkZWYgY21kX3Bic3ooc2VsZiwgbGluZSk6CiAgICAgICAgICAgICAiIiJOZWdvdGlhdGUgc2l6ZSBvZiBidWZmZXIgZm9yIHNlY3VyZSBkYXRhIHRyYW5zZmVyLgogICAgICAgICAgICAgRm9yIFRMUy9TU0wgdGhlIG9ubHkgdmFsaWQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIgaXMgJzAnLgpAQCAtNDE2LDEzICs0NTQsMTcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCh0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFAodGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKKyAgICBkZWYgY2hlY2tfZGF0YShzZWxmLCByZWNlaXZlZCwgZXhwZWN0ZWQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNlaXZlZCksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfZ2V0d2VsY29tZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC5nZXR3ZWxjb21lKCksICcyMjAgd2VsY29tZScpCiAKQEAgLTUwNCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHNlbGYuY2xpZW50LnJldHJiaW5hcnkoJ3JldHInLCBjYWxsYmFjaykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKIAogICAgIGRlZiB0ZXN0X3JldHJiaW5hcnlfcmVzdChzZWxmKToKICAgICAgICAgZGVmIGNhbGxiYWNrKGRhdGEpOgpAQCAtNTEyLDIwICs1NTQsMTcgQEAKICAgICAgICAgZm9yIHJlc3QgaW4gKDAsIDEwLCAyMCk6CiAgICAgICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5yZXRyYmluYXJ5KCdyZXRyJywgY2FsbGJhY2ssIHJlc3Q9cmVzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0ncmVzdCB0ZXN0IGNhc2UgJWQgJWQgJWQnICUgKHJlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbignJy5qb2luKHJlY2VpdmVkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihSRVRSX0RBVEFbcmVzdDpdKSkpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2RhdGEoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQVtyZXN0Ol0pCiAKICAgICBkZWYgdGVzdF9yZXRybGluZXMoc2VsZik6CiAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgc2VsZi5jbGllbnQucmV0cmxpbmVzKCdyZXRyJywgcmVjZWl2ZWQuYXBwZW5kKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICcnKSkKIAogICAgIGRlZiB0ZXN0X3N0b3JiaW5hcnkoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5lbmNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHNlbGYuY2xpZW50LnN0b3JiaW5hcnkoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NDIsNyArNTgxLDcgQEAKICAgICBkZWYgdGVzdF9zdG9ybGluZXMoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKFJFVFJfREFUQS5yZXBsYWNlKCdcclxuJywgJ1xuJykuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzZWxmLmNsaWVudC5zdG9ybGluZXMoJ3N0b3InLCBmKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9kYXRhLCBSRVRSX0RBVEEpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YShzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQogICAgICAgICAjIHRlc3QgbmV3IGNhbGxiYWNrIGFyZwogICAgICAgICBmbGFnID0gW10KICAgICAgICAgZi5zZWVrKDApCkBAIC01NTgsNiArNTk3LDY0IEBACiAgICAgICAgIHNlbGYuY2xpZW50LmRpcihsYW1iZGEgeDogbC5hcHBlbmQoeCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihsKSwgTElTVF9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnJykpCiAKKyAgICBkZWYgdGVzdF9tbHNkKHNlbGYpOgorICAgICAgICBsaXN0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nKSkKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKHBhdGg9Jy8nLCBmYWN0cz1bJ3NpemUnLCAndHlwZSddKSkKKworICAgICAgICBscyA9IGxpc3Qoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBmb3IgbmFtZSwgZmFjdHMgaW4gbHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobmFtZSwgc3RyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZhY3RzLCBkaWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0eXBlJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwZXJtJywgZmFjdHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd1bmlxdWUnLCBmYWN0cykKKworICAgICAgICBkZWYgc2V0X2RhdGEoZGF0YSk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLm5leHRfZGF0YSA9IGRhdGEKKworICAgICAgICBkZWYgdGVzdF9lbnRyeShsaW5lLCB0eXBlPU5vbmUsIHBlcm09Tm9uZSwgdW5pcXVlPU5vbmUsIG5hbWU9Tm9uZSk6CisgICAgICAgICAgICB0eXBlID0gJ3R5cGUnIGlmIHR5cGUgaXMgTm9uZSBlbHNlIHR5cGUKKyAgICAgICAgICAgIHBlcm0gPSAncGVybScgaWYgcGVybSBpcyBOb25lIGVsc2UgcGVybQorICAgICAgICAgICAgdW5pcXVlID0gJ3VuaXF1ZScgaWYgdW5pcXVlIGlzIE5vbmUgZWxzZSB1bmlxdWUKKyAgICAgICAgICAgIG5hbWUgPSAnbmFtZScgaWYgbmFtZSBpcyBOb25lIGVsc2UgbmFtZQorICAgICAgICAgICAgc2V0X2RhdGEobGluZSkKKyAgICAgICAgICAgIF9uYW1lLCBmYWN0cyA9IG5leHQoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3R5cGUnXSwgdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3Blcm0nXSwgcGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFjdHNbJ3VuaXF1ZSddLCB1bmlxdWUpCisKKyAgICAgICAgIyBwbGFpbgorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgIyAiPSIgaW4gZmFjdCB2YWx1ZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InR5PXBlIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT09dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9dHlwZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dD15PXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicsIHR5cGU9InQ9eT1wZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9PT09PTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSI9PT09IikKKyAgICAgICAgIyBzcGFjZXMgaW4gbmFtZQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hIG1lXHJcbicsIG5hbWU9Im5hIG1lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lIFxyXG4nLCBuYW1lPSJuYW1lICIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgIG5hbWVcclxuJywgbmFtZT0iIG5hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG4gYW0gIGVcclxuJywgbmFtZT0ibiBhbSAgZSIpCisgICAgICAgICMgIjsiIGluIG5hbWUKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYTttZVxyXG4nLCBuYW1lPSJuYTttZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgO25hbWVcclxuJywgbmFtZT0iO25hbWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDtuYW1lO1xyXG4nLCBuYW1lPSI7bmFtZTsiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDs7OztcclxuJywgbmFtZT0iOzs7OyIpCisgICAgICAgICMgY2FzZSBzZW5zaXRpdmVuZXNzCisgICAgICAgIHNldF9kYXRhKCdUeXBlPXR5cGU7VHlQZT1wZXJtO1VOSVFVRT11bmlxdWU7IG5hbWVcclxuJykKKyAgICAgICAgX25hbWUsIGZhY3RzID0gbmV4dChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIGZvciB4IGluIGZhY3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguaXNsb3dlcigpKQorICAgICAgICAjIG5vIGRhdGEgKGRpcmVjdG9yeSBlbXB0eSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgc2V0X2RhdGEoJycpCisgICAgICAgIGZvciB4IGluIHNlbGYuY2xpZW50Lm1sc2QoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIGRhdGEpCisKICAgICBkZWYgdGVzdF9tYWtlcG9ydChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC5tYWtlcG9ydCgpOgogICAgICAgICAgICAgIyBJUHY0IGlzIGluIHVzZSwganVzdCBtYWtlIHN1cmUgc2VuZF9lcHJ0IGhhcyBub3QgYmVlbiB1c2VkCkBAIC01ODQsNyArNjgxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAgIyBiYXNlIHRlc3QKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKQEAgLTU5Miw3ICs2ODksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2NsaWVudF9jb25uZWN0ZWQoKSkKIAogICAgICAgICAjIFFVSVQgc2VudCBpbnNpZGUgdGhlIHdpdGggYmxvY2sKLSAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCkBAIC02MDIsNyArNjk5LDcgQEAKICAgICAgICAgIyBmb3JjZSBhIHdyb25nIHJlc3BvbnNlIGNvZGUgdG8gYmUgc2VudCBvbiBRVUlUOiBlcnJvcl9wZXJtCiAgICAgICAgICMgaXMgZXhwZWN0ZWQgYW5kIHRoZSBjb25uZWN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIGNsb3NlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0xMCkgYXMgc2VsZi5jbGllbnQ6CisgICAgICAgICAgICB3aXRoIGZ0cGxpYi5GVFAodGltZW91dD0yKSBhcyBzZWxmLmNsaWVudDoKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuc2VuZGNtZCgnbm9vcCcpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5uZXh0X3Jlc3BvbnNlID0gJzU1MCBlcnJvciBvbiBxdWl0JwpAQCAtNjE2LDYgKzcxMywzMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubGFzdF9yZWNlaXZlZF9jbWQsICdxdWl0JykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jbGllbnRfY29ubmVjdGVkKCkpCiAKKyAgICBkZWYgdGVzdF9zb3VyY2VfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9hZGRyZXNzPShIT1NULCBwb3J0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQorICAgICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc291cmNlX2FkZHJlc3NfcGFzc2l2ZV9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuc291cmNlX2FkZHJlc3MgPSAoSE9TVCwgcG9ydCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmdldHNvY2tuYW1lKClbMV0sIHBvcnQpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVBRERSSU5VU0U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY291bGRuJ3QgYmluZCB0byBwb3J0ICVkIiAlIHBvcnQpCisgICAgICAgICAgICByYWlzZQorCiAgICAgZGVmIHRlc3RfcGFyc2UyNTcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwbGliLnBhcnNlMjU3KCcyNTcgIi9mb28vYmFyIicpLCAnL2Zvby9iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cGxpYi5wYXJzZTI1NygnMjU3ICIvZm9vL2JhciIgY3JlYXRlZCcpLCAnL2Zvby9iYXInKQpAQCAtNjMyLDcgKzc1Myw3IEBACiBjbGFzcyBUZXN0SVB2NkVudmlyb25tZW50KFRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teUZUUFNlcnZlcigoJzo6MScsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKCkKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQpAQCAtNjYxLDYgKzc4Miw3IEBACiAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKGRhdGEuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICAgICAgc2VsZi5jbGllbnQucmV0cmJpbmFyeSgncmV0cicsIGNhbGxiYWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oJycuam9pbihyZWNlaXZlZCkpLCBsZW4oUkVUUl9EQVRBKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKICAgICAgICAgc2VsZi5jbGllbnQuc2V0X3Bhc3YoVHJ1ZSkKICAgICAgICAgcmV0cigpCkBAIC02NzYsNyArNzk4LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlUTFNfRlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICMgZW5hYmxlIFRMUwogICAgICAgICBzZWxmLmNsaWVudC5hdXRoKCkKQEAgLTY4OSw3ICs4MTEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVRMU19GVFBTZXJ2ZXIoKEhPU1QsIDApKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc0OSw3ICs4NzEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdHBsaWIuRlRQX1RMUywgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIGNvbnRleHQ9Y3R4KQogCi0gICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFMoY29udGV4dD1jdHgsIHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uoc2VsZi5jbGllbnQuc29jaywgc3NsLlNTTFNvY2tldCkKICAgICAgICAgc2VsZi5jbGllbnQuYXV0aCgpCkBAIC03NjEsNiArODgzLDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNvY2suY29udGV4dCwgY3R4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCiAKKyAgICBkZWYgdGVzdF9jY2Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuY2xpZW50LmNjYykKKyAgICAgICAgc2VsZi5jbGllbnQubG9naW4oc2VjdXJlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmNsaWVudC5zb2NrLCBzc2wuU1NMU29ja2V0KQorICAgICAgICBzZWxmLmNsaWVudC5jY2MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5zb2NrLnVud3JhcCkKKwogCiBjbGFzcyBUZXN0VGltZW91dHMoVGVzdENhc2UpOgogCkBAIC04NTcsMTMgKzk4Niw4IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0c10KLSAgICBpZiBzb2NrZXQuaGFzX2lwdjY6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIER1bW15RlRQU2VydmVyKChIT1NULCAwKSwgYWY9c29ja2V0LkFGX0lORVQ2KQotICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3RJUHY2RW52aXJvbm1lbnQpCisgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6CisgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0SVB2NkVudmlyb25tZW50KQogCiAgICAgaWYgc3NsIGlzIG5vdCBOb25lOgogICAgICAgICB0ZXN0cy5leHRlbmQoW1Rlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzc10pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CmluZGV4IDRkMTkzNjguLmM4ZWQ4MzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CkBAIC0yLDYgKzIsMTUgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKKworZGVmIGdsb2JhbF9mdW5jdGlvbigpOgorICAgIGRlZiBpbm5lcl9mdW5jdGlvbigpOgorICAgICAgICBjbGFzcyBMb2NhbENsYXNzOgorICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gTG9jYWxDbGFzcworICAgIHJldHVybiBsYW1iZGE6IGlubmVyX2Z1bmN0aW9uCisKKwogY2xhc3MgRnVuY0F0dHJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBjbGFzcyBGOgpAQCAtOTYsNiArMTA1LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5maS5hLl9fbmFtZV9fLCAnYScpCiAgICAgICAgIHNlbGYuY2Fubm90X3NldF9hdHRyKHNlbGYuZmkuYSwgIl9fbmFtZV9fIiwgJ2EnLCBBdHRyaWJ1dGVFcnJvcikKIAorICAgIGRlZiB0ZXN0X19fcXVhbG5hbWVfXyhzZWxmKToKKyAgICAgICAgIyBQRVAgMzE1NQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdGdW5jQXR0cnNUZXN0LnNldFVwLjxsb2NhbHM+LmInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZ1bmNBdHRyc1Rlc3Quc2V0VXAuX19xdWFsbmFtZV9fLCAnRnVuY0F0dHJzVGVzdC5zZXRVcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uLl9fcXVhbG5hbWVfXywgJ2dsb2JhbF9mdW5jdGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX2Z1bmN0aW9uKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uPGxhbWJkYT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uaW5uZXJfZnVuY3Rpb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpKCkoKS5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbF9mdW5jdGlvbi48bG9jYWxzPi5pbm5lcl9mdW5jdGlvbi48bG9jYWxzPi5Mb2NhbENsYXNzJykKKyAgICAgICAgc2VsZi5iLl9fcXVhbG5hbWVfXyA9ICdjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdjJykKKyAgICAgICAgc2VsZi5iLl9fcXVhbG5hbWVfXyA9ICdkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYi5fX3F1YWxuYW1lX18sICdkJykKKyAgICAgICAgIyBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0cmluZworICAgICAgICBzZWxmLmNhbm5vdF9zZXRfYXR0cihzZWxmLmIsICdfX3F1YWxuYW1lX18nLCA3LCBUeXBlRXJyb3IpCisKICAgICBkZWYgdGVzdF9fX2NvZGVfXyhzZWxmKToKICAgICAgICAgbnVtX29uZSwgbnVtX3R3byA9IDcsIDgKICAgICAgICAgZGVmIGEoKTogcGFzcwpAQCAtMzE1LDExICszNDIsMzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuX19mdW5jX18gaXMgZikKIAogCitjbGFzcyBCdWlsdGluRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBYWFggTm90IHN1cmUgd2hlcmUgdGhpcyBzaG91bGQgcmVhbGx5IGdvIHNpbmNlIEkgY2FuJ3QgZmluZCBhCisgICAgIyB0ZXN0IG1vZHVsZSBzcGVjaWZpY2FsbHkgZm9yIGJ1aWx0aW5fZnVuY3Rpb25fb3JfbWV0aG9kLgorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9fcXVhbG5hbWVfXyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHRpbWUKKworICAgICAgICAjIGJ1aWx0aW4gZnVuY3Rpb246CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuLl9fcXVhbG5hbWVfXywgJ2xlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS50aW1lLl9fcXVhbG5hbWVfXywgJ3RpbWUnKQorCisgICAgICAgICMgYnVpbHRpbiBjbGFzc21ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0LmZyb21rZXlzLl9fcXVhbG5hbWVfXywgJ2RpY3QuZnJvbWtleXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0Ll9fZ2V0Zm9ybWF0X18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmbG9hdC5fX2dldGZvcm1hdF9fJykKKworICAgICAgICAjIGJ1aWx0aW4gc3RhdGljbWV0aG9kOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ci5tYWtldHJhbnMuX19xdWFsbmFtZV9fLCAnc3RyLm1ha2V0cmFucycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMubWFrZXRyYW5zLl9fcXVhbG5hbWVfXywgJ2J5dGVzLm1ha2V0cmFucycpCisKKyAgICAgICAgIyBidWlsdGluIGJvdW5kIGluc3RhbmNlIG1ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbMSwgMiwgM10uYXBwZW5kLl9fcXVhbG5hbWVfXywgJ2xpc3QuYXBwZW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2Zvbyc6ICdiYXInfS5wb3AuX19xdWFsbmFtZV9fLCAnZGljdC5wb3AnKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGdW5jdGlvblByb3BlcnRpZXNUZXN0LCBJbnN0YW5jZW1ldGhvZEF0dHJUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJiaXRyYXJ5RnVuY3Rpb25BdHRyVGVzdCwgRnVuY3Rpb25EaWN0c1Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRvY3N0cmluZ1Rlc3QsIENlbGxUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljTWV0aG9kQXR0cnNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggMjcwY2FiMC4uYzQ5MTBhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTIyNiw2ICsyMjYsNyBAQAogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZikKICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLl9fd3JhcHBlZF9fLCBmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhbHNvIGEgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2Fubm90YXRpb25zX19bJ2EnXSwgJ1RoaXMgaXMgYSBuZXcgYW5ub3RhdGlvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2InLCB3cmFwcGVyLl9fYW5ub3RhdGlvbnNfXykKQEAgLTI0Niw2ICsyNDcsNyBAQAogICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19hbm5vdGF0aW9uc19fLCB7fSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHdyYXBwZXIsICdhdHRyJykpCkBAIC0yNjMsNiArMjY1LDcgQEAKICAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIGYsIGFzc2lnbiwgdXBkYXRlKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCkBAIC0zMDksMTcgKzMxMiwxOCBAQAogICAgICAgICBkZWYgd3JhcHBlcigpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZikKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIsIGYKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdXBkYXRlKHNlbGYpOgotICAgICAgICB3cmFwcGVyID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQorICAgICAgICB3cmFwcGVyLCBmID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICdmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhbHNvIGEgdGVzdCcpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBzeXMuZmxhZ3Mub3B0aW1pemUgPD0gMSwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCiAgICAgZGVmIHRlc3RfZGVmYXVsdF91cGRhdGVfZG9jKHNlbGYpOgotICAgICAgICB3cmFwcGVyID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQorICAgICAgICB3cmFwcGVyLCBfID0gc2VsZi5fZGVmYXVsdF91cGRhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgJ1RoaXMgaXMgYSB0ZXN0JykKIAogICAgIGRlZiB0ZXN0X25vX3VwZGF0ZShzZWxmKToKQEAgLTMzMiw2ICszMzYsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgKCksICgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIod3JhcHBlciwgJ2F0dHInKSkKIApAQCAtMzUxLDYgKzM1Niw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuY2hlY2tfd3JhcHBlcih3cmFwcGVyLCBmLCBhc3NpZ24sIHVwZGF0ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKQEAgLTQzNiwxOSArNDQyLDgyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGFkZCwgZCksICIiLmpvaW4oZC5rZXlzKCkpKQogCiBjbGFzcyBUZXN0Q21wVG9LZXkodW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3RfY21wX3RvX2tleShzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoMyksIGtleSgzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGtleSgzKSwga2V5KDEpKQorICAgICAgICBkZWYgY21wMih4LCB5KToKKyAgICAgICAgICAgIHJldHVybiBpbnQoeCkgLSBpbnQoeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNC4wKSwga2V5KCc0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhrZXkoMiksIGtleSgnMzUnKSkKKworICAgIGRlZiB0ZXN0X2NtcF90b19rZXlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBkZWYgY21wMSh4LCB5KToKKyAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShteWNtcD1jbXAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleShvYmo9MyksIGtleShvYmo9MykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkob2JqPTMpLCBrZXkob2JqPTEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSk6CisgICAgICAgICAgICBrZXkoMykgPiAxICAgICMgcmhzIGlzIG5vdCBhIEsgb2JqZWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpKToKKyAgICAgICAgICAgIDEgPCBrZXkoMykgICAgIyBsaHMgaXMgbm90IGEgSyBvYmplY3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoKSAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxLCBOb25lKSAgICMgdG9vIG1hbnkgYXJncworICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIGZldyBhcmdzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGtleShOb25lLCBOb25lKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0b28gbWFueSBhcmdzCisKKyAgICBkZWYgdGVzdF9iYWRfY21wKHNlbGYpOgorICAgICAgICBkZWYgY21wMSh4LCB5KToKKyAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCisKKyAgICAgICAgY2xhc3MgQmFkQ21wOgorICAgICAgICAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gQmFkQ21wKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBrZXkoMykgPiBrZXkoMSkKKworICAgIGRlZiB0ZXN0X29ial9maWVsZChzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXA9Y21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkoNTApLm9iaiwgNTApCisKKyAgICBkZWYgdGVzdF9zb3J0X2ludChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJhbmdlKDUpLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbNCwgMywgMiwgMSwgMF0pCiAKKyAgICBkZWYgdGVzdF9zb3J0X2ludF9zdHIoc2VsZik6CisgICAgICAgIGRlZiBteWNtcCh4LCB5KToKKyAgICAgICAgICAgIHgsIHkgPSBpbnQoeCksIGludCh5KQorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIHZhbHVlcyA9IFs1LCAnMycsIDcsIDIsICcwJywgJzEnLCA0LCAnMTAnLCAxXQorICAgICAgICB2YWx1ZXMgPSBzb3J0ZWQodmFsdWVzLCBrZXk9ZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpbnQodmFsdWUpIGZvciB2YWx1ZSBpbiB2YWx1ZXNdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA0LCA1LCA3LCAxMF0pCisKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgogICAgICAgICBkZWYgbXljbXAoeCwgeSk6CiAgICAgICAgICAgICByZXR1cm4geSAtIHgKICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXApCiAgICAgICAgIGsgPSBrZXkoMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGFzaCwgaykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKGssIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGssIGNvbGxlY3Rpb25zLkhhc2hhYmxlKQogCiBjbGFzcyBUZXN0VG90YWxPcmRlcmluZyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY3MSw2ICs3NDAsMjIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CiAgICAgICAgICAgICAgICAgZnVuYygxNSkKIAorICAgIGRlZiB0ZXN0X2xydV93aXRoX3R5cGVzKHNlbGYpOgorICAgICAgICBmb3IgbWF4c2l6ZSBpbiAoTm9uZSwgMTAwKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9bWF4c2l6ZSwgdHlwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIGRlZiBzcXVhcmUoeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKiB4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSgzKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoMykpLCB0eXBlKDkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMy4wKSwgOS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNxdWFyZSgzLjApKSwgdHlwZSg5LjApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoeD0zKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoeD0zKSksIHR5cGUoOSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZSh4PTMuMCksIDkuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoeD0zLjApKSwgdHlwZSg5LjApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLmhpdHMsIDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWFyZS5jYWNoZV9pbmZvKCkubWlzc2VzLCA0KQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9jbGFzc2VzID0gKAogICAgICAgICBUZXN0UGFydGlhbCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggYzY2ODlhMS4uM2EyNWViMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTEzLDE0ICsxMywxNCBAQAogY2xhc3MgRnV0dXJlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mdXR1cmUxKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdF9mdXR1cmUxJykKLSAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2Z1dHVyZTEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X2Z1dHVyZTEucmVzdWx0LCA2KQorICAgICAgICBzdXBwb3J0LnVubG9hZCgnZnV0dXJlX3Rlc3QxJykKKyAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBmdXR1cmVfdGVzdDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmVfdGVzdDEucmVzdWx0LCA2KQogCiAgICAgZGVmIHRlc3RfZnV0dXJlMihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3RfZnV0dXJlMicpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmUyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9mdXR1cmUyLnJlc3VsdCwgNikKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ2Z1dHVyZV90ZXN0MicpCisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgZnV0dXJlX3Rlc3QyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlX3Rlc3QyLnJlc3VsdCwgNikKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZTMoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0X2Z1dHVyZTMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggZTFjMTI0ZC4uYzU5YjcyZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LCBzdHJpcF9weXRob25fc3RkZXJyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHZlcmJvc2UsIHJlZmNvdW50X3Rlc3QsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9weXRob25fc3RkZXJyKQogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBnYwpAQCAtMzcsNiArMzgsMjAgQEAKICAgICAgICAgIyBnYyBjb2xsZWN0cyBpdC4KICAgICAgICAgc2VsZi53ciA9IHdlYWtyZWYucmVmKEMxMDU1ODIwKDY2NiksIGl0X2hhcHBlbmVkKQogCitjbGFzcyBVbmNvbGxlY3RhYmxlKG9iamVjdCk6CisgICAgIiIiQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHdpdGggbXVsdGlwbGUgX19kZWxfXyBtZXRob2RzLgorCisgICAgQW4gb2JqZWN0IGluIGEgcmVmZXJlbmNlIGN5Y2xlIHdpbGwgbmV2ZXIgaGF2ZSB6ZXJvIHJlZmVyZW5jZXMsCisgICAgYW5kIHNvIG11c3QgYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuICBJZiBvbmUgb3IgbW9yZSBvYmplY3RzIGluIHRoZQorICAgIGN5Y2xlIGhhdmUgX19kZWxfXyBtZXRob2RzLCB0aGUgZ2MgcmVmdXNlcyB0byBndWVzcyBhbiBvcmRlciwKKyAgICBhbmQgbGVhdmVzIHRoZSBjeWNsZSB1bmNvbGxlY3RlZC4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydG5lcj1Ob25lKToKKyAgICAgICAgaWYgcGFydG5lciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wYXJ0bmVyID0gVW5jb2xsZWN0YWJsZShwYXJ0bmVyPXNlbGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnBhcnRuZXIgPSBwYXJ0bmVyCisgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgIHBhc3MKIAogIyMjIFRlc3RzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xODEsNiArMTk2LDcgQEAKICAgICAgICAgZGVsIGQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnYy5jb2xsZWN0KCksIDIpCiAKKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2ZyYW1lKHNlbGYpOgogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKCkKQEAgLTI0OCw2ICsyNjQsNyBAQAogICAgICMgRm9yIGV4YW1wbGUsIGRpc3Bvc2VkIHR1cGxlcyBhcmUgbm90IGZyZWVkLCBidXQgcmV1c2VkLgogICAgICMgVG8gbWluaW1pemUgdmFyaWF0aW9ucywgdGhvdWdoLCB3ZSBmaXJzdCBzdG9yZSB0aGUgZ2V0X2NvdW50KCkgcmVzdWx0cwogICAgICMgYW5kIGNoZWNrIHRoZW0gYXQgdGhlIGVuZC4KKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2dldF9jb3VudChzZWxmKToKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIGEsIGIsIGMgPSBnYy5nZXRfY291bnQoKQpAQCAtMjYxLDYgKzI3OCw3IEBACiAgICAgICAgICMgY3JlYXRlZCAodGhlIGxpc3QpLgogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZCwgYSkKIAorICAgIEByZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfY29sbGVjdF9nZW5lcmF0aW9ucyhzZWxmKToKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgICMgVGhpcyBvYmplY3Qgd2lsbCAidHJpY2tsZSIgaW50byBnZW5lcmF0aW9uIE4gKyAxIGFmdGVyCkBAIC01OTMsNiArNjExLDEyNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGIidW5jb2xsZWN0YWJsZSBvYmplY3RzIGF0IHNodXRkb3duIiwgc3RkZXJyKQogCiAKK2NsYXNzIEdDQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAjIFNhdmUgZ2Mgc3RhdGUgYW5kIGRpc2FibGUgaXQuCisgICAgICAgIHNlbGYuZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCisgICAgICAgIGdjLmRpc2FibGUoKQorICAgICAgICBzZWxmLmRlYnVnID0gZ2MuZ2V0X2RlYnVnKCkKKyAgICAgICAgZ2Muc2V0X2RlYnVnKDApCisgICAgICAgIGdjLmNhbGxiYWNrcy5hcHBlbmQoc2VsZi5jYjEpCisgICAgICAgIGdjLmNhbGxiYWNrcy5hcHBlbmQoc2VsZi5jYjIpCisgICAgICAgIHNlbGYub3RoZXJnYXJiYWdlID0gW10KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBSZXN0b3JlIGdjIHN0YXRlCisgICAgICAgIGRlbCBzZWxmLnZpc2l0CisgICAgICAgIGdjLmNhbGxiYWNrcy5yZW1vdmUoc2VsZi5jYjEpCisgICAgICAgIGdjLmNhbGxiYWNrcy5yZW1vdmUoc2VsZi5jYjIpCisgICAgICAgIGdjLnNldF9kZWJ1ZyhzZWxmLmRlYnVnKQorICAgICAgICBpZiBzZWxmLmVuYWJsZWQ6CisgICAgICAgICAgICBnYy5lbmFibGUoKQorICAgICAgICAjIGRlc3Ryb3kgYW55IHVuY29sbGVjdGFibGVzCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3Igb2JqIGluIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgVW5jb2xsZWN0YWJsZSk6CisgICAgICAgICAgICAgICAgb2JqLnBhcnRuZXIgPSBOb25lCisgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisgICAgICAgIGRlbCBzZWxmLm90aGVyZ2FyYmFnZQorICAgICAgICBnYy5jb2xsZWN0KCkKKworICAgIGRlZiBwcmVjbGVhbihzZWxmKToKKyAgICAgICAgIyBSZW1vdmUgYWxsIGZsdWZmIGZyb20gdGhlIHN5c3RlbS4gIEludm9rZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgICMgbWFudWFsbHkgcmF0aGVyIHRoYW4gdGhyb3VnaCBzZWxmLnNldFVwKCkgZm9yIG1heGltdW0KKyAgICAgICAgIyBzYWZldHkuCisgICAgICAgIHNlbGYudmlzaXQgPSBbXQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZ2FyYmFnZSwgZ2MuZ2FyYmFnZVs6XSA9IGdjLmdhcmJhZ2VbOl0sIFtdCisgICAgICAgIHNlbGYub3RoZXJnYXJiYWdlLmFwcGVuZChnYXJiYWdlKQorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKworICAgIGRlZiBjYjEoc2VsZiwgcGhhc2UsIGluZm8pOgorICAgICAgICBzZWxmLnZpc2l0LmFwcGVuZCgoMSwgcGhhc2UsIGRpY3QoaW5mbykpKQorCisgICAgZGVmIGNiMihzZWxmLCBwaGFzZSwgaW5mbyk6CisgICAgICAgIHNlbGYudmlzaXQuYXBwZW5kKCgyLCBwaGFzZSwgZGljdChpbmZvKSkpCisgICAgICAgIGlmIHBoYXNlID09ICJzdG9wIiBhbmQgaGFzYXR0cihzZWxmLCAiY2xlYW51cCIpOgorICAgICAgICAgICAgIyBDbGVhbiBVbmNvbGxlY3RhYmxlIGZyb20gZ2FyYmFnZQorICAgICAgICAgICAgdWMgPSBbZSBmb3IgZSBpbiBnYy5nYXJiYWdlIGlmIGlzaW5zdGFuY2UoZSwgVW5jb2xsZWN0YWJsZSldCisgICAgICAgICAgICBnYy5nYXJiYWdlWzpdID0gW2UgZm9yIGUgaW4gZ2MuZ2FyYmFnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlLCBVbmNvbGxlY3RhYmxlKV0KKyAgICAgICAgICAgIGZvciBlIGluIHVjOgorICAgICAgICAgICAgICAgIGUucGFydG5lciA9IE5vbmUKKworICAgIGRlZiB0ZXN0X2NvbGxlY3Qoc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgIyBBbGdvcml0aG1pY2FsbHkgdmVyaWZ5IHRoZSBjb250ZW50cyBvZiBzZWxmLnZpc2l0CisgICAgICAgICMgYmVjYXVzZSBpdCBpcyBsb25nIGFuZCB0b3J0dW91cy4KKworICAgICAgICAjIENvdW50IHRoZSBudW1iZXIgb2YgdmlzaXRzIHRvIGVhY2ggY2FsbGJhY2sKKyAgICAgICAgbiA9IFt2WzBdIGZvciB2IGluIHNlbGYudmlzaXRdCisgICAgICAgIG4xID0gW2kgZm9yIGkgaW4gbiBpZiBpID09IDFdCisgICAgICAgIG4yID0gW2kgZm9yIGkgaW4gbiBpZiBpID09IDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjEsIFsxXSoyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4yLCBbMl0qMikKKworICAgICAgICAjIENvdW50IHRoYXQgd2UgZ290IHRoZSByaWdodCBudW1iZXIgb2Ygc3RhcnQgYW5kIHN0b3AgY2FsbGJhY2tzLgorICAgICAgICBuID0gW3ZbMV0gZm9yIHYgaW4gc2VsZi52aXNpdF0KKyAgICAgICAgbjEgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gInN0YXJ0Il0KKyAgICAgICAgbjIgPSBbaSBmb3IgaSBpbiBuIGlmIGkgPT0gInN0b3AiXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4xLCBbInN0YXJ0Il0qMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMiwgWyJzdG9wIl0qMikKKworICAgICAgICAjIENoZWNrIHRoYXQgd2UgZ290IHRoZSByaWdodCBpbmZvIGRpY3QgZm9yIGFsbCBjYWxsYmFja3MKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImdlbmVyYXRpb24iIGluIGluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoImNvbGxlY3RlZCIgaW4gaW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgidW5jb2xsZWN0YWJsZSIgaW4gaW5mbykKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2VuZXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgIGdjLmNvbGxlY3QoMikKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImdlbmVyYXRpb24iXSwgMikKKworICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2FyYmFnZShzZWxmKToKKyAgICAgICAgc2VsZi5wcmVjbGVhbigpCisgICAgICAgICMgRWFjaCBvZiB0aGVzZSBjYXVzZSBmb3VyIG9iamVjdHMgdG8gYmUgZ2FyYmFnZTogVHdvCisgICAgICAgICMgVW5jb2xlY3RhYmxlcyBhbmQgdGhlaXIgaW5zdGFuY2UgZGljdHMuCisgICAgICAgIFVuY29sbGVjdGFibGUoKQorICAgICAgICBVbmNvbGxlY3RhYmxlKCkKKyAgICAgICAgQzEwNTU4MjAoNjY2KQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGlmIHZbMV0gIT0gInN0b3AiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJjb2xsZWN0ZWQiXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1sidW5jb2xsZWN0YWJsZSJdLCA4KQorCisgICAgICAgICMgV2Ugc2hvdWxkIG5vdyBoYXZlIHRoZSBVbmNvbGxlY3RhYmxlcyBpbiBnYy5nYXJiYWdlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdjLmdhcmJhZ2UpLCA0KQorICAgICAgICBmb3IgZSBpbiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIFVuY29sbGVjdGFibGUpCisKKyAgICAgICAgIyBOb3csIGxldCBvdXIgY2FsbGJhY2sgaGFuZGxlIHRoZSBVbmNvbGxlY3RhYmxlIGluc3RhbmNlcworICAgICAgICBzZWxmLmNsZWFudXA9VHJ1ZQorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKyAgICAgICAgZ2MuZ2FyYmFnZVs6XSA9IFtdCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBmb3IgdiBpbiBzZWxmLnZpc2l0OgorICAgICAgICAgICAgaWYgdlsxXSAhPSAic3RvcCI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGluZm8gPSB2WzJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bImNvbGxlY3RlZCJdLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJ1bmNvbGxlY3RhYmxlIl0sIDQpCisKKyAgICAgICAgIyBVbmNvbGxlY3RhYmxlcyBzaG91bGQgYmUgZ29uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnYy5nYXJiYWdlKSwgMCkKKworCiBjbGFzcyBHQ1RvZ2dsaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgZ2MuZW5hYmxlKCkKQEAgLTc0Niw3ICs4ODUsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBnYy5jb2xsZWN0KCkgIyBEZWxldGUgMm5kIGdlbmVyYXRpb24gZ2FyYmFnZQotICAgICAgICBydW5fdW5pdHRlc3QoR0NUZXN0cywgR0NUb2dnbGluZ1Rlc3RzKQorICAgICAgICBydW5fdW5pdHRlc3QoR0NUZXN0cywgR0NUb2dnbGluZ1Rlc3RzLCBHQ0NhbGxiYWNrVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgZ2Muc2V0X2RlYnVnKGRlYnVnKQogICAgICAgICAjIHRlc3QgZ2MuZW5hYmxlKCkgZXZlbiBpZiBHQyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IGZiODI2MWIuLmE4NzJlNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC03LDkgKzcsMTYgQEAKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvY2FsZQogCisjIElzIHRoaXMgUHl0aG9uIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aHJlYWRzPwordHJ5OgorICAgIGltcG9ydCBfdGhyZWFkCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3RocmVhZCA9IE5vbmUKKwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUsIHB5dGhvbl9pc19vcHRpbWl6ZWQKIAogdHJ5OgpAQCAtMjQsNiArMzEsOSBAQAogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZGIgdmVyc2lvbnMgYmVmb3JlIDcuMCBkaWRuJ3Qgc3VwcG9ydCBweXRob24gZW1iZWRkaW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgU2F3OlxuIiArIGdkYl92ZXJzaW9uLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpKQogCitpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0X2dkYiBvbmx5IHdvcmtzIG9uIHNvdXJjZSBidWlsZHMgYXQgdGhlIG1vbWVudC4iKQorCiAjIFZlcmlmeSB0aGF0ICJnZGIiIHdhcyBidWlsdCB3aXRoIHRoZSBlbWJlZGRlZCBweXRob24gc3VwcG9ydCBlbmFibGVkOgogY21kID0gIi0tZXZhbC1jb21tYW5kPXB5dGhvbiBpbXBvcnQgc3lzOyBwcmludCBzeXMudmVyc2lvbl9pbmZvIgogcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJnZGIiLCAiLS1iYXRjaCIsIGNtZF0sCkBAIC0xNTIsNyArMTYyLDYgQEAKIAogICAgICAgICAjIEVuc3VyZSBubyB1bmV4cGVjdGVkIGVycm9yIG1lc3NhZ2VzOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgJycpCi0KICAgICAgICAgcmV0dXJuIG91dAogCiAgICAgZGVmIGdldF9nZGJfcmVwcihzZWxmLCBzb3VyY2UsCkBAIC0xNzMsNyArMTgyLDcgQEAKICAgICAgICAgIyBnZGIgY2FuIGluc2VydCBhZGRpdGlvbmFsICdcbicgYW5kIHNwYWNlIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBwbGFjZXMKICAgICAgICAgIyBpbiBpdHMgb3V0cHV0LCBkZXBlbmRpbmcgb24gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCBpdCdzIGNvbm5lY3RlZAogICAgICAgICAjIHRvICh1c2luZyBpdHMgIndyYXBfaGVyZSIgZnVuY3Rpb24pCi0gICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCisgICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCiAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LCByZS5ET1RBTEwpCiAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGdkYiBvdXRwdXQ6ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC0zMzUsNyArMzQ0LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCiAKQEAgLTM0OCw3ICszNTcsNyBAQAogZm9vICs9IFsxLCAyLCAzXQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCkBAIC0zNjMsNyArMzcyLDcgQEAKIGZvbyA9IEZvbygoMSwgMiwgMykpCiBmb28uYW5faW50ID0gNDIKIGlkKGZvbyknJycpCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0sCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J1VuZXhwZWN0ZWQgbmV3LXN0eWxlIGNsYXNzIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKQEAgLTM5MCw3ICszOTksNyBAQAogCiAgICAgICAgICMgTWF0Y2ggYW55dGhpbmcgZm9yIHRoZSB0eXBlIG5hbWU7IDB4REVBREJFRUYgY291bGQgcG9pbnQgdG8KICAgICAgICAgIyBzb21ldGhpbmcgYXJiaXRyYXJ5IChzZWUgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4MzMwKQotICAgICAgICBwYXR0ZXJuID0gJzwuKiBhdCByZW1vdGUgMHhbMC05YS1mXSs+JworICAgICAgICBwYXR0ZXJuID0gJzwuKiBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nCiAKICAgICAgICAgbSA9IHJlLm1hdGNoKHBhdHRlcm4sIGdkYl9yZXByKQogICAgICAgICBpZiBub3QgbToKQEAgLTQzNiw3ICs0NDUsNyBAQAogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQogCi0gICAgICAgIG0gPSByZS5tYXRjaChyJzxfSGVscGVyIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLCBnZGJfcmVwcikKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInPF9IZWxwZXIgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywgZ2RiX3JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIHJlbmRlcmluZyAlcicgJSBnZGJfcmVwcikKIApAQCAtNDY3LDcgKzQ3Niw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC00ODAsNyArNDg5LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTQ5NCw3ICs1MDMsNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTUyOSw3ICs1MzgsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9tZXRob2Qoc2VsZik6CiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2ltcG9ydCBzeXM7IGlkKHN5cy5zdGRvdXQucmVhZGxpbmVzKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NDQsNyArNTUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J2J1aWx0aW5faWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHJpbnQgKFB5RnJhbWVPYmplY3QqKSgoKFB5Q29kZU9iamVjdCopdiktPmNvX3pvbWJpZWZyYW1lKSddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTYwMSw3ICs2MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCiAkJycnKQogCkBAIC02MzAsOSArNjM5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1kb3duJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTAsIGluIGJheiBcKGFyZ3M9XCgxLCAyLCAzXClcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTAsIGluIGJheiBcKGFyZ3M9XCgxLCAyLCAzXClcKQogICAgIGlkXCg0MlwpCiAkJycnKQogCkBAIC02NjQsMTQgKzY3MywxMDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1idC1mdWxsJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQogICAgIGJhelwoYSwgYiwgY1wpCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNCwgaW4gZm9vIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA0LCBpbiBmb28gXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXJcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEyLCBpbiA8bW9kdWxlPiBcKFwpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMiwgaW4gPG1vZHVsZT4gXChcKQogICAgIGZvb1woMSwgMiwgM1wpCiAnJycpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3RocmVhZHMoc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGluZGljYXRlcyB0aHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBHSUwnCisgICAgICAgIGNtZCA9ICcnJworZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAorCitjbGFzcyBUZXN0VGhyZWFkKFRocmVhZCk6CisgICAgIyBUaGVzZSB0aHJlYWRzIHdvdWxkIHJ1biBmb3JldmVyLCBidXQgd2UnbGwgaW50ZXJydXB0IHRoaW5ncyB3aXRoIHRoZQorICAgICMgZGVidWdnZXIKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBpID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgIGkgKz0gMQorCit0ID0ge30KK2ZvciBpIGluIHJhbmdlKDQpOgorICAgdFtpXSA9IFRlc3RUaHJlYWQoKQorICAgdFtpXS5zdGFydCgpCisKKyMgVHJpZ2dlciBhIGJyZWFrcG9pbnQgb24gdGhlIG1haW4gdGhyZWFkCitpZCg0MikKKworJycnCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3RocmVhZCBhcHBseSBhbGwgcHktYnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV2FpdGluZyBmb3IgdGhlIEdJTCcsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9Wyd0aHJlYWQgYXBwbHkgYWxsIHB5LWJ0LWZ1bGwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV2FpdGluZyBmb3IgdGhlIEdJTCcsIGdkYl9vdXRwdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCisgICAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIGdkYiB3aWxsIGZhaWwgd2l0aAorICAgICMgICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvciIKKyAgICAjIHVubGVzcyB3ZSBhZGQgTERfUFJFTE9BRD1QQVRILVRPLWxpYnB0aHJlYWQuc28uMSBhcyBhIHdvcmthcm91bmQKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X2djKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBpbmRpY2F0ZXMgaWYgYSB0aHJlYWQgaXMgZ2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBjbWQgPSAoJ2Zyb20gZ2MgaW1wb3J0IGNvbGxlY3RcbicKKyAgICAgICAgICAgICAgICdpZCg0MilcbicKKyAgICAgICAgICAgICAgICdkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGNvbGxlY3QoKVxuJworICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKKyAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKKyAgICAgICAgICAgICAgICdiYXIoKVxuJykKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnJlYWsgdXBkYXRlX3JlZnMnLCAnY29udGludWUnLCAncHktYnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2FyYmFnZS1jb2xsZWN0aW5nJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2JyZWFrIHVwZGF0ZV9yZWZzJywgJ2NvbnRpbnVlJywgJ3B5LWJ0LWZ1bGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignR2FyYmFnZS1jb2xsZWN0aW5nJywgZ2RiX291dHB1dCkKKworICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLAorICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKKyAgICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgZ2RiIHdpbGwgZmFpbCB3aXRoCisgICAgIyAgIkNhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBnZW5lcmljIGVycm9yIgorICAgICMgdW5sZXNzIHdlIGFkZCBMRF9QUkVMT0FEPVBBVEgtVE8tbGlicHRocmVhZC5zby4xIGFzIGEgd29ya2Fyb3VuZAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKF90aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfcHljZnVuY3Rpb24oc2VsZik6CisgICAgICAgICdWZXJpZnkgdGhhdCAicHktYnQiIGRpc3BsYXlzIGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlcycKKyAgICAgICAgY21kID0gKCdmcm9tIHRpbWUgaW1wb3J0IHNsZWVwXG4nCisgICAgICAgICAgICAgICAnZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICAgJyAgICBzbGVlcCgxKVxuJworICAgICAgICAgICAgICAgJ2RlZiBiYXIoKTpcbicKKyAgICAgICAgICAgICAgICcgICAgZm9vKClcbicKKyAgICAgICAgICAgICAgICdiYXIoKVxuJykKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9zbGVlcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydidCcsICdweS1idCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCc8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKworCiBjbGFzcyBQeVByaW50VGVzdHMoRGVidWdnZXJUZXN0cyk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCiAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQpAQCAtNzA1LDcgKzgwNiw3IEBACiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBsZW4nXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYnVpbHRpbiAnbGVuJyA9IDxidWlsdC1pbiBtZXRob2QgbGVuIG9mIG1vZHVsZSBvYmplY3QgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPlxuLioiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYnVpbHRpbiAnbGVuJyA9IDxidWlsdC1pbiBtZXRob2QgbGVuIG9mIG1vZHVsZSBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XG4uKiIpCiAKIGNsYXNzIFB5TG9jYWxzVGVzdHMoRGVidWdnZXJUZXN0cyk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggNWY0N2IzZS4uMDZmNjdjMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtNzI4LDI5ICs3MjgsNiBAQAogCiBzeW50YXhfdGVzdHMgPSAiIiIKIAotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHJldHVybiAyMgotLi4uICAgICB5aWVsZCAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KLT4+PiBkZWYgZigpOgotLi4uICAgICB5aWVsZCAxCi0uLi4gICAgIHJldHVybiAyMgotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCi0icmV0dXJuIE5vbmUiIGlzIG5vdCB0aGUgc2FtZSBhcyAicmV0dXJuIiBpbiBhIGdlbmVyYXRvcjoKLQotPj4+IGRlZiBmKCk6Ci0uLi4gICAgIHlpZWxkIDEKLS4uLiAgICAgcmV0dXJuIE5vbmUKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQogVGhlc2UgYXJlIGZpbmU6CiAKID4+PiBkZWYgZigpOgpAQCAtODY2LDIwICs4NDMsNiBAQAogPj4+IHR5cGUoZigpKQogPGNsYXNzICdnZW5lcmF0b3InPgogCi0KLT4+PiBkZWYgZigpOgotLi4uICAgICBpZiAwOgotLi4uICAgICAgICAgbGFtYmRhIHg6ICB4ICAgICAgICAjIHNob3VsZG4ndCB0cmlnZ2VyIGhlcmUKLS4uLiAgICAgICAgIHJldHVybiAgICAgICAgICAgICAgIyBvciBoZXJlCi0uLi4gICAgICAgICBkZWYgZihpKToKLS4uLiAgICAgICAgICAgICByZXR1cm4gMippICAgICAgIyBvciBoZXJlCi0uLi4gICAgICAgICBpZiAwOgotLi4uICAgICAgICAgICAgIHJldHVybiAzICAgICAgICAjIGJ1dCAqdGhpcyogc3Vja3MgKGxpbmUgOCkKLS4uLiAgICAgaWYgMDoKLS4uLiAgICAgICAgIHlpZWxkIDIgICAgICAgICAgICAgIyBiZWNhdXNlIGl0J3MgYSBnZW5lcmF0b3IgKGxpbmUgMTApCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KIFRoaXMgb25lIGNhdXNlZCBhIGNyYXNoIChzZWUgU0YgYnVnIDU2NzUzOCk6CiAKID4+PiBkZWYgZigpOgpAQCAtMTU2NiwxMSArMTUyOSw2IEBACiAgIC4uLgogU3ludGF4RXJyb3I6ICd5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbgogCi0+Pj4gZGVmIGYoKTogcmV0dXJuIGxhbWJkYSB4PSh5aWVsZCk6IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KID4+PiBkZWYgZigpOiB4ID0geWllbGQgPSB5CiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgIC4uLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKaW5kZXggNTA2MzhhMS4uM2VhZGQ1OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CkBAIC0yLDExICsyLDEyIEBACiBUZXN0cyBjb21tb24gdG8gZ2VuZXJpY3BhdGgsIG1hY3BhdGgsIG50cGF0aCBhbmQgcG9zaXhwYXRoCiAiIiIKIAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBvcwogaW1wb3J0IGdlbmVyaWNwYXRoCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgc2FmZV9ybWRpcihkaXJuYW1lKToKQEAgLTE0NSw2ICsxNDYsMTYgQEAKICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCisgICAgZGVmIHRlc3RfZXhpc3RzX2ZkKHNlbGYpOgorICAgICAgICByLCB3ID0gb3MucGlwZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKKwogICAgIGRlZiB0ZXN0X2lzZGlyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQogICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKQEAgLTI1OCwxNSArMjY5LDIxIEBACiAKICAgICBkZWYgdGVzdF9hYnNwYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQogCiAgICAgICAgICMgQWJzcGF0aCByZXR1cm5zIGJ5dGVzIHdoZW4gdGhlIGFyZyBpcyBieXRlcwotICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgYidmXHhmMlx4ZjInLCBiJy9mb28nLCBiJ0M6XFwnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQogCiAgICAgZGVmIHRlc3RfcmVhbHBhdGgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImZvbyIsIHNlbGYucGF0aG1vZHVsZS5yZWFscGF0aCgiZm9vIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUucmVhbHBhdGgoYiJmb28iKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLnJlYWxwYXRoKGIiZm9vIikpCiAKICAgICBkZWYgdGVzdF9ub3JtcGF0aF9pc3N1ZTU4Mjcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIG5vcm1wYXRoIHByZXNlcnZlcyB1bmljb2RlCkBAIC0yODIsOCArMjk5LDcgQEAKIAogICAgICAgICB1bmljd2QgPSAnXHhlN3dceGYwJwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmc2VuY29kaW5nID0gc3VwcG9ydC5URVNURk5fRU5DT0RJTkcgb3IgImFzY2lpIgotICAgICAgICAgICAgdW5pY3dkLmVuY29kZShmc2VuY29kaW5nKQorICAgICAgICAgICAgb3MuZnNlbmNvZGUodW5pY3dkKQogICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBVbmljb2RlRW5jb2RlRXJyb3IpOgogICAgICAgICAgICAgIyBGUyBlbmNvZGluZyBpcyBwcm9iYWJseSBBU0NJSQogICAgICAgICAgICAgcGFzcwpAQCAtMjk1LDkgKzMxMSwyMCBAQAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLAogICAgICAgICAiTWFjIE9TIFggZGVuaWVzIHRoZSBjcmVhdGlvbiBvZiBhIGRpcmVjdG9yeSB3aXRoIGFuIGludmFsaWQgdXRmOCBuYW1lIikKICAgICBkZWYgdGVzdF9ub25hc2NpaV9hYnNwYXRoKHNlbGYpOgorICAgICAgICBuYW1lID0gYidceGU3d1x4ZjAnCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLmZzZGVjb2RlKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRoZSBmaWxlbmFtZSAlYSBpcyBub3QgZGVjb2RhYmxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIHRoZSBBTlNJIGNvZGUgcGFnZSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisKICAgICAgICAgIyBUZXN0IG5vbi1BU0NJSSwgbm9uLVVURjggYnl0ZXMgaW4gdGhlIHBhdGguCi0gICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChiJ1x4ZTd3XHhmMCcpOgotICAgICAgICAgICAgc2VsZi50ZXN0X2Fic3BhdGgoKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLnRlc3RfYWJzcGF0aCgpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5CmluZGV4IDFmNDZhZjEuLjQxMzA0M2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkKQEAgLTI1NywxMSArMjU3LDE1IEBACiAKICIiIgogCitpbXBvcnQgc3lzCiAKLV9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KKyMgVHJhY2UgZnVuY3Rpb24gY2FuIHRocm93IG9mZiB0aGUgdHVwbGUgcmV1c2UgdGVzdC4KK2lmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCk6CisgICAgX190ZXN0X18gPSB7fQorZWxzZToKKyAgICBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBpbXBvcnQgc3lzCiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2dlbmV4cHMKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfZ2VuZXhwcywgdmVyYm9zZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IDNkOWMwNmEuLjQ4Y2E5NGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcworZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMsIGdldGFyZ3Nfa2V5d29yZF9vbmx5CiAKICIiIgogPiBIb3cgYWJvdXQgdGhlIGZvbGxvd2luZyBjb3VudGVycHJvcG9zYWwuIFRoaXMgYWxzbyBjaGFuZ2VzIHNvbWUgb2YKQEAgLTIxNCw2ICsyMTQsMzYgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFZFUllfTEFSR0UgJiBVTExPTkdfTUFYLCBnZXRhcmdzX0soVkVSWV9MQVJHRSkpCiAKK2NsYXNzIFBhcmFkb3g6CisgICAgIlRoaXMgc3RhdGVtZW50IGlzIGZhbHNlLiIKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworY2xhc3MgQm9vbGVhbl9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcChGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMC4wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMGopKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCh7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxLjApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxaikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKCd4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKCgxLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcChbMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCh7MToyfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKHVuaXR0ZXN0LlRlc3RDYXNlKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBnZXRhcmdzX3AsIFBhcmFkb3goKSkKKwogCiBjbGFzcyBUdXBsZV9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdHVwbGUoc2VsZik6CkBAIC0yOTMsNyArMzIzLDg3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1R5cGVFcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCcpCiAKK2NsYXNzIEtleXdvcmRPbmx5X1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9wb3NpdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgdXNpbmcgYWxsIHBvc3NpYmxlIHBvc2l0aW9uYWwgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiksCisgICAgICAgICAgICAoMSwgMiwgLTEpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9taXhlZF9hcmdzKHNlbGYpOgorICAgICAgICAjIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIDIsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgICMgYWxsIGtleXdvcmRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShyZXF1aXJlZD0xLCBvcHRpb25hbD0yLCBrZXl3b3JkX29ubHk9MyksCisgICAgICAgICAgICAoMSwgMiwgMykKKyAgICAgICAgICAgICkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgbWlzc2luZyBvcHRpb25hbCBrZXl3b3JkIGFyZ3MsIHNraXBwaW5nIHR1cGxlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwgb3B0aW9uYWw9MiksCisgICAgICAgICAgICAoMSwgMiwgLTEpCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShyZXF1aXJlZD0xLCBrZXl3b3JkX29ubHk9MyksCisgICAgICAgICAgICAoMSwgLTEsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9yZXF1aXJlZF9hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSksCisgICAgICAgICAgICAoMSwgLTEsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSksCisgICAgICAgICAgICAoMSwgLTEsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICAjIHJlcXVpcmVkIGFyZyBtaXNzaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShvcHRpb25hbD0yKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShrZXl3b3JkX29ubHk9MykKKworICAgIGRlZiB0ZXN0X3Rvb19tYW55X2FyZ3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMywga2V5d29yZF9vbmx5PTUpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2tleXdvcmQoc2VsZik6CisgICAgICAgICMgZXh0cmFuZW91cyBrZXl3b3JkIGFyZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIidtb25zdGVyJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIG1vbnN0ZXI9NjY2KQorCisgICAgZGVmIHRlc3Rfc3Vycm9nYXRlX2tleXdvcmQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiJ1x1ZGM4MCcgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAqKnsnXHVEQzgwJzogMTB9KQorCiBjbGFzcyBCeXRlc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfYworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfYywgYidhYmMnKSAgIyBsZW4gPiAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19jKGInYScpLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfYyhieXRlYXJyYXkoYidhJykpLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfYywgbWVtb3J5dmlldyhiJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsICdzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIE5vbmUpCisKICAgICBkZWYgdGVzdF9zKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19zCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19zKCdhYmNceGU5JyksIGInYWJjXHhjM1x4YTknKQpAQCAtNDMwLDggKzU0MCwxMCBAQAogICAgIHRlc3RzID0gWwogICAgICAgICBTaWduZWRfVGVzdENhc2UsCiAgICAgICAgIFVuc2lnbmVkX1Rlc3RDYXNlLAorICAgICAgICBCb29sZWFuX1Rlc3RDYXNlLAogICAgICAgICBUdXBsZV9UZXN0Q2FzZSwKICAgICAgICAgS2V5d29yZHNfVGVzdENhc2UsCisgICAgICAgIEtleXdvcmRPbmx5X1Rlc3RDYXNlLAogICAgICAgICBCeXRlc19UZXN0Q2FzZSwKICAgICAgICAgVW5pY29kZV9UZXN0Q2FzZSwKICAgICBdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dsb2IucHkgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKaW5kZXggMTU2MGE2Yi4uNmVlMDhkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgVEVTVEZOLCBza2lwX3VubGVzc19zeW1saW5rLCBjYW5fc3ltbGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywKKyAgICBjYW5fc3ltbGluaywgY3JlYXRlX2VtcHR5X2ZpbGUpCiBpbXBvcnQgZ2xvYgogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCkBAIC0xNCw4ICsxNSw3IEBACiAgICAgICAgIGJhc2UsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmFzZSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhiYXNlKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudGVtcGRpciA9IFRFU1RGTisiX2RpciIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQppbmRleCAyNjhhNjMzLi42YjMyNmJkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAKIGNsYXNzIFRva2VuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlc3RCYWNrc2xhc2goc2VsZik6CisgICAgZGVmIHRlc3RfYmFja3NsYXNoKHNlbGYpOgogICAgICAgICAjIEJhY2tzbGFzaCBtZWFucyBsaW5lIGNvbnRpbnVhdGlvbjoKICAgICAgICAgeCA9IDEgXAogICAgICAgICArIDEKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgeCA9IDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAwLCAnYmFja3NsYXNoIGVuZGluZyBjb21tZW50JykKIAotICAgIGRlZiB0ZXN0UGxhaW5JbnRlZ2VycyhzZWxmKToKKyAgICBkZWYgdGVzdF9wbGFpbl9pbnRlZ2VycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKDAwMCksIHR5cGUoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZiwgMjU1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDBvMzc3LCAyNTUpCkBAIC01Niw3ICs1Niw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1dlaXJkIG1heHNpemUgdmFsdWUgJXInICUgbWF4c2l6ZSkKIAotICAgIGRlZiB0ZXN0TG9uZ0ludGVnZXJzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xvbmdfaW50ZWdlcnMoc2VsZik6CiAgICAgICAgIHggPSAwCiAgICAgICAgIHggPSAweGZmZmZmZmZmZmZmZmZmZmYKICAgICAgICAgeCA9IDBYZmZmZmZmZmZmZmZmZmZmZgpAQCAtNjYsNyArNjYsNyBAQAogICAgICAgICB4ID0gMGIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgICAgICAgeCA9IDBCMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExCiAKLSAgICBkZWYgdGVzdEZsb2F0cyhzZWxmKToKKyAgICBkZWYgdGVzdF9mbG9hdHMoc2VsZik6CiAgICAgICAgIHggPSAzLjE0CiAgICAgICAgIHggPSAzMTQuCiAgICAgICAgIHggPSAwLjMxNApAQCAtODAsNyArODAsNyBAQAogICAgICAgICB4ID0gLjNlMTQKICAgICAgICAgeCA9IDMuMWU0CiAKLSAgICBkZWYgdGVzdFN0cmluZ0xpdGVyYWxzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3N0cmluZ19saXRlcmFscyhzZWxmKToKICAgICAgICAgeCA9ICcnOyB5ID0gIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMCBhbmQgeCA9PSB5KQogICAgICAgICB4ID0gJ1wnJzsgeSA9ICInIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzOSkKICAgICAgICAgeCA9ICciJzsgeSA9ICJcIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzQpCkBAIC0xMjAsMTEgKzEyMCwxOCBAQAogJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCiAKLSAgICBkZWYgdGVzdEVsbGlwc2lzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2VsbGlwc2lzKHNlbGYpOgogICAgICAgICB4ID0gLi4uCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIEVsbGlwc2lzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIi4uIC4iKQogCisgICAgZGVmIHRlc3RfZW9mX2Vycm9yKHNlbGYpOgorICAgICAgICBzYW1wbGVzID0gKCJkZWYgZm9vKCIsICJcbmRlZiBmb28oIiwgImRlZiBmb28oXG4iKQorICAgICAgICBmb3IgcyBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogY2xhc3MgR3JhbW1hclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKQEAgLTEzNiwxMSArMTQzLDExIEBACiAgICAgIyBleHByX2lucHV0OiB0ZXN0bGlzdCBORVdMSU5FCiAgICAgIyBYWFggSGFyZCB0byB0ZXN0IC0tIHVzZWQgb25seSBpbiBjYWxscyB0byBpbnB1dCgpCiAKLSAgICBkZWYgdGVzdEV2YWxJbnB1dChzZWxmKToKKyAgICBkZWYgdGVzdF9ldmFsX2lucHV0KHNlbGYpOgogICAgICAgICAjIHRlc3RsaXN0IEVORE1BUktFUgogICAgICAgICB4ID0gZXZhbCgnMSwgMCBvciAxJykKIAotICAgIGRlZiB0ZXN0RnVuY2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgogICAgICAgICAjIyMgW2RlY29yYXRvcnNdICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKICAgICAgICAgIyMjIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCiAgICAgICAgICMjIyBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCkBAIC0zMjQsNyArMzMxLDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCpnKDE9MikpIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCoqZygxPTIpKSIpCiAKLSAgICBkZWYgdGVzdExhbWJkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfbGFtYmRlZihzZWxmKToKICAgICAgICAgIyMjIGxhbWJkZWY6ICdsYW1iZGEnIFt2YXJhcmdzbGlzdF0gJzonIHRlc3QKICAgICAgICAgbDEgPSBsYW1iZGEgOiAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDEoKSwgMCkKQEAgLTM0Niw3ICszNTMsNyBAQAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RTaW1wbGVTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3NpbXBsZV9zdG10KHNlbGYpOgogICAgICAgICAjIyMgc2ltcGxlX3N0bXQ6IHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10KICAgICAgICAgeCA9IDE7IHBhc3M7IGRlbCB4CiAgICAgICAgIGRlZiBmb28oKToKQEAgLTM1Nyw3ICszNjQsNyBAQAogICAgICMjIyBzbWFsbF9zdG10OiBleHByX3N0bXQgfCBwYXNzX3N0bXQgfCBkZWxfc3RtdCB8IGZsb3dfc3RtdCB8IGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBhY2Nlc3Nfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdEV4cHJTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2V4cHJfc3RtdChzZWxmKToKICAgICAgICAgIyAoZXhwcmxpc3QgJz0nKSogZXhwcmxpc3QKICAgICAgICAgMQogICAgICAgICAxLCAyLCAzCkBAIC0zNzAsNyArMzc3LDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4ICsgMSA9IDEiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImEgKyAxID0gYiArIDIiKQogCi0gICAgZGVmIHRlc3REZWxTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2RlbF9zdG10KHNlbGYpOgogICAgICAgICAjICdkZWwnIGV4cHJsaXN0CiAgICAgICAgIGFiYyA9IFsxLDIsM10KICAgICAgICAgeCwgeSwgeiA9IGFiYwpAQCAtMzc5LDE4ICszODYsMTggQEAKICAgICAgICAgZGVsIGFiYwogICAgICAgICBkZWwgeCwgeSwgKHosIHh5eikKIAotICAgIGRlZiB0ZXN0UGFzc1N0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfcGFzc19zdG10KHNlbGYpOgogICAgICAgICAjICdwYXNzJwogICAgICAgICBwYXNzCiAKICAgICAjIGZsb3dfc3RtdDogYnJlYWtfc3RtdCB8IGNvbnRpbnVlX3N0bXQgfCByZXR1cm5fc3RtdCB8IHJhaXNlX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RCcmVha1N0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfYnJlYWtfc3RtdChzZWxmKToKICAgICAgICAgIyAnYnJlYWsnCiAgICAgICAgIHdoaWxlIDE6IGJyZWFrCiAKLSAgICBkZWYgdGVzdENvbnRpbnVlU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9jb250aW51ZV9zdG10KHNlbGYpOgogICAgICAgICAjICdjb250aW51ZScKICAgICAgICAgaSA9IDEKICAgICAgICAgd2hpbGUgaTogaSA9IDA7IGNvbnRpbnVlCkBAIC00NDIsNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImNvbnRpbnVlIHRoZW4gYnJlYWsgaW4gdHJ5L2V4Y2VwdCBpbiBsb29wIGJyb2tlbiEiKQogICAgICAgICB0ZXN0X2lubmVyKCkKIAotICAgIGRlZiB0ZXN0UmV0dXJuKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JldHVybihzZWxmKToKICAgICAgICAgIyAncmV0dXJuJyBbdGVzdGxpc3RdCiAgICAgICAgIGRlZiBnMSgpOiByZXR1cm4KICAgICAgICAgZGVmIGcyKCk6IHJldHVybiAxCkBAIC00NTAsMTcgKzQ1Nyw0OSBAQAogICAgICAgICB4ID0gZzIoKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzpyZXR1cm4gMSIpCiAKLSAgICBkZWYgdGVzdFlpZWxkKHNlbGYpOgorICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICAjIEFsbG93ZWQgYXMgc3RhbmRhbG9uZSBzdGF0ZW1lbnQKKyAgICAgICAgZGVmIGcoKTogeWllbGQgMQorICAgICAgICBkZWYgZygpOiB5aWVsZCBmcm9tICgpCisgICAgICAgICMgQWxsb3dlZCBhcyBSSFMgb2YgYXNzaWdubWVudAorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgMQorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgZnJvbSAoKQorICAgICAgICAjIE9yZGluYXJ5IHlpZWxkIGFjY2VwdHMgaW1wbGljaXQgdHVwbGVzCisgICAgICAgIGRlZiBnKCk6IHlpZWxkIDEsIDEKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIDEsIDEKKyAgICAgICAgIyAneWllbGQgZnJvbScgZG9lcyBub3QKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiB5aWVsZCBmcm9tICgpLCAxIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiB4ID0geWllbGQgZnJvbSAoKSwgMSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgc3ViZXhwcmVzc2lvbgorICAgICAgICBkZWYgZygpOiAxLCAoeWllbGQgMSkKKyAgICAgICAgZGVmIGcoKTogMSwgKHlpZWxkIGZyb20gKCkpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgZnJvbSAoKSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgY2FsbCBhcmd1bWVudAorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCAxKSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgMSksIDEpCisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIGZyb20gKCkpKQorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCBmcm9tICgpKSwgMSkKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIDEpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIDEsIDEpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIGZyb20gKCkpIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZygpOiBmKHlpZWxkIGZyb20gKCksIDEpIikKKyAgICAgICAgIyBOb3QgYWxsb3dlZCBhdCB0b3AgbGV2ZWwKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ5aWVsZCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieWllbGQgZnJvbSIpCisgICAgICAgICMgTm90IGFsbG93ZWQgYXQgY2xhc3Mgc2NvcGUKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286eWllbGQgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIGZyb20gKCkiKQogCi0gICAgZGVmIHRlc3RSYWlzZShzZWxmKToKKworICAgIGRlZiB0ZXN0X3JhaXNlKHNlbGYpOgogICAgICAgICAjICdyYWlzZScgdGVzdCBbJywnIHRlc3RdCiAgICAgICAgIHRyeTogcmFpc2UgUnVudGltZUVycm9yKCdqdXN0IHRlc3RpbmcnKQogICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOiBwYXNzCiAgICAgICAgIHRyeTogcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OiBwYXNzCiAKLSAgICBkZWYgdGVzdEltcG9ydChzZWxmKToKKyAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CiAgICAgICAgICMgJ2ltcG9ydCcgZG90dGVkX2FzX25hbWVzCiAgICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgaW1wb3J0IHRpbWUsIHN5cwpAQCAtNDczLDEzICs1MTIsMTMgQEAKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IChwYXRoLCBhcmd2KQogICAgICAgICBmcm9tIHN5cyBpbXBvcnQgKHBhdGgsIGFyZ3YsKQogCi0gICAgZGVmIHRlc3RHbG9iYWwoc2VsZik6CisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgogICAgICAgICAjICdnbG9iYWwnIE5BTUUgKCcsJyBOQU1FKSoKICAgICAgICAgZ2xvYmFsIGEKICAgICAgICAgZ2xvYmFsIGEsIGIKICAgICAgICAgZ2xvYmFsIG9uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZSwgc2l4LCBzZXZlbiwgZWlnaHQsIG5pbmUsIHRlbgogCi0gICAgZGVmIHRlc3ROb25sb2NhbChzZWxmKToKKyAgICBkZWYgdGVzdF9ub25sb2NhbChzZWxmKToKICAgICAgICAgIyAnbm9ubG9jYWwnIE5BTUUgKCcsJyBOQU1FKSoKICAgICAgICAgeCA9IDAKICAgICAgICAgeSA9IDAKQEAgLTQ4Nyw3ICs1MjYsNyBAQAogICAgICAgICAgICAgbm9ubG9jYWwgeAogICAgICAgICAgICAgbm9ubG9jYWwgeCwgeQogCi0gICAgZGVmIHRlc3RBc3NlcnQoc2VsZik6CisgICAgZGVmIHRlc3RfYXNzZXJ0KHNlbGYpOgogICAgICAgICAjIGFzc2VydFRydWVzdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KICAgICAgICAgYXNzZXJ0IDEKICAgICAgICAgYXNzZXJ0IDEsIDEKQEAgLTUyNiw3ICs1NjUsNyBAQAogICAgICMjIyBjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RJZihzZWxmKToKKyAgICBkZWYgdGVzdF9pZihzZWxmKToKICAgICAgICAgIyAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgaWYgMTogcGFzcwogICAgICAgICBpZiAxOiBwYXNzCkBAIC01MzksNyArNTc4LDcgQEAKICAgICAgICAgZWxpZiAwOiBwYXNzCiAgICAgICAgIGVsc2U6IHBhc3MKIAotICAgIGRlZiB0ZXN0V2hpbGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpbGUoc2VsZik6CiAgICAgICAgICMgJ3doaWxlJyB0ZXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgd2hpbGUgMDogcGFzcwogICAgICAgICB3aGlsZSAwOiBwYXNzCkBAIC01NTQsNyArNTkzLDcgQEAKICAgICAgICAgICAgIHggPSAyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMikKIAotICAgIGRlZiB0ZXN0Rm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2ZvcihzZWxmKToKICAgICAgICAgIyAnZm9yJyBleHBybGlzdCAnaW4nIGV4cHJsaXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgZm9yIGkgaW4gMSwgMiwgMzogcGFzcwogICAgICAgICBmb3IgaSwgaiwgayBpbiAoKTogcGFzcwpAQCAtNTgxLDcgKzYyMCw3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbMSwgMiwgM10pCiAKLSAgICBkZWYgdGVzdFRyeShzZWxmKToKKyAgICBkZWYgdGVzdF90cnkoc2VsZik6CiAgICAgICAgICMjIyB0cnlfc3RtdDogJ3RyeScgJzonIHN1aXRlIChleGNlcHRfY2xhdXNlICc6JyBzdWl0ZSkrIFsnZWxzZScgJzonIHN1aXRlXQogICAgICAgICAjIyMgICAgICAgICB8ICd0cnknICc6JyBzdWl0ZSAnZmluYWxseScgJzonIHN1aXRlCiAgICAgICAgICMjIyBleGNlcHRfY2xhdXNlOiAnZXhjZXB0JyBbZXhwciBbJ2FzJyBleHByXV0KQEAgLTYwNCw3ICs2NDMsNyBAQAogICAgICAgICB0cnk6IHBhc3MKICAgICAgICAgZmluYWxseTogcGFzcwogCi0gICAgZGVmIHRlc3RTdWl0ZShzZWxmKToKKyAgICBkZWYgdGVzdF9zdWl0ZShzZWxmKToKICAgICAgICAgIyBzaW1wbGVfc3RtdCB8IE5FV0xJTkUgSU5ERU5UIE5FV0xJTkUqIChzdG10IE5FV0xJTkUqKSsgREVERU5UCiAgICAgICAgIGlmIDE6IHBhc3MKICAgICAgICAgaWYgMToKQEAgLTYxOSw3ICs2NTgsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIwogCi0gICAgZGVmIHRlc3RUZXN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Rlc3Qoc2VsZik6CiAgICAgICAgICMjIyBhbmRfdGVzdCAoJ29yJyBhbmRfdGVzdCkqCiAgICAgICAgICMjIyBhbmRfdGVzdDogbm90X3Rlc3QgKCdhbmQnIG5vdF90ZXN0KSoKICAgICAgICAgIyMjIG5vdF90ZXN0OiAnbm90JyBub3RfdGVzdCB8IGNvbXBhcmlzb24KQEAgLTYzMCw3ICs2NjksNyBAQAogICAgICAgICBpZiBub3QgMSBhbmQgMSBhbmQgMTogcGFzcwogICAgICAgICBpZiAxIGFuZCAxIG9yIDEgYW5kIDEgYW5kIDEgb3Igbm90IDEgYW5kIDE6IHBhc3MKIAotICAgIGRlZiB0ZXN0Q29tcGFyaXNvbihzZWxmKToKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgogICAgICAgICAjIyMgY29tcGFyaXNvbjogZXhwciAoY29tcF9vcCBleHByKSoKICAgICAgICAgIyMjIGNvbXBfb3A6ICc8J3wnPid8Jz09J3wnPj0nfCc8PSd8JyE9J3wnaW4nfCdub3QnICdpbid8J2lzJ3wnaXMnICdub3QnCiAgICAgICAgIGlmIDE6IHBhc3MKQEAgLTY0NywzNiArNjg2LDM2IEBACiAgICAgICAgIGlmIDEgbm90IGluICgpOiBwYXNzCiAgICAgICAgIGlmIDEgPCAxID4gMSA9PSAxID49IDEgPD0gMSAhPSAxIGluIDEgbm90IGluIDEgaXMgMSBpcyBub3QgMTogcGFzcwogCi0gICAgZGVmIHRlc3RCaW5hcnlNYXNrT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tYXNrX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgJiAxCiAgICAgICAgIHggPSAxIF4gMQogICAgICAgICB4ID0gMSB8IDEKIAotICAgIGRlZiB0ZXN0U2hpZnRPcHMoc2VsZik6CisgICAgZGVmIHRlc3Rfc2hpZnRfb3BzKHNlbGYpOgogICAgICAgICB4ID0gMSA8PCAxCiAgICAgICAgIHggPSAxID4+IDEKICAgICAgICAgeCA9IDEgPDwgMSA+PiAxCiAKLSAgICBkZWYgdGVzdEFkZGl0aXZlT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2FkZGl0aXZlX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEKICAgICAgICAgeCA9IDEgKyAxCiAgICAgICAgIHggPSAxIC0gMSAtIDEKICAgICAgICAgeCA9IDEgLSAxICsgMSAtIDEgKyAxCiAKLSAgICBkZWYgdGVzdE11bHRpcGxpY2F0aXZlT3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X211bHRpcGxpY2F0aXZlX29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgKiAxCiAgICAgICAgIHggPSAxIC8gMQogICAgICAgICB4ID0gMSAlIDEKICAgICAgICAgeCA9IDEgLyAxICogMSAlIDEKIAotICAgIGRlZiB0ZXN0VW5hcnlPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfdW5hcnlfb3BzKHNlbGYpOgogICAgICAgICB4ID0gKzEKICAgICAgICAgeCA9IC0xCiAgICAgICAgIHggPSB+MQogICAgICAgICB4ID0gfjEgXiAxICYgMSB8IDEgJiAxIF4gLTEKICAgICAgICAgeCA9IC0xKjEvMSArIDEqMSAtIC0tLTEqMQogCi0gICAgZGVmIHRlc3RTZWxlY3RvcnMoc2VsZik6CisgICAgZGVmIHRlc3Rfc2VsZWN0b3JzKHNlbGYpOgogICAgICAgICAjIyMgdHJhaWxlcjogJygnIFt0ZXN0bGlzdF0gJyknIHwgJ1snIHN1YnNjcmlwdCAnXScgfCAnLicgTkFNRQogICAgICAgICAjIyMgc3Vic2NyaXB0OiBleHByIHwgW2V4cHJdICc6JyBbZXhwcl0KIApAQCAtNzA2LDcgKzc0NSw3IEBACiAgICAgICAgIEwuc29ydChrZXk9bGFtYmRhIHg6IHggaWYgaXNpbnN0YW5jZSh4LCB0dXBsZSkgZWxzZSAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTCksICdbMSwgKDEsKSwgKDEsIDIpLCAoMSwgMiwgMyldJykKIAotICAgIGRlZiB0ZXN0QXRvbXMoc2VsZik6CisgICAgZGVmIHRlc3RfYXRvbXMoc2VsZik6CiAgICAgICAgICMjIyBhdG9tOiAnKCcgW3Rlc3RsaXN0XSAnKScgfCAnWycgW3Rlc3RsaXN0XSAnXScgfCAneycgW2RpY3RzZXRtYWtlcl0gJ30nIHwgTkFNRSB8IE5VTUJFUiB8IFNUUklORwogICAgICAgICAjIyMgZGljdHNldG1ha2VyOiAodGVzdCAnOicgdGVzdCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkgfCAodGVzdCAoJywnIHRlc3QpKiBbJywnXSkKIApAQCAtNzQxLDcgKzc4MCw3IEBACiAgICAgIyMjIHRlc3RsaXN0OiB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddCiAgICAgIyBUaGVzZSBoYXZlIGJlZW4gZXhlcmNpc2VkIGVub3VnaCBhYm92ZQogCi0gICAgZGVmIHRlc3RDbGFzc2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9jbGFzc2RlZihzZWxmKToKICAgICAgICAgIyAnY2xhc3MnIE5BTUUgWycoJyBbdGVzdGxpc3RdICcpJ10gJzonIHN1aXRlCiAgICAgICAgIGNsYXNzIEI6IHBhc3MKICAgICAgICAgY2xhc3MgQjIoKTogcGFzcwpAQCAtNzYwLDE0ICs3OTksMTQgQEAKICAgICAgICAgQGNsYXNzX2RlY29yYXRvcgogICAgICAgICBjbGFzcyBHOiBwYXNzCiAKLSAgICBkZWYgdGVzdERpY3Rjb21wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9kaWN0Y29tcHMoc2VsZik6CiAgICAgICAgICMgZGljdG9yc2V0bWFrZXI6ICggKHRlc3QgJzonIHRlc3QgKGNvbXBfZm9yIHwKICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pKSB8CiAgICAgICAgICMgICAgICAgICAgICAgICAgICAgKHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0KSogWycsJ10pKSApCiAgICAgICAgIG51bXMgPSBbMSwgMiwgM10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7aTppKzEgZm9yIGkgaW4gbnVtc30sIHsxOiAyLCAyOiAzLCAzOiA0fSkKIAotICAgIGRlZiB0ZXN0TGlzdGNvbXBzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xpc3Rjb21wcyhzZWxmKToKICAgICAgICAgIyBsaXN0IGNvbXByZWhlbnNpb24gdGVzdHMKICAgICAgICAgbnVtcyA9IFsxLCAyLCAzLCA0LCA1XQogICAgICAgICBzdHJzID0gWyJBcHBsZSIsICJCYW5hbmEiLCAiQ29jb251dCJdCkBAIC04MzAsNyArODY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBbKCdCb2VpbmcnLCAnQWlybGluZXInKSwgKCdCb2VpbmcnLCAnRW5naW5lJyksICgnRm9yZCcsICdFbmdpbmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdNYWNkb25hbGRzJywgJ0NoZWVzZWJ1cmdlcicpXSkKIAotICAgIGRlZiB0ZXN0R2VuZXhwcyhzZWxmKToKKyAgICBkZWYgdGVzdF9nZW5leHBzKHNlbGYpOgogICAgICAgICAjIGdlbmVyYXRvciBleHByZXNzaW9uIHRlc3RzCiAgICAgICAgIGcgPSAoW3ggZm9yIHggaW4gcmFuZ2UoMTApXSBmb3IgeCBpbiByYW5nZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCBbeCBmb3IgeCBpbiByYW5nZSgxMCldKQpAQCAtODY1LDcgKzkwNCw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZm9vKHggZm9yIHggaW4gcmFuZ2UoMTApLCAxMDApIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmb28oMTAwLCB4IGZvciB4IGluIHJhbmdlKDEwKSkiKQogCi0gICAgZGVmIHRlc3RDb21wcmVoZW5zaW9uU3BlY2lhbHMoc2VsZik6CisgICAgZGVmIHRlc3RfY29tcHJlaGVuc2lvbl9zcGVjaWFscyhzZWxmKToKICAgICAgICAgIyB0ZXN0IGZvciBvdXRtb3N0IGl0ZXJhYmxlIHByZWNvbXB1dGF0aW9uCiAgICAgICAgIHggPSAxMDsgZyA9IChpIGZvciBpIGluIHJhbmdlKHgpKTsgeCA9IDUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChnKSksIDEwKQpAQCAtOTA0LDcgKzk0Myw3IEBACiAgICAgICAgIHdpdGggbWFuYWdlcigpIGFzIHgsIG1hbmFnZXIoKToKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiB0ZXN0SWZFbHNlRXhwcihzZWxmKToKKyAgICBkZWYgdGVzdF9pZl9lbHNlX2V4cHIoc2VsZik6CiAgICAgICAgICMgVGVzdCBpZmVsc2UgZXhwcmVzc2lvbnMgaW4gdmFyaW91cyBjYXNlcwogICAgICAgICBkZWYgX2NoZWNrZXZhbChtc2csIHJldCk6CiAgICAgICAgICAgICAiaGVscGVyIHRvIGNoZWNrIHRoYXQgZXZhbHVhdGlvbiBvZiBleHByZXNzaW9ucyBpcyBkb25lIGNvcnJlY3RseSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCBjZWQyMjZmLi5hZjczOTUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uCiAKIAotY2xhc3MgVGVzdEd6aXAodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc2VsZi5maWxlbmFtZSkKIAogCitjbGFzcyBUZXN0R3ppcChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhMSAqIDUwKQpAQCAtNjQsNiArNjUsMjEgQEAKICAgICAgICAgICAgIGQgPSBmLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExKjUwKQogCisgICAgZGVmIHRlc3RfcmVhZDEoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCisgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgIG5yZWFkID0gMAorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBkID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChkKQorICAgICAgICAgICAgICAgIG5yZWFkICs9IGxlbihkKQorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBwb3NpdGlvbiB3YXMgdXBkYXRlZCBjb3JyZWN0bHkgKHNlZSBpc3N1ZTEwNzkxKS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCBucmVhZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihibG9ja3MpLCBkYXRhMSAqIDUwKQorCiAgICAgZGVmIHRlc3RfaW9fb25fY2xvc2VkX29iamVjdChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSS9PIG9wZXJhdGlvbnMgb24gY2xvc2VkIEd6aXBGaWxlIG9iamVjdHMgcmFpc2UgYQogICAgICAgICAjIFZhbHVlRXJyb3IsIGp1c3QgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgb24gZmlsZSBvYmplY3RzLgpAQCAtMTAwLDE0ICsxMTYsMTQgQEAKICAgICAgICAgIyBCdWcgIzEwNzQyNjEgd2FzIHRyaWdnZXJlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIHRoYXQgY29udGFpbmVkCiAgICAgICAgICMgbWFueSwgbWFueSBtZW1iZXJzLiAgQ3JlYXRlIHN1Y2ggYSBmaWxlIGFuZCB2ZXJpZnkgdGhhdCByZWFkaW5nIGl0CiAgICAgICAgICMgd29ya3MuCi0gICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICd3YicsIDkpIGFzIGY6CisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAnd2InLCA5KSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiJ2EnKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyMDApOgotICAgICAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIiwgOSkgYXMgZjogIyBhcHBlbmQKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAiYWIiLCA5KSBhcyBmOiAjIGFwcGVuZAogICAgICAgICAgICAgICAgIGYud3JpdGUoYidhJykKIAogICAgICAgICAjIFRyeSByZWFkaW5nIHRoZSBmaWxlCi0gICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIHpnZmlsZToKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIHpnZmlsZToKICAgICAgICAgICAgIGNvbnRlbnRzID0gYiIiCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIHp0eHQgPSB6Z2ZpbGUucmVhZCg4MTkyKQpAQCAtMTI0LDcgKzE0MCw3IEBACiAgICAgICAgICAgICB3aXRoIGlvLkJ1ZmZlcmVkUmVhZGVyKGYpIGFzIHI6CiAgICAgICAgICAgICAgICAgbGluZXMgPSBbbGluZSBmb3IgbGluZSBpbiByXQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIDUwICogZGF0YTEuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgNTAgKiBkYXRhMS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CiAgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCkBAIC0zMjMsNiArMzM5LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgxMDApLCBiJycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5yZWFkLCBsZW4odW5jb21wcmVzc2VkKSkKIAorICAgIGRlZiB0ZXN0X3RleHRpb19yZWFkbGluZXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEwNzkxOiBUZXh0SU9XcmFwcGVyLnJlYWRsaW5lcygpIGZhaWxzIHdoZW4gd3JhcHBpbmcgR3ppcEZpbGUuCisgICAgICAgIGxpbmVzID0gKGRhdGExICogNTApLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAncicpIGFzIGY6CisgICAgICAgICAgICB3aXRoIGlvLlRleHRJT1dyYXBwZXIoZiwgZW5jb2Rpbmc9ImFzY2lpIikgYXMgdDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVhZGxpbmVzKCksIGxpbmVzKQorCiAgICAgZGVmIHRlc3RfZmlsZW9ial9mcm9tX2Zkb3BlbihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTM3ODE6IE9wZW5pbmcgYSBHemlwRmlsZSBmb3Igd3JpdGluZyBmYWlscyB3aGVuIHVzaW5nIGEKICAgICAgICAgIyBmaWxlb2JqIGNyZWF0ZWQgd2l0aCBvcy5mZG9wZW4oKS4KQEAgLTM2NSw4ICszODksMTA5IEBACiAgICAgICAgICAgICBkYXRhYyA9IGd6aXAuY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3ppcC5kZWNvbXByZXNzKGRhdGFjKSwgZGF0YSkKIAorCitjbGFzcyBUZXN0T3BlbihCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCAqIDIpCisKKyAgICBkZWYgdGVzdF90ZXh0X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfcmF3ID0gdW5jb21wcmVzc2VkLnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImF0IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdyAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlb2JqKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWRfYnl0ZXMgPSBkYXRhMSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9zdHIgPSB1bmNvbXByZXNzZWRfYnl0ZXMuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIGNvbXByZXNzZWQgPSBnemlwLmNvbXByZXNzKHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX2J5dGVzKQorICAgICAgICB3aXRoIGd6aXAub3Blbihpby5CeXRlc0lPKGNvbXByZXNzZWQpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkX3N0cikKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbigxMjMuNDU2KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIiwgZXJyb3JzPSJpZ25vcmUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIG5ld2xpbmU9IlxuIikKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZW5jb2RpbmcuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJ1dGYtMTYiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorCisgICAgZGVmIHRlc3RfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggbm9uLWRlZmF1bHQgZW5jb2RpbmcgZXJyb3IgaGFuZGxlci4KKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYiJmb29ceGZmYmFyIikKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExLmRlY29kZSgiYXNjaWkiKSAqIDUwCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIsIG5ld2xpbmU9IlxuIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFt1bmNvbXByZXNzZWRdKQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEd6aXApCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEd6aXAsIFRlc3RPcGVuKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2gucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKaW5kZXggYzBkZDM0ZC4uMDc3Njc3OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQpAQCAtMTEzLDggKzExMyw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnNlcVtpbmRleF0KIAogY2xhc3MgSGFzaEJ1aWx0aW5zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGhhc2hlc190b19jaGVjayA9IFtyYW5nZSgxMCksCi0gICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmF0ZShyYW5nZSgxMCkpLAorICAgIGhhc2hlc190b19jaGVjayA9IFtlbnVtZXJhdGUocmFuZ2UoMTApKSwKICAgICAgICAgICAgICAgICAgICAgICAgaXRlcihEZWZhdWx0SXRlclNlcSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgaXRlcihsYW1iZGE6IDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgIF0KQEAgLTE2MCw4ICsxNTksOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAga25vd25faGFzaF9vZl9vYmogPSAtMTYwMDkyNTUzMwogCi0gICAgICAgICMgUmFuZG9taXphdGlvbiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0OgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2hhc2goc2VsZi5yZXByXyksIGtub3duX2hhc2hfb2Zfb2JqKQorICAgICAgICAjIFJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0OgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlbGYuZ2V0X2hhc2goc2VsZi5yZXByXyksIGtub3duX2hhc2hfb2Zfb2JqKQogCiAgICAgICAgICMgSXQgY2FuIGFsc28gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgc2VlZCB0byAwOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2hhc2goc2VsZi5yZXByXywgc2VlZD0wKSwga25vd25faGFzaF9vZl9vYmopCkBAIC0xOTMsNiArMTkyLDEyIEBACiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goYiIiKSwgMCkKIAorY2xhc3MgTWVtb3J5dmlld0hhc2hSYW5kb21pemF0aW9uVGVzdHMoU3RyaW5nbGlrZUhhc2hSYW5kb21pemF0aW9uVGVzdHMpOgorICAgIHJlcHJfID0gIm1lbW9yeXZpZXcoYidhYmMnKSIKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1lbW9yeXZpZXcoYiIiKSksIDApCisKIGNsYXNzIERhdGV0aW1lVGVzdHMoSGFzaFJhbmRvbWl6YXRpb25UZXN0cyk6CiAgICAgZGVmIGdldF9oYXNoX2NvbW1hbmQoc2VsZiwgcmVwcl8pOgogICAgICAgICByZXR1cm4gJ2ltcG9ydCBkYXRldGltZTsgcHJpbnQoaGFzaCglcykpJyAlIHJlcHJfCkBAIC0yMTMsNiArMjE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoQnVpbHRpbnNUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJIYXNoUmFuZG9taXphdGlvblRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVzSGFzaFJhbmRvbWl6YXRpb25UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnl2aWV3SGFzaFJhbmRvbWl6YXRpb25UZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRldGltZURhdGVUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRldGltZURhdGV0aW1lVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVUaW1lVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKaW5kZXggMjlkM2ExYy4uMzJmODVlOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBhcnJheQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTM3LDcgKzM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInICkKIAotICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBDT01QSUxFRF9XSVRIX1BZREVCVUcKKyAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCisgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKIAogICAgIGRlZiBfY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZShzZWxmLCBtb2R1bGVfbmFtZSk6CiAgICAgICAgICIiIkltcG9ydCBhIG1vZHVsZSBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0IG9yIE5vbmUgb24gZmFpbHVyZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA0ZGUwNjIwLi40Y2E3Y2VjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0yMzQsNiArMjM0LDE4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgiU3RhbmRhcmQgY29uc3RydWN0b3IgY2FsbCByYWlzZWQgZXhjZXB0aW9uLiIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3N0cl9rZXkoc2VsZik6CisgICAgICAgICMgUGFzcyBhIGtleSBvZiB0eXBlIHN0ciwgd2hpY2ggaXMgYW4gZXJyb3IsIGJlY2F1c2UgaXQgZXhwZWN0cyBhIGtleQorICAgICAgICAjIG9mIHR5cGUgYnl0ZXMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaCA9IGhtYWMuSE1BQygia2V5IikKKworICAgIGRlZiB0ZXN0X2RvdF9uZXdfd2l0aF9zdHJfa2V5KHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBrZXkgb2YgdHlwZSBzdHIsIHdoaWNoIGlzIGFuIGVycm9yLCBiZWNhdXNlIGl0IGV4cGVjdHMgYSBrZXkKKyAgICAgICAgIyBvZiB0eXBlIGJ5dGVzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGggPSBobWFjLm5ldygia2V5IikKKwogICAgIGRlZiB0ZXN0X3dpdGh0ZXh0KHNlbGYpOgogICAgICAgICAjIENvbnN0cnVjdG9yIGNhbGwgd2l0aCB0ZXh0LgogICAgICAgICB0cnk6CkBAIC0zMDIsMTIgKzMxNCwxMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMS5oZXhkaWdlc3QoKSwgaDIuaGV4ZGlnZXN0KCksCiAgICAgICAgICAgICAiSGV4ZGlnZXN0IG9mIGNvcHkgZG9lc24ndCBtYXRjaCBvcmlnaW5hbCBoZXhkaWdlc3QuIikKIAorY2xhc3MgQ29tcGFyZURpZ2VzdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGlnZXN0KHNlbGYpOgorICAgICAgICAjIFRlc3RpbmcgaW5wdXQgdHlwZSBleGNlcHRpb24gaGFuZGxpbmcKKyAgICAgICAgYSwgYiA9IDEwMCwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IDEwMCwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgMjAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIGRpZmZlcmVudCBsZW5ndGhzCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIGIiZm9vIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBiIlx4ZGVceGFkXHhiZVx4ZWYiLCBiIlx4ZGVceGFkIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYiJmb29iYXIiLCBiImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGFiXHhhZFx4MWRceGVhIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3Rocywgc2FtZSB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGRlXHhhZFx4YmVceGVmIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYnl0ZWFycmF5KGIiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGJ5dGVhcnJheShiImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZWFycmF5cyBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBieXRlYXJyYXkoYiJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYW5kIGJ5dGVhcnJheSBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBieXRlYXJyYXkgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZSBhbmQgYnl0ZWFycmF5IG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vYmF6IgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChiLCBhKSkKKworICAgICAgICAjIFRlc3Rpbmcgc3RyIG9mIHNhbWUgbGVuZ3RocworICAgICAgICBhLCBiID0gImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBzdHIgb2YgZGlmZmVlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gImZvbyIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgYnl0ZXMgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBlcnJvciBjYXNlcworICAgICAgICBhLCBiID0gImZvb2JhciIsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAxMDAsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAiZm9vw6QiLCAiZm9vw6QiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKworICAgICAgICAjIHN1YmNsYXNzZXMgYXJlIHN1cHBvcnRlZCBieSBpZ25vcmUgX19lcV9fCisgICAgICAgIGNsYXNzIG15c3RyKHN0cik6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCBteXN0cigiZm9vYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteXN0cigiZm9vYmFyIiksICJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCBteXN0cigiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgIGNsYXNzIG15Ynl0ZXMoYnl0ZXMpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYSwgYiA9IG15Ynl0ZXMoYiJmb29iYXIiKSwgbXlieXRlcyhiImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlieXRlcyhiImZvb2JhciIpLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgIGEsIGIgPSBteWJ5dGVzKGIiZm9vYmFyIiksIG15Ynl0ZXMoYiJmb29iYXoiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBUZXN0VmVjdG9yc1Rlc3RDYXNlLAogICAgICAgICBDb25zdHJ1Y3RvclRlc3RDYXNlLAogICAgICAgICBTYW5pdHlUZXN0Q2FzZSwKLSAgICAgICAgQ29weVRlc3RDYXNlCisgICAgICAgIENvcHlUZXN0Q2FzZSwKKyAgICAgICAgQ29tcGFyZURpZ2VzdFRlc3RDYXNlCiAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CmluZGV4IGM0ZjgwY2MuLmM1ZDg3OGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKQEAgLTEwMiw3ICsxMDIsOCBAQAogY2xhc3MgSFRNTFBhcnNlclN0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6CisgICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzaW5nX2luc3RydWN0aW9uX29ubHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPD9wcm9jZXNzaW5nIGluc3RydWN0aW9uPiIsIFsKQEAgLTQ1NSw3ICs0NTYsNyBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soJzxmb3JtIGFjdGlvbj0iL3h4eC5waHA/YT0xJmFtcDtiPTImYW1wIiwgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZD0icG9zdCI+JywgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnc3RhcnR0YWcnLCAnZm9ybScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2FjdGlvbicsICcveHh4LnBocD9hPTEmYj0yJmFtcCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhY3Rpb24nLCAnL3h4eC5waHA/YT0xJmI9MiYnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCcsIE5vbmUpLCAoJ21ldGhvZCcsICdwb3N0JyldKV0pCiAKICAgICBkZWYgdGVzdF93ZWlyZF9jaGFyc19pbl91bnF1b3RlZF9hdHRyaWJ1dGVfdmFsdWVzKHNlbGYpOgpAQCAtNTQwLDYgKzU0MSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyYjMDAzODsnKSwnJicpCiAgICAgICAgICMgc2VlICMxMjg4OAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAudW5lc2NhcGUoJyYjMTIzOyAnICogMTA1MCksICd7ICcgKiAxMDUwKQorICAgICAgICAjIHNlZSAjMTUxNTYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmRWFjdXRlcmljJkVhY3V0ZTtyaWMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJmFscGhhY2VudGF1cmkmYWxwaGE7Y2VudGF1cmknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfDiXJpY8OJcmljJmFscGhhY2VudGF1cmnOsWNlbnRhdXJpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmY287JyksICcmY287JykKIAogICAgIGRlZiB0ZXN0X2Jyb2tlbl9jb21tZW50cyhzZWxmKToKICAgICAgICAgaHRtbCA9ICgnPCEgbm90IHJlYWxseSBhIGNvbW1lbnQgPicKQEAgLTU5NCw3ICs2MDAsOCBAQAogY2xhc3MgQXR0cmlidXRlc1N0cmljdFRlc3RDYXNlKFRlc3RDYXNlQmFzZSk6CiAKICAgICBkZWYgZ2V0X2NvbGxlY3RvcihzZWxmKToKLSAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6CisgICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUpCiAKICAgICBkZWYgdGVzdF9hdHRyX3N5bnRheChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKaW5kZXggNDFlMGRmZC4uYTM1ZWM5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CkBAIC0yNDgsMTggKzI0OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2Nvb2tpZXNbInd3dy5hY21lLmNvbSJdWyIvIl1bImJvbyJdLnZhbHVlLCBOb25lKQogCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgotICAgICAgICAjIElPRXJyb3JzIChlZy4gZmlsZSBkb2Vzbid0IGV4aXN0KSBhcmUgYWxsb3dlZCB0byBwcm9wYWdhdGUKKyAgICAgICAgIyBPU0Vycm9ycyAoZWcuIGZpbGUgZG9lc24ndCBleGlzdCkgYXJlIGFsbG93ZWQgdG8gcHJvcGFnYXRlCiAgICAgICAgIGZpbGVuYW1lID0gdGVzdC5zdXBwb3J0LlRFU1RGTgogICAgICAgICBmb3IgY29va2llamFyX2NsYXNzIGluIExXUENvb2tpZUphciwgTW96aWxsYUNvb2tpZUphcjoKICAgICAgICAgICAgIGMgPSBjb29raWVqYXJfY2xhc3MoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMubG9hZChmaWxlbmFtZT0iZm9yIHRoaXMgdGVzdCB0byB3b3JrLCBhIGZpbGUgd2l0aCB0aGlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIHNob3VsZCBub3QgZXhpc3QiKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICMgZXhhY3RseSBJT0Vycm9yLCBub3QgTG9hZEVycm9yCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleGMuX19jbGFzc19fLCBJT0Vycm9yKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICMgYW4gT1NFcnJvciBzdWJjbGFzcyAobGlrZWx5IEZpbGVOb3RGb3VuZEVycm9yKSwgYnV0IG5vdAorICAgICAgICAgICAgICAgICMgTG9hZEVycm9yCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChleGMuX19jbGFzc19fLCBMb2FkRXJyb3IpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgSU9FcnJvciBmb3IgaW52YWxpZCBmaWxlbmFtZSIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBPU0Vycm9yIGZvciBpbnZhbGlkIGZpbGVuYW1lIikKICAgICAgICAgIyBJbnZhbGlkIGNvbnRlbnRzIG9mIGNvb2tpZXMgZmlsZSAoZWcuIGJhZCBtYWdpYyBzdHJpbmcpCiAgICAgICAgICMgY2F1c2VzIGEgTG9hZEVycm9yLgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CmluZGV4IDFmMWNhNTguLmU4MzI3ZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CkBAIC0zNCw2ICszNCwxNSBAQAogICAgICAgICAgICAgICdkaWN0JzogeydrZWVibGVyJyA6ICdFPW1jMid9LAogICAgICAgICAgICAgICdyZXByJzogIjxTaW1wbGVDb29raWU6IGtlZWJsZXI9J0U9bWMyJz4iLAogICAgICAgICAgICAgICdvdXRwdXQnOiAnU2V0LUNvb2tpZToga2VlYmxlcj1FPW1jMid9LAorCisgICAgICAgICAgICAjIENvb2tpZXMgd2l0aCAnOicgY2hhcmFjdGVyIGluIHRoZWlyIG5hbWUuIFRob3VnaCBub3QgbWVudGlvbmVkIGluCisgICAgICAgICAgICAjIFJGQywgc2VydmVycyAvIGJyb3dzZXJzIGFsbG93IGl0LgorCisgICAgICAgICAgICAgeydkYXRhJzogJ2tleTp0ZXJtPXZhbHVlOnRlcm0nLAorICAgICAgICAgICAgICdkaWN0JzogeydrZXk6dGVybScgOiAndmFsdWU6dGVybSd9LAorICAgICAgICAgICAgICdyZXByJzogIjxTaW1wbGVDb29raWU6IGtleTp0ZXJtPSd2YWx1ZTp0ZXJtJz4iLAorICAgICAgICAgICAgICdvdXRwdXQnOiAnU2V0LUNvb2tpZToga2V5OnRlcm09dmFsdWU6dGVybSd9LAorCiAgICAgICAgIF0KIAogICAgICAgICBmb3IgY2FzZSBpbiBjYXNlczoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCAyNGM3MmZmLi5jZjYxNTUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC0xODYsNiArMTg2LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKDIpLCBiJ3h0JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKIAorICAgIGRlZiB0ZXN0X3BhcnRpYWxfcmVhZGludG9zKHNlbGYpOgorICAgICAgICAjIGlmIHdlIGhhdmUgYSBsZW5naHQsIHRoZSBzeXN0ZW0ga25vd3Mgd2hlbiB0byBjbG9zZSBpdHNlbGYKKyAgICAgICAgIyBzYW1lIGJlaGF2aW91ciB0aGFuIHdoZW4gd2UgcmVhZCB0aGUgd2hvbGUgdGhpbmcgd2l0aCByZWFkKCkKKyAgICAgICAgYm9keSA9ICJIVFRQLzEuMSAyMDAgT2tcclxuQ29udGVudC1MZW5ndGg6IDRcclxuXHJcblRleHQiCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGJvZHkpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2spCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiKSwgYidUZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzcC5pc2Nsb3NlZCgpKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGIneHQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQorCiAgICAgZGVmIHRlc3RfaG9zdF9wb3J0KHNlbGYpOgogICAgICAgICAjIENoZWNrIGludmFsaWQgaG9zdF9wb3J0CiAKQEAgLTIzNCw2ICsyNTEsMjEgQEAKICAgICAgICAgaWYgcmVzcC5yZWFkKCk6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZCBub3QgZXhwZWN0IHJlc3BvbnNlIGZyb20gSEVBRCByZXF1ZXN0IikKIAorICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2hlYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBsaWJyYXJ5IGRvZXNuJ3QgYXR0ZW1wdCB0byByZWFkIGFueSBkYXRhCisgICAgICAgICMgZnJvbSBhIEhFQUQgcmVxdWVzdC4gIChUaWNrbGVzIFNGIGJ1ZyAjNjIyMDQyLikKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoCisgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogMTQ0MzJcclxuJworICAgICAgICAgICAgJ1xyXG4nLAorICAgICAgICAgICAgTm9FT0ZTdHJpbmdJTykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIGIgPSBieXRlYXJyYXkoNSkKKyAgICAgICAgaWYgcmVzcC5yZWFkaW50byhiKSAhPSAwOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWQgbm90IGV4cGVjdCByZXNwb25zZSBmcm9tIEhFQUQgcmVxdWVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInXHgwMCcqNSkKKwogICAgIGRlZiB0ZXN0X3NlbmRfZmlsZShzZWxmKToKICAgICAgICAgZXhwZWN0ZWQgPSAoYidHRVQgL2ZvbyBIVFRQLzEuMVxyXG5Ib3N0OiBleGFtcGxlLmNvbVxyXG4nCiAgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG5Db250ZW50LUxlbmd0aDonKQpAQCAtMjg5LDE1ICszMjEsMjggQEAKICAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJwogICAgICAgICAgICAgJ2FcclxuJwogICAgICAgICAgICAgJ2hlbGxvIHdvcmxcclxuJwotICAgICAgICAgICAgJzFcclxuJwotICAgICAgICAgICAgJ2RcclxuJworICAgICAgICAgICAgJzNcclxuJworICAgICAgICAgICAgJ2QhIFxyXG4nCisgICAgICAgICAgICAnOFxyXG4nCisgICAgICAgICAgICAnYW5kIG5vdyBcclxuJworICAgICAgICAgICAgJzIyXHJcbicKKyAgICAgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKICAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgcmVzcC5iZWdpbigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGInaGVsbG8gd29ybGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKICAgICAgICAgcmVzcC5jbG9zZSgpCiAKKyAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKICAgICAgICAgZm9yIHggaW4gKCcnLCAnZm9vXHJcbicpOgogICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIHgpCiAgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCkBAIC0zMDUsOSArMzUwLDY0IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzcC5yZWFkKCkKICAgICAgICAgICAgIGV4Y2VwdCBjbGllbnQuSW5jb21wbGV0ZVJlYWQgYXMgaToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgYidoZWxsbyB3b3JsZCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCdJbmNvbXBsZXRlUmVhZCgxMSBieXRlcyByZWFkKScpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksJ0luY29tcGxldGVSZWFkKDExIGJ5dGVzIHJlYWQpJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICdJbmNvbXBsZXRlUmVhZCglZCBieXRlcyByZWFkKScgJSBsZW4oZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0luY29tcGxldGVSZWFkIGV4cGVjdGVkJykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkKHNlbGYpOgorICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAorICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAgICAgICAgICdhXHJcbicKKyAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAgICAgICAgICczXHJcbicKKyAgICAgICAgICAgICdkISBcclxuJworICAgICAgICAgICAgJzhcclxuJworICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKKyAgICAgICAgICAgICcyMlxyXG4nCisgICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCisgICAgICAgIG5leHBlY3RlZCA9IGxlbihleHBlY3RlZCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgxMjgpCisKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIG4gPSByZXNwLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6bmV4cGVjdGVkXSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgbmV4cGVjdGVkKQorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcworICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6CisgICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgICAgIGkgPSByZXNwLnJlYWRpbnRvKG1bMDpuXSkKKyAgICAgICAgICAgIGkgKz0gcmVzcC5yZWFkaW50byhtW2k6biArIGldKQorICAgICAgICAgICAgaSArPSByZXNwLnJlYWRpbnRvKG1baTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzpuZXhwZWN0ZWRdLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgbmV4cGVjdGVkKQorICAgICAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICAgICAgZm9yIHggaW4gKCcnLCAnZm9vXHJcbicpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIHgpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICAgICAgZXhjZXB0IGNsaWVudC5JbmNvbXBsZXRlUmVhZCBhcyBpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaS5wYXJ0aWFsLCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tZXNzYWdlID0gJ0luY29tcGxldGVSZWFkKCVkIGJ5dGVzIHJlYWQpJyAlIGxlbihleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaSksIGV4cGVjdGVkX21lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnSW5jb21wbGV0ZVJlYWQgZXhwZWN0ZWQnKQogICAgICAgICAgICAgZmluYWxseToKQEAgLTMzMCw2ICs0MzAsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYXNvbiwgJ09LJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKIAorICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2NodW5rZWRfaGVhZChzZWxmKToKKyAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKKyAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICAgICAnYVxyXG4nCisgICAgICAgICAgICAnaGVsbG8gd29ybGRcclxuJworICAgICAgICAgICAgJzFcclxuJworICAgICAgICAgICAgJ2RcclxuJworICAgICAgICApCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSg1KQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInXHgwMCcqNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgMjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhc29uLCAnT0snKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pc2Nsb3NlZCgpKQorCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfY29udGVudF9sZW5ndGgoc2VsZik6CiAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KAogICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG5Db250ZW50LUxlbmd0aDogLTFcclxuXHJcbkhlbGxvXHJcbicpCkBAIC01NDUsOCArNjY1LDcgQEAKICAgICBkZWYgdGVzdF9sb2NhbF9nb29kX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICAjIFRoZSAodmFsaWQpIGNlcnQgdmFsaWRhdGVzIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgotICAgICAgICBzZXJ2ZXIgPSBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBDRVJUX2xvY2FsaG9zdCkKKyAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2xvY2FsaG9zdCkKICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRfbG9jYWxob3N0KQpAQCAtNTU0LDEyICs2NzMsMTIgQEAKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCA0MDQpCisgICAgICAgIGRlbCBzZXJ2ZXIKIAogICAgIGRlZiB0ZXN0X2xvY2FsX2JhZF9ob3N0bmFtZShzZWxmKToKICAgICAgICAgIyBUaGUgKHZhbGlkKSBjZXJ0IGRvZXNuJ3QgdmFsaWRhdGUgdGhlIEhUVFAgaG9zdG5hbWUKICAgICAgICAgaW1wb3J0IHNzbAotICAgICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCi0gICAgICAgIHNlcnZlciA9IG1ha2VfaHR0cHNfc2VydmVyKHNlbGYsIENFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICBzZXJ2ZXIgPSBzZWxmLm1ha2Vfc2VydmVyKENFUlRfZmFrZWhvc3RuYW1lKQogICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVF9mYWtlaG9zdG5hbWUpCkBAIC01NzcsNiArNjk2LDcgQEAKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Auc3RhdHVzLCA0MDQpCisgICAgICAgIGRlbCBzZXJ2ZXIKIAogICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyksCiAgICAgICAgICAgICAgICAgICAgICAnaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uIG5vdCBhdmFpbGFibGUnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKaW5kZXggZDllNDA2My4uNzUxMzNjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CkBAIC00NzEsNiArNDcxLDIzIEBACiAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MTcpCiAgICAgICAgIHJldHVybiBGYWxzZQogCisKK2NsYXNzIEF1ZGl0YWJsZUJ5dGVzSU86CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZGF0YXMgPSBbXQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmRhdGFzLmFwcGVuZChkYXRhKQorCisgICAgZGVmIGdldERhdGEoc2VsZik6CisgICAgICAgIHJldHVybiBiJycuam9pbihzZWxmLmRhdGFzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bVdyaXRlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGFzKQorCisKIGNsYXNzIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgQmFzZUhUVFBTZXJ2ZXIuCiAKQEAgLTUzNywyNyArNTU0LDQ5IEBACiAgICAgICAgIHNlbGYudmVyaWZ5X2dldF9jYWxsZWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFstMV0sIGInPGh0bWw+PGJvZHk+RGF0YTwvYm9keT48L2h0bWw+XHJcbicpCiAKLSAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nKHNlbGYpOgotCi0gICAgICAgIGRlZiBfcmVhZEFuZFJlc2VlayhmKToKLSAgICAgICAgICAgIHBvcyA9IGYudGVsbCgpCi0gICAgICAgICAgICBmLnNlZWsoMCkKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5zZWVrKHBvcykKLSAgICAgICAgICAgIHJldHVybiBkYXRhCisgICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZ19vZl9zZW5kX2Vycm9yKHNlbGYpOgogCiAgICAgICAgIGlucHV0ID0gQnl0ZXNJTyhiJ0dFVCAvIEhUVFAvMS4xXHJcblxyXG4nKQotICAgICAgICBvdXRwdXQgPSBCeXRlc0lPKCkKLSAgICAgICAgc2VsZi5oYW5kbGVyLnJmaWxlID0gaW5wdXQKLSAgICAgICAgc2VsZi5oYW5kbGVyLndmaWxlID0gb3V0cHV0Ci0gICAgICAgIHNlbGYuaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisgICAgICAgIGhhbmRsZXIucmVxdWVzdGxpbmUgPSAnJworICAgICAgICBoYW5kbGVyLmNvbW1hbmQgPSBOb25lCiAKLSAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmRfaGVhZGVyKCdGb28nLCAnZm9vJykKLSAgICAgICAgc2VsZi5oYW5kbGVyLnNlbmRfaGVhZGVyKCdiYXInLCAnYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfcmVhZEFuZFJlc2VlayhvdXRwdXQpLCBiJycpCi0gICAgICAgIHNlbGYuaGFuZGxlci5lbmRfaGVhZGVycygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3JlYWRBbmRSZXNlZWsob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZvbzogZm9vXHJcbmJhcjogYmFyXHJcblxyXG4nKQorICAgICAgICBoYW5kbGVyLnNlbmRfZXJyb3IoNDE4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDIpCisKKyAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nX29mX3NlbmRfcmVzcG9uc2Vfb25seShzZWxmKToKKworICAgICAgICBpbnB1dCA9IEJ5dGVzSU8oYidHRVQgLyBIVFRQLzEuMVxyXG5cclxuJykKKyAgICAgICAgb3V0cHV0ID0gQXVkaXRhYmxlQnl0ZXNJTygpCisgICAgICAgIGhhbmRsZXIgPSBTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoKQorICAgICAgICBoYW5kbGVyLnJmaWxlID0gaW5wdXQKKyAgICAgICAgaGFuZGxlci53ZmlsZSA9IG91dHB1dAorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfdmVyc2lvbiA9ICdIVFRQLzEuMScKKworICAgICAgICBoYW5kbGVyLnNlbmRfcmVzcG9uc2Vfb25seSg0MTgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMCkKKyAgICAgICAgaGFuZGxlci5lbmRfaGVhZGVycygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMSkKKworICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmdfb2Zfc2VuZF9oZWFkZXIoc2VsZik6CisKKyAgICAgICAgaW5wdXQgPSBCeXRlc0lPKGInR0VUIC8gSFRUUC8xLjFcclxuXHJcbicpCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisKKyAgICAgICAgaGFuZGxlci5zZW5kX2hlYWRlcignRm9vJywgJ2ZvbycpCisgICAgICAgIGhhbmRsZXIuc2VuZF9oZWFkZXIoJ2JhcicsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDApCisgICAgICAgIGhhbmRsZXIuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXREYXRhKCksIGInRm9vOiBmb29cclxuYmFyOiBiYXJcclxuXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0Lm51bVdyaXRlcywgMSkKIAogICAgIGRlZiB0ZXN0X2hlYWRlcl91bmJ1ZmZlcmVkX3doZW5fY29udGludWUoc2VsZik6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCA1Yzk5YTU4Li41MTJiYmE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC0xMSw5ICsxMSw5IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IGNhbGVuZGFyCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHoKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX3RocmVhZHMsIHZlcmJvc2UsIHRyYW5zaWVudF9pbnRlcm5ldCwgcnVuX3dpdGhfdHosIHJ1bl93aXRoX2xvY2FsZQogaW1wb3J0IHVuaXR0ZXN0Ci0KK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZSwgdGltZWRlbHRhCiB0cnk6CiAgICAgaW1wb3J0IHNzbAogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDMsMTQgKzQzLDMwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCiAgICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKIAotICAgIGRlZiB0ZXN0X3RoYXRfVGltZTJJbnRlcm5hbGRhdGVfcmV0dXJuc19hX3Jlc3VsdChzZWxmKToKLSAgICAgICAgIyBXZSBjYW4gY2hlY2sgb25seSB0aGF0IGl0IHN1Y2Nlc3NmdWxseSBwcm9kdWNlcyBhIHJlc3VsdCwKLSAgICAgICAgIyBub3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSByZXN1bHQgaXRzZWxmLCBzaW5jZSB0aGUgcmVzdWx0Ci0gICAgICAgICMgZGVwZW5kcyBvbiB0aGUgdGltZXpvbmUgdGhlIG1hY2hpbmUgaXMgaW4uCi0gICAgICAgIHRpbWV2YWx1ZXMgPSBbMjAwMDAwMDAwMCwgMjAwMDAwMDAwMC4wLCB0aW1lLmxvY2FsdGltZSgyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIiddCiAKLSAgICAgICAgZm9yIHQgaW4gdGltZXZhbHVlczoKKworICAgIGRlZiB0aW1ldmFsdWVzKHNlbGYpOgorICAgICAgICByZXR1cm4gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgLTEpLAorICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIDEpLAorICAgICAgICAgICAgICAgIGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMjAwMDAwMDAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgwLCAyKjYwKjYwKSkpLAorICAgICAgICAgICAgICAgICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJ10KKworICAgIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICdkZV9ERScsICdmcl9GUicpCisgICAgQHJ1bl93aXRoX3R6KCdTVEQtMURTVCcpCisgICAgZGVmIHRlc3RfVGltZTJJbnRlcm5hbGRhdGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInCisKKyAgICAgICAgZm9yIHQgaW4gc2VsZi50aW1ldmFsdWVzKCk6CisgICAgICAgICAgICBpbnRlcm5hbCA9IGltYXBsaWIuVGltZTJJbnRlcm5hbGRhdGUodCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50ZXJuYWwsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfdGhhdF9UaW1lMkludGVybmFsZGF0ZV9yZXR1cm5zX2FfcmVzdWx0KHNlbGYpOgorICAgICAgICAjIFdpdGhvdXQgdHpzZXQsIHdlIGNhbiBjaGVjayBvbmx5IHRoYXQgaXQgc3VjY2Vzc2Z1bGx5CisgICAgICAgICMgcHJvZHVjZXMgYSByZXN1bHQsIG5vdCB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCBpdHNlbGYsCisgICAgICAgICMgc2luY2UgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSB0aW1lem9uZSB0aGUgbWFjaGluZSBpcyBpbi4KKyAgICAgICAgZm9yIHQgaW4gc2VsZi50aW1ldmFsdWVzKCk6CiAgICAgICAgICAgICBpbWFwbGliLlRpbWUySW50ZXJuYWxkYXRlKHQpCiAKIApAQCAtMjY1LDExICsyODEsNTggQEAKICAgICBwb3J0ID0gOTkzCiAgICAgaW1hcF9jbGFzcyA9IElNQVA0X1NTTAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjcmVhdGVfc3NsX2NvbnRleHQoc2VsZik6CisgICAgICAgIHNzbF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgc3NsX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICByZXR1cm4gc3NsX2NvbnRleHQKKworICAgIGRlZiBjaGVja19sb2dpbmNhcGEoc2VsZiwgc2VydmVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGNhcCBpbiBzZXJ2ZXIuY2FwYWJpbGl0aWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXAsIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPR0lORElTQUJMRUQnLCBzZXJ2ZXIuY2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignQVVUSD1QTEFJTicsIHNlcnZlci5jYXBhYmlsaXRpZXMpCisgICAgICAgICAgICBycyA9IHNlcnZlci5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyc1swXSwgJ09LJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlcnZlci5sb2dvdXQoKQorCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhKHNlbGYpOgotICAgICAgICBmb3IgY2FwIGluIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXAsIHN0cikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignTE9HSU5ESVNBQkxFRCcsIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllcykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignQVVUSD1QTEFJTicsIHNlbGYuc2VydmVyLmNhcGFiaWxpdGllcykKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X2NlcnRmaWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X3NzbF9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisKKyAgICBkZWYgdGVzdF9sb2dvdXQoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQorICAgICAgICAgICAgcnMgPSBfc2VydmVyLmxvZ291dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJzWzBdLCAnQllFJykKKworICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2NlcnRmaWxlX2V4Y2x1c2l2ZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKKworICAgIGRlZiB0ZXN0X3NzbF9jb250ZXh0X2tleWZpbGVfZXhjbHVzaXZlKHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pbWFwX2NsYXNzLCBzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCA1NTFhZDFiLi42NWM5ZjI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiAKIGNsYXNzIExvY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU4LDYgKzU5LDEwIEBACiAgICAgICAgICAgICB3aXRoIGltcC5maW5kX21vZHVsZSgnbW9kdWxlXycgKyBtb2QsIHNlbGYudGVzdF9wYXRoKVswXSBhcyBmZDoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZkLmVuY29kaW5nLCBlbmNvZGluZykKIAorICAgICAgICBwYXRoID0gW29zLnBhdGguZGlybmFtZShfX2ZpbGVfXyldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgaW1wLmZpbmRfbW9kdWxlKCdiYWRzeW50YXhfcGVwMzEyMCcsIHBhdGgpCisKICAgICBkZWYgdGVzdF9pc3N1ZTEyNjcoc2VsZik6CiAgICAgICAgIGZvciBtb2QsIGVuY29kaW5nLCBfIGluIHNlbGYudGVzdF9zdHJpbmdzOgogICAgICAgICAgICAgZnAsIGZpbGVuYW1lLCBpbmZvICA9IGltcC5maW5kX21vZHVsZSgnbW9kdWxlXycgKyBtb2QsCkBAIC0xNTAsMTggKzE1NSwyNCBAQAogICAgICAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZSh0ZW1wX21vZF9uYW1lLCBmaWxlLCBmaWxlbmFtZSwgaW5mbykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5hLCAxKQogCi0gICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9zb3VyY2UodGVtcF9tb2RfbmFtZSwgdGVtcF9tb2RfbmFtZSArICcucHknKQorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9zb3VyY2UodGVtcF9tb2RfbmFtZSwgdGVtcF9tb2RfbmFtZSArICcucHknKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuYSwgMSkKIAotICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfY29tcGlsZWQoCi0gICAgICAgICAgICAgICAgdGVtcF9tb2RfbmFtZSwgaW1wLmNhY2hlX2Zyb21fc291cmNlKHRlbXBfbW9kX25hbWUgKyAnLnB5JykpCisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX2NvbXBpbGVkKAorICAgICAgICAgICAgICAgICAgICB0ZW1wX21vZF9uYW1lLCBpbXAuY2FjaGVfZnJvbV9zb3VyY2UodGVtcF9tb2RfbmFtZSArICcucHknKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmEsIDEpCiAKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0ZXN0X3BhY2thZ2VfbmFtZSk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIodGVzdF9wYWNrYWdlX25hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oaW5pdF9maWxlX25hbWUsICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCdiID0gMlxuJykKLSAgICAgICAgICAgIHBhY2thZ2UgPSBpbXAubG9hZF9wYWNrYWdlKHRlc3RfcGFja2FnZV9uYW1lLCB0ZXN0X3BhY2thZ2VfbmFtZSkKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgcGFja2FnZSA9IGltcC5sb2FkX3BhY2thZ2UodGVzdF9wYWNrYWdlX25hbWUsIHRlc3RfcGFja2FnZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrYWdlLmIsIDIpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KQEAgLTE3NSw2ICsxODYsNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSwgImJhZHN5bnRheF9wZXAzMTIwIiwgW3BhdGhdKQogCisgICAgZGVmIHRlc3RfbG9hZF9mcm9tX3NvdXJjZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgaW1wIG1vZHVsZSBjYW4gY29ycmVjdGx5IGxvYWQgYW5kIGZpbmQgLnB5IGZpbGVzCisgICAgICAgICMgWFhYIChuY29naGxhbik6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHN1cHBvcnQuQ2xlYW5JbXBvcnQKKyAgICAgICAgIyBoZXJlLCBidXQgdGhhdCBicmVha3MgYmVjYXVzZSB0aGUgb3MgbW9kdWxlIHJlZ2lzdGVycyBzb21lCisgICAgICAgICMgaGFuZGxlcnMgaW4gY29weV9yZWcgb24gaW1wb3J0LiBTaW5jZSBDbGVhbkltcG9ydCBkb2Vzbid0CisgICAgICAgICMgcmV2ZXJ0IHRoYXQgcmVnaXN0cmF0aW9uLCB0aGUgbW9kdWxlIGlzIGxlZnQgaW4gYSBicm9rZW4KKyAgICAgICAgIyBzdGF0ZSBhZnRlciByZXZlcnNpb24uIFJlaW5pdGlhbGlzaW5nIHRoZSBtb2R1bGUgY29udGVudHMKKyAgICAgICAgIyBhbmQganVzdCByZXZlcnRpbmcgb3MuZW52aXJvbiB0byBpdHMgcHJldmlvdXMgc3RhdGUgaXMgYW4gT0sKKyAgICAgICAgIyB3b3JrYXJvdW5kCisgICAgICAgIG9yaWdfcGF0aCA9IG9zLnBhdGgKKyAgICAgICAgb3JpZ19nZXRlbnYgPSBvcy5nZXRlbnYKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKToKKyAgICAgICAgICAgIHggPSBpbXAuZmluZF9tb2R1bGUoIm9zIikKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh4WzBdLmNsb3NlKQorICAgICAgICAgICAgbmV3X29zID0gaW1wLmxvYWRfbW9kdWxlKCJvcyIsICp4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcywgbmV3X29zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX3BhdGgsIG5ld19vcy5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChvcmlnX2dldGVudiwgbmV3X29zLmdldGVudikKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2lzc3VlMTU4MjhfbG9hZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICAjIElzc3VlIDE1ODI4IHBpY2tlZCB1cCB0aGF0IHRoZSBhZGFwdGVyIGJldHdlZW4gdGhlIG9sZCBpbXAgQVBJCisgICAgICAgICMgYW5kIGltcG9ydGxpYiBjb3VsZG4ndCBoYW5kbGUgQyBleHRlbnNpb25zCisgICAgICAgIGV4YW1wbGUgPSAiX2hlYXBxIgorICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKGV4YW1wbGUpCisgICAgICAgIGZpbGVfID0geFswXQorICAgICAgICBpZiBmaWxlXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmaWxlXy5jbG9zZSkKKyAgICAgICAgbW9kID0gaW1wLmxvYWRfbW9kdWxlKGV4YW1wbGUsICp4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgZXhhbXBsZSkKKworICAgIGRlZiB0ZXN0X2xvYWRfZHluYW1pY19JbXBvcnRFcnJvcl9wYXRoKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNTU5NTQ5IGFkZGVkIGBuYW1lYCBhbmQgYHBhdGhgIGF0dHJpYnV0ZXMgdG8gSW1wb3J0RXJyb3IKKyAgICAgICAgIyBpbiBvcmRlciB0byBwcm92aWRlIGJldHRlciBkZXRhaWwuIElzc3VlICMxMDg1NCBpbXBsZW1lbnRlZCB0aG9zZQorICAgICAgICAjIGF0dHJpYnV0ZXMgb24gaW1wb3J0IGZhaWx1cmVzIG9mIGV4dGVuc2lvbnMgb24gV2luZG93cy4KKyAgICAgICAgcGF0aCA9ICdib2d1cyBmaWxlIHBhdGgnCisgICAgICAgIG5hbWUgPSAnZXh0ZW5zaW9uJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBlcnI6CisgICAgICAgICAgICBpbXAubG9hZF9keW5hbWljKG5hbWUsIHBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgZXJyLmV4Y2VwdGlvbi5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGVyci5leGNlcHRpb24ubmFtZSkKKwogCiBjbGFzcyBSZWxvYWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwOSw3MiArMjYyLDgzIEBACiAKICAgICB0YWcgPSBpbXAuZ2V0X3RhZygpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIG5vdCBiZSBOb25lJykKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3CiAgICAgICAgICMgZGVmaW5lZCAucHljIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXovcXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L19fcHljYWNoZV9fL3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9ub19jYWNoZV90YWcoc2VsZik6CisgICAgICAgICMgTm9uIGNhY2hlIHRhZyBtZWFucyBOb3RJbXBsZW1lbnRlZEVycm9yLgorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ3doYXRldmVyLnB5JykKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2RvdChzZWxmKToKKyAgICAgICAgIyBEaXJlY3Rvcnkgd2l0aCBhIGRvdCwgZmlsZW5hbWUgd2l0aG91dCBkb3QuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnZmlsZScpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXplZChzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIFBFUCAzMTQ3CiAgICAgICAgICMgZGVmaW5lZCAucHlvIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXovcXV4LnB5JywgRmFsc2UpLAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX2N3ZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIFRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcC5qb2luKCgnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkpKQorICAgICAgICBwYXRoID0gJ2Zvby5weScKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKICAgICAgICAgIyB2YWx1ZS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgW10pLAotICAgICAgICAgICAgJy9mb28vYmFyL19fcHljYWNoZV9fL2Jhei57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIFsxN10pLAotICAgICAgICAgICAgJy9mb28vYmFyL19fcHljYWNoZV9fL2Jhei57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6LnB5JykKKyAgICAgICAgcGFydGlhbF9leHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmF6Lnt9LnB5Jy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbXSksIHBhcnRpYWxfZXhwZWN0ICsgJ28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbMTddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX2V4cGVjdCArICdjJykKICAgICAgICAgIyBIb3dldmVyIGlmIHRoZSBib29sLWlzaG5lc3MgY2FuJ3QgYmUgZGV0ZXJtaW5lZCwgdGhlIGV4Y2VwdGlvbgogICAgICAgICAjIHByb3BhZ2F0ZXMuCiAgICAgICAgIGNsYXNzIEJlYXJpc2g6CiAgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6IHJhaXNlIFJ1bnRpbWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSwgJy9mb28vYmFyL2Jhei5weScsIEJlYXJpc2goKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG9zLmFsdHNlcCBpcyBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbWVhbmluZ2Z1bCBvbmx5IHdoZXJlIG9zLmFsdHNlcCBpcyBkZWZpbmVkJykKLSAgICBkZWYgdGVzdF9hbHRzZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0Ny4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6XFxxdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCi0gICAgZGVmIHRlc3RfYWx0c2VwX2FuZF9zZXBfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6Ci0gICAgICAgICMgV2luZG93cyBwYXRoIGFuZCBQRVAgMzE0NyB3aGVyZSBhbHRzZXAgaXMgcmlnaHQgb2Ygc2VwLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyL2JhelxccXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnXFxmb29cXGJhci9iYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zZXAgPT0gJ1xcJyBhbmQgb3MuYWx0c2VwID09ICcvJywKICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCiAgICAgZGVmIHRlc3Rfc2VwX2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgogICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgc2VwIGlzIHJpZ2h0IG9mIGFsdHNlcC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6L3F1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlKHNlbGYpOgogICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgUEVQIDMxNDcgZGVmaW5lZCAucHljIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0bwogICAgICAgICAjIGl0cyBzb3VyY2UuICBUaGlzIHRlc3RzIHRoZSBnb29kIHBhdGguCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLnNvdXJjZV9mcm9tX2NhY2hlKAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovcXV4LnB5JykKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub19jYWNoZV90YWcoc2VsZik6CisgICAgICAgICMgSWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lLCByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdibGFoJywgJ19fcHljYWNoZV9fJywgJ3doYXRldmVyLnB5YycpCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgorICAgICAgICAgICAgICAgIGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfYmFkX3BhdGgoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgcGF0aCB0byBhIHB5YyBmaWxlIGlzIG5vdCBpbiBQRVAgMzE0NyBmb3JtYXQsIGEgVmFsdWVFcnJvcgpAQCAtMzA1LDYgKzM2OSwxMiBAQAogICAgICAgICAgICAgJy9mb28vYmFyL2Zvby5jcHl0aG9uLTMyLmZvby5weWMnKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9fX2ZpbGVfXyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInBlcDMxNDcgbW9kdWxlIGFscmVhZHkgZXhpc3RzOiAlciIgJSAobSwpKQogICAgICAgICAjIFRlc3QgdGhhdCBhIHBhY2thZ2UncyBfX2ZpbGVfXyBwb2ludHMgdG8gdGhlIHJpZ2h0IHNvdXJjZSBkaXJlY3RvcnkuCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKQEAgLTMxNCwxNCArMzg0LDE2IEBACiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCiAgICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5IGZpbGUuCi0gICAgICAgIHdpdGggb3BlbigncGVwMzE0Ny9fX2luaXRfXy5weScsICd3Jyk6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoJ3BlcDMxNDcvX19pbml0X18ucHknKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBleHBlY3RlZF9fX2ZpbGVfXyA9IG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCiAgICAgICAgICMgRW5zdXJlIHdlIGxvYWQgdGhlIHB5YyBmaWxlLgotICAgICAgICBzdXBwb3J0LmZvcmdldCgncGVwMzE0NycpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCdwZXAzMTQ3JykKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2VwLmpvaW4oKCcuJywgJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCdwZXAzMTQ3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCiAKIAogY2xhc3MgTnVsbEltcG9ydGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQppbmRleCAwZjhmMWY1Li4wNzQ2NDExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQpAQCAtMSw3ICsxLDggQEAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcAotZnJvbSBpbXBvcnRsaWIudGVzdC5pbXBvcnRfIGltcG9ydCB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdXRpbCBhcyBpbXBvcnRsaWJfdXRpbAorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliLmltcG9ydF8gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3V0aWwKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQpAQCAtMTIsMTEgKzEzLDEzIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IGVycm5vCitpbXBvcnQgc2h1dGlsCiAKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCiAgICAgRW52aXJvbm1lbnRWYXJHdWFyZCwgVEVTVEZOLCBjaGVja193YXJuaW5ncywgZm9yZ2V0LCBpc19qeXRob24sCiAgICAgbWFrZV9sZWdhY3lfcHljLCBybXRyZWUsIHJ1bl91bml0dGVzdCwgc3dhcF9hdHRyLCBzd2FwX2l0ZW0sIHRlbXBfdW1hc2ssCi0gICAgdW5saW5rLCB1bmxvYWQpCisgICAgdW5saW5rLCB1bmxvYWQsIGNyZWF0ZV9lbXB0eV9maWxlLCBjcHl0aG9uX29ubHkpCiBmcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIAogCkBAIC0zNCw2ICszNyw3IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCkBAIC03MSw2ICs3NSw3IEBACiAKICAgICAgICAgICAgIGlmIFRFU1RGTiBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQpAQCAtOTgsNDggKzEwMyw1MSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKLSAgICBkZWYgdGVzdF9leGVjdXRlX2JpdF9ub3RfY29waWVkKHNlbGYpOgotICAgICAgICAjIElzc3VlIDYwNzA6IHVuZGVyIHBvc2l4IC5weWMgZmlsZXMgZ290IHRoZWlyIGV4ZWN1dGUgYml0IHNldCBpZgotICAgICAgICAjIHRoZSAucHkgZmlsZSBoYWQgdGhlIGV4ZWN1dGUgYml0IHNldCwgYnV0IHRoZXkgYXJlbid0IGV4ZWN1dGFibGUuCi0gICAgICAgIHdpdGggdGVtcF91bWFzaygwbzAyMik6CisgICAgZGVmIHRlc3RfY3JlYXRpb25fbW9kZShzZWxmKToKKyAgICAgICAgbWFzayA9IDBvMDIyCisgICAgICAgIHdpdGggdGVtcF91bWFzayhtYXNrKToKICAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZm5hbWUgPSBURVNURk4gKyBvcy5leHRzZXAgKyAicHkiCi0gICAgICAgICAgICAgICAgb3BlbihmbmFtZSwgJ3cnKS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgb3MuY2htb2QoZm5hbWUsIChzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVJPVEggfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lYVVNSIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lYT1RIKSkKKyAgICAgICAgICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShmbmFtZSkKICAgICAgICAgICAgICAgICBmbiA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmbmFtZSkKICAgICAgICAgICAgICAgICB1bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZm4pOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9faW1wb3J0X18gZGlkIG5vdCByZXN1bHQgaW4gY3JlYXRpb24gb2YgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKICAgICAgICAgICAgICAgICBzID0gb3Muc3RhdChmbikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQuU19JTU9ERShzLnN0X21vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lSR1JQIHwgc3RhdC5TX0lST1RIKQorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cworICAgICAgICAgICAgICAgICMgYXJlbid0IHNldC4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUocy5zdF9tb2RlKSksIG9jdCgwbzY2NiAmIH5tYXNrKSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKICAgICAgICAgICAgICAgICB1bmxvYWQoVEVTVEZOKQogCi0gICAgZGVmIHRlc3RfaW1wX21vZHVsZShzZWxmKToKLSAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgaW1wIG1vZHVsZSBjYW4gY29ycmVjdGx5IGxvYWQgYW5kIGZpbmQgLnB5IGZpbGVzCi0gICAgICAgICMgWFhYIChuY29naGxhbik6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHN1cHBvcnQuQ2xlYW5JbXBvcnQKLSAgICAgICAgIyBoZXJlLCBidXQgdGhhdCBicmVha3MgYmVjYXVzZSB0aGUgb3MgbW9kdWxlIHJlZ2lzdGVycyBzb21lCi0gICAgICAgICMgaGFuZGxlcnMgaW4gY29weV9yZWcgb24gaW1wb3J0LiBTaW5jZSBDbGVhbkltcG9ydCBkb2Vzbid0Ci0gICAgICAgICMgcmV2ZXJ0IHRoYXQgcmVnaXN0cmF0aW9uLCB0aGUgbW9kdWxlIGlzIGxlZnQgaW4gYSBicm9rZW4KLSAgICAgICAgIyBzdGF0ZSBhZnRlciByZXZlcnNpb24uIFJlaW5pdGlhbGlzaW5nIHRoZSBtb2R1bGUgY29udGVudHMKLSAgICAgICAgIyBhbmQganVzdCByZXZlcnRpbmcgb3MuZW52aXJvbiB0byBpdHMgcHJldmlvdXMgc3RhdGUgaXMgYW4gT0sKLSAgICAgICAgIyB3b3JrYXJvdW5kCi0gICAgICAgIG9yaWdfcGF0aCA9IG9zLnBhdGgKLSAgICAgICAgb3JpZ19nZXRlbnYgPSBvcy5nZXRlbnYKLSAgICAgICAgd2l0aCBFbnZpcm9ubWVudFZhckd1YXJkKCk6Ci0gICAgICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKCJvcyIpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoeFswXS5jbG9zZSkKLSAgICAgICAgICAgIG5ld19vcyA9IGltcC5sb2FkX21vZHVsZSgib3MiLCAqeCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MsIG5ld19vcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19wYXRoLCBuZXdfb3MucGF0aCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19nZXRlbnYsIG5ld19vcy5nZXRlbnYpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKKyAgICBkZWYgdGVzdF9jYWNoZWRfbW9kZV9pc3N1ZV8yMDUxKHNlbGYpOgorICAgICAgICBtb2RlID0gMG82MDAKKyAgICAgICAgc291cmNlID0gVEVTVEZOICsgIi5weSIKKyAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKKyAgICAgICAgICAgIHBhdGggPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHRlbXBkaXIsIFRFU1RGTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXk9J3RvcCBzZWNyZXQnIikKKyAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCisgICAgICAgICAgICBjb21waWxlZCA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoKQorICAgICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHRlbXBkaXIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHN5cy5wYXRoLnJlbW92ZSh0ZW1wZGlyKQorCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29tcGlsZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNvbXBpbGVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLCBvY3QobW9kZSkpCiAKICAgICBkZWYgdGVzdF9idWc3NzMyKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBURVNURk4gKyAnLnB5JwpAQCAtMTcwLDYgKzE3OCw3IEBACiAKICAgICAgICAgIyBOZWVkIHRvIGJlIGFibGUgdG8gbG9hZCBmcm9tIGN1cnJlbnQgZGlyLgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKGZpbGVuYW1lKQpAQCAtMTg5LDYgKzE5OCw3IEBACiAgICAgICAgICMgTmV3IGluIDIuNCwgd2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gaW1wb3J0IHRoYXQgbm8gbWF0dGVyIGhvdyBvZnRlbgogICAgICAgICAjIHdlIHRyeS4KICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgaWYgVEVTVEZOIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgdHJ5OgpAQCAtMjYyLDYgKzI3Miw3IEBACiAgICAgICAgICAgICBvcy5yZW1vdmUoc291cmNlKQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG1vZC5fX2ZpbGVfXykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXh0LCAoJy5weWMnLCAnLnB5bycpKQpAQCAtMjgyLDEyICsyOTMsNiBAQAogICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0IGFzIHkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB0ZXN0LnN1cHBvcnQsIHkuX19uYW1lX18pCiAKLSAgICBkZWYgdGVzdF9pbXBvcnRfaW5pdGxlc3NfZGlyZWN0b3J5X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBJbXBvcnRXYXJuaW5nKSk6Ci0gICAgICAgICAgICAjIEp1c3QgYSByYW5kb20gbm9uLXBhY2thZ2UgZGlyZWN0b3J5IHdlIGFsd2F5cyBleHBlY3QgdG8gYmUKLSAgICAgICAgICAgICMgc29tZXdoZXJlIGluIHN5cy5wYXRoLi4uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInNpdGUtcGFja2FnZXMiKQotCiAgICAgZGVmIHRlc3RfaW1wb3J0X2J5X2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKFRFU1RGTikKICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKQEAgLTI5Nyw4ICszMDIsNiBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHt9Jy5mb3JtYXQoZW5jb2RpbmcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjOgogICAgICAgICAgICAgX19pbXBvcnRfXyhwYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJbXBvcnQgYnkgZmlsZW5hbWUgaXMgbm90IHN1cHBvcnRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfaW5fZGVsX2RvZXNfbm90X2NyYXNoKHNlbGYpOgogICAgICAgICAjIElzc3VlIDQyMzYKQEAgLTMzNSw2ICszMzgsMTIgQEAKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKIAorICAgIGRlZiB0ZXN0X2JvZ3VzX2Zyb21saXN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfX2ltcG9ydF9fKCdodHRwJywgZnJvbWxpc3Q9WydibGFoJ10pCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZnJvbWxpc3QgbXVzdCBhbGxvdyBib2d1cyBuYW1lcyIpCisKIAogY2xhc3MgUHljUmV3cml0aW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGVzdCB0aGF0IHRoZSBgY29fZmlsZW5hbWVgIGF0dHJpYnV0ZSBvbiBjb2RlIG9iamVjdHMgYWx3YXlzIHBvaW50cwpAQCAtMzYyLDYgKzM3MSw3IEBACiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVfbmFtZSwgInciKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShzZWxmLm1vZHVsZV9zb3VyY2UpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBzZWxmLmRpcl9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMucGF0aFs6XSA9IHNlbGYuc3lzX3BhdGgKQEAgLTQwMSw2ICs0MTEsNyBAQAogICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2VsZi5maWxlX25hbWUsIGRmaWxlPXRhcmdldCkKICAgICAgICAgb3MucmVtb3ZlKHNlbGYuZmlsZV9uYW1lKQogICAgICAgICBweWNfZmlsZSA9IG1ha2VfbGVnYWN5X3B5YyhzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbW9kID0gc2VsZi5pbXBvcnRfbW9kdWxlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QubW9kdWxlX2ZpbGVuYW1lLCBweWNfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuY29kZV9maWxlbmFtZSwgdGFyZ2V0KQpAQCAtNDA5LDcgKzQyMCw3IEBACiAgICAgZGVmIHRlc3RfZm9yZWlnbl9jb2RlKHNlbGYpOgogICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2VsZi5maWxlX25hbWUpCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmNvbXBpbGVkX25hbWUsICJyYiIpIGFzIGY6Ci0gICAgICAgICAgICBoZWFkZXIgPSBmLnJlYWQoOCkKKyAgICAgICAgICAgIGhlYWRlciA9IGYucmVhZCgxMikKICAgICAgICAgICAgIGNvZGUgPSBtYXJzaGFsLmxvYWQoZikKICAgICAgICAgY29uc3RhbnRzID0gbGlzdChjb2RlLmNvX2NvbnN0cykKICAgICAgICAgZm9yZWlnbl9jb2RlID0gdGVzdF9tYWluLl9fY29kZV9fCkBAIC00NTEsOSArNDYyLDExIEBACiAgICAgICAgIHVubG9hZCgidGVzdF90cmFpbGluZ19zbGFzaCIpCiAKICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM2NzcuCi0gICAgZGVmIF90ZXN0X1VOQ19wYXRoKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ3Rlc3RfdHJhaWxpbmdfc2xhc2gucHknKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgidGVzdGRhdGEgPSAndGVzdF90cmFpbGluZ19zbGFzaCciKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cy1zcGVjaWZpYycpCisgICAgZGVmIHRlc3RfVU5DX3BhdGgoc2VsZik6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAndGVzdF91bmNfcGF0aC5weScpLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJ0ZXN0ZGF0YSA9ICd0ZXN0X3VuY19wYXRoJyIpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICMgQ3JlYXRlIHRoZSBVTkMgcGF0aCwgbGlrZSBcXG15aG9zdFxjJFxmb29cYmFyLgogICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHNlbGYucGF0aCkKICAgICAgICAgaW1wb3J0IHNvY2tldApAQCAtNDY4LDEzICs0ODEsMTUgQEAKICAgICAgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTUzMzgKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgYWNjZXNzIGFkbWluaXN0cmF0aXZlIHNoYXJlICVyIiAlICh1bmMsKSkKICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHN5cy5wYXRoLmFwcGVuZChwYXRoKQotICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCJ0ZXN0X3RyYWlsaW5nX3NsYXNoIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QudGVzdGRhdGEsICd0ZXN0X3RyYWlsaW5nX3NsYXNoJykKLSAgICAgICAgdW5sb2FkKCJ0ZXN0X3RyYWlsaW5nX3NsYXNoIikKLQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICB0ZXN0X1VOQ19wYXRoID0gX3Rlc3RfVU5DX3BhdGgKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHVuYykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXygidGVzdF91bmNfcGF0aCIpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJjb3VsZCBub3QgaW1wb3J0ICd0ZXN0X3VuY19wYXRoJyBmcm9tICVyOiAlciIKKyAgICAgICAgICAgICAgICAgICAgICAlICh1bmMsIGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC50ZXN0ZGF0YSwgJ3Rlc3RfdW5jX3BhdGgnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kLl9fZmlsZV9fLnN0YXJ0c3dpdGgodW5jKSwgbW9kLl9fZmlsZV9fKQorICAgICAgICB1bmxvYWQoInRlc3RfdW5jX3BhdGgiKQogCiAKIGNsYXNzIFJlbGF0aXZlSW1wb3J0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTE1LDcgKzUzMCw3IEBACiAKICAgICAgICAgIyBDaGVjayByZWxhdGl2ZSBpbXBvcnQgZmFpbHMgd2l0aCBwYWNrYWdlIHNldCB0byBhIG5vbi1zdHJpbmcKICAgICAgICAgbnMgPSBkaWN0KF9fcGFja2FnZV9fPW9iamVjdCgpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjaGVja19yZWxhdGl2ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjaGVja19yZWxhdGl2ZSkKIAogICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydF93aXRob3V0X2Z1dHVyZShzZWxmKToKICAgICAgICAgIyBJZiBleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnQgc3ludGF4IGlzIHVzZWQsIHRoZW4gZG8gbm90IHRyeQpAQCAtNTYzLDYgKzU3OCw3IEBACiAgICAgICAgIHdpdGggb3BlbihzZWxmLnNvdXJjZSwgJ3cnKSBhcyBmcDoKICAgICAgICAgICAgIHByaW50KCcjIFRoaXMgaXMgYSB0ZXN0IGZpbGUgd3JpdHRlbiBieSB0ZXN0X2ltcG9ydC5weScsIGZpbGU9ZnApCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzc2VydCBzeXMucGF0aFswXSA9PSBvcy5jdXJkaXIsICdVbmV4cGVjdGVkIHN5cy5wYXRoWzBdJwpAQCAtNjEwLDYgKzYyNiw3IEBACiAgICAgICAgIHB5Y19maWxlID0gbWFrZV9sZWdhY3lfcHljKHNlbGYuc291cmNlKQogICAgICAgICBvcy5yZW1vdmUoc2VsZi5zb3VyY2UpCiAgICAgICAgIHVubG9hZChURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5jdXJkaXIsIG9zLnBhdGgucmVscGF0aChweWNfZmlsZSkpKQpAQCAtNjMwLDYgKzY0Nyw3IEBACiAgICAgICAgIHB5Y19maWxlID0gbWFrZV9sZWdhY3lfcHljKHNlbGYuc291cmNlKQogICAgICAgICBvcy5yZW1vdmUoc2VsZi5zb3VyY2UpCiAgICAgICAgIHVubG9hZChURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fY2FjaGVkX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgb3MucGF0aC5yZWxwYXRoKHB5Y19maWxlKSkpCkBAIC02MzgsNiArNjU2LDggQEAKICAgICAgICAgIyBMaWtlIHRlc3RfX19jYWNoZWRfXyBidXQgZm9yIHBhY2thZ2VzLgogICAgICAgICBkZWYgY2xlYW51cCgpOgogICAgICAgICAgICAgcm10cmVlKCdwZXAzMTQ3JykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3JykKICAgICAgICAgb3MubWtkaXIoJ3BlcDMxNDcnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoY2xlYW51cCkKICAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkKQEAgLTY0NSw4ICs2NjUsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ2Zvby5weScpLCAndycpOgogICAgICAgICAgICAgcGFzcwotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKLSAgICAgICAgdW5sb2FkKCdwZXAzMTQ3JykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcuZm9vJykKICAgICAgICAgaW5pdF9weWMgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkKQEAgLTY2MCwxOCArNjc5LDIwIEBACiAgICAgICAgICMgUEVQIDMxNDcgcHljIGZpbGUuCiAgICAgICAgIGRlZiBjbGVhbnVwKCk6CiAgICAgICAgICAgICBybXRyZWUoJ3BlcDMxNDcnKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKLSAgICAgICAgdW5sb2FkKCdwZXAzMTQ3JykKICAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpLCAndycpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ2Zvby5weScpLCAndycpOgogICAgICAgICAgICAgcGFzcworICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3JykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oJ3BlcDMxNDcuZm9vJykKICAgICAgICAgaW5pdF9weWMgPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnX19pbml0X18ucHknKSkKQEAgLTY4MCwyMiArNzAxLDI1NiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5tb2R1bGVzWydwZXAzMTQ3LmZvbyddLl9fY2FjaGVkX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgZm9vX3B5YykpCiAKKyAgICBkZWYgdGVzdF9yZWNvbXB1dGVfcHljX3NhbWVfc2Vjb25kKHNlbGYpOgorICAgICAgICAjIEV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGUgZG9lc24ndCBjaGFuZ2UgdGltZXN0YW1wLCBhIGNoYW5nZSBpbgorICAgICAgICAjIHNvdXJjZSBzaXplIGlzIGVub3VnaCB0byB0cmlnZ2VyIHJlY29tcHV0YXRpb24gb2YgdGhlIHB5YyBmaWxlLgorICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuc291cmNlLCAnYScpIGFzIGZwOgorICAgICAgICAgICAgcHJpbnQoInggPSA1IiwgZmlsZT1mcCkKKyAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgNSkKIAotY2xhc3MgUmVsYXRpdmVJbXBvcnRGcm9tSW1wb3J0bGliVGVzdHModGVzdF9yZWxhdGl2ZV9pbXBvcnRzLlJlbGF0aXZlSW1wb3J0cyk6CisKK2NsYXNzIFRlc3RTeW1ib2xpY2FsbHlMaW5rZWRQYWNrYWdlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBwYWNrYWdlX25hbWUgPSAnc2FtcGxlJworICAgIHRhZ2dlZCA9IHBhY2thZ2VfbmFtZSArICctdGFnZ2VkJwogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLl9pbXBvcnRsaWJfdXRpbF9mbGFnID0gaW1wb3J0bGliX3V0aWwudXNpbmdfX19pbXBvcnRfXwotICAgICAgICBpbXBvcnRsaWJfdXRpbC51c2luZ19fX2ltcG9ydF9fID0gVHJ1ZQorICAgICAgICB0ZXN0LnN1cHBvcnQucm10cmVlKHNlbGYudGFnZ2VkKQorICAgICAgICB0ZXN0LnN1cHBvcnQucm10cmVlKHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBzZWxmLm9yaWdfc3lzX3BhdGggPSBzeXMucGF0aFs6XQorCisgICAgICAgICMgY3JlYXRlIGEgc2FtcGxlIHBhY2thZ2U7IGltYWdpbmUgeW91IGhhdmUgYSBwYWNrYWdlIHdpdGggYSB0YWcgYW5kCisgICAgICAgICMgIHlvdSB3YW50IHRvIHN5bWJvbGljYWxseSBsaW5rIGl0IGZyb20gaXRzIHVudGFnZ2VkIG5hbWUuCisgICAgICAgIG9zLm1rZGlyKHNlbGYudGFnZ2VkKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnJtdHJlZSwgc2VsZi50YWdnZWQpCisgICAgICAgIGluaXRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRhZ2dlZCwgJ19faW5pdF9fLnB5JykKKyAgICAgICAgdGVzdC5zdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKGluaXRfZmlsZSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKGluaXRfZmlsZSkKKworICAgICAgICAjIG5vdyBjcmVhdGUgYSBzeW1saW5rIHRvIHRoZSB0YWdnZWQgcGFja2FnZQorICAgICAgICAjIHNhbXBsZSAtPiBzYW1wbGUtdGFnZ2VkCisgICAgICAgIG9zLnN5bWxpbmsoc2VsZi50YWdnZWQsIHNlbGYucGFja2FnZV9uYW1lLCB0YXJnZXRfaXNfZGlyZWN0b3J5PVRydWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQudW5saW5rLCBzZWxmLnBhY2thZ2VfbmFtZSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguaXNkaXIoc2VsZi5wYWNrYWdlX25hbWUpLCBUcnVlKQorCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5wYWNrYWdlX25hbWUsICdfX2luaXRfXy5weScpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpbXBvcnRsaWJfdXRpbC51c2luZ19fX2ltcG9ydF9fID0gc2VsZi5faW1wb3J0bGliX3V0aWxfZmxhZworICAgICAgICBzeXMucGF0aFs6XSA9IHNlbGYub3JpZ19zeXNfcGF0aAorCisgICAgIyByZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlNjcyNworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKAorICAgICAgICBub3QgaGFzYXR0cihzeXMsICdnZXR3aW5kb3dzdmVyc2lvbicpCisgICAgICAgIG9yIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpID49ICg2LCAwKSwKKyAgICAgICAgIldpbmRvd3MgVmlzdGEgb3IgbGF0ZXIgcmVxdWlyZWQiKQorICAgIEB0ZXN0LnN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X3N5bWxpbmtlZF9kaXJfaW1wb3J0YWJsZShzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgc2FtcGxlIGNhbiBvbmx5IGJlIGltcG9ydGVkIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorICAgICAgICBzeXMucGF0aFs6XSA9IFsnLiddCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhzZWxmLnBhY2thZ2VfbmFtZSkKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfbmFtZSwgJ19faW5pdF9fLnB5JykpCisKKyAgICAgICAgIyBUcnkgdG8gaW1wb3J0IHRoZSBwYWNrYWdlCisgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHNlbGYucGFja2FnZV9uYW1lKQorCisKK0BjcHl0aG9uX29ubHkKK2NsYXNzIEltcG9ydGxpYkJvb3RzdHJhcFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRoZXNlIHRlc3RzIGNoZWNrIHRoYXQgaW1wb3J0bGliIGlzIGJvb3RzdHJhcHBlZC4KKworICAgIGRlZiB0ZXN0X2Zyb3plbl9pbXBvcnRsaWIoc2VsZik6CisgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QpCisKKyAgICBkZWYgdGVzdF9mcm96ZW5faW1wb3J0bGliX2lzX2Jvb3RzdHJhcChzZWxmKToKKyAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2QsIF9ib290c3RyYXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fbmFtZV9fLCAnaW1wb3J0bGliLl9ib290c3RyYXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX3BhY2thZ2VfXywgJ2ltcG9ydGxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uZW5kc3dpdGgoJ19ib290c3RyYXAucHknKSwgbW9kLl9fZmlsZV9fKQorCisgICAgZGVmIHRlc3RfdGhlcmVfY2FuX2JlX29ubHlfb25lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxNTM4NiByZXZlYWxlZCBhIHRyaWNreSBsb29waG9sZSBpbiB0aGUgYm9vdHN0cmFwcGluZworICAgICAgICAjIFRoaXMgdGVzdCBpcyB0ZWNobmljYWxseSByZWR1bmRhbnQsIHNpbmNlIHRoZSBidWcgY2F1c2VkIGltcG9ydGluZworICAgICAgICAjIHRoaXMgdGVzdCBtb2R1bGUgdG8gY3Jhc2ggY29tcGxldGVseSwgYnV0IGl0IGhlbHBzIHByb3ZlIHRoZSBwb2ludAorICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CisgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFjaGluZXJ5LkZpbGVGaW5kZXIsIG1vZC5GaWxlRmluZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGltcC5uZXdfbW9kdWxlLCBtb2QubmV3X21vZHVsZSkKKworCitjbGFzcyBJbXBvcnRUcmFjZWJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKKyAgICAgICAgc2VsZi5vbGRfcGF0aCA9IHN5cy5wYXRoWzpdCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBURVNURk4pCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5vbGRfcGF0aAorICAgICAgICBybXRyZWUoVEVTVEZOKQorCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgbW9kLCBjb250ZW50cywgZXh0PSIucHkiKToKKyAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCBtb2QgKyBleHQpCisgICAgICAgIHdpdGggb3BlbihmbmFtZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjb250ZW50cykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubG9hZCwgbW9kKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICByZXR1cm4gZm5hbWUKKworICAgIGRlZiBhc3NlcnRfdHJhY2ViYWNrKHNlbGYsIHRiLCBmaWxlcyk6CisgICAgICAgIGRlZHVwZWRfZmlsZXMgPSBbXQorICAgICAgICB3aGlsZSB0YjoKKyAgICAgICAgICAgIGNvZGUgPSB0Yi50Yl9mcmFtZS5mX2NvZGUKKyAgICAgICAgICAgIGZuID0gY29kZS5jb19maWxlbmFtZQorICAgICAgICAgICAgaWYgbm90IGRlZHVwZWRfZmlsZXMgb3IgZm4gIT0gZGVkdXBlZF9maWxlc1stMV06CisgICAgICAgICAgICAgICAgZGVkdXBlZF9maWxlcy5hcHBlbmQoZm4pCisgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGVkdXBlZF9maWxlcyksIGxlbihmaWxlcyksIGRlZHVwZWRfZmlsZXMpCisgICAgICAgIGZvciBmbiwgcGF0IGluIHppcChkZWR1cGVkX2ZpbGVzLCBmaWxlcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdCwgZm4pCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9tb2R1bGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgYXNzZXJ0UmFpc2VzKCkgY2xlYXJzIF9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIGltcG9ydCBub25leGlzdGVudF94eXp6eQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkltcG9ydEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX19dKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfbW9kdWxlX25lc3RlZChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiaW1wb3J0IG5vbmV4aXN0ZW50X3h5enp5IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkltcG9ydEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICdmb28ucHknXSkKKworICAgIGRlZiB0ZXN0X2V4ZWNfZmFpbHVyZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiMS8wIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlplcm9EaXZpc2lvbkVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICdmb28ucHknXSkKKworICAgIGRlZiB0ZXN0X2V4ZWNfZmFpbHVyZV9uZXN0ZWQoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgImltcG9ydCBiYXIiKQorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImJhciIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weScsICdiYXIucHknXSkKKworICAgICMgQSBmZXcgbW9yZSBleGFtcGxlcyBmcm9tIGlzc3VlICMxNTQyNQorICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiaW52YWxpZCBzeW50YXggaXMgaW52YWxpZCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJTeW50YXhFcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fXSkKKworICAgIGRlZiBfc2V0dXBfYnJva2VuX3BhY2thZ2Uoc2VsZiwgcGFyZW50LCBjaGlsZCk6CisgICAgICAgIHBrZ19uYW1lID0gIl9wYXJlbnRfZm9vIgorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5sb2FkLCBwa2dfbmFtZSkKKyAgICAgICAgcGtnX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCBwa2dfbmFtZSkKKyAgICAgICAgb3MubWtkaXIocGtnX3BhdGgpCisgICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5CisgICAgICAgIGluaXRfcGF0aCA9IG9zLnBhdGguam9pbihwa2dfcGF0aCwgJ19faW5pdF9fLnB5JykKKyAgICAgICAgd2l0aCBvcGVuKGluaXRfcGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShwYXJlbnQpCisgICAgICAgIGJhcl9wYXRoID0gb3MucGF0aC5qb2luKHBrZ19wYXRoLCAnYmFyLnB5JykKKyAgICAgICAgd2l0aCBvcGVuKGJhcl9wYXRoLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNoaWxkKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICByZXR1cm4gaW5pdF9wYXRoLCBiYXJfcGF0aAorCisgICAgZGVmIHRlc3RfYnJva2VuX3N1Ym1vZHVsZShzZWxmKToKKyAgICAgICAgaW5pdF9wYXRoLCBiYXJfcGF0aCA9IHNlbGYuX3NldHVwX2Jyb2tlbl9wYWNrYWdlKCIiLCAiMS8wIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9wYXJlbnRfZm9vLmJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlplcm9EaXZpc2lvbkVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGJhcl9wYXRoXSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9mcm9tKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIiIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIF9wYXJlbnRfZm9vIGltcG9ydCBiYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJJbXBvcnRFcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBiYXJfcGF0aF0pCisKKyAgICBkZWYgdGVzdF9icm9rZW5fcGFyZW50KHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIjEvMCIsICIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX3BhcmVudF9mb28uYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgaW5pdF9wYXRoXSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9wYXJlbnRfZnJvbShzZWxmKToKKyAgICAgICAgaW5pdF9wYXRoLCBiYXJfcGF0aCA9IHNlbGYuX3NldHVwX2Jyb2tlbl9wYWNrYWdlKCIxLzAiLCAiIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnJvbSBfcGFyZW50X2ZvbyBpbXBvcnQgYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgaW5pdF9wYXRoXSkKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9pbXBvcnRfYnVnKHNlbGYpOgorICAgICAgICAjIFdlIHNpbXVsYXRlIGEgYnVnIGluIGltcG9ydGxpYiBhbmQgY2hlY2sgdGhhdCBpdCdzIG5vdCBzdHJpcHBlZAorICAgICAgICAjIGF3YXkgZnJvbSB0aGUgdHJhY2ViYWNrLgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIiKQorICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBvbGRfbG9hZF9tb2R1bGUgPSBpbXBvcnRsaWIuU291cmNlTG9hZGVyLmxvYWRfbW9kdWxlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZSgqYXJncyk6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgICAgICBpbXBvcnRsaWIuU291cmNlTG9hZGVyLmxvYWRfbW9kdWxlID0gbG9hZF9tb2R1bGUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlplcm9EaXZpc2lvbkVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnPGZyb3plbiBpbXBvcnRsaWInLCBfX2ZpbGVfX10pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpbXBvcnRsaWIuU291cmNlTG9hZGVyLmxvYWRfbW9kdWxlID0gb2xkX2xvYWRfbW9kdWxlCiAKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIHJ1bl91bml0dGVzdChJbXBvcnRUZXN0cywgUHljYWNoZVRlc3RzLAogICAgICAgICAgICAgICAgICBQeWNSZXdyaXRpbmdUZXN0cywgUGF0aHNUZXN0cywgUmVsYXRpdmVJbXBvcnRUZXN0cywKICAgICAgICAgICAgICAgICAgT3ZlcnJpZGluZ0ltcG9ydEJ1aWx0aW5UZXN0cywKLSAgICAgICAgICAgICAgICAgUmVsYXRpdmVJbXBvcnRGcm9tSW1wb3J0bGliVGVzdHMpCisgICAgICAgICAgICAgICAgIEltcG9ydGxpYkJvb3RzdHJhcFRlc3RzLAorICAgICAgICAgICAgICAgICBUZXN0U3ltYm9saWNhbGx5TGlua2VkUGFja2FnZSwKKyAgICAgICAgICAgICAgICAgSW1wb3J0VHJhY2ViYWNrVGVzdHMpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CmluZGV4IGVjNjczMGUuLjJhMjJkMWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9dGVzdF9wYXRoKToKICAgICAgICAgaWYgcGF0aCAhPSB0ZXN0X3BhdGg6Ci0gICAgICAgICAgICAjIGlmIG91dCBjbGFzcyBpcyBvbiBzeXMucGF0aF9ob29rcywgd2UgbXVzdCByYWlzZQorICAgICAgICAgICAgIyBpZiBvdXIgY2xhc3MgaXMgb24gc3lzLnBhdGhfaG9va3MsIHdlIG11c3QgcmFpc2UKICAgICAgICAgICAgICMgSW1wb3J0RXJyb3IgZm9yIGFueSBwYXRoIGl0ZW0gdGhhdCB3ZSBjYW4ndCBoYW5kbGUuCiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgogICAgICAgICBzZWxmLnBhdGggPSBwYXRoCkBAIC0yMTUsNyArMjE1LDcgQEAKICAgICAgICAgc2VsZi5kb1Rlc3RJbXBvcnRzKGkpCiAKICAgICBkZWYgdGVzdFBhdGhIb29rKHNlbGYpOgotICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoUGF0aEltcG9ydGVyKQorICAgICAgICBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgUGF0aEltcG9ydGVyKQogICAgICAgICBzeXMucGF0aC5hcHBlbmQodGVzdF9wYXRoKQogICAgICAgICBzZWxmLmRvVGVzdEltcG9ydHMoKQogCkBAIC0yMjgsOCArMjI4LDEwIEBACiAgICAgZGVmIHRlc3RJbXBXcmFwcGVyKHNlbGYpOgogICAgICAgICBpID0gSW1wV3JhcHBlcigpCiAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGkpCi0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChJbXBXcmFwcGVyKQotICAgICAgICBtbmFtZXMgPSAoImNvbG9yc3lzIiwgInVybGxpYi5wYXJzZSIsICJkaXN0dXRpbHMuY29yZSIpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBJbXBXcmFwcGVyKQorICAgICAgICBtbmFtZXMgPSAoCisgICAgICAgICAgICAiY29sb3JzeXMiLCAidXJsbGliLnBhcnNlIiwgImRpc3R1dGlscy5jb3JlIiwgInN5cyIsCisgICAgICAgICkKICAgICAgICAgZm9yIG1uYW1lIGluIG1uYW1lczoKICAgICAgICAgICAgIHBhcmVudCA9IG1uYW1lLnNwbGl0KCIuIilbMF0KICAgICAgICAgICAgIGZvciBuIGluIGxpc3Qoc3lzLm1vZHVsZXMpOgpAQCAtMjM3LDcgKzIzOSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuXQogICAgICAgICBmb3IgbW5hbWUgaW4gbW5hbWVzOgogICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obW5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsiX19kdW1teV9fIl0pCi0gICAgICAgICAgICBtLl9fbG9hZGVyX18gICMgdG8gbWFrZSBzdXJlIHdlIGFjdHVhbGx5IGhhbmRsZWQgdGhlIGltcG9ydAorICAgICAgICAgICAgIyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGFuZGxlZCB0aGUgaW1wb3J0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtLCAiX19sb2FkZXJfXyIpKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZDA1ODUuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWZyb20gaW1wb3J0bGliLnRlc3QuX19tYWluX18gaW1wb3J0IHRlc3RfbWFpbgotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUzNDVjZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMzMgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworZGVmIHRlc3Rfc3VpdGUocGFja2FnZT1fX3BhY2thZ2VfXywgZGlyZWN0b3J5PW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpOgorICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6CisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgoJy4nLCAnX18nKSk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgbmFtZSkKKyAgICAgICAgaWYgKG9zLnBhdGguaXNmaWxlKHBhdGgpIGFuZCBuYW1lLnN0YXJ0c3dpdGgoJ3Rlc3RfJykgYW5kCisgICAgICAgICAgICAgICAgbmFtZS5lbmRzd2l0aCgnLnB5JykpOgorICAgICAgICAgICAgc3VibW9kdWxlX25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpWzBdCisgICAgICAgICAgICBtb2R1bGVfbmFtZSA9ICJ7MH0uezF9Ii5mb3JtYXQocGFja2FnZSwgc3VibW9kdWxlX25hbWUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZHVsZV9uYW1lLCBsZXZlbD0wKQorICAgICAgICAgICAgbW9kdWxlX3Rlc3RzID0gdW5pdHRlc3QuZmluZFRlc3RDYXNlcyhzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0pCisgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KG1vZHVsZV90ZXN0cykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgcGFja2FnZV9uYW1lID0gInswfS57MX0iLmZvcm1hdChwYWNrYWdlLCBuYW1lKQorICAgICAgICAgICAgX19pbXBvcnRfXyhwYWNrYWdlX25hbWUsIGxldmVsPTApCisgICAgICAgICAgICBwYWNrYWdlX3Rlc3RzID0gZ2V0YXR0cihzeXMubW9kdWxlc1twYWNrYWdlX25hbWVdLCAndGVzdF9zdWl0ZScpKCkKKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QocGFja2FnZV90ZXN0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgcmV0dXJuIHN1aXRlCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN0YXJ0X2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICB0b3BfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShzdGFydF9kaXIpKQorICAgIHRlc3RfbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdF9sb2FkZXIuZGlzY292ZXIoc3RhcnRfZGlyLCB0b3BfbGV2ZWxfZGlyPXRvcF9kaXIpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19tYWluX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzk3MTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19tYWluX18ucHkKQEAgLTAsMCArMSwyMCBAQAorIiIiUnVuIGltcG9ydGxpYidzIHRlc3Qgc3VpdGUuCisKK1NwZWNpZnlpbmcgdGhlIGBgLS1idWlsdGluYGAgZmxhZyB3aWxsIHJ1biB0ZXN0cywgd2hlcmUgYXBwbGljYWJsZSwgd2l0aAorYnVpbHRpbnMuX19pbXBvcnRfXyBpbnN0ZWFkIG9mIGltcG9ydGxpYi5fX2ltcG9ydF9fLgorCisiIiIKK2Zyb20gLiBpbXBvcnQgdGVzdF9tYWluCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdFeGVjdXRlIHRoZSBpbXBvcnRsaWIgdGVzdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWl0ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsdGluJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3VzZSBidWlsdGlucy5fX2ltcG9ydF9fKCkgaW5zdGVhZCBvZiBpbXBvcnRsaWInKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5idWlsdGluOgorICAgICAgICB1dGlsLnVzaW5nX19faW1wb3J0X18gPSBUcnVlCisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9hYmMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9hYmMucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2FiYy5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL19faW5pdF9fLnB5CmluZGV4IDMxYTNiNWYuLjE1YzBhZGUgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKQEAgLTEsMTAgKzEsMTAgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmJ1aWx0aW4nLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmJ1aWx0aW4nLCBkaXJlY3RvcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQppbmRleCA0MGY2OTBlLi4xNDY1MzhkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CkBAIC0zNSwxNCArMzUsMTQgQEAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBhc3NlcnQgJ2ltcG9ydGxpYicgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwogICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKCdpbXBvcnRsaWInKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2lnbm9yZV9wYXRoKHNlbGYpOgogICAgICAgICAjIFRoZSB2YWx1ZSBmb3IgJ3BhdGgnIHNob3VsZCBhbHdheXMgdHJpZ2dlciBhIGZhaWxlZCBpbXBvcnQuCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKICAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3BrZyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggODMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDFhODUzOWIuLjhlMTg2ZTcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKQEAgLTE4LDEwICsxOCwxMCBAQAogCiAgICAgZGVmIHZlcmlmeShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgbW9kdWxlIG1hdGNoZXMgYWdhaW5zdCB3aGF0IGl0IHNob3VsZCBoYXZlLiIiIgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQogICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gc2VsZi52ZXJpZmljYXRpb24uaXRlbXMoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZS5fX25hbWVfXyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGUuX19uYW1lX18sIHN5cy5tb2R1bGVzKQogCiAgICAgbG9hZF9tb2R1bGUgPSBzdGF0aWNtZXRob2QobGFtYmRhIG5hbWU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUobmFtZSkpCkBAIC00OSwyMCArNDksMjIgQEAKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgogICAgICAgICAgICAgbW9kdWxlMSA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCiAgICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUxIGlzIG1vZHVsZTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ2Rzc2RzZGZmZicKICAgICAgICAgYXNzZXJ0IG5hbWUgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCiAKICAgICBkZWYgdGVzdF9hbHJlYWR5X2ltcG9ydGVkKHNlbGYpOgogICAgICAgICAjIFVzaW5nIHRoZSBuYW1lIG9mIGEgbW9kdWxlIGFscmVhZHkgaW1wb3J0ZWQgYnV0IG5vdCBhIGJ1aWx0LWluIHNob3VsZAogICAgICAgICAjIHN0aWxsIGZhaWwuCiAgICAgICAgIGFzc2VydCBoYXNhdHRyKGltcG9ydGxpYiwgJ19fZmlsZV9fJykgICMgTm90IGEgYnVpbHQtaW4uCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ2ltcG9ydGxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdpbXBvcnRsaWInKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03MiwxMiArNzQsMTIgQEAKICAgICBkZWYgdGVzdF9nZXRfY29kZShzZWxmKToKICAgICAgICAgIyBUaGVyZSBpcyBubyBjb2RlIG9iamVjdC4KICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfY29kZShidWlsdGluX3V0aWwuTkFNRSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdCBpcyBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIHNvdXJjZS4KICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfc291cmNlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgQ2Fubm90IGJlIGEgcGFja2FnZS4KQEAgLTg4LDggKzkwLDkgQEAKICAgICAgICAgIyBNb2R1bGVzIG5vdCBidWlsdC1pbiBzaG91bGQgcmFpc2UgSW1wb3J0RXJyb3IuCiAgICAgICAgIGZvciBtZXRoX25hbWUgaW4gKCdnZXRfY29kZScsICdnZXRfc291cmNlJywgJ2lzX3BhY2thZ2UnKToKICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWV0aF9uYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBtZXRob2QoYnVpbHRpbl91dGlsLkJBRF9OQU1FKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhidWlsdGluX3V0aWwuQkFEX05BTUUpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NyUKY29weSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKY29weSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uYzAzMzkyMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmV4dGVuc2lvbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IGUwNjJmYjYuLjc2YzUzZTQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdApAQCAtMTMsMTkgKzE0LDI2IEBACiAgICAgICAgIGdvb2RfbmFtZSA9IGV4dF91dGlsLk5BTUUKICAgICAgICAgYmFkX25hbWUgPSBnb29kX25hbWUudXBwZXIoKQogICAgICAgICBhc3NlcnQgZ29vZF9uYW1lICE9IGJhZF9uYW1lCi0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIoZXh0X3V0aWwuUEFUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfYm9vdHN0cmFwLkV4dGVuc2lvbkZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuRVhURU5TSU9OX1NVRkZJWEVTKSkKICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShiYWRfbmFtZSkKIAogICAgIGRlZiB0ZXN0X2Nhc2Vfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi51bnNldCgnUFlUSE9OQ0FTRU9LJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmRfbW9kdWxlKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDY0JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKaW5kZXggZWE5NzQ4My4uYTYzY2ZkYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4gaW1wb3J0IHV0aWwKIApAQCAtOSwxNSArOSwxNiBAQAogICAgICIiIlRlc3QgdGhlIGZpbmRlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCiAKICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBpbXBvcnRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIodXRpbC5QQVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpKQorICAgICAgICBpbXBvcnRlciA9IG1hY2hpbmVyeS5GaWxlRmluZGVyKHV0aWwuUEFUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuTkFNRSkpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIEV4dGVuc2lvbiBtb2R1bGVzIGNhbm5vdCBiZSBhbiBfX2luaXRfXyBmb3IgYSBwYWNrYWdlLgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgYXMgYW4gX19pbml0X18gYXZhaWxhYmxlIGZvciB0ZXN0aW5nLgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKQEAgLTI1LDcgKzI2LDcgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9pbl9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIEV4dGVuc2lvbiBtb2R1bGVzIGNhbm5vdCBiZSBhbiBfX2luaXRfXyBmb3IgYSBwYWNrYWdlLgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgYXMgYW4gX19pbml0X18gYXZhaWxhYmxlIGZvciB0ZXN0aW5nLgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX292ZXJfbW9kdWxlKHNlbGYpOgpAQCAtMzMsOSArMzQsNyBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5maW5kX21vZHVsZSgnYXNkZmprbDsnKSBpcyBOb25lKQotCi0gICAgIyBYWFggUmFpc2UgYW4gZXhjZXB0aW9uIGlmIHNvbWVvbmUgdHJpZXMgdG8gdXNlIHRoZSAncGF0aCcgYXJndW1lbnQ/CisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZF9tb2R1bGUoJ2FzZGZqa2w7JykpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNWFmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKQEAgLTAsMCArMSw3OSBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQorZnJvbSAuIGltcG9ydCB1dGlsIGFzIGV4dF91dGlsCitmcm9tIC4uIGltcG9ydCBhYmMKK2Zyb20gLi4gaW1wb3J0IHV0aWwKKworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6CisKKyAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmxvYWRlciA9IG1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKGV4dF91dGlsLk5BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF91dGlsLkZJTEVQQVRIKQorCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGVfQVBJKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGRlZmF1bHQgYXJndW1lbnQgZm9yIGxvYWRfbW9kdWxlKCkuCisgICAgICAgIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdYWFgnKQorCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgZXh0X3V0aWwuTkFNRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBleHRfdXRpbC5GSUxFUEFUSCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19wYWNrYWdlX18nLCAnJyldOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXh0X3V0aWwuTkFNRSwgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLl9fbG9hZGVyX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIpCisKKyAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgYXMgX19pbml0X18gYXZhaWxhYmxlIGZvciB0ZXN0aW5nLgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKKyAgICAgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGluIGEgcGFja2FnZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6CisgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoZXh0X3V0aWwuTkFNRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKKworICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgTm8gZWFzeSB3YXkgdG8gdHJpZ2dlciBhIGZhaWx1cmUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGltcG9ydC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKKyAgICAgICAgbmFtZSA9ICdhc2RmamtsOycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCisKKyAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2UoZXh0X3V0aWwuTkFNRSkpCisgICAgICAgIGZvciBzdWZmaXggaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ3NvbWUnLCAncGF0aCcsICdwa2cnLCAnX19pbml0X18nICsgc3VmZml4KQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoJ3BrZycsIHBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyLmlzX3BhY2thZ2UoJ3BrZycpKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KExvYWRlclRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKc2ltaWxhcml0eSBpbmRleCA4MCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDQ2MTA0MjAuLjFkOTY5YTEgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLiBpbXBvcnQgdXRpbAogCiBpbXBvcnQgY29sbGVjdGlvbnMKQEAgLTE0LDcgKzE0LDggQEAKICAgICAjIFhYWCBTaG91bGQgaXQgb25seSB3b3JrIGZvciBkaXJlY3RvcmllcyBjb250YWluaW5nIGFuIGV4dGVuc2lvbiBtb2R1bGU/CiAKICAgICBkZWYgaG9vayhzZWxmLCBlbnRyeSk6Ci0gICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9maWxlX3BhdGhfaG9vayhlbnRyeSkKKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vaygobWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKSkoZW50cnkpCiAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICAjIFBhdGggaG9vayBzaG91bGQgaGFuZGxlIGEgZGlyZWN0b3J5IHdoZXJlIGEga25vd24gZXh0ZW5zaW9uIG1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQppbmRleCBkMTQ5MTY5Li5hMjY2ZGQ5IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgaW1wCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIApAQCAtNiwxMCArNyw5IEBACiBFWFQgPSBOb25lCiBGSUxFTkFNRSA9IE5vbmUKIE5BTUUgPSAnX3Rlc3RjYXBpJwotX2ZpbGVfZXh0cyA9IFt4WzBdIGZvciB4IGluIGltcC5nZXRfc3VmZml4ZXMoKSBpZiB4WzJdID09IGltcC5DX0VYVEVOU0lPTl0KIHRyeToKICAgICBmb3IgUEFUSCBpbiBzeXMucGF0aDoKLSAgICAgICAgZm9yIEVYVCBpbiBfZmlsZV9leHRzOgorICAgICAgICBmb3IgRVhUIGluIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVM6CiAgICAgICAgICAgICBGSUxFTkFNRSA9IE5BTUUgKyBFWFQKICAgICAgICAgICAgIEZJTEVQQVRIID0gb3MucGF0aC5qb2luKFBBVEgsIEZJTEVOQU1FKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKFBBVEgsIEZJTEVOQU1FKSk6CkBAIC0xOCw0ICsxOCwzIEBACiAgICAgICAgIFBBVEggPSBFWFQgPSBGSUxFTkFNRSA9IEZJTEVQQVRIID0gTm9uZQogZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgcGFzcwotZGVsIF9maWxlX2V4dHMKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLjllZjEwM2IgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5mcm96ZW4nLCBkaXJlY3RvcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CmluZGV4IGRiODgzNzkuLmZhMGMyYTAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSAuLi4gaW1wb3J0IG1hY2hpbmVyeQorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuLiBpbXBvcnQgYWJjCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMzUsNyArMzUsNyBAQAogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kKCc8bm90IHJlYWw+JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpzaW1pbGFyaXR5IGluZGV4IDczJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKaW5kZXggYjY4NWVmNS4uNGI4ZWMxNSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKQEAgLTEwLDU1ICsxMCw3MCBAQAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19faGVsbG9fXycpLCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCi0gICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19oZWxsb19fJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKLSAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJycsICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyfQorICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19faGVsbG9fXycsCisgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICcnLAorICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGNoZWNrLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19fcGhlbGxvX18nKSwgIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19waGVsbG9fXycpCi0gICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXycsICdfX2ZpbGVfXyc6ICc8ZnJvemVuPicsCi0gICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX19waGVsbG9fXycsICdfX3BhdGhfXyc6IFsnX19waGVsbG9fXyddLAotICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJ9CisgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXycsCisgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX19waGVsbG9fXycsCisgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbJ19fcGhlbGxvX18nXSwKKyAgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGNoZWNrLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIobW9kdWxlLCBhdHRyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cl92YWx1ZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIF9fcGhlbGxvX18uJXMsICVyICE9ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXR0ciwgYXR0cl92YWx1ZSwgdmFsdWUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpKQogCiAgICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX3BoZWxsb19fJywgJ19fcGhlbGxvX18uc3BhbScpLCBcCiAgICAgICAgICAgICAgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX3BoZWxsb19fLnNwYW0nKQotICAgICAgICAgICAgY2hlY2sgPSB7J19fbmFtZV9fJzogJ19fcGhlbGxvX18uc3BhbScsICdfX2ZpbGVfXyc6ICc8ZnJvemVuPicsCisgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXy5zcGFtJywKICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJ19fcGhlbGxvX18nLAotICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcn0KKyAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBjaGVjay5pdGVtcygpOgogICAgICAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKG1vZHVsZSwgYXR0cikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHJfdmFsdWUsIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBfX3BoZWxsb19fLnNwYW0uJXMsICVyICE9ICVyIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXR0ciwgYXR0cl92YWx1ZSwgdmFsdWUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19oZWxsb19fJyksIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZTEgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCiAgICAgICAgICAgICBtb2R1bGUyID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX2hlbGxvX18nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdIZWxsbyB3b3JsZCFcbkhlbGxvIHdvcmxkIVxuJykKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19oZWxsb19fJyksIGNhcHR1cmVkX3N0ZG91dCgpOgorICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX2hlbGxvX18nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vZHVsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bW9kdWxlICdfX2hlbGxvX18nIChmcm96ZW4pPiIpCisKICAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgogICAgICAgICAjIE5vIHdheSB0byB0cmlnZ2VyIGFuIGVycm9yIGluIGEgZnJvemVuIG1vZHVsZS4KICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKICAgICAgICAgYXNzZXJ0IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5maW5kX21vZHVsZSgnX25vdF9yZWFsJykgaXMgTm9uZQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19ub3RfcmVhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OCw3ICs5Myw3IEBACiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKICAgICAgICAgIyBTaG91bGQgYWx3YXlzIHJldHVybiBOb25lLgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIuZ2V0X3NvdXJjZSgnX19oZWxsb19fJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdCBpcyBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKICAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIHRlbGwgd2hhdCBpcyBhIHBhY2thZ2UuCkBAIC04NiwxNCArMTAxLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICgnX19waGVsbG9fXy5zcGFtJywgRmFsc2UpKQogICAgICAgICBmb3IgbmFtZSwgaXNfcGFja2FnZSBpbiB0ZXN0X2ZvcjoKICAgICAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5pc19wYWNrYWdlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChyZXN1bHQpID09IGlzX3BhY2thZ2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvb2wocmVzdWx0KSwgaXNfcGFja2FnZSkKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgUmFpc2UgSW1wb3J0RXJyb3IgZm9yIG1vZHVsZXMgdGhhdCBhcmUgbm90IGZyb3plbi4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsIG1ldGhfbmFtZSkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgbWV0aG9kKCdpbXBvcnRsaWInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ2ltcG9ydGxpYicpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NyUKY29weSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKY29weSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLjM2NmU1MzEgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy9fX2luaXRfXy5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuaW1wb3J0XycsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKaW5kZXggNTA1NmFlNS4uNzgzY2RlMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKQEAgLTY3LDcgKzY3LDcgQEAKIAogICAgIGRlZiB0ZXN0X2J1bmtfX3BhY2thZ2VfXyhzZWxmKToKICAgICAgICAgZ2xvYmFscyA9IHsnX19wYWNrYWdlX18nOiA0Mn0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygnJywgZ2xvYmFscywge30sIFsncmVsaW1wb3J0J10sIDEpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q0Y2Q5NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTAsMCArMSw2NyBAQAorZnJvbSAuLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRsaWJfdGVzdF91dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEJhZExvYWRlckZpbmRlcjoKKyAgICBiYWQgPSAnZmluZS5ib2d1cycKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgIGlmIGZ1bGxuYW1lID09IGNscy5iYWQ6CisgICAgICAgICAgICByZXR1cm4gY2xzCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGxvYWRfbW9kdWxlKGNscywgZnVsbG5hbWUpOgorICAgICAgICBpZiBmdWxsbmFtZSA9PSBjbHMuYmFkOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ0kgY2Fubm90IGJlIGxvYWRlZCEnKQorCisKK2NsYXNzIEFQSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCBBUEktc3BlY2lmaWMgZGV0YWlscyBmb3IgX19pbXBvcnRfXyAoZS5nLiByYWlzaW5nIHRoZSByaWdodAorICAgIGV4Y2VwdGlvbiB3aGVuIHBhc3NpbmcgaW4gYW4gaW50IGZvciB0aGUgbW9kdWxlIG5hbWUpLiIiIgorCisgICAgZGVmIHRlc3RfbmFtZV9yZXF1aXJlc19ycGFyaXRpb24oc2VsZik6CisgICAgICAgICMgUmFpc2UgVHlwZUVycm9yIGlmIGEgbm9uLXN0cmluZyBpcyBwYXNzZWQgaW4gZm9yIHRoZSBtb2R1bGUgbmFtZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5pbXBvcnRfKDQyKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfbGV2ZWwoc2VsZik6CisgICAgICAgICMgUmFpc2UgVmFsdWVFcnJvciB3aGVuIGEgbmVnYXRpdmUgbGV2ZWwgaXMgc3BlY2lmaWVkLgorICAgICAgICAjIFBFUCAzMjggZGlkIGF3YXkgd2l0aCBzeXMubW9kdWxlIE5vbmUgZW50cmllcyBhbmQgdGhlIGFtYmlndWl0eSBvZgorICAgICAgICAjIGFic29sdXRlL3JlbGF0aXZlIGltcG9ydHMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF8oJ29zJywgZ2xvYmFscygpLCBsZXZlbD0tMSkKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X2Zyb21saXN0X2VudHJ5KHNlbGYpOgorICAgICAgICAjIElmIHNvbWV0aGluZyBpbiBmcm9tbGlzdCBkb2Vzbid0IGV4aXN0LCB0aGF0J3Mgb2theS4KKyAgICAgICAgIyBpc3N1ZTE1NzE1CisgICAgICAgIG1vZCA9IGltcC5uZXdfbW9kdWxlKCdmaW5lJykKKyAgICAgICAgbW9kLl9fcGF0aF9fID0gWydYWFgnXQorICAgICAgICB3aXRoIGltcG9ydGxpYl90ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bQmFkTG9hZGVyRmluZGVyXSk6CisgICAgICAgICAgICB3aXRoIGltcG9ydGxpYl90ZXN0X3V0aWwudW5jYWNoZSgnZmluZScpOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydmaW5lJ10gPSBtb2QKKyAgICAgICAgICAgICAgICB1dGlsLmltcG9ydF8oJ2ZpbmUnLCBmcm9tbGlzdD1bJ25vdCBoZXJlJ10pCisKKyAgICBkZWYgdGVzdF9mcm9tbGlzdF9sb2FkX2Vycm9yX3Byb3BhZ2F0ZXMoc2VsZik6CisgICAgICAgICMgSWYgc29tZXRoaW5nIGluIGZyb21saXN0IHRyaWdnZXJzIGFuIGV4Y2VwdGlvbiBub3QgcmVsYXRlZCB0byBub3QKKyAgICAgICAgIyBleGlzdGluZywgbGV0IHRoYXQgZXhjZXB0aW9uIHByb3BhZ2F0ZS4KKyAgICAgICAgIyBpc3N1ZTE1MzE2CisgICAgICAgIG1vZCA9IGltcC5uZXdfbW9kdWxlKCdmaW5lJykKKyAgICAgICAgbW9kLl9fcGF0aF9fID0gWydYWFgnXQorICAgICAgICB3aXRoIGltcG9ydGxpYl90ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bQmFkTG9hZGVyRmluZGVyXSk6CisgICAgICAgICAgICB3aXRoIGltcG9ydGxpYl90ZXN0X3V0aWwudW5jYWNoZSgnZmluZScpOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydmaW5lJ10gPSBtb2QKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgdXRpbC5pbXBvcnRfKCdmaW5lJywgZnJvbWxpc3Q9Wydib2d1cyddKQorCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoQVBJVGVzdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CmluZGV4IDQ4ZGM2NDMuLmJmNjgwMjcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQpAQCAtMzQsOCArMzQsOSBAQAogICAgICAgICBuYW1lID0gJ3VzaW5nX05vbmUnCiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBOb25lCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCiAKICAgICBkZWYgY3JlYXRlX21vY2soc2VsZiwgKm5hbWVzLCByZXR1cm5fPU5vbmUpOgogICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoKm5hbWVzKQpAQCAtNjQsNyArNjUsOCBAQAogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLm1vZHVsZScpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnbW9kdWxlJykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlkKG1vZHVsZS5tb2R1bGUpLCBpZChzeXMubW9kdWxlc1sncGtnLm1vZHVsZSddKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKG1vZHVsZS5tb2R1bGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc3lzLm1vZHVsZXNbJ3BrZy5tb2R1bGUnXSkpCiAKICAgICAjIFNlZSB0ZXN0X3VzaW5nX2NhY2hlX2FmdGVyX2xvYWRlcigpIGZvciByZWFzb25pbmcuCiAgICAgQGltcG9ydF91dGlsLmltcG9ydGxpYl9vbmx5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQppbmRleCBiOTAzZThlLi4yODE5NjFkIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlRlc3QgdGhhdCB0aGUgc2VtYW50aWNzIHJlbGF0aW5nIHRvIHRoZSAnZnJvbWxpc3QnIGFyZ3VtZW50IGFyZSBjb3JyZWN0LiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgaW1wCiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgUmV0dXJuVmFsdWUodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzgsMTEgKzM5LDkgQEAKICAgICBbb2JqZWN0IGNhc2VdLiBUaGlzIGlzIGV2ZW4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGRvZXMgbm90IGV4aXN0IFtiYWQgb2JqZWN0XS4KIAogICAgIElmIGEgcGFja2FnZSBpcyBiZWluZyBpbXBvcnRlZCwgdGhlbiB3aGF0IGlzIGxpc3RlZCBpbiBmcm9tbGlzdCBtYXkgYmUKLSAgICB0cmVhdGVkIGFzIGEgbW9kdWxlIHRvIGJlIGltcG9ydGVkIFttb2R1bGVdLiBCdXQgb25jZSBhZ2FpbiwgZXZlbiBpZgotICAgIHNvbWV0aGluZyBpbiBmcm9tbGlzdCBkb2VzIG5vdCBleGlzdCBhcyBhIG1vZHVsZSwgbm8gZXJyb3IgaXMgdGhyb3duCi0gICAgW25vIG1vZHVsZV0uIEFuZCB0aGlzIGV4dGVuZHMgdG8gd2hhdCBpcyBjb250YWluZWQgaW4gX19hbGxfXyB3aGVuICcqJyBpcwotICAgIGltcG9ydGVkIFt1c2luZyAqXS4gQW5kICcqJyBkb2VzIG5vdCBuZWVkIHRvIGJlIHRoZSBvbmx5IG5hbWUgaW4gdGhlCi0gICAgZnJvbWxpc3QgW3VzaW5nICogd2l0aCBvdGhlcnNdLgorICAgIHRyZWF0ZWQgYXMgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgW21vZHVsZV0uIEFuZCB0aGlzIGV4dGVuZHMgdG8gd2hhdCBpcworICAgIGNvbnRhaW5lZCBpbiBfX2FsbF9fIHdoZW4gJyonIGlzIGltcG9ydGVkIFt1c2luZyAqXS4gQW5kICcqJyBkb2VzIG5vdCBuZWVkCisgICAgdG8gYmUgdGhlIG9ubHkgbmFtZSBpbiB0aGUgZnJvbWxpc3QgW3VzaW5nICogd2l0aCBvdGhlcnNdLgogCiAgICAgIiIiCiAKQEAgLTcwLDE0ICs2OSw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnbW9kdWxlJykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUubW9kdWxlLl9fbmFtZV9fLCAncGtnLm1vZHVsZScpCiAKLSAgICBkZWYgdGVzdF9ub19tb2R1bGVfZnJvbV9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFtubyBtb2R1bGVdCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycpIGFzIGltcG9ydGVyOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJywgZnJvbWxpc3Q9J25vbl9leGlzdGVudCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdub25fZXhpc3RlbnQnKSkKLQogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2QnKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CmluZGV4IDNiMTMwYzkuLjRkODVmODAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKQEAgLTEsNyArMSwxMCBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiAKIAogY2xhc3MgQ2FsbGluZ09yZGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMzLDYgKzM2LDIxIEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bZmlyc3QsIHNlY29uZF0pOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X3V0aWwuaW1wb3J0Xyhtb2RfbmFtZSksIDQyKQogCisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBzeXMubWV0YV9wYXRoIGlzIGVtcHR5LgorICAgICAgICBtb2R1bGVfbmFtZSA9ICdub3RoaW5nJworICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W10pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0bGliLl9ib290c3RyYXAuX2ZpbmRfbW9kdWxlKCdub3RoaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCiAKIGNsYXNzIENhbGxTaWduYXR1cmUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02NCw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXJncyksIDIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa3dhcmdzKSwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIG1vZF9uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXJnc1sxXSkKIAogICAgIGRlZiB0ZXN0X3dpdGhfcGF0aChzZWxmKToKICAgICAgICAgIyBbcGF0aCBzZXRdCkBAIC04NCw3ICsxMDIsNyBAQAogICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgYWxsIGFyZ3VtZW50cyBhcmUgcG9zaXRpb25hbC4KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGt3YXJncykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIG1vZF9uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIHBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBwYXRoKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTE4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTAsMCArMSwxMTIgQEAKK2Zyb20gLi4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW1wb3J0bGliCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitjbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmVudChzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLm1vZHVsZScpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX2ltcG9ydGluZ19jaGlsZChzZWxmKToKKyAgICAgICAgZGVmIF9faW5pdF9fKCk6CisgICAgICAgICAgICBpbXBvcnQgcGtnLm1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cnOiBfX2luaXRfX30pCisgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9yZWxhdGl2ZV9pbXBvcnRpbmdfY2hpbGQoc2VsZik6CisgICAgICAgIGRlZiBfX2luaXRfXygpOgorICAgICAgICAgICAgZnJvbSAuIGltcG9ydCBtb2R1bGUKKyAgICAgICAgICAgIDEvMAorICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnJzogX19pbml0X199KQorICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgcmFpc2VzIEltcG9ydEVycm9yIG9uIHRoZSAiZnJvbSAuIGltcG9ydCBtb2R1bGUiCisgICAgICAgICAgICAgICAgICAgICMgbGluZSwgbm90IHN1cmUgd2h5LgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICAjIFhYWCBGYWxzZQorICAgICAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9kb3VibGVfcmVsYXRpdmVfaW1wb3J0aW5nX2NoaWxkKHNlbGYpOgorICAgICAgICBkZWYgX19pbml0X18oKToKKyAgICAgICAgICAgIGZyb20gLi5zdWJwa2cgaW1wb3J0IG1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWJwa2cuX19pbml0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZy5zdWJwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLnN1YnBrZyc6IF9faW5pdF9ffSkKKyAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHJhaXNlcyBJbXBvcnRFcnJvciBvbiB0aGUgImZyb20gLi5zdWJwa2cgaW1wb3J0IG1vZHVsZSIKKyAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBub3Qgc3VyZSB3aHkuCisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5zdWJwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZy5zdWJwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLnN1YnBrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZy5zdWJwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICAjIFhYWCBGYWxzZQorICAgICAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCdwa2cuc3VicGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG5vbi1wYWNrYWdlIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KKyAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgJ19fcGF0aF9fJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMubm9fc3VibW9kdWxlc19oZXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlX2J1dF9zaWRlX2VmZmVjdHMoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgaW5qZWN0cyBzb21ldGhpbmcgaW50byBzeXMubW9kdWxlcyBhcyBhIHNpZGUtZWZmZWN0LCB0aGVuCisgICAgICAgICMgcGljayB1cCBvbiB0aGF0IGZhY3QuCisgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICBzdWJuYW1lID0gbmFtZSArICcuYicKKyAgICAgICAgZGVmIG1vZHVsZV9pbmplY3Rpb24oKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW3N1Ym5hbWVdID0gJ3RvdGFsIGJ1bmsnCisgICAgICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzKCdtb2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J21vZCc6IG1vZHVsZV9pbmplY3Rpb259KQorICAgICAgICB3aXRoIG1vY2tfbW9kdWxlcyBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oc3VibmFtZSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChzdWJuYW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwODZjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0wLDAgKzEsOTggQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4uIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKKworY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCisKKyAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgorICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKworICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorCisgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9saXN0KHNlbGYpOgorICAgICAgICAjIEFuIGVtcHR5IGxpc3Qgc2hvdWxkIG5vdCBjb3VudCBhcyBhc2tpbmcgZm9yIHN5cy5wYXRoLgorICAgICAgICBtb2R1bGUgPSAnbW9kdWxlJworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9ob29rcyBpcyBlbXB0eSBhIHdhcm5pbmcgaXMgcmFpc2VkLAorICAgICAgICAjIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGdldHMgTm9uZSBzZXQsIGFuZCBQYXRoRmluZGVyIHJldHVybnMgTm9uZS4KKyAgICAgICAgcGF0aF9lbnRyeSA9ICdib2d1c19wYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e30sIHBhdGhfaG9va3M9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyBzaG91bGQgY3JlYXRlIGEgZmluZGVyIHVzaW5nIHRoZSBjd2QuCisgICAgICAgIHBhdGggPSAnJworICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCisgICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5jdXJkaXIsIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9zLmN1cmRpciwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoRmluZGVyVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggYTBmNmIyZC4uNDU2OWMyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xOTMsNiArMTkzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ19fcnVucHlfcGtnX18udW5jbGUuY291c2luJykKICAgICAgICAgc2VsZi5yZWxhdGl2ZV9pbXBvcnRfdGVzdChjcmVhdGUsIGdsb2JhbHNfLCBjYWxsYmFjaykKIAorICAgIGRlZiB0ZXN0X2ltcG9ydF9yZWxhdGl2ZV9pbXBvcnRfbm9fZnJvbWxpc3Qoc2VsZik6CisgICAgICAgICMgSW1wb3J0IGEgcmVsYXRpdmUgbW9kdWxlIHcvIG5vIGZyb21saXN0LgorICAgICAgICBjcmVhdGUgPSBbJ2NyYXNoLl9faW5pdF9fJywgJ2NyYXNoLm1vZCddCisgICAgICAgIGdsb2JhbHNfID0gW3snX19wYWNrYWdlX18nOiAnY3Jhc2gnLCAnX19uYW1lX18nOiAnY3Jhc2gnfV0KKyAgICAgICAgZGVmIGNhbGxiYWNrKGdsb2JhbF8pOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygnY3Jhc2gnKQorICAgICAgICAgICAgbW9kID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnbW9kJywgZ2xvYmFsXywge30sIFtdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdjcmFzaC5tb2QnKQorICAgICAgICBzZWxmLnJlbGF0aXZlX2ltcG9ydF90ZXN0KGNyZWF0ZSwgZ2xvYmFsc18sIGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CisgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0Xygnc3lzJywgbGV2ZWw9MSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQppbmRleCA2NDljNWVkLi44NmFjMDY1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWJlMTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKQEAgLTAsMCArMSwxNyBAQAorIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCisKK1Rlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCitpbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCitPdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgordGhpcyBzY3JpcHQuCisKKyIiIgoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisKKyAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLjNlZjk3ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CmluZGV4IDMyNDU5MDcuLjBkOTEyYjYgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKQEAgLTMyLDYgKzMyLDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCisKIAogY2xhc3MgU291cmNlTG9hZGVyTW9jayhTb3VyY2VPbmx5TG9hZGVyTW9jayk6CiAKQEAgLTQwLDggKzQzLDEwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1hZ2ljPWltcC5nZXRfbWFnaWMoKSk6CiAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGF0aCkKICAgICAgICAgc2VsZi5ieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKKyAgICAgICAgc2VsZi5zb3VyY2Vfc2l6ZSA9IGxlbihzZWxmLnNvdXJjZSkKICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShtYWdpYykKLSAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNlbGYuc291cmNlX210aW1lKSkKKyAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9zaXplKSkKICAgICAgICAgY29kZV9vYmplY3QgPSBjb21waWxlKHNlbGYuc291cmNlLCBzZWxmLnBhdGgsICdleGVjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCiAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQpAQCAtNTYsOSArNjEsOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogCi0gICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIGFzc2VydCBwYXRoID09IHNlbGYucGF0aAotICAgICAgICByZXR1cm4gc2VsZi5zb3VyY2VfbXRpbWUKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnNvdXJjZV9tdGltZSwgJ3NpemUnOiBzZWxmLnNvdXJjZV9zaXplfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICBzZWxmLndyaXR0ZW5bcGF0aF0gPSBieXRlcyhkYXRhKQpAQCAtMTAyLDkgKzEwNywxMiBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQogICAgICAgICAgICAgcGF0aCA9IHN1cGVyKCkuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgICBhc3NlcnQgbGVuKHcpID09IDEKLSAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gcGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxtb2R1bGU+JworCiAKIGNsYXNzIFB5TG9hZGVyQ29tcGF0TW9jayhQeUxvYWRlck1vY2spOgogCkBAIC0xNDYsMTEgKzE1NCwxMiBAQAogICAgICAgICAgICAgc2VsZi5ieXRlY29kZV90b19wYXRoW25hbWVdID0gZGF0YVsncGF0aCddCiAgICAgICAgICAgICBtYWdpYyA9IGRhdGEuZ2V0KCdtYWdpYycsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl93X2xvbmcoZGF0YS5nZXQoJ210aW1lJywgc2VsZi5kZWZhdWx0X210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9zaXplID0gaW1wb3J0bGliLl93X2xvbmcobGVuKHNlbGYuc291cmNlKSAmIDB4RkZGRkZGRkYpCiAgICAgICAgICAgICBpZiAnYmMnIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgYmMgPSBkYXRhWydiYyddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJjID0gc2VsZi5jb21waWxlX2JjKG5hbWUpCi0gICAgICAgICAgICBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXSA9IG1hZ2ljICsgbXRpbWUgKyBiYworICAgICAgICAgICAgc2VsZi5tb2R1bGVfYnl0ZWNvZGVbbmFtZV0gPSBtYWdpYyArIG10aW1lICsgc291cmNlX3NpemUgKyBiYwogCiAgICAgZGVmIGNvbXBpbGVfYmMoc2VsZiwgbmFtZSk6CiAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5tb2R1bGVfcGF0aHMuZ2V0KG5hbWUsICc8dGVzdD4nKSBvciAnPHRlc3Q+JwpAQCAtMTk4LDcgKzIwNyw3IEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAgICAgICAgICAgICBjb2RlX29iamVjdCA9IHN1cGVyKCkuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBjb2RlX29iamVjdAogCiBjbGFzcyBQeUxvYWRlclRlc3RzKHRlc3RpbmdfYWJjLkxvYWRlclRlc3RzKToKQEAgLTIxOSw3ICsyMjgsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsIF9fcGFja2FnZV9fPScnLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKQEAgLTIzMSw3ICsyNDAsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsCiAgICAgICAgICAgICAgICAgX19wYXRoX189W29zLnBhdGguZGlybmFtZShwYXRoKV0sIF9fcGFja2FnZV9fPW5hbWUsCiAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQpAQCAtMjU3LDggKzI2Niw4IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGxvYWRlZF9tb2R1bGUgPSBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVkX21vZHVsZSBpcyBtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLm1vZHVsZXNbbmFtZV0gaXMgbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWRfbW9kdWxlLCBtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2NrLCBuYW1lCiAKICAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgpAQCAtMjcxLDcgKzI4MCw3IEBACiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5tb2R1bGVzW25hbWVdIGlzIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2JsYWgnKSkKICAgICAgICAgcmV0dXJuIG1vY2sKIApAQCAtMjgyLDcgKzI5MSw3IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgbm90IGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgcmV0dXJuIG1vY2sKIAogCkBAIC0zNDIsNyArMzUxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCAxKQotICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6XQorICAgICAgICBzb3VyY2Vfc2l6ZSA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6MTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suc291cmNlKSAmIDB4RkZGRkZGRkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLl9yX2xvbmcoc291cmNlX3NpemUpKQorICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzEyOl0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYywgbW9jay5jb21waWxlX2JjKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgpAQCAtNDEyLDggKzQyNCw3IEBACiAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gZG9udF93cml0ZV9ieXRlY29kZQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChuYW1lIGluIG1vY2subW9kdWxlX2J5dGVjb2RlKSBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfd3JpdGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSwgZG9udF93cml0ZV9ieXRlY29kZSkKIAogICAgIGRlZiB0ZXN0X25vX2J5dGVjb2RlX3dyaXR0ZW4oc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoVHJ1ZSkKQEAgLTQzOCw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWdpYyc6IGJhZF9tYWdpY319KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG1hZ2ljID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bOjRdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKIApAQCAtNDUxLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAge25hbWU6IHsncGF0aCc6ICdwYXRoL3RvL21vZC5ieXRlY29kZScsICdtdGltZSc6IG9sZF9tdGltZX19KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl9yX2xvbmcobW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bNDo4XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdGltZSwgUHlQeWNMb2FkZXJNb2NrLmRlZmF1bHRfbXRpbWUpCiAKQEAgLTQ2OSw4ICs0ODAsOSBAQAogICAgICAgICAgICAgICAgIHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKSwKICAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0KICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0sIGJjKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGUoc2VsZik6CiAgICAgICAgICMgTWlzc2luZyBjb2RlIG9iamVjdCBieXRlY29kZSBzaG91bGQgbGVhZCB0byBhbiBFT0ZFcnJvci4KQEAgLTUxNCw4ICs1MjYsOSBAQAogICAgICAgICAjIElmIGFsbCAqX3BhdGggbWV0aG9kcyByZXR1cm4gTm9uZSwgcmFpc2UgSW1wb3J0RXJyb3IuCiAgICAgICAgIG5hbWUgPSAnbW9kJwogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9wYXRoX0ltcG9ydEVycm9yKHNlbGYpOgogICAgICAgICAjIEFuIEltcG9ydEVycm9yIGZyb20gc291cmNlX3BhdGggc2hvdWxkIHRyaWdnZXIgYW4gSW1wb3J0RXJyb3IuCkBAIC01MzEsNyArNTQ0LDcgQEAKICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKICAgICAgICAgYmFkX21ldGggPSB0eXBlcy5NZXRob2RUeXBlKHJhaXNlX0ltcG9ydEVycm9yLCBtb2NrKQogICAgICAgICBtb2NrLmJ5dGVjb2RlX3BhdGggPSBiYWRfbWV0aAotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQogCiAKQEAgLTU5MiwxNSArNjA1LDE3IEBACiAgICAgICAgIGRlZiByYWlzZV9JT0Vycm9yKHBhdGgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogICAgICAgICBzZWxmLmxvYWRlci5nZXRfZGF0YSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkZXIuZ2V0X3NvdXJjZShzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIHNlbGYubmFtZSkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgUHJvcGVybHkgZGV0ZWN0IHdoZW4gbG9hZGluZyBhIHBhY2thZ2UuCi0gICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQogICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSArICcuX19pbml0X18nKSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGUgY29kZSBvYmplY3QgaXMgY3JlYXRlZC4KQEAgLTYxNSw3ICs2MzAsNyBAQAogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQogICAgICAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbb3MucGF0aC5kaXJuYW1lKHNlbGYucGF0aCldKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubmFtZSBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfc2V0dGluZ3Moc2VsZik6CiAgICAgICAgICMgX19wYWNrYWdlX18gbmVlZHMgdG8gYmUgc2V0LCB3aGlsZSBfX3BhdGhfXyBpcyBzZXQgb24gaWYgdGhlIG1vZHVsZQpAQCAtNjU2LDcgKzY3MSw4IEBACiAgICAgICAgIGlmIGJ5dGVjb2RlX3dyaXR0ZW46CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY2FjaGVkLCBzZWxmLmxvYWRlci53cml0dGVuKQogICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2Vfc2l6ZSkpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIud3JpdHRlbltzZWxmLmNhY2hlZF0sIGJ5dGVzKGRhdGEpKQogCkBAIC03NjIsMTcgKzc3OCwzMSBAQAogICAgICAgICBleHBlY3QgPSBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpLmRlY29kZShzb3VyY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCiAKKwogY2xhc3MgQWJzdHJhY3RNZXRob2RJbXBsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgY29uY3JldGUgYWJzdHJhY3RtZXRob2QgaW1wbGVtZW50YXRpb25zLiIiIgogCisgICAgY2xhc3MgTWV0YVBhdGhGaW5kZXIoYWJjLk1ldGFQYXRoRmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICBjbGFzcyBQYXRoRW50cnlGaW5kZXIoYWJjLlBhdGhFbnRyeUZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBfKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoXykKKworICAgICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgXyk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbG9hZGVyKF8pCisKKyAgICBjbGFzcyBGaW5kZXIoYWJjLkZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQorCiAgICAgY2xhc3MgTG9hZGVyKGFiYy5Mb2FkZXIpOgogICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAgICAgc3VwZXIoKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgotICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQorICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHN1cGVyKCkubW9kdWxlX3JlcHIobW9kdWxlKQogCiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyLCBhYmMuUmVzb3VyY2VMb2FkZXIpOgogICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgXyk6CkBAIC04NDcsNyArODc3LDcgQEAKICAgICAgICAgIyBSZXF1aXJlZCBhYnN0cmFjdG1ldGhvZHMuCiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCAnZ2V0X2ZpbGVuYW1lJywgJ2dldF9kYXRhJykKICAgICAgICAgIyBPcHRpb25hbCBhYnN0cmFjdG1ldGhvZHMuCi0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCdwYXRoX210aW1lJywgJ3NldF9kYXRhJykKKyAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsJ3BhdGhfc3RhdHMnLCAnc2V0X2RhdGEnKQogCiAgICAgZGVmIHRlc3RfUHlMb2FkZXIoc2VsZik6CiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5QeUxvYWRlcigpLCAnc291cmNlX3BhdGgnLApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDczNzc3ZGUuLjI0MTE3M2YgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNyArMSw5IEBACiAiIiJUZXN0IGNhc2Utc2Vuc2l0aXZpdHkgKFBFUCAyMzUpLiIiIgogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGltcAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQgYXMgdGVzdF9zdXBwb3J0CkBAIC0xOSw5ICsyMSwxMSBAQAogICAgIGFzc2VydCBuYW1lICE9IG5hbWUubG93ZXIoKQogCiAgICAgZGVmIGZpbmQoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKHNlbGYubmFtZSkKIAogICAgIGRlZiBzZW5zaXRpdml0eV90ZXN0KHNlbGYpOgpAQCAtMzcsNiArNDEsOSBAQAogICAgIGRlZiB0ZXN0X3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi51bnNldCgnUFlUSE9OQ0FTRU9LJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpAQCAtNDUsNiArNTIsOSBAQAogICAgIGRlZiB0ZXN0X2luc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnNldCgnUFlUSE9OQ0FTRU9LJywgJzEnKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIG5vdCBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCBjN2E3ZDhmLi45MGY5ZDMwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTEsNSArMSw2IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgaW1wb3J0bGliCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5hYmMKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCkBAIC0yNCwxMiArMjUsNDggQEAKIAogICAgICIiIgogCisgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGVfQVBJKHNlbGYpOgorICAgICAgICAjIElmIGZ1bGxuYW1lIGlzIG5vdCBzcGVjaWZpZWQgdGhhdCBhc3N1bWUgc2VsZi5uYW1lIGlzIGRlc2lyZWQuCisgICAgICAgIGNsYXNzIFRlc3Rlck1peGluKGltcG9ydGxpYi5hYmMuTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6IHJldHVybiBmdWxsbmFtZQorICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6IHJldHVybiAnPG1vZHVsZT4nCisKKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlciwgVGVzdGVyTWl4aW4pOgorICAgICAgICAgICAgZGVmIGdldF9jb2RlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgXyk6IHBhc3MKKworICAgICAgICBuYW1lID0gJ21vZF9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgJ3NvbWVfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobG9hZGVyLm5hbWUgKyAnWFhYJykKKworICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZV9BUEkoc2VsZik6CisgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNldCB0aGVuIGFzc3VtZSBzZWxmLnBhdGggaXMgZGVzaXJlZC4KKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcik6CisgICAgICAgICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIF8pOiBwYXNzCisKKyAgICAgICAgcGF0aCA9ICdzb21lX3BhdGgnCisgICAgICAgIG5hbWUgPSAnc29tZV9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKE5vbmUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSArICdYWFgnKQorCiAgICAgIyBbYmFzaWNdCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ190ZW1wJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX3RlbXAnLCAnX19maWxlX18nOiBtYXBwaW5nWydfdGVtcCddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTM3LDEwICs3NCwxMCBAQAogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfcGtnJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19wa2cnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnJywgJ19fZmlsZV9fJzogbWFwcGluZ1snX3BrZy5fX2luaXRfXyddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogW29zLnBhdGguZGlybmFtZShtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pXSwKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfcGtnJ30KQEAgLTUwLDEwICs4NywxMCBAQAogCiAgICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nLCAnX3BrZy5tb2QnKWFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cubW9kJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cubW9kJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3BrZy5tb2QnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3BrZy5tb2QnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnLm1vZCcsICdfX2ZpbGVfXyc6IG1hcHBpbmdbJ19wa2cubW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX3BrZyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTY1LDE5ICsxMDIsMTQgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgbW9kdWxlX2lkID0gaWQobW9kdWxlKQogICAgICAgICAgICAgbW9kdWxlX2RpY3RfaWQgPSBpZChtb2R1bGUuX19kaWN0X18pCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoInRlc3RpbmdfdmFyID0gNDJcbiIpCi0gICAgICAgICAgICAjIEZvciBmaWxlc3lzdGVtcyB3aGVyZSB0aGUgbXRpbWUgaXMgb25seSB0byBhIHNlY29uZCBncmFudWxhcml0eSwKLSAgICAgICAgICAgICMgZXZlcnl0aGluZyB0aGF0IGhhcyBoYXBwZW5lZCBhYm92ZSBjYW4gYmUgdG9vIGZhc3Q7Ci0gICAgICAgICAgICAjIGZvcmNlIGFuIG10aW1lIG9uIHRoZSBzb3VyY2UgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIGRpZmZlcmVudAotICAgICAgICAgICAgIyB0aGFuIHRoZSBvcmlnaW5hbCBtdGltZS4KLSAgICAgICAgICAgIGxvYWRlci5wYXRoX210aW1lID0gc2VsZi5mYWtlX210aW1lKGxvYWRlci5wYXRoX210aW1lKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RpbmdfdmFyJyBpbiBtb2R1bGUuX19kaWN0X18sCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0aW5nX3ZhcicsIG1vZHVsZS5fX2RpY3RfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RpbmdfdmFyJyBub3QgaW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0iLmZvcm1hdChsaXN0KG1vZHVsZS5fX2RpY3RfXy5rZXlzKCkpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1snX3RlbXAnXSkKQEAgLTk1LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgc2V0YXR0cihvcmlnX21vZHVsZSwgYXR0ciwgdmFsdWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tuYW1lXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJysrKyBiYWQgc3ludGF4ICsrKycpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBhdHRyaWJ1dGVzOgpAQCAtMTA2LDEwICsxMzgsMTAgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbJ190ZW1wJ10sICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCc9JykKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3RlbXAnIG5vdCBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9maWxlX2Zyb21fZW1wdHlfc3RyaW5nX2RpcihzZWxmKToKICAgICAgICAgIyBMb2FkaW5nIGEgbW9kdWxlIGZvdW5kIGZyb20gYW4gZW1wdHkgc3RyaW5nIGVudHJ5IG9uIHN5cy5wYXRoIHNob3VsZApAQCAtMTE5LDcgKzE1MSw3IEBACiAgICAgICAgICAgICBmaWxlLndyaXRlKCIjIHRlc3QgZmlsZSBmb3IgaW1wb3J0bGliIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ190ZW1wJyk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgZmlsZV9wYXRoKQogICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9wYXRoLCBtb2QuX19maWxlX18pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9wYXRoKSwKQEAgLTE0NSw3ICsxNzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciAoe30pIi5mb3JtYXQoZSkpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKQEAgLTE1OSw3ICsxOTEsNyBAQAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIobW9kdWxlX25hbWUsIGZpbGUpCiAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpAQCAtMjE1LDEwICsyNDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAorICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3NpemUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKKyAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKKwogICAgIGRlZiBfdGVzdF9ub19tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG1hcHBpbmdbJ190ZW1wJ10gaWYgbm90IGRlbF9zb3VyY2UgZWxzZSBiY19wYXRoCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yKToKQEAgLTIyNywxNiArMjY2LDE4IEBACiAgICAgZGVmIF90ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIG1hcnNoYWwuZHVtcHMoYidhYmNkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICBmaWxlX3BhdGggPSBtYXBwaW5nWydfdGVtcCddIGlmIG5vdCBkZWxfc291cmNlIGVsc2UgYnl0ZWNvZGVfcGF0aAotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oZmlsZV9wYXRoLCAnX3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ190ZW1wJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgYic8dGVzdD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgYic8dGVzdD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgZmlsZV9wYXRoID0gbWFwcGluZ1snX3RlbXAnXSBpZiBub3QgZGVsX3NvdXJjZSBlbHNlIGJ5dGVjb2RlX3BhdGgKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgpAQCAtMjUxLDcgKzI5Miw3IEBACiAKIGNsYXNzIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdChCYWRCeXRlY29kZVRlc3QpOgogCi0gICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAKICAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKQEAgLTI2MCw3ICszMDEsNyBAQAogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfZW1wdHlfZmlsZSh0ZXN0KQogCkBAIC0yNjgsNyArMzA5LDcgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCkKIApAQCAtMjc5LDcgKzMyMCw3IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9tYWdpY19vbmx5KHRlc3QpCiAKQEAgLTMwMSwxMSArMzQyLDIyIEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJjX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYmNfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0KQogCiAgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKKyAgICAgICAgIyBXaGVuIHRoZSBzaXplIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKKyAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KKyAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYmNfcGF0aCk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihiY19wYXRoLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKKworICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfc2l6ZSh0ZXN0KQorCisgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X25vX21hcnNoYWwoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGVyZSBpcyBvbmx5IHRoZSBtYWdpYyBudW1iZXIgYW5kIHRpbWVzdGFtcCwgcmFpc2UgRU9GRXJyb3IuCiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9fbWFyc2hhbCgpCkBAIC0zNjQsMTkgKzQxNiwyMyBAQAogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0KEJhZEJ5dGVjb2RlVGVzdCk6CiAKLSAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcgogCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9lbXB0eV9maWxlKHRlc3QsIGRlbF9zb3VyY2U9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWxfbWFnaWMoc2VsZik6CiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oYnl0ZWNvZGVfcGF0aCwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5wYXRoLCBieXRlY29kZV9wYXRoKQogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfbWFnaWNfb25seShzZWxmKToKQEAgLTM4OCw4ICs0NDQsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9tYWdpYyhzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCkBAIC00MDAsNiArNDU4LDEzIEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3NpemUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisKKyAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3NpemUodGVzdCwgZGVsX3NvdXJjZT1UcnVlKQorCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKGRlbF9zb3VyY2U9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKaW5kZXggN2I5MDg4ZC4uOGJjMTZhNSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTEsMTAgKzEsMTIgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwotaW1wb3J0IG9zCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBlcnJubworaW1wb3J0IGltcAoraW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIApAQCAtMzMsMTEgKzM1LDE1IEBACiAKICAgICAiIiIKIAorICAgIGRlZiBnZXRfZmluZGVyKHNlbGYsIHJvb3QpOgorICAgICAgICBsb2FkZXJfZGV0YWlscyA9IFsobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKV0KKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyKHJvb3QsICpsb2FkZXJfZGV0YWlscykKKwogICAgIGRlZiBpbXBvcnRfKHNlbGYsIHJvb3QsIG1vZHVsZSk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9maW5kZXIocm9vdCkuZmluZF9tb2R1bGUobW9kdWxlKQogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHRlc3QsIGNyZWF0ZT1Ob25lLCAqLCBjb21waWxlXz1Ob25lLCB1bmxpbms9Tm9uZSk6CiAgICAgICAgICIiIlRlc3QgdGhlIGZpbmRpbmcgb2YgJ3Rlc3QnIHdpdGggdGhlIGNyZWF0aW9uIG9mIG1vZHVsZXMgbGlzdGVkIGluCkBAIC0xMDIsMzkgKzEwOCwyMSBAQAogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGxvYWRlciwgJ2xvYWRfbW9kdWxlJykpCiAKLSAgICAjIFtzdWIgZW1wdHldCi0gICAgZGVmIHRlc3RfZW1wdHlfc3ViX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgY29udGV4dCA9IHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG1hcHBpbmdbJ3BrZy5zdWIuX19pbml0X18nXSkKLSAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ3BrZy5fX2luaXRfXyddKQotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0V2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCi0KICAgICAjIFtwYWNrYWdlIG92ZXIgbW9kdWxlc10KICAgICBkZWYgdGVzdF9wYWNrYWdlX292ZXJfbW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ190ZW1wJwogICAgICAgICBsb2FkZXIgPSBzZWxmLnJ1bl90ZXN0KG5hbWUsIHsnezB9Ll9faW5pdF9fJy5mb3JtYXQobmFtZSksIG5hbWV9KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ19faW5pdF9fJyBpbiBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQotCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faW5pdF9fJywgbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2JsYWgnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbm90aGluZyA9IHNlbGYuaW1wb3J0XyhtYXBwaW5nWycucm9vdCddLCAnc2Rmc2Fkc2FkZicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90aGluZyBpcyBOb25lKQotCi0gICAgIyBbZW1wdHkgZGlyXQotICAgIGRlZiB0ZXN0X2VtcHR5X2RpcihzZWxmKToKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydFdhcm5pbmcpOgotICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoJ3BrZycsIHsncGtnLl9faW5pdF9fJ30sIHVubGluaz17J3BrZy5fX2luaXRfXyd9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobm90aGluZykKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19mb3JfZGlyKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgZnJvbSBzeXMucGF0aCBtZWFucyB0byBzZWFyY2ggaW4gdGhlIGN3ZC4KLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcignJywgX2Jvb3RzdHJhcC5fU291cmNlRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcignJywgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCiAgICAgICAgIHdpdGggb3BlbignbW9kLnB5JywgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0ZSgiIyB0ZXN0IGZpbGUgZm9yIGltcG9ydGxpYiIpCiAgICAgICAgIHRyeToKQEAgLTE0Myw2ICsxMzEsMjEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnVubGluaygnbW9kLnB5JykKIAorICAgIGRlZiB0ZXN0X2ludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAjIGludmFsaWRhdGVfY2FjaGVzKCkgc2hvdWxkIHJlc2V0IHRoZSBtdGltZS4KKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIoJycsIChtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQorICAgICAgICBmaW5kZXIuX3BhdGhfbXRpbWUgPSA0MgorICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRlci5fcGF0aF9tdGltZSwgLTEpCisKKyAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE0ODQ2CisgICAgZGVmIHRlc3RfZGlyX3JlbW92YWxfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIG1vZCA9ICdtb2QnCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobW9kKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgZmluZGVyID0gc2VsZi5nZXRfZmluZGVyKG1hcHBpbmdbJy5yb290J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kZXIuZmluZF9tb2R1bGUobW9kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmluZGVyLmZpbmRfbW9kdWxlKG1vZCkpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE3ODc5MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpAQCAtMCwwICsxLDMyIEBACitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IGltcAoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgUGF0aEhvb2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgdGhlIHBhdGggaG9vayBmb3Igc291cmNlLiIiIgorCisgICAgZGVmIHBhdGhfaG9vayhzZWxmKToKKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vaygobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KFBhdGhIb29rVGVzdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQppbmRleCA3OTRhM2RmLi4wY2E1MTk1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtMSw2ICsxLDYgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMzUsOCArMzUsOCBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKHNlbGYubW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbc2VsZi5tb2R1bGVfbmFtZV0pCisgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfc291cmNlKHNlbGYsIGVuY29kaW5nKToKQEAgLTk3LDcgKzk3LDcgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW21vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIobW9kdWxlX25hbWUsCisgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1ttb2R1bGVfbmFtZV0pCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCAwZWNiZTM5Li5jNjIwYzM3IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTMwLDEwICszMCwxNyBAQAogICAgICAgICAgICAgICAgInswfSBpcyBub3QgYSBzdXBlcmNsYXNzIG9mIHsxfSIuZm9ybWF0KHN1cGVyY2xhc3MsIHNlbGYuX190ZXN0KSkKIAogCi1jbGFzcyBGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgTWV0YVBhdGhGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5GaW5kZXJdCiAgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyXQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuUGF0aEZpbmRlciwgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlcl0KKworCitjbGFzcyBQYXRoRW50cnlGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5GaW5kZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuRmlsZUZpbmRlcl0KIAogCiBjbGFzcyBMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTAsNyArNTcsNyBAQAogCiAgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5Mb2FkZXJdCiAgICAgc3ViY2xhc3NlcyA9IFthYmMuUHlMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcl0KKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLCBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcl0KIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTksOSArNjYsMTYgQEAKICAgICBzdWJjbGFzc2VzID0gW2FiYy5QeUxvYWRlcl0KIAogCitjbGFzcyBGaWxlTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuUmVzb3VyY2VMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyXQorCisKIGNsYXNzIFNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLlJlc291cmNlTG9hZGVyLCBhYmMuRXhlY3V0aW9uTG9hZGVyXQorICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJdCiAKIAogY2xhc3MgUHlMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjY2MjlhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTAsMCArMSwxODcgQEAKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBJbXBvcnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlLiIiIgorCisgICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZS4KKyAgICAgICAgcGtnX25hbWUgPSAncGtnJworICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB0aHJvdWdoIGEgcmVsYXRpdmUgaW1wb3J0LgorICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCisgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ21vZCcKKyAgICAgICAgYWJzb2x1dGVfbmFtZSA9ICd7MH0uezF9Jy5mb3JtYXQocGtnX25hbWUsIG1vZHVsZV9uYW1lKQorICAgICAgICByZWxhdGl2ZV9uYW1lID0gJy57MH0nLmZvcm1hdChtb2R1bGVfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CisgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhJykKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLi5jJywgJ2EuYicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdhLmMnKQorCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUgd2l0aAorICAgICAgICAjIHRoZSAncGFja2FnZScgYXJndW1lbnQgZ2l2ZW4uCisgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKKyAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfd29fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBSZWxhdGl2ZSBpbXBvcnRzIGNhbm5vdCBoYXBwZW4gd2l0aG91dCB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGJlaW5nCisgICAgICAgICMgc2V0LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLnN1cHBvcnQnKQorCisKKyAgICBkZWYgdGVzdF9sb2FkZWRfb25jZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTM1OTE6IE1vZHVsZXMgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIG9uY2Ugd2hlbgorICAgICAgICAjIGluaXRpYWxpemluZyB0aGUgcGFyZW50IHBhY2thZ2UgYXR0ZW1wdHMgdG8gaW1wb3J0IHRoZQorICAgICAgICAjIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQuCisgICAgICAgIGJfbG9hZF9jb3VudCA9IDAKKyAgICAgICAgZGVmIGxvYWRfYSgpOgorICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgIGRlZiBsb2FkX2IoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJfbG9hZF9jb3VudAorICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKKyAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KKyAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCisKKworY2xhc3MgRmluZExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorCisgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbG9hZGVyID0gJ2EgbG9hZGVyIScKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgZm91bmQgPSBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBmb3VuZCkKKworICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX2xvYWRlcl9pc19Ob25lKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18gaXMgTm9uZSwgcmFpc2UgVmFsdWVFcnJvci4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBOb25lCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgICMgUmV0dXJuIHRoZSBsb2FkZXIgZm91bmQgb24gc3lzLm1ldGFfcGF0aC4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG5hbWUsIE5vbmUpLCBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzX3BhdGgoc2VsZik6CisgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lLCBwYXRoKSkKKworICAgIGRlZiB0ZXN0X25vdGhpbmcoc2VsZik6CisgICAgICAgICMgTm9uZSBpcyByZXR1cm5lZCB1cG9uIGZhaWx1cmUgdG8gZmluZCBhIGxvYWRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0bGliLmZpbmRfbG9hZGVyKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQorCisKK2NsYXNzIEludmFsaWRhdGVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsZWQoc2VsZik6CisgICAgICAgICMgSWYgZGVmaW5lZCB0aGUgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAgIGNsYXNzIEludmFsaWRhdGluZ051bGxGaW5kZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmlnbm9yZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKworICAgICAgICBrZXkgPSAnZ29ibGVkZWVnb29rJworICAgICAgICBtZXRhX2lucyA9IEludmFsaWRhdGluZ051bGxGaW5kZXIoKQorICAgICAgICBwYXRoX2lucyA9IEludmFsaWRhdGluZ051bGxGaW5kZXIoKQorICAgICAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBtZXRhX2lucykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuX19kZWxpdGVtX18oa2V5KSkKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVba2V5XSA9IHBhdGhfaW5zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5tZXRhX3BhdGgucmVtb3ZlKG1ldGFfaW5zKSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGFfaW5zLmNhbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGhfaW5zLmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X21ldGhvZF9sYWNraW5nKHNlbGYpOgorICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSBubyBpc3N1ZXMgaWYgdGhlIG1ldGhvZCBpcyBub3QgZGVmaW5lZC4KKyAgICAgICAga2V5ID0gJ2dvYmJsZWRlZWdvb2snCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2tleV0gPSBpbXAuTnVsbEltcG9ydGVyKCdhYmMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5fX2RlbGl0ZW1fXyhrZXkpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSAgIyBTaG91bGRuJ3QgdHJpZ2dlciBhbiBleGNlcHRpb24uCisKKworY2xhc3MgRnJvemVuSW1wb3J0bGliVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byBpbXBvcnQgdy9vIF9mcm96ZW5faW1wb3J0bGliIGJlaW5nIGRlZmluZWQuCisgICAgICAgIG1vZHVsZSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnaW1wb3J0bGliJywgYmxvY2tlZD1bJ19mcm96ZW5faW1wb3J0bGliJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMsCisgICAgICAgICAgICAgICAgIEZpbmRMb2FkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgSW52YWxpZGF0ZUNhY2hlVGVzdHMsCisgICAgICAgICAgICAgICAgIEZyb3plbkltcG9ydGxpYlRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNzNiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CkBAIC0wLDAgKzEsMTI5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorZWxzZToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IGxvY2tfdGVzdHMKKworCitMb2NrVHlwZSA9IF9ib290c3RyYXAuX01vZHVsZUxvY2sKK0RlYWRsb2NrRXJyb3IgPSBfYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisKKworaWYgdGhyZWFkaW5nIGlzIG5vdCBOb25lOgorICAgIGNsYXNzIE1vZHVsZUxvY2tBc1JMb2NrVGVzdHMobG9ja190ZXN0cy5STG9ja1Rlc3RzKToKKyAgICAgICAgbG9ja3R5cGUgPSBzdGF0aWNtZXRob2QobGFtYmRhOiBMb2NrVHlwZSgic29tZV9sb2NrIikpCisKKyAgICAgICAgIyBfaXNfb3duZWQoKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X19pc19vd25lZCA9IE5vbmUKKyAgICAgICAgIyBhY3F1aXJlKGJsb2NraW5nPUZhbHNlKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3RyeV9hY3F1aXJlID0gTm9uZQorICAgICAgICB0ZXN0X3RyeV9hY3F1aXJlX2NvbnRlbmRlZCA9IE5vbmUKKyAgICAgICAgIyBgd2l0aGAgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF93aXRoID0gTm9uZQorICAgICAgICAjIGFjcXVpcmUodGltZW91dD0uLi4pIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfdGltZW91dCA9IE5vbmUKKyAgICAgICAgIyBfcmVsZWFzZV9zYXZlKCkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9yZWxlYXNlX3NhdmVfdW5hY3F1aXJlZCA9IE5vbmUKKworZWxzZToKKyAgICBjbGFzcyBNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgcGFzcworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgInRocmVhZHMgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBOb25lCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYub2xkX3N3aXRjaGludGVydmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKHNlbGYub2xkX3N3aXRjaGludGVydmFsKQorCisgICAgZGVmIHJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChzZWxmLCBjcmVhdGVfZGVhZGxvY2spOgorICAgICAgICBOTE9DS1MgPSAxMAorICAgICAgICBsb2NrcyA9IFtMb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgIHBhaXJzID0gWyhsb2Nrc1tpXSwgbG9ja3NbKGkrMSklTkxPQ0tTXSkgZm9yIGkgaW4gcmFuZ2UoTkxPQ0tTKV0KKyAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgorICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQorICAgICAgICBiYXJyaWVyID0gdGhyZWFkaW5nLkJhcnJpZXIoTlRIUkVBRFMpCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBkZWYgX2FjcXVpcmUobG9jayk6CisgICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywgRmFsc2Ugb24gZGVhZGxvY2suIiIiCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBEZWFkbG9ja0Vycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgYSwgYiA9IHBhaXJzLnBvcCgpCisgICAgICAgICAgICByYSA9IF9hY3F1aXJlKGEpCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmIgPSBfYWNxdWlyZShiKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHJhLCByYikpCisgICAgICAgICAgICBpZiByYjoKKyAgICAgICAgICAgICAgICBiLnJlbGVhc2UoKQorICAgICAgICAgICAgaWYgcmE6CisgICAgICAgICAgICAgICAgYS5yZWxlYXNlKCkKKyAgICAgICAgbG9ja190ZXN0cy5CdW5jaChmLCBOVEhSRUFEUykud2FpdF9mb3JfZmluaXNoZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgTlRIUkVBRFMpCisgICAgICAgIHJldHVybiByZXN1bHRzCisKKyAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KFRydWUpCisgICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cworICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCisgICAgICAgICMgZGVhZGxvY2sgYXZvaWRhbmNlIG1lY2hhbmlzbSBpcyBjb25zZXJ2YXRpdmUuCisgICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpIC0gbmJfZGVhZGxvY2tzKQorCisgICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorCisKK2NsYXNzIExpZmV0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9ja19saWZldGltZShzZWxmKToKKyAgICAgICAgbmFtZSA9ICJ4eXp6eSIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIGxvY2sgPSBfYm9vdHN0cmFwLl9nZXRfbW9kdWxlX2xvY2sobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobG9jaykKKyAgICAgICAgZGVsIGxvY2sKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyKCkpCisKKyAgICBkZWYgdGVzdF9hbGxfbG9ja3Moc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKF9ib290c3RyYXAuX21vZHVsZV9sb2NrcyksIF9ib290c3RyYXAuX21vZHVsZV9sb2NrcykKKworCitAc3VwcG9ydC5yZWFwX3RocmVhZHMKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTGlmZXRpbWVUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjODk3NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtMCwwICsxLDIwOCBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLiIiIgorCisgICAgZGVmIHJldHVybl9tb2R1bGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIobGFtYmRhIHNlbGYsIG1vZHVsZTogbW9kdWxlKQorICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG5hbWUpCisKKyAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBkZWYgdG9fd3JhcChzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKyAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcih0b193cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmeG4oc2VsZiwgbmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbmV3X21vZHVsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcworICAgICAgICAjIGNyZWF0ZWQuCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgorICAgICAgICBuYW1lID0gJ2EuYi5jJworICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQorCisgICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCisgICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgICAgICAgbmFtZSA9ICdhLmIuYycKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfcmVsb2FkX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCisgICAgICAgIG5hbWUgPSAnYS5iLmMnCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKKworICAgIGRlZiB0ZXN0X2RlY29yYXRvcl9hdHRycyhzZWxmKToKKyAgICAgICAgZGVmIGZ4bihzZWxmLCBtb2R1bGUpOiBwYXNzCisgICAgICAgIHdyYXBwZWQgPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKGZ4bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fbmFtZV9fLCBmeG4uX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX3F1YWxuYW1lX18sIGZ4bi5fX3F1YWxuYW1lX18pCisKKyAgICBkZWYgdGVzdF9mYWxzZV9tb2R1bGUoc2VsZik6CisgICAgICAgICMgSWYgZm9yIHNvbWUgb2RkIHJlYXNvbiBhIG1vZHVsZSBpcyBjb25zaWRlcmVkIGZhbHNlLCBzdGlsbCByZXR1cm4gaXQKKyAgICAgICAgIyBmcm9tIHN5cy5tb2R1bGVzLgorICAgICAgICBjbGFzcyBGYWxzZU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmV0dXJuIEZhbHNlCisKKyAgICAgICAgbmFtZSA9ICdtb2QnCisgICAgICAgIG1vZHVsZSA9IEZhbHNlTW9kdWxlKG5hbWUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICBnaXZlbiA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnaXZlbiwgbW9kdWxlKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc19zZXQoc2VsZik6CisgICAgICAgICMgX19uYW1lX18sIF9fbG9hZGVyX18sIGFuZCBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0ICh3aGVuCisgICAgICAgICMgaXNfcGFja2FnZSgpIGlzIGRlZmluZWQ7IHVuZGVmaW5lZCBpbXBsaWNpdGx5IHRlc3RlZCBlbHNld2hlcmUpLgorICAgICAgICBjbGFzcyBGYWtlTG9hZGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BrZyA9IGlzX3BhY2thZ2UKKyAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wa2cKKyAgICAgICAgICAgIEB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyCisgICAgICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICAgICAgbmFtZSA9ICdwa2cubW9kJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihGYWxzZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgJ3BrZycpCisKKyAgICAgICAgbmFtZSA9ICdwa2cuc3ViJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihUcnVlKQorICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBuYW1lKQorCisKK2NsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwuc2V0X3BhY2thZ2UuIiIiCisKKyAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSwgZXhwZWN0KToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBtb2R1bGUgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgX19wYWNrYWdlX18gYWZ0ZXIKKyAgICAgICAgcGFzc2luZyB0aHJvdWdoIHNldF9wYWNrYWdlLiIiIgorICAgICAgICBmeG4gPSBsYW1iZGE6IG1vZHVsZQorICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCisgICAgICAgIHdyYXBwZWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgbW9kdWxlLl9fcGFja2FnZV9fKQorCisgICAgZGVmIHRlc3RfdG9wX2xldmVsKHNlbGYpOgorICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBhIHRvcC1sZXZlbCBtb2R1bGUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgc2V0IHRvIE5vbmUuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2R1bGUnKQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCisKKyAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2V0dGluZyBfX3BhY2thZ2VfXyBmb3IgYSBwYWNrYWdlLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnJykKKyAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gWyc8cGF0aD4nXQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgICMgVGVzdCBfX3BhY2thZ2VfXyBmb3IgYSBtb2R1bGUgaW4gYSBwYWNrYWdlLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnLm1vZCcpCisgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfaWZfbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IGlmIGl0IGlzIG1pc3NpbmcuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJyk6CisgICAgICAgICAgICBkZWxhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKKworICAgIGRlZiB0ZXN0X2xlYXZpbmdfYWxvbmUoc2VsZik6CisgICAgICAgICMgSWYgX19wYWNrYWdlX18gaXMgc2V0IGFuZCBub3QgTm9uZSB0aGVuIGxlYXZlIGl0IGFsb25lLgorICAgICAgICBmb3IgdmFsdWUgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQorICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gdmFsdWUKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3JfYXR0cnMoc2VsZik6CisgICAgICAgIGRlZiBmeG4obW9kdWxlKTogcGFzcworICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQorCisKK2NsYXNzIFJlc29sdmVOYW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkuIiIiCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZShzZWxmKToKKyAgICAgICAgIyBiYWNvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYWNvbicsIHV0aWwucmVzb2x2ZV9uYW1lKCdiYWNvbicsIE5vbmUpKQorCisgICAgZGVmIHRlc3RfYWJvc2x1dGVfd2l0aGluX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgYmFjb24gaW4gc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYWNvbicsIHV0aWwucmVzb2x2ZV9uYW1lKCdiYWNvbicsICdzcGFtJykpCisKKyAgICBkZWYgdGVzdF9ub19wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC5iYWNvbiBpbiAnJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy5iYWNvbicsICcnKQorCisgICAgZGVmIHRlc3RfaW5fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuYmFjb24gaW4gc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzcGFtLmVnZ3MuYmFjb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuYmFjb24nLCAnc3BhbS5lZ2dzJykpCisKKyAgICBkZWYgdGVzdF9vdGhlcl9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC4uYmFjb24gaW4gc3BhbS5iYWNvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzcGFtLmJhY29uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLi5iYWNvbicsICdzcGFtLmVnZ3MnKSkKKworICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKKyAgICAgICAgIyAuLmJhY29uIGluIHNwYW0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuLmJhY29uJywgJ3NwYW0nKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgICAgIE1vZHVsZUZvckxvYWRlclRlc3RzLAorICAgICAgICAgICAgU2V0UGFja2FnZVRlc3RzLAorICAgICAgICAgICAgUmVzb2x2ZU5hbWVUZXN0cworICAgICAgICApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IDkzYjdjZDIuLmVmMzJmN2QgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgaWYgbmFtZSBpbiAoJ3N5cycsICdtYXJzaGFsJywgJ2ltcCcpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAiY2Fubm90IHVuY2FjaGUgezB9IGFzIGl0IHdpbGwgYnJlYWsgX2ltcG9ydGxpYiIuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgICAgICJjYW5ub3QgdW5jYWNoZSB7MH0iLmZvcm1hdChuYW1lKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTEyNCw3ICsxMjQsMTEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXSA9IHNlbGYubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIGlmIGZ1bGxuYW1lIGluIHNlbGYubW9kdWxlX2NvZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfY29kZVtmdWxsbmFtZV0oKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfY29kZVtmdWxsbmFtZV0oKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CmluZGV4IDRiN2VlNGUuLjgwZGIwM2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKQEAgLTQxLDExICs0MSw2IEBACiAKIGltcG9ydCBidWlsdGlucwogCi10cnk6Ci0gICAgMS8wCi1leGNlcHQ6Ci0gICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQotCiBnaXQgPSBtb2QuU3R1cGlkR2l0KCkKIAogY2xhc3MgSXNUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSwyMyArNzQsMzEgQEAKIAogCiAgICAgZGVmIHRlc3RfZXhjbHVkaW5nX3ByZWRpY2F0ZXMoc2VsZik6CisgICAgICAgIGdsb2JhbCB0YgogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYnVpbHRpbiwgJ3N5cy5leGl0JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2J1aWx0aW4sICdbXS5hcHBlbmQnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzY29kZSwgJ21vZC5zcGFtLl9fY29kZV9fJykKLSAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2ZyYW1lLCAndGIudGJfZnJhbWUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2ZyYW1lLCAndGIudGJfZnJhbWUnKQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc3RyYWNlYmFjaywgJ3RiJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgorICAgICAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IodHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBDbGVhciB0cmFjZWJhY2sgYW5kIGFsbCB0aGUgZnJhbWVzIGFuZCBsb2NhbCB2YXJpYWJsZXMgaGFuZ2luZyB0byBpdC4KKyAgICAgICAgICAgIHRiID0gTm9uZQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnVuY3Rpb24sICdtb2Quc3BhbScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmdW5jdGlvbiwgJ21vZC5TdHVwaWRHaXQuYWJ1c2UnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzbWV0aG9kLCAnZ2l0LmFyZ3VlJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21vZHVsZSwgJ21vZCcpCi0gICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXN0cmFjZWJhY2ssICd0YicpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvciwgJ2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3IsICcoeCBmb3IgeCBpbiByYW5nZSgyKSknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sICdnZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCi0gICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgotICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvcih0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscykpCiAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdNZW1iZXJEZXNjcmlwdG9yVHlwZScpOgogICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3IsICdkYXRldGltZS50aW1lZGVsdGEuZGF5cycpCiAgICAgICAgIGVsc2U6CkBAIC0yODIsNyArMjg1LDEwIEBACiAgICAgICAgIGNvID0gY29tcGlsZSgiTm9uZSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1jYXNlKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbykpLCBmbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pKSwgZm4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXQogCiAgICAgZGVmIHRlc3RfZ2V0ZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGZpbGUobW9kLlN0dXBpZEdpdCksIG1vZC5fX2ZpbGVfXykKQEAgLTMwNCw3ICszMTAsNyBAQAogICAgICAgICBnZXRsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcwogICAgICAgICBkZWYgbW9ua2V5KGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKICAgICAgICAgICAgIGlmIGZpbGVuYW1lID09IGZuOgotICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0bGluZXMoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzKQogICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMgPSBtb25rZXkKQEAgLTQwNCw4ICs0MTAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5maW5kc291cmNlLCBjbykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIGNvKQogICAgICAgICBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdID0gKDEsIE5vbmUsIGxpbmVzLCBjby5jb19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmZpbmRzb3VyY2UoY28pLCAobGluZXMsMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2UoY28pLCBsaW5lc1swXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmZpbmRzb3VyY2UoY28pLCAobGluZXMsMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlKGNvKSwgbGluZXNbMF0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXQogCiBjbGFzcyBUZXN0Tm9FT0woR2V0U291cmNlQmFzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CkBAIC02NjIsNiArNjcxLDEyOSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCgnZicsIGIuZiksIGluc3BlY3QuZ2V0bWVtYmVycyhiLCBpbnNwZWN0LmlzbWV0aG9kKSkKIAogCitfZ2xvYmFsX3JlZiA9IG9iamVjdCgpCitjbGFzcyBUZXN0R2V0Q2xvc3VyZVZhcnModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbmFtZV9yZXNvbHV0aW9uKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3Qgb2YgdGhlIDQgZGlmZmVyZW50IHJlc29sdXRpb24gbWVjaGFuaXNtcworICAgICAgICBkZWYgZihub25sb2NhbF9yZWYpOgorICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgcmV0dXJuIGcKKyAgICAgICAgX2FyZyA9IG9iamVjdCgpCisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7Im5vbmxvY2FsX3JlZiI6IF9hcmd9CisgICAgICAgIGdsb2JhbF92YXJzID0geyJfZ2xvYmFsX3JlZiI6IF9nbG9iYWxfcmVmfQorICAgICAgICBidWlsdGluX3ZhcnMgPSB7InByaW50IjogcHJpbnR9CisgICAgICAgIHVuYm91bmRfbmFtZXMgPSB7InVuYm91bmRfcmVmIn0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzLCB1bmJvdW5kX25hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZihfYXJnKSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX2Nsb3N1cmUoc2VsZik6CisgICAgICAgIGRlZiBmKG5vbmxvY2FsX3JlZik6CisgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgIHByaW50KGxvY2FsX3JlZiwgbm9ubG9jYWxfcmVmLCBfZ2xvYmFsX3JlZiwgdW5ib3VuZF9yZWYpCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYoX2FyZykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGYoc2VsZiwgbm9ubG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKEMoKS5mKF9hcmcpKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9ub25sb2NhbF92YXJzKHNlbGYpOgorICAgICAgICAjIE1vcmUgY29tcGxleCB0ZXN0cyBvZiBub25sb2NhbCByZXNvbHV0aW9uCisgICAgICAgIGRlZiBfbm9ubG9jYWxfdmFycyhmKToKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLm5vbmxvY2FscworCisgICAgICAgIGRlZiBtYWtlX2FkZGVyKHgpOgorICAgICAgICAgICAgZGVmIGFkZCh5KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCArIHkKKyAgICAgICAgICAgIHJldHVybiBhZGQKKworICAgICAgICBkZWYgY3VycnkoZnVuYywgYXJnMSk6CisgICAgICAgICAgICByZXR1cm4gbGFtYmRhIGFyZzI6IGZ1bmMoYXJnMSwgYXJnMikKKworICAgICAgICBkZWYgbGVzc190aGFuKGEsIGIpOgorICAgICAgICAgICAgcmV0dXJuIGEgPCBiCisKKyAgICAgICAgIyBUaGUgaW5mYW1vdXMgWSBjb21iaW5hdG9yLgorICAgICAgICBkZWYgWShsZSk6CisgICAgICAgICAgICBkZWYgZyhmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGUobGFtYmRhIHg6IGYoZikoeCkpCisgICAgICAgICAgICBZLmdfcmVmID0gZworICAgICAgICAgICAgcmV0dXJuIGcoZykKKworICAgICAgICBkZWYgY2hlY2tfeV9jb21iaW5hdG9yKGZ1bmMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhmdW5jKSwgeydmJzogWS5nX3JlZn0pCisKKyAgICAgICAgaW5jID0gbWFrZV9hZGRlcigxKQorICAgICAgICBhZGRfdHdvID0gbWFrZV9hZGRlcigyKQorICAgICAgICBncmVhdGVyX3RoYW5fZml2ZSA9IGN1cnJ5KGxlc3NfdGhhbiwgNSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGluYyksIHsneCc6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGFkZF90d28pLCB7J3gnOiAyfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhncmVhdGVyX3RoYW5fZml2ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhcmcxJzogNSwgJ2Z1bmMnOiBsZXNzX3RoYW59KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKChsYW1iZGEgeDogbGFtYmRhIHk6IHggKyB5KSgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeyd4JzogM30pCisgICAgICAgIFkoY2hlY2tfeV9jb21iaW5hdG9yKQorCisgICAgZGVmIHRlc3RfZ2V0Y2xvc3VyZXZhcnNfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBfZW1wdHkgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwge30sIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMobGFtYmRhOiBUcnVlKSwgX2VtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZm9vKSwgX2VtcHR5KQorCisgICAgZGVmIHRlc3RfZ2V0Y2xvc3VyZXZhcnNfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIFQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRjbG9zdXJldmFycywge30pCisKKyAgICBkZWYgX3ByaXZhdGVfZ2xvYmFscyhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImRlZiBmKCk6IHByaW50KHBhdGgpIiIiCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgcmV0dXJuIG5zWyJmIl0sIG5zCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBucy5wb3AoIl9fYnVpbHRpbnNfXyIsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicHJpbnQiOnByaW50fSwgeyJwYXRoIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19hc19kaWN0KHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zWyJfX2J1aWx0aW5zX18iXSA9IHsicGF0aCI6MX0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwgeyJwYXRoIjoxfSwgeyJwcmludCJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfYXNfbW9kdWxlKHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zWyJfX2J1aWx0aW5zX18iXSA9IG9zCisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicGF0aCI6b3MucGF0aH0sIHsicHJpbnQifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGFzc2VydEVxdWFsQ2FsbEFyZ3Moc2VsZiwgZnVuYywgY2FsbF9wYXJhbXNfc3RyaW5nLCBsb2NzPU5vbmUpOgpAQCAtMTE2OSw2ICsxMzAxLDk3MiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCByZXByKHN0YXRlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc3RyKHN0YXRlKSkKIAorICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2FscyhzZWxmKToKKyAgICAgICAgZGVmIGVhY2gobHN0LCBhPU5vbmUpOgorICAgICAgICAgICAgYj0oMSwgMiwgMykKKyAgICAgICAgICAgIGZvciB2IGluIGxzdDoKKyAgICAgICAgICAgICAgICBpZiB2ID09IDM6CisgICAgICAgICAgICAgICAgICAgIGMgPSAxMgorICAgICAgICAgICAgICAgIHlpZWxkIHYKKworICAgICAgICBudW1iZXJzID0gZWFjaChbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXX0pCisgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdLCAndic6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdiJzogKDEsIDIsIDMpfSkKKyAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM10sICd2JzogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2InOiAoMSwgMiwgMyl9KQorICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXSwgJ3YnOiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYic6ICgxLCAyLCAzKSwgJ2MnOiAxMn0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksIHt9KQorCisgICAgZGVmIHRlc3RfZ2V0Z2VuZXJhdG9ybG9jYWxzX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgeWllbGRfb25lKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgIG9uZSA9IHlpZWxkX29uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMob25lKSwge30pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQob25lKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhvbmUpLCB7fSkKKworICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2Fsc19lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgbGFtYmRhIHg6IFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIHNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgKDIsMykpCisKKworY2xhc3MgVGVzdFNpZ25hdHVyZU9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzaWduYXR1cmUoZnVuYyk6CisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgICAgIHJldHVybiAodHVwbGUoKHBhcmFtLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICguLi4gaWYgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSBlbHNlIHBhcmFtLmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmFubm90YXRpb24gaXMgcGFyYW0uZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBwYXJhbS5hbm5vdGF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBhcmFtLmtpbmQpLmxvd2VyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpLAorICAgICAgICAgICAgICAgICguLi4gaWYgc2lnLnJldHVybl9hbm5vdGF0aW9uIGlzIHNpZy5lbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNpZy5yZXR1cm5fYW5ub3RhdGlvbikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb2JqZWN0KHNlbGYpOgorICAgICAgICBTID0gaW5zcGVjdC5TaWduYXR1cmUKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUygpKSwgJygpJykKKworICAgICAgICBkZWYgdGVzdChwbywgcGssICphcmdzLCBrbywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBwbyA9IHNpZy5wYXJhbWV0ZXJzWydwbyddLnJlcGxhY2Uoa2luZD1QLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgcGsgPSBzaWcucGFyYW1ldGVyc1sncGsnXQorICAgICAgICBhcmdzID0gc2lnLnBhcmFtZXRlcnNbJ2FyZ3MnXQorICAgICAgICBrbyA9IHNpZy5wYXJhbWV0ZXJzWydrbyddCisgICAgICAgIGt3YXJncyA9IHNpZy5wYXJhbWV0ZXJzWydrd2FyZ3MnXQorCisgICAgICAgIFMoKHBvLCBwaywgYXJncywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBrLCBwbywgYXJncywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBvLCBhcmdzLCBwaywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKGFyZ3MsIHBvLCBwaywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBvLCBwaywgYXJncywga3dhcmdzLCBrbykpCisKKyAgICAgICAga3dhcmdzMiA9IGt3YXJncy5yZXBsYWNlKG5hbWU9J2FyZ3MnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2R1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgUygocG8sIHBrLCBhcmdzLCBrd2FyZ3MyLCBrbykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfaW1tdXRhYmlsaXR5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHNpZy5mb28gPSAnYmFyJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpZy5wYXJhbWV0ZXJzWydhJ10gPSBOb25lCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9hcmcoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksICgoKSwgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl93YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYjonZm9vJykgLT4gMTIzOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgJ2ZvbycsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fd2t3b25seShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiwgYTpmbG9hdCwgYjpzdHIpIC0+IGludDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgZmxvYXQsICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgc3RyLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jb21wbGV4X2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGI6J2Zvbyc9MTAsICphcmdzOidiYXInLCBzcGFtOidiYXonLCBoYW09MTIzLCAqKmt3YXJnczppbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEwLCAnZm9vJywgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAnYmFyJywgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NwYW0nLCAuLi4sICdiYXonLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hhbScsIDEyMywgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgaW50LCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUodHlwZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnd3JhcHBlcl9kZXNjcmlwdG9yJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUodHlwZS5fX2NhbGxfXykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnbWV0aG9kLXdyYXBwZXInCisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShtaW4uX19jYWxsX18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24nKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ21ldGhvZC13cmFwcGVyJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUobWluKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX25vbl9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoNDIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicpOgorICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbig0MikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9tZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIGFyZzEsIGFyZzI9MSkgLT4gaW50OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NsYXNzbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscywgYXJnMSwgKiwgYXJnMj0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJnMScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZzInLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgbWV0aCA9IFRlc3QuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzLCAqLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdjbHMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBtZXRoID0gVGVzdC5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnY2xzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fcGFydGlhbChzZWxmKToKKyAgICAgICAgZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0KSksICgoKSwgLi4uKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiaGFzIGluY29ycmVjdCBhcmd1bWVudHMiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYT0xKSkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCAqLCBjLCBkKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGI9MSwgYz0yKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAwLCBiPTEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBkZWYgdGVzdChhLCAqYXJncywgYiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCAyLCAzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIDIsIDMsIHRlc3Q9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgMiwgMywgdGVzdD0xLCBiPTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDAsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBiPTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYj0wLCB0ZXN0PTEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCBjOmludCkgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnID0gdGVzdC5fX3NpZ25hdHVyZV9fID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwocGFydGlhbCh0ZXN0LCAxKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgaW50LCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA0MikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSksIDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYycsIC4uLiwgaW50LCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDIpKQorCisgICAgICAgIHBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSksIDIpKQorCisgICAgICAgIGRlZiBmb28oYSk6CisgICAgICAgICAgICByZXR1cm4gYQorICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgYT0xMCksIGE9MjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAyMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgIyBjaGVjayB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHNpZGUtZWZmZWN0cyBpbiBzaWduYXR1cmUoKSwKKyAgICAgICAgIyBhbmQgdGhlIHBhcnRpYWwgb2JqZWN0IGlzIHN0aWxsIGZ1bmN0aW9uaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygpLCAyMCkKKworICAgICAgICBkZWYgZm9vKGEsIGIsIGMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIDEsIGI9MjApLCBiPTMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgMzAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbyhjPTEwKSwgKDEsIDMwLCAxMCkpCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKF9mb28sIDIpICMgbm93ICdiJyBoYXMgdHdvIHZhbHVlcyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKQorCisgICAgICAgIGRlZiBmb28oYSwgYiwgYywgKiwgZCk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywgZAorICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgZD0yMCwgYz0yMCksIGI9MTAsIGQ9MzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMTAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMjAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgMzAsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKGE9MjAwLCBiPTExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDIwMCwgMTEsIDIwLCAzMCkpCisKKyAgICAgICAgZGVmIGZvbyhhPTEsIGI9MiwgYz0zKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKGZvbywgYT0xMCwgYz0xMykKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDExLCAyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSwgMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTEsIDEyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSwgYj0xMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMSwgMTIsIDEzKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKGI9MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTAsIDEyLCAxMykpCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKF9mb28sIGI9MTApCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMiwgMTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTIsIDE0LCAxMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fZGVjb3JhdGVkKHNlbGYpOgorICAgICAgICBpbXBvcnQgZnVuY3Rvb2xzCisKKyAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncykgLT4gaW50OgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyCisKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgQGRlY29yYXRvcgorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28uYmFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnc2VsZicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28oKS5iYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbmRsZSBtZXRob2Qgd3JhcHBlcnMgY29ycmVjdGx5CisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpIC0+IGludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyg0MiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICAgICAgICAgIG5ld19wYXJhbXMgPSB0dXBsZShzaWcucGFyYW1ldGVycy52YWx1ZXMoKSlbMTpdCisgICAgICAgICAgICB3cmFwcGVyLl9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcgorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBkZWNvcmF0b3IKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28uX19jYWxsX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkuX19jYWxsX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKGNscywgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ00odHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBmb289MSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTU0odHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBmb289MSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKGNscywgbm0sIGJzLCBkdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUobm0sIGJzLCBkdCkKKyAgICAgICAgY2xhc3MgQ00odHlwZSwgbWV0YWNsYXNzPUNNTSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBiYXI9Mik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ01NKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbmFtZScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhc2VzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZGN0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdubScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZHQnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgYmFyPTIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUNNKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JhcicsIDIsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jYWxsYWJsZV9vYmplY3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKFNwYW0oKSkKKworICAgICAgICBjbGFzcyBCYXIoU3BhbSwgRm9vKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEJhcigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBUb0ZhaWw6CisgICAgICAgICAgICBfX2NhbGxfXyA9IHR5cGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZSIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoVG9GYWlsKCkpCisKKworICAgICAgICBjbGFzcyBXcmFwcGVkOgorICAgICAgICAgICAgcGFzcworICAgICAgICBXcmFwcGVkLl9fd3JhcHBlZF9fID0gbGFtYmRhIGE6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShXcmFwcGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9sYW1iZGFzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKChsYW1iZGEgYT0xMDogYSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgMTAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgNDIpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGludDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQ9NDIpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGMpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsIGI6aW50KSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIGRlZiBzcGFtKGI6aW50LCBhKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKHNwYW0pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28oKiwgYSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbygqLCBhPTEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICosIGE9MSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKHBvcywgKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICphcmdzLCBhPTQyLCBiLCBjLCAqKmt3YXJnczppbnQpOiBwYXNzCisgICAgICAgIGRlZiBiYXIocG9zLCAqYXJncywgYywgYiwgYT00MiwgKiprd2FyZ3M6aW50KTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfdW5oYXNoYWJsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2goc2lnKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cihzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MicpCisKKyAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqYXJncywgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoYTppbnQ9MSwgKmFyZ3MsIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyJykKKworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCAnKCknKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cl9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIGRlZiB0ZXN0KGFfcG8sICosIGIsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhX3BvLCBrd2FyZ3MKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBuZXdfcGFyYW1zID0gbGlzdChzaWcucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgbmV3X3BhcmFtc1swXSA9IG5ld19wYXJhbXNbMF0ucmVwbGFjZShraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoPGFfcG8+LCAqLCBiLCAqKmt3YXJncyknKQorCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIG5ld19wYXJhbXMgPSBsaXN0KHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQorICAgICAgICBuZXdfcGFyYW1zWzBdID0gbmV3X3BhcmFtc1swXS5yZXBsYWNlKG5hbWU9Tm9uZSkKKyAgICAgICAgdGVzdC5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyg8MD4sICosIGIsICoqa3dhcmdzKScpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcmVwbGFjZV9hbm5vKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2lnLnJldHVybl9hbm5vdGF0aW9uLCBOb25lKQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj1zaWcuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2lnLnJldHVybl9hbm5vdGF0aW9uLCBzaWcuZW1wdHkpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPTQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnLCBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSkKKworCitjbGFzcyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2tpbmRzKHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuUE9TSVRJT05BTF9PTkxZIDwgUC5QT1NJVElPTkFMX09SX0tFWVdPUkQgPCBcCisgICAgICAgICAgICAgICAgICAgICAgICBQLlZBUl9QT1NJVElPTkFMIDwgUC5LRVlXT1JEX09OTFkgPCBQLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFAuUE9TSVRJT05BTF9PTkxZKSwgJ1BPU0lUSU9OQUxfT05MWScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnUE9TSVRJT05BTF9PTkxZJyBpbiByZXByKFAuUE9TSVRJT05BTF9PTkxZKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGVmYXVsdCwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocC5hbm5vdGF0aW9uLCBwLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnaW52YWxpZCB2YWx1ZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9MTAsIGtpbmQ9JzEyMycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJzEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub24tcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcicpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUwpCisKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBwLnJlcGxhY2Uoa2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihwKS5zdGFydHN3aXRoKCc8UGFyYW1ldGVyJykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKyAgICAgICAgcCA9IFAoJ2ZvbycsIGRlZmF1bHQ9NDIsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwLCA0MikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFAoJ2ZvbycsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3VuaGFzaGFibGUoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2gocCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfcmVwbGFjZShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChwLCBwLnJlcGxhY2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBwLnJlcGxhY2UoKSkKKworICAgICAgICBwMiA9IHAucmVwbGFjZShhbm5vdGF0aW9uPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuYW5ub3RhdGlvbiwgMSkKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGFubm90YXRpb249cDIuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcDIpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIubmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocDIsIHApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9cDIuZW1wdHkpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2ZvbycsIGRlZmF1bHQ9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwMi5kZWZhdWx0LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAyLCBwKQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdmb28nLCBkZWZhdWx0PXAyLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydElzKHAyLmRlZmF1bHQsIHAyLmVtcHR5KQorCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGRlZmF1bHQ9NDIsIGtpbmQ9cDIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmtpbmQsIHAyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwMiwgcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2ludmFsaWQgdmFsdWUgZm9yJyk6CisgICAgICAgICAgICBwMiA9IHAyLnJlcGxhY2Uoa2luZD1wMi5lbXB0eSkKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2Uoa2luZD1wMi5LRVlXT1JEX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIsIHApCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJzw+JykKKworICAgICAgICBwID0gcC5yZXBsYWNlKG5hbWU9JzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJzwxPicpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2ltbXV0YWJpbGl0eShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5mb28gPSAnYmFyJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5raW5kID0gMTIzCisKKworY2xhc3MgVGVzdFNpZ25hdHVyZUJpbmQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY2FsbChmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jKQorICAgICAgICBiYSA9IHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGZ1bmMoKmJhLmFyZ3MsICoqYmEua3dhcmdzKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgNDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIHNwYW09MTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09MSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcihzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgKCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEpLCAoKDEsKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKCgxLCAyKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289J2JhcicpLCAoKCksIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgZm9vPSdiYXInKSwgKCgxLCksIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYXJncz0xMCksICgoKSwgeydhcmdzJzogMTB9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgZm9vPSdiYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKDEsIDIpLCB7J2Zvbyc6ICdiYXInfSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9qdXN0X2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidiJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2EnIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0KQorCisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MTApOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAxMCkpCisKKyAgICAgICAgZGVmIHRlc3QoYT0xLCBiPTIsIGM9Myk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEwLCBjPTEzKSwgKDEwLCAyLCAxMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGE9MTApLCAoMTAsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTEwKSwgKDEsIDEwLCAzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcmFyZ3Nfb3JkZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCphcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJnc19hbmRfdmFyYXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0zLCAqYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywgYXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQsIDUpLCAoMSwgMiwgMywgKDQsIDUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAzLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGI9MSwgYT0yKSwgKDIsIDEsIDMsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yKSwgKDEsIDIsIDMsICgpKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICdjJyIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIGM9NCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2p1c3Rfa3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4ga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJnc19hbmRfa3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTMsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjLCBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKDEsIDIsIDMsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTIsIGE9MSwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEsIGI9MiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiPTIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yLCBjPTQsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgNCwgZm9vPSdiYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgNCwgeydmb28nOiAnYmFyJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBjPTUsIGE9NCwgYj0zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoNCwgMywgNSwge30pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfa3dvbmx5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqLCBmb28pOgorICAgICAgICAgICAgcmV0dXJuIGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGZvbz0xKSwgMSkKKworICAgICAgICBkZWYgdGVzdChhLCAqLCBmb289MSwgYmFyKToKKyAgICAgICAgICAgIHJldHVybiBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIpOgorICAgICAgICAgICAgcmV0dXJuIGZvbywgYmFyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yKSwgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEpLCAoMSwgMikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEsIHNwYW09MTApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgYmFyPTIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInYmFyJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICBkZWYgdGVzdChmb28sICosIGJhciwgKipiaW4pOgorICAgICAgICAgICAgcmV0dXJuIGZvbywgYmFyLCBiaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIpLCAoMSwgMiwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289MSwgYmFyPTIpLCAoMSwgMiwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGZvbz0xLCBiYXI9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidmb28nIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBiYXI9MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIGJpbj0xLCBzcGFtPTEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydiaW4nOiAxLCAnc3BhbSc6IDEwfSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsICphcmdzLCBiLCB6PTEwMCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBiYSA9IHNpZy5iaW5kKDEwLCAyMCwgYj0zMCwgYz00MCwgYXJncz01MCwga3dhcmdzPTYwKQorICAgICAgICAjIHdlIHdvbid0IGhhdmUgJ3onIGFyZ3VtZW50IGluIHRoZSBib3VuZCBhcmd1bWVudHMgb2JqZWN0LCBhcyB3ZSBkaWRuJ3QKKyAgICAgICAgIyBwYXNzIGl0IHRvIHRoZSAnYmluZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgnYScsIDEwKSwgKCdhcmdzJywgKDIwLCkpLCAoJ2InLCAzMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgeydjJzogNDAsICdhcmdzJzogNTAsICdrd2FyZ3MnOiA2MH0pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYS5rd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgeydiJzogMzAsICdjJzogNDAsICdhcmdzJzogNTAsICdrd2FyZ3MnOiA2MH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJncywgKDEwLCAyMCkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIGRlZiB0ZXN0KGFfcG8sIGJfcG8sIGNfcG89MywgZm9vPTQyLCAqLCBiYXI9NTAsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhX3BvLCBiX3BvLCBjX3BvLCBmb28sIGJhciwga3dhcmdzCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgbmV3X3BhcmFtcyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KHR1cGxlKHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCkpKQorICAgICAgICBmb3IgbmFtZSBpbiAoJ2FfcG8nLCAnYl9wbycsICdjX3BvJyk6CisgICAgICAgICAgICBuZXdfcGFyYW1zW25hbWVdID0gbmV3X3BhcmFtc1tuYW1lXS5yZXBsYWNlKGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIG5ld19zaWcgPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisgICAgICAgIHRlc3QuX19zaWduYXR1cmVfXyA9IG5ld19zaWcKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCA0LCA1LCBiYXI9NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIDUsIDYsIHt9KSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGNfcG89NCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIGFfcG89MSwgYl9wbz0yKQorCisKK2NsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChiYSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmEpCisKKyAgICAgICAgYmEyID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMikKKworICAgICAgICBiYTMgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYSwgYmEzKQorICAgICAgICBiYTMuYXJndW1lbnRzWydhJ10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMykKKworICAgICAgICBkZWYgYmFyKGIpOiBwYXNzCisgICAgICAgIGJhNCA9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikuYmluZCgxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdCgKQEAgLTExNzYsNyArMjI3NCw4IEBACiAgICAgICAgIFRlc3RJbnRlcnByZXRlclN0YWNrLCBUZXN0Q2xhc3Nlc0FuZEZ1bmN0aW9ucywgVGVzdFByZWRpY2F0ZXMsCiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCi0gICAgICAgIFRlc3ROb0VPTAorICAgICAgICBUZXN0Tm9FT0wsIFRlc3RTaWduYXR1cmVPYmplY3QsIFRlc3RTaWduYXR1cmVCaW5kLCBUZXN0UGFyYW1ldGVyT2JqZWN0LAorICAgICAgICBUZXN0Qm91bmRBcmd1bWVudHMsIFRlc3RHZXRDbG9zdXJlVmFycwogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggNDM3ZTMyMy4uMjI3NzU5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTMwNSw2ICszMDUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgVHlwZUVycm9yIHdpdGggJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYmFzZSwgdHJ1bmNfcmVzdWx0X2Jhc2UpLCkpCiAKKyAgICAgICAgICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVncy5weXRob24ub3JnL2lzc3VlMTYwNjAuCisgICAgICAgICAgICAgICAgY2xhc3MgQmFkSW50KHRydW5jX3Jlc3VsdF9iYXNlKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDIuMAorCisgICAgICAgICAgICAgICAgY2xhc3MgVHJ1bmNSZXR1cm5zQmFkSW50KGJhc2UpOgorICAgICAgICAgICAgICAgICAgICBkZWYgX190cnVuY19fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJhZEludCgpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGludChUcnVuY1JldHVybnNCYWRJbnQoKSkKKwogICAgIGRlZiB0ZXN0X2Vycm9yX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgIHRlc3RsaXN0ID0gKCdceGJkJywgJzEyM1x4YmQnLCAnICAxMjMgNDU2ICAnKQogICAgICAgICBmb3IgcyBpbiB0ZXN0bGlzdDoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDBjM2UwYjguLmQ1ZWVjN2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMTksMjAgKzE5LDIxIEBACiAjIHRlc3QgYm90aCBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgZmlsZSBoYXMgbG90cyBvZiBleGFtcGxlcy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBhYmMKK2ltcG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXJyYXkKLWltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdlYWtyZWYKLWltcG9ydCBhYmMKLWltcG9ydCBzaWduYWwKLWltcG9ydCBlcnJubwogaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgcGlja2xlCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CitpbXBvcnQgd2Vha3JlZgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBjeWNsZSwgY291bnQKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBpbXBvcnQgY29kZWNzCkBAIC00OSw3ICs1MCw3IEBACiAKIGRlZiBfZGVmYXVsdF9jaHVua19zaXplKCk6CiAgICAgIiIiR2V0IHRoZSBkZWZhdWx0IFRleHRJT1dyYXBwZXIgY2h1bmsgc2l6ZSIiIgotICAgIHdpdGggb3BlbihfX2ZpbGVfXywgInIiLCBlbmNvZGluZz0ibGF0aW4xIikgYXMgZjoKKyAgICB3aXRoIG9wZW4oX19maWxlX18sICJyIiwgZW5jb2Rpbmc9ImxhdGluLTEiKSBhcyBmOgogICAgICAgICByZXR1cm4gZi5fQ0hVTktfU0laRQogCiAKQEAgLTYzNCw2ICs2MzUsMTUgQEAKICAgICAgICAgZm9yIG9iaiBpbiB0ZXN0OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIob2JqLCAiX19kaWN0X18iKSkKIAorICAgIGRlZiB0ZXN0X29wZW5lcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoImVnZ1xuIikKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgZGVmIG9wZW5lcihwYXRoLCBmbGFncyk6CisgICAgICAgICAgICByZXR1cm4gZmQKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oIm5vbi1leGlzdGVudCIsICJyIiwgb3BlbmVyPW9wZW5lcikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJlZ2dcbiIpCisKICAgICBkZWYgdGVzdF9maWxlaW9fY2xvc2VmZChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNDg0MQogICAgICAgICB3aXRoIHNlbGYub3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgZjEsIFwKQEAgLTY5Niw3ICs3MDYsNyBAQAogICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8pCiAgICAgICAgICMgSW52YWxpZCB3aGVuY2UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnVmaW8uc2VlaywgMCwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ1ZmlvLnNlZWssIDAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ1ZmlvLnNlZWssIDAsIDkpCiAKICAgICBkZWYgdGVzdF9vdmVycmlkZV9kZXN0cnVjdG9yKHNlbGYpOgogICAgICAgICB0cCA9IHNlbGYudHAKQEAgLTg2Miw2ICs4NzIsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImdmIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50byhiKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImdmIikKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoYiJhYmMiLCBOb25lKSkKKyAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiYWIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiY2IiKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgogICAgICAgICBkZWYgYnVmaW8oKToKQEAgLTEyNTMsOSArMTI2OSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ1ZmlvLnRlbGwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ1ZmlvLndyaXRlLCBiImFiY2RlZiIpCiAKLSAgICBkZWYgdGVzdF9tYXhfYnVmZmVyX3NpemVfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICBkZWYgdGVzdF9tYXhfYnVmZmVyX3NpemVfcmVtb3ZhbChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi50cChzZWxmLk1vY2tSYXdJTygpLCA4LCAxMikKIAogCkBAIC0xMzExLDkgKzEzMjYsOCBAQAogICAgICAgICBwYWlyID0gc2VsZi50cChzZWxmLk1vY2tSYXdJTygpLCBzZWxmLk1vY2tSYXdJTygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLlVuc3VwcG9ydGVkT3BlcmF0aW9uLCBwYWlyLmRldGFjaCkKIAotICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX21heF9idWZmZXJfc2l6ZV9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX21heF9idWZmZXJfc2l6ZV9yZW1vdmFsKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnRwKHNlbGYuTW9ja1Jhd0lPKCksIHNlbGYuTW9ja1Jhd0lPKCksIDgsIDEyKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3Jfd2l0aF9ub3RfcmVhZGFibGUoc2VsZik6CkBAIC0xODI5LDExICsxODQzLDExIEBACiAgICAgICAgIHIgPSBzZWxmLkJ5dGVzSU8oYiJceGMzXHhhOVxuXG4iKQogICAgICAgICBiID0gc2VsZi5CdWZmZXJlZFJlYWRlcihyLCAxMDAwKQogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCi0gICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9ImxhdGluMSIsIG5ld2xpbmU9IlxyXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJsYXRpbjEiKQorICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJsYXRpbi0xIiwgbmV3bGluZT0iXHJcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgImxhdGluLTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubGluZV9idWZmZXJpbmcsIEZhbHNlKQotICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJ1dGY4IiwgbGluZV9idWZmZXJpbmc9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmOCIpCisgICAgICAgIHQuX19pbml0X18oYiwgZW5jb2Rpbmc9InV0Zi04IiwgbGluZV9idWZmZXJpbmc9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmLTgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubGluZV9idWZmZXJpbmcsIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlx4ZTlcbiIsIHQucmVhZGxpbmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Ll9faW5pdF9fLCBiLCBuZXdsaW5lPTQyKQpAQCAtMTg4MCwxMSArMTg5NCwyOSBAQAogICAgICAgICB0LndyaXRlKCJBXHJCIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLmdldHZhbHVlKCksIGIiWFlcblpBXHJCIikKIAorICAgIGRlZiB0ZXN0X2RlZmF1bHRfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIG9sZF9lbnZpcm9uID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHRyeSB0byBnZXQgYSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiB0aGUgY3VycmVudAorICAgICAgICAgICAgIyBsb2NhbGUgZW5jb2RpbmcgdG8gY2hlY2sgdGhhdCBUZXh0SU9XcmFwcGVyKCkgdXNlcyB0aGUgY3VycmVudAorICAgICAgICAgICAgIyBsb2NhbGUgZW5jb2RpbmcgYW5kIG5vdCB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcKKyAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMQ19BTEwnLCAnTEFORycsICdMQ19DVFlQRScpOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvbltrZXldCisKKyAgICAgICAgICAgIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgICAgICAgICAgYiA9IHNlbGYuQnl0ZXNJTygpCisgICAgICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsIGN1cnJlbnRfbG9jYWxlX2VuY29kaW5nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCisgICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShvbGRfZW52aXJvbikKKwogICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgaXMgYWx3YXlzIHNldCwgYW5kIHZhbGlkCiAgICAgICAgIGIgPSBzZWxmLkJ5dGVzSU8oKQotICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmOCIpCisgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoYiwgZW5jb2Rpbmc9InV0Zi04IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAidXRmLTgiKQogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmVuY29kaW5nIGlzIG5vdCBOb25lKQogICAgICAgICBjb2RlY3MubG9va3VwKHQuZW5jb2RpbmcpCkBAIC0xOTc3LDggKzIwMDksOCBAQAogICAgICAgICB0ZXN0ZGF0YSA9IGIiQUFBXG5CQlx4MDBCXG5DQ0NcckRERFxyRUVFXHJcbkZGRlxyXG5HR0ciCiAgICAgICAgIG5vcm1hbGl6ZWQgPSB0ZXN0ZGF0YS5yZXBsYWNlKGIiXHJcbiIsIGIiXG4iKS5yZXBsYWNlKGIiXHIiLCBiIlxuIikKICAgICAgICAgZm9yIG5ld2xpbmUsIGV4cGVjdGVkIGluIFsKLSAgICAgICAgICAgIChOb25lLCBub3JtYWxpemVkLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKFRydWUpKSwKLSAgICAgICAgICAgICgiIiwgdGVzdGRhdGEuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoVHJ1ZSkpLAorICAgICAgICAgICAgKE5vbmUsIG5vcm1hbGl6ZWQuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpLAorICAgICAgICAgICAgKCIiLCB0ZXN0ZGF0YS5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSksCiAgICAgICAgICAgICAoIlxuIiwgWyJBQUFcbiIsICJCQlx4MDBCXG4iLCAiQ0NDXHJERERcckVFRVxyXG4iLCAiRkZGXHJcbiIsICJHR0ciXSksCiAgICAgICAgICAgICAoIlxyXG4iLCBbIkFBQVxuQkJceDAwQlxuQ0NDXHJERERcckVFRVxyXG4iLCAiRkZGXHJcbiIsICJHR0ciXSksCiAgICAgICAgICAgICAoIlxyIiwgIFsiQUFBXG5CQlx4MDBCXG5DQ0NcciIsICJERERcciIsICJFRUVcciIsICJcbkZGRlxyIiwgIlxuR0dHIl0pLApAQCAtMjA2Myw3ICsyMDk1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX2lvKHNlbGYpOgogICAgICAgICBmb3IgY2h1bmtzaXplIGluICgxLCAyLCAzLCA0LCA1LCAxNSwgMTYsIDE3LCAzMSwgMzIsIDMzLCA2MywgNjQsIDY1KToKLSAgICAgICAgICAgIGZvciBlbmMgaW4gImFzY2lpIiwgImxhdGluMSIsICJ1dGY4IiA6IyAsICJ1dGYtMTYtYmUiLCAidXRmLTE2LWxlIjoKKyAgICAgICAgICAgIGZvciBlbmMgaW4gImFzY2lpIiwgImxhdGluLTEiLCAidXRmLTgiIDojICwgInV0Zi0xNi1iZSIsICJ1dGYtMTYtbGUiOgogICAgICAgICAgICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3KyIsIGVuY29kaW5nPWVuYykKICAgICAgICAgICAgICAgICBmLl9DSFVOS19TSVpFID0gY2h1bmtzaXplCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRlKCJhYmMiKSwgMykKQEAgLTIxMTMsNyArMjE0NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmxpbmVzLCB3bGluZXMpCiAKICAgICBkZWYgdGVzdF90ZWxsaW5nKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidysiLCBlbmNvZGluZz0idXRmOCIpCisgICAgICAgIGYgPSBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3KyIsIGVuY29kaW5nPSJ1dGYtOCIpCiAgICAgICAgIHAwID0gZi50ZWxsKCkKICAgICAgICAgZi53cml0ZSgiXHhmZlxuIikKICAgICAgICAgcDEgPSBmLnRlbGwoKQpAQCAtMjM1OSw2ICsyMzkxLDcgQEAKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3IiwgZXJyb3JzPSJyZXBsYWNlIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5lcnJvcnMsICJyZXBsYWNlIikKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X3RocmVhZHNfd3JpdGUoc2VsZik6CiAgICAgICAgICMgSXNzdWU2NzUwOiBjb25jdXJyZW50IHdyaXRlcyBjb3VsZCBkdXBsaWNhdGUgZGF0YQpAQCAtMjY3NiwxMiArMjcwOSw2IEBACiAKICAgICBkZWYgdGVzdF9ibG9ja2luZ2lvZXJyb3Ioc2VsZik6CiAgICAgICAgICMgVmFyaW91cyBCbG9ja2luZ0lPRXJyb3IgaXNzdWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5CbG9ja2luZ0lPRXJyb3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5CbG9ja2luZ0lPRXJyb3IsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5CbG9ja2luZ0lPRXJyb3IsIDEsIDIsIDMsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5CbG9ja2luZ0lPRXJyb3IsIDEsICIiLCBOb25lKQotICAgICAgICBiID0gc2VsZi5CbG9ja2luZ0lPRXJyb3IoMSwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDApCiAgICAgICAgIGNsYXNzIEMoc3RyKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgYyA9IEMoIiIpCkBAIC0yODIzLDYgKzI4NTAsNyBAQAogCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuQmxvY2tpbmdJT0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCBlcnJuby5FQUdBSU4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzJdLCBlLmNoYXJhY3RlcnNfd3JpdHRlbikKICAgICAgICAgICAgICAgICAgICAgc2VudFstMV0gPSBzZW50Wy0xXVs6ZS5jaGFyYWN0ZXJzX3dyaXR0ZW5dCiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChyZi5yZWFkKCkpCiAgICAgICAgICAgICAgICAgICAgIG1zZyA9IGInQkxPQ0tFRCcKQEAgLTI4MzUsNiArMjg2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuQmxvY2tpbmdJT0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCBlcnJuby5FQUdBSU4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzJdLCBlLmNoYXJhY3RlcnNfd3JpdHRlbikKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmNoYXJhY3RlcnNfd3JpdHRlbiwgMCkKICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQuYXBwZW5kKHJmLnJlYWQoKSkKIApAQCAtMjg0NSw2ICsyODc0LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3Zi5jbG9zZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZi5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfZmFpbChzZWxmKToKKyAgICAgICAgIyAneCcgbW9kZSBmYWlscyBpZiBmaWxlIGlzIGV4aXN0aW5nCisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IsIHNlbGYub3Blbiwgc3VwcG9ydC5URVNURk4sICd4JykKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV93cml0ZXMoc2VsZik6CisgICAgICAgICMgJ3gnIG1vZGUgb3BlbnMgZm9yIHdyaXRpbmcKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICd4YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIic3BhbSIpCisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiInNwYW0iLCBmLnJlYWQoKSkKKworICAgIGRlZiB0ZXN0X29wZW5fYWxsYXJncyhzZWxmKToKKyAgICAgICAgIyB0aGVyZSB1c2VkIHRvIGJlIGEgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBwYXJzZXIgZm9yIHJhd21vZGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBzdXBwb3J0LlRFU1RGTiwgJ3J3YXgrJykKKworCiBjbGFzcyBDTWlzY0lPVGVzdChNaXNjSU9UZXN0KToKICAgICBpbyA9IGlvCiAKQEAgLTI4NjUsMTQgKzI5MTIsMTQgQEAKICAgICAgICAgMS8wCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtIGluICgnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnKSwKLSAgICAgICAgICAgICAgICAgICAgICdpc3N1ZSAjMTI0Mjk6IHNraXAgdGVzdCBvbiBGcmVlQlNEIDw9IDcnKQogICAgIGRlZiBjaGVja19pbnRlcnJ1cHRlZF93cml0ZShzZWxmLCBpdGVtLCBieXRlcywgKipmZG9wZW5fa3dhcmdzKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBhIHBhcnRpYWwgd3JpdGUsIHdoZW4gaXQgZ2V0cyBpbnRlcnJ1cHRlZCwgcHJvcGVybHkKICAgICAgICAgaW52b2tlcyB0aGUgc2lnbmFsIGhhbmRsZXIsIGFuZCBidWJibGVzIHVwIHRoZSBleGNlcHRpb24gcmFpc2VkCiAgICAgICAgIGluIHRoZSBsYXR0ZXIuIiIiCiAgICAgICAgIHJlYWRfcmVzdWx0cyA9IFtdCiAgICAgICAgIGRlZiBfcmVhZCgpOgorICAgICAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWduYWwuU0lHQUxSTV0pCiAgICAgICAgICAgICBzID0gb3MucmVhZChyLCAxKQogICAgICAgICAgICAgcmVhZF9yZXN1bHRzLmFwcGVuZChzKQogICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3JlYWQpCkBAIC0yODkwLDcgKzI5MzcsNyBAQAogICAgICAgICAgICAgIyBUaGUgYnVmZmVyZWQgSU8gbGF5ZXIgbXVzdCBjaGVjayBmb3IgcGVuZGluZyBzaWduYWwKICAgICAgICAgICAgICMgaGFuZGxlcnMsIHdoaWNoIGluIHRoaXMgY2FzZSB3aWxsIGludm9rZSBhbGFybV9pbnRlcnJ1cHQoKS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lvLndyaXRlLCBpdGVtICogKDEwMjQgKiAxMDI0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpby53cml0ZSwgaXRlbSAqIChzdXBwb3J0LlBJUEVfTUFYX1NJWkUgLy8gbGVuKGl0ZW0pKSkKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICAjIFdlIGdvdCBvbmUgYnl0ZSwgZ2V0IGFub3RoZXIgb25lIGFuZCBjaGVjayB0aGF0IGl0IGlzbid0IGEKICAgICAgICAgICAgICMgcmVwZWF0IG9mIHRoZSBmaXJzdCBvbmUuCkBAIC0yOTE3LDYgKzI5NjQsNyBAQAogICAgIGRlZiB0ZXN0X2ludGVycnVwdGVkX3dyaXRlX3RleHQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfaW50ZXJydXB0ZWRfd3JpdGUoInh5IiwgYiJ4eSIsIG1vZGU9InciLCBlbmNvZGluZz0iYXNjaWkiKQogCisgICAgQHN1cHBvcnQubm9fdHJhY2luZwogICAgIGRlZiBjaGVja19yZWVudHJhbnRfd3JpdGUoc2VsZiwgZGF0YSwgKipmZG9wZW5fa3dhcmdzKToKICAgICAgICAgZGVmIG9uX2FsYXJtKCphcmdzKToKICAgICAgICAgICAgICMgV2lsbCBiZSBjYWxsZWQgcmVlbnRyYW50bHkgZnJvbSB0aGUgc2FtZSB0aHJlYWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljNTRmMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CkBAIC0wLDAgKzEsMTY0OSBAQAorIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgorIyAgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorCisiIiJVbml0dGVzdCBmb3IgaXBhZGRyZXNzIG1vZHVsZS4iIiIKKworCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCByZQoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0IGlwYWRkcmVzcworCitjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgT25lIGJpZyBjaGFuZ2UgaW4gaXBhZGRyZXNzIG92ZXIgdGhlIG9yaWdpbmFsIGlwYWRkciBtb2R1bGUgaXMKKyAgICAjIGVycm9yIHJlcG9ydGluZyB0aGF0IHRyaWVzIHRvIGFzc3VtZSB1c2VycyAqZG9uJ3Qga25vdyB0aGUgcnVsZXMqCisgICAgIyBmb3Igd2hhdCBjb25zdGl0dXRlcyBhbiBSRkMgY29tcGxpYW50IElQIGFkZHJlc3MKKworICAgICMgRW5zdXJpbmcgdGhlc2UgZXJyb3JzIGFyZSBlbWl0dGVkIGNvcnJlY3RseSBpbiBhbGwgcmVsZXZhbnQgY2FzZXMKKyAgICAjIG1lYW50IG1vdmluZyB0byBhIG1vcmUgc3lzdGVtYXRpYyB0ZXN0IHN0cnVjdHVyZSB0aGF0IGFsbG93cyB0aGUKKyAgICAjIHRlc3Qgc3RydWN0dXJlIHRvIG1hcCBtb3JlIGRpcmVjdGx5IHRvIHRoZSBtb2R1bGUgc3RydWN0dXJlCisKKyAgICAjIE5vdGUgdGhhdCBpZiB0aGUgY29uc3RydWN0b3JzIGFyZSByZWZhY3RvcmVkIHNvIHRoYXQgYWRkcmVzc2VzIHdpdGgKKyAgICAjIG11bHRpcGxlIHByb2JsZW1zIGdldCBjbGFzc2lmaWVkIGRpZmZlcmVudGx5LCB0aGF0J3MgT0sgLSBqdXN0CisgICAgIyBtb3ZlIHRoZSBhZmZlY3RlZCBleGFtcGxlcyB0byB0aGUgbmV3bHkgYXBwcm9wcmlhdGUgdGVzdCBjYXNlLgorCisgICAgIyBUaGVyZSBpcyBzb21lIGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIG9yaWdpbmFsIHJlbGF0aXZlbHkgYWQgaG9jCisgICAgIyB0ZXN0IHN1aXRlIGFuZCB0aGUgbmV3IHN5c3RlbWF0aWMgdGVzdHMuIFdoaWxlIHNvbWUgcmVkdW5kYW5jeSBpbgorICAgICMgdGVzdGluZyBpcyBjb25zaWRlcmVkIHByZWZlcmFibGUgdG8gYWNjaWRlbnRhbGx5IGRlbGV0aW5nIGEgdmFsaWQKKyAgICAjIHRlc3QsIHRoZSBvcmlnaW5hbCB0ZXN0IHN1aXRlIHdpbGwgbGlrZWx5IGJlIHJlZHVjZWQgb3ZlciB0aW1lIGFzCisgICAgIyByZWR1bmRhbnQgdGVzdHMgYXJlIGlkZW50aWZpZWQuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZmFjdG9yeShzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgYXNzZXJ0Q2xlYW5FcnJvcihzZWxmLCBleGNfdHlwZSwgZGV0YWlscywgKmFyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgRW5zdXJlIGV4Y2VwdGlvbiBkb2VzIG5vdCBkaXNwbGF5IGEgY29udGV4dCBieSBkZWZhdWx0CisKKyAgICAgICAgV3JhcHMgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0UmFpc2VzUmVnZXgKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICBkZXRhaWxzID0gZGV0YWlscyAlIGFyZ3MKKyAgICAgICAgY20gPSBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGV4Y190eXBlLCBkZXRhaWxzKQorICAgICAgICB3aXRoIGNtIGFzIGV4YzoKKyAgICAgICAgICAgIHlpZWxkIGV4YworICAgICAgICAjIEVuc3VyZSB3ZSBwcm9kdWNlIGNsZWFuIHRyYWNlYmFja3Mgb24gZmFpbHVyZQorICAgICAgICBpZiBleGMuZXhjZXB0aW9uLl9fY29udGV4dF9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5leGNlcHRpb24uX19zdXBwcmVzc19jb250ZXh0X18pCisKKyAgICBkZWYgYXNzZXJ0QWRkcmVzc0Vycm9yKHNlbGYsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiRW5zdXJlIGEgY2xlYW4gQWRkcmVzc1ZhbHVlRXJyb3IiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLCAqYXJncykKKworICAgIGRlZiBhc3NlcnROZXRtYXNrRXJyb3Ioc2VsZiwgZGV0YWlscywgKmFyZ3MpOgorICAgICAgICAiIiJFbnN1cmUgYSBjbGVhbiBOZXRtYXNrVmFsdWVFcnJvciIiIgorICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRDbGVhbkVycm9yKGlwYWRkcmVzcy5OZXRtYXNrVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscywgKmFyZ3MpCisKKyAgICBkZWYgYXNzZXJ0SW5zdGFuY2VzRXF1YWwoc2VsZiwgbGhzLCByaHMpOgorICAgICAgICAiIiJDaGVjayBjb25zdHJ1Y3RvciBhcmd1bWVudHMgcHJvZHVjZSBlcXVpdmFsZW50IGluc3RhbmNlcyIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFjdG9yeShsaHMpLCBzZWxmLmZhY3RvcnkocmhzKSkKKworY2xhc3MgQ29tbW9uVGVzdE1peGluOgorCisgICAgZGVmIHRlc3RfZW1wdHlfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiIikKKworICAgIGRlZiB0ZXN0X2Zsb2F0c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUocmVwcigiMS4wIikpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgxLjApCisKKyAgICBkZWYgdGVzdF9ub3RfYW5faW5kZXhfaXNzdWUxNTU1OShzZWxmKToKKyAgICAgICAgIyBJbXBsZW1lbnRpbmcgX19pbmRleF9fIG1ha2VzIGZvciBhIHZlcnkgbmFzdHkgaW50ZXJhY3Rpb24gd2l0aCB0aGUKKyAgICAgICAgIyBieXRlcyBjb25zdHJ1Y3Rvci4gVGh1cywgd2UgZGlzYWxsb3cgaW1wbGljaXQgdXNlIGFzIGFuIGludGVnZXIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleCwgc2VsZi5mYWN0b3J5KDEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhleCwgc2VsZi5mYWN0b3J5KDEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBzZWxmLmZhY3RvcnkoMSkpCisKKworY2xhc3MgQ29tbW9uVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbik6CisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3plcm9zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIwMDAuMDAwLjAwMC4wMDAiLCAiMC4wLjAuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjE5Mi4xNjguMDAwLjAwMSIsICIxOTIuMTY4LjAuMSIpCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMCwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDMyMzIyMzU1MjEsICIxOTIuMTY4LjAuMSIpCisKKyAgICBkZWYgdGVzdF9wYWNrZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKSwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIiksICIxOTIuMTY4LjAuMSIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9pbnRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBtc2cgPSAiLTEgKDwgMCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KC0xKQorCisgICAgZGVmIHRlc3RfbGFyZ2VfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIiVkICg+PSAyKiozMikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIDIqKjMyKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMioqMzIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgorICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRMZW5ndGgoMykKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDUpCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbl92NihDb21tb25UZXN0TWl4aW4pOgorCisgICAgZGVmIHRlc3RfbGVhZGluZ196ZXJvcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMDAwMDo6MDAwMCIsICI6OiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjAwMDo6YzBhODowMDAxIiwgIjo6YzBhODoxIikKKworICAgIGRlZiB0ZXN0X2ludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgwLCAiOjoiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDMyMzIyMzU1MjEsICI6OmMwYTg6MSIpCisKKyAgICBkZWYgdGVzdF9wYWNrZWQoc2VsZik6CisgICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCIwMDAwMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6IikKKyAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICJjMGE4OjE6OiIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9pbnRzX3JlamVjdGVkKHNlbGYpOgorICAgICAgICBtc2cgPSAiLTEgKDwgMCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KC0xKQorCisgICAgZGVmIHRlc3RfbGFyZ2VfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIiVkICg+PSAyKioxMjgpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAyKioxMjgpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgyKioxMjgpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgorICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDE2KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDE1KQorICAgICAgICBhc3NlcnRCYWRMZW5ndGgoMTcpCisKKworY2xhc3MgQWRkcmVzc1Rlc3RDYXNlX3Y0KEJhc2VUZXN0Q2FzZSwgQ29tbW9uVGVzdE1peGluX3Y0KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzCisKKyAgICBkZWYgdGVzdF9uZXR3b3JrX3Bhc3NlZF9hc19hZGRyZXNzKHNlbGYpOgorICAgICAgICBhZGRyID0gIjEyNy4wLjAuMS8yNCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiLCBhZGRyKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkV4cGVjdGVkIDQgb2N0ZXRzIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEyNy4wLjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyLjQyLiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40Mi40Mi4uLiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIuNDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiLi4uNDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2LjAxNi4wMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2LjAxNiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIwMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjB4MGEuMHgwYS4weDBhIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjB4MGEuMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiYm9ndXMiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiYm9ndXMuY29tIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwMDAiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTAwMDAwMDAwMDAwMDAwMCIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOTIuMTY4LjAuMS5jb20iKQorCisgICAgZGVmIHRlc3RfZW1wdHlfb2N0ZXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkVtcHR5IG9jdGV0IG5vdCBwZXJtaXR0ZWQgaW4gJXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjQyLi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIuLi4iKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIGluICVyIiAlIChvY3RldCwgYWRkcikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIweDBhLjB4MGEuMHgwYS4weDBhIiwgIjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMHhhLjB4MGEuMHgwYS4weDBhIiwgIjB4YSIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi40Mi40Mi4tMCIsICItMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi40Mi40Mi4rMCIsICIrMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi40Mi40Mi4tNDIiLCAiLTQyIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIisxLisyLiszLjQiLCAiKzEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMS4yLjMuNGUwIiwgIjRlMCIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxLjIuMy40OjoiLCAiNDo6IikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEuYS4yLjMiLCAiYSIpCisKKyAgICBkZWYgdGVzdF9vY3RhbF9kZWNpbWFsX2FtYmlndWl0eShzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJBbWJpZ3VvdXMgKG9jdGFsL2RlY2ltYWwpIHZhbHVlIGluICVyIG5vdCBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAob2N0ZXQsIGFkZHIpKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjAxNi4wMTYuMDE2LjAxNiIsICIwMTYiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMDAxLjAwMC4wMDguMDE2IiwgIjAwOCIpCisKKyAgICBkZWYgdGVzdF9vY3RldF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAzIGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKG9jdGV0LCBhZGRyKSkpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIwMDAwLjAwMC4wMDAuMDAwIiwgIjAwMDAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMTIzNDUuNjc4OTkuLTU0MzIxLi05ODc2NSIsICIxMjM0NSIpCisKKyAgICBkZWYgdGVzdF9vY3RldF9saW1pdChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJPY3RldCAlZCAoPiAyNTUpIG5vdCBwZXJtaXR0ZWQgaW4gJXIiICUgKG9jdGV0LCBhZGRyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjI1Ny4wLjAuMCIsIDI1NykKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjE5Mi4xNjguMC45OTkiLCA5OTkpCisKKworY2xhc3MgQWRkcmVzc1Rlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgQ29tbW9uVGVzdE1peGluX3Y2KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzCisKKyAgICBkZWYgdGVzdF9uZXR3b3JrX3Bhc3NlZF9hc19hZGRyZXNzKHNlbGYpOgorICAgICAgICBhZGRyID0gIjo6MS8yNCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiLCBhZGRyKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfbm90X2Vub3VnaF9wYXJ0cyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkF0IGxlYXN0IDMgcGFydHMgZXhwZWN0ZWQgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiRkVEQzo5ODc4IikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgOCBjb2xvbnMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI5Ojg6Nzo2OjU6NDozOjoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTA6OTo4Ojc6Njo1OjQ6MzoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjo4Ojc6Njo1OjQ6MzoyOjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiODo3OjY6NTo0OjM6MjoxOjoiKQorICAgICAgICAjIEEgdHJhaWxpbmcgSVB2NCBhZGRyZXNzIGlzIHR3byBwYXJ0cworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTA6OTo4Ojc6Njo1OjQ6Mzo0Mi40Mi40Mi40MiIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90b29fbWFueV9wYXJ0cyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkV4YWN0bHkgOCBwYXJ0cyBleHBlY3RlZCB3aXRob3V0ICc6OicgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6MDowOjA6MDowOjA6MDoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjk6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjc6Njo1OjQ6MzoyOjEiKQorICAgICAgICAjIEEgdHJhaWxpbmcgSVB2NCBhZGRyZXNzIGlzIHR3byBwYXJ0cworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOTo4Ojc6Njo1OjQ6Mzo0Mi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdG9vX21hbnlfcGFydHNfd2l0aF9kb3VibGVfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJFeHBlY3RlZCBhdCBtb3N0IDcgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjI6Mzo0Ojo1OjY6Nzo4IikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3JlcGVhdGVkX2RvdWJsZV9jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3Qgb25lICc6OicgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjoxOjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjE6OjI6OjM6OjQ6NSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIyMDAxOjpkYjo6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6M2ZmZTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6M2ZmZTo6MTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjoxOjoxOiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6M2ZmZTo6MTo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjo6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoJzIwMDE6ZGI4Ojo6MScpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl9sZWFkaW5nX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiTGVhZGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6MjAwMTpkYjg6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjE6MjozOjQ6NTo2OjciKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjE6MjozOjQ6NTo2OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6Njo1OjQ6MzoyOjE6OiIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90cmFpbGluZ19jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKG1zZywgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjIwMDE6ZGI4OjoxOiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjI6Mzo0OjU6Njo3OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6OjEuMi4zLjQ6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6Nzo2OjU6NDozOjI6IikKKworICAgIGRlZiB0ZXN0X2JhZF92NF9wYXJ0X2luKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoYWRkciwgdjRfZXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiJXMgaW4gJXIiLCB2NF9lcnJvciwgYWRkcik6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEubmV0IiwgIkV4cGVjdGVkIDQgb2N0ZXRzIGluICcxLm5ldCciKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiM2ZmZTo6MTI3LjAuMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMTI3LjAuMSciKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzUGFydCgiOjoxLjIuMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS4yLjMnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjo6MS4yLjMuNC41IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cGVjdGVkIDQgb2N0ZXRzIGluICcxLjIuMy40LjUnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEuMS4xLm5ldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAnbmV0JyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiAnMS4xLjEubmV0JyIpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJhY3RlcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRQYXJ0KGFkZHIsIHBhcnQpOgorICAgICAgICAgICAgbXNnID0gIk9ubHkgaGV4IGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIgaW4gJXIiICUgKHBhcnQsIGFkZHIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjpnb29nIiwgImdvb2ciKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjotMCIsICItMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6OiswIiwgIiswIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6LTEiLCAiLTEiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIxLjIuMy40OjoiLCAiMS4yLjMuNCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoJzEyMzQ6YXh5OjpiJywgImF4eSIpCisKKyAgICBkZWYgdGVzdF9wYXJ0X2xlbmd0aChzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFBhcnQoYWRkciwgcGFydCk6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCA0IGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIHBhcnQsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjo6MDAwMDAiLCAiMDAwMDAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjoxMDAwMCIsICIxMDAwMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjAyMDAxOmRiODo6IiwgIjAyMDAxIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgnMjAwMTo4ODg4ODg6OjEnLCAiODg4ODg4IikKKworCitjbGFzcyBOZXRtYXNrVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbl92NCk6CisgICAgIiIiSW5wdXQgdmFsaWRhdGlvbiBvbiBpbnRlcmZhY2VzIGFuZCBuZXR3b3JrcyBpcyB2ZXJ5IHNpbWlsYXIiIiIKKworICAgIGRlZiB0ZXN0X3NwbGl0X25ldG1hc2soc2VsZik6CisgICAgICAgIGFkZHIgPSAiMS4yLjMuNC8zMi8yNCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRBZGRyZXNzKGFkZHIsIGRldGFpbHMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihkZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIvIiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLzgiLCAiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJib2d1cyIsICJFeHBlY3RlZCA0IG9jdGV0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoImdvb2dsZS5jb20iLCAiRXhwZWN0ZWQgNCBvY3RldHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxMC84IiwgIkV4cGVjdGVkIDQgb2N0ZXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiOjoxLjIuMy40IiwgIk9ubHkgZGVjaW1hbCBkaWdpdHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxLjIuMy4yNTYiLCByZS5lc2NhcGUoIjI1NiAoPiAyNTUpIikpCisKKyAgICBkZWYgdGVzdF9uZXRtYXNrX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE5ldG1hc2soYWRkciwgbmV0bWFzayk6CisgICAgICAgICAgICBtc2cgPSAiJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzayIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnROZXRtYXNrRXJyb3IobXNnICUgbmV0bWFzayk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KCIlcy8lcyIgJSAoYWRkciwgbmV0bWFzaykpCisKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjIuMy40IiwgIjMzIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIyNTQuMjU0LjI1NS4yNTYiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjEuMS4xIiwgIjI1NC54eXouMi4zIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICIyNDAuMjU1LjAuMCIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAicHVkZGluZyIpCisKK2NsYXNzIEludGVyZmFjZVRlc3RDYXNlX3Y0KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92NCk6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlCisKK2NsYXNzIE5ldHdvcmtUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsKKworCitjbGFzcyBOZXRtYXNrVGVzdE1peGluX3Y2KENvbW1vblRlc3RNaXhpbl92Nik6CisgICAgIiIiSW5wdXQgdmFsaWRhdGlvbiBvbiBpbnRlcmZhY2VzIGFuZCBuZXR3b3JrcyBpcyB2ZXJ5IHNpbWlsYXIiIiIKKworICAgIGRlZiB0ZXN0X3NwbGl0X25ldG1hc2soc2VsZik6CisgICAgICAgIGFkZHIgPSAiY2FmZTpjYWZlOjovMTI4LzE5MCIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRBZGRyZXNzKGFkZHIsIGRldGFpbHMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihkZXRhaWxzKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIvIiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLzgiLCAiQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJnb29nbGUuY29tIiwgIkF0IGxlYXN0IDMgcGFydHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxLjIuMy40IiwgIkF0IGxlYXN0IDMgcGFydHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxMC84IiwgIkF0IGxlYXN0IDMgcGFydHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCIxMjM0OmF4eTo6YiIsICJPbmx5IGhleCBkaWdpdHMiKQorCisgICAgZGVmIHRlc3RfbmV0bWFza19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWROZXRtYXNrKGFkZHIsIG5ldG1hc2spOgorICAgICAgICAgICAgbXNnID0gIiVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2siCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TmV0bWFza0Vycm9yKG1zZyAlIG5ldG1hc2spOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiJXMvJXMiICUgKGFkZHIsIG5ldG1hc2spKQorCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiOjoxIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIjE6OiIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIxMjkiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAicHVkZGluZyIpCisKK2NsYXNzIEludGVyZmFjZVRlc3RDYXNlX3Y2KEJhc2VUZXN0Q2FzZSwgTmV0bWFza1Rlc3RNaXhpbl92Nik6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlCisKK2NsYXNzIE5ldHdvcmtUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsKKworCitjbGFzcyBGYWN0b3J5RnVuY3Rpb25FcnJvcnMoQmFzZVRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnRGYWN0b3J5RXJyb3Ioc2VsZiwgZmFjdG9yeSwga2luZCk6CisgICAgICAgICIiIkVuc3VyZSBhIGNsZWFuIFZhbHVlRXJyb3Igd2l0aCB0aGUgZXhwZWN0ZWQgbWVzc2FnZSIiIgorICAgICAgICBhZGRyID0gImNhbWVsb3QiCisgICAgICAgIG1zZyA9ICclciBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gSVB2NCBvciBJUHY2ICVzJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihWYWx1ZUVycm9yLCBtc2csIGFkZHIsIGtpbmQpOgorICAgICAgICAgICAgZmFjdG9yeShhZGRyKQorCisgICAgZGVmIHRlc3RfaXBfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX2FkZHJlc3MsICJhZGRyZXNzIikKKworICAgIGRlZiB0ZXN0X2lwX2ludGVyZmFjZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSwgImludGVyZmFjZSIpCisKKyAgICBkZWYgdGVzdF9pcF9uZXR3b3JrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhY3RvcnlFcnJvcihpcGFkZHJlc3MuaXBfbmV0d29yaywgIm5ldHdvcmsiKQorCisKK2NsYXNzIENvbXBhcmlzb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICB2NGFkZHIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMSkKKyAgICB2NG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygxKQorICAgIHY0aW50ZiA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKDEpCisgICAgdjZhZGRyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKDEpCisgICAgdjZuZXQgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoMSkKKyAgICB2NmludGYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgxKQorCisgICAgdjRfYWRkcmVzc2VzID0gW3Y0YWRkciwgdjRpbnRmXQorICAgIHY0X29iamVjdHMgPSB2NF9hZGRyZXNzZXMgKyBbdjRuZXRdCisgICAgdjZfYWRkcmVzc2VzID0gW3Y2YWRkciwgdjZpbnRmXQorICAgIHY2X29iamVjdHMgPSB2Nl9hZGRyZXNzZXMgKyBbdjZuZXRdCisgICAgb2JqZWN0cyA9IHY0X29iamVjdHMgKyB2Nl9vYmplY3RzCisKKyAgICBkZWYgdGVzdF9mb3JlaWduX3R5cGVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgICMgX19lcV9fIHNob3VsZCBuZXZlciByYWlzZSBUeXBlRXJyb3IgZGlyZWN0bHkKKyAgICAgICAgb3RoZXIgPSBvYmplY3QoKQorICAgICAgICBmb3Igb2JqIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob2JqLCBvdGhlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob2JqID09IG90aGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19lcV9fKG90aGVyKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5fX25lX18ob3RoZXIpLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgICMgRW5zdXJlIG5vbmUgb2YgdGhlIGludGVybmFsIG9iamVjdHMgYWNjaWRlbnRhbGx5CisgICAgICAgICMgZXhwb3NlIHRoZSByaWdodCBzZXQgb2YgYXR0cmlidXRlcyB0byBiZWNvbWUgImVxdWFsIgorICAgICAgICBmb3IgbGhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIGZvciByaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgICAgIGlmIGxocyBpcyByaHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsaHMsIHJocykKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjRfYWRkcmVzc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvYmosIHNlbGYudjRuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52Nl9hZGRyZXNzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9iaiwgc2VsZi52Nm5ldCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY0X29iamVjdHMgKyBbc2VsZi52Nm5ldF06CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iaiwgc2VsZi52Nm5ldCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY2X29iamVjdHMgKyBbc2VsZi52NG5ldF06CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iaiwgc2VsZi52NG5ldCkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfb3JkZXJpbmcoc2VsZik6CisgICAgICAgIGZvciBsaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgZm9yIHJocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsaHMsIHR5cGUocmhzKSkgb3IgaXNpbnN0YW5jZShyaHMsIHR5cGUobGhzKSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA8IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzID4gcmhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPD0gcmhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPj0gcmhzKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZV9rZXkoc2VsZik6CisgICAgICAgICMgd2l0aCBnZXRfbWl4ZWRfdHlwZV9rZXksIHlvdSBjYW4gc29ydCBhZGRyZXNzZXMgYW5kIG5ldHdvcmsuCisgICAgICAgIHY0X29yZGVyZWQgPSBbc2VsZi52NGFkZHIsIHNlbGYudjRuZXQsIHNlbGYudjRpbnRmXQorICAgICAgICB2Nl9vcmRlcmVkID0gW3NlbGYudjZhZGRyLCBzZWxmLnY2bmV0LCBzZWxmLnY2aW50Zl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2NF9vcmRlcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLnY0X29iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1pcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Nl9vcmRlcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChzZWxmLnY2X29iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1pcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2NF9vcmRlcmVkICsgdjZfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi5vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm90SW1wbGVtZW50ZWQsIGlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkob2JqZWN0KSkKKworICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV92ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgIyBUaGVzZSBzaG91bGQgYWx3YXlzIHJhaXNlIFR5cGVFcnJvcgorICAgICAgICB2NGFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIHY0bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKQorICAgICAgICB2NmFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykKKyAgICAgICAgdjZuZXQgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0YWRkci5fX2x0X18sIHY2YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NGFkZHIuX19ndF9fLCB2NmFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRuZXQuX19sdF9fLCB2Nm5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NG5ldC5fX2d0X18sIHY2bmV0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZhZGRyLl9fbHRfXywgdjRhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2YWRkci5fX2d0X18sIHY0YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2Nm5ldC5fX2x0X18sIHY0bmV0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2bmV0Ll9fZ3RfXywgdjRuZXQpCisKKworCitjbGFzcyBJcGFkZHJVbml0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuaXB2NF9hZGRyZXNzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy40JykKKyAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykKKyAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMi4zLjAvMjQnKQorICAgICAgICAjc2VsZi5pcHY0X2hvc3RtYXNrID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEwLjAuMC4xLzAuMjU1LjI1NS4yNTUnKQorICAgICAgICBzZWxmLmlwdjZfYWRkcmVzcyA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKAorICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDowOjA6MScpCisgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEvNjQnKQorICAgICAgICBzZWxmLmlwdjZfbmV0d29yayA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcpCisKKyAgICBkZWYgdGVzdFJlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMzInKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEnKSkpCisKKyAgICAjIGlzc3VlNTcKKyAgICBkZWYgdGVzdEFkZHJlc3NJbnRNYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpICsgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjIuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpIC0gMjU2LAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjAuMScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykgKyAoMioqMTYgLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmJykgLSAoMioqMTYgLSAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpKQorCisgICAgZGVmIHRlc3RJbnZhbGlkSW50VG9CeXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY0X2ludF90b19wYWNrZWQsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MudjRfaW50X3RvX3BhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqKiBpcGFkZHJlc3MuSVBWNExFTkdUSCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY2X2ludF90b19wYWNrZWQsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MudjZfaW50X3RvX3BhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqKiBpcGFkZHJlc3MuSVBWNkxFTkdUSCkKKworICAgIGRlZiB0ZXN0SW50ZXJuYWxzKHNlbGYpOgorICAgICAgICBmaXJzdCwgbGFzdCA9IGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFsKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTAnKSwKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTInKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlyc3QsIGxhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTI4LCBpcGFkZHJlc3MuX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoMCwgMTI4KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NE5ldHdvcmsoJzEuMi4zLjAvMjQnKSIsIHJlcHIoc2VsZi5pcHY0X25ldHdvcmspKQorCisgICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc1ZlcnNpb24oc2VsZik6CisgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VBZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qdmVyc2lvbiIpOgorICAgICAgICAgICAgYnJva2VuLnZlcnNpb24KKworICAgIGRlZiB0ZXN0TWlzc2luZ05ldHdvcmtWZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKnZlcnNpb24iKToKKyAgICAgICAgICAgIGJyb2tlbi52ZXJzaW9uCisKKyAgICBkZWYgdGVzdE1pc3NpbmdBZGRyZXNzQ2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qYWRkcmVzcyIpOgorICAgICAgICAgICAgYnJva2VuLl9hZGRyZXNzX2NsYXNzCisKKyAgICBkZWYgdGVzdEdldE5ldHdvcmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2NF9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksIDE2OTA5MDU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLCAnMS4yLjMuMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0MjU0MDYxNjgyOTE4MjQ2OTQzMzQwMzY0NzI5NDAyMjA5MDc1MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLmhvc3RtYXNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKworICAgIGRlZiB0ZXN0SXBGcm9tSW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UuX2lwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKDE2OTA5MDYwKS5faXApCisKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjIuMy40JykKKyAgICAgICAgaXB2NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjQsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKGludChpcHY0Lm5ldHdvcmtfYWRkcmVzcykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjYsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKGludChpcHY2Lm5ldHdvcmtfYWRkcmVzcykpKQorCisgICAgICAgIHY2X2ludCA9IDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5faXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UodjZfaW50KS5faXApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yayhzZWxmLmlwdjRfYWRkcmVzcy5faXApLnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yayhzZWxmLmlwdjZfYWRkcmVzcy5faXApLnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgNikKKworICAgIGRlZiB0ZXN0SXBGcm9tUGFja2VkKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLl9pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKGInXHgwMVx4MDJceDAzXHgwNCcpLl9pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzKCcyNTUuMjU0LjI1My4yNTInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKGInXHhmZlx4ZmVceGZkXHhmYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgYidceDIwXHgwMVx4MDZceDU4XHgwMlx4MmFceGNhXHhmZScKKyAgICAgICAgICAgICAgICAgICAgYidceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMScpLmlwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MoJ2ZmZmY6MjozOjQ6ZmZmZjo6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4ZmZceGZmXHgwMFx4MDJceDAwXHgwM1x4MDBceDA0JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGZmXHhmZicgKyBiJ1x4MDAnICogNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcygnOjonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKGInXHgwMCcgKiAxNikpCisKKyAgICBkZWYgdGVzdEdldElwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfaW50ZXJmYWNlLmlwKSwgMTY5MDkwNjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9pbnRlcmZhY2UuaXApLCAnMS4yLjMuNCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X2ludGVyZmFjZS5pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEnKQorCisgICAgZGVmIHRlc3RHZXROZXRtYXNrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5uZXRtYXNrKSwgNDI5NDk2NzA0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsubmV0bWFzayksICcyNTUuMjU1LjI1NS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY2X25ldHdvcmsubmV0bWFzayksCisgICAgICAgICAgICAgICAgICAgICAgICAgMzQwMjgyMzY2OTIwOTM4NDYzNDQ0OTI3ODYzMzU4MDU4NjU5ODQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnByZWZpeGxlbiwgNjQpCisKKyAgICBkZWYgdGVzdFplcm9OZXRtYXNrKHNlbGYpOgorICAgICAgICBpcHY0X3plcm9fbmV0bWFzayA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChpcHY0X3plcm9fbmV0bWFzay5uZXR3b3JrLm5ldG1hc2spLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2NF96ZXJvX25ldG1hc2submV0d29yay5faXNfdmFsaWRfbmV0bWFzaygKKyAgICAgICAgICAgICAgICBzdHIoMCkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2NF96ZXJvX25ldG1hc2suX2lzX3ZhbGlkX25ldG1hc2soJzAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCcwLjAuMC4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXB2NF96ZXJvX25ldG1hc2suX2lzX3ZhbGlkX25ldG1hc2soJ2ludmFsaWQnKSkKKworICAgICAgICBpcHY2X3plcm9fbmV0bWFzayA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEvMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGlwdjZfemVyb19uZXRtYXNrLm5ldHdvcmsubmV0bWFzayksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY2X3plcm9fbmV0bWFzay5uZXR3b3JrLl9pc192YWxpZF9uZXRtYXNrKAorICAgICAgICAgICAgICAgIHN0cigwKSkpCisKKyAgICBkZWYgdGVzdElQdjROZXRBbmRIb3N0bWFza3Moc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2NF9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc192YWxpZF9uZXRtYXNrKCdpbnZhbGlkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzEyOC4xMjguMTI4LjEyOCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMTI4LjEyOC4xMjguMTI3JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcxMjguMTI4LjEyOC4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMjU1LjEyOC4xMjguMTI4JykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX2hvc3RtYXNrKCdpbnZhbGlkJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX2hvc3RtYXNrKCcxMjguMjU1LjI1NS4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX2hvc3RtYXNrKCcyNTUuMjU1LjI1NS4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX2hvc3RtYXNrKCcxLjIuMy40JykpCisKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxMjcuMC4wLjAvMC4wLjAuMjU1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyNCwgbmV0LnByZWZpeGxlbikKKworICAgIGRlZiB0ZXN0R2V0QnJvYWRjYXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksIDE2OTA5MzExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksICcxLjIuMy4yNTUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA0MjU0MDYxNjgyOTE4MjQ2OTQ1MTg1MDM5MTM2NzczMTY0MjM2NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKworICAgIGRlZiB0ZXN0R2V0UHJlZml4bGVuKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5wcmVmaXhsZW4sIDI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5wcmVmaXhsZW4sIDY0KQorCisgICAgZGVmIHRlc3RHZXRTdXBlcm5ldChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgpLnByZWZpeGxlbiwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KCkubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjIuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMC4wLjAuMC8wJykubmV0d29yay5zdXBlcm5ldCgpLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcwLjAuMC4wLzAnKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkucHJlZml4bGVuLCA2MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoKS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjowLzAnKS5uZXR3b3JrLnN1cGVybmV0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCc6OjAvMCcpKQorCisgICAgZGVmIHRlc3RHZXRTdXBlcm5ldDMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoMykucHJlZml4bGVuLCAyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoMykubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjAuMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgzKS5wcmVmaXhsZW4sIDYxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgzKS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmODo6JykKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY9MiwgbmV3X3ByZWZpeD0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeD0yNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldChuZXdfcHJlZml4PTIyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY9MiwgbmV3X3ByZWZpeD0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeD02NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldChuZXdfcHJlZml4PTYyKSkKKworICAgIGRlZiB0ZXN0SG9zdHMoc2VsZik6CisgICAgICAgIGhvc3RzID0gbGlzdChzZWxmLmlwdjRfbmV0d29yay5ob3N0cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDI1NCwgbGVuKGhvc3RzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjEnKSwgaG9zdHNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4yNTQnKSwgaG9zdHNbLTFdKQorCisgICAgICAgICMgc3BlY2lhbCBjYXNlIHdoZXJlIG9ubHkgMSBiaXQgaXMgbGVmdCBmb3IgYWRkcmVzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzIuMC4wLjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcyLjAuMC4xJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIuMC4wLjAvMzEnKS5ob3N0cygpKSkKKworICAgIGRlZiB0ZXN0RmFuY3lTdWJuZXR0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhuZXdfcHJlZml4PTI3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD0yMykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9MjcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhuZXdfcHJlZml4PTY4KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD02MykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMocHJlZml4bGVuX2RpZmY9NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9NjgpKQorCisgICAgZGVmIHRlc3RHZXRTdWJuZXRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVswXS5wcmVmaXhsZW4sIDI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihsaXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzBdLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihsaXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzFdLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjEyOCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ucHJlZml4bGVuLCA2NSkKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0Rm9yU2luZ2xlMzIoc2VsZik6CisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy40LzMyJykKKyAgICAgICAgc3VibmV0czEgPSBbc3RyKHgpIGZvciB4IGluIGlwLnN1Ym5ldHMoKV0KKyAgICAgICAgc3VibmV0czIgPSBbc3RyKHgpIGZvciB4IGluIGlwLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIFsnMS4yLjMuNC8zMiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBzdWJuZXRzMikKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0Rm9yU2luZ2xlMTI4KHNlbGYpOgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnOjoxLzEyOCcpCisgICAgICAgIHN1Ym5ldHMxID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKCldCisgICAgICAgIHN1Ym5ldHMyID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBbJzo6MS8xMjgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgc3VibmV0czIpCisKKyAgICBkZWYgdGVzdFN1Ym5ldDIoc2VsZik6CisgICAgICAgIGlwcyA9IFtzdHIoeCkgZm9yIHggaW4gc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGlwcywKKyAgICAgICAgICAgIFsnMS4yLjMuMC8yNicsICcxLjIuMy42NC8yNicsICcxLjIuMy4xMjgvMjYnLCAnMS4yLjMuMTkyLzI2J10pCisKKyAgICAgICAgaXBzdjYgPSBbc3RyKHgpIGZvciB4IGluIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcHN2NiwKKyAgICAgICAgICAgIFsnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NicsCisgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjQwMDA6Oi82NicsCisgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjgwMDA6Oi82NicsCisgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOmMwMDA6Oi82NiddKQorCisgICAgZGVmIHRlc3RTdWJuZXRGYWlsc0ZvckxhcmdlQ2lkckRpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5zdWJuZXRzKDkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKDkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cyg2NSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoNjUpKQorCisgICAgZGVmIHRlc3RTdXBlcm5ldEZhaWxzRm9yTGFyZ2VDaWRyRGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnN1cGVybmV0LCAyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1cGVybmV0LCA2NSkKKworICAgIGRlZiB0ZXN0U3VibmV0RmFpbHNGb3JOZWdhdGl2ZUNpZHJEaWZmKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cygtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cygtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoLTEpKQorCisgICAgZGVmIHRlc3RHZXROdW1fQWRkcmVzc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLm51bV9hZGRyZXNzZXMsIDI1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ubnVtX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAxMjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoKS5udW1fYWRkcmVzc2VzLCA1MTIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5udW1fYWRkcmVzc2VzLCAxODQ0Njc0NDA3MzcwOTU1MTYxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ubnVtX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICA5MjIzMzcyMDM2ODU0Nzc1ODA4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkubnVtX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAzNjg5MzQ4ODE0NzQxOTEwMzIzMikKKworICAgIGRlZiB0ZXN0Q29udGFpbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuMTI4LzI1JykgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuNC4xLzI0JykgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yaykKKyAgICAgICAgIyBXZSBjYW4gdGVzdCBhZGRyZXNzZXMgYW5kIHN0cmluZyBhcyB3ZWxsLgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMzcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYWRkcjEgaW4gc2VsZi5pcHY0X25ldHdvcmspCisgICAgICAgICMgaXNzdWUgNjEsIGJhZCBuZXR3b3JrIGNvbXBhcmlzb24gb24gbGlrZS1pcCdkIG5ldHdvcmsgb2JqZWN0cworICAgICAgICAjIHdpdGggaWRlbnRpY2FsIGJyb2FkY2FzdCBhZGRyZXNzZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzE2JykuX19jb250YWluc19fKAorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4wLjAuMC8xNScpKSkKKworICAgIGRlZiB0ZXN0TnRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29ya1s1XSksICcxLjIuMy41JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuX19nZXRpdGVtX18sIDI1NikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKworICAgIGRlZiB0ZXN0R2V0aXRlbShzZWxmKToKKyAgICAgICAgIyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaXBhZGRyLXB5L2lzc3Vlcy9kZXRhaWw/aWQ9MTUKKyAgICAgICAgYWRkciA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTcyLjMxLjI1NS4xMjgvMjU1LjI1NS4yNTUuMjQwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyOCwgYWRkci5wcmVmaXhsZW4pCisgICAgICAgIGFkZHJfbGlzdCA9IGxpc3QoYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xMjgnLCBzdHIoYWRkcl9saXN0WzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xMjgnLCBzdHIoYWRkclswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTQzJywgc3RyKGFkZHJfbGlzdFstMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjE0MycsIHN0cihhZGRyWy0xXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9saXN0Wy0xXSwgYWRkclstMV0pCisKKyAgICBkZWYgdGVzdEVxdWFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzYzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09IFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0gMikKKworICAgIGRlZiB0ZXN0Tm90RXF1YWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy41JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0gMikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0gMikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9IDIpCisKKyAgICBkZWYgdGVzdFNsYXNoMzJDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgICcxLjIuMy40LzI1NS4yNTUuMjU1LjI1NScpKSwgJzEuMi4zLjQvMzInKQorCisgICAgZGVmIHRlc3RTbGFzaDEyOENvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOjoxLzEyOCcpCisKKyAgICBkZWYgdGVzdFNsYXNoMENvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8wLjAuMC4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnMS4yLjMuNC8wJykKKworICAgIGRlZiB0ZXN0Q29sbGFwc2luZyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IG9ubHkgSVAgYWRkcmVzc2VzIGluY2x1ZGluZyBzb21lIGR1cGxpY2F0ZXMKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4yJykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4zJykKKyAgICAgICAgaXA1ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS40JykKKyAgICAgICAgaXA2ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgIyBjaGVjayB0aGF0IGFkZHJlc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgIFtpcDEsIGlwMiwgaXAzLCBpcDQsIGlwNSwgaXA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMCcpLAorICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjQvMzInKV0pCisKKyAgICAgICAgIyB0ZXN0IGEgbWl4IG9mIElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MgaW5jbHVkaW5nIHNvbWUgZHVwbGljYXRlcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjInKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjMnKQorICAgICAgICAjaXA1ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMS4xLjQvMzAnKQorICAgICAgICAjaXA2ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMS4xLjQvMzAnKQorICAgICAgICAjIGNoZWNrIHRoYXQgYWRkcmVzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzLCBpcDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzMwJyldKQorCisgICAgICAgICMgdGVzdCBvbmx5IElQIG5ldHdvcmtzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yNCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8yNCcpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjIuMC8yNCcpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjMuMC8yNCcpCisgICAgICAgIGlwNSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjQuMC8yNCcpCisgICAgICAgICMgc3RvcmVkIGluIG5vIHBhcnRpY3VsYXIgb3JkZXIgYi9jIHdlIHdhbnQgQ29sbGFwc2VBZGRyIHRvIGNhbGwKKyAgICAgICAgIyBbXS5zb3J0CisgICAgICAgIGlwNiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yMicpCisgICAgICAgICMgY2hlY2sgdGhhdCBhZGRyZXNlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoW2lwMSwgaXAyLCBpcDMsIGlwNCwgaXA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzIyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjQuMC8yNCcpXSkKKworICAgICAgICAjIHRlc3QgdGhhdCB0d28gYWRkcmVzc2VzIGFyZSBzdXBlcm5ldCdlZCBwcm9wZXJseQorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjMnKV0pCisKKyAgICAgICAgIyB0ZXN0IHNhbWUgSVAgbmV0d29ya3MKKyAgICAgICAgaXBfc2FtZTEgPSBpcF9zYW1lMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMS8zMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKAorICAgICAgICAgICAgICAgICAgICBbaXBfc2FtZTEsIGlwX3NhbWUyXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcF9zYW1lMV0pCisKKyAgICAgICAgIyB0ZXN0IHNhbWUgSVAgYWRkcmVzc2VzCisgICAgICAgIGlwX3NhbWUxID0gaXBfc2FtZTIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgICAgICAgICAgW2lwX3NhbWUxLCBpcF9zYW1lMl0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEvMzInKV0pCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEwMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyMCcpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6Lzk2JykKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXB2NiBhZGRyZXNzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksIFtpcDNdKQorCisgICAgICAgICMgdGhlIHRvZWphbSB0ZXN0CisgICAgICAgIGFkZHJfdHVwbGVzID0gWworICAgICAgICAgICAgICAgIChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpLAorICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykpLAorICAgICAgICAgICAgICAgIChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjQnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovMTIwJykpLAorICAgICAgICAgICAgICAgIChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMzInKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovMTI4JykpLAorICAgICAgICBdCisgICAgICAgIGZvciBpcDEsIGlwMiBpbiBhZGRyX3R1cGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpcDEsIGlwMl0pCisKKyAgICBkZWYgdGVzdFN1bW1hcml6aW5nKHNlbGYpOgorICAgICAgICAjaXAgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcworICAgICAgICAjaXBuZXQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaworICAgICAgICBzdW1tYXJpemUgPSBpcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMjU1JykKKworICAgICAgICAjIHN1bW1hcml6ZSB3b3JrcyBvbmx5IGZvciBJUHY0ICYgSVB2NgorICAgICAgICBjbGFzcyBJUHY3QWRkcmVzcyhpcGFkZHJlc3MuSVB2NkFkZHJlc3MpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNworICAgICAgICBpcF9pbnZhbGlkMSA9IElQdjdBZGRyZXNzKCc6OjEnKQorICAgICAgICBpcF9pbnZhbGlkMiA9IElQdjdBZGRyZXNzKCc6OjEnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBfaW52YWxpZDEsIGlwX2ludmFsaWQyKSkKKyAgICAgICAgIyB0ZXN0IHRoYXQgYSBzdW1tYXJ5IG92ZXIgaXA0ICYgaXA2IGZhaWxzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwMSwgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkpCisgICAgICAgICMgdGVzdCBhIC8yNCBpcyBzdW1tYXJpemVkIHByb3Blcmx5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMC8yNCcpKQorICAgICAgICAjIHRlc3QgYW4gIElQdjQgcmFuZ2UgdGhhdCBpc24ndCBvbiBhIG5ldHdvcmsgYnl0ZSBib3VuZGFyeQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAvMjknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjgnKV0pCisgICAgICAgICMgYWxsIQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMCkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKGlwYWRkcmVzcy5JUHY0QWRkcmVzcy5fQUxMX09ORVMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMC4wLjAuMC8wJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSkpCisKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE6OicpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorICAgICAgICAjIHRlc3QgYSBJUHY2IGlzIHN1bWFtcml6ZWQgcHJvcGVybHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOjovMTYnKSkKKyAgICAgICAgIyB0ZXN0IGFuIElQdjYgcmFuZ2UgdGhhdCBpc24ndCBvbiBhIG5ldHdvcmsgYnl0ZSBib3VuZGFyeQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjo6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuaXBfbmV0d29yaygnMTo6LzE2JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyOjovMTI4JyldKQorCisgICAgICAgICMgdGVzdCBleGNlcHRpb24gcmFpc2VkIHdoZW4gZmlyc3QgaXMgZ3JlYXRlciB0aGFuIGxhc3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjAuMCcpKSkKKyAgICAgICAgIyB0ZXN0IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaXJzdCBhbmQgbGFzdCBhcmVuJ3QgSVAgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjAuMCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJpemUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMC4wJykpKQorICAgICAgICAjIHRlc3QgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpcnN0IGFuZCBsYXN0IGFyZSBub3Qgc2FtZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4wLjAnKSkpCisKKyAgICBkZWYgdGVzdEFkZHJlc3NDb21wYXJpc29uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MicpKQorCisgICAgZGVmIHRlc3RJbnRlcmZhY2VDb21wYXJpc29uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjInKSkKKworICAgIGRlZiB0ZXN0TmV0d29ya0NvbXBhcmlzb24oc2VsZik6CisgICAgICAgICMgaXAxIGFuZCBpcDIgaGF2ZSB0aGUgc2FtZSBuZXR3b3JrIGFkZHJlc3MKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzI0JykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS4wLzMyJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMi4wLzI0JykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxIDwgaXAzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAzID4gaXAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAxKSwgMCkKKworICAgICAgICAjIGlmIGFkZHJlc3NlcyBhcmUgdGhlIHNhbWUsIHNvcnQgYnkgbmV0bWFzaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMiksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMi5jb21wYXJlX25ldHdvcmtzKGlwMSksIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDMpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDMuY29tcGFyZV9uZXR3b3JrcyhpcDEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxLl9nZXRfbmV0d29ya3Nfa2V5KCkgPCBpcDMuX2dldF9uZXR3b3Jrc19rZXkoKSkKKworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6MjAwMDo6Lzk2JykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjIwMDE6Oi85NicpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpmZmZmOjIwMDA6Oi85NicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDMpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMS5fZ2V0X25ldHdvcmtzX2tleSgpIDwgaXAzLl9nZXRfbmV0d29ya3Nfa2V5KCkpCisKKyAgICAgICAgIyBUZXN0IGNvbXBhcmluZyBkaWZmZXJlbnQgcHJvdG9jb2xzLgorICAgICAgICAjIFNob3VsZCBhbHdheXMgcmFpc2UgYSBUeXBlRXJyb3IuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuY29tcGFyZV9uZXR3b3JrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmspCisgICAgICAgIGlwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjovMCcpCisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMC4wLjAuMC8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY0Ll9fbHRfXywgaXB2NikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY0Ll9fZ3RfXywgaXB2NikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY2Ll9fbHRfXywgaXB2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcHY2Ll9fZ3RfXywgaXB2NCkKKworICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgMTkuCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjIuMTI4LzI1JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDEgPCBpcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxID4gaXAxKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4zLjAvMjQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAxIDwgaXAyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMiA8IGlwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDEgPiBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDIgPiBpcDEpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjMuMC8yNScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDIgPCBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAzIDwgaXAyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMiA+IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKworICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgMjguCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4wLzMxJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjAnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMi8zMScpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4yJykKKyAgICAgICAgc29ydGVkID0gW2lwMSwgaXAyLCBpcDMsIGlwNF0KKyAgICAgICAgdW5zb3J0ZWQgPSBbaXAyLCBpcDQsIGlwMSwgaXAzXQorICAgICAgICB1bnNvcnRlZC5zb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQsIHVuc29ydGVkKQorICAgICAgICB1bnNvcnRlZCA9IFtpcDQsIGlwMSwgaXAzLCBpcDJdCisgICAgICAgIHVuc29ydGVkLnNvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCwgdW5zb3J0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXAxLl9fbHRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEwLjEwLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpcDIuX19sdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMTAuMTAuMCcpKQorCisgICAgICAgICMgPD0sID49CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMicpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykpCisKKyAgICBkZWYgdGVzdFN0cmljdE5ldHdvcmtzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpcGFkZHJlc3MuaXBfbmV0d29yaywgJzE5Mi4xNjguMS4xLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLmlwX25ldHdvcmssICc6OjEvMTIwJykKKworICAgIGRlZiB0ZXN0T3ZlcmxhcHMoc2VsZik6CisgICAgICAgIG90aGVyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy4wLzMwJykKKyAgICAgICAgb3RoZXIyID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMi4wLzI0JykKKyAgICAgICAgb3RoZXIzID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMi42NC8yNicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfbmV0d29yay5vdmVybGFwcyhvdGhlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X25ldHdvcmsub3ZlcmxhcHMob3RoZXIyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG90aGVyMi5vdmVybGFwcyhvdGhlcjMpKQorCisgICAgZGVmIHRlc3RFbWJlZGRlZElwdjQoc2VsZik6CisgICAgICAgIGlwdjRfc3RyaW5nID0gJzE5Mi4xNjguMC4xJworICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoaXB2NF9zdHJpbmcpCisgICAgICAgIHY0Y29tcGF0X2lwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjolcycgJSBpcHY0X3N0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQodjRjb21wYXRfaXB2Ni5pcCksIGludChpcHY0LmlwKSkKKyAgICAgICAgdjRtYXBwZWRfaXB2NiA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OmZmZmY6JXMnICUgaXB2NF9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodjRtYXBwZWRfaXB2Ni5pcCwgaXB2NC5pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yLCBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6MS4xLjEuMToxLjEuMS4xJykKKworICAgICMgSXNzdWUgNjc6IElQdjYgd2l0aCBlbWJlZGRlZCBJUHY0IGFkZHJlc3Mgbm90IHJlY29nbml6ZWQuCisgICAgZGVmIHRlc3RJUHY2QWRkcmVzc1Rvb0xhcmdlKHNlbGYpOgorICAgICAgICAjIFJGQzQyOTEgMi41LjUuMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OkZGRkY6MTkyLjAuMi4xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OkZGRkY6YzAwMDoyMDEnKSkKKyAgICAgICAgIyBSRkM0MjkxIDIuMiAocGFydCAzKSB4OjpkLmQuZC5kCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ0ZGRkY6OjE5Mi4wLjIuMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnRkZGRjo6YzAwMDoyMDEnKSkKKworICAgIGRlZiB0ZXN0SVBWZXJzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9hZGRyZXNzLnZlcnNpb24sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2FkZHJlc3MudmVyc2lvbiwgNikKKworICAgIGRlZiB0ZXN0TWF4UHJlZml4TGVuZ3RoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2UubWF4X3ByZWZpeGxlbiwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5tYXhfcHJlZml4bGVuLCAxMjgpCisKKyAgICBkZWYgdGVzdFBhY2tlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfYWRkcmVzcy5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAxXHgwMlx4MDNceDA0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMjU1LjI1NC4yNTMuMjUyJykucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmVceGZkXHhmYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2FkZHJlc3MucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgyMFx4MDFceDA2XHg1OFx4MDJceDJhXHhjYVx4ZmUnCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJ2ZmZmY6MjozOjQ6ZmZmZjo6JykucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmZceDAwXHgwMlx4MDBceDAzXHgwMFx4MDRceGZmXHhmZicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGInXHgwMCcgKiA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjE6MDowOjA6MCcpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MDAnICogNiArIGInXHgwMFx4MDEnICsgYidceDAwJyAqIDgpCisKKyAgICBkZWYgdGVzdElwU3RyRnJvbVByZWZpeGxlbihzZWxmKToKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0Ll9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoKSwgJzI1NS4yNTUuMjU1LjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwdjQuX2lwX3N0cmluZ19mcm9tX3ByZWZpeCgyOCksICcyNTUuMjU1LjI1NS4yNDAnKQorCisgICAgZGVmIHRlc3RJcFR5cGUoc2VsZik6CisgICAgICAgIGlwdjRuZXQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4yLjMuNCcpCisgICAgICAgIGlwdjRhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMi4zLjQnKQorICAgICAgICBpcHY2bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MS4yLjMuNCcpCisgICAgICAgIGlwdjZhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MS4yLjMuNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrLCB0eXBlKGlwdjRuZXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcywgdHlwZShpcHY0YWRkcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrLCB0eXBlKGlwdjZuZXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2QWRkcmVzcywgdHlwZShpcHY2YWRkcikpCisKKyAgICBkZWYgdGVzdFJlc2VydmVkSXB2NChzZWxmKToKKyAgICAgICAgIyB0ZXN0IG5ldHdvcmtzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAnMjI0LjEuMS4xLzMxJykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjQwLjAuMC4wJykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyNDAuMC4wLjAnKS5pc19yZXNlcnZlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgJzE5Mi4xNjguMS4xLzE3JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4xNjkuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnMTAuMjU1LjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTEuMC4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTEuMC4wLjAnKS5pc19yZXNlcnZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnMTcyLjMxLjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTcyLjMyLjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTY5LjI1NC4xLjAvMjQnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNjkuMjU0LjEwMC4yMDAvMjQnKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE2OS4yNTUuMTAwLjIwMC8yNCcpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxMjcuMTAwLjIwMC4yNTQvMzInKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnMTI3LjQyLjAuMC8xNicpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTI4LjAuMC4wJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgIyB0ZXN0IGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcwLjAuMC4wJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIyNC4xLjEuMScpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI0MC4wLjAuMCcpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjQwLjAuMC4xJykuaXNfcmVzZXJ2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIzOS4yNTUuMjU1LjI1NScpLmlzX3Jlc2VydmVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjkuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnMTAuMjU1LjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTEuMC4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICcxNzIuMzEuMjU1LjI1NScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNzIuMzIuMC4wJykuaXNfcHJpdmF0ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE2OS4yNTQuMTAwLjIwMCcpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE2OS4yNTUuMTAwLjIwMCcpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTI3LjEwMC4yMDAuMjU0JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyNy40Mi4wLjAnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyOC4wLjAuMCcpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcwLjAuMC4wJykuaXNfdW5zcGVjaWZpZWQpCisKKyAgICBkZWYgdGVzdFJlc2VydmVkSXB2NihzZWxmKToKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZmZmOjonKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoMioqMTI4IC0gMSkuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZjAwOjonKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZGZmOjonKS5pc19tdWx0aWNhc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVjZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmVmZjpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZiZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmYwMDo6JykuaXNfc2l0ZV9sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmYzAwOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmYzAwOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmJmZjpmZmZmOjonKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmUwMDo6JykuaXNfcHJpdmF0ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZWEwOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmZWJmOmZmZmY6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmZTdmOmZmZmY6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCdmZWMwOjonKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMDowOjowOjAxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzo6MS8xMjcnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjInKS5pc19sb29wYmFjaykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcwOjowJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKS5pc191bnNwZWNpZmllZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6LzEyNycpLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgICAgICMgdGVzdCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmZmZjo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKDIqKjEyOCAtIDEpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmYwMDo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmRmZjo6JykuaXNfbXVsdGljYXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlY2Y6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlZmY6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmYmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmMDA6OicpLmlzX3NpdGVfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmMwMDo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmMwMDpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZiZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlMDA6OicpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmVhMDo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmViZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmU3ZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnZmVjMDo6JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcwOjA6OjA6MDEnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjInKS5pc19sb29wYmFjaykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcwOjowJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEnKS5pc191bnNwZWNpZmllZCkKKworICAgICAgICAjIHNvbWUgZ2VuZXJpYyBJRVRGIHJlc2VydmVkIGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMDA6OicpLmlzX3Jlc2VydmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc0MDAwOjoxLzEyOCcpLmlzX3Jlc2VydmVkKQorCisgICAgZGVmIHRlc3RJcHY0TWFwcGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OmZmZmY6MTkyLjE2OC4xLjEnKS5pcHY0X21hcHBlZCwKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OC4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpjMGE4OjEwMScpLmlwdjRfbWFwcGVkLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OmZmZmY6YzBhODoxMDEnKS5pcHY0X21hcHBlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTkyLjE2OC4xLjEnKSkKKworICAgIGRlZiB0ZXN0QWRkckV4Y2x1ZGUoc2VsZik6CisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjAvMjYnKQorICAgICAgICBhZGRyMyA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4yLjEuMC8yNCcpCisgICAgICAgIGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykKKyAgICAgICAgYWRkcjUgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChsaXN0KGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMikpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS42NC8yNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4xLjEyOC8yNScpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjQpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjEpKSwgW10pCisKKyAgICBkZWYgdGVzdEhhc2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxMC4xLjEuMC8yNCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEwLjEuMS4wLzI0JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykpKQorICAgICAgICAjIGk3MAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMi4zLjQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAgICAgaW50KGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykuX2lwKSkpKQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAuMS4xLjAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTo6JykKKyAgICAgICAgZHVtbXkgPSB7fQorICAgICAgICBkdW1teVtzZWxmLmlwdjRfYWRkcmVzc10gPSBOb25lCisgICAgICAgIGR1bW15W3NlbGYuaXB2Nl9hZGRyZXNzXSA9IE5vbmUKKyAgICAgICAgZHVtbXlbaXAxXSA9IE5vbmUKKyAgICAgICAgZHVtbXlbaXAyXSA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzIGluIGR1bW15KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyIGluIGR1bW15KQorCisgICAgZGVmIHRlc3RJUEJhc2VzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjRfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxLjIuMy4wLzI0JywgbmV0LmNvbXByZXNzZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgbmV0Ll9pcF9pbnRfZnJvbV9wcmVmaXgoMjQpLAorICAgICAgICAgICAgICAgIG5ldC5faXBfaW50X2Zyb21fcHJlZml4KE5vbmUpKQorICAgICAgICBuZXQgPSBzZWxmLmlwdjZfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXQuX3N0cmluZ19mcm9tX2lwX2ludCwgMioqMTI4ICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzZWxmLmlwdjZfYWRkcmVzcy5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuaXB2Nl9hZGRyZXNzLl9pcCksCisgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MuX3N0cmluZ19mcm9tX2lwX2ludChOb25lKSkKKworICAgIGRlZiB0ZXN0SVB2Nk5ldHdvcmtIZWxwZXJzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjZfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY0JywgbmV0LndpdGhfcHJlZml4bGVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6L2ZmZmY6ZmZmZjpmZmZmOmZmZmY6OicsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0LndpdGhfbmV0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi86OmZmZmY6ZmZmZjpmZmZmOmZmZmYnLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC53aXRoX2hvc3RtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY0Jywgc3RyKG5ldCkpCisKKyAgICBkZWYgdGVzdElQdjROZXR3b3JrSGVscGVycyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY0X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIG5ldC53aXRoX3ByZWZpeGxlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNTUuMjU1LjI1NS4wJywgbmV0LndpdGhfbmV0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8wLjAuMC4yNTUnLCBuZXQud2l0aF9ob3N0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIHN0cihuZXQpKQorCisgICAgZGVmIHRlc3RDb3B5Q29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI0JykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuaXBfbmV0d29yayhhZGRyMSkKKyAgICAgICAgYWRkcjMgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoYWRkcjMpCisgICAgICAgIGFkZHI1ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgYWRkcjYgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyMSwgYWRkcjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjMsIGFkZHI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHI1LCBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHI2LCBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcjYpKQorCisgICAgZGVmIHRlc3RDb21wcmVzc0lQdjZBZGRyZXNzKHNlbGYpOgorICAgICAgICB0ZXN0X2FkZHJlc3NlcyA9IHsKKyAgICAgICAgICAgICcxOjI6Mzo0OjU6Njo3OjgnOiAnMToyOjM6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjA6NDowOjA6MDo4JzogJzIwMDE6MDowOjQ6OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6MDo0OjU6Njo3OjgnOiAnMjAwMTo6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjM6NDo1OjY6Nzo4JzogJzIwMDE6MDozOjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDozOjQ6NTo2Ojc6OCc6ICcyMDAxOjA6Mzo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcwOjA6MzowOjA6MDowOmZmZmYnOiAnMDowOjM6OmZmZmYvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDo0OjA6MDowOmZmZmYnOiAnOjo0OjA6MDowOmZmZmYvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjU6MDowOmZmZmYnOiAnOjo1OjA6MDpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMTowOjA6NDowOjA6Nzo4JzogJzE6OjQ6MDowOjc6OC8xMjgnLAorICAgICAgICAgICAgJzA6MDowOjA6MDowOjA6MCc6ICc6Oi8xMjgnLAorICAgICAgICAgICAgJzA6MDowOjA6MDowOjA6MC8wJzogJzo6LzAnLAorICAgICAgICAgICAgJzA6MDowOjA6MDowOjA6MSc6ICc6OjEvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA2NTg6MDIyYTpjYWZlOjAwMDA6MDAwMDowMDAwOjAwMDAvNjYnOgorICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjovNjYnLAorICAgICAgICAgICAgJzo6MS4yLjMuNCc6ICc6OjEwMjozMDQvMTI4JywKKyAgICAgICAgICAgICcxOjI6Mzo0OjU6ZmZmZjoxLjIuMy40JzogJzE6MjozOjQ6NTpmZmZmOjEwMjozMDQvMTI4JywKKyAgICAgICAgICAgICc6Ojc6Njo1OjQ6MzoyOjEnOiAnMDo3OjY6NTo0OjM6MjoxLzEyOCcsCisgICAgICAgICAgICAnOjo3OjY6NTo0OjM6MjowJzogJzA6Nzo2OjU6NDozOjI6MC8xMjgnLAorICAgICAgICAgICAgJzc6Njo1OjQ6MzoyOjE6Oic6ICc3OjY6NTo0OjM6MjoxOjAvMTI4JywKKyAgICAgICAgICAgICcwOjY6NTo0OjM6MjoxOjonOiAnMDo2OjU6NDozOjI6MTowLzEyOCcsCisgICAgICAgICAgICB9CisgICAgICAgIGZvciB1bmNvbXByZXNzZWQsIGNvbXByZXNzZWQgaW4gbGlzdCh0ZXN0X2FkZHJlc3Nlcy5pdGVtcygpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZCwgc3RyKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKAorICAgICAgICAgICAgICAgIHVuY29tcHJlc3NlZCkpKQorCisgICAgZGVmIHRlc3RFeHBsb2RlU2hvcnRIYW5kSXBTdHIoc2VsZik6CisgICAgICAgIGFkZHIxID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6OjEnKQorICAgICAgICBhZGRyMiA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTowOjVlZjU6NzlmZDowOjU5ZDphMGU1OmJhMScpCisgICAgICAgIGFkZHIzID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjovOTYnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4xNzguMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMS8xMjgnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIxLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDEvMTI4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpLmV4cGxvZGVkKQorICAgICAgICAjIGlzc3VlIDc3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6MDAwMDo1ZWY1Ojc5ZmQ6MDAwMDowNTlkOmEwZTU6MGJhMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjIuZXhwbG9kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMC85NicsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcjMuZXhwbG9kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE5Mi4xNjguMTc4LjEnLCBhZGRyNC5leHBsb2RlZCkKKworICAgIGRlZiB0ZXN0SW50UmVwcmVzZW50YXRpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTY5MDkwNjAsIGludChzZWxmLmlwdjRfYWRkcmVzcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuaXB2Nl9hZGRyZXNzKSkKKworICAgIGRlZiB0ZXN0Rm9yY2VWZXJzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9uZXR3b3JrKDEpLnZlcnNpb24sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKDEpLnZlcnNpb24sIDYpCisKKyAgICBkZWYgdGVzdFdpdGhTdGFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9pbnRlcmZhY2Uud2l0aF9wcmVmaXhsZW4sICIxLjIuMy40LzI0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfbmV0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiMS4yLjMuNC8yNTUuMjU1LjI1NS4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIjEuMi4zLjQvMC4wLjAuMjU1IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9wcmVmaXhsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS53aXRoX25ldG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS9mZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorICAgICAgICAjIHRoaXMgcHJvYmFibHkgZG9uJ3QgbWFrZSBtdWNoIHNlbnNlLCBidXQgaXQncyBpbmNsdWRlZCBmb3IKKyAgICAgICAgIyBjb21wYXRpYmlsaXR5IHdpdGggaXB2NAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdE5ldHdvcmtFbGVtZW50Q2FjaGluZyhzZWxmKToKKyAgICAgICAgIyBWNCAtIG1ha2Ugc3VyZSB3ZSdyZSBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCduZXR3b3JrX2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKworICAgICAgICAjIFY0IC0gcG9wdWxhdGUgYW5kIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4yNTUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzAuMC4wLjI1NScpKQorCisgICAgICAgICMgVjQgLSBjaGVjayB3ZSdyZSBjYWNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisKKyAgICAgICAgIyBWNiAtIG1ha2Ugc3VyZSB3ZSdyZSBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorCisgICAgICAgICMgVjYgLSBwb3B1bGF0ZSBhbmQgdGVzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6OicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcywKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTo2NTg6MjJhOmNhZmU6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9uZXR3b3JrLmhvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKworICAgICAgICAjIFY2IC0gY2hlY2sgd2UncmUgY2FjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X25ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoCisgICAgICAgICAgICAgICAgJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuX2NhY2hlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsuX2NhY2hlKQorCisgICAgZGVmIHRlc3RUZXJlZG8oc2VsZik6CisgICAgICAgICMgc3RvbGVuIGZyb20gd2lraXBlZGlhCisgICAgICAgIHNlcnZlciA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnNjUuNTQuMjI3LjEyMCcpCisgICAgICAgIGNsaWVudCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi40NScpCisgICAgICAgIHRlcmVkb19hZGRyID0gJzIwMDE6MDAwMDo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoc2VydmVyLCBjbGllbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKHRlcmVkb19hZGRyKS50ZXJlZG8pCisgICAgICAgIGJhZF9hZGRyID0gJzIwMDA6OjQxMzY6ZTM3ODo4MDAwOjYzYmY6M2ZmZjpmZGQyJworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKGJhZF9hZGRyKS50ZXJlZG8pCisgICAgICAgIGJhZF9hZGRyID0gJzIwMDE6MDAwMTo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfYWRkcmVzcyhiYWRfYWRkcikudGVyZWRvKQorCisgICAgICAgICMgaTc3CisgICAgICAgIHRlcmVkb19hZGRyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjA6NWVmNTo3OWZkOjA6NTlkOmEwZTU6YmExJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCc5NC4yNDUuMTIxLjI1MycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzk1LjI2LjI0NC45NCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJlZG9fYWRkci50ZXJlZG8pCisKKyAgICBkZWYgdGVzdHNpeHRvZm91cihzZWxmKToKKyAgICAgICAgc2l4dG9mb3VyYWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAyOmFjMWQ6MmQ2NDo6MScpCisgICAgICAgIGJhZF9hZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDA6YWMxZDoyZDY0OjoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE3Mi4yOS40NS4xMDAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXh0b2ZvdXJhZGRyLnNpeHRvZm91cikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiYWRfYWRkci5zaXh0b2ZvdXIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQppbmRleCBlNDI0MzAzLi5iMmYzZTY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgdW5saW5rLCBjcHl0aG9uX29ubHkKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIAogIyBUZXN0IHJlc3VsdCBvZiB0cmlwbGUgbG9vcCAodG9vIGJpZyB0byBpbmxpbmUpCiBUUklQTEVUUyA9IFsoMCwgMCwgMCksICgwLCAwLCAxKSwgKDAsIDAsIDIpLApAQCAtMjgsNiArMzAsOCBAQAogICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICBzZWxmLmkgPSByZXMgKyAxCiAgICAgICAgIHJldHVybiByZXMKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCiAKIGNsYXNzIEl0ZXJhdGluZ1NlcXVlbmNlQ2xhc3M6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG4pOgpAQCAtNDksNyArNTMsOSBAQAogY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBIZWxwZXIgdG8gY2hlY2sgdGhhdCBhbiBpdGVyYXRvciByZXR1cm5zIGEgZ2l2ZW4gc2VxdWVuY2UKLSAgICBkZWYgY2hlY2tfaXRlcmF0b3Ioc2VsZiwgaXQsIHNlcSk6CisgICAgZGVmIGNoZWNrX2l0ZXJhdG9yKHNlbGYsIGl0LCBzZXEsIHBpY2tsZT1UcnVlKToKKyAgICAgICAgaWYgcGlja2xlOgorICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUoaXQsIHNlcSkKICAgICAgICAgcmVzID0gW10KICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKQEAgLTYwLDEyICs2NiwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgc2VxKQogCiAgICAgIyBIZWxwZXIgdG8gY2hlY2sgdGhhdCBhIGZvciBsb29wIGdlbmVyYXRlcyBhIGdpdmVuIHNlcXVlbmNlCi0gICAgZGVmIGNoZWNrX2Zvcl9sb29wKHNlbGYsIGV4cHIsIHNlcSk6CisgICAgZGVmIGNoZWNrX2Zvcl9sb29wKHNlbGYsIGV4cHIsIHNlcSwgcGlja2xlPVRydWUpOgorICAgICAgICBpZiBwaWNrbGU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShpdGVyKGV4cHIpLCBzZXEpCiAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgIGZvciB2YWwgaW4gZXhwcjoKICAgICAgICAgICAgIHJlcy5hcHBlbmQodmFsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgc2VxKQogCisgICAgIyBIZWxwZXIgdG8gY2hlY2sgcGlja2xhYmlsaXR5CisgICAgZGVmIGNoZWNrX3BpY2tsZShzZWxmLCBpdG9yZywgc2VxKToKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgIyBDYW5ub3QgYXNzZXJ0IHR5cGUgZXF1YWxpdHkgYmVjYXVzZSBkaWN0IGl0ZXJhdG9ycyB1bnBpY2tsZSBhcyBsaXN0CisgICAgICAgICMgaXRlcmF0b3JzLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcVsxOl0pCisKICAgICAjIFRlc3QgYmFzaWMgdXNlIG9mIGl0ZXIoKSBmdW5jdGlvbgogICAgIGRlZiB0ZXN0X2l0ZXJfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihyYW5nZSgxMCkpLCBsaXN0KHJhbmdlKDEwKSkpCkBAIC0xMzgsNyArMTY1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBpID4gMTAwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yICMgRW1lcmdlbmN5IHN0b3AKICAgICAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoQygpLCAxMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKEMoKSwgMTApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCB0d28tYXJndW1lbnQgaXRlcigpIHdpdGggZnVuY3Rpb24KICAgICBkZWYgdGVzdF9pdGVyX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTQ2LDcgKzE3Myw3IEBACiAgICAgICAgICAgICBpID0gc3RhdGVbMF0KICAgICAgICAgICAgIHN0YXRlWzBdID0gaSsxCiAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMTApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAxMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IHR3by1hcmd1bWVudCBpdGVyKCkgd2l0aCBmdW5jdGlvbiB0aGF0IHJhaXNlcyBTdG9wSXRlcmF0aW9uCiAgICAgZGVmIHRlc3RfaXRlcl9mdW5jdGlvbl9zdG9wKHNlbGYpOgpAQCAtMTU2LDcgKzE4Myw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgc3RhdGVbMF0gPSBpKzEKICAgICAgICAgICAgIHJldHVybiBpCi0gICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAyMCksIGxpc3QocmFuZ2UoMTApKSkKKyAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDIwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgZXhjZXB0aW9uIHByb3BhZ2F0aW9uIHRocm91Z2ggZnVuY3Rpb24gaXRlcmF0b3IKICAgICBkZWYgdGVzdF9leGNlcHRpb25fZnVuY3Rpb24oc2VsZik6CkBAIC0xOTgsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBpID09IDEwOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcXVlbmNlQ2xhc3MuX19nZXRpdGVtX18oc2VsZiwgaSkKLSAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChNeVNlcXVlbmNlQ2xhc3MoMjApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoTXlTZXF1ZW5jZUNsYXNzKDIwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgYSBiaWcgcmFuZ2UKICAgICBkZWYgdGVzdF9pdGVyX2JpZ19yYW5nZShzZWxmKToKQEAgLTIzNyw4ICsyNjQsOCBAQAogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIGYgPSBvcGVuKFRFU1RGTiwgInIiKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFsiMFxuIiwgIjFcbiIsICIyXG4iLCAiM1xuIiwgIjRcbiJdKQotICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgWyIwXG4iLCAiMVxuIiwgIjJcbiIsICIzXG4iLCAiNFxuIl0sIHBpY2tsZT1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgW10sIHBpY2tsZT1GYWxzZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQppbmRleCA4Y2RjNTk3Li45MGU4NWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQpAQCAtMzcsNiArMzcsMTMgQEAKICAgICAnVGVzdCBwcmVkaWNhdGUnCiAgICAgcmV0dXJuIHglMj09MQogCitkZWYgdHVwbGVpemUoKmFyZ3MpOgorICAgIHJldHVybiBhcmdzCisKK2RlZiBpcmFuZ2Uobik6CisgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgIHlpZWxkIGkKKwogY2xhc3MgU3RvcE5vdzoKICAgICAnQ2xhc3MgZW11bGF0aW5nIGFuIGVtcHR5IGl0ZXJhYmxlLicKICAgICBkZWYgX19pdGVyX18oc2VsZik6CkBAIC01NSw4ICs2Miw1OSBAQAogICAgICdGYWN0b3JpYWwnCiAgICAgcmV0dXJuIHByb2QocmFuZ2UoMSwgbisxKSkKIAorIyByb290IGxldmVsIG1ldGhvZHMgZm9yIHBpY2tsaW5nIGFiaWxpdHkKK2RlZiB0ZXN0UihyKToKKyAgICByZXR1cm4gclswXQorCitkZWYgdGVzdFIyKHIpOgorICAgIHJldHVybiByWzJdCisKK2RlZiB1bmRlcnRlbih4KToKKyAgICByZXR1cm4geDwxMAorCiBjbGFzcyBUZXN0QmFzaWNPcHModW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgZGVmIHBpY2tsZXRlc3Qoc2VsZiwgaXQsIHN0b3A9NCwgdGFrZT0xLCBjb21wYXJlPU5vbmUpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW4gaXRlcmF0b3IgaXMgdGhlIHNhbWUgYWZ0ZXIgcGlja2xpbmcsIGFsc28gd2hlbiBwYXJ0LWNvbnN1bWVkIiIiCisgICAgICAgIGRlZiBleHBhbmQoaXQsIGk9MCk6CisgICAgICAgICAgICAjIFJlY3Vyc2l2ZWx5IGV4cGFuZCBpdGVyYWJsZXMsIHdpdGhpbiBzZW5zaWJsZSBib3VuZHMKKyAgICAgICAgICAgIGlmIGkgPiAxMDoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImluZmluaXRlIHJlY3Vyc2lvbiBlbmNvdW50ZXJlZCIpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0LCBzdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGwgPSBsaXN0KGlzbGljZShpdCwgc3RvcCkpCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBpdCAjIGNhbid0IGV4cGFuZCBpdAorICAgICAgICAgICAgcmV0dXJuIFtleHBhbmQoZSwgaSsxKSBmb3IgZSBpbiBsXQorCisgICAgICAgICMgVGVzdCB0aGUgaW5pdGlhbCBjb3B5IGFnYWluc3QgdGhlIG9yaWdpbmFsCisgICAgICAgIGR1bXAgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGkyID0gcGlja2xlLmxvYWRzKGR1bXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdCksIHR5cGUoaTIpKQorICAgICAgICBhLCBiID0gZXhwYW5kKGl0KSwgZXhwYW5kKGkyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisgICAgICAgIGlmIGNvbXBhcmU6CisgICAgICAgICAgICBjID0gZXhwYW5kKGNvbXBhcmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpCisKKyAgICAgICAgIyBUYWtlIGZyb20gdGhlIGNvcHksIGFuZCBjcmVhdGUgYW5vdGhlciBjb3B5IGFuZCBjb21wYXJlIHRoZW0uCisgICAgICAgIGkzID0gcGlja2xlLmxvYWRzKGR1bXApCisgICAgICAgIHRvb2sgPSAwCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHRha2UpOgorICAgICAgICAgICAgICAgIG5leHQoaTMpCisgICAgICAgICAgICAgICAgdG9vayArPSAxCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcyAjaW4gY2FzZSB0aGVyZSBpcyBsZXNzIGRhdGEgdGhhbiAndGFrZScKKyAgICAgICAgZHVtcCA9IHBpY2tsZS5kdW1wcyhpMykKKyAgICAgICAgaTQgPSBwaWNrbGUubG9hZHMoZHVtcCkKKyAgICAgICAgYSwgYiA9IGV4cGFuZChpMyksIGV4cGFuZChpNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICBpZiBjb21wYXJlOgorICAgICAgICAgICAgYyA9IGV4cGFuZChjb21wYXJlW3Rvb2s6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYyk7CisKICAgICBkZWYgdGVzdF9hY2N1bXVsYXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShyYW5nZSgxMCkpKSwgICAgICAgICAgICAgICAjIG9uZSBwb3NpdGlvbmFsIGFyZwogICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMywgNiwgMTAsIDE1LCAyMSwgMjgsIDM2LCA0NV0pCkBAIC02OSwxMSArMTI3LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKCdhYmMnKSksIFsnYScsICdhYicsICdhYmMnXSkgICAjIHdvcmtzIHdpdGggbm9uLW51bWVyaWMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoW10pKSwgW10pICAgICAgICAgICAgICAgICAgIyBlbXB0eSBpdGVyYWJsZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShbN10pKSwgWzddKSAgICAgICAgICAgICAgICAjIGl0ZXJhYmxlIG9mIGxlbmd0aCBvbmUKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlLCByYW5nZSgxMCksIDUpICAgICAgIyB0b28gbWFueSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSwgcmFuZ2UoMTApLCA1LCA2KSAgICMgdG9vIG1hbnkgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUpICAgICAgICAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUsIHg9cmFuZ2UoMTApKSAgICAgICAjIHVuZXhwZWN0ZWQga3dkIGFyZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIGFjY3VtdWxhdGUoWzEsIFtdXSkpICAgICAjIGFyZ3MgdGhhdCBkb24ndCBhZGQKIAorICAgICAgICBzID0gWzIsIDgsIDksIDUsIDcsIDAsIDMsIDQsIDEsIDZdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHMsIG1pbikpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsyLCAyLCAyLCAyLCAyLCAwLCAwLCAwLCAwLCAwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocywgbWF4KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDgsIDksIDksIDksIDksIDksIDksIDksIDldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShzLCBvcGVyYXRvci5tdWwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMiwgMTYsIDE0NCwgNzIwLCA1MDQwLCAwLCAwLCAwLCAwLCAwXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbGlzdChhY2N1bXVsYXRlKHMsIGNocikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuYXJ5LW9wZXJhdGlvbgorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYWNjdW11bGF0ZShyYW5nZSgxMCkpKSAgICAgICAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKwogICAgIGRlZiB0ZXN0X2NoYWluKHNlbGYpOgogCiAgICAgICAgIGRlZiBjaGFpbjIoKml0ZXJhYmxlcyk6CkBAIC05NiwxNCArMTY1LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSg0LCBjaGFpbi5mcm9tX2l0ZXJhYmxlKFsnYWJjJywgJ2RlZiddKSksIGxpc3QoJ2FiY2QnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBjaGFpbi5mcm9tX2l0ZXJhYmxlKFsyLCAzXSkpCiAKKyAgICBkZWYgdGVzdF9jaGFpbl9yZWR1Y2libGUoc2VsZik6CisgICAgICAgIG9wZXJhdG9ycyA9IFtjb3B5LmRlZXBjb3B5LAorICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHM6IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMocykpXQorICAgICAgICBmb3Igb3BlciBpbiBvcGVyYXRvcnM6CisgICAgICAgICAgICBpdCA9IGNoYWluKCdhYmMnLCAnZGVmJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcGVyKGl0KSksIGxpc3QoJ2FiY2RlZicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgJ2EnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wZXIoaXQpKSwgbGlzdCgnYmNkZWYnKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wZXIoY2hhaW4oJycpKSksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDQsIG9wZXIoY2hhaW4oJ2FiYycsICdkZWYnKSkpLCBsaXN0KCdhYmNkJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsIG9wZXIoY2hhaW4oMiwgMykpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY2hhaW4oJ2FiYycsICdkZWYnKSwgY29tcGFyZT1saXN0KCdhYmNkZWYnKSkKKwogICAgIGRlZiB0ZXN0X2NvbWJpbmF0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5hdGlvbnMsICdhYmMnKSAgICAgICAjIG1pc3NpbmcgciBhcmd1bWVudAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmF0aW9ucywgJ2FiYycsIDIsIDEpICMgdG9vIG1hbnkgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluYXRpb25zLCBOb25lKSAgICAgICAgIyBwb29sIGlzIG5vdCBpdGVyYWJsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21iaW5hdGlvbnMsICdhYmMnLCAtMikgICMgciBpcyBuZWdhdGl2ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29tYmluYXRpb25zKCdhYmMnLCAzMikpLCBbXSkgICAgICMgciA+IG4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbWJpbmF0aW9ucyhyYW5nZSg0KSwgMykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoMCwxLDIpLCAoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpXSkKKworICAgICAgICBmb3Igb3AgaW4gKGxhbWJkYSBhOmEsIGxhbWJkYSBhOnBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYSkpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21iaW5hdGlvbnMoJ2FiYycsIDMyKSkpLCBbXSkgICAgICMgciA+IG4KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbWJpbmF0aW9ucygnQUJDRCcsIDIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdBJywnRCcpLCAoJ0InLCdDJyksICgnQicsJ0QnKSwgKCdDJywnRCcpXSkKKyAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjb21iaW5hdGlvbnMoJ0FCQ0QnLCAyKQorICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0MnKSwgKCdBJywnRCcpLCAoJ0InLCdDJyksICgnQicsJ0QnKSwgKCdDJywnRCcpXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbWJpbmF0aW9ucyhyYW5nZSg0KSwgMykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygwLDEsMiksICgwLDEsMyksICgwLDIsMyksICgxLDIsMyldKQorICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGNvbWJpbmF0aW9ucyhyYW5nZSg0KSwgMykKKyAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpXSkKKwogCiAgICAgICAgIGRlZiBjb21iaW5hdGlvbnMxKGl0ZXJhYmxlLCByKToKICAgICAgICAgICAgICdQdXJlIHB5dGhvbiB2ZXJzaW9uIHNob3duIGluIHRoZSBkb2NzJwpAQCAtMTU4LDcgKzI1NiwxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGNvbWJpbmF0aW9uczIodmFsdWVzLCByKSkpICMgbWF0Y2hlcyBzZWNvbmQgcHVyZSBweXRob24gdmVyc2lvbgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGNvbWJpbmF0aW9uczModmFsdWVzLCByKSkpICMgbWF0Y2hlcyBzZWNvbmQgcHVyZSBweXRob24gdmVyc2lvbgogCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNvbWJpbmF0aW9ucyh2YWx1ZXMsIHIpKSAgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKICAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF9jb21iaW5hdGlvbnNfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIGNvbWJpbmF0aW9ucygnYWJjZGUnLCAzKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChjb21iaW5hdGlvbnMoJ2FiY2RlJywgMykpKSkpLCAxKQogCkBAIC0xNjgsOCArMjcwLDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3dyLCAnYWJjJywgMiwgMSkgIyB0b28gbWFueSBhcmd1bWVudHMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjd3IsIE5vbmUpICAgICAgICAjIHBvb2wgaXMgbm90IGl0ZXJhYmxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN3ciwgJ2FiYycsIC0yKSAgIyByIGlzIG5lZ2F0aXZlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjd3IoJ0FCQycsIDIpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQScpLCAoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdCJywnQicpLCAoJ0InLCdDJyksICgnQycsJ0MnKV0pCisKKyAgICAgICAgZm9yIG9wIGluIChsYW1iZGEgYTphLCBsYW1iZGEgYTpwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGEpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY3dyKCdBQkMnLCAyKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQScpLCAoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdCJywnQicpLCAoJ0InLCdDJyksICgnQycsJ0MnKV0pCisgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY3dyKCdBQkMnLCAyKQorICAgICAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0InKSwgKCdBJywnQycpLCAoJ0InLCdCJyksICgnQicsJ0MnKSwgKCdDJywnQycpXSkKKwogCiAgICAgICAgIGRlZiBjd3IxKGl0ZXJhYmxlLCByKToKICAgICAgICAgICAgICdQdXJlIHB5dGhvbiB2ZXJzaW9uIHNob3duIGluIHRoZSBkb2NzJwpAQCAtMjI4LDcgKzMzNywxMyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KGN3cjEodmFsdWVzLCByKSkpICAgICAgICAgIyBtYXRjaGVzIGZpcnN0IHB1cmUgcHl0aG9uIHZlcnNpb24KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjd3IyKHZhbHVlcywgcikpKSAgICAgICAgICMgbWF0Y2hlcyBzZWNvbmQgcHVyZSBweXRob24gdmVyc2lvbgogCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGN3cih2YWx1ZXMscikpICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKwogICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRfdHVwbGVfcmV1c2Uoc2VsZik6CisgICAgICAgIGN3ciA9IGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChtYXAoaWQsIGN3cignYWJjZGUnLCAzKSkpKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4oc2V0KG1hcChpZCwgbGlzdChjd3IoJ2FiY2RlJywgMykpKSkpLCAxKQogCkBAIC0yOTIsNyArNDA3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBsaXN0KHBlcm11dGF0aW9ucyh2YWx1ZXMsIE5vbmUpKSkgIyB0ZXN0IHIgYXMgTm9uZQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChwZXJtdXRhdGlvbnModmFsdWVzKSkpICAgICAgICMgdGVzdCBkZWZhdWx0IHIKIAotICAgICAgICAjIFRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlsOiAgdHVwbGUgcmUtdXNlCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHBlcm11dGF0aW9ucyh2YWx1ZXMsIHIpKSAgICAgICAgICAgICAgICAjIHRlc3QgcGlja2xpbmcKKworICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXN1c2UgaXMgQ1B5dGhvbiBzcGVjaWZpYyIpCisgICAgZGVmIHRlc3RfcGVybXV0YXRpb25zX3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBwZXJtdXRhdGlvbnMoJ2FiY2RlJywgMykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QocGVybXV0YXRpb25zKCdhYmNkZScsIDMpKSkpKSwgMSkKIApAQCAtMzQ1LDYgKzQ2MywyNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXByZXNzLCByYW5nZSg2KSkgICAgICAgICAgICAjIHRvbyBmZXcgYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXByZXNzLCByYW5nZSg2KSwgTm9uZSkgICAgICAjIHRvbyBtYW55IGFyZ3MKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZm9yIG9wIGluIChsYW1iZGEgYTpjb3B5LmNvcHkoYSksIGxhbWJkYSBhOmNvcHkuZGVlcGNvcHkoYSksIGxhbWJkYSBhOnBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYSkpKToKKyAgICAgICAgICAgIGZvciBkYXRhLCBzZWxlY3RvcnMsIHJlc3VsdDEsIHJlc3VsdDIgaW4gWworICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzEsMCwxLDAsMSwxXSwgJ0FDRUYnLCAnQ0VGJyksCisgICAgICAgICAgICAgICAgKCdBQkNERUYnLCBbMCwwLDAsMCwwLDBdLCAnJywgJycpLAorICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzEsMSwxLDEsMSwxXSwgJ0FCQ0RFRicsICdCQ0RFRicpLAorICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzEsMCwxXSwgJ0FDJywgJ0MnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQycsIFswLDEsMSwxLDEsMV0sICdCQycsICdDJyksCisgICAgICAgICAgICAgICAgXToKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21wcmVzcyhkYXRhPWRhdGEsIHNlbGVjdG9ycz1zZWxlY3RvcnMpKSksIGxpc3QocmVzdWx0MSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykpKSwgbGlzdChyZXN1bHQxKSkKKyAgICAgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdDE6CisgICAgICAgICAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKHRlc3RJbnRlcm1lZGlhdGUpKSwgbGlzdChyZXN1bHQyKSkKKworCiAgICAgZGVmIHRlc3RfY291bnQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHppcCgnYWJjJyxjb3VudCgpKSwgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6aXAoJ2FiYycsY291bnQoMykpLCBbKCdhJywgMyksICgnYicsIDQpLCAoJ2MnLCA1KV0pCkBAIC0zNzksNyArNTE1LDcgQEAKICAgICAgICAgICAgIGMgPSBjb3VudCh2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjb3B5LmNvcHkoYykpLCB2YWx1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjb3B5LmRlZXBjb3B5KGMpKSwgdmFsdWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjb3VudCh2YWx1ZSkpCiAKICAgICAgICAgI2NoZWNrIHByb3BlciBpbnRlcm5hbCBlcnJvciBoYW5kbGluZyBmb3IgbGFyZ2UgInN0ZXAnIHNpemVzCiAgICAgICAgIGNvdW50KDEsIG1heHNpemUrNSk7IHN5cy5leGNfaW5mbygpCkBAIC00MjYsNiArNTYyLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByMiA9ICgnY291bnQoJXIsICVyKScgJSAoaSwgaikpLnJlcGxhY2UoJ0wnLCAnJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIxLCByMikKKyAgICAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY291bnQoaSwgaikpCiAKICAgICBkZWYgdGVzdF9jeWNsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBjeWNsZSgnYWJjJykpLCBsaXN0KCdhYmNhYmNhYmNhJykpCkBAIC00MzQsNiArNTcxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUsIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoY3ljbGUoZ2VuMygpKSwxMCkpLCBbMCwxLDIsMCwxLDIsMCwxLDIsMF0pCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGMgPSBjeWNsZSgnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGMpLCAnYScpCisgICAgICAgICNzaW1wbGUgY29weSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCwgYmVjYXVzZSBfX3JlZHVjZV9fIHJldHVybnMKKyAgICAgICAgI2FuIGludGVybmFsIGl0ZXJhdG9yCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIGNvcHkuY29weShjKSksIGxpc3QoJ2JjYWJjYWJjYWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBjb3B5LmRlZXBjb3B5KGMpKSwgbGlzdCgnYmNhYmNhYmNhYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgbGlzdCgnYmNhYmNhYmNhYicpKQorICAgICAgICBuZXh0KGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBsaXN0KCdjYWJjYWJjYWJjJykpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjeWNsZSgnYWJjJykpCisKICAgICBkZWYgdGVzdF9ncm91cGJ5KHNlbGYpOgogICAgICAgICAjIENoZWNrIHdoZXRoZXIgaXQgYWNjZXB0cyBhcmd1bWVudHMgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGxpc3QoZ3JvdXBieShbXSkpKQpAQCAtNDUyLDE4ICs2MDEsMzcgQEAKICAgICAgICAgICAgICAgICBkdXAuYXBwZW5kKGVsZW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZHVwKQogCisgICAgICAgICMgQ2hlY2sgbm9ybWFsIHBpY2tsZWQKKyAgICAgICAgZHVwID0gW10KKyAgICAgICAgZm9yIGssIGcgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhncm91cGJ5KHMsIHRlc3RSKSkpOgorICAgICAgICAgICAgZm9yIGVsZW0gaW4gZzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIGVsZW1bMF0pCisgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKKwogICAgICAgICAjIENoZWNrIG5lc3RlZCBjYXNlCiAgICAgICAgIGR1cCA9IFtdCi0gICAgICAgIGZvciBrLCBnIGluIGdyb3VwYnkocywgbGFtYmRhIHI6clswXSk6Ci0gICAgICAgICAgICBmb3IgaWssIGlnIGluIGdyb3VwYnkoZywgbGFtYmRhIHI6clsyXSk6CisgICAgICAgIGZvciBrLCBnIGluIGdyb3VwYnkocywgdGVzdFIpOgorICAgICAgICAgICAgZm9yIGlrLCBpZyBpbiBncm91cGJ5KGcsIHRlc3RSMik6CiAgICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gaWc6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaywgZWxlbVswXSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpaywgZWxlbVsyXSkKICAgICAgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKIAorICAgICAgICAjIENoZWNrIG5lc3RlZCBhbmQgcGlja2xlZAorICAgICAgICBkdXAgPSBbXQorICAgICAgICBmb3IgaywgZyBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGdyb3VwYnkocywgdGVzdFIpKSk6CisgICAgICAgICAgICBmb3IgaWssIGlnIGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZ3JvdXBieShnLCB0ZXN0UjIpKSk6CisgICAgICAgICAgICAgICAgZm9yIGVsZW0gaW4gaWc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaywgZWxlbVswXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpaywgZWxlbVsyXSkKKyAgICAgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKKworCiAgICAgICAgICMgQ2hlY2sgY2FzZSB3aGVyZSBpbm5lciBpdGVyYXRvciBpcyBub3QgdXNlZAotICAgICAgICBrZXlzID0gW2sgZm9yIGssIGcgaW4gZ3JvdXBieShzLCBsYW1iZGEgcjpyWzBdKV0KKyAgICAgICAga2V5cyA9IFtrIGZvciBrLCBnIGluIGdyb3VwYnkocywgdGVzdFIpXQogICAgICAgICBleHBlY3RlZGtleXMgPSBzZXQoW3JbMF0gZm9yIHIgaW4gc10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGtleXMpLCBleHBlY3RlZGtleXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGtleXMpLCBsZW4oZXhwZWN0ZWRrZXlzKSkKQEAgLTUzNCw2ICs3MDIsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaWx0ZXIsIGlzRXZlbiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBmaWx0ZXIocmFuZ2UoNiksIHJhbmdlKDYpKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWzAsMiw0XQorCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShjKSksIGFucykKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShjKSksIGFucykKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhjKSkpLCBhbnMpCisgICAgICAgIG5leHQoYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgYW5zWzE6XSkKKyAgICAgICAgYyA9IGZpbHRlcihpc0V2ZW4sIHJhbmdlKDYpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYykKKwogICAgIGRlZiB0ZXN0X2ZpbHRlcmZhbHNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZmlsdGVyZmFsc2UoaXNFdmVuLCByYW5nZSg2KSkpLCBbMSwzLDVdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZmlsdGVyZmFsc2UoTm9uZSwgWzAsMSwwLDIsMF0pKSwgWzAsMCwwXSkKQEAgLTU0NCw2ICs3MjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpbHRlcmZhbHNlLCBsYW1iZGEgeDp4LCByYW5nZSg2KSwgNykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaWx0ZXJmYWxzZSwgaXNFdmVuLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIGZpbHRlcmZhbHNlKHJhbmdlKDYpLCByYW5nZSg2KSkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChmaWx0ZXJmYWxzZShpc0V2ZW4sIHJhbmdlKDYpKSkKIAogICAgIGRlZiB0ZXN0X3ppcChzZWxmKToKICAgICAgICAgIyBYWFggVGhpcyBpcyByYXRoZXIgc2lsbHkgbm93IHRoYXQgYnVpbHRpbiB6aXAoKSBjYWxscyB6aXAoKS4uLgpAQCAtNTU2LDE2ICs3MzksMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHppcCgpKSwgbHppcCgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHppcCwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB6aXAsIHJhbmdlKDMpLCAzKQotICAgICAgICAjIENoZWNrIHR1cGxlIHJlLXVzZSAoaW1wbGVtZW50YXRpb24gZGV0YWlsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt0dXBsZShsaXN0KHBhaXIpKSBmb3IgcGFpciBpbiB6aXAoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbHppcCgnYWJjJywgJ2RlZicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtwYWlyIGZvciBwYWlyIGluIHppcCgnYWJjJywgJ2RlZicpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsemlwKCdhYmMnLCAnZGVmJykpCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfemlwX3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgemlwKCdhYmMnLCAnZGVmJykpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbihpZHMpLCBtYXgoaWRzKSkKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIGxpc3QoemlwKCdhYmMnLCAnZGVmJykpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdC5mcm9ta2V5cyhpZHMpKSwgbGVuKGlkcykpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBjb3B5LmNvcHkoemlwKCdhYmMnLGNvdW50KCkpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gY29weS5kZWVwY29weSh6aXAoJ2FiYycsY291bnQoKSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIGFucyA9IFsoeCx5KSBmb3IgeCwgeSBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHppcCgnYWJjJyxjb3VudCgpKSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYScsIDApLCAoJ2InLCAxKSwgKCdjJywgMildKQorCisgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSB6aXAoJ2FiYycsY291bnQoKSkKKyAgICAgICAgbmV4dCh0ZXN0SW50ZXJtZWRpYXRlKQorICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh0ZXN0SW50ZXJtZWRpYXRlKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwKCdhYmMnLCBjb3VudCgpKSkKKwogICAgIGRlZiB0ZXN0X3ppcGxvbmdlc3Qoc2VsZik6CiAgICAgICAgIGZvciBhcmdzIGluIFsKICAgICAgICAgICAgICAgICBbJ2FiYycsIHJhbmdlKDYpXSwKQEAgLTYwMywxNiArODA1LDI0IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRGlkIG5vdCByYWlzZSBUeXBlIGluOiAgJyArIHN0bXQpCiAKLSAgICAgICAgIyBDaGVjayB0dXBsZSByZS11c2UgKGltcGxlbWVudGF0aW9uIGRldGFpbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbdHVwbGUobGlzdChwYWlyKSkgZm9yIHBhaXIgaW4gemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh6aXAoJ2FiYycsICdkZWYnKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3BhaXIgZm9yIHBhaXIgaW4gemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh6aXAoJ2FiYycsICdkZWYnKSkpCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfemlwX2xvbmdlc3RfdHVwbGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCB6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oaWRzKSwgbWF4KGlkcykpCiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCBsaXN0KHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJykpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdC5mcm9ta2V5cyhpZHMpKSwgbGVuKGlkcykpCiAKKyAgICBkZWYgdGVzdF96aXBfbG9uZ2VzdF9waWNrbGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCJhYmMiLCAiZGVmIikpCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiYWJjIiwgImRlZmdoIikpCisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiYWJjIiwgImRlZmdoIiwgZmlsbHZhbHVlPTEpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoIiIsICJkZWZnaCIpKQorCiAgICAgZGVmIHRlc3RfYnVnXzcyNDQoc2VsZik6CiAKICAgICAgICAgY2xhc3MgUmVwZWF0ZXI6CkBAIC03MTEsMTAgKzkyMSwyNSBAQAogICAgICAgICAgICAgYXJncyA9IG1hcChpdGVyLCBhcmdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChwcm9kdWN0KCphcmdzKSkpLCBleHBlY3RlZF9sZW4pCiAKLSAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorICAgIEBzdXBwb3J0LmltcGxfZGV0YWlsKCJ0dXBsZSByZXVzZSBpcyBzcGVjaWZpYyB0byBDUHl0aG9uIikKKyAgICBkZWYgdGVzdF9wcm9kdWN0X3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBwcm9kdWN0KCdhYmMnLCAnZGVmJykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QocHJvZHVjdCgnYWJjJywgJ2RlZicpKSkpKSwgMSkKIAorICAgIGRlZiB0ZXN0X3Byb2R1Y3RfcGlja2xpbmcoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBmb3IgYXJncywgcmVzdWx0IGluIFsKKyAgICAgICAgICAgIChbXSwgWygpXSksICAgICAgICAgICAgICAgICAgICAgIyB6ZXJvIGl0ZXJhYmxlcworICAgICAgICAgICAgKFsnYWInXSwgWygnYScsKSwgKCdiJywpXSksICAgICAjIG9uZSBpdGVyYWJsZQorICAgICAgICAgICAgKFtyYW5nZSgyKSwgcmFuZ2UoMyldLCBbKDAsMCksICgwLDEpLCAoMCwyKSwgKDEsMCksICgxLDEpLCAoMSwyKV0pLCAgICAgIyB0d28gaXRlcmFibGVzCisgICAgICAgICAgICAoW3JhbmdlKDApLCByYW5nZSgyKSwgcmFuZ2UoMyldLCBbXSksICAgICAgICAgICAjIGZpcnN0IGl0ZXJhYmxlIHdpdGggemVybyBsZW5ndGgKKyAgICAgICAgICAgIChbcmFuZ2UoMiksIHJhbmdlKDApLCByYW5nZSgzKV0sIFtdKSwgICAgICAgICAgICMgbWlkZGxlIGl0ZXJhYmxlIHdpdGggemVybyBsZW5ndGgKKyAgICAgICAgICAgIChbcmFuZ2UoMiksIHJhbmdlKDMpLCByYW5nZSgwKV0sIFtdKSwgICAgICAgICAgICMgbGFzdCBpdGVyYWJsZSB3aXRoIHplcm8gbGVuZ3RoCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShwcm9kdWN0KCphcmdzKSkpLCByZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShwcm9kdWN0KCphcmdzKSkpLCByZXN1bHQpCisgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QocHJvZHVjdCgqYXJncykpCisKICAgICBkZWYgdGVzdF9yZXBlYXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXBlYXQob2JqZWN0PSdhJywgdGltZXM9MykpLCBbJ2EnLCAnYScsICdhJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHppcChyYW5nZSgzKSxyZXBlYXQoJ2EnKSksCkBAIC03MzMsMTEgKzk1OCwxNiBAQAogICAgICAgICBsaXN0KHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihyKSwgJ3JlcGVhdCgoMSswaiksIDApJykKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYyA9IHJlcGVhdChvYmplY3Q9J2EnLCB0aW1lcz0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGMpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyLCBjb3B5LmNvcHkoYykpLCBsaXN0KCdhJyAqIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMiwgY29weS5kZWVwY29weShjKSksIGxpc3QoJ2EnICogMikpCisgICAgICAgIHNlbGYucGlja2xldGVzdChyZXBlYXQob2JqZWN0PSdhJywgdGltZXM9MTApKQorCiAgICAgZGVmIHRlc3RfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWFwKG9wZXJhdG9yLnBvdywgcmFuZ2UoMyksIHJhbmdlKDEsNykpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbMCoqMSwgMSoqMiwgMioqM10pCi0gICAgICAgIGRlZiB0dXBsZWl6ZSgqYXJncyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJncwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWFwKHR1cGxlaXplLCAnYWJjJywgcmFuZ2UoNSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhJywwKSwoJ2InLDEpLCgnYycsMildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkpLApAQCAtNzUyLDYgKzk4MiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBtYXAoZXJyZnVuYywgWzRdLCBbNV0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIG1hcChvbmVhcmcsIFs0XSwgWzVdKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWygnYScsMCksKCdiJywxKSwoJ2MnLDIpXQorCisgICAgICAgIGMgPSBtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBtYXAodHVwbGVpemUsICdhYmMnLCBjb3VudCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShjKSksIGFucykKKworICAgICAgICBjID0gbWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGMpCisKICAgICBkZWYgdGVzdF9zdGFybWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbMCoqMSwgMSoqMiwgMioqM10pCkBAIC03NjYsNiArMTAwOCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBzdGFybWFwKGVycmZ1bmMsIFsoNCw1KV0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIHN0YXJtYXAob25lYXJnLCBbKDQsNSldKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgYW5zID0gWzAqKjEsIDEqKjIsIDIqKjNdCisKKyAgICAgICAgYyA9IHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYykKKwogICAgIGRlZiB0ZXN0X2lzbGljZShzZWxmKToKICAgICAgICAgZm9yIGFyZ3MgaW4gWyAgICAgICAgICAjIGlzbGljZShhcmdzKSBzaG91bGQgYWdyZWUgd2l0aCByYW5nZShhcmdzKQogICAgICAgICAgICAgICAgICgxMCwgMjAsIDMpLApAQCAtNzk4LDE3ICsxMDUyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QocmFuZ2UoMywgMTApKSkKIAogICAgICAgICAjIFRlc3QgaW52YWxpZCBhcmd1bWVudHMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgMiwgMywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIC01LCAxMCwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIC01LCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIDEwLCAtMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIDEwLCAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgJ2EnLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgJ2EnLCAxLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhbmdlKDEwKSwgMSwgJ2EnLCAxKQorICAgICAgICByYSA9IHJhbmdlKDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYSwgMSwgMiwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgLTUsIDEwLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAtNSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsIDEwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgMTAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgJ2EnLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsICdhJywgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgJ2EnLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KGlzbGljZShjb3VudCgpLCAxLCAxMCwgbWF4c2l6ZSkpKSwgMSkKIAogICAgICAgICAjIElzc3VlICMxMDMyMzogIExlc3MgaXNsaWNlIGluIGEgcHJlZGljdGFibGUgc3RhdGUKQEAgLTgxNiw5ICsxMDcxLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoYywgMSwgMywgNTApKSwgWzFdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksIDMpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGZvciBhcmdzIGluIFsgICAgICAgICAgIyBpc2xpY2UoYXJncykgc2hvdWxkIGFncmVlIHdpdGggcmFuZ2UoYXJncykKKyAgICAgICAgICAgICAgICAoMTAsIDIwLCAzKSwKKyAgICAgICAgICAgICAgICAoMTAsIDMsIDIwKSwKKyAgICAgICAgICAgICAgICAoMTAsIDIwKSwKKyAgICAgICAgICAgICAgICAoMTAsIDMpLAorICAgICAgICAgICAgICAgICgyMCwpCisgICAgICAgICAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoaXNsaWNlKHJhbmdlKDEwMCksICphcmdzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKCphcmdzKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShpc2xpY2UocmFuZ2UoMTAwKSwgKmFyZ3MpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmFuZ2UoKmFyZ3MpKSkKKyAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChpc2xpY2UocmFuZ2UoMTAwKSwgKmFyZ3MpKQorCiAgICAgZGVmIHRlc3RfdGFrZXdoaWxlKHNlbGYpOgogICAgICAgICBkYXRhID0gWzEsIDMsIDUsIDIwLCAyLCA0LCA2LCA4XQotICAgICAgICB1bmRlcnRlbiA9IGxhbWJkYSB4OiB4PDEwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSwgWzEsIDMsIDVdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodGFrZXdoaWxlKHVuZGVydGVuLCBbXSkpLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0YWtld2hpbGUpCkBAIC04MzAsOSArMTA5OCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodCksIFsxLCAxLCAxXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgdCkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weSh0YWtld2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksIFsxLCAzLCA1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgWzEsIDMsIDVdKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSkKKwogICAgIGRlZiB0ZXN0X2Ryb3B3aGlsZShzZWxmKToKICAgICAgICAgZGF0YSA9IFsxLCAzLCA1LCAyMCwgMiwgNCwgNiwgOF0KLSAgICAgICAgdW5kZXJ0ZW4gPSBsYW1iZGEgeDogeDwxMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSksIFsyMCwgMiwgNCwgNiwgOF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkcm9wd2hpbGUodW5kZXJ0ZW4sIFtdKSksIFtdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRyb3B3aGlsZSkKQEAgLTg0MSwxMSArMTExNCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5leHQsIGRyb3B3aGlsZSgxMCwgWyg0LDUpXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIGRyb3B3aGlsZShlcnJmdW5jLCBbKDQsNSldKSkKIAorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksIFsyMCwgMiwgNCwgNiwgOF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsyMCwgMiwgNCwgNiwgOF0pCisgICAgICAgIHNlbGYucGlja2xldGVzdChkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKQorCiAgICAgZGVmIHRlc3RfdGVlKHNlbGYpOgogICAgICAgICBuID0gMjAwCi0gICAgICAgIGRlZiBpcmFuZ2Uobik6Ci0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgICAgICAgICB5aWVsZCBpCiAKICAgICAgICAgYSwgYiA9IHRlZShbXSkgICAgICAgICMgdGVzdCBlbXB0eSBpdGVyYXRvcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFtdKQpAQCAtOTMwLDYgKzEyMDYsNjcgQEAKICAgICAgICAgZGVsIGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVmZXJlbmNlRXJyb3IsIGdldGF0dHIsIHAsICdfX2NsYXNzX18nKQogCisgICAgICAgIGFucyA9IGxpc3QoJ2FiYycpCisgICAgICAgIGxvbmdfYW5zID0gbGlzdChyYW5nZSgxMDAwMCkpCisKKyAgICAgICAgIyBjaGVjayBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBhbnMpCisgICAgICAgIGEsIGIgPSB0ZWUobGlzdChyYW5nZSgxMDAwMCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBsb25nX2FucykKKworICAgICAgICAjIGNoZWNrIHBhcnRpYWxseSBjb25zdW1lZCBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHRha2UoMiwgYSkKKyAgICAgICAgdGFrZSgxLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGFuc1sxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBhbnNbMTpdKQorICAgICAgICBhLCBiID0gdGVlKHJhbmdlKDEwMDAwKSkKKyAgICAgICAgdGFrZSgxMDAsIGEpCisgICAgICAgIHRha2UoNjAsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYSkpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShiKSksIGxvbmdfYW5zWzYwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgbG9uZ19hbnNbNjA6XSkKKworICAgICAgICAjIGNoZWNrIGRlZXBjb3B5CisgICAgICAgIGEsIGIgPSB0ZWUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgYW5zKQorICAgICAgICBhLCBiID0gdGVlKHJhbmdlKDEwMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsb25nX2FucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBsb25nX2FucykKKworICAgICAgICAjIGNoZWNrIHBhcnRpYWxseSBjb25zdW1lZCBkZWVwY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICB0YWtlKDIsIGEpCisgICAgICAgIHRha2UoMSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYSkpLCBhbnNbMjpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGFuc1sxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBhbnNbMTpdKQorICAgICAgICBhLCBiID0gdGVlKHJhbmdlKDEwMDAwKSkKKyAgICAgICAgdGFrZSgxMDAsIGEpCisgICAgICAgIHRha2UoNjAsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgbG9uZ19hbnNbNjA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsb25nX2Fuc1sxMDA6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBsb25nX2Fuc1s2MDpdKQorCisgICAgICAgICMgY2hlY2sgcGlja2xlCisgICAgICAgIHNlbGYucGlja2xldGVzdChpdGVyKHRlZSgnYWJjJykpKQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYSwgY29tcGFyZT1hbnMpCisgICAgICAgIHNlbGYucGlja2xldGVzdChiLCBjb21wYXJlPWFucykKKwogICAgIGRlZiB0ZXN0X1N0b3BJdGVyYXRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHppcCgpKQogCkBAIC05NTUsOSArMTI5MiwyMSBAQAogCiBjbGFzcyBUZXN0RXhhbXBsZXModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlc3RfYWNjdW1sYXRlKHNlbGYpOgorICAgIGRlZiB0ZXN0X2FjY3VtdWxhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKFsxLDIsMyw0LDVdKSksIFsxLCAzLCA2LCAxMCwgMTVdKQogCisgICAgZGVmIHRlc3RfYWNjdW11bGF0ZV9yZWR1Y2libGUoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBkYXRhID0gWzEsIDIsIDMsIDQsIDVdCisgICAgICAgIGFjY3VtdWxhdGVkID0gWzEsIDMsIDYsIDEwLCAxNV0KKyAgICAgICAgaXQgPSBhY2N1bXVsYXRlKGRhdGEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoaXQpKSksIGFjY3VtdWxhdGVkWzpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhpdCkpKSwgYWNjdW11bGF0ZWRbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShpdCkpLCBhY2N1bXVsYXRlZFsxOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoaXQpKSwgYWNjdW11bGF0ZWRbMTpdKQorCiAgICAgZGVmIHRlc3RfY2hhaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihjaGFpbignQUJDJywgJ0RFRicpKSwgJ0FCQ0RFRicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkgYi9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CmluZGV4IDEwOGVkMTguLjA1MDNhN2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQpAQCAtNzgsNyArNzgsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAgZigxLCAyLCAzKQotICAgICAgICBleHBlY3RlZCA9ICJmKCkgdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzICgzIGdpdmVuKSIKKyAgICAgICAgZXhwZWN0ZWQgPSAiZigpIHRha2VzIGZyb20gMSB0byAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHdlcmUgZ2l2ZW4iCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Yy5leGNlcHRpb24pLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0U3ludGF4RXJyb3JGb3JGdW5jdGlvbkNhbGwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkgYi9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkKaW5kZXggMWFmYWY3MC4uZGY0YzM3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weQpAQCAtOSw4ICs5LDggQEAKIGRlZiBzdWl0ZSgpOgogICAgIHRlc3RzID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICBmb3IgbSBpbiAodGVzdF9maXhlcnMsIHRlc3RfcHl0cmVlLHRlc3RfdXRpbCwgdGVzdF9yZWZhY3RvciwKLSAgICAgICAgICAgICAgdGVzdF9wYXJzZXIsIHRlc3RfbWFpbl8pOgorICAgIGZvciBtIGluICh0ZXN0X2ZpeGVycywgdGVzdF9weXRyZWUsIHRlc3RfdXRpbCwgdGVzdF9yZWZhY3RvciwgdGVzdF9wYXJzZXIsCisgICAgICAgICAgICAgIHRlc3RfbWFpbl8pOgogICAgICAgICB0ZXN0cy5hZGRUZXN0cyhsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtKSkKICAgICByZXR1cm4gdGVzdHMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDg0YjhhZmUuLjVkZjI3ZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2ltcG9ydCBwaWNrbGUKIAogY2xhc3MgTGlzdFRlc3QobGlzdF90ZXN0cy5Db21tb25UZXN0KToKICAgICB0eXBlMnRlc3QgPSBsaXN0CkBAIC02OSw2ICs3MCwzMyBAQAogICAgICAgICBjaGVjaygxMCkgICAgICAgIyBjaGVjayBvdXIgY2hlY2tpbmcgY29kZQogICAgICAgICBjaGVjaygxMDAwMDAwKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICAjIFVzZXJsaXN0IGl0ZXJhdG9ycyBkb24ndCBzdXBwb3J0IHBpY2tsaW5nIHlldCBzaW5jZQorICAgICAgICAjIHRoZXkgYXJlIGJhc2VkIG9uIGdlbmVyYXRvcnMuCisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QoZGF0YSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpWzE6XSkKKworICAgIGRlZiB0ZXN0X3JldmVyc2VkX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYudHlwZTJ0ZXN0KFs0LCA1LCA2LCA3XSkKKyAgICAgICAgaXQgPSBpdG9yZyA9IHJldmVyc2VkKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSlbMTpdKQogCiAgICAgZGVmIHRlc3Rfbm9fY29tZGF0X2ZvbGRpbmcoc2VsZik6CiAgICAgICAgICMgSXNzdWUgODg0NzogSW4gdGhlIFBHTyBidWlsZCwgdGhlIE1TVkMgbGlua2VyJ3MgQ09NREFUIGZvbGRpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKaW5kZXggOGY3NTc0Yi4uNTFhN2JjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKQEAgLTExLDcgKzExLDcgQEAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICB0bG9jcyA9ICgiZW5fVVMuVVRGLTgiLCAiZW5fVVMuSVNPODg1OS0xIiwgImVuX1VTIikKLSAgICAgICAgaWYgaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkgPCAxMDoKKyAgICAgICAgaWYgaW50KG9zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA8IDEwOgogICAgICAgICAgICAgIyBUaGUgbG9jYWxlIHRlc3Qgd29yayBmaW5lIG9uIE9TWCAxMC42LCBJIChyb25hbGRvdXNzb3JlbikKICAgICAgICAgICAgICMgaGF2ZW4ndCBoYWQgdGltZSB5ZXQgdG8gdmVyaWZ5IGlmIHRlc3RzIHdvcmsgb24gT1NYIDEwLjUKICAgICAgICAgICAgICMgKDEwLjQgaXMga25vd24gdG8gYmUgYmFkKQpAQCAtNDAxLDYgKzQwMSw4IEBACiAgICAgICAgICAgICAjIFVuc3VwcG9ydGVkIGxvY2FsZSBvbiB0aGlzIHN5c3RlbQogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndGVzdCBuZWVkcyBUdXJraXNoIGxvY2FsZScpCiAgICAgICAgIGxvYyA9IGxvY2FsZS5nZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoJ2dvdCBsb2NhbGUgJWEnICUgKGxvYywpKQogICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSwgbG9jKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYywgbG9jYWxlLmdldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKaW5kZXggMmQyNjRmOC4uY2I5MDhmYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQpAQCAtMzcsMTIgKzM3LDExIEBACiBpbXBvcnQgcmUKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKLWZyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdUQ1BTZXJ2ZXIsIFN0cmVhbVJlcXVlc3RIYW5kbGVyCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQsIHJ1bl93aXRoX2xvY2FsZSwgcnVuX3VuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVGVzdEhhbmRsZXIsIE1hdGNoZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0Y2gsIHJlcXVpcmVzX3psaWIsIFRlc3RIYW5kbGVyLCBNYXRjaGVyKQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC01MCw4ICs0OSwzMSBAQAogaW1wb3J0IHdlYWtyZWYKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgIyBUaGUgZm9sbG93aW5nIGltcG9ydHMgYXJlIG5lZWRlZCBvbmx5IGZvciB0ZXN0cyB3aGljaAorICAgICMgcmVxdWlyZSB0aHJlYWRpbmcKKyAgICBpbXBvcnQgYXN5bmNoYXQKKyAgICBpbXBvcnQgYXN5bmNvcmUKKyAgICBpbXBvcnQgZXJybm8KKyAgICBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBIVFRQU2VydmVyLCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyCisgICAgaW1wb3J0IHNtdHBkCisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlLCBwYXJzZV9xcworICAgIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCAoVGhyZWFkaW5nVURQU2VydmVyLCBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcikKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgd2luMzJldnRsb2cgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHdpbjMyZXZ0bG9ndXRpbAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHdpbjMyZXZ0bG9ndXRpbCA9IE5vbmUKKyAgICB3aW4zMmV2dGxvZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKIAogCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSw5ICsxMDEsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgbG9nZ2luZy5fcmVsZWFzZUxvY2soKQogCi0gICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2Vyczogb25lIG5vbi1BU0NJSSBhbmQgb25lIFVuaWNvZGUuCi0gICAgICAgICMgVGhpcyBpcyB0byB0ZXN0IGNvcnJlY3Qgb3BlcmF0aW9uIHdoZW4gc29ydGluZyBleGlzdGluZwotICAgICAgICAjIGxvZ2dlcnMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gY29kZS4gU2VlIGlzc3VlIDgyMDEuCisgICAgICAgICMgU2V0IHR3byB1bnVzZWQgbG9nZ2VycwogICAgICAgICBzZWxmLmxvZ2dlcjEgPSBsb2dnaW5nLmdldExvZ2dlcigiXHhhYlx4ZDdceGJiIikKICAgICAgICAgc2VsZi5sb2dnZXIyID0gbG9nZ2luZy5nZXRMb2dnZXIoIlx1MDEzZlx1MDBkNlx1MDA0NyIpCiAKQEAgLTE0Miw4ICsxNjIsNyBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAjIFN0cmluZ0lPLlN0cmluZ0lPIGxhY2tzIGEgcmVzZXQoKSBtZXRob2QuCiAgICAgICAgICAgICBhY3R1YWxfbGluZXMgPSBzdHJlYW0uZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICclcyB2cy4gJXMnICUgKGFjdHVhbF9saW5lcywgZXhwZWN0ZWRfdmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsX2xpbmVzKSwgbGVuKGV4cGVjdGVkX3ZhbHVlcykpCiAgICAgICAgIGZvciBhY3R1YWwsIGV4cGVjdGVkIGluIHppcChhY3R1YWxfbGluZXMsIGV4cGVjdGVkX3ZhbHVlcyk6CiAgICAgICAgICAgICBtYXRjaCA9IHBhdC5zZWFyY2goYWN0dWFsKQogICAgICAgICAgICAgaWYgbm90IG1hdGNoOgpAQCAtMTgxLDE3ICsyMDAsMTcgQEAKIAogICAgICAgICBJTkYubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgSU5GLmVycm9yKG0oKSkKLSAgICAgICAgSU5GLndhcm4obSgpKQorICAgICAgICBJTkYud2FybmluZyhtKCkpCiAgICAgICAgIElORi5pbmZvKG0oKSkKIAogICAgICAgICBERUIubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgREVCLmVycm9yKG0oKSkKLSAgICAgICAgREVCLndhcm4gKG0oKSkKLSAgICAgICAgREVCLmluZm8gKG0oKSkKKyAgICAgICAgREVCLndhcm5pbmcobSgpKQorICAgICAgICBERUIuaW5mbyhtKCkpCiAgICAgICAgIERFQi5kZWJ1ZyhtKCkpCiAKICAgICAgICAgIyBUaGVzZSBzaG91bGQgbm90IGxvZy4KLSAgICAgICAgRVJSLndhcm4obSgpKQorICAgICAgICBFUlIud2FybmluZyhtKCkpCiAgICAgICAgIEVSUi5pbmZvKG0oKSkKICAgICAgICAgRVJSLmRlYnVnKG0oKSkKIApAQCAtMjI1LDcgKzI0NCw3IEBACiAgICAgICAgIElORl9FUlIuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCi0gICAgICAgIElORl9FUlIud2FybihtKCkpCisgICAgICAgIElORl9FUlIud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlIuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlIuZGVidWcobSgpKQogCkBAIC0yNDksMTQgKzI2OCwxNCBAQAogICAgICAgICAjIFRoZXNlIHNob3VsZCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5sb2cobG9nZ2luZy5DUklUSUNBTCwgbSgpKQogICAgICAgICBJTkZfVU5ERUYuZXJyb3IobSgpKQotICAgICAgICBJTkZfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9VTkRFRi53YXJuaW5nKG0oKSkKICAgICAgICAgSU5GX1VOREVGLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZXJyb3IobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCiAgICAgICAgIElORl9VTkRFRi5kZWJ1ZyhtKCkpCi0gICAgICAgIElORl9FUlJfVU5ERUYud2FybihtKCkpCisgICAgICAgIElORl9FUlJfVU5ERUYud2FybmluZyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuaW5mbyhtKCkpCiAgICAgICAgIElORl9FUlJfVU5ERUYuZGVidWcobSgpKQogCkBAIC0yOTUsOCArMzE0LDYgQEAKICAgICAgICAgICAgICgnSU5GLkJBRFBBUkVOVCcsICdJTkZPJywgJzQnKSwKICAgICAgICAgXSkKIAotICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLmdldExvZ2dlciwgYW55KQogCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCkBAIC0zNTUsNiArMzcyLDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBoYW5kbGVyLnJlbW92ZUZpbHRlcihmaWx0ZXJmdW5jKQogCisgICAgZGVmIHRlc3RfZW1wdHlfZmlsdGVyKHNlbGYpOgorICAgICAgICBmID0gbG9nZ2luZy5GaWx0ZXIoKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbmFtZSc6ICdzcGFtLmVnZ3MnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZmlsdGVyKHIpKQogCiAjCiAjICAgRmlyc3QsIHdlIGRlZmluZSBvdXIgbGV2ZWxzLiBUaGVyZSBjYW4gYmUgYXMgbWFueSBhcyB5b3Ugd2FudCAtIHRoZSBvbmx5CkBAIC00OTgsNiArNTE5LDQ3OCBAQAogICAgICAgICAgICAgaGFuZGxlci5yZW1vdmVGaWx0ZXIoZ2FycikKIAogCitjbGFzcyBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfbmFtZShzZWxmKToKKyAgICAgICAgaCA9IGxvZ2dpbmcuSGFuZGxlcigpCisgICAgICAgIGgubmFtZSA9ICdnZW5lcmljJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ2dlbmVyaWMnKQorICAgICAgICBoLm5hbWUgPSAnYW5vdGhlcmdlbmVyaWMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnYW5vdGhlcmdlbmVyaWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBoLmVtaXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAjIFdlIGNhbid0IGFjdHVhbGx5ICp1c2UqIHRvbyBtYW55IGhhbmRsZXJzIGluIHRoZSB0ZXN0cywKKyAgICAgICAgIyBidXQgd2UgY2FuIHRyeSBpbnN0YW50aWF0aW5nIHRoZW0gd2l0aCB2YXJpb3VzIG9wdGlvbnMKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBmb3IgZXhpc3RpbmcgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIoZm4sIGRlbGF5PVRydWUpCisgICAgICAgICAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIGRldiwgaW5vID0gaC5kZXYsIGguaW5vCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGV2LCAtMSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbm8sIC0xKQorICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ1Rlc3QnfSkKKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICAgICAgIyBOb3cgcmVtb3ZlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgICAgICAjIFRoZSBuZXh0IGNhbGwgc2hvdWxkIHJlY3JlYXRlIHRoZSBmaWxlLgorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZXYsIC0xKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguaW5vLCAtMSkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBpZiBleGlzdGluZzoKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgIHNvY2tuYW1lID0gJy92YXIvcnVuL3N5c2xvZycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc29ja25hbWUgPSAnL2Rldi9sb2cnCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlcihzb2NrbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZmFjaWxpdHksIGguTE9HX1VTRVIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGgudW5peHNvY2tldCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6ICMgc3lzbG9nZCBtaWdodCBub3QgYmUgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnLCAnUFVUJyk6CisgICAgICAgICAgICBpZiBtZXRob2QgPT0gJ1BVVCc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywgJy9sb2cnLCBtZXRob2QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyKCdsb2NhbGhvc3QnLCAnL2xvZycsIG1ldGhvZCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuQnVmZmVyaW5nSGFuZGxlcigwKQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaC5zaG91bGRGbHVzaChyKSkKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkJ1ZmZlcmluZ0hhbmRsZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnV2F0Y2hlZEZpbGVIYW5kbGVyIG5vdCBhcHByb3ByaWF0ZSBmb3IgV2luZG93cy4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfcmFjZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ2MzIgcmVmZXJzLgorICAgICAgICBkZWYgcmVtb3ZlX2xvb3AoZm5hbWUsIHRyaWVzKToKKyAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKHRyaWVzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDQgKiByYW5kb20ucmFuZGludCgwLCA0KSkKKworICAgICAgICBkZWxfY291bnQgPSA1MDAKKyAgICAgICAgbG9nX2NvdW50ID0gNTAwCisKKyAgICAgICAgZm9yIGRlbGF5IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCcubG9nJywgJ3Rlc3RfbG9nZ2luZy0zLScpCisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgIHJlbW92ZXIgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZW1vdmVfbG9vcCwgYXJncz0oZm4sIGRlbF9jb3VudCkpCisgICAgICAgICAgICByZW1vdmVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHJlbW92ZXIuc3RhcnQoKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1kZWxheSkKKyAgICAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzJykKKyAgICAgICAgICAgIGguc2V0Rm9ybWF0dGVyKGYpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobG9nX2NvdW50KToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNSkKKyAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nJyB9KQorICAgICAgICAgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZW1vdmVyLmpvaW4oKQorICAgICAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCisKK2NsYXNzIEJhZFN0cmVhbShvYmplY3QpOgorICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkZWxpYmVyYXRlIG1pc3Rha2UnKQorCitjbGFzcyBUZXN0U3RyZWFtSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgIGRlZiBoYW5kbGVFcnJvcihzZWxmLCByZWNvcmQpOgorICAgICAgICBzZWxmLmVycm9yX3JlY29yZCA9IHJlY29yZAorCitjbGFzcyBTdHJlYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfZXJyb3JfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIGggPSBUZXN0U3RyZWFtSGFuZGxlcihCYWRTdHJlYW0oKSkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgb2xkX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5lcnJvcl9yZWNvcmQsIHIpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2lvLmdldHZhbHVlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZQorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9sZF9zdGRlcnIKKworIyAtLSBUaGUgZm9sbG93aW5nIHNlY3Rpb24gY291bGQgYmUgbW92ZWQgaW50byBhIHNlcnZlcl9oZWxwZXIucHkgbW9kdWxlCisjIC0tIGlmIGl0IHByb3ZlcyB0byBiZSBvZiB3aWRlciB1dGlsaXR5IHRoYW4ganVzdCB0ZXN0X2xvZ2dpbmcKKworaWYgdGhyZWFkaW5nOgorICAgIGNsYXNzIFRlc3RTTVRQQ2hhbm5lbChzbXRwZC5TTVRQQ2hhbm5lbCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGRlcml2ZWQgY2xhc3MgaGFzIGhhZCB0byBiZSBjcmVhdGVkIGJlY2F1c2Ugc210cGQgZG9lcyBub3QKKyAgICAgICAgc3VwcG9ydCB1c2Ugb2YgY3VzdG9tIGNoYW5uZWwgbWFwcywgYWx0aG91Z2ggdGhleSBhcmUgYWxsb3dlZCBieQorICAgICAgICBhc3luY29yZSdzIGRlc2lnbi4gSXNzdWUgIzExOTU5IGhhcyBiZWVuIHJhaXNlZCB0byBhZGRyZXNzIHRoaXMsCisgICAgICAgIGFuZCBpZiByZXNvbHZlZCBzYXRpc2ZhY3RvcmlseSwgc29tZSBvZiB0aGlzIGNvZGUgY2FuIGJlIHJlbW92ZWQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBzb2NrbWFwKToKKyAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgc29ja21hcCkKKyAgICAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KKyAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKKyAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCisgICAgICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSBzZWxmLkNPTU1BTkQKKyAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCisgICAgICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCisgICAgICAgICAgICBzZWxmLmZxZG4gPSBzb2NrZXQuZ2V0ZnFkbigpCisgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBlZXIgPSBjb25uLmdldHBlZXJuYW1lKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICMgYSByYWNlIGNvbmRpdGlvbiAgbWF5IG9jY3VyIGlmIHRoZSBvdGhlciBlbmQgaXMgY2xvc2luZworICAgICAgICAgICAgICAgICMgYmVmb3JlIHdlIGNhbiBnZXQgdGhlIHBlZXJuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzZWxmLnB1c2goJzIyMCAlcyAlcycgJSAoc2VsZi5mcWRuLCBzbXRwZC5fX3ZlcnNpb25fXykpCisgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBGYWxzZQorCisKKyAgICBjbGFzcyBUZXN0U01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIHRlc3QgU01UUCBzZXJ2ZXIuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgKGhvc3QsIHBvcnQpIHR1cGxlIHdoaWNoIHRoZSBzZXJ2ZXIgbGlzdGVucyBvbi4KKyAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSBhIHBvcnQgdmFsdWUgb2YgemVybzogdGhlIHNlcnZlcidzCisgICAgICAgICAgICAgICAgICAgICAqcG9ydCogYXR0cmlidXRlIHdpbGwgaG9sZCB0aGUgYWN0dWFsIHBvcnQgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICB1c2VkLCB3aGljaCBjYW4gYmUgdXNlZCBpbiBjbGllbnQgY29ubmVjdGlvbnMuCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHRvIHByb2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nIG1lc3NhZ2VzLiBUaGUgaGFuZGxlciB3aWxsIGJlIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNsaWVudCBhZGRyZXNzIHR1cGxlLCB3aG8gdGhlIG1lc3NhZ2UgaXMgZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgbGlzdCBvZiByZWNpcGllbnRzIGFuZCB0aGUgbWVzc2FnZSBkYXRhLgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCB1c2VkIGluIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLgorICAgICAgICA6cGFyYW0gc29ja21hcDogQSBkaWN0aW9uYXJ5IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBob2xkCisgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YGFzeW5jb3JlLmRpc3BhdGNoZXJgIGluc3RhbmNlcyB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgYXN5bmNvcmUubG9vcGAuIFRoaXMgYXZvaWRzIGNoYW5naW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZDpgYXN5bmNvcmVgIG1vZHVsZSdzIGdsb2JhbCBzdGF0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGNoYW5uZWxfY2xhc3MgPSBUZXN0U01UUENoYW5uZWwKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCwgc29ja21hcCk6CisgICAgICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBhZGRyCisgICAgICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gTm9uZQorICAgICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnNvY2ttYXAgPSBzb2NrbWFwCisgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1zb2NrbWFwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICAgICAgc29jay5zZXRibG9ja2luZygwKQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgICAgICAjIHRyeSB0byByZS11c2UgYSBzZXJ2ZXIgcG9ydCBpZiBwb3NzaWJsZQorICAgICAgICAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQorICAgICAgICAgICAgICAgIHNlbGYuYmluZChhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQorICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZXIgPSBoYW5kbGVyCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisKKyAgICAgICAgZGVmIGhhbmRsZV9hY2NlcHRlZChzZWxmLCBjb25uLCBhZGRyKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUmVkZWZpbmVkIG9ubHkgYmVjYXVzZSB0aGUgYmFzZSBjbGFzcyBkb2VzIG5vdCBwYXNzIGluIGEKKyAgICAgICAgICAgIG1hcCwgZm9yY2luZyB1c2Ugb2YgYSBnbG9iYWwgaW4gOm1vZDpgYXN5bmNvcmVgLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsIGNvbm4sIGFkZHIsIHNlbGYuc29ja21hcCkKKworICAgICAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRGVsZWdhdGVzIHRvIHRoZSBoYW5kbGVyIHBhc3NlZCBpbiB0byB0aGUgc2VydmVyJ3MgY29uc3RydWN0b3IuCisKKyAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGJlIGEgdGVzdCBjYXNlIG1ldGhvZC4KKyAgICAgICAgICAgIDpwYXJhbSBwZWVyOiBUaGUgY2xpZW50IChob3N0LCBwb3J0KSB0dXBsZS4KKyAgICAgICAgICAgIDpwYXJhbSBtYWlsZnJvbTogVGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRlci4KKyAgICAgICAgICAgIDpwYXJhbSByY3B0dG9zOiBUaGUgYWRkcmVzc2VzIG9mIHRoZSByZWNpcGllbnRzLgorICAgICAgICAgICAgOnBhcmFtIGRhdGE6IFRoZSBtZXNzYWdlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKQorCisgICAgICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RhcnQgdGhlIHNlcnZlciBydW5uaW5nIG9uIGEgc2VwYXJhdGUgZGFlbW9uIHRocmVhZC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuc2VydmVfZm9yZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYucG9sbF9pbnRlcnZhbCwpKQorICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKKyAgICAgICAgICAgIHQuc3RhcnQoKQorCisgICAgICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYsIHBvbGxfaW50ZXJ2YWwpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBSdW4gdGhlIDptb2Q6YGFzeW5jb3JlYCBsb29wIHVudGlsIG5vcm1hbCB0ZXJtaW5hdGlvbgorICAgICAgICAgICAgY29uZGl0aW9ucyBhcmlzZS4KKyAgICAgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgaW50ZXJ2YWwsIGluIHNlY29uZHMsIHVzZWQgaW4gdGhlIHVuZGVybHlpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgc2VsZWN0YCBvciA6ZnVuYzpgcG9sbGAgY2FsbCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGFzeW5jb3JlLmxvb3AocG9sbF9pbnRlcnZhbCwgbWFwPXNlbGYuc29ja21hcCkKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3I6CisgICAgICAgICAgICAgICAgIyBPbiBGcmVlQlNEIDgsIGNsb3NpbmcgdGhlIHNlcnZlciByZXBlYXRhYmx5CisgICAgICAgICAgICAgICAgIyByYWlzZXMgdGhpcyBlcnJvci4gV2Ugc3dhbGxvdyBpdCBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5jb25uZWN0ZWQgb3Igc2VsZi5hY2NlcHRpbmc6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgU3RvcCB0aGUgdGhyZWFkIGJ5IGNsb3NpbmcgdGhlIHNlcnZlciBpbnN0YW5jZS4KKyAgICAgICAgICAgIFdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KKworICAgICAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IEhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGVybWluYXRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisKKyAgICBjbGFzcyBDb250cm9sTWl4aW4ob2JqZWN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgbWl4aW4gaXMgdXNlZCB0byBzdGFydCBhIHNlcnZlciBvbiBhIHNlcGFyYXRlIHRocmVhZCwgYW5kCisgICAgICAgIHNodXQgaXQgZG93biBwcm9ncmFtbWF0aWNhbGx5LiBSZXF1ZXN0IGhhbmRsaW5nIGlzIHNpbXBsaWZpZWQgLSBpbnN0ZWFkCisgICAgICAgIG9mIG5lZWRpbmcgdG8gZGVyaXZlIGEgc3VpdGFibGUgUmVxdWVzdEhhbmRsZXIgc3ViY2xhc3MsIHlvdSBqdXN0CisgICAgICAgIHByb3ZpZGUgYSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIHBhc3NlZCBlYWNoIHJlY2VpdmVkIHJlcXVlc3QgdG8gYmUKKyAgICAgICAgcHJvY2Vzc2VkLgorCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4gVGhpcyBoYW5kbGVyIGlzIGNhbGxlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciB0aHJlYWQsIGVmZmVjdGl2ZWx5IG1lYW5pbmcgdGhhdCByZXF1ZXN0cyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZCBzZXJpYWxseS4gV2hpbGUgbm90IHF1aXRlIFdlYiBzY2FsZSA7LSksCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHNob3VsZCBiZSBmaW5lIGZvciB0ZXN0aW5nIGFwcGxpY2F0aW9ucy4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGluIHNlY29uZHMuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLnBvbGxfaW50ZXJ2YWwgPSBwb2xsX2ludGVydmFsCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi5yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDcmVhdGUgYSBkYWVtb24gdGhyZWFkIHRvIHJ1biB0aGUgc2VydmVyLCBhbmQgc3RhcnQgaXQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlX2ZvcmV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnBvbGxfaW50ZXJ2YWwsKSkKKyAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUnVuIHRoZSBzZXJ2ZXIuIFNldCB0aGUgcmVhZHkgZmxhZyBiZWZvcmUgZW50ZXJpbmcgdGhlCisgICAgICAgICAgICBzZXJ2aWNlIGxvb3AuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYucmVhZHkuc2V0KCkKKyAgICAgICAgICAgIHN1cGVyKENvbnRyb2xNaXhpbiwgc2VsZikuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRlbGwgdGhlIHNlcnZlciB0aHJlYWQgdG8gc3RvcCwgYW5kIHdhaXQgZm9yIGl0IHRvIGRvIHNvLgorCisgICAgICAgICAgICA6cGFyYW0gdGltZW91dDogSG93IGxvbmcgdG8gd2FpdCBmb3IgdGhlIHNlcnZlciB0aHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0ZXJtaW5hdGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuc2h1dGRvd24oKQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5yZWFkeS5jbGVhcigpCisKKyAgICBjbGFzcyBUZXN0SFRUUFNlcnZlcihDb250cm9sTWl4aW4sIEhUVFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQW4gSFRUUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRoZSByZXF1ZXN0LgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcy4KKyAgICAgICAgOnBhcmFtIGxvZzogUGFzcyBgYFRydWVgYCB0byBlbmFibGUgbG9nIG1lc3NhZ2VzLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgbG9nPUZhbHNlLCBzc2xjdHg9Tm9uZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lLCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ2RvXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucHJvY2Vzc19yZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorCisgICAgICAgICAgICAgICAgZGVmIGxvZ19tZXNzYWdlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgorICAgICAgICAgICAgICAgICAgICBpZiBsb2c6CisgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcihEZWxlZ2F0aW5nSFRUUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikubG9nX21lc3NhZ2UoZm9ybWF0LCAqYXJncykKKyAgICAgICAgICAgIEhUVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcikKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgc2VsZi5zc2xjdHggPSBzc2xjdHgKKworICAgICAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc29jaywgYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zc2xjdHg6CisgICAgICAgICAgICAgICAgICAgIHNvY2sgPSBzZWxmLnNzbGN0eC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgc29ja2V0IGVycm9ycyBhcmUgc2lsZW5jZWQgYnkgdGhlIGNhbGxlciwgcHJpbnQgdGhlbSBoZXJlCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiR290IGFuIGVycm9yOlxuJXNcbiIgJSBlKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICByZXR1cm4gc29jaywgYWRkcgorCisgICAgY2xhc3MgVGVzdFRDUFNlcnZlcihDb250cm9sTWl4aW4sIFRocmVhZGluZ1RDUFNlcnZlcik6CisgICAgICAgICIiIgorICAgICAgICBBIFRDUCBzZXJ2ZXIgd2hpY2ggaXMgY29udHJvbGxhYmxlIHVzaW5nIDpjbGFzczpgQ29udHJvbE1peGluYC4KKworICAgICAgICA6cGFyYW0gYWRkcjogQSB0dXBsZSB3aXRoIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIGxpc3RlbiBvbi4KKyAgICAgICAgOnBhcmFtIGhhbmRsZXI6IEEgaGFuZGxlciBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgLSB0aGUgcmVxdWVzdCAtIGluIG9yZGVyIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLgorICAgICAgICA6YmluZF9hbmRfYWN0aXZhdGU6IElmIFRydWUgKHRoZSBkZWZhdWx0KSwgYmluZHMgdGhlIHNlcnZlciBhbmQgc3RhcnRzIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuaW5nLiBJZiBGYWxzZSwgeW91IG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kIDptZXRoOmBzZXJ2ZXJfYWN0aXZhdGVgIGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBsYXRlciB0aW1lIGJlZm9yZSBjYWxsaW5nIDptZXRoOmBzdGFydGAsIHNvIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyIHdpbGwgc2V0IHVwIHRoZSBzb2NrZXQgYW5kIGxpc3RlbiBvbiBpdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IFRydWUKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorICAgICAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIERlbGVnYXRpbmdUQ1BSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RUQ1BTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgIGNsYXNzIFRlc3RVRFBTZXJ2ZXIoQ29udHJvbE1peGluLCBUaHJlYWRpbmdVRFBTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBVRFAgc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGZvciBzaHV0ZG93biByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlY29uZHMuCisgICAgICAgIDpiaW5kX2FuZF9hY3RpdmF0ZTogSWYgVHJ1ZSAodGhlIGRlZmF1bHQpLCBiaW5kcyB0aGUgc2VydmVyIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0cyBpdCBsaXN0ZW5pbmcuIElmIEZhbHNlLCB5b3UgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBhdCBzb21lIGxhdGVyIHRpbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgY2FsbGluZyA6bWV0aDpgc3RhcnRgLCBzbyB0aGF0IHRoZSBzZXJ2ZXIgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCB0aGUgc29ja2V0IGFuZCBsaXN0ZW4gb24gaXQuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbD0wLjUsCisgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgIGNsYXNzIERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlcihEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKToKKworICAgICAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLl9oYW5kbGVyKHNlbGYpCisKKyAgICAgICAgICAgICAgICBkZWYgZmluaXNoKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi53ZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLCBzZWxmKS5maW5pc2goKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zZXJ2ZXIuX2Nsb3NlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgVGhyZWFkaW5nVURQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVsZWdhdGluZ1VEUFJlcXVlc3RIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgQ29udHJvbE1peGluLl9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RVRFBTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9iaW5kKCkKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKworICAgICAgICBkZWYgc2VydmVyX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoVGVzdFVEUFNlcnZlciwgc2VsZikuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZCA9IFRydWUKKworIyAtIGVuZCBvZiBzZXJ2ZXJfaGVscGVyIHNlY3Rpb24KKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNNVFBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNvY2ttYXAgPSB7fQorICAgICAgICBzZXJ2ZXIgPSBUZXN0U01UUFNlcnZlcigoJ2xvY2FsaG9zdCcsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ttYXApCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0KQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5TTVRQSGFuZGxlcihhZGRyLCAnbWUnLCAneW91JywgJ0xvZycsIHRpbWVvdXQ9NS4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgudG9hZGRycywgWyd5b3UnXSkKKyAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnSGVsbG8nfSkKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoNS4wKSAgIyAxNDMxNDogZG9uJ3Qgd2FpdCBmb3JldmVyCisgICAgICAgIHNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaGFuZGxlZC5pc19zZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5tZXNzYWdlcyksIDEpCisgICAgICAgIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhID0gc2VsZi5tZXNzYWdlc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxmcm9tLCAnbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjcHR0b3MsIFsneW91J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuU3ViamVjdDogTG9nXG4nLCBkYXRhKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGF0YS5lbmRzd2l0aCgnXG5cbkhlbGxvJykpCisgICAgICAgIGguY2xvc2UoKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYubWVzc2FnZXMuYXBwZW5kKGFyZ3MpCisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCiBjbGFzcyBNZW1vcnlIYW5kbGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0cyBmb3IgdGhlIE1lbW9yeUhhbmRsZXIuIiIiCkBAIC01MjUsNyArMTAxOCw3IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKICAgICAgICAgIyBUaGlzIHdpbGwgZmx1c2ggYmVjYXVzZSB0aGUgbGV2ZWwgaXMgPj0gbG9nZ2luZy5XQVJOSU5HCi0gICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci53YXJuaW5nKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIGxpbmVzID0gWwogICAgICAgICAgICAgKCdERUJVRycsICcxJyksCiAgICAgICAgICAgICAoJ0lORk8nLCAnMicpLApAQCAtODcwLDY4ICsxMzYzLDYgQEAKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKIAotY2xhc3MgTG9nUmVjb3JkU3RyZWFtSGFuZGxlcihTdHJlYW1SZXF1ZXN0SGFuZGxlcik6Ci0KLSAgICAiIiJIYW5kbGVyIGZvciBhIHN0cmVhbWluZyBsb2dnaW5nIHJlcXVlc3QuIEl0IHNhdmVzIHRoZSBsb2cgbWVzc2FnZSBpbiB0aGUKLSAgICBUQ1Agc2VydmVyJ3MgJ2xvZ19vdXRwdXQnIGF0dHJpYnV0ZS4iIiIKLQotICAgIFRDUF9MT0dfRU5EID0gIiEhIUVORCEhISIKLQotICAgIGRlZiBoYW5kbGUoc2VsZik6Ci0gICAgICAgICIiIkhhbmRsZSBtdWx0aXBsZSByZXF1ZXN0cyAtIGVhY2ggZXhwZWN0ZWQgdG8gYmUgb2YgNC1ieXRlIGxlbmd0aCwKLSAgICAgICAgZm9sbG93ZWQgYnkgdGhlIExvZ1JlY29yZCBpbiBwaWNrbGUgZm9ybWF0LiBMb2dzIHRoZSByZWNvcmQKLSAgICAgICAgYWNjb3JkaW5nIHRvIHdoYXRldmVyIHBvbGljeSBpcyBjb25maWd1cmVkIGxvY2FsbHkuIiIiCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KDQpCi0gICAgICAgICAgICBpZiBsZW4oY2h1bmspIDwgNDoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2xlbiA9IHN0cnVjdC51bnBhY2soIj5MIiwgY2h1bmspWzBdCi0gICAgICAgICAgICBjaHVuayA9IHNlbGYuY29ubmVjdGlvbi5yZWN2KHNsZW4pCi0gICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgc2VsZi5jb25uZWN0aW9uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCi0gICAgICAgICAgICBvYmogPSBzZWxmLnVucGlja2xlKGNodW5rKQotICAgICAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX2xvZ19yZWNvcmQocmVjb3JkKQotCi0gICAgZGVmIHVucGlja2xlKHNlbGYsIGRhdGEpOgotICAgICAgICByZXR1cm4gcGlja2xlLmxvYWRzKGRhdGEpCi0KLSAgICBkZWYgaGFuZGxlX2xvZ19yZWNvcmQoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgIyBJZiB0aGUgZW5kLW9mLW1lc3NhZ2VzIHNlbnRpbmVsIGlzIHNlZW4sIHRlbGwgdGhlIHNlcnZlciB0bwotICAgICAgICAjICB0ZXJtaW5hdGUuCi0gICAgICAgIGlmIHNlbGYuVENQX0xPR19FTkQgaW4gcmVjb3JkLm1zZzoKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLmFib3J0ID0gMQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuc2VydmVyLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICJcbiIKLQotCi1jbGFzcyBMb2dSZWNvcmRTb2NrZXRSZWNlaXZlcihUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgotCi0gICAgIiIiQSBzaW1wbGUtbWluZGVkIFRDUCBzb2NrZXQtYmFzZWQgbG9nZ2luZyByZWNlaXZlciBzdWl0YWJsZSBmb3IgdGVzdAotICAgIHB1cnBvc2VzLiIiIgotCi0gICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEKLSAgICBsb2dfb3V0cHV0ID0gIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSdsb2NhbGhvc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0PWxvZ2dpbmcuaGFuZGxlcnMuREVGQVVMVF9UQ1BfTE9HR0lOR19QT1JULAotICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcj1Mb2dSZWNvcmRTdHJlYW1IYW5kbGVyKToKLSAgICAgICAgVGhyZWFkaW5nVENQU2VydmVyLl9faW5pdF9fKHNlbGYsIChob3N0LCBwb3J0KSwgaGFuZGxlcikKLSAgICAgICAgc2VsZi5hYm9ydCA9IEZhbHNlCi0gICAgICAgIHNlbGYudGltZW91dCA9IDAuMQotICAgICAgICBzZWxmLmZpbmlzaGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKLQotICAgIGRlZiBzZXJ2ZV91bnRpbF9zdG9wcGVkKHNlbGYpOgotICAgICAgICB3aGlsZSBub3Qgc2VsZi5hYm9ydDoKLSAgICAgICAgICAgIHJkLCB3ciwgZXggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNvY2tldC5maWxlbm8oKV0sIFtdLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCkKLSAgICAgICAgICAgIGlmIHJkOgotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAjIE5vdGlmeSB0aGUgbWFpbiB0aHJlYWQgdGhhdCB3ZSdyZSBhYm91dCB0byBleGl0Ci0gICAgICAgIHNlbGYuZmluaXNoZWQuc2V0KCkKLSAgICAgICAgIyBjbG9zZSB0aGUgbGlzdGVuIHNvY2tldAotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCi0KIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFNvY2tldEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKQEAgLTk0Miw0NCArMTM3MywyNzAgQEAKICAgICAgICAgIiIiU2V0IHVwIGEgVENQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgU29ja2V0SGFuZGxlcgogICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCi0gICAgICAgIHNlbGYudGNwc2VydmVyID0gTG9nUmVjb3JkU29ja2V0UmVjZWl2ZXIocG9ydD0wKQotICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnRjcHNlcnZlci5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQotICAgICAgICBzZWxmLnRocmVhZHMgPSBbCi0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi50Y3BzZXJ2ZXIuc2VydmVfdW50aWxfc3RvcHBlZCldCi0gICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgotICAgICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKLQotICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuU29ja2V0SGFuZGxlcignbG9jYWxob3N0Jywgc2VsZi5wb3J0KQotICAgICAgICBzZWxmLnNvY2tfaGRsci5zZXRGb3JtYXR0ZXIoc2VsZi5yb290X2Zvcm1hdHRlcikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VENQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlNvY2tldEhhbmRsZXIoJ2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJwogICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuU2VtYXBob3JlKDApCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgICIiIlNodXRkb3duIHRoZSBUQ1Agc2VydmVyLiIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnRjcHNlcnZlci5hYm9ydCA9IFRydWUKLSAgICAgICAgICAgIGRlbCBzZWxmLnRjcHNlcnZlcgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCiAgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCiAgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCi0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKLSAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigyLjApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZik6Ci0gICAgICAgICIiIkdldCB0aGUgbG9nIG91dHB1dCBhcyByZWNlaXZlZCBieSB0aGUgVENQIHNlcnZlci4iIiIKLSAgICAgICAgIyBTaWduYWwgdGhlIFRDUCByZWNlaXZlciBhbmQgd2FpdCBmb3IgaXQgdG8gdGVybWluYXRlLgotICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmNyaXRpY2FsKExvZ1JlY29yZFN0cmVhbUhhbmRsZXIuVENQX0xPR19FTkQpCi0gICAgICAgIHNlbGYudGNwc2VydmVyLmZpbmlzaGVkLndhaXQoMi4wKQotICAgICAgICByZXR1cm4gc2VsZi50Y3BzZXJ2ZXIubG9nX291dHB1dAorICAgIGRlZiBoYW5kbGVfc29ja2V0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBjb25uID0gcmVxdWVzdC5jb25uZWN0aW9uCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdig0KQorICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA8IDQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3Yoc2xlbikKKyAgICAgICAgICAgIHdoaWxlIGxlbihjaHVuaykgPCBzbGVuOgorICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmsgKyBjb25uLnJlY3Yoc2xlbiAtIGxlbihjaHVuaykpCisgICAgICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMoY2h1bmspCisgICAgICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICAgICAgc2VsZi5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAnXG4nCisgICAgICAgICAgICBzZWxmLmhhbmRsZWQucmVsZWFzZSgpCiAKICAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIFNvY2tldEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCiAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0Y3AiKQogICAgICAgICBsb2dnZXIuZXJyb3IoInNwYW0iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZWdncyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfb3V0cHV0KCksICJzcGFtXG5lZ2dzXG4iKQorICAgICAgICBzZWxmLmhhbmRsZWQuYWNxdWlyZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCAic3BhbVxuZWdnc1xuIikKIAorICAgIGRlZiB0ZXN0X25vc2VydmVyKHNlbGYpOgorICAgICAgICAjIEtpbGwgdGhlIHNlcnZlcgorICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgI1RoZSBsb2dnaW5nIGNhbGwgc2hvdWxkIHRyeSB0byBjb25uZWN0LCB3aGljaCBzaG91bGQgZmFpbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmV4Y2VwdGlvbignTmV2ZXIgc2VudCcpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05ldmVyIHNlbnQsIGVpdGhlcicpCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnNvY2tfaGRsci5yZXRyeVRpbWUgPiBub3cpCisgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5zb2NrX2hkbHIucmV0cnlUaW1lIC0gbm93ICsgMC4wMDEpCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuZXJyb3IoJ05vciB0aGlzJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgRGF0YWdyYW1IYW5kbGVyVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IGZvciBEYXRhZ3JhbUhhbmRsZXIuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlNldCB1cCBhIFVEUCBzZXJ2ZXIgdG8gcmVjZWl2ZSBsb2cgbWVzc2FnZXMsIGFuZCBhIERhdGFncmFtSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFVEUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9kYXRhZ3JhbSwgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNvY2tfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuRGF0YWdyYW1IYW5kbGVyKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSAnJworICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgVURQIHNlcnZlci4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zb2NrX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNvY2tfaGRsci5jbG9zZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBCYXNlVGVzdC50ZWFyRG93bihzZWxmKQorCisgICAgZGVmIGhhbmRsZV9kYXRhZ3JhbShzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2xlbiA9IHN0cnVjdC5wYWNrKCc+TCcsIDApICMgbGVuZ3RoIG9mIHByZWZpeAorICAgICAgICBwYWNrZXQgPSByZXF1ZXN0LnBhY2tldFtsZW4oc2xlbik6XQorICAgICAgICBvYmogPSBwaWNrbGUubG9hZHMocGFja2V0KQorICAgICAgICByZWNvcmQgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQob2JqKQorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgKz0gcmVjb3JkLm1zZyArICdcbicKKyAgICAgICAgc2VsZi5oYW5kbGVkLnNldCgpCisKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIERhdGFncmFtSGFuZGxlciBpcyBwcm9wZXJseSByZWNlaXZlZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInVkcCIpCisgICAgICAgIGxvZ2dlci5lcnJvcigic3BhbSIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJlZ2dzIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFN5c0xvZ0hhbmRsZXJUZXN0KEJhc2VUZXN0KToKKworICAgICIiIlRlc3QgZm9yIFN5c0xvZ0hhbmRsZXIgdXNpbmcgVURQLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQgdXAgYSBVRFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBTeXNMb2dIYW5kbGVyCisgICAgICAgIHBvaW50aW5nIHRvIHRoYXQgc2VydmVyJ3MgYWRkcmVzcyBhbmQgcG9ydC4iIiIKKyAgICAgICAgQmFzZVRlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIgPSBUZXN0VURQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX2RhdGFncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wMSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLnNsX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIoKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIlNodXRkb3duIHRoZSBVRFAgc2VydmVyLiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKDIuMCkKKyAgICAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLnNsX2hkbHIpCisgICAgICAgICAgICBzZWxmLnNsX2hkbHIuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKKworICAgIGRlZiBoYW5kbGVfZGF0YWdyYW0oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYubG9nX291dHB1dCA9IHJlcXVlc3QucGFja2V0CisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBTeXNMb2dIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigic2xoIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+c3BceGMzXHhhNG1ceDAwJykKKyAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgc2VsZi5zbF9oZGxyLmFwcGVuZF9udWwgPSBGYWxzZQorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5zcFx4YzNceGE0bScpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIHNlbGYuc2xfaGRsci5pZGVudCA9ICJoXHhlNG0tIgorICAgICAgICBsb2dnZXIuZXJyb3IoInNwXHhlNG0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfb3V0cHV0LCBiJzwxMT5oXHhjM1x4YTRtLXNwXHhjM1x4YTRtJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSFRUUEhhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICAiIiJUZXN0IGZvciBIVFRQSGFuZGxlci4iIiIKKworICAgIFBFTUZJTEUgPSAiIiItLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitNSUlDWFFJQkFBS0JnUURHVDR4UzVyOTFyYkxKUUsyblVEZW5CaEJHNnFGaytiVk9qdUFHQy9MU0hsQW9CbnZHCit6UUczYWdPRytlN2M1ejJYVDhtMmt0T1JMcUczRTRtWW1ieGd5aERyelA2ZWkyQW5jK3Bzem1ueFBvSzNQdWg1CithWFYrWEt0MGJVMEMxbTIrQUNtR0dKMHQzUDQwOGFydDgybk94Qnc4WkhnSWc5RHRwNnhJVUN5T3F3SURBUUFCCitBb0dCQUpGVG5GYm9hS2g1ZVVySXpqbU5yS3NHNDRqRXl5K3ZXdkhOL0ZnU0M0bDEwM0h4aG1XaXVMNUx2M2Y3CiswdE1wMXRYN0Q2eHZId0lHOVZXdnlLYi9DcTlySnNEaWJtRFZJT3Nsbk9XZVFoRytYd0p5aXRSMHBxL0tsSklCCis1TGpPUmNCdzc5NW9LV09BaTZSY09iMU9ONTl0eXNFRlloQUdRTzlrNlZMNjIxZ1JBa0VBL0diK1lYVUxMcGJzCitwaVhOM3E0emNIemVhVkFObzY5dFVaNlRqYVFxTWVUeEU0dE9ZTTBHMFpvU2VIRWRhUDU5QU9aR0tYWE5HU1F5Cisyei9NZGRjWUdRSkJBTWtqTFNZSXBPTEpZMTFqYThPd3dzd0ZHMmhFekhlMGNTOWJ6bysrUi9qYzFiSEE1UjBZCitpNnZBNWlQaSt3b3BQRnZweXRkQm9sN1V1RUJlNXhacnhXTUNRUUNXeEVMUkhpUDJ5V3BFZUxKM2dHRHpvWE1OCitQeWRXamhSanU3QngzQXprVHRmK0Q2bGF3ejErZUdUdUVzczVpMEpLQmtNRXd2d25OMnMxY2UrRXVGNEpBa0JiCitFOTZoMWxBemtWVzVPQWZZT1BZOFJDUEE5MFpPL2hveWc3UHBTeFIwRUN1RHJnRVJSOGdYSWVZVVlmZWpCa0VhCityYWI0Q2ZSb1ZKS0tNMjhZcS94WkFrQnZ1cTY3MEpSQ3dPZ2ZVVGR3dzdXcGRPUUJZUGt6UWNjc0tOQ3NsUVc4CisvRHlXNnkwNm9RdXNTRU5VdnluVDZkcjNMSnh0L05nWlBoWlgyK2sxZVlEVgorLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJQ0d6Q0NBWVNnQXdJQkFnSUpBSXE4NGEyUS9PdmxNQTBHQ1NxR1NJYjNEUUVCQlFVQU1CUXhFakFRQmdOVgorQkFNVENXeHZZMkZzYUc5emREQWVGdzB4TVRBMU1qRXhNREl6TXpOYUZ3MDNOVEF6TWpFd016VTFNVGRhTUJReAorRWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQQoreGsrTVV1YS9kYTJ5eVVDdHAxQTNwd1lRUnVxaFpQbTFUbzdnQmd2eTBoNVFLQVo3eHMwQnQyb0Rodm51M09jOQorbDAvSnRwTFRrUzZodHhPSm1KbThZTW9RNjh6K25vdGdKM1BxYk01cDhUNkN0ejdvZVdsMWZseXJkRzFOQXRadAordmdBcGhoaWRMZHorTlBHcTdmTnB6c1FjUEdSNENJUFE3YWVzU0ZBc2pxc0NBd0VBQWFOMU1ITXdIUVlEVlIwTworQkJZRUZMV2FVUE82TjdlZkdpdW9TOWkzRFZZY1V3bjBNRVFHQTFVZEl3UTlNRHVBRkxXYVVQTzZON2VmR2l1bworUzlpM0RWWWNVd24wb1Jpa0ZqQVVNUkl3RUFZRFZRUURFd2xzYjJOaGJHaHZjM1NDQ1FDS3ZPR3RrUHpyNVRBTQorQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFNSzV3aFBqTE5RSzFJdnZrODhvcUpxcQorNGY4ODlPd2lrR1AwZVVoT0JoYkZsc1pzK2pxNVlaQzJVekh6K2V2ektCbGdBUDF1NGxQL2NCODVDbmp2V3FNKworMWMvbHl3RkhRNkhPZERlUTFMNzJ0U1lNck5PRzRYTm1MbjBoN3J4NkdvVFU3ZGNGUmZzZWFoQkNxOG12MElEdAorSVJiVHB2bEhXUGpzU3ZIejBaT0gKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiU2V0IHVwIGFuIEhUVFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBIVFRQSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNlbGYuY29tbWFuZCA9IHJlcXVlc3QuY29tbWFuZAorICAgICAgICBzZWxmLmxvZ19kYXRhID0gdXJscGFyc2UocmVxdWVzdC5wYXRoKQorICAgICAgICBpZiBzZWxmLmNvbW1hbmQgPT0gJ1BPU1QnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJsZW4gPSBpbnQocmVxdWVzdC5oZWFkZXJzWydDb250ZW50LUxlbmd0aCddKQorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9kYXRhID0gcmVxdWVzdC5yZmlsZS5yZWFkKHJsZW4pCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X2RhdGEgPSBOb25lCisgICAgICAgIHJlcXVlc3Quc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgIHJlcXVlc3QuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKworICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9nIG1lc3NhZ2Ugc2VudCB0byB0aGUgSFRUUEhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJodHRwIikKKyAgICAgICAgcm9vdF9sb2dnZXIgPSBzZWxmLnJvb3RfbG9nZ2VyCisgICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5yb290X2xvZ2dlci5oYW5kbGVyc1swXSkKKyAgICAgICAgZm9yIHNlY3VyZSBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgYWRkciA9ICgnbG9jYWxob3N0JywgMCkKKyAgICAgICAgICAgIGlmIHNlY3VyZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBzc2wKKyAgICAgICAgICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZm4sICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5QRU1GSUxFKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgICAgICAgICBzc2xjdHgubG9hZF9jZXJ0X2NoYWluKGZuKQorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICBzc2xjdHggPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNzbGN0eCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdEhUVFBTZXJ2ZXIoYWRkciwgc2VsZi5oYW5kbGVfcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAxLCBzc2xjdHg9c3NsY3R4KQorICAgICAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0OiVkJyAlIHNlcnZlci5zZXJ2ZXJfcG9ydAorICAgICAgICAgICAgc2VjdXJlX2NsaWVudCA9IHNlY3VyZSBhbmQgc3NsY3R4CisgICAgICAgICAgICBzZWxmLmhfaGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuSFRUUEhhbmRsZXIoaG9zdCwgJy9mcm9iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cmU9c2VjdXJlX2NsaWVudCkKKyAgICAgICAgICAgIHNlbGYubG9nX2RhdGEgPSBOb25lCisgICAgICAgICAgICByb290X2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYuaF9oZGxyKQorCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnR0VUJywgJ1BPU1QnKToKKyAgICAgICAgICAgICAgICBzZWxmLmhfaGRsci5tZXRob2QgPSBtZXRob2QKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZWQuY2xlYXIoKQorICAgICAgICAgICAgICAgIG1zZyA9ICJzcFx4ZTRtIgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2dfZGF0YS5wYXRoLCAnL2Zyb2InKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21tYW5kLCBtZXRob2QpCisgICAgICAgICAgICAgICAgaWYgbWV0aG9kID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5sb2dfZGF0YS5xdWVyeSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkID0gcGFyc2VfcXMoc2VsZi5wb3N0X2RhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnbmFtZSddLCBbJ2h0dHAnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ2Z1bmNOYW1lJ10sIFsndGVzdF9vdXRwdXQnXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ21zZyddLCBbbXNnXSkKKworICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5oX2hkbHIpCisgICAgICAgICAgICBzZWxmLmhfaGRsci5jbG9zZSgpCiAKIGNsYXNzIE1lbW9yeVRlc3QoQmFzZVRlc3QpOgogCkBAIC0xMDg3LDI4ICsxNzQ0LDM5IEBACiAgICAgZGVmIHRlc3Rfd2FybmluZ3Moc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzKFRydWUpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQotICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihmaWxlKQotICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJJJ20gd2FybmluZyB5b3UuLi4iKQotICAgICAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCi0gICAgICAgICAgICAgICAgcyA9IGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICAgICAgICAgIGguY2xvc2UoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncywgRmFsc2UpCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN0cmVhbSkKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoKQorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiSSdtIHdhcm5pbmcgeW91Li4uIikKKyAgICAgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgICAgICBzID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZmluZCgiVXNlcldhcm5pbmc6IEknbSB3YXJuaW5nIHlvdS4uLlxuIikgPiAwKQogCi0gICAgICAgICAgICAgICAgI1NlZSBpZiBhbiBleHBsaWNpdCBmaWxlIHVzZXMgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZygiRXhwbGljaXQiLCBVc2VyV2FybmluZywgImR1bW15LnB5IiwgNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSwgIkR1bW15IGxpbmUiKQotICAgICAgICAgICAgICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZHVtbXkucHk6NDI6IFVzZXJXYXJuaW5nOiBFeHBsaWNpdFxuICBEdW1teSBsaW5lXG4iKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhGYWxzZSkKKyAgICAgICAgICAgICNTZWUgaWYgYW4gZXhwbGljaXQgZmlsZSB1c2VzIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgYV9maWxlID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcoIkV4cGxpY2l0IiwgVXNlcldhcm5pbmcsICJkdW1teS5weSIsIDQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9maWxlLCAiRHVtbXkgbGluZSIpCisgICAgICAgICAgICBzID0gYV9maWxlLmdldHZhbHVlKCkKKyAgICAgICAgICAgIGFfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsCisgICAgICAgICAgICAgICAgImR1bW15LnB5OjQyOiBVc2VyV2FybmluZzogRXhwbGljaXRcbiAgRHVtbXkgbGluZVxuIikKKworICAgIGRlZiB0ZXN0X3dhcm5pbmdzX25vX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhUcnVlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuY2FwdHVyZVdhcm5pbmdzLCBGYWxzZSkKKworICAgICAgICAgICAgIyBjb25maXJtIG91ciBhc3N1bXB0aW9uOiBubyBsb2dnZXJzIGFyZSBzZXQKKyAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJweS53YXJuaW5ncyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlci5oYW5kbGVycywgW10pCisKKyAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nKCJFeHBsaWNpdCIsIFVzZXJXYXJuaW5nLCAiZHVtbXkucHkiLCA0MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dlci5oYW5kbGVycyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobG9nZ2VyLmhhbmRsZXJzWzBdLCBsb2dnaW5nLk51bGxIYW5kbGVyKQogCiAKIGRlZiBmb3JtYXRGdW5jKGZvcm1hdCwgZGF0ZWZtdD1Ob25lKToKQEAgLTE5NjEsNiArMjYyOSw3IEBACiAgICAgICAgICAgICBsb2dnaW5nLmNvbmZpZy5zdG9wTGlzdGVuaW5nKCkKICAgICAgICAgICAgIHQuam9pbigyLjApCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMTBfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIoanNvbi5kdW1wcyhzZWxmLmNvbmZpZzEwKSkKQEAgLTE5ODAsNiArMjY0OSw3IEBACiAgICAgICAgICAgICAgICAgKCdFUlJPUicsICc0JyksCiAgICAgICAgICAgICBdLCBzdHJlYW09b3V0cHV0KQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9saXN0ZW5fY29uZmlnXzFfb2soc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodGV4dHdyYXAuZGVkZW50KENvbmZpZ0ZpbGVUZXN0LmNvbmZpZzEpKQpAQCAtMTk5NCw2ICsyNjY0LDI3IEBACiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKKyAgICBkZWYgdGVzdF9iYXNlY29uZmlnKHNlbGYpOgorICAgICAgICBkID0geworICAgICAgICAgICAgJ2F0dXBsZSc6ICgxLCAyLCAzKSwKKyAgICAgICAgICAgICdhbGlzdCc6IFsnYScsICdiJywgJ2MnXSwKKyAgICAgICAgICAgICdhZGljdCc6IHsnZCc6ICdlJywgJ2YnOiAzIH0sCisgICAgICAgICAgICAnbmVzdDEnOiAoJ2cnLCAoJ2gnLCAnaScpLCAnaicpLAorICAgICAgICAgICAgJ25lc3QyJzogWydrJywgWydsJywgJ20nXSwgJ24nXSwKKyAgICAgICAgICAgICduZXN0Myc6IFsnbycsICdjZmc6Ly9hbGlzdCcsICdwJ10sCisgICAgICAgIH0KKyAgICAgICAgYmMgPSBsb2dnaW5nLmNvbmZpZy5CYXNlQ29uZmlndXJhdG9yKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYXR1cGxlWzFdJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWxpc3RbMV0nKSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL25lc3QxWzFdWzBdJyksICdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MlsxXVsxXScpLCAnbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3QuZCcpLCAnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vYWRpY3RbZl0nKSwgMykKKyAgICAgICAgdiA9IGJjLmNvbnZlcnQoJ2NmZzovL25lc3QzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnBvcCgxKSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgYmMuY29udmVydCwgJ2NmZzovL25vc3VjaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly8hJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly9hZGljdFsyXScpCiAKIGNsYXNzIE1hbmFnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9tYW5hZ2VyX2xvZ2dlcmNsYXNzKHNlbGYpOgpAQCAtMjAxMiw2ICsyNzAzLDExIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZWQsIFsnc2hvdWxkIGFwcGVhciBpbiBsb2dnZWQnXSkKIAorICAgIGRlZiB0ZXN0X3NldF9sb2dfcmVjb3JkX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIG1hbiA9IGxvZ2dpbmcuTWFuYWdlcihOb25lKQorICAgICAgICBleHBlY3RlZCA9IG9iamVjdCgpCisgICAgICAgIG1hbi5zZXRMb2dSZWNvcmRGYWN0b3J5KGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbi5sb2dSZWNvcmRGYWN0b3J5LCBleHBlY3RlZCkKIAogY2xhc3MgQ2hpbGRMb2dnZXJUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9jaGlsZF9sb2dnZXJzKHNlbGYpOgpAQCAtMjExMyw2ICsyODA5LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkVSUk9SLCBtZXNzYWdlPScyJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLm1hdGNoZXMobGV2ZWxubz1sb2dnaW5nLkNSSVRJQ0FMLCBtZXNzYWdlPSczJykpCiAKK1pFUk8gPSBkYXRldGltZS50aW1lZGVsdGEoMCkKKworY2xhc3MgVVRDKGRhdGV0aW1lLnR6aW5mbyk6CisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBaRVJPCisKKyAgICBkc3QgPSB1dGNvZmZzZXQKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gJ1VUQycKKwordXRjID0gVVRDKCkKIAogY2xhc3MgRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMjE4Niw2ICsyODk0LDcxIEBACiAgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignYXNjdGltZScsIHN0eWxlPSckJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnVzZXNUaW1lKCkpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0eWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLkZvcm1hdHRlciwgTm9uZSwgTm9uZSwgJ3gnKQorCisgICAgZGVmIHRlc3RfdGltZShzZWxmKToKKyAgICAgICAgciA9IHNlbGYuZ2V0X3JlY29yZCgpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk5MywgNCwgMjEsIDgsIDMsIDAsIDAsIHV0YykKKyAgICAgICAgIyBXZSB1c2UgTm9uZSB0byBpbmRpY2F0ZSB3ZSB3YW50IHRoZSBsb2NhbCB0aW1lem9uZQorICAgICAgICAjIFdlJ3JlIGVzc2VudGlhbGx5IGNvbnZlcnRpbmcgYSBVVEMgdGltZSB0byBsb2NhbCB0aW1lCisgICAgICAgIHIuY3JlYXRlZCA9IHRpbWUubWt0aW1lKGR0LmFzdGltZXpvbmUoTm9uZSkudGltZXR1cGxlKCkpCisgICAgICAgIHIubXNlY3MgPSAxMjMKKyAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAlKG1lc3NhZ2UpcycpCisgICAgICAgIGYuY29udmVydGVyID0gdGltZS5nbXRpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZvcm1hdFRpbWUociksICcxOTkzLTA0LTIxIDA4OjAzOjAwLDEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mb3JtYXRUaW1lKHIsICclWTolZCcpLCAnMTk5MzoyMScpCisgICAgICAgIGYuZm9ybWF0KHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5hc2N0aW1lLCAnMTk5My0wNC0yMSAwODowMzowMCwxMjMnKQorCitjbGFzcyBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKToKKyAgICBkZWYgZm9ybWF0SGVhZGVyKHNlbGYsIHJlY29yZHMpOgorICAgICAgICByZXR1cm4gJ1soJWQpJyAlIGxlbihyZWNvcmRzKQorCisgICAgZGVmIGZvcm1hdEZvb3RlcihzZWxmLCByZWNvcmRzKToKKyAgICAgICAgcmV0dXJuICcoJWQpXScgJSBsZW4ocmVjb3JkcykKKworY2xhc3MgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlY29yZHMgPSBbCisgICAgICAgICAgICBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnb25lJ30pLAorICAgICAgICAgICAgbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3R3byd9KSwKKyAgICAgICAgXQorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZiA9IGxvZ2dpbmcuQnVmZmVyaW5nRm9ybWF0dGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZi5mb3JtYXQoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvbmV0d28nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCisgICAgZGVmIHRlc3RfY3VzdG9tKHNlbGYpOgorICAgICAgICBmID0gVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1soMilvbmV0d28oMildJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKyAgICAgICAgbGYgPSBsb2dnaW5nLkZvcm1hdHRlcignPCUobWVzc2FnZSlzPicpCisgICAgICAgIGYgPSBUZXN0QnVmZmVyaW5nRm9ybWF0dGVyKGxmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdbKDIpPG9uZT48dHdvPigyKV0nLCBmLmZvcm1hdChzZWxmLnJlY29yZHMpKQorCitjbGFzcyBFeGNlcHRpb25UZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICByID0gc2VsZi5yb290X2xvZ2dlcgorICAgICAgICBoID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIHIuYWRkSGFuZGxlcihoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RlbGliZXJhdGUgbWlzdGFrZScpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKCdmYWlsZWQnLCBzdGFja19pbmZvPVRydWUpCisgICAgICAgIHIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgciA9IGgucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5zdGFydHN3aXRoKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCBsYXN0KTpcbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5leGNfdGV4dC5lbmRzd2l0aCgnXG5SdW50aW1lRXJyb3I6ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGliZXJhdGUgbWlzdGFrZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5zdGFja19pbmZvLnN0YXJ0c3dpdGgoJ1N0YWNrIChtb3N0IHJlY2VudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgbGFzdCk6XG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhY2tfaW5mby5lbmRzd2l0aCgnbG9nZ2luZy5leGNlcHRpb24oXCdmYWlsZWRcJywgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhY2tfaW5mbz1UcnVlKScpKQorCisKIGNsYXNzIExhc3RSZXNvcnRUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9sYXN0X3Jlc29ydChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBsYXN0IHJlc29ydCBoYW5kbGVyCkBAIC0yMTk2LDYgKzI5NjksOCBAQAogICAgICAgICBvbGRfcmFpc2VfZXhjZXB0aW9ucyA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICByb290LmRlYnVnKCdUaGlzIHNob3VsZCBub3QgYXBwZWFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICcnKQogICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSFcbicpCiAgICAgICAgICAgICAjTm8gaGFuZGxlcnMgYW5kIG5vIGxhc3QgcmVzb3J0LCBzbyAnTm8gaGFuZGxlcnMnIG1lc3NhZ2UKQEAgLTIyMjAsNiArMjk5NSw1ODYgQEAKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gb2xkX3JhaXNlX2V4Y2VwdGlvbnMKIAogCitjbGFzcyBGYWtlSGFuZGxlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyLCBjYWxsZWQpOgorICAgICAgICBmb3IgbWV0aG9kIGluICgnYWNxdWlyZScsICdmbHVzaCcsICdjbG9zZScsICdyZWxlYXNlJyk6CisgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIG1ldGhvZCwgc2VsZi5yZWNvcmRfY2FsbChpZGVudGlmaWVyLCBtZXRob2QsIGNhbGxlZCkpCisKKyAgICBkZWYgcmVjb3JkX2NhbGwoc2VsZiwgaWRlbnRpZmllciwgbWV0aG9kX25hbWUsIGNhbGxlZCk6CisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgne30gLSB7fScuZm9ybWF0KGlkZW50aWZpZXIsIG1ldGhvZF9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGlubmVyCisKKworY2xhc3MgUmVjb3JkaW5nSGFuZGxlcihsb2dnaW5nLk51bGxIYW5kbGVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihSZWNvcmRpbmdIYW5kbGVyLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYucmVjb3JkcyA9IFtdCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIktlZXAgdHJhY2sgb2YgYWxsIHRoZSBlbWl0dGVkIHJlY29yZHMuIiIiCisgICAgICAgIHNlbGYucmVjb3Jkcy5hcHBlbmQocmVjb3JkKQorCisKK2NsYXNzIFNodXRkb3duVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciB0aGUgc2h1dGRvd24gbWV0aG9kLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihTaHV0ZG93blRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5jYWxsZWQgPSBbXQorCisgICAgICAgIHJhaXNlX2V4Y2VwdGlvbnMgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgbG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIHJhaXNlX2V4Y2VwdGlvbnMpCisKKyAgICBkZWYgcmFpc2VfZXJyb3Ioc2VsZiwgZXJyb3IpOgorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCkKKyAgICAgICAgcmV0dXJuIGlubmVyCisKKyAgICBkZWYgdGVzdF9ub19mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIGNyZWF0ZSBzb21lIGZha2UgaGFuZGxlcnMKKyAgICAgICAgaGFuZGxlcjAgPSBGYWtlSGFuZGxlcigwLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgaGFuZGxlcjEgPSBGYWtlSGFuZGxlcigxLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgaGFuZGxlcjIgPSBGYWtlSGFuZGxlcigyLCBzZWxmLmNhbGxlZCkKKworICAgICAgICAjIGNyZWF0ZSBsaXZlIHdlYWtyZWYgdG8gdGhvc2UgaGFuZGxlcnMKKyAgICAgICAgaGFuZGxlcnMgPSBtYXAobG9nZ2luZy53ZWFrcmVmLnJlZiwgW2hhbmRsZXIwLCBoYW5kbGVyMSwgaGFuZGxlcjJdKQorCisgICAgICAgIGxvZ2dpbmcuc2h1dGRvd24oaGFuZGxlckxpc3Q9bGlzdChoYW5kbGVycykpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJzIgLSBhY3F1aXJlJywgJzIgLSBmbHVzaCcsICcyIC0gY2xvc2UnLCAnMiAtIHJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAnMSAtIGFjcXVpcmUnLCAnMSAtIGZsdXNoJywgJzEgLSBjbG9zZScsICcxIC0gcmVsZWFzZScsCisgICAgICAgICAgICAgICAgICAgICcwIC0gYWNxdWlyZScsICcwIC0gZmx1c2gnLCAnMCAtIGNsb3NlJywgJzAgLSByZWxlYXNlJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgc2VsZi5jYWxsZWQpCisKKyAgICBkZWYgX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZChzZWxmLCBtZXRob2QsIGVycm9yKToKKyAgICAgICAgaGFuZGxlciA9IEZha2VIYW5kbGVyKDAsIHNlbGYuY2FsbGVkKQorICAgICAgICBzZXRhdHRyKGhhbmRsZXIsIG1ldGhvZCwgc2VsZi5yYWlzZV9lcnJvcihlcnJvcikpCisgICAgICAgIGhhbmRsZXJzID0gW2xvZ2dpbmcud2Vha3JlZi5yZWYoaGFuZGxlcildCisKKyAgICAgICAgbG9nZ2luZy5zaHV0ZG93bihoYW5kbGVyTGlzdD1saXN0KGhhbmRsZXJzKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcwIC0gcmVsZWFzZScsIHNlbGYuY2FsbGVkWy0xXSkKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9hY3F1aXJlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2FjcXVpcmUnLCBJT0Vycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9pb2Vycm9yX2luX2ZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2ZsdXNoJywgSU9FcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIElPRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgVmFsdWVFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfdmFsdWVlcnJvcl9pbl9mbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIFZhbHVlRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBWYWx1ZUVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9hY3F1aXJlX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgSW5kZXhFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fZmx1c2hfd2l0aG91dF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2ZsdXNoJywgSW5kZXhFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fY2xvc2Vfd2l0aG91dF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2Nsb3NlJywgSW5kZXhFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fYWNxdWlyZV93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYWNxdWlyZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2ZsdXNoX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmbHVzaCcsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2Nsb3NlX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZScsIEluZGV4RXJyb3IpCisKKworY2xhc3MgTW9kdWxlTGV2ZWxNaXNjVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciBzb21lIG1vZHVsZSBsZXZlbCBtZXRob2RzLiIiIgorCisgICAgZGVmIHRlc3RfZGlzYWJsZShzZWxmKToKKyAgICAgICAgb2xkX2Rpc2FibGUgPSBsb2dnaW5nLnJvb3QubWFuYWdlci5kaXNhYmxlCisgICAgICAgICMgY29uZmlybSBvdXIgYXNzdW1wdGlvbnMgYXJlIGNvcnJlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvbGRfZGlzYWJsZSwgMCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuZGlzYWJsZSwgb2xkX2Rpc2FibGUpCisKKyAgICAgICAgbG9nZ2luZy5kaXNhYmxlKDgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5tYW5hZ2VyLmRpc2FibGUsIDgzKQorCisgICAgZGVmIF90ZXN0X2xvZyhzZWxmLCBtZXRob2QsIGxldmVsPU5vbmUpOgorICAgICAgICBjYWxsZWQgPSBbXQorICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLAorICAgICAgICAgICAgICBsYW1iZGEgKmEsICoqa3c6IGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkpCisKKyAgICAgICAgcmVjb3JkaW5nID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIGxvZ2dpbmcucm9vdC5hZGRIYW5kbGVyKHJlY29yZGluZykKKworICAgICAgICBsb2dfbWV0aG9kID0gZ2V0YXR0cihsb2dnaW5nLCBtZXRob2QpCisgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nX21ldGhvZChsZXZlbCwgInRlc3QgbWU6ICVyIiwgcmVjb3JkaW5nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nX21ldGhvZCgidGVzdCBtZTogJXIiLCByZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSByZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5nZXRNZXNzYWdlKCksICJ0ZXN0IG1lOiAlciIgJSByZWNvcmRpbmcpCisKKyAgICAgICAgZXhwZWN0ZWRfbGV2ZWwgPSBsZXZlbCBpZiBsZXZlbCBpcyBub3QgTm9uZSBlbHNlIGdldGF0dHIobG9nZ2luZywgbWV0aG9kLnVwcGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGV4cGVjdGVkX2xldmVsKQorCisgICAgICAgICMgYmFzaWNDb25maWcgd2FzIG5vdCBjYWxsZWQhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLCBbXSkKKworICAgIGRlZiB0ZXN0X2xvZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2xvZycsIGxvZ2dpbmcuRVJST1IpCisKKyAgICBkZWYgdGVzdF9kZWJ1ZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2RlYnVnJykKKworICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdpbmZvJykKKworICAgIGRlZiB0ZXN0X3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCd3YXJuaW5nJykKKworICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnZXJyb3InKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdjcml0aWNhbCcpCisKKyAgICBkZWYgdGVzdF9zZXRfbG9nZ2VyX2NsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuc2V0TG9nZ2VyQ2xhc3MsIG9iamVjdCkKKworICAgICAgICBjbGFzcyBNeUxvZ2dlcihsb2dnaW5nLkxvZ2dlcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbG9nZ2luZy5zZXRMb2dnZXJDbGFzcyhNeUxvZ2dlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExvZ2dlckNsYXNzKCksIE15TG9nZ2VyKQorCisgICAgICAgIGxvZ2dpbmcuc2V0TG9nZ2VyQ2xhc3MobG9nZ2luZy5Mb2dnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMb2dnZXJDbGFzcygpLCBsb2dnaW5nLkxvZ2dlcikKKworY2xhc3MgTG9nUmVjb3JkVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3Rfc3RyX3JlcChzZWxmKToKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgcyA9IHN0cihyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCc8TG9nUmVjb3JkOiAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZW5kc3dpdGgoJz4nKSkKKworICAgIGRlZiB0ZXN0X2RpY3RfYXJnKHNlbGYpOgorICAgICAgICBoID0gUmVjb3JkaW5nSGFuZGxlcigpCisgICAgICAgIHIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIHIuYWRkSGFuZGxlcihoKQorICAgICAgICBkID0geydsZXNzJyA6ICdtb3JlJyB9CisgICAgICAgIGxvZ2dpbmcud2FybmluZygnbGVzcyBpcyAlKGxlc3MpcycsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaC5yZWNvcmRzWzBdLmFyZ3MsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5yZWNvcmRzWzBdLm1lc3NhZ2UsICdsZXNzIGlzIG1vcmUnKQorICAgICAgICByLnJlbW92ZUhhbmRsZXIoaCkKKyAgICAgICAgaC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9tdWx0aXByb2Nlc3Npbmcoc2VsZik6CisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5wcm9jZXNzTmFtZSwgJ01haW5Qcm9jZXNzJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZyBhcyBtcAorICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5wcm9jZXNzTmFtZSwgbXAuY3VycmVudF9wcm9jZXNzKCkubmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfb3B0aW9uYWwoc2VsZik6CisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIE5PVF9OT05FID0gc2VsZi5hc3NlcnRJc05vdE5vbmUKKyAgICAgICAgaWYgdGhyZWFkaW5nOgorICAgICAgICAgICAgTk9UX05PTkUoci50aHJlYWQpCisgICAgICAgICAgICBOT1RfTk9ORShyLnRocmVhZE5hbWUpCisgICAgICAgIE5PVF9OT05FKHIucHJvY2VzcykKKyAgICAgICAgTk9UX05PTkUoci5wcm9jZXNzTmFtZSkKKyAgICAgICAgbG9nX3RocmVhZHMgPSBsb2dnaW5nLmxvZ1RocmVhZHMKKyAgICAgICAgbG9nX3Byb2Nlc3NlcyA9IGxvZ2dpbmcubG9nUHJvY2Vzc2VzCisgICAgICAgIGxvZ19tdWx0aXByb2Nlc3NpbmcgPSBsb2dnaW5nLmxvZ011bHRpcHJvY2Vzc2luZworICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2dnaW5nLmxvZ1RocmVhZHMgPSBGYWxzZQorICAgICAgICAgICAgbG9nZ2luZy5sb2dQcm9jZXNzZXMgPSBGYWxzZQorICAgICAgICAgICAgbG9nZ2luZy5sb2dNdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQorICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgICAgIE5PTkUgPSBzZWxmLmFzc2VydElzTm9uZQorICAgICAgICAgICAgTk9ORShyLnRocmVhZCkKKyAgICAgICAgICAgIE5PTkUoci50aHJlYWROYW1lKQorICAgICAgICAgICAgTk9ORShyLnByb2Nlc3MpCisgICAgICAgICAgICBOT05FKHIucHJvY2Vzc05hbWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsb2dnaW5nLmxvZ1RocmVhZHMgPSBsb2dfdGhyZWFkcworICAgICAgICAgICAgbG9nZ2luZy5sb2dQcm9jZXNzZXMgPSBsb2dfcHJvY2Vzc2VzCisgICAgICAgICAgICBsb2dnaW5nLmxvZ011bHRpcHJvY2Vzc2luZyA9IGxvZ19tdWx0aXByb2Nlc3NpbmcKKworY2xhc3MgQmFzaWNDb25maWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3Qgc3VpdGUgZm9yIGxvZ2dpbmcuYmFzaWNDb25maWcuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKEJhc2ljQ29uZmlnVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLmhhbmRsZXJzID0gbG9nZ2luZy5yb290LmhhbmRsZXJzCisgICAgICAgIHNlbGYuc2F2ZWRfaGFuZGxlcnMgPSBsb2dnaW5nLl9oYW5kbGVycy5jb3B5KCkKKyAgICAgICAgc2VsZi5zYXZlZF9oYW5kbGVyX2xpc3QgPSBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQorICAgICAgICBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwgPSBsb2dnaW5nLnJvb3QubGV2ZWwKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xlYW51cCkKKyAgICAgICAgbG9nZ2luZy5yb290LmhhbmRsZXJzID0gW10KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgZm9yIGggaW4gbG9nZ2luZy5yb290LmhhbmRsZXJzWzpdOgorICAgICAgICAgICAgbG9nZ2luZy5yb290LnJlbW92ZUhhbmRsZXIoaCkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICBzdXBlcihCYXNpY0NvbmZpZ1Rlc3QsIHNlbGYpLnRlYXJEb3duKCkKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICBzZXRhdHRyKGxvZ2dpbmcucm9vdCwgJ2hhbmRsZXJzJywgc2VsZi5oYW5kbGVycykKKyAgICAgICAgbG9nZ2luZy5faGFuZGxlcnMuY2xlYXIoKQorICAgICAgICBsb2dnaW5nLl9oYW5kbGVycy51cGRhdGUoc2VsZi5zYXZlZF9oYW5kbGVycykKKyAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBzZWxmLnNhdmVkX2hhbmRsZXJfbGlzdAorICAgICAgICBsb2dnaW5nLnJvb3QubGV2ZWwgPSBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwKKworICAgIGRlZiB0ZXN0X25vX2t3YXJncyhzZWxmKToKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygpCisKKyAgICAgICAgIyBoYW5kbGVyIGRlZmF1bHRzIHRvIGEgU3RyZWFtSGFuZGxlciB0byBzeXMuc3RkZXJyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dpbmcucm9vdC5oYW5kbGVycyksIDEpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbSwgc3lzLnN0ZGVycikKKworICAgICAgICBmb3JtYXR0ZXIgPSBoYW5kbGVyLmZvcm1hdHRlcgorICAgICAgICAjIGZvcm1hdCBkZWZhdWx0cyB0byBsb2dnaW5nLkJBU0lDX0ZPUk1BVAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlci5fc3R5bGUuX2ZtdCwgbG9nZ2luZy5CQVNJQ19GT1JNQVQpCisgICAgICAgICMgZGF0ZWZtdCBkZWZhdWx0cyB0byBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZvcm1hdHRlci5kYXRlZm10KQorICAgICAgICAjIHN0eWxlIGRlZmF1bHRzIHRvICUKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvcm1hdHRlci5fc3R5bGUsIGxvZ2dpbmcuUGVyY2VudFN0eWxlKQorCisgICAgICAgICMgbGV2ZWwgaXMgbm90IGV4cGxpY2l0bHkgc2V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5yb290LmxldmVsLCBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwpCisKKyAgICBkZWYgdGVzdF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmaWxlbmFtZT0ndGVzdC5sb2cnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dpbmcucm9vdC5oYW5kbGVycyksIDEpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuRmlsZUhhbmRsZXIpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBsb2dnaW5nLkZpbGVIYW5kbGVyKCd0ZXN0LmxvZycsICdhJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGV4cGVjdGVkLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuc3RyZWFtLm1vZGUsIGV4cGVjdGVkLnN0cmVhbS5tb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuc3RyZWFtLm5hbWUsIGV4cGVjdGVkLnN0cmVhbS5uYW1lKQorCisgICAgZGVmIHRlc3RfZmlsZW1vZGUoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZmlsZW5hbWU9J3Rlc3QubG9nJywgZmlsZW1vZGU9J3diJykKKworICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIGV4cGVjdGVkID0gbG9nZ2luZy5GaWxlSGFuZGxlcigndGVzdC5sb2cnLCAnd2InKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoZXhwZWN0ZWQuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0ubW9kZSwgZXhwZWN0ZWQuc3RyZWFtLm1vZGUpCisKKyAgICBkZWYgdGVzdF9zdHJlYW0oc2VsZik6CisgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN0cmVhbS5jbG9zZSkKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhzdHJlYW09c3RyZWFtKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxvZ2dpbmcucm9vdC5oYW5kbGVycyksIDEpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhhbmRsZXIsIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbSwgc3RyZWFtKQorCisgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZvcm1hdD0nZm9vJykKKworICAgICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0uZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0dGVyLl9zdHlsZS5fZm10LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2RhdGVmbXQoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZGF0ZWZtdD0nYmFyJykKKworICAgICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0uZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0dGVyLmRhdGVmbXQsICdiYXInKQorCisgICAgZGVmIHRlc3Rfc3R5bGUoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3R5bGU9JyQnKQorCisgICAgICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXS5mb3JtYXR0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvcm1hdHRlci5fc3R5bGUsIGxvZ2dpbmcuU3RyaW5nVGVtcGxhdGVTdHlsZSkKKworICAgIGRlZiB0ZXN0X2xldmVsKHNlbGYpOgorICAgICAgICBvbGRfbGV2ZWwgPSBsb2dnaW5nLnJvb3QubGV2ZWwKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcucm9vdC5zZXRMZXZlbCwgb2xkX2xldmVsKQorCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9NTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5yb290LmxldmVsLCA1NykKKyAgICAgICAgIyBUZXN0IHRoYXQgc2Vjb25kIGNhbGwgaGFzIG5vIGVmZmVjdAorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPTU4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5sZXZlbCwgNTcpCisKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGUoc2VsZik6CisgICAgICAgIGFzc2VydFJhaXNlcyA9IHNlbGYuYXNzZXJ0UmFpc2VzCisgICAgICAgIGhhbmRsZXJzID0gW2xvZ2dpbmcuU3RyZWFtSGFuZGxlcigpXQorICAgICAgICBzdHJlYW0gPSBzeXMuc3RkZXJyCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmJhc2ljQ29uZmlnLCBmaWxlbmFtZT0ndGVzdC5sb2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW09c3RyZWFtKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgZmlsZW5hbWU9J3Rlc3QubG9nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmJhc2ljQ29uZmlnLCBzdHJlYW09c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVycz1oYW5kbGVycykKKworICAgIGRlZiB0ZXN0X2hhbmRsZXJzKHNlbGYpOgorICAgICAgICBoYW5kbGVycyA9IFsKKyAgICAgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpLAorICAgICAgICAgICAgbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpLAorICAgICAgICAgICAgbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCksCisgICAgICAgIF0KKyAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCkKKyAgICAgICAgaGFuZGxlcnNbMl0uc2V0Rm9ybWF0dGVyKGYpCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoaGFuZGxlcnM9aGFuZGxlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMF0sIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1sxXSwgbG9nZ2luZy5yb290LmhhbmRsZXJzWzFdKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLCBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhhbmRsZXJzWzBdLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaGFuZGxlcnNbMV0uZm9ybWF0dGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzJdLmZvcm1hdHRlciwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1swXS5mb3JtYXR0ZXIsIGhhbmRsZXJzWzFdLmZvcm1hdHRlcikKKworICAgIGRlZiBfdGVzdF9sb2coc2VsZiwgbWV0aG9kLCBsZXZlbD1Ob25lKToKKyAgICAgICAgIyBsb2dnaW5nLnJvb3QgaGFzIG5vIGhhbmRsZXJzIHNvIGJhc2ljQ29uZmlnIHNob3VsZCBiZSBjYWxsZWQKKyAgICAgICAgY2FsbGVkID0gW10KKworICAgICAgICBvbGRfYmFzaWNfY29uZmlnID0gbG9nZ2luZy5iYXNpY0NvbmZpZworICAgICAgICBkZWYgbXlfYmFzaWNfY29uZmlnKCphLCAqKmt3KToKKyAgICAgICAgICAgIG9sZF9iYXNpY19jb25maWcoKQorICAgICAgICAgICAgb2xkX2xldmVsID0gbG9nZ2luZy5yb290LmxldmVsCisgICAgICAgICAgICBsb2dnaW5nLnJvb3Quc2V0TGV2ZWwoMTAwKSAgIyBhdm9pZCBoYXZpbmcgbWVzc2FnZXMgaW4gc3RkZXJyCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5yb290LnNldExldmVsLCBvbGRfbGV2ZWwpCisgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKChhLCBrdykpCisKKyAgICAgICAgcGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywgbXlfYmFzaWNfY29uZmlnKQorCisgICAgICAgIGxvZ19tZXRob2QgPSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZCkKKyAgICAgICAgaWYgbGV2ZWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2dfbWV0aG9kKGxldmVsLCAidGVzdCBtZSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dfbWV0aG9kKCJ0ZXN0IG1lIikKKworICAgICAgICAjIGJhc2ljQ29uZmlnIHdhcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsZWQsIFsoKCksIHt9KV0pCisKKyAgICBkZWYgdGVzdF9sb2coc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdsb2cnLCBsb2dnaW5nLldBUk5JTkcpCisKKyAgICBkZWYgdGVzdF9kZWJ1ZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2RlYnVnJykKKworICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdpbmZvJykKKworICAgIGRlZiB0ZXN0X3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCd3YXJuaW5nJykKKworICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnZXJyb3InKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdjcml0aWNhbCcpCisKKworY2xhc3MgTG9nZ2VyQWRhcHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihMb2dnZXJBZGFwdGVyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBvbGRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKworICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcucm9vdAorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKworICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0gPSBvbGRfaGFuZGxlcl9saXN0CisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnNodXRkb3duKQorICAgICAgICBzZWxmLmFkYXB0ZXIgPSBsb2dnaW5nLkxvZ2dlckFkYXB0ZXIobG9nZ2VyPXNlbGYubG9nZ2VyLCBleHRyYT1Ob25lKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAndGVzdGluZyBleGNlcHRpb246ICVyJworICAgICAgICBleGMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorICAgICAgICAgICAgc2VsZi5hZGFwdGVyLmV4Y2VwdGlvbihtc2csIHNlbGYucmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGxvZ2dpbmcuRVJST1IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5hcmdzLCAoc2VsZi5yZWNvcmRpbmcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZXhjX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGV4Yy5fX2NsYXNzX18sIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pKQorCisgICAgZGVmIHRlc3RfY3JpdGljYWwoc2VsZik6CisgICAgICAgIG1zZyA9ICdjcml0aWNhbCB0ZXN0ISAlcicKKyAgICAgICAgc2VsZi5hZGFwdGVyLmNyaXRpY2FsKG1zZywgc2VsZi5yZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGV2ZWxubywgbG9nZ2luZy5DUklUSUNBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubXNnLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmFyZ3MsIChzZWxmLnJlY29yZGluZywpKQorCisgICAgZGVmIHRlc3RfaXNfZW5hYmxlZF9mb3Ioc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUKKyAgICAgICAgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAzMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5hZGFwdGVyLmxvZ2dlci5tYW5hZ2VyLCAnZGlzYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgICBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaXNFbmFibGVkRm9yKDMyKSkKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYWRhcHRlci5oYXNIYW5kbGVycygpKQorCisgICAgICAgIGZvciBoYW5kbGVyIGluIHNlbGYubG9nZ2VyLmhhbmRsZXJzOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmFkYXB0ZXIuaGFzSGFuZGxlcnMoKSkKKworCitjbGFzcyBMb2dnZXJUZXN0KEJhc2VUZXN0KToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoTG9nZ2VyVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLnJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuTG9nZ2VyKG5hbWU9J2JsYWgnKQorICAgICAgICBzZWxmLmxvZ2dlci5hZGRIYW5kbGVyKHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlciwgc2VsZi5yZWNvcmRpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnJlY29yZGluZy5jbG9zZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcuc2h1dGRvd24pCisKKyAgICBkZWYgdGVzdF9zZXRfaW52YWxpZF9sZXZlbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvZ2dlci5zZXRMZXZlbCwgb2JqZWN0KCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG1zZyA9ICd0ZXN0aW5nIGV4Y2VwdGlvbjogJXInCisgICAgICAgIGV4YyA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBleGMgPSBlCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5leGNlcHRpb24obXNnLCBzZWxmLnJlY29yZGluZykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gc2VsZi5yZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBsb2dnaW5nLkVSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuYXJncywgKHNlbGYucmVjb3JkaW5nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKworICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX3dpdGhfcmFpc2Uoc2VsZik6CisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBsb2dnaW5nLCAncmFpc2VFeGVjcHRpb25zJywgb2xkX3JhaXNlKQorCisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9nZ2VyLmxvZywgJzEwJywgJ3Rlc3QgbWVzc2FnZScpCisKKyAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF9ub19yYWlzZShzZWxmKToKKyAgICAgICAgb2xkX3JhaXNlID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGxvZ2dpbmcsICdyYWlzZUV4ZWNwdGlvbnMnLCBvbGRfcmFpc2UpCisKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQorICAgICAgICBzZWxmLmxvZ2dlci5sb2coJzEwJywgJ3Rlc3QgbWVzc2FnZScpICAjIG5vIGV4Y2VwdGlvbiBoYXBwZW5zCisKKyAgICBkZWYgdGVzdF9maW5kX2NhbGxlcl93aXRoX3N0YWNrX2luZm8oc2VsZik6CisgICAgICAgIGNhbGxlZCA9IFtdCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcudHJhY2ViYWNrLCAncHJpbnRfc3RhY2snLAorICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQorCisgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxlZCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJywgY2FsbGVkWzBdKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBydiA9IGxvZ2dpbmcuX2xvZ1JlY29yZEZhY3RvcnkobmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBzaW5mbykKKworICAgICAgICBmb3Iga2V5IGluICgnbWVzc2FnZScsICdhc2N0aW1lJykgKyB0dXBsZShydi5fX2RpY3RfXy5rZXlzKCkpOgorICAgICAgICAgICAgZXh0cmEgPSB7a2V5OiAnc29tZSB2YWx1ZSd9CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2VsZi5sb2dnZXIubWFrZVJlY29yZCwgbmFtZSwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiwgbG5vLCBtc2csIGFyZ3MsIGV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIHNpbmZvPXNpbmZvKQorCisgICAgZGVmIHRlc3RfbWFrZV9yZWNvcmRfd2l0aF9leHRyYV9ub19vdmVyd3JpdGUoc2VsZik6CisgICAgICAgIG5hbWUgPSAnbXkgcmVjb3JkJworICAgICAgICBsZXZlbCA9IDEzCisgICAgICAgIGZuID0gbG5vID0gbXNnID0gYXJncyA9IGV4Y19pbmZvID0gZnVuYyA9IHNpbmZvID0gTm9uZQorICAgICAgICBleHRyYSA9IHsndmFsaWRfa2V5JzogJ3NvbWUgdmFsdWUnfQorICAgICAgICByZXN1bHQgPSBzZWxmLmxvZ2dlci5tYWtlUmVjb3JkKG5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjX2luZm8sIGV4dHJhPWV4dHJhLCBzaW5mbz1zaW5mbykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndmFsaWRfa2V5JywgcmVzdWx0Ll9fZGljdF9fKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpKQorCisgICAgZGVmIHRlc3RfaGFzX2hhbmRsZXJzX25vX3Byb3BhZ2F0ZShzZWxmKToKKyAgICAgICAgY2hpbGRfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2JsYWguY2hpbGQnKQorICAgICAgICBjaGlsZF9sb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjaGlsZF9sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWRfZm9yKHNlbGYpOgorICAgICAgICBvbGRfZGlzYWJsZSA9IHNlbGYubG9nZ2VyLm1hbmFnZXIuZGlzYWJsZQorICAgICAgICBzZWxmLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUgPSAyMworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgc2VsZi5sb2dnZXIubWFuYWdlciwgJ2Rpc2FibGUnLCBvbGRfZGlzYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvZ2dlci5pc0VuYWJsZWRGb3IoMjIpKQorCisgICAgZGVmIHRlc3Rfcm9vdF9sb2dnZXJfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgcm9vdCA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28nKS5yb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vJykucGFyZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ1wwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ2Zvby5iYXInKS5wYXJlbnQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuZ2V0TG9nZ2VyLCBhbnkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5nZXRMb2dnZXIsIGInZm9vJykKKworCiBjbGFzcyBCYXNlRmlsZVRlc3QoQmFzZVRlc3QpOgogICAgICJCYXNlIGNsYXNzIGZvciBoYW5kbGVyIHRlc3RzIHRoYXQgd3JpdGUgbG9nIGZpbGVzIgogCkBAIC0yMjM5LDEwICszNTk0LDIxIEBACiAgICAgZGVmIGFzc2VydExvZ0ZpbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiQXNzZXJ0IGEgbG9nIGZpbGUgaXMgdGhlcmUgYW5kIHJlZ2lzdGVyIGl0IGZvciBkZWxldGlvbiIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTG9nIGZpbGUgJXIgZG9lcyBub3QgZXhpc3QiKQorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMb2cgZmlsZSAlciBkb2VzIG5vdCBleGlzdCIgJSBmaWxlbmFtZSkKICAgICAgICAgc2VsZi5ybWZpbGVzLmFwcGVuZChmaWxlbmFtZSkKIAogCitjbGFzcyBGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKKyAgICBkZWYgdGVzdF9kZWxheShzZWxmKToKKyAgICAgICAgb3MudW5saW5rKHNlbGYuZm4pCisgICAgICAgIGZoID0gbG9nZ2luZy5GaWxlSGFuZGxlcihzZWxmLmZuLCBkZWxheT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5mbikpCisgICAgICAgIGZoLmhhbmRsZShsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaC5zdHJlYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuKSkKKyAgICAgICAgZmguY2xvc2UoKQorCiBjbGFzcyBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgogICAgIGRlZiBuZXh0X3JlYyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxvZ2dpbmcuTG9nUmVjb3JkKCduJywgbG9nZ2luZy5ERUJVRywgJ3AnLCAxLApAQCAtMjI2OCwyMCArMzYzNCwxMTcgQEAKICAgICAgICAgcmguY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfcm9sbG92ZXJfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICBkZWYgbmFtZXIobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSArICIudGVzdCIKICAgICAgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCiAgICAgICAgICAgICBzZWxmLmZuLCBiYWNrdXBDb3VudD0yLCBtYXhCeXRlcz0xKQorICAgICAgICByaC5uYW1lciA9IG5hbWVyCiAgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQogICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKICAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4xIikKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKG5hbWVyKHNlbGYuZm4gKyAiLjEiKSkKICAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuICsgIi4yIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLmZuICsgIi4zIikpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShuYW1lcihzZWxmLmZuICsgIi4yIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobmFtZXIoc2VsZi5mbiArICIuMyIpKSkKKyAgICAgICAgcmguY2xvc2UoKQorCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdF9yb3RhdG9yKHNlbGYpOgorICAgICAgICBkZWYgbmFtZXIobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSArICIuZ3oiCisKKyAgICAgICAgZGVmIHJvdGF0b3Ioc291cmNlLCBkZXN0KToKKyAgICAgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICJyYiIpIGFzIHNmOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZi5yZWFkKCkKKyAgICAgICAgICAgICAgICBjb21wcmVzc2VkID0gemxpYi5jb21wcmVzcyhkYXRhLCA5KQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0LCAid2IiKSBhcyBkZjoKKyAgICAgICAgICAgICAgICAgICAgZGYud3JpdGUoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIG9zLnJlbW92ZShzb3VyY2UpCisKKyAgICAgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoCisgICAgICAgICAgICBzZWxmLmZuLCBiYWNrdXBDb3VudD0yLCBtYXhCeXRlcz0xKQorICAgICAgICByaC5yb3RhdG9yID0gcm90YXRvcgorICAgICAgICByaC5uYW1lciA9IG5hbWVyCisgICAgICAgIG0xID0gc2VsZi5uZXh0X3JlYygpCisgICAgICAgIHJoLmVtaXQobTEpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuKQorICAgICAgICBtMiA9IHNlbGYubmV4dF9yZWMoKQorICAgICAgICByaC5lbWl0KG0yKQorICAgICAgICBmbiA9IG5hbWVyKHNlbGYuZm4gKyAiLjEiKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoZm4pCisgICAgICAgIG5ld2xpbmUgPSBvcy5saW5lc2VwCisgICAgICAgIHdpdGggb3BlbihmbiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgiYXNjaWkiKSwgbTEubXNnICsgbmV3bGluZSkKKyAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCisgICAgICAgIGZuID0gbmFtZXIoc2VsZi5mbiArICIuMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShmbikKKyAgICAgICAgd2l0aCBvcGVuKGZuLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGYucmVhZCgpCisgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCJhc2NpaSIpLCBtMS5tc2cgKyBuZXdsaW5lKQorICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKKyAgICAgICAgZm4gPSBuYW1lcihzZWxmLmZuICsgIi4yIikKKyAgICAgICAgd2l0aCBvcGVuKGZuLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGYucmVhZCgpCisgICAgICAgICAgICBkYXRhID0gemxpYi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCJhc2NpaSIpLCBtMi5tc2cgKyBuZXdsaW5lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCiAgICAgICAgIHJoLmNsb3NlKCkKIAogY2xhc3MgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdChCYXNlRmlsZVRlc3QpOgotICAgICMgdGVzdCBtZXRob2RzIGFkZGVkIGJlbG93Ci0gICAgcGFzcworICAgICMgb3RoZXIgdGVzdCBtZXRob2RzIGFkZGVkIGJlbG93CisgICAgZGVmIHRlc3Rfcm9sbG92ZXIoc2VsZik6CisgICAgICAgIGZoID0gbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIoc2VsZi5mbiwgJ1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cENvdW50PTEpCisgICAgICAgIGZtdCA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpcyAlKG1lc3NhZ2UpcycpCisgICAgICAgIGZoLnNldEZvcm1hdHRlcihmbXQpCisgICAgICAgIHIxID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3Rlc3RpbmcgLSBpbml0aWFsJ30pCisgICAgICAgIGZoLmVtaXQocjEpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShzZWxmLmZuKQorICAgICAgICB0aW1lLnNsZWVwKDEuMSkgICAgIyBhIGxpdHRsZSBvdmVyIGEgc2Vjb25kIC4uLgorICAgICAgICByMiA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nIC0gYWZ0ZXIgZGVsYXknfSkKKyAgICAgICAgZmguZW1pdChyMikKKyAgICAgICAgZmguY2xvc2UoKQorICAgICAgICAjIEF0IHRoaXMgcG9pbnQsIHdlIHNob3VsZCBoYXZlIGEgcmVjZW50IHJvdGF0ZWQgZmlsZSB3aGljaCB3ZQorICAgICAgICAjIGNhbiB0ZXN0IGZvciB0aGUgZXhpc3RlbmNlIG9mLiBIb3dldmVyLCBpbiBwcmFjdGljZSwgb24gc29tZQorICAgICAgICAjIG1hY2hpbmVzIHdoaWNoIHJ1biByZWFsbHkgc2xvd2x5LCB3ZSBkb24ndCBrbm93IGhvdyBmYXIgYmFjaworICAgICAgICAjIGluIHRpbWUgdG8gZ28gdG8gbG9vayBmb3IgdGhlIGxvZyBmaWxlLiBTbywgd2UgZ28gYmFjayBhIGZhaXIKKyAgICAgICAgIyBiaXQsIGFuZCBzdG9wIGFzIHNvb24gYXMgd2Ugc2VlIGEgcm90YXRlZCBmaWxlLiBJbiB0aGVvcnkgdGhpcworICAgICAgICAjIGNvdWxkIG9mIGNvdXJzZSBzdGlsbCBmYWlsLCBidXQgdGhlIGNoYW5jZXMgYXJlIGxvd2VyLgorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisgICAgICAgIEdPX0JBQ0sgPSA1ICogNjAgIyBzZWNvbmRzCisgICAgICAgIGZvciBzZWNzIGluIHJhbmdlKEdPX0JBQ0spOgorICAgICAgICAgICAgcHJldiA9IG5vdyAtIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPXNlY3MpCisgICAgICAgICAgICBmbiA9IHNlbGYuZm4gKyBwcmV2LnN0cmZ0aW1lKCIuJVktJW0tJWRfJUgtJU0tJVMiKQorICAgICAgICAgICAgZm91bmQgPSBvcy5wYXRoLmV4aXN0cyhmbikKKyAgICAgICAgICAgIGlmIGZvdW5kOgorICAgICAgICAgICAgICAgIHNlbGYucm1maWxlcy5hcHBlbmQoZm4pCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbXNnID0gJ05vIHJvdGF0ZWQgZmlsZXMgZm91bmQsIHdlbnQgYmFjayAlZCBzZWNvbmRzJyAlIEdPX0JBQ0sKKyAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgI3ByaW50IGFkZGl0aW9uYWwgZGlhZ25vc3RpY3MKKyAgICAgICAgICAgIGRuLCBmbiA9IG9zLnBhdGguc3BsaXQoc2VsZi5mbikKKyAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gb3MubGlzdGRpcihkbikgaWYgZi5zdGFydHN3aXRoKGZuKV0KKyAgICAgICAgICAgIHByaW50KCdUZXN0IHRpbWU6ICVzJyAlIG5vdy5zdHJmdGltZSgiJVktJW0tJWQgJUgtJU0tJVMiKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcHJpbnQoJ1RoZSBvbmx5IG1hdGNoaW5nIGZpbGVzIGFyZTogJXMnICUgZmlsZXMsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHByaW50KCdDb250ZW50cyBvZiAlczonICUgZikKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRuLCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncicpIGFzIHRmOgorICAgICAgICAgICAgICAgICAgICBwcmludCh0Zi5yZWFkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgbXNnPW1zZykKKworICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6CisgICAgICAgIGFzc2VydFJhaXNlcyA9IHNlbGYuYXNzZXJ0UmFpc2VzCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdYJywgZGVsYXk9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbiwgJ1cnLCBkZWxheT1UcnVlKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZuLCAnVzcnLCBkZWxheT1UcnVlKQogCiBkZWYgc2VjcygqKmt3KToKICAgICByZXR1cm4gZGF0ZXRpbWUudGltZWRlbHRhKCoqa3cpIC8vIGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPTEpCkBAIC0yMzI5LDQzICszNzkyLDM0IEBACiAgICAgICAgIHJoLmNsb3NlKCkKICAgICBzZXRhdHRyKFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsICJ0ZXN0X2NvbXB1dGVfcm9sbG92ZXJfJXMiICUgd2hlbiwgdGVzdF9jb21wdXRlX3JvbGxvdmVyKQogCi1jbGFzcyBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQotICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzE0NjMyIHJlZmVycy4KLSAgICAgICAgZGVmIHJlbW92ZV9sb29wKGZuYW1lLCB0cmllcyk6Ci0gICAgICAgICAgICBmb3IgXyBpbiByYW5nZSh0cmllcyk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDA0ICogcmFuZG9tLnJhbmRpbnQoMCwgNCkpCi0KLSAgICAgICAgZGVsX2NvdW50ID0gNTAwCi0gICAgICAgIGxvZ19jb3VudCA9IDUwMAotCi0gICAgICAgIGZvciBkZWxheSBpbiAoRmFsc2UsIFRydWUpOgotICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgnLmxvZycsICd0ZXN0X2xvZ2dpbmctMy0nKQotICAgICAgICAgICAgb3MuY2xvc2UoZmQpCi0gICAgICAgICAgICByZW1vdmVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVtb3ZlX2xvb3AsIGFyZ3M9KGZuLCBkZWxfY291bnQpKQotICAgICAgICAgICAgcmVtb3Zlci5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICByZW1vdmVyLnN0YXJ0KCkKLSAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLldhdGNoZWRGaWxlSGFuZGxlcihmbiwgZGVsYXk9ZGVsYXkpCi0gICAgICAgICAgICBmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzOiAlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycpCi0gICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGxvZ19jb3VudCk6Ci0gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDUpCi0gICAgICAgICAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZycgfSkKLSAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcmVtb3Zlci5qb2luKCkKLSAgICAgICAgICAgICAgICBoLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKLQorQHVuaXR0ZXN0LnNraXBVbmxlc3Mod2luMzJldnRsb2csICd3aW4zMmV2dGxvZy93aW4zMmV2dGxvZ3V0aWwgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgTlRFdmVudExvZ0hhbmRsZXJUZXN0KEJhc2VUZXN0KToKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgbG9ndHlwZSA9ICdBcHBsaWNhdGlvbicKKyAgICAgICAgZWxoID0gd2luMzJldnRsb2cuT3BlbkV2ZW50TG9nKE5vbmUsIGxvZ3R5cGUpCisgICAgICAgIG51bV9yZWNzID0gd2luMzJldnRsb2cuR2V0TnVtYmVyT2ZFdmVudExvZ1JlY29yZHMoZWxoKQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5OVEV2ZW50TG9nSGFuZGxlcigndGVzdF9sb2dnaW5nJykKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICdUZXN0IExvZyBNZXNzYWdlJ30pCisgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgIGguY2xvc2UoKQorICAgICAgICAjIE5vdyBzZWUgaWYgdGhlIGV2ZW50IGlzIHJlY29yZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudW1fcmVjcyA8IHdpbjMyZXZ0bG9nLkdldE51bWJlck9mRXZlbnRMb2dSZWNvcmRzKGVsaCkpCisgICAgICAgIGZsYWdzID0gd2luMzJldnRsb2cuRVZFTlRMT0dfQkFDS1dBUkRTX1JFQUQgfCBcCisgICAgICAgICAgICAgICAgd2luMzJldnRsb2cuRVZFTlRMT0dfU0VRVUVOVElBTF9SRUFECisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgR09fQkFDSyA9IDEwMAorICAgICAgICBldmVudHMgPSB3aW4zMmV2dGxvZy5SZWFkRXZlbnRMb2coZWxoLCBmbGFncywgR09fQkFDSykKKyAgICAgICAgZm9yIGUgaW4gZXZlbnRzOgorICAgICAgICAgICAgaWYgZS5Tb3VyY2VOYW1lICE9ICd0ZXN0X2xvZ2dpbmcnOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtc2cgPSB3aW4zMmV2dGxvZ3V0aWwuU2FmZUZvcm1hdE1lc3NhZ2UoZSwgbG9ndHlwZSkKKyAgICAgICAgICAgIGlmIG1zZyAhPSAnVGVzdCBMb2cgTWVzc2FnZVxyXG4nOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG1zZyA9ICdSZWNvcmQgbm90IGZvdW5kIGluIGV2ZW50IGxvZywgd2VudCBiYWNrICVkIHJlY29yZHMnICUgR09fQkFDSworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCiAKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCkBAIC0yMzczLDE0ICszODI3LDE3IEBACiBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoQnVpbHRpbkxldmVsc1Rlc3QsIEJhc2ljRmlsdGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgQ3VzdG9tTGV2ZWxzQW5kRmlsdGVyc1Rlc3QsIE1lbW9yeUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBDb25maWdGaWxlVGVzdCwgU29ja2V0SGFuZGxlclRlc3QsIE1lbW9yeVRlc3QsCi0gICAgICAgICAgICAgICAgIEVuY29kaW5nVGVzdCwgV2FybmluZ3NUZXN0LCBDb25maWdEaWN0VGVzdCwgTWFuYWdlclRlc3QsCi0gICAgICAgICAgICAgICAgIEZvcm1hdHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsIFF1ZXVlSGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwKLSAgICAgICAgICAgICAgICAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwgSGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgRGF0YWdyYW1IYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LAorICAgICAgICAgICAgICAgICBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCisgICAgICAgICAgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwKKyAgICAgICAgICAgICAgICAgQmFzaWNDb25maWdUZXN0LCBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwKKyAgICAgICAgICAgICAgICAgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwgTG9nUmVjb3JkVGVzdCwgRXhjZXB0aW9uVGVzdCwKKyAgICAgICAgICAgICAgICAgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwgTlRFdmVudExvZ0hhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0CiAgICAgICAgICAgICAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CmluZGV4IDNlYmMxZjcuLmI0MTdiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKQEAgLTQzLDYgKzQzLDUzIEBACiBEQkxfTUFOVF9ESUcgPSBzeXMuZmxvYXRfaW5mby5tYW50X2RpZwogREJMX01JTl9PVkVSRkxPVyA9IDIqKkRCTF9NQVhfRVhQIC0gMioqKERCTF9NQVhfRVhQIC0gREJMX01BTlRfRElHIC0gMSkKIAorCisjIFB1cmUgUHl0aG9uIHZlcnNpb24gb2YgY29ycmVjdGx5LXJvdW5kZWQgaW50ZWdlci10by1mbG9hdCBjb252ZXJzaW9uLgorZGVmIGludF90b19mbG9hdChuKToKKyAgICAiIiIKKyAgICBDb3JyZWN0bHktcm91bmRlZCBpbnRlZ2VyLXRvLWZsb2F0IGNvbnZlcnNpb24uCisKKyAgICAiIiIKKyAgICAjIENvbnN0YW50cywgZGVwZW5kaW5nIG9ubHkgb24gdGhlIGZsb2F0aW5nLXBvaW50IGZvcm1hdCBpbiB1c2UuCisgICAgIyBXZSB1c2UgYW4gZXh0cmEgMiBiaXRzIG9mIHByZWNpc2lvbiBmb3Igcm91bmRpbmcgcHVycG9zZXMuCisgICAgUFJFQ0lTSU9OID0gc3lzLmZsb2F0X2luZm8ubWFudF9kaWcgKyAyCisgICAgU0hJRlRfTUFYID0gc3lzLmZsb2F0X2luZm8ubWF4X2V4cCAtIFBSRUNJU0lPTgorICAgIFFfTUFYID0gMSA8PCBQUkVDSVNJT04KKyAgICBST1VORF9IQUxGX1RPX0VWRU5fQ09SUkVDVElPTiA9IFswLCAtMSwgLTIsIDEsIDAsIC0xLCAyLCAxXQorCisgICAgIyBSZWR1Y2UgdG8gdGhlIGNhc2Ugd2hlcmUgbiBpcyBwb3NpdGl2ZS4KKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiAwLjAKKyAgICBlbGlmIG4gPCAwOgorICAgICAgICByZXR1cm4gLWludF90b19mbG9hdCgtbikKKworICAgICMgQ29udmVydCBuIHRvIGEgJ2Zsb2F0aW5nLXBvaW50JyBudW1iZXIgcSAqIDIqKnNoaWZ0LCB3aGVyZSBxIGlzIGFuCisgICAgIyBpbnRlZ2VyIHdpdGggJ1BSRUNJU0lPTicgc2lnbmlmaWNhbnQgYml0cy4gIFdoZW4gc2hpZnRpbmcgbiB0byBjcmVhdGUgcSwKKyAgICAjIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgcSBpcyB0cmVhdGVkIGFzICdzdGlja3knLiAgVGhhdCBpcywgdGhlCisgICAgIyBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgcSBpcyBzZXQgaWYgZWl0aGVyIHRoZSBjb3JyZXNwb25kaW5nIGJpdCBvZiBuCisgICAgIyB3YXMgYWxyZWFkeSBzZXQsIG9yIGFueSBvbmUgb2YgdGhlIGJpdHMgb2YgbiBsb3N0IGluIHRoZSBzaGlmdCB3YXMgc2V0LgorICAgIHNoaWZ0ID0gbi5iaXRfbGVuZ3RoKCkgLSBQUkVDSVNJT04KKyAgICBxID0gbiA8PCAtc2hpZnQgaWYgc2hpZnQgPCAwIGVsc2UgKG4gPj4gc2hpZnQpIHwgYm9vbChuICYgfigtMSA8PCBzaGlmdCkpCisKKyAgICAjIFJvdW5kIGhhbGYgdG8gZXZlbiAoYWN0dWFsbHkgcm91bmRzIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIDQsCisgICAgIyByb3VuZGluZyB0aWVzIHRvIGEgbXVsdGlwbGUgb2YgOCkuCisgICAgcSArPSBST1VORF9IQUxGX1RPX0VWRU5fQ09SUkVDVElPTltxICYgN10KKworICAgICMgRGV0ZWN0IG92ZXJmbG93LgorICAgIGlmIHNoaWZ0ICsgKHEgPT0gUV9NQVgpID4gU0hJRlRfTUFYOgorICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJpbnRlZ2VyIHRvbyBsYXJnZSB0byBjb252ZXJ0IHRvIGZsb2F0IikKKworICAgICMgQ2hlY2tzOiBxIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSwgYW5kIHEqKjIqKnNoaWZ0IGRvZXNuJ3Qgb3ZlcmZsb3cuCisgICAgYXNzZXJ0IHEgJSA0ID09IDAgYW5kIHEgLy8gNCA8PSAyKiooc3lzLmZsb2F0X2luZm8ubWFudF9kaWcpCisgICAgYXNzZXJ0IHEgKiAyKipzaGlmdCA8PSBzeXMuZmxvYXRfaW5mby5tYXgKKworICAgICMgU29tZSBjaXJjdWxhcml0eSBoZXJlLCBzaW5jZSBmbG9hdChxKSBpcyBkb2luZyBhbiBpbnQtdG8tZmxvYXQKKyAgICAjIGNvbnZlcnNpb24uICBCdXQgaGVyZSBxIGlzIG9mIGJvdW5kZWQgc2l6ZSwgYW5kIGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZQorICAgICMgYXMgYSBmbG9hdC4gIEluIGEgbG93LWxldmVsIEMtbGlrZSBsYW5ndWFnZSwgdGhpcyBvcGVyYXRpb24gd291bGQgYmUgYQorICAgICMgc2ltcGxlIGNhc3QgKGUuZy4sIGZyb20gdW5zaWduZWQgbG9uZyBsb25nIHRvIGRvdWJsZSkuCisgICAgcmV0dXJuIG1hdGgubGRleHAoZmxvYXQocSksIHNoaWZ0KQorCisKICMgcHVyZSBQeXRob24gdmVyc2lvbiBvZiBjb3JyZWN0bHktcm91bmRlZCB0cnVlIGRpdmlzaW9uCiBkZWYgdHJ1ZWRpdihhLCBiKToKICAgICAiIiJDb3JyZWN0bHktcm91bmRlZCB0cnVlIGRpdmlzaW9uIGZvciBpbnRlZ2Vycy4iIiIKQEAgLTM2Nyw2ICs0MTQsMjMgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMTcyOQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChMb25nVHJ1bmMoKSksIDE3MjkpCiAKKyAgICBkZWYgY2hlY2tfZmxvYXRfY29udmVyc2lvbihzZWxmLCBuKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGludCAtPiBmbG9hdCBjb252ZXJzaW9uIGJlaGF2aW91ciBtYXRjaGVzCisgICAgICAgICMgdGhhdCBvZiB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiBhYm92ZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWN0dWFsID0gZmxvYXQobikKKyAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICBhY3R1YWwgPSAnb3ZlcmZsb3cnCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhwZWN0ZWQgPSBpbnRfdG9fZmxvYXQobikKKyAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICBleHBlY3RlZCA9ICdvdmVyZmxvdycKKworICAgICAgICBtc2cgPSAoIkVycm9yIGluIGNvbnZlcnNpb24gb2YgaW50ZWdlciB7fSB0byBmbG9hdC4gICIKKyAgICAgICAgICAgICAgICJHb3Qge30sIGV4cGVjdGVkIHt9LiIuZm9ybWF0KG4sIGFjdHVhbCwgZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZykKKwogICAgIEBzdXBwb3J0LnJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfZmxvYXRfY29udmVyc2lvbihzZWxmKToKIApAQCAtNDIxLDYgKzQ4NSwyMiBAQAogICAgICAgICAgICAgeSA9IDIqKnAgKiAyKio1MwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZmxvYXQoeCkpLCB5KQogCisgICAgICAgICMgQ29tcGFyZSBidWlsdGluIGZsb2F0IGNvbnZlcnNpb24gd2l0aCBwdXJlIFB5dGhvbiBpbnRfdG9fZmxvYXQKKyAgICAgICAgIyBmdW5jdGlvbiBhYm92ZS4KKyAgICAgICAgdGVzdF92YWx1ZXMgPSBbCisgICAgICAgICAgICBpbnRfZGJsX21heC0xLCBpbnRfZGJsX21heCwgaW50X2RibF9tYXgrMSwKKyAgICAgICAgICAgIGhhbGZ3YXktMSwgaGFsZndheSwgaGFsZndheSArIDEsCisgICAgICAgICAgICB0b3BfcG93ZXItMSwgdG9wX3Bvd2VyLCB0b3BfcG93ZXIrMSwKKyAgICAgICAgICAgIDIqdG9wX3Bvd2VyLTEsIDIqdG9wX3Bvd2VyLCB0b3BfcG93ZXIqdG9wX3Bvd2VyLAorICAgICAgICBdCisgICAgICAgIHRlc3RfdmFsdWVzLmV4dGVuZChleGFjdF92YWx1ZXMpCisgICAgICAgIGZvciBwIGluIHJhbmdlKC00LCA4KToKKyAgICAgICAgICAgIGZvciB4IGluIHJhbmdlKC0xMjgsIDEyOCk6CisgICAgICAgICAgICAgICAgdGVzdF92YWx1ZXMuYXBwZW5kKDIqKihwKzUzKSArIHgpCisgICAgICAgIGZvciB2YWx1ZSBpbiB0ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfY29udmVyc2lvbih2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfY29udmVyc2lvbigtdmFsdWUpCisKICAgICBkZWYgdGVzdF9mbG9hdF9vdmVyZmxvdyhzZWxmKToKICAgICAgICAgZm9yIHggaW4gLTIuMCwgLTEuMCwgMC4wLCAxLjAsIDIuMDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoaW50KHgpKSwgeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTNjZjNiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0wLDAgKzEsMTUxNyBAQAorZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCisgICAgXzRHLCBURVNURk4sIGltcG9ydF9tb2R1bGUsIGJpZ21lbXRlc3QsIHJ1bl91bml0dGVzdCwgdW5saW5rCispCisKK2x6bWEgPSBpbXBvcnRfbW9kdWxlKCJsem1hIikKK2Zyb20gbHptYSBpbXBvcnQgTFpNQUNvbXByZXNzb3IsIExaTUFEZWNvbXByZXNzb3IsIExaTUFFcnJvciwgTFpNQUZpbGUKKworCitjbGFzcyBDb21wcmVzc29yRGVjb21wcmVzc29yVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUZXN0IGVycm9yIGNhc2VzLgorCisgICAgZGVmIHRlc3Rfc2ltcGxlX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZm9ybWF0PTMuNDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGNoZWNrPSIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBwcmVzZXQ9ImFzZGYiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPTMpCisgICAgICAgICMgQ2FuJ3Qgc3BlY2lmeSBGT1JNQVRfQVVUTyB3aGVuIGNvbXByZXNzaW5nLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZm9ybWF0PWx6bWEuRk9STUFUX0FVVE8pCisgICAgICAgICMgQ2FuJ3Qgc3BlY2lmeSBhIHByZXNldCBhbmQgYSBjdXN0b20gZmlsdGVyIGNoYWluIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihwcmVzZXQ9NywgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCBtZW1saW1pdD1iInF3IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9Inp6eiIpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBtZW1vcnkgbGltaXQgd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIG1lbWxpbWl0PTB4MTAwMDAwMCkKKyAgICAgICAgIyBDYW4gb25seSBzcGVjaWZ5IGEgY3VzdG9tIGZpbHRlciBjaGFpbiB3aXRoIEZJTFRFUl9SQVcuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFEZWNvbXByZXNzb3IsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IoZm9ybWF0PWx6bWEuRk9STUFUX1haLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsemMuY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmNvbXByZXNzLCBiImZvbyIsIGIiYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsemMuZmx1c2gsIGIiYmxhaCIpCisgICAgICAgIGVtcHR5ID0gbHpjLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbHpjLmNvbXByZXNzLCBiInF1dXgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsemMuZmx1c2gpCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpkLmRlY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpkLmRlY29tcHJlc3MsIGIiZm9vIiwgYiJiYXIiKQorICAgICAgICBsemQuZGVjb21wcmVzcyhlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiInF1dXgiKQorCisgICAgZGVmIHRlc3RfYmFkX2ZpbHRlcl9zcGVjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVtiIndvYnNpdGUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZpbHRlcnM9W3sieHl6enkiOiAzfV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVt7ImlkIjogOTg3NjV9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFDb21wcmVzc29yKGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFDb21wcmVzc29yKGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFDb21wcmVzc29yKGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9YODYsICJmb28iOiAwfV0pCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYWZ0ZXJfZW9mKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgbHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiIm55YW4iKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX21lbWxpbWl0KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9YWiwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX0FMT05FLCBtZW1saW1pdD0xMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FKQorCisgICAgIyBUZXN0IExaTUFEZWNvbXByZXNzb3Igb24ga25vd24tZ29vZCBpbnB1dCBkYXRhLgorCisgICAgZGVmIF90ZXN0X2RlY29tcHJlc3NvcihzZWxmLCBsemQsIGRhdGEsIGNoZWNrLCB1bnVzZWRfZGF0YT1iIiIpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5lb2YpCisgICAgICAgIG91dCA9IGx6ZC5kZWNvbXByZXNzKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBJTlBVVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuY2hlY2ssIGNoZWNrKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHpkLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQudW51c2VkX2RhdGEsIHVudXNlZF9kYXRhKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2F1dG8oc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFosIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9BTE9ORSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3h6KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1haKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFosIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYWxvbmUoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9BTE9ORSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd18xKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzEsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfMihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV18yLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfcmF3XzMoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9SQVdfMywgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd180KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzQsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9jaHVua3Moc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBvdXQgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oQ09NUFJFU1NFRF9YWiksIDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHpkLmVvZikKKyAgICAgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWltpOmkrMTBdKSkKKyAgICAgICAgb3V0ID0gYiIiLmpvaW4ob3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgSU5QVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmNoZWNrLCBsem1hLkNIRUNLX0NSQzY0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHpkLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQudW51c2VkX2RhdGEsIGIiIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl91bnVzZWRfZGF0YShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGV4dHJhID0gYiJmb29ibGliYXIiCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9YWiArIGV4dHJhLCBsem1hLkNIRUNLX0NSQzY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWRfZGF0YT1leHRyYSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9iYWRfaW5wdXQoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1JBV18xKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfQUxPTkUpCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haKQorCisgICAgIyBUZXN0IHRoYXQgTFpNQUNvbXByZXNzb3ItPkxaTUFEZWNvbXByZXNzb3IgcHJlc2VydmVzIHRoZSBpbnB1dCBkYXRhLgorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3h6KHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIGNkYXRhID0gbHpjLmNvbXByZXNzKElOUFVUKSArIGx6Yy5mbHVzaCgpCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX2Fsb25lKHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoSU5QVVQpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgY2RhdGEsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9yYXcoc2VsZik6CisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhJTlBVVCkgKyBsemMuZmx1c2goKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfY2h1bmtzKHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIGNkYXRhID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKElOUFVUKSwgMTApOgorICAgICAgICAgICAgY2RhdGEuYXBwZW5kKGx6Yy5jb21wcmVzcyhJTlBVVFtpOmkrMTBdKSkKKyAgICAgICAgY2RhdGEuYXBwZW5kKGx6Yy5mbHVzaCgpKQorICAgICAgICBjZGF0YSA9IGIiIi5qb2luKGNkYXRhKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19DUkM2NCkKKworICAgICMgTFpNQURlY29tcHJlc3NvciBpbnRlbnRpb25hbGx5IGRvZXMgbm90IGhhbmRsZSBjb25jYXRlbmF0ZWQgc3RyZWFtcy4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9YWiArIENPTVBSRVNTRURfQUxPTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6bWEuQ0hFQ0tfQ1JDNjQsIHVudXNlZF9kYXRhPUNPTVBSRVNTRURfQUxPTkUpCisKKyAgICAjIFRlc3Qgd2l0aCBpbnB1dHMgbGFyZ2VyIHRoYW4gNEdpQi4KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jb21wcmVzc29yX2JpZ21lbShzZWxmLCBzaXplKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhiIngiICogc2l6ZSkgKyBsemMuZmx1c2goKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGRhdGEpLCBzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGRhdGEuc3RyaXAoYiJ4IikpLCAwKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGRhdGEgPSBOb25lCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTMpCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2JpZ21lbShzZWxmLCBzaXplKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGJsb2Nrc2l6ZSA9IDEwICogMTAyNCAqIDEwMjQKKyAgICAgICAgYmxvY2sgPSByYW5kb20uZ2V0cmFuZGJpdHMoYmxvY2tzaXplICogOCkudG9fYnl0ZXMoYmxvY2tzaXplLCAibGl0dGxlIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5wdXQgPSBibG9jayAqIChzaXplIC8vIGJsb2Nrc2l6ZSArIDEpCisgICAgICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoaW5wdXQpCisgICAgICAgICAgICBkZGF0YSA9IGx6ZC5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgaW5wdXQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpbnB1dCA9IGNkYXRhID0gZGRhdGEgPSBOb25lCisKKworY2xhc3MgQ29tcHJlc3NEZWNvbXByZXNzRnVuY3Rpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRlc3QgZXJyb3IgY2FzZXM6CisKKyAgICBkZWYgdGVzdF9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgZm9ybWF0PSJ4eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcywgYiIiLCBjaGVjaz0ibm9uZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcywgYiIiLCBwcmVzZXQ9ImJsYWgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgZmlsdGVycz0xMDI0KQorICAgICAgICAjIENhbid0IHNwZWNpZnkgYSBwcmVzZXQgYW5kIGEgY3VzdG9tIGZpbHRlciBjaGFpbiBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5jb21wcmVzcyhiIiIsIHByZXNldD0zLCBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTJ9XSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuZGVjb21wcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgYiIiLCBmb3JtYXQ9Imx6bWEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgYiIiLCBtZW1saW1pdD03LjNlOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz17fSkKKyAgICAgICAgIyBDYW5ub3Qgc3BlY2lmeSBhIG1lbW9yeSBsaW1pdCB3aXRoIEZJTFRFUl9SQVcuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoYiIiLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBtZW1saW1pdD0weDEwMDAwMDApCisgICAgICAgICMgQ2FuIG9ubHkgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1haLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX21lbWxpbWl0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1haLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9BTE9ORSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FLCBtZW1saW1pdD0xMDI0KQorCisgICAgIyBUZXN0IExaTUFEZWNvbXByZXNzb3Igb24ga25vd24tZ29vZCBpbnB1dCBkYXRhLgorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19nb29kX2lucHV0KHNlbGYpOgorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haLCBsem1hLkZPUk1BVF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSwgbHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzEsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV18yLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9SQVdfMywgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzQsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfaW5jb21wbGV0ZV9pbnB1dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFpbOjEyOF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHptYS5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FWzoxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMVs6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMls6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfM1s6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfNFs6MTI4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19iYWRfaW5wdXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICAjIFRlc3QgdGhhdCBjb21wcmVzcygpLT5kZWNvbXByZXNzKCkgcHJlc2VydmVzIHRoZSBpbnB1dCBkYXRhLgorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwKHNlbGYpOgorICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGx6bWEuRk9STUFUX1haKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVULCBsem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGNkYXRhID0gbHptYS5jb21wcmVzcyhJTlBVVCwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAjIFVubGlrZSBMWk1BRGVjb21wcmVzc29yLCBkZWNvbXByZXNzKCkgKmRvZXMqIGhhbmRsZSBjb25jYXRlbmF0ZWQgc3RyZWFtcy4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbXVsdGlzdHJlYW0oc2VsZik6CisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCAqIDIpCisKKworY2xhc3MgVGVtcEZpbGU6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIC0gY3JlYXRlcyBhIGZpbGUsIGFuZCBkZWxldGVzIGl0IG9uIF9fZXhpdF9fLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBkYXRhPWIiIik6CisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5kYXRhKQorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgdW5saW5rKHNlbGYuZmlsZW5hbWUpCisKKworY2xhc3MgRmlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJhIikgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4pOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJyIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJyYiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAid2IiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImFiIik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICgzLCAieCIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAieCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicnQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInIrIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJ3dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAidysiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInJ3IikKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX2NoZWNrKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgY2hlY2s9YiJhc2QiKQorICAgICAgICAjIENIRUNLX1VOS05PV04gYW5kIGFueXRoaW5nIGFib3ZlIENIRUNLX0lEX01BWCBzaG91bGQgYmUgaW52YWxpZC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWx6bWEuQ0hFQ0tfVU5LTk9XTikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWx6bWEuQ0hFQ0tfSURfTUFYICsgMykKKyAgICAgICAgIyBDYW5ub3Qgc3BlY2lmeSBhIGNoZWNrIHdpdGggbW9kZT0iciIuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX05PTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX0NSQzMyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfU0hBMjU2KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19VTktOT1dOKQorCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfcHJlc2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTQuMzkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9MTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9MjMpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PS0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0tNykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0iZm9vIikKKyAgICAgICAgIyBDYW5ub3Qgc3BlY2lmeSBhIHByZXNldCB3aXRoIG1vZGU9InIiLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgcHJlc2V0PTMpCisKKyAgICBkZWYgdGVzdF9pbml0X2JhZF9maWx0ZXJfc3BlYyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W2Iid29ic2l0ZSJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W3sieHl6enkiOiAzfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgZmlsdGVycz1beyJpZCI6IDk4NzY1fV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZm9vIjogMH1dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfWDg2LCAiZm9vIjogMH1dKQorCisgICAgZGVmIHRlc3RfaW5pdF93aXRoX3ByZXNldF9hbmRfZmlsdGVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgcHJlc2V0PTYsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKworICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikgYXMgc3JjOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKHNyYykKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgIyBMWk1BRmlsZS5jbG9zZSgpIHNob3VsZCBub3QgY2xvc2UgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNyYy5jbG9zZWQpCisgICAgICAgICAgICAjIFRyeSBjbG9zaW5nIGFuIGFscmVhZHktY2xvc2VkIExaTUFGaWxlLgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNyYy5jbG9zZWQpCisKKyAgICAgICAgIyBUZXN0IHdpdGggYSByZWFsIGZpbGUgb24gZGlzaywgb3BlbmVkIGRpcmVjdGx5IGJ5IExaTUFGaWxlLgorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICBmID0gTFpNQUZpbGUoVEVTVEZOKQorICAgICAgICAgICAgZnAgPSBmLl9mcAorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAjIEhlcmUsIExaTUFGaWxlLmNsb3NlKCkgKnNob3VsZCogY2xvc2UgdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZnAuY2xvc2VkKQorICAgICAgICAgICAgIyBUcnkgY2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBMWk1BRmlsZS4KKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2xvc2VkKQorCisgICAgZGVmIHRlc3RfZmlsZW5vKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5zdXBwb3J0ZWRPcGVyYXRpb24sIGYuZmlsZW5vKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuZmlsZW5vKQorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICBmID0gTFpNQUZpbGUoVEVTVEZOKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5maWxlbm8oKSwgZi5fZnAuZmlsZW5vKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYuZmlsZW5vKCksIGludCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuZmlsZW5vKQorCisgICAgZGVmIHRlc3Rfc2Vla2FibGUoc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5zZWVrYWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrYWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICAgICAgc3JjID0gQnl0ZXNJTyhDT01QUkVTU0VEX1haKQorICAgICAgICBzcmMuc2Vla2FibGUgPSBsYW1iZGE6IEZhbHNlCisgICAgICAgIGYgPSBMWk1BRmlsZShzcmMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICBkZWYgdGVzdF9yZWFkYWJsZShzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRhYmxlKQorCisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkYWJsZSkKKworICAgIGRlZiB0ZXN0X3dyaXRhYmxlKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0YWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0YWJsZSkKKworICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSkpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpLCBmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzEpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMiksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18zKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzQpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZF8wKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSkpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfMTAoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGNodW5rcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihyZXN1bHQpLCAxMCkKKyAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oY2h1bmtzKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiA1KQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiArIENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMyAqIDQpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNCkKKworICAgIGRlZiB0ZXN0X3JlYWRfbXVsdGlzdHJlYW1fYnVmZmVyX3NpemVfYWxpZ25lZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBjYXNlIHdoZXJlIGEgc3RyZWFtIGJvdW5kYXJ5IGNvaW5jaWRlcyB3aXRoIHRoZSBlbmQKKyAgICAgICAgIyBvZiB0aGUgcmF3IHJlYWQgYnVmZmVyLgorICAgICAgICBzYXZlZF9idWZmZXJfc2l6ZSA9IGx6bWEuX0JVRkZFUl9TSVpFCisgICAgICAgIGx6bWEuX0JVRkZFUl9TSVpFID0gbGVuKENPTVBSRVNTRURfWFopCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogIDUpKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGx6bWEuX0JVRkZFUl9TSVpFID0gc2F2ZWRfYnVmZmVyX3NpemUKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZV93aXRoX2J5dGVzX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGJ5dGVzX2ZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfaW5jb21wbGV0ZShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFpbOjEyOF0pKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIGYucmVhZCkKKworICAgIGRlZiB0ZXN0X3JlYWRfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3JlYWQxKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQxKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihibG9ja3MpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8wKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZDEoMCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQxKDEwKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGJsb2NrcyksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDUpKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYmxvY2tzKSwgSU5QVVQgKiA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWQxX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZDEpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQxKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZDEsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9wZWVrKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnBlZWsoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZXN1bHQpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElOUFVULnN0YXJ0c3dpdGgocmVzdWx0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnBlZWsoMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHJlc3VsdCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoSU5QVVQuc3RhcnRzd2l0aChyZXN1bHQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9wZWVrX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5wZWVrKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KGl0ZXIoZikpLCBsaW5lcykKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18yKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KGl0ZXIoZikpLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lKCksIGxpbmUpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVULCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfMTAoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVFtzdGFydDpzdGFydCsxMF0pCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX2FwcGVuZChzZWxmKToKKyAgICAgICAgcGFydDEgPSBJTlBVVFs6MTAyNF0KKyAgICAgICAgcGFydDIgPSBJTlBVVFsxMDI0OjE1MzZdCisgICAgICAgIHBhcnQzID0gSU5QVVRbMTUzNjpdCisgICAgICAgIGV4cGVjdGVkID0gYiIiLmpvaW4obHptYS5jb21wcmVzcyh4KSBmb3IgeCBpbiAocGFydDEsIHBhcnQyLCBwYXJ0MykpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MSkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MikKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19maWxlX3dpdGhfYnl0ZXNfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gVEVTVEZOLmVuY29kZSgiYXNjaWkiKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGVtcG9yYXJ5IGZpbGUgbmFtZSBuZWVkcyB0byBiZSBBU0NJSSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoYnl0ZXNfZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF93cml0ZV9hcHBlbmRfdG9fZmlsZShzZWxmKToKKyAgICAgICAgcGFydDEgPSBJTlBVVFs6MTAyNF0KKyAgICAgICAgcGFydDIgPSBJTlBVVFsxMDI0OjE1MzZdCisgICAgICAgIHBhcnQzID0gSU5QVVRbMTUzNjpdCisgICAgICAgIGV4cGVjdGVkID0gYiIiLmpvaW4obHptYS5jb21wcmVzcyh4KSBmb3IgeCBpbiAocGFydDEsIHBhcnQyLCBwYXJ0MykpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MSkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MikKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShwYXJ0MykKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGUsIGIiZm9vIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLndyaXRlLCBiImJhciIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsICJ0ZXh0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi53cml0ZSwgNzg5KQorCisgICAgZGVmIHRlc3Rfd3JpdGVsaW5lcyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKElOUFVUKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZWxpbmVzKGxpbmVzKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2Vlayg1NTUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFs1NTU6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfZm9yd2FyZF9hY3Jvc3Nfc3RyZWFtcyhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiAyKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhsZW4oSU5QVVQpICsgMTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMTIzOl0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmRfcmVsYXRpdmVfdG9fY3VycmVudChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKDEwMCkKKyAgICAgICAgICAgIGYuc2VlaygxMjM2LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMTMzNjpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkX3JlbGF0aXZlX3RvX2VuZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKC01NTUsIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFstNTU1Ol0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhY2t3YXJkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnJlYWQoMTAwMSkKKyAgICAgICAgICAgIGYuc2VlaygyMTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFsyMTE6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFja3dhcmRfYWNyb3NzX3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogMikpIGFzIGY6CisgICAgICAgICAgICBmLnJlYWQobGVuKElOUFVUKSArIDMzMykKKyAgICAgICAgICAgIGYuc2Vlayg3MzcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVFs3Mzc6XSArIElOUFVUKQorCisgICAgZGVmIHRlc3Rfc2Vla19iYWNrd2FyZF9yZWxhdGl2ZV90b19lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtMTUwLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbLTE1MDpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19wYXN0X2VuZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKGxlbihJTlBVVCkgKyA5MDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbGVuKElOUFVUKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3NlZWtfcGFzdF9zdGFydChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5zZWVrKC04OCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDAsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDksICgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuc2VlaywgYiJkZXJwIikKKworICAgIGRlZiB0ZXN0X3RlbGwoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIHBvcyA9IDAKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgcG9zKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZCgxODMpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwb3MgKz0gbGVuKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmb3IgcG9zIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDE0NCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgcG9zKQorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVRbcG9zOnBvcysxNDRdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbGVuKElOUFVUKSkKKworICAgIGRlZiB0ZXN0X3RlbGxfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi50ZWxsKQorCisKK2NsYXNzIE9wZW5UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJhYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBJTlBVVCAqIDIpCisKKyAgICBkZWYgdGVzdF90ZXh0X21vZGVzKHNlbGYpOgorICAgICAgICB1bmNvbXByZXNzZWQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInd0IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgImF0IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSkuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdyAqIDIpCisKKyAgICBkZWYgdGVzdF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4pOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJhYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAieCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEub3BlbihURVNURk4sICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBmb3JtYXQgYW5kIGZpbHRlciBjaGFpbi4KKyAgICAgICAgb3B0aW9ucyA9IHsiZm9ybWF0IjogbHptYS5GT1JNQVRfUkFXLCAiZmlsdGVycyI6IEZJTFRFUlNfUkFXXzF9CisgICAgICAgIHdpdGggbHptYS5vcGVuKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMSksICJyYiIsICoqb3B0aW9ucykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3YiIsICoqb3B0aW9ucykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpLCAqKm9wdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInd0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgidXRmLTE2LWxlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3KQorICAgICAgICAgICAgYmlvLnNlZWsoMCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgZW5jb2Rpbmc9InV0Zi0xNi1sZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorCisgICAgZGVmIHRlc3RfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpaCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIEJ5dGVzSU8obHptYS5jb21wcmVzcyhiImZvb1x4ZmZiYXIiKSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAicnQiLCBlbmNvZGluZz0iYXNjaWkiLCBlcnJvcnM9Imlnbm9yZSIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImZvb2JhciIpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBleHBsaWNpdCBuZXdsaW5lICh1bml2ZXJzYWwgbmV3bGluZSBtb2RlIGRpc2FibGVkKS4KKyAgICAgICAgdGV4dCA9IElOUFVULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIsIG5ld2xpbmU9IlxuIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgICAgICBiaW8uc2VlaygwKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAicnQiLCBuZXdsaW5lPSJcciIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbdGV4dF0pCisKKworY2xhc3MgTWlzY2VsbGFuZW91c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2lzX2NoZWNrX3N1cHBvcnRlZChzZWxmKToKKyAgICAgICAgIyBDSEVDS19OT05FIGFuZCBDSEVDS19DUkMzMiBzaG91bGQgYWx3YXlzIGJlIHN1cHBvcnRlZCwKKyAgICAgICAgIyByZWdhcmRsZXNzIG9mIHRoZSBvcHRpb25zIGxpYmx6bWEgd2FzIGNvbXBpbGVkIHdpdGguCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsem1hLmlzX2NoZWNrX3N1cHBvcnRlZChsem1hLkNIRUNLX05PTkUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19DUkMzMikpCisKKyAgICAgICAgIyBUaGUgLnh6IGZvcm1hdCBzcGVjIGNhbm5vdCBzdG9yZSBjaGVjayBJRHMgYWJvdmUgdGhpcyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsem1hLmlzX2NoZWNrX3N1cHBvcnRlZChsem1hLkNIRUNLX0lEX01BWCArIDEpKQorCisgICAgICAgICMgVGhpcyB2YWx1ZSBzaG91bGQgbm90IGJlIGEgdmFsaWQgY2hlY2sgSUQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19VTktOT1dOKSkKKworICAgIGRlZiB0ZXN0X19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhiIm5vdCBhIGRpY3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiAweDEwMH0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyLCAianVuayI6IDEyfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsem1hLkxaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXN0IjogOTAwMX0pCisKKyAgICAgICAgIyBUZXN0IHdpdGggcGFyYW1ldGVycyB1c2VkIGJ5IHppcGZpbGUgbW9kdWxlLgorICAgICAgICBwcm9wcyA9IGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7CisgICAgICAgICAgICAgICAgImlkIjogbHptYS5GSUxURVJfTFpNQTEsCisgICAgICAgICAgICAgICAgInBiIjogMiwKKyAgICAgICAgICAgICAgICAibHAiOiAwLAorICAgICAgICAgICAgICAgICJsYyI6IDMsCisgICAgICAgICAgICAgICAgImRpY3Rfc2l6ZSI6IDggPDwgMjAsCisgICAgICAgICAgICB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3BzLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKworICAgIGRlZiB0ZXN0X19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9YODYsIHsic2hvdWxkIGJlIjogYnl0ZXN9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGx6bWEuTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9ERUxUQSwgYiJ0b28gbG9uZyIpCisKKyAgICAgICAgIyBUZXN0IHdpdGggcGFyYW1ldGVycyB1c2VkIGJ5IHppcGZpbGUgbW9kdWxlLgorICAgICAgICBmaWx0ZXJzcGVjID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgIGx6bWEuRklMVEVSX0xaTUExLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJpZCJdLCBsem1hLkZJTFRFUl9MWk1BMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJwYiJdLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcnNwZWNbImxwIl0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1sibGMiXSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJkaWN0X3NpemUiXSwgOCA8PCAyMCkKKworICAgIGRlZiB0ZXN0X2ZpbHRlcl9wcm9wZXJ0aWVzX3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgc3BlYzEgPSBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoCisgICAgICAgICAgICAgICAgbHptYS5GSUxURVJfTFpNQTEsIGIiXVx4MDBceDAwXHg4MFx4MDAiKQorICAgICAgICByZWVuY29kZWQgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoc3BlYzEpCisgICAgICAgIHNwZWMyID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLCByZWVuY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYzEsIHNwZWMyKQorCisKKyMgVGVzdCBkYXRhOgorCitJTlBVVCA9IGIiIiIKK0xBRVJURVMKKworICAgICAgIE8sIGZlYXIgbWUgbm90LgorICAgICAgIEkgc3RheSB0b28gbG9uZzogYnV0IGhlcmUgbXkgZmF0aGVyIGNvbWVzLgorCisgICAgICAgRW50ZXIgUE9MT05JVVMKKworICAgICAgIEEgZG91YmxlIGJsZXNzaW5nIGlzIGEgZG91YmxlIGdyYWNlLAorICAgICAgIE9jY2FzaW9uIHNtaWxlcyB1cG9uIGEgc2Vjb25kIGxlYXZlLgorCitMT1JEIFBPTE9OSVVTCisKKyAgICAgICBZZXQgaGVyZSwgTGFlcnRlcyEgYWJvYXJkLCBhYm9hcmQsIGZvciBzaGFtZSEKKyAgICAgICBUaGUgd2luZCBzaXRzIGluIHRoZSBzaG91bGRlciBvZiB5b3VyIHNhaWwsCisgICAgICAgQW5kIHlvdSBhcmUgc3RheSdkIGZvci4gVGhlcmU7IG15IGJsZXNzaW5nIHdpdGggdGhlZSEKKyAgICAgICBBbmQgdGhlc2UgZmV3IHByZWNlcHRzIGluIHRoeSBtZW1vcnkKKyAgICAgICBTZWUgdGhvdSBjaGFyYWN0ZXIuIEdpdmUgdGh5IHRob3VnaHRzIG5vIHRvbmd1ZSwKKyAgICAgICBOb3IgYW55IHVucHJvcG9ydGlvbmVkIHRob3VnaHQgaGlzIGFjdC4KKyAgICAgICBCZSB0aG91IGZhbWlsaWFyLCBidXQgYnkgbm8gbWVhbnMgdnVsZ2FyLgorICAgICAgIFRob3NlIGZyaWVuZHMgdGhvdSBoYXN0LCBhbmQgdGhlaXIgYWRvcHRpb24gdHJpZWQsCisgICAgICAgR3JhcHBsZSB0aGVtIHRvIHRoeSBzb3VsIHdpdGggaG9vcHMgb2Ygc3RlZWw7CisgICAgICAgQnV0IGRvIG5vdCBkdWxsIHRoeSBwYWxtIHdpdGggZW50ZXJ0YWlubWVudAorICAgICAgIE9mIGVhY2ggbmV3LWhhdGNoJ2QsIHVuZmxlZGdlZCBjb21yYWRlLiBCZXdhcmUKKyAgICAgICBPZiBlbnRyYW5jZSB0byBhIHF1YXJyZWwsIGJ1dCBiZWluZyBpbiwKKyAgICAgICBCZWFyJ3QgdGhhdCB0aGUgb3Bwb3NlZCBtYXkgYmV3YXJlIG9mIHRoZWUuCisgICAgICAgR2l2ZSBldmVyeSBtYW4gdGh5IGVhciwgYnV0IGZldyB0aHkgdm9pY2U7CisgICAgICAgVGFrZSBlYWNoIG1hbidzIGNlbnN1cmUsIGJ1dCByZXNlcnZlIHRoeSBqdWRnbWVudC4KKyAgICAgICBDb3N0bHkgdGh5IGhhYml0IGFzIHRoeSBwdXJzZSBjYW4gYnV5LAorICAgICAgIEJ1dCBub3QgZXhwcmVzcydkIGluIGZhbmN5OyByaWNoLCBub3QgZ2F1ZHk7CisgICAgICAgRm9yIHRoZSBhcHBhcmVsIG9mdCBwcm9jbGFpbXMgdGhlIG1hbiwKKyAgICAgICBBbmQgdGhleSBpbiBGcmFuY2Ugb2YgdGhlIGJlc3QgcmFuayBhbmQgc3RhdGlvbgorICAgICAgIEFyZSBvZiBhIG1vc3Qgc2VsZWN0IGFuZCBnZW5lcm91cyBjaGllZiBpbiB0aGF0LgorICAgICAgIE5laXRoZXIgYSBib3Jyb3dlciBub3IgYSBsZW5kZXIgYmU7CisgICAgICAgRm9yIGxvYW4gb2Z0IGxvc2VzIGJvdGggaXRzZWxmIGFuZCBmcmllbmQsCisgICAgICAgQW5kIGJvcnJvd2luZyBkdWxscyB0aGUgZWRnZSBvZiBodXNiYW5kcnkuCisgICAgICAgVGhpcyBhYm92ZSBhbGw6IHRvIHRoaW5lIG93bnNlbGYgYmUgdHJ1ZSwKKyAgICAgICBBbmQgaXQgbXVzdCBmb2xsb3csIGFzIHRoZSBuaWdodCB0aGUgZGF5LAorICAgICAgIFRob3UgY2Fuc3Qgbm90IHRoZW4gYmUgZmFsc2UgdG8gYW55IG1hbi4KKyAgICAgICBGYXJld2VsbDogbXkgYmxlc3Npbmcgc2Vhc29uIHRoaXMgaW4gdGhlZSEKKworTEFFUlRFUworCisgICAgICAgTW9zdCBodW1ibHkgZG8gSSB0YWtlIG15IGxlYXZlLCBteSBsb3JkLgorCitMT1JEIFBPTE9OSVVTCisKKyAgICAgICBUaGUgdGltZSBpbnZpdGVzIHlvdTsgZ287IHlvdXIgc2VydmFudHMgdGVuZC4KKworTEFFUlRFUworCisgICAgICAgRmFyZXdlbGwsIE9waGVsaWE7IGFuZCByZW1lbWJlciB3ZWxsCisgICAgICAgV2hhdCBJIGhhdmUgc2FpZCB0byB5b3UuCisKK09QSEVMSUEKKworICAgICAgICdUaXMgaW4gbXkgbWVtb3J5IGxvY2snZCwKKyAgICAgICBBbmQgeW91IHlvdXJzZWxmIHNoYWxsIGtlZXAgdGhlIGtleSBvZiBpdC4KKworTEFFUlRFUworCisgICAgICAgRmFyZXdlbGwuCisiIiIKKworQ09NUFJFU1NFRF9YWiA9ICgKKyAgICBiIlx4ZmQ3elhaXHgwMFx4MDBceDA0XHhlNlx4ZDZceGI0Rlx4MDJceDAwIVx4MDFceDE2XHgwMFx4MDBceDAwdC9ceGU1XHhhMyIKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGRmXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZCIKKyAgICBiIm9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjhceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KCIKKyAgICBiIlx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5IgorICAgIGIiXHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmclpceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMiIKKyAgICBiIlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdFx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZSIKKyAgICBiImxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODFceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyTyIKKyAgICBiIlx4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3elx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjIgorICAgIGIiXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjBceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3IgorICAgIGIiXHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTlceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYiIKKyAgICBiIlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjdceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYSIKKyAgICBiIlx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YThceDg0Ylx4ZjZceGMzXHhkNGMtSFx4OTNvSmxceGQwaVFceGU0ayIKKyAgICBiIlx4ODRceDBiXHhjMVx4YjdceGJjXHhiMVx4MTdceDg4XHhiMVx4Y2E/QFx4ZjZceDA3XHhlYVx4ZTZ4XHhmMUgxMlBceDBmIgorICAgIGIiXHg4YVx4YzlceGVhdXdceGUzXHhiZVx4YWFpXHhhOVdceGQwXHg4MFx4Y2QjY2I1XHg5OVx4ZDhdXHhhOWRceDBjXHhiZCIKKyAgICBiIlx4YTJceGRjV2xceGVkVUdceGJmXHg4OXlGXHhmNzdceDgxdlx4YmQ1XHg5OFx4YmVoOFx4MThXXHgwOFx4ZjBceDFiXHg5OSIKKyAgICBiIjU6XHgxYT9yRFx4OTZceGExXHgwNFx4MGZceGFlXHhiYVx4ODVceGViXHg5ZDVAXHhmNVx4ODNceGQzN1x4ODNceDhhYyIKKyAgICBiIlx4MDZceGQ0XHg5N2lceGNkdFx4MTZTXHg4MmtceGY2S1x4MDF2eVx4ODhceDkxXHg5YjZUXHhkYWVcclx4ZmRdOmtceGJhbCIKKyAgICBiIlx4YTlceGJiYVx4YzM0XHhmOXJceGVifXJceGRiXHhjN1x4ZGIqXHg4Zlx4MDN6XHhkYzhoXHhjY1x4YzlceGQzXHhiY2wiCisgICAgYiJceGE1LVx4Y2JceGVhS1x4YTJceGM1XHgxNVx4YzBceGUzXHhjMVx4ODZaXHhmYlx4ZWJMXHhlMTNceGNmXHg5Y1x4ZTMiCisgICAgYiJceDFkXHhjOVx4ZWRceGMyXHgwNlx4Y2NceGNlIVx4OTJceGU1XHhmZVx4OWNeXHhhNTl3IFx4OWJQXHhhM1BLXHgwOGQiCisgICAgYiJceGY5XHhlMlp9XHhhN1x4YmZceGVkXHhlYiUkXHgwY1x4ODJceGI4L1x4YjBceDAxXHhhOSYsXHhmN3Foe1FceDk2KVx4ZjIiCisgICAgYiJxXHg5Nlx4YzNceDgwXHhiNFx4MTJceGIwXHhiYVx4ZTZvXHhmNCFceGI0W1x4ZDRceDhhd1x4MTBceGY3dFx4MGNceGIzIgorICAgIGIiXHhkOVx4ZDVceGMzYF5ceDgxXHgxMT8/XFxceGE0XHg5OVx4ODVSXHhkNFx4OGVceDgzXHhjOVx4MWVYXHhiZmFceGYxIgorICAgIGIiXHhhY1x4YjBceGVhXHhlYVx4ZDdceGQwXHhhYlx4MThceGUyXHhmMlx4ZWRceGUxXHhiN1x4YzlceDE4XHhjYlNceGU0PiIKKyAgICBiIlx4YzlceDk1SFx4ZThceGNiXHRcciVceGViXHhjNyQub1x4ZjFceGYzUlx4MTdceDFkYlx4YmJceGQ4VVx4YTVeXHhjY1MiCisgICAgYiJceDE2XHgwMVx4ODdceGYzL1x4OTNceGQxXHhmMHZceGMwclx4ZDdceGNjXHhhMkdrelx4Y2FceDgwXHgwZVx4ZmRceGQwIgorICAgIGIiXHg4Ylx4YmJceGQySXhceGIzXHgxZXlceGNhLTBceGUzel5ceGQ2XHhkNlx4OGZfXHhmMVx4OWRQXHg5ZmlceGE3XHhkMSIKKyAgICBiIlx4ZThceDkwXHg4NFx4ZGNceGJmXHhjZGt5XHg4ZVx4ZGNceDgxXHg3Zlx4YTNceGIyK1x4YmZceDA0XHhlZlx4ZDhcXCIKKyAgICBiIlx4YzRceGRmXHhlMVx4YjBceDAxXHhlOVx4OTNceGUzWVx4ZjFceDFkWVx4ZThoXHg4MVx4Y2ZceGYxd1x4Y2NceGI0XHhlZiIKKyAgICBiIiBceDhifFx4MDRceGVhXHg4M2VqXHhiZVx4MWZceGQ0elx4OWNgXHhkM1x4MWFceDkyQVx4MDZceGU1XHg4Zlx4YTlceDEzIgorICAgIGIiXHRceDllPVx4ZmFceDFjXHhlNV9ceDlmJXZceDFib1x4MTFaT1x4ZDhceGY0XHRceGRkTVx4MTYtXHgwNFx4ZmNceDE4PFwiIgorICAgIGIiQ01ceGRkZ35iXHhmNlx4ZWZceDhlXHgwY1x4ZDBceGRlfFx4YTAnXHg4YVx4MGNceGQ2eFx4YWUhSlx4YTZGXHg4OFx4MTV1IgorICAgIGIiXHgwMDhceDE3XHhiYzd5XHhiM1x4ZDh1XHhhY19ceDg1XHg4ZFx4ZTdceGMxQFx4OWNceGVjcWNceGEzI1x4YWRceGYxIgorICAgIGIiXHg5MzVceGI1KV9cclx4ZWMzXVx4MGZvXTVceGQwbXlceDA3XHg5Ylx4ZWVceDgxXHhiNVx4MGZceGNmSytceDAwXHhjMCIKKyAgICBiIlx4ZTRiXHgxMFx4ZTRceDBjXHgxYSBceDliXHhlMFx4OTd0XHhmNlx4YTFceDllXHg4NTBceGJhXHgwY1x4OWFceDhkXHhjOCIKKyAgICBiIlx4OGZceDA3XHhkN1x4YWVceGM4XHhmOStpXHhkY1x4YjlrXHhiMD5mXHgxOVx4Yjhcclx4YThceGY4XHgxZiRceGE1e3AiCisgICAgYiJceGM2XHg4ODBceGNlXHhkYlx4Y2ZceGNhX1x4ODZceGFjXHg4OGg2XHg4YlolJ1x4ZDBcblx4YmZceDBmXHg5Y1wiXHhiYSIKKyAgICBiIlx4ZTVceDg2XHg5Zlx4MGY3WD1tTlhbXHhjY1x4MTlGVVx4YzlceDg2MFx4YmNceDkwYSsqIFx4YWVfJFx4MDNceDFlXHhkMyIKKyAgICBiIlx4Y2RfXHhhMFx4OWNceGRlXHhhZjQ2cVx4YTVceGM5XHg5Mlx4ZDdceGNhXHhlM2BceDlkXHg4NX1ceGI0XHhmZlx4YjMiCisgICAgYiJceDgzXHhmYlx4YjZceGNhXHhhZWBceDBid1x4N2ZceGZjXHhkOFx4YWNWZVx4MTlceGM4XHgxN1x4MGJaXHhhZFx4ODgiCisgICAgYiJceGViI1x4OTdceDAzXHgxM1x4YjFkXHgwZntceDBjXHgwNHdceDA3XHJceDk3XHhiZFx4ZDZceGMxXHhjM0I6XHg5NVx4MDgiCisgICAgYiJeXHgxMFZceGFlYUhceDAyXHhkOVx4ZTNcblxcXHgwMVhceGY2XHg5Y1x4OGFceDA2dSMlXHhiZSpceGExXHgxOHZceDg1IgorICAgIGIiXHhlYyFcdDRceDAwXHgwMFx4MDBceDAwVmo/dUxVXHhmM1x4YTZceDAwXHgwMVx4ZmJceDA3XHg4MVx4MGZceDAwXHgwMHR3IgorICAgIGIiXHg5OVBceGIxXHhjNGdceGZiXHgwMlx4MDBceDAwXHgwMFx4MDBceDA0WVoiCispCisKK0NPTVBSRVNTRURfQUxPTkUgPSAoCisgICAgYiJdXHgwMFx4MDBceDgwXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4MDVceDE0XHgwN2JYXHgxOSIKKyAgICBiIlx4Y2RceGRkblx4OThceDE1XHhlNFx4YjRceDlkb1x4MWRceGM0XHhlNVxuXHgwM1x4Y2MyaFx4YzdcXFx4ODZceGZmXHhmOCIKKyAgICBiIlx4ZTJceGZjXHhlN1x4ZDlceGZlNlx4YjgoXHhhOHdkXHhjMlwidS5uXHgxZVx4YzNceGYyXHg4ZVx4OGRceDhmXHgwMiIKKyAgICBiIlx4MTcvXHhhNj1ceGYwXHhhMlx4ZGYvTVx4ODlceGJlXHhkZVx4YTdceDFjelx4MTgtXVx4ZDVceGVmXHgxM1x4OGZyWiIKKyAgICBiIlx4MTVceDgwXHg4Y1x4ZjhceDhkb1x4ZmFceDEyXHg5YiN6L1x4ZWZceGYwXHhmYUZceDAxXHg4Mlx4YTNNXHg4ZVx4YTF0IgorICAgIGIiXHhjYTYgQkYkXHhlNVFceGE0XHg5OFx4ZWVceGRlbFx4ZThceDdmXHhmMFx4OWQsYm5ceDBiXHgxM1x4ZDRceGE4XHg4MSIKKyAgICBiIlx4ZTROXHhjOFx4ODZceDE1M1x4ZjV4Mlx4YTJPXHgxM0BRXHhhMVx4MDAvXHhhNVx4ZDBPXHg5N1x4ZGNvXHhhZVx4Zjd6IgorICAgIGIiXHhjNFx4Y2RTXHhiNnQ8XHgxNlx4ZjJceDljSSNceDg5dWRceGM2NllceGQ5XHhlZVx4ZTZceGNlXHgxMl1ceGU1XHhmMCIKKyAgICBiIlx4YWFceDk2LVBlXHhhZGU6XHgwNFx0XHgxYlx4ZjdceGRiN1xuXHg4Nlx4MWZwXHhjOEpceGJhXHhmNFx4ZjBWXHhhOSIKKyAgICBiIlx4ZGNceGYwXHgwMiVHXHhmOVx4ZGY9P1x4MTVceDFiXHhlMShceGNlXHg4Mj1ceGQ2SVx4YWMzXHgxMlx4MGNSXHhiNyIKKyAgICBiIlx4YWVcclx4YjFpXHgwM1x4OTVceDAxXHhiZFx4YmVceGZhXHgwMnNceDAxUFx4OWRceDk2WFx4YjEyalx4YzhMXHhhOCIKKyAgICBiIlx4ODRiXHhmOFx4MWVwbFx4ZWFqclx4ZDE9XHRceDAzXHhkZFx4MTNceDFiMyFFXHhmOXZWXHhkYUZceGYzXHhkN1x4YjQiCisgICAgYiJceDBjXHhhOVB+XHhlY1x4ZGVFXHhlMzdceGY2XHgxZFx4YzZceGJiXHhkZGMlXHhiNlx4MGZJXHgwN1x4ZjA7XHhhZlx4ZTciCisgICAgYiJceGEwXHg4Ylx4YTdaXHg5OShceGU5XHhlMlx4ZjBvXHgxOD5gXHhlMVx4YWFceGE4XHhkOVx4YTFceGIyfVx4ZTdceDhkIgorICAgIGIiXHg4MzRUXHhiNlx4ZWZceGMxXHhkZVx4ZTNceDk4XHhiY0RceDAzTUFAXHhkOFx4ZWRceGRjXHhjOFx4OTNceDAzXHgxYSIKKyAgICBiIlx4OTNceDBiXHg3Zlx4OTRceDEyXHgwYlx4MDJTYVx4MThceGM5XHhjNVx4OWJUSkV9XHhmNlx4YzhnXHgxNyNaVlx4MDEiCisgICAgYiJceGM5XHg5ZGNceDgzXHgwZT4wXHgxNlx4OTBTXHhiOC9ceDAzeV9ceDE4XHhmYShceGQ3XHgwYnJceGEyXHhiMFx4YmE/IgorICAgIGIiXHg4Y1x4ZTZceDgzQFx4ODRceGRmXHgwMjpceGM1elx4OWVceGE2XHg4NFx4YzlceGY1QmV5WFx4ODNceDFhXHhmMSA6XHQiCisgICAgYiJceGY3XHgxOVx4ZmV4RFxcJkdceGYzXHg4NVlceGEySlx4ZjlceDBidntceDg5XHhmNlx4ZTcpQVx4YWZceDA0b1x4MDAiCisgICAgYiJceDA3NVx4ZDNceGUwXHg3Zlx4OTdceDk4Rlx4MGY/dlx4OTNceGVkVnRUZlx4YjVceDk3XHg4M1x4ZWRceDE5XHhkN1x4MWEiCisgICAgYiIna1x4ZDdceGQ5XHhjNVxcWVx4ZDFceGRjXHgwN1x4MTV8d1x4YmNceGFjZFx4ODdceDA4ZFx4ZWNceGE3XHhmNlx4ODIiCisgICAgYiJceGZjXHhiM1x4OTNceGViXHhiOSBceDhkXHhiYyAsXHhiM1hceGIwXHhkMnNceGQ3XHhkMVx4ZmZ2XHgwNVx4ZGZ9XHhhMiIKKyAgICBiIlx4OTZceGZiJVxuXHhkZlx4YTJceDdmXHgwOC5ceGExNlxuXHhlMFx4MTlceDkzXHg3Zmhcblx4MWNceDhjXHgwZiBceDExIgorICAgIGIiXHhjNkJsXHg5NVx4MTlVfVx4ZTRzXHhiNVx4MTBIXHhlYVx4ODZwQlx4ZTg4XHg5NVx4YmVceDhjWlx4ZGJceGU0XHg5NEEiCisgICAgYiJceDkyXHhiOTt6XHhhYVx4YTd7XHgxYzUhXHhjMFx4YWZceGMxQVx4ZjlceGRhXHhmMCRceGIwXHgwMnFnXHhjOFx4YzcvfCIKKyAgICBiIlx4YWZyXHg5OV5ceDkxXHg4OFx4YmZceDAzXHhkOT1ceGQ3blx4ZGE2ez44XG5ceGM3Olx4YTknXHhiYS5ceDBiXHhlMiIKKyAgICBiIlx4YjVceDFkXHgwZVxuXHg5YVx4OGVceDA2XHg4ZjpceGRkXHg4MidbXHhjM1wid0QkXHhhN3dceGVjcVx4OGMsMVx4OTMiCisgICAgYiJceGQwLFx4YWUyd1x4OTNceDEyJEpkXHgxOW1nXHgwMlx4OTNceDljQVx4OTVceDlkJlx4Y2E4aVx4OWNceGIwO1x4ZTdOUSIKKyAgICBiIlx4MWZyaFx4OGJlTDtceGIwbVx4ZWVceDA3UVx4OWJceGM2XHhkOFx4MDNceGI1XHhkZU5ceGQ0XHhmZVx4OThceGQwXHhkYyIKKyAgICBiIlx4MWFbXHgwNFx4ZGVceDFhXHhmNlx4OTFqXHhmOEVPbGlceDhlQl5ceDFkXHg4Mlx4MDdceGIyXHhiNVJdXHhiN1x4ZDciCisgICAgYiJceGU5XHhhNlx4YzMuXHhmYlx4ZjAtXHhiNGVceDliXHhkZVx4MDNceDg4XHhjNlx4YzFpTlx4MGVceDg0d2JRXHhkZn4iCisgICAgYiJceGU5XHhhNFx4ODg0XHg5NmtNXHhiYylUXHhmM1x4ODlceDk3XHgwZlx4MTQzXHhlNylceGEwXHhiM0JceDAwXHhhOFx4YWYiCisgICAgYiJceDgyXlx4Y2JceGM3Li5ceGRiXHhjN1x0XHg5ZEhceGVlNVx4ZTkjXHhlNk5WXHg5NFx4Y2IkS2tceGUzXHg3ZlxyXHhlM3QiCisgICAgYiJceDEyXHhjZidceGVmUlx4OGJceGY0Mlx4Y2YtTEhceGFjXHhlNVx4MWYwfj9TT1x4ZWJceGMxRVx4MWFceDFjXVx4ZjIiCisgICAgYiJceGM0PFx4MTFceDAyXHgxMFowYSo/XHhlNHJceGZmXHhmYlx4ZmZceGY2XHgxNG5HXHhlYWReXHhkNlx4ZWY4XHhiNnVFSSIKKyAgICBiIlx4OTlcblZceGUyXHhiM1x4OTVceDhlXHg4M1x4ZjZpIVx4YjUmMUZceGIxRFBceGY0IFNPM0Qhd1x4OTlfR1x4N2YrXHg5MCIKKyAgICBiIi5ceGFiXHhiYl1ceDkxPlx4YzkjaDtceDBmNUpceDkxS1x4ZjReLVtceDllXHg4YVxcXHg5NFx4Y2FceGFmXHhmNlx4MTkiCisgICAgYiJceGQ0XHhhMVx4OWJceGM0XHhiOHBceGExXHhhZVx4MTVceGU5clx4ODRceGUwXHhjYXIubCBbXVx4OGJceGFmKzBceGYyZyIKKyAgICBiIlx4MDFhS1lceGRmSVx4Y2YsXG5ceGU4XHhmMFx4ZTdWXHg4MF8jXHhiMlx4ZjJceGE5XHgwNlx4OGM+d1x4ZTJXLFx4ZjQiCisgICAgYiJceDhjXHJceGY5NjNceGY1Slx4Y2MyXHgwNT1rVFx4ZWFVdGlceGU1X1x4Y2VceDFiXHhmYVx4OGRsXHgwMmhceGVmXHhhOCIKKyAgICBiIlx4ZmJmXHg3Zlx4ZmZceGYwXHgxOVx4ZWF4IgorKQorCitGSUxURVJTX1JBV18xID0gW3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDN9XQorQ09NUFJFU1NFRF9SQVdfMSA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGZkXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk2Y3lxXHhhMVx4ZGRceGVlIgorICAgIGIiXHhmOFx4ZmFtXHhlMydceDg4XHhkM1x4ZmZceGU0XHg5ZSBceGNlUVx4OTFceGE0XHgxNElceGY2XHhiOVx4OWRWTDhceDE1IgorICAgIGIiX1x4MGVceDEyXHhjM1x4ZWJceGJjXHhhNVx4Y2RcbldceDFkJD1SO1x4MWRceGY4azhcdFx4YjF7XHhkNFx4YzUrXHg5ZCIKKyAgICBiIlx4ODdjXHhlNVx4ZWZceDk4XHhiNFx4ZDdTM1x4Y2RceGNjXHhkMlx4ZWRceGE0XHgwZW1ceGU1XHhmNFx4ZGRceGQwYiIKKyAgICBiIlx4YmU0Klx4YWFceDBiXHhjNVx4MDhceDEwXHg4NStceDgxLlx4MTdceGFmOVx4YzliXHhlYVpyQVx4ZTIwXHg3ZnNcInIiCisgICAgYiJceGRhR1x4ODFceGRlXHg5MGN1XHhhNVx4ZGJceGE5LkFceDA4bFx4YjA8XHhmNlx4MDNceGRkT2lceGQwXHhjNVx4YjQiCisgICAgYiJceGVjXHhlY2c0dDZcIlx4YTZceGI4b1x4YjU/XHgxOF59XHhiNn1ceDAzWzpceGViXHgwM1x4YTlcbltceDg5bFx4MTlnIgorICAgIGIiXHgxNlx4YzgyXHhlZFx4MGJceGZiXHg4Nm5ceGEyXHg4NTdAXHg5M1x4Y2Q2VFx4YzN1XHhiMFx0XHhmOVx4MWJceDkxOCIKKyAgICBiIlx4ZmNbXHgxYlx4MWU0XHhiM1x4MTRceDA2UENWXHhhOFwiXHhmNVx4ODF4flx4ZTlceGI1Tlx4OWNLXHg5Zlx4YzZceGMzJSIKKyAgICBiIlx4YzhrOns2XHhlN1x4ZjdceGJkXHgwNVx4MDJceGI0XHhjNFx4YzNceGQzXHhmZFx4YzNceGE4XFxceGZjQFx4YjFGXyIKKyAgICBiIlx4YzhceDkwXHhkOXNVXHg5OFx4YWQ4XHgwNVx4MDdceGRlN0pceDhiTVx4ZDBceGIzO1hceGVjXHg4N1x4ZWZceGFlXHhiMyIKKyAgICBiImVPLFx4YjF6LGRceDExeVx4ZWVqbEJceDAyXHgxZFx4ZjI4XHgxZiNceDg5Nlx4Y2VceDBiXHhmMFx4ZjVceGE5UEtceDBmIgorICAgIGIiXHhiM1x4MTNQXHhkOFx4ODhceGQyXHhhMVx4MDhceDA0Qz9ceGRiXHg5NF9ceDlhXCJceGU5XHhlM2VceDFkXHhkZVx4OWIiCisgICAgYiJceGExXHhlOD5IXHg5OFx4MTA7XHhjNVx4MDMjXHhiNVx4OWQ0XHgwMVx4ZTdceGM1XHhiYSV2XHhhNDlceDk3QVx4ZTBcIiIKKyAgICBiIlx4OGNceGMyMlx4ZTNpXHhjMVx4OWRceGFiM1x4ZGZceGJlXHhmZERtN1x4MWJceDlkXHhhYlx4YjVceDE1bzpKXHg5MiIKKyAgICBiIlx4ZGJceDgxNlx4MTdceGMyT1x4OTlceDFiXHgwZVx4OGRceGYzXHRRXHhlZFx4OGVceDk1Uy9ceDE2TVx4YjJTXHgwNCIKKyAgICBiIlx4MGZceGMzSlx4YzZceGM3XHhlNFx4Y2JceGM1XHhmNFx4ZTdkXHgxNFx4ZTQ9XkJceGZiXHhkM0VceGQzXHgxZVx4Y2QiCisgICAgYiJceDkxXHhhNVx4ZDBHXHg4Zi5ceGY2XHhmOVx4MGJiJlx4ZDlceDlmXHhjMlx4ZmRqXHhhMlx4OWVceGM0XFxceDBlXHgxZEMiCisgICAgYiJ2XHhlOFx4ZDJceDhhP15IXHhlY1x4YWVceGViPlx4ZmVceGI4XHhhYlx4ZDRJcVlceDhjXHhkNEs3XHgxMVx4ZjREXHhkMFciCisgICAgYiJceGE1XHhiZVx4ZWFPXHhiZlx4ZDBceDA0XHhmZGxceDEwXHhhZTVceGQ0VVx4MTlceDA2XHhmOXtceGFhXHhlMFx4ODEiCisgICAgYiJceDBmXHhjZlx4YTNre1x4OTVceGJkXHgxOVx4YTJceGY4XHhlNFx4YTNceDA4TypceGYxXHhmMUItXHhjNyhceDBlUlx4ZmQiCisgICAgYiJARVx4OWZceGQzXHgxZTpceGZkVlx4YjdceDA0WVx4OTRceGViXVx4ODNceGM0XHhhNVx4ZDdceGMwZ1hceDk4XHhjZlx4MGYiCisgICAgYiJceGNkM1x4MDBdblx4MTdceGVjXHhiZFx4YTNZXHg4Nlx4YzVceGYzdVx4ZjYqXHhiZFRceGVkQSRBXHhkOUFceGU3XHg5OCIKKyAgICBiIlx4ZWZceDE0XHgwMlx4OWFceGZkaXdceGVjXHhhMFx4ODdceDExXHhkOSVceGM1XHhlYlx4OGE9XHhhZVx4YzBceGM0XHhjNiIKKyAgICBiIkRceDgwXHg4Zlx4YThceGQxXHhiYnFceGIyXHhjMFx4YTBceGY1Q3FwXHhlZUxceGUzXHhlNVx4ZGMgXHg4NFwiXHhlOSIKKyAgICBiIlx4ODB0XHg4M1x4MDVceGJhXHhmMVx4YzV+XHg5M1x4YzlceGYwXHgwMWNceGNlaXhceDlkXHhlZFx4YzUpbFx4MTYpXHhkMSIKKyAgICBiIlx4MDNAbFx4MDRceDdmXHg4N1x4YTV5blx4MWJceDAxRFx4YWE6XHhkMlx4OTZceGI0XHhiMz9ceGIwXHhmOVx4Y2VceDA3IgorICAgIGIiXHhlYlx4ODFceDAwXHhlNFx4YzNceGY1JV9ceGFlXHhkNFx4ZjlceGViXHhlMlxyaFx4YjIjXHhkNjdRXHgxNkRceDgyaG4iCisgICAgYiJceGQxXHhhM18/cVx4ZjBceGUyXHhhY1x4ZjMxN1x4OWVceGQwX1x4ODN8XHhmMVx4Y2FceGI3XHg5NVNceGFiV1x4MTIiCisgICAgYiJceGZmXHhkZHRceGY2OUxceDAxXHhmMnxceGRhV1x4ZGFceGVlc1x4OThMXHgxOFx4YjhfXHhlOCRceDgyXHhlYVx4ZDYiCisgICAgYiJceGQxRlx4ZDRceDBiXHhjZGtceDAxdmZceDg4aFx4YzNceGFlXHhiOTFceGM3UVx4OWZceGE1R1x4ZDlceGNjXHgxZlx4ZTMiCisgICAgYiI1XHhiMVx4ZGN5XHg3ZklceDhiY3dceDhlXHgxMHJJcFx4MDI6XHgxOXBfXHhjOHZceGNlYVwiXHhjMVx4ZDlceDkxXHgwMyIKKyAgICBiIlx4YmZlXHhiZVx4YTZceGIzXHhhOFx4MTRceDE4XHhjM1x4YWJIKm19XHhjMlx4YzFceDlhfT5sJVx4Y2VceDg0XHg5OSIKKyAgICBiIlx4YjNkXHhhZlx4ZDNceDgyXHgxNVx4ZGZceGMxXHhmYzVmT2dceDliXHhmY1x4OGVeJlx0QFx4Y2VceDlmXHgwNkpceGI4IgorICAgIGIiXHhiNVx4ODZceDFkXHhkYXtceDlmXHhhZVx4YjBceGZmXHgwMlx4ODFyXHg5MnpceDhjTVx4Yjdob1x4YzleXHg5Y1x4YjYiCisgICAgYiJceDljXHhhZVx4ZDFceGM5XHhmNFx4ZGZVN1x4ZDZcXCFceGVhXHgwYlx4OTRrXHhiOVVkflx4OThceGU3XHg4Nlx4OGF6IgorICAgIGIiXHgxMDtceGUzXHgxZFx4ZTVQR1x4ZjhceGE0XHgxMlx4MDV3XHg5OF5ceGM0XHhiMVx4YmJceGZiXHhjZlx4ZTBceDdmIgorICAgIGIiXHgwMzNTZlx4MGMgXHhiMVx4ZjZAXHg5NFx4ZTVceGEzXHhiMlx4YTdceDEwXHg5YVx4YzBceDE0XHhjM3NceGI1eFJEIgorICAgIGIiXHhmNGBXXHhkOVx4ZTVceGQzXHhjZlx4OTFcclRaLVhceGJlXHhiZlx4YjVceGUyXHhlZXxceDFhXHhiZlx4ZmJceDA4IgorICAgIGIiXHg5MVx4ZTFceGZjXHg5YVx4MThceGEzXHg4Ylx4ZDZeXHg4OVx4ZjVbXHhlZlx4ODdceGQxXHgwNlx4MWM3XHhkNlx4YTIiCisgICAgYiJcdFx0UTUvQFNceGMwNVx4ZDJWaEFLXHgwM1ZDXHJceDliXHg5M1x4ZDZNXHhmMXhPXHhhYU9ceGVkXHhiOTxceDBjXHhkYWUiCisgICAgYiIqXHhkMFx4MDdIazZceDlmRytceGExKVx4Y2RceDljbFx4ODdceGRiXHhlMVx4ZTdceGVmS31ceDg3NVx4YWJceGEwXHgxOXUiCisgICAgYiJceGY2KkZceGIzMlx4MDBceDAwXHgwMCIKKykKKworRklMVEVSU19SQVdfMiA9IFt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJkaXN0IjogMn0sCisgICAgICAgICAgICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwKKyAgICAgICAgICAgICAgICAgICJwcmVzZXQiOiBsem1hLlBSRVNFVF9ERUZBVUxUIHwgbHptYS5QUkVTRVRfRVhUUkVNRX1dCitDT01QUkVTU0VEX1JBV18yID0gKAorICAgIGIiXHhlMFx4MDdceDgwXHgwNVx4OTFdXHgwMFx4MDVceDE0XHgwNi1ceGQ0XHhhOGQ/XHhlZlx4YmVceGFmSFx4ZWVceDA0MiIKKyAgICBiIlx4Y2IuXHhiNWdceDhmXHhmYlx4MTRceGFiXHhhNVx4OWZceDAyNXpceGE0XHhkZFx4ZDhcdFt9V1x4ZjhceDBjXHgxZG1IIgorICAgIGIiXHhmYVx4MDVceGZjZ1x4YmFceGU1XHgwMVFceDBiXHg4M1JceGI2QVx4ODg1XHhjMFx4YmFceGVlXG5ceDFjdn5ceGRlOm8iCisgICAgYiJceDA2OkpceGE3XHgxMUNjXHhlYVx4ZjdceGU1Km9ceGY3XHg4M1xcbFx4YmRFXHgxOVx4MWZcclx4YThceDEwXHhiNDIiCisgICAgYiJceDBjYVV7XHhkN1x4Yjh3XHhkY1x4YmVceDFiXHhmYzhceGI0XHhjY1x4ZDM4XFxceGY2XHgxM1x4ZjZceGU3XHg5OFx4ZmEiCisgICAgYiJceGM3W1x4MTdfOVx4ODYlXHhhOFx4ZjhceGFhXHhiOFx4OGRmcyNceDFlPVx4ZWQ8XHg5Mlx4MTBcXHRceGZmXHg4Nlx4ZmIiCisgICAgYiI9XHg5ZTdceDE4XHgxZGZ0XFxceGI1XHgwMVx4OTVRXHhjNVx4MTlceGIzOFx4ZTBceGQ0XHhhYVx4MDdceGMzXHg3Zlx4ZDgiCisgICAgYiJceGEyXHgwMD4tXHhkM1x4OGVceGExI1x4ZmFceDgzQXJBbVx4ZGJKflx4OTNceGEzQlx4ODJceGUwXHhjN1x4Y2MoXHgwOGAiCisgICAgYiJXS1x4YWRceDFiXHg5NGthalx4MDQgXHhkZVx4ZmNceGUxXHhlZFx4YjBceDgyXHg5MVx4ZWZTXHg4NCVceDg2XHhmYmkiCisgICAgYiJceDk5WFx4ZjFCXHhlN1x4OTA7RVx4ZmRlXHg5OFx4ZGFceGNhXHhkNlRceGI0YmdceGE0XG5ceDlhalx4ZDFceDgzXHg5ZV0iCisgICAgYiJcIlx4N2ZNXHhiNVx4MGZyXHhkMlxcXHhhNWp+UFx4MTBHSFx4YmZOKlpceDEwLlx4ODFcdHBFXHg4YVx4MDhceGJlMVx4YmQiCisgICAgYiJceGNkXHhhOVx4ZTFceDhkXHgxZlx4MDRceGY5XHgwZUhceGI5XHhhZVx4ZDZceGMzXHhjMVx4YTVceGE5XHg5NVBceGRjfiIKKyAgICBiIlx4ZmZceDAxXHg5MzBceGE5XHgwNFx4ZjZceDAzXHhmZVx4YjVKS1x4YzNdXHhkZDlceGIxXHhkM1x4ZDdGXHhmNVx4ZDEiCisgICAgYiJceDFlXHhhMFx4MWNfXHhlZFtceDBjXHhhZVx4ZDRceDhiXHg5NDZceGViXHhiZlx4YmJceGUzJGtTe1x4YjVceDgwLGY6U2oiCisgICAgYiJceDBmXHgwOHpceDFjXHhmNVx4ZThceGU2XHhhZVx4OThceGIwUX5yXHgwZlx4YjBceDA1P1x4YjZceDkwXHgxOVx4MDImIgorICAgIGIiXHhjYlx4ODBcdFx4YzRceGVhXHg5Y3x4XHhjZVx4MTBceDljXHhjNXxceGNiZGhoK1x4MGMnXHhjNVx4ODFceGMzM1x4YjUiCisgICAgYiJceDE0cVx4ZDZceGM1XHhlM2BaI1x4ZGNceDhhXHhhYlx4ZGRceGVhXHgwOFx4YzJJXHhlN1x4MDJse1x4ZWNceDE5Nlx4MDYiCisgICAgYiJceDkxXHg4ZFx4ZGNceGQ1XHhiM3hceGUxaHolXHhkMVx4ZjhceGE1XHhkZFx4OTghXHg4Y1x4MWNceGMxXHgxN1JVYVx4YmIiCisgICAgYiJceDk1XHgwZlx4ZTRYXHhlYTFceDBjXHhmMT1SXHhiZVx4YzYwXHhlM1x4YTRceDlhXHg5MGJkXHg5NyRdQlx4MDFceGRkIgorICAgIGIiXHgxZlx4ZTNoMmNceDFlXHhhMExgNFx4YzZ4XHhhM1pceDhhXHJceDE0XVReXHhkOFx4ODlceDFiXHg5MlxyO1x4ZWRZIgorICAgIGIiXHgwY1x4ZWZceDhkOXpceGYzb1x4YjYpZlx4YTldJG5ccnBceDkzXHhkMFx4MTBceGE0XHgwOFx4YjhceGIyXHg4Ylx4YjYiCisgICAgYiJceDhmXHg4MFx4YWU7XHhkY1FceGYxXHhmYVx4OWFceDA2XHg4ZVx4YTVceDBlXHg4Y0tceDljIEBceGFhOlVjWFxuIVx4YzYiCisgICAgYiJceDAyXHgxMlx4Y2JceDFiXCI9XHgxNi5ceDFmXHgxNzZceGYyZz1ceGUxV25ceGU5XHhlMVx4ZDRceGYxT1x4YWRceDE1IgorICAgIGIiXHg4Nlx4ZTlceGEzVFx4YWZceGE5XHhkN0RceGI1XHhkMVczcG50XHgxMVx4YzdWT2pceGI3TVx4YzRpXHhhMVx4ZjEkMyIKKyAgICBiIlx4YmJceGRjXHg4YWZceGIwXHhjNVlcclx4ZDFceGZiXHhmMlx4ZTdLXHhlNlx4YzVod09ceGZlXHg4YzJeJlx4MDdceGQ1IgorICAgIGIiXHgxZlZceDE5XHhmZFxyXHgxNFx4ZDJpPXlaXHhlNm9ceGFmXHhjNlx4YjZceDkyXHg5ZFx4YzRcclx4YjNceGFmd1x4YWMlIgorICAgIGIiXHhjZmNceDFhXHhmMWBdXHhmMlx4MWFceDllXHg4MDhceGVkbVx4ZWRRXHhiMlx4ZmVceGU0aGBbcVx4YWVceGUwXHgwZiIKKyAgICBiIlx4YmEwZ1x4YjZcIk5ceGMzXHhmYlx4Y2ZSXHgxMVx4YzVceDE4KShceGM0MFxcXHhhM1x4MDJceGQ5RyFceGNlXHgxYiIKKyAgICBiIlx4YzFceDk2eFx4YjVceGM4elx4MWZceDAxXHhiNFx4YWZceGRlXHhjMlx4Y2RceDA3XHhlN0hceGIzeVx4YThNXG5cXEFcdCIKKyAgICBiImFyXHhkZE1ceDhiXHg5YVx4ZWFceDg0XHg5YiFceGYxXHg4ZFx4YjFceGYxflx4MWVcclx4YTVIXHhiYVx4ZjFceDg0byIKKyAgICBiIlx4ZGFceDg3XHgwMWhceGU5XHhhMlx4YmVceGJlcU5ceDlkXHg4NFx4MGIhV0dceGRhXHhhMVx4YTVBXHhiN1x4YzdgaiIKKyAgICBiIlx4MTVceGYyXHhlOVx4ZGQ/XHgwMTVCXHhkMn5FXHgwNlx4MTFceGUwXHg5MSFceDA1Xlx4ODBceGRkXHhhOHlceDE1fSIKKyAgICBiIlx4YTEpXHhiMSlceDgxXHgxOFx4ZjRceGY0XHhmOFx4YzBceGVmRFx4ZTNceGRiMmZceDFlXHgxMlx4YWJ1XHhjOVx4OTciCisgICAgYiJceGNkXHgxZVx4YTdceDBjXHgwMng0XzZceDAzXHhjNCR0XHhmMzlceDk0XHgxZD1ceGNiXHhiZnZcXFx4ZjVceGEzXHgxZCIKKyAgICBiIlx4OWQ4amtceDk1XHgxMylmZlx4ZjluXHhjNFx4YTlceGUzXHgwMVx4YjhceGRhXHhmYlx4YWJceGRmTVx4OTlceGZiXHgwNSIKKyAgICBiIlx4ZTBceGU5XHhiMElceGY0RVx4YWJceGUyXHgxNVx4YTNceDAzNVx4ZTdceGRlVFx4ZWVceDgycFx4YjRceDg4XHhkMyIKKyAgICBiIlx4ODkzXHg5Yy9ceGMwXHhkNlx4OGZvdTtceGY2XHg5NVBSXHhhOVx4YjJceGMxXHhlZkZqXHhlMlx4YTckXHhmN2hceGYxIgorICAgIGIiXHhkZksoXHhjOWNceGJhN1x4ZThceGUzKVx4ZGRceGIyLFx4ODNceGZiXHg4NFx4MTgueVx4MThRaVx4ODhceGY4YGgtIgorICAgIGIiXHhlZlx4ZDVceGVkXHg4Y1x0XHhkOFx4YzNeXHgwZlx4MDBceGI3XHhkMFshXHhhZk1ceDliXHhkNy5ceDA3XHhkOFx4ZmIiCisgICAgYiJceGQ5XHhlMi1TK1x4YWE4LFx4YTBceDAzXHgxYiBceGVhXHhhOFx4MDBceGMzXHhhYn5ceGQwJGVceGE1XHg3Zlx4ZjciCisgICAgYiJceDk1UF1ceDEyXHgxOWlceGQ5XHg3Zm9ceDBjXHhkOGdeXHJFXHhhNVx4ODBceDE4XHhjNVx4MDFceDgwXHhhZWtgXHhmZn4iCisgICAgYiJceGI2eVx4ZTcrXHhlNVx4MTFeRFx4YTdceDg1XHgxOFwiIVx4ZDZceGQyXHhhN1x4ZjRceDFlVFx4ZGJceDAyXHhlMTUiCisgICAgYiJceDAyWVx4YmNceDE3NFpceGU3XHg5Y0hceDFjXHhiZlx4MGZceGM2XHhlOWZdXHhjZlx4OGN4XHhiY1x4ZTVceDE1XHg5NCIKKyAgICBiIlx4ZmMzXHhiY1x4YTdUVUhceGYxXHg4NFx4MWJceGY3XHhhOXlceGMwN1x4ODRceGY4WFx4ZDhceGVmXHhmYyBceDFjXHhkOCIKKyAgICBiIiggL1x4ZjJceGI3XHhlY1x4YzFcXFx4OGNceGY2XHg5NVx4YTFceDAzSlx4ODN2UDhceGUxXHhlM1x4YmJ+XHhjMjRrQSIKKyAgICBiIlx4OTh5XHhhMVx4ZjJQXHhlOVx4OWRceGM5Slx4ZjhOXHg5OVx4YjRceGNlYU9ceGRlXHgxNlx4MWVceGMyXHgxOVx4YTciCisgICAgYiJceDAzXHhkMlx4ZTBceDhmOlx4MTVceGYzXHg4NFx4OWVceGVlXHhlNmVceGI4XHgwMnFceGM3QUNceDFlbXdceGZkXHQiCisgICAgYiJceDlhXHgxZXVceGMxXHhhOVx4Y2FDd1VQXHgwMFx4YTVceGY3OEw0dyFceDkxTDIgXHg4N1x4ZDBceGYyXHgwNlx4ODFqIgorICAgIGIiXHg4MDtceDAzVlx4MDZceDg3XHg5Mlx4Y2JceDkwbHZARVx4OGRceDhkXHhhNVx4YTZceGU3WltceGRmXHhkNkVceDAzYD4iCisgICAgYiJceDhmXHhkZVx4YTFiWlx4ODRceGQwXHhhOWBceDA1XHgwZXtceDgwO1x4ZTNceGJlZlx4OGRceDFkXHhlYmsxLlx4ZTMiCisgICAgYiJceGU5Tlx4MTVceGY3XHhkNChceGZhXHhiYlx4MTVceGJkdVx4ZjdceDdmXHg4Nlx4YWUhXHgwM0xceDFkXHhiNVx4YzEiCisgICAgYiJceGI5XHgxMVx4ZGJceGQwXHg5M1x4ZTRceDAyXHhlMVx4ZDJceGNiQmpjX1x4ZTh9ZFx4ZGJceGMzXHhhMFlceGJlXHhjOS8iCisgICAgYiJceDk1XHgwMVx4YTMsXHhlNmJsQFx4MDFceGRicFx4YzJceGNlXHgxNFx4MTY4XHhjMnFceGUzdUhceDg5WFx4YTRceGE5IgorICAgIGIiXHgxOVx4MWRceGMxfVx4N2ZPWFx4MTlceDlmXHhkZFx4YmVceDg1XHg4M1x4ZmZceDk2XHgxZWVceDgyT2BDRj1LXHhlYiRJIgorICAgIGIiXHgxN19ceGVmWFx4OGJKJ3ZceGRlXHgxZitceGQ5LnZceGY4VHZceDE3XHhmMlx4OWY1XHgxOVx4ZTFceGI5XHg5MVx4YThTIgorICAgIGIiXHg4Nlx4YmRceDFhXCIoXHhhNXhceDhkQ1x4MDNYXHg4MVx4OTFceGE4XHgxMVx4YzRwU1x4MTNceGJjXHhmMidKXHhhZSEiCisgICAgYiJceGVmXHhlZlx4ODRHXHRceDhkXHhjNFx4MTBceDEzMlx4MDBvU1x4OWVceGUwXHhlNGRceDhmXHhiOHlceGFjXHhhNlx4OWYiCisgICAgYiIsXHhiOGZceDg3XHJceGRmXHg5ZUVceDBmXHhlMVx4ZDBcXExceDAwXHhiMlx4ZTFoXHg4NFx4ZWZ9XHg5OFx4YThceDExIgorICAgIGIiXHhjY1cjXFxceDgzXHg3Zm9ceGJielx4OGZceDAwIgorKQorCitGSUxURVJTX1JBV18zID0gW3siaWQiOiBsem1hLkZJTFRFUl9JQTY0LCAic3RhcnRfb2Zmc2V0IjogMHgxMDB9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTJ9XQorQ09NUFJFU1NFRF9SQVdfMyA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDNceGRmXVx4MDBceDA1XHgxNFx4MDdiWFx4MTlceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZCIKKyAgICBiIm9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjhceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KCIKKyAgICBiIlx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5IgorICAgIGIiXHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmclpceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMiIKKyAgICBiIlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdFx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZSIKKyAgICBiImxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODFceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyTyIKKyAgICBiIlx4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3elx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjIgorICAgIGIiXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjBceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3IgorICAgIGIiXHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTlceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYiIKKyAgICBiIlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjdceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYSIKKyAgICBiIlx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YThceDg0Ylx4ZjZceGMzXHhkNGMtSFx4OTNvSmxceGQwaVFceGU0ayIKKyAgICBiIlx4ODRceDBiXHhjMVx4YjdceGJjXHhiMVx4MTdceDg4XHhiMVx4Y2E/QFx4ZjZceDA3XHhlYVx4ZTZ4XHhmMUgxMlBceDBmIgorICAgIGIiXHg4YVx4YzlceGVhdXdceGUzXHhiZVx4YWFpXHhhOVdceGQwXHg4MFx4Y2QjY2I1XHg5OVx4ZDhdXHhhOWRceDBjXHhiZCIKKyAgICBiIlx4YTJceGRjV2xceGVkVUdceGJmXHg4OXlGXHhmNzdceDgxdlx4YmQ1XHg5OFx4YmVoOFx4MThXXHgwOFx4ZjBceDFiXHg5OSIKKyAgICBiIjU6XHgxYT9yRFx4OTZceGExXHgwNFx4MGZceGFlXHhiYVx4ODVceGViXHg5ZDVAXHhmNVx4ODNceGQzN1x4ODNceDhhYyIKKyAgICBiIlx4MDZceGQ0XHg5N2lceGNkdFx4MTZTXHg4MmtceGY2S1x4MDF2eVx4ODhceDkxXHg5YjZUXHhkYWVcclx4ZmRdOmtceGJhbCIKKyAgICBiIlx4YTlceGJiYVx4YzM0XHhmOXJceGVifXJceGRiXHhjN1x4ZGIqXHg4Zlx4MDN6XHhkYzhoXHhjY1x4YzlceGQzXHhiY2wiCisgICAgYiJceGE1LVx4Y2JceGVhS1x4YTJceGM1XHgxNVx4YzBceGUzXHhjMVx4ODZaXHhmYlx4ZWJMXHhlMTNceGNmXHg5Y1x4ZTMiCisgICAgYiJceDFkXHhjOVx4ZWRceGMyXHgwNlx4Y2NceGNlIVx4OTJceGU1XHhmZVx4OWNeXHhhNTl3IFx4OWJQXHhhM1BLXHgwOGQiCisgICAgYiJceGY5XHhlMlp9XHhhN1x4YmZceGVkXHhlYiUkXHgwY1x4ODJceGI4L1x4YjBceDAxXHhhOSYsXHhmN3Foe1FceDk2KVx4ZjIiCisgICAgYiJxXHg5Nlx4YzNceDgwXHhiNFx4MTJceGIwXHhiYVx4ZTZvXHhmNCFceGI0W1x4ZDRceDhhd1x4MTBceGY3dFx4MGNceGIzIgorICAgIGIiXHhkOVx4ZDVceGMzYF5ceDgxXHgxMT8/XFxceGE0XHg5OVx4ODVSXHhkNFx4OGVceDgzXHhjOVx4MWVYXHhiZmFceGYxIgorICAgIGIiXHhhY1x4YjBceGVhXHhlYVx4ZDdceGQwXHhhYlx4MThceGUyXHhmMlx4ZWRceGUxXHhiN1x4YzlceDE4XHhjYlNceGU0PiIKKyAgICBiIlx4YzlceDk1SFx4ZThceGNiXHRcciVceGViXHhjNyQub1x4ZjFceGYzUlx4MTdceDFkYlx4YmJceGQ4VVx4YTVeXHhjY1MiCisgICAgYiJceDE2XHgwMVx4ODdceGYzL1x4OTNceGQxXHhmMHZceGMwclx4ZDdceGNjXHhhMkdrelx4Y2FceDgwXHgwZVx4ZmRceGQwIgorICAgIGIiXHg4Ylx4YmJceGQySXhceGIzXHgxZXlceGNhLTBceGUzel5ceGQ2XHhkNlx4OGZfXHhmMVx4OWRQXHg5ZmlceGE3XHhkMSIKKyAgICBiIlx4ZThceDkwXHg4NFx4ZGNceGJmXHhjZGt5XHg4ZVx4ZGNceDgxXHg3Zlx4YTNceGIyK1x4YmZceDA0XHhlZlx4ZDhcXCIKKyAgICBiIlx4YzRceGRmXHhlMVx4YjBceDAxXHhlOVx4OTNceGUzWVx4ZjFceDFkWVx4ZThoXHg4MVx4Y2ZceGYxd1x4Y2NceGI0XHhlZiIKKyAgICBiIiBceDhifFx4MDRceGVhXHg4M2VqXHhiZVx4MWZceGQ0elx4OWNgXHhkM1x4MWFceDkyQVx4MDZceGU1XHg4Zlx4YTlceDEzIgorICAgIGIiXHRceDllPVx4ZmFceDFjXHhlNV9ceDlmJXZceDFib1x4MTFaT1x4ZDhceGY0XHRceGRkTVx4MTYtXHgwNFx4ZmNceDE4PFwiIgorICAgIGIiQ01ceGRkZ35iXHhmNlx4ZWZceDhlXHgwY1x4ZDBceGRlfFx4YTAnXHg4YVx4MGNceGQ2eFx4YWUhSlx4YTZGXHg4OFx4MTV1IgorICAgIGIiXHgwMDhceDE3XHhiYzd5XHhiM1x4ZDh1XHhhY19ceDg1XHg4ZFx4ZTdceGMxQFx4OWNceGVjcWNceGEzI1x4YWRceGYxIgorICAgIGIiXHg5MzVceGI1KV9cclx4ZWMzXVx4MGZvXTVceGQwbXlceDA3XHg5Ylx4ZWVceDgxXHhiNVx4MGZceGNmSytceDAwXHhjMCIKKyAgICBiIlx4ZTRiXHgxMFx4ZTRceDBjXHgxYSBceDliXHhlMFx4OTd0XHhmNlx4YTFceDllXHg4NTBceGJhXHgwY1x4OWFceDhkXHhjOCIKKyAgICBiIlx4OGZceDA3XHhkN1x4YWVceGM4XHhmOStpXHhkY1x4YjlrXHhiMD5mXHgxOVx4Yjhcclx4YThceGY4XHgxZiRceGE1e3AiCisgICAgYiJceGM2XHg4ODBceGNlXHhkYlx4Y2ZceGNhX1x4ODZceGFjXHg4OGg2XHg4YlolJ1x4ZDBcblx4YmZceDBmXHg5Y1wiXHhiYSIKKyAgICBiIlx4ZTVceDg2XHg5Zlx4MGY3WD1tTlhbXHhjY1x4MTlGVVx4YzlceDg2MFx4YmNceDkwYSsqIFx4YWVfJFx4MDNceDFlXHhkMyIKKyAgICBiIlx4Y2RfXHhhMFx4OWNceGRlXHhhZjQ2cVx4YTVceGM5XHg5Mlx4ZDdceGNhXHhlM2BceDlkXHg4NX1ceGI0XHhmZlx4YjMiCisgICAgYiJceDgzXHhmYlx4YjZceGNhXHhhZWBceDBid1x4N2ZceGZjXHhkOFx4YWNWZVx4MTlceGM4XHgxN1x4MGJaXHhhZFx4ODgiCisgICAgYiJceGViI1x4OTdceDAzXHgxM1x4YjFkXHgwZntceDBjXHgwNHdceDA3XHJceDk3XHhiZFx4ZDZceGMxXHhjM0I6XHg5NVx4MDgiCisgICAgYiJeXHgxMFZceGFlYUhceDAyXHhkOVx4ZTNcblxcXHgwMVhceGY2XHg5Y1x4OGFceDA2dSMlXHhiZSpceGExXHgxOHZceDg1IgorICAgIGIiXHhlYyFcdDRceDAwXHgwMFx4MDAiCispCisKK0ZJTFRFUlNfUkFXXzQgPSBbeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDR9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfWDg2LCAic3RhcnRfb2Zmc2V0IjogMHg0MH0sCisgICAgICAgICAgICAgICAgIHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgInByZXNldCI6IDQsICJsYyI6IDJ9XQorQ09NUFJFU1NFRF9SQVdfNCA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDZceDBlXFxceDAwXHgwNVx4MTRceDA3YldceGFhaFx4ZGRceDEwXHhkYydceGQ2XHg5MCxceGM2diIKKyAgICBiIkpxIFx4MTRsXHhiN1x4ODN4Qlx4MGJceDk3Zj0mZnhceGJhXG4+VG5ceGJmXHg4Zlx4ZmJceDFkRlx4Y2FceGMzdl9ceGNhPyIKKyAgICBiIlx4ZmJWPFx4OTIjXHhkNHdceGE2XHg4YVx4ZWJceGY2XHgwM1x4YzBceDAxXHg5NFx4ZDhceDllXHgxM1x4MTJceDk4XHhkMSIKKyAgICBiIipceGZhXWNceGU4XHgxZX5ceGFmXHhiNV1FZ1x4ZmJceDllXHgwMVwiOFx4YjJceDkwXHgwNj1+XHhlOVx4OTFXXHhjZCIKKyAgICBiIlx4ZWNEXHgxMlx4YzdceGZhXHhlMVx4OTFceDA2XHhjN1x4OTlceGI5XHhlM1x4OTAxXHg4N1x4MTl1XHgwZlx4ODY5XHhmZiIKKyAgICBiIlx4YzFceGIwaHd8XHhiMFx4ZGNsXHhjY2tceGIxNm83XHg4NVx4ZWV7WV9iXHhiZlx4YmMkXHhmMz1ceDhkXHg4YndceGU1WiIKKyAgICBiIlx4MDhAXHhjNGttRVx4YWRceGZiXHhmNipceGQ4XHhhZFx4YTFceGZiXHhjNXtceGRlaiwpXHgxZW1CXHgxZjxceGFlY2EiCisgICAgYiJceDgwKFx4ZWVceDA3IFx4ZGZceGU5XHhmOFx4ZWJceDBlLVx4OTdceDg2XHg5MGNceGY5XHhlYSdCXHhmN2BceGQ3XHhiMCIKKyAgICBiIlx4OTJceGJkXHhhMFx4ODJdXHhiZFx4MGVceDBlQlx4MTlceGRjXHg5Nlx4YzZceDE5XHhkODZEXHhmMFx4ZDVceDgzMSIKKyAgICBiIlx4MDNceGI3XHgxY1x4ZjcmNVx4MWFceDhmIFBaJmpceGY4XHg5OFx4MWJvXHhjY1x4ODZceDliU1x4ZDNceGE1XHhjZHUiCisgICAgYiJceGY5JFx4Y2NceDk3b1x4ZTVWflx4ZmJceDk3XHhiNVx4MGJceDE3XHg5Y1x4ZmR4V1x4MTBceGZlcDRceDgwXHhkYUhEWSIKKyAgICBiIlx4ZmEpXHhmZXRceGI1XCJceGQ0XHhkM0ZceDgxXHhmNFx4MTNceDFmXHhlY1x4ZGZceGE1XHgxM1x4ZmNcIlx4OTF4XHhiNyIKKyAgICBiIlx4OTlceGNlXHhjOFx4OTJcblx4ZWJbXHgxMGwqWVx4ZDhceGIxQFx4MDZceGM4b1x4OGQ3clx4ZWJ1XHhmZDVceDBlXHg3ZiIKKyAgICBiIlx4ZjEkVXtcdH1ceDFmUVx4Y2Z4Tlx4OWRceDlmWFhceGU5YFx4ODNceGMxXHgwNlx4ZjRceDg3di1mXHgxMVx4ZGIvXFwiCisgICAgYiJceDA2XHhmZlx4ZDcpQlx4ZjNnXHgwNlx4ODgjMlx4MWVCMjQ0XHg3ZjRxXHRceGM4OTM/bVBYXHg5NVx4YTZhXHhmYilkIgorICAgIGIiXHg5Ylx4ZmNceDk4XHg5YWpceDA0XHhhZVx4OWJceDlkXHgxOXdceGJhXHhmOTJceGZhQVx4MTFcXFx4MTdceDk3QzNceGE0IgorICAgIGIiXHhiYyFceDg4XHhjZG9bXHhlYzpceDAzMFx4OTEuXHg4NVx4ZTBAXFw0XHgxNlx4MTJceDlkXHhjYUp2XHg5N1x4YjA0IgorICAgIGIiXHhhY2tceGNia2ZceGEzc3NceGZjXHgxNl5ceDhjZVx4ODVhXHhhNT0mXHhlY3JceGIzcFx4ZDFFXHhkNVx4ODB5XHhjNyIKKyAgICBiIlx4ZGFceGY2XHhmZWtceGJjVFx4YmZIXHhlZVx4MTVvXHhjNVx4OGNceDgzMFx4ZWNceDFkXHgwMVx4YWVceDBjLWVcXCIKKyAgICBiIlx4OTFceDkwXHg5NFx4YjJceGY4XHg4OFx4OTFceGU4XHgwYlx4YWVceGE3Plx4OThceGY2XHg5Y2tceGQyXHhjNlx4MDgiCisgICAgYiJceGU2XHhhYlx0XHg5OFx4ZjIhXHhhMFx4OGNeXHhhY3FBXHg5OTxceDFjRUdceDk3XHhjOFx4ZjFceGI2XHhiOVx4ODIiCisgICAgYiJceDhkXHhmN1x4MDhzXHg5OGFceGZmXHhlM1x4Y2NceDkyXHgwZVx4ZDJceGI2VVx4ZDdceGQ5XHg4Nlx4N2ZhXHhlNVx4MWMiCisgICAgYiJceDhkVEdAXHRceDFlXHgwZTcqXHhmY1x4ZGVceGJjXTZOXHhmN1x4ZjFceDg0XHg5ZVx4OWZceGNmXHhlOVx4MWVceGI1JyIKKyAgICBiIlx4ZjQ8XHhkZlx4OTlzcVx4ZDBceDlkXHhiZFx4OTlceDBiXHhiNCVwNFx4YmZ7XHhiYlx4OGFceGQyXHgwYlx4YmM9TSIKKyAgICBiIlx4OTRIOlx4ZjVceGE4XHhkNlx4YTRceGM5MFx4YzJEXHhiOVx4ZDNceGE4XHhiMFNceDg3IGBceGEyXHhlYlx4ZjNXXHhjZSIKKyAgICBiIiA3XHhmOU4jXHJceGU2XHhiZVx0XHg5ZFx4ZTdceDgxMVx4ZjlceDEwXHhjMVx4YzJceDE0XHhmNlx4ZmNceGNiYVx4YjciCisgICAgYiJceGIxXHg3Zlx4OTVsXHhlNFx0akFceGVjOlx4MTBceGU1XHhmZVx4YzJcXD1EXHhlMlx4MGNceDBiM11ceGY3XHhjMVx4ZjciCisgICAgYiJceGJjZVpceGIxQVx4ZWFceDE2XHhlNVx4ZmRkZ0ZRXHhlZFx4YWZceDA0XHhhM1x4ZDNceGY4XHhhMnFceDE5Qlx4ZDRyIgorICAgIGIiXHhjNVx4MGNceDlhXHgxNFx4OTRceGVhXHg5MVx4YzRvXHhlNFx4YmJceGI0XHg5OVx4ZjRAXHhkMVx4ZTZceDBjXHhlMyIKKyAgICBiIlx4YzZkXHhhMFFcblx4ZjIvXHhkOFx4YjhTNVx4OGFceDE4Olx4YjVnXHhhY1x4OTVEXHhjZVx4MTdceDA3XHhkNHpceGRhIgorICAgIGIiXHg5MFx4ZTY1XHgwN1x4MTlIIVx0XHhmZHVceDE2XHg4ZVx4MGVSXHgxOVx4ZjRceDhjbFx4MGNceGY5UVx4ZjFceDgwIgorICAgIGIiXHhlM1x4YmZceGQ3T1x4ZjhceDhjXHgxOFx4MGJceDljXHhmMVx4MWZiXHhlMVx0Ulx4YjJceGYxXHhlMUFceGVhIFx4Y2YtIgorICAgIGIiSUdFXHhmMVx4MTRceDk4JFx4ODNceDE1XHhjOVx4ZDhqXHhiZlx4MTlceDBmXHhkNVx4ZDFceGFhXHhiM1x4ZjNceGE1STJzIgorICAgIGIiXHg4ZFx4MTQ1XHhjYVx4ZDVceGQ5M1x4OWNceGI4RDBceGU2XHhhYSVceGQwXHhjMFB9Sk9eaFx4OGVceDA4XHhhZGxWLiIKKyAgICBiIlx4MThceDg4XHgxM1x4MDVvXHhiMFx4MDdceGVhd1x4ZTBceGI2XHhhNFx4ZDUqXHhlNHJceGVmXHgwN0crXHhjMVx4YmVpWyIKKyAgICBiIndceGU4XHhhYkBfXHhlZlx4MTV5XHhlNVx4MTJceGM5V1x4MWIuXHhhZFx4ODUtXHhjMlx4ZjdceGUzbVU2Z1x4OGVTQSIKKyAgICBiIlx4MDEoXHhkM1x4ZGJceDE2XHgxMz1ceGRlXHg5Mlx4ZjksRFx4YjhceDhhXHhiMlx4YjRceGM5XHhjM1x4ZWZuRVx4ZThcXCIKKyAgICBiIlx4YTZceGUyWVx4ZDJceGNmXHhjYlx4OGNceGI2XHhkNVx4ZTlceDFkXHgxZVx4OWFceDhiflx4ZTJceGE2XHJFXHg4NHVWIgorICAgIGIiXHhlZFx4YzZceDk5XHhkZG08XHgxMFtceDBmdVx4MWZceGMxXHgxZDFcblx4Y2Z3XHhiMiUhXHhmMFtceGNlXHg4N1x4ODNCIgorICAgIGIiXHgwOFx4YWEsXHgwOCVkXHhjZWZceDk0XCJceGQ5Zy5ceGM4M1x4Y2JYWSs0XHhlY1x4ODVxQVxuXHgxZD05XHhmMCpceGIxIgorICAgIGIiXHgxZi9ceGYzc1x4ZDYxYlx4N2ZAXHhmYlx4OWRceGUzRlFcXFx4YmRceDgyXHgxZVx4MDBceGYzXHhjZVx4ZDNceGUxIgorICAgIGIiXHhjYSxFXHhmZDdbXHhhYlx4YjZceGI3XHhhYyFtQX1ceGJkXHg5ZDNSNVx4OWNGXHhhYkhceGViXHg5MiljY1x4MTNceGQwIgorICAgIGIiXHhiZFx4ZWVceGU5bntceDFkSUpCXHhhNVx4ZWJceDExXHhlOGB3JmBceDhifUBPeGVcdFx4OGFceDA3XHgwMlx4OTVceGYyIgorICAgIGIiXHhlZFx4ZGF8XHhiMWVceGJlXHhhYVx4YmJnXHgxOUBceGUxWVx4ODc4XHg4NFx4MGZceDhjXHhlM1x4Yzk4XHhmMlx4OWUiCisgICAgYiJceGQ1Tlx4YjVKXHhlZlx4YWIhXHhlMlx4OGRxXHhlMVx4ZTVxXHhjNVx4ZWVceDExV1x4YjdceGU0aypceDAyN1x4YTAiCisgICAgYiJceGEzSlx4ZjRceGQ4bVx4ZDBxXHg5NFx4Y2JceDA3XG46XHhiNmAuXHhlNFx4OWNceDE1K1x4YzApXHhkZVx4ODBYXHhkNCIKKyAgICBiIlx4Y2ZRbVx4MDFceGMyY1BceDFjQVx4ODUnXHhjOVx4YWNceDhiXHhlNlx4YjIpXHhlNlx4ODR0XHgxY1x4OTJceGU0WiIKKyAgICBiIlx4MWNSXHhiMFx4OWVceDk2XHhkMVx4ZmJceDFjXHhhNlx4OGJceGNiYFx4MTBceDEyXVx4ZjJnUlx4OWJGVFx4ZTBceGM4SCIKKyAgICBiIlNceGZiXHhhYzxceDA0XHhjN1x4YzFceGU4XHhlZFBceGY0XHgxNlx4ZGJceGMwXHhkN2VceGMyXHgxN0peXHgxZlx4YWIiCisgICAgYiJceGZmW1x4MDhceDE5XHhiNFx4ZjVceGZiXHgxOVx4YjRceDA0XHhlNWN+J11ceGNiXHhjMkFceGVjXHg5MFx4ZDBceGVkIgorICAgIGIiXHgwNixceGM1S3tceDg2XHgwM1x4YjFceGNkTXhceGRlUVx4OGMzXHhmOVx4OGFceGVhPVx4ODlceGFiYVx4ZDJceGM4OWEiCisgICAgYiJceGQ3Mlx4ZjBceGMzXHgxOVx4OGFceGRmc1x4ZDRceGZkXHhiYlx4ODFiXHhlYUVcIlx4ZDhceGY0ZFx4MGNEXHhmN0lKISIKKyAgICBiIlx4ZTVkXHhiYkdceGU5XHhjYW1ceGFhXHgwZl9yXHg5NVx4OTFOQnFceGNhUFx4Y2VceGE3XHhhOVx4YjVceDEwXHg5NGVQISIKKyAgICBiInxceDg1Nlx4Y2RceGJmSWlyXHhiOGVceDlialBceDk3cVx4YWJ3UzdceDFhXHgwZWhNXHhlN1x4Y2FceDg2P1x4ZGVQfXl+IgorICAgIGIiXHgwZlx4OTVJXHhmY1x4MTNceGUxPFFceDFiXHg4NjhceDFkXHgxMVx4ZGZceDk0XHhmNFx4ODI+clx4YTlrXHg4OFx4Y2IiCisgICAgYiJceGZkXHhjM3ZceGUyXHhiOVx4OGFceDAyXHg4ZXFceDkySVx4ZjhceGY2XHhmMVx4MDNzXHg5Ylx4YjhceGUzXCJceGUzIgorICAgIGIiXHhhOVx4YTU+RFx4YjhceDk2O1x4ZTdceDkyXHhkMTMzXHhlOFx4ZGQnZVx4YzkuXHhkYztceDE3XHgxZlx4ZjVIXHgxM3EiCisgICAgYiJceGE0V1x4MGNceGRiflx4OThceDAxXHhlYlx4ZGZceGUzMlx4MTNceDBmXHhkZHhcbjZceGEwXHRceDEwXHhiNlx4YmIiCisgICAgYiJceGIwXHhjM1x4MThceGI2O1x4OWZqW1x4ZDlceGQ1XHhjOVx4MDZceDhhXHg4N1x4Y2RceGU1XHhlZVx4ZmNceDljLSVAIgorICAgIGIiXHhlZVx4ZTBceGViXHhkMlx4ZTNceGU4XHhmYlx4YzBceDEyMlxcXHhjN1x4YWZceGMyXHhhMU90aFx4YjNceDhmXHg4MiIKKyAgICBiIlx4YjNceDE4XHhhOFx4MDdceGQ1XHhlZV9ceGJlXHhlMFx4MWNBXHgxZV9cclx4OWFceGIwXHgxN1cmXHhhMkRceDkxXHg5NCIKKyAgICBiIlx4MWFceGIyXHhlZlx4ZjJceGRjXHg4NTtYXHhiMCxceGViPi03U1x4ZTVceGNhXHgwNylceDFmcFx4N2ZceGNhUUJMXHhjYSIKKyAgICBiIlx4ZjNceGI5ZFx4ZmNceGI1c3VceGIwXHhjOFx4OTVceDkwXHhlYiopXHhhMHZceGU0XHg5YXtGV1x4ZjRsXHhkZVx4Y2RqIgorICAgIGIiXHgwMCIKKykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KAorICAgICAgICBDb21wcmVzc29yRGVjb21wcmVzc29yVGVzdENhc2UsCisgICAgICAgIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UsCisgICAgICAgIEZpbGVUZXN0Q2FzZSwKKyAgICAgICAgT3BlblRlc3RDYXNlLAorICAgICAgICBNaXNjZWxsYW5lb3VzVGVzdENhc2UsCisgICAgKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKaW5kZXggYzcyZWIxYy4uNmIxZTkzMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQpAQCAtMjIsNiArMjIsMTAgQEAKIAogY2xhc3MgVGVzdEJhc2U6CiAKKyAgICBhbGxfbWFpbGJveF90eXBlcyA9IChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpCisKICAgICBkZWYgX2NoZWNrX3NhbXBsZShzZWxmLCBtc2cpOgogICAgICAgICAjIEluc3BlY3QgYSBtYWlsYm94Lk1lc3NhZ2UgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNhbXBsZSBtZXNzYWdlCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSkKQEAgLTkxLDE0ICs5NSwxNCBAQAogICAgICAgICAgICAgIiIiKQogCiAgICAgZGVmIHRlc3RfYWRkX2ludmFsaWRfOGJpdF9ieXRlc19oZWFkZXIoc2VsZik6Ci0gICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4tMScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLl9ib3gpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2JveC5nZXRfYnl0ZXMoa2V5KSwKLSAgICAgICAgICAgIHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICAgICAgc2VsZi5fbm9uYXNjaWlfbXNnLmVuY29kZSgnbGF0aW4tMScpKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9ub25hc2NpaV9oZWFkZXJfYXNfc3RyaW5nKHNlbGYpOgogICAgICAgICBzdWJqID0gc2VsZi5fbm9uYXNjaWlfbXNnLnNwbGl0bGluZXMoKVsxXQotICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHN1YmouZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzdWJqLmVuY29kZSgnbGF0aW4tMScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2JveC5nZXRfc3RyaW5nKGtleSksCiAgICAgICAgICAgICAnU3ViamVjdDogPT91bmtub3duLThiaXQ/Yj9SbUZzYVc1aGNIVGhjaUJvNFhwb2IzcHpldUZzYk8xMDRYTnonCiAgICAgICAgICAgICAnWVd3dUlFM2hjaUJ5Wlc1a1pXeDA2V3cvPz1cblxuJykKQEAgLTkzMCw4ICs5MzQsNyBAQAogICAgICAgICAjIHRoZSBtdGltZSBhbmQgc2hvdWxkIGNhdXNlIGEgcmUtcmVhZC4gTm90ZSB0aGF0ICJzbGVlcAogICAgICAgICAjIGVtdWxhdGlvbiIgaXMgc3RpbGwgaW4gZWZmZWN0LCBhcyBza2V3ZmFjdG9yIGlzIC0zLgogICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCAnY3VyJywgJ3N0cmF5LWZpbGUnKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShmaWxlbmFtZSkKICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lKQogICAgICAgICBzZWxmLl9ib3guX3JlZnJlc2goKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVmcmVzaGVkKCkpCkBAIC0xMzk3LDYgKzE0MDAsMTQgQEAKICAgICAgICAgIyBJbml0aWFsaXplIHdpdGggaW52YWxpZCBhcmd1bWVudAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogc2VsZi5fZmFjdG9yeShvYmplY3QoKSkpCiAKKyAgICBkZWYgdGVzdF9hbGxfZU1NX2F0dHJpYnVlc19leGlzdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxMjUzNworICAgICAgICBlTU0gPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKF9zYW1wbGVfbWVzc2FnZSkKKyAgICAgICAgbXNnID0gc2VsZi5fZmFjdG9yeShfc2FtcGxlX21lc3NhZ2UpCisgICAgICAgIGZvciBhdHRyIGluIGVNTS5fX2RpY3RfXzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRyIGluIG1zZy5fX2RpY3RfXywKKyAgICAgICAgICAgICAgICAne30gYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0Jy5mb3JtYXQoYXR0cikpCisKICAgICBkZWYgdGVzdF9iZWNvbWVfbWVzc2FnZShzZWxmKToKICAgICAgICAgIyBUYWtlIG9uIHRoZSBzdGF0ZSBvZiBhbm90aGVyIG1lc3NhZ2UKICAgICAgICAgZU1NID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhfc2FtcGxlX21lc3NhZ2UpCkBAIC0xNDA4LDkgKzE0MTksNyBAQAogICAgICAgICAjIENvcHkgc2VsZidzIGZvcm1hdC1zcGVjaWZpYyBkYXRhIHRvIG90aGVyIG1lc3NhZ2UgZm9ybWF0cy4KICAgICAgICAgIyBUaGlzIHRlc3QgaXMgc3VwZXJmaWNpYWw7IGJldHRlciBvbmVzIGFyZSBpbiBUZXN0TWVzc2FnZUNvbnZlcnNpb24uCiAgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKQotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIG90aGVyX21zZyA9IGNsYXNzXygpCiAgICAgICAgICAgICBtc2cuX2V4cGxhaW5fdG8ob3RoZXJfbXNnKQogICAgICAgICBvdGhlcl9tc2cgPSBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UoKQpAQCAtMTY0MiwzNyArMTY1MSw0NCBAQAogCiAgICAgZGVmIHRlc3RfcGxhaW5fdG9feChzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IE1lc3NhZ2UgdG8gYWxsIGZvcm1hdHMKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2dfcGxhaW4gPSBtYWlsYm94Lk1lc3NhZ2UoX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgbXNnID0gY2xhc3NfKG1zZ19wbGFpbikKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2cpCiAKICAgICBkZWYgdGVzdF94X3RvX3BsYWluKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgYWxsIGZvcm1hdHMgdG8gTWVzc2FnZQotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIG1zZyA9IGNsYXNzXyhfc2FtcGxlX21lc3NhZ2UpCiAgICAgICAgICAgICBtc2dfcGxhaW4gPSBtYWlsYm94Lk1lc3NhZ2UobXNnKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlKG1zZ19wbGFpbikKIAogICAgIGRlZiB0ZXN0X3hfZnJvbV9ieXRlcyhzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIE1lc3NhZ2UKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2cgPSBjbGFzc18oX2J5dGVzX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlKG1zZykKIAogICAgIGRlZiB0ZXN0X3hfdG9faW52YWxpZChzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIGFuIGludmFsaWQgZm9ybWF0Ci0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGNsYXNzXyhGYWxzZSkpCiAKKyAgICBkZWYgdGVzdF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXNfcmVtb3ZlZF9vbl9jb252ZXJzaW9uKHNlbGYpOgorICAgICAgICByZWZlcmVuY2UgPSB7Y2xhc3NfOiBjbGFzc18oX3NhbXBsZV9tZXNzYWdlKS5fX2RpY3RfXworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzfQorICAgICAgICBmb3IgY2xhc3MxIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CisgICAgICAgICAgICBmb3IgY2xhc3MyIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CisgICAgICAgICAgICAgICAgaWYgY2xhc3MxIGlzIGNsYXNzMjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBjbGFzczEoX3NhbXBsZV9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHRhcmdldCA9IGNsYXNzMihzb3VyY2UpCisgICAgICAgICAgICAgICAgdHlwZV9zcGVjaWZpYyA9IFthIGZvciBhIGluIHJlZmVyZW5jZVtjbGFzczFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGEgbm90IGluIHJlZmVyZW5jZVtjbGFzczJdXQorICAgICAgICAgICAgICAgIGZvciBhdHRyIGluIHR5cGVfc3BlY2lmaWM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oYXR0ciwgdGFyZ2V0Ll9fZGljdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgIndoaWxlIGNvbnZlcnRpbmcge30gdG8ge30iLmZvcm1hdChjbGFzczEsIGNsYXNzMikpCisKICAgICBkZWYgdGVzdF9tYWlsZGlyX3RvX21haWxkaXIoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBNYWlsZGlyTWVzc2FnZSB0byBNYWlsZGlyTWVzc2FnZQogICAgICAgICBtc2dfbWFpbGRpciA9IG1haWxib3guTWFpbGRpck1lc3NhZ2UoX3NhbXBsZV9tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0Y2QwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTAsMCArMSwyMjEgQEAKK2ltcG9ydCBtYWlsY2FwCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCisjIExvY2F0aW9uIG9mIG1haWxjYXAgZmlsZQorTUFJTENBUEZJTEUgPSB0ZXN0LnN1cHBvcnQuZmluZGZpbGUoIm1haWxjYXAudHh0IikKKworIyBEaWN0IHRvIGFjdCBhcyBtb2NrIG1haWxjYXAgZW50cnkgZm9yIHRoaXMgdGVzdAorIyBUaGUga2V5cyBhbmQgdmFsdWVzIHNob3VsZCBtYXRjaCB0aGUgY29udGVudHMgb2YgTUFJTENBUEZJTEUKK01BSUxDQVBESUNUID0geworICAgICdhcHBsaWNhdGlvbi94LW1vdmllJzoKKyAgICAgICAgW3snY29tcG9zZSc6ICdtb3ZpZW1ha2VyICVzJywKKyAgICAgICAgICAneDExLWJpdG1hcCc6ICciL3Vzci9saWIvWm1haWwvYml0bWFwcy9tb3ZpZS54Ym0iJywKKyAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIk1vdmllIicsCisgICAgICAgICAgJ3ZpZXcnOiAnbW92aWVwbGF5ZXIgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uLyonOgorICAgICAgICBbeydjb3Bpb3Vzb3V0cHV0JzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnZWNobyAiVGhpcyBpcyBcXCIldFxcIiBidXQgICAgICAgIGlzIDUwIFxcJSBHcmVlayB0byBtZSIgXFw7IGNhdCAlcyd9XSwKKyAgICAnYXVkaW8vYmFzaWMnOgorICAgICAgICBbeydlZGl0JzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgJ2NvbXBvc2UnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2F1ZGlvICVzJ31dLAorICAgICd2aWRlby9tcGVnJzoKKyAgICAgICAgW3sndmlldyc6ICdtcGVnX3BsYXkgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnOgorICAgICAgICBbeyduZWVkc3Rlcm1pbmFsJzogJycsICd2aWV3JzogJ3BzLXRvLXRlcm1pbmFsICVzJ30sCisgICAgICAgICB7J2NvbXBvc2UnOiAnaWRyYXcgJXMnLCAndmlldyc6ICdwcy10by10ZXJtaW5hbCAlcyd9XSwKKyAgICAnYXBwbGljYXRpb24veC1kdmknOgorICAgICAgICBbeyd2aWV3JzogJ3hkdmkgJXMnfV0sCisgICAgJ21lc3NhZ2UvZXh0ZXJuYWwtYm9keSc6CisgICAgICAgIFt7J2NvbXBvc2V0eXBlZCc6ICdleHRjb21wb3NlICVzJywKKyAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkEgcmVmZXJlbmNlIHRvIGRhdGEgc3RvcmVkIGluIGFuIGV4dGVybmFsIGxvY2F0aW9uIicsCisgICAgICAgICAgJ25lZWRzdGVybWluYWwnOiAnJywKKyAgICAgICAgICAndmlldyc6ICdzaG93ZXh0ZXJuYWwgJXMgJXthY2Nlc3MtdHlwZX0gJXtuYW1lfSAle3NpdGV9ICAgICAle2RpcmVjdG9yeX0gJXttb2RlfSAle3NlcnZlcn0nfV0sCisgICAgJ3RleHQvcmljaHRleHQnOgorICAgICAgICBbeyd0ZXN0JzogJ3Rlc3QgImBlY2hvICAgICAle2NoYXJzZXR9IHwgdHIgXCdbQS1aXVwnIFwnW2Etel1cJ2AiICA9IGlzby04ODU5LTgnLAorICAgICAgICAgICdjb3Bpb3Vzb3V0cHV0JzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd25vbmFzY2lpIGlzby04ODU5LTggLWUgcmljaHRleHQgLXAgJXMnfV0sCisgICAgJ2ltYWdlL3gteHdpbmRvd2R1bXAnOgorICAgICAgICBbeyd2aWV3JzogJ2Rpc3BsYXkgJXMnfV0sCisgICAgJ2F1ZGlvLyonOgorICAgICAgICBbeyd2aWV3JzogJy91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyAldCd9XSwKKyAgICAndmlkZW8vKic6CisgICAgICAgIFt7J3ZpZXcnOiAnYW5pbWF0ZSAlcyd9XSwKKyAgICAnYXBwbGljYXRpb24vZnJhbWUnOgorICAgICAgICBbeydwcmludCc6ICciY2F0ICVzIHwgbHAiJywgJ3ZpZXcnOiAnc2hvd2ZyYW1lICVzJ31dLAorICAgICdpbWFnZS9yZ2InOgorICAgICAgICBbeyd2aWV3JzogJ2Rpc3BsYXkgJXMnfV0KK30KKworCitjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbGlzdG1haWxjYXBmaWxlcyhzZWxmKToKKyAgICAgICAgIyBUaGUgcmV0dXJuIHZhbHVlIGZvciBsaXN0bWFpbGNhcGZpbGVzKCkgd2lsbCB2YXJ5IGJ5IHN5c3RlbS4KKyAgICAgICAgIyBTbyB2ZXJpZnkgdGhhdCBsaXN0bWFpbGNhcGZpbGVzKCkgcmV0dXJucyBhIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IGlzIG9mCisgICAgICAgICMgbm9uLXplcm8gbGVuZ3RoLgorICAgICAgICBtY2ZpbGVzID0gbWFpbGNhcC5saXN0bWFpbGNhcGZpbGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1jZmlsZXMsIGxpc3QpCisgICAgICAgIGZvciBtIGluIG1jZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobSwgc3RyKQorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gUkZDIDE1MjQsIGlmIE1BSUxDQVBTIGVudiB2YXJpYWJsZSBleGlzdHMsIHVzZSB0aGF0CisgICAgICAgICAgICAjIGFuZCBvbmx5IHRoYXQuCisgICAgICAgICAgICBpZiAiTUFJTENBUFMiIGluIGVudjoKKyAgICAgICAgICAgICAgICBlbnZfbWFpbGNhcHMgPSBlbnZbIk1BSUxDQVBTIl0uc3BsaXQob3MucGF0aHNlcCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZW52X21haWxjYXBzID0gWyIvdGVzdGRpcjEvLm1haWxjYXAiLCAiL3Rlc3RkaXIyL21haWxjYXAiXQorICAgICAgICAgICAgICAgIGVudlsiTUFJTENBUFMiXSA9IG9zLnBhdGhzZXAuam9pbihlbnZfbWFpbGNhcHMpCisgICAgICAgICAgICAgICAgbWNmaWxlcyA9IG1haWxjYXAubGlzdG1haWxjYXBmaWxlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW52X21haWxjYXBzLCBtY2ZpbGVzKQorCisgICAgZGVmIHRlc3RfcmVhZG1haWxjYXBmaWxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmVhZG1haWxjYXBmaWxlKCkgdXNpbmcgdGVzdCBmaWxlLiBJdCBzaG91bGQgbWF0Y2ggTUFJTENBUERJQ1QuCisgICAgICAgIHdpdGggb3BlbihNQUlMQ0FQRklMRSwgJ3InKSBhcyBtY2Y6CisgICAgICAgICAgICBkID0gbWFpbGNhcC5yZWFkbWFpbGNhcGZpbGUobWNmKQorICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChkLCBNQUlMQ0FQRElDVCkKKworICAgIGRlZiB0ZXN0X2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGhvdXQga2V5CisgICAgICAgIGV4cGVjdGVkID0gW3sndmlldyc6ICdtcGVnX3BsYXkgJXMnfSwgeyd2aWV3JzogJ2FuaW1hdGUgJXMnfV0KKyAgICAgICAgYWN0dWFsID0gbWFpbGNhcC5sb29rdXAoTUFJTENBUERJQ1QsICd2aWRlby9tcGVnJykKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgICAgICAjIFRlc3Qgd2l0aCBrZXkKKyAgICAgICAga2V5ID0gJ2NvbXBvc2UnCisgICAgICAgIGV4cGVjdGVkID0gW3snZWRpdCc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgICAgICAgICAgJ2NvbXBvc2UnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQW4gYXVkaW8gZnJhZ21lbnQiJywKKyAgICAgICAgICAgICAgICAgICAgICd2aWV3JzogJ3Nob3dhdWRpbyAlcyd9XQorICAgICAgICBhY3R1YWwgPSBtYWlsY2FwLmxvb2t1cChNQUlMQ0FQRElDVCwgJ2F1ZGlvL2Jhc2ljJywga2V5KQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rfc3Vic3Qoc2VsZik6CisgICAgICAgIHBsaXN0ID0gWydpZD0xJywgJ251bWJlcj0yJywgJ3RvdGFsPTMnXQorICAgICAgICAjIHRlc3QgY2FzZTogKFtmaWVsZCwgTUlNRXR5cGUsIGZpbGVuYW1lLCBwbGlzdD1bXV0sIDxleHBlY3RlZCBzdHJpbmc+KQorICAgICAgICB0ZXN0X2Nhc2VzID0gWworICAgICAgICAgICAgKFsiIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiIiksCisgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vIiksCisgICAgICAgICAgICAoWyJlY2hvICVzIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28udHh0IiksCisgICAgICAgICAgICAoWyJlY2hvICV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBhdWRpby8qIiksCisgICAgICAgICAgICAoWyJlY2hvIFwldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gJXQiKSwKKyAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCIsIHBsaXN0XSwgImVjaG8gZm9vIiksCisgICAgICAgICAgICAoWyJlY2hvICV7dG90YWx9IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCIsIHBsaXN0XSwgImVjaG8gMyIpCisgICAgICAgIF0KKyAgICAgICAgZm9yIHRjIGluIHRlc3RfY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxjYXAuc3Vic3QoKnRjWzBdKSwgdGNbMV0pCisKKworY2xhc3MgR2V0Y2Fwc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbW9ja19nZXRjYXBzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbWFpbGNhcC5nZXRjYXBzKCkgdXNpbmcgbW9jayBtYWlsY2FwIGZpbGUgaW4gdGhpcyBkaXIuCisgICAgICAgICMgVGVtcG9yYXJpbHkgb3ZlcnJpZGUgYW55IGV4aXN0aW5nIHN5c3RlbSBtYWlsY2FwIGZpbGUgYnkgcG9pbnRpbmcgdGhlCisgICAgICAgICMgTUFJTENBUFMgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3VyIG1vY2sgZmlsZS4KKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudlsiTUFJTENBUFMiXSA9IE1BSUxDQVBGSUxFCisgICAgICAgICAgICBjYXBzID0gbWFpbGNhcC5nZXRjYXBzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKGNhcHMsIE1BSUxDQVBESUNUKQorCisgICAgZGVmIHRlc3Rfc3lzdGVtX21haWxjYXAoc2VsZik6CisgICAgICAgICMgVGVzdCBtYWlsY2FwLmdldGNhcHMoKSB3aXRoIG1haWxjYXAgZmlsZShzKSBvbiBzeXN0ZW0sIGlmIGFueS4KKyAgICAgICAgY2FwcyA9IG1haWxjYXAuZ2V0Y2FwcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjYXBzLCBkaWN0KQorICAgICAgICBtYWlsY2FwZmlsZXMgPSBtYWlsY2FwLmxpc3RtYWlsY2FwZmlsZXMoKQorICAgICAgICBleGlzdGluZ21jZmlsZXMgPSBbbWNmIGZvciBtY2YgaW4gbWFpbGNhcGZpbGVzIGlmIG9zLnBhdGguZXhpc3RzKG1jZildCisgICAgICAgIGlmIGV4aXN0aW5nbWNmaWxlczoKKyAgICAgICAgICAgICMgQXQgbGVhc3QgMSBtYWlsY2FwIGZpbGUgZXhpc3RzLCBzbyB0ZXN0IHRoYXQuCisgICAgICAgICAgICBmb3IgKGssIHYpIGluIGNhcHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoaywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBsaXN0KQorICAgICAgICAgICAgICAgIGZvciBlIGluIHY6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLCBkaWN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBObyBtYWlsY2FwIGZpbGVzIG9uIHN5c3RlbS4gZ2V0Y2FwcygpIHNob3VsZCByZXR1cm4gZW1wdHkgZGljdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIGNhcHMpCisKKworY2xhc3MgRmluZG1hdGNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9maW5kbWF0Y2goc2VsZik6CisKKyAgICAgICAgIyBkZWZhdWx0IGZpbmRtYXRjaCBhcmd1bWVudHMKKyAgICAgICAgYyA9IE1BSUxDQVBESUNUCisgICAgICAgIGZuYW1lID0gImZvby50eHQiCisgICAgICAgIHBsaXN0ID0gWyJhY2Nlc3MtdHlwZT1kZWZhdWx0IiwgIm5hbWU9am9obiIsICJzaXRlPXB5dGhvbi5vcmciLAorICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5PS90bXAiLCAibW9kZT1mb28iLCAic2VydmVyPWJhciJdCisgICAgICAgIGF1ZGlvX2Jhc2ljX2VudHJ5ID0geworICAgICAgICAgICAgJ2VkaXQnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgICAndmlldyc6ICdzaG93YXVkaW8gJXMnCisgICAgICAgIH0KKyAgICAgICAgYXVkaW9fZW50cnkgPSB7InZpZXciOiAiL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvICV0In0KKyAgICAgICAgdmlkZW9fZW50cnkgPSB7J3ZpZXcnOiAnYW5pbWF0ZSAlcyd9CisgICAgICAgIG1lc3NhZ2VfZW50cnkgPSB7CisgICAgICAgICAgICAnY29tcG9zZXR5cGVkJzogJ2V4dGNvbXBvc2UgJXMnLAorICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBIHJlZmVyZW5jZSB0byBkYXRhIHN0b3JlZCBpbiBhbiBleHRlcm5hbCBsb2NhdGlvbiInLCAnbmVlZHN0ZXJtaW5hbCc6ICcnLAorICAgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSAgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9JworICAgICAgICB9CisKKyAgICAgICAgIyB0ZXN0IGNhc2U6IChmaW5kbWF0Y2ggYXJncywgZmluZG1hdGNoIGtleXdvcmQgYXJncywgZXhwZWN0ZWQgb3V0cHV0KQorICAgICAgICAjICAgcG9zaXRpb25hbCBhcmdzOiBjYXBzLCBNSU1FdHlwZQorICAgICAgICAjICAga2V5d29yZCBhcmdzOiBrZXk9InZpZXciLCBmaWxlbmFtZT0iL2Rldi9udWxsIiwgcGxpc3Q9W10KKyAgICAgICAgIyAgIG91dHB1dDogKGNvbW1hbmQgbGluZSwgbWFpbGNhcCBlbnRyeSkKKyAgICAgICAgY2FzZXMgPSBbCisgICAgICAgICAgICAoW3t9LCAidmlkZW8vbXBlZyJdLCB7fSwgKE5vbmUsIE5vbmUpKSwKKyAgICAgICAgICAgIChbYywgImZvby9iYXIiXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJ2aWRlby9tcGVnIl0sIHt9LCAoJ21wZWdfcGxheSAvZGV2L251bGwnLCB7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ30pKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImVkaXQiXSwge30sICgiYXVkaW9jb21wb3NlIC9kZXYvbnVsbCIsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJjb21wb3NlIl0sIHt9LCAoImF1ZGlvY29tcG9zZSAvZGV2L251bGwiLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiZGVzY3JpcHRpb24iXSwge30sICgnIkFuIGF1ZGlvIGZyYWdtZW50IicsIGF1ZGlvX2Jhc2ljX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJmb29iYXIiXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJ2aWRlby8qIl0sIHsiZmlsZW5hbWUiOiBmbmFtZX0sICgiYW5pbWF0ZSAlcyIgJSBmbmFtZSwgdmlkZW9fZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImNvbXBvc2UiXSwKKyAgICAgICAgICAgICB7ImZpbGVuYW1lIjogZm5hbWV9LAorICAgICAgICAgICAgICgiYXVkaW9jb21wb3NlICVzIiAlIGZuYW1lLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiXSwKKyAgICAgICAgICAgICB7ImtleSI6ICJkZXNjcmlwdGlvbiIsICJmaWxlbmFtZSI6IGZuYW1lfSwKKyAgICAgICAgICAgICAoJyJBbiBhdWRpbyBmcmFnbWVudCInLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vKiJdLAorICAgICAgICAgICAgIHsiZmlsZW5hbWUiOiBmbmFtZX0sCisgICAgICAgICAgICAgKCIvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gYXVkaW8vKiIsIGF1ZGlvX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJtZXNzYWdlL2V4dGVybmFsLWJvZHkiXSwKKyAgICAgICAgICAgICB7InBsaXN0IjogcGxpc3R9LAorICAgICAgICAgICAgICgic2hvd2V4dGVybmFsIC9kZXYvbnVsbCBkZWZhdWx0IGpvaG4gcHl0aG9uLm9yZyAgICAgL3RtcCBmb28gYmFyIiwgbWVzc2FnZV9lbnRyeSkpCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5fcnVuX2Nhc2VzKGNhc2VzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAicG9zaXgiLCAiUmVxdWlyZXMgJ3Rlc3QnIGNvbW1hbmQgb24gc3lzdGVtIikKKyAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgorICAgICAgICAjIGZpbmRtYXRjaCgpIHdpbGwgYXV0b21hdGljYWxseSBjaGVjayBhbnkgInRlc3QiIGNvbmRpdGlvbnMgYW5kIHNraXAKKyAgICAgICAgIyB0aGUgZW50cnkgaWYgdGhlIGNoZWNrIGZhaWxzLgorICAgICAgICBjYXBzID0geyJ0ZXN0L3Bhc3MiOiBbeyJ0ZXN0IjogInRlc3QgMSAtZXEgMSJ9XSwKKyAgICAgICAgICAgICAgICAidGVzdC9mYWlsIjogW3sidGVzdCI6ICJ0ZXN0IDEgLWVxIDAifV19CisgICAgICAgICMgdGVzdCBjYXNlOiAoZmluZG1hdGNoIGFyZ3MsIGZpbmRtYXRjaCBrZXl3b3JkIGFyZ3MsIGV4cGVjdGVkIG91dHB1dCkKKyAgICAgICAgIyAgIHBvc2l0aW9uYWwgYXJnczogY2FwcywgTUlNRXR5cGUsIGtleSAoInRlc3QiKQorICAgICAgICAjICAga2V5d29yZCBhcmdzOiBOL0EKKyAgICAgICAgIyAgIG91dHB1dDogKGNvbW1hbmQgbGluZSwgbWFpbGNhcCBlbnRyeSkKKyAgICAgICAgY2FzZXMgPSBbCisgICAgICAgICAgICAjIGZpbmRtYXRjaCB3aWxsIHJldHVybiB0aGUgbWFpbGNhcCBlbnRyeSBmb3IgdGVzdC9wYXNzIGJlY2F1c2UgaXQgZXZhbHVhdGVzIHRvIHRydWUKKyAgICAgICAgICAgIChbY2FwcywgInRlc3QvcGFzcyIsICJ0ZXN0Il0sIHt9LCAoInRlc3QgMSAtZXEgMSIsIHsidGVzdCI6ICJ0ZXN0IDEgLWVxIDEifSkpLAorICAgICAgICAgICAgIyBmaW5kbWF0Y2ggd2lsbCByZXR1cm4gTm9uZSBiZWNhdXNlIHRlc3QvZmFpbCBldmFsdWF0ZXMgdG8gZmFsc2UKKyAgICAgICAgICAgIChbY2FwcywgInRlc3QvZmFpbCIsICJ0ZXN0Il0sIHt9LCAoTm9uZSwgTm9uZSkpCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5fcnVuX2Nhc2VzKGNhc2VzKQorCisgICAgZGVmIF9ydW5fY2FzZXMoc2VsZiwgY2FzZXMpOgorICAgICAgICBmb3IgYyBpbiBjYXNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGNhcC5maW5kbWF0Y2goKmNbMF0sICoqY1sxXSksIGNbMl0pCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVscGVyRnVuY3Rpb25UZXN0LCBHZXRjYXBzVGVzdCwgRmluZG1hdGNoVGVzdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggOTZhNzBlYy4uODNjMzQ4YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCitpbXBvcnQgdHlwZXMKIAogY2xhc3MgSGVscGVyTWl4aW46CiAgICAgZGVmIGhlbHBlcihzZWxmLCBzYW1wbGUsICpleHRyYSk6CkBAIC0xMTQsNiArMTE1LDIyIEBACiAgICAgICAgIGNvZGVzID0gKEV4Y2VwdGlvblRlc3RDYXNlLnRlc3RfZXhjZXB0aW9ucy5fX2NvZGVfXywpICogY291bnQKICAgICAgICAgbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKGNvZGVzKSkKIAorICAgIGRlZiB0ZXN0X2RpZmZlcmVudF9maWxlbmFtZXMoc2VsZik6CisgICAgICAgIGNvMSA9IGNvbXBpbGUoIngiLCAiZjEiLCAiZXhlYyIpCisgICAgICAgIGNvMiA9IGNvbXBpbGUoInkiLCAiZjIiLCAiZXhlYyIpCisgICAgICAgIGNvMSwgY28yID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKChjbzEsIGNvMikpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvMS5jb19maWxlbmFtZSwgImYxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbzIuY29fZmlsZW5hbWUsICJmMiIpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CisgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCisgICAgICAgIGNvID0gY29tcGlsZShzLCAibXlmaWxlIiwgImV4ZWMiKQorICAgICAgICBjbyA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhjbykpCisgICAgICAgIGZvciBvYmogaW4gY28uY29fY29uc3RzOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkNvZGVUeXBlKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvLmNvX2ZpbGVuYW1lLCBvYmouY29fZmlsZW5hbWUpCisKIGNsYXNzIENvbnRhaW5lclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CiAgICAgZCA9IHsnYXN0cmluZyc6ICdmb29AYmFyLmJhei5zcGFtJywKICAgICAgICAgICdhZmxvYXQnOiA3MjgzLjQzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CmluZGV4IGRkZGM4ODkuLjcxNTAwM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKQEAgLTIsMTEgKzIsMTIgQEAKICMgWFhYWCBTaG91bGQgbm90IGRvIHRlc3RzIGFyb3VuZCB6ZXJvIG9ubHkKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdmVyYm9zZSwgcmVxdWlyZXNfSUVFRV83NTQKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbWF0aAogaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKLWltcG9ydCByYW5kb20KIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXNjb25maWcKIApAQCAtNDU3LDEyICs0NTgsMTIgQEAKIAogICAgIGRlZiB0ZXN0Rm1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZtb2QpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMSknLCBtYXRoLmZtb2QoMTAsMSksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsMC41KScsIG1hdGguZm1vZCgxMCwwLjUpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDEuNSknLCBtYXRoLmZtb2QoMTAsMS41KSwgMSkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMSknLCBtYXRoLmZtb2QoLTEwLDEpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwwLjUpJywgbWF0aC5mbW9kKC0xMCwwLjUpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwxLjUpJywgbWF0aC5mbW9kKC0xMCwxLjUpLCAtMSkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMSknLCBtYXRoLmZtb2QoMTAsIDEpLCAwLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDAuNSknLCBtYXRoLmZtb2QoMTAsIDAuNSksIDAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwgMS41KScsIG1hdGguZm1vZCgxMCwgMS41KSwgMS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMSknLCBtYXRoLmZtb2QoLTEwLCAxKSwgLTAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDAuNSknLCBtYXRoLmZtb2QoLTEwLCAwLjUpLCAtMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKC0xMCwgMS41KScsIG1hdGguZm1vZCgtMTAsIDEuNSksIC0xLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZChOQU4sIDEuKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZCgxLiwgTkFOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZm1vZChOQU4sIE5BTikpKQpAQCAtNjUwLDYgKzY1MSwzMyBAQAogICAgICAgICBuPSAyKio5MAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQogCisgICAgQHJlcXVpcmVzX0lFRUVfNzU0CisgICAgZGVmIHRlc3RMb2cyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMikKKworICAgICAgICAjIENoZWNrIHNvbWUgaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMSksIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoMiksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzIoNCksIDIuMCkKKworICAgICAgICAjIExhcmdlIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjEwMjMpLCAxMDIzLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjEwMjQpLCAxMDI0LjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIqKjIwMDApLCAyMDAwLjApCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5sb2cyLCAtMS41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzIsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgubG9nMihOQU4pKSkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgICMgbG9nMigpIGlzIG5vdCBhY2N1cmF0ZSBlbm91Z2ggb24gTWFjIE9TIFggVGlnZXIgKDEwLjQpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbWFjX3ZlcigxMCwgNSkKKyAgICBkZWYgdGVzdExvZzJFeGFjdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGdldCBleGFjdCBlcXVhbGl0eSBmb3IgbG9nMiBvZiBwb3dlcnMgb2YgMi4KKyAgICAgICAgYWN0dWFsID0gW21hdGgubG9nMihtYXRoLmxkZXhwKDEuMCwgbikpIGZvciBuIGluIHJhbmdlKC0xMDc0LCAxMDI0KV0KKyAgICAgICAgZXhwZWN0ZWQgPSBbZmxvYXQobikgZm9yIG4gaW4gcmFuZ2UoLTEwNzQsIDEwMjQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdExvZzEwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMTApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2xvZzEwKDAuMSknLCBtYXRoLmxvZzEwKDAuMSksIC0xKQpAQCAtMTAxMCw3ICsxMDM4LDYgQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X210ZXN0ZmlsZShzZWxmKToKLSAgICAgICAgQUxMT1dFRF9FUlJPUiA9IDIwICAjIHBlcm1pdHRlZCBlcnJvciwgaW4gdWxwcwogICAgICAgICBmYWlsX2ZtdCA9ICJ7fTp7fSh7IXJ9KTogZXhwZWN0ZWQgeyFyfSwgZ290IHshcn0iCiAKICAgICAgICAgZmFpbHVyZXMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKaW5kZXggN2MwYzg0Zi4uZTVkYjk0NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CkBAIC02NTgsNyArNjU4LDcgQEAKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NpemVvZihzZWxmKToKLSAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMlBQMlBQJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCdQMm5OMlBuJykKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGlvLkJ5dGVzSU8oKSksIGJhc2VzaXplKQogICAgICAgICBjaGVjayhpby5CeXRlc0lPKCksIGJhc2VzaXplICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQppbmRleCAwYmZkZGQ5Li5lZTZiMTVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgdGhlIG1lbW9yeXZpZXcKIAotWFhYIFdlIG5lZWQgbW9yZSB0ZXN0cyEgU29tZSB0ZXN0cyBhcmUgaW4gdGVzdF9ieXRlcworICAgU29tZSB0ZXN0cyBhcmUgaW4gdGVzdF9ieXRlcy4gTWFueSB0ZXN0cyB0aGF0IHJlcXVpcmUgX3Rlc3RidWZmZXIubmRhcnJheQorICAgYXJlIGluIHRlc3RfYnVmZmVyLgogIiIiCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMjQsMTUgKzI1LDE0IEBACiAgICAgICAgIHJldHVybiBmaWx0ZXIoTm9uZSwgW3NlbGYucm9fdHlwZSwgc2VsZi5yd190eXBlXSkKIAogICAgIGRlZiBjaGVja19nZXRpdGVtX3dpdGhfdHlwZShzZWxmLCB0cCk6Ci0gICAgICAgIGl0ZW0gPSBzZWxmLmdldGl0ZW1fdHlwZQogICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQogICAgICAgICBvbGRyZWZjb3VudCA9IHN5cy5nZXRyZWZjb3VudChiKQogICAgICAgICBtID0gc2VsZi5fdmlldyhiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIGl0ZW0oYiJhIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtWzBdLCBieXRlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzVdLCBpdGVtKGIiZiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTFdLCBpdGVtKGIiZiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTZdLCBpdGVtKGIiYSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIG9yZChiImEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1bMF0sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzVdLCBvcmQoYiJmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstMV0sIG9yZChiImYiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy02XSwgb3JkKGIiYSIpKQogICAgICAgICAjIEJvdW5kcyBjaGVja2luZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IG1bNl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGxhbWJkYTogbVstN10pCkBAIC03Niw3ICs3Niw5IEBACiAgICAgICAgIGIgPSBzZWxmLnJ3X3R5cGUoc2VsZi5fc291cmNlKQogICAgICAgICBvbGRyZWZjb3VudCA9IHN5cy5nZXRyZWZjb3VudChiKQogICAgICAgICBtID0gc2VsZi5fdmlldyhiKQotICAgICAgICBtWzBdID0gdHAoYiIwIikKKyAgICAgICAgbVswXSA9IG9yZChiJzEnKQorICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIxYmNkZWYiKQorICAgICAgICBtWzA6MV0gPSB0cChiIjAiKQogICAgICAgICBzZWxmLl9jaGVja19jb250ZW50cyh0cCwgYiwgYiIwYmNkZWYiKQogICAgICAgICBtWzE6M10gPSB0cChiIjEyIikKICAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMDEyZGVmIikKQEAgLTEwMiwxMCArMTA0LDE3IEBACiAgICAgICAgICMgV3JvbmcgaW5kZXgvc2xpY2UgdHlwZXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAwLjAsIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoc2xpY2UoMCwxLDEpLCAwKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwgc2xpY2UoMCwxLDEpKSwgYiJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAoMCwpLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICJhIiwgYiJhIikKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc2xpY2VzCisgICAgICAgIHNsaWNlcyA9IChzbGljZSgwLDEsMSksIHNsaWNlKDAsMSwyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgc2V0aXRlbSwgc2xpY2VzLCBiImEiKQogICAgICAgICAjIFRyeWluZyB0byByZXNpemUgdGhlIG1lbW9yeSBvYmplY3QKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgMCwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCAwLCBiImFiIikKKyAgICAgICAgZXhjID0gVmFsdWVFcnJvciBpZiBtLmZvcm1hdCA9PSAnYycgZWxzZSBUeXBlRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZXRpdGVtLCAwLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2V0aXRlbSwgMCwgYiJhYiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIHNsaWNlKDEsMSksIGIiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIHNsaWNlKDAsMiksIGIiYSIpCiAKQEAgLTE3NSw3ICsxODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2hhcGUsICg2LCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0pLCA2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3RyaWRlcywgKHNlbGYuaXRlbXNpemUsKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN1Ym9mZnNldHMsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdWJvZmZzZXRzLCAoKSkKICAgICAgICAgcmV0dXJuIG0KIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfcmVhZG9ubHkoc2VsZik6CkBAIC0yMDksMTIgKzIxOCwxNiBAQAogICAgICAgICAgICAgICAgICMgSWYgdHAgaXMgYSBmYWN0b3J5IHJhdGhlciB0aGFuIGEgcGxhaW4gdHlwZSwgc2tpcAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgIGNsYXNzIE15VmlldygpOgorICAgICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYXNlKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tID0gbWVtb3J5dmlldyhiYXNlKQogICAgICAgICAgICAgY2xhc3MgTXlTb3VyY2UodHApOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGNsYXNzIE15T2JqZWN0OgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCBhIG1lbW9yeXZpZXcgb2JqZWN0CisgICAgICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB0aHJvdWdoIGEgbWVtb3J5dmlldyBvYmplY3QuCisgICAgICAgICAgICAjIFRoaXMgZXhlcmNpc2VzIG1idWZfY2xlYXIoKS4KICAgICAgICAgICAgIGIgPSBNeVNvdXJjZSh0cChiJ2FiYycpKQogICAgICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKICAgICAgICAgICAgIG8gPSBNeU9iamVjdCgpCkBAIC0yMjYsNiArMjM5LDE3IEBACiAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cigpIGlzIE5vbmUsIHdyKCkpCiAKKyAgICAgICAgICAgICMgVGhpcyBleGVyY2lzZXMgbWVtb3J5X2NsZWFyKCkuCisgICAgICAgICAgICBtID0gTXlWaWV3KHRwKGInYWJjJykpCisgICAgICAgICAgICBvID0gTXlPYmplY3QoKQorICAgICAgICAgICAgbS54ID0gbQorICAgICAgICAgICAgbS5vID0gbworICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihvKQorICAgICAgICAgICAgbSA9IG8gPSBOb25lCisgICAgICAgICAgICAjIFRoZSBjeWNsZSBtdXN0IGJlIGJyb2tlbgorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3IoKSBpcyBOb25lLCB3cigpKQorCiAgICAgZGVmIF9jaGVja19yZWxlYXNlZChzZWxmLCBtLCB0cCk6CiAgICAgICAgIGNoZWNrID0gc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAicmVsZWFzZWQiKQogICAgICAgICB3aXRoIGNoZWNrOiBieXRlcyhtKQpAQCAtMjgzLDYgKzMwNyw1MSBAQAogICAgICAgICBpID0gaW8uQnl0ZXNJTyhiJ1paWlonKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGkucmVhZGludG8sIG0pCiAKKyAgICBkZWYgdGVzdF9nZXRidWZfZmFpbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLl92aWV3LCB7fSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgICMgTWVtb3J5dmlld3Mgb2YgcmVhZG9ubHkgKGhhc2hhYmxlKSB0eXBlcyBhcmUgaGFzaGFibGUsIGFuZCB0aGV5CisgICAgICAgICMgaGFzaCBhcyBoYXNoKG9iai50b2J5dGVzKCkpLgorICAgICAgICB0cCA9IHNlbGYucm9fdHlwZQorICAgICAgICBpZiB0cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gcmVhZC1vbmx5IHR5cGUgdG8gdGVzdCIpCisgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChiImFiY2RlZiIpKQorICAgICAgICAjIFJlbGVhc2luZyB0aGUgbWVtb3J5dmlldyBrZWVwcyB0aGUgc3RvcmVkIGhhc2ggdmFsdWUgKGFzIHdpdGggd2Vha3JlZnMpCisgICAgICAgIG0ucmVsZWFzZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChiImFiY2RlZiIpKQorICAgICAgICAjIEhhc2hpbmcgYSBtZW1vcnl2aWV3IGZvciB0aGUgZmlyc3QgdGltZSBhZnRlciBpdCBpcyByZWxlYXNlZAorICAgICAgICAjIHJlc3VsdHMgaW4gYW4gZXJyb3IgKGFzIHdpdGggd2Vha3JlZnMpLgorICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoYXNoLCBtKQorCisgICAgZGVmIHRlc3RfaGFzaF93cml0YWJsZShzZWxmKToKKyAgICAgICAgIyBNZW1vcnl2aWV3cyBvZiB3cml0YWJsZSB0eXBlcyBhcmUgdW5oYXNoYWJsZQorICAgICAgICB0cCA9IHNlbGYucndfdHlwZQorICAgICAgICBpZiB0cCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gd3JpdGFibGUgdHlwZSB0byB0ZXN0IikKKyAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKKyAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbSkKKworICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CisgICAgICAgICMgQ2hlY2sgbWVtb3J5dmlld3MgYXJlIHdlYWtyZWZhYmxlCisgICAgICAgIGZvciB0cCBpbiBzZWxmLl90eXBlczoKKyAgICAgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICAgICAgTCA9IFtdCisgICAgICAgICAgICBkZWYgY2FsbGJhY2sod3IsIGI9Yik6CisgICAgICAgICAgICAgICAgTC5hcHBlbmQoYikKKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobSwgY2FsbGJhY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIG0pCisgICAgICAgICAgICBkZWwgbQorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhMWzBdLCBiKQorCiAjIFZhcmlhdGlvbnMgb24gc291cmNlIG9iamVjdHMgZm9yIHRoZSBidWZmZXI6IGJ5dGVzLWxpa2Ugb2JqZWN0cywgdGhlbiBhcnJheXMKICMgd2l0aCBpdGVtc2l6ZSA+IDEuCiAjIE5PVEU6IHN1cHBvcnQgZm9yIG11bHRpLWRpbWVuc2lvbmFsIG9iamVjdHMgaXMgdW5pbXBsZW1lbnRlZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKaW5kZXggMjE5YWI5OS4uZTZmZTIwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZXRhY2xhc3MucHkKQEAgLTE1OSw2ICsxNTksNyBAQAogICAgIC4uLiAgICAgYmFyID0gMTIzCiAgICAgLi4uCiAgICAgZFsnX19tb2R1bGVfXyddID0gJ3Rlc3QudGVzdF9tZXRhY2xhc3MnCisgICAgZFsnX19xdWFsbmFtZV9fJ10gPSAnQycKICAgICBkWydmb28nXSA9IDQKICAgICBkWydmb28nXSA9IDQyCiAgICAgZFsnYmFyJ10gPSAxMjMKQEAgLTE3NywxMiArMTc4LDEyIEBACiAgICAgLi4uICAgICBiID0gMjQKICAgICAuLi4KICAgICBtZXRhOiBDICgpCi0gICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KKyAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnX19xdWFsbmFtZV9fJywgJ0MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCiAgICAga3c6IFtdCiAgICAgPj4+IHR5cGUoQykgaXMgZGljdAogICAgIFRydWUKICAgICA+Pj4gcHJpbnQoc29ydGVkKEMuaXRlbXMoKSkpCi0gICAgWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQorICAgIFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ19fcXVhbG5hbWVfXycsICdDJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQogICAgID4+PgogCiBBbmQgYWdhaW4sIHdpdGggYSBfX3ByZXBhcmVfXyBhdHRyaWJ1dGUuCkBAIC0xOTksMTEgKzIwMCwxMiBAQAogICAgIC4uLgogICAgIHByZXBhcmU6IEMgKCkgWygnb3RoZXInLCAnYm9vaCcpXQogICAgIGRbJ19fbW9kdWxlX18nXSA9ICd0ZXN0LnRlc3RfbWV0YWNsYXNzJworICAgIGRbJ19fcXVhbG5hbWVfXyddID0gJ0MnCiAgICAgZFsnYSddID0gMQogICAgIGRbJ2EnXSA9IDIKICAgICBkWydiJ10gPSAzCiAgICAgbWV0YTogQyAoKQotICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdhJywgMiksICgnYicsIDMpXQorICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdfX3F1YWxuYW1lX18nLCAnQycpLCAoJ2EnLCAyKSwgKCdiJywgMyldCiAgICAga3c6IFsoJ290aGVyJywgJ2Jvb2gnKV0KICAgICA+Pj4KIApAQCAtMjQ2LDcgKzI0OCwxMyBAQAogCiAiIiIKIAotX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQoraW1wb3J0IHN5cworCisjIFRyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB3aGljaCBjYXVzZXMgdmFyaW91cyB0ZXN0cyB0byBmYWlsLgoraWYgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKToKKyAgICBfX3Rlc3RfXyA9IHt9CitlbHNlOgorICAgIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQppbmRleCA0YTY5YjAwLi4wNDI3YmEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CkBAIC00LDkgKzQsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgZmluZGZpbGUKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgeG1sLmRvbQogaW1wb3J0IHhtbC5kb20ubWluaWRvbQotaW1wb3J0IHhtbC5wYXJzZXJzLmV4cGF0CiAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBwYXJzZSwgTm9kZSwgRG9jdW1lbnQsIHBhcnNlU3RyaW5nCiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgZ2V0RE9NSW1wbGVtZW50YXRpb24KQEAgLTE0LDcgKzEyLDYgQEAKIAogdHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogCi0KICMgVGhlIHRlc3RzIG9mIERvY3VtZW50VHlwZSBpbXBvcnRpbmcgdXNlIHRoZXNlIGhlbHBlcnMgdG8gY29uc3RydWN0CiAjIHRoZSBkb2N1bWVudHMgdG8gd29yayB3aXRoLCBzaW5jZSBub3QgYWxsIERPTSBidWlsZGVycyBhY3R1YWxseQogIyBjcmVhdGUgdGhlIERvY3VtZW50VHlwZSBub2Rlcy4KQEAgLTUwLDcgKzQ3LDcgQEAKIAogICAgIGRlZiBjaGVja1dob2xlVGV4dChzZWxmLCBub2RlLCBzKToKICAgICAgICAgdCA9IG5vZGUud2hvbGVUZXh0Ci0gICAgICAgIHNlbGYuY29uZmlybSh0ID09IHMsICJsb29raW5nIGZvciAlcywgZm91bmQgJXMiICUgKHJlcHIocyksIHJlcHIodCkpKQorICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXIsIGZvdW5kICVyIiAlIChzLCB0KSkKIAogICAgIGRlZiB0ZXN0UGFyc2VGcm9tRmlsZShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHRzdGZpbGUpIGFzIGZpbGU6CkBAIC0yODIsNiArMjc5LDcgQEAKIAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoImRlZiIsICJnaGkiKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZSwgImZvbyIpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZSgiZGVmIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAwKQogICAgICAgICBkb20udW5saW5rKCkKQEAgLTI5Myw2ICsyOTEsOCBAQAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmciLCAieG1sbnM6cHl0aG9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy5weXRob24ub3JnIiwgInB5dGhvbjphYmNhdHRyIiwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5TLAorICAgICAgICAgICAgImZvbyIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDIpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCAiYWJjYXR0ciIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMSkKQEAgLTMwNCwxMSArMzA0LDIzIEBACiAgICAgICAgIGNoaWxkLnNldEF0dHJpYnV0ZSgic3BhbSIsICJqYW0iKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCiAgICAgICAgIG5vZGUgPSBjaGlsZC5nZXRBdHRyaWJ1dGVOb2RlKCJzcGFtIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZSwKKyAgICAgICAgICAgIE5vbmUpCiAgICAgICAgIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUobm9kZSkKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAwCiAgICAgICAgICAgICAgICAgYW5kIGNoaWxkLmdldEF0dHJpYnV0ZU5vZGUoInNwYW0iKSBpcyBOb25lKQorICAgICAgICBkb20yID0gRG9jdW1lbnQoKQorICAgICAgICBjaGlsZDIgPSBkb20yLmFwcGVuZENoaWxkKGRvbS5jcmVhdGVFbGVtZW50KCJmb28iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoeG1sLmRvbS5Ob3RGb3VuZEVyciwgY2hpbGQucmVtb3ZlQXR0cmlidXRlTm9kZSwKKyAgICAgICAgICAgIG5vZGUpCiAgICAgICAgIGRvbS51bmxpbmsoKQogCisgICAgZGVmIHRlc3RIYXNBdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGRvbSA9IERvY3VtZW50KCkKKyAgICAgICAgY2hpbGQgPSBkb20uYXBwZW5kQ2hpbGQoZG9tLmNyZWF0ZUVsZW1lbnQoImZvbyIpKQorICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoInNwYW0iLCAiamFtIikKKyAgICAgICAgc2VsZi5jb25maXJtKGNoaWxkLmhhc0F0dHJpYnV0ZSgic3BhbSIpKQorCiAgICAgZGVmIHRlc3RDaGFuZ2VBdHRyKHNlbGYpOgogICAgICAgICBkb20gPSBwYXJzZVN0cmluZygiPGFiYy8+IikKICAgICAgICAgZWwgPSBkb20uZG9jdW1lbnRFbGVtZW50CkBAIC01OTIsNyArNjA0LDEzIEBACiAKICAgICBkZWYgdGVzdEZpcnN0Q2hpbGQoc2VsZik6IHBhc3MKIAotICAgIGRlZiB0ZXN0SGFzQ2hpbGROb2RlcyhzZWxmKTogcGFzcworICAgIGRlZiB0ZXN0SGFzQ2hpbGROb2RlcyhzZWxmKToKKyAgICAgICAgZG9tID0gcGFyc2VTdHJpbmcoIjxkb2M+PGZvby8+PC9kb2M+IikKKyAgICAgICAgZG9jID0gZG9tLmRvY3VtZW50RWxlbWVudAorICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9tLmhhc0NoaWxkTm9kZXMoKSkKKyAgICAgICAgZG9tMiA9IHBhcnNlU3RyaW5nKCI8ZG9jLz4iKQorICAgICAgICBkb2MyID0gZG9tMi5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkb2MyLmhhc0NoaWxkTm9kZXMoKSkKIAogICAgIGRlZiBfdGVzdENsb25lRWxlbWVudENvcGllc0F0dHJpYnV0ZXMoc2VsZiwgZTEsIGUyLCB0ZXN0KToKICAgICAgICAgYXR0cnMxID0gZTEuYXR0cmlidXRlcwpAQCAtMTA0MSw0MSArMTA1OSw2IEBACiAgICAgICAgICAgICAgICAgInRlc3QgTm9kZUxpc3QuaXRlbSgpIikKICAgICAgICAgZG9jLnVubGluaygpCiAKLSAgICBkZWYgdGVzdFNBWDJET00oc2VsZik6Ci0gICAgICAgIGZyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQotCi0gICAgICAgIHNheDJkb20gPSBwdWxsZG9tLlNBWDJET00oKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RG9jdW1lbnQoKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgiZG9jIiwge30pCi0gICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCi0gICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJzdWJlbG0iLCB7fSkKLSAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKLSAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJzdWJlbG0iKQotICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQotICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoImRvYyIpCi0gICAgICAgIHNheDJkb20uZW5kRG9jdW1lbnQoKQotCi0gICAgICAgIGRvYyA9IHNheDJkb20uZG9jdW1lbnQKLSAgICAgICAgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQKLSAgICAgICAgKHRleHQxLCBlbG0xLCB0ZXh0MikgPSByb290LmNoaWxkTm9kZXMKLSAgICAgICAgdGV4dDMgPSBlbG0xLmNoaWxkTm9kZXNbMF0KLQotICAgICAgICBzZWxmLmNvbmZpcm0odGV4dDEucHJldmlvdXNTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDEubmV4dFNpYmxpbmcgaXMgZWxtMSBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLnByZXZpb3VzU2libGluZyBpcyB0ZXh0MSBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLm5leHRTaWJsaW5nIGlzIHRleHQyIGFuZAotICAgICAgICAgICAgICAgIHRleHQyLnByZXZpb3VzU2libGluZyBpcyBlbG0xIGFuZAotICAgICAgICAgICAgICAgIHRleHQyLm5leHRTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMucHJldmlvdXNTaWJsaW5nIGlzIE5vbmUgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMubmV4dFNpYmxpbmcgaXMgTm9uZSwgInRlc3RTQVgyRE9NIC0gc2libGluZ3MiKQotCi0gICAgICAgIHNlbGYuY29uZmlybShyb290LnBhcmVudE5vZGUgaXMgZG9jIGFuZAotICAgICAgICAgICAgICAgIHRleHQxLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICBlbG0xLnBhcmVudE5vZGUgaXMgcm9vdCBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDMucGFyZW50Tm9kZSBpcyBlbG0xLCAidGVzdFNBWDJET00gLSBwYXJlbnRzIikKLSAgICAgICAgZG9jLnVubGluaygpCi0KICAgICBkZWYgdGVzdEVuY29kaW5ncyhzZWxmKToKICAgICAgICAgZG9jID0gcGFyc2VTdHJpbmcoJzxmb28+JiN4MjBhYzs8L2Zvbz4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgpLApAQCAtMTA4NCw2ICsxMDY3LDExIEBACiAgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+PGZvbz5ceGUyXHg4Mlx4YWM8L2Zvbz4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgnaXNvLTg4NTktMTUnKSwKICAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMTUiPz48Zm9vPlx4YTQ8L2Zvbz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgndXMtYXNjaWknKSwKKyAgICAgICAgICAgIGInPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXMtYXNjaWkiPz48Zm9vPiYjODM2NDs8L2Zvbz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvYy50b3htbCgndXRmLTE2JyksCisgICAgICAgICAgICAnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTE2Ij8+JworICAgICAgICAgICAgJzxmb28+XHUyMGFjPC9mb28+Jy5lbmNvZGUoJ3V0Zi0xNicpKQogCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgY2hhcmFjdGVyIGRlY29kaW5nIGVycm9ycyB0aHJvdyBleGNlcHRpb25zIGluc3RlYWQKICAgICAgICAgIyBvZiBjcmFzaGluZwpAQCAtMTUyMiwxMiArMTUxMCwyMSBAQAogICAgICAgICBkb2MuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZUNvbW1lbnQoImZvby0tYmFyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRvYy50b3htbCkKIAorCiAgICAgZGVmIHRlc3RFbXB0eVhNTE5TVmFsdWUoc2VsZik6CiAgICAgICAgIGRvYyA9IHBhcnNlU3RyaW5nKCI8ZWxlbWVudCB4bWxucz0nJz5cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxmb28vPlxuPC9lbGVtZW50PiIpCiAgICAgICAgIGRvYzIgPSBwYXJzZVN0cmluZyhkb2MudG94bWwoKSkKICAgICAgICAgc2VsZi5jb25maXJtKGRvYzIubmFtZXNwYWNlVVJJID09IHhtbC5kb20uRU1QVFlfTkFNRVNQQUNFKQogCisgICAgZGVmIHRlc3REb2NSZW1vdmVDaGlsZChzZWxmKToKKyAgICAgICAgZG9jID0gcGFyc2UodHN0ZmlsZSkKKyAgICAgICAgdGl0bGVfdGFnID0gZG9jLmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiVElUTEUiKVswXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggeG1sLmRvbS5Ob3RGb3VuZEVyciwgZG9jLnJlbW92ZUNoaWxkLCB0aXRsZV90YWcpCisgICAgICAgIG51bV9jaGlsZHJlbl9iZWZvcmUgPSBsZW4oZG9jLmNoaWxkTm9kZXMpCisgICAgICAgIGRvYy5yZW1vdmVDaGlsZChkb2MuY2hpbGROb2Rlc1swXSkKKyAgICAgICAgbnVtX2NoaWxkcmVuX2FmdGVyID0gbGVuKGRvYy5jaGlsZE5vZGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtX2NoaWxkcmVuX2FmdGVyID09IG51bV9jaGlsZHJlbl9iZWZvcmUgLSAxKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KE1pbmlkb21UZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IDI4YjUyYTkuLmEzZGUzOTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTQxNyw2ICs0MTcsMzUgQEAKICAgICAgICAgICAgIG1beF0gPSBiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1beF0sIGIpCiAKKyAgICBkZWYgdGVzdF9yZWFkX2FsbChzZWxmKToKKyAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChtLmNsb3NlKQorCisgICAgICAgICMgV2l0aCBubyBwYXJhbWV0ZXJzLCBvciBOb25lIG9yIGEgbmVnYXRpdmUgYXJndW1lbnQsIHJlYWRzIGFsbAorICAgICAgICBtLndyaXRlKGJ5dGVzKHJhbmdlKDE2KSkpCisgICAgICAgIG0uc2VlaygwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBieXRlcyhyYW5nZSgxNikpKQorICAgICAgICBtLnNlZWsoOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYnl0ZXMocmFuZ2UoOCwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgpLCBiJycpCisgICAgICAgIG0uc2VlaygzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZChOb25lKSwgYnl0ZXMocmFuZ2UoMywgMTYpKSkKKyAgICAgICAgbS5zZWVrKDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC0xKSwgYnl0ZXMocmFuZ2UoNCwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC0yKSwgYnl0ZXMocmFuZ2UoNSwgMTYpKSkKKyAgICAgICAgbS5zZWVrKDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKC00MiksIGJ5dGVzKHJhbmdlKDksIDE2KSkpCisKKyAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfYXJnKHNlbGYpOgorICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG0uY2xvc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgNS41KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0ucmVhZCwgWzEsIDIsIDNdKQorCiAgICAgZGVmIHRlc3RfZXh0ZW5kZWRfZ2V0c2xpY2Uoc2VsZik6CiAgICAgICAgICMgVGVzdCBleHRlbmRlZCBzbGljaW5nIGJ5IGNvbXBhcmluZyB3aXRoIGxpc3Qgc2xpY2luZy4KICAgICAgICAgcyA9IGJ5dGVzKHJldmVyc2VkKHJhbmdlKDI1NikpKQpAQCAtNTQzLDggKzU3Miw3IEBACiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKG1tYXAuZXJyb3IsIEVudmlyb25tZW50RXJyb3IpKQotICAgICAgICBzZWxmLmFzc2VydEluKCJtbWFwLmVycm9yIiwgc3RyKG1tYXAuZXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydElzKG1tYXAuZXJyb3IsIE9TRXJyb3IpCiAKICAgICBkZWYgdGVzdF9pb19tZXRob2RzKHNlbGYpOgogICAgICAgICBkYXRhID0gYiIwMTIzNDU2Nzg5IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQppbmRleCAxNTgzNmNhLi5lNWEyNTI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X21vZHVsZS5weQpAQCAtNSw2ICs1LDE1IEBACiBpbXBvcnQgc3lzCiBNb2R1bGVUeXBlID0gdHlwZShzeXMpCiAKK2NsYXNzIEZ1bGxMb2FkZXI6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbSk6CisgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChjcmFmdGVkKT4iLmZvcm1hdChtLl9fbmFtZV9fKQorCitjbGFzcyBCYXJlTG9hZGVyOgorICAgIHBhc3MKKworCiBjbGFzcyBNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdW5pbml0aWFsaXplZChzZWxmKToKICAgICAgICAgIyBBbiB1bmluaXRpYWxpemVkIG1vZHVsZSBoYXMgbm8gX19kaWN0X18gb3IgX19uYW1lX18sCkBAIC03MCwxNiArNzksMTAwIEBACiAgICAgICAgIG0gPSBNb2R1bGVUeXBlKCJmb28iKQogICAgICAgICBtLmRlc3Ryb3llZCA9IGRlc3Ryb3llZAogICAgICAgICBzID0gIiIiY2xhc3MgQToKLSAgICBkZWYgX19kZWxfXyhzZWxmLCBkZXN0cm95ZWQ9ZGVzdHJveWVkKToKLSAgICAgICAgZGVzdHJveWVkLmFwcGVuZCgxKQotYSA9IEEoKSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsKToKKyAgICAgICAgc2VsZi5sID0gbAorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmwuYXBwZW5kKDEpCithID0gQShkZXN0cm95ZWQpIiIiCiAgICAgICAgIGV4ZWMocywgbS5fX2RpY3RfXykKICAgICAgICAgZGVsIG0KICAgICAgICAgZ2NfY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzdHJveWVkLCBbMV0pCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9taW5pbWFsKHNlbGYpOgorICAgICAgICAjIHJlcHJzIHdoZW4gbW9kdWxlcyBoYXZlIG5vIF9fZmlsZV9fLCBfX25hbWVfXywgb3IgX19sb2FkZXJfXworICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnPyc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbmFtZShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2Zvbyc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfbmFtZV9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9maWxlbmFtZV9vbmx5KHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnPycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyX2J1dF9ub19uYW1lKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnPycgKDxjbGFzcyAndGVzdC50ZXN0X21vZHVsZS5CYXJlTG9hZGVyJz4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyX2J1dF9ub19uYW1lKHNlbGYpOgorICAgICAgICAjIG0uX19sb2FkZXJfXy5tb2R1bGVfcmVwcigpIHdpbGwgZmFpbCBiZWNhdXNlIHRoZSBtb2R1bGUgaGFzIG5vCisgICAgICAgICMgbS5fX25hbWVfXy4gIFRoaXMgZXhjZXB0aW9uIHdpbGwgZ2V0IHN1cHByZXNzZWQgYW5kIGluc3RlYWQgdGhlCisgICAgICAgICMgbG9hZGVyJ3MgcmVwciB3aWxsIGJlIHVzZWQuCisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBkZWwgbS5fX25hbWVfXworICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEZ1bGxMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICc/JyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkZ1bGxMb2FkZXInPik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfYmFyZV9sb2FkZXIoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEJhcmVMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICdmb28nICg8Y2xhc3MgJ3Rlc3QudGVzdF9tb2R1bGUuQmFyZUxvYWRlcic+KT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcihzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKGNyYWZ0ZWQpPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIHRoZSBsb2FkZXIgaGFzIG5vIG1vZHVsZV9yZXByKCksIHVzZSB0aGUgZmlsZSBuYW1lLgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgZnJvbSAnL3RtcC9mb28ucHknPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2Z1bGxfbG9hZGVyX2FuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgIyBFdmVuIHRob3VnaCB0aGUgbW9kdWxlIGhhcyBhbiBfX2ZpbGVfXywgdXNlIF9fbG9hZGVyX18ubW9kdWxlX3JlcHIoKQorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBGdWxsTG9hZGVyCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJ2ZvbycgKGNyYWZ0ZWQpPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfc291cmNlKHNlbGYpOgorICAgICAgICByID0gcmVwcih1bml0dGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyWzoyNV0sICI8bW9kdWxlICd1bml0dGVzdCcgZnJvbSAnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyWy0xMzpdLCAiX19pbml0X18ucHknPiIpCisKKyAgICAjIGZyb3plbiBhbmQgbmFtZXNwYWNlIG1vZHVsZSByZXBycyBhcmUgdGVzdGVkIGluIGltcG9ydGxpYi4KKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KE1vZHVsZVRlc3RzKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKaW5kZXggYTE4NDIxNy4uYzVmYzMyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGVmaW5kZXIucHkKQEAgLTEsNyArMSw3IEBACi1pbXBvcnQgX19mdXR1cmVfXwogaW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGRpc3R1dGlscy5kaXJfdXRpbAogaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCBtb2R1bGVmaW5kZXIKIAogVEVTVF9ESVIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLVRFU1RfUEFUSCA9IFtURVNUX0RJUiwgb3MucGF0aC5kaXJuYW1lKF9fZnV0dXJlX18uX19maWxlX18pXQorVEVTVF9QQVRIID0gW1RFU1RfRElSLCBvcy5wYXRoLmRpcm5hbWUodGVtcGZpbGUuX19maWxlX18pXQogCiAjIEVhY2ggdGVzdCBkZXNjcmlwdGlvbiBpcyBhIGxpc3Qgb2YgNSBpdGVtczoKICMKQEAgLTE5NiwxMiArMTk2LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgYmFyCiAiIiJdCiAKKwogZGVmIG9wZW5fZmlsZShwYXRoKToKLSAgICAjI3ByaW50ICIjIiwgb3MucGF0aC5hYnNwYXRoKHBhdGgpCiAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShwYXRoKQotICAgIGRpc3R1dGlscy5kaXJfdXRpbC5ta3BhdGgoZGlybmFtZSkKKyAgICB0cnk6CisgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICByYWlzZQogICAgIHJldHVybiBvcGVuKHBhdGgsICJ3IikKIAorCiBkZWYgY3JlYXRlX3BhY2thZ2Uoc291cmNlKToKICAgICBvZmkgPSBOb25lCiAgICAgdHJ5OgpAQCAtMjE2LDYgKzIyMSw3IEBACiAgICAgICAgIGlmIG9maToKICAgICAgICAgICAgIG9maS5jbG9zZSgpCiAKKwogY2xhc3MgTW9kdWxlRmluZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9kb190ZXN0KHNlbGYsIGluZm8sIHJlcG9ydD1GYWxzZSk6CiAgICAgICAgIGltcG9ydF90aGlzLCBtb2R1bGVzLCBtaXNzaW5nLCBtYXliZV9taXNzaW5nLCBzb3VyY2UgPSBpbmZvCkBAIC0yMzQsMTkgKzI0MCwxNyBAQAogIyMgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7IHRyYWNlYmFjay5wcmludF9leGMoKQogIyMgICAgICAgICAgICAgICAgc3lzLnBhdGggPSBvcGF0aAogIyMgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBtb2R1bGVzID0gc2V0KG1vZHVsZXMpCi0gICAgICAgICAgICBmb3VuZCA9IHNldChtZi5tb2R1bGVzLmtleXMoKSkKLSAgICAgICAgICAgIG1vcmUgPSBsaXN0KGZvdW5kIC0gbW9kdWxlcykKLSAgICAgICAgICAgIGxlc3MgPSBsaXN0KG1vZHVsZXMgLSBmb3VuZCkKKyAgICAgICAgICAgIG1vZHVsZXMgPSBzb3J0ZWQoc2V0KG1vZHVsZXMpKQorICAgICAgICAgICAgZm91bmQgPSBzb3J0ZWQobWYubW9kdWxlcykKICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgZm91bmQgd2hhdCB3ZSBleHBlY3RlZCwgbm90IG1vcmUsIG5vdCBsZXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChtb3JlLCBsZXNzKSwgKFtdLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBtb2R1bGVzKQogCiAgICAgICAgICAgICAjIGNoZWNrIGZvciBtaXNzaW5nIGFuZCBtYXliZSBtaXNzaW5nIG1vZHVsZXMKICAgICAgICAgICAgIGJhZCwgbWF5YmUgPSBtZi5hbnlfbWlzc2luZ19tYXliZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhZCwgbWlzc2luZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF5YmUsIG1heWJlX21pc3NpbmcpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBkaXN0dXRpbHMuZGlyX3V0aWwucmVtb3ZlX3RyZWUoVEVTVF9ESVIpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RfRElSKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgc2VsZi5fZG9fdGVzdChwYWNrYWdlX3Rlc3QpCkBAIC0yNTQsMjUgKzI1OCwyMyBAQAogICAgIGRlZiB0ZXN0X21heWJlKHNlbGYpOgogICAgICAgICBzZWxmLl9kb190ZXN0KG1heWJlX3Rlc3QpCiAKLSAgICBpZiBnZXRhdHRyKF9fZnV0dXJlX18sICJhYnNvbHV0ZV9pbXBvcnQiLCBOb25lKToKKyAgICBkZWYgdGVzdF9tYXliZV9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QobWF5YmVfdGVzdF9uZXcpCiAKLSAgICAgICAgZGVmIHRlc3RfbWF5YmVfbmV3KHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChtYXliZV90ZXN0X25ldykKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KGFic29sdXRlX2ltcG9ydF90ZXN0KQogCi0gICAgICAgIGRlZiB0ZXN0X2Fic29sdXRlX2ltcG9ydHMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KGFic29sdXRlX2ltcG9ydF90ZXN0KQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3QpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0cyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3QpCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18yKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzIpCiAKLSAgICAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0c18yKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8yKQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8zKQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMykKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGRpc3R1dGlscy5sb2cuc2V0X3RocmVzaG9sZChkaXN0dXRpbHMubG9nLldBUk4pCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTW9kdWxlRmluZGVyVGVzdCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CmluZGV4IDg2YzY4ZGMuLmZlYjdiZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQpAQCAtMjQ3LDIwICsyNDcsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYW55KHggPiAweDgwIGZvciB4IGluIGUpKQogCiAgICAgZGVmIHRlc3RfYnVnMTU3MjgzMihzZWxmKToKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPj0gMHgxMDAwMDoKLSAgICAgICAgICAgIG15dW5pY2hyID0gY2hyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBteXVuaWNociA9IGxhbWJkYSB4OiBjaHIoMHhEN0MwKyh4Pj4xMCkpICsgY2hyKDB4REMwMCsoeCYweDNGRikpCi0KICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMHgxMDAwMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgIyBBbnkgSVNPIDIwMjIgY29kZWMgd2lsbCBjYXVzZSB0aGUgc2VnZmF1bHQKLSAgICAgICAgICAgIG15dW5pY2hyKHgpLmVuY29kZSgnaXNvXzIwMjJfanAnLCAnaWdub3JlJykKKyAgICAgICAgICAgIGNocih4KS5lbmNvZGUoJ2lzb18yMDIyX2pwJywgJ2lnbm9yZScpCiAKIGNsYXNzIFRlc3RTdGF0ZWZ1bCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGV4dCA9ICdcdTRFMTZcdTRFMTYnCiAgICAgZW5jb2RpbmcgPSAnaXNvLTIwMjItanAnCiAgICAgZXhwZWN0ZWQgPSBiJ1x4MWIkQkAkQCQnCi0gICAgZXhwZWN0ZWRfcmVzZXQgPSBiJ1x4MWIkQkAkQCRceDFiKEInCisgICAgcmVzZXQgPSBiJ1x4MWIoQicKKyAgICBleHBlY3RlZF9yZXNldCA9IGV4cGVjdGVkICsgcmVzZXQKIAogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRleHQuZW5jb2RlKHNlbGYuZW5jb2RpbmcpLCBzZWxmLmV4cGVjdGVkX3Jlc2V0KQpAQCAtMjcxLDYgKzI2Nyw4IEBACiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShjaGFyKQogICAgICAgICAgICAgZm9yIGNoYXIgaW4gc2VsZi50ZXh0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgc2VsZi5leHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyLmVuY29kZSgnJywgZmluYWw9VHJ1ZSksIHNlbGYucmVzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBiJycpCiAKICAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbGVuY29kZXJfZmluYWwoc2VsZik6CiAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0aW5jcmVtZW50YWxlbmNvZGVyKHNlbGYuZW5jb2RpbmcpKCkKQEAgLTI3OSwxMiArMjc3LDE0IEBACiAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShjaGFyLCBpbmRleCA9PSBsYXN0X2luZGV4KQogICAgICAgICAgICAgZm9yIGluZGV4LCBjaGFyIGluIGVudW1lcmF0ZShzZWxmLnRleHQpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgc2VsZi5leHBlY3RlZF9yZXNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyLmVuY29kZSgnJywgZmluYWw9VHJ1ZSksIGInJykKIAogY2xhc3MgVGVzdEhaU3RhdGVmdWwoVGVzdFN0YXRlZnVsKToKICAgICB0ZXh0ID0gJ1x1ODA0YVx1ODA0YScKICAgICBlbmNvZGluZyA9ICdoeicKICAgICBleHBlY3RlZCA9IGInfntBREFEJwotICAgIGV4cGVjdGVkX3Jlc2V0ID0gYid+e0FEQUR+fScKKyAgICByZXNldCA9IGInfn0nCisgICAgZXhwZWN0ZWRfcmVzZXQgPSBleHBlY3RlZCArIHJlc2V0CiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKaW5kZXggYWI2ZDM2YS4uZTMxM2RkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgcXVldWUgYXMgcHlxdWV1ZQogaW1wb3J0IHRpbWUKIGltcG9ydCBpbworaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgZ2MKQEAgLTE3LDYgKzE4LDcgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCByYW5kb20KIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgc3RydWN0CiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdGVzdC5zY3JpcHRfaGVscGVyCiAKQEAgLTg0LDYgKzg2LDEzIEBACiAKIFdJTjMyID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQogCitmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKK2RlZiB3YWl0X2Zvcl9oYW5kbGUoaGFuZGxlLCB0aW1lb3V0KToKKyAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lIGFuZCB0aW1lb3V0IDwgMC4wOgorICAgICAgICB0aW1lb3V0ID0gTm9uZQorICAgIHJldHVybiB3YWl0KFtoYW5kbGVdLCB0aW1lb3V0KQorCiB0cnk6CiAgICAgTUFYRkQgPSBvcy5zeXNjb25mKCJTQ19PUEVOX01BWCIpCiBleGNlcHQ6CkBAIC0xOTcsNiArMjA2LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycmVudC5pZGVudCwgb3MuZ2V0cGlkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VycmVudC5leGl0Y29kZSwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X2RhZW1vbl9hcmd1bWVudChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICJ0aHJlYWRzIjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQnkgZGVmYXVsdCB1c2VzIHRoZSBjdXJyZW50IHByb2Nlc3MncyBkYWVtb24gZmxhZy4KKyAgICAgICAgcHJvYzAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYzAuZGFlbW9uLCBzZWxmLmN1cnJlbnRfcHJvY2VzcygpLmRhZW1vbikKKyAgICAgICAgcHJvYzEgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QsIGRhZW1vbj1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvYzEuZGFlbW9uKQorICAgICAgICBwcm9jMiA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdCwgZGFlbW9uPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2MyLmRhZW1vbikKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfdGVzdChjbHMsIHEsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICBjdXJyZW50ID0gY2xzLmN1cnJlbnRfcHJvY2VzcygpCkBAIC0yNjIsOSArMjgzLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocCwgc2VsZi5hY3RpdmVfY2hpbGRyZW4oKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4aXRjb2RlLCBOb25lKQogCisgICAgICAgIGpvaW4gPSBUaW1pbmdXcmFwcGVyKHAuam9pbikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oMCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwoam9pbi5lbGFwc2VkLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5pc19hbGl2ZSgpLCBUcnVlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbigtMSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwoam9pbi5lbGFwc2VkLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5pc19hbGl2ZSgpLCBUcnVlKQorCiAgICAgICAgIHAudGVybWluYXRlKCkKIAotICAgICAgICBqb2luID0gVGltaW5nV3JhcHBlcihwLmpvaW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbigpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQogCkBAIC0zMjksNiArMzU5LDI2IEBACiAgICAgICAgICAgICBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZCkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9zZW50aW5lbChjbHMsIGV2ZW50KToKKyAgICAgICAgZXZlbnQud2FpdCgxMC4wKQorCisgICAgZGVmIHRlc3Rfc2VudGluZWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAidGhyZWFkcyI6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXZlbnQgPSBzZWxmLkV2ZW50KCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF9zZW50aW5lbCwgYXJncz0oZXZlbnQsKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHAuc2VudGluZWwKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLmpvaW4pCisgICAgICAgIHNlbnRpbmVsID0gcC5zZW50aW5lbAorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VudGluZWwsIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3YWl0X2Zvcl9oYW5kbGUoc2VudGluZWwsIHRpbWVvdXQ9MC4wKSkKKyAgICAgICAgZXZlbnQuc2V0KCkKKyAgICAgICAgcC5qb2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhaXRfZm9yX2hhbmRsZShzZW50aW5lbCwgdGltZW91dD1ERUxUQSkpCisKICMKICMKICMKQEAgLTg2OCw2ICs5MTgsMTA0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbCh3YWl0LmVsYXBzZWQsIFRJTUVPVVQxKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3dhaXRmb3JfZihjbHMsIGNvbmQsIHN0YXRlKToKKyAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgc3RhdGUudmFsdWUgPSAwCisgICAgICAgICAgICBjb25kLm5vdGlmeSgpCisgICAgICAgICAgICByZXN1bHQgPSBjb25kLndhaXRfZm9yKGxhbWJkYSA6IHN0YXRlLnZhbHVlPT00KQorICAgICAgICAgICAgaWYgbm90IHJlc3VsdCBvciBzdGF0ZS52YWx1ZSAhPSA0OgorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfU0hBUkVEQ1RZUEVTLCAnbmVlZHMgc2hhcmVkY3R5cGVzJykKKyAgICBkZWYgdGVzdF93YWl0Zm9yKHNlbGYpOgorICAgICAgICAjIGJhc2VkIG9uIHRlc3QgaW4gdGVzdC9sb2NrX3Rlc3RzLnB5CisgICAgICAgIGNvbmQgPSBzZWxmLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXRlID0gc2VsZi5WYWx1ZSgnaScsIC0xKQorCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdGZvcl9mLCBhcmdzPShjb25kLCBzdGF0ZSkpCisgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICByZXN1bHQgPSBjb25kLndhaXRfZm9yKGxhbWJkYSA6IHN0YXRlLnZhbHVlPT0wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUudmFsdWUsIDApCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICAgICAgc3RhdGUudmFsdWUgKz0gMQorICAgICAgICAgICAgICAgIGNvbmQubm90aWZ5KCkKKworICAgICAgICBwLmpvaW4oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwLmlzX2FsaXZlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leGl0Y29kZSwgMCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0Zm9yX3RpbWVvdXRfZihjbHMsIGNvbmQsIHN0YXRlLCBzdWNjZXNzLCBzZW0pOgorICAgICAgICBzZW0ucmVsZWFzZSgpCisgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gMC4xCisgICAgICAgICAgICBkdCA9IHRpbWUudGltZSgpCisgICAgICAgICAgICByZXN1bHQgPSBjb25kLndhaXRfZm9yKGxhbWJkYSA6IHN0YXRlLnZhbHVlPT00LCB0aW1lb3V0PWV4cGVjdGVkKQorICAgICAgICAgICAgZHQgPSB0aW1lLnRpbWUoKSAtIGR0CisgICAgICAgICAgICAjIGJvcnJvdyBsb2dpYyBpbiBhc3NlcnRUaW1lb3V0KCkgZnJvbSB0ZXN0L2xvY2tfdGVzdHMucHkKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIGV4cGVjdGVkICogMC42IDwgZHQgPCBleHBlY3RlZCAqIDEwLjA6CisgICAgICAgICAgICAgICAgc3VjY2Vzcy52YWx1ZSA9IFRydWUKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKEhBU19TSEFSRURDVFlQRVMsICduZWVkcyBzaGFyZWRjdHlwZXMnKQorICAgIGRlZiB0ZXN0X3dhaXRmb3JfdGltZW91dChzZWxmKToKKyAgICAgICAgIyBiYXNlZCBvbiB0ZXN0IGluIHRlc3QvbG9ja190ZXN0cy5weQorICAgICAgICBjb25kID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICBzdGF0ZSA9IHNlbGYuVmFsdWUoJ2knLCAwKQorICAgICAgICBzdWNjZXNzID0gc2VsZi5WYWx1ZSgnaScsIEZhbHNlKQorICAgICAgICBzZW0gPSBzZWxmLlNlbWFwaG9yZSgwKQorCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdGZvcl90aW1lb3V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oY29uZCwgc3RhdGUsIHN1Y2Nlc3MsIHNlbSkpCisgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbS5hY3F1aXJlKHRpbWVvdXQ9MTApKQorCisgICAgICAgICMgT25seSBpbmNyZW1lbnQgMyB0aW1lcywgc28gc3RhdGUgPT0gNCBpcyBuZXZlciByZWFjaGVkLgorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKKyAgICAgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgICAgICBzdGF0ZS52YWx1ZSArPSAxCisgICAgICAgICAgICAgICAgY29uZC5ub3RpZnkoKQorCisgICAgICAgIHAuam9pbig1KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VjY2Vzcy52YWx1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0X3Jlc3VsdChjbHMsIGMsIHBpZCk6CisgICAgICAgIHdpdGggYzoKKyAgICAgICAgICAgIGMubm90aWZ5KCkKKyAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0lOVCkKKworICAgIGRlZiB0ZXN0X3dhaXRfcmVzdWx0KHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIFByb2Nlc3Nlc01peGluKSBhbmQgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGlkID0gTm9uZQorCisgICAgICAgIGMgPSBzZWxmLkNvbmRpdGlvbigpCisgICAgICAgIHdpdGggYzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy53YWl0KDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLndhaXQoMC4xKSkKKworICAgICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF93YWl0X3Jlc3VsdCwgYXJncz0oYywgcGlkKSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy53YWl0KDEwKSkKKyAgICAgICAgICAgIGlmIHBpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwgYy53YWl0LCAxMCkKKworICAgICAgICAgICAgcC5qb2luKCkKKwogCiBjbGFzcyBfVGVzdEV2ZW50KEJhc2VUZXN0Q2FzZSk6CiAKQEAgLTkxMSw2ICsxMDU5LDM0MCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdhaXQoKSwgVHJ1ZSkKIAogIworIyBUZXN0cyBmb3IgQmFycmllciAtIGFkYXB0ZWQgZnJvbSB0ZXN0cyBpbiB0ZXN0L2xvY2tfdGVzdHMucHkKKyMKKworIyBNYW55IG9mIHRoZSB0ZXN0cyBmb3IgdGhyZWFkaW5nLkJhcnJpZXIgdXNlIGEgbGlzdCBhcyBhbiBhdG9taWMKKyMgY291bnRlcjogYSB2YWx1ZSBpcyBhcHBlbmRlZCB0byBpbmNyZW1lbnQgdGhlIGNvdW50ZXIsIGFuZCB0aGUKKyMgbGVuZ3RoIG9mIHRoZSBsaXN0IGdpdmVzIHRoZSB2YWx1ZS4gIFdlIHVzZSB0aGUgY2xhc3MgRHVtbXlMaXN0CisjIGZvciB0aGUgc2FtZSBwdXJwb3NlLgorCitjbGFzcyBfRHVtbXlMaXN0KG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHdyYXBwZXIgPSBtdWx0aXByb2Nlc3NpbmcuaGVhcC5CdWZmZXJXcmFwcGVyKHN0cnVjdC5jYWxjc2l6ZSgnaScpKQorICAgICAgICBsb2NrID0gbXVsdGlwcm9jZXNzaW5nLkxvY2soKQorICAgICAgICBzZWxmLl9fc2V0c3RhdGVfXygod3JhcHBlciwgbG9jaykpCisgICAgICAgIHNlbGYuX2xlbmd0aGJ1ZlswXSA9IDAKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICAoc2VsZi5fd3JhcHBlciwgc2VsZi5fbG9jaykgPSBzdGF0ZQorICAgICAgICBzZWxmLl9sZW5ndGhidWYgPSBzZWxmLl93cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkuY2FzdCgnaScpCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX3dyYXBwZXIsIHNlbGYuX2xvY2spCisKKyAgICBkZWYgYXBwZW5kKHNlbGYsIF8pOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9sZW5ndGhidWZbMF0gKz0gMQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sZW5ndGhidWZbMF0KKworZGVmIF93YWl0KCk6CisgICAgIyBBIGNydWRlIHdhaXQveWllbGQgZnVuY3Rpb24gbm90IHJlbHlpbmcgb24gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMuCisgICAgdGltZS5zbGVlcCgwLjAxKQorCisKK2NsYXNzIEJ1bmNoKG9iamVjdCk6CisgICAgIiIiCisgICAgQSBidW5jaCBvZiB0aHJlYWRzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lc3BhY2UsIGYsIGFyZ3MsIG4sIHdhaXRfYmVmb3JlX2V4aXQ9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgQ29uc3RydWN0IGEgYnVuY2ggb2YgYG5gIHRocmVhZHMgcnVubmluZyB0aGUgc2FtZSBmdW5jdGlvbiBgZmAuCisgICAgICAgIElmIGB3YWl0X2JlZm9yZV9leGl0YCBpcyBUcnVlLCB0aGUgdGhyZWFkcyB3b24ndCB0ZXJtaW5hdGUgdW50aWwKKyAgICAgICAgZG9fZmluaXNoKCkgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5mID0gZgorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYubiA9IG4KKyAgICAgICAgc2VsZi5zdGFydGVkID0gbmFtZXNwYWNlLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYuZmluaXNoZWQgPSBuYW1lc3BhY2UuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5fY2FuX2V4aXQgPSBuYW1lc3BhY2UuRXZlbnQoKQorICAgICAgICBpZiBub3Qgd2FpdF9iZWZvcmVfZXhpdDoKKyAgICAgICAgICAgIHNlbGYuX2Nhbl9leGl0LnNldCgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgcCA9IG5hbWVzcGFjZS5Qcm9jZXNzKHRhcmdldD1zZWxmLnRhc2spCisgICAgICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHAuc3RhcnQoKQorCisgICAgZGVmIHRhc2soc2VsZik6CisgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCisgICAgICAgIHNlbGYuc3RhcnRlZC5hcHBlbmQocGlkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmYoKnNlbGYuYXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuZmluaXNoZWQuYXBwZW5kKHBpZCkKKyAgICAgICAgICAgIHNlbGYuX2Nhbl9leGl0LndhaXQoMzApCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5fY2FuX2V4aXQuaXNfc2V0KCkKKworICAgIGRlZiB3YWl0X2Zvcl9zdGFydGVkKHNlbGYpOgorICAgICAgICB3aGlsZSBsZW4oc2VsZi5zdGFydGVkKSA8IHNlbGYubjoKKyAgICAgICAgICAgIF93YWl0KCkKKworICAgIGRlZiB3YWl0X2Zvcl9maW5pc2hlZChzZWxmKToKKyAgICAgICAgd2hpbGUgbGVuKHNlbGYuZmluaXNoZWQpIDwgc2VsZi5uOgorICAgICAgICAgICAgX3dhaXQoKQorCisgICAgZGVmIGRvX2ZpbmlzaChzZWxmKToKKyAgICAgICAgc2VsZi5fY2FuX2V4aXQuc2V0KCkKKworCitjbGFzcyBBcHBlbmRUcnVlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYub2JqID0gb2JqCisgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICBzZWxmLm9iai5hcHBlbmQoVHJ1ZSkKKworCitjbGFzcyBfVGVzdEJhcnJpZXIoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0cyBmb3IgQmFycmllciBvYmplY3RzLgorICAgICIiIgorICAgIE4gPSA1CisgICAgZGVmYXVsdFRpbWVvdXQgPSAzMC4wICAjIFhYWCBTbG93IFdpbmRvd3MgYnVpbGRib3RzIG5lZWQgZ2VuZXJvdXMgdGltZW91dAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmJhcnJpZXIgPSBzZWxmLkJhcnJpZXIoc2VsZi5OLCB0aW1lb3V0PXNlbGYuZGVmYXVsdFRpbWVvdXQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuYmFycmllci5hYm9ydCgpCisgICAgICAgIHNlbGYuYmFycmllciA9IE5vbmUKKworICAgIGRlZiBEdW1teUxpc3Qoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAndGhyZWFkcyc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxpZiBzZWxmLlRZUEUgPT0gJ21hbmFnZXInOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubWFuYWdlci5saXN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBfRHVtbXlMaXN0KCkKKworICAgIGRlZiBydW5fdGhyZWFkcyhzZWxmLCBmLCBhcmdzKToKKyAgICAgICAgYiA9IEJ1bmNoKHNlbGYsIGYsIGFyZ3MsIHNlbGYuTi0xKQorICAgICAgICBmKCphcmdzKQorICAgICAgICBiLndhaXRfZm9yX2ZpbmlzaGVkKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtdWx0aXBhc3MoY2xzLCBiYXJyaWVyLCByZXN1bHRzLCBuKToKKyAgICAgICAgbSA9IGJhcnJpZXIucGFydGllcworICAgICAgICBhc3NlcnQgbSA9PSBjbHMuTgorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIHJlc3VsdHNbMF0uYXBwZW5kKFRydWUpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlc3VsdHNbMV0pID09IGkgKiBtCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmVzdWx0c1sxXS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCBsZW4ocmVzdWx0c1swXSkgPT0gKGkgKyAxKSAqIG0KKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFzc2VydCBiYXJyaWVyLm5fd2FpdGluZyA9PSAwCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBhc3NlcnQgbm90IGJhcnJpZXIuYnJva2VuCisKKyAgICBkZWYgdGVzdF9iYXJyaWVyKHNlbGYsIHBhc3Nlcz0xKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgaXMgcGFzc2VkIGluIGxvY2tzdGVwCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzID0gW3NlbGYuRHVtbXlMaXN0KCksIHNlbGYuRHVtbXlMaXN0KCldCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5tdWx0aXBhc3MsIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMsIHBhc3NlcykpCisKKyAgICBkZWYgdGVzdF9iYXJyaWVyXzEwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgYmFycmllciB3b3JrcyBmb3IgMTAgY29uc2VjdXRpdmUgcnVucworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9iYXJyaWVyKDEwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3dhaXRfcmV0dXJuX2YoY2xzLCBiYXJyaWVyLCBxdWV1ZSk6CisgICAgICAgIHJlcyA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgIHF1ZXVlLnB1dChyZXMpCisKKyAgICBkZWYgdGVzdF93YWl0X3JldHVybihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIHRlc3QgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGJhcnJpZXIud2FpdAorICAgICAgICAiIiIKKyAgICAgICAgcXVldWUgPSBzZWxmLlF1ZXVlKCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X3dhaXRfcmV0dXJuX2YsIChzZWxmLmJhcnJpZXIsIHF1ZXVlKSkKKyAgICAgICAgcmVzdWx0cyA9IFtxdWV1ZS5nZXQoKSBmb3IgaSBpbiByYW5nZShzZWxmLk4pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoMCksIDEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWN0aW9uX2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzKToKKyAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgaWYgbGVuKHJlc3VsdHMpICE9IDE6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgIGRlZiB0ZXN0X2FjdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhlICdhY3Rpb24nIGNhbGxiYWNrCisgICAgICAgICIiIgorICAgICAgICByZXN1bHRzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBiYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgYWN0aW9uPUFwcGVuZFRydWUocmVzdWx0cykpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9hY3Rpb25fZiwgKGJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgMSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9hYm9ydF9mKGNscywgYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaSA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJlc3VsdHMxLmFwcGVuZChUcnVlKQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgIHJlc3VsdHMyLmFwcGVuZChUcnVlKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgYmFycmllci5hYm9ydCgpCisKKyAgICBkZWYgdGVzdF9hYm9ydChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhbiBhYm9ydCB3aWxsIHB1dCB0aGUgYmFycmllciBpbiBhIGJyb2tlbiBzdGF0ZQorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0czEgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMyID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWJvcnRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5iYXJyaWVyLCByZXN1bHRzMSwgcmVzdWx0czIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmJhcnJpZXIuYnJva2VuKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3Jlc2V0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzMSwgcmVzdWx0czIsIHJlc3VsdHMzKToKKyAgICAgICAgaSA9IGJhcnJpZXIud2FpdCgpCisgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAjIFdhaXQgdW50aWwgdGhlIG90aGVyIHRocmVhZHMgYXJlIGFsbCBpbiB0aGUgYmFycmllci4KKyAgICAgICAgICAgIHdoaWxlIGJhcnJpZXIubl93YWl0aW5nIDwgY2xzLk4tMToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDAxKQorICAgICAgICAgICAgYmFycmllci5yZXNldCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgICAgIHJlc3VsdHMyLmFwcGVuZChUcnVlKQorICAgICAgICAjIE5vdywgcGFzcyB0aGUgYmFycmllciBhZ2FpbgorICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICByZXN1bHRzMy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgJ3Jlc2V0JyBvbiBhIGJhcnJpZXIgZnJlZXMgdGhlIHdhaXRpbmcgdGhyZWFkcworICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0czEgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMyID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X3Jlc2V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMxKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czIpLCBzZWxmLk4tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czMpLCBzZWxmLk4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWJvcnRfYW5kX3Jlc2V0X2YoY2xzLCBiYXJyaWVyLCBiYXJyaWVyMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGJhcnJpZXIuYWJvcnQoKQorICAgICAgICAjIFN5bmNocm9uaXplIGFuZCByZXNldCB0aGUgYmFycmllci4gIE11c3Qgc3luY2hyb25pemUgZmlyc3Qgc28KKyAgICAgICAgIyB0aGF0IGV2ZXJ5b25lIGhhcyBsZWZ0IGl0IHdoZW4gd2UgcmVzZXQsIGFuZCBhZnRlciBzbyB0aGF0IG5vCisgICAgICAgICMgb25lIGVudGVycyBpdCBiZWZvcmUgdGhlIHJlc2V0LgorICAgICAgICBpZiBiYXJyaWVyMi53YWl0KCkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICBiYXJyaWVyLnJlc2V0KCkKKyAgICAgICAgYmFycmllcjIud2FpdCgpCisgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIHJlc3VsdHMzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfYWJvcnRfYW5kX3Jlc2V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IGEgYmFycmllciBjYW4gYmUgcmVzZXQgYWZ0ZXIgYmVpbmcgYnJva2VuLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0czEgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHJlc3VsdHMyID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgYmFycmllcjIgPSBzZWxmLkJhcnJpZXIoc2VsZi5OKQorCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9hYm9ydF9hbmRfcmVzZXRfZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5iYXJyaWVyLCBiYXJyaWVyMiwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMxKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czIpLCBzZWxmLk4tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czMpLCBzZWxmLk4pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfdGltZW91dF9mKGNscywgYmFycmllciwgcmVzdWx0cyk6CisgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgIyBPbmUgdGhyZWFkIGlzIGxhdGUhCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYmFycmllci53YWl0KDAuNSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgd2FpdCh0aW1lb3V0KQorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X3RpbWVvdXRfZiwgKHNlbGYuYmFycmllciwgcmVzdWx0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBzZWxmLmJhcnJpZXIucGFydGllcykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9kZWZhdWx0X3RpbWVvdXRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMpOgorICAgICAgICBpID0gYmFycmllci53YWl0KGNscy5kZWZhdWx0VGltZW91dCkKKyAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICMgT25lIHRocmVhZCBpcyBsYXRlciB0aGFuIHRoZSBkZWZhdWx0IHRpbWVvdXQKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSBiYXJyaWVyJ3MgZGVmYXVsdCB0aW1lb3V0CisgICAgICAgICIiIgorICAgICAgICBiYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgdGltZW91dD0wLjUpCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9kZWZhdWx0X3RpbWVvdXRfZiwgKGJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgYmFycmllci5wYXJ0aWVzKQorCisgICAgZGVmIHRlc3Rfc2luZ2xlX3RocmVhZChzZWxmKToKKyAgICAgICAgYiA9IHNlbGYuQmFycmllcigxKQorICAgICAgICBiLndhaXQoKQorICAgICAgICBiLndhaXQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3Rob3VzYW5kX2YoY2xzLCBiYXJyaWVyLCBwYXNzZXMsIGNvbm4sIGxvY2spOgorICAgICAgICBmb3IgaSBpbiByYW5nZShwYXNzZXMpOgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgICAgICBjb25uLnNlbmQoaSkKKworICAgIGRlZiB0ZXN0X3Rob3VzYW5kKHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ21hbmFnZXInOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBhc3NlcyA9IDEwMDAKKyAgICAgICAgbG9jayA9IHNlbGYuTG9jaygpCisgICAgICAgIGNvbm4sIGNoaWxkX2Nvbm4gPSBzZWxmLlBpcGUoRmFsc2UpCisgICAgICAgIGZvciBqIGluIHJhbmdlKHNlbGYuTik6CisgICAgICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3Rob3VzYW5kX2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLmJhcnJpZXIsIHBhc3NlcywgY2hpbGRfY29ubiwgbG9jaykpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBmb3IgaSBpbiByYW5nZShwYXNzZXMpOgorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2Uoc2VsZi5OKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4ucmVjdigpLCBpKQorCisjCiAjCiAjCiAKQEAgLTExMzAsNiArMTYxMiw5IEBACiAgICAgdGltZS5zbGVlcCh3YWl0KQogICAgIHJldHVybiB4KngKIAorZGVmIG11bCh4LCB5KToKKyAgICByZXR1cm4geCp5CisKIGNsYXNzIF9UZXN0UG9vbChCYXNlVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYXBwbHkoc2VsZik6CkBAIC0xMTQzLDYgKzE2MjgsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbWFwKHNxciwgbGlzdChyYW5nZSgxMDApKSwgY2h1bmtzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KG1hcChzcXIsIGxpc3QocmFuZ2UoMTAwKSkpKSkKIAorICAgIGRlZiB0ZXN0X3N0YXJtYXAoc2VsZik6CisgICAgICAgIHBzbWFwID0gc2VsZi5wb29sLnN0YXJtYXAKKyAgICAgICAgdHVwbGVzID0gbGlzdCh6aXAocmFuZ2UoMTApLCByYW5nZSg5LC0xLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBzbWFwKG11bCwgdHVwbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwMCksIHJhbmdlKDk5LC0xLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBzbWFwKG11bCwgdHVwbGVzLCBjaHVua3NpemU9MjApLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoaXRlcnRvb2xzLnN0YXJtYXAobXVsLCB0dXBsZXMpKSkKKworICAgIGRlZiB0ZXN0X3N0YXJtYXBfYXN5bmMoc2VsZik6CisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwMCksIHJhbmdlKDk5LC0xLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucG9vbC5zdGFybWFwX2FzeW5jKG11bCwgdHVwbGVzKS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisKICAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnBvb2wubWFwX2FzeW5jKHNxciwgW10sIGNodW5rc2l6ZT0xKS5nZXQodGltZW91dD1USU1FT1VUMSkKQEAgLTEyMjEsNiArMTcyMCwxNiBAQAogICAgICAgICBwLmNsb3NlKCkKICAgICAgICAgcC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIEwgPSBsaXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gW3NxcihpKSBmb3IgaSBpbiBMXQorICAgICAgICAgICAgd2l0aCBtdWx0aXByb2Nlc3NpbmcuUG9vbCgyKSBhcyBwOgorICAgICAgICAgICAgICAgIHIgPSBwLm1hcF9hc3luYyhzcXIsIEwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLmdldCgpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHByaW50KHAuX3N0YXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcC5tYXBfYXN5bmMsIHNxciwgTCkKKwogZGVmIHJhaXNpbmcoKToKICAgICByYWlzZSBLZXlFcnJvcigia2V5IikKIApAQCAtMTMyMiw2ICsxODMxLDExIEBACiAgICAgIyBydW4gYWZ0ZXIgYWxsIHRoZSBvdGhlciB0ZXN0cyBmb3IgdGhlIG1hbmFnZXIuICBJdCB0ZXN0cyB0aGF0CiAgICAgIyB0aGVyZSBoYXZlIGJlZW4gbm8gInJlZmVyZW5jZSBsZWFrcyIgZm9yIHRoZSBtYW5hZ2VyJ3Mgc2hhcmVkCiAgICAgIyBvYmplY3RzLiAgTm90ZSB0aGUgY29tbWVudCBpbiBfVGVzdFBvb2wudGVzdF90ZXJtaW5hdGUoKS4KKworICAgICMgSWYgc29tZSBvdGhlciB0ZXN0IHVzaW5nIE1hbmFnZXJNaXhpbi5tYW5hZ2VyIGZhaWxzLCB0aGVuIHRoZQorICAgICMgcmFpc2VkIGV4Y2VwdGlvbiBtYXkga2VlcCBhbGl2ZSBhIGZyYW1lIHdoaWNoIGhvbGRzIGEgcmVmZXJlbmNlCisgICAgIyB0byBhIG1hbmFnZWQgb2JqZWN0LiAgVGhpcyB3aWxsIGNhdXNlIHRlc3RfbnVtYmVyX29mX29iamVjdHMgdG8KKyAgICAjIGFsc28gZmFpbC4KICAgICBBTExPV0VEX1RZUEVTID0gKCdtYW5hZ2VyJywpCiAKICAgICBkZWYgdGVzdF9udW1iZXJfb2Zfb2JqZWN0cyhzZWxmKToKQEAgLTEzNzYsNyArMTg5MCwyNyBAQAogICAgIGRlZiB0ZXN0X215bWFuYWdlcihzZWxmKToKICAgICAgICAgbWFuYWdlciA9IE15TWFuYWdlcigpCiAgICAgICAgIG1hbmFnZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBtYW5hZ2VyLnNodXRkb3duKCkKIAorICAgICAgICAjIElmIHRoZSBtYW5hZ2VyIHByb2Nlc3MgZXhpdGVkIGNsZWFubHkgdGhlbiB0aGUgZXhpdGNvZGUKKyAgICAgICAgIyB3aWxsIGJlIHplcm8uICBPdGhlcndpc2UgKGFmdGVyIGEgc2hvcnQgdGltZW91dCkKKyAgICAgICAgIyB0ZXJtaW5hdGUoKSBpcyB1c2VkLCByZXN1bHRpbmcgaW4gYW4gZXhpdGNvZGUgb2YgLVNJR1RFUk0uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X215bWFuYWdlcl9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIE15TWFuYWdlcigpIGFzIG1hbmFnZXI6CisgICAgICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9teW1hbmFnZXJfY29udGV4dF9wcmVzdGFydGVkKHNlbGYpOgorICAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKKyAgICAgICAgbWFuYWdlci5zdGFydCgpCisgICAgICAgIHdpdGggbWFuYWdlcjoKKyAgICAgICAgICAgIHNlbGYuY29tbW9uKG1hbmFnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFuYWdlci5fcHJvY2Vzcy5leGl0Y29kZSwgMCkKKworICAgIGRlZiBjb21tb24oc2VsZiwgbWFuYWdlcik6CiAgICAgICAgIGZvbyA9IG1hbmFnZXIuRm9vKCkKICAgICAgICAgYmFyID0gbWFuYWdlci5CYXIoKQogICAgICAgICBiYXogPSBtYW5hZ2VyLmJheigpCkBAIC0xMzk5LDcgKzE5MzMsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiYXopLCBbaSppIGZvciBpIGluIHJhbmdlKDEwKV0pCiAKLSAgICAgICAgbWFuYWdlci5zaHV0ZG93bigpCiAKICMKICMgVGVzdCBvZiBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIHNlcnZlciBhbmQgdXNpbmcgeG1scnBjbGliIGZvciBzZXJpYWxpemF0aW9uCkBAIC0xNTcwLDYgKzIxMDMsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwocG9sbC5lbGFwc2VkLCAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9sbCgtMSksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHBvbGwuZWxhcHNlZCwgMCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoVElNRU9VVDEpLCBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChwb2xsLmVsYXBzZWQsIFRJTUVPVVQxKQogCkBAIC0xNzU1LDYgKzIyOTEsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZWR1Y3Rpb24ucmVjdl9oYW5kbGUsIGNvbm4pCiAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKworICAgICAgICB3aXRoIGEsIGI6CisgICAgICAgICAgICBhLnNlbmQoMTcyOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZWN2KCksIDE3MjkpCisgICAgICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhLmNsb3NlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIuY2xvc2VkKQorCisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhLmNsb3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiLmNsb3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGEucmVjdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGIucmVjdikKKworY2xhc3MgX1Rlc3RMaXN0ZW5lcihCYXNlVGVzdENhc2UpOgorCisgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9iaW5kKHNlbGYpOgorICAgICAgICBmb3IgZmFtaWx5IGluIHNlbGYuY29ubmVjdGlvbi5mYW1pbGllczoKKyAgICAgICAgICAgIGwgPSBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbWlseSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsLmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5hZGRyZXNzLCBmYW1pbHkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lcigpIGFzIGw6CisgICAgICAgICAgICB3aXRoIHNlbGYuY29ubmVjdGlvbi5DbGllbnQobC5hZGRyZXNzKSBhcyBjOgorICAgICAgICAgICAgICAgIHdpdGggbC5hY2NlcHQoKSBhcyBkOgorICAgICAgICAgICAgICAgICAgICBjLnNlbmQoMTcyOSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnJlY3YoKSwgMTcyOSkKKworICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBsLmFjY2VwdCkKKwogY2xhc3MgX1Rlc3RMaXN0ZW5lckNsaWVudChCYXNlVGVzdENhc2UpOgogCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywgJ3RocmVhZHMnKQpAQCAtMTc5Miw1MiArMjM2NSwxMzUgQEAKICAgICAgICAgcC5qb2luKCkKICAgICAgICAgbC5jbG9zZSgpCiAKK2NsYXNzIF9UZXN0UG9sbCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCAndGhyZWFkcycpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgpLCBGYWxzZSkKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoKSwgVHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfc3RyaW5ncyhjbHMsIGNvbm4sIHN0cmluZ3MpOgorICAgICAgICBmb3IgcyBpbiBzdHJpbmdzOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICBjb25uLnNlbmRfYnl0ZXMocykKKyAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9zdHJpbmdzKHNlbGYpOgorICAgICAgICBzdHJpbmdzID0gKGInaGVsbG8nLCBiJycsIGInYScsIGInYicsIGInJywgYidieWUnLCBiJycsIGInbG9wJykKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX3N0cmluZ3MsIGFyZ3M9KGIsIHN0cmluZ3MpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBmb3IgcyBpbiBzdHJpbmdzOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKKyAgICAgICAgICAgICAgICBpZiBhLnBvbGwoMC4wMSk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB4ID0gYS5yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgeCkKKworICAgICAgICBwLmpvaW4oKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF9ib3VuZGFyaWVzKGNscywgcik6CisgICAgICAgICMgUG9sbGluZyBtYXkgInB1bGwiIGEgbWVzc2FnZSBpbiB0byB0aGUgY2hpbGQgcHJvY2VzcywgYnV0IHdlCisgICAgICAgICMgZG9uJ3Qgd2FudCBpdCB0byBwdWxsIG9ubHkgcGFydCBvZiBhIG1lc3NhZ2UsIGFzIHRoYXQgd291bGQKKyAgICAgICAgIyBjb3JydXB0IHRoZSBwaXBlIGZvciBhbnkgb3RoZXIgcHJvY2Vzc2VzIHdoaWNoIG1pZ2h0IGxhdGVyCisgICAgICAgICMgcmVhZCBmcm9tIGl0LgorICAgICAgICByLnBvbGwoNSkKKworICAgIGRlZiB0ZXN0X2JvdW5kYXJpZXMoc2VsZik6CisgICAgICAgIHIsIHcgPSBzZWxmLlBpcGUoRmFsc2UpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX2JvdW5kYXJpZXMsIGFyZ3M9KHIsKSkKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHRpbWUuc2xlZXAoMikKKyAgICAgICAgTCA9IFtiImZpcnN0IiwgYiJzZWNvbmQiXQorICAgICAgICBmb3Igb2JqIGluIEw6CisgICAgICAgICAgICB3LnNlbmRfYnl0ZXMob2JqKQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgcC5qb2luKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyLnJlY3ZfYnl0ZXMoKSwgTCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfZG9udF9tZXJnZShjbHMsIGIpOgorICAgICAgICBiLnNlbmRfYnl0ZXMoYidhJykKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInYicpCisgICAgICAgIGIuc2VuZF9ieXRlcyhiJ2NkJykKKworICAgIGRlZiB0ZXN0X2RvbnRfbWVyZ2Uoc2VsZik6CisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgwLjApLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMC4xKSwgRmFsc2UpCisKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfZG9udF9tZXJnZSwgYXJncz0oYiwpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucmVjdl9ieXRlcygpLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucmVjdl9ieXRlcygpLCBiJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgxLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucG9sbCgwLjApLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEucmVjdl9ieXRlcygpLCBiJ2NkJykKKworICAgICAgICBwLmpvaW4oKQorCiAjCiAjIFRlc3Qgb2Ygc2VuZGluZyBjb25uZWN0aW9uIGFuZCBzb2NrZXQgb2JqZWN0cyBiZXR3ZWVuIHByb2Nlc3NlcwogIwotIiIiCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBU19SRURVQ1RJT04sICJ0ZXN0IG5lZWRzIG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb24iKQogY2xhc3MgX1Rlc3RQaWNrbGluZ0Nvbm5lY3Rpb25zKEJhc2VUZXN0Q2FzZSk6CiAKICAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCkKIAotICAgIGRlZiBfbGlzdGVuZXIoc2VsZiwgY29ubiwgZmFtaWxpZXMpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnJlZHVjdGlvbiBpbXBvcnQgcmVzb3VyY2Vfc2hhcmVyCisgICAgICAgIHJlc291cmNlX3NoYXJlci5zdG9wKHRpbWVvdXQ9NSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbGlzdGVuZXIoY2xzLCBjb25uLCBmYW1pbGllcyk6CiAgICAgICAgIGZvciBmYW0gaW4gZmFtaWxpZXM6Ci0gICAgICAgICAgICBsID0gc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW0pCisgICAgICAgICAgICBsID0gY2xzLmNvbm5lY3Rpb24uTGlzdGVuZXIoZmFtaWx5PWZhbSkKICAgICAgICAgICAgIGNvbm4uc2VuZChsLmFkZHJlc3MpCiAgICAgICAgICAgICBuZXdfY29ubiA9IGwuYWNjZXB0KCkKICAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKKyAgICAgICAgICAgIG5ld19jb25uLmNsb3NlKCkKKyAgICAgICAgICAgIGwuY2xvc2UoKQogCi0gICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKLSAgICAgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgICAgIGwuYmluZCgoJ2xvY2FsaG9zdCcsIDApKQotICAgICAgICAgICAgY29ubi5zZW5kKGwuZ2V0c29ja25hbWUoKSkKLSAgICAgICAgICAgIGwubGlzdGVuKDEpCi0gICAgICAgICAgICBuZXdfY29ubiwgYWRkciA9IGwuYWNjZXB0KCkKLSAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKKyAgICAgICAgbCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBsLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKKyAgICAgICAgbC5saXN0ZW4oMSkKKyAgICAgICAgY29ubi5zZW5kKGwuZ2V0c29ja25hbWUoKSkKKyAgICAgICAgbmV3X2Nvbm4sIGFkZHIgPSBsLmFjY2VwdCgpCisgICAgICAgIGNvbm4uc2VuZChuZXdfY29ubikKKyAgICAgICAgbmV3X2Nvbm4uY2xvc2UoKQorICAgICAgICBsLmNsb3NlKCkKIAogICAgICAgICBjb25uLnJlY3YoKQogCi0gICAgZGVmIF9yZW1vdGUoc2VsZiwgY29ubik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZW1vdGUoY2xzLCBjb25uKToKICAgICAgICAgZm9yIChhZGRyZXNzLCBtc2cpIGluIGl0ZXIoY29ubi5yZWN2LCBOb25lKToKLSAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuY29ubmVjdGlvbi5DbGllbnQoYWRkcmVzcykKKyAgICAgICAgICAgIGNsaWVudCA9IGNscy5jb25uZWN0aW9uLkNsaWVudChhZGRyZXNzKQogICAgICAgICAgICAgY2xpZW50LnNlbmQobXNnLnVwcGVyKCkpCiAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKQogCi0gICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKLSAgICAgICAgICAgIGFkZHJlc3MsIG1zZyA9IGNvbm4ucmVjdigpCi0gICAgICAgICAgICBjbGllbnQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KGFkZHJlc3MpCi0gICAgICAgICAgICBjbGllbnQuc2VuZGFsbChtc2cudXBwZXIoKSkKLSAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpCisgICAgICAgIGFkZHJlc3MsIG1zZyA9IGNvbm4ucmVjdigpCisgICAgICAgIGNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBjbGllbnQuY29ubmVjdChhZGRyZXNzKQorICAgICAgICBjbGllbnQuc2VuZGFsbChtc2cudXBwZXIoKSkKKyAgICAgICAgY2xpZW50LmNsb3NlKCkKIAogICAgICAgICBjb25uLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3BpY2tsaW5nKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuYWxsb3dfY29ubmVjdGlvbl9waWNrbGluZygpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIGZhbWlsaWVzID0gc2VsZi5jb25uZWN0aW9uLmZhbWlsaWVzCiAKICAgICAgICAgbGNvbm4sIGxjb25uMCA9IHNlbGYuUGlwZSgpCkBAIC0xODYxLDE2ICsyNTE3LDE5IEBACiAKICAgICAgICAgcmNvbm4uc2VuZChOb25lKQogCi0gICAgICAgIGlmIHNlbGYuVFlQRSA9PSAncHJvY2Vzc2VzJzoKLSAgICAgICAgICAgIG1zZyA9IGxhdGluKCdUaGlzIGNvbm5lY3Rpb24gdXNlcyBhIG5vcm1hbCBzb2NrZXQnKQotICAgICAgICAgICAgYWRkcmVzcyA9IGxjb25uLnJlY3YoKQotICAgICAgICAgICAgcmNvbm4uc2VuZCgoYWRkcmVzcywgbXNnKSkKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc29ja2V0LCAnZnJvbWZkJyk6Ci0gICAgICAgICAgICAgICAgbmV3X2Nvbm4gPSBsY29ubi5yZWN2KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jb25uLnJlY3YoMTAwKSwgbXNnLnVwcGVyKCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgWFhYIE9uIFdpbmRvd3Mgd2l0aCBQeTIuNiBuZWVkIHRvIGJhY2twb3J0IGZyb21mZCgpCi0gICAgICAgICAgICAgICAgZGlzY2FyZCA9IGxjb25uLnJlY3ZfYnl0ZXMoKQorICAgICAgICBtc2cgPSBsYXRpbignVGhpcyBjb25uZWN0aW9uIHVzZXMgYSBub3JtYWwgc29ja2V0JykKKyAgICAgICAgYWRkcmVzcyA9IGxjb25uLnJlY3YoKQorICAgICAgICByY29ubi5zZW5kKChhZGRyZXNzLCBtc2cpKQorICAgICAgICBuZXdfY29ubiA9IGxjb25uLnJlY3YoKQorICAgICAgICBidWYgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgcyA9IG5ld19jb25uLnJlY3YoMTAwKQorICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQocykKKyAgICAgICAgYnVmID0gYicnLmpvaW4oYnVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgbXNnLnVwcGVyKCkpCisgICAgICAgIG5ld19jb25uLmNsb3NlKCkKIAogICAgICAgICBsY29ubi5zZW5kKE5vbmUpCiAKQEAgLTE4NzksNyArMjUzOCw0NiBAQAogCiAgICAgICAgIGxwLmpvaW4oKQogICAgICAgICBycC5qb2luKCkKLSIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGNoaWxkX2FjY2VzcyhjbHMsIGNvbm4pOgorICAgICAgICB3ID0gY29ubi5yZWN2KCkKKyAgICAgICAgdy5zZW5kKCdhbGwgaXMgd2VsbCcpCisgICAgICAgIHcuY2xvc2UoKQorCisgICAgICAgIHIgPSBjb25uLnJlY3YoKQorICAgICAgICBtc2cgPSByLnJlY3YoKQorICAgICAgICBjb25uLnNlbmQobXNnKjIpCisKKyAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9hY2Nlc3Moc2VsZik6CisgICAgICAgICMgT24gV2luZG93cywgaWYgd2UgZG8gbm90IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBwaWQgd2hlbgorICAgICAgICAjIHVzaW5nIER1cEhhbmRsZSB0aGVuIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB0byB1c2UgdGhlCisgICAgICAgICMgY29ycmVjdCBhY2Nlc3MgZmxhZ3MgZm9yIER1cGxpY2F0ZUhhbmRsZSgpLCBvciBlbHNlCisgICAgICAgICMgRHVwSGFuZGxlLmRldGFjaCgpIHdpbGwgcmFpc2UgUGVybWlzc2lvbkVycm9yLiAgRm9yIGV4YW1wbGUsCisgICAgICAgICMgZm9yIGEgcmVhZCBvbmx5IHBpcGUgaGFuZGxlIHdlIHNob3VsZCB1c2UKKyAgICAgICAgIyBhY2Nlc3M9RklMRV9HRU5FUklDX1JFQUQuICAoVW5mb3J0dW5hdGVseQorICAgICAgICAjIERVUExJQ0FURV9TQU1FX0FDQ0VTUyBkb2VzIG5vdCB3b3JrLikKKyAgICAgICAgY29ubiwgY2hpbGRfY29ubiA9IHNlbGYuUGlwZSgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuY2hpbGRfYWNjZXNzLCBhcmdzPShjaGlsZF9jb25uLCkpCisgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgY2hpbGRfY29ubi5jbG9zZSgpCisKKyAgICAgICAgciwgdyA9IHNlbGYuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgIGNvbm4uc2VuZCh3KQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnJlY3YoKSwgJ2FsbCBpcyB3ZWxsJykKKyAgICAgICAgci5jbG9zZSgpCisKKyAgICAgICAgciwgdyA9IHNlbGYuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgIGNvbm4uc2VuZChyKQorICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgdy5zZW5kKCdmb29iYXInKQorICAgICAgICB3LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3YoKSwgJ2Zvb2JhcicqMikKKwogIwogIwogIwpAQCAtMjE3NCw5ICsyODcyLDE1IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKFdJTjMyLCAic2tpcHBlZCBvbiBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9pbnZhbGlkX2hhbmRsZXMoc2VsZik6Ci0gICAgICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oNDQ5Nzc2MDgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGNvbm4ucG9sbCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uLCAtMSkKKyAgICAgICAgY29ubiA9IG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkNvbm5lY3Rpb24oNDQ5Nzc2MDgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBJT0Vycm9yKSwgY29ubi5wb2xsKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBIYWNrIHByaXZhdGUgYXR0cmlidXRlIF9oYW5kbGUgdG8gYXZvaWQgcHJpbnRpbmcgYW4gZXJyb3IKKyAgICAgICAgICAgICMgaW4gY29ubi5fX2RlbF9fCisgICAgICAgICAgICBjb25uLl9oYW5kbGUgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBJT0Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24uQ29ubmVjdGlvbiwgLTEpCiAKICMKICMgRnVuY3Rpb25zIHVzZWQgdG8gY3JlYXRlIHRlc3QgY2FzZXMgZnJvbSB0aGUgYmFzZSBvbmVzIGluIHRoaXMgbW9kdWxlCkBAIC0yMTk1LDEwICsyODk5LDEyIEBACiAgICAgcmVzdWx0ID0ge30KICAgICBnbG9iID0gZ2xvYmFscygpCiAgICAgVHlwZSA9IHR5cGUuY2FwaXRhbGl6ZSgpCisgICAgQUxMX1RZUEVTID0geydwcm9jZXNzZXMnLCAndGhyZWFkcycsICdtYW5hZ2VyJ30KIAogICAgIGZvciBuYW1lIGluIGxpc3QoZ2xvYi5rZXlzKCkpOgogICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ19UZXN0Jyk6CiAgICAgICAgICAgICBiYXNlID0gZ2xvYltuYW1lXQorICAgICAgICAgICAgYXNzZXJ0IHNldChiYXNlLkFMTE9XRURfVFlQRVMpIDw9IEFMTF9UWVBFUywgc2V0KGJhc2UuQUxMT1dFRF9UWVBFUykKICAgICAgICAgICAgIGlmIHR5cGUgaW4gYmFzZS5BTExPV0VEX1RZUEVTOgogICAgICAgICAgICAgICAgIG5ld25hbWUgPSAnV2l0aCcgKyBUeXBlICsgbmFtZVsxOl0KICAgICAgICAgICAgICAgICBjbGFzcyBUZW1wKGJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlLCBNaXhpbik6CkBAIC0yMjE3LDcgKzI5MjMsNyBAQAogICAgIFByb2Nlc3MgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2VzcwogICAgIGxvY2FscygpLnVwZGF0ZShnZXRfYXR0cmlidXRlcyhtdWx0aXByb2Nlc3NpbmcsICgKICAgICAgICAgJ1F1ZXVlJywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLAotICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywKKyAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdCYXJyaWVyJywgJ1ZhbHVlJywgJ0FycmF5JywgJ1Jhd1ZhbHVlJywKICAgICAgICAgJ1Jhd0FycmF5JywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nLCAnUGlwZScsCiAgICAgICAgICdjb25uZWN0aW9uJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcKICAgICAgICAgKSkpCkBAIC0yMjMyLDcgKzI5MzgsNyBAQAogICAgIG1hbmFnZXIgPSBvYmplY3QuX19uZXdfXyhtdWx0aXByb2Nlc3NpbmcubWFuYWdlcnMuU3luY01hbmFnZXIpCiAgICAgbG9jYWxzKCkudXBkYXRlKGdldF9hdHRyaWJ1dGVzKG1hbmFnZXIsICgKICAgICAgICAgJ1F1ZXVlJywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLAotICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnVmFsdWUnLCAnQXJyYXknLCAnbGlzdCcsICdkaWN0JywKKyAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdCYXJyaWVyJywgJ1ZhbHVlJywgJ0FycmF5JywgJ2xpc3QnLCAnZGljdCcsCiAgICAgICAgICdOYW1lc3BhY2UnLCAnSm9pbmFibGVRdWV1ZScsICdQb29sJwogICAgICAgICApKSkKIApAQCAtMjI0NSw3ICsyOTUxLDcgQEAKICAgICBQcm9jZXNzID0gbXVsdGlwcm9jZXNzaW5nLmR1bW15LlByb2Nlc3MKICAgICBsb2NhbHMoKS51cGRhdGUoZ2V0X2F0dHJpYnV0ZXMobXVsdGlwcm9jZXNzaW5nLmR1bW15LCAoCiAgICAgICAgICdRdWV1ZScsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywKLSAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdWYWx1ZScsICdBcnJheScsICdjdXJyZW50X3Byb2Nlc3MnLAorICAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ0JhcnJpZXInLCAnVmFsdWUnLCAnQXJyYXknLCAnY3VycmVudF9wcm9jZXNzJywKICAgICAgICAgJ2FjdGl2ZV9jaGlsZHJlbicsICdQaXBlJywgJ2Nvbm5lY3Rpb24nLCAnZGljdCcsICdsaXN0JywKICAgICAgICAgJ05hbWVzcGFjZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnCiAgICAgICAgICkpKQpAQCAtMjI5Nyw2ICszMDAzLDcgQEAKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5tZ3Iuc2h1dGRvd24oKQorICAgICAgICBzZWxmLm1nci5qb2luKCkKIAogICAgIGRlZiB0ZXN0X21hbmFnZXJfaW5pdGlhbGl6ZXIoc2VsZik6CiAgICAgICAgIG0gPSBtdWx0aXByb2Nlc3NpbmcubWFuYWdlcnMuU3luY01hbmFnZXIoKQpAQCAtMjMwNCw2ICszMDExLDcgQEAKICAgICAgICAgbS5zdGFydChpbml0aWFsaXplciwgKHNlbGYubnMsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm5zLnRlc3QsIDEpCiAgICAgICAgIG0uc2h1dGRvd24oKQorICAgICAgICBtLmpvaW4oKQogCiAgICAgZGVmIHRlc3RfcG9vbF9pbml0aWFsaXplcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdWx0aXByb2Nlc3NpbmcuUG9vbCwgaW5pdGlhbGl6ZXI9MSkKQEAgLTIzMzYsNiArMzA0NCw4IEBACiBkZWYgcG9vbF9pbl9wcm9jZXNzKCk6CiAgICAgcG9vbCA9IG11bHRpcHJvY2Vzc2luZy5Qb29sKHByb2Nlc3Nlcz00KQogICAgIHggPSBwb29sLm1hcChfYWZ1bmMsIFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkKKyAgICBwb29sLmNsb3NlKCkKKyAgICBwb29sLmpvaW4oKQogCiBjbGFzcyBfZmlsZV9saWtlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlbGVnYXRlKToKQEAgLTIzODAsNiArMzA5MCwxODAgQEAKICAgICAgICAgYXNzZXJ0IHNpby5nZXR2YWx1ZSgpID09ICdmb28nCiAKIAorY2xhc3MgVGVzdFdhaXQodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jaGlsZF90ZXN0X3dhaXQoY2xzLCB3LCBzbG93KToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgaWYgc2xvdzoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHJhbmRvbS5yYW5kb20oKSowLjEpCisgICAgICAgICAgICB3LnNlbmQoKGksIG9zLmdldHBpZCgpKSkKKyAgICAgICAgdy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYsIHNsb3c9RmFsc2UpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICBwcm9jcyA9IFtdCisgICAgICAgIG1lc3NhZ2VzID0gW10KKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHIsIHcgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX3Rlc3Rfd2FpdCwgYXJncz0odywgc2xvdykpCisgICAgICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgdy5jbG9zZSgpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyKQorICAgICAgICAgICAgcHJvY3MuYXBwZW5kKHApCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorCisgICAgICAgIHdoaWxlIHJlYWRlcnM6CisgICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gci5yZWN2KCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJlYWRlcnMucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgICAgIHIuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVuZChtc2cpCisKKyAgICAgICAgbWVzc2FnZXMuc29ydCgpCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKChpLCBwLnBpZCkgZm9yIGkgaW4gcmFuZ2UoMTApIGZvciBwIGluIHByb2NzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBleHBlY3RlZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfdGVzdF93YWl0X3NvY2tldChjbHMsIGFkZHJlc3MsIHNsb3cpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHMuY29ubmVjdChhZGRyZXNzKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBpZiBzbG93OgorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAocmFuZG9tLnJhbmRvbSgpKjAuMSkKKyAgICAgICAgICAgIHMuc2VuZGFsbCgoJyVzXG4nICUgaSkuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3dhaXRfc29ja2V0KHNlbGYsIHNsb3c9RmFsc2UpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgbC5iaW5kKCgnJywgMCkpCisgICAgICAgIGwubGlzdGVuKDQpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIGwuZ2V0c29ja25hbWUoKVsxXSkKKyAgICAgICAgcmVhZGVycyA9IFtdCisgICAgICAgIHByb2NzID0gW10KKyAgICAgICAgZGljID0ge30KKworICAgICAgICBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fY2hpbGRfdGVzdF93YWl0X3NvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShhZGRyLCBzbG93KSkKKyAgICAgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBwcm9jcy5hcHBlbmQocCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLmpvaW4pCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICByLCBfID0gbC5hY2NlcHQoKQorICAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgIGRpY1tyXSA9IFtdCisgICAgICAgIGwuY2xvc2UoKQorCisgICAgICAgIHdoaWxlIHJlYWRlcnM6CisgICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigzMikKKyAgICAgICAgICAgICAgICBpZiBub3QgbXNnOgorICAgICAgICAgICAgICAgICAgICByZWFkZXJzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkaWNbcl0uYXBwZW5kKG1zZykKKworICAgICAgICBleHBlY3RlZCA9ICcnLmpvaW4oJyVzXG4nICUgaSBmb3IgaSBpbiByYW5nZSgxMCkpLmVuY29kZSgnYXNjaWknKQorICAgICAgICBmb3IgdiBpbiBkaWMudmFsdWVzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKHYpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dhaXRfc2xvdyhzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhaXQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3dhaXRfc29ja2V0X3Nsb3coc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWl0X3NvY2tldChUcnVlKQorCisgICAgZGVmIHRlc3Rfd2FpdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgICAgICAgZXhwZWN0ZWQgPSA1CisgICAgICAgIGEsIGIgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBiXSwgZXhwZWN0ZWQpCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCBleHBlY3RlZCAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZWx0YSwgZXhwZWN0ZWQgKiAwLjUpCisKKyAgICAgICAgYi5zZW5kKE5vbmUpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBiXSwgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbYV0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgMC40KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNpZ25hbF9hbmRfc2xlZXAoY2xzLCBzZW0sIHBlcmlvZCk6CisgICAgICAgIHNlbS5yZWxlYXNlKCkKKyAgICAgICAgdGltZS5zbGVlcChwZXJpb2QpCisKKyAgICBkZWYgdGVzdF93YWl0X2ludGVnZXIoc2VsZik6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKworICAgICAgICBleHBlY3RlZCA9IDMKKyAgICAgICAgc2VtID0gbXVsdGlwcm9jZXNzaW5nLlNlbWFwaG9yZSgwKQorICAgICAgICBhLCBiID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuc2lnbmFsX2FuZF9zbGVlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbSwgZXhwZWN0ZWQpKQorCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocC5zZW50aW5lbCwgaW50KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VtLmFjcXVpcmUodGltZW91dD0yMCkpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBwLnNlbnRpbmVsLCBiXSwgZXhwZWN0ZWQgKyAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtwLnNlbnRpbmVsXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCBleHBlY3RlZCArIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZWx0YSwgZXhwZWN0ZWQgLSAyKQorCisgICAgICAgIGEuc2VuZChOb25lKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgcC5zZW50aW5lbCwgYl0sIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW3Auc2VudGluZWwsIGJdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIDAuNCkKKworICAgICAgICBiLnNlbmQoTm9uZSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIHAuc2VudGluZWwsIGJdLCAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFthLCBwLnNlbnRpbmVsLCBiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCAwLjQpCisKKyAgICAgICAgcC50ZXJtaW5hdGUoKQorICAgICAgICBwLmpvaW4oKQorCisgICAgZGVmIHRlc3RfbmVnX3RpbWVvdXQoc2VsZik6CisgICAgICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKKyAgICAgICAgYSwgYiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgdCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2FdLCB0aW1lb3V0PS0xKQorICAgICAgICB0ID0gdGltZS50aW1lKCkgLSB0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHQsIDEpCisgICAgICAgIGEuY2xvc2UoKQorICAgICAgICBiLmNsb3NlKCkKKwogIwogIyBJc3N1ZSAxNDE1MTogVGVzdCBpbnZhbGlkIGZhbWlseSBvbiBpbnZhbGlkIGVudmlyb25tZW50CiAjCkBAIC0yMzk3LDYgKzMyODEsMzggQEAKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkxpc3RlbmVyKCcvdmFyL3Rlc3QucGlwZScpCiAKICMKKyMgSXNzdWUgMTIwOTg6IGNoZWNrIHN5cy5mbGFncyBvZiBjaGlsZCBtYXRjaGVzIHRoYXQgZm9yIHBhcmVudAorIworCitjbGFzcyBUZXN0RmxhZ3ModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBydW5faW5fZ3JhbmRjaGlsZChjbHMsIGNvbm4pOgorICAgICAgICBjb25uLnNlbmQodHVwbGUoc3lzLmZsYWdzKSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBydW5faW5fY2hpbGQoY2xzKToKKyAgICAgICAgaW1wb3J0IGpzb24KKyAgICAgICAgciwgdyA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1jbHMucnVuX2luX2dyYW5kY2hpbGQsIGFyZ3M9KHcsKSkKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIGdyYW5kY2hpbGRfZmxhZ3MgPSByLnJlY3YoKQorICAgICAgICBwLmpvaW4oKQorICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIGZsYWdzID0gKHR1cGxlKHN5cy5mbGFncyksIGdyYW5kY2hpbGRfZmxhZ3MpCisgICAgICAgIHByaW50KGpzb24uZHVtcHMoZmxhZ3MpKQorCisgICAgZGVmIHRlc3RfZmxhZ3Moc2VsZik6CisgICAgICAgIGltcG9ydCBqc29uLCBzdWJwcm9jZXNzCisgICAgICAgICMgc3RhcnQgY2hpbGQgcHJvY2VzcyB1c2luZyB1bnVzdWFsIGZsYWdzCisgICAgICAgIHByb2cgPSAoJ2Zyb20gdGVzdC50ZXN0X211bHRpcHJvY2Vzc2luZyBpbXBvcnQgVGVzdEZsYWdzOyAnICsKKyAgICAgICAgICAgICAgICAnVGVzdEZsYWdzLnJ1bl9pbl9jaGlsZCgpJykKKyAgICAgICAgZGF0YSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAnLUUnLCAnLVMnLCAnLU8nLCAnLWMnLCBwcm9nXSkKKyAgICAgICAgY2hpbGRfZmxhZ3MsIGdyYW5kY2hpbGRfZmxhZ3MgPSBqc29uLmxvYWRzKGRhdGEuZGVjb2RlKCdhc2NpaScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkX2ZsYWdzLCBncmFuZGNoaWxkX2ZsYWdzKQorCisjCiAjIFRlc3QgaW50ZXJhY3Rpb24gd2l0aCBzb2NrZXQgdGltZW91dHMgLSBzZWUgSXNzdWUgIzYwNTYKICMKIApAQCAtMjQ1MSw4ICszMzY3LDggQEAKICMKIAogdGVzdGNhc2VzX290aGVyID0gW090aGVyVGVzdCwgVGVzdEludmFsaWRIYW5kbGUsIFRlc3RJbml0aWFsaXplcnMsCi0gICAgICAgICAgICAgICAgICAgVGVzdFN0ZGluQmFkZmlsZWRlc2NyaXB0b3IsIFRlc3RJbnZhbGlkRmFtaWx5LAotICAgICAgICAgICAgICAgICAgIFRlc3RUaW1lb3V0cywgVGVzdE5vRm9ya0JvbWJdCisgICAgICAgICAgICAgICAgICAgVGVzdFN0ZGluQmFkZmlsZWRlc2NyaXB0b3IsIFRlc3RXYWl0LCBUZXN0SW52YWxpZEZhbWlseSwKKyAgICAgICAgICAgICAgICAgICBUZXN0RmxhZ3MsIFRlc3RUaW1lb3V0cywgVGVzdE5vRm9ya0JvbWJdCiAKICMKICMKQEAgLTI0ODksMTQgKzM0MDUsMTggQEAKIAogICAgIGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZQogICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSh0YykgZm9yIHRjIGluIHRlc3RjYXNlcykKLSAgICBydW4oc3VpdGUpCi0KLSAgICBUaHJlYWRzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQotICAgIFByb2Nlc3Nlc01peGluLnBvb2wudGVybWluYXRlKCkKLSAgICBNYW5hZ2VyTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQotICAgIE1hbmFnZXJNaXhpbi5tYW5hZ2VyLnNodXRkb3duKCkKLQotICAgIGRlbCBQcm9jZXNzZXNNaXhpbi5wb29sLCBUaHJlYWRzTWl4aW4ucG9vbCwgTWFuYWdlck1peGluLnBvb2wKKyAgICB0cnk6CisgICAgICAgIHJ1bihzdWl0ZSkKKyAgICBmaW5hbGx5OgorICAgICAgICBUaHJlYWRzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQorICAgICAgICBQcm9jZXNzZXNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCisgICAgICAgIE1hbmFnZXJNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCisgICAgICAgIE1hbmFnZXJNaXhpbi5wb29sLmpvaW4oKQorICAgICAgICBNYW5hZ2VyTWl4aW4ubWFuYWdlci5zaHV0ZG93bigpCisgICAgICAgIE1hbmFnZXJNaXhpbi5tYW5hZ2VyLmpvaW4oKQorICAgICAgICBUaHJlYWRzTWl4aW4ucG9vbC5qb2luKCkKKyAgICAgICAgUHJvY2Vzc2VzTWl4aW4ucG9vbC5qb2luKCkKKyAgICAgICAgZGVsIFByb2Nlc3Nlc01peGluLnBvb2wsIFRocmVhZHNNaXhpbi5wb29sLCBNYW5hZ2VyTWl4aW4ucG9vbAogCiBkZWYgbWFpbigpOgogICAgIHRlc3RfbWFpbih1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcih2ZXJib3NpdHk9MikucnVuKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdXRhbnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9tdXRhbnRzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDNmYTQ3Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfbXV0YW50cy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5MSArMCwwIEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgb3MKLQotIyBGcm9tIFNGIGJ1ZyAjNDIyMTIxOiAgSW5zZWN1cml0aWVzIGluIGRpY3QgY29tcGFyaXNvbi4KLQotIyBTYWZldHkgb2YgY29kZSBkb2luZyBjb21wYXJpc29ucyBoYXMgYmVlbiBhbiBoaXN0b3JpY2FsIFB5dGhvbiB3ZWFrIHNwb3QuCi0jIFRoZSBwcm9ibGVtIGlzIHRoYXQgY29tcGFyaXNvbiBvZiBzdHJ1Y3R1cmVzIHdyaXR0ZW4gaW4gQyAqbmF0dXJhbGx5KgotIyB3YW50cyB0byBob2xkIG9uIHRvIHRoaW5ncyBsaWtlIHRoZSBzaXplIG9mIHRoZSBjb250YWluZXIsIG9yICJ0aGUKLSMgYmlnZ2VzdCIgY29udGFpbmVlIHNvIGZhciwgYWNyb3NzIGEgdHJhdmVyc2FsIG9mIHRoZSBjb250YWluZXI7IGJ1dAotIyBjb2RlIHRvIGRvIGNvbnRhaW5lZSBjb21wYXJpc29ucyBjYW4gY2FsbCBiYWNrIGludG8gUHl0aG9uIGFuZCBtdXRhdGUKLSMgdGhlIGNvbnRhaW5lciBpbiBhcmJpdHJhcnkgd2F5cyB3aGlsZSB0aGUgQyBsb29wIGlzIGluIG1pZHN0cmVhbS4gIElmIHRoZQotIyBDIGNvZGUgaXNuJ3QgZXh0cmVtZWx5IHBhcmFub2lkIGFib3V0IGRpZ2dpbmcgdGhpbmdzIG91dCBvZiBtZW1vcnkgb24KLSMgZWFjaCB0cmlwLCBhbmQgYXJ0aWZpY2lhbGx5IGJvb3N0aW5nIHJlZmNvdW50cyBmb3IgdGhlIGR1cmF0aW9uLCBhbnl0aGluZwotIyBmcm9tIGluZmluaXRlIGxvb3BzIHRvIE9TIGNyYXNoZXMgY2FuIHJlc3VsdCAoeWVzLCBJIHVzZSBXaW5kb3dzIDx3aW5rPikuCi0jCi0jIFRoZSBvdGhlciBwcm9ibGVtIGlzIHRoYXQgY29kZSBkZXNpZ25lZCB0byBwcm92b2tlIGEgd2Vha25lc3MgaXMgdXN1YWxseQotIyB3aGl0ZS1ib3ggY29kZSwgYW5kIHNvIGNhdGNoZXMgb25seSB0aGUgcGFydGljdWxhciB2dWxuZXJhYmlsaXRpZXMgdGhlCi0jIGF1dGhvciBrbmV3IHRvIHByb3RlY3QgYWdhaW5zdC4gIEZvciBleGFtcGxlLCBQeXRob24ncyBsaXN0LnNvcnQoKSBjb2RlCi0jIHdlbnQgdGhydSBtYW55IGl0ZXJhdGlvbnMgYXMgb25lICJuZXciIHZ1bG5lcmFiaWxpdHkgYWZ0ZXIgYW5vdGhlciB3YXMKLSMgZGlzY292ZXJlZC4KLSMKLSMgU28gdGhlIGRpY3QgY29tcGFyaXNvbiB0ZXN0IGhlcmUgdXNlcyBhIGJsYWNrLWJveCBhcHByb2FjaCBpbnN0ZWFkLAotIyBnZW5lcmF0aW5nIGRpY3RzIG9mIHZhcmlvdXMgc2l6ZXMgYXQgcmFuZG9tLCBhbmQgcGVyZm9ybWluZyByYW5kb20KLSMgbXV0YXRpb25zIG9uIHRoZW0gYXQgcmFuZG9tIHRpbWVzLiAgVGhpcyBwcm92ZWQgdmVyeSBlZmZlY3RpdmUsCi0jIHRyaWdnZXJpbmcgYXQgbGVhc3Qgc2l4IGRpc3RpbmN0IGZhaWx1cmUgbW9kZXMgdGhlIGZpcnN0IDIwIHRpbWVzIEkKLSMgcmFuIGl0LiAgSW5kZWVkLCBhdCB0aGUgc3RhcnQsIHRoZSBkcml2ZXIgbmV2ZXIgZ290IGJleW9uZCA2IGl0ZXJhdGlvbnMKLSMgYmVmb3JlIHRoZSB0ZXN0IGRpZWQuCi0KLSMgVGhlIGRpY3RzIGFyZSBnbG9iYWwgdG8gbWFrZSBpdCBlYXN5IHRvIG11dGF0ZSB0aGFtIGZyb20gd2l0aGluIGZ1bmN0aW9ucy4KLWRpY3QxID0ge30KLWRpY3QyID0ge30KLQotIyBUaGUgY3VycmVudCBzZXQgb2Yga2V5cyBpbiBkaWN0MSBhbmQgZGljdDIuICBUaGVzZSBhcmUgbWF0ZXJpYWxpemVkIGFzCi0jIGxpc3RzIHRvIG1ha2UgaXQgZWFzeSB0byBwaWNrIGEgZGljdCBrZXkgYXQgcmFuZG9tLgotZGljdDFrZXlzID0gW10KLWRpY3Qya2V5cyA9IFtdCi0KLSMgR2xvYmFsIGZsYWcgdGVsbGluZyBtYXliZV9tdXRhdGUoKSB3aGV0aGVyIHRvICpjb25zaWRlciogbXV0YXRpbmcuCi1tdXRhdGUgPSAwCi0KLSMgSWYgZ2xvYmFsIG11dGF0ZSBpcyB0cnVlLCBjb25zaWRlciBtdXRhdGluZyBhIGRpY3QuICBNYXkgb3IgbWF5IG5vdAotIyBtdXRhdGUgYSBkaWN0IGV2ZW4gaWYgbXV0YXRlIGlzIHRydWUuICBJZiBpdCBkb2VzIGRlY2lkZSB0byBtdXRhdGUgYQotIyBkaWN0LCBpdCBwaWNrcyBvbmUgb2Yge2RpY3QxLCBkaWN0Mn0gYXQgcmFuZG9tLCBhbmQgZGVsZXRlcyBhIHJhbmRvbQotIyBlbnRyeSBmcm9tIGl0OyBvciwgbW9yZSByYXJlbHksIGFkZHMgYSByYW5kb20gZWxlbWVudC4KLQotZGVmIG1heWJlX211dGF0ZSgpOgotICAgIGdsb2JhbCBtdXRhdGUKLSAgICBpZiBub3QgbXV0YXRlOgotICAgICAgICByZXR1cm4KLSAgICBpZiByYW5kb20ucmFuZG9tKCkgPCAwLjU6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgMC41OgotICAgICAgICB0YXJnZXQsIGtleXMgPSBkaWN0MSwgZGljdDFrZXlzCi0gICAgZWxzZToKLSAgICAgICAgdGFyZ2V0LCBrZXlzID0gZGljdDIsIGRpY3Qya2V5cwotCi0gICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgMC4yOgotICAgICAgICAjIEluc2VydCBhIG5ldyBrZXkuCi0gICAgICAgIG11dGF0ZSA9IDAgICAjIGRpc2FibGUgbXV0YXRpb24gdW50aWwga2V5IGluc2VydGVkCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBuZXdrZXkgPSBIb3JyaWQocmFuZG9tLnJhbmRyYW5nZSgxMDApKQotICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiB0YXJnZXQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgdGFyZ2V0W25ld2tleV0gPSBIb3JyaWQocmFuZG9tLnJhbmRyYW5nZSgxMDApKQotICAgICAgICBrZXlzLmFwcGVuZChuZXdrZXkpCi0gICAgICAgIG11dGF0ZSA9IDEKLQotICAgIGVsaWYga2V5czoKLSAgICAgICAgIyBEZWxldGUgYSBrZXkgYXQgcmFuZG9tLgotICAgICAgICBtdXRhdGUgPSAwICAgIyBkaXNhYmxlIG11dGF0aW9uIHVudGlsIGtleSBkZWxldGVkCi0gICAgICAgIGkgPSByYW5kb20ucmFuZHJhbmdlKGxlbihrZXlzKSkKLSAgICAgICAga2V5ID0ga2V5c1tpXQotICAgICAgICBkZWwgdGFyZ2V0W2tleV0KLSAgICAgICAgZGVsIGtleXNbaV0KLSAgICAgICAgbXV0YXRlID0gMQotCi0jIEEgaG9ycmlkIGNsYXNzIHRoYXQgdHJpZ2dlcnMgcmFuZG9tIG11dGF0aW9ucyBvZiBkaWN0MSBhbmQgZGljdDIgd2hlbgotIyBpbnN0YW5jZXMgYXJlIGNvbXBhcmVkLgotCi1jbGFzcyBIb3JyaWQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGkpOgotICAgICAgICAjIENvbXBhcmlzb24gb3V0Y29tZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIGkuCi0gICAgICAgIHNlbGYuaSA9IGkKLQotICAgICAgICAjIEFuIGFydGlmaWNpYWwgaGFzaGNvZGUgaXMgc2VsZWN0ZWQgYXQgcmFuZG9tIHNvIHRoYXQgd2UgZG9uJ3QKLSAgICAgICAgIyBoYXZlIGFueSBzeXN0ZW1hdGljIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGNvbXBhcmlzb24gb3V0Y29tZXMKLSAgICAgICAgIyAoYmFzZWQgb24gc2VsZi5pIGFuZCBvdGhlci5pKSBhbmQgcmVsYXRpdmUgcG9zaXRpb24gd2l0aGluIHRoZQotICAgICAgICAjIGhhc2ggdmVjdG9yIChiYXNlZCBvbiBoYXNoY29kZSkuCi0gICAgICAgICMgWFhYIFRoaXMgaXMgbm8gbG9uZ2VyIGVmZmVjdGl2ZS4KLSAgICAgICAgIyNzZWxmLmhhc2hjb2RlID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMDAwKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gNDIKLSAgICAgICAgcmV0dXJuIHNlbGYuaGFzaGNvZGUKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBtYXliZV9tdXRhdGUoKSAgICMgVGhlIHBvaW50IG9mIHRoZSB0ZXN0LgotICAgICAgICByZXR1cm4gc2VsZi5pID09IG90aGVyLmkKLQotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkkgZGlkbid0IGV4cGVjdCBzb21lIGtpbmQgb2YgU3BhbmlzaCBpbnF1aXNpdGlvbiEiKQotCi0gICAgX19sdF9fID0gX19sZV9fID0gX19ndF9fID0gX19nZV9fID0gX19uZV9fCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiSG9ycmlkKCVkKSIgJSBzZWxmLmkKLQotIyBGaWxsIGRpY3QgZCB3aXRoIG51bWVudHJpZXMgKEhvcnJpZChpKSwgSG9ycmlkKGopKSBrZXktdmFsdWUgcGFpcnMsCi0jIHdoZXJlIGkgYW5kIGogYXJlIHNlbGVjdGVkIGF0IHJhbmRvbSBmcm9tIHRoZSBjYW5kaWRhdGVzIGxpc3QuCi0jIFJldHVybiBkLmtleXMoKSBhZnRlciBmaWxsaW5nLgotCi1kZWYgZmlsbF9kaWN0KGQsIGNhbmRpZGF0ZXMsIG51bWVudHJpZXMpOgotICAgIGQuY2xlYXIoKQotICAgIGZvciBpIGluIHJhbmdlKG51bWVudHJpZXMpOgotICAgICAgICBkW0hvcnJpZChyYW5kb20uY2hvaWNlKGNhbmRpZGF0ZXMpKV0gPSBcCi0gICAgICAgICAgICBIb3JyaWQocmFuZG9tLmNob2ljZShjYW5kaWRhdGVzKSkKLSAgICByZXR1cm4gbGlzdChkLmtleXMoKSkKLQotIyBUZXN0IG9uZSBwYWlyIG9mIHJhbmRvbWx5IGdlbmVyYXRlZCBkaWN0cywgZWFjaCB3aXRoIG4gZW50cmllcy4KLSMgTm90ZSB0aGF0IGRpY3QgY29tcGFyaXNvbiBpcyB0cml2aWFsIGlmIHRoZXkgZG9uJ3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIKLSMgb2YgZW50aXJlcyAodGhlbiB0aGUgInNob3J0ZXIiIGRpY3QgaXMgaW5zdGFudGx5IGNvbnNpZGVyZWQgdG8gYmUgdGhlCi0jIHNtYWxsZXIgb25lLCB3aXRob3V0IGV2ZW4gbG9va2luZyBhdCB0aGUgZW50cmllcykuCi0KLWRlZiB0ZXN0X29uZShuKToKLSAgICBnbG9iYWwgbXV0YXRlLCBkaWN0MSwgZGljdDIsIGRpY3Qxa2V5cywgZGljdDJrZXlzCi0KLSAgICAjIEZpbGwgdGhlIGRpY3RzIHdpdGhvdXQgbXV0YXRpbmcgdGhlbS4KLSAgICBtdXRhdGUgPSAwCi0gICAgZGljdDFrZXlzID0gZmlsbF9kaWN0KGRpY3QxLCByYW5nZShuKSwgbikKLSAgICBkaWN0MmtleXMgPSBmaWxsX2RpY3QoZGljdDIsIHJhbmdlKG4pLCBuKQotCi0gICAgIyBFbmFibGUgbXV0YXRpb24sIHRoZW4gY29tcGFyZSB0aGUgZGljdHMgc28gbG9uZyBhcyB0aGV5IGhhdmUgdGhlCi0gICAgIyBzYW1lIHNpemUuCi0gICAgbXV0YXRlID0gMQotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHByaW50KCJ0cnlpbmcgdy8gbGVuZ3RocyIsIGxlbihkaWN0MSksIGxlbihkaWN0MiksIGVuZD0nICcpCi0gICAgd2hpbGUgZGljdDEgYW5kIGxlbihkaWN0MSkgPT0gbGVuKGRpY3QyKToKLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCIuIiwgZW5kPScgJykKLSAgICAgICAgYyA9IGRpY3QxID09IGRpY3QyCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcHJpbnQoKQotCi0jIFJ1biB0ZXN0X29uZSBuIHRpbWVzLiAgQXQgdGhlIHN0YXJ0IChiZWZvcmUgdGhlIGJ1Z3Mgd2VyZSBmaXhlZCksIDIwCi0jIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhpcyB0ZXN0IGVhY2ggYmxldyB1cCBvbiBvciBiZWZvcmUgdGhlIHNpeHRoIHRpbWUKLSMgdGVzdF9vbmUgd2FzIHJ1bi4gIFNvIG4gZG9lc24ndCBoYXZlIHRvIGJlIGxhcmdlIHRvIGdldCBhbiBpbnRlcmVzdGluZwotIyB0ZXN0LgotIyBPVE9ILCBjYWxsaW5nIHdpdGggbGFyZ2UgbiBpcyBhbHNvIGludGVyZXN0aW5nLCB0byBlbnN1cmUgdGhhdCB0aGUgZml4ZWQKLSMgY29kZSBkb2Vzbid0IGhvbGQgb24gdG8gcmVmY291bnRzICp0b28qIGxvbmcgKGluIHdoaWNoIGNhc2UgbWVtb3J5IHdvdWxkCi0jIGxlYWspLgotCi1kZWYgdGVzdChuKToKLSAgICBmb3IgaSBpbiByYW5nZShuKToKLSAgICAgICAgdGVzdF9vbmUocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQotCi0jIFNlZSBsYXN0IGNvbW1lbnQgYmxvY2sgZm9yIGNsdWVzIGFib3V0IGdvb2QgdmFsdWVzIGZvciBuLgotdGVzdCgxMDApCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFub3RoZXIgc2VnZmF1bHQgYnVnLCBkaXN0aWxsZWQgYnkgTWljaGFlbCBIdWRzb24gZnJvbSBhIGMubC5weSBwb3N0LgotCi1jbGFzcyBDaGlsZDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgc2VsZi5fX2RpY3RfX1sncGFyZW50J10gPSBwYXJlbnQKLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6Ci0gICAgICAgIHNlbGYucGFyZW50LmEgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmIgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmMgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmQgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmUgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmYgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmcgPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmggPSAxCi0gICAgICAgIHNlbGYucGFyZW50LmkgPSAxCi0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYucGFyZW50LCBhdHRyKQotCi1jbGFzcyBQYXJlbnQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmEgPSBDaGlsZChzZWxmKQotCi0jIEhhcmQgdG8gc2F5IHdoYXQgdGhpcyB3aWxsIHByaW50ISAgTWF5IHZhcnkgZnJvbSB0aW1lIHRvIHRpbWUuICBCdXQKLSMgd2UncmUgc3BlY2lmaWNhbGx5IHRyeWluZyB0byB0ZXN0IHRoZSB0cF9wcmludCBzbG90IGhlcmUsIGFuZCB0aGlzIGlzCi0jIHRoZSBjbGVhcmVzdCB3YXkgdG8gZG8gaXQuICBXZSBwcmludCB0aGUgcmVzdWx0IHRvIGEgdGVtcCBmaWxlIHNvIHRoYXQKLSMgdGhlIGV4cGVjdGVkLW91dHB1dCBmaWxlIGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UuCi0KLWYgPSBvcGVuKFRFU1RGTiwgInciKQotcHJpbnQoUGFyZW50KCkuX19kaWN0X18sIGZpbGU9ZikKLWYuY2xvc2UoKQotb3MudW5saW5rKFRFU1RGTikKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5kIGFub3RoZXIgY29yZS1kdW1wZXIgZnJvbSBNaWNoYWVsIEh1ZHNvbi4KLQotZGljdCA9IHt9Ci0KLSMgRm9yY2UgZGljdCB0byBtYWxsb2MgaXRzIHRhYmxlLgotZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgIGRpY3RbaV0gPSBpCi0KLWYgPSBvcGVuKFRFU1RGTiwgInciKQotCi1jbGFzcyBNYWNoaWF2ZWxsaToKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGRpY3QuY2xlYXIoKQotCi0gICAgICAgICMgTWljaGFlbCBzZXo6ICAiZG9lc24ndCBjcmFzaCB3aXRob3V0IHRoaXMuICBkb24ndCBrbm93IHdoeS4iCi0gICAgICAgICMgVGltIHNlejogICJsdWNrIG9mIHRoZSBkcmF3OyBjcmFzaGVzIHdpdGggb3Igd2l0aG91dCBmb3IgbWUuIgotICAgICAgICBwcmludChmaWxlPWYpCi0KLSAgICAgICAgcmV0dXJuIHJlcHIoIm1hY2hpYXZlbGxpIikKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDAKLQotZGljdFtNYWNoaWF2ZWxsaSgpXSA9IE1hY2hpYXZlbGxpKCkKLQotcHJpbnQoc3RyKGRpY3QpLCBmaWxlPWYpCi1mLmNsb3NlKCkKLW9zLnVubGluayhURVNURk4pCi1kZWwgZiwgZGljdAotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFuZCBhbm90aGVyIGNvcmUtZHVtcGVyIGZyb20gTWljaGFlbCBIdWRzb24uCi0KLWRpY3QgPSB7fQotCi0jIGxldCdzIGZvcmNlIGRpY3QgdG8gbWFsbG9jIGl0cyB0YWJsZQotZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgIGRpY3RbaV0gPSBpCi0KLWNsYXNzIE1hY2hpYXZlbGxpMjoKLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgZGljdC5jbGVhcigpCi0gICAgICAgIHJldHVybiAxCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAwCi0KLWRpY3RbTWFjaGlhdmVsbGkyKCldID0gTWFjaGlhdmVsbGkyKCkKLQotdHJ5OgotICAgIGRpY3RbTWFjaGlhdmVsbGkyKCldCi1leGNlcHQgS2V5RXJyb3I6Ci0gICAgcGFzcwotCi1kZWwgZGljdAotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbmQgYW5vdGhlciBjb3JlLWR1bXBlciBmcm9tIE1pY2hhZWwgSHVkc29uLgotCi1kaWN0ID0ge30KLQotIyBsZXQncyBmb3JjZSBkaWN0IHRvIG1hbGxvYyBpdHMgdGFibGUKLWZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICBkaWN0W2ldID0gaQotCi1jbGFzcyBNYWNoaWF2ZWxsaTM6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGlkKToKLSAgICAgICAgc2VsZi5pZCA9IGlkCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgc2VsZi5pZCA9PSBvdGhlci5pZDoKLSAgICAgICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiJXMoJXMpIiUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuaWQpCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAwCi0KLWRpY3RbTWFjaGlhdmVsbGkzKDEpXSA9IE1hY2hpYXZlbGxpMygwKQotZGljdFtNYWNoaWF2ZWxsaTMoMildID0gTWFjaGlhdmVsbGkzKDApCi0KLWYgPSBvcGVuKFRFU1RGTiwgInciKQotdHJ5OgotICAgIHRyeToKLSAgICAgICAgcHJpbnQoZGljdFtNYWNoaWF2ZWxsaTMoMildLCBmaWxlPWYpCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi1maW5hbGx5OgotICAgIGYuY2xvc2UoKQotICAgIG9zLnVubGluayhURVNURk4pCi0KLWRlbCBkaWN0Ci1kZWwgZGljdDEsIGRpY3QyLCBkaWN0MWtleXMsIGRpY3Qya2V5cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9uYW1lc3BhY2VfcGtncy5weSBiL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA2N2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTAsMCArMSwyOTQgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBvcworCitmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKworIyBuZWVkZWQgdGVzdHM6CisjCisjIG5lZWQgdG8gdGVzdCB3aGVuIG5lc3RlZCwgc28gdGhhdCB0aGUgdG9wLWxldmVsIHBhdGggaXNuJ3Qgc3lzLnBhdGgKKyMgbmVlZCB0byB0ZXN0IGR5bmFtaWMgcGF0aCBkZXRlY3Rpb24sIGJvdGggYXQgdG9wLWxldmVsIGFuZCBuZXN0ZWQKKyMgd2l0aCBkeW5hbWljIHBhdGgsIGNoZWNrIHdoZW4gYSBsb2FkZXIgaXMgcmV0dXJuZWQgb24gcGF0aCByZWxvYWQgKHRoYXQgaXMsCisjICB0cnlpbmcgdG8gc3dpdGNoIGZyb20gYSBuYW1lc3BhY2UgcGFja2FnZSB0byBhIHJlZ3VsYXIgcGFja2FnZSkKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHN5c19tb2R1bGVzX2NvbnRleHQoKToKKyAgICAiIiIKKyAgICBNYWtlIHN1cmUgc3lzLm1vZHVsZXMgaXMgdGhlIHNhbWUgb2JqZWN0IGFuZCBoYXMgdGhlIHNhbWUgY29udGVudAorICAgIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCBhcyB3aGVuIGVudGVyaW5nLgorCisgICAgU2ltaWxhciB0byBpbXBvcnRsaWIudGVzdC51dGlsLnVuY2FjaGUsIGJ1dCBkb2Vzbid0IHJlcXVpcmUgZXhwbGljaXQKKyAgICBuYW1lcy4KKyAgICAiIiIKKyAgICBzeXNfbW9kdWxlc19zYXZlZCA9IHN5cy5tb2R1bGVzCisgICAgc3lzX21vZHVsZXNfY29weSA9IHN5cy5tb2R1bGVzLmNvcHkoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlcyA9IHN5c19tb2R1bGVzX3NhdmVkCisgICAgICAgIHN5cy5tb2R1bGVzLmNsZWFyKCkKKyAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKHN5c19tb2R1bGVzX2NvcHkpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBuYW1lc3BhY2VfdHJlZV9jb250ZXh0KCoqa3dhcmdzKToKKyAgICAiIiIKKyAgICBTYXZlIGltcG9ydCBzdGF0ZSBhbmQgc3lzLm1vZHVsZXMgY2FjaGUgYW5kIHJlc3RvcmUgaXQgb24gZXhpdC4KKyAgICBUeXBpY2FsIHVzYWdlOgorCisgICAgPj4+IHdpdGggbmFtZXNwYWNlX3RyZWVfY29udGV4dChwYXRoPVsnL3RtcC94eHl5L3BvcnRpb24xJywKKyAgICAuLi4gICAgICAgICAnL3RtcC94eHl5L3BvcnRpb24yJ10pOgorICAgIC4uLiAgICAgcGFzcworICAgICIiIgorICAgICMgdXNlIGRlZmF1bHQgbWV0YV9wYXRoIGFuZCBwYXRoX2hvb2tzIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlCisgICAga3dhcmdzLnNldGRlZmF1bHQoJ21ldGFfcGF0aCcsIHN5cy5tZXRhX3BhdGgpCisgICAga3dhcmdzLnNldGRlZmF1bHQoJ3BhdGhfaG9va3MnLCBzeXMucGF0aF9ob29rcykKKyAgICBpbXBvcnRfY29udGV4dCA9IHV0aWwuaW1wb3J0X3N0YXRlKCoqa3dhcmdzKQorICAgIHdpdGggaW1wb3J0X2NvbnRleHQsIHN5c19tb2R1bGVzX2NvbnRleHQoKToKKyAgICAgICAgeWllbGQKKworY2xhc3MgTmFtZXNwYWNlUGFja2FnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFN1YmNsYXNzZXMgc2hvdWxkIGRlZmluZSBzZWxmLnJvb3QgYW5kIHNlbGYucGF0aHMgKHVuZGVyIHRoYXQgcm9vdCkKKyAgICB0byBiZSBhZGRlZCB0byBzeXMucGF0aC4KKyAgICAiIiIKKyAgICByb290ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICduYW1lc3BhY2VfcGtncycpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucmVzb2x2ZWRfcGF0aHMgPSBbCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBwYXRoKSBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5jdHggPSBuYW1lc3BhY2VfdHJlZV9jb250ZXh0KHBhdGg9c2VsZi5yZXNvbHZlZF9wYXRocykKKyAgICAgICAgc2VsZi5jdHguX19lbnRlcl9fKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIyBUT0RPOiB3aWxsIHdlIGV2ZXIgd2FudCB0byBwYXNzIGV4Y19pbmZvIHRvIF9fZXhpdF9fPworICAgICAgICBzZWxmLmN0eC5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorCitjbGFzcyBTaW5nbGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmb28pLCAiPG1vZHVsZSAnZm9vJyAobmFtZXNwYWNlKT4iKQorCisKK2NsYXNzIER5bmFtaWNQYXRoZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIG9ubHkgJ2Zvby5vbmUnIGNhbiBiZSBpbXBvcnRlZAorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGgKKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorCisgICAgICAgICMgQW5kIG1ha2Ugc3VyZSBmb28udHdvIGlzIG5vdyBpbXBvcnRhYmxlCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisKKworY2xhc3MgQ29tYmluZWROYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ2JvdGhfcG9ydGlvbnMnXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKworY2xhc3MgU2VwYXJhdGVkTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMScsICdwb3J0aW9uMiddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKK2NsYXNzIFNlcGFyYXRlZE92ZXJsYXBwaW5nTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMScsICdib3RoX3BvcnRpb25zJ10KKworICAgIGRlZiB0ZXN0X2ZpcnN0X3BhdGhfd2lucyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisgICAgZGVmIHRlc3RfZmlyc3RfcGF0aF93aW5zX2FnYWluKHNlbGYpOgorICAgICAgICBzeXMucGF0aC5yZXZlcnNlKCkKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycpCisKKyAgICBkZWYgdGVzdF9maXJzdF9wYXRoX3dpbnNfaW1wb3J0aW5nX3NlY29uZF9maXJzdChzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisKK2NsYXNzIFNpbmdsZVppcE5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyd0b3BfbGV2ZWxfcG9ydGlvbjEuemlwJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworCitjbGFzcyBTZXBhcmF0ZWRaaXBOYW1lc3BhY2VQYWNrYWdlcyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3RvcF9sZXZlbF9wb3J0aW9uMS56aXAnLCAncG9ydGlvbjInXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndG9wX2xldmVsX3BvcnRpb24xLnppcCcsIGZvby5vbmUuX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJy56aXAnLCBmb28udHdvLl9fZmlsZV9fKQorCisKK2NsYXNzIFNpbmdsZU5lc3RlZFppcE5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyduZXN0ZWRfcG9ydGlvbjEuemlwL25lc3RlZF9wb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKworY2xhc3MgU2VwYXJhdGVkTmVzdGVkWmlwTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyduZXN0ZWRfcG9ydGlvbjEuemlwL25lc3RlZF9wb3J0aW9uMScsICdwb3J0aW9uMiddCisKKyAgICBkZWYgdGVzdF9pbXBvcnRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorICAgICAgICBmbiA9IG9zLnBhdGguam9pbignbmVzdGVkX3BvcnRpb24xLnppcCcsICduZXN0ZWRfcG9ydGlvbjEnKQorICAgICAgICBzZWxmLmFzc2VydEluKGZuLCBmb28ub25lLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcuemlwJywgZm9vLnR3by5fX2ZpbGVfXykKKworCitjbGFzcyBMZWdhY3lTdXBwb3J0KE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbm90X2FfbmFtZXNwYWNlX3BrZycsICdwb3J0aW9uMScsICdwb3J0aW9uMicsICdib3RoX3BvcnRpb25zJ10KKworICAgIGRlZiB0ZXN0X25vbl9uYW1lc3BhY2VfcGFja2FnZV90YWtlc19wcmVjZWRlbmNlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faW5pdF9fJywgZm9vLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCduYW1lc3BhY2UnLCBzdHIoZm9vLl9fbG9hZGVyX18pLmxvd2VyKCkpCisKKworY2xhc3MgRHluYW1pY1BhdGhDYWxjdWxhdGlvbihOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3Byb2plY3QxJywgJ3Byb2plY3QyJ10KKworICAgIGRlZiB0ZXN0X3Byb2plY3QzX2ZhaWxzKHNlbGYpOgorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLm9uZS5hdHRyLCAncGFyZW50IGNoaWxkIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLnR3by5hdHRyLCAncGFyZW50IGNoaWxkIHR3bycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnRocmVlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKworICAgIGRlZiB0ZXN0X3Byb2plY3QzX3N1Y2NlZWRzKHNlbGYpOgorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLm9uZS5hdHRyLCAncGFyZW50IGNoaWxkIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLnR3by5hdHRyLCAncGFyZW50IGNoaWxkIHR3bycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgcGFyZW50LmNoaWxkLnRocmVlCisKKyAgICAgICAgIyBub3cgYWRkIHByb2plY3QzCisgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCAncHJvamVjdDMnKSkKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50aHJlZQorCisgICAgICAgICMgdGhlIHBhdGhzIGR5bmFtaWNhbGx5IGdldCBsb25nZXIsIHRvIGluY2x1ZGUgdGhlIG5ldyBkaXJlY3RvcmllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuX19wYXRoX18pLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJlbnQuY2hpbGQuX19wYXRoX18pLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LmNoaWxkLnRocmVlLmF0dHIsICdwYXJlbnQgY2hpbGQgdGhyZWUnKQorCisKK2NsYXNzIFppcFdpdGhNaXNzaW5nRGlyZWN0b3J5KE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbWlzc2luZ19kaXJlY3RvcnkuemlwJ10KKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9taXNzaW5nX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBUaGlzIHdpbGwgZmFpbCBiZWNhdXNlIG1pc3NpbmdfZGlyZWN0b3J5LnppcCBjb250YWluczoKKyAgICAgICAgIyAgIExlbmd0aCAgICAgIERhdGUgICAgVGltZSAgICBOYW1lCisgICAgICAgICMgLS0tLS0tLS0tICAtLS0tLS0tLS0tIC0tLS0tICAgLS0tLQorICAgICAgICAjICAgICAgICAyOSAgMjAxMi0wNS0wMyAxODoxMyAgIGZvby9vbmUucHkKKyAgICAgICAgIyAgICAgICAgIDAgIDIwMTItMDUtMDMgMjA6NTcgICBiYXIvCisgICAgICAgICMgICAgICAgIDM4ICAyMDEyLTA1LTAzIDIwOjU3ICAgYmFyL3R3by5weQorICAgICAgICAjIC0tLS0tLS0tLSAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0KKyAgICAgICAgIyAgICAgICAgNjcgICAgICAgICAgICAgICAgICAgICAzIGZpbGVzCisKKyAgICAgICAgIyBCZWNhdXNlIHRoZXJlIGlzIG5vICdmb28vJywgdGhlIHppcGltcG9ydGVyIGN1cnJlbnRseSBkb2Vzbid0CisgICAgICAgICMgIGtub3cgdGhhdCBmb28gaXMgYSBuYW1lc3BhY2UgcGFja2FnZQorCisgICAgICAgIGltcG9ydCBmb28ub25lCisKKyAgICBkZWYgdGVzdF9wcmVzZW50X2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBUaGlzIHN1Y2NlZWRzIGJlY2F1c2UgdGhlcmUgaXMgYSAiYmFyLyIgaW4gdGhlIHppcCBmaWxlCisgICAgICAgIGltcG9ydCBiYXIudHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFyLnR3by5hdHRyLCAnbWlzc2luZ19kaXJlY3RvcnkgZm9vIHR3bycpCisKKworY2xhc3MgTW9kdWxlQW5kTmFtZXNwYWNlUGFja2FnZUluU2FtZURpcihOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UnXQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2JlZm9yZV9uYW1lc3BhY2VfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgZmluZCB0aGUgbW9kdWxlIGluIHByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgICMgIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICBpbXBvcnQgYV90ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYV90ZXN0LmF0dHIsICdpbiBtb2R1bGUnKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoKk5hbWVzcGFjZVBhY2thZ2VUZXN0Ll9fc3ViY2xhc3Nlc19fKCkpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CmluZGV4IDczMzViMjMuLjE5ZmIxMGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgaW8KK2ltcG9ydCBzb2NrZXQKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI1Nyw2ICsyNTgsMjYgQEAKICAgICAgICAgICAgICMgdmFsdWUKICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBuYW1lLCB3cmFwX21ldGgobWV0aCkpCiAKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgZGVmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VydmVyLCAnZmlsZScpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlcnZlci5oZWxwKCkKKyAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHdpdGggc2VsZi5OTlRQX0NMQVNTKHNlbGYuTk5UUF9IT1NULCB0aW1lb3V0PVRJTUVPVVQsIHVzZW5ldHJjPUZhbHNlKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29ubmVjdGVkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLmhlbHAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jb25uZWN0ZWQoKSkKKworICAgICAgICB3aXRoIHNlbGYuTk5UUF9DTEFTUyhzZWxmLk5OVFBfSE9TVCwgdGltZW91dD1USU1FT1VULCB1c2VuZXRyYz1GYWxzZSkgYXMgc2VydmVyOgorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2Nvbm5lY3RlZCgpKQorCisKIE5ldHdvcmtlZE5OVFBUZXN0c01peGluLndyYXBfbWV0aG9kcygpCiAKIApAQCAtODk0LDcgKzkxNSw3IEBACiAKICAgICBkZWYgX2NoZWNrX2FydGljbGVfYm9keShzZWxmLCBsaW5lcyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stMV0uZGVjb2RlKCd1dGY4JyksICItLSBTaWduZWQgYnkgQW5kcsOpLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTFdLmRlY29kZSgndXRmLTgnKSwgIi0tIFNpZ25lZCBieSBBbmRyw6kuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stMl0sIGIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stM10sIGIiLkhlcmUgaXMgYSBkb3Qtc3RhcnRpbmcgbGluZS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy00XSwgYiJUaGlzIGlzIGp1c3QgYSB0ZXN0IGFydGljbGUuIikKQEAgLTExMzMsMTIgKzExNTQsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBzdWNjZXNzX3Jlc3ApCiAgICAgICAgICMgV2l0aCBhbiBpdGVyYWJsZSBvZiB0ZXJtaW5hdGVkIGxpbmVzCiAgICAgICAgIGRlZiBpdGVybGluZXMoYik6Ci0gICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoVHJ1ZSkpCisgICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpCiAgICAgICAgIHJlc3AgPSBzZWxmLl9jaGVja19wb3N0X2loYXZlX3N1YihmdW5jLCAqYXJncywgZmlsZV9mYWN0b3J5PWl0ZXJsaW5lcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBzdWNjZXNzX3Jlc3ApCiAgICAgICAgICMgV2l0aCBhbiBpdGVyYWJsZSBvZiBub24tdGVybWluYXRlZCBsaW5lcwogICAgICAgICBkZWYgaXRlcmxpbmVzKGIpOgotICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKEZhbHNlKSkKKyAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSkpCiAgICAgICAgIHJlc3AgPSBzZWxmLl9jaGVja19wb3N0X2loYXZlX3N1YihmdW5jLCAqYXJncywgZmlsZV9mYWN0b3J5PWl0ZXJsaW5lcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLCBzdWNjZXNzX3Jlc3ApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKaW5kZXggNjQ2NDk1MC4uMmM5ZGFiOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkKQEAgLTEsMTAgKzEsMTEgQEAKIGltcG9ydCBudHBhdGgKIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBUZXN0RmFpbGVkCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKLWltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0ZXIoZm4sIHdhbnRSZXN1bHQpOgpAQCAtMjEsNyArMjIsOSBAQAogICAgIGZuID0gZm4ucmVwbGFjZSgnWyInLCAnW2IiJykKICAgICBmbiA9IGZuLnJlcGxhY2UoIiwgJyIsICIsIGInIikKICAgICBmbiA9IGZuLnJlcGxhY2UoJywgIicsICcsIGIiJykKLSAgICBnb3RSZXN1bHQgPSBldmFsKGZuKQorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgIGdvdFJlc3VsdCA9IGV2YWwoZm4pCiAgICAgaWYgaXNpbnN0YW5jZSh3YW50UmVzdWx0LCBzdHIpOgogICAgICAgICB3YW50UmVzdWx0ID0gd2FudFJlc3VsdC5lbmNvZGUoJ2FzY2lpJykKICAgICBlbGlmIGlzaW5zdGFuY2Uod2FudFJlc3VsdCwgdHVwbGUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CmluZGV4IGJlZjNkNGMuLjM0MjNkNGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKQEAgLTE1MCw3ICsxNTAsNyBAQAogICAgICAgICAjIGludCwgZmxvYXQsIEZyYWN0aW9uLCBEZWNpbWFsCiAgICAgICAgIHRlc3RfdmFsdWVzID0gWwogICAgICAgICAgICAgZmxvYXQoJy1pbmYnKSwKLSAgICAgICAgICAgIEQoJy0xZTk5OTk5OTk5OScpLAorICAgICAgICAgICAgRCgnLTFlNDI1MDAwMDAwJyksCiAgICAgICAgICAgICAtMWUzMDgsCiAgICAgICAgICAgICBGKC0yMiwgNyksCiAgICAgICAgICAgICAtMy4xNCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CmluZGV4IDdiOTU2MTIuLjc4ZGUyNzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQpAQCAtMzE4LDYgKzMxOCwyMiBAQAogICAgICAgICAgICAgWyItYiJdLCB7J2FjdGlvbic6ICdzdG9yZScsCiAgICAgICAgICAgICAgICAgICAgICAnY2FsbGJhY2tfa3dhcmdzJzogJ2Zvbyd9KQogCisgICAgZGVmIHRlc3Rfbm9fc2luZ2xlX2Rhc2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAiaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6ICIKKyAgICAgICAgICAgICJtdXN0IHN0YXJ0IHdpdGggLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWRlYnVnIl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICJvcHRpb24gLWQ6IGludmFsaWQgbG9uZyBvcHRpb24gc3RyaW5nICctZGVidWcnOiBtdXN0IHN0YXJ0IHdpdGgiCisgICAgICAgICAgICAiIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIsCisgICAgICAgICAgICBbIi1kIiwgIi1kZWJ1ZyJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAiaW52YWxpZCBsb25nIG9wdGlvbiBzdHJpbmcgJy1kZWJ1Zyc6ICIKKyAgICAgICAgICAgICJtdXN0IHN0YXJ0IHdpdGggLS0sIGZvbGxvd2VkIGJ5IG5vbi1kYXNoIiwKKyAgICAgICAgICAgIFsiLWRlYnVnIiwgIi0tZGVidWciXSkKKwogY2xhc3MgVGVzdE9wdGlvblBhcnNlcihCYXNlVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlciA9IE9wdGlvblBhcnNlcigpCkBAIC02MzEsNyArNjQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uX2xpc3Q9b3B0aW9ucykKIAogICAgIGRlZiB0ZXN0X3JlcXVpcmVkX3ZhbHVlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1hIl0sICItYSBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKQorICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1hIl0sICItYSBvcHRpb24gcmVxdWlyZXMgMSBhcmd1bWVudCIpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2ludGVnZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UGFyc2VGYWlsKFsiLWIiLCAiNXgiXSwKQEAgLTEwMjMsNyArMTAzOSw3IEBACiAgICAgICAgIFRZUEVfQ0hFQ0tFUlsiZmlsZSJdID0gY2hlY2tfZmlsZQogCiAgICAgZGVmIHRlc3RfZmlsZXR5cGVfb2soc2VsZik6Ci0gICAgICAgIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikuY2xvc2UoKQorICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFBhcnNlT0soWyItLWZpbGUiLCBzdXBwb3J0LlRFU1RGTiwgIi1hZm9vIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2ZpbGUnOiBzdXBwb3J0LlRFU1RGTiwgJ2EnOiAnZm9vJ30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IGVmMTQ3MzMuLjdkNmIzNzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTQsMjAgKzE0LDQwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgbW1hcAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKIGltcG9ydCB1dWlkCitpbXBvcnQgYXN5bmNvcmUKK2ltcG9ydCBhc3luY2hhdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHN0YXQKK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBjb2RlY3MKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAord2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoVHJ1ZSkKK3N0ID0gb3Muc3RhdChfX2ZpbGVfXykKK3N0YXRfc3VwcG9ydHNfc3Vic2Vjb25kID0gKAorICAgICMgY2hlY2sgaWYgZmxvYXQgYW5kIGludCB0aW1lc3RhbXBzIGFyZSBkaWZmZXJlbnQKKyAgICAoc3Quc3RfYXRpbWUgIT0gc3RbN10pCisgICAgb3IgKHN0LnN0X210aW1lICE9IHN0WzhdKQorICAgIG9yIChzdC5zdF9jdGltZSAhPSBzdFs5XSkpCisKICMgRGV0ZWN0IHdoZXRoZXIgd2UncmUgb24gYSBMaW51eCBzeXN0ZW0gdGhhdCB1c2VzIHRoZSAobm93IG91dGRhdGVkCiAjIGFuZCB1bm1haW50YWluZWQpIGxpbnV4dGhyZWFkcyB0aHJlYWRpbmcgbGlicmFyeS4gIFRoZXJlJ3MgYW4gaXNzdWUKICMgd2hlbiBjb21iaW5pbmcgbGludXh0aHJlYWRzIHdpdGggYSBmYWlsZWQgZXhlY3YgY2FsbDogc2VlCiAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU0OTcwLgotaWYgKGhhc2F0dHIob3MsICJjb25mc3RyX25hbWVzIikgYW5kCi0gICAgIkNTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04iIGluIG9zLmNvbmZzdHJfbmFtZXMpOgotICAgIGxpYnB0aHJlYWQgPSBvcy5jb25mc3RyKCJDU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OIikKLSAgICBVU0lOR19MSU5VWFRIUkVBRFM9IGxpYnB0aHJlYWQuc3RhcnRzd2l0aCgibGludXh0aHJlYWRzIikKK2lmIGhhc2F0dHIoc3lzLCAndGhyZWFkX2luZm8nKSBhbmQgc3lzLnRocmVhZF9pbmZvLnZlcnNpb246CisgICAgVVNJTkdfTElOVVhUSFJFQURTID0gc3lzLnRocmVhZF9pbmZvLnZlcnNpb24uc3RhcnRzd2l0aCgibGludXh0aHJlYWRzIikKIGVsc2U6Ci0gICAgVVNJTkdfTElOVVhUSFJFQURTPSBGYWxzZQorICAgIFVTSU5HX0xJTlVYVEhSRUFEUyA9IEZhbHNlCiAKICMgVGVzdHMgY3JlYXRpbmcgVEVTVEZOCiBjbGFzcyBGaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTI0LDYgKzE0NCwxOCBAQAogICAgICAgICBzZWxmLmZkb3Blbl9oZWxwZXIoJ3InKQogICAgICAgICBzZWxmLmZkb3Blbl9oZWxwZXIoJ3InLCAxMDApCiAKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiLjIiCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiMSIpCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIyIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgVEVTVEZOMikKKyAgICAgICAgb3MucmVwbGFjZShzdXBwb3J0LlRFU1RGTiwgVEVTVEZOMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnN0YXQsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgIjEiKQorCiAKICMgVGVzdCBhdHRyaWJ1dGVzIG9uIHJldHVybiB2YWx1ZXMgZnJvbSBvcy4qc3RhdCogZmFtaWx5LgogY2xhc3MgU3RhdEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE0Miw3ICsxNzQsNiBAQAogICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgInN0YXQiKToKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGltcG9ydCBzdGF0CiAgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoZm5hbWUpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgZGlyZWN0IGFjY2VzcyB3b3JrcwpAQCAtMTYyLDYgKzE5MywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtnZXRhdHRyKHN0YXQsIG5hbWUpXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIG1lbWJlcnMpCiAKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgc3RfP3RpbWUgYW5kIHN0Xz90aW1lX25zIGZpZWxkcyByb3VnaGx5IGFncmVlCisgICAgICAgICMgKHRoZXkgc2hvdWxkIGFsd2F5cyBhZ3JlZSB1cCB0byBhcm91bmQgdGVucy1vZi1taWNyb3NlY29uZHMpCisgICAgICAgIGZvciBuYW1lIGluICdzdF9hdGltZSBzdF9tdGltZSBzdF9jdGltZScuc3BsaXQoKToKKyAgICAgICAgICAgIGZsb2F0eSA9IGludChnZXRhdHRyKHJlc3VsdCwgbmFtZSkgKiAxMDAwMDApCisgICAgICAgICAgICBuYW5vc2Vjb25keSA9IGdldGF0dHIocmVzdWx0LCBuYW1lICsgIl9ucyIpIC8vIDEwMDAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0eSwgbmFub3NlY29uZHksIGRlbHRhPTIpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0WzIwMF0KICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93biIpCkBAIC0yMDgsNyArMjQ2LDkgQEAKICAgICAgICAgICAgIGZuYW1lID0gc2VsZi5mbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGVuY29kZSAlYSBmb3IgdGhlIGZpbGVzeXN0ZW0iICUgc2VsZi5mbmFtZSkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCiAKICAgICBkZWYgdGVzdF9zdGF0dmZzX2F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic3RhdHZmcyIpOgpAQCAtMjY1LDYgKzMwNSwxNDMgQEAKICAgICAgICAgc3QyID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdDIuc3RfbXRpbWUsIGludChzdC5zdF9tdGltZS1kZWx0YSkpCiAKKyAgICBkZWYgX3Rlc3RfdXRpbWUoc2VsZiwgZmlsZW5hbWUsIGF0dHIsIHV0aW1lLCBkZWx0YSk6CisgICAgICAgICMgSXNzdWUgIzEzMzI3IHJlbW92ZWQgdGhlIHJlcXVpcmVtZW50IHRvIHBhc3MgTm9uZSBhcyB0aGUKKyAgICAgICAgIyBzZWNvbmQgYXJndW1lbnQuIENoZWNrIHRoYXQgdGhlIHByZXZpb3VzIG1ldGhvZHMgb2YgcGFzc2luZworICAgICAgICAjIGEgdGltZSB0dXBsZSBvciBOb25lIHdvcmsgaW4gYWRkaXRpb24gdG8gbm8gYXJndW1lbnQuCisgICAgICAgIHN0MCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgICMgRG9lc24ndCBzZXQgYW55dGhpbmcgbmV3LCBidXQgc2V0cyB0aGUgdGltZSB0dXBsZSB3YXkKKyAgICAgICAgdXRpbWUoZmlsZW5hbWUsIChhdHRyKHN0MCwgInN0X2F0aW1lIiksIGF0dHIoc3QwLCAic3RfbXRpbWUiKSkpCisgICAgICAgICMgU2V0dGluZyB0aGUgdGltZSB0byB0aGUgdGltZSB5b3UganVzdCByZWFkLCB0aGVuIHJlYWRpbmcgYWdhaW4sCisgICAgICAgICMgc2hvdWxkIGFsd2F5cyByZXR1cm4gZXhhY3RseSB0aGUgc2FtZSB0aW1lcy4KKyAgICAgICAgc3QxID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyKHN0MCwgInN0X210aW1lIiksIGF0dHIoc3QxLCAic3RfbXRpbWUiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyKHN0MCwgInN0X2F0aW1lIiksIGF0dHIoc3QxLCAic3RfYXRpbWUiKSkKKyAgICAgICAgIyBTZXQgdG8gdGhlIGN1cnJlbnQgdGltZSBpbiB0aGUgb2xkIGV4cGxpY2l0IHdheS4KKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIE5vbmUpCisgICAgICAgIHN0MiA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgICMgU2V0IHRvIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIG5ldyB3YXkKKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUpCisgICAgICAgIHN0MyA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoYXR0cihzdDIsICJzdF9tdGltZSIpLCBhdHRyKHN0MywgInN0X210aW1lIiksIGRlbHRhPWRlbHRhKQorCisgICAgZGVmIHRlc3RfdXRpbWUoc2VsZik6CisgICAgICAgIGRlZiB1dGltZShmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICByZXR1cm4gb3MudXRpbWUoZmlsZSwgdGltZXMpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc2VsZi5mbmFtZSwgZ2V0YXR0ciwgdXRpbWUsIDEwKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHN1cHBvcnQuVEVTVEZOLCBnZXRhdHRyLCB1dGltZSwgMTApCisKKworICAgIGRlZiBfdGVzdF91dGltZV9ucyhzZWxmLCBzZXRfdGltZXNfbnMsIHRlc3RfZGlyPVRydWUpOgorICAgICAgICBkZWYgZ2V0YXR0cl9ucyhvLCBhdHRyKToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKG8sIGF0dHIgKyAiX25zIikKKyAgICAgICAgdGVuX3MgPSAxMCAqIDEwMDAgKiAxMDAwICogMTAwMAorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHNlbGYuZm5hbWUsIGdldGF0dHJfbnMsIHNldF90aW1lc19ucywgdGVuX3MpCisgICAgICAgIGlmIHRlc3RfZGlyOgorICAgICAgICAgICAgc2VsZi5fdGVzdF91dGltZShzdXBwb3J0LlRFU1RGTiwgZ2V0YXR0cl9ucywgc2V0X3RpbWVzX25zLCB0ZW5fcykKKworICAgIGRlZiB0ZXN0X3V0aW1lX25zKHNlbGYpOgorICAgICAgICBkZWYgdXRpbWVfbnMoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnV0aW1lKGZpbGUsIG5zPXRpbWVzKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKHV0aW1lX25zKQorCisgICAgcmVxdWlyZXNfdXRpbWVfZGlyX2ZkID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyX2ZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICByZXF1aXJlc191dGltZV9mZCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQorICAgIHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzID0gdW5pdHRlc3Quc2tpcFVubGVzcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKworICAgIEByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcworICAgIGRlZiB0ZXN0X2x1dGltZXNfbnMoc2VsZik6CisgICAgICAgIGRlZiBsdXRpbWVzX25zKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHJldHVybiBvcy51dGltZShmaWxlLCBucz10aW1lcywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX25zKGx1dGltZXNfbnMpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVzX25zKHNlbGYpOgorICAgICAgICBkZWYgZnV0aW1lc19ucyhmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCBucz10aW1lcykKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyhmdXRpbWVzX25zLCB0ZXN0X2Rpcj1GYWxzZSkKKworICAgIGRlZiBfdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoc2VsZiwgbmFtZSwgYXJnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGdldGF0dHIob3MsIG5hbWUpKGFyZywgKDUsIDUpLCBucz0oNSwgNSkpCisKKyAgICBkZWYgdGVzdF91dGltZV9pbnZhbGlkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoJ3V0aW1lJywgc2VsZi5mbmFtZSkKKworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3RhdF9zdXBwb3J0c19zdWJzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnN0YXQoKSBkb2Vzbid0IGhhcyBhIHN1YnNlY29uZCByZXNvbHV0aW9uIikKKyAgICBkZWYgX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNlbGYsIHNldF90aW1lX2Z1bmMpOgorICAgICAgICBhc2VjLCBhbXNlYyA9IDEsIDkwMQorICAgICAgICBhdGltZSA9IGFzZWMgKyBhbXNlYyAqIDFlLTMKKyAgICAgICAgbXNlYywgbW1zZWMgPSAyLCA5MDEKKyAgICAgICAgbXRpbWUgPSBtc2VjICsgbW1zZWMgKiAxZS0zCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5mbmFtZQorICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKDAsIDApKQorICAgICAgICBzZXRfdGltZV9mdW5jKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhUcnVlKQorICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc3Quc3RfYXRpbWUsIGF0aW1lLCBwbGFjZXM9MykKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9tdGltZSwgbXRpbWUsIHBsYWNlcz0zKQorCisgICAgZGVmIHRlc3RfdXRpbWVfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZmQKKyAgICBkZWYgdGVzdF9mdXRpbWVuc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBvcy51dGltZShmLmZpbGVubygpLCB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZGlyX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc2F0X3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKKyAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihkaXJuYW1lLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51dGltZShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSwgZGlyX2ZkPWRpcmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX25vZm9sbG93X3N5bWxpbmtzCisgICAgZGVmIHRlc3RfbHV0aW1lc19zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCAoYXRpbWUsIG10aW1lKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9kaXJfZmQKKyAgICBkZWYgdGVzdF91dGltZW5zYXRfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQorICAgICAgICAgICAgZGlyZmQgPSBvcy5vcGVuKGRpcm5hbWUsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnV0aW1lKG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpLCBkaXJfZmQ9ZGlyZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzPShhdGltZSwgbXRpbWUpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShkaXJmZCkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKICAgICAjIFJlc3RyaWN0IHRlc3QgdG8gV2luMzIsIHNpbmNlIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvdGhlcgogICAgICMgc3lzdGVtcyBzdXBwb3J0IGNlbnRpc2Vjb25kcwogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgpAQCAtMjk2LDYgKzQ3MywxOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkNvdWxkIG5vdCBzdGF0IHBhZ2VmaWxlLnN5cyIpCiAKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCisgICAgICAgIGRlZiB0ZXN0XzE1MjYxKHNlbGYpOgorICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCBzdGF0J2luZyBhIGNsb3NlZCBmZCBkb2VzIG5vdCBjYXVzZSBjcmFzaAorICAgICAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnN0YXQocikgICAgICAgICAgIyBzaG91bGQgbm90IHJhaXNlIGVycm9yCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UodykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY3R4OgorICAgICAgICAgICAgICAgIG9zLnN0YXQocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCisKIGZyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogCiBjbGFzcyBFbnZpcm9uVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpAQCAtMzI0LDIzICs1MTQsMjMgQEAKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24KIAogICAgICMgQnVnIDExMTA0NzgKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCiAgICAgZGVmIHRlc3RfdXBkYXRlMihzZWxmKToKICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCIvYmluL3NoIik6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQotICAgICAgICAgICAgd2l0aCBvcy5wb3BlbigiL2Jpbi9zaCAtYyAnZWNobyAkSEVMTE8nIikgYXMgcG9wZW46Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCisgICAgICAgIG9zLmVudmlyb24udXBkYXRlKEhFTExPPSJXb3JsZCIpCisgICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgorICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgIldvcmxkIikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKICAgICBkZWYgdGVzdF9vc19wb3Blbl9pdGVyKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL2Jpbi9zaCIpOgotICAgICAgICAgICAgd2l0aCBvcy5wb3BlbigKLSAgICAgICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKLSAgICAgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUxXG4iKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTNcbiIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCisgICAgICAgIHdpdGggb3MucG9wZW4oCisgICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKKyAgICAgICAgICAgIGl0ID0gaXRlcihwb3BlbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCiAgICAgIyBWZXJpZnkgZW52aXJvbiBrZXlzIGFuZCB2YWx1ZXMgZnJvbSB0aGUgT1MgYXJlIG9mIHRoZQogICAgICMgY29ycmVjdCBzdHIgdHlwZS4KQEAgLTQyNyw4ICs2MTcsOCBAQAogCiAgICAgIyBPbiBGcmVlQlNEIDwgNyBhbmQgT1MgWCA8IDEwLjYsIHVuc2V0ZW52KCkgZG9lc24ndCByZXR1cm4gYSB2YWx1ZSAoaXNzdWUKICAgICAjICMxMzQxNSkuCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2ZyZWVic2QnLCAnZGFyd2luJykpLAotICAgICAgICAgICAgICAgICAgICAgImR1ZSB0byBrbm93biBPUyBidWc6IHNlZSBpc3N1ZSAjMTM0MTUiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig3KQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDYpCiAgICAgZGVmIHRlc3RfdW5zZXRfZXJyb3Ioc2VsZik6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgICAgICAgICAgIyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsaW1pdGVkIHRvIDMyLDc2NyBjaGFyYWN0ZXJzCkBAIC00NDIsNyArNjMyLDcgQEAKIGNsYXNzIFdhbGtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdHMgZm9yIG9zLndhbGsoKS4iIiIKIAotICAgIGRlZiB0ZXN0X3RyYXZlcnNhbChzZWxmKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGpvaW4KIApAQCAtNDU2LDYgKzY0Niw3IEBACiAgICAgICAgICMgICAgICAgICBTVUIyLyAgICAgICAgICAgICBhIGZpbGUga2lkIGFuZCBhIGRpcnN5bWxpbmsga2lkCiAgICAgICAgICMgICAgICAgICAgIHRtcDMKICAgICAgICAgIyAgICAgICAgICAgbGluay8gICAgICAgICAgIGEgc3ltbGluayB0byBURVNURk4uMgorICAgICAgICAjICAgICAgICAgICBicm9rZW5fbGluawogICAgICAgICAjICAgICAgIFRFU1QyLwogICAgICAgICAjICAgICAgICAgdG1wNCAgICAgICAgICAgICAgYSBsb25lIGZpbGUKICAgICAgICAgd2Fsa19wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QxIikKQEAgLTQ2OCw2ICs2NTksOCBAQAogICAgICAgICBsaW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQogICAgICAgICB0Ml9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIikKICAgICAgICAgdG1wNF9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIiwgInRtcDQiKQorICAgICAgICBsaW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQorICAgICAgICBicm9rZW5fbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJicm9rZW5fbGluayIpCiAKICAgICAgICAgIyBDcmVhdGUgc3R1ZmYuCiAgICAgICAgIG9zLm1ha2VkaXJzKHN1YjExX3BhdGgpCkBAIC00ODQsNyArNjc3LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3ltbGlua190b19kaXIgPSBvcy5zeW1saW5rCiAgICAgICAgICAgICBzeW1saW5rX3RvX2Rpcihvcy5wYXRoLmFic3BhdGgodDJfcGF0aCksIGxpbmtfcGF0aCkKLSAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFsibGluayJdLCBbInRtcDMiXSkKKyAgICAgICAgICAgIHN5bWxpbmtfdG9fZGlyKCdicm9rZW4nLCBicm9rZW5fbGlua19wYXRoKQorICAgICAgICAgICAgc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgWyJsaW5rIl0sIFsiYnJva2VuX2xpbmsiLCAidG1wMyJdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgW10sIFsidG1wMyJdKQogCkBAIC00OTYsNiArNjkwLDcgQEAKICAgICAgICAgIyAgICAgZmxpcHBlZDogIFRFU1RGTiwgU1VCMiwgU1VCMSwgU1VCMTEKICAgICAgICAgZmxpcHBlZCA9IGFsbFswXVsxXVswXSAhPSAiU1VCMSIKICAgICAgICAgYWxsWzBdWzFdLnNvcnQoKQorICAgICAgICBhbGxbMyAtIDIgKiBmbGlwcGVkXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLCAod2Fsa19wYXRoLCBbIlNVQjEiLCAiU1VCMiJdLCBbInRtcDEiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzEgKyBmbGlwcGVkXSwgKHN1YjFfcGF0aCwgWyJTVUIxMSJdLCBbInRtcDIiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzIgKyBmbGlwcGVkXSwgKHN1YjExX3BhdGgsIFtdLCBbXSkpCkBAIC01MTEsNiArNzA2LDcgQEAKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnU1VCMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLCAod2Fsa19wYXRoLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQorICAgICAgICBhbGxbMV1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc3ViMl90cmVlKQogCiAgICAgICAgICMgV2FsayBib3R0b20tdXAuCkBAIC01MjEsNiArNzE3LDcgQEAKICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KICAgICAgICAgZmxpcHBlZCA9IGFsbFszXVsxXVswXSAhPSAiU1VCMSIKICAgICAgICAgYWxsWzNdWzFdLnNvcnQoKQorICAgICAgICBhbGxbMiAtIDIgKiBmbGlwcGVkXVstMV0uc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzNdLCAod2Fsa19wYXRoLCBbIlNVQjEiLCAiU1VCMiJdLCBbInRtcDEiXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsW2ZsaXBwZWRdLCAoc3ViMTFfcGF0aCwgW10sIFtdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbZmxpcHBlZCArIDFdLCAoc3ViMV9wYXRoLCBbIlNVQjExIl0sIFsidG1wMiJdKSkKQEAgLTU1Miw2ICs3NDksODIgQEAKICAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRpcm5hbWUpCiAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQogCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmd2FsaycpLCAiVGVzdCBuZWVkcyBvcy5md2FsaygpIikKK2NsYXNzIEZ3YWxrVGVzdHMoV2Fsa1Rlc3RzKToKKyAgICAiIiJUZXN0cyBmb3Igb3MuZndhbGsoKS4iIiIKKworICAgIGRlZiBfY29tcGFyZV90b193YWxrKHNlbGYsIHdhbGtfa3dhcmdzLCBmd2Fsa19rd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgY29tcGFyZSB3aXRoIHdhbGsoKSByZXN1bHRzLgorICAgICAgICAiIiIKKyAgICAgICAgd2Fsa19rd2FyZ3MgPSB3YWxrX2t3YXJncy5jb3B5KCkKKyAgICAgICAgZndhbGtfa3dhcmdzID0gZndhbGtfa3dhcmdzLmNvcHkoKQorICAgICAgICBmb3IgdG9wZG93biwgZm9sbG93X3N5bWxpbmtzIGluIGl0ZXJ0b29scy5wcm9kdWN0KChUcnVlLCBGYWxzZSksIHJlcGVhdD0yKToKKyAgICAgICAgICAgIHdhbGtfa3dhcmdzLnVwZGF0ZSh0b3Bkb3duPXRvcGRvd24sIGZvbGxvd2xpbmtzPWZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGZ3YWxrX2t3YXJncy51cGRhdGUodG9wZG93bj10b3Bkb3duLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorCisgICAgICAgICAgICBleHBlY3RlZCA9IHt9CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsaygqKndhbGtfa3dhcmdzKToKKyAgICAgICAgICAgICAgICBleHBlY3RlZFtyb290XSA9IChzZXQoZGlycyksIHNldChmaWxlcykpCisKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCoqZndhbGtfa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJvb3QsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbcm9vdF0sIChzZXQoZGlycyksIHNldChmaWxlcykpKQorCisgICAgZGVmIHRlc3RfY29tcGFyZV90b193YWxrKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3RvcCc6IHN1cHBvcnQuVEVTVEZOfQorICAgICAgICBzZWxmLl9jb21wYXJlX3RvX3dhbGsoa3dhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9kaXJfZmQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZkID0gb3Mub3BlbigiLiIsIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgd2Fsa19rd2FyZ3MgPSB7J3RvcCc6IHN1cHBvcnQuVEVTVEZOfQorICAgICAgICAgICAgZndhbGtfa3dhcmdzID0gd2Fsa19rd2FyZ3MuY29weSgpCisgICAgICAgICAgICBmd2Fsa19rd2FyZ3NbJ2Rpcl9mZCddID0gZmQKKyAgICAgICAgICAgIHNlbGYuX2NvbXBhcmVfdG9fd2Fsayh3YWxrX2t3YXJncywgZndhbGtfa3dhcmdzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBkZWYgdGVzdF95aWVsZHNfY29ycmVjdF9kaXJfZmQoc2VsZik6CisgICAgICAgICMgY2hlY2sgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9ycworICAgICAgICBmb3IgdG9wZG93biwgZm9sbG93X3N5bWxpbmtzIGluIGl0ZXJ0b29scy5wcm9kdWN0KChUcnVlLCBGYWxzZSksIHJlcGVhdD0yKToKKyAgICAgICAgICAgIGFyZ3MgPSBzdXBwb3J0LlRFU1RGTiwgdG9wZG93biwgTm9uZQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoKmFyZ3MsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgRkQgaXMgdmFsaWQKKyAgICAgICAgICAgICAgICBvcy5mc3RhdChyb290ZmQpCisgICAgICAgICAgICAgICAgIyByZWR1bmRhbnQgY2hlY2sKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHJvb3RmZCkKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgbGlzdGRpcigpIHJldHVybnMgY29uc2lzdGVudCBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG9zLmxpc3RkaXIocm9vdGZkKSksIHNldChkaXJzKSB8IHNldChmaWxlcykpCisKKyAgICBkZWYgdGVzdF9mZF9sZWFrKHNlbGYpOgorICAgICAgICAjIFNpbmNlIHdlJ3JlIG9wZW5pbmcgYSBsb3Qgb2YgRkRzLCB3ZSBtdXN0IGJlIGNhcmVmdWwgdG8gYXZvaWQgbGVha3M6CisgICAgICAgICMgd2UgYm90aCBjaGVjayB0aGF0IGNhbGxpbmcgZndhbGsoKSBhIGxhcmdlIG51bWJlciBvZiB0aW1lcyBkb2Vzbid0CisgICAgICAgICMgeWllbGQgRU1GSUxFLCBhbmQgdGhhdCB0aGUgbWluaW11bSBhbGxvY2F0ZWQgRkQgaGFzbid0IGNoYW5nZWQuCisgICAgICAgIG1pbmZkID0gb3MuZHVwKDEpCisgICAgICAgIG9zLmNsb3NlKG1pbmZkKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgorICAgICAgICAgICAgZm9yIHggaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4pOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbmV3ZmQgPSBvcy5kdXAoMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBuZXdmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdmZCwgbWluZmQpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgY2xlYW51cAorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKyAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQorCisKIGNsYXNzIE1ha2VkaXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKQEAgLTU3NSwxNCArODQ4LDEyIEBACiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKICAgICAgICAgbW9kZSA9IDBvNzc3CiAgICAgICAgIG9sZF9tYXNrID0gb3MudW1hc2soMG8wMjIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCBtb2RlLCBleGlzdF9vaz1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCAwbzc3NiwgZXhpc3Rfb2s9VHJ1ZSkKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnVtYXNrKG9sZF9tYXNrKQorICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUsIGV4aXN0X29rPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgMG83NzYsIGV4aXN0X29rPVRydWUpCisgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgb3MudW1hc2sob2xkX21hc2spCiAKICAgICBkZWYgdGVzdF9leGlzdF9va19zX2lzZ2lkX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzdXBwb3J0LlRFU1RGTiwgJ2RpcjEnKQpAQCAtNTk0LDcgKzg2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLmxzdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmNobW9kKHN1cHBvcnQuVEVTVEZOLCBleGlzdGluZ190ZXN0Zm5fbW9kZSB8IFNfSVNHSUQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0Nhbm5vdCBzZXQgU19JU0dJRCBmb3IgZGlyLicpCiAgICAgICAgICAgICBpZiAob3MubHN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUgJiBTX0lTR0lEICE9IFNfSVNHSUQpOgogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdObyBzdXBwb3J0IGZvciBTX0lTR0lEIGRpciBtb2RlLicpCkBAIC04NDksMTAgKzExMjAsMTIgQEAKIAogICAgIGRlZiB0ZXN0X2ZwYXRoY29uZihzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihvcywgImZwYXRoY29uZiIpOgorICAgICAgICAgICAgc2VsZi5jaGVjayhvcy5wYXRoY29uZiwgIlBDX05BTUVfTUFYIikKICAgICAgICAgICAgIHNlbGYuY2hlY2sob3MuZnBhdGhjb25mLCAiUENfTkFNRV9NQVgiKQogCiAgICAgZGVmIHRlc3RfZnRydW5jYXRlKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKG9zLCAiZnRydW5jYXRlIik6CisgICAgICAgICAgICBzZWxmLmNoZWNrKG9zLnRydW5jYXRlLCAwKQogICAgICAgICAgICAgc2VsZi5jaGVjayhvcy5mdHJ1bmNhdGUsIDApCiAKICAgICBkZWYgdGVzdF9sc2VlayhzZWxmKToKQEAgLTg4Niw3ICsxMTU5LDkgQEAKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGYxOgogICAgICAgICAgICAgZjEud3JpdGUoInRlc3QiKQogCi0gICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQogICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJyIikgYXMgZjEsIG9wZW4oZmlsZTIsICJyIikgYXMgZjI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lb3BlbmZpbGUoZjEuZmlsZW5vKCksIGYyLmZpbGVubygpKSkKIApAQCAtOTg5LDggKzEyNjQsNyBAQAogICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5kaXIpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZm9yIGZuIGluIGJ5dGVzZm46Ci0gICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKG9zLnBhdGguam9pbihzZWxmLmJkaXIsIGZuKSwgInciKQotICAgICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5iZGlyLCBmbikpCiAgICAgICAgICAgICAgICAgICAgIGZuID0gb3MuZnNkZWNvZGUoZm4pCiAgICAgICAgICAgICAgICAgICAgIGlmIGZuIGluIHNlbGYudW5pY29kZWZuOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRlIGZpbGVuYW1lIikKQEAgLTEwMDYsNiArMTI4MCwxMyBAQAogICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLnVuaWNvZGVmbgogICAgICAgICAgICAgZm91bmQgPSBzZXQob3MubGlzdGRpcihzZWxmLmRpcikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBleHBlY3RlZCkKKyAgICAgICAgICAgICMgdGVzdCBsaXN0ZGlyIHdpdGhvdXQgYXJndW1lbnRzCisgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSA9IG9zLmdldGN3ZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIob3Muc2VwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KG9zLmxpc3RkaXIoKSksIHNldChvcy5saXN0ZGlyKG9zLnNlcCkpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jaGRpcihjdXJyZW50X2RpcmVjdG9yeSkKIAogICAgICAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgogICAgICAgICAgICAgZm9yIGZuIGluIHNlbGYudW5pY29kZWZuOgpAQCAtMTIwOSw4ICsxNDkwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQobGluayksIG9zLnN0YXQobGluaykpCiAKICAgICAgICAgYnl0ZXNfbGluayA9IG9zLmZzZW5jb2RlKGxpbmspCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKIAogICAgIGRlZiB0ZXN0XzEyMDg0KHNlbGYpOgogICAgICAgICBsZXZlbDEgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCkBAIC0xMjY5LDYgKzE1NTIsMjIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNkZWNvZGUoYnl0ZXNmbiksIGZuKQogCiAKKworY2xhc3MgRGV2aWNlRW5jb2RpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYWRfZmQoc2VsZik6CisgICAgICAgICMgUmV0dXJuIE5vbmUgd2hlbiBhbiBmZCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5kZXZpY2VfZW5jb2RpbmcoMTIzNDU2KSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmlzYXR0eSgwKSBhbmQgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvcgorICAgICAgICAgICAgKGhhc2F0dHIobG9jYWxlLCAnbmxfbGFuZ2luZm8nKSBhbmQgaGFzYXR0cihsb2NhbGUsICdDT0RFU0VUJykpKSwKKyAgICAgICAgICAgICd0ZXN0IHJlcXVpcmVzIGEgdHR5IGFuZCBlaXRoZXIgV2luZG93cyBvciBubF9sYW5naW5mbyhDT0RFU0VUKScpCisgICAgZGVmIHRlc3RfZGV2aWNlX2VuY29kaW5nKHNlbGYpOgorICAgICAgICBlbmNvZGluZyA9IG9zLmRldmljZV9lbmNvZGluZygwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmNvZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpKQorCisKIGNsYXNzIFBpZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHBpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXRwcGlkIikKICAgICBkZWYgdGVzdF9nZXRwcGlkKHNlbGYpOgpAQCAtMTI5MCwxMiArMTU4OSw0NzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4odXNlcl9uYW1lKSwgMCkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHJpb3JpdHknKSBhbmQgaGFzYXR0cihvcywgJ3NldHByaW9yaXR5JyksCisgICAgICAgICAgICAgICAgICAgICAibmVlZHMgb3MuZ2V0cHJpb3JpdHkgYW5kIG9zLnNldHByaW9yaXR5IikKK2NsYXNzIFByb2dyYW1Qcmlvcml0eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3Igb3MuZ2V0cHJpb3JpdHkoKSBhbmQgb3Muc2V0cHJpb3JpdHkoKS4iIiIKKworICAgIGRlZiB0ZXN0X3NldF9nZXRfcHJpb3JpdHkoc2VsZik6CisKKyAgICAgICAgYmFzZSA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCisgICAgICAgIG9zLnNldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCksIGJhc2UgKyAxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCisgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Muc2V0cHJpb3JpdHkob3MuUFJJT19QUk9DRVNTLCBvcy5nZXRwaWQoKSwgYmFzZSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisKK2lmIHRocmVhZGluZyBpcyBub3QgTm9uZToKKyAgICBjbGFzcyBTZW5kZmlsZVRlc3RTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CisKKyAgICAgICAgY2xhc3MgSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgorICAgICAgICAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubikKKyAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlciA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYucHVzaChiIjIyMCByZWFkeVxyXG4iKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3JlYWQoc2VsZik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVjdig0MDk2KQorICAgICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyLmFwcGVuZChkYXRhKQorCisgICAgICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHNlbGYuaW5fYnVmZmVyKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQorICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmJpbmQoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCisgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisKKyAgICAgICAgIyAtLS0gcHVibGljIEFQSQorCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgcnVubmluZyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hY3RpdmUKKworICAgICAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgbm90IHNlbGYucnVubmluZworICAgICAgICAgICAgc2VsZi5fX2ZsYWcgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5zdGFydChzZWxmKQorICAgICAgICAgICAgc2VsZi5fX2ZsYWcud2FpdCgpCisKKyAgICAgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICAgICBhc3NlcnQgc2VsZi5ydW5uaW5nCisgICAgICAgICAgICBzZWxmLl9hY3RpdmUgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5qb2luKCkKKworICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgICAgICMgd2FpdCBmb3IgaGFuZGxlciBjb25uZWN0aW9uIHRvIGJlIGNsb3NlZCwgdGhlbiBzdG9wIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIHdoaWxlIG5vdCBnZXRhdHRyKHNlbGYuaGFuZGxlcl9pbnN0YW5jZSwgImNsb3NlZCIsIEZhbHNlKToKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDAxKQorICAgICAgICAgICAgc2VsZi5zdG9wKCkKKworICAgICAgICAjIC0tLSBpbnRlcm5hbHMKKworICAgICAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fX2ZsYWcuc2V0KCkKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX2FjdGl2ZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcDoKKyAgICAgICAgICAgICAgICBzZWxmLl9hY3RpdmVfbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgICAgICBhc3luY29yZS5sb29wKHRpbWVvdXQ9MC4wMDEsIGNvdW50PTEpCisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2sucmVsZWFzZSgpCisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorCisgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuYWNjZXB0KCkKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlcl9pbnN0YW5jZSA9IHNlbGYuSGFuZGxlcihjb25uKQorCisgICAgICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICBoYW5kbGVfcmVhZCA9IGhhbmRsZV9jb25uZWN0CisKKyAgICAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcgaXMgbm90IE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3NlbmRmaWxlJyksICJ0ZXN0IG5lZWRzIG9zLnNlbmRmaWxlKCkiKQorY2xhc3MgVGVzdFNlbmRmaWxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIERBVEEgPSBiIjEyMzQ1YWJjZGUiICogMTYgKiAxMDI0ICAjIDE2MCBLQgorICAgIFNVUFBPUlRfSEVBREVSU19UUkFJTEVSUyA9IG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgibGludXgiKSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic29sYXJpcyIpIGFuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJzdW5vcyIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyID0gU2VuZGZpbGVUZXN0U2VydmVyKChzdXBwb3J0LkhPU1QsIDApKQorICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCisgICAgICAgIHNlbGYuY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3QoKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpKQorICAgICAgICBzZWxmLmNsaWVudC5zZXR0aW1lb3V0KDEpCisgICAgICAgICMgc3luY2hyb25pemUgYnkgd2FpdGluZyBmb3IgIjIyMCByZWFkeSIgcmVzcG9uc2UKKyAgICAgICAgc2VsZi5jbGllbnQucmVjdigxMDI0KQorICAgICAgICBzZWxmLnNvY2tubyA9IHNlbGYuY2xpZW50LmZpbGVubygpCisgICAgICAgIHNlbGYuZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZmlsZW5vID0gc2VsZi5maWxlLmZpbGVubygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIucnVubmluZzoKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorCisgICAgZGVmIHNlbmRmaWxlX3dyYXBwZXIoc2VsZiwgc29jaywgZmlsZSwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9W10sIHRyYWlsZXJzPVtdKToKKyAgICAgICAgIiIiQSBoaWdoZXIgbGV2ZWwgd3JhcHBlciByZXByZXNlbnRpbmcgaG93IGFuIGFwcGxpY2F0aW9uIGlzCisgICAgICAgIHN1cHBvc2VkIHRvIHVzZSBzZW5kZmlsZSgpLgorICAgICAgICAiIiIKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLlNVUFBPUlRfSEVBREVSU19UUkFJTEVSUzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnNlbmRmaWxlKHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnNlbmRmaWxlKHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FQ09OTlJFU0VUOgorICAgICAgICAgICAgICAgICAgICAjIGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGVsaWYgZXJyLmVycm5vIGluIChlcnJuby5FQUdBSU4sIGVycm5vLkVCVVNZKToKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIHJldHJ5IHNlbmQgZGF0YQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9zZW5kX3dob2xlX2ZpbGUoc2VsZik6CisgICAgICAgICMgbm9ybWFsIHNlbmQKKyAgICAgICAgdG90YWxfc2VudCA9IDAKKyAgICAgICAgb2Zmc2V0ID0gMAorICAgICAgICBuYnl0ZXMgPSA0MDk2CisgICAgICAgIHdoaWxlIHRvdGFsX3NlbnQgPCBsZW4oc2VsZi5EQVRBKToKKyAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbnQgPD0gbmJ5dGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZmZzZXQsIHRvdGFsX3NlbnQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b3RhbF9zZW50LCBsZW4oc2VsZi5EQVRBKSkKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgbGVuKHNlbGYuREFUQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5EQVRBKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hdF9jZXJ0YWluX29mZnNldChzZWxmKToKKyAgICAgICAgIyBzdGFydCBzZW5kaW5nIGEgZmlsZSBhdCBhIGNlcnRhaW4gb2Zmc2V0CisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgIG9mZnNldCA9IGxlbihzZWxmLkRBVEEpIC8vIDIKKyAgICAgICAgbXVzdF9zZW5kID0gbGVuKHNlbGYuREFUQSkgLSBvZmZzZXQKKyAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICB3aGlsZSB0b3RhbF9zZW50IDwgbXVzdF9zZW5kOgorICAgICAgICAgICAgc2VudCA9IHNlbGYuc2VuZGZpbGVfd3JhcHBlcihzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIG9mZnNldCwgbmJ5dGVzKQorICAgICAgICAgICAgaWYgc2VudCA9PSAwOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBvZmZzZXQgKz0gc2VudAorICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VudCA8PSBuYnl0ZXMpCisKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBleHBlY3RlZCA9IHNlbGYuREFUQVtsZW4oc2VsZi5EQVRBKSAvLyAyOl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b3RhbF9zZW50LCBsZW4oZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X29mZnNldF9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBzcGVjaWZ5IGFuIG9mZnNldCA+IGZpbGUgc2l6ZQorICAgICAgICBvZmZzZXQgPSBsZW4oc2VsZi5EQVRBKSArIDQwOTYKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgb2Zmc2V0LCA0MDk2KQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBTb2xhcmlzIGNhbiByYWlzZSBFSU5WQUwgaWYgb2Zmc2V0ID49IGZpbGUgbGVuZ3RoLCBpZ25vcmUuCisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlZBTDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCAwKQorICAgICAgICBzZWxmLmNsaWVudC5zaHV0ZG93bihzb2NrZXQuU0hVVF9SRFdSKQorICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICBkYXRhID0gc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5nZXRfZGF0YSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYicnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9vZmZzZXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIC0xLCA0MDk2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVkFMKQorCisgICAgIyAtLS0gaGVhZGVycyAvIHRyYWlsZXJzIHRlc3RzCisKKyAgICBpZiBTVVBQT1JUX0hFQURFUlNfVFJBSUxFUlM6CisKKyAgICAgICAgZGVmIHRlc3RfaGVhZGVycyhzZWxmKToKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICAgICBzZW50ID0gb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9W2IieCIgKiA1MTJdKQorICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICBvZmZzZXQgPSA0MDk2CisgICAgICAgICAgICBuYnl0ZXMgPSA0MDk2CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgdG90YWxfc2VudCArPSBzZW50CisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKworICAgICAgICAgICAgZXhwZWN0ZWRfZGF0YSA9IGIieCIgKiA1MTIgKyBzZWxmLkRBVEEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKGV4cGVjdGVkX2RhdGEpKQorICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgICAgICBkYXRhID0gc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5nZXRfZGF0YSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZGF0YSksIGhhc2goZXhwZWN0ZWRfZGF0YSkpCisKKyAgICAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CisgICAgICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoYiJhYmNkZSIpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3JiJylhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisgICAgICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIGYuZmlsZW5vKCksIDAsIDQwOTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnM9W2IiMTIzNDUiXSkKKyAgICAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJhYmNkZTEyMzQ1IikKKworICAgICAgICBpZiBoYXNhdHRyKG9zLCAiU0ZfTk9ESVNLSU8iKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1vcy5TRl9OT0RJU0tJTykKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyBub3QgaW4gKGVycm5vLkVCVVNZLCBlcnJuby5FQUdBSU4pOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworCitkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgorICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgorICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCisgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgcmV0dXJuIG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCisgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCitjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CisgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIGluaXRfeGF0dHIgPSBsaXN0eGF0dHIoZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbml0X3hhdHRyLCBsaXN0KQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiIiwgKiprd2FyZ3MpCisgICAgICAgIHhhdHRyID0gc2V0KGluaXRfeGF0dHIpCisgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiIiKQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiaGVsbG8iLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiaGVsbG8iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImJ5ZSIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJmb28iLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQorICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdDIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCisgICAgICAgIHJlbW92ZXhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICBnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKyAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCisgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJhIioxMDI0LCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKSwgYiJhIioxMDI0KQorICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICBtYW55ID0gc29ydGVkKCJ1c2VyLnRlc3R7fSIuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDEwMCkpCisgICAgICAgIGZvciB0aGluZyBpbiBtYW55OgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHRoaW5nLCBiIngiLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHNldChpbml0X3hhdHRyKSB8IHNldChtYW55KSkKKworICAgIGRlZiBfY2hlY2tfeGF0dHJzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGRlZiBtYWtlX2J5dGVzKHMpOgorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKHMsICJhc2NpaSIpCisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIoc3RyLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKG1ha2VfYnl0ZXMsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0eGF0dHIpCisKKyAgICBkZWYgdGVzdF9scGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0eGF0dHIsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2ZkcyhzZWxmKToKKyAgICAgICAgZGVmIGdldHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuZ2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBkZWYgc2V0eGF0dHIocGF0aCwgKmFyZ3MpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgZGVmIHJlbW92ZXhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmV4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCisgICAgICAgIGRlZiBsaXN0eGF0dHIocGF0aCwgKmFyZ3MpOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHJldHVybiBvcy5saXN0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQorY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIGltcG9ydCBudAorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKKyAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCisgICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAorICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCisgICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKKyAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQorY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIGdldF90ZXJtaW5hbF9zaXplKCkgcmV0dXJucyBhIG1lYW5pbmdmdWwgdmFsdWUuCisKKyAgICAgICAgVGhlcmUncyBubyBlYXN5IHBvcnRhYmxlIHdheSB0byBhY3R1YWxseSBjaGVjayB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgICAgdGVybWluYWwsIHNvIGxldCdzIGNoZWNrIGlmIGl0IHJldHVybnMgc29tZXRoaW5nIHNlbnNpYmxlIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IgZS5lcnJubyBpbiAoZXJybm8uRUlOVkFMLCBlcnJuby5FTk9UVFkpOgorICAgICAgICAgICAgICAgICMgVW5kZXIgd2luMzIgYSBnZW5lcmljIE9TRXJyb3IgY2FuIGJlIHRocm93biBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZmFpbGVkIHRvIHF1ZXJ5IHRlcm1pbmFsIHNpemUiKQorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmNvbHVtbnMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUubGluZXMsIDApCisKKyAgICBkZWYgdGVzdF9zdHR5X21hdGNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBzdHR5IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0cworCisgICAgICAgIHN0dHkgYWN0dWFsbHkgdGVzdHMgc3RkaW4sIHNvIGdldF90ZXJtaW5hbF9zaXplIGlzIGludm9rZWQgb24KKyAgICAgICAgc3RkaW4gZXhwbGljaXRseS4gSWYgc3R0eSBzdWNjZWVkZWQsIHRoZW4gZ2V0X3Rlcm1pbmFsX3NpemUoKQorICAgICAgICBzaG91bGQgd29yayB0b28uCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaXplID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzdHR5JywgJ3NpemUnXSkuZGVjb2RlKCkuc3BsaXQoKQorICAgICAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcik6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJzdHR5IGludm9jYXRpb24gZmFpbGVkIikKKyAgICAgICAgZXhwZWN0ZWQgPSAoaW50KHNpemVbMV0pLCBpbnQoc2l6ZVswXSkpICMgcmV2ZXJzZWQgb3JkZXIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhY3R1YWwgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRpbl9fLmZpbGVubygpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIgb3IgZS5lcnJubyBpbiAoZXJybm8uRUlOVkFMLCBlcnJuby5FTk9UVFkpOgorICAgICAgICAgICAgICAgICMgVW5kZXIgd2luMzIgYSBnZW5lcmljIE9TRXJyb3IgY2FuIGJlIHRocm93biBpZiB0aGUKKyAgICAgICAgICAgICAgICAjIGhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZmFpbGVkIHRvIHF1ZXJ5IHRlcm1pbmFsIHNpemUiKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisKK0BzdXBwb3J0LnJlYXBfdGhyZWFkcwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBGaWxlVGVzdHMsCiAgICAgICAgIFN0YXRBdHRyaWJ1dGVUZXN0cywKICAgICAgICAgRW52aXJvblRlc3RzLAogICAgICAgICBXYWxrVGVzdHMsCisgICAgICAgIEZ3YWxrVGVzdHMsCiAgICAgICAgIE1ha2VkaXJUZXN0cywKICAgICAgICAgRGV2TnVsbFRlc3RzLAogICAgICAgICBVUmFuZG9tVGVzdHMsCkBAIC0xMzA3LDkgKzIwNjUsMTUgQEAKICAgICAgICAgV2luMzJLaWxsVGVzdHMsCiAgICAgICAgIFdpbjMyU3ltbGlua1Rlc3RzLAogICAgICAgICBGU0VuY29kaW5nVGVzdHMsCisgICAgICAgIERldmljZUVuY29kaW5nVGVzdHMsCiAgICAgICAgIFBpZFRlc3RzLAogICAgICAgICBMb2dpblRlc3RzLAogICAgICAgICBMaW5rVGVzdHMsCisgICAgICAgIFRlc3RTZW5kZmlsZSwKKyAgICAgICAgUHJvZ3JhbVByaW9yaXR5VGVzdHMsCisgICAgICAgIEV4dGVuZGVkQXR0cmlidXRlVGVzdHMsCisgICAgICAgIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJLAorICAgICAgICBUZXJtc2l6ZVRlc3RzLAogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkgYi9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CmluZGV4IDljYjg5ZDYuLjM5MDhhMDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQpAQCAtMTcwLDYgKzE3MCwyMiBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoZHNwLmNsb3NlZCkKIAorICAgIGRlZiB0ZXN0X29uX2Nsb3NlZChzZWxmKToKKyAgICAgICAgZHNwID0gb3NzYXVkaW9kZXYub3BlbigndycpCisgICAgICAgIGRzcC5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5maWxlbm8pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5yZWFkLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aud3JpdGUsIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC53cml0ZWFsbCwgYid4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5vYnVmY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5vYnVmY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5vYnVmZnJlZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLmdldHB0cikKKworICAgICAgICBtaXhlciA9IG9zc2F1ZGlvZGV2Lm9wZW5taXhlcigpCisgICAgICAgIG1peGVyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWl4ZXIuZmlsZW5vKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CmluZGV4IDhiM2RmMzcuLjI0ZWMyYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKQEAgLTUsNiArNSw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgRW52aXJvbm1lbnRWYXJHdWFyZCwgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIE9TWEVudmlyb25tZW50VmFyaWFibGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yNyw4ICsyOCw2IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX3N5cygnUFlUSE9ORVhFQ1VUQUJMRScsICc9PScsICdzeXMuZXhlY3V0YWJsZScpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCi0KICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9ORVhUX0ZSQU1FV09SSycpOgogICAgICAgICBydW5fdW5pdHRlc3QoT1NYRW52aXJvbm1lbnRWYXJpYWJsZVRlc3RDYXNlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IDcwZWI5YzAuLmM5M2EyY2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC01MSw2ICs1MSwxMCBAQAogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiAoeWllbGQgMSkqMiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHJldHVybjsgeWllbGQgMSIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHlpZWxkIDE7IHJldHVybiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHlpZWxkIGZyb20gMSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHggPSB5aWVsZCBmcm9tIDEiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiBmKCh5aWVsZCBmcm9tIDEpKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6IHlpZWxkIDE7IHJldHVybiAxIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZvciB4IGluIHJhbmdlKDMwKTpcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICB5aWVsZCB4XG4iKQpAQCAtNzE3LDYgKzcyMSwxMiBAQAogCiAgICAgIyBYWFggdGVzdHMgZm9yIHBpY2tsaW5nIGFuZCB1bnBpY2tsaW5nIG9mIFNUIG9iamVjdHMgc2hvdWxkIGdvIGhlcmUKIAorY2xhc3MgT3RoZXJQYXJzZXJDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3R3b19hcmdzX3RvX2V4cHIoc2VsZik6CisgICAgICAgICMgU2VlIGJ1ZyAjMTIyNjQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmV4cHIoImEiLCAiYiIpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKQEAgLTcyNSw2ICs3MzUsNyBAQAogICAgICAgICBDb21waWxlVGVzdENhc2UsCiAgICAgICAgIFBhcnNlclN0YWNrTGltaXRUZXN0Q2FzZSwKICAgICAgICAgU1RPYmplY3RUZXN0Q2FzZSwKKyAgICAgICAgT3RoZXJQYXJzZXJDYXNlLAogICAgICkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BkYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CmluZGV4IGQyOGIwNDIuLjBmN2E5ODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CkBAIC0yMSw5ICsyMSwxMiBAQAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgIHNlbGYucmVhbF9zdGRpbiA9IHN5cy5zdGRpbgogICAgICAgICBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KHNlbGYuaW5wdXQpCisgICAgICAgIHNlbGYub3JpZ190cmFjZSA9IHN5cy5nZXR0cmFjZSgpIGlmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBlbHNlIE5vbmUKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKICAgICAgICAgc3lzLnN0ZGluID0gc2VsZi5yZWFsX3N0ZGluCisgICAgICAgIGlmIHNlbGYub3JpZ190cmFjZToKKyAgICAgICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLm9yaWdfdHJhY2UpCiAKIAogZGVmIHRlc3RfcGRiX2Rpc3BsYXlob29rKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDUzNzE5ZDMuLjFlNzgyY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC0zLDEzICszLDE2IEBACiBpbXBvcnQgc3lzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIG1hdGggaW1wb3J0IGNvcHlzaWduCiAKIGRlZiBkaXNhc3NlbWJsZShmdW5jKToKICAgICBmID0gU3RyaW5nSU8oKQogICAgIHRtcCA9IHN5cy5zdGRvdXQKICAgICBzeXMuc3Rkb3V0ID0gZgotICAgIGRpcy5kaXMoZnVuYykKLSAgICBzeXMuc3Rkb3V0ID0gdG1wCisgICAgdHJ5OgorICAgICAgICBkaXMuZGlzKGZ1bmMpCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLnN0ZG91dCA9IHRtcAogICAgIHJlc3VsdCA9IGYuZ2V0dmFsdWUoKQogICAgIGYuY2xvc2UoKQogICAgIHJldHVybiByZXN1bHQKQEAgLTE3LDYgKzIwLDcgQEAKIGRlZiBkaXNfc2luZ2xlKGxpbmUpOgogICAgIHJldHVybiBkaXNhc3NlbWJsZShjb21waWxlKGxpbmUsICcnLCAnc2luZ2xlJykpCiAKKwogY2xhc3MgVGVzdFRyYW5mb3Jtcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF91bm90KHNlbGYpOgpAQCAtOTksNiArMTAzLDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGFzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JVSUxEX1RVUExFJywgYXNtKQogCisgICAgICAgICMgTG9uZyB0dXBsZXMgc2hvdWxkIGJlIGZvbGRlZCB0b28uCisgICAgICAgIGFzbSA9IGRpc19zaW5nbGUocmVwcih0dXBsZShyYW5nZSgxMDAwMCkpKSkKKyAgICAgICAgIyBPbmUgTE9BRF9DT05TVCBmb3IgdGhlIHR1cGxlLCBvbmUgZm9yIHRoZSBOb25lIHJldHVybiB2YWx1ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzbS5jb3VudCgnTE9BRF9DT05TVCcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKKwogICAgICAgICAjIEJ1ZyAxMDUzODE5OiAgVHVwbGUgb2YgY29uc3RhbnRzIG1pc2lkZW50aWZpZWQgd2hlbiBwcmVzZW50ZWQgd2l0aDoKICAgICAgICAgIyAuIC4gLiBvcGNvZGVfd2l0aF9hcmcgMTAwICAgdW5hcnlfb3Bjb2RlICAgQlVJTERfVFVQTEUgMSAgLiAuIC4KICAgICAgICAgIyBUaGUgZm9sbG93aW5nIHdvdWxkIHNlZ2ZhdWx0IHVwb24gY29tcGlsYXRpb24KQEAgLTIwOCwxNCArMjE4LDEzIEBACiAgICAgICAgICMgb3V0IG9mIHJhbmdlCiAgICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJmdXUiWzEwXScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0gICAgICAgICMgbm9uLUJNUCBjaGFyIChzZWUgIzUwNTcpCi0gICAgICAgIGFzbSA9IGRpc19zaW5nbGUoJyJcVTAwMDEyMzQ1IlswXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JJTkFSWV9TVUJTQ1InLCBhc20pCi0KIAogICAgIGRlZiB0ZXN0X2ZvbGRpbmdfb2ZfdW5hcnlvcHNfb25fY29uc3RhbnRzKHNlbGYpOgogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCiAgICAgICAgICAgICAoJy0wLjUnLCAnKC0wLjUpJyksICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQorICAgICAgICAgICAgKCctMC4wJywgJygtMC4wKScpLCAgICAgICAgICAgICAgICAgICAgICMgLTAuMAorICAgICAgICAgICAgKCctKDEuMC0xLjApJywnKC0wLjApJyksICAgICAgICAgICAgICAgICMgLTAuMCBhZnRlciBmb2xkaW5nCisgICAgICAgICAgICAoJy0wJywgJygwKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyAtMAogICAgICAgICAgICAgKCd+LTInLCAnKDEpJyksICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgaW52ZXJ0CiAgICAgICAgICAgICAoJysxJywgJygxKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeSBwb3NpdGl2ZQogICAgICAgICApOgpAQCAtMjIzLDYgKzIzMiwxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20sIGFzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGFzbSkKIAorICAgICAgICAjIENoZWNrIHRoYXQgLTAuMCB3b3JrcyBhZnRlciBtYXJzaGFsaW5nCisgICAgICAgIGRlZiBuZWd6ZXJvKCk6CisgICAgICAgICAgICByZXR1cm4gLSgxLjAtMS4wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1VOQVJZXycsIGRpc2Fzc2VtYmxlKG5lZ3plcm8pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weXNpZ24oMS4wLCBuZWd6ZXJvKCkpIDwgMCkKKwogICAgICAgICAjIFZlcmlmeSB0aGF0IHVuZm9sZGFibGVzIGFyZSBza2lwcGVkCiAgICAgICAgIGZvciBsaW5lLCBlbGVtIGluICgKICAgICAgICAgICAgICgnLSJhYmMiJywgIignYWJjJykiKSwgICAgICAgICAgICAgICAgICAjIHVuYXJ5IG5lZ2F0aXZlCkBAIC0yODUsNiArMzAxLDI1IEBACiAgICAgICAgIGFzbSA9IGRpc2Fzc2VtYmxlKGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JJTkFSWV9BREQnLCBhc20pCiAKKyAgICBkZWYgdGVzdF9jb25zdGFudF9mb2xkaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMTI0NDogYWdncmVzc2l2ZSBjb25zdGFudCBmb2xkaW5nLgorICAgICAgICBleHBycyA9IFsKKyAgICAgICAgICAgICIzICogLTUiLAorICAgICAgICAgICAgIi0zICogNSIsCisgICAgICAgICAgICAiMiAqICgzICogNCkiLAorICAgICAgICAgICAgIigyICogMykgKiA0IiwKKyAgICAgICAgICAgICIoLTEsIDIsIDMpIiwKKyAgICAgICAgICAgICIoMSwgLTIsIDMpIiwKKyAgICAgICAgICAgICIoMSwgMiwgLTMpIiwKKyAgICAgICAgICAgICIoMSwgMiwgLTMpICogNiIsCisgICAgICAgICAgICAibGFtYmRhIHg6IHggaW4geygzICogLTUpICsgKC0xIC0gNiksICgxLCAtMiwgMykgKiAyLCBOb25lfSIsCisgICAgICAgIF0KKyAgICAgICAgZm9yIGUgaW4gZXhwcnM6CisgICAgICAgICAgICBhc20gPSBkaXNfc2luZ2xlKGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20sIGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfJywgYXNtLCBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfJywgYXNtLCBlKQorCiBjbGFzcyBUZXN0QnVnbGV0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9idWdfMTE1MTAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CmluZGV4IDZkODkxZTUuLjRiMTZjYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CkBAIC0xLDYgKzEsOSBAQAogIyBUZXN0IHRoZSBVbmljb2RlIHZlcnNpb25zIG9mIG5vcm1hbCBmaWxlIGZ1bmN0aW9ucwogIyBvcGVuLCBvcy5vcGVuLCBvcy5zdGF0LiBvcy5saXN0ZGlyLCBvcy5yZW5hbWUsIG9zLnJlbW92ZSwgb3MubWtkaXIsIG9zLmNoZGlyLCBvcy5ybWRpcgotaW1wb3J0IHN5cywgb3MsIHVuaXR0ZXN0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCBub3JtYWxpemUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0zOCw4ICs0MSw4IEBACiAgICAgICAgICcxN19cdTIwMDFcdTIwMDFcdTIwMDFBJywKICAgICAgICAgJzE4X1x1MjAwM1x1MjAwM1x1MjAwM0EnLCAgIyA9PSBORkMoJ1x1MjAwMVx1MjAwMVx1MjAwMUEnKQogICAgICAgICAnMTlfXHUwMDIwXHUwMDIwXHUwMDIwQScsICAjICdcdTAwMjAnID09ICcgJyA9PSBORktDKCdcdTIwMDAnKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBORktDKCdcdTIwMDEnKSA9PSBORktDKCdcdTIwMDMnKQotXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgTkZLQygnXHUyMDAxJykgPT0gTkZLQygnXHUyMDAzJykKKyAgICBdKQogCiAKICMgSXMgaXQgVW5pY29kZS1mcmllbmRseT8KQEAgLTcxLDcgKzc0LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmlsZXMgPSBzZXQoKQogICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmZpbGVzOgpAQCAtOTAsMTUgKzkzLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKHNlbGYubm9ybWFsX2Zvcm0sIHMpCiAgICAgICAgIHJldHVybiBzCiAKLSAgICBkZWYgX2FwcGx5X2ZhaWx1cmUoc2VsZiwgZm4sIGZpbGVuYW1lLCBleHBlY3RlZF9leGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZuX2luX2V4Y2VwdGlvbiA9IFRydWUpOgorICAgIGRlZiBfYXBwbHlfZmFpbHVyZShzZWxmLCBmbiwgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2V4Y2VwdGlvbj1GaWxlTm90Rm91bmRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfZmlsZW5hbWU9VHJ1ZSk6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXhwZWN0ZWRfZXhjZXB0aW9uKSBhcyBjOgogICAgICAgICAgICAgZm4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y19maWxlbmFtZSA9IGMuZXhjZXB0aW9uLmZpbGVuYW1lCi0gICAgICAgICMgdGhlICJmaWxlbmFtZSIgZXhjZXB0aW9uIGF0dHJpYnV0ZSBtYXkgYmUgZW5jb2RlZAotICAgICAgICBpZiBpc2luc3RhbmNlKGV4Y19maWxlbmFtZSwgYnl0ZXMpOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQotICAgICAgICBpZiBjaGVja19mbl9pbl9leGNlcHRpb246CisgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lCisgICAgICAgIGlmIGZuIGlzIG9zLmxpc3RkaXIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZXhjX2ZpbGVuYW1lLCBfLCB3aWxkY2FyZCA9IGV4Y19maWxlbmFtZS5ycGFydGl0aW9uKG9zLnNlcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lsZGNhcmQsICcqLionKQorICAgICAgICBpZiBjaGVja19maWxlbmFtZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2ZpbGVuYW1lLCBmaWxlbmFtZSwgIkZ1bmN0aW9uICclcyglYSkgZmFpbGVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggYmFkIGZpbGVuYW1lIGluIHRoZSBleGNlcHRpb246ICVhIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbi5fX25hbWVfXywgZmlsZW5hbWUsIGV4Y19maWxlbmFtZSkpCkBAIC0xMDcsMTMgKzExMiwxOCBAQAogICAgICAgICAjIFBhc3Mgbm9uLWV4aXN0aW5nIFVuaWNvZGUgZmlsZW5hbWVzIGFsbCBvdmVyIHRoZSBwbGFjZS4KICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKICAgICAgICAgICAgIG5hbWUgPSAibm90XyIgKyBuYW1lCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUsIElPRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUsIHNvIGRvbnQgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgT1NFcnJvciwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICMgV2luZG93cyBpcyBsdW5hdGljLiBJc3N1ZSAjMTMzNjYuCisgICAgICAgIF9saXN0ZGlyX2ZhaWx1cmUgPSBOb3RBRGlyZWN0b3J5RXJyb3IsIEZpbGVOb3RGb3VuZEVycm9yCisgICAgZWxzZToKKyAgICAgICAgX2xpc3RkaXJfZmFpbHVyZSA9IE5vdEFEaXJlY3RvcnlFcnJvcgogCiAgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKQEAgLTEyMSwxMiArMTMxLDEzIEBACiAgICAgICAgICAgICBmLndyaXRlKChuYW1lKydcbicpLmVuY29kZSgidXRmLTgiKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgb3Muc3RhdChuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lLCBzZWxmLl9saXN0ZGlyX2ZhaWx1cmUpCiAKICAgICAjIFNraXAgdGhlIHRlc3Qgb24gZGFyd2luLCBiZWNhdXNlIGRhcndpbiBkb2VzIG5vcm1hbGl6ZSB0aGUgZmlsZW5hbWUgdG8KICAgICAjIE5GRCAoYSB2YXJpYW50IG9mIFVuaWNvZGUgTkZEIGZvcm0pLiBOb3JtYWxpemUgdGhlIGZpbGVuYW1lIHRvIE5GQywgTkZLQywKICAgICAjIE5GS0QgaW4gUHl0aG9uIGlzIHVzZWxlc3MsIGJlY2F1c2UgZGFyd2luIHdpbGwgbm9ybWFsaXplIGl0IGxhdGVyIGFuZCBzbwogICAgICMgb3BlbigpLCBvcy5zdGF0KCksIGV0Yy4gZG9uJ3QgcmFpc2UgYW55IGV4Y2VwdGlvbi4KLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmV2ZWxhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJlbGV2YW50IHRlc3Qgb24gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X25vcm1hbGl6ZShzZWxmKToKICAgICAgICAgZmlsZXMgPSBzZXQoc2VsZi5maWxlcykKICAgICAgICAgb3RoZXJzID0gc2V0KCkKQEAgLTEzNCwyMSArMTQ1LDIyIEBACiAgICAgICAgICAgICBvdGhlcnMgfD0gc2V0KG5vcm1hbGl6ZShuZiwgZmlsZSkgZm9yIGZpbGUgaW4gZmlsZXMpCiAgICAgICAgIG90aGVycyAtPSBmaWxlcwogICAgICAgICBmb3IgbmFtZSBpbiBvdGhlcnM6Ci0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUsIElPRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgIyBsaXN0ZGlyIG1heSBhcHBlbmQgYSB3aWxkY2FyZCB0byB0aGUgZmlsZW5hbWUsIHNvIGRvbnQgY2hlY2sKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgT1NFcnJvciwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9wZW4sIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnN0YXQsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmNoZGlyLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5ybWRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MucmVtb3ZlLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5saXN0ZGlyLCBuYW1lKQogCiAgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIGRhcndpbiwgYmVjYXVzZSBkYXJ3aW4gdXNlcyBhIG5vcm1hbGl6YXRpb24gZGlmZmVyZW50CiAgICAgIyB0aGFuIFB5dGhvbiBORkQgbm9ybWFsaXphdGlvbjogZmlsZW5hbWVzIGFyZSBkaWZmZXJlbnQgZXZlbiBpZiB3ZSB1c2UKICAgICAjIFB5dGhvbiBORkQgbm9ybWFsaXphdGlvbi4KLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ2lycmV2ZWxhbnQgdGVzdCBvbiBNYWMgT1MgWCcpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJlbGV2YW50IHRlc3Qgb24gTWFjIE9TIFgnKQogICAgIGRlZiB0ZXN0X2xpc3RkaXIoc2VsZik6CiAgICAgICAgIHNmMCA9IHNldChzZWxmLmZpbGVzKQotICAgICAgICBmMSA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4uZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgZjEgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQogICAgICAgICBmMiA9IG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNmMiA9IHNldChvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sIGYpIGZvciBmIGluIGYyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNmMCwgc2YyLCAiJWEgIT0gJWEiICUgKHNmMCwgc2YyKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKaW5kZXggMTE5YzdlYS4uNmRhOGQyZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKQEAgLTQyLDE5ICs0Miw2IEBACiAgICAgICAgIHMgPSBUZW1wbGF0ZSgnJHdobyBsaWtlcyAkJCcpCiAgICAgICAgIGVxKHMuc3Vic3RpdHV0ZShkaWN0KHdobz0ndGltJywgd2hhdD0naGFtJykpLCAndGltIGxpa2VzICQnKQogCi0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgY2xhc3MgTXlQYXR0ZXJuKFRlbXBsYXRlKToKLSAgICAgICAgICAgIHBhdHRlcm4gPSByIiIiCi0gICAgICAgICAgICAoPzoKLSAgICAgICAgICAgICg/UDxpbnZhbGlkPikgICAgICAgICAgICB8Ci0gICAgICAgICAgICAoP1A8ZXNjYXBlZD4lKGRlbGltKXMpICAgfAotICAgICAgICAgICAgQCg/UDxuYW1lZD4lKGlkKXMpICAgICAgIHwKLSAgICAgICAgICAgIEB7KD9QPGJyYWNlZD4lKGlkKXMpfSAgICAKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgICIiIgotICAgICAgICBzID0gTXlQYXR0ZXJuKCckJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy5zdWJzdGl0dXRlLCBkaWN0KCkpIAotCiAgICAgZGVmIHRlc3RfcGVyY2VudHMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gVGVtcGxhdGUoJyUoZm9vKXMgJGZvbyAke2Zvb30nKQpAQCAtMTcyLDYgKzE1OSwyNiBAQAogICAgICAgICB2YWwgPSB0LnNhZmVfc3Vic3RpdHV0ZSh7J2xvY2F0aW9uJzogJ0NsZXZlbGFuZCd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbCwgJ1B5Q29uIGluIENsZXZlbGFuZCcpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3dpdGhfbm9fbGluZXMoc2VsZik6CisgICAgICAgICMgVGhlIGVycm9yIGZvcm1hdHRpbmcgZm9yIGludmFsaWQgdGVtcGxhdGVzCisgICAgICAgICMgaGFzIGEgc3BlY2lhbCBjYXNlIGZvciBubyBkYXRhIHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgICAgIyBwYXR0ZXJuIGNhbid0IHRyaWdnZXIgKGFsd2F5cyBoYXMgYXQgbGVhc3QgJyQnKQorICAgICAgICAjIFNvIHdlIGNyYWZ0IGEgcGF0dGVybiB0aGF0IGlzIGFsd2F5cyBpbnZhbGlkCisgICAgICAgICMgd2l0aCBubyBsZWFkaW5nIGRhdGEuCisgICAgICAgIGNsYXNzIE15VGVtcGxhdGUoVGVtcGxhdGUpOgorICAgICAgICAgICAgcGF0dGVybiA9IHIiIiIKKyAgICAgICAgICAgICAgKD9QPGludmFsaWQ+KSB8CisgICAgICAgICAgICAgIHVucmVhY2hhYmxlKAorICAgICAgICAgICAgICAgICg/UDxuYW1lZD4pICAgfAorICAgICAgICAgICAgICAgICg/UDxicmFjZWQ+KSAgfAorICAgICAgICAgICAgICAgICg/UDxlc2NhcGVkPikKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIiIiCisgICAgICAgIHMgPSBNeVRlbXBsYXRlKCcnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIHMuc3Vic3RpdHV0ZSh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGluZSAxLCBjb2wgMScsIHN0cihlcnIuZXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfdmFsdWVzKHNlbGYpOgogICAgICAgICBzID0gVGVtcGxhdGUoJyR3aG8gbGlrZXMgJHdoYXQnKQogICAgICAgICBkID0gZGljdCh3aG89J3RceGZmbScsIHdoYXQ9J2ZceGZlXGZlZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKaW5kZXggZGYwZjY0ZC4uMmU2YjkwYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQpAQCAtMTcsMTIgKzE3LDcgQEAKIAogICAgIGRlZiB0ZXN0X25vbl9ibXBfbm9ybWFsaXplZChzZWxmKToKICAgICAgICAg8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoiA9IDEKLSAgICAgICAgIyBPbiB3aWRlIGJ1aWxkcywgdGhpcyBpcyBub3JtYWxpemVkLCBidXQgb24gbmFycm93IG9uZXMgaXQgaXMgbm90LiBTZWUKLSAgICAgICAgIyAjMTI3NDYuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIiLCBkaXIoKSkKLSAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuY2FzZS5fRXhwZWN0ZWRGYWlsdXJlKHN5cy5leGNfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJVbmljb2RlIiwgZGlyKCkpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc5MmMxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpAQCAtMCwwICsxLDIxMSBAQAoraW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGVycm5vCitmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2NsYXNzIFN1Yk9TRXJyb3IoT1NFcnJvcik6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yV2l0aEluaXQoT1NFcnJvcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGJhcik6CisgICAgICAgIHNlbGYuYmFyID0gYmFyCisgICAgICAgIHN1cGVyKCkuX19pbml0X18obWVzc2FnZSkKKworY2xhc3MgU3ViT1NFcnJvcldpdGhOZXcoT1NFcnJvcik6CisgICAgZGVmIF9fbmV3X18oY2xzLCBtZXNzYWdlLCBiYXopOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5iYXogPSBiYXoKKyAgICAgICAgcmV0dXJuIHNlbGYKKworY2xhc3MgU3ViT1NFcnJvckNvbWJpbmVkSW5pdEZpcnN0KFN1Yk9TRXJyb3JXaXRoSW5pdCwgU3ViT1NFcnJvcldpdGhOZXcpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvckNvbWJpbmVkTmV3Rmlyc3QoU3ViT1NFcnJvcldpdGhOZXcsIFN1Yk9TRXJyb3JXaXRoSW5pdCk6CisgICAgcGFzcworCitjbGFzcyBTdWJPU0Vycm9yV2l0aFN0YW5kYWxvbmVJbml0KE9TRXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEhpZXJhcmNoeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT1NFcnJvci5fX25hbWVfXywgJ09TRXJyb3InKQorICAgICAgICBzZWxmLmFzc2VydElzKElPRXJyb3IsIE9TRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3NvY2tldF9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LmVycm9yLCBJT0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC5nYWllcnJvci5fX2Jhc2VfXywgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQuaGVycm9yLl9fYmFzZV9fLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC50aW1lb3V0Ll9fYmFzZV9fLCBPU0Vycm9yKQorCisgICAgZGVmIHRlc3Rfc2VsZWN0X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGVjdC5lcnJvciwgT1NFcnJvcikKKworICAgICMgbW1hcC5lcnJvciBpcyB0ZXN0ZWQgaW4gdGVzdF9tbWFwCisKKyAgICBfcGVwX21hcCA9ICIiIgorICAgICAgICArLS0gQmxvY2tpbmdJT0Vycm9yICAgICAgICBFQUdBSU4sIEVBTFJFQURZLCBFV09VTERCTE9DSywgRUlOUFJPR1JFU1MKKyAgICAgICAgKy0tIENoaWxkUHJvY2Vzc0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNISUxECisgICAgICAgICstLSBDb25uZWN0aW9uRXJyb3IKKyAgICAgICAgICAgICstLSBCcm9rZW5QaXBlRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUElQRSwgRVNIVVRET1dOCisgICAgICAgICAgICArLS0gQ29ubmVjdGlvbkFib3J0ZWRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDT05OQUJPUlRFRAorICAgICAgICAgICAgKy0tIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTlJFRlVTRUQKKyAgICAgICAgICAgICstLSBDb25uZWN0aW9uUmVzZXRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTlJFU0VUCisgICAgICAgICstLSBGaWxlRXhpc3RzRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVFWElTVAorICAgICAgICArLS0gRmlsZU5vdEZvdW5kRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTk9FTlQKKyAgICAgICAgKy0tIEludGVycnVwdGVkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJTlRSCisgICAgICAgICstLSBJc0FEaXJlY3RvcnlFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJU0RJUgorICAgICAgICArLS0gTm90QURpcmVjdG9yeUVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOT1RESVIKKyAgICAgICAgKy0tIFBlcm1pc3Npb25FcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQUNDRVMsIEVQRVJNCisgICAgICAgICstLSBQcm9jZXNzTG9va3VwRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU1JDSAorICAgICAgICArLS0gVGltZW91dEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVElNRURPVVQKKyAgICAiIiIKKyAgICBkZWYgX21ha2VfbWFwKHMpOgorICAgICAgICBfbWFwID0ge30KKyAgICAgICAgZm9yIGxpbmUgaW4gcy5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgnKy0gJykKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBleGNuYW1lLCBfLCBlcnJuYW1lcyA9IGxpbmUucGFydGl0aW9uKCcgJykKKyAgICAgICAgICAgIGZvciBlcnJuYW1lIGluIGZpbHRlcihOb25lLCBlcnJuYW1lcy5zdHJpcCgpLnNwbGl0KCcsICcpKToKKyAgICAgICAgICAgICAgICBfbWFwW2dldGF0dHIoZXJybm8sIGVycm5hbWUpXSA9IGdldGF0dHIoYnVpbHRpbnMsIGV4Y25hbWUpCisgICAgICAgIHJldHVybiBfbWFwCisgICAgX21hcCA9IF9tYWtlX21hcChfcGVwX21hcCkKKworICAgIGRlZiB0ZXN0X2Vycm5vX21hcHBpbmcoc2VsZik6CisgICAgICAgICMgVGhlIE9TRXJyb3IgY29uc3RydWN0b3IgbWFwcyBlcnJub3MgdG8gc3ViY2xhc3NlcworICAgICAgICAjIEEgc2FtcGxlIHRlc3QgZm9yIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGUgPSBPU0Vycm9yKEVFWElTVCwgIkJhZCBmaWxlIGRlc2NyaXB0b3IiKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIEZpbGVFeGlzdHNFcnJvcikKKyAgICAgICAgIyBFeGhhdXN0aXZlIHRlc3RpbmcKKyAgICAgICAgZm9yIGVycmNvZGUsIGV4YyBpbiBzZWxmLl9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgIGUgPSBPU0Vycm9yKGVycmNvZGUsICJTb21lIG1lc3NhZ2UiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBleGMpCisgICAgICAgIG90aGVyY29kZXMgPSBzZXQoZXJybm8uZXJyb3Jjb2RlKSAtIHNldChzZWxmLl9tYXApCisgICAgICAgIGZvciBlcnJjb2RlIGluIG90aGVyY29kZXM6CisgICAgICAgICAgICBlID0gT1NFcnJvcihlcnJjb2RlLCAiU29tZSBtZXNzYWdlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3RyeV9leGNlcHQoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gInNvbWVfaG9wZWZ1bGx5X25vbl9leGlzdGluZ19maWxlIgorCisgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCB0cnkgLi4gZXhjZXB0IGNoZWNrcyB0aGUgY29uY3JldGUgZXhjZXB0aW9uCisgICAgICAgICMgKEZpbGVOb3RGb3VuZEVycm9yKSBhbmQgbm90IHRoZSBiYXNlIHR5cGUgc3BlY2lmaWVkIHdoZW4KKyAgICAgICAgIyBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Qgd2FzIGNhbGxlZC4KKyAgICAgICAgIyAoaXQgaXMgdGhlcmVmb3JlIGRlbGliZXJhdGUgdGhhdCBpdCBkb2Vzbid0IHVzZSBhc3NlcnRSYWlzZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9wZW4oZmlsZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIGEgRmlsZU5vdEZvdW5kRXJyb3IiKQorCisgICAgICAgICMgQW5vdGhlciB0ZXN0IGZvciBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIGEgRmlsZU5vdEZvdW5kRXJyb3IiKQorCisKK2NsYXNzIEF0dHJpYnV0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dpbmRvd3NfZXJyb3Ioc2VsZik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3dpbmVycm9yJywgZGlyKE9TRXJyb3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2luZXJyb3InLCBkaXIoT1NFcnJvcikpCisKKyAgICBkZWYgdGVzdF9wb3NpeF9lcnJvcihzZWxmKToKKyAgICAgICAgZSA9IE9TRXJyb3IoRUVYSVNULCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIsICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm5vLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCBFRVhJU1QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5zdHJlcnJvciwgIkZpbGUgYWxyZWFkeSBleGlzdHMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmlsZW5hbWUsICJmb28udHh0IikKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCBOb25lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cy1zcGVjaWZpYyB0ZXN0IikKKyAgICBkZWYgdGVzdF9lcnJub190cmFuc2xhdGlvbihzZWxmKToKKyAgICAgICAgIyBFUlJPUl9BTFJFQURZX0VYSVNUUyAoMTgzKSAtPiBFRVhJU1QKKyAgICAgICAgZSA9IE9TRXJyb3IoMCwgIkZpbGUgYWxyZWFkeSBleGlzdHMiLCAiZm9vLnR4dCIsIDE4MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCAxODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuc3RyZXJyb3IsICJGaWxlIGFscmVhZHkgZXhpc3RzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiZm9vLnR4dCIpCisKKyAgICBkZWYgdGVzdF9ibG9ja2luZ2lvZXJyb3Ioc2VsZik6CisgICAgICAgIGFyZ3MgPSAoImEiLCAiYiIsICJjIiwgImQiLCAiZSIpCisgICAgICAgIGZvciBuIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgZSA9IEJsb2NraW5nSU9FcnJvcigqYXJnc1s6bl0pCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBlLmNoYXJhY3RlcnNfd3JpdHRlbgorICAgICAgICBlID0gQmxvY2tpbmdJT0Vycm9yKCJhIiwgImIiLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuY2hhcmFjdGVyc193cml0dGVuLCAzKQorICAgICAgICBlLmNoYXJhY3RlcnNfd3JpdHRlbiA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmNoYXJhY3RlcnNfd3JpdHRlbiwgNSkKKworICAgICMgWFhYIFZNU0Vycm9yIG5vdCB0ZXN0ZWQKKworCitjbGFzcyBFeHBsaWNpdFN1YmNsYXNzaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9lcnJub19tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIFdoZW4gY29uc3RydWN0aW5nIGFuIE9TRXJyb3Igc3ViY2xhc3MsIGVycm5vIG1hcHBpbmcgaXNuJ3QgZG9uZQorICAgICAgICBlID0gU3ViT1NFcnJvcihFRVhJU1QsICJCYWQgZmlsZSBkZXNjcmlwdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdWJPU0Vycm9yKQorCisgICAgZGVmIHRlc3RfaW5pdF9vdmVycmlkZW4oc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aEluaXQoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9rd2RhcmdzKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhJbml0KCJzb21lIG1lc3NhZ2UiLCBiYXI9ImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisKKyAgICBkZWYgdGVzdF9uZXdfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhOZXcoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfbmV3X2t3ZGFyZ3Moc2VsZik6CisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aE5ldygic29tZSBtZXNzYWdlIiwgYmF6PSJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9uZXdfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvckNvbWJpbmVkSW5pdEZpcnN0KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXosICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgKCJzb21lIG1lc3NhZ2UiLCkpCisgICAgICAgIGUgPSBTdWJPU0Vycm9yQ29tYmluZWROZXdGaXJzdCgic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdGFuZGFsb25lKHNlbGYpOgorICAgICAgICAjIF9faW5pdF9fIGRvZXNuJ3QgcHJvcGFnYXRlIHRvIE9TRXJyb3IuX19pbml0X18gKHNlZSBpc3N1ZSAjMTUyMjkpCisgICAgICAgIGUgPSBTdWJPU0Vycm9yV2l0aFN0YW5kYWxvbmVJbml0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJycpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorCitpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTY5ZTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKQEAgLTAsMCArMSw5NjUgQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisKKyIiIgorVGVzdCBzdWl0ZSBmb3IgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbgorCithZGFwdGVkIGZyb20gb3JpZ2luYWwgdGVzdHMgd3JpdHRlbiBieSBHcmVnIEV3aW5nCitzZWUgPGh0dHA6Ly93d3cuY29zYy5jYW50ZXJidXJ5LmFjLm56L2dyZWcuZXdpbmcvcHl0aG9uL3lpZWxkLWZyb20vWWllbGRGcm9tLVB5dGhvbjMuMS4yLXJldjUuemlwPgorIiIiCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGlvCitpbXBvcnQgc3lzCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHBhcnNlcgorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCisKK2NsYXNzIFRlc3RQRVAzODBPcGVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3Qgc2VtYW50aWNzLgorICAgICIiIgorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9pbml0aWFsX25leHRfdG9fc3ViZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIGluaXRpYWwgbmV4dCgpIGNhbGwgdG8gc3ViZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDQyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX2V4Y2VwdGlvbl9pbl9pbml0aWFsX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmFpc2luZyBleGNlcHRpb24gaW4gaW5pdGlhbCBuZXh0KCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzcGFuaXNoIGlucXVpc2l0aW9uIG9jY3VycmVkIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJzcGFuaXNoIGlucXVpc2l0aW9uIG9jY3VycmVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX25leHRfY2FsbF90b19zdWJnZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgbmV4dCgpIGNhbGwgdG8gc3ViZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfZXhjZXB0aW9uX2luX2RlbGVnYXRlZF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJhaXNpbmcgZXhjZXB0aW9uIGluIGRlbGVnYXRlZCBuZXh0KCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX3NlbmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2Ygc2VuZCgpCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIHkgPSBuZXh0KGcpCisgICAgICAgIHggPSAxCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgeSA9IGcuc2VuZCh4KQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeSwpKQorICAgICAgICAgICAgICAgIHggKz0gMQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiZzEgcmVjZWl2ZWQgNCIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2hhbmRsaW5nX2V4Y2VwdGlvbl93aGlsZV9kZWxlZ2F0aW5nX3NlbmQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGhhbmRsaW5nIGV4Y2VwdGlvbiB3aGlsZSBkZWxlZ2F0aW5nICdzZW5kJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhvdmVyY3JhZnQgaXMgZnVsbCBvZiBlZWxzIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgeSA9IG5leHQoZykKKyAgICAgICAgICAgIHggPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICAgICAgeSA9IGcuc2VuZCh4KQorICAgICAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHksKSkKKyAgICAgICAgICAgICAgICAgICAgeCArPSAxCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0b3BJdGVyYXRpb24iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLHJ1bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgImcyIHJlY2VpdmVkIDIiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ19jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGluZyAnY2xvc2UnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBnID0gZzEoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9oYW5kaW5nX2V4Y2VwdGlvbl93aGlsZV9kZWxlZ2F0aW5nX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBoYW5kbGluZyBleGNlcHRpb24gd2hpbGUgZGVsZWdhdGluZyAnY2xvc2UnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm55YmJsZXMgaGF2ZSBleHBsb2RlZCB3aXRoIGRlbGlnaHQiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnID0gZzEoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGcuY2xvc2UoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJueWJibGVzIGhhdmUgZXhwbG9kZWQgd2l0aCBkZWxpZ2h0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLl9fY29udGV4dF9fLCBHZW5lcmF0b3JFeGl0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfdGhyb3coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpbmcgJ3Rocm93JworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBlID0gVmFsdWVFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICAgICAgZy50aHJvdyhlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfdmFsdWVfYXR0cmlidXRlX29mX1N0b3BJdGVyYXRpb25fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCAndmFsdWUnIGF0dHJpYnV0ZSBvZiBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgcGV4KGUpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCIlczogJXMiICUgKGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgidmFsdWUgPSAlcyIgJSAoZS52YWx1ZSwpKQorICAgICAgICBlID0gU3RvcEl0ZXJhdGlvbigpCisgICAgICAgIHBleChlKQorICAgICAgICBlID0gU3RvcEl0ZXJhdGlvbigic3BhbSIpCisgICAgICAgIHBleChlKQorICAgICAgICBlLnZhbHVlID0gImVnZ3MiCisgICAgICAgIHBleChlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiAiLAorICAgICAgICAgICAgInZhbHVlID0gTm9uZSIsCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogc3BhbSIsCisgICAgICAgICAgICAidmFsdWUgPSBzcGFtIiwKKyAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uOiBzcGFtIiwKKyAgICAgICAgICAgICJ2YWx1ZSA9IGVnZ3MiLAorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25fdmFsdWVfY3Jhc2goc2VsZik6CisgICAgICAgICMgVGhlcmUgdXNlZCB0byBiZSBhIHJlZmNvdW50IGVycm9yIHdoZW4gdGhlIHJldHVybiB2YWx1ZQorICAgICAgICAjIHN0b3JlZCBpbiB0aGUgU3RvcEl0ZXJhdGlvbiBoYXMgYSByZWZjb3VudCBvZiAxLgorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHlpZWxkICJnMiIKKyAgICAgICAgICAgIHJldHVybiBbNDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnMSgpKSwgWyJnMiJdKQorCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3JfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBnZW5lcmF0b3IgcmV0dXJuIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIoNDIpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIodiA9IE5vbmUpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgICAgICBpZiB2OgorICAgICAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCBOb25lIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCA0MiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9uZXh0X3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgbmV4dCgpIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgZm9yIHggaW4gZygpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIllpZWxkZWQgMCIsCisgICAgICAgICAgICAiWWllbGRlZCAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDIiLAorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9uX29mX3NlbmROb25lX3RvX25leHQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbnZlcnNpb24gb2Ygc2VuZChOb25lKSB0byBuZXh0KCkKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICB5ID0gZ2kuc2VuZChOb25lKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJZaWVsZGVkOiAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiAyIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfY2xvc2VfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBjbG9zZSgpIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmaW5pc2hpbmcgZyIpCisgICAgICAgIGdpID0gZygpCisgICAgICAgIG5leHQoZ2kpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZ2kuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAic3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiZmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ190aHJvd190b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW5nICd0aHJvdycgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgxMCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICB4ID0gbmV4dChnaSkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIGUgPSBWYWx1ZUVycm9yKCJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgICAgICBnaS50aHJvdyhlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiWWllbGRlZCAwIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDEiLAorICAgICAgICAgICAgIllpZWxkZWQgMiIsCisgICAgICAgICAgICAiWWllbGRlZCAzIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDQiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2F0dGVtcHRpbmdfdG9fc2VuZF90b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBhdHRlbXB0aW5nIHRvIHNlbmQgdG8gbm9uLWdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgic3RhcnRpbmcgZyIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSByYW5nZSgzKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImZpbmlzaGluZyBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgzKToKKyAgICAgICAgICAgICAgICB5ID0gZ2kuc2VuZCg0MikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlNob3VsZCBub3QgaGF2ZSB5aWVsZGVkOiIsIHkpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2VuZCIsIGUuYXJnc1swXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgid2FzIGFibGUgdG8gc2VuZCBpbnRvIG5vbi1nZW5lcmF0b3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJzdGFydGluZyBnIiwKKyAgICAgICAgICAgICJmaW5pc2hpbmcgZyIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9icm9rZW5fZ2V0YXR0cl9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc3ViaXRlcmF0b3Igd2l0aCBhIGJyb2tlbiBnZXRhdHRyIGltcGxlbWVudGF0aW9uCisgICAgICAgICIiIgorICAgICAgICBjbGFzcyBCcm9rZW46CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIEJyb2tlbigpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLnNlbmQoMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZ2kpLCAxKQorICAgICAgICAgICAgZ2kudGhyb3coQXR0cmlidXRlRXJyb3IpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBvdXRwdXQ6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignWmVyb0RpdmlzaW9uRXJyb3InLCBvdXRwdXQuZ2V0dmFsdWUoKSkKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9pbl9pbml0aWFsX25leHRfY2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZXhjZXB0aW9uIGluIGluaXRpYWwgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIGFib3V0IHRvIHlpZWxkIGZyb20gZzIiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgeWllbGQgMS8wCisgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdpID0gZzEoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IscnVuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJnMSBhYm91dCB0byB5aWVsZCBmcm9tIGcyIgorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYXR0ZW1wdGVkX3lpZWxkX2Zyb21fbG9vcChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgYXR0ZW1wdGVkIHlpZWxkLWZyb20gbG9vcAorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzE6IHN0YXJ0aW5nIikKKyAgICAgICAgICAgIHlpZWxkICJ5MSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzE6IGFib3V0IHRvIHlpZWxkIGZyb20gZzIiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHNob3VsZCBub3QgYmUgaGVyZSIpCisKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyOiBzdGFydGluZyIpCisgICAgICAgICAgICB5aWVsZCAieTIiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyOiBhYm91dCB0byB5aWVsZCBmcm9tIGcxIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZ2kKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnMSgpCisgICAgICAgICAgICBmb3IgeSBpbiBnaToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQ6ICVzIiAlICh5LCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGRpZG4ndCByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZzE6IHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJZaWVsZGVkOiB5MSIsCisgICAgICAgICAgICAiZzE6IGFib3V0IHRvIHlpZWxkIGZyb20gZzIiLAorICAgICAgICAgICAgImcyOiBzdGFydGluZyIsCisgICAgICAgICAgICAiWWllbGRlZDogeTIiLAorICAgICAgICAgICAgImcyOiBhYm91dCB0byB5aWVsZCBmcm9tIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3JldHVybmluZ192YWx1ZV9mcm9tX2RlbGVnYXRlZF90aHJvdyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgcmV0dXJuaW5nIHZhbHVlIGZyb20gZGVsZWdhdGVkICd0aHJvdycKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZXhjZXB0IEx1bmNoRXJyb3I6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJDYXVnaHQgTHVuY2hFcnJvciBpbiBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIGx1bmNoIHNhdmVkIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiB5ZXQgbW9yZSBzcGFtIgorICAgICAgICBjbGFzcyBMdW5jaEVycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGcgPSBnMSgpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgeCA9IG5leHQoZykKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBlID0gTHVuY2hFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICBnLnRocm93KGUpCisgICAgICAgIGZvciB4IGluIGc6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJDYXVnaHQgTHVuY2hFcnJvciBpbiBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiB5ZXQgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9uZXh0X2FuZF9yZXR1cm5fd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgbmV4dCBhbmQgcmV0dXJuIHdpdGggdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYocik6CisgICAgICAgICAgICBnaSA9IGcocikKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIHJlc3VtaW5nIGciKQorICAgICAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXMiICUgKHJlcHIoZSksKSkKKyAgICAgICAgZGVmIGcocik6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHJldHVybiByCisgICAgICAgIGYoTm9uZSkKKyAgICAgICAgZig0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiByZXN1bWluZyBnIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBOb25lIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCkiLAorICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgNDIiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oNDIsKSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9zZW5kX2FuZF9yZXR1cm5fd2l0aF92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc2VuZCBhbmQgcmV0dXJuIHdpdGggdmFsdWUKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYocik6CisgICAgICAgICAgICBnaSA9IGcocikKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIHNlbmRpbmcgc3BhbSB0byBnIikKKyAgICAgICAgICAgICAgICBnaS5zZW5kKCJzcGFtIikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgU0hPVUxEIE5PVCBCRSBIRVJFIikKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIGNhdWdodCAlciIgJSAoZSwpKQorICAgICAgICBkZWYgZyhyKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzdGFydGluZyIpCisgICAgICAgICAgICB4ID0geWllbGQKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlcyIgJSAociwpKQorICAgICAgICAgICAgcmV0dXJuIHIKKyAgICAgICAgZihOb25lKQorICAgICAgICBmKDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHNlbmRpbmcgc3BhbSB0byBnIiwKKyAgICAgICAgICAgICJnIHJlY2VpdmVkIHNwYW0iLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIE5vbmUiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKSIsCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyA0MiIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbig0MiwpIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NhdGNoaW5nX2V4Y2VwdGlvbl9mcm9tX3N1Ymdlbl9hbmRfcmV0dXJuaW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjYXRjaGluZyBhbiBleGNlcHRpb24gdGhyb3duIGludG8gYQorICAgICAgICBzdWJnZW5lcmF0b3IgYW5kIHJldHVybmluZyBhIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiKQorICAgICAgICAgICAgcmV0dXJuIDIKKworICAgICAgICBkZWYgb3V0ZXIoKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCBmcm9tIGlubmVyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgcmV0dXJuZWQgJXIgdG8gb3V0ZXIiICUgdikKKyAgICAgICAgICAgIHlpZWxkIHYKKyAgICAgICAgZyA9IG91dGVyKCkKKyAgICAgICAgdHJhY2UuYXBwZW5kKG5leHQoZykpCisgICAgICAgIHRyYWNlLmFwcGVuZChnLnRocm93KFZhbHVlRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiLAorICAgICAgICAgICAgImlubmVyIHJldHVybmVkIDIgdG8gb3V0ZXIiLAorICAgICAgICAgICAgMiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5fdGhhdF9yZXR1cm5zKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aHJvd2luZyBHZW5lcmF0b3JFeGl0IGludG8gYSBzdWJnZW5lcmF0b3IgdGhhdAorICAgICAgICBjYXRjaGVzIGl0IGFuZCByZXR1cm5zIG5vcm1hbGx5LgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZiIpCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkV4aXQgZiIpCisgICAgICAgICAgICBleGNlcHQgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJFbnRlciBnIiwKKyAgICAgICAgICAgICJFbnRlciBmIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5lcmF0b3JfdGhhdF95aWVsZHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRocm93aW5nIEdlbmVyYXRvckV4aXQgaW50byBhIHN1YmdlbmVyYXRvciB0aGF0CisgICAgICAgIGNhdGNoZXMgaXQgYW5kIHlpZWxkcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgR2VuZXJhdG9yRXhpdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIkVudGVyIGciLAorICAgICAgICAgICAgIkVudGVyIGYiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfdGhyb3dpbmdfR2VuZXJhdG9yRXhpdF9pbnRvX3N1Ymdlbl90aGF0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhyb3dpbmcgR2VuZXJhdG9yRXhpdCBpbnRvIGEgc3ViZ2VuZXJhdG9yIHRoYXQKKyAgICAgICAgY2F0Y2hlcyBpdCBhbmQgcmFpc2VzIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVm9ycGFsIGJ1bm55IGVuY291bnRlcmVkIikKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRW50ZXIgZyIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGYoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgbmV4dChnaSkKKyAgICAgICAgICAgIGdpLnRocm93KEdlbmVyYXRvckV4aXQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgIlZvcnBhbCBidW5ueSBlbmNvdW50ZXJlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiRW50ZXIgZyIsCisgICAgICAgICAgICAiRW50ZXIgZiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF95aWVsZF9mcm9tX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBnKCkpCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX2dlbmVyYXRvcnNfY2xhaW1fdG9fYmVfcnVubmluZyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB3aXRoIGJhc2ljIGl0ZXJhdGlvbgorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICB5aWVsZCBmcm9tIHR3bygpCisgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgIGRlZiB0d28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgIGcxID0gb25lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGcxKSwgWzAsIDEsIDIsIDNdKQorICAgICAgICAjIENoZWNrIHdpdGggc2VuZAorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHJlcyA9IFtuZXh0KGcxKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcxLnNlbmQoNDIpKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFswLCAxLCAyLCAzXSkKKyAgICAgICAgIyBDaGVjayB3aXRoIHRocm93CisgICAgICAgIGNsYXNzIE15RXJyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAwCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgeWllbGQgZnJvbSB0d28oKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBNeUVycjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGRlZiB0d28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzEKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHJlcyA9IFtuZXh0KGcxKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGcxLnRocm93KE15RXJyKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQ2hlY2sgd2l0aCBjbG9zZQorICAgICAgICBjbGFzcyBNeUl0KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmXyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcxLmdpX3J1bm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgZzEpCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gTXlJdCgpCisgICAgICAgIGcxID0gb25lKCkKKyAgICAgICAgbmV4dChnMSkKKyAgICAgICAgZzEuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdG9yX2lzX3Zpc2libGVfdG9fZGVidWdnZXIoc2VsZik6CisgICAgICAgIGRlZiBjYWxsX3N0YWNrKCk6CisgICAgICAgICAgICByZXR1cm4gW2ZbM10gZm9yIGYgaW4gaW5zcGVjdC5zdGFjaygpXQorCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIGNhbGxfc3RhY2soKQorICAgICAgICAgICAgeWllbGQgY2FsbF9zdGFjaygpCisgICAgICAgICAgICB5aWVsZCBjYWxsX3N0YWNrKCkKKworICAgICAgICBkZWYgc3BhbShnKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZworCisgICAgICAgIGRlZiBlZ2dzKGcpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBnCisKKyAgICAgICAgZm9yIHN0YWNrIGluIHNwYW0oZ2VuKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzcGFtJyBpbiBzdGFjaykKKworICAgICAgICBmb3Igc3RhY2sgaW4gc3BhbShlZ2dzKGdlbigpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3NwYW0nIGluIHN0YWNrIGFuZCAnZWdncycgaW4gc3RhY2spCisKKyAgICBkZWYgdGVzdF9jdXN0b21faXRlcmF0b3JfcmV0dXJuKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMTU1NjgKKyAgICAgICAgY2xhc3MgTXlJdGVyOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbig0MikKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgcmV0CisgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIE15SXRlcigpCisgICAgICAgIHJldCA9IE5vbmUKKyAgICAgICAgbGlzdChnZW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIDQyKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICB0ZXN0X2NsYXNzZXMgPSBbVGVzdFBFUDM4ME9wZXJhdGlvbl0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKaW5kZXggOWRhMmNhZS4uZjUyZDRiZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaW8KK2ltcG9ydCBjb2xsZWN0aW9ucwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNyw2ICs4LDcgQEAKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMKK2Zyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBCaWdtZW1QaWNrbGVUZXN0cwogCiB0cnk6CkBAIC04MCw2ICs4MiwxOCBAQAogICAgIHVucGlja2xlcl9jbGFzcyA9IHBpY2tsZS5fVW5waWNrbGVyCiAKIAorY2xhc3MgUHlEaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1BpY2tsZXIKKyAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gcGlja2xlLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorCisKK2NsYXNzIFB5Q2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1BpY2tsZXIKKyAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuQ2hhaW5NYXAoe30sIHBpY2tsZS5kaXNwYXRjaF90YWJsZSkKKworCiBpZiBoYXNfY19pbXBsZW1lbnRhdGlvbjoKICAgICBjbGFzcyBDUGlja2xlclRlc3RzKFB5UGlja2xlclRlc3RzKToKICAgICAgICAgcGlja2xlciA9IF9waWNrbGUuUGlja2xlcgpAQCAtMTAxLDE0ICsxMTUsMjYgQEAKICAgICAgICAgcGlja2xlcl9jbGFzcyA9IF9waWNrbGUuUGlja2xlcgogICAgICAgICB1bnBpY2tsZXJfY2xhc3MgPSBfcGlja2xlLlVucGlja2xlcgogCisgICAgY2xhc3MgQ0Rpc3BhdGNoVGFibGVUZXN0cyhBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyk6CisgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuUGlja2xlcgorICAgICAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKworICAgIGNsYXNzIENDaGFpbkRpc3BhdGNoVGFibGVUZXN0cyhBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cyk6CisgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuUGlja2xlcgorICAgICAgICBkZWYgZ2V0X2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLkNoYWluTWFwKHt9LCBwaWNrbGUuZGlzcGF0Y2hfdGFibGUpCisKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3RzID0gW1BpY2tsZVRlc3RzLCBQeVBpY2tsZXJUZXN0cywgUHlQZXJzUGlja2xlclRlc3RzXQorICAgIHRlc3RzID0gW1BpY2tsZVRlc3RzLCBQeVBpY2tsZXJUZXN0cywgUHlQZXJzUGlja2xlclRlc3RzLAorICAgICAgICAgICAgIFB5RGlzcGF0Y2hUYWJsZVRlc3RzLCBQeUNoYWluRGlzcGF0Y2hUYWJsZVRlc3RzXQogICAgIGlmIGhhc19jX2ltcGxlbWVudGF0aW9uOgogICAgICAgICB0ZXN0cy5leHRlbmQoW0NQaWNrbGVyVGVzdHMsIENQZXJzUGlja2xlclRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIENEdW1wUGlja2xlX0xvYWRQaWNrbGUsIER1bXBQaWNrbGVfQ0xvYWRQaWNrbGUsCiAgICAgICAgICAgICAgICAgICAgICAgUHlQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgQ1BpY2tsZXJVbnBpY2tsZXJPYmplY3RUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICBDRGlzcGF0Y2hUYWJsZVRlc3RzLCBDQ2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgSW5NZW1vcnlQaWNrbGVUZXN0c10pCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QocGlja2xlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKaW5kZXggZDViODg2Zi4uNmE3YjQ1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CkBAIC03OSwyMSArNzksNiBAQAogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZCkKIAotICAgIGRlZiB0ZXN0UXVvdGluZyhzZWxmKToKLSAgICAgICAgc2FmZXVucXVvdGVkID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ0AlXy0rPTosLi8nCi0gICAgICAgIHVuaWNvZGVfc2FtcGxlID0gJ1x4ZTlceGUwXHhkZicgICMgZSArIGFjdXRlIGFjY2VudCwgYSArIGdyYXZlLCBzaGFycCBzCi0gICAgICAgIHVuc2FmZSA9ICciYCRcXCEnICsgdW5pY29kZV9zYW1wbGUKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpcGVzLnF1b3RlKCcnKSwgIicnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZShzYWZldW5xdW90ZWQpLCBzYWZldW5xdW90ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoJ3Rlc3QgZmlsZSBuYW1lJyksICIndGVzdCBmaWxlIG5hbWUnIikKLSAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgndGVzdCVzbmFtZScgJSB1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzbmFtZSciICUgdSkKLSAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgidGVzdCVzJ25hbWUnIiAlIHUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3QlcydcIidcIiduYW1lJ1wiJ1wiJyciICUgdSkKLQogICAgIGRlZiB0ZXN0UmVwcihzZWxmKToKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAiPFRlbXBsYXRlIGluc3RhbmNlLCBzdGVwcz1bXT4iKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2cucHkgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQppbmRleCBhNGRkYjE1Li4zNTVlZmU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQpAQCAtMjMsNiArMjMsOCBAQAogZGVmIGZpeGRpcihsc3QpOgogICAgIGlmICJfX2J1aWx0aW5zX18iIGluIGxzdDoKICAgICAgICAgbHN0LnJlbW92ZSgiX19idWlsdGluc19fIikKKyAgICBpZiAiX19pbml0aWFsaXppbmdfXyIgaW4gbHN0OgorICAgICAgICBsc3QucmVtb3ZlKCJfX2luaXRpYWxpemluZ19fIikKICAgICByZXR1cm4gbHN0CiAKIApAQCAtMTk2LDE0ICsxOTgsMTUgQEAKIAogICAgICAgICBpbXBvcnQgdDUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnZm9vJywgJ3N0cmluZycsICd0NSddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsICd0NSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodDUuZm9vKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnc3RyaW5nJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdzdHJpbmcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1LnN0cmluZykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ3NwYW0nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ3NwYW0nXSkKIAogICAgIGRlZiB0ZXN0XzYoc2VsZik6CiAgICAgICAgIGhpZXIgPSBbCkBAIC0yMTksMTQgKzIyMiwxNCBAQAogICAgICAgICBpbXBvcnQgdDYKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ2KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2FsbF9fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQogICAgICAgICBzID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgdDYKICAgICAgICAgICAgIGZyb20gdDYgaW1wb3J0ICoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fYWxsX18nLCAnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWdncycsICdoYW0nLCAnc3BhbSddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJywgJ2VnZ3MnLCAnaGFtJywgJ3NwYW0nXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKCksIFsnZWdncycsICdoYW0nLCAnc2VsZicsICdzcGFtJywgJ3Q2J10pCiAgICAgICAgICAgICAiIiIKICAgICAgICAgc2VsZi5ydW5fY29kZShzKQpAQCAtMjUyLDE5ICsyNTUsMTkgQEAKICAgICAgICAgdDcsIHN1Yiwgc3Vic3ViID0gTm9uZSwgTm9uZSwgTm9uZQogICAgICAgICBpbXBvcnQgdDcgYXMgdGFzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0YXMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0NykKICAgICAgICAgZnJvbSB0NyBpbXBvcnQgc3ViIGFzIHN1YnBhcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIoc3VicGFyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3ViKQogICAgICAgICBmcm9tIHQ3LnN1YiBpbXBvcnQgc3Vic3ViIGFzIHN1YnN1YnN1YgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIoc3Vic3Vic3ViKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsICdzcGFtJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXycsICdzcGFtJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3ViKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YnN1YikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKaW5kZXggYzM3ZTkzNi4uYTg0MjZiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBpbXAgaW1wb3J0IGNhY2hlX2Zyb21fc291cmNlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZQogCiBjbGFzcyBUZXN0SW1wb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjksNyArMjksNyBAQAogICAgICAgICBzZWxmLnBhY2thZ2VfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVzdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWNrYWdlX25hbWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGFja2FnZV9kaXIpCi0gICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdfX2luaXRfXy5weScpLCAndycpLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdfX2luaXRfXy5weScpKQogICAgICAgICBzZWxmLm1vZHVsZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9kaXIsICdmb28ucHknKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IDNiNzJmMDYuLjg4ZTJkMzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxvYWQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVubG9hZCwgY2hlY2tfd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGltcApAQCAtOSw3ICs5LDExIEBACiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgemlwZmlsZQogCi0KKyMgTm90ZTogcGtndXRpbC53YWxrX3BhY2thZ2VzIGlzIGN1cnJlbnRseSB0ZXN0ZWQgaW4gdGVzdF9ydW5weS4gVGhpcyBpcworIyBhIGhhY2sgdG8gZ2V0IGEgbWFqb3IgaXNzdWUgcmVzb2x2ZWQgZm9yIDMuM2IyLiBMb25nZXIgdGVybSwgaXQgc2hvdWxkCisjIGJlIG1vdmVkIGJhY2sgaGVyZSwgcGVyaGFwcyBieSBmYWN0b3Jpbmcgb3V0IHRoZSBoZWxwZXIgY29kZSBmb3IKKyMgY3JlYXRpbmcgaW50ZXJlc3RpbmcgcGFja2FnZSBsYXlvdXRzIHRvIGEgc2VwYXJhdGUgbW9kdWxlLgorIyBJc3N1ZSAjMTUzNDggZGVjbGFyZXMgdGhpcyBpcyBpbmRlZWQgYSBkb2RneSBoYWNrIDspCiAKIGNsYXNzIFBrZ3V0aWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTEzOCwxMCArMTQyLDExIEBACiAgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KIAogCisjIFRoZXNlIHRlc3RzLCBlc3BlY2lhbGx5IHRoZSBzZXR1cCBhbmQgY2xlYW51cCwgYXJlIGhpZGVvdXMuIFRoZXkKKyMgbmVlZCB0byBiZSBjbGVhbmVkIHVwIG9uY2UgaXNzdWUgMTQ3MTUgaXMgYWRkcmVzc2VkLgogY2xhc3MgRXh0ZW5kUGF0aFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY3JlYXRlX2luaXQoc2VsZiwgcGtnbmFtZSk6CiAgICAgICAgIGRpcm5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIGRpcm5hbWUpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBkaXJuYW1lKQogCiAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBwa2duYW1lKQpAQCAtMTU2LDIyICsxNjEsMTIgQEAKICAgICAgICAgd2l0aCBvcGVuKG1vZHVsZV9uYW1lLCAndycpIGFzIGZsOgogICAgICAgICAgICAgcHJpbnQoJ3ZhbHVlPXt9Jy5mb3JtYXQodmFsdWUpLCBmaWxlPWZsKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAjIENyZWF0ZSAyIGRpcmVjdG9yaWVzIG9uIHN5cy5wYXRoCi0gICAgICAgIHNlbGYucGtnbmFtZSA9ICdmb28nCi0gICAgICAgIHNlbGYuZGlybmFtZV8wID0gc2VsZi5jcmVhdGVfaW5pdChzZWxmLnBrZ25hbWUpCi0gICAgICAgIHNlbGYuZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChzZWxmLnBrZ25hbWUpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGRlbCBzeXMucGF0aFswXQotICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQotCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgotICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoc2VsZi5kaXJuYW1lXzAsIHNlbGYucGtnbmFtZSwgJ2JhcicsIDApCi0gICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShzZWxmLmRpcm5hbWVfMSwgc2VsZi5wa2duYW1lLCAnYmF6JywgMSkKKyAgICAgICAgcGtnbmFtZSA9ICdmb28nCisgICAgICAgIGRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8wLCBwa2duYW1lLCAnYmFyJywgMCkKKyAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKGRpcm5hbWVfMSwgcGtnbmFtZSwgJ2JheicsIDEpCiAgICAgICAgIGltcG9ydCBmb28uYmFyCiAgICAgICAgIGltcG9ydCBmb28uYmF6CiAgICAgICAgICMgRW5zdXJlIHdlIHJlYWQgdGhlIGV4cGVjdGVkIHZhbHVlcwpAQCAtMTgwLDggKzE3NSw0NSBAQAogCiAgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGlzIHNldCB1cCBjb3JyZWN0bHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm9vLl9fcGF0aF9fKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihzZWxmLmRpcm5hbWVfMCwgc2VsZi5wa2duYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLmRpcm5hbWVfMSwgc2VsZi5wa2duYW1lKV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbb3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGlybmFtZV8xLCBwa2duYW1lKV0pKQorCisgICAgICAgICMgQ2xlYW51cAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWVfMCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzEpCisgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQorCisgICAgZGVmIHRlc3RfbWl4ZWRfbmFtZXNwYWNlKHNlbGYpOgorICAgICAgICBwa2duYW1lID0gJ2ZvbycKKyAgICAgICAgZGlybmFtZV8wID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBkaXJuYW1lXzEgPSBzZWxmLmNyZWF0ZV9pbml0KHBrZ25hbWUpCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzAsIHBrZ25hbWUsICdiYXInLCAwKQorICAgICAgICAjIFR1cm4gdGhpcyBpbnRvIGEgUEVQIDQyMCBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzEsIHBrZ25hbWUsICdiYXonLCAxKQorICAgICAgICBpbXBvcnQgZm9vLmJhcgorICAgICAgICBpbXBvcnQgZm9vLmJhegorICAgICAgICAjIEVuc3VyZSB3ZSByZWFkIHRoZSBleHBlY3RlZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyLnZhbHVlLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXoudmFsdWUsIDEpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIHBhdGggaXMgc2V0IHVwIGNvcnJlY3RseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb28uX19wYXRoX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbb3MucGF0aC5qb2luKGRpcm5hbWVfMCwgcGtnbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGlybmFtZV8xLCBwa2duYW1lKV0pKQorCisgICAgICAgICMgQ2xlYW51cAorICAgICAgICBzaHV0aWwucm10cmVlKGRpcm5hbWVfMCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzEpCisgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28nXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXInXQorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2Zvby5iYXonXQogCiAgICAgIyBYWFg6IHRlc3QgLnBrZyBmaWxlcwogCkBAIC0yMjcsMTIgKzI1OSw1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIDIpCiAKIAorY2xhc3MgSW1wb3J0bGliTWlncmF0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgV2l0aCBmdWxsIFBFUCAzMDIgc3VwcG9ydCBpbiB0aGUgc3RhbmRhcmQgaW1wb3J0IG1hY2hpbmVyeSwgdGhlCisgICAgIyBQRVAgMzAyIGVtdWxhdGlvbiBpbiB0aGlzIG1vZHVsZSBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZworICAgICMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliIHByb3BlcgorCisgICAgZGVmIGNoZWNrX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHJldHVybiBjaGVja193YXJuaW5ncygKKyAgICAgICAgICAgICgiVGhpcyBlbXVsYXRpb24gaXMgZGVwcmVjYXRlZCwgdXNlICdpbXBvcnRsaWInIGluc3RlYWQiLAorICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpCisKKyAgICBkZWYgdGVzdF9pbXBvcnRlcl9kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfZGVwcmVjYXRlZCgpOgorICAgICAgICAgICAgeCA9IHBrZ3V0aWwuSW1wSW1wb3J0ZXIoIiIpCisKKyAgICBkZWYgdGVzdF9sb2FkZXJfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgICAgIHggPSBwa2d1dGlsLkltcExvYWRlcigiIiwgIiIsICIiLCAiIikKKworICAgIGRlZiB0ZXN0X2dldF9sb2FkZXJfYXZvaWRzX2VtdWxhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygpIGFzIHc6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwa2d1dGlsLmdldF9sb2FkZXIoInN5cyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJvcyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJ0ZXN0LnN1cHBvcnQiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQorCisgICAgZGVmIHRlc3RfZ2V0X2ltcG9ydGVyX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgICMgV2UgdXNlIGFuIGlsbGVnYWwgcGF0aCBzbyAqbm9uZSogb2YgdGhlIHBhdGggaG9va3Mgc2hvdWxkIGZpcmUKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygpIGFzIHc6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwa2d1dGlsLmdldF9pbXBvcnRlcigiKj8/IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKKworICAgIGRlZiB0ZXN0X2l0ZXJfaW1wb3J0ZXJzX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgZm9yIGltcG9ydGVyIGluIHBrZ3V0aWwuaXRlcl9pbXBvcnRlcnMoKTogcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChQa2d1dGlsVGVzdHMsIFBrZ3V0aWxQRVAzMDJUZXN0cywgRXh0ZW5kUGF0aFRlc3RzLAotICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lc3BhY2VQYWNrYWdlVGVzdCkKKyAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZXNwYWNlUGFja2FnZVRlc3QsIEltcG9ydGxpYk1pZ3JhdGlvblRlc3RzKQogICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgaWYgdGVzdCBpcyBydW4gcmVwZWF0ZWQgKGxpa2Ugd2hlbiBmaW5kaW5nIGxlYWtzKQogICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBpbXBvcnQgaW1wb3J0bGliCiAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CmluZGV4IDg3NTFhYTguLjZhYmY0NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQpAQCAtMSw4ICsxLDkgQEAKLWltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtNTYsMTMgKzU3LDExIEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2F2ZV92ZXJzaW9uID0gc3lzLnZlcnNpb24KLSAgICAgICAgc2VsZi5zYXZlX3N1YnZlcnNpb24gPSBzeXMuc3VidmVyc2lvbgogICAgICAgICBzZWxmLnNhdmVfbWVyY3VyaWFsID0gc3lzLl9tZXJjdXJpYWwKICAgICAgICAgc2VsZi5zYXZlX3BsYXRmb3JtID0gc3lzLnBsYXRmb3JtCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy52ZXJzaW9uID0gc2VsZi5zYXZlX3ZlcnNpb24KLSAgICAgICAgc3lzLnN1YnZlcnNpb24gPSBzZWxmLnNhdmVfc3VidmVyc2lvbgogICAgICAgICBzeXMuX21lcmN1cmlhbCA9IHNlbGYuc2F2ZV9tZXJjdXJpYWwKICAgICAgICAgc3lzLnBsYXRmb3JtID0gc2VsZi5zYXZlX3BsYXRmb3JtCiAKQEAgLTc3LDcgKzc2LDcgQEAKICAgICAgICAgICAgICAoJ0lyb25QeXRob24nLCAnMS4wLjAnLCAnJywgJycsICcnLCAnJywgJy5ORVQgMi4wLjUwNzI3LjQyJykpLAogICAgICAgICAgICAgKToKICAgICAgICAgICAgICMgYnJhbmNoIGFuZCByZXZpc2lvbiBhcmUgbm90ICJwYXJzZWQiLCBidXQgZmV0Y2hlZAotICAgICAgICAgICAgIyBmcm9tIHN5cy5zdWJ2ZXJzaW9uLiAgSWdub3JlIHRoZW0KKyAgICAgICAgICAgICMgZnJvbSBzeXMuX21lcmN1cmlhbC4gIElnbm9yZSB0aGVtCiAgICAgICAgICAgICAobmFtZSwgdmVyc2lvbiwgYnJhbmNoLCByZXZpc2lvbiwgYnVpbGRubywgYnVpbGRkYXRlLCBjb21waWxlcikgXAogICAgICAgICAgICAgICAgICAgID0gcGxhdGZvcm0uX3N5c192ZXJzaW9uKGlucHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTExMyw4ICsxMTIsNiBAQAogICAgICAgICAgICAgaWYgc3VidmVyc2lvbiBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3lzLCAiX21lcmN1cmlhbCIpOgogICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLl9tZXJjdXJpYWwKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgInN1YnZlcnNpb24iKToKLSAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5zdWJ2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5fbWVyY3VyaWFsID0gc3VidmVyc2lvbgogICAgICAgICAgICAgaWYgc3lzX3BsYXRmb3JtIGlzIG5vdCBOb25lOgpAQCAtMTM2LDYgKzEzMywxMiBAQAogICAgIGRlZiB0ZXN0X3VuYW1lKHNlbGYpOgogICAgICAgICByZXMgPSBwbGF0Zm9ybS51bmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMF0sIHJlcy5zeXN0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzFdLCByZXMubm9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMl0sIHJlcy5yZWxlYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1szXSwgcmVzLnZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzRdLCByZXMubWFjaGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbNV0sIHJlcy5wcm9jZXNzb3IpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICJ3aW5kb3dzIG9ubHkgdGVzdCIpCiAgICAgZGVmIHRlc3RfdW5hbWVfd2luMzJfQVJDSElURVc2NDMyKHNlbGYpOgpAQCAtMTY5LDcgKzE3Miw3IEBACiAgICAgZGVmIHRlc3RfbWFjX3ZlcihzZWxmKToKICAgICAgICAgcmVzID0gcGxhdGZvcm0ubWFjX3ZlcigpCiAKLSAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKVswXSA9PSAnRGFyd2luJzoKKyAgICAgICAgaWYgcGxhdGZvcm0udW5hbWUoKS5zeXN0ZW0gPT0gJ0Rhcndpbic6CiAgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgTWFjT1NYIHN5c3RlbSwgY2hlY2sgdGhhdAogICAgICAgICAgICAgIyB0aGUgcmlnaHQgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZAogICAgICAgICAgICAgZmQgPSBvcy5wb3Blbignc3dfdmVycycsICdyJykKQEAgLTI0Nyw2ICsyNTAsMzggQEAKICAgICAgICAgICAgICk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYXRmb3JtLl9wYXJzZV9yZWxlYXNlX2ZpbGUoaW5wdXQpLCBvdXRwdXQpCiAKKyAgICBkZWYgdGVzdF9wb3BlbihzZWxmKToKKyAgICAgICAgbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQorCisgICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgICAgIGNvbW1hbmQgPSAnInt9IiAtYyAicHJpbnQoXCdIZWxsb1wnKSInLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiJ3t9JyAtYyAncHJpbnQoXCJIZWxsb1wiKSciLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHBsYXRmb3JtLnBvcGVuKGNvbW1hbmQpIGFzIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBoZWxsbyA9IHN0ZG91dC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHN0ZG91dC5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxsbywgIkhlbGxvIikKKworICAgICAgICBkYXRhID0gJ3Bsb3AnCisgICAgICAgIGlmIG1zd2luZG93czoKKyAgICAgICAgICAgIGNvbW1hbmQgPSAnInt9IiAtYyAiaW1wb3J0IHN5czsgZGF0YT1zeXMuc3RkaW4ucmVhZCgpOyBleGl0KGxlbihkYXRhKSkiJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tbWFuZCA9ICIne30nIC1jICdpbXBvcnQgc3lzOyBkYXRhPXN5cy5zdGRpbi5yZWFkKCk7IGV4aXQobGVuKGRhdGEpKSciCisgICAgICAgIGNvbW1hbmQgPSBjb21tYW5kLmZvcm1hdChzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHBsYXRmb3JtLnBvcGVuKGNvbW1hbmQsICd3JykgYXMgc3RkaW46CisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc3RkaW4ud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICAgICByZXQgPSBzdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmV0KQorICAgICAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuY29kZSA9IHJldAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSByZXQgPj4gOAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dXJuY29kZSwgbGVuKGRhdGEpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CmluZGV4IDVmOTgwZDAuLmE5ZTM0M2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQpAQCAtNTUsNiArNTUsMTAgQEAKICAgICAgICAgPC9hcnJheT4KICAgICAgICAgPGtleT5hU3RyaW5nPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+RG9vZGFoPC9zdHJpbmc+CisgICAgICAgIDxrZXk+YW5FbXB0eURpY3Q8L2tleT4KKyAgICAgICAgPGRpY3QvPgorICAgICAgICA8a2V5PmFuRW1wdHlMaXN0PC9rZXk+CisgICAgICAgIDxhcnJheS8+CiAgICAgICAgIDxrZXk+YW5JbnQ8L2tleT4KICAgICAgICAgPGludGVnZXI+NzI4PC9pbnRlZ2VyPgogICAgICAgICA8a2V5Pm5lc3RlZERhdGE8L2tleT4KQEAgLTExMiw2ICsxMTYsOCBAQAogICAgICAgICAgICAgc29tZU1vcmVEYXRhID0gcGxpc3RsaWIuRGF0YShiIjxsb3RzIG9mIGJpbmFyeSBndW5rPlwwXDFcMlwzIiAqIDEwKSwKICAgICAgICAgICAgIG5lc3RlZERhdGEgPSBbcGxpc3RsaWIuRGF0YShiIjxsb3RzIG9mIGJpbmFyeSBndW5rPlwwXDFcMlwzIiAqIDEwKV0sCiAgICAgICAgICAgICBhRGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDQsIDEwLCAyNiwgMTAsIDMzLCAzMyksCisgICAgICAgICAgICBhbkVtcHR5RGljdCA9IGRpY3QoKSwKKyAgICAgICAgICAgIGFuRW1wdHlMaXN0ID0gbGlzdCgpCiAgICAgICAgICkKICAgICAgICAgcGxbJ1x4YzViZW5yYWEnXSA9ICJUaGF0IHdhcyBhIHVuaWNvZGUga2V5LiIKICAgICAgICAgcmV0dXJuIHBsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IGUzOTAxYjguLmMwOTI5YTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC0xMDgsNiArMTA4LDEwIEBACiAgICAgZGVmIGNtZF9hcG9wKHNlbGYsIGFyZyk6CiAgICAgICAgIHNlbGYucHVzaCgnK09LIGRvbmUgbm90aGluZy4nKQogCisgICAgZGVmIGNtZF9xdWl0KHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnK09LIGNsb3NpbmcuJykKKyAgICAgICAgc2VsZi5jbG9zZV93aGVuX2RvbmUoKQorCiAKIGNsYXNzIER1bW15UE9QM1NlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyLCB0aHJlYWRpbmcuVGhyZWFkKToKIApAQCAtMTY1LDEwICsxNjksMTAgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlQT1AzU2VydmVyKChIT1NULCBQT1JUKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IHBvcGxpYi5QT1AzKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCisgICAgICAgIHNlbGYuY2xpZW50ID0gcG9wbGliLlBPUDMoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCwgdGltZW91dD0zKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQogICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKIAogICAgIGRlZiB0ZXN0X2dldHdlbGNvbWUoc2VsZik6CkBAIC0yMjgsNiArMjMyLDEyIEBACiAgICAgICAgIHNlbGYuY2xpZW50LnVpZGwoKQogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCdmb28nKQogCisgICAgZGVmIHRlc3RfcXVpdChzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYuY2xpZW50LnF1aXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5jbGllbnQuc29jaykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5jbGllbnQuZmlsZSkKKwogCiBTVVBQT1JUU19TU0wgPSBGYWxzZQogaWYgaGFzYXR0cihwb3BsaWIsICdQT1AzX1NTTCcpOgpAQCAtMjc0LDYgKzI4NCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIER1bW15UE9QM0hhbmRsZXIuaGFuZGxlX3JlYWQoc2VsZikKIAorCiAgICAgY2xhc3MgVGVzdFBPUDNfU1NMQ2xhc3MoVGVzdFBPUDNDbGFzcyk6CiAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIHRlc3RzIGJ5IHVzaW5nIHBvcGxpYi5QT1AzX1NTTAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQppbmRleCBiOTM2ZGRhLi40ZTdhMzdjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IG9zCitpbXBvcnQgZmNudGwKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAogaW1wb3J0IHNodXRpbApAQCAtNDMsNyArNDQsNyBAQAogICAgICAgICBOT19BUkdfRlVOQ1RJT05TID0gWyAiY3Rlcm1pZCIsICJnZXRjd2QiLCAiZ2V0Y3dkYiIsICJ1bmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lcyIsICJnZXRsb2FkYXZnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldGVnaWQiLCAiZ2V0ZXVpZCIsICJnZXRnaWQiLCAiZ2V0Z3JvdXBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHBpZCIsICJnZXRwZ3JwIiwgImdldHBwaWQiLCAiZ2V0dWlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHBpZCIsICJnZXRwZ3JwIiwgImdldHBwaWQiLCAiZ2V0dWlkIiwgInN5bmMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogCiAgICAgICAgIGZvciBuYW1lIGluIE5PX0FSR19GVU5DVElPTlM6CkBAIC0xMjgsNiArMTI5LDcgQEAKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguZnN0YXR2ZnMoZnAuZmlsZW5vKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0dmZzKGZwLmZpbGVubygpKSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCkBAIC0xNDIsNiArMTQ0LDE1MSBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAndHJ1bmNhdGUnKSwgInRlc3QgbmVlZHMgcG9zaXgudHJ1bmNhdGUoKSIpCisgICAgZGVmIHRlc3RfdHJ1bmNhdGUoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKCd0ZXN0JykKKyAgICAgICAgICAgIGZwLmZsdXNoKCkKKyAgICAgICAgcG9zaXgudHJ1bmNhdGUoc3VwcG9ydC5URVNURk4sIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhnZXRhdHRyKG9zLCAnZXhlY3ZlJywgTm9uZSkgaW4gb3Muc3VwcG9ydHNfZmQsICJ0ZXN0IG5lZWRzIGV4ZWN2ZSgpIHRvIHN1cHBvcnQgdGhlIGZkIHBhcmFtZXRlciIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgInRlc3QgbmVlZHMgb3MuZm9yaygpIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnd2FpdHBpZCcpLCAidGVzdCBuZWVkcyBvcy53YWl0cGlkKCkiKQorICAgIGRlZiB0ZXN0X2ZleGVjdmUoc2VsZik6CisgICAgICAgIGZwID0gb3Mub3BlbihzeXMuZXhlY3V0YWJsZSwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5zcGxpdChzeXMuZXhlY3V0YWJsZSlbMF0pCisgICAgICAgICAgICAgICAgcG9zaXguZXhlY3ZlKGZwLCBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10sIG9zLmVudmlyb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Mud2FpdHBpZChwaWQsIDApLCAocGlkLCAwKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3dhaXRpZCcpLCAidGVzdCBuZWVkcyBwb3NpeC53YWl0aWQoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgInRlc3QgbmVlZHMgb3MuZm9yaygpIikKKyAgICBkZWYgdGVzdF93YWl0aWQoc2VsZik6CisgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICBpZiBwaWQgPT0gMDoKKyAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguc3BsaXQoc3lzLmV4ZWN1dGFibGUpWzBdKQorICAgICAgICAgICAgcG9zaXguZXhlY3ZlKHN5cy5leGVjdXRhYmxlLCBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10sIG9zLmVudmlyb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXMgPSBwb3NpeC53YWl0aWQocG9zaXguUF9QSUQsIHBpZCwgcG9zaXguV0VYSVRFRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlkLCByZXMuc2lfcGlkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2xvY2tmJyksICJ0ZXN0IG5lZWRzIHBvc2l4LmxvY2tmKCkiKQorICAgIGRlZiB0ZXN0X2xvY2tmKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdCcpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBwb3NpeC5sb2NrZihmZCwgcG9zaXguRl9MT0NLLCA0KQorICAgICAgICAgICAgIyBzZWN0aW9uIGlzIGxvY2tlZAorICAgICAgICAgICAgcG9zaXgubG9ja2YoZmQsIHBvc2l4LkZfVUxPQ0ssIDQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwcmVhZCcpLCAidGVzdCBuZWVkcyBwb3NpeC5wcmVhZCgpIikKKyAgICBkZWYgdGVzdF9wcmVhZChzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0JykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidlcycsIHBvc2l4LnByZWFkKGZkLCAyLCAxKSkKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IHByZWFkKCkgc2hvdWxkbid0IGRpc3R1cmIgdGhlIGZpbGUgb2Zmc2V0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndGUnLCBwb3NpeC5yZWFkKGZkLCAyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3B3cml0ZScpLCAidGVzdCBuZWVkcyBwb3NpeC5wd3JpdGUoKSIpCisgICAgZGVmIHRlc3RfcHdyaXRlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgcG9zaXgucHdyaXRlKGZkLCBiJ3h4JywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYid0eHh0JywgcG9zaXgucmVhZChmZCwgNCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwb3NpeF9mYWxsb2NhdGUnKSwKKyAgICAgICAgInRlc3QgbmVlZHMgcG9zaXgucG9zaXhfZmFsbG9jYXRlKCkiKQorICAgIGRlZiB0ZXN0X3Bvc2l4X2ZhbGxvY2F0ZShzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnBvc2l4X2ZhbGxvY2F0ZShmZCwgMCwgMTApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGluc3Q6CisgICAgICAgICAgICAjIGlzc3VlMTA4MTIsIFpGUyBkb2Vzbid0IGFwcGVhciB0byBzdXBwb3J0IHBvc2l4X2ZhbGxvY2F0ZSwKKyAgICAgICAgICAgICMgc28gc2tpcCBTb2xhcmlzLWJhc2VkIHNpbmNlIHRoZXkgYXJlIGxpa2VseSB0byBoYXZlIFpGUy4KKyAgICAgICAgICAgIGlmIGluc3QuZXJybm8gIT0gZXJybm8uRUlOVkFMIG9yIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncG9zaXhfZmFkdmlzZScpLAorICAgICAgICAidGVzdCBuZWVkcyBwb3NpeC5wb3NpeF9mYWR2aXNlKCkiKQorICAgIGRlZiB0ZXN0X3Bvc2l4X2ZhZHZpc2Uoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnBvc2l4X2ZhZHZpc2UoZmQsIDAsIDAsIHBvc2l4LlBPU0lYX0ZBRFZfV0lMTE5FRUQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZkLCAidGVzdCBuZWVkcyBmZCBzdXBwb3J0IGluIG9zLnV0aW1lIikKKyAgICBkZWYgdGVzdF91dGltZV93aXRoX2ZkKHNlbGYpOgorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC51dGltZShmZCkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgZmQsIChOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgbm93KSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAoaW50KG5vdyksIGludChub3cpKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAobm93LCBub3cpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCBub3cpLCBucz0obm93LCBub3cpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAobm93LCAwKSwgbnM9KE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgTm9uZSksIG5zPShub3csIDApKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQsIChpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCBucz0oaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MudXRpbWUgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzLCAidGVzdCBuZWVkcyBmb2xsb3dfc3ltbGlua3Mgc3VwcG9ydCBpbiBvcy51dGltZSIpCisgICAgZGVmIHRlc3RfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3Moc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBOb25lLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgTm9uZSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChub3csIE5vbmUpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAoTm9uZSwgbm93KSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgKGludChub3cpLCBpbnQobm93KSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdyksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICd3cml0ZXYnKSwgInRlc3QgbmVlZHMgcG9zaXgud3JpdGV2KCkiKQorICAgIGRlZiB0ZXN0X3dyaXRldihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZXYoZmQsIChiJ3Rlc3QxJywgYid0dDInLCBiJ3QzJykpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndGVzdDF0dDJ0MycsIHBvc2l4LnJlYWQoZmQsIDEwKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3JlYWR2JyksICJ0ZXN0IG5lZWRzIHBvc2l4LnJlYWR2KCkiKQorICAgIGRlZiB0ZXN0X3JlYWR2KHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QxdHQydDMnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgYnVmID0gW2J5dGVhcnJheShpKSBmb3IgaSBpbiBbNSwgMywgMl1dCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnJlYWR2KGZkLCBidWYpLCAxMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2IndGVzdDEnLCBiJ3R0MicsIGIndDMnXSwgW2J5dGVzKGkpIGZvciBpIGluIGJ1Zl0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKwogICAgIGRlZiB0ZXN0X2R1cChzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2R1cCcpOgogICAgICAgICAgICAgZnAgPSBvcGVuKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTY3LDYgKzMxNCwxMyBAQAogICAgICAgICAgICAgICAgIGZwMS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgZnAyLmNsb3NlKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdPX0NMT0VYRUMnKSwgIm5lZWRzIG9zLk9fQ0xPRVhFQyIpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAyMykKKyAgICBkZWYgdGVzdF9vc2Nsb2V4ZWMoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFl8b3MuT19DTE9FWEVDKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkQpICYgZmNudGwuRkRfQ0xPRVhFQykKKwogICAgIGRlZiB0ZXN0X29zZXhsb2NrKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAiT19FWExPQ0siKToKICAgICAgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwKQEAgLTIwMyw2ICszNTcsNyBAQAogICAgICAgICAgICAgZnAgPSBvcGVuKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5mc3RhdChmcC5maWxlbm8oKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoZnAuZmlsZW5vKCkpKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAKQEAgLTI2NSw3ICs0MjAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5jaG93biwgc3VwcG9ydC5URVNURk4sIC0xLCAtMSkKIAogICAgICAgICAjIHJlLWNyZWF0ZSB0aGUgZmlsZQotICAgICAgICBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5fdGVzdF9hbGxfY2hvd25fY29tbW9uKHBvc2l4LmNob3duLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdmY2hvd24nKSwgInRlc3QgbmVlZHMgb3MuZmNob3duKCkiKQpAQCAtMjkzLDEzICs0NDgsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X2xpc3RkaXIoc2VsZik6Ci0gICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdsaXN0ZGlyJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcihvcy5jdXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcihvcy5jdXJkaXIpKQogCiAgICAgZGVmIHRlc3RfbGlzdGRpcl9kZWZhdWx0KHNlbGYpOgotICAgICAgICAjIFdoZW4gbGlzdGRpciBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudCwgaXQncyB0aGUgc2FtZSBhcyBsaXN0ZGlyKG9zLmN1cmRpcikKLSAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2xpc3RkaXInKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0LlRFU1RGTiBpbiBwb3NpeC5saXN0ZGlyKCkpCisgICAgICAgICMgV2hlbiBsaXN0ZGlyIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50LAorICAgICAgICAjIGl0J3MgdGhlIHNhbWUgYXMgbGlzdGRpcihvcy5jdXJkaXIpLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcigpKQorCisgICAgZGVmIHRlc3RfbGlzdGRpcl9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBXaGVuIGxpc3RkaXIgaXMgY2FsbGVkIHdpdGggYSBieXRlcyBvYmplY3QsCisgICAgICAgICMgdGhlIHJldHVybmVkIHN0cmluZ3MgYXJlIG9mIHR5cGUgYnl0ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikgaW4gcG9zaXgubGlzdGRpcihiJy4nKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHBvc2l4Lmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgZmQgc3VwcG9ydCBmb3IgcG9zaXgubGlzdGRpcigpIikKKyAgICBkZWYgdGVzdF9saXN0ZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwb3NpeC5jbG9zZSwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKCcuJykpLAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoZikpCisgICAgICAgICAgICApCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZmQgb2Zmc2V0IHdhcyByZXNldCAoaXNzdWUgIzEzNzM5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoJy4nKSksCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcihmKSkKKyAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2FjY2VzcyhzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ2FjY2VzcycpOgpAQCAtMzIxLDYgKzQ5NSwzMiBAQAogICAgICAgICAgICAgb3MuY2xvc2UocmVhZGVyKQogICAgICAgICAgICAgb3MuY2xvc2Uod3JpdGVyKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3BpcGUyJyksICJ0ZXN0IG5lZWRzIG9zLnBpcGUyKCkiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjcpCisgICAgZGVmIHRlc3RfcGlwZTIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MucGlwZTIsICdERUFEQkVFRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MucGlwZTIsIDAsIDApCisKKyAgICAgICAgIyB0cnkgY2FsbGluZyB3aXRoIGZsYWdzID0gMCwgbGlrZSBvcy5waXBlKCkKKyAgICAgICAgciwgdyA9IG9zLnBpcGUyKDApCisgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgIG9zLmNsb3NlKHcpCisKKyAgICAgICAgIyB0ZXN0IGZsYWdzCisgICAgICAgIHIsIHcgPSBvcy5waXBlMihvcy5PX0NMT0VYRUN8b3MuT19OT05CTE9DSykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChyLCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bCh3LCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisgICAgICAgICMgdHJ5IHJlYWRpbmcgZnJvbSBhbiBlbXB0eSBwaXBlOiB0aGlzIHNob3VsZCBmYWlsLCBub3QgYmxvY2sKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVhZCwgciwgMSkKKyAgICAgICAgIyB0cnkgYSB3cml0ZSBiaWcgZW5vdWdoIHRvIGZpbGwtdXAgdGhlIHBpcGU6IHRoaXMgc2hvdWxkIGVpdGhlcgorICAgICAgICAjIGZhaWwgb3IgcGVyZm9ybSBhIHBhcnRpYWwgd3JpdGUsIG5vdCBibG9jaworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZSh3LCBiJ3gnICogc3VwcG9ydC5QSVBFX01BWF9TSVpFKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKwogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAndXRpbWUnKToKICAgICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCkBAIC0zMzEsMTMgKzUzMSwxNCBAQAogICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpKQogICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChub3csIG5vdykpCiAKLSAgICBkZWYgX3Rlc3RfY2hmbGFnc19yZWd1bGFyX2ZpbGUoc2VsZiwgY2hmbGFnc19mdW5jLCB0YXJnZXRfZmlsZSk6CisgICAgZGVmIF90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYsIGNoZmxhZ3NfZnVuYywgdGFyZ2V0X2ZpbGUsICoqa3dhcmdzKToKICAgICAgICAgc3QgPSBvcy5zdGF0KHRhcmdldF9maWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzdCwgJ3N0X2ZsYWdzJykpCiAKICAgICAgICAgIyBaRlMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgZmxhZyBVRl9JTU1VVEFCTEUuCisgICAgICAgIGZsYWdzID0gc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGZsYWdzX2Z1bmModGFyZ2V0X2ZpbGUsIHN0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUpCisgICAgICAgICAgICBjaGZsYWdzX2Z1bmModGFyZ2V0X2ZpbGUsIGZsYWdzLCAqKmt3YXJncykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6CiAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTM2MSw2ICs1NjIsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdsY2hmbGFncycpLCAndGVzdCBuZWVkcyBvcy5sY2hmbGFncygpJykKICAgICBkZWYgdGVzdF9sY2hmbGFnc19yZWd1bGFyX2ZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfY2hmbGFnc19yZWd1bGFyX2ZpbGUocG9zaXgubGNoZmxhZ3MsIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLl90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHBvc2l4LmNoZmxhZ3MsIHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbGNoZmxhZ3MnKSwgJ3Rlc3QgbmVlZHMgb3MubGNoZmxhZ3MoKScpCiAgICAgZGVmIHRlc3RfbGNoZmxhZ3Nfc3ltbGluayhzZWxmKToKQEAgLTM3MiwyNSArNTc0LDI4IEBACiAgICAgICAgIHNlbGYudGVhcmRvd25fZmlsZXMuYXBwZW5kKF9EVU1NWV9TWU1MSU5LKQogICAgICAgICBkdW1teV9zeW1saW5rX3N0ID0gb3MubHN0YXQoX0RVTU1ZX1NZTUxJTkspCiAKLSAgICAgICAgIyBaRlMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgZmxhZyBVRl9JTU1VVEFCTEUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBvc2l4LmxjaGZsYWdzKF9EVU1NWV9TWU1MSU5LLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRU9QTk9UU1VQUDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgbXNnID0gJ2NoZmxhZyBVRl9JTU1VVEFCTEUgbm90IHN1cHBvcnRlZCBieSB1bmRlcmx5aW5nIGZzJwotICAgICAgICAgICAgc2VsZi5za2lwVGVzdChtc2cpCisgICAgICAgIGRlZiBjaGZsYWdzX25vZm9sbG93KHBhdGgsIGZsYWdzKToKKyAgICAgICAgICAgIHJldHVybiBwb3NpeC5jaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmV3X3Rlc3Rmbl9zdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQorICAgICAgICBmb3IgZm4gaW4gKHBvc2l4LmxjaGZsYWdzLCBjaGZsYWdzX25vZm9sbG93KToKKyAgICAgICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgorICAgICAgICAgICAgZmxhZ3MgPSBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmbihfRFVNTVlfU1lNTElOSywgZmxhZ3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgbXNnID0gJ2NoZmxhZyBVRl9JTU1VVEFCTEUgbm90IHN1cHBvcnRlZCBieSB1bmRlcmx5aW5nIGZzJworICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5ld190ZXN0Zm5fc3QgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgICAgIG5ld19kdW1teV9zeW1saW5rX3N0ID0gb3MubHN0YXQoX0RVTU1ZX1NZTUxJTkspCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdGZuX3N0LnN0X2ZsYWdzLCBuZXdfdGVzdGZuX3N0LnN0X2ZsYWdzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19kdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcG9zaXgubGNoZmxhZ3MoX0RVTU1ZX1NZTUxJTkssIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Zm5fc3Quc3RfZmxhZ3MsIG5ld190ZXN0Zm5fc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZm4oX0RVTU1ZX1NZTUxJTkssIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCiAKICAgICBkZWYgdGVzdF9lbnZpcm9uKHNlbGYpOgogICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CkBAIC00MzgsNiArNjQzLDIyIEBACiAgICAgICAgICAgICAgICAgb3MuY2hkaXIoY3VyZGlyKQogICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGJhc2VfcGF0aCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdnZXRncm91cGxpc3QnKSwgInRlc3QgbmVlZHMgcG9zaXguZ2V0Z3JvdXBsaXN0KCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocHdkLCAnZ2V0cHd1aWQnKSwgInRlc3QgbmVlZHMgcHdkLmdldHB3dWlkKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXR1aWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0dWlkKCkiKQorICAgIGRlZiB0ZXN0X2dldGdyb3VwbGlzdChzZWxmKToKKyAgICAgICAgd2l0aCBvcy5wb3BlbignaWQgLUcnKSBhcyBpZGc6CisgICAgICAgICAgICBncm91cHMgPSBpZGcucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgIHJldCA9IGlkZy5jbG9zZSgpCisKKyAgICAgICAgaWYgcmV0ICE9IE5vbmUgb3Igbm90IGdyb3VwczoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJuZWVkIHdvcmtpbmcgJ2lkIC1HJyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNldChbaW50KHgpIGZvciB4IGluIGdyb3Vwcy5zcGxpdCgpXSksCisgICAgICAgICAgICBzZXQocG9zaXguZ2V0Z3JvdXBsaXN0KHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSlbMF0sCisgICAgICAgICAgICAgICAgcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKVszXSkpKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGVnaWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0ZWdpZCgpIikKICAgICBkZWYgdGVzdF9nZXRncm91cHMoc2VsZik6CiAgICAgICAgIHdpdGggb3MucG9wZW4oJ2lkIC1HJykgYXMgaWRnOgpAQCAtNDU1LDYgKzY3NiwzNDAgQEAKICAgICAgICAgICAgICAgICBzZXQoW2ludCh4KSBmb3IgeCBpbiBncm91cHMuc3BsaXQoKV0pLAogICAgICAgICAgICAgICAgIHNldChwb3NpeC5nZXRncm91cHMoKSArIFtwb3NpeC5nZXRlZ2lkKCldKSkKIAorICAgICMgdGVzdHMgZm9yIHRoZSBwb3NpeCAqYXQgZnVuY3Rpb25zIGZvbGxvdworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgZm9yIG9zLmFjY2VzcygpIikKKyAgICBkZWYgdGVzdF9hY2Nlc3NfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5hY2Nlc3Moc3VwcG9ydC5URVNURk4sIG9zLlJfT0ssIGRpcl9mZD1mKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5jaG1vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmNobW9kKCkiKQorICAgIGRlZiB0ZXN0X2NobW9kX2Rpcl9mZChzZWxmKToKKyAgICAgICAgb3MuY2htb2Qoc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNobW9kKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IsIGRpcl9mZD1mKQorCisgICAgICAgICAgICBzID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXSAmIHN0YXQuU19JUldYVSwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmNob3duIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MuY2hvd24oKSIpCisgICAgZGVmIHRlc3RfY2hvd25fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNob3duKHN1cHBvcnQuVEVTVEZOLCBvcy5nZXR1aWQoKSwgb3MuZ2V0Z2lkKCksIGRpcl9mZD1mKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5zdGF0KCkiKQorICAgIGRlZiB0ZXN0X3N0YXRfZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIG91dGZpbGU6CisgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCJ0ZXN0bGluZVxuIikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMxID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51dGltZSBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnV0aW1lKCkiKQorICAgIGRlZiB0ZXN0X3V0aW1lX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIE5vbmUsIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIG5vdywgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIE5vbmUpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCBOb25lKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIG5vdyksIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChub3csICJ4IiksIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLAorICAgICAgICAgICAgICAgICAgICAoaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSksIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzPShpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSkKKworICAgICAgICAgICAgIyB0cnkgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIKKyAgICAgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1mKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHdob29wcyEgIHVzaW5nIGJvdGggdG9nZXRoZXIgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5saW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubGluaygpIikKKyAgICBkZWYgdGVzdF9saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgc3JjX2Rpcl9mZD1mLCBkc3RfZGlyX2ZkPWYpCisgICAgICAgICAgICAjIHNob3VsZCBoYXZlIHNhbWUgaW5vZGVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pWzFdLAorICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4gKyAnbGluaycpWzFdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubWtkaXIgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5ta2RpcigpIikKKyAgICBkZWYgdGVzdF9ta2Rpcl9kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubWtkaXIoc3VwcG9ydC5URVNURk4gKyAnZGlyJywgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOICsgJ2RpcicpICMgc2hvdWxkIG5vdCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShzdXBwb3J0LlRFU1RGTiArICdkaXInKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoKG9zLm1rbm9kIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCkgYW5kIGhhc2F0dHIoc3RhdCwgJ1NfSUZJRk8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCByZXF1aXJlcyBib3RoIHN0YXQuU19JRklGTyBhbmQgZGlyX2ZkIHN1cHBvcnQgZm9yIG9zLm1rbm9kKCkiKQorICAgIGRlZiB0ZXN0X21rbm9kX2Rpcl9mZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIG1rbm9kYXQoKSB0byBjcmVhdGUgYSBGSUZPICh0aGUgb25seSB1c2Ugc3BlY2lmaWVkCisgICAgICAgICMgYnkgUE9TSVgpLgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgbW9kZSA9IHN0YXQuU19JRklGTyB8IHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rbm9kKHN1cHBvcnQuVEVTVEZOLCBtb2RlLCAwLCBkaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgU29tZSBvbGQgc3lzdGVtcyBkb24ndCBhbGxvdyB1bnByaXZpbGVnZWQgdXNlcnMgdG8gdXNlCisgICAgICAgICAgICAjIG1rbm9kKCksIG9yIG9ubHkgc3VwcG9ydCBjcmVhdGluZyBkZXZpY2Ugbm9kZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUuZXJybm8sIChlcnJuby5FUEVSTSwgZXJybm8uRUlOVkFMKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0LlNfSVNGSUZPKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm9wZW4gaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5vcGVuKCkiKQorICAgIGRlZiB0ZXN0X29wZW5fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIG91dGZpbGU6CisgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCJ0ZXN0bGluZVxuIikKKyAgICAgICAgYSA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBiID0gcG9zaXgub3BlbihzdXBwb3J0LlRFU1RGTiwgcG9zaXguT19SRE9OTFksIGRpcl9mZD1hKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXMgPSBwb3NpeC5yZWFkKGIsIDkpLmRlY29kZShlbmNvZGluZz0idXRmLTgiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdGxpbmVcbiIsIHJlcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGEpCisgICAgICAgICAgICBwb3NpeC5jbG9zZShiKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucmVhZGxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5yZWFkbGluaygpIikKKyAgICBkZWYgdGVzdF9yZWFkbGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIG9zLnN5bWxpbmsoc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXgucmVhZGxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpLAorICAgICAgICAgICAgICAgIHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnLCBkaXJfZmQ9ZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5yZW5hbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5yZW5hbWUoKSIpCisgICAgZGVmIHRlc3RfcmVuYW1lX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4gKyAncmVuJykKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5yZW5hbWUoc3VwcG9ydC5URVNURk4gKyAncmVuJywgc3VwcG9ydC5URVNURk4sIHNyY19kaXJfZmQ9ZiwgZHN0X2Rpcl9mZD1mKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwb3NpeC5yZW5hbWUoc3VwcG9ydC5URVNURk4gKyAncmVuJywgc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikgIyBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnN5bWxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5zeW1saW5rKCkiKQorICAgIGRlZiB0ZXN0X3N5bWxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnN5bWxpbmsoc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXgucmVhZGxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnVubGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnVubGluaygpIikKKyAgICBkZWYgdGVzdF91bmxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4gKyAnZGVsJykKKyAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiArICdkZWwnKSAjIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdkZWwnLCBkaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnZGVsJykKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5ta2ZpZm8gaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5ta2ZpZm8oKSIpCisgICAgZGVmIHRlc3RfbWtmaWZvX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubWtmaWZvKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IsIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXQuU19JU0ZJRk8ocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfbW9kZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgcmVxdWlyZXNfc2NoZWRfaCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX3lpZWxkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGhhdmUgc2NoZWR1bGluZyBzdXBwb3J0IikKKyAgICByZXF1aXJlc19zY2hlZF9hZmZpbml0eSA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX3NldGFmZmluaXR5JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBoYXZlIHNjaGVkIGFmZmluaXR5IHN1cHBvcnQiKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2gKKyAgICBkZWYgdGVzdF9zY2hlZF95aWVsZChzZWxmKToKKyAgICAgICAgIyBUaGlzIGhhcyBubyBlcnJvciBjb25kaXRpb25zIChhdCBsZWFzdCBvbiBMaW51eCkuCisgICAgICAgIHBvc2l4LnNjaGVkX3lpZWxkKCkKKworICAgIEByZXF1aXJlc19zY2hlZF9oCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX2dldF9wcmlvcml0eV9tYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCgpIikKKyAgICBkZWYgdGVzdF9zY2hlZF9wcmlvcml0eShzZWxmKToKKyAgICAgICAgIyBSb3VuZC1yb2JpbiB1c3VhbGx5IGhhcyBpbnRlcmVzdGluZyBwcmlvcml0aWVzLgorICAgICAgICBwb2wgPSBwb3NpeC5TQ0hFRF9SUgorICAgICAgICBsbyA9IHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9sKQorICAgICAgICBoaSA9IHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobG8sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGhpLCBsbykKKyAgICAgICAgIyBPU1ggZXZpZGVudGx5IGp1c3QgcmV0dXJucyAxNSB3aXRob3V0IGNoZWNraW5nIHRoZSBhcmd1bWVudC4KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJkYXJ3aW4iOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgLTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgLTIzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX3NldHNjaGVkdWxlcicpLCAiY2FuJ3QgY2hhbmdlIHNjaGVkdWxlciIpCisgICAgZGVmIHRlc3RfZ2V0X2FuZF9zZXRfc2NoZWR1bGVyX2FuZF9wYXJhbShzZWxmKToKKyAgICAgICAgcG9zc2libGVfc2NoZWR1bGVycyA9IFtzY2hlZCBmb3IgbmFtZSwgc2NoZWQgaW4gcG9zaXguX19kaWN0X18uaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgiU0NIRURfIildCisgICAgICAgIG1pbmUgPSBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihtaW5lLCBwb3NzaWJsZV9zY2hlZHVsZXJzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXJlbnQgPSBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIob3MuZ2V0cHBpZCgpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXJlbnQsIHBvc3NpYmxlX3NjaGVkdWxlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldHNjaGVkdWxlciwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldHBhcmFtLCAtMSkKKyAgICAgICAgcGFyYW0gPSBwb3NpeC5zY2hlZF9nZXRwYXJhbSgwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocGFyYW0uc2NoZWRfcHJpb3JpdHksIGludCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXguc2NoZWRfc2V0c2NoZWR1bGVyKDAsIG1pbmUsIHBhcmFtKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICMgUE9TSVggc3RhdGVzIHRoYXQgY2FsbGluZyBzY2hlZF9zZXRwYXJhbSgpIG9uIGEgcHJvY2VzcyB3aXRoIGEKKyAgICAgICAgIyBzY2hlZHVsaW5nIHBvbGljeSBvdGhlciB0aGFuIFNDSEVEX0ZJRk8gb3IgU0NIRURfUlIgaXMKKyAgICAgICAgIyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkOiBGcmVlQlNEIHJldHVybnMgRUlOVkFMLgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKToKKyAgICAgICAgICAgIHBvc2l4LnNjaGVkX3NldHBhcmFtKDAsIHBhcmFtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIC0xLCBwYXJhbSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIC0xLCBtaW5lLCBwYXJhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIDAsIG1pbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIDQzKQorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIHBhcmFtKQorICAgICAgICBsYXJnZSA9IDIxNDc0ODM2NDcwMAorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKGxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHk9LWxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAic2NoZWRfcnJfZ2V0X2ludGVydmFsIiksICJubyBmdW5jdGlvbiIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcnJfZ2V0X2ludGVydmFsKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbnRlcnZhbCA9IHBvc2l4LnNjaGVkX3JyX2dldF9pbnRlcnZhbCgwKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBUaGlzIGxpa2VseSBtZWFucyB0aGF0IHNjaGVkX3JyX2dldF9pbnRlcnZhbCBpcyBvbmx5IHZhbGlkIGZvcgorICAgICAgICAgICAgIyBwcm9jZXNzZXMgd2l0aCB0aGUgU0NIRURfUlIgc2NoZWR1bGVyIGluIGVmZmVjdC4KKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJvbmx5IHdvcmtzIG9uIFNDSEVEX1JSIHByb2Nlc3NlcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbnRlcnZhbCwgZmxvYXQpCisgICAgICAgICMgUmVhc29uYWJsZSBjb25zdHJhaW50cywgSSB0aGluay4KKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoaW50ZXJ2YWwsIDAuKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoaW50ZXJ2YWwsIDEuKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2FmZmluaXR5CisgICAgZGVmIHRlc3Rfc2NoZWRfZ2V0YWZmaW5pdHkoc2VsZik6CisgICAgICAgIG1hc2sgPSBwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSgwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobWFzaywgc2V0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4obWFzayksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldGFmZmluaXR5LCAtMSkKKyAgICAgICAgZm9yIGNwdSBpbiBtYXNrOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNwdSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoY3B1LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGNwdSwgMSA8PCAzMikKKworICAgIEByZXF1aXJlc19zY2hlZF9hZmZpbml0eQorICAgIGRlZiB0ZXN0X3NjaGVkX3NldGFmZmluaXR5KHNlbGYpOgorICAgICAgICBtYXNrID0gcG9zaXguc2NoZWRfZ2V0YWZmaW5pdHkoMCkKKyAgICAgICAgaWYgbGVuKG1hc2spID4gMToKKyAgICAgICAgICAgICMgRW1wdHkgbWFza3MgYXJlIGZvcmJpZGRlbgorICAgICAgICAgICAgbWFzay5wb3AoKQorICAgICAgICBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSgwLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnNjaGVkX2dldGFmZmluaXR5KDApLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgMCwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAwLCBbLTEwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIDAsIFsxPDwxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgLTEsIG1hc2spCisKKyAgICBkZWYgdGVzdF9ydGxkX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBjaGVjayBwcmVzZW5jZSBvZiBtYWpvciBSVExEXyogY29uc3RhbnRzCisgICAgICAgIHBvc2l4LlJUTERfTEFaWQorICAgICAgICBwb3NpeC5SVExEX05PVworICAgICAgICBwb3NpeC5SVExEX0dMT0JBTAorICAgICAgICBwb3NpeC5SVExEX0xPQ0FMCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnU0VFS19IT0xFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgYW4gT1MgdGhhdCByZXBvcnRzIGZpbGUgaG9sZXMiKQorICAgIGRlZiB0ZXN0X2ZzX2hvbGVzKHNlbGYpOgorICAgICAgICAjIEV2ZW4gaWYgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCByZXBvcnQgaG9sZXMsCisgICAgICAgICMgaWYgdGhlIE9TIHN1cHBvcnRzIGl0IHRoZSBTRUVLXyogY29uc3RhbnRzCisgICAgICAgICMgd2lsbCBiZSBkZWZpbmVkIGFuZCB3aWxsIGhhdmUgYSBjb25zaXN0ZW50CisgICAgICAgICMgYmVoYXZpb3VyOgorICAgICAgICAjIG9zLlNFRUtfREFUQSA9IGN1cnJlbnQgcG9zaXRpb24KKyAgICAgICAgIyBvcy5TRUVLX0hPTEUgPSBlbmQgb2YgZmlsZSBwb3NpdGlvbgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyK2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGIiaGVsbG8iKQorICAgICAgICAgICAgZnAuZmx1c2goKQorICAgICAgICAgICAgc2l6ZSA9IGZwLnRlbGwoKQorICAgICAgICAgICAgZm5vID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIHRyeSA6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2l6ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgb3MubHNlZWsoZm5vLCBpLCBvcy5TRUVLX0RBVEEpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzaXplLCBvcy5sc2Vlayhmbm8sIGksIG9zLlNFRUtfSE9MRSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubHNlZWssIGZubywgc2l6ZSwgb3MuU0VFS19EQVRBKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmxzZWVrLCBmbm8sIHNpemUsIG9zLlNFRUtfSE9MRSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIDoKKyAgICAgICAgICAgICAgICAjIFNvbWUgT1NzIGNsYWltIHRvIHN1cHBvcnQgU0VFS19IT0xFL1NFRUtfREFUQQorICAgICAgICAgICAgICAgICMgYnV0IGl0IGlzIG5vdCB0cnVlLgorICAgICAgICAgICAgICAgICMgRm9yIGluc3RhbmNlOgorICAgICAgICAgICAgICAgICMgaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL3BpcGVybWFpbC9mcmVlYnNkLWFtZDY0LzIwMTItSmFudWFyeS8wMTQzMzIuaHRtbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJPU0Vycm9yIHJhaXNlZCEiKQorCiBjbGFzcyBQb3NpeEdyb3Vwc1Rlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00OTAsOSArMTA0NSwxMSBAQAogICAgICAgICAgICAgcG9zaXguc2V0Z3JvdXBzKGdyb3VwcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGdyb3VwcywgcG9zaXguZ2V0Z3JvdXBzKCkpCiAKLQogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDU5OWM4NWEuLjdhY2E4N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAotCiBpbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgb3MKK2ltcG9ydCBwb3NpeHBhdGgKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgcmVhbHBhdGgsIGFic3BhdGgsIGRpcm5hbWUsIGJhc2VuYW1lCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKIAogdHJ5OgogICAgIGltcG9ydCBwb3NpeApAQCAtMjQ1LDcgKzI0NSw5IEBACiAKICAgICBkZWYgdGVzdF9pc21vdW50KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzKHBvc2l4cGF0aC5pc21vdW50KCIvIiksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMocG9zaXhwYXRoLmlzbW91bnQoYiIvIiksIFRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudChiIi8iKSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2lzbW91bnRfbm9uX2V4aXN0ZW50KHNlbGYpOgogICAgICAgICAjIE5vbi1leGlzdGVudCBtb3VudHBvaW50LgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQppbmRleCAwYzkzZDBlLi5kNDkyZDc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQpAQCAtMjE5LDYgKzIxOSw4IEBACiAgb3RoZXJzLnNob3VsZC5ub3QuYmU6IGxpa2UudGhpc30iIiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEb3R0ZWRQcmV0dHlQcmludGVyKCkucGZvcm1hdChvKSwgZXhwKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgICNTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzOTA3CiAgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zZXRfcmVwcnMoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGNyZWF0ZXMgYSBjb21wbGV4IGFycmFuZ2VtZW50IG9mIGZyb3plbnNldHMgYW5kCkBAIC0yNDEsMTAgKzI0MywxMiBAQAogICAgICAgICAjIENvbnNlcXVlbnRseSwgdGhpcyB0ZXN0IGlzIGZyYWdpbGUgYW5kCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgU21hbGwgY2hhbmdlcyB0byBQeXRob24ncyBzb3J0CiAgICAgICAgICMgYWxnb3JpdGhtIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwgd2hlbiBpdCBzaG91bGQgcGFzcy4KKyAgICAgICAgIyBYWFggT3IgY2hhbmdlcyB0byB0aGUgZGljdGlvbmFyeSBpbXBsbWVudGF0aW9uLi4uCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQoKSksICdzZXQoKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KHJhbmdlKDMpKSksICd7MCwgMSwgMn0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldCgpKSwgJ2Zyb3plbnNldCgpJykKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldChyYW5nZSgzKSkpLCAnZnJvemVuc2V0KHswLCAxLCAyfSknKQogICAgICAgICBjdWJlX3JlcHJfdGd0ID0gIiIiXAoge2Zyb3plbnNldCgpOiBmcm96ZW5zZXQoe2Zyb3plbnNldCh7Mn0pLCBmcm96ZW5zZXQoezB9KSwgZnJvemVuc2V0KHsxfSl9KSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CmluZGV4IDhkMzdiYmMuLjlkNmRiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcmludC5weQpAQCAtMTExLDYgKzExMSwzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHByaW50LCAnJywgZW5kPTMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwcmludCwgJycsIGZpbGU9JycpCiAKKyAgICBkZWYgdGVzdF9wcmludF9mbHVzaChzZWxmKToKKyAgICAgICAgIyBvcGVyYXRpb24gb2YgdGhlIGZsdXNoIGZsYWcKKyAgICAgICAgY2xhc3MgZmlsZWxpa2UoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXR0ZW4gPSAnJworICAgICAgICAgICAgICAgIHNlbGYuZmx1c2hlZCA9IDAKKyAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdHRlbiArPSBzdHIKKyAgICAgICAgICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoZWQgKz0gMQorCisgICAgICAgIGYgPSBmaWxlbGlrZSgpCisgICAgICAgIHByaW50KDEsIGZpbGU9ZiwgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBwcmludCgyLCBmaWxlPWYsIGVuZD0nJywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcHJpbnQoMywgZmlsZT1mLCBmbHVzaD1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXR0ZW4sICcxMjNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mbHVzaGVkLCAyKQorCisgICAgICAgICMgZW5zdXJlIGV4Y2VwdGlvbnMgZnJvbSBmbHVzaCBhcmUgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgY2xhc3Mgbm9mbHVzaCgpOgorICAgICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHByaW50LCAxLCBmaWxlPW5vZmx1c2goKSwgZmx1c2g9VHJ1ZSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQcmludCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKaW5kZXggY2M2YTg3Mi4uNzI2ZDZmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CkBAIC0xMjgsNiArMTI4LDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLnNwYW0sIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICJuZXcgZG9jc3RyaW5nIikKIAorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X19faXNhYnN0cmFjdG1ldGhvZF9fZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgZm9yIHZhbCBpbiAoVHJ1ZSwgRmFsc2UsIFtdLCBbMV0sICcnLCAnMScpOgorICAgICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb28uX19pc2Fic3RyYWN0bWV0aG9kX18gPSB2YWwKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fLCBib29sKHZhbCkpCisKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fID0gTm90Qm9vbCgpCisgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQorICAgICAgICAgICAgQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18KKwogCiAjIElzc3VlIDU4OTA6IHN1YmNsYXNzZXMgb2YgcHJvcGVydHkgZG8gbm90IHByZXNlcnZlIG1ldGhvZCBfX2RvY19fIHN0cmluZ3MKIGNsYXNzIFByb3BlcnR5U3ViKHByb3BlcnR5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggNGYxMjUxYy4uZWY5NTI2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTIwNSw2ICsyMDUsNyBAQAogICAgICAgICBzZWxmLm9yaWdfc3Rkb3V0X2ZpbGVubyA9IHB0eS5TVERPVVRfRklMRU5PCiAgICAgICAgIHNlbGYub3JpZ19wdHlfc2VsZWN0ID0gcHR5LnNlbGVjdAogICAgICAgICBzZWxmLmZkcyA9IFtdICAjIEEgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzIHRvIGNsb3NlLgorICAgICAgICBzZWxmLmZpbGVzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19sZW5ndGhzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19yZXN1bHRzID0gW10KIApAQCAtMjEyLDEwICsyMTMsMTUgQEAKICAgICAgICAgcHR5LlNURElOX0ZJTEVOTyA9IHNlbGYub3JpZ19zdGRpbl9maWxlbm8KICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBzZWxmLm9yaWdfc3Rkb3V0X2ZpbGVubwogICAgICAgICBwdHkuc2VsZWN0ID0gc2VsZi5vcmlnX3B0eV9zZWxlY3QKKyAgICAgICAgZm9yIGZpbGUgaW4gc2VsZi5maWxlczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZm9yIGZkIGluIHNlbGYuZmRzOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIF9waXBlKHNlbGYpOgpAQCAtMjIzLDYgKzIyOSwxMSBAQAogICAgICAgICBzZWxmLmZkcy5leHRlbmQocGlwZV9mZHMpCiAgICAgICAgIHJldHVybiBwaXBlX2ZkcwogCisgICAgZGVmIF9zb2NrZXRwYWlyKHNlbGYpOgorICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICBzZWxmLmZpbGVzLmV4dGVuZChzb2NrZXRwYWlyKQorICAgICAgICByZXR1cm4gc29ja2V0cGFpcgorCiAgICAgZGVmIF9tb2NrX3NlbGVjdChzZWxmLCByZmRzLCB3ZmRzLCB4ZmRzKToKICAgICAgICAgIyBUaGlzIHdpbGwgcmFpc2UgSW5kZXhFcnJvciB3aGVuIG5vIG1vcmUgZXhwZWN0ZWQgY2FsbHMgZXhpc3QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZWxlY3RfcmZkc19sZW5ndGhzLnBvcCgwKSwgbGVuKHJmZHMpKQpAQCAtMjM0LDkgKzI0NSw4IEBACiAgICAgICAgIHB0eS5TVERPVVRfRklMRU5PID0gbW9ja19zdGRvdXRfZmQKICAgICAgICAgbW9ja19zdGRpbl9mZCwgd3JpdGVfdG9fc3RkaW5fZmQgPSBzZWxmLl9waXBlKCkKICAgICAgICAgcHR5LlNURElOX0ZJTEVOTyA9IG1vY2tfc3RkaW5fZmQKLSAgICAgICAgc29ja2V0cGFpciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KLSAgICAgICAgc2VsZi5mZHMuZXh0ZW5kKG1hc3RlcnMpCiAKICAgICAgICAgIyBGZWVkIGRhdGEuICBTbWFsbGVyIHRoYW4gUElQRUJVRi4gIFRoZXNlIHdyaXRlcyB3aWxsIG5vdCBibG9jay4KICAgICAgICAgb3Mud3JpdGUobWFzdGVyc1sxXSwgYidmcm9tIG1hc3RlcicpCkBAIC0yNjMsOSArMjczLDggQEAKICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBtb2NrX3N0ZG91dF9mZAogICAgICAgICBtb2NrX3N0ZGluX2ZkLCB3cml0ZV90b19zdGRpbl9mZCA9IHNlbGYuX3BpcGUoKQogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gbW9ja19zdGRpbl9mZAotICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICBzb2NrZXRwYWlyID0gc2VsZi5fc29ja2V0cGFpcigpCiAgICAgICAgIG1hc3RlcnMgPSBbcy5maWxlbm8oKSBmb3IgcyBpbiBzb2NrZXRwYWlyXQotICAgICAgICBzZWxmLmZkcy5leHRlbmQobWFzdGVycykKIAogICAgICAgICBvcy5jbG9zZShtYXN0ZXJzWzFdKQogICAgICAgICBzb2NrZXRwYWlyWzFdLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODFhNTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CkBAIC0wLDAgKzEsMzQ3IEBACitpbXBvcnQgaW8KK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworaW1wb3J0IHhtbC5zYXgKKworZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKK2Zyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQorCisKK3RzdGZpbGUgPSBmaW5kZmlsZSgidGVzdC54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKKworIyBBIGhhbmR5IFhNTCBzbmlwcGV0LCBjb250YWluaW5nIGF0dHJpYnV0ZXMsIGEgbmFtZXNwYWNlIHByZWZpeCwgYW5kIGEKKyMgc2VsZi1jbG9zaW5nIHRhZzoKK1NNQUxMX1NBTVBMRSA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCI/PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOnhkYz0iaHR0cDovL3d3dy54bWwuY29tL2Jvb2tzIj4KKzwhLS0gQSBjb21tZW50IC0tPgorPHRpdGxlPkludHJvZHVjdGlvbiB0byBYU0w8L3RpdGxlPgorPGhyLz4KKzxwPjx4ZGM6YXV0aG9yIHhkYzphdHRyaWI9InByZWZpeGVkIGF0dHJpYnV0ZSIgYXR0cmliPSJvdGhlciBhdHRyaWIiPkEuIE5hbWVzcGFjZTwveGRjOmF1dGhvcj48L3A+Cis8L2h0bWw+IiIiCisKKworY2xhc3MgUHVsbERPTVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYpOgorICAgICAgICAiIiJNaW5pbWFsIHRlc3Qgb2YgRE9NRXZlbnRTdHJlYW0ucGFyc2UoKSIiIgorCisgICAgICAgICMgVGhpcyBqdXN0IHRlc3RzIHRoYXQgcGFyc2luZyBmcm9tIGEgc3RyZWFtIHdvcmtzLiBBY3R1YWwgcGFyc2VyCisgICAgICAgICMgc2VtYW50aWNzIGFyZSB0ZXN0ZWQgdXNpbmcgcGFyc2VTdHJpbmcgd2l0aCBhIG1vcmUgZm9jdXNlZCBYTUwKKyAgICAgICAgIyBmcmFnbWVudC4KKworICAgICAgICAjIFRlc3Qgd2l0aCBhIGZpbGVuYW1lOgorICAgICAgICBoYW5kbGVyID0gcHVsbGRvbS5wYXJzZSh0c3RmaWxlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoaGFuZGxlci5zdHJlYW0uY2xvc2UpCisgICAgICAgIGxpc3QoaGFuZGxlcikKKworICAgICAgICAjIFRlc3Qgd2l0aCBhIGZpbGUgb2JqZWN0OgorICAgICAgICB3aXRoIG9wZW4odHN0ZmlsZSwgInJiIikgYXMgZmluOgorICAgICAgICAgICAgbGlzdChwdWxsZG9tLnBhcnNlKGZpbikpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9zZW1hbnRpY3Moc2VsZik6CisgICAgICAgICIiIlRlc3QgRE9NRXZlbnRTdHJlYW0gcGFyc2luZyBzZW1hbnRpY3MuIiIiCisKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBub2RlIGlzIGEgRG9jdW1lbnQ6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG5vZGUsICJjcmVhdGVFbGVtZW50IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9ET0NVTUVOVCwgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodG1sIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihub2RlLmF0dHJpYnV0ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInhtbG5zOnhkYyIpLnZhbHVlLAorICAgICAgICAgICAgICAiaHR0cDovL3d3dy54bWwuY29tL2Jvb2tzIikKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkgIyBMaW5lIGJyZWFrCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICMgWFhYIC0gQSBjb21tZW50IHNob3VsZCBiZSByZXBvcnRlZCBoZXJlIQorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DT01NRU5ULCBldnQpCisgICAgICAgICMgTGluZSBicmVhayBhZnRlciBzd2FsbG93ZWQgY29tbWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGl0bGUiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIHRpdGxlX25vZGUgPSBub2RlCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkludHJvZHVjdGlvbiB0byBYU0wiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0aXRsZSIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpdGxlX25vZGUgaXMgbm9kZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHIiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgicCIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieGRjOmF1dGhvciIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInhkYzphdXRob3IiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgIyBYWFggTm8gRU5EX0RPQ1VNRU5UIGl0ZW0gaXMgZXZlciBvYnRhaW5lZDoKKyAgICAgICAgI2V2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisKKyAgICBkZWYgdGVzdF9leHBhbmRJdGVtKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgZXhwYW5kSXRlbSB3b3JrcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgIyBMb29wIHRocm91Z2ggdGhlIG5vZGVzIHVudGlsIHdlIGdldCB0byBhICJ0aXRsZSIgc3RhcnQgdGFnOgorICAgICAgICBmb3IgZXZ0LCBpdGVtIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVCBhbmQgaXRlbS50YWdOYW1lID09ICJ0aXRsZSI6CisgICAgICAgICAgICAgICAgaXRlbXMuZXhwYW5kTm9kZShpdGVtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGl0ZW0uY2hpbGROb2RlcykpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gXCJ0aXRsZVwiIGVsZW1lbnQgZGV0ZWN0ZWQgaW4gU01BTExfU0FNUExFISIpCisgICAgICAgICMgTG9vcCB1bnRpbCB3ZSBnZXQgdG8gdGhlIG5leHQgc3RhcnQtZWxlbWVudDoKKyAgICAgICAgZm9yIGV2dCwgbm9kZSBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLlNUQVJUX0VMRU1FTlQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHIiLCBub2RlLnRhZ05hbWUsCisgICAgICAgICAgICAiZXhwYW5kTm9kZSBkaWQgbm90IGxlYXZlIERPTUV2ZW50U3RyZWFtIGluIHRoZSBjb3JyZWN0IHN0YXRlLiIpCisgICAgICAgICMgQXR0ZW1wdCB0byBleHBhbmQgYSBzdGFuZGFsb25lIGVsZW1lbnQ6CisgICAgICAgIGl0ZW1zLmV4cGFuZE5vZGUobm9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZW1zKVswXSwgcHVsbGRvbS5DSEFSQUNURVJTKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUudGFnTmFtZSwgInAiKQorICAgICAgICBpdGVtcy5leHBhbmROb2RlKG5vZGUpCisgICAgICAgIG5leHQoaXRlbXMpICMgU2tpcCBjaGFyYWN0ZXIgZGF0YQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUudGFnTmFtZSwgImh0bWwiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgbmV4dChpdGVtcykKKyAgICAgICAgaXRlbXMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpdGVtcy5wYXJzZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGl0ZW1zLnN0cmVhbSkKKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9jb21tZW50KHNlbGYpOgorICAgICAgICAiIiJQdWxsRE9NIGRvZXMgbm90IHJlY2VpdmUgImNvbW1lbnQiIGV2ZW50cy4iIiIKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgZm9yIGV2dCwgXyBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLkNPTU1FTlQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gY29tbWVudCB3YXMgZW5jb3VudGVyZWQiKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X2VuZF9kb2N1bWVudChzZWxmKToKKyAgICAgICAgIiIiUHVsbERPTSBkb2VzIG5vdCByZWNlaXZlICJlbmQtZG9jdW1lbnQiIGV2ZW50cy4iIiIKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgIyBSZWFkIGFsbCBvZiB0aGUgbm9kZXMgdXAgdG8gYW5kIGluY2x1ZGluZyA8L2h0bWw+OgorICAgICAgICBmb3IgZXZ0LCBub2RlIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uRU5EX0VMRU1FTlQgYW5kIG5vZGUudGFnTmFtZSA9PSAiaHRtbCI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBBc3NlcnQgdGhhdCB0aGUgbmV4dCBub2RlIGlzIEVORF9ET0NVTUVOVDoKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5mYWlsKAorICAgICAgICAgICAgICAgICJSYW4gb3V0IG9mIGV2ZW50cywgYnV0IHNob3VsZCBoYXZlIHJlY2VpdmVkIEVORF9ET0NVTUVOVCIpCisKKworY2xhc3MgVGhvcm91Z2hUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiBwdWxsZG9tLiIiIgorCisgICAgZGVmIHRlc3RfdGhvcm91Z2hfcGFyc2Uoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc29tZSBvZiB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiBQdWxsRE9NLiIiIgorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHB1bGxkb20ucGFyc2UoTm9uZSwgcGFyc2VyPVNBWEV4ZXJjaXNlcigpKSkKKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9zYXgyZG9tX2ZhaWwoc2VsZik6CisgICAgICAgICIiIlNBWDJET00gY2FuInQgaGFuZGxlIGEgUEkgYmVmb3JlIHRoZSByb290IGVsZW1lbnQuIiIiCisgICAgICAgIHBkID0gU0FYMkRPTVRlc3RIZWxwZXIoTm9uZSwgU0FYRXhlcmNpc2VyKCksIDEyKQorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHBkKQorCisgICAgZGVmIHRlc3RfdGhvcm91Z2hfc2F4MmRvbShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzb21lIG9mIHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIFNBWDJET00uIiIiCisgICAgICAgIHBkID0gU0FYMkRPTVRlc3RIZWxwZXIoTm9uZSwgU0FYMkRPTUV4ZXJjaXNlcigpLCAxMikKKyAgICAgICAgc2VsZi5fdGVzdF90aG9yb3VnaChwZCwgRmFsc2UpCisKKyAgICBkZWYgX3Rlc3RfdGhvcm91Z2goc2VsZiwgcGQsIGJlZm9yZV9yb290PVRydWUpOgorICAgICAgICAiIiJUZXN0IHNvbWUgb2YgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgdGhlIHBhcnNlciwgdXNpbmcgYSBtb2NrCisgICAgICAgIHBhcnNlci4iIiIKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRE9DVU1FTlQsIGV2dCkKKyAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBub2RlIGlzIGEgRG9jdW1lbnQ6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG5vZGUsICJjcmVhdGVFbGVtZW50IikpCisKKyAgICAgICAgaWYgYmVmb3JlX3Jvb3Q6CisgICAgICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImEgY29tbWVudCIsIG5vZGUuZGF0YSkKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uUFJPQ0VTU0lOR19JTlNUUlVDVElPTiwgZXZ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGFyZ2V0Iiwgbm9kZS50YXJnZXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJkYXRhIiwgbm9kZS5kYXRhKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0bWwiLCBub2RlLnRhZ05hbWUpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYSBjb21tZW50Iiwgbm9kZS5kYXRhKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uUFJPQ0VTU0lOR19JTlNUUlVDVElPTiwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0YXJnZXQiLCBub2RlLnRhcmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiZGF0YSIsIG5vZGUuZGF0YSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHRtbCIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9ET0NVTUVOVCwgZXZ0KQorCisKK2NsYXNzIFNBWEV4ZXJjaXNlcihvYmplY3QpOgorICAgICIiIkEgZmFrZSBzYXggcGFyc2VyIHRoYXQgY2FsbHMgc29tZSBvZiB0aGUgaGFyZGVyLXRvLXJlYWNoIHNheCBtZXRob2RzIHRvCisgICAgZW5zdXJlIGl0IGVtaXRzIHRoZSBjb3JyZWN0IGV2ZW50cyIiIgorCisgICAgZGVmIHNldENvbnRlbnRIYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgorICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorCisgICAgZGVmIHBhcnNlKHNlbGYsIF8pOgorICAgICAgICBoID0gc2VsZi5faGFuZGxlcgorICAgICAgICBoLnN0YXJ0RG9jdW1lbnQoKQorCisgICAgICAgICMgVGhlIG5leHQgdHdvIGl0ZW1zIGVuc3VyZSB0aGF0IGl0ZW1zIHByZWNlZGluZyB0aGUgZmlyc3QKKyAgICAgICAgIyBzdGFydF9lbGVtZW50IGFyZSBwcm9wZXJseSBzdG9yZWQgYW5kIGVtaXR0ZWQ6CisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKworICAgICAgICBoLnN0YXJ0RWxlbWVudCgiaHRtbCIsIEF0dHJpYnV0ZXNJbXBsKHt9KSkKKworICAgICAgICBoLmNvbW1lbnQoImEgY29tbWVudCIpCisgICAgICAgIGgucHJvY2Vzc2luZ0luc3RydWN0aW9uKCJ0YXJnZXQiLCAiZGF0YSIpCisKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoInAiLCBBdHRyaWJ1dGVzSW1wbCh7ImNsYXNzIjogInBhcmFjbGFzcyJ9KSkKKyAgICAgICAgaC5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJwIikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJodG1sIikKKyAgICAgICAgaC5lbmREb2N1bWVudCgpCisKKyAgICBkZWYgc3R1YihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJTdHViIG1ldGhvZC4gRG9lcyBub3RoaW5nLiIiIgorICAgICAgICBwYXNzCisgICAgc2V0UHJvcGVydHkgPSBzdHViCisgICAgc2V0RmVhdHVyZSA9IHN0dWIKKworCitjbGFzcyBTQVgyRE9NRXhlcmNpc2VyKFNBWEV4ZXJjaXNlcik6CisgICAgIiIiVGhlIHNhbWUgYXMgU0FYRXhlcmNpc2VyLCBidXQgd2l0aG91dCB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBhbmQKKyAgICBjb21tZW50IGJlZm9yZSB0aGUgcm9vdCBlbGVtZW50LCBiZWNhdXNlIFMyRCBjYW4idCBoYW5kbGUgaXQiIiIKKworICAgIGRlZiBwYXJzZShzZWxmLCBfKToKKyAgICAgICAgaCA9IHNlbGYuX2hhbmRsZXIKKyAgICAgICAgaC5zdGFydERvY3VtZW50KCkKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoImh0bWwiLCBBdHRyaWJ1dGVzSW1wbCh7fSkpCisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoInAiLCBBdHRyaWJ1dGVzSW1wbCh7ImNsYXNzIjogInBhcmFjbGFzcyJ9KSkKKyAgICAgICAgaC5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJwIikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJodG1sIikKKyAgICAgICAgaC5lbmREb2N1bWVudCgpCisKKworY2xhc3MgU0FYMkRPTVRlc3RIZWxwZXIocHVsbGRvbS5ET01FdmVudFN0cmVhbSk6CisgICAgIiIiQWxsb3dzIHVzIHRvIGRyaXZlIFNBWDJET00gZnJvbSBhIERPTUV2ZW50U3RyZWFtLiIiIgorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLnB1bGxkb20gPSBwdWxsZG9tLlNBWDJET00oKQorICAgICAgICAjIFRoaXMgY29udGVudCBoYW5kbGVyIHJlbGllcyBvbiBuYW1lc3BhY2Ugc3VwcG9ydAorICAgICAgICBzZWxmLnBhcnNlci5zZXRGZWF0dXJlKHhtbC5zYXguaGFuZGxlci5mZWF0dXJlX25hbWVzcGFjZXMsIDEpCisgICAgICAgIHNlbGYucGFyc2VyLnNldENvbnRlbnRIYW5kbGVyKHNlbGYucHVsbGRvbSkKKworCitjbGFzcyBTQVgyRE9NVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbmZpcm0oc2VsZiwgdGVzdCwgdGVzdG5hbWU9IlRlc3QiKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QsIHRlc3RuYW1lKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBTQVgyRE9NIGNhbiBwYXJzZSBmcm9tIGEgc3RyZWFtLiIiIgorICAgICAgICB3aXRoIGlvLlN0cmluZ0lPKFNNQUxMX1NBTVBMRSkgYXMgZmluOgorICAgICAgICAgICAgc2QgPSBTQVgyRE9NVGVzdEhlbHBlcihmaW4sIHhtbC5zYXgubWFrZV9wYXJzZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKFNNQUxMX1NBTVBMRSkpCisgICAgICAgICAgICBmb3IgZXZ0LCBub2RlIGluIHNkOgorICAgICAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLlNUQVJUX0VMRU1FTlQgYW5kIG5vZGUudGFnTmFtZSA9PSAiaHRtbCI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAjIEJlY2F1c2UgdGhlIGJ1ZmZlciBpcyB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIFhNTCwgYWxsIHRoZQorICAgICAgICAgICAgIyBub2RlcyBzaG91bGQgaGF2ZSBiZWVuIHBhcnNlZCBhbmQgYWRkZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKG5vZGUuY2hpbGROb2RlcyksIDApCisKKyAgICBkZWYgdGVzdFNBWDJET00oc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBTQVgyRE9NIGV4cGFuZHMgbm9kZXMgYXMgZXhwZWN0ZWQuIiIiCisgICAgICAgIHNheDJkb20gPSBwdWxsZG9tLlNBWDJET00oKQorICAgICAgICBzYXgyZG9tLnN0YXJ0RG9jdW1lbnQoKQorICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgiZG9jIiwge30pCisgICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJzdWJlbG0iLCB7fSkKKyAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJzdWJlbG0iKQorICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoImRvYyIpCisgICAgICAgIHNheDJkb20uZW5kRG9jdW1lbnQoKQorCisgICAgICAgIGRvYyA9IHNheDJkb20uZG9jdW1lbnQKKyAgICAgICAgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgKHRleHQxLCBlbG0xLCB0ZXh0MikgPSByb290LmNoaWxkTm9kZXMKKyAgICAgICAgdGV4dDMgPSBlbG0xLmNoaWxkTm9kZXNbMF0KKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0MS5wcmV2aW91c1NpYmxpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDEubmV4dFNpYmxpbmcsIGVsbTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5wcmV2aW91c1NpYmxpbmcsIHRleHQxKQorICAgICAgICBzZWxmLmFzc2VydElzKGVsbTEubmV4dFNpYmxpbmcsIHRleHQyKQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQyLnByZXZpb3VzU2libGluZywgZWxtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDIubmV4dFNpYmxpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQzLnByZXZpb3VzU2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDMubmV4dFNpYmxpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LnBhcmVudE5vZGUsIGRvYykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0MS5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKGVsbTEucGFyZW50Tm9kZSwgcm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0Mi5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQzLnBhcmVudE5vZGUsIGVsbTEpCisgICAgICAgIGRvYy51bmxpbmsoKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoUHVsbERPTVRlc3RDYXNlLCBUaG9yb3VnaFRlc3RDYXNlLCBTQVgyRE9NVGVzdENhc2UpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weSBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKaW5kZXggYzVhOGU5OC4uOGUyMDAxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CkBAIC0xOTgsNyArMTk4LDcgQEAKIG1pc3NpbmdfcGF0dGVybiA9ICJubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJyVzJyIKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKLWJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVzIgorYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCiAKIGRlZiBydW5fcHlkb2MobW9kdWxlX25hbWUsICphcmdzLCAqKmVudik6CiAgICAgIiIiCkBAIC0yMzYsOCArMjM2LDggQEAKIGRlZiBwcmludF9kaWZmcyh0ZXh0MSwgdGV4dDIpOgogICAgICJQcmludHMgdW5pZmllZCBkaWZmcyBmb3IgdHdvIHRleHRzIgogICAgICMgWFhYIG5vdyBvYnNvbGV0ZSwgdXNlIHVuaXR0ZXN0IGJ1aWx0LWluIHN1cHBvcnQKLSAgICBsaW5lczEgPSB0ZXh0MS5zcGxpdGxpbmVzKFRydWUpCi0gICAgbGluZXMyID0gdGV4dDIuc3BsaXRsaW5lcyhUcnVlKQorICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKKyAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgZGlmZnMgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihsaW5lczEsIGxpbmVzMiwgbj0wLCBmcm9tZmlsZT0nZXhwZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9maWxlPSdnb3QnKQogICAgIHByaW50KCdcbicgKyAnJy5qb2luKGRpZmZzKSkKQEAgLTI1NCw2ICsyNTQsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X2h0bWxfZG9jKHNlbGYpOgogICAgICAgICByZXN1bHQsIGRvY19sb2MgPSBnZXRfcHlkb2NfaHRtbChweWRvY19tb2QpCiAgICAgICAgIG1vZF9maWxlID0gaW5zcGVjdC5nZXRhYnNmaWxlKHB5ZG9jX21vZCkKQEAgLTI2OSw2ICsyNzEsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X3RleHRfZG9jKHNlbGYpOgogICAgICAgICByZXN1bHQsIGRvY19sb2MgPSBnZXRfcHlkb2NfdGV4dChweWRvY19tb2QpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF90ZXh0X3BhdHRlcm4gJSBcCkBAIC0zMjEsNiArMzI1LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAnRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUnKQorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxzX18gdW5leHBlY3RlZGx5JykKICAgICBkZWYgdGVzdF9oZWxwX291dHB1dF9yZWRpcmVjdChzZWxmKToKICAgICAgICAgIyBpc3N1ZSA5NDAyODYsIGlmIG91dHB1dCBpcyBzZXQgaW4gSGVscGVyLCB0aGVuIGFsbCBvdXRwdXQgZnJvbQogICAgICAgICAjIEhlbHBlci5oZWxwIHNob3VsZCBiZSByZWRpcmVjdGVkCkBAIC0zODgsMTEgKzM5NCwxMCBAQAogICAgICAgICBtb2RuYW1lID0gJ3Rlc3Rtb2RfeHl6enknCiAgICAgICAgIHRlc3RwYWlycyA9ICgKICAgICAgICAgICAgICgnaV9hbV9ub3RfaGVyZScsICdpX2FtX25vdF9oZXJlJyksCi0gICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZV9laXRoZXInLCAnaV9hbV9ub3RfaGVyZV9laXRoZXInKSwKLSAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlLm5laXRoZXJfYW1faScsICdpX2FtX25vdF9oZXJlLm5laXRoZXJfYW1faScpLAotICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlLnt9Jy5mb3JtYXQobW9kbmFtZSksCi0gICAgICAgICAgICAgJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSksCi0gICAgICAgICAgICAoJ3Rlc3Que30nLmZvcm1hdChtb2RuYW1lKSwgbW9kbmFtZSksCisgICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZV9laXRoZXInLCAndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicpLAorICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJywgJ3Rlc3QuaV9hbV9ub3RfaGVyZScpLAorICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlLnt9Jy5mb3JtYXQobW9kbmFtZSksICdpX2FtX25vdF9oZXJlJyksCisgICAgICAgICAgICAoJ3Rlc3Que30nLmZvcm1hdChtb2RuYW1lKSwgJ3Rlc3Que30nLmZvcm1hdChtb2RuYW1lKSksCiAgICAgICAgICAgICApCiAKICAgICAgICAgc291cmNlZm4gPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCBtb2RuYW1lKSArIG9zLmV4dHNlcCArICJweSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CmluZGV4IGUwMmMxYWYuLmJlNWMxYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQpAQCAtNCw2ICs0LDcgQEAKICIiIlRlc3RzIGZvciB0aGUgcmFpc2Ugc3RhdGVtZW50LiIiIgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTc3LDYgKzc4LDE2IEBACiAgICAgICAgICAgICAgICAgbmVzdGVkX3JlcmFpc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJlcmFpc2UpCiAKKyAgICBkZWYgdGVzdF9yYWlzZV9mcm9tX05vbmUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZvbyIpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpIGZyb20gTm9uZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZS5fX2NvbnRleHRfXywgVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorCiAgICAgZGVmIHRlc3Rfd2l0aF9yZXJhaXNlMShzZWxmKToKICAgICAgICAgZGVmIHJlcmFpc2UoKToKICAgICAgICAgICAgIHRyeToKQEAgLTEzMCw4ICsxNDEsMzUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgcmFpc2UgTXlFeGNlcHRpb24KIAorICAgIGRlZiB0ZXN0X2Fzc2VydF93aXRoX3R1cGxlX2FyZyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAoMywpCisgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICIoMywpIikKKworCiAKIGNsYXNzIFRlc3RDYXVzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdENhdXNlU3ludGF4KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yIGZyb20gTm9uZQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NhdXNlX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgICAgICAgICBleGMuX19zdXBwcmVzc19jb250ZXh0X18gPSBGYWxzZQorICAgICAgICAgICAgICAgIHJhaXNlIGV4YworICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICBlID0gZXhjCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIFR5cGVFcnJvcikKKwogICAgIGRlZiB0ZXN0X2ludmFsaWRfY2F1c2Uoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IgZnJvbSA1CkBAIC0xNzEsNiArMjA5LDcgQEAKIAogCiBjbGFzcyBUZXN0VHJhY2ViYWNrKHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X3NldHNfdHJhY2ViYWNrKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggNzc2ZDBjNC4uYjU5MzFiYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTM0LDggKzM0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZHNlcSwgc2VsZi5yYW5kb21saXN0KE4pKQogCiAgICAgZGVmIHRlc3Rfc2VlZGFyZ3Moc2VsZik6CisgICAgICAgICMgU2VlZCB2YWx1ZSB3aXRoIGEgbmVnYXRpdmUgaGFzaC4KKyAgICAgICAgY2xhc3MgTXlTZWVkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xNzI5CiAgICAgICAgIGZvciBhcmcgaW4gW05vbmUsIDAsIDAsIDEsIDEsIC0xLCAtMSwgMTAqKjIwLCAtKDEwKioyMCksCi0gICAgICAgICAgICAgICAgICAgIDMuMTQsIDErMmosICdhJywgdHVwbGUoJ2FiYycpXToKKyAgICAgICAgICAgICAgICAgICAgMy4xNCwgMSsyaiwgJ2EnLCB0dXBsZSgnYWJjJyksIE15U2VlZCgpXToKICAgICAgICAgICAgIHNlbGYuZ2VuLnNlZWQoYXJnKQogICAgICAgICBmb3IgYXJnIGluIFtsaXN0KHJhbmdlKDMpKSwgZGljdChvbmU9MSldOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmdlbi5zZWVkLCBhcmcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCBlZGUwNzkxLi5mMTgwNDZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTM0MSwxMyArMzQxLDM1IEBACiAKICAgICBkZWYgdGVzdF9waWNrbGluZyhzZWxmKToKICAgICAgICAgdGVzdGNhc2VzID0gWygxMywpLCAoMCwgMTEpLCAoLTIyLCAxMCksICgyMCwgMywgLTEpLAotICAgICAgICAgICAgICAgICAgICAgKDEzLCAyMSwgMyksICgtMiwgMiwgMildCisgICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKSwgKDIqKjY1LCAyKio2NSsyKV0KICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3IgdCBpbiB0ZXN0Y2FzZXM6CiAgICAgICAgICAgICAgICAgciA9IHJhbmdlKCp0KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHIsIHByb3RvKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyKSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICB0ZXN0Y2FzZXMgPSBbKDEzLCksICgwLCAxMSksICgtMjIsIDEwKSwgKDIwLCAzLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKSwgKDIqKjY1LCAyKio2NSsyKV0KKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICBmb3IgdCBpbiB0ZXN0Y2FzZXM6CisgICAgICAgICAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIocmFuZ2UoKnQpKQorICAgICAgICAgICAgICAgIGRhdGEgPSBsaXN0KHJhbmdlKCp0KSkKKworICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhKQorCisgICAgICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGFbMTpdKQorCiAgICAgZGVmIHRlc3Rfb2RkX2J1ZyhzZWxmKToKICAgICAgICAgIyBUaGlzIHVzZWQgdG8gcmFpc2UgYSAiU3lzdGVtRXJyb3I6IE5VTEwgcmVzdWx0IHdpdGhvdXQgZXJyb3IiCiAgICAgICAgICMgYmVjYXVzZSB0aGUgcmFuZ2UgdmFsaWRhdGlvbiBzdGVwIHdhcyBlYXRpbmcgdGhlIGV4Y2VwdGlvbgpAQCAtNTA3LDYgKzUyOSw4NyBAQAogICAgICAgICAgICAgICAgIGZvciBrIGluIHZhbHVlcyAtIHswfToKICAgICAgICAgICAgICAgICAgICAgcltpOmo6a10KIAorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIHRlc3RfcmFuZ2VzID0gW3JhbmdlKDApLCByYW5nZSgwLCAtMSksIHJhbmdlKDEsIDEsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgxKSwgcmFuZ2UoNSwgNiksIHJhbmdlKDUsIDYsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICByYW5nZSg1LCA3LCAyKSwgcmFuZ2UoMiksIHJhbmdlKDAsIDQsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCA1LCAyKSwgcmFuZ2UoMCwgNiwgMildCisgICAgICAgIHRlc3RfdHVwbGVzID0gbGlzdChtYXAodHVwbGUsIHRlc3RfcmFuZ2VzKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgZXF1YWxpdHkgb2YgcmFuZ2VzIG1hdGNoZXMgZXF1YWxpdHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgIyB0dXBsZXMgZm9yIGVhY2ggcGFpciBmcm9tIHRoZSB0ZXN0IGxpc3RzIGFib3ZlLgorICAgICAgICByYW5nZXNfZXEgPSBbYSA9PSBiIGZvciBhIGluIHRlc3RfcmFuZ2VzIGZvciBiIGluIHRlc3RfcmFuZ2VzXQorICAgICAgICB0dXBsZXNfZXEgPSBbYSA9PSBiIGZvciBhIGluIHRlc3RfdHVwbGVzIGZvciBiIGluIHRlc3RfdHVwbGVzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlc19lcSwgdHVwbGVzX2VxKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCAhPSBjb3JyZWN0bHkgZ2l2ZXMgdGhlIGxvZ2ljYWwgbmVnYXRpb24gb2YgPT0KKyAgICAgICAgcmFuZ2VzX25lID0gW2EgIT0gYiBmb3IgYSBpbiB0ZXN0X3JhbmdlcyBmb3IgYiBpbiB0ZXN0X3Jhbmdlc10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZXNfbmUsIFtub3QgeCBmb3IgeCBpbiByYW5nZXNfZXFdKQorCisgICAgICAgICMgRXF1YWwgcmFuZ2VzIHNob3VsZCBoYXZlIGVxdWFsIGhhc2hlcy4KKyAgICAgICAgZm9yIGEgaW4gdGVzdF9yYW5nZXM6CisgICAgICAgICAgICBmb3IgYiBpbiB0ZXN0X3JhbmdlczoKKyAgICAgICAgICAgICAgICBpZiBhID09IGI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChhKSwgaGFzaChiKSkKKworICAgICAgICAjIFJhbmdlcyBhcmUgdW5lcXVhbCB0byBvdGhlciB0eXBlcyAoZXZlbiBzZXF1ZW5jZSB0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyYW5nZSgwKSA9PSAoKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKCkgPT0gcmFuZ2UoMCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydElzKHJhbmdlKDIpID09IFswLCAxXSwgRmFsc2UpCisKKyAgICAgICAgIyBIdWdlIGludGVnZXJzIGFyZW4ndCBhIHByb2JsZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2UoMCwgMioqMTAwIC0gMSwgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMCwgMioqMTAwLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHJhbmdlKDAsIDIqKjEwMCAtIDEsIDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKHJhbmdlKDAsIDIqKjEwMCwgMikpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJhbmdlKDAsIDIqKjEwMCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMCwgMioqMTAwICsgMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2UoMioqMjAwLCAyKioyMDEgLSAyKio5OSwgMioqMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgyKioyMDAsIDIqKjIwMSwgMioqMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHJhbmdlKDIqKjIwMCwgMioqMjAxIC0gMioqOTksIDIqKjEwMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gocmFuZ2UoMioqMjAwLCAyKioyMDEsIDIqKjEwMCkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJhbmdlKDIqKjIwMCwgMioqMjAxLCAyKioxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDIqKjIwMCwgMioqMjAxICsgMSwgMioqMTAwKSkKKworICAgICAgICAjIE9yZGVyIGNvbXBhcmlzb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgZm9yIHJhbmdlcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPCByYW5nZSgwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA+IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApIDw9IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApID49IHJhbmdlKDApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgc3RhcnQsIHN0b3AgYW5kIHN0ZXAgYXR0cmlidXRlcyBvZiByYW5nZSBvYmplY3RzCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDApLCAwLCAwLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgxMCksIDAsIDEwLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgtMTApLCAwLCAtMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDAsIDEwLCAxKSwgMCwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDAsIDEwLCAzKSwgMCwgMTAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDEwLCAwLCAtMSksIDEwLCAwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMTAsIDAsIC0zKSwgMTAsIDAsIC0zKQorCisgICAgZGVmIGFzc2VydF9hdHRycyhzZWxmLCByYW5nZW9iaiwgc3RhcnQsIHN0b3AsIHN0ZXApOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZW9iai5zdG9wLCBzdG9wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0ZXAsIHN0ZXApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICByYW5nZW9iai5zdGFydCA9IDAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICByYW5nZW9iai5zdG9wID0gMTAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICByYW5nZW9iai5zdGVwID0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0YXJ0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0b3AKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RlcAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChSYW5nZVRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCA5NDBiYTM5Li45YjBhYTc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTQ2Niw3ICs0NjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3BhbigpLCBzcGFuKQogCiAgICAgZGVmIHRlc3RfcmVfZXNjYXBlKHNlbGYpOgotICAgICAgICBhbG51bV9jaGFycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgICAgICBhbG51bV9jaGFycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfJwogICAgICAgICBwID0gJycuam9pbihjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KSkKICAgICAgICAgZm9yIGMgaW4gcDoKICAgICAgICAgICAgIGlmIGMgaW4gYWxudW1fY2hhcnM6CkBAIC00NzksNyArNDc5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRNYXRjaChyZS5lc2NhcGUocCksIHApCiAKICAgICBkZWYgdGVzdF9yZV9lc2NhcGVfYnl0ZShzZWxmKToKLSAgICAgICAgYWxudW1fY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgYWxudW1fY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ18nKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgcCA9IGJ5dGVzKHJhbmdlKDI1NikpCiAgICAgICAgIGZvciBpIGluIHA6CiAgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQpAQCAtNTI2LDI0ICs1MjYsOTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUuY29tcGlsZSgnXnBhdHRlcm4kJywgZmxhZyksIE5vbmUpCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2xpdGVyYWxzKHNlbGYpOgotICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM28iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJcJTAzbzAiICUgaSwgY2hyKGkpKyIwIiksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM284IiAlIGksIGNocihpKSsiOCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeCIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeDAiICUgaSwgY2hyKGkpKyIwIiksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXHglMDJ4eiIgJSBpLCBjaHIoaSkrInoiKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCAiXDkxMSIsICIiKQorICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKKyAgICAgICAgICAgIGlmIGkgPCAyNTY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcJTAzbyIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM28wIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM284IiAlIGksIGNocihpKSsiOCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4IiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJceCUwMngwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4eiIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgICAgIGlmIGkgPCAweDEwMDAwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4IiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcdSUwNHgwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4eiIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXFUlMDh4IiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eDAiICUgaSwgY2hyKGkpKyIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDAiLCAiXDAwMCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwOCIsICJcMDAwOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwMSIsICJcMDAxIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDAxOCIsICJcMDAxOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlw1NjciLCBjaHIoMG8xNjcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlw5MTEiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHgxeiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHUxMjMiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzeiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0IiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMDEyMzR6IiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMTEwMDAwIiwgIiIpCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2NsYXNzX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKKyAgICAgICAgICAgIGlmIGkgPCAyNTY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCVvXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlbzhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCUwM29dIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCUwM28wXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvOF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltceCUwMnhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4MF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltceCUwMnh6XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgaWYgaSA8IDB4MTAwMDA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHUlMDR4XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eDBdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHUlMDR4el0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eDBdIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXFUlMDh4el0iICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXDkxMV0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltceDF6XSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x1MTIzel0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMDEyMzR6XSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAxMTAwMDBdIiwgIiIpCisKKyAgICBkZWYgdGVzdF9zcmVfYnl0ZV9saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltcJTAzb10iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXCUwM28wXSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltcJTAzbzhdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1x4JTAyeF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXHglMDJ4MF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXHglMDJ4el0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCAiW1w5MTFdIiwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJcJTAzbyIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJcJTAzbzAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJcJTAzbzgiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiI4IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXHglMDJ4MCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlx4JTAyeHoiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiJ6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlx1IiwgYid1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlxVIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwOCIsIGIiXDAwMDgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDAxIiwgYiJcMDAxIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwMTgiLCBiIlwwMDE4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlw1NjciLCBieXRlcyhbMG8xNjddKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXDkxMSIsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDEiLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxeiIsIGIiIikKKworICAgIGRlZiB0ZXN0X3NyZV9ieXRlX2NsYXNzX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCVvXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCVvOF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlMDNvXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCUwM28wXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCUwM284XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXHglMDJ4XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXHglMDJ4MF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiW1x1XSIsIGIndScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJbXFVdIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1w5MTFdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1x4MXpdIiwgIiIpCiAKICAgICBkZWYgdGVzdF9idWdfMTEzMjU0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKGEpfChiKScsICdiJykuc3RhcnQoMSksIC0xKQpAQCAtNjUyLDYgKzcyMCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKIAorICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgMSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQorCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCBwb3M9MSwgZW5kcG9zPTEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKKworICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgZW5kcG9zPTEwLCBwb3M9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCisKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIHBvcz0zLCBlbmRwb3M9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjo6IiwgIjo6Il0pCisKICAgICBkZWYgdGVzdF9idWdfOTI2MDc1KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuY29tcGlsZSgnYnVnXzkyNjA3NScpIGlzIG5vdAogICAgICAgICAgICAgICAgICAgICAgcmUuY29tcGlsZShiJ2J1Z185MjYwNzUnKSkKQEAgLTgxOCw2ICs5MDYsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgX3NyZS5jb21waWxlLCAiYWJjIiwgMCwgW2xvbmdfb3ZlcmZsb3ddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zcmUuY29tcGlsZSwge30sIDAsIFtdKQogCisgICAgZGVmIHRlc3Rfc2VhcmNoX2RvdF91bmljb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNhYmMtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1x4ZTktJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1x1MjBhYy0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXFUwMDEwZmZmZi0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXHhlOVx1MjBhY1xVMDAxMGZmZmYtJykpCisKICAgICBkZWYgdGVzdF9jb21waWxlKHNlbGYpOgogICAgICAgICAjIFRlc3QgcmV0dXJuIHZhbHVlIHdoZW4gZ2l2ZW4gc3RyaW5nIGFuZCBwYXR0ZXJuIGFzIHBhcmFtZXRlcgogICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgncmFuZG9tIHBhdHRlcm4nKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5IGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CmluZGV4IGIwZGM0ZDcuLjU4OWVjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKQEAgLTMsMTIgKzMsMTQgQEAKICAgTmljayBNYXRoZXdzb24KICIiIgogCitpbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQogZnJvbSByZXBybGliIGltcG9ydCByZXByIGFzIHIgIyBEb24ndCBzaGFkb3cgYnVpbHRpbiByZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKQEAgLTEyOSw4ICsxMzEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHMuZmluZCgiLi4uIiksIFsxMiwgMTNdKQogCiAgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihsYW1iZGEgeDogeCkuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICI8ZnVuY3Rpb24gPGxhbWJkYSIpKQorICAgICAgICByID0gcmVwcihsYW1iZGEgeDogeCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgiPGZ1bmN0aW9uIFJlcHJUZXN0cy50ZXN0X2xhbWJkYS48bG9jYWxzPi48bGFtYmRhIiksIHIpCiAgICAgICAgICMgWFhYIGFub255bW91cyBmdW5jdGlvbnM/ICBzZWUgZnVuY19yZXByCiAKICAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTkzLDI2ICsxOTUsMjkgQEAKICAgICAgICAgcih5KQogICAgICAgICByKHopCiAKLWRlZiB0b3VjaChwYXRoLCB0ZXh0PScnKToKLSAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgIGZwLndyaXRlKHRleHQpCi0gICAgZnAuY2xvc2UoKQorZGVmIHdyaXRlX2ZpbGUocGF0aCwgdGV4dCk6CisgICAgd2l0aCBvcGVuKHBhdGgsICd3JywgZW5jb2Rpbmc9J0FTQ0lJJykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKHRleHQpCiAKIGNsYXNzIExvbmdSZXByVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbG9uZ25hbWUgPSAnYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uJworCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBsb25nbmFtZSA9ICdhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24nCi0gICAgICAgIHNlbGYucGtnbmFtZSA9IG9zLnBhdGguam9pbihsb25nbmFtZSkKLSAgICAgICAgc2VsZi5zdWJwa2duYW1lID0gb3MucGF0aC5qb2luKGxvbmduYW1lLCBsb25nbmFtZSkKKyAgICAgICAgc2VsZi5wa2duYW1lID0gb3MucGF0aC5qb2luKHNlbGYubG9uZ25hbWUpCisgICAgICAgIHNlbGYuc3VicGtnbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLmxvbmduYW1lLCBzZWxmLmxvbmduYW1lKQogICAgICAgICAjIE1ha2UgdGhlIHBhY2thZ2UgYW5kIHN1YnBhY2thZ2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnBrZ25hbWUsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wa2duYW1lKQotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5wa2duYW1lLCAnX19pbml0X18ucHknKSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5zdWJwa2duYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuc3VicGtnbmFtZSkKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdfX2luaXRfXy5weScpKQogICAgICAgICAjIFJlbWVtYmVyIHdoZXJlIHdlIGFyZQogICAgICAgICBzZWxmLmhlcmUgPSBvcy5nZXRjd2QoKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2VsZi5oZXJlKQorICAgICAgICAjIFdoZW4gcmVncnRlc3QgaXMgcnVuIHdpdGggaXRzIC1qIG9wdGlvbiwgdGhpcyBjb21tYW5kIGFsb25lIGlzIG5vdAorICAgICAgICAjIGVub3VnaC4KKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYWN0aW9ucyA9IFtdCkBAIC0yMjksMjAgKzIzNCw0MCBAQAogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwKQogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KIAorICAgIGRlZiBfY2hlY2tfcGF0aF9saW1pdGF0aW9ucyhzZWxmLCBtb2R1bGVfbmFtZSk6CisgICAgICAgICMgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgc291cmNlX3BhdGhfbGVuID0gbGVuKHNlbGYuaGVyZSkKKyAgICAgICAgIyBhIHBhdGggc2VwYXJhdG9yICsgYGxvbmduYW1lYCAodHdpY2UpCisgICAgICAgIHNvdXJjZV9wYXRoX2xlbiArPSAyICogKGxlbihzZWxmLmxvbmduYW1lKSArIDEpCisgICAgICAgICMgYSBwYXRoIHNlcGFyYXRvciArIGBtb2R1bGVfbmFtZWAgKyAiLnB5IgorICAgICAgICBzb3VyY2VfcGF0aF9sZW4gKz0gbGVuKG1vZHVsZV9uYW1lKSArIDEgKyBsZW4oIi5weSIpCisgICAgICAgIGNhY2hlZF9wYXRoX2xlbiA9IHNvdXJjZV9wYXRoX2xlbiArIGxlbihpbXAuY2FjaGVfZnJvbV9zb3VyY2UoIngucHkiKSkgLSBsZW4oIngucHkiKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIGNhY2hlZF9wYXRoX2xlbiA+PSAyNTg6CisgICAgICAgICAgICAjIFVuZGVyIFdpbmRvd3MsIHRoZSBtYXggcGF0aCBsZW4gaXMgMjYwIGluY2x1ZGluZyBDJ3MgdGVybWluYXRpbmcKKyAgICAgICAgICAgICMgTlVMIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3JTI4dj12cy44NSUyOS5hc3B4I21heHBhdGgpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHBhdGhzIHRvbyBsb25nICglZCBjaGFyYWN0ZXJzKSBmb3IgV2luZG93cycgMjYwIGNoYXJhY3RlciBsaW1pdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjYWNoZWRfcGF0aF9sZW4pCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAnbnQnIGFuZCB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoImNhY2hlZF9wYXRoX2xlbiA9IiwgY2FjaGVkX3BhdGhfbGVuKQorCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKHNlbGYucGtnbmFtZSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbgotICAgICAgICBlcShyZXByKGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiksCi0gICAgICAgICAgICI8bW9kdWxlICclcycgZnJvbSAnJXMnPiIgJSAoYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLl9fbmFtZV9fLCBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uX19maWxlX18pKQotICAgICAgICBlcShyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKKyAgICAgICAgbW9kdWxlID0gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2R1bGUpLCAiPG1vZHVsZSAlciBmcm9tICVyPiIgJSAobW9kdWxlLl9fbmFtZV9fLCBtb2R1bGUuX19maWxlX18pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygnZm9vJykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAogY2xhc3MgZm9vKG9iamVjdCk6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGZvbwogICAgICAgICBlcShyZXByKGZvby5mb28pLAogICAgICAgICAgICAgICAgIjxjbGFzcyAnJXMuZm9vJz4iICUgZm9vLl9fbmFtZV9fKQpAQCAtMjUzLDM5ICsyNzgsNDYgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfY2xhc3Moc2VsZik6Ci0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdiYXInKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAogY2xhc3MgYmFyOgogICAgIHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBiYXIKICAgICAgICAgIyBNb2R1bGUgbmFtZSBtYXkgYmUgcHJlZml4ZWQgd2l0aCAidGVzdC4iLCBkZXBlbmRpbmcgb24gaG93IHJ1bi4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGJhci5iYXIpLCAiPGNsYXNzICclcy5iYXInPiIgJSBiYXIuX19uYW1lX18pCiAKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCiBjbGFzcyBiYXo6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGJhegogICAgICAgICBpYmF6ID0gYmF6LmJheigpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKGliYXopLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAiPCVzLmJheiBvYmplY3QgYXQgMHgiICUgYmF6Ll9fbmFtZV9fKSkKIAogICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygncXV4JykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAogY2xhc3MgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE6CiAgICAgZGVmIGFtZXRob2Qoc2VsZik6IHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBxdXgKICAgICAgICAgIyBVbmJvdW5kIG1ldGhvZHMgZmlyc3QKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QpLnN0YXJ0c3dpdGgoCi0gICAgICAgICc8ZnVuY3Rpb24gYW1ldGhvZCcpKQorICAgICAgICByID0gcmVwcihxdXguYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnPGZ1bmN0aW9uIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QnKSwgcikKICAgICAgICAgIyBCb3VuZCBtZXRob2QgbmV4dAogICAgICAgICBpcXV4ID0gcXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoaXF1eC5hbWV0aG9kKS5zdGFydHN3aXRoKAorICAgICAgICByID0gcmVwcihpcXV4LmFtZXRob2QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAnPGJvdW5kIG1ldGhvZCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kIG9mIDwlcy5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSBvYmplY3QgYXQgMHgnIFwKLSAgICAgICAgICAgICUgKHF1eC5fX25hbWVfXywpICkpCisgICAgICAgICAgICAlIChxdXguX19uYW1lX18sKSApLCByKQogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKICAgICAgICAgIyBYWFggdGVzdCBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2l0aCByZWFsbHkgbG9uZyBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IGY4ZjM3MTcuLjBiNjI5ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTIyMCw2ICsyMjAsNyBAQAogICAgICAgICBmb3IgZnVuYyBpbiAoZG8sIG9wZXJhdG9yLm5vdF8pOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBmdW5jLCBCYWQoKSkKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9yZWN1cnNpb24oc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBjb21wYXJpc29uIGZvciByZWN1cnNpdmUgb2JqZWN0cyBmYWlscyBncmFjZWZ1bGx5CiAgICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCA2ZTljNGZjLi44YjQ0M2Y2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTUsMTEgKzUsMTUgQEAKIGltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgcHlfY29tcGlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCBydW5fdW5pdHRlc3QsIHVubG9hZCwgdmVyYm9zZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKKyAgICBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCisgICAgY3JlYXRlX2VtcHR5X2ZpbGUpCiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsIHRlbXBfZGlyKQogCisKIGltcG9ydCBydW5weQogZnJvbSBydW5weSBpbXBvcnQgX3J1bl9jb2RlLCBfcnVuX21vZHVsZV9jb2RlLCBydW5fbW9kdWxlLCBydW5fcGF0aAogIyBOb3RlOiBUaGlzIG1vZHVsZSBjYW4ndCBzYWZlbHkgdGVzdCBfcnVuX21vZHVsZV9hc19tYWluIGFzIGl0CkBAIC0xNDUsNyArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9wYWNrYWdlKQogICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCiAKLQorIyBUT0RPOiBVc2Ugc2VsZi5hZGRDbGVhbnVwIHRvIGdldCByaWQgb2YgYSBsb3Qgb2YgdHJ5LWZpbmFsbHkgYmxvY2tzCiBjbGFzcyBSdW5Nb2R1bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgQ29kZUV4ZWN1dGlvbk1peGluKToKICAgICAiIiJVbml0IHRlc3RzIGZvciBydW5weS5ydW5fbW9kdWxlIiIiCiAKQEAgLTE3NSw4ICsxNzksNyBAQAogICAgIGRlZiBfYWRkX3BrZ19kaXIoc2VsZiwgcGtnX2Rpcik6CiAgICAgICAgIG9zLm1rZGlyKHBrZ19kaXIpCiAgICAgICAgIHBrZ19mbmFtZSA9IG9zLnBhdGguam9pbihwa2dfZGlyLCAiX19pbml0X18ucHkiKQotICAgICAgICBwa2dfZmlsZSA9IG9wZW4ocGtnX2ZuYW1lLCAidyIpCi0gICAgICAgIHBrZ19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUocGtnX2ZuYW1lKQogICAgICAgICByZXR1cm4gcGtnX2ZuYW1lCiAKICAgICBkZWYgX21ha2VfcGtnKHNlbGYsIHNvdXJjZSwgZGVwdGgsIG1vZF9iYXNlPSJydW5weV90ZXN0Iik6CkBAIC0yNTIsMTAgKzI1NSwxMiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBzb3VyY2U6IiwgbW9kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIGxvYWRlciBjYWNoZXMgcGF0aHMKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBtb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2ZpeF9uc19mb3JfbGVnYWN5X3B5YyhleHBlY3RlZF9ucywgYWx0ZXJfc3lzKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQpAQCAtMjg1LDExICsyOTAsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gc291cmNlOiIsIHBrZ19uYW1lKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSBsb2FkZXIgY2FjaGVzIHBhdGhzCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBwa2dfbmFtZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBzZWxmLl9maXhfbnNfZm9yX2xlZ2FjeV9weWMoZXhwZWN0ZWRfbnMsIGFsdGVyX3N5cykKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKICAgICAgICAgZmluYWxseToKQEAgLTMwNiw4ICszMTMsNyBAQAogICAgICAgICAgICAgbW9kdWxlX2RpciA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyLCBwa2dfbmFtZSkKICAgICAgICAgIyBBZGQgc2libGluZyBtb2R1bGUKICAgICAgICAgc2libGluZ19mbmFtZSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyLCAic2libGluZy5weSIpCi0gICAgICAgIHNpYmxpbmdfZmlsZSA9IG9wZW4oc2libGluZ19mbmFtZSwgInciKQotICAgICAgICBzaWJsaW5nX2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShzaWJsaW5nX2ZuYW1lKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgc2libGluZyBtb2R1bGU6Iiwgc2libGluZ19mbmFtZSkKICAgICAgICAgIyBBZGQgbmVwaGV3IG1vZHVsZQogICAgICAgICB1bmNsZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGFyZW50X2RpciwgInVuY2xlIikKQEAgLTMxNyw4ICszMjMsNyBAQAogICAgICAgICBzZWxmLl9hZGRfcGtnX2Rpcihjb3VzaW5fZGlyKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgY291c2luIHBhY2thZ2U6IiwgY291c2luX2RpcikKICAgICAgICAgbmVwaGV3X2ZuYW1lID0gb3MucGF0aC5qb2luKGNvdXNpbl9kaXIsICJuZXBoZXcucHkiKQotICAgICAgICBuZXBoZXdfZmlsZSA9IG9wZW4obmVwaGV3X2ZuYW1lLCAidyIpCi0gICAgICAgIG5lcGhld19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUobmVwaGV3X2ZuYW1lKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgbmVwaGV3IG1vZHVsZToiLCBuZXBoZXdfZm5hbWUpCiAKICAgICBkZWYgX2NoZWNrX3JlbGF0aXZlX2ltcG9ydHMoc2VsZiwgZGVwdGgsIHJ1bl9uYW1lPU5vbmUpOgpAQCAtMzQzLDExICszNDgsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpYmxpbmciLCBkMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5lcGhldyIsIGQxKQogICAgICAgICAgICAgZGVsIGQxICMgRW5zdXJlIF9fbG9hZGVyX18gZW50cnkgZG9lc24ndCBrZWVwIGZpbGUgb3BlbgorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSB0aGUgbG9hZGVyIGNhY2hlcyBwYXRocwogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gY29tcGlsZWQ6IiwgbW9kX25hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgZDIgPSBydW5fbW9kdWxlKG1vZF9uYW1lLCBydW5fbmFtZT1ydW5fbmFtZSkgIyBSZWFkIGZyb20gYnl0ZWNvZGUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDJbIl9fbmFtZV9fIl0sIGV4cGVjdGVkX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyWyJfX3BhY2thZ2VfXyJdLCBwa2dfbmFtZSkKQEAgLTQwNyw2ICs0MTQsNDAgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2RlbF9wa2cocGtnX2RpciwgZGVwdGgsIG1vZF9uYW1lKQogCisgICAgZGVmIHRlc3RfcGtndXRpbF93YWxrX3BhY2thZ2VzKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgYSBkb2RneSBoYWNrIHRvIHVzZSB0aGUgdGVzdF9ydW5weSBpbmZyYXN0cnVjdHVyZSB0byB0ZXN0CisgICAgICAgICMgaXNzdWUgIzE1MzQzLiBJc3N1ZSAjMTUzNDggZGVjbGFyZXMgdGhpcyBpcyBpbmRlZWQgYSBkb2RneSBoYWNrIDspCisgICAgICAgIGltcG9ydCBwa2d1dGlsCisgICAgICAgIG1heF9kZXB0aCA9IDQKKyAgICAgICAgYmFzZV9uYW1lID0gIl9fcnVucHlfcGtnX18iCisgICAgICAgIHBhY2thZ2Vfc3VmZml4ZXMgPSBbInVuY2xlIiwgInVuY2xlLmNvdXNpbiJdCisgICAgICAgIG1vZHVsZV9zdWZmaXhlcyA9IFsidW5jbGUuY291c2luLm5lcGhldyIsIGJhc2VfbmFtZSArICIuc2libGluZyJdCisgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzID0gc2V0KCkKKyAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcyA9IHNldCgpCisgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgxLCBtYXhfZGVwdGgpOgorICAgICAgICAgICAgcGtnX25hbWUgPSAiLiIuam9pbihbYmFzZV9uYW1lXSAqIGRlcHRoKQorICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lKQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gcGFja2FnZV9zdWZmaXhlczoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUgKyAiLiIgKyBuYW1lKQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gbW9kdWxlX3N1ZmZpeGVzOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMuYWRkKHBrZ19uYW1lICsgIi4iICsgbmFtZSkKKyAgICAgICAgcGtnX25hbWUgPSAiLiIuam9pbihbYmFzZV9uYW1lXSAqIG1heF9kZXB0aCkKKyAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lKQorICAgICAgICBleHBlY3RlZF9tb2R1bGVzLmFkZChwa2dfbmFtZSArICIucnVucHlfdGVzdCIpCisgICAgICAgIHBrZ19kaXIsIG1vZF9mbmFtZSwgbW9kX25hbWUgPSAoCisgICAgICAgICAgICAgICBzZWxmLl9tYWtlX3BrZygiIiwgbWF4X2RlcHRoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuX2RlbF9wa2csIHBrZ19kaXIsIG1heF9kZXB0aCwgbW9kX25hbWUpCisgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgyLCBtYXhfZGVwdGgrMSk6CisgICAgICAgICAgICBzZWxmLl9hZGRfcmVsYXRpdmVfbW9kdWxlcyhwa2dfZGlyLCAiIiwgZGVwdGgpCisgICAgICAgIGZvciBmaW5kZXIsIG1vZF9uYW1lLCBpc3BrZyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKQorICAgICAgICAgICAgaWYgaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tb2R1bGVzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfcGFja2FnZXMpLCAwLCBleHBlY3RlZF9wYWNrYWdlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbW9kdWxlcyksIDAsIGV4cGVjdGVkX21vZHVsZXMpCiAKIGNsYXNzIFJ1blBhdGhUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgQ29kZUV4ZWN1dGlvbk1peGluKToKICAgICAiIiJVbml0IHRlc3RzIGZvciBydW5weS5ydW5fcGF0aCIiIgpAQCAtNTA3LDYgKzU0OCw3IEBACiAgICAgICAgICAgICBtc2cgPSAiY2FuJ3QgZmluZCAnX19tYWluX18nIG1vZHVsZSBpbiAlciIgJSB6aXBfbmFtZQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHppcF9uYW1lLCBtc2cpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X21haW5fcmVjdXJzaW9uX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpciwgdGVtcF9kaXIoKSBhcyBkdW1teV9kaXI6CiAgICAgICAgICAgICBtb2RfbmFtZSA9ICdfX21haW5fXycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5IGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKaW5kZXggMTIyNWQ2ZS4uOGUwMDg4OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zYXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKQEAgLTIwLDggKzIwLDggQEAKIFRFU1RfWE1MRklMRSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogVEVTVF9YTUxGSUxFX09VVCA9IGZpbmRmaWxlKCJ0ZXN0LnhtbC5vdXQiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIHRyeToKLSAgICBURVNUX1hNTEZJTEUuZW5jb2RlKCJ1dGY4IikKLSAgICBURVNUX1hNTEZJTEVfT1VULmVuY29kZSgidXRmOCIpCisgICAgVEVTVF9YTUxGSUxFLmVuY29kZSgidXRmLTgiKQorICAgIFRFU1RfWE1MRklMRV9PVVQuZW5jb2RlKCJ1dGYtOCIpCiBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlbmFtZSBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5IGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQppbmRleCA5MWI4ZjBjLi41MGFkYTUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKQEAgLTYzLDE1ICs2MywzOSBAQAogCiAgICAgZGVmIHRlc3RfcXVldWUoc2VsZik6CiAgICAgICAgIGwgPSBbXQotICAgICAgICBldmVudHMgPSBbXQogICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKICAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLCBbXSkKLSAgICAgICAgZm9yIHggaW4gWzAuMDUsIDAuMDQsIDAuMDMsIDAuMDIsIDAuMDFdOgotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChzY2hlZHVsZXIuZW50ZXJhYnMoeCwgMSwgZnVuLCAoeCwpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLnNvcnQoKSwgZXZlbnRzLnNvcnQoKSkKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgZTUgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wNSwgMSwgZnVuKQorICAgICAgICBlMSA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAxLCAxLCBmdW4pCisgICAgICAgIGUyID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDIsIDEsIGZ1bikKKyAgICAgICAgZTQgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wNCwgMSwgZnVuKQorICAgICAgICBlMyA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAzLCAxLCBmdW4pCisgICAgICAgICMgcXVldWUgcHJvcGVydHkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGFuIG9yZGVyIGxpc3Qgb2YKKyAgICAgICAgIyB1cGNvbWluZyBldmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNjaGVkdWxlci5xdWV1ZSksIFtlMSwgZTIsIGUzLCBlNCwgZTVdKQorCisgICAgZGVmIHRlc3RfYXJnc19rd2FyZ3Moc2VsZik6CisgICAgICAgIGZsYWcgPSBbXQorCisgICAgICAgIGRlZiBmdW4oKmEsICoqYik6CisgICAgICAgICAgICBmbGFnLmFwcGVuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCAoMSwyLDMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB7ImZvbyI6MX0pCisKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKKyAgICAgICAgeiA9IHNjaGVkdWxlci5lbnRlcmFicygwLjAxLCAxLCBmdW4sIGFyZ3VtZW50PSgxLDIsMyksIGt3YXJncz17ImZvbyI6MX0pCiAgICAgICAgIHNjaGVkdWxlci5ydW4oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVkdWxlci5fcXVldWUsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIFtOb25lXSkKKworICAgIGRlZiB0ZXN0X3J1bl9ub25fYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGwgPSBbXQorICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKKyAgICAgICAgZm9yIHggaW4gWzEwLCA5LCA4LCA3LCA2XToKKyAgICAgICAgICAgIHNjaGVkdWxlci5lbnRlcih4LCAxLCBmdW4sICh4LCkpCisgICAgICAgIHNjaGVkdWxlci5ydW4oYmxvY2tpbmc9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobCwgW10pCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKaW5kZXggZmJjODdhYS4uMTI5YTE4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IsIGNweXRob25fb25seSwgcnVuX3VuaXR0ZXN0CiAKIAogY2xhc3MgU2NvcGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00OTYsMjMgKzQ5NiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ4IiwgdmFybmFtZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInkiLCB2YXJuYW1lcykKIAorICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdExvY2Fsc0NsYXNzX1dpdGhUcmFjZShzZWxmKToKICAgICAgICAgIyBJc3N1ZTIzNzI4OiBhZnRlciB0aGUgdHJhY2UgZnVuY3Rpb24gcmV0dXJucywgdGhlIGxvY2FscygpCiAgICAgICAgICMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHVwZGF0ZSBhbGwgdmFyaWFibGVzLCB0aGlzIHVzZWQgdG8KICAgICAgICAgIyBpbmNsdWRlIGZyZWUgdmFyaWFibGVzLiBCdXQgaW4gY2xhc3Mgc3RhdGVtZW50cywgZnJlZQogICAgICAgICAjIHZhcmlhYmxlcyBhcmUgbm90IGluc2VydGVkLi4uCiAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHN5cy5zZXR0cmFjZShsYW1iZGEgYSxiLGM6Tm9uZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeCA9IDEyCisgICAgICAgIHggPSAxMgogCi0gICAgICAgICAgICBjbGFzcyBDOgotICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxMikgIyBVc2VkIHRvIHJhaXNlIFVuYm91bmRMb2NhbEVycm9yCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxMikgIyBVc2VkIHRvIHJhaXNlIFVuYm91bmRMb2NhbEVycm9yCiAKICAgICBkZWYgdGVzdEJvdW5kQW5kRnJlZShzZWxmKToKICAgICAgICAgIyB2YXIgaXMgYm91bmQgYW5kIGZyZWUgaW4gY2xhc3MKQEAgLTUyNyw2ICs1MjYsNyBAQAogICAgICAgICBpbnN0ID0gZigzKSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdC5hLCBpbnN0Lm0oKSkKIAorICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdEludGVyYWN0aW9uV2l0aFRyYWNlRnVuYyhzZWxmKToKIAogICAgICAgICBpbXBvcnQgc3lzCkBAIC01NDMsNiArNTQzLDcgQEAKICAgICAgICAgY2xhc3MgVGVzdENsYXNzOgogICAgICAgICAgICAgcGFzcwogCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VyKQogICAgICAgICBhZGFwdGdldHRlcigiZm9vIiwgVGVzdENsYXNzLCAoMSwgIiIpKQogICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKaW5kZXggZmU5MmY0NS4uMzE0NGM1NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKQEAgLTEsOCArMSw5IEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHNlbGVjdAoraW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtWzozXSBpbiAoJ3dpbicsICdvczInLCAncmlzY29zJyksCiAgICAgICAgICAgICAgICAgICJjYW4ndCBlYXNpbHkgdGVzdCBvbiB0aGlzIHN5c3RlbSIpCkBAIC0yMCw2ICsyMSwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtzZWxmLk5vcGUoKV0sIFtdLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbc2VsZi5BbG1vc3QoKV0sIFtdLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbXSwgW10sIFtdLCAibm90IGEgbnVtYmVyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW10sIFtdLCBbXSwgLTEpCisKKyAgICAjIElzc3VlICMxMjM2NzogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dpP3ByPWtlcm4vMTU1NjA2CisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpLAorICAgICAgICAgICAgICAgICAgICAgJ3NraXAgYmVjYXVzZSBvZiBhIEZyZWVCU0QgYnVnOiBrZXJuLzE1NTYwNicpCisgICAgZGVmIHRlc3RfZXJybm8oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBmZCA9IGZwLmZpbGVubygpCisgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbZmRdLCBbXSwgW10sIDApCisgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5lcnJubywgZXJybm8uRUJBREYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhjZXB0aW9uIG5vdCByYWlzZWQiKQogCiAgICAgZGVmIHRlc3RfcmV0dXJuZWRfbGlzdF9pZGVudGl0eShzZWxmKToKICAgICAgICAgIyBTZWUgaXNzdWUgIzgzMjkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggNjY0MjQ0MC4uOGU5ZTU4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiBjbGFzcyBQYXNzVGhydShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTIzNCw2ICsyMzUsMjYgQEAKICAgICAgICAgICAgICAgICBkdXAgPSBwaWNrbGUubG9hZHMocCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucy54LCBkdXAueCkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBpdG9yZyA9IGl0ZXIoc2VsZi5zKQorICAgICAgICBkYXRhID0gc2VsZi50aGV0eXBlKHNlbGYucykKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgIyBTZXQgaXRlcmF0b3JzIHVucGlja2xlIGFzIGxpc3QgaXRlcmF0b3JzIGR1ZSB0byB0aGUKKyAgICAgICAgIyB1bmRlZmluZWQgb3JkZXIgb2Ygc2V0IGl0ZW1zLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZXR5cGUoaXQpLCBkYXRhKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyb3AgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhldHlwZShpdCksIGRhdGEgLSBzZWxmLnRoZXR5cGUoKGRyb3AsKSkpCisKICAgICBkZWYgdGVzdF9kZWVwY29weShzZWxmKToKICAgICAgICAgY2xhc3MgVHJhY2VyOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKaW5kZXggM2U3M2Y1Mi4uMTNjMTI2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgc2hlbHZlCiBpbXBvcnQgZ2xvYgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCiBmcm9tIHRlc3QudGVzdF9kYm0gaW1wb3J0IGRibV9pdGVyYXRvcgogCiBkZWYgTDEocyk6CkBAIC0xMjksOCArMTI5LDggQEAKICAgICAgICAgc2hlbHZlLlNoZWxmKGQpW2tleV0gPSBbMV0KICAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZW5jb2RlKCd1dGYtOCcpLCBkKQogICAgICAgICAjIGJ1dCBhIGRpZmZlcmVudCBvbmUgY2FuIGJlIGdpdmVuCi0gICAgICAgIHNoZWx2ZS5TaGVsZihkLCBrZXllbmNvZGluZz0nbGF0aW4xJylba2V5XSA9IFsxXQotICAgICAgICBzZWxmLmFzc2VydEluKGtleS5lbmNvZGUoJ2xhdGluMScpLCBkKQorICAgICAgICBzaGVsdmUuU2hlbGYoZCwga2V5ZW5jb2Rpbmc9J2xhdGluLTEnKVtrZXldID0gWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmVuY29kZSgnbGF0aW4tMScpLCBkKQogICAgICAgICAjIHdpdGggYWxsIGNvbnNlcXVlbmNlcwogICAgICAgICBzID0gc2hlbHZlLlNoZWxmKGQsIGtleWVuY29kaW5nPSdhc2NpaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgcy5fX3NldGl0ZW1fXywga2V5LCBbMV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCAyNWU0YjZkLi5kNDQ2M2YzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0xLDYgKzEsNyBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MsIHN5cywgaW8KK2ltcG9ydCBpbwogaW1wb3J0IHNobGV4CitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTE3Myw2ICsxNzQsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAlcyAhPSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYXRhW2ldWzBdLCBsLCBzZWxmLmRhdGFbaV1bMTpdKSkKIAorICAgIGRlZiB0ZXN0UXVvdGUoc2VsZik6CisgICAgICAgIHNhZmV1bnF1b3RlZCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJworICAgICAgICB1bmljb2RlX3NhbXBsZSA9ICdceGU5XHhlMFx4ZGYnICAjIGUgKyBhY3V0ZSBhY2NlbnQsIGEgKyBncmF2ZSwgc2hhcnAgcworICAgICAgICB1bnNhZmUgPSAnImAkXFwhJyArIHVuaWNvZGVfc2FtcGxlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgnJyksICInJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoc2FmZXVucXVvdGVkKSwgc2FmZXVucXVvdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCd0ZXN0IGZpbGUgbmFtZScpLCAiJ3Rlc3QgZmlsZSBuYW1lJyIpCisgICAgICAgIGZvciB1IGluIHVuc2FmZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoJ3Rlc3Qlc25hbWUnICUgdSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzbmFtZSciICUgdSkKKyAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgidGVzdCVzJ25hbWUnIiAlIHUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3QlcydcIidcIiduYW1lJ1wiJ1wiJyciICUgdSkKKworCiAjIEFsbG93IHRoaXMgdGVzdCB0byBiZSB1c2VkIHdpdGggb2xkIHNobGV4LnB5CiBpZiBub3QgZ2V0YXR0cihzaGxleCwgInNwbGl0IiwgTm9uZSk6CiAgICAgZm9yIG1ldGhuYW1lIGluIGRpcihTaGxleFRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCAxYTAxNmI5Li5lYjBlOWE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtNyw4ICs3LDkgQEAKIGltcG9ydCBzdGF0CiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gb3MucGF0aCBpbXBvcnQgc3BsaXRkcml2ZQpAQCAtMjIsNyArMjMsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dCwgcmVxdWlyZXNfemxpYgogCiB0cnk6CiAgICAgaW1wb3J0IGJ6MgpAQCAtNDAsMTEgKzQxLDYgQEAKICAgICBVSURfR0lEX1NVUFBPUlQgPSBGYWxzZQogCiB0cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCi10cnk6CiAgICAgaW1wb3J0IHppcGZpbGUKICAgICBaSVBfU1VQUE9SVCA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTUyLDcgKzQ4LDcgQEAKIAogZGVmIF9mYWtlX3JlbmFtZSgqYXJncywgKiprd2FyZ3MpOgogICAgICMgUHJldGVuZCB0aGUgZGVzdGluYXRpb24gcGF0aCBpcyBvbiBhIGRpZmZlcmVudCBmaWxlc3lzdGVtLgotICAgIHJhaXNlIE9TRXJyb3IoKQorICAgIHJhaXNlIE9TRXJyb3IoZ2V0YXR0cihlcnJubywgJ0VYREVWJywgMTgpLCAiSW52YWxpZCBjcm9zcy1kZXZpY2UgbGluayIpCiAKIGRlZiBtb2NrX3JlbmFtZShmdW5jKToKICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCkBAIC02NSw2ICs2MSwzMSBAQAogICAgICAgICAgICAgb3MucmVuYW1lID0gYnVpbHRpbl9yZW5hbWUKICAgICByZXR1cm4gd3JhcAogCitkZWYgd3JpdGVfZmlsZShwYXRoLCBjb250ZW50LCBiaW5hcnk9RmFsc2UpOgorICAgICIiIldyaXRlICpjb250ZW50KiB0byBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAnd2InIGlmIGJpbmFyeSBlbHNlICd3JykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCisKK2RlZiByZWFkX2ZpbGUocGF0aCwgYmluYXJ5PUZhbHNlKToKKyAgICAiIiJSZXR1cm4gY29udGVudHMgZnJvbSBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAncmInIGlmIGJpbmFyeSBlbHNlICdyJykgYXMgZnA6CisgICAgICAgIHJldHVybiBmcC5yZWFkKCkKKworCiBjbGFzcyBUZXN0U2h1dGlsKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTc3LDE5ICs5OCw2IEBACiAgICAgICAgICAgICBkID0gc2VsZi50ZW1wZGlycy5wb3AoKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkLCBvcy5uYW1lIGluICgnbnQnLCAnY3lnd2luJykpCiAKLSAgICBkZWYgd3JpdGVfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50PSd4eHgnKToKLSAgICAgICAgIiIiV3JpdGVzIGEgZmlsZSBpbiB0aGUgZ2l2ZW4gcGF0aC4KLQotCi0gICAgICAgIHBhdGggY2FuIGJlIGEgc3RyaW5nIG9yIGEgc2VxdWVuY2UuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aCkKLSAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBta2R0ZW1wKHNlbGYpOgogICAgICAgICAiIiJDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBjbGVhbmVkIHVwLgpAQCAtMTAwLDYgKzEwOCw0NyBAQAogICAgICAgICBzZWxmLnRlbXBkaXJzLmFwcGVuZChkKQogICAgICAgICByZXR1cm4gZAogCisgICAgZGVmIHRlc3Rfcm10cmVlX3dvcmtzX29uX2J5dGVzKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICB2aWN0aW0gPSBvcy5wYXRoLmpvaW4odG1wLCAna2lsbG1lJykKKyAgICAgICAgb3MubWtkaXIodmljdGltKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbih2aWN0aW0sICdzb21lZmlsZScpLCAnZm9vJykKKyAgICAgICAgdmljdGltID0gb3MuZnNlbmNvZGUodmljdGltKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmljdGltLCBieXRlcykKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfcm10cmVlX2ZhaWxzX29uX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRpcl8gPSBvcy5wYXRoLmpvaW4odG1wLCAnZGlyJykKKyAgICAgICAgb3MubWtkaXIoZGlyXykKKyAgICAgICAgbGluayA9IG9zLnBhdGguam9pbih0bXAsICdsaW5rJykKKyAgICAgICAgb3Muc3ltbGluayhkaXJfLCBsaW5rKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwucm10cmVlLCBsaW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyXykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfcm10cmVlX3dvcmtzX29uX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkaXIxID0gb3MucGF0aC5qb2luKHRtcCwgJ2RpcjEnKQorICAgICAgICBkaXIyID0gb3MucGF0aC5qb2luKGRpcjEsICdkaXIyJykKKyAgICAgICAgZGlyMyA9IG9zLnBhdGguam9pbih0bXAsICdkaXIzJykKKyAgICAgICAgZm9yIGQgaW4gZGlyMSwgZGlyMiwgZGlyMzoKKyAgICAgICAgICAgIG9zLm1rZGlyKGQpCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcCwgJ2ZpbGUxJykKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlMSwgJ2ZvbycpCisgICAgICAgIGxpbmsxID0gb3MucGF0aC5qb2luKGRpcjEsICdsaW5rMScpCisgICAgICAgIG9zLnN5bWxpbmsoZGlyMiwgbGluazEpCisgICAgICAgIGxpbmsyID0gb3MucGF0aC5qb2luKGRpcjEsICdsaW5rMicpCisgICAgICAgIG9zLnN5bWxpbmsoZGlyMywgbGluazIpCisgICAgICAgIGxpbmszID0gb3MucGF0aC5qb2luKGRpcjEsICdsaW5rMycpCisgICAgICAgIG9zLnN5bWxpbmsoZmlsZTEsIGxpbmszKQorICAgICAgICAjIG1ha2Ugc3VyZSBzeW1saW5rcyBhcmUgcmVtb3ZlZCBidXQgbm90IGZvbGxvd2VkCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhkaXIxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcjMpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZTEpKQorCiAgICAgZGVmIHRlc3Rfcm10cmVlX2Vycm9ycyhzZWxmKToKICAgICAgICAgIyBmaWxlbmFtZSBpcyBndWFyYW50ZWVkIG5vdCB0byBleGlzdAogICAgICAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1rdGVtcCgpCkBAIC0xMTIsMzAgKzE2MSwzNCBAQAogICAgICAgICBkZWYgdGVzdF9vbl9lcnJvcihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDAKICAgICAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuY2hpbGRwYXRoID0gb3MucGF0aC5qb2luKFRFU1RGTiwgJ2EnKQotICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5jaGlsZHBhdGgsICd3JykKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIFRFU1RGTikKKworICAgICAgICAgICAgc2VsZi5jaGlsZF9maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYScpCisgICAgICAgICAgICBzZWxmLmNoaWxkX2Rpcl9wYXRoID0gb3MucGF0aC5qb2luKFRFU1RGTiwgJ2InKQorICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzZWxmLmNoaWxkX2ZpbGVfcGF0aCkKKyAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuY2hpbGRfZGlyX3BhdGgpCiAgICAgICAgICAgICBvbGRfZGlyX21vZGUgPSBvcy5zdGF0KFRFU1RGTikuc3RfbW9kZQotICAgICAgICAgICAgb2xkX2NoaWxkX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRwYXRoKS5zdF9tb2RlCisgICAgICAgICAgICBvbGRfY2hpbGRfZmlsZV9tb2RlID0gb3Muc3RhdChzZWxmLmNoaWxkX2ZpbGVfcGF0aCkuc3RfbW9kZQorICAgICAgICAgICAgb2xkX2NoaWxkX2Rpcl9tb2RlID0gb3Muc3RhdChzZWxmLmNoaWxkX2Rpcl9wYXRoKS5zdF9tb2RlCiAgICAgICAgICAgICAjIE1ha2UgdW53cml0YWJsZS4KLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRwYXRoLCBzdGF0LlNfSVJFQUQpCi0gICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIHN0YXQuU19JUkVBRCkKKyAgICAgICAgICAgIG5ld19tb2RlID0gc3RhdC5TX0lSRUFEfHN0YXQuU19JRVhFQworICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZF9maWxlX3BhdGgsIG5ld19tb2RlKQorICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZF9kaXJfcGF0aCwgbmV3X21vZGUpCisgICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIG5ld19tb2RlKQorCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIFRFU1RGTiwgb2xkX2Rpcl9tb2RlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzZWxmLmNoaWxkX2ZpbGVfcGF0aCwgb2xkX2NoaWxkX2ZpbGVfbW9kZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaG1vZCwgc2VsZi5jaGlsZF9kaXJfcGF0aCwgb2xkX2NoaWxkX2Rpcl9tb2RlKQogCiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgb25lcnJvcj1zZWxmLmNoZWNrX2FyZ3NfdG9fb25lcnJvcikKICAgICAgICAgICAgICMgVGVzdCB3aGV0aGVyIG9uZXJyb3IgaGFzIGFjdHVhbGx5IGJlZW4gY2FsbGVkLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVycm9yU3RhdGUsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBjYWxsIHRvIG9uZXJyb3IgZnVuY3Rpb24gZGlkIG5vdCBoYXBwZW4uIikKLQotICAgICAgICAgICAgIyBNYWtlIHdyaXRhYmxlIGFnYWluLgotICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCBvbGRfZGlyX21vZGUpCi0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkcGF0aCwgb2xkX2NoaWxkX21vZGUpCi0KLSAgICAgICAgICAgICMgQ2xlYW4gdXAuCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvclN0YXRlLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgY2FsbCB0byBvbmVycm9yIGZ1bmN0aW9uIGRpZCBub3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGVuLiIpCiAKICAgICBkZWYgY2hlY2tfYXJnc190b19vbmVycm9yKHNlbGYsIGZ1bmMsIGFyZywgZXhjKToKICAgICAgICAgIyB0ZXN0X3JtdHJlZV9lcnJvcnMgZGVsaWJlcmF0ZWx5IHJ1bnMgcm10cmVlCi0gICAgICAgICMgb24gYSBkaXJlY3RvcnkgdGhhdCBpcyBjaG1vZCA0MDAsIHdoaWNoIHdpbGwgZmFpbC4KKyAgICAgICAgIyBvbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNobW9kIDUwMCwgd2hpY2ggd2lsbCBmYWlsLgogICAgICAgICAjIFRoaXMgZnVuY3Rpb24gaXMgcnVuIHdoZW4gc2h1dGlsLnJtdHJlZSBmYWlscy4KICAgICAgICAgIyA5OS45JSBvZiB0aGUgdGltZSBpdCBpbml0aWFsbHkgZmFpbHMgdG8gcmVtb3ZlCiAgICAgICAgICMgYSBmaWxlIGluIHRoZSBkaXJlY3RvcnksIHNvIHRoZSBmaXJzdCB0aW1lIHRocm91Z2gKQEAgLTE0NCw5OSArMTk3LDQzNiBAQAogICAgICAgICAjIEZVU0UgZXhwZXJpZW5jZWQgYSBmYWlsdXJlIGVhcmxpZXIgaW4gdGhlIHByb2Nlc3MKICAgICAgICAgIyBhdCBvcy5saXN0ZGlyLiAgVGhlIGZpcnN0IGZhaWx1cmUgbWF5IGxlZ2FsbHkKICAgICAgICAgIyBiZSBlaXRoZXIuCi0gICAgICAgIGlmIHNlbGYuZXJyb3JTdGF0ZSA9PSAwOgotICAgICAgICAgICAgaWYgZnVuYyBpcyBvcy5yZW1vdmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRwYXRoKQorICAgICAgICBpZiBzZWxmLmVycm9yU3RhdGUgPCAyOgorICAgICAgICAgICAgaWYgZnVuYyBpcyBvcy51bmxpbms6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRfZmlsZV9wYXRoKQorICAgICAgICAgICAgZWxpZiBmdW5jIGlzIG9zLnJtZGlyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnLCBzZWxmLmNoaWxkX2Rpcl9wYXRoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZ1bmMsIG9zLmxpc3RkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuYyBtdXN0IGJlIGVpdGhlciBvcy5yZW1vdmUgb3Igb3MubGlzdGRpciIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIFRFU1RGTikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZ1bmMsIG9zLmxpc3RkaXIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhcmcsIFtURVNURk4sIHNlbGYuY2hpbGRfZGlyX3BhdGhdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZXhjWzBdLCBPU0Vycm9yKSkKLSAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDEKKyAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSArPSAxCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMsIG9zLnJtZGlyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIFRFU1RGTikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGV4Y1swXSwgT1NFcnJvcikpCi0gICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgPSAyCisgICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgPSAzCisKKyAgICBkZWYgdGVzdF9ybXRyZWVfZG9lc19ub3RfY2hva2Vfb25fZmFpbGluZ19sc3RhdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19sc3RhdCA9IG9zLmxzdGF0CisgICAgICAgICAgICBkZWYgcmFpc2VyKGZuLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGlmIGZuICE9IFRFU1RGTjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdfbHN0YXQoZm4pCisgICAgICAgICAgICBvcy5sc3RhdCA9IHJhaXNlcgorCisgICAgICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgICAgICB3cml0ZV9maWxlKChURVNURk4sICdmb28nKSwgJ2ZvbycpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmxzdGF0ID0gb3JpZ19sc3RhdAorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NobW9kJyksICdyZXF1aXJlcyBvcy5jaG1vZCcpCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHltb2RlX2ZvbGxvd19zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIG9zLmNobW9kKHNyYywgc3RhdC5TX0lSV1hVfHN0YXQuU19JUldYRykKKyAgICAgICAgIyBmaWxlIHRvIGZpbGUKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGZvbGxvdyBzcmMgbGluaworICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGZvbGxvdyBkc3QgbGluaworICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyYywgZHN0X2xpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGZvbGxvdyBib3RoIGxpbmtzCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnbGNobW9kJyksICdyZXF1aXJlcyBvcy5sY2htb2QnKQorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5bW9kZV9zeW1saW5rX3RvX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBvcy5jaG1vZChzcmMsIHN0YXQuU19JUldYVXxzdGF0LlNfSVJXWEcpCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hVKQorICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYT3xzdGF0LlNfSVJXWEcpCisgICAgICAgICMgbGluayB0byBsaW5rCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubHN0YXQoc3JjX2xpbmspLnN0X21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MubHN0YXQoZHN0X2xpbmspLnN0X21vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIHNyYyBsaW5rIC0gdXNlIGNobW9kCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBkc3QgbGluayAtIHVzZSBjaG1vZAorICAgICAgICBvcy5sY2htb2QoZHN0X2xpbmssIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyYywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIob3MsICdsY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmxjaG1vZCB0byBiZSBtaXNzaW5nJykKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weW1vZGVfc3ltbGlua190b19zeW1saW5rX3dvX2xjaG1vZChzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkgICMgc2lsZW50IGZhaWwKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5c3RhdF9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5zdGF0KHNyYykKKyAgICAgICAgb3MudXRpbWUoc3JjLCAoc3JjX3N0YXQuc3RfYXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgIHNyY19zdGF0LnN0X210aW1lIC0gNDIuMCkpICAjIGVuc3VyZSBkaWZmZXJlbnQgbXRpbWVzCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbXRpbWUsIG9zLnN0YXQoZHN0KS5zdF9tdGltZSkKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdGF0LCAnVUZfTk9EVU1QJyk6CisgICAgICAgICAgICBvcy5sY2hmbGFncyhzcmNfbGluaywgc3RhdC5VRl9OT0RVTVApCisgICAgICAgIHNyY19saW5rX3N0YXQgPSBvcy5sc3RhdChzcmNfbGluaykKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgZHN0X2xpbmtfc3RhdCA9IG9zLmxzdGF0KGRzdF9saW5rKQorICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiAnc3RfYXRpbWUnLCAnc3RfbXRpbWUnOgorICAgICAgICAgICAgICAgICMgVGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBtYXkgYmUgdHJ1bmNhdGVkIGluIHRoZSBuZXcgZmlsZS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChnZXRhdHRyKHNyY19saW5rX3N0YXQsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZHN0X2xpbmtfc3RhdCwgYXR0cikgKyAxKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgZHN0X2xpbmtfc3RhdC5zdF9tb2RlKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzcmNfbGlua19zdGF0LCAnc3RfZmxhZ3MnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9mbGFncywgZHN0X2xpbmtfc3RhdC5zdF9mbGFncykKKyAgICAgICAgIyB0ZWxsIHRvIGZvbGxvdyBidXQgZHN0IGlzIG5vdCBhIGxpbmsKKyAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFicyhvcy5zdGF0KHNyYykuc3RfbXRpbWUgLSBvcy5zdGF0KGRzdCkuc3RfbXRpbWUpIDwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwLjEpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hmbGFncycpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFT1BOT1RTVVBQJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VOT1RTVVAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgb3MuY2hmbGFncywgRU9QTk9UU1VQUCAmIEVOT1RTVVAiKQorICAgIGRlZiB0ZXN0X2NvcHlzdGF0X2hhbmRsZXNfaGFybWxlc3NfY2hmbGFnc19lcnJvcnMoc2VsZik6CisgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUxJykKKyAgICAgICAgZmlsZTIgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTInKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUxLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlMiwgJ3h4eCcpCisKKyAgICAgICAgZGVmIG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKToKKyAgICAgICAgICAgIGV4ID0gT1NFcnJvcigpCisKKyAgICAgICAgICAgIGRlZiBfY2hmbGFnc19yYWlzZXIocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAgICAgICAgICAgICBleC5lcnJubyA9IGVycgorICAgICAgICAgICAgICAgIHJhaXNlIGV4CisgICAgICAgICAgICByZXR1cm4gX2NoZmxhZ3NfcmFpc2VyCisgICAgICAgIG9sZF9jaGZsYWdzID0gb3MuY2hmbGFncworICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgZXJyIGluIGVycm5vLkVPUE5PVFNVUFAsIGVycm5vLkVOT1RTVVA6CisgICAgICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKQorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5c3RhdChmaWxlMSwgZmlsZTIpCisgICAgICAgICAgICAjIGFzc2VydCBvdGhlcnMgZXJyb3JzIGJyZWFrIGl0CisgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnJuby5FT1BOT1RTVVBQICsgZXJybm8uRU5PVFNVUCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5jb3B5c3RhdCwgZmlsZTEsIGZpbGUyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hmbGFncyA9IG9sZF9jaGZsYWdzCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc194YXR0cgorICAgIGRlZiB0ZXN0X2NvcHl4YXR0cihzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKworICAgICAgICAjIG5vIHhhdHRyID09IG5vIHByb2JsZW0KKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgICMgY29tbW9uIGNhc2UKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci5mb28nLCBiJzQyJykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci5iYXInLCBiJzQzJykKKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubGlzdHhhdHRyKHNyYyksIG9zLmxpc3R4YXR0cihkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKHNyYywgJ3VzZXIuZm9vJyksCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoZHN0LCAndXNlci5mb28nKSkKKyAgICAgICAgIyBjaGVjayBlcnJvcnMgZG9uJ3QgYWZmZWN0IG90aGVyIGF0dHJzCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgb3NfZXJyb3IgPSBPU0Vycm9yKGVycm5vLkVQRVJNLCAnRVBFUk0nKQorCisgICAgICAgIGRlZiBfcmFpc2Vfb25fdXNlcl9mb28oZm5hbWUsIGF0dHIsIHZhbCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgaWYgYXR0ciA9PSAndXNlci5mb28nOgorICAgICAgICAgICAgICAgIHJhaXNlIG9zX2Vycm9yCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9yaWdfc2V0eGF0dHIoZm5hbWUsIGF0dHIsIHZhbCwgKiprd2FyZ3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfc2V0eGF0dHIgPSBvcy5zZXR4YXR0cgorICAgICAgICAgICAgb3Muc2V0eGF0dHIgPSBfcmFpc2Vfb25fdXNlcl9mb28KKyAgICAgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyYywgZHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlci5iYXInLCBvcy5saXN0eGF0dHIoZHN0KSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnNldHhhdHRyID0gb3JpZ19zZXR4YXR0cgorCisgICAgICAgICMgdGVzdCB0aGF0IHNodXRpbC5jb3B5c3RhdCBjb3BpZXMgeGF0dHJzCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAndGhlX29yaWdpbmFsJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsIHNyYykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci50aGVfdmFsdWUnLCBiJ2ZpZGRseScpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAndGhlX2NvcHknKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgZHN0KQorICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0eGF0dHIoZHN0LCAndXNlci50aGVfdmFsdWUnKSwgYidmaWRkbHknKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGV1aWQnKSBhbmQgb3MuZ2V0ZXVpZCgpID09IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3QgcHJpdmlsZWdlcyByZXF1aXJlZCcpCisgICAgZGVmIHRlc3RfY29weXhhdHRyX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICAjIE9uIExpbnV4LCBpdCdzIG9ubHkgcG9zc2libGUgdG8gYWNjZXNzIG5vbi11c2VyIHhhdHRyIGZvciBzeW1saW5rczsKKyAgICAgICAgIyB3aGljaCBpbiB0dXJuIHJlcXVpcmUgcm9vdCBwcml2aWxlZ2VzLiBUaGlzIHRlc3Qgc2hvdWxkIGJlIGV4cGFuZGVkCisgICAgICAgICMgYXMgc29vbiBhcyBvdGhlciBwbGF0Zm9ybXMgZ2FpbiBzdXBwb3J0IGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzLgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3RydXN0ZWQuZm9vJywgYic0MicpCisgICAgICAgIG9zLnNldHhhdHRyKHNyY19saW5rLCAndHJ1c3RlZC5mb28nLCBiJzQzJywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXgnKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2JhcicpCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0eGF0dHIoZHN0X2xpbmssICd0cnVzdGVkLmZvbycsIGZvbGxvd19zeW1saW5rcz1GYWxzZSksIGInNDMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5nZXR4YXR0ciwgZHN0LCAndHJ1c3RlZC5mb28nKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0eGF0dHIoZHN0LCAndHJ1c3RlZC5mb28nKSwgYic0MycpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZmlsZShzcmMpLCByZWFkX2ZpbGUoZHN0KSkKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHkoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhkc3QpLCBvcy5yZWFkbGluayhzcmNfbGluaykpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubHN0YXQoc3JjX2xpbmspLnN0X21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxzdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5Ml9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdGF0LCAnVUZfTk9EVU1QJyk6CisgICAgICAgICAgICBvcy5sY2hmbGFncyhzcmNfbGluaywgc3RhdC5VRl9OT0RVTVApCisgICAgICAgIHNyY19zdGF0ID0gb3Muc3RhdChzcmMpCisgICAgICAgIHNyY19saW5rX3N0YXQgPSBvcy5sc3RhdChzcmNfbGluaykKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHkyKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyYyksIHJlYWRfZmlsZShkc3QpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weTIoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhkc3QpLCBvcy5yZWFkbGluayhzcmNfbGluaykpCisgICAgICAgIGRzdF9zdGF0ID0gb3MubHN0YXQoZHN0KQorICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiAnc3RfYXRpbWUnLCAnc3RfbXRpbWUnOgorICAgICAgICAgICAgICAgICMgVGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBtYXkgYmUgdHJ1bmNhdGVkIGluIHRoZSBuZXcgZmlsZS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChnZXRhdHRyKHNyY19saW5rX3N0YXQsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZHN0X3N0YXQsIGF0dHIpICsgMSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X21vZGUsIGRzdF9zdGF0LnN0X21vZGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNyY19zdGF0LnN0X21vZGUsIGRzdF9zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHNyY19saW5rX3N0YXQsICdzdF9mbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X2ZsYWdzLCBkc3Rfc3RhdC5zdF9mbGFncykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgZGVmIHRlc3RfY29weTJfeGF0dHIoc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmZvbycsIGInNDInKQorICAgICAgICBzaHV0aWwuY29weTIoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoc3JjLCAndXNlci5mb28nKSwKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihkc3QsICd1c2VyLmZvbycpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdzcmMnKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdCcpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdkc3RfbGluaycpCisgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2xpbmsnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBsaW5rKQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weWZpbGUobGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhsaW5rKSwgb3MucmVhZGxpbmsoZHN0X2xpbmspKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weWZpbGUobGluaywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisKKyAgICBkZWYgdGVzdF9ybXRyZWVfdXNlc19zYWZlX2ZkX3ZlcnNpb25faWZfYXZhaWxhYmxlKHNlbGYpOgorICAgICAgICBfdXNlX2ZkX2Z1bmN0aW9ucyA9ICh7b3Mub3Blbiwgb3Muc3RhdCwgb3MudW5saW5rLCBvcy5ybWRpcn0gPD0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3VwcG9ydHNfZGlyX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcykKKyAgICAgICAgaWYgX3VzZV9mZF9mdW5jdGlvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2h1dGlsLl91c2VfZmRfZnVuY3Rpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNodXRpbC5ybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcykKKyAgICAgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYScpCisgICAgICAgICAgICBvcy5ta2RpcihkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJlYWxfcm10cmVlID0gc2h1dGlsLl9ybXRyZWVfc2FmZV9mZAorICAgICAgICAgICAgICAgIGNsYXNzIENhbGxlZChFeGNlcHRpb24pOiBwYXNzCisgICAgICAgICAgICAgICAgZGVmIF9yYWlzZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ2FsbGVkCisgICAgICAgICAgICAgICAgc2h1dGlsLl9ybXRyZWVfc2FmZV9mZCA9IF9yYWlzZXIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhDYWxsZWQsIHNodXRpbC5ybXRyZWUsIGQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNodXRpbC5fcm10cmVlX3NhZmVfZmQgPSByZWFsX3JtdHJlZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaHV0aWwuX3VzZV9mZF9mdW5jdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNodXRpbC5ybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcykKIAogICAgIGRlZiB0ZXN0X3JtdHJlZV9kb250X2RlbGV0ZV9maWxlKHNlbGYpOgogICAgICAgICAjIFdoZW4gY2FsbGVkIG9uIGEgZmlsZSBpbnN0ZWFkIG9mIGEgZGlyZWN0b3J5LCBkb24ndCBkZWxldGUgaXQuCiAgICAgICAgIGhhbmRsZSwgcGF0aCA9IHRlbXBmaWxlLm1rc3RlbXAoKQotICAgICAgICBvcy5mZG9wZW4oaGFuZGxlKS5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5ybXRyZWUsIHBhdGgpCisgICAgICAgIG9zLmNsb3NlKGhhbmRsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90QURpcmVjdG9yeUVycm9yLCBzaHV0aWwucm10cmVlLCBwYXRoKQogICAgICAgICBvcy5yZW1vdmUocGF0aCkKIAotICAgIGRlZiBfd3JpdGVfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKLSAgICAgICAgZiA9IG9wZW4ocGF0aCwgInciKQotICAgICAgICBmLndyaXRlKGRhdGEpCi0gICAgICAgIGYuY2xvc2UoKQotCiAgICAgZGVmIHRlc3RfY29weXRyZWVfc2ltcGxlKHNlbGYpOgotCi0gICAgICAgIGRlZiByZWFkX2RhdGEocGF0aCk6Ci0gICAgICAgICAgICBmID0gb3BlbihwYXRoKQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHJldHVybiBkYXRhCi0KICAgICAgICAgc3JjX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHRlbXBmaWxlLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc3JjX2RpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIG9zLnBhdGguZGlybmFtZShkc3RfZGlyKSkKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJykpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICBhY3R1YWwgPSByZWFkX2RhdGEob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICcxMjMnKQotICAgICAgICAgICAgYWN0dWFsID0gcmVhZF9kYXRhKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnNDU2JykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvciBwYXRoIGluICgKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gKHNyY19kaXIsCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShkc3RfZGlyKQotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKKyAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QudHh0JykpKQorICAgICAgICBhY3R1YWwgPSByZWFkX2ZpbGUoKGRzdF9kaXIsICd0ZXN0LnR4dCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzEyMycpCisgICAgICAgIGFjdHVhbCA9IHJlYWRfZmlsZSgoZHN0X2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnNDU2JykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5dHJlZV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyY19kaXIgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3NyYycpCisgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdCcpCisgICAgICAgIHN1Yl9kaXIgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3N1YicpCisgICAgICAgIG9zLm1rZGlyKHNyY19kaXIpCisgICAgICAgIG9zLm1rZGlyKHN1Yl9kaXIpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICdmaWxlLnR4dCcpLCAnZm9vJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4oc3ViX2RpciwgJ2xpbmsnKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViL2xpbmsnKQorICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguam9pbihzcmNfZGlyLCAnZmlsZS50eHQnKSwKKyAgICAgICAgICAgICAgICAgICBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5sc3RhdChzcmNfbGluaykKKyAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIHN5bWxpbmtzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3N1YicsICdsaW5rJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViJywgJ2xpbmsnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICdmaWxlLnR4dCcpKQorICAgICAgICBkc3Rfc3RhdCA9IG9zLmxzdGF0KGRzdF9saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdF9zdGF0LnN0X21vZGUsIHNyY19zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3Rfc3RhdC5zdF9mbGFncywgc3JjX3N0YXQuc3RfZmxhZ3MpCiAKICAgICBkZWYgdGVzdF9jb3B5dHJlZV93aXRoX2V4Y2x1ZGUoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJlYWRfZGF0YShwYXRoKToKLSAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQogICAgICAgICAjIGNyZWF0aW5nIGRhdGEKICAgICAgICAgam9pbiA9IG9zLnBhdGguam9pbgogICAgICAgICBleGlzdHMgPSBvcy5wYXRoLmV4aXN0cwogICAgICAgICBzcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRzdF9kaXIgPSBqb2luKHRlbXBmaWxlLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3QudG1wJyksICcxMjMnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudG1wJyksICcxMjMnKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzQ1NicpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJywgJ3Rlc3QucHknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzQ1NicpCi0KKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJywgJ3Rlc3QucHknKSwgJzQ1NicpCiAKICAgICAgICAgICAgICMgdGVzdGluZyBnbG9iLWxpa2UgcGF0dGVybnMKICAgICAgICAgICAgIHRyeToKQEAgLTI0NCwyMSArNjM0LDE5IEBACiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIGlnbm9yZT1wYXR0ZXJucykKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnRtcCcpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhdHRlcm5zID0gc2h1dGlsLmlnbm9yZV9wYXR0ZXJucygnKi50bXAnLCAnc3ViZGlyKicpCiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIGlnbm9yZT1wYXR0ZXJucykKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnRtcCcpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogCiAgICAgICAgICAgICAjIHRlc3RpbmcgY2FsbGFibGUtc3R5bGUKICAgICAgICAgICAgIHRyeToKQEAgLTI3NywxMyArNjY1LDEyIEBACiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIGlnbm9yZT1fZmlsdGVyKQogCiAgICAgICAgICAgICAgICAgIyBjaGVja2luZyB0aGUgcmVzdWx0OiBzb21lIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgY29waWVkCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnB5JykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QucHknKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKIAogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc3JjX2RpcikKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpKQpAQCAtMzA4LDM1ICs2OTUsNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VPUE5PVFNVUFAnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU5PVFNVUCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBvcy5jaGZsYWdzLCBFT1BOT1RTVVBQICYgRU5PVFNVUCIpCi0gICAgZGVmIHRlc3RfY29weXN0YXRfaGFuZGxlc19oYXJtbGVzc19jaGZsYWdzX2Vycm9ycyhzZWxmKToKLSAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTEnKQotICAgICAgICBmaWxlMiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMicpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShmaWxlMSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShmaWxlMiwgJ3h4eCcpCi0KLSAgICAgICAgZGVmIG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKToKLSAgICAgICAgICAgIGV4ID0gT1NFcnJvcigpCi0KLSAgICAgICAgICAgIGRlZiBfY2hmbGFnc19yYWlzZXIocGF0aCwgZmxhZ3MpOgotICAgICAgICAgICAgICAgIGV4LmVycm5vID0gZXJyCi0gICAgICAgICAgICAgICAgcmFpc2UgZXgKLSAgICAgICAgICAgIHJldHVybiBfY2hmbGFnc19yYWlzZXIKLSAgICAgICAgb2xkX2NoZmxhZ3MgPSBvcy5jaGZsYWdzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBlcnIgaW4gZXJybm8uRU9QTk9UU1VQUCwgZXJybm8uRU5PVFNVUDoKLSAgICAgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpCi0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KGZpbGUxLCBmaWxlMikKLSAgICAgICAgICAgICMgYXNzZXJ0IG90aGVycyBlcnJvcnMgYnJlYWsgaXQKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycm5vLkVPUE5PVFNVUFAgKyBlcnJuby5FTk9UU1VQKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLmNvcHlzdGF0LCBmaWxlMSwgZmlsZTIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5jaGZsYWdzID0gb2xkX2NoZmxhZ3MKLQogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9kb250X2NvcHlfZmlsZV9vbnRvX3N5bWxpbmtfdG9faXRzZWxmKHNlbGYpOgogICAgICAgICAjIGJ1ZyA4NTExMjMuCkBAIC0zNjcsNiArNzI1LDcgQEAKICAgICAgICAgICAgIG9zLm1rZGlyKHNyYykKICAgICAgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwucm10cmVlLCBkc3QpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdCwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIApAQCAtNDA3LDkgKzc2Niw5IEBACiAKICAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdkZXN0aW5hdGlvbicpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogCiAgICAgICAgIGNvcGllZCA9IFtdCiAgICAgICAgIGRlZiBfY29weShzcmMsIGRzdCk6CkBAIC00MjYsNyArNzg1LDcgQEAKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKICAgICAgICAgb3Muc3ltbGluaygnSURPTlRFWElTVCcsIG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSkKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXJyb3IsIHNodXRpbC5jb3B5dHJlZSwgc3JjX2RpciwgZHN0X2RpcikKIAogICAgICAgICAjIGEgZGFuZ2xpbmcgc3ltbGluayBpcyBpZ25vcmVkIHdpdGggdGhlIHByb3BlciBmbGFnCkBAIC00NDIsNyArODAxLDcgQEAKICAgICBkZWYgX2NvcHlfZmlsZShzZWxmLCBtZXRob2QpOgogICAgICAgICBmbmFtZSA9ICd0ZXN0LnR4dCcKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsIGZuYW1lXSkKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCBmbmFtZSksICd4eHgnKQogICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXBkaXIsIGZuYW1lKQogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgbWV0aG9kKGZpbGUxLCB0bXBkaXIyKQpAQCAtNDc0LDE0ICs4MzMsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihmaWxlMV9zdGF0LCAnc3RfZmxhZ3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihmaWxlMl9zdGF0LCAnc3RfZmxhZ3MnKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUxJyksICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMicpLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHRtcGRpciwgJ3N1YicpKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ3N1YicsICdmaWxlMyddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnc3ViJywgJ2ZpbGUzJyksICd4eHgnKQogCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICAjIGZvcmNlIHNodXRpbCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeQpAQCAtNTI4LDE2ICs4ODcsMTYgQEAKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgZGlzdCA9IG9zLnBhdGguam9pbih0bXBkaXIsICdkaXN0JykKICAgICAgICAgb3MubWtkaXIoZGlzdCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbZGlzdCwgJ2ZpbGUyJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKChkaXN0LCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdmaWxlMicpLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRpc3QsICdzdWInKSkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKChkaXN0LCAnc3ViJywgJ2ZpbGUzJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YjInKSkKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCiAgICAgICAgIHJldHVybiB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmluZF9leGVjdXRhYmxlKCd0YXInKSBhbmQgZmluZF9leGVjdXRhYmxlKCdnemlwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05lZWQgdGhlIHRhciBjb21tYW5kIHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfdGFyZmlsZV92c190YXIoc2VsZik6CkBAIC01OTIsMTMgKzk1MSwxMyBAQAogICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXInCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpJUF9TVVBQT1JULCAnTmVlZCB6aXAgc3VwcG9ydCB0byBydW4nKQogICAgIGRlZiB0ZXN0X21ha2VfemlwZmlsZShzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUxJyksICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMicpLCAneHh4JykKIAogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgIyBmb3JjZSBzaHV0aWwgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkKQEAgLTYxNiw3ICs5NzUsNyBAQAogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnYXJjaGl2ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ha2VfYXJjaGl2ZSwgYmFzZV9uYW1lLCAneHh4JykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZV9vd25lcl9ncm91cChzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIG1ha2VfYXJjaGl2ZSB3aXRoIG93bmVyIGFuZCBncm91cCwgd2l0aCB2YXJpb3VzIGNvbWJpbmF0aW9ucwogICAgICAgICAjIHRoaXMgd29ya3MgZXZlbiBpZiB0aGVyZSdzIG5vdCBnaWQvdWlkIHN1cHBvcnQKQEAgLTY0NCw3ICsxMDAzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCiAKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfcm9vdF9vd25lcihzZWxmKToKICAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKQEAgLTcxMyw3ICsxMDcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGlmZi5hcHBlbmQoZmlsZV8pCiAgICAgICAgIHJldHVybiBkaWZmCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF91bnBhY2tfYXJjaGl2ZShzZWxmKToKICAgICAgICAgZm9ybWF0cyA9IFsndGFyJywgJ2d6dGFyJywgJ3ppcCddCiAgICAgICAgIGlmIEJaMl9TVVBQT1JURUQ6CkBAIC03NjQsNiArMTEyMywxNjIgQEAKICAgICAgICAgdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KCdCb28yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdW5wYWNrX2Zvcm1hdHMoKSwgZm9ybWF0cykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2h1dGlsLCAnZGlza191c2FnZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNrX3VzYWdlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpCisgICAgZGVmIHRlc3RfZGlza191c2FnZShzZWxmKToKKyAgICAgICAgdXNhZ2UgPSBzaHV0aWwuZGlza191c2FnZShvcy5nZXRjd2QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHVzYWdlLnRvdGFsLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodXNhZ2UudXNlZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodXNhZ2UuZnJlZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodXNhZ2UudG90YWwsIHVzYWdlLnVzZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih1c2FnZS50b3RhbCwgdXNhZ2UuZnJlZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAncmVxdWlyZXMgb3MuY2hvd24nKQorICAgIGRlZiB0ZXN0X2Nob3duKHNlbGYpOgorCisgICAgICAgICMgY2xlYW5lZC11cCBhdXRvbWF0aWNhbGx5IGJ5IFRlc3RTaHV0aWwudGVhckRvd24gbWV0aG9kCisgICAgICAgIGRpcm5hbWUgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1rdGVtcChkaXI9ZGlybmFtZSkKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlbmFtZSwgJ3Rlc3RpbmcgY2hvd24gZnVuY3Rpb24nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzaW5nIHVzZXJuYW1lJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzaW5nIGdyb3VwbmFtZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBiJ3NwYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgMy4xNCkKKworICAgICAgICB1aWQgPSBvcy5nZXR1aWQoKQorICAgICAgICBnaWQgPSBvcy5nZXRnaWQoKQorCisgICAgICAgIGRlZiBjaGVja19jaG93bihwYXRoLCB1aWQ9Tm9uZSwgZ2lkPU5vbmUpOgorICAgICAgICAgICAgcyA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgICAgICBpZiB1aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1aWQsIHMuc3RfdWlkKQorICAgICAgICAgICAgaWYgZ2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2lkLCBzLnN0X2dpZCkKKworICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9dWlkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPWdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIGdpZD1naWQpCisKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdXNlcj11aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIGdyb3VwPWdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgZ2lkPWdpZCkKKworICAgICAgICB1c2VyID0gcHdkLmdldHB3dWlkKHVpZClbMF0KKyAgICAgICAgZ3JvdXAgPSBncnAuZ2V0Z3JnaWQoZ2lkKVswXQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXIsIGdyb3VwKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1c2VyLCBncm91cCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkLCBnaWQpCisKKyAgICBkZWYgdGVzdF9jb3B5X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5IGFuZCBjb3B5MiBib3RoIHJldHVybiB0aGVpciBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBmb3IgZm4gaW4gKHNodXRpbC5jb3B5LCBzaHV0aWwuY29weTIpOgorICAgICAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBkc3RfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgICAgIHJ2ID0gZm4oc3JjLCBkc3RfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKGRzdF9kaXIsICdmb28nKSkKKyAgICAgICAgICAgIHJ2ID0gZm4oc3JjLCBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ2JhcicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKSkKKworICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5dHJlZSByZXR1cm5zIGl0cyBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZHN0X2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRzdF9maWxlID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKQorICAgICAgICBzcmNfZmlsZSA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmNfZmlsZSwgJ2ZvbycpCisgICAgICAgIHJ2ID0gc2h1dGlsLmNvcHlmaWxlKHNyY19maWxlLCBkc3RfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJ2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjX2ZpbGUpLCByZWFkX2ZpbGUoZHN0X2ZpbGUpKQorCisgICAgZGVmIHRlc3RfY29weXRyZWVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIGNvcHl0cmVlIHJldHVybnMgaXRzIGRlc3RpbmF0aW9uIHBhdGguCisgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkc3RfZGlyID0gc3JjX2RpciArICJkZXN0IgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgZHN0X2RpciwgVHJ1ZSkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHJ2ID0gc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydmb28nXSwgb3MubGlzdGRpcihydikpCisKKworY2xhc3MgVGVzdFdoaWNoKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc2VsZi50ZW1wX2RpciwgVHJ1ZSkKKyAgICAgICAgIyBHaXZlIHRoZSB0ZW1wX2ZpbGUgYW4gIi5leGUiIHN1ZmZpeCBmb3IgYWxsLgorICAgICAgICAjIEl0J3MgbmVlZGVkIG9uIFdpbmRvd3MgYW5kIG5vdCBoYXJtZnVsIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgc2VsZi50ZW1wX2ZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPXNlbGYudGVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iLmV4ZSIpCisgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcF9maWxlLm5hbWUsIHN0YXQuU19JWFVTUikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYudGVtcF9maWxlLmNsb3NlKQorICAgICAgICBzZWxmLmRpciwgc2VsZi5maWxlID0gb3MucGF0aC5zcGxpdChzZWxmLnRlbXBfZmlsZS5uYW1lKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICMgR2l2ZW4gYW4gRVhFIGluIGEgZGlyZWN0b3J5LCBpdCBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYuZmlsZSwgcGF0aD1zZWxmLmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgc2VsZi50ZW1wX2ZpbGUubmFtZSkKKworICAgIGRlZiB0ZXN0X2Z1bGxfcGF0aF9zaG9ydF9jaXJjdWl0KHNlbGYpOgorICAgICAgICAjIFdoZW4gZ2l2ZW4gdGhlIGZ1bGx5IHF1YWxpZmllZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgdGhhdCBleGlzdHMsCisgICAgICAgICMgaXQgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLnRlbXBfZmlsZS5uYW1lLCBwYXRoPXNlbGYudGVtcF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZW1wX2ZpbGUubmFtZSwgcnYpCisKKyAgICBkZWYgdGVzdF9ub25fbWF0Y2hpbmdfbW9kZShzZWxmKToKKyAgICAgICAgIyBTZXQgdGhlIGZpbGUgcmVhZC1vbmx5IGFuZCBhc2sgZm9yIHdyaXRlYWJsZSBmaWxlcy4KKyAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wX2ZpbGUubmFtZSwgc3RhdC5TX0lSRUFEKQorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9c2VsZi5kaXIsIG1vZGU9b3MuV19PSykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocnYpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZShzZWxmKToKKyAgICAgICAgb2xkX2N3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIGJhc2VfZGlyLCB0YWlsX2RpciA9IG9zLnBhdGguc3BsaXQoc2VsZi5kaXIpCisgICAgICAgIG9zLmNoZGlyKGJhc2VfZGlyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9dGFpbF9kaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4odGFpbF9kaXIsIHNlbGYuZmlsZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihvbGRfY3dkKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZmlsZShzZWxmKToKKyAgICAgICAgIyBSZXR1cm4gTm9uZSB3aGVuIG5vIG1hdGNoaW5nIGV4ZWN1dGFibGUgZmlsZSBpcyBmb3VuZCBvbiB0aGUgcGF0aC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goImZvby5leGUiLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShydikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoZXh0IGNoZWNrIGlzIFdpbmRvd3Mtb25seSIpCisgICAgZGVmIHRlc3RfcGF0aGV4dF9jaGVja2luZyhzZWxmKToKKyAgICAgICAgIyBBc2sgZm9yIHRoZSBmaWxlIHdpdGhvdXQgdGhlICIuZXhlIiBleHRlbnNpb24sIHRoZW4gZW5zdXJlIHRoYXQKKyAgICAgICAgIyBpdCBnZXRzIGZvdW5kIHByb3Blcmx5IHdpdGggdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi50ZW1wX2ZpbGUubmFtZVs6LTRdLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGVtcF9maWxlLm5hbWUsIHJ2KQorCiAKIGNsYXNzIFRlc3RNb3ZlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODc3LDYgKzEzOTIsNTggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9maWxlX3N5bWxpbmsoc2VsZik6CisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5zeW1saW5rKHNlbGYuc3JjX2ZpbGUsIGRzdCkKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBzZWxmLmRzdF9maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoc2VsZi5kc3RfZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2ZpbGUpKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZmlsZV9zeW1saW5rX3RvX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAiYmFyIgorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnNyY19maWxlLCBkc3QpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgc2VsZi5kc3RfZGlyKQorICAgICAgICBmaW5hbF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhmaW5hbF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc2VsZi5zcmNfZmlsZSwgZmluYWxfbGluaykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kYW5nbGluZ19zeW1saW5rKHNlbGYpOgorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JhcicpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ3F1dXgnKQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGgucmVhbHBhdGgoc3JjKSwgb3MucGF0aC5yZWFscGF0aChkc3RfbGluaykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kaXJfc3ltbGluayhzZWxmKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JheicpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5ta2RpcihzcmMpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ3F1dXgnKQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzcmMsIGRzdF9saW5rKSkKKworICAgIGRlZiB0ZXN0X21vdmVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBydiA9IHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuc3JjX2ZpbGUpKSkKKworICAgIGRlZiB0ZXN0X21vdmVfYXNfcmVuYW1lX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcnYgPSBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdiYXInKSkKKwogCiBjbGFzcyBUZXN0Q29weUZpbGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC05ODYsNiArMTU1Myw3IEBACiAgICAgICAgICMgYnV0IGEgZGlmZmVyZW50IGNhc2UuCiAKICAgICAgICAgc2VsZi5zcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBzZWxmLnNyY19kaXIsIFRydWUpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4oCiAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHNlbGYuc3JjX2RpciksCiAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShzZWxmLnNyY19kaXIpLnVwcGVyKCkpCkBAIC05OTUsMTMgKzE1NjMsNTcgQEAKICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHNlbGYuc3JjX2RpciwgZHN0X2RpcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGRzdF9kaXIpKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIoZHN0X2RpcikKKyAgICAgICAgICAgIG9zLnJtZGlyKGRzdF9kaXIpCiAKK2NsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBnZXRfdGVybWluYWxfc2l6ZSgpIHJldHVybnMgYSBtZWFuaW5nZnVsIHZhbHVlLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gZWFzeSBwb3J0YWJsZSB3YXkgdG8gYWN0dWFsbHkgY2hlY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIHRlcm1pbmFsLCBzbyBsZXQncyBjaGVjayBpZiBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5zaWJsZSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUuY29sdW1ucywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5saW5lcywgMCkKKworICAgIGRlZiB0ZXN0X29zX2Vudmlyb25fZmlyc3Qoc2VsZik6CisgICAgICAgICJDaGVjayBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaGF2ZSBwcmVjZWRlbmNlIgorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52WydDT0xVTU5TJ10gPSAnNzc3JworICAgICAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZS5jb2x1bW5zLCA3NzcpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbJ0xJTkVTJ10gPSAnODg4JworICAgICAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZS5saW5lcywgODg4KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuaXNhdHR5KHN5cy5fX3N0ZG91dF9fLmZpbGVubygpKSwgIm5vdCBvbiB0dHkiKQorICAgIGRlZiB0ZXN0X3N0dHlfbWF0Y2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIHN0dHkgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRzIGlnbm9yaW5nIGVudgorCisgICAgICAgIFRoaXMgdGVzdCB3aWxsIGZhaWwgaWYgc3RkaW4gYW5kIHN0ZG91dCBhcmUgY29ubmVjdGVkIHRvCisgICAgICAgIGRpZmZlcmVudCB0ZXJtaW5hbHMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMuIE5ldmVydGhlbGVzcywgc3VjaAorICAgICAgICBzaXR1YXRpb25zIHNob3VsZCBiZSBwcmV0dHkgcmFyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N0dHknLCAnc2l6ZSddKS5kZWNvZGUoKS5zcGxpdCgpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN0dHkgaW52b2NhdGlvbiBmYWlsZWQiKQorICAgICAgICBleHBlY3RlZCA9IChpbnQoc2l6ZVsxXSksIGludChzaXplWzBdKSkgIyByZXZlcnNlZCBvcmRlcgorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZGVsIGVudlsnTElORVMnXQorICAgICAgICAgICAgZGVsIGVudlsnQ09MVU1OUyddCisgICAgICAgICAgICBhY3R1YWwgPSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKIAogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFNodXRpbCwgVGVzdE1vdmUsIFRlc3RDb3B5RmlsZSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U2h1dGlsLCBUZXN0TW92ZSwgVGVzdENvcHlGaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1zaXplVGVzdHMsIFRlc3RXaGljaCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQppbmRleCA4ZGYxYmYwLi42YmUyNTliIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQpAQCAtMSwxNyArMSwxOSBAQAotaW1wb3J0IGVycm5vCi1pbXBvcnQgZ2MKLWltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQotaW1wb3J0IHNlbGVjdAotaW1wb3J0IHNpZ25hbAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb250ZXh0bGliIGltcG9ydCBjbG9zaW5nCitpbXBvcnQgZ2MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgc3lzLCBvcywgdGltZSwgZXJybm8KIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBzcGF3bl9weXRob24KK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczInLCAncmlzY29zJyk6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNhbid0IHRlc3Qgc2lnbmFsIG9uICVzIiAlIHN5cy5wbGF0Zm9ybSkKQEAgLTU3LDE1ICs1OSw5IEBACiAKICAgICBkZWYgaGFuZGxlckEoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgIHNlbGYuYV9jYWxsZWQgPSBUcnVlCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJoYW5kbGVyQSBpbnZva2VkIGZyb20gc2lnbmFsICVzIGF0OlxuJXMiICUgKAotICAgICAgICAgICAgICAgIHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUsIGxpbWl0PTEpKSkKIAogICAgIGRlZiBoYW5kbGVyQihzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgc2VsZi5iX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQgKCJoYW5kbGVyQiBpbnZva2VkIGZyb20gc2lnbmFsICVzIGF0OlxuJXMiICUgKAotICAgICAgICAgICAgICAgIHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUsIGxpbWl0PTEpKSkKICAgICAgICAgcmFpc2UgSGFuZGxlckJDYWxsZWQoc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSkpCiAKICAgICBkZWYgd2FpdChzZWxmLCBjaGlsZCk6CkBAIC05Miw4ICs4OCw2IEBACiAKICAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgogICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgidGVzdCBydW5uZXIncyBwaWQgaXMiLCBwaWQpCiAKICAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLUhVUCcsIHN0cihwaWQpXSkKICAgICAgICAgaWYgY2hpbGQ6CkBAIC0xMTcsOCArMTExLDYgQEAKICAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIkhhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBjYXVnaHQiKQogCiAgICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1VU1IyJywgc3RyKHBpZCldKQogICAgICAgICBpZiBjaGlsZDoKQEAgLTEzNCw4ICsxMjYsNyBAQAogICAgICAgICAgICAgIyBtYXkgcmV0dXJuIGVhcmx5LgogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIktleWJvYXJkSW50ZXJydXB0ICh0aGUgYWxhcm0oKSB3ZW50IG9mZikiKQorICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlNvbWUgb3RoZXIgZXhjZXB0aW9uIHdva2UgdXMgZnJvbSBwYXVzZTogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQpAQCAtMTkxLDcgKzE4Miw3IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEJhc2ljU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgUG9zaXhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRyaXZpYWxfc2lnbmFsX2hhbmRsZXIoc2VsZiwgKmFyZ3MpOgogICAgICAgICBwYXNzCiAKQEAgLTIzMywzMSArMjI0LDQ0IEBACiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBXYWtldXBTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGNoZWNrX3dha2V1cChzZWxmLCB0ZXN0X2JvZHkpOgotICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQgYW5kIHRvIG5vdCBjaGFuZ2Ugc2lnbmFsCi0gICAgICAgICMgaGFuZGxpbmcgb2YgdGhlIHBhcmVudCBwcm9jZXNzCisgICAgZGVmIGNoZWNrX3dha2V1cChzZWxmLCB0ZXN0X2JvZHksICpzaWduYWxzLCBvcmRlcmVkPVRydWUpOgorICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgIGltcG9ydCBmY250bAogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgc3RydWN0CisKKyAgICAgICAgc2lnbmFscyA9IHshcn0KIAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBkZWYgY2hlY2tfc2lnbnVtKHNpZ25hbHMpOgorICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQocmVhZCwgbGVuKHNpZ25hbHMpKzEpCisgICAgICAgICAgICByYWlzZWQgPSBzdHJ1Y3QudW5wYWNrKCcldUInICUgbGVuKGRhdGEpLCBkYXRhKQorICAgICAgICAgICAgaWYgbm90IHshcn06CisgICAgICAgICAgICAgICAgcmFpc2VkID0gc2V0KHJhaXNlZCkKKyAgICAgICAgICAgICAgICBzaWduYWxzID0gc2V0KHNpZ25hbHMpCisgICAgICAgICAgICBpZiByYWlzZWQgIT0gc2lnbmFsczoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVyICE9ICVyIiAlIChyYWlzZWQsIHNpZ25hbHMpKQorCiAgICAgICAgIHt9CiAKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAgICAgcmVhZCwgd3JpdGUgPSBvcy5waXBlKCkKLSAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bCh3cml0ZSwgZmNudGwuRl9HRVRGTCwgMCkKLSAgICAgICAgZmxhZ3MgPSBmbGFncyB8IG9zLk9fTk9OQkxPQ0sKLSAgICAgICAgZmNudGwuZmNudGwod3JpdGUsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICBmb3IgZmQgaW4gKHJlYWQsIHdyaXRlKToKKyAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCisgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSworICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQogICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3cml0ZSkKIAogICAgICAgICB0ZXN0KCkKKyAgICAgICAgY2hlY2tfc2lnbnVtKHNpZ25hbHMpCiAKICAgICAgICAgb3MuY2xvc2UocmVhZCkKICAgICAgICAgb3MuY2xvc2Uod3JpdGUpCi0gICAgICAgICIiIi5mb3JtYXQodGVzdF9ib2R5KQorICAgICAgICAiIiIuZm9ybWF0KHNpZ25hbHMsIG9yZGVyZWQsIHRlc3RfYm9keSkKIAogICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAKQEAgLTI4Myw3ICsyODcsNyBAQAogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gbWlkX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKLSAgICAgICAgIiIiKQorICAgICAgICAiIiIsIHNpZ25hbC5TSUdBTFJNKQogCiAgICAgZGVmIHRlc3Rfd2FrZXVwX2ZkX2R1cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKQEAgLTMwNiw3ICszMTAsMzIgQEAKICAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIGJlZm9yZV90aW1lCiAgICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCi0gICAgICAgICIiIikKKyAgICAgICAgIiIiLCBzaWduYWwuU0lHQUxSTSkKKworICAgIGRlZiB0ZXN0X3NpZ251bShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdBTFJNKQorICAgICAgICAiIiIsIHNpZ25hbC5TSUdVU1IxLCBzaWduYWwuU0lHQUxSTSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgdGVzdF9wZW5kaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2lnbnVtMSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgICAgICBzaWdudW0yID0gc2lnbmFsLlNJR1VTUjIKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0xLCBoYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0yLCBoYW5kbGVyKQorCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTEpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0yKQorICAgICAgICAgICAgIyBVbmJsb2NraW5nIHRoZSAyIHNpZ25hbHMgY2FsbHMgdGhlIEMgc2lnbmFsIGhhbmRsZXIgdHdpY2UKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCAoc2lnbnVtMSwgc2lnbnVtMikpCisgICAgICAgICIiIiwgIHNpZ25hbC5TSUdVU1IxLCBzaWduYWwuU0lHVVNSMiwgb3JkZXJlZD1GYWxzZSkKKwogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgU2lnaW50ZXJydXB0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zMTYsOSArMzQ1LDYgQEAKICAgICAgICAgcmVhZCBpcyBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsIGFuZCByYWlzZXMgYW4gZXhjZXB0aW9uLiAgUmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIGl0IHJldHVybnMgbm9ybWFsbHkuCiAgICAgICAgICIiIgotICAgICAgICBjbGFzcyBUaW1lb3V0KEV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBwYXNzCi0KICAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkLCB0byBoYXZlIGEgdGltZW91dCBvbiB0aGUKICAgICAgICAgIyBibG9ja2luZyByZWFkIGFuZCB0byBub3QgdG91Y2ggc2lnbmFsIGhhbmRsaW5nIGluIHRoaXMgcHJvY2VzcwogICAgICAgICBjb2RlID0gIiIiaWYgMToKQEAgLTM1OSwxOCArMzg1LDggQEAKICAgICAgICAgICAgICAgICAjIHdhaXQgdW50aWwgdGhlIGNoaWxkIHByb2Nlc3MgaXMgbG9hZGVkIGFuZCBoYXMgc3RhcnRlZAogICAgICAgICAgICAgICAgIGZpcnN0X2xpbmUgPSBwcm9jZXNzLnN0ZG91dC5yZWFkbGluZSgpCiAKLSAgICAgICAgICAgICAgICAjIFdhaXQgdGhlIHByb2Nlc3Mgd2l0aCBhIHRpbWVvdXQgb2YgNSBzZWNvbmRzCi0gICAgICAgICAgICAgICAgdGltZW91dCA9IHRpbWUudGltZSgpICsgNS4wCi0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IHRpbWUudGltZSgpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dCgpCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHByb2Nlc3MucG9sbCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0YXR1cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQotCi0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIGV4Y2VwdCBUaW1lb3V0OgorICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSh0aW1lb3V0PTUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDE5LDggKzQzNSw2IEBACiAKICAgICBkZWYgc2lnX2Fscm0oc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmhuZGxfY2FsbGVkID0gVHJ1ZQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiU0lHQUxSTSBoYW5kbGVyIGludm9rZWQiLCBhcmdzKQogCiAgICAgZGVmIHNpZ192dGFscm0oc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmhuZGxfY2FsbGVkID0gVHJ1ZQpAQCAtNDMyLDIxICs0NDYsMTMgQEAKICAgICAgICAgZWxpZiBzZWxmLmhuZGxfY291bnQgPT0gMzoKICAgICAgICAgICAgICMgZGlzYWJsZSBJVElNRVJfVklSVFVBTCwgdGhpcyBmdW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIGFueW1vcmUKICAgICAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9WSVJUVUFMLCAwKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCJsYXN0IFNJR1ZUQUxSTSBoYW5kbGVyIGNhbGwiKQogCiAgICAgICAgIHNlbGYuaG5kbF9jb3VudCArPSAxCiAKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlNJR1ZUQUxSTSBoYW5kbGVyIGludm9rZWQiLCBhcmdzKQotCiAgICAgZGVmIHNpZ19wcm9mKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5obmRsX2NhbGxlZCA9IFRydWUKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1BST0YsIDApCiAKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlNJR1BST0YgaGFuZGxlciBpbnZva2VkIiwgYXJncykKLQogICAgIGRlZiB0ZXN0X2l0aW1lcl9leGMoc2VsZik6CiAgICAgICAgICMgWFhYIEknbSBhc3N1bWluZyAtMSBpcyBhbiBpbnZhbGlkIGl0aW1lciwgYnV0IG1heWJlIHNvbWUgcGxhdGZvcm0KICAgICAgICAgIyBkZWZpbmVzIGl0ID8KQEAgLTQ1OSwxMCArNDY1LDcgQEAKICAgICBkZWYgdGVzdF9pdGltZXJfcmVhbChzZWxmKToKICAgICAgICAgc2VsZi5pdGltZXIgPSBzaWduYWwuSVRJTUVSX1JFQUwKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzZWxmLml0aW1lciwgMS4wKQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiXG5jYWxsIHBhdXNlKCkuLi4iKQogICAgICAgICBzaWduYWwucGF1c2UoKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5obmRsX2NhbGxlZCwgVHJ1ZSkKIAogICAgICMgSXNzdWUgMzg2NCwgdW5rbm93biBpZiB0aGlzIGFmZmVjdHMgZWFybGllciB2ZXJzaW9ucyBvZiBmcmVlYnNkIGFsc28KQEAgLTUxMSwxMSArNTE0LDM1OSBAQAogICAgICAgICAjIGFuZCB0aGUgaGFuZGxlciBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaG5kbF9jYWxsZWQsIFRydWUpCiAKKworY2xhc3MgUGVuZGluZ1NpZ25hbHNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBwdGhyZWFkX3NpZ21hc2soKSwgcHRocmVhZF9raWxsKCksIHNpZ3BlbmRpbmcoKSBhbmQgc2lnd2FpdCgpCisgICAgZnVuY3Rpb25zLgorICAgICIiIgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lncGVuZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWdwZW5kaW5nKCknKQorICAgIGRlZiB0ZXN0X3NpZ3BlbmRpbmdfZW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNpZ3BlbmRpbmcoKSwgc2V0KCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWdwZW5kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3BlbmRpbmcoKScpCisgICAgZGVmIHRlc3Rfc2lncGVuZGluZyhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKyAgICAgICAgICAgIHBlbmRpbmcgPSBzaWduYWwuc2lncGVuZGluZygpCisgICAgICAgICAgICBpZiBwZW5kaW5nICE9IHtzaWdudW19OgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgIT0geyVzfScgJSAocGVuZGluZywgc2lnbnVtKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX2tpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9raWxsKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfa2lsbChzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdmcmVlYnNkNic6CisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTIzOTIgYW5kICMxMjQ2OTogc2VuZCBhIHNpZ25hbCB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgICAgICAgICAjIGRvZXNuJ3Qgd29yayBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHRoZSBmaXJzdCB0aHJlYWQgb24KKyAgICAgICAgICAgICAgICAjIEZyZWVCU0QgNgorICAgICAgICAgICAgICAgIGRlZiBub29wKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ub29wKQorICAgICAgICAgICAgICAgIHRocmVhZC5zdGFydCgpCisgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorCisgICAgICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9raWxsKHRpZCwgc2lnbnVtKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgd2FpdF9oZWxwZXIoc2VsZiwgYmxvY2tlZCwgdGVzdCk6CisgICAgICAgICIiIgorICAgICAgICB0ZXN0OiBib2R5IG9mIHRoZSAiZGVmIHRlc3Qoc2lnbnVtKToiIGZ1bmN0aW9uLgorICAgICAgICBibG9ja2VkOiBudW1iZXIgb2YgdGhlIGJsb2NrZWQgc2lnbmFsCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gJycnaWYgMToKKyAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAxLzAKKworICAgICAgICAlcworCisgICAgICAgIGJsb2NrZWQgPSAlcworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHQUxSTQorCisgICAgICAgICMgY2hpbGQ6IGJsb2NrIGFuZCB3YWl0IHRoZSBzaWduYWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtibG9ja2VkXSkKKworICAgICAgICAgICAgIyBEbyB0aGUgdGVzdHMKKyAgICAgICAgICAgIHRlc3Qoc2lnbnVtKQorCisgICAgICAgICAgICAjIFRoZSBoYW5kbGVyIG11c3Qgbm90IGJlIGNhbGxlZCBvbiB1bmJsb2NrCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtibG9ja2VkXSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgidGhlIHNpZ25hbCBoYW5kbGVyIGhhcyBiZWVuIGNhbGxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgIHByaW50KCJlcnJvcjoge30iLmZvcm1hdChlcnIpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICcnJyAlICh0ZXN0LnN0cmlwKCksIGJsb2NrZWQpCisKKyAgICAgICAgIyBzaWcqd2FpdCogbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgc2lnbmFsIGJsb2NrZWQ6IHNpbmNlIHRoZSBjdXJyZW50CisgICAgICAgICMgcHJvY2VzcyBtaWdodCBoYXZlIHNldmVyYWwgdGhyZWFkcyBydW5uaW5nLCB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUKKyAgICAgICAgIyBhIHNpbmdsZSB0aHJlYWQuCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd3YWl0KFtzaWdudW1dKQorICAgICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigncmVjZWl2ZWQgJXMsIG5vdCAlcycgJSAocmVjZWl2ZWQsIHNpZ251bSkpCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdGluZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdGluZm8oKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdGluZm8oc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICBpbmZvID0gc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWdudW1dKQorICAgICAgICAgICAgaWYgaW5mby5zaV9zaWdubyAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJpbmZvLnNpX3NpZ25vICE9ICVzIiAlIHNpZ251bSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIGluZm8gPSBzaWduYWwuc2lndGltZWR3YWl0KFtzaWdudW1dLCAxMC4xMDAwKQorICAgICAgICAgICAgaWYgaW5mby5zaV9zaWdubyAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdpbmZvLnNpX3NpZ25vICE9ICVzJyAlIHNpZ251bSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdF9wb2xsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgcG9sbGluZyB3aXRoIHNpZ3RpbWVkd2FpdCB3b3JrcworICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorICAgICAgICAgICAgaW5mbyA9IHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ251bV0sIDApCisgICAgICAgICAgICBpZiBpbmZvLnNpX3NpZ25vICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2luZm8uc2lfc2lnbm8gIT0gJXMnICUgc2lnbnVtKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lndGltZWR3YWl0KFtzaWdudW1dLCAxLjApCisgICAgICAgICAgICBpZiByZWNlaXZlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInJlY2VpdmVkPSVyIiAlIChyZWNlaXZlZCwpKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0X25lZ2F0aXZlX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdBTFJNCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNpZ25hbC5zaWd0aW1lZHdhaXQsIFtzaWdudW1dLCAtMS4wKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0aW5mb19pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHVVNSMSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBpbXBvcnQgZXJybm8KKworICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBUcnVlCisgICAgICAgICAgICBkZWYgYWxhcm1faGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICBobmRsX2NhbGxlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGFsYXJtX2hhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwuc2lnd2FpdGluZm8oW3NpZ25hbC5TSUdVU1IxXSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhuZGxfY2FsbGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJTSUdBTFJNIGhhbmRsZXIgbm90IGNhbGxlZCIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIEVJTlRSIHRvIGJlIHJhaXNlZCBieSBzaWd3YWl0aW5mbyIpCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0KCknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKHRocmVhZGluZyBpcyBOb25lLCAidGVzdCBuZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKKyAgICBkZWYgdGVzdF9zaWd3YWl0X3RocmVhZChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGNhbGxpbmcgc2lnd2FpdCgpIGZyb20gYSB0aHJlYWQgZG9lc24ndCBzdXNwZW5kIHRoZSB3aG9sZQorICAgICAgICAjIHByb2Nlc3MuIEEgbmV3IGludGVycHJldGVyIGlzIHNwYXduZWQgdG8gYXZvaWQgcHJvYmxlbXMgd2hlbiBtaXhpbmcKKyAgICAgICAgIyB0aHJlYWRzIGFuZCBmb3JrKCk6IG9ubHkgYXN5bmMtc2FmZSBmdW5jdGlvbnMgYXJlIGFsbG93ZWQgYmV0d2VlbgorICAgICAgICAjIGZvcmsoKSBhbmQgZXhlYygpLgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCItYyIsICIiImlmIFRydWU6CisgICAgICAgICAgICBpbXBvcnQgb3MsIHRocmVhZGluZywgc3lzLCB0aW1lLCBzaWduYWwKKworICAgICAgICAgICAgIyB0aGUgZGVmYXVsdCBoYW5kbGVyIHRlcm1pbmF0ZXMgdGhlIHByb2Nlc3MKKyAgICAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisKKyAgICAgICAgICAgIGRlZiBraWxsX2xhdGVyKCk6CisgICAgICAgICAgICAgICAgIyB3YWl0IHVudGlsIHRoZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIGluIHNpZ3dhaXQoKQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisKKyAgICAgICAgICAgICMgdGhlIHNpZ25hbCBtdXN0IGJlIGJsb2NrZWQgYnkgYWxsIHRoZSB0aHJlYWRzCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAgICAga2lsbGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9a2lsbF9sYXRlcikKKyAgICAgICAgICAgIGtpbGxlci5zdGFydCgpCisgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd3YWl0KFtzaWdudW1dKQorICAgICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHByaW50KCJzaWd3YWl0KCkgcmVjZWl2ZWQgJXMsIG5vdCAlcyIgJSAocmVjZWl2ZWQsIHNpZ251bSksCisgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICBraWxsZXIuam9pbigpCisgICAgICAgICAgICAjIHVuYmxvY2sgdGhlIHNpZ25hbCwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBjbGVhcmVkIGJ5IHNpZ3dhaXQoKQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAiIiIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9zaWdtYXNrX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2ssIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaywgMSwgMiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaywgMTcwMCwgW10pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9zaWdtYXNrKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgb3M7IGltcG9ydCB0aHJlYWRpbmcKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIDEvMAorCisgICAgICAgIGRlZiBraWxsKHNpZ251bSk6CisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisKKyAgICAgICAgZGVmIHJlYWRfc2lnbWFzaygpOgorICAgICAgICAgICAgcmV0dXJuIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW10pCisKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKworICAgICAgICAjIEluc3RhbGwgb3VyIHNpZ25hbCBoYW5kbGVyCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgIyBVbmJsb2NrIFNJR1VTUjEgKGFuZCBjb3B5IHRoZSBvbGQgbWFzaykgdG8gdGVzdCBvdXIgc2lnbmFsIGhhbmRsZXIKKyAgICAgICAgb2xkX21hc2sgPSBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGtpbGwoc2lnbnVtKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorCisgICAgICAgICMgQmxvY2sgYW5kIHRoZW4gcmFpc2UgU0lHVVNSMS4gVGhlIHNpZ25hbCBpcyBibG9ja2VkOiB0aGUgc2lnbmFsCisgICAgICAgICMgaGFuZGxlciBpcyBub3QgY2FsbGVkLCBhbmQgdGhlIHNpZ25hbCBpcyBub3cgcGVuZGluZworICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBraWxsKHNpZ251bSkKKworICAgICAgICAjIENoZWNrIHRoZSBuZXcgbWFzaworICAgICAgICBibG9ja2VkID0gcmVhZF9zaWdtYXNrKCkKKyAgICAgICAgaWYgc2lnbnVtIG5vdCBpbiBibG9ja2VkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBub3QgaW4gJXMiICUgKHNpZ251bSwgYmxvY2tlZCkpCisgICAgICAgIGlmIG9sZF9tYXNrIF4gYmxvY2tlZCAhPSB7c2lnbnVtfToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgXiAlcyAhPSB7JXN9IiAlIChvbGRfbWFzaywgYmxvY2tlZCwgc2lnbnVtKSkKKworICAgICAgICAjIFVuYmxvY2sgU0lHVVNSMQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHVuYmxvY2sgdGhlIHBlbmRpbmcgc2lnbmFsIGNhbGxzIGltbWVkaWF0bHkgdGhlIHNpZ25hbCBoYW5kbGVyCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGtpbGwoc2lnbnVtKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorCisgICAgICAgICMgQ2hlY2sgdGhlIG5ldyBtYXNrCisgICAgICAgIHVuYmxvY2tlZCA9IHJlYWRfc2lnbWFzaygpCisgICAgICAgIGlmIHNpZ251bSBpbiB1bmJsb2NrZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIGluICVzIiAlIChzaWdudW0sIHVuYmxvY2tlZCkpCisgICAgICAgIGlmIGJsb2NrZWQgXiB1bmJsb2NrZWQgIT0ge3NpZ251bX06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIF4gJXMgIT0geyVzfSIgJSAoYmxvY2tlZCwgdW5ibG9ja2VkLCBzaWdudW0pKQorICAgICAgICBpZiBvbGRfbWFzayAhPSB1bmJsb2NrZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzICE9ICVzIiAlIChvbGRfbWFzaywgdW5ibG9ja2VkKSkKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdmcmVlYnNkNicsCisgICAgICAgICJpc3N1ZSAjMTIzOTI6IHNlbmQgYSBzaWduYWwgdG8gdGhlIG1haW4gdGhyZWFkIGRvZXNuJ3Qgd29yayAiCisgICAgICAgICJiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHRoZSBmaXJzdCB0aHJlYWQgb24gRnJlZUJTRCA2IikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfa2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX2tpbGwoKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9raWxsX21haW5fdGhyZWFkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIHNpZ25hbCBjYW4gYmUgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgd2l0aCBwdGhyZWFkX2tpbGwoKQorICAgICAgICAjIGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFkIGhhcyBiZWVuIGNyZWF0ZWQgKHNlZSBpc3N1ZSAjMTIzOTIpLgorICAgICAgICBjb2RlID0gIiIiaWYgVHJ1ZToKKyAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMykKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX2tpbGwodGhyZWFkaW5nLmdldF9pZGVudCgpLCBzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgIHN5cy5leGl0KDIpCisgICAgICAgICIiIgorCisgICAgICAgIHdpdGggc3Bhd25fcHl0aG9uKCctYycsIGNvZGUpIGFzIHByb2Nlc3M6CisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgaWYgZXhpdGNvZGUgIT0gMzoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNoaWxkIGVycm9yIChleGl0IGNvZGUgJXMpOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhpdGNvZGUsIHN0ZG91dCkpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmFzaWNTaWduYWxUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdHMsIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWtldXBTaWduYWxUZXN0cywgU2lnaW50ZXJydXB0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRpbWVyVGVzdCwgV2luZG93c1NpZ25hbFRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGltZXJUZXN0LCBXaW5kb3dzU2lnbmFsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdTaWduYWxzVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGJhNDI2NDkuLjI5Mjg2YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTM5LDYgKzM5LDcgQEAKICAgICAgICAgc2VsZi5vbGRfYmFzZSA9IHNpdGUuVVNFUl9CQVNFCiAgICAgICAgIHNlbGYub2xkX3NpdGUgPSBzaXRlLlVTRVJfU0lURQogICAgICAgICBzZWxmLm9sZF9wcmVmaXhlcyA9IHNpdGUuUFJFRklYRVMKKyAgICAgICAgc2VsZi5vcmlnaW5hbF92YXJzID0gc3lzY29uZmlnLl9DT05GSUdfVkFSUwogICAgICAgICBzZWxmLm9sZF92YXJzID0gY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNDcsNyArNDgsOSBAQAogICAgICAgICBzaXRlLlVTRVJfQkFTRSA9IHNlbGYub2xkX2Jhc2UKICAgICAgICAgc2l0ZS5VU0VSX1NJVEUgPSBzZWxmLm9sZF9zaXRlCiAgICAgICAgIHNpdGUuUFJFRklYRVMgPSBzZWxmLm9sZF9wcmVmaXhlcwotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5vbGRfdmFycworICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5vcmlnaW5hbF92YXJzCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzZWxmLm9sZF92YXJzKQogCiAgICAgZGVmIHRlc3RfbWFrZXBhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCBtYWtlcGF0aCgpIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgaXRzIGZpcnN0IHJldHVybiB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKaW5kZXggNjhjY2MyOS4uOTNmMTRjNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKK2ltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGlvCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHJhaXNlIER1bW15RGlzcGF0Y2hlckJyb2tlbigpCiAKIAotY2xhc3MgU01UUERTZXJ2ZXJUZXN0KFRlc3RDYXNlKToKK2NsYXNzIFNNVFBEU2VydmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogCkBAIC0zOSw2ICszOSw3IEBACiAgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCiAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKIAorICAgICAgICB3cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgd3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCkBAIC00OSw3ICs1MCw3IEBACiAgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAogCiAKLWNsYXNzIFNNVFBEQ2hhbm5lbFRlc3QoVGVzdENhc2UpOgorY2xhc3MgU01UUERDaGFubmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCkBAIC03OCwzMSArNzksOTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGJhZCBzeW50YXhcclxuJykKIAotICAgIGRlZiB0ZXN0X0VITE9fbm90X2ltcGxlbWVudGVkKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIHRlc3QuZXhhbXBsZScpCisgICAgZGVmIHRlc3RfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIEhFTFBcclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fYmFkX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAyIEVycm9yOiBjb21tYW5kICJFSExPIiBub3QgaW1wbGVtZW50ZWRcclxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IEVITE8gaG9zdG5hbWVcclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCisKKyAgICBkZWYgdGVzdF9FSExPX0hFTE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCiAKICAgICBkZWYgdGVzdF9IRUxPKHNlbGYpOgogICAgICAgICBuYW1lID0gc210cGQuc29ja2V0LmdldGZxZG4oKQotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICcyNTAge31cclxuJy5mb3JtYXQobmFtZSkuZW5jb2RlKCdhc2NpaScpKQogCisgICAgZGVmIHRlc3RfSEVMT19FSExPX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMUChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxQX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTFAgTUFJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X0hFTFBfY29tbWFuZF91bmtub3duKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxQIFNQQU0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0RBVEEgUlNFVCBOT09QIFFVSVQgVlJGWVxyXG4nKQorCiAgICAgZGVmIHRlc3RfSEVMT19iYWRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3ludGF4OiBIRUxPIGhvc3RuYW1lXHJcbicpCiAKICAgICBkZWYgdGVzdF9IRUxPX2R1cGxpY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyB0ZXN0LmV4YW1wbGUnKQotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKIAorICAgIGRlZiB0ZXN0X0hFTE9fcGFyYW1ldGVyX3JlamVjdGVkX3doZW5fZXh0ZW5zaW9uc19ub3RfZW5hYmxlZChzZWxmKToKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjxmb29AZXhhbXBsZS5jb20+IFNJWkU9MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfYWxsb3dzX3NwYWNlX2FmdGVyX2NvbG9uKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICAgPGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfZXh0ZW5kZWRfTUFJTF9hbGxvd3Nfc3BhY2VfYWZ0ZXJfY29sb24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogICA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKwogICAgIGRlZiB0ZXN0X05PT1Aoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxPX05PT1Aoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKIAogICAgIGRlZiB0ZXN0X05PT1BfYmFkX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCBoaScpCkBAIC0xMTMsMjYgKzE3Nyw0NyBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQogCisgICAgZGVmIHRlc3RfSEVMT19RVUlUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQorCiAgICAgZGVmIHRlc3RfUVVJVF9hcmdfaWdub3JlZChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUVVJVCBieWUgYnllJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQogCiAgICAgZGVmIHRlc3RfYmFkX3N0YXRlKHNlbGYpOgogICAgICAgICBzZWxmLmNoYW5uZWwuc210cF9zdGF0ZSA9ICdCQUQgU1RBVEUnCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzQ1MSBJbnRlcm5hbCBjb25mdXNpb25cclxuJykKIAogICAgIGRlZiB0ZXN0X2NvbW1hbmRfdG9vX2xvbmcoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSAnICsKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiBzZWxmLmNoYW5uZWwuY29tbWFuZF9zaXplX2xpbWl0ICsKICAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQogCi0gICAgZGVmIHRlc3RfZGF0YV90b29fbG9uZyhzZWxmKToKLSAgICAgICAgIyBTbWFsbCBoYWNrLiBTZXR0aW5nIGxpbWl0IHRvIDJLIG9jdGV0cyBoZXJlIHdpbGwgc2F2ZSB1cyBzb21lIHRpbWUuCi0gICAgICAgIHNlbGYuY2hhbm5lbC5kYXRhX3NpemVfbGltaXQgPSAyMDQ4CisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX2xpbWl0X2V4dGVuZGVkX3dpdGhfU0laRShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZmlsbF9sZW4gPSBzZWxmLmNoYW5uZWwuY29tbWFuZF9zaXplX2xpbWl0IC0gbGVuKCdNQUlMIGZyb206PEBleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogZmlsbF9sZW4gKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiAoZmlsbF9sZW4gKyAyNikgKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmdcclxuJykKKworICAgIGRlZiB0ZXN0X2RhdGFfbG9uZ2VyX3RoYW5fZGVmYXVsdF9kYXRhX3NpemVfbGltaXQoc2VsZik6CisgICAgICAgICMgSGFjayB0aGUgZGVmYXVsdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdlbmVyYXRlIHNvIG11Y2ggZGF0YS4KKyAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCkBAIC0xNDEsNjQgKzIyNiwxODMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YVxyXG4nKQogCisgICAgZGVmIHRlc3RfTUFJTF9zaXplX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9NTEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfaW52YWxpZF9zaXplX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9aW52YWxpZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX1JDUFRfdW5rbm93bl9wYXJhbWV0ZXJzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gaGFtPWdyZWVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1NSBNQUlMIEZST00gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWRcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRPOjxlZ2dzQGV4YW1wbGU+IGhhbT1ncmVlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9zaXplX3BhcmFtZXRlcl9sYXJnZXJfdGhhbl9kZWZhdWx0X2RhdGFfc2l6ZV9saW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9MjA5NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplXHJcbicpCisKICAgICBkZWYgdGVzdF9uZWVkX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVlZCBNQUlMIGNvbW1hbmRcclxuJykKIAotICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4KHNlbGYpOgorICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4X0hFTE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSBlZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKLSAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOjxhZGRyZXNzPlxyXG4nKQorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQogCi0gICAgZGVmIHRlc3RfTUFJTF9taXNzaW5nX2Zyb20oc2VsZik6CisgICAgZGVmIHRlc3RfTUFJTF9zeW50YXhfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX21pc3NpbmdfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+XHJcbicpCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCiAKICAgICBkZWYgdGVzdF9NQUlMX2NoZXZyb25zKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGVnZ3NAZXhhbXBsZT4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX2VtcHR5X2NoZXZyb25zKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiA8IkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfbm9fYW5nbGVzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfd2l0aF9zaXplKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206IDwiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20+IFNJWkU9MTAwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfd2l0aF9zaXplX25vX2FuZ2xlcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20gU0laRT0xMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKIAogICAgIGRlZiB0ZXN0X25lc3RlZF9NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYic1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmRcclxuJykKIAorICAgIGRlZiB0ZXN0X1ZSRlkoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1ZSRlkgZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzI1MiBDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSBhbmQgYXR0ZW1wdCAnICsgXAorICAgICAgICAgICAgYidkZWxpdmVyeVxyXG4nKQorCisgICAgZGVmIHRlc3RfVlJGWV9zeW50YXgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1ZSRlknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogVlJGWSA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X0VYUE5fbm90X2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFWFBOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMiBFWFBOIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHRlc3Rfbm9fSEVMT19NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9uZWVkX1JDUFQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVlZCBSQ1BUIGNvbW1hbmRcclxuJykKIAotICAgIGRlZiB0ZXN0X1JDUFRfc3ludGF4KHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICBkZWYgdGVzdF9SQ1BUX3N5bnRheF9IRUxPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206IGVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG8gZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPlxyXG4nKQogCisgICAgZGVmIHRlc3RfUkNQVF9zeW50YXhfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOiBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4gW1NQIDxtYWlsLXBhcmFtZXRlcnM+XVxyXG4nKQorCisgICAgZGVmIHRlc3RfUkNQVF9sb3dlcmNhc2VfdG9fT0soc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTogZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0bzogPGVnZ3NAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X25vX0hFTE9fUkNQVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0byBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9kYXRhX2RpYWxvZyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKICAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9EQVRBX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQSBzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInNTAxIFN5bnRheDogREFUQVxyXG4nKQogCisgICAgZGVmIHRlc3Rfbm9fSEVMT19EQVRBKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBIHNwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9kYXRhX3RyYW5zcGFyZW5jeV9zZWN0aW9uXzRfNV8yKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIwNiw2ICs0MTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLCAnLicpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9SQ1BUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOmhhbUBleGFtcGxlJykKQEAgLTIxNiw2ICs0MjEsNyBAQAogCiAgICAgZGVmIHRlc3RfbWFudWFsX3N0YXR1cyhzZWxmKToKICAgICAgICAgIyBjaGVja3MgdGhhdCB0aGUgQ2hhbm5lbCBpcyBhYmxlIHRvIHJldHVybiBhIGN1c3RvbSBzdGF0dXMgbWVzc2FnZQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIyMywxMCArNDI5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa2lzaFxyXG4nKQogCiAgICAgZGVmIHRlc3RfUlNFVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmZvb0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIzNCw1OCArNDQxLDExNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAogICAgICAgICAgICAgWygncGVlcicsICdmb29AZXhhbXBsZScsIFsnZWdnc0BleGFtcGxlJ10sICdkYXRhJyldKQogCisgICAgZGVmIHRlc3RfSEVMT19SU0VUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKICAgICBkZWYgdGVzdF9SU0VUX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCBoaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzUwMSBTeW50YXg6IFJTRVRcclxuJykKIAorICAgIGRlZiB0ZXN0X3Vua25vd25fY29tbWFuZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVU5LTk9XTl9DTUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogY29tbWFuZCAiVU5LTk9XTl9DTUQiIG5vdCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGIncmVjb2duaXplZFxyXG4nKQorCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlX2RlcHJlY2F0aW9ucyhzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zZXJ2ZXIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3NlcnZlciA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2xpbmUKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2xpbmUgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zdGF0ZQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc3RhdGUgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19ncmVldGluZwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZ3JlZXRpbmcgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19tYWlsZnJvbQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbWFpbGZyb20gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19yY3B0dG9zCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19yY3B0dG9zID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZGF0YQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZGF0YSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2ZxZG4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2ZxZG4gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19wZWVyCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19wZWVyID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fY29ubgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fY29ubiA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIgPSAnc3BhbScKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNNVFBEU2VydmVyVGVzdCwgU01UUERDaGFubmVsVGVzdCkKKworY2xhc3MgU01UUERDaGFubmVsV2l0aERhdGFTaXplTGltaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICAjIFNldCBEQVRBIHNpemUgbGltaXQgdG8gMzIgYnl0ZXMgZm9yIGVhc3kgdGVzdGluZworICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwgMzIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj5cclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKKyAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisKKyAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZ190b29fbXVjaF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidUaGlzIG1lc3NhZ2UgaXMgbG9uZ2VyIHRoYW4gMzIgYnl0ZXNcclxuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTUyIEVycm9yOiBUb28gbXVjaCBtYWlsIGRhdGFcclxuJykKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKaW5kZXggMmNiMGQxYS4uYmVmYzQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgZXJybm8KIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1vY2tfc29ja2V0CkBAIC03Miw2ICs3MywxNCBAQAogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgc210cC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdFNvdXJjZUFkZHJlc3Moc2VsZik6CisgICAgICAgIG1vY2tfc29ja2V0LnJlcGx5X3dpdGgoYiIyMjAgSG9sYSBtdW5kbyIpCisgICAgICAgICMgY29ubmVjdHMKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9KCcxMjcuMC4wLjEnLDE5ODc2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNvdXJjZV9hZGRyZXNzLCAoJzEyNy4wLjAuMScsIDE5ODc2KSkKKyAgICAgICAgc210cC5jbG9zZSgpCisKICAgICBkZWYgdGVzdEJhc2ljMihzZWxmKToKICAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIb2xhIG11bmRvIikKICAgICAgICAgIyBjb25uZWN0cywgaW5jbHVkZSBwb3J0IGluIGhvc3QgbmFtZQpAQCAtMjA0LDE1ICsyMTMsMjkgQEAKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKKyAgICBkZWYgdGVzdFNvdXJjZUFkZHJlc3Moc2VsZik6CisgICAgICAgICMgY29ubmVjdAorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMsIHNvdXJjZV9hZGRyZXNzPSgnMTI3LjAuMC4xJywgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuc291cmNlX2FkZHJlc3MsICgnMTI3LjAuMC4xJywgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubG9jYWxfaG9zdG5hbWUsICdsb2NhbGhvc3QnKQorICAgICAgICAgICAgc210cC5xdWl0KCkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFERFJJTlVTRToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb3VsZG4ndCBiaW5kIHRvIHBvcnQgJWQiICUgcG9ydCkKKyAgICAgICAgICAgIHJhaXNlCisKICAgICBkZWYgdGVzdE5PT1Aoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT2snKQorICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT0snKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubm9vcCgpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIAogICAgIGRlZiB0ZXN0UlNFVChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPaycpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5yc2V0KCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCkBAIC0yMjMsMTAgKzI0NiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZWhsbygpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIAotICAgIGRlZiB0ZXN0VlJGWShzZWxmKToKLSAgICAgICAgIyBWUkZZIGlzbid0IGltcGxlbWVudGVkIGluIERlYnVnZ2luZ1NlcnZlcgorICAgIGRlZiB0ZXN0Tm90SW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMgRVhQTiBpc24ndCBpbXBsZW1lbnRlZCBpbiBEZWJ1Z2dpbmdTZXJ2ZXIKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDUwMiwgYidFcnJvcjogY29tbWFuZCAiVlJGWSIgbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgZXhwZWN0ZWQgPSAoNTAyLCBiJ0VYUE4gbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgc210cC5wdXRjbWQoJ0VYUE4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZ2V0cmVwbHkoKSwgZXhwZWN0ZWQpCisgICAgICAgIHNtdHAucXVpdCgpCisKKyAgICBkZWYgdGVzdFZSRlkoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBleHBlY3RlZCA9ICgyNTIsIGInQ2Fubm90IFZSRlkgdXNlciwgYnV0IHdpbGwgYWNjZXB0IG1lc3NhZ2UgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZyZnkoJ25vYm9keUBub3doZXJlLmNvbScpLCBleHBlY3RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZlcmlmeSgnbm9ib2R5QG5vd2hlcmUuY29tJyksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQpAQCAtMjQyLDcgKzI3Myw4IEBACiAKICAgICBkZWYgdGVzdEhFTFAoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuaGVscCgpLCBiJ0Vycm9yOiBjb21tYW5kICJIRUxQIiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuaGVscCgpLCBiJ1N1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidSQ1BUIERBVEEgUlNFVCBOT09QIFFVSVQgVlJGWScpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKICAgICBkZWYgdGVzdFNlbmQoc2VsZik6CkBAIC01NjAsNiArNTkyLDkgQEAKICMgU2ltdWxhdGVkIFNNVFAgY2hhbm5lbCAmIHNlcnZlcgogY2xhc3MgU2ltU01UUENoYW5uZWwoc210cGQuU01UUENoYW5uZWwpOgogCisgICAgIyBGb3IgdGVzdGluZyBmYWlsdXJlcyBpbiBRVUlUIHdoZW4gdXNpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBBUEkuCisgICAgcXVpdF9yZXNwb25zZSA9IE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYV9mZWF0dXJlcywgKmFyZ3MsICoqa3cpOgogICAgICAgICBzZWxmLl9leHRyYWZlYXR1cmVzID0gJycuam9pbigKICAgICAgICAgICAgIFsgIjI1MC17MH1cclxuIi5mb3JtYXQoeCkgZm9yIHggaW4gZXh0cmFfZmVhdHVyZXMgXSkKQEAgLTYxMCwxOSArNjQ1LDMxIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBObyBhY2Nlc3MgZm9yIHlvdSEnKQogCisgICAgZGVmIHNtdHBfUVVJVChzZWxmLCBhcmcpOgorICAgICAgICAjIGFyZ3MgaXMgaWdub3JlZAorICAgICAgICBpZiBzZWxmLnF1aXRfcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHN1cGVyKFNpbVNNVFBDaGFubmVsLCBzZWxmKS5zbXRwX1FVSVQoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKHNlbGYucXVpdF9yZXNwb25zZSkKKyAgICAgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKKwogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHJhaXNlCiAKIAogY2xhc3MgU2ltU01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKIAorICAgICMgRm9yIHRlc3RpbmcgZmFpbHVyZXMgaW4gUVVJVCB3aGVuIHVzaW5nIHRoZSBjb250ZXh0IG1hbmFnZXIgQVBJLgorICAgIHF1aXRfcmVzcG9uc2UgPSBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcyA9IFtdCiAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpCiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgotICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbCA9IFNpbVNNVFBDaGFubmVsKHNlbGYuX2V4dHJhX2ZlYXR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gU2ltU01UUENoYW5uZWwoCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwucXVpdF9yZXNwb25zZSA9IHNlbGYucXVpdF9yZXNwb25zZQogCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIHBhc3MKQEAgLTc1Miw2ICs3OTksMjUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfY3JlZGVudGlhbHNbJ2NyYW0tbWQ1J10sIHN0cihlcnIpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICBjb2RlLCBtZXNzYWdlID0gc210cC5ub29wKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgMjUwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQsIHNtdHAuc2VuZCwgYidmb28nKQorICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQU2VydmVyRGlzY29ubmVjdGVkLCBzbXRwLnNlbmQsIGInZm9vJykKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X1FVSVRfZmFpbHVyZShzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LnF1aXRfcmVzcG9uc2UgPSAnNDIxIFFVSVQgRkFJTEVEJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNtdHBsaWIuU01UUFJlc3BvbnNlRXhjZXB0aW9uKSBhcyBlcnJvcjoKKyAgICAgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgICAgICBzbXRwLm5vb3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yLmV4Y2VwdGlvbi5zbXRwX2NvZGUsIDQyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvci5leGNlcHRpb24uc210cF9lcnJvciwgYidRVUlUIEZBSUxFRCcpCisgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBzZWxmLnNlcnYucXVpdF9yZXNwb25zZSBiZWNhdXNlIGEgbmV3CisgICAgICAgICMgc2VydmVyIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQgaW4gdGhlIHNldFVwKCkuCisKICAgICAjVE9ETzogYWRkIHRlc3RzIGZvciBjb3JyZWN0IEFVVEggbWV0aG9kIGZhbGxiYWNrIG5vdyB0aGF0IHRoZQogICAgICN0ZXN0IGluZnJhc3RydWN0dXJlIGNhbiBzdXBwb3J0IGl0LgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKaW5kZXggMDE5OGFiNi4uODYyMjRlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQpAQCAtNCwyOCArNCw2MCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc210cGxpYgogCitzc2wgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoInNzbCIpCisKIHN1cHBvcnQucmVxdWlyZXMoIm5ldHdvcmsiKQogCisKK2NsYXNzIFNtdHBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB0ZXN0U2VydmVyID0gJ3NtdHAuZ21haWwuY29tJworICAgIHJlbW90ZVBvcnQgPSAyNQorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9zdGFydHRscyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuc3RhcnR0bHMoY29udGV4dD1zZWxmLmNvbnRleHQpCisgICAgICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09ICdTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuJzoKKyAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3Quc2tpcChlLmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKworCiBjbGFzcyBTbXRwU1NMVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGVzdFNlcnZlciA9ICdzbXRwLmdtYWlsLmNvbScKICAgICByZW1vdGVQb3J0ID0gNDY1CisgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgogICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCkKLSAgICAgICAgc2VydmVyLmVobG8oKQotICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2RlZmF1bHRfcG9ydChzZWxmKToKICAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKICAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyKQotICAgICAgICBzZXJ2ZXIuZWhsbygpCi0gICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfdXNpbmdfc3NsY29udGV4dChzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyLCBzZWxmLnJlbW90ZVBvcnQsIGNvbnRleHQ9c2VsZi5jb250ZXh0KQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwU1NMVGVzdCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwVGVzdCwgU210cFNTTFRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKaW5kZXggZTJlZDIxZC4uZDdjOWEzMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKQEAgLTIsMTEgKzIsMTQgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgX0V4cGVjdGVkRmFpbHVyZQogCiBpbXBvcnQgZXJybm8KIGltcG9ydCBpbwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgX3Rlc3RjYXBpCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHF1ZXVlCkBAIC0xOCwzNCArMjEsMTkgQEAKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIGltcG9ydCBzaWduYWwKIGltcG9ydCBtYXRoCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc3RydWN0CiB0cnk6CiAgICAgaW1wb3J0IGZjbnRsCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBGYWxzZQotCi1kZWYgdHJ5X2FkZHJlc3MoaG9zdCwgcG9ydD0wLCBmYW1pbHk9c29ja2V0LkFGX0lORVQpOgotICAgICIiIlRyeSB0byBiaW5kIGEgc29ja2V0IG9uIHRoZSBnaXZlbiBob3N0OnBvcnQgYW5kIHJldHVybiBUcnVlCi0gICAgaWYgdGhhdCBoYXMgYmVlbiBwb3NzaWJsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzb2NrLmJpbmQoKGhvc3QsIHBvcnQpKQotICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBzb2NrZXQuZ2FpZXJyb3IpOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBzb2NrLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIFRydWUKLQotZGVmIGxpbnV4X3ZlcnNpb24oKToKLSAgICB0cnk6Ci0gICAgICAgICMgcGxhdGZvcm0ucmVsZWFzZSgpIGlzIHNvbWV0aGluZyBsaWtlICcyLjYuMzMuNy1kZXNrdG9wLTJtbmInCi0gICAgICAgIHZlcnNpb25fc3RyaW5nID0gcGxhdGZvcm0ucmVsZWFzZSgpLnNwbGl0KCctJylbMF0KLSAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChpbnQsIHZlcnNpb25fc3RyaW5nLnNwbGl0KCcuJykpKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICByZXR1cm4gMCwgMCwgMAordHJ5OgorICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBtdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQogCiBIT1NUID0gc3VwcG9ydC5IT1NUCi1NU0cgPSAnTWljaGFlbCBHaWxmaXggd2FzIGhlcmVcdTEyMzRcclxuJy5lbmNvZGUoJ3V0ZjgnKSAjIyB0ZXN0IHVuaWNvZGUgc3RyaW5nIGFuZCBjYXJyaWFnZSByZXR1cm4KLVNVUFBPUlRTX0lQVjYgPSBzb2NrZXQuaGFzX2lwdjYgYW5kIHRyeV9hZGRyZXNzKCc6OjEnLCBmYW1pbHk9c29ja2V0LkFGX0lORVQ2KQorTVNHID0gJ01pY2hhZWwgR2lsZml4IHdhcyBoZXJlXHUxMjM0XHJcbicuZW5jb2RlKCd1dGYtOCcpICMjIHRlc3QgdW5pY29kZSBzdHJpbmcgYW5kIGNhcnJpYWdlIHJldHVybgogCiB0cnk6CiAgICAgaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCkBAIC01NCw2ICs0MiwzMyBAQAogICAgIHRocmVhZCA9IE5vbmUKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2RlZiBfaGF2ZV9zb2NrZXRfY2FuKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBDQU4gc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgc29ja2V0LmVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKworZGVmIF9oYXZlX3NvY2tldF9yZHMoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIFJEUyBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBob3N0LiIiIgorICAgIHRyeToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBzLmNsb3NlKCkKKyAgICByZXR1cm4gVHJ1ZQorCitIQVZFX1NPQ0tFVF9DQU4gPSBfaGF2ZV9zb2NrZXRfY2FuKCkKKworSEFWRV9TT0NLRVRfUkRTID0gX2hhdmVfc29ja2V0X3JkcygpCisKKyMgU2l6ZSBpbiBieXRlcyBvZiB0aGUgaW50IHR5cGUKK1NJWkVPRl9JTlQgPSBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplCisKIGNsYXNzIFNvY2tldFRDUFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNzUsNiArOTAsNjMgQEAKICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ID0gTm9uZQogCitjbGFzcyBUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJTdWJjbGFzcyBvZiB1bml0dGVzdC5UZXN0Q2FzZSB3aXRoIHRocmVhZC1zYWZlIGNsZWFudXAgbWV0aG9kcy4KKworICAgIFRoaXMgc3ViY2xhc3MgcHJvdGVjdHMgdGhlIGFkZENsZWFudXAoKSBhbmQgZG9DbGVhbnVwcygpIG1ldGhvZHMKKyAgICB3aXRoIGEgcmVjdXJzaXZlIGxvY2suCisgICAgIiIiCisKKyAgICBpZiB0aHJlYWRpbmc6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQorCisgICAgICAgIGRlZiBhZGRDbGVhbnVwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfbG9jazoKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5hZGRDbGVhbnVwKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBkZWYgZG9DbGVhbnVwcyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9jbGVhbnVwX2xvY2s6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZG9DbGVhbnVwcygqYXJncywgKiprd2FyZ3MpCisKK2NsYXNzIFNvY2tldENBTlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVG8gYmUgYWJsZSB0byBydW4gdGhpcyB0ZXN0LCBhIGB2Y2FuMGAgQ0FOIGludGVyZmFjZSBjYW4gYmUgY3JlYXRlZCB3aXRoCisgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKyAgICAjIG1vZHByb2JlIHZjYW4KKyAgICAjIGlwIGxpbmsgYWRkIGRldiB2Y2FuMCB0eXBlIHZjYW4KKyAgICAjIGlmY29uZmlnIHZjYW4wIHVwCisgICAgIiIiCisgICAgaW50ZXJmYWNlID0gJ3ZjYW4wJworICAgIGJ1ZnNpemUgPSAxMjgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zLmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnMuYmluZCgoc2VsZi5pbnRlcmZhY2UsKSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ25ldHdvcmsgaW50ZXJmYWNlIGAlc2AgZG9lcyBub3QgZXhpc3QnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJmYWNlKQorCisKK2NsYXNzIFNvY2tldFJEU1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVG8gYmUgYWJsZSB0byBydW4gdGhpcyB0ZXN0LCB0aGUgYHJkc2Aga2VybmVsIG1vZHVsZSBtdXN0IGJlIGxvYWRlZDoKKyAgICAjIG1vZHByb2JlIHJkcworICAgICIiIgorICAgIGJ1ZnNpemUgPSA4MTkyCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2LmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndW5hYmxlIHRvIGJpbmQgUkRTIHNvY2tldCcpCisKKwogY2xhc3MgVGhyZWFkYWJsZVRlc3Q6CiAgICAgIiIiVGhyZWFkYWJsZSBUZXN0IGNsYXNzCiAKQEAgLTEzMiw2ICsyMDQsNyBAQAogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuZG9uZSA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZS5RdWV1ZSgxKQorICAgICAgICBzZWxmLnNlcnZlcl9jcmFzaGVkID0gRmFsc2UKIAogICAgICAgICAjIERvIHNvbWUgbXVuZ2luZyB0byBzdGFydCB0aGUgY2xpZW50IHRlc3QuCiAgICAgICAgIG1ldGhvZG5hbWUgPSBzZWxmLmlkKCkKQEAgLTE0MSw4ICsyMTQsMTIgQEAKICAgICAgICAgc2VsZi5jbGllbnRfdGhyZWFkID0gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoCiAgICAgICAgICAgICBzZWxmLmNsaWVudFJ1biwgKHRlc3RfbWV0aG9kLCkpCiAKLSAgICAgICAgc2VsZi5fX3NldFVwKCkKLSAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX3JlYWR5LmlzX3NldCgpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9fc2V0VXAoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jcmFzaGVkID0gVHJ1ZQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3JlYWR5LnNldCgpCiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LndhaXQoKQogCkBAIC0xNTgsMTAgKzIzNSwxNiBAQAogICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS53YWl0KCkKICAgICAgICAgc2VsZi5jbGllbnRTZXRVcCgpCiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LnNldCgpCisgICAgICAgIGlmIHNlbGYuc2VydmVyX2NyYXNoZWQ6CisgICAgICAgICAgICBzZWxmLmNsaWVudFRlYXJEb3duKCkKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3QgaGFzYXR0cih0ZXN0X2Z1bmMsICdfX2NhbGxfXycpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0ZXN0X2Z1bmMgbXVzdCBiZSBhIGNhbGxhYmxlIGZ1bmN0aW9uIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdF9mdW5jKCkKKyAgICAgICAgZXhjZXB0IF9FeHBlY3RlZEZhaWx1cmU6CisgICAgICAgICAgICAjIFdlIGRlbGliZXJhdGVseSBpZ25vcmUgZXhwZWN0ZWQgZmFpbHVyZXMKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYucXVldWUucHV0KGUpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMDIsNiArMjg1LDQ4IEBACiAgICAgICAgIHNlbGYuY2xpID0gTm9uZQogICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQogCitjbGFzcyBUaHJlYWRlZENBTlNvY2tldFRlc3QoU29ja2V0Q0FOVGVzdCwgVGhyZWFkYWJsZVRlc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgU29ja2V0Q0FOVGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaS5iaW5kKChzZWxmLmludGVyZmFjZSwpKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgIyBza2lwVGVzdCBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlLCBhbmQgd2lsbCBiZSBjYWxsZWQgaW4gdGhlCisgICAgICAgICAgICAjIHNlcnZlciBpbnN0ZWFkCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGkgPSBOb25lCisgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCisKK2NsYXNzIFRocmVhZGVkUkRTU29ja2V0VGVzdChTb2NrZXRSRFNUZXN0LCBUaHJlYWRhYmxlVGVzdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgorICAgICAgICBTb2NrZXRSRFNUZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuX19pbml0X18oc2VsZikKKworICAgIGRlZiBjbGllbnRTZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jbGkgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBSRFMgc29ja2V0cyBtdXN0IGJlIGJvdW5kIGV4cGxpY2l0bHkgdG8gc2VuZCBvciByZWNlaXZlIGRhdGEKKyAgICAgICAgICAgIHNlbGYuY2xpLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgc2VsZi5jbGlfYWRkciA9IHNlbGYuY2xpLmdldHNvY2tuYW1lKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIHNraXBUZXN0IHNob3VsZCBub3QgYmUgY2FsbGVkIGhlcmUsIGFuZCB3aWxsIGJlIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgICAgICMgc2VydmVyIGluc3RlYWQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGkuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaSA9IE5vbmUKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKKwogY2xhc3MgU29ja2V0Q29ubmVjdGVkVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgogICAgICIiIlNvY2tldCB0ZXN0cyBmb3IgY2xpZW50LXNlcnZlciBjb25uZWN0aW9uLgogCkBAIC0yNTcsNiArMzgyLDI0MyBAQAogICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQogCiAKKyMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIGJ5IHRoZSBzZW5kbXNnKCkvcmVjdm1zZygpIHRlc3RzLgorIyBDb21iaW5pbmcsIGZvciBpbnN0YW5jZSwgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluIGFuZCBUQ1BUZXN0QmFzZQorIyBnaXZlcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIFNvY2tldENvbm5lY3RlZFRlc3QsIGJ1dCBkaWZmZXJlbnQKKyMgYWRkcmVzcyBmYW1pbGllcyBjYW4gYmUgdXNlZCwgYW5kIHRoZSBhdHRyaWJ1dGVzIHNlcnZfYWRkciBhbmQKKyMgY2xpX2FkZHIgd2lsbCBiZSBzZXQgdG8gdGhlIGFkZHJlc3NlcyBvZiB0aGUgZW5kcG9pbnRzLgorCitjbGFzcyBTb2NrZXRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSBiYXNlIGNsYXNzIGZvciBzb2NrZXQgdGVzdHMuCisKKyAgICBTdWJjbGFzc2VzIG11c3QgcHJvdmlkZSBtZXRob2RzIG5ld1NvY2tldCgpIHRvIHJldHVybiBhIG5ldyBzb2NrZXQKKyAgICBhbmQgYmluZFNvY2soc29jaykgdG8gYmluZCBpdCB0byBhbiB1bnVzZWQgYWRkcmVzcy4KKworICAgIENyZWF0ZXMgYSBzb2NrZXQgc2VsZi5zZXJ2IGFuZCBzZXRzIHNlbGYuc2Vydl9hZGRyIHRvIGl0cyBhZGRyZXNzLgorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYgPSBzZWxmLm5ld1NvY2tldCgpCisgICAgICAgIHNlbGYuYmluZFNlcnZlcigpCisKKyAgICBkZWYgYmluZFNlcnZlcihzZWxmKToKKyAgICAgICAgIiIiQmluZCBzZXJ2ZXIgc29ja2V0IGFuZCBzZXQgc2VsZi5zZXJ2X2FkZHIgdG8gaXRzIGFkZHJlc3MuIiIiCisgICAgICAgIHNlbGYuYmluZFNvY2soc2VsZi5zZXJ2KQorICAgICAgICBzZWxmLnNlcnZfYWRkciA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCisgICAgICAgIHNlbGYuc2VydiA9IE5vbmUKKworCitjbGFzcyBTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4oU29ja2V0VGVzdEJhc2UpOgorICAgICIiIk1peGluIHRvIGxpc3RlbiBvbiB0aGUgc2VydmVyIHNvY2tldC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oMSkKKworCitjbGFzcyBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbihUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlLCBTb2NrZXRUZXN0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGFibGVUZXN0KToKKyAgICAiIiJNaXhpbiB0byBhZGQgY2xpZW50IHNvY2tldCBhbmQgYWxsb3cgY2xpZW50L3NlcnZlciB0ZXN0cy4KKworICAgIENsaWVudCBzb2NrZXQgaXMgc2VsZi5jbGkgYW5kIGl0cyBhZGRyZXNzIGlzIHNlbGYuY2xpX2FkZHIuICBTZWUKKyAgICBUaHJlYWRhYmxlVGVzdCBmb3IgdXNhZ2UgaW5mb3JtYXRpb24uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc2VsZi5uZXdDbGllbnRTb2NrZXQoKQorICAgICAgICBzZWxmLmJpbmRDbGllbnQoKQorCisgICAgZGVmIG5ld0NsaWVudFNvY2tldChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHNvY2tldCBmb3IgdXNlIGFzIGNsaWVudC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYubmV3U29ja2V0KCkKKworICAgIGRlZiBiaW5kQ2xpZW50KHNlbGYpOgorICAgICAgICAiIiJCaW5kIGNsaWVudCBzb2NrZXQgYW5kIHNldCBzZWxmLmNsaV9hZGRyIHRvIGl0cyBhZGRyZXNzLiIiIgorICAgICAgICBzZWxmLmJpbmRTb2NrKHNlbGYuY2xpKQorICAgICAgICBzZWxmLmNsaV9hZGRyID0gc2VsZi5jbGkuZ2V0c29ja25hbWUoKQorCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpID0gTm9uZQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQorCisKK2NsYXNzIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbihTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4pOgorICAgICIiIk1peGluIHRvIGFsbG93IGNsaWVudC9zZXJ2ZXIgc3RyZWFtIHRlc3RzIHdpdGggY29ubmVjdGVkIGNsaWVudC4KKworICAgIFNlcnZlcidzIHNvY2tldCByZXByZXNlbnRpbmcgY29ubmVjdGlvbiB0byBjbGllbnQgaXMgc2VsZi5jbGlfY29ubgorICAgIGFuZCBjbGllbnQncyBjb25uZWN0aW9uIHRvIHNlcnZlciBpcyBzZWxmLnNlcnZfY29ubi4gIChCYXNlZCBvbgorICAgIFNvY2tldENvbm5lY3RlZFRlc3QuKQorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgIyBJbmRpY2F0ZSBleHBsaWNpdGx5IHdlJ3JlIHJlYWR5IGZvciB0aGUgY2xpZW50IHRocmVhZCB0bworICAgICAgICAjIHByb2NlZWQgYW5kIHRoZW4gcGVyZm9ybSB0aGUgYmxvY2tpbmcgY2FsbCB0byBhY2NlcHQKKyAgICAgICAgc2VsZi5zZXJ2ZXJFeHBsaWNpdFJlYWR5KCkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBzZWxmLmNsaV9jb25uID0gY29ubgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaV9jb25uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS50ZWFyRG93bigpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY2xpZW50U2V0VXAoKQorICAgICAgICBzZWxmLmNsaS5jb25uZWN0KHNlbGYuc2Vydl9hZGRyKQorICAgICAgICBzZWxmLnNlcnZfY29ubiA9IHNlbGYuY2xpCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydl9jb25uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBOb25lCisgICAgICAgIHN1cGVyKCkuY2xpZW50VGVhckRvd24oKQorCisKK2NsYXNzIFVuaXhTb2NrZXRUZXN0QmFzZShTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVW5peC1kb21haW4gc29ja2V0IHRlc3RzLiIiIgorCisgICAgIyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nIHRlc3RzLCBzbyB3ZQorICAgICMgY3JlYXRlIHRoZSBzb2NrZXRzIGluIGEgcHJpdmF0ZSBkaXJlY3Rvcnkgc28gdGhhdCBvdGhlciB1c2VycworICAgICMgY2FuJ3Qgc2VuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHByb2JsZW1hdGljIGZvciBhIHByaXZpbGVnZWQKKyAgICAjIHVzZXIgcnVubmluZyB0aGUgdGVzdHMuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlyX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJtZGlyLCBzZWxmLmRpcl9wYXRoKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgcGF0aCA9IHRlbXBmaWxlLm1rdGVtcChkaXI9c2VsZi5kaXJfcGF0aCkKKyAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKworY2xhc3MgVW5peFN0cmVhbUJhc2UoVW5peFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVbml4LWRvbWFpbiBTT0NLX1NUUkVBTSB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisKKworY2xhc3MgSW5ldFRlc3RCYXNlKFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUHY0IHNvY2tldCB0ZXN0cy4iIiIKKworICAgIGhvc3QgPSBIT1NUCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnZfYWRkclsxXQorCisgICAgZGVmIGJpbmRTb2NrKHNlbGYsIHNvY2spOgorICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzb2NrLCBob3N0PXNlbGYuaG9zdCkKKworY2xhc3MgVENQVGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBUQ1Atb3Zlci1JUHY0IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworY2xhc3MgVURQVGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVRFAtb3Zlci1JUHY0IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQorCitjbGFzcyBTQ1RQU3RyZWFtQmFzZShJbmV0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFNDVFAgdGVzdHMgaW4gb25lLXRvLW9uZSAoU09DS19TVFJFQU0pIG1vZGUuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBQUk9UT19TQ1RQKQorCisKK2NsYXNzIEluZXQ2VGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUHY2IHNvY2tldCB0ZXN0cy4iIiIKKworICAgICMgRG9uJ3QgdXNlICJsb2NhbGhvc3QiIGhlcmUgLSBpdCBtYXkgbm90IGhhdmUgYW4gSVB2NiBhZGRyZXNzCisgICAgIyBhc3NpZ25lZCB0byBpdCBieSBkZWZhdWx0IChlLmcuIGluIC9ldGMvaG9zdHMpLCBhbmQgaWYgc29tZW9uZQorICAgICMgaGFzIGFzc2lnbmVkIGl0IGFuIElQdjQtbWFwcGVkIGFkZHJlc3MsIHRoZW4gaXQncyB1bmxpa2VseSB0bworICAgICMgd29yayB3aXRoIHRoZSBmdWxsIElQdjYgQVBJLgorICAgIGhvc3QgPSAiOjoxIgorCitjbGFzcyBVRFA2VGVzdEJhc2UoSW5ldDZUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVURQLW92ZXItSVB2NiB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfREdSQU0pCisKKworIyBUZXN0LXNraXBwaW5nIGRlY29yYXRvcnMgZm9yIHVzZSB3aXRoIFRocmVhZGFibGVUZXN0LgorCitkZWYgc2tpcFdpdGhDbGllbnRJZihjb25kaXRpb24sIHJlYXNvbik6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYWRkIGNsaWVudF9za2lwIGRlY29yYXRvci4KKworICAgIElmIHRoZSBkZWNvcmF0ZWQgb2JqZWN0IGlzIG5vdCBhIGNsYXNzLCBzZXRzIGl0cyBhdHRyaWJ1dGUKKyAgICAiY2xpZW50X3NraXAiIHRvIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGZ1bmN0aW9uCisgICAgaWYgdGhlIHRlc3QgaXMgdG8gYmUgc2tpcHBlZCwgb3IgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGlmIGl0IGlzCisgICAgbm90LiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBydW5uaW5nIHRoZSBjbGllbnQgcGFydCBvZiBhCisgICAgc2tpcHBlZCB0ZXN0IHdoZW4gdXNpbmcgVGhyZWFkYWJsZVRlc3QuCisgICAgIiIiCisgICAgZGVmIGNsaWVudF9wYXNzKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgc2tpcGRlYyhvYmopOgorICAgICAgICByZXR2YWwgPSB1bml0dGVzdC5za2lwKHJlYXNvbikob2JqKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAgICAgcmV0dmFsLmNsaWVudF9za2lwID0gbGFtYmRhIGY6IGNsaWVudF9wYXNzCisgICAgICAgIHJldHVybiByZXR2YWwKKyAgICBkZWYgbm9za2lwZGVjKG9iaik6CisgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShvYmosIHR5cGUpIG9yIGhhc2F0dHIob2JqLCAiY2xpZW50X3NraXAiKSk6CisgICAgICAgICAgICBvYmouY2xpZW50X3NraXAgPSBsYW1iZGEgZjogZgorICAgICAgICByZXR1cm4gb2JqCisgICAgcmV0dXJuIHNraXBkZWMgaWYgY29uZGl0aW9uIGVsc2Ugbm9za2lwZGVjCisKKworZGVmIHJlcXVpcmVBdHRycyhvYmosICphdHRyaWJ1dGVzKToKKyAgICAiIiJTa2lwIGRlY29yYXRlZCB0ZXN0IGlmIG9iaiBpcyBtaXNzaW5nIGFueSBvZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcy4KKworICAgIFNldHMgY2xpZW50X3NraXAgYXR0cmlidXRlIGFzIHNraXBXaXRoQ2xpZW50SWYoKSBkb2VzLgorICAgICIiIgorICAgIG1pc3NpbmcgPSBbbmFtZSBmb3IgbmFtZSBpbiBhdHRyaWJ1dGVzIGlmIG5vdCBoYXNhdHRyKG9iaiwgbmFtZSldCisgICAgcmV0dXJuIHNraXBXaXRoQ2xpZW50SWYoCisgICAgICAgIG1pc3NpbmcsICJkb24ndCBoYXZlICIgKyAiLCAiLmpvaW4obmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nKSkKKworCitkZWYgcmVxdWlyZVNvY2tldCgqYXJncyk6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBhIHNvY2tldCBjYW5ub3QgYmUgY3JlYXRlZCB3aXRoIGdpdmVuIGFyZ3VtZW50cy4KKworICAgIFdoZW4gYW4gYXJndW1lbnQgaXMgZ2l2ZW4gYXMgYSBzdHJpbmcsIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZiB0aGF0CisgICAgYXR0cmlidXRlIG9mIHRoZSBzb2NrZXQgbW9kdWxlLCBvciBza2lwIHRoZSB0ZXN0IGlmIGl0IGRvZXNuJ3QKKyAgICBleGlzdC4gIFNldHMgY2xpZW50X3NraXAgYXR0cmlidXRlIGFzIHNraXBXaXRoQ2xpZW50SWYoKSBkb2VzLgorICAgICIiIgorICAgIGVyciA9IE5vbmUKKyAgICBtaXNzaW5nID0gW29iaiBmb3Igb2JqIGluIGFyZ3MgaWYKKyAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBzdHIpIGFuZCBub3QgaGFzYXR0cihzb2NrZXQsIG9iaildCisgICAgaWYgbWlzc2luZzoKKyAgICAgICAgZXJyID0gImRvbid0IGhhdmUgIiArICIsICIuam9pbihuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcpCisgICAgZWxzZToKKyAgICAgICAgY2FsbGFyZ3MgPSBbZ2V0YXR0cihzb2NrZXQsIG9iaikgaWYgaXNpbnN0YW5jZShvYmosIHN0cikgZWxzZSBvYmoKKyAgICAgICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBhcmdzXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgqY2FsbGFyZ3MpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgWFhYOiBjaGVjayBlcnJubz8KKyAgICAgICAgICAgIGVyciA9IHN0cihlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIHNraXBXaXRoQ2xpZW50SWYoCisgICAgICAgIGVyciBpcyBub3QgTm9uZSwKKyAgICAgICAgImNhbid0IGNyZWF0ZSBzb2NrZXQoezB9KTogezF9Ii5mb3JtYXQoCisgICAgICAgICAgICAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIGFyZ3MpLCBlcnIpKQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBCZWdpbiBUZXN0cwogCkBAIC0yODIsMTggKzY0NCwxMyBAQAogCiAgICAgZGVmIHRlc3RTb2NrZXRFcnJvcihzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHNvY2tldCBtb2R1bGUgZXhjZXB0aW9ucwotICAgICAgICBkZWYgcmFpc2VfZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgbXNnID0gIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbiAoJXMpLiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IKLSAgICAgICAgZGVmIHJhaXNlX2hlcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuaGVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuaGVycm9yCi0gICAgICAgIGRlZiByYWlzZV9nYWllcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuZ2FpZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5nYWllcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbi4iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2hlcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9nYWllcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKIAogICAgIGRlZiB0ZXN0U2VuZHRvRXJyb3JzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgdGhhdCBzZW5kdG8gZG9lbnMndCBtYXNrcyBmYWlsdXJlcy4gU2VlICMxMDE2OS4KQEAgLTM2OSw2ICs3MjYsNTIgQEAKICAgICAgICAgaWYgbm90IGZxaG4gaW4gYWxsX2hvc3RfbmFtZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkVycm9yIHRlc3RpbmcgaG9zdCByZXNvbHV0aW9uIG1lY2hhbmlzbXMuIChmcWRuOiAlcywgYWxsOiAlcykiICUgKGZxaG4sIHJlcHIoYWxsX2hvc3RfbmFtZXMpKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc2V0aG9zdG5hbWUnKSwgInRlc3QgbmVlZHMgc29ja2V0LnNldGhvc3RuYW1lKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnZ2V0aG9zdG5hbWUnKSwgInRlc3QgbmVlZHMgc29ja2V0LmdldGhvc3RuYW1lKCkiKQorICAgIGRlZiB0ZXN0X3NldGhvc3RuYW1lKHNlbGYpOgorICAgICAgICBvbGRobiA9IHNvY2tldC5nZXRob3N0bmFtZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZSgnbmV3JykKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHNob3VsZCBiZSBydW4gYXMgcm9vdCIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcnVubmluZyB0ZXN0IGFzIHJvb3QhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2tldC5nZXRob3N0bmFtZSgpLCAnbmV3JykKKyAgICAgICAgICAgICMgU2hvdWxkIHdvcmsgd2l0aCBieXRlcyBvYmplY3RzIHRvbworICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKGInYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ja2V0LmdldGhvc3RuYW1lKCksICdiYXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKG9sZGhuKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpZl9uYW1laW5kZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKKyAgICBkZWYgdGVzdEludGVyZmFjZU5hbWVJbmRleChzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlcyA9IHNvY2tldC5pZl9uYW1laW5kZXgoKQorICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gaW50ZXJmYWNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmRleCwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG5hbWUsIHN0cikKKyAgICAgICAgICAgICMgaW50ZXJmYWNlIGluZGljZXMgYXJlIG5vbi16ZXJvIGludGVnZXJzCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoaW5kZXgsIDApCisgICAgICAgICAgICBfaW5kZXggPSBzb2NrZXQuaWZfbmFtZXRvaW5kZXgobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShfaW5kZXgsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZXgsIF9pbmRleCkKKyAgICAgICAgICAgIF9uYW1lID0gc29ja2V0LmlmX2luZGV4dG9uYW1lKGluZGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKF9uYW1lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIF9uYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpZl9uYW1laW5kZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKKyAgICBkZWYgdGVzdEludmFsaWRJbnRlcmZhY2VOYW1lSW5kZXgoc2VsZik6CisgICAgICAgICMgdGVzdCBub25leGlzdGVudCBpbnRlcmZhY2UgaW5kZXgvbmFtZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNvY2tldC5pZl9pbmRleHRvbmFtZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrZXQuaWZfbmFtZXRvaW5kZXgsICdfREVBREJFRUYnKQorICAgICAgICAjIHRlc3Qgd2l0aCBpbnZhbGlkIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNvY2tldC5pZl9uYW1ldG9pbmRleCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzb2NrZXQuaWZfaW5kZXh0b25hbWUsICdfREVBREJFRUYnKQorCiAgICAgZGVmIHRlc3RSZWZDb3VudEdldE5hbWVJbmZvKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgcmVmZXJlbmNlIGNvdW50IGZvciBnZXRuYW1laW5mbwogICAgICAgICBpZiBoYXNhdHRyKHN5cywgImdldHJlZmNvdW50Iik6CkBAIC00MjEsMTAgKzgyNCw4IEBACiAgICAgICAgICMgRmluZCBvbmUgc2VydmljZSB0aGF0IGV4aXN0cywgdGhlbiBjaGVjayBhbGwgdGhlIHJlbGF0ZWQgaW50ZXJmYWNlcy4KICAgICAgICAgIyBJJ3ZlIG9yZGVyZWQgdGhpcyBieSBwcm90b2NvbHMgdGhhdCBoYXZlIGJvdGggYSB0Y3AgYW5kIHVkcAogICAgICAgICAjIHByb3RvY29sLCBhdCBsZWFzdCBmb3IgbW9kZXJuIExpbnV4ZXMuCi0gICAgICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpIG9yCi0gICAgICAgICAgICBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicpOgorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdmcmVlYnNkJywgJ25ldGJzZCcpKQorICAgICAgICAgICAgb3Igc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJykpOgogICAgICAgICAgICAgIyBhdm9pZCB0aGUgJ2VjaG8nIHNlcnZpY2Ugb24gdGhpcyBwbGF0Zm9ybSwgYXMgdGhlcmUgaXMgYW4KICAgICAgICAgICAgICMgYXNzdW1wdGlvbiBicmVha2luZyBub24tc3RhbmRhcmQgcG9ydC9wcm90b2NvbCBlbnRyeQogICAgICAgICAgICAgc2VydmljZXMgPSAoJ2RheXRpbWUnLCAncW90ZCcsICdkb21haW4nKQpAQCAtNzE5LDcgKzExMjAsNyBAQAogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJ2xvY2FsaG9zdCcsIDgwKQogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJzEyNy4wLjAuMScsIDgwKQogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oTm9uZSwgODApCi0gICAgICAgIGlmIFNVUFBPUlRTX0lQVjY6CisgICAgICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgogICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCc6OjEnLCA4MCkKICAgICAgICAgIyBwb3J0IGNhbiBiZSBhIHN0cmluZyBzZXJ2aWNlIG5hbWUgc3VjaCBhcyAiaHR0cCIsIGEgbnVtZXJpYwogICAgICAgICAjIHBvcnQgbnVtYmVyIG9yIE5vbmUKQEAgLTc3Miw3ICsxMTczLDEyIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmsgaXMgbm90IGVuYWJsZWQnKQogICAgIGRlZiB0ZXN0X2lkbmEoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICAjIENoZWNrIGZvciBpbnRlcm5ldCBhY2Nlc3MgYmVmb3JlIHJ1bm5pbmcgdGVzdCAoaXNzdWUgIzEyODA0KS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWUoJ3B5dGhvbi5vcmcnKQorICAgICAgICBleGNlcHQgc29ja2V0LmdhaWVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IHNvY2tldC5FQUlfTk9EQVRBOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2ludGVybmV0IGFjY2VzcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKICAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIGJlIHN1Y2Nlc3NmdWwKICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWUoJ9C40YHQv9GL0YLQsNC90LjQtS5weXRob24ub3JnJykKICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWVfZXgoJ9C40YHQv9GL0YLQsNC90LjQtS5weXRob24ub3JnJykKQEAgLTg1MCwxNCArMTI1NiwyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnAud3JpdGFibGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmcC5zZWVrYWJsZSkKIAotICAgIGRlZiB0ZXN0TGlzdGVuQmFja2xvZzAoc2VsZik6CisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBzb2NrLCBwcm90b2NvbCkKKworICAgIGRlZiB0ZXN0X2xpc3Rlbl9iYWNrbG9nMChzZWxmKToKICAgICAgICAgc3J2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCiAgICAgICAgICMgYmFja2xvZyA9IDAKICAgICAgICAgc3J2Lmxpc3RlbigwKQogICAgICAgICBzcnYuY2xvc2UoKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU1VQUE9SVFNfSVBWNiwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfZmxvd2luZm8oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5nZXRuYW1laW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc6OjEnLDAsIDB4ZmZmZmZmZmYpLCAwKQpAQCAtODY1LDYgKzEyNzcsMjIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzLmJpbmQsICgnOjoxJywgMCwgLTEwKSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNDQU5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX0NBTgorICAgICAgICBzb2NrZXQuUEZfQ0FOCisgICAgICAgIHNvY2tldC5DQU5fUkFXCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdEJpbmRBbnkoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgcy5iaW5kKCgnJywgKSkKKworICAgIGRlZiB0ZXN0VG9vTG9uZ0ludGVyZmFjZU5hbWUoc2VsZik6CisgICAgICAgICMgbW9zdCBzeXN0ZW1zIGxpbWl0IElGTkFNU0laIHRvIDE2LCB0YWtlIDEwMjQgdG8gYmUgc3VyZQorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LmVycm9yLCAnaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmJpbmQsICgneCcgKiAxMDI0LCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgIkNBTl9SQVdfTE9PUEJBQ0siKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0sgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0TG9vcGJhY2soc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgZm9yIGxvb3BiYWNrIGluICgwLCAxKToKKyAgICAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19MT09QQkFDSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcGJhY2spCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb29wYmFjaywKKyAgICAgICAgICAgICAgICAgICAgcy5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fUkFXX0ZJTFRFUiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuQ0FOX1JBV19GSUxURVIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0RmlsdGVyKHNlbGYpOgorICAgICAgICBjYW5faWQsIGNhbl9tYXNrID0gMHgyMDAsIDB4NzAwCisgICAgICAgIGNhbl9maWx0ZXIgPSBzdHJ1Y3QucGFjaygiPUlJIiwgY2FuX2lkLCBjYW5fbWFzaykKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGNhbl9maWx0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgOCkpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQ0FOLCAnU29ja2V0Q2FuIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBDQU5UZXN0KFRocmVhZGVkQ0FOU29ja2V0VGVzdCk6CisKKyAgICAiIiJUaGUgQ0FOIGZyYW1lIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDxsaW51eC9jYW4uaD46CisKKyAgICBzdHJ1Y3QgY2FuX2ZyYW1lIHsKKyAgICAgICAgY2FuaWRfdCBjYW5faWQ7ICAvKiAzMiBiaXQgQ0FOX0lEICsgRUZGL1JUUi9FUlIgZmxhZ3MgKi8KKyAgICAgICAgX191OCAgICBjYW5fZGxjOyAvKiBkYXRhIGxlbmd0aCBjb2RlOiAwIC4uIDggKi8KKyAgICAgICAgX191OCAgICBkYXRhWzhdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyAgICB9OworICAgICIiIgorICAgIGNhbl9mcmFtZV9mbXQgPSAiPUlCM3g4cyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkQ0FOU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNscywgY2FuX2lkLCBkYXRhKToKKyAgICAgICAgIiIiQnVpbGQgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9kbGMgPSBsZW4oZGF0YSkKKyAgICAgICAgZGF0YSA9IGRhdGEubGp1c3QoOCwgYidceDAwJykKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNscy5jYW5fZnJhbWVfZm10LCBjYW5faWQsIGNhbl9kbGMsIGRhdGEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGlzc2VjdF9jYW5fZnJhbWUoY2xzLCBmcmFtZSk6CisgICAgICAgICIiIkRpc3NlY3QgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9pZCwgY2FuX2RsYywgZGF0YSA9IHN0cnVjdC51bnBhY2soY2xzLmNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgICByZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pCisKKyAgICBkZWYgdGVzdFNlbmRGcmFtZShzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YsIGNmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMF0sIHNlbGYuaW50ZXJmYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMV0sIHNvY2tldC5BRl9DQU4pCisKKyAgICBkZWYgX3Rlc3RTZW5kRnJhbWUoc2VsZik6CisgICAgICAgIHNlbGYuY2YgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDAwLCBiJ1x4MDFceDAyXHgwM1x4MDRceDA1JykKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmKQorCisgICAgZGVmIHRlc3RTZW5kTWF4RnJhbWUoc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmLCBjZikKKworICAgIGRlZiBfdGVzdFNlbmRNYXhGcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5jZiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDAsIGInXHgwNycgKiA4KQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YpCisKKyAgICBkZWYgdGVzdFNlbmRNdWx0aUZyYW1lcyhzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YxLCBjZikKKworICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZjIsIGNmKQorCisgICAgZGVmIF90ZXN0U2VuZE11bHRpRnJhbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNmMSA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDcsIGInXHg0NFx4MzNceDIyXHgxMScpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjEpCisKKyAgICAgICAgc2VsZi5jZjIgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDEyLCBiJ1x4OTlceDIyXHgzMycpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNSRFNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX1JEUworICAgICAgICBzb2NrZXQuUEZfUkRTCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkgYXMgczoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0U29ja2V0QnVmZmVyU2l6ZShzZWxmKToKKyAgICAgICAgYnVmc2l6ZSA9IDE2Mzg0CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SQ1ZCVUYsIGJ1ZnNpemUpCisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19TTkRCVUYsIGJ1ZnNpemUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJEU1Rlc3QoVGhyZWFkZWRSRFNTb2NrZXRUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkUkRTU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLmV2dCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGlfYWRkciwgYWRkcikKKworICAgIGRlZiBfdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ3NwYW0nCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RQZWVrKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSwgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgZGVmIF90ZXN0UGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzcGFtJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgJ3JlY3Ztc2cnKQorICAgIGRlZiB0ZXN0U2VuZEFuZFJlY3ZNc2coc2VsZik6CisgICAgICAgIGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkciA9IHNlbGYuc2Vydi5yZWN2bXNnKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICdzZW5kbXNnJykKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidoZWxsbyAnICogMTAKKyAgICAgICAgc2VsZi5jbGkuc2VuZG1zZyhbc2VsZi5kYXRhXSwgKCksIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGExLCBkYXRhKQorCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YTIsIGRhdGEpCisKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGExID0gYidiYWNvbicKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgICAgIHNlbGYuZGF0YTIgPSBiJ2VnZycKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTIsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZWxlY3Qoc2VsZik6CisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKworICAgIGRlZiBfdGVzdFNlbGVjdChzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzZWxlY3QnCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RDb25nZXN0aW9uKHNlbGYpOgorICAgICAgICAjIHdhaXQgdW50aWwgdGhlIHNlbmRlciBpcyBkb25lCisgICAgICAgIHNlbGYuZXZ0LndhaXQoKQorCisgICAgZGVmIF90ZXN0Q29uZ2VzdGlvbihzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBiZWhhdmlvciBpbiBjYXNlIG9mIGNvbmdlc3Rpb24KKyAgICAgICAgc2VsZi5kYXRhID0gYidmaWxsJworICAgICAgICBzZWxmLmNsaS5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gbG93ZXIgdGhlIHJlY2VpdmVyJ3Mgc29ja2V0IGJ1ZmZlciBzaXplCisgICAgICAgICAgICBzZWxmLmNsaS5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkNWQlVGLCAxNjM4NCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBmaWxsIHRoZSByZWNlaXZlcidzIHNvY2tldCBidWZmZXIKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgIyBzaWduYWwgdGhlIHJlY2VpdmVyIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgICAgICBzZWxmLmV2dC5zZXQoKQorICAgICAgICAjIHNlbmR0bygpIHNob3VsZCBoYXZlIGZhaWxlZCB3aXRoIEVOT0JVRlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0JVRlMpCisgICAgICAgICMgYW5kIHdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29uZ2VzdGlvbiBub3RpZmljYXRpb24gdGhyb3VnaCBwb2xsCisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJhc2ljVENQVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKIApAQCAtMTAwNCw2ICsxNjMyLDE4NTIgQEAKICAgICBkZWYgX3Rlc3RSZWN2RnJvbU5lZ2F0aXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNsaS5zZW5kdG8oTVNHLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKIAorIyBUZXN0cyBmb3IgdGhlIHNlbmRtc2coKS9yZWN2bXNnKCkgaW50ZXJmYWNlLiAgV2hlcmUgcG9zc2libGUsIHRoZQorIyBzYW1lIHRlc3QgY29kZSBpcyB1c2VkIHdpdGggZGlmZmVyZW50IGZhbWlsaWVzIGFuZCB0eXBlcyBvZiBzb2NrZXQKKyMgKGUuZy4gc3RyZWFtLCBkYXRhZ3JhbSksIGFuZCB0ZXN0cyB1c2luZyByZWN2bXNnKCkgYXJlIHJlcGVhdGVkCisjIHVzaW5nIHJlY3Ztc2dfaW50bygpLgorIworIyBUaGUgZ2VuZXJpYyB0ZXN0IGNsYXNzZXMgc3VjaCBhcyBTZW5kbXNnVGVzdHMgYW5kCisjIFJlY3Ztc2dHZW5lcmljVGVzdHMgaW5oZXJpdCBmcm9tIFNlbmRyZWN2bXNnQmFzZSBhbmQgZXhwZWN0IHRvIGJlCisjIHN1cHBsaWVkIHdpdGggc29ja2V0cyBjbGlfc29jayBhbmQgc2Vydl9zb2NrIHJlcHJlc2VudGluZyB0aGUKKyMgY2xpZW50J3MgYW5kIHRoZSBzZXJ2ZXIncyBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gcmVzcGVjdGl2ZWx5LCBhbmQKKyMgYXR0cmlidXRlcyBjbGlfYWRkciBhbmQgc2Vydl9hZGRyIGhvbGRpbmcgdGhlaXIgKG51bWVyaWMgd2hlcmUKKyMgYXBwcm9wcmlhdGUpIGFkZHJlc3Nlcy4KKyMKKyMgVGhlIGZpbmFsIGNvbmNyZXRlIHRlc3QgY2xhc3NlcyBjb21iaW5lIHRoZXNlIHdpdGggc3ViY2xhc3NlcyBvZgorIyBTb2NrZXRUZXN0QmFzZSB3aGljaCBzZXQgdXAgY2xpZW50IGFuZCBzZXJ2ZXIgc29ja2V0cyBvZiBhIHNwZWNpZmljCisjIHR5cGUsIGFuZCB3aXRoIHN1YmNsYXNzZXMgb2YgU2VuZHJlY3Ztc2dCYXNlIHN1Y2ggYXMKKyMgU2VuZHJlY3Ztc2dEZ3JhbUJhc2UgYW5kIFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSB3aGljaCBtYXAgdGhlc2UKKyMgc29ja2V0cyB0byBjbGlfc29jayBhbmQgc2Vydl9zb2NrIGFuZCBvdmVycmlkZSB0aGUgbWV0aG9kcyBhbmQKKyMgYXR0cmlidXRlcyBvZiBTZW5kcmVjdm1zZ0Jhc2UgdG8gZmlsbCBpbiBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgaWYKKyMgbmVlZGVkIHdoZW4gc2VuZGluZywgY2hlY2sgZm9yIHNwZWNpZmljIGZsYWdzIGluIG1zZ19mbGFncywgZXRjLgorIworIyBSZWN2bXNnSW50b01peGluIHByb3ZpZGVzIGEgdmVyc2lvbiBvZiBkb1JlY3Ztc2coKSBpbXBsZW1lbnRlZCB1c2luZworIyByZWN2bXNnX2ludG8oKS4KKworIyBYWFg6IGxpa2UgdGhlIG90aGVyIGRhdGFncmFtIChVRFApIHRlc3RzIGluIHRoaXMgbW9kdWxlLCB0aGUgY29kZQorIyBoZXJlIGFzc3VtZXMgdGhhdCBkYXRhZ3JhbSBkZWxpdmVyeSBvbiB0aGUgbG9jYWwgbWFjaGluZSB3aWxsIGJlCisjIHJlbGlhYmxlLgorCitjbGFzcyBTZW5kcmVjdm1zZ0Jhc2UoVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciBzZW5kbXNnKCkvcmVjdm1zZygpIHRlc3RzLgorCisgICAgIyBUaW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgY29uc2lkZXJpbmcgYSB0ZXN0IGZhaWxlZCwgb3IKKyAgICAjIE5vbmUgZm9yIG5vIHRpbWVvdXQuICBOb3QgYWxsIHRlc3RzIGFjdHVhbGx5IHNldCBhIHRpbWVvdXQuCisgICAgZmFpbF90aW1lb3V0ID0gMy4wCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubWlzY19ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgZGVmIHNlbmRUb1NlcnZlcihzZWxmLCBtc2cpOgorICAgICAgICAjIFNlbmQgbXNnIHRvIHRoZSBzZXJ2ZXIuCisgICAgICAgIHJldHVybiBzZWxmLmNsaV9zb2NrLnNlbmQobXNnKQorCisgICAgIyBUdXBsZSBvZiBhbHRlcm5hdGl2ZSBkZWZhdWx0IGFyZ3VtZW50cyBmb3Igc2VuZG1zZygpIHdoZW4gY2FsbGVkCisgICAgIyB2aWEgc2VuZG1zZ1RvU2VydmVyKCkgKGUuZy4gdG8gaW5jbHVkZSBhIGRlc3RpbmF0aW9uIGFkZHJlc3MpLgorICAgIHNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzID0gKCkKKworICAgIGRlZiBzZW5kbXNnVG9TZXJ2ZXIoc2VsZiwgKmFyZ3MpOgorICAgICAgICAjIENhbGwgc2VuZG1zZygpIG9uIHNlbGYuY2xpX3NvY2sgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLAorICAgICAgICAjIGZpbGxpbmcgaW4gYW55IGFyZ3VtZW50cyB3aGljaCBhcmUgbm90IHN1cHBsaWVkIHdpdGggdGhlCisgICAgICAgICMgY29ycmVzcG9uZGluZyBpdGVtcyBvZiBzZWxmLnNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzLCBpZgorICAgICAgICAjIGFueS4KKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX3NvY2suc2VuZG1zZygKKyAgICAgICAgICAgICooYXJncyArIHNlbGYuc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHNbbGVuKGFyZ3MpOl0pKQorCisgICAgZGVmIGRvUmVjdm1zZyhzZWxmLCBzb2NrLCBidWZzaXplLCAqYXJncyk6CisgICAgICAgICMgQ2FsbCByZWN2bXNnKCkgb24gc29jayB3aXRoIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cworICAgICAgICAjIHJlc3VsdC4gIFNob3VsZCBiZSB1c2VkIGZvciB0ZXN0cyB3aGljaCBjYW4gdXNlIGVpdGhlcgorICAgICAgICAjIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKSAtIFJlY3Ztc2dJbnRvTWl4aW4gb3ZlcnJpZGVzCisgICAgICAgICMgdGhpcyBtZXRob2Qgd2l0aCBvbmUgd2hpY2ggZW11bGF0ZXMgaXQgdXNpbmcgcmVjdm1zZ19pbnRvKCksCisgICAgICAgICMgdGh1cyBhbGxvd2luZyB0aGUgc2FtZSB0ZXN0IHRvIGJlIHVzZWQgZm9yIGJvdGggbWV0aG9kcy4KKyAgICAgICAgcmVzdWx0ID0gc29jay5yZWN2bXNnKGJ1ZnNpemUsICphcmdzKQorICAgICAgICBzZWxmLnJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWdpc3RlclJlY3Ztc2dSZXN1bHQoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgIyBDYWxsZWQgYnkgZG9SZWN2bXNnKCkgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlY3Ztc2coKSBvcgorICAgICAgICAjIHJlY3Ztc2dfaW50bygpLiAgQ2FuIGJlIG92ZXJyaWRkZW4gdG8gYXJyYW5nZSBjbGVhbnVwIGJhc2VkCisgICAgICAgICMgb24gdGhlIHJldHVybmVkIGFuY2lsbGFyeSBkYXRhLCBmb3IgaW5zdGFuY2UuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBjaGVja1JlY3Ztc2dBZGRyZXNzKHNlbGYsIGFkZHIxLCBhZGRyMik6CisgICAgICAgICMgQ2FsbGVkIHRvIGNvbXBhcmUgdGhlIHJlY2VpdmVkIGFkZHJlc3Mgd2l0aCB0aGUgYWRkcmVzcyBvZgorICAgICAgICAjIHRoZSBwZWVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIxLCBhZGRyMikKKworICAgICMgRmxhZ3MgdGhhdCBhcmUgbm9ybWFsbHkgdW5zZXQgaW4gbXNnX2ZsYWdzCisgICAgbXNnX2ZsYWdzX2NvbW1vbl91bnNldCA9IDAKKyAgICBmb3IgbmFtZSBpbiAoIk1TR19DVFJVTkMiLCAiTVNHX09PQiIpOgorICAgICAgICBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0IHw9IGdldGF0dHIoc29ja2V0LCBuYW1lLCAwKQorCisgICAgIyBGbGFncyB0aGF0IGFyZSBub3JtYWxseSBzZXQKKyAgICBtc2dfZmxhZ3NfY29tbW9uX3NldCA9IDAKKworICAgICMgRmxhZ3Mgc2V0IHdoZW4gYSBjb21wbGV0ZSByZWNvcmQgaGFzIGJlZW4gcmVjZWl2ZWQgKGUuZy4gTVNHX0VPUgorICAgICMgZm9yIFNDVFApCisgICAgbXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgPSAwCisKKyAgICAjIEZsYWdzIHNldCB3aGVuIGEgY29tcGxldGUgcmVjb3JkIGhhcyBub3QgYmVlbiByZWNlaXZlZAorICAgICMgKGUuZy4gTVNHX1RSVU5DIGZvciBkYXRhZ3JhbSBzb2NrZXRzKQorICAgIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciA9IDAKKworICAgIGRlZiBjaGVja0ZsYWdzKHNlbGYsIGZsYWdzLCBlb3I9Tm9uZSwgY2hlY2tzZXQ9MCwgY2hlY2t1bnNldD0wLCBpZ25vcmU9MCk6CisgICAgICAgICMgTWV0aG9kIHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiBtc2dfZmxhZ3MgcmV0dXJuZWQgYnkgcmVjdm1zZ1tfaW50b10oKS4KKyAgICAgICAgIworICAgICAgICAjIENoZWNrcyB0aGF0IGFsbCBiaXRzIGluIG1zZ19mbGFnc19jb21tb25fc2V0IGF0dHJpYnV0ZSBhcmUKKyAgICAgICAgIyBzZXQgaW4gImZsYWdzIiBhbmQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2NvbW1vbl91bnNldCBhcmUKKyAgICAgICAgIyB1bnNldC4KKyAgICAgICAgIworICAgICAgICAjIFRoZSAiZW9yIiBhcmd1bWVudCBzcGVjaWZpZXMgd2hldGhlciB0aGUgZmxhZ3Mgc2hvdWxkCisgICAgICAgICMgaW5kaWNhdGUgdGhhdCBhIGZ1bGwgcmVjb3JkIChvciBkYXRhZ3JhbSkgaGFzIGJlZW4gcmVjZWl2ZWQuCisgICAgICAgICMgSWYgImVvciIgaXMgTm9uZSwgbm8gY2hlY2tzIGFyZSBkb25lOyBvdGhlcndpc2UsIGNoZWNrcworICAgICAgICAjIHRoYXQ6CisgICAgICAgICMKKyAgICAgICAgIyAgKiBpZiAiZW9yIiBpcyB0cnVlLCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciBhcmUKKyAgICAgICAgIyAgICBzZXQgYW5kIGFsbCBiaXRzIGluIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciBhcmUgdW5zZXQKKyAgICAgICAgIworICAgICAgICAjICAqIGlmICJlb3IiIGlzIGZhbHNlLCBhbGwgYml0cyBpbiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgIyAgICBhcmUgc2V0IGFuZCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciBhcmUgdW5zZXQKKyAgICAgICAgIworICAgICAgICAjIElmICJjaGVja3NldCIgYW5kL29yICJjaGVja3Vuc2V0IiBhcmUgc3VwcGxpZWQsIHRoZXkgcmVxdWlyZQorICAgICAgICAjIHRoZSBnaXZlbiBiaXRzIHRvIGJlIHNldCBvciB1bnNldCByZXNwZWN0aXZlbHksIG92ZXJyaWRpbmcKKyAgICAgICAgIyB3aGF0IHRoZSBhdHRyaWJ1dGVzIHJlcXVpcmUgZm9yIHRob3NlIGJpdHMuCisgICAgICAgICMKKyAgICAgICAgIyBJZiBhbnkgYml0cyBhcmUgc2V0IGluICJpZ25vcmUiLCB0aGV5IHdpbGwgbm90IGJlIGNoZWNrZWQsCisgICAgICAgICMgcmVnYXJkbGVzcyBvZiB0aGUgb3RoZXIgaW5wdXRzLgorICAgICAgICAjCisgICAgICAgICMgV2lsbCByYWlzZSBFeGNlcHRpb24gaWYgdGhlIGlucHV0cyByZXF1aXJlIGEgYml0IHRvIGJlIGJvdGgKKyAgICAgICAgIyBzZXQgYW5kIHVuc2V0LCBhbmQgaXQgaXMgbm90IGlnbm9yZWQuCisKKyAgICAgICAgZGVmYXVsdHNldCA9IHNlbGYubXNnX2ZsYWdzX2NvbW1vbl9zZXQKKyAgICAgICAgZGVmYXVsdHVuc2V0ID0gc2VsZi5tc2dfZmxhZ3NfY29tbW9uX3Vuc2V0CisKKyAgICAgICAgaWYgZW9yOgorICAgICAgICAgICAgZGVmYXVsdHNldCB8PSBzZWxmLm1zZ19mbGFnc19lb3JfaW5kaWNhdG9yCisgICAgICAgICAgICBkZWZhdWx0dW5zZXQgfD0gc2VsZi5tc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgZWxpZiBlb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0c2V0IHw9IHNlbGYubXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yCisgICAgICAgICAgICBkZWZhdWx0dW5zZXQgfD0gc2VsZi5tc2dfZmxhZ3NfZW9yX2luZGljYXRvcgorCisgICAgICAgICMgRnVuY3Rpb24gYXJndW1lbnRzIG92ZXJyaWRlIGRlZmF1bHRzCisgICAgICAgIGRlZmF1bHRzZXQgJj0gfmNoZWNrdW5zZXQKKyAgICAgICAgZGVmYXVsdHVuc2V0ICY9IH5jaGVja3NldAorCisgICAgICAgICMgTWVyZ2UgYXJndW1lbnRzIHdpdGggcmVtYWluaW5nIGRlZmF1bHRzLCBhbmQgY2hlY2sgZm9yIGNvbmZsaWN0cworICAgICAgICBjaGVja3NldCB8PSBkZWZhdWx0c2V0CisgICAgICAgIGNoZWNrdW5zZXQgfD0gZGVmYXVsdHVuc2V0CisgICAgICAgIGluYm90aCA9IGNoZWNrc2V0ICYgY2hlY2t1bnNldCAmIH5pZ25vcmUKKyAgICAgICAgaWYgaW5ib3RoOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJjb250cmFkaWN0b3J5IHNldCwgdW5zZXQgcmVxdWlyZW1lbnRzIGZvciBmbGFncyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswOiN4fSIuZm9ybWF0KGluYm90aCkpCisKKyAgICAgICAgIyBDb21wYXJlIHdpdGggZ2l2ZW4gbXNnX2ZsYWdzIHZhbHVlCisgICAgICAgIG1hc2sgPSAoY2hlY2tzZXQgfCBjaGVja3Vuc2V0KSAmIH5pZ25vcmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFncyAmIG1hc2ssIGNoZWNrc2V0ICYgbWFzaykKKworCitjbGFzcyBSZWN2bXNnSW50b01peGluKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBNaXhpbiB0byBpbXBsZW1lbnQgZG9SZWN2bXNnKCkgdXNpbmcgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgZG9SZWN2bXNnKHNlbGYsIHNvY2ssIGJ1ZnNpemUsICphcmdzKToKKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGJ1ZnNpemUpCisgICAgICAgIHJlc3VsdCA9IHNvY2sucmVjdm1zZ19pbnRvKFtidWZdLCAqYXJncykKKyAgICAgICAgc2VsZi5yZWdpc3RlclJlY3Ztc2dSZXN1bHQocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJlc3VsdFswXSwgYnVmc2l6ZSkKKyAgICAgICAgcmV0dXJuIChieXRlcyhidWZbOnJlc3VsdFswXV0pLCkgKyByZXN1bHRbMTpdCisKKworY2xhc3MgU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgRGVmaW5lcyBmbGFncyB0byBiZSBjaGVja2VkIGluIG1zZ19mbGFncyBmb3IgZGF0YWdyYW0gc29ja2V0cy4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLm1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciB8IHNvY2tldC5NU0dfVFJVTkMKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NDVFBGbGFnc0Jhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIERlZmluZXMgZmxhZ3MgdG8gYmUgY2hlY2tlZCBpbiBtc2dfZmxhZ3MgZm9yIFNDVFAgc29ja2V0cy4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgfCBzb2NrZXQuTVNHX0VPUgorCisKK2NsYXNzIFNlbmRyZWN2bXNnQ29ubmVjdGlvbmxlc3NCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciB0ZXN0cyBvbiBjb25uZWN0aW9ubGVzcy1tb2RlIHNvY2tldHMuICBVc2VycyBtdXN0CisgICAgIyBzdXBwbHkgc29ja2V0cyBvbiBhdHRyaWJ1dGVzIGNsaSBhbmQgc2VydiB0byBiZSBtYXBwZWQgdG8KKyAgICAjIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsaV9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChbXSwgW10sIDAsIHNlbGYuc2Vydl9hZGRyKQorCisgICAgZGVmIHNlbmRUb1NlcnZlcihzZWxmLCBtc2cpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfc29jay5zZW5kdG8obXNnLCBzZWxmLnNlcnZfYWRkcikKKworCitjbGFzcyBTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHRlc3RzIG9uIGNvbm5lY3RlZCBzb2NrZXRzLiAgVXNlcnMgbXVzdCBzdXBwbHkKKyAgICAjIHNvY2tldHMgb24gYXR0cmlidXRlcyBzZXJ2X2Nvbm4gYW5kIGNsaV9jb25uIChyZXByZXNlbnRpbmcgdGhlCisgICAgIyBjb25uZWN0aW9ucyAqdG8qIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGllbnQpLCB0byBiZSBtYXBwZWQgdG8KKyAgICAjIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX2Nvbm4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbGlfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vydl9jb25uCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnQWRkcmVzcyhzZWxmLCBhZGRyMSwgYWRkcjIpOgorICAgICAgICAjIEFkZHJlc3MgaXMgY3VycmVudGx5ICJ1bnNwZWNpZmllZCIgZm9yIGEgY29ubmVjdGVkIHNvY2tldCwKKyAgICAgICAgIyBzbyB3ZSBkb24ndCBleGFtaW5lIGl0CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIHRvIHNldCBhIHRpbWVvdXQgb24gc2VydmVyJ3Mgc29ja2V0LgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0dGltZW91dChzZWxmLmZhaWxfdGltZW91dCkKKworCitjbGFzcyBTZW5kbXNnVGVzdHMoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0cyBmb3Igc2VuZG1zZygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlIGFuZCBkbyBub3QKKyAgICAjIGludm9sdmUgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RTZW5kbXNnKHNlbGYpOgorICAgICAgICAjIFNlbmQgYSBzaW1wbGUgbWVzc2FnZSB3aXRoIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSksIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnRGF0YUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBTZW5kIGZyb20gYnVmZmVyIG9idGFpbmVkIGZyb20gYSBnZW5lcmF0b3IgKG5vdCBhIHNlcXVlbmNlKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0RhdGFHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoKG8gZm9yIG8gaW4gW01TR10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0FuY2lsbGFyeUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBHYXRoZXIgKGVtcHR5KSBhbmNpbGxhcnkgZGF0YSBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQW5jaWxsYXJ5R2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCAobyBmb3IgbyBpbiBbXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQXJyYXkoc2VsZik6CisgICAgICAgICMgU2VuZCBkYXRhIGZyb20gYW4gYXJyYXkgaW5zdGVhZCBvZiB0aGUgdXN1YWwgYnl0ZXMgb2JqZWN0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW2FycmF5LmFycmF5KCJCIiwgTVNHKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnR2F0aGVyKHNlbGYpOgorICAgICAgICAjIFNlbmQgbWVzc2FnZSBkYXRhIGZyb20gbW9yZSB0aGFuIG9uZSBidWZmZXIgKGdhdGhlciB3cml0ZSkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dHYXRoZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR1s6M10sIE1TR1szOl1dKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIHJlamVjdHMgaW52YWxpZCBhcmd1bWVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYiJub3QgaW4gYW4gaXRlcmFibGUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TRywgb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgMCwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRDbXNnKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBpdGVtcyBhcmUgcmVqZWN0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRDbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW29iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsob2JqZWN0KCksIDAsIGIiZGF0YSIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgb2JqZWN0KCksIGIiZGF0YSIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgb2JqZWN0KCkpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBiImRhdGEiLCA0MildKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2coc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnZhbGlkIGFuY2lsbGFyeSBkYXRhIGl0ZW1zIGFyZSByZWplY3RlZCB3aGVuCisgICAgICAgICMgbW9yZSB0aGFuIG9uZSBpdGVtIGlzIHByZXNlbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIEB0ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZy5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbMCwgMCwgYiIiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgYiIiKSwgb2JqZWN0KCldKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgZGVmIHRlc3RTZW5kbXNnRXhjZXNzQ21zZ1JlamVjdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHNlbmRtc2coKSByZWplY3RzIGV4Y2VzcyBhbmNpbGxhcnkgZGF0YSBpdGVtcworICAgICAgICAjIHdoZW4gdGhlIG51bWJlciB0aGF0IGNhbiBiZSBzZW50IGlzIGxpbWl0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dFeGNlc3NDbXNnUmVqZWN0KHNlbGYpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihzb2NrZXQsICJDTVNHX1NQQUNFIik6CisgICAgICAgICAgICAjIENhbiBvbmx5IHNlbmQgb25lIGl0ZW0KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgWygwLCAwLCBiIiIpLCAoMCwgMCwgYiIiKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbS5leGNlcHRpb24uZXJybm8pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIGZhaWxzIG9uIGEgY2xvc2VkIHNvY2tldC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIF90ZXN0U2VuZG1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY2xpX3NvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLCBbTVNHXSkKKworCitjbGFzcyBTZW5kbXNnU3RyZWFtVGVzdHMoU2VuZG1zZ1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciBzZW5kbXNnKCkgd2hpY2ggcmVxdWlyZSBhIHN0cmVhbSBzb2NrZXQgYW5kIGRvIG5vdAorICAgICMgaW52b2x2ZSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2dFeHBsaWNpdE5vbmVBZGRyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcGVlciBhZGRyZXNzIGNhbiBiZSBzcGVjaWZpZWQgYXMgTm9uZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0V4cGxpY2l0Tm9uZUFkZHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFtdLCAwLCBOb25lKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGltZW91dCB3b3JrcyB3aXRoIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDUxMiksIGIiYSIqNTEyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jbGlfc29jay5zZXR0aW1lb3V0KDAuMDMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0KToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbYiJhIio1MTJdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisKKyAgICAjIFhYWDogd291bGQgYmUgbmljZSB0byBoYXZlIG1vcmUgdGVzdHMgZm9yIHNlbmRtc2cgZmxhZ3MgYXJndW1lbnQuCisKKyAgICAjIExpbnV4IHN1cHBvcnRzIE1TR19ET05UV0FJVCB3aGVuIHNlbmRpbmcsIGJ1dCBpbiBnZW5lcmFsLCBpdAorICAgICMgb25seSB3b3JrcyB3aGVuIHJlY2VpdmluZy4gIENvdWxkIGFkZCBvdGhlciBwbGF0Zm9ybXMgaWYgdGhleQorICAgICMgc3VwcG9ydCBpdCB0b28uCisgICAgQHNraXBXaXRoQ2xpZW50SWYoc3lzLnBsYXRmb3JtIG5vdCBpbiB7ImxpbnV4MiJ9LAorICAgICAgICAgICAgICAgICAgICAgICJNU0dfRE9OVFdBSVQgbm90IGtub3duIHRvIHdvcmsgb24gdGhpcyBwbGF0Zm9ybSB3aGVuICIKKyAgICAgICAgICAgICAgICAgICAgICAic2VuZGluZyIpCisgICAgZGVmIHRlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBNU0dfRE9OVFdBSVQgaW4gZmxhZ3MgY2F1c2VzIG5vbi1ibG9ja2luZyBiZWhhdmlvdXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdig1MTIpLCBiImEiKjUxMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorCisgICAgQHRlc3RTZW5kbXNnRG9udFdhaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbYiJhIio1MTJdLCBbXSwgc29ja2V0Lk1TR19ET05UV0FJVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oY20uZXhjZXB0aW9uLmVycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKworCitjbGFzcyBTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cyhTZW5kbXNnVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHNlbmRtc2coKSB3aGljaCByZXF1aXJlIGEgY29ubmVjdGlvbmxlc3MtbW9kZQorICAgICMgKGUuZy4gZGF0YWdyYW0pIHNvY2tldCwgYW5kIGRvIG5vdCBpbnZvbHZlIHJlY3Ztc2coKSBvcgorICAgICMgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIGZhaWxzIHdoZW4gbm8gZGVzdGluYXRpb24gYWRkcmVzcyBpcworICAgICAgICAjIGdpdmVuIGZvciB1bmNvbm5lY3RlZCBzb2NrZXQuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW10sIDAsIE5vbmUpCisKKworY2xhc3MgUmVjdm1zZ0dlbmVyaWNUZXN0cyhTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2coKSB3aGljaCBjYW4gYWxzbyBiZSBlbXVsYXRlZCB1c2luZworICAgICMgcmVjdm1zZ19pbnRvKCksIGFuZCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZyhzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgc2ltcGxlIG1lc3NhZ2Ugd2l0aCByZWN2bXNnW19pbnRvXSgpLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2coc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0V4cGxpY2l0RGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCByZWN2bXNnW19pbnRvXSgpIHdpdGggZGVmYXVsdCBhcmd1bWVudHMgcHJvdmlkZWQgZXhwbGljaXRseS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0V4cGxpY2l0RGVmYXVsdHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ1Nob3J0ZXIoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIG1lc3NhZ2Ugc21hbGxlciB0aGFuIGJ1ZmZlci4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgKyA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnU2hvcnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBGcmVlQlNEIDwgOCBkb2Vzbid0IGFsd2F5cyBzZXQgdGhlIE1TR19UUlVOQyBmbGFnIHdoZW4gYSB0cnVuY2F0ZWQKKyAgICAjIGRhdGFncmFtIGlzIHJlY2VpdmVkIChpc3N1ZSAjMTMwMDEpLgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig4KQorICAgIGRlZiB0ZXN0UmVjdm1zZ1RydW5jKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgcGFydCBvZiBtZXNzYWdlLCBjaGVjayBmb3IgdHJ1bmNhdGlvbiBpbmRpY2F0b3JzLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0dbOi0zXSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDgpCisgICAgZGVmIF90ZXN0UmVjdm1zZ1RydW5jKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dTaG9ydEFuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciB0b28gc21hbGwgdG8gaG9sZCBhbnkgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dTaG9ydEFuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnTG9uZ0FuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGxhcmdlIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlci4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dMb25nQW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZ1tfaW50b10oKSBmYWlscyBvbiBhIGNsb3NlZCBzb2NrZXQuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmRvUmVjdm1zZywgc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRpbWVvdXQgd29ya3MuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHRpbWVvdXQoMC4wMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2csIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiTVNHX1BFRUsiKQorICAgIGRlZiB0ZXN0UmVjdm1zZ1BlZWsoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBNU0dfUEVFSyBpbiBmbGFncyBlbmFibGVzIGV4YW1pbmF0aW9uIG9mIHBlbmRpbmcKKyAgICAgICAgIyBkYXRhIHdpdGhvdXQgY29uc3VtaW5nIGl0LgorCisgICAgICAgICMgUmVjZWl2ZSBwYXJ0IG9mIGRhdGEgd2l0aCBNU0dfUEVFSy4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgLSAzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHWzotM10pCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICAjIElnbm9yaW5nIE1TR19UUlVOQyBoZXJlIChzbyB0aGlzIHRlc3QgaXMgdGhlIHNhbWUgZm9yIHN0cmVhbQorICAgICAgICAjIGFuZCBkYXRhZ3JhbSBzb2NrZXRzKS4gIFNvbWUgd29yZGluZyBpbiBQT1NJWCBzZWVtcyB0bworICAgICAgICAjIHN1Z2dlc3QgdGhhdCBpdCBuZWVkbid0IGJlIHNldCB3aGVuIHBlZWtpbmcsIGJ1dCB0aGF0IG1heQorICAgICAgICAjIGp1c3QgYmUgYSBzbGlwLgorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1nZXRhdHRyKHNvY2tldCwgIk1TR19UUlVOQyIsIDApKQorCisgICAgICAgICMgUmVjZWl2ZSBhbGwgZGF0YSB3aXRoIE1TR19QRUVLLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5NU0dfUEVFSykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzYW1lIGRhdGEgY2FuIHN0aWxsIGJlIHJlY2VpdmVkIG5vcm1hbGx5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIEB0ZXN0UmVjdm1zZ1BlZWsuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2bXNnUGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgZGVmIHRlc3RSZWN2bXNnRnJvbVNlbmRtc2coc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgd2l0aCByZWN2bXNnW19pbnRvXSgpIHdoZW4gbWVzc2FnZSBpcyBzZW50CisgICAgICAgICMgdXNpbmcgc2VuZG1zZygpLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXR0aW1lb3V0KHNlbGYuZmFpbF90aW1lb3V0KQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIEB0ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0dbOjNdLCBNU0dbMzpdXSksIGxlbihNU0cpKQorCisKK2NsYXNzIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMoUmVjdm1zZ0dlbmVyaWNUZXN0cyk6CisgICAgIyBUZXN0cyB3aGljaCByZXF1aXJlIGEgc3RyZWFtIHNvY2tldCBhbmQgY2FuIHVzZSBlaXRoZXIgcmVjdm1zZygpCisgICAgIyBvciByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGVuZC1vZi1zdHJlYW0gaW5kaWNhdG9yIChiIiIsIHBlZXIgc29ja2V0IGNsb3NlZCkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgMTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIGIiIikKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPU5vbmUpICMgTWlnaHQgbm90IGhhdmUgZW5kLW9mLXJlY29yZCBtYXJrZXIKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dFT0Yoc2VsZik6CisgICAgICAgIHNlbGYuY2xpX3NvY2suY2xvc2UoKQorCisgICAgZGVmIHRlc3RSZWN2bXNnT3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIG1lc3NhZ2UgaW4gbW9yZSB0aGFuIG9uZSBjaHVuay4KKyAgICAgICAgc2VnMSwgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSkKKworICAgICAgICBzZWcyLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgICAgICBtc2cgPSBzZWcxICsgc2VnMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ092ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworY2xhc3MgUmVjdm1zZ1Rlc3RzKFJlY3Ztc2dHZW5lcmljVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2coKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIC0xLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtieXRlYXJyYXkoMTApXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgb2JqZWN0KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIG9iamVjdCgpKQorCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnKGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworY2xhc3MgUmVjdm1zZ0ludG9UZXN0cyhSZWN2bXNnSW50b01peGluLCBSZWN2bXNnR2VuZXJpY1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciByZWN2bXNnX2ludG8oKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9CYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZ19pbnRvKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdCgpXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiIkknbSBub3Qgd3JpdGFibGUiXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWYsIG9iamVjdCgpXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgLTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgb2JqZWN0KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgMCwgb2JqZWN0KCkpCisKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50byhbYnVmXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KE1TRykpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9CYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgaW50byBidWZmZXIgb2J0YWluZWQgZnJvbSBhIGdlbmVyYXRvciAobm90IGEgc2VxdWVuY2UpLgorICAgICAgICBidWYgPSBieXRlYXJyYXkobGVuKE1TRykpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oCisgICAgICAgICAgICAobyBmb3IgbyBpbiBbYnVmXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShNU0cpKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvQXJyYXkoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIGFuIGFycmF5IHJhdGhlciB0aGFuIHRoZSB1c3VhbCBieXRlYXJyYXkuCisgICAgICAgIGJ1ZiA9IGFycmF5LmFycmF5KCJCIiwgWzBdICogbGVuKE1TRykpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oW2J1Zl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudG9ieXRlcygpLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9BcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b1NjYXR0ZXIoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIG11bHRpcGxlIGJ1ZmZlcnMgKHNjYXR0ZXIgd3JpdGUpLgorICAgICAgICBiMSA9IGJ5dGVhcnJheShiIi0tLS0iKQorICAgICAgICBiMiA9IGJ5dGVhcnJheShiIjAxMjM0NTY3ODkiKQorICAgICAgICBiMyA9IGJ5dGVhcnJheShiIi0tLS0tLS0tLS0tLS0tIikKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bygKKyAgICAgICAgICAgIFtiMSwgbWVtb3J5dmlldyhiMilbMjo5XSwgYjNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKGIiTWFyeSBoYWQgYSBsaXR0bGUgbGFtYiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIxLCBieXRlYXJyYXkoYiJNYXJ5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYjIsIGJ5dGVhcnJheShiIjAxIGhhZCBhIDkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiMywgYnl0ZWFycmF5KGIibGl0dGxlIGxhbWItLS0iKSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b1NjYXR0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiTWFyeSBoYWQgYSBsaXR0bGUgbGFtYiIpCisKKworY2xhc3MgQ21zZ01hY3JvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGUgZnVuY3Rpb25zIENNU0dfTEVOKCkgYW5kIENNU0dfU1BBQ0UoKS4gIFRlc3RzCisgICAgIyBhc3N1bXB0aW9ucyB1c2VkIGJ5IHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSwgd2hpY2ggc2hhcmUKKyAgICAjIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMuCisKKyAgICAjIE1hdGNoIHRoZSBkZWZpbml0aW9uIGluIHNvY2tldG1vZHVsZS5jCisgICAgc29ja2xlbl90X2xpbWl0ID0gbWluKDB4N2ZmZmZmZmYsIF90ZXN0Y2FwaS5JTlRfTUFYKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX0xFTiIpCisgICAgZGVmIHRlc3RDTVNHX0xFTihzZWxmKToKKyAgICAgICAgIyBUZXN0IENNU0dfTEVOKCkgd2l0aCB2YXJpb3VzIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcywKKyAgICAgICAgIyBjaGVja2luZyB0aGUgYXNzdW1wdGlvbnMgdXNlZCBieSByZWN2bXNnKCkgYW5kIHNlbmRtc2coKS4KKyAgICAgICAgdG9vYmlnID0gc2VsZi5zb2NrbGVuX3RfbGltaXQgLSBzb2NrZXQuQ01TR19MRU4oMCkgKyAxCisgICAgICAgIHZhbHVlcyA9IGxpc3QocmFuZ2UoMjU3KSkgKyBsaXN0KHJhbmdlKHRvb2JpZyAtIDI1NywgdG9vYmlnKSkKKworICAgICAgICAjIHN0cnVjdCBjbXNnaGRyIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2Ygd2hpY2ggYXJlIGludHMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNvY2tldC5DTVNHX0xFTigwKSwgYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZSAqIDIpCisgICAgICAgIGZvciBuIGluIHZhbHVlczoKKyAgICAgICAgICAgIHJldCA9IHNvY2tldC5DTVNHX0xFTihuKQorICAgICAgICAgICAgIyBUaGlzIGlzIGhvdyByZWN2bXNnKCkgY2FsY3VsYXRlcyB0aGUgZGF0YSBzaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCAtIHNvY2tldC5DTVNHX0xFTigwKSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJldCwgc2VsZi5zb2NrbGVuX3RfbGltaXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCAtMSkKKyAgICAgICAgIyBzZW5kbXNnKCkgc2hhcmVzIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGFuZCByZXF1aXJlcworICAgICAgICAjIHRoYXQgaXQgcmVqZWN0IHZhbHVlcyBvdmVyIHRoZSBsaW1pdC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCB0b29iaWcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX0xFTiwgc3lzLm1heHNpemUpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IENNU0dfU1BBQ0UoKSB3aXRoIHZhcmlvdXMgdmFsaWQgYW5kIGludmFsaWQgdmFsdWVzLAorICAgICAgICAjIGNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGJ5IHNlbmRtc2coKS4KKyAgICAgICAgdG9vYmlnID0gc2VsZi5zb2NrbGVuX3RfbGltaXQgLSBzb2NrZXQuQ01TR19TUEFDRSgxKSArIDEKKyAgICAgICAgdmFsdWVzID0gbGlzdChyYW5nZSgyNTcpKSArIGxpc3QocmFuZ2UodG9vYmlnIC0gMjU3LCB0b29iaWcpKQorCisgICAgICAgIGxhc3QgPSBzb2NrZXQuQ01TR19TUEFDRSgwKQorICAgICAgICAjIHN0cnVjdCBjbXNnaGRyIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2Ygd2hpY2ggYXJlIGludHMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxhc3QsIGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUgKiAyKQorICAgICAgICBmb3IgbiBpbiB2YWx1ZXM6CisgICAgICAgICAgICByZXQgPSBzb2NrZXQuQ01TR19TUEFDRShuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBsYXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBzb2NrZXQuQ01TR19MRU4obikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIG4gKyBzb2NrZXQuQ01TR19MRU4oMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXQsIHNlbGYuc29ja2xlbl90X2xpbWl0KQorICAgICAgICAgICAgbGFzdCA9IHJldAorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX1NQQUNFLCAtMSkKKyAgICAgICAgIyBzZW5kbXNnKCkgc2hhcmVzIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGFuZCByZXF1aXJlcworICAgICAgICAjIHRoYXQgaXQgcmVqZWN0IHZhbHVlcyBvdmVyIHRoZSBsaW1pdC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIHRvb2JpZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIHN5cy5tYXhzaXplKQorCisKK2NsYXNzIFNDTVJpZ2h0c1Rlc3QoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0cyBmb3IgZmlsZSBkZXNjcmlwdG9yIHBhc3Npbmcgb24gVW5peC1kb21haW4gc29ja2V0cy4KKworICAgICMgSW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgdmFsdWUgdGhhdCdzIHVubGlrZWx5IHRvIGV2YWx1YXRlIHRvIGEKKyAgICAjIHJlYWwgRkQgZXZlbiBpZiBvbmUgb2YgaXRzIGJ5dGVzIGlzIHJlcGxhY2VkIHdpdGggYSBkaWZmZXJlbnQKKyAgICAjIHZhbHVlICh3aGljaCBzaG91bGRuJ3QgYWN0dWFsbHkgaGFwcGVuKS4KKyAgICBiYWRmZCA9IC0weDU1NTUKKworICAgIGRlZiBuZXdGRHMoc2VsZiwgbik6CisgICAgICAgICMgUmV0dXJuIGEgbGlzdCBvZiBuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIG5ld2x5LWNyZWF0ZWQgZmlsZXMKKyAgICAgICAgIyBjb250YWluaW5nIHRoZWlyIGxpc3QgaW5kaWNlcyBhcyBBU0NJSSBudW1iZXJzLgorICAgICAgICBmZHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGZkLCBwYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBwYXRoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBzdHIoaSkuZW5jb2RlKCkpCisgICAgICAgICAgICBmZHMuYXBwZW5kKGZkKQorICAgICAgICByZXR1cm4gZmRzCisKKyAgICBkZWYgY2hlY2tGRHMoc2VsZiwgZmRzKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3JzIGluIHRoZSBnaXZlbiBsaXN0IGNvbnRhaW4KKyAgICAgICAgIyB0aGVpciBjb3JyZWN0IGxpc3QgaW5kaWNlcyBhcyBBU0NJSSBudW1iZXJzLgorICAgICAgICBmb3IgbiwgZmQgaW4gZW51bWVyYXRlKGZkcyk6CisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZmQsIDEwMjQpLCBzdHIobikuZW5jb2RlKCkpCisKKyAgICBkZWYgcmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmNsb3NlUmVjdm1zZ0ZEcywgcmVzdWx0KQorCisgICAgZGVmIGNsb3NlUmVjdm1zZ0ZEcyhzZWxmLCByZWN2bXNnX3Jlc3VsdCk6CisgICAgICAgICMgQ2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMgc3BlY2lmaWVkIGluIHRoZSBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIG9mIHRoZSBnaXZlbiByZXR1cm4gdmFsdWUgZnJvbSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiByZWN2bXNnX3Jlc3VsdFsxXToKKyAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZAorICAgICAgICAgICAgICAgICAgICBjbXNnX3R5cGUgPT0gc29ja2V0LlNDTV9SSUdIVFMpOgorICAgICAgICAgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICAgICAgICAgIGZvciBmZCBpbiBmZHM6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIGNyZWF0ZUFuZFNlbmRGRHMoc2VsZiwgbik6CisgICAgICAgICMgU2VuZCBuIG5ldyBmaWxlIGRlc2NyaXB0b3JzIGNyZWF0ZWQgYnkgbmV3RkRzKCkgdG8gdGhlCisgICAgICAgICMgc2VydmVyLCB3aXRoIHRoZSBjb25zdGFudCBNU0cgYXMgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgc2VsZi5uZXdGRHMobikpKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnRkRzKHNlbGYsIG51bWZkcywgcmVzdWx0LCBtYXhjbXNncz0xLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGNvbnN0YW50IE1TRyB3YXMgcmVjZWl2ZWQgd2l0aCBudW1mZHMgZmlsZQorICAgICAgICAjIGRlc2NyaXB0b3JzIGluIGEgbWF4aW11bSBvZiBtYXhjbXNncyBjb250cm9sIG1lc3NhZ2VzICh3aGljaAorICAgICAgICAjIG11c3QgY29udGFpbiBvbmx5IGNvbXBsZXRlIGludGVnZXJzKS4gIEJ5IGRlZmF1bHQsIGNoZWNrCisgICAgICAgICMgdGhhdCBNU0dfQ1RSVU5DIGlzIHVuc2V0LCBidXQgaWdub3JlIGFueSBmbGFncyBpbgorICAgICAgICAjIGlnbm9yZWZsYWdzLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhbmNkYXRhLCBsaXN0KQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIG1heGNtc2dzKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGZvciBpdGVtIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaXRlbSwgdHVwbGUpCisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGl0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY21zZ19kYXRhLCBieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSkgJSBTSVpFT0ZfSU5ULCAwKQorICAgICAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmRzKSwgbnVtZmRzKQorICAgICAgICBzZWxmLmNoZWNrRkRzKGZkcykKKworICAgIGRlZiB0ZXN0RkRQYXNzU2ltcGxlKHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBzaW5nbGUgRkQgKGFycmF5IHJlYWQgZnJvbSBieXRlcyBvYmplY3QpLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygxLCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSkKKworICAgIGRlZiBfdGVzdEZEUGFzc1NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgc2VsZi5uZXdGRHMoMSkpLnRvYnl0ZXMoKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RNdWx0aXBsZUZEUGFzcyhzZWxmKToKKyAgICAgICAgIyBQYXNzIG11bHRpcGxlIEZEcyBpbiBhIHNpbmdsZSBhcnJheS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoNCwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkpCisKKyAgICBkZWYgX3Rlc3RNdWx0aXBsZUZEUGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDQpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzQ01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIENNU0dfU1BBQ0UoKSB0byBjYWxjdWxhdGUgYW5jaWxsYXJ5IGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygKKyAgICAgICAgICAgIDQsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKDQgKiBTSVpFT0ZfSU5UKSkpCisKKyAgICBAdGVzdEZEUGFzc0NNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RGRFBhc3NDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoNCkKKworICAgIGRlZiB0ZXN0RkRQYXNzQ01TR19MRU4oc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBDTVNHX0xFTigpIHRvIGNhbGN1bGF0ZSBhbmNpbGxhcnkgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDQgKiBTSVpFT0ZfSU5UKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUkZDIDM1NDIgc2F5cyBpbXBsZW1lbnRhdGlvbnMgbWF5IHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TR19DVFJVTkMgaWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRyYWlsaW5nIHBhZGRpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0RkRQYXNzQ01TR19MRU4oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBJc3N1ZSAjMTI5NTg6IFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NTZXBhcmF0ZShzZWxmKToKKyAgICAgICAgIyBQYXNzIHR3byBGRHMgaW4gdHdvIHNlcGFyYXRlIGFycmF5cy4gIEFycmF5cyBtYXkgYmUgY29tYmluZWQKKyAgICAgICAgIyBpbnRvIGEgc2luZ2xlIGNvbnRyb2wgbWVzc2FnZSBieSB0aGUgT1MuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMTAyNDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjbXNncz0yKQorCisgICAgQHRlc3RGRFBhc3NTZXBhcmF0ZS5jbGllbnRfc2tpcAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIF90ZXN0RkRQYXNzU2VwYXJhdGUoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDBdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3QgaGFzIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZShzZWxmKToKKyAgICAgICAgIyBQYXNzIHR3byBGRHMgaW4gdHdvIHNlcGFyYXRlIGFycmF5cywgcmVjZWl2aW5nIHRoZW0gaW50byB0aGUKKyAgICAgICAgIyBtaW5pbXVtIHNwYWNlIGZvciB0d28gYXJyYXlzLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y21zZ3M9MiwgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2UuY2xpZW50X3NraXAKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiBfdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2Uoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDBdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBzZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZShzZWxmLCBtc2csIGFuY2RhdGEpOgorICAgICAgICAjIFRyeSB0byBzZW5kIG1zZyBhbmQgYW5jZGF0YSB0byBzZXJ2ZXIsIGJ1dCBpZiB0aGUgc3lzdGVtCisgICAgICAgICMgY2FsbCBmYWlscywganVzdCBzZW5kIG1zZyB3aXRoIG5vIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSwgYW5jZGF0YSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGl0IHdhcyB0aGUgc3lzdGVtIGNhbGwgdGhhdCBmYWlsZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLmVycm5vLCBpbnQpCisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihtc2cpKQorCisgICAgZGVmIHRlc3RGRFBhc3NFbXB0eShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyBhbiBlbXB0eSBGRCBhcnJheS4gIENhbiByZWNlaXZlIGVpdGhlciBubyBhcnJheQorICAgICAgICAjIG9yIGFuIGVtcHR5IGFycmF5LgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygwLCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NFbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZShNU0csIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIiIpXSkKKworICAgIGRlZiB0ZXN0RkRQYXNzUGFydGlhbEludChzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyBhIHRydW5jYXRlZCBGRCBhcnJheS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgaWdub3JlPXNvY2tldC5NU0dfQ1RSVU5DKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKworICAgIGRlZiBfdGVzdEZEUGFzc1BhcnRpYWxJbnQoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZEFuY2lsbGFyeUlmUG9zc2libGUoCisgICAgICAgICAgICBNU0csCisgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5iYWRmZF0pLnRvYnl0ZXMoKVs6LTFdKV0pCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzUGFydGlhbEludEluTWlkZGxlKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIHR3byBGRCBhcnJheXMsIHRoZSBmaXJzdCBvZiB3aGljaCBpcyB0cnVuY2F0ZWQuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGlnbm9yZT1zb2NrZXQuTVNHX0NUUlVOQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCAyKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgICMgQXJyYXlzIG1heSBoYXZlIGJlZW4gY29tYmluZWQgaW4gYSBzaW5nbGUgY29udHJvbCBtZXNzYWdlCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGZkcyksIDIpCisgICAgICAgIHNlbGYuY2hlY2tGRHMoZmRzKQorCisgICAgQHRlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZSgKKyAgICAgICAgICAgIE1TRywKKyAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDAsIHNlbGYuYmFkZmRdKS50b2J5dGVzKClbOi0xXSksCisgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSkKKworICAgIGRlZiBjaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLCByZXN1bHQsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXRlbXMgYXJlIHJldHVybmVkIHdoZW4gZGF0YSBpcworICAgICAgICAjIHRydW5jYXRlZCBpbnNpZGUgdGhlIGNtc2doZHIgc3RydWN0dXJlLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBubyBidWZmZXIgc2l6ZQorICAgICAgICAjIGlzIHNwZWNpZmllZC4KKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQlNEIHNlZW1zIHRvIHNldCBNU0dfQ1RSVU5DIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGFuIGl0ZW0gaGFzIGJlZW4gcGFydGlhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNlaXZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY05vQnVmU2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIGJ1ZmZlciBzaXplIGlzIDAuCisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJldHVybmVkIGZvciB2YXJpb3VzIG5vbi16ZXJvCisgICAgIyAoYnV0IHN0aWxsIHRvbyBzbWFsbCkgYnVmZmVyIHNpemVzLgorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMSkpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgIyBUaGUgY21zZ2hkciBzdHJ1Y3R1cmUgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZgorICAgICAgICAjIHdoaWNoIGFyZSBpbnRzLCBzbyB3ZSBzdGlsbCBzaG91bGRuJ3Qgc2VlIGFueSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfSU5UICogMikpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDApIC0gMSkpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0cyB0cnkgdG8gdHJ1bmNhdGUgdGhlIGNvbnRyb2wgbWVzc2FnZSBpbiB0aGUKKyAgICAjIG1pZGRsZSBvZiB0aGUgRkQgYXJyYXkuCisKKyAgICBkZWYgY2hlY2tUcnVuY2F0ZWRBcnJheShzZWxmLCBhbmNidWYsIG1heGRhdGEsIG1pbmRhdGE9MCk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBmaWxlIGRlc2NyaXB0b3IgZGF0YSBpcyB0cnVuY2F0ZWQgdG8gYmV0d2VlbgorICAgICAgICAjIG1pbmRhdGEgYW5kIG1heGRhdGEgYnl0ZXMgd2hlbiByZWNlaXZlZCB3aXRoIGJ1ZmZlciBzaXplCisgICAgICAgICMgYW5jYnVmLCBhbmQgdGhhdCBhbnkgY29tcGxldGUgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgYXJlCisgICAgICAgICMgdmFsaWQuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgICAgICBpZiBtaW5kYXRhID09IDAgYW5kIGFuY2RhdGEgPT0gW106CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbXNnX2RhdGEpLCBtaW5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oY21zZ19kYXRhKSwgbWF4ZGF0YSkKKyAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgc2VsZi5jaGVja0ZEcyhmZHMpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDApLCBtYXhkYXRhPTApCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMFBsdXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkQXJyYXkoYW5jYnVmPXNvY2tldC5DTVNHX0xFTigwKSArIDEsIG1heGRhdGE9MSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjBQbHVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGF0YT1TSVpFT0ZfSU5UKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjJNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDIgKiBTSVpFT0ZfSU5UKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkYXRhPSgyICogU0laRU9GX0lOVCkgLSAxKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMk1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKworY2xhc3MgUkZDMzU0MkFuY2lsbGFyeVRlc3QoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0IHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSB1c2luZyB0aGUgYW5jaWxsYXJ5IGRhdGEKKyAgICAjIGZlYXR1cmVzIG9mIHRoZSBSRkMgMzU0MiBBZHZhbmNlZCBTb2NrZXRzIEFQSSBmb3IgSVB2Ni4KKyAgICAjIEN1cnJlbnRseSB3ZSBjYW4gb25seSBoYW5kbGUgY2VydGFpbiBkYXRhIGl0ZW1zIChlLmcuIHRyYWZmaWMKKyAgICAjIGNsYXNzLCBob3AgbGltaXQsIE1UVSBkaXNjb3ZlcnkgYW5kIGZyYWdtZW50YXRpb24gc2V0dGluZ3MpCisgICAgIyB3aXRob3V0IHJlc29ydGluZyB0byB1bnBvcnRhYmxlIG1lYW5zIHN1Y2ggYXMgdGhlIHN0cnVjdCBtb2R1bGUsCisgICAgIyBidXQgdGhlIHRlc3RzIGhlcmUgYXJlIGFpbWVkIGF0IHRlc3RpbmcgdGhlIGFuY2lsbGFyeSBkYXRhCisgICAgIyBoYW5kbGluZyBpbiBzZW5kbXNnKCkgYW5kIHJlY3Ztc2coKSByYXRoZXIgdGhhbiB0aGUgSVB2NiBBUEkKKyAgICAjIGl0c2VsZi4KKworICAgICMgVGVzdCB2YWx1ZSB0byB1c2Ugd2hlbiBzZXR0aW5nIGhvcCBsaW1pdCBvZiBwYWNrZXQKKyAgICBob3BfbGltaXQgPSAyCisKKyAgICAjIFRlc3QgdmFsdWUgdG8gdXNlIHdoZW4gc2V0dGluZyB0cmFmZmljIGNsYXNzIG9mIHBhY2tldC4KKyAgICAjIC0xIG1lYW5zICJ1c2Uga2VybmVsIGRlZmF1bHQiLgorICAgIHRyYWZmaWNfY2xhc3MgPSAtMQorCisgICAgZGVmIGFuY2lsbGFyeU1hcHBpbmcoc2VsZiwgYW5jZGF0YSk6CisgICAgICAgICMgR2l2ZW4gYW5jaWxsYXJ5IGRhdGEgbGlzdCBhbmNkYXRhLCByZXR1cm4gYSBtYXBwaW5nIGZyb20KKyAgICAgICAgIyBwYWlycyAoY21zZ19sZXZlbCwgY21zZ190eXBlKSB0byBjb3JyZXNwb25kaW5nIGNtc2dfZGF0YS4KKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIChsZXZlbCwgdHlwZSkgcGFpciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBkID0ge30KKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKChjbXNnX2xldmVsLCBjbXNnX3R5cGUpLCBkKQorICAgICAgICAgICAgZFsoY21zZ19sZXZlbCwgY21zZ190eXBlKV0gPSBjbXNnX2RhdGEKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBjaGVja0hvcExpbWl0KHNlbGYsIGFuY2J1ZnNpemUsIG1heGhvcD0yNTUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZiBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIHNwYWNlLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgYW5jaWxsYXJ5IGRhdGEgaXMgbm90CisgICAgICAgICMgdHJ1bmNhdGVkIChidXQgaWdub3JlIGFueSBmbGFncyBpbiBpZ25vcmVmbGFncyksIGFuZCBob3AKKyAgICAgICAgIyBsaW1pdCBpcyBiZXR3ZWVuIDAgYW5kIG1heGhvcCBpbmNsdXNpdmUuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2t1bnNldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFuY2RhdGFbMF0sIHR1cGxlKQorICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LklQVjZfSE9QTElNSVQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbXNnX2RhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIG1heGhvcCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RSZWN2SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdGhlIHBhY2tldCBob3AgbGltaXQgYXMgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwKQorCisgICAgQHRlc3RSZWN2SG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgTmVlZCB0byB3YWl0IHVudGlsIHNlcnZlciBoYXMgYXNrZWQgdG8gcmVjZWl2ZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhLCBhcyBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBidWZmZXIgaXQKKyAgICAgICAgIyBvdGhlcndpc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyBob3AgbGltaXQsIHVzaW5nIENNU0dfU1BBQ0UgdG8gY2FsY3VsYXRlIGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXQoYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSkKKworICAgIEB0ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBDb3VsZCB0ZXN0IHJlY2VpdmluZyBpbnRvIGJ1ZmZlciBzaXplZCB1c2luZyBDTVNHX0xFTiwgYnV0IFJGQworICAgICMgMzU0MiBzYXlzIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyBtdXN0IHByb3ZpZGUgc3BhY2UgZm9yIHRyYWlsaW5nCisgICAgIyBwYWRkaW5nLiAgSW1wbGVtZW50YXRpb25zIG1heSBzZXQgTVNHX0NUUlVOQyBpZiB0aGVyZSBpc24ndAorICAgICMgZW5vdWdoIHNwYWNlIGZvciB0aGUgcGFkZGluZy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTZXRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgaG9wIGxpbWl0IG9uIG91dGdvaW5nIHBhY2tldCBhbmQgcmVjZWl2aW5nIGl0CisgICAgICAgICMgYXQgdGhlIG90aGVyIGVuZC4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsIG1heGhvcD1zZWxmLmhvcF9saW1pdCkKKworICAgIEB0ZXN0U2V0SG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZXRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmLCBhbmNidWZzaXplLCBtYXhob3A9MjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZgorICAgICAgICAjIGFuY2lsbGFyeSBkYXRhIHNwYWNlLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSBpcyBub3QgdHJ1bmNhdGVkIChidXQgaWdub3JlIGFueSBmbGFncyBpbiBpZ25vcmVmbGFncyksCisgICAgICAgICMgYW5kIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBhcmUgaW4gcmFuZ2UgKGhvcCBsaW1pdCBubworICAgICAgICAjIG1vcmUgdGhhbiBtYXhob3ApLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMikKKyAgICAgICAgYW5jbWFwID0gc2VsZi5hbmNpbGxhcnlNYXBwaW5nKGFuY2RhdGEpCisKKyAgICAgICAgdGNkYXRhID0gYW5jbWFwWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0Y2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyh0Y2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIDI1NSkKKworICAgICAgICBobGRhdGEgPSBhbmNtYXBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlUKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaGxkYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoaGxkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCBtYXhob3ApCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGFzIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCkKKworICAgIEB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQsIHVzaW5nCisgICAgICAgICMgQ01TR19TUEFDRSgpIHRvIGNhbGN1bGF0ZSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KAorICAgICAgICAgICAgYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSAqIDIpCisKKyAgICBAdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdENNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2V0VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCBzZXR0aW5nIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBvbiBvdXRnb2luZyBwYWNrZXQsCisgICAgICAgICMgYW5kIHJlY2VpdmluZyB0aGVtIGF0IHRoZSBvdGhlciBlbmQuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RTZXRUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNldFRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdE9kZENtc2dTaXplKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBzZW5kIGFuY2lsbGFyeSBkYXRhIHdpdGggZmlyc3QgaXRlbSBvbmUgYnl0ZSB0b28KKyAgICAgICAgIyBsb25nLiAgRmFsbCBiYWNrIHRvIHNlbmRpbmcgd2l0aCBjb3JyZWN0IHNpemUgaWYgdGhpcyBmYWlscywKKyAgICAgICAgIyBhbmQgY2hlY2sgdGhhdCBzZWNvbmQgaXRlbSB3YXMgaGFuZGxlZCBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RPZGRDbXNnU2l6ZS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdE9kZENtc2dTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkudG9ieXRlcygpICsgYiJceDAwIiksCisgICAgICAgICAgICAgICAgIChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuZXJybm8sIGludCkKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkpLAorICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisKKyAgICAjIFRlc3RzIGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgdHJ1bmNhdGVkIGFuY2lsbGFyeSBkYXRhCisKKyAgICBkZWYgY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihzZWxmLCBhbmNidWZzaXplLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBSZWNlaXZlIGhvcCBsaW1pdCBpbnRvIGFuY2J1ZnNpemUgYnl0ZXMgb2YgYW5jaWxsYXJ5IGRhdGEKKyAgICAgICAgIyBzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIHRvbyBzbWFsbCB0byBjb250YWluIHRoZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhIGhlYWRlciAoaWYgYW5jYnVmc2l6ZSBpcyBOb25lLCBwYXNzIG5vIHNlY29uZCBhcmd1bWVudAorICAgICAgICAjIHRvIHJlY3Ztc2coKSkuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBNU0dfQ1RSVU5DIGlzIHNldAorICAgICAgICAjICh1bmxlc3MgaW5jbHVkZWQgaW4gaWdub3JlZmxhZ3MpLCBhbmQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMKKyAgICAgICAgIyByZXR1cm5lZC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIGFyZ3MgPSAoKSBpZiBhbmNidWZzaXplIGlzIE5vbmUgZWxzZSAoYW5jYnVmc2l6ZSwpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBubyBhbmNpbGxhcnkKKyAgICAgICAgIyBidWZmZXIgc2l6ZSBpcyBwcm92aWRlZC4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQlNEIHNlZW1zIHRvIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNU0dfQ1RSVU5DIG9ubHkgaWYgYW4gaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoYXMgYmVlbiBwYXJ0aWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVjZWl2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBhbmNpbGxhcnkKKyAgICAgICAgIyBidWZmZXIgc2l6ZSBpcyB6ZXJvLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzAuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZXR1cm5lZCBmb3IgdmFyaW91cyBub24temVybworICAgICMgKGJ1dCBzdGlsbCB0b28gc21hbGwpIGJ1ZmZlciBzaXplcy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0xKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9MiAqIFNJWkVPRl9JTlQpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzJJbnQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19MRU4oMCkgLSAxKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHJ1bmNhdGlvbiBvZiBhIGNvbnRyb2wgbWVzc2FnZSBpbnNpZGUgaXRzIGFzc29jaWF0ZWQKKyAgICAgICAgIyBkYXRhLiAgVGhlIG1lc3NhZ2UgbWF5IGJlIHJldHVybmVkIHdpdGggaXRzIGRhdGEgdHJ1bmNhdGVkLAorICAgICAgICAjIG9yIG5vdCByZXR1cm5lZCBhdCBhbGwuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coCisgICAgICAgICAgICBzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIHNvY2tldC5DTVNHX0xFTihTSVpFT0ZfSU5UKSAtIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgaWYgYW5jZGF0YToKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5JUFY2X0hPUExJTUlUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIGNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNlbGYsIGFuY2J1ZnNpemUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZgorICAgICAgICAjIGFuY2lsbGFyeSBkYXRhIHNwYWNlLCB3aGljaCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCisgICAgICAgICMgY29udGFpbiB0aGUgZmlyc3QgaXRlbSwgYnV0IHRvbyBzbWFsbCB0byBjb250YWluIHRoZSBoZWFkZXIKKyAgICAgICAgIyBvZiB0aGUgc2Vjb25kLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgTVNHX0NUUlVOQyBpcyBzZXQKKyAgICAgICAgIyAodW5sZXNzIGluY2x1ZGVkIGluIGlnbm9yZWZsYWdzKSwgYW5kIG9ubHkgb25lIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEgaXRlbSBpcyByZXR1cm5lZC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZUQ0xBU1MsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oY21zZ190eXBlLCB7c29ja2V0LklQVjZfVENMQVNTLCBzb2NrZXQuSVBWNl9IT1BMSU1JVH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgIyBUcnkgdGhlIGFib3ZlIHRlc3Qgd2l0aCB2YXJpb3VzIGJ1ZmZlciBzaXplcy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb25kQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsgMSkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICogU0laRU9GX0lOVCkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMkludC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oMCkgLSAxKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29tZENtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRydW5jYXRpb24gb2YgdGhlIHNlY29uZCBvZiB0d28gY29udHJvbCBtZXNzYWdlcyBpbnNpZGUKKyAgICAgICAgIyBpdHMgYXNzb2NpYXRlZCBkYXRhLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZygKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpIC0gMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICAgICAgY21zZ190eXBlcyA9IHtzb2NrZXQuSVBWNl9UQ0xBU1MsIHNvY2tldC5JUFY2X0hPUExJTUlUfQorCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YS5wb3AoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBjbXNnX3R5cGVzLnJlbW92ZShjbXNnX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgICAgIGlmIGFuY2RhdGE6CisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGEucG9wKDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgICAgICBjbXNnX3R5cGVzLnJlbW92ZShjbXNnX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKworICAgIEB0ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCisjIERlcml2ZSBjb25jcmV0ZSB0ZXN0IGNsYXNzZXMgZm9yIGRpZmZlcmVudCBzb2NrZXQgdHlwZXMuCisKK2NsYXNzIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UoU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0aW9ubGVzc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluLCBVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnVURQVGVzdChTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVURQVGVzdChSZWN2bXNnVGVzdHMsIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1VEUFRlc3QoUmVjdm1zZ0ludG9UZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKFNlbmRyZWN2bXNnRGdyYW1GbGFnc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3Rpb25sZXNzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluLCBVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVRFA2VGVzdChTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVRFA2VGVzdChSZWN2bXNnVGVzdHMsIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVURQNlRlc3QoUmVjdm1zZ0ludG9UZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFBST1RPX0lQVjYiKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dSRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QoUkZDMzU0MkFuY2lsbGFyeVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFBST1RPX0lQVjYiKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0KFJlY3Ztc2dJbnRvTWl4aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRkMzNTQyQW5jaWxsYXJ5VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZShTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1RDUFRlc3QoU2VuZG1zZ1N0cmVhbVRlc3RzLCBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dUQ1BUZXN0KFJlY3Ztc2dUZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1RDUFRlc3QoUmVjdm1zZ0ludG9UZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UoU2VuZHJlY3Ztc2dTQ1RQRmxhZ3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBTQ1RQU3RyZWFtQmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1NDVFBTdHJlYW1UZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVCIsICJTT0NLX1NUUkVBTSIsICJJUFBST1RPX1NDVFAiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dTQ1RQU3RyZWFtVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgVW5peFN0cmVhbUJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVbml4U3RyZWFtVGVzdChTZW5kbXNnU3RyZWFtVGVzdHMsIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVW5peFN0cmVhbVRlc3QoUmVjdm1zZ1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVW5peFN0cmVhbVRlc3QoUmVjdm1zZ0ludG9UZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIsICJyZWN2bXNnIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIsICJTT0xfU09DS0VUIiwgIlNDTV9SSUdIVFMiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dTQ01SaWdodHNTdHJlYW1UZXN0KFNDTVJpZ2h0c1Rlc3QsIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciLCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIsICJTT0xfU09DS0VUIiwgIlNDTV9SSUdIVFMiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvU0NNUmlnaHRzU3RyZWFtVGVzdChSZWN2bXNnSW50b01peGluLCBTQ01SaWdodHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKKworIyBUZXN0IGludGVycnVwdGluZyB0aGUgaW50ZXJydXB0aWJsZSBzZW5kL3JlY2VpdmUgbWV0aG9kcyB3aXRoIGEKKyMgc2lnbmFsIHdoZW4gYSB0aW1lb3V0IGlzIHNldC4gIFRoZXNlIHRlc3RzIGF2b2lkIGhhdmluZyBtdWx0aXBsZQorIyB0aHJlYWRzIGFsaXZlIGR1cmluZyB0aGUgdGVzdCBzbyB0aGF0IHRoZSBPUyBjYW5ub3QgZGVsaXZlciB0aGUKKyMgc2lnbmFsIHRvIHRoZSB3cm9uZyBvbmUuCisKK2NsYXNzIEludGVycnVwdGVkVGltZW91dEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3IgaW50ZXJydXB0ZWQgc2VuZC9yZWNlaXZlIHRlc3RzLiAgSW5zdGFsbHMgYW4KKyAgICAjIGVtcHR5IGhhbmRsZXIgZm9yIFNJR0FMUk0gYW5kIHJlbW92ZXMgaXQgb24gdGVhcmRvd24sIGFsb25nIHdpdGgKKyAgICAjIGFueSBzY2hlZHVsZWQgYWxhcm1zLgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgb3JpZ19hbHJtX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNpZ251bSwgZnJhbWU6IE5vbmUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb3JpZ19hbHJtX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNldEFsYXJtLCAwKQorCisgICAgIyBUaW1lb3V0IGZvciBzb2NrZXQgb3BlcmF0aW9ucworICAgIHRpbWVvdXQgPSA0LjAKKworICAgICMgUHJvdmlkZSBzZXRBbGFybSgpIG1ldGhvZCB0byBzY2hlZHVsZSBkZWxpdmVyeSBvZiBTSUdBTFJNIGFmdGVyCisgICAgIyBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcywgb3IgY2FuY2VsIGl0IGlmIHplcm8sIGFuZCBhbgorICAgICMgYXBwcm9wcmlhdGUgdGltZSB2YWx1ZSB0byB1c2UuICBVc2Ugc2V0aXRpbWVyKCkgaWYgYXZhaWxhYmxlLgorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIik6CisgICAgICAgIGFsYXJtX3RpbWUgPSAwLjA1CisKKyAgICAgICAgZGVmIHNldEFsYXJtKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIHNlY29uZHMpCisgICAgZWxzZToKKyAgICAgICAgIyBPbGQgc3lzdGVtcyBtYXkgZGVsaXZlciB0aGUgYWxhcm0gdXAgdG8gb25lIHNlY29uZCBlYXJseQorICAgICAgICBhbGFybV90aW1lID0gMgorCisgICAgICAgIGRlZiBzZXRBbGFybShzZWxmLCBzZWNvbmRzKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybShzZWNvbmRzKQorCisKKyMgUmVxdWlyZSBzaWdpbnRlcnJ1cHQoKSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBzeXN0ZW0gY2FsbHMgYXJlCisjIGludGVycnVwdGVkIGJ5IGRlZmF1bHQuCitAcmVxdWlyZUF0dHJzKHNpZ25hbCwgInNpZ2ludGVycnVwdCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIikgb3IgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBoYXZlIHNpZ25hbC5hbGFybSBvciBzaWduYWwuc2V0aXRpbWVyIikKK2NsYXNzIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0KEludGVycnVwdGVkVGltZW91dEJhc2UsIFVEUFRlc3RCYXNlKToKKyAgICAjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSByZWN2KigpIG1ldGhvZHMgd2l0aCBzaWduYWxzIHdoZW4gYQorICAgICMgdGltZW91dCBpcyBzZXQuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnYuc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCisKKyAgICBkZWYgY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSByYWlzZXMgc29ja2V0LmVycm9yIHdpdGggYW4KKyAgICAgICAgIyBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgorICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdlRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3YsIDEwMjQpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdkludG9UaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2X2ludG8sIGJ5dGVhcnJheSgxMDI0KSkKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2ZnJvbVRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3Zmcm9tLCAxMDI0KQorCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Zmcm9tSW50b1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3Zmcm9tX2ludG8sIGJ5dGVhcnJheSgxMDI0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdm1zZywgMTAyNCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Ztc2dJbnRvVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdm1zZ19pbnRvLCBbYnl0ZWFycmF5KDEwMjQpXSkKKworCisjIFJlcXVpcmUgc2lnaW50ZXJydXB0KCkgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgc3lzdGVtIGNhbGxzIGFyZQorIyBpbnRlcnJ1cHRlZCBieSBkZWZhdWx0LgorQHJlcXVpcmVBdHRycyhzaWduYWwsICJzaWdpbnRlcnJ1cHQiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpIG9yIGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksCisgICAgICAgICAgICAgICAgICAgICAiRG9uJ3QgaGF2ZSBzaWduYWwuYWxhcm0gb3Igc2lnbmFsLnNldGl0aW1lciIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSW50ZXJydXB0ZWRTZW5kVGltZW91dFRlc3QoSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4sIFRDUFRlc3RCYXNlKToKKyAgICAjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSBpbnRlcnJ1cHRpYmxlIHNlbmQqKCkgbWV0aG9kcyB3aXRoIHNpZ25hbHMKKyAgICAjIHdoZW4gYSB0aW1lb3V0IGlzIHNldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydl9jb25uID0gc2VsZi5uZXdTb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2X2Nvbm4uY2xvc2UpCisgICAgICAgICMgVXNlIGEgdGhyZWFkIHRvIGNvbXBsZXRlIHRoZSBjb25uZWN0aW9uLCBidXQgd2FpdCBmb3IgaXQgdG8KKyAgICAgICAgIyB0ZXJtaW5hdGUgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHNvIHRoYXQgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgdG8gYWNjZXB0IHRoZSBzaWduYWwuCisgICAgICAgIGNsaV90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLmRvQ29ubmVjdCkKKyAgICAgICAgY2xpX3RocmVhZC5zdGFydCgpCisgICAgICAgIHNlbGYuY2xpX2Nvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xpX2Nvbm4uY2xvc2UpCisgICAgICAgIGNsaV90aHJlYWQuam9pbigpCisgICAgICAgIHNlbGYuc2Vydl9jb25uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQorCisgICAgZGVmIGRvQ29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uY29ubmVjdChzZWxmLnNlcnZfYWRkcikKKworICAgIGRlZiBjaGVja0ludGVycnVwdGVkU2VuZChzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpLCBydW4gaW4gYSBsb29wLCByYWlzZXMKKyAgICAgICAgIyBzb2NrZXQuZXJyb3Igd2l0aCBhbiBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEKKyAgICAgICAgIyBzaWduYWwuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5zZXRBbGFybShzZWxmLmFsYXJtX3RpbWUpCisgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCisKKyAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0cyBoYXZlIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkU2VuZFRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZi5zZXJ2X2Nvbm4uc2VuZCwgYiJhIio1MTIpCisKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kdG9UaW1lb3V0KHNlbGYpOgorICAgICAgICAjIFBhc3NpbmcgYW4gYWN0dWFsIGFkZHJlc3MgaGVyZSBhcyBQeXRob24ncyB3cmFwcGVyIGZvcgorICAgICAgICAjIHNlbmR0bygpIGRvZXNuJ3QgYWxsb3cgcGFzc2luZyBhIHplcm8tbGVuZ3RoIG9uZTsgUE9TSVgKKyAgICAgICAgIyByZXF1aXJlcyB0aGF0IHRoZSBhZGRyZXNzIGlzIGlnbm9yZWQgc2luY2UgdGhlIHNvY2tldCBpcworICAgICAgICAjIGNvbm5lY3Rpb24tbW9kZSwgaG93ZXZlci4KKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kdG8sIGIiYSIqNTEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vydl9hZGRyKQorCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkU2VuZG1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZi5zZXJ2X2Nvbm4uc2VuZG1zZywgW2IiYSIqNTEyXSkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgVENQQ2xvc2VyVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgogCkBAIC0xMDgwLDExICszNTU0LDggQEAKICAgICAgICAgcGFzcwogCiAgICAgaWYgaGFzYXR0cihzb2NrZXQsICJTT0NLX05PTkJMT0NLIik6CisgICAgICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgICAgIGRlZiB0ZXN0SW5pdE5vbkJsb2NraW5nKHNlbGYpOgotICAgICAgICAgICAgdiA9IGxpbnV4X3ZlcnNpb24oKQotICAgICAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTGludXgga2VybmVsIDIuNi4yOCBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgIi4iLmpvaW4obWFwKHN0ciwgdikpKQogICAgICAgICAgICAgIyByZWluaXQgc2VydmVyIHNvY2tldAogICAgICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSB8CkBAIC0xMTg2LDcgKzM2NTcsNyBAQAogICAgICIiIgogCiAgICAgYnVmc2l6ZSA9IC0xICMgVXNlIGRlZmF1bHQgYnVmZmVyIHNpemUKLSAgICBlbmNvZGluZyA9ICd1dGY4JworICAgIGVuY29kaW5nID0gJ3V0Zi04JwogICAgIGVycm9ycyA9ICdzdHJpY3QnCiAgICAgbmV3bGluZSA9IE5vbmUKIApAQCAtMTM2Nyw3ICszODM4LDcgQEAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3JhaXNlX2VpbnRyKCk6Ci0gICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcihlcnJuby5FSU5UUikKKyAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVJTlRSLCAiaW50ZXJydXB0ZWQiKQogCiAgICAgZGVmIF90ZXh0aW93cmFwX21vY2tfc29ja2V0KHNlbGYsIG1vY2ssIGJ1ZmZlcmluZz0tMSk6CiAgICAgICAgIHJhdyA9IHNvY2tldC5Tb2NrZXRJTyhtb2NrLCAiciIpCkBAIC0xNDA3LDcgKzM4NzgsNyBAQAogICAgICAgICAgICAgZGF0YSA9IGInJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgICAgICBleHBlY3RpbmcgPSBleHBlY3RpbmcuZGVjb2RlKCd1dGY4JykKKyAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgd2hpbGUgbGVuKGRhdGEpICE9IGxlbihleHBlY3RpbmcpOgogICAgICAgICAgICAgcGFydCA9IGZvLnJlYWQoc2l6ZSkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgpAQCAtMTU2OSw3ICs0MDQwLDcgQEAKICAgICAiIiJUZXN0cyBmb3Igc29ja2V0Lm1ha2VmaWxlKCkgaW4gdGV4dCBtb2RlIChyYXRoZXIgdGhhbiBiaW5hcnkpIiIiCiAKICAgICByZWFkX21vZGUgPSAncicKLSAgICByZWFkX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmLTgnKQogICAgIHdyaXRlX21vZGUgPSAnd2InCiAgICAgd3JpdGVfbXNnID0gTVNHCiAgICAgbmV3bGluZSA9ICcnCkBAIC0xNTgxLDcgKzQwNTIsNyBAQAogICAgIHJlYWRfbW9kZSA9ICdyYicKICAgICByZWFkX21zZyA9IE1TRwogICAgIHdyaXRlX21vZGUgPSAndycKLSAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGY4JykKKyAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgbmV3bGluZSA9ICcnCiAKIApAQCAtMTU4OSw5ICs0MDYwLDkgQEAKICAgICAiIiJUZXN0cyBmb3Igc29ja2V0Lm1ha2VmaWxlKCkgaW4gdGV4dCBtb2RlIChyYXRoZXIgdGhhbiBiaW5hcnkpIiIiCiAKICAgICByZWFkX21vZGUgPSAncicKLSAgICByZWFkX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmLTgnKQogICAgIHdyaXRlX21vZGUgPSAndycKLSAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGY4JykKKyAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgbmV3bGluZSA9ICcnCiAKIApAQCAtMTg2Myw2ICs0MzM0LDc4IEBACiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzLmJpbmQsIGFkZHJlc3MpCiAKKyAgICBkZWYgdGVzdFN0ck5hbWUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBhbiBhYnN0cmFjdCBuYW1lIGNhbiBiZSBwYXNzZWQgYXMgYSBzdHJpbmcuCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuYmluZCgiXHgwMHB5dGhvblx4MDB0ZXN0XHgwMCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0c29ja25hbWUoKSwgYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHMuY2xvc2UoKQorCitjbGFzcyBUZXN0VW5peERvbWFpbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKKworICAgIGRlZiBlbmNvZGVkKHNlbGYsIHBhdGgpOgorICAgICAgICAjIFJldHVybiB0aGUgZ2l2ZW4gcGF0aCBlbmNvZGVkIGluIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZywKKyAgICAgICAgIyBvciBza2lwIHRoZSB0ZXN0IGlmIHRoaXMgaXMgbm90IHBvc3NpYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gb3MuZnNlbmNvZGUocGF0aCkKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgIlBhdGhuYW1lIHswIWF9IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAic3lzdGVtIGVuY29kaW5nIHsxIXJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHBhdGgsIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisKKyAgICBkZWYgYmluZChzZWxmLCBzb2NrLCBwYXRoKToKKyAgICAgICAgIyBCaW5kIHRoZSBzb2NrZXQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBzdHIoZSkgPT0gIkFGX1VOSVggcGF0aCB0b28gbG9uZyI6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgIlBhdGhuYW1lIHswIWF9IGlzIHRvbyBsb25nIHRvIHNlcnZlIGFzIGEgQUZfVU5JWCBwYXRoIgorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3RTdHJBZGRyKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhbmQgcmV0cmlldmluZyBhIG5vcm1hbCBzdHJpbmcgcGF0aG5hbWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKKworICAgIGRlZiB0ZXN0Qnl0ZXNBZGRyKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhIGJ5dGVzIHBhdGhuYW1lLgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmJpbmQoc2VsZi5zb2NrLCBzZWxmLmVuY29kZWQocGF0aCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKKworICAgIGRlZiB0ZXN0U3Vycm9nYXRlZXNjYXBlQmluZChzZWxmKToKKyAgICAgICAgIyBUZXN0IGJpbmRpbmcgdG8gYSB2YWxpZCBub24tQVNDSUkgcGF0aG5hbWUsIHdpdGggdGhlCisgICAgICAgICMgbm9uLUFTQ0lJIGJ5dGVzIHN1cHBsaWVkIHVzaW5nIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGluZy4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTl9VTklDT0RFKQorICAgICAgICBiID0gc2VsZi5lbmNvZGVkKHBhdGgpCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIGIuZGVjb2RlKCJhc2NpaSIsICJzdXJyb2dhdGVlc2NhcGUiKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RVbmVuY29kYWJsZUFkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGEgcGF0aG5hbWUgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiB0aGUKKyAgICAgICAgIyBmaWxlIHN5c3RlbSBlbmNvZGluZy4KKyAgICAgICAgaWYgc3VwcG9ydC5URVNURk5fVU5FTkNPREFCTEUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vIHVuZW5jb2RhYmxlIGZpbGVuYW1lIGF2YWlsYWJsZSIpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk5fVU5FTkNPREFCTEUpCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJ1ZmZlcklPVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKQEAgLTIwNjMsMTEgKzQ2MDYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIlNPQ0tfQ0xPRVhFQyBub3QgZGVmaW5lZCIpCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhmY250bCwgIm1vZHVsZSBmY250bCBub3QgYXZhaWxhYmxlIikKIGNsYXNzIENsb2V4ZWNDb25zdGFudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgZGVmIHRlc3RfU09DS19DTE9FWEVDKHNlbGYpOgotICAgICAgICB2ID0gbGludXhfdmVyc2lvbigpCi0gICAgICAgIGlmIHYgPCAoMiwgNiwgMjgpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTGludXgga2VybmVsIDIuNi4yOCBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJSAiLiIuam9pbihtYXAoc3RyLCB2KSkpCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSB8IHNvY2tldC5TT0NLX0NMT0VYRUMpIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy50eXBlICYgc29ja2V0LlNPQ0tfQ0xPRVhFQykKQEAgLTIwODUsMTEgKzQ2MjUsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnR5cGUgJiBzb2NrZXQuU09DS19OT05CTE9DSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR0aW1lb3V0KCksIE5vbmUpCiAKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDI4KQogICAgIGRlZiB0ZXN0X1NPQ0tfTk9OQkxPQ0soc2VsZik6Ci0gICAgICAgIHYgPSBsaW51eF92ZXJzaW9uKCkKLSAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlICIuIi5qb2luKG1hcChzdHIsIHYpKSkKICAgICAgICAgIyBhIGxvdCBvZiBpdCBzZWVtcyBzaWxseSBhbmQgcmVkdW5kYW50LCBidXQgSSB3YW50ZWQgdG8gdGVzdCB0aGF0CiAgICAgICAgICMgY2hhbmdpbmcgYmFjayBhbmQgZm9ydGggd29ya2VkIG9rCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwKQEAgLTIxMjIsNiArNDY1OSwxMDkgQEAKICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHQpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cyBzcGVjaWZpYyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhtdWx0aXByb2Nlc3NpbmcsICJuZWVkIG11bHRpcHJvY2Vzc2luZyIpCitjbGFzcyBUZXN0U29ja2V0U2hhcmluZyhTb2NrZXRUQ1BUZXN0KToKKyAgICAjIFRoaXMgbXVzdCBiZSBjbGFzc21ldGhvZCBhbmQgbm90IHN0YXRpY21ldGhvZCBvciBtdWx0aXByb2Nlc3NpbmcKKyAgICAjIHdvbid0IGJlIGFibGUgdG8gYm9vdHN0cmFwIGl0LgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiByZW1vdGVQcm9jZXNzU2VydmVyKGNscywgcSk6CisgICAgICAgICMgUmVjcmVhdGUgc29ja2V0IGZyb20gc2hhcmVkIGRhdGEKKyAgICAgICAgc2RhdGEgPSBxLmdldCgpCisgICAgICAgIG1lc3NhZ2UgPSBxLmdldCgpCisKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tc2hhcmUoc2RhdGEpCisgICAgICAgIHMyLCBjID0gcy5hY2NlcHQoKQorCisgICAgICAgICMgU2VuZCB0aGUgbWVzc2FnZQorICAgICAgICBzMi5zZW5kYWxsKG1lc3NhZ2UpCisgICAgICAgIHMyLmNsb3NlKCkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFNoYXJlKHNlbGYpOgorICAgICAgICAjIFRyYW5zZmVyIHRoZSBsaXN0ZW5pbmcgc2VydmVyIHNvY2tldCB0byBhbm90aGVyIHByb2Nlc3MKKyAgICAgICAgIyBhbmQgc2VydmljZSBpdCBmcm9tIHRoZXJlLgorCisgICAgICAgICMgQ3JlYXRlIHByb2Nlc3M6CisgICAgICAgIHEgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYucmVtb3RlUHJvY2Vzc1NlcnZlciwgYXJncz0ocSwpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICAjIEdldCB0aGUgc2hhcmVkIHNvY2tldCBkYXRhCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnYuc2hhcmUocC5waWQpCisKKyAgICAgICAgIyBQYXNzIHRoZSBzaGFyZWQgc29ja2V0IHRvIHRoZSBvdGhlciBwcm9jZXNzCisgICAgICAgIGFkZHIgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQorICAgICAgICBxLnB1dChkYXRhKQorCisgICAgICAgICMgVGhlIGRhdGEgdGhhdCB0aGUgc2VydmVyIHdpbGwgc2VuZCB1cworICAgICAgICBtZXNzYWdlID0gYiJzbGFwbWFoZnJvIgorICAgICAgICBxLnB1dChtZXNzYWdlKQorCisgICAgICAgICMgQ29ubmVjdAorICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpCisgICAgICAgICMgIGxpc3RlbiBmb3IgdGhlIGRhdGEKKyAgICAgICAgbSA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcy5yZWN2KDEwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBtLmFwcGVuZChkYXRhKQorICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcmVjZWl2ZWQgPSBiIiIuam9pbihtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBtZXNzYWdlKQorICAgICAgICBwLmpvaW4oKQorCisgICAgZGVmIHRlc3RTaGFyZUxlbmd0aChzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc29ja2V0LmZyb21zaGFyZSwgZGF0YVs6LTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrZXQuZnJvbXNoYXJlLCBkYXRhK2IiZm9vIikKKworICAgIGRlZiBjb21wYXJlU29ja2V0cyhzZWxmLCBvcmcsIG90aGVyKToKKyAgICAgICAgIyBzb2NrZXQgc2hhcmluZyBpcyBleHBlY3RlZCB0byB3b3JrIG9ubHkgZm9yIGJsb2NraW5nIHNvY2tldAorICAgICAgICAjIHNpbmNlIHRoZSBpbnRlcm5hbCBweXRob24gdGltb3V0IHZhbHVlIGlzbid0IHRyYW5zZmVyZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLmdldHRpbWVvdXQoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZ2V0dGltZW91dCgpLCBvdGhlci5nZXR0aW1lb3V0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZmFtaWx5LCBvdGhlci5mYW1pbHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLnR5cGUsIG90aGVyLnR5cGUpCisgICAgICAgICMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkICIwIiBmb3IgcHJvdG8sIHRoZW4KKyAgICAgICAgIyBpbnRlcm5hbGx5IHdpbmRvd3Mgd2lsbCBoYXZlIHBpY2tlZCB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgICAgICAgIyBQeXRob24gaW50cm9zcGVjdGlvbiBvbiB0aGUgc29ja2V0IGhvd2V2ZXIgd2lsbCBzdGlsbCByZXR1cm4KKyAgICAgICAgIyAwLiAgRm9yIHRoZSBzaGFyZWQgc29ja2V0LCB0aGUgcHl0aG9uIHZhbHVlIGlzIHJlY3JlYXRlZAorICAgICAgICAjIGZyb20gdGhlIGFjdHVhbCB2YWx1ZSwgc28gaXQgbWF5IG5vdCBjb21wYXJlIGNvcnJlY3RseS4KKyAgICAgICAgaWYgb3JnLnByb3RvICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5wcm90bywgb3RoZXIucHJvdG8pCisKKyAgICBkZWYgdGVzdFNoYXJlTG9jYWwoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnYuc2hhcmUob3MuZ2V0cGlkKCkpCisgICAgICAgIHMgPSBzb2NrZXQuZnJvbXNoYXJlKGRhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY29tcGFyZVNvY2tldHMoc2VsZi5zZXJ2LCBzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFR5cGVzKHNlbGYpOgorICAgICAgICBmYW1pbGllcyA9IFtzb2NrZXQuQUZfSU5FVCwgc29ja2V0LkFGX0lORVQ2XQorICAgICAgICB0eXBlcyA9IFtzb2NrZXQuU09DS19TVFJFQU0sIHNvY2tldC5TT0NLX0RHUkFNXQorICAgICAgICBmb3IgZiBpbiBmYW1pbGllczoKKyAgICAgICAgICAgIGZvciB0IGluIHR5cGVzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc29ja2V0LnNvY2tldChmLCB0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIFRoaXMgY29tYmluYXRpb24gaXMgbm90IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkID0gc29ja2V0LmZyb21zaGFyZShkYXRhKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVTb2NrZXRzKHNvdXJjZSwgc2hhcmVkKQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC0yMTQ1LDExICs0Nzg1LDQxIEBACiAgICAgXSkKICAgICBpZiBoYXNhdHRyKHNvY2tldCwgInNvY2tldHBhaXIiKToKICAgICAgICAgdGVzdHMuYXBwZW5kKEJhc2ljU29ja2V0UGFpclRlc3QpCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eDInOgorICAgIGlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgorICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdFVuaXhEb21haW4pCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eCc6CiAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0TGludXhBYnN0cmFjdE5hbWVzcGFjZSkKICAgICBpZiBpc1RpcGNBdmFpbGFibGUoKToKICAgICAgICAgdGVzdHMuYXBwZW5kKFRJUENUZXN0KQogICAgICAgICB0ZXN0cy5hcHBlbmQoVElQQ1RocmVhZGFibGVUZXN0KQorICAgIHRlc3RzLmV4dGVuZChbQmFzaWNDQU5UZXN0LCBDQU5UZXN0XSkKKyAgICB0ZXN0cy5leHRlbmQoW0Jhc2ljUkRTVGVzdCwgUkRTVGVzdF0pCisgICAgdGVzdHMuZXh0ZW5kKFsKKyAgICAgICAgQ21zZ01hY3JvVGVzdHMsCisgICAgICAgIFNlbmRtc2dVRFBUZXN0LAorICAgICAgICBSZWN2bXNnVURQVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9VRFBUZXN0LAorICAgICAgICBTZW5kbXNnVURQNlRlc3QsCisgICAgICAgIFJlY3Ztc2dVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9SRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvVURQNlRlc3QsCisgICAgICAgIFNlbmRtc2dUQ1BUZXN0LAorICAgICAgICBSZWN2bXNnVENQVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9UQ1BUZXN0LAorICAgICAgICBTZW5kbXNnU0NUUFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dTQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgU2VuZG1zZ1VuaXhTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dTQ01SaWdodHNTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnSW50b1NDTVJpZ2h0c1N0cmVhbVRlc3QsCisgICAgICAgICMgVGhlc2UgYXJlIHNsb3cgd2hlbiBzZXRpdGltZXIoKSBpcyBub3QgYXZhaWxhYmxlCisgICAgICAgIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0LAorICAgICAgICBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdCwKKyAgICAgICAgVGVzdFNvY2tldFNoYXJpbmcsCisgICAgXSkKIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggY2EyMzMwMS4uMzUzZjhmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTI0NCw3ICsyNDQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkICs9IDEKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNhbGxlZCA9PSAxOgogICAgICAgICAgICAgICAgICAgICAjIHJhaXNlIHRoZSBleGNlcHRpb24gb24gZmlyc3QgY2FsbAotICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxlY3QuZXJyb3IoZXJybm8uRUlOVFIsIG9zLnN0cmVycm9yKGVycm5vLkVJTlRSKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgUmV0dXJuIHJlYWwgc2VsZWN0IHZhbHVlIGZvciBjb25zZWN1dGl2ZSBjYWxscwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2xkX3NlbGVjdCgqYXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggZDRjNWU2My4uNGNlOThiNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTQyLDYgKzQyLDkgQEAKIE9OTFlLRVkgPSBkYXRhX2ZpbGUoInNzbF9rZXkucGVtIikKIEJZVEVTX09OTFlDRVJUID0gb3MuZnNlbmNvZGUoT05MWUNFUlQpCiBCWVRFU19PTkxZS0VZID0gb3MuZnNlbmNvZGUoT05MWUtFWSkKK0NFUlRGSUxFX1BST1RFQ1RFRCA9IGRhdGFfZmlsZSgia2V5Y2VydC5wYXNzd2QucGVtIikKK09OTFlLRVlfUFJPVEVDVEVEID0gZGF0YV9maWxlKCJzc2xfa2V5LnBhc3N3ZC5wZW0iKQorS0VZX1BBU1NXT1JEID0gInNvbWVwYXNzIgogQ0FQQVRIID0gZGF0YV9maWxlKCJjYXBhdGgiKQogQllURVNfQ0FQQVRIID0gb3MuZnNlbmNvZGUoQ0FQQVRIKQogCkBAIC01Myw2ICs1Niw4IEBACiBCQURLRVkgPSBkYXRhX2ZpbGUoImJhZGtleS5wZW0iKQogTk9LSUFDRVJUID0gZGF0YV9maWxlKCJub2tpYS5wZW0iKQogCitESEZJTEUgPSBkYXRhX2ZpbGUoImRoNTEyLnBlbSIpCitCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKIGRlZiBoYW5kbGVfZXJyb3IocHJlZml4KToKICAgICBleGNfZm9ybWF0ID0gJyAnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKSkKQEAgLTk1LDcgKzEwMCwxNCBAQAogICAgICAgICBzc2wuQ0VSVF9OT05FCiAgICAgICAgIHNzbC5DRVJUX09QVElPTkFMCiAgICAgICAgIHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKyAgICAgICAgc3NsLk9QX1NJTkdMRV9ESF9VU0UKKyAgICAgICAgaWYgc3NsLkhBU19FQ0RIOgorICAgICAgICAgICAgc3NsLk9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDApOgorICAgICAgICAgICAgc3NsLk9QX05PX0NPTVBSRVNTSU9OCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19TTkksIHtUcnVlLCBGYWxzZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19FQ0RILCB7VHJ1ZSwgRmFsc2V9KQogCiAgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgogICAgICAgICB2ID0gc3NsLlJBTkRfc3RhdHVzKCkKQEAgLTEwMyw2ICsxMTUsMTYgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIFJBTkRfc3RhdHVzIGlzICVkICglcylcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodiwgKHYgYW5kICJzdWZmaWNpZW50IHJhbmRvbW5lc3MiKSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdWZmaWNpZW50IHJhbmRvbW5lc3MiKSkKKworICAgICAgICBkYXRhLCBpc19jcnlwdG9ncmFwaGljID0gc3NsLlJBTkRfcHNldWRvX2J5dGVzKDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXNfY3J5cHRvZ3JhcGhpYywgdiA9PSAxKQorICAgICAgICBpZiB2OgorICAgICAgICAgICAgZGF0YSA9IHNzbC5SQU5EX2J5dGVzKDE2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIDE2KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2wuUkFORF9ieXRlcywgMTYpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlJBTkRfZWdkLCAnZm9vJywgMSkKICAgICAgICAgc3NsLlJBTkRfYWRkKCJ0aGlzIGlzIGEgcmFuZG9tIHN0cmluZyIsIDc1LjApCkBAIC0zMzMsNiArMzU1LDI1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjdHgud3JhcF9zb2NrZXQsIHNvY2ssIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNvbWUuaG9zdG5hbWUiKQogCisgICAgZGVmIHRlc3RfdW5rbm93bl9jaGFubmVsX2JpbmRpbmcoc2VsZik6CisgICAgICAgICMgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIHVua25vd24gdHlwZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBub3QgYXZhaWxhYmxlIikKKyAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgIyB1bmNvbm5lY3RlZCBzaG91bGQgcmV0dXJuIE5vbmUgZm9yIGtub3duIHR5cGUKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKKyAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCisKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbApAQCAtNDIzLDYgKzQ2NCw2MCBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJrZXkgdmFsdWVzIG1pc21hdGNoIik6CiAgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKFNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCwgT05MWUtFWSkKKyAgICAgICAgIyBQYXNzd29yZCBwcm90ZWN0ZWQga2V5IGFuZCBjZXJ0CisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1LRVlfUEFTU1dPUkQpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1LRVlfUEFTU1dPUkQuZW5jb2RlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPWJ5dGVhcnJheShLRVlfUEFTU1dPUkQuZW5jb2RlKCkpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwgS0VZX1BBU1NXT1JEKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwgS0VZX1BBU1NXT1JELmVuY29kZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoS0VZX1BBU1NXT1JELmVuY29kZSgpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInNob3VsZCBiZSBhIHN0cmluZyIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPVRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD0iYmFkcGFzcyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2Fubm90IGJlIGxvbmdlciIpOgorICAgICAgICAgICAgIyBvcGVuc3NsIGhhcyBhIGZpeGVkIGxpbWl0IG9uIHRoZSBwYXNzd29yZCBidWZmZXIuCisgICAgICAgICAgICAjIFBFTV9CVUZTSVpFIGlzIGdlbmVyYWxseSBzZXQgdG8gMWtiLgorICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgbGFyZ2VyIHRoYW4gdGhpcy4KKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1iJ2EnICogMTAyNDAwKQorICAgICAgICAjIFBhc3N3b3JkIGNhbGxiYWNrCisgICAgICAgIGRlZiBnZXRwYXNzX3VuaWNvZGUoKToKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgZGVmIGdldHBhc3NfYnl0ZXMoKToKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQuZW5jb2RlKCkKKyAgICAgICAgZGVmIGdldHBhc3NfYnl0ZWFycmF5KCk6CisgICAgICAgICAgICByZXR1cm4gYnl0ZWFycmF5KEtFWV9QQVNTV09SRC5lbmNvZGUoKSkKKyAgICAgICAgZGVmIGdldHBhc3NfYmFkcGFzcygpOgorICAgICAgICAgICAgcmV0dXJuICJiYWRwYXNzIgorICAgICAgICBkZWYgZ2V0cGFzc19odWdlKCk6CisgICAgICAgICAgICByZXR1cm4gYidhJyAqICgxMDI0ICogMTAyNCkKKyAgICAgICAgZGVmIGdldHBhc3NfYmFkX3R5cGUoKToKKyAgICAgICAgICAgIHJldHVybiA5CisgICAgICAgIGRlZiBnZXRwYXNzX2V4Y2VwdGlvbigpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdnZXRwYXNzIGVycm9yJykKKyAgICAgICAgY2xhc3MgR2V0UGFzc0NhbGxhYmxlOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgICAgIGRlZiBnZXRwYXNzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfdW5pY29kZSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYnl0ZXMpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2J5dGVhcnJheSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUdldFBhc3NDYWxsYWJsZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1HZXRQYXNzQ2FsbGFibGUoKS5nZXRwYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19iYWRwYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbm5vdCBiZSBsb25nZXIiKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2h1Z2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJtdXN0IHJldHVybiBhIHN0cmluZyIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYmFkX3R5cGUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJnZXRwYXNzIGVycm9yIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19leGNlcHRpb24pCisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXNzd29yZCBmdW5jdGlvbiBpc24ndCBjYWxsZWQgaWYgaXQgaXNuJ3QgbmVlZGVkCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUsIHBhc3N3b3JkPWdldHBhc3NfZXhjZXB0aW9uKQogCiAgICAgZGVmIHRlc3RfbG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC00NDMsNiArNTM4LDE5IEBACiAgICAgICAgICMgSXNzdWUgIzEwOTg5OiBjcmFzaCBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IHR5cGUgaXMgaW52YWxpZAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE5vbmUsIFRydWUpCiAKKyAgICBkZWYgdGVzdF9sb2FkX2RoX3BhcmFtcyhzZWxmKToKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoREhGSUxFKQorICAgICAgICBpZiBvcy5uYW1lICE9ICdudCc6CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQllURVNfREhGSUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX2RoX3BhcmFtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHgubG9hZF9kaF9wYXJhbXMsIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKFdST05HQ0VSVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9zZXNzaW9uX3N0YXRzKHNlbGYpOgogICAgICAgICBmb3IgcHJvdG8gaW4gUFJPVE9DT0xTOgpAQCAtNDY3LDYgKzU3NSw1NyBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIGN0eC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAiRUNESCBkaXNhYmxlZCBvbiB0aGlzIE9wZW5TU0wgYnVpbGQiKQorICAgIGRlZiB0ZXN0X3NldF9lY2RoX2N1cnZlKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfZWNkaF9jdXJ2ZSgicHJpbWUyNTZ2MSIpCisgICAgICAgIGN0eC5zZXRfZWNkaF9jdXJ2ZShiInByaW1lMjU2djEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHguc2V0X2VjZGhfY3VydmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgYiJmb28iKQorCisKK2NsYXNzIFNTTEVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICAjIFRoZSBzdHIoKSBvZiBhIFNTTEVycm9yIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZXJybm8KKyAgICAgICAgZSA9IHNzbC5TU0xFcnJvcigxLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIDEpCisgICAgICAgICMgU2FtZSBmb3IgYSBzdWJjbGFzcworICAgICAgICBlID0gc3NsLlNTTFplcm9SZXR1cm5FcnJvcigxLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIDEpCisKKyAgICBkZWYgdGVzdF9saWJfcmVhc29uKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGxpYnJhcnkgYW5kIHJlYXNvbiBhdHRyaWJ1dGVzCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5saWJyYXJ5LCAnUEVNJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uLCAnTk9fU1RBUlRfTElORScpCisgICAgICAgIHMgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJbUEVNOiBOT19TVEFSVF9MSU5FXSBubyBzdGFydCBsaW5lIiksIHMpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBhcHByb3ByaWF0ZSBTU0xFcnJvciBzdWJjbGFzcyBpcyByYWlzZWQKKyAgICAgICAgIyAodGhpcyBvbmx5IHRlc3RzIG9uZSBvZiB0aGVtKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CisgICAgICAgICAgICBzLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAgICAgICAgIHMubGlzdGVuKDUpCisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBjOgorICAgICAgICAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCisgICAgICAgICAgICAgICAgYy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgICAgICAgICBjID0gY3R4LndyYXBfc29ja2V0KGMsIEZhbHNlLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xXYW50UmVhZEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgYy5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIHMgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAocmVhZCkiKSwgcykKKyAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEKQorCiAKIGNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTI5LDEzICs2ODgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKICAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtNjU1LDM3ICs4MTEsMzkgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSkKICAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic3ZuLnB5dGhvbi5vcmciKToKLSAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpKQotICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiBzdm4ucHl0aG9uLm9yZzo0NDMhIikKKyAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6CisgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCiAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSwgY2FfY2VydHM9Q0VSVEZJTEUpCi0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPUNFUlRGSUxFKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKKyAgICAgICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzXG4iICUgeCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKKworICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Y2VydCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yIHN2bi5weXRob24ub3JnISIgJSBwZW0pCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQogCi0gICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSwgY2FfY2VydHM9U1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQotICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiBzdm4ucHl0aG9uLm9yZzo0NDMhIikKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciBzdm4ucHl0aG9uLm9yZzo0NDMgaXNcbiVzXG4iICUgcGVtKQorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKCdzdm4ucHl0aG9uLm9yZycsIDQ0MywgU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQorICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKKyAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6CiAgICAgICAgIHJlbW90ZSA9ICgic3ZuLnB5dGhvbi5vcmciLCA0NDMpCkBAIC03NjMsNiArOTIxLDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3NsY29ubiA9IHNlbGYuc2VydmVyLmNvbnRleHQud3JhcF9zb2NrZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbGVjdGVkX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgIyBYWFggVmFyaW91cyBlcnJvcnMgY2FuIGhhdmUgaGFwcGVuZWQgaGVyZSwgZm9yIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICAgIyBhIG1pc21hdGNoaW5nIHByb3RvY29sIHZlcnNpb24sIGFuIGludmFsaWQgY2VydGlmaWNhdGUsCkBAIC03ODUsNiArOTQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgY2lwaGVyID0gc2VsZi5zc2xjb25uLmNpcGhlcigpCiAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY2hhdHR5OgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogY29ubmVjdGlvbiBjaXBoZXIgaXMgbm93ICIgKyBzdHIoY2lwaGVyKSArICJcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiBzZWxlY3RlZCBwcm90b2NvbCBpcyBub3cgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0cihzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpICsgIlxuIikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAgICAgZGVmIHJlYWQoc2VsZik6CkBAIC04MzksNiArMTAwMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3NsY29ubiA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IGNvbm5lY3Rpb24gaXMgbm93IHVuZW5jcnlwdGVkLi4uXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBzdHJpcHBlZCA9PSBiJ0NCIHRscy11bmlxdWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogcmVhZCBDQiB0bHMtdW5pcXVlIGZyb20gY2xpZW50LCBzZW5kaW5nIG91ciBDQiBkYXRhLi4uXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnNzbGNvbm4uZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKGRhdGEpLmVuY29kZSgidXMtYXNjaWkiKSArIGIiXG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydC52ZXJib3NlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5KToKQEAgLTg1OCw3ICsxMDI0LDcgQEAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNlcnRpZmljYXRlPU5vbmUsIHNzbF92ZXJzaW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1Ob25lLCBjYWNlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSwgc3RhcnR0bHNfc2VydmVyPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBjb250ZXh0OgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKICAgICAgICAgICAgIGVsc2U6CkBAIC04NzEsNiArMTAzNyw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FjZXJ0cykKICAgICAgICAgICAgICAgICBpZiBjZXJ0aWZpY2F0ZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0aWZpY2F0ZSkKKyAgICAgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X25wbl9wcm90b2NvbHMobnBuX3Byb3RvY29scykKICAgICAgICAgICAgICAgICBpZiBjaXBoZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYuY2hhdHR5ID0gY2hhdHR5CkBAIC04ODAsNiArMTA0OCw3IEBACiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNvY2spCiAgICAgICAgICAgICBzZWxmLmZsYWcgPSBOb25lCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkX3Byb3RvY29scyA9IFtdCiAgICAgICAgICAgICBzZWxmLmNvbm5fZXJyb3JzID0gW10KICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKICAgICAgICAgICAgIHNlbGYuZGFlbW9uID0gVHJ1ZQpAQCAtOTQ3LDEyICsxMTE2LDExIEBACiAgICAgICAgICAgICAgICAgZGVmIF9kb19zc2xfaGFuZHNoYWtlKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdIGluIChzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX0VPRjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgKHNzbC5TU0xXYW50UmVhZEVycm9yLCBzc2wuU1NMV2FudFdyaXRlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBlcnJuby5FQ09OTkFCT1JURUQ6CkBAIC0xMDc1LDYgKzEyNDMsNyBAQAogICAgICAgICBMYXVuY2ggYSBzZXJ2ZXIsIGNvbm5lY3QgYSBjbGllbnQgdG8gaXQgYW5kIHRyeSB2YXJpb3VzIHJlYWRzCiAgICAgICAgIGFuZCB3cml0ZXMuCiAgICAgICAgICIiIgorICAgICAgICBzdGF0cyA9IHt9CiAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PXNlcnZlcl9jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PWNoYXR0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCkBAIC0xMTAwLDcgKzEyNjksMTQgQEAKICAgICAgICAgICAgICAgICBpZiBjb25uZWN0aW9uY2hhdHR5OgogICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgY2xpZW50OiAgY2xvc2luZyBjb25uZWN0aW9uLlxuIikKKyAgICAgICAgICAgICAgICBzdGF0cy51cGRhdGUoeworICAgICAgICAgICAgICAgICAgICAnY29tcHJlc3Npb24nOiBzLmNvbXByZXNzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdjaXBoZXInOiBzLmNpcGhlcigpLAorICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKKyAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzCisgICAgICAgIHJldHVybiBzdGF0cwogCiAgICAgZGVmIHRyeV9wcm90b2NvbF9jb21ibyhzZXJ2ZXJfcHJvdG9jb2wsIGNsaWVudF9wcm90b2NvbCwgZXhwZWN0X3N1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0c3JlcXM9Tm9uZSwgc2VydmVyX29wdGlvbnM9MCwgY2xpZW50X29wdGlvbnM9MCk6CkBAIC0xMjUyLDcgKzE0MjgsOCBAQAogICAgICAgICAgICAgICAgIHQuam9pbigpCiAKICAgICAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKLSAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpLCAibmVlZCBTU0x2MiIpCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5TU0wgaXMgY29tcGlsZWQgd2l0aG91dCBTU0x2MiBzdXBwb3J0IikKICAgICAgICAgZGVmIHRlc3RfcHJvdG9jb2xfc3NsdjIoc2VsZik6CiAgICAgICAgICAgICAiIiJDb25uZWN0aW5nIHRvIGFuIFNTTHYyIHNlcnZlciB3aXRoIHZhcmlvdXMgY2xpZW50IG9wdGlvbnMiIiIKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTE1NTgsNiArMTczNSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICMgY29uc3VtZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlYWQoKQorCisgICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgc2VuZG1zZyBldCBhbCBhcmUgZGlzYWxsb3dlZCB0byBhdm9pZAorICAgICAgICAgICAgICAgICMgaW5hZHZlcnRlbnQgZGlzY2xvc3VyZSBvZiBkYXRhIGFuZC9vciBjb3JydXB0aW9uCisgICAgICAgICAgICAgICAgIyBvZiB0aGUgZW5jcnlwdGVkIGRhdGEgc3RyZWFtCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgcy5zZW5kbXNnLCBbYiJkYXRhIl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgcy5yZWN2bXNnLCAxMDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlY3Ztc2dfaW50bywgYnl0ZWFycmF5KDEwMCkpCisKICAgICAgICAgICAgICAgICBzLndyaXRlKGIib3ZlclxuIikKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIApAQCAtMTYyNiw2ICsxODEyLDEzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJubyBzaGFyZWQgY2lwaGVyIiwgc3RyKHNlcnZlci5jb25uX2Vycm9yc1swXSkpCiAKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoInRscy11bmlxdWUiIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIG5vdCBhdmFpbGFibGUiKQorICAgICAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgICAgICIiIlRlc3QgdGxzLXVuaXF1ZSBjaGFubmVsIGJpbmRpbmcuIiIiCisgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQorCisgICAgICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAjIGdldCB0aGUgZGF0YQorICAgICAgICAgICAgICAgIGNiX2RhdGEgPSBzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGdvdCBjaGFubmVsIGJpbmRpbmcgZGF0YTogezAhcn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX2RhdGEpKQorCisgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBpdCBpcyBzYW5lCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYl9kYXRhKSwgMTIpICMgVHJ1ZSBmb3IgVExTdjEKKworICAgICAgICAgICAgICAgICMgYW5kIGNvbXBhcmUgd2l0aCB0aGUgcGVlcnMgdmVyc2lvbgorICAgICAgICAgICAgICAgIHMud3JpdGUoYiJDQiB0bHMtdW5pcXVlXG4iKQorICAgICAgICAgICAgICAgIHBlZXJfZGF0YV9yZXByID0gcy5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlcl9kYXRhX3JlcHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGNiX2RhdGEpLmVuY29kZSgidXMtYXNjaWkiKSkKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgorICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgbmV3X2NiX2RhdGEgPSBzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGdvdCBhbm90aGVyIGNoYW5uZWwgYmluZGluZyBkYXRhOiB7MCFyfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmV3X2NiX2RhdGEpKQorICAgICAgICAgICAgICAgICMgaXMgaXQgcmVhbGx5IHVuaXF1ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2JfZGF0YSwgbmV3X2NiX2RhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYl9kYXRhKSwgMTIpICMgVHJ1ZSBmb3IgVExTdjEKKyAgICAgICAgICAgICAgICBzLndyaXRlKGIiQ0IgdGxzLXVuaXF1ZVxuIikKKyAgICAgICAgICAgICAgICBwZWVyX2RhdGFfcmVwciA9IHMucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlZXJfZGF0YV9yZXByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihuZXdfY2JfZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpKQorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGdvdCBjb21wcmVzc2lvbjogeyFyfVxuIi5mb3JtYXQoc3RhdHNbJ2NvbXByZXNzaW9uJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdGF0c1snY29tcHJlc3Npb24nXSwgeyBOb25lLCAnWkxJQicsICdSTEUnIH0pCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdPUF9OT19DT01QUkVTU0lPTicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3NsLk9QX05PX0NPTVBSRVNTSU9OIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgZGVmIHRlc3RfY29tcHJlc3Npb25fZGlzYWJsZWQoc2VsZik6CisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NvbXByZXNzaW9uJ10sIE5vbmUpCisKKyAgICAgICAgZGVmIHRlc3RfZGhfcGFyYW1zKHNlbGYpOgorICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IGEgY29ubmVjdGlvbiB3aXRoIGVwaGVtZXJhbCBEaWZmaWUtSGVsbG1hbgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2RoX3BhcmFtcyhESEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKCJrRURIIikKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgY2lwaGVyID0gc3RhdHNbImNpcGhlciJdWzBdCisgICAgICAgICAgICBwYXJ0cyA9IGNpcGhlci5zcGxpdCgiLSIpCisgICAgICAgICAgICBpZiAiQURIIiBub3QgaW4gcGFydHMgYW5kICJFREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkRIRSIgbm90IGluIHBhcnRzOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm9uLURIIGNpcGhlcjogIiArIGNpcGhlclswXSkKKworICAgICAgICBkZWYgdGVzdF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICAgICAjIHNlbGVjdGVkX25wbl9wcm90b2NvbCgpIGlzIE5vbmUgdW5sZXNzIE5QTiBpcyB1c2VkCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NsaWVudF9ucG5fcHJvdG9jb2wnXSwgTm9uZSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX05QTiwgIk5QTiBzdXBwb3J0IG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgZGVmIHRlc3RfbnBuX3Byb3RvY29scyhzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9wcm90b2NvbHMgPSBbJ2h0dHAvMS4xJywgJ3NwZHkvMiddCisgICAgICAgICAgICBwcm90b2NvbF90ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICAoWydodHRwLzEuMScsICdzcGR5LzInXSwgJ2h0dHAvMS4xJyksCisgICAgICAgICAgICAgICAgKFsnc3BkeS8yJywgJ2h0dHAvMS4xJ10sICdodHRwLzEuMScpLAorICAgICAgICAgICAgICAgIChbJ3NwZHkvMicsICd0ZXN0J10sICdzcGR5LzInKSwKKyAgICAgICAgICAgICAgICAoWydhYmMnLCAnZGVmJ10sICdhYmMnKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgZm9yIGNsaWVudF9wcm90b2NvbHMsIGV4cGVjdGVkIGluIHByb3RvY29sX3Rlc3RzOgorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhzZXJ2ZXJfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhjbGllbnRfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorCisgICAgICAgICAgICAgICAgbXNnID0gImZhaWxlZCB0cnlpbmcgJXMgKHMpIGFuZCAlcyAoYykuXG4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAid2FzIGV4cGVjdGluZyAlcywgYnV0IGdvdCAlJXMgZnJvbSB0aGUgJSVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN0cihzZXJ2ZXJfcHJvdG9jb2xzKSwgc3RyKGNsaWVudF9wcm90b2NvbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIGNsaWVudF9yZXN1bHQgPSBzdGF0c1snY2xpZW50X25wbl9wcm90b2NvbCddCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKGNsaWVudF9yZXN1bHQsICJjbGllbnQiKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfcmVzdWx0ID0gc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ11bLTFdIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddKSBlbHNlICdub3RoaW5nJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3Jlc3VsdCwgZXhwZWN0ZWQsIG1zZyAlIChzZXJ2ZXJfcmVzdWx0LCAic2VydmVyIikpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0xNjUzLDcgKzE5NjgsNyBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIGNlcnRpZmljYXRlIGZpbGUgJXIiICUgZmlsZW5hbWUpCiAKLSAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHNdCisgICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzXQogCiAgICAgaWYgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGQ1ZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CkBAIC0wLDAgKzEsNjYgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9zCitpbXBvcnQgc3RhdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0CisKKworZGVmIGdldF9tb2RlKGZuYW1lPVRFU1RGTik6CisgICAgcmV0dXJuIHN0YXQuZmlsZW1vZGUob3MubHN0YXQoZm5hbWUpLnN0X21vZGUpCisKKworY2xhc3MgVGVzdEZpbGVtb2RlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Mucm1kaXIoVEVTVEZOKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgIHRlYXJEb3duID0gc2V0VXAKKworICAgIGRlZiB0ZXN0X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3Jyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctcnd4LS0tLS0tJykKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG8wNzApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctLS0tcnd4LS0tJykKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG8wMDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctLS0tLS0tcnd4JykKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG80NDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctci0tci0tci0tJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKClbOjNdLCAnLXJ3JykKKworICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICBvcy5jaG1vZChURVNURk4sIDBvNzAwKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICdkcnd4LS0tLS0tJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKVswXSwgJ2QnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3N5bWxpbmsnKSwgJ29zLnN5bWxpbmsgbm90IGF2YWlsYWJsZScpCisgICAgZGVmIHRlc3RfbGluayhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3ltbGluayhvcy5nZXRjd2QoKSwgVEVTVEZOKQorICAgICAgICBleGNlcHQgKE9TRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KHN0cihlcnIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpWzBdLCAnbCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnbWtmaWZvJyksICdvcy5ta2ZpZm8gbm90IGF2YWlsYWJsZScpCisgICAgZGVmIHRlc3RfZmlmbyhzZWxmKToKKyAgICAgICAgb3MubWtmaWZvKFRFU1RGTiwgMG83MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJ3Byd3gtLS0tLS0nKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoVGVzdEZpbGVtb2RlKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CmluZGV4IDM0ZDFkY2YuLmMyYmRmZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CkBAIC0yNiw2ICsyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnXHRhQmNcdERlRlx0JyksICdBYmMgRGVmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuY2Fwd29yZHMoJ1x0YUJjXHREZUZcdCcsICdcdCcpLCAnXHRBYmNcdERlZlx0JykKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX2Zvcm1hdHRlcihzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vIiksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoImZvb3swfSIsICJiYXIiKSwgImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezF9ezB9LXsxfSIsICJiYXIiLCA2KSwgImZvbzZiYXItNiIpCisKICAgICBkZWYgdGVzdF9jb252ZXJzaW9uX3NwZWNpZmllcnMoc2VsZik6CiAgICAgICAgIGZtdCA9IHN0cmluZy5Gb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17YXJnIXJ9LSIsIGFyZz0ndGVzdCcpLCAiLSd0ZXN0Jy0iKQpAQCAtMzgsMTUgKzQ0LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezAhYX0iLCAgY2hyKDI1NSkpLCAiJ1xceGZmJyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezAhYX0iLCAgY2hyKDI1NikpLCAiJ1xcdTAxMDAnIikKIAotICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcihzZWxmKToKKyAgICBkZWYgdGVzdF9uYW1lX2xvb2t1cChzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vIiksICJmb28iKQorICAgICAgICBjbGFzcyBBbnlBdHRyOgorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIHJldHVybiBhdHRyCisgICAgICAgIHggPSBBbnlBdHRyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MC5sdW1iZXJ9ezAuamFja30iLCB4KSwgJ2x1bWJlcmphY2snKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswLmx1bWJlcn17MC5qYWNrfSIsICcnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezB9IiwgImJhciIpLCAiZm9vYmFyIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MX17MH0tezF9IiwgImJhciIsIDYpLCAiZm9vNmJhci02IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCIte2FyZyFyfS0iLCBhcmc9J3Rlc3QnKSwgIi0ndGVzdCctIikKKyAgICBkZWYgdGVzdF9pbmRleF9sb29rdXAoc2VsZik6CisgICAgICAgIGZtdCA9IHN0cmluZy5Gb3JtYXR0ZXIoKQorICAgICAgICBsb29rdXAgPSBbImVnZ3MiLCAiYW5kIiwgInNwYW0iXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIGxvb2t1cCksICdzcGFtZWdncycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBmbXQuZm9ybWF0KCJ7MFsyXX17MFswXX0iLCBbXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBmbXQuZm9ybWF0KCJ7MFsyXX17MFswXX0iLCB7fSkKIAotICAgICAgICAjIG92ZXJyaWRlIGdldF92YWx1ZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2dldF92YWx1ZShzZWxmKToKICAgICAgICAgY2xhc3MgTmFtZXNwYWNlRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzcGFjZT17fSk6CiAgICAgICAgICAgICAgICAgc3RyaW5nLkZvcm1hdHRlci5fX2luaXRfXyhzZWxmKQpAQCAtNjYsNyArODMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIntncmVldGluZ30sIHdvcmxkISIpLCAnaGVsbG8sIHdvcmxkIScpCiAKIAotICAgICAgICAjIG92ZXJyaWRlIGZvcm1hdF9maWVsZCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2Zvcm1hdF9maWVsZChzZWxmKToKICAgICAgICAgY2xhc3MgQ2FsbEZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgIGRlZiBmb3JtYXRfZmllbGQoc2VsZiwgdmFsdWUsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KHZhbHVlKCksIGZvcm1hdF9zcGVjKQpAQCAtNzUsMTggKzkyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgnKnswfSonLCBsYW1iZGEgOiAncmVzdWx0JyksICcqcmVzdWx0KicpCiAKIAotICAgICAgICAjIG92ZXJyaWRlIGNvbnZlcnRfZmllbGQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2NvbnZlcnRfZmllbGQoc2VsZik6CiAgICAgICAgIGNsYXNzIFhGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgY29udmVydF9maWVsZChzZWxmLCB2YWx1ZSwgY29udmVyc2lvbik6CiAgICAgICAgICAgICAgICAgaWYgY29udmVyc2lvbiA9PSAneCc6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKFhGb3JtYXR0ZXIsIHNlbGYpLmNvbnZlcnRfZmllbGQodmFsdWUsIGNvbnZlcnNpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuY29udmVydF9maWVsZCh2YWx1ZSwgY29udmVyc2lvbikKIAogICAgICAgICBmbXQgPSBYRm9ybWF0dGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFyfTp7MCF4fSIsICdmb28nLCAnZm9vJyksICInZm9vJzpOb25lIikKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgcGFyc2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfcGFyc2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEJhckZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgICMgcmV0dXJucyBhbiBpdGVyYWJsZSB0aGF0IGNvbnRhaW5zIHR1cGxlcyBvZiB0aGUgZm9ybToKICAgICAgICAgICAgICMgKGxpdGVyYWxfdGV4dCwgZmllbGRfbmFtZSwgZm9ybWF0X3NwZWMsIGNvbnZlcnNpb24pCkBAIC0xMDIsNyArMTE5LDcgQEAKICAgICAgICAgZm10ID0gQmFyRm9ybWF0dGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCcqfCswOl4xMHN8KicsICdmb28nKSwgJyogICBmb28gICAgKicpCiAKLSAgICAgICAgIyB0ZXN0IGFsbCBwYXJhbWV0ZXJzIHVzZWQKKyAgICBkZWYgdGVzdF9jaGVja191bnVzZWRfYXJncyhzZWxmKToKICAgICAgICAgY2xhc3MgQ2hlY2tBbGxVc2VkRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIGNoZWNrX3VudXNlZF9hcmdzKHNlbGYsIHVzZWRfYXJncywgYXJncywga3dhcmdzKToKICAgICAgICAgICAgICAgICAjIFRyYWNrIHdoaWNoIGFyZ3VtZW50cyBhY3R1YWxseSBnb3QgdXNlZApAQCAtMTI0LDI4ICsxNDEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm10LmZvcm1hdCwgInswfSIsIDEwLCAyMCwgaT0xMDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZtdC5mb3JtYXQsICJ7aX0iLCAxMCwgMjAsIGk9MTAwKQogCi0gICAgZGVmIHRlc3RfdmZvcm1hdF9hc3NlcnQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBrd2FyZ3MgPSB7Ci0gICAgICAgICAgICAiaSI6IDEwMAotICAgICAgICB9Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNscy5fdmZvcm1hdCwKLSAgICAgICAgICAgICAgICBjbHMuZm9ybWF0LCAiezB9Iiwga3dhcmdzLCBzZXQoKSwgLTIpCi0KLSAgICBkZWYgdGVzdF9jb252ZXJ0X2ZpZWxkKHNlbGYpOgotICAgICAgICBjbHMgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMuZm9ybWF0KCJ7MCFzfSIsICdmb28nKSwgJ2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNscy5mb3JtYXQsICJ7MCFofSIsICdmb28nKQotCi0gICAgZGVmIHRlc3RfZ2V0X2ZpZWxkKHNlbGYpOgotICAgICAgICBjbHMgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgY2xhc3MgTXlDbGFzczoKLSAgICAgICAgICAgIG5hbWUgPSAnbHVtYmVyamFjaycKLSAgICAgICAgeCA9IE15Q2xhc3MoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswLm5hbWV9IiwgeCksICdsdW1iZXJqYWNrJykKLQotICAgICAgICBsb29rdXAgPSBbImVnZ3MiLCAiYW5kIiwgInNwYW0iXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswWzJdfSIsIGxvb2t1cCksICdzcGFtJykKKyAgICBkZWYgdGVzdF92Zm9ybWF0X3JlY3Vyc2lvbl9saW1pdChzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBrd2FyZ3MgPSBkaWN0KGk9MTAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIGZtdC5fdmZvcm1hdCgie2l9IiwgYXJncywga3dhcmdzLCBzZXQoKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInJlY3Vyc2lvbiIsIHN0cihlcnIuZXhjZXB0aW9uKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CmluZGV4IDZiZGM2ZTQuLjA3YmM0ODggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CkBAIC0yLDEwICsyLDEwIEBACiAKIFRoZXJlIGFyZSBmb3VyIHR5cGVzIG9mIHN0cmluZyBsaXRlcmFsczoKIAotICAgICdhYmMnICAgLS0gbm9ybWFsIHN0cgotICAgIHInYWJjJyAgLS0gcmF3IHN0cgotICAgIGIneHl6JyAgLS0gbm9ybWFsIGJ5dGVzCi0gICAgYnIneHl6JyAtLSByYXcgYnl0ZXMKKyAgICAnYWJjJyAgICAgICAgICAgICAtLSBub3JtYWwgc3RyCisgICAgcidhYmMnICAgICAgICAgICAgLS0gcmF3IHN0cgorICAgIGIneHl6JyAgICAgICAgICAgIC0tIG5vcm1hbCBieXRlcworICAgIGJyJ3h5eicgfCByYid4eXonIC0tIHJhdyBieXRlcwogCiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG5vcm1hbCBhbmQgcmF3IHN0cmluZ3MgaXMgb2YgY291cnNlIHRoYXQgaW4gYQogcmF3IHN0cmluZywgXCBlc2NhcGVzICh3aGlsZSBzdGlsbCB1c2VkIHRvIGRldGVybWluZSB0aGUgZW5kIG9mIHRoZQpAQCAtMTAzLDEyICsxMDMsMzQgQEAKIAogICAgIGRlZiB0ZXN0X2V2YWxfYnl0ZXNfcmF3KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGJyJ3gnICIiIiksIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgcmIneCcgIiIiKSwgYid4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHgwMScgIiIiKSwgYidcXCcgKyBiJ3gwMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIHJiJ1x4MDEnICIiIiksIGInXFwnICsgYid4MDEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGJyJ1x4MDEnICIiIiksIGJ5dGUoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgcmInXHgwMScgIiIiKSwgYnl0ZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHg4MScgIiIiKSwgYiJcXCIgKyBiIng4MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIHJiJ1x4ODEnICIiIiksIGIiXFwiICsgYiJ4ODEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJyJ1x4ODEnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiByYidceDgxJyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1x1MTg4MScgIiIiKSwgYiJcXCIgKyBiInUxODgxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHUxODgxJyAiIiIpLCBiIlxcIiArIGIidTE4ODEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJyJ1x1MTg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiJ1x1MTg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJiJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJyJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJycicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiYnInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnJiJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiYicnICIiIikKKworICAgIGRlZiB0ZXN0X2V2YWxfc3RyX3Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgdSd4JyAiIiIpLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgVSdcdTAwZTQnICIiIiksICfDpCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgdSdcTntMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJU30nICIiIiksICfDpCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgdXInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnUnJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnUnJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgdWInJyAiIiIpCiAKICAgICBkZWYgY2hlY2tfZW5jb2Rpbmcoc2VsZiwgZW5jb2RpbmcsIGV4dHJhPSIiKToKICAgICAgICAgbW9kbmFtZSA9ICJ4eF8iICsgZW5jb2RpbmcucmVwbGFjZSgiLSIsICJfIikKQEAgLTEzMSw3ICsxNTMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgc2VsZi5jaGVja19lbmNvZGluZywgInV0Zi04IiwgZXh0cmEpCiAKICAgICBkZWYgdGVzdF9maWxlX3V0Zjgoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoInV0ZjgiKQorICAgICAgICBzZWxmLmNoZWNrX2VuY29kaW5nKCJ1dGYtOCIpCiAKICAgICBkZWYgdGVzdF9maWxlX2lzb184ODU5XzEoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoImlzby04ODU5LTEiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQppbmRleCBkY2M3M2FiLi4yMjM3NGQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQpAQCAtOCw5ICs4LDE5IEBACiBJU0JJR0VORElBTiA9IHN5cy5ieXRlb3JkZXIgPT0gImJpZyIKIElTMzJCSVQgPSBzeXMubWF4c2l6ZSA9PSAweDdmZmZmZmZmCiAKLWludGVnZXJfY29kZXMgPSAnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ0knLCAnbCcsICdMJywgJ3EnLCAnUScKK2ludGVnZXJfY29kZXMgPSAnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ0knLCAnbCcsICdMJywgJ3EnLCAnUScsICduJywgJ04nCiBieXRlb3JkZXJzID0gJycsICdAJywgJz0nLCAnPCcsICc+JywgJyEnCiAKK2RlZiBpdGVyX2ludGVnZXJfZm9ybWF0cyhieXRlb3JkZXJzPWJ5dGVvcmRlcnMpOgorICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6CisgICAgICAgIGZvciBieXRlb3JkZXIgaW4gYnl0ZW9yZGVyczoKKyAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCisgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBub3QgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgnbicsICdOJykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB5aWVsZCBjb2RlLCBieXRlb3JkZXIKKwogIyBOYXRpdmUgJ3EnIHBhY2tpbmcgaXNuJ3QgYXZhaWxhYmxlIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBDCiAjIGxvbmcgbG9uZyB0eXBlLgogdHJ5OgpAQCAtMzAsNyArNDAsNiBAQAogICAgICAgICByZXR1cm4gc3RyaW5nX3JldmVyc2UodmFsdWUpCiAKIGNsYXNzIFN0cnVjdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCiAgICAgZGVmIHRlc3RfaXNiaWdlbmRpYW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHN0cnVjdC5wYWNrKCc9aScsIDEpWzBdID09IDApLCBJU0JJR0VORElBTikKIApAQCAtMTQyLDE0ICsxNTEsMTMgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAjIHN0YW5kYXJkIGludGVnZXIgc2l6ZXMKLSAgICAgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKLSAgICAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gJz0nLCAnPCcsICc+JywgJyEnOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQorICAgICAgICBmb3IgY29kZSwgYnl0ZW9yZGVyIGluIGl0ZXJfaW50ZWdlcl9mb3JtYXRzKCgnPScsICc8JywgJz4nLCAnIScpKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCisgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZvcm1hdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJwogICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKICAgICAgICAgICAgIG5hdGl2ZV9wYWlycyArPSAncVEnLAogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgpAQCAtMTY3LDkgKzE3NSwxMSBAQAogICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDgsIHN0cnVjdC5jYWxjc2l6ZSgncScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSkKIAogICAgIGRlZiB0ZXN0X2ludGVnZXJzKHNlbGYpOgotICAgICAgICAjIEludGVnZXIgdGVzdHMgKGJCaEhpSWxMcVEpLgorICAgICAgICAjIEludGVnZXIgdGVzdHMgKGJCaEhpSWxMcVFuTikuCiAgICAgICAgIGltcG9ydCBiaW5hc2NpaQogCiAgICAgICAgIGNsYXNzIEludFRlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xODMsMTEgKzE5MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnl0ZW9yZGVyKQogICAgICAgICAgICAgICAgIHNlbGYuYnl0ZXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQogICAgICAgICAgICAgICAgIHNlbGYuYml0c2l6ZSA9IHNlbGYuYnl0ZXNpemUgKiA4Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdiaGlscScpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29kZSBpbiB0dXBsZSgnYmhpbHFuJyk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbl92YWx1ZSA9IC0oMioqKHNlbGYuYml0c2l6ZS0xKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfdmFsdWUgPSAyKiooc2VsZi5iaXRzaXplLTEpIC0gMQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdCSElMUScpOgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdCSElMUU4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWduZWQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbl92YWx1ZSA9IDAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfdmFsdWUgPSAyKipzZWxmLmJpdHNpemUgLSAxCkBAIC0zMTcsMTQgKzMyNywyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaywgc2VsZi5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaikKIAotICAgICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgotICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBieXRlb3JkZXJzOgotICAgICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCi0gICAgICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCisgICAgICAgICAgICB0ID0gSW50VGVzdGVyKGZvcm1hdCkKKyAgICAgICAgICAgIHQucnVuKCkKKworICAgIGRlZiB0ZXN0X25OX2NvZGUoc2VsZik6CisgICAgICAgICMgbiBhbmQgTiBkb24ndCBleGlzdCBpbiBzdGFuZGFyZCBzaXplcworICAgICAgICBkZWYgYXNzZXJ0U3RydWN0RXJyb3IoZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJhZCBjaGFyIGluIHN0cnVjdCBmb3JtYXQiLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgZm9yIGNvZGUgaW4gJ25OJzoKKyAgICAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gKCc9JywgJzwnLCAnPicsICchJyk6CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKLSAgICAgICAgICAgICAgICB0ID0gSW50VGVzdGVyKGZvcm1hdCkKLSAgICAgICAgICAgICAgICB0LnJ1bigpCisgICAgICAgICAgICAgICAgYXNzZXJ0U3RydWN0RXJyb3Ioc3RydWN0LmNhbGNzaXplLCBmb3JtYXQpCisgICAgICAgICAgICAgICAgYXNzZXJ0U3RydWN0RXJyb3Ioc3RydWN0LnBhY2ssIGZvcm1hdCwgMCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QudW5wYWNrLCBmb3JtYXQsIGIiIikKIAogICAgIGRlZiB0ZXN0X3BfY29kZShzZWxmKToKICAgICAgICAgIyBUZXN0IHAgKCJQYXNjYWwgc3RyaW5nIikgY29kZS4KQEAgLTM3OCwxNCArMzk3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHN0cnVjdC5wYWNrLCAiPmYiLCBiaWcpCiAKICAgICBkZWYgdGVzdF8xNTMwNTU5KHNlbGYpOgotICAgICAgICBmb3IgYnl0ZW9yZGVyIGluICcnLCAnQCcsICc9JywgJzwnLCAnPicsICchJzoKLSAgICAgICAgICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6Ci0gICAgICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBieXRlb3JkZXIgKyBjb2RlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjUpCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlciArIGNvZGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssIGZvcm1hdCwgMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssICdQJywgMS4wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCAnUCcsIDEuNSkKIApAQCAtNTU5LDkgKzU3NCw5IEBACiAKICAgICBkZWYgY2hlY2tfc2l6ZW9mKHNlbGYsIGZvcm1hdF9zdHIsIG51bWJlcl9vZl9jb2Rlcyk6CiAgICAgICAgICMgVGhlIHNpemUgb2YgJ1B5U3RydWN0T2JqZWN0JwotICAgICAgICB0b3RhbHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCisgICAgICAgIHRvdGFsc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJuM1AnKQogICAgICAgICAjIFRoZSBzaXplIHRha2VuIHVwIGJ5IHRoZSAnZm9ybWF0Y29kZScgZHluYW1pYyBhcnJheQotICAgICAgICB0b3RhbHNpemUgKz0gc3RydWN0LmNhbGNzaXplKCczUCcpICogKG51bWJlcl9vZl9jb2RlcyArIDEpCisgICAgICAgIHRvdGFsc2l6ZSArPSBzdHJ1Y3QuY2FsY3NpemUoJ1AybjBQJykgKiAobnVtYmVyX29mX2NvZGVzICsgMSkKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgc3RydWN0LlN0cnVjdChmb3JtYXRfc3RyKSwgdG90YWxzaXplKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CmluZGV4IGQ2YzYzYjcuLmE4OWU5NTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CkBAIC03OCw4ICs3OCw5IEBACiAKICAgICBkZWYgdGVzdF9maWVsZHMoc2VsZik6CiAgICAgICAgIHQgPSB0aW1lLmdtdGltZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCB0Lm5fZmllbGRzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubl9maWVsZHMsIHQubl9zZXF1ZW5jZV9maWVsZHMrdC5uX3VubmFtZWRfZmllbGRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0KSwgdC5uX3NlcXVlbmNlX2ZpZWxkcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm5fdW5uYW1lZF9maWVsZHMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5uX2ZpZWxkcywgdGltZS5fU1RSVUNUX1RNX0lURU1TKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHQgPSB0aW1lLnN0cnVjdF90aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggMjg3OTY0MS4uNDc2ZDIyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMTYsNiArMTYsNyBAQAogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNodXRpbAogaW1wb3J0IGdjCitpbXBvcnQgdGV4dHdyYXAKIAogdHJ5OgogICAgIGltcG9ydCByZXNvdXJjZQpAQCAtNjIsNiArNjMsOCBAQAogICAgICAgICAjIHNodXRkb3duIHRpbWUuICBUaGF0IGZydXN0cmF0ZXMgdGVzdHMgdHJ5aW5nIHRvIGNoZWNrIHN0ZGVyciBwcm9kdWNlZAogICAgICAgICAjIGZyb20gYSBzcGF3bmVkIFB5dGhvbiBwcm9jZXNzLgogICAgICAgICBhY3R1YWwgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3RkZXJyKQorICAgICAgICAjIHN0cmlwX3B5dGhvbl9zdGRlcnIgYWxzbyBzdHJpcHMgd2hpdGVzcGFjZSwgc28gd2UgZG8gdG9vLgorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnN0cmlwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCiAKIApAQCAtNzMsNiArNzYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuZXhpdCg0NykiXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDcpCiAKKyAgICBkZWYgdGVzdF9jYWxsX3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmd1bWVudDsgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNoaWxkCisgICAgICAgICMgcHJvY2VzcyBnZXRzIGtpbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuICBJZiB0aGUgY2hpbGQgaXNuJ3QKKyAgICAgICAgIyBraWxsZWQsIHRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIHNpbmNlIHN1YnByb2Nlc3MuY2FsbCB3YWl0cyBmb3IgdGhlCisgICAgICAgICMgY2hpbGQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHN1YnByb2Nlc3MuY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAid2hpbGUgVHJ1ZTogcGFzcyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTAuMSkKKwogICAgIGRlZiB0ZXN0X2NoZWNrX2NhbGxfemVybyhzZWxmKToKICAgICAgICAgIyBjaGVja19jYWxsKCkgZnVuY3Rpb24gd2l0aCB6ZXJvIHJldHVybiBjb2RlCiAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKQEAgLTExNSw2ICsxMjcsMjEgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVmFsdWVFcnJvciB3aGVuIHN0ZG91dCBhcmcgc3VwcGxpZWQuIikKICAgICAgICAgc2VsZi5hc3NlcnRJbignc3Rkb3V0JywgYy5leGNlcHRpb24uYXJnc1swXSkKIAorICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF90aW1lb3V0KHNlbGYpOgorICAgICAgICAjIGNoZWNrX291dHB1dCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC53cml0ZSgnQkRGTCcpXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC5mbHVzaCgpXG4iCisgICAgICAgICAgICAgICAgICAgICAidGltZS5zbGVlcCgzNjAwKSJdLAorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlCisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBtdWNoIHRpbWUgdG8gc3RhcnQgYW5kIHByaW50LgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMpCisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIFRpbWVvdXRFeHBpcmVkLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ub3V0cHV0LCBiJ0JERkwnKQorCiAgICAgZGVmIHRlc3RfY2FsbF9rd2FyZ3Moc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGgga2V5d29yZCBhcmdzCiAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0yMTUsOSArMjQyLDkgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIHRoZSBjb3JyZWN0IGN3ZCwgY29uZmlybSB0aGF0IHRoZSBjYWxsIGZhaWxzCiAgICAgICAgICAgICAjIHdpdGhvdXQgY3dkIGFuZCB3aXRoIHRoZSB3cm9uZyBjd2QuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0sIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQogICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2N3ZChweXRob25fZGlyLCByZWxfcHl0aG9uLCBjd2Q9cHl0aG9uX2RpcikKQEAgLTIzMiw5ICsyNTksOSBAQAogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggdGhlIGNvcnJlY3QgY3dkLCBjb25maXJtIHRoYXQgdGhlIGNhbGwgZmFpbHMKICAgICAgICAgICAgICMgd2l0aG91dCBjd2QgYW5kIHdpdGggdGhlIHdyb25nIGN3ZC4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb2VzbnRleGlzdF0sIGV4ZWN1dGFibGU9cmVsX3B5dGhvbikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb2VzbnRleGlzdF0sIGV4ZWN1dGFibGU9cmVsX3B5dGhvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQpAQCAtMjUwLDE3ICsyNzcsMjEgQEAKICAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIGFuIGFic29sdXRlIHBhdGgsIGNvbmZpcm0gdGhhdCB1c2luZyBhCiAgICAgICAgICAgICAjIHJlbGF0aXZlIHBhdGggZmFpbHMuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0sIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICB3cm9uZ19kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHdyb25nX2RpcikKICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9jd2Qod3JvbmdfZGlyLCBhYnNfcHl0aG9uLCBjd2Q9d3JvbmdfZGlyKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aF9jd2Qoc2VsZik6CiAgICAgICAgIHB5dGhvbl9kaXIsIHB5dGhvbl9iYXNlID0gc2VsZi5fc3BsaXRfcHl0aG9uX3BhdGgoKQogICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQogICAgICAgICBzZWxmLl9hc3NlcnRfY3dkKHB5dGhvbl9kaXIsICJzb21ldGhpbmd5b3Vkb250aGF2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgY3dkPXB5dGhvbl9kaXIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5iYXNlX3ByZWZpeCAhPSBzeXMucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IHZlbnYtY29tcGF0aWJsZScpCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCiAgICAgICAgICAgICAgICAgICAgICAibmVlZCBhbiBpbnN0YWxsZWQgUHl0aG9uLiBTZWUgIzc3NzQiKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aG91dF9jd2Qoc2VsZik6CkBAIC0zOTgsNiArNDI5LDMxIEBACiAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jYWxsKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgY21kXSwgc3Rkb3V0PTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDIpCiAKKyAgICBkZWYgdGVzdF9zdGRvdXRfZGV2bnVsbChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciBpIGluIHJhbmdlKDEwMjQwKTonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQoIngiICogMTAyNCknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zdGRlcnJfZGV2bnVsbChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgaSBpbiByYW5nZSgxMDI0MCk6JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIngiICogMTAyNCknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRlcnIsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zdGRpbl9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGluLnJlYWQoMSknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGluLCBOb25lKQorCiAgICAgZGVmIHRlc3RfZW52KHNlbGYpOgogICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAib3JhbmdlIgpAQCAtNDY4LDYgKzUyNCw0MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJiYW5hbmEiKQogICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYiJwaW5lYXBwbGUiKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfdGltZW91dChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3MsdGltZTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgicGluZWFwcGxlXFxuIik7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoInBlYXJcXG4iKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkLCBwLmNvbW11bmljYXRlLCAiYmFuYW5hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0wLjMpCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGNhbiBrZWVwIHdhaXRpbmcgZm9yIGl0LCBhbmQgdGhhdCB3ZSBnZXQgdGhlIHdob2xlIG91dHB1dAorICAgICAgICAjIGFmdGVyIGl0IGNvbXBsZXRlcy4KKyAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgImJhbmFuYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLmVuY29kZSgpLCBiInBpbmVhcHBsZVxucGVhclxuIikKKworICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3RpbWVvdXRfbGFyZ2Vfb3VwdXQoc2VsZik6CisgICAgICAgICMgVGVzdCBhbiBleHBpcmluZyB0aW1lb3V0IHdoaWxlIHRoZSBjaGlsZCBpcyBvdXRwdXR0aW5nIGxvdHMgb2YgZGF0YS4KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3MsdGltZTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHAuY29tbXVuaWNhdGUsIHRpbWVvdXQ9MC40KQorICAgICAgICAoc3Rkb3V0LCBfKSA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdGRvdXQpLCA0ICogNjQgKiAxMDI0KQorCiAgICAgIyBUZXN0IGZvciB0aGUgZmQgbGVhayByZXBvcnRlZCBpbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc5MS4KICAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV9waXBlX2ZkX2xlYWsoc2VsZik6CiAgICAgICAgIGZvciBzdGRpbl9waXBlIGluIChGYWxzZSwgVHJ1ZSk6CkBAIC01MDQsMjQgKzU5NSwyMSBAQAogICAgICAgICAjIFRoaXMgdGVzdCB3aWxsIHByb2JhYmx5IGRlYWRsb2NrIHJhdGhlciB0aGFuIGZhaWwsIGlmCiAgICAgICAgICMgY29tbXVuaWNhdGUoKSBkb2VzIG5vdCB3b3JrIHByb3Blcmx5LgogICAgICAgICB4LCB5ID0gb3MucGlwZSgpCi0gICAgICAgIGlmIG1zd2luZG93czoKLSAgICAgICAgICAgIHBpcGVfYnVmID0gNTEyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwaXBlX2J1ZiA9IG9zLmZwYXRoY29uZih4LCAiUENfUElQRV9CVUYiKQogICAgICAgICBvcy5jbG9zZSh4KQogICAgICAgICBvcy5jbG9zZSh5KQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCg0NykpOycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJ4eXoiKiVkKTsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKScgJSBwaXBlX2J1Zl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgieCIgKiAlZCk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUoc3lzLnN0ZGluLnJlYWQoKSknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuUElQRV9NQVhfU0laRV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICBzdHJpbmdfdG9fd3JpdGUgPSBiImFiYyIqcGlwZV9idWYKKyAgICAgICAgc3RyaW5nX3RvX3dyaXRlID0gYiJhIiAqIHN1cHBvcnQuUElQRV9NQVhfU0laRQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZShzdHJpbmdfdG9fd3JpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBzdHJpbmdfdG9fd3JpdGUpCiAKQEAgLTU5Niw4ICs2ODQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCi0gICAgICAgICMgQlVHOiBjYW4ndCBnaXZlIGEgbm9uLWVtcHR5IHN0ZGluIGJlY2F1c2UgaXQgYnJlYWtzIGJvdGggdGhlCi0gICAgICAgICMgc2VsZWN0LSBhbmQgcG9sbC1iYXNlZCBjb21tdW5pY2F0ZSgpIGltcGxlbWVudGF0aW9ucy4KICAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbmxpbmU0XG5saW5lNVxubGluZTZcbmxpbmU3XG5saW5lOCIpCkBAIC02MDUsMTIgKzY5MSwxMiBAQAogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZV9zdGRpbihzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpLCB3aXRoIG9ubHkgc3RkaW4KICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3M7JyArIFNFVEJJTkFSWSArICcnJ1xuaWYgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTFcXG4iLCByZXByKHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTNcXG4iLCByZXByKHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3M7JyArIFNFVEJJTkFSWSArIHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTFcXG4iLCByZXByKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTNcXG4iLCByZXByKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJycpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKICAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoImxpbmUxXG5saW5lM1xuIikKQEAgLTYyOCw2ICs3MTQsMzUgQEAKICAgICAgICAgcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXR1cm5jb2RlLCAwKQogCisgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlX3N0ZGluX3N0ZG91dF9zdGRlcnIoc2VsZik6CisgICAgICAgICMgdW5pdmVyc2FsIG5ld2xpbmVzIHRocm91Z2ggY29tbXVuaWNhdGUoKSwgd2l0aCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3M7JyArIFNFVEJJTkFSWSArIHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLmJ1ZmZlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiImxpbmUyXFxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lMlxcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5idWZmZXIucmVhZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiImxpbmU0XFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiImxpbmU1XFxyXFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lNlxcciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYiJlbGluZTdcXHJcXG56IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKKyAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoImxpbmUxXG5saW5lM1xuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImxpbmUxXG5saW5lMlxubGluZTNcbmxpbmU0XG5saW5lNVxuIiwgc3Rkb3V0KQorICAgICAgICAjIFB5dGhvbiBkZWJ1ZyBidWlsZCBwdXNoIHNvbWV0aGluZyBsaWtlICJbNDI0NDIgcmVmc11cbiIKKyAgICAgICAgIyB0byBzdGRlcnIgYXQgZXhpdCBvZiBzdWJwcm9jZXNzLgorICAgICAgICAjIERvbid0IHVzZSBhc3NlcnRTdGRlcnJFcXVhbCBiZWNhdXNlIGl0IHN0cmlwcyBDUiBhbmQgTEYgZnJvbSBvdXRwdXQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGRlcnIuc3RhcnRzd2l0aCgiZWxpbmUyXG5lbGluZTZcbmVsaW5lN1xuIikpCisKICAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXNfY29tbXVuaWNhdGVfZW5jb2RpbmdzKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgd29ya3MgZm9yIHZhcmlvdXMgZW5jb2RpbmdzLAogICAgICAgICAjIGluIHBhcnRpY3VsYXIgZm9yIGVuY29kaW5ncyBpbiB0aGUgVVRGLTE2IGFuZCBVVEYtMzIgZmFtaWxpZXMuCkBAIC02NTcsNyArNzcyLDYgQEAKICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKLQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICcxXG4yXG4zXG40JykKIAogICAgIGRlZiB0ZXN0X25vX2xlYWtpbmcoc2VsZik6CkBAIC03MTcsMzAgKzgzMSwzMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YnByb2Nlc3MubGlzdDJjbWRsaW5lKFsnYWInLCAnJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICdhYiAiIicpCiAKLQogICAgIGRlZiB0ZXN0X3BvbGwoc2VsZik6Ci0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgImltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDEpIl0pCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSBwLnBvbGwoKSBpcyBOb25lOgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0gICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgICMgV2UgZXhwZWN0IHRoYXQgdGhlIHBvbGwgbG9vcCBwcm9iYWJseSB3ZW50IGFyb3VuZCBhYm91dCAxMCB0aW1lcywKLSAgICAgICAgIyBidXQsIGJhc2VkIG9uIHN5c3RlbSBzY2hlZHVsaW5nIHdlIGNhbid0IGNvbnRyb2wsIGl0J3MgcG9zc2libGUKLSAgICAgICAgIyBwb2xsKCkgbmV2ZXIgcmV0dXJuZWQgTm9uZS4gIEl0ICJzaG91bGQgYmUiIHZlcnkgcmFyZSB0aGF0IGl0Ci0gICAgICAgICMgZGlkbid0IGdvIGFyb3VuZCBhdCBsZWFzdCB0d2ljZS4KLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoY291bnQsIDIpCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgb3M7IG9zLnJlYWQoMCwgMSkiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocC5wb2xsKCkpCisgICAgICAgIG9zLndyaXRlKHAuc3RkaW4uZmlsZW5vKCksIGInQScpCisgICAgICAgIHAud2FpdCgpCiAgICAgICAgICMgU3Vic2VxdWVudCBpbnZvY2F0aW9ucyBzaG91bGQganVzdCByZXR1cm4gdGhlIHJldHVybmNvZGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvbGwoKSwgMCkKIAotCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKLSAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiLCAiaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMikiXSkKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAicGFzcyJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCgpLCAwKQogICAgICAgICAjIFN1YnNlcXVlbnQgaW52b2NhdGlvbnMgc2hvdWxkIGp1c3QgcmV0dXJuIHRoZSByZXR1cm5jb2RlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KCksIDApCiAKKyAgICBkZWYgdGVzdF93YWl0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsICJpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgwLjEpIl0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCkgYXMgYzoKKyAgICAgICAgICAgIHAud2FpdCh0aW1lb3V0PTAuMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIjAuMDEiLCBzdHIoYy5leGNlcHRpb24pKSAgIyBGb3IgY292ZXJhZ2Ugb2YgX19zdHJfXy4KKyAgICAgICAgIyBTb21lIGhlYXZpbHkgbG9hZGVkIGJ1aWxkYm90cyAoc3BhcmMgRGViaWFuIDMueCkgcmVxdWlyZSB0aGlzIG11Y2gKKyAgICAgICAgIyB0aW1lIHRvIHN0YXJ0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCh0aW1lb3V0PTMpLCAwKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9idWZzaXplKHNlbGYpOgogICAgICAgICAjIGFuIGludmFsaWQgdHlwZSBvZiB0aGUgYnVmc2l6ZSBhcmd1bWVudCBzaG91bGQgcmFpc2UKQEAgLTgxOSwyNSArOTM1LDI5IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgJ3Bhc3MnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBwLndhaXQoKQogICAgICAgICBwLmNvbW11bmljYXRlKGIieCIgKiAyKioyMCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBzaWduYWwuU0lHQUxSTSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIHNpZ25hbC5TSUdVU1IxIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAna2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBvcy5raWxsIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHBpZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBvcy5nZXRwcGlkIikKICAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV9laW50cihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTI0OTM6IGNvbW11bmljYXRlKCkgc2hvdWxkIGhhbmRsZSBFSU5UUgogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgb2xkX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQotICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR0FMUk0sIG9sZF9oYW5kbGVyKQorICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHVVNSMSwgb2xkX2hhbmRsZXIpCiAKLSAgICAgICAgIyB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIGZvciAyIHNlY29uZHMKLSAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgJ2ltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDIpJ10KKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAnaW1wb3J0IG9zLCBzaWduYWw7JworICAgICAgICAgICAgICAgICdvcy5raWxsKG9zLmdldHBwaWQoKSwgc2lnbmFsLlNJR1VTUjEpJ10KICAgICAgICAgZm9yIHN0cmVhbSBpbiAoJ3N0ZG91dCcsICdzdGRlcnInKToKICAgICAgICAgICAgIGt3ID0ge3N0cmVhbTogc3VicHJvY2Vzcy5QSVBFfQogICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsICoqa3cpIGFzIHByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHdpbGwgYmUgaW50ZXJydXB0ZWQgYnkgU0lHQUxSTQorICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSB3aWxsIGJlIGludGVycnVwdGVkIGJ5IFNJR1VTUjEKICAgICAgICAgICAgICAgICBwcm9jZXNzLmNvbW11bmljYXRlKCkKIAogCkBAIC0xMzY4LDYgKzE0ODgsMTEgQEAKICAgICAgICAgZXhpdGNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoW2Fic19wcm9ncmFtLCAiLWMiLCAicGFzcyJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQogCisgICAgICAgICMgYWJzb2x1dGUgYnl0ZXMgcGF0aCBhcyBhIHN0cmluZworICAgICAgICBjbWQgPSBiIiciICsgYWJzX3Byb2dyYW0gKyBiIicgLWMgcGFzcyIKKyAgICAgICAgZXhpdGNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY21kLCBzaGVsbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCiAgICAgICAgICMgYnl0ZXMgcHJvZ3JhbSwgdW5pY29kZSBQQVRICiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUEFUSCJdID0gcGF0aApAQCAtMTU1MSw3ICsxNjc2LDcgQEAKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBwLnJldHVybmNvZGUsICJzaWdjaGlsZF9pZ25vcmUucHkgZXhpdGVkIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgbm9uLXplcm8gd2l0aCB0aGlzIGVycm9yOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIuZGVjb2RlKCd1dGY4JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyLmRlY29kZSgndXRmLTgnKSkKIAogICAgIGRlZiB0ZXN0X3NlbGVjdF91bmJ1ZmZlcmVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTQ1OTogYnVmc2l6ZT0wIHNob3VsZCByZWFsbHkgc2V0IHRoZSBwaXBlcyBhcwpAQCAtMTc5OCwyOCArMTkyMyw2IEBACiAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZS50ZWFyRG93bihzZWxmKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKGdldGF0dHIoc3VicHJvY2VzcywgJ19wb3NpeHN1YnByb2Nlc3MnLCBGYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAiX3Bvc2l4c3VicHJvY2VzcyBleHRlbnNpb24gbW9kdWxlIG5vdCBmb3VuZC4iKQotY2xhc3MgUHJvY2Vzc1Rlc3RDYXNlUE9TSVhQdXJlUHl0aG9uKFByb2Nlc3NUZXN0Q2FzZSwgUE9TSVhQcm9jZXNzVGVzdENhc2UpOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGdsb2JhbCBzdWJwcm9jZXNzCi0gICAgICAgIGFzc2VydCBzdWJwcm9jZXNzLl9wb3NpeHN1YnByb2Nlc3MKLSAgICAgICAgIyBSZWltcG9ydCBzdWJwcm9jZXNzIHdoaWxlIGZvcmNpbmcgX3Bvc2l4c3VicHJvY2VzcyB0byBub3QgZXhpc3QuCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJy4qX3Bvc2l4c3VicHJvY2VzcyAuKiBub3QgYmVpbmcgdXNlZC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykpOgotICAgICAgICAgICAgc3VicHJvY2VzcyA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgKLSAgICAgICAgICAgICAgICAgICAgJ3N1YnByb2Nlc3MnLCBibG9ja2VkPVsnX3Bvc2l4c3VicHJvY2VzcyddKQotICAgICAgICBhc3NlcnQgbm90IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZ2xvYmFsIHN1YnByb2Nlc3MKLSAgICAgICAgIyBSZWltcG9ydCBzdWJwcm9jZXNzIGFzIGl0IHNob3VsZCBiZSwgcmVzdG9yaW5nIG9yZGVyIHRvIHRoZSB1bml2ZXJzZS4KLSAgICAgICAgc3VicHJvY2VzcyA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnc3VicHJvY2VzcycpCi0gICAgICAgIGFzc2VydCBzdWJwcm9jZXNzLl9wb3NpeHN1YnByb2Nlc3MKLQotCiBjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgImVycm5vIGFuZCBFSU5UUiBtYWtlIG5vIHNlbnNlIG9uIHdpbmRvd3MiKQogICAgIGRlZiB0ZXN0X2VpbnRyX3JldHJ5X2NhbGwoc2VsZik6CkBAIC0xOTI4LDcgKzIwMzEsNiBAQAogICAgIHVuaXRfdGVzdHMgPSAoUHJvY2Vzc1Rlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgUE9TSVhQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBXaW4zMlByb2Nlc3NUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZVBPU0lYUHVyZVB5dGhvbiwKICAgICAgICAgICAgICAgICAgIENvbW1hbmRUZXN0cywKICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZU5vUG9sbCwKICAgICAgICAgICAgICAgICAgIEhlbHBlckZ1bmN0aW9uVGVzdHMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CmluZGV4IDA3ODAyZDYuLmZjY2NkZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CkBAIC05LDcgKzksNiBAQAogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MocXVpZXQ9VHJ1ZSk6CiAgICAgICAgICAgICBpbXBvcnQgYmRiCiAgICAgICAgICAgICBpbXBvcnQgY2dpdGIKLSAgICAgICAgICAgIGltcG9ydCBjb2RlCiAKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuYmNwcGNvbXBpbGVyCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmNjb21waWxlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggOTE0MjE2ZC4uZjY0NjljZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC04MSw2ICs4MSw1NSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRSgpLmYoKSwgJ0FFJykKIAorICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fc2V0KHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMTIzNzAKKyAgICAgICAgY2xhc3MgWChBKToKKyAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmYoKQorICAgICAgICAgICAgX19jbGFzc19fID0gNDEzCisgICAgICAgIHggPSBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmYoKSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19jbGFzc19fLCA0MTMpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19faW5zdGFuY2VtZXRob2Qoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNDg1NworICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydElzKFgoKS5mKCksIFgpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fY2xhc3NtZXRob2Qoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNDg1NworICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZihjbHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19zdGF0aWNtZXRob2Qoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNDg1NworICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWC5mKCksIFgpCisKKyAgICBkZWYgdGVzdF9vYnNjdXJlX3N1cGVyX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmKQorICAgICAgICBkZWYgZih4KToKKyAgICAgICAgICAgIGRlbCB4CisgICAgICAgICAgICBzdXBlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZiwgTm9uZSkKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIF9fY2xhc3NfXworICAgICAgICAgICAgICAgIGRlbCBfX2NsYXNzX18KKyAgICAgICAgICAgICAgICBzdXBlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgWCgpLmYpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTdXBlcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmVmNWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsMTk5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGVycm5vCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworVEVTVEZOID0gc3VwcG9ydC5URVNURk4KK1RFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQorCisKK2NsYXNzIFRlc3RTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisgICAgdGVhckRvd24gPSBzZXRVcAorCisgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJmdHBsaWIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1bml0dGVzdC5Ta2lwVGVzdCwgc3VwcG9ydC5pbXBvcnRfbW9kdWxlLCAiZm9vIikKKworICAgIGRlZiB0ZXN0X2ltcG9ydF9mcmVzaF9tb2R1bGUoc2VsZik6CisgICAgICAgIHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiZnRwbGliIikKKworICAgIGRlZiB0ZXN0X2dldF9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNlbGYsICJ0ZXN0X2dldF9hdHRyaWJ1dGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdF9nZXRfYXR0cmlidXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1bml0dGVzdC5Ta2lwVGVzdCwgc3VwcG9ydC5nZXRfYXR0cmlidXRlLCBzZWxmLCAiZm9vIikKKworICAgIEB1bml0dGVzdC5za2lwKCJmYWlsaW5nIGJ1aWxkYm90cyIpCisgICAgZGVmIHRlc3RfZ2V0X29yaWdpbmFsX3N0ZG91dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmdldF9vcmlnaW5hbF9zdGRvdXQoKSwgc3lzLnN0ZG91dCkKKworICAgIGRlZiB0ZXN0X3VubG9hZChzZWxmKToKKyAgICAgICAgaW1wb3J0IHNjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNjaGVkIiwgc3lzLm1vZHVsZXMpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCJzY2hlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNjaGVkIiwgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF91bmxpbmsoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X3JtdHJlZShzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVERJUk4pCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihURVNURElSTiwgVEVTVERJUk4pKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhURVNURElSTikpCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorCisgICAgZGVmIHRlc3RfZm9yZ2V0KHNlbGYpOgorICAgICAgICBtb2RfZmlsZW5hbWUgPSBURVNURk4gKyAnLnB5JworICAgICAgICB3aXRoIG9wZW4obW9kX2ZpbGVuYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBwcmludCgnZm9vID0gMScsIGZpbGU9ZikKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgc3lzLm1vZHVsZXMpCisKKyAgICAgICAgICAgIHN1cHBvcnQuZm9yZ2V0KFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsobW9kX2ZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfSE9TVChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgMCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZmluZF91bnVzZWRfcG9ydChzZWxmKToKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgcy5iaW5kKChzdXBwb3J0LkhPU1QsIHBvcnQpKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2JpbmRfcG9ydChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzKQorICAgICAgICBzLmxpc3RlbigxKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3RlbXBfY3dkKHNlbGYpOgorICAgICAgICBoZXJlID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKG5hbWU9VEVTVEZOKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksIFRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhURVNURk4pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksIGhlcmUpCisKKyAgICBkZWYgdGVzdF90ZW1wX2N3ZF9fY2hkaXJfd2FybmluZyhzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgdGhlIHdhcm5pbmcgbWVzc2FnZSB3aGVuIG9zLmNoZGlyKCkgZmFpbHMuIiIiCisgICAgICAgIHBhdGggPSBURVNURk4gKyAnX2RvZXNfbm90X2V4aXN0JworICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKSBhcyByZWNvcmRlcjoKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChwYXRoPXBhdGgsIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIG1lc3NhZ2VzID0gW3N0cih3Lm1lc3NhZ2UpIGZvciB3IGluIHJlY29yZGVyLndhcm5pbmdzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbJ3Rlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY2hhbmdlIHRoZSBDV0QgdG8gJyArIHBhdGhdKQorCisgICAgZGVmIHRlc3Rfc29ydGRpY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcG9ydC5zb3J0ZGljdCh7MzozLCAyOjIsIDE6MX0pLCAiezE6IDEsIDI6IDIsIDM6IDN9IikKKworICAgIGRlZiB0ZXN0X21ha2VfYmFkX2ZkKHNlbGYpOgorICAgICAgICBmZCA9IHN1cHBvcnQubWFrZV9iYWRfZmQoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorCisgICAgZGVmIHRlc3RfY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGNsYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yLCBzZWxmLCAiMSIpCisKKyAgICBkZWYgdGVzdF9DbGVhbkltcG9ydChzZWxmKToKKyAgICAgICAgaW1wb3J0IGltcG9ydGxpYgorICAgICAgICB3aXRoIHN1cHBvcnQuQ2xlYW5JbXBvcnQoImFzeW5jb3JlIik6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgiYXN5bmNvcmUiKQorCisgICAgZGVmIHRlc3RfRGlyc09uU3lzUGF0aChzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LkRpcnNPblN5c1BhdGgoJ2ZvbycsICdiYXInKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImZvbyIsIHN5cy5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmFyIiwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImZvbyIsIHN5cy5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJiYXIiLCBzeXMucGF0aCkKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVkX3N0ZG91dChzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3RkZXJyKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgczoKKyAgICAgICAgICAgIHByaW50KCJoZWxsbyIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsb1xuIikKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVkX3N0ZGluKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkaW4oKSBhcyBzOgorICAgICAgICAgICAgcHJpbnQoImhlbGxvIiwgZmlsZT1zeXMuc3RkaW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9nY19jb2xsZWN0KHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisgICAgZGVmIHRlc3RfcHl0aG9uX2lzX29wdGltaXplZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1cHBvcnQucHl0aG9uX2lzX29wdGltaXplZCgpLCBib29sKQorCisgICAgZGVmIHRlc3Rfc3dhcF9hdHRyKHNlbGYpOgorICAgICAgICBjbGFzcyBPYmo6CisgICAgICAgICAgICB4ID0gMQorICAgICAgICBvYmogPSBPYmooKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKG9iaiwgIngiLCA1KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLngsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLngsIDEpCisKKyAgICBkZWYgdGVzdF9zd2FwX2l0ZW0oc2VsZik6CisgICAgICAgIEQgPSB7Iml0ZW0iOjF9CisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2l0ZW0oRCwgIml0ZW0iLCA1KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbIml0ZW0iXSwgMSkKKworICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKKyAgICAjIG1ha2VfbGVnYWN5X3B5YworICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZAorICAgICMgcmVxdWlyZXMKKyAgICAjIGZjbXAKKyAgICAjIHVtYWtzCisgICAgIyBmaW5kZmlsZQorICAgICMgY2hlY2tfd2FybmluZ3MKKyAgICAjIEVudmlyb25tZW50VmFyR3VhcmQKKyAgICAjIFRyYW5zaWVudFJlc291cmNlCisgICAgIyB0cmFuc2llbnRfaW50ZXJuZXQKKyAgICAjIHJ1bl93aXRoX2xvY2FsZQorICAgICMgc2V0X21lbWxpbWl0CisgICAgIyBiaWdtZW10ZXN0CisgICAgIyBwcmVjaXNpb25iaWdtZW10ZXN0CisgICAgIyBiaWdhZGRyc3BhY2V0ZXN0CisgICAgIyByZXF1aXJlc19yZXNvdXJjZQorICAgICMgcnVuX2RvY3Rlc3QKKyAgICAjIHRocmVhZGluZ19jbGVhbnVwCisgICAgIyByZWFwX3RocmVhZHMKKyAgICAjIHJlYXBfY2hpbGRyZW4KKyAgICAjIHN0cmlwX3B5dGhvbl9zdGRlcnIKKyAgICAjIGFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncworICAgICMgY2FuX3N5bWxpbmsKKyAgICAjIHNraXBfdW5sZXNzX3N5bWxpbmsKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdHMgPSBbVGVzdFN1cHBvcnRdCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5cy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CmluZGV4IGE1Mjc2N2EuLjZlMGM2ZWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CkBAIC0zMDMsNiArMzAzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldGRsb3BlbmZsYWdzKCksIG9sZGZsYWdzKzEpCiAgICAgICAgICAgICBzeXMuc2V0ZGxvcGVuZmxhZ3Mob2xkZmxhZ3MpCiAKKyAgICBAdGVzdC5zdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9yZWZjb3VudChzZWxmKToKICAgICAgICAgIyBuIGhlcmUgbXVzdCBiZSBhIGdsb2JhbCBpbiBvcmRlciBmb3IgdGhpcyB0ZXN0IHRvIHBhc3Mgd2hpbGUKICAgICAgICAgIyB0cmFjaW5nIHdpdGggYSBweXRob24gZnVuY3Rpb24uICBUcmFjaW5nIGNhbGxzIFB5RnJhbWVfRmFzdFRvTG9jYWxzCkBAIC0zNDIsNyArMzQzLDcgQEAKICAgICAjIFRlc3Qgc3lzLl9jdXJyZW50X2ZyYW1lcygpIGluIGEgV0lUSF9USFJFQURTIGJ1aWxkLgogICAgIEB0ZXN0LnN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIGN1cnJlbnRfZnJhbWVzX3dpdGhfdGhyZWFkcyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHRocmVhZGluZywgX3RocmVhZAorICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKIAogICAgICAgICAjIFNwYXduIGEgdGhyZWFkIHRoYXQgYmxvY2tzIGF0IGEga25vd24gcGxhY2UuICBUaGVuIHRoZSBtYWluCkBAIC0zNTYsNyArMzU3LDcgQEAKICAgICAgICAgICAgIGc0NTYoKQogCiAgICAgICAgIGRlZiBnNDU2KCk6Ci0gICAgICAgICAgICB0aHJlYWRfaW5mby5hcHBlbmQoX3RocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgICAgIHRocmVhZF9pbmZvLmFwcGVuZCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAgICAgICAgICAgICBlbnRlcmVkX2cuc2V0KCkKICAgICAgICAgICAgIGxlYXZlX2cud2FpdCgpCiAKQEAgLTM3Miw3ICszNzMsNyBAQAogCiAgICAgICAgIGQgPSBzeXMuX2N1cnJlbnRfZnJhbWVzKCkKIAotICAgICAgICBtYWluX2lkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICBtYWluX2lkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWFpbl9pZCwgZCkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0aHJlYWRfaWQsIGQpCiAKQEAgLTQxOCw2ICs0MTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzLCB0dXBsZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5jb3B5cmlnaHQsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5leGVjX3ByZWZpeCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmJhc2VfZXhlY19wcmVmaXgsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5leGVjdXRhYmxlLCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN5cy5mbG9hdF9pbmZvKSwgMTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmZsb2F0X2luZm8ucmFkaXgsIDIpCkBAIC00NDYsOCArNDQ4LDEwIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5tYXhzaXplLCBpbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMubWF4dW5pY29kZSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5tYXh1bmljb2RlLCAweDEwRkZGRikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5wbGF0Zm9ybSwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLnByZWZpeCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmJhc2VfcHJlZml4LCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMudmVyc2lvbiwgc3RyKQogICAgICAgICB2aSA9IHN5cy52ZXJzaW9uX2luZm8KICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZpWzpdLCB0dXBsZSkKQEAgLTQ3Myw2ICs0NzcsMTQgQEAKICAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYWJpZmxhZ3MsIHN0cikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3lzLCAndGhyZWFkX2luZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRfaW5mbyhzZWxmKToKKyAgICAgICAgaW5mbyA9IHN5cy50aHJlYWRfaW5mbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpbmZvKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihpbmZvLm5hbWUsICgnbnQnLCAnb3MyJywgJ3B0aHJlYWQnLCAnc29sYXJpcycsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEluKGluZm8ubG9jaywgKCdzZW1hcGhvcmUnLCAnbXV0ZXgrY29uZCcsIE5vbmUpKQorCiAgICAgZGVmIHRlc3RfNDM1ODEoc2VsZik6CiAgICAgICAgICMgQ2FuJ3QgdXNlIHN5cy5zdGRvdXQsIGFzIHRoaXMgaXMgYSBTdHJpbmdJTyBvYmplY3Qgd2hlbgogICAgICAgICAjIHRoZSB0ZXN0IHJ1bnMgdW5kZXIgcmVncnRlc3QuCkBAIC01MDAsNyArNTEyLDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19mbGFncyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5mbGFncykKLSAgICAgICAgYXR0cnMgPSAoImRlYnVnIiwgImRpdmlzaW9uX3dhcm5pbmciLAorICAgICAgICBhdHRycyA9ICgiZGVidWciLAogICAgICAgICAgICAgICAgICAiaW5zcGVjdCIsICJpbnRlcmFjdGl2ZSIsICJvcHRpbWl6ZSIsICJkb250X3dyaXRlX2J5dGVjb2RlIiwKICAgICAgICAgICAgICAgICAgIm5vX3VzZXJfc2l0ZSIsICJub19zaXRlIiwgImlnbm9yZV9lbnZpcm9ubWVudCIsICJ2ZXJib3NlIiwKICAgICAgICAgICAgICAgICAgImJ5dGVzX3dhcm5pbmciLCAicXVpZXQiLCAiaGFzaF9yYW5kb21pemF0aW9uIikKQEAgLTUzMiw2ICs1NDQsOCBAQAogICAgICAgICBvdXQgPSBwLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYic/JykKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgdmVudi1jb21wYXRpYmxlJykKICAgICBkZWYgdGVzdF9leGVjdXRhYmxlKHNlbGYpOgogICAgICAgICAjIHN5cy5leGVjdXRhYmxlIHNob3VsZCBiZSBhYnNvbHV0ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSksIHN5cy5leGVjdXRhYmxlKQpAQCAtNTY4LDYgKzU4MiwzNCBAQAogICAgICAgICAgICAgZXhwZWN0ZWQgPSBOb25lCiAgICAgICAgIHNlbGYuY2hlY2tfZnNlbmNvZGluZyhmc19lbmNvZGluZywgZXhwZWN0ZWQpCiAKKyAgICBkZWYgdGVzdF9pbXBsZW1lbnRhdGlvbihzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3QgYXBwbGllcyB0byBhbGwgaW1wbGVtZW50YXRpb25zIGVxdWFsbHkuCisKKyAgICAgICAgbGV2ZWxzID0geydhbHBoYSc6IDB4QSwgJ2JldGEnOiAweEIsICdjYW5kaWRhdGUnOiAweEMsICdmaW5hbCc6IDB4Rn0KKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICduYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ3ZlcnNpb24nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnaGV4dmVyc2lvbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnKSkKKworICAgICAgICB2ZXJzaW9uID0gc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uWzoyXSwgKHZlcnNpb24ubWFqb3IsIHZlcnNpb24ubWlub3IpKQorCisgICAgICAgIGhleHZlcnNpb24gPSAodmVyc2lvbi5tYWpvciA8PCAyNCB8IHZlcnNpb24ubWlub3IgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24ubWljcm8gPDwgOCB8IGxldmVsc1t2ZXJzaW9uLnJlbGVhc2VsZXZlbF0gPDwgNCB8CisgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi5zZXJpYWwgPDwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuaW1wbGVtZW50YXRpb24uaGV4dmVyc2lvbiwgaGV4dmVyc2lvbikKKworICAgICAgICAjIFBFUCA0MjEgcmVxdWlyZXMgdGhhdCAubmFtZSBiZSBsb3dlciBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lLmxvd2VyKCkpCisKKyAgICBkZWYgdGVzdF9kZWJ1Z21hbGxvY3N0YXRzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkKKyAgICAgICAgZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKKyAgICAgICAgYXJncyA9IFsnLWMnLCAnaW1wb3J0IHN5czsgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCknXQorICAgICAgICByZXQsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiImZyZWUgUHlEaWN0T2JqZWN0cyIsIGVycikKIAogY2xhc3MgU2l6ZW9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU5MSwxMiArNjMzLDEyIEBACiAgICAgICAgICMgYm9vbCBvYmplY3RzIGFyZSBub3QgZ2MgdHJhY2tlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQogICAgICAgICAjIGJ1dCBsaXN0cyBhcmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFtdKSwgdnNpemUoJ1BQJykgKyBnY19oZWFkZXJfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFtdKSwgdnNpemUoJ1BuJykgKyBnY19oZWFkZXJfc2l6ZSkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHZzaXplID0gdGVzdC5zdXBwb3J0LmNhbGN2b2Jqc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSwgLTEpLCB2c2l6ZSgnJykgKyBzZWxmLmxvbmdkaWdpdCkKKyAgICAgICAgc2l6ZSA9IHRlc3Quc3VwcG9ydC5jYWxjdm9ianNpemUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFRydWUpLCBzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSwgLTEpLCBzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQogCiAgICAgZGVmIHRlc3Rfb2JqZWN0dHlwZXMoc2VsZik6CiAgICAgICAgICMgY2hlY2sgYWxsIHR5cGVzIGRlZmluZWQgaW4gT2JqZWN0cy8KQEAgLTYxMyw5ICs2NTUsOSBAQAogICAgICAgICBzYW1wbGVzID0gW2InJywgYid1JyoxMDAwMDBdCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIHggPSBieXRlYXJyYXkoc2FtcGxlKQotICAgICAgICAgICAgY2hlY2soeCwgdnNpemUoJ2lQUCcpICsgeC5fX2FsbG9jX18oKSkKKyAgICAgICAgICAgIGNoZWNrKHgsIHZzaXplKCdpblAnKSArIHguX19hbGxvY19fKCkpCiAgICAgICAgICMgYnl0ZWFycmF5X2l0ZXJhdG9yCi0gICAgICAgIGNoZWNrKGl0ZXIoYnl0ZWFycmF5KCkpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhpdGVyKGJ5dGVhcnJheSgpKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBjZWxsCiAgICAgICAgIGRlZiBnZXRfY2VsbCgpOgogICAgICAgICAgICAgeCA9IDQyCkBAIC02MjQsMjcgKzY2NiwzMyBAQAogICAgICAgICAgICAgcmV0dXJuIGlubmVyCiAgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jbG9zdXJlX19bMF0sIHNpemUoJ1AnKSkKICAgICAgICAgIyBjb2RlCi0gICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzVpOFBpM1AnKSkKKyAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBkZWYgZ2V0X2NlbGwyKHgpOgorICAgICAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSArIDEpCiAgICAgICAgICMgY29tcGxleAogICAgICAgICBjaGVjayhjb21wbGV4KDAsMSksIHNpemUoJzJkJykpCiAgICAgICAgICMgbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQotICAgICAgICBjaGVjayhzdHIubG93ZXIsIHNpemUoJzJQUCcpKQorICAgICAgICBjaGVjayhzdHIubG93ZXIsIHNpemUoJzNQUCcpKQogICAgICAgICAjIGNsYXNzbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICAjIFhYWAogICAgICAgICAjIG1lbWJlcl9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgaW1wb3J0IGRhdGV0aW1lCi0gICAgICAgIGNoZWNrKGRhdGV0aW1lLnRpbWVkZWx0YS5kYXlzLCBzaXplKCcyUFAnKSkKKyAgICAgICAgY2hlY2soZGF0ZXRpbWUudGltZWRlbHRhLmRheXMsIHNpemUoJzNQUCcpKQogICAgICAgICAjIGdldHNldF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgaW1wb3J0IGNvbGxlY3Rpb25zCi0gICAgICAgIGNoZWNrKGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeSwgc2l6ZSgnMlBQJykpCisgICAgICAgIGNoZWNrKGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeSwgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgd3JhcHBlcl9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKLSAgICAgICAgY2hlY2soaW50Ll9fYWRkX18sIHNpemUoJzJQMlAnKSkKKyAgICAgICAgY2hlY2soaW50Ll9fYWRkX18sIHNpemUoJzNQMlAnKSkKICAgICAgICAgIyBtZXRob2Qtd3JhcHBlciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgIGNoZWNrKHt9Ll9faXRlcl9fLCBzaXplKCcyUCcpKQogICAgICAgICAjIGRpY3QKLSAgICAgICAgY2hlY2soe30sIHNpemUoJzNQMlAnICsgOConUDJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduMlAnICsgJzJuUG4nICsgOConbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnM1AyUCcgKyA4KidQMlAnKSArIDE2KnN0cnVjdC5jYWxjc2l6ZSgnUDJQJykpCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnICsgJzJuUG4nKSArIDE2KnN0cnVjdC5jYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXlpdGVyYXRvcgogICAgICAgICBjaGVjayh7fS5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LXZhbHVlaXRlcmF0b3IKQEAgLTY1MiwxOCArNzAwLDE4IEBACiAgICAgICAgICMgZGljdGlvbmFyeS1pdGVtaXRlcmF0b3IKICAgICAgICAgY2hlY2soe30uaXRlbXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnkgaXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcih7fSksIHNpemUoJ1AyUFBQJykpCisgICAgICAgIGNoZWNrKGl0ZXIoe30pLCBzaXplKCdQMm5QbicpKQogICAgICAgICAjIGRpY3Rwcm94eQogICAgICAgICBjbGFzcyBDKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2soQy5fX2RpY3RfXywgc2l6ZSgnUCcpKQogICAgICAgICAjIEJhc2VFeGNlcHRpb24KLSAgICAgICAgY2hlY2soQmFzZUV4Y2VwdGlvbigpLCBzaXplKCc1UCcpKQorICAgICAgICBjaGVjayhCYXNlRXhjZXB0aW9uKCksIHNpemUoJzVQaScpKQogICAgICAgICAjIFVuaWNvZGVFbmNvZGVFcnJvcgotICAgICAgICBjaGVjayhVbmljb2RlRW5jb2RlRXJyb3IoIiIsICIiLCAwLCAwLCAiIiksIHNpemUoJzVQIDJQMlBQJykpCisgICAgICAgIGNoZWNrKFVuaWNvZGVFbmNvZGVFcnJvcigiIiwgIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgVW5pY29kZURlY29kZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVEZWNvZGVFcnJvcigiIiwgYiIiLCAwLCAwLCAiIiksIHNpemUoJzVQIDJQMlBQJykpCisgICAgICAgIGNoZWNrKFVuaWNvZGVEZWNvZGVFcnJvcigiIiwgYiIiLCAwLCAwLCAiIiksIHNpemUoJzVQaSAyUDJuUCcpKQogICAgICAgICAjIFVuaWNvZGVUcmFuc2xhdGVFcnJvcgotICAgICAgICBjaGVjayhVbmljb2RlVHJhbnNsYXRlRXJyb3IoIiIsIDAsIDEsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZVRyYW5zbGF0ZUVycm9yKCIiLCAwLCAxLCAiIiksIHNpemUoJzVQaSAyUDJuUCcpKQogICAgICAgICAjIGVsbGlwc2VzCiAgICAgICAgIGNoZWNrKEVsbGlwc2lzLCBzaXplKCcnKSkKICAgICAgICAgIyBFbmNvZGluZ01hcApAQCAtNjcxLDkgKzcxOSw5IEBACiAgICAgICAgIHggPSBjb2RlY3MuY2hhcm1hcF9idWlsZChlbmNvZGluZ3MuaXNvODg1OV8zLmRlY29kaW5nX3RhYmxlKQogICAgICAgICBjaGVjayh4LCBzaXplKCczMkIyaUInKSkKICAgICAgICAgIyBlbnVtZXJhdGUKLSAgICAgICAgY2hlY2soZW51bWVyYXRlKFtdKSwgc2l6ZSgnbDNQJykpCisgICAgICAgIGNoZWNrKGVudW1lcmF0ZShbXSksIHNpemUoJ24zUCcpKQogICAgICAgICAjIHJldmVyc2UKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ25QJykpCiAgICAgICAgICMgZmxvYXQKICAgICAgICAgY2hlY2soZmxvYXQoMCksIHNpemUoJ2QnKSkKICAgICAgICAgIyBzeXMuZmxvYXRpbmZvCkBAIC02ODksNyArNzM3LDcgQEAKICAgICAgICAgY2hlY2soeCwgdnNpemUoJzEyUDNpJyArIENPX01BWEJMT0NLUyonM2knICsgJ1AnICsgZXh0cmFzKidQJykpCiAgICAgICAgICMgZnVuY3Rpb24KICAgICAgICAgZGVmIGZ1bmMoKTogcGFzcwotICAgICAgICBjaGVjayhmdW5jLCBzaXplKCcxMVAnKSkKKyAgICAgICAgY2hlY2soZnVuYywgc2l6ZSgnMTJQJykpCiAgICAgICAgIGNsYXNzIGMoKToKICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgIGRlZiBmb28oKToKQEAgLTY5OCwxMiArNzQ2LDEyIEBACiAgICAgICAgICAgICBkZWYgYmFyKGNscyk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIyBzdGF0aWNtZXRob2QKLSAgICAgICAgICAgIGNoZWNrKGZvbywgc2l6ZSgnUCcpKQorICAgICAgICAgICAgY2hlY2soZm9vLCBzaXplKCdQUCcpKQogICAgICAgICAgICAgIyBjbGFzc21ldGhvZAotICAgICAgICAgICAgY2hlY2soYmFyLCBzaXplKCdQJykpCisgICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1BQJykpCiAgICAgICAgICMgZ2VuZXJhdG9yCiAgICAgICAgIGRlZiBnZXRfZ2VuKCk6IHlpZWxkIDEKLSAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQaTJQJykpCisgICAgICAgIGNoZWNrKGdldF9nZW4oKSwgc2l6ZSgnUGIyUCcpKQogICAgICAgICAjIGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoJ2FiYycpLCBzaXplKCdsUCcpKQogICAgICAgICAjIGNhbGxhYmxlLWl0ZXJhdG9yCkBAIC03MTIsNyArNzYwLDcgQEAKICAgICAgICAgIyBsaXN0CiAgICAgICAgIHNhbXBsZXMgPSBbW10sIFsxLDIsM10sIFsnMScsICcyJywgJzMnXV0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgotICAgICAgICAgICAgY2hlY2soc2FtcGxlLCB2c2l6ZSgnUFAnKSArIGxlbihzYW1wbGUpKnNlbGYuUCkKKyAgICAgICAgICAgIGNoZWNrKHNhbXBsZSwgdnNpemUoJ1BuJykgKyBsZW4oc2FtcGxlKSpzZWxmLlApCiAgICAgICAgICMgc29ydHdyYXBwZXIgKGxpc3QpCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgY21wd3JhcHBlciAobGlzdCkKQEAgLTcyMCw3ICs3NjgsNyBAQAogICAgICAgICAjIGxpc3RpdGVyYXRvciAobGlzdCkKICAgICAgICAgY2hlY2soaXRlcihbXSksIHNpemUoJ2xQJykpCiAgICAgICAgICMgbGlzdHJldmVyc2VpdGVyYXRvciAobGlzdCkKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoW10pLCBzaXplKCdsUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZChbXSksIHNpemUoJ25QJykpCiAgICAgICAgICMgbG9uZwogICAgICAgICBjaGVjaygwLCB2c2l6ZSgnJykpCiAgICAgICAgIGNoZWNrKDEsIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQpAQCAtNzMwLDkgKzc3OCw5IEBACiAgICAgICAgIGNoZWNrKGludChQeUxvbmdfQkFTRSoqMi0xKSwgdnNpemUoJycpICsgMipzZWxmLmxvbmdkaWdpdCkKICAgICAgICAgY2hlY2soaW50KFB5TG9uZ19CQVNFKioyKSwgdnNpemUoJycpICsgMypzZWxmLmxvbmdkaWdpdCkKICAgICAgICAgIyBtZW1vcnl2aWV3Ci0gICAgICAgIGNoZWNrKG1lbW9yeXZpZXcoYicnKSwgc2l6ZSgnUFAyUDJpN1AnKSkKKyAgICAgICAgY2hlY2sobWVtb3J5dmlldyhiJycpLCBzaXplKCdQbmluIDJQMm4yaTVQIDNjUG4nKSkKICAgICAgICAgIyBtb2R1bGUKLSAgICAgICAgY2hlY2sodW5pdHRlc3QsIHNpemUoJzNQJykpCisgICAgICAgIGNoZWNrKHVuaXR0ZXN0LCBzaXplKCdQblAnKSkKICAgICAgICAgIyBOb25lCiAgICAgICAgIGNoZWNrKE5vbmUsIHNpemUoJycpKQogICAgICAgICAjIE5vdEltcGxlbWVudGVkVHlwZQpAQCAtNzUxLDcgKzc5OSw3IEBACiAgICAgICAgICMgcmFuZ2VpdGVyYXRvcgogICAgICAgICBjaGVjayhpdGVyKHJhbmdlKDEpKSwgc2l6ZSgnNGwnKSkKICAgICAgICAgIyByZXZlcnNlCi0gICAgICAgIGNoZWNrKHJldmVyc2VkKCcnKSwgc2l6ZSgnUFAnKSkKKyAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCduUCcpKQogICAgICAgICAjIHJhbmdlCiAgICAgICAgIGNoZWNrKHJhbmdlKDEpLCBzaXplKCc0UCcpKQogICAgICAgICBjaGVjayhyYW5nZSg2NjAwMCksIHNpemUoJzRQJykpCkBAIC03NTksNyArODA3LDcgQEAKICAgICAgICAgIyBmcm96ZW5zZXQKICAgICAgICAgUHlTZXRfTUlOU0laRSA9IDgKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgcmFuZ2UoMTApLCByYW5nZSg1MCldCi0gICAgICAgIHMgPSBzaXplKCczUDJQJyArIFB5U2V0X01JTlNJWkUqJ1BQJyArICdQUCcpCisgICAgICAgIHMgPSBzaXplKCczbjJQJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICduUCcpCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIG1pbnVzZWQgPSBsZW4oc2FtcGxlKQogICAgICAgICAgICAgaWYgbWludXNlZCA9PSAwOiB0bXAgPSAxCkBAIC03NzMsMTAgKzgyMSwxMCBAQAogICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzKQogICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCdsUCcpKQotICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ2xQJykpCisgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnblAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhmcm96ZW5zZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCduUCcpKQogICAgICAgICAjIHNldGl0ZXJhdG9yCi0gICAgICAgIGNoZWNrKGl0ZXIoc2V0KCkpLCBzaXplKCdQM1AnKSkKKyAgICAgICAgY2hlY2soaXRlcihzZXQoKSksIHNpemUoJ1AzbicpKQogICAgICAgICAjIHNsaWNlCiAgICAgICAgIGNoZWNrKHNsaWNlKDApLCBzaXplKCczUCcpKQogICAgICAgICAjIHN1cGVyCkBAIC03ODUsMjggKzgzMyw1NiBAQAogICAgICAgICBjaGVjaygoKSwgdnNpemUoJycpKQogICAgICAgICBjaGVjaygoMSwyLDMpLCB2c2l6ZSgnJykgKyAzKnNlbGYuUCkKICAgICAgICAgIyB0eXBlCi0gICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5TnVtYmVyTWV0aG9kcyArIFB5TWFwcGluZ01ldGhvZHMgKwotICAgICAgICAjICBQeVNlcXVlbmNlTWV0aG9kcyArIFB5QnVmZmVyUHJvY3MpCi0gICAgICAgIHMgPSB2c2l6ZSgnUDJQMTVQbDRQUDlQUDExUEknKSArIHN0cnVjdC5jYWxjc2l6ZSgnMTZQaTE3UCAzUCAxMFAgMlAgMlAnKQorICAgICAgICAjIHN0YXRpYyB0eXBlOiBQeVR5cGVPYmplY3QKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSScpCiAgICAgICAgIGNoZWNrKGludCwgcykKKyAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCisgICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcyArIDRQKQorICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykgKyBzdHJ1Y3QuY2FsY3NpemUoJzM0UCAzUCAxMFAgMlAgNFAnKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCisgICAgICAgIHMgKz0gc3RydWN0LmNhbGNzaXplKCIyblBuIikgKyA0KnN0cnVjdC5jYWxjc2l6ZSgibjJQIikKICAgICAgICAgIyBjbGFzcwogICAgICAgICBjbGFzcyBuZXdzdHlsZWNsYXNzKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcywgcykKKyAgICAgICAgIyBkaWN0IHdpdGggc2hhcmVkIGtleXMKKyAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcygpLl9fZGljdF9fLCBzaXplKCduMlAnICsgJzJuUG4nKSkKICAgICAgICAgIyB1bmljb2RlCi0gICAgICAgIHVzaXplID0gbGVuKCdcMCcuZW5jb2RlKCd1bmljb2RlLWludGVybmFsJykpCi0gICAgICAgIHNhbXBsZXMgPSBbJycsICcxJyoxMDBdCi0gICAgICAgICMgd2UgbmVlZCB0byB0ZXN0IGZvciBib3RoIHNpemVzLCBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgdGhlIHN0cmluZwotICAgICAgICAjIGhhcyBiZWVuIGNhY2hlZAorICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQorICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgorICAgICAgICAjIHdjaGFyX3Qgb3IgVVRGLTggcmVwcmVzZW50YXRpb25zCisgICAgICAgIHNhbXBsZXMgPSBbJzEnKjEwMCwgJ1x4ZmYnKjUwLAorICAgICAgICAgICAgICAgICAgICdcdTAxMDAnKjQwLCAnXHVmZmZmJyoxMDAsCisgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTAwMDAnKjMwLCAnXFUwMDEwZmZmZicqMTAwXQorICAgICAgICBhc2NpaWZpZWxkcyA9ICJubmlQIgorICAgICAgICBjb21wYWN0ZmllbGRzID0gYXNjaWlmaWVsZHMgKyAiblBuIgorICAgICAgICB1bmljb2RlZmllbGRzID0gY29tcGFjdGZpZWxkcyArICJQIgogICAgICAgICBmb3IgcyBpbiBzYW1wbGVzOgotICAgICAgICAgICAgYmFzaWNzaXplID0gIHNpemUoJ1BQUGlQJykgKyB1c2l6ZSAqIChsZW4ocykgKyAxKQotICAgICAgICAgICAgY2hlY2socywgYmFzaWNzaXplKQorICAgICAgICAgICAgbWF4Y2hhciA9IG9yZChtYXgocykpCisgICAgICAgICAgICBpZiBtYXhjaGFyIDwgMTI4OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGFzY2lpZmllbGRzKSArIGxlbihzKSArIDEKKyAgICAgICAgICAgIGVsaWYgbWF4Y2hhciA8IDI1NjoKKyAgICAgICAgICAgICAgICBMID0gc2l6ZShjb21wYWN0ZmllbGRzKSArIGxlbihzKSArIDEKKyAgICAgICAgICAgIGVsaWYgbWF4Y2hhciA8IDY1NTM2OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGNvbXBhY3RmaWVsZHMpICsgMioobGVuKHMpICsgMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoY29tcGFjdGZpZWxkcykgKyA0KihsZW4ocykgKyAxKQorICAgICAgICAgICAgY2hlY2socywgTCkKKyAgICAgICAgIyB2ZXJpZnkgdGhhdCB0aGUgVVRGLTggc2l6ZSBpcyBhY2NvdW50ZWQgZm9yCisgICAgICAgIHMgPSBjaHIoMHg0MDAwKSAgICMgNCBieXRlcyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24KKyAgICAgICAgY2hlY2socywgc2l6ZShjb21wYWN0ZmllbGRzKSArIDQpCisgICAgICAgICMgY29tcGlsZSgpIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgVVRGLTgKKyAgICAgICAgIyByZXByZXNlbnRhdGlvbiBhcyBhIHNpZGUgZWZmZWN0CisgICAgICAgIGNvbXBpbGUocywgIjxzdGRpbj4iLCAiZXZhbCIpCisgICAgICAgIGNoZWNrKHMsIHNpemUoY29tcGFjdGZpZWxkcykgKyA0ICsgNCkKKyAgICAgICAgIyBUT0RPOiBhZGQgY2hlY2sgdGhhdCBmb3JjZXMgdGhlIHByZXNlbmNlIG9mIHdjaGFyX3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyBUT0RPOiBhZGQgY2hlY2sgdGhhdCBmb3JjZXMgbGF5b3V0IG9mIHVuaWNvZGVmaWVsZHMKICAgICAgICAgIyB3ZWFrcmVmCiAgICAgICAgIGltcG9ydCB3ZWFrcmVmCi0gICAgICAgIGNoZWNrKHdlYWtyZWYucmVmKGludCksIHNpemUoJzJQbDJQJykpCisgICAgICAgIGNoZWNrKHdlYWtyZWYucmVmKGludCksIHNpemUoJzJQbjJQJykpCiAgICAgICAgICMgd2Vha3Byb3h5CiAgICAgICAgICMgWFhYCiAgICAgICAgICMgd2Vha2NhbGxhYmxlcHJveHkKLSAgICAgICAgY2hlY2sod2Vha3JlZi5wcm94eShpbnQpLCBzaXplKCcyUGwyUCcpKQorICAgICAgICBjaGVjayh3ZWFrcmVmLnByb3h5KGludCksIHNpemUoJzJQbjJQJykpCiAKICAgICBkZWYgdGVzdF9weXRob250eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBQeXRob24vCkBAIC04MTUsMTAgKzg5MSw3IEBACiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgIyBfYXN0LkFTVAogICAgICAgICBpbXBvcnQgX2FzdAotICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCcnKSkKLSAgICAgICAgIyBpbXAuTnVsbEltcG9ydGVyCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgY2hlY2soaW1wLk51bGxJbXBvcnRlcihzZWxmLmZpbGUubmFtZSksIHNpemUoJycpKQorICAgICAgICBjaGVjayhfYXN0LkFTVCgpLCBzaXplKCdQJykpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQppbmRleCBlYTJiYjI5Li5mZGY5NThjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQpAQCAtMjUxLDYgKzI1MSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnVzaW5nX2djID0gZ2MuaXNlbmFibGVkKCkKICAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnVzaW5nX2djOgpAQCAtMzg5LDYgKzM5MCw5IEBACiAKIAogY2xhc3MgUmFpc2luZ1RyYWNlRnVuY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQorCiAgICAgZGVmIHRyYWNlKHNlbGYsIGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICAgIiIiQSB0cmFjZSBmdW5jdGlvbiB0aGF0IHJhaXNlcyBhbiBleGNlcHRpb24gaW4gcmVzcG9uc2UgdG8gYQogICAgICAgICBzcGVjaWZpYyB0cmFjZSBldmVudC4iIiIKQEAgLTY5Niw2ICs3MDAsMTAgQEAKIAogCiBjbGFzcyBKdW1wVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorCiAgICAgZGVmIGNvbXBhcmVfanVtcF9vdXRwdXQoc2VsZiwgZXhwZWN0ZWQsIHJlY2VpdmVkKToKICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoICJPdXRwdXRzIGRvbid0IG1hdGNoOlxuIiArCkBAIC03NDcsNiArNzU1LDggQEAKICAgICBkZWYgdGVzdF8xOF9ub19qdW1wX3RvX25vbl9pbnRlZ2VycyhzZWxmKToKICAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX3RvX25vbl9pbnRlZ2VycykKICAgICBkZWYgdGVzdF8xOV9ub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oc2VsZik6CisgICAgICAgICMgTXVzdCBzZXQgc3lzLnNldHRyYWNlKE5vbmUpIGluIHNldFVwKCksIGVsc2UgY29uZGl0aW9uIGlzIG5vdAorICAgICAgICAjIHRyaWdnZXJlZC4KICAgICAgICAgbm9fanVtcF93aXRob3V0X3RyYWNlX2Z1bmN0aW9uKCkKICAgICBkZWYgdGVzdF9qdW1wX2Fjcm9zc193aXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBhYWJiNmZhLi45MjE5MzYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQpAQCAtMSwxMSArMSw5IEBACi0iIiJUZXN0cyBmb3Igc3lzY29uZmlnLiIiIgotCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzaHV0aWwKLWZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHkKK2Zyb20gY29weSBpbXBvcnQgY29weQogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgVEVTVEZOLCB1bmxpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkX3N0ZG91dCwgc2tpcF91bmxlc3Nfc3ltbGluaykKQEAgLTE1LDExICsxMywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICBnZXRfcGF0aCwgZ2V0X3BhdGhfbmFtZXMsIF9JTlNUQUxMX1NDSEVNRVMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfZGVmYXVsdF9zY2hlbWUsIF9leHBhbmRfdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NjaGVtZV9uYW1lcywgZ2V0X2NvbmZpZ192YXIsIF9tYWluKQoraW1wb3J0IF9vc3hfc3VwcG9ydAogCiBjbGFzcyBUZXN0U3lzQ29uZmlnKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiTWFrZSBhIGNvcHkgb2Ygc3lzLnBhdGgiIiIKICAgICAgICAgc3VwZXIoVGVzdFN5c0NvbmZpZywgc2VsZikuc2V0VXAoKQogICAgICAgICBzZWxmLnN5c19wYXRoID0gc3lzLnBhdGhbOl0KICAgICAgICAgIyBwYXRjaGluZyBvcy51bmFtZQpAQCAtMjgsNyArMjYsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5hbWUgPSBvcy51bmFtZSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnVuYW1lID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fdW5hbWUgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9zZXRfdW5hbWUoKCcnLCkqNSkKICAgICAgICAgb3MudW5hbWUgPSBzZWxmLl9nZXRfdW5hbWUKICAgICAgICAgIyBzYXZpbmcgdGhlIGVudmlyb25tZW50CiAgICAgICAgIHNlbGYubmFtZSA9IG9zLm5hbWUKQEAgLTM4LDExICszNiwxNiBAQAogICAgICAgICBzZWxmLmpvaW4gPSBvcy5wYXRoLmpvaW4KICAgICAgICAgc2VsZi5pc2FicyA9IG9zLnBhdGguaXNhYnMKICAgICAgICAgc2VsZi5zcGxpdGRyaXZlID0gb3MucGF0aC5zcGxpdGRyaXZlCi0gICAgICAgIHNlbGYuX2NvbmZpZ192YXJzID0gY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQotICAgICAgICBzZWxmLm9sZF9lbnZpcm9uID0gZGVlcGNvcHkob3MuZW52aXJvbikKKyAgICAgICAgc2VsZi5fY29uZmlnX3ZhcnMgPSBzeXNjb25maWcuX0NPTkZJR19WQVJTLCBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCisgICAgICAgIHNlbGYuX2FkZGVkX2VudnZhcnMgPSBbXQorICAgICAgICBzZWxmLl9jaGFuZ2VkX2VudnZhcnMgPSBbXQorICAgICAgICBmb3IgdmFyIGluICgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJywgJ1BBVEgnKToKKyAgICAgICAgICAgIGlmIHZhciBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZWRfZW52dmFycy5hcHBlbmQoKHZhciwgb3MuZW52aXJvblt2YXJdKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fYWRkZWRfZW52dmFycy5hcHBlbmQodmFyKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAiIiJSZXN0b3JlIHN5cy5wYXRoIiIiCiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aAogICAgICAgICBzZWxmLl9jbGVhbnVwX3Rlc3RmbigpCiAgICAgICAgIGlmIHNlbGYudW5hbWUgaXMgbm90IE5vbmU6CkBAIC01NiwxOSArNTksMTggQEAKICAgICAgICAgb3MucGF0aC5qb2luID0gc2VsZi5qb2luCiAgICAgICAgIG9zLnBhdGguaXNhYnMgPSBzZWxmLmlzYWJzCiAgICAgICAgIG9zLnBhdGguc3BsaXRkcml2ZSA9IHNlbGYuc3BsaXRkcml2ZQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gY29weShzZWxmLl9jb25maWdfdmFycykKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5vbGRfZW52aXJvbi5pdGVtcygpOgotICAgICAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoa2V5KSAhPSB2YWx1ZToKLSAgICAgICAgICAgICAgICBvcy5lbnZpcm9uW2tleV0gPSB2YWx1ZQotCi0gICAgICAgIGZvciBrZXkgaW4gbGlzdChvcy5lbnZpcm9uLmtleXMoKSk6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYub2xkX2Vudmlyb246Ci0gICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5fY29uZmlnX3ZhcnNbMF0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNlbGYuX2NvbmZpZ192YXJzWzFdKQorICAgICAgICBmb3IgdmFyLCB2YWx1ZSBpbiBzZWxmLl9jaGFuZ2VkX2VudnZhcnM6CisgICAgICAgICAgICBvcy5lbnZpcm9uW3Zhcl0gPSB2YWx1ZQorICAgICAgICBmb3IgdmFyIGluIHNlbGYuX2FkZGVkX2VudnZhcnM6CisgICAgICAgICAgICBvcy5lbnZpcm9uLnBvcCh2YXIsIE5vbmUpCiAKICAgICAgICAgc3VwZXIoVGVzdFN5c0NvbmZpZywgc2VsZikudGVhckRvd24oKQogCiAgICAgZGVmIF9zZXRfdW5hbWUoc2VsZiwgdW5hbWUpOgotICAgICAgICBzZWxmLl91bmFtZSA9IHVuYW1lCisgICAgICAgIHNlbGYuX3VuYW1lID0gb3MudW5hbWVfcmVzdWx0KHVuYW1lKQogCiAgICAgZGVmIF9nZXRfdW5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl91bmFtZQpAQCAtODcsMjEgKzg5LDE5IEBACiAgICAgICAgIHNjaGVtZSA9IGdldF9wYXRocygpCiAgICAgICAgIGRlZmF1bHRfc2NoZW1lID0gX2dldF9kZWZhdWx0X3NjaGVtZSgpCiAgICAgICAgIHdhbnRlZCA9IF9leHBhbmRfdmFycyhkZWZhdWx0X3NjaGVtZSwgTm9uZSkKLSAgICAgICAgd2FudGVkID0gbGlzdCh3YW50ZWQuaXRlbXMoKSkKLSAgICAgICAgd2FudGVkLnNvcnQoKQotICAgICAgICBzY2hlbWUgPSBsaXN0KHNjaGVtZS5pdGVtcygpKQotICAgICAgICBzY2hlbWUuc29ydCgpCisgICAgICAgIHdhbnRlZCA9IHNvcnRlZCh3YW50ZWQuaXRlbXMoKSkKKyAgICAgICAgc2NoZW1lID0gc29ydGVkKHNjaGVtZS5pdGVtcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVtZSwgd2FudGVkKQogCiAgICAgZGVmIHRlc3RfZ2V0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgeHh4IG1ha2UgcmVhbCB0ZXN0cyBoZXJlCisgICAgICAgICMgWFhYIG1ha2UgcmVhbCB0ZXN0cyBoZXJlCiAgICAgICAgIGZvciBzY2hlbWUgaW4gX0lOU1RBTExfU0NIRU1FUzoKICAgICAgICAgICAgIGZvciBuYW1lIGluIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXToKICAgICAgICAgICAgICAgICByZXMgPSBnZXRfcGF0aChuYW1lLCBzY2hlbWUpCiAKICAgICBkZWYgdGVzdF9nZXRfY29uZmlnX3ZhcnMoc2VsZik6CiAgICAgICAgIGN2YXJzID0gZ2V0X2NvbmZpZ192YXJzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoY3ZhcnMsIGRpY3QpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3ZhcnMsIGRpY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdmFycykKIAogICAgIGRlZiB0ZXN0X2dldF9wbGF0Zm9ybShzZWxmKToKQEAgLTEzNSw4ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICgnRGFyd2luIEtlcm5lbCBWZXJzaW9uIDguMTEuMTogJwogICAgICAgICAgICAgICAgICAgICAnV2VkIE9jdCAxMCAxODoyMzoyOCBQRFQgMjAwNzsgJwogICAgICAgICAgICAgICAgICAgICAncm9vdDp4bnUtNzkyLjI1LjIwfjEvUkVMRUFTRV9JMzg2JyksICdQb3dlclBDJykpCi0KLQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJwogCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWZuby1zdHJpY3QtYWxpYXNpbmcgLUROREVCVUcgLWcgJwpAQCAtMTUxLDEyICsxNTAsMTEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5tYXhzaXplID0gbWF4aW50CiAKLQogICAgICAgICBzZWxmLl9zZXRfdW5hbWUoKCdEYXJ3aW4nLCAnbWFjemlhZGUnLCAnOC4xMS4xJywKICAgICAgICAgICAgICAgICAgICAoJ0RhcndpbiBLZXJuZWwgVmVyc2lvbiA4LjExLjE6ICcKICAgICAgICAgICAgICAgICAgICAgJ1dlZCBPY3QgMTAgMTg6MjM6MjggUERUIDIwMDc7ICcKICAgICAgICAgICAgICAgICAgICAgJ3Jvb3Q6eG51LTc5Mi4yNS4yMH4xL1JFTEVBU0VfSTM4NicpLCAnaTM4NicpKQotICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKIAogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1ETkRFQlVHIC1nICcKQEAgLTE3MSw2ICsxNjksNyBAQAogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBtYXhpbnQKIAogICAgICAgICAjIG1hY2Jvb2sgd2l0aCBmYXQgYmluYXJpZXMgKGZhdCwgdW5pdmVyc2FsIG9yIGZhdDY0KQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC40JwogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwpAQCAtMTc5LDYgKzE3OCw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTE4NiwxOCArMTg2LDIxIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWludGVsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0MycpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LXVuaXZlcnNhbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGM2NCAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0yMDYsMTIgKzIwOSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0NjQnKQogCiAgICAgICAgIGZvciBhcmNoIGluICgncHBjJywgJ2kzODYnLCAneDg2XzY0JywgJ3BwYzY0Jyk6CisgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoICVzIC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnJShhcmNoLCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycgJSBhcmNoKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtJXMnJShhcmNoLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtJXMnICUgYXJjaCkKIAogICAgICAgICAjIGxpbnV4IGRlYmlhbiBzYXJnZQogICAgICAgICBvcy5uYW1lID0gJ3Bvc2l4JwpAQCAtMjM5LDggKzI0Myw4IEBACiAgICAgICAgICMgT24gV2luZG93cywgdGhlIEVYRSBuZWVkcyB0byBrbm93IHdoZXJlIHB5dGhvblhZLmRsbCBpcyBhdCBzbyB3ZSBoYXZlCiAgICAgICAgICMgdG8gYWRkIHRoZSBkaXJlY3RvcnkgdG8gdGhlIHBhdGguCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgb3MuZW52aXJvblsiUGF0aCJdID0gInt9O3t9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgb3MuZW52aXJvblsiUGF0aCJdKQorICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gInt9O3t9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgb3MuZW52aXJvblsiUEFUSCJdKQogCiAgICAgICAgICMgSXNzdWUgNzg4MAogICAgICAgICBkZWYgZ2V0KHB5dGhvbik6CkBAIC0yNjQsMTIgKzI2OCwxNyBAQAogICAgICAgICAjIHRoZSBnbG9iYWwgc2NoZW1lIG1pcnJvcnMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gcHJlZml4IGFuZAogICAgICAgICAjIGV4ZWMtcHJlZml4IGJ1dCBub3QgdGhlIHVzZXIgc2NoZW1lLCBzbyB3ZSBoYXZlIHRvIGFkYXB0IHRoZSBwYXRocwogICAgICAgICAjIGJlZm9yZSBjb21wYXJpbmcgKGlzc3VlICM5MTAwKQotICAgICAgICBhZGFwdCA9IHN5cy5wcmVmaXggIT0gc3lzLmV4ZWNfcHJlZml4CisgICAgICAgIGFkYXB0ID0gc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5iYXNlX2V4ZWNfcHJlZml4CiAgICAgICAgIGZvciBuYW1lIGluICgnc3RkbGliJywgJ3BsYXRzdGRsaWInLCAncHVyZWxpYicsICdwbGF0bGliJyk6CiAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdldF9wYXRoKG5hbWUsICdwb3NpeF9wcmVmaXgnKQogICAgICAgICAgICAgaWYgYWRhcHQ6Ci0gICAgICAgICAgICAgICAgZ2xvYmFsX3BhdGggPSBnbG9iYWxfcGF0aC5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLnByZWZpeCkKLSAgICAgICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLnByZWZpeCkKKyAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMuYmFzZV9wcmVmaXgpCisgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZShzeXMuZXhlY19wcmVmaXgsIHN5cy5iYXNlX3ByZWZpeCkKKyAgICAgICAgICAgIGVsaWYgc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXg6CisgICAgICAgICAgICAgICAgIyB2aXJ0dWFsIGVudmlyb25tZW50PyBMaWtld2lzZSwgd2UgaGF2ZSB0byBhZGFwdCB0aGUgcGF0aHMKKyAgICAgICAgICAgICAgICAjIGJlZm9yZSBjb21wYXJpbmcKKyAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQogICAgICAgICAgICAgdXNlcl9wYXRoID0gZ2V0X3BhdGgobmFtZSwgJ3Bvc2l4X3VzZXInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyX3BhdGgsIGdsb2JhbF9wYXRoLnJlcGxhY2UoYmFzZSwgdXNlciwgMSkpCiAKQEAgLTI4Niw3ICsyOTUsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obGRmbGFncywgbGRzaGFyZWQpCiAKLQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiwgInRlc3Qgb25seSByZWxldmFudCBvbiBNYWNPU1giKQogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX2luX3N1YnByb2Nlc3Moc2VsZik6CiAgICAgICAgIG15X3BsYXRmb3JtID0gc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpCkBAIC0zMTIsMjggKzMyMCw1OCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKIAotCiAgICAgICAgICMgVGVzdCB3aXRoIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpbiB0aGUgZW52aXJvbm1lbnQsIGFuZAogICAgICAgICAjIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB1bmxpa2VseSB0byBiZSB0aGUgZGVmYXVsdCBvbmUuCiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMScKIAotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCi0gICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNjb25maWc7IHByaW50KHN5c2NvbmZpZy5nZXRfcGxhdGZvcm0oKSknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICBzdGRlcnI9b3BlbignL2Rldi9udWxsJyksCi0gICAgICAgICAgICBlbnY9ZW52KQotICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKLSAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHRlc3RfcGxhdGZvcm0uZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggb3BlbignL2Rldi9udWxsJykgYXMgZGV2X251bGw6CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCisgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLCAnLWMnLAorICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1kZXZfbnVsbCwKKyAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCisgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCisKKyAgICBkZWYgdGVzdF9zcmNkaXIoc2VsZik6CisgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KKyAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKHNyY2RpciksIHNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoc3JjZGlyKSwgc3JjZGlyKQorCisgICAgICAgIGlmIHN5c2NvbmZpZy5fUFlUSE9OX0JVSUxEOgorICAgICAgICAgICAgIyBUaGUgcHl0aG9uIGV4ZWN1dGFibGUgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBzbyBzcmNkaXIKKyAgICAgICAgICAgICMgc2hvdWxkIGJlIGEgZnVsbCBzb3VyY2UgY2hlY2tvdXQuCisgICAgICAgICAgICBQeXRob25faCA9IG9zLnBhdGguam9pbihzcmNkaXIsICdJbmNsdWRlJywgJ1B5dGhvbi5oJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhQeXRob25faCksIFB5dGhvbl9oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5c2NvbmZpZy5faXNfcHl0aG9uX3NvdXJjZV9kaXIoc3JjZGlyKSkKKyAgICAgICAgZWxpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZGlybmFtZShzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkaXIpCisKKyAgICBkZWYgdGVzdF9zcmNkaXJfaW5kZXBlbmRlbnRfb2ZfY3dkKHNlbGYpOgorICAgICAgICAjIHNyY2RpciBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKCcuLicpCisgICAgICAgICAgICBzcmNkaXIyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIoY3dkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY2Rpciwgc3JjZGlyMikKIAogCiBjbGFzcyBNYWtlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLAogICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IFdpbmRvd3MgY29tcGF0aWJsZScpCiAgICAgZGVmIHRlc3RfZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGYzMmViOGMuLmM3YmY3NzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIxLDYgKzIxLDEwIEBACiAgICAgaW1wb3J0IGJ6MgogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGJ6MiA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCiAKIGRlZiBtZDVzdW0oZGF0YSk6CiAgICAgcmV0dXJuIG1kNShkYXRhKS5oZXhkaWdlc3QoKQpAQCAtMjksNiArMzMsNyBAQAogdGFybmFtZSA9IHN1cHBvcnQuZmluZGZpbGUoInRlc3R0YXIudGFyIikKIGd6aXBuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci5neiIpCiBiejJuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci5iejIiKQoreHpuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci54eiIpCiB0bXBuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0bXAudGFyIikKIAogbWQ1X3JlZ3R5cGUgPSAiNjVmNDc3YzgxOGFkOWUxNWY3ZmVhYjBjNmQzNzc0MmYiCkBAIC01MSwxMyArNTYsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICB0YXJpbmZvID0gc2VsZi50YXIuZ2V0bWVtYmVyKCJ1c3Rhci9yZWd0eXBlIikKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgogICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoKGxlbihkYXRhKSwgbWQ1c3VtKGRhdGEpKSA9PSAodGFyaW5mby5zaXplLCBtZDVfcmVndHlwZSksCiAgICAgICAgICAgICAgICAgICAgICJyZWd1bGFyIGZpbGUgZXh0cmFjdGlvbiBmYWlsZWQiKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9iai5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCkBAIC02NSw4ICs2Nyw3IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInIiKSBhcyBmb2JqMToKICAgICAgICAgICAgIGxpbmVzMSA9IGZvYmoxLnJlYWRsaW5lcygpCiAKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgogICAgICAgICAgICAgZm9iajIgPSBpby5UZXh0SU9XcmFwcGVyKGZvYmopCiAgICAgICAgICAgICBsaW5lczIgPSBmb2JqMi5yZWFkbGluZXMoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzMSA9PSBsaW5lczIsCkBAIC03NiwyMSArNzcsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lczJbODNdID09CiAgICAgICAgICAgICAgICAgICAgICJJIHdpbGwgZ2xhZGx5IGFkbWl0IHRoYXQgUHl0aG9uIGlzIG5vdCB0aGUgZmFzdGVzdCBydW5uaW5nIHNjcmlwdGluZyBsYW5ndWFnZS5cbiIsCiAgICAgICAgICAgICAgICAgICAgICJmaWxlb2JqLnJlYWRsaW5lcygpIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfaXRlcihzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCiAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhci5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFTVBESVIsICJ1c3Rhci9yZWd0eXBlIiksICJyVSIpIGFzIGZvYmoxOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFTVBESVIsICJ1c3Rhci9yZWd0eXBlIiksICJyIikgYXMgZm9iajE6CiAgICAgICAgICAgICBsaW5lczEgPSBmb2JqMS5yZWFkbGluZXMoKQotICAgICAgICBmb2JqMiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqMjoKICAgICAgICAgICAgIGxpbmVzMiA9IGxpc3QoaW8uVGV4dElPV3JhcHBlcihmb2JqMikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMxID09IGxpbmVzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW9iai5fX2l0ZXJfXygpIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqMi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3NlZWsoc2VsZik6CiAgICAgICAgIHNlbGYudGFyLmV4dHJhY3QoInVzdGFyL3JlZ3R5cGUiLCBURU1QRElSKQpAQCAtMTQyLDE3ICsxMzgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICJyZWFkKCkgYWZ0ZXIgcmVhZGxpbmUoKSBmYWlsZWQiKQogICAgICAgICBmb2JqLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2ZpbGVvYmpfdGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSgidXN0YXIvcmVndHlwZSIpIGFzIGZvYmo6CisgICAgICAgICAgICBmb2JqID0gaW8uVGV4dElPV3JhcHBlcihmb2JqKQorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpLmVuY29kZSgiaXNvODg1OS0xIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWQ1c3VtKGRhdGEpLCBtZDVfcmVndHlwZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb2JqLnNlZWsoMTAwKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEzODE1OiBzZWVrKCkgY29tcGxhaW5lZCBhYm91dCBhIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjIGZsdXNoKCkgbWV0aG9kLgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2Vla2luZyBmYWlsZWQgaW4gdGV4dCBtb2RlIikKKwogICAgICMgVGVzdCBpZiBzeW1ib2xpYyBhbmQgaGFyZCBsaW5rcyBhcmUgcmVzb2x2ZWQgYnkgZXh0cmFjdGZpbGUoKS4gIFRoZQogICAgICMgdGVzdCBsaW5rIG1lbWJlcnMgZWFjaCBwb2ludCB0byBhIHJlZ3VsYXIgbWVtYmVyIHdob3NlIGRhdGEgaXMKICAgICAjIHN1cHBvc2VkIHRvIGJlIGV4cG9ydGVkLgogICAgIGRlZiBfdGVzdF9maWxlb2JqX2xpbmsoc2VsZiwgbG5rdHlwZSwgcmVndHlwZSk6Ci0gICAgICAgIGEgPSBzZWxmLnRhci5leHRyYWN0ZmlsZShsbmt0eXBlKQotICAgICAgICBiID0gc2VsZi50YXIuZXh0cmFjdGZpbGUocmVndHlwZSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKGxua3R5cGUpIGFzIGEsIHNlbGYudGFyLmV4dHJhY3RmaWxlKHJlZ3R5cGUpIGFzIGI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEubmFtZSwgYi5uYW1lKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYS5jbG9zZSgpCi0gICAgICAgICAgICBiLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfbGluazEoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZW9ial9saW5rKCJ1c3Rhci9sbmt0eXBlIiwgInVzdGFyL3JlZ3R5cGUiKQpAQCAtMjA0LDEzICsyMDcsMTUgQEAKICAgICAgICAgICAgIF9vcGVuID0gZ3ppcC5HemlwRmlsZQogICAgICAgICBlbGlmIHNlbGYubW9kZS5lbmRzd2l0aCgiOmJ6MiIpOgogICAgICAgICAgICAgX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBlbGlmIHNlbGYubW9kZS5lbmRzd2l0aCgiOnh6Iik6CisgICAgICAgICAgICBfb3BlbiA9IGx6bWEuTFpNQUZpbGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9vcGVuID0gb3BlbgorICAgICAgICAgICAgX29wZW4gPSBpby5GaWxlSU8KIAogICAgICAgICBmb3IgY2hhciBpbiAoYidcMCcsIGInYScpOgogICAgICAgICAgICAgIyBUZXN0IGlmIEVPRkhlYWRlckVycm9yICgnXDAnKSBhbmQgSW52YWxpZEhlYWRlckVycm9yICgnYScpCiAgICAgICAgICAgICAjIGFyZSBpZ25vcmVkIGNvcnJlY3RseS4KLSAgICAgICAgICAgIHdpdGggX29wZW4odG1wbmFtZSwgIndiIikgYXMgZm9iajoKKyAgICAgICAgICAgIHdpdGggX29wZW4odG1wbmFtZSwgInciKSBhcyBmb2JqOgogICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoY2hhciAqIDEwMjQpCiAgICAgICAgICAgICAgICAgZm9iai53cml0ZSh0YXJmaWxlLlRhckluZm8oImZvbyIpLnRvYnVmKCkpCiAKQEAgLTIyNSw2ICsyMzAsMTAgQEAKIGNsYXNzIE1pc2NSZWFkVGVzdChDb21tb25SZWFkVGVzdCk6CiAKICAgICBkZWYgdGVzdF9ub19uYW1lX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBpZiBzZWxmLm1vZGUuZW5kc3dpdGgoKCJiejIiLCAieHoiKSk6CisgICAgICAgICAgICAjIEJaMkZpbGUgYW5kIExaTUFGaWxlIGhhdmUgbm8gbmFtZSBhdHRyaWJ1dGUuCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyBuYW1lIGF0dHJpYnV0ZSIpCisKICAgICAgICAgd2l0aCBvcGVuKHNlbGYudGFybmFtZSwgInJiIikgYXMgZm9iajoKICAgICAgICAgICAgIHRhciA9IHRhcmZpbGUub3BlbihmaWxlb2JqPWZvYmosIG1vZGU9c2VsZi5tb2RlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXIubmFtZSwgb3MucGF0aC5hYnNwYXRoKGZvYmoubmFtZSkpCkBAIC0yNTQsOSArMjYzLDggQEAKICAgICAgICAgICAgIHQgPSB0YXIubmV4dCgpCiAgICAgICAgICAgICBuYW1lID0gdC5uYW1lCiAgICAgICAgICAgICBvZmZzZXQgPSB0Lm9mZnNldAotICAgICAgICAgICAgZiA9IHRhci5leHRyYWN0ZmlsZSh0KQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggdGFyLmV4dHJhY3RmaWxlKHQpIGFzIGY6CisgICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0YXIuY2xvc2UoKQogCkBAIC0yNjUsMTAgKzI3MywxMiBAQAogICAgICAgICAgICAgX29wZW4gPSBnemlwLkd6aXBGaWxlCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6YnoyIik6CiAgICAgICAgICAgICBfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6eHoiKToKKyAgICAgICAgICAgIF9vcGVuID0gbHptYS5MWk1BRmlsZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX29wZW4gPSBvcGVuCi0gICAgICAgIGZvYmogPSBfb3BlbihzZWxmLnRhcm5hbWUsICJyYiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcGVuID0gaW8uRmlsZUlPCisKKyAgICAgICAgd2l0aCBfb3BlbihzZWxmLnRhcm5hbWUpIGFzIGZvYmo6CiAgICAgICAgICAgICBmb2JqLnNlZWsob2Zmc2V0KQogCiAgICAgICAgICAgICAjIFRlc3QgaWYgdGhlIHRhcmZpbGUgc3RhcnRzIHdpdGggdGhlIHNlY29uZCBtZW1iZXIuCkBAIC0yODEsOCArMjkxLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFyLmV4dHJhY3RmaWxlKHQpLnJlYWQoKSwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgInNlZWsgYmFjayBkaWQgbm90IHdvcmsiKQogICAgICAgICAgICAgdGFyLmNsb3NlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmFpbF9jb21wKHNlbGYpOgogICAgICAgICAjIEZvciBHemlwIGFuZCBCejIgVGVzdHM6IGZhaWwgd2l0aCBhIFJlYWRFcnJvciBvbiBhbiB1bmNvbXByZXNzZWQgZmlsZS4KQEAgLTQyOCwyNyArNDM2LDI2IEBACiAgICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGYudGFyOgogICAgICAgICAgICAgaWYgbm90IHRhcmluZm8uaXNyZWcoKToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gZm9iai5yZWFkKDUxMikKLSAgICAgICAgICAgICAgICBleGNlcHQgdGFyZmlsZS5TdHJlYW1FcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaW1wbGUgcmVhZC10aHJvdWdoIHVzaW5nIFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQiKQotICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykgYXMgZm9iajoKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBmb2JqLnJlYWQoNTEyKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgdGFyZmlsZS5TdHJlYW1FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2ltcGxlIHJlYWQtdGhyb3VnaCB1c2luZyBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgZmFpbGVkIikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3JlZ3VsYXJfZmlsZShzZWxmKToKICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyLm5leHQoKSAjIGdldCAicmVndHlwZSIgKGNhbid0IHVzZSBnZXRtZW1iZXIpCi0gICAgICAgIGZvYmogPSBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKQotICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgobGVuKGRhdGEpLCBtZDVzdW0oZGF0YSkpID09ICh0YXJpbmZvLnNpemUsIG1kNV9yZWd0eXBlKSwKICAgICAgICAgICAgICAgICAicmVndWxhciBmaWxlIGV4dHJhY3Rpb24gZmFpbGVkIikKIAogICAgIGRlZiB0ZXN0X3Byb3Zva2Vfc3RyZWFtX2Vycm9yKHNlbGYpOgogICAgICAgICB0YXJpbmZvcyA9IHNlbGYudGFyLmdldG1lbWJlcnMoKQotICAgICAgICBmID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mb3NbMF0pICMgcmVhZCB0aGUgZmlyc3QgbWVtYmVyCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuU3RyZWFtRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvc1swXSkgYXMgZjogIyByZWFkIHRoZSBmaXJzdCBtZW1iZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuU3RyZWFtRXJyb3IsIGYucmVhZCkKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmVfbWVtYmVycyhzZWxmKToKICAgICAgICAgdGFyMSA9IHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz0iaXNvODg1OS0xIikKQEAgLTUyNiw2ICs1MzMsMTggQEAKICAgICAgICAgICAgIHRlc3RmdW5jKGJ6Mm5hbWUsICJyfCoiKQogICAgICAgICAgICAgdGVzdGZ1bmMoYnoybmFtZSwgInJ8YnoyIikKIAorICAgICAgICBpZiBsem1hOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgdGFybmFtZSwgbW9kZT0icjp4eiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0YXJuYW1lLCBtb2RlPSJyfHh6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHh6bmFtZSwgbW9kZT0icjoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgeHpuYW1lLCBtb2RlPSJyfCIpCisKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInIiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicjoqIikKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInI6eHoiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicnwqIikKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInJ8eHoiKQorCiAgICAgZGVmIHRlc3RfZGV0ZWN0X2ZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfbW9kZXMoc2VsZi5fdGVzdGZ1bmNfZmlsZSkKIApAQCAtNzIzLDcgKzc0Miw3IEBACiAgICAgICAgICMgUmV0dXJuIFRydWUgaWYgdGhlIHBsYXRmb3JtIGtub3dzIHRoZSBzdF9ibG9ja3Mgc3RhdCBhdHRyaWJ1dGUgYW5kCiAgICAgICAgICMgdXNlcyBzdF9ibG9ja3MgdW5pdHMgb2YgNTEyIGJ5dGVzLCBhbmQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgYWJsZSB0bwogICAgICAgICAjIHN0b3JlIGhvbGVzIGluIGZpbGVzLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImxpbnV4MiI6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJsaW51eCIpOgogICAgICAgICAgICAgIyBMaW51eCBldmlkZW50aWFsbHkgaGFzIDUxMiBieXRlIHN0X2Jsb2NrcyB1bml0cy4KICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInNwYXJzZS10ZXN0IikKICAgICAgICAgICAgIHdpdGggb3BlbihuYW1lLCAid2IiKSBhcyBmb2JqOgpAQCAtOTEzLDcgKzkzMiw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZm9vIiwgImJhciIsICJiYXoiKToKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG5hbWUpCi0gICAgICAgICAgICAgICAgb3BlbihuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShuYW1lKQogCiAgICAgICAgICAgICBleGNsdWRlID0gb3MucGF0aC5pc2ZpbGUKIApAQCAtOTQwLDcgKzk1OSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZm9vIiwgImJhciIsICJiYXoiKToKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG5hbWUpCi0gICAgICAgICAgICAgICAgb3BlbihuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShuYW1lKQogCiAgICAgICAgICAgICBkZWYgZmlsdGVyKHRhcmluZm8pOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUodGFyaW5mby5uYW1lKSA9PSAiYmFyIjoKQEAgLTk3OSw3ICs5OTgsNyBAQAogICAgICAgICAjIGFuZCBjb21wYXJlIHRoZSBzdG9yZWQgbmFtZSB3aXRoIHRoZSBvcmlnaW5hbC4KICAgICAgICAgZm9vID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJmb28iKQogICAgICAgICBpZiBub3QgZGlyOgotICAgICAgICAgICAgb3Blbihmb28sICJ3IikuY2xvc2UoKQorICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShmb28pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5ta2Rpcihmb28pCiAKQEAgLTEwOTYsNiArMTExNSw5IEBACiAgICAgICAgICAgICBkYXRhID0gZGVjLmRlY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZGVjLnVudXNlZF9kYXRhKSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAiZm91bmQgdHJhaWxpbmcgZGF0YSIpCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCJ4eiIpOgorICAgICAgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKHRtcG5hbWUpIGFzIGZvYmo6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3aXRoIG9wZW4odG1wbmFtZSwgInJiIikgYXMgZm9iajoKICAgICAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKQEAgLTEzMzksNyArMTM2MSw3IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmNyIpCiAKICAgICBkZWYgdGVzdF91dGY4X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoInV0ZjgiKQorICAgICAgICBzZWxmLl90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoInV0Zi04IikKIAogICAgIGRlZiBfdGVzdF91bmljb2RlX2ZpbGVuYW1lKHNlbGYsIGVuY29kaW5nKToKICAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKHRtcG5hbWUsICJ3IiwgZm9ybWF0PXNlbGYuZm9ybWF0LCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPSJzdHJpY3QiKQpAQCAtMTQxOCw3ICsxNDQwLDcgQEAKICAgICBkZWYgdGVzdF9iYWRfcGF4X2hlYWRlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciBpc3N1ZSAjODYzMy4gR05VIHRhciA8PSAxLjIzIGNyZWF0ZXMgcmF3IGJpbmFyeSBmaWVsZHMKICAgICAgICAgIyB3aXRob3V0IGEgaGRyY2hhcnNldD1CSU5BUlkgaGVhZGVyLgotICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmOCIsICJwYXgvYmFkLXBheC1cdWRjZTRcdWRjZjZcdWRjZmMiKSwKKyAgICAgICAgZm9yIGVuY29kaW5nLCBuYW1lIGluICgoInV0Zi04IiwgInBheC9iYWQtcGF4LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAogICAgICAgICAgICAgICAgICgiaXNvODg1OS0xIiwgInBheC9iYWQtcGF4LVx4ZTRceGY2XHhmYyIpLCk6CiAgICAgICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyB0YXI6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMTQzMyw3ICsxNDU1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9oZWFkZXIoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFBPU0lYLjEtMjAwOCBjb21wYXRpYmxlIGhlYWRlciB3aXRoIGEgaGRyY2hhcnNldD1CSU5BUlkgZmllbGQuCi0gICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGY4IiwgInBheC9oZHJjaGFyc2V0LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAorICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmLTgiLCAicGF4L2hkcmNoYXJzZXQtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCiAgICAgICAgICAgICAgICAgKCJpc284ODU5LTEiLCAicGF4L2hkcmNoYXJzZXQtXHhlNFx4ZjZceGZjIiksKToKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpIGFzIHRhcjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDU4LDEyICsxNDgwLDkgQEAKICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFybmFtZSwgZW5jb2Rpbmc9Imlzbzg4NTktMSIpIGFzIHNyYzoKICAgICAgICAgICAgIHQgPSBzcmMuZ2V0bWVtYmVyKCJ1c3Rhci9yZWd0eXBlIikKICAgICAgICAgICAgIHQubmFtZSA9ICJmb28iCi0gICAgICAgICAgICBmID0gc3JjLmV4dHJhY3RmaWxlKHQpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNyYy5leHRyYWN0ZmlsZSh0KSBhcyBmOgogICAgICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHNlbGYudGFybmFtZSwgbW9kZSkgYXMgdGFyOgogICAgICAgICAgICAgICAgICAgICB0YXIuYWRkZmlsZSh0LCBmKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBfdGVzdChzZWxmLCBuYW1lcz1bImJhciJdLCBmaWxlb2JqPU5vbmUpOgogICAgICAgICB3aXRoIHRhcmZpbGUub3BlbihzZWxmLnRhcm5hbWUsIGZpbGVvYmo9ZmlsZW9iaikgYXMgdGFyOgpAQCAtMTUxMCw2ICsxNTI5LDEyIEBACiAgICAgICAgIHNlbGYuX2NyZWF0ZV90ZXN0dGFyKCJ3OmJ6MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRtcG5hbWUsICJhIikKIAorICAgIGRlZiB0ZXN0X2FwcGVuZF9sem1hKHNlbGYpOgorICAgICAgICBpZiBsem1hIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJsem1hIG1vZHVsZSBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3R0YXIoInc6eHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0bXBuYW1lLCAiYSIpCisKICAgICAjIEFwcGVuZCBtb2RlIGlzIHN1cHBvc2VkIHRvIGZhaWwgaWYgdGhlIHRhcmZpbGUgdG8gYXBwZW5kIHRvCiAgICAgIyBkb2VzIG5vdCBlbmQgd2l0aCBhIHplcm8gYmxvY2suCiAgICAgZGVmIF90ZXN0X2Vycm9yKHNlbGYsIGRhdGEpOgpAQCAtMTc4OCw2ICsxODEzLDIxIEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9pbnB1dCgicjpiejIiKQogCiAKK2NsYXNzIEx6bWFNaXNjUmVhZFRlc3QoTWlzY1JlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyOnh6IgorY2xhc3MgTHptYVVzdGFyUmVhZFRlc3QoVXN0YXJSZWFkVGVzdCk6CisgICAgdGFybmFtZSA9IHh6bmFtZQorICAgIG1vZGUgPSAicjp4eiIKK2NsYXNzIEx6bWFTdHJlYW1SZWFkVGVzdChTdHJlYW1SZWFkVGVzdCk6CisgICAgdGFybmFtZSA9IHh6bmFtZQorICAgIG1vZGUgPSAicnx4eiIKK2NsYXNzIEx6bWFXcml0ZVRlc3QoV3JpdGVUZXN0KToKKyAgICBtb2RlID0gInc6eHoiCitjbGFzcyBMem1hU3RyZWFtV3JpdGVUZXN0KFN0cmVhbVdyaXRlVGVzdCk6CisgICAgbW9kZSA9ICJ3fHh6IgorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnVubGluayhURU1QRElSKQogICAgIG9zLm1ha2VkaXJzKFRFTVBESVIpCkBAIC0xODUwLDYgKzE4OTAsMjAgQEAKICAgICAgICAgICAgIEJ6MlBhcnRpYWxSZWFkVGVzdCwKICAgICAgICAgXQogCisgICAgaWYgbHptYToKKyAgICAgICAgIyBDcmVhdGUgdGVzdHRhci50YXIueHogYW5kIGFkZCBsem1hLXNwZWNpZmljIHRlc3RzLgorICAgICAgICBzdXBwb3J0LnVubGluayh4em5hbWUpCisgICAgICAgIHdpdGggbHptYS5MWk1BRmlsZSh4em5hbWUsICJ3IikgYXMgdGFyOgorICAgICAgICAgICAgdGFyLndyaXRlKGRhdGEpCisKKyAgICAgICAgdGVzdHMgKz0gWworICAgICAgICAgICAgTHptYU1pc2NSZWFkVGVzdCwKKyAgICAgICAgICAgIEx6bWFVc3RhclJlYWRUZXN0LAorICAgICAgICAgICAgTHptYVN0cmVhbVJlYWRUZXN0LAorICAgICAgICAgICAgTHptYVdyaXRlVGVzdCwKKyAgICAgICAgICAgIEx6bWFTdHJlYW1Xcml0ZVRlc3QsCisgICAgICAgIF0KKwogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IDk1ZWViZjMuLjExZTk1ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0zNiw2ICszNiw3IEBACiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorICAgICAgICBkZWwgc2VsZi50aHJlYWQgICMgQ2xlYXIgb3V0IGFueSBkYW5nbGluZyBUaHJlYWQgb2JqZWN0cy4KIAogICAgIGRlZiB0ZXN0QmFzaWMoc2VsZik6CiAgICAgICAgICMgY29ubmVjdHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CmluZGV4IDUwY2YzYjQuLmQ3OWYzMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQpAQCAtMjEsNyArMjEsNyBAQAogCiAjIFRFU1RfRklMRVMgbWF5IG5lZWQgdG8gYmUgdHdlYWtlZCBmb3Igc3lzdGVtcyBkZXBlbmRpbmcgb24gdGhlIG1heGltdW0KICMgbnVtYmVyIG9mIGZpbGVzIHRoYXQgY2FuIGJlIG9wZW5lZCBhdCBvbmUgdGltZSAoc2VlIHVsaW1pdCAtbikKLWlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29wZW5ic2QzJywgJ29wZW5ic2Q0Jyk6CitpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3BlbmJzZCcpOgogICAgIFRFU1RfRklMRVMgPSA0OAogZWxzZToKICAgICBURVNUX0ZJTEVTID0gMTAwCkBAIC0zMSw3ICszMSw3IEBACiAjIHRocmVhZHMgaXMgbm90IGRvbmUgaGVyZS4KIAogIyBDb21tb24gZnVuY3Rpb25hbGl0eS4KLWNsYXNzIFRDKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdHJfY2hlY2sgPSByZS5jb21waWxlKHIiW2EtekEtWjAtOV8tXXs2fSQiKQogCkBAIC00NSwxMSArNDUsNiBAQAogICAgICAgICBzZWxmLl93YXJuaW5nc19tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKIAotICAgIGRlZiBmYWlsT25FeGNlcHRpb24oc2VsZiwgd2hhdCwgZWk9Tm9uZSk6Ci0gICAgICAgIGlmIGVpIGlzIE5vbmU6Ci0gICAgICAgICAgICBlaSA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgIHNlbGYuZmFpbCgiJXMgcmFpc2VkICVzOiAlcyIgJSAod2hhdCwgZWlbMF0sIGVpWzFdKSkKLQogICAgIGRlZiBuYW1lQ2hlY2soc2VsZiwgbmFtZSwgZGlyLCBwcmUsIHN1Zik6CiAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCiAgICAgICAgIG5wcmUgID0gbmJhc2VbOmxlbihwcmUpXQpAQCAtNjgsOSArNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSBzdHJpbmcgJyVzJyBkb2VzIG5vdCBtYXRjaCAvXlthLXpBLVowLTlfLV17Nn0kLyIKICAgICAgICAgICAgICAgICAgICAgICUgbmJhc2UpCiAKLXRlc3RfY2xhc3NlcyA9IFtdCiAKLWNsYXNzIHRlc3RfZXhwb3J0cyhUQyk6CitjbGFzcyBUZXN0RXhwb3J0cyhCYXNlVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4cG9ydHMoc2VsZik6CiAgICAgICAgICMgVGhlcmUgYXJlIG5vIHN1cnByaXNpbmcgc3ltYm9scyBpbiB0aGUgdGVtcGZpbGUgbW9kdWxlCiAgICAgICAgIGRpY3QgPSB0ZW1wZmlsZS5fX2RpY3RfXwpAQCAtOTcsMTAgKzkxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih1bmV4cCkgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGtleXM6ICVzIiAlIHVuZXhwKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZXhwb3J0cykKIAotCi1jbGFzcyB0ZXN0X19SYW5kb21OYW1lU2VxdWVuY2UoVEMpOgorY2xhc3MgVGVzdFJhbmRvbU5hbWVTZXF1ZW5jZShCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGl0ZXJhdG9yIG9iamVjdCBfUmFuZG9tTmFtZVNlcXVlbmNlLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTI4LDEzICsxMjAsMTAgQEAKIAogICAgICAgICBpID0gMAogICAgICAgICByID0gc2VsZi5yCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBzIGluIHI6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgaWYgaSA9PSAyMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIml0ZXJhdGlvbiIpCisgICAgICAgIGZvciBzIGluIHI6CisgICAgICAgICAgICBpICs9IDEKKyAgICAgICAgICAgIGlmIGkgPT0gMjA6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksCiAgICAgICAgICJvcy5mb3JrIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QiKQpAQCAtMTY3LDEwICsxNTYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNoaWxkX3ZhbHVlLCBwYXJlbnRfdmFsdWUpCiAKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X19SYW5kb21OYW1lU2VxdWVuY2UpCiAKLQotY2xhc3MgdGVzdF9fY2FuZGlkYXRlX3RlbXBkaXJfbGlzdChUQyk6CitjbGFzcyBUZXN0Q2FuZGlkYXRlVGVtcGRpckxpc3QoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfY2FuZGlkYXRlX3RlbXBkaXJfbGlzdC4iIiIKIAogICAgIGRlZiB0ZXN0X25vbmVtcHR5X2xpc3Qoc2VsZik6CkBAIC0yMDksMTMgKzE5NiwxMSBAQAogICAgICAgICAgICAgIyBOb3QgcHJhY3RpY2FsIHRvIHRyeSB0byB2ZXJpZnkgdGhlIHByZXNlbmNlIG9mIE9TLXNwZWNpZmljCiAgICAgICAgICAgICAjIHBhdGhzIGluIHRoaXMgbGlzdC4KIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X19jYW5kaWRhdGVfdGVtcGRpcl9saXN0KQotCiAKICMgV2UgdGVzdCBfZ2V0X2RlZmF1bHRfdGVtcGRpciBieSB0ZXN0aW5nIGdldHRlbXBkaXIuCiAKIAotY2xhc3MgdGVzdF9fZ2V0X2NhbmRpZGF0ZV9uYW1lcyhUQyk6CitjbGFzcyBUZXN0R2V0Q2FuZGlkYXRlTmFtZXMoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfZ2V0X2NhbmRpZGF0ZV9uYW1lcy4iIiIKIAogICAgIGRlZiB0ZXN0X3JldHZhbChzZWxmKToKQEAgLTIzMCwxMCArMjE1LDggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2dldF9jYW5kaWRhdGVfbmFtZXMpCiAKLQotY2xhc3MgdGVzdF9fbWtzdGVtcF9pbm5lcihUQyk6CitjbGFzcyBUZXN0TWtzdGVtcElubmVyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gX21rc3RlbXBfaW5uZXIuIiIiCiAKICAgICBjbGFzcyBta3N0ZW1wZWQ6CkBAIC0yNTgsMTAgKzI0MSw3IEBACiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGJpbj0xKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIl9ta3N0ZW1wX2lubmVyIikKKyAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIGRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC0zNTMsMTAgKzMzMyw4IEBACiAgICAgICAgIG9zLmxzZWVrKGYuZmQsIDAsIG9zLlNFRUtfU0VUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZi5mZCwgMjApLCBiImJsYXQiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX21rc3RlbXBfaW5uZXIpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wcHJlZml4KFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wUHJlZml4KEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wcHJlZml4KCkuIiIiCiAKICAgICBkZWYgdGVzdF9zYW5lX3RlbXBsYXRlKHNlbGYpOgpAQCAtMzc2LDE5ICszNTQsMTQgQEAKICAgICAgICAgZCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSIiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKGQsIHApCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm9zLm9wZW4iKQorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgIG9zLnVubGluayhwKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZCkKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X2dldHRlbXBwcmVmaXgpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wZGlyKFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wRGlyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wZGlyKCkuIiIiCiAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfZXhpc3RzKHNlbGYpOgpAQCAtNDA2LDEyICszNzksOSBAQAogICAgICAgICAjIHNuZWFreToganVzdCBpbnN0YW50aWF0ZSBhIE5hbWVkVGVtcG9yYXJ5RmlsZSwgd2hpY2gKICAgICAgICAgIyBkZWZhdWx0cyB0byB3cml0aW5nIGludG8gdGhlIGRpcmVjdG9yeSByZXR1cm5lZCBieQogICAgICAgICAjIGdldHRlbXBkaXIuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQotICAgICAgICAgICAgZmlsZS53cml0ZShiImJsYXQiKQotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjcmVhdGUgZmlsZSBpbiAlcyIgJSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgICAgICBmaWxlLndyaXRlKGIiYmxhdCIpCisgICAgICAgIGZpbGUuY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfc2FtZV90aGluZyhzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdApAQCAtNDIwLDIzICszOTAsMTggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZ2V0dGVtcGRpcikKIAotCi1jbGFzcyB0ZXN0X21rc3RlbXAoVEMpOgorY2xhc3MgVGVzdE1rc3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rc3RlbXAoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCi0gICAgICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKLSAgICAgICAgICAgICAgICAiRGlyZWN0b3J5ICclcycgaW5jb3JyZWN0bHkgcmV0dXJuZWQgYXMgJyVzJyIgJSAoYWRpciwgbmRpcikpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3N0ZW1wIikKKyAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKKyAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKKyAgICAgICAgYWRpciA9IG9zLnBhdGguYWJzcGF0aChkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKKyAgICAgICAgICAgICJEaXJlY3RvcnkgJyVzJyBpbmNvcnJlY3RseSByZXR1cm5lZCBhcyAnJXMnIiAlIChhZGlyLCBuZGlyKSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNDYxLDE5ICs0MjYsMTQgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X21rc3RlbXApCiAKLQotY2xhc3MgdGVzdF9ta2R0ZW1wKFRDKToKK2NsYXNzIFRlc3RNa2R0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta2R0ZW1wKCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta2R0ZW1wIikKKyAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNTI4LDEwICs0ODgsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfbWtkdGVtcCkKIAotCi1jbGFzcyB0ZXN0X21rdGVtcChUQyk6CitjbGFzcyBUZXN0TWt0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta3RlbXAoKS4iIiIKIAogICAgICMgRm9yIHNhZmV0eSwgYWxsIHVzZSBvZiBta3RlbXAgbXVzdCBvY2N1ciBpbiBhIHByaXZhdGUgZGlyZWN0b3J5LgpAQCAtNTYwLDEwICs1MTgsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5saW5rKHNlbGYubmFtZSkKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgcHJlPSIiLCBzdWY9IiIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3RlbXAiKQorICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBzZWxmLmRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC01OTAsMjMgKzU0NSwxOCBAQAogIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lV2FybmluZywKICMjICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUubWt0ZW1wLCBkaXI9c2VsZi5kaXIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9ta3RlbXApCi0KIAogIyBXZSB0ZXN0IF9UZW1wb3JhcnlGaWxlV3JhcHBlciBieSB0ZXN0aW5nIE5hbWVkVGVtcG9yYXJ5RmlsZS4KIAogCi1jbGFzcyB0ZXN0X05hbWVkVGVtcG9yYXJ5RmlsZShUQyk6CitjbGFzcyBUZXN0TmFtZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBOYW1lZFRlbXBvcmFyeUZpbGUoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCBkZWxldGU9VHJ1ZSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlPWRlbGV0ZSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIk5hbWVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGU9ZGVsZXRlKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTY1OSwxMSArNjA5LDggQEAKICAgICAgICAgZiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQSBOYW1lZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTY3NywxOCArNjI0LDE0IEBACiAKICAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/CiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9OYW1lZFRlbXBvcmFyeUZpbGUpCiAKLWNsYXNzIHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUoVEMpOgorY2xhc3MgVGVzdFNwb29sZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBTcG9vbGVkVGVtcG9yYXJ5RmlsZSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBtYXhfc2l6ZT0wLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9bWF4X3NpemUsIGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJTcG9vbGVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT1tYXhfc2l6ZSwgZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICByZXR1cm4gZmlsZQogCkBAIC03NzYsMTEgKzcxOSw4IEBACiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2VfYWZ0ZXJfcm9sbG92ZXIoc2VsZik6CiAgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgY2xvc2VkIG1hbnkgdGltZXMgd2l0aG91dCBlcnJvcgpAQCAtNzg4LDExICs3MjgsOCBAQAogICAgICAgICBmLndyaXRlKGInYWJjXG4nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBJdCBzaG91bGQgYmUgT0sgdG8gc3RlYWwgYSBib3VuZCBtZXRob2QgZnJvbSBhIFNwb29sZWRUZW1wb3JhcnlGaWxlCkBAIC04NzgsNjYgKzgxNSw3NiBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdXNlX2Nsb3NlZCkKIAotCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUpCi0KLQotY2xhc3MgdGVzdF9UZW1wb3JhcnlGaWxlKFRDKToKLSAgICAiIiJUZXN0IFRlbXBvcmFyeUZpbGUoKS4iIiIKLQotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcwotICAgICAgICAjIE5vIHBvaW50IGluIHRlc3RpbmcgdGhlIG5hbWUgcGFyYW1zIC0gdGhlIGZpbGUgaGFzIG5vIG5hbWUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RmlsZSIpCi0KLSAgICBkZWYgdGVzdF9oYXNfbm9fbmFtZShzZWxmKToKLSAgICAgICAgIyBUZW1wb3JhcnlGaWxlIGNyZWF0ZXMgZmlsZXMgd2l0aCBubyBuYW1lcyAob24gdGhpcyBzeXN0ZW0pCi0gICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZShkaXI9ZGlyKQotICAgICAgICBmLndyaXRlKGInYmxhdCcpCi0KLSAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKLSAgICAgICAgIyB1cyBmcm9tIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXQgd2FzIGNyZWF0ZWQgaW4uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgZWkgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJybWRpciIsIGVpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2Uoc2VsZik6Ci0gICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCi0gICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKLSAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbG9zZSIpCi0KLSAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/Ci0gICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJvdW5kdHJpcChpbnB1dCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgqYXJncywgKiprd2FyZ3MpIGFzIGZpbGVvYmo6Ci0gICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBmaWxlb2JqLnJlYWQoKSkKLQotICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCi0gICAgICAgIHJvdW5kdHJpcCgiYWJkY1xuIiwgIncrIikKLSAgICAgICAgcm91bmR0cmlwKCJcdTAzOUIiLCAidysiLCBlbmNvZGluZz0idXRmLTE2IikKLSAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKKyAgICBkZWYgdGVzdF90cnVuY2F0ZV93aXRoX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHRydW5jYXRlZCB0byB6ZXJvIHNpemUKKyAgICAgICAgZiA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPTEwKQorICAgICAgICBmLndyaXRlKGInYWJjZGVmZ1xuJykKKyAgICAgICAgZi5zZWVrKDApCisgICAgICAgIGYudHJ1bmNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuX3JvbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9maWxlLmdldHZhbHVlKCksIGInJykKKyAgICAgICAgIyBBIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNhbiBiZSB0cnVuY2F0ZWQgdG8gYSBzcGVjaWZpYyBzaXplCisgICAgICAgIGYgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0xMCkKKyAgICAgICAgZi53cml0ZShiJ2FiY2RlZmdcbicpCisgICAgICAgIGYudHJ1bmNhdGUoNCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLl9yb2xsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fZmlsZS5nZXR2YWx1ZSgpLCBiJ2FiY2QnKQorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgcm9sbHMgb3ZlciBpZiB0cnVuY2F0ZWQgdG8gbGFyZ2Ugc2l6ZQorICAgICAgICBmID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MTApCisgICAgICAgIGYud3JpdGUoYidhYmNkZWZnXG4nKQorICAgICAgICBmLnRydW5jYXRlKDIwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQorICAgICAgICBpZiBoYXNfc3RhdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnN0YXQoZi5maWxlbm8oKSkuc3Rfc2l6ZSwgMjApCiAKIAogaWYgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIGlzIG5vdCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlOgotICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlGaWxlKQorCisgICAgY2xhc3MgVGVzdFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKKyAgICAgICAgIiIiVGVzdCBUZW1wb3JhcnlGaWxlKCkuIiIiCisKKyAgICAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcworICAgICAgICAgICAgIyBObyBwb2ludCBpbiB0ZXN0aW5nIHRoZSBuYW1lIHBhcmFtcyAtIHRoZSBmaWxlIGhhcyBubyBuYW1lLgorICAgICAgICAgICAgdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisKKyAgICAgICAgZGVmIHRlc3RfaGFzX25vX25hbWUoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY3JlYXRlcyBmaWxlcyB3aXRoIG5vIG5hbWVzIChvbiB0aGlzIHN5c3RlbSkKKyAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICAgICAgZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoZGlyPWRpcikKKyAgICAgICAgICAgIGYud3JpdGUoYidibGF0JykKKworICAgICAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKKyAgICAgICAgICAgICMgdXMgZnJvbSByZW1vdmluZyB0aGUgZGlyZWN0b3J5IGl0IHdhcyBjcmVhdGVkIGluLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCisgICAgICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgICAgICBmLndyaXRlKGInYWJjXG4nKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KKyAgICAgICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6CisKKyAgICAgICAgICAgIGRlZiByb3VuZHRyaXAoaW5wdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCphcmdzLCAqKmt3YXJncykgYXMgZmlsZW9iajoKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGZpbGVvYmoucmVhZCgpKQorCisgICAgICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCisgICAgICAgICAgICByb3VuZHRyaXAoImFiZGNcbiIsICJ3KyIpCisgICAgICAgICAgICByb3VuZHRyaXAoIlx1MDM5QiIsICJ3KyIsIGVuY29kaW5nPSJ1dGYtMTYiKQorICAgICAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKIAogCiAjIEhlbHBlciBmb3IgdGVzdF9kZWxfb25fc2h1dGRvd24KQEAgLTk1NiwxNiArOTAzLDEzIEBACiAgICAgICAgICAgICBkLmNsZWFyKCkKICAgICAgICAgICAgIGQudXBkYXRlKGMpCiAKLWNsYXNzIHRlc3RfVGVtcG9yYXJ5RGlyZWN0b3J5KFRDKToKK2NsYXNzIFRlc3RUZW1wb3JhcnlEaXJlY3RvcnkoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IFRlbXBvcmFyeURpcmVjdG9yeSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIHJlY3Vyc2U9MSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRtcCA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RGlyZWN0b3J5IikKKyAgICAgICAgdG1wID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKHRtcC5uYW1lLCBkaXIsIHByZSwgc3VmKQogICAgICAgICAjIENyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgc29tZSBmaWxlcwogICAgICAgICBpZiByZWN1cnNlOgpAQCAtMTA4OSwxMSArMTAzMyw4IEBACiAgICAgICAgICMgQ2FuIGJlIGNsZWFuZWQtdXAgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCiAgICAgICAgIGQgPSBzZWxmLmRvX2NyZWF0ZSgpCiAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgICAgICBkLmNsZWFudXAoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xlYW51cCIpCisgICAgICAgIGQuY2xlYW51cCgpCisgICAgICAgIGQuY2xlYW51cCgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQ2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTExMDQsMTAgKzEwNDUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWUpKQogCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlEaXJlY3RvcnkpCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5IGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQppbmRleCAzOTAxMTIwLi5jODZmNWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKQEAgLTExLDcgKzExLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQsIGluZGVudAogCiAKIGNsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMDAsNiArMTAwLDE0IEBACiAgICAgICAgIHJlc3VsdCA9IHdyYXBwZXIuZmlsbCh0ZXh0KQogICAgICAgICBzZWxmLmNoZWNrKHJlc3VsdCwgJ1xuJy5qb2luKGV4cGVjdCkpCiAKKyAgICAgICAgdGV4dCA9ICJcdFRlc3RcdGRlZmF1bHRcdFx0dGFic2l6ZS4iCisgICAgICAgIGV4cGVjdCA9IFsiICAgICAgICBUZXN0ICAgIGRlZmF1bHQgICAgICAgICB0YWJzaXplLiJdCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA4MCwgZXhwZWN0KQorCisgICAgICAgIHRleHQgPSAiXHRUZXN0XHRjdXN0b21cdFx0dGFic2l6ZS4iCisgICAgICAgIGV4cGVjdCA9IFsiICAgIFRlc3QgICAgY3VzdG9tICAgICAgdGFic2l6ZS4iXQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgODAsIGV4cGVjdCwgdGFic2l6ZT00KQorCiAgICAgZGVmIHRlc3RfZml4X3NlbnRlbmNlX2VuZGluZ3Moc2VsZik6CiAgICAgICAgIHdyYXBwZXIgPSBUZXh0V3JhcHBlcig2MCwgZml4X3NlbnRlbmNlX2VuZGluZ3M9VHJ1ZSkKIApAQCAtNjM0LDExICs2NDIsMTQ3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBkZWRlbnQodGV4dCkpCiAKIAorIyBUZXN0IHRleHR3cmFwLmluZGVudAorY2xhc3MgSW5kZW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlIGV4YW1wbGVzIHVzZWQgZm9yIHRlc3RzLiBJZiBhbnkgb2YgdGhlc2UgY2hhbmdlLCB0aGUgZXhwZWN0ZWQKKyAgICAjIHJlc3VsdHMgaW4gdGhlIHZhcmlvdXMgdGVzdCBjYXNlcyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KKyAgICAjIFRoZSByb3VuZHRyaXAgY2FzZXMgYXJlIHNlcGFyYXRlLCBiZWNhdXNlIHRleHR3cmFwLmRlZGVudCBkb2Vzbid0CisgICAgIyBoYW5kbGUgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICBST1VORFRSSVBfQ0FTRVMgPSAoCisgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLiIsCisgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblxuVGVzdGluZy4iLAorICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAiXG5IaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy5cbiIsCisgICAgKQorICAgIENBU0VTID0gUk9VTkRUUklQX0NBU0VTICsgKAorICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICJIaS5cclxuVGhpcyBpcyBhIHRlc3QuXHJcblRlc3RpbmcuXHJcbiIsCisgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAiXG5IaS5cclxuVGhpcyBpcyBhIHRlc3QuXG5cclxuVGVzdGluZy5cclxuXG4iLAorICAgICkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIGluZGVudCBzaG91bGQgZG8gbm90aGluZyBpZiAncHJlZml4JyBpcyBlbXB0eS4KKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9leHBsaWNpdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIFRoZSBzYW1lIGFzIHRlc3RfaW5kZW50X25vbWFyZ2luLCBidXQgZXhwbGljaXRseSByZXF1ZXN0aW5nCisgICAgICAgICMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGJ5IHBhc3NpbmcgTm9uZSBhcyB0aGUgcHJlZGljYXRlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJywgTm9uZSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfbm9tYXJnaW5fYWxsX2xpbmVzKHNlbGYpOgorICAgICAgICAjIFRoZSBzYW1lIGFzIHRlc3RfaW5kZW50X25vbWFyZ2luLCBidXQgdXNpbmcgdGhlIG9wdGlvbmFsCisgICAgICAgICMgcHJlZGljYXRlIGFyZ3VtZW50CisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBUcnVlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJywgcHJlZGljYXRlKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub19saW5lcyhzZWxmKToKKyAgICAgICAgIyBFeHBsaWNpdGx5IHNraXAgaW5kZW50aW5nIGFueSBsaW5lcworICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogRmFsc2UKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcgICAgJywgcHJlZGljYXRlKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9zcGFjZXMoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICcgICAgJykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3RhYnMoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICdcdFx0JykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX21peGVkKHNlbGYpOgorICAgICAgICAjIEEgd2hpdGVzcGFjZSBwcmVmaXggc2hvdWxkIHJvdW5kdHJpcCB3aXRoIGRlZGVudAorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLlJPVU5EVFJJUF9DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVkZW50KGluZGVudCh0ZXh0LCAnIFx0ICBcdCAnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHQgaW5kZW50aW5nIG9mIGxpbmVzIHRoYXQgYXJlIG5vdCB3aGl0ZXNwYWNlIG9ubHkKKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICJcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICJcbiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXG5cclxuICBUZXN0aW5nLlxyXG5cbiIsCisgICAgICAgICkKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4KSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2V4cGxpY2l0X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0IGluZGVudGluZyBvZiBsaW5lcyB0aGF0IGFyZSBub3Qgd2hpdGVzcGFjZSBvbmx5CisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiXG4gIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cclxuICBUZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiXG4gIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXHJcbiAgVGVzdGluZy5cclxuXG4iLAorICAgICAgICApCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCwgTm9uZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9hbGxfbGluZXMoc2VsZik6CisgICAgICAgICMgQWRkICdwcmVmaXgnIHRvIGFsbCBsaW5lcywgaW5jbHVkaW5nIHdoaXRlc3BhY2Utb25seSBvbmVzLgorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiICBcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICIgIFxuICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cbiAgXHJcbiAgVGVzdGluZy5cclxuICBcbiIsCisgICAgICAgICkKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IFRydWUKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4LCBwcmVkaWNhdGUpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZW1wdHlfbGluZXMoc2VsZik6CisgICAgICAgICMgQWRkICdwcmVmaXgnIHNvbGVseSB0byB3aGl0ZXNwYWNlLW9ubHkgbGluZXMuCisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG4gIFxuVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICIgIFxuSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cclxuVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIiAgXG5IaS5cclxuVGhpcyBpcyBhIHRlc3QuXG4gIFxyXG5UZXN0aW5nLlxyXG4gIFxuIiwKKyAgICAgICAgKQorICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogbm90IGxpbmUuc3RyaXAoKQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZSksIGV4cGVjdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoV3JhcFRlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9uZ1dvcmRUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVudFRlc3RDYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZGVudFRlc3RDYXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVkZW50VGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRlbnRUZXN0Q2FzZSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQppbmRleCA3NzkxOTM1Li40YTVkN2JlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQpAQCAtMTEsOCArMTEsOCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOCi10aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCisgICAgdmVyYm9zZSwgaW1wb3J0X21vZHVsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHJlYXBfdGhyZWFkcywgZm9yZ2V0LCB1bmxpbmspCiB0aHJlYWRpbmcgPSBpbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiBkZWYgdGFzayhOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMpOgpAQCAtMzAsNyArMzAsNyBAQAogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgZXJyb3JzLmFwcGVuZChlLndpdGhfdHJhY2ViYWNrKE5vbmUpKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIGRvbmVfdGFza3MuYXBwZW5kKHRocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgZG9uZV90YXNrcy5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogICAgICAgICBmaW5pc2hlZCA9IGxlbihkb25lX3Rhc2tzKSA9PSBOCiAgICAgICAgIGlmIGZpbmlzaGVkOgogICAgICAgICAgICAgZG9uZS5zZXQoKQpAQCAtNjIsNyArNjIsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5udW1jYWxscyA9IDAKICAgICAgICAgc2VsZi54ID0gMAotICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAjIFNpbXVsYXRlIHNvbWUgdGhyZWFkLXVuc2FmZSBiZWhhdmlvdXIuIElmIGNhbGxzIHRvIGZpbmRfbW9kdWxlKCkKQEAgLTExMyw3ICsxMTMsOSBAQAogICAgICAgICAgICAgZG9uZV90YXNrcyA9IFtdCiAgICAgICAgICAgICBkb25lLmNsZWFyKCkKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKE4pOgotICAgICAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKHRhc2ssIChOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKKyAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKKyAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgICAgIGRvbmUud2FpdCg2MCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyb3JzKQogICAgICAgICAgICAgaWYgdmVyYm9zZToKQEAgLTEyNCw3ICsxMjYsNyBAQAogCiAgICAgZGVmIHRlc3RfcGFyYWxsZWxfbWV0YV9wYXRoKHNlbGYpOgogICAgICAgICBmaW5kZXIgPSBGaW5kZXIoKQotICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChmaW5kZXIpCisgICAgICAgIHN5cy5tZXRhX3BhdGguaW5zZXJ0KDAsIGZpbmRlcikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jaGVja19wYXJhbGxlbF9tb2R1bGVfaW5pdCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZmluZGVyLm51bWNhbGxzLCAwKQpAQCAtMTQzLDcgKzE0NSw3IEBACiAgICAgICAgIGRlZiBwYXRoX2hvb2socGF0aCk6CiAgICAgICAgICAgICBmaW5kZXIuZmluZF9tb2R1bGUoJycpCiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQocGF0aF9ob29rKQorICAgICAgICBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgcGF0aF9ob29rKQogICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChmbHVzaGluZ19maW5kZXIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgRmx1c2ggdGhlIGNhY2hlIGEgZmlyc3QgdGltZQpAQCAtMTg1LDcgKzE4Nyw3IEBACiAgICAgICAgICAgICBjb250ZW50cyA9IGNvbnRlbnRzICUgeydkZWxheSc6IGRlbGF5fQogICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihURVNURk4sIG5hbWUgKyAiLnB5IiksICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgZi53cml0ZShjb250ZW50cy5lbmNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLm1vZHVsZXMucG9wLCBuYW1lLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZvcmdldCwgbmFtZSkKIAogICAgICAgICByZXN1bHRzID0gW10KICAgICAgICAgZGVmIGltcG9ydF9hYigpOgpAQCAtMjAyLDkgKzIwNCwzOSBAQAogICAgICAgICB0Mi5qb2luKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocmVzdWx0cyksIHsnYScsICdiJ30pCiAKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pbXBvcnQoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgZGVmIHRhcmdldCgpOgorICAgICAgICAgICAgICAgIGltcG9ydCByYW5kb20KKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10YXJnZXQpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgIHQuam9pbigpIiIiCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMucGF0aC5yZW1vdmUsIG9zLmN1cmRpcikKKyAgICAgICAgZmlsZW5hbWUgPSBURVNURk4gKyAiLnB5IgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvZGUuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZvcmdldCwgVEVTVEZOKQorICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKIAorCitAcmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRocmVhZGVkSW1wb3J0VGVzdHMpCisgICAgb2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorICAgICMgSXNzdWUgIzE1NTk5OiBGcmVlQlNEL0tWTSBjYW5ub3QgaGFuZGxlIGdpbF9pbnRlcnZhbCA9PSAxLgorICAgIG5ld19zd2l0Y2hpbnRlcnZhbCA9IDAuMDAwMDEgaWYgJ2ZyZWVic2QnIGluIHN5cy5wbGF0Zm9ybSBlbHNlIDAuMDAwMDAwMDEKKyAgICB0cnk6CisgICAgICAgIG9sZF9zd2l0Y2hpbnRlcnZhbCA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChuZXdfc3dpdGNoaW50ZXJ2YWwpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICBydW5fdW5pdHRlc3QoVGhyZWFkZWRJbXBvcnRUZXN0cykKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBvbGRfc3dpdGNoaW50ZXJ2YWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwob2xkX3N3aXRjaGludGVydmFsKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IDE3YmU4NGIuLmJiOGQ5YjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgZXhjZXB0aW9uID0gY3R5cGVzLnB5X29iamVjdChBc3luY0V4YykKIAogICAgICAgICAjIEZpcnN0IGNoZWNrIGl0IHdvcmtzIHdoZW4gc2V0dGluZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIHNhbWUgdGhyZWFkLgotICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdCA9IHNldF9hc3luY19leGMoY3R5cGVzLmNfbG9uZyh0aWQpLCBleGNlcHRpb24pCkBAIC0yMDQsNyArMjA0LDcgQEAKIAogICAgICAgICBjbGFzcyBXb3JrZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgICAgICAgICAgc2VsZi5pZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtNDA5LDYgKzQwOSwxNCBAQAogICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdkYWVtb24nIGluIHJlcHIodCkpCiAKKyAgICBkZWYgdGVzdF9kZWFtb25fcGFyYW0oc2VsZik6CisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmRhZW1vbikKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoZGFlbW9uPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQuZGFlbW9uKQorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChkYWVtb249VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZGFlbW9uKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgJ3Rlc3QgbmVlZHMgZm9yaygpJykKICAgICBkZWYgdGVzdF9kdW1teV90aHJlYWRfYWZ0ZXJfZm9yayhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTQzMDg6IGEgZHVtbXkgdGhyZWFkIGluIHRoZSBhY3RpdmUgbGlzdCBkb2Vzbid0IG1lc3MgdXAKQEAgLTc0Miw2ICs3NTAsMTAgQEAKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZXRhdHRyLCB0aHJlYWQsICJkYWVtb24iLCBUcnVlKQogCisgICAgZGVmIHRlc3RfcmVsZWFzaW5nX3VuYWNxdWlyZWRfbG9jayhzZWxmKToKKyAgICAgICAgbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsb2NrLnJlbGVhc2UpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICd0ZXN0IG1hY29zeCBwcm9ibGVtJykKICAgICBkZWYgdGVzdF9yZWN1cnNpb25fbGltaXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgOTY3MApAQCAtODAzLDYgKzgxNSw3IEBACiBjbGFzcyBCYXJyaWVyVGVzdHMobG9ja190ZXN0cy5CYXJyaWVyVGVzdHMpOgogICAgIGJhcnJpZXJ0eXBlID0gc3RhdGljbWV0aG9kKHRocmVhZGluZy5CYXJyaWVyKQogCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KExvY2tUZXN0cywgUHlSTG9ja1Rlc3RzLCBDUkxvY2tUZXN0cywgRXZlbnRUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbkFzUkxvY2tUZXN0cywgQ29uZGl0aW9uVGVzdHMsCkBAIC04MTAsNyArODIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkSm9pbk9uU2h1dGRvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRpbmdFeGNlcHRpb25UZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnJpZXJUZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFycmllclRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CmluZGV4IGUwYWYzMWQuLmY5NzVhNzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKQEAgLTE0LDEwICsxNCw4IEBACiBwcm9jZXNzX3BpZCA9IG9zLmdldHBpZCgpCiBzaWduYWxsZWRfYWxsPXRocmVhZC5hbGxvY2F0ZV9sb2NrKCkKIAotIyBJc3N1ZSAjMTEyMjM6IExvY2tzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIG11dGV4IGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSBvZgotIyB0aGUgcHRocmVhZCBsaWJyYXJ5IG9uIEZyZWVCU0Q2LiBQT1NJWCBjb25kaXRpb24gdmFyaWFibGVzIGNhbm5vdCBiZQotIyBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIChzZWUgcHRocmVhZF9jb25kX3dhaXQgbWFudWFsIHBhZ2UpLgotVVNJTkdfUFRIUkVBRF9DT05EID0gKHN5cy5wbGF0Zm9ybSA9PSAnZnJlZWJzZDYnKQorVVNJTkdfUFRIUkVBRF9DT05EID0gKHN5cy50aHJlYWRfaW5mby5uYW1lID09ICdwdGhyZWFkJworICAgICAgICAgICAgICAgICAgICAgIGFuZCBzeXMudGhyZWFkX2luZm8ubG9jayA9PSAnbXV0ZXgrY29uZCcpCiAKIGRlZiByZWdpc3RlclNpZ25hbHMoZm9yX3VzcjEsIGZvcl91c3IyLCBmb3JfYWxybSk6CiAgICAgdXNyMSA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGZvcl91c3IxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CmluZGV4IGNlNTdkODcuLjYzZTE0NTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKQEAgLTQsNyArNCwxNyBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgcGxhdGZvcm0KK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorCisjIE1heCB5ZWFyIGlzIG9ubHkgbGltaXRlZCBieSB0aGUgc2l6ZSBvZiBDIGludC4KK1NJWkVPRl9JTlQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NJWkVPRl9JTlQnKSBvciA0CitUSU1FX01BWFlFQVIgPSAoMSA8PCA4ICogU0laRU9GX0lOVCAtIDEpIC0gMQorVElNRV9NSU5ZRUFSID0gLVRJTUVfTUFYWUVBUiAtIDEKKwogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNyw5ICsyNyw1MyBAQAogICAgICAgICB0aW1lLnRpbWV6b25lCiAgICAgICAgIHRpbWUudHpuYW1lCiAKKyAgICBkZWYgdGVzdF90aW1lKHNlbGYpOgorICAgICAgICB0aW1lLnRpbWUoKQorICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygndGltZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLmFkanVzdGFibGUpCisKICAgICBkZWYgdGVzdF9jbG9jayhzZWxmKToKICAgICAgICAgdGltZS5jbG9jaygpCiAKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ2Nsb2NrJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8uYWRqdXN0YWJsZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX2dldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX2dldHRpbWUoKScpCisgICAgZGVmIHRlc3RfY2xvY2tfcmVhbHRpbWUoc2VsZik6CisgICAgICAgIHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfZ2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfZ2V0dGltZSgpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdDTE9DS19NT05PVE9OSUMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLkNMT0NLX01PTk9UT05JQycpCisgICAgZGVmIHRlc3RfY2xvY2tfbW9ub3RvbmljKHNlbGYpOgorICAgICAgICBhID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKQorICAgICAgICBiID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhLCBiKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfZ2V0cmVzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19nZXRyZXMoKScpCisgICAgZGVmIHRlc3RfY2xvY2tfZ2V0cmVzKHNlbGYpOgorICAgICAgICByZXMgPSB0aW1lLmNsb2NrX2dldHJlcyh0aW1lLkNMT0NLX1JFQUxUSU1FKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocmVzLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJlcywgMS4wKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfc2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfc2V0dGltZSgpJykKKyAgICBkZWYgdGVzdF9jbG9ja19zZXR0aW1lKHNlbGYpOgorICAgICAgICB0ID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FLCB0KQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIGhhc2F0dHIodGltZSwgJ0NMT0NLX01PTk9UT05JQycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSwgdGltZS5DTE9DS19NT05PVE9OSUMsIDApCisKICAgICBkZWYgdGVzdF9jb252ZXJzaW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLmN0aW1lKHNlbGYudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5hc2N0aW1lKHRpbWUubG9jYWx0aW1lKHNlbGYudCkpKQpAQCAtMjcsNiArODEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLnQpKQogCiAgICAgZGVmIHRlc3Rfc2xlZXAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuc2xlZXAsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0aW1lLnNsZWVwLCAtMSkKICAgICAgICAgdGltZS5zbGVlcCgxLjIpCiAKICAgICBkZWYgdGVzdF9zdHJmdGltZShzZWxmKToKQEAgLTQ3LDI4ICsxMDMsMzQgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZSgnJWYnKQogCi0gICAgZGVmIF9ib3VuZHNfY2hlY2tpbmcoc2VsZiwgZnVuYz10aW1lLnN0cmZ0aW1lKToKKyAgICBkZWYgX2JvdW5kc19jaGVja2luZyhzZWxmLCBmdW5jKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzdHJmdGltZSgpIGNoZWNrcyB0aGUgYm91bmRzIG9mIHRoZSB2YXJpb3VzIHBhcnRzCi0gICAgICAgICNvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KKyAgICAgICAgIyBvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KIAogICAgICAgICAjIFRoZSB5ZWFyIGZpZWxkIGlzIHRlc3RlZCBieSBvdGhlciB0ZXN0IGNhc2VzIGFib3ZlCiAKICAgICAgICAgIyBDaGVjayBtb250aCBbMSwgMTJdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMTIsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgLTEsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMTMsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBkYXkgb2YgbW9udGggWzEsIDMxXSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDMxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIC0xLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDMyLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgaG91ciBbMCwgMjNdCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDIzLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIC0xLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDI0LCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgbWludXRlIFswLCA1OV0KKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgNTksIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgLTEsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKQEAgLTc4LDE1ICsxNDAsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgLTEsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDOTkgb25seSByZXF1aXJlcyBhbGxvd2luZyBmb3Igb25lIGxlYXAgc2Vjb25kLCBidXQgUHl0aG9uJ3MgZG9jcyBzYXkKICAgICAgICAgIyBhbGxvdyB0d28gbGVhcCBzZWNvbmRzICgwLi42MSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgNjAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgNjEsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgNjIsIDAsIDEsIC0xKSkKICAgICAgICAgIyBObyBjaGVjayBmb3IgdXBwZXItYm91bmQgZGF5IG9mIHdlZWs7CiAgICAgICAgICMgIHZhbHVlIGZvcmNlZCBpbnRvIHJhbmdlIGJ5IGEgYGAlIDdgYCBjYWxjdWxhdGlvbi4KICAgICAgICAgIyBTdGFydCBjaGVjayBhdCAtMiBzaW5jZSBnZXR0bWFyZygpIGluY3JlbWVudHMgdmFsdWUgYmVmb3JlIHRha2luZwogICAgICAgICAjICBtb2R1bG8uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgLTEsIDEsIC0xKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgKzYsIDEsIC0xKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDAsIC0yLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgZGF5IG9mIHRoZSB5ZWFyIFsxLCAzNjZdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgMCwgMzY2LCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIC0xLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCkBAIC05NiwxMiArMTY0LDEzIEBACiAgICAgICAgIHNlbGYuX2JvdW5kc19jaGVja2luZyhsYW1iZGEgdHVwOiB0aW1lLnN0cmZ0aW1lKCcnLCB0dXApKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF92YWx1ZXNfZm9yX3plcm8oc2VsZik6Ci0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdXNpbmcgYWxsIHplcm9zIHVzZXMgdGhlIHByb3BlciBkZWZhdWx0IHZhbHVlcy4KLSAgICAgICAgIyBObyB0ZXN0IGZvciBkYXlsaWdodCBzYXZpbmdzIHNpbmNlIHN0cmZ0aW1lKCkgZG9lcyBub3QgY2hhbmdlIG91dHB1dAotICAgICAgICAjIGJhc2VkIG9uIGl0cyB2YWx1ZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB1c2luZyBhbGwgemVyb3MgdXNlcyB0aGUgcHJvcGVyIGRlZmF1bHQKKyAgICAgICAgIyB2YWx1ZXMuICBObyB0ZXN0IGZvciBkYXlsaWdodCBzYXZpbmdzIHNpbmNlIHN0cmZ0aW1lKCkgZG9lcworICAgICAgICAjIG5vdCBjaGFuZ2Ugb3V0cHV0IGJhc2VkIG9uIGl0cyB2YWx1ZSBhbmQgbm8gdGVzdCBmb3IgeWVhcgorICAgICAgICAjIGJlY2F1c2Ugc3lzdGVtcyB2YXJ5IGluIHRoZWlyIHN1cHBvcnQgZm9yIHllYXIgMC4KICAgICAgICAgZXhwZWN0ZWQgPSAiMjAwMCAwMSAwMSAwMCAwMCAwMCAxIDAwMSIKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICByZXN1bHQgPSB0aW1lLnN0cmZ0aW1lKCIlWSAlbSAlZCAlSCAlTSAlUyAldyAlaiIsICgwLCkqOSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHRpbWUuc3RyZnRpbWUoIiVZICVtICVkICVIICVNICVTICV3ICVqIiwgKDIwMDAsKSsoMCwpKjgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X3N0cnB0aW1lKHNlbGYpOgpAQCAtMTI4LDExICsxOTcsMTMgQEAKICAgICAgICAgdGltZS5hc2N0aW1lKHRpbWUuZ210aW1lKHNlbGYudCkpCiAKICAgICAgICAgIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCi0gICAgICAgIHNpemVvZl9pbnQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NJWkVPRl9JTlQnKSBvciA0Ci0gICAgICAgIGJpZ3llYXIgPSAoMSA8PCA4ICogc2l6ZW9mX2ludCAtIDEpIC0gMQotICAgICAgICBhc2MgPSB0aW1lLmFzY3RpbWUoKGJpZ3llYXIsIDYsIDEpICsgKDAsKSo2KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzY1stbGVuKHN0cihiaWd5ZWFyKSk6XSwgc3RyKGJpZ3llYXIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsIChiaWd5ZWFyICsgMSwpICsgKDAsKSo4KQorICAgICAgICBmb3IgYmlneWVhciBpbiBUSU1FX01BWFlFQVIsIFRJTUVfTUlOWUVBUjoKKyAgICAgICAgICAgIGFzYyA9IHRpbWUuYXNjdGltZSgoYmlneWVhciwgNiwgMSkgKyAoMCwpICogNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNjWy1sZW4oc3RyKGJpZ3llYXIpKTpdLCBzdHIoYmlneWVhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRpbWUuYXNjdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKFRJTUVfTUFYWUVBUiArIDEsKSArICgwLCkgKiA4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChUSU1FX01JTllFQVIgLSAxLCkgKyAoMCwpICogOCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsICgwLCkgKiAxMCkKQEAgLTE1NSw4ICsyMjYsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuY3RpbWUodGVzdHZhbClbMjA6XSwgc3RyKHllYXIpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cih0aW1lLCAidHpzZXQiKSwKLSAgICAgICAgInRpbWUgbW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgdHpzZXQiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgInR6c2V0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUgbW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgdHpzZXQiKQogICAgIGRlZiB0ZXN0X3R6c2V0KHNlbGYpOgogCiAgICAgICAgIGZyb20gb3MgaW1wb3J0IGVudmlyb24KQEAgLTIwOCwxMSArMjc5LDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRpbWUuZ210aW1lKHhtYXMyMDAyKSwgdGltZS5sb2NhbHRpbWUoeG1hczIwMDIpKQogCiAgICAgICAgICAgICAjIElzc3VlICMxMTg4NjogQXVzdHJhbGlhbiBFYXN0ZXJuIFN0YW5kYXJkIFRpbWUgKFVUQysxMCkgaXMgY2FsbGVkCi0gICAgICAgICAgICAjICJFU1QiIChhcyBFYXN0ZXJuIFN0YW5kYXJkIFRpbWUsIFVUQy01KSBpbnN0ZWFkIG9mICJBRVNUIiBvbiBzb21lCi0gICAgICAgICAgICAjIG9wZXJhdGluZyBzeXN0ZW1zIChlLmcuIEZyZWVCU0QpLCB3aGljaCBpcyB3cm9uZy4gU2VlIGZvciBleGFtcGxlCi0gICAgICAgICAgICAjIHRoaXMgYnVnOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTM4MTAKKyAgICAgICAgICAgICMgIkVTVCIgKGFzIEVhc3Rlcm4gU3RhbmRhcmQgVGltZSwgVVRDLTUpIGluc3RlYWQgb2YgIkFFU1QiCisgICAgICAgICAgICAjIChub24tRFNUIHRpbWV6b25lKSwgYW5kICJFRFQiIGluc3RlYWQgb2YgIkFFRFQiIChEU1QgdGltZXpvbmUpLAorICAgICAgICAgICAgIyBvbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIChlLmcuIEZyZWVCU0QpLCB3aGljaCBpcyB3cm9uZy4gU2VlIGZvcgorICAgICAgICAgICAgIyBleGFtcGxlIHRoaXMgYnVnOgorICAgICAgICAgICAgIyBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTM4MTAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGltZS50em5hbWVbMF0sICgnQUVTVCcgJ0VTVCcpLCB0aW1lLnR6bmFtZVswXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lLnR6bmFtZVsxXSA9PSAnQUVEVCcsIHN0cih0aW1lLnR6bmFtZVsxXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGltZS50em5hbWVbMV0gaW4gKCdBRURUJywgJ0VEVCcpLCBzdHIodGltZS50em5hbWVbMV0pKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGltZS50em5hbWUpLCAyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLmRheWxpZ2h0LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLnRpbWV6b25lLCAtMzYwMDApCkBAIC0yMzUsNyArMzA4LDcgQEAKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBmdW5jIGluIHRpbWUuY3RpbWUsIHRpbWUuZ210aW1lLCB0aW1lLmxvY2FsdGltZToKICAgICAgICAgICAgIGZvciB1bnJlYXNvbmFibGUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLCB1bnJlYXNvbmFibGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZnVuYywgdW5yZWFzb25hYmxlKQogCiAgICAgZGVmIHRlc3RfY3RpbWVfd2l0aG91dF9hcmcoc2VsZik6CiAgICAgICAgICMgTm90IHN1cmUgaG93IHRvIGNoZWNrIHRoZSB2YWx1ZXMsIHNpbmNlIHRoZSBjbG9jayBjb3VsZCB0aWNrCkBAIC0yNTgsNiArMzMxLDExNyBAQAogICAgICAgICB0MSA9IHRpbWUubWt0aW1lKGx0MSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCh0MSwgdDAsIGRlbHRhPTAuMikKIAorICAgIGRlZiB0ZXN0X21rdGltZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTcyNjY4NworICAgICAgICBmb3IgdCBpbiAoLTIsIC0xLCAwLCAxKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKHQpCisgICAgICAgICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLm1rdGltZSh0dCksIHQpCisKKyAgICAjIElzc3VlICMxMzMwOTogcGFzc2luZyBleHRyZW1lIHZhbHVlcyB0byBta3RpbWUoKSBvciBsb2NhbHRpbWUoKQorICAgICMgYm9ya3MgdGhlIGdsaWJjJ3MgaW50ZXJuYWwgdGltZXpvbmUgZGF0YS4KKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhwbGF0Zm9ybS5saWJjX3ZlcigpWzBdICE9ICdnbGliYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpc2FibGVkIGJlY2F1c2Ugb2YgYSBidWcgaW4gZ2xpYmMuIElzc3VlICMxMzMwOSIpCisgICAgZGVmIHRlc3RfbWt0aW1lX2Vycm9yKHNlbGYpOgorICAgICAgICAjIEl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsaWFibHkgbWFrZSBta3RpbWUgcmV0dXJuIGVycm9yCisgICAgICAgICMgb24gYWxsIHBsYXRmb20uICBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgZXhjZXB0aW9uCisgICAgICAgICMgdGhhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZCBmb3IgYW4gZXh0cmVtZSB2YWx1ZS4KKyAgICAgICAgdHQgPSB0aW1lLmdtdGltZShzZWxmLnQpCisgICAgICAgIHR6bmFtZSA9IHRpbWUuc3RyZnRpbWUoJyVaJywgdHQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodHpuYW1lLCAnTE1UJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5ta3RpbWUoKC0xLCAxLCAxLCAwLCAwLCAwLCAtMSwgLTEsIC0xKSkKKyAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5zdHJmdGltZSgnJVonLCB0dCksIHR6bmFtZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ21vbm90b25pYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUubW9ub3RvbmljJykKKyAgICBkZWYgdGVzdF9tb25vdG9uaWMoc2VsZik6CisgICAgICAgIHQxID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgdDIgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIGR0ID0gdDIgLSB0MQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodDIsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGR0LCAwLjEsIGRlbHRhPTAuMikKKworICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygnbW9ub3RvbmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8uYWRqdXN0YWJsZSkKKworICAgIGRlZiB0ZXN0X3BlcmZfY291bnRlcihzZWxmKToKKyAgICAgICAgdGltZS5wZXJmX2NvdW50ZXIoKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc190aW1lKHNlbGYpOgorICAgICAgICAjIHByb2Nlc3NfdGltZSgpIHNob3VsZCBub3QgaW5jbHVkZSB0aW1lIHNwZW5kIGR1cmluZyBhIHNsZWVwCisgICAgICAgIHN0YXJ0ID0gdGltZS5wcm9jZXNzX3RpbWUoKQorICAgICAgICB0aW1lLnNsZWVwKDAuMTAwKQorICAgICAgICBzdG9wID0gdGltZS5wcm9jZXNzX3RpbWUoKQorICAgICAgICAjIHVzZSAyMCBtcyBiZWNhdXNlIHByb2Nlc3NfdGltZSgpIGhhcyB1c3VhbGx5IGEgcmVzb2x1dGlvbiBvZiAxNSBtcworICAgICAgICAjIG9uIFdpbmRvd3MKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHN0b3AgLSBzdGFydCwgMC4wMjApCisKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ3Byb2Nlc3NfdGltZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLmFkanVzdGFibGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdtb25vdG9uaWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLm1vbm90b25pYycpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfc2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfc2V0dGltZScpCisgICAgZGVmIHRlc3RfbW9ub3RvbmljX3NldHRpbWUoc2VsZik6CisgICAgICAgIHQxID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICByZWFsdGltZSA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FKQorICAgICAgICAjIGp1bXAgYmFja3dhcmQgd2l0aCBhbiBvZmZzZXQgb2YgMSBob3VyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FLCByZWFsdGltZSAtIDM2MDApCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdChlcnIpCisgICAgICAgIHQyID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSwgcmVhbHRpbWUpCisgICAgICAgICMgbW9ub3RvbmljIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHQyLCB0MSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMzg0NzogY2hlY2sgZm9yIGxvY2FsdGltZSgpIGZhaWx1cmUKKyAgICAgICAgaW52YWxpZF90aW1lX3QgPSBOb25lCisgICAgICAgIGZvciB0aW1lX3QgaW4gKC0xLCAyKiozMCwgMioqMzMsIDIqKjYwKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0aW1lLmxvY2FsdGltZSh0aW1lX3QpCisgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJuZWVkIDY0LWJpdCB0aW1lX3QiKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgaW52YWxpZF90aW1lX3QgPSB0aW1lX3QKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBpbnZhbGlkX3RpbWVfdCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidW5hYmxlIHRvIGZpbmQgYW4gaW52YWxpZCB0aW1lX3QgdmFsdWUiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHRpbWUubG9jYWx0aW1lLCBpbnZhbGlkX3RpbWVfdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgdGltZS5jdGltZSwgaW52YWxpZF90aW1lX3QpCisKKyAgICBkZWYgdGVzdF9nZXRfY2xvY2tfaW5mbyhzZWxmKToKKyAgICAgICAgY2xvY2tzID0gWydjbG9jaycsICdwZXJmX2NvdW50ZXInLCAncHJvY2Vzc190aW1lJywgJ3RpbWUnXQorICAgICAgICBpZiBoYXNhdHRyKHRpbWUsICdtb25vdG9uaWMnKToKKyAgICAgICAgICAgIGNsb2Nrcy5hcHBlbmQoJ21vbm90b25pYycpCisKKyAgICAgICAgZm9yIG5hbWUgaW4gY2xvY2tzOgorICAgICAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8obmFtZSkKKyAgICAgICAgICAgICNzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mbywgZGljdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLmltcGxlbWVudGF0aW9uLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluZm8uaW1wbGVtZW50YXRpb24sICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8ubW9ub3RvbmljLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8ucmVzb2x1dGlvbiwgZmxvYXQpCisgICAgICAgICAgICAjIDAuMCA8IHJlc29sdXRpb24gPD0gMS4wCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoaW5mby5yZXNvbHV0aW9uLCAwLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChpbmZvLnJlc29sdXRpb24sIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLmFkanVzdGFibGUsIGJvb2wpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGltZS5nZXRfY2xvY2tfaW5mbywgJ3h4eCcpCisKKwogY2xhc3MgVGVzdExvY2FsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLm9sZGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKQEAgLTI3NiwxOSArNDYwLDEyIEBACiAKIAogY2xhc3MgX0Jhc2VZZWFyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYWNjZXB0MmR5ZWFyID0gTm9uZQotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnNhdmVkX2FjY2VwdDJkeWVhciA9IHRpbWUuYWNjZXB0MmR5ZWFyCi0gICAgICAgIHRpbWUuYWNjZXB0MmR5ZWFyID0gc2VsZi5hY2NlcHQyZHllYXIKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgdGltZS5hY2NlcHQyZHllYXIgPSBzZWxmLnNhdmVkX2FjY2VwdDJkeWVhcgotCiAgICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCiBjbGFzcyBfVGVzdEFzY3RpbWVZZWFyOgorICAgIF9mb3JtYXQgPSAnJWQnCisKICAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKICAgICAgICAgcmV0dXJuIHRpbWUuYXNjdGltZSgoeSwpICsgKDAsKSAqIDgpLnNwbGl0KClbLTFdCiAKQEAgLTI5OCwxMTQgKzQ3NSwyMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDU2Nzg5KSwgJzEyMzQ1Njc4OScpCiAKIGNsYXNzIF9UZXN0U3RyZnRpbWVZZWFyOgotICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgotICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJVknLCAoeSwpICsgKDAsKSAqIDgpLnNwbGl0KClbLTFdCiAKLSAgICBkZWYgdGVzdF9sYXJnZV95ZWFyKHNlbGYpOgorICAgICMgSXNzdWUgMTMzMDU6ICBGb3IgeWVhcnMgPCAxMDAwLCB0aGUgdmFsdWUgaXMgbm90IGFsd2F5cworICAgICMgcGFkZGVkIHRvIDQgZGlnaXRzIGFjcm9zcyBwbGF0Zm9ybXMuICBUaGUgQyBzdGFuZGFyZAorICAgICMgYXNzdW1lcyB5ZWFyID49IDE5MDAsIHNvIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIG51bWJlcgorICAgICMgb2YgZGlnaXRzLgorCisgICAgaWYgdGltZS5zdHJmdGltZSgnJVknLCAoMSwpICsgKDAsKSAqIDgpID09ICcwMDAxJzoKKyAgICAgICAgX2Zvcm1hdCA9ICclMDRkJworICAgIGVsc2U6CisgICAgICAgIF9mb3JtYXQgPSAnJWQnCisKKyAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKKyAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyVZJywgKHksKSArICgwLCkgKiA4KQorCisgICAgZGVmIHRlc3RfNGR5ZWFyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgd2UgY2FuIHJldHVybiB0aGUgemVybyBwYWRkZWQgdmFsdWUuCisgICAgICAgIGlmIHNlbGYuX2Zvcm1hdCA9PSAnJTA0ZCc6CisgICAgICAgICAgICBzZWxmLnRlc3RfeWVhcignJTA0ZCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWYgeWVhcjRkKHkpOgorICAgICAgICAgICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclNFknLCAoeSwpICsgKDAsKSAqIDgpCisgICAgICAgICAgICBzZWxmLnRlc3RfeWVhcignJTA0ZCcsIGZ1bmM9eWVhcjRkKQorCisgICAgZGVmIHNraXBfaWZfbm90X3N1cHBvcnRlZCh5KToKKyAgICAgICAgbXNnID0gInN0cmZ0aW1lKCkgaXMgbGltaXRlZCB0byBbMTsgOTk5OV0gd2l0aCBWaXN1YWwgU3R1ZGlvIgogICAgICAgICAjIENoZWNrIHRoYXQgaXQgZG9lc24ndCBjcmFzaCBmb3IgeWVhciA+IDk5OTkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGV4dCA9IHNlbGYueWVhcnN0cigxMjM0NSkKKyAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVZJywgKHksKSArICgwLCkgKiA4KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICMgc3RyZnRpbWUoKSBpcyBsaW1pdGVkIHRvIFsxOyA5OTk5XSB3aXRoIFZpc3VhbCBTdHVkaW8KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICcxMjM0NScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1Njc4OSksICcxMjM0NTY3ODknKQorICAgICAgICAgICAgY29uZCA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25kID0gVHJ1ZQorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyhjb25kLCBtc2cpCiAKLWNsYXNzIF9UZXN0MmRZZWFyKF9CYXNlWWVhclRlc3QpOgotICAgIGFjY2VwdDJkeWVhciA9IDEKKyAgICBAc2tpcF9pZl9ub3Rfc3VwcG9ydGVkKDEwMDAwKQorICAgIGRlZiB0ZXN0X2xhcmdlX3llYXIoc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLnRlc3RfbGFyZ2VfeWVhcigpCiAKLSAgICBkZWYgdGVzdF95ZWFyKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDApLCAnMjAwMCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig2OSksICcxOTY5JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDY4KSwgJzIwNjgnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoOTkpLCAnMTk5OScpCisgICAgQHNraXBfaWZfbm90X3N1cHBvcnRlZCgwKQorICAgIGRlZiB0ZXN0X25lZ2F0aXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS50ZXN0X25lZ2F0aXZlKCkKIAotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYueWVhcnN0ciwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYueWVhcnN0ciwgMTAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnllYXJzdHIsIDk5OSkKKyAgICBkZWwgc2tpcF9pZl9ub3Rfc3VwcG9ydGVkCisKIAogY2xhc3MgX1Rlc3Q0ZFllYXIoX0Jhc2VZZWFyVGVzdCk6Ci0gICAgYWNjZXB0MmR5ZWFyID0gMAorICAgIF9mb3JtYXQgPSAnJWQnCiAKLSAgICBkZWYgdGVzdF95ZWFyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cigxKSwgICAgICgnMScsICcwMDAxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDY4KSwgICAoJzY4JywgJzAwNjgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoNjkpLCAgICgnNjknLCAnMDA2OScpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig5OSksICAgKCc5OScsICcwMDk5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDk5OSksICgnOTk5JywgJzA5OTknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoOTk5OSksICc5OTk5JykKKyAgICBkZWYgdGVzdF95ZWFyKHNlbGYsIGZtdD1Ob25lLCBmdW5jPU5vbmUpOgorICAgICAgICBmbXQgPSBmbXQgb3Igc2VsZi5fZm9ybWF0CisgICAgICAgIGZ1bmMgPSBmdW5jIG9yIHNlbGYueWVhcnN0cgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoMSksICAgIGZtdCAlIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg2OCksICAgZm10ICUgNjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg2OSksICAgZm10ICUgNjkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg5OSksICAgZm10ICUgOTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg5OTkpLCAgZm10ICUgOTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoOTk5OSksIGZtdCAlIDk5OTkpCisKKyAgICBkZWYgdGVzdF9sYXJnZV95ZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NSksICcxMjM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1Njc4OSksICcxMjM0NTY3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cihUSU1FX01BWFlFQVIpLCBzdHIoVElNRV9NQVhZRUFSKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi55ZWFyc3RyLCBUSU1FX01BWFlFQVIgKyAxKQogCiAgICAgZGVmIHRlc3RfbmVnYXRpdmUoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRleHQgPSBzZWxmLnllYXJzdHIoLTEpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgIyBzdHJmdGltZSgpIGlzIGxpbWl0ZWQgdG8gWzE7IDk5OTldIHdpdGggVmlzdWFsIFN0dWRpbwotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgKCctMScsICctMDAxJykpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEpLCBzZWxmLl9mb3JtYXQgJSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQpLCAnLTEyMzQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNDU2KSwgJy0xMjM0NTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNDU2Nzg5KSwgc3RyKC0xMjM0NTY3ODkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNDU2Nzg5MCksIHN0cigtMTIzNDU2Nzg5MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKFRJTUVfTUlOWUVBUiArIDE5MDApLCBzdHIoVElNRV9NSU5ZRUFSICsgMTkwMCkpCisgICAgICAgICMgSXNzdWUgIzEzMzEyOiBpdCBtYXkgcmV0dXJuIHdyb25nIHZhbHVlIGZvciB5ZWFyIDwgVElNRV9NSU5ZRUFSICsgMTkwMAorICAgICAgICAjIFNraXAgdGhlIHZhbHVlIHRlc3QsIGJ1dCBjaGVjayB0aGF0IG5vIGVycm9yIGlzIHJhaXNlZAorICAgICAgICBzZWxmLnllYXJzdHIoVElNRV9NSU5ZRUFSKQorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKFRJTUVfTUlOWUVBUiksIHN0cihUSU1FX01JTllFQVIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnllYXJzdHIsIFRJTUVfTUlOWUVBUiAtIDEpCiAKIAotICAgIGRlZiB0ZXN0X21rdGltZShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTcyNjY4NwotICAgICAgICBmb3IgdCBpbiAoLTIsIC0xLCAwLCAxKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKHQpCi0gICAgICAgICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLm1rdGltZSh0dCksIHQpCi0gICAgICAgICMgSXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZWxpYWJseSBtYWtlIG1rdGltZSByZXR1cm4gZXJyb3IKLSAgICAgICAgIyBvbiBhbGwgcGxhdGZvbS4gIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhhdCBubyBvdGhlciBleGNlcHRpb24KLSAgICAgICAgIyB0aGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGZvciBhbiBleHRyZW1lIHZhbHVlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLm1rdGltZSgoLTEsIDEsIDEsIDAsIDAsIDAsIC0xLCAtMSwgLTEpKQotICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotY2xhc3MgVGVzdEFzY3RpbWVBY2NlcHQyZFllYXIoX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3QyZFllYXIpOgotICAgIHBhc3MKLQotY2xhc3MgVGVzdFN0cmZ0aW1lQWNjZXB0MmRZZWFyKF9UZXN0U3RyZnRpbWVZZWFyLCBfVGVzdDJkWWVhcik6Ci0gICAgcGFzcwotCiBjbGFzcyBUZXN0QXNjdGltZTRkeWVhcihfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDRkWWVhcik6CiAgICAgcGFzcwogCiBjbGFzcyBUZXN0U3RyZnRpbWU0ZHllYXIoX1Rlc3RTdHJmdGltZVllYXIsIF9UZXN0NGRZZWFyKToKICAgICBwYXNzCiAKLWNsYXNzIFRlc3QyZHllYXJCb29sKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0MmRZZWFyKToKLSAgICBhY2NlcHQyZHllYXIgPSBUcnVlCiAKLWNsYXNzIFRlc3Q0ZHllYXJCb29sKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0NGRZZWFyKToKLSAgICBhY2NlcHQyZHllYXIgPSBGYWxzZQorY2xhc3MgVGVzdFB5dGltZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmludmFsaWRfdmFsdWVzID0gKAorICAgICAgICAgICAgLSgyICoqIDEwMCksIDIgKiogMTAwLAorICAgICAgICAgICAgLSgyLjAgKiogMTAwLjApLCAyLjAgKiogMTAwLjAsCisgICAgICAgICkKIAotY2xhc3MgVGVzdEFjY2VwdDJZZWFyQmFkKF9UZXN0QXNjdGltZVllYXIsIF9CYXNlWWVhclRlc3QpOgotICAgIGNsYXNzIFg6Ci0gICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignYm9vJykKLSAgICBhY2NlcHQyZHllYXIgPSBYKCkKLSAgICBkZWYgdGVzdF8yZHllYXIoc2VsZik6Ci0gICAgICAgIHBhc3MKLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYueWVhcnN0ciwgMjAwKQorICAgIGRlZiB0ZXN0X3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisgICAgICAgIGZvciBvYmosIHRpbWVfdCBpbiAoCisgICAgICAgICAgICAoMCwgMCksCisgICAgICAgICAgICAoLTEsIC0xKSwKKyAgICAgICAgICAgICgtMS4wLCAtMSksCisgICAgICAgICAgICAoLTEuOSwgLTEpLAorICAgICAgICAgICAgKDEuMCwgMSksCisgICAgICAgICAgICAoMS45LCAxKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lX3Qob2JqKSwgdGltZV90KQogCisgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwgaW52YWxpZCkKKworICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwKKyAgICAgICAgZm9yIG9iaiwgdGltZXZhbCBpbiAoCisgICAgICAgICAgICAoMCwgKDAsIDApKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCAwKSksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSksCisgICAgICAgICAgICAoMWUtNiwgKDAsIDEpKSwKKyAgICAgICAgICAgICgtMWUtNiwgKC0xLCA5OTk5OTkpKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMCkpLAorICAgICAgICAgICAgKDEuMTIzNDU2MCwgKDEsIDEyMzQ1NikpLAorICAgICAgICAgICAgKDEuMTIzNDU2OSwgKDEsIDEyMzQ1NikpLAorICAgICAgICAgICAgKC0xLjEyMzQ1NjAsICgtMiwgODc2NTQ0KSksCisgICAgICAgICAgICAoLTEuMTIzNDU2MSwgKC0yLCA4NzY1NDMpKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1ldmFsKG9iaiksIHRpbWV2YWwpCisKKyAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgaW52YWxpZCkKKworICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYyBpbiAoCisgICAgICAgICAgICAoMCwgKDAsIDApKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCAwKSksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSksCisgICAgICAgICAgICAoMWUtOSwgKDAsIDEpKSwKKyAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCkpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSkpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSkpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmopLCB0aW1lc3BlYykKKworICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgaW52YWxpZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX3RpbWV6b25lKHNlbGYpOgorCisgICAgICAgICMgR2V0IHRoZSBsb2NhbHRpbWUgYW5kIGV4YW1pbmUgaXQgZm9yIHRoZSBvZmZzZXQgYW5kIHpvbmUuCisgICAgICAgIGx0ID0gdGltZS5sb2NhbHRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsdCwgInRtX2dtdG9mZiIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsdCwgInRtX3pvbmUiKSkKKworICAgICAgICAjIFNlZSBpZiB0aGUgb2Zmc2V0IGFuZCB6b25lIGFyZSBzaW1pbGFyIHRvIHRoZSBtb2R1bGUKKyAgICAgICAgIyBhdHRyaWJ1dGVzLgorICAgICAgICBpZiBsdC50bV9nbXRvZmYgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cih0aW1lLCAidGltZXpvbmUiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHQudG1fZ210b2ZmLCAtW3RpbWUudGltZXpvbmUsIHRpbWUuYWx0em9uZV1bbHQudG1faXNkc3RdKQorICAgICAgICBpZiBsdC50bV96b25lIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIodGltZSwgInR6bmFtZSIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsdC50bV96b25lLCB0aW1lLnR6bmFtZVtsdC50bV9pc2RzdF0pCisKKyAgICAgICAgIyBUcnkgYW5kIG1ha2UgVU5JWCB0aW1lcyBmcm9tIHRoZSBsb2NhbHRpbWUgYW5kIGEgOS10dXBsZQorICAgICAgICAjIGNyZWF0ZWQgZnJvbSB0aGUgbG9jYWx0aW1lLiBUZXN0IHRvIHNlZSB0aGF0IHRoZSB0aW1lcyBhcmUKKyAgICAgICAgIyB0aGUgc2FtZS4KKyAgICAgICAgdCA9IHRpbWUubWt0aW1lKGx0KTsgdDkgPSB0aW1lLm1rdGltZShsdFs6OV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdDkpCisKKyAgICAgICAgIyBNYWtlIGxvY2FsdGltZXMgZnJvbSB0aGUgVU5JWCB0aW1lcyBhbmQgY29tcGFyZSB0aGVtIHRvCisgICAgICAgICMgdGhlIG9yaWdpbmFsIGxvY2FsdGltZSwgdGh1cyBtYWtpbmcgYSByb3VuZCB0cmlwLgorICAgICAgICBuZXdfbHQgPSB0aW1lLmxvY2FsdGltZSh0KTsgbmV3X2x0OSA9IHRpbWUubG9jYWx0aW1lKHQ5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdCwgbHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LnRtX2dtdG9mZiwgbHQudG1fZ210b2ZmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdC50bV96b25lLCBsdC50bV96b25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdDksIGx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdC50bV9nbXRvZmYsIGx0LnRtX2dtdG9mZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQ5LnRtX3pvbmUsIGx0LnRtX3pvbmUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3N0cnB0aW1lX3RpbWV6b25lKHNlbGYpOgorICAgICAgICB0ID0gdGltZS5zdHJwdGltZSgiVVRDIiwgIiVaIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRtX3pvbmUsICdVVEMnKQorICAgICAgICB0ID0gdGltZS5zdHJwdGltZSgiKzA1MDAiLCAiJXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudG1fZ210b2ZmLCA1ICogMzYwMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCisgICAgZGVmIHRlc3Rfc2hvcnRfdGltZXMoc2VsZik6CisKKyAgICAgICAgaW1wb3J0IHBpY2tsZQorCisgICAgICAgICMgTG9hZCBhIHNob3J0IHRpbWUgc3RydWN0dXJlIHVzaW5nIHBpY2tsZS4KKyAgICAgICAgc3QgPSBiImN0aW1lXG5zdHJ1Y3RfdGltZVxucDBcbigoSTIwMDdcbkk4XG5JMTFcbkkxXG5JMjRcbkk0OVxuSTVcbkkyMjNcbkkxXG50cDFcbihkcDJcbnRwM1xuUnA0XG4uIgorICAgICAgICBsdCA9IHBpY2tsZS5sb2FkcyhzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV9nbXRvZmYsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobHQudG1fem9uZSwgTm9uZSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBUaW1lVGVzdENhc2UsCiAgICAgICAgIFRlc3RMb2NhbGUsCi0gICAgICAgIFRlc3RBc2N0aW1lQWNjZXB0MmRZZWFyLAotICAgICAgICBUZXN0U3RyZnRpbWVBY2NlcHQyZFllYXIsCiAgICAgICAgIFRlc3RBc2N0aW1lNGR5ZWFyLAogICAgICAgICBUZXN0U3RyZnRpbWU0ZHllYXIsCi0gICAgICAgIFRlc3QyZHllYXJCb29sLAotICAgICAgICBUZXN0NGR5ZWFyQm9vbCwKLSAgICAgICAgVGVzdEFjY2VwdDJZZWFyQmFkKQorICAgICAgICBUZXN0UHl0aW1lKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5IGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQppbmRleCBiNmE5Y2ExLi4yMTNlOWI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKQEAgLTI4OSw2ICsyODksNjQgQEAKICAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI5KSAoMSwgMzApCiAgICAgU1RSSU5HICAgICAnUiJBQkMiJyAgICAgICgxLCAzMSkgKDEsIDM3KQogCisgICAgPj4+IGR1bXBfdG9rZW5zKCJ1J2FiYycgKyBVJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAidSdhYmMnIiAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgIlUnYWJjJyIgICAgICAoMSwgOSkgKDEsIDE1KQorICAgID4+PiBkdW1wX3Rva2VucygndSJhYmMiICsgVSJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ3UiYWJjIicgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICdVImFiYyInICAgICAgKDEsIDkpICgxLCAxNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYidhYmMnICsgQidhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgImInYWJjJyIgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICJCJ2FiYyciICAgICAgKDEsIDkpICgxLCAxNSkKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ2IiYWJjIiArIEIiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICdiImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAnQiJhYmMiJyAgICAgICgxLCA5KSAoMSwgMTUpCisgICAgPj4+IGR1bXBfdG9rZW5zKCJicidhYmMnICsgYlInYWJjJyArIEJyJ2FiYycgKyBCUidhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgImJyJ2FiYyciICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICJiUidhYmMnIiAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgIkJyJ2FiYyciICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAiQlInYWJjJyIgICAgICgxLCAzMCkgKDEsIDM3KQorICAgID4+PiBkdW1wX3Rva2VucygnYnIiYWJjIiArIGJSImFiYyIgKyBCciJhYmMiICsgQlIiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICdiciJhYmMiJyAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAnYlIiYWJjIicgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICdCciJhYmMiJyAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgJ0JSImFiYyInICAgICAoMSwgMzApICgxLCAzNykKKyAgICA+Pj4gZHVtcF90b2tlbnMoInJiJ2FiYycgKyByQidhYmMnICsgUmInYWJjJyArIFJCJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAicmInYWJjJyIgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgInJCJ2FiYyciICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAiUmInYWJjJyIgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICJSQidhYmMnIiAgICAgKDEsIDMwKSAoMSwgMzcpCisgICAgPj4+IGR1bXBfdG9rZW5zKCdyYiJhYmMiICsgckIiYWJjIiArIFJiImFiYyIgKyBSQiJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ3JiImFiYyInICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICdyQiJhYmMiJyAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgJ1JiImFiYyInICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAnUkIiYWJjIicgICAgICgxLCAzMCkgKDEsIDM3KQorCiBPcGVyYXRvcnMKIAogICAgID4+PiBkdW1wX3Rva2VucygiZGVmIGQyMihhLCBiLCBjPTIsIGQ9MiwgKmspOiBwYXNzIikKQEAgLTU2MywxNSArNjIxLDI4IEBACiAgICAgTkFNRSAgICAgICAnZ3LDvG4nICAgICAgICAoMiwgMCkgKDIsIDQpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgyLCA1KSAoMiwgNikKICAgICBTVFJJTkcgICAgICInZ3JlZW4nIiAgICAgKDIsIDcpICgyLCAxNCkKKworTGVnYWN5IHVuaWNvZGUgbGl0ZXJhbHM6CisKKyAgICA+Pj4gZHVtcF90b2tlbnMoIsOWcnRlciA9IHUncGxhY2VzJ1xcbmdyw7xuID0gVSdncmVlbiciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnw5ZydGVyJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBTVFJJTkcgICAgICJ1J3BsYWNlcyciICAgKDEsIDgpICgxLCAxNykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNykgKDEsIDE4KQorICAgIE5BTUUgICAgICAgJ2dyw7xuJyAgICAgICAgKDIsIDApICgyLCA0KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMiwgNSkgKDIsIDYpCisgICAgU1RSSU5HICAgICAiVSdncmVlbiciICAgICgyLCA3KSAoMiwgMTUpCiAiIiIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRva2VuaXplIGltcG9ydCAodG9rZW5pemUsIF90b2tlbml6ZSwgdW50b2tlbml6ZSwgTlVNQkVSLCBOQU1FLCBPUCwKLSAgICAgICAgICAgICAgICAgICAgIFNUUklORywgRU5ETUFSS0VSLCB0b2tfbmFtZSwgZGV0ZWN0X2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCBFTkRNQVJLRVIsIEVOQ09ESU5HLCB0b2tfbmFtZSwgZGV0ZWN0X2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgb3BlbiBhcyB0b2tlbml6ZV9vcGVuKQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKIGltcG9ydCBvcywgc3lzLCBnbG9iCitpbXBvcnQgdG9rZW4KIAogZGVmIGR1bXBfdG9rZW5zKHMpOgogICAgICIiIlByaW50IG91dCB0aGUgdG9rZW5zIGluIHMgaW4gYSB0YWJsZSBmb3JtYXQuCkBAIC02MDAsNyArNjcxLDcgQEAKICAgICAgICAgZi5jbG9zZSgpCiAgICAgdG9rZW5zMSA9IFt0b2tbOjJdIGZvciB0b2sgaW4gdG9rZW5fbGlzdF0KICAgICBuZXdfYnl0ZXMgPSB1bnRva2VuaXplKHRva2VuczEpCi0gICAgcmVhZGxpbmUgPSAobGluZSBmb3IgbGluZSBpbiBuZXdfYnl0ZXMuc3BsaXRsaW5lcygxKSkuX19uZXh0X18KKyAgICByZWFkbGluZSA9IChsaW5lIGZvciBsaW5lIGluIG5ld19ieXRlcy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKS5fX25leHRfXwogICAgIHRva2VuczIgPSBbdG9rWzoyXSBmb3IgdG9rIGluIHRva2VuaXplKHJlYWRsaW5lKV0KICAgICByZXR1cm4gdG9rZW5zMSA9PSB0b2tlbnMyCiAKQEAgLTg5NSw2ICs5NjYsMzUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAuZW5jb2RpbmcsICd1dGYtOC1zaWcnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5tb2RlLCAncicpCiAKKyAgICBkZWYgdGVzdF9maWxlbmFtZV9pbl9leGNlcHRpb24oc2VsZik6CisgICAgICAgICMgV2hlbiBwb3NzaWJsZSwgaW5jbHVkZSB0aGUgZmlsZSBuYW1lIGluIHRoZSBleGNlcHRpb24uCisgICAgICAgIHBhdGggPSAnc29tZV9maWxlX3BhdGgnCisgICAgICAgIGxpbmVzID0gKAorICAgICAgICAgICAgYidwcmludCgiXHhkZiIpJywgIyBMYXRpbi0xOiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworICAgICAgICAgICAgKQorICAgICAgICBjbGFzcyBCdW5rOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5fbGluZXMgPSBsaW5lcworICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorCisgICAgICAgICAgICBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lc1tzZWxmLl9pbmRleF0KKyAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGlucyA9IEJ1bmsobGluZXMsIHBhdGgpCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSBsYWNraW5nIGEgbmFtZSBpc24ndCBhbiBpc3N1ZS4KKyAgICAgICAgICAgIGRlbCBpbnMubmFtZQorICAgICAgICAgICAgZGV0ZWN0X2VuY29kaW5nKGlucy5yZWFkbGluZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnLip7fScuZm9ybWF0KHBhdGgpKToKKyAgICAgICAgICAgIGlucyA9IEJ1bmsobGluZXMsIHBhdGgpCisgICAgICAgICAgICBkZXRlY3RfZW5jb2RpbmcoaW5zLnJlYWRsaW5lKQorCisKIGNsYXNzIFRlc3RUb2tlbml6ZShUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90b2tlbml6ZShzZWxmKToKQEAgLTkzNiw2ICsxMDM2LDc4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY29kaW5nX3VzZWQsIGVuY29kaW5nKQogCisgICAgZGVmIGFzc2VydEV4YWN0VHlwZUVxdWFsKHNlbGYsIG9wc3RyLCAqb3B0eXBlcyk6CisgICAgICAgIHRva2VucyA9IGxpc3QodG9rZW5pemUoQnl0ZXNJTyhvcHN0ci5lbmNvZGUoJ3V0Zi04JykpLnJlYWRsaW5lKSkKKyAgICAgICAgbnVtX29wdHlwZXMgPSBsZW4ob3B0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odG9rZW5zKSwgMiArIG51bV9vcHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1swXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50b2tfbmFtZVtFTkNPRElOR10pCisgICAgICAgIGZvciBpIGluIHJhbmdlKG51bV9vcHR5cGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zW2kgKyAxXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbb3B0eXBlc1tpXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zWzEgKyBudW1fb3B0eXBlc10uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbdG9rZW4uRU5ETUFSS0VSXSkKKworICAgIGRlZiB0ZXN0X2V4YWN0X3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJygpJywgdG9rZW4uTFBBUiwgdG9rZW4uUlBBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnW10nLCB0b2tlbi5MU1FCLCB0b2tlbi5SU1FCKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc6JywgdG9rZW4uQ09MT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJywnLCB0b2tlbi5DT01NQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnOycsIHRva2VuLlNFTUkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJysnLCB0b2tlbi5QTFVTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCctJywgdG9rZW4uTUlOVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyonLCB0b2tlbi5TVEFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvJywgdG9rZW4uU0xBU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3wnLCB0b2tlbi5WQkFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcmJywgdG9rZW4uQU1QRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzwnLCB0b2tlbi5MRVNTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+JywgdG9rZW4uR1JFQVRFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPScsIHRva2VuLkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcuJywgdG9rZW4uRE9UKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCclJywgdG9rZW4uUEVSQ0VOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgne30nLCB0b2tlbi5MQlJBQ0UsIHRva2VuLlJCUkFDRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPT0nLCB0b2tlbi5FUUVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCchPScsIHRva2VuLk5PVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PScsIHRva2VuLkxFU1NFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj0nLCB0b2tlbi5HUkVBVEVSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ34nLCB0b2tlbi5USUxERSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXicsIHRva2VuLkNJUkNVTUZMRVgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw8JywgdG9rZW4uTEVGVFNISUZUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+PicsIHRva2VuLlJJR0hUU0hJRlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyoqJywgdG9rZW4uRE9VQkxFU1RBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKz0nLCB0b2tlbi5QTFVTRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy09JywgdG9rZW4uTUlORVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyo9JywgdG9rZW4uU1RBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvPScsIHRva2VuLlNMQVNIRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyU9JywgdG9rZW4uUEVSQ0VOVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcmPScsIHRva2VuLkFNUEVSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3w9JywgdG9rZW4uVkJBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdePScsIHRva2VuLkNJUkNVTUZMRVhFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXj0nLCB0b2tlbi5DSVJDVU1GTEVYRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw8PScsIHRva2VuLkxFRlRTSElGVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+Pj0nLCB0b2tlbi5SSUdIVFNISUZURVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyoqPScsIHRva2VuLkRPVUJMRVNUQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy8nLCB0b2tlbi5ET1VCTEVTTEFTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy89JywgdG9rZW4uRE9VQkxFU0xBU0hFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCcsIHRva2VuLkFUKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ2EqKjIrYioqMj09YyoqMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlBMVVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkVRRVFVQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd7MSwgMiwgM30nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkxCUkFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OVU1CRVIsIHRva2VuLkNPTU1BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5VTUJFUiwgdG9rZW4uQ09NTUEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlJCUkFDRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXih4ICYgMHgxKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uQ0lSQ1VNRkxFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5MUEFSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5BTUUsIHRva2VuLkFNUEVSLCB0b2tlbi5OVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uUlBBUikKIAogX190ZXN0X18gPSB7ImRvY3Rlc3RzIiA6IGRvY3Rlc3RzLCAnZGVjaXN0bXQnOiBkZWNpc3RtdH0KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKaW5kZXggNDI4MTZhMi4uN2EyNTA2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CkBAIC02LDggKzYsOSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00MCw3ICs0MSw3IEBACiAgICAgIyBhZGRlZCBmb3IgYSBzY3JpcHQgaXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB3aGl0ZWxpc3QgYmVsb3cuCiAKICAgICAjIHNjcmlwdHMgdGhhdCBoYXZlIGluZGVwZW5kZW50IHRlc3RzLgotICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknXQorICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknLCAncGRlcHMucHknLCAnZ3Byb2YyaHRtbCddCiAgICAgIyBzY3JpcHRzIHRoYXQgY2FuJ3QgYmUgaW1wb3J0ZWQgd2l0aG91dCBydW5uaW5nCiAgICAgYmxhY2tsaXN0ID0gWydtYWtlX2N0eXBlLnB5J10KICAgICAjIHNjcmlwdHMgdGhhdCB1c2Ugd2luZG93cy1vbmx5IG1vZHVsZXMKQEAgLTc5LDcgKzgwLDggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzY3JpcHRzZGlyLCAncGRlcHMucHknKQotICAgICAgICBzZWxmLnBkZXBzID0gaW1wLmxvYWRfc291cmNlKCdwZGVwcycsIHBhdGgpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcigncGRlcHMnLCBwYXRoKQorICAgICAgICBzZWxmLnBkZXBzID0gbG9hZGVyLmxvYWRfbW9kdWxlKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgpAQCAtOTksNiArMTAxLDM1IEBACiAgICAgICAgIHNlbGYucGRlcHMuaW52ZXJzZSh7J2EnOiBbXX0pCiAKIAorY2xhc3MgR3Byb2YyaHRtbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzY3JpcHRzZGlyLCAnZ3Byb2YyaHRtbC5weScpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignZ3Byb2YyaHRtbCcsIHBhdGgpCisgICAgICAgIHNlbGYuZ3Byb2YgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBvbGRhcmd2ID0gc3lzLmFyZ3YKKyAgICAgICAgZGVmIGZpeHVwKCk6CisgICAgICAgICAgICBzeXMuYXJndiA9IG9sZGFyZ3YKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZpeHVwKQorICAgICAgICBzeXMuYXJndiA9IFtdCisKKyAgICBkZWYgdGVzdF9ncHJvZihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ1MDg6IHRoaXMgdXNlZCB0byBmYWlsIHdpdGggYW4gTmFtZUVycm9yLgorICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuZ3Byb2YsICd3ZWJicm93c2VyJykgYXMgd21vY2ssIFwKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdhYmMnKQorICAgICAgICAgICAgb3BlbihmbiwgJ3cnKS5jbG9zZSgpCisgICAgICAgICAgICBzeXMuYXJndiA9IFsnZ3Byb2YyaHRtbCcsIGZuXQorICAgICAgICAgICAgc2VsZi5ncHJvZi5tYWluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdtb2NrLm9wZW4uY2FsbGVkKQorCisKKyMgUnVuIHRoZSB0ZXN0cyBpbiBUb29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5Cit3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aChvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICdwYXJzZXInKSk6CisgICAgZnJvbSB0ZXN0X3VucGFyc2UgaW1wb3J0IFVucGFyc2VUZXN0Q2FzZQorICAgIGZyb20gdGVzdF91bnBhcnNlIGltcG9ydCBEaXJlY3RvcnlUZXN0Q2FzZQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqW29iaiBmb3Igb2JqIGluIGdsb2JhbHMoKS52YWx1ZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCA0NjFkMWQ4Li5hYzNhMWEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTEwMiw2ICsxMDIsNyBAQAogY2xhc3MgVGVzdExpbmVDb3VudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIldoaXRlLWJveCB0ZXN0aW5nIG9mIGxpbmUtY291bnRpbmcsIHZpYSBydW5mdW5jIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0xLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTAsIGNvdW50Y2FsbGVycz0wKQogICAgICAgICBzZWxmLm15X3B5X2ZpbGVuYW1lID0gZml4X2V4dF9weShfX2ZpbGVfXykKIApAQCAtMTkyLDYgKzE5Myw3IEBACiAgICAgIiIiQSBzaW1wbGUgc2FuaXR5IHRlc3Qgb2YgbGluZS1jb3VudGluZywgdmlhIHJ1bmN0eCAoZXhlYykiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubXlfcHlfZmlsZW5hbWUgPSBmaXhfZXh0X3B5KF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKIAogICAgIGRlZiB0ZXN0X2V4ZWNfY291bnRzKHNlbGYpOgogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTEsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTApCkBAIC0yMTgsNiArMjIwLDcgQEAKIGNsYXNzIFRlc3RGdW5jcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgZnVuY3MgdHJhY2luZyIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHNlbGYudHJhY2VyID0gVHJhY2UoY291bnQ9MCwgdHJhY2U9MCwgY291bnRmdW5jcz0xKQogICAgICAgICBzZWxmLmZpbGVtb2QgPSBteV9maWxlX2FuZF9tb2RuYW1lKCkKIApAQCAtMjQyLDYgKzI0NSw4IEBACiAgICAgICAgIH0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRyYWNlci5yZXN1bHRzKCkuY2FsbGVkZnVuY3MsIGV4cGVjdGVkKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3ByZS1leGlzdGluZyB0cmFjZSBmdW5jdGlvbiB0aHJvd3Mgb2ZmIG1lYXN1cmVtZW50cycpCiAgICAgZGVmIHRlc3RfaW5zdF9tZXRob2RfY2FsbGluZyhzZWxmKToKICAgICAgICAgb2JqID0gVHJhY2VkQ2xhc3MoMjApCiAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmZ1bmMob2JqLmluc3RfbWV0aG9kX2NhbGxpbmcsIDEpCkBAIC0yNTcsOSArMjYyLDEyIEBACiBjbGFzcyBUZXN0Q2FsbGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgY2FsbGVycyB0cmFjaW5nIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGNhbGxlcnM9MSkKICAgICAgICAgc2VsZi5maWxlbW9kID0gbXlfZmlsZV9hbmRfbW9kbmFtZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAncHJlLWV4aXN0aW5nIHRyYWNlIGZ1bmN0aW9uIHRocm93cyBvZmYgbWVhc3VyZW1lbnRzJykKICAgICBkZWYgdGVzdF9sb29wX2NhbGxlcl9pbXBvcnRpbmcoc2VsZik6CiAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmZ1bmModHJhY2VkX2Z1bmNfaW1wb3J0aW5nX2NhbGxlciwgMSkKIApAQCAtMjgwLDYgKzI4OCw5IEBACiAKICMgQ3JlYXRlZCBzZXBhcmF0ZWx5IGZvciBpc3N1ZSAjMzgyMQogY2xhc3MgVGVzdENvdmVyYWdlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBybXRyZWUoVEVTVEZOKQogICAgICAgICB1bmxpbmsoVEVTVEZOKQpAQCAtMzA1LDEzICszMTYsMTMgQEAKICAgICAgICAgIyBJZ25vcmUgYWxsIGZpbGVzLCBub3RoaW5nIHNob3VsZCBiZSB0cmFjZWQgbm9yIHByaW50ZWQKICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKG9zLl9fZmlsZV9fKSkKICAgICAgICAgIyBzeXMucHJlZml4IGRvZXMgbm90IHdvcmsgd2hlbiBydW5uaW5nIGZyb20gYSBjaGVja291dAotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsIGxpYnBhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQorICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJwYXRoXSwgdHJhY2U9MCwgY291bnQ9MSkKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBzZWxmLl9jb3ZlcmFnZSh0cmFjZXIpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFRFU1RGTik6CiAgICAgICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIoVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlcywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbJ19pbXBvcnRsaWIuY292ZXInXSkgICMgSWdub3JlIF9faW1wb3J0X18KIAogICAgIGRlZiB0ZXN0X2lzc3VlOTkzNihzZWxmKToKICAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9MCwgY291bnQ9MSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKaW5kZXggNDc1MmQzNy4uNWJjZTJhZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKQEAgLTI0Niw2ICsyNDYsMjEgQEAKICAgICAgICAgc2VsZi5jaGVja196ZXJvX2RpdihibG9ja3NbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lubmVyX3JhaXNlKCkgIyBNYXJrZXInLCBibG9ja3NbMl0pCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X3N1cHByZXNzaW9uKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBOb25lCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBfOgorICAgICAgICAgICAgZSA9IF8KKyAgICAgICAgbGluZXMgPSBzZWxmLmdldF9yZXBvcnQoZSkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzBdLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMV0uc3RhcnRzd2l0aCgnICBGaWxlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1plcm9EaXZpc2lvbkVycm9yIGZyb20gTm9uZScsIGxpbmVzWzJdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbM10uc3RhcnRzd2l0aCgnWmVyb0RpdmlzaW9uRXJyb3InKSkKKwogICAgIGRlZiB0ZXN0X2NhdXNlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICAjIFdoZW4gYm90aCBhIGNhdXNlIGFuZCBhIGNvbnRleHQgYXJlIHNldCwgb25seSB0aGUgY2F1c2Ugc2hvdWxkIGJlCiAgICAgICAgICMgZGlzcGxheWVkIGFuZCB0aGUgY29udGV4dCBzaG91bGQgYmUgbXV0ZWQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5IGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQppbmRleCA2ZTkzNGZiLi5lNDE3MTFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKQEAgLTEsNiArMSw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNlcV90ZXN0cwogCiBpbXBvcnQgZ2MKK2ltcG9ydCBwaWNrbGUKIAogY2xhc3MgVHVwbGVUZXN0KHNlcV90ZXN0cy5Db21tb25UZXN0KToKICAgICB0eXBlMnRlc3QgPSB0dXBsZQpAQCAtMTY0LDYgKzE2NSwzNCBAQAogICAgICAgICBjaGVjaygxMCkgICAgICAgIyBjaGVjayBvdXIgY2hlY2tpbmcgY29kZQogICAgICAgICBjaGVjaygxMDAwMDAwKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICAjIFVzZXJsaXN0IGl0ZXJhdG9ycyBkb24ndCBzdXBwb3J0IHBpY2tsaW5nIHlldCBzaW5jZQorICAgICAgICAjIHRoZXkgYXJlIGJhc2VkIG9uIGdlbmVyYXRvcnMuCisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0b3JnID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKVsxOl0pCisKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0b3JnID0gcmV2ZXJzZWQoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKVsxOl0pCisKICAgICBkZWYgdGVzdF9ub19jb21kYXRfZm9sZGluZyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSA4ODQ3OiBJbiB0aGUgUEdPIGJ1aWxkLCB0aGUgTVNWQyBsaW5rZXIncyBDT01EQVQgZm9sZGluZwogICAgICAgICAjIG9wdGltaXphdGlvbiBjYXVzZXMgZmFpbHVyZXMgaW4gY29kZSB0aGF0IHJlbGllcyBvbiBkaXN0aW5jdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggOGE5OGEwMy4uM2Y1YWM5OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC0xLDkgKzEsMTEgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgNiwgYnVpbHQtaW4gdHlwZXMKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX3dpdGhfbG9jYWxlCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGxvY2FsZQoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgVHlwZXNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU2OSw4ICs1NzEsNTc0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0dXBsZS5fX2l0ZW1zaXplX18sIDApCiAKIAorY2xhc3MgTWFwcGluZ1Byb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1hcHBpbmdwcm94eSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyB1c2VyZGljdChkaWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtYXBwaW5nID0geyd4JzogMSwgJ3knOiAyfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWFwcGluZ3Byb3h5KG1hcHBpbmcpLCBtYXBwaW5nKQorICAgICAgICBtYXBwaW5nID0gdXNlcmRpY3QoeD0xLCB5PTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisgICAgICAgIG1hcHBpbmcgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcCh7J3gnOiAxfSwgeyd5JzogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcHBpbmdwcm94eSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXBwaW5ncHJveHksICgiYSIsICJ0dXBsZSIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFwcGluZ3Byb3h5LCBbImEiLCAibGlzdCJdKQorCisgICAgZGVmIHRlc3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKHNlbGYubWFwcGluZ3Byb3h5KHt9KSkpIC0gc2V0KGRpcihvYmplY3QoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cnMsIHsKKyAgICAgICAgICAgICAnX19jb250YWluc19fJywKKyAgICAgICAgICAgICAnX19nZXRpdGVtX18nLAorICAgICAgICAgICAgICdfX2l0ZXJfXycsCisgICAgICAgICAgICAgJ19fbGVuX18nLAorICAgICAgICAgICAgICdjb3B5JywKKyAgICAgICAgICAgICAnZ2V0JywKKyAgICAgICAgICAgICAnaXRlbXMnLAorICAgICAgICAgICAgICdrZXlzJywKKyAgICAgICAgICAgICAndmFsdWVzJywKKyAgICAgICAgfSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KHsnYSc6ICdBJywgJ2InOiAnQid9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ2EnXSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ2InXSwgJ0InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3h4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ2EnKSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3LmdldCgneHh4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3h4eCcsIDQyKSwgNDIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBkaWN0bWlzc2luZyhkaWN0KToKKyAgICAgICAgICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiAibWlzc2luZz0lcyIgJSBrZXkKKworICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoZGljdG1pc3NpbmcoeD0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd4J10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneSddLCAnbWlzc2luZz15JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd5JyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3knLCA0MiksIDQyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3gnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3knIGluIHZpZXcpCisKKyAgICBkZWYgdGVzdF9jdXN0b21kaWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBjdXN0b21kaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnbWFnaWMnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWN0Ll9fY29udGFpbnNfXyhzZWxmLCBrZXkpCisKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcigoJ2l0ZXInLCkpCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA1MDAKKworICAgICAgICAgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjb3B5JworCisgICAgICAgICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2tleXMnCisKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zJworCisgICAgICAgICAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWVzJworCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gImdldGl0ZW09JXMiICUgZGljdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpCisKKyAgICAgICAgICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0PSVzIiAlIGRpY3QuZ2V0KHNlbGYsIGtleSwgJ2RlZmF1bHQ9JXInICUgZGVmYXVsdCkKKworICAgICAgICBjdXN0b20gPSBjdXN0b21kaWN0KHsna2V5JzogJ3ZhbHVlJ30pCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShjdXN0b20pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgna2V5JyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21hZ2ljJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd4eHgnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sna2V5J10sICdnZXRpdGVtPXZhbHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHZpZXcuX19nZXRpdGVtX18sICd4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHZpZXcpLCAoJ2l0ZXInLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCA1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5jb3B5KCksICdjb3B5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgna2V5JyksICdnZXQ9dmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd4eHgnKSwgJ2dldD1kZWZhdWx0PU5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuaXRlbXMoKSwgJ2l0ZW1zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmtleXMoKSwgJ2tleXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcudmFsdWVzKCksICd2YWx1ZXMnKQorCisgICAgZGVmIHRlc3RfY2hhaW5tYXAoc2VsZik6CisgICAgICAgIGQxID0geyd4JzogMX0KKyAgICAgICAgZDIgPSB7J3knOiAyfQorICAgICAgICBtYXBwaW5nID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoZDEsIGQyKQorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd4JyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3knIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3onIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneCddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ3knXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHZpZXcuX19nZXRpdGVtX18sICd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldykpLCAoJ3gnLCAneScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2aWV3KSwgMikKKyAgICAgICAgY29weSA9IHZpZXcuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoY29weSwgbWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvcHksIGNvbGxlY3Rpb25zLkNoYWluTWFwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHksIG1hcHBpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3gnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneScpLCAyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3LmdldCgneicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHNvcnRlZCh2aWV3Lml0ZW1zKCkpKSwgKCgneCcsIDEpLCAoJ3knLCAyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcua2V5cygpKSksICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcudmFsdWVzKCkpKSwgKDEsIDIpKQorCisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0LmZyb21rZXlzKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2InIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYycgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneHh4JyBpbiB2aWV3KQorCisgICAgZGVmIHRlc3Rfdmlld3Moc2VsZik6CisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZykKKyAgICAgICAga2V5cyA9IHZpZXcua2V5cygpCisgICAgICAgIHZhbHVlcyA9IHZpZXcudmFsdWVzKCkKKyAgICAgICAgaXRlbXMgPSB2aWV3Lml0ZW1zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtleXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHZhbHVlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlbXMpLCBbXSkKKyAgICAgICAgbWFwcGluZ1sna2V5J10gPSAndmFsdWUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChrZXlzKSwgWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHZhbHVlcyksIFsndmFsdWUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZW1zKSwgWygna2V5JywgJ3ZhbHVlJyldKQorCisgICAgZGVmIHRlc3RfbGVuKHNlbGYpOgorICAgICAgICBmb3IgZXhwZWN0ZWQgaW4gcmFuZ2UoNik6CisgICAgICAgICAgICBkYXRhID0gZGljdC5mcm9ta2V5cygnYWJjZGUnWzpleHBlY3RlZF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAga2V5cyA9ICgneCcsICd5JykKKyAgICAgICAgdmFsdWVzID0gKDEsIDIpCisgICAgICAgIGl0ZW1zID0gdHVwbGUoemlwKGtleXMsIHZhbHVlcykpCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0KGl0ZW1zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldyksIHNldChrZXlzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy5rZXlzKCkpLCBzZXQoa2V5cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHZpZXcudmFsdWVzKCkpLCBzZXQodmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy5pdGVtcygpKSwgc2V0KGl0ZW1zKSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0geydrZXkxJzogMjcsICdrZXkyJzogNTEsICdrZXkzJzogOTN9CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShvcmlnaW5hbCkKKyAgICAgICAgY29weSA9IHZpZXcuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjb3B5KSwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5LCBvcmlnaW5hbCkKKyAgICAgICAgb3JpZ2luYWxbJ2tleTEnXSA9IDcwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sna2V5MSddLCA3MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5WydrZXkxJ10sIDI3KQorCisKK2NsYXNzIENsYXNzQ3JlYXRpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICBkZWYgX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbnMpCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zLCAqKmt3KToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzLCAqKmt3KToKKyAgICAgICAgICAgIG5zID0gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKyAgICAgICAgICAgIG5zWyJ5Il0gPSAxCisgICAgICAgICAgICBucy51cGRhdGUoa3cpCisgICAgICAgICAgICByZXR1cm4gbnMKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19iYXNpY3Moc2VsZik6CisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKG9iamVjdCwpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKGludCwpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBpbnQpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGEoc2VsZik6CisgICAgICAgIE1ldGEgPSBzZWxmLk1ldGEKKyAgICAgICAgc2V0dGluZ3MgPSB7Im1ldGFjbGFzcyI6IE1ldGEsICJ6IjogMn0KKyAgICAgICAgIyBXZSBkbyB0aGlzIHR3aWNlIHRvIG1ha2Ugc3VyZSB0aGUgcGFzc2VkIGluIGRpY3QgaXNuJ3QgbXV0YXRlZAorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiICsgc3RyKGkpLCAoKSwgc2V0dGluZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQywgTWV0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy55LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnosIDIpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfZXhlY19ib2R5KHNlbGYpOgorICAgICAgICBNZXRhID0gc2VsZi5NZXRhCisgICAgICAgIGRlZiBmdW5jKG5zKToKKyAgICAgICAgICAgIG5zWyJ4Il0gPSAwCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoKSwgeyJtZXRhY2xhc3MiOiBNZXRhLCAieiI6IDJ9LCBmdW5jKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQywgTWV0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLngsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy55LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueiwgMikKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19tZXRhY2xhc3Nfa2V5d29yZHMoc2VsZik6CisgICAgICAgICNUZXN0IHRoYXQga2V5d29yZHMgYXJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzOgorICAgICAgICBkZWYgbWV0YV9mdW5jKG5hbWUsIGJhc2VzLCBucywgKiprdyk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSwgYmFzZXMsIG5zLCBrdworICAgICAgICByZXMgPSB0eXBlcy5uZXdfY2xhc3MoIlgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCwgb2JqZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPW1ldGFfZnVuYywgeD0wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICgiWCIsIChpbnQsIG9iamVjdCksIHt9LCB7IngiOiAwfSkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0cy9rZXl3b3JkczoKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsICgpLCB7fSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbmFtZV9fLCAiQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Jhc2VzX18sIChvYmplY3QsKSkKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19tZXRhX3dpdGhfYmFzZShzZWxmKToKKyAgICAgICAgTWV0YSA9IHNlbGYuTWV0YQorICAgICAgICBkZWYgZnVuYyhucyk6CisgICAgICAgICAgICBuc1sieCJdID0gMAorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKG5hbWU9IkMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzPShpbnQsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RzPWRpY3QobWV0YWNsYXNzPU1ldGEsIHo9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY19ib2R5PWZ1bmMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIGludCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy56LCAyKQorCisgICAgIyBNYW55IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIGRlcml2ZWQgZnJvbSB0ZXN0X2Rlc2NyLnB5CisgICAgZGVmIHRlc3RfcHJlcGFyZV9jbGFzcyhzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IG9mIG1ldGFjbGFzcyBkZXJpdmF0aW9uCisgICAgICAgIGV4cGVjdGVkX25zID0ge30KKyAgICAgICAgY2xhc3MgQSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXygqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX25zCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsIChvYmplY3QsKSkKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChvYmplY3QsKSwgeyJtZXRhY2xhc3MiOiBBfSkKKworICAgICAgICAjIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIG9mIEQgaXMgQSByYXRoZXIgdGhhbiB0eXBlLgorICAgICAgICBtZXRhLCBucywga3dkcyA9IHR5cGVzLnByZXBhcmVfY2xhc3MoIkQiLCAoQiwgQyksIHsibWV0YWNsYXNzIjogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWV0YSwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhucywgZXhwZWN0ZWRfbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGt3ZHMpLCAwKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX2Rlcml2YXRpb24oc2VsZik6CisgICAgICAgICMgaXNzdWUxMjk0MjMyOiBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbgorICAgICAgICBuZXdfY2FsbHMgPSBbXSAgIyB0byBjaGVjayB0aGUgb3JkZXIgb2YgX19uZXdfXyBjYWxscworICAgICAgICBjbGFzcyBBTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQU1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIGNsYXNzIEJNZXRhKEFNZXRhKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQk1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMpOgorICAgICAgICAgICAgICAgIG5zID0gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKyAgICAgICAgICAgICAgICBuc1snQk1ldGFfd2FzX2hlcmUnXSA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gbnMKKworICAgICAgICBBID0gdHlwZXMubmV3X2NsYXNzKCJBIiwgKCksIHsibWV0YWNsYXNzIjogQU1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEIgPSB0eXBlcy5uZXdfY2xhc3MoIkIiLCAoKSwgeyJtZXRhY2xhc3MiOiBCTWV0YX0pCisgICAgICAgICMgQk1ldGEuX19uZXdfXyBjYWxscyBBTWV0YS5fX25ld19fIHdpdGggc3VwZXI6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChBLCBCKSkKKyAgICAgICAgIyBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBCTWV0YToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgIyBCTWV0YS5fX3ByZXBhcmVfXyBzaG91bGQndmUgYmVlbiBjYWxsZWQ6CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQy5fX2RpY3RfXykKKworICAgICAgICAjIFRoZSBvcmRlciBvZiB0aGUgYmFzZXMgc2hvdWxkbid0IG1hdHRlcjoKKyAgICAgICAgQzIgPSB0eXBlcy5uZXdfY2xhc3MoIkMyIiwgKEIsIEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTWV0YScsICdBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMyLl9fZGljdF9fKQorCisgICAgICAgICMgQ2hlY2sgY29ycmVjdCBtZXRhY2xhc3MgY2FsY3VsYXRpb24gd2hlbiBhIG1ldGFjbGFzcyBpcyBkZWNsYXJlZDoKKyAgICAgICAgRCA9IHR5cGVzLm5ld19jbGFzcygiRCIsIChDLCksIHsibWV0YWNsYXNzIjogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRC5fX2RpY3RfXykKKworICAgICAgICBFID0gdHlwZXMubmV3X2NsYXNzKCJFIiwgKEMsKSwgeyJtZXRhY2xhc3MiOiBBTWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRS5fX2RpY3RfXykKKworICAgIGRlZiB0ZXN0X21ldGFjbGFzc19vdmVycmlkZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBTcGVjaWFsIGNhc2U6IHRoZSBnaXZlbiBtZXRhY2xhc3MgaXNuJ3QgYSBjbGFzcywKKyAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBtZXRhY2xhc3MgY2FsY3VsYXRpb24uCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPXNlbGYuTWV0YSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWFya2VyID0gb2JqZWN0KCkKKyAgICAgICAgZGVmIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXIKKworICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIFkgPSB0eXBlcy5uZXdfY2xhc3MoIlkiLCAob2JqZWN0LCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIFogPSB0eXBlcy5uZXdfY2xhc3MoIloiLCAoQSwpLCB7Im1ldGFjbGFzcyI6IGZ1bmN9KQorICAgICAgICBzZWxmLmFzc2VydElzKG1hcmtlciwgWCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYXJrZXIsIFkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFya2VyLCBaKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX292ZXJyaWRlX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICAjIFRoZSBnaXZlbiBtZXRhY2xhc3MgaXMgYSBjbGFzcywKKyAgICAgICAgIyBidXQgbm90IGEgZGVzY2VuZGFudCBvZiB0eXBlLgorICAgICAgICBuZXdfY2FsbHMgPSBbXSAgIyB0byBjaGVjayB0aGUgb3JkZXIgb2YgX19uZXdfXyBjYWxscworICAgICAgICBwcmVwYXJlX2NhbGxzID0gW10gICMgdG8gdHJhY2sgX19wcmVwYXJlX18gY2FsbHMKKyAgICAgICAgY2xhc3MgQU5vdE1ldGE6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19jYWxscy5hcHBlbmQoJ0FOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcHJlcGFyZV9jYWxscy5hcHBlbmQoJ0FOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4ge30KKworICAgICAgICBjbGFzcyBCTm90TWV0YShBTm90TWV0YSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19jYWxscy5hcHBlbmQoJ0JOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcHJlcGFyZV9jYWxscy5hcHBlbmQoJ0JOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKworICAgICAgICBBID0gdHlwZXMubmV3X2NsYXNzKCJBIiwgKCksIHsibWV0YWNsYXNzIjogQU5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEFOb3RNZXRhLCB0eXBlKEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsICgpLCB7Im1ldGFjbGFzcyI6IEJOb3RNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShCKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoQSwgQikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBDMiA9IHR5cGVzLm5ld19jbGFzcygiQzIiLCAoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQzIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgIyBUaGlzIGlzIGEgVHlwZUVycm9yLCBiZWNhdXNlIG9mIGEgbWV0YWNsYXNzIGNvbmZsaWN0OgorICAgICAgICAjIEJOb3RNZXRhIGlzIG5laXRoZXIgYSBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiB0eXBlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEQgPSB0eXBlcy5uZXdfY2xhc3MoIkQiLCAoQywpLCB7Im1ldGFjbGFzcyI6IHR5cGV9KQorCisgICAgICAgIEUgPSB0eXBlcy5uZXdfY2xhc3MoIkUiLCAoQywpLCB7Im1ldGFjbGFzcyI6IEFOb3RNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEYgPSB0eXBlcy5uZXdfY2xhc3MoIkYiLCAob2JqZWN0KCksIEMpKQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgRjIgPSB0eXBlcy5uZXdfY2xhc3MoIkYyIiwgKEMsIG9iamVjdCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShGMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICAjIFR5cGVFcnJvcjogQk5vdE1ldGEgaXMgbmVpdGhlciBhCisgICAgICAgICMgc3ViY2xhc3MsIG5vciBhIHN1cGVyY2xhc3Mgb2YgaW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoQywgaW50KCkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKGludCgpLCBDKSkKKworCitjbGFzcyBTaW1wbGVOYW1lc3BhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKipkaWN0KHg9MSwgeT0yKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoMSwgMiwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuczEuX19kaWN0X18pLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMi5fX2RpY3RfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCB7J3knOiAyLCAneCc6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuczMuX19kaWN0X18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMzKSwgeyd5JzogMiwgJ3gnOiAxfSkKKworICAgIGRlZiB0ZXN0X3VuYm91bmQoc2VsZik6CisgICAgICAgIG5zMSA9IHZhcnModHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkpCisgICAgICAgIG5zMiA9IHZhcnModHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLCB7J3knOiAyLCAneCc6IDF9KQorCisgICAgZGVmIHRlc3RfdW5kZXJseWluZ19kaWN0KHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShhPVRydWUsIGI9RmFsc2UpCisgICAgICAgIG1hcHBpbmcgPSBuczMuX19kaWN0X18KKyAgICAgICAgZGVsIG5zMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLl9fZGljdF9fLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuX19kaWN0X18sIHsneSc6IDIsICd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZywgZGljdChhPVRydWUsIGI9RmFsc2UpKQorCisgICAgZGVmIHRlc3RfYXR0cmdldChzZWxmKToKKyAgICAgICAgbnMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLngsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMueSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy53LCAzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG5zLnoKKworICAgIGRlZiB0ZXN0X2F0dHJzZXQoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9Miwgdz0zKQorICAgICAgICBuczEuYSA9ICdzcGFtJworICAgICAgICBuczEuYiA9ICdoYW0nCisgICAgICAgIG5zMi56ID0gNAorICAgICAgICBuczIudGhldGEgPSBOb25lCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuX19kaWN0X18sIGRpY3QoYT0nc3BhbScsIGI9J2hhbScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5fX2RpY3RfXywgZGljdCh4PTEsIHk9Miwgdz0zLCB6PTQsIHRoZXRhPU5vbmUpKQorCisgICAgZGVmIHRlc3RfYXR0cmRlbChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgbnMxLnNwYW0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgbnMyLnNwYW0KKworICAgICAgICBkZWwgbnMyLnkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIGRpY3Qodz0zLCB4PTEpKQorICAgICAgICBuczIueSA9ICdzcGFtJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSwgeT0nc3BhbScpKQorICAgICAgICBkZWwgbnMyLnkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIGRpY3Qodz0zLCB4PTEpKQorCisgICAgICAgIG5zMS5zcGFtID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwgZGljdChzcGFtPTUpKQorICAgICAgICBkZWwgbnMxLnNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMSksIHt9KQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMi54ID0gInNwYW0iCisgICAgICAgIG5zMi5feSA9IDUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwgIm5hbWVzcGFjZSh3PTMsIHg9MSwgeT0yKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczIpLCAibmFtZXNwYWNlKF95PTUsIHg9J3NwYW0nKSIpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWQoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShhPTEsIGI9MikKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9bnMxKQorICAgICAgICBuczIuc3BhbSA9IG5zMQorICAgICAgICBuczIuaGFtID0gJz8nCisgICAgICAgIG5zMi5zcGFtID0gbnMzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMSksIGRpY3QoYT0xLCBiPTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdChzcGFtPW5zMywgaGFtPSc/JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0sIG5zMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMyksIGRpY3QoeD1uczEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMy54LmEsIDEpCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShjPSdjb29raWUnKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xKQorICAgICAgICBuczEuc3BhbSA9IG5zMQorICAgICAgICBuczIuc3BhbSA9IG5zMworICAgICAgICBuczMuc3BhbSA9IG5zMgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLnNwYW0sIG5zMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbS5zcGFtLCBuczEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLnNwYW0uc3BhbSwgbnMxLnNwYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0sIG5zMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczMuc3BhbSwgbnMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5zcGFtLnNwYW0sIG5zMikKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoYz0nY29va2llJykKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSkKKyAgICAgICAgbnMxLnNwYW0gPSBuczEKKyAgICAgICAgbnMyLnNwYW0gPSBuczMKKyAgICAgICAgbnMzLnNwYW0gPSBuczIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZXNwYWNlKGM9J2Nvb2tpZScsIHNwYW09bmFtZXNwYWNlKC4uLikpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVzcGFjZShzcGFtPW5hbWVzcGFjZShzcGFtPW5hbWVzcGFjZSguLi4pLCB4PTEpKSIpCisKKyAgICBkZWYgdGVzdF9hc19kaWN0KHNlbGYpOgorICAgICAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShzcGFtPSdzcGFtc3BhbXNwYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGxlbihucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXRlcihucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgJ3NwYW0nIGluIG5zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG5zWydzcGFtJ10KKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFR5cGVzVGVzdHMpCisgICAgcnVuX3VuaXR0ZXN0KFR5cGVzVGVzdHMsIE1hcHBpbmdQcm94eVRlc3RzLCBDbGFzc0NyZWF0aW9uVGVzdHMsCisgICAgICAgICAgICAgICAgIFNpbXBsZU5hbWVzcGFjZVRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Vjbi5weSBiL0xpYi90ZXN0L3Rlc3RfdWNuLnB5CmluZGV4IGZkNjIwZjAuLjY4YTMyMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdWNuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdWNuLnB5CkBAIC04LDggKzgsMTEgQEAKICIiIiMiCiAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaWNvZGVkYXRhCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgorZnJvbSB0ZXN0LnRlc3Rfbm9ybWFsaXphdGlvbiBpbXBvcnQgY2hlY2tfdmVyc2lvbgogCiBjbGFzcyBVbmljb2RlTmFtZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTksOCArNjIsNiBAQAogICAgICAgICApCiAKICAgICBkZWYgdGVzdF9hc2NpaV9sZXR0ZXJzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKLQogICAgICAgICBmb3IgY2hhciBpbiAiIi5qb2luKG1hcChjaHIsIHJhbmdlKG9yZCgiYSIpLCBvcmQoInoiKSkpKToKICAgICAgICAgICAgIG5hbWUgPSAiTEFUSU4gU01BTEwgTEVUVEVSICVzIiAlIGNoYXIudXBwZXIoKQogICAgICAgICAgICAgY29kZSA9IHVuaWNvZGVkYXRhLmxvb2t1cChuYW1lKQpAQCAtODEsNyArODIsNiBAQAogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJIQU5HVUwgU1lMTEFCTEUgSFdFT0siLCAiXHVkNmY4IikKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiSEFOR1VMIFNZTExBQkxFIEhJSCIsICJcdWQ3YTMiKQogCi0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB1bmljb2RlZGF0YS5uYW1lLCAiXHVkN2E0IikKIAogICAgIGRlZiB0ZXN0X2Nqa191bmlmaWVkX2lkZW9ncmFwaHMoc2VsZik6CkBAIC05NywxNCArOTcsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiQ0pLIFVOSUZJRUQgSURFT0dSQVBILTJCODFEIiwgIlxVMDAwMkI4MUQiKQogCiAgICAgZGVmIHRlc3RfYm1wX2NoYXJhY3RlcnMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQotICAgICAgICBjb3VudCA9IDAKICAgICAgICAgZm9yIGNvZGUgaW4gcmFuZ2UoMHgxMDAwMCk6CiAgICAgICAgICAgICBjaGFyID0gY2hyKGNvZGUpCiAgICAgICAgICAgICBuYW1lID0gdW5pY29kZWRhdGEubmFtZShjaGFyLCBOb25lKQogICAgICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChuYW1lKSwgY2hhcikKLSAgICAgICAgICAgICAgICBjb3VudCArPSAxCiAKICAgICBkZWYgdGVzdF9taXNjX3N5bWJvbHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIlBJTENST1cgU0lHTiIsICJcdTAwYjYiKQpAQCAtMTEyLDggKzEwOSw4NSBAQAogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJIQUxGV0lEVEggS0FUQUtBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSyIsICJcdUZGOUYiKQogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEEiLCAiXHVGRjQxIikKIAorICAgIGRlZiB0ZXN0X2FsaWFzZXMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgYWxpYXNlcyBkZWZpbmVkIGluIHRoZSBOYW1lQWxpYXNlcy50eHQgZmlsZSB3b3JrLgorICAgICAgICAjIFRoaXMgc2hvdWxkIGJlIHVwZGF0ZWQgd2hlbiBuZXcgYWxpYXNlcyBhcmUgYWRkZWQgb3IgdGhlIGZpbGUKKyAgICAgICAgIyBzaG91bGQgYmUgZG93bmxvYWRlZCBhbmQgcGFyc2VkIGluc3RlYWQuICBTZWUgIzEyNzUzLgorICAgICAgICBhbGlhc2VzID0gWworICAgICAgICAgICAgKCdMQVRJTiBDQVBJVEFMIExFVFRFUiBHSEEnLCAweDAxQTIpLAorICAgICAgICAgICAgKCdMQVRJTiBTTUFMTCBMRVRURVIgR0hBJywgMHgwMUEzKSwKKyAgICAgICAgICAgICgnS0FOTkFEQSBMRVRURVIgTExMQScsIDB4MENERSksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgRk8gRk9OJywgMHgwRTlEKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBGTyBGQVknLCAweDBFOUYpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIFJPJywgMHgwRUEzKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBMTycsIDB4MEVBNSksCisgICAgICAgICAgICAoJ1RJQkVUQU4gTUFSSyBCS0EtIFNIT0cgR0kgTUdPIFJHWUFOJywgMHgwRkQwKSwKKyAgICAgICAgICAgICgnWUkgU1lMTEFCTEUgSVRFUkFUSU9OIE1BUksnLCAweEEwMTUpLAorICAgICAgICAgICAgKCdQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUJywgMHhGRTE4KSwKKyAgICAgICAgICAgICgnQllaQU5USU5FIE1VU0lDQUwgU1lNQk9MIEZUSE9SQSBTS0xJUk9OIENIUk9NQSBWQVNJUycsIDB4MUQwQzUpCisgICAgICAgIF0KKyAgICAgICAgZm9yIGFsaWFzLCBjb2RlcG9pbnQgaW4gYWxpYXNlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoYWxpYXMsIGNocihjb2RlcG9pbnQpKQorICAgICAgICAgICAgbmFtZSA9IHVuaWNvZGVkYXRhLm5hbWUoY2hyKGNvZGVwb2ludCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5hbWUsIGFsaWFzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAoYWxpYXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS5sb29rdXAobmFtZSkpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51Y2RfM18yXzAubG9va3VwKGFsaWFzKQorCisgICAgZGVmIHRlc3RfYWxpYXNlc19uYW1lc19pbl9wdWFfcmFuZ2Uoc2VsZik6CisgICAgICAgICMgV2UgYXJlIHN0b3JpbmcgYWxpYXNlcyBpbiB0aGUgUFVBIDE1LCBidXQgdGhlaXIgbmFtZXMgc2hvdWxkbid0IGxlYWsKKyAgICAgICAgZm9yIGNwIGluIHJhbmdlKDB4ZjAwMDAsIDB4ZjAxMDApOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS5uYW1lKGNocihjcCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnbm8gc3VjaCBuYW1lJykKKworICAgIGRlZiB0ZXN0X25hbWVkX3NlcXVlbmNlc19uYW1lc19pbl9wdWFfcmFuZ2Uoc2VsZik6CisgICAgICAgICMgV2UgYXJlIHN0b3JpbmcgbmFtZWQgc2VxIGluIHRoZSBQVUEgMTUsIGJ1dCB0aGVpciBuYW1lcyBzaG91bGRuJ3QgbGVhaworICAgICAgICBmb3IgY3AgaW4gcmFuZ2UoMHhmMDEwMCwgMHhmMGZmZik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLm5hbWUoY2hyKGNwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdubyBzdWNoIG5hbWUnKQorCisgICAgZGVmIHRlc3RfbmFtZWRfc2VxdWVuY2VzX3NhbXBsZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBhIGZldyBuYW1lZCBzZXF1ZW5jZXMuICBTZWUgIzEyNzUzLgorICAgICAgICBzZXF1ZW5jZXMgPSBbCisgICAgICAgICAgICAoJ0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggVElMREUnLCAnXHUwMDcyXHUwMzAzJyksCisgICAgICAgICAgICAoJ1RBTUlMIFNZTExBQkxFIFNBSScsICdcdTBCQjhcdTBCQzgnKSwKKyAgICAgICAgICAgICgnVEFNSUwgU1lMTEFCTEUgTU9PJywgJ1x1MEJBRVx1MEJDQicpLAorICAgICAgICAgICAgKCdUQU1JTCBTWUxMQUJMRSBOTk9PJywgJ1x1MEJBM1x1MEJDQicpLAorICAgICAgICAgICAgKCdUQU1JTCBDT05TT05BTlQgS1NTJywgJ1x1MEI5NVx1MEJDRFx1MEJCN1x1MEJDRCcpLAorICAgICAgICBdCisgICAgICAgIGZvciBzZXFuYW1lLCBjb2RlcG9pbnRzIGluIHNlcXVlbmNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKHNlcW5hbWUpLCBjb2RlcG9pbnRzKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihzZXFuYW1lLCBOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudWNkXzNfMl8wLmxvb2t1cChzZXFuYW1lKQorCisgICAgZGVmIHRlc3RfbmFtZWRfc2VxdWVuY2VzX2Z1bGwoc2VsZik6CisgICAgICAgICMgQ2hlY2sgYWxsIHRoZSBuYW1lZCBzZXF1ZW5jZXMKKyAgICAgICAgdXJsID0gKCJodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy8lcy91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0IiAlCisgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51bmlkYXRhX3ZlcnNpb24pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3RkYXRhID0gc3VwcG9ydC5vcGVuX3VybHJlc291cmNlKHVybCwgZW5jb2Rpbmc9InV0Zi04IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrPWNoZWNrX3ZlcnNpb24pCisgICAgICAgIGV4Y2VwdCAoSU9FcnJvciwgSFRUUEV4Y2VwdGlvbik6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDb3VsZCBub3QgcmV0cmlldmUgIiArIHVybCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3RkYXRhLmNsb3NlKQorICAgICAgICBmb3IgbGluZSBpbiB0ZXN0ZGF0YToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5vdCBsaW5lIG9yIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZXFuYW1lLCBjb2RlcG9pbnRzID0gbGluZS5zcGxpdCgnOycpCisgICAgICAgICAgICBjb2RlcG9pbnRzID0gJycuam9pbihjaHIoaW50KGNwLCAxNikpIGZvciBjcCBpbiBjb2RlcG9pbnRzLnNwbGl0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChzZXFuYW1lKSwgY29kZXBvaW50cykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoc2VxbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVjZF8zXzJfMC5sb29rdXAoc2VxbmFtZSkKKwogICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdW5pY29kZWRhdGEubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1bmljb2RlZGF0YS5uYW1lLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVuaWNvZGVkYXRhLmxvb2t1cCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQppbmRleCAxOWIwNmEwLi5iMTNhOTBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CkBAIC01LDE3ICs1LDEzIEBACiAoYykgQ29weXJpZ2h0IENOUkksIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIE5PIFdBUlJBTlRZLgogCiAiIiIjIgoraW1wb3J0IF9zdHJpbmcKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHN0cmluZ190ZXN0cwotaW1wb3J0IF9zdHJpbmcKLQotIyBkZWNvcmF0b3IgdG8gc2tpcCB0ZXN0cyBvbiBuYXJyb3cgYnVpbGRzCi1yZXF1aXJlc193aWRlX2J1aWxkID0gdW5pdHRlc3Quc2tpcElmKHN5cy5tYXh1bmljb2RlID09IDY1NTM1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgd2lkZSBidWlsZCcpCiAKICMgRXJyb3IgaGFuZGxpbmcgKGJhZCBkZWNvZGVyIHJldHVybikKIGRlZiBzZWFyY2hfZnVuY3Rpb24oZW5jb2RpbmcpOgpAQCAtMTc1LDYgKzE3MSwxNSBAQAogCiAgICAgZGVmIHRlc3RfZmluZChzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9maW5kKHNlbGYpCisgICAgICAgICMgdGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBtZW1jaHIgZmFzdCBwYXRoCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMDAsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAxMDInKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAyMDEnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAxMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcdTAxMDInLCAnZmluZCcsICdcdTAyMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMTAwLCAnYScgKiAxMDAgKyAnXFUwMDEwMDMwNCcsICdmaW5kJywgJ1xVMDAxMDAzMDQnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhJyAqIDEwMCArICdcVTAwMTAwMzA0JywgJ2ZpbmQnLCAnXFUwMDEwMDIwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1xVMDAxMDAzMDQnLCAnZmluZCcsICdcVTAwMTAyMDA0JykKKyAgICAgICAgIyBjaGVjayBtaXhlZCBhcmd1bWVudCB0eXBlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgwLCAgJ2FiY2RlZmdoaWFiYycsICdmaW5kJywgJ2FiYycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDksICAnYWJjZGVmZ2hpYWJjJywgJ2ZpbmQnLCAnYWJjJywgMSkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoLTEsICdhYmNkZWZnaGlhYmMnLCAnZmluZCcsICdkZWYnLCA0KQpAQCAtMTg0LDYgKzE4OSwxNCBAQAogCiAgICAgZGVmIHRlc3RfcmZpbmQoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfcmZpbmQoc2VsZikKKyAgICAgICAgIyB0ZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIG1lbXJjaHIgZmFzdCBwYXRoCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAxMDInKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDIwMScpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMTIwJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAyMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoMCwgJ1xVMDAxMDAzMDQnICsgJ2EnICogMTAwLCAncmZpbmQnLCAnXFUwMDEwMDMwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1xVMDAxMDAzMDQnICsgJ2EnICogMTAwLCAncmZpbmQnLCAnXFUwMDEwMDIwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1xVMDAxMDAzMDQnICsgJ2EnICogMTAwLCAncmZpbmQnLCAnXFUwMDEwMjAwNCcpCiAgICAgICAgICMgY2hlY2sgbWl4ZWQgYXJndW1lbnQgdHlwZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoOSwgICAnYWJjZGVmZ2hpYWJjJywgJ3JmaW5kJywgJ2FiYycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDEyLCAgJ2FiY2RlZmdoaWFiYycsICdyZmluZCcsICcnKQpAQCAtMjgwLDYgKzI5MywxMiBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgnb25lQHR3byF0aHJlZSEnLCAnb25lIXR3byF0aHJlZSEnLCAncmVwbGFjZScsICchJywgJ0AnLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICdyZXBsYWNlJy5yZXBsYWNlLCAiciIsIDQyKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfcmVwbGFjZV9pZChzZWxmKToKKyAgICAgICAgcGF0dGVybiA9ICdhYmMnCisgICAgICAgIHRleHQgPSAnYWJjIGRlZicKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0LnJlcGxhY2UocGF0dGVybiwgcGF0dGVybiksIHRleHQpCisKICAgICBkZWYgdGVzdF9ieXRlc19jb21wYXJpc29uKHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgQnl0ZXNXYXJuaW5nKQpAQCAtMzUwLDYgKzM2OSw4IEBACiAgICAgZGVmIHRlc3RfaXNsb3dlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfaXNsb3dlcihzZWxmKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeChGYWxzZSwgJ1x1MUZGYycsICdpc2xvd2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXHUyMTY3Jy5pc2xvd2VyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXHUyMTc3Jy5pc2xvd2VyKCkpCiAgICAgICAgICMgbm9uLUJNUCwgdXBwZXJjYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ1xVMDAwMTA0MDEnLmlzbG93ZXIoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXFUwMDAxMDQyNycuaXNsb3dlcigpKQpAQCAtMzY0LDYgKzM4NSw4IEBACiAgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVVc2VyU3RyaW5nVGVzdC50ZXN0X2lzdXBwZXIoc2VsZikKICAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJyk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeChGYWxzZSwgJ1x1MUZGYycsICdpc3VwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcdTIxNjcnLmlzdXBwZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXHUyMTc3Jy5pc3VwcGVyKCkpCiAgICAgICAgICMgbm9uLUJNUCwgdXBwZXJjYXNlCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXFUwMDAxMDQwMScuaXN1cHBlcigpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1xVMDAwMTA0MjcnLmlzdXBwZXIoKSkKQEAgLTUyMCw3ICs1NDMsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWV0aChzKSwgJyVhLiVzKCkgaXMgRmFsc2UnICUgKHMsIG1ldGhfbmFtZSkpCiAKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfbG93ZXIoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfbG93ZXIoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQyNycubG93ZXIoKSwgJ1xVMDAwMTA0NEYnKQpAQCAtNTMwLDggKzU1MiwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDRGXFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLmxvd2VyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hcVTAwMDEwNDRGeFxVMDAwMTA0NEYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLmxvd2VyKCksICfvrIEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAxMzAnLmxvd2VyKCksICdcdTAwNjlcdTAzMDcnKQorICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEgVSswM0EzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycubG93ZXIoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDM0NVx1MDNhMycubG93ZXIoKSwgJ1x1MDM0NVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmxvd2VyKCksICdhXHUwMzQ1XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhM2EnLmxvd2VyKCksICdhXHUwMzQ1XHUwM2MzYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmxvd2VyKCksICdhXHUwMzQ1XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhM1x1MDM0NScubG93ZXIoKSwgJ2FcdTAzYzJcdTAzNDUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTNcdTAzNDUgJy5sb3dlcigpLCAnXHUwM2MzXHUwMzQ1ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwOGZmZmUnLmxvd2VyKCksICdcVTAwMDhmZmZlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMTc3Jy5sb3dlcigpLCAnXHUyMTc3JykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCisgICAgZGVmIHRlc3RfY2FzZWZvbGQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5jYXNlZm9sZCgpLCAnaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoRUxsbycuY2FzZWZvbGQoKSwgJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLmNhc2Vmb2xkKCksICdzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScuY2FzZWZvbGQoKSwgJ2ZpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5jYXNlZm9sZCgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuY2FzZWZvbGQoKSwgJ2FcdTAzYjlcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAwYjUnLmNhc2Vmb2xkKCksICdcdTAzYmMnKQorCiAgICAgZGVmIHRlc3RfdXBwZXIoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfdXBwZXIoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0RicudXBwZXIoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTQxLDggKzU4MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQyNycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnVwcGVyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hcVTAwMDEwNDI3WFxVMDAwMTA0MjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLnVwcGVyKCksICdGSScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcudXBwZXIoKSwgJ1x1MDEzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycudXBwZXIoKSwgJ1x1MDNhMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ8OfJy51cHBlcigpLCAnU1MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDInLnVwcGVyKCksICdcdTAzOTlcdTAzMDhcdTAzMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDhmZmZlJy51cHBlcigpLCAnXFUwMDA4ZmZmZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MjE3NycudXBwZXIoKSwgJ1x1MjE2NycpCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAogICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3RfY2FwaXRhbGl6ZShzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy5jYXBpdGFsaXplKCksICdcVTAwMDEwNDI3JykKQEAgLTU1NCw4ICs2MDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy5jYXBpdGFsaXplKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hcVTAwMDEwNDRGeFxVMDAwMTA0NEYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoXHUwMTMwJy5jYXBpdGFsaXplKCksICdIXHUwMDY5XHUwMzA3JykKKyAgICAgICAgZXhwID0gJ1x1MDM5OVx1MDMwOFx1MDMwMFx1MDA2OVx1MDMwNycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUxZmQyXHUwMTMwJy5jYXBpdGFsaXplKCksIGV4cCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBbm5pc2gnLmNhcGl0YWxpemUoKSwgJ0ZJbm5pc2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5jYXBpdGFsaXplKCksICdBXHUwMzQ1XHUwM2MyJykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfdGl0bGUoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5NaXhpblN0clVuaWNvZGVVc2VyU3RyaW5nVGVzdC50ZXN0X3RpdGxlKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLnRpdGxlKCksICdcVTAwMDEwNDI3JykKQEAgLTU2OSw4ICs2MjEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0NEYgXFUwMDAxMDQyN1xVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGIFhcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnRpdGxlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1hcVTAwMDEwNDRGeFxVMDAwMTA0NEYgWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgU5OSVNIJy50aXRsZSgpLCAnRmlubmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzYTMgXHUxZmExeHknLnRpdGxlKCksICdBXHUwM2MyIFx1MWZhOXh5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhM0EnLnRpdGxlKCksICdBXHUwM2MzYScpCiAKLSAgICBAcmVxdWlyZXNfd2lkZV9idWlsZAogICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X3N3YXBjYXNlKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLnN3YXBjYXNlKCksICdcVTAwMDEwNDI3JykKQEAgLTU4Myw2ICs2MzcsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnXFUwMDAxMDQyN1xVMDAwMTA0NEYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdYXFUwMDAxMDQyN3hcVTAwMDEwNDRGJy5zd2FwY2FzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4XFUwMDAxMDQ0RlhcVTAwMDEwNDI3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy5zd2FwY2FzZSgpLCAnRkknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAxMzAnLnN3YXBjYXNlKCksICdcdTAwNjlcdTAzMDcnKQorICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEgVSswM0EzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycuc3dhcGNhc2UoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ1x1MDM5OVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLnN3YXBjYXNlKCksICdhXHUwMzk5XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhM2EnLnN3YXBjYXNlKCksICdhXHUwMzk5XHUwM2MzQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLnN3YXBjYXNlKCksICdhXHUwMzk5XHUwM2MyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhM1x1MDM0NScuc3dhcGNhc2UoKSwgJ2FcdTAzYzJcdTAzOTknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTNcdTAzNDUgJy5zd2FwY2FzZSgpLCAnXHUwM2MzXHUwMzk5ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhMycuc3dhcGNhc2UoKSwgJ1x1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ8OfJy5zd2FwY2FzZSgpLCAnU1MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDInLnN3YXBjYXNlKCksICdcdTAzOTlcdTAzMDhcdTAzMDAnKQogCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBVbmljb2RlIGNvbnRhaW5zIG1ldGhvZApAQCAtNzc2LDcgKzg0Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swIXN9Jy5mb3JtYXQoRygnZGF0YScpKSwgJ3N0cmluZyBpcyBkYXRhJykKIAogICAgICAgICBtc2cgPSAnb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIGlzIGRlcHJlY2F0ZWQnCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOl4xMH0nLmZvcm1hdChFKCdkYXRhJykpLCAnIEUoZGF0YSkgICcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7MDpeMTBzfScuZm9ybWF0KEUoJ2RhdGEnKSksICcgRShkYXRhKSAgJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOj4xNXN9Jy5mb3JtYXQoRygnZGF0YScpKSwgJyBzdHJpbmcgaXMgZGF0YScpCkBAIC04NTgsNiArOTI1LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgJycsICcjJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAnJywgJyMyMCcpCiAKKyAgICAgICAgIyBOb24tQVNDSUkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6c317MTpzfSIuZm9ybWF0KCJBQkMiLCAiXHUwNDEwXHUwNDExXHUwNDEyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FCQ1x1MDQxMFx1MDQxMVx1MDQxMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInswOi4zc30iLmZvcm1hdCgiQUJDXHUwNDEwXHUwNDExXHUwNDEyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FCQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInswOi4wc30iLmZvcm1hdCgiQUJDXHUwNDEwXHUwNDExXHUwNDEyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKICAgICBkZWYgdGVzdF9mb3JtYXRfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmZvcm1hdF9tYXAoe30pLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYScuZm9ybWF0X21hcCh7fSksICdhJykKQEAgLTk5MCw2ICsxMDY1LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVmJyAlIElORiwgJ2luZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVGJyAlIElORiwgJ0lORicpCiAKKyAgICAgICAgIyBQRVAgMzkzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyUuMXMnICUgImFceGU5XHUyMGFjIiwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclLjJzJyAlICJhXHhlOVx1MjBhYyIsICdhXHhlOScpCisKICAgICBkZWYgdGVzdF9zdGFydHN3aXRoX2VuZHN3aXRoX2Vycm9ycyhzZWxmKToKICAgICAgICAgZm9yIG1ldGggaW4gKCdmb28nLnN0YXJ0c3dpdGgsICdmb28nLmVuZHN3aXRoKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKQEAgLTEwMTQsMTAgKzEwOTMsMTMgQEAKICAgICAgICAgY2xhc3MgVW5pY29kZVN1YmNsYXNzKHN0cik6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHN0cihVbmljb2RlU3ViY2xhc3MoJ3VuaWNvZGUgc3ViY2xhc3MgYmVjb21lcyB1bmljb2RlJykpLAotICAgICAgICAgICAgJ3VuaWNvZGUgc3ViY2xhc3MgYmVjb21lcyB1bmljb2RlJwotICAgICAgICApCisgICAgICAgIGZvciB0ZXh0IGluICgnYXNjaWknLCAnXHhlOScsICdcdTIwYWMnLCAnXFUwMDEwRkZGRicpOgorICAgICAgICAgICAgc3ViY2xhc3MgPSBVbmljb2RlU3ViY2xhc3ModGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN1YmNsYXNzKSwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN1YmNsYXNzKSwgbGVuKHRleHQpKQorICAgICAgICAgICAgaWYgdGV4dCA9PSAnYXNjaWknOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViY2xhc3MuZW5jb2RlKCdhc2NpaScpLCBiJ2FzY2lpJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YmNsYXNzLmVuY29kZSgndXRmLTgnKSwgYidhc2NpaScpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHN0cignc3RyaW5ncyBhcmUgY29udmVydGVkIHRvIHVuaWNvZGUnKSwKQEAgLTExMjMsMTUgKzEyMDUsMTIgQEAKICAgICBkZWYgdGVzdF9jb2RlY3NfdXRmOChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5lbmNvZGUoJ3V0Zi04JyksIGInJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMGFjJy5lbmNvZGUoJ3V0Zi04JyksIGInXHhlMlx4ODJceGFjJykKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWQ4MDBcdWRjMDInLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHg5MFx4ODBceDgyJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZDg0ZFx1ZGM1NicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceGEzXHg5MVx4OTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAyJy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4OTBceDgwXHg4MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMjM0NTYnLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHhhM1x4OTFceDk2JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkODAwJy5lbmNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZXBhc3MnKSwgYidceGVkXHhhMFx4ODAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWRjMDAnLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpLCBiJ1x4ZWRceGIwXHg4MCcpCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAoJ1x1ZDgwMFx1ZGMwMicqMTAwMCkuZW5jb2RlKCd1dGYtOCcpLAotICAgICAgICAgICAgICAgIGInXHhmMFx4OTBceDgwXHg4MicqMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ1xVMDAwMTAwMDInKjEwKS5lbmNvZGUoJ3V0Zi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceGYwXHg5MFx4ODBceDgyJyoxMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICdcdTZiNjNcdTc4YmFcdTMwNmJcdThhMDBcdTMwNDZcdTMwNjhcdTdmZmJcdThhMzNcdTMwNmYnCiAgICAgICAgICAgICAnXHUzMDU1XHUzMDhjXHUzMDY2XHUzMDQ0XHUzMDdlXHUzMDViXHUzMDkzXHUzMDAyXHU0ZTAwJwpAQCAtMTM0NCwxNCArMTQyMyw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3RyLCBiImhlbGxvIiwgInRlc3QudW5pY29kZTIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJoZWxsbyIuZW5jb2RlLCAidGVzdC51bmljb2RlMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgImhlbGxvIi5lbmNvZGUsICJ0ZXN0LnVuaWNvZGUyIikKLSAgICAgICAgIyBleGVjdXRlcyBQeVVuaWNvZGVfRW5jb2RlKCkKLSAgICAgICAgaW1wb3J0IGltcAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIEltcG9ydEVycm9yLAotICAgICAgICAgICAgaW1wLmZpbmRfbW9kdWxlLAotICAgICAgICAgICAgIm5vbi1leGlzdGluZyBtb2R1bGUiLAotICAgICAgICAgICAgWyJub24tZXhpc3RpbmcgZGlyIl0KLSAgICAgICAgKQogCiAgICAgICAgICMgRXJyb3IgaGFuZGxpbmcgKHdyb25nIGFyZ3VtZW50cykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiaGVsbG8iLmVuY29kZSwgNDIsIDQyLCA0MikKQEAgLTEzNjksMTggKzE0NDAsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgnYXNjaWknKSwgYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi03JyksIGInaGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtOCcpLCBiJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmOCcpLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTgnKSwgYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi0xNi1sZScpLCBiJ2hcMDAwZVwwMDBsXDAwMGxcMDAwb1wwMDAnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtMTYtYmUnKSwgYidcMDAwaFwwMDBlXDAwMGxcMDAwbFwwMDBvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgnbGF0aW4tMScpLCBiJ2hlbGxvJykKIAorICAgICAgICAjIERlZmF1bHQgZW5jb2RpbmcgaXMgdXRmLTgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyNjAzJy5lbmNvZGUoKSwgYidceGUyXHg5OFx4ODMnKQorCiAgICAgICAgICMgUm91bmR0cmlwIHNhZmV0eSBmb3IgQk1QIChqdXN0IHRoZSBmaXJzdCAxMDI0IGNoYXJzKQogICAgICAgICBmb3IgYyBpbiByYW5nZSgxMDI0KToKICAgICAgICAgICAgIHUgPSBjaHIoYykKICAgICAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi03JywgJ3V0Zi04JywgJ3V0Zi0xNicsICd1dGYtMTYtbGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXRmLTE2LWJlJywgJ3Jhd191bmljb2RlX2VzY2FwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCiAKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBCTVAgKGp1c3QgdGhlIGZpcnN0IDI1NiBjaGFycykKICAgICAgICAgZm9yIGMgaW4gcmFuZ2UoMjU2KToKQEAgLTEzOTUsMTggKzE0NzMsMjAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQogCiAgICAgICAgICMgUm91bmR0cmlwIHNhZmV0eSBmb3Igbm9uLUJNUCAoanVzdCBhIGZldyBjaGFycykKLSAgICAgICAgdSA9ICdcVTAwMDEwMDAxXFUwMDAyMDAwMlxVMDAwMzAwMDNcVTAwMDQwMDA0XFUwMDA1MDAwNScKLSAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTgnLCAndXRmLTE2JywgJ3V0Zi0xNi1sZScsICd1dGYtMTYtYmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICMncmF3X3VuaWNvZGVfZXNjYXBlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAndW5pY29kZV9lc2NhcGUnLCAndW5pY29kZV9pbnRlcm5hbCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogCi0gICAgICAgICMgVVRGLTggbXVzdCBiZSByb3VuZHRyaXAgc2FmZSBmb3IgYWxsIFVDUy0yIGNvZGUgcG9pbnRzCi0gICAgICAgICMgVGhpcyBleGNsdWRlcyBzdXJyb2dhdGVzOiBpbiB0aGUgZnVsbCByYW5nZSwgdGhlcmUgd291bGQgYmUKLSAgICAgICAgIyBhIHN1cnJvZ2F0ZSBwYWlyIChcdWRiZmZcdWRjMDApLCB3aGljaCBnZXRzIGNvbnZlcnRlZCBiYWNrCi0gICAgICAgICMgdG8gYSBub24tQk1QIGNoYXJhY3RlciAoXFUwMDEwZmMwMCkKLSAgICAgICAgdSA9ICcnLmpvaW4obWFwKGNociwgbGlzdChyYW5nZSgwLDB4ZDgwMCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyYW5nZSgweGUwMDAsMHgxMDAwMCkpKSkKKyAgICAgICAgICAgIHUgPSAnXFUwMDAxMDAwMVxVMDAwMjAwMDJcVTAwMDMwMDAzXFUwMDA0MDAwNFxVMDAwNTAwMDUnCisgICAgICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtOCcsICd1dGYtMTYnLCAndXRmLTE2LWxlJywgJ3V0Zi0xNi1iZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYXdfdW5pY29kZV9lc2NhcGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pY29kZV9lc2NhcGUnLCAndW5pY29kZV9pbnRlcm5hbCcpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCisKKyAgICAgICAgIyBVVEYtOCBtdXN0IGJlIHJvdW5kdHJpcCBzYWZlIGZvciBhbGwgY29kZSBwb2ludHMKKyAgICAgICAgIyAoZXhjZXB0IHN1cnJvZ2F0ZXMsIHdoaWNoIGFyZSBmb3JiaWRkZW4pLgorICAgICAgICB1ID0gJycuam9pbihtYXAoY2hyLCBsaXN0KHJhbmdlKDAsIDB4ZDgwMCkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyYW5nZSgweGUwMDAsIDB4MTEwMDAwKSkpKQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtOCcsKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCiAKQEAgLTE1OTEsMTcgKzE2NzEsMzkgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCAndFx0dFx0Jy5leHBhbmR0YWJzLCBzeXMubWF4c2l6ZSkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2V4cGFuZHRhYnNfb3B0aW1pemF0aW9uKHNlbGYpOgorICAgICAgICBzID0gJ2FiYycKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzLmV4cGFuZHRhYnMoKSwgcykKKwogICAgIGRlZiB0ZXN0X3JhaXNlTWVtRXJyb3Ioc2VsZik6Ci0gICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIGZyZWVsaXN0IGNvbnRhaW5zIGEgY29uc2lzdGVudCBvYmplY3QsIGV2ZW4KLSAgICAgICAgIyB3aGVuIGEgc3RyaW5nIGFsbG9jYXRpb24gZmFpbHMgd2l0aCBhIE1lbW9yeUVycm9yLgotICAgICAgICAjIFRoaXMgdXNlZCB0byBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIsCi0gICAgICAgICMgb3IgbGVhayByZWZlcmVuY2VzIHdoZW4gdGhlIG51bWJlciB3YXMgc21hbGxlci4KLSAgICAgICAgY2hhcndpZHRoID0gNCBpZiBzeXMubWF4dW5pY29kZSA+PSAweDEwMDAwIGVsc2UgMgotICAgICAgICAjIE5vdGU6IHN5cy5tYXhzaXplIGlzIGhhbGYgb2YgdGhlIGFjdHVhbCBtYXggYWxsb2NhdGlvbiBiZWNhdXNlIG9mCi0gICAgICAgICMgdGhlIHNpZ25lZG5lc3Mgb2YgUHlfc3NpemVfdC4KLSAgICAgICAgYWxsb2MgPSBsYW1iZGE6ICJhIiAqIChzeXMubWF4c2l6ZSAvLyBjaGFyd2lkdGggKiAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNZW1vcnlFcnJvciwgYWxsb2MpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE1lbW9yeUVycm9yLCBhbGxvYykKKyAgICAgICAgaWYgc3RydWN0LmNhbGNzaXplKCdQJykgPT0gODoKKyAgICAgICAgICAgICMgNjQgYml0cyBwb2ludGVycworICAgICAgICAgICAgYXNjaWlfc3RydWN0X3NpemUgPSA0OAorICAgICAgICAgICAgY29tcGFjdF9zdHJ1Y3Rfc2l6ZSA9IDcyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIDMyIGJpdHMgcG9pbnRlcnMKKyAgICAgICAgICAgIGFzY2lpX3N0cnVjdF9zaXplID0gMjQKKyAgICAgICAgICAgIGNvbXBhY3Rfc3RydWN0X3NpemUgPSAzNgorCisgICAgICAgIGZvciBjaGFyIGluICgnYScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBmZmZmJyk6CisgICAgICAgICAgICBjb2RlID0gb3JkKGNoYXIpCisgICAgICAgICAgICBpZiBjb2RlIDwgMHgxMDA6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gMSAgIyBzaXplb2YoUHlfVUNTMSkKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGFzY2lpX3N0cnVjdF9zaXplCisgICAgICAgICAgICBlbGlmIGNvZGUgPCAweDEwMDAwOgorICAgICAgICAgICAgICAgIGNoYXJfc2l6ZSA9IDIgICMgc2l6ZW9mKFB5X1VDUzIpCisgICAgICAgICAgICAgICAgc3RydWN0X3NpemUgPSBjb21wYWN0X3N0cnVjdF9zaXplCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoYXJfc2l6ZSA9IDQgICMgc2l6ZW9mKFB5X1VDUzQpCisgICAgICAgICAgICAgICAgc3RydWN0X3NpemUgPSBjb21wYWN0X3N0cnVjdF9zaXplCisgICAgICAgICAgICAjIE5vdGU6IHN5cy5tYXhzaXplIGlzIGhhbGYgb2YgdGhlIGFjdHVhbCBtYXggYWxsb2NhdGlvbiBiZWNhdXNlIG9mCisgICAgICAgICAgICAjIHRoZSBzaWduZWRuZXNzIG9mIFB5X3NzaXplX3QuIFN0cmluZ3Mgb2YgbWF4bGVuLTEgc2hvdWxkIGluIHByaW5jaXBsZQorICAgICAgICAgICAgIyBiZSBhbGxvY2F0YWJsZSwgZ2l2ZW4gZW5vdWdoIG1lbW9yeS4KKyAgICAgICAgICAgIG1heGxlbiA9ICgoc3lzLm1heHNpemUgLSBzdHJ1Y3Rfc2l6ZSkgLy8gY2hhcl9zaXplKQorICAgICAgICAgICAgYWxsb2MgPSBsYW1iZGE6IGNoYXIgKiBtYXhsZW4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE1lbW9yeUVycm9yLCBhbGxvYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE1lbW9yeUVycm9yLCBhbGxvYykKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdWJjbGFzcyhzZWxmKToKICAgICAgICAgY2xhc3MgUyhzdHIpOgpAQCAtMTYxNCwxMSArMTcxNiwxMCBAQAogICAgICMgVGVzdCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpCiAgICAgZGVmIHRlc3RfZnJvbV9mb3JtYXQoc2VsZik6CiAgICAgICAgIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3R5cGVzJykKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0LCBjX2ludAotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIG5hbWUgPSAiUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0IgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9ICJQeVVuaWNvZGVVQ1M0X0Zyb21Gb3JtYXQiCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCAocHl0aG9uYXBpLCBweV9vYmplY3QsCisgICAgICAgICAgICBjX2ludCwgY19sb25nLCBjX2xvbmdsb25nLCBjX3NzaXplX3QsCisgICAgICAgICAgICBjX3VpbnQsIGNfdWxvbmcsIGNfdWxvbmdsb25nLCBjX3NpemVfdCkKKyAgICAgICAgbmFtZSA9ICJQeVVuaWNvZGVfRnJvbUZvcm1hdCIKICAgICAgICAgX1B5VW5pY29kZV9Gcm9tRm9ybWF0ID0gZ2V0YXR0cihweXRob25hcGksIG5hbWUpCiAgICAgICAgIF9QeVVuaWNvZGVfRnJvbUZvcm1hdC5yZXN0eXBlID0gcHlfb2JqZWN0CiAKQEAgLTE2MzksMTMgKzE3NDAsNDAgQEAKICAgICAgICAgICAgICdzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweGU5JCcsCiAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdCwgYid1bmljb2RlXHhlOT0lcycsICdhc2NpaScpCiAKKyAgICAgICAgIyB0ZXN0ICIlYyIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVjJywgY19pbnQoMHhhYmNkKSksICdcdWFiY2QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWMnLCBjX2ludCgweDEwZmZmZikpLCAnXFUwMDEwZmZmZicpCiAKLSAgICAgICAgIyBvdGhlciB0ZXN0cworICAgICAgICAjIHRlc3QgIiUiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJyksICclJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlJyksICclJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlcycpLCAnJXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInWyUlXScpLCAnWyVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUlJXMnLCBiJ2FiYycpLCAnJWFiYycpCisKKyAgICAgICAgIyB0ZXN0IGludGVnZXIgZm9ybWF0cyAoJWksICVkLCAldSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUwM2knLCBjX2ludCgxMCkpLCAnMDEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUwLjRpJywgY19pbnQoMTApKSwgJzAwMTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWknLCBjX2ludCgtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsaScsIGNfbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsbGknLCBjX2xvbmdsb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXppJywgY19zc2l6ZV90KC0xMjMpKSwgJy0xMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclZCcsIGNfaW50KC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxkJywgY19sb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxsZCcsIGNfbG9uZ2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclemQnLCBjX3NzaXplX3QoLTEyMykpLCAnLTEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV1JywgY191aW50KDEyMykpLCAnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVsdScsIGNfdWxvbmcoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxsdScsIGNfdWxvbmdsb25nKDEyMykpLCAnMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6dScsIGNfc2l6ZV90KDEyMykpLCAnMTIzJykKKworICAgICAgICAjIHRlc3QgJUEKICAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSVBOiVBJywgJ2FiY1x4ZTlcdWFiY2RcVTAwMTBmZmZmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCByIiVBOidhYmNceGU5XHVhYmNkXFUwMDEwZmZmZiciKQogCisgICAgICAgICMgdGVzdCAlVgogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidyZXByPSVWJywgJ2FiYycsIGIneHl6JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCAncmVwcj1hYmMnKQogCkBAIC0xNjU5LDYgKzE3ODcsMTMgQEAKICAgICAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGIncmVwcj0lVicsIE5vbmUsIGInYWJjXHhmZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgJ3JlcHI9YWJjXHVmZmZkJykKIAorICAgICAgICAjIG5vdCBzdXBwb3J0ZWQ6IGNvcHkgdGhlIHJhdyBmb3JtYXQgc3RyaW5nLiB0aGVzZSB0ZXN0cyBhcmUganVzdCBoZXJlCisgICAgICAgICMgdG8gY2hlY2sgZm9yIGNyYXNocyBhbmQgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkIGFzIHNwZWNpZmljYXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclMSVzJywgYidhYmMnKSwgJyVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUxYWJjJyksICclMWFiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclK2knLCBjX2ludCgxMCkpLCAnJStpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUuJXMnLCBiJ2FiYycpLCAnJS4lcycpCisKICAgICAjIFRlc3QgUHlVbmljb2RlX0FzV2lkZUNoYXIoKQogICAgIGRlZiB0ZXN0X2Fzd2lkZWNoYXIoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCB1bmljb2RlX2Fzd2lkZWNoYXIKQEAgLTE3MTksNiArMTg1NCw1MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG5jaGFyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdjaGFyLCBub25ibXAgKyAnXDAnKQogCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NfYWRkKHNlbGYpOgorICAgICAgICBjbGFzcyBTKHN0cik6CisgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gIjMiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUygiNCIpICsgUygiNSIpLCAiMyIpCisgICAgICAgIGNsYXNzIFMoc3RyKToKKyAgICAgICAgICAgIGRlZiBfX2lhZGRfXyhzZWxmLCBvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gIjMiCisgICAgICAgIHMgPSBTKCIxIikKKyAgICAgICAgcyArPSAiNCIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAiMyIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZGVjaW1hbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfZW5jb2RlZGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnMTIzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYicgMy4xNCAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgIjEyM1x1MjBhYyIsICJzdHJpY3QiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJeJ2RlY2ltYWwnIGNvZGVjIGNhbid0IGVuY29kZSBjaGFyYWN0ZXIiLAorICAgICAgICAgICAgdW5pY29kZV9lbmNvZGVkZWNpbWFsLCAiMTIzXHUyMGFjIiwgInJlcGxhY2UiKQorCisgICAgZGVmIHRlc3RfdHJhbnNmb3JtX2RlY2ltYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCB1bmljb2RlX3RyYW5zZm9ybWRlY2ltYWx0b2FzY2lpIGFzIHRyYW5zZm9ybV9kZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzMuMTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCcxMjNcdTIwYWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTIzXHUyMGFjJykKKworICAgIGRlZiB0ZXN0X2dldG5ld2FyZ3Moc2VsZik6CisgICAgICAgIHRleHQgPSAnYWJjJworICAgICAgICBhcmdzID0gdGV4dC5fX2dldG5ld2FyZ3NfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYXJnc1swXSwgdGV4dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhcmdzKSwgMSkKKwogCiBjbGFzcyBTdHJpbmdNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9mb3JtYXR0ZXJfcGFyc2VyKHNlbGYpOgpAQCAtMTc3MCw0MiArMTk1MCw2IEBACiAgICAgICAgICAgICBdXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc3RyaW5nLmZvcm1hdHRlcl9maWVsZF9uYW1lX3NwbGl0LCAxKQogCi0gICAgZGVmIHRlc3RfZW5jb2RlX2RlY2ltYWwoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCB1bmljb2RlX2VuY29kZWRlY2ltYWwKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoJzEyMycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzMuMTQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInIDMuMTQgJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICIxMjNcdTIwYWMiLCAic3RyaWN0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJpZ25vcmUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAieG1sY2hhcnJlZnJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMyYjODM2NDsnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyM1xcdTIwYWMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjXE57RU0gU1BBQ0V9IiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8gJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhY1x1MjBhYyIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/PycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWNcdTA2NjAiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPzAnKQotCi0gICAgZGVmIHRlc3RfdHJhbnNmb3JtX2RlY2ltYWwoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCB1bmljb2RlX3RyYW5zZm9ybWRlY2ltYWx0b2FzY2lpIGFzIHRyYW5zZm9ybV9kZWNpbWFsCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyMycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzMuMTQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zZm9ybV9kZWNpbWFsKCcxMjNcdTIwYWMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTIzXHUyMGFjJykKLQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5CmluZGV4IDZjMjAxMWEuLmZhYThkYTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5CkBAIC02LDcgKzYsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBybXRyZWUsCi0gICAgVEVTVEZOX0VOQ09ESU5HLCBURVNURk5fVU5JQ09ERSwgVEVTVEZOX1VORU5DT0RBQkxFKQorICAgIFRFU1RGTl9FTkNPRElORywgVEVTVEZOX1VOSUNPREUsIFRFU1RGTl9VTkVOQ09EQUJMRSwgY3JlYXRlX2VtcHR5X2ZpbGUpCiAKIGlmIG5vdCBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzOgogICAgIHRyeToKQEAgLTU2LDE2ICs1NiwyMCBAQAogICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIHJlbmFtZSB0aGUgZmlsZSB1c2luZyBlaXRoZXIgbmFtZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSkpICMgbXVzdCBleGlzdC4KICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxKyIubmV3IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIG9zLnJlbmFtZShmaWxlbmFtZTEgKyAiLm5ldyIsIGZpbGVuYW1lMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUyKSkKIAogICAgICAgICBzaHV0aWwuY29weShmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lMSArICIubmV3IikgIyByZW1vdmUgdXNpbmcgZXF1aXYgbmFtZS4KICAgICAgICAgIyBBbmQgYSBjb3VwbGUgb2YgbW92ZXMsIG9uZSB1c2luZyBlYWNoIG5hbWUuCiAgICAgICAgIHNodXRpbC5tb3ZlKGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIHNodXRpbC5tb3ZlKGZpbGVuYW1lMSArICIubmV3IiwgZmlsZW5hbWUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMiArICcubmV3JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTEpKQogICAgICAgICAjIE5vdGUgLSBkdWUgdG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHNodXRpbC5tb3ZlLAogICAgICAgICAjIGl0IHRyaWVzIGEgcmVuYW1lIGZpcnN0LiAgVGhpcyBvbmx5IGZhaWxzIG9uIFdpbmRvd3Mgd2hlbiBvbgpAQCAtNzMsMTAgKzc3LDEyIEBACiAgICAgICAgICMgU28gd2UgdGVzdCB0aGUgc2h1dGlsLmNvcHkyIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgdGhpbmcgbW9zdAogICAgICAgICAjIGxpa2VseSB0byBmYWlsLgogICAgICAgICBzaHV0aWwuY29weTIoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTEgKyAnLm5ldycpKQogICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUxICsgIi5uZXciKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMiArICcubmV3JykpCiAKICAgICBkZWYgX2RvX2RpcmVjdG9yeShzZWxmLCBtYWtlX25hbWUsIGNoZGlyX25hbWUpOgotICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKKyAgICAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihtYWtlX25hbWUpOgogICAgICAgICAgICAgcm10cmVlKG1ha2VfbmFtZSkKICAgICAgICAgb3MubWtkaXIobWFrZV9uYW1lKQpAQCAtOTksOCArMTA1LDcgQEAKICAgICAjIHRvcC1sZXZlbCAndGVzdCcgZnVuY3Rpb25zIHdvdWxkIGJlIGlmIHRoZXkgY291bGQgdGFrZSBwYXJhbXMKICAgICBkZWYgX3Rlc3Rfc2luZ2xlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgcmVtb3ZlX2lmX2V4aXN0cyhmaWxlbmFtZSkKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICJ3IikKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9kb19zaW5nbGUoZmlsZW5hbWUpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQppbmRleCA5NzQ0MjU2Li45OWFhMDAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKQEAgLTIxLDcgKzIxLDcgQEAKIGNsYXNzIFVuaWNvZGVNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnMjFiOTBmMWFlZDAwMDgxYjgxY2E3OTQyYjIyMTk2YWYwOTAwMTVhMCcKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2JmN2E3OGYxYTUzMjQyMWI1MDMzNjAwMTAyZTIzYTkyMDQ0ZGJiYTknCiAKICAgICBkZWYgdGVzdF9tZXRob2RfY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtODAsNyArODAsNyBAQAogY2xhc3MgVW5pY29kZUZ1bmN0aW9uc1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnYzIzZGZjMGI1ZWFmM2NhMmFhZDMyZDczM2RlOTZiYjE4MmNjZGE1MCcKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJzE3ZmUyZjEyYjc4OGU0ZmZmNTQ3OWI0NjljNDQwNGJiNmVjZjg0MWYnCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1x1MjE1YicsIE5vbmUpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1x1MjQ2OCcpLCA5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1xVMDAwMjAwMDAnLCBOb25lKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCdcVTAwMDFEN0ZEJyksIDcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRpZ2l0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGlnaXQsICd4eCcpCkBAIC0xMjAsNiArMTIxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1x1MjQ2OCcpLCA5LjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcdWE2MjcnKSwgNy4wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXFUwMDAyMDAwMCcsIE5vbmUpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXFUwMDAxMDEyQScpLCA5MDAwKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5udW1lcmljKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIubnVtZXJpYywgJ3h4JykKQEAgLTEzMSw2ICsxMzMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXHUyMTViJywgTm9uZSksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcdTI0NjgnLCBOb25lKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1xVMDAwMjAwMDAnLCBOb25lKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1xVMDAwMUQ3RkQnKSwgNykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGVjaW1hbCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmRlY2ltYWwsICd4eCcpCkBAIC0xNDEsNiArMTQ0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdhJyksICdMbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnQScpLCAnTHUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ1xVMDAwMjAwMDAnKSwgJ0xvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdcVTAwMDEwMTJBJyksICdObycpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLmNhdGVnb3J5KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuY2F0ZWdvcnksICd4eCcpCkBAIC0zMDgsMTQgKzMxMiw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcdSUuNHggc2hvdWxkIG5vdCBiZSBhIGxpbmVicmVhayIgJSBpKQogCi0gICAgZGVmIHRlc3RfVUNTNChzZWxmKToKLSAgICAgICAgIyB1bmljb2RlZGF0YSBzaG91bGQgd29yayB3aXRoIGNvZGUgcG9pbnRzIG91dHNpZGUgdGhlIEJNUAotICAgICAgICAjIGV2ZW4gb24gYSBuYXJyb3cgVW5pY29kZSBidWlsZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoIlxVMDAwMTAxMkEiKSwgIk5vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoIlxVMDAwMTAxMkEiKSwgOTAwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoIlxVMDAwMUQ3RkQiKSwgNykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRpZ2l0KCJcVTAwMDFEN0ZEIiksIDcpCi0KIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBVbmljb2RlTWlzY1Rlc3QsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CmluZGV4IGM2ZjZmNjEuLjIyYWRhNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CkBAIC0yOTgsNiArMjk4LDEwIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnVuZmFrZWh0dHAoKQogCisgICAgZGVmIHRlc3RfVVJMb3BlbmVyX2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgd2FybiA9IHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lcigpCisKIGNsYXNzIHVybHJldHJpZXZlX0ZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxsaWIudXJscmV0cmlldmUoKSBvbiBsb2NhbCBmaWxlcyIiIgogCkBAIC0zMzEsNyArMzM1LDcgQEAKICAgICBkZWYgY29uc3RydWN0TG9jYWxGaWxlVXJsKHNlbGYsIGZpbGVQYXRoKToKICAgICAgICAgZmlsZVBhdGggPSBvcy5wYXRoLmFic3BhdGgoZmlsZVBhdGgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVQYXRoLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBmaWxlUGF0aC5lbmNvZGUoInV0Zi04IikKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlUGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogICAgICAgICByZXR1cm4gImZpbGU6Ly8lcyIgJSB1cmxsaWIucmVxdWVzdC5wYXRobmFtZTJ1cmwoZmlsZVBhdGgpCkBAIC0zODQsMTEgKzM4OCwxMSBAQAogCiAgICAgZGVmIHRlc3RfcmVwb3J0aG9vayhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgcmVwb3J0aG9vayB3b3Jrcy4KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIGNvdW50X2hvbGRlcj1bMF0pOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvdW50LCBpbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYmxvY2tfc2l6ZSwgaW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRvdGFsX3NpemUsIGludCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnQsIGNvdW50X2hvbGRlclswXSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBjb3VudF9ob2xkZXI9WzBdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShibG9ja19jb3VudCwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJsb2NrX3JlYWRfc2l6ZSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbGVfc2l6ZSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChibG9ja19jb3VudCwgY291bnRfaG9sZGVyWzBdKQogICAgICAgICAgICAgY291bnRfaG9sZGVyWzBdID0gY291bnRfaG9sZGVyWzBdICsgMQogICAgICAgICBzZWNvbmRfdGVtcCA9ICIlcy4yIiAlIHN1cHBvcnQuVEVTVEZOCiAgICAgICAgIHNlbGYucmVnaXN0ZXJGaWxlRm9yQ2xlYW5VcChzZWNvbmRfdGVtcCkKQEAgLTM5OSw4ICs0MDMsOCBAQAogICAgIGRlZiB0ZXN0X3JlcG9ydGhvb2tfMF9ieXRlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IG9uIHplcm8gbGVuZ3RoIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAxIHRpbWUuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoKQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKQEAgLTQxMCwzMSArNDE0LDMxIEBACiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va181X2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gNSBieXRlIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAyIHRpbWVzIChvbmNlIHdoZW4KICAgICAgICAgIyB0aGUgIm5ldHdvcmsgY29ubmVjdGlvbiIgaXMgZXN0YWJsaXNoZWQgYW5kIG9uY2Ugd2hlbiB0aGUgYmxvY2sgaXMKLSAgICAgICAgIyByZWFkKS4gU2luY2UgdGhlIGJsb2NrIHNpemUgaXMgODE5MiBieXRlcywgb25seSBvbmUgYmxvY2sgcmVhZCBpcwotICAgICAgICAjIHJlcXVpcmVkIHRvIHJlYWQgdGhlIGVudGlyZSBmaWxlLgorICAgICAgICAjIHJlYWQpLgogICAgICAgICByZXBvcnQgPSBbXQotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgotICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBfcmVwb3J0PXJlcG9ydCk6CisgICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplKSkKICAgICAgICAgc3JjRmlsZU5hbWUgPSBzZWxmLmNyZWF0ZU5ld1RlbXBGaWxlKGIieCIgKiA1KQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVwb3J0KSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDgxOTIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzJdLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMV1bMV0sIDUpCiAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rXzgxOTNfYnl0ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBvbiA4MTkzIGJ5dGUgZmlsZS4gU2hvdWxkIGNhbGwgcmVwb3J0aG9vayBvbmx5IDMgdGltZXMgKG9uY2UKICAgICAgICAgIyB3aGVuIHRoZSAibmV0d29yayBjb25uZWN0aW9uIiBpcyBlc3RhYmxpc2hlZCwgb25jZSBmb3IgdGhlIG5leHQgODE5MgogICAgICAgICAjIGJ5dGVzLCBhbmQgb25jZSBmb3IgdGhlIGxhc3QgYnl0ZSkuCiAgICAgICAgIHJlcG9ydCA9IFtdCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBfcmVwb3J0PXJlcG9ydCk6Ci0gICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUpKQorICAgICAgICBkZWYgaG9va3Rlc3RlcihibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKKyAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChibG9ja19jb3VudCwgYmxvY2tfcmVhZF9zaXplLCBmaWxlX3NpemUpKQogICAgICAgICBzcmNGaWxlTmFtZSA9IHNlbGYuY3JlYXRlTmV3VGVtcEZpbGUoYiJ4IiAqIDgxOTMpCiAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKHNlbGYuY29uc3RydWN0TG9jYWxGaWxlVXJsKHNyY0ZpbGVOYW1lKSwKICAgICAgICAgICAgIHN1cHBvcnQuVEVTVEZOLCBob29rdGVzdGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXBvcnQpLCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgODE5MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMl0sIDgxOTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzFdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFsxXVsxXSwgODE5MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMl1bMV0sIDEpCiAKIAogY2xhc3MgdXJscmV0cmlldmVfSHR0cFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlLCBGYWtlSFRUUE1peGluKToKQEAgLTEyNDUsNiArMTI0OSwyOCBAQAogIyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRwLmZ0cC5zb2NrLmdldHRpbWVvdXQoKSwgMzApCiAjICAgICAgICAgZnRwLmNsb3NlKCkKIAorY2xhc3MgUmVxdWVzdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0LiIiIgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF92YWx1ZXMoc2VsZik6CisgICAgICAgIFJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0CisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnR0VUJykKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnUE9TVCcpCisKKyAgICBkZWYgdGVzdF93aXRoX21ldGhvZF9hcmcoc2VsZik6CisgICAgICAgIFJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0CisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCBtZXRob2Q9J0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QubWV0aG9kLCAnSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdIRUFEJykKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIHt9LCBtZXRob2Q9J0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QubWV0aG9kLCAnSEVBRCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdIRUFEJykKKyAgICAgICAgcmVxdWVzdCA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsIG1ldGhvZD0nR0VUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0dFVCcpCisgICAgICAgIHJlcXVlc3QubWV0aG9kID0gJ0hFQUQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdIRUFEJykKIAogCiBkZWYgdGVzdF9tYWluKCk6CkBAIC0xMjYxLDYgKzEyODcsNyBAQAogICAgICAgICBVdGlsaXR5X1Rlc3RzLAogICAgICAgICBVUkxvcGVuZXJfVGVzdHMsCiAgICAgICAgICNGVFBXcmFwcGVyVGVzdHMsCisgICAgICAgIFJlcXVlc3RUZXN0cywKICAgICApCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IDNhY2U2NmUuLjdhZTE1NTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBzb2NrZXQKIGltcG9ydCBhcnJheQoraW1wb3J0IHN5cwogCiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICMgVGhlIHByb3h5IGJ5cGFzcyBtZXRob2QgaW1wb3J0ZWQgYmVsb3cgaGFzIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSBPU1gKQEAgLTE4LDYgKzE5LDIyIEBACiAjIHBhcnNlX2tlcXZfbGlzdCwgcGFyc2VfaHR0cF9saXN0LCBIVFRQRGlnZXN0QXV0aEhhbmRsZXIKIAogY2xhc3MgVHJpdmlhbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X19fYWxsX18oc2VsZik6CisgICAgICAgICMgVmVyaWZ5IHdoaWNoIG5hbWVzIGFyZSBleHBvc2VkCisgICAgICAgIGZvciBtb2R1bGUgaW4gJ3JlcXVlc3QnLCAncmVzcG9uc2UnLCAncGFyc2UnLCAnZXJyb3InLCAncm9ib3RwYXJzZXInOgorICAgICAgICAgICAgY29udGV4dCA9IHt9CisgICAgICAgICAgICBleGVjKCdmcm9tIHVybGxpYi4lcyBpbXBvcnQgKicgJSBtb2R1bGUsIGNvbnRleHQpCisgICAgICAgICAgICBkZWwgY29udGV4dFsnX19idWlsdGluc19fJ10KKyAgICAgICAgICAgIGlmIG1vZHVsZSA9PSAncmVxdWVzdCcgYW5kIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICAgICB1LCBwID0gY29udGV4dC5wb3AoJ3VybDJwYXRobmFtZScpLCBjb250ZXh0LnBvcCgncGF0aG5hbWUydXJsJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUuX19tb2R1bGVfXywgJ250dXJsMnBhdGgnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5fX21vZHVsZV9fLCAnbnR1cmwycGF0aCcpCisgICAgICAgICAgICBmb3IgaywgdiBpbiBjb250ZXh0Lml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Ll9fbW9kdWxlX18sICd1cmxsaWIuJXMnICUgbW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAiJXIgaXMgZXhwb3NlZCBpbiAndXJsbGliLiVzJyBidXQgZGVmaW5lZCBpbiAlciIgJQorICAgICAgICAgICAgICAgICAgICAoaywgbW9kdWxlLCB2Ll9fbW9kdWxlX18pKQorCiAgICAgZGVmIHRlc3RfdHJpdmlhbChzZWxmKToKICAgICAgICAgIyBBIGNvdXBsZSB0cml2aWFsIHRlc3RzCiAKQEAgLTUzNiwxMCArNTUzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yLCBvLm9wZW4sIHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLmNhbGxzLCBbKGhhbmRsZXJzWzBdLCAiaHR0cF9vcGVuIiwgKHJlcSwpLCB7fSldKQogCi0jIyAgICAgZGVmIHRlc3RfZXJyb3Ioc2VsZik6Ci0jIyAgICAgICAgICMgWFhYIHRoaXMgZG9lc24ndCBhY3R1YWxseSBzZWVtIHRvIGJlIHVzZWQgaW4gc3RhbmRhcmQgbGlicmFyeSwKLSMjICAgICAgICAgIyAgYnV0IHNob3VsZCByZWFsbHkgYmUgdGVzdGVkIGFueXdheS4uLgotCiAgICAgZGVmIHRlc3RfaHR0cF9lcnJvcihzZWxmKToKICAgICAgICAgIyBYWFggaHR0cF9lcnJvcl9kZWZhdWx0CiAgICAgICAgICMgaHR0cCBlcnJvcnMgYXJlIGEgc3BlY2lhbCBjYXNlCkBAIC01NjcsNiArNTgwLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGhhbmRsZXIsIG1ldGhvZF9uYW1lKSwgZ290WzoyXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgZ290WzJdKQogCisKICAgICBkZWYgdGVzdF9wcm9jZXNzb3JzKHNlbGYpOgogICAgICAgICAjICpfcmVxdWVzdCAvICpfcmVzcG9uc2UgbWV0aG9kcyBnZXQgY2FsbGVkIGFwcHJvcHJpYXRlbHkKICAgICAgICAgbyA9IE9wZW5lckRpcmVjdG9yKCkKQEAgLTYwMiwxMCArNjE2LDMwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyZ3NbMV0gaXMgTm9uZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMV0sIE1vY2tSZXNwb25zZSkpCiAKKyAgICBkZWYgdGVzdF9tZXRob2RfZGVwcmVjYXRpb25zKHNlbGYpOgorICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5hZGRfZGF0YSgiZGF0YSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9kYXRhKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuaGFzX2RhdGEoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfaG9zdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9zZWxlY3RvcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmlzX3VudmVyaWZpYWJsZSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmdldF9vcmlnaW5fcmVxX2hvc3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfdHlwZSgpCisKIAogZGVmIHNhbmVwYXRobmFtZTJ1cmwocGF0aCk6CiAgICAgdHJ5OgotICAgICAgICBwYXRoLmVuY29kZSgidXRmOCIpCisgICAgICAgIHBhdGguZW5jb2RlKCJ1dGYtOCIpCiAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInBhdGggaXMgbm90IGVuY29kYWJsZSB0byB1dGY4IikKICAgICB1cmxwYXRoID0gdXJsbGliLnJlcXVlc3QucGF0aG5hbWUydXJsKHBhdGgpCkBAIC05NTcsOCArOTkxLDggQEAKICAgICAgICAgbmV3cmVxID0gaC5odHRwX3JlcXVlc3QocmVxKQogICAgICAgICBzZWxmLmFzc2VydElzKGNqLmFjaF9yZXEsIHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5hY2hfcmVxLCBuZXdyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9vcmlnaW5fcmVxX2hvc3QoKSwgImV4YW1wbGUuY29tIikKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaXNfdW52ZXJpZmlhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLm9yaWdpbl9yZXFfaG9zdCwgImV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEudW52ZXJpZmlhYmxlKQogICAgICAgICBuZXdyID0gaC5odHRwX3Jlc3BvbnNlKHJlcSwgcikKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5lY19yZXEsIHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5lY19yLCByKQpAQCAtOTkwLDcgKzEwMjQsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLnJlcS5nZXRfbWV0aG9kKCksICJHRVQiKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvLnJlcS5oYXNfZGF0YSgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG8ucmVxLmRhdGEpCiAKICAgICAgICAgICAgICAgICAjIG5vdyBpdCdzIGEgR0VULCB0aGVyZSBzaG91bGQgbm90IGJlIGhlYWRlcnMgcmVnYXJkaW5nIGNvbnRlbnQKICAgICAgICAgICAgICAgICAjIChwb3NzaWJseSBkcmFnZ2VkIGZyb20gYmVmb3JlIGJlaW5nIGEgUE9TVCkKQEAgLTExMDYsOSArMTE0MCw5IEBACiAgICAgICAgIGhhbmRsZXJzID0gYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycyhvLCBtZXRoX3NwZWMpCiAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgImFjbWUuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAiYWNtZS5leGFtcGxlLmNvbSIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoaGFuZGxlcnNbMF0sICJodHRwX29wZW4iKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1cFswOjJdIGZvciB0dXAgaW4gby5jYWxsc10pCkBAIC0xMTE5LDEzICsxMTUzLDEzIEBACiAgICAgICAgIHBoID0gdXJsbGliLnJlcXVlc3QuUHJveHlIYW5kbGVyKGRpY3QoaHR0cD0icHJveHkuZXhhbXBsZS5jb20iKSkKICAgICAgICAgby5hZGRfaGFuZGxlcihwaCkKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5wZXJsLm9yZy8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnBlcmwub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5wZXJsLm9yZyIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb20iKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgZGVsIG9zLmVudmlyb25bJ25vX3Byb3h5J10KIAogICAgIGRlZiB0ZXN0X3Byb3h5X25vX3Byb3h5X2FsbChzZWxmKToKQEAgLTExMzQsOSArMTE2OCw5IEBACiAgICAgICAgIHBoID0gdXJsbGliLnJlcXVlc3QuUHJveHlIYW5kbGVyKGRpY3QoaHR0cD0icHJveHkuZXhhbXBsZS5jb20iKSkKICAgICAgICAgby5hZGRfaGFuZGxlcihwaCkKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydub19wcm94eSddCiAKIApAQCAtMTE1MCw5ICsxMTg0LDkgQEAKICAgICAgICAgaGFuZGxlcnMgPSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG8sIG1ldGhfc3BlYykKIAogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwczovL3d3dy5leGFtcGxlLmNvbS8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5leGFtcGxlLmNvbSIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGhhbmRsZXJzWzBdLCAiaHR0cHNfb3BlbiIpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbdHVwWzA6Ml0gZm9yIHR1cCBpbiBvLmNhbGxzXSkKIApAQCAtMTE2NSw3ICsxMTk5LDcgQEAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vIikKICAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlByb3h5LUF1dGhvcml6YXRpb24iLCJGb29CYXIiKQogICAgICAgICByZXEuYWRkX2hlYWRlcigiVXNlci1BZ2VudCIsIkdyYWlsIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cuZXhhbXBsZS5jb20iKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXEuX3R1bm5lbF9ob3N0KQogICAgICAgICByID0gby5vcGVuKHJlcSkKICAgICAgICAgIyBWZXJpZnkgUHJveHktQXV0aG9yaXphdGlvbiBnZXRzIHR1bm5lbGVkIHRvIHJlcXVlc3QuCkBAIC0xMTc2LDkgKzEyMTAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigoIlVzZXItQWdlbnQiLCJHcmFpbCIpLAogICAgICAgICAgICAgICAgICAgICAgIGh0dHBzX2hhbmRsZXIuaHR0cGNvbm4ucmVxX2hlYWRlcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlcS5fdHVubmVsX2hvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJQcm94eS1hdXRob3JpemF0aW9uIiksIkZvb0JhciIpCiAKKyAgICAjIFRPRE86IFRoaXMgc2hvdWxkIGJlIG9ubHkgZm9yIE9TWAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgIm9ubHkgcmVsZXZhbnQgZm9yIE9TWCIpCiAgICAgZGVmIHRlc3Rfb3N4X3Byb3h5X2J5cGFzcyhzZWxmKToKICAgICAgICAgYnlwYXNzID0gewogICAgICAgICAgICAgJ2V4Y2x1ZGVfc2ltcGxlJzogRmFsc2UsCkBAIC0xMjk4LDYgKzEzMzQsMjYgQEAKICAgICAgICAgIyBfdGVzdF9iYXNpY19hdXRoIGNhbGxlZCAub3BlbigpIHR3aWNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5lci5yZWNvcmRlZCwgWyJkaWdlc3QiLCAiYmFzaWMiXSoyKQogCisgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfYXV0aF9kaWdlc3RfaGFuZGxlcihzZWxmKToKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICAjIFdoaWxlIHVzaW5nIERpZ2VzdEF1dGhIYW5kbGVyCisgICAgICAgIGRpZ2VzdF9hdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQRGlnZXN0QXV0aEhhbmRsZXIoTm9uZSkKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogS2VyYmVyb3NcclxuXHJcbicpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihkaWdlc3RfYXV0aF9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLG9wZW5lci5vcGVuLCJodHRwOi8vd3d3LmV4YW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2F1dGhfYmFzaWNfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIyBXaGlsZSB1c2luZyBCYXNpY0F1dGhIYW5kbGVyCisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgYmFzaWNfYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIoTm9uZSkKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyKAorICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogTlRMTVxyXG5cclxuJykKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGJhc2ljX2F1dGhfaGFuZGxlcikKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisKICAgICBkZWYgX3Rlc3RfYmFzaWNfYXV0aChzZWxmLCBvcGVuZXIsIGF1dGhfaGFuZGxlciwgYXV0aF9oZWFkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbG0sIGh0dHBfaGFuZGxlciwgcGFzc3dvcmRfbWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X3VybCwgcHJvdGVjdGVkX3VybCk6CkBAIC0xMzM1LDYgKzEzOTEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihodHRwX2hhbmRsZXIucmVxdWVzdHMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0dHBfaGFuZGxlci5yZXF1ZXN0c1swXS5oYXNfaGVhZGVyKGF1dGhfaGVhZGVyKSkKIAorCiBjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYnVpbGRfb3BlbmVyKHNlbGYpOgpAQCAtMTM5MCwxMSArMTQ0NywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJQT1NUIiwgc2VsZi5wb3N0LmdldF9tZXRob2QoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiR0VUIiwgc2VsZi5nZXQuZ2V0X21ldGhvZCgpKQogCi0gICAgZGVmIHRlc3RfYWRkX2RhdGEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5nZXQuaGFzX2RhdGEoKSkKKyAgICBkZWYgdGVzdF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZ2V0LmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkdFVCIsIHNlbGYuZ2V0LmdldF9tZXRob2QoKSkKLSAgICAgICAgc2VsZi5nZXQuYWRkX2RhdGEoInNwYW0iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5nZXQuaGFzX2RhdGEoKSkKKyAgICAgICAgc2VsZi5nZXQuZGF0YSA9ICJzcGFtIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5nZXQuZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiUE9TVCIsIHNlbGYuZ2V0LmdldF9tZXRob2QoKSkKIAogICAgIGRlZiB0ZXN0X2dldF9mdWxsX3VybChzZWxmKToKQEAgLTE0MDIsMzYgKzE0NTksMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdldC5nZXRfZnVsbF91cmwoKSkKIAogICAgIGRlZiB0ZXN0X3NlbGVjdG9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvfmplcmVteS8iLCBzZWxmLmdldC5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiL35qZXJlbXkvIiwgc2VsZi5nZXQuc2VsZWN0b3IpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLnNlbGVjdG9yKQogCiAgICAgZGVmIHRlc3RfZ2V0X3R5cGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0dHAiLCBzZWxmLmdldC5nZXRfdHlwZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodHRwIiwgc2VsZi5nZXQudHlwZSkKIAogICAgIGRlZiB0ZXN0X2dldF9ob3N0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0LmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQuaG9zdCkKIAogICAgIGRlZiB0ZXN0X2dldF9ob3N0X3VucXVvdGUoc2VsZik6CiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cuJTcweXRob24ub3JnLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmhvc3QpCiAKICAgICBkZWYgdGVzdF9wcm94eShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmdldC5oYXNfcHJveHkoKSkKICAgICAgICAgc2VsZi5nZXQuc2V0X3Byb3h5KCJ3d3cucGVybC5vcmciLCAiaHR0cCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmdldC5oYXNfcHJveHkoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5nZXRfb3JpZ2luX3JlcV9ob3N0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5wZXJsLm9yZyIsIHNlbGYuZ2V0LmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQub3JpZ2luX3JlcV9ob3N0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucGVybC5vcmciLCBzZWxmLmdldC5ob3N0KQogCiAgICAgZGVmIHRlc3Rfd3JhcHBlZF91cmwoc2VsZik6CiAgICAgICAgIHJlcSA9IFJlcXVlc3QoIjxVUkw6aHR0cDovL3d3dy5weXRob24ub3JnPiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmdldF9ob3N0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgcmVxLmhvc3QpCiAKICAgICBkZWYgdGVzdF91cmxfZnJhZ21lbnQoc2VsZik6CiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8/cXM9cXVlcnkjZnJhZ21lbnQ9dHJ1ZSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8/cXM9cXVlcnkiLCByZXEuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi8/cXM9cXVlcnkiLCByZXEuc2VsZWN0b3IpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZy8jZnVuPXRydWUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvIiwgcmVxLnNlbGVjdG9yKQogCiAgICAgICAgICMgSXNzdWUgMTE3MDM6IGdldHVybCgpIG9taXRzIGZyYWdtZW50IGluIHRoZSBvcmlnaW5hbCBVUkwuCiAgICAgICAgIHVybCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdXJsbGliMi5odG1sI09LJwpAQCAtMTQ0Myw3ICsxNTAwLDkgQEAKICAgICBJc3N1ZSAxMzIxMSByZXZlYWxzIHRoYXQgSFRUUEVycm9yIGRpZG4ndCBpbXBsZW1lbnQgdGhlIFVSTEVycm9yCiAgICAgaW50ZXJmYWNlIGV2ZW4gdGhvdWdoIEhUVFBFcnJvciBpcyBhIHN1YmNsYXNzIG9mIFVSTEVycm9yLgogCi0gICAgPj4+IGVyciA9IHVybGxpYi5lcnJvci5IVFRQRXJyb3IobXNnPSdzb21ldGhpbmcgYmFkIGhhcHBlbmVkJywgdXJsPU5vbmUsIGNvZGU9Tm9uZSwgaGRycz1Ob25lLCBmcD1Ob25lKQorICAgID4+PiBtc2cgPSAnc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcKKyAgICA+Pj4gdXJsID0gY29kZSA9IGhkcnMgPSBmcCA9IE5vbmUKKyAgICA+Pj4gZXJyID0gdXJsbGliLmVycm9yLkhUVFBFcnJvcih1cmwsIGNvZGUsIG1zZywgaGRycywgZnApCiAgICAgPj4+IGFzc2VydCBoYXNhdHRyKGVyciwgJ3JlYXNvbicpCiAgICAgPj4+IGVyci5yZWFzb24KICAgICAnc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCA5ZTFjZTViLi42ZWY0MjAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC00NzQsNiArNDc0LDEzIEBACiAgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAorICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgorICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCisgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKwogICAgIGRlZiB0ZXN0X3NlbmRpbmdfaGVhZGVycyhzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKCkKICAgICAgICAgcmVxID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCgiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgaGFuZGxlci5wb3J0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CmluZGV4IDVmY2I0Y2IuLmZjNTUyN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKQEAgLTgzLDEyICs4MywxMyBAQAogICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgogICAgICAgICAjIGNhbGxpbmcgLmNsb3NlKCkgb24gdXJsbGliMidzIHJlc3BvbnNlIG9iamVjdHMgc2hvdWxkIGNsb3NlIHRoZQogICAgICAgICAjIHVuZGVybHlpbmcgc29ja2V0Ci0KLSAgICAgICAgcmVzcG9uc2UgPSBfdXJsb3Blbl93aXRoX3JldHJ5KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIikKLSAgICAgICAgc29jayA9IHJlc3BvbnNlLmZwCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc29jay5jbG9zZWQpCi0gICAgICAgIHJlc3BvbnNlLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2suY2xvc2VkKQorICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyIKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCh1cmwpOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBfdXJsb3Blbl93aXRoX3JldHJ5KHVybCkKKyAgICAgICAgICAgIHNvY2sgPSByZXNwb25zZS5mcAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBzb2NrLmNsb3NlZCkKKyAgICAgICAgICAgIHJlc3BvbnNlLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrLmNsb3NlZCkKIAogY2xhc3MgT3RoZXJOZXR3b3JrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IDg2OGVkMjQuLjYzODEwNzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtNTIsNiArNTIsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGtleSkgKyAnISEhJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXRlcihUKCgxLDIpKSkpLCAiMCEhISIpCiAKKyAgICBkZWYgdGVzdF91c2VybGlzdF9jb3B5KHNlbGYpOgorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzYsIDgsIDEsIDksIDFdKQorICAgICAgICB2ID0gdS5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodSksIHR5cGUodikpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVc2VyTGlzdFRlc3QpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQppbmRleCA3YThiOTMyLi5kNWQwYzg5IDEwMDc1NQotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CkBAIC0xNywxMSArMTcsMTEgQEAKICAgICAjIE92ZXJ3cml0ZSB0aGUgdGhyZWUgdGVzdGluZyBtZXRob2RzLCBiZWNhdXNlIFVzZXJTdHJpbmcKICAgICAjIGNhbid0IGNvcGUgd2l0aCBhcmd1bWVudHMgcHJvcGFnYXRlZCB0byBVc2VyU3RyaW5nCiAgICAgIyAoYW5kIHdlIGRvbid0IHRlc3Qgd2l0aCBzdWJjbGFzc2VzKQotICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqZWN0LCBtZXRob2RuYW1lLCAqYXJncyk6CisgICAgZGVmIGNoZWNrZXF1YWwoc2VsZiwgcmVzdWx0LCBvYmplY3QsIG1ldGhvZG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJlc3VsdCA9IHNlbGYuZml4dHlwZShyZXN1bHQpCiAgICAgICAgIG9iamVjdCA9IHNlbGYuZml4dHlwZShvYmplY3QpCiAgICAgICAgICMgd2UgZG9uJ3QgZml4IHRoZSBhcmd1bWVudHMsIGJlY2F1c2UgVXNlclN0cmluZyBjYW4ndCBjb3BlIHdpdGggaXQKLSAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncykKKyAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqZWN0LCBtZXRob2RuYW1lKSgqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICByZXN1bHQsCiAgICAgICAgICAgICByZWFscmVzdWx0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKaW5kZXggNDNmYTY1Ni4uN2JjNTllZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQpAQCAtNDcxLDE0ICs0NzEsMTQgQEAKICAgICAgICAgaWYgcGlkID09IDA6CiAgICAgICAgICAgICBvcy5jbG9zZShmZHNbMF0pCiAgICAgICAgICAgICB2YWx1ZSA9IHV1aWQudXVpZDQoKQotICAgICAgICAgICAgb3Mud3JpdGUoZmRzWzFdLCB2YWx1ZS5oZXguZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAgICAgIG9zLndyaXRlKGZkc1sxXSwgdmFsdWUuaGV4LmVuY29kZSgnbGF0aW4tMScpKQogICAgICAgICAgICAgb3MuX2V4aXQoMCkKIAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuY2xvc2UoZmRzWzFdKQogICAgICAgICAgICAgcGFyZW50X3ZhbHVlID0gdXVpZC51dWlkNCgpLmhleAogICAgICAgICAgICAgb3Mud2FpdHBpZChwaWQsIDApCi0gICAgICAgICAgICBjaGlsZF92YWx1ZSA9IG9zLnJlYWQoZmRzWzBdLCAxMDApLmRlY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgIGNoaWxkX3ZhbHVlID0gb3MucmVhZChmZHNbMF0sIDEwMCkuZGVjb2RlKCdsYXRpbi0xJykKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwYXJlbnRfdmFsdWUsIGNoaWxkX3ZhbHVlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5Njg0NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpAQCAtMCwwICsxLDIwMyBAQAorIiIiCitUZXN0IGhhcm5lc3MgZm9yIHRoZSB2ZW52IG1vZHVsZS4KKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluYXkgU2FqaXAuCitMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsIHJ1bl91bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmspCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB2ZW52CisKK2NsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciB2ZW52IHRlc3RzLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmVudl9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHRlbXBmaWxlLm1rZHRlbXAoKSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnU2NyaXB0cycKKyAgICAgICAgICAgIHNlbGYucHlkb2NuYW1lID0gJ3B5ZG9jLnB5JworICAgICAgICAgICAgc2VsZi5saWIgPSAoJ0xpYicsKQorICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ0luY2x1ZGUnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmJpbmRpciA9ICdiaW4nCisgICAgICAgICAgICBzZWxmLnB5ZG9jbmFtZSA9ICdweWRvYycKKyAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJXMnICUgc3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ2luY2x1ZGUnCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIG9zLmVudmlyb246CisgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICAgICAgc2VsZi5leGUgPSBvcy5wYXRoLnNwbGl0KGV4ZWN1dGFibGUpWy0xXQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKworICAgIGRlZiBydW5fd2l0aF9jYXB0dXJlKHNlbGYsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnJvcjoKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG91dHB1dC5nZXR2YWx1ZSgpLCBlcnJvci5nZXR2YWx1ZSgpCisKKyAgICBkZWYgZ2V0X2Vudl9maWxlKHNlbGYsICphcmdzKToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmVudl9kaXIsICphcmdzKQorCisgICAgZGVmIGdldF90ZXh0X2ZpbGVfY29udGVudHMoc2VsZiwgKmFyZ3MpOgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5nZXRfZW52X2ZpbGUoKmFyZ3MpLCAncicpIGFzIGY6CisgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKK2NsYXNzIEJhc2ljVGVzdChCYXNlVGVzdCk6CisgICAgIiIiVGVzdCB2ZW52IG1vZHVsZSBmdW5jdGlvbmFsaXR5LiIiIgorCisgICAgZGVmIGlzZGlyKHNlbGYsICphcmdzKToKKyAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZSgqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZm4pKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSBjcmVhdGUgZnVuY3Rpb24gd2l0aCBkZWZhdWx0IGFyZ3VtZW50cy4KKyAgICAgICAgIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmJpbmRpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmluY2x1ZGUpCisgICAgICAgIHNlbGYuaXNkaXIoKnNlbGYubGliKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfdGV4dF9maWxlX2NvbnRlbnRzKCdweXZlbnYuY2ZnJykKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAoJ19fUFlWRU5WX0xBVU5DSEVSX18nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG9zLmVudmlyb24pOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9ICBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQorICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2hvbWUgPSAlcycgJSBwYXRoLCBkYXRhKQorICAgICAgICBkYXRhID0gc2VsZi5nZXRfdGV4dF9maWxlX2NvbnRlbnRzKHNlbGYuYmluZGlyLCBzZWxmLnB5ZG9jbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRhdGEuc3RhcnRzd2l0aCgnIyElcyVzJyAlIChzZWxmLmVudl9kaXIsIG9zLnNlcCkpKQorICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKTogICMgZGlhZ25vc3RpY3MgZm9yIFdpbmRvd3MgYnVpbGRib3QgZmFpbHVyZXMKKyAgICAgICAgICAgIGJkID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIpCisgICAgICAgICAgICBwcmludCgnQ29udGVudHMgb2YgJXI6JyAlIGJkKQorICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsICdUZXN0IG5vdCBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gYSB2ZW52JykKKyAgICBkZWYgdGVzdF9wcmVmaXhlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgcHJlZml4IHZhbHVlcyBhcmUgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICAjY2hlY2sgb3VyIHByZWZpeGVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCBzeXMuZXhlY19wcmVmaXgpCisKKyAgICAgICAgIyBjaGVjayBhIHZlbnYncyBwcmVmaXhlcworICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIGVudnB5ID0gb3MucGF0aC5qb2luKHNlbGYuZW52X2Rpciwgc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBjbWQgPSBbZW52cHksICctYycsIE5vbmVdCisgICAgICAgIGZvciBwcmVmaXgsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgncHJlZml4Jywgc2VsZi5lbnZfZGlyKSwKKyAgICAgICAgICAgICgncHJlZml4Jywgc2VsZi5lbnZfZGlyKSwKKyAgICAgICAgICAgICgnYmFzZV9wcmVmaXgnLCBzeXMucHJlZml4KSwKKyAgICAgICAgICAgICgnYmFzZV9leGVjX3ByZWZpeCcsIHN5cy5leGVjX3ByZWZpeCkpOgorICAgICAgICAgICAgY21kWzJdID0gJ2ltcG9ydCBzeXM7IHByaW50KHN5cy4lcyknICUgcHJlZml4CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGV4cGVjdGVkLmVuY29kZSgpKQorCisgICAgZGVmIHRlc3Rfb3ZlcndyaXRlX2V4aXN0aW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjb250cm9sIG9mIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGVudmlyb25tZW50IGRpcmVjdG9yeS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSkKKyAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorCisgICAgZGVmIHRlc3RfdXBncmFkZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdXBncmFkaW5nIGFuIGV4aXN0aW5nIGVudmlyb25tZW50IGRpcmVjdG9yeS4KKyAgICAgICAgIiIiCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIodXBncmFkZT1UcnVlKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUoYnVpbGRlci5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmJpbmRpcikKKyAgICAgICAgc2VsZi5pc2RpcihzZWxmLmluY2x1ZGUpCisgICAgICAgIHNlbGYuaXNkaXIoKnNlbGYubGliKQorICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKTogICMgZGlhZ25vc3RpY3MgZm9yIFdpbmRvd3MgYnVpbGRib3QgZmFpbHVyZXMKKyAgICAgICAgICAgIGJkID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIpCisgICAgICAgICAgICBwcmludCgnQ29udGVudHMgb2YgJXI6JyAlIGJkKQorICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKKworICAgIGRlZiB0ZXN0X2lzb2xhdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgaXNvbGF0aW9uIGZyb20gc3lzdGVtIHNpdGUtcGFja2FnZXMKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBzc3AsIHMgaW4gKChUcnVlLCAndHJ1ZScpLCAoRmFsc2UsICdmYWxzZScpKToKKyAgICAgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSwgc3lzdGVtX3NpdGVfcGFja2FnZXM9c3NwKQorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RleHRfZmlsZV9jb250ZW50cygncHl2ZW52LmNmZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzID0gJXNcbicgJSBzLCBkYXRhKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX3N5bWxpbmsoKSwgJ05lZWRzIHN5bWxpbmtzJykKKyAgICBkZWYgdGVzdF9zeW1saW5raW5nKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBzeW1saW5raW5nIHdvcmtzIGFzIGV4cGVjdGVkCisgICAgICAgICIiIgorICAgICAgICBmb3IgdXNsIGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUsIHN5bWxpbmtzPXVzbCkKKyAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICAgICAgIyBEb24ndCB0ZXN0IHdoZW4gRmFsc2UsIGJlY2F1c2UgZS5nLiAncHl0aG9uJyBpcyBhbHdheXMKKyAgICAgICAgICAgICMgc3ltbGlua2VkIHRvICdweXRob24zLjMnIGluIHRoZSBlbnYsIGV2ZW4gd2hlbiBzeW1saW5raW5nIGluCisgICAgICAgICAgICAjIGdlbmVyYWwgaXNuJ3Qgd2FudGVkLgorICAgICAgICAgICAgaWYgdXNsOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhmbikpCisKKyAgICAjIElmIGEgdmVudiBpcyBjcmVhdGVkIGZyb20gYSBzb3VyY2UgYnVpbGQgYW5kIHRoYXQgdmVudiBpcyB1c2VkIHRvCisgICAgIyBydW4gdGhlIHRlc3QsIHRoZSBweXZlbnYuY2ZnIGluIHRoZSB2ZW52IGNyZWF0ZWQgaW4gdGhlIHRlc3Qgd2lsbAorICAgICMgcG9pbnQgdG8gdGhlIHZlbnYgYmVpbmcgdXNlZCB0byBydW4gdGhlIHRlc3QsIGFuZCB3ZSBsb3NlIHRoZSBsaW5rCisgICAgIyB0byB0aGUgc291cmNlIGJ1aWxkIC0gc28gUHl0aG9uIGNhbid0IGluaXRpYWxpc2UgcHJvcGVybHkuCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucHJlZml4ICE9IHN5cy5iYXNlX3ByZWZpeCwgJ1Rlc3Qgbm90IGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBhIHZlbnYnKQorICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHN5cy5leGVjdXRhYmxlIHZhbHVlIGlzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBlbnZweSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlYWxwYXRoKHNlbGYuZW52X2RpciksIHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgY21kID0gW2VudnB5LCAnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLmV4ZWN1dGFibGUpJ10KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBlbnZweS5lbmNvZGUoKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9zeW1saW5rKCksICdOZWVkcyBzeW1saW5rcycpCisgICAgZGVmIHRlc3RfZXhlY3V0YWJsZV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3lzLmV4ZWN1dGFibGUgdmFsdWUgaXMgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlLCBzeW1saW5rcz1UcnVlKQorICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisgICAgICAgIGVudnB5ID0gb3MucGF0aC5qb2luKG9zLnBhdGgucmVhbHBhdGgoc2VsZi5lbnZfZGlyKSwgc2VsZi5iaW5kaXIsIHNlbGYuZXhlKQorICAgICAgICBjbWQgPSBbZW52cHksICctYycsICdpbXBvcnQgc3lzOyBwcmludChzeXMuZXhlY3V0YWJsZSknXQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGVudnB5LmVuY29kZSgpKQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KEJhc2ljVGVzdCkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YWl0My5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKaW5kZXggNzg2ZTYwYi4uYmQwNmM4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YWl0My5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CkBAIC0xOSwxMyArMTksMTYgQEAKIAogY2xhc3MgV2FpdDNUZXN0KEZvcmtXYWl0KToKICAgICBkZWYgd2FpdF9pbXBsKHNlbGYsIGNwaWQpOgotICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICMgVGhpcyBtYW55IGl0ZXJhdGlvbnMgY2FuIGJlIHJlcXVpcmVkLCBzaW5jZSBzb21lIHByZXZpb3VzbHkgcnVuCisgICAgICAgICMgdGVzdHMgKGUuZy4gdGVzdF9jdHlwZXMpIGNvdWxkIGhhdmUgc3Bhd25lZCBhIGxvdCBvZiBjaGlsZHJlbgorICAgICAgICAjIHZlcnkgcXVpY2tseS4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgogICAgICAgICAgICAgIyB3YWl0MygpIHNob3VsZG4ndCBoYW5nLCBidXQgc29tZSBvZiB0aGUgYnVpbGRib3RzIHNlZW0gdG8gaGFuZwogICAgICAgICAgICAgIyBpbiB0aGUgZm9ya2luZyB0ZXN0cy4gIFRoaXMgaXMgYW4gYXR0ZW1wdCB0byBmaXggdGhlIHByb2JsZW0uCiAgICAgICAgICAgICBzcGlkLCBzdGF0dXMsIHJ1c2FnZSA9IG9zLndhaXQzKG9zLldOT0hBTkcpCiAgICAgICAgICAgICBpZiBzcGlkID09IGNwaWQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMS4wKQorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGlkLCBjcGlkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQppbmRleCA3OWJlODM1Li45NTNiMjgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKQEAgLTUxMiwxMiArNTEyLDExIEBACiAgICAgZGVmIHRlc3Rfc2hvd3dhcm5pbmdfbm90X2NhbGxhYmxlKHNlbGYpOgogICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCi0gICAgICAgICAgICBvbGRfc2hvd3dhcm5pbmcgPSBzZWxmLm1vZHVsZS5zaG93d2FybmluZworICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcgPSBwcmludAorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX291dHB1dCgnc3Rkb3V0Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybignV2FybmluZyEnKQogICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcgPSAyMwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tb2R1bGUud2FybiwgIldhcm5pbmchIikKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcgPSBvbGRfc2hvd3dhcm5pbmcKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tb2R1bGUud2FybiwgIldhcm5pbmchIikKIAogICAgIGRlZiB0ZXN0X3Nob3dfd2FybmluZ19vdXRwdXQoc2VsZik6CiAgICAgICAgICMgV2l0aCBzaG93YXJuaW5nKCkgbWlzc2luZywgbWFrZSBzdXJlIHRoYXQgb3V0cHV0IGlzIG9rYXkuCkBAIC01NDcsMTAgKzU0NiwxMyBAQAogICAgICAgICBnbG9iYWxzX2RpY3QgPSBnbG9iYWxzKCkKICAgICAgICAgb2xkZmlsZSA9IGdsb2JhbHNfZGljdFsnX19maWxlX18nXQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSkgYXMgdzoKKyAgICAgICAgICAgIGNhdGNoID0gb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZT1zZWxmLm1vZHVsZSkKKyAgICAgICAgICAgIHdpdGggY2F0Y2ggYXMgdzoKICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCiAgICAgICAgICAgICAgICAgZ2xvYmFsc19kaWN0WydfX2ZpbGVfXyddID0gTm9uZQogICAgICAgICAgICAgICAgIG9yaWdpbmFsX3dhcm5pbmdzLndhcm4oJ3Rlc3QnLCBVc2VyV2FybmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHcpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZ2xvYmFsc19kaWN0WydfX2ZpbGVfXyddID0gb2xkZmlsZQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYmJyb3dzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3dlYmJyb3dzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiOTM2NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2ViYnJvd3Nlci5weQpAQCAtMCwwICsxLDE5MiBAQAoraW1wb3J0IHdlYmJyb3dzZXIKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN1YnByb2Nlc3MKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK1VSTCA9ICdodHRwOi8vd3d3LmV4YW1wbGUuY29tJworQ01EX05BTUUgPSAndGVzdCcKKworCitjbGFzcyBQb3Blbk1vY2sobW9jay5NYWdpY01vY2spOgorCisgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgd2FpdChzZWxmLCBzZWNvbmRzPU5vbmUpOgorICAgICAgICByZXR1cm4gMAorCisKK2NsYXNzIENvbW1hbmRUZXN0TWl4aW46CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgbWV0aCwgKiwgYXJncz1bVVJMXSwga3c9e30sIG9wdGlvbnMsIGFyZ3VtZW50cyk6CisgICAgICAgICIiIkdpdmVuIGEgd2ViIGJyb3dzZXIgaW5zdGFuY2UgbWV0aG9kIG5hbWUgYWxvbmcgd2l0aCBhcmd1bWVudHMgYW5kCisgICAgICAgIGtleXdvcmRzIGZvciBzYW1lICh3aGljaCBkZWZhdWx0cyB0byB0aGUgc2luZ2xlIGFyZ3VtZW50IFVSTCksIGNyZWF0ZXMKKyAgICAgICAgYSBicm93c2VyIGluc3RhbmNlIGZyb20gdGhlIGNsYXNzIHBvaW50ZWQgdG8gYnkgc2VsZi5icm93c2VyLCBjYWxscyB0aGUKKyAgICAgICAgaW5kaWNhdGVkIGluc3RhbmNlIG1ldGhvZCB3aXRoIHRoZSBpbmRpY2F0ZWQgYXJndW1lbnRzLCBhbmQgY29tcGFyZXMKKyAgICAgICAgdGhlIHJlc3VsdGluZyBvcHRpb25zIGFuZCBhcmd1bWVudHMgcGFzc2VkIHRvIFBvcGVuIGJ5IHRoZSBicm93c2VyCisgICAgICAgIGluc3RhbmNlIGFnYWluc3QgdGhlICdvcHRpb25zJyBhbmQgJ2FyZ3MnIGxpc3RzLiAgT3B0aW9ucyBhcmUgY29tcGFyZWQKKyAgICAgICAgaW4gYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBmYXNoaW9uLCBhbmQgdGhlIGFyZ3VtZW50cyBhcmUgY29tcGFyZWQgaW4KKyAgICAgICAgc2VxdWVuY2Ugb3JkZXIgdG8gd2hhdGV2ZXIgaXMgbGVmdCBvdmVyIGFmdGVyIHJlbW92aW5nIHRoZSBvcHRpb25zLgorCisgICAgICAgICIiIgorICAgICAgICBwb3BlbiA9IFBvcGVuTW9jaygpCisgICAgICAgIHN1cHBvcnQucGF0Y2goc2VsZiwgc3VicHJvY2VzcywgJ1BvcGVuJywgcG9wZW4pCisgICAgICAgIGJyb3dzZXIgPSBzZWxmLmJyb3dzZXJfY2xhc3MobmFtZT1DTURfTkFNRSkKKyAgICAgICAgZ2V0YXR0cihicm93c2VyLCBtZXRoKSgqYXJncywgKiprdykKKyAgICAgICAgcG9wZW5fYXJncyA9IHN1YnByb2Nlc3MuUG9wZW4uY2FsbF9hcmdzWzBdWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9wZW5fYXJnc1swXSwgQ01EX05BTUUpCisgICAgICAgIHBvcGVuX2FyZ3MucG9wKDApCisgICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3B0aW9uLCBwb3Blbl9hcmdzKQorICAgICAgICAgICAgcG9wZW5fYXJncy5wb3AocG9wZW5fYXJncy5pbmRleChvcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcGVuX2FyZ3MsIGFyZ3VtZW50cykKKworCitjbGFzcyBHZW5lcmljQnJvd3NlckNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkdlbmVyaWNCcm93c2VyCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBCYWNrZ3JvdW5kQnJvd3NlckNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkJhY2tncm91bmRCcm93c2VyCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBDaHJvbWVDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5DaHJvbWUKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9W10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy0tbmV3LXdpbmRvdyddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworCitjbGFzcyBNb3ppbGxhQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuTW96aWxsYQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1ub3JhaXNlJywgJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJhaXNlJywgJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy13aW5kb3cpJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctdGFiKScuZm9ybWF0KFVSTCldKQorCisKK2NsYXNzIEdhbGVvbkNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkdhbGVvbgorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1uJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLW5vcmFpc2UnLCAnLW4nXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctdyddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXcnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgT3BlcmFDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5PcGVyYQorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIGt3PWRpY3QoYXV0b3JhaXNlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZScsICctbm9yYWlzZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctd2luZG93KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy1wYWdlKScuZm9ybWF0KFVSTCldKQorCisKK2NsYXNzIEVMaW5rc0NvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLkVsaW5rcworCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl93aXRoX2F1dG9yYWlzZV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXdpbmRvdyknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXdfdGFiJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXRhYiknLmZvcm1hdChVUkwpXSkKKworCitpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQppbmRleCBhMDhmNjZiLi4zOThjNTNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CkBAIC05LDYgKzksOCBAQAogZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTywgQnVmZmVyZWRSZWFkZXIKIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCBCYXNlU2VydmVyCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25faW1wbGVtZW50YXRpb24KKwogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKQEAgLTEyOSw5ICsxMzEsMTEgQEAKIGNsYXNzIEludGVncmF0aW9uVGVzdHMoVGVzdENhc2UpOgogCiAgICAgZGVmIGNoZWNrX2hlbGxvKHNlbGYsIG91dCwgaGFzX2xlbmd0aD1UcnVlKToKKyAgICAgICAgcHl2ZXIgPSAocHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgKyAiLyIgKworICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LAogICAgICAgICAgICAgKCJIVFRQLzEuMCAyMDAgT0tcclxuIgotICAgICAgICAgICAgIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgUHl0aG9uLyIrc3lzLnZlcnNpb24uc3BsaXQoKVswXSsiXHJcbiIKKyAgICAgICAgICAgICJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yICIgKyBweXZlciArIlxyXG4iCiAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXHJcbiIKICAgICAgICAgICAgICJEYXRlOiBNb24sIDA1IEp1biAyMDA2IDE4OjQ5OjU0IEdNVFxyXG4iICsKICAgICAgICAgICAgIChoYXNfbGVuZ3RoIGFuZCAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG4iIG9yICIiKSArCkBAIC0xODUsOSArMTg5LDExIEBACiAgICAgICAgIG91dCwgZXJyID0gcnVuX2Ftb2NrKHZhbGlkYXRvcihhcHApKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZXJyLmVuZHN3aXRoKCciR0VUIC8gSFRUUC8xLjAiIDIwMCA0XG4nKSkKICAgICAgICAgdmVyID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcHkgID0gcHl0aG9uX2ltcGxlbWVudGF0aW9uKCkuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIHB5dmVyID0gcHkgKyBiIi8iICsgdmVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgYiJIVFRQLzEuMCAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAgIGIiU2VydmVyOiBXU0dJU2VydmVyLzAuMiBQeXRob24vIiArIHZlciArIGIiXHJcbiIKKyAgICAgICAgICAgICAgICBiIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgIisgcHl2ZXIgKyBiIlxyXG4iCiAgICAgICAgICAgICAgICAgYiJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcclxuIgogICAgICAgICAgICAgICAgIGIiRGF0ZTogV2VkLCAyNCBEZWMgMjAwOCAxMzoyOTozMiBHTVRcclxuIgogICAgICAgICAgICAgICAgIGIiXHJcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggMzA5MmYzYi4uOTdkNjRmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTEsMjggKzEsMzQgQEAKICMgeG1sLmV0cmVlIHRlc3QuICBUaGlzIGZpbGUgY29udGFpbnMgZW5vdWdoIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0CiAjIGFsbCBpbmNsdWRlZCBjb21wb25lbnRzIHdvcmsgYXMgdGhleSBzaG91bGQuCiAjIExhcmdlIHBhcnRzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgdXBzdHJlYW0gdGVzdCBzdWl0ZS4KLQotIyBJTVBPUlRBTlQ6IHRoZSBzYW1lIGRvY3Rlc3RzIGFyZSBydW4gZnJvbSAidGVzdF94bWxfZXRyZWVfYyIgaW4KLSMgb3JkZXIgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIEMgaW1wbGVtZW50YXRpb24gYW5kIHRoZQotIyBQeXRob24gaW1wbGVtZW50YXRpb24uCisjCisjIFBMRUFTRSB3cml0ZSBhbGwgbmV3IHRlc3RzIHVzaW5nIHRoZSBzdGFuZGFyZCB1bml0dGVzdCBpbmZyYXN0cnVjdHVyZSBhbmQKKyMgbm90IGRvY3Rlc3QuCisjCisjIElNUE9SVEFOVDogdGhlIHNhbWUgdGVzdHMgYXJlIHJ1biBmcm9tICJ0ZXN0X3htbF9ldHJlZV9jIiBpbiBvcmRlcgorIyB0byBlbnN1cmUgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIFB5dGhvbgorIyBpbXBsZW1lbnRhdGlvbi4KICMKICMgRm9yIHRoaXMgcHVycG9zZSwgdGhlIG1vZHVsZS1sZXZlbCAiRVQiIHN5bWJvbCBpcyB0ZW1wb3JhcmlseQogIyBtb25rZXktcGF0Y2hlZCB3aGVuIHJ1bm5pbmcgdGhlICJ0ZXN0X3htbF9ldHJlZV9jIiB0ZXN0IHN1aXRlLgogIyBEb24ndCByZS1pbXBvcnQgInhtbC5ldHJlZS5FbGVtZW50VHJlZSIgbW9kdWxlIGluIHRoZSBkb2NzdHJpbmcsCiAjIGV4Y2VwdCBpZiB0aGUgdGVzdCBpcyBzcGVjaWZpYyB0byB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgaHRtbAoraW1wb3J0IGlvCitpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmaW5kZmlsZSwgdW5saW5rLCBpbXBvcnRfZnJlc2hfbW9kdWxlLCBnY19jb2xsZWN0CiAKLWZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAorcHlFVCA9IE5vbmUKK0VUID0gTm9uZQogCiBTSU1QTEVfWE1MRklMRSA9IGZpbmRmaWxlKCJzaW1wbGUueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiB0cnk6Ci0gICAgU0lNUExFX1hNTEZJTEUuZW5jb2RlKCJ1dGY4IikKKyAgICBTSU1QTEVfWE1MRklMRS5lbmNvZGUoInV0Zi04IikKIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImZpbGVuYW1lIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiBTSU1QTEVfTlNfWE1MRklMRSA9IGZpbmRmaWxlKCJzaW1wbGUtbnMueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCkBAIC01Nyw2ICs2MywyMiBAQAogPC9ib2R5PgogIiIiCiAKK1NBTVBMRV9YTUxfTlNfRUxFTVMgPSAiIiIKKzxyb290PgorPGg6dGFibGUgeG1sbnM6aD0iaGVsbG8iPgorICA8aDp0cj4KKyAgICA8aDp0ZD5BcHBsZXM8L2g6dGQ+CisgICAgPGg6dGQ+QmFuYW5hczwvaDp0ZD4KKyAgPC9oOnRyPgorPC9oOnRhYmxlPgorCis8Zjp0YWJsZSB4bWxuczpmPSJmb28iPgorICA8ZjpuYW1lPkFmcmljYW4gQ29mZmVlIFRhYmxlPC9mOm5hbWU+CisgIDxmOndpZHRoPjgwPC9mOndpZHRoPgorICA8ZjpsZW5ndGg+MTIwPC9mOmxlbmd0aD4KKzwvZjp0YWJsZT4KKzwvcm9vdD4KKyIiIgogCiBkZWYgc2FuaXR5KCk6CiAgICAgIiIiCkBAIC0xODgsMTAgKzIxMCw4IEBACiAKICAgICBUaGVzZSBtZXRob2RzIHJldHVybiBhbiBpdGVyYWJsZS4gU2VlIGJ1ZyA2NDcyLgogCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXIoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCgidGFnIikuX19uZXh0X18pCiAgICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJmaW5kKCIqIikuX19uZXh0X18pCi0gICAgPj4+IGNoZWNrX21ldGhvZCh0cmVlLml0ZXIoInRhZyIpLl9fbmV4dF9fKQogICAgID4+PiBjaGVja19tZXRob2QodHJlZS5pdGVyZmluZCgidGFnIikuX19uZXh0X18pCiAgICAgPj4+IGNoZWNrX21ldGhvZCh0cmVlLml0ZXJmaW5kKCIqIikuX19uZXh0X18pCiAKQEAgLTI3MCw0MiArMjkwLDYgQEAKICAgICAnPHRhZz5oZWxsbzwvdGFnPicKICAgICAiIiIKIAotIyBPbmx5IHdpdGggUHl0aG9uIGltcGxlbWVudGF0aW9uCi1kZWYgc2ltcGxlZmluZCgpOgotICAgICIiIgotICAgIFRlc3QgZmluZCBtZXRob2RzIHVzaW5nIHRoZSBlbGVtZW50cGF0aCBmYWxsYmFjay4KLQotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKLQotICAgID4+PiBDdXJyZW50RWxlbWVudFBhdGggPSBFbGVtZW50VHJlZS5FbGVtZW50UGF0aAotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEVsZW1lbnRUcmVlLl9TaW1wbGVFbGVtZW50UGF0aCgpCi0gICAgPj4+IGVsZW0gPSBFbGVtZW50VHJlZS5YTUwoU0FNUExFX1hNTCkKLSAgICA+Pj4gZWxlbS5maW5kKCJ0YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJ0YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciLCAiZGVmYXVsdCIpCi0gICAgJ2RlZmF1bHQnCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRhZyIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJywgJ3RhZyddCi0KLSAgICBQYXRoIHN5bnRheCBkb2Vzbid0IHdvcmsgaW4gdGhpcyBjYXNlLgotCi0gICAgPj4+IGVsZW0uZmluZCgic2VjdGlvbi90YWciKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL3RhZyIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi90YWciKSkKLSAgICBbXQotCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gQ3VycmVudEVsZW1lbnRQYXRoCi0gICAgIiIiCi0KIGRlZiBmaW5kKCk6CiAgICAgIiIiCiAgICAgVGVzdCBmaW5kIG1ldGhvZHMgKGluY2x1ZGluZyB4cGF0aCBzeW50YXgpLgpAQCAtNDYwLDE3ICs0NDQsMTkgQEAKICAgICAiIiIKICAgICBDaGVjayB0aGF0IHRoZSBwYXRoIGNhY2hlIGJlaGF2ZXMgc2FuZWx5LgogCisgICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorCiAgICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKICAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBjYWNoZV9sZW5fMTAgPSBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKQorICAgID4+PiBjYWNoZV9sZW5fMTAgPSBsZW4oRWxlbWVudFBhdGguX2NhY2hlKQogICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpID09IGNhY2hlX2xlbl8xMAorICAgID4+PiBsZW4oRWxlbWVudFBhdGguX2NhY2hlKSA9PSBjYWNoZV9sZW5fMTAKICAgICBUcnVlCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDIwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPiBjYWNoZV9sZW5fMTAKKyAgICA+Pj4gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkgPiBjYWNoZV9sZW5fMTAKICAgICBUcnVlCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDYwMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpIDwgNTAwCisgICAgPj4+IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpIDwgNTAwCiAgICAgVHJ1ZQogICAgICIiIgogCkBAIC05MDIsNjUgKzg4OCw2IEBACiAgICAgIiIiCiAgICAgRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/Pjx4bWwgLz4iICUgZW5jb2RpbmcpCiAKLWRlZiBlbmNvZGluZygpOgotICAgIHIiIiIKLSAgICBUZXN0IGVuY29kaW5nIGlzc3Vlcy4KLQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gZWxlbS50ZXh0ID0gImFiYyIKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICBiJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuPHRhZz5hYmM8L3RhZz4iCi0KLSAgICA+Pj4gZWxlbS50ZXh0ID0gIjwmXCJcJz4iCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikgIyBjZGF0YSBjaGFyYWN0ZXJzCi0gICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYic8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotCi0gICAgPj4+IGVsZW0uYXR0cmliWyJrZXkiXSA9ICI8JlwiXCc+IgotICAgID4+PiBlbGVtLnRleHQgPSBOb25lCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiJzw/eG1sIHZlcnNpb249XCcxLjBcJyBlbmNvZGluZz1cJ2lzby04ODU5LTFcJz8+XG48dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLQotICAgID4+PiBlbGVtLnRleHQgPSAnXHhlNVx4ZjZceGY2PD4nCi0gICAgPj4+IGVsZW0uYXR0cmliLmNsZWFyKCkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZz5ceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnPiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuPHRhZz5ceGU1XHhmNlx4ZjYmbHQ7Jmd0OzwvdGFnPiIKLQotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAnXHhlNVx4ZjZceGY2PD4nCi0gICAgPj4+IGVsZW0udGV4dCA9IE5vbmUKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZyBrZXk9Ilx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgYic8dGFnIGtleT0iJiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgIiIiCi0KIGRlZiBtZXRob2RzKCk6CiAgICAgciIiIgogICAgIFRlc3Qgc2VyaWFsaXphdGlvbiBtZXRob2RzLgpAQCAtOTc5LDM2ICs5MDYsNiBAQAogICAgICcxIDwgMlxuJwogICAgICIiIgogCi1kZWYgaXRlcmF0b3JzKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBpdGVyYXRvcnMuCi0KLSAgICA+Pj4gZSA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGhpcyBpcyBhIDxpPnBhcmFncmFwaDwvaT4uPC9ib2R5Pi4uPC9odG1sPiIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGUuaXRlcigpKQotICAgIFsnaHRtbCcsICdib2R5JywgJ2knXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlLmZpbmQoImJvZHkiKS5pdGVyKCkpCi0gICAgWydib2R5JywgJ2knXQotICAgID4+PiBzdW1tYXJpemUobmV4dChlLml0ZXIoKSkpCi0gICAgJ2h0bWwnCi0gICAgPj4+ICIiLmpvaW4oZS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLi4uJwotICAgID4+PiAiIi5qb2luKGUuZmluZCgiYm9keSIpLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJwotICAgID4+PiBuZXh0KGUuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhICcKLQotICAgIE1ldGhvZCBpdGVycGFyc2Ugc2hvdWxkIHJldHVybiBhbiBpdGVyYXRvci4gU2VlIGJ1ZyA2NDcyLgotCi0gICAgPj4+IHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZSwgdG9fc3RyaW5nPUZhbHNlKQotICAgID4+PiBuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSkgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgKCdlbmQnLCA8RWxlbWVudCAnaScgYXQgMHguLi4+KQotCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShOb25lKQotICAgID4+PiB0cmVlLml0ZXIoKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBBdHRyaWJ1dGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnaXRlcicKLSAgICAiIiIKLQogRU5USVRZX1hNTCA9ICIiIlwKIDwhRE9DVFlQRSBwb2ludHMgWwogPCFFTlRJVFkgJSB1c2VyLWVudGl0aWVzIFNZU1RFTSAndXNlci1lbnRpdGllcy54bWwnPgpAQCAtMTA0OSwyNiArOTQ2LDYgQEAKICAgICAnPGRvY3VtZW50PnRleHQ8L2RvY3VtZW50PicKICAgICAiIiIKIAotZGVmIGVycm9yKHhtbCk6Ci0gICAgIiIiCi0KLSAgICBUZXN0IGVycm9yIGhhbmRsaW5nLgotCi0gICAgPj4+IGlzc3ViY2xhc3MoRVQuUGFyc2VFcnJvciwgU3ludGF4RXJyb3IpCi0gICAgVHJ1ZQotICAgID4+PiBlcnJvcigiZm9vIikucG9zaXRpb24KLSAgICAoMSwgMCkKLSAgICA+Pj4gZXJyb3IoIjx0YWc+JmZvbzs8L3RhZz4iKS5wb3NpdGlvbgotICAgICgxLCA1KQotICAgID4+PiBlcnJvcigiZm9vYmFyPCIpLnBvc2l0aW9uCi0gICAgKDEsIDYpCi0KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIEVULlhNTCh4bWwpCi0gICAgZXhjZXB0IEVULlBhcnNlRXJyb3I6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX2luZm8oKVsxXQotCiBkZWYgbmFtZXNwYWNlKCk6CiAgICAgIiIiCiAgICAgVGVzdCBuYW1lc3BhY2UgaXNzdWVzLgpAQCAtMTI1Niw4ICsxMTMzLDggQEAKIAogICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+JykpCiAgICAgYic8P3Rlc3QgPHRlc3RpbmcmPj8+JwotICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+XHhlMycpLCAnbGF0aW4xJykKLSAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluMSc/Plxcbjw/dGVzdCA8dGVzdGluZyY+XFx4ZTM/PiIKKyAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPlx4ZTMnKSwgJ2xhdGluLTEnKQorICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nbGF0aW4tMSc/Plxcbjw/dGVzdCA8dGVzdGluZyY+XFx4ZTM/PiIKICAgICAiIiIKIAogIwpAQCAtMTMzNiwyMSArMTIxMywyMCBAQAogPC9kb2N1bWVudD4KICIiIi5mb3JtYXQoaHRtbC5lc2NhcGUoU0lNUExFX1hNTEZJTEUsIFRydWUpKQogCisKIGRlZiB4aW5jbHVkZV9sb2FkZXIoaHJlZiwgcGFyc2U9InhtbCIsIGVuY29kaW5nPU5vbmUpOgogICAgIHRyeToKICAgICAgICAgZGF0YSA9IFhJTkNMVURFW2hyZWZdCiAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICByYWlzZSBJT0Vycm9yKCJyZXNvdXJjZSBub3QgZm91bmQiKQorICAgICAgICByYWlzZSBPU0Vycm9yKCJyZXNvdXJjZSBub3QgZm91bmQiKQogICAgIGlmIHBhcnNlID09ICJ4bWwiOgotICAgICAgICBmcm9tIHhtbC5ldHJlZS5FbGVtZW50VHJlZSBpbXBvcnQgWE1MCi0gICAgICAgIHJldHVybiBYTUwoZGF0YSkKKyAgICAgICAgZGF0YSA9IEVULlhNTChkYXRhKQogICAgIHJldHVybiBkYXRhCiAKIGRlZiB4aW5jbHVkZSgpOgogICAgIHIiIiIKICAgICBCYXNpYyBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4xKQogCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAogICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKIAogICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiQzEueG1sIikKQEAgLTE0MDUsMjYgKzEyODEsMTAgQEAKICAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkM1LnhtbCIpCiAgICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHhpbmNsdWRlX2xvYWRlcikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgSU9FcnJvcjogcmVzb3VyY2Ugbm90IGZvdW5kCisgICAgT1NFcnJvcjogcmVzb3VyY2Ugbm90IGZvdW5kCiAgICAgPj4+ICMgcHJpbnQoc2VyaWFsaXplKGRvY3VtZW50KSkgIyBDNQogICAgICIiIgogCi1kZWYgeGluY2x1ZGVfZGVmYXVsdCgpOgotICAgICIiIgotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKLQotICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiZGVmYXVsdC54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50KQotICAgID4+PiBwcmludChzZXJpYWxpemUoZG9jdW1lbnQpKSAjIGRlZmF1bHQKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD5FeGFtcGxlLjwvcD4KLSAgICAgIDxyb290PgotICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+Ci0gICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCi0gICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L3Jvb3Q+Ci0gICAgPC9kb2N1bWVudD4KLSAgICAiIiIKIAogIwogIyBiYWRseSBmb3JtYXR0ZWQgeGk6aW5jbHVkZSB0YWdzCkBAIC0xNjEyLDcgKzE0NzIsNyBAQAogCiBjbGFzcyBFeGNlcHRpb25GaWxlOgogICAgIGRlZiByZWFkKHNlbGYsIHgpOgotICAgICAgICByYWlzZSBJT0Vycm9yCisgICAgICAgIHJhaXNlIE9TRXJyb3IKIAogZGVmIHhtbHRvb2xraXQ2MCgpOgogICAgICIiIgpAQCAtMTYyMCw3ICsxNDgwLDcgQEAKICAgICBIYW5kbGUgY3Jhc2ggaW4gc3RyZWFtIHNvdXJjZS4KICAgICA+Pj4gdHJlZSA9IEVULnBhcnNlKEV4Y2VwdGlvbkZpbGUoKSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgSU9FcnJvcgorICAgIE9TRXJyb3IKIAogICAgICIiIgogCkBAIC0xODUxLDI1ICsxNzExLDY2NiBAQAogICAgID4+PiBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoJ3Rlc3QxMDc3NycsICdodHRwOi8vbXl1cmkvJykKICAgICAiIiIKIAotZGVmIGNoZWNrX2h0bWxfZW1wdHlfZWxlbXNfc2VyaWFsaXphdGlvbihzZWxmKToKLSAgICAjIGlzc3VlIDE1OTcwCi0gICAgIyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW5kZXgvZWxlbWVudHMuaHRtbAotICAgICIiIgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgPj4+IGVtcHR5X2VsZW1zID0gWydBUkVBJywgJ0JBU0UnLCAnQkFTRUZPTlQnLCAnQlInLCAnQ09MJywgJ0ZSQU1FJywgJ0hSJywKLSAgICAuLi4gICAgICAgICAgICAgICAgJ0lNRycsICdJTlBVVCcsICdJU0lOREVYJywgJ0xJTksnLCAnTUVUQScsICdQQVJBTSddCi0gICAgPj4+IGVsZW1zID0gJycuam9pbignPCVzIC8+JyAlIGVsZW0gZm9yIGVsZW0gaW4gZW1wdHlfZWxlbXMpCi0gICAgPj4+IHNlcmlhbGl6ZShFVC5YTUwoJzxodG1sPiVzPC9odG1sPicgJSBlbGVtcyksIG1ldGhvZD0naHRtbCcpCi0gICAgJzxodG1sPjxBUkVBPjxCQVNFPjxCQVNFRk9OVD48QlI+PENPTD48RlJBTUU+PEhSPjxJTUc+PElOUFVUPjxJU0lOREVYPjxMSU5LPjxNRVRBPjxQQVJBTT48L2h0bWw+JwotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMubG93ZXIoKSksIG1ldGhvZD0naHRtbCcpCi0gICAgJzxodG1sPjxhcmVhPjxiYXNlPjxiYXNlZm9udD48YnI+PGNvbD48ZnJhbWU+PGhyPjxpbWc+PGlucHV0Pjxpc2luZGV4PjxsaW5rPjxtZXRhPjxwYXJhbT48L2h0bWw+JwotICAgID4+PiBlbGVtcyA9ICcnLmpvaW4oJzwlcz48LyVzPicgJSAoZWxlbSwgZWxlbSkgZm9yIGVsZW0gaW4gZW1wdHlfZWxlbXMpCi0gICAgPj4+IHNlcmlhbGl6ZShFVC5YTUwoJzxodG1sPiVzPC9odG1sPicgJSBlbGVtcyksIG1ldGhvZD0naHRtbCcpCi0gICAgJzxodG1sPjxBUkVBPjxCQVNFPjxCQVNFRk9OVD48QlI+PENPTD48RlJBTUU+PEhSPjxJTUc+PElOUFVUPjxJU0lOREVYPjxMSU5LPjxNRVRBPjxQQVJBTT48L2h0bWw+JwotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMubG93ZXIoKSksIG1ldGhvZD0naHRtbCcpCi0gICAgJzxodG1sPjxhcmVhPjxiYXNlPjxiYXNlZm9udD48YnI+PGNvbD48ZnJhbWU+PGhyPjxpbWc+PGlucHV0Pjxpc2luZGV4PjxsaW5rPjxtZXRhPjxwYXJhbT48L2h0bWw+JwogCi0gICAgIiIiCitjbGFzcyBCYXNpY0VsZW1lbnRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hdWdtZW50YXRpb25fdHlwZV9lcnJvcnMoc2VsZik6CisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdqb2UnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuYXBwZW5kLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZS5leHRlbmQsIFtFVC5FbGVtZW50KCdiYXInKSwgJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGUuaW5zZXJ0LCAwLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2N5Y2xpY19nYyhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVtbXk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBUZXN0IHRoZSBzaG9ydGVzdCBjeWNsZTogZC0+ZWxlbWVudC0+ZAorICAgICAgICBkID0gRHVtbXkoKQorICAgICAgICBkLmR1bW15cmVmID0gRVQuRWxlbWVudCgnam9lJywgYXR0cj1kKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZCkKKyAgICAgICAgZGVsIGQKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKKworICAgICAgICAjIEEgbG9uZ2VyIGN5Y2xlOiBkLT5lLT5lMi0+ZAorICAgICAgICBlID0gRVQuRWxlbWVudCgnam9lJykKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IGUKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGUyID0gRVQuU3ViRWxlbWVudChlLCAnZm9vJywgYXR0cj1kKQorICAgICAgICBkZWwgZCwgZSwgZTIKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKKworICAgICAgICAjIEEgY3ljbGUgYmV0d2VlbiBFbGVtZW50IG9iamVjdHMgYXMgY2hpbGRyZW4gb2Ygb25lIGFub3RoZXIKKyAgICAgICAgIyBlMS0+ZTItPmUzLT5lMQorICAgICAgICBlMSA9IEVULkVsZW1lbnQoJ2UxJykKKyAgICAgICAgZTIgPSBFVC5FbGVtZW50KCdlMicpCisgICAgICAgIGUzID0gRVQuRWxlbWVudCgnZTMnKQorICAgICAgICBlMS5hcHBlbmQoZTIpCisgICAgICAgIGUyLmFwcGVuZChlMikKKyAgICAgICAgZTMuYXBwZW5kKGUxKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZTEpCisgICAgICAgIGRlbCBlMSwgZTIsIGUzCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICBmbGFnID0gRmFsc2UKKyAgICAgICAgZGVmIHdyZWZfY2Iodyk6CisgICAgICAgICAgICBub25sb2NhbCBmbGFnCisgICAgICAgICAgICBmbGFnID0gVHJ1ZQorICAgICAgICBlID0gRVQuRWxlbWVudCgnZScpCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihlLCB3cmVmX2NiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKS50YWcsICdlJykKKyAgICAgICAgZGVsIGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKSwgTm9uZSkKKworCitjbGFzcyBFbGVtZW50VHJlZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2lzdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlBhcnNlRXJyb3IsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5RTmFtZSwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULkVsZW1lbnRUcmVlLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuRWxlbWVudCwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlRyZWVCdWlsZGVyLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuWE1MUGFyc2VyLCB0eXBlKQorCisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc190cml2aWFsKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXllLCBFVC5FbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXllLCBNeUVsZW1lbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXllLnRhZywgJ2ZvbycpCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgYXR0cmlidXRlIGFzc2lnbm1lbnQgd29ya3MgKGlzc3VlIDE0ODQ5KQorICAgICAgICBteWUudGV4dCA9ICJqb2UiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXllLnRleHQsICJqb2UiKQorCisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc19jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhZywgYXR0cmliPXt9LCAqKmV4dHJhKToKKyAgICAgICAgICAgICAgICBzdXBlcihNeUVsZW1lbnQsIHNlbGYpLl9faW5pdF9fKHRhZyArICdfXycsIGF0dHJpYiwgKipleHRyYSkKKworICAgICAgICBteWUgPSBNeUVsZW1lbnQoJ2ZvbycsIHsnYSc6IDEsICdiJzogMn0sIGM9MywgZD00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50YWcsICdmb29fXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKG15ZS5pdGVtcygpKSwKKyAgICAgICAgICAgIFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KV0pCisKKyAgICBkZWYgdGVzdF9FbGVtZW50X3N1YmNsYXNzX25ld19tZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIGRlZiBuZXdtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGFnCisKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdqb2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS5uZXdtZXRob2QoKSwgJ2pvZScpCisKKyAgICBkZWYgdGVzdF9odG1sX2VtcHR5X2VsZW1zX3NlcmlhbGl6YXRpb24oc2VsZik6CisgICAgICAgICMgaXNzdWUgMTU5NzAKKyAgICAgICAgIyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW5kZXgvZWxlbWVudHMuaHRtbAorICAgICAgICBmb3IgZWxlbWVudCBpbiBbJ0FSRUEnLCAnQkFTRScsICdCQVNFRk9OVCcsICdCUicsICdDT0wnLCAnRlJBTUUnLCAnSFInLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0lNRycsICdJTlBVVCcsICdJU0lOREVYJywgJ0xJTksnLCAnTUVUQScsICdQQVJBTSddOgorICAgICAgICAgICAgZm9yIGVsZW0gaW4gW2VsZW1lbnQsIGVsZW1lbnQubG93ZXIoKV06CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAnPCVzPicgJSBlbGVtCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZShFVC5YTUwoJzwlcyAvPicgJSBlbGVtKSwgbWV0aG9kPSdodG1sJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZWQsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUoRVQuWE1MKCc8JXM+PC8lcz4nICUgKGVsZW0sZWxlbSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSdodG1sJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZWQsIGV4cGVjdGVkKQorCitjbGFzcyBFbGVtZW50SXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfaWxpc3Qoc2VsZiwgZWxlbSwgdGFnPU5vbmUpOgorICAgICAgICByZXR1cm4gc3VtbWFyaXplX2xpc3QoZWxlbS5pdGVyKHRhZykpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgZG9jID0gRVQuWE1MKCI8aHRtbD48Ym9keT50aGlzIGlzIGEgPGk+cGFyYWdyYXBoPC9pPi48L2JvZHk+Li48L2h0bWw+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MpLCBbJ2h0bWwnLCAnYm9keScsICdpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLmZpbmQoJ2JvZHknKSksIFsnYm9keScsICdpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChkb2MuaXRlcigpKS50YWcsICdodG1sJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGRvYy5pdGVydGV4dCgpKSwgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguLi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLmZpbmQoJ2JvZHknKS5pdGVydGV4dCgpKSwKKyAgICAgICAgICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChkb2MuaXRlcnRleHQoKSksICd0aGlzIGlzIGEgJykKKworICAgICAgICAjIGl0ZXJwYXJzZSBzaG91bGQgcmV0dXJuIGFuIGl0ZXJhdG9yCisgICAgICAgIHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZG9jLCB0b19zdHJpbmc9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChFVC5pdGVycGFyc2Uoc291cmNlZmlsZSkpWzBdLCAnZW5kJykKKworICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRyZWUuaXRlcikKKworICAgIGRlZiB0ZXN0X2Nvcm5lcnMoc2VsZik6CisgICAgICAgICMgc2luZ2xlIHJvb3QsIG5vIHN1YmVsZW1lbnRzCisgICAgICAgIGEgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJ10pCisKKyAgICAgICAgIyBvbmUgY2hpbGQKKyAgICAgICAgYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnYiddKQorCisgICAgICAgICMgb25lIGNoaWxkIGFuZCBvbmUgZ3JhbmRjaGlsZAorICAgICAgICBjID0gRVQuU3ViRWxlbWVudChiLCAnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJywgJ2MnXSkKKworICAgICAgICAjIHR3byBjaGlsZHJlbiwgb25seSBmaXJzdCB3aXRoIGdyYW5kY2hpbGQKKyAgICAgICAgZCA9IEVULlN1YkVsZW1lbnQoYSwgJ2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnYicsICdjJywgJ2QnXSkKKworICAgICAgICAjIHJlcGxhY2UgZmlyc3QgY2hpbGQgYnkgc2Vjb25kCisgICAgICAgIGFbMF0gPSBhWzFdCisgICAgICAgIGRlbCBhWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdkJ10pCisKKyAgICBkZWYgdGVzdF9pdGVyX2J5X3RhZyhzZWxmKToKKyAgICAgICAgZG9jID0gRVQuWE1MKCcnJworICAgICAgICAgICAgPGRvY3VtZW50PgorICAgICAgICAgICAgICAgIDxob3VzZT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTE8L3Jvb20+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb20yPC9yb29tPgorICAgICAgICAgICAgICAgIDwvaG91c2U+CisgICAgICAgICAgICAgICAgPHNoZWQ+bm90aGluZyBoZXJlCisgICAgICAgICAgICAgICAgPC9zaGVkPgorICAgICAgICAgICAgICAgIDxob3VzZT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTg8L3Jvb20+CisgICAgICAgICAgICAgICAgPC9ob3VzZT4KKyAgICAgICAgICAgIDwvZG9jdW1lbnQ+JycnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAncm9vbScpLCBbJ3Jvb20nXSAqIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAnaG91c2UnKSwgWydob3VzZSddICogMikKKworICAgICAgICAjIG1ha2Ugc3VyZSBib3RoIHRhZz1Ob25lIGFuZCB0YWc9JyonIHJldHVybiBhbGwgdGFncworICAgICAgICBhbGxfdGFncyA9IFsnZG9jdW1lbnQnLCAnaG91c2UnLCAncm9vbScsICdyb29tJywKKyAgICAgICAgICAgICAgICAgICAgJ3NoZWQnLCAnaG91c2UnLCAncm9vbSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jKSwgYWxsX3RhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAnKicpLCBhbGxfdGFncykKKworCitjbGFzcyBUcmVlQnVpbGRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHNhbXBsZTEgPSAoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKKyAgICAgICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICAnICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nCisgICAgICAgICc8aHRtbD50ZXh0PC9odG1sPicpCisKKyAgICBzYW1wbGUyID0gJycnPHRvcGxldmVsPnNvbWV0ZXh0PC90b3BsZXZlbD4nJycKKworICAgIGRlZiB0ZXN0X2R1bW15X2J1aWxkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2VEdW1teUJ1aWxkZXI6CisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgY2xhc3MgRHVtbXlCdWlsZGVyKEJhc2VEdW1teUJ1aWxkZXIpOgorICAgICAgICAgICAgZGF0YSA9IHN0YXJ0ID0gZW5kID0gbGFtYmRhICphOiBOb25lCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1EdW1teUJ1aWxkZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLCA0MikKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PUJhc2VEdW1teUJ1aWxkZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLCA0MikKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PW9iamVjdCgpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5jbG9zZSgpKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE15VHJlZUJ1aWxkZXIoRVQuVHJlZUJ1aWxkZXIpOgorICAgICAgICAgICAgZGVmIGZvb2JhcihzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCAqIDIKKworICAgICAgICB0YiA9IE15VHJlZUJ1aWxkZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRiLmZvb2JhcigxMCksIDIwKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9dGIpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKworICAgICAgICBlID0gcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2h0bWwnKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF9mYWN0b3J5KHNlbGYpOgorICAgICAgICBsc3QgPSBbXQorICAgICAgICBkZWYgbXlmYWN0b3J5KHRhZywgYXR0cmliKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGxzdAorICAgICAgICAgICAgbHN0LmFwcGVuZCh0YWcpCisgICAgICAgICAgICByZXR1cm4gRVQuRWxlbWVudCh0YWcsIGF0dHJpYikKKworICAgICAgICB0YiA9IEVULlRyZWVCdWlsZGVyKGVsZW1lbnRfZmFjdG9yeT1teWZhY3RvcnkpCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9dGIpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMikKKyAgICAgICAgcGFyc2VyLmNsb3NlKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgWyd0b3BsZXZlbCddKQorCisgICAgZGVmIHRlc3RfZG9jdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRG9jdHlwZVBhcnNlcjoKKyAgICAgICAgICAgIF9kb2N0eXBlID0gTm9uZQorCisgICAgICAgICAgICBkZWYgZG9jdHlwZShzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gKG5hbWUsIHB1YmlkLCBzeXN0ZW0pCisKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZG9jdHlwZQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9RG9jdHlwZVBhcnNlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKSwKKyAgICAgICAgICAgICgnaHRtbCcsICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicsCisgICAgICAgICAgICAgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnKSkKKworCitjbGFzcyBYaW5jbHVkZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfbXlfbG9hZGVyKHNlbGYsIGhyZWYsIHBhcnNlKToKKyAgICAgICAgIyBVc2VkIHRvIGF2b2lkIGEgdGVzdC1kZXBlbmRlbmN5IHByb2JsZW0gd2hlcmUgdGhlIGRlZmF1bHQgbG9hZGVyCisgICAgICAgICMgb2YgRWxlbWVudEluY2x1ZGUgdXNlcyB0aGUgcHlFVCBwYXJzZXIgZm9yIGNFVCB0ZXN0cy4KKyAgICAgICAgaWYgcGFyc2UgPT0gJ3htbCc6CisgICAgICAgICAgICB3aXRoIG9wZW4oaHJlZiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRVQucGFyc2UoZikuZ2V0cm9vdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHRlc3RfeGluY2x1ZGVfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCisgICAgICAgIGRvYyA9IHhpbmNsdWRlX2xvYWRlcignZGVmYXVsdC54bWwnKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvYywgc2VsZi5fbXlfbG9hZGVyKQorICAgICAgICBzID0gc2VyaWFsaXplKGRvYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnN0cmlwKCksICcnJzxkb2N1bWVudD4KKyAgPHA+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+JykucG9zaXRpb24sICgxLCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2Zvb2JhcjwnKS5wb3NpdGlvbiwgKDEsIDYpKQorCisgICAgZGVmIHRlc3RfZXJyb3JfY29kZShzZWxmKToKKyAgICAgICAgaW1wb3J0IHhtbC5wYXJzZXJzLmV4cGF0LmVycm9ycyBhcyBFUlJPUlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2ZvbycpLmNvZGUsCisgICAgICAgICAgICAgICAgRVJST1JTLmNvZGVzW0VSUk9SUy5YTUxfRVJST1JfU1lOVEFYXSkKKworCitjbGFzcyBLZXl3b3JkQXJnc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB2YXJpb3VzIGlzc3VlcyB3aXRoIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCB0byBFVC5FbGVtZW50CisgICAgIyBjb25zdHJ1Y3RvciBhbmQgbWV0aG9kcworICAgIGRlZiB0ZXN0X2lzc3VlMTQ4MTgoc2VsZik6CisgICAgICAgIHggPSBFVC5YTUwoIjxhPmZvbzwvYT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZCgnYScsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZpbmR0ZXh0KCdhJywgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kdGV4dChwYXRoPSdhJywgZGVmYXVsdD1Ob25lLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZGFsbCgnYScsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZGFsbChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHguaXRlcmZpbmQoJ2EnLCBOb25lKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh4Lml0ZXJmaW5kKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnQoJ2EnKS5hdHRyaWIsIHt9KQorICAgICAgICBlbGVtZW50cyA9IFsKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGF0dHJpYj1kaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIpLCBpZD0iZm9vIiksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgaHJlZj0iIyIsIGlkPSJmb28iKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIiksIGhyZWY9IiMiLCBpZD0iZm9vIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGUgaW4gZWxlbWVudHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnYScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXR0cmliLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpCisKKyAgICAgICAgZTIgPSBFVC5TdWJFbGVtZW50KGVsZW1lbnRzWzBdLCAnZm9vYmFyJywgYXR0cmliPXsna2V5MSc6ICd2YWx1ZTEnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMi5hdHRyaWJbJ2tleTEnXSwgJ3ZhbHVlMScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ211c3QgYmUgZGljdCwgbm90IHN0cicpOgorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsICJJJ20gbm90IGEgZGljdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtdXN0IGJlIGRpY3QsIG5vdCBzdHInKToKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBhdHRyaWI9IkknbSBub3QgYSBkaWN0IikKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhweUVULCAnb25seSBmb3IgdGhlIFB5dGhvbiB2ZXJzaW9uJykKK2NsYXNzIE5vQWNjZWxlcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhhdCB0aGUgQyBhY2NlbGVyYXRvciB3YXMgbm90IGltcG9ydGVkIGZvciBweUVUCisgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfcHlFVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweUVULkVsZW1lbnQuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHlFVC5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE4OTIsNDQgKzIzOTMsNjkgQEAKICAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gICIKICAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwKICAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gICIKLSAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyksCi0gICAgICAgICAgICAjIFhNTFBhcnNlci5kb2N0eXBlKCkgaXMgZGVwcmVjYXRlZC4KLSAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUgZG9jdHlwZS4uICIKLSAgICAgICAgICAgICAibWV0aG9kIG9uIHRoZSBUcmVlQnVpbGRlciB0YXJnZXQuIiwgRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpCiAgICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncyA9IHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKmRlcHJlY2F0aW9ucywgcXVpZXQ9cXVpZXQpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKLSAgICAgICAgc2VsZi5fbnNtYXAgPSBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcAotICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorICAgICAgICBzZWxmLl9uc21hcCA9IEVULnJlZ2lzdGVyX25hbWVzcGFjZS5fbmFtZXNwYWNlX21hcAogICAgICAgICAjIENvcHkgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG1hcHBpbmcKLSAgICAgICAgRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAgPSBzZWxmLl9uc21hcC5jb3B5KCkKKyAgICAgICAgc2VsZi5fbnNtYXBfY29weSA9IHNlbGYuX25zbWFwLmNvcHkoKQogICAgICAgICAjIENvcHkgdGhlIHBhdGggY2FjaGUgKHNob3VsZCBiZSBlbXB0eSkKLSAgICAgICAgRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZS5jb3B5KCkKKyAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IEVsZW1lbnRQYXRoLl9jYWNoZQorICAgICAgICBFbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlLmNvcHkoKQogICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MuX19lbnRlcl9fKCkKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKICAgICAgICAgIyBSZXN0b3JlIG1hcHBpbmcgYW5kIHBhdGggY2FjaGUKLSAgICAgICAgRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAgPSBzZWxmLl9uc21hcAotICAgICAgICBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgIHNlbGYuX25zbWFwLmNsZWFyKCkKKyAgICAgICAgc2VsZi5fbnNtYXAudXBkYXRlKHNlbGYuX25zbWFwX2NvcHkpCisgICAgICAgIEVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKICAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzLl9fZXhpdF9fKCphcmdzKQogCiAKLWRlZiB0ZXN0X21haW4obW9kdWxlX25hbWU9J3htbC5ldHJlZS5FbGVtZW50VHJlZScpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUKK2RlZiB0ZXN0X21haW4obW9kdWxlPU5vbmUpOgorICAgICMgV2hlbiBpbnZva2VkIHdpdGhvdXQgYSBtb2R1bGUsIHJ1bnMgdGhlIFB5dGhvbiBFVCB0ZXN0cyBieSBsb2FkaW5nIHB5RVQuCisgICAgIyBPdGhlcndpc2UsIHVzZXMgdGhlIGdpdmVuIG1vZHVsZSBhcyB0aGUgRVQuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIGdsb2JhbCBweUVUCisgICAgICAgIHB5RVQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsnX2VsZW1lbnR0cmVlJ10pCisgICAgICAgIG1vZHVsZSA9IHB5RVQKIAotICAgIHVzZV9weV9tb2R1bGUgPSAobW9kdWxlX25hbWUgPT0gJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisgICAgZ2xvYmFsIEVUCisgICAgRVQgPSBtb2R1bGUKIAotICAgICMgVGhlIHNhbWUgZG9jdGVzdHMgYXJlIHVzZWQgZm9yIGJvdGggdGhlIFB5dGhvbiBhbmQgdGhlIEMgaW1wbGVtZW50YXRpb25zCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdGVzdF9jbGFzc2VzID0gWworICAgICAgICBFbGVtZW50U2xpY2luZ1Rlc3QsCisgICAgICAgIEJhc2ljRWxlbWVudFRlc3QsCisgICAgICAgIElPVGVzdCwKKyAgICAgICAgUGFyc2VFcnJvclRlc3QsCisgICAgICAgIFhpbmNsdWRlVGVzdCwKKyAgICAgICAgRWxlbWVudFRyZWVUZXN0LAorICAgICAgICBFbGVtZW50SXRlclRlc3QsCisgICAgICAgIFRyZWVCdWlsZGVyVGVzdCwKKyAgICAgICAgXQogCi0gICAgIyBYWFggdGhlIEMgbW9kdWxlIHNob3VsZCBnaXZlIHRoZSBzYW1lIHdhcm5pbmdzIGFzIHRoZSBQeXRob24gbW9kdWxlCi0gICAgd2l0aCBDbGVhbkNvbnRleHQocXVpZXQ9bm90IHVzZV9weV9tb2R1bGUpOgotICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICAjIFRoZXNlIHRlc3RzIHdpbGwgb25seSBydW4gZm9yIHRoZSBwdXJlLVB5dGhvbiB2ZXJzaW9uIHRoYXQgZG9lc24ndCBpbXBvcnQKKyAgICAjIF9lbGVtZW50dHJlZS4gV2UgY2FuJ3QgdXNlIHNraXBVbmxlc3MgaGVyZSwgYmVjYXVzZSBweUVUIGlzIGZpbGxlZCBpbiBvbmx5CisgICAgIyBhZnRlciB0aGUgbW9kdWxlIGlzIGxvYWRlZC4KKyAgICBpZiBweUVUOgorICAgICAgICB0ZXN0X2NsYXNzZXMuZXh0ZW5kKFsKKyAgICAgICAgICAgIE5vQWNjZWxlcmF0b3JUZXN0LAorICAgICAgICAgICAgXSkKIAotICAgICMgVGhlIG1vZHVsZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkgdGhlIHRlc3RzCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorCisgICAgICAgICMgWFhYIHRoZSBDIG1vZHVsZSBzaG91bGQgZ2l2ZSB0aGUgc2FtZSB3YXJuaW5ncyBhcyB0aGUgUHl0aG9uIG1vZHVsZQorICAgICAgICB3aXRoIENsZWFuQ29udGV4dChxdWlldD0obW9kdWxlIGlzIG5vdCBweUVUKSk6CisgICAgICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHN5cy5tb2R1bGVzW19fbmFtZV9fXSwgdmVyYm9zaXR5PVRydWUpCisgICAgZmluYWxseToKKyAgICAgICAgIyBkb24ndCBpbnRlcmZlcmUgd2l0aCBzdWJzZXF1ZW50IHRlc3RzCisgICAgICAgIEVUID0gcHlFVCA9IE5vbmUKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQppbmRleCAyZmYxMThmLi5lNDRjNmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKQEAgLTEsMzYgKzEsMTEgQEAKICMgeG1sLmV0cmVlIHRlc3QgZm9yIGNFbGVtZW50VHJlZQotCitpbXBvcnQgc3lzLCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF8yRworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB1bml0dGVzdAogCi1jRVQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3htbC5ldHJlZS5jRWxlbWVudFRyZWUnKQotCi0KLSMgY0VsZW1lbnRUcmVlIHNwZWNpZmljIHRlc3RzCi0KLWRlZiBzYW5pdHkoKToKLSAgICByIiIiCi0gICAgSW1wb3J0IHNhbml0eS4KLQotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgY0VsZW1lbnRUcmVlCi0KLSAgICBJc3N1ZSAjNjY5Ny4KLQotICAgID4+PiBlID0gY0VsZW1lbnRUcmVlLkVsZW1lbnQoJ2EnKQotICAgID4+PiBnZXRhdHRyKGUsICdcdUQ4MDAnKSAgICAgICAgICAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4KLSAgICBVbmljb2RlRW5jb2RlRXJyb3I6IC4uLgotCi0gICAgPj4+IHAgPSBjRWxlbWVudFRyZWUuWE1MUGFyc2VyKCkKLSAgICA+Pj4gcC52ZXJzaW9uLnNwbGl0KClbMF0KLSAgICAnRXhwYXQnCi0gICAgPj4+IGdldGF0dHIocCwgJ1x1RDgwMCcpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAuLi4KLSAgICBBdHRyaWJ1dGVFcnJvcjogJ1hNTFBhcnNlcicgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ1x1ZDgwMCcKLSAgICAiIiIKK2NFVCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5FbGVtZW50VHJlZScsIGZyZXNoPVsnX2VsZW1lbnR0cmVlJ10pCitjRVRfYWxpYXMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJywgZnJlc2g9WydfZWxlbWVudHRyZWUnLCAneG1sLmV0cmVlJ10pCiAKIAogY2xhc3MgTWlzY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ3LDI3ICsyMiw2NCBAQAogICAgICAgICAgICAgZGF0YSA9IE5vbmUKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorY2xhc3MgVGVzdEFsaWFzV29ya2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoYXQgdGhlIGNFVCBhbGlhcyBtb2R1bGUgaXMgYWxpdmUKKyAgICBkZWYgdGVzdF9hbGlhc193b3JraW5nKHNlbGYpOgorICAgICAgICBlID0gY0VUX2FsaWFzLkVsZW1lbnQoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdmb28nKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitjbGFzcyBUZXN0QWNjZWxlcmF0b3JJbXBvcnRlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoYXQgdGhlIEMgYWNjZWxlcmF0b3Igd2FzIGltcG9ydGVkLCBhcyBleHBlY3RlZAorICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X2NFVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjRVQuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAnX2VsZW1lbnR0cmVlJykKKworICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X2NFVF9hbGlhcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjRVRfYWxpYXMuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAnX2VsZW1lbnR0cmVlJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorQHN1cHBvcnQuY3B5dGhvbl9vbmx5CitjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZWxlbWVudHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCisgICAgICAgICMgZXh0cmEKKyAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUGlpUDRQJykKKworICAgIGNoZWNrX3NpemVvZiA9IHN1cHBvcnQuY2hlY2tfc2l6ZW9mCisKKyAgICBkZWYgdGVzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBlID0gY0VULkVsZW1lbnQoJ2EnKQorICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF93aXRoX2F0dHJpYihzZWxmKToKKyAgICAgICAgZSA9IGNFVC5FbGVtZW50KCdhJywgaHJlZj0nYWJvdXQ6JykKKyAgICAgICAgc2VsZi5jaGVja19zaXplb2YoZSwgc2VsZi5lbGVtZW50c2l6ZSArIHNlbGYuZXh0cmEpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X3dpdGhfY2hpbGRyZW4oc2VsZik6CisgICAgICAgIGUgPSBjRVQuRWxlbWVudCgnYScpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgY0VULlN1YkVsZW1lbnQoZSwgJ3NwYW4nKQorICAgICAgICAjIHNob3VsZCBoYXZlIHNwYWNlIGZvciA4IGNoaWxkcmVuIG5vdworICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplICsgc2VsZi5leHRyYSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKIAogICAgICMgUnVuIHRoZSB0ZXN0cyBzcGVjaWZpYyB0byB0aGUgQyBpbXBsZW1lbnRhdGlvbgotICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF94bWxfZXRyZWVfYywgdmVyYm9zaXR5PVRydWUpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIE1pc2NUZXN0cywKKyAgICAgICAgVGVzdEFsaWFzV29ya2luZywKKyAgICAgICAgVGVzdEFjY2VsZXJhdG9ySW1wb3J0ZWQsCisgICAgICAgIFNpemVvZlRlc3QsCisgICAgICAgICkKIAotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1pc2NUZXN0cykKKyAgICAjIFJ1biB0aGUgc2FtZSB0ZXN0IHN1aXRlIGFzIHRoZSBQeXRob24gbW9kdWxlCisgICAgdGVzdF94bWxfZXRyZWUudGVzdF9tYWluKG1vZHVsZT1jRVQpCiAKLSAgICAjIEFzc2lnbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgZG9jdGVzdHMKLSAgICAjIFBhdGNoIHRoZSBfX25hbWVfXywgdG8gcHJldmVudCBjb25mdXNpb24gd2l0aCB0aGUgcHVyZSBQeXRob24gdGVzdAotICAgIHB5RVQgPSB0ZXN0X3htbF9ldHJlZS5FVAotICAgIHB5X19uYW1lX18gPSB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXwotICAgIHRlc3RfeG1sX2V0cmVlLkVUID0gY0VUCi0gICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuX19uYW1lX18gPSBfX25hbWVfXwotICAgIHRyeToKLSAgICAgICAgIyBSdW4gdGhlIHNhbWUgdGVzdCBzdWl0ZSBhcyB4bWwuZXRyZWUuRWxlbWVudFRyZWUKLSAgICAgICAgdGVzdF94bWxfZXRyZWUudGVzdF9tYWluKG1vZHVsZV9uYW1lPSd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJykKLSAgICBmaW5hbGx5OgotICAgICAgICB0ZXN0X3htbF9ldHJlZS5FVCA9IHB5RVQKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuX19uYW1lX18gPSBweV9fbmFtZV9fCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMzgxNDE5MS4uMTZmODVjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTI0LDYgKzI0LDggQEAKICAgICAgICAgICAnYXNob3J0bG9uZyc6IDIsCiAgICAgICAgICAgJ2Fub3RoZXJsaXN0JzogWycuenl4LjQxJ10sCiAgICAgICAgICAgJ2FiYXNlNjQnOiB4bWxycGNsaWIuQmluYXJ5KGIibXkgZG9nIGhhcyBmbGVhcyIpLAorICAgICAgICAgICdiNjRieXRlcyc6IGIibXkgZG9nIGhhcyBmbGVhcyIsCisgICAgICAgICAgJ2I2NGJ5dGVhcnJheSc6IGJ5dGVhcnJheShiIm15IGRvZyBoYXMgZmxlYXMiKSwKICAgICAgICAgICAnYm9vbGVhbic6IEZhbHNlLAogICAgICAgICAgICd1bmljb2RlJzogJ1x1NDAwMFx1NjAwMFx1ODAwMCcsCiAgICAgICAgICAgJ3VrZXlcdTQwMDAnOiAncmVndWxhciB2YWx1ZScsCkBAIC00NCwyNyArNDYsNTQgQEAKICAgICBkZWYgdGVzdF9kdW1wX2JhcmVfZGF0ZXRpbWUoc2VsZik6CiAgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCBhbiB1bndyYXBwZWQgZGF0ZXRpbWUuZGF0ZSBvYmplY3QgY2FuIGJlIGhhbmRsZWQKICAgICAgICAgIyBieSB0aGUgbWFyc2hhbGxpbmcgY29kZS4gIFRoaXMgY2FuJ3QgYmUgZG9uZSB2aWEgdGVzdF9kdW1wX2xvYWQoKQotICAgICAgICAjIHNpbmNlIHdpdGggdXNlX2RhdGV0aW1lIHNldCB0byAxIHRoZSB1bm1hcnNoYWxsZXIgd291bGQgY3JlYXRlCisgICAgICAgICMgc2luY2Ugd2l0aCB1c2VfYnVpbHRpbl90eXBlcyBzZXQgdG8gMSB0aGUgdW5tYXJzaGFsbGVyIHdvdWxkIGNyZWF0ZQogICAgICAgICAjIGRhdGV0aW1lIG9iamVjdHMgZm9yIHRoZSAnZGF0ZXRpbWVbMTIzXScga2V5cyBhcyB3ZWxsCiAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygoZHQsKSkKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIE5vbmUpCiAKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCB4bWxycGNsaWIuRGF0ZVRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT1GYWxzZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIHhtbHJwY2xpYi5EYXRlVGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKwogCiAgICAgZGVmIHRlc3RfZGF0ZXRpbWVfYmVmb3JlXzE5MDAoc2VsZik6CiAgICAgICAgICMgc2FtZSBhcyBiZWZvcmUgYnV0IHdpdGggYSBkYXRlIGJlZm9yZSAxOTAwCiAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgIDIsIDEwLCAxMSwgNDEsIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzAwMDEwMjEwVDExOjQxOjIzJykpCiAgICAgICAgIHMgPSB4bWxycGNsaWIuZHVtcHMoKGR0LCkpCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBOb25lKQogCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0wKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzAwMDEwMjEwVDExOjQxOjIzJykpCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgeG1scnBjbGliLkRhdGVUaW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQogCiAgICAgZGVmIHRlc3RfYnVnXzExNjQ5MTIgKHNlbGYpOgogICAgICAgICBkID0geG1scnBjbGliLkRhdGVUaW1lKCkKQEAgLTEyNSw2ICsxNTQsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbS5kdW1wX2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1scnBjbGliLk1JTklOVC0xLCBkdW1teV93cml0ZSkKIAorICAgIGRlZiB0ZXN0X2R1bXBfZG91YmxlKHNlbGYpOgorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KDIgKiogMzQpLCkpCisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoeG1scnBjbGliLk1BWElOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoeG1scnBjbGliLk1JTklOVCkpKQorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KHhtbHJwY2xpYi5NQVhJTlQgKyA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoeG1scnBjbGliLk1JTklOVCAtIDQyKSkpCisKKyAgICAgICAgZGVmIGR1bW15X3dyaXRlKHMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG0gPSB4bWxycGNsaWIuTWFyc2hhbGxlcigpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1BWElOVCwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1JTklOVCwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1BWElOVCArIDQyLCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUlOSU5UIC0gNDIsIGR1bW15X3dyaXRlKQorCiAgICAgZGVmIHRlc3RfZHVtcF9ub25lKHNlbGYpOgogICAgICAgICB2YWx1ZSA9IGFsaXN0ICsgW05vbmVdCiAgICAgICAgIGFyZzEgPSAoYWxpc3QgKyBbTm9uZV0sKQpAQCAtMTMzLDYgKzE3OCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxycGNsaWIubG9hZHMoc3RyZylbMF1bMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeG1scnBjbGliLmR1bXBzLCAoYXJnMSwpKQogCisgICAgZGVmIHRlc3RfZHVtcF9ieXRlcyhzZWxmKToKKyAgICAgICAgc2FtcGxlID0gYiJteSBkb2cgaGFzIGZsZWFzIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZSwgeG1scnBjbGliLkJpbmFyeShzYW1wbGUpKQorICAgICAgICBmb3IgdHlwZV8gaW4gYnl0ZXMsIGJ5dGVhcnJheSwgeG1scnBjbGliLkJpbmFyeToKKyAgICAgICAgICAgIHZhbHVlID0gdHlwZV8oc2FtcGxlKQorICAgICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygodmFsdWUsKSkKKworICAgICAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgc2FtcGxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgYnl0ZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgc2FtcGxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgeG1scnBjbGliLkJpbmFyeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKICAgICBkZWYgdGVzdF9nZXRfaG9zdF9pbmZvKHNlbGYpOgogICAgICAgICAjIHNlZSBidWcgIzM2MTMsIHRoaXMgcmFpc2VkIGEgVHlwZUVycm9yCiAgICAgICAgIHRyYW5zcCA9IHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0KCkKQEAgLTE0MCw5ICsyMDQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hvc3QudGxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgZFhObGNnPT0nKV0sIHt9KSkKIAotICAgIGRlZiB0ZXN0X2R1bXBfYnl0ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeG1scnBjbGliLmR1bXBzLCAoYiJteSBkb2cgaGFzIGZsZWFzIiwpKQotCiAgICAgZGVmIHRlc3Rfc3NsX3ByZXNlbmNlKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgc3NsCkBAIC05ODAsMTAgKzEwNDEsNDQgQEAKICAgICAgICAgICAgIGxlbihjb250ZW50KSkKIAogCitjbGFzcyBVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF91c2VfYnVpbHRpbl90eXBlcyhzZWxmKToKKyAgICAgICAgIyBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fIGFjY2VwdHMgdXNlX2J1aWx0aW5fdHlwZXMsIHdoaWNoCisgICAgICAgICMgbWFrZXMgYWxsIGRpc3BhdGNoIG9mIGJpbmFyeSBkYXRhIGFzIGJ5dGVzIGluc3RhbmNlcywgYW5kIGFsbAorICAgICAgICAjIGRpc3BhdGNoIG9mIGRhdGV0aW1lIGFyZ3VtZW50IGFzIGRhdGV0aW1lLmRhdGV0aW1lIGluc3RhbmNlcy4KKyAgICAgICAgc2VsZi5sb2cgPSBbXQorICAgICAgICBleHBlY3RlZF9ieXRlcyA9IGIibXkgZG9nIGhhcyBmbGVhcyIKKyAgICAgICAgZXhwZWN0ZWRfZGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDgsIDUsIDI2LCAxOCwgMjUsIDEyKQorICAgICAgICBtYXJzaGFsZWQgPSB4bWxycGNsaWIuZHVtcHMoKGV4cGVjdGVkX2J5dGVzLCBleHBlY3RlZF9kYXRlKSwgJ2Zvb2JhcicpCisgICAgICAgIGRlZiBmb29iYXIoKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5sb2cuZXh0ZW5kKGFyZ3MpCisgICAgICAgIGhhbmRsZXIgPSB4bWxycGMuc2VydmVyLlNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIoCisgICAgICAgICAgICBhbGxvd19ub25lPVRydWUsIGVuY29kaW5nPU5vbmUsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIGhhbmRsZXIucmVnaXN0ZXJfZnVuY3Rpb24oZm9vYmFyKQorICAgICAgICBoYW5kbGVyLl9tYXJzaGFsZWRfZGlzcGF0Y2gobWFyc2hhbGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmxvZyksIDIpCisgICAgICAgIG15Ynl0ZXMsIG15ZGF0ZSA9IHNlbGYubG9nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2csIFtleHBlY3RlZF9ieXRlcywgZXhwZWN0ZWRfZGF0ZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShteWRhdGUpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG15Ynl0ZXMpLCBieXRlcykKKworICAgIGRlZiB0ZXN0X2NnaWhhbmRsZXJfaGFzX3VzZV9idWlsdGluX3R5cGVzX2ZsYWcoc2VsZik6CisgICAgICAgIGhhbmRsZXIgPSB4bWxycGMuc2VydmVyLkNHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLnVzZV9idWlsdGluX3R5cGVzKQorCisgICAgZGVmIHRlc3RfeG1scnBjc2VydmVyX2hhc191c2VfYnVpbHRpbl90eXBlc19mbGFnKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSB4bWxycGMuc2VydmVyLlNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDApLAorICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIudXNlX2J1aWx0aW5fdHlwZXMpCisKKwogQHN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgeG1scnBjX3Rlc3RzID0gW1hNTFJQQ1Rlc3RDYXNlLCBIZWxwZXJUZXN0Q2FzZSwgRGF0ZVRpbWVUZXN0Q2FzZSwKICAgICAgICAgIEJpbmFyeVRlc3RDYXNlLCBGYXVsdFRlc3RDYXNlXQorICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoVXNlQnVpbHRpblR5cGVzVGVzdENhc2UpCiAgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChTaW1wbGVTZXJ2ZXJUZXN0Q2FzZSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKEtlZXBhbGl2ZVNlcnZlclRlc3RDYXNlMSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKEtlZXBhbGl2ZVNlcnZlclRlc3RDYXNlMikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQppbmRleCBkNzJmOGFjLi5kZmI1ZjlhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBlcnJubwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwpAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgICMgUGVyZm9ybSBhIG1pbmltYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSByZXN1bHQsIGp1c3QgdG8gYmUgc3VyZQogICAgICAgICAjIHRoZSByZXF1ZXN0IG1lYW5zIHdoYXQgd2UgdGhpbmsgaXQgbWVhbnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShidWlsZGVycywgY29sbGVjdGlvbnMuU2VxdWVuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShidWlsZGVycywgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoW3ggZm9yIHggaW4gYnVpbGRlcnMgaWYgIjMueCIgaW4geF0sIGJ1aWxkZXJzKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQppbmRleCA1MWQ4YjQ1Li4yZTUyYzY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CkBAIC0xLDkgKzEsMyBAQAotIyBXZSBjYW4gdGVzdCBwYXJ0IG9mIHRoZSBtb2R1bGUgd2l0aG91dCB6bGliLgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTE5LDcgKzEzLDcgQEAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kaW50LCByYW5kb20KIGZyb20gdW5pdHRlc3QgaW1wb3J0IHNraXBVbmxlc3MKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZSwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCB1bmxpbmssIHJlcXVpcmVzX3psaWIsIHJlcXVpcmVzX2J6MiwgcmVxdWlyZXNfbHptYQogCiBURVNURk4yID0gVEVTVEZOICsgIjIiCiBURVNURk5ESVIgPSBURVNURk4gKyAiZCIKQEAgLTI2OSw0NCArMjYzLDQ0IEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9pdGVybGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgZm9yIGNhc2VzIHdoZXJlIGNvbXByZXNzZWQgZGF0YSBpcyBsYXJnZXIgdGhhbiBvcmlnaW5hbC4iIiIKICAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCkBAIC0zMTksNiArMzEzLDEwMyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzEnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzInKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9sb3dfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgICIiIkNoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21wcmVzc2VkIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3JpZ2luYWwuIiIiCisgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX0JaSVAyKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgJzEyJykKKworICAgICAgICAjIEdldCBhbiBvcGVuIG9iamVjdCBmb3Igc3RyZmlsZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIsIHppcGZpbGUuWklQX0JaSVAyKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbigic3RyZmlsZSIpIGFzIG9wZW5vYmo6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMicpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBmb3IgY2FzZXMgd2hlcmUgY29tcHJlc3NlZCBkYXRhIGlzIGxhcmdlciB0aGFuIG9yaWdpbmFsLiIiIgorICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9MWk1BKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgJzEyJykKKworICAgICAgICAjIEdldCBhbiBvcGVuIG9iamVjdCBmb3Igc3RyZmlsZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIsIHppcGZpbGUuWklQX0xaTUEpIGFzIHppcGZwOgorICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKCJzdHJmaWxlIikgYXMgb3Blbm9iajoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicxJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicyJykKKwogICAgIGRlZiB0ZXN0X2Fic29sdXRlX2FyY25hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICIvYWJzb2x1dGUiKQpAQCAtMzc3LDcgKzQ2OCw3IEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZnAucmVhZChURVNURk4pLCBmLnJlYWQoKSkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3Blcl9maWxlX2NvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGZpbGVzIHdpdGhpbiBhIFppcCBhcmNoaXZlIGNhbiBoYXZlIGRpZmZlcmVudAogICAgICAgICBjb21wcmVzc2lvbiBvcHRpb25zLiIiIgpAQCAtNDQ2LDE5ICs1MzcsMzIgQEAKICAgICAgICAgIyByZW1vdmUgdGhlIHRlc3QgZmlsZSBzdWJkaXJlY3RvcmllcwogICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgJ3ppcHRlc3QyZGlyJykpCiAKLSAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbihzZWxmKToKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9zdG9yZWQoc2VsZik6CiAgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKICAgICAgICAgemlwZnAud3JpdGVzdHIoImEudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9TVE9SRUQpCi0gICAgICAgIGlmIHpsaWI6Ci0gICAgICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQotCiAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdhLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICAgICAgaWYgemxpYjoKLSAgICAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdiLnR4dCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9kZWZsYXRlZChzZWxmKToKKyAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQorICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfd3JpdGVzdHJfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKKyAgICAgICAgemlwZnAud3JpdGVzdHIoImIudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9CWklQMikKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICB6aXBmcCA9IHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIpCisgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfTFpNQSkKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0xaTUEpCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCkBAIC01MTQsNyArNjE4LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQogCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisKKworCisKKworICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdW5pY29kZV9maWxlbmFtZXMoc2VsZik6CiAgICAgICAgICMgYnVnICMxMDgwMQogICAgICAgICBmbmFtZSA9IGZpbmRmaWxlKCd6aXBfY3A0MzdfaGVhZGVyLnppcCcpCkBAIC02MjMsMTEgKzczMiwyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfYXJjbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfU1RPUkVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1ppcDY0PVRydWUpIGFzIHppcGZwOgpAQCAtNzU2LDggKzg3NSw0MCBAQAogICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDAxXHgwMFx4MDBceDAwJwogICAgICAgICAgICAgYidceDAwYWZpbGVQS1x4MDVceDA2XHgwMFx4MDBceDAwXHgwMFx4MDFceDAwJwogICAgICAgICAgICAgYidceDAxXHgwMDNceDAwXHgwMFx4MDAzXHgwMFx4MDBceDAwXHgwMFx4MDAnKSwKKyAgICAgICAgemlwZmlsZS5aSVBfQlpJUDI6ICgKKyAgICAgICAgICAgIGInUEtceDAzXHgwNFx4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0U4XHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBhZicKKyAgICAgICAgICAgIGInaWxlQlpoOTFBWSZTWVx4ZDRceGE4XHhjYScKKyAgICAgICAgICAgIGInXHg3Zlx4MDBceDAwXHgwZlx4MTFceDgwQFx4MDBceDA2RFx4OTBceDgwIFx4MDAgXHhhNScKKyAgICAgICAgICAgIGInUFx4ZDkhXHgwM1x4MDNceDEzXHgxM1x4MTNceDg5XHhhOVx4YTlceGMydTU6XHg5ZicKKyAgICAgICAgICAgIGInXHg4Ylx4YjkiXHg5YyhIalRlP1x4ODBQS1x4MDFceDAyXHgxNCcKKyAgICAgICAgICAgIGInXHgwM1x4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQUtFOCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbGVQSycKKyAgICAgICAgICAgIGInXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMFx4MDBbXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCcpLAorICAgICAgICB6aXBmaWxlLlpJUF9MWk1BOiAoCisgICAgICAgICAgICBiJ1BLXHgwM1x4MDRceDE0XHgwM1x4MDBceDAwXHgwZVx4MDBudVx4MGM9RkEnCisgICAgICAgICAgICBiJ0tFXHgxYlx4MDBceDAwXHgwMG5ceDAwXHgwMFx4MDBceDA1XHgwMFx4MDBceDAwYWYnCisgICAgICAgICAgICBiJ2lsZVx0XHgwNFx4MDVceDAwXVx4MDBceDAwXHgwMFx4MDRceDAwNFx4MTlJJworICAgICAgICAgICAgYidceGVlXHg4ZFx4ZTlceDE3XHg4OTozYFx0cSEuOFx4MDBQSycKKyAgICAgICAgICAgIGInXHgwMVx4MDJceDE0XHgwM1x4MTRceDAzXHgwMFx4MDBceDBlXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0VceDFiXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbCcKKyAgICAgICAgICAgIGInZVBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMD5ceDAwXHgwMFx4MDBceDAwXHgwMCcpLAogICAgIH0KIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgRmlsZSBoYXMgYW4gZXh0cmFjdF92ZXJzaW9uIG9mIDEyMAorICAgICAgICBkYXRhID0gKGInUEtceDAzXHgwNHhceDAwXHgwMFx4MDBceDAwXHgwMCFwXHhhMUBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwXHgwMHhQS1x4MDFceDAyeFx4MDN4XHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDAwIXBceGExQFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDgwXHgwMVx4MDBceDAwXHgwMFx4MDB4UEtceDA1XHgwNicKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMC9ceDAwXHgwMFx4MDBceDFmXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB6aXBmaWxlLlppcEZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlvLkJ5dGVzSU8oZGF0YSksICdyJykKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZmlsZW5hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4sICJ3IikgYXMgemY6CiAgICAgICAgICAgICB6Zi53cml0ZXN0cigiZm9vLnR4dCIsICJUZXN0IGZvciB1bmljb2RlIGZpbGVuYW1lIikKQEAgLTkyMiw2ICsxMDczLDE3IEBACiAgICAgICAgIGNhdWdodC4iIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2NvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICAjIGRhdGEgaXMgZGVjbGFyZWQgYXMgc2hydW5rLCBidXQgYWN0dWFsbHkgZGVmbGF0ZWQKKyAgICAgICAgZGF0YSA9IChiJ1BLXHgwM1x4MDQuXHgwMFx4MDBceDAwXHgwMVx4MDBceGU0Q1x4YTFAXHgwMFx4MDBceDAwJworICAgICAgICBiJ1x4MDBceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDB4XHgwM1x4MDBQS1x4MDEnCisgICAgICAgIGInXHgwMi5ceDAzLlx4MDBceDAwXHgwMFx4MDFceDAwXHhlNENceGExQFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHg4MFx4MDFceDAwXHgwMFx4MDBceDAweFBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMCcKKyAgICAgICAgYicvXHgwMFx4MDBceDAwIVx4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyhkYXRhKSwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZi5vcGVuLCAneCcpCisKICAgICBkZWYgdGVzdF9udWxsX2J5dGVfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYSBmaWxlbmFtZSBjb250YWluaW5nIGEgbnVsbCBieXRlIGlzIHByb3Blcmx5CiAgICAgICAgIHRlcm1pbmF0ZWQuIiIiCkBAIC0xMDIzLDEwICsxMTg1LDE4IEBACiAgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoc2VsZiwgY29tcHJlc3Npb24pOgogICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVzIHdpdGggYmFkIENSQ3MgcmFpc2UgYSBCYWRaaXBGaWxlIGV4Y2VwdGlvbiB3aGVuIHJlYWQuIiIiCiAgICAgICAgIHppcGRhdGEgPSBzZWxmLnppcHNfd2l0aF9iYWRfY3JjW2NvbXByZXNzaW9uXQpAQCAtMTA1MSwxMCArMTIyMSwxOCBAQAogICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19kZWZsYXRlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19iemlwMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIGNoZWNrX3JlYWRfcmV0dXJuX3NpemUoc2VsZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIElzc3VlICM5ODM3OiBaaXBFeHRGaWxlLnJlYWQoKSBzaG91bGRuJ3QgcmV0dXJuIG1vcmUgYnl0ZXMKICAgICAgICAgIyB0aGFuIHJlcXVlc3RlZC4KQEAgLTEwNzEsMTAgKzEyNDksMTggQEAKICAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgdGVzdF9lbXB0eV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgY3JlYXRpbmcgYSBmaWxlIGluICd3JyBvciAnYScgbW9kZSBhbmQgY2xvc2luZyB3aXRob3V0CiAgICAgICAgICMgYWRkaW5nIGFueSBmaWxlcyB0byB0aGUgYXJjaGl2ZXMgY3JlYXRlcyBhIHZhbGlkIGVtcHR5IFpJUCBmaWxlCkBAIC0xMTYxLDcgKzEzNDcsNyBAQAogICAgICAgICBzZWxmLnppcDIuc2V0cGFzc3dvcmQoYiJwZXJsIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLnppcDIucmVhZCwgInplcm8iKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfZ29vZF9wYXNzd29yZChzZWxmKToKICAgICAgICAgc2VsZi56aXAuc2V0cGFzc3dvcmQoYiJweXRob24iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuemlwLnJlYWQoInRlc3QudHh0IiksIHNlbGYucGxhaW4pCkBAIC0xMjExLDExICsxMzk3LDIxIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgemlwX29wZW5fdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCiAKQEAgLTEyNTEsMTEgKzE0NDcsMjEgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHppcF9yYW5kb21fb3Blbl90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKIApAQCAtMTI3OSwxMyArMTQ4NSwyMyBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQogCi1Ac2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisKK0ByZXF1aXJlc196bGliCiBjbGFzcyBUZXN0c1dpdGhNdWx0aXBsZU9wZW5zKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQpAQCAtMTQ3NywzMiArMTY5Myw4MiBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9pdGVybGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgogICAgICAgICAgICAgb3MucmVtb3ZlKGZuKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQppbmRleCAwZTdkNzNmLi5hOGZiN2FiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQpAQCAtMTEsMTIgKzExLDYgQEAKICAgICAgICAgJ3Rlc3QgcmVxdWlyZXMgbG9hZHMgb2YgZGlzay1zcGFjZSBieXRlcyBhbmQgYSBsb25nIHRpbWUgdG8gcnVuJwogICAgICkKIAotIyBXZSBjYW4gdGVzdCBwYXJ0IG9mIHRoZSBtb2R1bGUgd2l0aG91dCB6bGliLgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogaW1wb3J0IHppcGZpbGUsIG9zLCB1bml0dGVzdAogaW1wb3J0IHRpbWUKIGltcG9ydCBzeXMKQEAgLTI0LDcgKzE4LDcgQEAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCByZXF1aXJlc196bGliCiAKIFRFU1RGTjIgPSBURVNURk4gKyAiMiIKIApAQCAtODEsMTIgKzc1LDEyIEBACiAgICAgICAgIGZvciBmIGluIFRlbXBvcmFyeUZpbGUoKSwgVEVTVEZOMjoKICAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBpZiB6bGliOgotICAgICAgICBkZWYgdGVzdERlZmxhdGVkKHNlbGYpOgotICAgICAgICAgICAgIyBUcnkgdGhlIHRlbXAgZmlsZSBmaXJzdC4gIElmIHdlIGRvIFRFU1RGTjIgZmlyc3QsIHRoZW4gaXQgaG9ncwotICAgICAgICAgICAgIyBnaWdhYnl0ZXMgb2YgZGlzayBzcGFjZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAgZm9yIGYgaW4gVGVtcG9yYXJ5RmlsZSgpLCBURVNURk4yOgotICAgICAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0RGVmbGF0ZWQoc2VsZik6CisgICAgICAgICMgVHJ5IHRoZSB0ZW1wIGZpbGUgZmlyc3QuICBJZiB3ZSBkbyBURVNURk4yIGZpcnN0LCB0aGVuIGl0IGhvZ3MKKyAgICAgICAgIyBnaWdhYnl0ZXMgb2YgZGlzayBzcGFjZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgorICAgICAgICBmb3IgZiBpbiBUZW1wb3JhcnlGaWxlKCksIFRFU1RGTjI6CisgICAgICAgICAgICBzZWxmLnppcFRlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGZvciBmbmFtZSBpbiBURVNURk4sIFRFU1RGTjI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGRmNWZmOWQuLmY3Y2I4YjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC05LDEyICs5LDYgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0aG9va3MgaW1wb3J0IEltcG9ydEhvb2tzQmFzZVRlc3RDYXNlLCB0ZXN0X3NyYywgdGVzdF9jbwogCi0jIHNvbWUgdGVzdHMgY2FuIGJlIHJhbiBldmVuIHdpdGhvdXQgemxpYgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogZnJvbSB6aXBmaWxlIGltcG9ydCBaaXBGaWxlLCBaaXBJbmZvLCBaSVBfU1RPUkVELCBaSVBfREVGTEFURUQKIAogaW1wb3J0IHppcGltcG9ydApAQCAtMjUsNyArMTksNyBAQAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGV4dHJhY3RfdGIsIGV4dHJhY3Rfc3RhY2ssIHByaW50X3RiCiByYWlzZV9zcmMgPSAnZGVmIGRvX3JhaXNlKCk6IHJhaXNlIFR5cGVFcnJvclxuJwogCi1kZWYgbWFrZV9weWMoY28sIG10aW1lKToKK2RlZiBtYWtlX3B5YyhjbywgbXRpbWUsIHNpemUpOgogICAgIGRhdGEgPSBtYXJzaGFsLmR1bXBzKGNvKQogICAgIGlmIHR5cGUobXRpbWUpIGlzIHR5cGUoMC4wKToKICAgICAgICAgIyBNYWMgbXRpbWVzIG5lZWQgYSBiaXQgb2Ygc3BlY2lhbCBjYXNpbmcKQEAgLTMzLDE0ICsyNywxNCBAQAogICAgICAgICAgICAgbXRpbWUgPSBpbnQobXRpbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtdGltZSA9IGludCgtMHgxMDAwMDAwMDAgKyBpbnQobXRpbWUpKQotICAgIHB5YyA9IGltcC5nZXRfbWFnaWMoKSArIHN0cnVjdC5wYWNrKCI8aSIsIGludChtdGltZSkpICsgZGF0YQorICAgIHB5YyA9IGltcC5nZXRfbWFnaWMoKSArIHN0cnVjdC5wYWNrKCI8aWkiLCBpbnQobXRpbWUpLCBzaXplICYgMHhGRkZGRkZGRikgKyBkYXRhCiAgICAgcmV0dXJuIHB5YwogCiBkZWYgbW9kdWxlX3BhdGhfdG9fZG90dGVkX25hbWUocGF0aCk6CiAgICAgcmV0dXJuIHBhdGgucmVwbGFjZShvcy5zZXAsICcuJykKIAogTk9XID0gdGltZS50aW1lKCkKLXRlc3RfcHljID0gbWFrZV9weWModGVzdF9jbywgTk9XKQordGVzdF9weWMgPSBtYWtlX3B5Yyh0ZXN0X2NvLCBOT1csIGxlbih0ZXN0X3NyYykpCiAKIAogVEVTVE1PRCA9ICJ6aXB0ZXN0bW9kdWxlIgpAQCAtMjExLDYgKzIwNSwxMCBAQAogICAgICAgICAgICAgbW9kID0gemkubG9hZF9tb2R1bGUoVEVTVFBBQ0spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmdldF9maWxlbmFtZShURVNUUEFDSyksIG1vZC5fX2ZpbGVfXykKIAorICAgICAgICAgICAgZXhpc3RpbmdfcGFja19wYXRoID0gX19pbXBvcnRfXyhURVNUUEFDSykuX19wYXRoX19bMF0KKyAgICAgICAgICAgIGV4cGVjdGVkX3BhdGhfcGF0aCA9IG9zLnBhdGguam9pbihURU1QX1pJUCwgVEVTVFBBQ0spCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXN0aW5nX3BhY2tfcGF0aCwgZXhwZWN0ZWRfcGF0aF9wYXRoKQorCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UocGFja2RpciArICdfX2luaXRfXycpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyICsgVEVTVFBBQ0syKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyMiArIFRFU1RNT0QpLCBGYWxzZSkKQEAgLTI5OSw3ICsyOTcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIF9fZmlsZV9fCiAgICAgICAgIGlmIF9fbG9hZGVyX18uZ2V0X2RhdGEoInNvbWUuZGF0YSIpICE9IGIic29tZSBkYXRhIjoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJiYWQgZGF0YSIpXG4iIiIKLSAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZShzcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVykKKyAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZShzcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVywgbGVuKHNyYykpCiAgICAgICAgIGZpbGVzID0ge1RFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCBweWMpLAogICAgICAgICAgICAgICAgICAic29tZS5kYXRhIjogKE5PVywgInNvbWUgZGF0YSIpfQogICAgICAgICBzZWxmLmRvVGVzdChweWNfZXh0LCBmaWxlcywgVEVTVE1PRCkKQEAgLTMxOSw3ICszMTcsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdCgiLnB5IiwgZmlsZXMsIFRFU1RNT0QsIGNhbGw9c2VsZi5hc3NlcnRNb2R1bGVTb3VyY2UpCiAKICAgICBkZWYgdGVzdEdldENvbXBpbGVkU291cmNlKHNlbGYpOgotICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpLCBOT1cpCisgICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUodGVzdF9zcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVywgbGVuKHRlc3Rfc3JjKSkKICAgICAgICAgZmlsZXMgPSB7VEVTVE1PRCArICIucHkiOiAoTk9XLCB0ZXN0X3NyYyksCiAgICAgICAgICAgICAgICAgIFRFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCBweWMpfQogICAgICAgICBzZWxmLmRvVGVzdChweWNfZXh0LCBmaWxlcywgVEVTVE1PRCwgY2FsbD1zZWxmLmFzc2VydE1vZHVsZVNvdXJjZSkKQEAgLTM5Miw3ICszOTAsNyBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKK0BzdXBwb3J0LnJlcXVpcmVzX3psaWIKIGNsYXNzIENvbXByZXNzZWRaaXBJbXBvcnRUZXN0Q2FzZShVbmNvbXByZXNzZWRaaXBJbXBvcnRUZXN0Q2FzZSk6CiAgICAgY29tcHJlc3Npb24gPSBaSVBfREVGTEFURUQKIApAQCAtNDE3LDcgKzQxNSw3IEBACiAKICAgICBkZWYgdGVzdEVtcHR5RmlsZShzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVE1PRCkKLSAgICAgICAgb3BlbihURVNUTU9ELCAndysnKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoVEVTVE1PRCkKICAgICAgICAgc2VsZi5hc3NlcnRaaXBGYWlsdXJlKFRFU1RNT0QpCiAKICAgICBkZWYgdGVzdEZpbGVVbnJlYWRhYmxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggMDYwMTA4Zi4uZjdmMzM5OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xNjcsMjAgKzE2NywxOSBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdFJ1bm5lci52ZXJib3NlX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9FeGFtcGxlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfZGVidWcsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWQsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90ZXN0c291cmNlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdHJhaWxpbmdfc3BhY2VfaW5fdGVzdCwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RGaW5kZXIsCiAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICMgVGhlc2UgcmVtYWluaW5nIHRlc3RzIGFyZSB0aGUgb25lcyB3aGljaCBuZWVkIGFjY2VzcworICAgICAgICAgICAgICAgICMgVGhlc2UgdGVzdHMgYXJlIHRoZSBvbmVzIHdoaWNoIG5lZWQgYWNjZXNzCiAgICAgICAgICAgICAgICAgIyB0byB0aGUgZGF0YSBmaWxlcywgc28gd2UgZG9uJ3QgcnVuIHRoZW0KICAgICAgICAgICAgICAgICBmYWlsX2R1ZV90b19taXNzaW5nX2RhdGFfZmlsZXMgPSBbCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NGaWxlU3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90ZXN0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3VuaXR0ZXN0X3JlcG9ydGZsYWdzLAogICAgICAgICAgICAgICAgIF0KKwogICAgICAgICAgICAgICAgIGZvciBvYmogaW4ga25vd25fZ29vZF90ZXN0czoKICAgICAgICAgICAgICAgICAgICAgX3J1bl9vYmplY3RfZG9jdGVzdChvYmosIHRlc3RfemlwcGVkX2RvY3Rlc3QpCiAgICAgICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96bGliLnB5IGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CmluZGV4IDYwMDgxZTIuLmQ2MzdjMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKQEAgLTcsMTAgKzcsMTYgQEAKIAogemxpYiA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnemxpYicpCiAKLXRyeToKLSAgICBpbXBvcnQgbW1hcAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIG1tYXAgPSBOb25lCisKK2NsYXNzIFZlcnNpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9saWJyYXJ5X3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBhY3R1YWwgbGlicmFyeSBpbiB1c2UgbWF0Y2hlcyB0aGUKKyAgICAgICAgIyBtYWpvciB2ZXJzaW9uIHRoYXQgd2Ugd2VyZSBjb21waWxlZCBhZ2FpbnN0LiBXZSBjYW4ndCBndWFyYW50ZWUgdGhhdAorICAgICAgICAjIHRoZSBtaW5vciB2ZXJzaW9ucyB3aWxsIG1hdGNoIChldmVuIG9uIHRoZSBtYWNoaW5lIG9uIHdoaWNoIHRoZSBtb2R1bGUKKyAgICAgICAgIyB3YXMgY29tcGlsZWQpLCBhbmQgdGhlIEFQSSBpcyBzdGFibGUgYmV0d2VlbiBtaW5vciB2ZXJzaW9ucywgc28KKyAgICAgICAgIyB0ZXN0aW5nIG9ubHkgdGhlIG1ham9yIHZlcnNpb25zIGF2b2lkcyBzcHVyaW91cyBmYWlsdXJlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLlpMSUJfUlVOVElNRV9WRVJTSU9OWzBdLCB6bGliLlpMSUJfVkVSU0lPTlswXSkKIAogCiBjbGFzcyBDaGVja3N1bVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE3MywxMCArMTc5LDggQEAKICAgICBkZWYgdGVzdF9iaWdfZGVjb21wcmVzc19idWZmZXIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIHpsaWIuZGVjb21wcmVzcykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGVuZ3RoX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICBpZiBzaXplIDwgXzRHICsgMTAwOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm90IGVub3VnaCBmcmVlIG1lbW9yeSwgbmVlZCBhdCBsZWFzdCA0IEdCIikKICAgICAgICAgZGF0YSA9IGIneCcgKiBzaXplCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHpsaWIuY29tcHJlc3MsIGRhdGEsIDEpCkBAIC00MjEsNiArNDI1LDM1IEBACiAgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLmZsdXNoKCksIGIiIikgIyBSZXR1cm5zIG5vdGhpbmcKIAorICAgIGRlZiB0ZXN0X2RpY3Rpb25hcnkoc2VsZik6CisgICAgICAgIGggPSBIQU1MRVRfU0NFTkUKKyAgICAgICAgIyBCdWlsZCBhIHNpbXVsYXRlZCBkaWN0aW9uYXJ5IG91dCBvZiB0aGUgd29yZHMgaW4gSEFNTEVULgorICAgICAgICB3b3JkcyA9IGguc3BsaXQoKQorICAgICAgICByYW5kb20uc2h1ZmZsZSh3b3JkcykKKyAgICAgICAgemRpY3QgPSBiJycuam9pbih3b3JkcykKKyAgICAgICAgIyBVc2UgaXQgdG8gY29tcHJlc3MgSEFNTEVULgorICAgICAgICBjbyA9IHpsaWIuY29tcHJlc3NvYmooemRpY3Q9emRpY3QpCisgICAgICAgIGNkID0gY28uY29tcHJlc3MoaCkgKyBjby5mbHVzaCgpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgaXQgd2lsbCBkZWNvbXByZXNzIHdpdGggdGhlIGRpY3Rpb25hcnkuCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaih6ZGljdD16ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28uZGVjb21wcmVzcyhjZCkgKyBkY28uZmx1c2goKSwgaCkKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBpdCBmYWlscyB3aGVuIG5vdCBnaXZlbiB0aGUgZGljdGlvbmFyeS4KKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoemxpYi5lcnJvciwgZGNvLmRlY29tcHJlc3MsIGNkKQorCisgICAgZGVmIHRlc3RfZGljdGlvbmFyeV9zdHJlYW1pbmcoc2VsZik6CisgICAgICAgICMgVGhpcyBzaW11bGF0ZXMgdGhlIHJldXNlIG9mIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nCisgICAgICAgICMgc2V2ZXJhbCBzZXBhcmF0ZSBkYXRhIHN0cmVhbXMuCisgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6ZGljdD1IQU1MRVRfU0NFTkUpCisgICAgICAgIGRvID0gemxpYi5kZWNvbXByZXNzb2JqKHpkaWN0PUhBTUxFVF9TQ0VORSkKKyAgICAgICAgcGllY2UgPSBIQU1MRVRfU0NFTkVbMTAwMDoxNTAwXQorICAgICAgICBkMCA9IGNvLmNvbXByZXNzKHBpZWNlKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBkMSA9IGNvLmNvbXByZXNzKHBpZWNlWzEwMDpdKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBkMiA9IGNvLmNvbXByZXNzKHBpZWNlWzotMTAwXSkgKyBjby5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkby5kZWNvbXByZXNzKGQwKSwgcGllY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG8uZGVjb21wcmVzcyhkMSksIHBpZWNlWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvLmRlY29tcHJlc3MoZDIpLCBwaWVjZVs6LTEwMF0pCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfc3RyZWFtKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgJ2ZvbycsIGRlZmxhdGVkCiAgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJwpAQCAtNDM0LDYgKzQ2NywyNiBAQAogICAgICAgICB5ICs9IGRjby5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgYidmb28nKQogCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19lb2Yoc2VsZik6CisgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJyAgIyAnZm9vJworICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbOi01XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4Wy01Ol0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkY28uZW9mKQorICAgICAgICBkY28uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGNvLmVvZikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZW9mX2luY29tcGxldGVfc3RyZWFtKHNlbGYpOgorICAgICAgICB4ID0gYid4XHg5Y0tceGNiXHhjZlx4MDdceDAwXHgwMlx4ODJceDAxRScgICMgJ2ZvbycKKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4WzotNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorCiAgICAgaWYgaGFzYXR0cih6bGliLmNvbXByZXNzb2JqKCksICJjb3B5Iik6CiAgICAgICAgIGRlZiB0ZXN0X2NvbXByZXNzY29weShzZWxmKToKICAgICAgICAgICAgICMgVGVzdCBjb3B5aW5nIGEgY29tcHJlc3Npb24gb2JqZWN0CkBAIC01MTAsMTAgKzU2Myw4IEBACiAgICAgICAgIGRlY29tcHJlc3MgPSBsYW1iZGEgczogZC5kZWNvbXByZXNzKHMpICsgZC5mbHVzaCgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIGRlY29tcHJlc3MpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xlbmd0aF9vdmVyZmxvdyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgc2l6ZSA8IF80RyArIDEwMDoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vdCBlbm91Z2ggZnJlZSBtZW1vcnksIG5lZWQgYXQgbGVhc3QgNCBHQiIpCiAgICAgICAgIGRhdGEgPSBiJ3gnICogc2l6ZQogICAgICAgICBjID0gemxpYi5jb21wcmVzc29iaigxKQogICAgICAgICBkID0gemxpYi5kZWNvbXByZXNzb2JqKCkKQEAgLTYxNCw2ICs2NjUsNyBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIFZlcnNpb25UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1CaWdCdWZmZXJUZXN0Q2FzZSwKICAgICAgICAgRXhjZXB0aW9uVGVzdENhc2UsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weSBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CmluZGV4IGFkZjAzZTMuLjU0ODRlNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CisrKyBiL0xpYi90ZXN0L3RocmVhZGVkX2ltcG9ydF9oYW5nZXJzLnB5CkBAIC0zNSw4ICszNSwxMSBAQAogICAgICAgICAoIm9zLnBhdGguYWJzcGF0aCIsIG9zLnBhdGguYWJzcGF0aCwgKCcuJywpKSwKICAgICAgICAgXToKIAotICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKLSAgICB0LnN0YXJ0KCkKLSAgICB0LmpvaW4oVElNRU9VVCkKLSAgICBpZiB0LmlzX2FsaXZlKCk6Ci0gICAgICAgIGVycm9ycy5hcHBlbmQoIiVzIGFwcGVhcmVkIHRvIGhhbmciICUgbmFtZSkKKyAgICB0cnk6CisgICAgICAgIHQgPSBXb3JrZXIoZnVuYywgYXJncykKKyAgICAgICAgdC5zdGFydCgpCisgICAgICAgIHQuam9pbihUSU1FT1VUKQorICAgICAgICBpZiB0LmlzX2FsaXZlKCk6CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCIlcyBhcHBlYXJlZCB0byBoYW5nIiAlIG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgZGVsIHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dCBiL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dAppbmRleCAwNmM4M2IwLi4yYzVmYjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQKKysrIGIvTGliL3Rlc3QvdG9rZW5pemVfdGVzdHMudHh0CkBAIC0xMTQsOCArMTE0LDEyIEBACiB5ID0gYiJhYmMiICsgQiJBQkMiCiB4ID0gYnInYWJjJyArIEJyJ0FCQycgKyBiUidBQkMnICsgQlInQUJDJwogeSA9IGJyImFiYyIgKyBCciJBQkMiICsgYlIiQUJDIiArIEJSIkFCQyIKK3ggPSByYidhYmMnICsgckInQUJDJyArIFJiJ0FCQycgKyBSQidBQkMnCit5ID0gcmIiYWJjIiArIHJCIkFCQyIgKyBSYiJBQkMiICsgUkIiQUJDIgogeCA9IGJyJ1xcJyArIEJSJ1xcJworeCA9IHJiJ1xcJyArIFJCJ1xcJwogeCA9IGJyJ1wnJyArICcnCit4ID0gcmInXCcnICsgJycKIHkgPSBicicnJwogZm9vIGJhciBcXAogYmF6JycnICsgQlInJycKQEAgLTEyNCw2ICsxMjgsMTAgQEAKIGJhciBcXCBiYXoKICIiIiArIGJSJycnc3BhbQogJycnCit5ID0gckIiIiJmb28KK2JhciBcXCBiYXoKKyIiIiArIFJiJycnc3BhbQorJycnCiAKICMgSW5kZW50YXRpb24KIGlmIDE6CmRpZmYgLS1naXQgYS9MaWIvdGV4dHdyYXAucHkgYi9MaWIvdGV4dHdyYXAucHkKaW5kZXggZGZiNDAwNS4uNzAyNGQ0ZCAxMDA2NDQKLS0tIGEvTGliL3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXh0d3JhcC5weQpAQCAtNSw5ICs1LDkgQEAKICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogIyBXcml0dGVuIGJ5IEdyZWcgV2FyZCA8Z3dhcmRAcHl0aG9uLm5ldD4KIAotaW1wb3J0IHN0cmluZywgcmUKK2ltcG9ydCByZQogCi1fX2FsbF9fID0gWydUZXh0V3JhcHBlcicsICd3cmFwJywgJ2ZpbGwnLCAnZGVkZW50J10KK19fYWxsX18gPSBbJ1RleHRXcmFwcGVyJywgJ3dyYXAnLCAnZmlsbCcsICdkZWRlbnQnLCAnaW5kZW50J10KIAogIyBIYXJkY29kZSB0aGUgcmVjb2duaXplZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgdG8gdGhlIFVTLUFTQ0lJCiAjIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4gIFRoZSBtYWluIHJlYXNvbiBmb3IgZG9pbmcgdGhpcyBpcyB0aGF0IGluCkBAIC0zOSw4ICszOSwxMSBAQAogICAgICAgICBvZiB3cmFwcGVkIG91dHB1dDsgYWxzbyBjb3VudHMgdG93YXJkcyBlYWNoIGxpbmUncyB3aWR0aC4KICAgICAgIGV4cGFuZF90YWJzIChkZWZhdWx0OiB0cnVlKQogICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIHNwYWNlcyBiZWZvcmUgZnVydGhlciBwcm9jZXNzaW5nLgotICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAxIC4uIDggc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uIGluCi0gICAgICAgIGl0cyBsaW5lLiAgSWYgZmFsc2UsIGVhY2ggdGFiIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgICAgICBFYWNoIHRhYiB3aWxsIGJlY29tZSAwIC4uICd0YWJzaXplJyBzcGFjZXMsIGRlcGVuZGluZyBvbiBpdHMgcG9zaXRpb24KKyAgICAgICAgaW4gaXRzIGxpbmUuICBJZiBmYWxzZSwgZWFjaCB0YWIgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIuCisgICAgICB0YWJzaXplIChkZWZhdWx0OiA4KQorICAgICAgICBFeHBhbmQgdGFicyBpbiBpbnB1dCB0ZXh0IHRvIDAgLi4gJ3RhYnNpemUnIHNwYWNlcywgdW5sZXNzCisgICAgICAgICdleHBhbmRfdGFicycgaXMgZmFsc2UuCiAgICAgICByZXBsYWNlX3doaXRlc3BhY2UgKGRlZmF1bHQ6IHRydWUpCiAgICAgICAgIFJlcGxhY2UgYWxsIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQgdGV4dCBieSBzcGFjZXMKICAgICAgICAgYWZ0ZXIgdGFiIGV4cGFuc2lvbi4gIE5vdGUgdGhhdCBpZiBleHBhbmRfdGFicyBpcyBmYWxzZSBhbmQKQEAgLTEwMCw3ICsxMDMsOCBAQAogICAgICAgICAgICAgICAgICBmaXhfc2VudGVuY2VfZW5kaW5ncz1GYWxzZSwKICAgICAgICAgICAgICAgICAgYnJlYWtfbG9uZ193b3Jkcz1UcnVlLAogICAgICAgICAgICAgICAgICBkcm9wX3doaXRlc3BhY2U9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlKToKKyAgICAgICAgICAgICAgICAgYnJlYWtfb25faHlwaGVucz1UcnVlLAorICAgICAgICAgICAgICAgICB0YWJzaXplPTgpOgogICAgICAgICBzZWxmLndpZHRoID0gd2lkdGgKICAgICAgICAgc2VsZi5pbml0aWFsX2luZGVudCA9IGluaXRpYWxfaW5kZW50CiAgICAgICAgIHNlbGYuc3Vic2VxdWVudF9pbmRlbnQgPSBzdWJzZXF1ZW50X2luZGVudApAQCAtMTEwLDYgKzExNCw3IEBACiAgICAgICAgIHNlbGYuYnJlYWtfbG9uZ193b3JkcyA9IGJyZWFrX2xvbmdfd29yZHMKICAgICAgICAgc2VsZi5kcm9wX3doaXRlc3BhY2UgPSBkcm9wX3doaXRlc3BhY2UKICAgICAgICAgc2VsZi5icmVha19vbl9oeXBoZW5zID0gYnJlYWtfb25faHlwaGVucworICAgICAgICBzZWxmLnRhYnNpemUgPSB0YWJzaXplCiAKIAogICAgICMgLS0gUHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjMsNyArMTI4LDcgQEAKICAgICAgICAgYmVjb21lcyAiIGZvbyAgICBiYXIgIGJheiIuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLmV4cGFuZF90YWJzOgotICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicygpCisgICAgICAgICAgICB0ZXh0ID0gdGV4dC5leHBhbmR0YWJzKHNlbGYudGFic2l6ZSkKICAgICAgICAgaWYgc2VsZi5yZXBsYWNlX3doaXRlc3BhY2U6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmFuc2xhdGUoc2VsZi51bmljb2RlX3doaXRlc3BhY2VfdHJhbnMpCiAgICAgICAgIHJldHVybiB0ZXh0CkBAIC0zODEsNiArMzg2LDI1IEBACiAgICAgICAgIHRleHQgPSByZS5zdWIocicoP20pXicgKyBtYXJnaW4sICcnLCB0ZXh0KQogICAgIHJldHVybiB0ZXh0CiAKKworZGVmIGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZT1Ob25lKToKKyAgICAiIiJBZGRzICdwcmVmaXgnIHRvIHRoZSBiZWdpbm5pbmcgb2Ygc2VsZWN0ZWQgbGluZXMgaW4gJ3RleHQnLgorCisgICAgSWYgJ3ByZWRpY2F0ZScgaXMgcHJvdmlkZWQsICdwcmVmaXgnIHdpbGwgb25seSBiZSBhZGRlZCB0byB0aGUgbGluZXMKKyAgICB3aGVyZSAncHJlZGljYXRlKGxpbmUpJyBpcyBUcnVlLiBJZiAncHJlZGljYXRlJyBpcyBub3QgcHJvdmlkZWQsCisgICAgaXQgd2lsbCBkZWZhdWx0IHRvIGFkZGluZyAncHJlZml4JyB0byBhbGwgbm9uLWVtcHR5IGxpbmVzIHRoYXQgZG8gbm90CisgICAgY29uc2lzdCBzb2xlbHkgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIGlmIHByZWRpY2F0ZSBpcyBOb25lOgorICAgICAgICBkZWYgcHJlZGljYXRlKGxpbmUpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmUuc3RyaXAoKQorCisgICAgZGVmIHByZWZpeGVkX2xpbmVzKCk6CisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhUcnVlKToKKyAgICAgICAgICAgIHlpZWxkIChwcmVmaXggKyBsaW5lIGlmIHByZWRpY2F0ZShsaW5lKSBlbHNlIGxpbmUpCisgICAgcmV0dXJuICcnLmpvaW4ocHJlZml4ZWRfbGluZXMoKSkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICNwcmludCBkZWRlbnQoIlx0Zm9vXG5cdGJhciIpCiAgICAgI3ByaW50IGRlZGVudCgiICBcdGhlbGxvIHRoZXJlXG4gIFx0ICBob3cgYXJlIHlvdT8iKQpkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggNThmZmE3ZS4uNmMzNGQ0OSAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0zLDcgKzMsMTEgQEAKIGltcG9ydCBzeXMgYXMgX3N5cwogaW1wb3J0IF90aHJlYWQKIAotZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lLCBzbGVlcCBhcyBfc2xlZXAKK2Zyb20gdGltZSBpbXBvcnQgc2xlZXAgYXMgX3NsZWVwCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjIGFzIF9mb3JtYXRfZXhjCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiAKQEAgLTE5LDEyICsyMywxMiBAQAogCiBfX2FsbF9fID0gWydhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywgJ2VudW1lcmF0ZScsICdFdmVudCcsCiAgICAgICAgICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsICdCYXJyaWVyJywKLSAgICAgICAgICAgJ1RpbWVyJywgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCisgICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQogCiAjIFJlbmFtZSBzb21lIHN0dWZmIHNvICJmcm9tIHRocmVhZGluZyBpbXBvcnQgKiIgaXMgc2FmZQogX3N0YXJ0X25ld190aHJlYWQgPSBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQKIF9hbGxvY2F0ZV9sb2NrID0gX3RocmVhZC5hbGxvY2F0ZV9sb2NrCi1fZ2V0X2lkZW50ID0gX3RocmVhZC5nZXRfaWRlbnQKK2dldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CiBUaHJlYWRFcnJvciA9IF90aHJlYWQuZXJyb3IKIHRyeToKICAgICBfQ1JMb2NrID0gX3RocmVhZC5STG9jawpAQCAtMzQsNDAgKzM4LDYgQEAKIGRlbCBfdGhyZWFkCiAKIAotIyBEZWJ1ZyBzdXBwb3J0IChhZGFwdGVkIGZyb20gaWhvb2tzLnB5KS4KLQotX1ZFUkJPU0UgPSBGYWxzZQotCi1pZiBfX2RlYnVnX186Ci0KLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICAgICAgaWYgdmVyYm9zZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBfVkVSQk9TRQotICAgICAgICAgICAgc2VsZi5fdmVyYm9zZSA9IHZlcmJvc2UKLQotICAgICAgICBkZWYgX25vdGUoc2VsZiwgZm9ybWF0LCAqYXJncyk6Ci0gICAgICAgICAgICBpZiBzZWxmLl92ZXJib3NlOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCAlIGFyZ3MKLSAgICAgICAgICAgICAgICAjIElzc3VlICM0MTg4OiBjYWxsaW5nIGN1cnJlbnRfdGhyZWFkKCkgY2FuIGluY3VyIGFuIGluZmluaXRlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpb24gaWYgaXQgaGFzIHRvIGNyZWF0ZSBhIER1bW15VGhyZWFkIG9uIHRoZSBmbHkuCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBfZ2V0X2lkZW50KCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfYWN0aXZlW2lkZW50XS5uYW1lCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gIjxPUyB0aHJlYWQgJWQ+IiAlIGlkZW50Ci0gICAgICAgICAgICAgICAgZm9ybWF0ID0gIiVzOiAlc1xuIiAlIChuYW1lLCBmb3JtYXQpCi0gICAgICAgICAgICAgICAgX3N5cy5zdGRlcnIud3JpdGUoZm9ybWF0KQotCi1lbHNlOgotICAgICMgRGlzYWJsZSB0aGlzIHdoZW4gdXNpbmcgInB5dGhvbiAtTyIKLSAgICBjbGFzcyBfVmVyYm9zZShvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZGVmIF9ub3RlKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgIHBhc3MKLQogIyBTdXBwb3J0IGZvciBwcm9maWxlIGFuZCB0cmFjZSBob29rcwogCiBfcHJvZmlsZV9ob29rID0gTm9uZQpAQCAtODUsMTcgKzU1LDE0IEBACiAKIExvY2sgPSBfYWxsb2NhdGVfbG9jawogCi1kZWYgUkxvY2sodmVyYm9zZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAgIGlmIHZlcmJvc2UgaXMgTm9uZToKLSAgICAgICAgdmVyYm9zZSA9IF9WRVJCT1NFCi0gICAgaWYgKF9fZGVidWdfXyBhbmQgdmVyYm9zZSkgb3IgX0NSTG9jayBpcyBOb25lOgotICAgICAgICByZXR1cm4gX1B5UkxvY2sodmVyYm9zZSwgKmFyZ3MsICoqa3dhcmdzKQorZGVmIFJMb2NrKCphcmdzLCAqKmt3YXJncyk6CisgICAgaWYgX0NSTG9jayBpcyBOb25lOgorICAgICAgICByZXR1cm4gX1B5UkxvY2soKmFyZ3MsICoqa3dhcmdzKQogICAgIHJldHVybiBfQ1JMb2NrKCphcmdzLCAqKmt3YXJncykKIAotY2xhc3MgX1JMb2NrKF9WZXJib3NlKToKK2NsYXNzIF9STG9jazoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5fYmxvY2sgPSBfYWxsb2NhdGVfbG9jaygpCiAgICAgICAgIHNlbGYuX293bmVyID0gTm9uZQogICAgICAgICBzZWxmLl9jb3VudCA9IDAKQEAgLTExMCwzNyArNzcsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgb3duZXIsIHNlbGYuX2NvdW50KQogCiAgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSk6Ci0gICAgICAgIG1lID0gX2dldF9pZGVudCgpCisgICAgICAgIG1lID0gZ2V0X2lkZW50KCkKICAgICAgICAgaWYgc2VsZi5fb3duZXIgPT0gbWU6CiAgICAgICAgICAgICBzZWxmLl9jb3VudCA9IHNlbGYuX2NvdW50ICsgMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiByZWN1cnNpdmUgc3VjY2VzcyIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICAgcmMgPSBzZWxmLl9ibG9jay5hY3F1aXJlKGJsb2NraW5nLCB0aW1lb3V0KQogICAgICAgICBpZiByYzoKICAgICAgICAgICAgIHNlbGYuX293bmVyID0gbWUKICAgICAgICAgICAgIHNlbGYuX2NvdW50ID0gMQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmFjcXVpcmUoJXMpOiBpbml0aWFsIHN1Y2Nlc3MiLCBzZWxmLCBibG9ja2luZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogZmFpbHVyZSIsIHNlbGYsIGJsb2NraW5nKQogICAgICAgICByZXR1cm4gcmMKIAogICAgIF9fZW50ZXJfXyA9IGFjcXVpcmUKIAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9vd25lciAhPSBfZ2V0X2lkZW50KCk6CisgICAgICAgIGlmIHNlbGYuX293bmVyICE9IGdldF9pZGVudCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICAgc2VsZi5fY291bnQgPSBjb3VudCA9IHNlbGYuX2NvdW50IC0gMQogICAgICAgICBpZiBub3QgY291bnQ6CiAgICAgICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnJlbGVhc2UoKTogZmluYWwgcmVsZWFzZSIsIHNlbGYpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMucmVsZWFzZSgpOiBub24tZmluYWwgcmVsZWFzZSIsIHNlbGYpCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgogICAgICAgICBzZWxmLnJlbGVhc2UoKQpAQCAtMTUwLDEyICsxMDUsMTAgQEAKICAgICBkZWYgX2FjcXVpcmVfcmVzdG9yZShzZWxmLCBzdGF0ZSk6CiAgICAgICAgIHNlbGYuX2Jsb2NrLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl9jb3VudCwgc2VsZi5fb3duZXIgPSBzdGF0ZQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYWNxdWlyZV9yZXN0b3JlKCkiLCBzZWxmKQogCiAgICAgZGVmIF9yZWxlYXNlX3NhdmUoc2VsZik6Ci0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9yZWxlYXNlX3NhdmUoKSIsIHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2NvdW50ID09IDA6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKQogICAgICAgICBjb3VudCA9IHNlbGYuX2NvdW50CiAgICAgICAgIHNlbGYuX2NvdW50ID0gMAogICAgICAgICBvd25lciA9IHNlbGYuX293bmVyCkBAIC0xNjQsMTggKzExNywxNCBAQAogICAgICAgICByZXR1cm4gKGNvdW50LCBvd25lcikKIAogICAgIGRlZiBfaXNfb3duZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vd25lciA9PSBfZ2V0X2lkZW50KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX293bmVyID09IGdldF9pZGVudCgpCiAKIF9QeVJMb2NrID0gX1JMb2NrCiAKIAotZGVmIENvbmRpdGlvbigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfQ29uZGl0aW9uKCphcmdzLCAqKmt3YXJncykKK2NsYXNzIENvbmRpdGlvbjoKIAotY2xhc3MgX0NvbmRpdGlvbihfVmVyYm9zZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jaz1Ob25lLCB2ZXJib3NlPU5vbmUpOgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NrPU5vbmUpOgogICAgICAgICBpZiBsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICBsb2NrID0gUkxvY2soKQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jawpAQCAtMjM0LDIzICsxODMsMTYgQEAKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB3YWl0ZXIuYWNxdWlyZSgpCiAgICAgICAgICAgICAgICAgZ290aXQgPSBUcnVlCi0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCk6IGdvdCBpdCIsIHNlbGYpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPiAwOgogICAgICAgICAgICAgICAgICAgICBnb3RpdCA9IHdhaXRlci5hY3F1aXJlKFRydWUsIHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShGYWxzZSkKICAgICAgICAgICAgICAgICBpZiBub3QgZ290aXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiB0aW1lZCBvdXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWl0ZXJzLnJlbW92ZSh3YWl0ZXIpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXQoJXMpOiBnb3QgaXQiLCBzZWxmLCB0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuIGdvdGl0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9hY3F1aXJlX3Jlc3RvcmUoc2F2ZWRfc3RhdGUpCkBAIC0yNjYsMTkgKzIwOCw5IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd2FpdHRpbWUgPSBlbmR0aW1lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXRfZm9yKCVyLCAlcik6IFRpbWVkIG91dC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0X2ZvciglciwgJXIpOiBXYWl0aW5nIHdpdGggdGltZW91dD0lcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0LCB3YWl0dGltZSkKICAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKICAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdF9mb3IoJXIsICVyKTogU3VjY2Vzcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgcHJlZGljYXRlLCB0aW1lb3V0KQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgbm90aWZ5KHNlbGYsIG49MSk6CkBAIC0yODcsMTEgKzIxOSw3IEBACiAgICAgICAgIF9fd2FpdGVycyA9IHNlbGYuX3dhaXRlcnMKICAgICAgICAgd2FpdGVycyA9IF9fd2FpdGVyc1s6bl0KICAgICAgICAgaWYgbm90IHdhaXRlcnM6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMubm90aWZ5KCk6IG5vIHdhaXRlcnMiLCBzZWxmKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX25vdGUoIiVzLm5vdGlmeSgpOiBub3RpZnlpbmcgJWQgd2FpdGVyJXMiLCBzZWxmLCBuLAotICAgICAgICAgICAgICAgICAgIG4hPTEgYW5kICJzIiBvciAiIikKICAgICAgICAgZm9yIHdhaXRlciBpbiB3YWl0ZXJzOgogICAgICAgICAgICAgd2FpdGVyLnJlbGVhc2UoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMzA1LDE3ICsyMzMsMTMgQEAKICAgICBub3RpZnlBbGwgPSBub3RpZnlfYWxsCiAKIAotZGVmIFNlbWFwaG9yZSgqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX1NlbWFwaG9yZShfVmVyYm9zZSk6CitjbGFzcyBTZW1hcGhvcmU6CiAKICAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIHNlbWFwaG9yZSBjbGFzcywgYnV0IG5vdCBxdWl0ZSB0aGUgc2FtZSAobm8gbWF4aW11bSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xLCB2ZXJib3NlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0xKToKICAgICAgICAgaWYgdmFsdWUgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VtYXBob3JlIGluaXRpYWwgdmFsdWUgbXVzdCBiZSA+PSAwIikKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsdWUKIApAQCAtMzI4LDkgKzI1Miw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3ZhbHVlID09IDA6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogYmxvY2tlZCB3YWl0aW5nLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBibG9ja2luZywgc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CkBAIC0zNDEsOSArMjYyLDYgQEAKICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCh0aW1lb3V0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSAtIDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLl92YWx1ZSkKICAgICAgICAgICAgIHJjID0gVHJ1ZQogICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogICAgICAgICByZXR1cm4gcmMKQEAgLTM1Myw5ICsyNzEsNiBAQAogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQogICAgICAgICBzZWxmLl92YWx1ZSA9IHNlbGYuX3ZhbHVlICsgMQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5yZWxlYXNlOiBzdWNjZXNzLCB2YWx1ZT0lcyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHNlbGYuX3ZhbHVlKQogICAgICAgICBzZWxmLl9jb25kLm5vdGlmeSgpCiAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKQEAgLTM2MywzMCArMjc4LDIzIEBACiAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKIAotZGVmIEJvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX0JvdW5kZWRTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfQm91bmRlZFNlbWFwaG9yZShfU2VtYXBob3JlKToKK2NsYXNzIEJvdW5kZWRTZW1hcGhvcmUoU2VtYXBob3JlKToKICAgICAiIiJTZW1hcGhvcmUgdGhhdCBjaGVja3MgdGhhdCAjIHJlbGVhc2VzIGlzIDw9ICMgYWNxdWlyZXMiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1NlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CisgICAgICAgIFNlbWFwaG9yZS5fX2luaXRfXyhzZWxmLCB2YWx1ZSkKICAgICAgICAgc2VsZi5faW5pdGlhbF92YWx1ZSA9IHZhbHVlCiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fdmFsdWUgPj0gc2VsZi5faW5pdGlhbF92YWx1ZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbWFwaG9yZSByZWxlYXNlZCB0b28gbWFueSB0aW1lcyIpCi0gICAgICAgIHJldHVybiBfU2VtYXBob3JlLnJlbGVhc2Uoc2VsZikKKyAgICAgICAgcmV0dXJuIFNlbWFwaG9yZS5yZWxlYXNlKHNlbGYpCiAKIAotZGVmIEV2ZW50KCphcmdzLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIF9FdmVudCgqYXJncywgKiprd2FyZ3MpCi0KLWNsYXNzIF9FdmVudChfVmVyYm9zZSk6CitjbGFzcyBFdmVudDoKIAogICAgICMgQWZ0ZXIgVGltIFBldGVycycgZXZlbnQgY2xhc3MgKHdpdGhvdXQgaXNfcG9zdGVkKCkpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl9mbGFnID0gRmFsc2UKIApAQCAtNDM2LDEzICszNDQsMTMgQEAKICMgc2luY2UgdGhlIHByZXZpb3VzIGN5Y2xlLiAgSW4gYWRkaXRpb24sIGEgJ3Jlc2V0dGluZycgc3RhdGUgZXhpc3RzIHdoaWNoIGlzCiAjIHNpbWlsYXIgdG8gJ2RyYWluaW5nJyBleGNlcHQgdGhhdCB0aHJlYWRzIGxlYXZlIHdpdGggYSBCcm9rZW5CYXJyaWVyRXJyb3IsCiAjIGFuZCBhICdicm9rZW4nIHN0YXRlIGluIHdoaWNoIGFsbCB0aHJlYWRzIGdldCB0aGUgZXhjZXB0aW9uLgotY2xhc3MgQmFycmllcihfVmVyYm9zZSk6CitjbGFzcyBCYXJyaWVyOgogICAgICIiIgogICAgIEJhcnJpZXIuICBVc2VmdWwgZm9yIHN5bmNocm9uaXppbmcgYSBmaXhlZCBudW1iZXIgb2YgdGhyZWFkcwogICAgIGF0IGtub3duIHN5bmNocm9uaXphdGlvbiBwb2ludHMuICBUaHJlYWRzIGJsb2NrIG9uICd3YWl0KCknIGFuZCBhcmUKICAgICBzaW11bHRhbmVvdXNseSBvbmNlIHRoZXkgaGF2ZSBhbGwgbWFkZSB0aGF0IGNhbGwuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRpZXMsIGFjdGlvbj1Ob25lLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgYmFycmllciwgaW5pdGlhbGlzZWQgdG8gJ3BhcnRpZXMnIHRocmVhZHMuCiAgICAgICAgICdhY3Rpb24nIGlzIGEgY2FsbGFibGUgd2hpY2gsIHdoZW4gc3VwcGxpZWQsIHdpbGwgYmUgY2FsbGVkCkBAIC00NTEsNyArMzU5LDYgQEAKICAgICAgICAgSWYgYSAndGltZW91dCcgaXMgcHJvdmlkZWQsIGl0IGlzIHVzZXMgYXMgdGhlIGRlZmF1bHQgZm9yCiAgICAgICAgIGFsbCBzdWJzZXF1ZW50ICd3YWl0KCknIGNhbGxzLgogICAgICAgICAiIiIKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKICAgICAgICAgc2VsZi5fY29uZCA9IENvbmRpdGlvbihMb2NrKCkpCiAgICAgICAgIHNlbGYuX2FjdGlvbiA9IGFjdGlvbgogICAgICAgICBzZWxmLl90aW1lb3V0ID0gdGltZW91dApAQCAtNjEyLDcgKzUxOSw3IEBACiAKICMgTWFpbiBjbGFzcyBmb3IgdGhyZWFkcwogCi1jbGFzcyBUaHJlYWQoX1ZlcmJvc2UpOgorY2xhc3MgVGhyZWFkOgogCiAgICAgX19pbml0aWFsaXplZCA9IEZhbHNlCiAgICAgIyBOZWVkIHRvIHN0b3JlIGEgcmVmZXJlbmNlIHRvIHN5cy5leGNfaW5mbyBmb3IgcHJpbnRpbmcKQEAgLTYyNSwxNiArNTMyLDE4IEBACiAgICAgI1hYWCBfX2V4Y19jbGVhciA9IF9zeXMuZXhjX2NsZWFyCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYXJncz0oKSwga3dhcmdzPU5vbmUsIHZlcmJvc2U9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCAqLCBkYWVtb249Tm9uZSk6CiAgICAgICAgIGFzc2VydCBncm91cCBpcyBOb25lLCAiZ3JvdXAgYXJndW1lbnQgbXVzdCBiZSBOb25lIGZvciBub3ciCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIGlmIGt3YXJncyBpcyBOb25lOgogICAgICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgc2VsZi5fdGFyZ2V0ID0gdGFyZ2V0CiAgICAgICAgIHNlbGYuX25hbWUgPSBzdHIobmFtZSBvciBfbmV3bmFtZSgpKQogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKLSAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBzZWxmLl9zZXRfZGFlbW9uKCkKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gY3VycmVudF90aHJlYWQoKS5kYWVtb24KICAgICAgICAgc2VsZi5faWRlbnQgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBFdmVudCgpCiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQpAQCAtNjUyLDEwICs1NjEsNiBAQAogICAgICAgICAgICAgc2VsZi5fYmxvY2suX19pbml0X18oKQogICAgICAgICBzZWxmLl9zdGFydGVkLl9yZXNldF9pbnRlcm5hbF9sb2NrcygpCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgICMgT3ZlcnJpZGRlbiBpbiBfTWFpblRocmVhZCBhbmQgX0R1bW15VGhyZWFkCi0gICAgICAgIHJldHVybiBjdXJyZW50X3RocmVhZCgpLmRhZW1vbgotCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5faW5pdGlhbGl6ZWQsICJUaHJlYWQuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCIKICAgICAgICAgc3RhdHVzID0gImluaXRpYWwiCkBAIC02NzUsOCArNTgwLDYgQEAKIAogICAgICAgICBpZiBzZWxmLl9zdGFydGVkLmlzX3NldCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0aHJlYWRzIGNhbiBvbmx5IGJlIHN0YXJ0ZWQgb25jZSIpCi0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnN0YXJ0KCk6IHN0YXJ0aW5nIHRocmVhZCIsIHNlbGYpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2xpbWJvW3NlbGZdID0gc2VsZgogICAgICAgICB0cnk6CkBAIC03MTcsNyArNjIwLDcgQEAKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgX3NldF9pZGVudChzZWxmKToKLSAgICAgICAgc2VsZi5faWRlbnQgPSBfZ2V0X2lkZW50KCkKKyAgICAgICAgc2VsZi5faWRlbnQgPSBnZXRfaWRlbnQoKQogCiAgICAgZGVmIF9ib290c3RyYXBfaW5uZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTcyNiwyNCArNjI5LDE3IEBACiAgICAgICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgICAgICBfYWN0aXZlW3NlbGYuX2lkZW50XSA9IHNlbGYKICAgICAgICAgICAgICAgICBkZWwgX2xpbWJvW3NlbGZdCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiB0aHJlYWQgc3RhcnRlZCIsIHNlbGYpCiAKICAgICAgICAgICAgIGlmIF90cmFjZV9ob29rOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogcmVnaXN0ZXJpbmcgdHJhY2UgaG9vayIsIHNlbGYpCiAgICAgICAgICAgICAgICAgX3N5cy5zZXR0cmFjZShfdHJhY2VfaG9vaykKICAgICAgICAgICAgIGlmIF9wcm9maWxlX2hvb2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiByZWdpc3RlcmluZyBwcm9maWxlIGhvb2siLCBzZWxmKQogICAgICAgICAgICAgICAgIF9zeXMuc2V0cHJvZmlsZShfcHJvZmlsZV9ob29rKQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5ydW4oKQogICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHJhaXNlZCBTeXN0ZW1FeGl0Iiwgc2VsZikKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHVuaGFuZGxlZCBleGNlcHRpb24iLCBzZWxmKQogICAgICAgICAgICAgICAgICMgSWYgc3lzLnN0ZGVyciBpcyBubyBtb3JlIChtb3N0IGxpa2VseSBmcm9tIGludGVycHJldGVyCiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93bikgdXNlIHNlbGYuX3N0ZGVyci4gIE90aGVyd2lzZSBzdGlsbCB1c2Ugc3lzIChhcyBpbgogICAgICAgICAgICAgICAgICMgX3N5cykgaW4gY2FzZSBzeXMuc3RkZXJyIHdhcyByZWRlZmluZWQgc2luY2UgdGhlIGNyZWF0aW9uIG9mCkBAIC03NzQsOSArNjcwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBob2c7IGRlbGV0aW5nIGV2ZXJ5dGhpbmcgZWxzZSBpcyBqdXN0IGZvciB0aG9yb3VnaG5lc3MKICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IG5vcm1hbCByZXR1cm4iLCBzZWxmKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAjIFByZXZlbnQgYSByYWNlIGluCiAgICAgICAgICAgICAgICAgIyB0ZXN0X3RocmVhZGluZy50ZXN0X25vX3JlZmN5Y2xlX3Rocm91Z2hfdGFyZ2V0IHdoZW4KQEAgLTc5MCw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBjYWxsIHNlbGYuX2RlbGV0ZSgpIGJlY2F1c2UgaXQgYWxzbwogICAgICAgICAgICAgICAgICAgICAjIGdyYWJzIF9hY3RpdmVfbGltYm9fbG9jay4KLSAgICAgICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIApAQCAtODI2LDcgKzcxOSw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6Ci0gICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbX2dldF9pZGVudCgpXQorICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgICAgICAgICAgICAgICMgVGhlcmUgbXVzdCBub3QgYmUgYW55IHB5dGhvbiBjb2RlIGJldHdlZW4gdGhlIHByZXZpb3VzIGxpbmUKICAgICAgICAgICAgICAgICAjIGFuZCBhZnRlciB0aGUgbG9jayBpcyByZWxlYXNlZC4gIE90aGVyd2lzZSBhIHRyYWNpbmcgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAjIGNvdWxkIHRyeSB0byBhY3F1aXJlIHRoZSBsb2NrIGFnYWluIGluIHRoZSBzYW1lIHRocmVhZCwgKGluCkBAIC04NDMsMjkgKzczNiwxOCBAQAogICAgICAgICBpZiBzZWxmIGlzIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNhbm5vdCBqb2luIGN1cnJlbnQgdGhyZWFkIikKIAotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc3RvcHBlZDoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHdhaXRpbmcgdW50aWwgdGhyZWFkIHN0b3BzIiwgc2VsZikKLQogICAgICAgICBzZWxmLl9ibG9jay5hY3F1aXJlKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wcGVkOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9ibG9jay53YWl0KCkKLSAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmpvaW4oKTogdGhyZWFkIHN0b3BwZWQiLCBzZWxmKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF90aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BwZWQ6CiAgICAgICAgICAgICAgICAgICAgIGRlbGF5ID0gZGVhZGxpbmUgLSBfdGltZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRlbGF5IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB0aW1lZCBvdXQiLCBzZWxmKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmxvY2sud2FpdChkZWxheSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkIiwgc2VsZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLnJlbGVhc2UoKQogCkBAIC05MTcsMTAgKzc5OSw3IEBACiAKICMgVGhlIHRpbWVyIGNsYXNzIHdhcyBjb250cmlidXRlZCBieSBJdGFtYXIgU2h0dWxsLVRyYXVyaW5nCiAKLWRlZiBUaW1lcigqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfVGltZXIoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfVGltZXIoVGhyZWFkKToKK2NsYXNzIFRpbWVyKFRocmVhZCk6CiAgICAgIiIiQ2FsbCBhIGZ1bmN0aW9uIGFmdGVyIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzOgogCiAgICAgdCA9IFRpbWVyKDMwLjAsIGYsIGFyZ3M9W10sIGt3YXJncz17fSkKQEAgLTk1MiwyNiArODMxLDE4IEBACiBjbGFzcyBfTWFpblRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iTWFpblRocmVhZCIpCisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPSJNYWluVGhyZWFkIiwgZGFlbW9uPUZhbHNlKQogICAgICAgICBzZWxmLl9zdGFydGVkLnNldCgpCiAgICAgICAgIHNlbGYuX3NldF9pZGVudCgpCiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9leGl0ZnVuYyhzZWxmKToKICAgICAgICAgc2VsZi5fc3RvcCgpCiAgICAgICAgIHQgPSBfcGlja1NvbWVOb25EYWVtb25UaHJlYWQoKQotICAgICAgICBpZiB0OgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzOiB3YWl0aW5nIGZvciBvdGhlciB0aHJlYWRzIiwgc2VsZikKICAgICAgICAgd2hpbGUgdDoKICAgICAgICAgICAgIHQuam9pbigpCiAgICAgICAgICAgICB0ID0gX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCkKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXM6IGV4aXRpbmciLCBzZWxmKQogICAgICAgICBzZWxmLl9kZWxldGUoKQogCiBkZWYgX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCk6CkBAIC05OTIsNyArODYzLDcgQEAKIGNsYXNzIF9EdW1teVRocmVhZChUaHJlYWQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT1fbmV3bmFtZSgiRHVtbXktJWQiKSkKKyAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9X25ld25hbWUoIkR1bW15LSVkIiksIGRhZW1vbj1UcnVlKQogCiAgICAgICAgICMgVGhyZWFkLl9ibG9jayBjb25zdW1lcyBhbiBPUy1sZXZlbCBsb2NraW5nIHByaW1pdGl2ZSwgd2hpY2gKICAgICAgICAgIyBjYW4gbmV2ZXIgYmUgdXNlZCBieSBhIF9EdW1teVRocmVhZC4gIFNpbmNlIGEgX0R1bW15VGhyZWFkCkBAIC0xMDA0LDkgKzg3NSw2IEBACiAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgogICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAKLSAgICBkZWYgX3NldF9kYWVtb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KICAgICBkZWYgX3N0b3Aoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMTAxOCw5ICs4ODYsOCBAQAogCiBkZWYgY3VycmVudF90aHJlYWQoKToKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgcmV0dXJuIF9hY3RpdmVbZ2V0X2lkZW50KCldCiAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAjI3ByaW50ICJjdXJyZW50X3RocmVhZCgpOiBubyBjdXJyZW50IHRocmVhZCBmb3IiLCBfZ2V0X2lkZW50KCkKICAgICAgICAgcmV0dXJuIF9EdW1teVRocmVhZCgpCiAKIGN1cnJlbnRUaHJlYWQgPSBjdXJyZW50X3RocmVhZApAQCAtMTA3Nyw3ICs5NDQsNyBAQAogICAgICAgICAgICAgaWYgdGhyZWFkIGlzIGN1cnJlbnQ6CiAgICAgICAgICAgICAgICAgIyBUaGVyZSBpcyBvbmx5IG9uZSBhY3RpdmUgdGhyZWFkLiBXZSByZXNldCB0aGUgaWRlbnQgdG8KICAgICAgICAgICAgICAgICAjIGl0cyBuZXcgdmFsdWUgc2luY2UgaXQgY2FuIGhhdmUgY2hhbmdlZC4KLSAgICAgICAgICAgICAgICBpZGVudCA9IF9nZXRfaWRlbnQoKQorICAgICAgICAgICAgICAgIGlkZW50ID0gZ2V0X2lkZW50KCkKICAgICAgICAgICAgICAgICB0aHJlYWQuX2lkZW50ID0gaWRlbnQKICAgICAgICAgICAgICAgICBuZXdfYWN0aXZlW2lkZW50XSA9IHRocmVhZAogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5CmluZGV4IDFhZTU5ZTAuLjRmN2QyOGYgMTAwNjQ0Ci0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtOSwxNCArOSwxNSBAQAogTGlicmFyeSB1c2FnZTogc2VlIHRoZSBUaW1lciBjbGFzcy4KIAogQ29tbWFuZCBsaW5lIHVzYWdlOgotICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstaF0gWy0tXSBbc3RhdGVtZW50XQorICAgIHB5dGhvbiB0aW1laXQucHkgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstcF0gWy1oXSBbLS1dIFtzdGF0ZW1lbnRdCiAKIE9wdGlvbnM6CiAgIC1uLy0tbnVtYmVyIE46IGhvdyBtYW55IHRpbWVzIHRvIGV4ZWN1dGUgJ3N0YXRlbWVudCcgKGRlZmF1bHQ6IHNlZSBiZWxvdykKICAgLXIvLS1yZXBlYXQgTjogaG93IG1hbnkgdGltZXMgdG8gcmVwZWF0IHRoZSB0aW1lciAoZGVmYXVsdCAzKQogICAtcy8tLXNldHVwIFM6IHN0YXRlbWVudCB0byBiZSBleGVjdXRlZCBvbmNlIGluaXRpYWxseSAoZGVmYXVsdCAncGFzcycpCi0gIC10Ly0tdGltZTogdXNlIHRpbWUudGltZSgpIChkZWZhdWx0IG9uIFVuaXgpCi0gIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlZmF1bHQgb24gV2luZG93cykKKyAgLXAvLS1wcm9jZXNzOiB1c2UgdGltZS5wcm9jZXNzX3RpbWUoKSAoZGVmYXVsdCBpcyB0aW1lLnBlcmZfY291bnRlcigpKQorICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVwcmVjYXRlZCkKKyAgLWMvLS1jbG9jazogdXNlIHRpbWUuY2xvY2soKSAoZGVwcmVjYXRlZCkKICAgLXYvLS12ZXJib3NlOiBwcmludCByYXcgdGltaW5nIHJlc3VsdHM7IHJlcGVhdCBmb3IgbW9yZSBkaWdpdHMgcHJlY2lzaW9uCiAgIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgIC0tOiBzZXBhcmF0ZSBvcHRpb25zIGZyb20gc3RhdGVtZW50LCB1c2Ugd2hlbiBzdGF0ZW1lbnQgc3RhcnRzIHdpdGggLQpAQCAtNjYsMjMgKzY3LDE3IEBACiBkdW1teV9zcmNfbmFtZSA9ICI8dGltZWl0LXNyYz4iCiBkZWZhdWx0X251bWJlciA9IDEwMDAwMDAKIGRlZmF1bHRfcmVwZWF0ID0gMwotCi1pZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAjIE9uIFdpbmRvd3MsIHRoZSBiZXN0IHRpbWVyIGlzIHRpbWUuY2xvY2soKQotICAgIGRlZmF1bHRfdGltZXIgPSB0aW1lLmNsb2NrCi1lbHNlOgotICAgICMgT24gbW9zdCBvdGhlciBwbGF0Zm9ybXMgdGhlIGJlc3QgdGltZXIgaXMgdGltZS50aW1lKCkKLSAgICBkZWZhdWx0X3RpbWVyID0gdGltZS50aW1lCitkZWZhdWx0X3RpbWVyID0gdGltZS5wZXJmX2NvdW50ZXIKIAogIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKICMgaW4gVGltZXIuX19pbml0X18oKSBkZXBlbmQgb24gc2V0dXAgYmVpbmcgaW5kZW50ZWQgNCBzcGFjZXMgYW5kIHN0bXQKICMgYmVpbmcgaW5kZW50ZWQgOCBzcGFjZXMuCiB0ZW1wbGF0ZSA9ICIiIgogZGVmIGlubmVyKF9pdCwgX3RpbWVyKToKLSAgICAlKHNldHVwKXMKKyAgICB7c2V0dXB9CiAgICAgX3QwID0gX3RpbWVyKCkKICAgICBmb3IgX2kgaW4gX2l0OgotICAgICAgICAlKHN0bXQpcworICAgICAgICB7c3RtdH0KICAgICBfdDEgPSBfdGltZXIoKQogICAgIHJldHVybiBfdDEgLSBfdDAKICIiIgpAQCAtMTI2LDkgKzEyMSw5IEBACiAgICAgICAgICAgICBzdG10ID0gcmVpbmRlbnQoc3RtdCwgOCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CiAgICAgICAgICAgICAgICAgc2V0dXAgPSByZWluZGVudChzZXR1cCwgNCkKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZSAlIHsnc3RtdCc6IHN0bXQsICdzZXR1cCc6IHNldHVwfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPXNldHVwKQogICAgICAgICAgICAgZWxpZiBjYWxsYWJsZShzZXR1cCk6Ci0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUgJSB7J3N0bXQnOiBzdG10LCAnc2V0dXAnOiAnX3NldHVwKCknfQorICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlLmZvcm1hdChzdG10PXN0bXQsIHNldHVwPSdfc2V0dXAoKScpCiAgICAgICAgICAgICAgICAgbnNbJ19zZXR1cCddID0gc2V0dXAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2V0dXAgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQpAQCAtMjU1LDkgKzI1MCwxMCBAQAogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCiAgICAgaW1wb3J0IGdldG9wdAogICAgIHRyeToKLSAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjdmgiLAorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjpzOnI6dGNwdmgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIm51bWJlcj0iLCAic2V0dXA9IiwgInJlcGVhdD0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAidmVyYm9zZSIsICJoZWxwIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSIsICJjbG9jayIsICJwcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICAgcHJpbnQoZXJyKQogICAgICAgICBwcmludCgidXNlIC1oLy0taGVscCBmb3IgY29tbWFuZCBsaW5lIGhlbHAiKQpAQCAtMjgyLDYgKzI3OCw4IEBACiAgICAgICAgICAgICB0aW1lciA9IHRpbWUudGltZQogICAgICAgICBpZiBvIGluICgiLWMiLCAiLS1jbG9jayIpOgogICAgICAgICAgICAgdGltZXIgPSB0aW1lLmNsb2NrCisgICAgICAgIGlmIG8gaW4gKCItcCIsICItLXByb2Nlc3MiKToKKyAgICAgICAgICAgIHRpbWVyID0gdGltZS5wcm9jZXNzX3RpbWUKICAgICAgICAgaWYgbyBpbiAoIi12IiwgIi0tdmVyYm9zZSIpOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gMQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCBkZTg1YmY5Li44MDYzZGQ2IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzAsMTYgKzMwLDE4IEBACiB0ay5tYWlubG9vcCgpCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cwogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgIyBBdHRlbXB0IHRvIGNvbmZpZ3VyZSBUY2wvVGsgd2l0aG91dCByZXF1aXJpbmcgUEFUSAogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZpeAorCitpbXBvcnQgd2FybmluZ3MKKwogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiBUY2xFcnJvciA9IF90a2ludGVyLlRjbEVycm9yCiBmcm9tIHRraW50ZXIuY29uc3RhbnRzIGltcG9ydCAqCiAKKwogd2FudG9iamVjdHMgPSAxCiAKIFRrVmVyc2lvbiA9IGZsb2F0KF90a2ludGVyLlRLX1ZFUlNJT04pCkBAIC0xNTcsNiArMTU5LDcgQEAKICAgICBTdWJjbGFzc2VzIFN0cmluZ1ZhciwgSW50VmFyLCBEb3VibGVWYXIsIEJvb2xlYW5WYXIgYXJlIHNwZWNpYWxpemF0aW9ucwogICAgIHRoYXQgY29uc3RyYWluIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGdldCgpLiIiIgogICAgIF9kZWZhdWx0ID0gIiIKKyAgICBfdGsgPSBOb25lCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCB2YWx1ZT1Ob25lLCBuYW1lPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSB2YXJpYWJsZQogCkBAIC0xNjcsNiArMTcwLDExIEBACiAgICAgICAgIElmIE5BTUUgbWF0Y2hlcyBhbiBleGlzdGluZyB2YXJpYWJsZSBhbmQgVkFMVUUgaXMgb21pdHRlZAogICAgICAgICB0aGVuIHRoZSBleGlzdGluZyB2YWx1ZSBpcyByZXRhaW5lZC4KICAgICAgICAgIiIiCisgICAgICAgICMgY2hlY2sgZm9yIHR5cGUgb2YgTkFNRSBwYXJhbWV0ZXIgdG8gb3ZlcnJpZGUgd2VpcmQgZXJyb3IgbWVzc2FnZQorICAgICAgICAjIHJhaXNlZCBmcm9tIE1vZHVsZXMvX3RraW50ZXIuYzpTZXRWYXIgbGlrZToKKyAgICAgICAgIyBUeXBlRXJyb3I6IHNldHZhcigpIHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgKDIgZ2l2ZW4pCisgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0cmluZyIpCiAgICAgICAgIGdsb2JhbCBfdmFybnVtCiAgICAgICAgIGlmIG5vdCBtYXN0ZXI6CiAgICAgICAgICAgICBtYXN0ZXIgPSBfZGVmYXVsdF9yb290CkBAIC0xNzgsMTggKzE4NiwyMSBAQAogICAgICAgICAgICAgc2VsZi5fbmFtZSA9ICdQWV9WQVInICsgcmVwcihfdmFybnVtKQogICAgICAgICAgICAgX3Zhcm51bSArPSAxCiAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXQodmFsdWUpCisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUodmFsdWUpCiAgICAgICAgIGVsaWYgbm90IHNlbGYuX3RrLmNhbGwoImluZm8iLCAiZXhpc3RzIiwgc2VsZi5fbmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnNldChzZWxmLl9kZWZhdWx0KQorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKHNlbGYuX2RlZmF1bHQpCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIlVuc2V0IHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCi0gICAgICAgIHNlbGYuX3RrLmdsb2JhbHVuc2V0dmFyKHNlbGYuX25hbWUpCisgICAgICAgIGlmIChzZWxmLl90ayBpcyBub3QgTm9uZSBhbmQgc2VsZi5fdGsuY2FsbCgiaW5mbyIsICJleGlzdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSkpOgorICAgICAgICAgICAgc2VsZi5fdGsuZ2xvYmFsdW5zZXR2YXIoc2VsZi5fbmFtZSkKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBpbiBUY2wuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CiAgICAgICAgICIiIlNldCB0aGUgdmFyaWFibGUgdG8gVkFMVUUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxzZXR2YXIoc2VsZi5fbmFtZSwgdmFsdWUpCisgICAgaW5pdGlhbGl6ZSA9IHNldAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiB2YXJpYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKQpAQCAtMjY0LDEyICsyNzUsNiBAQAogICAgICAgICAiIiIKICAgICAgICAgVmFyaWFibGUuX19pbml0X18oc2VsZiwgbWFzdGVyLCB2YWx1ZSwgbmFtZSkKIAotICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJTZXQgdGhlIHZhcmlhYmxlIHRvIHZhbHVlLCBjb252ZXJ0aW5nIGJvb2xlYW5zIHRvIGludGVnZXJzLiIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBib29sKToKLSAgICAgICAgICAgIHZhbHVlID0gaW50KHZhbHVlKQotICAgICAgICByZXR1cm4gVmFyaWFibGUuc2V0KHNlbGYsIHZhbHVlKQotCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYW4gaW50ZWdlci4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCkBAIC0zMTAsNyArMzE1LDEwIEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhIGJvb2wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRib29sZWFuKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGJvb2xlYW4oc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCiAKIGRlZiBtYWlubG9vcChuPTApOgogICAgICIiIlJ1biB0aGUgbWFpbiBsb29wIG9mIFRjbC4iIiIKQEAgLTMyMiw3ICszMzAsMTAgQEAKIAogZGVmIGdldGJvb2xlYW4ocyk6CiAgICAgIiIiQ29udmVydCB0cnVlIGFuZCBmYWxzZSB0byBpbnRlZ2VyIHZhbHVlcyAxIGFuZCAwLiIiIgotICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfZGVmYXVsdF9yb290LnRrLmdldGJvb2xlYW4ocykKKyAgICBleGNlcHQgVGNsRXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKIAogIyBNZXRob2RzIGRlZmluZWQgb24gYm90aCB0b3BsZXZlbCBhbmQgaW50ZXJpb3Igd2lkZ2V0cwogY2xhc3MgTWlzYzoKQEAgLTQxMiw3ICs0MjMsMTAgQEAKICAgICBnZXRkb3VibGUgPSBmbG9hdAogICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHMpOgogICAgICAgICAiIiJSZXR1cm4gYSBib29sZWFuIHZhbHVlIGZvciBUY2wgYm9vbGVhbiB2YWx1ZXMgdHJ1ZSBhbmQgZmFsc2UgZ2l2ZW4gYXMgcGFyYW1ldGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4ocykKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQogICAgIGRlZiBmb2N1c19zZXQoc2VsZik6CiAgICAgICAgICIiIkRpcmVjdCBpbnB1dCBmb2N1cyB0byB0aGlzIHdpZGdldC4KIApAQCAtMTE4NSw3ICsxMTk5LDYgQEAKICAgICAgICAgcmV0dXJuIChlLCkKICAgICBkZWYgX3JlcG9ydF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgotICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGV4YywgdmFsLCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgIHJvb3QgPSBzZWxmLl9yb290KCkKICAgICAgICAgcm9vdC5yZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKGV4YywgdmFsLCB0YikKQEAgLTEyNjAsNiArMTI3MywxMyBAQAogICAgICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlJywgJ3NsYXZlcycsIHNlbGYuX3cpKV0KICAgICAjIEdyaWQgbWV0aG9kcyB0aGF0IGFwcGx5IHRvIHRoZSBtYXN0ZXIKKyAgICBkZWYgZ3JpZF9hbmNob3Ioc2VsZiwgYW5jaG9yPU5vbmUpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiVGhlIGFuY2hvciB2YWx1ZSBjb250cm9scyBob3cgdG8gcGxhY2UgdGhlIGdyaWQgd2l0aGluIHRoZQorICAgICAgICBtYXN0ZXIgd2hlbiBubyByb3cvY29sdW1uIGhhcyBhbnkgd2VpZ2h0LgorCisgICAgICAgIFRoZSBkZWZhdWx0IGFuY2hvciBpcyBudy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCdncmlkJywgJ2FuY2hvcicsIHNlbGYuX3csIGFuY2hvcikKKyAgICBhbmNob3IgPSBncmlkX2FuY2hvcgogICAgIGRlZiBncmlkX2Jib3goc2VsZiwgY29sdW1uPU5vbmUsIHJvdz1Ob25lLCBjb2wyPU5vbmUsIHJvdzI9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIHR1cGxlIG9mIGludGVnZXIgY29vcmRpbmF0ZXMgZm9yIHRoZSBib3VuZGluZwogICAgICAgICBib3ggb2YgdGhpcyB3aWRnZXQgY29udHJvbGxlZCBieSB0aGUgZ2VvbWV0cnkgbWFuYWdlciBncmlkLgpAQCAtMTI3OCw3ICsxMjk4LDYgQEAKICAgICAgICAgaWYgY29sMiBpcyBub3QgTm9uZSBhbmQgcm93MiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgKGNvbDIsIHJvdzIpCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRpbnRzKHNlbGYudGsuY2FsbCgqYXJncykpIG9yIE5vbmUKLQogICAgIGJib3ggPSBncmlkX2Jib3gKICAgICBkZWYgX2dyaWRfY29uZmlndXJlKHNlbGYsIGNvbW1hbmQsIGluZGV4LCBjbmYsIGt3KToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCkBAIC0xNTM3LDYgKzE1NTYsMTQgQEAKICAgICAgICAgdGhlIGZvY3VzLiBSZXR1cm4gY3VycmVudCBmb2N1cyBtb2RlbCBpZiBNT0RFTCBpcyBOb25lLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdmb2N1c21vZGVsJywgc2VsZi5fdywgbW9kZWwpCiAgICAgZm9jdXNtb2RlbCA9IHdtX2ZvY3VzbW9kZWwKKyAgICBkZWYgd21fZm9yZ2V0KHNlbGYsIHdpbmRvdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2luZG93IHdpbGwgYmUgdW5tYXBwZW5kIGZyb20gdGhlIHNjcmVlbiBhbmQgd2lsbCBubyBsb25nZXIKKyAgICAgICAgYmUgbWFuYWdlZCBieSB3bS4gdG9wbGV2ZWwgd2luZG93cyB3aWxsIGJlIHRyZWF0ZWQgbGlrZSBmcmFtZQorICAgICAgICB3aW5kb3dzIG9uY2UgdGhleSBhcmUgbm8gbG9uZ2VyIG1hbmFnZWQgYnkgd20sIGhvd2V2ZXIsIHRoZSBtZW51CisgICAgICAgIG9wdGlvbiBjb25maWd1cmF0aW9uIHdpbGwgYmUgcmVtZW1iZXJlZCBhbmQgdGhlIG1lbnVzIHdpbGwgcmV0dXJuCisgICAgICAgIG9uY2UgdGhlIHdpZGdldCBpcyBtYW5hZ2VkIGFnYWluLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZvcmdldCcsIHdpbmRvdykKKyAgICBmb3JnZXQgPSB3bV9mb3JnZXQKICAgICBkZWYgd21fZnJhbWUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpZGVudGlmaWVyIGZvciBkZWNvcmF0aXZlIGZyYW1lIG9mIHRoaXMgd2lkZ2V0IGlmIHByZXNlbnQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ZyYW1lJywgc2VsZi5fdykKQEAgLTE1OTAsNiArMTYxNywzMSBAQAogICAgICAgICBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ubmFtZScsIHNlbGYuX3csIG5ld05hbWUpCiAgICAgaWNvbm5hbWUgPSB3bV9pY29ubmFtZQorICAgIGRlZiB3bV9pY29ucGhvdG8oc2VsZiwgZGVmYXVsdD1GYWxzZSwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiU2V0cyB0aGUgdGl0bGViYXIgaWNvbiBmb3IgdGhpcyB3aW5kb3cgYmFzZWQgb24gdGhlIG5hbWVkIHBob3RvCisgICAgICAgIGltYWdlcyBwYXNzZWQgdGhyb3VnaCBhcmdzLiBJZiBkZWZhdWx0IGlzIFRydWUsIHRoaXMgaXMgYXBwbGllZCB0bworICAgICAgICBhbGwgZnV0dXJlIGNyZWF0ZWQgdG9wbGV2ZWxzIGFzIHdlbGwuCisKKyAgICAgICAgVGhlIGRhdGEgaW4gdGhlIGltYWdlcyBpcyB0YWtlbiBhcyBhIHNuYXBzaG90IGF0IHRoZSB0aW1lIG9mCisgICAgICAgIGludm9jYXRpb24uIElmIHRoZSBpbWFnZXMgYXJlIGxhdGVyIGNoYW5nZWQsIHRoaXMgaXMgbm90IHJlZmxlY3RlZAorICAgICAgICB0byB0aGUgdGl0bGViYXIgaWNvbnMuIE11bHRpcGxlIGltYWdlcyBhcmUgYWNjZXB0ZWQgdG8gYWxsb3cKKyAgICAgICAgZGlmZmVyZW50IGltYWdlcyBzaXplcyB0byBiZSBwcm92aWRlZC4gVGhlIHdpbmRvdyBtYW5hZ2VyIG1heSBzY2FsZQorICAgICAgICBwcm92aWRlZCBpY29ucyB0byBhbiBhcHByb3ByaWF0ZSBzaXplLgorCisgICAgICAgIE9uIFdpbmRvd3MsIHRoZSBpbWFnZXMgYXJlIHBhY2tlZCBpbnRvIGEgV2luZG93cyBpY29uIHN0cnVjdHVyZS4KKyAgICAgICAgVGhpcyB3aWxsIG92ZXJyaWRlIGFuIGljb24gc3BlY2lmaWVkIHRvIHdtX2ljb25iaXRtYXAsIGFuZCB2aWNlCisgICAgICAgIHZlcnNhLgorCisgICAgICAgIE9uIFgsIHRoZSBpbWFnZXMgYXJlIGFycmFuZ2VkIGludG8gdGhlIF9ORVRfV01fSUNPTiBYIHByb3BlcnR5LAorICAgICAgICB3aGljaCBtb3N0IG1vZGVybiB3aW5kb3cgbWFuYWdlcnMgc3VwcG9ydC4gQW4gaWNvbiBzcGVjaWZpZWQgYnkKKyAgICAgICAgd21faWNvbmJpdG1hcCBtYXkgZXhpc3Qgc2ltdXVsdGFuZW91c2x5LgorCisgICAgICAgIE9uIE1hY2ludG9zaCwgdGhpcyBjdXJyZW50bHkgZG9lcyBub3RoaW5nLiIiIgorICAgICAgICBpZiBkZWZhdWx0OgorICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdpY29ucGhvdG8nLCBzZWxmLl93LCAiLWRlZmF1bHQiLCAqYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbnBob3RvJywgc2VsZi5fdywgKmFyZ3MpCisgICAgaWNvbnBob3RvID0gd21faWNvbnBob3RvCiAgICAgZGVmIHdtX2ljb25wb3NpdGlvbihzZWxmLCB4PU5vbmUsIHk9Tm9uZSk6CiAgICAgICAgICIiIlNldCB0aGUgcG9zaXRpb24gb2YgdGhlIGljb24gb2YgdGhpcyB3aWRnZXQgdG8gWCBhbmQgWS4gUmV0dXJuCiAgICAgICAgIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIFggYW5kIFggaWYgTm9uZSBpcyBnaXZlbi4iIiIKQEAgLTE2MDEsNiArMTY1MywxMiBAQAogICAgICAgICB2YWx1ZSBpZiBOb25lIGlzIGdpdmVuLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdpY29ud2luZG93Jywgc2VsZi5fdywgcGF0aE5hbWUpCiAgICAgaWNvbndpbmRvdyA9IHdtX2ljb253aW5kb3cKKyAgICBkZWYgd21fbWFuYWdlKHNlbGYsIHdpZGdldCk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJUaGUgd2lkZ2V0IHNwZWNpZmllZCB3aWxsIGJlY29tZSBhIHN0YW5kIGFsb25lIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgICAgIFRoZSB3aW5kb3cgd2lsbCBiZSBkZWNvcmF0ZWQgd2l0aCB0aGUgd2luZG93IG1hbmFnZXJzIHRpdGxlIGJhciwKKyAgICAgICAgZXRjLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ21hbmFnZScsIHdpZGdldCkKKyAgICBtYW5hZ2UgPSB3bV9tYW5hZ2UKICAgICBkZWYgd21fbWF4c2l6ZShzZWxmLCB3aWR0aD1Ob25lLCBoZWlnaHQ9Tm9uZSk6CiAgICAgICAgICIiIlNldCBtYXggV0lEVEggYW5kIEhFSUdIVCBmb3IgdGhpcyB3aWRnZXQuIElmIHRoZSB3aW5kb3cgaXMgZ3JpZGRlZAogICAgICAgICB0aGUgdmFsdWVzIGFyZSBnaXZlbiBpbiBncmlkIHVuaXRzLiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWVzIGlmIE5vbmUKQEAgLTE2ODksNyArMTc0Nyw3IEBACiAgICAgICAgICMgZW5zdXJlIHRoYXQgc2VsZi50ayBpcyBhbHdheXMgX3NvbWV0aGluZ18uCiAgICAgICAgIHNlbGYudGsgPSBOb25lCiAgICAgICAgIGlmIGJhc2VOYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgc3lzLCBvcworICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCiAgICAgICAgICAgICBiYXNlTmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlTmFtZSkKICAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CkBAIC0xNzYzLDcgKzE4MjEsNyBAQAogICAgICAgICAgICAgZXhlYyhvcGVuKGJhc2VfcHkpLnJlYWQoKSwgZGlyKQogICAgIGRlZiByZXBvcnRfY2FsbGJhY2tfZXhjZXB0aW9uKHNlbGYsIGV4YywgdmFsLCB0Yik6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiBJdCByZXBvcnRzIGV4Y2VwdGlvbiBvbiBzeXMuc3RkZXJyLiIiIgotICAgICAgICBpbXBvcnQgdHJhY2ViYWNrLCBzeXMKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFeGNlcHRpb24gaW4gVGtpbnRlciBjYWxsYmFja1xuIikKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IGV4YwogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbApAQCAtMjA4OCwyNSArMjE0Niw0NSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnaW52b2tlJykKIAorCiAjIEluZGljZXM6CiAjIFhYWCBJIGRvbid0IGxpa2UgdGhlc2UgLS0gdGFrZSB0aGVtIGF3YXkKIGRlZiBBdEVuZCgpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRFbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ2VuZCcKKworCiBkZWYgQXRJbnNlcnQoKmFyZ3MpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRJbnNlcnQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBzID0gJ2luc2VydCcKICAgICBmb3IgYSBpbiBhcmdzOgogICAgICAgICBpZiBhOiBzID0gcyArICgnICcgKyBhKQogICAgIHJldHVybiBzCisKKwogZGVmIEF0U2VsRmlyc3QoKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0U2VsRmlyc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5maXJzdCcKKworCiBkZWYgQXRTZWxMYXN0KCk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdFNlbExhc3Qgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gJ3NlbC5sYXN0JworCisKIGRlZiBBdCh4LCB5PU5vbmUpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBpZiB5IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiAnQCVyJyAlICh4LCkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gJ0AlciwlcicgJSAoeCwgeSkKIAorCiBjbGFzcyBDYW52YXMoV2lkZ2V0LCBYVmlldywgWVZpZXcpOgogICAgICIiIkNhbnZhcyB3aWRnZXQgdG8gZGlzcGxheSBncmFwaGljYWwgZWxlbWVudHMgbGlrZSBsaW5lcyBvciB0ZXh0LiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgY25mPXt9LCAqKmt3KToKQEAgLTI2OTIsNiArMjc3MCwxMCBAQAogICAgIGRlZiB1bnBvc3Qoc2VsZik6CiAgICAgICAgICIiIlVubWFwIGEgbWVudS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICd1bnBvc3QnKQorICAgIGRlZiB4cG9zaXRpb24oc2VsZiwgaW5kZXgpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB4LXBvc2l0aW9uIG9mIHRoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtCisgICAgICAgIGF0IElOREVYLiIiIgorICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQogICAgIGRlZiB5cG9zaXRpb24oc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHktcG9zaXRpb24gb2YgdGhlIHRvcG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbSBhdCBJTkRFWC4iIiIKICAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoCkBAIC0yODUxLDYgKzI5MzMsMjUgQEAKICAgICAgICAgcmVsYXRpb24gT1AgaXMgc2F0aXNmaWVkLiBPUCBpcyBvbmUgb2YgPCwgPD0sID09LCA+PSwgPiwgb3IgIT0uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4oc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NvbXBhcmUnLCBpbmRleDEsIG9wLCBpbmRleDIpKQorICAgIGRlZiBjb3VudChzZWxmLCBpbmRleDEsIGluZGV4MiwgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiQ291bnRzIHRoZSBudW1iZXIgb2YgcmVsZXZhbnQgdGhpbmdzIGJldHdlZW4gdGhlIHR3byBpbmRpY2VzLgorICAgICAgICBJZiBpbmRleDEgaXMgYWZ0ZXIgaW5kZXgyLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBuZWdhdGl2ZSBudW1iZXIKKyAgICAgICAgKGFuZCB0aGlzIGhvbGRzIGZvciBlYWNoIG9mIHRoZSBwb3NzaWJsZSBvcHRpb25zKS4KKworICAgICAgICBUaGUgYWN0dWFsIGl0ZW1zIHdoaWNoIGFyZSBjb3VudGVkIGRlcGVuZHMgb24gdGhlIG9wdGlvbnMgZ2l2ZW4gYnkKKyAgICAgICAgYXJncy4gVGhlIHJlc3VsdCBpcyBhIGxpc3Qgb2YgaW50ZWdlcnMsIG9uZSBmb3IgdGhlIHJlc3VsdCBvZiBlYWNoCisgICAgICAgIGNvdW50aW5nIG9wdGlvbiBnaXZlbi4gVmFsaWQgY291bnRpbmcgb3B0aW9ucyBhcmUgImNoYXJzIiwKKyAgICAgICAgImRpc3BsYXljaGFycyIsICJkaXNwbGF5aW5kaWNlcyIsICJkaXNwbGF5bGluZXMiLCAiaW5kaWNlcyIsCisgICAgICAgICJsaW5lcyIsICJ4cGl4ZWxzIiBhbmQgInlwaXhlbHMiLiBUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBvc3NpYmxlCisgICAgICAgIG9wdGlvbiAidXBkYXRlIiwgd2hpY2ggaWYgZ2l2ZW4gdGhlbiBhbGwgc3Vic2VxdWVudCBvcHRpb25zIGVuc3VyZQorICAgICAgICB0aGF0IGFueSBwb3NzaWJsZSBvdXQgb2YgZGF0ZSBpbmZvcm1hdGlvbiBpcyByZWNhbGN1bGF0ZWQuIiIiCisgICAgICAgIGFyZ3MgPSBbJy0lcycgJSBhcmcgZm9yIGFyZyBpbiBhcmdzIGlmIG5vdCBhcmcuc3RhcnRzd2l0aCgnLScpXQorICAgICAgICBhcmdzICs9IFtpbmRleDEsIGluZGV4Ml0KKyAgICAgICAgcmVzID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICdjb3VudCcsICphcmdzKSBvciBOb25lCisgICAgICAgIGlmIHJlcyBpcyBub3QgTm9uZSBhbmQgbGVuKGFyZ3MpIDw9IDM6CisgICAgICAgICAgICByZXR1cm4gKHJlcywgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgIGRlZiBkZWJ1ZyhzZWxmLCBib29sZWFuPU5vbmUpOgogICAgICAgICAiIiJUdXJuIG9uIHRoZSBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3Mgb2YgdGhlIEItVHJlZSBpbnNpZGUgdGhlIHRleHQKICAgICAgICAgd2lkZ2V0IGFjY29yZGluZyB0byBCT09MRUFOLiIiIgpAQCAtMzAxMyw2ICszMTE0LDI0IEBACiAgICAgZGVmIG1hcmtfcHJldmlvdXMoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHByZXZpb3VzIG1hcmsgYmVmb3JlIElOREVYLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKHNlbGYuX3csICdtYXJrJywgJ3ByZXZpb3VzJywgaW5kZXgpIG9yIE5vbmUKKyAgICBkZWYgcGVlcl9jcmVhdGUoc2VsZiwgbmV3UGF0aE5hbWUsIGNuZj17fSwgKiprdyk6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJDcmVhdGVzIGEgcGVlciB0ZXh0IHdpZGdldCB3aXRoIHRoZSBnaXZlbiBuZXdQYXRoTmFtZSwgYW5kIGFueQorICAgICAgICBvcHRpb25hbCBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEJ5IGRlZmF1bHQgdGhlIHBlZXIgd2lsbAorICAgICAgICBoYXZlIHRoZSBzYW1lIHN0YXJ0IGFuZCBhbmQgZW5kIGxpbmUgYXMgdGhlIHBhcmVudCB3aWRnZXQsIGJ1dAorICAgICAgICB0aGVzZSBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdwZWVyJywgJ2NyZWF0ZScsIG5ld1BhdGhOYW1lLAorICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLCBrdykpCisgICAgZGVmIHBlZXJfbmFtZXMoc2VsZik6ICMgbmV3IGluIFRrIDguNQorICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBwZWVycyBvZiB0aGlzIHdpZGdldCAodGhpcyBkb2VzIG5vdCBpbmNsdWRlCisgICAgICAgIHRoZSB3aWRnZXQgaXRzZWxmKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGVlcicsICduYW1lcycpKQorICAgIGRlZiByZXBsYWNlKHNlbGYsIGluZGV4MSwgaW5kZXgyLCBjaGFycywgKmFyZ3MpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmVwbGFjZXMgdGhlIHJhbmdlIG9mIGNoYXJhY3RlcnMgYmV0d2VlbiBpbmRleDEgYW5kIGluZGV4MiB3aXRoCisgICAgICAgIHRoZSBnaXZlbiBjaGFyYWN0ZXJzIGFuZCB0YWdzIHNwZWNpZmllZCBieSBhcmdzLgorCisgICAgICAgIFNlZSB0aGUgbWV0aG9kIGluc2VydCBmb3Igc29tZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGFyZ3MsIGFuZCB0aGUKKyAgICAgICAgbWV0aG9kIGRlbGV0ZSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluZGljZXMuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAncmVwbGFjZScsIGluZGV4MSwgaW5kZXgyLCBjaGFycywgKmFyZ3MpCiAgICAgZGVmIHNjYW5fbWFyayhzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmVtZW1iZXIgdGhlIGN1cnJlbnQgWCwgWSBjb29yZGluYXRlcy4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdzY2FuJywgJ21hcmsnLCB4LCB5KQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX2ZpeC5weSBiL0xpYi90a2ludGVyL19maXgucHkKaW5kZXggNWE2OWQ4OS4uNWYzMmQyNSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX2ZpeC5weQorKysgYi9MaWIvdGtpbnRlci9fZml4LnB5CkBAIC00NiwxMCArNDYsMTAgQEAKICAgICAgICAgICAgIHMgPSAiXFwiICsgc1szOl0KICAgICAgICAgcmV0dXJuIHMKIAotcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsInRjbCIpCitwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCJ0Y2wiKQogaWYgbm90IG9zLnBhdGguZXhpc3RzKHByZWZpeCk6CiAgICAgIyBkZXZkaXIvLi4vdGNsdGsvbGliCi0gICAgcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsIG9zLnBhdGgucGFyZGlyLCAidGNsdGsiLCAibGliIikKKyAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCBvcy5wYXRoLnBhcmRpciwgInRjbHRrIiwgImxpYiIpCiAgICAgcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKHByZWZpeCkKICMgaWYgdGhpcyBkb2VzIG5vdCBleGlzdCwgbm8gZnVydGhlciBzZWFyY2ggaXMgbmVlZGVkCiBpZiBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weSBiL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKaW5kZXggOThkMmQ1Yy4uM2ZmYjI1MiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQorKysgYi9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CkBAIC0zMDYsNyArMzA2LDYgQEAKICAgICBkZWYgX2ZpeHJlc3VsdChzZWxmLCB3aWRnZXQsIHJlc3VsdCk6CiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgICMga2VlcCBkaXJlY3RvcnkgYW5kIGZpbGVuYW1lIHVudGlsIG5leHQgdGltZQotICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICAjIGNvbnZlcnQgVGNsIHBhdGggb2JqZWN0cyB0byBzdHJpbmdzCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN0cmluZwpAQCAtMzMzLDcgKzMzMiw2IEBACiAgICAgICAgICAgICAjIG11bHRpcGxlIHJlc3VsdHM6CiAgICAgICAgICAgICByZXN1bHQgPSB0dXBsZShbZ2V0YXR0cihyLCAic3RyaW5nIiwgcikgZm9yIHIgaW4gcmVzdWx0XSkKICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgICAgICBwYXRoLCBmaWxlID0gb3MucGF0aC5zcGxpdChyZXN1bHRbMF0pCiAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zWyJpbml0aWFsZGlyIl0gPSBwYXRoCiAgICAgICAgICAgICAgICAgIyBkb24ndCBzZXQgaW5pdGlhbGZpbGUgb3IgZmlsZW5hbWUsIGFzIHdlIGhhdmUgbXVsdGlwbGUgb2YgdGhlc2UKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2ZvbnQucHkgYi9MaWIvdGtpbnRlci9mb250LnB5CmluZGV4IDU0MjViMDYuLjQ5MjkyNDEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2ZvbnQucHkKKysrIGIvTGliL3RraW50ZXIvZm9udC5weQpAQCAtMiwyNyArMiwyNyBAQAogIwogIyB3cml0dGVuIGJ5IEZyZWRyaWsgTHVuZGgsIEZlYnJ1YXJ5IDE5OTgKICMKLSMgRklYTUU6IHNob3VsZCBhZGQgJ2Rpc3BsYXlvZicgb3B0aW9uIHdoZXJlIHJlbGV2YW50IChhY3R1YWwsIGZhbWlsaWVzLAotIyAgICAgICAgbWVhc3VyZSwgYW5kIG1ldHJpY3MpCi0jCiAKIF9fdmVyc2lvbl9fID0gIjAuOSIKIAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHRraW50ZXIKIAorCiAjIHdlaWdodC9zbGFudAogTk9STUFMID0gIm5vcm1hbCIKIFJPTUFOID0gInJvbWFuIgogQk9MRCAgID0gImJvbGQiCiBJVEFMSUMgPSAiaXRhbGljIgogCisKIGRlZiBuYW1ldG9mb250KG5hbWUpOgogICAgICIiIkdpdmVuIHRoZSBuYW1lIG9mIGEgdGsgbmFtZWQgZm9udCwgcmV0dXJucyBhIEZvbnQgcmVwcmVzZW50YXRpb24uCiAgICAgIiIiCiAgICAgcmV0dXJuIEZvbnQobmFtZT1uYW1lLCBleGlzdHM9VHJ1ZSkKIAotY2xhc3MgRm9udDoKIAorY2xhc3MgRm9udDoKICAgICAiIiJSZXByZXNlbnRzIGEgbmFtZWQgZm9udC4KIAogICAgIENvbnN0cnVjdG9yIG9wdGlvbnMgYXJlOgpAQCAtNDQsNiArNDQsOCBAQAogCiAgICAgIiIiCiAKKyAgICBjb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KDEpCisKICAgICBkZWYgX3NldChzZWxmLCBrdyk6CiAgICAgICAgIG9wdGlvbnMgPSBbXQogICAgICAgICBmb3IgaywgdiBpbiBrdy5pdGVtcygpOgpAQCAtNjMsNyArNjUsOCBAQAogICAgICAgICAgICAgb3B0aW9uc1thcmdzW2ldWzE6XV0gPSBhcmdzW2krMV0KICAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290PU5vbmUsIGZvbnQ9Tm9uZSwgbmFtZT1Ob25lLCBleGlzdHM9RmFsc2UsICoqb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3Q9Tm9uZSwgZm9udD1Ob25lLCBuYW1lPU5vbmUsIGV4aXN0cz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgKipvcHRpb25zKToKICAgICAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290CiAgICAgICAgIGlmIGZvbnQ6CkBAIC03Miw3ICs3NSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmb250ID0gc2VsZi5fc2V0KG9wdGlvbnMpCiAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgbmFtZSA9ICJmb250IiArIHN0cihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSAiZm9udCIgKyBzdHIobmV4dChzZWxmLmNvdW50ZXIpKQogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgaWYgZXhpc3RzOgpAQCAtMTE4LDE0ICsxMjEsMTcgQEAKICAgICAgICAgIlJldHVybiBhIGRpc3RpbmN0IGNvcHkgb2YgdGhlIGN1cnJlbnQgZm9udCIKICAgICAgICAgcmV0dXJuIEZvbnQoc2VsZi5fcm9vdCwgKipzZWxmLmFjdHVhbCgpKQogCi0gICAgZGVmIGFjdHVhbChzZWxmLCBvcHRpb249Tm9uZSk6CisgICAgZGVmIGFjdHVhbChzZWxmLCBvcHRpb249Tm9uZSwgZGlzcGxheW9mPU5vbmUpOgogICAgICAgICAiUmV0dXJuIGFjdHVhbCBmb250IGF0dHJpYnV0ZXMiCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBpZiBkaXNwbGF5b2Y6CisgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQogICAgICAgICBpZiBvcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICItIitvcHRpb24pCisgICAgICAgICAgICBhcmdzID0gYXJncyArICgnLScgKyBvcHRpb24sICkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSwgKmFyZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWtkaWN0KAotICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICphcmdzKSkpCiAKICAgICBkZWYgY2dldChzZWxmLCBvcHRpb24pOgogICAgICAgICAiR2V0IGZvbnQgYXR0cmlidXRlIgpAQCAtMTM4LDM3ICsxNDQsNDcgQEAKICAgICAgICAgICAgICAgICAgICpzZWxmLl9zZXQob3B0aW9ucykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWtkaWN0KAotICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiY29uZmlnIiwgc2VsZi5uYW1lKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJjb25maWciLCBzZWxmLm5hbWUpKSkKIAogICAgIGNvbmZpZ3VyZSA9IGNvbmZpZwogCi0gICAgZGVmIG1lYXN1cmUoc2VsZiwgdGV4dCk6CisgICAgZGVmIG1lYXN1cmUoc2VsZiwgdGV4dCwgZGlzcGxheW9mPU5vbmUpOgogICAgICAgICAiUmV0dXJuIHRleHQgd2lkdGgiCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fY2FsbCgiZm9udCIsICJtZWFzdXJlIiwgc2VsZi5uYW1lLCB0ZXh0KSkKKyAgICAgICAgYXJncyA9ICh0ZXh0LCkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZiwgdGV4dCkKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9jYWxsKCJmb250IiwgIm1lYXN1cmUiLCBzZWxmLm5hbWUsICphcmdzKSkKIAotICAgIGRlZiBtZXRyaWNzKHNlbGYsICpvcHRpb25zKToKKyAgICBkZWYgbWV0cmljcyhzZWxmLCAqb3B0aW9ucywgKiprdyk6CiAgICAgICAgICIiIlJldHVybiBmb250IG1ldHJpY3MuCiAKICAgICAgICAgRm9yIGJlc3QgcGVyZm9ybWFuY2UsIGNyZWF0ZSBhIGR1bW15IHdpZGdldAogICAgICAgICB1c2luZyB0aGlzIGZvbnQgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuIiIiCi0KKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGRpc3BsYXlvZiA9IGt3LnBvcCgnZGlzcGxheW9mJywgTm9uZSkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZikKICAgICAgICAgaWYgb3B0aW9uczoKKyAgICAgICAgICAgIGFyZ3MgPSBhcmdzICsgc2VsZi5fZ2V0KG9wdGlvbnMpCiAgICAgICAgICAgICByZXR1cm4gaW50KAotICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSwgc2VsZi5fZ2V0KG9wdGlvbnMpKQotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcyA9IHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAibWV0cmljcyIsIHNlbGYubmFtZSkpCisgICAgICAgICAgICByZXMgPSBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgICAgIG9wdGlvbnMgPSB7fQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHJlcyksIDIpOgogICAgICAgICAgICAgICAgIG9wdGlvbnNbcmVzW2ldWzE6XV0gPSBpbnQocmVzW2krMV0pCiAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucwogCi1kZWYgZmFtaWxpZXMocm9vdD1Ob25lKToKKworZGVmIGZhbWlsaWVzKHJvb3Q9Tm9uZSwgZGlzcGxheW9mPU5vbmUpOgogICAgICJHZXQgZm9udCBmYW1pbGllcyAoYXMgYSB0dXBsZSkiCiAgICAgaWYgbm90IHJvb3Q6CiAgICAgICAgIHJvb3QgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKLSAgICByZXR1cm4gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCJmb250IiwgImZhbWlsaWVzIikpCisgICAgYXJncyA9ICgpCisgICAgaWYgZGlzcGxheW9mOgorICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mKQorICAgIHJldHVybiByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoImZvbnQiLCAiZmFtaWxpZXMiLCAqYXJncykpCisKIAogZGVmIG5hbWVzKHJvb3Q9Tm9uZSk6CiAgICAgIkdldCBuYW1lcyBvZiBkZWZpbmVkIGZvbnRzIChhcyBhIHR1cGxlKSIKQEAgLTE3Niw2ICsxOTIsNyBAQAogICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290CiAgICAgcmV0dXJuIHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgiZm9udCIsICJuYW1lcyIpKQogCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgdGVzdCBzdHVmZgogCkBAIC0xOTgsMTAgKzIxNSwxMCBAQAogCiAgICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIpKQogCi0gICAgcHJpbnQoZi5tZXRyaWNzKCkpCisgICAgcHJpbnQoZi5tZXRyaWNzKGRpc3BsYXlvZj1yb290KSkKIAogICAgIGYgPSBGb250KGZvbnQ9KCJDb3VyaWVyIiwgMjAsICJib2xkIikpCi0gICAgcHJpbnQoZi5tZWFzdXJlKCJoZWxsbyIpLCBmLm1ldHJpY3MoImxpbmVzcGFjZSIpKQorICAgIHByaW50KGYubWVhc3VyZSgiaGVsbG8iKSwgZi5tZXRyaWNzKCJsaW5lc3BhY2UiLCBkaXNwbGF5b2Y9cm9vdCkpCiAKICAgICB3ID0gdGtpbnRlci5MYWJlbChyb290LCB0ZXh0PSJIZWxsbywgd29ybGQiLCBmb250PWYpCiAgICAgdy5wYWNrKCkKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc4Y2M5MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC0wLDAgKzEsMTY1IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0a2ludGVyIGltcG9ydCBWYXJpYWJsZSwgU3RyaW5nVmFyLCBJbnRWYXIsIERvdWJsZVZhciwgQm9vbGVhblZhciwgVGsKKworCitjbGFzcyBWYXIoVmFyaWFibGUpOgorCisgICAgX2RlZmF1bHQgPSAiZGVmYXVsdCIKKyAgICBzaWRlX2VmZmVjdCA9IEZhbHNlCisKKyAgICBkZWYgc2V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5zaWRlX2VmZmVjdCA9IFRydWUKKyAgICAgICAgc3VwZXIoKS5zZXQodmFsdWUpCisKKworY2xhc3MgVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJvb3QgPSBUaygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYucm9vdC5kZXN0cm95KCkKKworCitjbGFzcyBUZXN0VmFyaWFibGUoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIodiksIHIiXlBZX1ZBUihcZCspJCIpCisKKyAgICBkZWYgdGVzdF9uYW1lX2FuZF92YWx1ZShzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgInNhbXBsZSBzdHJpbmciLCAidmFybmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNhbXBsZSBzdHJpbmciLCB2LmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ2YXJuYW1lIiwgc3RyKHYpKQorCisgICAgZGVmIHRlc3RfX19kZWxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290LCAic2FtcGxlIHN0cmluZyIsICJ2YXJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIGRlbCB2CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKworICAgIGRlZiB0ZXN0X2RvbnRfdW5zZXRfbm90X2V4aXN0aW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisgICAgICAgIHYxID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgdjIgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBkZWwgdjEKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAibmFtZSIpKQorICAgICAgICAjIHNob3VsZG4ndCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZGVsIHYyCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgIm5hbWUiKSkKKworICAgIGRlZiB0ZXN0X19fZXFfXyhzZWxmKToKKyAgICAgICAgIyB2YWx1ZXMgZG9lc24ndCBtYXR0ZXIsIG9ubHkgY2xhc3MgYW5kIG5hbWUgYXJlIGNoZWNrZWQKKyAgICAgICAgdjEgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHYyID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYxLCB2MikKKworICAgICAgICB2MyA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgdjQgPSBTdHJpbmdWYXIoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYzLCB2NCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfbmFtZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPTEyMykKKworICAgIGRlZiB0ZXN0X2luaXRpYWxpemUoc2VsZik6CisgICAgICAgIHYgPSBWYXIoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuc2lkZV9lZmZlY3QpCisgICAgICAgIHYuc2V0KCJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2LnNpZGVfZWZmZWN0KQorCisKK2NsYXNzIFRlc3RTdHJpbmdWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IFN0cmluZ1ZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBTdHJpbmdWYXIoc2VsZi5yb290LCAiYWJjIiwgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmMiLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidmFsdWUiLCB2LmdldCgpKQorCisKK2NsYXNzIFRlc3RJbnRWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QsIDEyMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMywgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzNDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDM0NSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWUoc2VsZik6CisgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMzQ1LjAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK2NsYXNzIFRlc3REb3VibGVWYXIoVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMC4wLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgMS4yMywgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDEuMjMsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMy40NSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMy40NSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldF9mcm9tX2ludChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QsIDEuMjMsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgxLjIzLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjMuNDUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDMuNDUsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiNDU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCg0NTYsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlKHNlbGYpOgorICAgICAgICB2ID0gRG91YmxlVmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK2NsYXNzIFRlc3RCb29sZWFuVmFyKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBCb29sZWFuVmFyKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IEJvb2xlYW5WYXIoc2VsZi5yb290LCBUcnVlLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoVHJ1ZSwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIwIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChGYWxzZSwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfdmFsdWVfZG9tYWluKHNlbGYpOgorICAgICAgICB2ID0gQm9vbGVhblZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIxLjAiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorCisKK3Rlc3RzX2d1aSA9IChUZXN0VmFyaWFibGUsIFRlc3RTdHJpbmdWYXIsIFRlc3RJbnRWYXIsCisgICAgICAgICAgICAgVGVzdERvdWJsZVZhciwgVGVzdEJvb2xlYW5WYXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0c19ndWkpCmRpZmYgLS1naXQgYS9MaWIvdG9rZW4ucHkgYi9MaWIvdG9rZW4ucHkKaW5kZXggNmI1MzIwZC4uMzFmYWUwYSAxMDA3NTUKLS0tIGEvTGliL3Rva2VuLnB5CisrKyBiL0xpYi90b2tlbi5weQpAQCAtNzAsNyArNzAsNyBAQAogCiB0b2tfbmFtZSA9IHt2YWx1ZTogbmFtZQogICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGdsb2JhbHMoKS5pdGVtcygpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBpbnQpfQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KSBhbmQgbm90IG5hbWUuc3RhcnRzd2l0aCgnXycpfQogX19hbGxfXy5leHRlbmQodG9rX25hbWUudmFsdWVzKCkpCiAKIGRlZiBJU1RFUk1JTkFMKHgpOgpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IDU5MDgxZDMuLmQ2Njk0MTIgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTQ1LDYgKzQ1LDUxIEBACiBFTkNPRElORyA9IE5fVE9LRU5TICsgMgogdG9rX25hbWVbRU5DT0RJTkddID0gJ0VOQ09ESU5HJwogTl9UT0tFTlMgKz0gMworRVhBQ1RfVE9LRU5fVFlQRVMgPSB7CisgICAgJygnOiAgIExQQVIsCisgICAgJyknOiAgIFJQQVIsCisgICAgJ1snOiAgIExTUUIsCisgICAgJ10nOiAgIFJTUUIsCisgICAgJzonOiAgIENPTE9OLAorICAgICcsJzogICBDT01NQSwKKyAgICAnOyc6ICAgU0VNSSwKKyAgICAnKyc6ICAgUExVUywKKyAgICAnLSc6ICAgTUlOVVMsCisgICAgJyonOiAgIFNUQVIsCisgICAgJy8nOiAgIFNMQVNILAorICAgICd8JzogICBWQkFSLAorICAgICcmJzogICBBTVBFUiwKKyAgICAnPCc6ICAgTEVTUywKKyAgICAnPic6ICAgR1JFQVRFUiwKKyAgICAnPSc6ICAgRVFVQUwsCisgICAgJy4nOiAgIERPVCwKKyAgICAnJSc6ICAgUEVSQ0VOVCwKKyAgICAneyc6ICAgTEJSQUNFLAorICAgICd9JzogICBSQlJBQ0UsCisgICAgJz09JzogIEVRRVFVQUwsCisgICAgJyE9JzogIE5PVEVRVUFMLAorICAgICc8PSc6ICBMRVNTRVFVQUwsCisgICAgJz49JzogIEdSRUFURVJFUVVBTCwKKyAgICAnfic6ICAgVElMREUsCisgICAgJ14nOiAgIENJUkNVTUZMRVgsCisgICAgJzw8JzogIExFRlRTSElGVCwKKyAgICAnPj4nOiAgUklHSFRTSElGVCwKKyAgICAnKionOiAgRE9VQkxFU1RBUiwKKyAgICAnKz0nOiAgUExVU0VRVUFMLAorICAgICctPSc6ICBNSU5FUVVBTCwKKyAgICAnKj0nOiAgU1RBUkVRVUFMLAorICAgICcvPSc6ICBTTEFTSEVRVUFMLAorICAgICclPSc6ICBQRVJDRU5URVFVQUwsCisgICAgJyY9JzogIEFNUEVSRVFVQUwsCisgICAgJ3w9JzogIFZCQVJFUVVBTCwKKyAgICAnXj0nOiBDSVJDVU1GTEVYRVFVQUwsCisgICAgJzw8PSc6IExFRlRTSElGVEVRVUFMLAorICAgICc+Pj0nOiBSSUdIVFNISUZURVFVQUwsCisgICAgJyoqPSc6IERPVUJMRVNUQVJFUVVBTCwKKyAgICAnLy8nOiAgRE9VQkxFU0xBU0gsCisgICAgJy8vPSc6IERPVUJMRVNMQVNIRVFVQUwsCisgICAgJ0AnOiAgIEFUCit9CiAKIGNsYXNzIFRva2VuSW5mbyhjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdUb2tlbkluZm8nLCAndHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmUnKSk6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtNTIsNiArOTcsMTMgQEAKICAgICAgICAgcmV0dXJuICgnVG9rZW5JbmZvKHR5cGU9JXMsIHN0cmluZz0lciwgc3RhcnQ9JXIsIGVuZD0lciwgbGluZT0lciknICUKICAgICAgICAgICAgICAgICBzZWxmLl9yZXBsYWNlKHR5cGU9YW5ub3RhdGVkX3R5cGUpKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4YWN0X3R5cGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYudHlwZSA9PSBPUCBhbmQgc2VsZi5zdHJpbmcgaW4gRVhBQ1RfVE9LRU5fVFlQRVM6CisgICAgICAgICAgICByZXR1cm4gRVhBQ1RfVE9LRU5fVFlQRVNbc2VsZi5zdHJpbmddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlCisKIGRlZiBncm91cCgqY2hvaWNlcyk6IHJldHVybiAnKCcgKyAnfCcuam9pbihjaG9pY2VzKSArICcpJwogZGVmIGFueSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnKicKIGRlZiBtYXliZSgqY2hvaWNlcyk6IHJldHVybiBncm91cCgqY2hvaWNlcykgKyAnPycKQEAgLTc1LDYgKzEyNyw4IEBACiBJbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAorU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKwogIyBUYWlsIGVuZCBvZiAnIHN0cmluZy4KIFNpbmdsZSA9IHIiW14nXFxdKig/OlxcLlteJ1xcXSopKiciCiAjIFRhaWwgZW5kIG9mICIgc3RyaW5nLgpAQCAtODMsMTAgKzEzNywxMCBAQAogU2luZ2xlMyA9IHIiW14nXFxdKig/Oig/OlxcLnwnKD8hJycpKVteJ1xcXSopKicnJyIKICMgVGFpbCBlbmQgb2YgIiIiIHN0cmluZy4KIERvdWJsZTMgPSByJ1teIlxcXSooPzooPzpcXC58Iig/ISIiKSlbXiJcXF0qKSoiIiInCi1UcmlwbGUgPSBncm91cCgiW2JCXT9bclJdPycnJyIsICdbYkJdP1tyUl0/IiIiJykKK1RyaXBsZSA9IGdyb3VwKFN0cmluZ1ByZWZpeCArICInJyciLCBTdHJpbmdQcmVmaXggKyAnIiIiJykKICMgU2luZ2xlLWxpbmUgJyBvciAiIHN0cmluZy4KLVN0cmluZyA9IGdyb3VwKHIiW2JCXT9bclJdPydbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAotICAgICAgICAgICAgICAgcidbYkJdP1tyUl0/IlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqIicpCitTdHJpbmcgPSBncm91cChTdHJpbmdQcmVmaXggKyByIidbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiciLAorICAgICAgICAgICAgICAgU3RyaW5nUHJlZml4ICsgciciW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSoiJykKIAogIyBCZWNhdXNlIG9mIGxlZnRtb3N0LXRoZW4tbG9uZ2VzdCBtYXRjaCBzZW1hbnRpY3MsIGJlIHN1cmUgdG8gcHV0IHRoZQogIyBsb25nZXN0IG9wZXJhdG9ycyBmaXJzdCAoZS5nLiwgaWYgPSBjYW1lIGJlZm9yZSA9PSwgPT0gd291bGQgZ2V0CkBAIC0xMDQsOSArMTU4LDkgQEAKIFRva2VuID0gSWdub3JlICsgUGxhaW5Ub2tlbgogCiAjIEZpcnN0IChvciBvbmx5KSBsaW5lIG9mICcgb3IgIiBzdHJpbmcuCi1Db250U3RyID0gZ3JvdXAociJbYkJdP1tyUl0/J1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqIiArCitDb250U3RyID0gZ3JvdXAoU3RyaW5nUHJlZml4ICsgciInW15cbidcXF0qKD86XFwuW15cbidcXF0qKSoiICsKICAgICAgICAgICAgICAgICBncm91cCgiJyIsIHInXFxccj9cbicpLAotICAgICAgICAgICAgICAgIHInW2JCXT9bclJdPyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKicgKworICAgICAgICAgICAgICAgIFN0cmluZ1ByZWZpeCArIHInIlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqJyArCiAgICAgICAgICAgICAgICAgZ3JvdXAoJyInLCByJ1xcXHI/XG4nKSkKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKQEAgLTExNCwzNyArMTY4LDQ5IEBACiBkZWYgX2NvbXBpbGUoZXhwcik6CiAgICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwciwgcmUuVU5JQ09ERSkKIAotdG9rZW5wcm9nLCBwc2V1ZG9wcm9nLCBzaW5nbGUzcHJvZywgZG91YmxlM3Byb2cgPSBtYXAoCi0gICAgX2NvbXBpbGUsIChUb2tlbiwgUHNldWRvVG9rZW4sIFNpbmdsZTMsIERvdWJsZTMpKQotZW5kcHJvZ3MgPSB7IiciOiBfY29tcGlsZShTaW5nbGUpLCAnIic6IF9jb21waWxlKERvdWJsZSksCi0gICAgICAgICAgICAiJycnIjogc2luZ2xlM3Byb2csICciIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJyJycnIjogc2luZ2xlM3Byb2csICdyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYicnJyI6IHNpbmdsZTNwcm9nLCAnYiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgImJyJycnIjogc2luZ2xlM3Byb2csICdiciIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIlInJyciOiBzaW5nbGUzcHJvZywgJ1IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJCJycnIjogc2luZ2xlM3Byb2csICdCIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiYlInJyciOiBzaW5nbGUzcHJvZywgJ2JSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQnInJyciOiBzaW5nbGUzcHJvZywgJ0JyIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQlInJyciOiBzaW5nbGUzcHJvZywgJ0JSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmV9CitlbmRwYXRzID0geyInIjogU2luZ2xlLCAnIic6IERvdWJsZSwKKyAgICAgICAgICAgIicnJyI6IFNpbmdsZTMsICciIiInOiBEb3VibGUzLAorICAgICAgICAgICAicicnJyI6IFNpbmdsZTMsICdyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImInJyciOiBTaW5nbGUzLCAnYiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiQicnJyI6IFNpbmdsZTMsICdCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImJyJycnIjogU2luZ2xlMywgJ2JyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgImJSJycnIjogU2luZ2xlMywgJ2JSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkJyJycnIjogU2luZ2xlMywgJ0JyIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkJSJycnIjogU2luZ2xlMywgJ0JSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInJiJycnIjogU2luZ2xlMywgJ3JiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlJiJycnIjogU2luZ2xlMywgJ1JiIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInJCJycnIjogU2luZ2xlMywgJ3JCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlJCJycnIjogU2luZ2xlMywgJ1JCIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInUnJyciOiBTaW5nbGUzLCAndSIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiVScnJyI6IFNpbmdsZTMsICdVIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lLAorICAgICAgICAgICAndSc6IE5vbmUsICdVJzogTm9uZX0KIAogdHJpcGxlX3F1b3RlZCA9IHt9CiBmb3IgdCBpbiAoIicnJyIsICciIiInLAogICAgICAgICAgICJyJycnIiwgJ3IiIiInLCAiUicnJyIsICdSIiIiJywKICAgICAgICAgICAiYicnJyIsICdiIiIiJywgIkInJyciLCAnQiIiIicsCiAgICAgICAgICAgImJyJycnIiwgJ2JyIiIiJywgIkJyJycnIiwgJ0JyIiIiJywKLSAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInKToKKyAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInLAorICAgICAgICAgICJyYicnJyIsICdyYiIiIicsICJyQicnJyIsICdyQiIiIicsCisgICAgICAgICAgIlJiJycnIiwgJ1JiIiIiJywgIlJCJycnIiwgJ1JCIiIiJywKKyAgICAgICAgICAidScnJyIsICd1IiIiJywgIlUnJyciLCAnVSIiIicsCisgICAgICAgICAgKToKICAgICB0cmlwbGVfcXVvdGVkW3RdID0gdAogc2luZ2xlX3F1b3RlZCA9IHt9CiBmb3IgdCBpbiAoIiciLCAnIicsCiAgICAgICAgICAgInInIiwgJ3IiJywgIlInIiwgJ1IiJywKICAgICAgICAgICAiYiciLCAnYiInLCAiQiciLCAnQiInLAogICAgICAgICAgICJiciciLCAnYnIiJywgIkJyJyIsICdCciInLAotICAgICAgICAgICJiUiciLCAnYlIiJywgIkJSJyIsICdCUiInICk6CisgICAgICAgICAgImJSJyIsICdiUiInLCAiQlInIiwgJ0JSIicgLAorICAgICAgICAgICJyYiciLCAncmIiJywgInJCJyIsICdyQiInLAorICAgICAgICAgICJSYiciLCAnUmIiJywgIlJCJyIsICdSQiInICwKKyAgICAgICAgICAidSciLCAndSInLCAiVSciLCAnVSInLAorICAgICAgICAgICk6CiAgICAgc2luZ2xlX3F1b3RlZFt0XSA9IHQKIAotZGVsIF9jb21waWxlCi0KIHRhYnNpemUgPSA4CiAKIGNsYXNzIFRva2VuRXJyb3IoRXhjZXB0aW9uKTogcGFzcwpAQCAtMjgxLDYgKzM0NywxMCBAQAogCiAgICAgSWYgbm8gZW5jb2RpbmcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBkZWZhdWx0IG9mICd1dGYtOCcgd2lsbCBiZSByZXR1cm5lZC4KICAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lID0gcmVhZGxpbmUuX19zZWxmX18ubmFtZQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgZmlsZW5hbWUgPSBOb25lCiAgICAgYm9tX2ZvdW5kID0gRmFsc2UKICAgICBlbmNvZGluZyA9IE5vbmUKICAgICBkZWZhdWx0ID0gJ3V0Zi04JwpAQCAtMjk3LDcgKzM2NywxMCBAQAogICAgICAgICAgICAgIyBwZXIgZGVmYXVsdCBlbmNvZGluZy4KICAgICAgICAgICAgIGxpbmVfc3RyaW5nID0gbGluZS5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJpbnZhbGlkIG9yIG1pc3NpbmcgZW5jb2RpbmcgZGVjbGFyYXRpb24iKQorICAgICAgICAgICAgbXNnID0gImludmFsaWQgb3IgbWlzc2luZyBlbmNvZGluZyBkZWNsYXJhdGlvbiIKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG1zZyA9ICd7fSBmb3IgeyFyfScuZm9ybWF0KG1zZywgZmlsZW5hbWUpCisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAKICAgICAgICAgbWF0Y2hlcyA9IGNvb2tpZV9yZS5maW5kYWxsKGxpbmVfc3RyaW5nKQogICAgICAgICBpZiBub3QgbWF0Y2hlczoKQEAgLTMwNywxMiArMzgwLDIxIEBACiAgICAgICAgICAgICBjb2RlYyA9IGxvb2t1cChlbmNvZGluZykKICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgogICAgICAgICAgICAgIyBUaGlzIGJlaGF2aW91ciBtaW1pY3MgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgotICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoInVua25vd24gZW5jb2Rpbmc6ICIgKyBlbmNvZGluZykKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZW5jb2Rpbmc6ICIgKyBlbmNvZGluZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBlbmNvZGluZyBmb3IgeyFyfToge30iLmZvcm1hdChmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQorICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQogCiAgICAgICAgIGlmIGJvbV9mb3VuZDoKICAgICAgICAgICAgIGlmIGVuY29kaW5nICE9ICd1dGYtOCc6CiAgICAgICAgICAgICAgICAgIyBUaGlzIGJlaGF2aW91ciBtaW1pY3MgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgotICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdlbmNvZGluZyBwcm9ibGVtOiB1dGYtOCcpCisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2VuY29kaW5nIHByb2JsZW06IHV0Zi04JworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdlbmNvZGluZyBwcm9ibGVtIGZvciB7IXJ9OiB1dGYtOCcuZm9ybWF0KGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKG1zZykKICAgICAgICAgICAgIGVuY29kaW5nICs9ICctc2lnJwogICAgICAgICByZXR1cm4gZW5jb2RpbmcKIApAQCAtNDY5LDcgKzU1MSw3IEBACiAgICAgICAgICAgICBjb250aW51ZWQgPSAwCiAKICAgICAgICAgd2hpbGUgcG9zIDwgbWF4OgotICAgICAgICAgICAgcHNldWRvbWF0Y2ggPSBwc2V1ZG9wcm9nLm1hdGNoKGxpbmUsIHBvcykKKyAgICAgICAgICAgIHBzZXVkb21hdGNoID0gX2NvbXBpbGUoUHNldWRvVG9rZW4pLm1hdGNoKGxpbmUsIHBvcykKICAgICAgICAgICAgIGlmIHBzZXVkb21hdGNoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzY2FuIGZvciB0b2tlbnMKICAgICAgICAgICAgICAgICBzdGFydCwgZW5kID0gcHNldWRvbWF0Y2guc3BhbigxKQogICAgICAgICAgICAgICAgIHNwb3MsIGVwb3MsIHBvcyA9IChsbnVtLCBzdGFydCksIChsbnVtLCBlbmQpLCBlbmQKQEAgLTQ4NSw3ICs1NjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBlbmRwcm9nc1t0b2tlbl0KKyAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbdG9rZW5dKQogICAgICAgICAgICAgICAgICAgICBlbmRtYXRjaCA9IGVuZHByb2cubWF0Y2gobGluZSwgcG9zKQogICAgICAgICAgICAgICAgICAgICBpZiBlbmRtYXRjaDogICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBvbiBvbmUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZW5kbWF0Y2guZW5kKDApCkBAIC01MDEsOCArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuWy0xXSA9PSAnXG4nOiAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgPSAobG51bSwgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gKGVuZHByb2dzW2luaXRpYWxdIG9yIGVuZHByb2dzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nc1t0b2tlblsyXV0pCisgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1tpbml0aWFsXSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMV1dIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsyXV0pCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyLCBuZWVkY29udCA9IGxpbmVbc3RhcnQ6XSwgMQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtNTMzLDI3ICs2MTYsNjUgQEAKIGRlZiBnZW5lcmF0ZV90b2tlbnMocmVhZGxpbmUpOgogICAgIHJldHVybiBfdG9rZW5pemUocmVhZGxpbmUsIE5vbmUpCiAKK2RlZiBtYWluKCk6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICAjIEhlbHBlciBlcnJvciBoYW5kbGluZyByb3V0aW5lcworICAgIGRlZiBwZXJyb3IobWVzc2FnZSk6CisgICAgICAgIHByaW50KG1lc3NhZ2UsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGRlZiBlcnJvcihtZXNzYWdlLCBmaWxlbmFtZT1Ob25lLCBsb2NhdGlvbj1Ob25lKToKKyAgICAgICAgaWYgbG9jYXRpb246CisgICAgICAgICAgICBhcmdzID0gKGZpbGVuYW1lLCkgKyBsb2NhdGlvbiArIChtZXNzYWdlLCkKKyAgICAgICAgICAgIHBlcnJvcigiJXM6JWQ6JWQ6IGVycm9yOiAlcyIgJSBhcmdzKQorICAgICAgICBlbGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgcGVycm9yKCIlczogZXJyb3I6ICVzIiAlIChmaWxlbmFtZSwgbWVzc2FnZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZXJyb3IoImVycm9yOiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgIyBQYXJzZSB0aGUgYXJndW1lbnRzIGFuZCBvcHRpb25zCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0ncHl0aG9uIC1tIHRva2VuaXplJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KGRlc3Q9J2ZpbGVuYW1lJywgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0nZmlsZW5hbWUucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIGZpbGUgdG8gdG9rZW5pemU7IGRlZmF1bHRzIHRvIHN0ZGluJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWV4YWN0JywgZGVzdD0nZXhhY3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0b2tlbiBuYW1lcyB1c2luZyB0aGUgZXhhY3QgdHlwZScpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIHRyeToKKyAgICAgICAgIyBUb2tlbml6ZSB0aGUgaW5wdXQKKyAgICAgICAgaWYgYXJncy5maWxlbmFtZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gYXJncy5maWxlbmFtZQorICAgICAgICAgICAgd2l0aCBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgIHRva2VucyA9IGxpc3QodG9rZW5pemUoZi5yZWFkbGluZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlbmFtZSA9ICI8c3RkaW4+IgorICAgICAgICAgICAgdG9rZW5zID0gX3Rva2VuaXplKHN5cy5zdGRpbi5yZWFkbGluZSwgTm9uZSkKKworICAgICAgICAjIE91dHB1dCB0aGUgdG9rZW5pemF0aW9uCisgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6CisgICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4udHlwZQorICAgICAgICAgICAgaWYgYXJncy5leGFjdDoKKyAgICAgICAgICAgICAgICB0b2tlbl90eXBlID0gdG9rZW4uZXhhY3RfdHlwZQorICAgICAgICAgICAgdG9rZW5fcmFuZ2UgPSAiJWQsJWQtJWQsJWQ6IiAlICh0b2tlbi5zdGFydCArIHRva2VuLmVuZCkKKyAgICAgICAgICAgIHByaW50KCIlLTIwcyUtMTVzJS0xNXIiICUKKyAgICAgICAgICAgICAgICAgICh0b2tlbl9yYW5nZSwgdG9rX25hbWVbdG9rZW5fdHlwZV0sIHRva2VuLnN0cmluZykpCisgICAgZXhjZXB0IEluZGVudGF0aW9uRXJyb3IgYXMgZXJyOgorICAgICAgICBsaW5lLCBjb2x1bW4gPSBlcnIuYXJnc1sxXVsxOjNdCisgICAgICAgIGVycm9yKGVyci5hcmdzWzBdLCBmaWxlbmFtZSwgKGxpbmUsIGNvbHVtbikpCisgICAgZXhjZXB0IFRva2VuRXJyb3IgYXMgZXJyOgorICAgICAgICBsaW5lLCBjb2x1bW4gPSBlcnIuYXJnc1sxXQorICAgICAgICBlcnJvcihlcnIuYXJnc1swXSwgZmlsZW5hbWUsIChsaW5lLCBjb2x1bW4pKQorICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlcnI6CisgICAgICAgIGVycm9yKGVyciwgZmlsZW5hbWUpCisgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBlcnJvcihlcnIpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgiaW50ZXJydXB0ZWRcbiIpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgIHBlcnJvcigidW5leHBlY3RlZCBlcnJvcjogJXMiICUgZXJyKQorICAgICAgICByYWlzZQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICMgUXVpY2sgc2FuaXR5IGNoZWNrCi0gICAgcyA9IGInJydkZWYgcGFyc2VsaW5lKHNlbGYsIGxpbmUpOgotICAgICAgICAgICAgIiIiUGFyc2UgdGhlIGxpbmUgaW50byBhIGNvbW1hbmQgbmFtZSBhbmQgYSBzdHJpbmcgY29udGFpbmluZwotICAgICAgICAgICAgdGhlIGFyZ3VtZW50cy4gIFJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIChjb21tYW5kLCBhcmdzLCBsaW5lKS4KLSAgICAgICAgICAgICdjb21tYW5kJyBhbmQgJ2FyZ3MnIG1heSBiZSBOb25lIGlmIHRoZSBsaW5lIGNvdWxkbid0IGJlIHBhcnNlZC4KLSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIGxpbmUKLSAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAnPyc6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICdoZWxwICcgKyBsaW5lWzE6XQotICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICchJzoKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdkb19zaGVsbCcpOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gJ3NoZWxsICcgKyBsaW5lWzE6XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBsaW5lCi0gICAgICAgICAgICBpLCBuID0gMCwgbGVuKGxpbmUpCi0gICAgICAgICAgICB3aGlsZSBpIDwgbiBhbmQgbGluZVtpXSBpbiBzZWxmLmlkZW50Y2hhcnM6IGkgPSBpKzEKLSAgICAgICAgICAgIGNtZCwgYXJnID0gbGluZVs6aV0sIGxpbmVbaTpdLnN0cmlwKCkKLSAgICAgICAgICAgIHJldHVybiBjbWQsIGFyZywgbGluZQotICAgICcnJwotICAgIGZvciB0b2sgaW4gdG9rZW5pemUoaXRlcihzLnNwbGl0bGluZXMoKSkuX19uZXh0X18pOgotICAgICAgICBwcmludCh0b2spCisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggODUwMzY5Yi4uMzE3YjVmZCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtMzksOCArMzksOCBAQAogCiAgICMgY3JlYXRlIGEgVHJhY2Ugb2JqZWN0LCB0ZWxsaW5nIGl0IHdoYXQgdG8gaWdub3JlLCBhbmQgd2hldGhlciB0bwogICAjIGRvIHRyYWNpbmcgb3IgbGluZS1jb3VudGluZyBvciBib3RoLgotICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsXSwgdHJhY2U9MCwKLSAgICAgICAgICAgICAgICAgICAgY291bnQ9MSkKKyAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLAorICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQogICAjIHJ1biB0aGUgbmV3IGNvbW1hbmQgdXNpbmcgdGhlIGdpdmVuIHRyYWNlcgogICB0cmFjZXIucnVuKCdtYWluKCknKQogICAjIG1ha2UgYSByZXBvcnQsIHBsYWNpbmcgb3V0cHV0IGluIC90bXAKQEAgLTQ4LDE5ICs0OCwyMCBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KLWltcG9ydCBpbwogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdG9rZW4KIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yNDQsOCArMjQ1LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGRvZXMgbm90IHJlZmVyIHRvIGEgZmlsZQogICAgICAgICB3ZSB3YW50IHRvIGhhdmUgcmVwb3J0ZWQuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gKGZpbGVuYW1lID09ICI8c3RyaW5nPiIgb3IKLSAgICAgICAgICAgICAgICBmaWxlbmFtZS5zdGFydHN3aXRoKCI8ZG9jdGVzdCAiKSkKKyAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnN0YXJ0c3dpdGgoJzwnKSBhbmQgZmlsZW5hbWUuZW5kc3dpdGgoJz4nKQogCiAgICAgZGVmIHVwZGF0ZShzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIk1lcmdlIGluIHRoZSBkYXRhIGZyb20gYW5vdGhlciBDb3ZlcmFnZVJlc3VsdHMiIiIKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogICAgICAgICBzZWxmLl9jYWxsZXJfY2FjaGUgPSB7fQogICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCiAgICAgICAgIGlmIHRpbWluZzoKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBfdGltZSgpCiAgICAgICAgIGlmIGNvdW50Y2FsbGVyczoKICAgICAgICAgICAgIHNlbGYuZ2xvYmFsdHJhY2UgPSBzZWxmLmdsb2JhbHRyYWNlX3RyYWNrY2FsbGVycwogICAgICAgICBlbGlmIGNvdW50ZnVuY3M6CkBAIC02MTUsNyArNjE1LDcgQEAKICAgICAgICAgICAgIHNlbGYuY291bnRzW2tleV0gPSBzZWxmLmNvdW50cy5nZXQoa2V5LCAwKSArIDEKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGFydF90aW1lOgotICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlICh0aW1lLnRpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKF90aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQogICAgICAgICAgICAgYm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQogICAgICAgICAgICAgcHJpbnQoIiVzKCVkKTogJXMiICUgKGJuYW1lLCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykpLCBlbmQ9JycpCkBAIC02MjgsNyArNjI4LDcgQEAKICAgICAgICAgICAgIGxpbmVubyA9IGZyYW1lLmZfbGluZW5vCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RhcnRfdGltZToKLSAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlIChfdGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKICAgICAgICAgICAgIGJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICAgICAgICAgIHByaW50KCIlcyglZCk6ICVzIiAlIChibmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pKSwgZW5kPScnKQpAQCAtNzUwLDEwICs3NTAsMTAgQEAKICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCiAKICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQogICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlYmFjay5weSBiL0xpYi90cmFjZWJhY2sucHkKaW5kZXggOGQ0ZTk2ZS4uZWViOWU3MyAxMDA2NDQKLS0tIGEvTGliL3RyYWNlYmFjay5weQorKysgYi9MaWIvdHJhY2ViYWNrLnB5CkBAIC0xMTksMTUgKzExOSwxNiBAQAogICAgICAgICBzZWVuID0gc2V0KCkKICAgICBzZWVuLmFkZChleGMpCiAgICAgaXRzID0gW10KKyAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCiAgICAgY2F1c2UgPSBleGMuX19jYXVzZV9fCiAgICAgaWYgY2F1c2UgaXMgbm90IE5vbmUgYW5kIGNhdXNlIG5vdCBpbiBzZWVuOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNhdXNlLCBOb25lLCBzZWVuKSkKKyAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjYXVzZSwgRmFsc2UsIHNlZW4pKQogICAgICAgICBpdHMuYXBwZW5kKFsoX2NhdXNlX21lc3NhZ2UsIE5vbmUpXSkKLSAgICBlbHNlOgotICAgICAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCi0gICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNvbnRleHQgbm90IGluIHNlZW46Ci0gICAgICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQotICAgICAgICAgICAgaXRzLmFwcGVuZChbKF9jb250ZXh0X21lc3NhZ2UsIE5vbmUpXSkKKyAgICBlbGlmIChjb250ZXh0IGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgIG5vdCBleGMuX19zdXBwcmVzc19jb250ZXh0X18gYW5kCisgICAgICAgICAgY29udGV4dCBub3QgaW4gc2Vlbik6CisgICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY29udGV4dCwgTm9uZSwgc2VlbikpCisgICAgICAgIGl0cy5hcHBlbmQoWyhfY29udGV4dF9tZXNzYWdlLCBOb25lKV0pCiAgICAgaXRzLmFwcGVuZChbKGV4YywgY3VzdG9tX3RiIG9yIGV4Yy5fX3RyYWNlYmFja19fKV0pCiAgICAgIyBpdGVydG9vbHMuY2hhaW4gaXMgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBhbmQgbWF5IGJlIHVuYXZhaWxhYmxlCiAgICAgZm9yIGl0IGluIGl0czoKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGUucHkgYi9MaWIvdHVydGxlLnB5CmluZGV4IGFjMGMzMmMuLmE0NDc0MzMgMTAwNjQ0Ci0tLSBhL0xpYi90dXJ0bGUucHkKKysrIGIvTGliL3R1cnRsZS5weQpAQCAtMTA4LDcgKzEwOCw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCBtYXRoCiBpbXBvcnQgdGltZQotaW1wb3J0IG9zCiBpbXBvcnQgaW5zcGVjdAogCiBmcm9tIG9zLnBhdGggaW1wb3J0IGlzZmlsZSwgc3BsaXQsIGpvaW4KZGlmZiAtLWdpdCBhL0xpYi90eXBlcy5weSBiL0xpYi90eXBlcy5weQppbmRleCBhYjM1NGQxLi5jZmQwOWVhIDEwMDY0NAotLS0gYS9MaWIvdHlwZXMucHkKKysrIGIvTGliL3R5cGVzLnB5CkBAIC0xMiw2ICsxMiw4IEBACiBGdW5jdGlvblR5cGUgPSB0eXBlKF9mKQogTGFtYmRhVHlwZSA9IHR5cGUobGFtYmRhOiBOb25lKSAgICAgICAgICMgU2FtZSBhcyBGdW5jdGlvblR5cGUKIENvZGVUeXBlID0gdHlwZShfZi5fX2NvZGVfXykKK01hcHBpbmdQcm94eVR5cGUgPSB0eXBlKHR5cGUuX19kaWN0X18pCitTaW1wbGVOYW1lc3BhY2UgPSB0eXBlKHN5cy5pbXBsZW1lbnRhdGlvbikKIAogZGVmIF9nKCk6CiAgICAgeWllbGQgMQpAQCAtMzksMyArNDEsNjEgQEAKIE1lbWJlckRlc2NyaXB0b3JUeXBlID0gdHlwZShGdW5jdGlvblR5cGUuX19nbG9iYWxzX18pCiAKIGRlbCBzeXMsIF9mLCBfZywgX0MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgZm9yIGV4cG9ydAorCisKKyMgUHJvdmlkZSBhIFBFUCAzMTE1IGNvbXBsaWFudCBtZWNoYW5pc20gZm9yIGNsYXNzIGNyZWF0aW9uCitkZWYgbmV3X2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUsIGV4ZWNfYm9keT1Ob25lKToKKyAgICAiIiJDcmVhdGUgYSBjbGFzcyBvYmplY3QgZHluYW1pY2FsbHkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4iIiIKKyAgICBtZXRhLCBucywga3dkcyA9IHByZXBhcmVfY2xhc3MobmFtZSwgYmFzZXMsIGt3ZHMpCisgICAgaWYgZXhlY19ib2R5IGlzIG5vdCBOb25lOgorICAgICAgICBleGVjX2JvZHkobnMpCisgICAgcmV0dXJuIG1ldGEobmFtZSwgYmFzZXMsIG5zLCAqKmt3ZHMpCisKK2RlZiBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUpOgorICAgICIiIkNhbGwgdGhlIF9fcHJlcGFyZV9fIG1ldGhvZCBvZiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzLgorCisgICAgUmV0dXJucyAobWV0YWNsYXNzLCBuYW1lc3BhY2UsIGt3ZHMpIGFzIGEgMy10dXBsZQorCisgICAgKm1ldGFjbGFzcyogaXMgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcworICAgICpuYW1lc3BhY2UqIGlzIHRoZSBwcmVwYXJlZCBjbGFzcyBuYW1lc3BhY2UKKyAgICAqa3dkcyogaXMgYW4gdXBkYXRlZCBjb3B5IG9mIHRoZSBwYXNzZWQgaW4ga3dkcyBhcmd1bWVudCB3aXRoIGFueQorICAgICdtZXRhY2xhc3MnIGVudHJ5IHJlbW92ZWQuIElmIG5vIGt3ZHMgYXJndW1lbnQgaXMgcGFzc2VkIGluLCB0aGlzIHdpbGwKKyAgICBiZSBhbiBlbXB0eSBkaWN0LgorICAgICIiIgorICAgIGlmIGt3ZHMgaXMgTm9uZToKKyAgICAgICAga3dkcyA9IHt9CisgICAgZWxzZToKKyAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykgIyBEb24ndCBhbHRlciB0aGUgcHJvdmlkZWQgbWFwcGluZworICAgIGlmICdtZXRhY2xhc3MnIGluIGt3ZHM6CisgICAgICAgIG1ldGEgPSBrd2RzLnBvcCgnbWV0YWNsYXNzJykKKyAgICBlbHNlOgorICAgICAgICBpZiBiYXNlczoKKyAgICAgICAgICAgIG1ldGEgPSB0eXBlKGJhc2VzWzBdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWV0YSA9IHR5cGUKKyAgICBpZiBpc2luc3RhbmNlKG1ldGEsIHR5cGUpOgorICAgICAgICAjIHdoZW4gbWV0YSBpcyBhIHR5cGUsIHdlIGZpcnN0IGRldGVybWluZSB0aGUgbW9zdC1kZXJpdmVkIG1ldGFjbGFzcworICAgICAgICAjIGluc3RlYWQgb2YgaW52b2tpbmcgdGhlIGluaXRpYWwgY2FuZGlkYXRlIGRpcmVjdGx5CisgICAgICAgIG1ldGEgPSBfY2FsY3VsYXRlX21ldGEobWV0YSwgYmFzZXMpCisgICAgaWYgaGFzYXR0cihtZXRhLCAnX19wcmVwYXJlX18nKToKKyAgICAgICAgbnMgPSBtZXRhLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpCisgICAgZWxzZToKKyAgICAgICAgbnMgPSB7fQorICAgIHJldHVybiBtZXRhLCBucywga3dkcworCitkZWYgX2NhbGN1bGF0ZV9tZXRhKG1ldGEsIGJhc2VzKToKKyAgICAiIiJDYWxjdWxhdGUgdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MuIiIiCisgICAgd2lubmVyID0gbWV0YQorICAgIGZvciBiYXNlIGluIGJhc2VzOgorICAgICAgICBiYXNlX21ldGEgPSB0eXBlKGJhc2UpCisgICAgICAgIGlmIGlzc3ViY2xhc3Mod2lubmVyLCBiYXNlX21ldGEpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhiYXNlX21ldGEsIHdpbm5lcik6CisgICAgICAgICAgICB3aW5uZXIgPSBiYXNlX21ldGEKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtZXRhY2xhc3MgY29uZmxpY3Q6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbWV0YWNsYXNzIG9mIGEgZGVyaXZlZCBjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIChub24tc3RyaWN0KSBzdWJjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAib2YgdGhlIG1ldGFjbGFzc2VzIG9mIGFsbCBpdHMgYmFzZXMiKQorICAgIHJldHVybiB3aW5uZXIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9fX21haW5fXy5weSBiL0xpYi91bml0dGVzdC9fX21haW5fXy5weQppbmRleCA3MzIwMDUwLi43OThlYmMwIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkKKysrIGIvTGliL3VuaXR0ZXN0L19fbWFpbl9fLnB5CkBAIC0yLDcgKzIsMTQgQEAKIAogaW1wb3J0IHN5cwogaWYgc3lzLmFyZ3ZbMF0uZW5kc3dpdGgoIl9fbWFpbl9fLnB5Iik6Ci0gICAgc3lzLmFyZ3ZbMF0gPSAicHl0aG9uIC1tIHVuaXR0ZXN0IgorICAgIGltcG9ydCBvcy5wYXRoCisgICAgIyBXZSBjaGFuZ2Ugc3lzLmFyZ3ZbMF0gdG8gbWFrZSBoZWxwIG1lc3NhZ2UgbW9yZSB1c2VmdWwKKyAgICAjIHVzZSBleGVjdXRhYmxlIHdpdGhvdXQgcGF0aCwgdW5xdW90ZWQKKyAgICAjIChpdCdzIGp1c3QgYSBoaW50IGFueXdheSkKKyAgICAjIChpZiB5b3UgaGF2ZSBzcGFjZXMgaW4geW91ciBleGVjdXRhYmxlIHlvdSBnZXQgd2hhdCB5b3UgZGVzZXJ2ZSEpCisgICAgZXhlY3V0YWJsZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmV4ZWN1dGFibGUpCisgICAgc3lzLmFyZ3ZbMF0gPSBleGVjdXRhYmxlICsgIiAtbSB1bml0dGVzdCIKKyAgICBkZWwgb3MKIAogX191bml0dGVzdCA9IFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkgYi9MaWIvdW5pdHRlc3QvY2FzZS5weQppbmRleCBlNjI3Y2NhLi4yOGYwYTJkIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvY2FzZS5weQpAQCAtOSw4ICs5LDcgQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogCiBmcm9tIC4gaW1wb3J0IHJlc3VsdAotZnJvbSAudXRpbCBpbXBvcnQgKHN0cmNsYXNzLCBzYWZlX3JlcHIsIHNvcnRlZF9saXN0X2RpZmZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgdW5vcmRlcmFibGVfbGlzdF9kaWZmZXJlbmNlLCBfY291bnRfZGlmZl9hbGxfcHVycG9zZSwKK2Zyb20gLnV0aWwgaW1wb3J0IChzdHJjbGFzcywgc2FmZV9yZXByLCBfY291bnRfZGlmZl9hbGxfcHVycG9zZSwKICAgICAgICAgICAgICAgICAgICBfY291bnRfZGlmZl9oYXNoYWJsZSkKIAogX191bml0dGVzdCA9IFRydWUKQEAgLTEwNCw5ICsxMDMsOSBAQAogY2xhc3MgX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHRlc3RfY2FzZSwgY2FsbGFibGVfb2JqPU5vbmUsCi0gICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleD1Ob25lKToKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3RlZAotICAgICAgICBzZWxmLmZhaWx1cmVFeGNlcHRpb24gPSB0ZXN0X2Nhc2UuZmFpbHVyZUV4Y2VwdGlvbgorICAgICAgICBzZWxmLnRlc3RfY2FzZSA9IHRlc3RfY2FzZQogICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IGNhbGxhYmxlX29iai5fX25hbWVfXwpAQCAtMTE3LDYgKzExNiwyNCBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkX3JlZ2V4LCAoYnl0ZXMsIHN0cikpOgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByZS5jb21waWxlKGV4cGVjdGVkX3JlZ2V4KQogICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4ID0gZXhwZWN0ZWRfcmVnZXgKKyAgICAgICAgc2VsZi5tc2cgPSBOb25lCisKKyAgICBkZWYgX3JhaXNlRmFpbHVyZShzZWxmLCBzdGFuZGFyZE1zZyk6CisgICAgICAgIG1zZyA9IHNlbGYudGVzdF9jYXNlLl9mb3JtYXRNZXNzYWdlKHNlbGYubXNnLCBzdGFuZGFyZE1zZykKKyAgICAgICAgcmFpc2Ugc2VsZi50ZXN0X2Nhc2UuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIG5hbWUsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIElmIGNhbGxhYmxlX29iaiBpcyBOb25lLCBhc3NlcnRSYWlzZXMvV2FybnMgaXMgYmVpbmcgdXNlZCBhcyBhCisgICAgICAgIGNvbnRleHQgbWFuYWdlciwgc28gY2hlY2sgZm9yIGEgJ21zZycga3dhcmcgYW5kIHJldHVybiBzZWxmLgorICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgbm90IE5vbmUsIGNhbGwgaXQgcGFzc2luZyBhcmdzIGFuZCBrd2FyZ3MuCisgICAgICAgICIiIgorICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubXNnID0ga3dhcmdzLnBvcCgnbXNnJywgTm9uZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIHdpdGggc2VsZjoKKyAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisKIAogCiBjbGFzcyBfQXNzZXJ0UmFpc2VzQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgpAQCAtMTMyLDExICsxNDksMTAgQEAKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICBleGNfbmFtZSA9IHN0cihzZWxmLmV4cGVjdGVkKQogICAgICAgICAgICAgaWYgc2VsZi5vYmpfbmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgcmFpc2VkIGJ5IHsxfSIKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSwgc2VsZi5vYmpfbmFtZSkpCisgICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgcmFpc2VkIGJ5IHt9Ii5mb3JtYXQoZXhjX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbigiezB9IG5vdCByYWlzZWQiCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUpKQorICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHJhaXNlZCIuZm9ybWF0KGV4Y19uYW1lKSkKICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoZXhjX3R5cGUsIHNlbGYuZXhwZWN0ZWQpOgogICAgICAgICAgICAgIyBsZXQgdW5leHBlY3RlZCBleGNlcHRpb25zIHBhc3MgdGhyb3VnaAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xNDcsOCArMTYzLDggQEAKIAogICAgICAgICBleHBlY3RlZF9yZWdleCA9IHNlbGYuZXhwZWN0ZWRfcmVnZXgKICAgICAgICAgaWYgbm90IGV4cGVjdGVkX3JlZ2V4LnNlYXJjaChzdHIoZXhjX3ZhbHVlKSk6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oJyIlcyIgZG9lcyBub3QgbWF0Y2ggIiVzIicgJQotICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihleGNfdmFsdWUpKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgnInt9IiBkb2VzIG5vdCBtYXRjaCAie30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZXhjX3ZhbHVlKSkpCiAgICAgICAgIHJldHVybiBUcnVlCiAKIApAQCAtMTkyLDE0ICsyMDgsMTMgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAjIE5vdyB3ZSBzaW1wbHkgdHJ5IHRvIGNob29zZSBhIGhlbHBmdWwgZmFpbHVyZSBtZXNzYWdlCiAgICAgICAgIGlmIGZpcnN0X21hdGNoaW5nIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCciJXMiIGRvZXMgbm90IG1hdGNoICIlcyInICUKLSAgICAgICAgICAgICAgICAgICAgIChzZWxmLmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihmaXJzdF9tYXRjaGluZykpKQorICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCcie30iIGRvZXMgbm90IG1hdGNoICJ7fSInLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGZpcnN0X21hdGNoaW5nKSkpCiAgICAgICAgIGlmIHNlbGYub2JqX25hbWU6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgdHJpZ2dlcmVkIGJ5IHsxfSIKLSAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lLCBzZWxmLm9ial9uYW1lKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHRyaWdnZXJlZCBieSB7fSIuZm9ybWF0KGV4Y19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgdHJpZ2dlcmVkIgotICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUpKQorICAgICAgICAgICAgc2VsZi5fcmFpc2VGYWlsdXJlKCJ7fSBub3QgdHJpZ2dlcmVkIi5mb3JtYXQoZXhjX25hbWUpKQogCiAKIGNsYXNzIFRlc3RDYXNlKG9iamVjdCk6CkBAIC00NTIsNyArNDY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRlc3RSZXN1bHQgaGFzIG5vIGFkZEV4cGVjdGVkRmFpbHVyZSBtZXRob2QsIHJlcG9ydGluZyBhcyBwYXNzZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGRTdWNjZXNzKHNlbGYpCi0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJlc3VsdC5zdG9wVGVzdChzZWxmKQogICAgICAgICAgICAgaWYgb3JpZ19yZXN1bHQgaXMgTm9uZToKQEAgLTUyNiw3ICs1NDEsNiBAQAogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICAnJXMgOiAlcycgJSAoc2FmZV9yZXByKHN0YW5kYXJkTXNnKSwgc2FmZV9yZXByKG1zZykpCiAKLQogICAgIGRlZiBhc3NlcnRSYWlzZXMoc2VsZiwgZXhjQ2xhc3MsIGNhbGxhYmxlT2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkZhaWwgdW5sZXNzIGFuIGV4Y2VwdGlvbiBvZiBjbGFzcyBleGNDbGFzcyBpcyB0aHJvd24KICAgICAgICAgICAgYnkgY2FsbGFibGVPYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKQEAgLTU0MSw2ICs1NTUsOSBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU29tZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgICAgICAgQW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAnbXNnJyBjYW4gYmUgcHJvdmlkZWQgd2hlbiBhc3NlcnRSYWlzZXMKKyAgICAgICAgICAgaXMgdXNlZCBhcyBhIGNvbnRleHQgb2JqZWN0LgorCiAgICAgICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIGV4Y2VwdGlvbiBhcwogICAgICAgICAgICB0aGUgJ2V4Y2VwdGlvbicgYXR0cmlidXRlLiBUaGlzIGFsbG93cyB5b3UgdG8gaW5zcGVjdCB0aGUKICAgICAgICAgICAgZXhjZXB0aW9uIGFmdGVyIHRoZSBhc3NlcnRpb246OgpAQCAtNTUxLDI1ICs1NjgsMjUgQEAKICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX2V4Y2VwdGlvbi5lcnJvcl9jb2RlLCAzKQogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4Y0NsYXNzLCBzZWxmLCBjYWxsYWJsZU9iaikKLSAgICAgICAgaWYgY2FsbGFibGVPYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlT2JqKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXMnLCBjYWxsYWJsZU9iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFdhcm5zKHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhIHdhcm5pbmcgb2YgY2xhc3Mgd2FybkNsYXNzIGlzIHRyaWdnZXJlZAotICAgICAgICAgICBieSBjYWxsYWJsZU9iaiB3aGVuIGludm9rZWQgd2l0aCBhcmd1bWVudHMgYXJncyBhbmQga2V5d29yZAorICAgICAgICAgICBieSBjYWxsYWJsZV9vYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKICAgICAgICAgICAgYXJndW1lbnRzIGt3YXJncy4gIElmIGEgZGlmZmVyZW50IHR5cGUgb2Ygd2FybmluZyBpcwogICAgICAgICAgICB0cmlnZ2VyZWQsIGl0IHdpbGwgbm90IGJlIGhhbmRsZWQ6IGRlcGVuZGluZyBvbiB0aGUgb3RoZXIKICAgICAgICAgICAgd2FybmluZyBmaWx0ZXJpbmcgcnVsZXMgaW4gZWZmZWN0LCBpdCBtaWdodCBiZSBzaWxlbmNlZCwgcHJpbnRlZAogICAgICAgICAgICBvdXQsIG9yIHJhaXNlZCBhcyBhbiBleGNlcHRpb24uCiAKLSAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggY2FsbGFibGVPYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCisgICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlX29iaiBvbWl0dGVkIG9yIE5vbmUsIHdpbGwgcmV0dXJuIGEKICAgICAgICAgICAgY29udGV4dCBvYmplY3QgdXNlZCBsaWtlIHRoaXM6OgogCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFNvbWVXYXJuaW5nKToKICAgICAgICAgICAgICAgICAgICAgZG9fc29tZXRoaW5nKCkKIAorICAgICAgICAgICBBbiBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICdtc2cnIGNhbiBiZSBwcm92aWRlZCB3aGVuIGFzc2VydFdhcm5zCisgICAgICAgICAgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG9iamVjdC4KKwogICAgICAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBtYXRjaGluZwogICAgICAgICAgICB3YXJuaW5nIGFzIHRoZSAnd2FybmluZycgYXR0cmlidXRlOyBzaW1pbGFybHksIHRoZSAnZmlsZW5hbWUnCiAgICAgICAgICAgIGFuZCAnbGluZW5vJyBhdHRyaWJ1dGVzIGdpdmUgeW91IGluZm9ybWF0aW9uIGFib3V0IHRoZSBsaW5lCkBAIC01ODIsMTAgKzU5OSw3IEBACiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV93YXJuaW5nLnNvbWVfYXR0cmlidXRlLCAxNDcpCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmopCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJucycsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIF9nZXRBc3NlcnRFcXVhbGl0eUZ1bmMoc2VsZiwgZmlyc3QsIHNlY29uZCk6CiAgICAgICAgICIiIkdldCBhIGRldGFpbGVkIGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHRoZSB0eXBlcyBvZiB0aGUgdHdvIGFyZ3MuCkBAIC05NTEsNDggKzk2NSw2IEBACiAKICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCiAKLSAgICBkZWYgYXNzZXJ0U2FtZUVsZW1lbnRzKHNlbGYsIGV4cGVjdGVkX3NlcSwgYWN0dWFsX3NlcSwgbXNnPU5vbmUpOgotICAgICAgICAiIiJBbiB1bm9yZGVyZWQgc2VxdWVuY2Ugc3BlY2lmaWMgY29tcGFyaXNvbi4KLQotICAgICAgICBSYWlzZXMgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGxpc3Rpbmcgd2hpY2ggZWxlbWVudHMgb2YgZXhwZWN0ZWRfc2VxCi0gICAgICAgIGFyZSBtaXNzaW5nIGZyb20gYWN0dWFsX3NlcSBhbmQgdmljZSB2ZXJzYSBpZiBhbnkuCi0KLSAgICAgICAgRHVwbGljYXRlIGVsZW1lbnRzIGFyZSBpZ25vcmVkIHdoZW4gY29tcGFyaW5nICpleHBlY3RlZF9zZXEqIGFuZAotICAgICAgICAqYWN0dWFsX3NlcSouIEl0IGlzIHRoZSBlcXVpdmFsZW50IG9mIGBgYXNzZXJ0RXF1YWwoc2V0KGV4cGVjdGVkKSwKLSAgICAgICAgc2V0KGFjdHVhbCkpYGAgYnV0IGl0IHdvcmtzIHdpdGggc2VxdWVuY2VzIG9mIHVuaGFzaGFibGUgb2JqZWN0cyBhcwotICAgICAgICB3ZWxsLgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZ3Mud2FybignYXNzZXJ0U2FtZUVsZW1lbnRzIGlzIGRlcHJlY2F0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZXQoZXhwZWN0ZWRfc2VxKQotICAgICAgICAgICAgYWN0dWFsID0gc2V0KGFjdHVhbF9zZXEpCi0gICAgICAgICAgICBtaXNzaW5nID0gc29ydGVkKGV4cGVjdGVkLmRpZmZlcmVuY2UoYWN0dWFsKSkKLSAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSBzb3J0ZWQoYWN0dWFsLmRpZmZlcmVuY2UoZXhwZWN0ZWQpKQotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgIyBGYWxsIGJhY2sgdG8gc2xvd2VyIGxpc3QtY29tcGFyZSBpZiBhbnkgb2YgdGhlIG9iamVjdHMgYXJlCi0gICAgICAgICAgICAjIG5vdCBoYXNoYWJsZS4KLSAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChleHBlY3RlZF9zZXEpCi0gICAgICAgICAgICBhY3R1YWwgPSBsaXN0KGFjdHVhbF9zZXEpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWQuc29ydCgpCi0gICAgICAgICAgICAgICAgYWN0dWFsLnNvcnQoKQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICBtaXNzaW5nLCB1bmV4cGVjdGVkID0gdW5vcmRlcmFibGVfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtaXNzaW5nLCB1bmV4cGVjdGVkID0gc29ydGVkX2xpc3RfZGlmZmVyZW5jZShleHBlY3RlZCwgYWN0dWFsKQotICAgICAgICBlcnJvcnMgPSBbXQotICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgnRXhwZWN0ZWQsIGJ1dCBtaXNzaW5nOlxuICAgICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVfcmVwcihtaXNzaW5nKSkKLSAgICAgICAgaWYgdW5leHBlY3RlZDoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoJ1VuZXhwZWN0ZWQsIGJ1dCBwcmVzZW50OlxuICAgICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVfcmVwcih1bmV4cGVjdGVkKSkKLSAgICAgICAgaWYgZXJyb3JzOgotICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnXG4nLmpvaW4oZXJyb3JzKQotICAgICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCi0KIAogICAgIGRlZiBhc3NlcnRDb3VudEVxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZz1Ob25lKToKICAgICAgICAgIiIiQW4gdW5vcmRlcmVkIHNlcXVlbmNlIGNvbXBhcmlzb24gYXNzZXJ0aW5nIHRoYXQgdGhlIHNhbWUgZWxlbWVudHMsCkBAIC0xMDM3LDggKzEwMDksOCBAQAogICAgICAgICAgICAgaWYgKGxlbihmaXJzdCkgPiBzZWxmLl9kaWZmVGhyZXNob2xkIG9yCiAgICAgICAgICAgICAgICAgbGVuKHNlY29uZCkgPiBzZWxmLl9kaWZmVGhyZXNob2xkKToKICAgICAgICAgICAgICAgICBzZWxmLl9iYXNlQXNzZXJ0RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnKQotICAgICAgICAgICAgZmlyc3RsaW5lcyA9IGZpcnN0LnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgICAgIHNlY29uZGxpbmVzID0gc2Vjb25kLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIGZpcnN0bGluZXMgPSBmaXJzdC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgICAgICBzZWNvbmRsaW5lcyA9IHNlY29uZC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICBpZiBsZW4oZmlyc3RsaW5lcykgPT0gMSBhbmQgZmlyc3Quc3RyaXAoJ1xyXG4nKSA9PSBmaXJzdDoKICAgICAgICAgICAgICAgICBmaXJzdGxpbmVzID0gW2ZpcnN0ICsgJ1xuJ10KICAgICAgICAgICAgICAgICBzZWNvbmRsaW5lcyA9IFtzZWNvbmQgKyAnXG4nXQpAQCAtMTEwNiwxNSArMTA3OCwxNSBAQAogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB1c2VkIGluIGNhc2Ugb2YgZmFpbHVyZS4gQ2FuIG9ubHkgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGFzc2VydFJhaXNlc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAgICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgogICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBzZWxmLCBjYWxsYWJsZV9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCkKLSAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJuc1JlZ2V4KHNlbGYsIGV4cGVjdGVkX3dhcm5pbmcsIGV4cGVjdGVkX3JlZ2V4LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlX29iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTEyOCwxNSArMTEwMCwxNCBAQAogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCiAgICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB1c2VkIGluIGNhc2Ugb2YgZmFpbHVyZS4gQ2FuIG9ubHkgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICB3aGVuIGFzc2VydFdhcm5zUmVnZXggaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KICAgICAgICAgICAgIGFyZ3M6IEV4dHJhIGFyZ3MuCiAgICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYsIGNhbGxhYmxlX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRXYXJuc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0UmVnZXgoc2VsZiwgdGV4dCwgZXhwZWN0ZWRfcmVnZXgsIG1zZz1Ob25lKToKICAgICAgICAgIiIiRmFpbCB0aGUgdGVzdCB1bmxlc3MgdGhlIHRleHQgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21haW4ucHkgYi9MaWIvdW5pdHRlc3QvbWFpbi5weQppbmRleCA1NWQ0ZTRiLi5hMjVhMmY4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbWFpbi5weQorKysgYi9MaWIvdW5pdHRlc3QvbWFpbi5weQpAQCAtMSw4ICsxLDggQEAKICIiIlVuaXR0ZXN0IG1haW4gcHJvZ3JhbSIiIgogCiBpbXBvcnQgc3lzCitpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCBvcwotaW1wb3J0IHR5cGVzCiAKIGZyb20gLiBpbXBvcnQgbG9hZGVyLCBydW5uZXIKIGZyb20gLnNpZ25hbHMgaW1wb3J0IGluc3RhbGxIYW5kbGVyCkBAIC03Nyw2ICs3Nyw3IEBACiBkZWYgX2NvbnZlcnRfbmFtZXMobmFtZXMpOgogICAgIHJldHVybiBbX2NvbnZlcnRfbmFtZShuYW1lKSBmb3IgbmFtZSBpbiBuYW1lc10KIAorCiBjbGFzcyBUZXN0UHJvZ3JhbShvYmplY3QpOgogICAgICIiIkEgY29tbWFuZC1saW5lIHByb2dyYW0gdGhhdCBydW5zIGEgc2V0IG9mIHRlc3RzOyB0aGlzIGlzIHByaW1hcmlseQogICAgICAgIGZvciBtYWtpbmcgdGVzdCBtb2R1bGVzIGNvbnZlbmllbnRseSBleGVjdXRhYmxlLgpAQCAtMTQzLDMzICsxNDQsOSBAQAogICAgICAgICAgICAgc2VsZi5fZG9fZGlzY292ZXJ5KGFyZ3ZbMjpdKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaW1wb3J0IGdldG9wdAotICAgICAgICBsb25nX29wdHMgPSBbJ2hlbHAnLCAndmVyYm9zZScsICdxdWlldCcsICdmYWlsZmFzdCcsICdjYXRjaCcsICdidWZmZXInXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmd2WzE6XSwgJ2hIdnFmY2InLCBsb25nX29wdHMpCi0gICAgICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgotICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQobXNnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIG9wdCwgdmFsdWUgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1oJywnLUgnLCctLWhlbHAnKToKLSAgICAgICAgICAgICAgICBzZWxmLnVzYWdlRXhpdCgpCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctcScsJy0tcXVpZXQnKToKLSAgICAgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDAKLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy12JywnLS12ZXJib3NlJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAyCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctZicsJy0tZmFpbGZhc3QnKToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmZhaWxmYXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbGZhc3QgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWYgaXMgbm90IHZhbGlkPwotICAgICAgICAgICAgaWYgb3B0IGluICgnLWMnLCctLWNhdGNoJyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jYXRjaGJyZWFrIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuY2F0Y2hicmVhayA9IFRydWUKLSAgICAgICAgICAgICAgICAjIFNob3VsZCB0aGlzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiAtYyBpcyBub3QgdmFsaWQ/Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCctYicsJy0tYnVmZmVyJyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5idWZmZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWIgaXMgbm90IHZhbGlkPworICAgICAgICBwYXJzZXIgPSBzZWxmLl9nZXRPcHRQYXJzZXIoKQorICAgICAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJndlsxOl0pCisgICAgICAgIHNlbGYuX3NldEF0dHJpYnV0ZXNGcm9tT3B0aW9ucyhvcHRpb25zKQogCiAgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwIGFuZCBzZWxmLm1vZHVsZSBpcyBOb25lOgogICAgICAgICAgICAgIyB0aGlzIGFsbG93cyAicHl0aG9uIC1tIHVuaXR0ZXN0IC12IiB0byBzdGlsbCB3b3JrIGZvcgpAQCAtMTk3LDE0ICsxNzQsMTQgQEAKICAgICAgICAgICAgIHNlbGYudGVzdCA9IHNlbGYudGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoc2VsZi50ZXN0TmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlKQogCi0gICAgZGVmIF9kb19kaXNjb3Zlcnkoc2VsZiwgYXJndiwgTG9hZGVyPWxvYWRlci5UZXN0TG9hZGVyKToKLSAgICAgICAgIyBoYW5kbGUgY29tbWFuZCBsaW5lIGFyZ3MgZm9yIHRlc3QgZGlzY292ZXJ5Ci0gICAgICAgIHNlbGYucHJvZ05hbWUgPSAnJXMgZGlzY292ZXInICUgc2VsZi5wcm9nTmFtZQotICAgICAgICBpbXBvcnQgb3B0cGFyc2UKKyAgICBkZWYgX2dldE9wdFBhcnNlcihzZWxmKToKICAgICAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKICAgICAgICAgcGFyc2VyLnByb2cgPSBzZWxmLnByb2dOYW1lCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdicsICctLXZlcmJvc2UnLCBkZXN0PSd2ZXJib3NlJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVmVyYm9zZSBvdXRwdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3F1aWV0JywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUXVpZXQgb3V0cHV0JywgYWN0aW9uPSdzdG9yZV90cnVlJykKKwogICAgICAgICBpZiBzZWxmLmZhaWxmYXN0ICE9IEZhbHNlOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1mJywgJy0tZmFpbGZhc3QnLCBkZXN0PSdmYWlsZmFzdCcsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTdG9wIG9uIGZpcnN0IGZhaWwgb3IgZXJyb3InLApAQCAtMjE3LDIwICsxOTQsOSBAQAogICAgICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywgJy0tYnVmZmVyJywgZGVzdD0nYnVmZmVyJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0J1ZmZlciBzdGRvdXQgYW5kIHN0ZGVyciBkdXJpbmcgdGVzdHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc3RhcnQtZGlyZWN0b3J5JywgZGVzdD0nc3RhcnQnLCBkZWZhdWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRGlyZWN0b3J5IHRvIHN0YXJ0IGRpc2NvdmVyeSAoJy4nIGRlZmF1bHQpIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcGF0dGVybicsIGRlc3Q9J3BhdHRlcm4nLCBkZWZhdWx0PSd0ZXN0Ki5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlBhdHRlcm4gdG8gbWF0Y2ggdGVzdHMgKCd0ZXN0Ki5weScgZGVmYXVsdCkiKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10b3AtbGV2ZWwtZGlyZWN0b3J5JywgZGVzdD0ndG9wJywgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUb3AgbGV2ZWwgZGlyZWN0b3J5IG9mIHByb2plY3QgKGRlZmF1bHRzIHRvIHN0YXJ0IGRpcmVjdG9yeSknKQorICAgICAgICByZXR1cm4gcGFyc2VyCiAKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCi0gICAgICAgIGlmIGxlbihhcmdzKSA+IDM6Ci0gICAgICAgICAgICBzZWxmLnVzYWdlRXhpdCgpCi0KLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHppcCgoJ3N0YXJ0JywgJ3BhdHRlcm4nLCAndG9wJyksIGFyZ3MpOgotICAgICAgICAgICAgc2V0YXR0cihvcHRpb25zLCBuYW1lLCB2YWx1ZSkKLQorICAgIGRlZiBfc2V0QXR0cmlidXRlc0Zyb21PcHRpb25zKHNlbGYsIG9wdGlvbnMpOgogICAgICAgICAjIG9ubHkgc2V0IG9wdGlvbnMgZnJvbSB0aGUgcGFyc2luZyBoZXJlCiAgICAgICAgICMgaWYgdGhleSB3ZXJlbid0IHNldCBleHBsaWNpdGx5IGluIHRoZSBjb25zdHJ1Y3RvcgogICAgICAgICBpZiBzZWxmLmZhaWxmYXN0IGlzIE5vbmU6CkBAIC0yNDIsNiArMjA4LDMxIEBACiAKICAgICAgICAgaWYgb3B0aW9ucy52ZXJib3NlOgogICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAyCisgICAgICAgIGVsaWYgb3B0aW9ucy5xdWlldDoKKyAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMAorCisgICAgZGVmIF9hZGREaXNjb3ZlcnlPcHRpb25zKHNlbGYsIHBhcnNlcik6CisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXN0YXJ0LWRpcmVjdG9yeScsIGRlc3Q9J3N0YXJ0JywgZGVmYXVsdD0nLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpcmVjdG9yeSB0byBzdGFydCBkaXNjb3ZlcnkgKCcuJyBkZWZhdWx0KSIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBhdHRlcm4nLCBkZXN0PSdwYXR0ZXJuJywgZGVmYXVsdD0ndGVzdCoucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXR0ZXJuIHRvIG1hdGNoIHRlc3RzICgndGVzdCoucHknIGRlZmF1bHQpIikKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdG9wLWxldmVsLWRpcmVjdG9yeScsIGRlc3Q9J3RvcCcsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVG9wIGxldmVsIGRpcmVjdG9yeSBvZiBwcm9qZWN0IChkZWZhdWx0cyB0byBzdGFydCBkaXJlY3RvcnkpJykKKworICAgIGRlZiBfZG9fZGlzY292ZXJ5KHNlbGYsIGFyZ3YsIExvYWRlcj1sb2FkZXIuVGVzdExvYWRlcik6CisgICAgICAgICMgaGFuZGxlIGNvbW1hbmQgbGluZSBhcmdzIGZvciB0ZXN0IGRpc2NvdmVyeQorICAgICAgICBzZWxmLnByb2dOYW1lID0gJyVzIGRpc2NvdmVyJyAlIHNlbGYucHJvZ05hbWUKKyAgICAgICAgcGFyc2VyID0gc2VsZi5fZ2V0T3B0UGFyc2VyKCkKKyAgICAgICAgc2VsZi5fYWRkRGlzY292ZXJ5T3B0aW9ucyhwYXJzZXIpCisKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDM6CisgICAgICAgICAgICBzZWxmLnVzYWdlRXhpdCgpCisKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHppcCgoJ3N0YXJ0JywgJ3BhdHRlcm4nLCAndG9wJyksIGFyZ3MpOgorICAgICAgICAgICAgc2V0YXR0cihvcHRpb25zLCBuYW1lLCB2YWx1ZSkKKworICAgICAgICBzZWxmLl9zZXRBdHRyaWJ1dGVzRnJvbU9wdGlvbnMob3B0aW9ucykKIAogICAgICAgICBzdGFydF9kaXIgPSBvcHRpb25zLnN0YXJ0CiAgICAgICAgIHBhdHRlcm4gPSBvcHRpb25zLnBhdHRlcm4KZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tb2NrLnB5IGIvTGliL3VuaXR0ZXN0L21vY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0Y2YzOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC9tb2NrLnB5CkBAIC0wLDAgKzEsMjIxMSBAQAorIyBtb2NrLnB5CisjIFRlc3QgdG9vbHMgZm9yIG1vY2tpbmcgYW5kIHBhdGNoaW5nLgorIyBNYWludGFpbmVkIGJ5IE1pY2hhZWwgRm9vcmQKKyMgQmFja3BvcnQgZm9yIG90aGVyIHZlcnNpb25zIG9mIFB5dGhvbiBhdmFpbGFibGUgZnJvbQorIyBodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbW9jaworCitfX2FsbF9fID0gKAorICAgICdNb2NrJywKKyAgICAnTWFnaWNNb2NrJywKKyAgICAncGF0Y2gnLAorICAgICdzZW50aW5lbCcsCisgICAgJ0RFRkFVTFQnLAorICAgICdBTlknLAorICAgICdjYWxsJywKKyAgICAnY3JlYXRlX2F1dG9zcGVjJywKKyAgICAnRklMVEVSX0RJUicsCisgICAgJ05vbkNhbGxhYmxlTW9jaycsCisgICAgJ05vbkNhbGxhYmxlTWFnaWNNb2NrJywKKyAgICAnbW9ja19vcGVuJywKKyAgICAnUHJvcGVydHlNb2NrJywKKykKKworCitfX3ZlcnNpb25fXyA9ICcxLjAnCisKKworaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBwcHJpbnQKK2ltcG9ydCBzeXMKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK0Jhc2VFeGNlcHRpb25zID0gKEJhc2VFeGNlcHRpb24sKQoraWYgJ2phdmEnIGluIHN5cy5wbGF0Zm9ybToKKyAgICAjIGp5dGhvbgorICAgIGltcG9ydCBqYXZhCisgICAgQmFzZUV4Y2VwdGlvbnMgPSAoQmFzZUV4Y2VwdGlvbiwgamF2YS5sYW5nLlRocm93YWJsZSkKKworCitGSUxURVJfRElSID0gVHJ1ZQorCisjIFdvcmthcm91bmQgZm9yIGlzc3VlICMxMjM3MAorIyBXaXRob3V0IHRoaXMsIHRoZSBfX2NsYXNzX18gcHJvcGVydGllcyB3b3VsZG4ndCBiZSBzZXQgY29ycmVjdGx5Citfc2FmZV9zdXBlciA9IHN1cGVyCisKK2RlZiBfaXNfaW5zdGFuY2VfbW9jayhvYmopOgorICAgICMgY2FuJ3QgdXNlIGlzaW5zdGFuY2Ugb24gTW9jayBvYmplY3RzIGJlY2F1c2UgdGhleSBvdmVycmlkZSBfX2NsYXNzX18KKyAgICAjIFRoZSBiYXNlIGNsYXNzIGZvciBhbGwgbW9ja3MgaXMgTm9uQ2FsbGFibGVNb2NrCisgICAgcmV0dXJuIGlzc3ViY2xhc3ModHlwZShvYmopLCBOb25DYWxsYWJsZU1vY2spCisKKworZGVmIF9pc19leGNlcHRpb24ob2JqKToKKyAgICByZXR1cm4gKAorICAgICAgICBpc2luc3RhbmNlKG9iaiwgQmFzZUV4Y2VwdGlvbnMpIG9yCisgICAgICAgIGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhvYmosIEJhc2VFeGNlcHRpb25zKQorICAgICkKKworCitjbGFzcyBfc2xvdHRlZChvYmplY3QpOgorICAgIF9fc2xvdHNfXyA9IFsnYSddCisKKworRGVzY3JpcHRvclR5cGVzID0gKAorICAgIHR5cGUoX3Nsb3R0ZWQuYSksCisgICAgcHJvcGVydHksCispCisKKworZGVmIF9nZXRzaWduYXR1cmUoZnVuYywgc2tpcGZpcnN0LCBpbnN0YW5jZT1GYWxzZSk6CisgICAgaWYgaXNpbnN0YW5jZShmdW5jLCB0eXBlKSBhbmQgbm90IGluc3RhbmNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmdW5jID0gZnVuYy5fX2luaXRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2tpcGZpcnN0ID0gVHJ1ZQorICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZnVuYywgRnVuY3Rpb25UeXBlcyk6CisgICAgICAgICMgZm9yIGNsYXNzZXMgd2hlcmUgaW5zdGFuY2UgaXMgVHJ1ZSB3ZSBlbmQgdXAgaGVyZSB0b28KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19jYWxsX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICB0cnk6CisgICAgICAgIGFyZ3NwZWMgPSBpbnNwZWN0LmdldGZ1bGxhcmdzcGVjKGZ1bmMpCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgIyBDIGZ1bmN0aW9uIC8gbWV0aG9kLCBwb3NzaWJseSBpbmhlcml0ZWQgb2JqZWN0KCkuX19pbml0X18KKyAgICAgICAgcmV0dXJuCisKKyAgICByZWdhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seSwga3dvbmx5ZGVmLCBhbm4gPSBhcmdzcGVjCisKKworICAgICMgaW5zdGFuY2UgbWV0aG9kcyBhbmQgY2xhc3NtZXRob2RzIG5lZWQgdG8gbG9zZSB0aGUgc2VsZiBhcmd1bWVudAorICAgIGlmIGdldGF0dHIoZnVuYywgJ19fc2VsZl9fJywgTm9uZSkgaXMgbm90IE5vbmU6CisgICAgICAgIHJlZ2FyZ3MgPSByZWdhcmdzWzE6XQorICAgIGlmIHNraXBmaXJzdDoKKyAgICAgICAgIyB0aGlzIGNvbmRpdGlvbiBhbmQgdGhlIGFib3ZlIG9uZSBhcmUgbmV2ZXIgYm90aCBUcnVlIC0gd2h5PworICAgICAgICByZWdhcmdzID0gcmVnYXJnc1sxOl0KKworICAgIHNpZ25hdHVyZSA9IGluc3BlY3QuZm9ybWF0YXJnc3BlYygKKyAgICAgICAgcmVnYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLAorICAgICAgICBrd29ubHksIGt3b25seWRlZiwgYW5uLCBmb3JtYXR2YWx1ZT1sYW1iZGEgdmFsdWU6ICIiKQorICAgIHJldHVybiBzaWduYXR1cmVbMTotMV0sIGZ1bmMKKworCitkZWYgX2NoZWNrX3NpZ25hdHVyZShmdW5jLCBtb2NrLCBza2lwZmlyc3QsIGluc3RhbmNlPUZhbHNlKToKKyAgICBpZiBub3QgX2NhbGxhYmxlKGZ1bmMpOgorICAgICAgICByZXR1cm4KKworICAgIHJlc3VsdCA9IF9nZXRzaWduYXR1cmUoZnVuYywgc2tpcGZpcnN0LCBpbnN0YW5jZSkKKyAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgc2lnbmF0dXJlLCBmdW5jID0gcmVzdWx0CisKKyAgICAjIGNhbid0IHVzZSBzZWxmIGJlY2F1c2UgInNlbGYiIGlzIGNvbW1vbiBhcyBhbiBhcmd1bWVudCBuYW1lCisgICAgIyB1bmZvcnR1bmF0ZWx5IGV2ZW4gbm90IGluIHRoZSBmaXJzdCBwbGFjZQorICAgIHNyYyA9ICJsYW1iZGEgX21vY2tfc2VsZiwgJXM6IE5vbmUiICUgc2lnbmF0dXJlCisgICAgY2hlY2tzaWcgPSBldmFsKHNyYywge30pCisgICAgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGNoZWNrc2lnKQorICAgIHR5cGUobW9jaykuX21vY2tfY2hlY2tfc2lnID0gY2hlY2tzaWcKKworCitkZWYgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGZ1bmNvcHkpOgorICAgIGZ1bmNvcHkuX19uYW1lX18gPSBmdW5jLl9fbmFtZV9fCisgICAgZnVuY29weS5fX2RvY19fID0gZnVuYy5fX2RvY19fCisgICAgIyB3ZSBleHBsaWNpdGx5IGRvbid0IGNvcHkgZnVuYy5fX2RpY3RfXyBpbnRvIHRoaXMgY29weSBhcyBpdCB3b3VsZAorICAgICMgZXhwb3NlIG9yaWdpbmFsIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgbW9ja2VkCisgICAgZnVuY29weS5fX21vZHVsZV9fID0gZnVuYy5fX21vZHVsZV9fCisgICAgZnVuY29weS5fX2RlZmF1bHRzX18gPSBmdW5jLl9fZGVmYXVsdHNfXworICAgIGZ1bmNvcHkuX19rd2RlZmF1bHRzX18gPSBmdW5jLl9fa3dkZWZhdWx0c19fCisKKworZGVmIF9jYWxsYWJsZShvYmopOgorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBpZiBnZXRhdHRyKG9iaiwgJ19fY2FsbF9fJywgTm9uZSkgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKworZGVmIF9pc19saXN0KG9iaik6CisgICAgIyBjaGVja3MgZm9yIGxpc3Qgb3IgdHVwbGVzCisgICAgIyBYWFhYIGJhZGx5IG5hbWVkIQorICAgIHJldHVybiB0eXBlKG9iaikgaW4gKGxpc3QsIHR1cGxlKQorCisKK2RlZiBfaW5zdGFuY2VfY2FsbGFibGUob2JqKToKKyAgICAiIiJHaXZlbiBhbiBvYmplY3QsIHJldHVybiBUcnVlIGlmIHRoZSBvYmplY3QgaXMgY2FsbGFibGUuCisgICAgRm9yIGNsYXNzZXMsIHJldHVybiBUcnVlIGlmIGluc3RhbmNlcyB3b3VsZCBiZSBjYWxsYWJsZS4iIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAjIGFscmVhZHkgYW4gaW5zdGFuY2UKKyAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCAnX19jYWxsX18nLCBOb25lKSBpcyBub3QgTm9uZQorCisgICAgIyAqY291bGQqIGJlIGJyb2tlbiBieSBhIGNsYXNzIG92ZXJyaWRpbmcgX19tcm9fXyBvciBfX2RpY3RfXyB2aWEKKyAgICAjIGEgbWV0YWNsYXNzCisgICAgZm9yIGJhc2UgaW4gKG9iaiwpICsgb2JqLl9fbXJvX186CisgICAgICAgIGlmIGJhc2UuX19kaWN0X18uZ2V0KCdfX2NhbGxfXycpIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gRmFsc2UKKworCitkZWYgX3NldF9zaWduYXR1cmUobW9jaywgb3JpZ2luYWwsIGluc3RhbmNlPUZhbHNlKToKKyAgICAjIGNyZWF0ZXMgYSBmdW5jdGlvbiB3aXRoIHNpZ25hdHVyZSAoKmFyZ3MsICoqa3dhcmdzKSB0aGF0IGRlbGVnYXRlcyB0byBhCisgICAgIyBtb2NrLiBJdCBzdGlsbCBkb2VzIHNpZ25hdHVyZSBjaGVja2luZyBieSBjYWxsaW5nIGEgbGFtYmRhIHdpdGggdGhlIHNhbWUKKyAgICAjIHNpZ25hdHVyZSBhcyB0aGUgb3JpZ2luYWwuCisgICAgaWYgbm90IF9jYWxsYWJsZShvcmlnaW5hbCk6CisgICAgICAgIHJldHVybgorCisgICAgc2tpcGZpcnN0ID0gaXNpbnN0YW5jZShvcmlnaW5hbCwgdHlwZSkKKyAgICByZXN1bHQgPSBfZ2V0c2lnbmF0dXJlKG9yaWdpbmFsLCBza2lwZmlyc3QsIGluc3RhbmNlKQorICAgIGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAjIHdhcyBhIEMgZnVuY3Rpb24gKGUuZy4gb2JqZWN0KCkuX19pbml0X18gKSB0aGF0IGNhbid0IGJlIG1vY2tlZAorICAgICAgICByZXR1cm4KKworICAgIHNpZ25hdHVyZSwgZnVuYyA9IHJlc3VsdAorCisgICAgc3JjID0gImxhbWJkYSAlczogTm9uZSIgJSBzaWduYXR1cmUKKyAgICBjaGVja3NpZyA9IGV2YWwoc3JjLCB7fSkKKyAgICBfY29weV9mdW5jX2RldGFpbHMoZnVuYywgY2hlY2tzaWcpCisKKyAgICBuYW1lID0gb3JpZ2luYWwuX19uYW1lX18KKyAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKKyAgICAgICAgbmFtZSA9ICdmdW5jb3B5JworICAgIGNvbnRleHQgPSB7J19jaGVja3NpZ18nOiBjaGVja3NpZywgJ21vY2snOiBtb2NrfQorICAgIHNyYyA9ICIiImRlZiAlcygqYXJncywgKiprd2FyZ3MpOgorICAgIF9jaGVja3NpZ18oKmFyZ3MsICoqa3dhcmdzKQorICAgIHJldHVybiBtb2NrKCphcmdzLCAqKmt3YXJncykiIiIgJSBuYW1lCisgICAgZXhlYyAoc3JjLCBjb250ZXh0KQorICAgIGZ1bmNvcHkgPSBjb250ZXh0W25hbWVdCisgICAgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jaykKKyAgICByZXR1cm4gZnVuY29weQorCisKK2RlZiBfc2V0dXBfZnVuYyhmdW5jb3B5LCBtb2NrKToKKyAgICBmdW5jb3B5Lm1vY2sgPSBtb2NrCisKKyAgICAjIGNhbid0IHVzZSBpc2luc3RhbmNlIHdpdGggbW9ja3MKKyAgICBpZiBub3QgX2lzX2luc3RhbmNlX21vY2sobW9jayk6CisgICAgICAgIHJldHVybgorCisgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2hhc19jYWxscygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9hbnlfY2FsbCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiByZXNldF9tb2NrKCk6CisgICAgICAgIGZ1bmNvcHkubWV0aG9kX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICAgICAgZnVuY29weS5tb2NrX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgcmV0ID0gZnVuY29weS5yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2socmV0KSBhbmQgbm90IHJldCBpcyBtb2NrOgorICAgICAgICAgICAgcmV0LnJlc2V0X21vY2soKQorCisgICAgZnVuY29weS5jYWxsZWQgPSBGYWxzZQorICAgIGZ1bmNvcHkuY2FsbF9jb3VudCA9IDAKKyAgICBmdW5jb3B5LmNhbGxfYXJncyA9IE5vbmUKKyAgICBmdW5jb3B5LmNhbGxfYXJnc19saXN0ID0gX0NhbGxMaXN0KCkKKyAgICBmdW5jb3B5Lm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgZnVuY29weS5tb2NrX2NhbGxzID0gX0NhbGxMaXN0KCkKKworICAgIGZ1bmNvcHkucmV0dXJuX3ZhbHVlID0gbW9jay5yZXR1cm5fdmFsdWUKKyAgICBmdW5jb3B5LnNpZGVfZWZmZWN0ID0gbW9jay5zaWRlX2VmZmVjdAorICAgIGZ1bmNvcHkuX21vY2tfY2hpbGRyZW4gPSBtb2NrLl9tb2NrX2NoaWxkcmVuCisKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfd2l0aCA9IGFzc2VydF9jYWxsZWRfd2l0aAorICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGggPSBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aAorICAgIGZ1bmNvcHkuYXNzZXJ0X2hhc19jYWxscyA9IGFzc2VydF9oYXNfY2FsbHMKKyAgICBmdW5jb3B5LmFzc2VydF9hbnlfY2FsbCA9IGFzc2VydF9hbnlfY2FsbAorICAgIGZ1bmNvcHkucmVzZXRfbW9jayA9IHJlc2V0X21vY2sKKworICAgIG1vY2suX21vY2tfZGVsZWdhdGUgPSBmdW5jb3B5CisKKworZGVmIF9pc19tYWdpYyhuYW1lKToKKyAgICByZXR1cm4gJ19fJXNfXycgJSBuYW1lWzI6LTJdID09IG5hbWUKKworCitjbGFzcyBfU2VudGluZWxPYmplY3Qob2JqZWN0KToKKyAgICAiQSB1bmlxdWUsIG5hbWVkLCBzZW50aW5lbCBvYmplY3QuIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ3NlbnRpbmVsLiVzJyAlIHNlbGYubmFtZQorCisKK2NsYXNzIF9TZW50aW5lbChvYmplY3QpOgorICAgICIiIkFjY2VzcyBhdHRyaWJ1dGVzIHRvIHJldHVybiBhIG5hbWVkIG9iamVjdCwgdXNhYmxlIGFzIGEgc2VudGluZWwuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9zZW50aW5lbHMgPSB7fQorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lID09ICdfX2Jhc2VzX18nOgorICAgICAgICAgICAgIyBXaXRob3V0IHRoaXMgaGVscCh1bml0dGVzdC5tb2NrKSByYWlzZXMgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcgorICAgICAgICByZXR1cm4gc2VsZi5fc2VudGluZWxzLnNldGRlZmF1bHQobmFtZSwgX1NlbnRpbmVsT2JqZWN0KG5hbWUpKQorCisKK3NlbnRpbmVsID0gX1NlbnRpbmVsKCkKKworREVGQVVMVCA9IHNlbnRpbmVsLkRFRkFVTFQKK19taXNzaW5nID0gc2VudGluZWwuTUlTU0lORworX2RlbGV0ZWQgPSBzZW50aW5lbC5ERUxFVEVECisKKworZGVmIF9jb3B5KHZhbHVlKToKKyAgICBpZiB0eXBlKHZhbHVlKSBpbiAoZGljdCwgbGlzdCwgdHVwbGUsIHNldCk6CisgICAgICAgIHJldHVybiB0eXBlKHZhbHVlKSh2YWx1ZSkKKyAgICByZXR1cm4gdmFsdWUKKworCitfYWxsb3dlZF9uYW1lcyA9IHNldCgKKyAgICBbCisgICAgICAgICdyZXR1cm5fdmFsdWUnLCAnX21vY2tfcmV0dXJuX3ZhbHVlJywgJ3NpZGVfZWZmZWN0JywKKyAgICAgICAgJ19tb2NrX3NpZGVfZWZmZWN0JywgJ19tb2NrX3BhcmVudCcsICdfbW9ja19uZXdfcGFyZW50JywKKyAgICAgICAgJ19tb2NrX25hbWUnLCAnX21vY2tfbmV3X25hbWUnCisgICAgXQorKQorCisKK2RlZiBfZGVsZWdhdGluZ19wcm9wZXJ0eShuYW1lKToKKyAgICBfYWxsb3dlZF9uYW1lcy5hZGQobmFtZSkKKyAgICBfdGhlX25hbWUgPSAnX21vY2tfJyArIG5hbWUKKyAgICBkZWYgX2dldChzZWxmLCBuYW1lPW5hbWUsIF90aGVfbmFtZT1fdGhlX25hbWUpOgorICAgICAgICBzaWcgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIHNpZyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgX3RoZV9uYW1lKQorICAgICAgICByZXR1cm4gZ2V0YXR0cihzaWcsIG5hbWUpCisgICAgZGVmIF9zZXQoc2VsZiwgdmFsdWUsIG5hbWU9bmFtZSwgX3RoZV9uYW1lPV90aGVfbmFtZSk6CisgICAgICAgIHNpZyA9IHNlbGYuX21vY2tfZGVsZWdhdGUKKyAgICAgICAgaWYgc2lnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9fZGljdF9fW190aGVfbmFtZV0gPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2V0YXR0cihzaWcsIG5hbWUsIHZhbHVlKQorCisgICAgcmV0dXJuIHByb3BlcnR5KF9nZXQsIF9zZXQpCisKKworCitjbGFzcyBfQ2FsbExpc3QobGlzdCk6CisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgICAgICAgcmV0dXJuIGxpc3QuX19jb250YWluc19fKHNlbGYsIHZhbHVlKQorICAgICAgICBsZW5fdmFsdWUgPSBsZW4odmFsdWUpCisgICAgICAgIGxlbl9zZWxmID0gbGVuKHNlbGYpCisgICAgICAgIGlmIGxlbl92YWx1ZSA+IGxlbl9zZWxmOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuX3NlbGYgLSBsZW5fdmFsdWUgKyAxKToKKyAgICAgICAgICAgIHN1Yl9saXN0ID0gc2VsZltpOmkrbGVuX3ZhbHVlXQorICAgICAgICAgICAgaWYgc3ViX2xpc3QgPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBwcHJpbnQucGZvcm1hdChsaXN0KHNlbGYpKQorCisKK2RlZiBfY2hlY2tfYW5kX3NldF9wYXJlbnQocGFyZW50LCB2YWx1ZSwgbmFtZSwgbmV3X25hbWUpOgorICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayh2YWx1ZSk6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmICgodmFsdWUuX21vY2tfbmFtZSBvciB2YWx1ZS5fbW9ja19uZXdfbmFtZSkgb3IKKyAgICAgICAgKHZhbHVlLl9tb2NrX3BhcmVudCBpcyBub3QgTm9uZSkgb3IKKyAgICAgICAgKHZhbHVlLl9tb2NrX25ld19wYXJlbnQgaXMgbm90IE5vbmUpKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBfcGFyZW50ID0gcGFyZW50CisgICAgd2hpbGUgX3BhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgIyBzZXR0aW5nIGEgbW9jayAodmFsdWUpIGFzIGEgY2hpbGQgb3IgcmV0dXJuIHZhbHVlIG9mIGl0c2VsZgorICAgICAgICAjIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBtb2NrCisgICAgICAgIGlmIF9wYXJlbnQgaXMgdmFsdWU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgX3BhcmVudCA9IF9wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgaWYgbmV3X25hbWU6CisgICAgICAgIHZhbHVlLl9tb2NrX25ld19wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgdmFsdWUuX21vY2tfbmV3X25hbWUgPSBuZXdfbmFtZQorICAgIGlmIG5hbWU6CisgICAgICAgIHZhbHVlLl9tb2NrX3BhcmVudCA9IHBhcmVudAorICAgICAgICB2YWx1ZS5fbW9ja19uYW1lID0gbmFtZQorICAgIHJldHVybiBUcnVlCisKKworCitjbGFzcyBCYXNlKG9iamVjdCk6CisgICAgX21vY2tfcmV0dXJuX3ZhbHVlID0gREVGQVVMVAorICAgIF9tb2NrX3NpZGVfZWZmZWN0ID0gTm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBwYXNzCisKKworCitjbGFzcyBOb25DYWxsYWJsZU1vY2soQmFzZSk6CisgICAgIiIiQSBub24tY2FsbGFibGUgdmVyc2lvbiBvZiBgTW9ja2AiIiIKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3cpOgorICAgICAgICAjIGV2ZXJ5IGluc3RhbmNlIGhhcyBpdHMgb3duIGNsYXNzCisgICAgICAgICMgc28gd2UgY2FuIGNyZWF0ZSBtYWdpYyBtZXRob2RzIG9uIHRoZQorICAgICAgICAjIGNsYXNzIHdpdGhvdXQgc3RvbXBpbmcgb24gb3RoZXIgbW9ja3MKKyAgICAgICAgbmV3ID0gdHlwZShjbHMuX19uYW1lX18sIChjbHMsKSwgeydfX2RvY19fJzogY2xzLl9fZG9jX199KQorICAgICAgICBpbnN0YW5jZSA9IG9iamVjdC5fX25ld19fKG5ldykKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlCisKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIHNwZWM9Tm9uZSwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLAorICAgICAgICAgICAgcGFyZW50PU5vbmUsIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICoqa3dhcmdzCisgICAgICAgICk6CisgICAgICAgIGlmIF9uZXdfcGFyZW50IGlzIE5vbmU6CisgICAgICAgICAgICBfbmV3X3BhcmVudCA9IHBhcmVudAorCisgICAgICAgIF9fZGljdF9fID0gc2VsZi5fX2RpY3RfXworICAgICAgICBfX2RpY3RfX1snX21vY2tfcGFyZW50J10gPSBwYXJlbnQKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX25hbWUnXSA9IG5hbWUKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX25ld19uYW1lJ10gPSBfbmV3X25hbWUKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX25ld19wYXJlbnQnXSA9IF9uZXdfcGFyZW50CisKKyAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzcGVjID0gc3BlY19zZXQKKyAgICAgICAgICAgIHNwZWNfc2V0ID0gVHJ1ZQorCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NoaWxkcmVuJ10gPSB7fQorICAgICAgICBfX2RpY3RfX1snX21vY2tfd3JhcHMnXSA9IHdyYXBzCisgICAgICAgIF9fZGljdF9fWydfbW9ja19kZWxlZ2F0ZSddID0gTm9uZQorCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsZWQnXSA9IEZhbHNlCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2FyZ3MnXSA9IE5vbmUKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxfY291bnQnXSA9IDAKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX2NhbGxfYXJnc19saXN0J10gPSBfQ2FsbExpc3QoKQorICAgICAgICBfX2RpY3RfX1snX21vY2tfbW9ja19jYWxscyddID0gX0NhbGxMaXN0KCkKKworICAgICAgICBfX2RpY3RfX1snbWV0aG9kX2NhbGxzJ10gPSBfQ2FsbExpc3QoKQorCisgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX21vY2soKiprd2FyZ3MpCisKKyAgICAgICAgX3NhZmVfc3VwZXIoTm9uQ2FsbGFibGVNb2NrLCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAgICAgIHNwZWMsIHdyYXBzLCBuYW1lLCBzcGVjX3NldCwgcGFyZW50LAorICAgICAgICAgICAgX3NwZWNfc3RhdGUKKyAgICAgICAgKQorCisKKyAgICBkZWYgYXR0YWNoX21vY2soc2VsZiwgbW9jaywgYXR0cmlidXRlKToKKyAgICAgICAgIiIiCisgICAgICAgIEF0dGFjaCBhIG1vY2sgYXMgYW4gYXR0cmlidXRlIG9mIHRoaXMgb25lLCByZXBsYWNpbmcgaXRzIG5hbWUgYW5kCisgICAgICAgIHBhcmVudC4gQ2FsbHMgdG8gdGhlIGF0dGFjaGVkIG1vY2sgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUKKyAgICAgICAgYG1ldGhvZF9jYWxsc2AgYW5kIGBtb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIG9mIHRoaXMgb25lLiIiIgorICAgICAgICBtb2NrLl9tb2NrX3BhcmVudCA9IE5vbmUKKyAgICAgICAgbW9jay5fbW9ja19uZXdfcGFyZW50ID0gTm9uZQorICAgICAgICBtb2NrLl9tb2NrX25hbWUgPSAnJworICAgICAgICBtb2NrLl9tb2NrX25ld19uYW1lID0gTm9uZQorCisgICAgICAgIHNldGF0dHIoc2VsZiwgYXR0cmlidXRlLCBtb2NrKQorCisKKyAgICBkZWYgbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSk6CisgICAgICAgICIiIkFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKworCisgICAgZGVmIF9tb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0KToKKyAgICAgICAgX3NwZWNfY2xhc3MgPSBOb25lCisKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgbm90IF9pc19saXN0KHNwZWMpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjLCB0eXBlKToKKyAgICAgICAgICAgICAgICBfc3BlY19jbGFzcyA9IHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgX3NwZWNfY2xhc3MgPSBfZ2V0X2NsYXNzKHNwZWMpCisKKyAgICAgICAgICAgIHNwZWMgPSBkaXIoc3BlYykKKworICAgICAgICBfX2RpY3RfXyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgX19kaWN0X19bJ19zcGVjX2NsYXNzJ10gPSBfc3BlY19jbGFzcworICAgICAgICBfX2RpY3RfX1snX3NwZWNfc2V0J10gPSBzcGVjX3NldAorICAgICAgICBfX2RpY3RfX1snX21vY2tfbWV0aG9kcyddID0gc3BlYworCisKKyAgICBkZWYgX19nZXRfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXQgPSBzZWxmLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiBzZWxmLl9tb2NrX2RlbGVnYXRlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19kZWxlZ2F0ZS5yZXR1cm5fdmFsdWUKKworICAgICAgICBpZiByZXQgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX2dldF9jaGlsZF9tb2NrKAorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXNlbGYsIF9uZXdfbmFtZT0nKCknCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLnJldHVybl92YWx1ZSA9IHJldAorICAgICAgICByZXR1cm4gcmV0CisKKworICAgIGRlZiBfX3NldF9yZXR1cm5fdmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiBzZWxmLl9tb2NrX2RlbGVnYXRlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbW9ja19kZWxlZ2F0ZS5yZXR1cm5fdmFsdWUgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBOb25lLCAnKCknKQorCisgICAgX19yZXR1cm5fdmFsdWVfZG9jID0gIlRoZSB2YWx1ZSB0byBiZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4iCisgICAgcmV0dXJuX3ZhbHVlID0gcHJvcGVydHkoX19nZXRfcmV0dXJuX3ZhbHVlLCBfX3NldF9yZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZXR1cm5fdmFsdWVfZG9jKQorCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX19jbGFzc19fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKQorICAgICAgICByZXR1cm4gc2VsZi5fc3BlY19jbGFzcworCisgICAgY2FsbGVkID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxlZCcpCisgICAgY2FsbF9jb3VudCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsX2NvdW50JykKKyAgICBjYWxsX2FyZ3MgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9hcmdzJykKKyAgICBjYWxsX2FyZ3NfbGlzdCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsX2FyZ3NfbGlzdCcpCisgICAgbW9ja19jYWxscyA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdtb2NrX2NhbGxzJykKKworCisgICAgZGVmIF9fZ2V0X3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIGRlbGVnYXRlZCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZC5zaWRlX2VmZmVjdAorCisgICAgZGVmIF9fc2V0X3NpZGVfZWZmZWN0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgdmFsdWUgPSBfdHJ5X2l0ZXIodmFsdWUpCisgICAgICAgIGRlbGVnYXRlZCA9IHNlbGYuX21vY2tfZGVsZWdhdGUKKyAgICAgICAgaWYgZGVsZWdhdGVkIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0ID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlbGVnYXRlZC5zaWRlX2VmZmVjdCA9IHZhbHVlCisKKyAgICBzaWRlX2VmZmVjdCA9IHByb3BlcnR5KF9fZ2V0X3NpZGVfZWZmZWN0LCBfX3NldF9zaWRlX2VmZmVjdCkKKworCisgICAgZGVmIHJlc2V0X21vY2soc2VsZik6CisgICAgICAgICJSZXN0b3JlIHRoZSBtb2NrIG9iamVjdCB0byBpdHMgaW5pdGlhbCBzdGF0ZS4iCisgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3MgPSBOb25lCisgICAgICAgIHNlbGYuY2FsbF9jb3VudCA9IDAKKyAgICAgICAgc2VsZi5tb2NrX2NhbGxzID0gX0NhbGxMaXN0KCkKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCisgICAgICAgIHNlbGYubWV0aG9kX2NhbGxzID0gX0NhbGxMaXN0KCkKKworICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaGlsZC5yZXNldF9tb2NrKCkKKworICAgICAgICByZXQgPSBzZWxmLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiBfaXNfaW5zdGFuY2VfbW9jayhyZXQpIGFuZCByZXQgaXMgbm90IHNlbGY6CisgICAgICAgICAgICByZXQucmVzZXRfbW9jaygpCisKKworICAgIGRlZiBjb25maWd1cmVfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICIiIlNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRocm91Z2gga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICAgQXR0cmlidXRlcyBwbHVzIHJldHVybiB2YWx1ZXMgYW5kIHNpZGUgZWZmZWN0cyBjYW4gYmUgc2V0IG9uIGNoaWxkCisgICAgICAgIG1vY2tzIHVzaW5nIHN0YW5kYXJkIGRvdCBub3RhdGlvbiBhbmQgdW5wYWNraW5nIGEgZGljdGlvbmFyeSBpbiB0aGUKKyAgICAgICAgbWV0aG9kIGNhbGw6CisKKyAgICAgICAgPj4+IGF0dHJzID0geydtZXRob2QucmV0dXJuX3ZhbHVlJzogMywgJ290aGVyLnNpZGVfZWZmZWN0JzogS2V5RXJyb3J9CisgICAgICAgID4+PiBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqYXR0cnMpIiIiCisgICAgICAgIGZvciBhcmcsIHZhbCBpbiBzb3J0ZWQoa3dhcmdzLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3ZSBzb3J0IG9uIHRoZSBudW1iZXIgb2YgZG90cyBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGFyZSBzZXQgYmVmb3JlIHdlIHNldCBhdHRyaWJ1dGVzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWxhbWJkYSBlbnRyeTogZW50cnlbMF0uY291bnQoJy4nKSk6CisgICAgICAgICAgICBhcmdzID0gYXJnLnNwbGl0KCcuJykKKyAgICAgICAgICAgIGZpbmFsID0gYXJncy5wb3AoKQorICAgICAgICAgICAgb2JqID0gc2VsZgorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGFyZ3M6CisgICAgICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIGVudHJ5KQorICAgICAgICAgICAgc2V0YXR0cihvYmosIGZpbmFsLCB2YWwpCisKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSA9PSAnX21vY2tfbWV0aG9kcyc6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBlbGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kcyBvciBuYW1lIGluIF9hbGxfbWFnaWNzOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICVyIiAlIG5hbWUpCisgICAgICAgIGVsaWYgX2lzX21hZ2ljKG5hbWUpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKworICAgICAgICByZXN1bHQgPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lKQorICAgICAgICBpZiByZXN1bHQgaXMgX2RlbGV0ZWQ6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBlbGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAgICAgd3JhcHMgPSBOb25lCisgICAgICAgICAgICBpZiBzZWxmLl9tb2NrX3dyYXBzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgWFhYWCBzaG91bGQgd2UgZ2V0IHRoZSBhdHRyaWJ1dGUgd2l0aG91dCB0cmlnZ2VyaW5nIGNvZGUKKyAgICAgICAgICAgICAgICAjIGV4ZWN1dGlvbj8KKyAgICAgICAgICAgICAgICB3cmFwcyA9IGdldGF0dHIoc2VsZi5fbW9ja193cmFwcywgbmFtZSkKKworICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fZ2V0X2NoaWxkX21vY2soCisgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYsIG5hbWU9bmFtZSwgd3JhcHM9d3JhcHMsIF9uZXdfbmFtZT1uYW1lLAorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXNlbGYKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gID0gcmVzdWx0CisKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHJlc3VsdCwgX1NwZWNTdGF0ZSk6CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVfYXV0b3NwZWMoCisgICAgICAgICAgICAgICAgcmVzdWx0LnNwZWMsIHJlc3VsdC5zcGVjX3NldCwgcmVzdWx0Lmluc3RhbmNlLAorICAgICAgICAgICAgICAgIHJlc3VsdC5wYXJlbnQsIHJlc3VsdC5uYW1lCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdICA9IHJlc3VsdAorCisgICAgICAgIHJldHVybiByZXN1bHQKKworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBfbmFtZV9saXN0ID0gW3NlbGYuX21vY2tfbmV3X25hbWVdCisgICAgICAgIF9wYXJlbnQgPSBzZWxmLl9tb2NrX25ld19wYXJlbnQKKyAgICAgICAgbGFzdCA9IHNlbGYKKworICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgaWYgX25hbWVfbGlzdCA9PSBbJygpJ106CisgICAgICAgICAgICBkb3QgPSAnJworICAgICAgICBzZWVuID0gc2V0KCkKKyAgICAgICAgd2hpbGUgX3BhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxhc3QgPSBfcGFyZW50CisKKyAgICAgICAgICAgIF9uYW1lX2xpc3QuYXBwZW5kKF9wYXJlbnQuX21vY2tfbmV3X25hbWUgKyBkb3QpCisgICAgICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgICAgIGlmIF9wYXJlbnQuX21vY2tfbmV3X25hbWUgPT0gJygpJzoKKyAgICAgICAgICAgICAgICBkb3QgPSAnJworCisgICAgICAgICAgICBfcGFyZW50ID0gX3BhcmVudC5fbW9ja19uZXdfcGFyZW50CisKKyAgICAgICAgICAgICMgdXNlIGlkcyBoZXJlIHNvIGFzIG5vdCB0byBjYWxsIF9faGFzaF9fIG9uIHRoZSBtb2NrcworICAgICAgICAgICAgaWYgaWQoX3BhcmVudCkgaW4gc2VlbjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2Vlbi5hZGQoaWQoX3BhcmVudCkpCisKKyAgICAgICAgX25hbWVfbGlzdCA9IGxpc3QocmV2ZXJzZWQoX25hbWVfbGlzdCkpCisgICAgICAgIF9maXJzdCA9IGxhc3QuX21vY2tfbmFtZSBvciAnbW9jaycKKyAgICAgICAgaWYgbGVuKF9uYW1lX2xpc3QpID4gMToKKyAgICAgICAgICAgIGlmIF9uYW1lX2xpc3RbMV0gbm90IGluICgnKCknLCAnKCkuJyk6CisgICAgICAgICAgICAgICAgX2ZpcnN0ICs9ICcuJworICAgICAgICBfbmFtZV9saXN0WzBdID0gX2ZpcnN0CisgICAgICAgIG5hbWUgPSAnJy5qb2luKF9uYW1lX2xpc3QpCisKKyAgICAgICAgbmFtZV9zdHJpbmcgPSAnJworICAgICAgICBpZiBuYW1lIG5vdCBpbiAoJ21vY2snLCAnbW9jay4nKToKKyAgICAgICAgICAgIG5hbWVfc3RyaW5nID0gJyBuYW1lPSVyJyAlIG5hbWUKKworICAgICAgICBzcGVjX3N0cmluZyA9ICcnCisgICAgICAgIGlmIHNlbGYuX3NwZWNfY2xhc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlYz0lcicKKyAgICAgICAgICAgIGlmIHNlbGYuX3NwZWNfc2V0OgorICAgICAgICAgICAgICAgIHNwZWNfc3RyaW5nID0gJyBzcGVjX3NldD0lcicKKyAgICAgICAgICAgIHNwZWNfc3RyaW5nID0gc3BlY19zdHJpbmcgJSBzZWxmLl9zcGVjX2NsYXNzLl9fbmFtZV9fCisgICAgICAgIHJldHVybiAiPCVzJXMlcyBpZD0nJXMnPiIgJSAoCisgICAgICAgICAgICB0eXBlKHNlbGYpLl9fbmFtZV9fLAorICAgICAgICAgICAgbmFtZV9zdHJpbmcsCisgICAgICAgICAgICBzcGVjX3N0cmluZywKKyAgICAgICAgICAgIGlkKHNlbGYpCisgICAgICAgICkKKworCisgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAgICIiIkZpbHRlciB0aGUgb3V0cHV0IG9mIGBkaXIobW9jaylgIHRvIG9ubHkgdXNlZnVsIG1lbWJlcnMuIiIiCisgICAgICAgIGlmIG5vdCBGSUxURVJfRElSOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2Rpcl9fKHNlbGYpCisKKyAgICAgICAgZXh0cmFzID0gc2VsZi5fbW9ja19tZXRob2RzIG9yIFtdCisgICAgICAgIGZyb21fdHlwZSA9IGRpcih0eXBlKHNlbGYpKQorICAgICAgICBmcm9tX2RpY3QgPSBsaXN0KHNlbGYuX19kaWN0X18pCisKKyAgICAgICAgZnJvbV90eXBlID0gW2UgZm9yIGUgaW4gZnJvbV90eXBlIGlmIG5vdCBlLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgZnJvbV9kaWN0ID0gW2UgZm9yIGUgaW4gZnJvbV9kaWN0IGlmIG5vdCBlLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgX2lzX21hZ2ljKGUpXQorICAgICAgICByZXR1cm4gc29ydGVkKHNldChleHRyYXMgKyBmcm9tX3R5cGUgKyBmcm9tX2RpY3QgKworICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHNlbGYuX21vY2tfY2hpbGRyZW4pKSkKKworCisgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaWYgbmFtZSBpbiBfYWxsb3dlZF9uYW1lczoKKyAgICAgICAgICAgICMgcHJvcGVydHkgc2V0dGVycyBnbyB0aHJvdWdoIGhlcmUKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisgICAgICAgIGVsaWYgKHNlbGYuX3NwZWNfc2V0IGFuZCBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgYW5kCisgICAgICAgICAgICBuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKyAgICAgICAgZWxpZiBuYW1lIGluIF91bnN1cHBvcnRlZF9tYWdpY3M6CisgICAgICAgICAgICBtc2cgPSAnQXR0ZW1wdGluZyB0byBzZXQgdW5zdXBwb3J0ZWQgbWFnaWMgbWV0aG9kICVyLicgJSBuYW1lCisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtc2cpCisgICAgICAgIGVsaWYgbmFtZSBpbiBfYWxsX21hZ2ljczoKKyAgICAgICAgICAgIGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZSBhbmQgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgICAgICAgICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUsIF9nZXRfbWV0aG9kKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IHZhbHVlCisgICAgICAgICAgICAgICAgdmFsdWUgPSBsYW1iZGEgKmFyZ3MsICoqa3c6IG9yaWdpbmFsKHNlbGYsICphcmdzLCAqKmt3KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIG9ubHkgc2V0IF9uZXdfbmFtZSBhbmQgbm90IG5hbWUgc28gdGhhdCBtb2NrX2NhbGxzIGlzIHRyYWNrZWQKKyAgICAgICAgICAgICAgICAjIGJ1dCBub3QgbWV0aG9kIGNhbGxzCisgICAgICAgICAgICAgICAgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBOb25lLCBuYW1lKQorICAgICAgICAgICAgICAgIHNldGF0dHIodHlwZShzZWxmKSwgbmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSA9IHZhbHVlCisgICAgICAgIGVsaWYgbmFtZSA9PSAnX19jbGFzc19fJzoKKyAgICAgICAgICAgIHNlbGYuX3NwZWNfY2xhc3MgPSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfY2hlY2tfYW5kX3NldF9wYXJlbnQoc2VsZiwgdmFsdWUsIG5hbWUsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSB2YWx1ZQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorCisKKyAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgaW4gX2FsbF9tYWdpY3MgYW5kIG5hbWUgaW4gdHlwZShzZWxmKS5fX2RpY3RfXzoKKyAgICAgICAgICAgIGRlbGF0dHIodHlwZShzZWxmKSwgbmFtZSkKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX19kaWN0X186CisgICAgICAgICAgICAgICAgIyBmb3IgbWFnaWMgbWV0aG9kcyB0aGF0IGFyZSBzdGlsbCBNYWdpY1Byb3h5IG9iamVjdHMgYW5kCisgICAgICAgICAgICAgICAgIyBub3Qgc2V0IG9uIHRoZSBpbnN0YW5jZSBpdHNlbGYKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBuYW1lIGluIHNlbGYuX19kaWN0X186CisgICAgICAgICAgICBvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSkKKworICAgICAgICBvYmogPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lLCBfbWlzc2luZykKKyAgICAgICAgaWYgb2JqIGlzIF9kZWxldGVkOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgaWYgb2JqIGlzIG5vdCBfbWlzc2luZzoKKyAgICAgICAgICAgIGRlbCBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdCisgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSBfZGVsZXRlZAorCisKKworICAgIGRlZiBfZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoc2VsZiwgYXJncywga3dhcmdzKToKKyAgICAgICAgbmFtZSA9IHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycKKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKQorCisKKyAgICBkZWYgX2Zvcm1hdF9tb2NrX2ZhaWx1cmVfbWVzc2FnZShzZWxmLCBhcmdzLCBrd2FyZ3MpOgorICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgIGV4cGVjdGVkX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgY2FsbF9hcmdzID0gc2VsZi5jYWxsX2FyZ3MKKyAgICAgICAgaWYgbGVuKGNhbGxfYXJncykgPT0gMzoKKyAgICAgICAgICAgIGNhbGxfYXJncyA9IGNhbGxfYXJnc1sxOl0KKyAgICAgICAgYWN0dWFsX3N0cmluZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKCpjYWxsX2FyZ3MpCisgICAgICAgIHJldHVybiBtZXNzYWdlICUgKGV4cGVjdGVkX3N0cmluZywgYWN0dWFsX3N0cmluZykKKworCisgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCisKKyAgICAgICAgUmFpc2VzIGFuIEFzc2VydGlvbkVycm9yIGlmIHRoZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3MgcGFzc2VkIGluIGFyZQorICAgICAgICBkaWZmZXJlbnQgdG8gdGhlIGxhc3QgY2FsbCB0byB0aGUgbW9jay4iIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgc2VsZi5jYWxsX2FyZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ0V4cGVjdGVkIGNhbGw6ICVzXG5Ob3QgY2FsbGVkJyAlIChleHBlY3RlZCwpKQorCisgICAgICAgIGlmIHNlbGYuY2FsbF9hcmdzICE9IChhcmdzLCBrd2FyZ3MpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fZm9ybWF0X21vY2tfZmFpbHVyZV9tZXNzYWdlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKworCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlIGFuZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgYXJndW1lbnRzLiIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBub3Qgc2VsZi5jYWxsX2NvdW50ID09IDE6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKworCisgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoc2VsZiwgY2FsbHMsIGFueV9vcmRlcj1GYWxzZSk6CisgICAgICAgICIiImFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNhbGxzLgorICAgICAgICBUaGUgYG1vY2tfY2FsbHNgIGxpc3QgaXMgY2hlY2tlZCBmb3IgdGhlIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIEZhbHNlICh0aGUgZGVmYXVsdCkgdGhlbiB0aGUgY2FsbHMgbXVzdCBiZQorICAgICAgICBzZXF1ZW50aWFsLiBUaGVyZSBjYW4gYmUgZXh0cmEgY2FsbHMgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICBzcGVjaWZpZWQgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgVHJ1ZSB0aGVuIHRoZSBjYWxscyBjYW4gYmUgaW4gYW55IG9yZGVyLCBidXQKKyAgICAgICAgdGhleSBtdXN0IGFsbCBhcHBlYXIgaW4gYG1vY2tfY2FsbHNgLiIiIgorICAgICAgICBpZiBub3QgYW55X29yZGVyOgorICAgICAgICAgICAgaWYgY2FsbHMgbm90IGluIHNlbGYubW9ja19jYWxsczoKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ0NhbGxzIG5vdCBmb3VuZC5cbkV4cGVjdGVkOiAlclxuJworICAgICAgICAgICAgICAgICAgICAnQWN0dWFsOiAlcicgJSAoY2FsbHMsIHNlbGYubW9ja19jYWxscykKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhbGxfY2FsbHMgPSBsaXN0KHNlbGYubW9ja19jYWxscykKKworICAgICAgICBub3RfZm91bmQgPSBbXQorICAgICAgICBmb3Iga2FsbCBpbiBjYWxsczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhbGxfY2FsbHMucmVtb3ZlKGthbGwpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBub3RfZm91bmQuYXBwZW5kKGthbGwpCisgICAgICAgIGlmIG5vdF9mb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICclciBub3QgYWxsIGZvdW5kIGluIGNhbGwgbGlzdCcgJSAodHVwbGUobm90X2ZvdW5kKSwpCisgICAgICAgICAgICApCisKKworICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFRoZSBhc3NlcnQgcGFzc2VzIGlmIHRoZSBtb2NrIGhhcyAqZXZlciogYmVlbiBjYWxsZWQsIHVubGlrZQorICAgICAgICBgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgYGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB0aGF0IG9ubHkgcGFzcyBpZgorICAgICAgICB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLiIiIgorICAgICAgICBrYWxsID0gY2FsbCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGlmIGthbGwgbm90IGluIHNlbGYuY2FsbF9hcmdzX2xpc3Q6CisgICAgICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAnJXMgY2FsbCBub3QgZm91bmQnICUgZXhwZWN0ZWRfc3RyaW5nCisgICAgICAgICAgICApCisKKworICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprdyk6CisgICAgICAgICIiIkNyZWF0ZSB0aGUgY2hpbGQgbW9ja3MgZm9yIGF0dHJpYnV0ZXMgYW5kIHJldHVybiB2YWx1ZS4KKyAgICAgICAgQnkgZGVmYXVsdCBjaGlsZCBtb2NrcyB3aWxsIGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIHBhcmVudC4KKyAgICAgICAgU3ViY2xhc3NlcyBvZiBNb2NrIG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMgdG8gY3VzdG9taXplIHRoZSB3YXkKKyAgICAgICAgY2hpbGQgbW9ja3MgYXJlIG1hZGUuCisKKyAgICAgICAgRm9yIG5vbi1jYWxsYWJsZSBtb2NrcyB0aGUgY2FsbGFibGUgdmFyaWFudCB3aWxsIGJlIHVzZWQgKHJhdGhlciB0aGFuCisgICAgICAgIGFueSBjdXN0b20gc3ViY2xhc3MpLiIiIgorICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKKyAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoX3R5cGUsIENhbGxhYmxlTWl4aW4pOgorICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhfdHlwZSwgTm9uQ2FsbGFibGVNYWdpY01vY2spOgorICAgICAgICAgICAgICAgIGtsYXNzID0gTWFnaWNNb2NrCisgICAgICAgICAgICBlbGlmIGlzc3ViY2xhc3MoX3R5cGUsIE5vbkNhbGxhYmxlTW9jaykgOgorICAgICAgICAgICAgICAgIGtsYXNzID0gTW9jaworICAgICAgICBlbHNlOgorICAgICAgICAgICAga2xhc3MgPSBfdHlwZS5fX21yb19fWzFdCisgICAgICAgIHJldHVybiBrbGFzcygqKmt3KQorCisKKworZGVmIF90cnlfaXRlcihvYmopOgorICAgIGlmIG9iaiBpcyBOb25lOgorICAgICAgICByZXR1cm4gb2JqCisgICAgaWYgX2lzX2V4Y2VwdGlvbihvYmopOgorICAgICAgICByZXR1cm4gb2JqCisgICAgaWYgX2NhbGxhYmxlKG9iaik6CisgICAgICAgIHJldHVybiBvYmoKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpdGVyKG9iaikKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAjIFhYWFggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKKyAgICAgICAgIyBidXQgdGhpcyB3aWxsIGJsb3cgdXAgb24gZmlyc3QgY2FsbCAtIHNvIG1heWJlIHdlIHNob3VsZCBmYWlsIGVhcmx5PworICAgICAgICByZXR1cm4gb2JqCisKKworCitjbGFzcyBDYWxsYWJsZU1peGluKEJhc2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsCisgICAgICAgICAgICAgICAgIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgIF9zcGVjX3N0YXRlPU5vbmUsIF9uZXdfbmFtZT0nJywgX25ld19wYXJlbnQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9fZGljdF9fWydfbW9ja19yZXR1cm5fdmFsdWUnXSA9IHJldHVybl92YWx1ZQorCisgICAgICAgIF9zYWZlX3N1cGVyKENhbGxhYmxlTWl4aW4sIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgc3BlYywgd3JhcHMsIG5hbWUsIHNwZWNfc2V0LCBwYXJlbnQsCisgICAgICAgICAgICBfc3BlY19zdGF0ZSwgX25ld19uYW1lLCBfbmV3X3BhcmVudCwgKiprd2FyZ3MKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorCisKKyAgICBkZWYgX21vY2tfY2hlY2tfc2lnKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgc3R1YiBtZXRob2QgdGhhdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBvbmUgd2l0aCBhIHNwZWNpZmljIHNpZ25hdHVyZQorICAgICAgICBwYXNzCisKKworICAgIGRlZiBfX2NhbGxfXyhfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIGNhbid0IHVzZSBzZWxmIGluLWNhc2UgYSBmdW5jdGlvbiAvIG1ldGhvZCB3ZSBhcmUgbW9ja2luZyB1c2VzIHNlbGYKKyAgICAgICAgIyBpbiB0aGUgc2lnbmF0dXJlCisgICAgICAgIF9tb2NrX3NlbGYuX21vY2tfY2hlY2tfc2lnKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIF9tb2NrX3NlbGYuX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCisKKworICAgIGRlZiBfbW9ja19jYWxsKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorICAgICAgICBzZWxmLmNhbGxfY291bnQgKz0gMQorICAgICAgICBzZWxmLmNhbGxfYXJncyA9IF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdC5hcHBlbmQoX0NhbGwoKGFyZ3MsIGt3YXJncyksIHR3bz1UcnVlKSkKKworICAgICAgICBfbmV3X25hbWUgPSBzZWxmLl9tb2NrX25ld19uYW1lCisgICAgICAgIF9uZXdfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisgICAgICAgIHNlbGYubW9ja19jYWxscy5hcHBlbmQoX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpKSkKKworICAgICAgICBzZWVuID0gc2V0KCkKKyAgICAgICAgc2tpcF9uZXh0X2RvdCA9IF9uZXdfbmFtZSA9PSAnKCknCisgICAgICAgIGRvX21ldGhvZF9jYWxscyA9IHNlbGYuX21vY2tfcGFyZW50IGlzIG5vdCBOb25lCisgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUKKyAgICAgICAgd2hpbGUgX25ld19wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aGlzX21vY2tfY2FsbCA9IF9DYWxsKChfbmV3X25hbWUsIGFyZ3MsIGt3YXJncykpCisgICAgICAgICAgICBpZiBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZToKKyAgICAgICAgICAgICAgICBkb3QgPSAnLicKKyAgICAgICAgICAgICAgICBpZiBza2lwX25leHRfZG90OgorICAgICAgICAgICAgICAgICAgICBkb3QgPSAnJworCisgICAgICAgICAgICAgICAgc2tpcF9uZXh0X2RvdCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWUgPT0gJygpJzoKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9uZXh0X2RvdCA9IFRydWUKKworICAgICAgICAgICAgICAgIF9uZXdfbmFtZSA9IF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lICsgZG90ICsgX25ld19uYW1lCisKKyAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKKyAgICAgICAgICAgICAgICBpZiBfbmV3X25hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19tZXRob2RfY2FsbCA9IHRoaXNfbW9ja19jYWxsCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19tZXRob2RfY2FsbCA9IF9DYWxsKChuYW1lLCBhcmdzLCBrd2FyZ3MpKQorICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50Lm1ldGhvZF9jYWxscy5hcHBlbmQodGhpc19tZXRob2RfY2FsbCkKKworICAgICAgICAgICAgICAgIGRvX21ldGhvZF9jYWxscyA9IF9uZXdfcGFyZW50Ll9tb2NrX3BhcmVudCBpcyBub3QgTm9uZQorICAgICAgICAgICAgICAgIGlmIGRvX21ldGhvZF9jYWxsczoKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IF9uZXdfcGFyZW50Ll9tb2NrX25hbWUgKyAnLicgKyBuYW1lCisKKyAgICAgICAgICAgIF9uZXdfcGFyZW50Lm1vY2tfY2FsbHMuYXBwZW5kKHRoaXNfbW9ja19jYWxsKQorICAgICAgICAgICAgX25ld19wYXJlbnQgPSBfbmV3X3BhcmVudC5fbW9ja19uZXdfcGFyZW50CisKKyAgICAgICAgICAgICMgdXNlIGlkcyBoZXJlIHNvIGFzIG5vdCB0byBjYWxsIF9faGFzaF9fIG9uIHRoZSBtb2NrcworICAgICAgICAgICAgX25ld19wYXJlbnRfaWQgPSBpZChfbmV3X3BhcmVudCkKKyAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50X2lkIGluIHNlZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlZW4uYWRkKF9uZXdfcGFyZW50X2lkKQorCisgICAgICAgIHJldF92YWwgPSBERUZBVUxUCisgICAgICAgIGVmZmVjdCA9IHNlbGYuc2lkZV9lZmZlY3QKKyAgICAgICAgaWYgZWZmZWN0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihlZmZlY3QpOgorICAgICAgICAgICAgICAgIHJhaXNlIGVmZmVjdAorCisgICAgICAgICAgICBpZiBub3QgX2NhbGxhYmxlKGVmZmVjdCk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV4dChlZmZlY3QpCisgICAgICAgICAgICAgICAgaWYgX2lzX2V4Y2VwdGlvbihyZXN1bHQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSByZXN1bHQKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICAgICAgICAgIHJldF92YWwgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgaWYgcmV0X3ZhbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJldF92YWwgPSBzZWxmLnJldHVybl92YWx1ZQorCisgICAgICAgIGlmIChzZWxmLl9tb2NrX3dyYXBzIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlIGlzIERFRkFVTFQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21vY2tfd3JhcHMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXRfdmFsID0gc2VsZi5yZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuIHJldF92YWwKKworCisKK2NsYXNzIE1vY2soQ2FsbGFibGVNaXhpbiwgTm9uQ2FsbGFibGVNb2NrKToKKyAgICAiIiIKKyAgICBDcmVhdGUgYSBuZXcgYE1vY2tgIG9iamVjdC4gYE1vY2tgIHRha2VzIHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzCisgICAgdGhhdCBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIE1vY2sgb2JqZWN0OgorCisgICAgKiBgc3BlY2A6IFRoaXMgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBhbiBleGlzdGluZyBvYmplY3QgKGEKKyAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKKyAgICAgIHlvdSBwYXNzIGluIGFuIG9iamVjdCB0aGVuIGEgbGlzdCBvZiBzdHJpbmdzIGlzIGZvcm1lZCBieSBjYWxsaW5nIGRpciBvbgorICAgICAgdGhlIG9iamVjdCAoZXhjbHVkaW5nIHVuc3VwcG9ydGVkIG1hZ2ljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMpLiBBY2Nlc3NpbmcKKyAgICAgIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAgIElmIGBzcGVjYCBpcyBhbiBvYmplY3QgKHJhdGhlciB0aGFuIGEgbGlzdCBvZiBzdHJpbmdzKSB0aGVuCisgICAgICBgbW9jay5fX2NsYXNzX19gIHJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBzcGVjIG9iamVjdC4gVGhpcyBhbGxvd3MgbW9ja3MKKyAgICAgIHRvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzLgorCisgICAgKiBgc3BlY19zZXRgOiBBIHN0cmljdGVyIHZhcmlhbnQgb2YgYHNwZWNgLiBJZiB1c2VkLCBhdHRlbXB0aW5nIHRvICpzZXQqCisgICAgICBvciBnZXQgYW4gYXR0cmlidXRlIG9uIHRoZSBtb2NrIHRoYXQgaXNuJ3Qgb24gdGhlIG9iamVjdCBwYXNzZWQgYXMKKyAgICAgIGBzcGVjX3NldGAgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgKiBgc2lkZV9lZmZlY3RgOiBBIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgTW9jayBpcyBjYWxsZWQuIFNlZQorICAgICAgdGhlIGBzaWRlX2VmZmVjdGAgYXR0cmlidXRlLiBVc2VmdWwgZm9yIHJhaXNpbmcgZXhjZXB0aW9ucyBvcgorICAgICAgZHluYW1pY2FsbHkgY2hhbmdpbmcgcmV0dXJuIHZhbHVlcy4gVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lCisgICAgICBhcmd1bWVudHMgYXMgdGhlIG1vY2ssIGFuZCB1bmxlc3MgaXQgcmV0dXJucyBgREVGQVVMVGAsIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgcmV0dXJuIHZhbHVlLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4gSWYgYW55IG9mIHRoZSBtZW1iZXJzIG9mIHRoZSBpdGVyYWJsZQorICAgICAgYXJlIGV4Y2VwdGlvbnMgdGhleSB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkIG9mIHJldHVybmVkLgorCisgICAgICBJZiBgc2lkZV9lZmZlY3RgIGlzIGFuIGl0ZXJhYmxlIHRoZW4gZWFjaCBjYWxsIHRvIHRoZSBtb2NrIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbmV4dCB2YWx1ZSBmcm9tIHRoZSBpdGVyYWJsZS4KKworICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAorICAgICAgdGhpcyBpcyBhIG5ldyBNb2NrIChjcmVhdGVkIG9uIGZpcnN0IGFjY2VzcykuIFNlZSB0aGUKKyAgICAgIGByZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4KKworICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgorICAgICAgY2FsbGluZyB0aGUgTW9jayB3aWxsIHBhc3MgdGhlIGNhbGwgdGhyb3VnaCB0byB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCisgICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChzbyBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IHdpbGwgcmFpc2UgYW4KKyAgICAgIGBBdHRyaWJ1dGVFcnJvcmApLgorCisgICAgICBJZiB0aGUgbW9jayBoYXMgYW4gZXhwbGljaXQgYHJldHVybl92YWx1ZWAgc2V0IHRoZW4gY2FsbHMgYXJlIG5vdCBwYXNzZWQKKyAgICAgIHRvIHRoZSB3cmFwcGVkIG9iamVjdCBhbmQgdGhlIGByZXR1cm5fdmFsdWVgIGlzIHJldHVybmVkIGluc3RlYWQuCisKKyAgICAqIGBuYW1lYDogSWYgdGhlIG1vY2sgaGFzIGEgbmFtZSB0aGVuIGl0IHdpbGwgYmUgdXNlZCBpbiB0aGUgcmVwciBvZiB0aGUKKyAgICAgIG1vY2suIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBUaGUgbmFtZSBpcyBwcm9wYWdhdGVkIHRvIGNoaWxkCisgICAgICBtb2Nrcy4KKworICAgIE1vY2tzIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZQorICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4KKyAgICAiIiIKKworCisKK2RlZiBfZG90X2xvb2t1cCh0aGluZywgY29tcCwgaW1wb3J0X3BhdGgpOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIodGhpbmcsIGNvbXApCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBfX2ltcG9ydF9fKGltcG9ydF9wYXRoKQorICAgICAgICByZXR1cm4gZ2V0YXR0cih0aGluZywgY29tcCkKKworCitkZWYgX2ltcG9ydGVyKHRhcmdldCk6CisgICAgY29tcG9uZW50cyA9IHRhcmdldC5zcGxpdCgnLicpCisgICAgaW1wb3J0X3BhdGggPSBjb21wb25lbnRzLnBvcCgwKQorICAgIHRoaW5nID0gX19pbXBvcnRfXyhpbXBvcnRfcGF0aCkKKworICAgIGZvciBjb21wIGluIGNvbXBvbmVudHM6CisgICAgICAgIGltcG9ydF9wYXRoICs9ICIuJXMiICUgY29tcAorICAgICAgICB0aGluZyA9IF9kb3RfbG9va3VwKHRoaW5nLCBjb21wLCBpbXBvcnRfcGF0aCkKKyAgICByZXR1cm4gdGhpbmcKKworCitkZWYgX2lzX3N0YXJ0ZWQocGF0Y2hlcik6CisgICAgIyBYWFhYIGhvcnJpYmxlCisgICAgcmV0dXJuIGhhc2F0dHIocGF0Y2hlciwgJ2lzX2xvY2FsJykKKworCitjbGFzcyBfcGF0Y2gob2JqZWN0KToKKworICAgIGF0dHJpYnV0ZV9uYW1lID0gTm9uZQorICAgIF9hY3RpdmVfcGF0Y2hlcyA9IHNldCgpCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgICAgICBzcGVjX3NldCwgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwga3dhcmdzCisgICAgICAgICk6CisgICAgICAgIGlmIG5ld19jYWxsYWJsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5ldyBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnbmV3JyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgaWYgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2F1dG9zcGVjJyBhbmQgJ25ld19jYWxsYWJsZScgdG9nZXRoZXIiCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYuZ2V0dGVyID0gZ2V0dGVyCisgICAgICAgIHNlbGYuYXR0cmlidXRlID0gYXR0cmlidXRlCisgICAgICAgIHNlbGYubmV3ID0gbmV3CisgICAgICAgIHNlbGYubmV3X2NhbGxhYmxlID0gbmV3X2NhbGxhYmxlCisgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKyAgICAgICAgc2VsZi5jcmVhdGUgPSBjcmVhdGUKKyAgICAgICAgc2VsZi5oYXNfbG9jYWwgPSBGYWxzZQorICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKKyAgICAgICAgc2VsZi5hdXRvc3BlYyA9IGF1dG9zcGVjCisgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCisgICAgICAgIHNlbGYuYWRkaXRpb25hbF9wYXRjaGVycyA9IFtdCisKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gX3BhdGNoKAorICAgICAgICAgICAgc2VsZi5nZXR0ZXIsIHNlbGYuYXR0cmlidXRlLCBzZWxmLm5ldywgc2VsZi5zcGVjLAorICAgICAgICAgICAgc2VsZi5jcmVhdGUsIHNlbGYuc3BlY19zZXQsCisgICAgICAgICAgICBzZWxmLmF1dG9zcGVjLCBzZWxmLm5ld19jYWxsYWJsZSwgc2VsZi5rd2FyZ3MKKyAgICAgICAgKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gc2VsZi5hdHRyaWJ1dGVfbmFtZQorICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBbCisgICAgICAgICAgICBwLmNvcHkoKSBmb3IgcCBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMKKyAgICAgICAgXQorICAgICAgICByZXR1cm4gcGF0Y2hlcgorCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgZnVuYyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jbGFzcyhmdW5jKQorICAgICAgICByZXR1cm4gc2VsZi5kZWNvcmF0ZV9jYWxsYWJsZShmdW5jKQorCisKKyAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgaWYgbm90IGF0dHIuc3RhcnRzd2l0aChwYXRjaC5URVNUX1BSRUZJWCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIoa2xhc3MsIGF0dHIpCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBwYXRjaGVyID0gc2VsZi5jb3B5KCkKKyAgICAgICAgICAgIHNldGF0dHIoa2xhc3MsIGF0dHIsIHBhdGNoZXIoYXR0cl92YWx1ZSkpCisgICAgICAgIHJldHVybiBrbGFzcworCisKKyAgICBkZWYgZGVjb3JhdGVfY2FsbGFibGUoc2VsZiwgZnVuYyk6CisgICAgICAgIGlmIGhhc2F0dHIoZnVuYywgJ3BhdGNoaW5ncycpOgorICAgICAgICAgICAgZnVuYy5wYXRjaGluZ3MuYXBwZW5kKHNlbGYpCisgICAgICAgICAgICByZXR1cm4gZnVuYworCisgICAgICAgIEB3cmFwcyhmdW5jKQorICAgICAgICBkZWYgcGF0Y2hlZCgqYXJncywgKiprZXl3YXJncyk6CisgICAgICAgICAgICBleHRyYV9hcmdzID0gW10KKyAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMgPSBbXQorCisgICAgICAgICAgICBleGNfaW5mbyA9IHR1cGxlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gcGF0Y2hlZC5wYXRjaGluZ3M6CisgICAgICAgICAgICAgICAgICAgIGFyZyA9IHBhdGNoaW5nLl9fZW50ZXJfXygpCisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMuYXBwZW5kKHBhdGNoaW5nKQorICAgICAgICAgICAgICAgICAgICBpZiBwYXRjaGluZy5hdHRyaWJ1dGVfbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleXdhcmdzLnVwZGF0ZShhcmcpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGF0Y2hpbmcubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9hcmdzLmFwcGVuZChhcmcpCisKKyAgICAgICAgICAgICAgICBhcmdzICs9IHR1cGxlKGV4dHJhX2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa2V5d2FyZ3MpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgKHBhdGNoaW5nIG5vdCBpbiBlbnRlcmVkX3BhdGNoZXJzIGFuZAorICAgICAgICAgICAgICAgICAgICBfaXNfc3RhcnRlZChwYXRjaGluZykpOgorICAgICAgICAgICAgICAgICAgICAjIHRoZSBwYXRjaGVyIG1heSBoYXZlIGJlZW4gc3RhcnRlZCwgYnV0IGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAjIHJhaXNlZCB3aGlsc3QgZW50ZXJpbmcgb25lIG9mIGl0cyBhZGRpdGlvbmFsX3BhdGNoZXJzCisgICAgICAgICAgICAgICAgICAgIGVudGVyZWRfcGF0Y2hlcnMuYXBwZW5kKHBhdGNoaW5nKQorICAgICAgICAgICAgICAgICMgUGFzcyB0aGUgZXhjZXB0aW9uIHRvIF9fZXhpdF9fCisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICMgcmUtcmFpc2UgdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiByZXZlcnNlZChlbnRlcmVkX3BhdGNoZXJzKToKKyAgICAgICAgICAgICAgICAgICAgcGF0Y2hpbmcuX19leGl0X18oKmV4Y19pbmZvKQorCisgICAgICAgIHBhdGNoZWQucGF0Y2hpbmdzID0gW3NlbGZdCisgICAgICAgIHJldHVybiBwYXRjaGVkCisKKworICAgIGRlZiBnZXRfb3JpZ2luYWwoc2VsZik6CisgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0dGVyKCkKKyAgICAgICAgbmFtZSA9IHNlbGYuYXR0cmlidXRlCisKKyAgICAgICAgb3JpZ2luYWwgPSBERUZBVUxUCisgICAgICAgIGxvY2FsID0gRmFsc2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IHRhcmdldC5fX2RpY3RfX1tuYW1lXQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBLZXlFcnJvcik6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGdldGF0dHIodGFyZ2V0LCBuYW1lLCBERUZBVUxUKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9jYWwgPSBUcnVlCisKKyAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBvcmlnaW5hbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICByZXR1cm4gb3JpZ2luYWwsIGxvY2FsCisKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICIiIlBlcmZvcm0gdGhlIHBhdGNoLiIiIgorICAgICAgICBuZXcsIHNwZWMsIHNwZWNfc2V0ID0gc2VsZi5uZXcsIHNlbGYuc3BlYywgc2VsZi5zcGVjX3NldAorICAgICAgICBhdXRvc3BlYywga3dhcmdzID0gc2VsZi5hdXRvc3BlYywgc2VsZi5rd2FyZ3MKKyAgICAgICAgbmV3X2NhbGxhYmxlID0gc2VsZi5uZXdfY2FsbGFibGUKKyAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLmdldHRlcigpCisKKyAgICAgICAgIyBub3JtYWxpc2UgRmFsc2UgdG8gTm9uZQorICAgICAgICBpZiBzcGVjIGlzIEZhbHNlOgorICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgaWYgc3BlY19zZXQgaXMgRmFsc2U6CisgICAgICAgICAgICBzcGVjX3NldCA9IE5vbmUKKyAgICAgICAgaWYgYXV0b3NwZWMgaXMgRmFsc2U6CisgICAgICAgICAgICBhdXRvc3BlYyA9IE5vbmUKKworICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3Qgc3BlY2lmeSBzcGVjIGFuZCBhdXRvc3BlYyIpCisgICAgICAgIGlmICgoc3BlYyBpcyBub3QgTm9uZSBvciBhdXRvc3BlYyBpcyBub3QgTm9uZSkgYW5kCisgICAgICAgICAgICBzcGVjX3NldCBub3QgaW4gKFRydWUsIE5vbmUpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgcHJvdmlkZSBleHBsaWNpdCBzcGVjX3NldCAqYW5kKiBzcGVjIG9yIGF1dG9zcGVjIikKKworICAgICAgICBvcmlnaW5hbCwgbG9jYWwgPSBzZWxmLmdldF9vcmlnaW5hbCgpCisKKyAgICAgICAgaWYgbmV3IGlzIERFRkFVTFQgYW5kIGF1dG9zcGVjIGlzIE5vbmU6CisgICAgICAgICAgICBpbmhlcml0ID0gRmFsc2UKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICAjIHNldCBzcGVjIHRvIHRoZSBvYmplY3Qgd2UgYXJlIHJlcGxhY2luZworICAgICAgICAgICAgICAgIHNwZWMgPSBvcmlnaW5hbAorICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHNwZWNfc2V0ID0gb3JpZ2luYWwKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzcGVjX3NldCA9IHNwZWMKKyAgICAgICAgICAgICAgICAgICAgc3BlYyA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc3BlY19zZXQgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICBzcGVjX3NldCA9IG9yaWdpbmFsCisKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgb3Igc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgb3JpZ2luYWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ3NwZWMnIHdpdGggY3JlYXRlPVRydWUiKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3JpZ2luYWwsIHR5cGUpOgorICAgICAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHBhdGNoaW5nIG91dCBhIGNsYXNzIGFuZCB0aGVyZSBpcyBhIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgaW5oZXJpdCA9IFRydWUKKworICAgICAgICAgICAgS2xhc3MgPSBNYWdpY01vY2sKKyAgICAgICAgICAgIF9rd2FyZ3MgPSB7fQorICAgICAgICAgICAgaWYgbmV3X2NhbGxhYmxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIEtsYXNzID0gbmV3X2NhbGxhYmxlCisgICAgICAgICAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmUgb3Igc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlYworICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjX3NldAorICAgICAgICAgICAgICAgIGlmIF9pc19saXN0KHRoaXNfc3BlYyk6CisgICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9ICdfX2NhbGxfXycgbm90IGluIHRoaXNfc3BlYworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5vdF9jYWxsYWJsZSA9IG5vdCBjYWxsYWJsZSh0aGlzX3NwZWMpCisgICAgICAgICAgICAgICAgaWYgbm90X2NhbGxhYmxlOgorICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlYyddID0gc3BlYworICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snc3BlY19zZXQnXSA9IHNwZWNfc2V0CisKKyAgICAgICAgICAgICMgYWRkIGEgbmFtZSB0byBtb2NrcworICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoS2xhc3MsIHR5cGUpIGFuZAorICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoS2xhc3MsIE5vbkNhbGxhYmxlTW9jaykgYW5kIHNlbGYuYXR0cmlidXRlKToKKyAgICAgICAgICAgICAgICBfa3dhcmdzWyduYW1lJ10gPSBzZWxmLmF0dHJpYnV0ZQorCisgICAgICAgICAgICBfa3dhcmdzLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgICAgICBuZXcgPSBLbGFzcygqKl9rd2FyZ3MpCisKKyAgICAgICAgICAgIGlmIGluaGVyaXQgYW5kIF9pc19pbnN0YW5jZV9tb2NrKG5ldyk6CisgICAgICAgICAgICAgICAgIyB3ZSBjYW4gb25seSB0ZWxsIGlmIHRoZSBpbnN0YW5jZSBzaG91bGQgYmUgY2FsbGFibGUgaWYgdGhlCisgICAgICAgICAgICAgICAgIyBzcGVjIGlzIG5vdCBhIGxpc3QKKyAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjCisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICAgICAgaWYgKG5vdCBfaXNfbGlzdCh0aGlzX3NwZWMpIGFuZCBub3QKKyAgICAgICAgICAgICAgICAgICAgX2luc3RhbmNlX2NhbGxhYmxlKHRoaXNfc3BlYykpOgorICAgICAgICAgICAgICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisKKyAgICAgICAgICAgICAgICBfa3dhcmdzLnBvcCgnbmFtZScpCisgICAgICAgICAgICAgICAgbmV3LnJldHVybl92YWx1ZSA9IEtsYXNzKF9uZXdfcGFyZW50PW5ldywgX25ld19uYW1lPScoKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX2t3YXJncykKKyAgICAgICAgZWxpZiBhdXRvc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgc3BlYyBpcyBpZ25vcmVkLCBuZXcgKm11c3QqIGJlIGRlZmF1bHQsIHNwZWNfc2V0IGlzIHRyZWF0ZWQKKyAgICAgICAgICAgICMgYXMgYSBib29sZWFuLiBTaG91bGQgd2UgY2hlY2sgc3BlYyBpcyBub3QgTm9uZSBhbmQgdGhhdCBzcGVjX3NldAorICAgICAgICAgICAgIyBpcyBhIGJvb2w/CisgICAgICAgICAgICBpZiBuZXcgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiYXV0b3NwZWMgY3JlYXRlcyB0aGUgbW9jayBmb3IgeW91LiBDYW4ndCBzcGVjaWZ5ICIKKyAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGFuZCBuZXcuIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG9yaWdpbmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCB1c2UgJ2F1dG9zcGVjJyB3aXRoIGNyZWF0ZT1UcnVlIikKKyAgICAgICAgICAgIHNwZWNfc2V0ID0gYm9vbChzcGVjX3NldCkKKyAgICAgICAgICAgIGlmIGF1dG9zcGVjIGlzIFRydWU6CisgICAgICAgICAgICAgICAgYXV0b3NwZWMgPSBvcmlnaW5hbAorCisgICAgICAgICAgICBuZXcgPSBjcmVhdGVfYXV0b3NwZWMoYXV0b3NwZWMsIHNwZWNfc2V0PXNwZWNfc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uYW1lPXNlbGYuYXR0cmlidXRlLCAqKmt3YXJncykKKyAgICAgICAgZWxpZiBrd2FyZ3M6CisgICAgICAgICAgICAjIGNhbid0IHNldCBrZXl3b3JkIGFyZ3Mgd2hlbiB3ZSBhcmVuJ3QgY3JlYXRpbmcgdGhlIG1vY2sKKyAgICAgICAgICAgICMgWFhYWCBJZiBuZXcgaXMgYSBNb2NrIHdlIGNvdWxkIGNhbGwgbmV3LmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBwYXNzIGt3YXJncyB0byBhIG1vY2sgd2UgYXJlbid0IGNyZWF0aW5nIikKKworICAgICAgICBuZXdfYXR0ciA9IG5ldworCisgICAgICAgIHNlbGYudGVtcF9vcmlnaW5hbCA9IG9yaWdpbmFsCisgICAgICAgIHNlbGYuaXNfbG9jYWwgPSBsb2NhbAorICAgICAgICBzZXRhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSwgbmV3X2F0dHIpCisgICAgICAgIGlmIHNlbGYuYXR0cmlidXRlX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBleHRyYV9hcmdzID0ge30KKyAgICAgICAgICAgIGlmIHNlbGYubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgZXh0cmFfYXJnc1tzZWxmLmF0dHJpYnV0ZV9uYW1lXSA9ICBuZXcKKyAgICAgICAgICAgIGZvciBwYXRjaGluZyBpbiBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnM6CisgICAgICAgICAgICAgICAgYXJnID0gcGF0Y2hpbmcuX19lbnRlcl9fKCkKKyAgICAgICAgICAgICAgICBpZiBwYXRjaGluZy5uZXcgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncy51cGRhdGUoYXJnKQorICAgICAgICAgICAgcmV0dXJuIGV4dHJhX2FyZ3MKKworICAgICAgICByZXR1cm4gbmV3CisKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgorICAgICAgICAiIiJVbmRvIHRoZSBwYXRjaC4iIiIKKyAgICAgICAgaWYgbm90IF9pc19zdGFydGVkKHNlbGYpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdzdG9wIGNhbGxlZCBvbiB1bnN0YXJ0ZWQgcGF0Y2hlcicpCisKKyAgICAgICAgaWYgc2VsZi5pc19sb2NhbCBhbmQgc2VsZi50ZW1wX29yaWdpbmFsIGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRlbGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBub3QgaGFzYXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUpOgorICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBwcm94eSBvYmplY3RzIGxpa2UgZGphbmdvIHNldHRpbmdzCisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIHNlbGYudGVtcF9vcmlnaW5hbCkKKworICAgICAgICBkZWwgc2VsZi50ZW1wX29yaWdpbmFsCisgICAgICAgIGRlbCBzZWxmLmlzX2xvY2FsCisgICAgICAgIGRlbCBzZWxmLnRhcmdldAorICAgICAgICBmb3IgcGF0Y2hlciBpbiByZXZlcnNlZChzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMpOgorICAgICAgICAgICAgaWYgX2lzX3N0YXJ0ZWQocGF0Y2hlcik6CisgICAgICAgICAgICAgICAgcGF0Y2hlci5fX2V4aXRfXygqZXhjX2luZm8pCisKKworICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiQWN0aXZhdGUgYSBwYXRjaCwgcmV0dXJuaW5nIGFueSBjcmVhdGVkIG1vY2suIiIiCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19lbnRlcl9fKCkKKyAgICAgICAgc2VsZi5fYWN0aXZlX3BhdGNoZXMuYWRkKHNlbGYpCisgICAgICAgIHJldHVybiByZXN1bHQKKworCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgICIiIlN0b3AgYW4gYWN0aXZlIHBhdGNoLiIiIgorICAgICAgICBzZWxmLl9hY3RpdmVfcGF0Y2hlcy5kaXNjYXJkKHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl9fZXhpdF9fKCkKKworCisKK2RlZiBfZ2V0X3RhcmdldCh0YXJnZXQpOgorICAgIHRyeToKKyAgICAgICAgdGFyZ2V0LCBhdHRyaWJ1dGUgPSB0YXJnZXQucnNwbGl0KCcuJywgMSkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTmVlZCBhIHZhbGlkIHRhcmdldCB0byBwYXRjaC4gWW91IHN1cHBsaWVkOiAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldCwpKQorICAgIGdldHRlciA9IGxhbWJkYTogX2ltcG9ydGVyKHRhcmdldCkKKyAgICByZXR1cm4gZ2V0dGVyLCBhdHRyaWJ1dGUKKworCitkZWYgX3BhdGNoX29iamVjdCgKKyAgICAgICAgdGFyZ2V0LCBhdHRyaWJ1dGUsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsCisgICAgICAgIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwKKyAgICAgICAgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzCisgICAgKToKKyAgICAiIiIKKyAgICBwYXRjaCB0aGUgbmFtZWQgbWVtYmVyIChgYXR0cmlidXRlYCkgb24gYW4gb2JqZWN0IChgdGFyZ2V0YCkgd2l0aCBhIG1vY2sKKyAgICBvYmplY3QuCisKKyAgICBgcGF0Y2gub2JqZWN0YCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEFyZ3VtZW50cyBgbmV3YCwgYHNwZWNgLCBgY3JlYXRlYCwgYHNwZWNfc2V0YCwKKyAgICBgYXV0b3NwZWNgIGFuZCBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIExpa2UKKyAgICBgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgZm9yIGNvbmZpZ3VyaW5nCisgICAgdGhlIG1vY2sgb2JqZWN0IGl0IGNyZWF0ZXMuCisKKyAgICBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLm9iamVjdGAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKyAgICBnZXR0ZXIgPSBsYW1iZGE6IHRhcmdldAorICAgIHJldHVybiBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICkKKworCitkZWYgX3BhdGNoX211bHRpcGxlKHRhcmdldCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUGVyZm9ybSBtdWx0aXBsZSBwYXRjaGVzIGluIGEgc2luZ2xlIGNhbGwuIEl0IHRha2VzIHRoZSBvYmplY3QgdG8gYmUKKyAgICBwYXRjaGVkIChlaXRoZXIgYXMgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIHRvIGZldGNoIHRoZSBvYmplY3QgYnkgaW1wb3J0aW5nKQorICAgIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHBhdGNoZXM6OgorCisgICAgICAgIHdpdGggcGF0Y2gubXVsdGlwbGUoc2V0dGluZ3MsIEZJUlNUX1BBVENIPSdvbmUnLCBTRUNPTkRfUEFUQ0g9J3R3bycpOgorICAgICAgICAgICAgLi4uCisKKyAgICBVc2UgYERFRkFVTFRgIGFzIHRoZSB2YWx1ZSBpZiB5b3Ugd2FudCBgcGF0Y2gubXVsdGlwbGVgIHRvIGNyZWF0ZQorICAgIG1vY2tzIGZvciB5b3UuIEluIHRoaXMgY2FzZSB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gYSBkZWNvcmF0ZWQKKyAgICBmdW5jdGlvbiBieSBrZXl3b3JkLCBhbmQgYSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHdoZW4gYHBhdGNoLm11bHRpcGxlYCBpcworICAgIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gVGhlIGFyZ3VtZW50cyBgc3BlY2AsIGBzcGVjX3NldGAsIGBjcmVhdGVgLAorICAgIGBhdXRvc3BlY2AgYW5kIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gVGhlc2UKKyAgICBhcmd1bWVudHMgd2lsbCBiZSBhcHBsaWVkIHRvICphbGwqIHBhdGNoZXMgZG9uZSBieSBgcGF0Y2gubXVsdGlwbGVgLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5tdWx0aXBsZWAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKyAgICAiIiIKKyAgICBpZiB0eXBlKHRhcmdldCkgaXMgc3RyOgorICAgICAgICBnZXR0ZXIgPSBsYW1iZGE6IF9pbXBvcnRlcih0YXJnZXQpCisgICAgZWxzZToKKyAgICAgICAgZ2V0dGVyID0gbGFtYmRhOiB0YXJnZXQKKworICAgIGlmIG5vdCBrd2FyZ3M6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAnTXVzdCBzdXBwbHkgYXQgbGVhc3Qgb25lIGtleXdvcmQgYXJndW1lbnQgd2l0aCBwYXRjaC5tdWx0aXBsZScKKyAgICAgICAgKQorICAgICMgbmVlZCB0byB3cmFwIGluIGEgbGlzdCBmb3IgcHl0aG9uIDMsIHdoZXJlIGl0ZW1zIGlzIGEgdmlldworICAgIGl0ZW1zID0gbGlzdChrd2FyZ3MuaXRlbXMoKSkKKyAgICBhdHRyaWJ1dGUsIG5ldyA9IGl0ZW1zWzBdCisgICAgcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLCBzcGVjX3NldCwKKyAgICAgICAgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwge30KKyAgICApCisgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0ZQorICAgIGZvciBhdHRyaWJ1dGUsIG5ldyBpbiBpdGVtc1sxOl06CisgICAgICAgIHRoaXNfcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwgc3BlY19zZXQsCisgICAgICAgICAgICBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCB7fQorICAgICAgICApCisgICAgICAgIHRoaXNfcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0ZQorICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMuYXBwZW5kKHRoaXNfcGF0Y2hlcikKKyAgICByZXR1cm4gcGF0Y2hlcgorCisKK2RlZiBwYXRjaCgKKyAgICAgICAgdGFyZ2V0LCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLCBjcmVhdGU9RmFsc2UsCisgICAgICAgIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgIiIiCisgICAgYHBhdGNoYCBhY3RzIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gSW5zaWRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiBvciB3aXRoIHN0YXRlbWVudCwgdGhlIGB0YXJnZXRgCisgICAgaXMgcGF0Y2hlZCB3aXRoIGEgYG5ld2Agb2JqZWN0LiBXaGVuIHRoZSBmdW5jdGlvbi93aXRoIHN0YXRlbWVudCBleGl0cworICAgIHRoZSBwYXRjaCBpcyB1bmRvbmUuCisKKyAgICBJZiBgbmV3YCBpcyBvbWl0dGVkLCB0aGVuIHRoZSB0YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhCisgICAgYE1hZ2ljTW9ja2AuIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGRlY29yYXRvciBhbmQgYG5ld2AgaXMKKyAgICBvbWl0dGVkLCB0aGUgY3JlYXRlZCBtb2NrIGlzIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUKKyAgICBkZWNvcmF0ZWQgZnVuY3Rpb24uIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0aGUgY3JlYXRlZAorICAgIG1vY2sgaXMgcmV0dXJuZWQgYnkgdGhlIGNvbnRleHQgbWFuYWdlci4KKworICAgIGB0YXJnZXRgIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSBgJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZSdgLiBUaGUKKyAgICBgdGFyZ2V0YCBpcyBpbXBvcnRlZCBhbmQgdGhlIHNwZWNpZmllZCBvYmplY3QgcmVwbGFjZWQgd2l0aCB0aGUgYG5ld2AKKyAgICBvYmplY3QsIHNvIHRoZSBgdGFyZ2V0YCBtdXN0IGJlIGltcG9ydGFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgeW91IGFyZQorICAgIGNhbGxpbmcgYHBhdGNoYCBmcm9tLiBUaGUgdGFyZ2V0IGlzIGltcG9ydGVkIHdoZW4gdGhlIGRlY29yYXRlZCBmdW5jdGlvbgorICAgIGlzIGV4ZWN1dGVkLCBub3QgYXQgZGVjb3JhdGlvbiB0aW1lLgorCisgICAgVGhlIGBzcGVjYCBhbmQgYHNwZWNfc2V0YCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBgTWFnaWNNb2NrYAorICAgIGlmIHBhdGNoIGlzIGNyZWF0aW5nIG9uZSBmb3IgeW91LgorCisgICAgSW4gYWRkaXRpb24geW91IGNhbiBwYXNzIGBzcGVjPVRydWVgIG9yIGBzcGVjX3NldD1UcnVlYCwgd2hpY2ggY2F1c2VzCisgICAgcGF0Y2ggdG8gcGFzcyBpbiB0aGUgb2JqZWN0IGJlaW5nIG1vY2tlZCBhcyB0aGUgc3BlYy9zcGVjX3NldCBvYmplY3QuCisKKyAgICBgbmV3X2NhbGxhYmxlYCBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgY2xhc3MsIG9yIGNhbGxhYmxlIG9iamVjdCwKKyAgICB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUgYG5ld2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBNYWdpY01vY2tgIGlzCisgICAgdXNlZC4KKworICAgIEEgbW9yZSBwb3dlcmZ1bCBmb3JtIG9mIGBzcGVjYCBpcyBgYXV0b3NwZWNgLiBJZiB5b3Ugc2V0IGBhdXRvc3BlYz1UcnVlYAorICAgIHRoZW4gdGhlIG1vY2sgd2l0aCBiZSBjcmVhdGVkIHdpdGggYSBzcGVjIGZyb20gdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4KKyAgICBBbGwgYXR0cmlidXRlcyBvZiB0aGUgbW9jayB3aWxsIGFsc28gaGF2ZSB0aGUgc3BlYyBvZiB0aGUgY29ycmVzcG9uZGluZworICAgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLiBNZXRob2RzIGFuZCBmdW5jdGlvbnMgYmVpbmcKKyAgICBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkIGFuZCB3aWxsIHJhaXNlIGEgYFR5cGVFcnJvcmAgaWYKKyAgICB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgd3Jvbmcgc2lnbmF0dXJlLiBGb3IgbW9ja3MgcmVwbGFjaW5nIGEgY2xhc3MsCisgICAgdGhlaXIgcmV0dXJuIHZhbHVlICh0aGUgJ2luc3RhbmNlJykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMgYXMgdGhlIGNsYXNzLgorCisgICAgSW5zdGVhZCBvZiBgYXV0b3NwZWM9VHJ1ZWAgeW91IGNhbiBwYXNzIGBhdXRvc3BlYz1zb21lX29iamVjdGAgdG8gdXNlIGFuCisgICAgYXJiaXRyYXJ5IG9iamVjdCBhcyB0aGUgc3BlYyBpbnN0ZWFkIG9mIHRoZSBvbmUgYmVpbmcgcmVwbGFjZWQuCisKKyAgICBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBmYWlsIHRvIHJlcGxhY2UgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0LiBJZgorICAgIHlvdSBwYXNzIGluIGBjcmVhdGU9VHJ1ZWAsIGFuZCB0aGUgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QsIHBhdGNoIHdpbGwKKyAgICBjcmVhdGUgdGhlIGF0dHJpYnV0ZSBmb3IgeW91IHdoZW4gdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCBhbmQKKyAgICBkZWxldGUgaXQgYWdhaW4gYWZ0ZXJ3YXJkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHdyaXRpbmcgdGVzdHMgYWdhaW5zdAorICAgIGF0dHJpYnV0ZXMgdGhhdCB5b3VyIHByb2R1Y3Rpb24gY29kZSBjcmVhdGVzIGF0IHJ1bnRpbWUuIEl0IGlzIG9mZiBieSBieQorICAgIGRlZmF1bHQgYmVjYXVzZSBpdCBjYW4gYmUgZGFuZ2Vyb3VzLiBXaXRoIGl0IHN3aXRjaGVkIG9uIHlvdSBjYW4gd3JpdGUKKyAgICBwYXNzaW5nIHRlc3RzIGFnYWluc3QgQVBJcyB0aGF0IGRvbid0IGFjdHVhbGx5IGV4aXN0IQorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBgVGVzdENhc2VgIGNsYXNzIGRlY29yYXRvci4gSXQgd29ya3MgYnkKKyAgICBkZWNvcmF0aW5nIGVhY2ggdGVzdCBtZXRob2QgaW4gdGhlIGNsYXNzLiBUaGlzIHJlZHVjZXMgdGhlIGJvaWxlcnBsYXRlCisgICAgY29kZSB3aGVuIHlvdXIgdGVzdCBtZXRob2RzIHNoYXJlIGEgY29tbW9uIHBhdGNoaW5ncyBzZXQuIGBwYXRjaGAgZmluZHMKKyAgICB0ZXN0cyBieSBsb29raW5nIGZvciBtZXRob2QgbmFtZXMgdGhhdCBzdGFydCB3aXRoIGBwYXRjaC5URVNUX1BSRUZJWGAuCisgICAgQnkgZGVmYXVsdCB0aGlzIGlzIGB0ZXN0YCwgd2hpY2ggbWF0Y2hlcyB0aGUgd2F5IGB1bml0dGVzdGAgZmluZHMgdGVzdHMuCisgICAgWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIHByZWZpeCBieSBzZXR0aW5nIGBwYXRjaC5URVNUX1BSRUZJWGAuCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgd2l0aCB0aGUgd2l0aCBzdGF0ZW1lbnQuIEhlcmUgdGhlCisgICAgcGF0Y2hpbmcgYXBwbGllcyB0byB0aGUgaW5kZW50ZWQgYmxvY2sgYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50LiBJZiB5b3UKKyAgICB1c2UgImFzIiB0aGVuIHRoZSBwYXRjaGVkIG9iamVjdCB3aWxsIGJlIGJvdW5kIHRvIHRoZSBuYW1lIGFmdGVyIHRoZQorICAgICJhcyI7IHZlcnkgdXNlZnVsIGlmIGBwYXRjaGAgaXMgY3JlYXRpbmcgYSBtb2NrIG9iamVjdCBmb3IgeW91LgorCisgICAgYHBhdGNoYCB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUgcGFzc2VkIHRvCisgICAgdGhlIGBNb2NrYCAob3IgYG5ld19jYWxsYWJsZWApIG9uIGNvbnN0cnVjdGlvbi4KKworICAgIGBwYXRjaC5kaWN0KC4uLilgLCBgcGF0Y2gubXVsdGlwbGUoLi4uKWAgYW5kIGBwYXRjaC5vYmplY3QoLi4uKWAgYXJlCisgICAgYXZhaWxhYmxlIGZvciBhbHRlcm5hdGUgdXNlLWNhc2VzLgorICAgICIiIgorICAgIGdldHRlciwgYXR0cmlidXRlID0gX2dldF90YXJnZXQodGFyZ2V0KQorICAgIHJldHVybiBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwKKyAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICkKKworCitjbGFzcyBfcGF0Y2hfZGljdChvYmplY3QpOgorICAgICIiIgorICAgIFBhdGNoIGEgZGljdGlvbmFyeSwgb3IgZGljdGlvbmFyeSBsaWtlIG9iamVjdCwgYW5kIHJlc3RvcmUgdGhlIGRpY3Rpb25hcnkKKyAgICB0byBpdHMgb3JpZ2luYWwgc3RhdGUgYWZ0ZXIgdGhlIHRlc3QuCisKKyAgICBgaW5fZGljdGAgY2FuIGJlIGEgZGljdGlvbmFyeSBvciBhIG1hcHBpbmcgbGlrZSBjb250YWluZXIuIElmIGl0IGlzIGEKKyAgICBtYXBwaW5nIHRoZW4gaXQgbXVzdCBhdCBsZWFzdCBzdXBwb3J0IGdldHRpbmcsIHNldHRpbmcgYW5kIGRlbGV0aW5nIGl0ZW1zCisgICAgcGx1cyBpdGVyYXRpbmcgb3ZlciBrZXlzLgorCisgICAgYGluX2RpY3RgIGNhbiBhbHNvIGJlIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIGRpY3Rpb25hcnksIHdoaWNoCisgICAgd2lsbCB0aGVuIGJlIGZldGNoZWQgYnkgaW1wb3J0aW5nIGl0LgorCisgICAgYHZhbHVlc2AgY2FuIGJlIGEgZGljdGlvbmFyeSBvZiB2YWx1ZXMgdG8gc2V0IGluIHRoZSBkaWN0aW9uYXJ5LiBgdmFsdWVzYAorICAgIGNhbiBhbHNvIGJlIGFuIGl0ZXJhYmxlIG9mIGAoa2V5LCB2YWx1ZSlgIHBhaXJzLgorCisgICAgSWYgYGNsZWFyYCBpcyBUcnVlIHRoZW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSB0aGUgbmV3CisgICAgdmFsdWVzIGFyZSBzZXQuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRvIHNldAorICAgIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeTo6CisKKyAgICAgICAgd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIG15bW9kdWxlPU1vY2soKSwgb3RoZXJfbW9kdWxlPU1vY2soKSk6CisgICAgICAgICAgICAuLi4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgZGVjb3JhdG9yIG9yIGNsYXNzCisgICAgZGVjb3JhdG9yLiBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLmRpY3RgIGhvbm91cnMKKyAgICBgcGF0Y2guVEVTVF9QUkVGSVhgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5fZGljdCwgdmFsdWVzPSgpLCBjbGVhcj1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGluX2RpY3QsIHN0cik6CisgICAgICAgICAgICBpbl9kaWN0ID0gX2ltcG9ydGVyKGluX2RpY3QpCisgICAgICAgIHNlbGYuaW5fZGljdCA9IGluX2RpY3QKKyAgICAgICAgIyBzdXBwb3J0IGFueSBhcmd1bWVudCBzdXBwb3J0ZWQgYnkgZGljdCguLi4pIGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYudmFsdWVzID0gZGljdCh2YWx1ZXMpCisgICAgICAgIHNlbGYudmFsdWVzLnVwZGF0ZShrd2FyZ3MpCisgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgorICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IE5vbmUKKworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGYsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2xhc3MoZikKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiBfaW5uZXIoKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3cpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX3VucGF0Y2hfZGljdCgpCisKKyAgICAgICAgcmV0dXJuIF9pbm5lcgorCisKKyAgICBkZWYgZGVjb3JhdGVfY2xhc3Moc2VsZiwga2xhc3MpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoa2xhc3MpOgorICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIoa2xhc3MsIGF0dHIpCisgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKHBhdGNoLlRFU1RfUFJFRklYKSBhbmQKKyAgICAgICAgICAgICAgICAgaGFzYXR0cihhdHRyX3ZhbHVlLCAiX19jYWxsX18iKSk6CisgICAgICAgICAgICAgICAgZGVjb3JhdG9yID0gX3BhdGNoX2RpY3Qoc2VsZi5pbl9kaWN0LCBzZWxmLnZhbHVlcywgc2VsZi5jbGVhcikKKyAgICAgICAgICAgICAgICBkZWNvcmF0ZWQgPSBkZWNvcmF0b3IoYXR0cl92YWx1ZSkKKyAgICAgICAgICAgICAgICBzZXRhdHRyKGtsYXNzLCBhdHRyLCBkZWNvcmF0ZWQpCisgICAgICAgIHJldHVybiBrbGFzcworCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJQYXRjaCB0aGUgZGljdC4iIiIKKyAgICAgICAgc2VsZi5fcGF0Y2hfZGljdCgpCisKKworICAgIGRlZiBfcGF0Y2hfZGljdChzZWxmKToKKyAgICAgICAgdmFsdWVzID0gc2VsZi52YWx1ZXMKKyAgICAgICAgaW5fZGljdCA9IHNlbGYuaW5fZGljdAorICAgICAgICBjbGVhciA9IHNlbGYuY2xlYXIKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGluX2RpY3QuY29weSgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgZGljdCBsaWtlIG9iamVjdCB3aXRoIG5vIGNvcHkgbWV0aG9kCisgICAgICAgICAgICAjIG11c3Qgc3VwcG9ydCBpdGVyYXRpb24gb3ZlciBrZXlzCisgICAgICAgICAgICBvcmlnaW5hbCA9IHt9CisgICAgICAgICAgICBmb3Iga2V5IGluIGluX2RpY3Q6CisgICAgICAgICAgICAgICAgb3JpZ2luYWxba2V5XSA9IGluX2RpY3Rba2V5XQorICAgICAgICBzZWxmLl9vcmlnaW5hbCA9IG9yaWdpbmFsCisKKyAgICAgICAgaWYgY2xlYXI6CisgICAgICAgICAgICBfY2xlYXJfZGljdChpbl9kaWN0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluX2RpY3QudXBkYXRlKHZhbHVlcykKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBkaWN0IGxpa2Ugb2JqZWN0IHdpdGggbm8gdXBkYXRlIG1ldGhvZAorICAgICAgICAgICAgZm9yIGtleSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gdmFsdWVzW2tleV0KKworCisgICAgZGVmIF91bnBhdGNoX2RpY3Qoc2VsZik6CisgICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKKyAgICAgICAgb3JpZ2luYWwgPSBzZWxmLl9vcmlnaW5hbAorCisgICAgICAgIF9jbGVhcl9kaWN0KGluX2RpY3QpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5fZGljdC51cGRhdGUob3JpZ2luYWwpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGZvciBrZXkgaW4gb3JpZ2luYWw6CisgICAgICAgICAgICAgICAgaW5fZGljdFtrZXldID0gb3JpZ2luYWxba2V5XQorCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAiIiJVbnBhdGNoIHRoZSBkaWN0LiIiIgorICAgICAgICBzZWxmLl91bnBhdGNoX2RpY3QoKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHN0YXJ0ID0gX19lbnRlcl9fCisgICAgc3RvcCA9IF9fZXhpdF9fCisKKworZGVmIF9jbGVhcl9kaWN0KGluX2RpY3QpOgorICAgIHRyeToKKyAgICAgICAgaW5fZGljdC5jbGVhcigpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBrZXlzID0gbGlzdChpbl9kaWN0KQorICAgICAgICBmb3Iga2V5IGluIGtleXM6CisgICAgICAgICAgICBkZWwgaW5fZGljdFtrZXldCisKKworZGVmIF9wYXRjaF9zdG9wYWxsKCk6CisgICAgIiIiU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIiIiCisgICAgZm9yIHBhdGNoIGluIGxpc3QoX3BhdGNoLl9hY3RpdmVfcGF0Y2hlcyk6CisgICAgICAgIHBhdGNoLnN0b3AoKQorCisKK3BhdGNoLm9iamVjdCA9IF9wYXRjaF9vYmplY3QKK3BhdGNoLmRpY3QgPSBfcGF0Y2hfZGljdAorcGF0Y2gubXVsdGlwbGUgPSBfcGF0Y2hfbXVsdGlwbGUKK3BhdGNoLnN0b3BhbGwgPSBfcGF0Y2hfc3RvcGFsbAorcGF0Y2guVEVTVF9QUkVGSVggPSAndGVzdCcKKworbWFnaWNfbWV0aG9kcyA9ICgKKyAgICAibHQgbGUgZ3QgZ2UgZXEgbmUgIgorICAgICJnZXRpdGVtIHNldGl0ZW0gZGVsaXRlbSAiCisgICAgImxlbiBjb250YWlucyBpdGVyICIKKyAgICAiaGFzaCBzdHIgc2l6ZW9mICIKKyAgICAiZW50ZXIgZXhpdCAiCisgICAgImRpdm1vZCBuZWcgcG9zIGFicyBpbnZlcnQgIgorICAgICJjb21wbGV4IGludCBmbG9hdCBpbmRleCAiCisgICAgInRydW5jIGZsb29yIGNlaWwgIgorICAgICJib29sIG5leHQgIgorKQorCitudW1lcmljcyA9ICJhZGQgc3ViIG11bCBkaXYgZmxvb3JkaXYgbW9kIGxzaGlmdCByc2hpZnQgYW5kIHhvciBvciBwb3cgIgoraW5wbGFjZSA9ICcgJy5qb2luKCdpJXMnICUgbiBmb3IgbiBpbiBudW1lcmljcy5zcGxpdCgpKQorcmlnaHQgPSAnICcuam9pbignciVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKKworIyBub3QgaW5jbHVkaW5nIF9fcHJlcGFyZV9fLCBfX2luc3RhbmNlY2hlY2tfXywgX19zdWJjbGFzc2NoZWNrX18KKyMgKGFzIHRoZXkgYXJlIG1ldGFjbGFzcyBtZXRob2RzKQorIyBfX2RlbF9fIGlzIG5vdCBzdXBwb3J0ZWQgYXQgYWxsIGFzIGl0IGNhdXNlcyBwcm9ibGVtcyBpZiBpdCBleGlzdHMKKworX25vbl9kZWZhdWx0cyA9IHNldCgnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluIFsKKyAgICAnZ2V0JywgJ3NldCcsICdkZWxldGUnLCAncmV2ZXJzZWQnLCAnbWlzc2luZycsICdyZWR1Y2UnLCAncmVkdWNlX2V4JywKKyAgICAnZ2V0aW5pdGFyZ3MnLCAnZ2V0bmV3YXJncycsICdnZXRzdGF0ZScsICdzZXRzdGF0ZScsICdnZXRmb3JtYXQnLAorICAgICdzZXRmb3JtYXQnLCAncmVwcicsICdkaXInLCAnc3ViY2xhc3NlcycsICdmb3JtYXQnLAorXSkKKworCitkZWYgX2dldF9tZXRob2QobmFtZSwgZnVuYyk6CisgICAgIlR1cm5zIGEgY2FsbGFibGUgb2JqZWN0IChsaWtlIGEgbW9jaykgaW50byBhIHJlYWwgZnVuY3Rpb24iCisgICAgZGVmIG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHJldHVybiBmdW5jKHNlbGYsICphcmdzLCAqKmt3KQorICAgIG1ldGhvZC5fX25hbWVfXyA9IG5hbWUKKyAgICByZXR1cm4gbWV0aG9kCisKKworX21hZ2ljcyA9IHNldCgKKyAgICAnX18lc19fJyAlIG1ldGhvZCBmb3IgbWV0aG9kIGluCisgICAgJyAnLmpvaW4oW21hZ2ljX21ldGhvZHMsIG51bWVyaWNzLCBpbnBsYWNlLCByaWdodF0pLnNwbGl0KCkKKykKKworX2FsbF9tYWdpY3MgPSBfbWFnaWNzIHwgX25vbl9kZWZhdWx0cworCitfdW5zdXBwb3J0ZWRfbWFnaWNzID0gc2V0KFsKKyAgICAnX19nZXRhdHRyX18nLCAnX19zZXRhdHRyX18nLAorICAgICdfX2luaXRfXycsICdfX25ld19fJywgJ19fcHJlcGFyZV9fJworICAgICdfX2luc3RhbmNlY2hlY2tfXycsICdfX3N1YmNsYXNzY2hlY2tfXycsCisgICAgJ19fZGVsX18nCitdKQorCitfY2FsY3VsYXRlX3JldHVybl92YWx1ZSA9IHsKKyAgICAnX19oYXNoX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9faGFzaF9fKHNlbGYpLAorICAgICdfX3N0cl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3N0cl9fKHNlbGYpLAorICAgICdfX3NpemVvZl9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX3NpemVvZl9fKHNlbGYpLAorfQorCitfcmV0dXJuX3ZhbHVlcyA9IHsKKyAgICAnX19sdF9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19fZ3RfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2xlX18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19nZV9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19faW50X18nOiAxLAorICAgICdfX2NvbnRhaW5zX18nOiBGYWxzZSwKKyAgICAnX19sZW5fXyc6IDAsCisgICAgJ19fZXhpdF9fJzogRmFsc2UsCisgICAgJ19fY29tcGxleF9fJzogMWosCisgICAgJ19fZmxvYXRfXyc6IDEuMCwKKyAgICAnX19ib29sX18nOiBUcnVlLAorICAgICdfX2luZGV4X18nOiAxLAorfQorCisKK2RlZiBfZ2V0X2VxKHNlbGYpOgorICAgIGRlZiBfX2VxX18ob3RoZXIpOgorICAgICAgICByZXRfdmFsID0gc2VsZi5fX2VxX18uX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHJldF92YWwgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gcmV0X3ZhbAorICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgorICAgIHJldHVybiBfX2VxX18KKworZGVmIF9nZXRfbmUoc2VsZik6CisgICAgZGVmIF9fbmVfXyhvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX19uZV9fLl9tb2NrX3JldHVybl92YWx1ZSBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIHJldHVybiBzZWxmIGlzIG5vdCBvdGhlcgorICAgIHJldHVybiBfX25lX18KKworZGVmIF9nZXRfaXRlcihzZWxmKToKKyAgICBkZWYgX19pdGVyX18oKToKKyAgICAgICAgcmV0X3ZhbCA9IHNlbGYuX19pdGVyX18uX21vY2tfcmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICAjIGlmIHJldF92YWwgd2FzIGFscmVhZHkgYW4gaXRlcmF0b3IsIHRoZW4gY2FsbGluZyBpdGVyIG9uIGl0IHNob3VsZAorICAgICAgICAjIHJldHVybiB0aGUgaXRlcmF0b3IgdW5jaGFuZ2VkCisgICAgICAgIHJldHVybiBpdGVyKHJldF92YWwpCisgICAgcmV0dXJuIF9faXRlcl9fCisKK19zaWRlX2VmZmVjdF9tZXRob2RzID0geworICAgICdfX2VxX18nOiBfZ2V0X2VxLAorICAgICdfX25lX18nOiBfZ2V0X25lLAorICAgICdfX2l0ZXJfXyc6IF9nZXRfaXRlciwKK30KKworCisKK2RlZiBfc2V0X3JldHVybl92YWx1ZShtb2NrLCBtZXRob2QsIG5hbWUpOgorICAgIGZpeGVkID0gX3JldHVybl92YWx1ZXMuZ2V0KG5hbWUsIERFRkFVTFQpCisgICAgaWYgZml4ZWQgaXMgbm90IERFRkFVTFQ6CisgICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSBmaXhlZAorICAgICAgICByZXR1cm4KKworICAgIHJldHVybl9jYWx1bGF0b3IgPSBfY2FsY3VsYXRlX3JldHVybl92YWx1ZS5nZXQobmFtZSkKKyAgICBpZiByZXR1cm5fY2FsdWxhdG9yIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSByZXR1cm5fY2FsdWxhdG9yKG1vY2spCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgWFhYWCB3aHkgZG8gd2UgcmV0dXJuIEF0dHJpYnV0ZUVycm9yIGhlcmU/CisgICAgICAgICAgICAjICAgICAgc2V0IGl0IGFzIGEgc2lkZV9lZmZlY3QgaW5zdGVhZD8KKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIG1ldGhvZC5yZXR1cm5fdmFsdWUgPSByZXR1cm5fdmFsdWUKKyAgICAgICAgcmV0dXJuCisKKyAgICBzaWRlX2VmZmVjdG9yID0gX3NpZGVfZWZmZWN0X21ldGhvZHMuZ2V0KG5hbWUpCisgICAgaWYgc2lkZV9lZmZlY3RvciBpcyBub3QgTm9uZToKKyAgICAgICAgbWV0aG9kLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3Rvcihtb2NrKQorCisKKworY2xhc3MgTWFnaWNNaXhpbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIF9zYWZlX3N1cGVyKE1hZ2ljTWl4aW4sIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKyAgICBkZWYgX21vY2tfc2V0X21hZ2ljcyhzZWxmKToKKyAgICAgICAgdGhlc2VfbWFnaWNzID0gX21hZ2ljcworCisgICAgICAgIGlmIHNlbGYuX21vY2tfbWV0aG9kcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRoZXNlX21hZ2ljcyA9IF9tYWdpY3MuaW50ZXJzZWN0aW9uKHNlbGYuX21vY2tfbWV0aG9kcykKKworICAgICAgICAgICAgcmVtb3ZlX21hZ2ljcyA9IHNldCgpCisgICAgICAgICAgICByZW1vdmVfbWFnaWNzID0gX21hZ2ljcyAtIHRoZXNlX21hZ2ljcworCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gcmVtb3ZlX21hZ2ljczoKKyAgICAgICAgICAgICAgICBpZiBlbnRyeSBpbiB0eXBlKHNlbGYpLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAjIHJlbW92ZSB1bm5lZWRlZCBtYWdpYyBtZXRob2RzCisgICAgICAgICAgICAgICAgICAgIGRlbGF0dHIoc2VsZiwgZW50cnkpCisKKyAgICAgICAgIyBkb24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgYXR0cmlidXRlcyBpZiBjYWxsZWQgYSBzZWNvbmQgdGltZQorICAgICAgICB0aGVzZV9tYWdpY3MgPSB0aGVzZV9tYWdpY3MgLSBzZXQodHlwZShzZWxmKS5fX2RpY3RfXykKKworICAgICAgICBfdHlwZSA9IHR5cGUoc2VsZikKKyAgICAgICAgZm9yIGVudHJ5IGluIHRoZXNlX21hZ2ljczoKKyAgICAgICAgICAgIHNldGF0dHIoX3R5cGUsIGVudHJ5LCBNYWdpY1Byb3h5KGVudHJ5LCBzZWxmKSkKKworCisKK2NsYXNzIE5vbkNhbGxhYmxlTWFnaWNNb2NrKE1hZ2ljTWl4aW4sIE5vbkNhbGxhYmxlTW9jayk6CisgICAgIiIiQSB2ZXJzaW9uIG9mIGBNYWdpY01vY2tgIHRoYXQgaXNuJ3QgY2FsbGFibGUuIiIiCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisgICAgICAgIHNlbGYuX21vY2tfc2V0X21hZ2ljcygpCisKKworCitjbGFzcyBNYWdpY01vY2soTWFnaWNNaXhpbiwgTW9jayk6CisgICAgIiIiCisgICAgTWFnaWNNb2NrIGlzIGEgc3ViY2xhc3Mgb2YgTW9jayB3aXRoIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zCisgICAgb2YgbW9zdCBvZiB0aGUgbWFnaWMgbWV0aG9kcy4gWW91IGNhbiB1c2UgTWFnaWNNb2NrIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgY29uZmlndXJlIHRoZSBtYWdpYyBtZXRob2RzIHlvdXJzZWxmLgorCisgICAgSWYgeW91IHVzZSB0aGUgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJndW1lbnRzIHRoZW4gKm9ubHkqIG1hZ2ljCisgICAgbWV0aG9kcyB0aGF0IGV4aXN0IGluIHRoZSBzcGVjIHdpbGwgYmUgY3JlYXRlZC4KKworICAgIEF0dHJpYnV0ZXMgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBgTWFnaWNNb2NrYCB3aWxsIGFsc28gYmUgYE1hZ2ljTW9ja3NgLgorICAgICIiIgorICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKKyAgICAgICAgIiIiQWRkIGEgc3BlYyB0byBhIG1vY2suIGBzcGVjYCBjYW4gZWl0aGVyIGJlIGFuIG9iamVjdCBvciBhCisgICAgICAgIGxpc3Qgb2Ygc3RyaW5ncy4gT25seSBhdHRyaWJ1dGVzIG9uIHRoZSBgc3BlY2AgY2FuIGJlIGZldGNoZWQgYXMKKyAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgorCisgICAgICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LiIiIgorICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKworY2xhc3MgTWFnaWNQcm94eShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXJlbnQpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgbSA9IHNlbGYuY3JlYXRlX21vY2soKQorICAgICAgICByZXR1cm4gbSgqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgY3JlYXRlX21vY2soc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5uYW1lCisgICAgICAgIHBhcmVudCA9IHNlbGYucGFyZW50CisgICAgICAgIG0gPSBwYXJlbnQuX2dldF9jaGlsZF9tb2NrKG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25ld19wYXJlbnQ9cGFyZW50KQorICAgICAgICBzZXRhdHRyKHBhcmVudCwgZW50cnksIG0pCisgICAgICAgIF9zZXRfcmV0dXJuX3ZhbHVlKHBhcmVudCwgbSwgZW50cnkpCisgICAgICAgIHJldHVybiBtCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIF90eXBlPU5vbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5jcmVhdGVfbW9jaygpCisKKworCitjbGFzcyBfQU5ZKG9iamVjdCk6CisgICAgIkEgaGVscGVyIG9iamVjdCB0aGF0IGNvbXBhcmVzIGVxdWFsIHRvIGV2ZXJ5dGhpbmcuIgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPEFOWT4nCisKK0FOWSA9IF9BTlkoKQorCisKKworZGVmIF9mb3JtYXRfY2FsbF9zaWduYXR1cmUobmFtZSwgYXJncywga3dhcmdzKToKKyAgICBtZXNzYWdlID0gJyVzKCUlcyknICUgbmFtZQorICAgIGZvcm1hdHRlZF9hcmdzID0gJycKKyAgICBhcmdzX3N0cmluZyA9ICcsICcuam9pbihbcmVwcihhcmcpIGZvciBhcmcgaW4gYXJnc10pCisgICAga3dhcmdzX3N0cmluZyA9ICcsICcuam9pbihbCisgICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICBdKQorICAgIGlmIGFyZ3Nfc3RyaW5nOgorICAgICAgICBmb3JtYXR0ZWRfYXJncyA9IGFyZ3Nfc3RyaW5nCisgICAgaWYga3dhcmdzX3N0cmluZzoKKyAgICAgICAgaWYgZm9ybWF0dGVkX2FyZ3M6CisgICAgICAgICAgICBmb3JtYXR0ZWRfYXJncyArPSAnLCAnCisgICAgICAgIGZvcm1hdHRlZF9hcmdzICs9IGt3YXJnc19zdHJpbmcKKworICAgIHJldHVybiBtZXNzYWdlICUgZm9ybWF0dGVkX2FyZ3MKKworCisKK2NsYXNzIF9DYWxsKHR1cGxlKToKKyAgICAiIiIKKyAgICBBIHR1cGxlIGZvciBob2xkaW5nIHRoZSByZXN1bHRzIG9mIGEgY2FsbCB0byBhIG1vY2ssIGVpdGhlciBpbiB0aGUgZm9ybQorICAgIGAoYXJncywga3dhcmdzKWAgb3IgYChuYW1lLCBhcmdzLCBrd2FyZ3MpYC4KKworICAgIElmIGFyZ3Mgb3Iga3dhcmdzIGFyZSBlbXB0eSB0aGVuIGEgY2FsbCB0dXBsZSB3aWxsIGNvbXBhcmUgZXF1YWwgdG8KKyAgICBhIHR1cGxlIHdpdGhvdXQgdGhvc2UgdmFsdWVzLiBUaGlzIG1ha2VzIGNvbXBhcmlzb25zIGxlc3MgdmVyYm9zZTo6CisKKyAgICAgICAgX0NhbGwoKCduYW1lJywgKCksIHt9KSkgPT0gKCduYW1lJywpCisgICAgICAgIF9DYWxsKCgnbmFtZScsICgxLCksIHt9KSkgPT0gKCduYW1lJywgKDEsKSkKKyAgICAgICAgX0NhbGwoKCgpLCB7J2EnOiAnYid9KSkgPT0gKHsnYSc6ICdiJ30sKQorCisgICAgVGhlIGBfQ2FsbGAgb2JqZWN0IHByb3ZpZGVzIGEgdXNlZnVsIHNob3J0Y3V0IGZvciBjb21wYXJpbmcgd2l0aCBjYWxsOjoKKworICAgICAgICBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSkpID09IGNhbGwoMSwgMiwgYT0zKQorICAgICAgICBfQ2FsbCgoJ2ZvbycsICgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsLmZvbygxLCAyLCBhPTMpCisKKyAgICBJZiB0aGUgX0NhbGwgaGFzIG5vIG5hbWUgdGhlbiBpdCB3aWxsIG1hdGNoIGFueSBuYW1lLgorICAgICIiIgorICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9KCksIG5hbWU9Tm9uZSwgcGFyZW50PU5vbmUsIHR3bz1GYWxzZSwKKyAgICAgICAgICAgICAgICBmcm9tX2thbGw9VHJ1ZSk6CisgICAgICAgIG5hbWUgPSAnJworICAgICAgICBhcmdzID0gKCkKKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAgX2xlbiA9IGxlbih2YWx1ZSkKKyAgICAgICAgaWYgX2xlbiA9PSAzOgorICAgICAgICAgICAgbmFtZSwgYXJncywga3dhcmdzID0gdmFsdWUKKyAgICAgICAgZWxpZiBfbGVuID09IDI6CisgICAgICAgICAgICBmaXJzdCwgc2Vjb25kID0gdmFsdWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlyc3QsIHN0cik6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZpcnN0CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWNvbmQsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9IHNlY29uZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IHNlY29uZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBmaXJzdCwgc2Vjb25kCisgICAgICAgIGVsaWYgX2xlbiA9PSAxOgorICAgICAgICAgICAgdmFsdWUsID0gdmFsdWUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgbmFtZSA9IHZhbHVlCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAga3dhcmdzID0gdmFsdWUKKworICAgICAgICBpZiB0d286CisgICAgICAgICAgICByZXR1cm4gdHVwbGUuX19uZXdfXyhjbHMsIChhcmdzLCBrd2FyZ3MpKQorCisgICAgICAgIHJldHVybiB0dXBsZS5fX25ld19fKGNscywgKG5hbWUsIGFyZ3MsIGt3YXJncykpCisKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZT0oKSwgbmFtZT1Ob25lLCBwYXJlbnQ9Tm9uZSwgdHdvPUZhbHNlLAorICAgICAgICAgICAgICAgICBmcm9tX2thbGw9VHJ1ZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5mcm9tX2thbGwgPSBmcm9tX2thbGwKKworCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG90aGVyIGlzIEFOWToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxlbl9vdGhlciA9IGxlbihvdGhlcikKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlbGZfbmFtZSA9ICcnCisgICAgICAgIGlmIGxlbihzZWxmKSA9PSAyOgorICAgICAgICAgICAgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGZfbmFtZSwgc2VsZl9hcmdzLCBzZWxmX2t3YXJncyA9IHNlbGYKKworICAgICAgICBvdGhlcl9uYW1lID0gJycKKyAgICAgICAgaWYgbGVuX290aGVyID09IDA6CisgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwge30KKyAgICAgICAgZWxpZiBsZW5fb3RoZXIgPT0gMzoKKyAgICAgICAgICAgIG90aGVyX25hbWUsIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IG90aGVyCisgICAgICAgIGVsaWYgbGVuX290aGVyID09IDE6CisgICAgICAgICAgICB2YWx1ZSwgPSBvdGhlcgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSB2YWx1ZQorICAgICAgICAgICAgICAgIG90aGVyX2t3YXJncyA9IHt9CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAgICAgb3RoZXJfbmFtZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHt9CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MgPSAoKQorICAgICAgICAgICAgICAgIG90aGVyX2t3YXJncyA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGxlbiAyCisgICAgICAgICAgICAjIGNvdWxkIGJlIChuYW1lLCBhcmdzKSBvciAobmFtZSwga3dhcmdzKSBvciAoYXJncywga3dhcmdzKQorICAgICAgICAgICAgZmlyc3QsIHNlY29uZCA9IG90aGVyCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpcnN0LCBzdHIpOgorICAgICAgICAgICAgICAgIG90aGVyX25hbWUgPSBmaXJzdAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2Vjb25kLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IHNlY29uZCwge30KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSAoKSwgc2Vjb25kCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9IGZpcnN0LCBzZWNvbmQKKworICAgICAgICBpZiBzZWxmX25hbWUgYW5kIG90aGVyX25hbWUgIT0gc2VsZl9uYW1lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyB0aGlzIG9yZGVyIGlzIGltcG9ydGFudCBmb3IgQU5ZIHRvIHdvcmshCisgICAgICAgIHJldHVybiAob3RoZXJfYXJncywgb3RoZXJfa3dhcmdzKSA9PSAoc2VsZl9hcmdzLCBzZWxmX2t3YXJncykKKworCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCisKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfQ2FsbCgoJycsIGFyZ3MsIGt3YXJncyksIG5hbWU9JygpJykKKworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJygpJworICAgICAgICByZXR1cm4gX0NhbGwoKHNlbGYubmFtZSwgYXJncywga3dhcmdzKSwgbmFtZT1uYW1lLCBwYXJlbnQ9c2VsZikKKworCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICBpZiBzZWxmLm5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBfQ2FsbChuYW1lPWF0dHIsIGZyb21fa2FsbD1GYWxzZSkKKyAgICAgICAgbmFtZSA9ICclcy4lcycgJSAoc2VsZi5uYW1lLCBhdHRyKQorICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1uYW1lLCBwYXJlbnQ9c2VsZiwgZnJvbV9rYWxsPUZhbHNlKQorCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmZyb21fa2FsbDoKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgb3IgJ2NhbGwnCisgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJygpJyk6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsJXMnICUgbmFtZQorICAgICAgICAgICAgcmV0dXJuIG5hbWUKKworICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKKyAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKKyAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHNlbGYKKyAgICAgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCcKKyAgICAgICAgICAgIGVsaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnKCknKToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwuJXMnICUgbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwlcycgJSBuYW1lCisgICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncykKKworCisgICAgZGVmIGNhbGxfbGlzdChzZWxmKToKKyAgICAgICAgIiIiRm9yIGEgY2FsbCBvYmplY3QgdGhhdCByZXByZXNlbnRzIG11bHRpcGxlIGNhbGxzLCBgY2FsbF9saXN0YAorICAgICAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGludGVybWVkaWF0ZSBjYWxscyBhcyB3ZWxsIGFzIHRoZQorICAgICAgICBmaW5hbCBjYWxsLiIiIgorICAgICAgICB2YWxzID0gW10KKyAgICAgICAgdGhpbmcgPSBzZWxmCisgICAgICAgIHdoaWxlIHRoaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdGhpbmcuZnJvbV9rYWxsOgorICAgICAgICAgICAgICAgIHZhbHMuYXBwZW5kKHRoaW5nKQorICAgICAgICAgICAgdGhpbmcgPSB0aGluZy5wYXJlbnQKKyAgICAgICAgcmV0dXJuIF9DYWxsTGlzdChyZXZlcnNlZCh2YWxzKSkKKworCitjYWxsID0gX0NhbGwoZnJvbV9rYWxsPUZhbHNlKQorCisKKworZGVmIGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSwgaW5zdGFuY2U9RmFsc2UsIF9wYXJlbnQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgX25hbWU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIkNyZWF0ZSBhIG1vY2sgb2JqZWN0IHVzaW5nIGFub3RoZXIgb2JqZWN0IGFzIGEgc3BlYy4gQXR0cmlidXRlcyBvbiB0aGUKKyAgICBtb2NrIHdpbGwgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvbiB0aGUgYHNwZWNgIG9iamVjdCBhcyB0aGVpcgorICAgIHNwZWMuCisKKyAgICBGdW5jdGlvbnMgb3IgbWV0aG9kcyBiZWluZyBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkCisgICAgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBzaWduYXR1cmUuCisKKyAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBhdHRlbXB0aW5nIHRvIHNldCBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QKKyAgICBvbiB0aGUgc3BlYyBvYmplY3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgSWYgYSBjbGFzcyBpcyB1c2VkIGFzIGEgc3BlYyB0aGVuIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIG1vY2sgKHRoZQorICAgIGluc3RhbmNlIG9mIHRoZSBjbGFzcykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuIFlvdSBjYW4gdXNlIGEgY2xhc3MgYXMgdGhlCisgICAgc3BlYyBmb3IgYW4gaW5zdGFuY2Ugb2JqZWN0IGJ5IHBhc3NpbmcgYGluc3RhbmNlPVRydWVgLiBUaGUgcmV0dXJuZWQgbW9jaworICAgIHdpbGwgb25seSBiZSBjYWxsYWJsZSBpZiBpbnN0YW5jZXMgb2YgdGhlIG1vY2sgYXJlIGNhbGxhYmxlLgorCisgICAgYGNyZWF0ZV9hdXRvc3BlY2AgYWxzbyB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvCisgICAgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBjcmVhdGVkIG1vY2suIiIiCisgICAgaWYgX2lzX2xpc3Qoc3BlYyk6CisgICAgICAgICMgY2FuJ3QgcGFzcyBhIGxpc3QgaW5zdGFuY2UgdG8gdGhlIG1vY2sgY29uc3RydWN0b3IgYXMgaXQgd2lsbCBiZQorICAgICAgICAjIGludGVycHJldGVkIGFzIGEgbGlzdCBvZiBzdHJpbmdzCisgICAgICAgIHNwZWMgPSB0eXBlKHNwZWMpCisKKyAgICBpc190eXBlID0gaXNpbnN0YW5jZShzcGVjLCB0eXBlKQorCisgICAgX2t3YXJncyA9IHsnc3BlYyc6IHNwZWN9CisgICAgaWYgc3BlY19zZXQ6CisgICAgICAgIF9rd2FyZ3MgPSB7J3NwZWNfc2V0Jzogc3BlY30KKyAgICBlbGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgIyBOb25lIHdlIG1vY2sgd2l0aCBhIG5vcm1hbCBtb2NrIHdpdGhvdXQgYSBzcGVjCisgICAgICAgIF9rd2FyZ3MgPSB7fQorCisgICAgX2t3YXJncy51cGRhdGUoa3dhcmdzKQorCisgICAgS2xhc3MgPSBNYWdpY01vY2sKKyAgICBpZiB0eXBlKHNwZWMpIGluIERlc2NyaXB0b3JUeXBlczoKKyAgICAgICAgIyBkZXNjcmlwdG9ycyBkb24ndCBoYXZlIGEgc3BlYworICAgICAgICAjIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IHR5cGUgdGhleSByZXR1cm4KKyAgICAgICAgX2t3YXJncyA9IHt9CisgICAgZWxpZiBub3QgX2NhbGxhYmxlKHNwZWMpOgorICAgICAgICBLbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgZWxpZiBpc190eXBlIGFuZCBpbnN0YW5jZSBhbmQgbm90IF9pbnN0YW5jZV9jYWxsYWJsZShzcGVjKToKKyAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgX25ld19uYW1lID0gX25hbWUKKyAgICBpZiBfcGFyZW50IGlzIE5vbmU6CisgICAgICAgICMgZm9yIGEgdG9wIGxldmVsIG9iamVjdCBubyBfbmV3X25hbWUgc2hvdWxkIGJlIHNldAorICAgICAgICBfbmV3X25hbWUgPSAnJworCisgICAgbW9jayA9IEtsYXNzKHBhcmVudD1fcGFyZW50LCBfbmV3X3BhcmVudD1fcGFyZW50LCBfbmV3X25hbWU9X25ld19uYW1lLAorICAgICAgICAgICAgICAgICBuYW1lPV9uYW1lLCAqKl9rd2FyZ3MpCisKKyAgICBpZiBpc2luc3RhbmNlKHNwZWMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAjIHNob3VsZCBvbmx5IGhhcHBlbiBhdCB0aGUgdG9wIGxldmVsIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgIyByZWN1cnNlIGZvciBmdW5jdGlvbnMKKyAgICAgICAgbW9jayA9IF9zZXRfc2lnbmF0dXJlKG1vY2ssIHNwZWMpCisgICAgZWxzZToKKyAgICAgICAgX2NoZWNrX3NpZ25hdHVyZShzcGVjLCBtb2NrLCBpc190eXBlLCBpbnN0YW5jZSkKKworICAgIGlmIF9wYXJlbnQgaXMgbm90IE5vbmUgYW5kIG5vdCBpbnN0YW5jZToKKyAgICAgICAgX3BhcmVudC5fbW9ja19jaGlsZHJlbltfbmFtZV0gPSBtb2NrCisKKyAgICBpZiBpc190eXBlIGFuZCBub3QgaW5zdGFuY2UgYW5kICdyZXR1cm5fdmFsdWUnIG5vdCBpbiBrd2FyZ3M6CisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0LCBpbnN0YW5jZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZT0nKCknLCBfcGFyZW50PW1vY2spCisKKyAgICBmb3IgZW50cnkgaW4gZGlyKHNwZWMpOgorICAgICAgICBpZiBfaXNfbWFnaWMoZW50cnkpOgorICAgICAgICAgICAgIyBNYWdpY01vY2sgYWxyZWFkeSBkb2VzIHRoZSB1c2VmdWwgbWFnaWMgbWV0aG9kcyBmb3IgdXMKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBYWFhYIGRvIHdlIG5lZWQgYSBiZXR0ZXIgd2F5IG9mIGdldHRpbmcgYXR0cmlidXRlcyB3aXRob3V0CisgICAgICAgICMgdHJpZ2dlcmluZyBjb2RlIGV4ZWN1dGlvbiAoPykgUHJvYmFibHkgbm90IC0gd2UgbmVlZCB0aGUgYWN0dWFsCisgICAgICAgICMgb2JqZWN0IHRvIG1vY2sgaXQgc28gd2Ugd291bGQgcmF0aGVyIHRyaWdnZXIgYSBwcm9wZXJ0eSB0aGFuIG1vY2sKKyAgICAgICAgIyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvci4gTGlrZXdpc2Ugd2Ugd2FudCB0byBtb2NrIG91dCBkeW5hbWljYWxseQorICAgICAgICAjIHByb3ZpZGVkIGF0dHJpYnV0ZXMuCisgICAgICAgICMgWFhYWCB3aGF0IGFib3V0IGF0dHJpYnV0ZXMgdGhhdCByYWlzZSBleGNlcHRpb25zIG90aGVyIHRoYW4KKyAgICAgICAgIyBBdHRyaWJ1dGVFcnJvciBvbiBiZWluZyBmZXRjaGVkPworICAgICAgICAjIHdlIGNvdWxkIGJlIHJlc2lsaWVudCBhZ2FpbnN0IGl0LCBvciBjYXRjaCBhbmQgcHJvcGFnYXRlIHRoZQorICAgICAgICAjIGV4Y2VwdGlvbiB3aGVuIHRoZSBhdHRyaWJ1dGUgaXMgZmV0Y2hlZCBmcm9tIHRoZSBtb2NrCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdpbmFsID0gZ2V0YXR0cihzcGVjLCBlbnRyeSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBrd2FyZ3MgPSB7J3NwZWMnOiBvcmlnaW5hbH0KKyAgICAgICAgaWYgc3BlY19zZXQ6CisgICAgICAgICAgICBrd2FyZ3MgPSB7J3NwZWNfc2V0Jzogb3JpZ2luYWx9CisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3JpZ2luYWwsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgbmV3ID0gX1NwZWNTdGF0ZShvcmlnaW5hbCwgc3BlY19zZXQsIG1vY2ssIGVudHJ5LCBpbnN0YW5jZSkKKyAgICAgICAgICAgIG1vY2suX21vY2tfY2hpbGRyZW5bZW50cnldID0gbmV3CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXJlbnQgPSBtb2NrCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNwZWMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgICAgIHBhcmVudCA9IG1vY2subW9jaworCisgICAgICAgICAgICBuZXcgPSBNYWdpY01vY2socGFyZW50PXBhcmVudCwgbmFtZT1lbnRyeSwgX25ld19uYW1lPWVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXBhcmVudCwgKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldworICAgICAgICAgICAgc2tpcGZpcnN0ID0gX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSkKKyAgICAgICAgICAgIF9jaGVja19zaWduYXR1cmUob3JpZ2luYWwsIG5ldywgc2tpcGZpcnN0PXNraXBmaXJzdCkKKworICAgICAgICAjIHNvIGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggX3NldF9zaWduYXR1cmUgYmVjb21lIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICAgICAgICMgKnBsdXMqIHRoZWlyIHVuZGVybHlpbmcgbW9jayBleGlzdHMgaW4gX21vY2tfY2hpbGRyZW4gb2YgdGhlIHBhcmVudAorICAgICAgICAjIG1vY2suIEFkZGluZyB0byBfbW9ja19jaGlsZHJlbiBtYXkgYmUgdW5uZWNlc3Nhcnkgd2hlcmUgd2UgYXJlIGFsc28KKyAgICAgICAgIyBzZXR0aW5nIGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZT8KKyAgICAgICAgaWYgaXNpbnN0YW5jZShuZXcsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAgICAgc2V0YXR0cihtb2NrLCBlbnRyeSwgbmV3KQorCisgICAgcmV0dXJuIG1vY2sKKworCitkZWYgX211c3Rfc2tpcChzcGVjLCBlbnRyeSwgaXNfdHlwZSk6CisgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CisgICAgICAgIGlmIGVudHJ5IGluIGdldGF0dHIoc3BlYywgJ19fZGljdF9fJywge30pOgorICAgICAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGUgLSBzaG91bGRuJ3Qgc2tpcAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHNwZWMgPSBzcGVjLl9fY2xhc3NfXworCisgICAgZm9yIGtsYXNzIGluIHNwZWMuX19tcm9fXzoKKyAgICAgICAgcmVzdWx0ID0ga2xhc3MuX19kaWN0X18uZ2V0KGVudHJ5LCBERUZBVUxUKQorICAgICAgICBpZiByZXN1bHQgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCAoc3RhdGljbWV0aG9kLCBjbGFzc21ldGhvZCkpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBpc190eXBlCisKKyAgICAjIHNob3VsZG4ndCBnZXQgaGVyZSB1bmxlc3MgZnVuY3Rpb24gaXMgYSBkeW5hbWljYWxseSBwcm92aWRlZCBhdHRyaWJ1dGUKKyAgICAjIFhYWFggdW50ZXN0ZWQgYmVoYXZpb3VyCisgICAgcmV0dXJuIGlzX3R5cGUKKworCitkZWYgX2dldF9jbGFzcyhvYmopOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIG9iai5fX2NsYXNzX18KKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgaXQgaXMgcG9zc2libGUgZm9yIG9iamVjdHMgdG8gaGF2ZSBubyBfX2NsYXNzX18KKyAgICAgICAgcmV0dXJuIHR5cGUob2JqKQorCisKK2NsYXNzIF9TcGVjU3RhdGUob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSwgcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgIG5hbWU9Tm9uZSwgaWRzPU5vbmUsIGluc3RhbmNlPUZhbHNlKToKKyAgICAgICAgc2VsZi5zcGVjID0gc3BlYworICAgICAgICBzZWxmLmlkcyA9IGlkcworICAgICAgICBzZWxmLnNwZWNfc2V0ID0gc3BlY19zZXQKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5pbnN0YW5jZSA9IGluc3RhbmNlCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworCitGdW5jdGlvblR5cGVzID0gKAorICAgICMgcHl0aG9uIGZ1bmN0aW9uCisgICAgdHlwZShjcmVhdGVfYXV0b3NwZWMpLAorICAgICMgaW5zdGFuY2UgbWV0aG9kCisgICAgdHlwZShBTlkuX19lcV9fKSwKKykKKworCitmaWxlX3NwZWMgPSBOb25lCisKKworZGVmIG1vY2tfb3Blbihtb2NrPU5vbmUsIHJlYWRfZGF0YT0nJyk6CisgICAgIiIiCisgICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbW9jayB0byByZXBsYWNlIHRoZSB1c2Ugb2YgYG9wZW5gLiBJdCB3b3JrcworICAgIGZvciBgb3BlbmAgY2FsbGVkIGRpcmVjdGx5IG9yIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBUaGUgYG1vY2tgIGFyZ3VtZW50IGlzIHRoZSBtb2NrIG9iamVjdCB0byBjb25maWd1cmUuIElmIGBOb25lYCAodGhlCisgICAgZGVmYXVsdCkgdGhlbiBhIGBNYWdpY01vY2tgIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LCB3aXRoIHRoZSBBUEkgbGltaXRlZAorICAgIHRvIG1ldGhvZHMgb3IgYXR0cmlidXRlcyBhdmFpbGFibGUgb24gc3RhbmRhcmQgZmlsZSBoYW5kbGVzLgorCisgICAgYHJlYWRfZGF0YWAgaXMgYSBzdHJpbmcgZm9yIHRoZSBgcmVhZGAgbWV0aG9kIG9mIHRoZSBmaWxlIGhhbmRsZSB0byByZXR1cm4uCisgICAgVGhpcyBpcyBhbiBlbXB0eSBzdHJpbmcgYnkgZGVmYXVsdC4KKyAgICAiIiIKKyAgICBnbG9iYWwgZmlsZV9zcGVjCisgICAgaWYgZmlsZV9zcGVjIGlzIE5vbmU6CisgICAgICAgIGltcG9ydCBfaW8KKyAgICAgICAgZmlsZV9zcGVjID0gbGlzdChzZXQoZGlyKF9pby5UZXh0SU9XcmFwcGVyKSkudW5pb24oc2V0KGRpcihfaW8uQnl0ZXNJTykpKSkKKworICAgIGlmIG1vY2sgaXMgTm9uZToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhuYW1lPSdvcGVuJywgc3BlYz1vcGVuKQorCisgICAgaGFuZGxlID0gTWFnaWNNb2NrKHNwZWM9ZmlsZV9zcGVjKQorICAgIGhhbmRsZS53cml0ZS5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgaGFuZGxlLl9fZW50ZXJfXy5yZXR1cm5fdmFsdWUgPSBoYW5kbGUKKyAgICBoYW5kbGUucmVhZC5yZXR1cm5fdmFsdWUgPSByZWFkX2RhdGEKKworICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gaGFuZGxlCisgICAgcmV0dXJuIG1vY2sKKworCitjbGFzcyBQcm9wZXJ0eU1vY2soTW9jayk6CisgICAgIiIiCisgICAgQSBtb2NrIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgYSBwcm9wZXJ0eSwgb3Igb3RoZXIgZGVzY3JpcHRvciwgb24gYSBjbGFzcy4KKyAgICBgUHJvcGVydHlNb2NrYCBwcm92aWRlcyBgX19nZXRfX2AgYW5kIGBfX3NldF9fYCBtZXRob2RzIHNvIHlvdSBjYW4gc3BlY2lmeQorICAgIGEgcmV0dXJuIHZhbHVlIHdoZW4gaXQgaXMgZmV0Y2hlZC4KKworICAgIEZldGNoaW5nIGEgYFByb3BlcnR5TW9ja2AgaW5zdGFuY2UgZnJvbSBhbiBvYmplY3QgY2FsbHMgdGhlIG1vY2ssIHdpdGgKKyAgICBubyBhcmdzLiBTZXR0aW5nIGl0IGNhbGxzIHRoZSBtb2NrIHdpdGggdGhlIHZhbHVlIGJlaW5nIHNldC4KKyAgICAiIiIKKyAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIE1hZ2ljTW9jaygqKmt3YXJncykKKworICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgb2JqX3R5cGUpOgorICAgICAgICByZXR1cm4gc2VsZigpCisgICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWwpOgorICAgICAgICBzZWxmKHZhbCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkgYi9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CmluZGV4IDQ0YmYxODYuLjk3ZTU0MjYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9yZXN1bHQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3QgcmVzdWx0IG9iamVjdCIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQppbmRleCA5OWI3MzBiLi5jZGFlOGE3IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC9fX2luaXRfXy5weQpAQCAtMTQsNiArMTQsNyBAQAogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQogICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKSkKKyAgICBzdWl0ZS5hZGRUZXN0KGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndW5pdHRlc3QudGVzdC50ZXN0bW9jaycpKQogICAgIHJldHVybiBzdWl0ZQogCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKaW5kZXggZDBiZTE4ZC4uNWNiZmI1MyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvX3Rlc3Rfd2FybmluZ3MucHkKQEAgLTEwLDcgKzEwLDYgQEAKIFNlZSAjMTA1MzUuCiAiIiIKIAotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGExZDIwZWIuLmQ0M2ZlNWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcHJvZHVjdAogCiAKIGNsYXNzIFRlc3RfQXNzZXJ0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDUsNiArMTQ2LDE0IEBACiAgICAgICAgIHNlbGYudGVzdGFibGVUcnVlLl9mb3JtYXRNZXNzYWdlKG9uZSwgJ1x1RkZGRCcpCiAKICAgICBkZWYgYXNzZXJ0TWVzc2FnZXMoc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZXJyb3JzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgbWV0aG9kTmFtZSgqYXJncykgcmFpc2VzIHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2VzLgorICAgICAgICBlcnJvcnMgc2hvdWxkIGJlIGEgbGlzdCBvZiA0IHJlZ2V4IHRoYXQgbWF0Y2ggdGhlIGVycm9yIHdoZW46CisgICAgICAgICAgMSkgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICAyKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAgIDMpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICA0KSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICIiIgogICAgICAgICBkZWYgZ2V0TWV0aG9kKGkpOgogICAgICAgICAgICAgdXNlVGVzdGFibGVGYWxzZSAgPSBpIDwgMgogICAgICAgICAgICAgaWYgdXNlVGVzdGFibGVGYWxzZToKQEAgLTI4NCwzICsyOTMsNjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lJCIsICJeb29wcyQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXnVuZXhwZWN0ZWRseSBpZGVudGljYWw6IE5vbmUkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lIDogb29wcyQiXSkKKworCisgICAgZGVmIGFzc2VydE1lc3NhZ2VzQ00oc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZnVuYywgZXJyb3JzKToKKyAgICAgICAgIiIiCisgICAgICAgIENoZWNrIHRoYXQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZXMgYXJlIHJhaXNlZCB3aGlsZSBleGVjdXRpbmc6CisgICAgICAgICAgd2l0aCBtZXRob2QoKmFyZ3MpOgorICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgKmVycm9ycyogc2hvdWxkIGJlIGEgbGlzdCBvZiA0IHJlZ2V4IHRoYXQgbWF0Y2ggdGhlIGVycm9yIHdoZW46CisgICAgICAgICAgMSkgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICAyKSBsb25nTWVzc2FnZSA9IEZhbHNlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAgIDMpIGxvbmdNZXNzYWdlID0gVHJ1ZSBhbmQgbm8gbXNnIHBhc3NlZDsKKyAgICAgICAgICA0KSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG1zZyBwYXNzZWQ7CisgICAgICAgICIiIgorICAgICAgICBwID0gcHJvZHVjdCgoc2VsZi50ZXN0YWJsZUZhbHNlLCBzZWxmLnRlc3RhYmxlVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICh7fSwgeyJtc2ciOiAib29wcyJ9KSkKKyAgICAgICAgZm9yIChjbHMsIGt3YXJncyksIGVyciBpbiB6aXAocCwgZXJyb3JzKToKKyAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoY2xzLCBtZXRob2ROYW1lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGNscy5mYWlsdXJlRXhjZXB0aW9uLCBlcnIpOgorICAgICAgICAgICAgICAgIHdpdGggbWV0aG9kKCphcmdzLCAqKmt3YXJncykgYXMgY206CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorCisgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0UmFpc2VzJywgKFR5cGVFcnJvciwpLCBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCA6IG9vcHMkJ10pCisKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4KHNlbGYpOgorICAgICAgICAjIHRlc3QgZXJyb3Igbm90IHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFJhaXNlc1JlZ2V4JywgKFR5cGVFcnJvciwgJ3VudXNlZCByZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVHlwZUVycm9yIG5vdCByYWlzZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQgOiBvb3BzJCddKQorICAgICAgICAjIHRlc3QgZXJyb3IgcmFpc2VkIGJ1dCB3aXRoIHdyb25nIG1lc3NhZ2UKKyAgICAgICAgZGVmIHJhaXNlX3dyb25nX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRSYWlzZXNSZWdleCcsIChUeXBlRXJyb3IsICdyZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfd3JvbmdfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iIDogb29wcyQnXSkKKworICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnMnLCAoVXNlcldhcm5pbmcsKSwgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQgOiBvb3BzJCddKQorCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4KHNlbGYpOgorICAgICAgICAjIHRlc3QgZXJyb3Igbm90IHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zUmVnZXgnLCAoVXNlcldhcm5pbmcsICd1bnVzZWQgcmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkIDogb29wcyQnXSkKKyAgICAgICAgIyB0ZXN0IHdhcm5pbmcgcmFpc2VkIGJ1dCB3aXRoIHdyb25nIG1lc3NhZ2UKKyAgICAgICAgZGVmIHJhaXNlX3dyb25nX21lc3NhZ2UoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0V2FybnNSZWdleCcsIChVc2VyV2FybmluZywgJ3JlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV93cm9uZ19tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLCAnXm9vcHMkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIgOiBvb3BzJCddKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CmluZGV4IGM3NGE1MzkuLmZkYjJlNzggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBpbnNwZWN0CiAKIGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKQEAgLTM4NiwyNyArMzg3LDYyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28oKS5pZCgpLCBzdHIpCiAKIAotICAgICMgIklmIHJlc3VsdCBpcyBvbWl0dGVkIG9yIE5vbmUsIGEgdGVtcG9yYXJ5IHJlc3VsdCBvYmplY3QgaXMgY3JlYXRlZAotICAgICMgYW5kIHVzZWQsIGJ1dCBpcyBub3QgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4gQXMgVGVzdENhc2Ugb3ducyB0aGUKKyAgICAjICJJZiByZXN1bHQgaXMgb21pdHRlZCBvciBOb25lLCBhIHRlbXBvcmFyeSByZXN1bHQgb2JqZWN0IGlzIGNyZWF0ZWQsCisgICAgIyB1c2VkLCBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4gQXMgVGVzdENhc2Ugb3ducyB0aGUKICAgICAjIHRlbXBvcmFyeSByZXN1bHQgc3RhcnRUZXN0UnVuIGFuZCBzdG9wVGVzdFJ1biBhcmUgY2FsbGVkLgogCiAgICAgZGVmIHRlc3RfcnVuX191c2VzX2RlZmF1bHRUZXN0UmVzdWx0KHNlbGYpOgogICAgICAgICBldmVudHMgPSBbXQorICAgICAgICBkZWZhdWx0UmVzdWx0ID0gTG9nZ2luZ1Jlc3VsdChldmVudHMpCiAKICAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgogICAgICAgICAgICAgICAgIGV2ZW50cy5hcHBlbmQoJ3Rlc3QnKQogCiAgICAgICAgICAgICBkZWYgZGVmYXVsdFRlc3RSZXN1bHQoc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExvZ2dpbmdSZXN1bHQoZXZlbnRzKQorICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0UmVzdWx0CiAKICAgICAgICAgIyBNYWtlIHJ1bigpIGZpbmQgYSByZXN1bHQgb2JqZWN0IG9uIGl0cyBvd24KLSAgICAgICAgRm9vKCd0ZXN0JykucnVuKCkKKyAgICAgICAgcmVzdWx0ID0gRm9vKCd0ZXN0JykucnVuKCkKIAorICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgZGVmYXVsdFJlc3VsdCkKICAgICAgICAgZXhwZWN0ZWQgPSBbJ3N0YXJ0VGVzdFJ1bicsICdzdGFydFRlc3QnLCAndGVzdCcsICdhZGRTdWNjZXNzJywKICAgICAgICAgICAgICdzdG9wVGVzdCcsICdzdG9wVGVzdFJ1biddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZlbnRzLCBleHBlY3RlZCkKIAorCisgICAgIyAiVGhlIHJlc3VsdCBvYmplY3QgaXMgcmV0dXJuZWQgdG8gcnVuJ3MgY2FsbGVyIgorICAgIGRlZiB0ZXN0X3J1bl9fcmV0dXJuc19naXZlbl9yZXN1bHQoc2VsZik6CisKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKworICAgICAgICByZXR2YWwgPSBGb28oJ3Rlc3QnKS5ydW4ocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgcmVzdWx0KQorCisKKyAgICAjICJUaGUgc2FtZSBlZmZlY3QgW2FzIG1ldGhvZCBydW5dIG1heSBiZSBoYWQgYnkgc2ltcGx5IGNhbGxpbmcgdGhlCisgICAgIyBUZXN0Q2FzZSBpbnN0YW5jZS4iCisgICAgZGVmIHRlc3RfY2FsbF9faW52b2tpbmdfYW5faW5zdGFuY2VfZGVsZWdhdGVzX3RvX3J1bihzZWxmKToKKyAgICAgICAgcmVzdWx0SW4gPSB1bml0dGVzdC5UZXN0UmVzdWx0KCkKKyAgICAgICAgcmVzdWx0T3V0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgZGVmIHJ1bihzZWxmLCByZXN1bHQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVzdWx0LCByZXN1bHRJbikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0T3V0CisKKyAgICAgICAgcmV0dmFsID0gRm9vKCd0ZXN0JykocmVzdWx0SW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIHJlc3VsdE91dCkKKworCiAgICAgZGVmIHRlc3RTaG9ydERlc2NyaXB0aW9uV2l0aG91dERvY3N0cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5zaG9ydERlc2NyaXB0aW9uKCkpCiAKQEAgLTExNDAsNyArMTE3Niw2IEBACiAgICAgICAgICAgICAoc2VsZi5hc3NlcnRfLCAoVHJ1ZSwpKSwKICAgICAgICAgICAgIChzZWxmLmZhaWxVbmxlc3NSYWlzZXMsIChUeXBlRXJyb3IsIGxhbWJkYSBfOiAzLjE0ICsgJ3NwYW0nKSksCiAgICAgICAgICAgICAoc2VsZi5mYWlsSWYsIChGYWxzZSwpKSwKLSAgICAgICAgICAgIChzZWxmLmFzc2VydFNhbWVFbGVtZW50cywgKFsxLCAxLCAyLCAzXSwgWzEsIDIsIDNdKSksCiAgICAgICAgICAgICAoc2VsZi5hc3NlcnREaWN0Q29udGFpbnNTdWJzZXQsIChkaWN0KGE9MSwgYj0yKSwgZGljdChhPTEsIGI9MiwgYz0zKSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwLCAoS2V5RXJyb3IsICdmb28nLCBsYW1iZGE6IHt9Wydmb28nXSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcywgKCdiYXInLCAnYmFyJykpLApAQCAtMTE0OSwxOCArMTE4NCwyMCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgbWV0aCgqYXJncykKIAotICAgIGRlZiB0ZXN0RGVwcmVjYXRlZEZhaWxNZXRob2RzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgdGhlIGRlcHJlY2F0ZWQgZmFpbCogbWV0aG9kcyBnZXQgcmVtb3ZlZCBpbiAzLjMiIiIKKyAgICAjIGRpc2FibGUgdGhpcyB0ZXN0IGZvciBub3cuIFdoZW4gdGhlIHZlcnNpb24gd2hlcmUgdGhlIGZhaWwqIG1ldGhvZHMgd2lsbAorICAgICMgYmUgcmVtb3ZlZCBpcyBkZWNpZGVkLCByZS1lbmFibGUgaXQgYW5kIHVwZGF0ZSB0aGUgdmVyc2lvbgorICAgIGRlZiBfdGVzdERlcHJlY2F0ZWRGYWlsTWV0aG9kcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZXByZWNhdGVkIGZhaWwqIG1ldGhvZHMgZ2V0IHJlbW92ZWQgaW4gMy54IiIiCiAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRlcHJlY2F0ZWRfbmFtZXMgPSBbCiAgICAgICAgICAgICAnZmFpbElmRXF1YWwnLCAnZmFpbFVubGVzc0VxdWFsJywgJ2ZhaWxVbmxlc3NBbG1vc3RFcXVhbCcsCiAgICAgICAgICAgICAnZmFpbElmQWxtb3N0RXF1YWwnLCAnZmFpbFVubGVzcycsICdmYWlsVW5sZXNzUmFpc2VzJywgJ2ZhaWxJZicsCi0gICAgICAgICAgICAnYXNzZXJ0U2FtZUVsZW1lbnRzJywgJ2Fzc2VydERpY3RDb250YWluc1N1YnNldCcsCisgICAgICAgICAgICAnYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0JywKICAgICAgICAgXQogICAgICAgICBmb3IgZGVwcmVjYXRlZF9uYW1lIGluIGRlcHJlY2F0ZWRfbmFtZXM6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKLSAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIGRlcHJlY2F0ZWRfbmFtZSkgICMgcmVtb3ZlIHRoZXNlIGluIDMuMworICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZiwgZGVwcmVjYXRlZF9uYW1lKSAgIyByZW1vdmUgdGhlc2UgaW4gMy54CiAKICAgICBkZWYgdGVzdERlZXBjb3B5KHNlbGYpOgogICAgICAgICAjIElzc3VlOiA1NjYwCkBAIC0xMjY4LDMgKzEzMDUsMTEgQEAKICAgICAgICAgICAgIGtsYXNzKCd0ZXN0X3NvbWV0aGluZycpLnJ1bihyZXN1bHQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHQuZXJyb3JzKSwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRlc3RzUnVuLCAxKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3ROb0N5Y2xlcyhzZWxmKToKKyAgICAgICAgY2FzZSA9IHVuaXR0ZXN0LlRlc3RDYXNlKCkKKyAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZihjYXNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuZGlzYWJsZV9nYygpOgorICAgICAgICAgICAgZGVsIGNhc2UKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod3IoKSkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggZjdlMzFhNS4uZDFiOWVmNSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3NkYXNmYXNmYXNkZicpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgc2Rhc2Zhc2Zhc2RmIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQogCkBAIC02MTksNyArNjE5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkIHNkYXNmYXNmYXNkZiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCAnc2Rhc2Zhc2Zhc2RmJyIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBJbXBvcnRFcnJvciIpCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQppbmRleCBkNWQwZjVhLi45Nzk0ODY4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CkBAIC0xMzEsMjMgKzEzMSw2IEBACiAgICAgICAgIEZha2VSdW5uZXIudGVzdCA9IE5vbmUKICAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gRmFsc2UKIAotICAgIGRlZiB0ZXN0SGVscEFuZFVua25vd24oc2VsZik6Ci0gICAgICAgIHByb2dyYW0gPSBzZWxmLnByb2dyYW0KLSAgICAgICAgZGVmIHVzYWdlRXhpdChtc2c9Tm9uZSk6Ci0gICAgICAgICAgICBwcm9ncmFtLm1zZyA9IG1zZwotICAgICAgICAgICAgcHJvZ3JhbS5leGl0ID0gVHJ1ZQotICAgICAgICBwcm9ncmFtLnVzYWdlRXhpdCA9IHVzYWdlRXhpdAotCi0gICAgICAgIGZvciBvcHQgaW4gJy1oJywgJy1IJywgJy0taGVscCc6Ci0gICAgICAgICAgICBwcm9ncmFtLmV4aXQgPSBGYWxzZQotICAgICAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsIG9wdF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvZ3JhbS5leGl0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvZ3JhbS5tc2cpCi0KLSAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsICctJCddKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvZ3JhbS5leGl0KQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwcm9ncmFtLm1zZykKLQogICAgIGRlZiB0ZXN0VmVyYm9zaXR5KHNlbGYpOgogICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkN2FlOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTcgQEAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKK2xvYWRlciA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyCisKK2RlZiBsb2FkX3Rlc3RzKCphcmdzKToKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIGZuIGluIG9zLmxpc3RkaXIoaGVyZSk6CisgICAgICAgIGlmIGZuLnN0YXJ0c3dpdGgoInRlc3QiKSBhbmQgZm4uZW5kc3dpdGgoIi5weSIpOgorICAgICAgICAgICAgbW9kbmFtZSA9ICJ1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLiIgKyBmbls6LTNdCisgICAgICAgICAgICBfX2ltcG9ydF9fKG1vZG5hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2RuYW1lXQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUpKQorICAgIHJldHVybiBzdWl0ZQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ3Mzg3OQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKQEAgLTAsMCArMSwyMyBAQAoraW1wb3J0IHN5cworCitkZWYgaXNfaW5zdGFuY2Uob2JqLCBrbGFzcyk6CisgICAgIiIiVmVyc2lvbiBvZiBpc19pbnN0YW5jZSB0aGF0IGRvZXNuJ3QgYWNjZXNzIF9fY2xhc3NfXyIiIgorICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwga2xhc3MpCisKKworY2xhc3MgU29tZUNsYXNzKG9iamVjdCk6CisgICAgY2xhc3NfYXR0cmlidXRlID0gTm9uZQorCisgICAgZGVmIHdpYmJsZShzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFgob2JqZWN0KToKKyAgICBwYXNzCisKKworZGVmIGV4YW1pbmVfd2FybmluZ3MoZnVuYyk6CisgICAgZGVmIHdyYXBwZXIoKToKKyAgICAgICAgd2l0aCBjYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgd3M6CisgICAgICAgICAgICBmdW5jKHdzKQorICAgIHJldHVybiB3cmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyZGQwMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RjYWxsYWJsZS5weQpAQCAtMCwwICsxLDE0NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMiBNaWNoYWVsIEZvb3JkICYgdGhlIG1vY2sgdGVhbQorIyBFLW1haWw6IGZ1enp5bWFuIEFUIHZvaWRzcGFjZSBET1Qgb3JnIERPVCB1aworIyBodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL21vY2svCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlLCBYLCBTb21lQ2xhc3MKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywKKyAgICBOb25DYWxsYWJsZU1vY2ssIHBhdGNoLCBjcmVhdGVfYXV0b3NwZWMsCisgICAgQ2FsbGFibGVNaXhpbgorKQorCisKKworY2xhc3MgVGVzdENhbGxhYmxlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnROb3RDYWxsYWJsZShzZWxmLCBtb2NrKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19pbnN0YW5jZShtb2NrLCBDYWxsYWJsZU1peGluKSkKKworCisgICAgZGVmIHRlc3Rfbm9uX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBOb25DYWxsYWJsZU1hZ2ljTW9jaygpLCBOb25DYWxsYWJsZU1vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19jYWxsX18nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9jay5fX2NsYXNzX18uX19uYW1lX18sIHJlcHIobW9jaykpCisKKworICAgIGRlZiB0ZXN0X2hlaXJhcmNoeShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFnaWNNb2NrLCBNb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaykpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIG9uZSA9IE5vbkNhbGxhYmxlTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUob25lLm9uZSksIE1vY2spKQorCisgICAgICAgIHR3byA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh0d28udHdvKSwgTWFnaWNNb2NrKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ja1N1YihNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBvbmUgPSBNb2NrU3ViKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZShvbmUub25lKSwgTW9ja1N1YikpCisKKyAgICAgICAgY2xhc3MgTWFnaWNTdWIoTWFnaWNNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0d28gPSBNYWdpY1N1YigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUodHdvLnR3byksIE1hZ2ljU3ViKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlYyhzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19pbnN0YW5jZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjPVgoKSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zcGVjX3NldF9pbnN0YW5jZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1YKCkpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19jYWxsYWJsZV9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ2FsbGFibGVYKFgpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBTdWIoQ2FsbGFibGVYKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNdWx0aShTb21lQ2xhc3MsIFN1Yik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICBmb3IgS2xhc3MgaW4gQ2FsbGFibGVYLCBTdWIsIE11bHRpOgorICAgICAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLlgnICUgX19uYW1lX18sICoqe2FyZzogS2xhc3N9KSBhcyBtb2NrOgorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoaW5zdGFuY2UsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICAgICAgICAgICMgaW5oZXJpdGVkIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyYmF6JykKKworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBpbnN0YW5jZSgpCisgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgaXMgY2FsbGFibGUsIHJlc3VsdCBoYXMgbm8gc3BlYworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0KDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9vKDMsIDIsIDEpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgMiwgMSkKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9wc2VjKHNlbGYpOgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFgpCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhYKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2luc3RhbmNlKHNlbGYpOgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFNvbWVDbGFzcywgaW5zdGFuY2U9VHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2sud2liYmxlKCkKKyAgICAgICAgbW9jay53aWJibGUuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay53aWJibGUsICdzb21lJywgICdhcmdzJykKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGhlbHBlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmYjI5MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5CkBAIC0wLDAgKzEsODg5IEBACitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgY2FsbCwgX0NhbGwsIGNyZWF0ZV9hdXRvc3BlYywgTWFnaWNNb2NrLAorICAgIE1vY2ssIEFOWSwgX0NhbGxMaXN0LCBwYXRjaCwgUHJvcGVydHlNb2NrCispCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisKK2NsYXNzIFNvbWVDbGFzcyhvYmplY3QpOgorICAgIGRlZiBvbmUoc2VsZiwgYSwgYik6CisgICAgICAgIHBhc3MKKyAgICBkZWYgdHdvKHNlbGYpOgorICAgICAgICBwYXNzCisgICAgZGVmIHRocmVlKHNlbGYsIGE9Tm9uZSk6CisgICAgICAgIHBhc3MKKworCisKK2NsYXNzIEFueVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFOWSwgb2JqZWN0KCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKEFOWSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoQU5ZKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhmb289QU5ZKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChmb289QU5ZKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFOWSksICc8QU5ZPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEFOWSksICc8QU5ZPicpCisKKworICAgIGRlZiB0ZXN0X2FueV9hbmRfZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhkYXRldGltZS5ub3coKSwgZm9vPWRhdGV0aW1lLm5vdygpKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEFOWSwgZm9vPUFOWSkKKworCisgICAgZGVmIHRlc3RfYW55X21vY2tfY2FsbHNfY29tcGFyaXNvbl9vcmRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkID0gZGF0ZXRpbWUubm93KCkKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgZm9yIGQgaW4gZGF0ZXRpbWUubm93KCksIEZvbygpOgorICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICAgICAgbW9jayhkLCBmb289ZCwgYmFyPWQpCisgICAgICAgICAgICBtb2NrLm1ldGhvZChkLCB6aW5nYT1kLCBhbHBoYT1kKQorICAgICAgICAgICAgbW9jaygpLm1ldGhvZChhMT1kLCB6OTk9ZCkKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAgICAgY2FsbChBTlksIGZvbz1BTlksIGJhcj1BTlkpLAorICAgICAgICAgICAgICAgIGNhbGwubWV0aG9kKEFOWSwgemluZ2E9QU5ZLCBhbHBoYT1BTlkpLAorICAgICAgICAgICAgICAgIGNhbGwoKSwgY2FsbCgpLm1ldGhvZChhMT1BTlksIHo5OT1BTlkpCisgICAgICAgICAgICBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBtb2NrLm1vY2tfY2FsbHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKworCitjbGFzcyBDYWxsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfY2FsbChzZWxmKToKKyAgICAgICAga2FsbCA9IF9DYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKCksKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKHt9LCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoKSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ2ZvbycsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoKSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnYmF6Jywge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ3NwYW0nLCAoKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoMSwgMiwgMyksKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMykpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoKDEsIDIsIDQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMykpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCdmb28nLCAoMSwgMiwgNCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCA0KSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDQpLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKDEsIDIsIDQpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCdiYXInLCAoMSwgMiwgNCksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCh7J2EnOiAzfSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCksIHsnYSc6IDN9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCB7J2EnOiAzfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgoKSwgeydhJzogM30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoeydhJzogM30sKSkpCisKKworICAgIGRlZiB0ZXN0X2VtcHR5X19DYWxsKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKHt9LCkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2VtcHR5X2NhbGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoJ2ZvbycsICgpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsKCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoKSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICh7fSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgnYmFyJywge30pKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCB7fSkpCisKKworICAgIGRlZiB0ZXN0X25hbWVkX2NhbGxfd2l0aF9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgxLCAyLCAzKSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksIHt9KSkKKworCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2t3YXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKGRpY3QoYT0zLCBiPTQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoKSwgZGljdChhPTMsIGI9NCkpKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9jYWxsX3dpdGhfa3dhcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCBkaWN0KGE9MywgYj00KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSwgZGljdChhPTMsIGI9NCkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKGRpY3QoYT0zLCBiPTQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYXJncywgKCgpLCBkaWN0KGE9MywgYj00KSkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9hcmdzX2NhbGxfZW1wdHlfbmFtZShzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiwgMyksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBjYWxsKDEsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSwgMiwgMyksIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsKDEsIDIsIDMpIGluIFthcmdzXSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9uZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChfQ2FsbCgoKDEsIDIsIDMpLCkpLCBjYWxsKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF9DYWxsKCgoMSwgMiwgMyksKSkgIT0gY2FsbCgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9DYWxsKCgoMSwgMiksIHt9KSkgIT0gY2FsbCgxLCAyLCAzKSkKKworCisgICAgZGVmIHRlc3RfY2FsbF9ub25fdHVwbGVzKHNlbGYpOgorICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCAzKSwpKQorICAgICAgICBmb3IgdmFsdWUgaW4gMSwgTm9uZSwgc2VsZiwgaW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa2FsbCA9PSB2YWx1ZSkKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCkpLCAnY2FsbCgpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgnZm9vJywpKSksICdjYWxsLmZvbygpJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCgxLCAyLCAzKSwgeydhJzogJ2InfSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbCgxLCAyLCAzLCBhPSdiJykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoX0NhbGwoKCdiYXInLCAoMSwgMiwgMyksIHsnYSc6ICdiJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwuYmFyKDEsIDIsIDMsIGE9J2InKSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwpLCAnY2FsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNhbGwpLCAnY2FsbCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKSksICdjYWxsKCknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgxKSksICdjYWxsKDEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoeno9J3RoaW5nJykpLCAiY2FsbCh6ej0ndGhpbmcnKSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKS5mb28pLCAnY2FsbCgpLmZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKDEpLmZvby5iYXIoYT0zKS5iaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnY2FsbCgpLmZvby5iYXIoKS5iaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoY2FsbCgpLmZvbygxLCAyLCBhPTMpKSwKKyAgICAgICAgICAgICJjYWxsKCkuZm9vKDEsIDIsIGE9MykiCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoKSgpKSwgImNhbGwoKSgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoMSkoMikpLCAiY2FsbCgpKDIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIoY2FsbCgpKCkuYmFyKCkuYmF6LmJlZXAoMSkpLAorICAgICAgICAgICAgImNhbGwoKSgpLmJhcigpLmJhei5iZWVwKDEpIgorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgpLCAoJycsICgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgnZm9vJywgJ2JhcicsIG9uZT0zLCB0d289NCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCcnLCAoJ2ZvbycsICdiYXInKSwgeydvbmUnOiAzLCAndHdvJzogNH0pKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyLCAzKQorICAgICAgICBtb2NrKGE9MywgYj02KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGwoMSwgMiwgMyksIGNhbGwoYT0zLCBiPTYpXSkKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9jYWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwuZm9vKDEpLCAoJ2ZvbycsICgxLCksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLmJhci5iYXooZmlzaD0nZWdncycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnYmFyLmJheicsICgpLCB7J2Zpc2gnOiAnZWdncyd9KSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suZm9vKDEsIDIgLDMpCisgICAgICAgIG1vY2suYmFyLmJheihhPTMsIGI9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbY2FsbC5mb28oMSwgMiwgMyksIGNhbGwuYmFyLmJheihhPTMsIGI9NildKQorCisKKyAgICBkZWYgdGVzdF9leHRlbmRlZF9jYWxsKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBjYWxsKDEpLmZvbygyKS5iYXIoMywgYT00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgKCcoKS5mb28oKS5iYXInLCAoMywpLCBkaWN0KGE9NCkpKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEsIDIsIGE9MywgYj00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBjYWxsKDEsIDIsIGE9MywgYj00KSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtb2NrLmNhbGxfYXJncywgY2FsbCgxLCAyLCAzKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFtjYWxsKDEsIDIsIGE9MywgYj00KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgxLCAyLCBhPTMsIGI9NCldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrLmZvbygxKS5iYXIoKSgpLmJhei5iZWVwKGE9NikKKworICAgICAgICBsYXN0X2NhbGwgPSBjYWxsLmZvbygxKS5iYXIoKSgpLmJhei5iZWVwKGE9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHNbLTFdLCBsYXN0X2NhbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBsYXN0X2NhbGwuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbGlzdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEpLmNhbGxfbGlzdCgpLCBtb2NrLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soMSkubWV0aG9kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxKS5tZXRob2QoMikuY2FsbF9saXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2NhbGxzKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpLm1ldGhvZCgyKSgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSkubWV0aG9kKDIpKDMpLmNhbGxfbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19jYWxscykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgaW50KG1vY2soMSkubWV0aG9kKDIpKDMpLmZvby5iYXIuYmF6KDQpKDUpKQorICAgICAgICBrYWxsID0gY2FsbCgxKS5tZXRob2QoMikoMykuZm9vLmJhci5iYXooNCkoNSkuX19pbnRfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbC5jYWxsX2xpc3QoKSwgbW9jay5tb2NrX2NhbGxzKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLCBBTlkpCisKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIGludChtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgW0FOWV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0FOWV0sIG0ubW9ja19jYWxscykKKworCisgICAgZGVmIHRlc3RfdHdvX2FyZ3NfY2FsbChzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSwgdHdvPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzFdLCB7J2EnOiAzfSkKKworICAgICAgICBvdGhlcl9hcmdzID0gX0NhbGwoKCgxLCAyKSwgeydhJzogM30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIG90aGVyX2FyZ3MpCisKKworY2xhc3MgU3BlY1NpZ25hdHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jaGVja19zb21lY2xhc3NfbW9jayhzZWxmLCBtb2NrKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdmb28nKQorICAgICAgICBtb2NrLm9uZSgxLCAyKQorICAgICAgICBtb2NrLm9uZS5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sub25lLmFzc2VydF9jYWxsZWRfd2l0aCwgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLm9uZSwgMSkKKworICAgICAgICBtb2NrLnR3bygpCisgICAgICAgIG1vY2sudHdvLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnR3by5hc3NlcnRfY2FsbGVkX3dpdGgsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay50d28sIDEpCisKKyAgICAgICAgbW9jay50aHJlZSgpCisgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudGhyZWUuYXNzZXJ0X2NhbGxlZF93aXRoLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sudGhyZWUsIDMsIDIpCisKKyAgICAgICAgbW9jay50aHJlZSgxKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorCisgICAgICAgIG1vY2sudGhyZWUoYT0xKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aChhPTEpCisKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBmb3Igc3BlYyBpbiAoU29tZUNsYXNzLCBTb21lQ2xhc3MoKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYsIHJldHVybl92YWx1ZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksICdmb28nKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vLCByZXR1cm5fdmFsdWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfcmVzZXRfbW9jayhzZWxmKToKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhpbnQpCisgICAgICAgIGludChtKQorICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19pbnRfXy5jYWxsX2NvdW50LCAwKQorCisKKyAgICBkZWYgdGVzdF9tb2NraW5nX3VuYm91bmRfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIGZvbyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBwID0gcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycpCisgICAgICAgIG1vY2tfZm9vID0gcC5zdGFydCgpCisgICAgICAgIEZvbygpLmZvbygxKQorCisgICAgICAgIG1vY2tfZm9vLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfdW5ib3VuZF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIHNlZSBtb2NrIGlzc3VlIDEyOAorICAgICAgICAjIHRoaXMgaXMgZXhwZWN0ZWQgdG8gZmFpbCB1bnRpbCB0aGUgaXNzdWUgaXMgZml4ZWQKKyAgICAgICAgcmV0dXJuCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAga2xhc3MgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBpbnN0YW5jZSA9IGtsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZS5mb28sIDEpCisKKyAgICAgICAgIyBOb3RlOiBubyB0eXBlIGNoZWNraW5nIG9uIHRoZSAic2VsZiIgcGFyYW1ldGVyCisgICAgICAgIGtsYXNzLmZvbygxKQorICAgICAgICBrbGFzcy5mb28uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwga2xhc3MuZm9vKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfa2V5d29yZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgYSA9IDMKKyAgICAgICAgbSA9IGNyZWF0ZV9hdXRvc3BlYyhGb28sIGE9JzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYSwgJzMnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfa2V5d29yZF9vbmx5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCAqLCBiPU5vbmUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoZm9vKQorICAgICAgICBtKDEpCisgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbSwgMSwgMikKKworICAgICAgICBtKDIsIGI9MykKKyAgICAgICAgbS5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgYj0zKQorCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9hc19pbnN0YW5jZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIG9iaiA9IFNvbWVDbGFzcygpCisgICAgICAgIGRlZiBmKGEpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBvYmouZiA9IGYKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKG9iaikKKyAgICAgICAgbW9jay5mKCdiaW5nJykKKyAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgnYmluZycpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgIyBiZWNhdXNlIHNwZWMgYXMgYSBsaXN0IG9mIHN0cmluZ3MgaW4gdGhlIG1vY2sgY29uc3RydWN0b3IgbWVhbnMKKyAgICAgICAgIyBzb21ldGhpbmcgdmVyeSBkaWZmZXJlbnQgd2UgdHJlYXQgYSBsaXN0IGluc3RhbmNlIGFzIHRoZSB0eXBlLgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFtdKQorICAgICAgICBtb2NrLmFwcGVuZCgnZm9vJykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKCdmb28nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IFtdCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2suZm9vLmFwcGVuZCgzKQorICAgICAgICBtb2NrLmZvby5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmZvbywgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihTb21lQ2xhc3MpOgorICAgICAgICAgICAgYXR0ciA9IFNvbWVDbGFzcygpCisKKyAgICAgICAgc3ViX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU3ViKQorCisgICAgICAgIGZvciBtb2NrIGluIChzdWJfbW9jaywgc3ViX21vY2suYXR0cik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uc190eXBlcyhzZWxmKToKKyAgICAgICAgIyB3ZSBjb3VsZCByZXBsYWNlIGJ1aWx0aW4gZnVuY3Rpb25zIC8gbWV0aG9kcyB3aXRoIGEgZnVuY3Rpb24KKyAgICAgICAgIyB3aXRoICphcmdzIC8gKiprd2FyZ3Mgc2lnbmF0dXJlLiBVc2luZyB0aGUgYnVpbHRpbiBtZXRob2QgdHlwZQorICAgICAgICAjIGFzIGEgc3BlYyBzZWVtcyB0byB3b3JrIGZhaXJseSB3ZWxsIHRob3VnaC4KKyAgICAgICAgY2xhc3MgQnVpbHRpblN1YmNsYXNzKGxpc3QpOgorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNvcnRlZCA9IHNvcnRlZAorICAgICAgICAgICAgYXR0ciA9IHt9CisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhCdWlsdGluU3ViY2xhc3MpCisgICAgICAgIG1vY2suYXBwZW5kKDMpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5hcHBlbmQsICdmb28nKQorCisgICAgICAgIG1vY2suYmFyKCdmb28nKQorICAgICAgICBtb2NrLmJhci5hc3NlcnRfY2FsbGVkX3dpdGgoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5iYXIsICdmb28nLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYmFyLCAnZm9vJykKKworICAgICAgICBtb2NrLnNvcnRlZChbMSwgMl0pCisgICAgICAgIG1vY2suc29ydGVkLmFzc2VydF9jYWxsZWRfd2l0aChbMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLnNvcnRlZCwgJ2ZvbycpCisKKyAgICAgICAgbW9jay5hdHRyLnBvcCgzKQorICAgICAgICBtb2NrLmF0dHIucG9wLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5hdHRyLCAnZm9vJykKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU3ViKQorICAgICAgICBtb2NrLm9uZSgxLCAyKQorICAgICAgICBtb2NrLnR3bygpCisgICAgICAgIG1vY2sudGhyZWUoMykKKworICAgICAgICBleHBlY3RlZCA9IFtjYWxsLm9uZSgxLCAyKSwgY2FsbC50d28oKSwgY2FsbC50aHJlZSgzKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgbW9jay5hdHRyLm9uZSgxLCAyKQorICAgICAgICBtb2NrLmF0dHIudHdvKCkKKyAgICAgICAgbW9jay5hdHRyLnRocmVlKDMpCisKKyAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKAorICAgICAgICAgICAgW2NhbGwuYXR0ci5vbmUoMSwgMiksIGNhbGwuYXR0ci50d28oKSwgY2FsbC5hdHRyLnRocmVlKDMpXQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIGV4cGVjdGVkKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBCdWlsdGluU3ViY2xhc3MobGlzdCk6CisgICAgICAgICAgICBhdHRyID0ge30KKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEJ1aWx0aW5TdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnQsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrLmF0dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2tbJ2ZvbyddLCBNYWdpY01vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmF0dHJbJ2ZvbyddLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIGZvciBzcGVjIGluIChTdWIsIFN1YigpKToKKyAgICAgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NvbWVjbGFzc19tb2NrKG1vY2spCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jay5hdHRyLCAnZm9vJywgJ2JhcicpCisKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGYoY2xzLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZyhhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmFyKEZvbyk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQmF6KFNvbWVDbGFzcywgQmFyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3Igc3BlYyBpbiAoRm9vLCBGb28oKSwgQmFyLCBCYXIoKSwgQmF6LCBCYXooKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMpCisgICAgICAgICAgICBtb2NrLmYoMSwgMikKKyAgICAgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyKQorCisgICAgICAgICAgICBtb2NrLmcoMywgNCkKKyAgICAgICAgICAgIG1vY2suZy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgzLCA0KQorCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZvbyA9ICdmb28gYmFyIGJheicKKyAgICAgICAgICAgIGJhciA9IGZvbworCisgICAgICAgIEEuQiA9IEEKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhBKQorCisgICAgICAgIG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suQi5jYWxsZWQpCisKKyAgICAgICAgbW9jay5hKCkKKyAgICAgICAgbW9jay5CLmEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbY2FsbC5hKCksIGNhbGwuQi5hKCldKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5mb28sIEEuYmFyKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vY2suZm9vLCBtb2NrLmJhcikKKyAgICAgICAgbW9jay5mb28ubG93ZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5iYXIubG93ZXIuYXNzZXJ0X2NhbGxlZF93aXRoKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2luaGVyaXRhbmNlX2Zvcl9jbGFzc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3NfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChjbGFzc19tb2NrLCBjbGFzc19tb2NrKCkpCisKKyAgICAgICAgZm9yIHRoaXNfbW9jayBpbiBjbGFzc19tb2NrLCBjbGFzc19tb2NrKCk6CisgICAgICAgICAgICB0aGlzX21vY2suYSgpCisgICAgICAgICAgICB0aGlzX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aGlzX21vY2suYSwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgdGhpc19tb2NrLCAnYicpCisKKyAgICAgICAgaW5zdGFuY2VfbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28oKSkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5hKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2VfbW9jay5hLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2ssICdiJykKKworICAgICAgICAjIFRoZSByZXR1cm4gdmFsdWUgaXNuJ3QgaXNuJ3QgY2FsbGFibGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZV9tb2NrKQorCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyLmYoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLkJhciwgJ2cnKQorCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZigpCisgICAgICAgIGluc3RhbmNlX21vY2suQmFyKCkuZi5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jay5CYXIoKSwgJ2cnKQorCisKKyAgICBkZWYgdGVzdF9pbmhlcml0KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGEgPSAzCisKKyAgICAgICAgRm9vLkZvbyA9IEZvbworCisgICAgICAgICMgY2xhc3MKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwgJ2InKQorCisgICAgICAgIGF0dHJfaW5zdGFuY2UgPSBtb2NrLkZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBhdHRyX2luc3RhbmNlLCAnYicpCisKKyAgICAgICAgIyBpbnN0YW5jZQorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKyAgICAgICAgIyBhdHRyaWJ1dGUgaW5zdGFuY2UKKyAgICAgICAgY2FsbF9yZXN1bHQgPSBtb2NrLkZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBjYWxsX3Jlc3VsdCwgJ2InKQorCisKKyAgICBkZWYgdGVzdF9idWlsdGlucyhzZWxmKToKKyAgICAgICAgIyB1c2VkIHRvIGZhaWwgd2l0aCBpbmZpbml0ZSByZWN1cnNpb24KKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDEpCisKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGludCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKCdmb28nKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc3RyKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoe30pCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhkaWN0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoW10pCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhsaXN0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc2V0KCkpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhzZXQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxLjApCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhmbG9hdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKDFqKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoY29tcGxleCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKEZhbHNlKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoVHJ1ZSkKKworCisgICAgZGVmIHRlc3RfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIGRlZiBmKGEsIGIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIpCisKKyAgICAgICAgZi5mID0gZgorICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5mKQorICAgICAgICBtb2NrLmYoMywgNCkKKyAgICAgICAgbW9jay5mLmFzc2VydF9jYWxsZWRfd2l0aCgzLCA0KQorCisKKyAgICBkZWYgdGVzdF9za2lwX2F0dHJpYnV0ZWVycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgUmFpc2VyKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIHR5cGU9Tm9uZSk6CisgICAgICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdDYW4gb25seSBiZSBhY2Nlc3NlZCB2aWEgYW4gaW5zdGFuY2UnKQorCisgICAgICAgIGNsYXNzIFJhaXNlckNsYXNzKG9iamVjdCk6CisgICAgICAgICAgICByYWlzZXIgPSBSYWlzZXIoKQorCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZXhpc3RpbmcoYSwgYik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGEgKyBiCisKKyAgICAgICAgcyA9IGNyZWF0ZV9hdXRvc3BlYyhSYWlzZXJDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGEgeDogcy5leGlzdGluZygxLCAyLCAzKSkKKyAgICAgICAgcy5leGlzdGluZygxLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBzLm5vbmV4aXN0aW5nKQorCisgICAgICAgICMgY2hlY2sgd2UgY2FuIGZldGNoIHRoZSByYWlzZXIgYXR0cmlidXRlIGFuZCBpdCBoYXMgbm8gc3BlYworICAgICAgICBvYmogPSBzLnJhaXNlcgorICAgICAgICBvYmouZm9vLCBvYmouYmFyCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSwgYj0zKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKDEpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSkKKworICAgICAgICBtb2NrKDQsIDUpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDQsIDUpCisKKworICAgIGRlZiB0ZXN0X2NsYXNzX3dpdGhfbm9faW5pdChzZWxmKToKKyAgICAgICAgIyB0aGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICMgZHVlIHRvIHRyeWluZyB0byBnZXQgYSBzaWduYXR1cmUgZnJvbSBvYmplY3QuX19pbml0X18KKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhGb28pCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ2FsbGFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQ2FsbGFibGUpCisgICAgICAgIG1vY2soKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnYScpCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKyAgICAgICAgaW5zdGFuY2UoYT0nYScpCisgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQorICAgICAgICBpbnN0YW5jZSgnYScpCisgICAgICAgIGluc3RhbmNlLmFzc2VydF9jYWxsZWRfd2l0aCgnYScpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhDYWxsYWJsZSgpKQorICAgICAgICBtb2NrKGE9J2EnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKGE9J2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIG1vY2soJ2EnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgnYScpCisKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ub25jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgTm9uQ2FsbGFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhOb25DYWxsYWJsZSkKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlLCAnYScpCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhOb25DYWxsYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXV0b3NwZWNfbm9uZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBiYXIgPSBOb25lCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG5vbmUgPSBtb2NrLmJhcgorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2Uobm9uZSwgdHlwZShOb25lKSkKKworICAgICAgICBub25lLmZvbygpCisgICAgICAgIG5vbmUuZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb25zX3dpdGhfc2VsZl9pbl9vZGRfcGxhY2Uoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGYoYSwgc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGEgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBhLmYoc2VsZj0xMCkKKyAgICAgICAgYS5mLmFzc2VydF9jYWxsZWRfd2l0aChzZWxmPTEwKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19wcm9wZXJ0eShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDMKKworICAgICAgICBmb28gPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrX3Byb3BlcnR5ID0gZm9vLmZvbworCisgICAgICAgICMgbm8gc3BlYyBvbiBwcm9wZXJ0aWVzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2tfcHJvcGVydHksIE1hZ2ljTW9jaykpCisgICAgICAgIG1vY2tfcHJvcGVydHkoMSwgMiwgMykKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hYmMoNCwgNSwgNikKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Byb3BlcnR5LmFiYy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCg0LCA1LCA2KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19zbG90cyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSBbJ2EnXQorCisgICAgICAgIGZvbyA9IGNyZWF0ZV9hdXRvc3BlYyhGb28pCisgICAgICAgIG1vY2tfc2xvdCA9IGZvby5hCisKKyAgICAgICAgIyBubyBzcGVjIG9uIHNsb3RzCisgICAgICAgIG1vY2tfc2xvdCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Nsb3QuYWJjKDQsIDUsIDYpCisgICAgICAgIG1vY2tfc2xvdC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxLCAyLCAzKQorICAgICAgICBtb2NrX3Nsb3QuYWJjLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDQsIDUsIDYpCisKKworY2xhc3MgVGVzdENhbGxMaXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FyZ3NfbGlzdF9jb250YWluc19jYWxsX2xpc3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suY2FsbF9hcmdzX2xpc3QsIF9DYWxsTGlzdCkKKworICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgIG1vY2soYj02KQorCisgICAgICAgIGZvciBrYWxsIGluIGNhbGwoMSwgMiksIGNhbGwoYT0zKSwgY2FsbCgzLCA0KSwgY2FsbChiPTYpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGthbGwgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworICAgICAgICBjYWxscyA9IFtjYWxsKGE9MyksIGNhbGwoMywgNCldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDEsIDIpLCBjYWxsKGE9MyldCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDMsIDQpLCBjYWxsKGI9NildCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxscyBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBjYWxscyA9IFtjYWxsKDMsIDQpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNhbGwoJ2Zpc2gnKSBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFtjYWxsKCdmaXNoJyldIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbGlzdF9zdHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrLmZvbyhhPTMpCisgICAgICAgIG1vY2suZm9vLmJhcigpLmJheignZmlzaCcsIGNhdD0nZG9nJykKKworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAgICJbY2FsbCgxLCAyKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28oYT0zKSxcbiIKKyAgICAgICAgICAgICIgY2FsbC5mb28uYmFyKCksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vLmJhcigpLmJheignZmlzaCcsIGNhdD0nZG9nJyldIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2subW9ja19jYWxscyksIGV4cGVjdGVkKQorCisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eW1vY2soc2VsZik6CisgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzLm9uZScgJSBfX25hbWVfXywgbmV3X2NhbGxhYmxlPVByb3BlcnR5TW9jaykKKyAgICAgICAgbW9jayA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTb21lQ2xhc3Mub25lCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICAgICAgcyA9IFNvbWVDbGFzcygpCisgICAgICAgICAgICBzLm9uZQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKV0pCisKKyAgICAgICAgICAgIHMub25lID0gMworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKSwgY2FsbCgzKV0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eW1vY2tfcmV0dXJudmFsdWUoc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBwID0gUHJvcGVydHlNb2NrKCkKKyAgICAgICAgdHlwZShtKS5mb28gPSBwCisKKyAgICAgICAgcmV0dXJuZWQgPSBtLmZvbworICAgICAgICBwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldHVybmVkLCBNYWdpY01vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShyZXR1cm5lZCwgUHJvcGVydHlNb2NrKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmNmMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtMCwwICsxLDQwMyBAQAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBNYWdpY01vY2ssIF9tYWdpY3MKKworCisKK2NsYXNzIFRlc3RNb2NraW5nTWFnaWNNZXRob2RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2RlbGV0aW5nX21hZ2ljX21ldGhvZHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9jaywgJ19fZ2V0aXRlbV9fJykpCisKKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2tfZGVsKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgIyBiZWZvcmUgdXNpbmcgZ2V0aXRlbQorICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICMgdGhpcyB0aW1lIHVzZSBpdCBmaXJzdAorICAgICAgICBtb2NrWydmb28nXQorICAgICAgICBkZWwgbW9jay5fX2dldGl0ZW1fXworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZF93cmFwcGluZyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgZihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLCAnZmlzaCcKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gZgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suX19nZXRpdGVtX18gaXMgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrWydmb28nXSwgKG1vY2ssICdmaXNoJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fX2dldGl0ZW1fXygnZm9vJyksIChtb2NrLCAnZmlzaCcpKQorCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBtb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fZ2V0aXRlbV9fIGlzIG1vY2spCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfaXNvbGF0ZWRfYmV0d2Vlbl9tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jazEgPSBNb2NrKCkKKyAgICAgICAgbW9jazIgPSBNb2NrKCkKKworICAgICAgICBtb2NrMS5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jazEpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxpc3QobW9jazIpKQorCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2NrKSwgIjxNb2NrIGlkPSclcyc+IiAlIGlkKG1vY2spKQorICAgICAgICBtb2NrLl9fcmVwcl9fID0gbGFtYmRhIHM6ICdmb28nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2NrKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgb2JqZWN0Ll9fc3RyX18obW9jaykpCisgICAgICAgIG1vY2suX19zdHJfXyA9IGxhbWJkYSBzOiAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2RpY3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKyAgICAgICAgZGVmIF9kZWwoKToKKyAgICAgICAgICAgIGRlbCBtb2NrWydmb28nXQorICAgICAgICBkZWYgX3NldCgpOgorICAgICAgICAgICAgbW9ja1snZm9vJ10gPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX2RlbCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfc2V0KQorCisgICAgICAgIF9kaWN0ID0ge30KKyAgICAgICAgZGVmIGdldGl0ZW0ocywgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gX2RpY3RbbmFtZV0KKyAgICAgICAgZGVmIHNldGl0ZW0ocywgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgX2RpY3RbbmFtZV0gPSB2YWx1ZQorICAgICAgICBkZWYgZGVsaXRlbShzLCBuYW1lKToKKyAgICAgICAgICAgIGRlbCBfZGljdFtuYW1lXQorCisgICAgICAgIG1vY2suX19zZXRpdGVtX18gPSBzZXRpdGVtCisgICAgICAgIG1vY2suX19nZXRpdGVtX18gPSBnZXRpdGVtCisgICAgICAgIG1vY2suX19kZWxpdGVtX18gPSBkZWxpdGVtCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisgICAgICAgIG1vY2tbJ2ZvbyddID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZGljdCwgeydmb28nOiAnYmFyJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1snZm9vJ10sICdiYXInKQorICAgICAgICBkZWwgbW9ja1snZm9vJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZGljdCwge30pCisKKworICAgIGRlZiB0ZXN0X251bWVyaWMoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnZhbHVlID0gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrICsgMykKKworICAgICAgICBkZWYgYWRkKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgIG1vY2sudmFsdWUgKz0gb3RoZXIKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIG1vY2suX19hZGRfXyA9IGFkZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgKyAzLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sudmFsdWUsIDMpCisKKyAgICAgICAgZGVsIG1vY2suX19hZGRfXworICAgICAgICBkZWYgaWFkZChtb2NrKToKKyAgICAgICAgICAgIG1vY2sgKz0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlhZGQsIG1vY2spCisgICAgICAgIG1vY2suX19pYWRkX18gPSBhZGQKKyAgICAgICAgbW9jayArPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaywgb3JpZ2luYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay52YWx1ZSwgOSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogMyArIG1vY2spCisgICAgICAgIG1vY2suX19yYWRkX18gPSBhZGQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3ICsgbW9jaywgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnZhbHVlLCAxNikKKworCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICAjIHRlc3QgZGVsZWdhdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobW9jayksIE1vY2suX19oYXNoX18obW9jaykpCisKKyAgICAgICAgZGVmIF9oYXNoKHMpOgorICAgICAgICAgICAgcmV0dXJuIDMKKyAgICAgICAgbW9jay5fX2hhc2hfXyA9IF9oYXNoCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtb2NrKSwgMykKKworCisgICAgZGVmIHRlc3Rfbm9uemVybyhzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChtKSkKKworICAgICAgICBtLl9fYm9vbF9fID0gbGFtYmRhIHM6IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChtKSkKKworCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgY29tcChzLCBvKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIG1vY2suX19sdF9fID0gbW9jay5fX2d0X18gPSBtb2NrLl9fbGVfXyA9IG1vY2suX19nZV9fID0gY29tcAorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPCAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPiAzKQorICAgICAgICBzZWxmLiBhc3NlcnRUcnVlKG1vY2sgPD0gMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrID49IDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA8IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPCBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID4gb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBvYmplY3QoKSA+IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPiBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDw9IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPD0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8PSBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID49IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPj0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+PSBNYWdpY01vY2soKSkKKworCisgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gbW9jaywgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrID09IG1vY2ssIGJvb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gbW9jaywgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayAhPSBtb2NrLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG9iamVjdCgpLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBvYmplY3QoKSwgVHJ1ZSkKKworICAgICAgICAgICAgZGVmIGVxKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPT0gMworICAgICAgICAgICAgbW9jay5fX2VxX18gPSBlcQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2sgPT0gMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jayA9PSA0KQorCisgICAgICAgICAgICBkZWYgbmUoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBvdGhlciA9PSAzCisgICAgICAgICAgICBtb2NrLl9fbmVfXyA9IG5lCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jayAhPSAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrICE9IDQpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2suX19lcV9fLnJldHVybl92YWx1ZSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgPT0gMywgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IDMsIFRydWUpCisKKyAgICAgICAgbW9jay5fX25lX18ucmV0dXJuX3ZhbHVlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gMywgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IDMsIEZhbHNlKQorCisKKyAgICBkZWYgdGVzdF9sZW5fY29udGFpbnNfaXRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGVuLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAnZm9vJyBpbiBtb2NrKQorCisgICAgICAgIG1vY2suX19sZW5fXyA9IGxhbWJkYSBzOiA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2spLCA2KQorCisgICAgICAgIG1vY2suX19jb250YWluc19fID0gbGFtYmRhIHMsIG86IG8gPT0gMworICAgICAgICBzZWxmLmFzc2VydFRydWUoMyBpbiBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDYgaW4gbW9jaykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gbGFtYmRhIHM6IGl0ZXIoJ2Zvb2JhcmJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgbGlzdCgnZm9vYmFyYmF6JykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbMSwgMiwgM10pCisKKyAgICAgICAgZ2V0YXR0cihtb2NrLCAnX19ib29sX18nKS5yZXR1cm5fdmFsdWUgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fbm9uemVyb19fJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChtb2NrKSkKKworICAgICAgICBmb3IgZW50cnkgaW4gX21hZ2ljczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssIGVudHJ5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX2ltYWdpbmVyeV9fJykpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21vY2tfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayA9PSBvYmplY3QoKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gb2JqZWN0KCksIGJvb2wpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG9iamVjdCgpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG9iamVjdCgpLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgPT0gbW9jaywgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG1vY2ssIEZhbHNlKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2tfZGVmYXVsdHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtb2NrKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KG1vY2spLCAxaikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChtb2NrKSwgMS4wKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG9iamVjdCgpLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1vY2spLCBvYmplY3QuX19oYXNoX18obW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vY2spLCBvYmplY3QuX19zdHJfXyhtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wobW9jaykpCisKKyAgICAgICAgIyBpbiBQeXRob24gMyBvY3QgYW5kIGhleCB1c2UgX19pbmRleF9fCisgICAgICAgICMgc28gdGhlc2UgdGVzdHMgYXJlIGZvciBfX2luZGV4X18gaW4gcHkzaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChtb2NrKSwgJzBvMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4KG1vY2spLCAnMHgxJykKKyAgICAgICAgIyBob3cgdG8gdGVzdCBfX3NpemVvZl9fID8KKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19hbmRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1Ob25JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBkZWYgc2V0X2ludCgpOgorICAgICAgICAgICAgbW9jay5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc3BlYz1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfYW5kX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYWJsZShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX2l0ZXJfXykKKworICAgICAgICBtb2NrLl9faXRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9aXRlcihbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisKKyAgICAgICAgY2xhc3MgTm9uSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9Tm9uSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgZGVmIHNldF9pbnQoKToKKyAgICAgICAgICAgIG1vY2suX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNwZWNfc2V0PUl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ191bnN1cHBvcnRlZF9tYWdpY19tZXRob2Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBkZWYgc2V0X3NldGF0dHIoKToKKyAgICAgICAgICAgIG1vY2suX19zZXRhdHRyX18gPSBsYW1iZGEgc2VsZiwgbmFtZTogTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAnX19zZXRhdHRyX18nLiIsCisgICAgICAgICAgICBzZXRfc2V0YXR0cgorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfYW5kX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIGF0dHIgPSBtb2NrLmZvbworICAgICAgICBkZWYgX2dldF90eXBlKG9iaik6CisgICAgICAgICAgICAjIHRoZSB0eXBlIG9mIGV2ZXJ5IG1vY2sgKG9yIG1hZ2ljbW9jaykgaXMgYSBjdXN0b20gc3ViY2xhc3MKKyAgICAgICAgICAgICMgc28gdGhlIHJlYWwgdHlwZSBpcyB0aGUgc2Vjb25kIGluIHRoZSBtcm8KKyAgICAgICAgICAgIHJldHVybiB0eXBlKG9iaikuX19tcm9fX1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9nZXRfdHlwZShhdHRyKSwgTWFnaWNNb2NrKQorCisgICAgICAgIHJldHVybmVkID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2dldF90eXBlKHJldHVybmVkKSwgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2FyZV9tYWdpY19tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLl9fZ2V0aXRlbV9fLCBNYWdpY01vY2spCisKKyAgICAgICAgbW9ja1sxXVsyXS5fX2dldGl0ZW1fXy5yZXR1cm5fdmFsdWUgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1sxXVsyXVszXSwgMykKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kX3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzdHIobW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suX19zdHJfXy5jYWxsZWQpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5fX3N0cl9fLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3RfZGlyKHNlbGYpOgorICAgICAgICAjIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIGRlZiBfZGlyKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvbyddCisgICAgICAgICAgICBtb2NrLl9fZGlyX18gPSBfZGlyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihtb2NrKSwgWydmb28nXSkKKworCisgICAgQHVuaXR0ZXN0LnNraXBJZignUHlQeScgaW4gc3lzLnZlcnNpb24sICJUaGlzIGZhaWxzIGRpZmZlcmVudGx5IG9uIHB5cHkiKQorICAgIGRlZiB0ZXN0X2JvdW5kX21ldGhvZHMoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKworICAgICAgICAjIFhYWFggc2hvdWxkIHRoaXMgYmUgYW4gZXhwZWN0ZWQgZmFpbHVyZSBpbnN0ZWFkPworCisgICAgICAgICMgdGhpcyBzZWVtcyBsaWtlIGl0IHNob3VsZCB3b3JrLCBidXQgaXMgaGFyZCB0byBkbyB3aXRob3V0IGludHJvZHVjaW5nCisgICAgICAgICMgb3RoZXIgYXBpIGluY29uc2lzdGVuY2llcy4gRmFpbHVyZSBtZXNzYWdlIGNvdWxkIGJlIGJldHRlciB0aG91Z2guCisgICAgICAgIG0uX19pdGVyX18gPSBbM10uX19pdGVyX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCBtKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RfdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKE1hZ2ljTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvby5fX2ludF9fLCBGb28pCisKKworICAgIGRlZiB0ZXN0X2Rlc2NyaXB0b3JfZnJvbV9jbGFzcyhzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIHR5cGUobSkuX19zdHJfXy5yZXR1cm5fdmFsdWUgPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2l0ZXJhYmxlX2FzX2l0ZXJfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbS5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBbMSwgMiwgM10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzEsIDIsIDNdKQorCisgICAgICAgIG0uX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbNCwgNSwgNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzQsIDUsIDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFtdKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNmYxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMCwwICsxLDEyNzUgQEAKK2ltcG9ydCBjb3B5CitpbXBvcnQgc3lzCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBjYWxsLCBERUZBVUxULCBwYXRjaCwgc2VudGluZWwsCisgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1vY2ssCisgICAgTm9uQ2FsbGFibGVNYWdpY01vY2ssIF9DYWxsTGlzdCwKKyAgICBjcmVhdGVfYXV0b3NwZWMKKykKKworCitjbGFzcyBJdGVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnRoaW5nID0gaXRlcihbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIG5leHQoc2VsZik6CisgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGhpbmcpCisKKyAgICBfX25leHRfXyA9IG5leHQKKworCisKK2NsYXNzIE1vY2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBpZiBfX2FsbF9fIGlzIGJhZGx5IGRlZmluZWQgdGhlbiBpbXBvcnQgKiB3aWxsIHJhaXNlIGFuIGVycm9yCisgICAgICAgICMgV2UgaGF2ZSB0byBleGVjIGl0IGJlY2F1c2UgeW91IGNhbid0IGltcG9ydCAqIGluc2lkZSBhIG1ldGhvZAorICAgICAgICAjIGluIFB5dGhvbiAzCisgICAgICAgIGV4ZWMoImZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKiIpCisKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfY291bnQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLnJldHVybl92YWx1ZSwgTW9jayksCisgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuX3ZhbHVlIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kX2NhbGxzIG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgICMgQ2FuJ3QgdXNlIGhhc2F0dHIgZm9yIHRoaXMgdGVzdCBhcyBpdCBhbHdheXMgcmV0dXJucyBUcnVlIG9uIGEgbW9jaworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdfaXRlbXMnIGluIG1vY2suX19kaWN0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQgbW9jayBzaG91bGQgbm90IGhhdmUgJ19pdGVtcycgYXR0cmlidXRlIikKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb2NrLl9tb2NrX3BhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmVudCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5fbW9ja19tZXRob2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX2NoaWxkcmVuLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gbm90IGluaXRpYWxpc2VkIGluY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfcmV0dXJuX3ZhbHVlX2luX2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5yZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm4gdmFsdWUgaW4gY29uc3RydWN0b3Igbm90IGhvbm91cmVkIikKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZm9vJywgcmVwcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiJyVzJyIgJSBpZChtb2NrKSwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrcyA9IFsoTW9jaygpLCAnbW9jaycpLCAoTW9jayhuYW1lPSdiYXInKSwgJ2JhcicpXQorICAgICAgICBmb3IgbW9jaywgbmFtZSBpbiBtb2NrczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmJhcicgJSBuYW1lLCByZXByKG1vY2suYmFyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzLmZvbygpJyAlIG5hbWUsIHJlcHIobW9jay5mb28oKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5mb28oKS5iaW5nJyAlIG5hbWUsIHJlcHIobW9jay5mb28oKS5iaW5nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCknICUgbmFtZSwgcmVwcihtb2NrKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKSgpJyAlIG5hbWUsIHJlcHIobW9jaygpKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMoKSgpLmZvby5iYXIuYmF6KCkuYmluZycgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG1vY2soKSgpLmZvby5iYXIuYmF6KCkuYmluZykpCisKKworICAgIGRlZiB0ZXN0X3JlcHJfd2l0aF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgc3BlYz0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWNfc2V0PSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWNfc2V0PSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCwgbmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdmb28nICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic3BlYyIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJzcGVjIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNwZWMiLCByZXByKG1vY2spKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIGRlZiBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCdrYWJsb29pZScpCisKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IGVmZmVjdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvciwgbW9jaywgMSwgMiwgZmlzaD0zKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisKKyAgICAgICAgcmVzdWx0cyA9IFsxLCAyLCAzXQorICAgICAgICBkZWYgZWZmZWN0KCk6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0cy5wb3AoKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gZWZmZWN0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFszLCAyLCAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGUgZWZmZWN0IG5vdCB1c2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2VudGluZWwuU2lkZUVmZmVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNpZGVfZWZmZWN0LCBzZW50aW5lbC5TaWRlRWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZSBlZmZlY3QgaW4gY29uc3RydWN0b3Igbm90IHVzZWQiKQorCisgICAgICAgIGRlZiBzaWRlX2VmZmVjdCgpOgorICAgICAgICAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QsIHJldHVybl92YWx1ZT1zZW50aW5lbC5SRVRVUk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCBzZW50aW5lbC5SRVRVUk4pCisKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCdqYXZhJyBpbiBzeXMucGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRlc3Qgb25seSBhcHBsaWVzIHRvIEp5dGhvbicpCisgICAgZGVmIHRlc3RfamF2YV9leGNlcHRpb25fc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIGltcG9ydCBqYXZhCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PWphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uKCJCb29tISIpKQorCisgICAgICAgICMgY2FuJ3QgdXNlIGFzc2VydFJhaXNlcyB3aXRoIGphdmEgZXhjZXB0aW9ucworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2NrKDEsIDIsIGZpc2g9MykKKyAgICAgICAgZXhjZXB0IGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdqYXZhIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwyLCBmaXNoPTMpCisKKworICAgIGRlZiB0ZXN0X3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIHBhcmVudCA9IE1vY2soKQorICAgICAgICBzcGVjID0gWyJzb21ldGhpbmciXQorICAgICAgICBtb2NrID0gTW9jayhuYW1lPSJjaGlsZCIsIHBhcmVudD1wYXJlbnQsIHNwZWM9c3BlYykKKyAgICAgICAgbW9jayhzZW50aW5lbC5Tb21ldGhpbmcsIHNvbWV0aGluZz1zZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworICAgICAgICBtb2NrLnNvbWV0aGluZygpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBzZW50aW5lbC5TaWRlRWZmZWN0CisgICAgICAgIHJldHVybl92YWx1ZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybl92YWx1ZSgpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfbmFtZSwgImNoaWxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19wYXJlbnQsIHBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGFyZW50IGluY29ycmVjdGx5IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX21ldGhvZHMsIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgaW5jb3JyZWN0bHkgcmVzZXQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDAsICJjYWxsX2NvdW50IG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsIE5vbmUsICJjYWxsX2FyZ3Mgbm90IHJlc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbXSwgImNhbGxfYXJnc19saXN0IG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZF9jYWxscyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5OiAlciAhPSAlciIgJQorICAgICAgICAgICAgICAgICAgICAgICAgKG1vY2subWV0aG9kX2NhbGxzLCBbXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc2lkZV9lZmZlY3QsIHNlbnRpbmVsLlNpZGVFZmZlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlX2VmZmVjdCBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUsIHJldHVybl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybl92YWx1ZSBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmV0dXJuX3ZhbHVlLmNhbGxlZCwgInJldHVybiB2YWx1ZSBtb2NrIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19jaGlsZHJlbiwgeydzb21ldGhpbmcnOiBzb21ldGhpbmd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gcmVzZXQgaW5jb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nLCBzb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZHJlbiBpbmNvcnJlY3RseSBjbGVhcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLnNvbWV0aGluZy5jYWxsZWQsICJjaGlsZCBub3QgcmVzZXQiKQorCisKKyAgICBkZWYgdGVzdF9yZXNldF9tb2NrX3JlY3Vyc2lvbihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IG1vY2sKKworICAgICAgICAjIHVzZWQgdG8gY2F1c2UgcmVjdXJzaW9uCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2sucmV0dXJuX3ZhbHVlLCBNb2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJEZWZhdWx0IHJldHVybl92YWx1ZSBzaG91bGQgYmUgYSBNb2NrIikKKworICAgICAgICByZXN1bHQgPSBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGlmZmVyZW50IHJlc3VsdCBmcm9tIGNvbnNlY3V0aXZlIGNhbGxzIikKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKworICAgICAgICByZXRfdmFsID0gbW9jayhzZW50aW5lbC5BcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLmNhbGxlZCwgImNhbGxlZCBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDEsICJjYWxsX2NvdW50IGluY29yZWVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsICgoc2VudGluZWwuQXJnLCksIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsoKHNlbnRpbmVsLkFyZywpLCB7fSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IHNlbnRpbmVsLlJldHVyblZhbHVlCisgICAgICAgIHJldF92YWwgPSBtb2NrKHNlbnRpbmVsLkFyZywga2V5PXNlbnRpbmVsLktleUFyZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXRfdmFsLCBzZW50aW5lbC5SZXR1cm5WYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb3JyZWN0IHJldHVybiB2YWx1ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfY291bnQsIDIsICJjYWxsX2NvdW50IGluY29ycmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeydrZXknOiBzZW50aW5lbC5LZXlBcmd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzIG5vdCBzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHt9KSwKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsna2V5Jzogc2VudGluZWwuS2V5QXJnfSkKKyAgICAgICAgXSwKKyAgICAgICAgICAgICJjYWxsX2FyZ3NfbGlzdCBub3Qgc2V0IikKKworCisgICAgZGVmIHRlc3RfY2FsbF9hcmdzX2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygpCisgICAgICAgIG1vY2soc2VudGluZWwuQXJnKQorICAgICAgICBtb2NrKGt3PXNlbnRpbmVsLkt3YXJnKQorICAgICAgICBtb2NrKHNlbnRpbmVsLkFyZywga3c9c2VudGluZWwuS3dhcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgWworICAgICAgICAgICAgKCksCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCksCisgICAgICAgICAgICAoeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSwpLAorICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSkKKyAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7Imt3Ijogc2VudGluZWwuS3dhcmd9KSkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorCisgICAgICAgICMgV2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsIDEpCisKKyAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKQorCisgICAgICAgIG1vY2soMSwgMiwgMywgYT0nZmlzaCcsIGI9J25vdGhpbmcnKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzLCBhPSdmaXNoJywgYj0nbm90aGluZycpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfb25jZV93aXRoKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorCisgICAgICAgICMgV2lsbCByYWlzZSBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKQorCisgICAgICAgIG1vY2soJ2ZvbycsICdiYXInLCBiYXo9MikKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgJ2JhcicsIGJhej0yKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIG1vY2soJ2ZvbycsICdiYXInLCBiYXo9MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIGxhbWJkYTogbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYm9iJywgJ2JhcicsIGJhej0yKQorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9hY2Nlc3NfcmV0dXJuc19tb2NrcyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2Uoc29tZXRoaW5nLCBNb2NrKSwgImF0dHJpYnV0ZSBpc24ndCBhIG1vY2siKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nLCBzb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCBhdHRyaWJ1dGVzIHJldHVybmVkIGZvciBzYW1lIG5hbWUiKQorCisgICAgICAgICMgVXNhZ2UgZXhhbXBsZQorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nLnJldHVybl92YWx1ZSA9IDMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nKCksIDMsICJtZXRob2QgcmV0dXJuZWQgd3JvbmcgdmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5zb21ldGhpbmcuY2FsbGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBkaWRuJ3QgcmVjb3JkIGJlaW5nIGNhbGxlZCIpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfaGF2ZV9uYW1lX2FuZF9wYXJlbnRfc2V0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNvbWV0aGluZyA9IG1vY2suc29tZXRoaW5nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuX21vY2tfbmFtZSwgInNvbWV0aGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBuYW1lIG5vdCBzZXQgY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuX21vY2tfcGFyZW50LCBtb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgcGFyZW50IG5vdCBzZXQgY29ycmVjdGx5IikKKworCisgICAgZGVmIHRlc3RfbWV0aG9kX2NhbGxzX3JlY29yZGVkKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKDMsIGZpc2g9Tm9uZSkKKyAgICAgICAgbW9jay5zb21ldGhpbmdfZWxzZS5zb21ldGhpbmcoNiwgY2FrZT1zZW50aW5lbC5DYWtlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zb21ldGhpbmdfZWxzZS5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsoInNvbWV0aGluZyIsICg2LCksIHsnY2FrZSc6IHNlbnRpbmVsLkNha2V9KV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgY2FsbHMgbm90IHJlY29yZGVkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsKKyAgICAgICAgICAgICgic29tZXRoaW5nIiwgKDMsKSwgeydmaXNoJzogTm9uZX0pLAorICAgICAgICAgICAgKCJzb21ldGhpbmdfZWxzZS5zb21ldGhpbmciLCAoNiwpLCB7J2Nha2UnOiBzZW50aW5lbC5DYWtlfSkKKyAgICAgICAgXSwKKyAgICAgICAgICAgICJtZXRob2QgY2FsbHMgbm90IHJlY29yZGVkIGNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsc19jb21wYXJlX2Vhc2lseShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgpLCB7fSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoJ2RpZmZlcmVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnc29tZXRoaW5nJywgKCdkaWZmZXJlbnQnLCksIHt9KV0pCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZyh4PTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsIHsneCc6IDF9KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFsoJ3NvbWV0aGluZycsICgpLCB7J3gnOiAxfSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoJ2RpZmZlcmVudCcsIHNvbWU9J21vcmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbCisgICAgICAgICAgICAoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpLCB7J3NvbWUnOiAnbW9yZSd9KQorICAgICAgICBdKQorCisKKyAgICBkZWYgdGVzdF9vbmx5X2FsbG93ZWRfbWV0aG9kc19leGlzdChzZWxmKToKKyAgICAgICAgZm9yIHNwZWMgaW4gWydzb21ldGhpbmcnXSwgKCdzb21ldGhpbmcnLCk6CisgICAgICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgICAgICBtb2NrID0gTW9jaygqKnthcmc6IHNwZWN9KQorCisgICAgICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBiZSBhbGxvd2VkCisgICAgICAgICAgICAgICAgbW9jay5zb21ldGhpbmcKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3NvbWV0aGluZ19lbHNlJyIsCisgICAgICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICdzb21ldGhpbmdfZWxzZScKKyAgICAgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X2Zyb21fc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICB4ID0gMworICAgICAgICAgICAgX19zb21ldGhpbmdfXyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiB5KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKG1vY2spOgorICAgICAgICAgICAgIyBzaG91bGQgd29yaworICAgICAgICAgICAgbW9jay54CisgICAgICAgICAgICBtb2NrLnkKKyAgICAgICAgICAgIG1vY2suX19zb21ldGhpbmdfXworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAneiciLAorICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICd6JworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnX19mb29iYXJfXyciLAorICAgICAgICAgICAgICAgIGdldGF0dHIsIG1vY2ssICdfX2Zvb2Jhcl9fJworICAgICAgICAgICAgKQorCisgICAgICAgIHRlc3RfYXR0cmlidXRlcyhNb2NrKHNwZWM9U29tZXRoaW5nKSkKKyAgICAgICAgdGVzdF9hdHRyaWJ1dGVzKE1vY2soc3BlYz1Tb21ldGhpbmcoKSkpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2NhbGxzKHNlbGYpOgorICAgICAgICByZWFsID0gTW9jaygpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCksIHJlYWwoKSkKKworICAgICAgICByZWFsLnJlc2V0X21vY2soKQorCisgICAgICAgIG1vY2soMSwgMiwgZmlzaD0zKQorICAgICAgICByZWFsLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisKKworICAgIGRlZiB0ZXN0X3dyYXBzX2NhbGxfd2l0aF9ub25kZWZhdWx0X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcmVhbCA9IE1vY2soKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlYWwuY2FsbGVkKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBSZWFsKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBNb2NrKCkKKworICAgICAgICByZWFsID0gUmVhbCgpCisKKyAgICAgICAgbW9jayA9IE1vY2sod3JhcHM9cmVhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmF0dHJpYnV0ZSgpLCByZWFsLmF0dHJpYnV0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLmZpc2gpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtb2NrLmF0dHJpYnV0ZSwgcmVhbC5hdHRyaWJ1dGUpCisgICAgICAgIHJlc3VsdCA9IG1vY2suYXR0cmlidXRlLmZyb2coMSwgMiwgZmlzaD0zKQorICAgICAgICBSZWFsLmF0dHJpYnV0ZS5mcm9nLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCBmaXNoPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBSZWFsLmF0dHJpYnV0ZS5mcm9nKCkpCisKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbmFsX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1BdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9QXR0cmlidXRlRXJyb3IoJ2ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfYmFzZWV4Y2VwdGlvbmFsX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1LZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIG1vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5Ym9hcmRJbnRlcnJ1cHQoJ2ZvbycpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwgbW9jaykKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF93aXRoX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBc3NlcnRpb25FcnJvciwgJ05vdCBjYWxsZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhfbWVzc2FnZShzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0nZ2VvZmZyZXknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgciJFeHBlY3RlZCAnZ2VvZmZyZXknIHRvIGJlIGNhbGxlZCBvbmNlXC4iLAorICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCkKKworCisgICAgZGVmIHRlc3RfX25hbWVfXyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9fbmFtZV9fKQorCisgICAgICAgIG1vY2suX19uYW1lX18gPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX19uYW1lX18sICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2xpc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFN1YihsaXN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1TdWIoWydmb28nXSkpCisKKyAgICAgICAgbW9jay5hcHBlbmQoMykKKyAgICAgICAgbW9jay5hcHBlbmQuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKworCisgICAgZGVmIHRlc3Rfc3BlY19jbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5fX2NsYXNzX18sIFgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9jaygpLl9fY2xhc3NfXy5fX25hbWVfXywgJ01vY2snKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9jaywgWCkpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfYXR0cmlidXRlX3dpdGhfc3BlY19zZXQoc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIHkgPSAzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKQorICAgICAgICBtb2NrLnggPSAnZm9vJworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIGRlZiBzZXRfYXR0cigpOgorICAgICAgICAgICAgbW9jay54ID0gJ2ZvbycKKworICAgICAgICBtb2NrLnkgPSAnZm9vJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2F0dHIpCisKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGN1cnJlbnQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHJlY3Vyc2lvbmxpbWl0LCBjdXJyZW50KQorCisgICAgICAgICMgY2FuJ3QgdXNlIHN5cy5tYXhpbnQgYXMgdGhpcyBkb2Vzbid0IGV4aXN0IGluIFB5dGhvbiAzCisgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChpbnQoMTBlOCkpCisgICAgICAgICMgdGhpcyBzZWdmYXVsdHMgd2l0aG91dCB0aGUgZml4IGluIHBsYWNlCisgICAgICAgIGNvcHkuY29weShNb2NrKCkpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzX3dpdGhfcHJvcGVydGllcyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViQ2xhc3MoTW9jayk6CisgICAgICAgICAgICBkZWYgX2dldChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMworICAgICAgICAgICAgZGVmIF9zZXQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignc3RyYW5nZSBlcnJvcicpCisgICAgICAgICAgICBzb21lX2F0dHJpYnV0ZSA9IHByb3BlcnR5KF9nZXQsIF9zZXQpCisKKyAgICAgICAgcyA9IFN1YkNsYXNzKHNwZWNfc2V0PVN1YkNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29tZV9hdHRyaWJ1dGUsIDMpCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHMuc29tZV9hdHRyaWJ1dGUgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgdGVzdCkKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcy5mb28gPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3Rfc2V0dGluZ19jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX2NhbGwoYSkKKworICAgICAgICB0eXBlKG1vY2spLl9fY2FsbF9fID0gX19jYWxsX18KKyAgICAgICAgbW9jaygnb25lJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ29uZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLCAnb25lJywgJ3R3bycpCisKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBhdHRycyA9IHNldChkaXIobW9jaykpCisgICAgICAgIHR5cGVfYXR0cnMgPSBzZXQoW20gZm9yIG0gaW4gZGlyKE1vY2spIGlmIG5vdCBtLnN0YXJ0c3dpdGgoJ18nKV0pCisKKyAgICAgICAgIyBhbGwgcHVibGljIGF0dHJpYnV0ZXMgZnJvbSB0aGUgdHlwZSBhcmUgaW5jbHVkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdHlwZV9hdHRycyAtIGF0dHJzKQorCisgICAgICAgICMgY3JlYXRlcyB0aGVzZSBhdHRyaWJ1dGVzCisgICAgICAgIG1vY2suYSwgbW9jay5iCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2EnLCBkaXIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2InLCBkaXIobW9jaykpCisKKyAgICAgICAgIyBpbnN0YW5jZSBhdHRyaWJ1dGVzCisgICAgICAgIG1vY2suYyA9IG1vY2suZCA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYycsIGRpcihtb2NrKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZCcsIGRpcihtb2NrKSkKKworICAgICAgICAjIG1hZ2ljIG1ldGhvZHMKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IGxhbWJkYSBzOiBpdGVyKFtdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdfX2l0ZXJfXycsIGRpcihtb2NrKSkKKworCisgICAgZGVmIHRlc3RfZGlyX2Zyb21fc3BlYyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz11bml0dGVzdC5UZXN0Q2FzZSkKKyAgICAgICAgdGVzdGNhc2VfYXR0cnMgPSBzZXQoZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKSkKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKG1vY2spKQorCisgICAgICAgICMgYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgc3BlYyBhcmUgaW5jbHVkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdGVzdGNhc2VfYXR0cnMgLSBhdHRycykKKworICAgICAgICAjIHNoYWRvdyBhIHN5cyBhdHRyaWJ1dGUKKyAgICAgICAgbW9jay52ZXJzaW9uID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcihtb2NrKS5jb3VudCgndmVyc2lvbicpLCAxKQorCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfZGlyKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KG1vY2ssICdGSUxURVJfRElSJywgRmFsc2UpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBhdHRycyA9IHNldChkaXIoTW9jaygpKSkKKyAgICAgICAgICAgIHR5cGVfYXR0cnMgPSBzZXQoZGlyKE1vY2spKQorCisgICAgICAgICAgICAjIEFMTCBhdHRyaWJ1dGVzIGZyb20gdGhlIHR5cGUgYXJlIGluY2x1ZGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCB0eXBlX2F0dHJzIC0gYXR0cnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmVfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soZm9vPSdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLCAnYmFyJykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKGZvbz0nYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKyAgICAgICAgbW9jayA9IE1vY2soKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgYXNzZXJ0UmFpc2VzV2l0aE1zZyhzZWxmLCBleGNlcHRpb24sIG1lc3NhZ2UsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgbmVlZGVkIGJlY2F1c2UgYXNzZXJ0UmFpc2VzUmVnZXggZG9lc24ndCB3b3JrIGVhc2lseSB3aXRoIG5ld2xpbmVzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbnN0YW5jZSA9IHN5cy5leGNfaW5mbygpWzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5zdGFuY2UsIGV4Y2VwdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnRXhjZXB0aW9uICVyIG5vdCByYWlzZWQnICUgKGV4Y2VwdGlvbiwpKQorCisgICAgICAgIG1zZyA9IHN0cihpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIG1lc3NhZ2UpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aF9mYWlsdXJlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBOb25DYWxsYWJsZU1vY2soKQorCisgICAgICAgIGV4cGVjdGVkID0gIm1vY2soMSwgJzInLCAzLCBiYXI9J2ZvbycpIgorICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5Ob3QgY2FsbGVkJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwpLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgsIDEsICcyJywgMywgYmFyPSdmb28nCisgICAgICAgICkKKworICAgICAgICBtb2NrLmZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykKKworCisgICAgICAgIGFzc2VydGVycyA9IFsKKyAgICAgICAgICAgIG1vY2suZm9vLmFzc2VydF9jYWxsZWRfd2l0aCwgbW9jay5mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKKyAgICAgICAgXQorICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbygxLCAnMicsIDMsIGJhcj0nZm9vJykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgMSwgJzInLCAzLCBiYXI9J2ZvbycKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGp1c3Qga3dhcmdzCisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKGJhcj0nZm9vJykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgYmFyPSdmb28nCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBqdXN0IGFyZ3MKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oMSwgMiwgMykiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksCisgICAgICAgICAgICAgICAgbWV0aCwgMSwgMiwgMworICAgICAgICAgICAgKQorCisgICAgICAgICMgZW1wdHkKKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oKSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnRXhwZWN0ZWQgY2FsbDogJXNcbkFjdHVhbCBjYWxsOiAlcycKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzV2l0aE1zZygKKyAgICAgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwgbWVzc2FnZSAlIChleHBlY3RlZCwgYWN0dWFsKSwgbWV0aAorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICAjIG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIE1hZ2ljTW9jay5tb2NrX2NhbGxzIHVzZWQgdG8ganVzdCByZXR1cm4KKyAgICAgICAgIyBhIE1hZ2ljTW9jayB3aGljaCBhbHNvIHJldHVybmVkIGEgTWFnaWNNb2NrIHdoZW4gX19lcV9fIHdhcyBjYWxsZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLm1vY2tfY2FsbHMgPT0gW10sIFRydWUpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soKQorICAgICAgICBleHBlY3RlZCA9IFsoJycsICgpLCB7fSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICBtb2NrLmZvbygpCisgICAgICAgIGV4cGVjdGVkLmFwcGVuZChjYWxsLmZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgICMgaW50ZXJtZWRpYXRlIG1vY2tfY2FsbHMgd29yayB0b28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5tb2NrX2NhbGxzLCBbKCcnLCAoKSwge30pXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygpLmZvbygxLCAyLCAzLCBhPTQsIGI9NSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJycsICgpLCB7fSksICgnKCkuZm9vJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5yZXR1cm5fdmFsdWUuZm9vLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnZm9vJywgKDEsIDIsIDMpLCBkaWN0KGE9NCwgYj01KSldKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKCkuZm9vLmJhcigpLmJheigpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCcnLCAoKSwge30pLCAoJygpLmZvby5iYXInLCAoKSwge30pLAorICAgICAgICAgICAgKCcoKS5mb28uYmFyKCkuYmF6JywgKCksIHt9KQorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmZvby5iYXIoKS5iYXooKS5jYWxsX2xpc3QoKSkKKworICAgICAgICBmb3Iga3dhcmdzIGluIGRpY3QoKSwgZGljdChuYW1lPSdiYXInKToKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBpbnQobW9jay5mb28pCisgICAgICAgICAgICBleHBlY3RlZCA9IFsoJ2Zvby5fX2ludF9fJywgKCksIHt9KV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKworICAgICAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIG1vY2suYSgpKCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gWygnYScsICgpLCB7fSksICgnYSgpJywgKCksIHt9KV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5hKCkubW9ja19jYWxscywgW2NhbGwoKV0pCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrKDEpKDIpKDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgY2FsbCgxKSgyKSgzKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsIGNhbGwoMikoMykuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSgpLm1vY2tfY2FsbHMsIGNhbGwoMykuY2FsbF9saXN0KCkpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrKDEpKDIpKDMpLmEuYi5jKDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgxKSgyKSgzKS5hLmIuYyg0KS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMikoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSgpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBpbnQobW9jaygpLmZvby5iYXIoKS5iYXooKSkKKyAgICAgICAgICAgIGxhc3RfY2FsbCA9ICgnKCkuZm9vLmJhcigpLmJheigpLl9faW50X18nLCAoKSwge30pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxsc1stMV0sIGxhc3RfY2FsbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwuZm9vLmJhcigpLmJheigpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLmZvby5iYXIoKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmJheigpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLmZvby5iYXIoKS5iYXoubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgpLl9faW50X18oKS5jYWxsX2xpc3QoKSkKKworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YmNsYXNzKE1vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBTdWJjbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrKCksIFN1YmNsYXNzKQorCisgICAgICAgIGNsYXNzIFN1YmNsYXNzKE1vY2spOgorICAgICAgICAgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2soKiprd2FyZ3MpCisKKyAgICAgICAgbW9jayA9IFN1YmNsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2suZm9vLCBTdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2soKSwgU3ViY2xhc3MpCisKKworICAgIGRlZiB0ZXN0X2FyZ19saXN0cyhzZWxmKToKKyAgICAgICAgbW9ja3MgPSBbCisgICAgICAgICAgICBNb2NrKCksCisgICAgICAgICAgICBNYWdpY01vY2soKSwKKyAgICAgICAgICAgIE5vbkNhbGxhYmxlTW9jaygpLAorICAgICAgICAgICAgTm9uQ2FsbGFibGVNYWdpY01vY2soKQorICAgICAgICBdCisKKyAgICAgICAgZGVmIGFzc2VydF9hdHRycyhtb2NrKToKKyAgICAgICAgICAgIG5hbWVzID0gJ2NhbGxfYXJnc19saXN0JywgJ21ldGhvZF9jYWxscycsICdtb2NrX2NhbGxzJworICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHIobW9jaywgbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXR0ciwgX0NhbGxMaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhdHRyLCBsaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0ciwgW10pCisKKyAgICAgICAgZm9yIG1vY2sgaW4gbW9ja3M6CisgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworICAgICAgICAgICAgaWYgY2FsbGFibGUobW9jayk6CisgICAgICAgICAgICAgICAgbW9jaygpCisgICAgICAgICAgICAgICAgbW9jaygxLCAyKQorICAgICAgICAgICAgICAgIG1vY2soYT0zKQorCisgICAgICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cnMobW9jaykKKworICAgICAgICAgICAgbW9jay5mb28oKQorICAgICAgICAgICAgbW9jay5mb28uYmFyKDEsIGE9MykKKyAgICAgICAgICAgIG1vY2suZm9vKDEpLmJhcigpLmJheigzKQorCisgICAgICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKworICAgIGRlZiB0ZXN0X2NhbGxfYXJnc190d29fdHVwbGUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCBhPTMpCisgICAgICAgIG1vY2soMiwgYj00KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suY2FsbF9hcmdzKSwgMikKKyAgICAgICAgYXJncywga3dhcmdzID0gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoMiwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGt3YXJncywgZGljdChiPTQpKQorCisgICAgICAgIGV4cGVjdGVkX2xpc3QgPSBbKCgxLCksIGRpY3QoYT0zKSksICgoMiwpLCBkaWN0KGI9NCkpXQorICAgICAgICBmb3IgZXhwZWN0ZWQsIGNhbGxfYXJncyBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgbW9jay5jYWxsX2FyZ3NfbGlzdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYWxsX2FyZ3MpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFswXSwgY2FsbF9hcmdzWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFsxXSwgY2FsbF9hcmdzWzFdKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9aXRlcihbMSwgMiwgM10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9WydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PSdnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydnJywgJ2gnLCAnaSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PUZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2soKSwgRm9vKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKSwgbW9jaygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pdGVyYXRvcl9leGNlcHRpb25zKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgaXRlcmFibGUgPSAoVmFsdWVFcnJvciwgMywgS2V5RXJyb3IsIDYpCisgICAgICAgICAgICBtID0gS2xhc3Moc2lkZV9lZmZlY3Q9aXRlcmFibGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtKCksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSgpLCA2KQorCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9zZXR0aW5nX2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKyAgICAgICAgc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWRlX2VmZmVjdCwgdHlwZShpdGVyKFtdKSkpCisKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IFsnYScsICdiJywgJ2MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWydhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorICAgICAgICBzaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZGVfZWZmZWN0LCB0eXBlKGl0ZXIoW10pKSkKKworICAgICAgICB0aGlzX2l0ZXIgPSBJdGVyKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IHRoaXNfaXRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpLCBtb2NrKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndGhpcycsICdpcycsICdhbicsICdpdGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5zaWRlX2VmZmVjdCwgdGhpc19pdGVyKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfaGFzX2NhbGxzX2FueV9vcmRlcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgIG1vY2soYT0zKQorICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgIG1vY2soYj02KQorICAgICAgICBtb2NrKGI9NikKKworICAgICAgICBrYWxscyA9IFsKKyAgICAgICAgICAgIGNhbGwoMSwgMiksICh7J2EnOiAzfSwpLAorICAgICAgICAgICAgKCgzLCA0KSwpLCAoKCksIHsnYSc6IDN9KSwKKyAgICAgICAgICAgICgnJywgKDEsIDIpKSwgKCcnLCB7J2EnOiAzfSksCisgICAgICAgICAgICAoJycsICgxLCAyKSwge30pLCAoJycsICgpLCB7J2EnOiAzfSkKKyAgICAgICAgXQorICAgICAgICBmb3Iga2FsbCBpbiBrYWxsczoKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhba2FsbF0sIGFueV9vcmRlcj1UcnVlKQorCisgICAgICAgIGZvciBrYWxsIGluIGNhbGwoMSwgJzInKSwgY2FsbChiPTMpLCBjYWxsKCksIDMsIE5vbmUsICdmb28nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICBba2FsbF0sIGFueV9vcmRlcj1UcnVlCisgICAgICAgICAgICApCisKKyAgICAgICAga2FsbF9saXN0cyA9IFsKKyAgICAgICAgICAgIFtjYWxsKDEsIDIpLCBjYWxsKGI9NildLAorICAgICAgICAgICAgW2NhbGwoMywgNCksIGNhbGwoMSwgMildLAorICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbChiPTYpXSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBrYWxsX2xpc3QgaW4ga2FsbF9saXN0czoKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyhrYWxsX2xpc3QsIGFueV9vcmRlcj1UcnVlKQorCisgICAgICAgIGthbGxfbGlzdHMgPSBbCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKGI9NiksIGNhbGwoYj02KV0sCisgICAgICAgICAgICBbY2FsbCgxLCAyKSwgY2FsbCgxLCAyKV0sCisgICAgICAgICAgICBbY2FsbCgzLCA0KSwgY2FsbCgxLCAyKSwgY2FsbCg1LCA3KV0sCisgICAgICAgICAgICBbY2FsbChiPTYpLCBjYWxsKDMsIDQpLCBjYWxsKGI9NiksIGNhbGwoMSwgMiksIGNhbGwoYj02KV0sCisgICAgICAgIF0KKyAgICAgICAgZm9yIGthbGxfbGlzdCBpbiBrYWxsX2xpc3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICBrYWxsX2xpc3QsIGFueV9vcmRlcj1UcnVlCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfaGFzX2NhbGxzKHNlbGYpOgorICAgICAgICBrYWxsczEgPSBbCisgICAgICAgICAgICAgICAgY2FsbCgxLCAyKSwgKHsnYSc6IDN9LCksCisgICAgICAgICAgICAgICAgKCgzLCA0KSwpLCBjYWxsKGI9NiksCisgICAgICAgICAgICAgICAgKCcnLCAoMSwpLCB7J2InOiA2fSksCisgICAgICAgIF0KKyAgICAgICAga2FsbHMyID0gW2NhbGwuZm9vKCksIGNhbGwuYmFyKDEpXQorICAgICAgICBrYWxsczIuZXh0ZW5kKGNhbGwuc3BhbSgpLmJheihhPTMpLmNhbGxfbGlzdCgpKQorICAgICAgICBrYWxsczIuZXh0ZW5kKGNhbGwuYmFtKHNldCgpLCBmb289e30pLmZpc2goWzFdKS5jYWxsX2xpc3QoKSkKKworICAgICAgICBtb2NrcyA9IFtdCisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBtb2NrKDEsIDIpCisgICAgICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgICAgIG1vY2soMywgNCkKKyAgICAgICAgICAgIG1vY2soYj02KQorICAgICAgICAgICAgbW9jaygxLCBiPTYpCisgICAgICAgICAgICBtb2Nrcy5hcHBlbmQoKG1vY2ssIGthbGxzMSkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmZvbygpCisgICAgICAgIG1vY2suYmFyKDEpCisgICAgICAgIG1vY2suc3BhbSgpLmJheihhPTMpCisgICAgICAgIG1vY2suYmFtKHNldCgpLCBmb289e30pLmZpc2goWzFdKQorICAgICAgICBtb2Nrcy5hcHBlbmQoKG1vY2ssIGthbGxzMikpCisKKyAgICAgICAgZm9yIG1vY2ssIGthbGxzIGluIG1vY2tzOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGthbGxzKSk6CisgICAgICAgICAgICAgICAgZm9yIHN0ZXAgaW4gMSwgMiwgMzoKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgPSBrYWxsc1tpOmkrc3RlcF0KKyAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzKHRoZXNlKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbih0aGVzZSkgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfaGFzX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QocmV2ZXJzZWQodGhlc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfYW55X2NhbGwoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygxLCBiPTYpCisKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoMSwgMikKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoYT0zKQorICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCgxLCBiPTYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsLAorICAgICAgICAgICAgMSwgMworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCwKKyAgICAgICAgICAgIGE9NAorICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHNfY3JlYXRlX2F1dG9zcGVjKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgb2JqID0gSXRlcigpCisgICAgICAgIG9iai5mID0gZgorCisgICAgICAgIGZ1bmNzID0gWworICAgICAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGYpLAorICAgICAgICAgICAgY3JlYXRlX2F1dG9zcGVjKG9iaikuZgorICAgICAgICBdCisgICAgICAgIGZvciBmdW5jIGluIGZ1bmNzOgorICAgICAgICAgICAgZnVuYygxLCAyKQorICAgICAgICAgICAgZnVuYygzLCA0KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGZ1bmMubW9ja19jYWxscywgW2NhbGwoMSwgMiksIGNhbGwoMywgNCldCisgICAgICAgICAgICApCisKKworICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIF9PbmUob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9IDEKKyAgICAgICAgY2xhc3MgX1R3byhvYmplY3QpOgorICAgICAgICAgICAgdHdvID0gMgorICAgICAgICBjbGFzcyBBbnl0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgb25lID0gdHdvID0gdGhyZWUgPSAnZm91cicKKworICAgICAgICBrbGFzc2VzID0gWworICAgICAgICAgICAgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgICAgIF0KKyAgICAgICAgZm9yIEtsYXNzIGluIGxpc3Qoa2xhc3Nlcyk6CisgICAgICAgICAgICBrbGFzc2VzLmFwcGVuZChsYW1iZGEgSz1LbGFzczogSyhzcGVjPUFueXRoaW5nKSkKKyAgICAgICAgICAgIGtsYXNzZXMuYXBwZW5kKGxhbWJkYSBLPUtsYXNzOiBLKHNwZWNfc2V0PUFueXRoaW5nKSkKKworICAgICAgICBmb3IgS2xhc3MgaW4ga2xhc3NlczoKKyAgICAgICAgICAgIGZvciBrd2FyZ3MgaW4gZGljdCgpLCBkaWN0KHNwZWNfc2V0PVRydWUpOgorICAgICAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICAgICAgI25vIGVycm9yCisgICAgICAgICAgICAgICAgbW9jay5vbmUsIG1vY2sudHdvLCBtb2NrLnRocmVlCisKKyAgICAgICAgICAgICAgICBmb3IgT25lLCBUd28gaW4gWyhfT25lLCBfVHdvKSwgKFsnb25lJ10sIFsndHdvJ10pXToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJncyBpbiBkaWN0KCksIGRpY3Qoc3BlY19zZXQ9VHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfYWRkX3NwZWMoT25lLCAqKmt3YXJncykKKworICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAndHdvJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICd0aHJlZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdzcGVjX3NldCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ3RocmVlJywgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKFR3bywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ29uZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sudHdvCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ3RocmVlJworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3NwZWNfc2V0JyBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBtb2NrLCAndGhyZWUnLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBub3RlIHRoYXQgY3JlYXRpbmcgYSBtb2NrLCBzZXR0aW5nIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgYW5kCisgICAgICAgICAgICAjICp0aGVuKiBzZXR0aW5nIGEgc3BlYyBkb2Vzbid0IHdvcmsuIE5vdCB0aGUgaW50ZW5kZWQgdXNlIGNhc2UKKworCisgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlY19tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBpbnQobW9jaykKKworICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKG9iamVjdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrKQorCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9ja1snZm9vJ10KKyAgICAgICAgICAgIG1vY2suX19pbnRfXy5yZXR1cm5fdmFsdWUgPTQKKworICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG1vY2spLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfY2hpbGRfbW9jayhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE5vbkNhbGxhYmxlTW9jaywgTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jazoKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisKKyAgICAgICAgICAgIG1vY2suZm9vID0gTW9jaygpCisgICAgICAgICAgICBtb2NrLmZvbygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtjYWxsLmZvbygpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbC5mb28oKV0pCisKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLmJhciA9IE1vY2sobmFtZT0nbmFtZScpCisgICAgICAgICAgICBtb2NrLmJhcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworICAgICAgICAgICAgIyBtb2NrIHdpdGggYW4gZXhpc3RpbmcgX25ld19wYXJlbnQgYnV0IG5vIG5hbWUKKyAgICAgICAgICAgIG1vY2sgPSBLbGFzcygpCisgICAgICAgICAgICBtb2NrLmJheiA9IE1hZ2ljTW9jaygpKCkKKyAgICAgICAgICAgIG1vY2suYmF6KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtdKQorCisKKyAgICBkZWYgdGVzdF9hZGRpbmdfcmV0dXJuX3ZhbHVlX21vY2soc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBNYWdpY01vY2soKQorCisgICAgICAgICAgICBtb2NrKCkoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIFtjYWxsKCksIGNhbGwoKSgpXSkKKworCisgICAgZGVmIHRlc3RfbWFuYWdlcl9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9ICdvbmUnCisgICAgICAgICAgICB0d28gPSAndHdvJworICAgICAgICBtYW5hZ2VyID0gTW9jaygpCisgICAgICAgIHAxID0gcGF0Y2gub2JqZWN0KEZvbywgJ29uZScpCisgICAgICAgIHAyID0gcGF0Y2gub2JqZWN0KEZvbywgJ3R3bycpCisKKyAgICAgICAgbW9ja19vbmUgPSBwMS5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwMS5zdG9wKQorICAgICAgICBtb2NrX3R3byA9IHAyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAyLnN0b3ApCisKKyAgICAgICAgbWFuYWdlci5hdHRhY2hfbW9jayhtb2NrX29uZSwgJ29uZScpCisgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2sobW9ja190d28sICd0d28nKQorCisgICAgICAgIEZvby50d28oKQorICAgICAgICBGb28ub25lKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIubW9ja19jYWxscywgW2NhbGwudHdvKCksIGNhbGwub25lKCldKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX21vY2tfY2FsbHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgbS5fX2ludF9fID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgIG0uX19mbG9hdF9fID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT0zLjApCisgICAgICAgICAgICBpbnQobSkKKyAgICAgICAgICAgIGZsb2F0KG0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBbY2FsbC5fX2ludF9fKCksIGNhbGwuX19mbG9hdF9fKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxscywgW10pCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZWxldGlvbihzZWxmKToKKyAgICAgICAgIyB0aGlzIGJlaGF2aW91ciBpc24ndCAqdXNlZnVsKiwgYnV0IGF0IGxlYXN0IGl0J3Mgbm93IHRlc3RlZC4uLgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gbS5mb28KKyAgICAgICAgICAgIG0uZm9vID0gMworICAgICAgICAgICAgZGVsIG0uZm9vCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZm9vLCBvcmlnaW5hbCkKKworICAgICAgICAgICAgbmV3ID0gbS5mb28gPSBNb2NrKCkKKyAgICAgICAgICAgIGRlbCBtLmZvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvbywgbmV3KQorCisKKyAgICBkZWYgdGVzdF9tb2NrX3BhcmVudHMoc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgb3JpZ2luYWxfcmVwciA9IHJlcHIobSkKKyAgICAgICAgICAgIG0ucmV0dXJuX3ZhbHVlID0gbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtKCksIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisKKyAgICAgICAgICAgIG0ucmVzZXRfbW9jaygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0oKSwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgb3JpZ2luYWxfcmVwcikKKworICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG0uYiA9IG0uYQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5iKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYSkpCisgICAgICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jay5hJyIsIHJlcHIobS5iKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYSkpCisKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBvcmlnaW5hbF9yZXByID0gcmVwcihtKQorICAgICAgICAgICAgbS5hID0gbSgpCisgICAgICAgICAgICBtLmEucmV0dXJuX3ZhbHVlID0gbQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobS5hKCkpLCBvcmlnaW5hbF9yZXByKQorCisKKyAgICBkZWYgdGVzdF9hdHRhY2hfbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3NlcyA9IE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jaworICAgICAgICBmb3IgS2xhc3MgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIGZvciBLbGFzczIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBtID0gS2xhc3MoKQorCisgICAgICAgICAgICAgICAgbTIgPSBLbGFzczIobmFtZT0nZm9vJykKKyAgICAgICAgICAgICAgICBtLmF0dGFjaF9tb2NrKG0yLCAnYmFyJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5iYXIsIG0yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYmFyJyIsIHJlcHIobTIpKQorCisgICAgICAgICAgICAgICAgbS5iYXIuYmF6KDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIFtjYWxsLmJhci5iYXooMSldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIFtjYWxsLmJhci5iYXooMSldKQorCisKKyAgICBkZWYgdGVzdF9hdHRhY2hfbW9ja19yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIGNsYXNzZXMgPSBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2sKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIGZvciBLbGFzczIgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBtID0gS2xhc3MoKQorCisgICAgICAgICAgICAgICAgbTIgPSBLbGFzczIobmFtZT0nZm9vJykKKyAgICAgICAgICAgICAgICBtLmF0dGFjaF9tb2NrKG0yLCAncmV0dXJuX3ZhbHVlJykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobSgpLCBtMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrKCknIiwgcmVwcihtMikpCisKKyAgICAgICAgICAgICAgICBtMi5mb28oKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBjYWxsKCkuZm9vKCkuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZV9kZWxldGlvbihzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTW9jaygpLCBNYWdpY01vY2soKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssICdtJykpCisKKyAgICAgICAgICAgIGRlbCBtb2NrLm0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnbScpKQorCisgICAgICAgICAgICBkZWwgbW9jay5mCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ2YnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZicpCisKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Fzc2lnbmFibGUoc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UobW9jaywgaW50KQorCisgICAgICAgICAgICBtb2NrLl9fY2xhc3NfXyA9IGludAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIGludCkKKyAgICAgICAgICAgIG1vY2suZm9vCisKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMDkxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTAsMCArMSwxNzg1IEBACisjIENvcHlyaWdodCAoQykgMjAwNy0yMDEyIE1pY2hhZWwgRm9vcmQgJiB0aGUgbW9jayB0ZWFtCisjIEUtbWFpbDogZnV6enltYW4gQVQgdm9pZHNwYWNlIERPVCBvcmcgRE9UIHVrCisjIGh0dHA6Ly93d3cudm9pZHNwYWNlLm9yZy51ay9weXRob24vbW9jay8KKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrIGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgU29tZUNsYXNzLCBpc19pbnN0YW5jZQorCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKKyAgICBOb25DYWxsYWJsZU1vY2ssIENhbGxhYmxlTWl4aW4sIHBhdGNoLCBzZW50aW5lbCwKKyAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBwYXRjaCwgX3BhdGNoLAorICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0CispCisKKworYnVpbHRpbl9zdHJpbmcgPSAnYnVpbHRpbnMnCisKK1BUTW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCitNT0ROQU1FID0gJyVzLlBUTW9kdWxlJyAlIF9fbmFtZV9fCisKKworZGVmIF9nZXRfcHJveHkob2JqLCBnZXRfb25seT1UcnVlKToKKyAgICBjbGFzcyBQcm94eShvYmplY3QpOgorICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosIG5hbWUpCisgICAgaWYgbm90IGdldF9vbmx5OgorICAgICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQorICAgICAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBkZWxhdHRyKG9iaiwgbmFtZSkKKyAgICAgICAgUHJveHkuX19zZXRhdHRyX18gPSBfX3NldGF0dHJfXworICAgICAgICBQcm94eS5fX2RlbGF0dHJfXyA9IF9fZGVsYXR0cl9fCisgICAgcmV0dXJuIFByb3h5KCkKKworCisjIGZvciB1c2UgaW4gdGhlIHRlc3QKK3NvbWV0aGluZyAgPSBzZW50aW5lbC5Tb21ldGhpbmcKK3NvbWV0aGluZ19lbHNlICA9IHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UKKworCitjbGFzcyBGb28ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgZihzZWxmLCBhKToKKyAgICAgICAgcGFzcworICAgIGRlZiBnKHNlbGYpOgorICAgICAgICBwYXNzCisgICAgZm9vID0gJ2JhcicKKworICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworZm9vX25hbWUgPSAnJXMuRm9vJyAlIF9fbmFtZV9fCisKKworZGVmIGZ1bmN0aW9uKGEsIGI9Rm9vKToKKyAgICBwYXNzCisKKworY2xhc3MgQ29udGFpbmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnZhbHVlcyA9IHt9CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlc1tuYW1lXQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZXNbbmFtZV0gPSB2YWx1ZQorCisgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIG5hbWUpOgorICAgICAgICBkZWwgc2VsZi52YWx1ZXNbbmFtZV0KKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi52YWx1ZXMpCisKKworCitjbGFzcyBQYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGFzc2VydE5vdENhbGxhYmxlKHNlbGYsIG9iaiwgbWFnaWM9VHJ1ZSk6CisgICAgICAgIE1vY2tDbGFzcyA9IE5vbkNhbGxhYmxlTWFnaWNNb2NrCisgICAgICAgIGlmIG5vdCBtYWdpYzoKKyAgICAgICAgICAgIE1vY2tDbGFzcyA9IE5vbkNhbGxhYmxlTW9jaworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb2JqKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2Uob2JqLCBNb2NrQ2xhc3MpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2luc3RhbmNlKG9iaiwgQ2FsbGFibGVNaXhpbikpCisKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9wYXRjaG9iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfbm9uZShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgTm9uZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFNvbWV0aGluZy5hdHRyaWJ1dGUsICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9wYXRjaG9iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbDIKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnbmV4dF9hdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkMikKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5uZXh0X2F0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5uZXh0X2F0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwyLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9vYmplY3RfbG9va3VwX2lzX3F1aXRlX2xhenkoc2VsZik6CisgICAgICAgIGdsb2JhbCBzb21ldGhpbmcKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29tZXRoaW5nID0gc2VudGluZWwucmVwbGFjZW1lbnRfdmFsdWUKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLnJlcGxhY2VtZW50X3ZhbHVlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc29tZXRoaW5nID0gb3JpZ2luYWwKKworCisgICAgZGVmIHRlc3RfcGF0Y2goc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICAjIFRlc3QgdGhlIHBhdGNoaW5nIGFuZCByZXN0b3Jpbmcgd29ya3MgYSBzZWNvbmQgdGltZQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5IYW5kbGUKKyAgICAgICAgQHBhdGNoKCclcy5vcGVuJyAlIGJ1aWx0aW5fc3RyaW5nLCBtb2NrKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuKCdmaWxlbmFtZScsICdyJyksIHNlbnRpbmVsLkhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZW4gbm90IHBhdGNoZWQiKQorICAgICAgICB0ZXN0KCkKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcGVuLCBtb2NrLCAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUnICUgX19uYW1lX18sCisgICAgICAgICAgICAgICBzZW50aW5lbC5DbGFzc0F0dHJpYnV0ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGluZWwuQ2xhc3NBdHRyaWJ1dGUsICJ1bnBhdGNoZWQiKQorICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShQVE1vZHVsZS5Tb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9kZWZhdWx0X21vY2soc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Qob2JqZWN0KToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBzb21ldGhpbmcyID0gc2VudGluZWwuT3JpZ2luYWwyCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nJykKKyAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2ssIFRlc3Quc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9jayBub3QgcGFzc2VkIGludG8gdGVzdCBmdW5jdGlvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcnKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFRlc3QsICdzb21ldGhpbmcyJykKKyAgICAgICAgZGVmIHRlc3QodGhpczEsIHRoaXMyLCBtb2NrMSwgbW9jazIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGlzMSwgc2VudGluZWwudGhpczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaGVkIGZ1bmN0aW9uIGRpZG4ndCByZWNlaXZlIGluaXRpYWwgYXJndW1lbnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGlzMiwgc2VudGluZWwudGhpczIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXRjaGVkIGZ1bmN0aW9uIGRpZG4ndCByZWNlaXZlIHNlY29uZCBhcmd1bWVudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sxLCBUZXN0LnNvbWV0aGluZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2NrIG5vdCBwYXNzZWQgaW50byB0ZXN0IGZ1bmN0aW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jazIsIFRlc3Quc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Vjb25kIE1vY2sgbm90IHBhc3NlZCBpbnRvIHRlc3QgZnVuY3Rpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2syLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2syLCBNYWdpY01vY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIHdpdGggdHdvIGFyZ3VtZW50cyBkaWQgbm90IGNyZWF0ZSBhIG1vY2siKQorCisgICAgICAgICAgICAjIEEgaGFjayB0byB0ZXN0IHRoYXQgbmV3IG1vY2tzIGFyZSBwYXNzZWQgdGhlIHNlY29uZCB0aW1lCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG91dGVyTW9jazEsIG1vY2sxLCAidW5leHBlY3RlZCB2YWx1ZSBmb3IgbW9jazEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvdXRlck1vY2syLCBtb2NrMiwgInVuZXhwZWN0ZWQgdmFsdWUgZm9yIG1vY2sxIikKKyAgICAgICAgICAgIHJldHVybiBtb2NrMSwgbW9jazIKKworICAgICAgICBvdXRlck1vY2sxID0gb3V0ZXJNb2NrMiA9IE5vbmUKKyAgICAgICAgb3V0ZXJNb2NrMSwgb3V0ZXJNb2NrMiA9IHRlc3Qoc2VudGluZWwudGhpczEsIHNlbnRpbmVsLnRoaXMyKQorCisgICAgICAgICMgVGVzdCB0aGF0IGV4ZWN1dGluZyBhIHNlY29uZCB0aW1lIGNyZWF0ZXMgbmV3IG1vY2tzCisgICAgICAgIHRlc3Qoc2VudGluZWwudGhpczEsIHNlbnRpbmVsLnRoaXMyKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVNvbWVDbGFzcykKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3Mud2liYmxlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfc3BlYyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19hdHRyaWJ1dGUnLCBzcGVjPVNvbWVDbGFzcykKKyAgICAgICAgZGVmIHRlc3QoTW9ja0F0dHJpYnV0ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsIE1vY2tBdHRyaWJ1dGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS53aWJibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19hdHRyaWJ1dGUnLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tBdHRyaWJ1dGUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLCBNb2NrQXR0cmlidXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUud2liYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X25lc3RlZF9wYXRjaF93aXRoX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgIyByZWdyZXNzaW9uIHRlc3QgZm9yIG5lc3RlZCBkZWNvcmF0b3JzCisgICAgICAgIEBwYXRjaCgnJXMub3BlbicgJSBidWlsdGluX3N0cmluZykKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9Wyd3aWJibGUnXSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcywgTW9ja09wZW4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjX2FzX2Jvb2xlYW4oc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBNb2NrU29tZUNsYXNzLndpYmJsZQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBNb2NrU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX29iamVjdF93aXRoX3NwZWNfYXNfYm9vbGVhbihzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChQVE1vZHVsZSwgJ1NvbWVDbGFzcycsIHNwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcywgTW9ja1NvbWVDbGFzcykKKyAgICAgICAgICAgICMgU2hvdWxkIG5vdCByYWlzZSBhdHRyaWJ1dGUgZXJyb3IKKyAgICAgICAgICAgIE1vY2tTb21lQ2xhc3Mud2liYmxlCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IE1vY2tTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfYWN0c193aXRoX3NwZWNfaXNfaW5oZXJpdGVkKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShNb2NrU29tZUNsYXNzLCBNYWdpY01vY2spKQorICAgICAgICAgICAgaW5zdGFuY2UgPSBNb2NrU29tZUNsYXNzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUoaW5zdGFuY2UpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBpbnN0YW5jZS53aWJibGUKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogaW5zdGFuY2Uubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9jcmVhdGVfbW9ja3Nfbm9uX2V4aXN0ZW50X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuZnJvb2JsZScgJSBidWlsdGluX3N0cmluZywgc2VudGluZWwuRnJvb2JsZSwgY3JlYXRlPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyb29ibGUsIHNlbnRpbmVsLkZyb29ibGUpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBmcm9vYmxlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX2NyZWF0ZV9tb2Nrc19ub25fZXhpc3RlbnRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSwgY3JlYXRlPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWVDbGFzcy5mcm9vYmxlLCBzZW50aW5lbC5Gcm9vYmxlKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBAcGF0Y2goJyVzLmZyb29ibGUnICUgYnVpbHRpbl9zdHJpbmcsIHNlbnRpbmVsLkZyb29ibGUpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnJvb2JsZSwgc2VudGluZWwuRnJvb2JsZSkKKworICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBmcm9vYmxlKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93b250X2NyZWF0ZV9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ2Zyb29ibGUnLCBzZW50aW5lbC5Gcm9vYmxlKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKworICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoU29tZUNsYXNzLCAnZnJvb2JsZScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3N0YXRpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiB3b290KCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbnRpbmVsLlN0YXRpYworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnd29vdCcsIHN0YXRpY21ldGhvZChsYW1iZGE6IHNlbnRpbmVsLlBhdGNoZWQpKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby53b290KCksIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28ud29vdCgpLCBzZW50aW5lbC5TdGF0aWMpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2xvY2FsKHNlbGYpOgorICAgICAgICBmb28gPSBzZW50aW5lbC5Gb28KKyAgICAgICAgQHBhdGNoLm9iamVjdChzZW50aW5lbCwgJ0ZvbycsICdGb28nKQorICAgICAgICBkZWYgYW5vbnltb3VzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnRpbmVsLkZvbywgJ0ZvbycpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC5Gb28sIGZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCdGb28nLCkKKworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBmb28uRm9vID0gc2VudGluZWwuRm9vCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChmb28sICdGb28nLCAnRm9vJykKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uRm9vLCAnRm9vJykKKyAgICAgICAgYW5vbnltb3VzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5Gb28sIHNlbnRpbmVsLkZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3RfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qob3RoZXJfc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBkZWYgbm90X3Rlc3RfbWV0aG9kKG90aGVyX3NlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXRlc3QgbWV0aG9kIHBhdGNoZWQiKQorCisgICAgICAgIEZvbyA9IHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKShGb28pCisKKyAgICAgICAgZiA9IEZvbygpCisgICAgICAgIGYudGVzdF9tZXRob2QoKQorICAgICAgICBmLm5vdF90ZXN0X21ldGhvZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2Qob3RoZXJfc2VsZiwgbW9ja19zb21ldGhpbmcpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgZGVmIG5vdF90ZXN0X21ldGhvZChvdGhlcl9zZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi10ZXN0IG1ldGhvZCBwYXRjaGVkIikKKyAgICAgICAgRm9vID0gcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykoRm9vKQorCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLnRlc3RfbWV0aG9kKCkKKyAgICAgICAgZi5ub3RfdGVzdF9tZXRob2QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3R3aWNlKHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGF0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsCisgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSA9IHNlbnRpbmVsLk9yaWdpbmFsMgorCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5QYXRjaGVkLCAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0KHNlbGYpOgorICAgICAgICBmb28gPSB7J2luaXRpYWwnOiBvYmplY3QoKSwgJ290aGVyJzogJ3NvbWV0aGluZyd9CisgICAgICAgIG9yaWdpbmFsID0gZm9vLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZGVsIGZvb1snaW5pdGlhbCddCisgICAgICAgICAgICBmb29bJ290aGVyJ10gPSAnc29tZXRoaW5nIGVsc2UnCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvbyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgWygnYScsICdiJyldKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vWydhJ10sICdiJykKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jb250YWluZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBmb28gPSBDb250YWluZXIoKQorICAgICAgICBmb29bJ2luaXRpYWwnXSA9IG9iamVjdCgpCisgICAgICAgIGZvb1snb3RoZXInXSA9ICAnc29tZXRoaW5nJworCisgICAgICAgIG9yaWdpbmFsID0gZm9vLnZhbHVlcy5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGRlbCBmb29bJ2luaXRpYWwnXQorICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZm9vLnZhbHVlcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX2NsZWFyKHNlbGYpOgorICAgICAgICBmb28gPSB7J2luaXRpYWwnOiBvYmplY3QoKSwgJ290aGVyJzogJ3NvbWV0aGluZyd9CisgICAgICAgIG9yaWdpbmFsID0gZm9vLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBbKCdhJywgJ2InKV0sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jb250YWluZXJfb2JqZWN0X2FuZF9jbGVhcihzZWxmKToKKyAgICAgICAgZm9vID0gQ29udGFpbmVyKCkKKyAgICAgICAgZm9vWydpbml0aWFsJ10gPSBvYmplY3QoKQorICAgICAgICBmb29bJ290aGVyJ10gPSAgJ3NvbWV0aGluZycKKworICAgICAgICBvcmlnaW5hbCA9IGZvby52YWx1ZXMuY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCB7fSkKKyAgICAgICAgICAgIGZvb1snYSddID0gMworICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9LCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udmFsdWVzLCB7J2EnOiAnYid9KQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X25hbWVfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBmb28gPSB7fQorCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBvYmplY3QoKSkKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIG9iamVjdCgpLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgb2JqZWN0KCkpCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgZGVmIHNvbWVfbmFtZSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZV9uYW1lLl9fbmFtZV9fLCAnc29tZV9uYW1lJykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGZvbyA9IHt9CisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdLb25yYWQnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTmFtZUVycm9yIG5vdCByYWlzZWQgYnkgdGVzdCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfc3RyaW5nKHNlbGYpOgorICAgICAgICBAcGF0Y2guZGljdCgnb3MuZW52aXJvbicsIHsna29ucmFkX2RlbG9uZyc6ICdzb21lIHZhbHVlJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdrb25yYWRfZGVsb25nJywgb3MuZW52aXJvbikKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgIyB3b3VsZCBiZSBzb21lIGVmZm9ydCB0byBmaXggdGhpcyAtIHdlIGNvdWxkIHNwZWNpYWwgY2FzZSB0aGUKKyAgICAgICAgIyBidWlsdGluIGRlc2NyaXB0b3JzOiBjbGFzc21ldGhvZCwgcHJvcGVydHksIHN0YXRpY21ldGhvZAorICAgICAgICByZXR1cm4KKyAgICAgICAgY2xhc3MgTm90aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0gTm9uZQorCisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgZm9vID0ge30KKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChOb3RoaW5nLCAnZm9vJywgMikKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGtsYXNzKGNscyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjbHMsIFNvbWV0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChOb3RoaW5nLCAnZm9vJywgMikKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBzdGF0aWMoYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICAgICAgICAgIEBwYXRjaC5kaWN0KGZvbykKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGtsYXNzX2RpY3QoY2xzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNscywgU29tZXRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgc3RhdGljX2RpY3QoYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnCisKKyAgICAgICAgIyB0aGVzZSB3aWxsIHJhaXNlIGV4Y2VwdGlvbnMgaWYgcGF0Y2hpbmcgZGVzY3JpcHRvcnMgaXMgYnJva2VuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLnN0YXRpYygnZjAwJyksICdmMDAnKQorICAgICAgICBTb21ldGhpbmcua2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5zdGF0aWNfZGljdCgnZjAwJyksICdmMDAnKQorICAgICAgICBTb21ldGhpbmcua2xhc3NfZGljdCgpCisKKyAgICAgICAgc29tZXRoaW5nID0gU29tZXRoaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcuc3RhdGljKCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIHNvbWV0aGluZy5rbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLnN0YXRpY19kaWN0KCdmMDAnKSwgJ2YwMCcpCisgICAgICAgIHNvbWV0aGluZy5rbGFzc19kaWN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXQoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVNvbWVDbGFzcywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworICAgICAgICBAcGF0Y2gub2JqZWN0KHN1cHBvcnQsICdTb21lQ2xhc3MnLCBzcGVjPVNvbWVDbGFzcywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChzdXBwb3J0LCAnU29tZUNsYXNzJywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja0NsYXNzKToKKyAgICAgICAgICAgIE1vY2tDbGFzcy56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXRfaW5oZXJpdChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBpbnN0YW5jZSA9IE1vY2tDbGFzcygpCisgICAgICAgICAgICBpbnN0YW5jZS56ID0gJ2ZvbycKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdGVzdCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vY2ssIG9yaWdpbmFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG1vY2spCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3N0b3Bfd2l0aG91dF9zdGFydChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCAnYmFyJywgMykKKworICAgICAgICAjIGNhbGxpbmcgc3RvcCB3aXRob3V0IHN0YXJ0IHVzZWQgdG8gcHJvZHVjZSBhIHZlcnkgb2JzY3VyZSBlcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHBhdGNoZXIuc3RvcCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfc3RhcnRfc3RvcChzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBzb21ldGhpbmcKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChQVE1vZHVsZSwgJ3NvbWV0aGluZycsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisgICAgICAgIHJlcGxhY2VkID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwbGFjZWQsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIHJlcGxhY2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIGQgPSB7J2Zvbyc6ICdiYXInfQorICAgICAgICBvcmlnaW5hbCA9IGQuY29weSgpCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5kaWN0KGQsIFsoJ3NwYW0nLCAnZWdncycpXSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7J3NwYW0nOiAnZWdncyd9KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9jbGFzc19kZWNvcmF0b3Ioc2VsZik6CisgICAgICAgIHRoaXMgPSBzZWxmCisgICAgICAgIGQgPSB7J3NwYW0nOiAnZWdncyd9CisgICAgICAgIG9yaWdpbmFsID0gZC5jb3B5KCkKKworICAgICAgICBjbGFzcyBUZXN0KG9iamVjdCk6CisgICAgICAgICAgICBkZWYgdGVzdF9maXJzdChzZWxmKToKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2VydEVxdWFsKGQsIHsnZm9vJzogJ2Jhcid9KQorICAgICAgICAgICAgZGVmIHRlc3Rfc2Vjb25kKHNlbGYpOgorICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWwoZCwgeydmb28nOiAnYmFyJ30pCisKKyAgICAgICAgVGVzdCA9IHBhdGNoLmRpY3QoZCwgeydmb28nOiAnYmFyJ30sIGNsZWFyPVRydWUpKFRlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdCA9IFRlc3QoKQorCisgICAgICAgIHRlc3QudGVzdF9maXJzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdC50ZXN0X3NlY29uZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdCA9IFRlc3QoKQorCisgICAgICAgIHRlc3QudGVzdF9maXJzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgdGVzdC50ZXN0X3NlY29uZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X2dldF9vbmx5X3Byb3h5KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisgICAgICAgIGNsYXNzIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBmb28gPSAnZm9vJworCisgICAgICAgIGZvciB0aGluZyBpbiBTb21ldGhpbmcsIFNvbWV0aGluZ0Vsc2UsIFNvbWV0aGluZygpLCBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgcHJveHkgPSBfZ2V0X3Byb3h5KHRoaW5nKQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KHByb3h5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnYmFyJykKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGluZy5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZm9vJywgcHJveHkuX19kaWN0X18pCisKKworICAgIGRlZiB0ZXN0X2dldF9zZXRfZGVsZXRlX3Byb3h5KHNlbGYpOgorICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9ICdmb28nCisgICAgICAgIGNsYXNzIFNvbWV0aGluZ0Vsc2U6CisgICAgICAgICAgICBmb28gPSAnZm9vJworCisgICAgICAgIGZvciB0aGluZyBpbiBTb21ldGhpbmcsIFNvbWV0aGluZ0Vsc2UsIFNvbWV0aGluZygpLCBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgcHJveHkgPSBfZ2V0X3Byb3h5KFNvbWV0aGluZywgZ2V0X29ubHk9RmFsc2UpCisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QocHJveHksICdmb28nLCAnYmFyJykKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdiYXInKQorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoaW5nLmZvbywgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdmb28nLCBwcm94eS5fX2RpY3RfXykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgKiprd2FyZ3MpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9vYmplY3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBrd2FyZ3MgPSB7J3NpZGVfZWZmZWN0JzogS2V5RXJyb3IsICdmb28uYmFyLnJldHVybl92YWx1ZSc6IDMzLAorICAgICAgICAgICAgICAgICAgJ2Zvbyc6IE1hZ2ljTW9jaygpfQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsICoqa3dhcmdzKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0geydmb28nOiAnYmFyJ30KKyAgICAgICAgY29weSA9IG9yaWdpbmFsLmNvcHkoKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5kaWN0KG9yaWdpbmFsLCBmb289MywgYmFyPTQsIGJhej01KQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdpbmFsLCBkaWN0KGZvbz0zLCBiYXI9NCwgYmF6PTUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdpbmFsLCBjb3B5KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgQm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGYoc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGcoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZm9vID0gJ2JhcicKKworICAgICAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgX3Rlc3QobW9jayk6CisgICAgICAgICAgICBtb2NrKDEpCisgICAgICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisgICAgICAgIGRlZiBfdGVzdDIobW9jayk6CisgICAgICAgICAgICBtb2NrLmYoMSkKKyAgICAgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5mKQorCisgICAgICAgICAgICBtb2NrLmcoKQorICAgICAgICAgICAgbW9jay5nLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZywgMSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdoJykKKworICAgICAgICAgICAgbW9jay5mb28ubG93ZXIoKQorICAgICAgICAgICAgbW9jay5mb28ubG93ZXIuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAgICAgIG1vY2suQmFyKCkKKyAgICAgICAgICAgIG1vY2suQmFyLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKKyAgICAgICAgICAgIG1vY2suQmFyLmEoKQorICAgICAgICAgICAgbW9jay5CYXIuYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLkJhci5hLCAxKQorCisgICAgICAgICAgICBtb2NrLkJhcigpLmEoKQorICAgICAgICAgICAgbW9jay5CYXIoKS5hLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suQmFyKCkuYSwgMSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suQmFyLCAnYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5CYXIoKSwgJ2InKQorCisgICAgICAgIGRlZiBmdW5jdGlvbihtb2NrKToKKyAgICAgICAgICAgIF90ZXN0KG1vY2spCisgICAgICAgICAgICBfdGVzdDIobW9jaykKKyAgICAgICAgICAgIF90ZXN0Mihtb2NrKDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2NrLCBGb28pCisgICAgICAgICAgICByZXR1cm4gbW9jaworCisgICAgICAgIHRlc3QgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkoZnVuY3Rpb24pCisKKyAgICAgICAgbW9jayA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvbywgbW9jaykKKyAgICAgICAgIyB0ZXN0IHBhdGNoaW5nIGEgc2Vjb25kIHRpbWUgd29ya3MKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCisgICAgICAgIHRlc3QgPSBwYXRjaC5vYmplY3QobW9kdWxlLCAnRm9vJywgYXV0b3NwZWM9VHJ1ZSkoZnVuY3Rpb24pCisKKyAgICAgICAgbW9jayA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZvbywgbW9jaykKKyAgICAgICAgIyB0ZXN0IHBhdGNoaW5nIGEgc2Vjb25kIHRpbWUgd29ya3MKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIGZ1bmN0aW9uKDEpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIGZ1bmN0aW9uKDIsIDMpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgMykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmdW5jdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBmdW5jdGlvbiwgJ2ZvbycpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2tleXdvcmRzKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlLAorICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPTMpCisgICAgICAgIGRlZiB0ZXN0KG1vY2tfZnVuY3Rpb24pOgorICAgICAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwoZnVuY3Rpb24uYWJjLCAnZm9vJykKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbigxLCAyKQorCisgICAgICAgIHJlc3VsdCA9IHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgMykKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfd2l0aF9uZXcoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIG5ldz0zLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKyAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QobW9kdWxlLCAnZnVuY3Rpb24nLCBuZXc9MywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY193aXRoX29iamVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKEZvbyk6CisgICAgICAgICAgICBleHRyYSA9IFtdCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1CYXIpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIEJhcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmV4dHJhLCBsaXN0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfaW5oZXJpdHMoc2VsZik6CisgICAgICAgIEZvb0NsYXNzID0gRm9vCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaywgRm9vQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaygzKSwgRm9vQ2xhc3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19uYW1lKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vJyIsIHJlcHIobW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vLmYnIiwgcmVwcihtb2NrLmYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbygpJyIsIHJlcHIobW9jayhOb25lKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nRm9vKCkuZiciLCByZXByKG1vY2soTm9uZSkuZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF90cmFjZWJhY2tzKHNlbGYpOgorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCBvYmplY3QoKSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKQorCisgICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0KE5vbmUsIE5vbmUsIDApCisgICAgICAgIHRyYWNlYmFjayA9IHJlc3VsdC5fZXhjX2luZm9fdG9fc3RyaW5nKGVyciwgc2VsZikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgQXNzZXJ0aW9uRXJyb3InLCB0cmFjZWJhY2spCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9wYXRjaChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNYWdpY01vY2spCisKKyAgICAgICAgbTEgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgbTIgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KG0xLCBtMikKKyAgICAgICAgZm9yIG1vY2sgaW4gbTEsIG0yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtMSkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX3BhdGNoX29iamVjdChzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTWFnaWNNb2NrKQorCisgICAgICAgIG0xID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIG0yID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtMSwgbTIpCisgICAgICAgIGZvciBtb2NrIGluIG0xLCBtMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobTEpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9rZXl3b3JkX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICBrd2FyZ3MgPSBOb25lCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIEJhci5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIGFyZzE9MSwgYXJnMj0yKQorICAgICAgICBtID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShtKSwgQmFyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXIua3dhcmdzLCBkaWN0KGFyZzE9MSwgYXJnMj0yKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgIGt3YXJncyA9IE5vbmUKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgQmFyLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUJhciwgc3BlYz1CYXIpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhci5rd2FyZ3MsIGRpY3Qoc3BlYz1CYXIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIHNwZWNfc2V0PUJhcikKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFyLmt3YXJncywgZGljdChzcGVjX3NldD1CYXIpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2NyZWF0ZShzZWxmKToKKyAgICAgICAgbm9uX2V4aXN0ZW50X2F0dHIgPSAnJXMud2VlZWVlJyAlIGZvb19uYW1lCisgICAgICAgIHAgPSBwYXRjaChub25fZXhpc3RlbnRfYXR0ciwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHAuc3RhcnQpCisKKyAgICAgICAgcCA9IHBhdGNoKG5vbl9leGlzdGVudF9hdHRyLCBuZXdfY2FsbGFibGU9Tm9uQ2FsbGFibGVNb2NrLAorICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtLCBtYWdpYz1GYWxzZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmNvbXBhdGlibGVfd2l0aF9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gsIGZvb19uYW1lLCBuZXc9b2JqZWN0KCksIG5ld19jYWxsYWJsZT1NYWdpY01vY2sKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLm9iamVjdCwgRm9vLCAnZicsIG5ldz1vYmplY3QoKSwKKyAgICAgICAgICAgIG5ld19jYWxsYWJsZT1NYWdpY01vY2sKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5jb21wYXRpYmxlX3dpdGhfYXV0b3NwZWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gsIGZvb19uYW1lLCBuZXdfY2FsbGFibGU9TWFnaWNNb2NrLAorICAgICAgICAgICAgYXV0b3NwZWM9VHJ1ZQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVmFsdWVFcnJvciwgcGF0Y2gub2JqZWN0LCBGb28sICdmJywgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaywKKyAgICAgICAgICAgIGF1dG9zcGVjPVRydWUKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5oZXJpdF9mb3JfbW9ja3Moc2VsZik6CisgICAgICAgIGNsYXNzIE1vY2tTdWIoTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgTW9ja0NsYXNzZXMgPSAoCisgICAgICAgICAgICBOb25DYWxsYWJsZU1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBNYWdpY01vY2ssIE1vY2ssIE1vY2tTdWIKKyAgICAgICAgKQorICAgICAgICBmb3IgS2xhc3MgaW4gTW9ja0NsYXNzZXM6CisgICAgICAgICAgICBmb3IgYXJnIGluICdzcGVjJywgJ3NwZWNfc2V0JzoKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSB7YXJnOiBUcnVlfQorICAgICAgICAgICAgICAgIHAgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPUtsYXNzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IG0ucmV0dXJuX3ZhbHVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwgJ3gnKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9pbmhlcml0X25vbl9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBOb3RBTW9jayhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKworICAgICAgICBwID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1Ob3RBTW9jaywgc3BlYz1UcnVlKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtLCBOb3RBTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ3JldHVybl92YWx1ZScpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zcGVjLCBGb28pCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9jbGFzc19kZWNvcmF0aW5nKHNlbGYpOgorICAgICAgICB0ZXN0ID0gc2VsZgorICAgICAgICBvcmlnaW5hbCA9IEZvbworICAgICAgICBjbGFzcyBTb21lVGVzdChvYmplY3QpOgorCisgICAgICAgICAgICBkZWYgX3Rlc3Qoc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXNOb3QoRm9vLCBvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvbywgbW9ja19mb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJc0luc3RhbmNlKEZvbywgU29tZUNsYXNzKQorCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QobW9ja19mb28pCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZiwgbW9ja19mb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QobW9ja19mb28pCisKKyAgICAgICAgU29tZVRlc3QgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPVNvbWVDbGFzcykoU29tZVRlc3QpCisgICAgICAgIFNvbWVUZXN0KCkudGVzdF9vbmUoKQorICAgICAgICBTb21lVGVzdCgpLnRlc3RfdHdvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyMSA9IHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPTEsIGc9MikKKyAgICAgICAgcGF0Y2hlcjIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGY9MSwgZz0yKQorCisgICAgICAgIGZvciBwYXRjaGVyIGluIHBhdGNoZXIxLCBwYXRjaGVyMjoKKyAgICAgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCAyKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9MywgZz00KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCA0KQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9ub19rd2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhdGNoLm11bHRpcGxlLCBmb29fbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGF0Y2gubXVsdGlwbGUsIEZvbykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlX21vY2tzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdChmLCBmb28pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2Nrc19kaWZmZXJlbnRfb3JkZXIoc2VsZik6CisgICAgICAgICMgYnVnIHJldmVhbGVkIGJ5IEp5dGhvbiEKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDMpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBvdGhlciA9IHBhdGNoLm9iamVjdChGb28sICdnJywgREVGQVVMVCkKKyAgICAgICAgb3RoZXIuYXR0cmlidXRlX25hbWUgPSAnZycKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gW290aGVyXQorCisgICAgICAgIEBwYXRjaGVyCisgICAgICAgIGRlZiB0ZXN0KGcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZywgZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDMpCisKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3N0YWNrZWRfZGVjb3JhdG9ycyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCkKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmb289REVGQVVMVCkKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgZGVmIHRlc3QxKGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIF90ZXN0KGcsICoqa3dhcmdzKQorCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxUKQorICAgICAgICBAcGF0Y2goZm9vX25hbWUgKyAnLmcnKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdDIoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgX3Rlc3QoZywgKiprd2FyZ3MpCisKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZm9vPURFRkFVTFQpCisgICAgICAgIGRlZiB0ZXN0MyhnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBfdGVzdChnLCAqKmt3YXJncykKKworICAgICAgICBkZWYgX3Rlc3QoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgZiA9IGt3YXJncy5wb3AoJ2YnKQorICAgICAgICAgICAgZm9vID0ga3dhcmdzLnBvcCgnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmcsIGcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGcsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgIHRlc3QxKCkKKyAgICAgICAgdGVzdDIoKQorICAgICAgICB0ZXN0MygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2Nrc19wYXRjaGVyKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUKQorCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gcmVzdWx0WydmJ10KKyAgICAgICAgICAgIGZvbyA9IHJlc3VsdFsnZm9vJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHJlc3VsdCksIHNldChbJ2YnLCAnZm9vJ10pKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9kZWNvcmF0aW5nX2NsYXNzKHNlbGYpOgorICAgICAgICB0ZXN0ID0gc2VsZgorICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28KKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIGNsYXNzIFNvbWVUZXN0KG9iamVjdCk6CisKKyAgICAgICAgICAgIGRlZiBfdGVzdChzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28uZiwgZikKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydEVxdWFsKEZvby5nLCAzKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmb28sIE1hZ2ljTW9jaykpCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QoZiwgZm9vKQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIGYsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdChmLCBmb28pCisKKyAgICAgICAgU29tZVRlc3QgPSBwYXRjaC5tdWx0aXBsZSgKKyAgICAgICAgICAgIGZvb19uYW1lLCBmPURFRkFVTFQsIGc9MywgZm9vPURFRkFVTFQKKyAgICAgICAgKShTb21lVGVzdCkKKworICAgICAgICB0aGluZyA9IFNvbWVUZXN0KCkKKyAgICAgICAgdGhpbmcudGVzdF9vbmUoKQorICAgICAgICB0aGluZy50ZXN0X3R3bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfY3JlYXRlKHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBibGFtPSdibGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHBhdGNoZXIuc3RhcnQpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgYmxhbT0nYmxhbScsIGNyZWF0ZT1UcnVlKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uYmxhbSwgJ2JsYW0nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoRm9vLCAnYmxhbScpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zcGVjX3NldChzZWxmKToKKyAgICAgICAgIyBpZiBzcGVjX3NldCB3b3JrcyB0aGVuIHdlIGNhbiBhc3N1bWUgdGhhdCBzcGVjIGFuZCBhdXRvc3BlYyBhbHNvCisgICAgICAgICMgd29yayBhcyB0aGUgdW5kZXJseWluZyBtYWNoaW5lcnkgaXMgdGhlIHNhbWUKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgZm9vPURFRkFVTFQsIHNwZWNfc2V0PVsnYScsICdiJ10pCisgICAgICAgIHJlc3VsdCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mb28sIHJlc3VsdFsnZm9vJ10pCisgICAgICAgICAgICBGb28uZm9vLmEoMSkKKyAgICAgICAgICAgIEZvby5mb28uYigyKQorICAgICAgICAgICAgRm9vLmZvby5hLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgRm9vLmZvby5iLmFzc2VydF9jYWxsZWRfd2l0aCgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIEZvby5mb28sICdjJywgTm9uZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX25ld19jYWxsYWJsZShzZWxmKToKKyAgICAgICAgY2xhc3MgVGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoCisgICAgICAgICAgICBGb28sIGY9REVGQVVMVCwgZz1ERUZBVUxULCBuZXdfY2FsbGFibGU9VGhpbmcKKyAgICAgICAgKQorICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZiwgcmVzdWx0WydmJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5nLCByZXN1bHRbJ2cnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShGb28uZiwgVGhpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vLmcsIFRoaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28uZiwgRm9vLmcpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfcGF0Y2hfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzEoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcyKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBmdW5jIGluIHRoaW5nMSwgdGhpbmcyLCB0aGluZzM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfZmFpbHVyZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZiA9IEZvby5mCisgICAgICAgIG9yaWdpbmFsX2cgPSBGb28uZworICAgICAgICBvcmlnaW5hbF9mb28gPSBGb28uZm9vCisKKyAgICAgICAgZGVmIGNyYXNoZXIoKToKKyAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignY3Jhc2hlcicpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMSgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzIoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBkZWYgdGhpbmczKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIGZ1bmMgaW4gdGhpbmcxLCB0aGluZzIsIHRoaW5nMzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCBvcmlnaW5hbF9mb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgZ29vZCA9IHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgZ29vZC5hdHRyaWJ1dGVfbmFtZSA9ICdnJworCisgICAgICAgIGJhZCA9IHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgYmFkLmF0dHJpYnV0ZV9uYW1lID0gJ21pc3NpbmcnCisKKyAgICAgICAgZm9yIGFkZGl0aW9uYWxzIGluIFtnb29kLCBiYWRdLCBbYmFkLCBnb29kXToKKyAgICAgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IGFkZGl0aW9uYWxzCisKKyAgICAgICAgICAgIEBwYXRjaGVyCisgICAgICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfbmV3X2NhbGxhYmxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vLmZvbworCisgICAgICAgIGRlZiBjcmFzaGVyKCk6CisgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ2NyYXNoZXInKQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSAnZicKKworICAgICAgICBnb29kID0gcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBnb29kLmF0dHJpYnV0ZV9uYW1lID0gJ2cnCisKKyAgICAgICAgYmFkID0gcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBiYWQuYXR0cmlidXRlX25hbWUgPSAnZm9vJworCisgICAgICAgIGZvciBhZGRpdGlvbmFscyBpbiBbZ29vZCwgYmFkXSwgW2JhZCwgZ29vZF06CisgICAgICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBhZGRpdGlvbmFscworCisgICAgICAgICAgICBAcGF0Y2hlcgorICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZnVuYykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCBvcmlnaW5hbF9mb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX3N0cmluZ19zdWJjbGFzc2VzKHNlbGYpOgorICAgICAgICBGb28gPSB0eXBlKCdGb28nLCAoc3RyLCksIHsnZmlzaCc6ICd0YXN0eSd9KQorICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vLCBmaXNoPSduZWFybHkgZ29uZScpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5maXNoLCAnbmVhcmx5IGdvbmUnKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5maXNoLCAndGFzdHknKQorCisKKyAgICBAcGF0Y2goJ3VuaXR0ZXN0Lm1vY2sucGF0Y2guVEVTVF9QUkVGSVgnLCAnZm9vJykKKyAgICBkZWYgdGVzdF9wYXRjaF90ZXN0X3ByZWZpeChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICB0aGluZyA9ICdvcmlnaW5hbCcKKworICAgICAgICAgICAgZGVmIGZvb19vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiBmb29fdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworCisgICAgICAgIEZvbyA9IHBhdGNoLm9iamVjdChGb28sICd0aGluZycsICdjaGFuZ2VkJykoRm9vKQorCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmZvb19vbmUoKSwgJ2NoYW5nZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5mb29fdHdvKCksICdjaGFuZ2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF9vbmUoKSwgJ29yaWdpbmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udGVzdF90d28oKSwgJ29yaWdpbmFsJykKKworCisgICAgQHBhdGNoKCd1bml0dGVzdC5tb2NrLnBhdGNoLlRFU1RfUFJFRklYJywgJ2JhcicpCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF90ZXN0X3ByZWZpeChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYmFyX29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiBiYXJfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBkaWN0KHRoZV9kaWN0KQorCisgICAgICAgIHRoZV9kaWN0ID0geydrZXknOiAnb3JpZ2luYWwnfQorICAgICAgICBGb28gPSBwYXRjaC5kaWN0KHRoZV9kaWN0LCBrZXk9J2NoYW5nZWQnKShGb28pCisKKyAgICAgICAgZm9vID1Gb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5iYXJfb25lKCksIHsna2V5JzogJ2NoYW5nZWQnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyX3R3bygpLCB7J2tleSc6ICdjaGFuZ2VkJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3Rfb25lKCksIHsna2V5JzogJ29yaWdpbmFsJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3RfdHdvKCksIHsna2V5JzogJ29yaWdpbmFsJ30pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19tb2NrX3JlcHIoc2VsZik6CisgICAgICAgIGZvciBhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgKip7YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzJyIsIHJlcHIobSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobS5jbGFzc19hdHRyaWJ1dGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MoKSciLCByZXByKG0oKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcygpLmNsYXNzX2F0dHJpYnV0ZSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtKCkuY2xhc3NfYXR0cmlidXRlKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbmVzdGVkX2F1dG9zcGVjX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJ3VuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCcsIGF1dG9zcGVjPVRydWUpIGFzIG06CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nc3VwcG9ydC5Tb21lQ2xhc3Mud2liYmxlKCknIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtLlNvbWVDbGFzcy53aWJibGUoKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nc3VwcG9ydC5Tb21lQ2xhc3MoKS53aWJibGUoKSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0uU29tZUNsYXNzKCkud2liYmxlKCkpKQorCisKKworICAgIGRlZiB0ZXN0X21vY2tfY2FsbHNfd2l0aF9wYXRjaChzZWxmKToKKyAgICAgICAgZm9yIGFyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCAqKnthcmc6IFRydWV9KQorICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG0ud2liYmxlKCkKKworICAgICAgICAgICAgICAgIGthbGxzID0gW2NhbGwud2liYmxlKCldCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIGthbGxzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS53aWJibGUubW9ja19jYWxscywgW2NhbGwoKV0pCisKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtKCkKKyAgICAgICAgICAgICAgICBrYWxscy5hcHBlbmQoY2FsbCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKworICAgICAgICAgICAgICAgIHJlc3VsdC53aWJibGUoKQorICAgICAgICAgICAgICAgIGthbGxzLmFwcGVuZChjYWxsKCkud2liYmxlKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIGthbGxzKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubW9ja19jYWxscywgW2NhbGwud2liYmxlKCldKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LndpYmJsZS5tb2NrX2NhbGxzLCBbY2FsbCgpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5tZXRob2RfY2FsbHMsIFtjYWxsLndpYmJsZSgpXSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfaW1wb3J0c19sYXppbHkoc2VsZik6CisgICAgICAgIHN5cy5tb2R1bGVzLnBvcCgnc3F1aXp6JywgTm9uZSkKKworICAgICAgICBwMSA9IHBhdGNoKCdzcXVpenouc3F1b3p6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IsIHAxLnN0YXJ0KQorCisgICAgICAgIHNxdWl6eiA9IE1vY2soKQorICAgICAgICBzcXVpenouc3F1b3p6ID0gNgorICAgICAgICBzeXMubW9kdWxlc1snc3F1aXp6J10gPSBzcXVpenoKKyAgICAgICAgcDEgPSBwYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIHNxdWl6ei5zcXVvenogPSAzCisgICAgICAgIHAxLnN0YXJ0KCkKKyAgICAgICAgcDEuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1aXp6LnNxdW96eiwgMykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfcHJvcG9ncmF0ZXNfZXhjX29uX2V4aXQoc2VsZik6CisgICAgICAgIGNsYXNzIGhvbGRlcjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gTm9uZSwgTm9uZSwgTm9uZQorCisgICAgICAgIGNsYXNzIGN1c3RvbV9wYXRjaChfcGF0Y2gpOgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV0eXBlPU5vbmUsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBfcGF0Y2guX19leGl0X18oc2VsZiwgZXR5cGUsIHZhbCwgdGIpCisgICAgICAgICAgICAgICAgaG9sZGVyLmV4Y19pbmZvID0gZXR5cGUsIHZhbCwgdGIKKyAgICAgICAgICAgIHN0b3AgPSBfX2V4aXRfXworCisgICAgICAgIGRlZiB3aXRoX2N1c3RvbV9wYXRjaCh0YXJnZXQpOgorICAgICAgICAgICAgZ2V0dGVyLCBhdHRyaWJ1dGUgPSBfZ2V0X3RhcmdldCh0YXJnZXQpCisgICAgICAgICAgICByZXR1cm4gY3VzdG9tX3BhdGNoKAorICAgICAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBERUZBVUxULCBOb25lLCBGYWxzZSwgTm9uZSwKKyAgICAgICAgICAgICAgICBOb25lLCBOb25lLCB7fQorICAgICAgICAgICAgKQorCisgICAgICAgIEB3aXRoX2N1c3RvbV9wYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB0ZXN0KQorICAgICAgICBzZWxmLmFzc2VydElzKGhvbGRlci5leGNfaW5mb1swXSwgUnVudGltZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShob2xkZXIuZXhjX2luZm9bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB2YWx1ZSBub3QgcHJvcGdhdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaG9sZGVyLmV4Y19pbmZvWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24gdHJhY2ViYWNrIG5vdCBwcm9wZ2F0ZWQnKQorCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYW5kX3NwZWNzKHNlbGYpOgorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ3NwZWNfc2V0JywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLmRvZXNub3RleGlzdCcgJSBfX25hbWVfXywgY3JlYXRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBsYW1iZGE6IGRvZXNub3RleGlzdCkKKworICAgICAgICAgICAgIyBjaGVjayB0aGF0IHNwZWMgd2l0aCBjcmVhdGUgaXMgaW5ub2N1b3VzIGlmIHRoZSBvcmlnaW5hbCBleGlzdHMKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBjcmVhdGU9VHJ1ZSwgKip7a3dhcmc6IFRydWV9KQorICAgICAgICAgICAgcC5zdGFydCgpCisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9zcGVjcyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWwgPSBQVE1vZHVsZQorICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgYXV0b3NwZWM9MCwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQVE1vZHVsZSwgb3JpZ2luYWwpCisKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWNfc2V0PTAsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUFRNb2R1bGUsIG9yaWdpbmFsKQorCisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWNfc2V0JywgJ2F1dG9zcGVjJyk6CisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz0wLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBUTW9kdWxlLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3Rfc3BlY3NfZmFsc2VfaW5zdGVhZF9vZl9ub25lKHNlbGYpOgorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1GYWxzZSwgc3BlY19zZXQ9RmFsc2UsIGF1dG9zcGVjPUZhbHNlKQorICAgICAgICBtb2NrID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgbm8gc3BlYyBzaG91bGQgaGF2ZSBiZWVuIHNldCwgc28gYXR0cmlidXRlIGFjY2VzcyBzaG91bGQgbm90IGZhaWwKKyAgICAgICAgICAgIG1vY2suZG9lc19ub3RfZXhpc3QKKyAgICAgICAgICAgIG1vY2suZG9lc19ub3RfZXhpc3QgPSAzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9mYWxzZXlfc3BlYyhzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbSwgJ2RvZXNub3RleGl0JykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19zZXRfdHJ1ZShzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWNfc2V0PVRydWUsICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9lc25vdGV4aXN0JywgJ3NvbWV0aGluZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdkb2Vzbm90ZXhpc3QnKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIHNwZWMgPSAoJ19fY2FsbF9fJywpCisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPXNwZWMpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxhYmxlKG0pKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3Rfbm90X2NhbGxhYmxlX3NwZWNfYXNfbGlzdChzZWxmKToKKyAgICAgICAgc3BlYyA9ICgnZm9vJywgJ2JhcicpCisgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjPXNwZWMpCisgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjYWxsYWJsZShtKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3N0b3BhbGwoc2VsZik6CisgICAgICAgIHVubGluayA9IG9zLnVubGluaworICAgICAgICBjaGRpciA9IG9zLmNoZGlyCisgICAgICAgIHBhdGggPSBvcy5wYXRoCisgICAgICAgIHBhdGNoKCdvcy51bmxpbmsnLCBzb21ldGhpbmcpLnN0YXJ0KCkKKyAgICAgICAgcGF0Y2goJ29zLmNoZGlyJywgc29tZXRoaW5nX2Vsc2UpLnN0YXJ0KCkKKworICAgICAgICBAcGF0Y2goJ29zLnBhdGgnKQorICAgICAgICBkZWYgcGF0Y2hlZChtb2NrX3BhdGgpOgorICAgICAgICAgICAgcGF0Y2guc3RvcGFsbCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLnBhdGgsIG1vY2tfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MudW5saW5rLCB1bmxpbmspCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLmNoZGlyLCBjaGRpcikKKworICAgICAgICBwYXRjaGVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5wYXRoLCBwYXRoKQorCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmRhNjhlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHNlbnRpbmVsLnB5CkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBzZW50aW5lbCwgREVGQVVMVAorCisKK2NsYXNzIFNlbnRpbmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdFNlbnRpbmVscyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC53aGF0ZXZlciwgc2VudGluZWwud2hhdGV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIG5vdCBzdG9yZWQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlbnRpbmVsLndoYXRldmVyLCBzZW50aW5lbC53aGF0ZXZlcmVsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbnRpbmVsIHNob3VsZCBiZSB1bmlxdWUnKQorCisKKyAgICBkZWYgdGVzdFNlbnRpbmVsTmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VudGluZWwud2hhdGV2ZXIpLCAnc2VudGluZWwud2hhdGV2ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBuYW1lIGluY29ycmVjdCcpCisKKworICAgIGRlZiB0ZXN0REVGQVVMVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERFRkFVTFQgaXMgc2VudGluZWwuREVGQVVMVCkKKworICAgIGRlZiB0ZXN0QmFzZXMoc2VsZik6CisgICAgICAgICMgSWYgdGhpcyBkb2Vzbid0IHJhaXNlIGFuIEF0dHJpYnV0ZUVycm9yIHRoZW4gaGVscChtb2NrKSBpcyBicm9rZW4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogc2VudGluZWwuX19iYXNlc19fKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3R3aXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMGNmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weQpAQCAtMCwwICsxLDE3NiBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHdhcm5pbmdzIGltcG9ydCBjYXRjaF93YXJuaW5ncworCitmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgaXNfaW5zdGFuY2UKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTWFnaWNNb2NrLCBNb2NrLCBwYXRjaCwgc2VudGluZWwsIG1vY2tfb3BlbiwgY2FsbAorCisKKworc29tZXRoaW5nICA9IHNlbnRpbmVsLlNvbWV0aGluZworc29tZXRoaW5nX2Vsc2UgID0gc2VudGluZWwuU29tZXRoaW5nRWxzZQorCisKKworY2xhc3MgV2l0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwgInVucGF0Y2hlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nMiwgInVucGF0Y2hlZCIpCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdwb3cnKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJwYXRjaCBzd2FsbG93ZWQgZXhjZXB0aW9uIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfYXMoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG1vY2tfc29tZXRoaW5nLCBNYWdpY01vY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaGluZyB3cm9uZyB0eXBlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfb2JqZWN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9ICdmb28nCisgICAgICAgIG9yaWdpbmFsID0gRm9vLnNvbWV0aGluZworICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChGb28sICdzb21ldGhpbmcnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoRm9vLnNvbWV0aGluZywgb3JpZ2luYWwsICJ1bnBhdGNoZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5zb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9uZXN0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpOgorICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZywgcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZ19lbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgbW9ja19zb21ldGhpbmdfZWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X3NwZWNpZmllZChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5QYXRjaGVkKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tfc29tZXRoaW5nLCBzZW50aW5lbC5QYXRjaGVkLCAid3JvbmcgcGF0Y2giKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdENvbnRleHRNYW5hZ2VyTW9ja2luZyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZW50ZXJfXyA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZXhpdF9fID0gTW9jaygpCisgICAgICAgIG1vY2suX19leGl0X18ucmV0dXJuX3ZhbHVlID0gRmFsc2UKKworICAgICAgICB3aXRoIG1vY2sgYXMgbToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbW9jay5fX2VudGVyX18ucmV0dXJuX3ZhbHVlKQorICAgICAgICBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBtb2NrLl9fZXhpdF9fLmFzc2VydF9jYWxsZWRfd2l0aChOb25lLCBOb25lLCBOb25lKQorCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfd2l0aF9tYWdpY19tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICAgICAgJ2ZvbycgKyAzCisgICAgICAgIG1vY2suX19lbnRlcl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fZXhpdF9fLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfc2FtZV9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuUGF0Y2hlZCkgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfYWdhaW46CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfYWdhaW4sICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXN0b3JlZCB3aXRoIHdyb25nIGluc3RhbmNlIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLCAibm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfaW1icmljYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX3NvbWV0aGluZywgInVucGF0Y2hlZCIpCisKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZ19lbHNlJyAlIF9fbmFtZV9fKSBhcyBtb2NrX3NvbWV0aGluZ19lbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIG1vY2tfc29tZXRoaW5nX2Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorCisKKyAgICBkZWYgdGVzdF9kaWN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgZm9vID0ge30KKyAgICAgICAgd2l0aCBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7J2EnOiAnYid9KQorICAgICAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignS29ucmFkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisKKworCitjbGFzcyBUZXN0TW9ja09wZW4odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbW9ja19vcGVuKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKCkKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpIGFzIHBhdGNoZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhdGNoZWQsIG1vY2spCisgICAgICAgICAgICBvcGVuKCdmb28nKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X21vY2tfb3Blbl9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBtb2NrX29wZW4oKQorICAgICAgICBoYW5kbGUgPSBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi5yZWFkKCkKKworICAgICAgICBleHBlY3RlZF9jYWxscyA9IFtjYWxsKCdmb28nKSwgY2FsbCgpLl9fZW50ZXJfXygpLCBjYWxsKCkucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKCkuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBleHBlY3RlZF9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmLCBoYW5kbGUpCisKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrX29wZW4obW9jaykKKworICAgICAgICB3aXRoIHBhdGNoKCclcy5vcGVuJyAlIF9fbmFtZV9fLCBtb2NrLCBjcmVhdGU9VHJ1ZSkgYXMgcGF0Y2hlZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocGF0Y2hlZCwgbW9jaykKKyAgICAgICAgICAgIG9wZW4oJ2ZvbycpCisKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKworCisgICAgZGVmIHRlc3RfcmVhZF9kYXRhKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKHJlYWRfZGF0YT0nZm9vJykKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgaCA9IG9wZW4oJ2JhcicpCisgICAgICAgICAgICByZXN1bHQgPSBoLnJlYWQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnZm9vJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9lcnJvci5weSBiL0xpYi91cmxsaWIvZXJyb3IucHkKaW5kZXggNDBhZGQ0MS4uYzFkZmM0MCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9lcnJvci5weQorKysgYi9MaWIvdXJsbGliL2Vycm9yLnB5CkBAIC0xMyw2ICsxMyw5IEBACiAKIGltcG9ydCB1cmxsaWIucmVzcG9uc2UKIAorX19hbGxfXyA9IFsnVVJMRXJyb3InLCAnSFRUUEVycm9yJywgJ0NvbnRlbnRUb29TaG9ydEVycm9yJ10KKworCiAjIGRvIHRoZXNlIGVycm9yIGNsYXNzZXMgbWFrZSBzZW5zZT8KICMgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSU9FcnJvciBzdHVmZiBpcyBvdmVycmlkZGVuLiAgd2UganVzdCB3YW50IHRvIGJlCiAjIHN1YnR5cGVzLgpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGQ2ZjlmOWEuLjY3YjRjNzkgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTg5LDE0ICs4OSwxNiBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBwb3NpeHBhdGgKLWltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHdhcm5pbmdzCiAKKwogZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IFVSTEVycm9yLCBIVFRQRXJyb3IsIENvbnRlbnRUb29TaG9ydEVycm9yCiBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgKAogICAgIHVybHBhcnNlLCB1cmxzcGxpdCwgdXJsam9pbiwgdW53cmFwLCBxdW90ZSwgdW5xdW90ZSwKQEAgLTExMiwyMSArMTE0LDQwIEBACiBlbHNlOgogICAgIF9oYXZlX3NzbCA9IFRydWUKIAorX19hbGxfXyA9IFsKKyAgICAjIENsYXNzZXMKKyAgICAnUmVxdWVzdCcsICdPcGVuZXJEaXJlY3RvcicsICdCYXNlSGFuZGxlcicsICdIVFRQRGVmYXVsdEVycm9ySGFuZGxlcicsCisgICAgJ0hUVFBSZWRpcmVjdEhhbmRsZXInLCAnSFRUUENvb2tpZVByb2Nlc3NvcicsICdQcm94eUhhbmRsZXInLAorICAgICdIVFRQUGFzc3dvcmRNZ3InLCAnSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbScsCisgICAgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLAorICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywKKyAgICAnSFRUUEhhbmRsZXInLCAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLAorICAgICdVbmtub3duSGFuZGxlcicsICdIVFRQRXJyb3JQcm9jZXNzb3InLAorICAgICMgRnVuY3Rpb25zCisgICAgJ3VybG9wZW4nLCAnaW5zdGFsbF9vcGVuZXInLCAnYnVpbGRfb3BlbmVyJywKKyAgICAncGF0aG5hbWUydXJsJywgJ3VybDJwYXRobmFtZScsICdnZXRwcm94aWVzJywKKyAgICAjIExlZ2FjeSBpbnRlcmZhY2UKKyAgICAndXJscmV0cmlldmUnLCAndXJsY2xlYW51cCcsICdVUkxvcGVuZXInLCAnRmFuY3lVUkxvcGVuZXInLAorXQorCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAogX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KIAogX29wZW5lciA9IE5vbmUKIGRlZiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKLSAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSk6CisgICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1GYWxzZSk6CiAgICAgZ2xvYmFsIF9vcGVuZXIKLSAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgogICAgICAgICBpZiBub3QgX2hhdmVfc3NsOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU1NMIHN1cHBvcnQgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1NTTHYyCi0gICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWZpbGUsIGNhcGF0aCkKKyAgICAgICAgICAgIGlmIGNhZmlsZSBvciBjYXBhdGg6CisgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlLCBjYXBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQpAQCAtMTQyLDE3ICsxNjMsNzggQEAKICAgICBnbG9iYWwgX29wZW5lcgogICAgIF9vcGVuZXIgPSBvcGVuZXIKIAotIyBUT0RPKGpoeWx0b24pOiBNYWtlIHRoaXMgd29yayB3aXRoIHRoZSBzYW1lIGdsb2JhbCBvcGVuZXIuCi1fdXJsb3BlbmVyID0gTm9uZQorX3VybF90ZW1wZmlsZXMgPSBbXQogZGVmIHVybHJldHJpZXZlKHVybCwgZmlsZW5hbWU9Tm9uZSwgcmVwb3J0aG9vaz1Ob25lLCBkYXRhPU5vbmUpOgotICAgIGdsb2JhbCBfdXJsb3BlbmVyCi0gICAgaWYgbm90IF91cmxvcGVuZXI6Ci0gICAgICAgIF91cmxvcGVuZXIgPSBGYW5jeVVSTG9wZW5lcigpCi0gICAgcmV0dXJuIF91cmxvcGVuZXIucmV0cmlldmUodXJsLCBmaWxlbmFtZSwgcmVwb3J0aG9vaywgZGF0YSkKKyAgICAiIiIKKyAgICBSZXRyaWV2ZSBhIFVSTCBpbnRvIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9uIGRpc2suCisKKyAgICBSZXF1aXJlcyBhIFVSTCBhcmd1bWVudC4gSWYgYSBmaWxlbmFtZSBpcyBwYXNzZWQsIGl0IGlzIHVzZWQgYXMKKyAgICB0aGUgdGVtcG9yYXJ5IGZpbGUgbG9jYXRpb24uIFRoZSByZXBvcnRob29rIGFyZ3VtZW50IHNob3VsZCBiZQorICAgIGEgY2FsbGFibGUgdGhhdCBhY2NlcHRzIGEgYmxvY2sgbnVtYmVyLCBhIHJlYWQgc2l6ZSwgYW5kIHRoZQorICAgIHRvdGFsIGZpbGUgc2l6ZSBvZiB0aGUgVVJMIHRhcmdldC4gVGhlIGRhdGEgYXJndW1lbnQgc2hvdWxkIGJlCisgICAgdmFsaWQgVVJMIGVuY29kZWQgZGF0YS4KKworICAgIElmIGEgZmlsZW5hbWUgaXMgcGFzc2VkIGFuZCB0aGUgVVJMIHBvaW50cyB0byBhIGxvY2FsIHJlc291cmNlLAorICAgIHRoZSByZXN1bHQgaXMgYSBjb3B5IGZyb20gbG9jYWwgZmlsZSB0byBuZXcgZmlsZS4KKworICAgIFJldHVybnMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkCisgICAgZGF0YSBmaWxlIGFzIHdlbGwgYXMgdGhlIHJlc3VsdGluZyBIVFRQTWVzc2FnZSBvYmplY3QuCisgICAgIiIiCisgICAgdXJsX3R5cGUsIHBhdGggPSBzcGxpdHR5cGUodXJsKQorCisgICAgd2l0aCBjb250ZXh0bGliLmNsb3NpbmcodXJsb3Blbih1cmwsIGRhdGEpKSBhcyBmcDoKKyAgICAgICAgaGVhZGVycyA9IGZwLmluZm8oKQorCisgICAgICAgICMgSnVzdCByZXR1cm4gdGhlIGxvY2FsIHBhdGggYW5kIHRoZSAiaGVhZGVycyIgZm9yIGZpbGU6Ly8KKyAgICAgICAgIyBVUkxzLiBObyBzZW5zZSBpbiBwZXJmb3JtaW5nIGEgY29weSB1bmxlc3MgcmVxdWVzdGVkLgorICAgICAgICBpZiB1cmxfdHlwZSA9PSAiZmlsZSIgYW5kIG5vdCBmaWxlbmFtZToKKyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHBhdGgpLCBoZWFkZXJzCisKKyAgICAgICAgIyBIYW5kbGUgdGVtcG9yYXJ5IGZpbGUgc2V0dXAuCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgdGZwID0gb3BlbihmaWxlbmFtZSwgJ3diJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRmcCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpCisgICAgICAgICAgICBmaWxlbmFtZSA9IHRmcC5uYW1lCisgICAgICAgICAgICBfdXJsX3RlbXBmaWxlcy5hcHBlbmQoZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCB0ZnA6CisgICAgICAgICAgICByZXN1bHQgPSBmaWxlbmFtZSwgaGVhZGVycworICAgICAgICAgICAgYnMgPSAxMDI0KjgKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICAgICAgcmVhZCA9IDAKKyAgICAgICAgICAgIGJsb2NrbnVtID0gMAorICAgICAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3RoIiBpbiBoZWFkZXJzOgorICAgICAgICAgICAgICAgIHNpemUgPSBpbnQoaGVhZGVyc1siQ29udGVudC1MZW5ndGgiXSkKKworICAgICAgICAgICAgaWYgcmVwb3J0aG9vazoKKyAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCAwLCBzaXplKQorCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGJsb2NrID0gZnAucmVhZChicykKKyAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmVhZCArPSBsZW4oYmxvY2spCisgICAgICAgICAgICAgICAgdGZwLndyaXRlKGJsb2NrKQorICAgICAgICAgICAgICAgIGJsb2NrbnVtICs9IDEKKyAgICAgICAgICAgICAgICBpZiByZXBvcnRob29rOgorICAgICAgICAgICAgICAgICAgICByZXBvcnRob29rKGJsb2NrbnVtLCBsZW4oYmxvY2spLCBzaXplKQorCisgICAgaWYgc2l6ZSA+PSAwIGFuZCByZWFkIDwgc2l6ZToKKyAgICAgICAgcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IoCisgICAgICAgICAgICAicmV0cmlldmFsIGluY29tcGxldGU6IGdvdCBvbmx5ICVpIG91dCBvZiAlaSBieXRlcyIKKyAgICAgICAgICAgICUgKHJlYWQsIHNpemUpLCByZXN1bHQpCisKKyAgICByZXR1cm4gcmVzdWx0CiAKIGRlZiB1cmxjbGVhbnVwKCk6Ci0gICAgaWYgX3VybG9wZW5lcjoKLSAgICAgICAgX3VybG9wZW5lci5jbGVhbnVwKCkKKyAgICBmb3IgdGVtcF9maWxlIGluIF91cmxfdGVtcGZpbGVzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy51bmxpbmsodGVtcF9maWxlKQorICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlbCBfdXJsX3RlbXBmaWxlc1s6XQogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgX29wZW5lcjoKICAgICAgICAgX29wZW5lciA9IE5vbmUKQEAgLTE3OCw3ICsyNjAsOCBAQAogY2xhc3MgUmVxdWVzdDoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGRhdGE9Tm9uZSwgaGVhZGVycz17fSwKLSAgICAgICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0PU5vbmUsIHVudmVyaWZpYWJsZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIG1ldGhvZD1Ob25lKToKICAgICAgICAgIyB1bndyYXAoJzxVUkw6dHlwZTovL2hvc3QvcGF0aD4nKSAtLT4gJ3R5cGU6Ly9ob3N0L3BhdGgnCiAgICAgICAgIHNlbGYuZnVsbF91cmwgPSB1bndyYXAodXJsKQogICAgICAgICBzZWxmLmZ1bGxfdXJsLCBzZWxmLmZyYWdtZW50ID0gc3BsaXR0YWcoc2VsZi5mdWxsX3VybCkKQEAgLTE5Miw2ICsyNzUsNyBAQAogICAgICAgICAgICAgb3JpZ2luX3JlcV9ob3N0ID0gcmVxdWVzdF9ob3N0KHNlbGYpCiAgICAgICAgIHNlbGYub3JpZ2luX3JlcV9ob3N0ID0gb3JpZ2luX3JlcV9ob3N0CiAgICAgICAgIHNlbGYudW52ZXJpZmlhYmxlID0gdW52ZXJpZmlhYmxlCisgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIHNlbGYuX3BhcnNlKCkKIAogICAgIGRlZiBfcGFyc2Uoc2VsZik6CkBAIC0yMDMsNDEgKzI4Nyw2MCBAQAogICAgICAgICAgICAgc2VsZi5ob3N0ID0gdW5xdW90ZShzZWxmLmhvc3QpCiAKICAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4iIiIKKyAgICAgICAgaWYgc2VsZi5tZXRob2QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5tZXRob2QKKyAgICAgICAgZWxpZiBzZWxmLmRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gIlBPU1QiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gIkdFVCIKIAotICAgICMgQmVnaW4gZGVwcmVjYXRlZCBtZXRob2RzCi0KLSAgICBkZWYgYWRkX2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLQotICAgIGRlZiBoYXNfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQotCi0gICAgZGVmIGdldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0KICAgICBkZWYgZ2V0X2Z1bGxfdXJsKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmZyYWdtZW50OgogICAgICAgICAgICAgcmV0dXJuICclcyMlcycgJSAoc2VsZi5mdWxsX3VybCwgc2VsZi5mcmFnbWVudCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZ1bGxfdXJsCiAKKyAgICAjIEJlZ2luIGRlcHJlY2F0ZWQgbWV0aG9kcworCisgICAgZGVmIGFkZF9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5hZGRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIGhhc19kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5oYXNfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSBpcyBub3QgTm9uZQorCisgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfZGF0YSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQorCiAgICAgZGVmIGdldF90eXBlKHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfdHlwZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYudHlwZQogCiAgICAgZGVmIGdldF9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYuaG9zdAogCiAgICAgZGVmIGdldF9zZWxlY3RvcihzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3NlbGVjdG9yIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5zZWxlY3RvcgogCiAgICAgZGVmIGlzX3VudmVyaWZpYWJsZShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi51bnZlcmlmaWFibGUKIAogICAgIGRlZiBnZXRfb3JpZ2luX3JlcV9ob3N0KHNlbGYpOgorICAgICAgICBtc2cgPSAiUmVxdWVzdC5nZXRfb3JpZ2luX3JlcV9ob3N0IG1ldGhvZCBpcyBkZXByZWNhdGVkLiIKKyAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0xKQogICAgICAgICByZXR1cm4gc2VsZi5vcmlnaW5fcmVxX2hvc3QKIAogICAgICMgRW5kIGRlcHJlY2F0ZWQgbWV0aG9kcwpAQCAtNjgyLDggKzc4NSw4IEBACiAgICAgICAgIHNlbGYucHJveGllcyA9IHByb3hpZXMKICAgICAgICAgZm9yIHR5cGUsIHVybCBpbiBwcm94aWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICclc19vcGVuJyAlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46IFwKLSAgICAgICAgICAgICAgICAgICAgbWV0aChyLCBwcm94eSwgdHlwZSkpCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSByLCBwcm94eT11cmwsIHR5cGU9dHlwZSwgbWV0aD1zZWxmLnByb3h5X29wZW46CisgICAgICAgICAgICAgICAgICAgICAgICBtZXRoKHIsIHByb3h5LCB0eXBlKSkKIAogICAgIGRlZiBwcm94eV9vcGVuKHNlbGYsIHJlcSwgcHJveHksIHR5cGUpOgogICAgICAgICBvcmlnX3R5cGUgPSByZXEudHlwZQpAQCAtODI1LDE3ICs5MjgsMjMgQEAKICAgICAgICAgICAgIHNlbGYucmV0cmllZCArPSAxCiAKICAgICAgICAgaWYgYXV0aHJlcToKLSAgICAgICAgICAgIG1vID0gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LnNlYXJjaChhdXRocmVxKQotICAgICAgICAgICAgaWYgbW86Ci0gICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQotICAgICAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbIiciLCAnIiddOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCi0gICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKLSAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJldHJ5X2h0dHBfYmFzaWNfYXV0aChob3N0LCByZXEsIHJlYWxtKQotICAgICAgICAgICAgICAgICAgICBpZiByZXNwb25zZSBhbmQgcmVzcG9uc2UuY29kZSAhPSA0MDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZQorICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCisgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBkb2VzIG5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKKyAgICAgICAgICAgICAgICBpZiBtbzoKKyAgICAgICAgICAgICAgICAgICAgc2NoZW1lLCBxdW90ZSwgcmVhbG0gPSBtby5ncm91cHMoKQorICAgICAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyciJywiJyJdOgorICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3BvbnNlIGFuZCByZXNwb25zZS5jb2RlICE9IDQwMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHJpZWQgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogICAgIGRlZiByZXRyeV9odHRwX2Jhc2ljX2F1dGgoc2VsZiwgaG9zdCwgcmVxLCByZWFsbSk6CiAgICAgICAgIHVzZXIsIHB3ID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBob3N0KQpAQCAtODc4LDkgKzk4Nyw5IEBACiAgICAgICAgIHJldHVybiByZXNwb25zZQogCiAKLWRlZiByYW5kb21ieXRlcyhuKToKLSAgICAiIiJSZXR1cm4gbiByYW5kb20gYnl0ZXMuIiIiCi0gICAgcmV0dXJuIG9zLnVyYW5kb20obikKKyMgUmV0dXJuIG4gcmFuZG9tIGJ5dGVzLgorX3JhbmRvbWJ5dGVzID0gb3MudXJhbmRvbQorCiAKIGNsYXNzIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXI6CiAgICAgIyBEaWdlc3QgYXV0aGVudGljYXRpb24gaXMgc3BlY2lmaWVkIGluIFJGQyAyNjE3LgpAQCAtOTIxLDYgKzEwMzAsOSBAQAogICAgICAgICAgICAgc2NoZW1lID0gYXV0aHJlcS5zcGxpdCgpWzBdCiAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSA9PSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHJlcSwgYXV0aHJlcSkKKyAgICAgICAgICAgIGVsaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyIGRvZXMgbm90IHN1cHBvcnQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAnJXMnIiAlIHNjaGVtZSkKIAogICAgIGRlZiByZXRyeV9odHRwX2RpZ2VzdF9hdXRoKHNlbGYsIHJlcSwgYXV0aCk6CiAgICAgICAgIHRva2VuLCBjaGFsbGVuZ2UgPSBhdXRoLnNwbGl0KCcgJywgMSkKQEAgLTk0MSw3ICsxMDUzLDcgQEAKICAgICAgICAgIyBhdXRoZW50aWNhdGlvbiwgYW5kIHRvIHByb3ZpZGUgc29tZSBtZXNzYWdlIGludGVncml0eSBwcm90ZWN0aW9uLgogICAgICAgICAjIFRoaXMgaXNuJ3QgYSBmYWJ1bG91cyBlZmZvcnQsIGJ1dCBpdCdzIHByb2JhYmx5IEdvb2QgRW5vdWdoLgogICAgICAgICBzID0gIiVzOiVzOiVzOiIgJSAoc2VsZi5ub25jZV9jb3VudCwgbm9uY2UsIHRpbWUuY3RpbWUoKSkKLSAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgcmFuZG9tYnl0ZXMoOCkKKyAgICAgICAgYiA9IHMuZW5jb2RlKCJhc2NpaSIpICsgX3JhbmRvbWJ5dGVzKDgpCiAgICAgICAgIGRpZyA9IGhhc2hsaWIuc2hhMShiKS5oZXhkaWdlc3QoKQogICAgICAgICByZXR1cm4gZGlnWzoxNl0KIApAQCAtMTA2Niw3ICsxMTc4LDcgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICJcCisgICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAogICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKQEAgLTExNjIsNyArMTI3NCw2IEBACiAgICAgaHR0cF9yZXF1ZXN0ID0gQWJzdHJhY3RIVFRQSGFuZGxlci5kb19yZXF1ZXN0XwogCiBpZiBoYXNhdHRyKGh0dHAuY2xpZW50LCAnSFRUUFNDb25uZWN0aW9uJyk6Ci0gICAgaW1wb3J0IHNzbAogCiAgICAgY2xhc3MgSFRUUFNIYW5kbGVyKEFic3RyYWN0SFRUUEhhbmRsZXIpOgogCkBAIC0xMTc3LDYgKzEyODgsOCBAQAogCiAgICAgICAgIGh0dHBzX3JlcXVlc3QgPSBBYnN0cmFjdEhUVFBIYW5kbGVyLmRvX3JlcXVlc3RfCiAKKyAgICBfX2FsbF9fLmFwcGVuZCgnSFRUUFNIYW5kbGVyJykKKwogY2xhc3MgSFRUUENvb2tpZVByb2Nlc3NvcihCYXNlSGFuZGxlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvb2tpZWphcj1Ob25lKToKICAgICAgICAgaW1wb3J0IGh0dHAuY29va2llamFyCkBAIC0xNDYzLDYgKzE1NzYsOSBAQAogCiAgICAgIyBDb25zdHJ1Y3RvcgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm94aWVzPU5vbmUsICoqeDUwOSk6CisgICAgICAgIG1zZyA9ICIlKGNsYXNzKXMgc3R5bGUgb2YgaW52b2tpbmcgcmVxdWVzdHMgaXMgZGVwcmVjYXRlZC4gIiBcCisgICAgICAgICAgICAgICJVc2UgbmV3ZXIgdXJsb3BlbiBmdW5jdGlvbnMvbWV0aG9kcyIgJSB7J2NsYXNzJzogc2VsZi5fX2NsYXNzX18uX19uYW1lX199CisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgcHJveGllcyBpcyBOb25lOgogICAgICAgICAgICAgcHJveGllcyA9IGdldHByb3hpZXMoKQogICAgICAgICBhc3NlcnQgaGFzYXR0cihwcm94aWVzLCAna2V5cycpLCAicHJveGllcyBtdXN0IGJlIGEgbWFwcGluZyIKQEAgLTE1NDIsNiArMTY1OCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLCBuYW1lKSh1cmwsIGRhdGEpCisgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3I6CisgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ3NvY2tldCBlcnJvcicsIG1zZykud2l0aF90cmFjZWJhY2soc3lzLmV4Y19pbmZvKClbMl0pCiAKQEAgLTE2NjIsNyArMTc4MCw2IEBACiAgICAgICAgICAgICAgICAgaWYgcHJveHlfYnlwYXNzKHJlYWxob3N0KToKICAgICAgICAgICAgICAgICAgICAgaG9zdCA9IHJlYWxob3N0CiAKLSAgICAgICAgICAgICNwcmludCAicHJveHkgdmlhIGh0dHA6IiwgaG9zdCwgc2VsZWN0b3IKICAgICAgICAgaWYgbm90IGhvc3Q6IHJhaXNlIElPRXJyb3IoJ2h0dHAgZXJyb3InLCAnbm8gaG9zdCBnaXZlbicpCiAKICAgICAgICAgaWYgcHJveHlfcGFzc3dkOgpAQCAtMTc2MSw4ICsxODc4LDggQEAKIAogICAgIGRlZiBvcGVuX2xvY2FsX2ZpbGUoc2VsZiwgdXJsKToKICAgICAgICAgIiIiVXNlIGxvY2FsIGZpbGUuIiIiCi0gICAgICAgIGltcG9ydCBtaW1ldHlwZXMsIGVtYWlsLnV0aWxzCi0gICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgICAgICAgIGltcG9ydCBlbWFpbC51dGlscworICAgICAgICBpbXBvcnQgbWltZXR5cGVzCiAgICAgICAgIGhvc3QsIGZpbGUgPSBzcGxpdGhvc3QodXJsKQogICAgICAgICBsb2NhbG5hbWUgPSB1cmwycGF0aG5hbWUoZmlsZSkKICAgICAgICAgdHJ5OgpAQCAtMTc5Niw3ICsxOTEzLDYgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodXJsLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoJ2Z0cCBlcnJvcicsICdwcm94eSBzdXBwb3J0IGZvciBmdHAgcHJvdG9jb2wgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZCcpCiAgICAgICAgIGltcG9ydCBtaW1ldHlwZXMKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KICAgICAgICAgaG9zdCwgcGF0aCA9IHNwbGl0aG9zdCh1cmwpCiAgICAgICAgIGlmIG5vdCBob3N0OiByYWlzZSBVUkxFcnJvcignZnRwIGVycm9yJywgJ25vIGhvc3QgZ2l2ZW4nKQogICAgICAgICBob3N0LCBwb3J0ID0gc3BsaXRwb3J0KGhvc3QpCkBAIC0xODc5LDcgKzE5OTUsNyBAQAogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LXR5cGU6ICVzJyAlIHR5cGUpCiAgICAgICAgIGlmIGVuY29kaW5nID09ICdiYXNlNjQnOgogICAgICAgICAgICAgIyBYWFggaXMgdGhpcyBlbmNvZGluZy9kZWNvZGluZyBvaz8KLSAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4tMScpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gdW5xdW90ZShkYXRhKQogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LUxlbmd0aDogJWQnICUgbGVuKGRhdGEpKQpAQCAtMTk3Miw3ICsyMDg4LDYgQEAKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3d3dy1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTE5OTgsNyArMjExMyw2IEBACiAgICAgICAgICAgICBVUkxvcGVuZXIuaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICAgc3R1ZmYgPSBoZWFkZXJzWydwcm94eS1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTIyOTAsOCArMjQwNCw2IEBACiAgICAgICAnZXhjZXB0aW9ucyc6IFsnZm9vLmJhcicsICcqLmJhci5jb20nLCAnMTI3LjAuMC4xJywgJzEwLjEnLCAnMTAuMC8xNiddCiAgICAgfQogICAgICIiIgotICAgIGltcG9ydCByZQotICAgIGltcG9ydCBzb2NrZXQKICAgICBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKIAogICAgIGhvc3Rvbmx5LCBwb3J0ID0gc3BsaXRwb3J0KGhvc3QpCkBAIC0yMzk0LDcgKzI1MDYsNiBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm94eVNlcnZlci5zcGxpdCgnOycpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wsIGFkZHJlc3MgPSBwLnNwbGl0KCc9JywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlmIGFkZHJlc3MgaGFzIGEgdHlwZTovLyBwcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdeKFteLzpdKyk6Ly8nLCBhZGRyZXNzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzID0gJyVzOi8vJXMnICUgKHByb3RvY29sLCBhZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJveGllc1twcm90b2NvbF0gPSBhZGRyZXNzCkBAIC0yNDI2LDcgKzI1MzcsNiBAQAogICAgIGRlZiBwcm94eV9ieXBhc3NfcmVnaXN0cnkoaG9zdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCB3aW5yZWcKLSAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAjIFN0ZCBtb2R1bGVzLCBzbyBzaG91bGQgYmUgYXJvdW5kIC0gYnV0IHlvdSBuZXZlciBrbm93IQogICAgICAgICAgICAgcmV0dXJuIDAKQEAgLTI0NzAsNyArMjU4MCw2IEBACiAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCIqIiwgciIuKiIpICAgICAjIGNoYW5nZSBnbG9iIHNlcXVlbmNlCiAgICAgICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCI/IiwgciIuIikgICAgICAjIGNoYW5nZSBnbG9iIGNoYXIKICAgICAgICAgICAgIGZvciB2YWwgaW4gaG9zdDoKLSAgICAgICAgICAgICAgICAjIHByaW50ICIlcyA8LS0+ICVzIiAlKCB0ZXN0LCB2YWwgKQogICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKHRlc3QsIHZhbCwgcmUuSSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIHJldHVybiAwCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5IGIvTGliL3VybGxpYi9yZXNwb25zZS5weQppbmRleCBmZmFhNWZhLi4xY2YxZDFhIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5CisrKyBiL0xpYi91cmxsaWIvcmVzcG9uc2UucHkKQEAgLTM3LDEyICszNywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksIHNlbGYuZnApCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuZnA6CisgICAgICAgICAgICBzZWxmLmZwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5mcCA9IE5vbmUKICAgICAgICAgc2VsZi5yZWFkID0gTm9uZQogICAgICAgICBzZWxmLnJlYWRsaW5lID0gTm9uZQogICAgICAgICBzZWxmLnJlYWRsaW5lcyA9IE5vbmUKICAgICAgICAgc2VsZi5maWxlbm8gPSBOb25lCi0gICAgICAgIGlmIHNlbGYuZnA6IHNlbGYuZnAuY2xvc2UoKQotICAgICAgICBzZWxmLmZwID0gTm9uZQorICAgICAgICBzZWxmLl9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLl9fbmV4dF9fID0gTm9uZQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCA1Njg0YWQ3Li4wZGYwNzQzIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtNDQwLDcgKzQ0MCw3IEBACiAgICAgaW1wb3J0IHN5cwogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgaW1wb3J0IG9zCi0gICAgICAgIGlmIGludChvcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pID49IDk6CisgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPj0gOToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3JhbmRvbSA9IF91dWlkX2dlbmVyYXRlX3RpbWUgPSBOb25lCiAKICAgICAjIE9uIFdpbmRvd3MgcHJpb3IgdG8gMjAwMCwgVXVpZENyZWF0ZSBnaXZlcyBhIFVVSUQgY29udGFpbmluZyB0aGUKZGlmZiAtLWdpdCBhL0xpYi92ZW52L19faW5pdF9fLnB5IGIvTGliL3ZlbnYvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyZGViNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMzk4IEBACisiIiIKK1ZpcnR1YWwgZW52aXJvbm1lbnQgKHZlbnYpIHBhY2thZ2UgZm9yIFB5dGhvbi4gQmFzZWQgb24gUEVQIDQwNS4KKworQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluYXkgU2FqaXAuCitMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgorCit1c2FnZTogcHl0aG9uIC1tIHZlbnYgWy1oXSBbLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc10gWy0tc3ltbGlua3NdIFstLWNsZWFyXQorICAgICAgICAgICAgWy0tdXBncmFkZV0KKyAgICAgICAgICAgIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQorCitDcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCisKK3Bvc2l0aW9uYWwgYXJndW1lbnRzOgorICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KKworb3B0aW9uYWwgYXJndW1lbnRzOgorICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KKyAgLS1zeW1saW5rcyAgICAgICAgICAgIEF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5LgorICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSBleGlzdHMuCisgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlZC4KKyAgLS11cGdyYWRlICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KKyIiIgoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGlvCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCitjbGFzcyBDb250ZXh0OgorICAgICIiIgorICAgIEhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGEgY3VycmVudCB2ZW52IGNyZWF0aW9uL3VwZ3JhZGUgcmVxdWVzdC4KKyAgICAiIiIKKyAgICBwYXNzCisKKworY2xhc3MgRW52QnVpbGRlcjoKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGV4aXN0cyB0byBhbGxvdyB2aXJ0dWFsIGVudmlyb25tZW50IGNyZWF0aW9uIHRvIGJlCisgICAgY3VzdG9taXNlZC4gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZGV0ZXJtaW5lIHRoZSBidWlsZGVyJ3MKKyAgICBiZWhhdmlvdXIgd2hlbiBjYWxsZWQgdXBvbiB0byBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50LgorCisgICAgQnkgZGVmYXVsdCwgdGhlIGJ1aWxkZXIgbWFrZXMgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzIGRpcgorICAgIGF2YWlsYWJsZSB0byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKworICAgIEJ5IGRlZmF1bHQsIHRoZSBjcmVhdGlvbiBwcm9jZXNzIHVzZXMgc3ltbGlua3Mgd2hlcmV2ZXIgcG9zc2libGUuCisKKyAgICA6cGFyYW0gc3lzdGVtX3NpdGVfcGFja2FnZXM6IElmIFRydWUsIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyIGlzIGF2YWlsYWJsZSB0byBjcmVhdGVkIGVudmlyb25tZW50cy4KKyAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUgYW5kIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgaXQgaXMgZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAgIDpwYXJhbSBzeW1saW5rczogSWYgVHJ1ZSwgYXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkgZmlsZXMgaW50bworICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICA6cGFyYW0gdXBncmFkZTogSWYgVHJ1ZSwgdXBncmFkZSBhbiBleGlzdGluZyB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UpOgorICAgICAgICBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzID0gc3lzdGVtX3NpdGVfcGFja2FnZXMKKyAgICAgICAgc2VsZi5jbGVhciA9IGNsZWFyCisgICAgICAgIHNlbGYuc3ltbGlua3MgPSBzeW1saW5rcworICAgICAgICBzZWxmLnVwZ3JhZGUgPSB1cGdyYWRlCisKKyAgICBkZWYgY3JlYXRlKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKworICAgICAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorCisgICAgICAgICIiIgorICAgICAgICBlbnZfZGlyID0gb3MucGF0aC5hYnNwYXRoKGVudl9kaXIpCisgICAgICAgIGNvbnRleHQgPSBzZWxmLmVuc3VyZV9kaXJlY3RvcmllcyhlbnZfZGlyKQorICAgICAgICBzZWxmLmNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisgICAgICAgIHNlbGYuc2V0dXBfcHl0aG9uKGNvbnRleHQpCisgICAgICAgIGlmIG5vdCBzZWxmLnVwZ3JhZGU6CisgICAgICAgICAgICBzZWxmLnNldHVwX3NjcmlwdHMoY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYucG9zdF9zZXR1cChjb250ZXh0KQorCisgICAgZGVmIGVuc3VyZV9kaXJlY3RvcmllcyhzZWxmLCBlbnZfZGlyKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSB0aGUgZGlyZWN0b3JpZXMgZm9yIHRoZSBlbnZpcm9ubWVudC4KKworICAgICAgICBSZXR1cm5zIGEgY29udGV4dCBvYmplY3Qgd2hpY2ggaG9sZHMgcGF0aHMgaW4gdGhlIGVudmlyb25tZW50LAorICAgICAgICBmb3IgdXNlIGJ5IHN1YnNlcXVlbnQgbG9naWMuCisgICAgICAgICIiIgorCisgICAgICAgIGRlZiBjcmVhdGVfaWZfbmVlZGVkKGQpOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGQpOgorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGQpCisKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZW52X2RpcikgYW5kIG5vdCAoc2VsZi5jbGVhciBvciBzZWxmLnVwZ3JhZGUpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRGlyZWN0b3J5IGV4aXN0czogJXMnICUgZW52X2RpcikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZW52X2RpcikgYW5kIHNlbGYuY2xlYXI6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGVudl9kaXIpCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgY29udGV4dC5lbnZfZGlyID0gZW52X2RpcgorICAgICAgICBjb250ZXh0LmVudl9uYW1lID0gb3MucGF0aC5zcGxpdChlbnZfZGlyKVsxXQorICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBjb250ZXh0LmVudl9uYW1lCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoZW52X2RpcikKKyAgICAgICAgZW52ID0gb3MuZW52aXJvbgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICAgICAgZGlybmFtZSwgZXhlbmFtZSA9IG9zLnBhdGguc3BsaXQob3MucGF0aC5hYnNwYXRoKGV4ZWN1dGFibGUpKQorICAgICAgICBjb250ZXh0LmV4ZWN1dGFibGUgPSBleGVjdXRhYmxlCisgICAgICAgIGNvbnRleHQucHl0aG9uX2RpciA9IGRpcm5hbWUKKyAgICAgICAgY29udGV4dC5weXRob25fZXhlID0gZXhlbmFtZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIGJpbm5hbWUgPSAnU2NyaXB0cycKKyAgICAgICAgICAgIGluY3BhdGggPSAnSW5jbHVkZScKKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgJ0xpYicsICdzaXRlLXBhY2thZ2VzJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJpbm5hbWUgPSAnYmluJworICAgICAgICAgICAgaW5jcGF0aCA9ICdpbmNsdWRlJworICAgICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCAnbGliJywgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLCAnc2l0ZS1wYWNrYWdlcycpCisgICAgICAgIGNvbnRleHQuaW5jX3BhdGggPSBwYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsIGluY3BhdGgpCisgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQocGF0aCkKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChsaWJwYXRoKQorICAgICAgICBjb250ZXh0LmJpbl9wYXRoID0gYmlucGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCBiaW5uYW1lKQorICAgICAgICBjb250ZXh0LmJpbl9uYW1lID0gYmlubmFtZQorICAgICAgICBjb250ZXh0LmVudl9leGUgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZXhlbmFtZSkKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChiaW5wYXRoKQorICAgICAgICByZXR1cm4gY29udGV4dAorCisgICAgZGVmIGNyZWF0ZV9jb25maWd1cmF0aW9uKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgY29uZmlndXJhdGlvbiBmaWxlIGluZGljYXRpbmcgd2hlcmUgdGhlIGVudmlyb25tZW50J3MgUHl0aG9uCisgICAgICAgIHdhcyBjb3BpZWQgZnJvbSwgYW5kIHdoZXRoZXIgdGhlIHN5c3RlbSBzaXRlLXBhY2thZ2VzIHNob3VsZCBiZSBtYWRlCisgICAgICAgIGF2YWlsYWJsZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbnRleHQuY2ZnX3BhdGggPSBwYXRoID0gb3MucGF0aC5qb2luKGNvbnRleHQuZW52X2RpciwgJ3B5dmVudi5jZmcnKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnaG9tZSA9ICVzXG4nICUgY29udGV4dC5weXRob25fZGlyKQorICAgICAgICAgICAgaWYgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlczoKKyAgICAgICAgICAgICAgICBpbmNsID0gJ3RydWUnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluY2wgPSAnZmFsc2UnCisgICAgICAgICAgICBmLndyaXRlKCdpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzID0gJXNcbicgJSBpbmNsKQorICAgICAgICAgICAgZi53cml0ZSgndmVyc2lvbiA9ICVkLiVkLiVkXG4nICUgc3lzLnZlcnNpb25faW5mb1s6M10pCisKKyAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgIGRlZiBpbmNsdWRlX2JpbmFyeShzZWxmLCBmKToKKyAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoKCcucHlkJywgJy5kbGwnKSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnN0YXJ0c3dpdGgoJ3B5dGhvbicpIGFuZCBmLmVuZHN3aXRoKCcuZXhlJykKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBzeW1saW5rX29yX2NvcHkoc2VsZiwgc3JjLCBkc3QpOgorICAgICAgICAiIiIKKyAgICAgICAgVHJ5IHN5bWxpbmtpbmcgYSBmaWxlLCBhbmQgaWYgdGhhdCBmYWlscywgZmFsbCBiYWNrIHRvIGNvcHlpbmcuCisgICAgICAgICIiIgorICAgICAgICBmb3JjZV9jb3B5ID0gbm90IHNlbGYuc3ltbGlua3MKKyAgICAgICAgaWYgbm90IGZvcmNlX2NvcHk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKGRzdCk6ICMgY2FuJ3QgbGluayB0byBpdHNlbGYhCisgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOiAgICMgbWF5IG5lZWQgdG8gdXNlIGEgbW9yZSBzcGVjaWZpYyBleGNlcHRpb24KKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnVW5hYmxlIHRvIHN5bWxpbmsgJXIgdG8gJXInLCBzcmMsIGRzdCkKKyAgICAgICAgICAgICAgICBmb3JjZV9jb3B5ID0gVHJ1ZQorICAgICAgICBpZiBmb3JjZV9jb3B5OgorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyYywgZHN0KQorCisgICAgZGVmIHNldHVwX3B5dGhvbihzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBhIFB5dGhvbiBleGVjdXRhYmxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgYmlucGF0aCA9IGNvbnRleHQuYmluX3BhdGgKKyAgICAgICAgZXhlbmFtZSA9IGNvbnRleHQucHl0aG9uX2V4ZQorICAgICAgICBwYXRoID0gY29udGV4dC5lbnZfZXhlCisgICAgICAgIGNvcGllciA9IHNlbGYuc3ltbGlua19vcl9jb3B5CisgICAgICAgIGNvcGllcihjb250ZXh0LmV4ZWN1dGFibGUsIHBhdGgpCisgICAgICAgIGRpcm5hbWUgPSBjb250ZXh0LnB5dGhvbl9kaXIKKyAgICAgICAgaWYgb3MubmFtZSAhPSAnbnQnOgorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKHBhdGgpOgorICAgICAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIDBvNzU1KQorICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiAoJ3B5dGhvbicsICdweXRob24zJyk6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBzdWZmaXgpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGV4ZW5hbWUsIHBhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdWJkaXIgPSAnRExMcycKKyAgICAgICAgICAgIGluY2x1ZGUgPSBzZWxmLmluY2x1ZGVfYmluYXJ5CisgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIG9zLmxpc3RkaXIoZGlybmFtZSkgaWYgaW5jbHVkZShmKV0KKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBmKQorICAgICAgICAgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmKQorICAgICAgICAgICAgICAgIGlmIGRzdCAhPSBjb250ZXh0LmVudl9leGU6ICAjIGFscmVhZHkgZG9uZSwgYWJvdmUKKyAgICAgICAgICAgICAgICAgICAgY29waWVyKHNyYywgZHN0KQorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBzdWJkaXIpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGRpcm5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gb3MubGlzdGRpcihkaXJuYW1lKSBpZiBpbmNsdWRlKGYpXQorICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZikKKyAgICAgICAgICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGYpCisgICAgICAgICAgICAgICAgICAgIGNvcGllcihzcmMsIGRzdCkKKyAgICAgICAgICAgICMgY29weSBpbml0LnRjbCBvdmVyCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhjb250ZXh0LnB5dGhvbl9kaXIpOgorICAgICAgICAgICAgICAgIGlmICdpbml0LnRjbCcgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGguYmFzZW5hbWUocm9vdCkKKyAgICAgICAgICAgICAgICAgICAgdGNsZGlyID0gb3MucGF0aC5qb2luKGNvbnRleHQuZW52X2RpciwgJ0xpYicsIHRjbGRpcikKKyAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnModGNsZGlyKQorICAgICAgICAgICAgICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4ocm9vdCwgJ2luaXQudGNsJykKKyAgICAgICAgICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRjbGRpciwgJ2luaXQudGNsJykKKyAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNyYywgZHN0KQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgZGVmIHNldHVwX3NjcmlwdHMoc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBTZXQgdXAgc2NyaXB0cyBpbnRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50IGZyb20gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaW5zdGFsbHMgdGhlIGRlZmF1bHQgc2NyaXB0cyBpbnRvIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBiZWluZyBjcmVhdGVkLiBZb3UgY2FuIHByZXZlbnQgdGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGJ5IG92ZXJyaWRpbmcKKyAgICAgICAgdGhpcyBtZXRob2QgaWYgeW91IHJlYWxseSBuZWVkIHRvLCBvciBpZiB5b3UgbmVlZCB0byBzcGVjaWZ5CisgICAgICAgIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciB0aGUgc2NyaXB0cyB0byBpbnN0YWxsLiBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgJ3NjcmlwdHMnIGRpcmVjdG9yeSBpbiB0aGUgdmVudiBwYWNrYWdlIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZgorICAgICAgICBzY3JpcHRzIHRvIGluc3RhbGwuCisgICAgICAgICIiIgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgJ3NjcmlwdHMnKQorICAgICAgICBzZWxmLmluc3RhbGxfc2NyaXB0cyhjb250ZXh0LCBwYXRoKQorCisgICAgZGVmIHBvc3Rfc2V0dXAoc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBIb29rIGZvciBwb3N0LXNldHVwIG1vZGlmaWNhdGlvbiBvZiB0aGUgdmVudi4gU3ViY2xhc3NlcyBtYXkgaW5zdGFsbAorICAgICAgICBhZGRpdGlvbmFsIHBhY2thZ2VzIG9yIHNjcmlwdHMgaGVyZSwgYWRkIGFjdGl2YXRpb24gc2hlbGwgc2NyaXB0cywgZXRjLgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVwbGFjZV92YXJpYWJsZXMoc2VsZiwgdGV4dCwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBSZXBsYWNlIHZhcmlhYmxlIHBsYWNlaG9sZGVycyBpbiBzY3JpcHQgdGV4dCB3aXRoIGNvbnRleHQtc3BlY2lmaWMKKyAgICAgICAgdmFyaWFibGVzLgorCisgICAgICAgIFJldHVybiB0aGUgdGV4dCBwYXNzZWQgaW4gLCBidXQgd2l0aCB2YXJpYWJsZXMgcmVwbGFjZWQuCisKKyAgICAgICAgOnBhcmFtIHRleHQ6IFRoZSB0ZXh0IGluIHdoaWNoIHRvIHJlcGxhY2UgcGxhY2Vob2xkZXIgdmFyaWFibGVzLgorICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX0RJUl9fJywgY29udGV4dC5lbnZfZGlyKQorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfTkFNRV9fJywgY29udGV4dC5wcm9tcHQpCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9CSU5fTkFNRV9fJywgY29udGV4dC5iaW5fbmFtZSkKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX1BZVEhPTl9fJywgY29udGV4dC5lbnZfZXhlKQorICAgICAgICByZXR1cm4gdGV4dAorCisgICAgZGVmIGluc3RhbGxfc2NyaXB0cyhzZWxmLCBjb250ZXh0LCBwYXRoKToKKyAgICAgICAgIiIiCisgICAgICAgIEluc3RhbGwgc2NyaXB0cyBpbnRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50IGZyb20gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgOnBhcmFtIHBhdGg6ICAgIEFic29sdXRlIHBhdGhuYW1lIG9mIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICAgICAgU2NyaXB0cyBpbiB0aGUgJ2NvbW1vbicgc3ViZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRob3NlIGluIHRoZSBkaXJlY3RvcnkgbmFtZWQgZm9yIHRoZSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcnVuIG9uLCBhcmUgaW5zdGFsbGVkIGluIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Vob2xkZXIgdmFyaWFibGVzIGFyZSByZXBsYWNlZCB3aXRoIGVudmlyb25tZW50LQorICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdmFsdWVzLgorICAgICAgICAiIiIKKyAgICAgICAgYmlucGF0aCA9IGNvbnRleHQuYmluX3BhdGgKKyAgICAgICAgcGxlbiA9IGxlbihwYXRoKQorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKKyAgICAgICAgICAgIGlmIHJvb3QgPT0gcGF0aDogIyBhdCB0b3AtbGV2ZWwsIHJlbW92ZSBpcnJlbGV2YW50IGRpcnMKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBkaXJzWzpdOgorICAgICAgICAgICAgICAgICAgICBpZiBkIG5vdCBpbiAoJ2NvbW1vbicsIG9zLm5hbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZSAjIGlnbm9yZSBmaWxlcyBpbiB0b3AgbGV2ZWwKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHNyY2ZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKKyAgICAgICAgICAgICAgICBzdWZmaXggPSByb290W3BsZW46XS5zcGxpdChvcy5zZXApWzI6XQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdWZmaXg6CisgICAgICAgICAgICAgICAgICAgIGRzdGRpciA9IGJpbnBhdGgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkc3RkaXIgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgKnN1ZmZpeCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0ZGlyKToKKyAgICAgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZHN0ZGlyKQorICAgICAgICAgICAgICAgIGRzdGZpbGUgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzcmNmaWxlLCAncmInKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBzcmNmaWxlLmVuZHN3aXRoKCcuZXhlJyk6CisgICAgICAgICAgICAgICAgICAgIG1vZGUgPSAnd2InCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICd3JworICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVwbGFjZV92YXJpYWJsZXMoZGF0YSwgY29udGV4dCkKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZHN0ZmlsZSwgbW9kZSkgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShkYXRhKQorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNmaWxlLCBkc3RmaWxlKQorCisKK2RlZiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSk6CisgICAgIiIiCisgICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKworICAgIEJ5IGRlZmF1bHQsIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIgYXZhaWxhYmxlIHRvCisgICAgdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisKKyAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgorICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC4KKyAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUgYW5kIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgaXQgaXMgZGVsZXRlZC4KKyAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgaWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAgIDpwYXJhbSBzeW1saW5rczogSWYgVHJ1ZSwgYXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkgZmlsZXMgaW50bworICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgICAiIiIKKyAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zeXN0ZW1fc2l0ZV9wYWNrYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzKQorICAgIGJ1aWxkZXIuY3JlYXRlKGVudl9kaXIpCisKK2RlZiBtYWluKGFyZ3M9Tm9uZSk6CisgICAgY29tcGF0aWJsZSA9IFRydWUKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICBjb21wYXRpYmxlID0gRmFsc2UKKyAgICBlbGlmIG5vdCBoYXNhdHRyKHN5cywgJ2Jhc2VfcHJlZml4Jyk6CisgICAgICAgIGNvbXBhdGlibGUgPSBGYWxzZQorICAgIGlmIG5vdCBjb21wYXRpYmxlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGlzIHNjcmlwdCBpcyBvbmx5IGZvciB1c2Ugd2l0aCBQeXRob24gMy4zJykKKyAgICBlbHNlOgorICAgICAgICBpbXBvcnQgYXJncGFyc2UKKworICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPV9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudHMgaW4gb25lIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz0nT25jZSBhbiBlbnZpcm9ubWVudCBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCwgeW91IG1heSB3aXNoIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmF0ZSBpdCwgZS5nLiBieSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNpbmcgYW4gYWN0aXZhdGUgc2NyaXB0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbiBpdHMgYmluIGRpcmVjdG9yeS4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc3lzdGVtLXNpdGUtcGFja2FnZXMnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3N5c3RlbV9zaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbSBzaXRlLXBhY2thZ2VzIGRpci4nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICB1c2Vfc3ltbGlua3MgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdXNlX3N5bWxpbmtzID0gVHJ1ZQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN5bWxpbmtzJywgZGVmYXVsdD11c2Vfc3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nc3ltbGlua3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2hlbiBzeW1saW5rcyBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHBsYXRmb3JtLicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMuIElmIG5vdCBzcGVjaWZpZWQgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvcicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpcyByYWlzZWQuJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11cGdyYWRlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3lvdSBjYW5ub3Qgc3VwcGx5IC0tdXBncmFkZSBhbmQgLS1jbGVhciB0b2dldGhlci4nKQorICAgICAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1vcHRpb25zLnN5c3RlbV9zaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1vcHRpb25zLmNsZWFyLCBzeW1saW5rcz1vcHRpb25zLnN5bWxpbmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSkKKyAgICAgICAgZm9yIGQgaW4gb3B0aW9ucy5kaXJzOgorICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoZCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICByYyA9IDEKKyAgICB0cnk6CisgICAgICAgIG1haW4oKQorICAgICAgICByYyA9IDAKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0KHJjKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19tYWluX18ucHkgYi9MaWIvdmVudi9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI0MjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvX19tYWluX18ucHkKQEAgLTAsMCArMSwxMCBAQAoraW1wb3J0IHN5cworZnJvbSAuIGltcG9ydCBtYWluCisKK3JjID0gMQordHJ5OgorICAgIG1haW4oKQorICAgIHJjID0gMAorZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorc3lzLmV4aXQocmMpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNWVmOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L0FjdGl2YXRlLnBzMQpAQCAtMCwwICsxLDM0IEBACiskZW52OlZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iDQorDQorIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQoraWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KKyAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQorfQ0KKw0KKyMgU2V0IHRoZSBwcm9tcHQgdG8gaW5jbHVkZSB0aGUgZW52IG5hbWUNCitjb3B5LWl0ZW0gZnVuY3Rpb246cHJvbXB0IGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCitmdW5jdGlvbiBwcm9tcHQgew0KKyAgICBXcml0ZS1Ib3N0IC1Ob05ld2xpbmUgLUZvcmVncm91bmRDb2xvciBHcmVlbiAnW19fVkVOVl9OQU1FX19dJw0KKyAgICBfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KKyMgQ2xlYXIgUFlUSE9OSE9NRQ0KK2lmIChUZXN0LVBhdGggZW52OlBZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpQWVRIT05IT01FIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6UFlUSE9OSE9NRQ0KK30NCisNCisjIEFkZCB0aGUgdmVudiB0byB0aGUgUEFUSA0KK2NvcHktaXRlbSBlbnY6UEFUSCBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCiskZW52OlBBVEggPSAiJGVudjpWSVJUVUFMX0VOVlxfX1ZFTlZfQklOX05BTUVfXzskZW52OlBBVEgiDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QxZTk2YgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvRGVhY3RpdmF0ZS5wczEKQEAgLTAsMCArMSwxOSBAQAorIyBSZXZlcnQgdG8gb3JpZ2luYWwgdmFsdWVzDQoraWYgKFRlc3QtUGF0aCBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUKSB7DQorICAgIGNvcHktaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUIGZ1bmN0aW9uOnByb21wdA0KKyAgICByZW1vdmUtaXRlbSBmdW5jdGlvbjpfT0xEX1ZJUlRVQUxfUFJPTVBUDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgZW52OlBZVEhPTkhPTUUNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52Ol9PTERfVklSVFVBTF9QQVRIKSB7DQorICAgIGNvcHktaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEggZW52OlBBVEgNCisgICAgcmVtb3ZlLWl0ZW0gZW52Ol9PTERfVklSVFVBTF9QQVRIDQorfQ0KKw0KK2lmIChUZXN0LVBhdGggZW52OlZJUlRVQUxfRU5WKSB7DQorICAgIHJlbW92ZS1pdGVtIGVudjpWSVJUVUFMX0VOVg0KK30NCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdCBiL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NWU2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL250L2FjdGl2YXRlLmJhdApAQCAtMCwwICsxLDMxIEBACitAZWNobyBvZmYNCitzZXQgVklSVFVBTF9FTlY9X19WRU5WX0RJUl9fDQorDQoraWYgbm90IGRlZmluZWQgUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0kUCRHDQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BST01QVCAoDQorICAgIHNldCBQUk9NUFQ9JV9PTERfVklSVFVBTF9QUk9NUFQlDQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUgKA0KKyAgICAgc2V0IFBZVEhPTkhPTUU9JV9PTERfVklSVFVBTF9QWVRIT05IT01FJQ0KKykNCisNCitzZXQgX09MRF9WSVJUVUFMX1BST01QVD0lUFJPTVBUJQ0KK3NldCBQUk9NUFQ9X19WRU5WX05BTUVfXyVQUk9NUFQlDQorDQoraWYgZGVmaW5lZCBQWVRIT05IT01FICgNCisgICAgIHNldCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRT0lUFlUSE9OSE9NRSUNCisgICAgIHNldCBQWVRIT05IT01FPQ0KKykNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QQVRIIHNldCBQQVRIPSVfT0xEX1ZJUlRVQUxfUEFUSCU7IGdvdG8gU0tJUFBBVEgNCisNCitzZXQgX09MRF9WSVJUVUFMX1BBVEg9JVBBVEglDQorDQorOlNLSVBQQVRIDQorc2V0IFBBVEg9JVZJUlRVQUxfRU5WJVxfX1ZFTlZfQklOX05BTUVfXzslUEFUSCUNCisNCis6RU5EDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdCBiL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkYTViMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvZGVhY3RpdmF0ZS5iYXQKQEAgLTAsMCArMSwxNyBAQAorQGVjaG8gb2ZmDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0lX09MRF9WSVJUVUFMX1BST01QVCUNCispDQorc2V0IF9PTERfVklSVFVBTF9QUk9NUFQ9DQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSAoDQorICAgICBzZXQgUFlUSE9OSE9NRT0lX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUlDQorICAgICBzZXQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUU9DQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BBVEggc2V0IFBBVEg9JV9PTERfVklSVFVBTF9QQVRIJQ0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUEFUSD0NCisNCis6RU5EDQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weSBiL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMmRiNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvcHlkb2MucHkKQEAgLTAsMCArMSw0IEBACisjIV9fVkVOVl9QWVRIT05fXworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzLCBweWRvYworICAgIHN5cy5leGl0KHB5ZG9jLmNsaSgpKQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZSBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0MTQ1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvYWN0aXZhdGUKQEAgLTAsMCArMSw3NiBAQAorIyBUaGlzIGZpbGUgbXVzdCBiZSB1c2VkIHdpdGggInNvdXJjZSBiaW4vYWN0aXZhdGUiICpmcm9tIGJhc2gqCisjIHlvdSBjYW5ub3QgcnVuIGl0IGRpcmVjdGx5CisKK2RlYWN0aXZhdGUgKCkgeworICAgICMgcmVzZXQgb2xkIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUEFUSCIgXSA7IHRoZW4KKyAgICAgICAgUEFUSD0iJF9PTERfVklSVFVBTF9QQVRIIgorICAgICAgICBleHBvcnQgUEFUSAorICAgICAgICB1bnNldCBfT0xEX1ZJUlRVQUxfUEFUSAorICAgIGZpCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QWVRIT05IT01FIiBdIDsgdGhlbgorICAgICAgICBQWVRIT05IT01FPSIkX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUiCisgICAgICAgIGV4cG9ydCBQWVRIT05IT01FCisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QWVRIT05IT01FCisgICAgZmkKKworICAgICMgVGhpcyBzaG91bGQgZGV0ZWN0IGJhc2ggYW5kIHpzaCwgd2hpY2ggaGF2ZSBhIGhhc2ggY29tbWFuZCB0aGF0IG11c3QKKyAgICAjIGJlIGNhbGxlZCB0byBnZXQgaXQgdG8gZm9yZ2V0IHBhc3QgY29tbWFuZHMuICBXaXRob3V0IGZvcmdldHRpbmcKKyAgICAjIHBhc3QgY29tbWFuZHMgdGhlICRQQVRIIGNoYW5nZXMgd2UgbWFkZSBtYXkgbm90IGJlIHJlc3BlY3RlZAorICAgIGlmIFsgLW4gIiRCQVNIIiAtbyAtbiAiJFpTSF9WRVJTSU9OIiBdIDsgdGhlbgorICAgICAgICBoYXNoIC1yCisgICAgZmkKKworICAgIGlmIFsgLW4gIiRfT0xEX1ZJUlRVQUxfUFMxIiBdIDsgdGhlbgorICAgICAgICBQUzE9IiRfT0xEX1ZJUlRVQUxfUFMxIgorICAgICAgICBleHBvcnQgUFMxCisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QUzEKKyAgICBmaQorCisgICAgdW5zZXQgVklSVFVBTF9FTlYKKyAgICBpZiBbICEgIiQxIiA9ICJub25kZXN0cnVjdGl2ZSIgXSA7IHRoZW4KKyAgICAjIFNlbGYgZGVzdHJ1Y3QhCisgICAgICAgIHVuc2V0IC1mIGRlYWN0aXZhdGUKKyAgICBmaQorfQorCisjIHVuc2V0IGlycmVsYXZlbnQgdmFyaWFibGVzCitkZWFjdGl2YXRlIG5vbmRlc3RydWN0aXZlCisKK1ZJUlRVQUxfRU5WPSJfX1ZFTlZfRElSX18iCitleHBvcnQgVklSVFVBTF9FTlYKKworX09MRF9WSVJUVUFMX1BBVEg9IiRQQVRIIgorUEFUSD0iJFZJUlRVQUxfRU5WL19fVkVOVl9CSU5fTkFNRV9fOiRQQVRIIgorZXhwb3J0IFBBVEgKKworIyB1bnNldCBQWVRIT05IT01FIGlmIHNldAorIyB0aGlzIHdpbGwgZmFpbCBpZiBQWVRIT05IT01FIGlzIHNldCB0byB0aGUgZW1wdHkgc3RyaW5nICh3aGljaCBpcyBiYWQgYW55d2F5KQorIyBjb3VsZCB1c2UgYGlmIChzZXQgLXU7IDogJFBZVEhPTkhPTUUpIDtgIGluIGJhc2gKK2lmIFsgLW4gIiRQWVRIT05IT01FIiBdIDsgdGhlbgorICAgIF9PTERfVklSVFVBTF9QWVRIT05IT01FPSIkUFlUSE9OSE9NRSIKKyAgICB1bnNldCBQWVRIT05IT01FCitmaQorCitpZiBbIC16ICIkVklSVFVBTF9FTlZfRElTQUJMRV9QUk9NUFQiIF0gOyB0aGVuCisgICAgX09MRF9WSVJUVUFMX1BTMT0iJFBTMSIKKyAgICBpZiBbICJ4X19WRU5WX05BTUVfXyIgIT0geCBdIDsgdGhlbgorCVBTMT0iX19WRU5WX05BTUVfXyRQUzEiCisgICAgZWxzZQorICAgIGlmIFsgImBiYXNlbmFtZSBcIiRWSVJUVUFMX0VOVlwiYCIgPSAiX18iIF0gOyB0aGVuCisgICAgICAgICMgc3BlY2lhbCBjYXNlIGZvciBBc3BlbiBtYWdpYyBkaXJlY3RvcmllcworICAgICAgICAjIHNlZSBodHRwOi8vd3d3LnpldGFkZXYuY29tL3NvZnR3YXJlL2FzcGVuLworICAgICAgICBQUzE9IltgYmFzZW5hbWUgXGBkaXJuYW1lIFwiJFZJUlRVQUxfRU5WXCJcYGBdICRQUzEiCisgICAgZWxzZQorICAgICAgICBQUzE9IihgYmFzZW5hbWUgXCIkVklSVFVBTF9FTlZcImApJFBTMSIKKyAgICBmaQorICAgIGZpCisgICAgZXhwb3J0IFBTMQorZmkKKworIyBUaGlzIHNob3VsZCBkZXRlY3QgYmFzaCBhbmQgenNoLCB3aGljaCBoYXZlIGEgaGFzaCBjb21tYW5kIHRoYXQgbXVzdAorIyBiZSBjYWxsZWQgdG8gZ2V0IGl0IHRvIGZvcmdldCBwYXN0IGNvbW1hbmRzLiAgV2l0aG91dCBmb3JnZXR0aW5nCisjIHBhc3QgY29tbWFuZHMgdGhlICRQQVRIIGNoYW5nZXMgd2UgbWFkZSBtYXkgbm90IGJlIHJlc3BlY3RlZAoraWYgWyAtbiAiJEJBU0giIC1vIC1uICIkWlNIX1ZFUlNJT04iIF0gOyB0aGVuCisgICAgaGFzaCAtcgorZmkKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkyMzM3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L3B5ZG9jCkBAIC0wLDAgKzEsNSBAQAorIyFfX1ZFTlZfUFlUSE9OX18KK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cywgcHlkb2MKKyAgICBzeXMuZXhpdChweWRvYy5jbGkoKSkKKwpkaWZmIC0tZ2l0IGEvTGliL3dlYmJyb3dzZXIucHkgYi9MaWIvd2ViYnJvd3Nlci5weQppbmRleCAyMDJmMzRhLi45NGQ0YWQ0IDEwMDY0NAotLS0gYS9MaWIvd2ViYnJvd3Nlci5weQorKysgYi9MaWIvd2ViYnJvd3Nlci5weQpAQCAtMjMwLDcgKzIzMCw3IEBACiAgICAgICAgIGNtZGxpbmUgPSBbc2VsZi5uYW1lXSArIHJhaXNlX29wdCArIGFyZ3MKIAogICAgICAgICBpZiByZW1vdGUgb3Igc2VsZi5iYWNrZ3JvdW5kOgotICAgICAgICAgICAgaW5vdXQgPSBpby5vcGVuKG9zLmRldm51bGwsICJyKyIpCisgICAgICAgICAgICBpbm91dCA9IHN1YnByb2Nlc3MuREVWTlVMTAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBmb3IgVFRZIGJyb3dzZXJzLCB3ZSBuZWVkIHN0ZGluL291dAogICAgICAgICAgICAgaW5vdXQgPSBOb25lCkBAIC0yMzgsMTcgKzIzOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9KHNlbGYucmVkaXJlY3Rfc3Rkb3V0IGFuZCBpbm91dCBvciBOb25lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPWlub3V0LCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlKQogICAgICAgICBpZiByZW1vdGU6Ci0gICAgICAgICAgICAjIHdhaXQgZml2ZSBzZWNvbmRzLiBJZiB0aGUgc3VicHJvY2VzcyBpcyBub3QgZmluaXNoZWQsIHRoZQorICAgICAgICAgICAgIyB3YWl0IGF0IG1vc3QgZml2ZSBzZWNvbmRzLiBJZiB0aGUgc3VicHJvY2VzcyBpcyBub3QgZmluaXNoZWQsIHRoZQogICAgICAgICAgICAgIyByZW1vdGUgaW52b2NhdGlvbiBoYXMgKGhvcGVmdWxseSkgc3RhcnRlZCBhIG5ldyBpbnN0YW5jZS4KLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgICAgIHJjID0gcC5wb2xsKCkKLSAgICAgICAgICAgIGlmIHJjIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCg0KQotICAgICAgICAgICAgICAgIHJjID0gcC5wb2xsKCkKLSAgICAgICAgICAgICAgICBpZiByYyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgIyBpZiByZW1vdGUgY2FsbCBmYWlsZWQsIG9wZW4oKSB3aWxsIHRyeSBkaXJlY3QgaW52b2NhdGlvbgotICAgICAgICAgICAgcmV0dXJuIG5vdCByYworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJjID0gcC53YWl0KDUpCisgICAgICAgICAgICAgICAgIyBpZiByZW1vdGUgY2FsbCBmYWlsZWQsIG9wZW4oKSB3aWxsIHRyeSBkaXJlY3QgaW52b2NhdGlvbgorICAgICAgICAgICAgICAgIHJldHVybiBub3QgcmMKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsaWYgc2VsZi5iYWNrZ3JvdW5kOgogICAgICAgICAgICAgaWYgcC5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMzA2LDYgKzMwMywxOCBAQAogICAgIGJhY2tncm91bmQgPSBUcnVlCiAKIAorY2xhc3MgQ2hyb21lKFVuaXhCcm93c2VyKToKKyAgICAiTGF1bmNoZXIgY2xhc3MgZm9yIEdvb2dsZSBDaHJvbWUgYnJvd3Nlci4iCisKKyAgICByZW1vdGVfYXJncyA9IFsnJWFjdGlvbicsICclcyddCisgICAgcmVtb3RlX2FjdGlvbiA9ICIiCisgICAgcmVtb3RlX2FjdGlvbl9uZXd3aW4gPSAiLS1uZXctd2luZG93IgorICAgIHJlbW90ZV9hY3Rpb25fbmV3dGFiID0gIiIKKyAgICBiYWNrZ3JvdW5kID0gVHJ1ZQorCitDaHJvbWl1bSA9IENocm9tZQorCisKIGNsYXNzIE9wZXJhKFVuaXhCcm93c2VyKToKICAgICAiTGF1bmNoZXIgY2xhc3MgZm9yIE9wZXJhIGJyb3dzZXIuIgogCkBAIC0zNDUsNyArMzU0LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFjdGlvbiA9ICJvcGVuVVJMIgogCi0gICAgICAgIGRldm51bGwgPSBpby5vcGVuKG9zLmRldm51bGwsICJyKyIpCisgICAgICAgIGRldm51bGwgPSBzdWJwcm9jZXNzLkRFVk5VTEwKICAgICAgICAgIyBpZiBwb3NzaWJsZSwgcHV0IGJyb3dzZXIgaW4gc2VwYXJhdGUgcHJvY2VzcyBncm91cCwgc28KICAgICAgICAgIyBrZXlib2FyZCBpbnRlcnJ1cHRzIGRvbid0IGFmZmVjdCBicm93c2VyIGFzIHdlbGwgYXMgUHl0aG9uCiAgICAgICAgIHNldHNpZCA9IGdldGF0dHIob3MsICdzZXRzaWQnLCBOb25lKQpAQCAtNDQzLDYgKzQ1MiwxNCBAQAogCiBkZWYgcmVnaXN0ZXJfWF9icm93c2VycygpOgogCisgICAgIyB1c2UgeGRnLW9wZW4gaWYgYXJvdW5kCisgICAgaWYgX2lzY29tbWFuZCgieGRnLW9wZW4iKToKKyAgICAgICAgcmVnaXN0ZXIoInhkZy1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoInhkZy1vcGVuIikpCisKKyAgICAjIFRoZSBkZWZhdWx0IEdOT01FMyBicm93c2VyCisgICAgaWYgIkdOT01FX0RFU0tUT1BfU0VTU0lPTl9JRCIgaW4gb3MuZW52aXJvbiBhbmQgX2lzY29tbWFuZCgiZ3Zmcy1vcGVuIik6CisgICAgICAgIHJlZ2lzdGVyKCJndmZzLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigiZ3Zmcy1vcGVuIikpCisKICAgICAjIFRoZSBkZWZhdWx0IEdOT01FIGJyb3dzZXIKICAgICBpZiAiR05PTUVfREVTS1RPUF9TRVNTSU9OX0lEIiBpbiBvcy5lbnZpcm9uIGFuZCBfaXNjb21tYW5kKCJnbm9tZS1vcGVuIik6CiAgICAgICAgIHJlZ2lzdGVyKCJnbm9tZS1vcGVuIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoImdub21lLW9wZW4iKSkKQEAgLTQ3Myw2ICs0OTAsMTEgQEAKICAgICBpZiBfaXNjb21tYW5kKCJza2lwc3RvbmUiKToKICAgICAgICAgcmVnaXN0ZXIoInNraXBzdG9uZSIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJza2lwc3RvbmUiKSkKIAorICAgICMgR29vZ2xlIENocm9tZS9DaHJvbWl1bSBicm93c2VycworICAgIGZvciBicm93c2VyIGluICgiZ29vZ2xlLWNocm9tZSIsICJjaHJvbWUiLCAiY2hyb21pdW0iLCAiY2hyb21pdW0tYnJvd3NlciIpOgorICAgICAgICBpZiBfaXNjb21tYW5kKGJyb3dzZXIpOgorICAgICAgICAgICAgcmVnaXN0ZXIoYnJvd3NlciwgTm9uZSwgQ2hyb21lKGJyb3dzZXIpKQorCiAgICAgIyBPcGVyYSwgcXVpdGUgcG9wdWxhcgogICAgIGlmIF9pc2NvbW1hbmQoIm9wZXJhIik6CiAgICAgICAgIHJlZ2lzdGVyKCJvcGVyYSIsIE5vbmUsIE9wZXJhKCJvcGVyYSIpKQpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYuZWdnLWluZm8gYi9MaWIvd3NnaXJlZi5lZ2ctaW5mbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBiNzg5My4uMDAwMDAwMAotLS0gYS9MaWIvd3NnaXJlZi5lZ2ctaW5mbworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotTWV0YWRhdGEtVmVyc2lvbjogMS4wCi1OYW1lOiB3c2dpcmVmCi1WZXJzaW9uOiAwLjEuMgotU3VtbWFyeTogV1NHSSAoUEVQIDMzMykgUmVmZXJlbmNlIExpYnJhcnkKLUF1dGhvcjogUGhpbGxpcCBKLiBFYnkKLUF1dGhvci1lbWFpbDogd2ViLXNpZ0BweXRob24ub3JnCi1MaWNlbnNlOiBQU0Ygb3IgWlBMCi1QbGF0Zm9ybTogVU5LTk9XTgpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKaW5kZXggYWY4MmY5NS4uYTYwMTVmYiAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQorKysgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CkBAIC0xNCwxMyArMTQsMTQgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20gd3NnaXJlZi5oYW5kbGVycyBpbXBvcnQgU2ltcGxlSGFuZGxlcgorZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX2ltcGxlbWVudGF0aW9uCiAKIF9fdmVyc2lvbl9fID0gIjAuMiIKIF9fYWxsX18gPSBbJ1dTR0lTZXJ2ZXInLCAnV1NHSVJlcXVlc3RIYW5kbGVyJywgJ2RlbW9fYXBwJywgJ21ha2Vfc2VydmVyJ10KIAogCiBzZXJ2ZXJfdmVyc2lvbiA9ICJXU0dJU2VydmVyLyIgKyBfX3ZlcnNpb25fXwotc3lzX3ZlcnNpb24gPSAiUHl0aG9uLyIgKyBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCitzeXNfdmVyc2lvbiA9IHB5dGhvbl9pbXBsZW1lbnRhdGlvbigpICsgIi8iICsgc3lzLnZlcnNpb24uc3BsaXQoKVswXQogc29mdHdhcmVfdmVyc2lvbiA9IHNlcnZlcl92ZXJzaW9uICsgJyAnICsgc3lzX3ZlcnNpb24KIAogCmRpZmYgLS1naXQgYS9MaWIveGRybGliLnB5IGIvTGliL3hkcmxpYi5weQppbmRleCA0ZTQ4Njc3Li44NmU2MjRmIDEwMDY0NAotLS0gYS9MaWIveGRybGliLnB5CisrKyBiL0xpYi94ZHJsaWIucHkKQEAgLTE0MSwxMSArMTQxLDcgQEAKICAgICAgICAgZGF0YSA9IHNlbGYuX19idWZbaTpqXQogICAgICAgICBpZiBsZW4oZGF0YSkgPCA0OgogICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKLSAgICAgICAgeCA9IHN0cnVjdC51bnBhY2soJz5MJywgZGF0YSlbMF0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGludCh4KQotICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCc+TCcsIGRhdGEpWzBdCiAKICAgICBkZWYgdW5wYWNrX2ludChzZWxmKToKICAgICAgICAgaSA9IHNlbGYuX19wb3MKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL19faW5pdF9fLnB5IGIvTGliL3htbC9kb20vX19pbml0X18ucHkKaW5kZXggNDQwMWJkZi4uOTdjZjlhNiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vX19pbml0X18ucHkKKysrIGIvTGliL3htbC9kb20vX19pbml0X18ucHkKQEAgLTE3LDYgKzE3LDcgQEAKIAogY2xhc3MgTm9kZToKICAgICAiIiJDbGFzcyBnaXZpbmcgdGhlIE5vZGVUeXBlIGNvbnN0YW50cy4iIiIKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgIyBET00gaW1wbGVtZW50YXRpb25zIG1heSB1c2UgdGhpcyBhcyBhIGJhc2UgY2xhc3MgZm9yIHRoZWlyIG93bgogICAgICMgTm9kZSBpbXBsZW1lbnRhdGlvbnMuICBJZiB0aGV5IGRvbid0LCB0aGUgY29uc3RhbnRzIGRlZmluZWQgaGVyZQpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZG9tcmVnLnB5IGIvTGliL3htbC9kb20vZG9tcmVnLnB5CmluZGV4IGNiMzViYjAuLjhjM2Q5MDEgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2RvbXJlZy5weQorKysgYi9MaWIveG1sL2RvbS9kb21yZWcucHkKQEAgLTIsOCArMiw2IEBACiBkaXJlY3RseS4gSW5zdGVhZCwgdGhlIGZ1bmN0aW9ucyBnZXRET01JbXBsZW1lbnRhdGlvbiBhbmQKIHJlZ2lzdGVyRE9NSW1wbGVtZW50YXRpb24gc2hvdWxkIGJlIGltcG9ydGVkIGZyb20geG1sLmRvbS4iIiIKIAotZnJvbSB4bWwuZG9tLm1pbmljb21wYXQgaW1wb3J0ICogICMgaXNpbnN0YW5jZSwgU3RyaW5nVHlwZXMKLQogIyBUaGlzIGlzIGEgbGlzdCBvZiB3ZWxsLWtub3duIGltcGxlbWVudGF0aW9ucy4gIFdlbGwta25vd24gbmFtZXMKICMgc2hvdWxkIGJlIHB1Ymxpc2hlZCBieSBwb3N0aW5nIHRvIHhtbC1zaWdAcHl0aG9uLm9yZywgYW5kIGFyZQogIyBzdWJzZXF1ZW50bHkgcmVjb3JkZWQgaW4gdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5IGIvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CmluZGV4IGE5OGZlMDMuLmYwNzRhYjkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKQEAgLTMzLDggKzMzLDYgQEAKIGZyb20geG1sLmRvbS5taW5pZG9tIGltcG9ydCBfYXBwZW5kX2NoaWxkLCBfc2V0X2F0dHJpYnV0ZV9ub2RlCiBmcm9tIHhtbC5kb20uTm9kZUZpbHRlciBpbXBvcnQgTm9kZUZpbHRlcgogCi1mcm9tIHhtbC5kb20ubWluaWNvbXBhdCBpbXBvcnQgKgotCiBURVhUX05PREUgPSBOb2RlLlRFWFRfTk9ERQogQ0RBVEFfU0VDVElPTl9OT0RFID0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUKIERPQ1VNRU5UX05PREUgPSBOb2RlLkRPQ1VNRU5UX05PREUKQEAgLTI4MywyNyArMjgxLDIzIEBACiAgICAgICAgIGVsaWYgY2hpbGROb2RlcyBhbmQgY2hpbGROb2Rlc1stMV0ubm9kZVR5cGUgPT0gVEVYVF9OT0RFOgogICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbLTFdCiAgICAgICAgICAgICB2YWx1ZSA9IG5vZGUuZGF0YSArIGRhdGEKLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCisgICAgICAgICAgICBub2RlLmRhdGEgPSB2YWx1ZQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBub2RlID0gbWluaWRvbS5UZXh0KCkKLSAgICAgICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IGRhdGEKLSAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgIG5vZGUuZGF0YSA9IGRhdGEKKyAgICAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAKICAgICBkZWYgY2hhcmFjdGVyX2RhdGFfaGFuZGxlcihzZWxmLCBkYXRhKToKICAgICAgICAgY2hpbGROb2RlcyA9IHNlbGYuY3VyTm9kZS5jaGlsZE5vZGVzCiAgICAgICAgIGlmIGNoaWxkTm9kZXMgYW5kIGNoaWxkTm9kZXNbLTFdLm5vZGVUeXBlID09IFRFWFRfTk9ERToKICAgICAgICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzWy0xXQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gbm9kZS5kYXRhICsgZGF0YQorICAgICAgICAgICAgbm9kZS5kYXRhID0gbm9kZS5kYXRhICsgZGF0YQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG5vZGUgPSBtaW5pZG9tLlRleHQoKQotICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IG5vZGUuZGF0YSArIGRhdGEKLSAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgKyBkYXRhCisgICAgICAgIG5vZGUub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgX2FwcGVuZF9jaGlsZChzZWxmLmN1ck5vZGUsIG5vZGUpCiAKICAgICBkZWYgZW50aXR5X2RlY2xfaGFuZGxlcihzZWxmLCBlbnRpdHlOYW1lLCBpc19wYXJhbWV0ZXJfZW50aXR5LCB2YWx1ZSwKQEAgLTM2MywxMSArMzU3LDggQEAKICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKGF0dHJpYnV0ZXNbaV0sIEVNUFRZX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXNbaSsxXQotICAgICAgICAgICAgICAgIGQgPSBhLmNoaWxkTm9kZXNbMF0uX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhLm93bmVyRG9jdW1lbnQgPSBzZWxmLmRvY3VtZW50CiAgICAgICAgICAgICAgICAgX3NldF9hdHRyaWJ1dGVfbm9kZShub2RlLCBhKQogCiAgICAgICAgIGlmIG5vZGUgaXMgbm90IHNlbGYuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OgpAQCAtNzYxLDE1ICs3NTIsMTMgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBhID0gbWluaWRvbS5BdHRyKCJ4bWxucyIsIFhNTE5TX05BTUVTUEFDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sbnMiLCBFTVBUWV9QUkVGSVgpCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdXJpCi0gICAgICAgICAgICAgICAgZCA9IGEuX19kaWN0X18KLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB1cmkKLSAgICAgICAgICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgICAgICAgICAgYS52YWx1ZSA9IHVyaQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgICAgICBfc2V0X2F0dHJpYnV0ZV9ub2RlKG5vZGUsIGEpCiAgICAgICAgICAgICBkZWwgc2VsZi5fbnNfb3JkZXJlZF9wcmVmaXhlc1s6XQogCiAgICAgICAgIGlmIGF0dHJpYnV0ZXM6CisgICAgICAgICAgICBub2RlLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgICAgICBfYXR0cnMgPSBub2RlLl9hdHRycwogICAgICAgICAgICAgX2F0dHJzTlMgPSBub2RlLl9hdHRyc05TCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oYXR0cmlidXRlcyksIDIpOgpAQCAtNzg1LDEyICs3NzQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuYW1lLCBFTVBUWV9QUkVGSVgpCiAgICAgICAgICAgICAgICAgICAgIF9hdHRyc1thbmFtZV0gPSBhCiAgICAgICAgICAgICAgICAgICAgIF9hdHRyc05TWyhFTVBUWV9OQU1FU1BBQ0UsIGFuYW1lKV0gPSBhCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKLSAgICAgICAgICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGRbJ293bmVyRWxlbWVudCddID0gbm9kZQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhLm93bmVyRWxlbWVudCA9IG5vZGUKIAogICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgIyBUaGlzIG9ubHkgYWRkcyBzb21lIGFzc2VydHMgdG8gdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5IGIvTGliL3htbC9kb20vbWluaWRvbS5weQppbmRleCBmMjNhZDA1Li4yOGU1MDMwIDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9taW5pZG9tLnB5CisrKyBiL0xpYi94bWwvZG9tL21pbmlkb20ucHkKQEAgLTE0LDcgKzE0LDYgQEAKICAqIFNBWCAyIG5hbWVzcGFjZXMKICIiIgogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgaW8KIGltcG9ydCB4bWwuZG9tCiAKQEAgLTQ3LDI1ICs0NiwyNSBAQAogICAgICAgICByZXR1cm4gc2VsZi50b3ByZXR0eXhtbCgiIiwgIiIsIGVuY29kaW5nKQogCiAgICAgZGVmIHRvcHJldHR5eG1sKHNlbGYsIGluZGVudD0iXHQiLCBuZXdsPSJcbiIsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICAjIGluZGVudCA9IHRoZSBpbmRlbnRhdGlvbiBzdHJpbmcgdG8gcHJlcGVuZCwgcGVyIGxldmVsCi0gICAgICAgICMgbmV3bCA9IHRoZSBuZXdsaW5lIHN0cmluZyB0byBhcHBlbmQKLSAgICAgICAgdXNlX2VuY29kaW5nID0gInV0Zi04IiBpZiBlbmNvZGluZyBpcyBOb25lIGVsc2UgZW5jb2RpbmcKLSAgICAgICAgd3JpdGVyID0gY29kZWNzLmdldHdyaXRlcih1c2VfZW5jb2RpbmcpKGlvLkJ5dGVzSU8oKSkKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHdyaXRlciA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdyaXRlciA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9J1xuJykKICAgICAgICAgaWYgc2VsZi5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX05PREU6CiAgICAgICAgICAgICAjIENhbiBwYXNzIGVuY29kaW5nIG9ubHkgdG8gZG9jdW1lbnQsIHRvIHB1dCBpdCBpbnRvIFhNTCBoZWFkZXIKICAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsLCBlbmNvZGluZykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYud3JpdGV4bWwod3JpdGVyLCAiIiwgaW5kZW50LCBuZXdsKQogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5zdHJlYW0uZ2V0dmFsdWUoKS5kZWNvZGUodXNlX2VuY29kaW5nKQorICAgICAgICAgICAgcmV0dXJuIHdyaXRlci5nZXR2YWx1ZSgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gd3JpdGVyLnN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICByZXR1cm4gd3JpdGVyLmRldGFjaCgpLmdldHZhbHVlKCkKIAogICAgIGRlZiBoYXNDaGlsZE5vZGVzKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNoaWxkTm9kZXM6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBib29sKHNlbGYuY2hpbGROb2RlcykKIAogICAgIGRlZiBfZ2V0X2NoaWxkTm9kZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmNoaWxkTm9kZXMKQEAgLTI4NiwxMCArMjg1LDEwIEBACiAgICAgY2hpbGROb2RlcyA9IHNlbGYuY2hpbGROb2RlcwogICAgIGlmIGNoaWxkTm9kZXM6CiAgICAgICAgIGxhc3QgPSBjaGlsZE5vZGVzWy0xXQotICAgICAgICBub2RlLl9fZGljdF9fWyJwcmV2aW91c1NpYmxpbmciXSA9IGxhc3QKLSAgICAgICAgbGFzdC5fX2RpY3RfX1sibmV4dFNpYmxpbmciXSA9IG5vZGUKKyAgICAgICAgbm9kZS5wcmV2aW91c1NpYmxpbmcgPSBsYXN0CisgICAgICAgIGxhc3QubmV4dFNpYmxpbmcgPSBub2RlCiAgICAgY2hpbGROb2Rlcy5hcHBlbmQobm9kZSkKLSAgICBub2RlLl9fZGljdF9fWyJwYXJlbnROb2RlIl0gPSBzZWxmCisgICAgbm9kZS5wYXJlbnROb2RlID0gc2VsZgogCiBkZWYgX2luX2RvY3VtZW50KG5vZGUpOgogICAgICMgcmV0dXJuIFRydWUgaWZmIG5vZGUgaXMgcGFydCBvZiBhIGRvY3VtZW50IHRyZWUKQEAgLTM0Miw5ICszNDEsMTAgQEAKIAogCiBjbGFzcyBBdHRyKE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ19uYW1lJywgJ192YWx1ZScsICduYW1lc3BhY2VVUkknLAorICAgICAgICAgICAgICAgJ19wcmVmaXgnLCAnY2hpbGROb2RlcycsICdfbG9jYWxOYW1lJywgJ293bmVyRG9jdW1lbnQnLCAnb3duZXJFbGVtZW50JykKICAgICBub2RlVHlwZSA9IE5vZGUuQVRUUklCVVRFX05PREUKICAgICBhdHRyaWJ1dGVzID0gTm9uZQotICAgIG93bmVyRWxlbWVudCA9IE5vbmUKICAgICBzcGVjaWZpZWQgPSBGYWxzZQogICAgIF9pc19pZCA9IEZhbHNlCiAKQEAgLTM1MiwxMiArMzUyLDExIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcU5hbWUsIG5hbWVzcGFjZVVSST1FTVBUWV9OQU1FU1BBQ0UsIGxvY2FsTmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICBwcmVmaXg9Tm9uZSk6Ci0gICAgICAgICMgc2tpcCBzZXRhdHRyIGZvciBwZXJmb3JtYW5jZQotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyJub2RlTmFtZSJdID0gZFsibmFtZSJdID0gcU5hbWUKLSAgICAgICAgZFsibmFtZXNwYWNlVVJJIl0gPSBuYW1lc3BhY2VVUkkKLSAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgZFsnY2hpbGROb2RlcyddID0gTm9kZUxpc3QoKQorICAgICAgICBzZWxmLm93bmVyRWxlbWVudCA9IE5vbmUKKyAgICAgICAgc2VsZi5fbmFtZSA9IHFOYW1lCisgICAgICAgIHNlbGYubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCisgICAgICAgIHNlbGYuX3ByZWZpeCA9IHByZWZpeAorICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAKICAgICAgICAgIyBBZGQgdGhlIHNpbmdsZSBjaGlsZCBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgdGhlIGF0dHIKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzLmFwcGVuZChUZXh0KCkpCkBAIC0zNjUsOSArMzY0LDEwIEBACiAgICAgICAgICMgbm9kZVZhbHVlIGFuZCB2YWx1ZSBhcmUgc2V0IGVsc2V3aGVyZQogCiAgICAgZGVmIF9nZXRfbG9jYWxOYW1lKHNlbGYpOgotICAgICAgICBpZiAnbG9jYWxOYW1lJyBpbiBzZWxmLl9fZGljdF9fOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X19bJ2xvY2FsTmFtZSddCi0gICAgICAgIHJldHVybiBzZWxmLm5vZGVOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubm9kZU5hbWUuc3BsaXQoIjoiLCAxKVstMV0KIAogICAgIGRlZiBfZ2V0X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm5hbWUKQEAgLTM3NSwyMCArMzc1LDMwIEBACiAgICAgZGVmIF9nZXRfc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5zcGVjaWZpZWQKIAotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGlmIG5hbWUgaW4gKCJ2YWx1ZSIsICJub2RlVmFsdWUiKToKLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBkMiA9IHNlbGYuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgZDJbImRhdGEiXSA9IGQyWyJub2RlVmFsdWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIGVsaWYgbmFtZSBpbiAoIm5hbWUiLCAibm9kZU5hbWUiKToKLSAgICAgICAgICAgIGRbIm5hbWUiXSA9IGRbIm5vZGVOYW1lIl0gPSB2YWx1ZQotICAgICAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZFtuYW1lXSA9IHZhbHVlCisgICAgZGVmIF9nZXRfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBfc2V0X25hbWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9uYW1lID0gdmFsdWUKKyAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCisKKyAgICBub2RlTmFtZSA9IG5hbWUgPSBwcm9wZXJ0eShfZ2V0X25hbWUsIF9zZXRfbmFtZSkKKworICAgIGRlZiBfZ2V0X3ZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKKworICAgIGRlZiBfc2V0X3ZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fdmFsdWUgPSB2YWx1ZQorICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQorICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisKKyAgICBub2RlVmFsdWUgPSB2YWx1ZSA9IHByb3BlcnR5KF9nZXRfdmFsdWUsIF9zZXRfdmFsdWUpCisKKyAgICBkZWYgX2dldF9wcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXgKIAogICAgIGRlZiBfc2V0X3ByZWZpeChzZWxmLCBwcmVmaXgpOgogICAgICAgICBuc3VyaSA9IHNlbGYubmFtZXNwYWNlVVJJCkBAIC0zOTYsMjIgKzQwNiwxNiBAQAogICAgICAgICAgICAgaWYgbnN1cmkgYW5kIG5zdXJpICE9IFhNTE5TX05BTUVTUEFDRToKICAgICAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5hbWVzcGFjZUVycigKICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgdXNlIG9mICd4bWxucycgcHJlZml4IGZvciB0aGUgd3JvbmcgbmFtZXNwYWNlIikKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsncHJlZml4J10gPSBwcmVmaXgKKyAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CiAgICAgICAgIGlmIHByZWZpeCBpcyBOb25lOgogICAgICAgICAgICAgbmV3TmFtZSA9IHNlbGYubG9jYWxOYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuZXdOYW1lID0gIiVzOiVzIiAlIChwcmVmaXgsIHNlbGYubG9jYWxOYW1lKQogICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudDoKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgZFsnbm9kZU5hbWUnXSA9IGRbJ25hbWUnXSA9IG5ld05hbWUKKyAgICAgICAgc2VsZi5uYW1lID0gbmV3TmFtZQogCi0gICAgZGVmIF9zZXRfdmFsdWUoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyd2YWx1ZSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudDoKLSAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgc2VsZi5jaGlsZE5vZGVzWzBdLmRhdGEgPSB2YWx1ZQorICAgIHByZWZpeCA9IHByb3BlcnR5KF9nZXRfcHJlZml4LCBfc2V0X3ByZWZpeCkKIAogICAgIGRlZiB1bmxpbmsoc2VsZik6CiAgICAgICAgICMgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjYWxsIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uCkBAIC01ODYsOCArNTkwLDggQEAKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc05TWyhuLm5hbWVzcGFjZVVSSSwgbi5sb2NhbE5hbWUpXQotICAgICAgICAgICAgaWYgJ293bmVyRWxlbWVudCcgaW4gbi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICBuLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IE5vbmUKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobiwgJ293bmVyRWxlbWVudCcpOgorICAgICAgICAgICAgICAgIG4ub3duZXJFbGVtZW50ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQpAQCAtNTk4LDggKzYwMiw4IEBACiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5fb3duZXJFbGVtZW50KQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzTlNbKG4ubmFtZXNwYWNlVVJJLCBuLmxvY2FsTmFtZSldCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNbbi5ub2RlTmFtZV0KLSAgICAgICAgICAgIGlmICdvd25lckVsZW1lbnQnIGluIG4uX19kaWN0X186Ci0gICAgICAgICAgICAgICAgbi5fX2RpY3RfX1snb3duZXJFbGVtZW50J10gPSBOb25lCisgICAgICAgICAgICBpZiBoYXNhdHRyKG4sICdvd25lckVsZW1lbnQnKToKKyAgICAgICAgICAgICAgICBuLm93bmVyRWxlbWVudCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiBuCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKQEAgLTY1OSw2ICs2NjMsOSBAQAogX25vX3R5cGUgPSBUeXBlSW5mbyhOb25lLCBOb25lKQogCiBjbGFzcyBFbGVtZW50KE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ293bmVyRG9jdW1lbnQnLCAncGFyZW50Tm9kZScsICd0YWdOYW1lJywgJ25vZGVOYW1lJywgJ3ByZWZpeCcsCisgICAgICAgICAgICAgICAnbmFtZXNwYWNlVVJJJywgJ19sb2NhbE5hbWUnLCAnY2hpbGROb2RlcycsICdfYXR0cnMnLCAnX2F0dHJzTlMnLAorICAgICAgICAgICAgICAgJ25leHRTaWJsaW5nJywgJ3ByZXZpb3VzU2libGluZycpCiAgICAgbm9kZVR5cGUgPSBOb2RlLkVMRU1FTlRfTk9ERQogICAgIG5vZGVWYWx1ZSA9IE5vbmUKICAgICBzY2hlbWFUeXBlID0gX25vX3R5cGUKQEAgLTY3NCw0MSArNjgxLDU3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgcHJlZml4PU5vbmUsCiAgICAgICAgICAgICAgICAgIGxvY2FsTmFtZT1Ob25lKToKKyAgICAgICAgc2VsZi5wYXJlbnROb2RlID0gTm9uZQogICAgICAgICBzZWxmLnRhZ05hbWUgPSBzZWxmLm5vZGVOYW1lID0gdGFnTmFtZQogICAgICAgICBzZWxmLnByZWZpeCA9IHByZWZpeAogICAgICAgICBzZWxmLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQogICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCisgICAgICAgIHNlbGYubmV4dFNpYmxpbmcgPSBzZWxmLnByZXZpb3VzU2libGluZyA9IE5vbmUKIAotICAgICAgICBzZWxmLl9hdHRycyA9IHt9ICAgIyBhdHRyaWJ1dGVzIGFyZSBkb3VibGUtaW5kZXhlZDoKLSAgICAgICAgc2VsZi5fYXR0cnNOUyA9IHt9ICMgICAgdGFnTmFtZSAtPiBBdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgVVJJLGxvY2FsTmFtZSAtPiBBdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdGhlIGZ1dHVyZTogY29uc2lkZXIgbGF6eSBnZW5lcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9mIGF0dHJpYnV0ZSBvYmplY3RzIHRoaXMgaXMgdG9vIHRyaWNreQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3Igbm93IGJlY2F1c2Ugb2YgaGVhZGFjaGVzIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbmFtZXNwYWNlcy4KKyAgICAgICAgIyBBdHRyaWJ1dGUgZGljdGlvbmFyaWVzIGFyZSBsYXppbHkgY3JlYXRlZAorICAgICAgICAjIGF0dHJpYnV0ZXMgYXJlIGRvdWJsZS1pbmRleGVkOgorICAgICAgICAjICAgIHRhZ05hbWUgLT4gQXR0cmlidXRlCisgICAgICAgICMgICAgVVJJLGxvY2FsTmFtZSAtPiBBdHRyaWJ1dGUKKyAgICAgICAgIyBpbiB0aGUgZnV0dXJlOiBjb25zaWRlciBsYXp5IGdlbmVyYXRpb24KKyAgICAgICAgIyBvZiBhdHRyaWJ1dGUgb2JqZWN0cyB0aGlzIGlzIHRvbyB0cmlja3kKKyAgICAgICAgIyBmb3Igbm93IGJlY2F1c2Ugb2YgaGVhZGFjaGVzIHdpdGgKKyAgICAgICAgIyBuYW1lc3BhY2VzLgorICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKKyAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKKworICAgIGRlZiBfZW5zdXJlX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9hdHRycyA9IHt9CisgICAgICAgICAgICBzZWxmLl9hdHRyc05TID0ge30KIAogICAgIGRlZiBfZ2V0X2xvY2FsTmFtZShzZWxmKToKLSAgICAgICAgaWYgJ2xvY2FsTmFtZScgaW4gc2VsZi5fX2RpY3RfXzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fWydsb2NhbE5hbWUnXQotICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2NhbE5hbWUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQogCiAgICAgZGVmIF9nZXRfdGFnTmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFnTmFtZQogCiAgICAgZGVmIHVubGluayhzZWxmKToKLSAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6Ci0gICAgICAgICAgICBhdHRyLnVubGluaygpCisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gbGlzdChzZWxmLl9hdHRycy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgICAgYXR0ci51bmxpbmsoKQogICAgICAgICBzZWxmLl9hdHRycyA9IE5vbmUKICAgICAgICAgc2VsZi5fYXR0cnNOUyA9IE5vbmUKICAgICAgICAgTm9kZS51bmxpbmsoc2VsZikKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGUoc2VsZiwgYXR0bmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzW2F0dG5hbWVdLnZhbHVlCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAiIgogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TWyhuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSldLnZhbHVlCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTcxOCwxNCArNzQxLDExIEBACiAgICAgICAgIGF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGUoYXR0bmFtZSkKICAgICAgICAgaWYgYXR0ciBpcyBOb25lOgogICAgICAgICAgICAgYXR0ciA9IEF0dHIoYXR0bmFtZSkKLSAgICAgICAgICAgICMgZm9yIHBlcmZvcm1hbmNlCi0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGRbIm93bmVyRG9jdW1lbnQiXSA9IHNlbGYub3duZXJEb2N1bWVudAorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlICMgYWxzbyBzZXRzIG5vZGVWYWx1ZQorICAgICAgICAgICAgYXR0ci5vd25lckRvY3VtZW50ID0gc2VsZi5vd25lckRvY3VtZW50CiAgICAgICAgICAgICBzZWxmLnNldEF0dHJpYnV0ZU5vZGUoYXR0cikKICAgICAgICAgZWxpZiB2YWx1ZSAhPSBhdHRyLnZhbHVlOgotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInZhbHVlIl0gPSBkWyJub2RlVmFsdWUiXSA9IHZhbHVlCisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgIGlmIGF0dHIuaXNJZDoKICAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKIApAQCAtNzMzLDMzICs3NTMsMzMgQEAKICAgICAgICAgcHJlZml4LCBsb2NhbG5hbWUgPSBfbnNzcGxpdChxdWFsaWZpZWROYW1lKQogICAgICAgICBhdHRyID0gc2VsZi5nZXRBdHRyaWJ1dGVOb2RlTlMobmFtZXNwYWNlVVJJLCBsb2NhbG5hbWUpCiAgICAgICAgIGlmIGF0dHIgaXMgTm9uZToKLSAgICAgICAgICAgICMgZm9yIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICBhdHRyID0gQXR0cihxdWFsaWZpZWROYW1lLCBuYW1lc3BhY2VVUkksIGxvY2FsbmFtZSwgcHJlZml4KQotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KLSAgICAgICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgICAgICBkWyJub2RlTmFtZSJdID0gcXVhbGlmaWVkTmFtZQotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGRbIm93bmVyRG9jdW1lbnQiXSA9IHNlbGYub3duZXJEb2N1bWVudAorICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICBhdHRyLm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICAgICAgIHNlbGYuc2V0QXR0cmlidXRlTm9kZShhdHRyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZCA9IGF0dHIuX19kaWN0X18KICAgICAgICAgICAgIGlmIHZhbHVlICE9IGF0dHIudmFsdWU6Ci0gICAgICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKKyAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKICAgICAgICAgICAgICAgICBpZiBhdHRyLmlzSWQ6CiAgICAgICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogICAgICAgICAgICAgaWYgYXR0ci5wcmVmaXggIT0gcHJlZml4OgotICAgICAgICAgICAgICAgIGRbInByZWZpeCJdID0gcHJlZml4Ci0gICAgICAgICAgICAgICAgZFsibm9kZU5hbWUiXSA9IHF1YWxpZmllZE5hbWUKKyAgICAgICAgICAgICAgICBhdHRyLnByZWZpeCA9IHByZWZpeAorICAgICAgICAgICAgICAgIGF0dHIubm9kZU5hbWUgPSBxdWFsaWZpZWROYW1lCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRybmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnMuZ2V0KGF0dHJuYW1lKQogCiAgICAgZGVmIGdldEF0dHJpYnV0ZU5vZGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TLmdldCgobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpKQogCiAgICAgZGVmIHNldEF0dHJpYnV0ZU5vZGUoc2VsZiwgYXR0cik6CiAgICAgICAgIGlmIGF0dHIub3duZXJFbGVtZW50IG5vdCBpbiAoTm9uZSwgc2VsZik6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLkludXNlQXR0cmlidXRlRXJyKCJhdHRyaWJ1dGUgbm9kZSBhbHJlYWR5IG93bmVkIikKKyAgICAgICAgc2VsZi5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICBvbGQxID0gc2VsZi5fYXR0cnMuZ2V0KGF0dHIubmFtZSwgTm9uZSkKICAgICAgICAgaWYgb2xkMSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYucmVtb3ZlQXR0cmlidXRlTm9kZShvbGQxKQpAQCAtNzc4LDYgKzc5OCw4IEBACiAgICAgc2V0QXR0cmlidXRlTm9kZU5TID0gc2V0QXR0cmlidXRlTm9kZQogCiAgICAgZGVmIHJlbW92ZUF0dHJpYnV0ZShzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGF0dHIgPSBzZWxmLl9hdHRyc1tuYW1lXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC03ODUsNiArODA3LDggQEAKICAgICAgICAgc2VsZi5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHIpCiAKICAgICBkZWYgcmVtb3ZlQXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYXR0ciA9IHNlbGYuX2F0dHJzTlNbKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKV0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtODA3LDkgKzgzMSwxMyBAQAogICAgIHJlbW92ZUF0dHJpYnV0ZU5vZGVOUyA9IHJlbW92ZUF0dHJpYnV0ZU5vZGUKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5fYXR0cnMKIAogICAgIGRlZiBoYXNBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSBpbiBzZWxmLl9hdHRyc05TCiAKICAgICBkZWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoc2VsZiwgbmFtZSk6CkBAIC04NTAsNiArODc4LDcgQEAKICAgICAgICAgICAgIHdyaXRlci53cml0ZSgiLz4lcyIlKG5ld2wpKQogCiAgICAgZGVmIF9nZXRfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX2F0dHJpYnV0ZXMoKQogICAgICAgICByZXR1cm4gTmFtZWROb2RlTWFwKHNlbGYuX2F0dHJzLCBzZWxmLl9hdHRyc05TLCBzZWxmKQogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZXMoc2VsZik6CkBAIC04NzQsNyArOTAzLDcgQEAKICAgICAgICAgaWYgX2dldF9jb250YWluaW5nX2VudHJlZihzZWxmKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyKCkKICAgICAgICAgaWYgbm90IGlkQXR0ci5faXNfaWQ6Ci0gICAgICAgICAgICBpZEF0dHIuX19kaWN0X19bJ19pc19pZCddID0gVHJ1ZQorICAgICAgICAgICAgaWRBdHRyLl9pc19pZCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21hZ2ljX2lkX25vZGVzICs9IDEKICAgICAgICAgICAgIHNlbGYub3duZXJEb2N1bWVudC5fbWFnaWNfaWRfY291bnQgKz0gMQogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCkBAIC04ODcsMTkgKzkxNiwyMCBAQAogCiBkZWYgX3NldF9hdHRyaWJ1dGVfbm9kZShlbGVtZW50LCBhdHRyKToKICAgICBfY2xlYXJfaWRfY2FjaGUoZWxlbWVudCkKKyAgICBlbGVtZW50Ll9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgZWxlbWVudC5fYXR0cnNbYXR0ci5uYW1lXSA9IGF0dHIKICAgICBlbGVtZW50Ll9hdHRyc05TWyhhdHRyLm5hbWVzcGFjZVVSSSwgYXR0ci5sb2NhbE5hbWUpXSA9IGF0dHIKIAogICAgICMgVGhpcyBjcmVhdGVzIGEgY2lyY3VsYXIgcmVmZXJlbmNlLCBidXQgRWxlbWVudC51bmxpbmsoKQogICAgICMgYnJlYWtzIHRoZSBjeWNsZSBzaW5jZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgYXR0cmlidXRlCiAgICAgIyBkaWN0aW9uYXJpZXMgYXJlIHRvc3NlZC4KLSAgICBhdHRyLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IGVsZW1lbnQKLQorICAgIGF0dHIub3duZXJFbGVtZW50ID0gZWxlbWVudAogCiBjbGFzcyBDaGlsZGxlc3M6CiAgICAgIiIiTWl4aW4gdGhhdCBtYWtlcyBjaGlsZGxlc3MtbmVzcyBlYXN5IHRvIGltcGxlbWVudCBhbmQgYXZvaWRzCiAgICAgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIE5vZGUgbWV0aG9kcyB0aGF0IGRlYWwgd2l0aCBjaGlsZHJlbi4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKICAgICBjaGlsZE5vZGVzID0gRW1wdHlOb2RlTGlzdCgpCkBAIC05MzgsNTQgKzk2OCw0OSBAQAogCiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oQ2hpbGRsZXNzLCBOb2RlKToKICAgICBub2RlVHlwZSA9IE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFCisgICAgX19zbG90c19fID0gKCd0YXJnZXQnLCAnZGF0YScpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLm5vZGVOYW1lID0gdGFyZ2V0Ci0gICAgICAgIHNlbGYuZGF0YSA9IHNlbGYubm9kZVZhbHVlID0gZGF0YQorICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCiAKLSAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgorICAgICMgbm9kZVZhbHVlIGlzIGFuIGFsaWFzIGZvciBkYXRhCisgICAgZGVmIF9nZXRfbm9kZVZhbHVlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhCi0gICAgZGVmIF9zZXRfZGF0YShzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKKyAgICBkZWYgX3NldF9ub2RlVmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisgICAgbm9kZVZhbHVlID0gcHJvcGVydHkoX2dldF9ub2RlVmFsdWUsIF9zZXRfbm9kZVZhbHVlKQogCi0gICAgZGVmIF9nZXRfdGFyZ2V0KHNlbGYpOgorICAgICMgbm9kZU5hbWUgaXMgYW4gYWxpYXMgZm9yIHRhcmdldAorICAgIGRlZiBfZ2V0X25vZGVOYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQKLSAgICBkZWYgX3NldF90YXJnZXQoc2VsZiwgdmFsdWUpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWyd0YXJnZXQnXSA9IGRbJ25vZGVOYW1lJ10gPSB2YWx1ZQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgbmFtZSA9PSAiZGF0YSIgb3IgbmFtZSA9PSAibm9kZVZhbHVlIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ2RhdGEnXSA9IHNlbGYuX19kaWN0X19bJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgZWxpZiBuYW1lID09ICJ0YXJnZXQiIG9yIG5hbWUgPT0gIm5vZGVOYW1lIjoKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bJ3RhcmdldCddID0gc2VsZi5fX2RpY3RfX1snbm9kZU5hbWUnXSA9IHZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gdmFsdWUKKyAgICBkZWYgX3NldF9ub2RlTmFtZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudGFyZ2V0ID0gdmFsdWUKKyAgICBub2RlTmFtZSA9IHByb3BlcnR5KF9nZXRfbm9kZU5hbWUsIF9zZXRfbm9kZU5hbWUpCiAKICAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIik6CiAgICAgICAgIHdyaXRlci53cml0ZSgiJXM8PyVzICVzPz4lcyIgJSAoaW5kZW50LHNlbGYudGFyZ2V0LCBzZWxmLmRhdGEsIG5ld2wpKQogCiAKIGNsYXNzIENoYXJhY3RlckRhdGEoQ2hpbGRsZXNzLCBOb2RlKToKKyAgICBfX3Nsb3RzX189KCdfZGF0YScsICdvd25lckRvY3VtZW50JywncGFyZW50Tm9kZScsICdwcmV2aW91c1NpYmxpbmcnLCAnbmV4dFNpYmxpbmcnKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLm93bmVyRG9jdW1lbnQgPSBzZWxmLnBhcmVudE5vZGUgPSBOb25lCisgICAgICAgIHNlbGYucHJldmlvdXNTaWJsaW5nID0gc2VsZi5uZXh0U2libGluZyA9IE5vbmUKKyAgICAgICAgc2VsZi5fZGF0YSA9ICcnCisgICAgICAgIE5vZGUuX19pbml0X18oc2VsZikKKwogICAgIGRlZiBfZ2V0X2xlbmd0aChzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCiAgICAgX19sZW5fXyA9IF9nZXRfbGVuZ3RoCiAKICAgICBkZWYgX2dldF9kYXRhKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1snZGF0YSddCisgICAgICAgIHJldHVybiBzZWxmLl9kYXRhCiAgICAgZGVmIF9zZXRfZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBkYXRhCisgICAgICAgIHNlbGYuX2RhdGEgPSBkYXRhCiAKLSAgICBfZ2V0X25vZGVWYWx1ZSA9IF9nZXRfZGF0YQotICAgIF9zZXRfbm9kZVZhbHVlID0gX3NldF9kYXRhCi0KLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBuYW1lID09ICJkYXRhIiBvciBuYW1lID09ICJub2RlVmFsdWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1snZGF0YSddID0gc2VsZi5fX2RpY3RfX1snbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tuYW1lXSA9IHZhbHVlCisgICAgZGF0YSA9IG5vZGVWYWx1ZSA9IHByb3BlcnR5KF9nZXRfZGF0YSwgX3NldF9kYXRhKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICBkYXRhID0gc2VsZi5kYXRhCkBAIC0xMDQyLDEwICsxMDY3LDcgQEAKIAogCiBjbGFzcyBUZXh0KENoYXJhY3RlckRhdGEpOgotICAgICMgTWFrZSBzdXJlIHdlIGRvbid0IGFkZCBhbiBpbnN0YW5jZSBfX2RpY3RfXyBpZiB3ZSBkb24ndCBhbHJlYWR5Ci0gICAgIyBoYXZlIG9uZSwgYXQgbGVhc3Qgd2hlbiB0aGF0J3MgcG9zc2libGU6Ci0gICAgIyBYWFggdGhpcyBkb2VzIG5vdCB3b3JrLCBDaGFyYWN0ZXJEYXRhIGlzIGFuIG9sZC1zdHlsZSBjbGFzcwotICAgICMgX19zbG90c19fID0gKCkKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgbm9kZVR5cGUgPSBOb2RlLlRFWFRfTk9ERQogICAgIG5vZGVOYW1lID0gIiN0ZXh0IgpAQCAtMTExMiw5ICsxMTM0LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgY29udGVudDoKLSAgICAgICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgICAgICBkWydkYXRhJ10gPSBjb250ZW50Ci0gICAgICAgICAgICBkWydub2RlVmFsdWUnXSA9IGNvbnRlbnQKKyAgICAgICAgICAgIHNlbGYuZGF0YSA9IGNvbnRlbnQKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtMTE2MCw3ICsxMTgwLDggQEAKICAgICBub2RlTmFtZSA9ICIjY29tbWVudCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5ub2RlVmFsdWUgPSBkYXRhCisgICAgICAgIENoYXJhY3RlckRhdGEuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKIAogICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICAgaWYgIi0tIiBpbiBzZWxmLmRhdGE6CkBAIC0xMTY5LDEwICsxMTkwLDcgQEAKIAogCiBjbGFzcyBDREFUQVNlY3Rpb24oVGV4dCk6Ci0gICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGFuIGluc3RhbmNlIF9fZGljdF9fIGlmIHdlIGRvbid0IGFscmVhZHkKLSAgICAjIGhhdmUgb25lLCBhdCBsZWFzdCB3aGVuIHRoYXQncyBwb3NzaWJsZToKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIFRleHQgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAoKQorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBub2RlVHlwZSA9IE5vZGUuQ0RBVEFfU0VDVElPTl9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI2NkYXRhLXNlY3Rpb24iCkBAIC0xMjUyLDggKzEyNzAsNyBAQAogY2xhc3MgSWRlbnRpZmllZDoKICAgICAiIiJNaXgtaW4gY2xhc3MgdGhhdCBzdXBwb3J0cyB0aGUgcHVibGljSWQgYW5kIHN5c3RlbUlkIGF0dHJpYnV0ZXMuIiIiCiAKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIHRoaXMgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAncHVibGljSWQnLCAnc3lzdGVtSWQnCisgICAgX19zbG90c19fID0gJ3B1YmxpY0lkJywgJ3N5c3RlbUlkJwogCiAgICAgZGVmIF9pZGVudGlmaWVkX21peGluX2luaXQoc2VsZiwgcHVibGljSWQsIHN5c3RlbUlkKToKICAgICAgICAgc2VsZi5wdWJsaWNJZCA9IHB1YmxpY0lkCkBAIC0xNTA0LDE4ICsxNTIxLDE5IEBACiAgICAgICAgIG5vZGUub3duZXJEb2N1bWVudC5faWRfc2VhcmNoX3N0YWNrPSBOb25lCiAKIGNsYXNzIERvY3VtZW50KE5vZGUsIERvY3VtZW50TFMpOgorICAgIF9fc2xvdHNfXyA9ICgnX2VsZW1faW5mbycsICdkb2N0eXBlJywKKyAgICAgICAgICAgICAgICAgJ19pZF9zZWFyY2hfc3RhY2snLCAnY2hpbGROb2RlcycsICdfaWRfY2FjaGUnKQogICAgIF9jaGlsZF9ub2RlX3R5cGVzID0gKE5vZGUuRUxFTUVOVF9OT0RFLCBOb2RlLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlLkNPTU1FTlRfTk9ERSwgTm9kZS5ET0NVTUVOVF9UWVBFX05PREUpCiAKKyAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKICAgICBub2RlVHlwZSA9IE5vZGUuRE9DVU1FTlRfTk9ERQogICAgIG5vZGVOYW1lID0gIiNkb2N1bWVudCIKICAgICBub2RlVmFsdWUgPSBOb25lCiAgICAgYXR0cmlidXRlcyA9IE5vbmUKLSAgICBkb2N0eXBlID0gTm9uZQogICAgIHBhcmVudE5vZGUgPSBOb25lCiAgICAgcHJldmlvdXNTaWJsaW5nID0gbmV4dFNpYmxpbmcgPSBOb25lCiAKLSAgICBpbXBsZW1lbnRhdGlvbiA9IERPTUltcGxlbWVudGF0aW9uKCkKIAogICAgICMgRG9jdW1lbnQgYXR0cmlidXRlcyBmcm9tIExldmVsIDMgKFdEIDkgQXByaWwgMjAwMikKIApAQCAtMTUzMCw2ICsxNTQ4LDcgQEAKICAgICBfbWFnaWNfaWRfY291bnQgPSAwCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuZG9jdHlwZSA9IE5vbmUKICAgICAgICAgc2VsZi5jaGlsZE5vZGVzID0gTm9kZUxpc3QoKQogICAgICAgICAjIG1hcHBpbmcgb2YgKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKSAtPiBFbGVtZW50SW5mbwogICAgICAgICAjICAgICAgICBhbmQgdGFnTmFtZSAtPiBFbGVtZW50SW5mbwpAQCAtMTc3MSwxMiArMTc5MCwxMiBAQAogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoImNhbm5vdCBpbXBvcnQgZG9jdW1lbnQgdHlwZSBub2RlcyIpCiAgICAgICAgIHJldHVybiBfY2xvbmVfbm9kZShub2RlLCBkZWVwLCBzZWxmKQogCi0gICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIsCi0gICAgICAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZSk6CisgICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgogICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JytuZXdsKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgd3JpdGVyLndyaXRlKCc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSIlcyI/PiVzJyAlIChlbmNvZGluZywgbmV3bCkpCisgICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiVzIj8+JXMnICUgKAorICAgICAgICAgICAgICAgIGVuY29kaW5nLCBuZXdsKSkKICAgICAgICAgZm9yIG5vZGUgaW4gc2VsZi5jaGlsZE5vZGVzOgogICAgICAgICAgICAgbm9kZS53cml0ZXhtbCh3cml0ZXIsIGluZGVudCwgYWRkaW5kZW50LCBuZXdsKQogCkBAIC0xODE1LDE3ICsxODM0LDE1IEBACiAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbGVtZW50ID0gTm9uZQotICAgICAgICAjIGF2b2lkIF9fc2V0YXR0cl9fCi0gICAgICAgIGQgPSBuLl9fZGljdF9fCi0gICAgICAgIGRbJ3ByZWZpeCddID0gcHJlZml4Ci0gICAgICAgIGRbJ2xvY2FsTmFtZSddID0gbG9jYWxOYW1lCi0gICAgICAgIGRbJ25hbWVzcGFjZVVSSSddID0gbmFtZXNwYWNlVVJJCi0gICAgICAgIGRbJ25vZGVOYW1lJ10gPSBuYW1lCisgICAgICAgIG4ucHJlZml4ID0gcHJlZml4CisgICAgICAgIG4uX2xvY2FsTmFtZSA9IGxvY2FsTmFtZQorICAgICAgICBuLm5hbWVzcGFjZVVSSSA9IG5hbWVzcGFjZVVSSQorICAgICAgICBuLm5vZGVOYW1lID0gbmFtZQogICAgICAgICBpZiBuLm5vZGVUeXBlID09IE5vZGUuRUxFTUVOVF9OT0RFOgotICAgICAgICAgICAgZFsndGFnTmFtZSddID0gbmFtZQorICAgICAgICAgICAgbi50YWdOYW1lID0gbmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBhdHRyaWJ1dGUgbm9kZQotICAgICAgICAgICAgZFsnbmFtZSddID0gbmFtZQorICAgICAgICAgICAgbi5uYW1lID0gbmFtZQogICAgICAgICAgICAgaWYgZWxlbWVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5vZGUobikKICAgICAgICAgICAgICAgICBpZiBpc19pZDoKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL3B1bGxkb20ucHkgYi9MaWIveG1sL2RvbS9wdWxsZG9tLnB5CmluZGV4IGQ1YWM4YjIuLjQzNTA0ZjcgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL3B1bGxkb20ucHkKKysrIGIvTGliL3htbC9kb20vcHVsbGRvbS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB4bWwuc2F4CiBpbXBvcnQgeG1sLnNheC5oYW5kbGVyCi1pbXBvcnQgdHlwZXMKIAogU1RBUlRfRUxFTUVOVCA9ICJTVEFSVF9FTEVNRU5UIgogRU5EX0VMRU1FTlQgPSAiRU5EX0VMRU1FTlQiCkBAIC0zMzQsMTAgKzMzMyw3IEBACiAgICAgcmV0dXJuIERPTUV2ZW50U3RyZWFtKHN0cmVhbSwgcGFyc2VyLCBidWZzaXplKQogCiBkZWYgcGFyc2VTdHJpbmcoc3RyaW5nLCBwYXJzZXI9Tm9uZSk6Ci0gICAgdHJ5OgotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCiAgICAgYnVmc2l6ZSA9IGxlbihzdHJpbmcpCiAgICAgYnVmID0gU3RyaW5nSU8oc3RyaW5nKQpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggOTc0MmYzMi4uYjlkOGRmNiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC02OCw4ICs2OCw5IEBACiAgICAgInRvc3RyaW5nIiwgInRvc3RyaW5nbGlzdCIsCiAgICAgIlRyZWVCdWlsZGVyIiwKICAgICAiVkVSU0lPTiIsCi0gICAgIlhNTCIsCisgICAgIlhNTCIsICJYTUxJRCIsCiAgICAgIlhNTFBhcnNlciIsICJYTUxUcmVlQnVpbGRlciIsCisgICAgInJlZ2lzdGVyX25hbWVzcGFjZSIsCiAgICAgXQogCiBWRVJTSU9OID0gIjEuMy4wIgpAQCAtOTksMzQgKzEwMCwxMSBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBpbworaW1wb3J0IGNvbnRleHRsaWIKIAorZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aAogCi1jbGFzcyBfU2ltcGxlRWxlbWVudFBhdGg6Ci0gICAgIyBlbXVsYXRlIHByZS0xLjIgZmluZC9maW5kdGV4dC9maW5kYWxsIGJlaGF2aW91cgotICAgIGRlZiBmaW5kKHNlbGYsIGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID09IHRhZzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbQotICAgICAgICByZXR1cm4gTm9uZQotICAgIGRlZiBmaW5kdGV4dChzZWxmLCBlbGVtZW50LCB0YWcsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKToKLSAgICAgICAgZWxlbSA9IHNlbGYuZmluZChlbGVtZW50LCB0YWcpCi0gICAgICAgIGlmIGVsZW0gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgIHJldHVybiBlbGVtLnRleHQgb3IgIiIKLSAgICBkZWYgaXRlcmZpbmQoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBpZiB0YWdbOjNdID09ICIuLy8iOgotICAgICAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudC5pdGVyKHRhZ1szOl0pOgotICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KLSAgICAgICAgZm9yIGVsZW0gaW4gZWxlbWVudDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID09IHRhZzoKLSAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCi0gICAgZGVmIGZpbmRhbGwoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJmaW5kKGVsZW1lbnQsIHRhZywgbmFtZXNwYWNlcykpCi0KLXRyeToKLSAgICBmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgRWxlbWVudFBhdGggPSBfU2ltcGxlRWxlbWVudFBhdGgoKQogCiAjIwogIyBQYXJzZXIgZXJyb3IuICBUaGlzIGlzIGEgc3ViY2xhc3Mgb2YgPGI+U3ludGF4RXJyb3I8L2I+LgpAQCAtMTQ4LDkgKzEyNiw5IEBACiAjIEBkZWZyZXR1cm4gZmxhZwogCiBkZWYgaXNlbGVtZW50KGVsZW1lbnQpOgotICAgICMgRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXM7IG1pZ2h0IGJlIGEgYmV0dGVyIGlkZWEgdG8gbG9vawotICAgICMgZm9yIHRhZy9hdHRyaWIvdGV4dCBhdHRyaWJ1dGVzCi0gICAgcmV0dXJuIGlzaW5zdGFuY2UoZWxlbWVudCwgRWxlbWVudCkgb3IgaGFzYXR0cihlbGVtZW50LCAidGFnIikKKyAgICAjIEZJWE1FOiBub3Qgc3VyZSBhYm91dCB0aGlzOworICAgICMgaXNpbnN0YW5jZShlbGVtZW50LCBFbGVtZW50KSBvciBsb29rIGZvciB0YWcvYXR0cmliL3RleHQgYXR0cmlidXRlcworICAgIHJldHVybiBoYXNhdHRyKGVsZW1lbnQsICd0YWcnKQogCiAjIwogIyBFbGVtZW50IGNsYXNzLiAgVGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBFbGVtZW50IGludGVyZmFjZSwgYW5kCkBAIC0yMDUsNiArMTgzLDkgQEAKICAgICAjIGNvbnN0cnVjdG9yCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnLCBhdHRyaWI9e30sICoqZXh0cmEpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyaWIsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhdHRyaWIgbXVzdCBiZSBkaWN0LCBub3QgJXMiICUgKAorICAgICAgICAgICAgICAgIGF0dHJpYi5fX2NsYXNzX18uX19uYW1lX18sKSkKICAgICAgICAgYXR0cmliID0gYXR0cmliLmNvcHkoKQogICAgICAgICBhdHRyaWIudXBkYXRlKGV4dHJhKQogICAgICAgICBzZWxmLnRhZyA9IHRhZwpAQCAtMjk4LDcgKzI3OSw3IEBACiAgICAgIyBAcGFyYW0gZWxlbWVudCBUaGUgZWxlbWVudCB0byBhZGQuCiAKICAgICBkZWYgYXBwZW5kKHNlbGYsIGVsZW1lbnQpOgotICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uYXBwZW5kKGVsZW1lbnQpCiAKICAgICAjIwpAQCAtMzA4LDggKzI4OSw4IEBACiAgICAgIyBAc2luY2UgMS4zCiAKICAgICBkZWYgZXh0ZW5kKHNlbGYsIGVsZW1lbnRzKToKLSAgICAgICAgIyBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKLSAgICAgICAgIyAgICAgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBmb3IgZWxlbWVudCBpbiBlbGVtZW50czoKKyAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgIHNlbGYuX2NoaWxkcmVuLmV4dGVuZChlbGVtZW50cykKIAogICAgICMjCkBAIC0zMTgsOSArMjk5LDEzIEBACiAgICAgIyBAcGFyYW0gaW5kZXggV2hlcmUgdG8gaW5zZXJ0IHRoZSBuZXcgc3ViZWxlbWVudC4KIAogICAgIGRlZiBpbnNlcnQoc2VsZiwgaW5kZXgsIGVsZW1lbnQpOgotICAgICAgICAjIGFzc2VydCBpc2VsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uaW5zZXJ0KGluZGV4LCBlbGVtZW50KQogCisgICAgZGVmIF9hc3NlcnRfaXNfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgRWxlbWVudCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2V4cGVjdGVkIGFuIEVsZW1lbnQsIG5vdCAlcycgJSB0eXBlKGUpLl9fbmFtZV9fKQorCiAgICAgIyMKICAgICAjIFJlbW92ZXMgYSBtYXRjaGluZyBzdWJlbGVtZW50LiAgVW5saWtlIHRoZSA8Yj5maW5kPC9iPiBtZXRob2RzLAogICAgICMgdGhpcyBtZXRob2QgY29tcGFyZXMgZWxlbWVudHMgYmFzZWQgb24gaWRlbnRpdHksIG5vdCBvbiB0YWcKQEAgLTgwOSw1OSArNzk0LDM4IEBACiAgICAgIyAgICAgTm9uZSBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZS4gIE5vbmUgaXMgZGVmYXVsdC4KIAogICAgIGRlZiB3cml0ZShzZWxmLCBmaWxlX29yX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsCiAgICAgICAgICAgICAgIHhtbF9kZWNsYXJhdGlvbj1Ob25lLAogICAgICAgICAgICAgICBkZWZhdWx0X25hbWVzcGFjZT1Ob25lLAogICAgICAgICAgICAgICBtZXRob2Q9Tm9uZSk6Ci0gICAgICAgICMgYXNzZXJ0IHNlbGYuX3Jvb3QgaXMgbm90IE5vbmUKICAgICAgICAgaWYgbm90IG1ldGhvZDoKICAgICAgICAgICAgIG1ldGhvZCA9ICJ4bWwiCiAgICAgICAgIGVsaWYgbWV0aG9kIG5vdCBpbiBfc2VyaWFsaXplOgotICAgICAgICAgICAgIyBGSVhNRTogcmFpc2UgYW4gSW1wb3J0RXJyb3IgZm9yIGMxNG4gaWYgRWxlbWVudEMxNE4gaXMgbWlzc2luZz8KICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVua25vd24gbWV0aG9kICVyIiAlIG1ldGhvZCkKICAgICAgICAgaWYgbm90IGVuY29kaW5nOgogICAgICAgICAgICAgaWYgbWV0aG9kID09ICJjMTRuIjoKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAidXMtYXNjaWkiCi0gICAgICAgIGVsaWYgZW5jb2RpbmcgPT0gc3RyOiAgIyBseG1sLmV0cmVlIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICAgICBlbmNvZGluZyA9ICJ1bmljb2RlIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5sb3dlcigpCi0gICAgICAgIGlmIGhhc2F0dHIoZmlsZV9vcl9maWxlbmFtZSwgIndyaXRlIik6Ci0gICAgICAgICAgICBmaWxlID0gZmlsZV9vcl9maWxlbmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZW5jb2RpbmcgIT0gInVuaWNvZGUiOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3YiIpCisgICAgICAgIHdpdGggX2dldF93cml0ZXIoZmlsZV9vcl9maWxlbmFtZSwgZW5jb2RpbmcpIGFzIHdyaXRlOgorICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCisgICAgICAgICAgICAgICAgICAgICh4bWxfZGVjbGFyYXRpb24gaXMgTm9uZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nIG5vdCBpbiAoInV0Zi04IiwgInVzLWFzY2lpIiwgInVuaWNvZGUiKSkpOgorICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6CisgICAgICAgICAgICAgICAgICAgICMgUmV0cmlldmUgdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHRoZSB4bWwgZGVjbGFyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgICAgICAgICAgICAgICAgd3JpdGUoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iICUgKAorICAgICAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZywpKQorICAgICAgICAgICAgaWYgbWV0aG9kID09ICJ0ZXh0IjoKKyAgICAgICAgICAgICAgICBfc2VyaWFsaXplX3RleHQod3JpdGUsIHNlbGYuX3Jvb3QpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IikKLSAgICAgICAgaWYgZW5jb2RpbmcgIT0gInVuaWNvZGUiOgotICAgICAgICAgICAgZGVmIHdyaXRlKHRleHQpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGUud3JpdGUodGV4dC5lbmNvZGUoZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3cml0ZSA9IGZpbGUud3JpdGUKLSAgICAgICAgaWYgbWV0aG9kID09ICJ4bWwiIGFuZCAoeG1sX2RlY2xhcmF0aW9uIG9yCi0gICAgICAgICAgICAgICAgKHhtbF9kZWNsYXJhdGlvbiBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgICBlbmNvZGluZyBub3QgaW4gKCJ1dGYtOCIsICJ1cy1hc2NpaSIsICJ1bmljb2RlIikpKToKLSAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gZW5jb2RpbmcKLSAgICAgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKLSAgICAgICAgICAgICAgICAjIFJldHJpZXZlIHRoZSBkZWZhdWx0IGVuY29kaW5nIGZvciB0aGUgeG1sIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQotICAgICAgICAgICAgICAgIGRlY2xhcmVkX2VuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKLSAgICAgICAgICAgIHdyaXRlKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIiAlIGRlY2xhcmVkX2VuY29kaW5nKQotICAgICAgICBpZiBtZXRob2QgPT0gInRleHQiOgotICAgICAgICAgICAgX3NlcmlhbGl6ZV90ZXh0KHdyaXRlLCBzZWxmLl9yb290KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCi0gICAgICAgICAgICBzZXJpYWxpemUgPSBfc2VyaWFsaXplW21ldGhvZF0KLSAgICAgICAgICAgIHNlcmlhbGl6ZSh3cml0ZSwgc2VsZi5fcm9vdCwgcW5hbWVzLCBuYW1lc3BhY2VzKQotICAgICAgICBpZiBmaWxlX29yX2ZpbGVuYW1lIGlzIG5vdCBmaWxlOgotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgcW5hbWVzLCBuYW1lc3BhY2VzID0gX25hbWVzcGFjZXMoc2VsZi5fcm9vdCwgZGVmYXVsdF9uYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCisgICAgICAgICAgICAgICAgc2VyaWFsaXplKHdyaXRlLCBzZWxmLl9yb290LCBxbmFtZXMsIG5hbWVzcGFjZXMpCiAKICAgICBkZWYgd3JpdGVfYzE0bihzZWxmLCBmaWxlKToKICAgICAgICAgIyBseG1sLmV0cmVlIGNvbXBhdGliaWxpdHkuICB1c2Ugb3V0cHV0IG1ldGhvZCBpbnN0ZWFkCkBAIC04NzAsNiArODM0LDU4IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHNlcmlhbGl6YXRpb24gc3VwcG9ydAogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKToKKyAgICAjIHJldHVybnMgdGV4dCB3cml0ZSBtZXRob2QgYW5kIHJlbGVhc2UgYWxsIHJlc291cnNlcyBhZnRlciB1c2luZworICAgIHRyeToKKyAgICAgICAgd3JpdGUgPSBmaWxlX29yX2ZpbGVuYW1lLndyaXRlCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIGZpbGVfb3JfZmlsZW5hbWUgaXMgYSBmaWxlIG5hbWUKKyAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZV9vcl9maWxlbmFtZSwgInciLCBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiKQorICAgICAgICB3aXRoIGZpbGU6CisgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlCisgICAgZWxzZToKKyAgICAgICAgIyBmaWxlX29yX2ZpbGVuYW1lIGlzIGEgZmlsZS1saWtlIG9iamVjdAorICAgICAgICAjIGVuY29kaW5nIGRldGVybWluZXMgaWYgaXQgaXMgYSB0ZXh0IG9yIGJpbmFyeSB3cml0ZXIKKyAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgIyB1c2UgYSB0ZXh0IHdyaXRlciBhcyBpcworICAgICAgICAgICAgeWllbGQgd3JpdGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgd3JhcCBhIGJpbmFyeSB3cml0ZXIgd2l0aCBUZXh0SU9XcmFwcGVyCisgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5CdWZmZXJlZElPQmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBmaWxlX29yX2ZpbGVuYW1lCisgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVfb3JfZmlsZW5hbWUsIGlvLlJhd0lPQmFzZSk6CisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5CdWZmZXJlZFdyaXRlcihmaWxlX29yX2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBCdWZmZXJlZFdyaXRlciBpcworICAgICAgICAgICAgICAgICAgICAjIGRlc3Ryb3llZAorICAgICAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdG8gaGFuZGxlIHBhc3NlZCBvYmplY3RzIHRoYXQgYXJlbid0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAjIElPQmFzZSBoaWVyYXJjaHksIGJ1dCBqdXN0IGhhdmUgYSB3cml0ZSBtZXRob2QKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA9IGlvLkJ1ZmZlcmVkSU9CYXNlKCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0YWJsZSA9IGxhbWJkYTogVHJ1ZQorICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlID0gd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBUZXh0SU9XcmFwcGVyIHVzZXMgdGhpcyBtZXRob2RzIHRvIGRldGVybWluZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBCT00gKGZvciBVVEYtMTYsIGV0Yykgc2hvdWxkIGJlIGFkZGVkCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLnNlZWthYmxlID0gZmlsZV9vcl9maWxlbmFtZS5zZWVrYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS50ZWxsID0gZmlsZV9vcl9maWxlbmFtZS50ZWxsCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmaWxlID0gaW8uVGV4dElPV3JhcHBlcihmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0ieG1sY2hhcnJlZnJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9IlxuIikKKyAgICAgICAgICAgICAgICAjIEtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgb3BlbiB3aGVuIHRoZSBUZXh0SU9XcmFwcGVyIGlzCisgICAgICAgICAgICAgICAgIyBkZXN0cm95ZWQKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhmaWxlLmRldGFjaCkKKyAgICAgICAgICAgICAgICB5aWVsZCBmaWxlLndyaXRlCisKIGRlZiBfbmFtZXNwYWNlcyhlbGVtLCBkZWZhdWx0X25hbWVzcGFjZT1Ob25lKToKICAgICAjIGlkZW50aWZ5IG5hbWVzcGFjZXMgdXNlZCBpbiB0aGlzIHRyZWUKIApAQCAtOTA5LDExICs5MjUsNyBAQAogICAgICAgICAgICAgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IocW5hbWUpCiAKICAgICAjIHBvcHVsYXRlIHFuYW1lIGFuZCBuYW1lc3BhY2VzIHRhYmxlCi0gICAgdHJ5OgotICAgICAgICBpdGVyYXRlID0gZWxlbS5pdGVyCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBpdGVyYXRlID0gZWxlbS5nZXRpdGVyYXRvciAjIGNFVCBjb21wYXRpYmlsaXR5Ci0gICAgZm9yIGVsZW0gaW4gaXRlcmF0ZSgpOgorICAgIGZvciBlbGVtIGluIGVsZW0uaXRlcigpOgogICAgICAgICB0YWcgPSBlbGVtLnRhZwogICAgICAgICBpZiBpc2luc3RhbmNlKHRhZywgUU5hbWUpOgogICAgICAgICAgICAgaWYgdGFnLnRleHQgbm90IGluIHFuYW1lczoKQEAgLTEwODUsNiArMTA5Nyw4IEBACiAgICAgIyBkdWJsaW4gY29yZQogICAgICJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI6ICJkYyIsCiB9CisjIEZvciB0ZXN0cyBhbmQgdHJvdWJsZXNob290aW5nCityZWdpc3Rlcl9uYW1lc3BhY2UuX25hbWVzcGFjZV9tYXAgPSBfbmFtZXNwYWNlX21hcAogCiBkZWYgX3JhaXNlX3NlcmlhbGl6YXRpb25fZXJyb3IodGV4dCk6CiAgICAgcmFpc2UgVHlwZUVycm9yKApAQCAtMTE1MywyMiArMTE2NywxMyBAQAogIyBAZGVmcmV0dXJuIHN0cmluZwogCiBkZWYgdG9zdHJpbmcoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUpOgotICAgIGNsYXNzIGR1bW15OgotICAgICAgICBwYXNzCi0gICAgZGF0YSA9IFtdCi0gICAgZmlsZSA9IGR1bW15KCkKLSAgICBmaWxlLndyaXRlID0gZGF0YS5hcHBlbmQKLSAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShmaWxlLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKLSAgICBpZiBlbmNvZGluZyBpbiAoc3RyLCAidW5pY29kZSIpOgotICAgICAgICByZXR1cm4gIiIuam9pbihkYXRhKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBiIiIuam9pbihkYXRhKQorICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkgaWYgZW5jb2RpbmcgPT0gJ3VuaWNvZGUnIGVsc2UgaW8uQnl0ZXNJTygpCisgICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICByZXR1cm4gc3RyZWFtLmdldHZhbHVlKCkKIAogIyMKICMgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCi0jIHN1YmVsZW1lbnRzLiAgSWYgZW5jb2RpbmcgaXMgRmFsc2UsIHRoZSBzdHJpbmcgaXMgcmV0dXJuZWQgYXMgYQotIyBzZXF1ZW5jZSBvZiBzdHJpbmcgZnJhZ21lbnRzOyBvdGhlcndpc2UgaXQgaXMgYSBzZXF1ZW5jZSBvZgotIyBieXRlc3RyaW5ncy4KKyMgc3ViZWxlbWVudHMuCiAjCiAjIEBwYXJhbSBlbGVtZW50IEFuIEVsZW1lbnQgaW5zdGFuY2UuCiAjIEBrZXlwYXJhbSBlbmNvZGluZyBPcHRpb25hbCBvdXRwdXQgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgpAQCAtMTE3OSwxNSArMTE4NCwyOSBAQAogIyBAZGVmcmV0dXJuIHNlcXVlbmNlCiAjIEBzaW5jZSAxLjMKIAorY2xhc3MgX0xpc3REYXRhU3RyZWFtKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiIgQW4gYXV4aWxpYXJ5IHN0cmVhbSBhY2N1bXVsYXRpbmcgaW50byBhIGxpc3QgcmVmZXJlbmNlCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxzdCk6CisgICAgICAgIHNlbGYubHN0ID0gbHN0CisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgYik6CisgICAgICAgIHNlbGYubHN0LmFwcGVuZChiKQorCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5sc3QpCisKIGRlZiB0b3N0cmluZ2xpc3QoZWxlbWVudCwgZW5jb2Rpbmc9Tm9uZSwgbWV0aG9kPU5vbmUpOgotICAgIGNsYXNzIGR1bW15OgotICAgICAgICBwYXNzCi0gICAgZGF0YSA9IFtdCi0gICAgZmlsZSA9IGR1bW15KCkKLSAgICBmaWxlLndyaXRlID0gZGF0YS5hcHBlbmQKLSAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShmaWxlLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKLSAgICAjIEZJWE1FOiBtZXJnZSBzbWFsbCBmcmFnbWVudHMgaW50byBsYXJnZXIgcGFydHMKLSAgICByZXR1cm4gZGF0YQorICAgIGxzdCA9IFtdCisgICAgc3RyZWFtID0gX0xpc3REYXRhU3RyZWFtKGxzdCkKKyAgICBFbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzdHJlYW0sIGVuY29kaW5nLCBtZXRob2Q9bWV0aG9kKQorICAgIHJldHVybiBsc3QKIAogIyMKICMgV3JpdGVzIGFuIGVsZW1lbnQgdHJlZSBvciBlbGVtZW50IHN0cnVjdHVyZSB0byBzeXMuc3Rkb3V0LiAgVGhpcwpAQCAtMTUwOSwyNCArMTUyOCwzMCBAQAogICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYuX3RhcmdldCA9IHRhcmdldAogICAgICAgICBzZWxmLl9lcnJvciA9IGV4cGF0LmVycm9yCiAgICAgICAgIHNlbGYuX25hbWVzID0ge30gIyBuYW1lIG1lbW8gY2FjaGUKLSAgICAgICAgIyBjYWxsYmFja3MKKyAgICAgICAgIyBtYWluIGNhbGxiYWNrcwogICAgICAgICBwYXJzZXIuRGVmYXVsdEhhbmRsZXJFeHBhbmQgPSBzZWxmLl9kZWZhdWx0Ci0gICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKLSAgICAgICAgcGFyc2VyLkVuZEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fZW5kCi0gICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHNlbGYuX2RhdGEKLSAgICAgICAgIyBvcHRpb25hbCBjYWxsYmFja3MKLSAgICAgICAgcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gc2VsZi5fY29tbWVudAotICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHNlbGYuX3BpCisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnc3RhcnQnKToKKyAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdlbmQnKToKKyAgICAgICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX2VuZAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ2RhdGEnKToKKyAgICAgICAgICAgIHBhcnNlci5DaGFyYWN0ZXJEYXRhSGFuZGxlciA9IHRhcmdldC5kYXRhCisgICAgICAgICMgbWlzY2VsbGFuZW91cyBjYWxsYmFja3MKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdjb21tZW50Jyk6CisgICAgICAgICAgICBwYXJzZXIuQ29tbWVudEhhbmRsZXIgPSB0YXJnZXQuY29tbWVudAorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3BpJyk6CisgICAgICAgICAgICBwYXJzZXIuUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IHRhcmdldC5waQogICAgICAgICAjIGxldCBleHBhdCBkbyB0aGUgYnVmZmVyaW5nLCBpZiBzdXBwb3J0ZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmJ1ZmZlcl90ZXh0ID0gMQorICAgICAgICAgICAgcGFyc2VyLmJ1ZmZlcl90ZXh0ID0gMQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgdXNlIG5ldy1zdHlsZSBhdHRyaWJ1dGUgaGFuZGxpbmcsIGlmIHN1cHBvcnRlZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9wYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQotICAgICAgICAgICAgcGFyc2VyLlN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzZWxmLl9zdGFydF9saXN0CisgICAgICAgICAgICBwYXJzZXIub3JkZXJlZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgcGFyc2VyLnNwZWNpZmllZF9hdHRyaWJ1dGVzID0gMQorICAgICAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdzdGFydCcpOgorICAgICAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnRfbGlzdAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX2RvY3R5cGUgPSBOb25lCkBAIC0xNTcwLDQ0ICsxNTk1LDI5IEBACiAgICAgICAgICAgICAgICAgYXR0cmliW2ZpeG5hbWUoYXR0cmliX2luW2ldKV0gPSBhdHRyaWJfaW5baSsxXQogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuc3RhcnQodGFnLCBhdHRyaWIpCiAKLSAgICBkZWYgX2RhdGEoc2VsZiwgdGV4dCk6Ci0gICAgICAgIHJldHVybiBzZWxmLnRhcmdldC5kYXRhKHRleHQpCi0KICAgICBkZWYgX2VuZChzZWxmLCB0YWcpOgogICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuZW5kKHNlbGYuX2ZpeG5hbWUodGFnKSkKIAotICAgIGRlZiBfY29tbWVudChzZWxmLCBkYXRhKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tbWVudCA9IHNlbGYudGFyZ2V0LmNvbW1lbnQKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNvbW1lbnQoZGF0YSkKLQotICAgIGRlZiBfcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGkgPSBzZWxmLnRhcmdldC5waQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcGkodGFyZ2V0LCBkYXRhKQotCiAgICAgZGVmIF9kZWZhdWx0KHNlbGYsIHRleHQpOgogICAgICAgICBwcmVmaXggPSB0ZXh0WzoxXQogICAgICAgICBpZiBwcmVmaXggPT0gIiYiOgogICAgICAgICAgICAgIyBkZWFsIHdpdGggdW5kZWZpbmVkIGVudGl0aWVzCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJnZXQuZGF0YShzZWxmLmVudGl0eVt0ZXh0WzE6LTFdXSkKKyAgICAgICAgICAgICAgICBkYXRhX2hhbmRsZXIgPSBzZWxmLnRhcmdldC5kYXRhCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YV9oYW5kbGVyKHNlbGYuZW50aXR5W3RleHRbMTotMV1dKQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiAgICAgICAgICAgICAgICAgZXJyID0gZXhwYXQuZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICJ1bmRlZmluZWQgZW50aXR5ICVzOiBsaW5lICVkLCBjb2x1bW4gJWQiICUKLSAgICAgICAgICAgICAgICAgICAgKHRleHQsIHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5FcnJvckNvbHVtbk51bWJlcikKKyAgICAgICAgICAgICAgICAgICAgKHRleHQsIHNlbGYucGFyc2VyLkVycm9yTGluZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBlcnIuY29kZSA9IDExICMgWE1MX0VSUk9SX1VOREVGSU5FRF9FTlRJVFkKLSAgICAgICAgICAgICAgICBlcnIubGluZW5vID0gc2VsZi5fcGFyc2VyLkVycm9yTGluZU51bWJlcgotICAgICAgICAgICAgICAgIGVyci5vZmZzZXQgPSBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKKyAgICAgICAgICAgICAgICBlcnIubGluZW5vID0gc2VsZi5wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCisgICAgICAgICAgICAgICAgZXJyLm9mZnNldCA9IHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyCiAgICAgICAgIGVsaWYgcHJlZml4ID09ICI8IiBhbmQgdGV4dFs6OV0gPT0gIjwhRE9DVFlQRSI6CiAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gW10gIyBpbnNpZGUgYSBkb2N0eXBlIGRlY2xhcmF0aW9uCkBAIC0xNjI1LDE2ICsxNjM1LDE2IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuX2RvY3R5cGVbMV0KICAgICAgICAgICAgICAgICBpZiB0eXBlID09ICJQVUJMSUMiIGFuZCBuID09IDQ6CiAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHR5cGUsIHB1YmlkLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCisgICAgICAgICAgICAgICAgICAgIGlmIHB1YmlkOgorICAgICAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBwdWJpZFsxOi0xXQogICAgICAgICAgICAgICAgIGVsaWYgdHlwZSA9PSAiU1lTVEVNIiBhbmQgbiA9PSAzOgogICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBzeXN0ZW0gPSBzZWxmLl9kb2N0eXBlCiAgICAgICAgICAgICAgICAgICAgIHB1YmlkID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIHB1YmlkOgotICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IHB1YmlkWzE6LTFdCiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnRhcmdldCwgImRvY3R5cGUiKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXQuZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5kb2N0eXBlIGlzIG5vdCBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGU6CisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLmRvY3R5cGUgIT0gc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlOgogICAgICAgICAgICAgICAgICAgICAjIHdhcm4gYWJvdXQgZGVwcmVjYXRlZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZShuYW1lLCBwdWJpZCwgc3lzdGVtWzE6LTFdKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmRvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKQEAgLTE2NjUsNyArMTY3NSw3IEBACiAKICAgICBkZWYgZmVlZChzZWxmLCBkYXRhKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKGRhdGEsIDApCisgICAgICAgICAgICBzZWxmLnBhcnNlci5QYXJzZShkYXRhLCAwKQogICAgICAgICBleGNlcHQgc2VsZi5fZXJyb3IgYXMgdjoKICAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKIApAQCAtMTY3NywxMiArMTY4NywxMDAgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLlBhcnNlKCIiLCAxKSAjIGVuZCBvZiBkYXRhCisgICAgICAgICAgICBzZWxmLnBhcnNlci5QYXJzZSgiIiwgMSkgIyBlbmQgb2YgZGF0YQogICAgICAgICBleGNlcHQgc2VsZi5fZXJyb3IgYXMgdjoKICAgICAgICAgICAgIHNlbGYuX3JhaXNlZXJyb3IodikKLSAgICAgICAgdHJlZSA9IHNlbGYudGFyZ2V0LmNsb3NlKCkKLSAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl9wYXJzZXIgIyBnZXQgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMKLSAgICAgICAgcmV0dXJuIHRyZWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY2xvc2VfaGFuZGxlciA9IHNlbGYudGFyZ2V0LmNsb3NlCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBjbG9zZV9oYW5kbGVyKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgZ2V0IHJpZCBvZiBjaXJjdWxhciByZWZlcmVuY2VzCisgICAgICAgICAgICBkZWwgc2VsZi5wYXJzZXIsIHNlbGYuX3BhcnNlcgorICAgICAgICAgICAgZGVsIHNlbGYudGFyZ2V0LCBzZWxmLl90YXJnZXQKKworCisjIEltcG9ydCB0aGUgQyBhY2NlbGVyYXRvcnMKK3RyeToKKyAgICAjIEVsZW1lbnQsIFN1YkVsZW1lbnQsIFBhcnNlRXJyb3IsIFRyZWVCdWlsZGVyLCBYTUxQYXJzZXIKKyAgICBmcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgKgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBPdmVyd3JpdGUgJ0VsZW1lbnRUcmVlLnBhcnNlJyBhbmQgJ2l0ZXJwYXJzZScgdG8gdXNlIHRoZSBDIFhNTFBhcnNlcgorCisgICAgY2xhc3MgRWxlbWVudFRyZWUoRWxlbWVudFRyZWUpOgorICAgICAgICBkZWYgcGFyc2Uoc2VsZiwgc291cmNlLCBwYXJzZXI9Tm9uZSk6CisgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAncmVhZCcpOgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAncmInKQorICAgICAgICAgICAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBwYXJzZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnJlYWQoNjU1MzYpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyID0gWE1MUGFyc2VyKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5fcGFyc2Uoc291cmNlKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb290CisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGNsb3NlX3NvdXJjZToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKKworICAgIGNsYXNzIGl0ZXJwYXJzZToKKyAgICAgICAgcm9vdCA9IE5vbmUKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIGV2ZW50cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9maWxlID0gZmlsZQorICAgICAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKyAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZQorICAgICAgICAgICAgYiA9IFRyZWVCdWlsZGVyKCkKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IFhNTFBhcnNlcihiKQorICAgICAgICAgICAgc2VsZi5fcGFyc2VyLl9zZXRldmVudHMoc2VsZi5fZXZlbnRzLCBldmVudHMpCisKKyAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBzZWxmLl9ldmVudHNbc2VsZi5faW5kZXhdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yOgorICAgICAgICAgICAgICAgICAgICBlID0gc2VsZi5fZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3IgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdAorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2V2ZW50c1s6XQorICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYzODQpCisgICAgICAgICAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gZXhjCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmUKKworICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAjIGNvbXBhdGliaWxpdHkKIFhNTFRyZWVCdWlsZGVyID0gWE1MUGFyc2VyCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL2NFbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CmluZGV4IGE2ZjEyN2EuLjM2OGU2NzkgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvY0VsZW1lbnRUcmVlLnB5CkBAIC0xLDMgKzEsMyBAQAotIyBXcmFwcGVyIG1vZHVsZSBmb3IgX2VsZW1lbnR0cmVlCisjIERlcHJlY2F0ZWQgYWxpYXMgZm9yIHhtbC5ldHJlZS5FbGVtZW50VHJlZQogCi1mcm9tIF9lbGVtZW50dHJlZSBpbXBvcnQgKgorZnJvbSB4bWwuZXRyZWUuRWxlbWVudFRyZWUgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weSBiL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weQppbmRleCBhODA1YjgyLi5iY2JlOWZiIDEwMDY0NAotLS0gYS9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkKKysrIGIvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5CkBAIC0xLDYgKzEsNCBAQAogIiIiSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBub24tdmFsaWRhdGluZyBYTUwgcGFyc2VyLiIiIgotX192ZXJzaW9uX18gPSAnJFJldmlzaW9uJCcKLQogaW1wb3J0IHN5cwogCiBmcm9tIHB5ZXhwYXQgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggOTdkNWFhYy4uYTc3OWU2NiAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTEyOCw4ICsxMjgsMTEgQEAKICIiIgogCiBpbXBvcnQgYmFzZTY0CitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCBodHRwLmNsaWVudAoraW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBlcnJubwpAQCAtMTQyLDE3ICsxNDUsMTMgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgSW50ZXJuYWwgc3R1ZmYKIAotdHJ5OgotICAgIGltcG9ydCBkYXRldGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGRhdGV0aW1lID0gTm9uZQotCiBkZWYgZXNjYXBlKHMpOgogICAgIHMgPSBzLnJlcGxhY2UoIiYiLCAiJmFtcDsiKQogICAgIHMgPSBzLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCiAKLV9fdmVyc2lvbl9fID0gIjEuMC4xIgorIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKK19fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCiAKICMgeG1scnBjIGludGVnZXIgbGltaXRzCiBNQVhJTlQgPSAgMioqMzEtMQpAQCAtMjUyLDIxICsyNTEsMzMgQEAKICMgV3JhcHBlciBmb3IgWE1MLVJQQyBEYXRlVGltZSB2YWx1ZXMuICBUaGlzIGNvbnZlcnRzIGEgdGltZSB2YWx1ZSB0bwogIyB0aGUgZm9ybWF0IHVzZWQgYnkgWE1MLVJQQy4KICMgPHA+Ci0jIFRoZSB2YWx1ZSBjYW4gYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAotIyAieXl5eW1tZGRUaGg6bW06c3MiLCBhcyBhIDktaXRlbSB0aW1lIHR1cGxlIChhcyByZXR1cm5lZCBieQorIyBUaGUgdmFsdWUgY2FuIGJlIGdpdmVuIGFzIGEgZGF0ZXRpbWUgb2JqZWN0LCBhcyBhIHN0cmluZyBpbiB0aGUKKyMgZm9ybWF0ICJ5eXl5bW1kZFRoaDptbTpzcyIsIGFzIGEgOS1pdGVtIHRpbWUgdHVwbGUgKGFzIHJldHVybmVkIGJ5CiAjIHRpbWUubG9jYWx0aW1lKCkpLCBvciBhbiBpbnRlZ2VyIHZhbHVlIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSkuCiAjIFRoZSB3cmFwcGVyIHVzZXMgdGltZS5sb2NhbHRpbWUoKSB0byBjb252ZXJ0IGFuIGludGVnZXIgdG8gYSB0aW1lCiAjIHR1cGxlLgogIwotIyBAcGFyYW0gdmFsdWUgVGhlIHRpbWUsIGdpdmVuIGFzIGFuIElTTyA4NjAxIHN0cmluZywgYSB0aW1lCi0jICAgICAgICAgICAgICB0dXBsZSwgb3IgYSBpbnRlZ2VyIHRpbWUgdmFsdWUuCisjIEBwYXJhbSB2YWx1ZSBUaGUgdGltZSwgZ2l2ZW4gYXMgYSBkYXRldGltZSBvYmplY3QsIGFuIElTTyA4NjAxIHN0cmluZywKKyMgICAgICAgICAgICAgIGEgdGltZSB0dXBsZSwgb3IgYW4gaW50ZWdlciB0aW1lIHZhbHVlLgorCisKKyMgSXNzdWUgIzEzMzA1OiBkaWZmZXJlbnQgZm9ybWF0IGNvZGVzIGFjcm9zcyBwbGF0Zm9ybXMKK19kYXkwID0gZGF0ZXRpbWUoMSwgMSwgMSkKK2lmIF9kYXkwLnN0cmZ0aW1lKCclWScpID09ICcwMDAxJzogICAgICAjIE1hYyBPUyBYCisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikKK2VsaWYgX2RheTAuc3RyZnRpbWUoJyU0WScpID09ICcwMDAxJzogICAjIExpbnV4CisgICAgZGVmIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSk6CisgICAgICAgIHJldHVybiB2YWx1ZS5zdHJmdGltZSgiJTRZJW0lZFQlSDolTTolUyIpCitlbHNlOgorICAgIGRlZiBfaXNvODYwMV9mb3JtYXQodmFsdWUpOgorICAgICAgICByZXR1cm4gdmFsdWUuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpLnpmaWxsKDE3KQorZGVsIF9kYXkwCisKIAogZGVmIF9zdHJmdGltZSh2YWx1ZSk6Ci0gICAgaWYgZGF0ZXRpbWU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRhdGV0aW1lLmRhdGV0aW1lKToKLSAgICAgICAgICAgIHJldHVybiAiJTA0ZCUwMmQlMDJkVCUwMmQ6JTAyZDolMDJkIiAlICgKLSAgICAgICAgICAgICAgICB2YWx1ZS55ZWFyLCB2YWx1ZS5tb250aCwgdmFsdWUuZGF5LAotICAgICAgICAgICAgICAgIHZhbHVlLmhvdXIsIHZhbHVlLm1pbnV0ZSwgdmFsdWUuc2Vjb25kKQorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGRhdGV0aW1lKToKKyAgICAgICAgcmV0dXJuIF9pc284NjAxX2Zvcm1hdCh2YWx1ZSkKIAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAodHVwbGUsIHRpbWUuc3RydWN0X3RpbWUpKToKICAgICAgICAgaWYgdmFsdWUgPT0gMDoKQEAgLTI5MSw5ICszMDIsOSBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEYXRlVGltZSk6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQogICAgICAgICAgICAgbyA9IG90aGVyLnZhbHVlCi0gICAgICAgIGVsaWYgZGF0ZXRpbWUgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lLmRhdGV0aW1lKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6CiAgICAgICAgICAgICBzID0gc2VsZi52YWx1ZQotICAgICAgICAgICAgbyA9IG90aGVyLnN0cmZ0aW1lKCIlWSVtJWRUJUg6JU06JVMiKQorICAgICAgICAgICAgbyA9IF9pc284NjAxX2Zvcm1hdChvdGhlcikKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCBzdHIpOgogICAgICAgICAgICAgcyA9IHNlbGYudmFsdWUKICAgICAgICAgICAgIG8gPSBvdGhlcgpAQCAtMzYxLDggKzM3Miw3IEBACiAgICAgcmV0dXJuIHZhbHVlCiAKIGRlZiBfZGF0ZXRpbWVfdHlwZShkYXRhKToKLSAgICB0ID0gdGltZS5zdHJwdGltZShkYXRhLCAiJVklbSVkVCVIOiVNOiVTIikKLSAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUoKnR1cGxlKHQpWzo2XSkKKyAgICByZXR1cm4gZGF0ZXRpbWUuc3RycHRpbWUoZGF0YSwgIiVZJW0lZFQlSDolTTolUyIpCiAKICMjCiAjIFdyYXBwZXIgZm9yIGJpbmFyeSBkYXRhLiAgVGhpcyBjYW4gYmUgdXNlZCB0byB0cmFuc3BvcnQgYW55IGtpbmQKQEAgLTM3Nyw4ICszODcsOCBAQAogICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CiAgICAgICAgICAgICBkYXRhID0gYiIiCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIiAlCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRhLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMgb3IgYnl0ZWFycmF5LCBub3QgJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgICAgICAgICBkYXRhID0gYnl0ZXMoZGF0YSkgICMgTWFrZSBhIGNvcHkgb2YgdGhlIGJ5dGVzIQogICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCkBAIC00MDgsNyArNDE4LDYgQEAKICAgICAgICAgb3V0LndyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCiAgICAgICAgIGVuY29kZWQgPSBiYXNlNjQuZW5jb2RlYnl0ZXMoc2VsZi5kYXRhKQogICAgICAgICBvdXQud3JpdGUoZW5jb2RlZC5kZWNvZGUoJ2FzY2lpJykpCi0gICAgICAgIG91dC53cml0ZSgnXG4nKQogICAgICAgICBvdXQud3JpdGUoIjwvYmFzZTY0PjwvdmFsdWU+XG4iKQogCiBkZWYgX2JpbmFyeShkYXRhKToKQEAgLTUyMiwxNSArNTMxLDYgQEAKICAgICAgICAgd3JpdGUoIjx2YWx1ZT48bmlsLz48L3ZhbHVlPiIpCiAgICAgZGlzcGF0Y2hbdHlwZShOb25lKV0gPSBkdW1wX25pbAogCi0gICAgZGVmIGR1bXBfaW50KHNlbGYsIHZhbHVlLCB3cml0ZSk6Ci0gICAgICAgICMgaW4gY2FzZSBpbnRzIGFyZSA+IDMyIGJpdHMKLSAgICAgICAgaWYgdmFsdWUgPiBNQVhJTlQgb3IgdmFsdWUgPCBNSU5JTlQ6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJpbnQgZXhjZWVkcyBYTUwtUlBDIGxpbWl0cyIpCi0gICAgICAgIHdyaXRlKCI8dmFsdWU+PGludD4iKQotICAgICAgICB3cml0ZShzdHIodmFsdWUpKQotICAgICAgICB3cml0ZSgiPC9pbnQ+PC92YWx1ZT5cbiIpCi0gICAgI2Rpc3BhdGNoW2ludF0gPSBkdW1wX2ludAotCiAgICAgZGVmIGR1bXBfYm9vbChzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICB3cml0ZSgiPHZhbHVlPjxib29sZWFuPiIpCiAgICAgICAgIHdyaXRlKHZhbHVlIGFuZCAiMSIgb3IgIjAiKQpAQCAtNTQ1LDYgKzU0NSw5IEBACiAgICAgICAgIHdyaXRlKCI8L2ludD48L3ZhbHVlPlxuIikKICAgICBkaXNwYXRjaFtpbnRdID0gZHVtcF9sb25nCiAKKyAgICAjIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAgICBkdW1wX2ludCA9IGR1bXBfbG9uZworCiAgICAgZGVmIGR1bXBfZG91YmxlKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgIHdyaXRlKCI8dmFsdWU+PGRvdWJsZT4iKQogICAgICAgICB3cml0ZShyZXByKHZhbHVlKSkKQEAgLTU1Nyw2ICs1NjAsMTQgQEAKICAgICAgICAgd3JpdGUoIjwvc3RyaW5nPjwvdmFsdWU+XG4iKQogICAgIGRpc3BhdGNoW3N0cl0gPSBkdW1wX3VuaWNvZGUKIAorICAgIGRlZiBkdW1wX2J5dGVzKHNlbGYsIHZhbHVlLCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCI8dmFsdWU+PGJhc2U2ND5cbiIpCisgICAgICAgIGVuY29kZWQgPSBiYXNlNjQuZW5jb2RlYnl0ZXModmFsdWUpCisgICAgICAgIHdyaXRlKGVuY29kZWQuZGVjb2RlKCdhc2NpaScpKQorICAgICAgICB3cml0ZSgiPC9iYXNlNjQ+PC92YWx1ZT5cbiIpCisgICAgZGlzcGF0Y2hbYnl0ZXNdID0gZHVtcF9ieXRlcworICAgIGRpc3BhdGNoW2J5dGVhcnJheV0gPSBkdW1wX2J5dGVzCisKICAgICBkZWYgZHVtcF9hcnJheShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICBpID0gaWQodmFsdWUpCiAgICAgICAgIGlmIGkgaW4gc2VsZi5tZW1vOgpAQCAtNTg5LDEyICs2MDAsMTEgQEAKICAgICAgICAgZGVsIHNlbGYubWVtb1tpXQogICAgIGRpc3BhdGNoW2RpY3RdID0gZHVtcF9zdHJ1Y3QKIAotICAgIGlmIGRhdGV0aW1lOgotICAgICAgICBkZWYgZHVtcF9kYXRldGltZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgotICAgICAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZGF0ZVRpbWUuaXNvODYwMT4iKQotICAgICAgICAgICAgd3JpdGUoX3N0cmZ0aW1lKHZhbHVlKSkKLSAgICAgICAgICAgIHdyaXRlKCI8L2RhdGVUaW1lLmlzbzg2MDE+PC92YWx1ZT5cbiIpCi0gICAgICAgIGRpc3BhdGNoW2RhdGV0aW1lLmRhdGV0aW1lXSA9IGR1bXBfZGF0ZXRpbWUKKyAgICBkZWYgZHVtcF9kYXRldGltZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgorICAgICAgICB3cml0ZSgiPHZhbHVlPjxkYXRlVGltZS5pc284NjAxPiIpCisgICAgICAgIHdyaXRlKF9zdHJmdGltZSh2YWx1ZSkpCisgICAgICAgIHdyaXRlKCI8L2RhdGVUaW1lLmlzbzg2MDE+PC92YWx1ZT5cbiIpCisgICAgZGlzcGF0Y2hbZGF0ZXRpbWVdID0gZHVtcF9kYXRldGltZQogCiAgICAgZGVmIGR1bXBfaW5zdGFuY2Uoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgIyBjaGVjayBmb3Igc3BlY2lhbCB3cmFwcGVycwpAQCAtNjI4LDcgKzYzOCw3IEBACiAgICAgIyBhbmQgYWdhaW4sIGlmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiBpbiBoZXJlLAogICAgICMgdGhhdCdzIHBlcmZlY3RseSBvay4KIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5fdHlwZSA9IE5vbmUKICAgICAgICAgc2VsZi5fc3RhY2sgPSBbXQogICAgICAgICBzZWxmLl9tYXJrcyA9IFtdCkBAIC02MzYsOSArNjQ2LDggQEAKICAgICAgICAgc2VsZi5fbWV0aG9kbmFtZSA9IE5vbmUKICAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5fc3RhY2suYXBwZW5kCi0gICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9kYXRldGltZQotICAgICAgICBpZiB1c2VfZGF0ZXRpbWUgYW5kIG5vdCBkYXRldGltZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInRoZSBkYXRldGltZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisgICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9idWlsdGluX3R5cGVzIG9yIHVzZV9kYXRldGltZQorICAgICAgICBzZWxmLl91c2VfYnl0ZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAjIHJldHVybiByZXNwb25zZSB0dXBsZSBhbmQgdGFyZ2V0IG1ldGhvZApAQCAtNzUwLDYgKzc1OSw4IEBACiAgICAgZGVmIGVuZF9iYXNlNjQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHZhbHVlID0gQmluYXJ5KCkKICAgICAgICAgdmFsdWUuZGVjb2RlKGRhdGEuZW5jb2RlKCJhc2NpaSIpKQorICAgICAgICBpZiBzZWxmLl91c2VfYnl0ZXM6CisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRhdGEKICAgICAgICAgc2VsZi5hcHBlbmQodmFsdWUpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgIGRpc3BhdGNoWyJiYXNlNjQiXSA9IGVuZF9iYXNlNjQKQEAgLTg2MSwyMyArODcyLDI2IEBACiAjCiAjIHJldHVybiBBIChwYXJzZXIsIHVubWFyc2hhbGxlcikgdHVwbGUuCiAKLWRlZiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPUZhbHNlKToKK2RlZiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgIiIiZ2V0cGFyc2VyKCkgLT4gcGFyc2VyLCB1bm1hcnNoYWxsZXIKIAogICAgIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgZmFzdGVzdCBhdmFpbGFibGUgcGFyc2VyLCBhbmQgYXR0YWNoIGl0CiAgICAgdG8gYW4gdW5tYXJzaGFsbGluZyBvYmplY3QuICBSZXR1cm4gYm90aCBvYmplY3RzLgogICAgICIiIgotICAgIGlmIHVzZV9kYXRldGltZSBhbmQgbm90IGRhdGV0aW1lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgZGF0ZXRpbWUgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQogICAgIGlmIEZhc3RQYXJzZXIgYW5kIEZhc3RVbm1hcnNoYWxsZXI6Ci0gICAgICAgIGlmIHVzZV9kYXRldGltZToKKyAgICAgICAgaWYgdXNlX2J1aWx0aW5fdHlwZXM6CiAgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBiYXNlNjQuZGVjb2RlYnl0ZXMKKyAgICAgICAgZWxpZiB1c2VfZGF0ZXRpbWU6CisgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lX3R5cGUKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBfYmluYXJ5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBta2RhdGV0aW1lID0gX2RhdGV0aW1lCi0gICAgICAgIHRhcmdldCA9IEZhc3RVbm1hcnNoYWxsZXIoVHJ1ZSwgRmFsc2UsIF9iaW5hcnksIG1rZGF0ZXRpbWUsIEZhdWx0KQorICAgICAgICAgICAgbWtieXRlcyA9IF9iaW5hcnkKKyAgICAgICAgdGFyZ2V0ID0gRmFzdFVubWFyc2hhbGxlcihUcnVlLCBGYWxzZSwgbWtieXRlcywgbWtkYXRldGltZSwgRmF1bHQpCiAgICAgICAgIHBhcnNlciA9IEZhc3RQYXJzZXIodGFyZ2V0KQogICAgIGVsc2U6Ci0gICAgICAgIHRhcmdldCA9IFVubWFyc2hhbGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgICAgICB0YXJnZXQgPSBVbm1hcnNoYWxsZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwgdXNlX2J1aWx0aW5fdHlwZXM9dXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIGlmIEZhc3RQYXJzZXI6CiAgICAgICAgICAgICBwYXJzZXIgPSBGYXN0UGFyc2VyKHRhcmdldCkKICAgICAgICAgZWxzZToKQEAgLTkxNSw3ICs5MjksNyBAQAogCiAgICAgICAgIGVuY29kaW5nOiB0aGUgcGFja2V0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVURi04KQogCi0gICAgQWxsIDgtYml0IHN0cmluZ3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlIGFyZSBhc3N1bWVkIHRvIHVzZSB0aGUKKyAgICBBbGwgYnl0ZSBzdHJpbmdzIGluIHRoZSBkYXRhIHN0cnVjdHVyZSBhcmUgYXNzdW1lZCB0byB1c2UgdGhlCiAgICAgcGFja2V0IGVuY29kaW5nLiAgVW5pY29kZSBzdHJpbmdzIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCwKICAgICB3aGVyZSBuZWNlc3NhcnkuCiAgICAgIiIiCkBAIC05NzQsNyArOTg4LDcgQEAKICMgICAgIChOb25lIGlmIG5vdCBwcmVzZW50KS4KICMgQHNlZSBGYXVsdAogCi1kZWYgbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlKToKK2RlZiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAiIiJkYXRhIC0+IHVubWFyc2hhbGxlZCBkYXRhLCBtZXRob2QgbmFtZQogCiAgICAgQ29udmVydCBhbiBYTUwtUlBDIHBhY2tldCB0byB1bm1hcnNoYWxsZWQgZGF0YSBwbHVzIGEgbWV0aG9kCkBAIC05ODMsNyArOTk3LDcgQEAKICAgICBJZiB0aGUgWE1MLVJQQyBwYWNrZXQgcmVwcmVzZW50cyBhIGZhdWx0IGNvbmRpdGlvbiwgdGhpcyBmdW5jdGlvbgogICAgIHJhaXNlcyBhIEZhdWx0IGV4Y2VwdGlvbi4KICAgICAiIiIKLSAgICBwLCB1ID0gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgcCwgdSA9IGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLCB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICBwLmZlZWQoZGF0YSkKICAgICBwLmNsb3NlKCkKICAgICByZXR1cm4gdS5jbG9zZSgpLCB1LmdldG1ldGhvZG5hbWUoKQpAQCAtMTA4NSw3ICsxMDk5LDcgQEAKICAgICAiIiJIYW5kbGVzIGFuIEhUVFAgdHJhbnNhY3Rpb24gdG8gYW4gWE1MLVJQQyBzZXJ2ZXIuIiIiCiAKICAgICAjIGNsaWVudCBpZGVudGlmaWVyIChtYXkgYmUgb3ZlcnJpZGRlbikKLSAgICB1c2VyX2FnZW50ID0gInhtbHJwY2xpYi5weS8lcyAoYnkgd3d3LnB5dGhvbndhcmUuY29tKSIgJSBfX3ZlcnNpb25fXworICAgIHVzZXJfYWdlbnQgPSAiUHl0aG9uLXhtbHJwYy8lcyIgJSBfX3ZlcnNpb25fXwogCiAgICAgI2lmIHRydWUsIHdlJ2xsIHJlcXVlc3QgZ3ppcCBlbmNvZGluZwogICAgIGFjY2VwdF9nemlwX2VuY29kaW5nID0gVHJ1ZQpAQCAtMTA5NSw4ICsxMTA5LDkgQEAKICAgICAjIHRoYXQgdGhleSBjYW4gZGVjb2RlIHN1Y2ggYSByZXF1ZXN0CiAgICAgZW5jb2RlX3RocmVzaG9sZCA9IE5vbmUgI05vbmUgPSBkb24ndCBlbmNvZGUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5fdXNlX2RhdGV0aW1lID0gdXNlX2RhdGV0aW1lCisgICAgICAgIHNlbGYuX3VzZV9idWlsdGluX3R5cGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKICAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IChOb25lLCBOb25lKQogICAgICAgICBzZWxmLl9leHRyYV9oZWFkZXJzID0gW10KIApAQCAtMTE1Nyw3ICsxMTcyLDggQEAKIAogICAgIGRlZiBnZXRwYXJzZXIoc2VsZik6CiAgICAgICAgICMgZ2V0IHBhcnNlciBhbmQgdW5tYXJzaGFsbGVyCi0gICAgICAgIHJldHVybiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXNlbGYuX3VzZV9kYXRldGltZSkKKyAgICAgICAgcmV0dXJuIGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9c2VsZi5fdXNlX2RhdGV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXNlbGYuX3VzZV9idWlsdGluX3R5cGVzKQogCiAgICAgIyMKICAgICAjIEdldCBhdXRob3JpemF0aW9uIGluZm8gZnJvbSBob3N0IHBhcmFtZXRlcgpAQCAtMTE3NSw3ICsxMTkxLDYgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShob3N0LCB0dXBsZSk6CiAgICAgICAgICAgICBob3N0LCB4NTA5ID0gaG9zdAogCi0gICAgICAgIGltcG9ydCB1cmxsaWIucGFyc2UKICAgICAgICAgYXV0aCwgaG9zdCA9IHVybGxpYi5wYXJzZS5zcGxpdHVzZXIoaG9zdCkKIAogICAgICAgICBpZiBhdXRoOgpAQCAtMTM2NCwxMSArMTM3OSwxMCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaSwgdHJhbnNwb3J0PU5vbmUsIGVuY29kaW5nPU5vbmUsIHZlcmJvc2U9RmFsc2UsCi0gICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSk6CisgICAgICAgICAgICAgICAgIGFsbG93X25vbmU9RmFsc2UsIHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICAjIGVzdGFibGlzaCBhICJsb2dpY2FsIiBzZXJ2ZXIgY29ubmVjdGlvbgogCiAgICAgICAgICMgZ2V0IHRoZSB1cmwKLSAgICAgICAgaW1wb3J0IHVybGxpYi5wYXJzZQogICAgICAgICB0eXBlLCB1cmkgPSB1cmxsaWIucGFyc2Uuc3BsaXR0eXBlKHVyaSkKICAgICAgICAgaWYgdHlwZSBub3QgaW4gKCJodHRwIiwgImh0dHBzIik6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJ1bnN1cHBvcnRlZCBYTUwtUlBDIHByb3RvY29sIikKQEAgLTEzNzgsOSArMTM5MiwxMSBAQAogCiAgICAgICAgIGlmIHRyYW5zcG9ydCBpcyBOb25lOgogICAgICAgICAgICAgaWYgdHlwZSA9PSAiaHR0cHMiOgotICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IFNhZmVUcmFuc3BvcnQodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gU2FmZVRyYW5zcG9ydAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQgPSBUcmFuc3BvcnQodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgICAgICAgICBoYW5kbGVyID0gVHJhbnNwb3J0CisgICAgICAgICAgICB0cmFuc3BvcnQgPSBoYW5kbGVyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzZWxmLl9fdHJhbnNwb3J0ID0gdHJhbnNwb3J0CiAKICAgICAgICAgc2VsZi5fX2VuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JwpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9zZXJ2ZXIucHkgYi9MaWIveG1scnBjL3NlcnZlci5weQppbmRleCBmZDE3MDI2Li41NGUxNzI2IDEwMDY0NAotLS0gYS9MaWIveG1scnBjL3NlcnZlci5weQorKysgYi9MaWIveG1scnBjL3NlcnZlci5weQpAQCAtMTYwLDExICsxNjAsMTMgQEAKICAgICBjYW4gYmUgaW5zdGFuY2VkIHdoZW4gdXNlZCBieSB0aGUgTXVsdGlQYXRoWE1MUlBDU2VydmVyCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5mdW5jcyA9IHt9CiAgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBOb25lCiAgICAgICAgIHNlbGYuYWxsb3dfbm9uZSA9IGFsbG93X25vbmUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKKyAgICAgICAgc2VsZi51c2VfYnVpbHRpbl90eXBlcyA9IHVzZV9idWlsdGluX3R5cGVzCiAKICAgICBkZWYgcmVnaXN0ZXJfaW5zdGFuY2Uoc2VsZiwgaW5zdGFuY2UsIGFsbG93X2RvdHRlZF9uYW1lcz1GYWxzZSk6CiAgICAgICAgICIiIlJlZ2lzdGVycyBhbiBpbnN0YW5jZSB0byByZXNwb25kIHRvIFhNTC1SUEMgcmVxdWVzdHMuCkBAIC0yNDUsNyArMjQ3LDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhKQorICAgICAgICAgICAgcGFyYW1zLCBtZXRob2QgPSBsb2FkcyhkYXRhLCB1c2VfYnVpbHRpbl90eXBlcz1zZWxmLnVzZV9idWlsdGluX3R5cGVzKQogCiAgICAgICAgICAgICAjIGdlbmVyYXRlIHJlc3BvbnNlCiAgICAgICAgICAgICBpZiBkaXNwYXRjaF9tZXRob2QgaXMgbm90IE5vbmU6CkBAIC01NzUsMTAgKzU3NywxMSBAQAogICAgIF9zZW5kX3RyYWNlYmFja19oZWFkZXIgPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICAgICBzZWxmLmxvZ1JlcXVlc3RzID0gbG9nUmVxdWVzdHMKIAotICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nKQorICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nLCB1c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgYmluZF9hbmRfYWN0aXZhdGUpCiAKICAgICAgICAgIyBbQnVnICMxMjIyNzkwXSBJZiBwb3NzaWJsZSwgc2V0IGNsb3NlLW9uLWV4ZWMgZmxhZzsgaWYgYQpAQCAtNTk4LDEwICs2MDEsMTEgQEAKICAgICBNYWtlIHN1cmUgdGhhdCB0aGUgcmVxdWVzdEhhbmRsZXIgYWNjZXB0cyB0aGUgcGF0aHMgaW4gcXVlc3Rpb24uCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyPVNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLCBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlKToKKyAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogCiAgICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHMsIGFsbG93X25vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUsIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBzZWxmLmRpc3BhdGNoZXJzID0ge30KICAgICAgICAgc2VsZi5hbGxvd19ub25lID0gYWxsb3dfbm9uZQogICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2Rpbmcgb3IgJ3V0Zi04JwpAQCAtNjMxLDggKzYzNSw4IEBACiBjbGFzcyBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcihTaW1wbGVYTUxSUENEaXNwYXRjaGVyKToKICAgICAiIiJTaW1wbGUgaGFuZGxlciBmb3IgWE1MLVJQQyBkYXRhIHBhc3NlZCB0aHJvdWdoIENHSS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZykKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgorICAgICAgICBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIGFsbG93X25vbmUsIGVuY29kaW5nLCB1c2VfYnVpbHRpbl90eXBlcykKIAogICAgIGRlZiBoYW5kbGVfeG1scnBjKHNlbGYsIHJlcXVlc3RfdGV4dCk6CiAgICAgICAgICIiIkhhbmRsZSBhIHNpbmdsZSBYTUwtUlBDIHJlcXVlc3QiIiIKQEAgLTkyNyw5ICs5MzEsMTAgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgU2ltcGxlWE1MUlBDU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIHJlcXVlc3RIYW5kbGVyLCBsb2dSZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X25vbmUsIGVuY29kaW5nLCBiaW5kX2FuZF9hY3RpdmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBYTUxSUENEb2NHZW5lcmF0b3IuX19pbml0X18oc2VsZikKIAogY2xhc3MgRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoICAgQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIsCkBAIC05NTksOCArOTY0LDEzIEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwcmludCgnUnVubmluZyBYTUwtUlBDIHNlcnZlciBvbiBwb3J0IDgwMDAnKQogICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQogICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCiAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCisgICAgdHJ5OgorICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDQzNWEzZTkuLjIwOWRjNGEgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0yMiw3ICsyMiwxOCBAQAogICAgIHpsaWIgPSBOb25lCiAgICAgY3JjMzIgPSBiaW5hc2NpaS5jcmMzMgogCi1fX2FsbF9fID0gWyJCYWRaaXBGaWxlIiwgIkJhZFppcGZpbGUiLCAiZXJyb3IiLCAiWklQX1NUT1JFRCIsICJaSVBfREVGTEFURUQiLAordHJ5OgorICAgIGltcG9ydCBiejIgIyBXZSBtYXkgbmVlZCBpdHMgY29tcHJlc3Npb24gbWV0aG9kCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEgIyBXZSBtYXkgbmVlZCBpdHMgY29tcHJlc3Npb24gbWV0aG9kCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbHptYSA9IE5vbmUKKworX19hbGxfXyA9IFsiQmFkWmlwRmlsZSIsICJCYWRaaXBmaWxlIiwgImVycm9yIiwKKyAgICAgICAgICAgIlpJUF9TVE9SRUQiLCAiWklQX0RFRkxBVEVEIiwgIlpJUF9CWklQMiIsICJaSVBfTFpNQSIsCiAgICAgICAgICAgICJpc196aXBmaWxlIiwgIlppcEluZm8iLCAiWmlwRmlsZSIsICJQeVppcEZpbGUiLCAiTGFyZ2VaaXBGaWxlIl0KIAogY2xhc3MgQmFkWmlwRmlsZShFeGNlcHRpb24pOgpAQCAtNDUsOCArNTYsMTcgQEAKICMgY29uc3RhbnRzIGZvciBaaXAgZmlsZSBjb21wcmVzc2lvbiBtZXRob2RzCiBaSVBfU1RPUkVEID0gMAogWklQX0RFRkxBVEVEID0gOAorWklQX0JaSVAyID0gMTIKK1pJUF9MWk1BID0gMTQKICMgT3RoZXIgWklQIGNvbXByZXNzaW9uIG1ldGhvZHMgbm90IHN1cHBvcnRlZAogCitERUZBVUxUX1ZFUlNJT04gPSAyMAorWklQNjRfVkVSU0lPTiA9IDQ1CitCWklQMl9WRVJTSU9OID0gNDYKK0xaTUFfVkVSU0lPTiA9IDYzCisjIHdlIHJlY29nbml6ZSAoYnV0IG5vdCBuZWNlc3NhcmlseSBzdXBwb3J0KSBhbGwgZmVhdHVyZXMgdXAgdG8gdGhhdCB2ZXJzaW9uCitNQVhfRVhUUkFDVF9WRVJTSU9OID0gNjMKKwogIyBCZWxvdyBhcmUgc29tZSBmb3JtYXRzIGFuZCBhc3NvY2lhdGVkIGRhdGEgZm9yIHJlYWRpbmcvd3JpdGluZyBoZWFkZXJzIHVzaW5nCiAjIHRoZSBzdHJ1Y3QgbW9kdWxlLiAgVGhlIG5hbWVzIGFuZCBzdHJ1Y3R1cmVzIG9mIGhlYWRlcnMvcmVjb3JkcyBhcmUgdGhvc2UgdXNlZAogIyBpbiB0aGUgUEtXQVJFIGRlc2NyaXB0aW9uIG9mIHRoZSBaSVAgZmlsZSBmb3JtYXQ6CkBAIC0zMTMsOCArMzMzLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSBpcyB1bml4LXkKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3N5c3RlbSA9IDMgICAgICAgICAgIyBTeXN0ZW0gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQotICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gMjAgICAgICAgICMgVmVyc2lvbiB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCi0gICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gMjAgICAgICAgIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKKyAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IERFRkFVTFRfVkVSU0lPTiAgIyBWZXJzaW9uIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKKyAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT04gIyBWZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0IGFyY2hpdmUKICAgICAgICAgc2VsZi5yZXNlcnZlZCA9IDAgICAgICAgICAgICAgICAjIE11c3QgYmUgemVybwogICAgICAgICBzZWxmLmZsYWdfYml0cyA9IDAgICAgICAgICAgICAgICMgWklQIGZsYWcgYml0cwogICAgICAgICBzZWxmLnZvbHVtZSA9IDAgICAgICAgICAgICAgICAgICMgVm9sdW1lIG51bWJlciBvZiBmaWxlIGhlYWRlcgpAQCAtMzQxLDYgKzM2MSw3IEBACiAKICAgICAgICAgZXh0cmEgPSBzZWxmLmV4dHJhCiAKKyAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgICMgRmlsZSBpcyBsYXJnZXIgdGhhbiB3aGF0IGZpdHMgaW50byBhIDQgYnl0ZSBpbnRlZ2VyLAogICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gdGhlIFpJUDY0IGV4dGVuc2lvbgpAQCAtMzQ5LDkgKzM3MCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAxLCBzdHJ1Y3QuY2FsY3NpemUoZm10KS00LCBmaWxlX3NpemUsIGNvbXByZXNzX3NpemUpCiAgICAgICAgICAgICBmaWxlX3NpemUgPSAweGZmZmZmZmZmCiAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBtYXgoNDUsIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IG1heCg0NSwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IFpJUDY0X1ZFUlNJT04KIAorICAgICAgICBpZiBzZWxmLmNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgIGVsaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgc2VsZi5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHNlbGYuY3JlYXRlX3ZlcnNpb24pCiAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSBzZWxmLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKICAgICAgICAgaGVhZGVyID0gc3RydWN0LnBhY2soc3RydWN0RmlsZUhlYWRlciwgc3RyaW5nRmlsZUhlYWRlciwKICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24sIHNlbGYucmVzZXJ2ZWQsIGZsYWdfYml0cywKQEAgLTQ2MSw2ICs0ODgsMTI2IEBACiAgICAgICAgIHNlbGYuX1VwZGF0ZUtleXMoYykKICAgICAgICAgcmV0dXJuIGMKIAorCitjbGFzcyBMWk1BQ29tcHJlc3NvcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fY29tcCA9IE5vbmUKKworICAgIGRlZiBfaW5pdChzZWxmKToKKyAgICAgICAgcHJvcHMgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeydpZCc6IGx6bWEuRklMVEVSX0xaTUExfSkKKyAgICAgICAgc2VsZi5fY29tcCA9IGx6bWEuTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKKyAgICAgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfTFpNQTEsIHByb3BzKQorICAgICAgICBdKQorICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJzxCQkgnLCA5LCA0LCBsZW4ocHJvcHMpKSArIHByb3BzCisKKyAgICBkZWYgY29tcHJlc3Moc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmNvbXByZXNzKGRhdGEpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wLmNvbXByZXNzKGRhdGEpCisKKyAgICBkZWYgZmx1c2goc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2NvbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbml0KCkgKyBzZWxmLl9jb21wLmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbXAuZmx1c2goKQorCisKK2NsYXNzIExaTUFEZWNvbXByZXNzb3I6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2RlY29tcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLmVvZiA9IEZhbHNlCisKKyAgICBkZWYgZGVjb21wcmVzcyhzZWxmLCBkYXRhKToKKyAgICAgICAgaWYgc2VsZi5fZGVjb21wIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkICs9IGRhdGEKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0OgorICAgICAgICAgICAgICAgIHJldHVybiBiJycKKyAgICAgICAgICAgIHBzaXplLCA9IHN0cnVjdC51bnBhY2soJzxIJywgc2VsZi5fdW5jb25zdW1lZFsyOjRdKQorICAgICAgICAgICAgaWYgbGVuKHNlbGYuX3VuY29uc3VtZWQpIDw9IDQgKyBwc2l6ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgICAgIHNlbGYuX2RlY29tcCA9IGx6bWEuTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9WworICAgICAgICAgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfTFpNQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZFs0OjQgKyBwc2l6ZV0pCisgICAgICAgICAgICBdKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3VuY29uc3VtZWRbNCArIHBzaXplOl0KKyAgICAgICAgICAgIGRlbCBzZWxmLl91bmNvbnN1bWVkCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fZGVjb21wLmRlY29tcHJlc3MoZGF0YSkKKyAgICAgICAgc2VsZi5lb2YgPSBzZWxmLl9kZWNvbXAuZW9mCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitjb21wcmVzc29yX25hbWVzID0geworICAgIDA6ICdzdG9yZScsCisgICAgMTogJ3NocmluaycsCisgICAgMjogJ3JlZHVjZScsCisgICAgMzogJ3JlZHVjZScsCisgICAgNDogJ3JlZHVjZScsCisgICAgNTogJ3JlZHVjZScsCisgICAgNjogJ2ltcGxvZGUnLAorICAgIDc6ICd0b2tlbml6ZScsCisgICAgODogJ2RlZmxhdGUnLAorICAgIDk6ICdkZWZsYXRlNjQnLAorICAgIDEwOiAnaW1wbG9kZScsCisgICAgMTI6ICdiemlwMicsCisgICAgMTQ6ICdsem1hJywKKyAgICAxODogJ3RlcnNlJywKKyAgICAxOTogJ2x6NzcnLAorICAgIDk3OiAnd2F2cGFjaycsCisgICAgOTg6ICdwcG1kJywKK30KKworZGVmIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbik6CisgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKKyAgICAgICAgcGFzcworICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0RFRkxBVEVEOgorICAgICAgICBpZiBub3QgemxpYjoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQorICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0JaSVAyOgorICAgICAgICBpZiBub3QgYnoyOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSBiejIgbW9kdWxlIikKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9MWk1BOgorICAgICAgICBpZiBub3QgbHptYToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisKKworZGVmIF9nZXRfY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKKyAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgcmV0dXJuIHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLTE1KQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgIHJldHVybiBiejIuQloyQ29tcHJlc3NvcigpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICByZXR1cm4gTFpNQUNvbXByZXNzb3IoKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKworZGVmIF9nZXRfZGVjb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgorICAgIGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICByZXR1cm4gemxpYi5kZWNvbXByZXNzb2JqKC0xNSkKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gYnoyLkJaMkRlY29tcHJlc3NvcigpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICByZXR1cm4gTFpNQURlY29tcHJlc3NvcigpCisgICAgZWxzZToKKyAgICAgICAgZGVzY3IgPSBjb21wcmVzc29yX25hbWVzLmdldChjb21wcmVzc190eXBlKQorICAgICAgICBpZiBkZXNjcjoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQgKCVzKSIgJSAoY29tcHJlc3NfdHlwZSwgZGVzY3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3Npb24gdHlwZSAlZCIgJSAoY29tcHJlc3NfdHlwZSwpKQorCisKIGNsYXNzIFppcEV4dEZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgogICAgICIiIkZpbGUtbGlrZSBvYmplY3QgZm9yIHJlYWRpbmcgYW4gYXJjaGl2ZSBtZW1iZXIuCiAgICAgICAgSXMgcmV0dXJuZWQgYnkgWmlwRmlsZS5vcGVuKCkuCkBAIC00ODIsMTMgKzYyOSwxMiBAQAogICAgICAgICBzZWxmLl9jbG9zZV9maWxlb2JqID0gY2xvc2VfZmlsZW9iagogCiAgICAgICAgIHNlbGYuX2NvbXByZXNzX3R5cGUgPSB6aXBpbmZvLmNvbXByZXNzX3R5cGUKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQogICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0ID0gemlwaW5mby5jb21wcmVzc19zaXplCisgICAgICAgIHNlbGYuX2xlZnQgPSB6aXBpbmZvLmZpbGVfc2l6ZQogCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gemxpYi5kZWNvbXByZXNzb2JqKC0xNSkKLSAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IGInJworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBfZ2V0X2RlY29tcHJlc3NvcihzZWxmLl9jb21wcmVzc190eXBlKQogCisgICAgICAgIHNlbGYuX2VvZiA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCkBAIC01NjMsNyArNzA5LDExIEBACiAgICAgICAgICIiIlJldHVybnMgYnVmZmVyZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIHBvc2l0aW9uLiIiIgogICAgICAgICBpZiBuID4gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0OgogICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJlYWQobikKLSAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCisgICAgICAgICAgICBpZiBsZW4oY2h1bmspID4gc2VsZi5fb2Zmc2V0OgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBjaHVuayArIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0KKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCAtPSBsZW4oY2h1bmspCiAKICAgICAgICAgIyBSZXR1cm4gdXAgdG8gNTEyIGJ5dGVzIHRvIHJlZHVjZSBhbGxvY2F0aW9uIG92ZXJoZWFkIGZvciB0aWdodCBsb29wcy4KICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OiBzZWxmLl9vZmZzZXQgKyA1MTJdCkBAIC01NzUsODAgKzcyNSwxMjMgQEAKICAgICAgICAgIiIiUmVhZCBhbmQgcmV0dXJuIHVwIHRvIG4gYnl0ZXMuCiAgICAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBOb25lLCBvciBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4uCiAgICAgICAgICIiIgotICAgICAgICBidWYgPSBiJycKLSAgICAgICAgaWYgbiBpcyBOb25lOgotICAgICAgICAgICAgbiA9IC0xCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBuIDwgMDoKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShuKQotICAgICAgICAgICAgZWxpZiBuID4gbGVuKGJ1Zik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobiAtIGxlbihidWYpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gYnVmCi0gICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fZW9mOgorICAgICAgICAgICAgICAgIGJ1ZiArPSBzZWxmLl9yZWFkMShzZWxmLk1BWF9OKQorICAgICAgICAgICAgcmV0dXJuIGJ1ZgogCi0gICAgZGVmIF91cGRhdGVfY3JjKHNlbGYsIG5ld2RhdGEsIGVvZik6CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICB3aGlsZSBuID4gMCBhbmQgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBidWYgKz0gZGF0YVs6bl0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgYnVmICs9IGRhdGEKKyAgICAgICAgICAgIG4gLT0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfdXBkYXRlX2NyYyhzZWxmLCBuZXdkYXRhKToKICAgICAgICAgIyBVcGRhdGUgdGhlIENSQyB1c2luZyB0aGUgZ2l2ZW4gZGF0YS4KICAgICAgICAgaWYgc2VsZi5fZXhwZWN0ZWRfY3JjIGlzIE5vbmU6CiAgICAgICAgICAgICAjIE5vIG5lZWQgdG8gY29tcHV0ZSB0aGUgQ1JDIGlmIHdlIGRvbid0IGhhdmUgYSByZWZlcmVuY2UgdmFsdWUKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLl9ydW5uaW5nX2NyYyA9IGNyYzMyKG5ld2RhdGEsIHNlbGYuX3J1bm5pbmdfY3JjKSAmIDB4ZmZmZmZmZmYKICAgICAgICAgIyBDaGVjayB0aGUgQ1JDIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKLSAgICAgICAgaWYgZW9mIGFuZCBzZWxmLl9ydW5uaW5nX2NyYyAhPSBzZWxmLl9leHBlY3RlZF9jcmM6CisgICAgICAgIGlmIHNlbGYuX2VvZiBhbmQgc2VsZi5fcnVubmluZ19jcmMgIT0gc2VsZi5fZXhwZWN0ZWRfY3JjOgogICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQmFkIENSQy0zMiBmb3IgZmlsZSAlciIgJSBzZWxmLm5hbWUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgbik6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gbiBieXRlcyB3aXRoIGF0IG1vc3Qgb25lIHJlYWQoKSBzeXN0ZW0gY2FsbC4iIiIKIAotICAgICAgICAjIFNpbXBsaWZ5IGFsZ29yaXRobSAoYnJhbmNoaW5nKSBieSB0cmFuc2Zvcm1pbmcgbmVnYXRpdmUgbiB0byBsYXJnZSBuLgotICAgICAgICBpZiBuIDwgMCBvciBuIGlzIE5vbmU6Ci0gICAgICAgICAgICBuID0gc2VsZi5NQVhfTgorICAgICAgICBpZiBuIGlzIE5vbmUgb3IgbiA8IDA6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEoc2VsZi5NQVhfTikKKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgICAgICByZXR1cm4gYnVmCiAKLSAgICAgICAgIyBCeXRlcyBhdmFpbGFibGUgaW4gcmVhZCBidWZmZXIuCi0gICAgICAgIGxlbl9yZWFkYnVmZmVyID0gbGVuKHNlbGYuX3JlYWRidWZmZXIpIC0gc2VsZi5fb2Zmc2V0CisgICAgICAgIGVuZCA9IG4gKyBzZWxmLl9vZmZzZXQKKyAgICAgICAgaWYgZW5kIDwgbGVuKHNlbGYuX3JlYWRidWZmZXIpOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6ZW5kXQorICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICByZXR1cm4gYnVmCisKKyAgICAgICAgbiA9IGVuZCAtIGxlbihzZWxmLl9yZWFkYnVmZmVyKQorICAgICAgICBidWYgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKKyAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICBpZiBuID4gMDoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMShuKQorICAgICAgICAgICAgaWYgbiA8IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gZGF0YQorICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IG4KKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YVs6bl0KKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgIHJldHVybiBidWYKKworICAgIGRlZiBfcmVhZDEoc2VsZiwgbik6CisgICAgICAgICMgUmVhZCB1cCB0byBuIGNvbXByZXNzZWQgYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwsCisgICAgICAgICMgZGVjcnlwdCBhbmQgZGVjb21wcmVzcyB0aGVtLgorICAgICAgICBpZiBzZWxmLl9lb2Ygb3IgbiA8PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJwogCiAgICAgICAgICMgUmVhZCBmcm9tIGZpbGUuCi0gICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPiAwIGFuZCBuID4gbGVuX3JlYWRidWZmZXIgKyBsZW4oc2VsZi5fdW5jb25zdW1lZCk6Ci0gICAgICAgICAgICBuYnl0ZXMgPSBuIC0gbGVuX3JlYWRidWZmZXIgLSBsZW4oc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1heChuYnl0ZXMsIHNlbGYuTUlOX1JFQURfU0laRSkKLSAgICAgICAgICAgIG5ieXRlcyA9IG1pbihuYnl0ZXMsIHNlbGYuX2NvbXByZXNzX2xlZnQpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgorICAgICAgICAgICAgIyMgSGFuZGxlIHVuY29uc3VtZWQgZGF0YS4KKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsCisgICAgICAgICAgICBpZiBuID4gbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fcmVhZDIobiAtIGxlbihkYXRhKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkMihuKQogCi0gICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG5ieXRlcykKLSAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gbGVuKGRhdGEpCi0KLSAgICAgICAgICAgIGlmIGRhdGEgYW5kIHNlbGYuX2RlY3J5cHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgICAgICBzZWxmLl91cGRhdGVfY3JjKGRhdGEsIGVvZj0oc2VsZi5fY29tcHJlc3NfbGVmdD09MCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFByZXBhcmUgZGVmbGF0ZWQgYnl0ZXMgZm9yIGRlY29tcHJlc3Npb24uCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCi0KLSAgICAgICAgIyBIYW5kbGUgdW5jb25zdW1lZCBkYXRhLgotICAgICAgICBpZiAobGVuKHNlbGYuX3VuY29uc3VtZWQpID4gMCBhbmQgbiA+IGxlbl9yZWFkYnVmZmVyIGFuZAotICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQsCi0gICAgICAgICAgICAgICAgbWF4KG4gLSBsZW5fcmVhZGJ1ZmZlciwgc2VsZi5NSU5fUkVBRF9TSVpFKQotICAgICAgICAgICAgKQotCi0gICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgZW9mID0gbGVuKHNlbGYuX3VuY29uc3VtZWQpID09IDAgYW5kIHNlbGYuX2NvbXByZXNzX2xlZnQgPT0gMAotICAgICAgICAgICAgaWYgZW9mOgorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKKyAgICAgICAgZWxpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgICAgIG4gPSBtYXgobiwgc2VsZi5NSU5fUkVBRF9TSVpFKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGRhdGEsIG4pCisgICAgICAgICAgICBzZWxmLl9lb2YgPSAoc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLl9kZWNvbXByZXNzb3IudW5jb25zdW1lZF90YWlsKQorICAgICAgICAgICAgaWYgc2VsZi5fZW9mOgogICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5fZGVjb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fZW9mID0gc2VsZi5fZGVjb21wcmVzc29yLmVvZiBvciBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDAKIAotICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhLCBlb2Y9ZW9mKQotICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0Ol0gKyBkYXRhCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCisgICAgICAgIGRhdGEgPSBkYXRhWzpzZWxmLl9sZWZ0XQorICAgICAgICBzZWxmLl9sZWZ0IC09IGxlbihkYXRhKQorICAgICAgICBpZiBzZWxmLl9sZWZ0IDw9IDA6CisgICAgICAgICAgICBzZWxmLl9lb2YgPSBUcnVlCisgICAgICAgIHNlbGYuX3VwZGF0ZV9jcmMoZGF0YSkKKyAgICAgICAgcmV0dXJuIGRhdGEKIAotICAgICAgICAjIFJlYWQgZnJvbSBidWZmZXIuCi0gICAgICAgIGRhdGEgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDogc2VsZi5fb2Zmc2V0ICsgbl0KLSAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihkYXRhKQorICAgIGRlZiBfcmVhZDIoc2VsZiwgbik6CisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX2xlZnQgPD0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKKworICAgICAgICBuID0gbWF4KG4sIHNlbGYuTUlOX1JFQURfU0laRSkKKyAgICAgICAgbiA9IG1pbihuLCBzZWxmLl9jb21wcmVzc19sZWZ0KQorCisgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlb2JqLnJlYWQobikKKyAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCAtPSBsZW4oZGF0YSkKKworICAgICAgICBpZiBzZWxmLl9kZWNyeXB0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhID0gYnl0ZXMobWFwKHNlbGYuX2RlY3J5cHRlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBkYXRhCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CkBAIC02NjcsNyArODYwLDggQEAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KICAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KLSAgICBjb21wcmVzc2lvbjogWklQX1NUT1JFRCAobm8gY29tcHJlc3Npb24pIG9yIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYikuCisgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKKyAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KICAgICAgICAgICAgICAgICBuZWVkZWQsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoaXMgd291bGQKICAgICAgICAgICAgICAgICBiZSBuZWNlc3NhcnkuCkBAIC02ODEsMTQgKzg3NSw3IEBACiAgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgImEiKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignWmlwRmlsZSgpIHJlcXVpcmVzIG1vZGUgInIiLCAidyIsIG9yICJhIicpCiAKLSAgICAgICAgaWYgY29tcHJlc3Npb24gPT0gWklQX1NUT1JFRDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfREVGTEFURUQ6Ci0gICAgICAgICAgICBpZiBub3QgemxpYjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQogCiAgICAgICAgIHNlbGYuX2FsbG93WmlwNjQgPSBhbGxvd1ppcDY0CiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IEZhbHNlCkBAIC04MTQsNiArMTAwMSw5IEBACiAgICAgICAgICAgICAoeC5jcmVhdGVfdmVyc2lvbiwgeC5jcmVhdGVfc3lzdGVtLCB4LmV4dHJhY3RfdmVyc2lvbiwgeC5yZXNlcnZlZCwKICAgICAgICAgICAgICAgICB4LmZsYWdfYml0cywgeC5jb21wcmVzc190eXBlLCB0LCBkLAogICAgICAgICAgICAgICAgIHguQ1JDLCB4LmNvbXByZXNzX3NpemUsIHguZmlsZV9zaXplKSA9IGNlbnRkaXJbMToxMl0KKyAgICAgICAgICAgIGlmIHguZXh0cmFjdF92ZXJzaW9uID4gTUFYX0VYVFJBQ1RfVkVSU0lPTjoKKyAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJ6aXAgZmlsZSB2ZXJzaW9uICUuMWYiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4LmV4dHJhY3RfdmVyc2lvbiAvIDEwKSkKICAgICAgICAgICAgIHgudm9sdW1lLCB4LmludGVybmFsX2F0dHIsIHguZXh0ZXJuYWxfYXR0ciA9IGNlbnRkaXJbMTU6MThdCiAgICAgICAgICAgICAjIENvbnZlcnQgZGF0ZS90aW1lIGNvZGUgdG8gKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjKQogICAgICAgICAgICAgeC5fcmF3X3RpbWUgPSB0CkBAIC04MzYsMTAgKzEwMjYsNyBAQAogCiAgICAgZGVmIG5hbWVsaXN0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgaW4gdGhlIGFyY2hpdmUuIiIiCi0gICAgICAgIGwgPSBbXQotICAgICAgICBmb3IgZGF0YSBpbiBzZWxmLmZpbGVsaXN0OgotICAgICAgICAgICAgbC5hcHBlbmQoZGF0YS5maWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGwKKyAgICAgICAgcmV0dXJuIFtkYXRhLmZpbGVuYW1lIGZvciBkYXRhIGluIHNlbGYuZmlsZWxpc3RdCiAKICAgICBkZWYgaW5mb2xpc3Qoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY2xhc3MgWmlwSW5mbyBpbnN0YW5jZXMgZm9yIGZpbGVzIGluIHRoZQpAQCAtOTUwLDYgKzExMzcsMTQgQEAKICAgICAgICAgaWYgZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXToKICAgICAgICAgICAgIHplZl9maWxlLnJlYWQoZmhlYWRlcltfRkhfRVhUUkFfRklFTERfTEVOR1RIXSkKIAorICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDIwOgorICAgICAgICAgICAgIyBaaXAgMi43OiBjb21wcmVzc2VkIHBhdGNoZWQgZGF0YQorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiY29tcHJlc3NlZCBwYXRjaGVkIGRhdGEgKGZsYWcgYml0IDUpIikKKworICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDQwOgorICAgICAgICAgICAgIyBzdHJvbmcgZW5jcnlwdGlvbgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigic3Ryb25nIGVuY3J5cHRpb24gKGZsYWcgYml0IDYpIikKKwogICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDgwMDoKICAgICAgICAgICAgICMgVVRGLTggZmlsZW5hbWUKICAgICAgICAgICAgIGZuYW1lX3N0ciA9IGZuYW1lLmRlY29kZSgidXRmLTgiKQpAQCAtMTA3MCwxMSArMTI2NSw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRCBhbmQgbm90IHpsaWI6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSB6bGliIG1vZHVsZSIpCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgbm90IGluIChaSVBfU1RPUkVELCBaSVBfREVGTEFURUQpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIGlmIHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQpAQCAtMTExMiw2ICsxMzAzLDkgQEAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQogICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCiAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQpAQCAtMTEyNSwxNyArMTMxOSwxMyBAQAogICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKCkpCiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAjIE11c3Qgb3ZlcndyaXRlIENSQyBhbmQgc2l6ZXMgd2l0aCBjb3JyZWN0IGRhdGEgbGF0ZXIKICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAogICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplID0gMAogICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKCkpCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgICAgICBjbXByID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY21wciA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgpAQCAtMTE4OCwxMyArMTM3OCwxNSBAQAogICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQogICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCiAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAgICAgICAgICB6bGliLkRFRkxBVEVELCAtMTUpCisgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgIGlmIGNvOgogICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQogICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQogICAgICAgICBlbHNlOgpAQCAtMTI0NiwxOCArMTQzOCwyMiBAQAogICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gemluZm8uaGVhZGVyX29mZnNldAogCiAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHppbmZvLmV4dHJhCisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCiAgICAgICAgICAgICAgICAgaWYgZXh0cmE6CiAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGEgWklQNjQgZmllbGQgdG8gdGhlIGV4dHJhJ3MKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8SEgnICsgJ1EnKmxlbihleHRyYSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQogCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heCg0NSwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heCg0NSwgemluZm8uY3JlYXRlX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gemluZm8uZXh0cmFjdF92ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gemluZm8uY3JlYXRlX3ZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoQlpJUDJfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChMWk1BX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorCisgICAgICAgICAgICAgICAgZXh0cmFjdF92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5leHRyYWN0X3ZlcnNpb24pCisgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZsYWdfYml0cyA9IHppbmZvLl9lbmNvZGVGaWxlbmFtZUZsYWdzKCkKICAgICAgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CmluZGV4IGRlMmY1Y2IuLmZhMDRiOTcgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CkBAIC04LDcwICs4LDEyNSBAQAogYW4gSW5zdGFsbGVyIHBhY2thZ2UgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIHBsdXMgb3RoZXIgZmlsZXMgaW4gYGByZXNvdXJjZXNgYCAKIGFuZCBgYHNjcmlwdHNgYCBhbmQgcGxhY2VkIHRoYXQgb24gYSBgYC5kbWdgYCBkaXNrIGltYWdlLgogCi1BcyBvZiBQeXRob24gMi43LnggYW5kIDMuMiwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKLWZvciBlYWNoIHJlbGVhc2U6CitBcyBvZiBQeXRob24gMy4zLjAsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCitmb3IgZWFjaCByZWxlYXNlLgogCiAxLiAgMzItYml0LW9ubHksIGkzODYgYW5kIFBQQyB1bml2ZXJzYWwsIGNhcGFibGUgb24gcnVubmluZyBvbiBhbGwgbWFjaGluZXMKLSAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42OjoKKyAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuNSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuODo6CiAKLSAgICAgICAgcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCisgICAgICAgIC91c3IvYmluL3B5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAorICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsgXAorICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9MzItYml0IFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC41CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNS44IEludGVsIG9yIFBQQworICAgICAgICAqIFhjb2RlIDMuMS40CisgICAgICAgICogYGBNYWNPU1gxMC41YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNWBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogTWFjIE9TIFggMTAuNi44IHdpdGggWGNvZGUgMy4yLjYKKyAgICAgICAgICAgIC0gbmVlZCB0byBjaGFuZ2UgYGAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy97VGNsLFRrfS5mcmFtZXdvcmsvVmVyc2lvbi9DdXJyZW50YGAgdG8gYGA4LjRgYAorICAgICAgICAqIE5vdGUgWGNvZGUgNC4qIGRvZXMgbm90IHN1cHBvcnQgYnVpbGRpbmcgZm9yIFBQQyBzbyBjYW5ub3QgYmUgdXNlZCBmb3IgdGhpcyBidWlsZAorCisyLiAgNjQtYml0IC8gMzItYml0LCB4ODZfNjQgYW5kIGkzODYgdW5pdmVyc2FsLCBmb3IgT1MgWCAxMC42IChhbmQgbGF0ZXIpOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjYuc2RrIFwKKyAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPWludGVsIFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC42CisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogTkN1cnNlcyA1LjkgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTAzNykKKyAgICAgICAgKiBTUUxpdGUgMy43LjEzCisgICAgICAgICogWFogNS4wLjMKKworICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCisKKyAgICAgICAgKiByZWFkbGluZSBtb2R1bGUgbGlua3Mgd2l0aCBBcHBsZSBCU0QgZWRpdGxpbmUgKGxpYmVkaXQpCisKKyAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUuOSAob3IgbGF0ZXIpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKKworICAgIC0gcmVjb21tZW5kZWQgYnVpbGQgZW52aXJvbm1lbnQ6CisKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42LjggKG9yIGxhdGVyKQorICAgICAgICAqIFhjb2RlIDMuMi42CisgICAgICAgICogYGBNYWNPU1gxMC42YGAgU0RLCisgICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNmBgCisgICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNiBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorCisgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgorCisgICAgICAgICogbm9uZS4gIFhjb2RlIDQueCBjdXJyZW50bHkgc3VwcGxpZXMgdHdvIEMgY29tcGlsZXJzLgorICAgICAgICAgIGBgbGx2bS1nY2MtNC4yLjFgYCBoYXMgYmVlbiBmb3VuZCB0byBtaXNjb21waWxlIFB5dGhvbiAzLjMueCBhbmQKKyAgICAgICAgICBwcm9kdWNlIGEgbm9uLWZ1bmN0aW9uYWwgUHl0aG9uIGV4ZWN1dGFibGUuICBBcyBpdCBhcHBlYXJzIHRvIGJlCisgICAgICAgICAgY29uc2lkZXJlZCBhIG1pZ3JhdGlvbiBhaWQgYnkgQXBwbGUgYW5kIGlzIG5vdCBsaWtlbHkgdG8gYmUgZml4ZWQsCisgICAgICAgICAgaXRzIHVzZSBzaG91bGQgYmUgYXZvaWRlZC4gIFRoZSBvdGhlciBjb21waWxlciwgYGBjbGFuZ2BgLCBoYXMgYmVlbgorICAgICAgICAgIHVuZGVyZ29pbmcgcmFwaWQgZGV2ZWxvcG1lbnQuICBXaGlsZSBpdCBhcHBlYXJzIHRvIGhhdmUgYmVjb21lCisgICAgICAgICAgcHJvZHVjdGlvbi1yZWFkeSBpbiB0aGUgbW9zdCByZWNlbnQgWGNvZGUgNCByZWxlYXNlcyAoWGNvZGUgNC40LjEKKyAgICAgICAgICBhcyBvZiB0aGlzIHdyaXRpbmcpLCB0aGVyZSBhcmUgc3RpbGwgc29tZSBvcGVuIGlzc3VlcyB3aGVuCisgICAgICAgICAgYnVpbGRpbmcgUHl0aG9uIGFuZCB0aGVyZSBoYXMgbm90IHlldCBiZWVuIHRoZSBsZXZlbCBvZiBleHBvc3VyZSBpbgorICAgICAgICAgIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHRoYXQgdGhlIFhjb2RlIDMgZ2NjLTQuMiBjb21waWxlciBoYXMgaGFkLgorCisKKyogICBGb3IgUHl0aG9uIDIuNy54IGFuZCAzLjIueCwgdGhlIDMyLWJpdC1vbmx5IGluc3RhbGxlciB3YXMgY29uZmlndXJlZCB0bworICAgIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IHRocm91Z2ggKGF0IGxlYXN0KSAxMC42LiAgQmVjYXVzZSBpdCBpcworICAgIGJlbGlldmVkIHRoYXQgdGhlcmUgYXJlIGZldyBzeXN0ZW1zIHN0aWxsIHJ1bm5pbmcgT1MgWCAxMC4zIG9yIDEwLjQKKyAgICBhbmQgYmVjYXVzZSBpdCBoYXMgYmVjb21lIGluY3JlYXNpbmdseSBkaWZmaWN1bHQgdG8gdGVzdCBhbmQKKyAgICBzdXBwb3J0IHRoZSBkaWZmZXJlbmNlcyBpbiB0aGVzZSBlYXJsaWVyIHN5c3RlbXMsIGFzIG9mIFB5dGhvbiAzLjMuMCB0aGUgUFNGCisgICAgMzItYml0IGluc3RhbGxlciBubyBsb25nZXIgc3VwcG9ydHMgdGhlbS4gIEZvciByZWZlcmVuY2UgaW4gYnVpbGRpbmcgc3VjaAorICAgIGFuIGluc3RhbGxlciB5b3Vyc2VsZiwgdGhlIGRldGFpbHMgYXJlOjoKKworICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKICAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayBcCiAgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz0zMi1iaXQgXAogICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjMgCi0gICAgICAgICAgICAjIFRoZXNlIGFyZSB0aGUgY3VycmVudCBkZWZhdWx0IG9wdGlvbnMKIAogICAgIC0gYnVpbGRzIHRoZSBmb2xsb3dpbmcgdGhpcmQtcGFydHkgbGlicmFyaWVzCiAKICAgICAgICAgKiBCemlwMgotICAgICAgICAqIFpsaWIgMS4yLjMKKyAgICAgICAgKiBOQ3Vyc2VzCiAgICAgICAgICogR05VIFJlYWRsaW5lIChHUEwpCiAgICAgICAgICogU1FMaXRlIDMKLSAgICAgICAgKiBOQ3Vyc2VzCisgICAgICAgICogWFoKKyAgICAgICAgKiBabGliIDEuMi4zCiAgICAgICAgICogT3JhY2xlIFNsZWVweWNhdCBEQiA0LjggKFB5dGhvbiAyLnggb25seSkKIAogICAgIC0gcmVxdWlyZXMgQWN0aXZlU3RhdGUgYGBUY2wvVGsgOC40YGAgKGN1cnJlbnRseSA4LjQuMTkpIHRvIGJlIGluc3RhbGxlZCBmb3IgYnVpbGRpbmcKIAotICAgIC0gY3VycmVudCB0YXJnZXQgYnVpbGQgZW52aXJvbm1lbnQ6CisgICAgLSByZWNvbW1lbmRlZCBidWlsZCBlbnZpcm9ubWVudDoKICAgICAgICAgCiAgICAgICAgICogTWFjIE9TIFggMTAuNS44IFBQQyBvciBJbnRlbAogICAgICAgICAqIFhjb2RlIDMuMS40IChvciBsYXRlcikKICAgICAgICAgKiBgYE1hY09TWDEwLjR1YGAgU0RLIChsYXRlciBTREtzIGRvIG5vdCBzdXBwb3J0IFBQQyBHMyBwcm9jZXNzb3JzKQogICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjNgYAogICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMGBgCi0gICAgICAgICogUHl0aG9uIDIubiAobiA+PSA0KSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAorICAgICAgICAqIHN5c3RlbSBQeXRob24gMi41IGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIHdpdGggU3BoaW54CiAKICAgICAtIGFsdGVybmF0ZSBidWlsZCBlbnZpcm9ubWVudHM6CiAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC40LjExIHdpdGggWGNvZGUgMi41Ci0gICAgICAgICogTWFjIE9TIFggMTAuNi42IHdpdGggWGNvZGUgMy4yLjUKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42Ljggd2l0aCBYY29kZSAzLjIuNgogICAgICAgICAgICAgLSBuZWVkIHRvIGNoYW5nZSBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3tUY2wsVGt9LmZyYW1ld29yay9WZXJzaW9uL0N1cnJlbnRgYCB0byBgYDguNGBgCiAKLTIuICA2NC1iaXQgLyAzMi1iaXQsIHg4Nl82NCBhbmQgaTM4NiB1bml2ZXJzYWwsIGZvciBPUyBYIDEwLjYgKGFuZCBsYXRlcik6OgotCi0gICAgICAgIHB5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAotICAgICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNi5zZGsgXAotICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9aW50ZWwgXAotICAgICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjYKLQotICAgIC0gdXNlcyBzeXN0ZW0tc3VwcGxpZWQgdmVyc2lvbnMgb2YgdGhpcmQtcGFydHkgbGlicmFyaWVzCi0gICAgCi0gICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQotICAgICAgICAqIGJ1aWxkcyBPcmFjbGUgU2xlZXB5Y2F0IERCIDQuOCAoUHl0aG9uIDIueCBvbmx5KQotCi0gICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LjkgKG9yIGxhdGVyKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCi0KLSAgICAtIGN1cnJlbnQgdGFyZ2V0IGJ1aWxkIGVudmlyb25tZW50OgotICAgICAgICAKLSAgICAgICAgKiBNYWMgT1MgWCAxMC42LjYgKG9yIGxhdGVyKQotICAgICAgICAqIFhjb2RlIDMuMi41IChvciBsYXRlcikKLSAgICAgICAgKiBgYE1hY09TWDEwLjZgYCBTREsKLSAgICAgICAgKiBgYE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC42YGAKLSAgICAgICAgKiBBcHBsZSBgYGdjYy00LjJgYAotICAgICAgICAqIFB5dGhvbiAyLm4gKG4gPj0gNCkgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKLQotICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKLQotICAgICAgICAqIG5vbmUKIAogCiBHZW5lcmFsIFByZXJlcXVpc2l0ZXMKQEAgLTg3LDYgKzE0MiwxMSBAQAogKiBJdCBpcyBzYWZlc3QgdG8gc3RhcnQgZWFjaCB2YXJpYW50IGJ1aWxkIHdpdGggYW4gZW1wdHkgc291cmNlIGRpcmVjdG9yeQogICBwb3B1bGF0ZWQgd2l0aCBhIGZyZXNoIGNvcHkgb2YgdGhlIHVudGFycmVkIHNvdXJjZS4KIAorKiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSByZW1vdmUgYW55IGV4aXN0aW5nIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZQorICBQeXRob24gYmVpbmcgYnVpbHQ6OgorCisgICAgICBzdWRvIHJtIC1yZiAvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvbi5uCisKIAogVGhlIFJlY2lwZQogLS0tLS0tLS0tLQpAQCAtMTA3LDkgKzE2Nyw5IEBACiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIGEgNC13YXkgdW5pdmVyc2FsIGluc3RhbGxlciB0aGF0IHJ1bnMgb24gCi1PUyBYIExlb3BhcmQgb3IgbGF0ZXI6OgorT1MgWCAxMC41IExlb3BhcmQgb3IgbGF0ZXI6OgogCi0gIHB5dGhvbiAyLjYgL2J1aWxkLWluc3RhbGxlci5weSBcCisgICAgL3Vzci9iaW4vcHl0aG9uIC9idWlsZC1pbnN0YWxsZXIucHkgXAogICAgICAgICAtLWRlcC10YXJnZXQ9MTAuNQogICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz1hbGwKICAgICAgICAgLS1zZGstcGF0aD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNS5zZGsKQEAgLTEyMCw3ICsxODAsOCBAQAogdmFyaWFudHMgY2FuIG9ubHkgYmUgcnVuIG9uIEc1IG1hY2hpbmVzIHJ1bm5pbmcgMTAuNS4gIE5vdGUgdGhhdCwKIHdoaWxlIE9TIFggMTAuNiBpcyBvbmx5IHN1cHBvcnRlZCBvbiBJbnRlbC1iYXNlZCBtYWNoaW5lcywgaXQgaXMgcG9zc2libGUKIHRvIHJ1biBgYHBwY2BgICgzMi1iaXQpIGV4ZWN1dGFibGVzIHVubW9kaWZpZWQgdGhhbmtzIHRvIHRoZSBSb3NldHRhIHBwYwotZW11bGF0aW9uIGluIE9TIFggMTAuNSBhbmQgMTAuNi4KK2VtdWxhdGlvbiBpbiBPUyBYIDEwLjUgYW5kIDEwLjYuICBUaGUgNC13YXkgaW5zdGFsbGVyIHZhcmlhbnQgbXVzdCBiZQorYnVpbHQgd2l0aCBYY29kZSAzLiAgSXQgaXMgbm90IHJlZ3VsYXJseSBidWlsdCBvciB0ZXN0ZWQuCiAKIE90aGVyIGBgLS11bml2ZXJzYWwtYXJjaHNgYCBvcHRpb25zIGFyZSBgYDY0LWJpdGBgIChgYHg4Nl82NGBgLCBgYHBwYzY0YGApLAogYW5kIGBgMy13YXlgYCAoYGBwcGNgYCwgYGBpMzg2YGAsIGBgeDg2XzY0YGApLiAgTm9uZSBvZiB0aGVzZSBvcHRpb25zCkBAIC0xMzMsMTUgKzE5NCwyMSBAQAogSWRlYWxseSwgdGhlIHJlc3VsdGluZyBiaW5hcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkIGFuZCB0aGUgdGVzdCBzdWl0ZSBydW4KIG9uIGFsbCBzdXBwb3J0ZWQgT1MgWCByZWxlYXNlcyBhbmQgYXJjaGl0ZWN0dXJlcy4gIEFzIGEgcHJhY3RpY2FsIG1hdHRlciwKIHRoYXQgaXMgZ2VuZXJhbGx5IG5vdCBwb3NzaWJsZS4gIEF0IGEgbWluaW11bSwgdmFyaWFudCAxIHNob3VsZCBiZSBydW4gb24KLWF0IGxlYXN0IG9uZSBJbnRlbCwgb25lIFBQQyBHNCwgYW5kIG9uZSBQUEMgRzMgc3lzdGVtIGFuZCBvbmUgZWFjaCBvZiAKLU9TIFggMTAuNiwgMTAuNSwgMTAuNCwgYW5kIDEwLjMuOS4gIE5vdCBhbGwgdGVzdHMgcnVuIG9uIDEwLjMuOS4KLVZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjYgaW4gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBtb2Rlcy46OgorYSBQUEMgRzQgc3lzdGVtIHdpdGggT1MgWCAxMC41IGFuZCBhdCBsZWFzdCBvbmUgSW50ZWwgc3lzdGVtIHJ1bm5pbmcgT1MgWAorMTAuOCwgMTAuNywgMTAuNiwgb3IgMTAuNS4gIFZhcmlhbnQgMiBzaG91bGQgYmUgcnVuIG9uIDEwLjgsIDEwLjcsIGFuZCAxMC42CitzeXN0ZW1zIGluIGJvdGggMzItYml0IGFuZCA2NC1iaXQgbW9kZXMuOjoKIAotICAgIGFyY2ggLWkzODYgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QucmVncnRlc3QgLXcgLXUgYWxsIAotICAgIGFyY2ggLVg4Nl82NCAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdC5yZWdydGVzdCAtdyAtdSBhbGwKKyAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4gLW0gdGVzdCAtdyAtdSBhbGwsLWxhcmdlZmlsZQorICAgIC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubi0zMiAtbSB0ZXN0IC13IC11IGFsbAogICAgIAogQ2VydGFpbiB0ZXN0cyB3aWxsIGJlIHNraXBwZWQgYW5kIHNvbWUgY2F1c2UgdGhlIGludGVycHJldGVyIHRvIGZhaWwKIHdoaWNoIHdpbGwgbGlrZWx5IGdlbmVyYXRlIGBgUHl0aG9uIHF1aXQgdW5leHBlY3RlZGx5YGAgYWxlcnQgbWVzc2FnZXMKLXRvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGNhbgotYmUgaWdub3JlZC4KK3RvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGFyZSBub3JtYWwKK2R1cmluZyB0ZXN0aW5nIGFuZCBjYW4gYmUgaWdub3JlZC4KKworSXQgaXMgYWxzbyByZWNvbW1lbmQgdG8gbGF1bmNoIElETEUgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIGF0IGxlYXN0CitmdW5jdGlvbmFsLiAgRG91YmxlLWNsaWNrIG9uIHRoZSBJRExFIGFwcCBpY29uIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob25uLm5gYC4KK0l0IHNob3VsZCBhbHNvIGJlIHRlc3RlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgorCisgICAgL3Vzci9sb2NhbC9iaW4vaWRsZW4ubgogCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBiYTkyMDEyLi5iZDBjNDc2IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEsNyArMSw3IEBACi0jIS91c3IvYmluL3B5dGhvbgorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAiIiIKIFRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gYnVpbGQgIm9mZmljaWFsIiB1bml2ZXJzYWwgaW5zdGFsbGVycyBvbiBNYWMgT1MgWC4KLUl0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjQsIFhjb2RlIDIuMiBhbmQgdGhlIDEwLjR1IFNESyBmb3IKK0l0IHJlcXVpcmVzIGF0IGxlYXN0IE1hYyBPUyBYIDEwLjUsIFhjb2RlIDMsIGFuZCB0aGUgMTAuNHUgU0RLIGZvcgogMzItYml0IGJ1aWxkcy4gIDY0LWJpdCBvciBmb3VyLXdheSB1bml2ZXJzYWwgYnVpbGRzIHJlcXVpcmUgYXQgbGVhc3QKIE9TIFggMTAuNSBhbmQgdGhlIDEwLjUgU0RLLgogCkBAIC0xMCwxOCArMTAsNDEgQEAKIHdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24sIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdAogUHl0aG9uIDIuNC4KIAorSW4gYWRkaXRpb24gdG8gd2hhdCBpcyBzdXBwbGllZCB3aXRoIE9TIFggMTAuNSsgYW5kIFhjb2RlIDMrLCB0aGUgc2NyaXB0CityZXF1aXJlcyBhbiBpbnN0YWxsZWQgdmVyc2lvbiBvZiBoZyBhbmQgYSB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mCitUY2wvVGsgOC40IChmb3IgT1MgWCAxMC40IGFuZCAxMC41IGRlcGxveW1lbnQgdGFyZ2V0cykgb3IgVGNsL1RLIDguNQorKGZvciAxMC42IG9yIGxhdGVyKSBpbnN0YWxsZWQgaW4gL0xpYnJhcnkvRnJhbWV3b3Jrcy4gIFdoZW4gaW5zdGFsbGVkLAordGhlIFB5dGhvbiBidWlsdCBieSB0aGlzIHNjcmlwdCB3aWxsIGF0dGVtcHQgdG8gZHluYW1pY2FsbHkgbGluayBmaXJzdCB0bworVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSBmYWxsCitiYWNrIHRvIHRoZSBvbmVzIGluIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmsuICBGb3IgdGhlIGJ1aWxkLCB3ZSByZWNvbW1lbmQKK2luc3RhbGxpbmcgdGhlIG1vc3QgcmVjZW50IEFjdGl2ZVRjbCA4LjQgb3IgOC41IHZlcnNpb24uCisKKzMyLWJpdC1vbmx5IGluc3RhbGxlciBidWlsZHMgYXJlIHN0aWxsIHBvc3NpYmxlIG9uIE9TIFggMTAuNCB3aXRoIFhjb2RlIDIuNQorYW5kIHRoZSBpbnN0YWxsYXRpb24gb2YgYWRkaXRpb25hbCBjb21wb25lbnRzLCBzdWNoIGFzIGEgbmV3ZXIgUHl0aG9uCisoMi41IGlzIG5lZWRlZCBmb3IgUHl0aG9uIHBhcnNlciB1cGRhdGVzKSwgaGcsIGFuZCBzdm4gKGZvciB0aGUgZG9jdW1lbnRhdGlvbgorYnVpbGQpLgorCiBVc2FnZTogc2VlIFVTQUdFIHZhcmlhYmxlIGluIHRoZSBzY3JpcHQuCiAiIiIKLWltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCB1cmxsaWIyLCBzdGF0LCB0aW1lLCBwd2QKLWltcG9ydCBncnAKK2ltcG9ydCBwbGF0Zm9ybSwgb3MsIHN5cywgZ2V0b3B0LCB0ZXh0d3JhcCwgc2h1dGlsLCBzdGF0LCB0aW1lLCBwd2QsIGdycAordHJ5OgorICAgIGltcG9ydCB1cmxsaWIyIGFzIHVybGxpYl9yZXF1ZXN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0IGFzIHVybGxpYl9yZXF1ZXN0CisKK1NUQVRfMG83NTUgPSAoIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUgorICAgICAgICAgICAgIHwgc3RhdC5TX0lSR1JQIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYR1JQCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJPVEggfCAgICAgICAgICAgICAgICBzdGF0LlNfSVhPVEggKQorCitTVEFUXzBvNzc1ID0gKCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IKKyAgICAgICAgICAgICB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JV0dSUCB8IHN0YXQuU19JWEdSUAorICAgICAgICAgICAgIHwgc3RhdC5TX0lST1RIIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYT1RIICkKIAogSU5DTFVERV9USU1FU1RBTVAgPSAxCiBWRVJCT1NFID0gMQogCiBmcm9tIHBsaXN0bGliIGltcG9ydCBQbGlzdAogCi1pbXBvcnQgTWFjT1MKLQogdHJ5OgogICAgIGZyb20gcGxpc3RsaWIgaW1wb3J0IHdyaXRlUGxpc3QKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQyLDIwICs2NSwzNSBAQAogICAgICAgICBpZiBsbi5zdGFydHN3aXRoKHZhcmlhYmxlKToKICAgICAgICAgICAgIHZhbHVlID0gbG5bbGVuKHZhcmlhYmxlKTpdLnN0cmlwKCkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZVsxOi0xXQotICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0KKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBmaW5kIHZhcmlhYmxlICVzIiAlIHZhcmlhYmxlWzotMV0pCisKK19jYWNoZV9nZXRWZXJzaW9uID0gTm9uZQogCiBkZWYgZ2V0VmVyc2lvbigpOgotICAgIHJldHVybiBncmVwVmFsdWUob3MucGF0aC5qb2luKFNSQ0RJUiwgJ2NvbmZpZ3VyZScpLCAnUEFDS0FHRV9WRVJTSU9OJykKKyAgICBnbG9iYWwgX2NhY2hlX2dldFZlcnNpb24KKyAgICBpZiBfY2FjaGVfZ2V0VmVyc2lvbiBpcyBOb25lOgorICAgICAgICBfY2FjaGVfZ2V0VmVyc2lvbiA9IGdyZXBWYWx1ZSgKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihTUkNESVIsICdjb25maWd1cmUnKSwgJ1BBQ0tBR0VfVkVSU0lPTicpCisgICAgcmV0dXJuIF9jYWNoZV9nZXRWZXJzaW9uCiAKIGRlZiBnZXRWZXJzaW9uVHVwbGUoKToKICAgICByZXR1cm4gdHVwbGUoW2ludChuKSBmb3IgbiBpbiBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nKV0pCiAKK2RlZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpOgorICAgIHJldHVybiB0dXBsZShbaW50KG4pIGZvciBuIGluIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpXSkKKworX2NhY2hlX2dldEZ1bGxWZXJzaW9uID0gTm9uZQorCiBkZWYgZ2V0RnVsbFZlcnNpb24oKToKKyAgICBnbG9iYWwgX2NhY2hlX2dldEZ1bGxWZXJzaW9uCisgICAgaWYgX2NhY2hlX2dldEZ1bGxWZXJzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gX2NhY2hlX2dldEZ1bGxWZXJzaW9uCiAgICAgZm4gPSBvcy5wYXRoLmpvaW4oU1JDRElSLCAnSW5jbHVkZScsICdwYXRjaGxldmVsLmgnKQogICAgIGZvciBsbiBpbiBvcGVuKGZuKToKICAgICAgICAgaWYgJ1BZX1ZFUlNJT04nIGluIGxuOgotICAgICAgICAgICAgcmV0dXJuIGxuLnNwbGl0KClbLTFdWzE6LTFdCi0gICAgcmFpc2UgUnVudGltZUVycm9yLCAiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iCisgICAgICAgICAgICBfY2FjaGVfZ2V0RnVsbFZlcnNpb24gPSBsbi5zcGxpdCgpWy0xXVsxOi0xXQorICAgICAgICAgICAgcmV0dXJuIF9jYWNoZV9nZXRGdWxsVmVyc2lvbgorICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGZpbmQgZnVsbCB2ZXJzaW9uPz8iKQogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMTExLDEzICsxNDksMTUgQEAKIERFUFRBUkdFVCA9ICcxMC4zJwogCiB0YXJnZXRfY2NfbWFwID0gewotICAgICAgICAnMTAuMyc6ICdnY2MtNC4wJywKLSAgICAgICAgJzEwLjQnOiAnZ2NjLTQuMCcsCi0gICAgICAgICcxMC41JzogJ2djYy00LjAnLAotICAgICAgICAnMTAuNic6ICdnY2MtNC4yJywKKyAgICAgICAgJzEwLjMnOiAoJ2djYy00LjAnLCAnZysrLTQuMCcpLAorICAgICAgICAnMTAuNCc6ICgnZ2NjLTQuMCcsICdnKystNC4wJyksCisgICAgICAgICcxMC41JzogKCdnY2MtNC4yJywgJ2crKy00LjInKSwKKyAgICAgICAgJzEwLjYnOiAoJ2djYy00LjInLCAnZysrLTQuMicpLAorICAgICAgICAnMTAuNyc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAorICAgICAgICAnMTAuOCc6ICgnY2xhbmcnLCAnY2xhbmcrKycpLAogfQogCi1DQyA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQorQ0MsIENYWCA9IHRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCiBQWVRIT05fMyA9IGdldFZlcnNpb25UdXBsZSgpID49ICgzLCAwKQogCkBAIC0xMzUsNiArMTc1LDEzIEBACiAgICAgLS11bml2ZXJzYWwtYXJjaHM9eCAgdW5pdmVyc2FsIGFyY2hpdGVjdHVyZXMgKG9wdGlvbnM6ICUoVU5JVkVSU0FMT1BUUylyLCBkZWZhdWx0OiAlKFVOSVZFUlNBTEFSQ0hTKXIpCiAiIiIpJSBnbG9iYWxzKCkKIAorIyBEaWN0IG9mIG9iamVjdCBmaWxlIG5hbWVzIHdpdGggc2hhcmVkIGxpYnJhcnkgbmFtZXMgdG8gY2hlY2sgYWZ0ZXIgYnVpbGRpbmcuCisjIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgd2UgZW5kZWQgdXAgZHluYW1pY2FsbHkgbGlua2luZyB3aXRoIHRoZSBzaGFyZWQKKyMgbGlicmFyeSBwYXRocyBhbmQgdmVyc2lvbnMgd2UgZXhwZWN0ZWQuICBGb3IgZXhhbXBsZToKKyMgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKKyMgICAgICAgICAgICAgICAgICAgICAgICcvTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RjbCcsCisjICAgICAgICAgICAgICAgICAgICAgICAnL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RrJ10KK0VYUEVDVEVEX1NIQVJFRF9MSUJTID0ge30KIAogIyBJbnN0cnVjdGlvbnMgZm9yIGJ1aWxkaW5nIGxpYnJhcmllcyB0aGF0IGFyZSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEKICMgYmF0dGVyaWVzIGluY2x1ZGVkIHB5dGhvbi4KQEAgLTE0Myw2ICsxOTAsNzEgQEAKIGRlZiBsaWJyYXJ5X3JlY2lwZXMoKToKICAgICByZXN1bHQgPSBbXQogCisgICAgTFRfMTBfNSA9IGJvb2woREVQVEFSR0VUIDwgJzEwLjUnKQorCisgICAgcmVzdWx0LmV4dGVuZChbCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjMiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuMy50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nZmVmZTUyZjllY2Q1MjFkZTJhOGNlMzhjMjFhMjc1NzQnLAorICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKKyAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICApLAorICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS45IiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS45LnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc4Y2I5YzQxMmU1ZjJkOTZiYzZmNDU5YWE4YzYyODJhMScsCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4LWJpbmRpbmciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1hZGEiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCisgICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtZGVidWciLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1ub3JtYWwiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC10ZXN0cyIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LW1hbnBhZ2VzIiwKKyAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCisgICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAorICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAorICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKKyAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCisgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHBhdGNoc2NyaXB0cz1bCisgICAgICAgICAgICAgICAgICAoImZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvLzUuOS9uY3Vyc2VzLTUuOS0yMDEyMDYxNi1wYXRjaC5zaC5iejIiLAorICAgICAgICAgICAgICAgICAgICJmNTRiZjAyYTM0OWY5NmE3YzRmMGQwMDkyMmYzYTBkNCIpLAorICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIHVzZUxERmxhZ3M9RmFsc2UsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgJiYgbWFrZSBpbnN0YWxsIERFU1RESVI9JXMgJiYgY2QgJXMvdXNyL2xvY2FsL2xpYiAmJiBsbiAtZnMgLi4vLi4vLi4vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliL2xpYiogLiclKAorICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKKyAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCisgICAgICAgICAgICAgICAgICBnZXRWZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICksCisgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy4xMyIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5zcWxpdGUub3JnL3NxbGl0ZS1hdXRvY29uZi0zMDcxMzAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSdjOTdkZjQwM2U4YTNkNWI2N2JiNDA4ZmNkNmFhYmQ4ZScsCisgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzNfUEFSRU5USEVTSVMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfUlRSRUUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9UQ0w9MCAnCisgICAgICAgICAgICAgICAgICclcycgJSAoJycsJy1EU1FMSVRFX1dJVEhPVVRfWk9ORU1BTExPQyAnKVtMVF8xMF81XSksCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WworICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAorICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCisgICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCisgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKKyAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICApLAorICAgICAgICBdKQorCiAgICAgaWYgREVQVEFSR0VUIDwgJzEwLjUnOgogICAgICAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KApAQCAtMTUwLDggKzI2Miw4IEBACiAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2J6aXAub3JnLzEuMC42L2J6aXAyLTEuMC42LnRhci5neiIsCiAgICAgICAgICAgICAgIGNoZWNrc3VtPScwMGI1MTZmNDcwNGQ0YTdjYjUwYTFkOTdlNmU4ZTE1YicsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAotICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCi0gICAgICAgICAgICAgICAgICBDQywKKyAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIENYWD0lcywgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyAtaXN5c3Jvb3QgJXMiJyUoCisgICAgICAgICAgICAgICAgICBDQywgQ1hYLAogICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKEFSQ0hMSVNUKSwKICAgICAgICAgICAgICAgICAgIFNES1BBVEgsCkBAIC0xNjIsOCArMjc0LDggQEAKICAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3Lmd6aXAub3JnL3psaWIvemxpYi0xLjIuMy50YXIuZ3oiLAogICAgICAgICAgICAgICBjaGVja3N1bT0nZGViYzYyNzU4NzE2YTE2OWRmOWY2MmU2YWIyYmM2MzQnLAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAotICAgICAgICAgICAgICAgICAgQ0MsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgaW5zdGFsbCBDQz0lcyBDWFg9JXMsIHByZWZpeD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAorICAgICAgICAgICAgICAgICAgQ0MsIENYWCwKICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCiAgICAgICAgICAgICAgICAgICAnIC1hcmNoICcuam9pbihBUkNITElTVCksCiAgICAgICAgICAgICAgICAgICBTREtQQVRILApAQCAtMTc4LDU4ICsyOTAsMTIgQEAKICAgICAgICAgICAgICAgcGF0Y2hlcz1bCiAgICAgICAgICAgICAgICAgICAjIFRoZSByZWFkbGluZSBtYWludGFpbmVycyBkb24ndCBkbyBhY3R1YWwgbWljcm8gcmVsZWFzZXMsIGJ1dAogICAgICAgICAgICAgICAgICAgIyBqdXN0IHNoaXAgYSBzZXQgb2YgcGF0Y2hlcy4KLSAgICAgICAgICAgICAgICAgICdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCi0gICAgICAgICAgICAgICAgICAnaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNi4xLXBhdGNoZXMvcmVhZGxpbmU2MS0wMDInLAorICAgICAgICAgICAgICAgICAgKCdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMScsCisgICAgICAgICAgICAgICAgICAgJ2M2NDJmMmU4NGQ4MjA4ODRiMGJmOWZkMTc2YmM2YzNmJyksCisgICAgICAgICAgICAgICAgICAoJ2h0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L3JlYWRsaW5lL3JlYWRsaW5lLTYuMS1wYXRjaGVzL3JlYWRsaW5lNjEtMDAyJywKKyAgICAgICAgICAgICAgICAgICAnMWE3Njc4MWExZWE3MzRlODMxNTg4Mjg1ZGI3ZWM5YjEnKSwKICAgICAgICAgICAgICAgXQogICAgICAgICAgICksCi0gICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuNy40IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vd3d3LnNxbGl0ZS5vcmcvc3FsaXRlLWF1dG9jb25mLTMwNzA0MDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzhmMGM2OTBiZmIzM2MzY2JiYzI0NzFjM2Q5YmEwMTU4JywKLSAgICAgICAgICAgICAgY29uZmlndXJlX2Vudj0oJ0NGTEFHUz0iLU9zJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLURTUUxJVEVfRU5BQkxFX0ZUUzMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX0VOQUJMRV9SVFJFRScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX1RDTD0wJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXRocmVhZHNhZmUnLAotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZD1ubycsCi0gICAgICAgICAgICAgICAgICAnLS1lbmFibGUtc3RhdGljPXllcycsCi0gICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLXJlYWRsaW5lJywKLSAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICApLAotICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9Ik5DdXJzZXMgNS41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9uY3Vyc2VzL25jdXJzZXMtNS41LnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSdlNzNjMWFjMTBiNGJmYzQ2ZGI0M2IyZGRmZDYyNDRlZicsCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwotICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXdpZGVjIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3h4IiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtYWRhIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtcHJvZ3MiLAotICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1jdXJzZXMtaCIsCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGgtc2hhcmVkIiwKLSAgICAgICAgICAgICAgICAgICItLWRhdGFkaXI9L3Vzci9zaGFyZSIsCi0gICAgICAgICAgICAgICAgICAiLS1zeXNjb25mZGlyPS9ldGMiLAotICAgICAgICAgICAgICAgICAgIi0tc2hhcmVkc3RhdGVkaXI9L3Vzci9jb20iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC10ZXJtaW5mby1kaXJzPS91c3Ivc2hhcmUvdGVybWluZm8iLAotICAgICAgICAgICAgICAgICAgIi0td2l0aC1kZWZhdWx0LXRlcm1pbmZvLWRpcj0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKLSAgICAgICAgICAgICAgICAgICItLWxpYmRpcj0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliIiUoZ2V0VmVyc2lvbigpLCksCi0gICAgICAgICAgICAgICAgICAiLS1lbmFibGUtdGVybWNhcCIsCi0gICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgIHBhdGNoZXM9WwotICAgICAgICAgICAgICAgICAgIm5jdXJzZXMtNS41LnBhdGNoIiwKLSAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgdXNlTERGbGFncz1GYWxzZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSAmJiBtYWtlIGluc3RhbGwgREVTVERJUj0lcyAmJiBjZCAlcy91c3IvbG9jYWwvbGliICYmIGxuIC1mcyAuLi8uLi8uLi9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8lcy9saWIvbGliKiAuJyUoCi0gICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAotICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKLSAgICAgICAgICAgICAgICAgIGdldFZlcnNpb24oKSwKLSAgICAgICAgICAgICAgICAgICksCi0gICAgICAgICAgKSwKICAgICAgICAgXSkKIAogICAgIGlmIG5vdCBQWVRIT05fMzoKQEAgLTI5OCw5ICszNjQsNyBAQAogICAgICAgICAgICAgc291cmNlPSIvcHlkb2NzIiwKICAgICAgICAgICAgIHJlYWRtZT0iIiJcCiAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdlIGluc3RhbGxzIHRoZSBweXRob24gZG9jdW1lbnRhdGlvbiBhdCBhIGxvY2F0aW9uCi0gICAgICAgICAgICAgICAgdGhhdCBpcyB1c2VhYmxlIGZvciBweWRvYyBhbmQgSURMRS4gSWYgeW91IGhhdmUgaW5zdGFsbGVkIFhjb2RlCi0gICAgICAgICAgICAgICAgaXQgd2lsbCBhbHNvIGluc3RhbGwgYSBsaW5rIHRvIHRoZSBkb2N1bWVudGF0aW9uIGluCi0gICAgICAgICAgICAgICAgL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uL1B5dGhvbgorICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlYWJsZSBmb3IgcHlkb2MgYW5kIElETEUuCiAgICAgICAgICAgICAgICAgIiIiLAogICAgICAgICAgICAgcG9zdGZsaWdodD0ic2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCkBAIC0zMjYsNyArMzkwLDcgQEAKICAgICAgICAgKSwKICAgICBdCiAKLSAgICBpZiBERVBUQVJHRVQgPCAnMTAuNCc6CisgICAgaWYgREVQVEFSR0VUIDwgJzEwLjQnIGFuZCBub3QgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoCiAgICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICAgIG5hbWU9IlB5dGhvblN5c3RlbUZpeGVzIiwKQEAgLTM1OCw3ICs0MjIsNyBAQAogICAgICIiIgogICAgIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIG5hbWVkIGZpbGUKICAgICAiIiIKLSAgICByZXR1cm4gb3BlbihmbiwgJ3JiJykucmVhZCgpCisgICAgcmV0dXJuIG9wZW4oZm4sICdyJykucmVhZCgpCiAKIGRlZiBydW5Db21tYW5kKGNvbW1hbmRsaW5lKToKICAgICAiIiIKQEAgLTM3MCw3ICs0MzQsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICBpZiBWRVJCT1NFOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpOyBzeXMuc3Rkb3V0LmZsdXNoKCkKQEAgLTM4MSw3ICs0NDUsNyBAQAogICAgIHhpdCA9IGZkLmNsb3NlKCkKICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGF0YSkKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiY29tbWFuZCBmYWlsZWQ6ICVzIiUoY29tbWFuZGxpbmUsKQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkpCiAKICAgICByZXR1cm4gZGF0YQogCkBAIC00MjMsMzkgKzQ4Nyw2MCBAQAogICAgICMgQmVjYXVzZSB3ZSBvbmx5IHN1cHBvcnQgZHluYW1pYyBsb2FkIG9mIG9ubHkgb25lIG1ham9yL21pbm9yIHZlcnNpb24gb2YKICAgICAjIFRjbC9UaywgZW5zdXJlOgogICAgICMgMS4gdGhlcmUgYXJlIG5vIHVzZXItaW5zdGFsbGVkIGZyYW1ld29ya3Mgb2YgVGNsL1RrIHdpdGggdmVyc2lvbgotICAgICMgICAgICAgaGlnaGVyIHRoYW4gdGhlIEFwcGxlLXN1cHBsaWVkIHN5c3RlbSB2ZXJzaW9uCi0gICAgIyAyLiB0aGVyZSBpcyBhIHVzZXItaW5zdGFsbGVkIGZyYW1ld29yayBpbiAvTGlicmFyeS9GcmFtZXdvcmtzIHdpdGggdGhlCi0gICAgIyAgICAgICBzYW1lIHZlcnNpb24gYXMgdGhlIHN5c3RlbSB2ZXJzaW9uLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gY2hvb3NlCi0gICAgIyAgICAgICB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCisgICAgIyAgICAgICBoaWdoZXIgdGhhbiB0aGUgQXBwbGUtc3VwcGxpZWQgc3lzdGVtIHZlcnNpb24gaW4KKyAgICAjICAgICAgIFNES1JPT1QvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcworICAgICMgMi4gdGhlcmUgaXMgYSB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmsgKHVzdWFsbHkgQWN0aXZlVGNsKSBpbiAob3IgbGlua2VkCisgICAgIyAgICAgICBpbikgU0RLUk9PVC9MaWJyYXJ5L0ZyYW1ld29ya3Mgd2l0aCB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZSBzeXN0ZW0KKyAgICAjICAgICAgIHZlcnNpb24uIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGNob29zZSB0byBpbnN0YWxsIGEgbmV3ZXIgcGF0Y2ggbGV2ZWwuCiAKKyAgICBmcmFtZXdvcmtzID0ge30KICAgICBmb3IgZnJhbWV3b3JrIGluIFsnVGNsJywgJ1RrJ106Ci0gICAgICAgICNmdyA9IGRpY3QobG93ZXI9ZnJhbWV3b3JrLmxvd2VyKCksCi0gICAgICAgICMgICAgICAgICAgICB1cHBlcj1mcmFtZXdvcmsudXBwZXIoKSwKLSAgICAgICAgIyAgICAgICAgICAgIGNhcD1mcmFtZXdvcmsuY2FwaXRhbGl6ZSgpKQotICAgICAgICAjZndwdGggPSAiTGlicmFyeS9GcmFtZXdvcmtzLyUoY2FwKXMuZnJhbWV3b3JrLyUobG93ZXIpc0NvbmZpZy5zaCIgJSBmdwotICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50JworICAgICAgICBmd3B0aCA9ICdMaWJyYXJ5L0ZyYW1ld29ya3MvJXMuZnJhbWV3b3JrL1ZlcnNpb25zL0N1cnJlbnQnICUgZnJhbWV3b3JrCiAgICAgICAgIHN5c2Z3ID0gb3MucGF0aC5qb2luKFNES1BBVEgsICdTeXN0ZW0nLCBmd3B0aCkKLSAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oJy8nLCBmd3B0aCkKKyAgICAgICAgbGliZncgPSBvcy5wYXRoLmpvaW4oU0RLUEFUSCwgZndwdGgpCiAgICAgICAgIHVzcmZ3ID0gb3MucGF0aC5qb2luKG9zLmdldGVudignSE9NRScpLCBmd3B0aCkKLSAgICAgICAgI3ZlcnNpb24gPSAiJSh1cHBlcilzX1ZFUlNJT04iICUgZncKKyAgICAgICAgZnJhbWV3b3Jrc1tmcmFtZXdvcmtdID0gb3MucmVhZGxpbmsoc3lzZncpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWJmdyk6CisgICAgICAgICAgICBmYXRhbCgiUGxlYXNlIGluc3RhbGwgYSBsaW5rIHRvIGEgY3VycmVudCAlcyAlcyBhcyAlcyBzbyAiCisgICAgICAgICAgICAgICAgICAgICJ0aGUgdXNlciBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSBmcmFtZXdvcmsuIgorICAgICAgICAgICAgICAgICAgICAlIChmcmFtZXdvcmssIGZyYW1ld29ya3NbZnJhbWV3b3JrXSwgbGliZncpKQogICAgICAgICBpZiBvcy5yZWFkbGluayhsaWJmdykgIT0gb3MucmVhZGxpbmsoc3lzZncpOgogICAgICAgICAgICAgZmF0YWwoIlZlcnNpb24gb2YgJXMgbXVzdCBtYXRjaCAlcyIgJSAobGliZncsIHN5c2Z3KSApCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVzcmZ3KToKICAgICAgICAgICAgIGZhdGFsKCJQbGVhc2UgcmVuYW1lICVzIHRvIGF2b2lkIHBvc3NpYmxlIGR5bmFtaWMgbG9hZCBpc3N1ZXMuIgogICAgICAgICAgICAgICAgICAgICAlIHVzcmZ3KQogCisgICAgaWYgZnJhbWV3b3Jrc1snVGNsJ10gIT0gZnJhbWV3b3Jrc1snVGsnXToKKyAgICAgICAgZmF0YWwoIlRoZSBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLiIpCisKKyAgICAjIGFkZCBmaWxlcyB0byBjaGVjayBhZnRlciBidWlsZAorICAgIEVYUEVDVEVEX1NIQVJFRF9MSUJTWydfdGtpbnRlci5zbyddID0gWworICAgICAgICAgICAgIi9MaWJyYXJ5L0ZyYW1ld29ya3MvVGNsLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UY2wiCisgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUY2wnXSwKKyAgICAgICAgICAgICIvTGlicmFyeS9GcmFtZXdvcmtzL1RrLmZyYW1ld29yay9WZXJzaW9ucy8lcy9UayIKKyAgICAgICAgICAgICAgICAlIGZyYW1ld29ya3NbJ1RrJ10sCisgICAgICAgICAgICBdCisKICAgICAjIFJlbW92ZSBpbmhlcml0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIG1pZ2h0IGluZmx1ZW5jZSBidWlsZAogICAgIGVudmlyb25fdmFyX3ByZWZpeGVzID0gWydDUEFUSCcsICdDX0lOQ0xVREVfJywgJ0RZTERfJywgJ0xBTkcnLCAnTENfJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTERfJywgJ0xJQlJBUllfJywgJ1BBVEgnLCAnUFlUSE9OJ10KICAgICBmb3IgZXYgaW4gbGlzdChvcy5lbnZpcm9uKToKICAgICAgICAgZm9yIHByZWZpeCBpbiBlbnZpcm9uX3Zhcl9wcmVmaXhlczoKICAgICAgICAgICAgIGlmIGV2LnN0YXJ0c3dpdGgocHJlZml4KSA6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pCisgICAgICAgICAgICAgICAgcHJpbnQoIklORk86IGRlbGV0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlICVzPSVzIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldiwgb3MuZW52aXJvbltldl0pKQogICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uW2V2XQogCi0gICAgb3MuZW52aXJvblsnUEFUSCddID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJwotICAgIHByaW50ICJTZXR0aW5nIGRlZmF1bHQgUEFUSDogJXMiJShvcy5lbnZpcm9uWydQQVRIJ10pCisgICAgYmFzZV9wYXRoID0gJy9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluJworICAgIGlmICdTREtfVE9PTFNfQklOJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBiYXNlX3BhdGggPSBvcy5lbnZpcm9uWydTREtfVE9PTFNfQklOJ10gKyAnOicgKyBiYXNlX3BhdGgKKyAgICAjIFhjb2RlIDIuNSBvbiBPUyBYIDEwLjQgZG9lcyBub3QgaW5jbHVkZSBTZXRGaWxlIGluIGl0cyB1c3IvYmluOworICAgICMgYWRkIGl0cyBmaXhlZCBsb2NhdGlvbiBoZXJlIGlmIGl0IGV4aXN0cworICAgIE9MRF9ERVZFTE9QRVJfVE9PTFMgPSAnL0RldmVsb3Blci9Ub29scycKKyAgICBpZiBvcy5wYXRoLmlzZGlyKE9MRF9ERVZFTE9QRVJfVE9PTFMpOgorICAgICAgICBiYXNlX3BhdGggPSBiYXNlX3BhdGggKyAnOicgKyBPTERfREVWRUxPUEVSX1RPT0xTCisgICAgb3MuZW52aXJvblsnUEFUSCddID0gYmFzZV9wYXRoCisgICAgcHJpbnQoIlNldHRpbmcgZGVmYXVsdCBQQVRIOiAlcyIlKG9zLmVudmlyb25bJ1BBVEgnXSkpCiAKIAogZGVmIHBhcnNlT3B0aW9ucyhhcmdzPU5vbmUpOgpAQCAtNDYzLDcgKzU0OCw3IEBACiAgICAgUGFyc2UgYXJndW1lbnRzIGFuZCB1cGRhdGUgZ2xvYmFsIHNldHRpbmdzLgogICAgICIiIgogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCi0gICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MKKyAgICBnbG9iYWwgVU5JVkVSU0FMT1BUUywgVU5JVkVSU0FMQVJDSFMsIEFSQ0hMSVNULCBDQywgQ1hYCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTQ3MiwxOCArNTU3LDE4IEBACiAgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICc/aGInLAogICAgICAgICAgICAgICAgIFsgJ2J1aWxkLWRpcj0nLCAndGhpcmQtcGFydHk9JywgJ3Nkay1wYXRoPScgLCAnc3JjLWRpcj0nLAogICAgICAgICAgICAgICAgICAgJ2RlcC10YXJnZXQ9JywgJ3VuaXZlcnNhbC1hcmNocz0nLCAnaGVscCcgXSkKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6Ci0gICAgICAgIHByaW50IG1zZworICAgIGV4Y2VwdCBnZXRvcHQuR2V0b3B0RXJyb3I6CisgICAgICAgIHByaW50KHN5cy5leGNfaW5mbygpWzFdKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgaWYgYXJnczoKLSAgICAgICAgcHJpbnQgIkFkZGl0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICBwcmludCgiQWRkaXRpb25hbCBhcmd1bWVudHMiKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAgZGVwdGFyZ2V0ID0gTm9uZQogICAgIGZvciBrLCB2IGluIG9wdGlvbnM6CiAgICAgICAgIGlmIGsgaW4gKCctaCcsICctPycsICctLWhlbHAnKToKLSAgICAgICAgICAgIHByaW50IFVTQUdFCisgICAgICAgICAgICBwcmludChVU0FHRSkKICAgICAgICAgICAgIHN5cy5leGl0KDApCiAKICAgICAgICAgZWxpZiBrIGluICgnLWQnLCAnLS1idWlsZC1kaXInKToKQEAgLTUxMSwyNyArNTk2LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCA9IGRlZmF1bHRfdGFyZ2V0X21hcC5nZXQodiwgJzEwLjMnKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCB2CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcih2KQogCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCBrCisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKGspCiAKICAgICBTUkNESVI9b3MucGF0aC5hYnNwYXRoKFNSQ0RJUikKICAgICBXT1JLRElSPW9zLnBhdGguYWJzcGF0aChXT1JLRElSKQogICAgIFNES1BBVEg9b3MucGF0aC5hYnNwYXRoKFNES1BBVEgpCiAgICAgREVQU1JDPW9zLnBhdGguYWJzcGF0aChERVBTUkMpCiAKLSAgICBDQz10YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KKyAgICBDQywgQ1hYPXRhcmdldF9jY19tYXBbREVQVEFSR0VUXQogCi0gICAgcHJpbnQgIlNldHRpbmdzOiIKLSAgICBwcmludCAiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIKLSAgICBwcmludCAiICogQnVpbGQgZGlyZWN0b3J5OiAiLCBXT1JLRElSCi0gICAgcHJpbnQgIiAqIFNESyBsb2NhdGlvbjogICAgIiwgU0RLUEFUSAotICAgIHByaW50ICIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDCi0gICAgcHJpbnQgIiAqIERlcGxveW1lbnQgdGFyZ2V0OiIsIERFUFRBUkdFVAotICAgIHByaW50ICIgKiBVbml2ZXJzYWwgYXJjaGl0ZWN0dXJlczoiLCBBUkNITElTVAotICAgIHByaW50ICIgKiBDIGNvbXBpbGVyOiIsIENDCi0gICAgcHJpbnQgIiIKKyAgICBwcmludCgiU2V0dGluZ3M6IikKKyAgICBwcmludCgiICogU291cmNlIGRpcmVjdG9yeToiLCBTUkNESVIpCisgICAgcHJpbnQoIiAqIEJ1aWxkIGRpcmVjdG9yeTogIiwgV09SS0RJUikKKyAgICBwcmludCgiICogU0RLIGxvY2F0aW9uOiAgICAiLCBTREtQQVRIKQorICAgIHByaW50KCIgKiBUaGlyZC1wYXJ0eSBzb3VyY2U6IiwgREVQU1JDKQorICAgIHByaW50KCIgKiBEZXBsb3ltZW50IHRhcmdldDoiLCBERVBUQVJHRVQpCisgICAgcHJpbnQoIiAqIFVuaXZlcnNhbCBhcmNoaXRlY3R1cmVzOiIsIEFSQ0hMSVNUKQorICAgIHByaW50KCIgKiBDIGNvbXBpbGVyOiIsIENDKQorICAgIHByaW50KCIgKiBDKysgY29tcGlsZXI6IiwgQ1hYKQorICAgIHByaW50KCIiKQogCiAKIApAQCAtNTc2LDMxICs2NjIsMTggQEAKICAgICAgICAgeGl0ID0gZnAuY2xvc2UoKQogICAgICAgICBpZiB4aXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpCi0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICJDYW5ub3QgZXh0cmFjdCAlcyIlKGFyY2hpdmVOYW1lLCkKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fubm90IGV4dHJhY3QgJXMiJShhcmNoaXZlTmFtZSwpKQogCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHJldHZhbCkKIAogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKGN1cmRpcikKIAotS05PV05TSVpFUyA9IHsKLSAgICAiaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNS4xLnRhci5neiI6IDc5NTI3NDIsCi0gICAgImh0dHA6Ly9kb3dubG9hZHMuc2xlZXB5Y2F0LmNvbS9kYi00LjQuMjAudGFyLmd6IjogMjAzMDI3NiwKLX0KLQogZGVmIGRvd25sb2FkVVJMKHVybCwgZm5hbWUpOgogICAgICIiIgogICAgIERvd25sb2FkIHRoZSBjb250ZW50cyBvZiB0aGUgdXJsIGludG8gdGhlIGZpbGUuCiAgICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBzaXplID0gb3MucGF0aC5nZXRzaXplKGZuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgaWYgS05PV05TSVpFUy5nZXQodXJsKSA9PSBzaXplOgotICAgICAgICAgICAgcHJpbnQgIlVzaW5nIGV4aXN0aW5nIGZpbGUgZm9yIiwgdXJsCi0gICAgICAgICAgICByZXR1cm4KLSAgICBmcEluID0gdXJsbGliMi51cmxvcGVuKHVybCkKKyAgICBmcEluID0gdXJsbGliX3JlcXVlc3QudXJsb3Blbih1cmwpCiAgICAgZnBPdXQgPSBvcGVuKGZuYW1lLCAnd2InKQogICAgIGJsb2NrID0gZnBJbi5yZWFkKDEwMjQwKQogICAgIHRyeToKQEAgLTYxNSw2ICs2ODgsMjQgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcGFzcwogCitkZWYgdmVyaWZ5VGhpcmRQYXJ0eUZpbGUodXJsLCBjaGVja3N1bSwgZm5hbWUpOgorICAgICIiIgorICAgIERvd25sb2FkIGZpbGUgZnJvbSB1cmwgdG8gZmlsZW5hbWUgZm5hbWUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKyAgICBBYm9ydCBpZiBmaWxlIGNvbnRlbnRzIGRvZXMgbm90IG1hdGNoIHN1cHBsaWVkIG1kNSBjaGVja3N1bS4KKyAgICAiIiIKKyAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmbmFtZSkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbmFtZSk6CisgICAgICAgIHByaW50KCJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCJEaWQgbm90IGZpbmQgbG9jYWwgY29weSBvZiAlcyIlKG5hbWUsKSkKKyAgICAgICAgcHJpbnQoIkRvd25sb2FkaW5nICVzIiUobmFtZSwpKQorICAgICAgICBkb3dubG9hZFVSTCh1cmwsIGZuYW1lKQorICAgICAgICBwcmludCgiQXJjaGl2ZSBmb3IgJXMgc3RvcmVkIGFzICVzIiUobmFtZSwgZm5hbWUpKQorICAgIGlmIG9zLnN5c3RlbSgKKyAgICAgICAgICAgICdNRDU9JChvcGVuc3NsIG1kNSAlcykgOyB0ZXN0ICIke01ENSMjKj0gfSIgPSAiJXMiJworICAgICAgICAgICAgICAgICUgKHNoZWxsUXVvdGUoZm5hbWUpLCBjaGVja3N1bSkgKToKKyAgICAgICAgZmF0YWwoJ01ENSBjaGVja3N1bSBtaXNtYXRjaCBmb3IgZmlsZSAlcycgJSBmbmFtZSkKKwogZGVmIGJ1aWxkUmVjaXBlKHJlY2lwZSwgYmFzZWRpciwgYXJjaExpc3QpOgogICAgICIiIgogICAgIEJ1aWxkIHNvZnR3YXJlIHVzaW5nIGEgcmVjaXBlLiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlCkBAIC02MzUsMTcgKzcyNiw4IEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKERFUFNSQyk6CiAgICAgICAgIG9zLm1rZGlyKERFUFNSQykKIAotCi0gICAgaWYgb3MucGF0aC5leGlzdHMoc291cmNlQXJjaGl2ZSk6Ci0gICAgICAgIHByaW50ICJVc2luZyBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpCi0KLSAgICBlbHNlOgotICAgICAgICBwcmludCAiRGlkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgJXMiJShuYW1lLCkKLSAgICAgICAgcHJpbnQgIkRvd25sb2FkaW5nICVzIiUobmFtZSwpCi0gICAgICAgIGRvd25sb2FkVVJMKHVybCwgc291cmNlQXJjaGl2ZSkKLSAgICAgICAgcHJpbnQgIkFyY2hpdmUgZm9yICVzIHN0b3JlZCBhcyAlcyIlKG5hbWUsIHNvdXJjZUFyY2hpdmUpCi0KLSAgICBwcmludCAiRXh0cmFjdGluZyBhcmNoaXZlIGZvciAlcyIlKG5hbWUsKQorICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgcmVjaXBlWydjaGVja3N1bSddLCBzb3VyY2VBcmNoaXZlKQorICAgIHByaW50KCJFeHRyYWN0aW5nIGFyY2hpdmUgZm9yICVzIiUobmFtZSwpKQogICAgIGJ1aWxkRGlyPW9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkRGlyKToKICAgICAgICAgb3MubWtkaXIoYnVpbGREaXIpCkBAIC02NTUsMTggKzczNywzMSBAQAogICAgIGlmICdidWlsZERpcicgaW4gcmVjaXBlOgogICAgICAgICBvcy5jaGRpcihyZWNpcGVbJ2J1aWxkRGlyJ10pCiAKLQotICAgIGZvciBmbiBpbiByZWNpcGUuZ2V0KCdwYXRjaGVzJywgKCkpOgotICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCdodHRwOi8vJyk6Ci0gICAgICAgICAgICAjIERvd25sb2FkIHRoZSBwYXRjaCBiZWZvcmUgYXBwbHlpbmcgaXQuCi0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKERFUFNSQywgb3MucGF0aC5iYXNlbmFtZShmbikpCi0gICAgICAgICAgICBkb3dubG9hZFVSTChmbiwgcGF0aCkKLSAgICAgICAgICAgIGZuID0gcGF0aAotCi0gICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgZm4pCisgICAgZm9yIHBhdGNoIGluIHJlY2lwZS5nZXQoJ3BhdGNoZXMnLCAoKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0Y2gsIHR1cGxlKToKKyAgICAgICAgICAgIHVybCwgY2hlY2tzdW0gPSBwYXRjaAorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oREVQU1JDLCBvcy5wYXRoLmJhc2VuYW1lKHVybCkpCisgICAgICAgICAgICB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGF0Y2ggaXMgYSBmaWxlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihjdXJkaXIsIHBhdGNoKQogICAgICAgICBydW5Db21tYW5kKCdwYXRjaCAtcCVzIDwgJXMnJShyZWNpcGUuZ2V0KCdwYXRjaGxldmVsJywgMSksCiAgICAgICAgICAgICBzaGVsbFF1b3RlKGZuKSwpKQogCisgICAgZm9yIHBhdGNoc2NyaXB0IGluIHJlY2lwZS5nZXQoJ3BhdGNoc2NyaXB0cycsICgpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRjaHNjcmlwdCwgdHVwbGUpOgorICAgICAgICAgICAgdXJsLCBjaGVja3N1bSA9IHBhdGNoc2NyaXB0CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihERVBTUkMsIG9zLnBhdGguYmFzZW5hbWUodXJsKSkKKyAgICAgICAgICAgIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBwYXRjaCBpcyBhIGZpbGUgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKGN1cmRpciwgcGF0Y2hzY3JpcHQpCisgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcuYnoyJyk6CisgICAgICAgICAgICBydW5Db21tYW5kKCdidW56aXAyIC1mayAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgICAgIGZuID0gZm5bOi00XQorICAgICAgICBydW5Db21tYW5kKCdzaCAlcycgJSBzaGVsbFF1b3RlKGZuKSkKKyAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgaWYgY29uZmlndXJlIGlzIG5vdCBOb25lOgogICAgICAgICBjb25maWd1cmVfYXJncyA9IFsKICAgICAgICAgICAgICItLXByZWZpeD0vdXNyL2xvY2FsIiwKQEAgLTY4NSw0MCArNzgwLDQ0IEBACiAKICAgICAgICAgaWYgcmVjaXBlLmdldCgndXNlTERGbGFncycsIDEpOgogICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MuZXh0ZW5kKFsKLSAgICAgICAgICAgICAgICAiQ0ZMQUdTPS1hcmNoICVzIC1pc3lzcm9vdCAlcyAtSSVzL3Vzci9sb2NhbC9pbmNsdWRlIiUoCisgICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzIC1pc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5nZXQoJ2V4dHJhX2NmbGFncycsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJhc2VkaXIpWzE6LTFdLCksCi0gICAgICAgICAgICAgICAgIkxERkxBR1M9LXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgIkxERkxBR1M9LW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLXN5c2xpYnJvb3QsJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShiYXNlZGlyKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmVfYXJncy5leHRlbmQoWwotICAgICAgICAgICAgICAgICJDRkxBR1M9LWFyY2ggJXMgLWlzeXNyb290ICVzIC1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAiQ0ZMQUdTPSVzLW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLWFyY2ggJXMgLWlzeXNyb290ICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUklcy91c3IvbG9jYWwvaW5jbHVkZSIlKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmdldCgnZXh0cmFfY2ZsYWdzJywgJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgREVQVEFSR0VULAogICAgICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYmFzZWRpcilbMTotMV0sKSwKICAgICAgICAgICAgIF0pCiAKICAgICAgICAgaWYgJ2NvbmZpZ3VyZV9wb3N0JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzID0gbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCisgICAgICAgICAgICBjb25maWd1cmVfYXJncyA9IGNvbmZpZ3VyZV9hcmdzICsgbGlzdChyZWNpcGVbJ2NvbmZpZ3VyZV9wb3N0J10pCiAKICAgICAgICAgY29uZmlndXJlX2FyZ3MuaW5zZXJ0KDAsIGNvbmZpZ3VyZSkKICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBbIHNoZWxsUXVvdGUoYSkgZm9yIGEgaW4gY29uZmlndXJlX2FyZ3MgXQogCi0gICAgICAgIGlmICdjb25maWd1cmVfZW52JyBpbiByZWNpcGU6Ci0gICAgICAgICAgICBjb25maWd1cmVfYXJncy5pbnNlcnQoMCwgcmVjaXBlWydjb25maWd1cmVfZW52J10pCi0KLSAgICAgICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlIGZvciAlcyIlKG5hbWUsKQorICAgICAgICBwcmludCgiUnVubmluZyBjb25maWd1cmUgZm9yICVzIiUobmFtZSwpKQogICAgICAgICBydW5Db21tYW5kKCcgJy5qb2luKGNvbmZpZ3VyZV9hcmdzKSArICcgMj4mMScpCiAKLSAgICBwcmludCAiUnVubmluZyBpbnN0YWxsIGZvciAlcyIlKG5hbWUsKQorICAgIHByaW50KCJSdW5uaW5nIGluc3RhbGwgZm9yICVzIiUobmFtZSwpKQogICAgIHJ1bkNvbW1hbmQoJ3sgJyArIGluc3RhbGwgKyAnIDt9IDI+JjEnKQogCi0gICAgcHJpbnQgIkRvbmUgJXMiJShuYW1lLCkKLSAgICBwcmludCAiIgorICAgIHByaW50KCJEb25lICVzIiUobmFtZSwpKQorICAgIHByaW50KCIiKQogCiAgICAgb3MuY2hkaXIoY3VyZGlyKQogCkBAIC03MjYsOSArODI1LDkgQEAKICAgICAiIiIKICAgICBCdWlsZCBvdXIgZGVwZW5kZW5jaWVzIGludG8gJFdPUktESVIvbGlicmFyaWVzL3Vzci9sb2NhbAogICAgICIiIgotICAgIHByaW50ICIiCi0gICAgcHJpbnQgIkJ1aWxkaW5nIHJlcXVpcmVkIGxpYnJhcmllcyIKLSAgICBwcmludCAiIgorICAgIHByaW50KCIiKQorICAgIHByaW50KCJCdWlsZGluZyByZXF1aXJlZCBsaWJyYXJpZXMiKQorICAgIHByaW50KCIiKQogICAgIHVuaXZlcnNhbCA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykKICAgICBvcy5ta2Rpcih1bml2ZXJzYWwpCiAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHVuaXZlcnNhbCwgJ3VzcicsICdsb2NhbCcsICdsaWInKSkKQEAgLTc0Miw3ICs4NDEsNyBAQAogZGVmIGJ1aWxkUHl0aG9uRG9jcygpOgogICAgICMgVGhpcyBzdG9yZXMgdGhlIGRvY3VtZW50YXRpb24gYXMgUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbgogICAgICMgaW5zaWRlIHRoZSBmcmFtd29yay4gcHlkb2MgYW5kIElETEUgd2lsbCBwaWNrIGl0IHVwIHRoZXJlLgotICAgIHByaW50ICJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIgorICAgIHByaW50KCJJbnN0YWxsIHB5dGhvbiBkb2N1bWVudGF0aW9uIikKICAgICByb290RGlyID0gb3MucGF0aC5qb2luKFdPUktESVIsICdfcm9vdCcpCiAgICAgYnVpbGREaXIgPSBvcy5wYXRoLmpvaW4oJy4uLy4uL0RvYycpCiAgICAgZG9jZGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdweWRvY3MnKQpAQCAtNzU3LDcgKzg1Niw3IEBACiAKIAogZGVmIGJ1aWxkUHl0aG9uKCk6Ci0gICAgcHJpbnQgIkJ1aWxkaW5nIGEgdW5pdmVyc2FsIHB5dGhvbiBmb3IgJXMgYXJjaGl0ZWN0dXJlcyIgJSBVTklWRVJTQUxBUkNIUworICAgIHByaW50KCJCdWlsZGluZyBhIHVuaXZlcnNhbCBweXRob24gZm9yICVzIGFyY2hpdGVjdHVyZXMiICUgVU5JVkVSU0FMQVJDSFMpCiAKICAgICBidWlsZERpciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnX2JsZCcsICdweXRob24nKQogICAgIHJvb3REaXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19yb290JykKQEAgLTc4NSw3ICs4ODQsNyBAQAogICAgICMgd2lsbCBmaW5kIHRoZW0gZHVyaW5nIGl0cyBleHRlbnNpb24gaW1wb3J0IHNhbml0eSBjaGVja3MuCiAgICAgb3MuZW52aXJvblsnRFlMRF9MSUJSQVJZX1BBVEgnXSA9IG9zLnBhdGguam9pbihXT1JLRElSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnLCAndXNyJywgJ2xvY2FsJywgJ2xpYicpCi0gICAgcHJpbnQgIlJ1bm5pbmcgY29uZmlndXJlLi4uIgorICAgIHByaW50KCJSdW5uaW5nIGNvbmZpZ3VyZS4uLiIpCiAgICAgcnVuQ29tbWFuZCgiJXMgLUMgLS1lbmFibGUtZnJhbWV3b3JrIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz0lcyAiCiAgICAgICAgICAgICAgICAiLS13aXRoLXVuaXZlcnNhbC1hcmNocz0lcyAiCiAgICAgICAgICAgICAgICAiJXMgIgpAQCAtNzk3LDE5ICs4OTYsMTkgQEAKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSwKICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UiKQogICAgIHJ1bkNvbW1hbmQoIm1ha2UiKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgbWFrZSBpbnN0YWxsIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UgaW5zdGFsbCIpCiAgICAgcnVuQ29tbWFuZCgibWFrZSBpbnN0YWxsIERFU1RESVI9JXMiJSgKICAgICAgICAgc2hlbGxRdW90ZShyb290RGlyKSkpCiAKLSAgICBwcmludCAiUnVubmluZyBtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMiCisgICAgcHJpbnQoIlJ1bm5pbmcgbWFrZSBmcmFtZXdvcmtpbnN0YWxsZXh0cmFzIikKICAgICBydW5Db21tYW5kKCJtYWtlIGZyYW1ld29ya2luc3RhbGxleHRyYXMgREVTVERJUj0lcyIlKAogICAgICAgICBzaGVsbFF1b3RlKHJvb3REaXIpKSkKIAogICAgIGRlbCBvcy5lbnZpcm9uWydEWUxEX0xJQlJBUllfUEFUSCddCi0gICAgcHJpbnQgIkNvcHlpbmcgcmVxdWlyZWQgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBwcmludCgiQ29weWluZyByZXF1aXJlZCBzaGFyZWQgbGlicmFyaWVzIikKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycsICdMaWJyYXJ5JykpOgogICAgICAgICBydW5Db21tYW5kKCJtdiAlcy8qICVzIiUoCiAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbigKQEAgLTgyMCwxNiArOTE5LDE2IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwcmludCAiRml4IGZpbGUgbW9kZXMiCisgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKICAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKKyAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGZybURpcik6CiAgICAgICAgIGZvciBkbiBpbiBkaXJuYW1lczoKLSAgICAgICAgICAgIG9zLmNobW9kKG9zLnBhdGguam9pbihkaXJwYXRoLCBkbiksIDA3NzUpCisgICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZG4pLCBTVEFUXzBvNzc1KQogICAgICAgICAgICAgb3MuY2hvd24ob3MucGF0aC5qb2luKGRpcnBhdGgsIGRuKSwgLTEsIGdpZCkKIAotCiAgICAgICAgIGZvciBmbiBpbiBmaWxlbmFtZXM6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhmbik6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTg0MCw2ICs5MzksMTkgQEAKICAgICAgICAgICAgIG9zLmNobW9kKHAsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSB8IHN0YXQuU19JV0dSUCkKICAgICAgICAgICAgIG9zLmNob3duKHAsIC0xLCBnaWQpCiAKKyAgICAgICAgICAgIGlmIGZuIGluIEVYUEVDVEVEX1NIQVJFRF9MSUJTOgorICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIHRoYXQgdGhpcyBmaWxlIHdhcyBsaW5rZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAjIGV4cGVjdGVkIGxpYnJhcnkgcGF0aCBhbmQgdmVyc2lvbgorICAgICAgICAgICAgICAgIGRhdGEgPSBjYXB0dXJlQ29tbWFuZCgib3Rvb2wgLUwgJXMiICUgc2hlbGxRdW90ZShwKSkKKyAgICAgICAgICAgICAgICBmb3Igc2wgaW4gRVhQRUNURURfU0hBUkVEX0xJQlNbZm5dOgorICAgICAgICAgICAgICAgICAgICBpZiAoIlx0JXMgIiAlIHNsKSBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJFeHBlY3RlZCBzaGFyZWQgbGliICVzIHdhcyBub3QgbGlua2VkIHdpdGggJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNsLCBwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9saWJfZXJyb3IgPSBUcnVlCisKKyAgICBpZiBzaGFyZWRfbGliX2Vycm9yOgorICAgICAgICBmYXRhbCgiVW5leHBlY3RlZCBzaGFyZWQgbGlicmFyeSBlcnJvcnMuIikKKwogICAgIGlmIFBZVEhPTl8zOgogICAgICAgICBMRFZFUlNJT049Tm9uZQogICAgICAgICBWRVJTSU9OPU5vbmUKQEAgLTg2MywxOSArOTc1LDI2IEBACiAKICAgICAjIFdlIGFkZGVkIHNvbWUgZGlyZWN0b3JpZXMgdG8gdGhlIHNlYXJjaCBwYXRoIGR1cmluZyB0aGUgY29uZmlndXJlCiAgICAgIyBwaGFzZS4gUmVtb3ZlIHRob3NlIGJlY2F1c2UgdGhvc2UgZGlyZWN0b3JpZXMgd29uJ3QgYmUgdGhlcmUgb24KLSAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLgotICAgIHBhdGggPW9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnLAotICAgICAgICAgICAgICAgICdWZXJzaW9ucycsIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCksCi0gICAgICAgICAgICAgICAgJ2NvbmZpZycgKyBjb25maWdfc3VmZml4LCAnTWFrZWZpbGUnKQotICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgZGF0YSA9IGZwLnJlYWQoKQotICAgIGZwLmNsb3NlKCkKKyAgICAjIHRoZSBlbmQtdXNlcnMgc3lzdGVtLiBBbHNvIHJlbW92ZSB0aGUgZGlyZWN0b3JpZXMgZnJvbSBfc3lzY29uZmlnZGF0YS5weQorICAgICMgKGFkZGVkIGluIDMuMykgaWYgaXQgZXhpc3RzLgogCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUwlcy9saWJyYXJpZXMvdXNyL2xvY2FsL2xpYiclKFdPUktESVIsKSwgJycpCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQotICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgZnAud3JpdGUoZGF0YSkKLSAgICBmcC5jbG9zZSgpCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwgJ2xpYicsICdweXRob24lcyclKHZlcnNpb24sKSkKKyAgICBwYXRocyA9IFtvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdjb25maWcnICsgY29uZmlnX3N1ZmZpeCwgJ01ha2VmaWxlJyksCisgICAgICAgICAgICAgb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKV0KKyAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBmcC5jbG9zZSgpCisKKyAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnIC1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInJShXT1JLRElSLCksICcnKQorICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCcgLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnJShXT1JLRElSLCksICcnKQorICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICAgICBmcC53cml0ZShkYXRhKQorICAgICAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTkwNywxNyArMTAyNiwxNyBAQAogCiAgICAgIyBUaGlzIG9uZSBpcyBub3QgaGFuZHkgYXMgYSB0ZW1wbGF0ZSB2YXJpYWJsZQogICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJyRQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSJywgJy9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yaycpCi0gICAgZnAgPSBvcGVuKG91dFBhdGgsICd3YicpCisgICAgZnAgPSBvcGVuKG91dFBhdGgsICd3JykKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAogZGVmIHBhdGNoU2NyaXB0KGluUGF0aCwgb3V0UGF0aCk6CiAgICAgZGF0YSA9IGZpbGVDb250ZW50cyhpblBhdGgpCiAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnQFBZVkVSQCcsIGdldFZlcnNpb24oKSkKLSAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3diJykKKyAgICBmcCA9IG9wZW4ob3V0UGF0aCwgJ3cnKQogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKG91dFBhdGgsIDA3NTUpCisgICAgb3MuY2htb2Qob3V0UGF0aCwgU1RBVF8wbzc1NSkKIAogCiAKQEAgLTkzNCw3ICsxMDUzLDcgQEAKICAgICAgICAgcmVhZG1lID0gdGV4dHdyYXAuZGVkZW50KHJlY2lwZVsncmVhZG1lJ10pCiAgICAgICAgIGlzUmVxdWlyZWQgPSByZWNpcGUuZ2V0KCdyZXF1aXJlZCcsIFRydWUpCiAKLSAgICAgICAgcHJpbnQgIi0gYnVpbGRpbmcgcGFja2FnZSAlcyIlKHBrZ25hbWUsKQorICAgICAgICBwcmludCgiLSBidWlsZGluZyBwYWNrYWdlICVzIiUocGtnbmFtZSwpKQogCiAgICAgICAgICMgU3Vic3RpdHV0ZSBzb21lIHZhcmlhYmxlcwogICAgICAgICB0ZXh0dmFycyA9IGRpY3QoCkBAIC05NzksNyArMTA5OCw3IEBACiAgICAgICAgICAgICBwYXRjaFNjcmlwdChwb3N0ZmxpZ2h0LCBvcy5wYXRoLmpvaW4ocnNyY0RpciwgJ3Bvc3RmbGlnaHQnKSkKIAogICAgICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgICAgICBtYWpvciwgbWlub3IgPSBtYXAoaW50LCBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nLCAyKSkKKyAgICAgICAgbWFqb3IsIG1pbm9yID0gZ2V0VmVyc2lvbk1ham9yTWlub3IoKQogICAgICAgICBwbCA9IFBsaXN0KAogICAgICAgICAgICAgICAgIENGQnVuZGxlR2V0SW5mb1N0cmluZz0iUHl0aG9uLiVzICVzIiUocGtnbmFtZSwgdmVycywpLAogICAgICAgICAgICAgICAgIENGQnVuZGxlSWRlbnRpZmllcj0nb3JnLnB5dGhvbi5QeXRob24uJXMnJShwa2duYW1lLCksCkBAIC0xMDE2LDcgKzExMzUsNyBAQAogZGVmIG1ha2VNcGtnUGxpc3QocGF0aCk6CiAKICAgICB2ZXJzID0gZ2V0RnVsbFZlcnNpb24oKQotICAgIG1ham9yLCBtaW5vciA9IG1hcChpbnQsIGdldFZlcnNpb24oKS5zcGxpdCgnLicsIDIpKQorICAgIG1ham9yLCBtaW5vciA9IGdldFZlcnNpb25NYWpvck1pbm9yKCkKIAogICAgIHBsID0gUGxpc3QoCiAgICAgICAgICAgICBDRkJ1bmRsZUdldEluZm9TdHJpbmc9IlB5dGhvbiAlcyIlKHZlcnMsKSwKQEAgLTExMjcsNyArMTI0Niw3IEBACiAgICAgIyBDdXN0b20gaWNvbiBmb3IgdGhlIERNRywgc2hvd24gd2hlbiB0aGUgRE1HIGlzIG1vdW50ZWQuCiAgICAgc2h1dGlsLmNvcHkoIi4uL0ljb25zL0Rpc2sgSW1hZ2UuaWNucyIsCiAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUsICIuVm9sdW1lSWNvbi5pY25zIikpCi0gICAgcnVuQ29tbWFuZCgiL0RldmVsb3Blci9Ub29scy9TZXRGaWxlIC1hIEMgJXMvIiUoCisgICAgcnVuQ29tbWFuZCgiU2V0RmlsZSAtYSBDICVzLyIlKAogICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUpKSwpKQogCiAgICAgcnVuQ29tbWFuZCgiaGRpdXRpbCBkZXRhY2ggJXMiJShzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAibW50Iiwgdm9sbmFtZSkpKSkKQEAgLTExNjgsNiArMTI4Nyw3IEBACiAKICAgICBvcy5lbnZpcm9uWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9IERFUFRBUkdFVAogICAgIG9zLmVudmlyb25bJ0NDJ10gPSBDQworICAgIG9zLmVudmlyb25bJ0NYWCddID0gQ1hYCiAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhXT1JLRElSKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShXT1JLRElSKQpAQCAtMTE5OCw3ICsxMzE4LDcgQEAKIAogICAgIGZvbGRlciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAiX3Jvb3QiLCAiQXBwbGljYXRpb25zIiwgIlB5dGhvbiAlcyIlKAogICAgICAgICBnZXRWZXJzaW9uKCksKSkKLSAgICBvcy5jaG1vZChmb2xkZXIsIDA3NTUpCisgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIAogICAgICMgQ3JlYXRlIHRoZSBpbnN0YWxsZXIKQEAgLTEyMTEsOSArMTMzMSw5IEBACiAgICAgc2h1dGlsLmNvcHkoJy4uLy4uL0xJQ0VOU0UnLCBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2luc3RhbGxlcicsICdMaWNlbnNlLnR4dCcpKQogCiAgICAgZnAgPSBvcGVuKG9zLnBhdGguam9pbihXT1JLRElSLCAnaW5zdGFsbGVyJywgJ0J1aWxkLnR4dCcpLCAndycpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJVSUxEIElORk8iCi0gICAgcHJpbnQgPj4gZnAsICIjIERhdGU6IiwgdGltZS5jdGltZSgpCi0gICAgcHJpbnQgPj4gZnAsICIjIEJ5OiIsIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MKKyAgICBmcC53cml0ZSgiIyBCVUlMRCBJTkZPXG4iKQorICAgIGZwLndyaXRlKCIjIERhdGU6ICVzXG4iICUgdGltZS5jdGltZSgpKQorICAgIGZwLndyaXRlKCIjIEJ5OiAlc1xuIiAlIHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSkucHdfZ2Vjb3MpCiAgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBbmQgY29weSBpdCB0byBhIERNRwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoIGIvTWFjL0J1aWxkU2NyaXB0L25jdXJzZXMtNS41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWFiM2QzLi4wMDAwMDAwCi0tLSBhL01hYy9CdWlsZFNjcmlwdC9uY3Vyc2VzLTUuNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLWRpZmYgLXIgLXUgbmN1cnNlcy01LjUtb3JpZy90ZXN0L01ha2VmaWxlLmluIG5jdXJzZXMtNS41L3Rlc3QvTWFrZWZpbGUuaW4KLS0tLSBuY3Vyc2VzLTUuNS1vcmlnL3Rlc3QvTWFrZWZpbGUuaW4JMjAwNi0wMy0yNCAxMjo0Nzo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBuY3Vyc2VzLTUuNS90ZXN0L01ha2VmaWxlLmluCTIwMDYtMDMtMjQgMTI6NDc6NTAuMDAwMDAwMDAwICswMTAwCi1AQCAtNzUsNyArNzUsNyBAQAotIE1BVEhfTElCCT0gQE1BVEhfTElCQAotIAotIExECQk9IEBMREAKLS1MSU5LCQk9IEBMSU5LX1RFU1RTQCAkKExJQlRPT0xfTElOSykgJChDQykgJChDRkxBR1MpCi0rTElOSwkJPSBATElOS19URVNUU0AgJChMSUJUT09MX0xJTkspICQoQ0MpIAotIAotIHVzRkxBR1MJCT0gQExEX01PREVMQCBATE9DQUxfTERGTEFHU0AgQExERkxBR1NACi0gCi1kaWZmIC1ydSBuY3Vyc2VzLTUuNS1vcmlnL25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYyAyMDA0LTAxLTExIDAyOjU3OjA1LjAwMDAwMDAwMCArMDEwMAotKysrIG5jdXJzZXMtNS41L25jdXJzZXMvdGluZm8vcmVhZF9lbnRyeS5jICAgICAgMjAwNi0wMy0yNSAyMjo0OTozOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NzQsNyArNDc0LDcgQEAKLSAgICAgfQotIAotICAgICAvKiB0cnVuY2F0ZSB0aGUgdGVybWluYWwgbmFtZSB0byBwcmV2ZW50IGJ1ZmZlciBvdmVyZmxvdyAqLwotLSAgICAodm9pZCkgc3ByaW50Zih0dG4sICIlYy8lLipzIiwgKnRuLCAoaW50KSBzaXplb2YodHRuKSAtIDMsIHRuKTsKLSsgICAgKHZvaWQpIHNwcmludGYodHRuLCAiJXgvJS4qcyIsICp0biwgKGludCkgc2l6ZW9mKHR0bikgLSAzLCB0bik7Ci0gCi0gICAgIC8qIFRoaXMgaXMgU3lzdGVtIFYgYmVoYXZpb3IsIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIHJlcXVpcmVtZW50cyBmb3IKLSAgICAgICogd3JpdGluZyB0ZXJtaW5mbyBlbnRyaWVzLgotZGlmZiAtcnUgbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUgbmN1cnNlcy01LjUvY29uZmlndXJlCi0tLS0gbmN1cnNlcy01LjUtb3JpZy9jb25maWd1cmUJMjAwNS0wOS0yNCAyMzo1MDo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBuY3Vyc2VzLTUuNS9jb25maWd1cmUJMjAwNi0wMy0yNiAyMjoyNDo1OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01MDI3LDcgKzUwMjcsNyBAQAotIAlkYXJ3aW4qKQotIAkJRVhUUkFfQ0ZMQUdTPSItbm8tY3BwLXByZWNvbXAiCi0gCQlDQ19TSEFSRURfT1BUUz0iLWR5bmFtaWMiCi0tCQlNS19TSEFSRURfTElCPSckKENDKSAtZHluYW1pY2xpYiAtaW5zdGFsbF9uYW1lICQoREVTVERJUikkKGxpYmRpcikvYGJhc2VuYW1lICRAYCAtY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1jdXJyZW50X3ZlcnNpb24gJChBQklfVkVSU0lPTikgLW8gJEAnCi0rCQlNS19TSEFSRURfTElCPSckKENDKSAkKENGTEFHUykgLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpL2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKEFCSV9WRVJTSU9OKSAtY3VycmVudF92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1vICRAJwotIAkJdGVzdCAiJGNmX2N2X3NobGliX3ZlcnNpb24iID0gYXV0byAmJiBjZl9jdl9zaGxpYl92ZXJzaW9uPWFiaQotIAkJY2ZfY3Zfc2hsaWJfdmVyc2lvbl9pbmZpeD15ZXMKLSAJCTs7CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQKaW5kZXggZjFiZWRhMC4uOWFjNTJkMCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnR4dApAQCAtNSw4ICs1LDE1IEBACiBJbnN0YWxsYXRpb24gcmVxdWlyZXMgYXBwcm94aW1hdGVseSAkSU5TVEFMTF9TSVpFIE1CIG9mIGRpc2sgc3BhY2UsCiBpZ25vcmUgdGhlIG1lc3NhZ2UgdGhhdCBpdCB3aWxsIHRha2UgemVybyBieXRlcy4KIAotWW91IG11c3QgaW5zdGFsbCBvbnRvIHlvdXIgY3VycmVudCBib290IGRpc2ssIGV2ZW4gdGhvdWdoIHRoZQotaW5zdGFsbGVyIGRvZXMgbm90IGVuZm9yY2UgdGhpcywgb3RoZXJ3aXNlIHRoaW5ncyB3aWxsIG5vdCB3b3JrLgorSWYgeW91IGFyZSBhdHRlbXB0aW5nIHRvIGluc3RhbGwgb24gYW4gT1MgWCAxMC44IHN5c3RlbSwgeW91IG1heQorc2VlIGEgbWVzc2FnZSB0aGF0IFB5dGhvbiBjYW4ndCBiZSBpbnN0YWxsZWQgYmVjYXVzZSBpdCBpcyBmcm9tIGFuCit1bmlkZW50aWZpZWQgZGV2ZWxvcGVyLiAgVGhpcyBpcyBiZWNhdXNlIHRoaXMgUHl0aG9uIGluc3RhbGxlcgorcGFja2FnZSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCB0aGUgR2F0ZWtlZXBlciBzZWN1cml0eSBmZWF0dXJlCitpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gIFRvIGFsbG93IFB5dGhvbiB0byBiZSBpbnN0YWxsZWQsIHlvdQorY2FuIG92ZXJyaWRlIHRoZSBHYXRla2VlcGVyIHBvbGljeSBmb3IgdGhpcyBpbnN0YWxsLiAgSW4gdGhlIEZpbmRlciwKK2luc3RlYWQgb2YgZG91YmxlLWNsaWNraW5nLCBjb250cm9sLWNsaWNrIG9yIHJpZ2h0IGNsaWNrIHRoZSAiUHl0aG9uIgoraW5zdGFsbGVyIHBhY2thZ2UgaWNvbi4gIFRoZW4gc2VsZWN0ICJPcGVuIHVzaW5nIC4uLiBJbnN0YWxsZXIiIGZyb20KK3RoZSBjb250ZXh0dWFsIG1lbnUgdGhhdCBhcHBlYXJzLgogCiBQeXRob24gY29uc2lzdHMgb2YgdGhlIFB5dGhvbiBwcm9ncmFtbWluZyBsYW5ndWFnZSBpbnRlcnByZXRlciwgcGx1cwogYSBzZXQgb2YgcHJvZ3JhbXMgdG8gYWxsb3cgZWFzeSBhY2Nlc3MgdG8gaXQgZm9yIE1hYyB1c2VycyBpbmNsdWRpbmcKQEAgLTE2LDEwICsyMywxMSBAQAogCiAgICAgICAgICAgICAgICAgICAgICoqKiogSU1QT1JUQU5UICoqKioKICAgICAgICAgICAgICAgICAgICAgCi1CZWZvcmUgdXNpbmcgSURMRSBvciBvdGhlciBwcm9ncmFtcyB1c2luZyB0aGUgdGtpbnRlciBncmFwaGljYWwgdXNlcgotaW50ZXJmYWNlIHRvb2xraXQsIHZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCi1mb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zCi1vZiBUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIE1hYyBPUyBYLgorVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIHRraW50ZXIgZ3JhcGhpY2FsIHVzZXIKK2ludGVyZmFjZSB0b29sa2l0LCB5b3UgbWF5IG5lZWQgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKK3RoZSBUY2wvVGsgZnJhbWV3b3Jrcy4gIFZpc2l0IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvCitmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mCitUY2wvVGsgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLgogCiAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioKIApAQCAtMzIsNSArNDAsMTMgQEAKIHdlbGwuIERvdWJsZS1jbGljayBvbiB0aGUgIlVwZGF0ZSBTaGVsbCBQcm9maWxlIiBjb21tYW5kIHRvIGFkZCB0aGUKICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayB0byB5b3VyIHNoZWxsJ3Mgc2VhcmNoIHBhdGguCiAKK1lvdSBtdXN0IGluc3RhbGwgb250byB5b3VyIGN1cnJlbnQgYm9vdCBkaXNrLCBldmVuIHRob3VnaCB0aGUKK2luc3RhbGxlciBkb2VzIG5vdCBlbmZvcmNlIHRoaXMsIG90aGVyd2lzZSB0aGluZ3Mgd2lsbCBub3Qgd29yay4KKworWW91IGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiB0aGUgZGlzayBpbWFnZSBmaWxlIGNvbnRhaW5pbmcgdGhlCitpbnN0YWxsZXIgcGFja2FnZSBhbmQgdGhpcyBSZWFkTWUgZmlsZSBieSBjb21wYXJpbmcgaXRzIG1kNSBjaGVja3N1bQorYW5kIHNpemUgd2l0aCB0aGUgdmFsdWVzIHB1Ymxpc2hlZCBvbiB0aGUgcmVsZWFzZSBwYWdlIGxpbmtlZCBhdAoraHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkLworCiBNb3JlIGluZm9ybWF0aW9uIG9uIFB5dGhvbiBpbiBnZW5lcmFsIGNhbiBiZSBmb3VuZCBhdAogaHR0cDovL3d3dy5weXRob24ub3JnLgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKaW5kZXggZDIwOWIxMC4uODZmYmY2MyAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCkBAIC0xLDggKzEsOCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMDM4XGNvY29hc3VicnRmMzUwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjExMzhcY29jb2FzdWJydGY0NzAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9CiBccGFwZXJ3MTE5MDRccGFwZXJoMTY4MzZcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzk2NDBcdmlld2gxMDYyMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccWxccW5hdHVyYWwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTIwLDkgKzIwLDkgQEAKIFwKIAogXGIgTk9URTogCi1cYjAgVGhpcyBwYWNrYWdlIHdpbGwgYnkgZGVmYXVsdCBub3QgdXBkYXRlIHlvdXIgc2hlbGwgcHJvZmlsZSBhbmQgd2lsbCBhbHNvIG5vdCBpbnN0YWxsIGZpbGVzIGluIC91c3IvbG9jYWwuICBEb3VibGUtY2xpY2sgCitcYjAgVGhpcyBwYWNrYWdlIHdpbGwgbm90IHVwZGF0ZSB5b3VyIHNoZWxsIHByb2ZpbGUgYnkgZGVmYXVsdC4gIERvdWJsZS1jbGljayAKIFxiIFVwZGF0ZSBTaGVsbCBQcm9maWxlCi1cYjAgIGF0IGFueSB0aW1lIHRvIG1ha2UgJEZVTExfVkVSU0lPTiB0aGUgZGVmYXVsdCBQeXRob24uXAorXGIwICBhdCBhbnkgdGltZSB0byBtYWtlICRGVUxMX1ZFUlNJT04gdGhlIGRlZmF1bHQgUHl0aG9uIDMgdmVyc2lvbi4gIFRoaXMgdmVyc2lvbiBjYW4gY28tZXhpc3Qgd2l0aCBvdGhlciBpbnN0YWxsZWQgdmVyc2lvbnMgb2YgUHl0aG9uIDMgYW5kIFB5dGhvbiAyLlwKIFwKIAogXGIgSU1QT1JUQU5UOgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uCmluZGV4IDMxZmJmMmYuLmM0YmE2MTYgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbgorKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24KQEAgLTUsMTkgKzUsMTAgQEAKIEZXS19ET0NESVJfU1VCUEFUSD0iUmVzb3VyY2VzL0VuZ2xpc2gubHByb2ovRG9jdW1lbnRhdGlvbiIKIEZXS19ET0NESVI9IiR7RldLfS8ke0ZXS19ET0NESVJfU1VCUEFUSH0iCiBBUFBESVI9Ii9BcHBsaWNhdGlvbnMvUHl0aG9uICR7UFlWRVJ9IgotREVWX0RPQ0RJUj0iL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uIgogU0hBUkVfRElSPSIke0ZXS30vc2hhcmUiCiBTSEFSRV9ET0NESVI9IiR7U0hBUkVfRElSfS9kb2MvcHl0aG9uJHtQWVZFUn0iCiBTSEFSRV9ET0NESVJfVE9fRldLPSIuLi8uLi8uLiIKIAotIyBtYWtlIGxpbmsgaW4gL0RldmVsb3Blci9Eb2N1bWVudGF0aW9uLyBmb3IgWGNvZGUgdXNlcnMKLWlmIFsgLWQgIiR7REVWX0RPQ0RJUn0iIF07IHRoZW4KLSAgICBpZiBbICEgLWQgIiR7REVWX0RPQ0RJUn0vUHl0aG9uIiBdOyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICIke0RFVl9ET0NESVJ9L1B5dGhvbiIKLSAgICBmaQotICAgIGxuIC1maHMgIiR7RldLX0RPQ0RJUn0iICIke0RFVl9ET0NESVJ9L1B5dGhvbi9SZWZlcmVuY2UgRG9jdW1lbnRhdGlvbiAke1BZVkVSfSIKLWZpCi0KICMgbWFrZSBsaW5rIGluIC9BcHBsaWNhdGlvbnMvUHl0aG9uIG0ubi8gZm9yIEZpbmRlciB1c2VycwogaWYgWyAtZCAiJHtBUFBESVJ9IiBdOyB0aGVuCiAgICAgbG4gLWZocyAiJHtGV0tfRE9DRElSfS9pbmRleC5odG1sIiAiJHtBUFBESVJ9L1B5dGhvbiBEb2N1bWVudGF0aW9uLmh0bWwiCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yayBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCmluZGV4IDlmYzkxNTEuLmViMDgyOTcgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCisrKyBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrCkBAIC04LDE0ICs4LDI0IEBACiAKICIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAotICAgIC14IGJhZHN5bnRheCAteCBzaXRlLXBhY2thZ2VzIFwKKyAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAogIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIC1PIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCi0gICAgLXggYmFkc3ludGF4IC14IHNpdGUtcGFja2FnZXMgXAorICAgIC1mIC14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9IgogCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyAgICAtZiAteCBiYWRzeW50YXggXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCisKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorICAgIC1mIC14IGJhZHN5bnRheCBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKKwogY2hncnAgLVIgYWRtaW4gIiR7RldLfSIKIGNobW9kIC1SIGcrdyAiJHtGV0t9IgogCmRpZmYgLS1naXQgYS9NYWMvTWFrZWZpbGUuaW4gYi9NYWMvTWFrZWZpbGUuaW4KaW5kZXggOGE2MmE5MC4uMzU0YzFmZCAxMDA2NDQKLS0tIGEvTWFjL01ha2VmaWxlLmluCisrKyBiL01hYy9NYWtlZmlsZS5pbgpAQCAtNDAsMTQgKzQwLDEzIEBACiBJTlNUQUxMX0RBVEE9QElOU1RBTExfREFUQUAKIExOPUBMTkAKIFNUUklQRkxBRz0tcwotQ1BNQUM9L0RldmVsb3Blci9Ub29scy9DcE1hYworQ1BNQUM9Q3BNYWMKIAogQVBQVEVNUExBVEU9JChzcmNkaXIpL1Jlc291cmNlcy9hcHAKLUFQUFNVQkRJUlM9TWFjT1MgUmVzb3VyY2VzIAorQVBQU1VCRElSUz1NYWNPUyBSZXNvdXJjZXMKIGNvbXBpbGVhbGw9JChzcmNkaXIpLy4uL0xpYi9jb21waWxlYWxsLnB5CiAKLWluc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUgXAotCWNoZWNrYXBwbGVweXRob24KK2luc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX3B5dGhvbncgaW5zdGFsbF9QeXRob25MYXVuY2hlciBpbnN0YWxsX0lETEUKIAogaW5zdGFsbF9weXRob253OiBweXRob253CiAJJChJTlNUQUxMX1BST0dSQU0pICQoU1RSSVBGTEFHKSBweXRob253ICIkKERFU1RESVIpJChwcmVmaXgpL2Jpbi9weXRob253JChWRVJTSU9OKSIKQEAgLTcyLDcgKzcxLDcgQEAKIAlmb3IgZm4gaW4gcHl0aG9uMyBweXRob253MyBpZGxlMyBweWRvYzMgcHl0aG9uMy1jb25maWcgXAogCQkgIHB5dGhvbiQoVkVSU0lPTikgcHl0aG9udyQoVkVSU0lPTikgaWRsZSQoVkVSU0lPTikgXAogCQkgIHB5ZG9jJChWRVJTSU9OKSBweXRob24kKFZFUlNJT04pLWNvbmZpZyAydG8zIFwKLQkJICAydG8zLSQoVkVSU0lPTikgO1wKKwkJICAydG8zLSQoVkVSU0lPTikgcHl2ZW52IHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTkzLDcgKzkyLDcgQEAKIAkJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICIkKERFU1RESVIpJChGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgpL2JpbiIgO1wKIAlmaQogCWZvciBmbiBpbiBweXRob24kKFZFUlNJT04pIHB5dGhvbnckKFZFUlNJT04pIGlkbGUkKFZFUlNJT04pIFwKLQkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pO1wKKwkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMy0kKFZFUlNJT04pIHB5dmVudi0kKFZFUlNJT04pIDtcCiAJZG8gXAogCQlsbiAtZnMgIiQocHJlZml4KS9iaW4vJCR7Zm59IiAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4vJCR7Zm59IiA7XAogCWRvbmUKQEAgLTE5NiwxNCArMTk1LDYgQEAKIAkJIiQoREVTVERJUikkKHByZWZpeCkvc2hhcmUvZG9jL3B5dGhvbiQoVkVSU0lPTikvZXhhbXBsZXMvVG9vbHMiIDsgXAogCQljaG1vZCAtUiB1Z28rclgsZ28tdyAiJChERVNURElSKSQocHJlZml4KS9zaGFyZS9kb2MvcHl0aG9uJChWRVJTSU9OKS9leGFtcGxlcy9Ub29scyIKIAotCi1jaGVja2FwcGxlcHl0aG9uOiAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weQotCUBpZiAhICQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSAtbjsgdGhlbiBcCi0JCWVjaG8gIiogV0FSTklORzogQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgd2lsbCBoYXZlIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyBmcm9tIG5vdyBvbi4iOyBcCi0JCWVjaG8gIiogV0FSTklORzogUnVuICQoc3JjZGlyKS9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5IHdpdGggXCJzdWRvXCIgdG8gZml4IHRoaXMuIjsgXAotCWZpCi0KLQogY2xlYW46CiAJcm0gcHl0aG9udwogCWNkIFB5dGhvbkxhdW5jaGVyICYmIG1ha2UgY2xlYW4KZGlmZiAtLWdpdCBhL01hYy9SRUFETUUgYi9NYWMvUkVBRE1FCmluZGV4IDY4NTNkYjQuLmY3YmM2YzMgMTAwNjQ0Ci0tLSBhL01hYy9SRUFETUUKKysrIGIvTWFjL1JFQURNRQpAQCAtMSw2ICsxLDEzIEBACi09PT09PT09PT09PT0KLU1hY09TWCBOb3RlcwotPT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09PT09CitQeXRob24gb24gTWFjIE9TIFggUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKzpBdXRob3JzOgorICAgIEphY2sgSmFuc2VuICgyMDA0LTA3KSwKKyAgICBSb25hbGQgT3Vzc29yZW4gKDIwMTAtMDQpLAorICAgIE5lZCBEZWlseSAoMjAxMi0wNikKKworOlZlcnNpb246IDMuMy4wCiAKIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYSBxdWljayBvdmVydmlldyBvZiBzb21lIE1hYyBPUyBYIHNwZWNpZmljIGZlYXR1cmVzIGluCiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KQEAgLTEyLDExICsxOSwxMSBAQAogICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAogICBpbmZvcm1hdGlvbiBvbiBmcmFtZXdvcmtzLgogCi0gIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXQgaW5zdGFsbGVkCisgIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXMgaW5zdGFsbGVkCiAgIGludG8gdGhhdCBkaXJlY3RvcnkuIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbCBhIHB5dGhvbiBmcmFtZXdvcmsgaW50bwogICB5b3VyIGhvbWUgZGlyZWN0b3J5OjoKIAotICAgICAkIGNvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAgJCAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcms9L1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3MKICAgICAgJCBtYWtlICYmIG1ha2UgaW5zdGFsbAogCiAgIFRoaXMgd2lsbCBpbnN0YWxsIHRoZSBmcmFtZXdvcmsgaXRzZWxmIGluIGBgL1VzZXJzL3JvbmFsZC9MaWJyYXJ5L0ZyYW1ld29ya3NgYCwKQEAgLTMzLDkgKzQwLDEwIEBACiAgIENyZWF0ZSBhIHVuaXZlcnNhbCBiaW5hcnkgYnVpbGQgb2Ygb2YgUHl0aG9uLiBUaGlzIGNhbiBiZSB1c2VkIHdpdGggYm90aAogICByZWd1bGFyIGFuZCBmcmFtZXdvcmsgYnVpbGRzLgogCi0gIFRoZSBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXMgd2hpY2ggT1NYIFNESyBzaG91bGQgYmUgdXNlZCB0byBwZXJmb3JtIHRoZQotICBidWlsZC4gVGhpcyBkZWZhdWx0cyB0byBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAsIHNwZWNpZnkgCi0gIGBgL2BgIHdoZW4gYnVpbGRpbmcgb24gYSAxMC41IHN5c3RlbSwgZXNwZWNpYWxseSB3aGVuIGJ1aWxkaW5nIDY0LWJpdCBjb2RlLgorICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVzIHdoaWNoIE9TIFggU0RLIHNob3VsZCBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlCisgIGJ1aWxkLiAgSWYgeGNvZGVidWlsZCBpcyBhdmFpbGFibGUgYW5kIGNvbmZpZ3VyZWQsIHRoaXMgZGVmYXVsdHMgdG8KKyAgdGhlIFhjb2RlIGRlZmF1bHQgTWFjT1MgWCBTREssIG90aGVyd2lzZSBgYC9EZXZlbG9wZXIvU0RLcy9NYWNPU1guMTAuNHUuc2RrYGAKKyAgaWYgYXZhaWxhYmxlIG9yIGBgL2BgIGlmIG5vdC4KIAogICBTZWUgdGhlIHNlY3Rpb24gX2BCdWlsZGluZyBhbmQgdXNpbmcgYSB1bml2ZXJzYWwgYmluYXJ5IG9mIFB5dGhvbiBvbiBNYWMgT1MgWGAKICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCkBAIC00Myw3ICs1MSw5IEBACiAqIGBgLS13aXRoLXVuaXZlcmFsLWFyY2hzPVZBTFVFYGAKIAogICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMgCi0gIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4KKyAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKKyAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cworICB0byBgYGludGVsYGAuCiAKIAogQnVpbGRpbmcgYW5kIHVzaW5nIGEgdW5pdmVyc2FsIGJpbmFyeSBvZiBQeXRob24gb24gTWFjIE9TIFgKQEAgLTUyLDkgKzYyLDE0IEBACiAxLiBXaGF0IGlzIGEgdW5pdmVyc2FsIGJpbmFyeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgYm90aCBQUEMgYW5kIGkzODYKLWFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUgc3BlZWQgb24gYm90aCBjbGFzc2ljIHBvd2VycGMgYmFzZWQgbWFjcyBhbmQKLXRoZSBuZXdlciBpbnRlbCBiYXNlZCBtYWNzLgorQSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIFB5dGhvbiBjb250YWlucyBvYmplY3QgY29kZSBmb3IgbW9yZSB0aGFuIG9uZQorQ1BVIGFyY2hpdGVjdHVyZS4gIEEgdW5pdmVyc2FsIE9TIFggZXhlY3V0YWJsZSBmaWxlIG9yIGxpYnJhcnkgY29tYmluZXMgdGhlCithcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSBpbnRvIG9uZSBmaWxlIGFuZCBjYW4gdGhlcmVmb3JlIHJ1biBhdCBuYXRpdmUKK3NwZWVkIG9uIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4gIFVuaXZlcnNhbCBmaWxlcyB3ZXJlIGludHJvZHVjZWQgaW4KK09TIFggMTAuNCB0byBhZGQgc3VwcG9ydCBmb3IgSW50ZWwtYmFzZWQgTWFjcyB0byB0aGUgZXhpc3RpbmcgUG93ZXJQQyAoUFBDKQorbWFjaGluZXMuICBJbiBPUyBYIDEwLjUgc3VwcG9ydCB3YXMgZXh0ZW5kZWQgdG8gNjQtYml0IEludGVsIGFuZCA2NC1iaXQgUFBDCithcmNoaXRlY3R1cmVzLiAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKK29mIGFyY2hpdGVjdHVyZXMgZGVwZW5kaW5nIG9uIHRoZSBidWlsZCB0b29scyBhbmQgT1MgWCB2ZXJzaW9uIGluIHVzZS4KIAogMi4gSG93IGRvIEkgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3LDM4ICs4Miw1NSBAQAogICAkIG1ha2UgaW5zdGFsbAogCiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgd2l0aCBhIGZyYW1ld29yayBidWlsZCBvZiBweXRob24sIGJ1dCBhbHNvIHdpdGggYSBjbGFzc2ljCi11bml4IGJ1aWxkLiBFaXRoZXIgd2F5IHlvdSB3aWxsIGhhdmUgdG8gYnVpbGQgcHl0aG9uIG9uIE1hYyBPUyBYIDEwLjQgKG9yIGxhdGVyKQotd2l0aCBYY29kZSAyLjEgKG9yIGxhdGVyKS4gWW91IGFsc28gaGF2ZSB0byBpbnN0YWxsIHRoZSAxMC40dSBTREsgd2hlbiAKLWluc3RhbGxpbmcgWGNvZGUuCit1bml4IGJ1aWxkLiBVbml2ZXJzYWwgYnVpbGRzIHdlcmUgZmlyc3Qgc3VwcG9ydGVkIHdpdGggT1MgWCAxMC40IHdpdGggWGNvZGUgMi4xCithbmQgdGhlIDEwLjR1IFNESy4gIFN0YXJ0aW5nIHdpdGggWGNvZGUgMyBhbmQgT1MgWCAxMC41LCBtb3JlIGNvbmZpZ3VyYXRpb25zIGFyZQorYXZhaWxhYmxlLgogCi0yLjEgRmxhdm91cnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisyLjEgRmxhdm9ycyBvZiB1bml2ZXJzYWwgYmluYXJpZXMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1JdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3VycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKLXRoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpLiBUaGUgZmxhdm91ciBjYW4gYmUKLXNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCitJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBhIG51bWJlciBvZiBmbGF2b3JzIG9mIHRoZSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkLAordGhlIGRlZmF1bHQgaXMgYSAzMi1iaXQgb25seSBiaW5hcnkgKGkzODYgYW5kIHBwYykgaW4gYnVpbGQgZW52aXJvbm1lbnRzIHRoYXQKK3N1cHBvcnQgcHBjICgxMC40IHdpdGggWGNvZGUgMiwgMTAuNSBhbmQgMTAuNiB3aXRoIFhjb2RlIDMpIG9yIGFuCitJbnRlbC0zMi8tNjQtYml0IGJpbmFyeSAoaTM4NiBhbmQgWDg2XzY0KSBpbiBidWlsZCBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QKK3N1cHBvcnQgcHBjIChYY29kZSA0IG9uIDEwLjYgYW5kIGxhdGVyIHN5c3RlbXMpLiAgVGhlIGZsYXZvciBjYW4gYmUgc3BlY2lmaWVkCit1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYC4gVGhlIGZvbGxvd2luZwogdmFsdWVzIGFyZSBhdmFpbGFibGU6CiAKKyAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKKwogICAqIGBgMzItYml0YGA6ICAgYGBwcGNgYCwgYGBpMzg2YGAKIAorICAqIGBgMy13YXlgYDoJICBgYGkzODZgYCwgYGB4ODZfNjRgYCwgYGBwcGNgYAorCiAgICogYGA2NC1iaXRgYDogICBgYHBwYzY0YGAsIGBgeDg2XzY0YGAKIAogICAqIGBgYWxsYGA6ICAgICAgYGBwcGNgYCwgYGBwcGM2NGBgLCBgYGkzODZgYCwgYGB4ODZfNjRgYAogCi0gICogYGAzLXdheWBgOgkgIGBgcHBjYGAsIGBgaTM4NmBgIGFuZCBgYHg4Nl82NGBgCi0KLSAgKiBgYGludGVsYGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAKLQogVG8gYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgaW5jbHVkZXMgYSA2NC1iaXQgYXJjaGl0ZWN0dXJlLCB5b3UgbXVzdCBidWlsZAotb24gYSBzeXN0ZW0gcnVubmluZyBPU1ggMTAuNSBvciBsYXRlci4gVGhlIGBgYWxsYGAgZmxhdm91ciBjYW4gb25seSBiZSBidWlsdCBvbgotT1NYIDEwLjUuCitvbiBhIHN5c3RlbSBydW5uaW5nIE9TIFggMTAuNSBvciBsYXRlci4gIFRoZSBgYGFsbGBgIGFuZCBgYDY0LWJpdGBgIGZsYXZvcnMgY2FuCitvbmx5IGJlIGJ1aWx0IHdpdGggYW4gMTAuNSBTREsgYmVjYXVzZSBgYHBwYzY0YGAgc3VwcG9ydCB3YXMgb25seSBpbmNsdWRlZCB3aXRoCitPUyBYIDEwLjUuICBBbHRob3VnaCBsZWdhY3kgYGBwcGNgYCBzdXBwb3J0IHdhcyBpbmNsdWRlZCB3aXRoIFhjb2RlIDMgb24gT1MgWAorMTAuNiwgaXQgd2FzIHJlbW92ZWQgaW4gWGNvZGUgNCwgdmVyc2lvbnMgb2Ygd2hpY2ggd2VyZSByZWxlYXNlZCBvbiBPUyBYIDEwLjYKK2FuZCB3aGljaCBpcyB0aGUgY3VycmVudCBzdGFuZGFyZCBmb3IgT1MgWCAxMC43IGFuZCAxMC44LiAgVG8gc3VtbWFyaXplLCB0aGUKK2ZvbGxvd2luZyBjb21iaW5hdGlvbnMgb2YgU0RLcyBhbmQgdW5pdmVyc2FsLWFyY2hzIGZsYXZvcnMgYXJlIGF2YWlsYWJsZToKIAotVGhlIG1ha2VmaWxlIGZvciBhIGZyYW1ld29yayBidWlsZCB3aWxsIGluc3RhbGwgYGBweXRob24zMmBgIGFuZCBgYHB5dGhvbnczMmBgIAotYmluYXJpZXMgd2hlbiB0aGUgdW5pdmVyc2FsIGFyY2hpdGVjdXJlcyBpbmNsdWRlcyBhdCBsZWFzdCBvbmUgMzItYml0IGFyY2hpdGVjdHVyZQotKHRoYXQgaXMsIGZvciBhbGwgZmxhdm91cnMgYnV0IGBgNjQtYml0YGApLgorICAqIDEwLjR1IFNESyB3aXRoIFhjb2RlIDIgc3VwcG9ydHMgYGAzMi1iaXRgYCBvbmx5CiAKLVJ1bm5pbmcgYSBzcGVjaWZpYyBhcmNoaWN0dXJlCi0uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorICAqIDEwLjUgU0RLIHdpdGggWGNvZGUgMy4xLnggc3VwcG9ydHMgYWxsIGZsYXZvcnMKKworICAqIDEwLjYgU0RLIHdpdGggWGNvZGUgMy4yLnggc3VwcG9ydHMgYGBpbnRlbGBgLCBgYDMtd2F5YGAsIGFuZCBgYDMyLWJpdGBgCisKKyAgKiAxMC42IFNESyB3aXRoIFhjb2RlIDQgc3VwcG9ydHMgYGBpbnRlbGBgIG9ubHkKKworICAqIDEwLjcgYW5kIDEwLjggU0RLcyB3aXRoIFhjb2RlIDQgc3VwcG9ydCBgYGludGVsYGAgb25seQorCitUaGUgbWFrZWZpbGUgZm9yIGEgZnJhbWV3b3JrIGJ1aWxkIHdpbGwgYWxzbyBpbnN0YWxsIGBgcHl0aG9uMy4zLTMyYGAKK2JpbmFyaWVzIHdoZW4gdGhlIHVuaXZlcnNhbCBhcmNoaXRlY3R1cmUgaW5jbHVkZXMgYXQgbGVhc3Qgb25lIDMyLWJpdAorYXJjaGl0ZWN0dXJlICh0aGF0IGlzLCBmb3IgYWxsIGZsYXZvcnMgYnV0IGBgNjQtYml0YGApLgorCitSdW5uaW5nIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCiAKIFlvdSBjYW4gcnVuIGNvZGUgdXNpbmcgYSBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgdXNpbmcgdGhlIGBgYXJjaGBgIGNvbW1hbmQ6OgogCkBAIC0xMTMsNiArMTQ1LDE0IEBACiB3cmFwcGVyIHRvb2xzIHRoYXQgZXhlY3V0ZSB0aGUgcmVhbCBpbnRlcnByZXRlciB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhlCiByZWFsIGludGVycHJldGVyIHJ1bnMgd2l0aCB0aGUgc2FtZSBhcmNoaXRlY3R1cmUuCiAKK1VzaW5nIGBgYXJjaGBgIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24gYXMgdGhlIHNlbGVjdGVkIGFyY2hpdGVjdHVyZSB3aWxsCitub3QgYXV0b21hdGljYWxseSBjYXJyeSB0aHJvdWdoIHRvIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBwcm9ncmFtcyBhbmQgdGVzdHMKK3VuZGVyIHRoYXQgUHl0aG9uLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgUHl0aG9uIGludGVycHJldGVycyBsYXVuY2hlZCBpbgorc3VicHJvY2Vzc2VzIGFsc28gcnVuIGluIDMyLWJpdC1tb2RlIGlmIHRoZSBtYWluIGludGVycHJldGVyIGRvZXMsIHVzZQorYSBgYHB5dGhvbjMuMy0zMmBgIGJpbmFyeSBhbmQgdXNlIHRoZSB2YWx1ZSBvZiBgYHN5cy5leGVjdXRhYmxlYGAgYXMgdGhlCitgYHN1YnByb2Nlc3NgYCBgYFBvcGVuYGAgZXhlY3V0YWJsZSB2YWx1ZS4KKworCiBCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYLgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMTIyLDE3ICsxNjIsMTcgQEAKIAogVGhlIG1haW4gcmVhc29uIGlzIGJlY2F1c2UgeW91IHdhbnQgdG8gY3JlYXRlIEdVSSBwcm9ncmFtcyBpbiBQeXRob24uIFdpdGggdGhlCiBleGNlcHRpb24gb2YgWDExL1hEYXJ3aW4tYmFzZWQgR1VJIHRvb2xraXRzIGFsbCBHVUkgcHJvZ3JhbXMgbmVlZCB0byBiZSBydW4gCi1mcm9tIGEgZnVsbGJsb3duIE1hY09TWCBhcHBsaWNhdGlvbiAoYSAiLmFwcCIgYnVuZGxlKS4KK2Zyb20gYSBNYWMgT1NYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCiBvbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAotIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMi42IiwKLSIzLjEiLCBldGMuLiAgVGhpcyBzaW1wbGlmaWVzIG1hdHRlcnMgZm9yIHVzZXJzIGluc3RhbGxpbmcgCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiB3aGVyZSBgYDxWRVJTSU9OPmBgIGNhbiBiZSBlLmcuICIzLjMiLAorIjIuNyIsIGV0Yy4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nCiBQeXRob24gZnJvbSBhIGJpbmFyeSBkaXN0cmlidXRpb24gaWYgdGhleSB3YW50IHRvIGdldCByaWQgb2YgaXQgYWdhaW4uIE1vcmVvdmVyLAotZHVlIHRvIHRoZSB3YXkgZnJhbWV3b3JrcyB3b3JrIGEgdXNlciB3aXRob3V0IGFkbWluIHByaXZpbGVnZXMgY2FuIGluc3RhbGwgYSAKK2R1ZSB0byB0aGUgd2F5IGZyYW1ld29ya3Mgd29yaywgYSB1c2VyIHdpdGhvdXQgYWRtaW4gcHJpdmlsZWdlcyBjYW4gaW5zdGFsbCBhCiBiaW5hcnkgZGlzdHJpYnV0aW9uIGluIGhpcyBvciBoZXIgaG9tZSBkaXJlY3Rvcnkgd2l0aG91dCByZWNvbXBpbGF0aW9uLgogCiAyLiBIb3cgZG9lcyBhIGZyYW1ld29yayBQeXRob24gZGlmZmVyIGZyb20gYSBub3JtYWwgc3RhdGljIFB5dGhvbj8KQEAgLTE0OCwxOCArMTg4LDI1IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFllcywgcHJvYmFibHkuICBJZiB5b3Ugd2FudCBUa2ludGVyIHN1cHBvcnQgeW91IG5lZWQgdG8gZ2V0IHRoZSBPU1ggQXF1YVRrIAotZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuIElmCi15b3Ugd2FudCB3eFB5dGhvbiB5b3UgbmVlZCB0byBnZXQgdGhhdC4gSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0Ci1QeU9iakMuIAorZGlzdHJpYnV0aW9uLCB0aGlzIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIuICBCZQorYXdhcmUsIHRob3VnaCwgdGhhdCB0aGUgQ29jb2EtYmFzZWQgQXF1YVRrJ3Mgc3VwcGxpZWQgc3RhcnRpbmcgd2l0aCBPUyBYCisxMC42IGhhdmUgcHJvdmVuIHRvIGJlIHVuc3RhYmxlLiAgSWYgcG9zc2libGUsIHlvdSBzaG91bGQgY29uc2lkZXIKK2luc3RhbGxpbmcgYSBuZXdlciB2ZXJzaW9uIGJlZm9yZSBidWlsZGluZyBvbiBPUyBYIDEwLjYgb3IgbGF0ZXIsIHN1Y2ggYXMKK3RoZSBBY3RpdmVUY2wgOC41LiAgU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvLiAgSWYgeW91CithcmUgYnVpbGRpbmcgd2l0aCBhbiBTREssIGVuc3VyZSB0aGF0IHRoZSBuZXdlciBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlCitzZWVuIGluIHRoZSBTREsncyBgYExpYnJhcnkvRnJhbWV3b3Jrc2BgIGRpcmVjdG9yeTsgeW91IG1heSBuZWVkIHRvCittYW51YWxseSBjcmVhdGUgc3ltbGlua3MgdG8gdGhlaXIgaW5zdGFsbGVkIGxvY2F0aW9uLCBgYC9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK0lmIHlvdSB3YW50IHd4UHl0aG9uIHlvdSBuZWVkIHRvIGdldCB0aGF0LgorSWYgeW91IHdhbnQgQ29jb2EgeW91IG5lZWQgdG8gZ2V0IFB5T2JqQy4KIAogNC4gSG93IGRvIEkgYnVpbGQgYSBmcmFtZXdvcmsgUHl0aG9uPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIE1ha2VmaWxlIHRoYXQgd2lsbCBjcmVhdGUgYSBjb3VwbGUgb2YgcHl0aG9uLXJlbGF0ZWQKLWFwcGxpY2F0aW9ucyAoZnVsbGJsb3duIE9TWCAuYXBwIGFwcGxpY2F0aW9ucywgdGhhdCBpcykgaW4KLSIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iLCBhbmQgYSBoaWRkZW4gaGVscGVyIGFwcGxpY2F0aW9uIFB5dGhvbi5hcHAgCi1pbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50byAKLS91c3IvbG9jYWwvYmluLiAgSW4gYWRkaXRpb24gaXQgaGFzIGEgdGFyZ2V0ICJpbnN0YWxsbWFjc3VidHJlZSIgdGhhdCBpbnN0YWxscyAKK2FwcGxpY2F0aW9ucyAoZnVsbC1ibG93biBPU1ggLmFwcCBhcHBsaWNhdGlvbnMsIHRoYXQgaXMpIGluCisiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiwgYW5kIGEgaGlkZGVuIGhlbHBlciBhcHBsaWNhdGlvbiBQeXRob24uYXBwCitpbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzICJweXRob24iIGFuZCAicHl0aG9udyIgaW50bworL3Vzci9sb2NhbC9iaW4uICBJbiBhZGRpdGlvbiBpdCBoYXMgYSB0YXJnZXQgImluc3RhbGxtYWNzdWJ0cmVlIiB0aGF0IGluc3RhbGxzCiB0aGUgcmVsZXZhbnQgcG9ydGlvbnMgb2YgdGhlIE1hYyBzdWJ0cmVlIGludG8gdGhlIFB5dGhvbi5mcmFtZXdvcmsuCiAKIEl0IGlzIG5vcm1hbGx5IGludm9rZWQgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBtYWluIE1ha2VmaWxlLCBhcyB0aGUgbGFzdCBzdGVwCkBAIC0xNzEsMTcgKzIxOCwxNSBAQAogIAogIDMuIG1ha2UgaW5zdGFsbAogCi1UaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmssCi10aGUgYXBwbGljYXRpb25zIGluICIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iIGFuZCB0aGUgdW5peCB0b29scyBpbiAKLS91c3IvbG9jYWwvYmluLgorVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIGBgL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmtgYCwKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCitgYC91c3IvbG9jYWwvYmluYGAuCiAKLUluc3RhbGxpbmcgaW4gYW5vdGhlciBwbGFjZSwgZm9yIGluc3RhbmNlICRIT01FL0xpYnJhcnkvRnJhbWV3b3JrcyBpZiB5b3UgaGF2ZQotbm8gYWRtaW4gcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUsIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHZlcnkgbGlnaHRseS4gVGhpcwotY2FuIGJlIGRvbmUgYnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1mcmFtZXdvcms9JEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzLgotVGhlIG90aGVyIHR3byBkaXJlY3RvcmllcywgIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uLTxWRVJTSU9OPiIgYW5kCi0vdXNyL2xvY2FsL2Jpbiwgd2lsbCB0aGVuIGFsc28gYmUgZGVwb3NpdGVkIGluICRIT01FLiBUaGlzIGlzIHN1Yi1vcHRpbWFsIGZvcgotdGhlIHVuaXggdG9vbHMsIHdoaWNoIHlvdSB3b3VsZCB3YW50IGluICRIT01FL2JpbiwgYnV0IHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvCi1maXggdGhpcyByaWdodCBub3cuCitJbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSBgYCRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrc2BgIGlmIHlvdQoraGF2ZSBubyBhZG1pbiBwcml2aWxlZ2VzIG9uIHlvdXIgbWFjaGluZSwgaXMgcG9zc2libGUuIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAorYnkgY29uZmlndXJpbmcgd2l0aCBgYC0tZW5hYmxlLWZyYW1ld29yaz0kSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYC4KK1RoZSBvdGhlciB0d28gZGlyZWN0b3JpZXMgd2lsbCB0aGVuIGFsc28gYmUgaW5zdGFsbGVkIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksCithdCBgYCRIT01FL0FwcGxpY2F0aW9ucy9QeXRob24tPFZFUlNJT04+YGAgYW5kIGBgJEhPTUUvYmluYGAuCiAKIElmIHlvdSB3YW50IHRvIGluc3RhbGwgc29tZSBwYXJ0LCBidXQgbm90IGFsbCwgcmVhZCB0aGUgbWFpbiBNYWtlZmlsZS4gVGhlCiBmcmFtZXdvcmtpbnN0YWxsIGlzIGNvbXBvc2VkIG9mIGEgY291cGxlIG9mIHN1Yi10YXJnZXRzIHRoYXQgaW5zdGFsbCB0aGUKQEAgLTE4OSw3ICsyMzQsNyBAQAogCiBUaGVyZSBpcyBhbiBleHRyYSB0YXJnZXQgZnJhbWV3b3JraW5zdGFsbGV4dHJhcyB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZQogbm9ybWFsIGZyYW1ld29ya2luc3RhbGwgd2hpY2ggaW5zdGFsbHMgdGhlIFRvb2xzIGRpcmVjdG9yeSBpbnRvCi0iL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiwgdGhpcyBpcyB1c2VmdWwgZm9yIGJpbmFyeQorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIsIHRoaXMgaXMgdXNlZnVsIGZvciBiaW5hcnkKIGRpc3RyaWJ1dGlvbnMuCiAKIFdoYXQgZG8gYWxsIHRoZXNlIHByb2dyYW1zIGRvPwpAQCAtMjAyLDI0ICsyNDcsNDEgQEAKIGRvdWJsZS1jbGljayBhIC5weSwgLnB5YyBvciAucHl3IGZpbGUuIEZvciB0aGUgZmlyc3QgdHdvIGl0IGNyZWF0ZXMgYSBUZXJtaW5hbAogd2luZG93IGFuZCBydW5zIHRoZSBzY3JpcHRzIHdpdGggdGhlIG5vcm1hbCBjb21tYW5kLWxpbmUgUHl0aG9uLiBGb3IgdGhlCiBsYXR0ZXIgaXQgcnVucyB0aGUgc2NyaXB0IGluIHRoZSBQeXRob24uYXBwIGludGVycHJldGVyIHNvIHRoZSBzY3JpcHQgY2FuIGRvCi1HVUktdGhpbmdzLiBLZWVwIHRoZSAiYWx0IiBrZXkgZGVwcmVzc2VkIHdoaWxlIGRyYWdnaW5nIG9yIGRvdWJsZS1jbGlja2luZyBhCi1zY3JpcHQgdG8gc2V0IHJ1bnRpbWUgb3B0aW9ucy4gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgc2V0IG9uY2UgYW5kIGZvciBhbGwKK0dVSS10aGluZ3MuIEtlZXAgdGhlIGBgT3B0aW9uYGAga2V5IGRlcHJlc3NlZCB3aGlsZSBkcmFnZ2luZyBvciBkb3VibGUtY2xpY2tpbmcKK2Egc2NyaXB0IHRvIHNldCBydW50aW1lIG9wdGlvbnMuIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHNldCBwZXJzaXN0ZW50bHkKIHRocm91Z2ggUHl0aG9uTGF1bmNoZXIncyBwcmVmZXJlbmNlcyBkaWFsb2cuCiAKLVRoZSBjb21tYW5kbGluZSBzY3JpcHRzIC91c3IvbG9jYWwvYmluL3B5dGhvbiBhbmQgcHl0aG9udyBjYW4gYmUgdXNlZCB0byBydW4KLW5vbi1HVUkgYW5kIEdVSSBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHJlc3BlY3RpdmVseS4KK1RoZSBwcm9ncmFtIGBgcHl0aG9ueC54YGAgcnVucyBweXRob24gc2NyaXB0cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBWYXJpb3VzCitjb21wYXRpYmlsaXR5IGFsaWFzZXMgYXJlIGFsc28gaW5zdGFsbGVkLCBpbmNsdWRpbmcgYGBweXRob253eC54YGAgd2hpY2gKK2luIGVhcmx5IHJlbGVhc2VzIG9mIFB5dGhvbiBvbiBPUyBYIHdhcyByZXF1aXJlZCB0byBydW4gR1VJIHByb2dyYW1zLiAgSW4KK2N1cnJlbnQgcmVsZWFzZXMsIHRoZSBgYHB5dGhvbngueGBgIGFuZCBgYHB5dGhvbnd4LnhgYCBjb21tYW5kcyBhcmUgaWRlbnRpY2FsLgogCiBIb3cgZG8gSSBjcmVhdGUgYSBiaW5hcnkgZGlzdHJpYnV0aW9uPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotR28gdG8gdGhlIGRpcmVjdG9yeSAiTWFjL09TWC9CdWlsZFNjcmlwdCIuIFRoZXJlIHlvdSdsbCBmaW5kIGEgc2NyaXB0IAotImJ1aWxkLWluc3RhbGxlci5weSIgdGhhdCBkb2VzIGFsbCB0aGUgd29yay4gVGhpcyB3aWxsIGRvd25sb2FkIGFuZCBidWlsZAorRG93bmxvYWQgYW5kIHVucGFjayB0aGUgc291cmNlIHJlbGVhc2UgZnJvbSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvLgorR28gdG8gdGhlIGRpcmVjdG9yeSBgYE1hYy9CdWlsZFNjcmlwdGBgLiBUaGVyZSB5b3Ugd2lsbCBmaW5kIGEgc2NyaXB0CitgYGJ1aWxkLWluc3RhbGxlci5weWBgIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmsuIFRoaXMgd2lsbCBkb3dubG9hZCBhbmQgYnVpbGQKIGEgbnVtYmVyIG9mIDNyZC1wYXJ0eSBsaWJhcmllcywgY29uZmlndXJlcyBhbmQgYnVpbGRzIGEgZnJhbWV3b3JrIFB5dGhvbiwKIGluc3RhbGxzIGl0LCBjcmVhdGVzIHRoZSBpbnN0YWxsZXIgcGFja2FnZSBmaWxlcyBhbmQgdGhlbiBwYWNrcyB0aGlzIGluIGEKLURNRyBpbWFnZS4KK0RNRyBpbWFnZS4gIFRoZSBzY3JpcHQgYWxzbyBidWlsZHMgYW4gSFRNTCBjb3B5IG9mIHRoZSBjdXJyZW50IFB5dGhvbgorZG9jdW1lbnRhdGlvbiBzZXQgZm9yIHRoaXMgcmVsZWFzZSBmb3IgaW5jbHVzaW9uIGluIHRoZSBmcmFtZXdvcmsuICBUaGUKK2luc3RhbGxlciBwYWNrYWdlIHdpbGwgY3JlYXRlIGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB1c2UgYnkgSURMRSwKK3B5ZG9jLCBzaGVsbCB1c2VycywgYW5kIEZpbmRlciB1c2VyLgogCi1UaGUgc2NyaXB0IHdpbGwgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5LCB5b3UnbGwgdGhlcmVmb3JlIGhhdmUgdG8gcnVuIHRoaXMKK1RoZSBzY3JpcHQgd2lsbCBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgc28geW91J2xsIHRoZXJlZm9yZSBoYXZlIHRvIHJ1biB0aGlzCiBzY3JpcHQgb24gTWFjIE9TIFggMTAuNCBvciBsYXRlciBhbmQgd2l0aCBYY29kZSAyLjEgb3IgbGF0ZXIgaW5zdGFsbGVkLgorSG93ZXZlciwgdGhlIFB5dGhvbiBidWlsZCBwcm9jZXNzIGl0c2VsZiBoYXMgc2V2ZXJhbCBidWlsZCBkZXBlbmRlbmNpZXMgbm90CithdmFpbGFibGUgb3V0IG9mIHRoZSBib3ggd2l0aCBPUyBYIDEwLjQgc28geW91IG1heSBoYXZlIHRvIGluc3RhbGwKK2FkZGl0aW9uYWwgc29mdHdhcmUgYmV5b25kIHdoYXQgaXMgcHJvdmlkZWQgd2l0aCBYY29kZSAyLiAgT1MgWCAxMC41Citwcm92aWRlcyBhIHJlY2VudCBlbm91Z2ggc3lzdGVtIFB5dGhvbiAoaW4gYGAvdXNyL2JpbmBgKSB0byBidWlsZAordGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIHNldC4gIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB1c2UgU0RLcyBhbmQvb3Igb2xkZXIKK3ZlcnNpb25zIG9mIFhjb2RlIHRvIGJ1aWxkIGluc3RhbGxlcnMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHN5c3RlbXMKK29uIGEgbmV3ZXIgc3lzdGVtIGJ1dCB0aGlzIG1heSBub3QgYmUgY29tcGxldGVseSBmb29scHJvb2Ygc28gdGhlIHJlc3VsdGluZworZXhlY3V0YWJsZXMsIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBgYC5zb2BgIGJ1bmRsZXMgc2hvdWxkIGJlIGNhcmVmdWxseQorZXhhbWluZWQgYW5kIHRlc3RlZCBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgZm9yIHByb3BlciBkeW5hbWljIGxpbmtpbmcKK2RlcGVuZGVuY2llcy4gIEl0IGlzIHNhZmVzdCB0byBidWlsZCB0aGUgZGlzdHJpYnV0aW9uIG9uIGEgc3lzdGVtIHJ1bm5pbmcgdGhlCittaW5pbXVtIE9TIFggdmVyc2lvbiBzdXBwb3J0ZWQuCiAKIEFsbCBvZiB0aGlzIGlzIG5vcm1hbGx5IGRvbmUgY29tcGxldGVseSBpc29sYXRlZCBpbiAvdG1wL19weSwgc28gaXQgZG9lcyBub3QKIHVzZSB5b3VyIG5vcm1hbCBidWlsZCBkaXJlY3Rvcnkgbm9yIGRvZXMgaXQgaW5zdGFsbCBpbnRvIC8uCkBAIC0yNDQsNyArMzA2LDcgQEAKICAgIGNvbmZpZ3VyZTogV0FSTklORzogICAgICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAKIFRoaXMgYWxtb3N0IGFsd2F5cyBtZWFucyB5b3UgYXJlIHRyeWluZyB0byBidWlsZCBhIHVuaXZlcnNhbCBiaW5hcnkgZm9yCi1QeXRob24gYW5kIGhhdmUgbGliYXJpZXMgaW4gYGAvdXNyL2xvY2FsYGAgdGhhdCBkb24ndCBjb250YWluIHRoZSByZXF1aXJlZAorUHl0aG9uIGFuZCBoYXZlIGxpYnJhcmllcyBpbiBgYC91c3IvbG9jYWxgYCB0aGF0IGRvbid0IGNvbnRhaW4gdGhlIHJlcXVpcmVkCiBhcmNoaXRlY3R1cmVzLiBUZW1wb3JhcmlseSBtb3ZlIGBgL3Vzci9sb2NhbGBgIGFzaWRlIHRvIGZpbmlzaCB0aGUgYnVpbGQuCiAKIApAQCAtMjUzLDcgKzMxNSw3IEBACiAKIFVuaW5zdGFsbGluZyBhIGZyYW1ld29yayBjYW4gYmUgZG9uZSBieSBtYW51YWxseSByZW1vdmluZyBhbGwgYml0cyB0aGF0IGdvdCBpbnN0YWxsZWQuCiBUaGF0J3MgdHJ1ZSBmb3IgYm90aCBpbnN0YWxsYXRpb25zIGZyb20gc291cmNlIGFuZCBpbnN0YWxsYXRpb25zIHVzaW5nIHRoZSBiaW5hcnkgaW5zdGFsbGVyLgotU2FkbHkgZW5vdWdoIE9TWCBkb2VzIG5vdCBoYXZlIGEgY2VudHJhbCB1bmluc3RhbGxlci4KK09TIFggZG9lcyBub3QgcHJvdmlkZSBhIGNlbnRyYWwgdW5pbnN0YWxsZXIuCiAKIFRoZSBtYWluIGJpdCBvZiBhIGZyYW1ld29yayBpbnN0YWxsIGlzIHRoZSBmcmFtZXdvcmsgaXRzZWxmLCBpbnN0YWxsZWQgaW4KIGBgL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrYGAuIFRoaXMgY2FuIGNvbnRhaW4gbXVsdGlwbGUgdmVyc2lvbnMKQEAgLTI2NywxNCArMzI5LDEyIEBACiBBbmQgbGFzdGx5IGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBpbnN0YWxscyBmaWxlcyBpbiBgYC91c3IvbG9jYWwvYmluYGAsIGFsbCBvZgogdGhlbSBzeW1ib2xpYyBsaW5rcyB0byBmaWxlcyBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9YLlkvYmluYGAuCiAKLU9kZHMgYW5kIGVuZHMKLT09PT09PT09PT09PT0KIAotU29tZXRoaW5nIHRvIHRha2Ugbm90ZSBvZiBpcyB0aGF0IHRoZSAiLnJzcmMiIGZpbGVzIGluIHRoZSBkaXN0cmlidXRpb24gYXJlCi1ub3QgYWN0dWFsbHkgcmVzb3VyY2UgZmlsZXMsIHRoZXkncmUgQXBwbGVTaW5nbGUgZW5jb2RlZCByZXNvdXJjZSBmaWxlcy4gVGhlCi1tYWNyZXNvdXJjZSBtb2R1bGUgYW5kIHRoZSBNYWMvT1NYL01ha2VmaWxlIGNhdGVyIGZvciB0aGlzLCBhbmQgY3JlYXRlCi0iLnJzcmMuZGYucnNyYyIgZmlsZXMgb24gdGhlIGZseSB0aGF0IGFyZSBub3JtYWwgZGF0YWZvcmstYmFzZWQgcmVzb3VyY2UKLWZpbGVzLgorUmVzb3VyY2VzCis9PT09PT09PT0KIAotCUphY2sgSmFuc2VuLCBKYWNrLkphbnNlbkBjd2kubmwsIDE1LUp1bC0yMDA0LgotCVJvbmFsZCBPdXNzb3JlbiwgUm9uYWxkT3Vzc29yZW5AbWFjLmNvbSwgMzAtQXByaWwtMjAxMAorICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjLworCisgICogIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9jb21tdW5pdHkvc2lncy9jdXJyZW50L3B5dGhvbm1hYy1zaWcvCisKKyAgKiAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSBiL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGI5NWIzLi4wMDAwMDAwCi0tLSBhL01hYy9Ub29scy9maXhhcHBsZXB5dGhvbjIzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0iIiJmaXhhcHBsZXB5dGhvbjIzIC0gRml4IEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIChvbiBNYWMgT1MgWCAxMC4zKQotCi1QeXRob24gMi4zIChhbmQgMi4zLlggZm9yIFg8NSkgaGF2ZSB0aGUgcHJvYmxlbSB0aGF0IGJ1aWxkaW5nIGFuIGV4dGVuc2lvbgotZm9yIGEgZnJhbWV3b3JrIGluc3RhbGxhdGlvbiBtYXkgYWNjaWRlbnRhbGx5IHBpY2sgdXAgdGhlIGZyYW1ld29yawotb2YgYSBuZXdlciBQeXRob24sIGluIHN0ZWFkIG9mIHRoZSBvbmUgdGhhdCB3YXMgdXNlZCB0byBidWlsZCB0aGUgZXh0ZW5zaW9uLgotCi1UaGlzIHNjcmlwdCBtb2RpZmllcyB0aGUgTWFrZWZpbGUgKGluIC4uLi9saWIvcHl0aG9uMi4zL2NvbmZpZykgdG8gdXNlCi10aGUgbmV3ZXIgbWV0aG9kIG9mIGxpbmtpbmcgZXh0ZW5zaW9ucyB3aXRoICItdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwIgotd2hpY2ggZml4ZXMgdGhpcyBwcm9ibGVtLgotCi1UaGUgc2NyaXB0IHdpbGwgZmlyc3QgY2hlY2sgYWxsIHByZXJlcXVpc2l0ZXMsIGFuZCByZXR1cm4gYSB6ZXJvIGV4aXQKLXN0YXR1cyBhbHNvIHdoZW4gbm90aGluZyBuZWVkcyB0byBiZSBmaXhlZC4KLSIiIgotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLQotTUFLRUZJTEU9Jy9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi4zL2xpYi9weXRob24yLjMvY29uZmlnL01ha2VmaWxlJwotQ0hBTkdFUz0oKAotICAgICdMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtZnJhbWV3b3JrICQoUFlUSE9ORlJBTUVXT1JLKVxuJywKLSAgICAnTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cFxuJwotICAgICksKAotICAgICdCTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLWZyYW1ld29yayAkKFBZVEhPTkZSQU1FV09SSylcbicsCi0gICAgJ0JMRFNIQVJFRD1cdCQoQ0MpICQoTERGTEFHUykgLWJ1bmRsZSAtdW5kZWZpbmVkIGR5bmFtaWNfbG9va3VwXG4nCi0gICAgKSwoCi0gICAgJ0NDPVx0XHRnY2NcbicsCi0gICAgJ0NDPVx0XHQvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2NcbicKLSAgICApLCgKLSAgICAnQ1hYPVx0XHRjKytcbicsCi0gICAgJ0NYWD1cdFx0L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZysrXG4nCi0pKQotCi1HQ0NfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nY2MnCi1HWFhfU0NSSVBUPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9QYW50aGVyUHl0aG9uRml4L3J1bi1nKysnCi1TQ1JJUFQ9IiIiIyEvYmluL3NoCi1leHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjMKLWV4ZWMgJXMgIiR7QH0iCi0iIiIKLQotZGVmIGZpbmRsaW5lKGxpbmVzLCBzdGFydCk6Ci0gICAgIiIicmV0dXJuIGxpbmUgc3RhcnRpbmcgd2l0aCBnaXZlbiBzdHJpbmcgb3IgLTEiIiIKLSAgICBmb3IgaSBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgaWYgbGluZXNbaV1bOmxlbihzdGFydCldID09IHN0YXJ0OgotICAgICAgICAgICAgcmV0dXJuIGkKLSAgICByZXR1cm4gLTEKLQotZGVmIGZpeChtYWtlZmlsZSwgZG9fYXBwbHkpOgotICAgICIiIkZpeCB0aGUgTWFrZWZpbGUsIGlmIHJlcXVpcmVkLiIiIgotICAgIGZpeGVkID0gRmFsc2UKLSAgICBsaW5lcyA9IG9wZW4obWFrZWZpbGUpLnJlYWRsaW5lcygpCi0KLSAgICBmb3Igb2xkLCBuZXcgaW4gQ0hBTkdFUzoKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBuZXcpCi0gICAgICAgIGlmIGkgPj0gMDoKLSAgICAgICAgICAgICMgQWxyZWFkeSBmaXhlZAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaSA9IGZpbmRsaW5lKGxpbmVzLCBvbGQpCi0gICAgICAgIGlmIGkgPCAwOgotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IFB5dGhvbiBpbnN0YWxsYXRpb24gbm90IGZpeGVkIChhcHBlYXJzIGJyb2tlbiknKQotICAgICAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG1pc3NpbmcgbGluZTonLCBvbGQpCi0gICAgICAgICAgICByZXR1cm4gMgotICAgICAgICBsaW5lc1tpXSA9IG5ldwotICAgICAgICBmaXhlZCA9IFRydWUKLQotICAgIGlmIGZpeGVkOgotICAgICAgICBpZiBkb19hcHBseToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgYXBwbGllZCcpCi0gICAgICAgICAgICBvcy5yZW5hbWUobWFrZWZpbGUsIG1ha2VmaWxlICsgJ34nKQotICAgICAgICAgICAgb3BlbihtYWtlZmlsZSwgJ3cnKS53cml0ZWxpbmVzKGxpbmVzKQotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBGaXggdG8gQXBwbGUtaW5zdGFsbGVkIFB5dGhvbiAyLjMgc2hvdWxkIGJlIGFwcGxpZWQnKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICBlbHNlOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogTm8gZml4IG5lZWRlZCwgYXBwZWFycyB0byBoYXZlIGJlZW4gYXBwbGllZCBiZWZvcmUnKQotICAgICAgICByZXR1cm4gMAotCi1kZWYgbWFrZXNjcmlwdChmaWxlbmFtZSwgY29tcGlsZXIpOgotICAgICIiIkNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0IGZvciBhIGNvbXBpbGVyIiIiCi0gICAgZGlybmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzBdCi0gICAgaWYgbm90IG9zLmFjY2VzcyhkaXJuYW1lLCBvcy5YX09LKToKLSAgICAgICAgb3MubWtkaXIoZGlybmFtZSwgMG83NTUpCi0gICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAndycpCi0gICAgZnAud3JpdGUoU0NSSVBUICUgY29tcGlsZXIpCi0gICAgZnAuY2xvc2UoKQotICAgIG9zLmNobW9kKGZpbGVuYW1lLCAwbzc1NSkKLSAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogQ3JlYXRlZCcsIGZpbGVuYW1lKQotCi1kZWYgbWFpbigpOgotICAgICMgQ2hlY2sgZm9yIC1uIG9wdGlvbgotICAgIGlmIGxlbihzeXMuYXJndikgPiAxIGFuZCBzeXMuYXJndlsxXSA9PSAnLW4nOgotICAgICAgICBkb19hcHBseSA9IEZhbHNlCi0gICAgZWxzZToKLSAgICAgICAgZG9fYXBwbHkgPSBUcnVlCi0gICAgIyBGaXJzdCBjaGVjayBPUyB2ZXJzaW9uCi0gICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKLSAgICAgICAgIyBBbGwgaW50ZWwgbWFjcyBhcmUgZmluZQotICAgICAgICBwcmludCgiZml4YXBwbHlweXRob24yMzogbm8gZml4IGlzIG5lZWRlZCBvbiBNYWNPU1ggb24gSW50ZWwiKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgb3N2ZXIgPSAgcGxhdGZvcm0ubWFjX3ZlcigpCi0gICAgaWYgb3N2ZXIgIT0gJzEwLjMnIGFuZCBvcy52ZXIgPCAnMTAuMy4nOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogbm8gZml4IG5lZWRlZCBvbiBNYWNPU1ggPCAxMC4zJykKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGlmIG9zdmVyID49ICcxMC40JzoKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG5vIGZpeCBuZWVkZWQgb24gTWFjT1NYID49IDEwLjQnKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgIyBUZXN0IHRoYXQgYSBmcmFtZXdvcmsgUHl0aG9uIGlzIGluZGVlZCBpbnN0YWxsZWQKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoTUFLRUZJTEUpOgotICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogUHl0aG9uIGZyYW1ld29yayBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkICg/KSwgbm90aGluZyBmaXhlZCcpCi0gICAgICAgIHN5cy5leGl0KDApCi0gICAgIyBDaGVjayB0aGF0IHdlIGNhbiBhY3R1YWxseSB3cml0ZSB0aGUgZmlsZQotICAgIGlmIGRvX2FwcGx5IGFuZCBub3Qgb3MuYWNjZXNzKE1BS0VGSUxFLCBvcy5XX09LKToKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IE5vIHdyaXRlIHBlcm1pc3Npb24sIHBsZWFzZSBydW4gd2l0aCAic3VkbyInKQotICAgICAgICBzeXMuZXhpdCgyKQotICAgICMgQ3JlYXRlIHRoZSBzaGVsbCBzY3JpcHRzCi0gICAgaWYgZG9fYXBwbHk6Ci0gICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MoR0NDX1NDUklQVCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICBtYWtlc2NyaXB0KEdDQ19TQ1JJUFQsICJnY2MiKQotICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKEdYWF9TQ1JJUFQsIG9zLlhfT0spOgotICAgICAgICAgICAgbWFrZXNjcmlwdChHWFhfU0NSSVBULCAiZysrIikKLSAgICAjICBGaW5hbGx5IGZpeCB0aGUgbWFrZWZpbGUKLSAgICBydiA9IGZpeChNQUtFRklMRSwgZG9fYXBwbHkpCi0gICAgI3N5cy5leGl0KHJ2KQotICAgIHN5cy5leGl0KDApCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvcHl0aG9udy5jIGIvTWFjL1Rvb2xzL3B5dGhvbncuYwppbmRleCAzMGM4MmFjLi4xZDJkYjM4IDEwMDY0NAotLS0gYS9NYWMvVG9vbHMvcHl0aG9udy5jCisrKyBiL01hYy9Ub29scy9weXRob253LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxkbGZjbi5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hY2gtby9keWxkLmg+CiAKIAogZXh0ZXJuIGNoYXIqKiBlbnZpcm9uOwpAQCAtMTUwLDYgKzE1MSw1MyBAQAogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgewogICAgIGNoYXIqIGV4ZWNfcGF0aCA9IGdldF9weXRob25fcGF0aCgpOworICAgIHN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBzdGF0aWMgY2hhciByZWFsX3BhdGhbUEFUSF9NQVggKiAyXTsKKyAgICBpbnQgc3RhdHVzOworICAgIHVpbnQzMl90IHNpemUgPSBQQVRIX01BWCAqIDI7CisKKyAgICAvKiBTZXQgdGhlIG9yaWdpbmFsIGV4ZWN1dGFibGUgcGF0aCBpbiB0aGUgZW52aXJvbm1lbnQuICovCisgICAgc3RhdHVzID0gX05TR2V0RXhlY3V0YWJsZVBhdGgocGF0aCwgJnNpemUpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBOb3RlOiBkb24ndCBjYWxsICdyZWFscGF0aCcsIHRoYXQgd2lsbAorICAgICAgICAgKiBlcmFzZSBzeW1saW5rIGluZm9ybWF0aW9uLCBhbmQgdGhhdAorICAgICAgICAgKiBicmVha3MgInB5dmVudiAtLXN5bWxpbmsiCisgICAgICAgICAqCisgICAgICAgICAqIEl0IGlzIG5pY2UgdG8gaGF2ZSB0aGUgZGlyZWN0b3J5IG5hbWUKKyAgICAgICAgICogYXMgYSBjbGVhbmVkIHVwIGFic29sdXRlIHBhdGggdGhvdWdoLAorICAgICAgICAgKiB0aGVyZWZvcmUgY2FsbCByZWFscGF0aCBvbiBkaXJuYW1lKHBhdGgpCisgICAgICAgICAqLworICAgICAgICBjaGFyKiBzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTsKKyAgICAgICAgaWYgKHNsYXNoKSB7CisgICAgICAgICAgICBjaGFyICByZXBsYWNlZDsKKyAgICAgICAgICAgIHJlcGxhY2VkID0gc2xhc2hbMV07CisgICAgICAgICAgICBzbGFzaFsxXSA9IDA7CisgICAgICAgICAgICBpZiAocmVhbHBhdGgocGF0aCwgcmVhbF9wYXRoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZXJyKDEsICJyZWFscGF0aDogJXMiLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNsYXNoWzFdID0gcmVwbGFjZWQ7CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsIHNsYXNoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChyZWFscGF0aCgiLiIsIHJlYWxfcGF0aCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybGNhdChyZWFsX3BhdGgsICIvIiwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCBwYXRoLCBzaXplb2YocmVhbF9wYXRoKSkgPiBzaXplb2YocmVhbF9wYXRoKSkgeworICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iLCByZWFsX3BhdGgsIDEpOworICAgIH0KIAogICAgIC8qCiAgICAgICogTGV0IGFyZ3ZbMF0gcmVmZXIgdG8gdGhlIG5ldyBpbnRlcnByZXRlci4gVGhpcyBpcyBuZWVkZWQgdG8KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCA2ZGVjMjcyLi5hZjRmZDgxIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC0zNCw3ICszNCw3IEBACiBMSU5LQ0M9CQlATElOS0NDQAogQVI9CQlAQVJACiBSQU5MSUI9CQlAUkFOTElCQAotU1ZOVkVSU0lPTj0JQFNWTlZFUlNJT05ACitSRUFERUxGPQlAUkVBREVMRkAKIFNPQUJJPQkJQFNPQUJJQAogTERWRVJTSU9OPQlATERWRVJTSU9OQAogSEdWRVJTSU9OPQlASEdWRVJTSU9OQApAQCAtNzYsNyArNzYsNyBAQAogIyBCb3RoIENQUEZMQUdTIGFuZCBMREZMQUdTIG5lZWQgdG8gY29udGFpbiB0aGUgc2hlbGwncyB2YWx1ZSBmb3Igc2V0dXAucHkgdG8KICMgYmUgYWJsZSB0byBidWlsZCBleHRlbnNpb24gbW9kdWxlcyB1c2luZyB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGluIHRoZQogIyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLVBZX0NQUEZMQUdTPQktSS4gLUlJbmNsdWRlIC1JJChzcmNkaXIpL0luY2x1ZGUgJChDT05GSUdVUkVfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpCitQWV9DUFBGTEFHUz0JLUkuIC1JJChzcmNkaXIpL0luY2x1ZGUgJChDT05GSUdVUkVfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpCiBQWV9MREZMQUdTPQkkKENPTkZJR1VSRV9MREZMQUdTKSAkKExERkxBR1MpCiBOT19BU19ORUVERUQ9CUBOT19BU19ORUVERURACiBMRExBU1Q9CQlATERMQVNUQApAQCAtMTk0LDYgKzE5NCwxMCBAQAogUFlUSE9OPQkJcHl0aG9uJChFWEUpCiBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKIAorUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKK19QWVRIT05fSE9TVF9QTEFURk9STT1AX1BZVEhPTl9IT1NUX1BMQVRGT1JNQAorSE9TVF9HTlVfVFlQRT0gIEBob3N0QAorCiAjIFRoZSB0YXNrIHRvIHJ1biB3aGlsZSBpbnN0cnVtZW50IHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldAogUFJPRklMRV9UQVNLPQkkKHNyY2RpcikvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5IC1uIDIgLS13aXRoLWdjIC0td2l0aC1zeXNjaGVjawogI1BST0ZJTEVfVEFTSz0JJChzcmNkaXIpL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yMzYsMjAgKzI0MCw0MSBAQAogIyBQYXJzZXIKIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogCitQU1JDUz0JCVwKKwkJUGFyc2VyL2FjY2VsZXIuYyBcCisJCVBhcnNlci9ncmFtbWFyMS5jIFwKKwkJUGFyc2VyL2xpc3Rub2RlLmMgXAorCQlQYXJzZXIvbm9kZS5jIFwKKwkJUGFyc2VyL3BhcnNlci5jIFwKKwkJUGFyc2VyL2JpdHNldC5jIFwKKwkJUGFyc2VyL21ldGFncmFtbWFyLmMgXAorCQlQYXJzZXIvZmlyc3RzZXRzLmMgXAorCQlQYXJzZXIvZ3JhbW1hci5jIFwKKwkJUGFyc2VyL3BnZW4uYworCiBQT0JKUz0JCVwKIAkJUGFyc2VyL2FjY2VsZXIubyBcCiAJCVBhcnNlci9ncmFtbWFyMS5vIFwKIAkJUGFyc2VyL2xpc3Rub2RlLm8gXAogCQlQYXJzZXIvbm9kZS5vIFwKIAkJUGFyc2VyL3BhcnNlci5vIFwKLQkJUGFyc2VyL3BhcnNldG9rLm8gXAogCQlQYXJzZXIvYml0c2V0Lm8gXAogCQlQYXJzZXIvbWV0YWdyYW1tYXIubyBcCiAJCVBhcnNlci9maXJzdHNldHMubyBcCiAJCVBhcnNlci9ncmFtbWFyLm8gXAogCQlQYXJzZXIvcGdlbi5vCiAKLVBBUlNFUl9PQkpTPQkkKFBPQkpTKSBQYXJzZXIvbXlyZWFkbGluZS5vIFBhcnNlci90b2tlbml6ZXIubworUEFSU0VSX09CSlM9CSQoUE9CSlMpIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3BhcnNldG9rLm8gUGFyc2VyL3Rva2VuaXplci5vCisKK1BHU1JDUz0JCVwKKwkJT2JqZWN0cy9vYm1hbGxvYy5jIFwKKwkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMuYyBcCisJCVB5dGhvbi9teXNucHJpbnRmLmMgXAorCQlQeXRob24vcHljdHlwZS5jIFwKKwkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAorCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAorCQlQYXJzZXIvcGFyc2V0b2tfcGdlbi5jIFwKKwkJUGFyc2VyL3BnZW5tYWluLmMKIAogUEdPQkpTPQkJXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXApAQCAtMjU4LDEzICsyODMsMTYgQEAKIAkJUHl0aG9uL3B5Y3R5cGUubyBcCiAJCVBhcnNlci90b2tlbml6ZXJfcGdlbi5vIFwKIAkJUGFyc2VyL3ByaW50Z3JhbW1hci5vIFwKKwkJUGFyc2VyL3BhcnNldG9rX3BnZW4ubyBcCiAJCVBhcnNlci9wZ2VubWFpbi5vCiAKIFBBUlNFUl9IRUFERVJTPSBcCi0JCVBhcnNlci9wYXJzZXIuaCBcCi0JCVBhcnNlci90b2tlbml6ZXIuaAorCQkkKHNyY2RpcikvUGFyc2VyL3BhcnNlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGFyc2V0b2suaCBcCisJCSQoc3JjZGlyKS9QYXJzZXIvdG9rZW5pemVyLmgKIAotUEdFTk9CSlM9CSQoUEdFTk1BSU4pICQoUE9CSlMpICQoUEdPQkpTKQorUEdFTlNSQ1M9CSQoUFNSQ1MpICQoUEdTUkNTKQorUEdFTk9CSlM9CSQoUE9CSlMpICQoUEdPQkpTKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBBU1QKQEAgLTMwMSw3ICszMjksNiBAQAogCQlQeXRob24vY29kZWNzLm8gXAogCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5vIFwKIAkJUHl0aG9uL2Vycm9ycy5vIFwKLQkJUHl0aG9uL2Zyb3plbi5vIFwKIAkJUHl0aG9uL2Zyb3plbm1haW4ubyBcCiAJCVB5dGhvbi9mdXR1cmUubyBcCiAJCVB5dGhvbi9nZXRhcmdzLm8gXApAQCAtMzY5LDExICszOTYsMTIgQEAKIAkJT2JqZWN0cy9tZW1vcnlvYmplY3QubyBcCiAJCU9iamVjdHMvbWV0aG9kb2JqZWN0Lm8gXAogCQlPYmplY3RzL21vZHVsZW9iamVjdC5vIFwKKwkJT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QubyBcCiAJCU9iamVjdHMvb2JqZWN0Lm8gXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXAogCQlPYmplY3RzL2NhcHN1bGUubyBcCiAJCU9iamVjdHMvcmFuZ2VvYmplY3QubyBcCi0gICAgICAgICAgICAgICAgT2JqZWN0cy9zZXRvYmplY3QubyBcCisJCU9iamVjdHMvc2V0b2JqZWN0Lm8gXAogCQlPYmplY3RzL3NsaWNlb2JqZWN0Lm8gXAogCQlPYmplY3RzL3N0cnVjdHNlcS5vIFwKIAkJT2JqZWN0cy90dXBsZW9iamVjdC5vIFwKQEAgLTM4MiwxMCArNDEwLDExIEBACiAJCU9iamVjdHMvdW5pY29kZWN0eXBlLm8gXAogCQlPYmplY3RzL3dlYWtyZWZvYmplY3QubwogCitTWVNDT05GSUdEQVRBPSQoc3JjZGlyKS9MaWIvX3N5c2NvbmZpZ2RhdGEucHkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgb2JqZWN0cyB0aGF0IGdldCBsaW5rZWQgaW50byB0aGUgUHl0aG9uIGxpYnJhcnkKLUxJQlJBUllfT0JKUz0JXAorTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOPQlcCiAJCU1vZHVsZXMvZ2V0YnVpbGRpbmZvLm8gXAogCQkkKFBBUlNFUl9PQkpTKSBcCiAJCSQoT0JKRUNUX09CSlMpIFwKQEAgLTM5NCwxMiArNDIzLDE2IEBACiAJCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKQogCitMSUJSQVJZX09CSlM9CVwKKwkJJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pIFwKKwkJUHl0aG9uL2Zyb3plbi5vCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUnVsZXMKIAogIyBEZWZhdWx0IHRhcmdldAogYWxsOgkJYnVpbGRfYWxsCi1idWlsZF9hbGw6CSQoQlVJTERQWVRIT04pIG9sZHNoYXJlZG1vZHMgc2hhcmVkbW9kcyBnZGJob29rcyBNb2R1bGVzL190ZXN0ZW1iZWQKK2J1aWxkX2FsbDoJJChCVUlMRFBZVEhPTikgJChTWVNDT05GSUdEQVRBKSBvbGRzaGFyZWRtb2RzIHNoYXJlZG1vZHMgZ2RiaG9va3MgTW9kdWxlcy9fdGVzdGVtYmVkCiAKICMgQ29tcGlsZSBhIGJpbmFyeSB3aXRoIGdjYyBwcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb24uCiBwcm9maWxlLW9wdDoKQEAgLTQxNywxMCArNDUwLDExIEBACiAJJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLWdlbmVyYXRlIiBMSUJTPSIkKExJQlMpIC1sZ2NvdiIKIAogcnVuX3Byb2ZpbGVfdGFzazoKLQkuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKQorCTogIyBGSVhNRTogY2FuJ3QgcnVuIGZvciBhIGNyb3NzIGJ1aWxkCisJJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spCiAKIGJ1aWxkX2FsbF91c2VfcHJvZmlsZToKLQkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtdXNlIgorCSQoTUFLRSkgYWxsIENGTEFHUz0iJChDRkxBR1MpIC1mcHJvZmlsZS11c2UgLWZwcm9maWxlLWNvcnJlY3Rpb24iCiAKIGNvdmVyYWdlOgogCUBlY2hvICJCdWlsZGluZyB3aXRoIHN1cHBvcnQgZm9yIGNvdmVyYWdlIGNoZWNraW5nOiIKQEAgLTQzMiwyMCArNDY2LDIzIEBACiAkKEJVSUxEUFlUSE9OKToJTW9kdWxlcy9weXRob24ubyAkKExJQlJBUlkpICQoTERMSUJSQVJZKSAkKFBZM0xJQlJBUlkpCiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBNb2R1bGVzL3B5dGhvbi5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKLXBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKQotCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1FIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCitwbGF0Zm9ybTogJChCVUlMRFBZVEhPTikgJChTWVNDT05GSUdEQVRBKQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCiAKKyMgR2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEKKyQoU1lTQ09ORklHREFUQSk6ICQoQlVJTERQWVRIT04pCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLVMgLW0gc3lzY29uZmlnIC0tZ2VuZXJhdGUtcG9zaXgtdmFycwogCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBNQUtFRkxBR1MgYXJlIHNvcnRlZCBhbmQgbm9ybWFsaXplZC4gVW5kZXIgR05VIG1ha2UgdGhlICdzJyBmb3IKICMgLXMsIC0tc2lsZW50IG9yIC0tcXVpZXQgaXMgYWx3YXlzIHRoZSBmaXJzdCBjaGFyLgotc2hhcmVkbW9kczogJChCVUlMRFBZVEhPTikKK3NoYXJlZG1vZHM6ICQoQlVJTERQWVRIT04pICQoU1lTQ09ORklHREFUQSkKIAlAY2FzZSAiJCRNQUtFRkxBR1MiIGluIFwKIAkgICAgcyopIHF1aWV0PSItcSI7OyBcCiAJICAgICopIHF1aWV0PSIiOzsgXAogCWVzYWM7IFwKIAkkKFJVTlNIQVJFRCkgQ0M9JyQoQ0MpJyBMRFNIQVJFRD0nJChCTERTSEFSRUQpJyBPUFQ9JyQoT1BUKScgXAotCQkuLyQoQlVJTERQWVRIT04pIC1FICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL3NldHVwLnB5ICQkcXVpZXQgYnVpbGQKIAogIyBCdWlsZCBzdGF0aWMgbGlicmFyeQogIyBhdm9pZCBsb25nIGNvbW1hbmQgbGluZXMsIHNhbWUgYXMgTElCUkFSWV9PQkpTCkBAIC00NTQsNyArNDkxLDcgQEAKIAkkKEFSKSAkKEFSRkxBR1MpICRAIE1vZHVsZXMvZ2V0YnVpbGRpbmZvLm8KIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoUEFSU0VSX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSkVDVF9PQkpTKQotCSQoQVIpICQoQVJGTEFHUykgJEAgJChQWVRIT05fT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoUFlUSE9OX09CSlMpIFB5dGhvbi9mcm96ZW4ubwogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RVTEVfT0JKUykgJChTSUdOQUxfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9ET0JKUykKIAkkKFJBTkxJQikgJEAKQEAgLTUwMSw3ICs1MzgsNyBAQAogCQktaW5zdGFsbF9uYW1lICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL1ZlcnNpb25zLyQoVkVSU0lPTikvJChQWVRIT05GUkFNRVdPUkspIFwKIAkJLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKFZFUlNJT04pIFwKIAkJLWN1cnJlbnRfdmVyc2lvbiAkKFZFUlNJT04pIFwKLQkJLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAkKExJQlMpOyAKKwkJLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAkKExJQlMpOwogCSQoSU5TVEFMTCkgLWQgLW0gJChESVJNT0RFKSAgXAogCQkkKFBZVEhPTkZSQU1FV09SS0RJUikvVmVyc2lvbnMvJChWRVJTSU9OKS9SZXNvdXJjZXMvRW5nbGlzaC5scHJvagogCSQoSU5TVEFMTF9EQVRBKSAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCBcCkBAIC01NTIsNiArNTg5LDE4IEBACiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBNb2R1bGVzL190ZXN0ZW1iZWQubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEltcG9ydGxpYgorCitNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliOiBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCisJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKKworUHl0aG9uL2ltcG9ydGxpYi5oOiAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworCSQoTUFLRSkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgorCS4vTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYiBcCisJCSQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTcGVjaWFsIHJ1bGVzIGZvciBvYmplY3QgZmlsZXMKIAogTW9kdWxlcy9nZXRidWlsZGluZm8ubzogJChQQVJTRVJfT0JKUykgXApAQCAtNTYyLDcgKzYxMSw2IEBACiAJCSQoTU9ET0JKUykgXAogCQkkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKLQkgICAgICAtRFNWTlZFUlNJT049IlwiYExDX0FMTD1DICQoU1ZOVkVSU0lPTilgXCIiIFwKIAkgICAgICAtREhHVkVSU0lPTj0iXCJgTENfQUxMPUMgJChIR1ZFUlNJT04pYFwiIiBcCiAJICAgICAgLURIR1RBRz0iXCJgTENfQUxMPUMgJChIR1RBRylgXCIiIFwKIAkgICAgICAtREhHQlJBTkNIPSJcImBMQ19BTEw9QyAkKEhHQlJBTkNIKWBcIiIgXApAQCAtNTc5LDYgKzYyNyw5IEBACiBNb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwogCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwogCitNb2R1bGVzL190ZXN0ZW1iZWQubzogJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCisJJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL190ZXN0ZW1iZWQuYworCiBQeXRob24vZHlubG9hZF9zaGxpYi5vOiAkKHNyY2RpcikvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYyBNYWtlZmlsZQogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKIAkJLURTT0FCST0nIiQoU09BQkkpIicgXApAQCAtNTkxLDEyICs2NDIsMTMgQEAKIAogJChJT19PQkpTKTogJChJT19IKQogCi0jIFVzZSBhIHN0YW1wIGZpbGUgdG8gcHJldmVudCBtYWtlIC1qIGludm9raW5nIHBnZW4gdHdpY2UKLSQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQyk6IFBhcnNlci9wZ2VuLnN0YW1wCi1QYXJzZXIvcGdlbi5zdGFtcDogJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpCi0JCS1AJChJTlNUQUxMKSAtZCBJbmNsdWRlCiskKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKKwkJQCQoTUtESVJfUCkgSW5jbHVkZQorCQkkKE1BS0UpICQoUEdFTikKIAkJJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLQkJLXRvdWNoIFBhcnNlci9wZ2VuLnN0YW1wCiskKEdSQU1NQVJfQyk6ICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTlNSQ1MpCisJCSQoTUFLRSkgJChHUkFNTUFSX0gpCisJCXRvdWNoICQoR1JBTU1BUl9DKQogCiAkKFBHRU4pOgkkKFBHRU5PQkpTKQogCQkkKENDKSAkKE9QVCkgJChQWV9MREZMQUdTKSAkKFBHRU5PQkpTKSAkKExJQlMpIC1vICQoUEdFTikKQEAgLTYwNyw2ICs2NTksOCBAQAogUGFyc2VyL21ldGFncmFtbWFyLm86CSQoc3JjZGlyKS9QYXJzZXIvbWV0YWdyYW1tYXIuYwogCiBQYXJzZXIvdG9rZW5pemVyX3BnZW4ubzoJJChzcmNkaXIpL1BhcnNlci90b2tlbml6ZXIuYworUGFyc2VyL3BhcnNldG9rX3BnZW4ubzoJJChzcmNkaXIpL1BhcnNlci9wYXJzZXRvay5jCitQYXJzZXIvcHJpbnRncmFtbWFyLm86ICQoc3JjZGlyKS9QYXJzZXIvcHJpbnRncmFtbWFyLmMKIAogUGFyc2VyL3BnZW5tYWluLm86CSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmgKIApAQCAtNjE0LDcgKzY2OCw3IEBACiAJJChNS0RJUl9QKSAkKEFTVF9IX0RJUikKIAkkKEFTRExHRU4pIC1oICQoQVNUX0hfRElSKSAkKEFTVF9BU0RMKQogCi0kKEFTVF9DKTogJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQorJChBU1RfQyk6ICQoQVNUX0gpICQoQVNUX0FTREwpICQoQVNETEdFTl9GSUxFUykKIAkkKE1LRElSX1ApICQoQVNUX0NfRElSKQogCSQoQVNETEdFTikgLWMgJChBU1RfQ19ESVIpICQoQVNUX0FTREwpCiAKQEAgLTYzNiwyMCArNjkwLDI5IEBACiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oIFwKLQkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oIFwKLQkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuZGVmLmgKKworVU5JQ09ERV9ERVBTID0gJChCWVRFU1RSX0RFUFMpIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMWxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCiAKIE9iamVjdHMvYnl0ZXNvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvYnl0ZXNvYmplY3QuYyAkKEJZVEVTVFJfREVQUykKIAogT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgJChCWVRFU1RSX0RFUFMpCiAKLU9iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgXAotCQkJCSQoQllURVNUUl9ERVBTKQorT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyAkKFVOSUNPREVfREVQUykKIAogT2JqZWN0cy9kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCiBPYmplY3RzL3NldG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaApAQCAtNjU3LDExICs3MjAsMTIgQEAKICQoT1BDT0RFVEFSR0VUU19IKTogJChPUENPREVUQVJHRVRHRU5fRklMRVMpCiAJJChPUENPREVUQVJHRVRHRU4pICQoT1BDT0RFVEFSR0VUU19IKQogCi1QeXRob24vY2V2YWwubzogJChPUENPREVUQVJHRVRTX0gpIFB5dGhvbi9jZXZhbF9naWwuaAorUHl0aG9uL2NldmFsLm86ICQoT1BDT0RFVEFSR0VUU19IKSAkKHNyY2RpcikvUHl0aG9uL2NldmFsX2dpbC5oCiAKIFB5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5vOiAkKHNyY2RpcikvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgXAotCQkJCSQoQllURVNUUl9ERVBTKSBcCi0JCQkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oCisJCQkJJChCWVRFU1RSX0RFUFMpCisKK1B5dGhvbi9mcm96ZW4ubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRsaWIuaAogCiBPYmplY3RzL3R5cGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLmluYwogJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLmluYzogJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5CkBAIC02NzEsODkgKzczNSw4OSBAQAogIyBIZWFkZXIgZmlsZXMKIAogUFlUSE9OX0hFQURFUlM9IFwKLQkJSW5jbHVkZS9QeXRob24tYXN0LmggXAotCQlJbmNsdWRlL1B5dGhvbi5oIFwKLQkJSW5jbHVkZS9hYnN0cmFjdC5oIFwKLQkJSW5jbHVkZS9hY2N1LmggXAotCQlJbmNsdWRlL2FzZGwuaCBcCi0JCUluY2x1ZGUvYXN0LmggXAotICAgICAgICAgICAgICAgIEluY2x1ZGUvYmx0aW5tb2R1bGUuaCBcCi0JCUluY2x1ZGUvYml0c2V0LmggXAotCQlJbmNsdWRlL2Jvb2xvYmplY3QuaCBcCi0JCUluY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIFwKLQkJSW5jbHVkZS9ieXRlYXJyYXlvYmplY3QuaCBcCi0JCUluY2x1ZGUvYnl0ZXNvYmplY3QuaCBcCi0JCUluY2x1ZGUvY2VsbG9iamVjdC5oIFwKLQkJSW5jbHVkZS9jZXZhbC5oIFwKLQkJSW5jbHVkZS9jbGFzc29iamVjdC5oIFwKLQkJSW5jbHVkZS9jb2RlLmggXAotCQlJbmNsdWRlL2NvZGVjcy5oIFwKLQkJSW5jbHVkZS9jb21waWxlLmggXAotCQlJbmNsdWRlL2NvbXBsZXhvYmplY3QuaCBcCi0JCUluY2x1ZGUvZGVzY3JvYmplY3QuaCBcCi0JCUluY2x1ZGUvZGljdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9kdG9hLmggXAotCQlJbmNsdWRlL2R5bmFtaWNfYW5ub3RhdGlvbnMuaCBcCi0JCUluY2x1ZGUvZW51bW9iamVjdC5oIFwKLQkJSW5jbHVkZS9lcnJjb2RlLmggXAotCQlJbmNsdWRlL2V2YWwuaCBcCi0JCUluY2x1ZGUvZmlsZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9maWxldXRpbHMuaCBcCi0JCUluY2x1ZGUvZmxvYXRvYmplY3QuaCBcCi0JCUluY2x1ZGUvZnJhbWVvYmplY3QuaCBcCi0JCUluY2x1ZGUvZnVuY29iamVjdC5oIFwKLQkJSW5jbHVkZS9nZW5vYmplY3QuaCBcCi0JCUluY2x1ZGUvaW1wb3J0LmggXAotCQlJbmNsdWRlL2ludHJjaGVjay5oIFwKLQkJSW5jbHVkZS9pdGVyb2JqZWN0LmggXAotCQlJbmNsdWRlL2xpc3RvYmplY3QuaCBcCi0JCUluY2x1ZGUvbG9uZ2ludHJlcHIuaCBcCi0JCUluY2x1ZGUvbG9uZ29iamVjdC5oIFwKLQkJSW5jbHVkZS9tYXJzaGFsLmggXAotCQlJbmNsdWRlL21lbW9yeW9iamVjdC5oIFwKLQkJSW5jbHVkZS9tZXRhZ3JhbW1hci5oIFwKLQkJSW5jbHVkZS9tZXRob2RvYmplY3QuaCBcCi0JCUluY2x1ZGUvbW9kc3VwcG9ydC5oIFwKLQkJSW5jbHVkZS9tb2R1bGVvYmplY3QuaCBcCi0JCUluY2x1ZGUvbm9kZS5oIFwKLQkJSW5jbHVkZS9vYmplY3QuaCBcCi0JCUluY2x1ZGUvb2JqaW1wbC5oIFwKLQkJSW5jbHVkZS9vcGNvZGUuaCBcCi0JCUluY2x1ZGUvb3NkZWZzLmggXAotCQlJbmNsdWRlL3BhcnNldG9rLmggXAotCQlJbmNsdWRlL3BhdGNobGV2ZWwuaCBcCi0JCUluY2x1ZGUvcGdlbi5oIFwKLQkJSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKLQkJSW5jbHVkZS9weWFyZW5hLmggXAotCQlJbmNsdWRlL3B5YXRvbWljLmggXAotCQlJbmNsdWRlL3B5Y2Fwc3VsZS5oIFwKLQkJSW5jbHVkZS9weWN0eXBlLmggXAotCQlJbmNsdWRlL3B5ZGVidWcuaCBcCi0JCUluY2x1ZGUvcHllcnJvcnMuaCBcCi0JCUluY2x1ZGUvcHlmcGUuaCBcCi0JCUluY2x1ZGUvcHltYXRoLmggXAotCQlJbmNsdWRlL3B5Z2V0b3B0LmggXAotCQlJbmNsdWRlL3B5bWVtLmggXAotCQlJbmNsdWRlL3B5cG9ydC5oIFwKLQkJSW5jbHVkZS9weXN0YXRlLmggXAotCQlJbmNsdWRlL3B5c3RyY21wLmggXAotCQlJbmNsdWRlL3B5c3RydG9kLmggXAotCQlJbmNsdWRlL3B5dGhvbnJ1bi5oIFwKLQkJSW5jbHVkZS9weXRocmVhZC5oIFwKLQkJSW5jbHVkZS9weXRpbWUuaCBcCi0JCUluY2x1ZGUvcmFuZ2VvYmplY3QuaCBcCi0JCUluY2x1ZGUvc2V0b2JqZWN0LmggXAotCQlJbmNsdWRlL3NsaWNlb2JqZWN0LmggXAotCQlJbmNsdWRlL3N0cnVjdG1lbWJlci5oIFwKLQkJSW5jbHVkZS9zdHJ1Y3RzZXEuaCBcCi0JCUluY2x1ZGUvc3ltdGFibGUuaCBcCi0JCUluY2x1ZGUvc3lzbW9kdWxlLmggXAotCQlJbmNsdWRlL3RyYWNlYmFjay5oIFwKLQkJSW5jbHVkZS90dXBsZW9iamVjdC5oIFwKLQkJSW5jbHVkZS91Y25oYXNoLmggXAotCQlJbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBcCi0JCUluY2x1ZGUvd2FybmluZ3MuaCBcCi0JCUluY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvUHl0aG9uLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hYnN0cmFjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYWNjdS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYXNkbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYXN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ibHRpbm1vZHVsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYml0c2V0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ib29sb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ieXRlc19tZXRob2RzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ieXRlYXJyYXlvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVzb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jZWxsb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jZXZhbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY2xhc3NvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NvZGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NvZGVjcy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29tcGlsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29tcGxleG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2RpY3RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2R0b2EuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2R5bmFtaWNfYW5ub3RhdGlvbnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2VudW1vYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2VycmNvZGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2V2YWwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2ZpbGV1dGlscy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmxvYXRvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2ZyYW1lb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9mdW5jb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9nZW5vYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2ltcG9ydC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvaW50cmNoZWNrLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9pdGVyb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9saXN0b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9sb25naW50cmVwci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbG9uZ29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbWFyc2hhbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZXRhZ3JhbW1hci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tb2RzdXBwb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tb2R1bGVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbm9kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vYmppbXBsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vcGNvZGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29zZGVmcy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbi5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5YXJlbmEuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5YXRvbWljLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWNhcHN1bGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y3R5cGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZGVidWcuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZXJyb3JzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWZwZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHltYXRoLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWdldG9wdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHltYWNyby5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHltZW0uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5cG9ydC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdGF0ZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJjbXAuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RydG9kLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXRob25ydW4uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhyZWFkLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXRpbWUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3Jhbmdlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zZXRvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3NsaWNlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N0cnVjdHNlcS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3ltdGFibGUuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N5c21vZHVsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvdHJhY2ViYWNrLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS90dXBsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvdWNuaGFzaC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvd2FybmluZ3MuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3dlYWtyZWZvYmplY3QuaCBcCiAJCXB5Y29uZmlnLmggXAogCQkkKFBBUlNFUl9IRUFERVJTKQogCkBAIC03NjIsNjUgKzgyNiw1NiBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMgVGVzdCB0aGUgaW50ZXJwcmV0ZXIgKHR3aWNlLCBvbmNlIHdpdGhvdXQgLnB5YyBmaWxlcywgb25jZSB3aXRoKQorVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKK1RFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCitURVNUUlVOTkVSPQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQorVEVTVFRJTUVPVVQ9CTM2MDAKKworIyBSdW4gYSBiYXNpYyBzZXQgb2YgcmVncmVzc2lvbiB0ZXN0cy4KKyMgVGhpcyBleGNsdWRlcyBzb21lIHRlc3RzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZXNvdXJjZS1pbnRlbnNpdmUuCit0ZXN0OgkJYWxsIHBsYXRmb3JtCisJCSQoVEVTVFJVTk5FUikgJChURVNUT1BUUykKKworIyBSdW4gdGhlIGZ1bGwgdGVzdCBzdWl0ZSB0d2ljZSAtIG9uY2Ugd2l0aG91dCAucHljIGZpbGVzLCBhbmQgb25jZSB3aXRoLgogIyBJbiB0aGUgcGFzdCwgd2UndmUgaGFkIHByb2JsZW1zIHdoZXJlIGJ1Z3MgaW4gdGhlIG1hcnNoYWxsaW5nIG9yCiAjIGVsc2V3aGVyZSBjYXVzZWQgYnl0ZWNvZGUgcmVhZCBmcm9tIC5weWMgZmlsZXMgdG8gYmVoYXZlIGRpZmZlcmVudGx5CiAjIHRoYW4gYnl0ZWNvZGUgZ2VuZXJhdGVkIGRpcmVjdGx5IGZyb20gYSAucHkgc291cmNlIGZpbGUuICBTb21ldGltZXMKLSMgdGhlIGJ5dGVjb2RlIHJlYWQgZnJvbSBhIC5weWMgZmlsZSBoYWQgdGhlIGJ1Zywgc29tdGltZXMgdGhlIGRpcmVjdGx5CisjIHRoZSBieXRlY29kZSByZWFkIGZyb20gYSAucHljIGZpbGUgaGFkIHRoZSBidWcsIHNvbWV0aW1lcyB0aGUgZGlyZWN0bHkKICMgZ2VuZXJhdGVkIGJ5dGVjb2RlLiAgVGhpcyBpcyBzb21ldGltZXMgYSB2ZXJ5IHNoeSBidWcgbmVlZGluZyBhIGxvdCBvZgogIyBzYW1wbGUgZGF0YS4KLQotVEVTVE9QVFM9CS1sICQoRVhUUkFURVNUT1BUUykKLVRFU1RQUk9HPQkkKHNyY2RpcikvTGliL3Rlc3QvcmVncnRlc3QucHkKLVRFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1XZCAtRSAtUiAtYmIgJChURVNUUFlUSE9OT1BUUykKLXRlc3Q6CQlhbGwgcGxhdGZvcm0KLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKLQogdGVzdGFsbDoJYWxsIHBsYXRmb3JtCiAJCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9MaWIvY29tcGlsZWFsbC5weQorCQkkKFRFU1RQWVRIT04pIC1FICQoc3JjZGlyKS9MaWIvY29tcGlsZWFsbC5weQogCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQorCQktJChURVNUUlVOTkVSKSAtdSBhbGwgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtdSBhbGwgJChURVNUT1BUUykKIAotIyAgUnVuIHRoZSB1bml0ZXN0cyBmb3IgYm90aCBhcmNoaXRlY3R1cmVzIGluIGEgVW5pdmVyc2FsIGJ1aWxkIG9uIE9TWAotIyAgTXVzdCBiZSBydW4gb24gYW4gSW50ZWwgYm94LgorIyBSdW4gdGhlIHRlc3Qgc3VpdGUgZm9yIGJvdGggYXJjaGl0ZWN0dXJlcyBpbiBhIFVuaXZlcnNhbCBidWlsZCBvbiBPU1guCisjIE11c3QgYmUgcnVuIG9uIGFuIEludGVsIGJveC4KIHRlc3R1bml2ZXJzYWw6CWFsbCBwbGF0Zm9ybQogCQlpZiBbIGBhcmNoYCAhPSAnaTM4NicgXTt0aGVuIFwKIAkJCWVjaG8gIlRoaXMgY2FuIG9ubHkgYmUgdXNlZCBvbiBPU1gvaTM4NiIgO1wKIAkJCWV4aXQgMSA7XAogCQlmaQotCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgLXVhbGwgJChURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFJVTlNIQVJFRCkgL3Vzci9saWJleGVjL29haC90cmFuc2xhdGUgLi8kKEJVSUxEUFlUSE9OKSAtRSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQorCQkkKFJVTlNIQVJFRCkgL3Vzci9saWJleGVjL29haC90cmFuc2xhdGUgXAorCQkJLi8kKEJVSUxEUFlUSE9OKSAtRSAtbSB0ZXN0IC1qIDAgLXUgYWxsICQoVEVTVE9QVFMpCiAKLQotIyBMaWtlIHRlc3RhbGwsIGJ1dCB3aXRoIGEgc2luZ2xlIHBhc3Mgb25seQotIyBydW4gYW4gb3B0aW9uYWwgc2NyaXB0IHRvIGluY2x1ZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyMgTGlrZSB0ZXN0YWxsLCBidXQgd2l0aCBvbmx5IG9uZSBwYXNzIGFuZCB3aXRob3V0IG11bHRpcGxlIHByb2Nlc3Nlcy4KKyMgUnVuIGFuIG9wdGlvbmFsIHNjcmlwdCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBlbnZpcm9ubWVudC4KIGJ1aWxkYm90dGVzdDoJYWxsIHBsYXRmb3JtCiAJCS1AaWYgd2hpY2ggcHlidWlsZGJvdC5pZGVudGlmeSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAogCQkJcHlidWlsZGJvdC5pZGVudGlmeSAiQ0M9JyQoQ0MpJyIgIkNYWD0nJChDWFgpJyI7IFwKIAkJZmkKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAtcndXICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCiAKIFFVSUNLVEVTVE9QVFM9CSQoVEVTVE9QVFMpIC14IHRlc3Rfc3VicHJvY2VzcyB0ZXN0X2lvIHRlc3RfbGliMnRvMyBcCiAJCXRlc3RfbXVsdGlieXRlY29kZWMgdGVzdF91cmxsaWIyX2xvY2FsbmV0IHRlc3RfaXRlcnRvb2xzIFwKIAkJdGVzdF9tdWx0aXByb2Nlc3NpbmcgdGVzdF9tYWlsYm94IHRlc3Rfc29ja2V0IHRlc3RfcG9sbCBcCi0JCXRlc3Rfc2VsZWN0IHRlc3RfemlwZmlsZQorCQl0ZXN0X3NlbGVjdCB0ZXN0X3ppcGZpbGUgdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMKIHF1aWNrdGVzdDoJYWxsIHBsYXRmb3JtCi0JCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFFVSUNLVEVTVE9QVFMpCi0JCSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChRVUlDS1RFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpICQoUVVJQ0tURVNUT1BUUykKIAotTUVNVEVTVE9QVFM9ICAgICQoUVVJQ0tURVNUT1BUUykgLXggdGVzdF9kbCB0ZXN0X19fYWxsX18gdGVzdF9mb3JrMSBcCi0JCXRlc3RfbG9uZ2V4cAotbWVtdGVzdDoJYWxsIHBsYXRmb3JtCi0JCS1ybSAtZiAkKHNyY2RpcikvTGliL3Rlc3QvKi5weVtjb10KLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChNRU1URVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKE1FTVRFU1RPUFRTKQogCiBpbnN0YWxsOiBhbHRpbnN0YWxsIGJpbmluc3RhbGwKIApAQCAtODYxLDcgKzkxNiw3IEBACiAJZG9uZQogCSQoSU5TVEFMTF9QUk9HUkFNKSAkKEJVSUxEUFlUSE9OKSAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoTERWRVJTSU9OKSQoRVhFKQogCS1pZiB0ZXN0ICIkKFZFUlNJT04pIiAhPSAiJChMRFZFUlNJT04pIjsgdGhlbiBcCi0JCWlmIHRlc3QgLWYgJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikkKFZFUlNJT04pJChFWEUpIC1vIC1oICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pJChWRVJTSU9OKSQoRVhFKTsgXAorCQlpZiB0ZXN0IC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKSQoRVhFKSAtbyAtaCAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTikkKEVYRSk7IFwKIAkJdGhlbiBybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTikkKEVYRSk7IFwKIAkJZmk7IFwKIAkJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIHB5dGhvbiQoTERWRVJTSU9OKSQoRVhFKSBweXRob24kKFZFUlNJT04pJChFWEUpKTsgXApAQCAtODgyLDExICs5MzcsMTEgQEAKIAlmaQogCiBiaW5pbnN0YWxsOiBhbHRiaW5pbnN0YWxsCi0JLWlmIHRlc3QgLWYgJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikzJChFWEUpIC1vIC1oICQoREVTVERJUikkKEJJTkRJUikvJChQWVRIT04pMyQoRVhFKTsgXAotCXRoZW4gcm0gLWYgJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikzJChFWEUpOyBcCisJLWlmIHRlc3QgLWYgJChERVNURElSKSQoQklORElSKS9weXRob24zJChFWEUpIC1vIC1oICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uMyQoRVhFKTsgXAorCXRoZW4gcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXRob24zJChFWEUpOyBcCiAJZWxzZSB0cnVlOyBcCiAJZmkKLQkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgcHl0aG9uJChWRVJTSU9OKSQoRVhFKSAkKFBZVEhPTikzJChFWEUpKQorCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweXRob24kKFZFUlNJT04pJChFWEUpIHB5dGhvbjMkKEVYRSkpCiAJLWlmIHRlc3QgIiQoVkVSU0lPTikiICE9ICIkKExEVkVSU0lPTikiOyB0aGVuIFwKIAkJcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pLWNvbmZpZzsgXAogCQkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHl0aG9uJChMRFZFUlNJT04pLWNvbmZpZyBweXRob24kKFZFUlNJT04pLWNvbmZpZyk7IFwKQEAgLTkwMyw2ICs5NTgsOCBAQAogCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweWRvYyQoVkVSU0lPTikgcHlkb2MzKQogCS1ybSAtZiAkKERFU1RESVIpJChCSU5ESVIpLzJ0bzMKIAkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgMnRvMy0kKFZFUlNJT04pIDJ0bzMpCisJLXJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl2ZW52CisJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5dmVudi0kKFZFUlNJT04pIHB5dmVudikKIAogIyBJbnN0YWxsIHRoZSBtYW51YWwgcGFnZQogbWFuaW5zdGFsbDoKQEAgLTkyOCwyMSArOTg1LDQzIEBACiAJCXRlc3QvY2prZW5jb2RpbmdzIHRlc3QvZGVjaW1hbHRlc3RkYXRhIHRlc3QveG1sdGVzdGRhdGEgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSBcCiAJCXRlc3QvdHJhY2VkbW9kdWxlcyB0ZXN0L2VuY29kZWRfbW9kdWxlcyBcCi0JCWNvbmN1cnJlbnQgY29uY3VycmVudC9mdXR1cmVzIGVuY29kaW5ncyBcCi0JCWVtYWlsIGVtYWlsL21pbWUgZW1haWwvdGVzdCBlbWFpbC90ZXN0L2RhdGEgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMS9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wb3J0aW9uMi9mb28gXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MS9wYXJlbnQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50IFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQgXAorICAgICAgICAgICAgICAgIHRlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZSBcCisgICAgICAgICAgICAgICAgdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdCBcCisJCWNvbGxlY3Rpb25zIGNvbmN1cnJlbnQgY29uY3VycmVudC9mdXR1cmVzIGVuY29kaW5ncyBcCisJCWVtYWlsIGVtYWlsL21pbWUgdGVzdC90ZXN0X2VtYWlsIHRlc3QvdGVzdF9lbWFpbC9kYXRhIFwKIAkJaHRtbCBqc29uIHRlc3QvanNvbl90ZXN0cyBodHRwIGRibSB4bWxycGMgXAogCQlzcWxpdGUzIHNxbGl0ZTMvdGVzdCBcCiAJCWxvZ2dpbmcgY3N2IHdzZ2lyZWYgdXJsbGliIFwKIAkJbGliMnRvMyBsaWIydG8zL2ZpeGVzIGxpYjJ0bzMvcGdlbjIgbGliMnRvMy90ZXN0cyBcCi0JCWxpYjJ0bzMvdGVzdHMvZGF0YSBsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzIGxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMvbXlmaXhlcyBcCisJCWxpYjJ0bzMvdGVzdHMvZGF0YSBsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzIFwKKwkJbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycy9teWZpeGVzIFwKIAkJY3R5cGVzIGN0eXBlcy90ZXN0IGN0eXBlcy9tYWNob2xpYiBpZGxlbGliIGlkbGVsaWIvSWNvbnMgXAogCQlkaXN0dXRpbHMgZGlzdHV0aWxzL2NvbW1hbmQgZGlzdHV0aWxzL3Rlc3RzICQoWE1MTElCU1VCRElSUykgXAotCQlpbXBvcnRsaWIgaW1wb3J0bGliL3Rlc3QgaW1wb3J0bGliL3Rlc3QvYnVpbHRpbiBcCi0JCWltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbiBpbXBvcnRsaWIvdGVzdC9mcm96ZW4gXAotCQlpbXBvcnRsaWIvdGVzdC9pbXBvcnRfIGltcG9ydGxpYi90ZXN0L3NvdXJjZSBcCisJCWltcG9ydGxpYiB0ZXN0L3Rlc3RfaW1wb3J0bGliIHRlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbiBcCisJCXRlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uIHRlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuIFwKKwkJdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfIHRlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlIFwKIAkJdHVydGxlZGVtbyBcCiAJCW11bHRpcHJvY2Vzc2luZyBtdWx0aXByb2Nlc3NpbmcvZHVtbXkgXAotCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IFwKKwkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCB1bml0dGVzdC90ZXN0L3Rlc3Rtb2NrIFwKKwkJdmVudiB2ZW52L3NjcmlwdHMgdmVudi9zY3JpcHRzL3Bvc2l4IFwKIAkJY3Vyc2VzIHB5ZG9jX2RhdGEgJChNQUNIREVQUykKIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUExBVERJUikgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYwogCUBmb3IgaSBpbiAkKFNDUklQVERJUikgJChMSUJERVNUKTsgXApAQCAtOTY0LDcgKzEwNDMsNyBAQAogCQllbHNlCXRydWU7IFwKIAkJZmk7IFwKIAlkb25lCi0JQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weSAkKHNyY2RpcikvTGliLyouZWdnLWluZm8gOyBcCisJQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weSA7IFwKIAlkbyBcCiAJCWlmIHRlc3QgLXggJCRpOyB0aGVuIFwKIAkJCSQoSU5TVEFMTF9TQ1JJUFQpICQkaSAkKERFU1RESVIpJChMSUJERVNUKTsgXApAQCAtMTAwNSwyNyArMTA4NCwyNyBAQAogCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXAogCWZpCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKSAtZiBcCiAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogCQkkKERFU1RESVIpJChMSUJERVNUKQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKIAogIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCiAkKHNyY2RpcikvTGliLyQoUExBVERJUik6CkBAIC0xMTE5LDcgKzExOTgsNyBAQAogIyBJbnN0YWxsIHRoZSBkeW5hbWljYWxseSBsb2FkYWJsZSBtb2R1bGVzCiAjIFRoaXMgZ29lcyBpbnRvICQoZXhlY19wcmVmaXgpCiBzaGFyZWRpbnN0YWxsOiBzaGFyZWRtb2RzCi0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLUUgJChzcmNkaXIpL3NldHVwLnB5IGluc3RhbGwgXAorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSBpbnN0YWxsIFwKIAkgICAJLS1wcmVmaXg9JChwcmVmaXgpIFwKIAkJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAkJLS1pbnN0YWxsLXBsYXRsaWI9JChERVNUU0hBUkVEKSBcCkBAIC0xMTk0LDEzICsxMjczLDEzIEBACiAjIFRoaXMgaW5zdGFsbHMgYSBmZXcgb2YgdGhlIHVzZWZ1bCBzY3JpcHRzIGluIFRvb2xzL3NjcmlwdHMKIHNjcmlwdHNpbnN0YWxsOgogCVNSQ0RJUj0kKHNyY2RpcikgJChSVU5TSEFSRUQpIFwKLQkuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3NldHVwLnB5IGluc3RhbGwgXAorCSQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvc2V0dXAucHkgaW5zdGFsbCBcCiAJLS1wcmVmaXg9JChwcmVmaXgpIFwKIAktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCS0tcm9vdD0kKERFU1RESVIpLwogCiAjIEJ1aWxkIHRoZSB0b3BsZXZlbCBNYWtlZmlsZQotTWFrZWZpbGUucHJlOiBNYWtlZmlsZS5wcmUuaW4gY29uZmlnLnN0YXR1cworTWFrZWZpbGUucHJlOiAkKHNyY2RpcikvTWFrZWZpbGUucHJlLmluIGNvbmZpZy5zdGF0dXMKIAlDT05GSUdfRklMRVM9TWFrZWZpbGUucHJlIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSBjb25maWcuc3RhdHVzCiAJJChNQUtFKSAtZiBNYWtlZmlsZS5wcmUgTWFrZWZpbGUKIApAQCAtMTI0Myw2ICsxMzIyLDEwIEBACiAJZXRhZ3MgSW5jbHVkZS8qLmg7IFwKIAlmb3IgaSBpbiAkKFNSQ0RJUlMpOyBkbyBldGFncyAtYSAkJGkvKi5bY2hdOyBkb25lCiAKKyMgVG91Y2ggZ2VuZXJhdGVkIGZpbGVzCit0b3VjaDoKKwloZyAtLWNvbmZpZyBleHRlbnNpb25zLnRvdWNoPVRvb2xzL2hnL2hndG91Y2gucHkgdG91Y2ggLXYKKwogIyBTYW5pdGF0aW9uIHRhcmdldHMgLS0gY2xlYW4gbGVhdmVzIGxpYnJhcmllcywgZXhlY3V0YWJsZXMgYW5kIHRhZ3MKICMgZmlsZXMsIHdoaWNoIGNsb2JiZXIgcmVtb3ZlcyBhcyB3ZWxsCiBweWNyZW1vdmFsOgpAQCAtMTI2NywxNCArMTM1MCwxNSBAQAogCWZpbmQgYnVpbGQgLW5hbWUgJ2ZmaWNvbmZpZy5oJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQogCWZpbmQgYnVpbGQgLW5hbWUgJ2ZmaWNvbmZpZy5weScgLWV4ZWMgcm0gLWYge30gJzsnIHx8IHRydWUKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQotCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQKKwktcm0gLWYgJChTWVNDT05GSUdEQVRBKQorCS1ybSAtZiBNb2R1bGVzL190ZXN0ZW1iZWQgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogCiBwcm9maWxlLXJlbW92YWw6CiAJZmluZCAuIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JwogCiBjbG9iYmVyOiBjbGVhbiBwcm9maWxlLXJlbW92YWwKIAktcm0gLWYgJChCVUlMRFBZVEhPTikgJChQR0VOKSAkKExJQlJBUlkpICQoTERMSUJSQVJZKSAkKERMTExJQlJBUlkpIFwKLQkJdGFncyBUQUdTIFBhcnNlci9wZ2VuLnN0YW1wIFwKKwkJdGFncyBUQUdTIFwKIAkJY29uZmlnLmNhY2hlIGNvbmZpZy5sb2cgcHljb25maWcuaCBNb2R1bGVzL2NvbmZpZy5jCiAJLXJtIC1yZiBidWlsZCBwbGF0Zm9ybQogCS1ybSAtcmYgJChQWVRIT05GUkFNRVdPUktESVIpCkBAIC0xMzA1LDggKzEzODksNyBAQAogIyBGaW5kIGZpbGVzIHdpdGggZnVubnkgbmFtZXMKIGZ1bm55OgogCWZpbmQgJChTVUJESVJTKSAkKFNVQkRJUlNUT08pIFwKLQkJLW5hbWUgLnN2biAtcHJ1bmUgXAotCQktbyAtdHlwZSBkIFwKKwkJLXR5cGUgZCBcCiAJCS1vIC1uYW1lICcqLltjaHNdJyBcCiAJCS1vIC1uYW1lICcqLnB5JyBcCiAJCS1vIC1uYW1lICcqLnB5dycgXApAQCAtMTM0NSwxMyArMTQyOCwxMyBAQAogUHl0aG9uL3RocmVhZC5vOiBAVEhSRUFESEVBREVSU0AKIAogIyBEZWNsYXJlIHRhcmdldHMgdGhhdCBhcmVuJ3QgcmVhbCBmaWxlcwotLlBIT05ZOiBhbGwgYnVpbGRfYWxsIHNoYXJlZG1vZHMgb2xkc2hhcmVkbW9kcyB0ZXN0IHF1aWNrdGVzdCBtZW10ZXN0CisuUEhPTlk6IGFsbCBidWlsZF9hbGwgc2hhcmVkbW9kcyBvbGRzaGFyZWRtb2RzIHRlc3QgcXVpY2t0ZXN0CiAuUEhPTlk6IGluc3RhbGwgYWx0aW5zdGFsbCBvbGRzaGFyZWRpbnN0YWxsIGJpbmluc3RhbGwgYWx0YmluaW5zdGFsbAogLlBIT05ZOiBtYW5pbnN0YWxsIGxpYmluc3RhbGwgaW5jbGluc3RhbGwgbGliYWluc3RhbGwgc2hhcmVkaW5zdGFsbAogLlBIT05ZOiBmcmFtZXdvcmtpbnN0YWxsIGZyYW1ld29ya2luc3RhbGxmcmFtZXdvcmsgZnJhbWV3b3JraW5zdGFsbHN0cnVjdHVyZQogLlBIT05ZOiBmcmFtZXdvcmtpbnN0YWxsbWFjbGliIGZyYW1ld29ya2luc3RhbGxhcHBzIGZyYW1ld29ya2luc3RhbGx1bml4dG9vbHMKIC5QSE9OWTogZnJhbWV3b3JrYWx0aW5zdGFsbHVuaXh0b29scyByZWNoZWNrIGF1dG9jb25mIGNsZWFuIGNsb2JiZXIgZGlzdGNsZWFuCi0uUEhPTlk6IHNtZWxseSBmdW5ueSBwYXRjaGNoZWNrCisuUEhPTlk6IHNtZWxseSBmdW5ueSBwYXRjaGNoZWNrIHRvdWNoCiAuUEhPTlk6IGdkYmhvb2tzCiAKICMgSUYgWU9VIFBVVCBBTllUSElORyBIRVJFIElUIFdJTEwgR08gQVdBWQpkaWZmIC0tZ2l0IGEvTWlzYy9BQ0tTIGIvTWlzYy9BQ0tTCmluZGV4IDg1MTkwMjkuLjJjMTdkNmQgMTAwNjQ0Ci0tLSBhL01pc2MvQUNLUworKysgYi9NaXNjL0FDS1MKQEAgLTEzLDggKzEzLDExIEBACiAKIEFhaHoKIE1pY2hhZWwgQWJib3R0CitSYWppdiBBYnJhaGFtCiBEYXZpZCBBYnJhaGFtcworTWFyYyBBYnJhbW93aXR6CiBSb24gQWRhbQorQWxpIEFmc2hhcgogSmltIEFobHN0cm9tCiBGYXJoYW4gQWhtYWQKIE1hdHRoZXcgQWhyZW5zCkBAIC0zNiw2ICszOSw3IEBACiBFcmlrIEFuZGVyc8OpbgogT2xpdmVyIEFuZHJpY2gKIFJvc3MgQW5kcnVzCitKdWFuY2FybG8gQcOxZXoKIErDqXLDqW15IEFuZ2VyCiBKb24gQW5nbGluCiBIZWlkaSBBbm5leHN0YWQKQEAgLTQ0LDEzICs0OCwxMyBAQAogSmFzb24gQXNiYWhyCiBEYXZpZCBBc2NoZXIKIENocmlzIEF0TGVlCitBeW1lcmljIEF1Z3VzdGluCiBKZXPDunMgQ2VhIEF2acOzbgogSm9obiBBeWNvY2sKLUphbi1IZWluIELDvGhybWFuCiBEb25vdmFuIEJhYXJkYQogQXR0aWxhIEJhYm8KLUFsZm9uc28gQmFjaWVybwogTWFyY2luIEJhY2hyeQorQWxmb25zbyBCYWNpZXJvCiBEd2F5bmUgQmFpbGV5CiBTdGlnIEJha2tlbgogR3JlZyBCYWxsCkBAIC02NSwyMSArNjksMjMgQEAKIEFudG9uIEJhcmtvdnNreQogTmljayBCYXJuZXMKIFF1ZW50aW4gQmFybmVzCitEYXZpZCBCYXJuZXR0CiBSaWNoYXJkIEJhcnJhbgogQ2VzYXIgRWR1YXJkbyBCYXJyb3MKIERlcyBCYXJyeQogVWxmIEJhcnRlbHQKIERvbiBCYXNoZm9yZAorUGlvciBCYXN0aWRhCiBOaWNrIEJhc3RpbgogSmVmZiBCYXVlcgotTWlrZSBCYXllcgogTWljaGFlbCBSIEJheAogQW50aG9ueSBCYXh0ZXIKK01pa2UgQmF5ZXIKIFNhbXVlbCBMLiBCYXllcgogRG9uYWxkIEJlYXVkcnkKIERhdmlkIEJlYXpsZXkKLVJvYmluIEJlY2tlcgogTmVhbCBCZWNrZXIKK1JvYmluIEJlY2tlcgogVG9yc3RlbiBCZWNrZXIKIEJpbGwgQmVkZm9yZAogU3RlZmFuIEJlaG5lbApAQCAtOTEsNiArOTcsNyBAQAogQW5kcmV3IEJlbm5ldHRzCiBBbmR5IEJlbnNreQogQmVubmV0dCBCZW5zb24KK0V6cmEgQmVyY2gKIE1pY2hlbCBWYW4gZGVuIEJlcmdoCiBKdWxpYW4gQmVybWFuCiBCcmljZSBCZXJuYQpAQCAtMTA2LDYgKzExMyw3IEBACiBTdHVhcnQgQmlzaG9wCiBSb3kgQml4bGVyCiBKb25hdGhhbiBCbGFjaworUmVuYXVkIEJsYW5jaAogTWlrZSBCbGFuZAogTWFydGluIEJsZXNzCiBQYWJsbyBCbGV5ZXIKQEAgLTExNiwxMSArMTI0LDEzIEBACiBNYXR0aGV3IEJvZWRpY2tlcgogUm9iaW4gQm9lcmRpamsKIERhdmlkIEJvbGVuCi1Gb3Jlc3QgQm9uZAogR2F3YWluIEJvbHRvbgorRm9yZXN0IEJvbmQKIEdyZWdvcnkgQm9uZAorTWF0aWFzIEJvcmRlc2UKIEp1cmplbiBCb3MKIFBldGVyIEJvc2NoCitEYW4gQm9zd2VsbAogRXJpYyBCb3VjawogVGhpZXJyeSBCb3VzY2gKIFNlYmFzdGlhbiBCb3ZpbmcKQEAgLTEzMSw5ICsxNDEsMTEgQEAKIEdlb3JnIEJyYW5kbAogQ2hyaXN0b3BoZXIgQnJhbm5vbgogVGVycmVuY2UgQnJhbm5vbgorRXJpayBCcmF5CiBCcmlhbiBCcmF6aWwKIERhdmUgQnJlbm5hbgogVG9tIEJyaWRnbWFuCitBbnRob255IEJyaWdncwogS2VpdGggQnJpZ2dzCiBUb2JpYXMgQnJpbmsKIFJpY2hhcmQgQnJvZGllCkBAIC0xNDEsNiArMTUzLDcgQEAKIERhbmllbCBCcm90c2t5CiBKZWFuIEJyb3V3ZXJzCiBHYXJ5IFMuIEJyb3duCitUaXR1cyBCcm93bgogT2xlZyBCcm95dG1hbm4KIERhdmUgQnJ1ZWNrCiBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpCkBAIC0xNDgsNiArMTYxLDcgQEAKIEZsb3JpcyBCcnV5bm9vZ2hlCiBTdGFuIEJ1YnJvdXNraQogRXJpayBkZSBCdWVnZXIKK0phbi1IZWluIELDvGhybWFuCiBEaWNrIEJ1bHRlcm1hbgogQmlsbCBCdW1nYXJuZXIKIEppbW15IEJ1cmdldHQKQEAgLTE1NywxNCArMTcxLDE1IEBACiBUYXJuIFdlaXNuZXIgQnVydG9uCiBMZWUgQnVzYnkKIFJhbHBoIEJ1dGxlcgorTmljb2xhcyBDYWRvdQogSnAgQ2FsZGVyb25lCiBBcm5hdWQgQ2FsbWV0dGVzCiBEYW5pZWwgQ2FsdmVsbwogVG9ueSBDYW1wYmVsbAogQnJldHQgQ2Fubm9uCiBNaWtlIENhcmx0b24KK1BpZXJyZSBDYXJyaWVyCiBUZXJyeSBDYXJyb2xsCi1EYW1pZW4gQ2Fzc291CiBMb3JlbnpvIE0uIENhdHVjY2kKIERvbm4gQ2F2ZQogQ2hhcmxlcyBDYXphYm9uCkBAIC0xNzYsOSArMTkxLDEwIEBACiBKb2huIENoYW5kbGVyCiBIeWUtU2hpayBDaGFuZwogSmVmZnJleSBDaGFuZwotTWl0Y2ggQ2hhcG1hbgotR3JlZyBDaGFwbWFuCitHb2RlZnJvaWQgQ2hhcGVsbGUKIEJyYWQgQ2hhcG1hbgorR3JlZyBDaGFwbWFuCitNaXRjaCBDaGFwbWFuCiBEYXZpZCBDaGF1bQogTmljb2xhcyBDaGF1dmF0CiBKZXJyeSBDaGVuCkBAIC0xOTMsOSArMjA5LDExIEBACiBEYXZpZCBDaW5lZ2UKIENyYWlnIENpdHJvCiBHaWxsZXMgQ2l2YXJpbworQ2hyaXMgQ2xhcmsKIE1pa2UgQ2xhcmtzb24KIEFuZHJldyBDbGVnZwogQnJhZCBDbGVtZW50cworUm9iYmllIENsZW1vbnMKIFN0ZXZlIENsaWZ0CiBIZXJ2w6kgQ29hdGFuaGF5CiBOaWNrIENvZ2hsYW4KQEAgLTIwNiw4ICsyMjQsOSBAQAogSmVmZmVyeSBDb2xsaW5zCiBSb2JlcnQgQ29sbGlucwogUGF1bCBDb2xvbWlldHMKLURlbnZlciBDb25leWJlYXJlCitDaHJpc3RvcGhlIENvbWJlbGxlcwogR2VyZW15IENvbmRyYQorRGVudmVyIENvbmV5YmVhcmUKIEp1YW4gSm9zw6kgQ29udGkKIE1hdHQgQ29ud2F5CiBEYXZpZCBNLiBDb29rZQpAQCAtMjM0LDYgKzI1Myw3IEBACiBBbnRvbmlvIEN1bmkKIEJyaWFuIEN1cnRpbgogTGlzYW5kcm8gRGFsY2luCitEYXJyZW4gRGFsZQogQW5kcmV3IERhbGtlCiBMYXJzIERhbWVyb3cKIEV2YW4gRGFuZHJlYQpAQCAtMjQyLDEwICsyNjIsMTMgQEAKIEJlbiBEYXJuZWxsCiBLdXNoYWwgRGFzCiBKb25hdGhhbiBEYXN0ZWVsCitQaWVycmUtWXZlcyBEYXZpZAorWGF2aWVyIGRlIEdheWUKIEpvaG4gRGVHb29kCiBOZWQgRGVpbHkKIFZpbmNlbnQgRGVsZnQKIEFybmF1ZCBEZWxvYmVsbGUKK0tvbnJhZCBEZWxvbmcKIEVyaWsgRGVtYWluZQogSm9obiBEZW5uaXMKIEwuIFBldGVyIERldXRzY2gKQEAgLTI2Miw2ICsyODUsNyBAQAogSHVtYmVydG8gRGlvZ2VuZXMKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgorSm9zaXAgRGpvbG9uZ2EKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogUm9iZXJ0IERvbm9odWUKQEAgLTI4OCw2ICszMTIsNyBAQAogV2FsdGVyIETDtnJ3YWxkCiBIYW5zIEVja2FyZHQKIFJvZG9scGhvIEVja2hhcmR0CitKb2huIEVkbW9uZHMKIEdyYW50IEVkd2FyZHMKIEpvaG4gRWhyZXNtYW4KIFRhbCBFaW5hdApAQCAtMjk1LDI5ICszMjAsMzUgQEAKIEFuZHJldyBFbGFuZAogSnVsaWVuIMOJbGllCiBMYW5jZSBFbGxpbmdoYXVzCitEYW5pZWwgRWxsaXMKIERhdmlkIEVseQogSmVmZiBFcGxlcgorSmVmZiBNY05laWwKIFRvbSBFcHBlcmx5CiBTdG9mZmVsIEVyYXNtdXMKIErDvHJnZW4gQS4gRXJoYXJkCiBNaWNoYWVsIEVybnN0CiBCZW4gRXNjb3RvCiBBbmR5IEVza2lsc3NvbgorQW5kcsOpIEVzcGF6ZQogU3RlZmFuIEVzc2VyCiBOaWNvbGFzIEVzdGliYWxzCi1TdGVwaGVuIEQgRXZhbnMKIENhcmV5IEV2YW5zCitTdGVwaGVuIEQgRXZhbnMKIFRpbSBFdmVyZXR0CiBQYXVsIEV2ZXJpdHQKIERhdmlkIEV2ZXJseQogRGFuaWVsIEV2ZXJzCitXaW5zdG9uIEV3ZXJ0CiBHcmVnIEV3aW5nCiBNYXJ0aWpuIEZhYXNzZW4KIENsb3ZpcyBGYWJyaWNpbwogQW5kcmVhcyBGYWVyYmVyCiBCaWxsIEZhbmNoZXIKK01pY2hhZWwgRmFycmVsbAogVHJveSBKLiBGYXJyZWxsCiBNYXJrIEZhdmFzCitCb3JpcyBGZWxkCiBOaWVscyBGZXJndXNvbgogU2ViYXN0aWFuIEZlcm5hbmRlegogRmxvcmlhbiBGZXN0aQpAQCAtMzM3LDExICszNjgsMTQgQEAKIEFtYXVyeSBGb3JnZW90IGQnQXJjCiBEb3VnIEZvcnQKIEpvaG4gRm91aHkKK0FuZHJldyBGcmFuY2lzCiBTdGVmYW4gRnJhbmtlCiBNYXJ0aW4gRnJhbmtsaW4KK0JydWNlIEZyZWRlcmlrc2VuCiBSb2JpbiBGcmllZHJpY2gKIEJyYWRsZXkgRnJvZWhsZQogSXZhbiBGcm9obmUKK01hdHRoaWFzIEZ1Y2hzCiBKaW0gRnVsdG9uCiBUYWRheW9zaGkgRnVuYWJhCiBHeXJvIEZ1bmNoCkBAIC0zNzgsMTAgKzQxMiwxMyBAQAogSm9uYXRoYW4gR2lkZHkKIEpvaGFubmVzIEdpanNiZXJzCiBNaWNoYWVsIEdpbGZpeAorWWFubmljayBHaW5ncmFzCiBNYXR0IEdpdWNhCitNaWNoYWVsIEdvZGVyYmF1ZXIKIENocmlzdG9waCBHb2hsa2UKIFRpbSBHb2xkZW4KIEd1aWxoZXJtZSBHb27Dp2FsdmVzCitUaWFnbyBHb27Dp2FsdmVzCiBDaHJpcyBHb25uZXJtYW4KIFNoZWxsZXkgR29vY2gKIERhdmlkIEdvb2RnZXIKQEAgLTM5OCwxNSArNDM1LDE4IEBACiBNaWNoYWVsIEd1cmF2YWdlCiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCitKb25hcyBILgogQmFycnkgSGFkZG93CiBQaGlsaXBwIEhhZ2VtZWlzdGVyCiBQYXVsIHRlbiBIYWdlbgogUmFzbXVzIEhhaG4KIFBldGVyIEhhaWdodAogVsOhY2xhdiBIYWlzbWFuCitXYWxrZXIgSGFsZSBJVgogQm9iIEhhbGxleQogSmVzc2UgSGFsbGlvCiBKdW4gSGFtYW5vCitBbGV4YW5kcmUgSGFtZWxpbgogQW5kZXJzIEhhbW1hcnF1aXN0CiBNYXJrIEhhbW1vbmQKIEhhcmFsZCBIYW5jaGUtT2xzZW4KQEAgLTQxOCw2ICs0NTgsNyBAQAogRGVyZWsgSGFybGFuZAogSmFzb24gSGFycGVyCiBCcmlhbiBIYXJyaW5nCitKb25hdGhhbiBIYXJ0bGV5CiBUcmF2aXMgQi4gSGFydHdlbGwKIExhcnJ5IEhhc3RpbmdzCiBUaW0gSGF0Y2gKQEAgLTQzMSw2ICs0NzIsNyBAQAogTWFsdGUgSGVsbWVydAogTGFuY2UgRmlubiBIZWxzdGVuCiBKb25hdGhhbiBIZW5kcnkKK01pY2hhZWwgSGVucnkKIEphbWVzIEhlbnN0cmlkZ2UKIEthc3VuIEhlcmF0aAogQ2hyaXMgSGVyYm9ydGgKQEAgLTQ0MiwxMCArNDg0LDEwIEBACiBNYWdudXMgTC4gSGV0bGFuZAogUmF5bW9uZCBIZXR0aW5nZXIKIEtldmFuIEhleWRvbgorS2Vsc2V5IEhpZ2h0b3dlcgogSmFzb24gSGlsZGVicmFuZAogUmljaGllIEhpbmRsZQogS29ucmFkIEhpbnNlbgotTWljaGFlbCBIZW5yeQogRGF2aWQgSG9ibGV5CiBUaW0gSG9jaGJlcmcKIEpvZXJnLUN5cmlsIEhvZWhsZQpAQCAtNDYxLDYgKzUwMyw3IEBACiBHZXJyaXQgSG9sbAogU2hhbmUgSG9sbG93YXkKIFJ1bmUgSG9sbQorVGhvbWFzIEhvbG1lcwogUGhpbGlwIEhvbWJ1cmcKIE5hb2Z1bWkgSG9uZGEKIEplZmZyZXkgSG9uaWcKQEAgLTQ2OSwyMiArNTEyLDI3IEBACiBCcmlhbiBIb29wZXIKIFJhbmRhbGwgSG9wcGVyCiBOYWRhdiBIb3Jlc2gKK0Fsb24gSG9yZXYKIEphbiBIb3NhbmcKIEtlbiBIb3dhcmQKIEJyYWQgSG93ZXMKIE1pa2UgSG95CiBDaGloLUhhbyBIdWFuZworQ2hyaXN0aWFuIEh1ZG9uCiBMYXdyZW5jZSBIdWRzb24KIE1pY2hhZWwgSHVkc29uCiBKaW0gSHVndW5pbgogR3JlZyBIdW1waHJleXMKIEVyaWMgSHVzcworVGFpaHl1biBId2FuZwogSmVyZW15IEh5bHRvbgogTHVkd2lnIEjDpGhuZQogR2VyaGFyZCBIw6RyaW5nCiBGcmVkcmlrIEjDpcOlcmQKK0NhdGFsaW4gSWFjb2IKIE1paGFpIEliYW5lc2N1CiBBbGkgSWtpbmNpCitBYXJvbiBJbGVzCiBMYXJzIEltbWlzY2gKIEJvYmJ5IEltcG9sbG9uaWEKIE1lYWRvciBJbmdlCkBAIC01MDQsMTIgKzU1MiwxNSBAQAogSmFjayBKYW5zZW4KIEJpbGwgSmFuc3NlbgogVGhvbWFzIEphcm9zY2gKLVpieXN6ZWsgSsSZZHJ6ZWpld3NraS1Tem1laworSnVoYW5hIEphdWhpYWluZW4KK1piaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsKK0p1bGllbiBKZWhhbm5ldAogRHJldyBKZW5raW5zCiBGbGVtbWluZyBLasOmciBKZW5zZW4KIFBoaWxpcCBILiBKZW5zZW4KIE11blNpYyBKZW9uZwogQ2hyaXMgSmVyZG9uZWsKK0ppbSBKZXdldHQKIFBlZHJvIERpYXogSmltZW5legogT3JqYW4gSm9oYW5zZW4KIEZyZWRyaWsgSm9oYW5zc29uCkBAIC01MTksMTMgKzU3MCwxNSBAQAogTWF0dCBKb2luZXIKIFRob21hcyBKb2xsYW5zCiBOaWNvbGFzIEpvbHkKK0JyaWFuIEsuIEpvbmVzCiBFdmFuIEpvbmVzCiBKZXJlbXkgSm9uZXMKIFJpY2hhcmQgSm9uZXMKIElybWVuIGRlIEpvbmcKIEx1Y2FzIGRlIEpvbmdlCi1Kb2huIEpvcmdlbnNlbgorS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uCiBKZW5zIEIuIEpvcmdlbnNlbgorSm9obiBKb3JnZW5zZW4KIFNpamluIEpvc2VwaAogQW5kcmVhcyBKdW5nCiBUYXR0b28gTWFib256byBLLgpAQCAtNTMzLDIyICs1ODYsMjQgQEAKIEJvYiBLYWhuCiBLdXJ0IEIuIEthaXNlcgogVGFtaXRvIEthaml5YW1hCitKYW4gS2FsaXN6ZXdza2kKIFBldGVyIHZhbiBLYW1wZW4KIFJhZmUgS2FwbGFuCiBKYWNvYiBLYXBsYW4tTW9zcwotSmFuIEthbGlzemV3c2tpCitQZXIgw5h5dmluZCBLYXJsc2VuCiBMb3UgS2F0ZXMKIEhpcm9ha2kgS2F3YWkKIFNlYmFzdGllbiBLZWltCiBSeWFuIEtlbGx5CiBEYW4gS2VuaWdzYmVyZwotUm9iZXJ0IEtlcm4KIFJhbmRhbGwgS2VybgorUm9iZXJ0IEtlcm4KIEppbSBLZXJyCiBNYWdudXMgS2Vzc2xlcgogTGF3cmVuY2UgS2VzdGVsb290CiBWaXZlayBLaGVyYQogTWFkcyBLaWlsZXJpY2gKK0phc29uIEtpbGxlbgogSmFuIEtpbQogVGFlayBKb28gS2ltCiBXLiBUcmV2b3IgS2luZwpAQCAtNTcyLDYgKzYyNyw4IEBACiBEYW1vbiBLb2hsZXIKIE1hcmtvIEtvaHRhbGEKIEd1aWRvIEtvbGxlcmllCitKYWNlayBLb25pZWN6bnkKK9Cc0LDRgNC6INCa0L7RgNC10L3QsdC10YDQswogQXJrYWR5IEtvcGx5YXJvdgogUGV0ZXIgQS4gS29yZW4KIFZsYWQgS29yb2xldgpAQCAtNTg1LDM0ICs2NDIsMzkgQEAKIE1pY2hhZWwgS3JlbWVyCiBGYWJpYW4gS3JldXR6CiBDw6lkcmljIEtyaWVyCitQZWRybyBLcm9nZXIKIEhhbm51IEtyb3NpbmcKIEFuZHJlaiBLcnBpYwogSXZhbiBLcnN0acSHCiBBbmRyZXcgS3VjaGxpbmcKIERhdmUgS3VobG1hbgorSm9uIEt1aG4KIFZsYWRpbWlyIEt1c2huaXIKIEVybm8gS3V1c2VsYQogUm9zcyBMYWdlcndhbGwKIENhbWVyb24gTGFpcmQKIFRob21hcyBMYW1iCiBKZWFuLUJhcHRpc3RlICJKaWJhIiBMYW15CitSb25hbiBMYW15CiBUb3JzdGVuIExhbmRzY2hvZmYKIMWBdWthc3ogTGFuZ2EKIFRpbm8gTGFuZ2UKIEFuZHJldyBMYW5nbWVhZAogRGV0bGVmIExhbm5lcnQKIFNvcmVuIExhcnNlbgorQW1vcyBMYXR0ZWllcgogUGllcnMgTGF1ZGVyCiBCZW4gTGF1cmllCiBTaW1vbiBMYXcKIEp1bGlhIExhd2FsbAogQ2hyaXMgTGF3cmVuY2UKIEJyaWFuIExlYWlyCitNYXRoaWV1IExlZHVjLUhhbWVsCitDaHJpc3RvcGhlciBMZWUKK0lueWVvbCBMZWUKIEphbWVzIExlZQogSm9obiBKLiBMZWUKLUlueWVvbCBMZWUKIFRob21hcyBMZWUKLUNocmlzdG9waGVyIExlZQogVGVubmVzc2VlIExlZXV3ZW5idXJnCiBMdWMgTGVmZWJ2cmUKIEdseXBoIExlZmtvd2l0egpAQCAtNjI2LDYgKzY4OCw3IEBACiBNYXJjLUFuZHLDqSBMZW1idXJnCiBKb2huIExlbnRvbgogQ2hyaXN0b3BoZXIgVHVyIExlc25pZXdza2ktTGFhcworQWxhaW4gTGV1ZnJveQogTWFyayBMZXZpbnNvbgogV2lsbGlhbSBMZXdpcwogQWtpcmEgTGkKQEAgLTY0Niw2ICs3MDksNyBAQAogTWlya28gTGlzcwogTmljayBMb2Nrd29vZAogU3RlcGhhbmllIExvY2t3b29kCitIdWdvIExvcGVzIFRhdmFyZXMKIEFubmUgTG9yZAogVG9tIExvcmVkbwogSnVzdGluIExvdmUKQEAgLTY1OSw2ICs3MjMsNyBAQAogSmltIEx5bmNoCiBNaWthZWwgTHluZ3ZpZwogTWFydGluIHZvbiBMw7Z3aXMKK0d1aWxsZXJtbyBMw7NwZXotQW5nbGFkYQogSmVmZiBNYWNEb25hbGQKIEpvaG4gTWFjaGluCiBBbmRyZXcgSSBNYWNJbnR5cmUKQEAgLTY3MCw2ICs3MzUsNyBAQAogRGF2aWQgTWFsY29sbQogS2VuIE1hbmhlaW1lcgogVmxhZGltaXIgTWFyYW5nb3pvdgorQ29saW4gTWFyYwogVmluY2VudCBNYXJjaGV0dGkKIERhdmlkIE1hcmVrCiBEb3VnIE1hcmllbgpAQCAtNjc5LDggKzc0NSwxMCBAQAogT3dlbiBNYXJ0aW4KIFdlc3RsZXkgTWFydMOtbmV6CiBTw6liYXN0aWVuIE1hcnRpbmkKK1NpZG5leSBTYW4gTWFydMOtbgogUm9nZXIgTWFzc2UKIE5pY2sgTWF0aGV3c29uCitTaW1vbiBNYXRoaWV1CiBMYXVyYSBNYXRzb24KIEdyYWhhbSBNYXR0aGV3cwogRGlldGVyIE1hdXJlcgpAQCAtNjk0LDggKzc2Miw4IEBACiBNaWNoYWVsIE1jTGF5CiBNYXJrIE1jIE1haG9uCiBHb3Jkb24gTWNNaWxsYW4KLUNhb2xhbiBNY05hbWFyYQogQW5kcmV3IE1jTmFtYXJhCitDYW9sYW4gTWNOYW1hcmEKIENyYWlnIE1jUGhlZXRlcnMKIExhbWJlcnQgTWVlcnRlbnMKIEJpbGwgdmFuIE1lbGxlCkBAIC03MDYsNiArNzc0LDggQEAKIEx1a2UgTWV3YnVybgogQ2FybCBNZXllcgogTWlrZSBNZXllcgorUGlvdHIgTWV5ZXIKK0FsZXhpcyBNw6l0YWlyZWF1CiBTdGV2ZW4gTWlhbGUKIFRyZW50IE1pY2sKIFRvbSBNaWRkbGV0b24KQEAgLTcxMywzMiArNzgzLDM3IEBACiBTdGVmYW4gTWloYWlsYQogQXJpc3RvdGVsaXMgTWlrcm9wb3Vsb3MKIFBhb2xvIE1pbGFuaQotRGFtaWVuIE1pbGxlcgogQ2hhZCBNaWxsZXIKK0RhbWllbiBNaWxsZXIKIEphc29uIFYuIE1pbGxlcgogSmF5IFQuIE1pbGxlcgogUm9tYW4gTWlsbmVyCitKdWxpZW4gTWlvdHRlCiBBbmRyaWkgVi4gTWlzaGtvdnNreWkKLUR1c3RpbiBKLiBNaXRjaGVsbAogRG9tIE1pdGNoZWxsCitEdXN0aW4gSi4gTWl0Y2hlbGwKK1p1YmluIE1pdGhyYQogRmxvcmlhbiBNbGFkaXRzY2gKIERvdWcgTW9lbgogVGhlIERyYWdvbiBEZSBNb25zeW5lCiBTa2lwIE1vbnRhbmFybworUGV0ZXIgTW9vZHkKIFBhdWwgTW9vcmUKIFJvc3MgTW9vcmUKIERlcmVrIE1vcnIKIEphbWVzIEEgTW9ycmlzb24KK0RlcmVrIE1jVGF2aXNoIE1vdW5jZQogQWxlc3NhbmRybyBNb3VyYQogUGFibG8gTW91em8KIE1oZXIgTW92c2lzeWFuCiBSdXNsYW4gTXN0b2kKLVNqb2VyZCBNdWxsZW5kZXIKK01pY2hhZWwgTXVsaWNoCiBTYXBlIE11bGxlbmRlcgorU2pvZXJkIE11bGxlbmRlcgogTWljaGFlbCBNdWxsZXIKIE5laWwgTXVsbGVyCitMb3VpcyBNdW5ybwogUi4gRGF2aWQgTXVycmF5Ci1QaW90ciBNZXllcgogRGFsZSBOYWdhdGEKIEpvaG4gTmFnbGUKIFRha2FoaXJvIE5ha2F5YW1hCkBAIC03NDYsMTMgKzgyMSwxNCBAQAogQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpCiBWaWxtb3MgTmViZWhhagogRnJlZHJpayBOZWhyCi1UcmVudCBOZWxzb24KIFRvbnkgTmVsc29uCitUcmVudCBOZWxzb24KIENoYWQgTmV0emVyCiBNYXggTmV1bmjDtmZmZXIKIEdlb3JnZSBOZXZpbGxlLU5laWwKIEpvaGFubmVzIE5pY29sYWkKIFNhbXVlbCBOaWNvbGFyeQorSm9uYXRoYW4gTmllaG9mCiBHdXN0YXZvIE5pZW1leWVyCiBPc2NhciBOaWVyc3RyYXN6CiBIcnZvamUgTmlrc2ljCkBAIC03NzEsNiArODQ3LDggQEAKIEtldmluIE8nQ29ubm9yCiBUaW0gTydNYWxsZXkKIFpvb2tvIE8nV2hpZWxhY3JvbngKK0phbWVzIE9ha2xleQorSm9uIE9iZXJoZWlkZQogUGFzY2FsIE9iZXJuZG9lcmZlcgogSmVmZnJleSBPbGxpZQogQWRhbSBPbHNlbgpAQCAtODAwLDEzICs4NzgsMTggQEAKIERhbiBQYXJpc2llbgogV2lsbGlhbSBQYXJrCiBIYXJyaSBQYXNhbmVuCitHYcOrbCBQYXNncmltYXVkCiBCbyBQZW5nCiBKb2UgUGV0ZXJzb24KIFJhbmR5IFBhdXNjaAogU2FtdWVsZSBQZWRyb25pCitKdXN0aW4gUGVlbAogTWFyY2VsIHZhbiBkZXIgUGVpamwKK0JlcmtlciBQZWtzYWcKIFN0ZXZlbiBQZW1iZXJ0b24KIFNhbnRpYWdvIFBlcmVzw7NuCitHZW9yZ2UgUGVyaXN0ZXJha2lzCitNYXRoaWV1IFBlcnJlYXVsdAogTWFyayBQZXJyZWdvCiBUcmV2b3IgUGVycmluCiBHYWJyaWVsIGRlIFBlcnRodWlzCkBAIC04MTYsNiArODk5LDcgQEAKIENocmlzIFBldHJpbGxpCiBCam9ybiBQZXR0ZXJzZW4KIEp1c3RpbiBELiBQZXR0aXQKK1Jvbm55IFBmYW5uc2NobWlkdAogR2VvZmYgUGhpbGJyaWNrCiBHYXZyaWUgUGhpbGlwc29uCiBBZHJpYW4gUGhpbGxpcHMKQEAgLTgzMSw2ICs5MTUsNyBAQAogQW50b2luZSBQaXRyb3UKIEplYW4tRnJhbsOnb2lzIFBpw6lyb25uZQogT2xlZyBQbGFraG90bnl1aworUmVtaSBQb2ludGVsCiBHdWlsaGVybWUgUG9sbwogTWljaGFlbCBQb21yYW5pbmcKIEl1c3RpbiBQb3AKQEAgLTgzOSwxMyArOTI0LDE1IEBACiBBbXJpdCBQcmVtCiBQYXVsIFByZXNjb2QKIERvbm92YW4gUHJlc3RvbgorUGF1bCBQcmljZQogSnlya2kgUHVsbGlhaW5lbgogU3RldmUgUHVyY2VsbAotRmVybmFuZG8gUMOpcmV6CiBFZHVhcmRvIFDDqXJlegorRmVybmFuZG8gUMOpcmV6CiBQaWVycmUgUXVlbnRlbAogQnJpYW4gUXVpbmxhbgogQW5kZXJzIFF2aXN0CitKw6lyw7RtZSBSYWRpeAogQnVydG9uIFJhZG9ucwogSmVmZiBSYW1uYW5pCiBCcm9kaWUgUmFvCkBAIC04NjEsMTcgKzk0OCwyMSBAQAogR2FyZXRoIFJlZXMKIFN0ZXZlIFJlZXZlcwogTGVubmFydCBSZWdlYnJvCitKb2huIFJlZ2VocgorRmVkZXJpY28gUmVnaGVuemFuaQogT2ZpciBSZWljaGVuYmVyZwogU2VhbiBSZWlmc2NobmVpZGVyCiBNaWNoYWVsIFAuIFJlaWxseQogQmVybmhhcmQgUmVpdGVyCiBTdGV2ZW4gUmVpegogUm9lbGFuZCBSZW5nZWxpbmsKK0FudG9pbmUgUmV2ZXJzYXQKIEZsw6F2aW8gUmliZWlybwotVGltIFJpY2UKIEZyYW5jZXNjbyBSaWNjaWFyZGkKK1RpbSBSaWNlCiBKYW4gUGlldGVyIFJpZWdlbAogQXJtaW4gUmlnbworQXJjIFJpbGV5CiBOaWNob2xhcyBSaWxleQogSmVhbi1DbGF1ZGUgUmltYmF1bHQKIFZsYWQgUmlzY3V0aWEKQEAgLTg4MSwxNyArOTcyLDIxIEBACiBBbnRob255IFJvYWNoCiBDYXJsIFJvYmJlbgogTWFyayBSb2JlcnRzCi1KaW0gUm9iaW5zb24KIEFuZHkgUm9iaW5zb24KK0ppbSBSb2JpbnNvbgogTWFyayBSb2RkeQogS2V2aW4gUm9kZ2VycwogR2lhbXBhb2xvIFJvZG9sYQorRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCitMdWlzIFJvamFzCiBNaWtlIFJvbWJlcmcKIEFybWluIFJvbmFjaGVyCiBDYXNlIFJvb2xlCiBUaW1vdGh5IFJvc2NvZQorRXJpayBSb3NlCiBKaW0gUm9za2luZAorQnJpYW4gUm9zbmVyCiBHdWlkbyB2YW4gUm9zc3VtCiBKdXN0IHZhbiBSb3NzdW0KIEh1Z28gdmFuIFJvc3N1bQpAQCAtOTA4LDkgKzEwMDMsMTEgQEAKIEplZmYgUnVzaAogU2FtIFJ1c2hpbmcKIE1hcmsgUnVzc2VsbAorUnVzdHkgUnVzc2VsbAogTmljayBSdXNzbwogQ2hyaXMgUnlsYW5kCiBDb25zdGFudGluYSBTLgorUGF0cmljayBTYWJpbgogU8OpYmFzdGllbiBTYWJsw6kKIFN1bWFuIFNhaGEKIEhhamltZSBTYWl0b3UKQEAgLTkxOCw2ICsxMDE1LDcgQEAKIFJpY2ggU2FsegogS2V2aW4gU2FtYm9ybgogQWRyaWFuIFNhbXBzb24KK0phbWVzIFNhbmRlcnMKIElseWEgU2FuZGxlcgogTWFyayBTYXBpcm8KIFR5IFNhcm5hCkBAIC05NDUsMTUgKzEwNDMsMTYgQEAKIFN0ZWZhbiBTY2h3YXJ6ZXIKIERpZXRtYXIgU2Nod2VydGJlcmdlcgogRmVkZXJpY28gU2Nod2luZHQKLVN0ZXZlbiBTY290dAogQmFycnkgU2NvdHQKK1N0ZXZlbiBTY290dAogTmljayBTZWlkZW5tYW4KIMW9aWdhIFNlaWxuYWNodAogWXVyeSBTZWxpdmFub3YKIEZyZWQgU2VsbHMKIEppd29uIFNlbworScOxaWdvIFNlcm5hCiBKb2FraW0gU2VybmJyYW50Ci1Sb2dlciBTZXJ3eQorUm9nZXIgRC4gU2Vyd3kKIEplcnJ5IFNldXR0ZXIKIERlbmlzIFNldmVyc29uCiBJYW4gU2V5ZXIKQEAgLTk3OCwyMCArMTA3NywyNCBAQAogSW9uZWwgU2ltaW9uZXNjdQogS2lyaWxsIFNpbW9ub3YKIE5hdGhhbiBQYXVsIFNpbW9ucworQWRhbSBTaW1wa2lucwogSmFubmUgU2lua2tvbmVuCiBOZyBQaGVuZyBTaW9uZwogR2VvcmdlIFNpcGUKIEouIFNpcHByZWxsCiBLcmFnZW4gU2l0YWtlcgogTWljaGFlbCBTbG9hbgotRXJpYyBWLiBTbWl0aAogQ2hyaXN0b3BoZXIgU21pdGgKK0VyaWMgVi4gU21pdGgKIEdyZWdvcnkgUC4gU21pdGgKK01hcmsgU21pdGgKIFJveSBTbWl0aAogUmFmYWwgU21vdHJ6eWsKK0VyaWMgU25vdwogRGlyayBTb2VkZQogUGF1bCBTb2tvbG92c2t5CiBDb2R5IFNvbWVydmlsbGUKK0Vkb2FyZG8gU3BhZG9saW5pCiBDbGF5IFNwZW5jZQogU3RlZmFuIFNwZXJsaW5nCiBOaWNob2xhcyBTcGllcwpAQCAtMTAwMywxMCArMTEwNiwxMyBAQAogVGFnZSBTdGFiZWxsLUt1bG8KIFF1ZW50aW4gU3RhZmZvcmQtRnJhc2VyCiBGcmFuayBTdGFqYW5vCitKb2VsIFN0YW5sZXkKIEFudGhvbnkgU3RhcmtzCiBPbGl2ZXIgU3RlZWxlCiBHcmVnIFN0ZWluCitCYXJ1Y2ggU3RlcmluCiBDaHJpcyBTdGVybgorQWxleCBTdGV3YXJ0CiBWaWN0b3IgU3Rpbm5lcgogUmljaGFyZCBTdG9ha2xleQogUGV0ZXIgU3RvZWhyCkBAIC0xMDM1LDggKzExNDEsOCBAQAogV2lsbGlhbSBUYW5rc2xleQogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKLU1vbnR5IFRheWxvcgogQW15IFRheWxvcgorTW9udHkgVGF5bG9yCiBBbmF0b2x5IFRlY2h0b25pawogTWlraGFpbCBUZXJla2hvdgogUmljaGFyZCBNLiBUZXcKQEAgLTEwNTQsMTMgKzExNjAsMTcgQEAKIENocmlzdGlhbiBUaXNtZXIKIEppbSBUaXR0c2xlcgogRnJhbmsgSi4gVG9iaW4KLVIgTGluZHNheSBUb2RkCiBCZW5uZXR0IFRvZGQKK1IgTGluZHNheSBUb2RkCitFdWdlbmUgVG9kZXIKIEVyaWsgVG9sbGVydWQKIE1hdGlhcyBUb3JjaGluc2t5CiBTYW5kcm8gVG9zaQogUmljaGFyZCBUb3duc2VuZAorRGF2aWQgVG93bnNoZW5kCiBMYXVyZW5jZSBUcmF0dAorQWxiZXJ0byBUcmV2aW5vCitNYXR0aGlhcyBUcm9mZmFlcwogSm9obiBUcm9tcAogSmFzb24gVHJvd2JyaWRnZQogQW50aG9ueSBUdWluaW5nYQpAQCAtMTA5NSw2ICsxMjA1LDcgQEAKIEthbm5hbiBWaWpheWFuCiBLdXJ0IFZpbGUKIE5vcm1hbiBWaW5lCitQYXVsaSBWaXJ0YW5lbgogRnJhbmsgVmlzc2VyCiBKb2hhbm5lcyBWb2dlbAogTWFydGlqbiBWcmllcwpAQCAtMTEzMywxMCArMTI0NCwxMCBAQAogQnJ5Y2UgIlpvb2tvIiBXaWxjb3gtTydIZWFybgogVGltb3RoeSBXaWxkCiBKYWt1YiBXaWxrCitHZXJhbGQgUy4gV2lsbGlhbXMKIEphc29uIFdpbGxpYW1zCiBKb2huIFdpbGxpYW1zCiBTdWUgV2lsbGlhbXMKLUdlcmFsZCBTLiBXaWxsaWFtcwogU3RldmVuIFdpbGxpcwogRnJhbmsgV2lsbGlzb24KIEdyZWcgVi4gV2lsc29uCkBAIC0xMTU4LDggKzEyNjksOCBAQAogUmljaGFyZCBXb2xmZgogQWRhbSBXb29kYmVjawogU3RldmVuIFdvcmsKLURhcnJlbiBXb3JyYWxsCiBHb3Jkb24gV29ybGV5CitEYXJyZW4gV29ycmFsbAogVGhvbWFzIFdvdXRlcnMKIEhlaWtvIFd1bmRyYW0KIERvdWcgV3lhdHQKQEAgLTExNjgsNiArMTI3OSw3IEBACiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKIEphc29uIFllbworRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQogRGFubnkgWW9vCiBSb3J5IFlvcmtlCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggMTlhNjI3YS4uMzJjODYyYiAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxMCArMiwxMCBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi40Ci09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotKlJlbGVhc2UgZGF0ZTogWFgtWFgtWFhYWCoKKypSZWxlYXNlIGRhdGU6IFhYLVhYWC0yMDEyKgogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEzLDEyMCArMTMsMzYgQEAKIC0gSXNzdWUgIzE1Mzc5OiBGaXggcGFzc2luZyBvZiBub24tQk1QIGNoYXJhY3RlcnMgYXMgaW50ZWdlcnMgZm9yIHRoZSBjaGFybWFwCiAgIGRlY29kZXIgKGFscmVhZHkgd29ya2luZyBhcyB1bmljb2RlIHN0cmluZ3MpLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCi0gIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yCi0gIGNoYWlucyByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lcgotICB0eXBlcy4KKy0gSXNzdWUgIzE1MTQ0OiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGhhbmRsaW5nIHBvaW50ZXJzIGFzCisgIGludGVnZXIgdmFsdWVzLCBieSB1c2luZyBQeV91aW50cHRyX3QgaW5zdGVhZCBvZiBzaXplX3QuICBQYXRjaCBieQorICBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTk2NTogRXhwbGljaXRseSBjYXN0IEFUX0ZEQ1dEIGFzIChpbnQpLiAgUmVxdWlyZWQgb24gU29sYXJpcyAxMAorICAod2hpY2ggZGVmaW5lcyBBVF9GRENXRCBhcyAweGZmZDE5NTUzKSwgaGFybWxlc3Mgb24gb3RoZXIgcGxhdGZvcm1zLgorCistIElzc3VlICMxNTgzOTogQ29udmVydCBTeXN0ZW1FcnJvcnMgaW4gc3VwZXIoKSB0byBSdW50aW1lRXJyb3JzLgogCiAtIElzc3VlICMxNTg0NjogRml4IFN5c3RlbUVycm9yIHdoaWNoIGhhcHBlbmVkIHdoZW4gdXNpbmcgYXN0LnBhcnNlIGluIGFuCiAgIGV4Y2VwdGlvbiBoYW5kbGVyIG9uIGNvZGUgd2l0aCBzeW50YXggZXJyb3JzLgogCi0tIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gUFlUSE9ORVhFQ1VUQUJMRSBpcyBzZXQgb24gTWFjIE9TIFguCi0KIC0gSXNzdWUgIzE1ODAxOiBNYWtlIHN1cmUgbWFwcGluZ3MgcGFzc2VkIHRvICclJyBmb3JtYXR0aW5nIGFyZSBhY3R1YWxseQogICBzdWJzY3JpcHRhYmxlLgogCi0tIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLgotICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCi0KLS0gSXNzdWUgIzE1NjA0OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQotICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTMxMTk6IHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgotICBXaW5kb3dzLCBhcyBQeXRob24gMi4KLQotLSBJc3N1ZSAjMTQ1Nzk6IEZpeCBDVkUtMjAxMi0yMTM1OiB2dWxuZXJhYmlsaXR5IGluIHRoZSB1dGYtMTYgZGVjb2RlciBhZnRlcgotICBlcnJvciBoYW5kbGluZy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDA0OiBSZWZsZWFrIGluIFB5TWV0aG9kT2JqZWN0IHJlcHIuCi0KLS0gSXNzdWUgIzE1Mzk0OiBBbiBpc3N1ZSBpbiBQeU1vZHVsZV9DcmVhdGUgdGhhdCBjYXVzZWQgcmVmZXJlbmNlcyB0bwotICBiZSBsZWFrZWQgb24gc29tZSBlcnJvciBwYXRocyBoYXMgYmVlbiBmaXhlZC4gIFBhdGNoIGJ5IEp1bGlhIExhd2FsbC4KLQotLSBJc3N1ZSAjMTUzNjg6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIGJ5dGVjb2RlIGdlbmVyYXRpb24gdG8gYmUKLSAgbm9uLWRldGVybWluaXN0aWMgd2hlbiB1c2luZyByYW5kb21pemVkIGhhc2hpbmcgKC1SKSBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUwMjA6IFRoZSBwcm9ncmFtIG5hbWUgdXNlZCB0byBzZWFyY2ggZm9yIFB5dGhvbidzIHBhdGggaXMgbm93Ci0gICJweXRob24zIiB1bmRlciBVbml4LCBub3QgInB5dGhvbiIuCi0KLS0gSXNzdWUgIzE1MDMzOiBGaXggdGhlIGV4aXQgc3RhdHVzIGJ1ZyB3aGVuIG1vZHVsZXMgaW52b2tlZCB1c2luZyAtbSBzd2l0aCwKLSAgcmV0dXJuIHRoZSBwcm9wZXIgZmFpbHVyZSByZXR1cm4gdmFsdWUgKDEpLiBQYXRjaCBjb250cmlidXRlZCBieSBKZWZmIEtudXBwLgotCi0tIElzc3VlICMxMjI2ODogRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkKCkgb3IgcmVhZGFsbCgpIG1ldGhvZHMKLSAgbm8gbG9uZ2VyIGxvc2UgZGF0YSB3aGVuIGFuIHVuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZC4KLSAgSU9FcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIGR1ZSB0byBhIHJlYWQgc3lzdGVtIGNhbGwgcmV0dXJuaW5nIEVJTlRSCi0gIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzE1MTQyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgaW5zdGFuY2VzIG9mIHR5cGVzCi0gIGNyZWF0ZWQgdXNpbmcgUHlUeXBlX0Zyb21TcGVjKCkuCi0KLS0gSXNzdWUgIzEwMDUzOiBEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24KLSAgdGhlIHdvcmsgYnkgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzE0Nzc1OiBGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlCi0gIGNvbGxlY3RvciByZXBlYXRlZGx5IHRyeWluZyB0byB1bnRyYWNrIGRpY3RzLgotCi0tIElzc3VlICMxNDQ5NDogRml4IF9fZnV0dXJlX18ucHkgYW5kIGl0cyBkb2N1bWVudGF0aW9uIHRvIG5vdGUgdGhhdAotICBhYnNvbHV0ZSBpbXBvcnRzIGFyZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiAzLjAgaW5zdGVhZCBvZiAyLjcuCi0gIFBhdGNoIGJ5IFN2ZW4gTWFybmFjaC4KLQotLSBJc3N1ZSAjMTQ3NjE6IEZpeCBwb3RlbnRpYWwgbGVhayBvbiBhbiBlcnJvciBjYXNlIGluIHRoZSBpbXBvcnQgbWFjaGluZXJ5LgotCi0tIElzc3VlICMxNDY5OTogRml4IGNhbGxpbmcgdGhlIGNsYXNzbWV0aG9kIGRlc2NyaXB0b3IgZGlyZWN0bHkuCi0KLS0gSXNzdWUgIzE0NDMzOiBQcmV2ZW50IG1zdmNydCBjcmFzaCBpbiBpbnRlcmFjdGl2ZSBwcm9tcHQgd2hlbiBzdGRpbgotICBpcyBjbG9zZWQuCi0KLS0gSXNzdWUgIzExNjAzIChhZ2Fpbik6IFNldHRpbmcgX19yZXByX18gdG8gX19zdHJfXyBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yCi0gIHdoZW4gcmVwcigpIG9yIHN0cigpIGlzIGNhbGxlZCBvbiBzdWNoIGFuIG9iamVjdC4KLQotLSBJc3N1ZSAjMTQ2NTg6IEZpeCBiaW5kaW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gYSBidWlsdGluIGltcGxlbWVudGF0aW9uIG9mIGEKLSAgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIGRpZmZlcmVudCBuYW1lLgotCi0tIElzc3VlICMxNDYzMDogRml4IGEgbWVtb3J5IGFjY2VzcyBidWcgZm9yIGluc3RhbmNlcyBvZiBhIHN1YmNsYXNzIG9mIGludAotICB3aXRoIHZhbHVlIDAuCi0KLS0gSXNzdWUgIzE0NjEyOiBGaXgganVtcGluZyBhcm91bmQgd2l0aCBibG9ja3MgYnkgc2V0dGluZyBmX2xpbmVuby4KLQotLSBJc3N1ZSAjMTQ2MDc6IEZpeCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdoaWNoIHN0YXJ0ZWQgd2l0aCBgYF9fYGAuCi0KLS0gSXNzdWUgIzEzODg5OiBDaGVjayBhbmQgKGlmIG5lY2Vzc2FyeSkgc2V0IEZQVSBjb250cm9sIHdvcmQgYmVmb3JlIGNhbGxpbmcKLSAgYW55IG9mIHRoZSBkdG9hLmMgc3RyaW5nIDwtPiBmbG9hdCBjb252ZXJzaW9uIGZ1bmN0aW9ucywgb24gTVNWQyBidWlsZHMgb2YKLSAgUHl0aG9uLiAgVGhpcyBmaXhlcyBpc3N1ZXMgd2hlbiBlbWJlZGRpbmcgUHl0aG9uIGluIGEgRGVscGhpIGFwcC4KLQotLSBJc3N1ZSAjMTQ0NzQ6IFNhdmUgYW5kIHJlc3RvcmUgZXhjZXB0aW9uIHN0YXRlIGluIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKLSAgd2hpbGUgd3JpdGluZyBlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGEgdW5oYW5kbGVkIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCi0gIGJ5IFN1bWFuIFNhaGEuCi0KLS0gSXNzdWUgIzE0Mzc4OiBGaXggY29tcGlsaW5nIGFzdC5JbXBvcnRGcm9tIG5vZGVzIHdpdGggYSAiX19mdXR1cmVfXyIgc3RyaW5nIGFzCi0gIHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCi0KLS0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKLSAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCi0KLS0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAotICBwYXNzZWQgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTQ2OTYyOTogQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZQotICBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZSBpZiBgYHguX19kaWN0X18gaXMgeGBgKS4KLQotLSBJc3N1ZSAjMTQxNzI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIG1hcnNoYWxsaW5nIGEgYnVmZmVyLWxpa2Ugb2JqZWN0Ci0gIChvdGhlciB0aGFuIGEgYnl0ZXMgb2JqZWN0KS4KLQotLSBJc3N1ZSAjMTM1MjE6IGRpY3Quc2V0ZGVmYXVsdCgpIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwKLSAgbWFraW5nIGl0ICJhdG9taWMiIGZvciBtYW55IHB1cnBvc2VzLiAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjMTQ0NzE6IEZpeCBhIHBvc3NpYmxlIGJ1ZmZlciBvdmVycnVuIGluIHRoZSB3aW5yZWcgbW9kdWxlLgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKKy0gSXNzdWUgIzE2MDM0OiBGaXggcGVyZm9ybWFuY2UgcmVncmVzc2lvbnMgaW4gdGhlIG5ldyBCWjJGaWxlIGltcGxlbWVudGF0aW9uLgorICBJbml0aWFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzE1NzU2OiBzdWJwcm9jZXNzLnBvbGwoKSBub3cgcHJvcGVybHkgaGFuZGxlcyBlcnJuby5FQ0hJTEQgdG8KICAgcmV0dXJuIGEgcmV0dXJuY29kZSBvZiAwIHdoZW4gdGhlIGNoaWxkIGhhcyBhbHJlYWR5IGV4aXRlZCBvciBjYW5ub3QKICAgYmUgd2FpdGVkIG9uLgogCistIElzc3VlICMxNTMyMzogaW1wcm92ZSBmYWlsdXJlIG1lc3NhZ2Ugb2YgTW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aAorCistIElzc3VlICMxNjA2NDogdW5pdHRlc3QgLW0gY2xhaW1zIGV4ZWN1dGFibGUgaXMgInB5dGhvbiIsIG5vdCAicHl0aG9uMyIKKwogLSBJc3N1ZSAjMTIzNzY6IFBhc3Mgb24gcGFyYW1ldGVycyBpbiBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXyBzdXBlciBjYWxsCiAKIC0gSXNzdWUgIzE1MjIyOiBJbnNlcnQgYmxhbmsgbGluZSBhZnRlciBlYWNoIG1lc3NhZ2UgaW4gbWJveCBtYWlsYm94ZXMKQEAgLTEzNCw1NSArNTAsMjY4IEBACiAtIElzc3VlICMxNjAxMzogRml4IENTViBSZWFkZXIgcGFyc2luZyBpc3N1ZSB3aXRoIGVuZGluZyBxdW90ZSBjaGFyYWN0ZXJzLgogICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTQyMTogZml4IGFuIE92ZXJmbG93RXJyb3IgaW4gQ2FsZW5kYXIuaXRlcm1vbnRoZGF0ZXMoKSBhZnRlcgorLSBJc3N1ZSAjMTU0MjE6IEZpeCBhbiBPdmVyZmxvd0Vycm9yIGluIENhbGVuZGFyLml0ZXJtb250aGRhdGVzKCkgYWZ0ZXIKICAgZGF0ZXRpbWUuTUFYWUVBUi4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCiAKIC0gSXNzdWUgIzE1OTcwOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93IHNlcmlhbGl6ZXMgY29ycmVjdGx5IHRoZSBlbXB0eSBIVE1MCiAgIGVsZW1lbnRzICdtZXRhJyBhbmQgJ3BhcmFtJy4KIAotLSBJc3N1ZSAjMTU4NDI6IHRoZSBTb2NrZXRJTy57cmVhZGFibGUsd3JpdGFibGUsc2Vla2FibGV9IG1ldGhvZHMgbm93CistIElzc3VlICMxNTg0MjogVGhlIFNvY2tldElPLntyZWFkYWJsZSx3cml0YWJsZSxzZWVrYWJsZX0gbWV0aG9kcyBub3cKICAgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEFsZXNzYW5kcm8KICAgTW91cmEuCiAKKy0gSXNzdWUgIzE1ODc2OiBGaXggYSByZWZsZWFrIGluIHRoZSBjdXJzZXMgbW9kdWxlOiB3aW5kb3cuZW5jb2RpbmcuCisKIC0gSXNzdWUgIzE1ODgxOiBGaXhlZCBhdGV4aXQgaG9vayBpbiBtdWx0aXByb2Nlc3NpbmcuICBPcmlnaW5hbCBwYXRjaAogICBieSBDaHJpcyBNY0Rvbm91Z2guCiAKLS0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gL2Rldi91cmFuZG9tIGNhbm5vdAotICBiZSBvcGVuZWQuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24gcGF0Y2guCi0KIC0gSXNzdWUgIzE1ODQxOiBUaGUgcmVhZGFibGUoKSwgd3JpdGFibGUoKSBhbmQgc2Vla2FibGUoKSBtZXRob2RzIG9mIEJ5dGVzSU8KICAgYW5kIFN0cmluZ0lPIG9iamVjdHMgbm93IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgb2JqZWN0IGhhcyBiZWVuIGNsb3NlZC4KICAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYS4KIAorLSBJc3N1ZSAjMTU0NDc6IFVzZSBzdWJwcm9jZXNzLkRFVk5VTEwgaW4gd2ViYnJvd3NlciwgaW5zdGVhZCBvZiBvcGVuaW5nCisgIG9zLmRldm51bGwgZXhwbGljaXRseSBhbmQgbGVhdmluZyBpdCBvcGVuLgorCiAtIElzc3VlICMxNTUwOTogd2ViYnJvd3Nlci5Vbml4QnJvd3NlciBubyBsb25nZXIgcGFzc2VzIGVtcHR5IGFyZ3VtZW50cyB0bwogICBQb3BlbiB3aGVuICVhY3Rpb24gc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCiAKLS0gSXNzdWUgIzEyNzc2LCMxMTgzOTogY2FsbCBhcmdwYXJzZSB0eXBlIGZ1bmN0aW9uIChzcGVjaWZpZWQgYnkgYWRkX2FyZ3VtZW50KQorLSBJc3N1ZXMgIzEyNzc2LCAjMTE4Mzk6IGNhbGwgYXJncGFyc2UgdHlwZSBmdW5jdGlvbiAoc3BlY2lmaWVkIGJ5IGFkZF9hcmd1bWVudCkKICAgb25seSBvbmNlLiBCZWZvcmUsIHRoZSB0eXBlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgdHdpY2UgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCi0gIGRlZmF1bHQgd2FzIHNwZWNpZmllZCBhbmQgdGhlIGFyZ3VtZW50IHdhcyBnaXZlbiBhcyB3ZWxsLiAgVGhpcyB3YXMKLSAgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBmb3IgdGhlIEZpbGVUeXBlIHR5cGUsIGFzIGEgZGVmYXVsdCBmaWxlIHdvdWxkIGFsd2F5cwotICBiZSBvcGVuZWQsIGV2ZW4gaWYgYSBmaWxlIGFyZ3VtZW50IHdhcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgZGVmYXVsdCB3YXMgc3BlY2lmaWVkIGFuZCB0aGUgYXJndW1lbnQgd2FzIGdpdmVuIGFzIHdlbGwuICBUaGlzIHdhcyBlc3BlY2lhbGx5CisgIHByb2JsZW1hdGljIGZvciB0aGUgRmlsZVR5cGUgdHlwZSwgYXMgYSBkZWZhdWx0IGZpbGUgd291bGQgYWx3YXlzIGJlIG9wZW5lZCwKKyAgZXZlbiBpZiBhIGZpbGUgYXJndW1lbnQgd2FzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgogCiAtIElzc3VlICMxNTkwNjogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSBjYXVzZWQgYnkgdGhlIHByZWNlZGluZyBjaGFuZ2UsCiAgIHdoZW4gYWN0aW9uPSdhcHBlbmQnLCB0eXBlPSdzdHInIGFuZCBkZWZhdWx0PVtdLgogCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTUzMDQ6IEZpeCB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBvcy5jaGRpcigpIGZhaWxzIGluc2lkZQorICB0ZXN0LnN1cHBvcnQudGVtcF9jd2QoKS4gIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTgwMjogRml4IHRlc3QgbG9naWMgaW4gVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wLiBQYXRjaAorICBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTU1NzogQWRkZWQgYSB0ZXN0IHN1aXRlIGZvciB0aGUgd2ViYnJvd3NlciBtb2R1bGUsIHRoYW5rcworICB0byBBbnRvbiBCYXJrb3Zza3kuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNTkyMzogZml4IGEgbWlzdGFrZSBpbiBhc2RsX2MucHkgdGhhdCByZXN1bHRlZCBpbiBhIFR5cGVFcnJvciBhZnRlcgorICAyODAxYmY4NzVhMjQgKHNlZSAjMTU4MDEpLgorCistIElzc3VlICMxNTgxOTogTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWRvbmx5CisgIHNvdXJjZSBkaXJlY3RvcnkuICAoU29tZXdoYXQgcmVsYXRlZCB0byBJc3N1ZSAjOTg2MC4pCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1MzM6IENsYXJpZnkgZG9jcyBhbmQgYWRkIHRlc3RzIGZvciBzdWJwcm9jZXNzLlBvcGVuKCkncyBjd2QKKyAgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE2MDM2OiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgYnVpbHQtaW4gaW50KCkncyBzaWduYXR1cmUgYW5kCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTU5MzU6IENsYXJpZmljYXRpb24gb2YgYXJncGFyc2UgZG9jcywgcmU6IGFkZF9hcmd1bWVudCgpIHR5cGUgYW5kCisgIGRlZmF1bHQgYXJndW1lbnRzLiAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzExOTY0OiBEb2N1bWVudCBhIGNoYW5nZSBpbiB2My4yIHRvIHRoZSBiZWhhdmlvciBvZiB0aGUgaW5kZW50CisgIHBhcmFtZXRlciBvZiBqc29uIGVuY29kaW5nIG9wZXJhdGlvbnMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjktU2VwLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KKworLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBfX3RydW5jX18gcmV0dXJucyBhbiBvYmplY3QKKyAgd2hvc2UgX19pbnRfXyBnaXZlcyBhIG5vbi1pbnRlZ2VyLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKKyAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjMtU2VwLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTkwMDogRml4IHJlZmVyZW5jZSBsZWFrIGluIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKCkuCisKKy0gSXNzdWUgIzE1OTI2OiBGaXggY3Jhc2ggYWZ0ZXIgbXVsdGlwbGUgcmVpbml0aWFsaXphdGlvbnMgb2YgdGhlIGludGVycHJldGVyLgorCistIElzc3VlICMxNTg5NTogRml4IEZJTEUgcG9pbnRlciBsZWFrIGluIG9uZSBlcnJvciBicmFuY2ggb2YKKyAgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoKSB3aGVuIGZpbGVuYW1lIHBvaW50cyB0byBhIHB5Yy9weW8gZmlsZSwgY2xvc2VpdAorICBpcyBmYWxzZSBhbiBhbmQgc2V0X21haW5fbG9hZGVyKCkgZmFpbHMuCisKKy0gRml4ZXMgZm9yIGEgZmV3IGNyYXNoIGFuZCBtZW1vcnkgbGVhayByZWdyZXNzaW9ucyBmb3VuZCBieSBDb3Zlcml0eS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNTg4MjogQ2hhbmdlIF9kZWNpbWFsIHRvIGFjY2VwdCBhbnkgY29lZmZpY2llbnQgdHVwbGUgd2hlbgorICBjb25zdHJ1Y3RpbmcgaW5maW5pdGllcy4gVGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorICB3aXRoIGRlY2ltYWwucHk6IEluZmluaXR5IGNvZWZmaWNpZW50cyBhcmUgdW5kZWZpbmVkIGluIF9kZWNpbWFsCisgIChpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHNwZWNpZmljYXRpb24pLgorCistIElzc3VlICMxNTkyNTogRml4IGEgcmVncmVzc2lvbiBpbiBlbWFpbC51dGlsIHdoZXJlIHRoZSBwYXJzZWRhdGUoKSBhbmQKKyAgcGFyc2VkYXRlX3R6KCkgZnVuY3Rpb25zIGRpZCBub3QgcmV0dXJuIE5vbmUgYW55bW9yZSB3aGVuIHRoZSBhcmd1bWVudCBjb3VsZAorICBub3QgYmUgcGFyc2VkLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU5NzM6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGNvbXBhcmluZyBkYXRldGltZSB0aW1lem9uZQorICBvYmplY3RzLgorCistIElzc3VlICMxNTk3NzogRml4IG1lbW9yeSBsZWFrIGluIE1vZHVsZXMvX3NzbC5jIHdoZW4gdGhlIGZ1bmN0aW9uCisgIF9zZXRfbnBuX3Byb3RvY29scygpIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgdGhhbmtzIHRvIERhbmllbCBTb21tZXJtYW5uLgorCistIElzc3VlICMxNTk2OTogZmF1bHRoYW5kbGVyIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCisgIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KKworLSBfZGVjaW1hbCBtb2R1bGU6IHVzZSBvbmx5IEMgODkgc3R5bGUgY29tbWVudHMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA5LVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCisgIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yCisgIGNoYWlucyByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lcgorICB0eXBlcy4KKworLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBPU0Vycm9yLl9fc3RyX18oKSB0byBiZXR0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbgorICBlcnJubyBlcnJvciBudW1iZXJzIGFuZCBXaW5kb3dzIGVycm9yIG51bWJlcnMuCisKKy0gSXNzdWUgIzE1NzgxOiBGaXggdHdvIHNtYWxsIHJhY2UgY29uZGl0aW9ucyBpbiBpbXBvcnQncyBtb2R1bGUgbG9ja2luZy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNTg0NzogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSwgd2hpY2ggZGlkIG5vdCBhY2NlcHQgdHVwbGVzCisgIGFzIGFyZ3VtZW50IGxpc3RzIGFueW1vcmUuCisKKy0gSXNzdWUgIzE1ODI4OiBSZXN0b3JlIHN1cHBvcnQgZm9yIEMgZXh0ZW5zaW9ucyBpbiBpbXAubG9hZF9tb2R1bGUoKS4KKworLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiAvZGV2L3VyYW5kb20gY2Fubm90CisgIGJlIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KKworLSBJc3N1ZSAjMTA2NTA6IERlcHJlY2F0ZSB0aGUgd2F0Y2hleHAgcGFyYW1ldGVyIG9mIHRoZSBEZWNpbWFsLnF1YW50aXplKCkKKyAgbWV0aG9kLgorCistIElzc3VlICMxNTc4NTogTW9kaWZ5IHdpbmRvdy5nZXRfd2NoKCkgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4KKyAgYSBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZgorICBhbHdheXMgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsCisgIGtleXMgbGlrZSBrZXlwYWQga2V5cy4KKworLSBJc3N1ZSAjMTQyMjM6IEZpeCB3aW5kb3cuYWRkY2goKSBvZiB0aGUgY3Vyc2VzIG1vZHVsZSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzCisgIGxpa2UgY3Vyc2VzLkFDU19ITElORTogdGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChpbnQpIGFuZCBhZGRjaChieXRlcykgaXMgbm93CisgIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZGNoKCkvbXZ3YWRkY2goKSAoYXMgaXQgd2FzIGRvbmUgaW4gUHl0aG9uIDMuMiksCisgIGluc3RlYWQgb2Ygd2FkZF93Y2goKS9tdndhZGRfd2NoKCkuIFRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goc3RyKSBpcyBzdGlsbAorICBjYWxsaW5nIHRoZSBDIGZ1bmN0aW9uIHdhZGRfd2NoKCkvbXZ3YWRkX3djaCgpIGlmIHRoZSBQeXRob24gY3Vyc2VzIGlzIGxpbmtlZAorICB0byBsaWJuY3Vyc2Vzdy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE1ODIyOiBSZWFsbHkgZW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQKKyAgKHJlcGxhY2VzIGZpeGVzIGZvciBJc3N1ZSAjMTU2NDUpLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1ODE0OiBUaGUgbWVtb3J5dmlldyBlbmhhbmNlbWVudHMgaW4gMy4zLjAgYWNjaWRlbnRhbGx5IHBlcm1pdHRlZAorICB0aGUgaGFzaGluZyBvZiBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnZpZXdzIGFuZCBtZW1vcnl2aWV3cyB3aXRoIG11bHRpLWJ5dGUKKyAgaXRlbSBmb3JtYXRzLiBUaGUgaW50ZW5kZWQgcmVzdHJpY3Rpb25zIGhhdmUgbm93IGJlZW4gZG9jdW1lbnRlZCAtIHRoZXkKKyAgd2lsbCBiZSBjb3JyZWN0bHkgZW5mb3JjZWQgaW4gMy4zLjEKKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjUtQXVnLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKKyAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCisKKy0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBfX2ltcG9ydF9fIGRvZXNuJ3QgZXhpc3QsCisgIGRvbid0IHJhaXNlIGFuIGVycm9yLCBidXQgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhcyBwYXJ0IG9mIGFuIGltcG9ydCBkbworICBsZXQgdGhhdCBwcm9wYWdhdGUuCisKKy0gSXNzdWUgIzE1Nzc4OiBlbnN1cmUgdGhhdCBzdHIoSW1wb3J0RXJyb3IobXNnKSkgcmV0dXJucyBhIHN0cgorICBldmVuIHdoZW4gbXNnIGlzbid0IGEgc3RyLgorCistIElzc3VlICMyMDUxOiBTb3VyY2UgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIG9uY2UgYWdhaW4gY29ycmVjdGx5CisgIGNvcGllZCB0byB0aGUgY2FjaGVkIGJ5dGVjb2RlIGZpbGUuIChUaGUgbWlncmF0aW9uIHRvIGltcG9ydGxpYgorICByZWludHJvZHVjZWQgdGhpcyBwcm9ibGVtIGJlY2F1c2UgdGhlc2Ugd2FzIG5vIHJlZ3Jlc3Npb24gdGVzdC4gQSB0ZXN0CisgIGhhcyBiZWVuIGFkZGVkIGFzIHBhcnQgb2YgdGhpcyBwYXRjaCkKKworLSBJc3N1ZSAjMTU3NjE6IEZpeCBjcmFzaCB3aGVuIFBZVEhPTkVYRUNVVEFCTEUgaXMgc2V0IG9uIE1hYyBPUyBYLgorCistIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE1NjA0OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQorICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ4NDY6IGltcG9ydGxpYi5GaWxlRmluZGVyIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZQorICBkaXJlY3RvcnkgYmVpbmcgc2VhcmNoZWQgaXMgcmVtb3ZlZCBhZnRlciBhIHByZXZpb3VzIGltcG9ydCBhdHRlbXB0CisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcwogICBjb21waWxlZCB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIKIAorLSBJc3N1ZSAjMTMwNzI6IFRoZSBhcnJheSBtb2R1bGUncyAndScgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kCisgIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gNC4wLgorCiAtIElzc3VlICMxNTU0NDogRml4IERlY2ltYWwuX19mbG9hdF9fIHRvIHdvcmsgd2l0aCBwYXlsb2FkLWNhcnJ5aW5nIE5hTnMuCiAKKy0gSXNzdWUgIzE1Nzc2OiBBbGxvdyBweXZlbnYgdG8gd29yayBpbiBleGlzdGluZyBkaXJlY3Rvcnkgd2l0aCAtLWNsZWFuLgorCiAtIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KICAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgogCiAtIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgogCistIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgZW1haWwudXRpbHMubG9jYWx0aW1lIHRvIHVzZSBkYXRldGltZS5hc3RpbWV6b25lIGFuZAorICBjb3JyZWN0bHkgaGFuZGxlIGhpc3RvcmljIGNoYW5nZXMgaW4gVVRDIG9mZnNldHMuCisKIC0gSXNzdWUgIzE1MTk5OiBGaXggSmF2YVNjcmlwdCdzIGRlZmF1bHQgTUlNRSB0eXBlIHRvIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQuCiAgIFBhdGNoIGJ5IEJvaHVzbGF2IEthYnJkYS4KIAotLSBJc3N1ZSAjMTM1Nzk6IHN0cmluZy5Gb3JtYXR0ZXIgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCistIElzc3VlICMxMjY0MzogY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGUgbm93IHJlc3BlY3RzIHN5cy5leGNlcHRob29rIHdoZW4KKyAgZGlzcGxheWluZyBleGNlcHRpb25zIChQYXRjaCBieSBBYXJvbiBJbGVzKQogCi0tIElzc3VlICMxNTc5MzogU3RhY2sgY29ycnVwdGlvbiBpbiBzc2wuUkFORF9lZ2QoKS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzEzNTc5OiBzdHJpbmcuRm9ybWF0dGVyIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgogCiAtIElzc3VlICMxNTU5NTogRml4IHN1YnByb2Nlc3MuUG9wZW4odW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgIGZvciBjZXJ0YWluIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgpAQCAtMTkwLDIwICszMTksNDk4IEBACiAtIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQogICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgogCistIElzc3VlICMxNTcxNTogaW1wb3J0bGliLl9faW1wb3J0X18oKSB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUgdXNlCisgIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KKworLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWNPU1gKKyAgYnkgc2VuZGluZy9yZWNlaXZpbmcgYW4gYWNrbm93bGVkZ21lbnQgYWZ0ZXIgZmlsZSBkZXNjcmlwdG9yIHRyYW5zZmVyLgorICBUZXN0UGlja2xpbmdDb25uZWN0aW9uIGhhcyBiZWVuIHJlZW5hYmxlZCBmb3IgTWFjT1NYLgorCiAtIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCiAKIC0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZwogICBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyB3aXRob3V0IHRoZSAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIKICAgaWRpb20uCiAKLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLgotICBQYXRjaCBieSBMdWR3aWcgSMOkaG5lLgorLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lCisgICgzLjMuMGIyIHJlZ3Jlc3Npb24pLgorCitDIEFQSQorLS0tLS0KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBqc29uIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCisgIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KKworLSBDcmVhdGUgYSAnQ29uY3VycmVudCBFeGVjdXRpb24nIHNlY3Rpb24gaW4gdGhlIGRvY3MsIGFuZCBzcGxpdCB1cCB0aGUKKyAgJ09wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMnIHNlY3Rpb24gdG8gdXNlIGEgbW9yZSB1c2VyLWNlbnRyaWMKKyAgY2xhc3NpZmljYXRpb24gc2NoZW1lIChzcGxpdHRpbmcgdGhlbSBhY3Jvc3MgdGhlIG5ldyBDRSBzZWN0aW9uLCBJUEMgYW5kCisgIHRleHQgcHJvY2Vzc2luZykuIE9wZXJhdGluZyBzeXN0ZW0gbGltaXRhdG9ucyBjYW4gYmUgcmVmbGVjdGVkIHdpdGgKKyAgdGhlIFNwaGlueCA6cGxhdGZvcm06IHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mCisgIENvbnRlbnRzLgorCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uCisgIGFuZCB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4KKworLSBUaGUgInBhdGggaW1wb3J0ZXIiIG1pc25vbWVyIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggRXJpYyBTbm93J3MKKyAgbW9yZS1hd2t3YXJkLWJ1dC1hdC1sZWFzdC1ub3Qtd3Jvbmcgc3VnZ2VzdGlvbiBvZiAicGF0aCBiYXNlZCBmaW5kZXIiIGluCisgIHRoZSBpbXBvcnQgc3lzdGVtIHJlZmVyZW5jZSBkb2NzCisKKy0gSXNzdWUgIzE1NjQwOiBEb2N1bWVudCBpbXBvcnRsaWIuYWJjLkZpbmRlciBhcyBkZXByZWNhdGVkLgorCistIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5CisgIERhbmllbCBFbGxpcy4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQorICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKKyAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgorCistIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcKKyAgdHdvIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUKKyAgb2YgdGVzdC4KKworLSBJc3N1ZSAjMTU3NDM6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2QgdXNhZ2UgaW4gdXJsbGliIHRlc3RzLiBQYXRjaCBieQorICBKZWZmIEtudXBwLgorCistIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQKKyAgaW5wdXQgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKK0J1aWxkCistLS0tLQorCistIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCisKKy0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCisKKy0gRHJvcCBQQ1xweXRob25fbnQuaCBhcyBpdCdzIG5vdCB1c2VkLiBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KKyAgYnVpbGQgc3RlcC4KKworLSBJc3N1ZSAjMTU1MTE6IERyb3AgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBweXRob254eS5saWIgZnJvbSBfZGVjaW1hbAorICBhbWQ2NCBjb25maWd1cmF0aW9uLgorCistIEFkZCBtaXNzaW5nIFBHSS9QR08gY29uZmlndXJhdGlvbnMgZm9yIHB5d2xhdW5jaGVyLgorCistIElzc3VlICMxNTY0NTogRW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQmV0YSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxMi1BdWctMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiAieWllbGQgZnJvbSIgd2hlbiBTdG9wSXRlcmF0aW9uIGlzCisgIHJhaXNlZCBieSBhIGN1c3RvbSBpdGVyYXRvci4KKworLSBJc3N1ZSAjMTMxMTk6IHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgorICBXaW5kb3dzLCBhcyBQeXRob24gMi4KKworLSBJc3N1ZSAjMTU1MzQ6IEZpeCB0aGUgZmFzdC1zZWFyY2ggZnVuY3Rpb24gZm9yIG5vbi1BU0NJSSBVbmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgX19pbXBvcnRfXyB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAorICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90CisgIHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZworICBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KKworLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKKyAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCisKKy0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCisgICJCYXNlRXhjZXB0aW9uLl9fbmV3X18iIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTI4MzQ6IEZpeCBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKSBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgorCistIElzc3VlICMxNTQ1NjogRml4IGNvZGUgX19zaXplb2ZfXyBhZnRlciAjMTIzOTkgY2hhbmdlLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KKworLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIFB5TW9kdWxlX0NyZWF0ZSB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlIGxlYWtlZAorICBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgorCistIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYworICBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCisgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgorCistIElzc3VlICMxNTMxNDogX19tYWluX18uX19sb2FkZXJfXyBpcyBub3cgc2V0IGNvcnJlY3RseSBkdXJpbmcgaW50ZXJwcmV0ZXIKKyAgc3RhcnR1cC4KKworLSBJc3N1ZSAjMTUxMTE6IFdoZW4gYSBtb2R1bGUgaW1wb3J0ZWQgdXNpbmcgJ2Zyb20gaW1wb3J0JyBoYXMgYW4gSW1wb3J0RXJyb3IKKyAgaW5zaWRlIGl0c2VsZiwgZG9uJ3QgbWFzayB0aGF0IGZhY3QgYmVoaW5kIGEgZ2VuZXJpYyBJbXBvcnRFcnJvciBmb3IgdGhlCisgIG1vZHVsZSBpdHNlbGYuCisKKy0gSXNzdWUgIzE1MjkzOiBBZGQgR0Mgc3VwcG9ydCB0byB0aGUgQVNUIGJhc2Ugbm9kZSB0eXBlLgorCistIElzc3VlICMxNTI5MTogRml4IGEgbWVtb3J5IGxlYWsgd2hlcmUgQVNUIG5vZGVzIHdoZXJlIG5vdCBwcm9wZXJseQorICBkZWFsbG9jYXRlZC4KKworLSBJc3N1ZSAjMTUxMTA6IEZpeCB0aGUgdHJhY2ViYWNrcyBnZW5lcmF0ZWQgYnkgImltcG9ydCB4eHgiIHRvIG5vdCBzaG93IHRoZQorICBpbXBvcnRsaWIgc3RhY2sgZnJhbWVzLgorCistIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKKyAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KKworLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRoLAorICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1MjI5OiBBbiBPU0Vycm9yIHN1YmNsYXNzIHdob3NlIF9faW5pdF9fIGRvZXNuJ3QgY2FsbCBiYWNrCisgIE9TRXJyb3IuX19pbml0X18gY291bGQgcHJvZHVjZSBpbmNvbXBsZXRlIGluc3RhbmNlcywgbGVhZGluZyB0byBjcmFzaGVzIHdoZW4KKyAgY2FsbGluZyBzdHIoKSBvbiB0aGVtLgorCistIElzc3VlIDE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgorICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQorICBMdWR3aWcgSMOkaG5lLgorCistIElzc3VlICMxNTU3NjogQWxsb3cgZXh0ZW5zaW9uIG1vZHVsZXMgdG8gYWN0IGFzIGEgcGFja2FnZSdzIF9faW5pdF9fIG1vZHVsZS4KKworLSBJc3N1ZSAjMTU1MDI6IEhhdmUgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkgd29yayBvbiBzeXMubWV0YV9wYXRoIGluc3RlYWQKKyAgb2Ygc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisKKy0gSXNzdWUgIzE1MTYzOiBQeWRvYyBzaG91bGRuJ3QgbGlzdCBfX2xvYWRlcl9fIGFzIG1vZHVsZSBkYXRhLgorCistIElzc3VlICMxNTQ3MTogRG8gbm90IHVzZSBtdXRhYmxlIG9iamVjdHMgYXMgZGVmYXVsdHMgZm9yCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkuCisKKy0gSXNzdWUgIzE1NTU5OiBUbyBhdm9pZCBhIHByb2JsZW1hdGljIGZhaWx1cmUgbW9kZSB3aGVuIHBhc3NlZCB0byB0aGUgYnl0ZXMKKyAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBfX2luZGV4X18KKyAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IF9faW50X18gYXMgYXBwcm9wcmlhdGUpCisKKy0gSXNzdWUgIzE1NTQ2OiBGaXggaGFuZGxpbmcgb2YgcGF0aG9sb2dpY2FsIGlucHV0IGRhdGEgaW4gdGhlIHBlZWsoKSBhbmQKKyAgcmVhZDEoKSBtZXRob2RzIG9mIHRoZSBCWjJGaWxlLCBHemlwRmlsZSBhbmQgTFpNQUZpbGUgY2xhc3Nlcy4KIAogLSBJc3N1ZSAjMTMwNTI6IEZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nCiAgIGVuZGVkIHdpdGggJ1wnLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAotLSBJc3N1ZSAjMTU1Mzg6IEZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkKLSAgZW11bGF0aW9uIGNvZGUuICBQYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgorLSBJc3N1ZSAjMTI2NTU6IEluc3RlYWQgb2YgcmVxdWlyaW5nIGEgY3VzdG9tIHR5cGUsIG9zLnNjaGVkX2dldGFmZmluaXR5IGFuZAorICBvcy5zY2hlZF9zZXRhZmZpbml0eSBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlIENQVXMgYQorICBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCisKKy0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGdldG5hbWVpbmZvKCkgLyBnZXRhZGRyaW5mbygpIGVtdWxhdGlvbgorICBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKworLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQorICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorCistIElzc3VlICMxNTUwMjogQnJpbmcgdGhlIGltcG9ydGxpYiBBQkNzIGludG8gbGluZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZQorICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKworLSBJc3N1ZSAjMTU0OTk6IExhdW5jaGluZyBhIHdlYmJyb3dzZXIgaW4gVW5peCB1c2VkIHRvIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzLgorICBPcmlnaW5hbCBwYXRjaCBieSBBbnRvbiBCYXJrb3Zza3kuCisKKy0gSXNzdWUgIzE1NDYzOiBUaGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0cnVuY2F0ZXMgc3RyaW5ncyB0byA1MDAgY2hhcmFjdGVycywKKyAgaW5zdGVhZCBvZiAxMDAsIHRvIGJlIGFibGUgdG8gZGlzcGxheSBsb25nIGZpbGUgcGF0aHMuCisKKy0gSXNzdWUgIzYwNTY6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUgc29ja2V0cyBpdAorICB1c2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCisKKy0gSXNzdWUgIzE1MzY0OiBGaXggc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgorCistIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1NDEzOiBvcy50aW1lcygpIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgc3lzLmdldHNpemVvZiB0bworICByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdHMgZm9yIHN0cnVjdC5TdHJ1Y3QgaW5zdGFuY2VzIGhhcyBiZWVuIGZpeGVkLiAgSW5pdGlhbAorICBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTIzMjogV2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzCisgIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yIGVwaWxvZ3VlLgorCistIElzc3VlICMxNTA5NDogSW5jb3JyZWN0bHkgcGxhY2VkICNlbmRpZiBpbiBfdGtpbnRlci5jLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5MjI6IGFyZ3BhcnNlIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKKyAgdGhlIGZpcnN0IG9uZS4KKworLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKworLSBJc3N1ZSAjMTAwMTcsIGlzc3VlICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKKyAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KKworLSBJc3N1ZSAjMTUzOTc6IGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhIGEKKyAgbmV3IGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzKCkgQVBJLgorCistIElzc3VlICMxNDYzNTogdGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvCisgIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCisKKy0gSXNzdWUgIzE1MTgwOiBDbGFyaWZ5IHBvc2l4cGF0aC5qb2luKCkgZXJyb3IgbWVzc2FnZSB3aGVuIG1peGluZyBzdHIgJiBieXRlcy4KKworLSBJc3N1ZSAjMTUzNDM6IHBrZ3V0aWwgbm93IGluY2x1ZGVzIGFuIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyBpbXBsZW1lbnRhdGlvbiBmb3IKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyIChzaW1pbGFyIHRvIHRoZSB3YXkgaXQgYWxyZWFkeSBoYW5kbGVkCisgIHppcGltcG9ydC56aXBpbXBvcnRlcikuCisKKy0gSXNzdWUgIzE1MzE0OiBydW5weSBub3cgc2V0cyBfX21haW5fXy5fX2xvYWRlcl9fIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjMTUzNTc6IFRoZSBpbXBvcnQgZW11bGF0aW9uIGluIHBrZ3V0aWwgaXMgbm93IGRlcHJlY2F0ZWQuIHBrZ3V0aWwgdXNlcworICBpbXBvcnRsaWIgaW50ZXJuYWxseSByYXRoZXIgdGhhbiB0aGUgZW11bGF0aW9uLgorCistIElzc3VlICMxNTIzMzogUHl0aG9uIG5vdyBndWFyYW50ZWVzIHRoYXQgY2FsbGFibGVzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYXRleGl0CisgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCisKKy0gSXNzdWUgIzE1MjM4OiBzaHV0aWwuY29weXN0YXQgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCisKKy0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkIGluCisgIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNTMxNTogU3VwcG9ydCBWUyAyMDEwIGluIGRpc3R1dGlscyBjeWd3aW5jb21waWxlci4KKworLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCisgIG5hbWVzcGFjZSBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMTUwNTY6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpIGFuZCBzb3VyY2VfZnJvbV9jYWNoZSgpIHJhaXNlCisgIE5vdEltcGxlbWVudGVkRXJyb3Igd2hlbiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIHNldCB0byBOb25lLgorCistIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGltcC5maW5kX21vZHVsZSgpLgorCistIElzc3VlICM1OTMxOiB3c2dpcmVmIGVudmlyb24gdmFyaWFibGUgU0VSVkVSX1NPRlRXQVJFIHdpbGwgc3BlY2lmeSBhbgorICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UgQ1B5dGhvbiwgSnl0aG9uIGluc3RlYWQgb2YgZ2VuZXJpYyAiUHl0aG9uIi4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAibWF4X2J1ZmZlcl9zaXplIiBvZiBCdWZmZXJlZFdyaXRlciBhbmQKKyAgQnVmZmVyZWRSV1BhaXIsIGZyb20gdGhlIGlvIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYXJncGFyc2UuQXJndW1lbnRQYXJzZXIuCisKKy0gSXNzdWUgIzE0ODE0OiBJbXBsZW1lbnQgbW9yZSBjb25zaXN0ZW50IG9yZGVyaW5nIGFuZCBzb3J0aW5nIGJlaGF2aW91ciBmb3IKKyAgaXBhZGRyZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0ODE0OiBpcGFkZHJlc3MgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgorICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgorCistIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgorCistIElzc3VlICMxNDgxNDogaXBhZGRyZXNzIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KKyAgY29uc3RydWN0aW5nIGluc3RhbmNlcyBkaXJlY3RseSAoY2hhbmdlcyBwZXJtaXR0ZWQgZHVyaW5nIGJldGEgZHVlIHRvCisgIHByb3Zpc2lvbmFsIEFQSSBzdGF0dXMpLgorCistIElzc3VlICMxNTI0NzogRmlsZUlPIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvciBwb2ludGluZworICB0byBhIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTUyNjE6IFN0b3Agb3Muc3RhdChmZCkgY3Jhc2hpbmcgb24gV2luZG93cyB3aGVuIGZkIG5vdCBvcGVuLgorCistIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGltcC5nZXRfdGFnKCkgdXNpbmcgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZy4KKworLSBJc3N1ZSAjMTUyMTA6IENhdGNoIEtleUVycm9yIHdoZW4gaW1wb3J0bGliLl9faW5pdF9fIGNhbid0IGZpbmQKKyAgX2Zyb3plbl9pbXBvcnRsaWIgaW4gc3lzLm1vZHVsZXMsIG5vdCBJbXBvcnRFcnJvci4KKworLSBJc3N1ZSAjMTUwMzA6IGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXIgbm93IHN1cHBvcnRzIHRoZSBuZXcgc291cmNlIHNpemUKKyAgaGVhZGVyIGZpZWxkIGluIC5weWMgZmlsZXMuCisKKy0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3ggZmlsZXMgb24KKyAgZmx1c2goKS4KKworLSBJc3N1ZSAjMTA1NzE6IEZpeCB0aGUgIi0tc2lnbiIgb3B0aW9uIG9mIGRpc3R1dGlscycgdXBsb2FkIGNvbW1hbmQuICBQYXRjaCBieQorICBKYWt1YiBXaWxrLgorCistIElzc3VlICM5NTU5OiBJZiBtZXNzYWdlcyB3ZXJlIG9ubHkgYWRkZWQsIGEgbmV3IGZpbGUgaXMgbm8gbG9uZ2VyIGNyZWF0ZWQgYW5kCisgIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbiBtYm94LCBNTURGIG9yIEJhYnlsCisgIG1haWxib3guCisKKy0gSXNzdWUgMTA5MjQ6IEZpeGVkIGNyeXB0Lm1rc2FsdCgpIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgorICBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKy0gSXNzdWUgIzE1MTg0OiBFbnN1cmUgY29uc2lzdGVudCByZXN1bHRzIG9mIE9TIFggY29uZmlndXJhdGlvbiB0YWlsb3JpbmcgZm9yCisgIHVuaXZlcnNhbCBidWlsZHMgYnkgZmFjdG9yaW5nIG91dCBjb21tb24gT1MgWC1zcGVjaWZpYyBjdXN0b21pemF0aW9ucyBmcm9tCisgIHN5c2NvbmZpZywgZGlzdHV0aWxzLnN5c2NvbmZpZywgZGlzdHV0aWxzLnV0aWwsIGFuZCBkaXN0dXRpbHMudW5peGNjb21waWxlcgorICBpbnRvIGEgbmV3IG1vZHVsZSBfb3N4X3N1cHBvcnQuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMxNTYxMDogUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKSBub3cgdXNlcyBhICdsZXZlbCcgb2YgMCBpbnN0ZWFkIG9mIC0xLgorCistIElzc3VlcyAjMTUxNjksICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCisgIGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCisgIHVzZWQgdGhlIFB5dGhvbiBjb2RlIGluc3RlYWQuIExlYWRzIHRvIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkgdG8gbm90CisgIHRyeSB0byBpbmZlciB0aGUgc291cmNlIHBhdGggZnJvbSB0aGUgYnl0ZWNvZGUgcGF0aCBhcworICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBkb2VzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcworICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNTE5NDogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjExIHJlbGVhc2UuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ1ODogcHl0aG9uLWNvbmZpZyBnZXRzIGEgbmV3IG9wdGlvbiAtLWNvbmZpZ2RpciB0byBwcmludCB0aGUgJExJQlBMCisgIHZhbHVlLgorCistIE1vdmUgaW1wb3J0bGliLnRlc3QuYmVuY2htYXJrIHRvIFRvb2xzL2ltcG9ydGJlbmNoLgorCistIElzc3VlICMxMjYwNTogVGhlIGdkYiBob29rcyBmb3IgZGVidWdnaW5nIENQeXRob24gKHdpdGhpbiBUb29scy9nZGIpIGhhdmUgYmVlbgorICBlbmhhbmNlZCB0byBzaG93IGluZm9ybWF0aW9uIG9uIG1vcmUgQyBmcmFtZXMgcmVsZXZhbnQgdG8gQ1B5dGhvbiB3aXRoaW4gdGhlCisgICJweS1idCIgYW5kICJweS1idC1mdWxsIiBjb21tYW5kczoKKworICAqIEMgZnJhbWVzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIEdJTAorICAqIEMgZnJhbWVzIHRoYXQgYXJlIGdhcmJhZ2UtY29sbGVjdGluZworICAqIEMgZnJhbWVzIHRoYXQgYXJlIGR1ZSB0byB0aGUgaW52b2NhdGlvbiBvZiBhIFB5Q0Z1bmN0aW9uCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoCisgIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1Mjk1OiBSZW9yZ2FuaXplIGFuZCByZXdyaXRlIHRoZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBpbXBvcnQgc3lzdGVtLgorCistIElzc3VlICMxNTIzMDogQ2xlYXJseSBkb2N1bWVudCBzb21lIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgcnVucHkgbW9kdWxlIGFuZAorICBudWRnZSByZWFkZXJzIHRvd2FyZHMgaW1wb3J0bGliIHdoZW4gYXBwcm9wcmlhdGUuCisKKy0gSXNzdWUgIzE1MDUzOiBDb3B5IFB5dGhvbiAzLjMgaW1wb3J0IGxvY2sgY2hhbmdlIG5vdGljZSB0byBhbGwgcmVsZXZhbnQKKyAgZnVuY3Rpb25zIGluIGltcCBpbnN0ZWFkIG9mIGp1c3QgYXQgdGhlIHRvcCBvZiB0aGUgcmVsZXZhbnQgc2VjdGlvbi4KKworLSBJc3N1ZSAjMTUyODg6IExpbmsgdG8gdGhlIHRlcm0gImxvYWRlciIgaW4gbm90ZXMgaW4gcGtndXRpbCBhYm91dCBob3cgdGhpbmdzCisgIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQgaW4gUHl0aG9uIDMuMyBhbmQgbWFyayB0aGUgcmVxdWlzaXRlIGZ1bmN0aW9ucyBhcworICAiY2hhbmdlZCIgc2luY2UgdGhleSB3aWxsIG5vIGxvbmdlciB3b3JrIHdpdGggbW9kdWxlcyBkaXJlY3RseSBpbXBvcnRlZCBieQorICBpbXBvcnQgaXRzZWxmLgorCistIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBleGVjIG9yCisgIGV4ZWNmaWxlKCkuCisKKy0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGZpbGVjbXAuZGlyY21wIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKKyAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBfX3NpemVvZl9fIHRlc3RzIGludG8gdGVzdF9zdXBwb3J0LiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZyB0ZXN0cworICBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1MTY4OiBNb3ZlIGltcG9ydGxpYi50ZXN0IHRvIHRlc3QudGVzdF9pbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE1MDkxOiBSZWFjdGl2YXRlIGEgdGVzdCBvbiBVTklYIHdoaWNoIHdhcyBmYWlsaW5nIHRoYW5rcyB0byBhCisgIGZvcmdvdHRlbiBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSBjYWxsLgorCistIElzc3VlICMxNTIzMDogQWRvcHRlZCBhIG1vcmUgc3lzdGVtYXRpYyBhcHByb2FjaCBpbiB0aGUgcnVucHkgdGVzdHMuCisKKy0gSXNzdWUgIzE1MzAwOiBFbnN1cmUgdGhlIHRlbXBvcmFyeSB0ZXN0IHdvcmtpbmcgZGlyZWN0b3JpZXMgYXJlIGluIHRoZSBzYW1lCisgIHBhcmVudCBmb2xkZXIgd2hlbiBydW5uaW5nIHRlc3RzIGluIG11bHRpcHJvY2VzcyBtb2RlIGZyb20gYSBQeXRob24gYnVpbGQuCisgIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTI4NDogU2tpcCB7c2VuZCxyZWN2fW1zZyB0ZXN0cyBpbiB0ZXN0X3NvY2tldCB3aGVuIElQdjYgaXMgbm90CisgIGVuYWJsZWQuIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBJc3N1ZSAjMTUyNzc6IEZpeCBhIHJlc291cmNlIGxlYWsgaW4gc3VwcG9ydC5weSB3aGVuIElQdjYgaXMgZGlzYWJsZWQuICBQYXRjaAorICBieSBCcmlhbiBCcmF6aWwuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMTcxNTogRml4IG11bHRpYXJjaCBkZXRlY3Rpb24gd2l0aG91dCBoYXZpbmcgRGViaWFuIGRldmVsb3BtZW50IHRvb2xzCisgIChkcGtnLWRldikgaW5zdGFsbGVkLgorCistIElzc3VlICMxNTAzNzogQnVpbGQgT1MgWCBpbnN0YWxsZXJzIHdpdGggbG9jYWwgY29weSBvZiBuY3Vyc2VzIDUuOSBsaWJyYXJpZXMKKyAgdG8gYXZvaWQgY3Vyc2VzLnVuZ2V0X3djaCBidWcgcHJlc2VudCBpbiBvbGRlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzIHN1Y2ggYXMKKyAgdGhvc2Ugc2hpcHBlZCB3aXRoIE9TIFguCisKKy0gSXNzdWUgIzE1NTYwOiBGaXggYnVpbGRpbmcgX3NxbGl0ZTMgZXh0ZW5zaW9uIG9uIE9TIFggd2l0aCBhbiBTREsuICBBbHNvLCBmb3IKKyAgT1MgWCBpbnN0YWxsZXJzLCBlbnN1cmUgY29uc2lzdGVudCBzcWxpdGUzIGJlaGF2aW9yIGFuZCBmZWF0dXJlIGF2YWlsYWJpbGl0eQorICBieSBidWlsZGluZyBhIGxvY2FsIGNvcHkgb2YgbGlic3FsaXRlMyByYXRoZXIgdGhhbiBkZXBlbmRpbmcgb24gdGhlIHdpZGUgcmFuZ2UKKyAgb2YgdmVyc2lvbnMgc3VwcGxpZWQgd2l0aCB2YXJpb3VzIE9TIFggcmVsZWFzZXMuCisKKy0gSXNzdWUgIzg4NDc6IERpc2FibGUgQ09NREFUIGZvbGRpbmcgaW4gV2luZG93cyBQR08gYnVpbGRzLgorCistIElzc3VlICMxNDAxODogRml4IE9TIFggVGNsL1RrIGZyYW1ld29yayBjaGVja2luZyB3aGVuIHVzaW5nIE9TIFggU0RLcy4KKworLSBJc3N1ZSAjMTU0MzE6IEFkZCBfZnJlZXplX2ltcG9ydGxpYiBwcm9qZWN0IHRvIHJlZ2VuZXJhdGUgaW1wb3J0bGliLmggb24KKyAgV2luZG93cy4gUGF0Y2ggYnkgS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uLgorCistIElzc3VlICMxNDE5NzogRm9yIE9TIFggZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlIGxpbmtzIHRvIHRoZSBzaGFyZWQgbGlicmFyeQorICBhcmUgY3JlYXRlZCB3aXRoIHRoZSBwcm9wZXIgQUJJIHN1ZmZpeC4KKworLSBJc3N1ZSAjMTQzMzA6IEZvciBjcm9zcyBidWlsZHMsIGRvbid0IHVzZSBob3N0IHB5dGhvbiwgdXNlIGhvc3Qgc2VhcmNoIHBhdGhzCisgIGZvciBob3N0IGNvbXBpbGVyLgorCistIElzc3VlICMxNTIzNTogQWxsb3cgQmVya2xleSBEQiB2ZXJzaW9ucyB1cCB0byA1LjMgdG8gYnVpbGQgdGhlIGRibSBtb2R1bGUuCisKKy0gSXNzdWUgIzE1MjY4OiBTZWFyY2ggY3Vyc2VzLmggaW4gL3Vzci9pbmNsdWRlL25jdXJzZXN3LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEJldGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjctSnVuLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIEZpeCBhIChtb3N0IGxpa2VseSkgdmVyeSByYXJlIG1lbW9yeSBsZWFrIHdoZW4gY2FsbGluZyBtYWluKCkgYW5kIG5vdCBiZWluZworICBhYmxlIHRvIGRlY29kZSBhIGNvbW1hbmQtbGluZSBhcmd1bWVudC4KKworLSBJc3N1ZSAjMTQ4MTU6IFVzZSBQeV9zc2l6ZV90IGluc3RlYWQgb2YgbG9uZyBmb3IgdGhlIG9iamVjdCBoYXNoLCB0bworICBwcmVzZXJ2ZSBhbGwgNjQgYml0cyBvZiBoYXNoIG9uIFdpbjY0LgorCistIElzc3VlICMxMjI2ODogRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkKCkgb3IgcmVhZGFsbCgpIG1ldGhvZHMKKyAgbm8gbG9uZ2VyIGxvc2UgZGF0YSB3aGVuIGFuIHVuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZC4KKyAgSU9FcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIGR1ZSB0byBhIHJlYWQgc3lzdGVtIGNhbGwgcmV0dXJuaW5nIEVJTlRSCisgIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCisKKy0gSXNzdWUgIzExNjI2OiBBZGQgX1NpemVUIGZ1bmN0aW9ucyB0byBzdGFibGUgQUJJLgorCistIElzc3VlICMxNTE0NjogQWRkIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcworICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgorCistIElzc3VlICMxNTA0MjogQWRkIFB5U3RhdGVfQWRkTW9kdWxlIGFuZCBQeVN0YXRlX1JlbW92ZU1vZHVsZS4gQWRkIHZlcnNpb24KKyAgZ3VhcmQgZm9yIFB5X0xJTUlURURfQVBJIGFkZGl0aW9ucy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCisgIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgorCistIElzc3VlICMxNTA5NjogUmVtb3ZlZCBzdXBwb3J0IGZvciB1cicnIGFzIHRoZSByYXcgbm90YXRpb24gaXNuJ3QKKyAgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLngncyByYXcgdW5pY29kZSBzdHJpbmdzLgorCistIElzc3VlICMxMzc4MzogR2VuZXJhdG9yIG9iamVjdHMgbm93IHVzZSB0aGUgaWRlbnRpZmllciBBUElzIGludGVybmFsbHkKKworLSBJc3N1ZSAjMTQ4NzQ6IFJlc3RvcmUgY2hhcm1hcCBkZWNvZGluZyBzcGVlZCB0byBwcmUtUEVQIDM5MyBsZXZlbHMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MDI2OiB1dGYtMTYgZW5jb2RpbmcgaXMgbm93IHNpZ25pZmljYW50bHkgZmFzdGVyICh1cCB0byAxMHgpLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxMTAyMjogb3BlbigpIGFuZCBpby5UZXh0SU9XcmFwcGVyIGFyZSBub3cgY2FsbGluZworICBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGluc3RlYWQgb2YgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKKyAgaW4gdGV4dCBtb2RlIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBEb24ndCBjaGFuZ2UgdGVtcG9yYXJ5IHRoZQorICBsb2NhbGUgZW5jb2RpbmcgdXNpbmcgbG9jYWxlLnNldGxvY2FsZSgpLCB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nCisgIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgorCistIElzc3VlICMxNDY3MzogQWRkIEVyaWMgU25vdydzIHN5cy5pbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTUwMzg6IE9wdGltaXplIHB5dGhvbiBMb2NrcyBvbiBXaW5kb3dzLgorCitMaWJyYXJ5CistLS0tLS0tCiAKIC0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KICAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCkBAIC0yMjMsNjMgKzgzMCwxNTAgQEAKIC0gSXNzdWUgIzE1NDg3OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjNjA1NjogTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZQotICBzb2NrZXRzIGl0IHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KKy0gSXNzdWUgIzE1NTE0OiBDb3JyZWN0IF9fc2l6ZW9mX18gc3VwcG9ydCBmb3IgY3B1X3NldC4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTUwNDE6IHVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZworICBiZWhpbmQuCiAKLS0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBzeXMuZ2V0c2l6ZW9mIHRvCi0gIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuCi0gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzE1MTc3OiBBZGRlZCBkaXJfZmQgcGFyYW1ldGVyIHRvIG9zLmZ3YWxrKCkuCiAKLS0gSXNzdWUgIzE1MjMyOiB3aGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGVtYWlsLkdlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMKLSAgbGluZXMgdGhhdCBzdGFydCB3aXRoICdGcm9tICcgdGhhdCBvY2N1ciBpbiBhIE1JTUUgcHJlYW1ibGUgb3IgZXBpbG9ndWUuCistIElzc3VlICMxNTE3NjogQ2xhcmlmaWVkIGJlaGF2aW9yLCBkb2N1bWVudGF0aW9uLCBhbmQgaW1wbGVtZW50YXRpb24KKyAgb2Ygb3MubGlzdGRpcigpLgogCi0tIElzc3VlICMxMzkyMjogYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhcgotICBhZnRlciB0aGUgZmlyc3Qgb25lLgorLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgorICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKKyAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KIAotLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKy0gSXNzdWUgIzE1MTY0OiBDaGFuZ2UgcmV0dXJuIHZhbHVlIG9mIHBsYXRmb3JtLnVuYW1lKCkgZnJvbSBhCisgIHBsYWluIHR1cGxlIHRvIGEgY29sbGVjdGlvbnMubmFtZWR0dXBsZS4KIAotLSBJc3N1ZXMgIzEwMDE3IGFuZCAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCi0gIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCistIFN1cHBvcnQgTWFnZWlhIExpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCiAKLS0gSXNzdWUgIzE0NjM1OiB0ZWxuZXRsaWIgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUKLSAgdG8gYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KKy0gSXNzdWUgIzExNjc4OiBTdXBwb3J0IEFyY2ggbGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzCistIElzc3VlICMxNTExODogQ2hhbmdlIHJldHVybiB2YWx1ZSBvZiBvcy51bmFtZSgpIGFuZCBvcy50aW1lcygpIGZyb20KKyAgcGxhaW4gdHVwbGVzIHRvIGltbXV0YWJsZSBpdGVyYWJsZSBvYmplY3RzIHdpdGggbmFtZWQgYXR0cmlidXRlcworICAoc3RydWN0c2VxIG9iamVjdHMpLgogCi0tIElzc3VlICMxNTIzMDogcnVucHkucnVuX3BhdGggbm93IGNvcnJlY3RseSBzZXRzIF9fcGFja2FnZV9fIGFzIGRlc2NyaWJlZAotICBpbiB0aGUgZG9jdW1lbnRhdGlvbgorLSBTcGVlZCB1cCBfZGVjaW1hbCBieSBhbm90aGVyIDEwLTE1JSBieSBjYWNoaW5nIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICB0aGF0IHdhcyBsYXN0IGFjY2Vzc2VkLiBJbiB0aGUgcGkgYmVuY2htYXJrICg2NC1iaXQgcGxhdGZvcm0sIHByZWM9OSksCisgIF9kZWNpbWFsIGlzIG5vdyBvbmx5IDEuNXggc2xvd2VyIHRoYW4gZmxvYXQuCiAKLS0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcKLSAgZGVjbGFyYXRpb24uCistIFJlbW92ZSB0aGUgcGFja2FnaW5nIG1vZHVsZSwgd2hpY2ggaXMgbm90IHJlYWR5IGZvciBwcmltZSB0aW1lLgogCi0tIElzc3VlICMxNTI0NzogRmlsZUlPIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgotICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KKy0gSXNzdWUgIzE1MTU0OiBBZGQgImRpcl9mZCIgcGFyYW1ldGVyIHRvIG9zLnJtZGlyLCByZW1vdmUgInJtZGlyIgorICBwYXJhbWV0ZXIgZnJvbSBvcy5yZW1vdmUgLyBvcy51bmxpbmsuCiAKLS0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3gKLSAgZmlsZXMgb24gZmx1c2goKS4KKy0gSXNzdWUgIzQ0ODk6IEFkZCBhIHNodXRpbC5ybXRyZWUgdGhhdCBpc24ndCBzdXNjZXB0aWJsZSB0byBzeW1saW5rIGF0dGFja3MuCisgIEl0IGlzIHVzZWQgYXV0b21hdGljYWxseSBvbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IG9zLm9wZW5hdCgpCisgIGFuZCBvcy51bmxpbmthdCgpIGZ1bmN0aW9ucy4gTWFpbiBjb2RlIGJ5IE1hcnRpbiB2b24gTMO2d2lzLgogCi0tIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4KLSAgUGF0Y2ggYnkgSmFrdWIgV2lsay4KKy0gSXNzdWUgIzE1MTU2OiBIVE1MUGFyc2VyIG5vdyB1c2VzIHRoZSBuZXcgImh0bWwuZW50aXRpZXMuaHRtbDUiIGRpY3Rpb25hcnkuCiAKLS0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIKLSAgY3JlYXRlZCBhbmQgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuCi0gIG1ib3gsIE1NREYgb3IgQmFieWwgbWFpbGJveC4KKy0gSXNzdWUgIzExMTEzOiBhZGQgYSBuZXcgImh0bWw1IiBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG5hbWVkIGNoYXJhY3RlcgorICByZWZlcmVuY2VzIGRlZmluZWQgYnkgdGhlIEhUTUw1IHN0YW5kYXJkIGFuZCB0aGUgZXF1aXZhbGVudCBVbmljb2RlCisgIGNoYXJhY3RlcihzKSB0byB0aGUgaHRtbC5lbnRpdGllcyBtb2R1bGUuCisKKy0gSXNzdWUgIzE1MTE0OiB0aGUgc3RyaWN0IG1vZGUgb2YgSFRNTFBhcnNlciBhbmQgdGhlIEhUTUxQYXJzZUVycm9yIGV4Y2VwdGlvbgorICBhcmUgZGVwcmVjYXRlZCBub3cgdGhhdCB0aGUgcGFyc2VyIGlzIGFibGUgdG8gcGFyc2UgaW52YWxpZCBtYXJrdXAuCisKKy0gSXNzdWUgIzM2NjU6IFx1IGFuZCBcVSBlc2NhcGVzIGFyZSBub3cgc3VwcG9ydGVkIGluIHVuaWNvZGUgcmVndWxhcgorICBleHByZXNzaW9ucy4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MTUzOiBBZGRlZCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyB0byBzaW1wbGlmeSB3aGl0ZSBib3gKKyAgdGVzdGluZyBvZiBnZW5lcmF0b3Igc3RhdGUgdXBkYXRlcworCistIElzc3VlICMxMzA2MjogQWRkZWQgaW5zcGVjdC5nZXRjbG9zdXJldmFycyB0byBzaW1wbGlmeSB0ZXN0aW5nIHN0YXRlZnVsCisgIGNsb3N1cmVzCisKKy0gSXNzdWUgIzExMDI0OiBGaXhlcyBhbmQgYWRkaXRpb25hbCB0ZXN0cyBmb3IgVGltZTJJbnRlcm5hbGRhdGUuCisKKy0gSXNzdWUgIzE0NjI2OiBMYXJnZSByZWZhY3RvcmluZyBvZiBmdW5jdGlvbnMgLyBwYXJhbWV0ZXJzIGluIHRoZSBvcyBtb2R1bGUuCisgIE1hbnkgZnVuY3Rpb25zIG5vdyBzdXBwb3J0ICJkaXJfZmQiIGFuZCAiZm9sbG93X3N5bWxpbmtzIiBwYXJhbWV0ZXJzOworICBzb21lIGFsc28gc3VwcG9ydCBhY2NlcHRpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgaW4gcGxhY2Ugb2Ygb2YgYSBwYXRoCisgIHN0cmluZy4gIEFkZGVkIG9zLnN1cHBvcnRfKiBjb2xsZWN0aW9ucyBhcyBMQllMIGhlbHBlcnMuICBSZW1vdmVkIG1hbnkKKyAgZnVuY3Rpb25zIG9ubHkgcHJldmlvdXNseSBzZWVuIGluIDMuMyBhbHBoYSByZWxlYXNlcyAob2Z0ZW4gc3RhcnRpbmcgd2l0aAorICAiZiIgb3IgImwiLCBvciBlbmRpbmcgd2l0aCAiYXQiKS4gIE9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFNlcmhpeSBTdG9yY2hha2E7CisgIGltcGxlbWVudGVkIGJ5IExhcnJ5IEhhc3RpbmdzLgorCistIElzc3VlICMxNTAwODogSW1wbGVtZW50IFBFUCAzNjIgIlNpZ25hdHVyZSBPYmplY3RzIi4KKyAgUGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWU6ICMxNTEzODogYmFzZTY0LnVybHNhZmVfe2VuLGRlfWNvZGUoKSBhcmUgbm93IDMtNHggZmFzdGVyLgorCistIElzc3VlICM0NDQ1ODI6IEFkZCBzaHV0aWwud2hpY2gsIGZvciBmaW5kaW5nIHByb2dyYW1zIG9uIHRoZSBzeXN0ZW0gcGF0aC4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBEZW1haW5lLCB3aXRoIGxhdGVyIGl0ZXJhdGlvbnMgYnkgSmFuIEtpbGxpYW4KKyAgYW5kIEJyaWFuIEN1cnRpbi4KKworLSBJc3N1ZSAjMTQ4Mzc6IFNTTCBlcnJvcnMgbm93IGhhdmUgYGBsaWJyYXJ5YGAgYW5kIGBgcmVhc29uYGAgYXR0cmlidXRlcworICBkZXNjcmliaW5nIHByZWNpc2VseSB3aGF0IGhhcHBlbmVkIGFuZCBpbiB3aGljaCBPcGVuU1NMIHN1Ym1vZHVsZS4gIFRoZQorICBzdHIoKSBvZiBhIFNTTEVycm9yIGlzIGFsc28gZW5oYW5jZWQgYWNjb3JkaW5nbHkuCisKKy0gSXNzdWUgIzk1Mjc6IGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2Qgd2lsbCBub3cgc3VwcGx5IGEgY2xhc3MKKyAgdGltZXpvbmUgaW5zdGFuY2UgY29ycmVzcG9uZGluZyB0byB0aGUgc3lzdGVtIGxvY2FsIHRpbWV6b25lIHdoZW4KKyAgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLgogCiAtIElzc3VlICMxNDY1MzogZW1haWwudXRpbHMubWt0aW1lX3R6KCkgbm8gbG9uZ2VyIHJlbGllcyBvbiBzeXN0ZW0KICAgbWt0aW1lKCkgd2hlbiB0aW1lem9uZSBvZmZlc3QgaXMgc3VwcGxpZWQuCiAKKy0gSXNzdWUgIzE0Njg0OiB6bGliLmNvbXByZXNzb2JqKCkgYW5kIHpsaWIuZGVjb21wcmVzc29iaigpIG5vdyBzdXBwb3J0IHRoZSB1c2UKKyAgb2YgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJpZXMuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbSBSdXNoaW5nLgorCiAtIEZpeCBHemlwRmlsZSdzIGhhbmRsaW5nIG9mIGZpbGVuYW1lcyBnaXZlbiBhcyBieXRlcyBvYmplY3RzLgogCistIElzc3VlICMxNDc3MjogUmV0dXJuIGRlc3RpbmF0aW9uIHZhbHVlcyBmcm9tIHNvbWUgc2h1dGlsIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMTUwNjQ6IEltcGxlbWVudCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIG11bHRpcHJvY2Vzc2luZyB0eXBlcworCiAtIElzc3VlICMxNTEwMTogTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgogCistIElzc3VlICMxNDY1NzogVGhlIGZyb3plbiBpbnN0YW5jZSBvZiBpbXBvcnRsaWIgdXNlZCBmb3IgYm9vdHN0cmFwIGlzIG5vdworICBhbHNvIHRoZSBtb2R1bGUgaW1wb3J0ZWQgYXMgaW1wb3J0bGliLl9ib290c3RyYXAuCisKKy0gSXNzdWUgIzE0MDU1OiBBZGQgX19zaXplb2ZfXyBzdXBwb3J0IHRvIF9lbGVtZW50dHJlZS4KKworLSBJc3N1ZSAjMTUwNTQ6IEEgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscworICB3aXRoICdiJyBwcmVmaXhlcyB0byBiZSBpbmNvcnJlY3RseSB0b2tlbml6ZWQgaGFzIGJlZW4gZml4ZWQuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MDA2OiBBbGxvdyBlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlCisgIHRpbWUgb3IgZGF0ZXRpbWUgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKKyAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKKyAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCisKIC0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCiAgIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCiAgIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KIAotLSBJc3N1ZSAjMTAxMzM6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGRlYWxsb2NhdGUgYnVmZmVyIGlmIHNvY2tldCByZWFkCi0gIGZhaWxzLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KKy0gSXNzdWUgIzE0MDU5OiBJbXBsZW1lbnQgbXVsdGlwcm9jZXNzaW5nLkJhcnJpZXIuCisKKy0gSXNzdWUgIzE1MDYxOiBUaGUgaW5hcHByb3ByaWF0ZWx5IG5hbWVkIGhtYWMuc2VjdXJlX2NvbXBhcmUgaGFzIGJlZW4KKyAgcmVuYW1lZCB0byBobWFjLmNvbXBhcmVfZGlnZXN0LCByZXN0cmljdGVkIHRvIG9wZXJhdGluZyBvbiBieXRlcyBpbnB1dHMKKyAgb25seSBhbmQgaGFkIGl0cyBkb2N1bWVudGF0aW9uIHVwZGF0ZWQgdG8gbW9yZSBhY2N1cmF0ZWx5IHJlZmxlY3QgYm90aCBpdHMKKyAgaW50ZW50IGFuZCBpdHMgbGltaXRhdGlvbnMKKworLSBJc3N1ZSAjMTM4NDE6IE1ha2UgY2hpbGQgcHJvY2Vzc2VzIGV4aXQgdXNpbmcgc3lzLmV4aXQoKSBvbiBXaW5kb3dzLgorCistIElzc3VlICMxNDkzNjogY3Vyc2VzX3BhbmVsIHdhcyBjb252ZXJ0ZWQgdG8gUEVQIDMxMjEgYW5kIFBFUCAzODQgQVBJLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE2Njc1NDY6IE9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRtX3pvbmUgYW5kIHRtX2dtdG9mZiBmaWVsZHMKKyAgaW4gc3RydWN0IHRtLCB0aW1lLnN0cnVjdF90aW1lIG9iamVjdHMgcmV0dXJuZWQgYnkgdGltZS5nbXRpbWUoKSwKKyAgdGltZS5sb2NhbHRpbWUoKSBhbmQgdGltZS5zdHJwdGltZSgpIGZ1bmN0aW9ucyBub3cgaGF2ZSB0bV96b25lIGFuZAorICB0bV9nbXRvZmYgYXR0cmlidXRlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFBhdWwgQm9kZGllLgorCistIFJlbmFtZSBhZGp1c3RlZCBhdHRyaWJ1dGUgdG8gYWRqdXN0YWJsZSBpbiB0aW1lLmdldF9jbG9ja19pbmZvKCkgcmVzdWx0LgorCistIElzc3VlICMzNTE4OiBSZW1vdmUgcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgQmFzZU1hbmFnZXIuZnJvbV9hZGRyZXNzKCkKKyAgbWV0aG9kLgorCistIElzc3VlICMxMzg1NzogQWRkZWQgdGV4dHdyYXAuaW5kZW50KCkgZnVuY3Rpb24gKGluaXRpYWwgcGF0Y2ggYnkgRXpyYQorICBCZXJjaCkKKworLSBJc3N1ZSAjMjczNjogQWRkZWQgZGF0ZXRpbWUudGltZXN0YW1wKCkgbWV0aG9kLgogCiAtIElzc3VlICMxMzg1NDogTWFrZSBtdWx0aXByb2Nlc3NpbmcgcHJvcGVybHkgaGFuZGxlIG5vbi1pbnRlZ2VyCiAgIG5vbi1zdHJpbmcgYXJndW1lbnQgdG8gU3lzdGVtRXhpdC4KQEAgLTI4NywxNCArOTgxLDE3MSBAQAogLSBJc3N1ZSAjMTIxNTc6IE1ha2UgcG9vbC5tYXAoKSBlbXB0eSBpdGVyYWJsZXMgY29ycmVjdGx5LiAgSW5pdGlhbAogICBwYXRjaCBieSBtb3VhZC4KIAorLSBJc3N1ZSAjMTE4MjM6IGRpc2Fzc2VtYmx5IG5vdyBzaG93cyBhcmd1bWVudCBjb3VudHMgb24gY2FsbHMgd2l0aCBrZXl3b3JkIGFyZ3MuCisKKy0gSXNzdWUgIzE0NzExOiBvcy5zdGF0X2Zsb2F0X3RpbWVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworLSBMWk1BRmlsZSBub3cgYWNjZXB0cyB0aGUgbW9kZXMgInJiIi8id2IiLyJhYiIgYXMgc3lub255bXMgb2YgInIiLyJ3Ii8iYSIuCisKKy0gVGhlIGJ6MiBhbmQgbHptYSBtb2R1bGVzIG5vdyBlYWNoIGNvbnRhaW4gYW4gb3BlbigpIGZ1bmN0aW9uLCBhbGxvd2luZworICBjb21wcmVzc2VkIGZpbGVzIHRvIHJlYWRpbHkgYmUgb3BlbmVkIGluIHRleHQgbW9kZSBhcyB3ZWxsIGFzIGJpbmFyeSBtb2RlLgorCistIEJaMkZpbGUuX19pbml0X18oKSBhbmQgTFpNQUZpbGUuX19pbml0X18oKSBub3cgYWNjZXB0IGEgZmlsZSBvYmplY3QgYXMgdGhlaXIKKyAgZmlyc3QgYXJndW1lbnQsIHJhdGhlciB0aGFuIHJlcXVpcmluZyBhIHNlcGFyYXRlICJmaWxlb2JqIiBhcmd1bWVudC4KKworLSBnemlwLm9wZW4oKSBub3cgYWNjZXB0cyBmaWxlIG9iamVjdHMgYXMgd2VsbCBhcyBmaWxlbmFtZXMuCisKIC0gSXNzdWUgIzE0OTkyOiBvcy5tYWtlZGlycyhwYXRoLCBleGlzdF9vaz1UcnVlKSB3b3VsZCByYWlzZSBhbiBPU0Vycm9yCiAgIHdoZW4gdGhlIHBhdGggZXhpc3RlZCBhbmQgaGFkIHRoZSBTX0lTR0lEIG1vZGUgYml0IHNldCB3aGVuIGl0IHdhcwogICBub3QgZXhwbGljaXRseSBhc2tlZCBmb3IuICBUaGlzIGlzIG5vIGxvbmdlciBhbiBleGNlcHRpb24gYXMgbWtkaXIKICAgY2Fubm90IGNvbnRyb2wgaWYgdGhlIE9TIHNldHMgdGhhdCBiaXQgZm9yIGl0IG9yIG5vdC4KIAorLSBJc3N1ZSAjMTQ5ODk6IE1ha2UgdGhlIENHSSBlbmFibGUgb3B0aW9uIHRvIGh0dHAuc2VydmVyIGF2YWlsYWJsZSB2aWEgY29tbWFuZAorICBsaW5lLgorCistIElzc3VlICMxNDk4NzogQWRkIGEgbWlzc2luZyBpbXBvcnQgc3RhdGVtZW50IHRvIGluc3BlY3QuCisKKy0gSXNzdWUgIzEwNzk6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vdyBjb3JyZWN0bHkgcGFyc2VzIGFsbCB0aGUgZXhhbXBsZXMKKyAgaW4gUkZDMjA0Ny4gIFRoZXJlIGlzIGEgbmVjZXNzYXJ5IHZpc2libGUgYmVoYXZpb3IgY2hhbmdlOiB0aGUgbGVhZGluZyBhbmQvb3IKKyAgdHJhaWxpbmcgd2hpdGVzcGFjZSBvbiBBU0NJSSBwYXJ0cyBpcyBub3cgcHJlc2VydmVkLgorCistIElzc3VlICMxNDk2OTogQmV0dGVyIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbiBjaGFpbmluZyBpbiBjb250ZXh0bGliLkV4aXRTdGFjaworCiAtIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKICAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCistIElzc3VlICMxNDk2MzogQ29udmVydCBjb250ZXh0bGliLkV4aXRTdGFjay5fX2V4aXRfXyB0byB1c2UgYW4gaXRlcmF0aXZlCisgIGFsZ29yaXRobSAoUGF0Y2ggYnkgQWxvbiBIb3JldikKKworLSBJc3N1ZSAjMTQ3ODU6IEFkZCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSB0byBoZWxwIGRlYnVnIGxvdy1sZXZlbCBtZW1vcnkKKyAgYWxsb2NhdGlvbiBpc3N1ZXMKKworLSBJc3N1ZSAjMTQ0NDM6IEVuc3VyZSB0aGF0IC5weSBmaWxlcyBhcmUgYnl0ZS1jb21waWxlZCB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbgorICBleGVjdXRhYmxlIHdpdGhpbiBiZGlzdF9ycG0gZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBSUE0KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzEzNzgzOiBJbmFkdmVydGVudCBhZGRpdGlvbnMgdG8gdGhlIHB1YmxpYyBDIEFQSSBpbiB0aGUgUEVQIDM4MAorICBpbXBsZW1lbnRhdGlvbiBoYXZlIGVpdGhlciBiZWVuIHJlbW92ZWQgb3IgbWFya2VkIGFzIHByaXZhdGUgaW50ZXJmYWNlcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1MDAwOiBTdXBwb3J0IHRoZSAidW5pcXVlIiB4MzIgYXJjaGl0ZWN0dXJlIGluIF9wb3NpeHN1YnByb2Nlc3MuYy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTA4MTogRG9jdW1lbnQgUHlTdGF0ZV9GaW5kTW9kdWxlLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE0ODE0OiBBZGRlZCBmaXJzdCBkcmFmdCBvZiBpcGFkZHJlc3MgbW9kdWxlIEFQSSByZWZlcmVuY2UKKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE0NzY5OiB0ZXN0X2NhcGkgbm93IGhhcyBTa2lwaXRlbVRlc3QsIHdoaWNoIGNsZXZlcmx5IGNoZWNrcworICBmb3IgInBhcml0eSIgYmV0d2VlbiBQeUFyZ19QYXJzZVR1cGxlKCkgYW5kIHRoZSBQeXRob24vZ2V0YXJncy5jIHN0YXRpYworICBmdW5jdGlvbiBza2lwaXRlbSgpIGZvciBhbGwgcG9zc2libGUgImZvcm1hdCB1bml0cyIuCisKKy0gdGVzdF9ubnRwbGliIG5vdyB0b2xlcmF0ZXMgYmVpbmcgcnVuIGZyb20gYmVoaW5kIE5OVFAgZ2F0ZXdheXMgdGhhdCBhZGQKKyAgIlgtQW50aXZpcnVzIiBoZWFkZXJzIHRvIGFydGljbGVzCisKKy0gSXNzdWUgIzE1MDQzOiB0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MKKyAgYmxvY2sgbG9hZGluZyBvZiB0aGUgZ2RiIGhvb2tzCisKKy0gSXNzdWUgIzE0OTYzOiBBZGQgdGVzdCBjYXNlcyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIGJlaGF2aW91cgorICBpbiBjb250ZXh0bGliLkV4aXRTdGFjayAoSW5pdGlhbCBwYXRjaCBieSBBbG9uIEhvcmV2KQorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTM1OTA6IEltcHJvdmUgc3VwcG9ydCBmb3IgT1MgWCBYY29kZSA0OgorICAgICogVHJ5IHRvIGF2b2lkIGJ1aWxkaW5nIFB5dGhvbiBvciBleHRlbnNpb24gbW9kdWxlcyB3aXRoIHByb2JsZW1hdGljCisgICAgICBsbHZtLWdjYyBjb21waWxlci4KKyAgICAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93CisgICAgICBjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHBwYyBhbmQKKyAgICAgIHBwYzY0IGFyY2hzIHdoZW4gbm90IGF2YWlsYWJsZS4KKyAgICAqIFNpbmNlIFhjb2RlIDQgbm8gbG9uZ2VyIGluc3RhbGwgU0RLcyBpbiBkZWZhdWx0IGxvY2F0aW9ucywKKyAgICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcgaW5zdGFsbGVkIGhlYWRlcnMKKyAgICAgIGFuZCBsaWJzIGlmIHRoZSBTREsgdXNlZCB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90CisgICAgICBhdmFpbGFibGUuCisgICAgKiBVcGRhdGUgLi9jb25maWd1cmUgdG8gdXNlIGJldHRlciBkZWZhdWx0cyBmb3IgdW5pdmVyc2FsIGJ1aWxkczsKKyAgICAgIGluIHBhcnRpY3VsYXIsIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz15ZXMgdXNlcyB0aGUgWGNvZGUgZGVmYXVsdAorICAgICAgU0RLIGFuZCAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIG5vdyBkZWZhdWx0cyB0byAiaW50ZWwiIGlmIHBwYworICAgICAgbm90IGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTQyMjU6IEZpeCBVbmljb2RlIHN1cHBvcnQgZm9yIGN1cnNlcyAoIzEyNTY3KSBvbiBPUyBYCisKKy0gSXNzdWUgIzE0OTI4OiBGaXggaW1wb3J0bGliIGJvb3RzdHJhcCBpc3N1ZXMgYnkgdXNpbmcgYSBjdXN0b20gZXhlY3V0YWJsZQorICAoTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYikgdG8gYnVpbGQgUHl0aG9uL2ltcG9ydGxpYi5oLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAzMS1NYXktMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0ODM1OiBNYWtlIHBsaXN0bGliIG91dHB1dCBlbXB0eSBhcnJheXMgJiBkaWN0cyBsaWtlIE9TIFguCisgIFBhdGNoIGJ5IFNpZG5leSBTYW4gTWFydMOtbi4KKworLSBJc3N1ZSAjMTQ3NDQ6IFVzZSB0aGUgbmV3IF9QeVVuaWNvZGVXcml0ZXIgaW50ZXJuYWwgQVBJIHRvIHNwZWVkIHVwCisgIHN0ciVhcmdzIGFuZCBzdHIuZm9ybWF0KGFyZ3MpLgorCistIElzc3VlICMxNDkzMDogTWFrZSBtZW1vcnl2aWV3IG9iamVjdHMgd2Vha3JlZmFibGUuCisKKy0gSXNzdWUgIzE0Nzc1OiBGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlCisgIGNvbGxlY3RvciByZXBlYXRlZGx5IHRyeWluZyB0byB1bnRyYWNrIGRpY3RzLgorCistIElzc3VlICMxNDg1NzogZml4IHJlZ3Jlc3Npb24gaW4gcmVmZXJlbmNlcyB0byBQRVAgMzEzNSBpbXBsaWNpdCBfX2NsYXNzX18KKyAgY2xvc3VyZSB2YXJpYWJsZSAoUmVvcGVucyBpc3N1ZSAjMTIzNzApCisKKy0gSXNzdWUgIzE0NzEyIChQRVAgNDA1KTogVmlydHVhbCBlbnZpcm9ubWVudHMuIEltcGxlbWVudGVkIGJ5IFZpbmF5IFNhamlwLgorCistIElzc3VlICMxNDY2MCAoUEVQIDQyMCk6IE5hbWVzcGFjZSBwYWNrYWdlcy4gSW1wbGVtZW50ZWQgYnkgRXJpYyBTbWl0aC4KKworLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKKyAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgorICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCisKKy0gSXNzdWUgIzkyNjA6IEEgZmluZXItZ3JhaW5lZCBpbXBvcnQgbG9jay4gIE1vc3Qgb2YgdGhlIGltcG9ydCBzZXF1ZW5jZQorICBub3cgdXNlcyBwZXItbW9kdWxlIGxvY2tzIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGVsaW1pbmF0aW5nCisgIHdlbGwta25vd24gaXNzdWVzIHdpdGggdGhyZWFkcyBhbmQgaW1wb3J0cy4KKworLSBJc3N1ZSAjMTQ2MjQ6IFVURi0xNiBkZWNvZGluZyBpcyBub3cgM3ggdG8gNHggZmFzdGVyIG9uIHZhcmlvdXMgaW5wdXRzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIGFzZGxfc2VxIGFuZCBhc2RsX2ludF9zZXEgYXJlIG5vdyBQeV9zc2l6ZV90IHNpemVkLgorCistIElzc3VlICMxNDEzMyAoUEVQIDQxNSk6IEltcGxlbWVudCBzdXBwcmVzc2lvbiBvZiBfX2NvbnRleHRfXyBkaXNwbGF5IHdpdGggYW4KKyAgYXR0cmlidXRlIG9uIEJhc2VFeGNlcHRpb24uIFRoaXMgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG1lY2hhbmlzbSBvZiBQRVAgNDA5LgorCistIElzc3VlICMxNDQxNzogTXV0YXRpbmcgYSBkaWN0IGR1cmluZyBsb29rdXAgbm93IHJlc3RhcnRzIHRoZSBsb29rdXAgaW5zdGVhZAorICBvZiByYWlzaW5nIGEgUnVudGltZUVycm9yICh1bmRvZXMgaXNzdWUgIzE0MjA1KS4KKworLSBJc3N1ZSAjMTQ3Mzg6IFNwZWVkLXVwIFVURi04IGRlY29kaW5nIG9uIG5vbi1BU0NJSSBkYXRhLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcworICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCisKKy0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0CisgIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgorICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE0NjkwOiBVc2UgbW9ub3RvbmljIGNsb2NrIGluc3RlYWQgb2Ygc3lzdGVtIGNsb2NrIGluIHRoZSBzY2hlZCwKKyAgc3VicHJvY2VzcyBhbmQgdHJhY2UgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCisgIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCisKIC0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgogCiAtIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KQEAgLTMwMywyOSArMTE1NCw3MCBAQAogLSBJc3N1ZSAjMTQ5Mjk6IFN0b3AgSWRsZSAzLnggZnJvbSBjbG9zaW5nIG9uIFVuaWNvZGUgZGVjb2RlIGVycm9ycyB3aGVuCiAgIGdyZXBwaW5nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTI1MTU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3QgaWYgaXQgZ2V0cyB0byBFT0Ygd2hpbGUgcGFyc2luZworICBhIE1JTUUgcGFydCB3aXRob3V0IHNlZWluZyB0aGUgY2xvc2luZyBNSU1FIGJvdW5kYXJ5LgorCiAtIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KICAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKICAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzE2NzI1Njg6IGVtYWlsIG5vdyBhbHdheXMgZGVjb2RlcyBiYXNlNjQgcGF5bG9hZHMsIGFkZGluZyBwYWRkaW5nIGFuZAorICBpZ25vcmluZyBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaWYgbmVlZGVkLCBhbmQgcmVnaXN0ZXJpbmcgZGVmZWN0cworICBmb3IgYW55IHN1Y2ggcHJvYmxlbXMuCisKKy0gSXNzdWUgIzE0OTI1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IHdoZW4gdGhlIHBhcnNlciBkZWNpZGVzIHRoYXQgdGhlcmUKKyAgaXMgYSBtaXNzaW5nIGhlYWRlci9ib2R5IHNlcGFyYXRvciBsaW5lLiAgTWFsZm9ybWVkSGVhZGVyRGVmZWN0LCB3aGljaCB0aGUKKyAgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBhY3R1YWxseSBnZW5lcmF0ZSwgaXMgZGVwcmVjYXRlZC4KKwogLSBJc3N1ZSAjMTAzNjU6IEZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuCiAgIHRoZSBwYXJlbnQgd2luZG93IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGRpYWxvZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzg3Mzk6IFVwZGF0ZWQgc210cGQgdG8gc3VwcG9ydCBSRkMgNTMyMSwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4KKworLSBJc3N1ZSAjNjY1MTk0OiBBZGRlZCBhIGxvY2FsdGltZSBmdW5jdGlvbiB0byBlbWFpbC51dGlscyB0byBwcm92aWRlIGFuCisgIGF3YXJlIGxvY2FsIGRhdGV0aW1lIGZvciB1c2UgaW4gc2V0dGluZyBEYXRlIGhlYWRlcnMuCisKKy0gSXNzdWUgIzEyNTg2OiBBZGRlZCBuZXcgcHJvdmlzaW9uYWwgcG9saWNpZXMgdGhhdCBpbXBsZW1lbnQgY29udmVuaWVudAorICB1bmljb2RlIHN1cHBvcnQgZm9yIGVtYWlsIGhlYWRlcnMuICBTZWUgV2hhdCdzIE5ldyBmb3IgZGV0YWlscy4KKworLSBJc3N1ZSAjMTQ3MzE6IFJlZmFjdG9yZWQgZW1haWwgUG9saWN5IGZyYW1ld29yayB0byBzdXBwb3J0IGZ1bGwgYmFja3dhcmQKKyAgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIgYnkgZGVmYXVsdCB5ZXQgYWxsb3cgZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YKKyAgbmV3IGZlYXR1cmVzIHRocm91Z2ggbmV3IHBvbGljaWVzLiAgTm90ZSB0aGF0IFBvbGljeS5tdXN0X2JlXzdiaXQgaXMgcmVuYW1lZAorICB0byBjdGVfdHlwZS4KKwogLSBJc3N1ZSAjMTQ4NzY6IFVzZSB1c2VyLXNlbGVjdGVkIGZvbnQgZm9yIGhpZ2hsaWdodCBjb25maWd1cmF0aW9uLgogCiAtIElzc3VlICMxNDkyMDogRml4IHRoZSBoZWxwKHVybGxpYi5wYXJzZSkgZmFpbHVyZSBvbiBsb2NhbGUgQyBvbiB0ZXJtaW5hbHMuCiAgIEhhdmUgYXNjaWkgY2hhcmFjdGVycyBpbiBoZWxwLgogCistIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCisgIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgorCiAtIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCiAgIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgogCiAtIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKICAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KIAorLSBJc3N1ZSAjMTQ4NjI6IEFkZCBtaXNzaW5nIG5hbWVzIHRvIG9zLl9fYWxsX18KKwogLSBJc3N1ZSAjMTQ4NzU6IFVzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KIAorLSBJc3N1ZSAjMTM1ODU6IEFkZGVkIGNvbnRleHRsaWIuRXhpdFN0YWNrCisKKy0gUEVQIDMxNDQsIElzc3VlICMxNDgxNDogQWRkZWQgdGhlIGlwYWRkcmVzcyBtb2R1bGUKKwogLSBJc3N1ZSAjMTQ0MjY6IENvcnJlY3QgdGhlIERhdGUgZm9ybWF0IGluIEV4cGlyZXMgYXR0cmlidXRlIG9mIFNldC1Db29raWUKICAgSGVhZGVyIGluIENvb2tpZS5weS4KIAorLSBJc3N1ZSAjMTQ1ODg6IFRoZSB0eXBlcyBtb2R1bGUgbm93IHByb3ZpZGUgbmV3X2NsYXNzKCkgYW5kIHByZXBhcmVfY2xhc3MoKQorICBmdW5jdGlvbnMgdG8gc3VwcG9ydCBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkKKyAgRGFuaWVsIFVyYmFuIGFuZCBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzEzMTUyOiBBbGxvdyB0byBzcGVjaWZ5IGEgY3VzdG9tIHRhYnNpemUgZm9yIGV4cGFuZGluZyB0YWJzIGluCisgIHRleHR3cmFwLiBQYXRjaCBieSBKb2huIEZldWVyc3RlaW4uCisKIC0gSXNzdWUgIzE0NzIxOiBTZW5kIHRoZSBjb3JyZWN0ICdDb250ZW50LWxlbmd0aDogMCcgaGVhZGVyIHdoZW4gdGhlIGJvZHkgaXMgYW4KICAgZW1wdHkgc3RyaW5nICcnLiBJbml0aWFsIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEFydmUgS251ZHNlbi4KIApAQCAtMzM5LDI1ICsxMjMxLDc2IEBACiAgIHdoZW4gdGhlIGZpcnN0IHBhcnQgb2YgYSBkb3R0ZWQgbmFtZSBpcyBub3QgYSBwYWNrYWdlLiBQYXRjaCBieQogICBYYXZpZXIgZGUgR2F5ZS4KIAorLSBJc3N1ZSAjMTIwOTg6IG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIG5vdyBzdGFydHMgY2hpbGQgcHJvY2Vzc2VzCisgIHVzaW5nIHRoZSBzYW1lIHN5cy5mbGFncyBhcyB0aGUgY3VycmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieQorICBTZXJnZXkgTWV6ZW50c2V2LgorCistIElzc3VlICMxMzAzMTogU21hbGwgc3BlZWQtdXAgZm9yIHRhcmZpbGUgd2hlbiB1bnppcHBpbmcgdGFyZmlsZXMuCisgIFBhdGNoIGJ5IEp1c3RpbiBQZWVsLgorCistIElzc3VlICMxNDc4MDogdXJsbGliLnJlcXVlc3QudXJsb3BlbigpIG5vdyBoYXMgYSBgYGNhZGVmYXVsdGBgIGFyZ3VtZW50CisgIHRvIHVzZSB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZS4gIEluaXRpYWwgcGF0Y2ggYnkgSmFtZXMgT2FrbGV5LgorCiAtIElzc3VlICMxNDgyOTogRml4IGJpc2VjdCBhbmQgcmFuZ2UoKSBpbmRleGluZyB3aXRoIGxhcmdlIGluZGljZXMKICAgKD49IDIgKiogMzIpIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgogCistIElzc3VlICMxNDczMjogVGhlIF9jc3YgbW9kdWxlIG5vdyB1c2VzIFBFUCAzMTIxIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNDgwOTogQWRkIEhUVFAgc3RhdHVzIGNvZGVzIGludHJvZHVjZWQgYnkgUkZDIDY1ODUgdG8gaHR0cC5zZXJ2ZXIKKyAgYW5kIGh0dHAuY2xpZW50LiBQYXRjaCBieSBFdW5nSnVuIFlpLgorCiAtIElzc3VlICMxNDc3NzogdGtpbnRlciBtYXkgcmV0dXJuIHVuZGVjb2RlZCBVVEYtOCBieXRlcyBhcyBhIHN0cmluZyB3aGVuCiAgIGFjY2Vzc2luZyB0aGUgVGsgY2xpcGJvYXJkLiAgTW9kaWZ5IGNsaXBib2FkX2dldCgpIHRvIGZpcnN0IHJlcXVlc3QgdHlwZQogICBVVEY4X1NUUklORyB3aGVuIG5vIHNwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcKICAgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgY3VycmVudCBkZWZhdWx0IHR5cGUgU1RSSU5HIGlmIHRoYXQgZmFpbHMuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgogCistIElzc3VlICMxNDc3MzogRml4IG9zLmZ3YWxrKCkgZmFpbGluZyBvbiBkYW5nbGluZyBzeW1saW5rcy4KKwogLSBJc3N1ZSAjMTI1NDE6IEJlIGxlbmllbnQgd2l0aCBxdW90ZXMgYXJvdW5kIFJlYWxtIGZpZWxkIG9mIEhUVFAgQmFzaWMKICAgQXV0aGVudGF0aW9uIGluIHVybGxpYjIuCiAKKy0gSXNzdWUgIzE0ODA3OiBtb3ZlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlKCkgdG8gc3RhdC5maWxlbW9kZSgpIGFuZCBhZGQKKyAgZG9jIGVudHJ5LiBBZGQgdGFyZmlsZS5maWxlbW9kZSBhbGlhcyB3aXRoIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisKKy0gSXNzdWUgIzEzODE1OiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgbm93IHJldHVybnMgaW8uQnVmZmVyZWRSZWFkZXIgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ1MzI6IEFkZCBhIHNlY3VyZV9jb21wYXJlKCkgaGVscGVyIHRvIHRoZSBobWFjIG1vZHVsZSwgdG8gbWl0aWdhdGUKKyAgdGltaW5nIGF0dGFja3MuIFBhdGNoIGJ5IEpvbiBPYmVyaGVpZGUuCisKKy0gQWRkIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLgorCistIElzc3VlICMxNDM2NjogU3VwcG9ydCBsem1hIGNvbXByZXNzaW9uIGluIHppcCBmaWxlcy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5NTk6IEludHJvZHVjZSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBhbmQgZG9jdW1lbnQKKyAgaW1wLmZpbmRfbW9kdWxlL2xvYWRfbW9kdWxlIGFzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE0MDgyOiBzaHV0aWwuY29weTIoKSBub3cgY29waWVzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGlmIHBvc3NpYmxlLgorICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpL2dldF9maWxlbmFtZSgpIGFuZAorICBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKSBoYXZlIHRoZWlyIHNpbmdsZQorICBhcmd1bWVudCBiZSBvcHRpb25hbC4gQWxsb3dzIGZvciB0aGUgcmVwbGFjZW1lbnQgKGFuZCB0aHVzIGRlcHJlY2F0aW9uKSBvZgorICBpbXAubG9hZF9zb3VyY2UoKS9sb2FkX3BhY2thZ2UoKS9sb2FkX2NvbXBpbGVkKCkuCisKKy0gSXNzdWUgIzEzOTU5OiBpbXAuZ2V0X3N1ZmZpeGVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdGhlIG5ldworICBhdHRyaWJ1dGVzIG9uIGltcG9ydGxpYi5tYWNoaW5lcnk6IFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsIGFuZCBFWFRFTlNJT05fU1VGRklYRVMuIFRoaXMKKyAgbGVkIHRvIGFuIGluZGlyZWN0IGRlcHJlY2F0aW9uIG9mIGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpLgorCiAtIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90CiAgIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKIC0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCiAgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIAotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KKy0gSXNzdWUgIzE0NzUzOiBNYWtlIG11bHRpcHJvY2Vzc2luZydzIGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRpbWVvdXRzCisgIHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24gMy4yLgorCistIElzc3VlICMxNDU4MzogRml4IGltcG9ydGxpYiBidWcgd2hlbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weSB3b3VsZCBmaXJzdAorICBpbXBvcnQgb25lIG9mIGl0cyBtb2R1bGVzIHRoZW4gcmFpc2UgYW4gZXJyb3IuCiAKIC0gSXNzdWUgIzE0NzQxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBFbGxpcHNpcyAoJy4uLicpIGluIHBhcnNlciBtb2R1bGUuCiAKQEAgLTM2Niw2ICsxMzA5LDEzOCBAQAogCiAtIElzc3VlICMxNDcwMTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgJ3JhaXNlIC4uLiBmcm9tJyBpbiBwYXJzZXIgbW9kdWxlLgogCistIEFkZCBzdXBwb3J0IGZvciB0aW1lb3V0cyB0byB0aGUgYWNxdWlyZSgpIG1ldGhvZHMgb2YKKyAgbXVsdGlwcm9jZXNzaW5nJ3MgbG9jay9zZW1hcGhvcmUvY29uZGl0aW9uIHByb3hpZXMuCisKKy0gSXNzdWUgIzEzOTg5OiBBZGQgc3VwcG9ydCBmb3IgdGV4dCBtb2RlIHRvIGd6aXAub3BlbigpLgorCistIElzc3VlICMxNDEyNzogVGhlIG9zLnN0YXQoKSByZXN1bHQgb2JqZWN0IG5vdyBwcm92aWRlcyB0aHJlZSBhZGRpdGlvbmFsCisgIGZpZWxkczogc3RfY3RpbWVfbnMsIHN0X210aW1lX25zLCBhbmQgc3RfYXRpbWVfbnMsIHByb3ZpZGluZyB0aG9zZSB0aW1lcyBhcyBhbgorICBpbnRlZ2VyIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLiAgVGhlIGZ1bmN0aW9ucyBvcy51dGltZSgpLCBvcy5sdXRpbWVzKCksCisgIGFuZCBvcy5mdXRpbWVzKCkgbm93IGFjY2VwdCBhIG5ldyBwYXJhbWV0ZXIsIG5zLCB3aGljaCBhY2NlcHRzIG10aW1lIGFuZCBhdGltZQorICBhcyBpbnRlZ2VycyB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTQxMjcgYW5kICMxMDE0ODogc2h1dGlsLmNvcHlzdGF0IG5vdyBwcmVzZXJ2ZXMgZXhhY3QgbXRpbWUgYW5kIGF0aW1lCisgIG9uIGZpbGVzeXN0ZW1zIHByb3ZpZGluZyBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5NTogQnJpbmcgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgc3VwcG9ydCB1cCB0byBkYXRlIHdpdGgKKyAgdGhlIFB5dGhvbiAzLjMgR3JhbW1hci4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KKworLSBVcGdyYWRlIFdpbmRvd3MgbGlicmFyeSB2ZXJzaW9uczogYnppcCAxLjAuNiwgT3BlblNTTCAxLjAuMWMuCisKKy0gSXNzdWUgIzE0NjkzOiBVbmRlciBub24tV2luZG93cyBwbGF0Zm9ybXMsIGhhc2hsaWIncyBmYWxsYmFjayBtb2R1bGVzIGFyZQorICBhbHdheXMgY29tcGlsZWQsIGV2ZW4gaWYgT3BlblNTTCBpcyBwcmVzZW50IGF0IGJ1aWxkIHRpbWUuCisKKy0gSXNzdWUgIzEzMjEwOiBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFZTMjAxMCwgcG9ydGVkIGZyb20gVlMyMDA4LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKKyAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKKyAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5OTogRml4IGNhbGxpbmcgdGhlIGNsYXNzbWV0aG9kIGRlc2NyaXB0b3IgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzE0NDMzOiBQcmV2ZW50IG1zdmNydCBjcmFzaCBpbiBpbnRlcmFjdGl2ZSBwcm9tcHQgd2hlbiBzdGRpbiBpcyBjbG9zZWQuCisKKy0gSXNzdWUgIzE0NTIxOiBNYWtlIHJlc3VsdCBvZiBmbG9hdCgnbmFuJykgYW5kIGZsb2F0KCctbmFuJykgbW9yZSBjb25zaXN0ZW50CisgIGFjcm9zcyBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE0NjQ2OiBfX2ltcG9ydF9fKCkgc2V0cyBfX2xvYWRlcl9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLm1ldGFfcGF0aC4gSWYKKyAgc3lzLm1ldGFfcGF0aCBpcyBmb3VuZCB0byBiZSBlbXB0eSwgcmFpc2UgSW1wb3J0V2FybmluZy4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLnBhdGhfaG9va3MuIElmCisgIHN5cy5wYXRoX2hvb2tzIGlzIGZvdW5kIHRvIGJlIGVtcHR5LCBhIHdhcm5pbmcgd2lsbCBiZSByYWlzZWQuIE5vbmUgaXMgbm93CisgIGluc2VydGVkIGludG8gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaWYgbm8gZmluZGVyIHdhcyBkaXNjb3ZlcmVkLiBUaGlzIGFsc28KKyAgbWVhbnMgaW1wLk51bGxJbXBvcnRlciBpcyBubyBsb25nZXIgaW1wbGljaXRseSB1c2VkLgorCistIElzc3VlICMxMzkwMzogSW1wbGVtZW50IFBFUCA0MTIuIEluZGl2aWR1YWwgZGljdGlvbmFyeSBpbnN0YW5jZXMgY2FuIG5vdyBzaGFyZQorICB0aGVpciBrZXlzIHdpdGggb3RoZXIgZGljdGlvbmFyaWVzLiBDbGFzc2VzIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgdG8gc2hhcmUKKyAgdGhlaXIgaW5zdGFuY2UgZGljdGlvbmFyeSBrZXlzIGZvciBpbXByb3ZlZCBtZW1vcnkgYW5kIHBlcmZvcm1hbmNlLgorCistIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgorICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCisgIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KKworLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKKyAgd2l0aCB2YWx1ZSAwLgorCistIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KKyAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXworICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KKyAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdAorICBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCisKKy0gSXNzdWUgIzEyNTk5OiBCZSBtb3JlIHN0cmljdCBpbiBhY2NlcHRpbmcgTm9uZSBjb21wYXJlZCB0byBhIGZhbHNlLWxpa2UKKyAgb2JqZWN0IGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlciBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLgorCistIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCisKKy0gSXNzdWUgIzE0NTkyOiBBdHRlbXB0aW5nIGEgcmVsYXRpdmUgaW1wb3J0IHcvbyBfX3BhY2thZ2VfXyBvciBfX25hbWVfXyBzZXQgaW4KKyAgZ2xvYmFscyByYWlzZXMgYSBLZXlFcnJvci4KKworLSBJc3N1ZSAjMTQ2MDc6IEZpeCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdoaWNoIHN0YXJ0ZWQgd2l0aCBgYF9fYGAuCisKKy0gSXNzdWUgIzEwODU0OiBUaGUgSW1wb3J0RXJyb3IgcmFpc2VkIHdoZW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBvbiBXaW5kb3dzCisgIGZhaWxzIHRvIGltcG9ydCBub3cgdXNlcyB0aGUgbmV3IHBhdGggYW5kIG5hbWUgYXR0cmlidXRlcyBmcm9tCisgIElzc3VlICMxNTU5NTQ5LgorCistIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCisgIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCisgIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCisKKy0gX19pbXBvcnRfXygpIG5vdyBtYXRjaGVzIFBFUCAzMjggYW5kIGRvY3VtZW50YXRpb24gYnkgZGVmYXVsdGluZyAnaW5kZXgnIHRvIDAKKyAgaW5zdGVhZCBvZiAtMSBhbmQgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgbmVnYXRpdmUgdmFsdWVzLgorCistIElzc3VlICMyMzc3OiBNYWtlIGltcG9ydGxpYiB0aGUgaW1wbGVtZW50YXRpb24gb2YgX19pbXBvcnRfXygpLgorCistIElzc3VlICMxNTU5NTQ5OiBJbXBvcnRFcnJvciBub3cgaGFzICduYW1lJyBhbmQgJ3BhdGgnIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2V0CisgIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzIHRvIGl0cyBjb25zdHJ1Y3Rvci4gVGhleSBhcmUgY3VycmVudGx5IG5vdCBzZXQgYnkKKyAgaW1wb3J0IGFzIHRoZXkgYXJlIG1lYW50IGZvciB1c2UgYnkgaW1wb3J0bGliLgorCistIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQorICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYSB1bmhhbmRsZWQgZXhjZXB0aW9uLgorCistIElzc3VlICMxMzAxOTogRml4IHBvdGVudGlhbCByZWZlcmVuY2UgbGVha3MgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2gKKyAgYnkgU3VtYW4gU2FoYS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDc2ODogb3MucGF0aC5leHBhbmR1c2VyKCd+L2EnKSBkb2Vzbid0IHdvcmtzIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgorCistIElzc3VlICMxNDM3MTogU3VwcG9ydCBiemlwMiBpbiB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzEzMTgzOiBGaXggcGRiIHNraXBwaW5nIGZyYW1lcyBhZnRlciBoaXR0aW5nIGEgYnJlYWtwb2ludCBhbmQgcnVubmluZwogICBzdGVwLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKQEAgLTM3Niw5ICsxNDUxLDI1IEBACiAKIC0gSXNzdWUgIzkxNTQ6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgZnVuY3Rpb24gYW5ub3RhdGlvbnMuCiAKKy0gSXNzdWUgIzYwODU6IEluIGh0dHAuc2VydmVyLnB5IFNpbXBsZUhUVFBTZXJ2ZXIuYWRkcmVzc19zdHJpbmcgcmV0dXJucyB0aGUKKyAgY2xpZW50IGlwIGFkZHJlc3MgaW5zdGVhZCBjbGllbnQgaG9zdG5hbWUuIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTQzMDk6IERlcHJlY2F0ZSB0aW1lLmNsb2NrKCksIHVzZSB0aW1lLnBlcmZfY291bnRlcigpIG9yCisgIHRpbWUucHJvY2Vzc190aW1lKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTQ0Mjg6IEltcGxlbWVudCB0aGUgUEVQIDQxOC4gQWRkIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSwKKyAgdGltZS5wZXJmX2NvdW50ZXIoKSBhbmQgdGltZS5wcm9jZXNzX3RpbWUoKSBmdW5jdGlvbnMsIGFuZCByZW5hbWUKKyAgdGltZS5zdGVhZHkoKSB0byB0aW1lLm1vbm90b25pYygpLgorCistIElzc3VlICMxNDY0NjogaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoKSBub3cgc2V0cyBfX2xvYWRlcl9fIGFuZAorICBfX3BhY2thZ2VfXyAod2hlbiBwb3NzaWJsZSkuCisKIC0gSXNzdWUgIzE0NjY0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIEB1bml0dGVzdC5za2lwe0lmLFVubGVzc30gb24gYQogICB0ZXN0IGNsYXNzIHRoYXQgZG9lc24ndCBpbmhlcml0IGZyb20gVGVzdENhc2UgKGkuZS4gYSBtaXhpbikuCiAKKy0gSXNzdWUgIzQ4OTI6IG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIG92ZXIKKyAgbXVsdGlwcm9jZXNzaW5nIENvbm5lY3Rpb25zLiAgUGF0Y2ggYnkgUmljaGFyZCBPdWRrZXJrIChzYnQpLgorCiAtIElzc3VlICMxNDE2MDogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCB0byByZXNvbHZlIHN5bWJvbGljIGxpbmtzIHdoZW4KICAgdGhlIGxpbmtzIHdlcmUgbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCiAKQEAgLTM4OCwxNzAgKzE0NzksMTAwIEBACiAtIElzc3VlICMxMzY4NDogRml4IGh0dHBsaWIgdHVubmVsIGlzc3VlIG9mIGluZmluaXRlIGxvb3BzIGZvciBjZXJ0YWluIHNpdGVzCiAgIHdoaWNoIHNlbmQgRU9GIHdpdGhvdXQgdHJhaWxpbmcgXHJcbi4KIAorLSBJc3N1ZSAjMTQ2MDU6IEFkZCBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuKEZpbGVGaW5kZXIsCisgIFNvdXJjZUZpbGVMb2FkZXIsIFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBFeHRlbnNpb25GaWxlTG9hZGVyKS4KKworLSBJc3N1ZSAjMTM5NTk6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpL3NvdXJjZV9mcm9tX2NhY2hlKCkgbm93IGZvbGxvdworICBvcy5wYXRoLmpvaW4oKS9zcGxpdCgpIHNlbWFudGljcyBmb3IgcGF0aCBtYW5pcHVsYXRpb24gaW5zdGVhZCBvZiBpdHMgcHJpb3IsCisgIGN1c3RvbSBzZW1hbnRpY3Mgb2YgY2FyaW5nIHRoZSByaWdodC1tb3N0IHBhdGggc2VwYXJhdG9yIGZvcndhcmQgaW4gcGF0aAorICBqb2luaW5nLgorCistIElzc3VlICMyMTkzOiBBbGxvdyAiOiIgY2hhcmFjdGVyIGluIENvb2tpZSBOQU1FIHZhbHVlcy4KKworLSBJc3N1ZSAjMTQ2Mjk6IHRva2VuaXplci5kZXRlY3RfZW5jb2Rpbmcgd2lsbCBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBpbiB0aGUKKyAgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmIGZvdW5kIGF0IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUuCisKIC0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQogICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgogCiAtIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwogICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KIAorLSBJc3N1ZSAjMTE3NTA6IFRoZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgc2NhdHRlcmVkIGluIHRoZSBfc3VicHJvY2VzcyBhbmQKKyAgX211bHRpcHJvY2Vzc2luZy53aW4zMiBtb2R1bGVzIG5vdyBsaXZlIGluIGEgc2luZ2xlIG1vZHVsZSAiX3dpbmFwaSIuCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwODc6IG11bHRpcHJvY2Vzc2luZzogYWRkIENvbmRpdGlvbi53YWl0X2ZvcigpLiBQYXRjaCBieSBzYnQuCisKIC0gSXNzdWUgIzE0NTM4OiBIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluCiAgIGEgYmFyZSAnLycuCiAKIC0gSXNzdWUgIzE0NDUyOiBTeXNMb2dIYW5kbGVyIG5vIGxvbmdlciBpbnNlcnRzIGEgVVRGLTggQk9NIGludG8gdGhlIG1lc3NhZ2UuCiAKKy0gSXNzdWUgIzE0Mzg2OiBFeHBvc2UgdGhlIGRpY3RfcHJveHkgaW50ZXJuYWwgdHlwZSBhcyB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXAucmVsb2FkKCkgYWx3YXlzIHVzZSBhIG1vZHVsZSdzIF9fbG9hZGVyX18gdG8gcGVyZm9ybQorICB0aGUgcmVsb2FkLgorCistIElzc3VlICMxMzk1OTogQWRkIGltcC5weSBhbmQgcmVuYW1lIHRoZSBidWlsdC1pbiBtb2R1bGUgdG8gX2ltcCwgYWxsb3dpbmcgZm9yCisgIHJlLWltcGxlbWVudGluZyBwYXJ0cyBvZiB0aGUgbW9kdWxlIGluIHB1cmUgUHl0aG9uLgorCiAtIElzc3VlICMxMzQ5NjogRml4IHBvdGVudGlhbCBvdmVyZmxvdyBpbiBiaXNlY3QuYmlzZWN0IGFsZ29yaXRobSB3aGVuIGFwcGxpZWQKICAgdG8gYSBjb2xsZWN0aW9uIG9mIHNpemUgPiBzeXMubWF4c2l6ZSAvIDIuCiAKKy0gSGF2ZSBpbXBvcnRsaWIgdGFrZSBhZHZhbnRhZ2Ugb2YgSW1wb3J0RXJyb3IncyBuZXcgJ25hbWUnIGFuZCAncGF0aCcKKyAgYXR0cmlidXRlcy4KKwogLSBJc3N1ZSAjMTQzOTk6IHppcGZpbGUgbm93IHJlY29nbml6ZXMgdGhhdCB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBtb2RpZmllZCBldmVuCiAgIGlmIG9ubHkgdGhlIGNvbW1lbnQgaXMgY2hhbmdlZC4gIEluIGFkZGl0aW9uLCB0aGUgVHlwZUVycm9yIHRoYXQgcmVzdWx0cyBmcm9tCiAgIHRyeWluZyB0byBzZXQgYSBub24tYmluYXJ5IHZhbHVlIGFzIGEgY29tbWVudCBpcyBub3cgbm93IHJhaXNlZCBhdCB0aGUgdGltZQogICB0aGUgY29tbWVudCBpcyBzZXQgcmF0aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlIHppcGZpbGUgaXMgd3JpdHRlbi4KIAorLSB0cmFjZS5Db3ZlcmFnZVJlc3VsdHMuaXNfaWdub3JlZF9maWxlbmFtZSgpIG5vdyBpZ25vcmVzIGFueSBuYW1lIHRoYXQgc3RhcnRzCisgIHdpdGggIjwiIGFuZCBlbmRzIHdpdGggIj4iIGluc3RlYWQgb2Ygc3BlY2lhbC1jYXNpbmcgIjxzdHJpbmc+IiBhbmQKKyAgIjxkb2N0ZXN0ICIuCisKKy0gSXNzdWUgIzEyNTM3OiBUaGUgbWFpbGJveCBtb2R1bGUgbm8gbG9uZ2VyIGRlcGVuZHMgb24ga25vd2xlZGdlIG9mIGludGVybmFsCisgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgTWVzc2FnZSBvYmplY3QuCisKIC0gSXNzdWUgIzc5Nzg6IHNvY2tldHNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwogICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgogICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCiAKKy0gSXNzdWUgIzE0NTIyOiBBdm9pZCBkdXBsaWNhdGluZyBzb2NrZXQgaGFuZGxlcyBpbiBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi4KKyAgUGF0Y2ggYnkgc2J0LgorCistIERvbid0IFB5X0RFQ1JFRiBOVUxMIHZhcmlhYmxlIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuCisKKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKIC0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgogICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzMwMzM6IEFkZCBkaXNwbGF5b2YgcGFyYW1ldGVyIHRvIHRraW50ZXIgZm9udC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKIC0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCiAgIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1VOSVggdHlwZSBhZGRyZXNzIHVuZGVyCiAgIFdpbmRvd3MuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzgwMjMxMDogR2VuZXJhdGUgYWx3YXlzIHVuaXF1ZSB0a2ludGVyIGZvbnQgbmFtZXMgaWYgbm90IGRpcmVjdGx5IHBhc3NlZC4KKwogLSBJc3N1ZSAjMTQxNTE6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKICAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfUElQRSB0eXBlIGFkZHJlc3MgdW5kZXIKICAgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgogCi0tIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKLSAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCistIElzc3VlICMxNDQ5MzogVXNlIGd2ZnMtb3BlbiBvciB4ZGctb3BlbiBpbiB3ZWJicm93c2VyLgogCi0tIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAotICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCitCdWlsZAorLS0tLS0KIAotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCi0gIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAotICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCi0KLS0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbwotICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KLQotLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwotICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCi0KLS0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKLSAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgotCi0tIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCi0KLS0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCi0KLS0gSXNzdWUgIzE0MDYyOiBIZWFkZXIgb2JqZWN0cyBub3cgY29ycmVjdGx5IHJlc3BlY3QgdGhlICdsaW5lc2VwJyBzZXR0aW5nCi0gIHdoZW4gcHJvY2Vzc2VkIGJ5IEJ5dGVzUGFyc2VyICh3aGljaCBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlIHVzZXMpLgotCi0tIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCi0gIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KLQotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQotLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCi0gIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCi0KLS0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCi0KLS0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKLSAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KLQotLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKLSAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCi0gIGZpeGVkLgotCi0tIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQotICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBjb250YWluZXJzIChXZWFrU2V0LCBXZWFrS2V5RGljdGlvbmFyeSwKLSAgV2Vha1ZhbHVlRGljdGlvbmFyeSkgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lIG9iamVjdHMKLSAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCi0gIE8obikuCi0KLS0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgotICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCi0KLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucwotICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKLSAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCi0KLS0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCi0gIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCi0gIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKLSAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCistICJtYWtlIHRvdWNoIiB3aWxsIG5vdyB0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBpbnRvIE1lcmN1cmlhbCwKKyAgYWZ0ZXIgYSAiaGcgdXBkYXRlIiB3aGljaCBmYWlsZWQgdG8gYnJpbmcgdGhlIHRpbWVzdGFtcHMgaW50byB0aGUgcmlnaHQgb3JkZXIuCiAKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMxNTMwNDogRml4IHdhcm5pbmcgbWVzc2FnZSB3aGVuIG9zLmNoZGlyKCkgZmFpbHMgaW5zaWRlCi0gIHRlc3Quc3VwcG9ydC50ZW1wX2N3ZCgpLiAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBUZXN0TWFpbGRpci50ZXN0X2NyZWF0ZV90bXAuIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQotICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKLSAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgotCi0tIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcKLSAgdHdvIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUKLSAgb2YgdGVzdC4KLQotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkCi0gIGlucHV0IGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgotCi0tIElzc3VlICMxNTQ5NjogQWRkIGRpcmVjdG9yeSByZW1vdmFsIGhlbHBlcnMgZm9yIHRlc3RzIG9uIFdpbmRvd3MuCi0gIFBhdGNoIGJ5IEplcmVteSBLbG90aC4KLQotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZwotICB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cwotCi0tIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQotICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgotICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSB0ZXN0X25udHBsaWIgbm93IHRvbGVyYXRlcyBiZWluZyBydW4gZnJvbSBiZWhpbmQgTk5UUCBnYXRld2F5cyB0aGF0IGFkZAotICAiWC1BbnRpdmlydXMiIGhlYWRlcnMgdG8gYXJ0aWNsZXMKLQotLSBJc3N1ZSAjMTUwNDM6IHRlc3RfZ2RiIGlzIG5vdyBza2lwcGVkIGVudGlyZWx5IGlmIGdkYiBzZWN1cml0eSBzZXR0aW5ncwotICBibG9jayBsb2FkaW5nIG9mIHRoZSBnZGIgaG9va3MKLQogLSBJc3N1ZSAjMTQwMjY6IEluIHRlc3RfY21kX2xpbmVfc2NyaXB0LCBjaGVjayB0aGF0IHN5cy5hcmd2IGlzIHBvcHVsYXRlZAogICBjb3JyZWN0bHkgZm9yIHRoZSB2YXJpb3VzIGludm9jYXRpb24gYXBwcm9hY2hlcyAoUGF0Y2ggYnkgSmFzb24gWWVvKQogCkBAIC01NjEsMTQwICsxNTgyLDMxMCBAQAogLSBJc3N1ZSAjMTQ1ODk6IFVwZGF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Igc2hhMjU2LnRicy1pbnRlcm5ldC5jb20sIGZpeGluZwogICBhIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KIAotQnVpbGQKLS0tLS0tCistIElzc3VlICMxNDM1NTogUmVncnRlc3Qgbm93IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcsIGFuZAorICB3aWxsIHVzZSBpdCBpZiBhIHRlc3QgZmlsZSBjb250YWlucyBubyBgdGVzdF9tYWluYCBtZXRob2QuCiAKLS0gSXNzdWUgIzE1OTIzOiBmaXggYSBtaXN0YWtlIGluIGFzZGxfYy5weSB0aGF0IHJlc3VsdGVkIGluIGEgVHlwZUVycm9yIGFmdGVyCi0gIDI4MDFiZjg3NWEyNCAoc2VlICMxNTgwMSkuCi0KLS0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQKLSAgdG9vbHMgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1ODE5OiBNYWtlIHN1cmUgd2UgY2FuIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZG9ubHkKLSAgc291cmNlIGRpcmVjdG9yeS4gIChTb21ld2hhdCByZWxhdGVkIHRvIElzc3VlICM5ODYwLikKLQotLSBJc3N1ZSAjMTU4MjI6IEVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLgotCi0tIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkCi0gIGxpYnJhcnkgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCi0KLS0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KLQotLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBPcGVuU1NMIDEuMC4waiBhbmQgYnppcDIgMS4wLjYuCi0KLS0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KLQotLSBJc3N1ZSAjMTQ0Mzc6IEZpeCBidWlsZGluZyB0aGUgX2lvIG1vZHVsZSB1bmRlciBDeWd3aW4uCi0KLS0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KLQotLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgotICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCi0KLS0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgotCi1Eb2N1bWVudGF0aW9uCitUb29scyAvIERlbW9zCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1NTMzOiBDbGFyaWZ5IGRvY3MgYW5kIGFkZCB0ZXN0cyBmb3Igc3VicHJvY2Vzcy5Qb3BlbigpJ3MgY3dkCi0gIGFyZ3VtZW50LgorLSBJc3N1ZSAjMzU2MTogVGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBoYXMgYW4gb3B0aW9uLCBvZmYgYnkgZGVmYXVsdCwgZm9yCisgIHBsYWNpbmcgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaW50byB0aGUgc3lzdGVtICJQYXRoIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotLSBJc3N1ZSAjMTYwMzY6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBidWlsdC1pbiBpbnQoKSdzIHNpZ25hdHVyZSBhbmQKLSAgYXJndW1lbnRzLgotCi0tIElzc3VlICMxNTkzNTogQ2xhcmlmaWNhdGlvbiBvZiBhcmdwYXJzZSBkb2NzLCByZTogYWRkX2FyZ3VtZW50KCkgdHlwZSBhbmQKLSAgZGVmYXVsdCBhcmd1bWVudHMuICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTE5NjQ6IERvY3VtZW50IGEgY2hhbmdlIGluIHYzLjIgdG8gdGhlIGJlaGF2aW9yIG9mIHRoZSBpbmRlbnQKLSAgcGFyYW1ldGVyIG9mIGpzb24gZW5jb2Rpbmcgb3BlcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGpzb24gbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KLSAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgotCi0tIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5Ci0gIERhbmllbCBFbGxpcy4KLQotLSBJc3N1ZSAjMTU0NDQ6IFVzZSBwcm9wZXIgc3BlbGxpbmcgZm9yIG5vbi1BU0NJSSBjb250cmlidXRvciBuYW1lcy4gIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgMTU0ODI6IFByb3Blcmx5IGRvY3VtZW50IHRoZSBkZWZhdWx0ICdsZXZlbCcgdmFsdWUgZm9yIF9faW1wb3J0X18oKQotICB3aGlsZSB3YXJuaW5nIGFib3V0IHVzaW5nIG5lZ2F0aXZlIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTUyMzA6IENsZWFybHkgZG9jdW1lbnQgc29tZSBvZiB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIHJ1bnB5Ci0gIG1vZHVsZSBhbmQgbnVkZ2UgcmVhZGVycyB0b3dhcmRzIGltcG9ydGxpYiB3aGVuIGFwcHJvcHJpYXRlLgotCi0tIElzc3VlICMxMzU1NzogQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBleGVjIG9yCi0gIGV4ZWNmaWxlKCkuCi0KLS0gSXNzdWUgIzg3OTk6IEZpeCBhbmQgaW1wcm92ZSB0aGUgdGhyZWFkaW5nLkNvbmRpdGlvbiBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNDk0MzogQ29ycmVjdCBhIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHdpbnJlZy5PcGVuS2V5Ci0gIGFuZCBjb3JyZWN0bHkgbGlzdCB0aGUgYXJndW1lbnQgbmFtZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZXhwbGFuYXRpb24uCi0KLS0gSXNzdWUgIzE0MDM0OiBhZGRlZCB0aGUgYXJncGFyc2UgdHV0b3JpYWwuCi0KLS0gSXNzdWUgIzE1MjUwOiBEb2N1bWVudCB0aGF0IGZpbGVjbXAuZGlyY21wIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKLSAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDY5NTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3Igc3RhcnJlZCBhc3NpZ25tZW50cyBpbgotICBUb29scy9wYXJzZXIvdW5wYXJzZS5weS4KKy0gSXNzdWUgIzEzMTY1OiBzdHJpbmdiZW5jaCBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBUb29scy9zdHJpbmdiZW5jaCBmb2xkZXIuCisgIEl0IHVzZWQgdG8gbGl2ZSBpbiBpdHMgb3duIFNWTiBwcm9qZWN0LgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotKlJlbGVhc2UgZGF0ZTogMTAtQXByLTIwMTIqCisqUmVsZWFzZSBkYXRlOiAwMS1BcHItMjAxMioKIAotQnVpbGQKLS0tLS0tCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTQzODc6IFdvcmsgYXJvdW5kIGEgcHJvYmxlbSBidWlsZGluZyBleHRlbnNpb24gbW9kdWxlcyB1bmRlciBXaW5kb3dzCi0gIGJ5IHVuZGVmaW5pbmcgYGBzbWFsbGBgIGJlZm9yZSB1c2UgaW4gdGhlIFB5dGhvbiBoZWFkZXJzLgorLSBJc3N1ZSAjMTY4MzM2ODogb2JqZWN0Ll9fbmV3X18gYW5kIG9iamVjdC5fX2luaXRfXyByYWlzZSBhIFR5cGVFcnJvciBpZiB0aGV5CisgIGFyZSBwYXNzZWQgYXJndW1lbnRzIGFuZCB0aGVpciBjb21wbGVtZW50YXJ5IG1ldGhvZCBpcyBub3Qgb3ZlcnJpZGRlbi4KIAorLSBJc3N1ZSAjMTQzNzg6IEZpeCBjb21waWxpbmcgYXN0LkltcG9ydEZyb20gbm9kZXMgd2l0aCBhICJfX2Z1dHVyZV9fIiBzdHJpbmcgYXMKKyAgdGhlIG1vZHVsZSBuYW1lIHRoYXQgd2FzIG5vdCBpbnRlcm5lZC4KIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjMgcmVsZWFzZSBjYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5CisgIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgogCi0qUmVsZWFzZSBkYXRlOiAxOC1NYXItMjAxMioKKy0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAorICBwYXNzZWQgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTQ2OTYyOTogQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZQorICBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZSBpZiBgYHguX19kaWN0X18gaXMgeGBgKS4KKworLSBJc3N1ZSAjMTQyMDU6IGRpY3QgbG9va3VwIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUgZGljdCBpcyBtb2RpZmllZAorICBkdXJpbmcgYSBsb29rdXAuCisKKy0gSXNzdWUgIzE0MjIwOiBXaGVuIGEgZ2VuZXJhdG9yIGlzIGRlbGVnYXRpbmcgdG8gYW5vdGhlciBpdGVyYXRvciB3aXRoIHRoZQorICB5aWVsZCBmcm9tIHN5bnRheCwgaXQgbmVlZHMgdG8gaGF2ZSBpdHMgYGBnaV9ydW5uaW5nYGAgZmxhZyBzZXQgdG8gVHJ1ZS4KKworLSBJc3N1ZSAjMTQ0MzU6IFJlbW92ZSBkZWRpY2F0ZWQgYmxvY2sgYWxsb2NhdG9yIGZyb20gZmxvYXRvYmplY3QuYyBhbmQgcmVseQorICBvbiB0aGUgUHlPYmplY3RfTWFsbG9jKCkgYXBpIGxpa2UgYWxsIG90aGVyIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KKworLSBJc3N1ZSAjMTQyODg6IEFsbG93IHRoZSBzZXJpYWxpemF0aW9uIG9mIGJ1aWx0aW4gaXRlcmF0b3JzCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCi0gIG9uIFdpbmRvd3MuCistIElzc3VlICMxNDMwMDogVW5kZXIgV2luZG93cywgc29ja2V0cyBjcmVhdGVkIHVzaW5nIHNvY2tldC5kdXAoKSBub3cgYWxsb3cKKyAgb3ZlcmxhcHBlZCBJL08uICBQYXRjaCBieSBzYnQuCiAKLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMTM4NzI6IHNvY2tldC5kZXRhY2goKSBub3cgbWFya3MgdGhlIHNvY2tldCBjbG9zZWQgKGFzIG1pcnJvcmVkCisgIGluIHRoZSBzb2NrZXQgcmVwcigpKS4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAorICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzUxMzY6IGRlcHJlY2F0ZSBvbGQsIHVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyLgorCistIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdworICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCisgIGhhcyB0byB1c2UgdGhlIGJ1aWx0LWluIGRlZmF1bHQga2V5IGJpbmRpbmdzLgorICBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgorCistIElzc3VlICMxNDQxNjogc3lzbG9nIG5vdyBkZWZpbmVzIHRoZSBMT0dfT0RFTEFZIGFuZCBMT0dfQVVUSFBSSVYgY29uc3RhbnRzCisgIGlmIHRoZXkgYXJlIGRlZmluZWQgaW4gPHN5c2xvZy5oPi4KKworLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgorCistIElzc3VlICMxNDI5NTogQWRkIHVuaXR0ZXN0Lm1vY2sKKworLSBJc3N1ZSAjNzY1MjogQWRkIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgb3B0aW9uIHRvIGNvbmZpZ3VyZSBmb3IgbGlua2luZworICB0aGUgX2RlY2ltYWwgbW9kdWxlIGFnYWluc3QgYW4gaW5zdGFsbGVkIGxpYm1wZGVjLgorCistIElzc3VlICMxNDM4MDogTUlNRVRleHQgbm93IGRlZmF1bHRzIHRvIHV0Zi04IHdoZW4gcGFzc2VkIG5vbi1BU0NJSSB1bmljb2RlCisgIHdpdGggbm8gY2hhcnNldCBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgorICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKKyAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgorCistIElzc3VlICMxNDIwNDogVGhlIHNzbCBtb2R1bGUgbm93IGhhcyBzdXBwb3J0IGZvciB0aGUgTmV4dCBQcm90b2NvbAorICBOZWdvdGlhdGlvbiBleHRlbnNpb24sIGlmIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBPcGVuU1NMIGxpYnJhcnkuCisgIFBhdGNoIGJ5IENvbGluIE1hcmMuCisKKy0gSXNzdWUgIzMwMzU6IFVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyIGFyZSBtYXJrZWQgYXMgcGVuZGluZyBkZXByZWNhdGVkLgorCistIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KKyAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCisKKy0gSXNzdWUgIzc2NTI6IEludGVncmF0ZSB0aGUgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaWJtcGRlYyBsaWJyYXJ5IHRvIHNwZWVkCisgIHVwIHRoZSBkZWNpbWFsIG1vZHVsZS4gUGVyZm9ybWFuY2UgZ2FpbnMgb2YgdGhlIG5ldyBDIGltcGxlbWVudGF0aW9uIGFyZQorICBiZXR3ZWVuIDEweCBhbmQgMTAweCwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncworICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCisKKy0gSXNzdWUgIzE0MjY5OiBTTVRQRCBub3cgY29uZm9ybXMgdG8gdGhlIFJGQyBhbmQgcmVxdWlyZXMgYSBIRUxPIGNvbW1hbmQKKyAgYmVmb3JlIE1BSUwsIFJDUFQsIG9yIERBVEEuCisKKy0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCisgIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMTQzNDQ6IGZpeGVkIHRoZSByZXByIG9mIGVtYWlsLnBvbGljeSBvYmplY3RzLgorCistIElzc3VlICMxMTY4NjogQWRkZWQgbWlzc2luZyBlbnRyaWVzIHRvIGVtYWlsIHBhY2thZ2UgX19hbGxfXyBsaXN0cworICAobW9zdGx5IHRoZSBuZXcgQnl0ZXMgY2xhc3NlcykuCisKKy0gSXNzdWUgIzE0MzM1OiBtdWx0aXByb2Nlc3NpbmcncyBjdXN0b20gUGlja2xlciBzdWJjbGFzcyBub3cgaW5oZXJpdHMgZnJvbQorICB0aGUgQy1hY2NlbGVyYXRlZCBpbXBsZW1lbnRhdGlvbi4gIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTA0ODQ6IEZpeCB0aGUgQ0dJSFRUUFNlcnZlcidzIFBBVEhfSU5GTyBoYW5kbGluZyBwcm9ibGVtLgorCistIElzc3VlICMxMTE5OTogRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgorCistIEltcHJvdmUgdGhlIG1lbW9yeSB1dGlsaXphdGlvbiBhbmQgc3BlZWQgb2YgZnVuY3Rvb2xzLmxydV9jYWNoZS4KKworLSBJc3N1ZSAjMTQyMjI6IFVzZSB0aGUgbmV3IHRpbWUuc3RlYWR5KCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aW1lLnRpbWUoKSBmb3IKKyAgdGltZW91dCBpbiBxdWV1ZSBhbmQgdGhyZWFkaW5nIG1vZHVsZXMgdG8gbm90IGJlIGFmZmVjdGVkIG9mIHN5c3RlbSB0aW1lCisgIHVwZGF0ZS4KKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBsaWIydG8zLnB5dHJlZS5CYXNlLmdldF9wcmVmaXgvc2V0X3ByZWZpeC4KIAogLSBJc3N1ZSAjMTQyMzQ6IENWRS0yMDEyLTA4NzY6IFJhbmRvbWl6ZSBoYXNoZXMgb2YgeG1sIGF0dHJpYnV0ZXMgaW4gdGhlIGhhc2gKICAgdGFibGUgaW50ZXJuYWwgdG8gdGhlIHB5ZXhwYXQgbW9kdWxlJ3MgY29weSBvZiB0aGUgZXhwYXQgbGlicmFyeSB0byBhdm9pZCBhCiAgIGRlbmlhbCBvZiBzZXJ2aWNlIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtIHdpdGggc29tZQogICBtb2RpZmljYXRpb25zIGJ5IHRoZSBleHBhdCBwcm9qZWN0LgogCistIElzc3VlICMxNDIwMDogSWRsZSBzaGVsbCBjcmFzaCBvbiBwcmludGluZyBub24tQk1QIHVuaWNvZGUgY2hhcmFjdGVyLgogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMyByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0gSXNzdWUgIzEyODE4OiBmb3JtYXQgYWRkcmVzcyBubyBsb25nZXIgbmVlZGxlc3NseSBcIGVzY2FwZXMgKClzIGluIG5hbWVzIHdoZW4KKyAgdGhlIG5hbWUgZW5kcyB1cCBiZWluZyBxdW90ZWQuCiAKLSpSZWxlYXNlIGRhdGU6IDI0LUZlYi0yMDEyKgorLSBJc3N1ZSAjMTQwNjI6IEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgZm9sZHMgSGVhZGVyIG9iamVjdHMsCisgIGluY2x1ZGluZyB1c2luZyBsaW5lc2VwIHdoZW4gZm9sZGluZy4KKworLSBJc3N1ZSAjMTM4Mzk6IFdoZW4gaW52b2tlZCBvbiB0aGUgY29tbWFuZC1saW5lLCB0aGUgcHN0YXRzIG1vZHVsZSBub3cKKyAgYWNjZXB0cyBzZXZlcmFsIGZpbGVuYW1lcyBvZiBwcm9maWxlIHN0YXQgZmlsZXMgYW5kIG1lcmdlcyB0aGVtIGFsbC4KKyAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCisKKy0gSXNzdWUgIzE0MjkxOiBFbWFpbCBub3cgZGVmYXVsdHMgdG8gdXRmLTggZm9yIG5vbi1BU0NJSSB1bmljb2RlIGhlYWRlcnMKKyAgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gMi43LgorCistIElzc3VlICM5ODk3MTI6IFN1cHBvcnQgdXNpbmcgVGsgd2l0aG91dCBhIG1haW5sb29wLgorCistIElzc3VlICM1MjE5OiBQcmV2ZW50IGV2ZW50IGhhbmRsZXIgY2FzY2FkZSBpbiBJRExFLgorCistIElzc3VlICMzODM1OiBSZWZ1c2UgdG8gdXNlIHVudGhyZWFkZWQgVGNsIGluIHRocmVhZGVkIFB5dGhvbi4KKworLSBJc3N1ZSAjMjg0MzogQWRkIG5ldyBUayBBUEkgdG8gVGtpbnRlci4KKworLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCisgIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCisKKy0gSXNzdWUgIzE0MTgwOiBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZCBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkKKyAgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yIGlmIGxvY2FsdGltZSgpIG9yIGdtdGltZSgpIGZhaWxlZC4KKworLSBJc3N1ZSAjMTQxODA6IHRpbWUuY3RpbWUoKSwgZ210aW1lKCksIHRpbWUubG9jYWx0aW1lKCksCisgIGRhdGV0aW1lLmRhdGUuZnJvbXRpbWVzdGFtcCgpLCBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kCisgIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IsIGluc3RlYWQgb2YKKyAgYSBWYWx1ZUVycm9yLCBpZiB0aGUgdGltZXN0YW1wIGRvZXMgbm90IGZpdCBpbiB0aW1lX3QuCisKKy0gSXNzdWUgIzE0MTgwOiBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKCkgYW5kCisgIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAoKSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvd2FyZHMgemVybworICBpbnN0ZWFkIG9mIHJvdW5kaW5nIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIGF3YXkgZnJvbSB6ZXJvLgorCistIElzc3VlICMxMDU0MzogRml4IHVuaXR0ZXN0IHRlc3QgZGlzY292ZXJ5IHdpdGggSnl0aG9uIGJ5dGVjb2RlIGZpbGVzLgorCistIElzc3VlICMxMTc4ODYzOiBTZXBhcmF0ZSBpbml0aWFsaXNhdGlvbiBmcm9tIHNldHRpbmcgd2hlbiBpbml0aWFsaXppbmcKKyAgVGtpbnRlci5WYXJpYWJsZXM7IGhhcm1vbml6ZSBleGNlcHRpb25zIHRvIFZhbHVlRXJyb3I7IG9ubHkgZGVsZXRlIHZhcmlhYmxlcworICB0aGF0IGhhdmUgbm90IGJlZW4gZGVsZXRlZDsgYXNzZXJ0IHRoYXQgdmFyaWFibGUgbmFtZXMgYXJlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE0MTA0OiBJbXBsZW1lbnQgdGltZS5tb25vdG9uaWMoKSBvbiBNYWMgT1MgWCwgcGF0Y2ggd3JpdHRlbiBieQorICBOaWNob2xhcyBSaWxleS4KKworLSBJc3N1ZSAjMTMzOTQ6IHRoZSBhaWZjIG1vZHVsZSBub3cgdXNlcyB3YXJuaW5ncy53YXJuKCkgdG8gc2lnbmFsIHdhcm5pbmdzLgorCistIElzc3VlICMxNDI1MjogRml4IHN1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlKCkgdG8gbm90IHJhaXNlIGFuIGVycm9yIHVuZGVyCisgIFdpbmRvd3Mgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQuCisKKy0gSXNzdWUgIzE0MjIzOiBjdXJzZXMuYWRkY2goKSBpcyBubyBtb3JlIGxpbWl0ZWQgdG8gdGhlIHJhbmdlIDAtMjU1IHdoZW4gdGhlCisgIFB5dGhvbiBjdXJzZXMgaXMgbm90IGxpbmtlZCB0byBsaWJuY3Vyc2Vzdy4gSXQgd2FzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkCisgIGluIFB5dGhvbiAzLjNhMS4KKworLSBJc3N1ZSAjMTQxNjg6IENoZWNrIGZvciBwcmVzZW5jZSBvZiBFbGVtZW50Ll9hdHRycyBpbiBtaW5pZG9tIGJlZm9yZQorICBhY2Nlc3NpbmcgaXQuCisKKy0gSXNzdWUgIzEyMzI4OiBGaXggbXVsdGlwcm9jZXNzaW5nJ3MgdXNlIG9mIG92ZXJsYXBwZWQgSS9PIG9uIFdpbmRvd3MuCisgIEFsc28sIGFkZCBhIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXQocmxpc3QsIHRpbWVvdXQ9Tm9uZSkgZnVuY3Rpb24KKyAgZm9yIHBvbGxpbmcgbXVsdGlwbGUgb2JqZWN0cyBhdCBvbmNlLiAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxNDAwNzogQWNjZXB0IGluY29tcGxldGUgVHJlZUJ1aWxkZXIgb2JqZWN0cyAobWlzc2luZyBzdGFydCwgZW5kLAorICBkYXRhIG9yIGNsb3NlIG1ldGhvZCkgZm9yIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gYXMgd2VsbC4KKyAgRHJvcCB0aGUgbm8tb3AgVHJlZUJ1aWxkZXIoKS54bWwoKSBtZXRob2QgZnJvbSB0aGUgQyBpbXBsZW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTQyMTA6IHBkYiBub3cgaGFzIHRhYi1jb21wbGV0aW9uIG5vdCBvbmx5IGZvciBjb21tYW5kIG5hbWVzLCBidXQKKyAgYWxzbyBmb3IgdGhlaXIgYXJndW1lbnRzLCB3aGVyZXZlciBwb3NzaWJsZS4KKworLSBJc3N1ZSAjMTQzMTA6IFNvY2tldHMgY2FuIG5vdyBiZSB3aXRoIG90aGVyIHByb2Nlc3NlcyBvbiBXaW5kb3dzIHVzaW5nCisgIHRoZSBhcGkgc29ja2V0LnNvY2tldC5zaGFyZSgpIGFuZCBzb2NrZXQuZnJvbXNoYXJlKCkuCisKKy0gSXNzdWUgIzEwNTc2OiBUaGUgZ2MgbW9kdWxlIG5vdyBoYXMgYSAnY2FsbGJhY2tzJyBtZW1iZXIgdGhhdCB3aWxsIGdldAorICBjYWxsZWQgd2hlbiBnYXJiYWdlIGNvbGxlY3Rpb24gdGFrZXMgcGxhY2UuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNDU1NzogRml4IGV4dGVuc2lvbnMgYnVpbGQgb24gSFAtVVguIFBhdGNoIGJ5IEFkaSBSb2liYW4uCisKKy0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KKworLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgorICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCisKKy0gSXNzdWUgIzE0MzIxOiBEbyBub3QgcnVuIHBnZW4gZHVyaW5nIHRoZSBidWlsZCBpZiBmaWxlcyBhcmUgdXAgdG8gZGF0ZS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgorCistIElzc3VlICMxNDMyNDogRml4IGNvbmZpZ3VyZSB0ZXN0cyBmb3IgY3Jvc3MgYnVpbGRzLgorCistIElzc3VlICMxNDMyNzogQ2FsbCBBQ19DQU5PTklDQUxfSE9TVCBpbiBjb25maWd1cmUuYWMgYW5kIGNoZWNrIGluCisgIGNvbmZpZy57Z3Vlc3Msc3VifS4gRG9uJ3QgdXNlIHVuYW1lIGNhbGxzIGZvciBjcm9zcyBidWlsZHMuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM5MDQxOiBBbiBpc3N1ZSBpbiBjdHlwZXMuY19sb25nZG91YmxlLCBjdHlwZXMuY19kb3VibGUsIGFuZAorICBjdHlwZXMuY19mbG9hdCB0aGF0IGNhdXNlZCBhbiBpbmNvcnJlY3QgZXhjZXB0aW9uIHRvIGJlIHJldHVybmVkIGluIHRoZQorICBjYXNlIG9mIG92ZXJmbG93IGhhcyBiZWVuIGZpeGVkLgorCistIElzc3VlICMxNDIxMjogVGhlIHJlIG1vZHVsZSBkaWRuJ3QgcmV0YWluIGEgcmVmZXJlbmNlIHRvIGJ1ZmZlcnMgaXQgd2FzCisgIHNjYW5uaW5nLCByZXN1bHRpbmcgaW4gc2VnZmF1bHRzLgorCistIElzc3VlICMxNDI1OTogVGhlIGZpbmRpdGVyKCkgbWV0aG9kIG9mIHJlIG9iamVjdHMgZGlkIG5vdCB0YWtlIGFueQorICBrZXl3b3JkIGFyZ3VtZW50cywgY29udHJhcnkgdG8gdGhlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzEwMTQyOiBTdXBwb3J0IGZvciBTRUVLX0hPTEUvU0VFS19EQVRBIChmb3IgZXhhbXBsZSwgdW5kZXIgWkZTKS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE0NDQyOiBBZGQgbWlzc2luZyBlcnJubyBpbXBvcnQgaW4gdGVzdF9zbXRwbGliLgorCistIElzc3VlICM4MzE1OiAocGFydGlhbCBmaXgpIHB5dGhvbiAtbSB1bml0dGVzdCB0ZXN0LnRlc3RfZW1haWwgbm93IHdvcmtzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwNS1NYXItMjAxMioKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzEzNzAzOiBvQ0VSVC0yMDExLTAwMzogYWRkIC1SIGNvbW1hbmQtbGluZSBvcHRpb24gYW5kIFBZVEhPTkhBU0hTRUVECi0gIGVudmlyb25tZW50IHZhcmlhYmxlLCB0byBwcm92aWRlIGFuIG9wdC1pbiB3YXkgdG8gcHJvdGVjdCBhZ2FpbnN0IGRlbmlhbCBvZgotICBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kIHNldCB0eXBlcy4gIFBhdGNoCi0gIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCistIElzc3VlICMxNDE3MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gbWFyc2hhbGxpbmcgYSBidWZmZXItbGlrZSBvYmplY3QKKyAgKG90aGVyIHRoYW4gYSBieXRlcyBvYmplY3QpLgorCistIElzc3VlICMxMzUyMTogZGljdC5zZXRkZWZhdWx0KCkgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LAorICBtYWtpbmcgaXQgImF0b21pYyIgZm9yIG1hbnkgcHVycG9zZXMuICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIFBFUCA0MDksIElzc3VlICM2MjEwOiAicmFpc2UgWCBmcm9tIE5vbmUiIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBtZWFucyBvZgorICBzdXBwcmVzc2luZyB0aGUgZGlzcGxheSBvZiB0aGUgY2hhaW5lZCBleGNlcHRpb24gY29udGV4dC4gVGhlIGNoYWluZWQKKyAgY29udGV4dCBzdGlsbCByZW1haW5zIGF2YWlsYWJsZSBhcyB0aGUgX19jb250ZXh0X18gYXR0cmlidXRlLgorCistIElzc3VlICMxMDE4MTogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gZml4ZXMgbXVsdGlwbGUgb3duZXJzaGlwCisgIGFuZCBsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFB5X2J1ZmZlciBtZW1iZXJzICgjOTk5MCkKKyAgYXMgd2VsbCBhcyBjcmFzaGVzICgjODMwNSwgIzc0MzMpLiBNYW55IG5ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQKKyAgKFNlZSB3aGF0c25ldy8zLjMpLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCBleHRlbnNpdmVseS4KKyAgVGhlIG5kYXJyYXkgdGVzdCBvYmplY3QgZnJvbSBfdGVzdGJ1ZmZlci5jIGltcGxlbWVudHMgYWxsIGFzcGVjdHMgb2YKKyAgUEVQLTMxMTgsIHNvIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgdG93YXJkcyB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24KKyAgb2YgdGhlIFBFUCBjYW4gcHJvY2VlZCBpbiBhIHRlc3QtZHJpdmVuIG1hbm5lci4KKworICBUaGFua3MgdG8gTmljayBDb2dobGFuLCBBbnRvaW5lIFBpdHJvdSBhbmQgUGF1bGkgVmlydGFuZW4gZm9yIHJldmlldworICBhbmQgbWFueSBpZGVhcy4KKworLSBJc3N1ZSAjMTI4MzQ6IEZpeCBpbmNvcnJlY3QgcmVzdWx0cyBvZiBtZW1vcnl2aWV3LnRvYnl0ZXMoKSBmb3IKKyAgbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgorCistIElzc3VlICM1MjMxOiBJbnRyb2R1Y2UgbWVtb3J5dmlldy5jYXN0KCkgbWV0aG9kIHRoYXQgYWxsb3dzIGNoYW5naW5nCisgIGZvcm1hdCBhbmQgc2hhcGUgd2l0aG91dCBtYWtpbmcgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KIAogLSBJc3N1ZSAjMTQwODQ6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIHdpdGggYQogICBiYWQgZW5jb2RpbmcuCiAKKy0gVXBncmFkZSBVbmljb2RlIGRhdGEgdG8gVW5pY29kZSA2LjEuCisKKy0gSXNzdWUgIzE0MDQwOiBSZW1vdmUgcmFyZWx5IHVzZWQgZmlsZSBuYW1lIHN1ZmZpeGVzIGZvciBDIGV4dGVuc2lvbnMKKyAgKHVuZGVyIFBPU0lYIG1haW5seSkuCisKKy0gSXNzdWUgIzE0MDUxOiBBbGxvdyBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBiZSBzZXQgb2YgY2xhc3NtZXRob2QgYW5kCisgIHN0YXRpY21ldGhvZC4KKworLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBSYW5kb21pemUgaGFzaGVzIG9mIHN0ciBhbmQgYnl0ZXMgdG8gcHJvdGVjdAorICBhZ2FpbnN0IGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kCisgIHNldCB0eXBlcy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCisKIC0gSXNzdWUgIzEzMDIwOiBGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3RzZXF1ZW5jZSBvYmplY3QKICAgZmFpbHMuICBQYXRjaCBieSBTdW1hbiBTYWhhLgogCkBAIC03MDMsNiArMTg5NCw5IEBACiAtIElzc3VlICMxMTIzNTogRml4IE92ZXJmbG93RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IGEgc291cmNlIGZpbGUgd2hvc2UKICAgbW9kaWZpY2F0aW9uIHRpbWUgZG9lc24ndCBmaXQgaW4gYSAzMi1iaXQgdGltZXN0YW1wLgogCistIElzc3VlICMxMjcwNTogQSBTeW50YXhFcnJvciBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcgdG8KKyAgY29tcGlsZSBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFzIGEgc2luZ2xlIGludGVyYWN0aXZlIHN0YXRlbWVudC4KKwogLSBGaXggdGhlIGJ1aWx0aW4gbW9kdWxlIGluaXRpYWxpemF0aW9uIGNvZGUgdG8gc3RvcmUgdGhlIGluaXQgZnVuY3Rpb24gZm9yCiAgIGZ1dHVyZSByZWluaXRpYWxpemF0aW9uLgogCkBAIC03MTQsNiArMTkwOCwzNyBAQAogLSBJc3N1ZSAjMTM2Mjk6IFJlbnVtYmVyIHRoZSB0b2tlbnMgaW4gdG9rZW4uaCBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIGluZGV4ZXMKICAgaW50byBfUHlQYXJzZXJfVG9rZW5OYW1lcy4KIAorLSBJc3N1ZSAjMTM3NTI6IEFkZCBhIGNhc2Vmb2xkKCkgbWV0aG9kIHRvIHN0ci4KKworLSBJc3N1ZSAjMTM3NjE6IEFkZCBhICJmbHVzaCIga2V5d29yZCBhcmd1bWVudCB0byB0aGUgcHJpbnQoKSBmdW5jdGlvbiwKKyAgdXNlZCB0byBlbnN1cmUgZmx1c2hpbmcgdGhlIG91dHB1dCBzdHJlYW0uCisKKy0gSXNzdWUgIzEzNjQ1OiBweWMgZmlsZXMgbm93IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCisgIGNvZGUsIHRvIGF2b2lkIHRpbWVzdGFtcCBjb2xsaXNpb25zIChlc3BlY2lhbGx5IG9uIGZpbGVzeXN0ZW1zIHdpdGggYSBsb3cKKyAgdGltZXN0YW1wIHJlc29sdXRpb24pIHdoZW4gY2hlY2tpbmcgZm9yIGZyZXNobmVzcyBvZiB0aGUgYnl0ZWNvZGUuCisKKy0gUEVQIDM4MCwgSXNzdWUgIzExNjgyOiBBZGQgInlpZWxkIGZyb20gPHg+IiB0byBzdXBwb3J0IGVhc3kgZGVsZWdhdGlvbiB0bworICBzdWJnZW5lcmF0b3JzIChpbml0aWFsIHBhdGNoIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0aW9uIGludG8gMy4zIGJ5CisgIFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHksIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKKworLSBJc3N1ZSAjMTM3NDg6IFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aCB0aGUgYGByYmBgIHByZWZpeAorICBhcyB3ZWxsIGFzIGBgYnJgYC4KKworLSBJc3N1ZSAjMTI3MzY6IFVzZSBmdWxsIHVuaWNvZGUgY2FzZSBtYXBwaW5ncyBmb3IgdXBwZXIsIGxvd2VyLCBhbmQgdGl0bGUgY2FzZS4KKworLSBJc3N1ZSAjMTI3NjA6IEFkZCBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oKS4gUGF0Y2ggYnkgRGF2aWQgVG93bnNoZW5kLgorCistIElzc3VlICMxMzczODogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgYnl0ZXMubG93ZXIoKSBhbmQgYnl0ZXMudXBwZXIoKS4KKworLSBJc3N1ZSAjMTM1Nzc6IEJ1aWx0LWluIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIF9fcXVhbG5hbWVfXy4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICM2Njk1OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBydW5zIG5vdyBjbGVhciB0aGUgZnJlZWxpc3Qgb2Ygc2V0CisgIG9iamVjdHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdHRoaWFzIFRyb2ZmYWVzLgorCistIEZpeCBPU0Vycm9yLl9faW5pdF9fIGFuZCBPU0Vycm9yLl9fbmV3X18gc28gdGhhdCBlYWNoIG9mIHRoZW0gY2FuIGJlCisgIG92ZXJyaWRlbiBhbmQgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoZm9sbG93dXAgdG8gaXNzdWUgIzEyNTU1KS4KKwogLSBGaXggdGhlIGZpeCBmb3IgaXNzdWUgIzEyMTQ5OiBpdCB3YXMgaW5jb3JyZWN0LCBhbHRob3VnaCBpdCBoYWQgdGhlIHNpZGUKICAgZWZmZWN0IG9mIGFwcGVhcmluZyB0byByZXNvbHZlIHRoZSBpc3N1ZS4gIFRoYW5rcyB0byBNYXJrIFNoYW5ub24gZm9yCiAgIG5vdGljaW5nLgpAQCAtNzI0LDI2ICsxOTQ5LDY4IEBACiAtIElzc3VlICMxMTE0NzogRml4IGFuIHVudXNlZCBhcmd1bWVudCBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSLiAgKEZpeAogICBnaXZlbiBieSBDYW1wYmVsbCBCYXJ0b24pLgogCistIElzc3VlICMxMzUwMzogVXNlIGEgbW9yZSBlZmZpY2llbnQgcmVkdWN0aW9uIGZvcm1hdCBmb3IgYnl0ZWFycmF5cyB3aXRoCisgIHBpY2tsZSBwcm90b2NvbCA+PSAzLiAgVGhlIG9sZCByZWR1Y3Rpb24gZm9ybWF0IGlzIGtlcHQgd2l0aCBvbGRlciBwcm90b2NvbHMKKyAgaW4gb3JkZXIgdG8gYWxsb3cgdW5waWNrbGluZyB1bmRlciBQeXRob24gMi4gIFBhdGNoIGJ5IElybWVuIGRlIEpvbmcuCisKIC0gSXNzdWUgIzcxMTE6IFB5dGhvbiBjYW4gbm93IGJlIHJ1biB3aXRob3V0IGEgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIKICAgc3RyZWFtLiAgSXQgd2FzIGFscmVhZHkgdGhlIGNhc2Ugd2l0aCBQeXRob24gMi4gIEhvd2V2ZXIsIHRoZSBjb3JyZXNwb25kaW5nCiAgIHN5cyBtb2R1bGUgZW50cmllcyBhcmUgbm93IHNldCB0byBOb25lIChpbnN0ZWFkIG9mIGFuIHVudXNhYmxlIGZpbGUgb2JqZWN0KS4KIAorLSBJc3N1ZSAjMTE4NDk6IEVuc3VyZSB0aGF0IGZyZWUoKWQgbWVtb3J5IGFyZW5hcyBhcmUgcmVhbGx5IHJlbGVhc2VkCisgIG9uIFBPU0lYIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5IG1hcHBpbmdzLiAgUGF0Y2ggYnkKKyAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMzQ1MjogUHlVbmljb2RlX0VuY29kZURlY2ltYWwoKSBkb2Vzbid0IHN1cHBvcnQgZXJyb3IgaGFuZGxlcnMKKyAgZGlmZmVyZW50IHRoYW4gInN0cmljdCIgYW55bW9yZS4gVGhlIGNhbGxlciB3YXMgdW5hYmxlIHRvIGNvbXB1dGUgdGhlCisgIHNpemUgb2YgdGhlIG91dHB1dCBidWZmZXI6IGl0IGRlcGVuZHMgb24gdGhlIGVycm9yIGhhbmRsZXIuCisKKy0gUEVQIDMxNTUgLyBpc3N1ZSAjMTM0NDg6IFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCisKIC0gSXNzdWUgIzEzNDM2OiBGaXggYSBib2d1cyBlcnJvciBtZXNzYWdlIHdoZW4gYW4gQVNUIG9iamVjdCB3YXMgcGFzc2VkCiAgIGFuIGludmFsaWQgaW50ZWdlciB2YWx1ZS4KIAorLSBJc3N1ZSAjMTM0MTE6IG1lbW9yeXZpZXcgb2JqZWN0cyBhcmUgbm93IGhhc2hhYmxlIHdoZW4gdGhlIHVuZGVybHlpbmcKKyAgb2JqZWN0IGlzIGhhc2hhYmxlLgorCiAtIElzc3VlICMxMzMzODogSGFuZGxlIGFsbCBlbnVtZXJhdGlvbnMgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUgogICB0byBhbGxvdyBjb21waWxpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCAtV3N3aXRjaC1lbnVtIG9uIGdjYy4KICAgSW5pdGlhbCBwYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KIAorLSBJc3N1ZSAjMTAyMjc6IEFkZCBhbiBhbGxvY2F0aW9uIGNhY2hlIGZvciBhIHNpbmdsZSBzbGljZSBvYmplY3QuICBQYXRjaCBieQorICBTdGVmYW4gQmVobmVsLgorCistIElzc3VlICMxMzM5MzogQnVmZmVyZWRSZWFkZXIucmVhZDEoKSBub3cgYXNrcyB0aGUgZnVsbCByZXF1ZXN0ZWQgc2l6ZSB0bworICB0aGUgcmF3IHN0cmVhbSBpbnN0ZWFkIG9mIGxpbWl0aW5nIGl0c2VsZiB0byB0aGUgYnVmZmVyIHNpemUuCisKKy0gSXNzdWUgIzEzMzkyOiBXcml0aW5nIGEgcHljIGZpbGUgc2hvdWxkIG5vdyBiZSBhdG9taWMgdW5kZXIgV2luZG93cyBhcyB3ZWxsLgorCiAtIElzc3VlICMxMzMzMzogVGhlIFVURi03IGRlY29kZXIgbm93IGFjY2VwdHMgbG9uZSBzdXJyb2dhdGVzICh0aGUgZW5jb2RlcgogICBhbHJlYWR5IGFjY2VwdHMgdGhlbSkuCiAKKy0gSXNzdWUgIzEzMzg5OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXNzZXMgbm93IGNsZWFyIHRoZSBmcmVlbGlzdHMgZm9yCisgIGxpc3QgYW5kIGRpY3Qgb2JqZWN0cy4gIFRoZXkgYWxyZWFkeSBjbGVhcmVkIG90aGVyIGZyZWVsaXN0cyBpbiB0aGUKKyAgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzEzMzI3OiBSZW1vdmUgdGhlIG5lZWQgZm9yIGFuIGV4cGxpY2l0IE5vbmUgYXMgdGhlIHNlY29uZCBhcmd1bWVudAorICB0byBvcy51dGltZSwgb3MubHV0aW1lcywgb3MuZnV0aW1lcywgb3MuZnV0aW1lbnMsIG9zLmZ1dGltZXNhdCwgaW4KKyAgb3JkZXIgdG8gdXBkYXRlIHRvIHRoZSBjdXJyZW50IHRpbWUuIEFsc28gYWRkZWQga2V5d29yZCBhcmd1bWVudAorICBoYW5kbGluZyB0byBvcy51dGltZW5zYXQgaW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSBuZWVkIGZvciBleHBsaWNpdCBOb25lLgorCistIElzc3VlICMxMzM1MDogU2ltcGxpZnkgc29tZSBDIGNvZGUgYnkgcmVwbGFjaW5nIG1vc3QgdXNhZ2VzIG9mCisgIFB5VW5pY29kZV9Gb3JtYXQgYnkgUHlVbmljb2RlX0Zyb21Gb3JtYXQuCisKIC0gSXNzdWUgIzEzMzQyOiBpbnB1dCgpIHVzZWQgdG8gaWdub3JlIHN5cy5zdGRpbidzIGFuZCBzeXMuc3Rkb3V0J3MgdW5pY29kZQogICBlcnJvciBoYW5kbGVyIGluIGludGVyYWN0aXZlIG1vZGUgKHdoZW4gY2FsbGluZyBpbnRvIFB5T1NfUmVhZGxpbmUoKSkuCiAKKy0gSXNzdWUgIzk4OTY6IEFkZCBzdGFydCwgc3RvcCwgYW5kIHN0ZXAgYXR0cmlidXRlcyB0byByYW5nZSBvYmplY3RzLgorCiAtIElzc3VlICMxMzM0MzogRml4IGEgU3lzdGVtRXJyb3Igd2hlbiBhIGxhbWJkYSBleHByZXNzaW9uIHVzZXMgYSBnbG9iYWwKLSAgdmFyaWFibGUgaW4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6Ci0gIChsYW1iZGEgKiwgYXJnPUdMT0JBTF9OQU1FOiBOb25lKQorICB2YXJpYWJsZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGtleXdvcmQtb25seSBhcmd1bWVudDogYGBsYW1iZGEgKiwKKyAgYXJnPUdMT0JBTF9OQU1FOiBOb25lYGAKKworLSBJc3N1ZSAjMTI3OTc6IEFkZGVkIGN1c3RvbSBvcGVuZXIgcGFyYW1ldGVyIHRvIGJ1aWx0aW4gb3BlbigpIGFuZAorICBGaWxlSU8ub3BlbigpLgogCiAtIElzc3VlICMxMDUxOTogQXZvaWQgdW5uZWNlc3NhcnkgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGluCiAgIHNldG9iamVjdC5jLgpAQCAtNzUzLDIxICsyMDIwLDQzIEBACiAtIElzc3VlICMxMzAxODogRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBlcnJvciBwYXRocyBpbiBkaWN0b2JqZWN0LmMuCiAgIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCiAKKy0gSXNzdWUgIzEzMjAxOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHMgYmFzZWQgb24KKyAgdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgb2JqZWN0IGlkZW50aXR5KS4KKwogLSBJc3N1ZSAjMTI5NDIzMjogSW4gYSBmZXcgY2FzZXMgaW52b2x2aW5nIG1ldGFjbGFzcyBpbmhlcml0YW5jZSwgdGhlCiAgIGludGVycHJldGVyIHdvdWxkIHNvbWV0aW1lcyBpbnZva2UgdGhlIHdyb25nIG1ldGFjbGFzcyB3aGVuIGJ1aWxkaW5nIGEgbmV3CiAgIGNsYXNzIG9iamVjdC4gVGhlc2UgY2FzZXMgbm93IGJlaGF2ZSBjb3JyZWN0bHkuIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KIAorLSBJc3N1ZSAjMTI3NTM6IEFkZCBzdXBwb3J0IGZvciBVbmljb2RlIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzLgorICBCb3RoIGBgdW5pY29kZWRhdGEubG9va3VwKClgYCBhbmQgJ1xOey4uLn0nIG5vdyByZXNvbHZlIGFsaWFzZXMsCisgIGFuZCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgcmVzb2x2ZXMgbmFtZWQgc2VxdWVuY2VzIHRvby4KKworLSBJc3N1ZSAjMTIxNzA6IFRoZSBjb3VudCgpLCBmaW5kKCksIHJmaW5kKCksIGluZGV4KCkgYW5kIHJpbmRleCgpIG1ldGhvZHMKKyAgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIG5vdyBhY2NlcHQgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDI1NQorICBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4gIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgorCiAtIElzc3VlICMxMjYwNDogVlRSQUNFIG1hY3JvIGV4cGFuZGVkIHRvIG5vLW9wIGluIF9zcmUuYyB0byBhdm9pZCBjb21waWxlcgogICB3YXJuaW5ncy4gUGF0Y2ggYnkgSm9zaCBUcmlwbGV0dCBhbmQgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEyMjgxOiBSZXdyaXRlIHRoZSBNQkNTIGNvZGVjIHRvIGhhbmRsZSBjb3JyZWN0bHkgcmVwbGFjZSBhbmQgaWdub3JlCisgIGVycm9yIGhhbmRsZXJzIG9uIGFsbCBXaW5kb3dzIHZlcnNpb25zLiBUaGUgTUJDUyBjb2RlYyBpcyBub3cgc3VwcG9ydGluZyBhbGwKKyAgZXJyb3IgaGFuZGxlcnMsIGluc3RlYWQgb2Ygb25seSByZXBsYWNlIHRvIGVuY29kZSBhbmQgaWdub3JlIHRvIGRlY29kZS4KKwogLSBJc3N1ZSAjMTMxODg6IFdoZW4gY2FsbGVkIHdpdGhvdXQgYW4gZXhwbGljaXQgdHJhY2ViYWNrIGFyZ3VtZW50LAogICBnZW5lcmF0b3IudGhyb3coKSBub3cgZ2V0cyB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIHBhc3NlZCBleGNlcHRpb24ncwogICBgYF9fdHJhY2ViYWNrX19gYCBhdHRyaWJ1dGUuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KIAorLSBJc3N1ZSAjMTMxNDY6IFdyaXRpbmcgYSBweWMgZmlsZSBpcyBub3cgYXRvbWljIHVuZGVyIFBPU0lYLgorCiAtIElzc3VlICM3ODMzOiBFeHRlbnNpb24gbW9kdWxlcyBidWlsdCB1c2luZyBkaXN0dXRpbHMgb24gV2luZG93cyB3aWxsIG5vCiAgIGxvbmdlciBpbmNsdWRlIGEgIm1hbmlmZXN0IiB0byBwcmV2ZW50IHRoZW0gZmFpbGluZyBhdCBpbXBvcnQgdGltZSBpbiBzb21lCiAgIGVtYmVkZGVkIHNpdHVhdGlvbnMuCiAKKy0gUEVQIDMxNTEgLyBpc3N1ZSAjMTI1NTU6IHJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkuCisKKy0gQWRkIGludGVybmFsIEFQSSBmb3Igc3RhdGljIHN0cmluZ3MgKF9QeV9pZGVudGlmaWVyIGV0IGFsLikuCisKIC0gSXNzdWUgIzEzMDYzOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9OT19EQVRBIChudW1iZXJlZCAyMzIgYW5kIGRlc2NyaWJlZAogICBhcyAiVGhlIHBpcGUgaXMgYmVpbmcgY2xvc2VkIikgaXMgbm93IG1hcHBlZCB0byBQT1NJWCBlcnJubyBFUElQRQogICAocHJldmlvdXNseSBFSU5WQUwpLgpAQCAtNzc1LDYgKzIwNjQsMTYgQEAKIC0gSXNzdWUgIzEyOTExOiBGaXggbWVtb3J5IGNvbnN1bXB0aW9uIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHJlcHIoKSBvZiBodWdlCiAgIHR1cGxlcyBvciBsaXN0cy4KIAorLSBQRVAgMzkzOiBmbGV4aWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24uIFRoYW5rcyB0byBUb3JzdGVuIEJlY2tlciBmb3IgdGhlCisgIGluaXRpYWwgaW1wbGVtZW50YXRpb24sIGFuZCBWaWN0b3IgU3Rpbm5lciBmb3IgdmFyaW91cyBidWcgZml4ZXMuCisKKy0gSXNzdWUgIzE0MDgxOiBUaGUgJ3NlcCcgYW5kICdtYXhzcGxpdCcgcGFyYW1ldGVyIHRvIHN0ci5zcGxpdCwgYnl0ZXMuc3BsaXQsCisgIGFuZCBieXRlYXJyYXkuc3BsaXQgbWF5IG5vdyBiZSBwYXNzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzEzMDEyOiBUaGUgJ2tlZXBlbmRzJyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0bGluZXMgbWF5IG5vdyBiZSBwYXNzZWQKKyAgYXMgYSBrZXl3b3JkIGFyZ3VtZW50OiAgIm15X3N0cmluZy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpIi4gIFRoZSBzYW1lCisgIGNoYW5nZSBhbHNvIGFwcGxpZXMgdG8gYnl0ZXMuc3BsaXRsaW5lcyBhbmQgYnl0ZWFycmF5LnNwbGl0bGluZXMuCisKIC0gSXNzdWUgIzc3MzI6IERvbid0IG9wZW4gYSBkaXJlY3RvcnkgYXMgYSBmaWxlIGFueW1vcmUgd2hpbGUgaW1wb3J0aW5nIGEKICAgbW9kdWxlLiBJZ25vcmUgdGhlIGRpcmVjb3RyeSBpZiBpdHMgbmFtZSBtYXRjaHMgdGhlIG1vZHVsZSBuYW1lIChlLmcuCiAgICJfX2luaXRfXy5weSIpIGFuZCByYWlzZSBhIEltcG9ydEVycm9yIGluc3RlYWQuCkBAIC03ODYsNiArMjA4NSw5IEBACiAgIGxpc3RfcmVwZWF0IChsaXN0b2JqZWN0LmMpIGFuZCBpc2xpY2VfbmV4dCAoaXRlcnRvb2xzbW9kdWxlLmMpLiAgVGhlc2UgYnVncwogICBjYXVzZWQgdGVzdCBmYWlsdXJlcyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBDbGFuZy4KIAorLSBJc3N1ZSAjMTI5MDQ6IG9zLnV0aW1lLCBvcy5mdXRpbWVzLCBvcy5sdXRpbWVzLCBhbmQgb3MuZnV0aW1lc2F0IG5vdyB3cml0ZQorICBhdGltZSBhbmQgbXRpbWUgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbiBvbiBtb2Rlcm4gUE9TSVggcGxhdGZvcm1zLgorCiAtIElzc3VlICMxMjgwMjogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfRElSRUNUT1JZIChudW1iZXJlZCAyNjcpIGlzIG5vdwogICBtYXBwZWQgdG8gUE9TSVggZXJybm8gRU5PVERJUiAocHJldmlvdXNseSBFSU5WQUwpLgogCkBAIC03OTUsMzcgKzIwOTcsMzI5IEBACiAtIElzc3VlICMxMjc5MTogQnJlYWsgcmVmZXJlbmNlIGN5Y2xlcyBlYXJseSB3aGVuIGEgZ2VuZXJhdG9yIGV4aXRzIHdpdGgKICAgYW4gZXhjZXB0aW9uLgogCistIElzc3VlICMxMjc3MzogTWFrZSBfX2RvY19fIG11dGFibGUgb24gdXNlci1kZWZpbmVkIGNsYXNzZXMuCisKKy0gSXNzdWUgIzEyNzY2OiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBjcmVhdGluZyBhIGNsYXNzIHdpdGggYSBjbGFzcyB2YXJpYWJsZQorICB0aGF0IGNvbmZsaWN0cyB3aXRoIGEgbmFtZSBpbiBfX3Nsb3RzX18uCisKIC0gSXNzdWUgIzEyMjY2OiBGaXggc3RyLmNhcGl0YWxpemUoKSB0byBjb3JyZWN0bHkgdXBwZXJjYXNlL2xvd2VyY2FzZQogICB0aXRsZWNhc2VkIGFuZCBjYXNlZCBub24tbGV0dGVyIGNoYXJhY3RlcnMuCiAKKy0gSXNzdWUgIzEyNzMyOiBJbiBuYXJyb3cgdW5pY29kZSBidWlsZHMsIGFsbG93IFVuaWNvZGUgaWRlbnRpZmllcnMgd2hpY2ggZmFsbAorICBvdXRzaWRlIHRoZSBCTVAuCisKKy0gSXNzdWUgIzEyNTc1OiBWYWxpZGF0ZSB1c2VyLWdlbmVyYXRlZCBBU1QgYmVmb3JlIGl0IGlzIGNvbXBpbGVkLgorCistIE1ha2UgdHlwZShOb25lKSwgdHlwZShFbGxpcHNpcyksIGFuZCB0eXBlKE5vdEltcGxlbWVudGVkKSBjYWxsYWJsZS4gVGhleQorICByZXR1cm4gdGhlIHJlc3BlY3RpdmUgc2luZ2xldG9uIGluc3RhbmNlcy4KKworLSBGb3JiaWQgc3VtbWluZyBieXRlcyB3aXRoIHN1bSgpLgorCistIFZlcmlmeSB0aGUgdHlwZXMgb2YgQVNUIHN0cmluZ3MgYW5kIGlkZW50aWZpZXJzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGJlZm9yZQorICBjb21waWxpbmcgdGhlbS4KKworLSBJc3N1ZSAjMTI2NDc6IFRoZSBOb25lIG9iamVjdCBub3cgaGFzIGEgX19ib29sX18oKSBtZXRob2QgdGhhdCByZXR1cm5zIEZhbHNlLgorICBGb3JtZXJseSwgYm9vbChOb25lKSByZXR1cm5lZCBGYWxzZSBvbmx5IGJlY2F1c2Ugb2Ygc3BlY2lhbCBjYXNlIGxvZ2ljCisgIGluIFB5T2JqZWN0X0lzVHJ1ZSgpLgorCistIElzc3VlICMxMjU3OTogc3RyLmZvcm1hdF9tYXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB1c2VkIG9uIGEKKyAgZm9ybWF0IHN0cmluZyB0aGF0IGNvbnRhaW5zIHBvc2l0aW9uYWwgZmllbGRzLiBJbml0aWFsIHBhdGNoIGJ5CisgIEp1bGlhbiBCZXJtYW4uCisKKy0gSXNzdWUgIzEwMjcxOiBBbGxvdyB3YXJuaW5ncy5zaG93d2FybmluZygpIGJlIGFueSBjYWxsYWJsZS4KKworLSBJc3N1ZSAjMTE2Mjc6IEZpeCBzZWdmYXVsdCB3aGVuIF9fbmV3X18gb24gYSBleGNlcHRpb24gcmV0dXJucyBhCisgIG5vbi1leGNlcHRpb24gY2xhc3MuCisKKy0gSXNzdWUgIzEyMTQ5OiBVcGRhdGUgdGhlIG1ldGhvZCBjYWNoZSBhZnRlciBhIHR5cGUncyBkaWN0aW9uYXJ5IGdldHMKKyAgY2xlYXJlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGlzIGZpeGVzIGEgc2VnZmF1bHQgd2hlbiBhbiBpbnN0YW5jZQorICBhbmQgaXRzIHR5cGUgZ2V0IGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZSwgYW5kIHRoZSBpbnN0YW5jZSdzCisgIGRlYWxsb2NhdG9yIGNhbGxzIG9uZSBvZiB0aGUgbWV0aG9kcyBvbiB0aGUgdHlwZSAoZS5nLiB3aGVuIHN1YmNsYXNzaW5nCisgIElPQmFzZSkuICBEaWFnbm9zaXMgYW5kIHBhdGNoIGJ5IERhdmlkZSBSaXp6by4KKworLSBJc3N1ZSAjOTYxMSwgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgorCistIElzc3VlICM5NjQyOiBVbmlmb3JtaXplIHRoZSB0ZXN0cyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBtYmNzIGNvZGVjLCBhZGQKKyAgYSBuZXcgSEFWRV9NQkNTIGRlZmluZS4KKworLSBJc3N1ZSAjOTY0MjogRml4IGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5pdGlhbGl6YXRpb246IHVzZSB0aGUgQU5TSSBjb2RlIHBhZ2UKKyAgb24gV2luZG93cyBpZiB0aGUgbWJjcyBjb2RlYyBpcyBub3QgYXZhaWxhYmxlLCBhbmQgZmFpbCB3aXRoIGEgZmF0YWwgZXJyb3IgaWYKKyAgd2UgY2Fubm90IGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIChpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBpcyBub3QgYXZhaWxhYmxlKQorICBpbnN0ZWFkIG9mIHVzaW5nIFVURi04LgorCistIFdoZW4gYSBnZW5lcmF0b3IgeWllbGRzLCBkbyBub3QgcmV0YWluIHRoZSBjYWxsZXIncyBleGNlcHRpb24gc3RhdGUgb24gdGhlCisgIGdlbmVyYXRvci4KKworLSBJc3N1ZSAjMTI0NzU6IFByZXZlbnQgZ2VuZXJhdG9ycyBmcm9tIGxlYWtpbmcgdGhlaXIgZXhjZXB0aW9uIHN0YXRlIGludG8gdGhlCisgIGNhbGxlcidzIGZyYW1lIGFzIHRoZXkgcmV0dXJuIGZvciB0aGUgbGFzdCB0aW1lLgorCistIElzc3VlICMxMjI5MTogWW91IGNhbiBub3cgbG9hZCBtdWx0aXBsZSBtYXJzaGFsbGVkIG9iamVjdHMgZnJvbSBhIHN0cmVhbSwKKyAgd2l0aCBvdGhlciBkYXRhIGludGVybGVhdmVkIGJldHdlZW4gbWFyc2hhbGxlZCBvYmplY3RzLgorCistIElzc3VlICMxMjM1NjogV2hlbiByZXF1aXJlZCBwb3NpdGlvbmFsIG9yIGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIG5vdAorICBnaXZlbiwgcHJvZHVjZSBhIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2Ugd2hpY2ggaW5jbHVkZXMgdGhlIG5hbWUocykgb2YgdGhlCisgIG1pc3NpbmcgYXJndW1lbnRzLgorCistIElzc3VlICMxMjM3MDogRml4IHN1cGVyIHdpdGggbm8gYXJndW1lbnRzIHdoZW4gX19jbGFzc19fIGlzIG92ZXJyaWRlbiBpbiB0aGUKKyAgY2xhc3MgYm9keS4KKworLSBJc3N1ZSAjMTIwODQ6IG9zLnN0YXQgb24gV2luZG93cyBub3cgd29ya3MgcHJvcGVybHkgd2l0aCByZWxhdGl2ZSBzeW1ib2xpYworICBsaW5rcyB3aGVuIGNhbGxlZCBmcm9tIGFueSBkaXJlY3RvcnkuCisKKy0gTG9vc2VuIHR5cGUgcmVzdHJpY3Rpb25zIG9uIHRoZSBfX2Rpcl9fIG1ldGhvZC4gX19kaXJfXyBjYW4gbm93IHJldHVybiBhbnkKKyAgc2VxdWVuY2UsIHdoaWNoIHdpbGwgYmUgY29udmVydGVkIHRvIGEgbGlzdCBhbmQgc29ydGVkIGJ5IGRpcigpLgorCistIElzc3VlICMxMjI2NTogTWFrZSBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCBieSBwYXNzaW5nIGFuIGludmFsaWQgc2V0IG9mCisgIGFyZ3VtZW50cyB0byBhIGZ1bmN0aW9uIG1vcmUgaW5mb3JtYXRpdmUuCisKKy0gSXNzdWUgIzEyMjI1OiBTdGlsbCBhbGxvdyBQeXRob24gdG8gYnVpbGQgaWYgUHl0aG9uIGlzIG5vdCBpbiBpdHMgaGcgcmVwbyBvcgorICBtZXJjdXJpYWwgaXMgbm90IGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTE5NTogbXlfZmdldHMoKSBub3cgYWx3YXlzIGNsZWFycyBlcnJvcnMgYmVmb3JlIGNhbGxpbmcgZmdldHMoKS4gRml4CisgIHRoZSBmb2xsb3dpbmcgY2FzZTogc3lzLnN0ZGluLnJlYWQoKSBzdG9wcGVkIHdpdGggQ1RSTCtkIChlbmQgb2YgZmlsZSksCisgIHJhd19pbnB1dCgpIGludGVycnVwdGVkIGJ5IENUUkwrYy4KKworLSBJc3N1ZSAjMTIyMTY6IEFsbG93IHVuZXhwZWN0ZWQgRU9GIGVycm9ycyB0byBoYXBwZW4gb24gYW55IGxpbmUgb2YgdGhlIGZpbGUuCisKKy0gSXNzdWUgIzEyMTk5OiBUaGUgVHJ5RXhjZXB0IGFuZCBUcnlGaW5hbGx5IGFuZCBBU1Qgbm9kZXMgaGF2ZSBiZWVuIHVuaWZpZWQKKyAgaW50byBhIFRyeSBub2RlLgorCistIElzc3VlICM5NjcwOiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgorICBNYWMgT1MgWCBhbmQgRnJlZUJTRCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSBjcmFzaCBpbnN0ZWFkIG9mIGEKKyAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uLgorICAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCistIElzc3VlICMxMjEwNjogVGhlIHVzZSBvZiB0aGUgbXVsdGlwbGUtd2l0aCBzaG9ydGhhbmQgc3ludGF4IGlzIG5vdyByZWZsZWN0ZWQKKyAgaW4gdGhlIEFTVC4KKworLSBJc3N1ZSAjMTIxOTA6IFRyeSB0byB1c2UgdGhlIHNhbWUgZmlsZW5hbWUgb2JqZWN0IHdoZW4gY29tcGlsaW5nIHVubWFyc2hhbGxpbmcKKyAgYSBjb2RlIG9iamVjdHMgaW4gdGhlIHNhbWUgZmlsZS4KKworLSBJc3N1ZSAjMTIxNjY6IE1vdmUgaW1wbGVtZW50YXRpb25zIG9mIGRpcigpIHNwZWNpYWxpemVkIGZvciB2YXJpb3VzIHR5cGVzIGludG8KKyAgdGhlIF9fZGlyX18oKSBtZXRob2RzIG9mIHRob3NlIHR5cGVzLgorCistIElzc3VlICM1NzE1OiBJbiBzb2NrZXRzZXJ2ZXIsIGNsb3NlIHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZCBwcm9jZXNzLgorCistIENvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGNhdXNlcyBlcnJvcnMKKyAgYmVzaWRlcyBBdHRyaWJ1dGVFcnJvciBmb3VuZCBvbiBsb29rdXAgdG8gYmUgcHJvcGFnYXRlZC4KKworLSBJc3N1ZSAjMTIwNjA6IFVzZSBzaWdfYXRvbWljX3QgdHlwZSBhbmQgdm9sYXRpbGUga2V5d29yZCBpbiB0aGUgc2lnbmFsCisgIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzE3NDY2NTY6IEFkZGVkIHRoZSBpZl9uYW1laW5kZXgsIGlmX2luZGV4dG9uYW1lLCBpZl9uYW1ldG9pbmRleAorICBtZXRob2RzIHRvIHRoZSBzb2NrZXQgbW9kdWxlLgorCistIElzc3VlICMxMjA0NDogRml4ZWQgc3VicHJvY2Vzcy5Qb3BlbiB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdG8KKyAgd2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gZW5kIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCB0byBhdm9pZCB1bmludGVudGlvbmFsbHkKKyAgbGVhdmluZyB6b21iaWUgcHJvY2Vzc2VzIGFyb3VuZC4KKworLSBJc3N1ZSAjMTE5NTogRml4IGlucHV0KCkgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgQ1RSTCtkIGFuZCB0aGVuIENUUkwrYywKKyAgY2xlYXIgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBhZnRlciBDVFJMK2QuCisKKy0gSXNzdWUgIzE4NTY6IEF2b2lkIGNyYXNoZXMgYW5kIGxvY2t1cHMgd2hlbiBkYWVtb24gdGhyZWFkcyBydW4gd2hpbGUgdGhlCisgIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd247IGluc3RlYWQsIHRoZXNlIHRocmVhZHMgYXJlIG5vdyBraWxsZWQgd2hlbgorICB0aGV5IHRyeSB0byB0YWtlIHRoZSBHSUwuCisKKy0gSXNzdWUgIzk3NTY6IFdoZW4gY2FsbGluZyBhIG1ldGhvZCBkZXNjcmlwdG9yIG9yIGEgc2xvdCB3cmFwcGVyIGRlc2NyaXB0b3IsCisgIHRoZSBjaGVjayBvZiB0aGUgb2JqZWN0IHR5cGUgZG9lc24ndCByZWFkIHRoZSBfX2NsYXNzX18gYXR0cmlidXRlIGFueW1vcmUuCisgIEZpeCBhIGNyYXNoIGlmIGEgY2xhc3Mgb3ZlcnJpZGUgaXRzIF9fY2xhc3NfXyBhdHRyaWJ1dGUgKGUuZy4gYSBwcm94eSBvZiB0aGUKKyAgc3RyIHR5cGUpLiBQYXRjaCB3cml0dGVuIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjMTA1MTc6IEFmdGVyIGZvcmsoKSwgcmVpbml0aWFsaXplIHRoZSBUTFMgdXNlZCBieSB0aGUgUHlHSUxTdGF0ZV8qCisgIEFQSXMsIHRvIGF2b2lkIGEgY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaAorICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzEwOTE0OiBJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgZmlsZXN5c3RlbSBjb2RlYyB3aGVuIGNyZWF0aW5nIGEgbmV3CisgIHN1YmludGVycHJldGVyIHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZSB3aXRoIGNvZGVjcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIGFzCisgIHRoZSBJU08tODg1OS0xNSBjb2RlYy4KKworLSBJc3N1ZSAjMTE5MTg6IE9TLzIgYW5kIFZNUyBhcmUgbm8gbW9yZSBzdXBwb3J0ZWQgYmVjYXVzZSBvZiB0aGUgbGFjayBvZgorICBtYWludGFpbmVyLgorCistIElzc3VlICM2NzgwOiBmaXggc3RhcnRzL2VuZHN3aXRoIGVycm9yIG1lc3NhZ2UgdG8gbWVudGlvbiB0aGF0IHR1cGxlcyBhcmUKKyAgYWNjZXB0ZWQgdG9vLgorCistIElzc3VlICM1MDU3OiBmaXggYSBidWcgaW4gdGhlIHBlZXBob2xlciB0aGF0IGxlZCB0byBub24tcG9ydGFibGUgcHljIGZpbGVzCisgIGJldHdlZW4gbmFycm93IGFuZCB3aWRlIGJ1aWxkcyB3aGlsZSBvcHRpbWl6aW5nIEJJTkFSWV9TVUJTQ1Igb24gbm9uLUJNUAorICBjaGFycyAoZS5nLiAiXFUwMDAxMjM0NSJbMF0pLgorCistIElzc3VlICMxMTg0NTogRml4IHR5cG8gaW4gcmFuZ2VvYmplY3QuYyB0aGF0IGNhdXNlZCBhIGNyYXNoIGluCisgIGNvbXB1dGVfc2xpY2VfaW5kaWNlcy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KKworLSBJc3N1ZSAjNTY3MzogQWRkZWQgYSBgdGltZW91dGAga2V5d29yZCBhcmd1bWVudCB0byBzdWJwcm9jZXNzLlBvcGVuLndhaXQsCisgIHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGVkLCBzdWJwcm9jZXNzLmNhbGwsIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCwgYW5kCisgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0LiAgSWYgdGhlIGJsb2NraW5nIG9wZXJhdGlvbiB0YWtlcyBtb3JlIHRoYW4gYHRpbWVvdXRgCisgIHNlY29uZHMsIHRoZSBgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworLSBJc3N1ZSAjMTE2NTA6IFB5T1NfU3RkaW9SZWFkbGluZSgpIHJldHJpZXMgZmdldHMoKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQKKyAgKEVJTlRSKSwgZm9yIGV4YW1wbGUgaWYgdGhlIHByb2dyYW0gaXMgc3RvcHBlZCB3aXRoIENUUkwreiBvbiBNYWMgT1MgWC4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjOTMxOTogSW5jbHVkZSB0aGUgZmlsZW5hbWUgaW4gIk5vbi1VVEY4IGNvZGUgLi4uIiBzeW50YXggZXJyb3IuCisKKy0gSXNzdWUgIzEwNzg1OiBTdG9yZSB0aGUgZmlsZW5hbWUgYXMgVW5pY29kZSBpbiB0aGUgUHl0aG9uIHBhcnNlci4KKworLSBJc3N1ZSAjMTE2MTk6IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZSgpIGRvZXNuJ3QgZW5jb2RlIHRoZSBwYXRoIHRvIGJ5dGVzCisgIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEwOTk4OiBSZW1vdmUgbWVudGlvbnMgb2YgLVEsIHN5cy5mbGFncy5kaXZpc2lvbl93YXJuaW5nIGFuZAorICBQeV9EaXZpc2lvbldhcm5pbmdGbGFnIGxlZnQgb3ZlciBmcm9tIFB5dGhvbiAyLgorCistIElzc3VlICMxMTI0NDogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IHBlZXBob2xlciBjaGVjayB0aGF0IHdhcyBwcmV2ZW50aW5nCisgIG5lZ2F0aXZlIHplcm9zIGZyb20gYmVpbmcgY29uc3RhbnQtZm9sZGVkIHByb3Blcmx5LgorCistIElzc3VlICMxMTM5NTogaW8uRmlsZUlPKCkud3JpdGUoKSBjbGFtcHMgdGhlIGRhdGEgbGVuZ3RoIHRvIDMyLDc2NyBieXRlcyBvbgorICBXaW5kb3dzIGlmIHRoZSBmaWxlIGlzIGEgVFRZIHRvIHdvcmthcm91bmQgYSBXaW5kb3dzIGJ1Zy4gVGhlIFdpbmRvd3MgY29uc29sZQorICByZXR1cm5zIGFuIGVycm9yICgxMjogbm90IGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZgorICBzdGRvdXQgbW9kZSBpcyBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywKKyAgZGVwZW5kaW5nIG9uIGhlYXAgdXNhZ2UpLgorCistIElzc3VlICMxMTMyMDogZml4IGJvZ3VzIG1lbW9yeSBtYW5hZ2VtZW50IGluIE1vZHVsZXMvZ2V0cGF0aC5jLCBsZWFkaW5nIHRvCisgIGEgcG9zc2libGUgY3Jhc2ggd2hlbiBjYWxsaW5nIFB5X1NldFBhdGgoKS4KKworLSBJc3N1ZSAjMTE0MzI6IEEgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIHN1YnByb2Nlc3MuUG9wZW4gb24gcG9zaXggc3lzdGVtcyB3aXRoCisgIDMuMi4wIHdoZXJlIHRoZSBzdGRvdXQgb3Igc3RkZXJyIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0aGUgc2FtZSBhcyB0aGUgc3RkaW4KKyAgZmlsZSBkZXNjcmlwdG9yIHdvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbi4gd2ViYnJvd3Nlci5vcGVuIHdvdWxkIGZhaWwuIGZpeGVkLgorCistIElzc3VlICM5ODU2OiBDaGFuZ2Ugb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nCisgIHRvIGJlIGEgRGVwcmVjYXRpb25XYXJuaW5nLiBJbiAzLjIgaXQgd2FzIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KKyAgSW4gMy40IGl0IHdpbGwgYmUgYSBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzExMjQ0OiBUaGUgcGVlcGhvbGUgb3B0aW1pemVyIGlzIG5vdyBhYmxlIHRvIGNvbnN0YW50LWZvbGQKKyAgYXJiaXRyYXJpbHkgY29tcGxleCBleHByZXNzaW9ucy4gIFRoaXMgYWxzbyBmaXhlcyBhIDMuMiByZWdyZXNzaW9uIHdoZXJlCisgIG9wZXJhdGlvbnMgaW52b2x2aW5nIG5lZ2F0aXZlIG51bWJlcnMgd2VyZSBub3QgY29uc3RhbnQtZm9sZGVkLgorCistIElzc3VlICMxMTQ1MDogRG9uJ3QgdHJ1bmNhdGUgaGcgdmVyc2lvbiBpbmZvIGluIFB5X0dldEJ1aWxkSW5mbygpIHdoZW4KKyAgdGhlcmUgYXJlIG1hbnkgdGFncyAoZS5nLiB3aGVuIHVzaW5nIG1xKS4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KKworLSBJc3N1ZSAjMTEzMzU6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gbGlzdC5zb3J0IHdoZW4gdGhlIGtleSBmdW5jdGlvbgorICB0aHJvd3MgYW4gZXhjZXB0aW9uLgorCistIElzc3VlICM4OTIzOiBXaGVuIGEgc3RyaW5nIGlzIGVuY29kZWQgdG8gVVRGLTggaW4gc3RyaWN0IG1vZGUsIHRoZSByZXN1bHQgaXMKKyAgY2FjaGVkIGludG8gdGhlIG9iamVjdC4gRXhhbXBsZXM6IHN0ci5lbmNvZGUoKSwgc3RyLmVuY29kZSgndXRmLTgnKSwKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGFuZCBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsICJ1dGYtOCIsCisgIE5VTEwpLgorCistIElzc3VlICMxMDgzMTogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBzdXBwb3J0cyAlbGksICVsbGkgYW5kICV6aSBmb3JtYXRzLgorCistIElzc3VlICMxMDgyOTogUmVmYWN0b3IgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSwgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIHRvIHBhcnNlCisgIHRoZSBmb3JtYXQgc3RyaW5nIGluIHRoZSAzIHN0ZXBzLCBmaXggY3Jhc2hzIG9uIGludmFsaWQgZm9ybWF0IHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzMDA3OiB3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KKworLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KKyAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KKyAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCisKKy0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGgKKyAgYSBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgorCistIElzc3VlICMxMTI3MjogT24gV2luZG93cywgaW5wdXQoKSBzdHJpcHMgJ1xyJyAoYW5kIG5vdCBvbmx5ICdcbicpLCBhbmQKKyAgc3lzLnN0ZGluIHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgKHJlcGxhY2UgJ1xyXG4nIGJ5ICdcbicpLgorCistIGlzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggZG9uJ3QgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguCisgIFBhdGNoIGJ5IFRvcnN0ZW4gQmVja2VyLgorCistIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCisgIG5hcnJvdyBidWlsZC4KKworLSBJc3N1ZSAjMTExNjg6IFJlbW92ZSBmaWxlbmFtZSBkZWJ1ZyB2YXJpYWJsZSBmcm9tIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgorICBJdCBlbmNvZGVkIHRoZSBVbmljb2RlIGZpbGVuYW1lIHRvIFVURi04LCBidXQgdGhlIGVuY29kaW5nIGZhaWxzIG9uCisgIHVuZGVjb2RhYmxlIGZpbGVuYW1lIChvbiBzdXJyb2dhdGUgY2hhcmFjdGVycykgd2hpY2ggcmFpc2VzIGFuIHVuZXhwZWN0ZWQKKyAgVW5pY29kZUVuY29kZUVycm9yIG9uIHJlY3Vyc2lvbiBsaW1pdC4KKworLSBJc3N1ZSAjMTExODc6IFJlbW92ZSBib290c3RyYXAgY29kZSAodXNlIEFTQ0lJKSBvZgorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCksIGl0IHdhcyByZXBsYWNlZCBieSBhIGJldHRlciBmYWxsYmFjayAodXNlIHRoZQorICBsb2NhbGUgZW5jb2RpbmcpIGluIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKS4KKworLSBDaGVjayBmb3IgTlVMTCByZXN1bHQgaW4gUHlUeXBlX0Zyb21TcGVjLgorCistIElzc3VlICMxMDUxNjogTmV3IGNvcHkoKSBhbmQgY2xlYXIoKSBtZXRob2RzIGZvciBsaXN0cyBhbmQgYnl0ZWFycmF5cy4KKworLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCisgIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCisKKy0gSXNzdWUgIzEyMzgwOiBUaGUgcmp1c3QsIGxqdXN0IGFuZCBjZW50ZXIgbWV0aG9kcyBvZiBieXRlcyBhbmQgYnl0ZWFycmF5CisgIG5vdyBhY2NlcHQgYSBieXRlYXJyYXkgYXJndW1lbnQuCisKIExpYnJhcnkKIC0tLS0tLS0KIAorLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKKyAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCisgIGZpeGVkLgorCistIElzc3VlICMxNDE2NjogUGlja2xlciBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsIGBgZGlzcGF0Y2hfdGFibGVgYAorICBhdHRyaWJ1dGUgd2hpY2ggYWxsb3dzIHRvIHNldCBjdXN0b20gcGVyLXBpY2tsZXIgcmVkdWN0aW9uIGZ1bmN0aW9ucy4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQorICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KKworLSBJc3N1ZSAjMTM1NTA6IFJlbW92ZSB0aGUgZGVidWcgbWFjaGluZXJ5IGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGU6IHJlbW92ZQorICB2ZXJib3NlIGFyZ3VtZW50cyBmcm9tIGFsbCB0aHJlYWRpbmcgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgorCistIElzc3VlICMxNDE1OTogRml4IHRoZSBsZW4oKSBvZiB3ZWFrIGNvbnRhaW5lcnMgKFdlYWtTZXQsIFdlYWtLZXlEaWN0aW9uYXJ5LAorICBXZWFrVmFsdWVEaWN0aW9uYXJ5KSB0byByZXR1cm4gYSBiZXR0ZXIgYXBwcm94aW1hdGlvbiB3aGVuIHNvbWUgb2JqZWN0cworICBhcmUgZGVhZCBvciBkeWluZy4gIE1vcmVvdmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm93IE8oMSkgcmF0aGVyIHRoYW4KKyAgTyhuKS4KKworLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCisgIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KKworLSBJc3N1ZSAjMTE4NDE6IEZpeCBjb21wYXJpc29uIGJ1ZyB3aXRoICdyYycgdmVyc2lvbnMgaW4gcGFja2FnaW5nLnZlcnNpb24uCisgIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQorICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscworICBvbiBXaW5kb3dzLiAgQWxzbyBmaXhlZCBpbiBwYWNrYWdpbmcuCisKKy0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucworICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KKwogLSBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBzbGFzaGVzIGluIHRoZSBzdGFydCB0YWcuCiAKKy0gSXNzdWUgIzEzNjQxOiBEZWNvZGluZyBmdW5jdGlvbnMgaW4gdGhlIGJhc2U2NCBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5CisgIHVuaWNvZGUgc3RyaW5ncy4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCisKKy0gSXNzdWUgIzE0MDQzOiBTcGVlZCB1cCBpbXBvcnRsaWIncyBfRmlsZUZpbmRlciBieSBhdCBsZWFzdCA4eCwgYW5kIGFkZCBhCisgIG5ldyBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSBmdW5jdGlvbi4KKwogLSBJc3N1ZSAjMTQwMDE6IENWRS0yMDEyLTA4NDU6IHhtbHJwYzogRml4IGFuIGVuZGxlc3MgbG9vcCBpbgogICBTaW1wbGVYTUxSUENTZXJ2ZXIgdXBvbiBtYWxmb3JtZWQgUE9TVCByZXF1ZXN0LgogCistIElzc3VlICMxMzk2MTogTW92ZSBpbXBvcnRsaWIgb3ZlciB0byB1c2luZyBvcy5yZXBsYWNlKCkgZm9yIGF0b21pYyByZW5hbWluZy4KKworLSBEbyBhd2F5IHdpdGggYW1iaWd1b3VzIGxldmVsIHZhbHVlcyAoYXMgc3VnZ2VzdGVkIGJ5IFBFUCAzMjgpIGluCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgYnkgcmFpc2luZyBWYWx1ZUVycm9yIHdoZW4gbGV2ZWwgPCAwLgorCiAtIElzc3VlICMyNDg5OiBwdHkuc3Bhd24gY291bGQgY29uc3VtZSAxMDAlIGNwdSB3aGVuIGl0IGVuY291bnRlcmVkIGFuIEVPRi4KIAogLSBJc3N1ZSAjMTMwMTQ6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgogCistIElzc3VlICMxMzc3NzogQWRkIFBGX1NZU1RFTSBzb2NrZXRzIG9uIE9TIFguCisgIFBhdGNoIGJ5IE1pY2hhZWwgR29kZXJiYXVlci4KKwogLSBJc3N1ZSAjMTMwMTU6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIGRlZmF1bHRkaWN0Ll9fcmVwcl9fLgogICBQYXRjaCBieSBTdW1hbiBTYWhhLgogCi0tIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGJ1aWxkX2V4dCBjb21tYW5kIC0tbGlicmFyaWVzIG9wdGlvbiBub3cKLSAgY29ycmVjdGx5IHBhcnNlcyBtdWx0aXBsZSB2YWx1ZXMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzLgorLSBJc3N1ZSAjMTMyNjExMzogZGlzdHV0aWxzJyBhbmQgcGFja2FnaW5nJ3MgYnVpbGRfZXh0IGNvbW1hbmRzIG9wdGlvbiBub3cKKyAgY29ycmVjdGx5IHBhcnNlcyBtdWx0aXBsZSB2YWx1ZXMgKHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIG9yIGNvbW1hcykgZ2l2ZW4KKyAgdG8gdGhlaXIgLS1saWJyYXJpZXMgb3B0aW9uLgogCiAtIElzc3VlICMxMDI4Nzogbm50cGxpYiBub3cgcXVlcmllcyB0aGUgc2VydmVyJ3MgQ0FQQUJJTElUSUVTIGZpcnN0IGJlZm9yZQogICBzZW5kaW5nIE1PREUgUkVBREVSLCBhbmQgb25seSBzZW5kcyBpdCBpZiBub3QgYWxyZWFkeSBpbiBSRUFERVIgbW9kZS4KICAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCi0tIElzc3VlICMxMzk3OTogQSBidWcgaW4gY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IHRoYXQgY2F1c2VkCi0gIHRoZSB3cm9uZyBsaWJyYXJ5IG5hbWUgdG8gYmUgcmV0dXJuZWQgaGFzIGJlZW4gZml4ZWQuCi0KIC0gSXNzdWUgIzEzOTkzOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gZW5kIHRhZ3Mgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKKy0gSXNzdWUgIzEzOTMwOiBsaWIydG8zIG5vdyBzdXBwb3J0cyB3cml0aW5nIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgorICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQorICBzdWZmaXguCisKIC0gSXNzdWUgIzk3NTA6IEZpeCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgb24gdGFibGVzIGFuZCBmaWVsZHMKICAgd2l0aCBhIG5hbWUgdGhhdCBpcyBhIGtleXdvcmQgb3IgY29udGFpbnMgcXVvdGVzLiBQYXRjaCBieSBNYXJrbwogICBLb2h0YWxhLgpAQCAtODUzLDYgKzI0NDcsMjggQEAKIC0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKKy0gSXNzdWUgIzEzOTIxOiBVbmRvY3VtZW50IGFuZCBjbGVhbiB1cCBzcWxpdGUzLk9wdGltaXplZFVuaWNvZGUsCisgIHdoaWNoIGlzIG9ic29sZXRlIGluIFB5dGhvbiAzLnguIEl0J3Mgbm93IGFsaWFzZWQgdG8gc3RyIGZvcgorICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKworLSBXaGVuICcnIGlzIGEgcGF0aCAoZS5nLiBpbiBzeXMucGF0aCksIG1ha2Ugc3VyZSBfX2ZpbGVfXyB1c2VzIHRoZSBjdXJyZW50CisgIHdvcmtpbmcgZGlyZWN0b3J5IGluc3RlYWQgb2YgJycgaW4gaW1wb3J0bGliLgorCistIElzc3VlICMxMzYwOTogQWRkIHR3byBmdW5jdGlvbnMgdG8gcXVlcnkgdGhlIHRlcm1pbmFsIHNpemU6CisgIG9zLmdldF90ZXJtaW5hbF9zaXplIChsb3cgbGV2ZWwpIGFuZCBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUgKGhpZ2ggbGV2ZWwpLgorICBQYXRjaCBieSBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrLgorCistIElzc3VlICMxMzg0NTogT24gV2luZG93cywgdGltZS50aW1lKCkgbm93IHVzZXMgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKQorICBpbnN0ZWFkIG9mIGZ0aW1lKCkgdG8gaGF2ZSBhIHJlc29sdXRpb24gb2YgMTAwIG5zIGluc3RlYWQgb2YgMSBtcyAodGhlIGNsb2NrCisgIGFjY3VyYWN5IGlzIGJldHdlZW4gMC41IG1zIGFuZCAxNSBtcykuCisKKy0gSXNzdWUgIzEzODQ2OiBBZGQgdGltZS5tb25vdG9uaWMoKSwgbW9ub3RvbmljIGNsb2NrLgorCistIElzc3VlICM4MTg0OiBtdWx0aXByb2Nlc3Npbmc6IE9uIFdpbmRvd3MsIGRvbid0IHNldCBTT19SRVVTRUFERFIgb24KKyAgQ29ubmVjdGlvbiBzb2NrZXRzLCBhbmQgc2V0IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFIG9uIG5hbWVkIHBpcGVzLCB0bworICBtYWtlIHN1cmUgdHdvIGxpc3RlbmVycyBjYW4ndCBiaW5kIHRvIHRoZSBzYW1lIHNvY2tldC9waXBlIChvciBhbnkgZXhpc3RpbmcKKyAgc29ja2V0L3BpcGUpLgorCiAtIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgogCiAtIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKQEAgLTg2Niw4ICsyNDgyLDE1IEBACiAtIElzc3VlICM5NjQ0Mzc6IE1ha2UgSURMRSBoZWxwIHdpbmRvdyBub24tbW9kYWwuCiAgIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvIGFuZCBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTM3MzQ6IEFkZCBvcy5md2FsaygpLCBhIGRpcmVjdG9yeSB3YWxraW5nIGZ1bmN0aW9uIHlpZWxkaW5nIGZpbGUKKyAgZGVzY3JpcHRvcnMuCisKIC0gSXNzdWUgIzI5NDU6IE1ha2UgdGhlIGRpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBhd2FyZSBvZiBiZGlzdF9ycG0gcHJvZHVjdHMuCiAKKy0gSXNzdWUgIzEzNzEyOiBweXNldHVwIGNyZWF0ZSBzaG91bGQgbm90IGNvbnZlcnQgcGFja2FnZV9kYXRhIHRvIGV4dHJhX2ZpbGVzLgorCistIElzc3VlICMxMTgwNTogcGFja2FnZV9kYXRhIGluIHNldHVwLmNmZyBzaG91bGQgYWxsb3cgbW9yZSB0aGFuIG9uZSB2YWx1ZS4KKwogLSBJc3N1ZSAjMTM5MzM6IElETEUgYXV0by1jb21wbGV0ZSBkaWQgbm90IHdvcmsgd2l0aCBzb21lIGltcG9ydGVkCiAgIG1vZHVsZSwgbGlrZSBoYXNobGliLiAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQogCkBAIC04NzgsNiArMjUwMSw5IEBACiAtIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgogICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgogCistIElzc3VlICM4ODI4OiBBZGQgbmV3IGZ1bmN0aW9uIG9zLnJlcGxhY2UoKSwgZm9yIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nCisgIHdpdGggb3ZlcndyaXRpbmcuCisKIC0gSXNzdWUgIzEzODQ4OiBvcGVuKCkgYW5kIHRoZSBGaWxlSU8gY29uc3RydWN0b3Igbm93IGNoZWNrIGZvciBOVUwKICAgY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBuYW1lLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCkBAIC04OTAsNiArMjUxNiwxNyBAQAogLSBJc3N1ZSAjMTM4ODU6IENWRS0yMDExLTMzODk6IHRoZSBfc3NsIG1vZHVsZSB3b3VsZCBhbHdheXMgZGlzYWJsZSB0aGUgQ0JDCiAgIElWIGF0dGFjayBjb3VudGVybWVhc3VyZS4KIAorLSBJc3N1ZSAjMTM4NDc6IHRpbWUubG9jYWx0aW1lKCkgYW5kIHRpbWUuZ210aW1lKCkgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZAorICBvZiBWYWx1ZUVycm9yIG9uIGZhaWx1cmUuIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5hc2N0aW1lKCkgbm93IHJhaXNlcyBhbgorICBPU0Vycm9yIGlmIGxvY2FsdGltZSgpIGZhaWxlZC4gdGltZS5jbG9jaygpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCisgIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkCisKKy0gSXNzdWUgIzEzODYyOiBGaXggc3B1cmlvdXMgZmFpbHVyZSBpbiB0ZXN0X3psaWIgZHVlIHRvIHJ1bnRpbWUvY29tcGlsZSB0aW1lCisgIG1pbm9yIHZlcnNpb25zIG5vdCBtYXRjaGluZy4KKworLSBJc3N1ZSAjMTI4MDQ6IEZpeCB0ZXN0X3NvY2tldCBhbmQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0cworICBvbiBhIHN5c3RlbSB3aXRob3V0IGludGVybmV0IGFjY2Vzcy4KKwogLSBJc3N1ZSAjMTM3NzI6IEluIG9zLnN5bWxpbmsoKSB1bmRlciBXaW5kb3dzLCBkbyBub3QgdHJ5IHRvIGd1ZXNzIHRoZSBsaW5rCiAgIHRhcmdldCdzIHR5cGUgKGZpbGUgb3IgZGlyZWN0b3J5KS4gIFRoZSBkZXRlY3Rpb24gd2FzIGJ1Z2d5IGFuZCBtYWRlIHRoZQogICBjYWxsIG5vbi1hdG9taWMgKHRoZXJlZm9yZSBwcm9uZSB0byByYWNlIGNvbmRpdGlvbnMpLgpAQCAtOTA1LDYgKzI1NDIsMTEgQEAKIC0gSXNzdWUgIzEzODAzOiBVbmRlciBTb2xhcmlzLCBkaXN0dXRpbHMgZG9lc24ndCBpbmNsdWRlIGJpdG5lc3MKICAgaW4gdGhlIGRpcmVjdG9yeSBuYW1lLgogCistIElzc3VlICMxMDI3ODogQWRkIHRpbWUud2FsbGNsb2NrKCkgZnVuY3Rpb24sIG1vbm90b25pYyBjbG9jay4KKworLSBJc3N1ZSAjMTM4MDk6IEZpeCByZWdyZXNzaW9uIHdoZXJlIGJ6MiBtb2R1bGUgd291bGRuJ3Qgd29yayB3aGVuIHRocmVhZHMgYXJlCisgIGRpc2FibGVkLiBPcmlnaW5hbCBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KKwogLSBJc3N1ZSAjMTM1ODk6IEZpeCBzb21lIHNlcmlhbGl6YXRpb24gcHJpbWl0aXZlcyBpbiB0aGUgYWlmYyBtb2R1bGUuCiAgIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCiAKQEAgLTkyMSw2ICsyNTYzLDExIEBACiAtIElzc3VlICMxMzUwMjogdGhyZWFkaW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBFdmVudC53YWl0KCkgdGhhdCBtYWRlIGl0CiAgIHJldHVybiBGYWxzZSB3aGVuIHRoZSBldmVudCB3YXMgc2V0IGFuZCBjbGVhcmVkIHJpZ2h0IGFmdGVyLgogCistIElzc3VlICM5OTkzOiBXaGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMsCisgIGFuZCB0aGUgc291cmNlIGlzIGEgc3ltbGluaywgc2h1dGlsLm1vdmUoKSBub3cgcmVjcmVhdGVzIGEgc3ltbGluayBvbiB0aGUKKyAgZGVzdGluYXRpb24gaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlIGNvbnRlbnRzLiAgUGF0Y2ggYnkgSm9uYXRoYW4gTmllaG9mCisgIGFuZCBIeW5layBTY2hsYXdhY2suCisKIC0gSXNzdWUgIzEyOTI2OiBGaXggYSBidWcgaW4gdGFyZmlsZSdzIGxpbmsgZXh0cmFjdGlvbi4KIAogLSBJc3N1ZSAjMTM2OTY6IEZpeCB0aGUgMzAyIFJlbGF0aXZlIFVSTCBSZWRpcmVjdGlvbiBwcm9ibGVtLgpAQCAtOTI4LDE1ICsyNTc1LDQ0IEBACiAtIElzc3VlICMxMzYzNjogV2VhayBjaXBoZXJzIGFyZSBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgc3NsIG1vZHVsZQogICAoZXhjZXB0IHdoZW4gU1NMdjIgaXMgZXhwbGljaXRseSBhc2tlZCBmb3IpLgogCistIElzc3VlICMxMjcxNTogQWRkIGFuIG9wdGlvbmFsIHN5bWxpbmtzIGFyZ3VtZW50IHRvIHNodXRpbCBmdW5jdGlvbnMKKyAgKGNvcHlmaWxlLCBjb3B5bW9kZSwgY29weXN0YXQsIGNvcHksIGNvcHkyKS4gIFdoZW4gdGhhdCBwYXJhbWV0ZXIgaXMKKyAgdHJ1ZSwgc3ltbGlua3MgYXJlbid0IGRlcmVmZXJlbmNlZCBhbmQgdGhlIG9wZXJhdGlvbiBpbnN0ZWFkIGFjdHMgb24gdGhlCisgIHN5bWxpbmsgaXRzZWxmIChvciBjcmVhdGVzIG9uZSwgaWYgcmVsZXZhbnQpLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCistIEFkZCBhIGZsYWdzIHBhcmFtZXRlciB0byBzZWxlY3QuZXBvbGwuCisKIC0gSXNzdWUgIzEyNzk4OiBVcGRhdGVkIHRoZSBtaW1ldHlwZXMgZG9jdW1lbnRhdGlvbi4KIAorLSBJc3N1ZSAjMTM2MjY6IEFkZCBzdXBwb3J0IGZvciBTU0wgRGlmZmllLUhlbGxtYW4ga2V5IGV4Y2hhbmdlLCB0aHJvdWdoIHRoZQorICBTU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zKCkgbWV0aG9kIGFuZCB0aGUgc3NsLk9QX1NJTkdMRV9ESF9VU0Ugb3B0aW9uLgorCiAtIElzc3VlICMxMTAwNjogRG9uJ3QgaXNzdWUgbG93IGxldmVsIHdhcm5pbmcgaW4gc3VicHJvY2VzcyB3aGVuIHBpcGUyKCkgZmFpbHMuCiAKKy0gSXNzdWUgIzEzNjIwOiBTdXBwb3J0IGZvciBDaHJvbWUgYnJvd3NlciBpbiB3ZWJicm93c2VyLiAgUGF0Y2ggY29udHJpYnV0ZWQKKyAgYnkgQXJuYXVkIENhbG1ldHRlcy4KKwogLSBJc3N1ZSAjMTE4Mjk6IEZpeCBjb2RlIGV4ZWN1dGlvbiBob2xlcyBpbiBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGZvcgogICBtZXRhY2xhc3NlcyB3aXRoIG1ldGFjbGFzc2VzLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCiAKKy0gSXNzdWUgIzEyNzA4OiBBZGQgc3Rhcm1hcCgpIGFuZCBzdGFybWFwX2FzeW5jKCkgbWV0aG9kcyAoc2ltaWxhciB0bworICBpdGVydG9vbHMuc3Rhcm1hcCgpKSB0byBtdWx0aXByb2Nlc3NpbmcuUG9vbC4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKwogLSBJc3N1ZSAjMTc4NTogRml4IGluc3BlY3QgYW5kIHB5ZG9jIHdpdGggbWlzYmVoYXZpbmcgZGVzY3JpcHRvcnMuCiAKKy0gSXNzdWUgIzEzNjM3OiAiYTJiIiBmdW5jdGlvbnMgaW4gdGhlIGJpbmFzY2lpIG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKKyAgdW5pY29kZSBzdHJpbmdzLgorCistIElzc3VlICMxMzYzNDogQWRkIHN1cHBvcnQgZm9yIHF1ZXJ5aW5nIGFuZCBkaXNhYmxpbmcgU1NMIGNvbXByZXNzaW9uLgorCistIElzc3VlICMxMzYyNzogQWRkIHN1cHBvcnQgZm9yIFNTTCBFbGxpcHRpYyBDdXJ2ZS1iYXNlZCBEaWZmaWUtSGVsbG1hbgorICBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlIFNTTENvbnRleHQuc2V0X2VjZGhfY3VydmUoKSBtZXRob2QgYW5kIHRoZQorICBzc2wuT1BfU0lOR0xFX0VDREhfVVNFIG9wdGlvbi4KKworLSBJc3N1ZSAjMTM2MzU6IEFkZCBzc2wuT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBzbyB0aGF0IFNTTCBzZXJ2ZXJzCisgIGNob29zZSB0aGUgY2lwaGVyIGJhc2VkIG9uIHRoZWlyIG93biBwcmVmZXJlbmNlcywgcmF0aGVyIHRoYW4gb24gdGhlCisgIGNsaWVudCdzLgorCiAtIElzc3VlICMxMTgxMzogRml4IGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yIG1vZHVsZXMuIFBhdGNoIGJ5IEFuZHJlYXMKICAgU3TDvGhyay4KIApAQCAtOTQ5LDI3ICsyNjI1LDYyIEBACiAtIElzc3VlICM4MDM1OiB1cmxsaWI6IEZpeCBhIGJ1ZyB3aGVyZSB0aGUgY2xpZW50IGNvdWxkIHJlbWFpbiBzdHVjayBhZnRlciBhCiAgIHJlZGlyZWN0aW9uIG9yIGFuIGVycm9yLgogCistIElzc3VlICMxMzU2MDogb3Muc3RyZXJyb3IoKSBub3cgdXNlcyB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZgorICBVVEYtOC4KKworLSBJc3N1ZSAjMTM1NjA6IEFkZCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKCksIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCkKKyAgYW5kIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoKSBmdW5jdGlvbnMgdG8gdGhlIEMgQVBJIHRvIGRlY29kZS9lbmNvZGUgZnJvbS90bworICB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzgzNzM6IFRoZSBmaWxlc3lzdGVtIHBhdGggb2YgQUZfVU5JWCBzb2NrZXRzIG5vdyB1c2VzIHRoZSBmaWxlc3lzdGVtCisgIGVuY29kaW5nIGFuZCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsIHJhdGhlciB0aGFuIFVURi04LiAgUGF0Y2gKKyAgYnkgRGF2aWQgV2F0c29uLgorCiAtIElzc3VlICMxMDM1MDogUmVhZCBhbmQgc2F2ZSBlcnJubyBiZWZvcmUgY2FsbGluZyBhIGZ1bmN0aW9uIHdoaWNoIG1pZ2h0CiAgIG92ZXJ3cml0ZSBpdC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCiAKKy0gSXNzdWUgIzExNjEwOiBJbnRyb2R1Y2UgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGRlY2xhcmUgYWJzdHJhY3QgcHJvcGVydGllcy4KKwogLSBJc3N1ZSAjMTM1OTE6IEEgYnVnIGluIGltcG9ydGxpYiBoYXMgYmVlbiBmaXhlZCB0aGF0IGNhdXNlZCBpbXBvcnRfbW9kdWxlCiAgIHRvIGxvYWQgYSBtb2R1bGUgdHdpY2UuCiAKLS0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50Ci0gIGZpbGVzLCBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guCi0gIChvcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eSkKKy0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLAorICBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guICBPcmlnaW5hbCBwYXRjaCBieQorICBSb2dlciBTZXJ3eS4KIAotLSBJc3N1ZSAjNTkwNTogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCBpbnN0ZWFkIG9mCi0gIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgorLSBJc3N1ZSAjMTM0NDkgc2NoZWQuc2NoZWR1bGVyLnJ1bigpIG1ldGhvZCBoYXMgYSBuZXcgImJsb2NraW5nIiBwYXJhbWV0ZXIgd2hpY2gKKyAgd2hlbiBzZXQgdG8gRmFsc2UgbWFrZXMgcnVuKCkgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCisgIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sw6AuCisKKy0gSXNzdWUgIzg2ODQgc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZAorICBlbnZpcm9ubWVudHMuICBQYXRjaCBieSBKb3NpYWggQ2FybHNvbiBhbmQgR2lhbXBhb2xvIFJvZG9sw6AuCisKKy0gQWxpYXMgcmVzb3VyY2UuZXJyb3IgdG8gT1NFcnJvciBhbGEgUEVQIDMxNTEuCisKKy0gSXNzdWUgIzU2ODk6IEFkZCBzdXBwb3J0IGZvciBsem1hIGNvbXByZXNzaW9uIHRvIHRoZSB0YXJmaWxlIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyNDg6IFR1cm4gMy4yJ3MgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpbnRvIDMuMydzCisgIERlcHJlY2F0aW9uV2FybmluZy4gIEl0IGNvdmVycyAnY2dpLmVzY2FwZScsICdpbXBvcnRsaWIuYWJjLlB5TG9hZGVyJywKKyAgJ2ltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXInLCAnbm50cGxpYi5OTlRQLnhndGl0bGUnLCAnbm50cGxpYi5OTlRQLnhwYXRoJywKKyAgYW5kIHByaXZhdGUgYXR0cmlidXRlcyBvZiAnc210cGQuU01UUENoYW5uZWwnLgorCistIElzc3VlICM1OTA1LCAjMTM1NjA6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlCisgIGVuY29kaW5nLCBpbnN0ZWFkIG9mIFVURi04LCBpZiB0aGUgd2NzZnRpbWUoKSBmdW5jdGlvbiBpcyBub3QgYXZhaWxhYmxlLgogCiAtIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KICAgUGF0Y2ggYnkgVGFsIEVpbmF0LgogCistIElzc3VlICMxMzQ2NDogQWRkIGEgcmVhZGludG8oKSBtZXRob2QgdG8gaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLiAgUGF0Y2gKKyAgYnkgSm9uIEt1aG4uCisKIC0gdGFyZmlsZS5weTogQ29ycmVjdGx5IGRldGVjdCBiemlwMiBjb21wcmVzc2VkIHN0cmVhbXMgd2l0aCBibG9ja3NpemVzCiAgIG90aGVyIHRoYW4gOTAway4KIAogLSBJc3N1ZSAjMTM0Mzk6IEZpeCBtYW55IGVycm9ycyBpbiB0dXJ0bGUgZG9jc3RyaW5ncy4KIAorLSBJc3N1ZSAjNjcxNTogQWRkIGEgbW9kdWxlICdsem1hJyBmb3IgY29tcHJlc3Npb24gdXNpbmcgdGhlIExaTUEgYWxnb3JpdGhtLgorICBUaGFua3MgdG8gUGVyIMOYeXZpbmQgS2FybHNlbiBmb3IgdGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24uCisKIC0gSXNzdWUgIzEzNDg3OiBNYWtlIGluc3BlY3QuZ2V0bW9kdWxlIHJvYnVzdCBhZ2FpbnN0IGNoYW5nZXMgZG9uZSB0bwogICBzeXMubW9kdWxlcyB3aGlsZSBpdCBpcyBpdGVyYXRpbmcgb3ZlciBpdC4KIApAQCAtOTc5LDE1ICsyNjkwLDMxIEBACiAtIElzc3VlICMxMzQ0NDogV2hlbiBzdGRvdXQgaGFzIGJlZW4gY2xvc2VkIGV4cGxpY2l0bHksIHdlIHNob3VsZCBub3QgYXR0ZW1wdAogICB0byBmbHVzaCBpdCBhdCBzaHV0ZG93biBhbmQgcHJpbnQgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzEyNTY3OiBUaGUgY3Vyc2VzIG1vZHVsZSB1c2VzIFVuaWNvZGUgZnVuY3Rpb25zIGZvciBVbmljb2RlIGFyZ3VtZW50cworICB3aGVuIGl0IGlzIGxpbmtlZCB0byB0aGUgbmN1cnNlcyBsaWJyYXJ5LiBJdCBlbmNvZGVzIGFsc28gVW5pY29kZSBzdHJpbmdzIHRvCisgIHRoZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOC4KKwogLSBJc3N1ZSAjMTI4NTY6IEVuc3VyZSBjaGlsZCBwcm9jZXNzZXMgZG8gbm90IGluaGVyaXQgdGhlIHBhcmVudCdzIHJhbmRvbQogICBzZWVkIGZvciBmaWxlbmFtZSBnZW5lcmF0aW9uIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUuICBQYXRjaCBieSBCcmlhbgogICBIYXJyaW5nLgogCistIElzc3VlICM5OTU3OiBTcG9vbGVkVGVtcG9yYXJ5RmlsZS50cnVuY2F0ZSgpIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNpemUKKyAgcGFyYW1ldGVyLCBhcyBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cy4gIFBhdGNoIGJ5IFJ5YW4gS2VsbHkuCisKIC0gSXNzdWUgIzEzNDU4OiBGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgc3NsIG1vZHVsZSB3aGVuIGRlY29kaW5nIGEKICAgY2VydGlmaWNhdGUgd2l0aCBhIHN1YmplY3RBbHROYW1lLiAgUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCiAKIC0gSXNzdWUgIzEzNDE1OiBvcy51bnNldGVudigpIGRvZXNuJ3QgaWdub3JlIGVycm9ycyBhbnltb3JlLgogCistIElzc3VlICMxMzI0NTogc2NoZWQuc2NoZWR1bGVyIGNsYXNzIGNvbnN0cnVjdG9yJ3MgdGltZWZ1bmMgYW5kCisgIGRlbGF5ZnVuY3QgcGFyYW1ldGVycyBhcmUgbm93IG9wdGlvbmFsLgorICBzY2hlZHVsZXIuZW50ZXIgYW5kIHNjaGVkdWxlci5lbnRlcmFicyBtZXRob2RzIGdhaW5lZCBhIG5ldyBrd2FyZ3MgcGFyYW1ldGVyLgorICBQYXRjaCBjb250cmlidXRlZCBieSBDaHJpcyBDbGFyay4KKworLSBJc3N1ZSAjMTIzMjg6IFVuZGVyIFdpbmRvd3MsIHJlZmFjdG9yIGhhbmRsaW5nIG9mIEN0cmwtQyBldmVudHMgYW5kCisgIG1ha2UgX211bHRpcHJvY2Vzc2luZy53aW4zMi5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzIGludGVycnVwdGlibGUgd2hlbgorICB0aGUgd2FpdF9mbGFnIHBhcmFtZXRlciBpcyBmYWxzZS4gIFBhdGNoIGJ5IHNidC4KKwogLSBJc3N1ZSAjMTMzMjI6IEZpeCBCdWZmZXJlZFdyaXRlci53cml0ZSgpIHRvIGVuc3VyZSB0aGF0IEJsb2NraW5nSU9FcnJvciBpcwogICByYWlzZWQgd2hlbiB0aGUgd3JhcHBlZCByYXcgZmlsZSBpcyBub24tYmxvY2tpbmcgYW5kIHRoZSB3cml0ZSB3b3VsZCBibG9jay4KICAgUHJldmlvdXMgY29kZSBhc3N1bWVkIHRoYXQgdGhlIHJhdyB3cml0ZSgpIHdvdWxkIHJhaXNlIEJsb2NraW5nSU9FcnJvciwgYnV0CkBAIC0xMDAwLDEzICsyNzI3LDI1IEBACiAgIG5vZGUgd2hlbiBpdCBpcyB0aGUgb25seSBjaGlsZCBvZiBhbiBlbGVtZW50LiAgSW5pdGlhbCBwYXRjaCBieSBEYW4KICAgS2VuaWdzYmVyZy4KIAorLSBJc3N1ZSAjMTMzNzQ6IFRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHRoZSBvcyBtb2R1bGUuIFVzZQorICBVbmljb2RlIGZpbGVuYW1lcyBpbnN0ZWFkIG9mIGJ5dGVzIGZpbGVuYW1lcyB0byBub3QgZGVwZW5kIG9uIHRoZSBBTlNJIGNvZGUKKyAgcGFnZSBhbnltb3JlIGFuZCB0byBzdXBwb3J0IGFueSBmaWxlbmFtZS4KKworLSBJc3N1ZSAjMTMyOTc6IFVzZSBieXRlcyB0eXBlIHRvIHNlbmQgYW5kIHJlY2VpdmUgYmluYXJ5IGRhdGEgdGhyb3VnaCBYTUxSUEMuCisKKy0gSXNzdWUgIzYzOTc6IFN1cHBvcnQgIi9kZXYvcG9sbCIgcG9sbGluZyBvYmplY3RzIGluIHNlbGVjdCBtb2R1bGUsCisgIHVuZGVyIFNvbGFyaXMgJiBkZXJpdmF0aXZlcy4KKwogLSBJc3N1ZXMgIzE3NDU3NjEsICM3NTU2NzAsICMxMzM1NywgIzEyNjI5LCAjMTIwMDMxMzogSFRNTFBhcnNlciBub3cgY29ycmVjdGx5CiAgIGhhbmRsZXMgbm9uLXZhbGlkIGF0dHJpYnV0ZXMsIGluY2x1ZGluZyBhZGphY2VudCBhbmQgdW5xdW90ZWQgYXR0cmlidXRlcy4KIAotLSBJc3N1ZSAjMTMxOTM6IEZpeCBkaXN0dXRpbHMuZmlsZWxpc3QuRmlsZUxpc3QgdW5kZXIgV2luZG93cy4KKy0gSXNzdWUgIzEzMTkzOiBGaXggZGlzdHV0aWxzLmZpbGVsaXN0LkZpbGVMaXN0IGFuZCBwYWNrYWdpbmcubWFuaWZlc3QuTWFuaWZlc3QKKyAgdW5kZXIgV2luZG93cy4KIAogLSBJc3N1ZSAjMTMzODQ6IFJlbW92ZSB1bm5lY2Vzc2FyeSBfX2Z1dHVyZV9fIGltcG9ydCBpbiBMaWIvcmFuZG9tLnB5CiAKKy0gSXNzdWUgIzEzMTQ5OiBTcGVlZCB1cCBhcHBlbmQtb25seSBTdHJpbmdJTyBvYmplY3RzLgorCiAtIElzc3VlICMxMzM3MzogbXVsdGlwcm9jZXNzaW5nLlF1ZXVlLmdldCgpIGNvdWxkIHNvbWV0aW1lcyBibG9jayBpbmRlZmluaXRlbHkKICAgd2hlbiBjYWxsZWQgd2l0aCBhIHRpbWVvdXQuICBQYXRjaCBieSBBcm5hdWQgWXNtYWwuCiAKQEAgLTEwMjIsMTEgKzI3NjEsMjAgQEAKIC0gSXNzdWUgIzEzMzM5OiBGaXggY29tcGlsZSBlcnJvciBpbiBwb3NpeG1vZHVsZS5jIGR1ZSB0byBtaXNzaW5nIHNlbWljb2xvbi4KICAgVGhhbmtzIHRvIFJvYmVydCBYaWFvLgogCistIEJ5dGUgY29tcGlsYXRpb24gaW4gcGFja2FnaW5nIGlzIG5vdyBpc29sYXRlZCBmcm9tIHRoZSBjYWxsaW5nIFB5dGhvbiAtQiBvcgorICAtTyBvcHRpb25zLCBpbnN0ZWFkIG9mIGJlaW5nIGRpc2FsbG93ZWQgdW5kZXIgLUIgb3IgYnVnZ3kgdW5kZXIgLU8uCisKIC0gSXNzdWUgIzEwNTcwOiBjdXJzZXMucHV0cCgpIGFuZCBjdXJzZXMudHBhcm0oKSBhcmUgbm93IGV4cGVjdGluZyBhIGJ5dGUKICAgc3RyaW5nLCBpbnN0ZWFkIG9mIGEgVW5pY29kZSBzdHJpbmcuCiAKKy0gSXNzdWUgIzEzMjk1OiBodHRwLnNlcnZlciBub3cgcHJvZHVjZXMgdmFsaWQgSFRNTCA0LjAxIHN0cmljdC4KKwogLSBJc3N1ZSAjMjg5MjogcHJlc2VydmUgaXRlcnBhcnNlIGV2ZW50cyBpbiBjYXNlIG9mIFN5bnRheEVycm9yLgogCistIElzc3VlICMxMzI4NzogdXJsbGliLnJlcXVlc3QgYW5kIHVybGxpYi5lcnJvciBub3cgY29udGFpbnMgYW4gX19hbGxfXworICBhdHRyaWJ1dGUgdG8gZXhwb3NlIG9ubHkgcmVsZXZhbnQgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAgUGF0Y2ggYnkgRmxvcmVudAorICBYaWNsdW5hLgorCiAtIElzc3VlICM2NzA2NjQ6IEZpeCBIVE1MUGFyc2VyIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGNvbnRlbnQgb2YKICAgYGA8c2NyaXB0Pi4uLjwvc2NyaXB0PmBgIGFuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgogCkBAIC0xMDM2LDYgKzI3ODQsOSBAQAogLSBJc3N1ZSAjMTMyOTY6IEZpeCBJRExFIHRvIGNsZWFyIGNvbXBpbGUgX19mdXR1cmVfXyBmbGFncyBvbiBzaGVsbCByZXN0YXJ0LgogICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCiAKKy0gRml4IHRoZSB4bWxycGMuY2xpZW50IHVzZXIgYWdlbnQgdG8gcmV0dXJuIHNvbWV0aGluZyBzaW1pbGFyIHRvCisgIHVybGxpYi5yZXF1ZXN0IHVzZXIgYWdlbnQ6ICJQeXRob24teG1scnBjLzMuMyIuCisKIC0gSXNzdWUgIzEzMjkzOiBCZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byBtYXJzaGFsIGJ5dGVzIHVzaW5nCiAgIHhtbHJwYy5jbGllbnQuCiAKQEAgLTEwNDYsNTEgKzI3OTcsODEgQEAKIC0gSXNzdWUgIzEzMjczOiBmaXggYSBidWcgdGhhdCBwcmV2ZW50ZWQgSFRNTFBhcnNlciB0byBwcm9wZXJseSBkZXRlY3Qgc29tZQogICB0YWdzIHdoZW4gc3RyaWN0PUZhbHNlLgogCistIElzc3VlICMxMTE4MzogQWRkIGZpbmVyLWdyYWluZWQgZXhjZXB0aW9ucyB0byB0aGUgc3NsIG1vZHVsZSwgc28gdGhhdAorICB5b3UgZG9uJ3QgaGF2ZSB0byBpbnNwZWN0IHRoZSBleGNlcHRpb24ncyBhdHRyaWJ1dGVzIGluIHRoZSBjb21tb24gY2FzZS4KKworLSBJc3N1ZSAjMTMyMTY6IEFkZCBjcDY1MDAxIGNvZGVjLCB0aGUgV2luZG93cyBVVEYtOCAoQ1BfVVRGOCkuCisKKy0gSXNzdWUgIzEzMjI2OiBBZGQgUlRMRF94eHggY29uc3RhbnRzIHRvIHRoZSBvcyBtb2R1bGUuIFRoZXNlIGNvbnN0YW50cyBjYW4gYmUKKyAgdXNlZCB3aXRoIHN5cy5zZXRkbG9wZW5mbGFncygpLgorCistIElzc3VlICMxMDI3ODogQWRkIGNsb2NrX2dldHJlcygpLCBjbG9ja19nZXR0aW1lKCkgYW5kIENMT0NLX3h4eCBjb25zdGFudHMgdG8KKyAgdGhlIHRpbWUgbW9kdWxlLiB0aW1lLmNsb2NrX2dldHRpbWUodGltZS5DTE9DS19NT05PVE9OSUMpIHByb3ZpZGVzIGEKKyAgbW9ub3RvbmljIGNsb2NrCisKIC0gSXNzdWUgIzEwMzMyOiBtdWx0aXByb2Nlc3Npbmc6IGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYSBQb29sIGlzIGNsb3NlZAogICBiZWZvcmUgYWxsIHRhc2tzIGhhdmUgY29tcGxldGVkLgogCiAtIElzc3VlICMxMzI1NTogd3JvbmcgZG9jc3RyaW5ncyBpbiBhcnJheSBtb2R1bGUuCiAKKy0gSXNzdWUgIzg1NDA6IFJlbW92ZSBkZXByZWNhdGVkIENvbnRleHQuX2NsYW1wIGF0dHJpYnV0ZSBpbiBEZWNpbWFsIG1vZHVsZS4KKworLSBJc3N1ZSAjMTMyMzU6IEFkZGVkIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gd2FybigpIG1ldGhvZCBhbmQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzkxNjg6IG5vdyBzbXRwZCBpcyBhYmxlIHRvIGJpbmQgcHJpdmlsZWdlZCBwb3J0LgogCiAtIElzc3VlICMxMjUyOTogZml4IGNnaS5wYXJzZV9oZWFkZXIgaXNzdWUgb24gc3RyaW5ncyB3aXRoIGRvdWJsZS1xdW90ZXMgYW5kCiAgIHNlbWljb2xvbnMgdG9nZXRoZXIuIFBhdGNoIGJ5IEJlbiBEYXJuZWxsIGFuZCBQZXRyaSBMZWh0aW5lbi4KIAotLSBJc3N1ZSAjMTI0NDg6IHNtdHBsaWIgbm93IGZsdXNoZXMgc3Rkb3V0IHdoaWxlIHJ1bm5pbmcgYGBweXRob24gLW0gc210cGxpYmBgCi0gIGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHByb21wdCBjb3JyZWN0bHkuCistIElzc3VlICMxMzIyNzogZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBoYXMgYSBvcHRpb24gdG8gZGlzdGluZ3Vpc2gKKyAgY2FsbHMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMuCiAKIC0gSXNzdWUgIzYwOTA6IHppcGZpbGUgcmFpc2VzIGEgVmFsdWVFcnJvciB3aGVuIGEgZG9jdW1lbnQgd2l0aCBhIHRpbWVzdGFtcAogICBlYXJsaWVyIHRoYW4gMTk4MCBpcyBwcm92aWRlZC4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEzMTUwOiBzeXNjb25maWcgbm8gbG9uZ2VyIHBhcnNlcyB0aGUgTWFrZWZpbGUgYW5kIGNvbmZpZy5oIGZpbGVzCisgIHdoZW4gaW1wb3J0ZWQsIGluc3RlYWQgZG9pbmcgaXQgYXQgYnVpbGQgdGltZS4gIFRoaXMgbWFrZXMgaW1wb3J0aW5nCisgIHN5c2NvbmZpZyBmYXN0ZXIgYW5kIHJlZHVjZXMgUHl0aG9uIHN0YXJ0dXAgdGltZSBieSAyMCUuCisKKy0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAorICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgorCistIElzc3VlICMxMjQ1NDogVGhlIG1haWxib3ggbW9kdWxlIGlzIG5vdyB1c2luZyBBU0NJSSwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlCisgIGVuY29kaW5nLCB0byByZWFkIGFuZCB3cml0ZSBNSCBtYWlsYm94ZXMgKC5taF9zZXF1ZW5jZXMgZmlsZXMpLgorCiAtIElzc3VlICMxMzE5NDogemxpYi5jb21wcmVzc29iaigpLmNvcHkoKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkuY29weSgpIGFyZQogICBub3cgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCiAKKy0gaXNzdWUgIzE2NzMwMDc6IHVybGxpYjIgIHRvIHN1cHBvcnQgSEVBRCByZXF1ZXN0IHZpYSBuZXcgbWV0aG9kIGFyZ3VtZW50LgorICBQYXRjaCBjb250cmlidXRpb25zIGJ5IERhdmlkIFN0YW5laywgUGF0cmljayBXZXN0ZXJob2ZmIGFuZCBFemlvIE1lbG90dGkuCisKKy0gSXNzdWUgIzEyMzg2OiBwYWNrYWdpbmcgZG9lcyBub3QgZmFpbCBhbnltb3JlIHdoZW4gd3JpdGluZyB0aGUgUkVTT1VSQ0VTCisgIGZpbGUuCisKIC0gSXNzdWUgIzEzMTU4OiBGaXggZGVjb2RpbmcgYW5kIGVuY29kaW5nIG9mIEdOVSB0YXIgc3BlY2lmaWMgYmFzZS0yNTYgbnVtYmVyCiAgIGZpZWxkcyBpbiB0YXJmaWxlLgogCi0tIElzc3VlICMxMzE3NzogIEZ1bmN0b29scyBscnVfY2FjaGUoKSBubyBsb25nZXIgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uCi0gIGluc2lkZSBhbiBleGNlcHRpb24gaGFuZGxlci4gIFRoaXMgbWFrZXMgdHJhY2ViYWNrcyBlYXNpZXIgdG8gcmVhZCBiZWNhdXNlCi0gIGNoYWluZWQgZXhjZXB0aW9ucyBhcmUgYXZvaWRlZC4KLQogLSBJc3N1ZSAjMTMwMjU6IG1pbWV0eXBlcyBpcyBub3cgcmVhZGluZyBNSU1FIHR5cGVzIHVzaW5nIHRoZSBVVEYtOCBlbmNvZGluZywKICAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgogCiAtIElzc3VlICMxMDY1MzogT24gV2luZG93cywgdXNlIHN0cmZ0aW1lKCkgaW5zdGVhZCBvZiB3Y3NmdGltZSgpIGJlY2F1c2UKICAgd2NzZnRpbWUoKSBkb2Vzbid0IGZvcm1hdCB0aW1lIHpvbmUgY29ycmVjdGx5LgogCistIElzc3VlICMxMzE1MDogVGhlIHRva2VuaXplIG1vZHVsZSBkb2Vzbid0IGNvbXBpbGUgbGFyZ2UgcmVndWxhciBleHByZXNzaW9ucworICBhdCBzdGFydHVwIGFueW1vcmUuCisKIC0gSXNzdWUgIzExMTcxOiBGaXggZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfbWFrZWZpbGVfZmlsZW5hbWUgd2hlbiBQeXRob24gd2FzCiAgIGNvbmZpZ3VyZWQgd2l0aCBkaWZmZXJlbnQgcHJlZml4IGFuZCBleGVjLXByZWZpeC4KIAotLSBJc3N1ZSAjMTEyNTQ6IFRlYWNoIGRpc3R1dGlscyB0byBjb21waWxlIC5weWMgYW5kIC5weW8gZmlsZXMgaW4KKy0gSXNzdWUgIzExMjU0OiBUZWFjaCBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyB0byBjb21waWxlIC5weWMgYW5kIC5weW8gZmlsZXMgaW4KICAgUEVQIDMxNDctY29tcGxpYW50IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLgogCi0tIElzc3VlICMxMTI1MDogQmFjayBwb3J0IGZpeCBmcm9tIDMuMyBicmFuY2gsIHNvIHRoYXQgMnRvMyBjYW4gaGFuZGxlIGZpbGVzCi0gIHdpdGggbGluZSBmZWVkcy4gIFRoaXMgd2FzIHBvcnRlZCBmcm9tIHRoZSBzYW5kYm94IHRvIHRoZSAzLjMgYnJhbmNoLCBidXQKLSAgZGlkbid0IG1ha2UgaXQgaW50byAzLjIuCi0KIC0gSXNzdWUgIzczNjc6IEZpeCBwa2d1dGlsLndhbGtfcGF0aHMgdG8gc2tpcCBkaXJlY3RvcmllcyB3aG9zZQogICBjb250ZW50cyBjYW5ub3QgYmUgcmVhZC4KIAorLSBJc3N1ZSAjMzE2MzogVGhlIHN0cnVjdCBtb2R1bGUgZ2V0cyBuZXcgZm9ybWF0IGNoYXJhY3RlcnMgJ24nIGFuZCAnTicKKyAgc3VwcG9ydGluZyBDIGludGVnZXIgdHlwZXMgYGBzc2l6ZV90YGAgYW5kIGBgc2l6ZV90YGAsIHJlc3BlY3RpdmVseS4KKwogLSBJc3N1ZSAjMTMwOTk6IEZpeCBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgdW5kZXIgYSBUdXJraXNoIGxvY2FsZS4KICAgUmVwb3J0ZWQgYW5kIGRpYWdub3NlZCBieSBUaG9tYXMgS2x1eXZlci4KIApAQCAtMTExMSwxMyArMjg5MiwyOSBAQAogICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgogICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKIAotLSBJc3N1ZSAjODkzMzogZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyB3aWxsIG5vdyBjb3JyZWN0bHkgcmVwb3J0Ci0gIE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IgRG93bmxvYWQtVVJMIGZpZWxkIGlzCi0gIHByZXNlbnQuCistIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCisgIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KIAotLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIG5vdyByZWFkcyBhbmQgd3JpdGVzIGVnZy1pbmZvIGZpbGVzIHVzaW5nIFVURi04LAorLSBJc3N1ZSAjMTI5NTk6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCB0byBjb2xsZWN0aW9ucy5fX2FsbF9fLgorCistIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIGFuZCBwYWNrYWdpbmcncyBNRVRBREFUQSBmaWxlcyB3aWxsCisgIG5vdyBjb3JyZWN0bHkgcmVwb3J0IE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IKKyAgRG93bmxvYWQtVVJMIGZpZWxkIGlzIHByZXNlbnQuCisKKy0gSXNzdWUgIzEyNTY3OiBBZGQgY3Vyc2VzLnVuZ2V0X3djaCgpIGZ1bmN0aW9uLiBQdXNoIGEgY2hhcmFjdGVyIHNvIHRoZSBuZXh0CisgIGdldF93Y2goKSB3aWxsIHJldHVybiBpdC4KKworLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgbm93IHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKICAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgogCistIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCisgIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KKworLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKKyAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCisgIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKKyAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCisKIC0gSXNzdWUgIzEyODg4OiBGaXggYSBidWcgaW4gSFRNTFBhcnNlci51bmVzY2FwZSB0aGF0IHByZXZlbnRlZCBpdCB0byBlc2NhcGUKICAgbW9yZSB0aGFuIDEyOCBlbnRpdGllcy4gIFBhdGNoIGJ5IFBldGVyIE90dGVuLgogCkBAIC0xMTI1LDYgKzI5MjIsMTYgQEAKIAogLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgogCistIElzc3VlICMxMjQ5NDogT24gZXJyb3IsIGNhbGwoKSwgY2hlY2tfY2FsbCgpLCBjaGVja19vdXRwdXQoKSBhbmQKKyAgZ2V0c3RhdHVzb3V0cHV0KCkgZnVuY3Rpb25zIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cga2lsbCB0aGUgcHJvY2VzcywKKyAgcmVhZCBpdHMgc3RhdHVzICh0byBhdm9pZCB6b21iaXMpIGFuZCBjbG9zZSBwaXBlcy4KKworLSBJc3N1ZSAjMTI3MjA6IEV4cG9zZSBsb3ctbGV2ZWwgTGludXggZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGUgZnVuY3Rpb25zIGluIG9zLgorCistIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKKyAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LiAgVGhlIHBhY2thZ2luZyBjb21tYW5kcworICB3ZXJlIGZpeGVkIHRvby4KKwogLSBJc3N1ZSAjMTI4NDc6IEZpeCBhIGNyYXNoIHdpdGggbmVnYXRpdmUgUFVUIGFuZCBMT05HX0JJTlBVVCBhcmd1bWVudHMgaW4KICAgdGhlIEMgcGlja2xlIGltcGxlbWVudGF0aW9uLgogCkBAIC0xMTM0LDIwMSArMjk0MSw0NyBAQAogLSBJc3N1ZSAjMTIyODc6IEZpeCBhIHN0YWNrIGNvcnJ1cHRpb24gaW4gb3NzYXVkaW9kZXYgbW9kdWxlIHdoZW4gdGhlIEZEIGlzCiAgIGdyZWF0ZXIgdGhhbiBGRF9TRVRTSVpFLgogCistIElzc3VlICMxMjgzOTogRml4IGNyYXNoIGluIHpsaWIgbW9kdWxlIGR1ZSB0byB2ZXJzaW9uIG1pc21hdGNoLgorICBGaXggYnkgUmljaGFyZCBNLiBUZXcuCisKKy0gSXNzdWUgIzk5MjM6IFRoZSBtYWlsY2FwIG1vZHVsZSBub3cgY29ycmVjdGx5IHVzZXMgdGhlIHBsYXRmb3JtIHBhdGgKKyAgc2VwYXJhdG9yIGZvciB0aGUgTUFJTENBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvbiBub24tUE9TSVggcGxhdGZvcm1zLgorCistIElzc3VlICMxMjgzNTogRm9sbG93IHVwIHRvICM2NTYwIHRoYXQgdW5jb25kaXRpb25hbGx5IHByZXZlbnRzIHVzZSBvZiB0aGUKKyAgdW5lbmNyeXB0ZWQgc2VuZG1zZy9yZWN2bXNnIEFQSXMgb24gU1NMIHdyYXBwZWQgc29ja2V0cy4gUGF0Y2ggYnkgRGF2aWQKKyAgV2F0c29uLgorCistIElzc3VlICMxMjgwMzogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSBub3cgYWNjZXB0cyBhIHBhc3N3b3JkIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4gIFBhdGNoIGJ5IEFkYW0gU2ltcGtpbnMuCisKIC0gSXNzdWUgIzExNjU3OiBGaXggc2VuZGluZyBmaWxlIGRlc2NyaXB0b3JzIG92ZXIgMjU1IG92ZXIgYSBtdWx0aXByb2Nlc3NpbmcKICAgUGlwZS4KIAotLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgorLSBJc3N1ZSAjMTI4MTE6IHRhYm5hbm55LmNoZWNrKCkgbm93IHByb21wdGx5IGNsb3NlcyBjaGVja2VkIGZpbGVzLiBQYXRjaCBieQorICBBbnRob255IEJyaWdncy4KKworLSBJc3N1ZSAjNjU2MDogVGhlIHNlbmRtc2cvcmVjdm1zZyBBUEkgaXMgbm93IGV4cG9zZWQgYnkgdGhlIHNvY2tldCBtb2R1bGUKKyAgd2hlbiBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSwgc3VwcG9ydGluZyBwcm9jZXNzaW5nIG9mCisgIGFuY2lsbGFyeSBkYXRhIGluIHB1cmUgUHl0aG9uIGNvZGUuIFBhdGNoIGJ5IERhdmlkIFdhdHNvbiBhbmQgSGVpa28gV3VuZHJhbS4KKworLSBJc3N1ZSAjMTIzMjY6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCisgIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKKyAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uCiAKIC0gSXNzdWUgIzEyMjEzOiBGaXggYSBidWZmZXJpbmcgYnVnIHdpdGggaW50ZXJsZWF2ZWQgcmVhZHMgYW5kIHdyaXRlcyB0aGF0CiAgIGNvdWxkIGFwcGVhciBvbiBCdWZmZXJlZFJhbmRvbSBzdHJlYW1zLgogCistIElzc3VlICMxMjc3ODogUmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIEpTT04tZW5jb2RpbmcgYSBsYXJnZQorICBjb250YWluZXIgb2YgbWFueSBzbWFsbCBvYmplY3RzLgorCiAtIElzc3VlICMxMjY1MDogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYSBzdWJwcm9jZXNzLlBvcGVuIGNvdWxkIGxlYWsKICAgcmVzb3VyY2VzIChGRC96b21iaWUpIHdoZW4ga2lsbGVkIGF0IHRoZSB3cm9uZyB0aW1lLgogCi0tIElzc3VlICMxMDg2MDogaHR0cC5jbGllbnQgbm93IGNvcnJlY3RseSBoYW5kbGVzIGFuIGVtcHR5IHBvcnQgYWZ0ZXIgcG9ydAotICBkZWxpbWl0ZXIgaW4gVVJMcy4KKy0gSXNzdWUgIzEyNzQ0OiBGaXggaW5lZmZpY2llbnQgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMgYmV0d2VlbiAyKiozMSBhbmQKKyAgMioqNjMgb24gc3lzdGVtcyB3aXRoIGEgNjQtYml0IEMgImxvbmciLgogCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KLQotLSBJc3N1ZSAjMTMzMjY6IENsZWFuIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvcnJlY3RseSBvbiBPcGVuQlNELgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgotICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgotCi0tIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCi0gIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCi0gIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKLSAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgotCi0tIElzc3VlICMxMzYyODogcHl0aG9uLWdkYi5weSBpcyBub3cgYWJsZSB0byByZXRyaWV2ZSBtb3JlIGZyYW1lcyBpbiB0aGUgUHl0aG9uCi0gIHRyYWNlYmFjayBpZiBQeXRob24gaXMgb3B0aW1pemVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0Ci0KLS0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCi0KLS0gSXNzdWUgIzEzNzI1OiBGaXggcmVncnRlc3QgdG8gcmVjb2duaXplIHRoZSBkb2N1bWVudGVkIC1kIGZsYWcuCi0gIFBhdGNoIGJ5IEVybm8gVHVraWEuCi0KLS0gSXNzdWUgIzEzMzA0OiBTa2lwIHRlc3QgY2FzZSBpZiB1c2VyIHNpdGUtcGFja2FnZXMgZGlzYWJsZWQgKC1zIG9yCi0gIFBZVEhPTk5PVVNFUlNJVEUpLiAgKFBhdGNoIGJ5IENhcmwgTWV5ZXIpCi0KLS0gSXNzdWUgIzEzMjE4OiBGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KLQotLSBJc3N1ZSAjMTI4MjE6IEZpeCB0ZXN0X2ZjbnRsIGZhaWx1cmVzIG9uIE9wZW5CU0QgNS4KLQotLSBSZS1lbmFibGUgbGliMnRvMydzIHRlc3RfcGFyc2VyLnB5IHRlc3RzLCB0aG91Z2ggd2l0aCBhbiBleHBlY3RlZCBmYWlsdXJlCi0gIChzZWUgaXNzdWUgMTMxMjUpLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgotICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzk5NzU6IHNvY2tldDogRml4IGluY29ycmVjdCB1c2Ugb2YgZmxvd2luZm8gYW5kIHNjb3BlX2lkLiBQYXRjaCBieQotICBWaWxtb3MgTmViZWhhai4KLQotLSBJc3N1ZSAjMTMxNTk6IEZpbGVJTyBhbmQgQloyRmlsZSBub3cgdXNlIGEgbGluZWFyLXRpbWUgYnVmZmVyIGdyb3d0aAotICBzdHJhdGVneSBpbnN0ZWFkIG9mIGEgcXVhZHJhdGljLXRpbWUgb25lLgotCi0tIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCi0gIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKLSAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KLQotLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgotCi0tIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQotICBUaG9tYXMgSmFyb3NjaC4KLQotLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCi0gIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgotCi0tIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAotICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgotCi0tIElzc3VlICMxMjQ4MzogY3R5cGVzOiBGaXggYSBjcmFzaCB3aGVuIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGNhbGxiYWNrCi0gIG9iamVjdCB0cmlnZ2VycyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0KLS0gSXNzdWUgIzEyOTUwOiBGaXggcGFzc2luZyBmaWxlIGRlc2NyaXB0b3JzIGluIG11bHRpcHJvY2Vzc2luZywgdW5kZXIKLSAgT3BlbkluZGlhbmEvSWxsdW1vcy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KLSAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgotCi0tIElzc3VlICMxMzQwMjogRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgotCi0tIElzc3VlICMxMzg4MzogUFlUSE9OQ0FTRU9LIGFsc28gdXNlZCBvbiBPUyBYIGFuZCBPUy8yLgotCi0tIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldwotICBDIEFQSSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMjEzNDogVGhlIHRva2VuaXplIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gY2xhcmlmaWVkIHRvIGV4cGxhaW4gd2h5Ci0gIGFsbCBvcGVyYXRvciBhbmQgZGVsaW1pdGVyIHRva2VucyBhcmUgdHJlYXRlZCBhcyB0b2tlbi5PUCB0b2tlbnMuCi0KLS0gSXNzdWUgIzEzNTEzOiBGaXggaW8uSU9CYXNlIGRvY3VtZW50YXRpb24gdG8gY29ycmVjdGx5IGxpbmsgdG8gdGhlCi0gIGlvLklPQmFzZS5yZWFkbGluZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNzogUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlCi0gIGZ1bmN0aW9ucyBhbmQgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVkIGFyZ3VtZW50cyB0byBQb3Blbi4KLQotLSBJc3N1ZSAjMTMxNDE6IERlbW9uc3RyYXRlIHJlY29tbWVuZGVkIHN0eWxlIGZvciBzb2NrZXRzZXJ2ZXIgZXhhbXBsZXMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDMtU2VwLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjMyNjogc3lzLnBsYXRmb3JtIGlzIG5vdyBhbHdheXMgJ2xpbnV4Micgb24gTGludXgsIGV2ZW4gaWYgUHl0aG9uCi0gIGlzIGNvbXBpbGVkIG9uIExpbnV4IDMuCi0KLS0gQWNjZXB0IGJ5dGVzIGZvciB0aGUgQVNUIHN0cmluZyB0eXBlLiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhIHByb3BlciBmaXggaW4KLSAgMy4zLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzgyODY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZCBzZGlzdCB3aWxsIHByaW50IGEgd2FybmluZyBtZXNzYWdlIGluc3RlYWQKLSAgb2YgY3Jhc2hpbmcgd2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgotCi0tIElzc3VlICMxMjg0MTogdGFyZmlsZSB1bm5lY2Vzc2FyaWx5IGNoZWNrZWQgdGhlIGV4aXN0ZW5jZSBvZiBudW1lcmljYWwgdXNlcgotICBhbmQgZ3JvdXAgaWRzIG9uIGV4dHJhY3Rpb24uIElmIG9uZSBvZiB0aGVtIGRpZCBub3QgZXhpc3QgdGhlIHJlc3BlY3RpdmUgaWQKLSAgb2YgdGhlIGN1cnJlbnQgdXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcAotICBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KLQotLSBJc3N1ZSAjMTA5NDY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZHMgYmRpc3RfZHVtYiwgYmRpc3Rfd2luaW5zdCBhbmQgYmRpc3RfbXNpCi0gIG5vdyByZXNwZWN0IGEgLS1za2lwLWJ1aWxkIG9wdGlvbiBnaXZlbiB0byBiZGlzdC4KLQotLSBJc3N1ZSAjMTI4Mzk6IEZpeCBjcmFzaCBpbiB6bGliIG1vZHVsZSBkdWUgdG8gdmVyc2lvbiBtaXNtYXRjaC4KLSAgRml4IGJ5IFJpY2hhcmQgTS4gVGV3LgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTY1MTogRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0bwotICBzb21lIGZ1bmN0aW9ucyBsaWtlIGZpbGUud3JpdGUoKS4KLQotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNC1BdWctMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNzMyOiBJbiBuYXJyb3cgdW5pY29kZSBidWlsZHMsIGFsbG93IFVuaWNvZGUgaWRlbnRpZmllcnMgd2hpY2ggZmFsbAotICBvdXRzaWRlIHRoZSBCTVAuCi0KLS0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTEzMjE6IEZpeCBhIGNyYXNoIHdpdGggbXVsdGlwbGUgaW1wb3J0cyBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgd2hlbgotICBlbWJlZGRpbmcgUHl0aG9uLiAgUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIFZlcmlmeSB0aGUgdHlwZXMgb2YgQVNUIHN0cmluZ3MgYW5kIGlkZW50aWZpZXJzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGJlZm9yZQotICBjb21waWxpbmcgdGhlbS4KLQotLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCi0gIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQotICBKdWxpYW4gQmVybWFuLgotCi0tIElzc3VlICMxMTYyNzogRml4IHNlZ2ZhdWx0IHdoZW4gX19uZXdfXyBvbiBhIGV4Y2VwdGlvbiByZXR1cm5zIGEKLSAgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KLQotLSBJc3N1ZSAjMTIxNDk6IFVwZGF0ZSB0aGUgbWV0aG9kIGNhY2hlIGFmdGVyIGEgdHlwZSdzIGRpY3Rpb25hcnkgZ2V0cwotICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCi0gIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKLSAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKLSAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgotCi0tIFdoZW4gYSBnZW5lcmF0b3IgeWllbGRzLCBkbyBub3QgcmV0YWluIHRoZSBjYWxsZXIncyBleGNlcHRpb24gc3RhdGUgb24gdGhlCi0gIGdlbmVyYXRvci4KLQotLSBJc3N1ZSAjMTI0NzU6IFByZXZlbnQgZ2VuZXJhdG9ycyBmcm9tIGxlYWtpbmcgdGhlaXIgZXhjZXB0aW9uIHN0YXRlIGludG8gdGhlCi0gIGNhbGxlcidzIGZyYW1lIGFzIHRoZXkgcmV0dXJuIGZvciB0aGUgbGFzdCB0aW1lLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjY0NjogQWRkIGFuICdlb2YnIGF0dHJpYnV0ZSB0byB6bGliLkRlY29tcHJlc3MsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCisgIGRldGVjdCB0cnVuY2F0ZWQgaW5wdXQgc3RyZWFtcy4KIAogLSBJc3N1ZSAjMTE1MTM6IEZpeCBleGNlcHRpb24gaGFuZGxpbmcgYGB0YXJmaWxlLlRhckZpbGUuZ3pvcGVuKClgYCB3aGVuCiAgIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCkBAIC0xMzQxLDE4ICsyOTk0LDQyIEBACiAtIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcwogICBpbiBvcy5raWxsKCkuCiAKKy0gQWRkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMgYW5kIHVuYXJ5IG1pbnVzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KKyAgSXNzdWUgIzEzMTIxOiBBbHNvIGFkZCBzdXBwb3J0IGZvciBpbnBsYWNlIG1hdGggb3BlcmF0b3JzLgorCiAtIElzc3VlICMxMjY4MzogdXJscGFyc2UgdXBkYXRlZCB0byBpbmNsdWRlIHN2biBhcyBzY2hlbWVzIHRoYXQgdXNlcyByZWxhdGl2ZQogICBwYXRocy4gKHN2biBmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCiAKKy0gSXNzdWUgIzEyNjU1OiBFeHBvc2UgZnVuY3Rpb25zIGZyb20gc2NoZWQuaCBpbiB0aGUgb3MgbW9kdWxlOiBzY2hlZF95aWVsZCgpLAorICBzY2hlZF9zZXRzY2hlZHVsZXIoKSwgc2NoZWRfZ2V0c2NoZWR1bGVyKCksIHNjaGVkX3NldHBhcmFtKCksCisgIHNjaGVkX2dldF9taW5fcHJpb3JpdHkoKSwgc2NoZWRfZ2V0X21heF9wcmlvcml0eSgpLCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoKSwKKyAgc2NoZWRfZ2V0YWZmaW5pdHkoKSwgc2NoZWRfc2V0YWZmaW5pdHkoKS4KKworLSBBZGQgVGhyZWFkRXJyb3IgdG8gdGhyZWFkaW5nLl9fYWxsX18uCisKIC0gSXNzdWVzICMxMTEwNCwgIzg2ODg6IEZpeCB0aGUgYmVoYXZpb3Igb2YgZGlzdHV0aWxzJyBzZGlzdCBjb21tYW5kIHdpdGgKICAgbWFudWFsbHktbWFpbnRhaW5lZCBNQU5JRkVTVCBmaWxlcy4KIAorLSBJc3N1ZSAjMTEyODE6IHNtdHBsaWIuU1RNUCBnZXRzIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciwgd2hpY2ggYWRkcyB0aGUKKyAgYWJpbGl0eSB0byBiaW5kIHRvIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIG9uIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlCisgIGludGVyZmFjZXMuIFBhdGNoIGJ5IFBhdWxvIFNjYXJkaW5lLgorCiAtIElzc3VlICMxMjQ2NDogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5LmNsZWFudXAoKSBzaG91bGQgbm90IGZvbGxvdwogICBzeW1saW5rczogZml4IGl0LiBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KIAogLSBJc3N1ZSAjODg4NzogInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykKICAgaW4gUHl0aG9uIGNvZGUpIG5vdyBmaW5kcyB0aGUgZG9jIG9mIHRoZSBtZXRob2QuCiAKKy0gSXNzdWUgIzEwOTY4OiBSZW1vdmUgaW5kaXJlY3Rpb24gaW4gdGhyZWFkaW5nLiAgVGhlIHB1YmxpYyBuYW1lcyAoVGhyZWFkLAorICBDb25kaXRpb24sIGV0Yy4pIHVzZWQgdG8gYmUgZmFjdG9yeSBmdW5jdGlvbnMgcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBoaWRkZW4KKyAgY2xhc3NlcyAoX1RocmVhZCwgX0NvbmRpdGlvbiwgZXRjLiksIGJlY2F1c2UgKGlmIEd1aWRvIHJlY2FsbHMgY29ycmVjdGx5KSB0aGlzCisgIGNvZGUgcHJlLWRhdGVzIHRoZSBhYmlsaXR5IHRvIHN1YmNsYXNzIGV4dGVuc2lvbiB0eXBlcy4gIEl0IGlzIG5vdyBwb3NzaWJsZSB0bworICBpbmhlcml0IGZyb20gVGhyZWFkIGFuZCBvdGhlciBjbGFzc2VzLCB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlIHByaXZhdGUKKyAgdW5kZXJzY29yZWQgbmFtZXMgbGlrZSBtdWx0aXByb2Nlc3NpbmcgZGlkLgorCistIElzc3VlICM5NzIzOiBBZGQgc2hsZXgucXVvdGUgZnVuY3Rpb25zLCB0byBlc2NhcGUgZmlsZW5hbWVzIGFuZCBjb21tYW5kCisgIGxpbmVzLgorCiAtIElzc3VlICMxMjYwMzogRml4IHB5ZG9jLnN5bm9wc2lzKCkgb24gZmlsZXMgd2l0aCBub24tbmVnYXRpdmUgc3RfbXRpbWUuCiAKIC0gSXNzdWUgIzEyNTE0OiBVc2UgdHJ5L2ZpbmFsbHkgdG8gYXNzdXJlIHRoZSB0aW1laXQgbW9kdWxlIHJlc3RvcmVzIGdhcmJhZ2UKQEAgLTEzNjcsMTkgKzMwNDQsMzUgQEAKIC0gSXNzdWUgIzEyNTc2OiBGaXggdXJsb3BlbiBiZWhhdmlvciBvbiBzaXRlcyB3aGljaCBkbyBub3Qgc2VuZCAob3Igb2JmdXNjYXRlcykKICAgQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIuCiAKKy0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAorICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCisKKy0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgorCiAtIElzc3VlICMxODEzOiBGaXggY29kZWMgbG9va3VwIHVuZGVyIFR1cmtpc2ggbG9jYWxlcy4KIAogLSBJc3N1ZSAjMTI1OTE6IEltcHJvdmUgc3VwcG9ydCBvZiAidW5pdmVyc2FsIG5ld2xpbmVzIiBpbiB0aGUgc3VicHJvY2VzcwogICBtb2R1bGU6IHRoZSBwaXBlZCBzdHJlYW1zIGNhbiBub3cgYmUgcHJvcGVybHkgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8uCiAKIC0gSXNzdWUgIzEyNTkxOiBBbGxvdyBpby5UZXh0SU9XcmFwcGVyIHRvIHdvcmsgd2l0aCByYXcgSU8gb2JqZWN0cyAod2l0aG91dAotICBhIHJlYWQxKCkgbWV0aG9kKSwgYW5kIGFkZCBhbiB1bmRvY3VtZW50ZWQgKndyaXRlX3Rocm91Z2gqIHBhcmFtZXRlciB0bwotICBtYW5kYXRlIHVuYnVmZmVyZWQgd3JpdGVzLgotCi0tIElzc3VlICM5NjExLCAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisgIGEgcmVhZDEoKSBtZXRob2QpLCBhbmQgYWRkIGEgKndyaXRlX3Rocm91Z2gqIHBhcmFtZXRlciB0byBtYW5kYXRlCisgIHVuYnVmZmVyZWQgd3JpdGVzLgogCiAtIElzc3VlICMxMDg4MzogRml4IHNvY2tldCBsZWFrcyBpbiB1cmxsaWIucmVxdWVzdCB3aGVuIHVzaW5nIEZUUC4KIAorLSBJc3N1ZSAjMTI1OTI6IE1ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCisKKy0gSXNzdWUgIzEyMzcyOiBQT1NJWCBzZW1hcGhvcmVzIGFyZSBicm9rZW4gb24gQUlYOiBkb24ndCB1c2UgdGhlbS4KKworLSBJc3N1ZSAjMTI1NTE6IFByb3ZpZGUgYSBnZXRfY2hhbm5lbF9iaW5kaW5nKCkgbWV0aG9kIG9uIFNTTCBzb2NrZXRzIHNvIGFzCisgIHRvIGdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgdGhlIGN1cnJlbnQgU1NMIHNlc3Npb24gKG9ubHkgdGhlCisgICJ0bHMtdW5pcXVlIiBjaGFubmVsIGJpbmRpbmcgaXMgaW1wbGVtZW50ZWQpLiAgVGhpcyBhbGxvd3MgdGhlIGltcGxlbWVudGF0aW9uCisgIG9mIGNlcnRhaW4gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzIFNDUkFNLVNIQS0xLVBMVVMuICBQYXRjaCBieQorICBKYWNlayBLb25pZWN6bnkuCisKKy0gSXNzdWUgIzY2NTE5NDogZW1haWwudXRpbHMgbm93IGhhcyBmb3JtYXRfZGF0ZXRpbWUgYW5kIHBhcnNlZGF0ZV90b19kYXRldGltZQorICBmdW5jdGlvbnMsIGFsbG93aW5nIGZvciByb3VuZCB0cmlwcGluZyBvZiBSRkMyODIyIGZvcm1hdCBkYXRlcy4KKwogLSBJc3N1ZSAjMTI1NzE6IEFkZCBhIHBsYXQtbGludXgzIGRpcmVjdG9yeSBtaXJyb3JpbmcgdGhlIHBsYXQtbGludXgyCiAgIGRpcmVjdG9yeSwgc28gdGhhdCAiaW1wb3J0IERMRkNOIiBhbmQgb3RoZXIgc2ltaWxhciBpbXBvcnRzIHdvcmsgb24KICAgTGludXggMy4wLgpAQCAtMTM4NywxODQgKzMwODAsOTEgQEAKIC0gSXNzdWUgIzc0ODQ6IHNtdHBsaWIgbm8gbG9uZ2VyIHB1dHMgPD4gYXJvdW5kIGFkZHJlc3NlcyBpbiBWUkZZIGFuZCBFWFBOCiAgIGNvbW1hbmRzOyB0aGV5IGFyZW4ndCByZXF1aXJlZCBhbmQgaW4gZmFjdCBwb3N0Zml4IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IGZvcm0uCiAKLS0gQ2xvc2UgdGhlIGNhbGwgcXVldWUgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3Igd2hlbgotICBzaHV0ZG93bigpIGlzIGNhbGxlZCwgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8ga2ljayBpbi4KKy0gSXNzdWUgIzEyMjczOiBSZW1vdmUgYXN0Ll9fdmVyc2lvbl9fLiBBU1QgY2hhbmdlcyBjYW4gYmUgYWNjb3VudGVkIGZvciBieQorICBjaGVja2luZyBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5fbWVyY3VyaWFsLgorCistIFNpbGVuY2Ugc3B1cmlvdXMgImJyb2tlbiBwaXBlIiB0cmFjZWJhY2tzIHdoZW4gc2h1dHRpbmcgZG93biBhCisgIFByb2Nlc3NQb29sRXhlY3V0b3IuCisKKy0gRml4IHBvdGVudGlhbCByZXNvdXJjZSBsZWFrcyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcgorICBieSBqb2luaW5nIGFsbCBxdWV1ZXMgYW5kIHByb2Nlc3NlcyB3aGVuIHNodXRkb3duKCkgaXMgY2FsbGVkLgorCistIElzc3VlICMxMTYwMzogRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzExMzIxOiBGaXggYSBjcmFzaCB3aXRoIG11bHRpcGxlIGltcG9ydHMgb2YgdGhlIF9waWNrbGUgbW9kdWxlIHdoZW4KKyAgZW1iZWRkaW5nIFB5dGhvbi4gIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjNjc1NTogQWRkIGdldF93Y2goKSBtZXRob2QgdG8gY3Vyc2VzLndpbmRvdyBjbGFzcy4gUGF0Y2ggYnkgScOxaWdvCisgIFNlcm5hLgorCistIEFkZCBjZ2kuY2xvc2Vsb2coKSBmdW5jdGlvbiB0byBjbG9zZSB0aGUgbG9nIGZpbGUuCiAKIC0gSXNzdWUgIzEyNTAyOiBhc3luY29yZTogZml4IHBvbGxpbmcgbG9vcCB3aXRoIEFGX1VOSVggc29ja2V0cy4KIAotLSBJc3N1ZSAjNDM3NjogY3R5cGVzIG5vdyBzdXBwb3J0cyBuZXN0ZWQgc3RydWN0dXJlcyB3aXRoIGFuIGVuZGlhbm5lc3MKLSAgZGlmZmVyZW50IHRoYW4gdGhhdCBvZiB0aGUgcGFyZW50IHN0cnVjdHVyZS4gIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCistIElzc3VlICM0Mzc2OiBjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIGluIGEgZW5kaWFuIGRpZmZlcmVudCB0aGFuCisgIHRoZSBwYXJlbnQgc3RydWN0dXJlLiBQYXRjaCBieSBWbGFkIFJpc2N1dGlhLgogCiAtIFJhaXNlIFZhbHVlRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIHNldCB0aGUgX0NIVU5LX1NJWkUgYXR0cmlidXRlIG9mIGEKICAgVGV4dElPV3JhcHBlciB0byBhIGh1Z2UgdmFsdWUsIG5vdCBUeXBlRXJyb3IuCiAKLS0gSXNzdWUgIzEyNDkzOiBzdWJwcm9jZXNzOiBQb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGhhbmRsZXMgRUlOVFIgZXJyb3JzCi0gIGlmIHRoZSBwcm9jZXNzIGhhcyBvbmx5IG9uZSBwaXBlLgorLSBJc3N1ZSAjMTI1MDQ6IENsb3NlIGZpbGUgaGFuZGxlcyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gcGFja2FnaW5nLmRhdGFiYXNlLgorICBUaGlzIGZpeGVzIGEgYnVnIHdpdGggdGhlIHJlbW92ZSAodW5pbnN0YWxsKSBmZWF0dXJlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWVzICMxMjE2OSBhbmQgIzEwNTEwOiBGYWN0b3Igb3V0IGNvZGUgdXNlZCBieSB2YXJpb3VzIHBhY2thZ2luZyBjb21tYW5kcworICB0byBtYWtlIEhUVFAgUE9TVCByZXF1ZXN0cywgYW5kIG1ha2Ugc3VyZSBpdCB1c2VzIENSTEYuCisKKy0gSXNzdWUgIzEyMDE2OiBNdWx0aWJ5dGUgQ0pLIGRlY29kZXJzIG5vdyByZXN5bmNocm9uaXplIGZhc3Rlci4gVGhleSBvbmx5CisgIGlnbm9yZSB0aGUgZmlyc3QgYnl0ZSBvZiBhbiBpbnZhbGlkIGJ5dGUgc2VxdWVuY2UuIEZvciBleGFtcGxlLAorICBiJ1x4ZmZcbicuZGVjb2RlKCdnYjIzMTInLCAncmVwbGFjZScpIGdpdmVzICdcdWZmZmRcbicgaW5zdGVhZCBvZiAnXHVmZmZkJy4KKworLSBJc3N1ZSAjMTI0NTk6IHRpbWUuc2xlZXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgc2xlZXAgbGVuZ3RoIGlzCisgIG5lZ2F0aXZlLCBpbnN0ZWFkIG9mIGFuIGluZmluaXRlIHNsZWVwIG9uIFdpbmRvd3Mgb3IgcmFpc2luZyBhbiBJT0Vycm9yIG9uCisgIExpbnV4IGZvciBleGFtcGxlLCB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW91ciBvbiBhbGwgcGxhdGZvcm1zLgogCiAtIElzc3VlICMxMjQ1MTogcHlkb2M6IGh0bWxfZ2V0ZmlsZSgpIG5vdyB1c2VzIHRva2VuaXplLm9wZW4oKSB0byBzdXBwb3J0Ci0gIFB5dGhvbiBtb2R1bGVzIHVzaW5nIGEgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gVVRGLTggKHJlYWRpbmcgdGhlIGNvZGluZwotICBjb29raWUgb2YgdGhlIG1vZHVsZSkuCisgIFB5dGhvbiBzY3JpcHRzIHVzaW5nIGEgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gVVRGLTggKHJlYWQgdGhlIGNvZGluZyBjb29raWUKKyAgb2YgdGhlIHNjcmlwdCkuCiAKLS0gSXNzdWUgIzEyNDUxOiBweWRvYzogaW1wb3J0ZmlsZSgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIG1vZHVsZSBpbiBiaW5hcnkgbW9kZSwKLSAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogcnVucHk6IHJ1bl9wYXRoKCkgbm93IG9wZW5zIHRoZSBQeXRob24gbW9kdWxlIGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBzdXBwb3J0IG90aGVyIGVuY29kaW5ncwotICB0aGFuIFVURi04IChtb2R1bGVzIHVzaW5nIHRoZSBjb2RpbmcgY29va2llKS4KLQotLSBJc3N1ZSAjMTI0NTE6IHhtbC5kb20ucHVsbGRvbTogcGFyc2UoKSBub3cgb3BlbnMgZmlsZXMgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZAotICBvZiB0aGUgdGV4dCBtb2RlICh1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nKSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzE0NDQzOiBFbnN1cmUgdGhhdCAucHkgZmlsZXMgYXJlIGJ5dGUtY29tcGlsZWQgd2l0aCB0aGUgY29ycmVjdCBQeXRob24KLSAgZXhlY3V0YWJsZSB3aXRoaW4gYmRpc3RfcnBtIGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgUlBNCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjc2NDogRml4IGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gdGhlIG5hbWUgb2YgYSBTdHJ1Y3R1cmUgZmllbGQgaXMgbm90Ci0gIGEgc3RyaW5nLgotCi0tIElzc3VlICMxMTI0MTogc3ViY2xhc3NlcyBvZiBjdHlwZXMuQXJyYXkgY2FuIG5vdyBiZSBzdWJjbGFzc2VkLgotCi0tIElzc3VlICMxMDMwOTogRGVmaW5lIF9HTlVfU09VUkNFIHNvIHRoYXQgbXJlbWFwKCkgZ2V0cyB0aGUgcHJvcGVyCi0gIHNpZ25hdHVyZS4gIFdpdGhvdXQgdGhpcywgYXJjaGl0ZWN0dXJlcyB3aGVyZSBzaXplb2Ygdm9pZCogIT0gc2l6ZW9mIGludCBhcmUKLSAgYnJva2VuLiAgUGF0Y2ggZ2l2ZW4gYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotQy1BUEkKLS0tLS0tCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuICBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCi0KLS0gSXNzdWUgIzEyNTkyOiBNYWtlIFB5dGhvbiBidWlsZCBvbiBPcGVuQlNEIDUgKGFuZCBmdXR1cmUgbWFqb3IgcmVsZWFzZXMpLgotCi0tIElzc3VlICMxMjM3MjogUE9TSVggc2VtYXBob3JlcyBhcmUgYnJva2VuIG9uIEFJWDogZG9uJ3QgdXNlIHRoZW0uCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDYzOTogcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlCi0gIGFuIGVycm9yIGlmIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIGZpbGUgd2l0aCBtaXhlZCBuZXdsaW5lcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgbGliMnRvMyBjYW4gbm93IHJ1biBmcm9tIGFuIGluc3RhbGxlZAotICBQeXRob24uCi0KLS0gSXNzdWUgIzEyNjI2OiBJbiByZWdydGVzdCwgYWxsb3cgdG8gZmlsdGVyIHRlc3RzIHVzaW5nIGEgZ2xvYiBmaWx0ZXIKLSAgd2l0aCB0aGUgYGAtbWBgIChvciBgYC0tbWF0Y2hgYCkgb3B0aW9uLiAgVGhpcyB3b3JrcyB3aXRoIGFsbCB0ZXN0IGNhc2VzCi0gIHVzaW5nIHRoZSB1bml0dGVzdCBtb2R1bGUuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKLSAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTI2MjQ6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBmYWlsIGFmdGVyIHRoZSBmaXJzdCBmYWlsdXJlIHdoZW4KLSAgcnVubmluZyBpbiB2ZXJib3NlIG1vZGUgKGBgLXZgYCBvciBgYC1XYGApLCBieSB1c2luZyB0aGUgYGAtLWZhaWxmYXN0YGAKLSAgKG9yIGBgLUdgYCkgb3B0aW9uIHRvIHJlZ3J0ZXN0LiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNTg3OiBDb3JyZWN0IGZhdWx0eSB0ZXN0IGZpbGUgYW5kIHJlZmVyZW5jZSBpbiB0ZXN0X3Rva2VuaXplLgotICAoUGF0Y2ggYnkgUm9iZXJ0IFhpYW8pCi0KLS0gVHJ5IGhhcmRlciB0byByZWFwIGRhbmdsaW5nIHRocmVhZHMgaW4gdGVzdC5zdXBwb3J0LnJlYXBfdGhyZWFkcygpLgotCi0tIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKLSAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKLSAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKLSAgV2ViIHNpdGUuCi0KLS0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQotICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCi0gIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KLQotLSBJc3N1ZSAjMTI0OTc6IEluc3RhbGwgdGVzdC9kYXRhIHRvIHByZXZlbnQgZmFpbHVyZXMgb2YgdGhlIHZhcmlvdXMgY29kZWNtYXBzCi0gIHRlc3RzLgotCi0tIElzc3VlICMxMjQ5NjogSW5zdGFsbCB0ZXN0L2NhcGF0aCBkaXJlY3RvcnkgdG8gcHJldmVudCB0ZXN0X2Nvbm5lY3RfY2FwYXRoCi0gIHRlc3RjYXNlIGZhaWx1cmUgaW4gdGVzdF9zc2wuCi0KLS0gSXNzdWUgIzEyNDY5OiBSdW4gIndha2V1cCIgc2lnbmFsIHRlc3RzIGluIHN1YnByb2Nlc3MgdG8gcnVuIHRoZSB0ZXN0IGluIGEKLSAgZnJlc2ggcHJvY2VzcyB3aXRoIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwgaGFuZGxpbmcgb2YgdGhlCi0gIHBhcmVudCBwcm9jZXNzLgotCi0tIElzc3VlICM4NzE2OiBBdm9pZCBjcmFzaGVzIGNhdXNlZCBieSBBcXVhIFRrIG9uIE9TWCB3aGVuIGF0dGVtcHRpbmcgdG8gcnVuCi0gIHRlc3RfdGsgb3IgdGVzdF90dGtfZ3Vpb25seSB1bmRlciBhIHVzZXJuYW1lIHRoYXQgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQKLSAgaW4gdG8gdGhlIGNvbnNvbGUgd2luZG93c2VydmVyIChhcyBtYXkgYmUgdGhlIGNhc2UgdW5kZXIgYnVpbGRib3Qgb3Igc3NoKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMC1KdWwtMjAxMSoKLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKKyAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCiAKIC0gSXNzdWUgIzEyNDY3OiB3YXJuaW5nczogZml4IGEgcmFjZSBjb25kaXRpb24gaWYgYSB3YXJuaW5nIGlzIGVtaXR0ZWQgYXQKICAgc2h1dGRvd24sIGlmIGdsb2JhbHMoKVsnX19maWxlX18nXSBpcyBOb25lLgogCi1UZXN0cwotLS0tLS0KKy0gSXNzdWUgIzEyNDUxOiBweWRvYzogaW1wb3J0ZmlsZSgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKKyAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgogCi0tIFNraXAgbmV0d29yayB0ZXN0cyB3aGVuIGdldGFkZHJpbmZvKCkgcmV0dXJucyBFQUlfQUdBSU4sIG1lYW5pbmcgYSB0ZW1wb3JhcnkKLSAgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uCistIElzc3VlICMxMjQ1MTogcnVucHk6IHJ1bl9wYXRoKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAorICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBzdXBwb3J0IG90aGVyIGVuY29kaW5ncworICB0aGFuIFVURi04IChzY3JpcHRzIHVzaW5nIHRoZSBjb2RpbmcgY29va2llKS4KIAotLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCi0gIGluIHRlc3RfdGVsbmV0bGliLnB5LgotCi0tIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cwotICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0Ci0gIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjEgcmVsZWFzZSBjYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAzLUp1bC0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIyOTE6IFlvdSBjYW4gbm93IGxvYWQgbXVsdGlwbGUgbWFyc2hhbGxlZCBvYmplY3RzIGZyb20gYSBzdHJlYW0sIHdpdGgKLSAgb3RoZXIgZGF0YSBpbnRlcmxlYXZlZCBiZXR3ZWVuIG1hcnNoYWxsZWQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTIwODQ6IG9zLnN0YXQgb24gV2luZG93cyBub3cgd29ya3MgcHJvcGVybHkgd2l0aCByZWxhdGl2ZSBzeW1ib2xpYwotICBsaW5rcyB3aGVuIGNhbGxlZCBmcm9tIGFueSBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAotICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAotICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCi0KLS0gSXNzdWUgIzk2NzA6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uIE1hYyBPUyBYCi0gIGFuZCBGcmVlQlNEIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZiBhIGNyYXNoIGluc3RlYWQgb2YgYSAibWF4aW11bSByZWN1cnNpb24KLSAgZGVwdGgiIFJ1bnRpbWVFcnJvciBleGNlcHRpb24gKHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikuCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzEyNDUxOiB4bWwuZG9tLnB1bGxkb206IHBhcnNlKCkgbm93IG9wZW5zIGZpbGVzIGluIGJpbmFyeSBtb2RlIGluc3RlYWQKKyAgb2YgdGhlIHRleHQgbW9kZSAodXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZykgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgogCiAtIElzc3VlICMxMjE0NzogQWRqdXN0IHRoZSBuZXctaW4tMy4yIHNtdHBsaWIuc2VuZF9tZXNzYWdlIG1ldGhvZCBmb3IgYmV0dGVyCi0gIGNvbmZvcm1hbmNlIHRvIHRoZSBSRkNzOiBjb3JyZWN0bHkgaGFuZGxlIFNlbmRlciBhbmQgUmVzZW50IGhlYWRlcnMuCisgIGNvbmZvcm1hbmNlIHRvIHRoZSBSRkNzOiAgY29ycmVjdGx5IGhhbmRsZSBTZW5kZXIgYW5kIFJlc2VudC0gaGVhZGVycy4KIAogLSBJc3N1ZSAjMTIzNTI6IEZpeCBhIGRlYWRsb2NrIGluIG11bHRpcHJvY2Vzc2luZy5IZWFwIHdoZW4gYSBibG9jayBpcyBmcmVlZCBieQogICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Igd2hpbGUgdGhlIEhlYXAgbG9jayBpcyBoZWxkLgogCistIElzc3VlICMxMjQ2MjogdGltZS5zbGVlcCgpIG5vdyBjYWxscyBpbW1lZGlhdGx5IHRoZSAoUHl0aG9uKSBzaWduYWwgaGFuZGxlcgorICBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd2FpdCB1bnRpbCB0aGUgbmV4dAorICBpbnN0cnVjdGlvbi4KKworLSBJc3N1ZSAjMTI0NDI6IG5ldyBzaHV0aWwuZGlza191c2FnZSBmdW5jdGlvbiwgcHJvdmlkaW5nIHRvdGFsLCB1c2VkIGFuZCBmcmVlCisgIGRpc2sgc3BhY2Ugc3RhdGlzdGljcy4KKwogLSBJc3N1ZSAjMTI0NTE6IFRoZSBYSW5jbHVkZSBkZWZhdWx0IGxvYWRlciBvZiB4bWwuZXRyZWUgbm93IGRlY29kZXMgZmlsZXMgZnJvbQogICBVVEYtOCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIEl0IG5vdwotICBhbHNvIG9wZW5zIFhNTCBmaWxlcyBmb3IgdGhlIHBhcnNlciBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkIG9mIHRoZSB0ZXh0IG1vZGUgdG8KLSAgYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogZG9jdGVzdC5kZWJ1Z19zY3JpcHQoKSBkb2Vzbid0IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGFueW1vcmUKKyAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlCiAgIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLCB0bwotICByZWFkIHRoZSBQeXRob24gbW9kdWxlIGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgorLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZQorICBhbnltb3JlIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLAorICB0byByZWFkIHRoZSBQeXRob24gc2NyaXB0IGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgogCiAtIElzc3VlICMxMjQ1MTogZGlzdHV0aWxzIG5vdyBvcGVucyB0aGUgc2V0dXAgc2NyaXB0IGluIGJpbmFyeSBtb2RlIHRvIHJlYWQgdGhlCiAgIGVuY29kaW5nIGNvb2tpZSwgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIFVURi04LgpAQCAtMTU3OCwxNCArMzE3OCwzMiBAQAogICBzdGlsbCBwb3NzaWJsZSB0byBnbG9iYWxseSBvdmVycmlkZSB0aGUgZGVmYXVsdCBieSBzZXR0aW5nCiAgIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBiZWZvcmUgbGF1bmNoaW5nIHRoZSBpbnRlcnByZXRlcjsgaXRzIHZhbHVlIG11c3QgYmUKICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHZhbHVlIHdpdGggd2hpY2ggdGhlIGludGVycHJldGVyCi0gIHdhcyBidWlsdC4KKyAgd2FzIGJ1aWx0LiAgQWxzbywgaW1wbGVtZW50IHRoZSBzYW1lIGhhbmRsaW5nIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjMTI0MjI6IEluIHRoZSBjb3B5IG1vZHVsZSwgZG9uJ3Qgc3RvcmUgb2JqZWN0cyB0aGF0IGFyZSB0aGVpciBvd24gY29weQorICBpbiB0aGUgbWVtbyBkaWN0LgorCistIElzc3VlICMxMjMwMzogQWRkIHNpZ3dhaXRpbmZvKCkgYW5kIHNpZ3RpbWVkd2FpdCgpIHRvIHRoZSBzaWduYWwgbW9kdWxlLgorCistIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQorICBLaXRhZGEuCisKKy0gSXNzdWUgIzE4NzQ6IGVtYWlsIG5vdyBkZXRlY3RzIGFuZCByZXBvcnRzIGFzIGEgZGVmZWN0IHRoZSBwcmVzZW5jZSBvZgorICBhbnkgQ1RFIG90aGVyIHRoYW4gN2JpdCwgOGJpdCwgb3IgYmluYXJ5IG9uIGEgbXVsdGlwYXJ0LgogCiAtIElzc3VlICMxMjM4MzogRml4IHN1YnByb2Nlc3MgbW9kdWxlIHdpdGggZW52PXt9OiBkb24ndCBjb3B5IHRoZSBlbnZpcm9ubWVudAogICB2YXJpYWJsZXMsIHN0YXJ0IHdpdGggYW4gZW1wdHkgZW52aXJvbm1lbnQuCiAKLS0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlciBwYXNzZWQKLSAgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsIGlmIGdpdmVuCi0gIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCistIElzc3VlICMxMTYzNzogRml4IHN1cHBvcnQgZm9yIGltcG9ydGluZyBwYWNrYWdpbmcgc2V0dXAgaG9va3MgZnJvbSB0aGUKKyAgcHJvamVjdCBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzY3NzE6IE1vdmVkIHRoZSBjdXJzZXMud3JhcHBlciBmdW5jdGlvbiBmcm9tIHRoZSBzaW5nbGUtZnVuY3Rpb24KKyAgd3JhcHBlciBtb2R1bGUgaW50byBfX2luaXRfXywgZWxpbWluYXRpbmcgdGhlIG1vZHVsZS4gIFNpbmNlIF9faW5pdF9fIHdhcworICBhbHJlYWR5IGltcG9ydGluZyB0aGUgZnVuY3Rpb24gdG8gY3Vyc2VzLndyYXBwZXIsIHRoZXJlIGlzIG5vIEFQSSBjaGFuZ2UuCisKKy0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlcgorICBwYXNzZWQgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsCisgIGlmIGdpdmVuIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCiAKIC0gSXNzdWUgIzExNzAwOiBtYWlsYm94IHByb3h5IG9iamVjdCBjbG9zZSBtZXRob2RzIGNhbiBub3cgYmUgY2FsbGVkIG11bHRpcGxlCiAgIHRpbWVzIHdpdGhvdXQgZXJyb3IuCkBAIC0xNTk2LDM1ICszMjE0LDEwNSBAQAogICBjb25uZWN0aW9uIGlmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaAogICB3cml0dGVuIGJ5IEV6aW8gTWVsb3R0aS4KIAorLSBJc3N1ZSAjMTIyNDA6IEFsbG93IG11bHRpcGxlIHNldHVwIGhvb2tzIGluIHBhY2thZ2luZydzIHNldHVwLmNmZyBmaWxlcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBCcmF5LgorCiAtIElzc3VlICM5Mjg0OiBBbGxvdyBpbnNwZWN0LmZpbmRzb3VyY2UoKSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgZG9jdGVzdAogICBmdW5jdGlvbnMuCiAKKy0gSXNzdWUgIzExNTk1OiBGaXggYXNzb3J0ZWQgYnVncyBpbiBwYWNrYWdpbmcudXRpbC5jZmdfdG9fYXJncywgYQorICBjb21wYXRpYmlsaXR5IGhlbHBlciBmb3IgdGhlIGRpc3R1dGlscy1wYWNrYWdpbmcgdHJhbnNpdGlvbi4gIE9yaWdpbmFsIHBhdGNoCisgIGJ5IEVyaWsgQnJheS4KKworLSBJc3N1ZSAjMTIyODc6IEluIG9zc2F1ZGlvZGV2LCBjaGVjayB0aGF0IHRoZSBkZXZpY2UgaXNuJ3QgY2xvc2VkIGluIHNldmVyYWwKKyAgbWV0aG9kcy4KKwogLSBJc3N1ZSAjMTIwMDk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gbmV0cmMgZmlsZSBjb21tZW50IGhhbmRsaW5nLgogCistIElzc3VlICMxMjI0NjogV2FybiBhbmQgZmFpbCB3aGVuIHRyeWluZyB0byBpbnN0YWxsIGEgdGhpcmQtcGFydHkgcHJvamVjdCBmcm9tCisgIGFuIHVuaW5zdGFsbGVkIFB5dGhvbiAoYnVpbHQgaW4gYSBzb3VyY2UgY2hlY2tvdXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgVHNoZXBhbmcgTGVraG9ua2hvYmUuCisKIC0gSXNzdWUgIzEwNjk0OiB6aXBmaWxlIG5vdyBpZ25vcmVzIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiBhIHppcGZpbGUuCiAKIC0gSXNzdWUgIzEyMjgzOiBGaXhlZCByZWdyZXNzaW9uIGluIHNtdHBsaWIgcXVvdGluZyBvZiBsZWFkaW5nIGRvdHMgaW4gREFUQS4KIAorLSBJc3N1ZSAjMTA0MjQ6IEFyZ3BhcnNlIG5vdyBpbmNsdWRlcyB0aGUgbmFtZXMgb2YgdGhlIG1pc3NpbmcgcmVxdWlyZWQKKyAgYXJndW1lbnRzIGluIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBlcnJvciBtZXNzYWdlLgorCiAtIElzc3VlICMxMjE2ODogU3lzTG9nSGFuZGxlciBub3cgYWxsb3dzIE5VTCB0ZXJtaW5hdGlvbiB0byBiZSBjb250cm9sbGVkIHVzaW5nCiAgIGEgbmV3ICdhcHBlbmRfbnVsJyBhdHRyaWJ1dGUgb24gdGhlIGhhbmRsZXIuCiAKIC0gSXNzdWUgIzExNTgzOiBTcGVlZCB1cCBvcy5wYXRoLmlzZGlyIG9uIFdpbmRvd3MgYnkgdXNpbmcgR2V0RmlsZUF0dHJpYnV0ZXMKICAgaW5zdGVhZCBvZiBvcy5zdGF0LgogCistIElzc3VlICMxMjAyMTogTWFrZSBtbWFwJ3MgcmVhZCgpIG1ldGhvZCBhcmd1bWVudCBvcHRpb25hbC4gUGF0Y2ggYnkgUGV0cmkKKyAgTGVodGluZW4uCisKKy0gSXNzdWUgIzkyMDU6IGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIG5vdyBkZXRlY3RzIGtpbGxlZAorICBjaGlsZHJlbiBhbmQgcmFpc2VzIEJyb2tlblByb2Nlc3NQb29sIGluIHN1Y2ggYSBzaXR1YXRpb24uICBQcmV2aW91c2x5IGl0CisgIHdvdWxkIHJlbGlhYmx5IGZyZWV6ZS9kZWFkbG9jay4KKworLSBJc3N1ZSAjMTIwNDA6IEV4cG9zZSBhIG5ldyBhdHRyaWJ1dGUgYGBzZW50aW5lbGBgIG9uIGluc3RhbmNlcyBvZgorICBgYG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYGAuICBBbHNvLCBmaXggUHJvY2Vzcy5qb2luKCkgdG8gbm90IHVzZSBwb2xsaW5nCisgIGFueW1vcmUsIHdoZW4gZ2l2ZW4gYSB0aW1lb3V0LgorCistIElzc3VlICMxMTg5MzogUmVtb3ZlIG9ic29sZXRlIGludGVybmFsIHdyYXBwZXIgY2xhc3MgYGBTU0xGYWtlRmlsZWBgIGluIHRoZQorICBzbXRwbGliIG1vZHVsZS4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCisKKy0gSXNzdWUgIzEyMDgwOiBGaXggYSBEZWNpbWFsLnBvd2VyKCkgY2FzZSB0aGF0IHRvb2sgYW4gdW5yZWFzb25hYmx5IGxvbmcgdGltZQorICB0byBjb21wdXRlLgorCistIElzc3VlICMxMjIyMTogUmVtb3ZlIF9fdmVyc2lvbl9fIGF0dHJpYnV0ZXMgZnJvbSBweWV4cGF0LCBwaWNrbGUsIHRhcmZpbGUsCisgIHB5ZG9jLCB0a2ludGVyLCBhbmQgeG1sLnBhcnNlcnMuZXhwYXQuIFRoaXMgd2VyZSB1c2VsZXNzIHZlcnNpb24gY29uc3RhbnRzCisgIGxlZnQgb3ZlciBmcm9tIHRoZSBNZXJjdXJpYWwgdHJhbnNpdGlvbgorCiAtIE5hbWVkIHR1cGxlcyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCB2YXJzKCkuCiAKIC0gSXNzdWUgIzEyMDg1OiBGaXggYW4gYXR0cmlidXRlIGVycm9yIGluIHN1YnByb2Nlc3MuUG9wZW4gZGVzdHJ1Y3RvciBpZiB0aGUKICAgY29uc3RydWN0b3IgaGFzIGZhaWxlZCwgZS5nLiBiZWNhdXNlIG9mIGFuIHVuZGVjbGFyZWQga2V5d29yZCBhcmd1bWVudC4gUGF0Y2gKICAgd3JpdHRlbiBieSBPbGVnIE9zaG15YW4uCiAKLS0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLiAgUGF0Y2ggYnkKLSAgTWhlciBNb3ZzaXN5YW4uCistIElzc3VlICMxMjAyODogTWFrZSB0aHJlYWRpbmcuX2dldF9pZGVudCgpIHB1YmxpYywgcmVuYW1lIGl0IHRvCisgIHRocmVhZGluZy5nZXRfaWRlbnQoKSBhbmQgZG9jdW1lbnQgaXQuIFRoaXMgZnVuY3Rpb24gd2FzIGFscmVhZHkgdXNlZCB1c2luZworICBfdGhyZWFkLmdldF9pZGVudCgpLgorCistIElzc3VlICMxMjE3MTogSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0KCkgb2YgQ0pLIGNvZGVjcyAobXVsdGlieXRlY29kZWMpIGNhbGxzCisgIGVuY3Jlc2V0KCkgaW5zdGVhZCBvZiBkZWNyZXNldCgpLgorCistIElzc3VlICMxMjIxODogUmVtb3ZlZCB3c2dpcmVmLmVnZy1pbmZvLgorCistIElzc3VlICMxMjE5NjogQWRkIHBpcGUyKCkgdG8gdGhlIG9zIG1vZHVsZS4KKworLSBJc3N1ZSAjOTg1MDY0OiBNYWtlIHBsaXN0bGliIG1vcmUgcmVzaWxpZW50IHRvIGZhdWx0eSBpbnB1dCBwbGlzdHMuCisgIFBhdGNoIGJ5IE1oZXIgTW92c2lzeWFuLgorCistIElzc3VlICMxNjI1OiBCWjJGaWxlIGFuZCBiejIuZGVjb21wcmVzcygpIG5vdyBzdXBwb3J0IG11bHRpLXN0cmVhbSBmaWxlcy4KKyAgSW5pdGlhbCBwYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzEyMTc1OiBCdWZmZXJlZFJlYWRlci5yZWFkKC0xKSBub3cgY2FsbHMgcmF3LnJlYWRhbGwoKSBpZiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyBvbmx5IHJlYWRzIHRoZSBmaWxlIHBvc2l0aW9uIGFuZCBzaXplCisgIG9uY2UuCiAKIC0gSXNzdWUgIzEyMTc1OiBSYXdJT0Jhc2UucmVhZGFsbCgpIG5vdyByZXR1cm5zIE5vbmUgaWYgcmVhZCgpIHJldHVybnMgTm9uZS4KIAogLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yCiAgIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4KIAorLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peGluCisgIGNsYXNzIGZvciBjbGVhbnVwLiBJbml0aWFsIFBhdGNoIGJ5IEp1c3RpbiBXYXJrLgorCistIElzc3VlICMxMjA0NTogQXZvaWQgZHVwbGljYXRlIGV4ZWN1dGlvbiBvZiBjb21tYW5kIGluCisgIGN0eXBlcy51dGlsLl9nZXRfc29uYW1lKCkuICBQYXRjaCBieSBTaWppbiBKb3NlcGguCisKKy0gSXNzdWUgIzEwODE4OiBSZW1vdmUgdGhlIFRrIEdVSSBhbmQgdGhlIHNlcnZlKCkgZnVuY3Rpb24gb2YgdGhlIHB5ZG9jIG1vZHVsZSwKKyAgcHlkb2MgLWcgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yIGFuZCBpdCBoYXMgYSBuZXcgZW5oYW5jZWQgd2ViCisgIHNlcnZlci4KKworLSBJc3N1ZSAjMTQ0MTUzMDogSW4gaW1hcGxpYiwgcmVhZCB0aGUgZGF0YSBpbiBvbmUgY2h1bmsgdG8gc3BlZWQgdXAgbGFyZ2UKKyAgcmVhZHMgYW5kIHNpbXBsaWZ5IGNvZGUuCisKIC0gSXNzdWUgIzEyMDcwOiBGaXggdGhlIE1ha2VmaWxlIHBhcnNlciBvZiB0aGUgc3lzY29uZmlnIG1vZHVsZSB0byBoYW5kbGUKICAgY29ycmVjdGx5IHJlZmVyZW5jZXMgdG8gImJvZ3VzIHZhcmlhYmxlIiAoZS5nLiAicHJlZml4PSQvb3B0L3B5dGhvbiIpLgogCkBAIC0xNjMyLDgxICszMzIwLDMwIEBACiAgIHRoZWlyIGVuY29kZSgpIG1ldGhvZCBhbnltb3JlLCBidXQgY29udGludWUgdG8gY2FsbCB0aGUgcmVzZXQoKSBtZXRob2QgaWYgdGhlCiAgIGZpbmFsIGFyZ3VtZW50IGlzIFRydWUuCiAKLS0gSXNzdWUgIzU3MTU6IEluIHNvY2tldHNlcnZlciwgY2xvc2UgdGhlIHNlcnZlciBzb2NrZXQgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCistIElzc3VlICMxMjA0OTogQWRkIFJBTkRfYnl0ZXMoKSBhbmQgUkFORF9wc2V1ZG9fYnl0ZXMoKSBmdW5jdGlvbnMgdG8gdGhlIHNzbAorICBtb2R1bGUuCiAKLS0gQ29ycmVjdCBsb29rdXAgb2YgX19kaXJfXyBvbiBvYmplY3RzLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgY2F1c2VzIGVycm9ycwotICBiZXNpZGVzIEF0dHJpYnV0ZUVycm9yIGZvdW5kIG9uIGxvb2t1cCB0byBiZSBwcm9wYWdhdGVkLgorLSBJc3N1ZSAjNjUwMTogb3MuZGV2aWNlX2VuY29kaW5nKCkgcmV0dXJucyBOb25lIG9uIFdpbmRvd3MgaWYgdGhlIGFwcGxpY2F0aW9uCisgIGhhcyBubyBjb25zb2xlLgorCistIElzc3VlICMxMjEwNTogQWRkIE9fQ0xPRVhFQyB0byB0aGUgb3MgbW9kdWxlLgorCistIElzc3VlICMxMjA3OTogRGVjaW1hbCgnSW5maW5pdHknKS5mbWEoRGVjaW1hbCgnMCcpLCAoMy45MTIyNDMxODEyNjc4NmUrMTkrMGopKQorICBub3cgcmFpc2VzIFR5cGVFcnJvciAocmVmbGVjdGluZyB0aGUgaW52YWxpZCB0eXBlIG9mIHRoZSAzcmQgYXJndW1lbnQpIHJhdGhlcgorICB0aGFuIERlY2ltYWwuSW52YWxpZE9wZXJhdGlvbi4KIAogLSBJc3N1ZSAjMTIxMjQ6IHppcGltcG9ydCBkb2Vzbid0IGtlZXAgYSByZWZlcmVuY2UgdG8gemxpYi5kZWNvbXByZXNzKCkgYW55bW9yZQogICB0byBiZSBhYmxlIHRvIHVubG9hZCB0aGUgbW9kdWxlLgogCistIEFkZCB0aGUgcGFja2FnaW5nIG1vZHVsZSwgYW4gaW1wcm92ZWQgZm9yayBvZiBkaXN0dXRpbHMgKGFsc28ga25vd24gYXMKKyAgZGlzdHV0aWxzMikuCisKIC0gSXNzdWUgIzEyMDY1OiBjb25uZWN0X2V4KCkgb24gYW4gU1NMIHNvY2tldCBub3cgcmV0dXJucyB0aGUgb3JpZ2luYWwgZXJybm8KICAgd2hlbiB0aGUgc29ja2V0J3MgdGltZW91dCBleHBpcmVzIChpdCB1c2VkIHRvIHJldHVybiBOb25lKS4KIAotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNDA0OiBSZW1vdmUgQzg5IGluY29tcGF0aWJsZSBjb2RlIGZyb20gbW1hcCBtb2R1bGUuIFBhdGNoIGJ5IEFraXJhCi0gIEtpdGFkYS4KLQotLSBJc3N1ZSAjMTIyMjE6IFJlcGxhY2UgcHlleHBhdC5fX3ZlcnNpb25fXyB3aXRoIHRoZSBQeXRob24gdmVyc2lvbi4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzg3NDY6IENvcnJlY3QgZmF1bHR5IGNvbmZpZ3VyZSBjaGVja3Mgc28gdGhhdCBvcy5jaGZsYWdzKCkgYW5kCi0gIG9zLmxjaGZsYWdzKCkgYXJlIG9uY2UgYWdhaW4gYnVpbHQgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhlc2UgZnVuY3Rpb25zCi0gICgqQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFggKFVGX0hJRERFTiBhbmQKLSAgVUZfQ09NUFJFU1NFRCkuCi0KLS0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlCi0gICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIgZmlsZXMgaW4gdGhlCi0gIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgotCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKLSAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQotICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgotCi0tIElzc3VlICMxMjE0MTogSW5zdGFsbCBhIGNvcHkgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0IHRlc3RfYnVpbGRfZXh0Ci0gIG9mIHRlc3RfZGlzdHV0aWxzIGlzIG5vIGxvbmdlciBzaWxlbnRseSBza2lwcGVkIHdoZW4gcnVuIG91dHNpZGUgb2YgYSBidWlsZAotICBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzg3NDY6IEFkZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkuICBQYXRjaAotICBieSBHYXJyZXR0IENvb3Blci4KLQotLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOSBvbiBNYWMKLSAgT1MgWC4gIChQYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCi0KLS0gSXNzdWUgIzEyMDU3OiBBZGQgdGVzdHMgZm9yIElTTyAyMDIyIGNvZGVjcyAoaXNvMjAyMl9qcCwgaXNvMjAyMl9qcF8yLAotICBpc28yMDIyX2tyKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMSByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTUtTWF5LTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjA2MDogVXNlIHNpZ19hdG9taWNfdCB0eXBlIGFuZCB2b2xhdGlsZSBrZXl3b3JkIGluIHRoZSBzaWduYWwKLSAgbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTIwNDQ6IEZpeGVkIHN1YnByb2Nlc3MuUG9wZW4gd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyIHRvCi0gIHdhaXQgZm9yIHRoZSBwcm9jZXNzIHRvIGVuZCB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgdG8gYXZvaWQgdW5pbnRlbnRpb25hbGx5Ci0gIGxlYXZpbmcgem9tYmllIHByb2Nlc3NlcyBhcm91bmQuCi0KLS0gSXNzdWUgIzExOTU6IEZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsCi0gIGNsZWFyIHRoZSBlbmQtb2YtZmlsZSBpbmRpY2F0b3IgYWZ0ZXIgQ1RSTCtkLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICM4ODA5OiBUaGUgU01UUF9TU0wgY29uc3RydWN0b3IgYW5kIFNNVFAuc3RhcnR0bHMoKSBub3cgc3VwcG9ydAorICBwYXNzaW5nIGEgYGBjb250ZXh0YGAgYXJndW1lbnQgcG9pbnRpbmcgdG8gYW4gc3NsLlNTTENvbnRleHQgaW5zdGFuY2UuCisgIFBhdGNoIGJ5IEthc3VuIEhlcmF0aC4KIAogLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCiAgIHdpdGggVGsgOC41LgpAQCAtMTcxNCw4ICszMzUxLDYgQEAKIC0gSXNzdWUgIzk1MTY6IElzc3VlICM5NTE2OiBhdm9pZCBlcnJvcnMgaW4gc3lzY29uZmlnIHdoZW4gTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiAgIGlzIHNldCBpbiBzaGVsbC4KIAotLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgotCiAtIElzc3VlICM4NjUwOiBNYWtlIHpsaWIgbW9kdWxlIDY0LWJpdCBjbGVhbi4gY29tcHJlc3MoKSwgZGVjb21wcmVzcygpIGFuZAogICB0aGVpciBpbmNyZW1lbnRhbCBjb3VudGVycGFydHMgbm93IHJhaXNlIE92ZXJmbG93RXJyb3IgaWYgZ2l2ZW4gYW4gaW5wdXQKICAgbGFyZ2VyIHRoYW4gNEdCLCBpbnN0ZWFkIG9mIHNpbGVudGx5IHRydW5jYXRpbmcgdGhlIGlucHV0IGFuZCByZXR1cm5pbmcKQEAgLTE3MjksMTIgKzMzNjQsMTYgQEAKICAgd3JpdGluZywgdGhlbiBzZWVraW5nIGJlZm9yZSB0aGUgcHJldmlvdXMgd3JpdGUgYnV0IHN0aWxsIHdpdGhpbiBidWZmZXJlZAogICBkYXRhLCBhbmQgd3JpdGluZyBhZ2FpbikuCiAKKy0gSXNzdWUgIzk5NzE6IFdyaXRlIGFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bygpLgorICBQYXRjaCBieSBKb2huIE8nQ29ubm9yLgorCiAtIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCiAgIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKICAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KIAotLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCi0gIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCistIElzc3VlICMxMTc5OTogdXJsbGliLnJlcXVlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlcnMgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IKKyAgd2hlbiBwcmVzZW50ZWQgd2l0aCBhbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuIFBhdGNoIGNvbnRyaWJ1dGVkCisgIGJ5IFl1dmFsIEdyZWVuZmllbGQuCiAKIC0gSXNzdWUgIzEwNDE5LCAjNjAxMTogYnVpbGRfc2NyaXB0cyBjb21tYW5kIG9mIGRpc3R1dGlscyBoYW5kbGVzIGNvcnJlY3RseQogICBub24tQVNDSUkgcGF0aCAocGF0aCB0byB0aGUgUHl0aG9uIGV4ZWN1dGFibGUpLiBPcGVuIGFuZCB3cml0ZSB0aGUgc2NyaXB0IGluCkBAIC0xNzQ0LDEzMyArMzM4Myw2OCBAQAogLSBJc3N1ZSAjODQ5ODogSW4gc29ja2V0LmFjY2VwdCgpLCBhbGxvdyB0byBzcGVjaWZ5IDAgYXMgYSBiYWNrbG9nIHZhbHVlIGluCiAgIG9yZGVyIHRvIGFjY2VwdCBleGFjdGx5IG9uZSBjb25uZWN0aW9uLiAgUGF0Y2ggYnkgRGFuaWVsIEV2ZXJzLgogCistIElzc3VlICMxMjAxMTogc2lnbmFsLnNpZ25hbCgpIGFuZCBzaWduYWwuc2lnaW50ZXJydXB0KCkgcmFpc2UgYW4gT1NFcnJvciwKKyAgaW5zdGVhZCBvZiBhIFJ1bnRpbWVFcnJvcjogT1NFcnJvciBoYXMgYW4gZXJybm8gYXR0cmlidXRlLgorCistIElzc3VlICMzNzA5OiBhIGZsdXNoX2hlYWRlcnMgbWV0aG9kIHRvIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIgd2hpY2ggbWFuYWdlcworICB0aGUgc2VuZGluZyBvZiBoZWFkZXJzIHRvIG91dHB1dCBzdHJlYW0gYW5kIGZsdXNoaW5nIHRoZSBpbnRlcm5hbCBoZWFkZXJzCisgIGJ1ZmZlci4gUGF0Y2ggY29udHJpYnV0aW9uIGJ5IEFuZHJldyBTY2hhYWYKKworLSBJc3N1ZSAjMTE3NDM6IFJld3JpdGUgbXVsdGlwcm9jZXNzaW5nIGNvbm5lY3Rpb24gY2xhc3NlcyBpbiBwdXJlIFB5dGhvbi4KKwogLSBJc3N1ZSAjMTExNjQ6IFN0b3AgdHJ5aW5nIHRvIHVzZSBfeG1scGx1cyBpbiB0aGUgeG1sIG1vZHVsZS4KIAotQnVpbGQKLS0tLS0tCistIElzc3VlICMxMTg4ODogQWRkIGxvZzIgZnVuY3Rpb24gdG8gbWF0aCBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgTWFyaworICBEaWNraW5zb24uCiAKLS0gSXNzdWUgIzExMzQ3OiBVc2UgLS1uby1hcy1uZWVkZWQgd2hlbiBsaW5raW5nIGxpYnB5dGhvbjMuc28uCistIElzc3VlICMxMjAxMjogc3NsLlBST1RPQ09MX1NTTHYyIGJlY29tZXMgb3B0aW9uYWwuCiAKLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjODQwNzogVGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyB0aGUgc2lnbmFsIG51bWJlciBhcyBhIHNpbmdsZSBieXRlCisgIGluc3RlYWQgb2YgYSBudWwgYnl0ZSBpbnRvIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBTbyBpdCBpcyBwb3NzaWJsZSB0bworICB3YWl0IG1vcmUgdGhhbiBvbmUgc2lnbmFsIGFuZCBrbm93IHdoaWNoIHNpZ25hbHMgd2VyZSByYWlzZWQuCiAKLS0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKLSAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCistIElzc3VlICM4NDA3OiBBZGQgcHRocmVhZF9raWxsKCksIHNpZ3BlbmRpbmcoKSBhbmQgc2lnd2FpdCgpIGZ1bmN0aW9ucyB0byB0aGUKKyAgc2lnbmFsIG1vZHVsZS4KIAotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzExOTEwOiBGaXggdGVzdF9oZWFwcSB0byBza2lwIHRoZSBDIHRlc3RzIHdoZW4gX2hlYXBxIGlzIG1pc3NpbmcuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjEgYmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwOC1NYXktMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4NTY6IEF2b2lkIGNyYXNoZXMgYW5kIGxvY2t1cHMgd2hlbiBkYWVtb24gdGhyZWFkcyBydW4gd2hpbGUgdGhlCi0gIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd247IGluc3RlYWQsIHRoZXNlIHRocmVhZHMgYXJlIG5vdyBraWxsZWQgd2hlbiB0aGV5Ci0gIHRyeSB0byB0YWtlIHRoZSBHSUwuCi0KLS0gSXNzdWUgIzk3NTY6IFdoZW4gY2FsbGluZyBhIG1ldGhvZCBkZXNjcmlwdG9yIG9yIGEgc2xvdCB3cmFwcGVyIGRlc2NyaXB0b3IsCi0gIHRoZSBjaGVjayBvZiB0aGUgb2JqZWN0IHR5cGUgZG9lc24ndCByZWFkIHRoZSBfX2NsYXNzX18gYXR0cmlidXRlIGFueW1vcmUuCi0gIEZpeCBhIGNyYXNoIGlmIGEgY2xhc3Mgb3ZlcnJpZGUgaXRzIF9fY2xhc3NfXyBhdHRyaWJ1dGUgKGUuZy4gYSBwcm94eSBvZiB0aGUKLSAgc3RyIHR5cGUpLiBQYXRjaCB3cml0dGVuIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTA5MTQ6IEluaXRpYWxpemUgY29ycmVjdGx5IHRoZSBmaWxlc3lzdGVtIGNvZGVjIHdoZW4gY3JlYXRpbmcgYSBuZXcKLSAgc3ViaW50ZXJwcmV0ZXIgdG8gZml4IGEgYm9vdHN0cmFwIGlzc3VlIHdpdGggY29kZWNzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgYXMKLSAgdGhlIElTTy04ODU5LTE1IGNvZGVjLgotCi0tIElzc3VlICMxMDUxNzogQWZ0ZXIgZm9yaygpLCByZWluaXRpYWxpemUgdGhlIFRMUyB1c2VkIGJ5IHRoZSBQeUdJTFN0YXRlXyoKLSAgQVBJcywgdG8gYXZvaWQgYSBjcmFzaCB3aXRoIHRoZSBwdGhyZWFkIGltcGxlbWVudGF0aW9uIGluIFJIRUwgNS4gIFBhdGNoIGJ5Ci0gIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjNjc4MDogZml4IHN0YXJ0cy9lbmRzd2l0aCBlcnJvciBtZXNzYWdlIHRvIG1lbnRpb24gdGhhdCB0dXBsZXMgYXJlCi0gIGFjY2VwdGVkIHRvby4KLQotLSBJc3N1ZSAjNTA1NzogZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcwotICBiZXR3ZWVuIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgd2hpbGUgb3B0aW1pemluZyBCSU5BUllfU1VCU0NSIG9uIG5vbi1CTVAgY2hhcnMKLSAgKGUuZy4gIlxVMDAwMTIzNDUiWzBdKS4KLQotLSBJc3N1ZSAjMTE4NDU6IEZpeCB0eXBvIGluIHJhbmdlb2JqZWN0LmMgdGhhdCBjYXVzZWQgYSBjcmFzaCBpbgotICBjb21wdXRlX3NsaWNlX2luZGljZXMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzExNjUwOiBQeU9TX1N0ZGlvUmVhZGxpbmUoKSByZXRyaWVzIGZnZXRzKCkgaWYgaXQgd2FzIGludGVycnVwdGVkCi0gIChFSU5UUiksIGZvciBleGFtcGxlIGlmIHRoZSBwcm9ncmFtIGlzIHN0b3BwZWQgd2l0aCBDVFJMK3ogb24gTWFjIE9TIFguIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExMzk1OiBpby5GaWxlSU8oKS53cml0ZSgpIGNsYW1wcyB0aGUgZGF0YSBsZW5ndGggdG8gMzIsNzY3IGJ5dGVzIG9uCi0gIFdpbmRvd3MgaWYgdGhlIGZpbGUgaXMgYSBUVFkgdG8gd29ya2Fyb3VuZCBhIFdpbmRvd3MgYnVnLiBUaGUgV2luZG93cyBjb25zb2xlCi0gIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmIHN0ZG91dAotICBtb2RlIGlzIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLCBkZXBlbmRpbmcKLSAgb24gaGVhcCB1c2FnZSkuCi0KLS0gSXNzdWUgIzExMzIwOiBmaXggYm9ndXMgbWVtb3J5IG1hbmFnZW1lbnQgaW4gTW9kdWxlcy9nZXRwYXRoLmMsIGxlYWRpbmcgdG8gYQotICBwb3NzaWJsZSBjcmFzaCB3aGVuIGNhbGxpbmcgUHlfU2V0UGF0aCgpLgotCi0tIElzc3VlICMxMTUxMDogRml4ZWQgb3B0aW1pemVyIGJ1ZyB3aGljaCB0dXJuZWQgImEsYj17MSwxfSIgaW50byAiYSxiPSgxLDEpIi4KLQotLSBJc3N1ZSAjMTE0MzI6IEEgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIHN1YnByb2Nlc3MuUG9wZW4gb24gcG9zaXggc3lzdGVtcyB3aXRoCi0gIDMuMi4wIHdoZXJlIHRoZSBzdGRvdXQgb3Igc3RkZXJyIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0aGUgc2FtZSBhcyB0aGUgc3RkaW4KLSAgZmlsZSBkZXNjcmlwdG9yIHdvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbi4gd2ViYnJvd3Nlci5vcGVuIHdvdWxkIGZhaWwuIGZpeGVkLgotCi0tIElzc3VlICMxMTQ1MDogRG9uJ3QgdHJ1bmNhdGUgaGcgdmVyc2lvbiBpbmZvIGluIFB5X0dldEJ1aWxkSW5mbygpIHdoZW4gdGhlcmUKLSAgYXJlIG1hbnkgdGFncyAoZS5nLiB3aGVuIHVzaW5nIG1xKS4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KLSAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KLSAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCi0KLS0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGggYQotICBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgotCi0tIElzc3VlICMxMTI3MjogT24gV2luZG93cywgaW5wdXQoKSBzdHJpcHMgJ1xyJyAoYW5kIG5vdCBvbmx5ICdcbicpLCBhbmQKLSAgc3lzLnN0ZGluIHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgKHJlcGxhY2UgJ1xyXG4nIGJ5ICdcbicpLgotCi0tIGlzc3VlICMxMTgyODogc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggZG9uJ3QgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguICBQYXRjaAotICBieSBUb3JzdGVuIEJlY2tlci4KLQotLSBJc3N1ZSAjMTA4MzA6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoIiVjIikgZm9yIG5vbi1CTVAgY2hhcmFjdGVycyBvbgotICBuYXJyb3cgYnVpbGQuCi0KLS0gQ2hlY2sgZm9yIE5VTEwgcmVzdWx0IGluIFB5VHlwZV9Gcm9tU3BlYy4KLQotLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCi0gIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTE5Mjc6IFNNVFBfU1NMIG5vdyB1c2VzIHBvcnQgNDY1IGJ5IGRlZmF1bHQgYXMgZG9jdW1lbnRlZC4gIFBhdGNoIGJ5Ci0gIEthc3VuIEhlcmF0aC4KKy0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaAorICBieSBLYXN1biBIZXJhdGguCiAKIC0gSXNzdWUgIzEyMDAyOiBmdHBsaWIncyBhYm9ydCgpIG1ldGhvZCByYWlzZXMgVHlwZUVycm9yLgogCistIElzc3VlICMxMTkxNjogQWRkIGEgbnVtYmVyIG9mIE1hY09TWCBzcGVjaWZpYyBkZWZpbml0aW9ucyB0byB0aGUgZXJybm8gbW9kdWxlLgorICBQYXRjaCBieSBQaWVycmUgQ2Fycmllci4KKwogLSBJc3N1ZSAjMTE5OTk6IGZpeGVkIHNwb3JhZGljIHN5bmMgZmFpbHVyZSBtYWlsYm94Lk1haWxkaXIgZHVlIHRvIGl0cyB0cnlpbmcgdG8KICAgZGV0ZWN0IG10aW1lIGNoYW5nZXMgYnkgY29tcGFyaW5nIHRvIHRoZSBzeXN0ZW0gY2xvY2sgaW5zdGVhZCBvZiB0byB0aGUKICAgcHJldmlvdXMgdmFsdWUgb2YgdGhlIG10aW1lLgogCistIElzc3VlICMxMTA3MjogYWRkZWQgTUxTRCBjb21tYW5kIChSRkMtMzY1OSkgc3VwcG9ydCB0byBmdHBsaWIuCisKKy0gSXNzdWUgIzg4MDg6IFRoZSBJTUFQNF9TU0wgY29uc3RydWN0b3Igbm93IGFsbG93cyBwYXNzaW5nIGFuIFNTTENvbnRleHQKKyAgcGFyYW1ldGVyIHRvIGNvbnRyb2wgcGFyYW1ldGVycyBvZiB0aGUgc2VjdXJlIGNoYW5uZWwuICBQYXRjaCBieSBTaWppbgorICBKb3NlcGguCisKIC0gbnRwYXRoLnNhbWVmaWxlIGZhaWxlZCB0byBub3RpY2UgdGhhdCAiYS50eHQiIGFuZCAiQS5UWFQiIHJlZmVyIHRvIHRoZSBzYW1lCiAgIGZpbGUgb24gV2luZG93cyBYUC4gQXMgbm90aWNlZCBpbiBpc3N1ZSAjMTA2ODQuCiAKLS0gSXNzdWUgIzEyMDAwOiBXaGVuIGEgU1NMIGNlcnRpZmljYXRlIGhhcyBhIHN1YmplY3RBbHROYW1lIHdpdGhvdXQgYW55IGROU05hbWUKLSAgZW50cnksIHNzbC5tYXRjaF9ob3N0bmFtZSgpIHNob3VsZCB1c2UgdGhlIHN1YmplY3QncyBjb21tb25OYW1lLiAgUGF0Y2ggYnkKLSAgTmljb2xhcyBCYXJlaWwuCistIElzc3VlICMxMjAwMDogV2hlbiBhIFNTTCBjZXJ0aWZpY2F0ZSBoYXMgYSBzdWJqZWN0QWx0TmFtZSB3aXRob3V0IGFueQorICBkTlNOYW1lIGVudHJ5LCBzc2wubWF0Y2hfaG9zdG5hbWUoKSBzaG91bGQgdXNlIHRoZSBzdWJqZWN0J3MgY29tbW9uTmFtZS4KKyAgUGF0Y2ggYnkgTmljb2xhcyBCYXJlaWwuCiAKLS0gSXNzdWUgIzExNjQ3OiBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY29udGV4dGxpYi5jb250ZXh0bWFuYWdlciBub3cgc3VwcG9ydCBtb3JlCi0gIHRoYW4gb25lIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gdXNlZCBhcyBhIGRlY29yYXRvci4gSW5pdGlhbCBwYXRjaCBieSBZc2oKLSAgUmF5LgorLSBJc3N1ZSAjMTA3NzU6IGFzc2VydFJhaXNlcywgYXNzZXJ0UmFpc2VzUmVnZXgsIGFzc2VydFdhcm5zLCBhbmQKKyAgYXNzZXJ0V2FybnNSZWdleCBub3cgYWNjZXB0IGEga2V5d29yZCBhcmd1bWVudCAnbXNnJyB3aGVuIHVzZWQgYXMgY29udGV4dAorICBtYW5hZ2Vycy4gIEluaXRpYWwgcGF0Y2ggYnkgV2luc3RvbiBFd2VydC4KKworLSBJc3N1ZSAjMTA2ODQ6IHNodXRpbC5tb3ZlIHVzZWQgdG8gZGVsZXRlIGEgZm9sZGVyIG9uIGNhc2UgaW5zZW5zaXRpdmUKKyAgZmlsZXN5c3RlbXMgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBuYW1lIHdoZXJlIHRoZSBzYW1lIGV4Y2VwdAorICBmb3IgdGhlIGNhc2UuCisKKy0gSXNzdWUgIzExNjQ3OiBvYmplY3RzIGNyZWF0ZWQgdXNpbmcgY29udGV4dGxpYi5jb250ZXh0bWFuYWdlciBub3cgc3VwcG9ydAorICBtb3JlIHRoYW4gb25lIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIHdoZW4gdXNlZCBhcyBhIGRlY29yYXRvci4gSW5pdGlhbCBwYXRjaAorICBieSBZc2ogUmF5LgorCistIElzc3VlICMxMTkzMDogUmVtb3ZlZCBkZXByZWNhdGVkIHRpbWUuYWNjZXB0MmR5ZWFyIHZhcmlhYmxlLgorICBSZW1vdmVkIHllYXIgPj0gMTAwMCByZXN0cmljdGlvbiBmcm9tIGRhdGV0aW1lLnN0cmZ0aW1lLgogCiAtIGxvZ2dpbmc6IGRvbid0IGRlZmluZSBRdWV1ZUxpc3RlbmVyIGlmIFB5dGhvbiBoYXMgbm8gdGhyZWFkIHN1cHBvcnQuCiAKQEAgLTE4NzksMTYgKzM0NTMsMzkgQEAKIC0gSXNzdWUgIzExMjc3OiBtbWFwLm1tYXAoKSBjYWxscyBmY250bChmZCwgRl9GVUxMRlNZTkMpIG9uIE1hYyBPUyBYIHRvIGdldAogICBhcm91bmQgYSBtbWFwIGJ1ZyB3aXRoIHNwYXJzZSBmaWxlcy4gUGF0Y2ggd3JpdHRlbiBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgogCistIElzc3VlICM4NDA3OiBBZGQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpIGZ1bmN0aW9uIHRvIGZldGNoIGFuZC9vciBjaGFuZ2UgdGhlCisgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKwogLSBJc3N1ZSAjMTE4NTg6IGNvbmZpZ3BhcnNlci5FeHRlbmRlZEludGVycG9sYXRpb24gZXhwZWN0ZWQgbG93ZXItY2FzZSBzZWN0aW9uCiAgIG5hbWVzLgogCiAtIElzc3VlICMxMTMyNDogQ29uZmlnUGFyc2VyKGludGVycG9sYXRpb249Tm9uZSkgbm93IHdvcmtzIGNvcnJlY3RseS4KIAorLSBJc3N1ZSAjMTE4MTE6IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCkgaXMgbm93IElQdjYtY29tcGF0aWJsZS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKwogLSBJc3N1ZSAjMTE3NjM6IGRvbid0IHVzZSBkaWZmbGliIGluIFRlc3RDYXNlLmFzc2VydE11bHRpTGluZUVxdWFsIGlmIHRoZQogICBzdHJpbmdzIGFyZSB0b28gbG9uZy4KIAogLSBJc3N1ZSAjMTEyMzY6IGdldHBhc3MuZ2V0cGFzcyByZXNwb25kcyB0byBjdHJsLWMgb3IgY3RybC16IG9uIHRlcm1pbmFsLgogCistIElzc3VlICMxMTg1NjogU3BlZWQgdXAgcGFyc2luZyBvZiBKU09OIG51bWJlcnMuCisKKy0gSXNzdWUgIzExMDA1OiB0aHJlYWRpbmcuUkxvY2soKS5fcmVsZWFzZV9zYXZlKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQorICBsb2NrIHdhcyBub3QgYWNxdWlyZWQuCisKKy0gSXNzdWUgIzExMjU4OiBTcGVlZCB1cCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKSB1bmRlciBMaW51eCBieSBhIGZhY3RvcgorICBvZiA1IHRvIDEwLiAgSW5pdGlhbCBwYXRjaCBieSBKb25hcyBILgorCistIElzc3VlICMxMTM4MjogVHJpdmlhbCBzeXN0ZW0gY2FsbHMsIHN1Y2ggYXMgZHVwKCkgb3IgcGlwZSgpLCBuZWVkbid0CisgIHJlbGVhc2UgdGhlIEdJTC4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTEyMjM6IEFkZCB0aHJlYWRpbmcuX2luZm8oKSBmdW5jdGlvbiBwcm92aWRpbmcgaW5mb3JtYXRpb25zIGFib3V0CisgIHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzExNzMxOiBzaW1wbGlmeS9lbmhhbmNlIGVtYWlsIHBhcnNlci9nZW5lcmF0b3IgQVBJIGJ5IGludHJvZHVjaW5nCisgIHBvbGljeSBvYmplY3RzLgorCiAtIElzc3VlICMxMTc2ODogVGhlIHNpZ25hbCBoYW5kbGVyIG9mIHRoZSBzaWduYWwgbW9kdWxlIG9ubHkgY2FsbHMKICAgUHlfQWRkUGVuZGluZ0NhbGwoKSBmb3IgdGhlIGZpcnN0IHNpZ25hbCB0byBmaXggYSBkZWFkbG9jayBvbiByZWVudHJhbnQgb3IKICAgcGFyYWxsZWwgY2FsbHMuIFB5RXJyX1NldEludGVycnVwdCgpIHdyaXRlcyBhbHNvIGludG8gdGhlIHdha2UgdXAgZmlsZS4KQEAgLTE5MDgsNiArMzUwNSwxMCBAQAogLSBJc3N1ZSAjMTE0NzQ6IEZpeCB0aGUgYnVnIHdpdGggdXJsMnBhdGhuYW1lKCkgaGFuZGxpbmcgb2YgJy9DfC8nIG9uIFdpbmRvd3MuCiAgIFBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgogCistIElzc3VlICMxMTY4NDogY29tcGxldGUgZW1haWwucGFyc2VyIGJ5dGVzIEFQSSBieSBhZGRpbmcgQnl0ZXNIZWFkZXJQYXJzZXIuCisKKy0gVGhlIGJ6MiBtb2R1bGUgbm93IGhhbmRsZXMgNEdpQisgaW5wdXQgYnVmZmVycyBjb3JyZWN0bHkuCisKIC0gSXNzdWUgIzkyMzM6IEZpeCBqc29uLmxvYWRzKCd7fScpIHRvIHJldHVybiBhIGRpY3QgKGluc3RlYWQgb2YgYSBsaXN0KSwgd2hlbgogICBfanNvbiBpcyBub3QgYXZhaWxhYmxlLgogCkBAIC0xOTE5LDE3ICszNTIwLDMzIEBACiAtIElzc3VlICMxMDAxOTogRml4ZWQgcmVncmVzc2lvbiBpbiBqc29uIG1vZHVsZSB3aGVyZSBhbiBpbmRlbnQgb2YgMCBzdG9wcGVkCiAgIGFkZGluZyBuZXdsaW5lcyBhbmQgYWN0ZWQgaW5zdGVhZCBsaWtlICdOb25lJy4KIAorLSBJc3N1ZSAjMTExODY6IHB5ZG9jIGlnbm9yZXMgYSBtb2R1bGUgaWYgaXRzIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUKKyAgY2hhcmFjdGVyIGluIHRoZSBpbmRleCBvZiBtb2R1bGVzLgorCistIElzc3VlICMxMTgxNTogVXNlIGEgbGlnaHQtd2VpZ2h0IFNpbXBsZVF1ZXVlIGZvciB0aGUgcmVzdWx0IHF1ZXVlIGluCisgIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgorCiAtIElzc3VlICM1MTYyOiBUcmVhdCBzZXJ2aWNlcyBsaWtlIGZyb3plbiBleGVjdXRhYmxlcyB0byBhbGxvdyBjaGlsZCBzcGF3bmluZwogICBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIG9uIFdpbmRvd3MuCiAKKy0gbG9nZ2luZy5iYXNpY0NvbmZpZyBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgJ2hhbmRsZXJzJyBhcmd1bWVudCB0YWtpbmcgYW4KKyAgaXRlcmFibGUgb2YgaGFuZGxlcnMgdG8gYmUgYWRkZWQgdG8gdGhlIHJvb3QgbG9nZ2VyLiBBZGRpdGlvbmFsIHBhcmFtZXRlcgorICBjaGVja3Mgd2VyZSBhbHNvIGFkZGVkIHRvIGJhc2ljQ29uZmlnLgorCiAtIElzc3VlICMxMTgxNDogRml4IGxpa2VseSB0eXBvIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sLl90ZXJtaW5hdGUoKS4KIAogLSBJc3N1ZSAjMTE3NDc6IEZpeCByYW5nZSBmb3JtYXR0aW5nIGluIGRpZmZsaWIuY29udGV4dF9kaWZmKCkgYW5kCiAgIGRpZmZsaWIudW5pZmllZF9kaWZmKCkuCiAKIC0gSXNzdWUgIzg0Mjg6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sIHdoZW4gdGVybWluYXRpbmcKLSAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nIHNodXQKLSAgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKyAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nCisgIHNodXQgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMjY1MDogcmUuZXNjYXBlKCkgbm8gbG9uZ2VyIGVzY2FwZXMgdGhlICdfJy4KKworLSBJc3N1ZSAjMTE3NTc6IHNlbGVjdC5zZWxlY3QoKSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhIG5lZ2F0aXZlIHRpbWVvdXQKKyAgaXMgcGFzc2VkIChwcmV2aW91c2x5LCBhIHNlbGVjdC5lcnJvciB3aXRoIEVJTlZBTCB3b3VsZCBiZSByYWlzZWQpLiAgUGF0Y2gKKyAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgogCiAtIElzc3VlICM3MzExOiBmaXggaHRtbC5wYXJzZXIgdG8gYWNjZXB0IG5vbi1BU0NJSSBhdHRyaWJ1dGUgdmFsdWVzLgogCkBAIC0xOTM3LDIxICszNTU0LDUwIEBACiAgIG11bHRpcGFydCBzdWJwYXJ0cyB3aXRoIGFuIDgtYml0IENURSBpbnRvIHVuaWNvZGUgaW5zdGVhZCBvZiBwcmVzZXJ2aW5nIHRoZQogICBieXRlcy4KIAorLSBJc3N1ZSAjMTY5MDYwODogZW1haWwudXRpbC5mb3JtYXRhZGRyIGlzIG5vdyBSRkMgMjA0NyBhd2FyZTogIGl0IG5vdyBoYXMgYQorICBjaGFyc2V0IHBhcmFtZXRlciB0aGF0IGRlZmF1bHRzIHRvIHV0Zi04IGFuZCBpcyB1c2VkIGFzIHRoZSBjaGFyc2V0IGZvciBSRkMKKyAgMjA0NyBlbmNvZGluZyB3aGVuIHRoZSByZWFsbmFtZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycy4KKwogLSBJc3N1ZSAjMTA5NjM6IEVuc3VyZSB0aGF0IHN1YnByb2Nlc3MuY29tbXVuaWNhdGUoKSBuZXZlciByYWlzZXMgRVBJUEUuCiAKKy0gSXNzdWUgIzEwNzkxOiBJbXBsZW1lbnQgbWlzc2luZyBtZXRob2QgR3ppcEZpbGUucmVhZDEoKSwgYWxsb3dpbmcgR3ppcEZpbGUKKyAgdG8gYmUgd3JhcHBlZCBpbiBhIFRleHRJT1dyYXBwZXIuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCisKKy0gSXNzdWUgIzExNzA3OiBBZGRlZCBhIGZhc3QgQyB2ZXJzaW9uIG9mIGZ1bmN0b29scy5jbXBfdG9fa2V5KCkuCisgIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzExNjg4OiBBZGQgc3FsaXRlMy5Db25uZWN0aW9uLnNldF90cmFjZV9jYWxsYmFjaygpLiAgUGF0Y2ggYnkKKyAgVG9yc3RlbiBMYW5kc2Nob2ZmLgorCiAtIElzc3VlICMxMTc0NjogRml4IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkgdG8gYWNjZXB0IGVsbGlwdGljIGN1cnZlCiAgIHByaXZhdGUga2V5cy4KIAorLSBJc3N1ZSAjNTg2MzogUmV3cml0ZSBCWjJGaWxlIGluIHB1cmUgUHl0aG9uLCBhbmQgYWxsb3cgaXQgdG8gYWNjZXB0CisgIGZpbGUtbGlrZSBvYmplY3RzIHVzaW5nIGEgbmV3IGBgZmlsZW9iamBgIGNvbnN0cnVjdG9yIGFyZ3VtZW50LiAgUGF0Y2ggYnkKKyAgTmFkZWVtIFZhd2RhLgorCistIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFNhbWVFbGVtZW50cyBoYXMgYmVlbiByZW1vdmVkLgorCiAtIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgaW5pdGZzZW5jb2RpbmcoKSB3YXMgbm90CiAgIGNhbGxlZCB5ZXQ6IGRldGVjdCBib290c3RyYXAgKHN0YXJ0dXApIGlzc3VlcyBlYXJsaWVyLgogCistIElzc3VlICMxMTM5MzogQWRkIHRoZSBuZXcgZmF1bHRoYW5kbGVyIG1vZHVsZS4KKwogLSBJc3N1ZSAjMTE2MTg6IEZpeCB0aGUgdGltZW91dCBsb2dpYyBpbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCkgdW5kZXIgV2luZG93cy4KIAorLSBSZW1vdmVkIHRoZSAnc3RyaWN0JyBhcmd1bWVudCB0byBlbWFpbC5wYXJzZXIuUGFyc2VyLCB3aGljaCBoYXMgYmVlbgorICBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAyLjQuCisKIC0gSXNzdWUgIzExMjU2OiBGaXggaW5zcGVjdC5nZXRjYWxsYXJncyBvbiBmdW5jdGlvbnMgdGhhdCB0YWtlIG9ubHkga2V5d29yZAogICBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzExNjk2OiBGaXggSUQgZ2VuZXJhdGlvbiBpbiBtc2lsaWIuCiAKKy0gaXRlcnRvb2xzLmFjY3VtdWxhdGUgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICpmdW5jKiBhcmd1bWVudCBmb3IKKyAgYSB1c2VyLXN1cHBsaWVkIGJpbmFyeSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTE2OTI6IFJlbW92ZSB1bm5lY2Vzc2FyeSBkZW1vIGZ1bmN0aW9ucyBpbiBzdWJwcm9jZXNzIG1vZHVsZS4KKwogLSBJc3N1ZSAjOTY5NjogRml4IGV4Y2VwdGlvbiBpbmNvcnJlY3RseSByYWlzZWQgYnkgeGRybGliLlBhY2tlci5wYWNrX2ludCB3aGVuCiAgIHRyeWluZyB0byBwYWNrIGEgbmVnYXRpdmUgKGluLXJhbmdlKSBpbnRlZ2VyLgogCkBAIC0xOTY3LDcgKzM2MTMsMjYgQEAKIC0gSXNzdWUgIzExNjM1OiBEb24ndCB1c2UgcG9sbGluZyBpbiB3b3JrZXIgdGhyZWFkcyBhbmQgcHJvY2Vzc2VzIGxhdW5jaGVkIGJ5CiAgIGNvbmN1cnJlbnQuZnV0dXJlcy4KIAotLSBJc3N1ZSAjMTE2Mjg6IGNtcF90b19rZXkgZ2VuZXJhdGVkIGNsYXNzIHNob3VsZCB1c2UgX19zbG90c19fCistIElzc3VlICM2ODExOiBBbGxvdyBpbXBvcnRsaWIgdG8gY2hhbmdlIGEgY29kZSBvYmplY3QncyBjb19maWxlbmFtZSBhdHRyaWJ1dGUKKyAgdG8gbWF0Y2ggdGhlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGN1cnJlbnRseSBpcywgbm90IHdoZXJlIHRoZSBjb2RlCisgIG9iamVjdCBvcmlnaW5hbGx5IGNhbWUgZnJvbS4KKworLSBJc3N1ZSAjODc1NDogSGF2ZSBpbXBvcnRsaWIgdXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMuCisKKy0gSXNzdWUgIzExNTkxOiBQcmV2ZW50ICJpbXBvcnQgc2l0ZSIgZnJvbSBtb2RpZnlpbmcgc3lzLnBhdGggd2hlbiBweXRob24KKyAgd2FzIHN0YXJ0ZWQgd2l0aCAtUy4KKworLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IGFkZHMgYSBfc291cmNlIGF0dHJpYnV0ZSB0byB0aGUgZ2VuZXJhdGVkCisgIGNsYXNzLiAgVGhpcyBtYWtlIHRoZSBzb3VyY2UgbW9yZSBhY2Nlc3NpYmxlIHRoYW4gdGhlIG91dGRhdGVkCisgICJ2ZXJib3NlIiBvcHRpb24gd2hpY2ggcHJpbnRzIHRvIHN0ZG91dCBidXQgZG9lc24ndCBtYWtlIHRoZSBzb3VyY2UKKyAgc3RyaW5nIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTEzNzE6IE1hcmsgZ2V0b3B0IGVycm9yIG1lc3NhZ2VzIGFzIGxvY2FsaXphYmxlLiAgUGF0Y2ggYnkgRmlsaXAKKyAgR3J1c3pjennFhHNraS4KKworLSBJc3N1ZSAjMTEzMzM6IEFkZCBfX3Nsb3RzX18gdG8gY29sbGVjdGlvbnMgQUJDcy4KKworLSBJc3N1ZSAjMTE2Mjg6IGNtcF90b19rZXkgZ2VuZXJhdGVkIGNsYXNzIHNob3VsZCB1c2UgX19zbG90c19fLgogCiAtIElzc3VlICMxMTY2NjogbGV0IGhlbHAoKSBkaXNwbGF5IG5hbWVkIHR1cGxlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMKICAgdGhhdCBzdGFydCB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLgpAQCAtMTk3OCw2ICszNjQzLDEwIEBACiAtIElzc3VlICM1NTM3OiBGaXggdGltZTJpc296KCkgYW5kIHRpbWUybmV0c2NhcGUoKSBmdW5jdGlvbnMgb2YKICAgaHR0cGxpYi5jb29raWVqYXIgZm9yIGV4cGlyYXRpb24geWVhciBncmVhdGVyIHRoYW4gMjAzOCBvbiAzMi1iaXQgc3lzdGVtcy4KIAorLSBJc3N1ZSAjNDM5MTogVXNlIHByb3BlciBnZXR0ZXh0IHBsdXJhbCBmb3JtcyBpbiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMTExMjc6IFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBhIHNvY2tldCBvYmplY3QuCisKIC0gSXNzdWUgIzExNTYzOiBDb25uZWN0aW9uOmNsb3NlIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgogICBjbGFzcyB3aGljaCBoZWxwcyBpbiBjbG9zaW5nIG9mIHNvY2tldHMgYWZ0ZXIgY29ubmVjdGlvbiBpcyBvdmVyLiBQYXRjaAogICBjb250cmlidXRpb25zIGJ5IEplZmYgTWNOZWlsIGFuZCBOYWRlZW0gVmF3ZGEuCkBAIC0xOTg4LDYgKzM2NTcsOCBAQAogLSBJc3N1ZSAjNTQyMTogRml4IG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIG9uZSBvZiBzb2NrZXQuc2VuZHRvKCkncwogICBhcmd1bWVudHMgaGFzIHRoZSB3cm9uZyB0eXBlLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KIAorLSBJc3N1ZSAjMTA4MTI6IEFkZCBzb21lIGV4dHJhIHBvc2l4IGZ1bmN0aW9ucyB0byB0aGUgb3MgbW9kdWxlLgorCiAtIElzc3VlICMxMDk3OTogdW5pdHRlc3Qgc3Rkb3V0IGJ1ZmZlcmluZyBub3cgd29ya3Mgd2l0aCBjbGFzcyBhbmQgbW9kdWxlCiAgIHNldHVwIGFuZCB0ZWFyZG93bi4KIApAQCAtMjAwMCw3NSArMzY3MSwxNTQgQEAKICAgcmVsYXRpdmUgdG8gUHl0aG9uMiBhbmQgdGhlIHJlc3VsdCBpcyBub3cgdGhlIHNhbWUgYXMgaXQgd2FzIGluIFB5dGhvbjIuCiAKIC0gSXNzdWUgIzkyOTg6IGJhc2U2NCBib2RpZXMgd2VyZW4ndCBiZWluZyBmb2xkZWQgdG8gbGluZSBsZW5ndGhzIGxlc3MgdGhhbiA3OCwKLSAgd2hpY2ggd2FzIGEgcmVncmVzc2lvbiByZWxhdGl2ZSB0byBQeXRob24yLiAgVW5saWtlIFB5dGhvbjIsIHRoZSBsYXN0IGxpbmUgb2YKLSAgdGhlIGZvbGRlZCBib2R5IG5vdyBlbmRzIHdpdGggYSBjYXJyaWFnZSByZXR1cm4uCisgIHdoaWNoIHdhcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMi4gIFVubGlrZSBQeXRob24yLCB0aGUgbGFzdCBsaW5lCisgIG9mIHRoZSBmb2xkZWQgYm9keSBub3cgZW5kcyB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuLgogCiAtIElzc3VlICMxMTU2MDogc2h1dGlsLnVucGFja19hcmNoaXZlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgZm9ybWF0CiAgIHBhcmFtZXRlci4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgogCistIElzc3VlICM1ODcwOiBBZGQgYHN1YnByb2Nlc3MuREVWTlVMTGAgY29uc3RhbnQuCisKIC0gSXNzdWUgIzExMTMzOiBmaXggdHdvIGNhc2VzIHdoZXJlIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgY2FuIHRyaWdnZXIgY29kZQogICBleGVjdXRpb24uIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KIAogLSBJc3N1ZSAjMTE1Njk6IHVzZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzeXNjdGwgY29tbWFuZCBpbiBtdWx0aXByb2Nlc3NpbmcgdG8KLSAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMgdGhhdAotICBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgorICBlbnN1cmUgdGhhdCBpdCB3aWxsIGJlIGZvdW5kIHJlZ2FyZGxlc3Mgb2YgdGhlIHNoZWxsIFBBVEguIFRoaXMgZW5zdXJlcworICB0aGF0IG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQgd29ya3Mgb24gZGVmYXVsdCBpbnN0YWxscyBvZiBNYWNPU1guCiAKIC0gSXNzdWUgIzExNTAxOiBkaXN1dGlscy5hcmNoaXZlX3V0aWxzLm1ha2VfemlwZmlsZSBubyBsb25nZXIgZmFpbHMgaWYgemxpYiBpcwogICBub3QgaW5zdGFsbGVkLiBJbnN0ZWFkLCB0aGUgemlwZmlsZS5aSVBfU1RPUkVEIGNvbXByZXNzaW9uIGlzIHVzZWQgdG8gY3JlYXRlCiAgIHRoZSBaaXBGaWxlLiBQYXRjaCBieSBOYXRhbGlhIEIuIEJpZGFydC4KIAorLSBJc3N1ZSAjMTEyODk6IGBzbXRwLlNNVFBgIGNsYXNzIGlzIG5vdyBhIGNvbnRleHQgbWFuYWdlciBzbyBpdCBjYW4gYmUgdXNlZAorICBpbiBhIGB3aXRoYCBzdGF0ZW1lbnQuICBDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2xhLgorCiAtIElzc3VlICMxMTU1NDogRml4ZWQgc3VwcG9ydCBmb3IgSmFwYW5lc2UgY29kZWNzOyBwcmV2aW91c2x5IHRoZSBib2R5IG91dHB1dAogICBlbmNvZGluZyB3YXMgbm90IGRvbmUgaWYgZXVjLWpwIG9yIHNoaWZ0LWppcyB3YXMgc3BlY2lmaWVkIGFzIHRoZSBjaGFyc2V0LgogCi0tIElzc3VlICMxMTUwMDogRml4ZWQgYSBidWcgaW4gdGhlIG9zIHggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZCBJUAotICBhZGRyZXNzZXMgaW4gdGhlIHByb3h5IGV4Y2VwdGlvbiBsaXN0LgorLSBJc3N1ZSAjMTE1MDk6IFNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGVzdCBjb3ZlcmFnZSBvZiBmaWxlaW5wdXQuCisgIFBhdGNoIGJ5IERlbnZlciBDb25leWJlYXJlIGF0IFB5Q29uIDIwMTEgU3ByaW50cy4KIAotLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGggdGhlCi0gICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcyB0aGUKLSAgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KKy0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KKyAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KIAotLSBJc3N1ZSAjMTExMzE6IEZpeCBzaWduIG9mIHplcm8gaW4gZGVjaW1hbC5EZWNpbWFsIHBsdXMgYW5kIG1pbnVzIG9wZXJhdGlvbnMKLSAgd2hlbiB0aGUgcm91bmRpbmcgbW9kZSBpcyBST1VORF9GTE9PUi4KKy0gSXNzdWUgIzExNTAwOiBGaXhlZCBhIGJ1ZyBpbiB0aGUgT1MgWCBwcm94eSBieXBhc3MgY29kZSBmb3IgZnVsbHkgcXVhbGlmaWVkCisgIElQIGFkZHJlc3NlcyBpbiB0aGUgcHJveHkgZXhjZXB0aW9uIGxpc3QuCisKKy0gSXNzdWUgIzExNDkxOiBkYm0uZXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCB3aGVuIGRibS5vcGVuIGlzIGNhbGxlZCB3aXRoCisgIHRoZSAibiIgYXMgdGhlIGZsYWcgYXJndW1lbnQgYW5kIHRoZSBmaWxlIGV4aXN0cy4gVGhlIGJlaGF2aW9yIG1hdGNoZXMKKyAgdGhlIGRvY3VtZW50YXRpb24gYW5kIGdlbmVyYWwgbG9naWMuCisKKy0gSXNzdWUgIzExNjI0Nzc6IFBvc3RlbCBQcmluY2lwbGUgYWRqdXN0bWVudCB0byBlbWFpbCBkYXRlIHBhcnNpbmc6IGhhbmRsZSB0aGUKKyAgZmFjdCB0aGF0IHNvbWUgbm9uLWNvbXBsaWFudCBNVUFzIHVzZSAnLicgaW5zdGVhZCBvZiAnOicgaW4gdGltZSBzcGVjcy4KKworLSBJc3N1ZSAjMTExMzE6IEZpeCBzaWduIG9mIHplcm8gaW4gZGVjaW1hbC5EZWNpbWFsIHBsdXMgYW5kIG1pbnVzCisgIG9wZXJhdGlvbnMgd2hlbiB0aGUgcm91bmRpbmcgbW9kZSBpcyBST1VORF9GTE9PUi4KKworLSBJc3N1ZSAjOTkzNTogU3BlZWQgdXAgcGlja2xpbmcgb2YgaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLgogCiAtIElzc3VlICM1NjIyOiBGaXggY3Vyc2VzLndyYXBwZXIgdG8gcmFpc2UgY29ycmVjdCBleGNlcHRpb24gaWYgY3Vyc2VzCiAgIGluaXRpYWxpemF0aW9uIGZhaWxzLgogCistIElzc3VlICMxMTQwODogSW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpLCBvbmx5IGNhbGwgZ2V0dGltZW9mZGF5KCkgd2hlbgorICByZWFsbHkgbmVjZXNzYXJ5LiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCiAtIElzc3VlICMxMTM5MTogV3JpdGluZyB0byBhIG1tYXAgb2JqZWN0IGNyZWF0ZWQgd2l0aAogICBgYG1tYXAuUFJPVF9SRUFEfG1tYXAuUFJPVF9FWEVDYGAgd291bGQgc2VnZmF1bHQgaW5zdGVhZCBvZiByYWlzaW5nIGEKICAgVHlwZUVycm9yLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgogCi0tIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbiBjZXJ0YWluCi0gIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieSBjaGVja2luZyBmb3IgRUFDQ0VTLAotICBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgorLSBJc3N1ZSAjOTc5NTogYWRkIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBzdXBwb3J0IGZvciBubnRwbGliLk5OVFAgY2xhc3MuCiAKLS0gSXNzdWUgIzExMjY1OiBhc3luY29yZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgRVBJUEUsIEVCQURGIGFuZCBFQUdBSU4gZXJyb3JzIG9uCi0gIGFjY2VwdCgpLCBzZW5kKCkgYW5kIHJlY3YoKS4KKy0gSXNzdWUgIzExMzA2OiBtYWlsYm94IGluIGNlcnRhaW4gY2FzZXMgYWRhcHRzIHRvIGFuIGluYWJpbGl0eSB0byBvcGVuCisgIGNlcnRhaW4gZmlsZXMgaW4gcmVhZC13cml0ZSBtb2RlLiAgUHJldmlvdXNseSBpdCBkZXRlY3RlZCB0aGlzIGJ5CisgIGNoZWNraW5nIGZvciBFQUNDRVMsIG5vdyBpdCBhbHNvIGNoZWNrcyBmb3IgRVJPRlMuCisKKy0gSXNzdWUgIzExMjY1OiBhc3luY29yZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgRVBJUEUsIEVCQURGIGFuZCBFQUdBSU4gZXJyb3JzCisgIG9uIGFjY2VwdCgpLCBzZW5kKCkgYW5kIHJlY3YoKS4KKworLSBJc3N1ZSAjMTEzNzc6IERlcHJlY2F0ZSBwbGF0Zm9ybS5wb3BlbigpIGFuZCByZWltcGxlbWVudCBpdCB3aXRoIG9zLnBvcGVuKCkuCisKKy0gSXNzdWUgIzg1MTM6IE9uIFVOSVgsIHN1YnByb2Nlc3Mgc3VwcG9ydHMgYnl0ZXMgY29tbWFuZCBzdHJpbmcuCisKKy0gSXNzdWUgIzEwODY2OiBBZGQgc29ja2V0LnNldGhvc3RuYW1lKCkuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxMTE0MDogTG9jay5yZWxlYXNlKCkgbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvciB3aGVuIGF0dGVtcHRpbmcKKyAgdG8gcmVsZWFzZSBhbiB1bmFjcXVpcmVkIGxvY2ssIGFzIGNsYWltZWQgaW4gdGhlIHRocmVhZGluZyBkb2N1bWVudGF0aW9uLgorICBUaGUgX3RocmVhZC5lcnJvciBleGNlcHRpb24gaXMgbm93IGFuIGFsaWFzIG9mIFJ1bnRpbWVFcnJvci4gIFBhdGNoIGJ5CisgIEZpbGlwIEdydXN6Y3p5xYRza2kuICBQYXRjaCBmb3IgX2R1bW15X3RocmVhZCBieSBBeW1lcmljIEF1Z3VzdGluLgorCistIElzc3VlICM4NTk0OiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIHRvIHNwZWNpZnkgd2hpY2gKKyAgKGFkZHJlc3MsIHBvcnQpIHRvIGJpbmQgdG8gYmVmb3JlIGNvbm5lY3RpbmcuCiAKIC0gSXNzdWUgIzExMzI2OiBBZGQgdGhlIG1pc3NpbmcgY29ubmVjdF9leCgpIGltcGxlbWVudGF0aW9uIGZvciBTU0wgc29ja2V0cywKICAgYW5kIG1ha2UgaXQgd29yayBmb3Igbm9uLWJsb2NraW5nIGNvbm5lY3RzLgogCistIElzc3VlICMxMTI5NzogQWRkIGNvbGxlY3Rpb25zLkNoYWluTWFwKCkuCisKKy0gSXNzdWUgIzEwNzU1OiBBZGQgdGhlIHBvc2l4LmZsaXN0ZGlyKCkgZnVuY3Rpb24uICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjNDc2MTogQWRkIHRoZSBgYCphdCgpYGAgZmFtaWx5IG9mIGZ1bmN0aW9ucyAob3BlbmF0KCksIGV0Yy4pIHRvIHRoZQorICBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKwogLSBJc3N1ZSAjNzMyMjogVHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHNvY2tldCdzIGZpbGUtbGlrZSBvYmplY3QgYWZ0ZXIgYSB0aW1lb3V0CiAgIG9jY3VycmVkIG5vdyByYWlzZXMgYW4gZXJyb3IgaW5zdGVhZCBvZiBzaWxlbnRseSBsb3NpbmcgZGF0YS4KIAorLSBJc3N1ZSAjMTEyOTE6IHBvcGxpYi5QT1Agbm8gbG9uZ2VyIHN1cHByZXNzZXMgZXJyb3JzIG9uIHF1aXQoKS4KKworLSBJc3N1ZSAjMTExNzc6IGFzeW5jb3JlJ3MgY3JlYXRlX3NvY2tldCgpIGFyZ3VtZW50cyBjYW4gbm93IGJlIG9taXR0ZWQuCisKKy0gSXNzdWUgIzYwNjQ6IEFkZCBhIGBgZGFlbW9uYGAga2V5d29yZCBhcmd1bWVudCB0byB0aGUgdGhyZWFkaW5nLlRocmVhZAorICBhbmQgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MgY29uc3RydWN0b3JzIGluIG9yZGVyIHRvIG92ZXJyaWRlIHRoZQorICBkZWZhdWx0IGJlaGF2aW91ciBvZiBpbmhlcml0aW5nIHRoZSBkYWVtb25pYyBwcm9wZXJ0eSBmcm9tIHRoZSBjdXJyZW50CisgIHRocmVhZC9wcm9jZXNzLgorCiAtIElzc3VlICMxMDk1NjogQnVmZmVyZWQgSS9PIGNsYXNzZXMgcmV0cnkgcmVhZGluZyBvciB3cml0aW5nIGFmdGVyIGEgc2lnbmFsCiAgIGhhcyBhcnJpdmVkIGFuZCB0aGUgaGFuZGxlciByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCiAKKy0gSXNzdWUgIzEwNzg0OiBOZXcgb3MuZ2V0cHJpb3JpdHkoKSBhbmQgb3Muc2V0cHJpb3JpdHkoKSBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzExMTE0OiBGaXggY2F0YXN0cm9waGljIHBlcmZvcm1hbmNlIG9mIHRlbGwoKSBvbiB0ZXh0IGZpbGVzICh1cAorICB0byAxMDAweCBmYXN0ZXIgaW4gc29tZSBjYXNlcykuICBJdCBpcyBzdGlsbCBvbmUgdG8gdHdvIG9yZGVyIG9mIG1hZ25pdHVkZXMKKyAgc2xvd2VyIHRoYW4gYmluYXJ5IHRlbGwoKS4KKworLSBJc3N1ZSAjMTA4ODI6IEFkZCBvcy5zZW5kZmlsZSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTA4Njg6IEFsbG93IHVzYWdlIG9mIHRoZSByZWdpc3RlciBtZXRob2Qgb2YgYW4gQUJDIGFzIGEgY2xhc3MKKyAgZGVjb3JhdG9yLgorCiAtIElzc3VlICMxMTIyNDogRml4ZWQgYSByZWdyZXNzaW9uIGluIHRhcmZpbGUgdGhhdCBhZmZlY3RlZCB0aGUgZmlsZS1saWtlCiAgIG9iamVjdHMgcmV0dXJuZWQgYnkgVGFyRmlsZS5leHRyYWN0ZmlsZSgpIHJlZ2FyZGluZyBwZXJmb3JtYW5jZSwgbWVtb3J5CiAgIGNvbnN1bXB0aW9uIGFuZCBmYWlsdXJlcyB3aXRoIHRoZSBzdHJlYW0gaW50ZXJmYWNlLgogCistIElzc3VlICMxMDkyNDogQWRkaW5nIHNhbHQgYW5kIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IHRvIGNyeXB0IGxpYnJhcnkuCisgIE1vdmVkIG9sZCBDIHdyYXBwZXIgdG8gX2NyeXB0LCBhbmQgYWRkZWQgYSBQeXRob24gd3JhcHBlciB3aXRoCisgIGVuaGFuY2VkIHNhbHQgZ2VuZXJhdGlvbiBhbmQgc2ltcGxlciBBUEkgZm9yIHBhc3N3b3JkIGdlbmVyYXRpb24uCisKIC0gSXNzdWUgIzExMDc0OiBNYWtlICd0b2tlbml6ZScgc28gaXQgY2FuIGJlIHJlbG9hZGVkLgogCistIElzc3VlICMxMTA4NTogTW92ZWQgY29sbGVjdGlvbnMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGludG8gYSBzZXBhcmF0ZQorICBtb2R1bGUgY2FsbGVkIGNvbGxlY3Rpb25zLmFiYywgZm9sbG93aW5nIHRoZSBwYXR0ZXJuIHVzZWQgYnkgaW1wb3J0bGliLmFiYy4KKyAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGNvbGxlY3Rpb25zCisgIG1vZHVsZS4KKwogLSBJc3N1ZSAjNDY4MTogQWxsb3cgbW1hcCgpIHRvIHdvcmsgb24gZmlsZSBzaXplcyBhbmQgb2Zmc2V0cyBsYXJnZXIgdGhhbgogICA0R0IsIGV2ZW4gb24gMzItYml0IGJ1aWxkcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwsIGFkYXB0ZWQgZm9yCiAgIDMyLWJpdCBXaW5kb3dzLgogCistIElzc3VlICMxMTE2OTogY29tcGlsZWFsbCBtb2R1bGUgdXNlcyByZXByKCkgdG8gZm9ybWF0IGZpbGVuYW1lcyBhbmQgcGF0aHMgdG8KKyAgZXNjYXBlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCBzaG93IHNwYWNlcy4KKwogLSBJc3N1ZSAjMTEwODk6IEZpeCBwZXJmb3JtYW5jZSBpc3N1ZSBsaW1pdGluZyB0aGUgdXNlIG9mIENvbmZpZ1BhcnNlcigpCiAgIHdpdGggbGFyZ2UgY29uZmlnIGZpbGVzLgogCiAtIElzc3VlICMxMDI3NjogRml4IHRoZSByZXN1bHRzIG9mIHpsaWIuY3JjMzIoKSBhbmQgemxpYi5hZGxlcjMyKCkgb24gYnVmZmVycwogICBsYXJnZXIgdGhhbiA0R0IuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCiAKKy0gSXNzdWUgIzExMzg4OiBBZGRlZCBhIGNsZWFyKCkgbWV0aG9kIHRvIE11dGFibGVTZXF1ZW5jZQorCistIElzc3VlICMxMTE3NDogQWRkIGFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlciwgd2hpY2ggdXNlcyB0eXBlIG5hbWVzCisgIGZvciB0aGUgbmFtZXMgb2Ygb3B0aW9uYWwgYW5kIHBvc2l0aW9uYWwgYXJndW1lbnRzIGluIGhlbHAgbWVzc2FnZXMuCisKIC0gSXNzdWUgIzkzNDg6IFJhaXNlIGFuIGVhcmx5IGVycm9yIGlmIGFyZ3BhcnNlIG5hcmdzIGFuZCBtZXRhdmFyIGRvbid0IG1hdGNoLgogCiAtIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KQEAgLTIwODAsMjggKzM4MzAsMTM3IEBACiAKIC0gSXNzdWUgIzkzNDc6IEZpeCBmb3JtYXR0aW5nIGZvciB0dXBsZXMgaW4gYXJncGFyc2UgdHlwZT0gZXJyb3IgbWVzc2FnZXMuCiAKKy0gSXNzdWUgIzEyMTkxOiBBZGRlZCBzaHV0aWwuY2hvd24oKSB0byBjaGFuZ2UgdXNlciBhbmQvb3IgZ3JvdXAgb3duZXIgb2YgYQorICBnaXZlbiBwYXRoIGFsc28gc3BlY2lmeWluZyB0aGVpciBuYW1lcy4KKworLSBJc3N1ZSAjMTM5ODg6IFRoZSBfZWxlbWVudHRyZWUgYWNjZWxlcmF0b3IgaXMgdXNlZCB3aGVuZXZlciBhdmFpbGFibGUuCisgIE5vdyB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlIGJlY29tZXMgYSBkZXByZWNhdGVkIGFsaWFzIHRvIEVsZW1lbnRUcmVlLgorCiBCdWlsZAogLS0tLS0KIAorLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCisKKy0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KKworLSBJc3N1ZSAjMTMzMjY6IENsZWFuIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvcnJlY3RseSBvbiBPcGVuQlNELgorCistIFBFUCAzOTM6IHRoZSBjb25maWd1cmUgb3B0aW9uIC0td2l0aC13aWRlLXVuaWNvZGUgaXMgcmVtb3ZlZC4KKworLSBJc3N1ZSAjMTI4NTI6IFNldCBfWE9QRU5fU09VUkNFIHRvIDcwMCwgaW5zdGVhZCBvZiA2MDAsIHRvIGdldCBQT1NJWCAyMDA4CisgIGZ1bmN0aW9ucyBvbiBPcGVuQlNEIChlLmcuIGZkb3BlbmRpcikuCisKKy0gSXNzdWUgIzExODYzOiBSZW1vdmUgc3VwcG9ydCBmb3IgbGVnYWN5IHN5c3RlbXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yCisgIChmb2xsb3dpbmcgUEVQIDExKS4gIFRoZXNlIHN5c3RlbXMgYXJlIHN5c3RlbXMgdXNpbmcgTWFjaCBDIFRocmVhZHMsCisgIFN1bk9TIGxpZ2h0d2VpZ2h0IHByb2Nlc3NlcywgR05VIHB0aCB0aHJlYWRzIGFuZCBJUklYIHRocmVhZHMuCisKKy0gSXNzdWUgIzg3NDY6IENvcnJlY3QgZmF1bHR5IGNvbmZpZ3VyZSBjaGVja3Mgc28gdGhhdCBvcy5jaGZsYWdzKCkgYW5kCisgIG9zLmxjaGZsYWdzKCkgYXJlIG9uY2UgYWdhaW4gYnVpbHQgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhlc2UKKyAgZnVuY3Rpb25zIChCU0QgYW5kIE9TIFgpLiAgQWxzbyBhZGQgbmV3IHN0YXQgZmlsZSBmbGFncyBmb3IgT1MgWAorICAoVUZfSElEREVOIGFuZCBVRl9DT01QUkVTU0VEKS4KKworLSBJc3N1ZSAjMTA2NDU6IEluc3RhbGxpbmcgUHl0aG9uIG5vIGxvbmdlciBjcmVhdGVzIGEKKyAgUHl0aG9uLVguWS5aLXB5WC5ZLmVnZy1pbmZvIGZpbGUgaW4gdGhlIGxpYi1keW5sb2FkIGRpcmVjdG9yeS4KKworLSBEbyBub3QgYWNjaWRlbnRhbGx5IGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHNxbGl0ZS5oIHR3aWNlIHdoZW4KKyAgYnVpbGRpbmcgc3FsaXRlMy4KKworLSBJc3N1ZSAjMTEyMTc6IEZvciA2NC1iaXQvMzItYml0IE1hYyBPUyBYIHVuaXZlcnNhbCBmcmFtZXdvcmsgYnVpbGRzLAorICBlbnN1cmUgIm1ha2UgaW5zdGFsbCIgY3JlYXRlcyBzeW1saW5rcyBpbiAtLXByZWZpeCBiaW4gZm9yIHRoZSAiLTMyIgorICBmaWxlcyBpbiB0aGUgZnJhbWV3b3JrIGJpbiBkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCisKKy0gSXNzdWUgIzExMzQ3OiBVc2UgLS1uby1hcy1uZWVkZWQgd2hlbiBsaW5raW5nIGxpYnB5dGhvbjMuc28uCisKIC0gSXNzdWUgIzExNDExOiBGaXggJ21ha2UgREVTVERJUj0nIHdpdGggYSByZWxhdGl2ZSBkZXN0aW5hdGlvbi4KIAotLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbiBwYWNrYWdlIGhhZAotICBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgorLSBJc3N1ZSAjMTEyNjg6IFByZXZlbnQgTWFjIE9TIFggSW5zdGFsbGVyIGZhaWx1cmUgaWYgRG9jdW1lbnRhdGlvbgorICBwYWNrYWdlIGhhZCBwcmV2aW91c2x5IGJlZW4gaW5zdGFsbGVkLgorCistIElzc3VlICMxMTQ5NTogT1NGIHN1cHBvcnQgaXMgZWxpbWluYXRlZC4gSXQgd2FzIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMi4KKwogCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5IGZpbGUgaW4KLSAgYSBwYWNrYWdlLgorLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKKyAgZmlsZSBpbiBhIHBhY2thZ2UuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCistIElzc3VlICMxNDA1MzogcGF0Y2hjaGVjay5weSAoIm1ha2UgcGF0Y2hjaGVjayIpIG5vdyB3b3JrcyB3aXRoIE1RIHBhdGNoZXMuCisgIFBhdGNoIGJ5IEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCisKKy0gSXNzdWUgIzEzOTMwOiAydG8zIGlzIG5vdyBhYmxlIHRvIHdyaXRlIGl0cyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKKyAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKKyAgc3VmZml4LiAgU2VlIGl0cyBuZXcgLW8sIC1XIGFuZCAtLWFkZC1zdWZmaXggb3B0aW9ucy4gIFRoaXMgbWFrZXMgaXQgbW9yZQorICB1c2VmdWwgaW4gbWFueSBhdXRvbWF0ZWQgY29kZSB0cmFuc2xhdGlvbiB3b3JrZmxvd3MuCisKKy0gSXNzdWUgIzEzNjI4OiBweXRob24tZ2RiLnB5IGlzIG5vdyBhYmxlIHRvIHJldHJpZXZlIG1vcmUgZnJhbWVzIGluIHRoZSBQeXRob24KKyAgdHJhY2ViYWNrIGlmIFB5dGhvbiBpcyBvcHRpbWl6ZWQuCisKKy0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKKyAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCisKIC0gSXNzdWUgIzExMTc5OiBNYWtlIGNjYmVuY2ggd29yayB1bmRlciBQeXRob24gMy4xIGFuZCAyLjcgYWdhaW4uCiAKKy0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKKyAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgorICAiLS1uZXdsaW5lIiBvcHRpb24gYWRkZWQgdG8gc3BlY2lmeSBuZXcgbGluZSBjaGFyYWN0ZXIuCisKIEV4dGVuc2lvbiBNb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMxMzg0MDogVGhlIGVycm9yIG1lc3NhZ2UgcHJvZHVjZWQgYnkgY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyCisgIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5CisgIFZpbG1vcyBOZWJlaGFqLgorCistIElzc3VlICM3Nzc3OiBzb2NrZXQ6IEFkZCBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIChQRl9SRFMpIHN1cHBvcnQuCisKKy0gSXNzdWUgIzEzMTU5OiBGaWxlSU8gYW5kIEJaMkNvbXByZXNzb3IvQloyRGVjb21wcmVzc29yIG5vdyB1c2UgYSBsaW5lYXItdGltZQorICBidWZmZXIgZ3Jvd3RoIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMtdGltZSBvbmUuCisKKy0gSXNzdWUgIzEwMTQxOiBzb2NrZXQ6IEFkZCBTb2NrZXRDQU4gKFBGX0NBTikgc3VwcG9ydC4gSW5pdGlhbCBwYXRjaCBieQorICBNYXR0aGlhcyBGdWNocywgdXBkYXRlZCBieSBUaWFnbyBHb27Dp2FsdmVzLgorCistIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCisgIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKKyAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KKworLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgorCistIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQorICBUaG9tYXMgSmFyb3NjaC4KKworLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCisgIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgorCistIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAorICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgorCistIElzc3VlICMxMTcyNzExOiBBZGQgJ2xvbmcgbG9uZycgc3VwcG9ydCB0byB0aGUgYXJyYXkgbW9kdWxlLgorICBJbml0aWFsIHBhdGNoIGJ5IE9yZW4gVGlyb3NoIGFuZCBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjaworICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgorCistIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCisgIE9wZW5JbmRpYW5hL0lsbHVtb3MuCisKKy0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKKyAgYSBzdHJpbmcuCisKKy0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCisKKy0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KKyAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCisKKy0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKKyAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQorICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgorCiAtIElzc3VlICMxMjA1MTogRml4IHNlZ2ZhdWx0IGluIGpzb24uZHVtcHMoKSB3aGlsZSBlbmNvZGluZyBoaWdobHktbmVzdGVkCiAgIG9iamVjdHMgdXNpbmcgdGhlIEMgYWNjZWxlcmF0aW9ucy4KIApAQCAtMjExNCwzNSArMzk3MywxODQgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxMTY4OTogRml4IGEgdmFyaWFibGUgc2NvcGluZyBlcnJvciBpbiBhbiBzcWxpdGUzIHRlc3QKKworLSBJc3N1ZSAjMTM3ODY6IFJlbW92ZSB1bmltcGxlbWVudGVkICd0cmFjZScgbG9uZyBvcHRpb24gZnJvbSByZWdydGVzdC5weS4KKworLSBJc3N1ZSAjMTM3MjU6IEZpeCByZWdydGVzdCB0byByZWNvZ25pemUgdGhlIGRvY3VtZW50ZWQgLWQgZmxhZy4KKyAgUGF0Y2ggYnkgRXJubyBUdWtpYS4KKworLSBJc3N1ZSAjMTMzMDQ6IFNraXAgdGVzdCBjYXNlIGlmIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXNhYmxlZCAoLXMgb3IKKyAgUFlUSE9OTk9VU0VSU0lURSkuICAoUGF0Y2ggYnkgQ2FybCBNZXllcikKKworLSBJc3N1ZSAjNTY2MTogQWRkIGEgdGVzdCBmb3IgRUNPTk5SRVNFVC9FUElQRSBoYW5kbGluZyB0byB0ZXN0X2FzeW5jb3JlLiBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMTMyMTg6IEZpeCB0ZXN0X3NzbCBmYWlsdXJlcyBvbiBEZWJpYW4vVWJ1bnR1LgorCistIFJlLWVuYWJsZSBsaWIydG8zJ3MgdGVzdF9wYXJzZXIucHkgdGVzdHMsIHRob3VnaCB3aXRoIGFuIGV4cGVjdGVkIGZhaWx1cmUKKyAgKHNlZSBpc3N1ZSAxMzEyNSkuCisKKy0gSXNzdWUgIzEyNjU2OiBBZGQgdGVzdHMgZm9yIElQdjYgYW5kIFVuaXggc29ja2V0cyB0byB0ZXN0X2FzeW5jb3JlLgorCistIElzc3VlICM2NDg0OiBBZGQgdW5pdCB0ZXN0cyBmb3IgbWFpbGNhcCBtb2R1bGUgKHBhdGNoIGJ5IEdyZWdvcnkgTm9maSkKKworLSBJc3N1ZSAjMTE2NTE6IEltcHJvdmUgdGhlIE1ha2VmaWxlIHRlc3QgdGFyZ2V0cyB0byBydW4gbW9yZSBvZiB0aGUgdGVzdCBzdWl0ZQorICBtb3JlIHF1aWNrbHkuIFRoZSAtLW11bHRpcHJvY2VzcyBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgcmVkdWNpbmcKKyAgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHRlc3RzLiAibWFrZSB0ZXN0IiBhbmQgIm1ha2UgcXVpY2t0ZXN0IgorICBub3cgaW5jbHVkZSBzb21lIHJlc291cmNlLWludGVuc2l2ZSB0ZXN0cywgYnV0IG5vIGxvbmdlciBydW4gdGhlIHRlc3Qgc3VpdGUKKyAgdHdpY2UgdG8gY2hlY2sgZm9yIGJ1Z3MgaW4gLnB5YyBnZW5lcmF0aW9uLiBUb29scy9zY3JpcHRzL3J1bl90ZXN0LnB5IHByb3ZpZGVzCisgIGFuIGVhc3kgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5IHRvIHJ1biB0ZXN0IHN1aXRlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHBhY2thZ2luZyBtb2R1bGUgY2FuIG5vdyBydW4gZnJvbSBhbgorICBpbnN0YWxsZWQgUHl0aG9uLgorCistIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uLgorCistIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCisgIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcworICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCisgIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCisgIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCisgIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcworICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KKyAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQorCistIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKKyAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCisKKy0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQorICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCisgIGluIHRlc3RfdGVsbmV0bGliLnB5LgorCistIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKKyAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKKyAgV2ViIHNpdGUuCisKKy0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cworICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0CisgIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCisKKy0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQorICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCisgIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworLSBJc3N1ZSAjMTE1MTI6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBjZ2l0YiBtb2R1bGUuIFBhdGNoIGJ5IFJvYmJpZSBDbGVtb25zLgorCistIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKKyAgdGVzdHMuCisKKy0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKKyAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KKworLSBJc3N1ZSAjMTI0Njk6IFJ1biB3YWtldXAgYW5kIHBlbmRpbmcgc2lnbmFsIHRlc3RzIGluIGEgc3VicHJvY2VzcyB0byBydW4gdGhlCisgIHRlc3QgaW4gYSBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAorICBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KKyAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAorICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgorCistIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKKyAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQorICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgorCistIElzc3VlICMxMjE0MTogSW5zdGFsbCBjb3BpZXMgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0CisgIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2NvbW1hbmRfYnVpbGRfZXh0IG9mCisgIHRlc3RfcGFja2FnaW5nIGFyZSBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuCisgIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQgZGlyZWN0b3J5LgorCistIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLgorICBQYXRjaCBieSBHYXJyZXR0IENvb3Blci4KKworLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOQorICAyLjggKyAgb24gTWFjIE9TIFguICAoUGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCistIElzc3VlICMxMjA1NzogQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwKKyAgaXNvMjAyMl9rcikuCisKKy0gSXNzdWUgIzEyMDk2OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0ZXN0X3RocmVhZGluZy50ZXN0X3dhaXRmb3IoKS4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExNjE0OiBpbXBvcnQgX19oZWxsb19fIHByaW50cyAiSGVsbG8gV29ybGQhIi4gUGF0Y2ggd3JpdHRlbiBieQorICBBbmRyZWFzIFN0w7xocmsuCisKKy0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCisKKy0gSXNzdWUgIzEyMDQxOiBNYWtlIHRlc3Rfd2FpdDMgbW9yZSByb2J1c3QuCisKIC0gSXNzdWUgIzExODczOiBDaGFuZ2UgcmVnZXggaW4gdGVzdF9jb21waWxlYWxsIHRvIGZpeCBvY2Nhc2lvbmFsIGZhaWx1cmVzIHdoZW4KICAgd2hlbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHRlbXBvcmFyeSBwYXRoIGhhcHBlbmVkIHRvIG1hdGNoIHRoZSByZWdleC4KIAorLSBJc3N1ZSAjMTE5NTg6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0Ii4KKyAgUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjODQwNywgIzExODU5OiBGaXggdGVzdHMgb2YgdGVzdF9pbyB1c2luZyB0aHJlYWRzIGFuZCBhbiBhbGFybTogdXNlCisgIHB0aHJlYWRfc2lnbWFzaygpIHRvIGVuc3VyZSB0aGF0IHRoZSBTSUdBTFJNIHNpZ25hbCBpcyByZWNlaXZlZCBieSB0aGUgbWFpbgorICB0aHJlYWQuCisKKy0gSXNzdWUgIzExODExOiBGYWN0b3Igb3V0IGRldGVjdGlvbiBvZiBJUHY2IHN1cHBvcnQgb24gdGhlIGN1cnJlbnQgaG9zdAorICBhbmQgbWFrZSBpdCBhdmFpbGFibGUgYXMgYGB0ZXN0LnN1cHBvcnQuSVBWNl9FTkFCTEVEYGAuICBQYXRjaCBieQorICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzEwOTE0OiBBZGQgYSBtaW5pbWFsIGVtYmVkZGluZyB0ZXN0IHRvIHRlc3RfY2FwaS4KIAotLSBJc3N1ZSAjMTE3OTA6IEZpeCBzcG9yYWRpYyBmYWlsdXJlcyBpbgotICB0ZXN0X211bHRpcHJvY2Vzc2luZy5XaXRoUHJvY2Vzc2VzVGVzdENvbmRpdGlvbi4KKy0gSXNzdWUgIzExMjIzOiBTa2lwIHRlc3RfbG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIGFuZAorICB0ZXN0X3Jsb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgb2YgdGVzdF90aHJlYWRzaWduYWxzIGlmIGEgdGhyZWFkIGxvY2sgaXMKKyAgaW1wbGVtZW50ZWQgdXNpbmcgYSBQT1NJWCBtdXRleCBhbmQgYSBQT1NJWCBjb25kaXRpb24gdmFyaWFibGUuIEEgUE9TSVgKKyAgY29uZGl0aW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZS5nLiBvbiBMaW51eCwgdGhlCisgIGZ1dGV4IHN5c3RlbSBjYWxsIGlzIHJlc3RhcnRlZCkuCisKKy0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCiAKIC0gRml4IHBvc3NpYmxlICJmaWxlIGFscmVhZHkgZXhpc3RzIiBlcnJvciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHBhcmFsbGVsLgogCiAtIElzc3VlICMxMTcxOTogRml4IG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCB0ZXN0X21zaWxpYiBza2lwIG9uIG5vbi1XaW5kb3dzCiAgIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgogCistIElzc3VlICMxMTcyNzogQWRkIGEgLS10aW1lb3V0IG9wdGlvbiB0byByZWdydGVzdDogaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgorICBUSU1FT1VUIHNlY29uZHMsIGR1bXBzIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgYW5kIGV4aXRzLgorCiAtIElzc3VlICMxMTY1MzogZml4IC1XIHdpdGggLWogaW4gcmVncnRlc3QuCiAKKy0gVGhlIGVtYWlsIHRlc3Qgc3VpdGUgbm93IGxpdmVzIGluIHRoZSBMaWIvdGVzdC90ZXN0X2VtYWlsIHBhY2thZ2UuICBUaGUgdGVzdAorICBoYXJuZXNzIGNvZGUgaGFzIGFsc28gYmVlbiBtb2Rlcm5pemVkIHRvIGFsbG93IHVzZSBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMuCisKKy0gcmVncnRlc3Qgbm93IGRpc2NvdmVycyB0ZXN0IHBhY2thZ2VzIGFzIHdlbGwgYXMgdGVzdCBtb2R1bGVzLgorCiAtIElzc3VlICMxMTU3NzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIGJpbmhleC5weS4gUGF0Y2ggYnkgQXJrYWR5IEtvcGx5YXJvdi4KIAorLSBOZXcgdGVzdF9jcmFzaGVycyBhZGRlZCB0byBleGVyY2lzZSB0aGUgc2NyaXB0cyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMKKyAgZGlyZWN0b3J5IGFuZCBjb25maXJtIHRoZXkgZmFpbCBhcyBleHBlY3RlZAorCiAtIElzc3VlICMxMTU3ODogYWRkZWQgdGVzdCBmb3IgdGhlIHRpbWVpdCBtb2R1bGUuICBQYXRjaCBieSBNaWNoYWVsIEhlbnJ5LgogCiAtIElzc3VlICMxMTUwMzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHBvc2l4cGF0aC5weS4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgogCi0tIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHkuIFBhdGNoIGJ5IEFsaWNpYQotICBBcmxlbi4KKy0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weSwgaW5jcmVhc2VzIGdyYW51bGFyaXR5IG9mCisgIHN0cmluZy5Gb3JtYXR0ZXIgdGVzdHMuIEluaXRpYWwgcGF0Y2ggYnkgQWxpY2lhIEFybGVuLgogCiAtIElzc3VlICMxMTU0ODogSW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHRoZSBzaHV0aWwgbW9kdWxlLiBQYXRjaCBieQogICBFdmFuIERhbmRyZWEuCiAKIC0gSXNzdWUgIzExNTU0OiBSZWFjdGl2YXRlZCB0ZXN0X2VtYWlsX2NvZGVjcy4KIAorLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKKyAgQXJsZW4KKwogLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzczp0ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCiAgIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCiAKQEAgLTIxNTUsMTIgKzQxNjMsNjEgQEAKIC0gSXNzdWUgIzk5MzE6IEZpeCBoYW5ncyBpbiBHVUkgdGVzdHMgdW5kZXIgV2luZG93cyBpbiBjZXJ0YWluIGNvbmRpdGlvbnMuCiAgIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgogCistIElzc3VlICMxMDUxMjogUHJvcGVybHkgY2xvc2Ugc29ja2V0cyB1bmRlciB0ZXN0LnRlc3RfY2dpLgorCistIElzc3VlICMxMDk5MjogTWFrZSB0ZXN0cyBwYXNzIHVuZGVyIGNvdmVyYWdlLgorCiAtIElzc3VlICMxMDgyNjogUHJldmVudCBzcG9yYWRpYyBmYWlsdXJlIGluIHRlc3Rfc3VicHJvY2VzcyBvbiBTb2xhcmlzIGR1ZQogICB0byBvcGVuIGRvb3IgZmlsZXMuCiAKKy0gSXNzdWUgIzEwOTkwOiBQcmV2ZW50IHRlc3RzIGZyb20gY2xvYmJlcmluZyBhIHNldCB0cmFjZSBmdW5jdGlvbi4KKworQy1BUEkKKy0tLS0tCisKKy0gQWRkIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0IGFuZCBQeU9iamVjdF9HZW5lcmlTZXREaWN0LiBUaGV5IGFyZSBnZW5lcmljCisgIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGdldHRlciBhbmQgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3Igb2YgQworICB0eXBlcy4KKworLSBJc3N1ZSAjMTM3Mjc6IEFkZCAzIG1hY3JvcyB0byBhY2Nlc3MgUHlEYXRlVGltZV9EZWx0YSBtZW1iZXJzOgorICBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTLCBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTLAorICBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMuCisKKy0gSXNzdWUgIzEwNTQyOiBBZGQgNCBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6IFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFLAorICBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFLCBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUsCisgIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTLgorCistIElzc3VlICMxMjcyNDogQWRkIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRCBtYWNybyBmb3IgcmV0dXJuaW5nIE5vdEltcGxlbWVudGVkLgorCistIFBZX1BBVENITEVWRUxfUkVWSVNJT04gaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2UgaXQncyBtZWFuaW5nbGVzcyB3aXRoCisgIE1lcmN1cmlhbC4KKworLSBJc3N1ZSAjMTIxNzM6IFRoZSBmaXJzdCBhcmd1bWVudCBvZiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCBpcyBub3cgYGNvbnN0CisgIGNoYXIgKmAgaW5zdGVhZCBvZiBgY2hhciAqYC4KKworLSBJc3N1ZSAjMTIzODA6IFB5QXJnX1BhcnNlVHVwbGUgbm93IGFjY2VwdHMgYSBieXRlYXJyYXkgZm9yIHRoZSAnYycgZm9ybWF0LgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgorICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCisKKy0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCisKKy0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB3b3JrcyBvbiBPUyBYLgorCistIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldworICBDIEFQSSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKKyAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKKyAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgorCistIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIHNvY2tldHNlcnZlciBleGFtcGxlcy4KKwogLSBJc3N1ZSAjMTE4MTg6IEZpeCB0ZW1wZmlsZSBleGFtcGxlcyBmb3IgUHl0aG9uIDMuCiAKIApAQCAtMjM5MiwxMCArNDQ0OSw2IEBACiAtIElzc3VlICMxMDE1NCwgIzEwMDkwOiBjaGFuZ2UgdGhlIG5vcm1hbGl6YXRpb24gb2YgVVRGLTggdG8gIlVURi04IiBpbnN0ZWFkCiAgIG9mICJVVEY4IiBpbiB0aGUgbG9jYWxlIG1vZHVsZSBhcyB0aGUgbGF0dGVyIGlzIG5vdCBzdXBwb3J0ZWQgTWFjT1NYIGFuZCBPcGVuQlNELgogCi0tIElzc3VlICMxMDY4NDogc2h1dGlsLm1vdmUgdXNlZCB0byBkZWxldGUgYSBmb2xkZXIgb24gY2FzZSBpbnNlbnNpdGl2ZQotICBmaWxlc3lzdGVtcyB3aGVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0Ci0gIGZvciB0aGUgY2FzZS4KLQogLSBJc3N1ZSAjMTA5MDc6IFdhcm4gT1MgWCAxMC42IElETEUgdXNlcnMgdG8gdXNlIEFjdGl2ZVN0YXRlIFRjbC9UayA4LjUsIHJhdGhlcgogICB0aGFuIHRoZSBjdXJyZW50bHkgcHJvYmxlbWF0aWMgQXBwbGUtc3VwcGxpZWQgb25lLCB3aGVuIHJ1bm5pbmcgd2l0aCB0aGUKICAgNjQtLzMyLWJpdCBpbnN0YWxsZXIgdmFyaWFudC4KQEAgLTI1NTIsNiArNDYwNSw5IEBACiBDLUFQSQogLS0tLS0KIAorLSBQeU9iamVjdF9DYWxsTWV0aG9kIG5vdyBwYXNzZXMgYWxvbmcgYW55IHVuZGVybHlpbmcgQXR0cmlidXRlRXJyb3IgZnJvbQorICBQeU9iamVjdF9HZXRBdHRyLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB3aXRoIHNvbWV0aGluZyBsZXNzIGluZm9ybWF0aXZlCisKIC0gSXNzdWUgIzEwOTEzOiBEZXByZWNhdGUgbWlzbGVhZGluZyBmdW5jdGlvbnMgUHlFdmFsX0FjcXVpcmVMb2NrKCkgYW5kCiAgIFB5RXZhbF9SZWxlYXNlTG9jaygpLiAgVGhlIHRocmVhZC1zdGF0ZSBhd2FyZSBBUElzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAKQEAgLTI2MDMsNiArNDY1OSw4IEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTE5MTA6IEZpeCB0ZXN0X2hlYXBxIHRvIHNraXAgdGhlIEMgdGVzdHMgd2hlbiBfaGVhcHEgaXMgbWlzc2luZy4KKwogLSBGaXggdGVzdF9zdGFydGZpbGUgdG8gd2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUgYmVmb3JlIGZpbmlzaGluZy4KIAogLSBJc3N1ZSAjMTA4MjI6IEZpeCB0ZXN0X3Bvc2l4OnRlc3RfZ2V0Z3JvdXBzIGZhaWx1cmUgdW5kZXIgU29sYXJpcy4gIFBhdGNoCkBAIC0zMTAzLDYgKzUxNjEsOCBAQAogTGlicmFyeQogLS0tLS0tLQogCistIElzc3VlICMxMjk0MzogcHl0aG9uIC1tIHRva2VuaXplIHN1cHBvcnQgaGFzIGJlZW4gYWRkZWQgdG8gdG9rZW5pemUuCisKIC0gSXNzdWUgIzEwNDY1OiBmaXggYnJva2VuIGRlbGVnYXRpbmcgb2YgYXR0cmlidXRlcyBieSBnemlwLl9QYWRkZWRGaWxlLgogCiAtIElzc3VlICMxMDM1NjogRGVjaW1hbC5fX2hhc2hfXygtMSkgc2hvdWxkIHJldHVybiAtMi4KQEAgLTUwMTEsNyArNzA3MSw3IEBACiAgIGhhbmRsZWQuICBJbiBtYW55IGNhc2VzIHRoaXMgb3JkZXIgd2Fzbid0IGJlaW5nIGZvbGxvd2VkLCBsZWFkaW5nIHRvIHRoZSB3cm9uZwogICBQeXRob24gZXhjZXB0aW9uIGJlaW5nIHJhaXNlZC4KIAotLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIDptb2Q6YGlvYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdworLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIGBgaW9gYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdwogICBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgaW1wbGljaXQgZmx1c2goKS4gIEFsc28gcWVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQogICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgogCkBAIC01MTIzLDcgKzcxODMsNyBAQAogCiAtIElzc3VlICM1Mjc3OiBGaXggcXVvdGUgY291bnRpbmcgd2hlbiBwYXJzaW5nIFJGQyAyMjMxIGVuY29kZWQgcGFyYW1ldGVycy4KIAotLSBJc3N1ZSAjNzMxNjogVGhlIGFjcXVpcmUoKSBtZXRob2Qgb2YgbG9jayBvYmplY3RzIGluIHRoZSA6bW9kOmB0aHJlYWRpbmdgCistIElzc3VlICM3MzE2OiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBvZiBsb2NrIG9iamVjdHMgaW4gdGhlIGBgdGhyZWFkaW5nYGAKICAgbW9kdWxlIG5vdyB0YWtlcyBhbiBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50IGluIHNlY29uZHMuICBUaW1lb3V0IHN1cHBvcnQKICAgcmVsaWVzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIGxpYnJhcnksIHNvIGFzIHRvIGF2b2lkIGEgc2VtaS1idXN5IHdhaXQgbG9vcC4KIApAQCAtNTE0Miw3ICs3MjAyLDcgQEAKIC0gSXNzdWUgIzgzNzU6IHRlc3RfZGlzdHV0aWxzIG5vdyBjaGVja3MgaWYgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgYXJlIHN0aWxsCiAgIHByZXNlbnQgYmVmb3JlIGl0IGNsZWFucyB0aGVtLgogCi0tIElzc3VlICM4Mzc0OiBVcGRhdGUgdGhlIGludGVybmFsIGFsaWFzIHRhYmxlIGluIHRoZSA6bW9kOmBsb2NhbGVgIG1vZHVsZSB0bworLSBJc3N1ZSAjODM3NDogVXBkYXRlIHRoZSBpbnRlcm5hbCBhbGlhcyB0YWJsZSBpbiB0aGUgYGBsb2NhbGVgYCBtb2R1bGUgdG8KICAgY292ZXIgcmVjZW50IGxvY2FsZSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMuCiAKIC0gSXNzdWUgIzgzMjE6IEdpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwKQEAgLTUzMjcsOSArNzM4Nyw5IEBACiAgIGZ0cnVuY2F0ZSgpIGFuZCBvdGhlciB0cnVuY2F0aW9uIEFQSXMuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KIAogLSBJc3N1ZSAjNzYxMDogUmV3b3JrZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsCi0gIDpjbGFzczpgemlwZmlsZS5aaXBFeHRGaWxlYCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBmaWxlcyBzdG9yZWQgaW5zaWRlIGFuCisgIGBgemlwZmlsZS5aaXBFeHRGaWxlYGAgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgZmlsZXMgc3RvcmVkIGluc2lkZSBhbgogICBhcmNoaXZlLiAgVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBzaWduaWZpY2FudGx5IGZhc3RlciBhbmQgY2FuIGJlIHdyYXBwZWQgaW4KLSAgYSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QgZm9yIG1vcmUgc3BlZWR1cHMuICBJdCBhbHNvIHNvbHZlcyBhbgorICBhIGBgaW8uQnVmZmVyZWRSZWFkZXJgYCBvYmplY3QgZm9yIG1vcmUgc3BlZWR1cHMuICBJdCBhbHNvIHNvbHZlcyBhbgogICBpc3N1ZSB3aGVyZSBpbnRlcmxlYXZlZCBjYWxscyB0byBgcmVhZCgpYCBhbmQgYHJlYWRsaW5lKClgIGdpdmUgd3JvbmcgcmVzdWx0cy4KICAgUGF0Y2ggYnkgTmlyIEFpZGVzLgogCkBAIC02MDg3LDEwICs4MTQ3LDEwIEBACiAgIGNhbGxpbmcgbWV0aG9kcyBvbiB0aGUgb2JqZWN0LgogCiAtIElzc3VlICM3MjIyOiBNYWtlIHRocmVhZCAicmVhcGluZyIgbW9yZSByZWxpYWJsZSBzbyB0aGF0IHJlZmVyZW5jZQotICBsZWFrLWNoYXNpbmcgdGVzdCBydW5zIGdpdmUgc2Vuc2libGUgcmVzdWx0cy4gVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCisgIGxlYWstY2hhc2luZyB0ZXN0IHJ1bnMgZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiAgVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCiAgIHRocmVhZHMgY291bGQgcmV0dXJuIHN1Y2Nlc3NmdWxseSB3aGlsZSBzb21lIFRocmVhZCBvYmplY3RzIHdlcmUgc3RpbGwKLSAgcmVmZXJlbmNlZC4gVGhpcyBhbHNvIGludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjoKLSAgOmZ1bmM6YF90aHJlYWQuX2NvdW50KClgLgorICByZWZlcmVuY2VkLiAgVGhpcyBhbHNvIGludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjoKKyAgYGBfdGhyZWFkLl9jb3VudCgpYGAuCiAKIC0gSXNzdWUgIzcxNTE6IEZpeGVkIHJlZ3J0ZXN0IC1qIHNvIHRoYXQgb3V0cHV0IHRvIHN0ZGVyciBmcm9tIGEgdGVzdCBubyBsb25nZXIKICAgcnVucyB0aGUgcmlzayBvZiBjYXVzaW5nIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGZhaWwuCkBAIC02NTMxLDcgKzg1OTEsNyBAQAogLSBJc3N1ZSAjNTkyMzogVXBkYXRlIHRoZSBgYHR1cnRsZWBgIG1vZHVsZSB0byB2ZXJzaW9uIDEuMSwgYWRkIHR3byBuZXcKICAgdHVydGxlIGRlbW9zIGluIERlbW8vdHVydGxlLgogCi0tIElzc3VlICM1NjkyOiBJbiA6Y2xhc3M6YHppcGZpbGUuWmlwZmlsZWAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KKy0gSXNzdWUgIzU2OTI6IEluIGBgemlwZmlsZS5aaXBmaWxlYGAsIGZpeCB3cm9uZyBwYXRoIGNhbGN1bGF0aW9uIHdoZW4KICAgZXh0cmFjdGluZyBhIGZpbGUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgogCiAtIElzc3VlICM1OTEzOiBvcy5saXN0ZGlyKCkgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KZGlmZiAtLWdpdCBhL01pc2MvUkVBRE1FIGIvTWlzYy9SRUFETUUKaW5kZXggYjIzOWNlZS4uMTE4ZjZjNyAxMDA2NDQKLS0tIGEvTWlzYy9SRUFETUUKKysrIGIvTWlzYy9SRUFETUUKQEAgLTgsNyArOCw2IEBACiAtLS0tLS0tLS0tLS0tLS0tCiAKIEFDS1MgICAgICAgICAgICAgICAgICAgIEFja25vd2xlZGdlbWVudHMKLWJ1aWxkLnNoICAgICAgICAgICAgICAgIFNjcmlwdCB0byBidWlsZCBhbmQgdGVzdCBsYXRlc3QgUHl0aG9uIGZyb20gdGhlIHJlcG9zaXRvcnkKIGdkYmluaXQgICAgICAgICAgICAgICAgIEhhbmR5IHN0dWZmIHRvIHB1dCBpbiB5b3VyIC5nZGJpbml0IGZpbGUsIGlmIHlvdSB1c2UgZ2RiCiBISVNUT1JZICAgICAgICAgICAgICAgICBOZXdzIGZyb20gcHJldmlvdXMgcmVsZWFzZXMgLS0gb2xkZXN0IGxhc3QKIGluZGVudC5wcm8gICAgICAgICAgICAgIEdOVSBpbmRlbnQgcHJvZmlsZSBhcHByb3hpbWF0aW5nIG15IEMgc3R5bGUKQEAgLTE5LDggKzE4LDExIEBACiBweXRob24ucGMuaW4gICAgICAgICAgICBQYWNrYWdlIGNvbmZpZ3VyYXRpb24gaW5mbyB0ZW1wbGF0ZSBmb3IgcGtnLWNvbmZpZwogcHl0aG9uLXdpbmcqLndwciAgICAgICAgV2luZyBJREUgcHJvamVjdCBmaWxlCiBSRUFETUUgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB5b3UncmUgcmVhZGluZyBub3cKK1JFQURNRS5BSVggICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHVzaW5nIFB5dGhvbiBvbiBBSVgKK1JFQURNRS5jb3Zlcml0eSAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHJ1bm5pbmcgQ292ZXJpdHkncyBQcmV2ZW50IG9uIFB5dGhvbgogUkVBRE1FLnZhbGdyaW5kICAgICAgICAgSW5mb3JtYXRpb24gZm9yIFZhbGdyaW5kIHVzZXJzLCBzZWUgdmFsZ3JpbmQtcHl0aG9uLnN1cHAKIFJQTSAgICAgICAgICAgICAgICAgICAgIChPbGQpIHRvb2xzIHRvIGJ1aWxkIFJQTXMKK3N2bm1hcC50eHQgICAgICAgICAgICAgIE1hcCBvZiBvbGQgU1ZOIHJldnMgYW5kIGJyYW5jaGVzIHRvIGhnIGNoYW5nZXNldCBpZHMKIFNwZWNpYWxCdWlsZHMudHh0ICAgICAgIERlc2NyaWJlcyBleHRyYSBzeW1ib2xzIHlvdSBjYW4gc2V0IGZvciBkZWJ1ZyBidWlsZHMKIFRleHRNYXRlICAgICAgICAgICAgICAgIEEgVGV4dE1hdGUgYnVuZGxlIGZvciBQeXRob24gZGV2ZWxvcG1lbnQKIHZhbGdyaW5kLXB5dGhvbi5zdXBwICAgIFZhbGdyaW5kIHN1cHByZXNzaW9uIGZpbGUsIHNlZSBSRUFETUUudmFsZ3JpbmQKZGlmZiAtLWdpdCBhL01pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYyBiL01pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBNaXNjL1JQTS9weXRob24tMy4yLnNwZWMKcmVuYW1lIHRvIE1pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwppbmRleCAxOGYzZTc3Li45MzZhMjFmIDEwMDY0NAotLS0gYS9NaXNjL1JQTS9weXRob24tMy4yLnNwZWMKKysrIGIvTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCkBAIC0zOSw4ICszOSw4IEBACiAKICVkZWZpbmUgbmFtZSBweXRob24KICMtLXN0YXJ0IGNvbnN0YW50cy0tCi0lZGVmaW5lIHZlcnNpb24gMy4yLjMKLSVkZWZpbmUgbGlidmVycyAzLjIKKyVkZWZpbmUgdmVyc2lvbiAzLjMuMAorJWRlZmluZSBsaWJ2ZXJzIDMuMwogIy0tZW5kIGNvbnN0YW50cy0tCiAlZGVmaW5lIHJlbGVhc2UgMXB5ZG90b3JnCiAlZGVmaW5lIF9fcHJlZml4IC91c3IKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgppbmRleCA3OWYwYmIxLi5iYjBiMDA4IDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi1jb25maWcuaW4KKysrIGIvTWlzYy9weXRob24tY29uZmlnLmluCkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHN5c2NvbmZpZwogCiB2YWxpZF9vcHRzID0gWydwcmVmaXgnLCAnZXhlYy1wcmVmaXgnLCAnaW5jbHVkZXMnLCAnbGlicycsICdjZmxhZ3MnLAotICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnXQorICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnLCAnY29uZmlnZGlyJ10KIAogZGVmIGV4aXRfd2l0aF91c2FnZShjb2RlPTEpOgogICAgIHByaW50KCJVc2FnZTogezB9IFt7MX1dIi5mb3JtYXQoCkBAIC02MSwzICs2MSw2IEBACiAKICAgICBlbGlmIG9wdCA9PSAnLS1hYmlmbGFncyc6CiAgICAgICAgIHByaW50KHN5cy5hYmlmbGFncykKKworICAgIGVsaWYgb3B0ID09ICctLWNvbmZpZ2Rpcic6CisgICAgICAgIHByaW50KHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTElCUEwnKSkKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLm1hbiBiL01pc2MvcHl0aG9uLm1hbgppbmRleCAyMGJlZGVkLi43MmUxZWNiIDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi5tYW4KKysrIGIvTWlzYy9weXRob24ubWFuCkBAIC0zNywxMyArMzcsNiBAQAogLkIgXC1PTwogXQogWwotLkIgXC1SCi1dCi1bCi0uQiAtUQotLkkgYXJndW1lbnQKLV0KLVsKIC5CIFwtcwogXQogWwpAQCAtMTU1LDI3ICsxNDgsNiBAQAogRG8gbm90IHByaW50IHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIGFyZSAKIGFsc28gc3VwcHJlc3NlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZS4KIC5UUAotLkIgXC1SCi1UdXJuIG9uICJoYXNoIHJhbmRvbWl6YXRpb24iLCBzbyB0aGF0IHRoZSBoYXNoKCkgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kCi1kYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcHNldWRvLXJhbmRvbSB2YWx1ZS4KLUFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZQotbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgotLklQCi1UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsIG9mIHNlcnZpY2UKLWNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UKLW9mIGEgZGljdCBjb25zdHJ1Y3Rpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCi1odHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwKLWZvciBkZXRhaWxzLgotLlRQCi0uQkkgIlwtUSAiIGFyZ3VtZW50Ci1EaXZpc2lvbiBjb250cm9sOyBzZWUgUEVQIDIzOC4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiAib2xkIiAodGhlCi1kZWZhdWx0LCBpbnQvaW50IGFuZCBsb25nL2xvbmcgcmV0dXJuIGFuIGludCBvciBsb25nKSwgIm5ldyIgKG5ldwotZGl2aXNpb24gc2VtYW50aWNzLCBpLmUuIGludC9pbnQgYW5kIGxvbmcvbG9uZyByZXR1cm5zIGEgZmxvYXQpLAotIndhcm4iIChvbGQgZGl2aXNpb24gc2VtYW50aWNzIHdpdGggYSB3YXJuaW5nIGZvciBpbnQvaW50IGFuZAotbG9uZy9sb25nKSwgb3IgIndhcm5hbGwiIChvbGQgZGl2aXNpb24gc2VtYW50aWNzIHdpdGggYSB3YXJuaW5nIGZvcgotYWxsIHVzZSBvZiB0aGUgZGl2aXNpb24gb3BlcmF0b3IpLiAgRm9yIGEgdXNlIG9mICJ3YXJuYWxsIiwgc2VlIHRoZQotVG9vbHMvc2NyaXB0cy9maXhkaXYucHkgc2NyaXB0LgotLlRQCiAuQiBcLXMKIERvbid0IGFkZCB1c2VyIHNpdGUgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLgogLlRQCkBAIC0xODQsNyArMTU2LDkgQEAKIC5JIHNpdGUKIGFuZCB0aGUgc2l0ZS1kZXBlbmRlbnQgbWFuaXB1bGF0aW9ucyBvZgogLkkgc3lzLnBhdGgKLXRoYXQgaXQgZW50YWlscy4KK3RoYXQgaXQgZW50YWlscy4gIEFsc28gZGlzYWJsZSB0aGVzZSBtYW5pcHVsYXRpb25zIGlmCisuSSBzaXRlCitpcyBleHBsaWNpdGx5IGltcG9ydGVkIGxhdGVyLgogLlRQCiAuQiBcLXUKIEZvcmNlIHRoZSBiaW5hcnkgSS9PIGxheWVycyBvZiBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gYmUgdW5idWZmZXJlZC4KQEAgLTI4Myw5ICsyNTcsOSBAQAogZnJvbSB0aGF0IGZpbGU7CiB3aGVuIGNhbGxlZCB3aXRoCiAuQiBcLWMKLS5JIGNvbW1hbmQsCisuSVIgY29tbWFuZCAsCiBpdCBleGVjdXRlcyB0aGUgUHl0aG9uIHN0YXRlbWVudChzKSBnaXZlbiBhcwotLkkgY29tbWFuZC4KKy5JUiBjb21tYW5kIC4KIEhlcmUKIC5JIGNvbW1hbmQKIG1heSBjb250YWluIG11bHRpcGxlIHN0YXRlbWVudHMgc2VwYXJhdGVkIGJ5IG5ld2xpbmVzLgpAQCAtMjk1LDcgKzI2OSw3IEBACiAuUFAKIElmIGF2YWlsYWJsZSwgdGhlIHNjcmlwdCBuYW1lIGFuZCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0aGVyZWFmdGVyIGFyZQogcGFzc2VkIHRvIHRoZSBzY3JpcHQgaW4gdGhlIFB5dGhvbiB2YXJpYWJsZQotLkkgc3lzLmFyZ3YgLAorLklSIHN5cy5hcmd2ICwKIHdoaWNoIGlzIGEgbGlzdCBvZiBzdHJpbmdzICh5b3UgbXVzdCBmaXJzdAogLkkgaW1wb3J0IHN5cwogdG8gYmUgYWJsZSB0byBhY2Nlc3MgaXQpLgpAQCAtMzA5LDE0ICsyODMsMTQgQEAKIC5JICctYycuCiBOb3RlIHRoYXQgb3B0aW9ucyBpbnRlcnByZXRlZCBieSB0aGUgUHl0aG9uIGludGVycHJldGVyIGl0c2VsZgogYXJlIG5vdCBwbGFjZWQgaW4KLS5JIHN5cy5hcmd2LgorLklSIHN5cy5hcmd2IC4KIC5QUAogSW4gaW50ZXJhY3RpdmUgbW9kZSwgdGhlIHByaW1hcnkgcHJvbXB0IGlzIGA+Pj4nOyB0aGUgc2Vjb25kIHByb21wdAogKHdoaWNoIGFwcGVhcnMgd2hlbiBhIGNvbW1hbmQgaXMgbm90IGNvbXBsZXRlKSBpcyBgLi4uJy4KIFRoZSBwcm9tcHRzIGNhbiBiZSBjaGFuZ2VkIGJ5IGFzc2lnbm1lbnQgdG8KIC5JIHN5cy5wczEKIG9yCi0uSSBzeXMucHMyLgorLklSIHN5cy5wczIgLgogVGhlIGludGVycHJldGVyIHF1aXRzIHdoZW4gaXQgcmVhZHMgYW4gRU9GIGF0IGEgcHJvbXB0LgogV2hlbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIG9jY3VycywgYSBzdGFjayB0cmFjZSBpcyBwcmludGVkIGFuZAogY29udHJvbCByZXR1cm5zIHRvIHRoZSBwcmltYXJ5IHByb21wdDsgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUsIHRoZQpAQCAtMzcyLDcgKzM0Niw3IEBACiBpbnNlcnRlZCBpbiB0aGUgcGF0aCBpbiBmcm9udCBvZiAkUFlUSE9OUEFUSC4KIFRoZSBzZWFyY2ggcGF0aCBjYW4gYmUgbWFuaXB1bGF0ZWQgZnJvbSB3aXRoaW4gYSBQeXRob24gcHJvZ3JhbSBhcyB0aGUKIHZhcmlhYmxlCi0uSSBzeXMucGF0aCAuCisuSVIgc3lzLnBhdGggLgogLklQIFBZVEhPTlNUQVJUVVAKIElmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSByZWFkYWJsZSBmaWxlLCB0aGUgUHl0aG9uIGNvbW1hbmRzIGluIHRoYXQKIGZpbGUgYXJlIGV4ZWN1dGVkIGJlZm9yZSB0aGUgZmlyc3QgcHJvbXB0IGlzIGRpc3BsYXllZCBpbiBpbnRlcmFjdGl2ZQpAQCAtNDI5LDkgKzQwMyw4IEBACiBJZiB0aGlzIGlzIHNldCB0byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0bwogc3BlY2lmeWluZyB0aGUgXGZCXC1XXGZQIG9wdGlvbiBmb3IgZWFjaCBzZXBhcmF0ZSB2YWx1ZS4KIC5JUCBQWVRIT05IQVNIU0VFRAotSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gInJhbmRvbSIsIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUgYXMgc3BlY2lmeWluZwotdGhlIFxmQi1SXGZQIG9wdGlvbjogYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLAotYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAicmFuZG9tIiwgYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMKK29mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCiAKIElmIFBZVEhPTkhBU0hTRUVEIGlzIHNldCB0byBhbiBpbnRlZ2VyIHZhbHVlLCBpdCBpcyB1c2VkIGFzIGEgZml4ZWQgc2VlZCBmb3IKIGdlbmVyYXRpbmcgdGhlIGhhc2goKSBvZiB0aGUgdHlwZXMgY292ZXJlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uLiAgSXRzCkBAIC00NDAsOCArNDEzLDcgQEAKIHZhbHVlcy4KIAogVGhlIGludGVnZXIgbXVzdCBiZSBhIGRlY2ltYWwgbnVtYmVyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XS4gIFNwZWNpZnlpbmcKLXRoZSB2YWx1ZSAwIHdpbGwgbGVhZCB0byB0aGUgc2FtZSBoYXNoIHZhbHVlcyBhcyB3aGVuIGhhc2ggcmFuZG9taXphdGlvbiBpcwotZGlzYWJsZWQuCit0aGUgdmFsdWUgMCB3aWxsIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLgogLlNIIEFVVEhPUgogVGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNmCiAuU0ggSU5URVJORVQgUkVTT1VSQ0VTCmRpZmYgLS1naXQgYS9NaXNjL3N2bm1hcC50eHQgYi9NaXNjL3N2bm1hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyYmU3ZgotLS0gL2Rldi9udWxsCisrKyBiL01pc2Mvc3ZubWFwLnR4dApAQCAtMCwwICsxLDcyNTQ2IEBACisyMTYxIDNjZDAzM2U2YjUzMGY2YTc4YjNiMTRmZWRiZDIwNzQ4OTZkYmY2ZGUgbGVnYWN5LXRydW5rCisyMTYyIDRkYjlkNDZiMzA2YTljNmVjMmQxZmU3YTdjYzM2ZWY3MTczNDI2YTYgbGVnYWN5LXRydW5rCisyMTYzIDRhM2E2NDgxODVlZjg5NjVjMzQyODYwYmQ4NDU3ZWQ2YzAzYzZkZTAgbGVnYWN5LXRydW5rCisyMTY0IDhkYTkyMjVjYzYwZTJkYTE2NjVhODBhZjkwMTg0ZGIwZmRkYTA1Y2UgbGVnYWN5LXRydW5rCisyMTY1IDE3ZTQ5MGI0ZGMyOGI4YWM2MDVmYTE5ZTQ4MmNmNzIyZmU4MDY1OGQgbGVnYWN5LXRydW5rCisyMTY2IDU1NzBkYmIxY2U1NThiNTU3MTZlYWI3ZDA4MGExYWZhZDJlNzdlMmYgbGVnYWN5LXRydW5rCisyMTY3IGZjNmZjZDdkZjRmN2YyZTFjMTJmMTdhZjI0NjRjNDk3ZDZmNmEzZTkgbGVnYWN5LXRydW5rCisyMTY4IDM0ZDY2N2RjMWE0YzRhYmRjYjE5Y2RkZmQyZTliZmRhMDExMzllZDIgbGVnYWN5LXRydW5rCisyMTY5IDZmYzE0NmJkNGYwM2M5N2QxNGM3YzMwMGIxMjEyYTExZWI5YjY3MmEgbGVnYWN5LXRydW5rCisyMTcwIDMzNzAxZGI0ZWE1NTkxMDBkMzdiZTQ0ZDJmMGQ1M2U1NjhhMGVjMzMgbGVnYWN5LXRydW5rCisyMTcxIGE3MWU4OTZlZDA0NzM0MjFkODhmZTQ1NTI2OWM1YTVlNTQ3MzJhMjIgbGVnYWN5LXRydW5rCisyMTcyIGJjZWE2YzgyMjkwNmM4NGVkZWRhYmNjMDNlYzQ4MTU5NWRlZjBhNjMgbGVnYWN5LXRydW5rCisyMTczIDM2YTIyMGQzNzMxYTAzMzQ1Nzg1NTkzZWMzMmViYzM1YTI5NDk0ZGUgbGVnYWN5LXRydW5rCisyMTc0IDA2YmYyYWYwMGUzYTllYjUxNTI5YjYxOGNiZGMwYmJjZjFhNGU5NjQgbGVnYWN5LXRydW5rCisyMTc1IDg3NGM4ZmQ1NjVmYTA5NDYxYzIxMzk5YWY5ZWRlMTIzNGVhMTBmNzAgbGVnYWN5LXRydW5rCisyMTc2IGU5ZTA1ZmJiYTdhNDAwMzRmODIxMWM5ZDFkMTJiMjg4NzlmNTFmY2YgbGVnYWN5LXRydW5rCisyMTc3IDA4MDhlNWFiNzQzYWJiOGIwNTdhNTVmNzY1MWFjMTE4YzgzZjViMGMgbGVnYWN5LXRydW5rCisyMTc4IGE1ZjAxYTkxNzQwOTJkMjllYmE2Mzc3YzIzNjkxODdjZGIzZmQ3ZDUgbGVnYWN5LXRydW5rCisyMTc5IGU5YmJlNGFjMzIzODllOGE3YTZjMGI0YWVmYWY0ZWFkMzA4OGYyMWEgbGVnYWN5LXRydW5rCisyMTgwIDcxYWMwZTM3MjM2YTU0ZTBhNjc4OGIzODQ2NTVkOGQ4MjA5ZDg1OGEgbGVnYWN5LXRydW5rCisyMTgxIDExODU0NTMxMmYzYmZlMTAzYmNjZmIxMDNmNGRmMmVlYjBkMGViODMgbGVnYWN5LXRydW5rCisyMTgyIDk2MTY5NmVmM2FiN2U0M2M5OWY1Yzc2MGY3YzYyMWI2YTExOWRjOTggbGVnYWN5LXRydW5rCisyMTgzIDJkM2ViNzE3YTAwZDEwM2Q0Mzc1OTRlMDgxOTNkYWU2MDAwNjFkYTkgbGVnYWN5LXRydW5rCisyMTg0IDA4NTYyZGUwMTY2ODAwZTFjNmQ1ZDUxNWY3NDM2OWIzOTlmZDhjYWEgbGVnYWN5LXRydW5rCisyMTg1IDY0YTY5ZDYxMjFlMGQyMDYyZjI2YTdlY2E2N2U5YjZhNDJkY2EyN2IgbGVnYWN5LXRydW5rCisyMTg2IDMyNjM5ODc4ZDE2YjYwNDg3NTM4OGUyMjk5NjExYmJmYzUxODk2MjYgbGVnYWN5LXRydW5rCisyMTg3IDQ1YWViMmVlYWQ3OWVlN2ZhMzZlNDE2NmRlYjc1Mzg2YzEzZTM0MWQgbGVnYWN5LXRydW5rCisyMTg4IDgyYzdiYWI3OGJiMTBhNzA2ZjVkNTIwYjE1NTBlNzI0Yjk0YWEzOGMgbGVnYWN5LXRydW5rCisyMTg5IGU1YzUwYzY4ODExN2M2ZTViZDg5NTQ2MGRhY2U2YzljYmY1ODFhZmQgbGVnYWN5LXRydW5rCisyMTkwIDM0MmE3YzYxYzBjM2MwZmU0ODE0ZDFhZDI0ZTc3MTQyNzczODE1YjEgbGVnYWN5LXRydW5rCisyMTkxIDg2ZTBlMjM1MGJhMTE3NDdjNGUwZmRjZTk3YmM3YzliYzY0ODc0MWIgbGVnYWN5LXRydW5rCisyMTkyIGM0ODdkZmMzMDY2MzM5ODUwODU0ZmI4NThjNmE4MzMwNTlhOWJjNzggbGVnYWN5LXRydW5rCisyMTkzIGI2NDNlYWRlNjU0NDU5Zjg3ZDU3MmQ2Yjc5Mzg5NmQ5YjNhZGY4NDAgbGVnYWN5LXRydW5rCisyMTk0IGI4MDdjOTBjNGE2ODIyZDFjYjhiMzk2OTkxY2FhODA4NWJiMzJiNGUgbGVnYWN5LXRydW5rCisyMTk1IDFkMjI5MDBmNzdiODUzYmVlMDZkZDI0YTFiZjFmZGY0NTE1YjQ4YmMgbGVnYWN5LXRydW5rCisyMTk2IGRhMDZhMjgyYjg4MDRmYTQ3ZmY0YzNjNGJkOTJiYTlmYjhlZWE5MjkgbGVnYWN5LXRydW5rCisyMTk3IGEyMjQwY2U5MWU1MjA2MWI0MzJmOTc5NTdmOTJiZjc5Nzg1MzQwYWMgbGVnYWN5LXRydW5rCisyMTk4IGM3OTVmZGFjZWQ5YjhhMjhkOTgzMzI3Nzg2OGIxZjc0NjFhMDk1ZjUgbGVnYWN5LXRydW5rCisyMTk5IDEwZTE4MjFjMzQ1Y2EyZDEzNzUzNWE2YzFjZjVlYjAxMjg2ZmNkN2UgbGVnYWN5LXRydW5rCisyMjAwIDE5MDVmODIxMzk3YjBmMDk0MTAxMTYwOGU1YjQ2ZGQxYzllMzg5ZTQgbGVnYWN5LXRydW5rCisyMjAxIGYyOGFjN2Y2MjFjNzYwNzk3NzRjMzAwMTdiMjkwMTM5NjVkMTA0MDkgbGVnYWN5LXRydW5rCisyMjAyIGU4MGVmZWFiNDliMzJjMTVhYzk3YjI0ZDRmNmU4ZmRkNWNjZjBhOTUgbGVnYWN5LXRydW5rCisyMjAzIDQ4MzVjMmQzOGI4NGU1ZmI1NTgwMzZkNDdjNTg3MWRkOTY2MzM4YjcgbGVnYWN5LXRydW5rCisyMjA0IGVhMjE5ODJhMTUzMjQyNWY4MmVjNWE0MzQ2Y2I4NDE5MTdhNzFkOTUgbGVnYWN5LXRydW5rCisyMjA1IDRkM2EyOGRmZmM5Yjk1ZDM4YjkxMmNiNjk1NzQyZGU0MGQ5NTc2MzUgbGVnYWN5LXRydW5rCisyMjA2IDdmZWNhYmIzMjc5MTQ1MDQ1NDQ2MTdlNWJhY2QxYzA1YTEyZTg2OWYgbGVnYWN5LXRydW5rCisyMjA3IGNlNmYyNDcxMTUwNGU1OTU2ZDY2MDA5OWM5OWVjY2I5NTFjMGMxNDkgbGVnYWN5LXRydW5rCisyMjA4IDA1MDU3ZTM2NjBmODJjZThlODNlOGMyZDczZDBiNTg0OTRmMmJlYTcgbGVnYWN5LXRydW5rCisyMjA5IGIwZTc2MjIxZTdmZmRiY2ZlOThhNDRhZGZhZTljMjM1MDkzYzdjZWIgbGVnYWN5LXRydW5rCisyMjEwIGMzZmEyZDFmMzAzNTg2OTllZTI0ZTJhNWMzYzAxMTY2MmY3NWMzNzYgbGVnYWN5LXRydW5rCisyMjExIGI5NDgyMmY1NDk5MTMwNGI1OGFkYmJlYTIzODY5Yzk4YjJmNmYzZmUgbGVnYWN5LXRydW5rCisyMjEyIGViY2I2MjZjZmRkZmI5ZjFjN2IxODY3OGFjYmVjNDRlYjk3YWJiZDcgbGVnYWN5LXRydW5rCisyMjEzIDFiMzEwNzdhYzY0MzA3YWI1NDU1MjY1MWFlYzY3ODc4ZDgwZDBiZDcgbGVnYWN5LXRydW5rCisyMjE0IGExZTUwYThmNDJlMjNjZmFiNjRiZTNlOTlkOGE1MzM1ZWEzM2E5YzUgbGVnYWN5LXRydW5rCisyMjE1IDQwMmY1NzA4YjEwN2IwNWY4MTFlNWY4NTQyODQyZTcxNzk4ZGE2YzkgbGVnYWN5LXRydW5rCisyMjE2IDdhMDFkYmNlZTliYzAzMTJmNWEzMTdmYjI0Mjk5NzUxZTc4ZGRkYzIgbGVnYWN5LXRydW5rCisyMjE3IGE3ZThmYjdiYjZhMjhlYjEzYzA1NmYzYzYyYTk2Y2FhYzVmNjQ0ZDQgbGVnYWN5LXRydW5rCisyMjE4IGExYzJiNGZhZDEzNmNmYjFiMjIzMTUwYTQ4YzM0ODBkNjNlMmRlY2IgbGVnYWN5LXRydW5rCisyMjE5IDQ5NzVmNzk5MGIyYjM1YzcwZDIzNTA1ZWNlYTVjMjBlZWZjZDFlZDggbGVnYWN5LXRydW5rCisyMjIwIDQzM2Y1MmQxZDk1ODc3NjcwM2E3M2U4MGU1NTZiZWViMGU0N2Y1NDMgbGVnYWN5LXRydW5rCisyMjIxIDRmNTkzYjM4ZDA2MTU1NzlhY2FkNGMzYzljYjM1MGViNjAwZGRjNGUgbGVnYWN5LXRydW5rCisyMjIyIDVjNGRkOTM0OGU4MTEzMzIwYzRmN2I0ZTk4MzNmMzIwNWRmMThiODAgbGVnYWN5LXRydW5rCisyMjIzIGZmZmQxMjg2Yzg4MjY3OTM0ZDc0ODZlNGM0ZTQ2N2Q1N2IwODY1OWIgbGVnYWN5LXRydW5rCisyMjI0IDYxMzExNTA2ZjJjZDA5YmFkZDhiNzk0NTZhZjk3ODkyMTRlY2IwZjQgbGVnYWN5LXRydW5rCisyMjI1IGEyMmRmNTJkNzc0OWEzYThjMDc3MGE4MjEzZGU0N2IyY2E1OGZlY2YgbGVnYWN5LXRydW5rCisyMjI2IGE3MmMwYTdkYzk5M2FhZTA1ZTcwODVjZDM4Njc4YjlkYmJlYjE5ODEgbGVnYWN5LXRydW5rCisyMjI3IDQ2Y2IxNGFlYzEwYThkNmUzNjY1YjcxODgwNzBiNjdlODk5YWQ2MzYgbGVnYWN5LXRydW5rCisyMjI4IGY5OGU0MTcxMWQxNzc5MDBhOTZkNTc0NWJhOTBjYzg4YmQ4MmQ3ZDggbGVnYWN5LXRydW5rCisyMjI5IDM2NTAzNzM2ZmRjMjM5MzQwNmMwODYwYzgxYTIwMjIyZDczY2VlNTkgbGVnYWN5LXRydW5rCisyMjMwIGNjY2Q1MzRmMjI4MDc0ZjI2NzQ4NDg0MjIxZDY5ZjJlZTc1MmYyYjMgbGVnYWN5LXRydW5rCisyMjMxIGEzNmMzNDhhOGUxYTI5MTVkNjliN2RkMjAyMTYzZmRiN2U1OTZjODggbGVnYWN5LXRydW5rCisyMjMyIGFjNDUyMmU5OWNhOTQzNzdhNjVjNjZjZmRjMjY2ODRmYTBmZGZiZWIgbGVnYWN5LXRydW5rCisyMjMzIDVlOGEwYjQwYTRiZGYxZTgzYzVkMGJmMzhlZmM3NzQ1YjA2ZWY4ZDQgbGVnYWN5LXRydW5rCisyMjM0IDMwMjhhY2FhNTZiMDVlZDBlMTFlMTU2ZTgxYjVhMDY3MTkxNWNiODYgbGVnYWN5LXRydW5rCisyMjM1IGJjMjQ0ZGYyMDI1MTZiNWE1NTUxM2U0NjNiMmY2MzdkMThmNTgwNTUgbGVnYWN5LXRydW5rCisyMjM2IDg1ZWVkMDYwYTQ2Y2UyNjY0OWZkNjgwMmNmYmQ1ZWVjNjE5MTA2ODggbGVnYWN5LXRydW5rCisyMjM3IGVkZTg2Nzk5NzA1YmExNGJjNDAyMTM1NzFkZmUyYTFkNWY1NmU5MDcgbGVnYWN5LXRydW5rCisyMjM4IGY3MmUwYzYyMzY5ZTI0Y2NjMGVjZGFiNzkyYzk3YTIxYjIzMzJiYWQgbGVnYWN5LXRydW5rCisyMjM5IGIxZmI0ZTFmNmU1MTZkMjgwYzU1NTAxYjIzNDQ0OThjYTYyN2ZlYmMgbGVnYWN5LXRydW5rCisyMjQwIDZjNDNlNTQ3NmRlNjkwNDEyNjk5YjNiZGU2YjUwN2IxYzQ4ODA0YTYgbGVnYWN5LXRydW5rCisyMjQxIGY0NzEwMWRjM2MxODhmMjRmOWI5NzA1ZGIzYjY0ODkxOTE0YmRiODIgbGVnYWN5LXRydW5rCisyMjQyIGRlMzRmNGE0ZDM1M2I5ZjVmOTkxYWFjYTk4YzgzZmFhYzY4MWM2ZjUgbGVnYWN5LXRydW5rCisyMjQzIDU1NGFjNjU5YjJjYjk1MjRlZjRmOTZlYzI3NTZkYzRjYTBmYTBmOWIgbGVnYWN5LXRydW5rCisyMjQ0IGY2YmNmM2MxZDcxNGU3ODc1MzU2Y2ExMmMzMmVlNWY5NzVmNGVkOGEgbGVnYWN5LXRydW5rCisyMjQ1IGE3OWNiYjI2NTViYWFmNTRhZGRjMjIwMzM1MDAzNjQ3OWJkY2I3ZTMgbGVnYWN5LXRydW5rCisyMjQ2IDA2YzkyZjQ5MWY1ODhlZDlhYmUwZjJkNGYxNTEyMDY5YTMwYzE5MDEgbGVnYWN5LXRydW5rCisyMjQ3IGE2OTM0MzgwYzZlNzliODdmNzc2MmIxZDk0MzNkMGUwYTg5Mzc0NTIgbGVnYWN5LXRydW5rCisyMjQ4IGVmMjQ0MGYyNGYxMDJjNjc3YTAyZDQwNzk4OGRkODVmNWRhNTBjYWIgbGVnYWN5LXRydW5rCisyMjQ5IDE2ZThjNWQxNjQ5MzVmM2M2YTk4OWVlZWFkZjIyYjBhYjRkYzIyZWEgbGVnYWN5LXRydW5rCisyMjUwIDU4NDdkZjEzOTkxZGU2YTgzNjQ4NDEwNzU1M2Y0ZTljZWNjYThhMTQgbGVnYWN5LXRydW5rCisyMjUxIDVjYjg0M2JjODdmYzA4NjU0NmZhYmY2YjhlYzAzZWVkMzFlMjBhOGYgbGVnYWN5LXRydW5rCisyMjUyIDVjMzU3ZDM3YjMyNzMxYzhkMDIwNDU0OTcwMjA4NThjNzljNTcxMzkgbGVnYWN5LXRydW5rCisyMjUzIDAwMjA2NmE4MzljNTFjYzE4NGEwYzZlNjY5ZWM5ZDYzNDIwY2RhNjcgbGVnYWN5LXRydW5rCisyMjU0IDllMDUxZmM3MDczZTc3YjllMTUwMzRhMTllNTQ3ZWZlMmI4NWM2NmEgbGVnYWN5LXRydW5rCisyMjU1IGRhYzg2MjVjOGQ5YjAxNDE3OWNkNTgzMzU4YjRkMGU0ZTI1MDI1NjcgbGVnYWN5LXRydW5rCisyMjU2IGE1YmY3ZDU5NTljZTA1MGYyYjA1MWMxMmU4MTgwODk1ZTdlNmQ4YTkgbGVnYWN5LXRydW5rCisyMjU3IDI3YTViMDhjM2U3NDJjNjJhMTViNjgxNTZmZTBkNDg4YzA5NGFkNDIgbGVnYWN5LXRydW5rCisyMjU4IDZiNzVmMmEzMDAwZDQwNjUxNDZiMmRhZmU2ZDgzZDMzMDcxZThkMzUgbGVnYWN5LXRydW5rCisyMjU5IDQ1NWQ2NWExMWIxM2VkMzc3OTJlMWY0ZmZiZmUzYmNkZmFhNzgzZWUgbGVnYWN5LXRydW5rCisyMjYwIGUwYzhlZmVlNzZiZDgxNTc4NGM4MTNjNjZhMmExMDQ2ZTVhMGJmNWEgbGVnYWN5LXRydW5rCisyMjYxIGFkMTRhYThhMjk4NDQzMjM4NGY3YWYyMWQ0NTJiZTVhYWJhNmYxOGYgbGVnYWN5LXRydW5rCisyMjYyIDA4ZTU1ZGI2Zjc5NmEyNzZlY2QxYzE2ODNhNTAyYmFmZDcyNDc4NzIgbGVnYWN5LXRydW5rCisyMjYzIGYyY2FjYjkwYzkxN2M4ZDI5Mjc5OTRjYzI0MzEyYTYyMWRiMTNmODMgbGVnYWN5LXRydW5rCisyMjY0IDEyMjliYTEyNGUwYmE4ZWNlOTIyY2UxNGMwZjRhYWJkYmRlMWQzZjAgbGVnYWN5LXRydW5rCisyMjY1IDRlYzhjMjYzYWI0OGI0OWQ3NzI3MDExYzRhODZjN2IxMDliMGZhNTggbGVnYWN5LXRydW5rCisyMjY2IGI0ZDVmZGNiZjgzYzY4ZjkxM2FmNGMxNzVhMTQzYzhhYmY3NzVmZWYgbGVnYWN5LXRydW5rCisyMjY3IDY0MzczYzc5YzA5OTk5MGNiNjkyNjJkMTgzYTQ1ZTRkYmZmNDI4NDIgbGVnYWN5LXRydW5rCisyMjY4IDFlMDA3ZGNjYjI3MDliMDgxMWU1M2JmMDdjN2I4Nzk3OTFhYzk3NzQgbGVnYWN5LXRydW5rCisyMjY5IGFlOWIzNjZjNTc1ZDU1N2U2ZjgwNmYwZDE2ZTU0Nzg1NzE3NTRjMWIgbGVnYWN5LXRydW5rCisyMjcwIGY2OTQwMzZiODU2MWViMWIzY2I1OWVmMzY4MGQ3ZTk2ZGRmZDcxYTAgbGVnYWN5LXRydW5rCisyMjcxIGU0YjFkOWU2OTgwYTQzOGY5MDJlZWY5MDAzNjhjMmU2YTJkNTBhNjQgbGVnYWN5LXRydW5rCisyMjcyIGQwOGY3NTJiNTZjMDYxNDZkNWJhY2ZiMmVmNzZjMTAzNmEzY2RjNDkgbGVnYWN5LXRydW5rCisyMjczIGQ4YTFiNjQ1NjIxMmIyOGI2MTI2NGRiMDJkNjViMmM1ZjZkZTcyYzggbGVnYWN5LXRydW5rCisyMjc0IGQxNjk2MTE2NzM2NWZmZmY4MTdiYjhlNjhhMjExMWZlNTNhNmNjNTggbGVnYWN5LXRydW5rCisyMjc1IDFlZmI4ZWQ2YWZkMzNhMDA2YzUyOTlkM2E0MTVhY2UxMmM5ODZhODkgbGVnYWN5LXRydW5rCisyMjc2IDQwOTRiNDZmMDRjOGVhZjMyNWIzZDU5OWU3MzJhNWJmOWE4YzNhN2IgbGVnYWN5LXRydW5rCisyMjc3IDBhMDJjYTlkY2Q2ZTAyMmYxMGExY2M1NTM3Yzc4YWE3MTMyNGEzMjMgbGVnYWN5LXRydW5rCisyMjc4IDc4NzMzYzFjNmUzNjE4N2FmNTdmNGVhMjUxNzBhZDA3ZDA4MTBiYjggbGVnYWN5LXRydW5rCisyMjc5IGE4MDkwMTNjMmFmMWVmM2ZkNjlmZjUxYjQ5YzI1NjNhZjdjMzI3MDUgbGVnYWN5LXRydW5rCisyMjgwIDlmZWUxY2E2YzhmZWQxNTc3MGNmMDZmNDE4NzVkZmZhZTlhZWQ0MmEgbGVnYWN5LXRydW5rCisyMjgxIGM5YTVmZTE2NjBmNTE5ODVlMjY5YmU0OTI5NDY0ZTVjNGVhMmU1YWQgbGVnYWN5LXRydW5rCisyMjgyIDBjMjVmYWY0YTZhNDQ1MDg1YzRiN2E5ODViN2E0MzAwYzkzOWNmNzEgbGVnYWN5LXRydW5rCisyMjgzIGIzODAzZmQzY2IyYzhkOTA5MzEzNmY1YTFkMmVjNTBmOTgxYjQzMTIgbGVnYWN5LXRydW5rCisyMjg0IDIyNzI3YjQzNzgxZTdjNTNkYmRjZjUyZjM4YWJmZDA5ZDZkMDgxNGYgbGVnYWN5LXRydW5rCisyMjg1IGE4ZDAzM2M2ZmI1NGEzZWVhODBkZTBhMjk1MmNmNWE5ODBiM2Y4NDcgbGVnYWN5LXRydW5rCisyMjg2IGY3MWQ2YTA5NmIwMjE4YTI2NzI3YmRhMGQ0ZDNkNWFjYmYzNTIzZGIgbGVnYWN5LXRydW5rCisyMjg3IDI3Y2MwZDgyMzc2NjNiNzVkYTM4NzE1NDZiMjAzZjU2ODVhNDdhNDUgbGVnYWN5LXRydW5rCisyMjg4IGQyMTRiNWQyMWRmOGM1YWNlY2VlZTU2YmUxNDgxODQ0NWY4MDk4MzMgbGVnYWN5LXRydW5rCisyMjg5IDNiZWQ3NmNkYWMwYzQ2NTVjZjgwMjViYTYxMjIxZjNlY2NkN2I2OWYgbGVnYWN5LXRydW5rCisyMjkwIGVmZDkwMDQ5N2Y0Zjg3ZDcxN2QxMzdkYjU4YWY5OTVkNmEwM2IxNGIgbGVnYWN5LXRydW5rCisyMjkxIDhmMjE0ZDYxN2FjYWI4MGYxNjY3YzEwMmI2ZmU4NWY2ODBiY2UwZGIgbGVnYWN5LXRydW5rCisyMjkyIGFkNGM1YTVlZjBmZmVlZTliOWFhODg1YTQxNmUwOWZhNDQ5MjUxYjAgbGVnYWN5LXRydW5rCisyMjkzIDY1ZWRkZTAyMmQ3MWVlMzgzYjBhNTQ2YzcyOTdjOTM4OThhNmUxYjEgbGVnYWN5LXRydW5rCisyMjk0IDA2ODg5Njg1ZWI2MjAxZDI0ZTkxM2I0YzA1NGMxZjIyNzRkNGQzNWQgbGVnYWN5LXRydW5rCisyMjk1IDVkNWM5YjJkYTU2MjIxODJjYWZjZjE3NzdiOGFhNzZjNzBhYjc2MjAgbGVnYWN5LXRydW5rCisyMjk2IDI2Y2NiYzNlNDFjNDYxYWQ3OWE0MmUyMDEzMzljYjlmOWEyZDg5YzcgbGVnYWN5LXRydW5rCisyMjk3IDY1MjNiZDI5NTRmMDQzNmZiOGY2Y2I0YWFhZmEzMDA1MDdlM2FiMjcgbGVnYWN5LXRydW5rCisyMjk4IDgyZWY5NGI4YjkwMmUzNDk0YjM4NjAxZDE4NDRiYjk1OWRlMzE2NzcgbGVnYWN5LXRydW5rCisyMjk5IGJiMjQ5NDg5NTdlM2NhOTY4NzZlOTAyZWRiMjkwYWI0NjRiYTZiNmUgbGVnYWN5LXRydW5rCisyMzAwIGMyOTRhOGNhZWJiOWJiM2VlOWY4OTJhMzcyZDY0NTc1MDcwNDZmNTMgbGVnYWN5LXRydW5rCisyMzAxIDNiODAyM2IwYmI0OGIxMDY2ZDRhMzM0MDczMTczMDRkMzcyOWUzOTEgbGVnYWN5LXRydW5rCisyMzAyIGJmNWE4NTM5ZDhiYTdmNzRmMDM0MjJjNWI0ZjY2OTA3MGZiOTY1MjEgbGVnYWN5LXRydW5rCisyMzAzIGM3ZWE2MDQ5MWU2ODFlOWI5MWY3NmEwMTJjNGRjOTQ0YjVmZmYyZDggbGVnYWN5LXRydW5rCisyMzA0IDE4NzBkODJkZTA2OTlhZmJhODlhMTk0NjZiMmY5YzM2NTFiNGNjOWEgbGVnYWN5LXRydW5rCisyMzA1IGM3MGVlZmU0ODAyOTBhMWQ4MGQ5ODdhMmZmNTk5YTBlYWNiZWI5OTAgbGVnYWN5LXRydW5rCisyMzA2IDg1M2I3MzZhNmE5ZWUzOGUzMzAxZDQzMGMxNTJhZTc1OGUxNjFhNDAgbGVnYWN5LXRydW5rCisyMzA3IDBmNTk4OTkzZDk5ODZmNGFlNGU2ZGQ5YTM0OTFkNTA5YjMwOThlODMgbGVnYWN5LXRydW5rCisyMzA4IDM0OTlhZDg3ODM5YWY3YTFhNGY3MWMxNWY4OWQyMGFiODRjNzhlNzEgbGVnYWN5LXRydW5rCisyMzA5IGEwYzVmMmFmMmUwY2FkNWM0ZDRkZTRhODkzY2E1YTVmZTdjZTdkNDEgbGVnYWN5LXRydW5rCisyMzEwIDYxYzUyNjBjMzY0ZjI2MGU0YzljOWM1OWQ3ZjlkMmE3ZDQ0MzZhMWMgbGVnYWN5LXRydW5rCisyMzExIGM2NWViYTgxOTRjN2I0MDNiOWU3MmVhYWM0NTBlMmRhZGFmMjAzNzcgbGVnYWN5LXRydW5rCisyMzEyIDlkNGM3ZGUwZGVmNGZlNjdlZjVhZDU4MjQ0Yzc2OTliNTE4OGJhMWQgbGVnYWN5LXRydW5rCisyMzEzIDFkNDA5NGM3ZDU4YjhjNzMwZjAzNGIxYjMxMzY1MTg1NjI5ZGE1NjMgbGVnYWN5LXRydW5rCisyMzE0IGU1NzY0YTBkMmQzMjk5ZGE2NjE0ZWVmMTkyMmM3ZjQxNzc2NjVmY2UgbGVnYWN5LXRydW5rCisyMzE1IGYyZWZjZWFmNzNjYzlkOTk5YjhkZjUzYmZmN2NkMjE4YTJlNjMyNDMgbGVnYWN5LXRydW5rCisyMzE2IDg5NmM4MjVmMmY3MWJkZDJhYzBkZjEyYjVjNmZmMTc5ZTA2Y2RhMjUgbGVnYWN5LXRydW5rCisyMzE3IDQzY2FiYWM1MDIzZDJhYzI3ZjVjOWEzYzgzNWYxYWM2NjhjNDM2ODMgbGVnYWN5LXRydW5rCisyMzE4IDQ3Y2MwY2U3OTk5Yzc4N2Y2ZTk0YmQzYTAzZTE5YzA5MDIyMjQ4ZmUgbGVnYWN5LXRydW5rCisyMzE5IGM4NjU5ZjhhNWY2Mzc4NGM1YWZlNDAwZGMxN2I1ZmMxOTJkMDAxOTUgbGVnYWN5LXRydW5rCisyMzIwIDQxZjNjNjZiMTBmZDBhNjVjYWJjNDhiZmExYzZhZWIzMjBkNDEzNTUgbGVnYWN5LXRydW5rCisyMzIxIGFmYTQ4YTk2YTQ0NDNjYjU4NTcxMzg3OTllMWQwOWM1ZGM0YmFkNjggbGVnYWN5LXRydW5rCisyMzIyIDI1YTdmYjQ0ZTI5Nzg0NDk4MTIzNTRjYjA3YTJiODYyYWYzMmNlZTIgbGVnYWN5LXRydW5rCisyMzIzIDc2MTg2OTc2NmU0NTI4ZTY4ZjFkMTE0NjA2ZWJjOTFlZWM4YTRlZmEgbGVnYWN5LXRydW5rCisyMzI0IGVmOWI0YmU1YTNmZWExMDI5YjMxYjUxNTQyNDY5ZGUwYjI2OGRmMGIgbGVnYWN5LXRydW5rCisyMzI1IDdjZTkxY2ZiN2FjNDUxMmQ0OTA3NzNkODE3NDkzNzVhOGJjMzI5ODIgbGVnYWN5LXRydW5rCisyMzI2IGE0NTQ3YWYyOTY3MTFiYWE3NDM3NzIyOTJjNzQxODRjOWQyNzg1YzkgbGVnYWN5LXRydW5rCisyMzI3IDI4OTIzZTQ0MjU0Y2ViNzY3ODk3ZjQ1ZGRlZGU1ZTIyOWVmNTRlZDMgbGVnYWN5LXRydW5rCisyMzI4IDNmYTJiMTRiZTI3MDkxMTkwNzlmN2E2YzYzMGU1YjEzNWQ1ZGU5MDUgbGVnYWN5LXRydW5rCisyMzI5IDY1ODVhYWJlMTk2OGJhNTYxOGYxOGVhMGM5ZGExYzk3ODhiMzQ4OWYgbGVnYWN5LXRydW5rCisyMzMwIDFlZDdmNmY2NTk4MzcxZWJkMjM1MGUxNjgxMDgxYjI2N2FjMzAxZTYgbGVnYWN5LXRydW5rCisyMzMxIGVlMGEzMmZkNDU2Nzg0OTVhYzAyMzNjYWFmNmVlY2QwYzg4NGU5OGIgbGVnYWN5LXRydW5rCisyMzMyIDBjZWUwMWI2OGQ5YzgyNGQzMzMyMmUzNjAyNGEwMmY0YTc1ZTdlMTAgbGVnYWN5LXRydW5rCisyMzMzIDVjZjNjMzZkMDJlYTRjYWIyMzFjMjk5N2VhYjI4ZmUyYzcyNmIxMWYgbGVnYWN5LXRydW5rCisyMzM0IDQ2NTY0NTI0MzZlMTljNDEyZTg4MDg4MzRlMzE4NWE5NjUwMDk1ZTQgbGVnYWN5LXRydW5rCisyMzM1IDIwZmVlNGUyZWVjZGM5NWVlMDBiMmVhM2NkMmIyZWU5NWI1ZTViNGQgbGVnYWN5LXRydW5rCisyMzM2IDA2Y2MzYjAwNjcxYzNlMjIxNTdlMjdlOGE3ZjZlODY4MmE3NmE4NDkgbGVnYWN5LXRydW5rCisyMzM3IDIyOTE2OGEyZmUyODZhOGIyNWQ4M2Q4MDU2M2Q3NWY0NjBhMjU5YTAgbGVnYWN5LXRydW5rCisyMzM4IGJkNDljYTZjNGFkZDI0M2M4OGEwOTQyYWJmNWYxM2NlZjEwZmMzZDEgbGVnYWN5LXRydW5rCisyMzM5IGZiNjM2N2Q1ZmY0NjQ5MDU0ZTg3Nzk3ZjQxMjIzNDg5MzA1OTEzYTQgbGVnYWN5LXRydW5rCisyMzQwIDBjMzU1ZTllZTg1NDU4YTFkMWFlZThiYWRlYWRiODJmNWFiYWRiNGYgbGVnYWN5LXRydW5rCisyMzQxIGE0MDVhMzEyNDJlN2M0YjRkMmVkMGU0NmJlNWY0ZjkwYTNkNzM4Y2EgbGVnYWN5LXRydW5rCisyMzQyIGE4MjM2MDJjMjI3NDFkNWFiOWM0NzhjNmY1YmQxOTE3YzIwNDE1ZWMgbGVnYWN5LXRydW5rCisyMzQzIDU5ZmZiNmQ0YjM0Yzc2NzNjYTc0YWZkYTgyYWVhNjNmZDRiY2VkNzQgbGVnYWN5LXRydW5rCisyMzQ0IGM5MTY4YWZlMjNkZGY2OWNkZjVmMDE2YzczMWVkM2M0Y2FiY2YwMTQgbGVnYWN5LXRydW5rCisyMzQ1IDFiMDhkZjQxNTg3Yjg1NWY0YzYyNWI5MjNiYmZmZDQ2Mjc1NGI1OTQgbGVnYWN5LXRydW5rCisyMzQ2IDMzNDY2MjY4YjYzNzFlYTVlOTNjOTMxZDBjZTMzNTQwZDVhZTJlOGQgbGVnYWN5LXRydW5rCisyMzQ3IDg5MTE1ZTc1MzRkNTgwZTBiOGQyNTgxYzhjMjRkMDA3OTFkYjFhOGQgbGVnYWN5LXRydW5rCisyMzQ4IGY0N2Q1ZTllYTI2NGVmOTNkMzVmZDliNDE5NDhjZDE0MmJhNzBkNDcgbGVnYWN5LXRydW5rCisyMzQ5IGQ4MTgxOGU2MjY3MWE2M2U1NTUzYzk5OGNjNjFiZGZiMzU5MTM0NmEgbGVnYWN5LXRydW5rCisyMzUwIGZmMGRhZTFmNGRiNjI1YmYxMzFiZWI3YjZjZjczZjEzYWU1N2M1ZmEgbGVnYWN5LXRydW5rCisyMzUxIGI1MGZhNmQ1ODc4NmRkYmQ0NzNkZWNkOTVlNjA1Yjg5ZTA0YmM0OGMgbGVnYWN5LXRydW5rCisyMzUyIDVmZmQzNzFiNzg0MWRlNjUwYzJiZmFjMTI3ZjA0MGI5ZmI3ODJhOTcgbGVnYWN5LXRydW5rCisyMzUzIDMyYWU0YTFhYWI2ODlhZWY4ZWUwOTBjNGMxODkxNmRhNzhlMjJmZGIgbGVnYWN5LXRydW5rCisyMzU0IDU3ZjNmZmM3YjFjNDA1NDI1MTk5ZWI3ZmMyZDgzNGQzODU3ODJlM2QgbGVnYWN5LXRydW5rCisyMzU1IDE0NWY5ZTE0NTk1ZjRiYzYyYjFlNzQyMDdjNmQ1OTYzNmE3ZTk3ZTEgbGVnYWN5LXRydW5rCisyMzU2IDQ1ZjQzZjc1NWU1YzUzYmI0ZmVjYzg1OGE3NTU0MjNkODJlNThmODkgbGVnYWN5LXRydW5rCisyMzU3IDQ4ZmMwYjhmMzNkOTA5YjQ0M2ZkODBiODMzZWE1ZmI0YzU1M2VhNTAgbGVnYWN5LXRydW5rCisyMzU4IDQyM2JlODc2ZGNjZTYyMjU3MGM1NzkzMTk5NDk2NjgxMmQxMTQ4MzEgbGVnYWN5LXRydW5rCisyMzU5IDY0NjMxNmM5OTUwNzg4OGNlOTIyNmZlN2U2Nzk3ZmU3NjhmZTUzZjAgbGVnYWN5LXRydW5rCisyMzYwIDBhM2UzM2NmZDRhOTMzM2U5ZDA2ZDQ3NDYzYWVkZmJhMDY3NDBlOWEgbGVnYWN5LXRydW5rCisyMzYxIDlkMDE5NjVmNGY0OGFmZDU4ZTlmMmM5OGVjMzU1ZmRlNmI4NTY5Y2QgbGVnYWN5LXRydW5rCisyMzYyIDMxMGY4YzkyNDA3MzJlMGE3MzY0NzEzMzQ2NDM5YzZmNTFjMjk3ZWYgbGVnYWN5LXRydW5rCisyMzYzIGJmZmZjN2UwZmNjM2UxOTBhMTM1NTI4OGU4YWQ3MWFiMTNhNmM5OGYgbGVnYWN5LXRydW5rCisyMzY0IGNlYjM2ZWM2MTk4ZGYzOTljMTk5ZDdkMDE4ZWJkMTY0YmE2ZjY3ODcgbGVnYWN5LXRydW5rCisyMzY1IDNkN2RhNjE3NGUyZTU4NTNmYzUyZWNjOGRmYjVhODkwZDU1NDdkYzIgbGVnYWN5LXRydW5rCisyMzY2IDhmZmRhODQ2ZDc4ODlmZDk3M2NhOTAwNTI0ZTRjOTE3MTMxMzVhZWMgbGVnYWN5LXRydW5rCisyMzY3IDNjYzU0OTcyYWI1MjMwNmFmNTk5MjdkNWJhMDcwMjJiYjY1ZDA0YTUgbGVnYWN5LXRydW5rCisyMzY4IDlhYjMyOTY5N2RkYTU0NzUwOTg4ODUyNDUzMGUwMjgwYzU0MjAwZmYgbGVnYWN5LXRydW5rCisyMzY5IGYzNTJlYTRkZmY3MDhiMWE3MmE5NWM0NWVkOTlhODQ4OTE4NmZhMTEgbGVnYWN5LXRydW5rCisyMzcwIGU0ODZjODQ5YzUwYzI1NmViYzZmMDkwM2E5NjllYTAzNmQ0Mzg5YzQgbGVnYWN5LXRydW5rCisyMzcxIDkxYTJmNDc0NTg1MjE4NDQwNWY2MmUxM2RjOWU5MmM1MDdkYzhlOTYgbGVnYWN5LXRydW5rCisyMzcyIDgzZjBhNzI0YTg3YzAxNjMwYTM5NmJhNTZhM2FiYTliZGJhZWY0NmUgbGVnYWN5LXRydW5rCisyMzczIGE3OTNjOWU4ODBjN2Y5MzU5ZjA2MzM4MDdkN2Q2MmQ1YWMwNzI0MGYgbGVnYWN5LXRydW5rCisyMzc0IDY2YjU1NzY2YmE2NThhNTZiMWVjNDFkZTljMmIxNjJiOGE4YjFiMTYgbGVnYWN5LXRydW5rCisyMzc1IGVkMDMxMWI4ZTc0MTkxODA3OWM3ZjUyNmFjZjI4MTc3NzYxNmI1NWUgbGVnYWN5LXRydW5rCisyMzc2IGY2MWU3MzY4ZGVmMmU5ZTVmNTU4Njg3YzlhYzE1ZmEzNGYwMGQxZjIgbGVnYWN5LXRydW5rCisyMzc3IDE3NTRiODAyNGI1NWQwYzM3ZmZlNmMxYWYzZWIwMWIzNzFkNmFlZGEgbGVnYWN5LXRydW5rCisyMzc4IDE5NTg3MjNiZmUwMjRkNmViNGE0YjBjNjZmMjljNThkMmIyNmFiYWYgbGVnYWN5LXRydW5rCisyMzc5IDM0MjljOTQ1ZDgxN2RiZDFlYzQxNWFjOTUzNmQyZDIxNGFiYTgyNTggbGVnYWN5LXRydW5rCisyMzgwIGExMDk3Y2QwMzM0OGVlODFiNjFjMDYwNDhjY2JhNmQ5YzI1OGNiNmMgbGVnYWN5LXRydW5rCisyMzgxIDFlZmY2MTExNTgyZTQ4ZTAwOTA2ODhmNDc1ZDE2ZGJkZDhmMjI3ZGQgbGVnYWN5LXRydW5rCisyMzgyIGVkZGE5YWFkM2U4ZjE3ZTJkOGZiY2MzMjdmMTdmYjZjMGVmYzc2N2IgbGVnYWN5LXRydW5rCisyMzgzIDI4OThkNzhmYTMyZGU3ZTA2YjBkYzFiNGUyYmE4YjMzODhkNTZkNWQgbGVnYWN5LXRydW5rCisyMzg0IDY2OTNjNWQ4N2YzYTA0OWQ5MDgwYWU2YzkwNGVkOWEyMzQ2OTEzYjAgbGVnYWN5LXRydW5rCisyMzg1IGU3MWI2ZmVjODZlNTk4ZmQzMDI2ZjdlZDYzMDhmYTM3MzBlNmE1ZWUgbGVnYWN5LXRydW5rCisyMzg2IDc4MTllMTYxNTMyMGI0MjA2MjMyZWRjMzdlYjg2MmJjNmY4NzNiNjIgbGVnYWN5LXRydW5rCisyMzg3IDdlODMxMTVlZGI2YWU2ZDMyNjRlYzMzYzg5NDMyYjNlZGEyZjAwMDEgbGVnYWN5LXRydW5rCisyMzg4IDdlYzYwNThiNTM5YjdlZDlmYTBjZjZiZTM3ZWRjZDE2ZmMxNjg2OGIgbGVnYWN5LXRydW5rCisyMzg5IDYzNGMxZDNjN2QzOTIzZjA0Y2E1MzRhYThmZjA3NDM5OTI5NjExYzggbGVnYWN5LXRydW5rCisyMzkwIDA4NTk3ZTJiNjNkM2Y5NDNjZmRlNmQyNzQzNDQ2NzVjNzI3YzNlMDQgbGVnYWN5LXRydW5rCisyMzkxIDdiYTk2MTIwNThhNDY5YjM0OTM5ZjQ4ODA3YmQ2ZTJjMjRlZTBmNjIgbGVnYWN5LXRydW5rCisyMzkyIGIzMWFiZjQyMGU2MWE3YTBhNWFhYjRhNzEyOWJhYTE1OGM5ZWVmMDQgbGVnYWN5LXRydW5rCisyMzkzIGFmMmU2NDAwNzY5ODE3YjM4ZWZiN2VkNTA1YWNhNmM4MWM1ODg5ZGMgbGVnYWN5LXRydW5rCisyMzk0IDhmNjJhNTQ1NzMxOWUyNjdmNDRiNmJlNTFlZjNiZTFkODBhOGVmM2YgbGVnYWN5LXRydW5rCisyMzk1IDkxNGM4M2NmYTVlMTA1Yzc5MTI0N2MzYThkZmJkMDgxNmNmNDQ5OTcgbGVnYWN5LXRydW5rCisyMzk2IDk3NzAxMTJlNjYwYTkwM2Y1ZWFjNjU3OGE4ZDU1ODgxNGY3NDhiMjIgbGVnYWN5LXRydW5rCisyMzk3IDBhOTJiNmExYjljMGFiZTg3N2I2MWE0ZTNiNDU4ZTFmZWI3YjY4YWUgbGVnYWN5LXRydW5rCisyMzk4IDE2ZjQ2NzcxN2Q3YWI3MDM1YTExNWFhOWQ1MTJlYjU5YzcwZjliY2MgbGVnYWN5LXRydW5rCisyMzk5IGZkODE2ZWQxN2UzNWYxNzEwZThiOTZiM2NjOWZiN2UwOTFkNTVlMTkgbGVnYWN5LXRydW5rCisyNDAwIGZkYTk3M2YyYTUxMmI5YTU2MjU3NTVjZTcwMWY2M2FlYjdkZWQyYjcgbGVnYWN5LXRydW5rCisyNDAxIDBhYWQzYTdiOTdlZjM1MjkxMzE3MTFmYzgxYWJkMzc3OTRhZmJlNTIgbGVnYWN5LXRydW5rCisyNDAyIDQxZTA1Nzg3MGE1MzU0ZWY1YjUyOTU2Yjg5ODkyZjQ0YTNiZjdkNzUgbGVnYWN5LXRydW5rCisyNDAzIDMxNmEwZDljMDA5NjllZDA2NmIwMjVjMDU0ZmRiMGQxYzQ0ZDY4ZDQgbGVnYWN5LXRydW5rCisyNDA0IDVmN2MyNGIzOTUzYmU3NDQzZWQ2ZjFlMzc5YjMwYjUzYmJkMGFlNzcgbGVnYWN5LXRydW5rCisyNDA1IDQ3ZWI4MWRhNDZkYzIxNjc3ZjE4YmMxZjUzYmFlZjIwZjQ0YmY1ODcgbGVnYWN5LXRydW5rCisyNDA2IDQzMTMzZDg4NWM0Y2M5NjMyMTE2OTllZDI4Yzk2NzkwM2UxNjdhM2YgbGVnYWN5LXRydW5rCisyNDA3IDk1NmZkNWMzZjA0MDc4MDE3ZGJiMjVmYjcwYjJhZDFhOGVhMWIyOGIgbGVnYWN5LXRydW5rCisyNDA4IDM1OWJmMTA5ZGEwZjdjNjEwMmMwZGRlOTBhNTk5ZTgxODhlYjFmNGQgbGVnYWN5LXRydW5rCisyNDA5IDllYjEzYzY3YWU2ZmY2YmVhOTJmODI2Y2U3YWYxMzVhYzBhZWI5YmIgbGVnYWN5LXRydW5rCisyNDEwIGJhYjFmNTQ5NGI4ZWRkY2RkMWU3OWQ3MTc5NGM0ZjNlMDgzYzMyNjggbGVnYWN5LXRydW5rCisyNDExIGI5OTg2MDA5ZDdkYzRiN2MyODkwNTRhODlhNjg2Y2RhMmZhNmVkNzcgbGVnYWN5LXRydW5rCisyNDEyIDQ4ZDU4Yjc0YTNhNDdhYmNjNjE2YmNiNjM1OGIwOGQ0MjUyMjU5YTMgbGVnYWN5LXRydW5rCisyNDEzIDY4MTE5MTJmNjcyZDg5NDMzOTEzMmI2YjhmYzg2ZGNkNTkwY2EzNzMgbGVnYWN5LXRydW5rCisyNDE0IGQ0ZTUzMmVlNmYzZDE4N2MwN2VkNTdkNDQ3NTliNDA0MGVjY2MyMzcgbGVnYWN5LXRydW5rCisyNDE1IDcxYjBiZDVlZDE2MjA1YjIxZDQzNmE2Y2JmZDQ4MTJmMTZjOWY5YWQgbGVnYWN5LXRydW5rCisyNDE2IDg2MDRmOTAyOWNkYTNkNzE3YmVjNjQxMjY2ZWM3MDRjOGYzNjllMjAgbGVnYWN5LXRydW5rCisyNDE3IDNlYWIyY2Y1ZTRkZDUxY2ZjYzQ0OWRmNmU0YzA5OGRmOWIwY2Y3ZDQgbGVnYWN5LXRydW5rCisyNDE4IGE0NjU1OGFkMGJlZGE5NThhYzVjMTcwMTE1NmU0NjkxOGMwYzcxZDQgbGVnYWN5LXRydW5rCisyNDE5IDNiOTNiY2VhMTBmNmRmODY5MTgzODM1ZTg0Y2ZmNWJmYzU4Nzc4NGEgbGVnYWN5LXRydW5rCisyNDIwIDYzMjFkM2RjNTdlMGMxODkwYTZmNjIyYzUxZDM5ZjQwYWZhY2E2NGQgbGVnYWN5LXRydW5rCisyNDIxIDI2YjJlZWQ3ODM4MTQ4ODA3NDEzMzBkMGQ2YzJkMWI4YmUxMTRlMDQgbGVnYWN5LXRydW5rCisyNDIyIGY0YTk0NGU5ODM1ZmE5MzJmMTQyNjg1YTdlMjQ0ZjZkMjk5NDcxMTQgbGVnYWN5LXRydW5rCisyNDIzIDZhY2Q0MWE0NWQ4ZGE4YmIwZjNhNTZmYmRlMGY4YzY2ODI2ZDAzZDkgbGVnYWN5LXRydW5rCisyNDI0IDI4ZjBmZmQ5ZmFjZmI5OWFjNTk1OGM3OGUwODNjZTIyNjYzODA5MTcgbGVnYWN5LXRydW5rCisyNDI1IDcyZDFiODliZTM1YWUyMmJiNmFlYTUzYTM3ZDM4NDQ4NDYzM2NmNDggbGVnYWN5LXRydW5rCisyNDI2IDE4N2JhMTczM2IxNzgxYjRiZjVkOTdhNGQ0ZmIzMzQyNTU1MGQ4OTAgbGVnYWN5LXRydW5rCisyNDI3IGI1ODI2YmYyOTY3NzZlYTBmNDNhOTUyMTA0ZDExNDk4ZmYyNGFkNmUgbGVnYWN5LXRydW5rCisyNDI4IDQ1NzY2MWU0N2M3YmE5YjZkZDkyNjUzZjdiNDdkN2FjZmE5NDIzYTUgbGVnYWN5LXRydW5rCisyNDI5IDBmZTI0NzExNjZmMDUzYmY3ZjZiMWIwMTMzZDM5ZDhjMjZlZmIyM2YgbGVnYWN5LXRydW5rCisyNDMwIDc0NWE0NjYxMTk1N2Q2YjI0NTQ3Njc4ZGUzYTFlZTBmNTIzZWNlNjUgbGVnYWN5LXRydW5rCisyNDMxIGFkZWQyMDhhZGY2YzYyODVhODNlOGU0M2JjNTkyOWVkMDRlNDJjM2MgbGVnYWN5LXRydW5rCisyNDMyIDBiZjAyZTFiN2Y1MWRlNmM2NTBkMTg5ODU2NTJmZWRiY2EwZTlhMTAgbGVnYWN5LXRydW5rCisyNDMzIGYwODU3Y2U3ZWQ0ZmFlNDA5ODVlMmRkMGQyMTYzNzZmZmZmMzA3YzYgbGVnYWN5LXRydW5rCisyNDM0IGFmMWM4ZjVkMGIzN2Y5MzFiZDE3NjFiODkzZDc3Y2YzYTk1ZTA1NjkgbGVnYWN5LXRydW5rCisyNDM1IDEyYTY0MTE1YTRlZWJkYTRiOGNjZjkzZjMyMjE2YjIyNzA3ODRhOTYgbGVnYWN5LXRydW5rCisyNDM2IDgwMDAxYzAyM2IyYjI2ZmFjOThjMjk0MGYzMWE0NmNmMmY1NGJlOTggbGVnYWN5LXRydW5rCisyNDM3IDEwNzhjZDI3M2I0MDQxYjc5ZjEyZmI0MTlmODU3NDliN2RmOWJmYmIgbGVnYWN5LXRydW5rCisyNDM4IDUzYzhkNzYyZjNhODNlMjAzYTVlYTAxMjEzZDExNWM1NTNkM2ZiNDAgbGVnYWN5LXRydW5rCisyNDM5IGFmOWE4NjM2ZTRhODc3ODc0NzE0MTA5MzQxNTIzMTQ3MmI3ZjljNGUgbGVnYWN5LXRydW5rCisyNDQwIDljOTI0ZjljM2IxNjk0MzI4N2FhNTZiYmQ5ZWZjZjMzNmExNjU0NmQgbGVnYWN5LXRydW5rCisyNDQxIDcwMmExMzlmYTI0YjQ5YTg0YTUzMDEyMjlmMzBjMGUwOTBhMjExYWYgbGVnYWN5LXRydW5rCisyNDQyIDZkZmM5MjYzMDEyMzQ3MGEwNDQ3Y2ZhZDdiYWU3OWQ5MDAyNjQyMTIgbGVnYWN5LXRydW5rCisyNDQzIGQ1YzlhZTQyMmI0MTAzNjZkNWQzMDE3NzRiNjJkNzc1OTZiYmI1OTUgbGVnYWN5LXRydW5rCisyNDQ0IGVkMDE2MjU1ODkyOTMzYTlkZTJlMWNjYmRkNjMzZTdmNDJlZTMxMTIgbGVnYWN5LXRydW5rCisyNDQ1IDZhYzQwMjAyM2NhYzVlYTlmMzc1ZjQyMjVkNTFlNGQxZjM5NjZiZDggbGVnYWN5LXRydW5rCisyNDQ2IDg1YmQ3ZGFjMTNmM2FlYzhmY2YyNDFhODQ0YTY0NzQ0MmQ2ODUzNjUgbGVnYWN5LXRydW5rCisyNDQ3IDM5MDVkYTZjNGE4YmYxNDU3YWJiMGZkZGNlMThkMmVhMDM5NGM2ZWYgbGVnYWN5LXRydW5rCisyNDQ4IDA3ZWZkYTI5NTFhODdmMWY5MDIyMDViMGJkOGUzMTkwYjM5YjdkMDYgbGVnYWN5LXRydW5rCisyNDQ5IDliNDNhOTgzMTI0YzEyYzY2MjhkMjM0MzMzZDgxNzcyNTNiNjllNGUgbGVnYWN5LXRydW5rCisyNDUwIGM0YzI3OGM1NmU5MDAwNTMxM2IyNTFjNTlhYmFlODMxNzMwMjg2YjcgbGVnYWN5LXRydW5rCisyNDUxIDY2MzdlZWUxYzRmODQyMmQ3NjNkY2U4NDhiMzFhYzgwZTI5NTdjMTUgbGVnYWN5LXRydW5rCisyNDUyIDA2Nzc0YTk0YWJiNWJkNzM2NjFmMzE2MTExMThlMTIwYmUzNWY2MTMgbGVnYWN5LXRydW5rCisyNDUzIDYzMDg1ZjdiM2RiNWFkMmJjYWI2NTA1MzFjMjdjOGVhODIyYWM0YzMgbGVnYWN5LXRydW5rCisyNDU0IGY5MDBiNjkyYjM3ZTQ3MDE4ZDU1ZGIzZDk3YWVmNGNjNmQzYjBjYzcgbGVnYWN5LXRydW5rCisyNDU1IDg5MzhiMzEzMmNhYTkwMzhhMDZiZjY4NWI4MzI4YWNmM2EyMmVkNWIgbGVnYWN5LXRydW5rCisyNDU2IGQ3YTM4ZGVjZTg2YTgxODJhNGVkMzI0NDUzMTNiYjNlMzk0MDVjMmIgbGVnYWN5LXRydW5rCisyNDU3IDdhMzVkOTg1NzYzYjIxZjk1OWUyZDE2YzhhZWNiZWJiNWVjZDU1NWMgbGVnYWN5LXRydW5rCisyNDU4IGFiY2NiMGY5ZjczNTliYzI5YjZiZGRiMjljZGNkMDJiMzdmMWViNzAgbGVnYWN5LXRydW5rCisyNDU5IDdmODc1NmZkNjQyMjBlM2QxMDY2NTEyNWQ2ZWYyZTI5YjhhNTBlNTggbGVnYWN5LXRydW5rCisyNDYwIGY3MDkwZjU4MTRjMjI3NjE5ODkxN2ZkODY1YmU2NzE1NTM1NGY4YzggbGVnYWN5LXRydW5rCisyNDYxIDA5ZmI3OWU3YmFmN2FlN2UxMGVhZGQxMjE4YTQ0OThhNjkxZDBhNjYgbGVnYWN5LXRydW5rCisyNDYyIGMyOGZhYmUyMTE2NTQ0NTg3OTg3ZDNjNjBmMTQzMDZjN2I5OTcyYWIgbGVnYWN5LXRydW5rCisyNDYzIGQxOWE2NjU5MDRkZjU3OTQ4MzdjNTE2NDg3OTdlOGNhYmVhZWJjMzIgbGVnYWN5LXRydW5rCisyNDY0IDE0OWRkMTIxZDBhNmI0ZWI0MDM0MGNhOWYwMDQwMTJjN2YzYTdkZmIgbGVnYWN5LXRydW5rCisyNDY1IDMyMDFiNzU2OTVlZjI4ODNlZmQ0ODY0ZjQ3YTBmM2FjNTI3YTg2ZGIgbGVnYWN5LXRydW5rCisyNDY2IDZiOTNkNGNlOGRjYjk4YmY1OGEyZDhlOTBiOTM3MTNlMTY5OWEwZGUgbGVnYWN5LXRydW5rCisyNDY3IGM4YTk3OTAyOWRmNDFkOGFjMTIzYjIzZTUxMzgwYjcxY2E0MjUyMDAgbGVnYWN5LXRydW5rCisyNDY4IDM1YTI1MjhmOGE3M2Q4NmZkMzhlOWJiYTAzYzE3Y2FjYjNlMDdhMzQgbGVnYWN5LXRydW5rCisyNDY5IGFiY2Q5MTU5MzAzNTc3ZmJlZmJmNDY0ZTMxNjUwYWMwZmVhNDIzMTUgbGVnYWN5LXRydW5rCisyNDcwIDM4MjMyM2Y5MmZjZTVmZDA0ZWM1MDYxODNmMDJmODQxZmEwZmRlNDggbGVnYWN5LXRydW5rCisyNDcxIDcyYTAyNjg0MjBkMDY3NGUyYThkMGRkNjU3YTY0NmVkNzA0YThmNDEgbGVnYWN5LXRydW5rCisyNDcyIDYwNWUxNzJiYmI1NTc0NjQyODc4MjNlNGU3ZDQ2ZjM4N2ZlMjBhZjEgbGVnYWN5LXRydW5rCisyNDczIGFlODk0MTFmNmZjMGUwNjQ4NmExMDEyMDM5YmVjZjU5ZTVjNTc5NWUgbGVnYWN5LXRydW5rCisyNDc0IGI4ZTQyMTNmNjVhNmU1NGRiNGUzMmU5NDBjNTE5ZTZjYWU2MTY3MzQgbGVnYWN5LXRydW5rCisyNDc1IGU4Mzg1MmQxYTVlMjNkNmQzOGQ4NmE5MGQ3NzM5ZTQ1YWYyYWMyZmIgbGVnYWN5LXRydW5rCisyNDc2IGFlZjdlMGE5MTE5ZTVkMzdlZTgyMjI2YTQ0NTJiMjI4ZmM3MGEyMGYgbGVnYWN5LXRydW5rCisyNDc3IGE5ZDQ2N2U4NDYzMTk0Y2Q1NmMxYjZmODM3ODAwMTZmNzBlZTEwZDkgbGVnYWN5LXRydW5rCisyNDc4IDMyNWI0MGQ3NzIzNTU2Mjk1NGQ3MWZlMWY1OWY5MWI3OGJmNjY3MDMgbGVnYWN5LXRydW5rCisyNDc5IDEyZmRmYTAxMGU0MWViOTU1ZmQ1YzdlZTRhMjc2ZTZmZGRkYTQ2OGQgbGVnYWN5LXRydW5rCisyNDgwIGExNzc1Y2M3ODZlNmFkOWQxMjU0YTJiMGExYjAwY2NlNGE1ZTc3NTAgbGVnYWN5LXRydW5rCisyNDgxIDI2NDI2YzQyYTE2MmE0NDlmZTAyODcwNjU2NTdmNWE2OTIzOGUwNGUgbGVnYWN5LXRydW5rCisyNDgyIDJhODRiMTZmOTFiMDk4ODMxYmE3NTNiM2UzMTNkNWY4NjVhMjlkMDAgbGVnYWN5LXRydW5rCisyNDgzIDFhNmNmMWY4Y2NlY2EwNGJkYzJlYTcwY2QyM2RiZGI1ZDg2MTU1ODEgbGVnYWN5LXRydW5rCisyNDg0IDcxNGMyMzkwZTVjYjQ1ZTZjODMzNGZjNDFjY2U5ZTJkNmMxMjQ0ODYgbGVnYWN5LXRydW5rCisyNDg1IGE4MTAyMGQ1MDViZjllOGI2YzllMGY3ODI5ZWMxMWExZWViMzMzMDggbGVnYWN5LXRydW5rCisyNDg2IGJhYWRhMjA3NjJiMDgxODVkMDEwZTM2YzY2ODE4MzI4M2QzY2VjMGMgbGVnYWN5LXRydW5rCisyNDg3IGZmMDg2MmUzZDYzYTk2Nzc4ZGUyODBjOTY4NzVhZmYxNDYyNzk3ZWUgbGVnYWN5LXRydW5rCisyNDg4IDRiNTllNjNhMjdiNTdjMzE3MmVkZDBlOTVjOTYzMTM1Zjk4OWFjZTggbGVnYWN5LXRydW5rCisyNDg5IDQ4YmJjOGFkODAxNmE1YjU0NzQxNmVlMWJmY2ZiZDA1Y2QyZjA5ZjYgbGVnYWN5LXRydW5rCisyNDkwIGYyMWNiN2I1M2Y2Y2Y4YWM1NzQ5NTlmMmVlMjVlMjhjNGY1ZmFmYWYgbGVnYWN5LXRydW5rCisyNDkxIDE4MDdkNjBlNjIzMWY3YmFiODQyYThiNzE4NTBhMDYyOWQ2NTY2MDEgbGVnYWN5LXRydW5rCisyNDkyIDIxYzI2NmY3ZWNhMWQ5NjdhYmY4M2NjNWZjNDAzMDI5ZThmOWMwZWUgbGVnYWN5LXRydW5rCisyNDkzIGJlMzA1MmE3N2I3ZmQ0Njg5NTRhMDc0ODUzMTdhZGUzZDk4M2I0MGUgbGVnYWN5LXRydW5rCisyNDk0IDEzN2E1ZTA2ZmM4NGNlNTVjYjQzMGU4OTc1ZDY5YjA3OTVlNGM3NWUgbGVnYWN5LXRydW5rCisyNDk1IDQ0OWY1ZTVkOWFmNjJmMjNlZTUwOTUyNzU0ZjNmZDkxZWRlN2Q0ZjMgbGVnYWN5LXRydW5rCisyNDk2IDE3YTI5NzYwZDA2MmIwMTNjZGNiNGJlNTc2MDczMmE3YzFjMWM3MWIgbGVnYWN5LXRydW5rCisyNDk3IDY0MTg5YmE3ZTIzYmNhYzMwYmIwZGJhYzE3ZTQxZDRlMDcwOGIzODMgbGVnYWN5LXRydW5rCisyNDk4IDQyNjZhZWY1MGMyYjRjZmIxYzJmMTEyNTU3YjZkYjA0MmRiY2E3ZjAgbGVnYWN5LXRydW5rCisyNDk5IDc5NGNmZDQ1NWRjNmY2MjZiY2RjNWM4NDExNjQwYzllZjI1MWNiMmIgbGVnYWN5LXRydW5rCisyNTAwIDA4ZGMzN2E0ZGQzMjNhMjI1NWIwNDg2ODVlOTU5NjI3MDRjYmZjNjYgbGVnYWN5LXRydW5rCisyNTAxIGUzOTQxZWZkNzMxMDVjMTIxOGFhMTFjMzk0NDRlMDU4MDg2NDgwZjYgbGVnYWN5LXRydW5rCisyNTAyIDkwNDE4ZmQ0MzdkYmQzNjc1MDgzNTQxMWU2YzFhMWEyZDVmNGIzYjggbGVnYWN5LXRydW5rCisyNTAzIGYzNzk1YWMxNDZjZWZlZjBiNmE1NWIxMzEzMWY3N2Y5YzZjYTk3YjUgbGVnYWN5LXRydW5rCisyNTA0IDM2YWNlOTA4Mjg5YmE3OWQ5N2I3MDYwZTg1ZjA1ZGJlOWZkYmUzNDIgbGVnYWN5LXRydW5rCisyNTA1IDc1YjJmZDE2M2ZkNzE1YTEwMDMzYTYwODM3NjY3MzcwYjY1MDE1YzggbGVnYWN5LXRydW5rCisyNTA2IDJlMGVhNmQ1YzZjZWZhN2FjZGNlNTFhYzUzOTE1OTU3ZDNmNjdmYjcgbGVnYWN5LXRydW5rCisyNTA3IDQ4MTdhZTQwYTRlMjFkYzA4ZDdkNmE1NGE1Mzc1ZDk2ZWFjNWVlNDkgbGVnYWN5LXRydW5rCisyNTA4IGRhYWJlMjMyMDYyZTA0YzYzZWRiNTRhYjUxNzcyYzQ0Y2RlNTJjOGQgbGVnYWN5LXRydW5rCisyNTA5IGEyOTVkOWEzZmU4OTIzM2MyZjU1M2M3YjNkZGVlMWIyNzJkZDdmNjAgbGVnYWN5LXRydW5rCisyNTEwIDZlNWNiZDljZDVmOTUxODdjY2JjZTUwZjcxNWI2NjYxZDBkYTE0NzUgbGVnYWN5LXRydW5rCisyNTExIDNkZmFhMDkzZDk2ZTkxOGMzZTBlODViYTk1MGNiMzRkYjVjZjgwNTkgbGVnYWN5LXRydW5rCisyNTEyIGEzNTk1YWU0ZGMxZTc4M2ZhNDk5OTk0ZGRhY2M5OTNiNjNlNzQ5MzMgbGVnYWN5LXRydW5rCisyNTEzIGQ5MzI1OWNkMzc5ZDY2NmVmZDEyMzRkNTlhMGViMGQxMzc0Y2MwODYgbGVnYWN5LXRydW5rCisyNTE0IDFjMmNmMmJkYjZjOGEwZTU1YzJkZjA1MWIyMjE2YjUxZGUzMTA1MzAgbGVnYWN5LXRydW5rCisyNTE1IDYwZGE3ZWU5MTAwZTY0OWI0MDI1MDRjNDIyZjdjNTg5ODAwYzRiNTkgbGVnYWN5LXRydW5rCisyNTE2IDhhOTRjY2M0YzkxNDAwYjJlNDYyMjNlOWFjMTc4MDZmMWQ4ZTFhZDMgbGVnYWN5LXRydW5rCisyNTE3IGFiMDVlZmVkMDNlOTBmZjYxY2I2Mjg2OWM0MjI4YWZkN2EzODFjYTcgbGVnYWN5LXRydW5rCisyNTE4IDIzNTg3YmVhMTFiYjFhOGY2NzZmNDk4N2NkMGYxMzkwZmNiZmExNmMgbGVnYWN5LXRydW5rCisyNTE5IGE2N2FiNWQ1ODE0NjNjMWZkZjUwOTUxYTA3MGQ2Y2NhOTYwNTIzMjIgbGVnYWN5LXRydW5rCisyNTIwIDA2OTZmMTk4NzUzZjk0OGU4YTYxNGQxOWYzMDFhZDY0OGI5NjgyYzggbGVnYWN5LXRydW5rCisyNTIxIDNiMzNhYzQ0ZTM2ZTNjNjVjZTcyNjlkYzg5YzllZmEyZmQ5MWE5YmQgbGVnYWN5LXRydW5rCisyNTIyIGM4NTg0YTFiYTM4YTk0NzQ0ZTYxMWU0YTEyZTEzNjZkMGM2OTQ4ZmUgbGVnYWN5LXRydW5rCisyNTIzIGIyOTY5NmU1YzRkOTgyZDk1OWEyMmZlYWNhMDQ1N2U1YTA0N2ZhZTAgbGVnYWN5LXRydW5rCisyNTI0IGQ3MDc1NGE5NjMxMGQ2Mjg4MWE4OTliNjU2M2FhYjMyZTU4ZDU1MDggbGVnYWN5LXRydW5rCisyNTI1IDBiZjgyNWY1NWFjMTUyMDBiNjAyMWY4YWEzYjQwZDFmNGNiMmE5ODkgbGVnYWN5LXRydW5rCisyNTI2IDRlMzA3M2JiMGUzZTAzOTdiZGU5NzUzZTg4MzIyMTNjMDljYTA5MDAgbGVnYWN5LXRydW5rCisyNTI3IGNmYmFjNmZmNzNhZjNjYTQzNDlmZTM5MGVkNWEwZTBiZDBlYThjMjYgbGVnYWN5LXRydW5rCisyNTI4IGE3ZDM3MGY5M2Y3NTI2ZjM0MzNiNmIzNGFiNTRmMjIxNTE4NWNkY2IgbGVnYWN5LXRydW5rCisyNTI5IDA5MjdiZGI4MTZhMDQzYmNiNGExMWYxNDgwMGVkMTc5ZDg2MzY0ZDIgbGVnYWN5LXRydW5rCisyNTMwIDQ2YTY1NjEyM2E2OTY1NTYwYmYyMzIyMzgwNjkzMmQ1MzdjMzM2MmQgbGVnYWN5LXRydW5rCisyNTMxIDUwOWJiNzRhYzMyNDEyOWQzMjM1MzIxYzlhYTVkZTczOTk4ZmIxZTcgbGVnYWN5LXRydW5rCisyNTMyIDM5NzI5MDBlMWI2MWIyNzJkNWY0NmJmZjIwMmZmNGJhZDU0NzdjZTcgbGVnYWN5LXRydW5rCisyNTMzIDE2YjE4ZjU4NmZlY2M0MWQxNTQ0NGJkNDI5MTQ2M2NiOWE2NzRmNzMgbGVnYWN5LXRydW5rCisyNTM0IDMwNWUxNTBiYWE1MzhlNWU3ZGRjMGY1MWNlMzZkNDc2MDkyYmY1NWMgbGVnYWN5LXRydW5rCisyNTM1IDcwYTE4YTY2ODlkNGQ5Y2QwZGUzN2FjMmM2ZDQ3Yzg1YjYyM2M3ZjEgbGVnYWN5LXRydW5rCisyNTM2IDg2ODI4Y2MxYzY0NjhkM2FiMGYwODIyNGEyNzI2YzZkYzkxMzk1ZDEgbGVnYWN5LXRydW5rCisyNTM3IDU2NDU5NDJiN2FlMDU1YzU2YmQxZDYzZjMwOWFlNTAzMjZhZGM0YjggbGVnYWN5LXRydW5rCisyNTM4IDdhYTRjZDYyMWY1OTI2NGYyZjlkMzAxNzE0MDMzYjc3ZTY3MWNhOWYgbGVnYWN5LXRydW5rCisyNTM5IDczMDc1N2NjYjhhMzY5ODRmODE4YTExODg2NTg5YzkxYTkzN2NiM2EgbGVnYWN5LXRydW5rCisyNTQwIDczZWZlM2VhNGYxYjhhZjdjMmZiYmU4NWUzZTg5YmY4MTU5ZjcyMzQgbGVnYWN5LXRydW5rCisyNTQxIGRkYWI1MDI4NWM0NzllYWY4NGNmN2Q2YjAwNmNiNmU3MGE2MDdhODcgbGVnYWN5LXRydW5rCisyNTQyIDRhOTY4MjNmOWI2ODQ5NjAwYzU4OGZmMzg3NzVmODY4MmY5NjI3MDMgbGVnYWN5LXRydW5rCisyNTQzIDRkZmYyM2U3Y2YxMTQxN2I1MGQ3ZGE3ZDcxMWQ4NDdmM2I4MDUwNjMgbGVnYWN5LXRydW5rCisyNTQ0IGJhM2MxZjk1ZTY2NWUzNTU2N2NiYjE3ODFkZjYzMGZjNzM2ZjRmMjkgbGVnYWN5LXRydW5rCisyNTQ1IGEzZDRkNDYxZDQ0MjFmYWViMzRhY2EyOGZjNjY0Mzc2MGE5NDFkZTUgbGVnYWN5LXRydW5rCisyNTQ2IDAzOWFlZTZjYmQ3ODZhYmY1MTJjY2JhMjA5MGJmNDkwNzU5ODExYTMgbGVnYWN5LXRydW5rCisyNTQ3IDA1OThmNGYyNWQwNDRkNjJhYjNlNzIzY2M2MzIwNjE2OWJiNTdhMzYgbGVnYWN5LXRydW5rCisyNTQ4IGYwMWFlZTYxNTViM2EyZmYyYTNkZjk5M2FlMTI1NzYwZDc4MmE4YzIgbGVnYWN5LXRydW5rCisyNTQ5IDMxZDUwOWU5NDI3MTA1OWYxMmQ2M2M3MTMxYzBkNTgwMjZkODc5NGUgbGVnYWN5LXRydW5rCisyNTUwIDU1YmY2NjQ0NWM4NWM4MGYyMjdhYzQ5YzMxYTNlODhmOWY4MDVlOTcgbGVnYWN5LXRydW5rCisyNTUxIDE3MmFhMmMzZTczNDBjMWU3NDM5ZjNiN2UxYmEwZjNmMGNjYTZmMDYgbGVnYWN5LXRydW5rCisyNTUyIGNhZjg0NjZkY2M5YzM1NzdjMWViNjE5MTQ2N2ZlOTRmMTViMjQyNTcgbGVnYWN5LXRydW5rCisyNTUzIGYzM2EzZjY5ZGZjYjU5YmQxOTg2NDBhNjI0Nzg5ZTYyMTdiMTYzMzEgbGVnYWN5LXRydW5rCisyNTU0IDU5NjA5YjNhZjk3OGEzOTcwMTZjZDM1YmFlYTJkMTVlNThjM2ZhZmEgbGVnYWN5LXRydW5rCisyNTU1IDgxNTQzODUyNDhkODE3NTdkZTkxMTg5N2IyN2Q4YjNmMWZhMGRiMzAgbGVnYWN5LXRydW5rCisyNTU2IDY1OWI4ZGJmNjk1YzUxMWE5OTU1ZTljNzdkNDJjNWZmYTk5ODlmYzcgbGVnYWN5LXRydW5rCisyNTU3IGMyNjJmNDIxYTQ0YzUxYzRmYTg5NzU0MGQ0Mzk1NGUxODExYTk5MzcgbGVnYWN5LXRydW5rCisyNTU4IDRjZGNjMTZiZDA4MDBmZWMwYjI4MTRlOGMwMDlkZmRjMGQ1ZjIwMjMgbGVnYWN5LXRydW5rCisyNTU5IDBhYzEzNTdjZDg5ODllM2IzNjU0MjI4ZTE2Njc3YmRhMTY2MmEzOTkgbGVnYWN5LXRydW5rCisyNTYwIDFlNGU2ZGYwNzE4ZTAzODM2YTViYjY5M2VjZjM4MDVjNDJjMDcyNDQgbGVnYWN5LXRydW5rCisyNTYxIGQxODlhMmY2ODFhNmRmMzc1OWEwYTQwMjZiZDY1ZWQ3NDEzMjIwYTAgbGVnYWN5LXRydW5rCisyNTYyIDBjNWU0ZTEzN2RlNmUwZjM2OGFiNDg5ZTY0NDYxZWY4YjA0MmNiZjAgbGVnYWN5LXRydW5rCisyNTYzIDliZDI2ODBkMTZiYzM2MTcwZjBmMmM5MDNmMWZiODc2NTQxMDc3MDcgbGVnYWN5LXRydW5rCisyNTY0IGQ3ODMyYWY2YWJhNjM0ZTVlMzNhZGI0ODE1ZWQ5MDdmOWIyODgwY2UgbGVnYWN5LXRydW5rCisyNTY1IDljZDM4ZDFhYzM5MTlmMzZjMGEyNjNmY2FlNDg3ZjNmMDQxMmFlOWMgbGVnYWN5LXRydW5rCisyNTY2IGQzZDMyODY4MDMyOGRlN2Y4NjJjMTEyM2I2MjNlOGM0Yzc3NWQzNjcgbGVnYWN5LXRydW5rCisyNTY3IGU2MjhkMDljZTIyZmViZGRiYzVmZWZhYTIyMzI2MjAyNjY0ZWE3MWMgbGVnYWN5LXRydW5rCisyNTY4IDliM2Q1NTc2NjVhOTE4MDI1NWI2ZjU3NzNlMDkyNWY2ZmE4MDIyNDcgbGVnYWN5LXRydW5rCisyNTY5IDk1MjEzM2U4OWJjNzI1ZWJmYTQ5ZjM4MTYwOTYzZTA1YTIyYzc0ZjQgbGVnYWN5LXRydW5rCisyNTcwIGI1ZmU2NDgyMDcyZmVmYTRjYjQzYjcyYjEyY2ZmNWUyZjZkM2U2MjQgbGVnYWN5LXRydW5rCisyNTcxIGZkMDYxZGFlOWU1NzBkOGZhODAzOGNlY2U3MGJhY2VmNWUxZmY2N2IgbGVnYWN5LXRydW5rCisyNTcyIDBmMzUzYWZjMjg3MGQ2ODQ0NzcyOWRhMDc0MmQ0NDExYzViYmVkMjcgbGVnYWN5LXRydW5rCisyNTczIDRlZjMxZjVkM2Q5MjdiNGI3MmJmMTMxMDFmMzg2NGVhZjYzMjI2OTEgbGVnYWN5LXRydW5rCisyNTc0IDJhZmYzN2I5ZTIwZWNhMDk3ZDhjOWFjOTBmYzZjYmZkNDQzMGM2OGYgbGVnYWN5LXRydW5rCisyNTc1IDRjNDViY2JlM2JiM2JiZjcxMmYyYWViOTUzYjQ1ZTQ1ZDNmMzk4ZmYgbGVnYWN5LXRydW5rCisyNTc2IDRmMTU3YjMyNGM1MDViMDYyY2Y1MmEyOTZhNGFmNGQyYTk0MzU2Y2IgbGVnYWN5LXRydW5rCisyNTc3IDJiMDM0YzkwYjZkOWE2NzhkZGM0Nzk5MzljNDFhMTE4ZmM2MGFjNWUgbGVnYWN5LXRydW5rCisyNTc4IDE2M2UyOTA2MGYwYmYzMmYxMTliN2QxMjEyOGUxNzQxOTlkNDE0OGMgbGVnYWN5LXRydW5rCisyNTc5IDcwMzIzY2JhM2MxMzY5ZGEyNGMwMzA5ZmQwNmMzM2Y5OTM1MjNkNzkgbGVnYWN5LXRydW5rCisyNTgwIDVhOWFhMmFiYTA4ZTk2ZDAwMGU4YzNmZmQ4MWE0M2Y5YzAwNTkxODUgbGVnYWN5LXRydW5rCisyNTgxIDM5NDMwMTM0MDY5MzM3MmJiOGMwZmUzOTI3MDcwYjIxMzAwMTQyYWUgbGVnYWN5LXRydW5rCisyNTgyIDU1ZWU3NWYyZmVhNGFjZGFkNjRlZTM2ZTJjNGNmZWFlYjViYmIzNWQgbGVnYWN5LXRydW5rCisyNTgzIGVhNWNmMDliYmYzNmI0NjdjYjc4ZjdjYjM3NjQ3MjJlMDUwYjQ1YWMgbGVnYWN5LXRydW5rCisyNTg0IGM4ZDBhNGE0MWYwYmE3Y2U4MmZkN2JjZTc1OWFmMTE4M2M0YzFiODIgbGVnYWN5LXRydW5rCisyNTg1IDJkY2VjYTlhMDcxMzkzM2MzNjFlNDFjNmIzZDIwZWFjYzVjNDQ5NzUgbGVnYWN5LXRydW5rCisyNTg2IGQxZWUwZmIwYzBkZjU2NWEyNDA1NTEzN2UzZWM2NjBmM2RjMDczYzIgbGVnYWN5LXRydW5rCisyNTg3IDYxYmJjNzIzMGM3MTY2ZTU2NWVkMGFiZmEzNTUzMGVmZTM0NGMyZGYgbGVnYWN5LXRydW5rCisyNTg4IGEzYTg0MmIzOTkxMzJlYzgwZWRlNTg5NDJmZjE5YjRiNzFhN2FhYzQgbGVnYWN5LXRydW5rCisyNTg5IDNjN2I3Y2FhOWRhNTY2YWFjZTYxMGQxMWVmZmRmZTg3YTQxOTA5NzkgbGVnYWN5LXRydW5rCisyNTkwIGJiMzA4ZTdiMDAzOTRmYmM5YzdlNDQ1NWFlY2U0Y2E1MDEzOTgzOGQgbGVnYWN5LXRydW5rCisyNTkxIDBmOWViYzYzZGNiNTYzODlhZjFiMWJmZDcxM2ViMTBiOTk3NmRjYjAgbGVnYWN5LXRydW5rCisyNTkyIDA4YjFhODljOGYwNjM1MzRjNzkzOTc1NzQxNDM3OTQxZTczYWZlNTIgbGVnYWN5LXRydW5rCisyNTkzIDc5NDBiYjM5MWE2YWNiMmY5ZjVlMDM2ZTFmMGU1MmQ3ZTk0ZGY3YWQgbGVnYWN5LXRydW5rCisyNTk0IDhiZWRkYzE3MDM5NjY4YjM0ODA2OTViYjNjOGQyYjk1YmY1NGY3MzUgbGVnYWN5LXRydW5rCisyNTk1IDQ4N2I3YzYyYWU3NzRhMzg1MTMzZGIwMTE1NmQyNzE3YjU2ZGUwNTUgbGVnYWN5LXRydW5rCisyNTk2IDJkZTM0Yjk2MDJlMGVmNjVlNDhkMTRlMzllZDYwZjE3NTUyODQwNTYgbGVnYWN5LXRydW5rCisyNTk3IDFlNmM4ZjJhYTEzNmRhYTI3NTQ3NjEzOTNlMGM5MjIzZDBmZmZhZTUgbGVnYWN5LXRydW5rCisyNTk4IDQwMmE1OWFkMjQ5M2YwYjk3ZjMyYzZmZWIxODlhNTVlZTFhNWEzMzIgbGVnYWN5LXRydW5rCisyNTk5IDY0YmM4YTI4NGZiM2ZjZmQzNmExOGJjZDJmZTZiNTI3MGY0ZGYxZjMgbGVnYWN5LXRydW5rCisyNjAwIGMxMmQwMzNmNjU5NGU2NjQ5ZmZjMjRiODFlMDdlMGJhMDE2OTk3YjkgbGVnYWN5LXRydW5rCisyNjAxIGUyZGIzMzQxZDY4NjBlZTY3NmI1YmQ4MjY4NTBjZTYyNjQ3YmRlZTMgbGVnYWN5LXRydW5rCisyNjAyIDYwMGJmYTlmYjhiNzZlNWE5YTQ3NTAyMWJkZmYzNzAzYTUyNDM5M2QgbGVnYWN5LXRydW5rCisyNjAzIDE3ZjRjZGYyODk1OWY2MGEyNDQ5NGVmNmYxZTQxMDVmYjQ5ODA5MGEgbGVnYWN5LXRydW5rCisyNjA0IDlmODViZWIxZjdjODQ5ZmUwMTY5NzJkODgwYzhhMGJhMjNjYmZjMWMgbGVnYWN5LXRydW5rCisyNjA1IDFmNjRmNTVhNTJlODY1YWE3YWE5NjdiOTE5ZmE0MGJhNzc0ZTQyYzggbGVnYWN5LXRydW5rCisyNjA2IGMwNjgzZDY2NzZjNjZiYzU0YmE5NmVmYzAxOTc5OThmOGYwMzdkZGMgbGVnYWN5LXRydW5rCisyNjA3IGMzMDdkMTBiNjgwYzZhMzk4Y2ExNTZmN2MwY2Q0MDZjMjJlMmVhMWYgbGVnYWN5LXRydW5rCisyNjA4IDhmNjM4OWRiYzFjZjdiNGZhNzE4Mjc5OTAzNGFjYzhjOGZmMDhjODggbGVnYWN5LXRydW5rCisyNjA5IDMyNmI4OWVhNjcxMzhiYWM0NTMxYzU5ODA2MjJmODVlOTIyYmY3NTQgbGVnYWN5LXRydW5rCisyNjEwIGE0ZmVhNjkxMjBkODE0NzczMWIyNjk0OTIxMTBlNzZmYTUwZjIyMzkgbGVnYWN5LXRydW5rCisyNjExIDIzNDk3ZGI2Njg3YWExZGFjZTE5NmRjNjE2NDJkMDMxZDg3YWM5ZDMgbGVnYWN5LXRydW5rCisyNjEyIGIyZGNlMDFjMzY2ZTZhZTU0NTYxYTdhOGU4NjUyNmQ3MTY0Njg3M2EgbGVnYWN5LXRydW5rCisyNjEzIGFlMWE1NTVlNjVmYWM2NDY1NmJjMDJlYTVkZGFhY2JiMzcwZTA0NmMgbGVnYWN5LXRydW5rCisyNjE0IDM0YWJjYTE4MmYxOGUxYjYxNjllYWUwODJjMzFhMzI4MWU4ODFhNDUgbGVnYWN5LXRydW5rCisyNjE1IGE1ZjBiODM5MGM4Nzk2ODFkYmIyODQ5NGNiZGViOGNlMWZiZDhmODggbGVnYWN5LXRydW5rCisyNjE2IDQ2NGQ5ZDkzZjM0ZTkxYTIyOGZmNjVkYWY0NDBkOWVhOGNjYzcyODQgbGVnYWN5LXRydW5rCisyNjE3IDkyNzE4ZTRmNWFkYzFiMjg0Yzc2OGVkZTJlYWM3MGJkODRlMmI0ZTAgbGVnYWN5LXRydW5rCisyNjE4IGU4NjY3YTdkMzE4ZGRlZTA4NWQ4ZTI0ZThkNzA2ZTQ2YThhYmEzMzEgbGVnYWN5LXRydW5rCisyNjE5IDFmZDQ3MTJjYzY2ZjdiNmFjNTk4MDQ1YzgwMDVmMDU5MTc4NjU0NDEgbGVnYWN5LXRydW5rCisyNjIwIDA3MzZhZWZhZmM2MDE4YzE2NGZmODBkOGUzYzI4NGI4Yjk1MTY1NWUgbGVnYWN5LXRydW5rCisyNjIxIDdhNjBmYWEzODExMzUxYmEwYjQ2ZGE5MGU2ZTkzOTQ3MTg2NmNiMmQgbGVnYWN5LXRydW5rCisyNjIyIDc2OWNmZmY0YWU1ZTk1MDQxYWMzOTY0NjZjMDVkMTFkZTYzMjU5ZTYgbGVnYWN5LXRydW5rCisyNjIzIDY3OGE3MzRjMjQ0ZGM5MGNkODMxNWVlM2I3NDIzYzBiZjRiYzM0NjggbGVnYWN5LXRydW5rCisyNjI0IGM5N2Y0YzZiYTZjNjVlY2M2M2YzMzViZjcwYWNmNDEyNjE3MmFkMjcgbGVnYWN5LXRydW5rCisyNjI1IDkwMzAwY2EyMTIwMDU5MjA2NmJhNzhlMjdlOTQxYjJhYzY3MzJhM2MgbGVnYWN5LXRydW5rCisyNjI2IGNhMDM5MWE4MTJmODYzNTg5Mjk1NDhjNzVhYmFjOWYyMDdiOGU1NmYgbGVnYWN5LXRydW5rCisyNjI3IDkwY2JjYjBiOTdkYzdkNDk4NDQzNTI0YzUyMmI5MTE5M2NlOTUwZDMgbGVnYWN5LXRydW5rCisyNjI4IDFjYjc4YjYyNWIwNzIzY2I0OTU1MmRkNmFjNzgwOWNlNWE0YmE0ZmEgbGVnYWN5LXRydW5rCisyNjI5IDEwZTNkMjYwNDEzMTA5YTlhYmQzN2ViNDU3NmUwZTUyZjI1MmRkMmMgbGVnYWN5LXRydW5rCisyNjMwIDQyMTMwZTcyMjBhZmZiOTRkMGMzM2Y4ZmU2NzdkNzgyZTgwMmNiY2MgbGVnYWN5LXRydW5rCisyNjMxIGExMDI1Y2JiYTMwZGFkMTdmOTk1NzQxYWE4ZDViNDUyODhkOWNkZDcgbGVnYWN5LXRydW5rCisyNjMyIDFiZTIwODc2OTJhMjQ0NDY0MzQ3MzEzOTJlMzQwZWE2MmJmYzg2M2QgbGVnYWN5LXRydW5rCisyNjMzIDFkNGIwMzM5YjgzZGE4ZTNiY2EwNDRlZTIyNmRmNTJkZDQxYzlmN2EgbGVnYWN5LXRydW5rCisyNjM0IDRhN2YwZjA2Y2QyN2M0YjI5Zjc2NjYzZjA2NzM4N2IyYjM2MWY3ZjAgbGVnYWN5LXRydW5rCisyNjM1IDE5MzY1MjAxZGNmYTg1YWVhZTNkOTQwNTk2NGViYmRmODI5NjgwYWEgbGVnYWN5LXRydW5rCisyNjM2IGUyYzM0NjNjNGQ5MTg0MzAzOGZhNjBhYjc3MmJmMzcwZmYzY2I0MDQgbGVnYWN5LXRydW5rCisyNjM3IGJlYzk2M2Y5OWJjOWY1OTFhZDFjMmUwOWVlNjI0NTJlZWE5YjlhYTAgbGVnYWN5LXRydW5rCisyNjM4IDQzNmM4MTAzMDg1MzM4NjczM2Y2YjIxYTNkYzQ5N2I5YmZkOTRmMmYgbGVnYWN5LXRydW5rCisyNjM5IGMzYmVlNWE1NzIxZjdlY2Q3ZGFiZDk2ZDg4ZGY1NGY4YTBjMDI1NDYgbGVnYWN5LXRydW5rCisyNjQwIDMyNDk2YTBkMDFmNDg4YTY1ZTc1OGVlZjQ1YzNlNWIzMDJlZGIyNTAgbGVnYWN5LXRydW5rCisyNjQxIGM2NGM2NzAyNTQ5ZDZiYTJjZGI5OTA4OTVmNGZmZmNjNzVmZmY0MDMgbGVnYWN5LXRydW5rCisyNjQyIGRjMDQ2MzQ1M2E2NDM3MWJhYTAzODFiNTNjMmZiMzhhOGQ2NjFjZjkgbGVnYWN5LXRydW5rCisyNjQzIGVlODk5YTgxNTcwZDA1MDRjYTgwYWExZGQ4MmRkMzQzNWNkZWQ3MDQgbGVnYWN5LXRydW5rCisyNjQ0IGNmYmM0Y2NlMWE0Mjc3NjI5OGY2ZDYwMmY0NTc3OTFkODM5OGY1ZDkgbGVnYWN5LXRydW5rCisyNjQ1IGRiODIwZGEzY2UwM2VkNjcxZjZhY2MyNDk0MjAyNDU4YzM2Zjc0MGMgbGVnYWN5LXRydW5rCisyNjQ2IDNiMzg1YmRhMzhmODkxNThhN2YwZTAyYTE5NDllNTU4MWE5NDk5MTUgbGVnYWN5LXRydW5rCisyNjQ3IGM3YTJmNTYxM2Q2NjQ2OTE5NmJhODA3ZDNiODQyMjExMmM5NGU0NWIgbGVnYWN5LXRydW5rCisyNjQ4IDc3YjgwYTkxZDM1N2MxZDk1ZDhlN2NkNGNiYmU3OTllNWRlYjc3N2UgbGVnYWN5LXRydW5rCisyNjQ5IDkwZjM1ZmNmOGVhMDFkNzA4MjlkYjU2ZWJkYWNkMmFkNDNmNzE0MDAgbGVnYWN5LXRydW5rCisyNjUwIGEwZmJjN2I2YTQ4NWY5OGM5MDcxZDI4Nzc5NGYxZDI0ZjFlNjNkZDcgbGVnYWN5LXRydW5rCisyNjUxIDAyM2M3ZjY5ZDI0MDAyYzg2MzkzN2I4NDNlNzdhNDNlNmI0ZjAyZDcgbGVnYWN5LXRydW5rCisyNjUyIGI5MjY1ODBjOWMyODQxODYzMTgyYTA4YzE0NzkwODI5ZDgxM2RkOTEgbGVnYWN5LXRydW5rCisyNjUzIDkyYTEwYTFlMTQ2MzAwN2MwMzU4Nzc4OTFkOWFhYTI2MDUyOWQzMzcgbGVnYWN5LXRydW5rCisyNjU0IDU3NjY3YWIxZTE5NDFkMDFlZWJjNGM2ZWJlNmQ3N2FlODhjZTEzZGQgbGVnYWN5LXRydW5rCisyNjU1IDRjMjExZTgyODZiNWM2MjgyZWE0NTI3ZDg1NWNiMmM2MjQ0MjQ5OWIgbGVnYWN5LXRydW5rCisyNjU2IDBhYzlkNWRiNDFjOGZmMWZlYmI1MTBiZDM0M2EwNTNiNGIzNDcxMGYgbGVnYWN5LXRydW5rCisyNjU3IDBhYzM5MmI3Zjc2ZWFiZWFkODg0MTcxN2ZlZDEzNTBhNTAzY2FjNDYgbGVnYWN5LXRydW5rCisyNjU4IDJjZTZhMmEzMTg4NjNkZWUzZWRiYWY5MDYzOWJhMzJjNjc1ZGM2NmIgbGVnYWN5LXRydW5rCisyNjU5IDU2YmIxMDY3YTg4MDZlZDJjOTEzZGU5NDZkNmY1YmQxYjlhODE4MjYgbGVnYWN5LXRydW5rCisyNjYwIDgwZTJlNWQ2N2I0OTY2NjUzMDlmMTE2NWVhMTRjODc5NGRhZGQ3YjMgbGVnYWN5LXRydW5rCisyNjYxIDdmM2ZhYWZkODNlZDM3Mjc1MjlkNzFkYTgzYzA0MGQ5NTY1NTdjN2MgbGVnYWN5LXRydW5rCisyNjYyIGRkYmNkNTMyYzExNGRmNzViZjczZTMwNzNkZWE0MTY1ODU1MmEzYzAgbGVnYWN5LXRydW5rCisyNjYzIDY3ZjZmNzE5NDNjMTYyMjlkYTc1YTM2NzY2NjNkNjA2Mjc3MDY4NmMgbGVnYWN5LXRydW5rCisyNjY0IGUxNGQ0NjQ0MGVhNzEzOTlmZmYxNmY3YzA1ZDFhYjc5NGY4YWNlNjMgbGVnYWN5LXRydW5rCisyNjY1IGViMDM5NzdiYWVlYjRjZjMyODdhZmM3YTI3NmE4ZTkyNTUyZjA0YmUgbGVnYWN5LXRydW5rCisyNjY2IDA5NWQ5Y2Y0ZTNlNmUyNGIxODBiMGNjNGZmZTFjMGM4NjkwODYyZmUgbGVnYWN5LXRydW5rCisyNjY3IDlmNzE2MWRiNTY2OWU5MWI1NjgzNzRmZDZiZDA0NDVmYTY1NDcxYjcgbGVnYWN5LXRydW5rCisyNjY4IGZiZmYyZTdjYzQ5ZGY4ODdiNDlmZDgzZTQ1NTFmNDM3OWU5ZGRkYTIgbGVnYWN5LXRydW5rCisyNjY5IDc5ZWExM2I3ZGYyYzE2Mjc1MGE0MjdhMGI0ZWM3M2FlMjI1ZWI3Y2UgbGVnYWN5LXRydW5rCisyNjcwIDViNWY4NmVlNGY3OWI3ZTU1MjFkNmU2MmQ3NjhiODA3MGEzMWFjYjUgbGVnYWN5LXRydW5rCisyNjcxIGNiY2RmZGEwNWJjNGUyMmFmNTZkZmRmMDFlY2E3ZDdiOGYzNmYzYTQgbGVnYWN5LXRydW5rCisyNjcyIDc2NmNjODIwZjUxMWUxMDE5YWI3YTA5OWE1NGJlZmY3YWY5ZjMyMDcgbGVnYWN5LXRydW5rCisyNjczIDg0MTRlMWY5YTVmZTRjY2IzNzNlMjVkMzE4M2FkZWJmOTIwODFjYTEgbGVnYWN5LXRydW5rCisyNjc0IDk4OTZkY2YwOGUxNmZhZTA5ZTYxYjU0NTIxY2ZiMmU0ODQ1N2I4ZmUgbGVnYWN5LXRydW5rCisyNjc1IGI0NmQ3NmViZDlhNzJlNTAzMmY0MTU3N2IyODY4ZTRiNzNkMDA0YzIgbGVnYWN5LXRydW5rCisyNjc2IGY4ZDUzYjZjZDQ0MmU4MDBlMjI5ZWQxZmY0NTkzMGQ5NzM3MDAxOWYgbGVnYWN5LXRydW5rCisyNjc3IDY5Zjg5NzM5OTM4ZjlhNjA4ZmRhZTY4MDU0NTRiNDAzY2QzNGZmOGEgbGVnYWN5LXRydW5rCisyNjc4IDQzYzIyMzE1OWIyODI3Njk3YzgwODlhZGUxYzY4ZGZlMDVjYWZhZjYgbGVnYWN5LXRydW5rCisyNjc5IGRmMDM0M2FjOGEyMWFiMTU4ZmE0YjEzOTk2NTM3ZWFjMDYwMjkxZGMgbGVnYWN5LXRydW5rCisyNjgwIDA0OGUxMzcxYzQ1MDZjMWUzZTIyNjBiOTYyMzVhNTk1ZDgwZjAwODQgbGVnYWN5LXRydW5rCisyNjgxIDAyZGU3YThhZTI2NzYxY2Y1YzY3ZGNkMjkyMWMwY2UyZjY2ZDRhMjIgbGVnYWN5LXRydW5rCisyNjgyIDJkY2RiMDAyM2MzMjBlZTUyZWU3MzM3YzY5OTIwNzBhNTlmOTU1YmMgbGVnYWN5LXRydW5rCisyNjgzIGJlODk4Y2MxNTgwMDZhMTg0NzgzOTUyNDNjMzVhZWI1NTNiMTBkNTQgbGVnYWN5LXRydW5rCisyNjg0IGQ5YjZiMDM2OTg2MGM0NWM0YWVlY2NjNzZjODkwNmIyOWIxNDI3YjYgbGVnYWN5LXRydW5rCisyNjg1IGIzODI1Y2U4M2M4N2YyNDI5ZGZmODQ1ZWM3NDM1ZjRhNzZlODdkMGEgbGVnYWN5LXRydW5rCisyNjg2IDc0MmRjODM4MDM4YmZjYWNhZDdiMDNmYzBhMDY1ZGIzMzYyMDJkZTUgbGVnYWN5LXRydW5rCisyNjg3IDJiMGFkNTJhYzM5Njg2Yzg5ODQ5OWUzMGY5OWVhMWZhMzU4Mjk2NzMgbGVnYWN5LXRydW5rCisyNjg4IDQzNTdhYjY4YzdkNWI2ZTljMGQ2YTE2Yjc4ZjViZjMxMGRhNmE4ZTEgbGVnYWN5LXRydW5rCisyNjg5IDNkNDY3MTA4YjAwODNjNGM1NmJkNWE0NzQ3YmFlYTcwMzIxMjViZTUgbGVnYWN5LXRydW5rCisyNjkwIDFlZmRiMTUyMjFkZGQxZTk2MzU3MGZiNzFmMjgxOGJlMGM0YjY4MDkgbGVnYWN5LXRydW5rCisyNjkxIGRjMmVjNDlhMmFkMjliNmQ5NjMwMTNkZTUyYTFhODM1ZTBmYzcxZjMgbGVnYWN5LXRydW5rCisyNjkyIDgzMzEwNzZjZmUxNTJkZmNiOWQxNjY5ZjkyOWQ0NzkxZDViOTM2MzggbGVnYWN5LXRydW5rCisyNjkzIGZlZTM1MDc4ZWY0MGEzZDViNTRmZTA4YjMzNDk5NzI1MzMwZWVmOTggbGVnYWN5LXRydW5rCisyNjk0IDhiNGEyNzRlNTQ2ZGNjYThjYTgwYmMxNjE5MTIxODQ2ZWI2MDllZTggbGVnYWN5LXRydW5rCisyNjk1IDk2YjIxMjhmMDBhZWRjMjRhMjQ0YTZlYWUyMDFhZWU0ODg3ODI0MTIgbGVnYWN5LXRydW5rCisyNjk2IDI2OTZiNTZkZGFjNDk1MmZjZDM4MDJkMWUxODI0MzNkZWYxYTYzNWEgbGVnYWN5LXRydW5rCisyNjk3IDI1NTcyOGE4NDFkZWYxYjVlOTI4ZTBlZDYxZDY0Y2NhNDg2MTczNjMgbGVnYWN5LXRydW5rCisyNjk4IDkwMTk4NDg4MjRhMTBkNmUxZTE4ZWE4YmI2NzY4NTEwODJjYjU5NjMgbGVnYWN5LXRydW5rCisyNjk5IDlkMDI0MmI5MmNhNWZiMDc3Y2VkY2MwMGYxNjEwYWVkZWY5Y2MwMjUgbGVnYWN5LXRydW5rCisyNzAwIGVhNTE0Njg2NmJjZjE3OTc0NTQyN2VkM2ZhOWI5OWJiNzAwZGY2ZjQgbGVnYWN5LXRydW5rCisyNzAxIDQ4ZWFmNGZjNTNjYjBkODAxMzI2MjFhMzg2MTVjNjFhZWFmMGVlZTEgbGVnYWN5LXRydW5rCisyNzAyIDVmNTkwYWI0NTI5NTc3NmIzYzg0N2ViMjc2NGJlNDc2MTlmZDY5NDUgbGVnYWN5LXRydW5rCisyNzAzIGI1ODYxODljYzFmNWU2OTlkYjM3N2Q0MGE1MGM0ZDJkNzY5NDQ1MTQgbGVnYWN5LXRydW5rCisyNzA0IGQ1ZTFjNDk5ZjAxMzdkZjI0OTE3MzE3ZjFlYjYxODhjMDNkYTczMTggbGVnYWN5LXRydW5rCisyNzA1IGQwYmFhODMwMDAwNTYyNDJlZjIyNWQ4YjEwNGYxNmE2MjYyMTJhYjUgbGVnYWN5LXRydW5rCisyNzA2IDlmMDZjNjY4OWYwZDEwYTQzNzI1YTQ1YjU1MDMxYzk2YWJhYWViYzQgbGVnYWN5LXRydW5rCisyNzA3IDkzN2NiYzBiZTZlY2VkYjVjMGI5MjdiYTUwMzg0YjAwYzk1ZTVhODQgbGVnYWN5LXRydW5rCisyNzA4IGUxOThjYzk4YTRmZDBlN2UyZjMzOWE0MmU3NDdlZDIwMmRjODcxZDYgbGVnYWN5LXRydW5rCisyNzA5IDgzMDQ2NjY0MTYwZTk5MDkyZDMzMjY1ZDgxYjZiODYzOGJlYmQ0YTMgbGVnYWN5LXRydW5rCisyNzEwIDRlZmZmNmNlYTkwZjY5OWQ3ZjY1MTBhMjk4OGUwYjZiMDVlZGQ2MTkgbGVnYWN5LXRydW5rCisyNzExIDc2NmNlYzUwZDc2NmQzZjdiNTVkNTI2ZmJkMjgyZWZmZTZkNGUyMmIgbGVnYWN5LXRydW5rCisyNzEyIDVhNjFmODI3ZjQ3YzNhMzliNGFlYWM1MzkwMTYzOTMxYWE4ZDRmODYgbGVnYWN5LXRydW5rCisyNzEzIGMxNThjODM0NzY1NDY1YjczNzM1YzM3NGVhMjRlYTQ2YjMxYjQ5MmYgbGVnYWN5LXRydW5rCisyNzE0IDI2NDMwNmI2MWI4M2ZlZmNmMDM0Y2Q0MTFlYTczNmRiYWQxMGUwNjkgbGVnYWN5LXRydW5rCisyNzE1IDJlMjg3YTE1MDNiMjUyNjQ2ZjRkODBjZjliNmM3M2NkNWQ2ZTkwMjQgbGVnYWN5LXRydW5rCisyNzE2IDA3ODBiOTVhNjYwZWM4MjA5OGYzYTg1NGUyNjJiYWNhOGFiNTkxZTYgbGVnYWN5LXRydW5rCisyNzE3IGFkZmEwODJmNTIwYTYxNjZmNmQzNWY3MzAxYzU3MDE4ODE0YTc2MDIgbGVnYWN5LXRydW5rCisyNzE4IDFlZjYzYWRmNGZjNWJhNjg1NjQ3NDMxMmUzMmUwYzFjMGVhZTYyYmEgbGVnYWN5LXRydW5rCisyNzE5IGNmYjUzMzIyYzlkMTE0MzJkYTUyZTNmZjE5NjE5NjVkYjg0YmQ0M2IgbGVnYWN5LXRydW5rCisyNzIwIDY4M2VkYjBjNDQ2MzQ5Mjk4MzlmNjNhNWNkYzM4ODdiMzViNTkwOWEgbGVnYWN5LXRydW5rCisyNzIxIDA2MTRkODg3ZDEwYWJkMDJiZTE0ZDg5MTU5ZDlhNGQzZTI5Nzk2YmYgbGVnYWN5LXRydW5rCisyNzIyIDQ0MzQzOTNiNGVkZTY1NjY4NjU4YjQ2YTZiNWU1ZTIzNGY4MWYzMjQgbGVnYWN5LXRydW5rCisyNzIzIDE3MDY4YTZhMGFhNTE3YjZkMDNhZWU3OTc1NjRhZThhNTU1MGFlZTEgbGVnYWN5LXRydW5rCisyNzI0IDczZTI2NmJmN2FjNmIwM2I5NzJiM2IzMDZjNjdjY2ZmYWU0MGY1ZjMgbGVnYWN5LXRydW5rCisyNzI1IGY5YzA3ZWU3OTMwMjJmNjVjMmJjYmNiNTdjNzIxMWQzMmE2MjA4ZTUgbGVnYWN5LXRydW5rCisyNzI2IDVmYWY5M2ViOTI1NmUzMzYzNDNjYTJkMmY2OWIyNGU0MjU4ZmQ0YjIgbGVnYWN5LXRydW5rCisyNzI3IDVhMWY5YWRlMTUxMjQzMjBhMDM0OTIwYjNjNTExMDdhYWNhMTgxOWQgbGVnYWN5LXRydW5rCisyNzI4IDhjMTc5ZDAyMzU4M2NkODYxZDcxMWZmMzEzNjk0ZjFkMWY1NzY5YjcgbGVnYWN5LXRydW5rCisyNzI5IDkyNTA5ZDMwNGU0NzljNjBhN2FiNDM1NWVkZjhlZGVhNWM3ZDhhZGIgbGVnYWN5LXRydW5rCisyNzMwIDZjMzZjMjczZDU3ZDRkOWUwMjIxYmRjZGJlZDIyODMyNTQ1ZTBmZDAgbGVnYWN5LXRydW5rCisyNzMxIDM0YTc2MTA0NmRiZDY5ZjY5ZGQzNzUxZjU5ZDE4MWViMTEwMjZhMWMgbGVnYWN5LXRydW5rCisyNzMyIGE1YzI0NTkyM2IzMTBkNTY4YTBhZmVmYTBlNGY2NmMzMTEyOTUzZmUgbGVnYWN5LXRydW5rCisyNzMzIDA4NmJkYmI2OTczYmYzNWI1YzRlZjk4M2UwYWFlMDk0ZDhjNDRiYTYgbGVnYWN5LXRydW5rCisyNzM0IDRjYjU1MzU2NzA2ZjNiZmIzZTE0ZWU1ZmYyMjgyOTVhNzZkZmU1NjIgbGVnYWN5LXRydW5rCisyNzM1IDAzYjlmMTUyYWRiNjk1MzI1YzU5MzExMWExMTgzMzY3ODNjN2YxODkgbGVnYWN5LXRydW5rCisyNzM2IGRlYWU4MGUwN2E4MWM5OGUyNWIyYzEzZjJjMmFmYjY4NTY1ZTgxNGYgbGVnYWN5LXRydW5rCisyNzM3IDNiOGY0MWY5NmViNGM5NTMzMzY3NDEwYWNmMzJjZDQwZjAyNjllMWEgbGVnYWN5LXRydW5rCisyNzM4IDJkYTkzNGVmMjdjMDM4MTNhYmQxYWZlMDgyOTFjZDg3ZDE0ZGFmN2EgbGVnYWN5LXRydW5rCisyNzM5IDEyZWNlYTZlOTU1YzEyYjEzM2Y5NGUzNmY0MGEyNDI1ODM1YTAwYzQgbGVnYWN5LXRydW5rCisyNzQwIDY4ODQzNDZjMDRhMDQ4YjMwZjNjNTMzNjViY2I3YzRkOGFjMTczMmYgbGVnYWN5LXRydW5rCisyNzQxIDMxNjlkMzhmNjc3NDJiOTgxNjA2MmM5YWQ5NGI2OTU5ZDhjOGNlZWIgbGVnYWN5LXRydW5rCisyNzQyIGJhZTE0OTRmMmVjODEwMjMwY2I1NzQ1MmIwNjAzNDhjYmVmNDIxYTcgbGVnYWN5LXRydW5rCisyNzQzIDVmNzFmMTY2MDc5ZDQwMWRmY2NmNWI0Y2I1MTM3NzYyNjZiNjgyZmMgbGVnYWN5LXRydW5rCisyNzQ0IGM3MmYyNmFjNDkxYmE4ZDgyMjhlYjhmNmY1N2I4MTZkMzVmN2YxOWUgbGVnYWN5LXRydW5rCisyNzQ1IDM3YWE2N2YwODY3YzEwZjQ2MzdjN2UwMGY0NGNlYjM0ZjJhYWE0Y2MgbGVnYWN5LXRydW5rCisyNzQ2IDM3OTA1ZmUxODkyYTI3ZGQ4YjdjNDM1ZjQ0NDQ0N2Y0M2EwMmM0MzUgbGVnYWN5LXRydW5rCisyNzQ3IGRiZjQwODkxODIwMTYxZWI1ZTQ3ZDA1YmRlOWJmZjYzNmJkMDk0MGYgbGVnYWN5LXRydW5rCisyNzQ4IGQxNTQ3ZDZiYjViNWNmNjExZjhmNzczMjVlMjk0MGMyMjJjZGJkYTAgbGVnYWN5LXRydW5rCisyNzQ5IDdkMjRkZTY0M2ZiNTBjYWFiM2QyNDA1OTk1MmVhYzJiNzYzNmUxZjUgbGVnYWN5LXRydW5rCisyNzUwIDYwNzc3MDRkYWI3YTNmNzliNzE2NGU0ZDE4MTJiNjU0Y2RkYTMxYTggbGVnYWN5LXRydW5rCisyNzUxIGYxMWZhZThlZTFlNDI5ZDgzNmJmMjc5NDQzN2JhYzMyMWM1MTFlMGEgbGVnYWN5LXRydW5rCisyNzUyIDkyNzZiM2VlMzkzNjdjNjFkMjFiZDE0MmNkOTdiZGQyZmRiYjczZjkgbGVnYWN5LXRydW5rCisyNzUzIDk1NzJhN2QwOWRmZjQ2MmViZWFkNDljMTA0MjMxYTNhNGVlYzMyZDIgbGVnYWN5LXRydW5rCisyNzU0IDA4NjgxNzYzNjVkN2ZhYzE4ZDllNmU0NDc3OGIzOTQ4ZTcwNDc1ZDEgbGVnYWN5LXRydW5rCisyNzU1IDQ3YzQyZWE2N2E4YmQ4NTMxNDRkOTlkMGJhOGNlNzYxYzU2M2U2NzMgbGVnYWN5LXRydW5rCisyNzU2IGY5Y2RlZWJmY2I2NzBjMzA2ODg1NTg3OWY0OTcwOTgyOWQ5ZDg0NzIgbGVnYWN5LXRydW5rCisyNzU3IGUxOGYxZmEzOThhMzBiM2UyNWNhZmUzYzY4NzkwODBlMmIxZDdmNWEgbGVnYWN5LXRydW5rCisyNzU4IDgwMGNmNDA4NmZiMzNkODBjYjNiNjc3MTQ5YmYxNWI2ZjAzMjJlNTkgbGVnYWN5LXRydW5rCisyNzU5IGIyMDRmMzFmYmM5N2U2MGRkMTc0MzdiMjQ4MGQ5ZTY4ZWUyYTk1MTcgbGVnYWN5LXRydW5rCisyNzYwIGEzNDc5MzNhNmQ5MjJmNjA1ZjUwMmU4Y2QyYWYyOGViM2ZkOTVkZTMgbGVnYWN5LXRydW5rCisyNzYxIGQ0OWI2YTY3MjViZDg3ZjUyMTlhNzNkMWYwNzE1NTM0MWM0NGU3YTMgbGVnYWN5LXRydW5rCisyNzYyIDhjZGQ2MmJiNTE1Y2JhYTBjMTc4Zjc2MThhNjJjOTZhZjZkZWFiODMgbGVnYWN5LXRydW5rCisyNzYzIDVhMzUxOTUzOThlZjUzZmJkZDU3ZDZkNmJjODg0MWQ4ZDJlNDYwMDkgbGVnYWN5LXRydW5rCisyNzY0IDM0ZDY3ZGE4OGU4NGI4NGI2ZDhlZDc3MzcyMjEyMTlkZmJiMmQ0YjAgbGVnYWN5LXRydW5rCisyNzY1IDhhMjRlZjQ0ZGZiMGE4YjQyYjY1MTQ1OGY1NWVkNzUwNzkwZjYxZGQgbGVnYWN5LXRydW5rCisyNzY2IDZiMzYwNDE1OWNhOWIxMThjNjcxMDJlNjUyODRhZDUxNTQ2NjRlYzkgbGVnYWN5LXRydW5rCisyNzY3IGM3NjNmYzY0ZmNhYmJlMjVjYjRmMzJiMDRjYzU3YWYwN2JkNzBlYTQgbGVnYWN5LXRydW5rCisyNzY4IDAyMTRiYmY0N2JmNmRlZTQ2ZWQxNTMwMDcwZTQzMTkzODYyMzJhZWMgbGVnYWN5LXRydW5rCisyNzY5IDkyNzZjMjYyNWQ2NGNiZmQyNDJhM2JmNDVjMWJlZWZjMjMwYmZmMTYgbGVnYWN5LXRydW5rCisyNzcwIDBhZDViMzVlM2FkODlmODYzNTc2MDQ2OTZmYmFmYWEzYTczNWU0MmEgbGVnYWN5LXRydW5rCisyNzcxIGRjYzZkZTFjMzdhNGY1MzUyNmUwNjI1NDQyODU3NmE3Yjk4ZjRlMjggbGVnYWN5LXRydW5rCisyNzcyIGUyNWUyNjU2Yzg1MzdiMTE1ZjM4MjYxNDE2ODk2ZTQ0YTZmZTYyNzUgbGVnYWN5LXRydW5rCisyNzczIGY4MjU4Zjg0MTA0NmU4ZDY0OTIwMjVjMzRiZmE1Mjc5MzM5ZjJmNjMgbGVnYWN5LXRydW5rCisyNzc0IDQwNWEyZmVjNzQ1NDFkZTcwMzNjNGMzMWRiNDYzODQ3ZjllMGI3M2QgbGVnYWN5LXRydW5rCisyNzc1IDExZTg2MjcwZWQwZGNmZTdiNDdjYTNlOWE0YjM4NDM5YTBiZjM0YTUgbGVnYWN5LXRydW5rCisyNzc2IDQwYTBlYzk5NGM1NDllY2M4OTNiM2I3MmU4MTUxMjQ1YjJiMDNjMDYgbGVnYWN5LXRydW5rCisyNzc3IDhkNTcyNTQ5NGVkZTczMTYwYjA3NWYyNTAwZmQ0N2EzMTdhMmMyOTggbGVnYWN5LXRydW5rCisyNzc4IDc1NWJiOGVmY2MyZDUzMzQ5YzhlMDlmYWMzNzAwZTE3YjdiNWYxMWEgbGVnYWN5LXRydW5rCisyNzc5IDE4OWVlM2JlZWJiNWU2ZjZhNTFjNDZhYWM3OTQxZjA4N2FmM2QzNzkgbGVnYWN5LXRydW5rCisyNzgwIGFjN2Q2NDQ1M2FhOWYxNWVhOTg4ODhhNTFiOGNlMzVjMWRmN2VmZTQgbGVnYWN5LXRydW5rCisyNzgxIGQxZjZlYzc4OGFjZjdiNWZjNDcxNWEwMDc2YWEzYjM5YjY4MTczZjkgbGVnYWN5LXRydW5rCisyNzgyIGNkZWMzZTg4MDUzYjNkZjU1Zjc3NTEyOTg0Mjc1ZDMyNmFjYjI2MmIgbGVnYWN5LXRydW5rCisyNzgzIGEwZDRjNWVmMWQ1ZDc4OTVmZGM1YmRmNzQ2NGVkNDMzZDI0MGVmMWQgbGVnYWN5LXRydW5rCisyNzg0IDliZTY1OGQxOTNhOTg5ZjkyMzEzMDI1Y2NjZWI3ZDM1NmMzZjlkNWUgbGVnYWN5LXRydW5rCisyNzg1IDBlNDM2MjAwYmYxMjg4NGNlMWRkNTViNDg0NDU1NDU1YjEwYzFkZjMgbGVnYWN5LXRydW5rCisyNzg2IDdmYjVkZWZjOGY2ZmFhYTU5NWVjMWI3Yjg0ZDZhOTM1MWUxYjVhNjcgbGVnYWN5LXRydW5rCisyNzg3IDIxMmFkMTU4YTgwNjJlMmY1MzhkYTNkMDI1NGI4MTE0MDdlNzBjZmYgbGVnYWN5LXRydW5rCisyNzg4IDFkNjVmMjhjMGFhOTdjYjg1Mzk5NTY3ODA2NzMwNDdlZTgwMzgwNTQgbGVnYWN5LXRydW5rCisyNzg5IGQ0MjBhZjljMWI3NTdhMmY4MjYwNTJhYmYxNGVkNTZiYjQ2NmU3M2QgbGVnYWN5LXRydW5rCisyNzkwIDQyYTZiOGUxMzkxYTA3ODViZWJhYjY0ZjJmODFjY2QwYzA4YTE1MTAgbGVnYWN5LXRydW5rCisyNzkxIDA0ZWQ0NzY1YjE3Y2U1MzBkZjE0ZGQ5NGVjOTQ1ZDZkZWVkMDMzNDMgbGVnYWN5LXRydW5rCisyNzkyIGY1YTJiYzM5ZTEwZTJhNGQ0ZDg4NzM3M2IxZGU5NzQ4YTU3YTRkZGUgbGVnYWN5LXRydW5rCisyNzkzIDBjMTkzOGYyZTBjMDJmODRiNWFkNjJhMWNkNTUzOTUzNGI5MGNkMTIgbGVnYWN5LXRydW5rCisyNzk0IDFmNmM1OTNlZGE2ODdiMjlkNTIwMzFkN2ZlMTczOTYxMjVmNzQxMGIgbGVnYWN5LXRydW5rCisyNzk1IDg4NTk5NmExYTYzMTg4MGVmNjI4YmFjYWRjZGUwYmI5ZjgzZTE5MDQgbGVnYWN5LXRydW5rCisyNzk2IDc4NGEwOWE1MjM3NWM0ZTU1MmU4ZTNmODNlZGM5NzNkYzc2NTkyZmYgbGVnYWN5LXRydW5rCisyNzk3IGQ1YmI4ZmU0M2RmMmYzYmZiMzNlNzk4ZGNiZjg5NTg4ZGNiNDI5Y2YgbGVnYWN5LXRydW5rCisyNzk4IDNjYjY4NmM0OGNkZGRmODFiZTQzNDJiYmRmYWNlNzE0ZWZkNjhmODQgbGVnYWN5LXRydW5rCisyNzk5IDlkMDFlOThlZDg0OTNlMDc2NmI1ZTVmZjEyNTk4MDRmNzE4OWJkNTQgbGVnYWN5LXRydW5rCisyODAwIDJmOTVhMDFkNmMxZjNjNjQ1NmRmZDJhZDQ3ODczZmM2MDRmOGE2YWMgbGVnYWN5LXRydW5rCisyODAxIDBiMzgwMDBmYzgyM2RmNzgwZjdkZDg2ZDNjZjYxMjIyODI5OTdmZGIgbGVnYWN5LXRydW5rCisyODAyIGIxNjJiMjc0MDBiYzUwMmRkMGVjYzc0M2RhYTBmZTUzODY4NDlmZTYgbGVnYWN5LXRydW5rCisyODAzIDBlZmI4ZGRmNmMwZWQ3OGJjYTAzZjM1NjVhYzJiMWQ0MjhlNjUyY2MgbGVnYWN5LXRydW5rCisyODA0IDAyZDNmMTYxYjdmNTU3MDJhZGZhNDk1YTAwMWNkMWE3M2JmNTZiMWQgbGVnYWN5LXRydW5rCisyODA1IDU5ZjkzMjViYjhlY2MzZTVkYjQwYjBkNjUwM2NjNzkxNzQ2MzhhMGIgbGVnYWN5LXRydW5rCisyODA2IGMwZTdiMGI5Yjc1MDdkNDMyZjFlMDVmNWFkMWU3YTg3NWEyZTRkNWQgbGVnYWN5LXRydW5rCisyODA3IGM4MzJhMmIwZDQzMzBiZDgzMTUyMWZmZGZhY2FhODNmODc5NGUzNGIgbGVnYWN5LXRydW5rCisyODA4IDhiYmExNGY3ZGI4YTFkY2ZlOTczMDhiMmNjNTAzMDQzMzBlZjg5Y2YgbGVnYWN5LXRydW5rCisyODA5IGY2Y2M3YWEzMWRlNjllOWE3YzYyMWFiYWVhN2VjMDVlZjA2Y2E2MTUgbGVnYWN5LXRydW5rCisyODEwIGRhNWIxNDMzNDY3YzFjYTVmNTk0ZWQyNzljZjkyZDYxMjU5NDVjZTQgbGVnYWN5LXRydW5rCisyODExIDQ4OWZlY2MxZGEyODZhYWMyZjc4M2FiMzM1NGE1ODY4NmZmNjY2MmMgbGVnYWN5LXRydW5rCisyODEyIDczZmU3YTFhNWRkNDJlMzY2MjRiMTEzNWY3NmI4MmI4ZTBiMDc5ZWIgbGVnYWN5LXRydW5rCisyODEzIDA0NTdjNDQxYjA4NjA3NzlhNzE5ZTA1ZWE1Mjk1NjhhNzQyOWZkYjggbGVnYWN5LXRydW5rCisyODE0IDc0OTQyZWM3MDQzMGFlOGZiNTRmZDRmYTFhZTcyOTU0MGM4MzBhMjEgbGVnYWN5LXRydW5rCisyODE1IDJlMGQ2ODgyMDEzZWZmZGU2NDIyZGRhZWUwMmQ3NDllOGVlM2Q4YWUgbGVnYWN5LXRydW5rCisyODE2IGU3MjkzYjViNTcwZDlkNjE5MWIxMGFlNDgwZWY5YTQyNzU0ZmVhYzUgbGVnYWN5LXRydW5rCisyODE3IGY2Zjk4MmNiNTQwMTMyMmI0YzY4NjgxY2NhMDVjZDU4YTRjOTg5NTEgbGVnYWN5LXRydW5rCisyODE4IDNlNjI2YzQxM2JiZjQ4OGZjMjg4ZmZhYzE2ZjA5MWVlYTllNzRiOTggbGVnYWN5LXRydW5rCisyODE5IDViNTIxZmU0ZDFmNjQ5NmIwZDMyZjBjMWUwMzg5MzdmNzRiZDVkNDYgbGVnYWN5LXRydW5rCisyODIwIDZkMTU5OWJlMmI1NGUwZTQwMDYyYWViMDhjZTMxZWY3M2E2NTRhMGUgbGVnYWN5LXRydW5rCisyODIxIGQzNzcwYjFkYTYxMTUyOTU3YjRlYzI2NmMxM2QyOGQ2MzMxYjM2ZTggbGVnYWN5LXRydW5rCisyODIyIDdlNWY0ZDlhZWU3N2JjNmRiYWZhZmI5YTk5M2JhMmMxOGMyNDM0YmYgbGVnYWN5LXRydW5rCisyODIzIGFhZmY2NTBkN2UxMzY2MGFiMWZkNmJkMzRiM2NjMDI4ZTdkMzQ4YjUgbGVnYWN5LXRydW5rCisyODI0IDVlZDZhZGJiOTVmMzU5MDMyZGRhZDYzZjUxOGRiMzhkNmQ2MjI0NzIgbGVnYWN5LXRydW5rCisyODI1IGUzYjYzYTk5MTRmODcwMjljMzQ2MzljZDhkMmFhYmJjYzkyNjUzNTkgbGVnYWN5LXRydW5rCisyODI2IDE4OTA3ODEzNjM1MTU3MWFmYTJkNDg2ZmQ5ZDI4YmU0ZDIxMDNmNzMgbGVnYWN5LXRydW5rCisyODI3IDI4MzkwMzc1YTJiOWFlNjY1MDE3ZjIwZjg2NDZhYWVlNmIzZWFlODMgbGVnYWN5LXRydW5rCisyODI4IDE2NGI1NmZhNjU1OGVhYWEyZjIxNmVlM2M0MjRhNzllZDE5ZTJlYWEgbGVnYWN5LXRydW5rCisyODI5IDEwNDk4NjdkY2ExZjk0ODNjYTc1ODg5NWVmNDkzOGFhZTgyN2IwZDQgbGVnYWN5LXRydW5rCisyODMwIGMyYmE4ODdkOTQ5MmIxYjNjNDVhMmUzODY5NzY5MzJjNzhiMjhkMjYgbGVnYWN5LXRydW5rCisyODMxIDJjZGRiYmVhOWJmYjMyM2M1NzI0OGRkYTJkNWFjYjE5N2Y0YTJmNzIgbGVnYWN5LXRydW5rCisyODMyIDEwMDAyZTFiYzUyNjQyZDg4ZTMwZmQxZTQ0MjQ1MGZkMDI3MjhlYWMgbGVnYWN5LXRydW5rCisyODMzIGZmZGRlN2ZjNzFjMWVjYjgyZDRlNGJlNjE1NTE3NmQ3ZGM5MDk3NTkgbGVnYWN5LXRydW5rCisyODM0IDcxZDQ5NjI1OWFkMzQ4ZTZkZTFjMzczYmY0NTgwOWZjMDVlMTAzMTQgbGVnYWN5LXRydW5rCisyODM1IDRlMmQyMzlkYzY0YzhmMTJhZWU5ZjI4OGUxYzdmMWUzYTRiZTZlZWQgbGVnYWN5LXRydW5rCisyODM2IDVhZmY5ZjhmZDI5OTVlZmIyYzBlNWYxYjUzNzUyZTg3ZGFmNjI2YzYgbGVnYWN5LXRydW5rCisyODM3IGUzNGViY2JiZGNhNmZmYTRiOWIwODQxYzI1NjYyNDRlZGVhNDBhY2YgbGVnYWN5LXRydW5rCisyODM4IDY0NDFhYTZhNDEyNjQ5ODRmYTdkYjE0NGY3MDQ5YzRmYjE3NDNjNWIgbGVnYWN5LXRydW5rCisyODM5IDIwNWI5NDdiMWQzYzI2Yzc2MDQ3NTZjODA5MTM3YjUxMTUwZTIyNjIgbGVnYWN5LXRydW5rCisyODQwIDZhNjAzNDJjMzEwNzQ4MzZhNDVkY2NjODI0MWNlNzU5OTUwNTA0MmUgbGVnYWN5LXRydW5rCisyODQxIDEwMmRlMzE5OTk4ZTE3ZTBkMWVhOTFlZmU1Nzk0MGYxNTEyY2JlNDMgbGVnYWN5LXRydW5rCisyODQyIDEzODZhNzJhZTYwNDdkOTc2MDUyMWYwMmRiOTQ3OTcyNWEyNzNjNjcgbGVnYWN5LXRydW5rCisyODQzIDc1NDRlYmFjNTY5ODc4MTZkYmU2MWI2YzRlNTI3YmI1MzQwYzUzODYgbGVnYWN5LXRydW5rCisyODQ0IDNiMDliNDBjZWYxZDA5ZmFjMTY1ZjU1NTViZDVjOGRkNTVkYTY1ZTkgbGVnYWN5LXRydW5rCisyODQ1IDkxMjZmNGNiMWNjYTQ3MDVjN2NkZTJlZjU0NGQyYjY1Y2E3MTRiZjAgbGVnYWN5LXRydW5rCisyODQ2IGNhMjhhM2E4MmJiYTg0ODFlMjQ4NzhlNzE0MTNiYTM3ZTBhNDU0N2YgbGVnYWN5LXRydW5rCisyODQ3IGQyNDRlZTAzYzU3NmU3MjRmYTVlN2QwNDlhYzNhMjUzYTU0YzQ0YWIgbGVnYWN5LXRydW5rCisyODQ4IGUxNWJlYTk3MWE1YmQ1Mzc5ZThiYjUzMzA2MGIxZjU4NjVlYTNiOWEgbGVnYWN5LXRydW5rCisyODQ5IDViNzE4NjNjODAxZDI5NmY1MjMyMjQ3NWMxNjY0ZThjYWMzNmM0MjIgbGVnYWN5LXRydW5rCisyODUwIDkwZWE1MDc4NjA5NTBhMzNkZDg2YmIyNjMyYzg1MzMzNWIxMjExMTAgbGVnYWN5LXRydW5rCisyODUxIDg5MWY5ODM1N2MwNDM1NWFkMmIyZDRlOWZkYzM2MTI0OWYzMmZmNTEgbGVnYWN5LXRydW5rCisyODUyIGQ2ZmE2NGNlYzQxMGU2MGMwYTg2NjI3MzYwNDBjYTA5NjBjMGU2N2QgbGVnYWN5LXRydW5rCisyODUzIDJkYmQ3ZTg0NGJkMDgyN2E0ZGIyMDI4YjEwODlhMmY5ZGM0YWJmN2QgbGVnYWN5LXRydW5rCisyODU0IGI0OWJhYWQ5YjY0MDZjNzc3NDlkNDE3ODk2NGVkYWI5NDA1NWE1NTAgbGVnYWN5LXRydW5rCisyODU1IDVjMThkNmM1NzgyNzQyZjI5ZmIxN2E0YWM3ZjY1MzY2OGZkMDI5OGIgbGVnYWN5LXRydW5rCisyODU2IDg3YWI5YzgxZTkyN2VkZDY2ZDhiOGM5MmVhMWFjYzhjNDJjMjE3NDQgbGVnYWN5LXRydW5rCisyODU3IGYzN2Y4YmM5MTkwYzU2YTBmNWM0MjE5YmE1NGE0Yzg1NzEwMjE4ZWQgbGVnYWN5LXRydW5rCisyODU4IDdjMDZiZjE1ZmQyYWJkZTEwOTQxMWQ4Y2EzMTgzYTVlYzkyYzkzMmIgbGVnYWN5LXRydW5rCisyODU5IDhhNjA2NDllNzk4N2U1MWE3NTY4ZjFkOWYyMjQ1NjBkN2YwZGI4OTYgbGVnYWN5LXRydW5rCisyODYwIDgyYzEyNTlhNGVmMzMwMmEwNzMxMjM2YmI5ZjE1MmExMTkxN2NkY2EgbGVnYWN5LXRydW5rCisyODYxIDE0MTE5YjE5NDhmYjQxM2I1ZDYyODczM2Q1Y2Q0YjA0ODA3Y2FjMTAgbGVnYWN5LXRydW5rCisyODYyIDA5Y2UwNGVmNzIzYmU3MWRlNWVmYjE4NGZiMDM4NmQ1ZTg5MTZiOTAgbGVnYWN5LXRydW5rCisyODYzIGY1M2RjYjlhMDRkNjM4MjUxN2ZhMDM0NGVjYjM5NjM0ZTA4YTc1MGQgbGVnYWN5LXRydW5rCisyODY0IDhmZmFlMGI0NmZkNDkyN2I4ZjE2OWQ2YTc3ZjVjZDZiMDFiNjFjYTMgbGVnYWN5LXRydW5rCisyODY1IGE4MDIyYjJhNzdlNjA5NmExYjU4NWFlMWRmNGE0MjYzZWNhYWMyNmQgbGVnYWN5LXRydW5rCisyODY2IDFlOGUzYWI2N2I0NTg1ZTQ4NWUyM2ZhZDVlMzZiYTIwZmFlMGNhYjEgbGVnYWN5LXRydW5rCisyODY3IDc1ODJlZDEzNjg0ZTQ5NzgwNjczYjNjMGMxMTQyMzM0N2I3YjEyMjMgbGVnYWN5LXRydW5rCisyODY4IGJmZGQ2ZTYyNmRkMzcwYWU0MmYyZWM5N2MyYWYzOGI5MWE3ZjZhYmMgbGVnYWN5LXRydW5rCisyODY5IDhiY2I1MGY0MzZmYWRlZTY4ODFhMmJlNWU0MmEyZWU2NDBjYzVmZjIgbGVnYWN5LXRydW5rCisyODcwIDcyMzZlMDJjNDU2MzEyNjc0ZWZhN2M3NmFjMDlmNzdjYjA3NDljNzQgbGVnYWN5LXRydW5rCisyODcxIGJjNWM3N2ZhODAwNjg3Y2ZlNzQwZmZjOTE0NzEwYjY0NTlmZGYzMGIgbGVnYWN5LXRydW5rCisyODcyIDNkOWMyMzEwYWZlODViYzc1MGFlNTZhZDQ1YjJlNWVjMWE1Y2M1ZGEgbGVnYWN5LXRydW5rCisyODczIDAwY2RiOGRlZGQ2ZjJhNTQ2MDA1ZWRlY2VmZjhmNTJmZTg2YzIxMDUgbGVnYWN5LXRydW5rCisyODc0IDg2MjQ1N2UwMjM3Y2E1OGY1ODgzNTcxZGI3NTE2ZDM0MGUwOTE5MGYgbGVnYWN5LXRydW5rCisyODc1IDI0MDNmYjZlYWVjNjIxYzM1OGUyYTVjZTU1MDI0ZmI0NzY3NjMwOTQgbGVnYWN5LXRydW5rCisyODc2IDkzZTIxNWRjMWQ2ZWYxZTJjN2UyMTZiYTJlMDdkYjYzMWM4OTY1MjYgbGVnYWN5LXRydW5rCisyODc3IDRkNjRhYmJkZjcwYTk2OTEyNjE2ZTNhNGI3MzRhODZhMmU3MDcwOTggbGVnYWN5LXRydW5rCisyODc4IDllOTE0NWFiYzQyYWM0NTRlNTg4ZTc0YjAzNjhiODYwOWUxNjc3MzYgbGVnYWN5LXRydW5rCisyODc5IDRkMmExOTllMTIwMmE2YjczNzg4ZTA5YTVhY2QxYjFlYmUwNjU1ODYgbGVnYWN5LXRydW5rCisyODgwIGNjZTA1YTQ3NmUwNDEyZWUwYzMyMjhmNTZhYWE2NGQ0MDU5YmUzYTkgbGVnYWN5LXRydW5rCisyODgxIGY3Mjc4YTA2N2ZiNDMwMzY1YjAxMjMyMTdlMmI1NmRiNmJmMzVlZDEgbGVnYWN5LXRydW5rCisyODgyIGQ4YjE3ZmFiM2E5ODNmMTI3ZTc2N2I5MDE2ZDA4YzhkZTRmYTI4MDAgbGVnYWN5LXRydW5rCisyODgzIDU3ZTk0ZWJhMjQ4NDhjYjgwNTdjMTBlYzdiNWY3ZWFkYzljMjM5OTQgbGVnYWN5LXRydW5rCisyODg0IGU3NTcxYTE4YmRlZjFkMDIxNDU1ZWQxZDJkZGM5NDlhY2E1MjNhZjUgbGVnYWN5LXRydW5rCisyODg1IDQ3NmJiN2U1Yjg1NDc1NjliMThlN2QxYjAwOGQwOTg4YjMyZmQ1NWYgbGVnYWN5LXRydW5rCisyODg2IDc2ZTQ4NzAxMjA0YmYyMzdjOTkxOTU5YTc2ZjRlMjU2ODYwYjFlY2QgbGVnYWN5LXRydW5rCisyODg3IGU4YzZmYTkxMThlYmU5ZWZmNmI5ODY2ODYzMTQ1OTU5YjhhYTlkYTMgbGVnYWN5LXRydW5rCisyODg4IDlhNzU0NDg2ZWYwYjUxMjFiMjZhMjU4NDRkZmY0NzNjZjcwMDA0OWMgbGVnYWN5LXRydW5rCisyODg5IDc2ZDkyZWJiNGQ4MmE3NWM1MDYzZGRmNThjNjAwYTUyMWQwZmNkZjkgbGVnYWN5LXRydW5rCisyODkwIDgyZGQwODFmMzgwZDU0YTc0OTQ4ZWIxOGM5MGMxNWJlMjA1NGRkNDIgbGVnYWN5LXRydW5rCisyODkxIGM4MTk1MmQ5N2ViZThhZDg3NjcyY2VjYmIzOTU5ZGRjYTdmYWU2YTggbGVnYWN5LXRydW5rCisyODkyIGM2NWZjMTcyZjE2ZGJiYTZmZGVhOWNkOWIxYmI4ZGRjM2M1ZmU1YzMgbGVnYWN5LXRydW5rCisyODkzIDAzMzhjN2M5ZjA4Yzk5YWJlZTljOGJiMjc0ZGIzOTJmMmI4ZTIxYmEgbGVnYWN5LXRydW5rCisyODk0IGYxNzlkOGQ1ZWU4Yzg1M2RjY2Y5NmM5ZDA2MTA5NDcyNjUzNzMwYmMgbGVnYWN5LXRydW5rCisyODk1IGNmNWNhYmZiM2Y3MWY2Yjc3OWIxNGNhODc2ODZmY2QwYzkwN2FiY2MgbGVnYWN5LXRydW5rCisyODk2IDFlMjA1ZDA4NzVmNjJkZjU5MmE1MzM5ZDIyMmRhMDExOTk0YzkyOGYgbGVnYWN5LXRydW5rCisyODk3IGVhMGJhZDlmZGY2NzM0ZTkwOTQzYzk1MjQ2MjE1N2Y5YTcxMzI0ZmYgbGVnYWN5LXRydW5rCisyODk4IDgyNDY1NzZlZjNmNTM1OTY5NTc4MTI0ODIyYjI3OTU1MjhmNTU4YTQgbGVnYWN5LXRydW5rCisyODk5IDU1YzYwZTdmMzFlZGEyNzNiZDYyMDdiZjVhMmEyMzEwMzlmOTk4ZGUgdW5sYWJlbGVkLTEuNS40CisyOTAwIDA3OGY5MDE1ZjE3ODkyOGM2ZDIyMzQ5MTJiOTllYzAxNjgzYjA1NDkgbGVnYWN5LXRydW5rCisyOTAxIGFiMWIzNDg2YjIyNjM4ZjU0YWY2YzliMGFmMjY2NDA3Yzc5MTVmZDAgbGVnYWN5LXRydW5rCisyOTAyIGQ3NzgyNDU0M2JjZTk2YTlmMDA2NDkyYmQ3ZTg4YzhmNTIzZjQwZTAgbGVnYWN5LXRydW5rCisyOTAzIGRjNjA5NTNmNjA1Mjk5MDdiODBmMGZjOGQ5YWRjMGYzMzY2MjBhN2UgbGVnYWN5LXRydW5rCisyOTA0IGY3MTAxMTBjZmQzOTJhNTZiYTNiZTlhZmQ5MmFjYjE5NjFmMzJiMjIgbGVnYWN5LXRydW5rCisyOTA1IGRiY2I0OWQ3NDJhMGNmZjJhYzMzODEwYjk0NzdlYzdjMTJiMzU0NDMgbGVnYWN5LXRydW5rCisyOTA2IDgzNGRkNGE3N2VlMjBmOTk5OGI1NmZlMjFkOGE5ZDg5NjJmYzg2MDEgbGVnYWN5LXRydW5rCisyOTA3IGM3YjIzY2M4Y2RlZGFmZjQ4NzBkZGY1M2YzOGJiYThlNDdkNTliMzggbGVnYWN5LXRydW5rCisyOTA4IDZjMGYxNjAwOGJkOWQ0MGZjYWM4YjUxODllMWVmODE1OGUxOTkyMTggbGVnYWN5LXRydW5rCisyOTA5IDQ1YzgxODkzOTRmZjBlM2U5ZDk2MjAzMzJhOGNhMTgzMjU0MjYwZTYgbGVnYWN5LXRydW5rCisyOTEwIDcwYzJmNDA0MzBjNzY5NWVmOTJkOGNjMzE1ZjMzM2I5Y2JjMTkzNGUgbGVnYWN5LXRydW5rCisyOTExIDMyMDg1ZWRkNzdhN2Q4OTRmMjgzNTcwYWJlMzUyZTEwMDExYTJlN2UgbGVnYWN5LXRydW5rCisyOTEyIGZmM2RiOTU1ZTYyOGYzNDE2NDc1Zjc2ZDQyYWQ5YmU0NTA4ZWZkN2IgdW5sYWJlbGVkLTEuNS4yCisyOTEzIGE1ZTY4ODFjZWJmMDljODE2YjgwNTk2MzBiNzhlYzU1MTExMzkyZTcgbGVnYWN5LXRydW5rCisyOTE0IDBkNDk0YmMyNDIwN2Y3N2E1NmVmNzQ1Y2E4NDg2MWJlOTE3YTYzMmYgbGVnYWN5LXRydW5rCisyOTE1IDhiZDIxOTRhZDZmOWE5YjUzZTg4MjQwOWEwZmNhYjk4NmM1NjI5ODcgbGVnYWN5LXRydW5rCisyOTE2IDhmN2IzMWE4YTY3ODVjODQ2NjcwOWY1ZDNmMzNmYThjYWRiNTYwYzUgbGVnYWN5LXRydW5rCisyOTE3IDZmYmIwM2RjNDM5ZWUyNjliMjQ3YWRkZmJlM2FhMGU1NDgzZjA2YWYgbGVnYWN5LXRydW5rCisyOTE4IDJkZDVkYmYyOGEyZGQ1NWQ0YWU3MmNhNWMxODRhMmExMTNkMzY0ZDIgbGVnYWN5LXRydW5rCisyOTE5IDVkMmY2MmFkOGRlZWMxMjIzZGZhYmQwYzU0ZTU1YWNjNmZiZjAwYmQgbGVnYWN5LXRydW5rCisyOTIwIDlkZTNkMDJhYTc1ZDE5YWI5Mjg4NzkyNDkwYmU0NTZkYzc0ZmMyYzQgbGVnYWN5LXRydW5rCisyOTIxIGJmYzY1NTA3NDUyM2QwYWJmNDA4Mjk5NWM3MTU0MjdmYTNhMjEyZGMgbGVnYWN5LXRydW5rCisyOTIyIDQxZGQzOTM0ODdmNTkxYTQ0Y2FhZWQzY2NkNjljZmE3NjRjYTFlM2UgbGVnYWN5LXRydW5rCisyOTIzIDliNjcxZjM5N2E4ZjI3MDM3MDk4Y2EzNjYxNDhlNGQ0MmRkZDBiODAgbGVnYWN5LXRydW5rCisyOTI0IDFkZmIwYzlkMDU3NjdkMGNkYjgwMzdhNmE3YzE1YTM4NjU5MjM2YWQgbGVnYWN5LXRydW5rCisyOTI1IDU3YzNlOWNmZWU0MGZmODU5OWQwMWQ1MWVmNjNiYzgwMTE4ZTdjYmIgbGVnYWN5LXRydW5rCisyOTI2IDA3ZDVkNjJhNGEyYjIwMTY2MGUzMDBiZDNjNmM2ZDU1NTk0ODQ4YzkgbGVnYWN5LXRydW5rCisyOTI3IDdkODRlMGRkZjNiZTJkYzg2NDQ0NGE4NjFkNjU3ZTg2MDlmOGNlODAgbGVnYWN5LXRydW5rCisyOTI4IDM4OTBmNDZkNmUzYjcxMTQ5YTYwN2U2ZTM3OWI5M2Q0NjUzNDM1MDcgbGVnYWN5LXRydW5rCisyOTI5IDA1Mzc2YzkyNmY1ODBkOTliMWQ4OWQ3NzcxY2VhZTcxM2QwODA0ZDMgbGVnYWN5LXRydW5rCisyOTMwIDdhMGQwM2U4YmQyOWJhZTZkOTg0YzM2MWNjMTVkMDRlNjdkMGMzZjYgbGVnYWN5LXRydW5rCisyOTMxIDY3NjAzMWJmNDRlZTFhZDUzOWE1ZDFlY2QwNjNiZTJkZWUxYjhiYmEgbGVnYWN5LXRydW5rCisyOTMyIGY4NDIxZGE0ZWZhNzZiN2Q1ZDU5ZDg3YjJiNDkwMTQ2YjcyMzgxMTcgbGVnYWN5LXRydW5rCisyOTMzIDc0NDY5NmJhODkyN2FlN2JjYWY4NWU2NWNlN2I5MjViNDAzNWIxMWQgbGVnYWN5LXRydW5rCisyOTM0IDJlODJkZDBmOGE5ZTM3ZGFjNzBhYzA2NjBiMGJlNDVhOGI5ODY0MzYgbGVnYWN5LXRydW5rCisyOTM1IGQ5NDVjZjMzYTY0ZjQ2OGFhN2JlYmQyZmRjOTVmNTliZWM1NDVhNGUgbGVnYWN5LXRydW5rCisyOTM2IGM3MjFhZmFiMGVmYTYxZTVhOGUyMjMzNmRkNzRlMGI4N2JmMTczODggbGVnYWN5LXRydW5rCisyOTM3IDdjOGFiY2UxOTc5ODRhOWE2MjI1YTk3Mjg2MjljOGQ1NjAxMDk0ZjYgbGVnYWN5LXRydW5rCisyOTM4IDQ1YjNhNzhmMjU2YmFlNmI0OThmN2MxZDYyOTc0ZGEyMTIyNWJmNzEgbGVnYWN5LXRydW5rCisyOTM5IDcyNTllOTZhMDRhOWQ0NTE0MGYwZDY2YzYyY2U3NmMwOWQyMjVhMDcgbGVnYWN5LXRydW5rCisyOTQwIGMwZDRjYWE3MWJkYWIxMmZiMGEzMzNhZjE0MGMxNWRmOWU1Zjg3MGUgbGVnYWN5LXRydW5rCisyOTQxIDYxNjMwMjBhOTY3ZGJjM2Y3Yjk1YTJkOThlZTI2NTVmMTU4NTZlZDkgbGVnYWN5LXRydW5rCisyOTQyIGIzN2FjOTFlMmEwZGE0YjgwOGJmMmI1NDE4YzI3NDA3MzRhYmQyMWQgbGVnYWN5LXRydW5rCisyOTQzIDMwYTY1MjEwMTU5OWZmMWU3ODZhOTBiMWIxMDE2NWZhNTRkOTNhOGEgbGVnYWN5LXRydW5rCisyOTQ0IDY4NTg0MzE0YTE1NDdmZGU4YTY3MGI2MGRhZGFiMGMwYzFhZGJjMTIgbGVnYWN5LXRydW5rCisyOTQ1IDAxMmUzN2YwNTAxOTBmMTkxMTY1ZjVhOTg5YmE2MTI2MjcwMGEzMWEgbGVnYWN5LXRydW5rCisyOTQ2IDNlMWZiZTg0Y2Y5ZmM2YTI2MzBhYTJhMDdkMTkzZGVmNDEyMDRhM2IgbGVnYWN5LXRydW5rCisyOTQ3IGZiZDY4ZTY5MjE0YzI3ZTA1OTUzODEzZmEwMTg0NTRmOGZmY2Y4MTMgbGVnYWN5LXRydW5rCisyOTQ4IGNkODFlNTY4MDRiMDk0MmIxYTlkNDUwNjBjM2Y3YzExZTFiMTFhZWUgbGVnYWN5LXRydW5rCisyOTQ5IDYzZDM0ZTg3N2E2OTcwOGYzZGViZGUxZTQ2NDUyNjg5M2Q5OGFiMDkgbGVnYWN5LXRydW5rCisyOTUwIDQ0MzE5ZGY2YTkxYzI5Njc3MjNmZWU1MDYwMDIxMjQxNWY3YTg1YWYgbGVnYWN5LXRydW5rCisyOTUxIGJhNGVjMTNjMGY5Zjk4MmVmOWI1ZTU0MmQzNWE2M2E1NTUxNjk1ZDUgbGVnYWN5LXRydW5rCisyOTUyIGY1NjVjZjdmOWFiYTgzYzFhODBjNzFlMTg0N2Y3MzU5NzIxZTMxOTkgbGVnYWN5LXRydW5rCisyOTUzIDE2NDg0OWY1NjEwNWZlMmMzMDYxOWE2NGFmZTIzZGM1NWM2ZWY5NDQgbGVnYWN5LXRydW5rCisyOTU0IDc3ZWU5YjIyMmZkYjRhNDg4ODU3ODVmOWFhNjE0MjViZjE1ZjhiNzUgbGVnYWN5LXRydW5rCisyOTU1IGRjM2I0NTVmNzYzMjc3MzViMDY1YmJlMDZlMDI4MDcxYzU0ZTE5MDAgbGVnYWN5LXRydW5rCisyOTU2IGNiZjBlZjk5OGE0YTFlNTdjZmRhZTY0ODdkNzQ3NGExNWNiNTliYWYgbGVnYWN5LXRydW5rCisyOTU3IGM3YmM1NjE0ZWVhZDViNGY2OWZiZDNmYmZjZmU5NjdkNWY5NjAwOWIgbGVnYWN5LXRydW5rCisyOTU4IDBjZDE5Nzk0N2Q4MTRlOWNmMjJiOWQ0NGE5ZjY2OWExN2QwNzA2NWUgbGVnYWN5LXRydW5rCisyOTU5IDEzNjA2MTg0MDYyNDM0MTUzOTlhYzY2MzMyM2Y5ZDk0MTM3ZGQ0MzAgbGVnYWN5LXRydW5rCisyOTYwIDNjOGI0NDJlNWUxZjJlNmNlMzNhYTRmNTVmZTdiODBkOTFmNDI2NDcgbGVnYWN5LXRydW5rCisyOTYxIGRmYjNiMGVjMWZmOTI5YTY4MjJjZDViYzkwYzAyMDNlNjMyOGM5MWMgbGVnYWN5LXRydW5rCisyOTYyIDc4NGM1MWNiMWI3OTcwYjdhMWM3ZTBkMGIxNGFkOTYwNTY3NzMzNjIgbGVnYWN5LXRydW5rCisyOTYzIDQ0ZWNmZjY4ODRiN2Q3MWNmNGM5ODBmZTlhMmFkODAwMzA1OWQwZGMgbGVnYWN5LXRydW5rCisyOTY0IDk2NTJmYzgzMGExMmQ5YWJhOWFkODZjMGM0YzZjODdlYmU5NmQ1YjkgbGVnYWN5LXRydW5rCisyOTY1IDNkNjU0MWEyZWNhNWEwNjI1ZTVmNDI0NDkwMDQxNTUyZDJhYzkyYTcgbGVnYWN5LXRydW5rCisyOTY2IGQwNTcwNGEwMDBlYmRlNWQ5MWEyM2NlMTYyZWFjYzczNDhmMTFkZTkgbGVnYWN5LXRydW5rCisyOTY3IDNhZGVjZTJjODU2NzA0NWRjMTk3ZmY5OGNkZjhiM2I0M2U1YWY2ZTcgbGVnYWN5LXRydW5rCisyOTY4IGJhYjJiZWJkMzVlNzM1ODFhZTRkODg5YzFlNWIwNGJmZmQ2YzFlMDggbGVnYWN5LXRydW5rCisyOTY5IDI1OTkyM2U0ZDdiMTdmYmNkMDBkNjgxN2Y3OWYxYTdiYzA3NDNkOGUgbGVnYWN5LXRydW5rCisyOTcwIDQzYzg2ZDFlYjIyYzI5NDY2NjAzMTgzMjhmOGQ1NTljMDU3ZDFlNjMgbGVnYWN5LXRydW5rCisyOTcxIDBjZmYzNmIxMTBmZTU1Mjc0NjlkMDZjMzYxMTg0MGEyZDdiZGRhODEgbGVnYWN5LXRydW5rCisyOTcyIDg1N2VkM2ZiZGMwZWEzOWQyYjA4ZjA1Y2Y2ODg3OWZhNjRhM2RlNzMgbGVnYWN5LXRydW5rCisyOTczIDM3NzNiNmY2ZGQ1M2JjZWI2YzQ3ZDFjNjdjNGU3ZTgyZGZiMDk3M2MgbGVnYWN5LXRydW5rCisyOTc0IGQ2ZTI1NzkyMzIzZmI2YmZjZTQxOTcyNmJhYWJlNzhmY2MxMWU4ZTQgbGVnYWN5LXRydW5rCisyOTc1IDk0ZWE2ZWE3ZjdkNTU2YWY3ZTU5NjVjMGFmMWQ1YTI5MzI1YTgwZmYgbGVnYWN5LXRydW5rCisyOTc2IDAxYTZiZjU3NDUyZTU1YWVkNzE1NzMzZmYwZDFmOGNlOGJmY2VmNjQgbGVnYWN5LXRydW5rCisyOTc3IGYwOGQzNDQ5OTI2OWRlMGU0OGZlY2I0ZWJhYzQ3ZTk0NTg4Y2IzMjkgbGVnYWN5LXRydW5rCisyOTc4IDY1MDhjOTNmOTQ3MjlhYWRlZThjNGIxM2M2MWY5YzJhZGIyMjAxOTYgbGVnYWN5LXRydW5rCisyOTc5IGU0YTI3ZDg0ZWEzNjc4MGYwODY0YjNkNTRjM2E4ZDc2ZWNiYTFhZGIgbGVnYWN5LXRydW5rCisyOTgwIGFhNjMzZjBkZWZhNjFlYTk1NWUwNGVlZWRiMzQ0ODZiNDU0ZTYwNjAgbGVnYWN5LXRydW5rCisyOTgxIGUxNTdjMTJjZDZlN2Y3NDkxY2UzMGZjM2M1M2FhY2VjNWFiZmMzNjcgbGVnYWN5LXRydW5rCisyOTgyIGExZTg0YjQ4NDQ3YWU2NDRiYmFkZmJlNWMzOTYyZTA3NzgyZGJiZTkgbGVnYWN5LXRydW5rCisyOTgzIDA5YzY5YTFlYzdiMDkyOGIxZmI5MTdjZGRjYzFjMWVhNWE3OTVmY2YgbGVnYWN5LXRydW5rCisyOTg0IDAxZmM1OTAwMzMzOWY3NzAzZjBmOWNhM2NiYzAyMDUzZGI4NjJmZDEgbGVnYWN5LXRydW5rCisyOTg1IDFlZWNmZmQ5Njk2ODllMDgwOTIyMjQ5YWRhMmQ2OWFhN2NlNTcwNmMgbGVnYWN5LXRydW5rCisyOTg2IGQxYjg5ZTg1Y2U3NTZkM2EyZDZkNmM3M2YxODI0MWEyYzQ2ODEyNjIgbGVnYWN5LXRydW5rCisyOTg3IGI4NGE2ZDRkZTkwZThmY2Y0MzRhMzFhZWYwZGU5ODFkNWRkNzE2MjkgbGVnYWN5LXRydW5rCisyOTg4IDFkMTk2NjlmNTY4NzY5NjQzM2E1ZjJjMDQ4YjkzZGFjY2FiOTQ5YTcgbGVnYWN5LXRydW5rCisyOTg5IDNjYjlhMmI3YjQwY2Y0MmRlMzlhNGE5MDA0ZmE1MzYzYWI3MGM0M2MgbGVnYWN5LXRydW5rCisyOTkwIGZhZjExYWRjY2ZjNjViZDBhNzQ4MTM0OWNhMTNiZWE1ZWExOGUwMzcgbGVnYWN5LXRydW5rCisyOTkxIDJmY2Q0MDFhNjIzMjNhNDY5NGRlYTBhZjJjYTg2Yzk1MzQ2ZDk0YzggbGVnYWN5LXRydW5rCisyOTkyIDIxYjNlYTZiZDMyZDMxNmUxZDliNjdmZmZlMDMwNDU4MmI2OTFmNTYgbGVnYWN5LXRydW5rCisyOTkzIGVhNTA3MmRlNzQyNzNhNTI5ZmEwMDY0MjMzOWZmYjRkNDkyZmEwZGUgbGVnYWN5LXRydW5rCisyOTk0IDNlYjA1ZDJkYzdiMTFmNDFiNTYzMWVjODkzZGU3OWJlM2I2ZDI0NmMgbGVnYWN5LXRydW5rCisyOTk1IGI0MTc5MjMwNzAwOGRlYjQzOGE5NzNhYjc5YTI3NzFlNjhhNzdlYzMgbGVnYWN5LXRydW5rCisyOTk2IGE3ODgyZmM2ZWEyNzA1YjhlMTUwZGJiYzFlMWZlOTI2NDJjOTNhZTEgbGVnYWN5LXRydW5rCisyOTk3IDZiZjY5ZjU0YTkwM2Q4OWU2ZDVjMTk3YTQ1M2Q3NGYyN2RjMjk3MzYgbGVnYWN5LXRydW5rCisyOTk4IGYyNzczYTZkYzUxZWVjYjI4YmRlNWJmNzZiMDI0ZDQ5MTk3NDI1NjggbGVnYWN5LXRydW5rCisyOTk5IDdiNGFkZTUzNmFmODhmNDUzMGVmNmU3NTEwYzlhNGYyNzdiMTY2NmMgbGVnYWN5LXRydW5rCiszMDAwIGI5OGFlZjIxM2RhZWE1NGMyMzBjODNjZDY0NDBlMzNmMmI4ZDgxNzUgbGVnYWN5LXRydW5rCiszMDAxIDA3YThjNDQzYjgzMTA0ODNjYzRlNTI2NzZjZGI1YmIxMjc2MWU5M2EgbGVnYWN5LXRydW5rCiszMDAyIDE3ODBlYjhmZGUyYjY0NWYzM2EwZWE3MzJhMWFkOWYxMDQ2M2ViMDUgbGVnYWN5LXRydW5rCiszMDAzIDQxMDFkZWQ3M2M1MmRhOGRmN2VjMDNlMGJmMWU0Mzk5YmE0NGZkOWMgbGVnYWN5LXRydW5rCiszMDA0IDNmODFiNWFjMmJiMjAyNDA4NTkyNTU3ZDAyY2UwZTc3ZmM0OWU3YWQgbGVnYWN5LXRydW5rCiszMDA1IDE0NjYzNWRlZjAxZWFiMmRiMzcxZGU5YTM3ZTEwMjkzMjBhNDg1NTYgbGVnYWN5LXRydW5rCiszMDA2IDM5OGMwMGYxMWEyZjQ1YzI3ZTQzZmNiMTk4MzM3ZTJmNDM0MWIxZjMgbGVnYWN5LXRydW5rCiszMDA3IGM1NWNiNzZiYzgzNzA4MWUwZDUxYWY5N2Y0OGIyNTBmZGFiOTA0NGEgbGVnYWN5LXRydW5rCiszMDA4IDg1MWFjNGE4YmU3ZDg4NWIzNzFjY2UzZWFjNTIxN2RlOThhZTc1MmIgbGVnYWN5LXRydW5rCiszMDA5IDE2NDBjYzNmMWE1M2Y4MDc1MmZiMmM4MGJkNTcxYzQwZGVlYmVlMDkgbGVnYWN5LXRydW5rCiszMDEwIGQzMWVjMTVmNWY3MTA2NDRhZTI3MzYyOTgzZjdkNmIwYTY5ZjQxYWEgbGVnYWN5LXRydW5rCiszMDExIGIyYTQxZjZhZWFjOTkwY2FjYmEyNGQwYTkyNzk0YjIzMDMwMjJlMzUgbGVnYWN5LXRydW5rCiszMDEyIGZlNmE1ZjI2NDBhMjc2ZDkwMTdmNWVkZjAwNzQ0NjFkM2JkOWI5NmIgbGVnYWN5LXRydW5rCiszMDEzIDg3MmEzY2FlZmYwNzI0MjAzNTM4OWQ2ZmU2NWYwMjgyYTIwMzZiOTcgbGVnYWN5LXRydW5rCiszMDE0IDRkZWZhYmI4Mjk2YjViNDcwNmQwMzdkNThhYTBkYzY5NTZiMGRiMzkgbGVnYWN5LXRydW5rCiszMDE1IDFhYzVjNjcyN2U4YzU4ZGM4OTk0MGI2ZjcwMDc3Y2IwY2JiYmIxMmUgbGVnYWN5LXRydW5rCiszMDE2IDRkNThlMmM1MDg4N2E1YWNhZThlODkyNTg0ZDU3YTY1YmE5NGNlN2UgbGVnYWN5LXRydW5rCiszMDE3IDM5ZTViN2UzMTU4ODg1ZjMxZWJhMzQwZGVmZjAyNWEwNzFkNWMwMzAgbGVnYWN5LXRydW5rCiszMDE4IDZmNDk5ZDVkYWRkZjdhYmNmN2U0OTE0NDI5NmRkZThhMjgxNzAwNWYgbGVnYWN5LXRydW5rCiszMDE5IDI1NDFiM2QwZjIwZjcxZTYxNmI5N2E5ZjBkZTI2MmE3MDMyZWRhNzcgbGVnYWN5LXRydW5rCiszMDIwIDhiYzE3MGU1ZWZlZTcyMTQ2YThjZTJjYzA5ODA3NWQ5MTdhMzhlM2QgbGVnYWN5LXRydW5rCiszMDIxIDZjYTFjNDRmZDUyNzhhMzI5Y2M3ZjE0OTU5MGNlM2EyZjdkNjViODUgbGVnYWN5LXRydW5rCiszMDIyIDZmM2ZlZDI1MGFkYjBmYTIyMjc3ZTFkOGFhMjVlZTlmZWZhMTZlZjYgbGVnYWN5LXRydW5rCiszMDIzIDM5MTM0Yzk5YzkyMzgzYTU3MTY2Njg3MGY3YWE3MjA2N2ZiZmYxMTAgbGVnYWN5LXRydW5rCiszMDI0IDc2MDk1YThiOTZjYWViZjBkZGNkMmI5ZWZhMzE0YTdiYzM3NzA4ZmQgbGVnYWN5LXRydW5rCiszMDI1IGJjZjAyMDUyZTkwOWU4MWE3YzRjMDA3OTZiZDNhNmI0ZGIyMmVhZTIgbGVnYWN5LXRydW5rCiszMDI2IGI2OGIxMGEyMTUyMDA5M2U4YTE2ZmIyNzM3ZTViOWRhNDBjZjc3YjAgbGVnYWN5LXRydW5rCiszMDI3IGU1OGY0MGMyZjI4NWNmNWUzNmM2MWRiMDkxNDUyNzc3ZjRhMzRkYzAgbGVnYWN5LXRydW5rCiszMDI4IDU4ZTg3NzBkYjQ0YWNkZmVkMWQ3NjdjYzZkMDEwODlmZDQ5ZTJmOTcgbGVnYWN5LXRydW5rCiszMDI5IDA2YzA3ODc1MGU4MDhhMzNiOGI3MzFjMjA1MzZlZmVlMzkxNWRkMTQgbGVnYWN5LXRydW5rCiszMDMwIGNiMTQ2YWE5ODdjOTQ1Zjk2MDQ3Zjc4NDY1ZTc2MjMxOGMzODA1MDAgbGVnYWN5LXRydW5rCiszMDMxIGIyZGI0YmYzNGZmOGNlNDk5OTVkYTdlODQwNDgzYmZlNzI5ODc5NDIgbGVnYWN5LXRydW5rCiszMDMyIDhlMzUxZmIyNTc3YTAyYjI2MmE3ZWY1MDk3NjczNWRkMmE1ZGIyOGYgbGVnYWN5LXRydW5rCiszMDMzIDk3MTVmZGMxZTQ2MmRmZDRmNTBmZDhjMGQ3YjNkYTcwMjBhOTNmYmIgbGVnYWN5LXRydW5rCiszMDM0IDIyMTY5ZmNjMTE4MjZkYTY1NzgxOGYxODJjMjZkYzM3MzlhMjU5NzUgbGVnYWN5LXRydW5rCiszMDM1IDdhMDEzZDY0NDVhNDg3NzU1YzQ5NjFjYTg3MjFmOWRiMzZmZGIyYjkgbGVnYWN5LXRydW5rCiszMDM2IGFhZGRmODIxZjVkNDMyY2YxMTZiM2FiYTQ0ODYxMTVjMzhlMDJlZDEgbGVnYWN5LXRydW5rCiszMDM3IDRjOWJjNTJiODA4MGQzOWNmOGRmNmZjZThiZmQ4MDgxYWRhY2VjOGQgbGVnYWN5LXRydW5rCiszMDM4IGNkMGU3ZjI0ZmFjYTFiMTFhYjU2YjVhMWI2MmQ4YWYwMDNjMDQxYTcgbGVnYWN5LXRydW5rCiszMDM5IGVjMzE3NDg4MzdkYzI3ODlmNDg3OTQ2ZjMyNTkxNzMxOTcxNDJmOTIgbGVnYWN5LXRydW5rCiszMDQwIDlmYjJhODY4ZWVlZWM2NWFlN2RjNjE5ODA0ZWQ1NTkxOGQ3OTFiNWEgbGVnYWN5LXRydW5rCiszMDQxIDM2MzIzMTQwZjc1MTg1NDVlMmJhZDgzNWZhZTk0YWQ3YTJmNTU2OTUgbGVnYWN5LXRydW5rCiszMDQyIGY5NDgxYWE1ZTc3NmI2NWY3YmQxZTI2YjU3OTYzZTE4NWI0MWQzYTQgbGVnYWN5LXRydW5rCiszMDQzIDM2YjkzNDMyNmZlZDVmNDU1YTdjMGZmYWQ4ZDMzNTA1MDllMTI4MjkgbGVnYWN5LXRydW5rCiszMDQ0IGFmZjgxOWNhZjIxYWY1NGNiNjYxYzY5OTBlMDE0MDliN2QzZDUxMWMgbGVnYWN5LXRydW5rCiszMDQ1IDAwZWJlNWZiMGFjNjcxMjBiNjA0ZTUxYTI3NjhjM2VkODBiMGE4NDUgbGVnYWN5LXRydW5rCiszMDQ2IGE1NGU0YTcxN2M5YmJlMjkxZDkyZTRkNjMwNTUyYjRkOWQ5OGU4ZWUgbGVnYWN5LXRydW5rCiszMDQ3IGMwMmMzY2JiOGFkMTA0Nzc0MWJjNmY5YjQ2MjJjZDcxZmNmM2ZkNTggbGVnYWN5LXRydW5rCiszMDQ4IDI2NmRlNTlkZThhOWQ4NzI4N2NiNDgzZGVlYzI4NmQyOGQwYTA4ZmEgbGVnYWN5LXRydW5rCiszMDQ5IDlhMDVlMmJmYTc0YzM2YmJhNmJlYjdkZTNmNTA2ZTZlZGYwZmYxOWEgbGVnYWN5LXRydW5rCiszMDUwIDE2YTE5NTM1NGIyYmVlMDZiN2ZjM2I1ZDlhZGIyNjUwNDRjODIxZDIgbGVnYWN5LXRydW5rCiszMDUxIGRkN2RmYWQ0MDRjZDgzMmRhNjM4ZjE3NTI5NGE2ZWZlOWZjYjdhZDQgbGVnYWN5LXRydW5rCiszMDUyIDE4MTQwOTE0MWExODA2ZDdiODVjMzE4ZmRiOTY0M2JlMjQ3ZWUwOWMgbGVnYWN5LXRydW5rCiszMDUzIGIzZDYzOWFkNjY2ZDViMjBiMGRiN2M1NTNjMDM3ZTQ5ZGFlNWQ2NmQgbGVnYWN5LXRydW5rCiszMDU0IGE4Y2E3MjBmZDkyMTllZWE2YmNlMzJkZjZhOTlkNWY5NWEwMTZmYTcgbGVnYWN5LXRydW5rCiszMDU1IDExZWE2NjljMjMxZTEzZDI0ZDQ5ZGIzOGM3NTMxMTAyOGYzNWM0NGQgbGVnYWN5LXRydW5rCiszMDU2IDIyNjU4MjgyMmNmYWYxMjJmMGVkM2NhOTViYjEyZmE5YzNkMTE1NGUgbGVnYWN5LXRydW5rCiszMDU3IDQ2Y2I2YmNlNGM0NzVmNGZlZmM1MjI4NDkxOTY2NmQ0ZmFjNDRmZjYgbGVnYWN5LXRydW5rCiszMDU4IGJlYmRjMWFjZjQ3NDU5Yjg2ZTVjZjk3NTAyZGZiMDYyMDE3MTc3Y2MgbGVnYWN5LXRydW5rCiszMDU5IDY0NTllMmYyMWJmNjgwNzczNzg4ZmMyYWZkNjYxOWI3MmQ3YzhlYWEgbGVnYWN5LXRydW5rCiszMDYwIDBjNWIyZDllNDVlODJkM2YyZTVlOGFlZDQ0YWY1ZmFjMmNiOTU1NjEgbGVnYWN5LXRydW5rCiszMDYxIGVmODY1MDI1MDhlMmYxMDg2YzFhMTg2YmZiMTNhNjVhMGYwZDJmMGYgbGVnYWN5LXRydW5rCiszMDYyIDk5YmZmMWRiNzVmNGEwZmYxZDY3MjlkZTFlYzk3YTZmM2FiMWU2NzQgbGVnYWN5LXRydW5rCiszMDYzIDU4YTc0MzhjMmU3ZWY5MjJiMzYzMTc5ZTA0NmYwODI5YmJhYWFkMGEgbGVnYWN5LXRydW5rCiszMDY0IGZlYTNmNTk0ZGY3NzQ2Yjc3NmExM2NiOTBmM2VmYTQ5YjNjYjdmNTQgbGVnYWN5LXRydW5rCiszMDY1IGE0NzkzYWUyNjY4MjZjMDEzNGM0OTY3ZDBhMGJiYzNhNjM4NGFjMTQgbGVnYWN5LXRydW5rCiszMDY2IGZkNjJjMjgwOTZiNTg3N2U2NmQ0YmVkN2MxZmE0NTkwMTA2NTc0NzkgbGVnYWN5LXRydW5rCiszMDY3IDdmN2JhNjVhMjgyNWMwZTQ2YjU4NGY5YjEyMjU5OTNiYzAzNTZiNWMgbGVnYWN5LXRydW5rCiszMDY4IGExZjViMjE2ZTM5MmNkOWI1MmE1NzU5YWM2Y2FiY2EzZWFiZjg1YTcgbGVnYWN5LXRydW5rCiszMDY5IDYzNzk4Y2RlNTgyY2Y1MzU2NDVhMjQyZWNhM2RhZTc5ZmMwZTM2MGYgbGVnYWN5LXRydW5rCiszMDcwIDMyMDEwZDM1NWZiNjEyMmU1MjU4ZWE5MjM2NjM0NjU4M2RiNWY1YmQgbGVnYWN5LXRydW5rCiszMDcxIDQyNGY1NWU2N2Q1ZDMyNGI5ODY1NzZhNWZkZTk4YzE0N2NmMmI0MjUgbGVnYWN5LXRydW5rCiszMDcyIDRkYTBiN2RhZTc5NmZmOGYyNThhZDZiN2E0NzBlNmZiOWNjM2RiMWQgbGVnYWN5LXRydW5rCiszMDczIGE0ZjJiMjIxMGIwMjExNTAzMGM1OWExNTc1Mzk2MTU3MzM5MzhkNmYgbGVnYWN5LXRydW5rCiszMDc0IDRmZDIyNjAyZTI4MmMxZWU4YmY1MTg3ZmQxNGZkMmIzYTg0YmE1NjcgbGVnYWN5LXRydW5rCiszMDc1IDYwZTMxMThkMzA3MzdiYjZmMjljMzg3NmE0YzgxM2M2MzA0ZDQ1OTkgbGVnYWN5LXRydW5rCiszMDc2IGU5OGE4ZjgwMjkwM2E2MjljNjI0NjYxNDE0Y2M4OWNhZTJhYzc2NmQgbGVnYWN5LXRydW5rCiszMDc3IDc0YjcxNmU5YWM0OTg2ZTQwMDM3ODkzODFjZDBkZDA0NGUyYTJhMzggbGVnYWN5LXRydW5rCiszMDc4IDM5ZWU3ZGU3NDc1MDJlOTYyYmRiNWM2ZTg3MmIzNjdmNDJiMGE1NWEgbGVnYWN5LXRydW5rCiszMDc5IGZlYzE4ZTI0NGQxNjg4MmIyOWYwZmQ1N2JlN2Q1MTFmZDJmZjI5ZjYgbGVnYWN5LXRydW5rCiszMDgwIGNmZGQ1NzVlZmZmMmI0MTU3MGIzN2JmYmZmODBiMmMzNzUxMDYzYTUgbGVnYWN5LXRydW5rCiszMDgxIGU0M2EyMjBjMjg3YWEzZWEyN2I3YzFlMTNmNWZjMDMwOTE5ZjVkZjQgbGVnYWN5LXRydW5rCiszMDgyIGQzYjI3ZmZmMDBiMmYxMjU3NWVjMWQyMTNiOGU2ZDdkMzc3OWVlM2IgbGVnYWN5LXRydW5rCiszMDgzIDhjNzNjNWYzYjZjYTczZGRiNjY5NGE2YzU1Mjg3MDk1MDZhZmY2ZDYgbGVnYWN5LXRydW5rCiszMDg0IDgwNzg4MzQ5OTZlY2M1ODJjYTQ0Nzk2ODMxNDBmMDhmN2YzMGIwMzQgbGVnYWN5LXRydW5rCiszMDg1IGMxMmI0NDVjZGFjZWExZDlmOWEwODhhZjYyMmE2YTViMWMwNGNhYWUgbGVnYWN5LXRydW5rCiszMDg2IDcyYWNlZWQzNjVkNDM1YjdjMjk1M2RiODQwYmNkMDU0NzY5OTgzNzMgbGVnYWN5LXRydW5rCiszMDg3IDI1MDVmZDIwZDI3N2E0NzllMGQ0ODc2NjJiOGRjMjM0ZDZiYWUyNjAgbGVnYWN5LXRydW5rCiszMDg4IDYxMTQzYmYwM2I0NDc2ZTA1ZTI3MmNjZTlkYWE5NTY2MTNhY2U3NDcgbGVnYWN5LXRydW5rCiszMDg5IGMxNTZkNDk2MGMyYjQwODU5YjFmMDU4YzI0ZmQxYjA2MDUwNDNlNzAgbGVnYWN5LXRydW5rCiszMDkwIGFhY2JkNGI1NThjN2VmY2ZiYmY3N2NjYmJlMjcwNjgzNDZjMDBiNDggbGVnYWN5LXRydW5rCiszMDkxIDg3MjVmYThkN2ZmOTFkODFhNDM2YWE2MWQzNGQ3MGY2Y2VlMjkxMjkgbGVnYWN5LXRydW5rCiszMDkyIGZmMDJiOTQ4YzlhODBiN2I5NTVjMTU4NDFiOTMxZjU0MTJiZDgxYTIgbGVnYWN5LXRydW5rCiszMDkzIGU1MDYxOTczMzJjMGMxYTExZWE0YmY5Y2RhNzI4MDYyZTg4NWYwNGUgbGVnYWN5LXRydW5rCiszMDk0IGQ4NjA4ZWQxY2MzYjEzYjk4MjMwMTJlMGJhZjZkOWE0NjZjNWUzZTcgbGVnYWN5LXRydW5rCiszMDk1IDYxNTk4M2YxYTNmZjNmZDU5MmUyNjczYjRhN2U0NGJiZTMzZjRlYmQgbGVnYWN5LXRydW5rCiszMDk2IGM0MzI3MzhjZjY5YWVhZTE1ZjU4OGNmYTZmNGYxMDlkZTc5NGFiMzIgbGVnYWN5LXRydW5rCiszMDk3IGQzODNkMjczMzE3NjVmOGQ2ZWNjMDZlMzFkNDUwYjRhZjM5YmNjMjMgbGVnYWN5LXRydW5rCiszMDk4IDQ4Nzk5Njc5NmVkYzZjNzMxYjc1MGNmOTU4NmQ5NTIxMzc5OGVlMTUgbGVnYWN5LXRydW5rCiszMDk5IGRjZTZkYzYyZjEwOGVlNDRiMDQ3ZWRiMDJiZjQ0ZDk5Y2UyMDVhYzkgbGVnYWN5LXRydW5rCiszMTAwIDU4YTRjYjE4ZjAyNWFmODZkOWRiM2QwOTFjOTFjNGY0NDY4NDQ3OGYgbGVnYWN5LXRydW5rCiszMTAxIDE4MzY5YmI5YzI0ZDA3ODc5ZjYwNWVmYTdlYzUxYTUwZjI5MmQ3YTggbGVnYWN5LXRydW5rCiszMTAyIDcyNDNhOTA2OTM3Y2Y3ODQ4M2NlZWRhMzUwMzRhNGQwMTZjNDMyZWEgbGVnYWN5LXRydW5rCiszMTAzIDg0NDQ4MmI2NDY3YWFlM2Q1OGM4MWE1MDU3MDVlNTIzYmE2ZWYyYjEgbGVnYWN5LXRydW5rCiszMTA0IGNkNDBlM2VlYmI0OTM5MGY0ZTAzNGFmMzExZGNiZTI2MWJjN2EwMTQgbGVnYWN5LXRydW5rCiszMTA1IDNhYTY1ODkyYjc1YzQ3MDY5NjczNTczMzVhOTg3NjE3OWU1MzlhOTkgbGVnYWN5LXRydW5rCiszMTA2IGI0NmYyMWM4MzM2OTA5NmYwMDNkOTdiOGZiNTRkNWFiOWQ3NThmMTEgbGVnYWN5LXRydW5rCiszMTA3IDIyMmYwNGY1NTA4MzM1NzI2YWI2ZTYxZTFkNWRmMzQ0NzczZDhiMWMgbGVnYWN5LXRydW5rCiszMTA4IDQ2NWI5ODQxNzcwZTM0NTY1ZTRkOTZjZjBkZjcwYmNhNGIwN2Q4ZTYgbGVnYWN5LXRydW5rCiszMTA5IDM2ZTJiN2EwMGQ3MmYzNmFmYmFiYzgwMWUyZDAzNWRmNzAwNTMxNGIgbGVnYWN5LXRydW5rCiszMTEwIDI2MGQ5NmRiMTEyZjg3ZDIwNGJjOGU1ZTJkYzQ4NzNmYjgxZmMyMjUgbGVnYWN5LXRydW5rCiszMTExIGU1YWU0MmZmZDlhMDc1N2Y2YTc3MWY5NjcxZWZlNjA2NmJlMjM3MzYgbGVnYWN5LXRydW5rCiszMTEyIGJjMGFiMDE3NTRiYTVkY2I0ODAwNDFlNTNkOWQ4N2E2N2Q1NTMwN2YgbGVnYWN5LXRydW5rCiszMTEzIGI5ZjI0ZDBjN2Q5NjE2YTdkMDJmMTYwZWM3OGE0MDMwZDk1NjdjMjMgbGVnYWN5LXRydW5rCiszMTE0IDAyODRmMTA3OWE3YmFlNTY0MjNjOWNlNzNhZTIzODNiYTcxY2RhNWEgbGVnYWN5LXRydW5rCiszMTE1IDdkOGU1MWU1ODBkMWEyM2NhMzNkMjAyODk3NmY1MmQyYjJiZDY2OWUgbGVnYWN5LXRydW5rCiszMTE2IDJiNjA4MzI3MjNjMTQzMWY3OTVmODQ4ZDMxNzNiNjM3OWE4NWRlOWYgbGVnYWN5LXRydW5rCiszMTE3IDI2NmE4YmEyMDc4NGZjZjQxYmM0ZWYyOGVjZmNlOWE5OTI0ZWM4YzcgbGVnYWN5LXRydW5rCiszMTE4IDAzZGU2NzA4MGM5NTYyNDI4ZGM3MzdlNzFmNGVlNGVkMjI1MmQ5YTcgbGVnYWN5LXRydW5rCiszMTE5IGE2MGNiNTMyMTIxMTBlNTQwMGI0M2I1Yjg4ZWJkNmNlNzdkYzdlMTkgbGVnYWN5LXRydW5rCiszMTIwIDVjNmNkYjU4YTgwMWNiODE5NDY0ZTBlOGNkMWUxZGQzMTBmODgyMDUgbGVnYWN5LXRydW5rCiszMTIxIGE3MzZlZjE4NDBhNTFmZTJiNzVlYTg5ZjUxOTE1NThlZDk0MTNiNTYgbGVnYWN5LXRydW5rCiszMTIyIDY4YjMwMmFkODRhMTkxYjQzZDk5NTVjNThjODI5MzljZDYyOTU5OTAgbGVnYWN5LXRydW5rCiszMTIzIDdkM2EwNTNjNjc2NWFlNTZlYjE2YzEwZGM1ODlkNWMwZmYxMzA5OTUgbGVnYWN5LXRydW5rCiszMTI0IGEzMWUwNzg0NzA2Mzg3NDY5Y2YwZTlmM2VjYzhiODkxMTdmZDRlZmIgbGVnYWN5LXRydW5rCiszMTI1IGI0MWU5NTczMWU0MjI0MjE3ODVmMTVkODk1NzEzM2Y0NGZkM2Q5ZmQgbGVnYWN5LXRydW5rCiszMTI2IGI1ZmNiNjYyNDY1ZTczY2Y4ZjY3ZTk1YWU5ZDA1NDMzZTkzMjA5ZjcgbGVnYWN5LXRydW5rCiszMTI3IDRiZGIyNzk0M2UyMjQyMTM3MDA2OTA5MGRhZTQwMGU1M2JmYzdmNWUgbGVnYWN5LXRydW5rCiszMTI4IDE0Y2M0YjA3Y2ViYmQ2MTFlNzcwYmY3YTFiNTA5MjhkOGRjN2MwNzkgbGVnYWN5LXRydW5rCiszMTI5IDI3YWFmOTQ0NzVkZGJkNzU5YjA1MDJkN2JjN2ZjNjM5Zjk4YWZlNDAgbGVnYWN5LXRydW5rCiszMTMwIDFhNTIwMjkwYzM5YzA1MjVhN2ZlMDIxYTIxMTIzYTgyNDJhZTIxNTkgbGVnYWN5LXRydW5rCiszMTMxIDA2YTljODI4YjYwODkxYjU4Y2JkNmE2YzMyM2IzZTkwNDExZDQxYWMgbGVnYWN5LXRydW5rCiszMTMyIDliZmU3M2M3NzMzNGNhYjYxMzAyMzZiN2Y1NDczNGY5OGZlNGU4ZWYgbGVnYWN5LXRydW5rCiszMTMzIDQ2NTdmN2M5ODBlODU5ZjU5MjE0OTlkNjU4NmZhM2VjNzg0YjQyNjcgbGVnYWN5LXRydW5rCiszMTM0IGY2NzE5MzhkZmRlMmU1MzI4YWE4MDhlNzQ4YTAxZGFkYjE1MWNkYWMgbGVnYWN5LXRydW5rCiszMTM1IDdiMzdiNWU3MTQ5M2EzNjcxOGY1NTAzNTRlY2Q5YTYzNWUwZGNlOTQgbGVnYWN5LXRydW5rCiszMTM2IDMwYTI5MDI1N2MzMWQwYjA4ZDE3Mjg2NTJkMTRkNmRlNTMxNTJkNjUgbGVnYWN5LXRydW5rCiszMTM3IGM5YzAzMjgzNjhhOWUyYjY0MzkxNjA0M2ZmNWI2NWMyMmY0NWIwYmYgbGVnYWN5LXRydW5rCiszMTM4IGFkYmFjNTg5M2Y5YzYwZGZiMTczYTJmNjUwMTc2NDU2ZGVjYmZiZDIgbGVnYWN5LXRydW5rCiszMTM5IDMxYjAxOGJkYTdlMmQzZjUwMGQ5ZmM3NDhlNGE5YmUxNTliMWU5ZjEgbGVnYWN5LXRydW5rCiszMTQwIDU3NmRjMTRhMjQwMDk3MTJlY2IxMDYzYzkzODY0YWI3ZjNhZmMzNTEgbGVnYWN5LXRydW5rCiszMTQxIDEzYzk5ZWFmMzJhOGM0NWZjOTM5ODE5YmEwMThjNGIxOTQzYjU2NjAgbGVnYWN5LXRydW5rCiszMTQyIDNjNTVlNjEyYTZmY2MxZDdlYzQxOTFlZTA0MGU5MzY2YTcyZTFiYzcgbGVnYWN5LXRydW5rCiszMTQzIGZmZTJmYmM1ODNkZWNkNzkxOTg1ZTI2M2ZlOTc5YmU4ZjUzOGQ5YWUgbGVnYWN5LXRydW5rCiszMTQ0IDlmMWRiNTU2ZmZiYzI4ZWEzZGFkZDJkNmEzMTk3Mzk4MmFlMTA4YzYgbGVnYWN5LXRydW5rCiszMTQ1IGZiY2I4ZDBiZDQ1ZTAzMjFlYzlkNTRkNWFmYWRkZDc4NzNjYTgwYWYgbGVnYWN5LXRydW5rCiszMTQ2IGIwNDVlNjhiYmNkZDU0ZDRiNDVlM2MwNzNkMDI4MjcyNmEzZmUyODkgbGVnYWN5LXRydW5rCiszMTQ3IDg3YWVkNTE2MDE2MTc2YjRhNDAwMjU3OTAyYTU5NzkyNjVjODY5ZmUgbGVnYWN5LXRydW5rCiszMTQ4IDVjYzdhM2NkNTU3YjY0OTM3NzZhMjJhYjUzMzNiOGQwMjAwYjE3MTMgbGVnYWN5LXRydW5rCiszMTQ5IDJhMDc0NmQ1MjQ3OGE3MmVhZDNkMWRjYjYwNzU3YjAxNjAwMzU2MTYgbGVnYWN5LXRydW5rCiszMTUwIDI0Yzk4YjYwZGQ3NDY1YmU0MGIwMzdhNjZjNWM1YWY1ODIxOGY5OWUgbGVnYWN5LXRydW5rCiszMTUxIDE5N2EyY2YzYTY2MmM2YjFjNzAyYjczMTAwMTcwMmQyZWRiZDA2YWMgbGVnYWN5LXRydW5rCiszMTUyIDc3YWNhNjk2NmI5ZDAxYjVhMTM0ZjBmYzk5Mzg2Nzc1ZTY1ZWU2ZjYgbGVnYWN5LXRydW5rCiszMTUzIGE5ZWI3YTBkNDAwMjE0MWZlNzI1NGQ1ZWNlMmM1MzNjYTY1ZTU1ZTIgbGVnYWN5LXRydW5rCiszMTU0IDdmODBmMzM2YmU3ZjgyYWJlY2Q0NWQ3ODhiOGIyYmQxYjZkNTJjMGMgbGVnYWN5LXRydW5rCiszMTU1IDQ4YzYzN2ZiMTUwZjMyODk4MTZmMWZkMzdjN2FhYThlMzhlNDAwNzAgbGVnYWN5LXRydW5rCiszMTU2IDdjZTE5NzVmMTFhOTBmMTI0MWNjYjMxZWJjNTIzMjViMTA2M2IwOGYgbGVnYWN5LXRydW5rCiszMTU3IGY0ZGI0MDYzZWM4ODZlZDM5YWVlYjE2NGU0NjYwMWE2ZGI0MjkwMTggbGVnYWN5LXRydW5rCiszMTU4IGYwMjVlZWY5MzEzMGQzMjU5Mjc1NzRmMDk3ZDU2ODFjMjJiNjkwZWMgbGVnYWN5LXRydW5rCiszMTU5IGZmYjAzY2ViZjNmNDU1ZTQyNmU0MjVhZmUzMjY2NDgyY2I3YThkMjggbGVnYWN5LXRydW5rCiszMTYwIDBiZTFhNWRiNzc4NDc0YTBlNWNmZjdmYWQxMjkxYmQ2ZGJhYWRiMTYgbGVnYWN5LXRydW5rCiszMTYxIDA5YjQ4NjA0ODU1ZjRkZDNmMzc3M2QyZWYyNDFhYWRhMGUwYzUxMDkgbGVnYWN5LXRydW5rCiszMTYyIGRlYmZjYjlhN2UwOGE2NDc0Mzg5ZDJmOWE2ZWM5MGIxZDE2NWI3NmIgbGVnYWN5LXRydW5rCiszMTYzIDY3NzQxMDdjNjQ3ZGM1OWM2MDRkYWE3MGM0YjFhYmU3YmM5ZDU1ZjEgbGVnYWN5LXRydW5rCiszMTY0IDUwNjdmMmQzOGUxNDNmYjIzMjU4NTE2NTI0NTQ0ODY2MjliY2Y2NTcgbGVnYWN5LXRydW5rCiszMTY1IDBjZTQwNGU0MTM5YzViNjUxMTkwYzg0YTJlODFkNDVjNmRkYjJhOWYgbGVnYWN5LXRydW5rCiszMTY2IDE3ZGIwNTliMjliYWNhYjMxZGQ5MDFjOTYwNjVhZTQ1YTZjZTA3ZmUgbGVnYWN5LXRydW5rCiszMTY3IDVkNzE0MmVhMDFiN2RiMGYxNzgwNjY0ZTY5Yzg4YWRjNTNhMjE0MGIgbGVnYWN5LXRydW5rCiszMTY4IGIzMzIyOGUzYzJjMjdlZDkyMzE1ZTM1NGZiODA1YjU2ZWU0NTc4ZmIgbGVnYWN5LXRydW5rCiszMTY5IDkwMzA3MTM3N2QyOTJlNTk5MjQwZDkzZWJiYjE1NjE5YTBmN2Q1ZDUgbGVnYWN5LXRydW5rCiszMTcwIDA0YThhODljOTJlYjcwZTEyMTM4NjAyYWQ1NDc0ZTYxN2QzOTc2N2YgbGVnYWN5LXRydW5rCiszMTcxIGZkYmVhZTJkNmU2NzFlMjE1YTg1MWU2ZmU3ZGRjM2MzODRiYWYwMmEgbGVnYWN5LXRydW5rCiszMTcyIDA5ZDI3MWVmM2I4MjQwNDI3OTAyODlhOTVhYjdhZWY4MjEzZDNlYTIgbGVnYWN5LXRydW5rCiszMTczIDZjMWZkMDUxMGQ2MWJjZDE3MDhlMTkyZTVhOGMzYWMzODk0Y2VlNWQgbGVnYWN5LXRydW5rCiszMTc0IDkyNjc4YjUwNTdjNjU1NmNlNTQ0NTZlNTA1NDBiMTViNzVhN2FhMGMgbGVnYWN5LXRydW5rCiszMTc1IDgwNjY4OWI5MzU1OGY5NTZmNzFlNjA5ZjIzMmMxZTAyZmRjNTQ4MzQgbGVnYWN5LXRydW5rCiszMTc2IGExY2U1YTk0OTgyOGQ1YzJiZjE1NTRmODAwZDNhZDdiMTJmYzg3MjMgbGVnYWN5LXRydW5rCiszMTc3IDk2YWNiMzViYjkyYmI4OTFkOWFjMGUxODIyMWUxOTg1MDEwNmMwYTIgbGVnYWN5LXRydW5rCiszMTc4IGYzZDVlMmMzYjlhM2E1MzFmN2NlNzJlYmY0YzM5MTBiOWIxYmExYjcgbGVnYWN5LXRydW5rCiszMTc5IGE0MWUzYmE1YjQ3ZDk2ZmJiN2Q5MjFkNTRhZGJmMWRkOTczNTAwZTAgbGVnYWN5LXRydW5rCiszMTgwIGNiN2VmOWJkOWVkZWMzNzlhNTM4NjQwZDlkM2IzZTczNjc3NDllMWMgbGVnYWN5LXRydW5rCiszMTgxIDM5NDVmMzcxMjM1NDkwMWJkNzY4OWFhOTNkNWNiYWMxZTBlMmQxNjIgbGVnYWN5LXRydW5rCiszMTgyIGEzZTc2OGVhODAyYWI5MDdmMDExMDE3YWUxYmVmZjVlMTdhNjZiNGUgbGVnYWN5LXRydW5rCiszMTgzIDc0NDJiMjBjNDNmZGZjY2MxYTM5OTc3MDUzNzNiOWExZDUxMzg0YjUgbGVnYWN5LXRydW5rCiszMTg0IDBkN2M4MjM2NjcwNDUwMDUyN2M0NTczN2QzYzMyYzNkMWNhZTEzNjAgbGVnYWN5LXRydW5rCiszMTg1IDliNTY2YWMzOGMyYjg0MzQxYzg0NTMwMjUwMzdjN2YxMjlhMWI1YmMgbGVnYWN5LXRydW5rCiszMTg2IDk0YWI2NzYxYWZlMmM0ZWYyZDcwNWM3Y2U5YTFkMzExY2ZlOGZhYzIgbGVnYWN5LXRydW5rCiszMTg3IDdiNGYyODMzZmQ5MDJiYzU1OGEyMWJhMWNhMTg0YjYxYjgzYWU1MTcgbGVnYWN5LXRydW5rCiszMTg4IGY5OTMxOTdjM2E0NzZlNDljMzdlM2Q5YjQ0NjU2MzQ0ODA3YjkxNzkgbGVnYWN5LXRydW5rCiszMTg5IDU2ZDYzY2FiZGJhN2VjMDg1NWZlMjQwZDFhNTRjYTJkNmNjYTE4YTEgbGVnYWN5LXRydW5rCiszMTkwIDUxMzk0MGViNGQ3YjY5OTFiMTU1NmZkOTdiZmNiYWJiYmY5ZGQ1ZTQgbGVnYWN5LXRydW5rCiszMTkxIGVkNDU2ZTkxZDk1YWU4NTQ2NzQ1OTllOWI2MzMzOWJiOTZjMWE2YjkgbGVnYWN5LXRydW5rCiszMTkyIDJmOTgwNWM5NjNlODUzNjQ4MDdiOGVhMTdlYmIzY2YzNDFkMmFlZDQgbGVnYWN5LXRydW5rCiszMTkzIDlmMGZiMTE0YzFlNTRjZTU2M2U1NDMzMGZkN2QxOGMwNWRmNGNlZjcgbGVnYWN5LXRydW5rCiszMTk0IDdhMTFhNzBmN2Y0NGRjY2Q0MmVkZDFkOWIyOTZmODc1MjNjYmExODIgbGVnYWN5LXRydW5rCiszMTk1IDQzMmZlN2YwODM3YzRiMjVhNzRjNDJmYTRiZTM1YjUyZjk1NTJjODYgbGVnYWN5LXRydW5rCiszMTk2IGZiYjg0MGY2NGJmODk1NjdjYTZjOTNiYzBlNTBkNWVhZTVkZjFkZjUgbGVnYWN5LXRydW5rCiszMTk3IGJiZDAxOThlYWU1YmYxOGZhYWMyNzRjNjdlMjUzNGNkZDdlODNhNGUgbGVnYWN5LXRydW5rCiszMTk4IDVmYjNmNzNhNjI3ZmNlNTllZDBlMThjMzBlMWVlYTZhN2FkOGZjZDggbGVnYWN5LXRydW5rCiszMTk5IGJmZmVmYmZjZWI2MDU0M2MzNDhhNmZiOTk4NDFiOGVlM2M5YTdkMjUgbGVnYWN5LXRydW5rCiszMjAwIDUxNmI1YTE2YWM3NzE4ZDZlMTdkYTIxYTA2ZWYzNDNkM2I1NjlmNzkgbGVnYWN5LXRydW5rCiszMjAxIGIwMDQzOGYyNjVlZDhmOTYyMmRhYWUzYTZlMGEzMmFhZDY2MzQ5MDQgbGVnYWN5LXRydW5rCiszMjAyIDZhYTBlZTE0YWMyZWQ2MDZhMGU4YmM4YTY0NjA0Njk4MGJiNDQ5YTMgbGVnYWN5LXRydW5rCiszMjAzIDBlZTU5YTE0ZTU0MjFmYzliNDMyMjQyMGUwNzU2YTEzYWIzNWU3MDggbGVnYWN5LXRydW5rCiszMjA0IDNkYWMyMDRiNzRmYWZmOTM3ZjEwNWM4MjQ3Y2MxZTMyODVkZTFlMDUgbGVnYWN5LXRydW5rCiszMjA1IDU4Zjc0OGY1OGRmNTg0YmIyNjk2ZTU5OGZiYzkyYzgxZjc3ZWE0OGMgbGVnYWN5LXRydW5rCiszMjA2IDhmM2EyNTQwOTk1YTE1ZTBlMTdkZTg5Yjc3M2M3OTcxNjcwNDk3OTIgbGVnYWN5LXRydW5rCiszMjA3IGM3MmVlMjljY2NkMDE4ZmQ3MzcyZjZiZTQxMjQ4NjkyNjNjMzcxOWUgbGVnYWN5LXRydW5rCiszMjA4IDEwZjEwZDQ1NDJmYWVkODU0MmU2YjU2ZGZhOTE4MWFlYTUyYjZjZDEgbGVnYWN5LXRydW5rCiszMjA5IGQ2ODA4ZWM2ZWRjNzM2ZTYzNDU0YzNhNWI3Yzc5ZjYxZGRlZTU4YTAgbGVnYWN5LXRydW5rCiszMjEwIDZiNWEzNGRiMjFmZTE3MzM2ODJhZTQ3ZjgyNGJmNzNjYjhlODE0YzYgbGVnYWN5LXRydW5rCiszMjExIGMxZWJmZGUzNDFhM2VjYzlhOTk1MGVmZDNlNjI5Mzc0NTVjNjUzOWYgbGVnYWN5LXRydW5rCiszMjEyIDJlZDUxMTE3MTgwOTgzODI3YjE5MTFjYjg2NDQ4ODk0NzMzZjg4ZTEgbGVnYWN5LXRydW5rCiszMjEzIGY0OWQyMzExNzc2YmI5M2RjOWQ4NWVjZTk5ODkyNDlmYzYxNmIyOGYgbGVnYWN5LXRydW5rCiszMjE0IGY1NGU2NGM4YjliNzBiYjliMDNkMzBjZjI4YTFkODM0NTI5M2FmNjMgbGVnYWN5LXRydW5rCiszMjE1IDY1MDhlYTMyYzZiMDk5OTlmYjRiMWYzNWNkZjg3ZmY5MjUyNTQyOGQgbGVnYWN5LXRydW5rCiszMjE2IGM5NTQ2YTIxMThmMDRiNmIzNjUwN2JiMzU1MzFiNDY1NzYyMTg3NjggbGVnYWN5LXRydW5rCiszMjE4IDMxNmNlNjc3YzZiMjBhNGM5MGEyODZkNzkwMDNjYjIyOTdmZGY0YWIgbGVnYWN5LXRydW5rCiszMjE5IDZhYjIwN2E1NWZjYTM0NzdmNDYxMGJkY2FhOTgyMjcwYTBiYmFmOTIgbGVnYWN5LXRydW5rCiszMjIwIDliZjc1ZTRkOWFlYzNlYWIzZGJhMDUzNTYyODlkZDQ2MGE2ODU3YTUgbGVnYWN5LXRydW5rCiszMjIxIGU2NjQyYTUzNWRiNWZjMTZjMGFmZTliMTQ2NTk2MDZjMTY4ZjkwNzYgbGVnYWN5LXRydW5rCiszMjIyIGZlMTkyNmI5ZGZmYTczMTI1NDg4ZGVkMWM0ZmRlZDk4Y2U5YmRiYzggbGVnYWN5LXRydW5rCiszMjIzIDU5MmJhYzZhZGZmYzI1NjY2MmI0OWRhZWM0ODFlMWI4YjVkYjlmNzEgbGVnYWN5LXRydW5rCiszMjI0IDRmNjY0MWRlYTY0NTg5NzhkMDIxMDE4ZGQyYTJiODg5ODdlMTZmZjggbGVnYWN5LXRydW5rCiszMjI1IGEzZmEyMjk3NzVjMTZkM2EzMmI5ZmI1NWE0ZjEzZDQwZGRmZDUwODcgbGVnYWN5LXRydW5rCiszMjI2IDBkYTE2ZTgxNDgyY2YzM2QwY2E5YjhhNDhkMjM2YzY3NDA2ZTFjOWEgbGVnYWN5LXRydW5rCiszMjI3IGFhYTNiY2NiMTQzYWFmMWI3NzE1NWM3YTE5YjYyYmEyYjE1NjdkYzggbGVnYWN5LXRydW5rCiszMjI4IDZiZTk3MDM5Y2MxMWY2MjRhMGJhMmNhNjYzYTNlYmJhMWZkYTVhZjMgbGVnYWN5LXRydW5rCiszMjI5IGI1ZDk1YWNmZDNlZTMyMzU4MzljNzEzNmIyN2JmY2Y3YjFhZWM1OWQgbGVnYWN5LXRydW5rCiszMjMwIDY5NmI5MTMyN2VhMjM4ZTUxMzE0ZDQwM2ExYjAyMWEzMWJjMGY2MDggbGVnYWN5LXRydW5rCiszMjMxIDM5M2Q1NGVjZDQzYjViOTZkNDFlYTQ4NDZmODA1NmVhMjU4YTIyZjMgbGVnYWN5LXRydW5rCiszMjMyIDcxNjJmNWFjODk5YWE5MmE2NGJjNDliNDQ1YWZkN2MxMmQ2YzU4ODEgbGVnYWN5LXRydW5rCiszMjMzIDAwMTY0NTdiZDk3YTg1YTVhNmM1YzExMzg0ZjhmM2ZhZmJlNTM1MGYgbGVnYWN5LXRydW5rCiszMjM0IDFhNTRkMzIwZjI5NjRhYTc4NWMyMGQ3ZTNkZTAyZjkyN2FhY2E2N2QgbGVnYWN5LXRydW5rCiszMjM1IDIyOTFkYTA1ZjE3ODRiZmI4NTE0ZGU1NmJkOTM5MTA4M2QxMjBjMGMgbGVnYWN5LXRydW5rCiszMjM2IDc2N2VmNzM3MGQzM2M0ZDkwOTM4YzU1MGQzM2NhZDU1ZWI1Mjg0MzkgbGVnYWN5LXRydW5rCiszMjM3IDJjMDQzMmZjYzI3MDc5ZDAwZWVmMjA3NmMwNTYzMjk2ZGI3OTMxMDkgbGVnYWN5LXRydW5rCiszMjM4IDRkYzM4MmZmNmZjNzRkMzUwZDYwYzYxMTRkNWU2NjgzYmE4YzFhMWUgbGVnYWN5LXRydW5rCiszMjM5IDk4Y2I2YTEyNTJjYjY1YjMzZmNmODIwOGYwNDBiMjJiYmY2MTMxMmUgbGVnYWN5LXRydW5rCiszMjQwIDZhYzkxNmY4Zjg2MjY4ZDA4MGNlNWVjMDA5MWQ1MmQ4YzlhYTczZmEgbGVnYWN5LXRydW5rCiszMjQxIGZlYjViMjM0YjBiNWZmYjI0MzY4Yjc0MjZiNDc5MmI5ZjI3MTRiMDEgbGVnYWN5LXRydW5rCiszMjQyIDI0NTAwM2MwMDZhNjM3ZjRmMWQwOGNmMzk3N2VjMTdkODI2MjFlNmYgbGVnYWN5LXRydW5rCiszMjQzIGU0YzZhMGRkNWMyYjI3YTdhNWZlNzg1MzI2NWViY2QwNWIzMGFjNTYgbGVnYWN5LXRydW5rCiszMjQ0IDc2NTdhNzUwOTRmMWMyMDgyYTEyZWQ1NjU5M2E4MzdiMzZkMDVlMTggbGVnYWN5LXRydW5rCiszMjQ1IDMxZGY1OGZhOThjYzU1OTFiYzFlNjIxMTFjMzIwZmFjMTExOTZjZTAgbGVnYWN5LXRydW5rCiszMjQ2IDA4ZDNjMzcwMTkzZGY3ZjY4ZGJmNDZiMzU0MmZkZjhlNDhjOWVkZDcgbGVnYWN5LXRydW5rCiszMjQ3IGYwODZkN2I0OTNiNGRmY2ZhMWM1YTdkMDNkYzNkODM3ZTYyMTU5YjAgbGVnYWN5LXRydW5rCiszMjQ4IGI3NTVhNDYyMDFmNmU3NWM3OGQ0ZGY4Y2FjNjMwNjYyMmE4ODc4OWYgbGVnYWN5LXRydW5rCiszMjQ5IDk2NWFhM2I1M2E5ZDg2YTVhM2NjNmM2ZDJlNmQ5Y2RmMDg0ZTdhNjggbGVnYWN5LXRydW5rCiszMjUwIGRiODE3ZjNhMWM2NTQ0OGE1NTVmNjI3M2JhZjgwNDRiNDQzZjc2OGMgbGVnYWN5LXRydW5rCiszMjUxIGI5ZTRmNzMyMWUyOGRjZmIzODJjYTMzNjgwMWNiZjI0NDQzMDQzYWMgbGVnYWN5LXRydW5rCiszMjUyIDM1ODI0ODk5YWFjZjgyMGFlOTBjOWExYTc4NmU3OTIwOWRkZTE5NTYgbGVnYWN5LXRydW5rCiszMjUzIDhkNjJjOTA1NmZlMTU0NDQzMDc2YWJjNmM1ZDVhODA3OGNjMGE3ZGEgbGVnYWN5LXRydW5rCiszMjU0IGFiOTI2NTM0YTE1Mjc0OTA4ZWUyYTUwOTMyMWZhMDkyYzBjZmZmZDAgbGVnYWN5LXRydW5rCiszMjU1IDZkNTdkY2I0ZmFhZGNiZTkzMzdjOTEwOTMyYWY2OWY4ZDlkZWU5ZmIgbGVnYWN5LXRydW5rCiszMjU2IDgyYzU1ZWE5MDY5ZTViNTQ4YjdjMTM2MDNjZjkxMWVlN2E4ZTYyZGIgbGVnYWN5LXRydW5rCiszMjU3IGE0Mzc2YTk5N2ZiMThiOWI5NmUyYjU3YTc4MWI4NDNhN2ZhMDAwY2QgbGVnYWN5LXRydW5rCiszMjU4IGQyYWY2YmRjYjZkMGEyNDQzNzY3MmJmYTYzNzBlMmM3MTZlZGZiYjMgbGVnYWN5LXRydW5rCiszMjU5IGFjMDgyOGVmNjhmMjliYmQxMTQyNWUzY2EwNzI0YTM2MjZkMjhkZjYgbGVnYWN5LXRydW5rCiszMjYwIGNlNzE4NDU3YjE3MjY1NzcxMTdhMDA4ZThmMGMyNTZkYzIyMjgwZmMgbGVnYWN5LXRydW5rCiszMjYxIGM2NDRiYzYyNjA5OGFkN2JmMzNhNTgyMWU3NDU1ZTc0ZGFmNjBhN2MgbGVnYWN5LXRydW5rCiszMjYyIGM5ZDJmNmJkYWE2OWJkNGYzMjMyZmU4ZmY1ZTc1MDIwNTQ4YjllZDEgbGVnYWN5LXRydW5rCiszMjYzIDNkZDdiODI1NTYxOWFhODI0NGRiMzZiY2Q5ZmFjYzYwNTdjZjFmY2UgbGVnYWN5LXRydW5rCiszMjY0IGZmMTg5OWRjZGEwNTlkZGNiMzBmZWNjYjcwMzViMmVlZWY5Yjk1YTggbGVnYWN5LXRydW5rCiszMjY1IGI3NTdlNThiYzUyNWMzOTg0ZTc3OTc2MDhhMjk4MTU2NDFhNDkzZGUgbGVnYWN5LXRydW5rCiszMjY2IDMwYzI2Y2Y1NDgwNDk2NzM1MjhlNGNkNjM4Nzg5MDlhZWFiMGIzMTggbGVnYWN5LXRydW5rCiszMjY3IGZjYWFmZDVlYzY5NTYzYzBiN2QwODBmZDY3ZTE3ZmZiNzhkOWJiZGIgbGVnYWN5LXRydW5rCiszMjY4IDQxNTRlOThkMTQ3OGI5MmRmYzQwZDg3NzZjZjIxYWVmODY0YWVkYWEgbGVnYWN5LXRydW5rCiszMjY5IDZmMmE2ZWZkMDE5ZTQ1ZjgwNzUxY2UyYmQwZDcwZDhiNDUyOWE3ZGIgbGVnYWN5LXRydW5rCiszMjcwIDhlYTU0NjA0N2YwMTE2MzAzYTg1NWY4ZTc2ZDA4MDUzNjRhMzZmZjYgbGVnYWN5LXRydW5rCiszMjcxIDkxYzE4NmEyMTZlNzA5OGM4MzNlMTE0MWUyNjIyMzQ0MzY2YjJjYTYgbGVnYWN5LXRydW5rCiszMjcyIDdmOGRkY2U4ODQ5NjFkNGI5MzUyNzAxNTIwYmRkN2VmNWY1NmNmNTcgbGVnYWN5LXRydW5rCiszMjczIGUyZjgwNzdhOTI2ZWVjMmIyMmRlNzRhOGMwMjEzMzI5YzYwYzJhMjYgbGVnYWN5LXRydW5rCiszMjc0IDFkMDZiMTQ5OWViOTMyZjM3YTJkNGY4NzAwYzJkZTgzYjViOTZmMzAgbGVnYWN5LXRydW5rCiszMjc1IGRlNzBkNzdiM2VlZDc0ZTBjMTBlYmEyODQ1YWI1NTk4YmYzMDMxN2UgbGVnYWN5LXRydW5rCiszMjc2IDgzOTllOWFhMDNlN2ZlMmU1Njc0YWEzN2JmYmM5YmQ1NTFkNmJmYTYgbGVnYWN5LXRydW5rCiszMjc3IDQ2ZDMxYTY0OWNlNjY3MzFhY2Y3MWE5ZjMzMDEzMzFlYjA2YTIyNDQgbGVnYWN5LXRydW5rCiszMjc4IGMwYWVkNWVlMTEwYmM3ZDNiMWUxNjk5ZjIwZGViOTQwODdhZDJhNzYgbGVnYWN5LXRydW5rCiszMjc5IGMxZWU2MGJkNWRlNDVhYTdhZjA0NmZhMWY5NjIxYzExM2QyNTVjZDIgbGVnYWN5LXRydW5rCiszMjgwIGMyNmY1YmVjMzQzOGFkOWFjOTY1ZWFkM2MxYzczZjMyNzM4ZTc3Y2MgbGVnYWN5LXRydW5rCiszMjgxIDFhMGJlNmUzNjgxOGI4OTEyYTNmZmE0Mjg0Y2ZkZGI2MTE4ODkxYTcgbGVnYWN5LXRydW5rCiszMjgyIDU2NjM2Mzk1NzI0ZDQ5NDQ5Y2QxM2RmOTU1NDk4Y2RmMzFiMmRiNmYgbGVnYWN5LXRydW5rCiszMjgzIGZmNmUyMTczMDk5YWUzYzg1Y2Y4MWYyMmFmZDFlMWMyMmIzNTU4MzkgbGVnYWN5LXRydW5rCiszMjg0IDVlNjViMTBkZDI0ZDM5Y2QyYWNmY2Y3NmE3OWQ0ZjFiMWViMmEzMzQgbGVnYWN5LXRydW5rCiszMjg1IDc1YjQ3MmFjNWI3YmUzMmZkMzY3MGFlNjAzZTNiMDlhOGI2YTI1NTggbGVnYWN5LXRydW5rCiszMjg2IDk0ZDEyMTE2NzU2YWM3NWE5Mjg3ZTU2Y2VhNTlmYjIyNTRlZGIxMWYgbGVnYWN5LXRydW5rCiszMjg3IDA5MTQ3NGMwODMxYTdhMjcyYTJhNzczMGI5NWZhMDYyOWFiMzRlMzYgbGVnYWN5LXRydW5rCiszMjg4IGRkNzBhM2FhZDI2NjVlYWJiNTJjOGE1MzZiMGNkNjljNTM1YjJmYmQgbGVnYWN5LXRydW5rCiszMjg5IDBjY2IzNTZlODhiMTI2ZjUzZGMzYzBiMzhiMGRhYWMwNmQwYmZlZjkgbGVnYWN5LXRydW5rCiszMjkwIDQxZmJkOTJiZjFhZDgwMWExMDliNzI5YzA5ZmU3MGVjOTcxYzgwN2UgbGVnYWN5LXRydW5rCiszMjkxIGE3YmExOTEyMGY1NDc0OWY0ZjkwYjI1MTkxNWJiMmRkODdjYjY5OGEgbGVnYWN5LXRydW5rCiszMjkyIGFhOWVkM2I5ZWRhMWNhMzRhZTcxNmI1MjA1MGIwYThjNzE3MGYxZWQgbGVnYWN5LXRydW5rCiszMjkzIGI2Y2RkZmQzNDhiYTFhNTg1YWU4NzM3ZDkzNDQwZWYxNGU1NmVlYjQgbGVnYWN5LXRydW5rCiszMjk0IDNlOWVjODVhYzQ5YjZmZjU1YWY2MGQxODg0NDc5OWE1YjRiNzVhM2YgbGVnYWN5LXRydW5rCiszMjk1IGU1M2JhZjliNGI5NTUxZTU1ODhjMmZhZjQ4OTFiNTQzZGFmZGI2NjcgbGVnYWN5LXRydW5rCiszMjk2IDY0NjFkYWM5YTlmMjk3NzdiMGQ3ZjQ4ZGE5ZTg4NWFkODllNTBmMmEgbGVnYWN5LXRydW5rCiszMjk3IDlhZGQwZTNlODA0YTA1OTg3ZDRiOGE2NjcxMjkyODliOGQyMTQ3OWEgbGVnYWN5LXRydW5rCiszMjk4IDUxMTJkNDMyMTI2YjE3NTcwNDc2ZjNjZWU1M2ViY2JjNTY2ZWEwZGUgbGVnYWN5LXRydW5rCiszMjk5IDYyMzFlMWI1YjIyYjdiZWFkMjAwMWRjMjczMzg4ZmQxZDUyZGE1Y2YgbGVnYWN5LXRydW5rCiszMzAwIGUzOTMwOWI5YTBhYTZkMTY2YmMwOWRkOTI0NzZlOGFkZTFiZGEzYjkgbGVnYWN5LXRydW5rCiszMzAxIGIzMzgyNjJjZDA4MDdjNDY0NGY4ZjA5MDU2YjgwMTRjOTI3ODM5ZTQgbGVnYWN5LXRydW5rCiszMzAyIDk1MGYwMTEzMTQwM2UxNThlMzU0MzJiZDg5NTEyMGJlMzhiYzRjNTYgbGVnYWN5LXRydW5rCiszMzAzIGY0OWU4NjJmZWVjNGQ5MTc4ZDQyNDJiZTUyYzAyNmE4YzViZmRjMjkgbGVnYWN5LXRydW5rCiszMzA0IGJlODkxMjU2NDNmMjVjZjkwMTYwYTI5ZjE0YWZmNmY1YmVlYWJjZmMgbGVnYWN5LXRydW5rCiszMzA1IDU0ZWIyY2YyNjk3ZTZlNTM0ZTUyODI2ZDM1YmE1OTRhODM5MDFlMzYgbGVnYWN5LXRydW5rCiszMzA2IGUwODc3MjI2ZDYxMzhlMGVkNDkxMzBiNDczMmU0MzZkMzg0NmJjOWQgbGVnYWN5LXRydW5rCiszMzA3IGU1Y2U5ZDA0MDhkMGU1NmY3ZjQxNjg3ZDQ4NTBhZWU2ZjM2OGVlNmQgbGVnYWN5LXRydW5rCiszMzA4IGYyMGRlMTMyMjY5MjBkOTM4YTc5MTExMGE2ZjQ3Y2MzNGU2NzFjNjkgbGVnYWN5LXRydW5rCiszMzA5IGJiNzY2NWM0NDgyMjZmYjk4MjEyZWM1NmRhYWQ4ODBlZDg5MTBmM2IgbGVnYWN5LXRydW5rCiszMzEwIGE0MTY0OTNkM2E0YzJmM2IyNDcxZmIwYjkwZDg4ZDZjNjNjOTczMDIgbGVnYWN5LXRydW5rCiszMzExIDNjNmE1MmQyNTQzZGMyZDA1MmIwNWNjZDFiM2QwMjc5NjU3MWMyYzUgbGVnYWN5LXRydW5rCiszMzEyIGZhNjJmYjBlNTViMmQ4OWJmZmZmNDY4MDcyOGFhZDNjMjlkNTYwNDUgbGVnYWN5LXRydW5rCiszMzEzIGM3MmVjZGIzM2FmNzU3OTFiYzQ5NmJlYjhmYzk3M2FkZDcwYWFmY2QgbGVnYWN5LXRydW5rCiszMzE0IDg0NjdiMTE5MzUwYmViYzY3ODRkNzY5NTRmZjcyODdkNmQ4ZmVhYTQgbGVnYWN5LXRydW5rCiszMzE1IDE5NGFmMDRkMzQ0YjA4MDZiOTRlMDEzMjJiYjZkMDZhNjAxNDVkMjYgbGVnYWN5LXRydW5rCiszMzE2IDY1ZTQxOTlhNzk4MmZiMTlhZTFlZjMyYjU3YWExN2RmMzExYWU2YTIgbGVnYWN5LXRydW5rCiszMzE3IGQ0NDgwYzA4NDQ0ZGM1YjYzNjQ2ZWYwNGQxODQzZDZmYzNiY2YxZDQgbGVnYWN5LXRydW5rCiszMzE4IGU4MmFjNDUyZDU1MWRkN2NmOTUyM2I3ZTBjZDBhMGEzMGM4NzYyZTggbGVnYWN5LXRydW5rCiszMzE5IDI5ZDJlZjBjOTRiOTUwNGRhOGY4MDkyNTY0YzdhYjZhOTgxODI4NjQgbGVnYWN5LXRydW5rCiszMzIwIDIzZWIyNzczMWQ5Y2IzMmFkOWE5NGIxMmVhNjg4ZTQyNGQ3NGZlOTUgbGVnYWN5LXRydW5rCiszMzIxIGYwZWI3N2FiZjI0NDM2YmJjZDc0NmM5MDMzNzA2OTRkNzIxYWNmOWMgbGVnYWN5LXRydW5rCiszMzIyIDEyMDUxOGVmMzZlMzNhNDdjMjk0YWE5ZTE5YjZmNWZmMGI3ZDYzYjcgbGVnYWN5LXRydW5rCiszMzIzIGRlZGQ0NGViNzM1YjNmMTY1MTJiNGVjZGY2OTNlYWE4MGY2ZDc5YWYgbGVnYWN5LXRydW5rCiszMzI0IDUyNDQ4MjdkZDQyMzgxN2E4MGJhNTYyNDBiNmUzMWVlMTE5ZDhiM2QgbGVnYWN5LXRydW5rCiszMzI1IDliN2Y5MGY5ZjNjMTUyOTk2ZWJhNmNlOTQwYjIzYWE3ODFjZmI5M2UgbGVnYWN5LXRydW5rCiszMzI2IGZhYzYyYmNkM2JiOGRlMWNjZTNkNjlmMzFjZTdmNzhhM2UzYTA2NzMgbGVnYWN5LXRydW5rCiszMzI3IGVkZGM1NGIxZDlhYjhiNjc1OTczYzA1ZmM4NDM1NjE5MGY1MzRjNGYgbGVnYWN5LXRydW5rCiszMzI4IGYwNzg0YWUxZmY1Y2FjYWY4NjVkZDZmM2IxNGUwNWM1NTJiZTA3ZTcgbGVnYWN5LXRydW5rCiszMzI5IGQ5OTBjMmI4YTFlNmQwOWIwNDA2ZDdjYjNiMzkxZDg5YWY2MWM5ZGIgbGVnYWN5LXRydW5rCiszMzMwIGE3Y2YyMGM4NDVhM2E0NmU2YzM2NTUzYjE3ZjU1Y2MxNTE1ZWMyZmMgbGVnYWN5LXRydW5rCiszMzMxIGE0N2UwYzliYWFkMDA4MjQ5Y2I4ZDViNzZhZTNjMTAzMjMyOTc1ZTIgbGVnYWN5LXRydW5rCiszMzMyIGMwMWM5NWVmMWZiZGE4ODRiNDAwMmY4YTNjYmUxYzFkM2NhNjQ5OTggbGVnYWN5LXRydW5rCiszMzMzIDU3NDVlNTVmMmUyODBmMTA5ODRiZTg5MmYzMTIxMGI3MTlhMWU5OWQgbGVnYWN5LXRydW5rCiszMzM0IGJiNTRmZjQxMzQ4Zjg3OWJlMTgzZjBhNTg1Y2U3ZGE4ODYyOTU5ZTEgbGVnYWN5LXRydW5rCiszMzM1IDljMWFlNjA3ZDEzNTM4MDZlYWFiYjdjYjAxN2M4Njk1NzVmMjJlNzQgbGVnYWN5LXRydW5rCiszMzM2IGU3MWI2NDdmYTMzNTZmNTBjZjRkMjg1NGQyNmEzZDVjZWRhM2FmYzIgbGVnYWN5LXRydW5rCiszMzM3IDk1NTIxMmVkNTJkMzdjNzQ3Zjk3NmRlMTU3MTZjMTA5OGFiYjRkNGQgbGVnYWN5LXRydW5rCiszMzM4IDg2MDRjMzk0OTgwOWQ1MTMxZjJlZDMxMGQ3ZTA3MTViNDQ4MzhmNDEgbGVnYWN5LXRydW5rCiszMzM5IDcxN2VhMTc2NzQzMGJhZGE4MjE5MTBmMDA4ZjJmMGE3MmM2OGQyNzEgbGVnYWN5LXRydW5rCiszMzQwIDI3MTU0YTJiOTI0NDAyNzAzMGNlODM0NWVhODM1NTRjZmRkYTZmNWYgbGVnYWN5LXRydW5rCiszMzQxIDUzM2UzNmRlMWU0ZGY2MTk1YzVmYTU3Y2U1ZjQ4NmI5YmVhZTE5M2MgbGVnYWN5LXRydW5rCiszMzQyIGY5YmJiMDEzODhkNWJmM2NiOGU3MWFmNDEzZDNiYWVlYzNiY2VhZGMgbGVnYWN5LXRydW5rCiszMzQzIDlhZTY1ZWUwOTczNWQwNzIyYTYzZGIzODgyMjgyYWVkMTk3MmEzOTQgbGVnYWN5LXRydW5rCiszMzQ0IDFkNmNiZWIyNzA5NjI3MmE5Y2VkMzgxNWFmMWEwY2I2MTE2ZDIyZGYgbGVnYWN5LXRydW5rCiszMzQ1IDk1MGNkMzdmY2RkYzU0NzdkYmNiMDhjZjIyOGM3ZjgwMDE5OTFhMWUgbGVnYWN5LXRydW5rCiszMzQ2IDY0Y2YxOTFkMjFkMDhjOTMxMmY5NGEwZThhZjUwZDFlM2MyN2YwMTQgbGVnYWN5LXRydW5rCiszMzQ2IDY0Y2M1NDM5ZTEwYTZmZGY5ODRlZmZhZjAxNDFlOTRmYTRjYzEwMDQgbGVnYWN5LXRydW5rCiszMzQ4IGNmOGRkYjI5ZTI2ZWRhZmFlYTBiNTBmYjJmOGI0YWI4NTIyZTEyMzkgbGVnYWN5LXRydW5rCiszMzQ5IDBlZmVmOTc4NWEyNWQ3ZDlhYWUyNWVhMTJhMDBhYTg0MTZkYWMxOTEgbGVnYWN5LXRydW5rCiszMzUwIDk0N2Y4YTM0N2M0ZjE3ODllOGM4OTM3ZTFkNTVmNGE5Mzc3ODk2NTUgbGVnYWN5LXRydW5rCiszMzUxIDZhMDc3YzI5Mzk4NmMwYWQ3OTcxY2JmNGNlNmMxODQ2MDdiODZmNmYgbGVnYWN5LXRydW5rCiszMzUyIDU4NGM0MTQyYzUzNzlmM2E1MzdiMjdhOTk1M2M5MDYyZWYyY2FmNWUgbGVnYWN5LXRydW5rCiszMzUzIDg0N2M0ODM1NjI4ZmE4ZjExYjM4ZmQyODlhNzEyOTIyZTQ2MDNiMzcgbGVnYWN5LXRydW5rCiszMzU0IGVhOGQ0Y2NlNzgyYmJmYWRmMGUyYzkxNWM4MmRiMjYyZjQ5N2NhMWYgbGVnYWN5LXRydW5rCiszMzU1IDM4ZjAwNTRmNDRhNzFjNmY3OTAxZDViZjEwNDVlNTM0OWNlNzM0MTYgbGVnYWN5LXRydW5rCiszMzU2IDc4NDI4MjQzZmVhYTc1MjA5ZGE3Zjk5NmQ4MDY4OGE1YTg4ZGEyZmMgbGVnYWN5LXRydW5rCiszMzU3IGI3YWVlNzk5ZGM3MTVhZDFiODRmYWZhYzM1ZWE3NzU1ZjkwNzdiMDAgbGVnYWN5LXRydW5rCiszMzU4IDMxMDUzMjAxNWE3ZDM1OWJmZTc3NjBhNTVhYzQzOGI0ZWYxMDgzYjQgbGVnYWN5LXRydW5rCiszMzU5IGUxMjA5MzZhMGM4N2Y5NTE1YzE0MDE4YWJiZTZlZDFhMWQ3MzYxZjEgbGVnYWN5LXRydW5rCiszMzYwIGNlNjdkOTFhZGY1ZTdlMDY1ZGIzNWFhMGRmZGJkMzQ1OTEyNGZmNzMgbGVnYWN5LXRydW5rCiszMzYxIDY3NWEwMjgyMGQ2NmUxNDBlMmE1NTgzZGY2MjllODJhYmU3NTRmNjQgbGVnYWN5LXRydW5rCiszMzYyIDI5Mzc4OTdhN2Q4YjAzODc5MzYwODRmNDI0YzY5YWI1YTMxM2EyOGYgbGVnYWN5LXRydW5rCiszMzYzIDcxOGYxZDliY2I1MDRmMjU1Y2Y3MzY4MTk3MTM1YThhZGZkNDk0OTUgbGVnYWN5LXRydW5rCiszMzY0IGU4MjIzZDBiNzJhYzUxOTYwYmYwOTMxZTk2YzAyYWM1NzFjMWQ3YjUgbGVnYWN5LXRydW5rCiszMzY1IDBkNzk5ZDNjNDAzNmU3ZjhiMTY5NTAzN2EzZTcyODI3MTY1YmI1Y2YgbGVnYWN5LXRydW5rCiszMzY2IGQwMjIyMWViYWMyYWQ3YzhiMDkxOGQ3OTY1OGFhZGRmNjVkZWQyMWIgbGVnYWN5LXRydW5rCiszMzY3IDgzMWQ4MmFhNGRkMDgxODlhMThmMDIwMTM3OTVlOGMzZDI1YjE5NDEgbGVnYWN5LXRydW5rCiszMzY4IDM1NzNlZjQyMWJmNDExMDdiZjcxOTllNWVhZjFiMWI0OWMzYzE4OGUgbGVnYWN5LXRydW5rCiszMzY5IGVjZmJjMjQ2ZWVhYTEwYzQ4MzQzNWM3YmQyMmY2ODAxYjYzNTE2YTIgbGVnYWN5LXRydW5rCiszMzcwIDNkMWY3MDg3OWYwMzA0MTRiYWRkOTg5ZDIwNTVkMjU1Y2UzYTA5YzAgbGVnYWN5LXRydW5rCiszMzcxIGI1NjRiZDRlNTdlMTM1MzQ0OTcwMTk1NTYxNTlkNWY0N2NiYjY5ODkgbGVnYWN5LXRydW5rCiszMzcyIDliMTRhNGQ4OTIwNzNjNjA4OWQ4MmViOWRjYmY0MzhjOTBlYjhiY2MgbGVnYWN5LXRydW5rCiszMzczIDlmZTc4M2NhOTc2ZTJmOTFhZmU3NjA2MjFjOTlmNDJjODhlZDNhNWMgbGVnYWN5LXRydW5rCiszMzc0IGJiZWYyNDczZTU2OGQyOTI4NzE4MTBlYzU2YmY0MzU3Y2ZkMDdhZjQgbGVnYWN5LXRydW5rCiszMzc1IDQwNjg2MGRmYWFjNzhiNjA4MTRhOGU3NjIyMWNhYWViMDZmY2ZmYjEgbGVnYWN5LXRydW5rCiszMzc2IDVhNDEwOTQ0MWVhZTAwOTUxMjU4YmM4YWM2MDE2OTJlYWJmYjA4MWQgbGVnYWN5LXRydW5rCiszMzc3IGZhNmNlN2Y1M2FhNTAxOGE5MGU5MDZmYWIyNmRkYmY0NDcwYThhNmYgbGVnYWN5LXRydW5rCiszMzc4IDQxNmE4YTg4NmE4MmFhMmQzZjU2ZWE5Y2U1YzIzOTg0ZDc5YzAzOGQgbGVnYWN5LXRydW5rCiszMzc5IDlkNmNmNTI5YmI3MWE3ZjRmZTk5NzU5ZGQ2Nzc3MGZmYzA1NTViYmQgbGVnYWN5LXRydW5rCiszMzgwIDQ5MmY1ZTNlNjQ5NTU1OGQ1OGM4Yjk2ZmQ1ZDgwYzM2N2NhOTgxM2IgbGVnYWN5LXRydW5rCiszMzgxIDFkN2E0ZWQwYzk4NWY1ZWY4MjIzNGJmNWZmYzk4NDU5OGM0MGI3ZmMgbGVnYWN5LXRydW5rCiszMzgyIDUxMjIzY2U5NWE2MTk4NjYxYzlhMjgzMzIwODM4NGM5NjljMTJlYTQgbGVnYWN5LXRydW5rCiszMzgzIDY0ZWM3YmQyZTgzNzM3YTczZmM4OGI4YjMwMzExOWUwZGJjODEwYzIgbGVnYWN5LXRydW5rCiszMzg0IDgyZjRhNmExOTY0ZGVmNjFlZDAyNDE2NzU5YjEyMjdmNDQ3MWViZjIgbGVnYWN5LXRydW5rCiszMzg1IGFkNmQ1YzFlZjVlNjFhMjkwMDZlYjU4ZmZjMjg4ODIwZWYxNGIzMmIgbGVnYWN5LXRydW5rCiszMzg2IGNlN2FlOGY4MWIwNjE4MjQ0MTMzOGZiOTA2NWVkNWMzMmRhNzE3YjYgbGVnYWN5LXRydW5rCiszMzg3IDVhZTRhOGNmNzllZjMzZWI1YzI5OTczM2UzNjkwODAzNzg2YzA0ZDQgbGVnYWN5LXRydW5rCiszMzg4IDdlMjc2NTllYjJkOTY2OTgxYjliOTJmZTdlYTc2OTMyNzYyOTA1NDggbGVnYWN5LXRydW5rCiszMzg5IDI3NTNlMmM5YWEyMWM5YjZhYTg0ZTkwNTY5MmI5MDZlOWRkMWJkMWYgbGVnYWN5LXRydW5rCiszMzkwIDA2NTliNjNkNjA0NDdkNjMzNmVlZDJjYTY5OTQxMzc3MjJkMGZkZGUgbGVnYWN5LXRydW5rCiszMzkxIDIwMjZlYzAwZWZkY2Y0MGM3NWNjMDM1OWMzY2FiZmIzYjJhM2RmMmIgbGVnYWN5LXRydW5rCiszMzkyIGYwMThkMWQwZTkxYTVkZjc3YjQxOTkyM2U5ZTc3ZTJkMDAyYjEzN2YgbGVnYWN5LXRydW5rCiszMzkzIGRjZTdhNGNiYWMxMTJmZWU1ODlhMjg4MzdjMzIyNjIyYjc2YjhjZmMgbGVnYWN5LXRydW5rCiszMzk0IGUwZjdmZjg1ZmEwNjUzODM3NzE0NDVjZDNiMTBkNGVhZmZkNzcxYWQgbGVnYWN5LXRydW5rCiszMzk1IDI2ODhmOWJlYmQ5YTVhNWNhYTZiNTQ3NTVjOWM3ZTRkOWI2YjU2M2EgbGVnYWN5LXRydW5rCiszMzk2IGFmY2JhODhjNmFjYjc3ZGVmZDhkOWI4N2M0YWZkMDJlYTg5Mzg4OWUgbGVnYWN5LXRydW5rCiszMzk3IGIzZTZhNDM1YzQ4ZmUyN2JkY2ZlOGM5NTZiYTcwY2VmZjQwMjY4MGMgbGVnYWN5LXRydW5rCiszMzk4IDU4NmM5MjhjNjVkMzRkZThiOTdlOTMwMzcwYTI1YjE2YzBjZjc1NzggbGVnYWN5LXRydW5rCiszMzk5IDg3ZWQwMGE2MmQzMTAxMzg1M2M1ZjNkMzA4MDRkNjM5YjlmNmU5NzIgbGVnYWN5LXRydW5rCiszNDAwIDY4MDQwNmM0MTUzOTE2ZWJiNGQyYmIxZjQzYmU5ODczOGU2ODhlMGUgbGVnYWN5LXRydW5rCiszNDAxIDA1NTgwZTAwZjQxZTJjNzVkNzljZmU2NzA0ZTk2YjZkMDgxNWU3MGQgbGVnYWN5LXRydW5rCiszNDAyIGQ0MjZjNWQ1OTI1NGE1MDE2NGQ3OTc4MmY1MzVkNDFlNTM0NTllYWYgbGVnYWN5LXRydW5rCiszNDAzIDBjNjU3ZGIyN2RiZjY0ZjlmODg4NGU3MGZiODM3ZjIzMzZhM2MzMDkgbGVnYWN5LXRydW5rCiszNDA0IGU2MDM0ZWRjNDdhZTVjMmVkNzVhMjdlM2M1OGY1NjkwZDFkNmIzMjEgdW5sYWJlbGVkLTEuOS4yCiszNDA1IDViOGVjOGY3MTFjZWYxMDcwODFjY2ZiYzQ0MmY0NTY1YzBiMGRkODYgbGVnYWN5LXRydW5rCiszNDA2IGE3NTkzYmE5OWRjYmFiZGUyNDE2MGU1YTJmNWU3MGI4NmJlN2ZkN2QgbGVnYWN5LXRydW5rCiszNDA3IGU1NTcyNGZiYzJhZjdiMGUxMTY3MTUzOTNkNTYzMzJjODhlZDMzOGEgbGVnYWN5LXRydW5rCiszNDA4IDhmMjQ2Yzg5ZGRjZWI5N2VlNzdmZTZlZmI5MGM5Yjc3NjQyZjc4ZjcgbGVnYWN5LXRydW5rCiszNDA5IDkxYTc3MDg3ZTgzZjIxYzRlNTJjY2E2ODczNDk1NTE4N2Y1MDg1NWMgbGVnYWN5LXRydW5rCiszNDEwIDFhNmJhMjNhZTQ0N2FjYWUwYTVkYTk0MzkwY2U3Y2FiOTQ5ODM4MGMgbGVnYWN5LXRydW5rCiszNDExIDkxMWI4MDE3ZGE0NmI2MzI4ZjI3YzU2ZGZmMWIzYTM2MWE1NjE1MzIgbGVnYWN5LXRydW5rCiszNDEyIDZiM2I3NWYwN2NiYjdiODI2ZTBiNjE3M2NkYzRmZTljZTkwOTI3MDMgbGVnYWN5LXRydW5rCiszNDEzIDc4Y2IwYWNjZmIwY2VmMjlmZmEwMDdmYzk0MzhlYmE5NDc5YzY4NmQgbGVnYWN5LXRydW5rCiszNDE0IDkxYzFmOTRiMTdiYzExN2E4MWJmZjZiMTI2M2U0YzE3YmM1MWVmNzggbGVnYWN5LXRydW5rCiszNDE1IDQ5YTdhM2MzZDg1MDg5Y2YwODk0MjhlNTk2ZTU2ZTVhM2JlZDRiZjAgbGVnYWN5LXRydW5rCiszNDE2IGNhMTcyOGM0YmQ3ODg0NmY2MmRmNzgwNzJhNjcwNzgzNjkzYmZmNGUgbGVnYWN5LXRydW5rCiszNDE3IGM0Y2QwZDlkODI4MWRiNTMwOTY1MDAwNzJiYTA0N2ExZDdlOGI0NGEgbGVnYWN5LXRydW5rCiszNDE4IDY4NWIzMWZlODljNjBkMDI0YThkYTAzY2ZhZTRmNWRhODEwMGI3MTkgbGVnYWN5LXRydW5rCiszNDE5IGJiY2VjMjRiMjQzNzc2ZDliYTQyMzkwYjc0ZDExNDE0YzE3YmYzM2YgbGVnYWN5LXRydW5rCiszNDIwIDQ5NjMwMTIzYTNmMzQwMzdlOGJiZmEzMWNmNWQ3ZGQ5YmZiYjI1ODMgbGVnYWN5LXRydW5rCiszNDIxIDdhYTk2MTNmZmQzNjMxMzYyMGU5ZDAxZDJiOWRmMjA1NjY5ZTBmZWYgbGVnYWN5LXRydW5rCiszNDIyIDFjYWJjMmI2Yzk3MDFhZWEyOWJiNTA2YjU5Mzk0NmU2N2JmNzU5M2EgbGVnYWN5LXRydW5rCiszNDIzIDZiODY4OGU2YTdlZDZlYzVmNjM3MjM2OWNiYjc2NDczZmMxYjc1MzMgdW5sYWJlbGVkLTIuMy4yCiszNDI0IDZkODBlMWY4ZjcwYTU4MGI3ODkwN2FmZmE0NTRmZTUxNzYwYmEwMjMgbGVnYWN5LXRydW5rCiszNDI1IDQ1ZDcwODUyMTE4ODE5NTljYWE1NmNmMjY1MzAwMWIyM2UxYmYzMjAgbGVnYWN5LXRydW5rCiszNDI2IGIxMjBjZGQzMGZiY2E1OTFhNDQ3M2JkMTFkYzBlMjliZWUxMzE3YWMgbGVnYWN5LXRydW5rCiszNDI3IDJjNTE1ZjA3MzY3YWQ0MTQ3ZTFhYTM5YmJlMzdlZDEzYzFlMjE2Y2YgbGVnYWN5LXRydW5rCiszNDI4IGY4MjBlNjkxN2YwN2U1MDEyYmRkMTAzZWY5NzM4OTMxOGQ1YTEwZjggbGVnYWN5LXRydW5rCiszNDI5IDY1YTFlNGU5Y2Q1NDZjNGU1Nzg3MzBhODhkZGFmMjM0YmU0ZDQwNDIgbGVnYWN5LXRydW5rCiszNDMwIDZjNThkYzFkMmY5ZDIwOGE5MTA2ZDQ0NDhjMjlhOWE2YjZjMzM4MTQgbGVnYWN5LXRydW5rCiszNDMxIDE4MTFlOTYwODBkNDQyMmRlZWIxOWY5MTlkZWViYzdiNmQzZjRiZTAgbGVnYWN5LXRydW5rCiszNDMyIDg5ZTRiMTY2NjE3ODljYjM2OGU0OGUzZGU5MTE4NjllMzk0ZmUxMDIgbGVnYWN5LXRydW5rCiszNDMzIGQwMmNlMzBkN2RkYmM4N2JkZTYzMzIwOWZkYWZjYjEyYmZhZTI4YjcgbGVnYWN5LXRydW5rCiszNDM0IGY1ZjczYzk0NjNhODZkMjY3OWE2NjkyNDcyYTdhYmQ3ZTI3YTYwY2YgbGVnYWN5LXRydW5rCiszNDM1IDI4OTQ4MTgxZmIyZjc5NWY4ZWZmYTU2MTQ0ODYzNmFiNzAxNDQ1ZWMgbGVnYWN5LXRydW5rCiszNDM2IDE0MzY5YTVlNjE2NzkzNjRkZWVhZTlhOWEwZGVlZGJkNTkzYTcyZTAgbGVnYWN5LXRydW5rCiszNDM3IDI5MTliNDQ4ZTM4NThhMTA4ZTc0Yjk2MmI3NDgwOWUxNzYyYWY1YmMgbGVnYWN5LXRydW5rCiszNDM4IDdiNzQxMWY5YjExNmYwMGMyMzRhMzI4NmUyNmYzY2ZhNjZhMGRmNzEgbGVnYWN5LXRydW5rCiszNDM5IDY5YTA2NmI2YjFmZjRhZjUxMTYyNjVkNjlhNDEzZDFiZmMzYWRjODggbGVnYWN5LXRydW5rCiszNDQwIDJjNzQ5NjBkNmFmZWYxMzZmOWE4YjQxMTdmNWUwYWM1YmNlNGM3Y2UgbGVnYWN5LXRydW5rCiszNDQxIGJjYTcxZjJlMmNiNGVlNjY0NjE4ZDA1MGMxN2ZmZDdmMjgwMTZhMzkgbGVnYWN5LXRydW5rCiszNDQyIGY3NmI3YmE5OWQzZWZiNTE1MjM3ZWQ3NDdiY2NiOGRlNzQ0NDJlNTkgbGVnYWN5LXRydW5rCiszNDQzIDg3MTQ2ZGMxZjc5YzViN2NlOTgwYWY4YWY3MmJhYzFkY2NmY2I5ZjAgbGVnYWN5LXRydW5rCiszNDQ0IDNjYTQ1NmY0NGJmM2VmMzZhOTc0ZGQ3NWU4YWRkYjljN2I1Yjc0ZTUgbGVnYWN5LXRydW5rCiszNDQ1IDllNDIwNmY2NGQxYjUxNDdmZDA3ZTMyNzEyNmI2YzJiYmU2ODllMWYgbGVnYWN5LXRydW5rCiszNDQ2IGFmMjdhODMwMGQyNDA5NGFhZmE2ZWU3NDZkZTU1NjdiYTliY2M0NDcgbGVnYWN5LXRydW5rCiszNDQ3IGM2MGNiMDU5YzQ4MWU0YTk0ZDU5NDY0NjlkNDI5YTI5YWFmZjhiNWQgbGVnYWN5LXRydW5rCiszNDQ4IGUwNDY0ZTcxMTVjYTJiZjljODBjOTVmNDQ2YTZkNjRkZmYyODNmMDIgbGVnYWN5LXRydW5rCiszNDQ5IDkxODFkYTQwNjk3OGM4MWRlZDE5MDJiOTRhMGNkOTYyYWQzMTkwYjkgbGVnYWN5LXRydW5rCiszNDUwIGRiY2U3MmFmZTI2MTUxNmQzNTYzY2QxNzIwZmFjMjM2OTY4ZGNhNzMgbGVnYWN5LXRydW5rCiszNDUxIDZkN2ZkZWM5ZDQ5ZTI4NDNiNDdhZTYzNDUwZDYwOWYzNDM1NzQ2NTkgbGVnYWN5LXRydW5rCiszNDUyIDMzZjNkN2ViZmNjMWIwMWU3MTY5Yjc2MzBhZWRkNTc2YThjNjdhZDYgbGVnYWN5LXRydW5rCiszNDUzIDY3M2RkOWJiZGJmMTUxMWFlOTAwOTI3MDFhZGY5MjBhNzYzYTI2MzAgbGVnYWN5LXRydW5rCiszNDU0IDlmZWQ1NzI2YTM2ZDdjZTEzNTVjMzA1OTI4MzhkOTMzMjFkNTgwZWUgbGVnYWN5LXRydW5rCiszNDU1IDRkMjkyYzc4NTdkNDc0ZmFlNWVjOTA5ZWRkNDM0YmNlZDA4YjgzNjQgbGVnYWN5LXRydW5rCiszNDU2IDc5NzFmZWNiZjI4ZTdlMWUwOThhNzk3OTY0YTZkYzAwM2Y5ZWM0ODYgbGVnYWN5LXRydW5rCiszNDU3IDUxN2QyOWViYzg0MGRlNDViM2M5NDU2MDkzZDg0MmExYjMxYzEzYmIgbGVnYWN5LXRydW5rCiszNDU4IDU3YjgwYjk4YjhlNTA3NTJjYTQ1NzcwNDNkODQ3YWNkY2VhOTA5NWYgbGVnYWN5LXRydW5rCiszNDU5IGFjM2M4MGFiYmY0MzAwMzQ5YzVlNmUzMzg1MzBiMjlhZTBmYTM2MDQgbGVnYWN5LXRydW5rCiszNDYwIDY3MjYxYzc5MmY0YzE0ZmJjYjEzZmZiMGI1MWE4MzZjMmFkNTEzMGEgbGVnYWN5LXRydW5rCiszNDYxIDQ3NzNkNWMzYjVhNDZkZTBmNmNmZGJjNmMwM2MxNGQyN2U5NDg4NWIgbGVnYWN5LXRydW5rCiszNDYyIGMzZDA5Zjc2ZDZiZjQzOGY5YzdiMTNmYzZiMTE2ZjBiZDVlZjgzOTEgbGVnYWN5LXRydW5rCiszNDYzIDkyMzRjOTYxZWM0M2NhMjg1N2UzODEwMzI2NzBkZTk0NTJhNWM5ODQgbGVnYWN5LXRydW5rCiszNDY0IGRlYTc0NDJjNWY4N2M2ZTFkMGEwOWFlZjViMWIzZWFhODcyODg0NzQgbGVnYWN5LXRydW5rCiszNDY1IDA0YTdmOWJmMWU2NzJjNGY3ZGU1MjdlODg5MDQ1ZTYzM2QwZDA3YWIgbGVnYWN5LXRydW5rCiszNDY2IGM2NGFmNTY3MWNjNjk1ZTYyYjM2NGQ0MzIwMjIxZjlhOGQ4ZjZlNTQgbGVnYWN5LXRydW5rCiszNDY3IDM5Yzc2NmE2ZWQ1ZjlkYWIyMjk2NGU5MWQxMjUwNzhkODBmNDU5NGEgbGVnYWN5LXRydW5rCiszNDY4IGNlZjUxNGY5OTc0Yzk4M2JkZmFmMWU2ZmY2MjY1NWJjNjk5ZDQxMWYgbGVnYWN5LXRydW5rCiszNDY5IGJjYTc4NTVkOGUwOTNmMDlmNTVjYjBhMGYyYjkxMGFiNjdmZTMyZTQgbGVnYWN5LXRydW5rCiszNDcwIDIwOTA1NWU1ZTQ2YTQwZDIyNmNmZjVjNDYyMzZjODA1YzkxMjY3ZjQgbGVnYWN5LXRydW5rCiszNDcxIDZlMzdhZjNmMjYxYzM5YjkyZmU3MjFkYWI0NDIwYjljOTc0MWY1MWMgbGVnYWN5LXRydW5rCiszNDcyIDk5ZDllN2U5ZjM3NjdlODkxNDAwYmQzOGIwNGJlMTU1ZGE4YjI1MmMgbGVnYWN5LXRydW5rCiszNDczIGNmZjdjNDhmYTllMTVjZWM2ODA1OWE3NTkwN2FiYjQ0MmVlYjNmNWIgbGVnYWN5LXRydW5rCiszNDc0IDFlOGJkMzU0YjY3NjExMmQ4YjNhODRiODcyZDcyN2Q5YWE2M2UwNGUgbGVnYWN5LXRydW5rCiszNDc1IDAyYzAzYWZjNTEzZTk1ZjMxNzhlOTc3ZWUyMGYzNjU4MTA4MzhjNzkgbGVnYWN5LXRydW5rCiszNDc2IDc0N2NlN2UzNjA4NDRhMzNlYzFiMmFlYmJlODhiYTY1NDBlMGYyYWQgbGVnYWN5LXRydW5rCiszNDc3IDA4MzBjZjJiZTFkMmM1OTI3Y2MzM2FlNDJkZjhkYzZkOTc2ZTk3NjggbGVnYWN5LXRydW5rCiszNDc4IDJmNjkxZGM1NGJmYTZhODg1NWE2NDI5NDRlZWQ3NDhjNjI5ZWE4ZDMgbGVnYWN5LXRydW5rCiszNDc5IDZlZTM4MDM0OWM4NDkwMjMyOTc3ZDUxYmUyOTg0ZmM1Njc0M2QxMTAgbGVnYWN5LXRydW5rCiszNDgwIDkxOGJlZTkwZjczZTE1MjJlMTc2NjQxOTg0OTE1YTgyZmZkYTFmYjggbGVnYWN5LXRydW5rCiszNDgxIGFjZGMwYjlhNmM3ODQ4YTY5MzdhYjc5Y2ZmNGQ5MGE1NThkZDg5YzUgbGVnYWN5LXRydW5rCiszNDgyIDJmM2YyOTNlZjVmMTU1OTc2OTAwNzBjZGU5NTExZTk0ODhiN2RlNTEgbGVnYWN5LXRydW5rCiszNDgzIGVjMzEyYjY0N2ZjYmZhODk4ZmRkYTk3NDk0Yjc2M2NjOGNkNmJjMzAgbGVnYWN5LXRydW5rCiszNDg0IDkyZTZhOGNmMTRiZWU2NTU2NWVmOGFkNmU5YmIxOWZkODc4ZDkzNTEgbGVnYWN5LXRydW5rCiszNDg1IGNkMzk3MjY2ZGMxYzhlMWUxOGQwMmY4ZDlmZTkzNDI1N2ViMzYwOWQgbGVnYWN5LXRydW5rCiszNDg2IDc4NzQyYjNmZGQ0NGJhOTBlMjdjM2U5ZTFhYzllNGZiYzI5NjE1M2QgdW5sYWJlbGVkLTIuMTYuMgorMzQ4NyA5MDdjMzk5NmIxNWMyYzg1NTRiMDQyMWMzYzE5ZTY5YmVmZTI1NDhkIGxlZ2FjeS10cnVuaworMzQ4OCBhODA2Nzc3OThmODQyMDRiMWY4MzU2MGNmMTA4ZTYxNGJhYjk4NWE4IGxlZ2FjeS10cnVuaworMzQ4OSBmM2M5MDdlZmU1ZDcxMDIwMmJlNjhmNmRkNDVhNThhMmI4MzI2YTg2IGxlZ2FjeS10cnVuaworMzQ5MCBmZTc2NTg1Yzc0OGU4ZWEzZDgyZGE4NjZjZTZiNmUyYTA2MTk2M2M2IGxlZ2FjeS10cnVuaworMzQ5MSA3MTZiZTc2NWE3OWIyYmM2ZDMyZDYxM2VlMzkwOTcxNTBhN2JjNmJkIGxlZ2FjeS10cnVuaworMzQ5MiAyNWQxYzk5MzI1NTgyMmEwNzM3NmE0YjY3MjJiNmJlODY1NjIwOGJmIGxlZ2FjeS10cnVuaworMzQ5MyBlNWQzNjM1NDAxNzlmOWU2Yzk3ZjFhOGVlZjFjMWQyOGFlNzc4OTU2IGxlZ2FjeS10cnVuaworMzQ5NCA4YTM1NzRhMDdiMTg1ZDViYzJjZDBkMzk5Mzk4Y2VhY2U3NGNiYTRlIGxlZ2FjeS10cnVuaworMzQ5NSBlMmRlY2E5ODMwMDgyYjcwMzljZDg0YjU3YzgwMWMxNGM5ZGEzZGM4IGxlZ2FjeS10cnVuaworMzQ5NiA1MTljMjUwMzljNmE0NTg4YTdkZGVjZjJhYWEwYWUzOGU0ZTgzMGQ4IGxlZ2FjeS10cnVuaworMzQ5NyA0MDllYTc0ZmViMjE3YzI0Yzk0NGM3M2M0MTlmZDM2M2EyNWNhMjc2IGxlZ2FjeS10cnVuaworMzQ5OCAwNzkwMDgzNGNjOTdkMWI4ZGYxYzM3YTc4MWZjNGMxYzliODI1MjVjIGxlZ2FjeS10cnVuaworMzQ5OSBlNWZiOWNkYmUwNTA3YmIzMWY0NjNiZTJjNGExMDY0MjQ2YTM3ZWJmIGxlZ2FjeS10cnVuaworMzQ5OSA3OGE3ZWQ2OTUzMDI1ZTdlY2RkZTk1ODUwOTliMDFhNmFlNDBiNzZhIGxlZ2FjeS10cnVuaworMzUwMSBmMzg0OGY3NGIyODI3OTlmMzRhMDM4ZDFhMjhkY2E4OGM3Y2U2ODhlIGxlZ2FjeS10cnVuaworMzUwMiA0MTkyZTI0ZWM1NjJkMWUwOWIzODhjZWU3MmI4MWIyMDdjZGY4MzlkIGxlZ2FjeS10cnVuaworMzUwMyBjNDQ1NDVlNTk1YTE1Y2MwYjIxODYxM2JjZDFlYTJkZGIwZjNkNDNmIGxlZ2FjeS10cnVuaworMzUwNCBmOGY2NGNiZDlmYjVhMTliYjAwNjUxYjlmNTQ3NDgzYWFiOTI5YzYzIGxlZ2FjeS10cnVuaworMzUwNSBhYWIzMGI3NGNmNmE4ZGYyNzYxMTFkNzc5NGU0Mzc0NDU5MmQ1MTk3IGxlZ2FjeS10cnVuaworMzUwNiBkMjA3YmVlZGM4NmQ2OGJiZjNkOWVkOWFjMmU2ZDQyNmIzNDkyZWMzIGxlZ2FjeS10cnVuaworMzUwNyA2Njg4NTNkN2I2NGJjYmE0NDA5OTY0OTgzMmJjMWIwODFhYTdlYjg4IGxlZ2FjeS10cnVuaworMzUwOCAxM2QwZmRlNDg4MzI2M2JjNmQ1MjVhYzYzNjg5YTU1OGJmMjA2MzAzIGxlZ2FjeS10cnVuaworMzUwOSBmMzc5MWM0ZmI3MjQ3YjA4ZWQ2MTYxYmRiNThhOTY4ZGRjMDZkMTFjIGxlZ2FjeS10cnVuaworMzUxMCBkMGE1YzMwMGVhYWY1ZWMzYzEwMWU4OWZmMzEyNzE0YTRjMTNiZDA2IGxlZ2FjeS10cnVuaworMzUxMSAyNzk4ZDg2MDNiZjAyODczZGU4MDUwZWFjNWM4ZDI3MzQwZTllZjA1IGxlZ2FjeS10cnVuaworMzUxMiBmNDE0MzNjOThjNWViMDJlODhjYWU5OTk4ZDkzYzJiODdjOTM5NGM3IGxlZ2FjeS10cnVuaworMzUxMyA1ZDBiMjc4MWUyM2I0MGFmNTdhYzgxMmM1ZTViMmY0YzRhZDk0ZjIwIGxlZ2FjeS10cnVuaworMzUxNCBhMjJhMzUwZDNhNWRkM2NkMDI0ZDY4Y2FjZDI1ZjNiOTE2Yzg1YmJhIGxlZ2FjeS10cnVuaworMzUxNSA1ZWZhNzZjYTE3ZjJlZDEyOGM2ODIzMzI3MDU4YzhhMzdiOWM0NDM1IGxlZ2FjeS10cnVuaworMzUxNiBhM2EwMjdjNDllYjEzYzA2ODBlMzNmMTE3YjFlNWQ4MzI0ZGM0MjM1IGxlZ2FjeS10cnVuaworMzUxNyBkOWNiNTVlZjM0ZTJlNTA0YjEwZmVhMGQ4NDE3OTIwNWQ3ODkwMmU4IGxlZ2FjeS10cnVuaworMzUxOCBlMTQ5Yzc3ZDE3M2NhYWRjMDJkZmI3YjVmNTQ3YjI0YjcyNGY5MmU2IGxlZ2FjeS10cnVuaworMzUxOSA0ZDFhMTVmYzQ3NDhkNmQ5MGQ0Y2ViZTU2MjEwYWY0YzQ4Y2JhOTBiIGxlZ2FjeS10cnVuaworMzUyMCBhNjM1NWM4MzU3OGQ4ZDNlOGVmOThlNDllMDhlNjFmYTk1NmI5NDRmIGxlZ2FjeS10cnVuaworMzUyMSBmY2NkNDE1ZTJlYjhjZDBhYTVjMWFhM2ZjMTg2ZTFjZmEzNzg4OTVhIGxlZ2FjeS10cnVuaworMzUyMiAyYjU0Y2NjODUyZTQwNGE0MTcyYmM3ZWVjYzg4ZWUxMDA5NWE5YjlhIGxlZ2FjeS10cnVuaworMzUyMyAwNDNkYTE5MzAyZWYyNDRiZjU3MjFmMjE4NmNhMjc5YmNiY2Q5YTA1IGxlZ2FjeS10cnVuaworMzUyNCAyZmFjMjA5ZTFjM2Y1NTIyMTJkMjk2ZTE1NzI1MTUyOGU0NGQzMDQ4IGxlZ2FjeS10cnVuaworMzUyNSAzZTMzY2E1NGZiZGMxYzMyNjFkZDhkNjgwZGYxZDVmYTNmMDZhZDdlIGxlZ2FjeS10cnVuaworMzUyNiA1ZDc0YTk4NzM1ODk2NzQ1MGQxOTJiZTA4ZDI1OWNkYWU5ZGMyMDAzIGxlZ2FjeS10cnVuaworMzUyNyAxODA4Y2E1ZDg4ODMwOTdjNzJjNmE4YTg5MTQzMDQxYzIwZWExM2MxIGxlZ2FjeS10cnVuaworMzUyOCA3Y2Q1MzNjZjE5NGE5ZGJlYWU5MGI4NzY4ZmY1ZGQyZWUzM2JmM2E4IGxlZ2FjeS10cnVuaworMzUyOSA1NjA0MDdlYzYzMmI5ZjZmY2ViZjg5NzU1ZjM4M2QxZWI0NzJlNGFhIGxlZ2FjeS10cnVuaworMzUzMCBlMWM0NzNmOTI5YzQ3MjY0N2YwMjEwZmE2OGJmYzY4YTkwNTAyMzBkIGxlZ2FjeS10cnVuaworMzUzMSAxMzI2MDJkODU0ZDhjNDBmNGU0OTNlOWZhYTQ2ZjYyN2VjNjQxMTA2IGxlZ2FjeS10cnVuaworMzUzMiBhNWZjMTA0ODQ5YWEyMWY2MzIxZjVkOTk3ZTNhMzdmYjY1YTdkOWQzIGxlZ2FjeS10cnVuaworMzUzMyAyODdmYzMyYzFkOWMzZmIyZjIyMWRjYjA1NmEyNTM5MjliZTMwN2NhIGxlZ2FjeS10cnVuaworMzUzNCBlZTRhMmY4OTMyNTRkZDQwZTAxYzI3ZGNiNjFhNTM4ZDM5MzQ3MGUzIGxlZ2FjeS10cnVuaworMzUzNSA0YzhlNWZjYjMzMDE1OWRmMzc4ZjM3YjU4MzI4OWZhZmFhNWQ5ZGE5IGxlZ2FjeS10cnVuaworMzUzNiA4OWUxZTVkOWNjYmYwM2Q5NDg1MGYyMTZjNDE5ZDRjMTU4YzU2NTg1IGxlZ2FjeS10cnVuaworMzUzNyBmOWU1YTI4MjM2Nzc3ZTUwYTMyZjEwZGIxOTM4OTBiMTlhZjQyY2I4IGxlZ2FjeS10cnVuaworMzUzOCBmYWFmMzg0M2I4YmQ1ZDFhNmZiN2MzMzU3YTBlNDg4MDMwYTA2NGVkIGxlZ2FjeS10cnVuaworMzUzOSBmN2M2MDYxMDNkZDVlZDFlZWEzZTU3MzNlZWYxNzU1NjEzMTAwOGU0IGxlZ2FjeS10cnVuaworMzU0MCA3YmU3YTdlMGM0NjVlNzZlOGQ5N2U1NDU5ZDVmZTYzOGVjZjVjZmU1IGxlZ2FjeS10cnVuaworMzU0MSA4OWQ3ZDVlMTM2YWRkY2U3YjU4ZTc4NzVlZTI4YzRmMjZkZGQzZmY5IGxlZ2FjeS10cnVuaworMzU0MiBmM2EzMjU2NjJkMzljNjJiMDhjYjA0MWI0ZDMwNzc5MzU4OWI1YTc4IGxlZ2FjeS10cnVuaworMzU0MyAxMDVkMzMyYzI3N2M2NTE5YTEyODM2ZTI5ZWYzNTE5ZjliODZjYWFhIGxlZ2FjeS10cnVuaworMzU0NCAzNTQzY2U4OGEzMWVkODVmMmIxZGE1MmUyOTgyMzAyNGRjNTYyYTM1IGxlZ2FjeS10cnVuaworMzU0NSBiMDNkMDBlMjRjM2MxYTA1N2Y4M2M0NTdlN2Y3YTYyNWRjYjNjMmY1IGxlZ2FjeS10cnVuaworMzU0NiA3MTBjNmIxM2U4NzUwODNhNjQyZWQ0ZTQyZWZlNjhmOTM4YTZkNDE0IGxlZ2FjeS10cnVuaworMzU0NyBhNGFhODMwMTJhZjNiMjNmYWFlYzJjMDlhYTBhNmU5NTE2NzY4YjJjIGxlZ2FjeS10cnVuaworMzU0OCBjMDJiM2ZlMGIzM2MyNTllZmNkZjFmODIzNjlhZjY0MTE4MTUwY2E1IGxlZ2FjeS10cnVuaworMzU0OSBhMGEwYzc2ZjZlZjZhOGNiNTdlOGNkNzQwN2IwMDFlMzg5ZWZhZTFlIGxlZ2FjeS10cnVuaworMzU1MCBhZTRlOTBmYThiY2E1MjE4OTRiNzA4YTllMDRkMDBlNDU1NDIyYjAzIGxlZ2FjeS10cnVuaworMzU1MSBiMmM3YWFiZmE5MTNiOWJiMmY5ZjMxNzg1YjFlZjY0OWEyZjUyOTQzIGxlZ2FjeS10cnVuaworMzU1MiAxNThmMGQ5Y2RkNDBmNTM1ZGE4ZjU4NzEyMWFlNzEzNGVkNjA4YjUwIGxlZ2FjeS10cnVuaworMzU1MyA1YTMwYTRlMDU2ZTdjYzM3ZDcyZjEwYWRlMTIzNDBjODRhODgyOTY0IGxlZ2FjeS10cnVuaworMzU1NCBmOTkyYWMyYTM4ZDVjN2YzZmM1YTQ3MzA3YjYwZWRiMzM4ZDczM2Y0IGxlZ2FjeS10cnVuaworMzU1NSBkY2UzYzMwY2Q3Mjc4N2E3NDNkYjdhODdlNDYxNjk3YjI5OWZiZDY0IGxlZ2FjeS10cnVuaworMzU1NiBlOTljMjI0OTBiZmJkNGUxNzVhYjA5NDZlMGQ3Yzk5N2Y4ZjNlZGQ3IGxlZ2FjeS10cnVuaworMzU1NyBjZmZlOGQ2YjJmMDliN2VlZDE4NjdiZDczOTMwNWE3NmY0MDkxY2NkIGxlZ2FjeS10cnVuaworMzU1OCA3YzMyNDVjMTg2Nzc0Yjg0NDQ1NDBiZWY2ZDUzOTNhMzYwMTk2ZWQzIGxlZ2FjeS10cnVuaworMzU1OSAwZmZmZjQwZDEzZmY0NzBlMzkxZTg3MTljZDI1YWJjNTNlMzU1NGIwIGxlZ2FjeS10cnVuaworMzU2MCA3ZDZhMmQ5NTBmMTNjNzQwNzg1YzRmYWYyMDMzMWI1NmFhNjFiZmZmIGxlZ2FjeS10cnVuaworMzU2MSA5OGY1MWY2MWNiNGI3NmFmZjc3ZDVkMGJjMmVhYjVhOWQzNjliZTRlIGxlZ2FjeS10cnVuaworMzU2MiA0MjI5Mjc1ZGVjMzI2MTAzYThkYjQ4NjdjODczNzM1YjI2MGM2NGFlIHVubGFiZWxlZC0yLjEwLjIKKzM1NjMgYmU2MWUwNzJhNTA1YjllY2IwZjk3ZjdlMWIwZDA4YTlmZWUxY2QyYyBsZWdhY3ktdHJ1bmsKKzM1NjQgNGEyODZiMzAwYjVlZmNhZjI4MWZkYmU4YjUzMjZiMTlhZDk4ZmNjOCBsZWdhY3ktdHJ1bmsKKzM1NjUgMWNlMmMwZjU2NWVmM2U2YmFmNDQ0YzgyOGZmNzI5MjA5YmM5ZDEzYiBsZWdhY3ktdHJ1bmsKKzM1NjYgMWQ4NDE1ODdhZWRlYjA3MWE5YTU4YTI5Yzg3MGFjOGUxMThhZmY3NyBsZWdhY3ktdHJ1bmsKKzM1NjcgY2MxNzJjZTA1NTYxYWYxNmFhMDViMjE1YTA3ZDUxZjJjYmJjYzdkMyBsZWdhY3ktdHJ1bmsKKzM1NjggYWFjODIzMWE3MTVjN2NlNDg3N2VhZTZmYmM5ODFlZGI3YmMzMjdlNiBsZWdhY3ktdHJ1bmsKKzM1NjkgY2Q1OTg5YTU4YmNmZTAzMjBkZGQyYjE0YzQ2OWY3YzJiNWE0YzQ5MSBsZWdhY3ktdHJ1bmsKKzM1NzAgYWY0ZTI3MWQwN2IxZGQyZWU1YTcwNmNkYmVhNmViZWJmOTRkODJlZCBsZWdhY3ktdHJ1bmsKKzM1NzEgNjI3ODkzM2QwMmUzOGJiOGFiZGRiYzc1NDY3M2Y3OTYxN2QxYmY4OCBsZWdhY3ktdHJ1bmsKKzM1NzIgYzgxNDkzNzg4MGNjM2NjMDA2NzYwODJjYzhhOWI0YTRlNWU5ZDc4YyBsZWdhY3ktdHJ1bmsKKzM1NzMgOTBjNWUyYmI0ZGE1NWJlZGU2ZTdkOGRlNDRlNmEyYjBiY2RlMTFjZCBsZWdhY3ktdHJ1bmsKKzM1NzQgNDc0ODIzZTVmN2RjMTNiOTZkNWZkOGViOWM4MDljY2U4YWE5MDQ2NyBsZWdhY3ktdHJ1bmsKKzM1NzUgYTU4YzA2MWI0ZjU1NTI1MTc3ZDY3YTE1MmU3ZTBmOGY5M2Y0ZmVhNyB1bmxhYmVsZWQtMi4xLjIKKzM1NzYgMmUwYThhM2VlZjRhOGY5NzViMGMxMjY3MTM1MmQxMjU3N2Q2MzZiYiB1bmxhYmVsZWQtMi4xLjQKKzM1NzcgYjlmY2ZiOTlhM2U1NGI2Zjc2NjM1MDhkMTBlMGQ4MDg3ODFiOWY3YyBsZWdhY3ktdHJ1bmsKKzM1NzggMThkZjY3NDUzOWRhNTUzMDVmNmQyNmMyZGQ0NjAzMDZhMGZmMmMzMyBsZWdhY3ktdHJ1bmsKKzM1NzkgZjViMWRkZmRkYmE4MzNiMzFiNmFhZjYxZDgxMTMwNDlmMDQyMzQ4NSBsZWdhY3ktdHJ1bmsKKzM1ODAgMzE1MjcyZWM0ZDViNjNkNWVkMmU1ZjVmMDNjOGZhMTFmZmNkNjMwYiBsZWdhY3ktdHJ1bmsKKzM1ODEgMTY5MWVhNWQ5ZDRiNWIzNDQxOTdhMzM2YzczMjFjNWVhM2JlOTI2NSBsZWdhY3ktdHJ1bmsKKzM1ODIgMDBmMWU4ODY0ZGNjZGZlNjE0ZDI0YjNlYzM0NDVmM2U0YWNiYzkxZCBsZWdhY3ktdHJ1bmsKKzM1ODMgYzkxNGIxMGJmMmVkNzc1YzAzMmQ3NGY1YWU0NWUwNDc2NjAwYmEyNCBsZWdhY3ktdHJ1bmsKKzM1ODQgMjQ5MTc3NGUzNmE5MGNiYjVjZmUyNjM0MzJiMWE3NmQyZDNhYTExOSB1bmxhYmVsZWQtMi4yNS4yCiszNTg1IGY1NTAzMWQ1NDliNzlhNmJlYjA3YzMwYmUxZGY1M2ZlNDczNDQ5ZWMgdW5sYWJlbGVkLTIuMjUuNAorMzU4NiBlZDUyMmM5NDhkNDI4YzM3YWUwZTlkNThlNGM5ZTk4NTA2ZGM3NjE5IHVubGFiZWxlZC0yLjkuMgorMzU4NyBjYWRlYjc5YzEzMmY1NTAyY2VmZjkyMzEyMDIwNzY2MGQ5YjI1NzJiIHVubGFiZWxlZC0yLjkuNAorMzU4OCAyODUyZWRiNGZmZmUwZWMzNzg5NWYwMzE0MTIzZTA4NDVmOGVjMGNkIGxlZ2FjeS10cnVuaworMzU4OSAwNjU3MDQyOWYwNjJkMzE0ZDBiODY4MjJkMWEzY2NkYTUzNDZlMjBlIGxlZ2FjeS10cnVuaworMzU5MCBkNmY2YTFjYjdkNzllOWIxOThmYzE1ODNiMjg2OWM5ZTlmNDAwODE1IGxlZ2FjeS10cnVuaworMzU5MSBmN2VkZmE2ZDBkY2JhNDg3MmJmNDA4NGY2YjU3NGQzZWExMThkZDM0IGxlZ2FjeS10cnVuaworMzU5MiBiMWJiNzRhMmI1OTMwZTliNGZjNzhlOWI1NWY2NjkxNTkyMTJhYmQwIGxlZ2FjeS10cnVuaworMzU5MyAyMDQwMDFkZGRjYzMyZTM4ZTEzNjk4ZDhkMmRkNTk0Y2M2ZDI1ODhiIGxlZ2FjeS10cnVuaworMzU5NCBkMmY5OGJlZWM4NWNmMjI0Yzg4Mjk4YTBkYjZkZTk1ZDdjMjllNDA3IGxlZ2FjeS10cnVuaworMzU5NSBmZTcyOTg4MTNmMTcxNGI0N2ZhMmI5MzA2NzA2ZmYzNWY4M2FhNGQ3IGxlZ2FjeS10cnVuaworMzU5NiA4YTkwYzliYmJkZjBjOWQ3MWE4MzRjMmYzOTE5YWMwNDA1MTJkZTc1IGxlZ2FjeS10cnVuaworMzU5NyAwYjMyZWM4YTNlMjA4MjFlNjQ4ZWUxZTVjYTkxMzkxODdkMDA2YmM3IGxlZ2FjeS10cnVuaworMzU5OCBhMmYyYThiZDU2ZjliZmYxYTUyMWE2Y2M2ZWQ5ZDA1ZjIwNDdjNzUwIGxlZ2FjeS10cnVuaworMzU5OSA3MmJkZGZhZDM1MWE5YTIyMGRiMjQ1MDRkYWJhMGE2OGJhZDgyOGYxIGxlZ2FjeS10cnVuaworMzYwMCBjODg3YTFmMzA1MjU1ZDFhYmZhNmZlNmFlZmVhNjhmM2U2ZDZkMWVjIGxlZ2FjeS10cnVuaworMzYwMSA4NzAxYjkzMzgzYWIxZGRlOTE4ZWI3YzZjZDZmMDJlNTNiOTViOTA1IGxlZ2FjeS10cnVuaworMzYwMiBmN2E3NTJmYjdiNzM3ZDFmMGU5Y2I0NWE4YjAyMTI3NmI4OTY2MjJiIGxlZ2FjeS10cnVuaworMzYwMyBhZGE1NmIwNzY1YzE2NzJkOWRlZDgwN2Y2MzE2NWM3Nzg1YjU0NTA1IGxlZ2FjeS10cnVuaworMzYwNCA5YzcwN2Q4Y2YwYzhkMTZlNmQ4NjllZmI2M2E2ZTgzODgxZGVmNzdjIGxlZ2FjeS10cnVuaworMzYwNSBkNzE2OGNjMmJlMDc4MzNkMGExNWEwNmZhOTQ3NDZjNTkzM2YxOTAyIGxlZ2FjeS10cnVuaworMzYwNiA2NDBjMzZiNjRkZWExY2Y3MmZlZTQxZjUxMTljMDZkNTM0ODQ4MzExIGxlZ2FjeS10cnVuaworMzYwNyA1Y2FlNzY1MzE3MWI0NGExOWQ2NWFiNjEzOGY3MTgxNTQxY2Y2N2M0IGxlZ2FjeS10cnVuaworMzYwOCA0NmMyMTczMzdiZGU0ZjU0OTk4OTAxNGUyZmFmYTc4NjQ2ZDEzYTEyIGxlZ2FjeS10cnVuaworMzYwOSA1NjBlYzcwMzA4MTc3YjQzOTFhZmExNzFkNjA0ZGYzMWU3ZTM0NDBjIGxlZ2FjeS10cnVuaworMzYxMCA4OWE1Y2UxOWQxM2FmMjA4ZWExMmY1ZTZlMDAxZGYwYzI0YTdhNWRjIGxlZ2FjeS10cnVuaworMzYxMSBlNDk5MTE2ZDQ1ZTQ5MTlkYzQ2ZDc1MmIzODQ5NjgyZGU4N2RkMjViIGxlZ2FjeS10cnVuaworMzYxMiBkN2UzODQyYjJlN2IxMGZmZmIwNGY0MWViY2VhYzcwMTUwMTI5MTZmIGxlZ2FjeS10cnVuaworMzYxMyBlNDYzMjJhMzFmNjIyYmExYzlkMDQ0OWJmZDBmN2RhM2ExZGQ2MDhjIGxlZ2FjeS10cnVuaworMzYxNCBkODJjMmJhNGY4MTg3YjUwMGJlNmRkNjA0ZGM3ZWUzZmMwOGU2YjBmIGxlZ2FjeS10cnVuaworMzYxNSBjZDM4MjQ1NmM1NzJiYmFhMjA1NTNlOWIxMTEyNGEzZWQxNmU3MGM1IGxlZ2FjeS10cnVuaworMzYxNiAyOGNjZWFiZjhjY2VjNjgyYWM2NzMxOGMyM2NkODg3M2QxZjc4YjNmIHVubGFiZWxlZC0yLjM2LjIKKzM2MTcgY2JmMjhkNjU0NjlmNTA2MjQ4YjMyYWM0YzIyYjgzNDE2ZDYxM2E3OCB1bmxhYmVsZWQtMi4zNi40CiszNjE4IDQ3NDljOTU3NDY2Yjc3ZjEwODAxOTllYzZkOTcwZjM4NjdjYWNhMTcgbGVnYWN5LXRydW5rCiszNjE5IDJlYzA4YTlkMDMyNTUyMTA2Y2JiYmVhNmNkMGEwMThiZGFmNzkwMjAgbGVnYWN5LXRydW5rCiszNjIwIGYyZDA0MDU0YzkzNDZhMzY0NWY2ZDE1M2ZmY2M4NWQzZmE1MmM2NmQgbGVnYWN5LXRydW5rCiszNjIxIDkxMzM4MDY3Zjc1MDFlM2UxZDlkNjM4ODQ1YmFmYmE5Zjc5NmFjZTggbGVnYWN5LXRydW5rCiszNjIyIDlmYjBmMWFmYjM0Y2QzYTg3ZmMzNDA0YjAwM2I0YjZlMzk5ZTJlNTMgbGVnYWN5LXRydW5rCiszNjIzIDRmZjYwOGM0Y2FjYWUwYzE0NzRiNDlmNDhiNDViMzlkNzNmMzljMjUgbGVnYWN5LXRydW5rCiszNjI0IDMyOGY0NDZkMjAxNjc2MDZmOGQyNjJjMDQzNGExMDhiNTVhY2MyNDkgbGVnYWN5LXRydW5rCiszNjI1IGFlOTNlYzRkZDU1NjM2OWJhZmFiMzljNGUwYTg2NTNkYzc3NDE0ZjIgbGVnYWN5LXRydW5rCiszNjI2IGQ4Y2EwZTkxM2M0NDQyYTZiNGNkNjMyMjMyNjg5NWQ3NjQ0YTlkYzggbGVnYWN5LXRydW5rCiszNjI3IGE4OTMyYTRiOTYyNGQ5YmJkMjU1NDlkMmE1MjZjMTA1OTk5YTNjYjYgbGVnYWN5LXRydW5rCiszNjI4IGE1YTQ2NTRjMzNiZTViMzk3NzYxOTQwMzYxOTZlMzMyZTQ5OWFlODggbGVnYWN5LXRydW5rCiszNjI5IGQ3NzNhNWY4OTQyNjg3OWRiMmZlYmQyNTk4OTEyMzMxY2Q4YmYzM2UgbGVnYWN5LXRydW5rCiszNjMwIDNhNWYyZjExMGY3MDYyYjllMjY1MTJjZmVkNDlhYzAyYWU2MjRiODYgbGVnYWN5LXRydW5rCiszNjMyIDUwMTAxZWI2MzExYjA3N2M5ZDk2NzMzNjk0MjQyYTQxZjg3Zjg4NmUgYWxwaGExMDAKKzM2MzMgYjE4ZWIyZjRhZjBjZjNjNTkyZWMyM2M2ZmYzN2M2OGU5NjUwODFjZSBhbHBoYTEwMAorMzYzNCAxY2VhOWQ4MGEyYmMxY2U0YjFlMWY2MDhmZDI2ZDMwMDVkY2JmNGY0IGFscGhhMTAwCiszNjM1IGQ5ZDIxMzgyYzczYjkyYzE4MWEwMmNhM2EwNDIwOTRhZjIzM2EzOTMgYWxwaGExMDAKKzM2MzYgNWI5NzAwNDdhNzIyYzE2ZTEyNmY3MmUwNWY1MWNhNGRkMjk1NTVhOCBsZWdhY3ktdHJ1bmsKKzM2MzYgZWY3M2Q0MGE4Mjc5NTFjOWRhN2EzMmNjOGRiZTM4NjAwZmZlYzdkYiBhbHBoYTEwMAorMzYzNyAyOTJjNWU3OTI2NGRmMjY2ODI1NmM2OWU0ZTg0YmU5ZDA1Zjk2MWZjIGFscGhhMTAwCiszNjM3IGQ4Y2RhYzhmZGM3NDUwYmUxYmUxNjIyODY1NDk3ZDRhYTBiMmRjYTAgdW5sYWJlbGVkLTIuMjUuMgorMzYzNyA4YjA4YTM2Njc2ZDRlZGE0N2UxZGE3Njk2ZTRiMjI4MTIzMTkzZjNiIHVubGFiZWxlZC0yLjM2LjIKKzM2MzcgMTlmYTAxYzlmYWYzOTc2Mzc4ZjY1NGJiNGZhN2NkM2RiMjg4MmE0ZCBsZWdhY3ktdHJ1bmsKKzM2MzcgOGVlZjIxMTU1NWM2ZDM1ZjRkMjljOWRjNzc0YTI0OWJkMWM3NGNkMCB1bmxhYmVsZWQtMS41LjIKKzM2MzcgMGNhNjUzZDY3N2QzNDk3NDNjMjljMWFlMjIxMmE4ZGNiNTcyOTNjZCB1bmxhYmVsZWQtMi45LjIKKzM2MzggNjA3YjE5YWUxZTEzYTMyMjA1MDZlODVjMjg4N2ZmNzQ5YzY0ZjU1MCB1bmxhYmVsZWQtMS4yLjIKKzM2MzkgMzFmMWI5ODdjZGY4MmNiY2IzOGY1MDEwOGEwYWYwODM3OWQ4MzFmMyBhbHBoYTEwMAorMzY0MCBkOTYxOTliZTc0ZTZhNDQ4Y2M5NTQwYmQ5NmI5ZjFlNGM5ZjQxNWQ2IGFscGhhMTAwCiszNjQxIGY4ZDNmZjY2MzliNTk2NzBkYzExMzJkOWU4ZGNlNWQ4Y2M5NWZlYzkgYWxwaGExMDAKKzM2NDIgYTc5YjAyNDM5N2Y4N2M3MThhMmEzMWJkZjIzZGQ5NmRlMDI4ZWI3OSBhbHBoYTEwMAorMzY0MyA1Y2U0MDQ2MmFlOTlhZWQ5NGViNTBmODE4YzJjNGVjYjI3NzI5MjBhIGFscGhhMTAwCiszNjQzIGI4NTgwZTMyMDQ2YzFiNjkzOWNlYWI4ZTkzOTJlZWU4ODBmMmU0YWUgdW5sYWJlbGVkLTIuMS4yCiszNjQ0IDA4ZDRkYTQ4ZGNkNTg4NzQyMDgxMjcxMjQyMGZlMTdmMzAxNzU3MmQgbGVnYWN5LXRydW5rCiszNjQ1IGQ4YmEzY2Y5ZGFiY2E5NzhmZjU2NWYzNjE5MDA3MThhNWJjODc0NDggbGVnYWN5LXRydW5rCiszNjQ2IDFmOGM2NDg0OTIwMzQ4MDAxNTc1NWRiNTM4OWRkMjQ1YmRlYmIyYjcgdW5sYWJlbGVkLTEuMy4yCiszNjQ3IDZjMDY3NjlhODg2OWIwZGRmYWM3NGE5ODBlODY5NTUyNTg5NGI0NmIgbGVnYWN5LXRydW5rCiszNjQ4IDI1YzExMmIzYzk1N2VlMTkxNTI1YWM1NDdkODA3ZDlkMDA3OWI1ODggbGVnYWN5LXRydW5rCiszNjQ5IDEwOWQzOWRlYzEyODg2YmUzYzBjY2RkN2ViNjNlNDllZGFhZmMzY2IgbGVnYWN5LXRydW5rCiszNjUwIDVmM2Q2ZTRiNTUwM2Q1MWVhMWNiMjI0MmFkNzE3ZWY1NzE3MGU5MTYgbGVnYWN5LXRydW5rCiszNjUxIDMwNTc0OGViYWI0MzcyNDUyNWJhNGRmOWU3ZjBhZDNmYjk2MTk1YTkgbGVnYWN5LXRydW5rCiszNjUyIDRkYzdiMTViNmI5NzBkYWFkZTFlMzc4ZTczM2U3ZjhjMmViZDYwZDAgbGVnYWN5LXRydW5rCiszNjUzIGM4YTk1YzE3MGUxZWQ4NzM0MDczNDViOTFhNWE2Yzg0MzMzODk0ZjAgbGVnYWN5LXRydW5rCiszNjU0IGVkMzZiM2U5Y2Q3ODY1YWM2YjUxMWUwZDQ4ZWU1MGEwNWUyZWRkNTkgbGVnYWN5LXRydW5rCiszNjU1IDYzZWI2Yzc1MDkyNzU3ZDIwMDQwMDc5NzJhMWU0MjA5MWEwNmVkNDEgYWxwaGExMDAKKzM2NTYgMTljOThmMjBhOWI4M2EzMWNiNDg5YmNhY2IxMjI4N2EyZjE4OWE3MyBsZWdhY3ktdHJ1bmsKKzM2NTYgMDhjZDhiOTZiNmJmYzI3OGI2NmVkNDExZDNiOWQ3YjYzNGI4OTkxZiBhbHBoYTEwMAorMzY1NyA2YmNlMzNkN2YwZDExMmY0ZGRiMzk2ZWU5NTExYWY2NzY5MjMxMjE3IGxlZ2FjeS10cnVuaworMzY1NyBmNTMzNmQ4NmY1OGI4ZDlhNGUwMzRmZDRiY2UxZDBhM2ZmY2Q0ZGFkIGFscGhhMTAwCiszNjU4IDMwNTkyMThmNjMwYmQ4ZWMwZjI2YjEyMmVlMzhiZTc1NmVjNzkxYTYgbGVnYWN5LXRydW5rCiszNjU5IDc3MzhjZTk1YmE0ZGNhOWNkOGViNWVjZDNhMmJjZGUwYWVmMDVlNTQgdW5sYWJlbGVkLTEuOS4yCiszNjU5IDgzOGFhMTQwNmVlYWVmODMyMTZlMDQ0OTBiZGJmYmEzMWE2MTIxMWMgYWxwaGExMDAKKzM2NTkgMjQzMGE4NjAyYTY1ZDEzNjk1MzY2YWNjZWNmOTY0OWQ3NTRhMmI4ZSB1bmxhYmVsZWQtMi4xNi4yCiszNjU5IGI0ZjgxNWYzY2YzZTEwOGZjOTdjZjBmMjhiODdmYWJjMzg1MGU2MTIgdW5sYWJlbGVkLTIuMjUuNAorMzY1OSBkMDE4NzY1OGNmMGIzYmI2ZjQ0OWNkYzJkOGIwZTFkOWQ5MTg2YTUwIHVubGFiZWxlZC0yLjEuNAorMzY1OSA2MTJjNzZhYWMzYWE4OWU4NmY1ZTRlY2NmOTgzYjM0Y2VkMGEyOTcxIHVubGFiZWxlZC0yLjM2LjQKKzM2NTkgMzEzZDliOTMwOTQwOWVkZGQ2MmI5Nzg0ZTcwNmNkNDc0ZmNjYTMwNCB1bmxhYmVsZWQtMi4xMC4yCiszNjU5IDhkYzJjZjMxNDViM2JiYmE1M2E3YmRjNWQxZmUzYzZlYjk4Mzk2ODMgdW5sYWJlbGVkLTIuOS40CiszNjU5IDUxZWVmYzA1NGFmZjhiYTNiZTE4ZWRlY2NkOTI3YjEyMTAyZDE5NmIgdW5sYWJlbGVkLTEuNS40CiszNjU5IGFmNjY3YzZkMjA3MjIxMTE5NGRjYzQ5Y2VjY2VhZjFlYmJkMWRlNzYgdW5sYWJlbGVkLTIuMy4yCiszNjYwIGQ0NzA1ZDcwNjYzMjkyNDg5MDBjZjljNjI1NzFhMjIwMjJhN2Q2ZDcgbGVnYWN5LXRydW5rCiszNjYwIDFkY2EzM2ViMmQ3YTUzN2RmMTRhYjM4MzU2OTg4M2Y1NWRlOTk3NWQgdW5sYWJlbGVkLTEuMi4yCiszNjYwIDhmNDRlNDMxMDQxNGI2ZDk1Nzg1YTlmZTM3OTU2MzE0MmFiYWY3YjEgdW5sYWJlbGVkLTEuMy4yCiszNjYxIGRjY2VmMWNiZGE1YTA2ZGM4ZjE3OWFmN2M5ZGQ3NzcyMjI3YWU2OWYgYWxwaGExMDAKKzM2NjIgMmVjOTYxNDBhMzZiNDg4MzQ1YTNjMWExY2U4ZmJlNDBjM2IzYjI2NSBsZWdhY3ktdHJ1bmsKKzM2NjIgNGFhOTFmZDY5NzE1NDc5NmNhMWVkMWE4NWE1NmNjNTljYjNkM2Y4NiBhbHBoYTEwMAorMzY2MyBjNzUxY2JlZWU2ODgyZmIzMDQ2Y2JhMTY2OTkwNmE5NWYzNmE1NzI4IGxlZ2FjeS10cnVuaworMzY2NCAyMzU2MWRjN2IxNWY1ZTgzMjAwYWE1ZmMwNDVhYzRkMTFjYWQ4ZTlhIGFscGhhMTAwCiszNjY1IGU1NjBiMzM0MjQwNWIzMjc3YjRkZmRjNmIwMDM4MDIyNzdkMWVlMGYgYWxwaGExMDAKKzM2NjYgMGViMGVmYzUxZDliMzdjNDhmYTZjMzk0MzNiN2FlMjhlMjQ2OGU3YiBhbHBoYTEwMAorMzY2NyBjMzJlMTAyMDQ2OGRmZjg0MjkxNTc5Y2E5ZGM1OWMxYWI2NzgxZWZmIGFscGhhMTAwCiszNjY4IGUyNjNhNzJhNzZmZTlkNmExYWMwMWUyMzNiNDg1MjQyNzc2Nzg5ZWUgYWxwaGExMDAKKzM2NjkgOTNkMTI5NzE3OGNiZTc4NWYwYjI1NTEyMWFhYjJjZWNmN2VhMjE0OCBsZWdhY3ktdHJ1bmsKKzM2NzAgOThjNTU5ZmQ2ZTJhOTJhNGU1YzA5ZWE2YjMxN2UyOWIwMmRlOTYzMiBhbHBoYTEwMAorMzY3MSBjYmExMDk2ZGE1NTMxMWRkNjJiNjljMGJiYjgwMjcwYTBjMTg5OWZjIGFscGhhMTAwCiszNjcyIDIwNjRiMTY3MDlmMmNlNWY5MGY2Zjg0Yjg0ZWUwNTFiYjFlYzUwYjYgbGVnYWN5LXRydW5rCiszNjcyIDM0NWQ1N2JlYzI2OWQ3YmZkNmYyNmU3MjUxNTY5Y2EyY2QzY2ZiNTMgYWxwaGExMDAKKzM2NzMgZjg2ZjY1MWM3MDdmNDEwYjAyOTAxZjk4ZTVlNDdiZTU3NzViMTk5ZCBhbHBoYTEwMAorMzY3NCAyY2IwNzZhZTg5MjcyMTc5MTAxZTZhMWViM2YzMmU3MGNhODY3ZmU1IGxlZ2FjeS10cnVuaworMzY3NCBlYmY3Mjg4MDM1NWYxODI2M2QxZjg3MWQ1ZDA0MzMyY2QxNzExNmRlIGFscGhhMTAwCiszNjc1IDNmZTc1ODJiOTYzNmRmMmQ0M2M0Nzk0Y2VmMWM2YWViNmRiYWRlMjUgYWxwaGExMDAKKzM2NzYgNDgxNDFlNjhiMzY5ODMyMmZjMDM3ZDE0NDNkODE4NTRhMTA3ZjQwNSBsZWdhY3ktdHJ1bmsKKzM2NzcgZDgzNjY0NThkMTA2NmQxYzA0YTMwMmE4NzFiNDg4OTUyMTA1MzMwNSBhbHBoYTEwMAorMzY3OCAyYmU4MDQ5NjYxNDc2OThiNDE0N2E5NGZlZGVhYmJhMDk4ZmI3ODAzIHVubGFiZWxlZC0xLjEuMgorMzY3OSBmMmYxNjNjMDk5NTliM2U3NTIyNjcxNjNjYWQyNzgzMjJhOTRjOTk1IGxlZ2FjeS10cnVuaworMzY3OSBiNjZjNmUyYTZlMDZmYTM0MmUwNDhhZDAyMzYyZDRmYThlMThkYTMyIHVubGFiZWxlZC0xLjEuMgorMzY3OSBmZWMyY2Y4ZDZlNzc5OTk0OWIwNmQzMzEwMmZlMjZkOWU2ZDc3NzQ2IGFscGhhMTAwCiszNjgwIDg3MDc1MWZiMDllYmZkNTkzMDkyODU5MmY1OGI1OWEyYTk5MjM1ODMgYWxwaGExMDAKKzM2ODEgMGRlZjk0ZjgwYjM4NDk3NDg2ODMzZDlhYWY3MDk5ZmIyZjVjY2I0OSBhbHBoYTEwMAorMzY4MiAyNGQ2NTY1M2UyYWM5ZDQ0NjJjYzM4NDAyMjAwMGE2MTljYWRiZTE3IGxlZ2FjeS10cnVuaworMzY4MiAxYzRlMmQ2MjBiMTYzODI2MTI5N2I1ZmJjM2I4NjE0MmQ4MDY1OTc5IGFscGhhMTAwCiszNjgzIGQwM2NlYTZjMDc5NWQ0ZDk4NmM3NzM3ZjY0NGMzMjY5YTNlNTUwZGIgbGVnYWN5LXRydW5rCiszNjgzIDQzODUzM2IzNDFhNmQ1Njk5YzAzNWU2NTVkYmEwMjlhYWQ5N2I0ZTYgYWxwaGExMDAKKzM2ODQgZTMzNzYyNGMzZWEzNzA1MzU0MDFlM2I4YTMyYTkxN2Y1ZTNjZDM5YSBhbHBoYTEwMAorMzY4NSAzZDVkNGM5ZWQxOWRkODY5NWU5ZjU0N2RjZDZjMGJkNDFjMWVkYjZlIGFscGhhMTAwCiszNjg2IGI4MGYxZGM5NmMxYTU2YjNjNDNiNDA3OWY3ODczMDAzZjNkYzczZTkgbGVnYWN5LXRydW5rCiszNjg3IGVhYjAxOTZhOGQ4MzhlNzJjOWNjMDRmODk2NWJiMTUyNzRiOTMxZjMgbGVnYWN5LXRydW5rCiszNjg4IGI1YjFmMzhiZWZhNDhkYTBhODY2MWQ0YmFkMThhOGM5NzNmY2JlMzcgbGVnYWN5LXRydW5rCiszNjg5IDU1MGUyNjA1OTU4YjE2ZTY0MTU2NTc3N2MxMDlmMzVkYWFiZGNhMzYgbGVnYWN5LXRydW5rCiszNjkwIDJkZGVhOGU2ZGQyMGIwZmI3YmVmMzAyMjJlYTNhMDZhZWM3NDI3OTkgbGVnYWN5LXRydW5rCiszNjkwIDM1NTliMDkwNjcwZWVjOWZkMWI2OTdhOWY5MGYxMTc5MDk0ZjU2NTAgYWxwaGExMDAKKzM2OTEgNjFhNzIzZmEyNTM4Yzc1NWU0ZjU3YTUwNDNkMTU2YTJhNzMxMzNhMCBhbHBoYTEwMAorMzY5MiA5ZjNlMmU5MzFiNGI5M2ZkNWI2ZWQ0ZWM4MzgzYTVjOGUyMjNlNzEyIGFscGhhMTAwCiszNjkzIDU3ODFhYWY5Y2NkMzVmNzFkMDA5MGM1ZDgyNGEzNWY2OGFiOThiN2EgYWxwaGExMDAKKzM2OTQgNTAxOWQwM2Q3MTkyMGI5MTZkMjY2NTQ5NjdjNmQ2NzFlMmJhMjUwOSBhbHBoYTEwMAorMzY5NSAyMjRjNmJkOTJjZWI0NTQwZDc0ZmUyMzA5NGYyMzQ4ODkxZDE2MjIwIGFscGhhMTAwCiszNjk2IDhkNmQ4NTM1OWZhM2I5Y2RkMTBjOGFhYmRhNDY5NTcyYmZmMzE1OTYgbGVnYWN5LXRydW5rCiszNjk3IGU1ZmE4OTc5YjllNjY4MjQxMjBlOTc2OTI3NmY0ZWRmYzRkMDI1NWYgYWxwaGExMDAKKzM2OTggMGE2YmVlNGI2YjE3NTE4YmVmZjkwZTFiNDAzMTdlMzFmNzliM2U0ZSBhbHBoYTEwMAorMzY5OSAyYWUwMmYwZDllNmIwYTZkNDA4N2RjZGFiYmE5N2Q0OTA3M2MwYzk3IGFscGhhMTAwCiszNzAwIDJkNGJkOGNjNDA0MjAwZmE3MjU1Y2JlNWEwYzc1MDY2YjIyYzY4YzkgYWxwaGExMDAKKzM3MDEgNGY4OTYwYzc4MTQxZGJjMzc0MDI3YzVlODhiN2ZhYjQ0Zjg1YTBlMCBhbHBoYTEwMAorMzcwMiA3NTg3MTdmODUwZjJhYTM3ZTU5MzYzNjBkM2Q0M2VlNmNlNDEyMzBjIGFscGhhMTAwCiszNzAzIDA1MDE0ZTBkMzNlYzU4MTY0NWRhZDA0ZWM0YjE5MzgwYmVmOGY0ZDcgYWxwaGExMDAKKzM3MDQgNzZiYzZkNzQ4ODkwZDg3YTk5MDQ2ZmE1NmUwMTYzMDM1NmE1MzIxZCBsZWdhY3ktdHJ1bmsKKzM3MDUgZTUzZWQ2NzQ1OWY1NmQ3MzQ2YTFlMmIzZmQ5OTczZWE4YmQ4MDM2NyBhbHBoYTEwMAorMzcwNiAwYzhiMTgxMmYwYjY5ZDkxZTM4YjA3ZWMzODA1YTk2NmZkNWUzODRiIGFscGhhMTAwCiszNzA3IDEwYWQ4YmVmOWY0M2RiNzVlOThhYWRhNDE0ZGZmOGRlN2JlYzU3OGYgYWxwaGExMDAKKzM3MDggYTkwOTFjNDk4YjEwMWU1ODIzNTI0YzhmZmQzNjUzNTQyYjFiMDIyNCBhbHBoYTEwMAorMzcwOSA2MjdiYzQyMmE5MDI4NjgxZjBlZWJmMzE5ZWZhMTZiYTY0MTY2ZDRjIGxlZ2FjeS10cnVuaworMzcwOSA4YjNhNzI3ZGM3MWIzYWMzZTk5ZDAzYjdiNGNkZjVhYjMxMDFhY2UwIGFscGhhMTAwCiszNzEwIDI3MmUyYzY0Yjc0ZGJiYjg5ODUzY2IxNTQyY2E1ZDQ5MzQ0MzA2NDMgYWxwaGExMDAKKzM3MTEgNmRmYjg0YWRmZTQzMTE5YTlhN2UxMjFjMDhjYjBiYzc2NmQ2ZjA4MSBhbHBoYTEwMAorMzcxMiA2YjYzMDBjYzQ2NGU1YTRiYzE2NzBiN2E3MjU5ZWFhYTBkODViZDhkIGFscGhhMTAwCiszNzEzIDUwZmFiMjMzZjQwNDIxMzAyYTRlMmMyMGMwMzk2NmY0ZTgzY2ZiZjIgYWxwaGExMDAKKzM3MTQgM2QxOWNhNDBlYjgyZGZkMmU4ZjVhZDJkNmE5NWI5NjkwZmU3ZjNmYiBsZWdhY3ktdHJ1bmsKKzM3MTQgOTI1Yzk1MjgzMGNlMjZlYmJhNjhiMjRiMzI5MmRjZjgxYzNkMzU3YSB1bmxhYmVsZWQtMS4xLjIKKzM3MTQgNjI3ZDY0NGJjNmMxNzdmOWE2ZWY0OTU1M2M0MjM3NWRjOWMwNjMwNiBhbHBoYTEwMAorMzcxNSA5NjM3YzA0OTYxN2QzMzc2ZDRlZTUxNzdkODkxZjYwZTIzNmJjMTc1IGxlZ2FjeS10cnVuaworMzcxNiBlZDc1OTkyMTc3ZTgzMTcxOWIwNjhkYzZlZjk4YzA5ZTVhZWVhZGVlIGxlZ2FjeS10cnVuaworMzcxNyAyOTkyN2YwMzg2YTY5ZTgzZTlhYzIyZjBmNWFmYzg5M2I1NGJkOTYwIGFscGhhMTAwCiszNzE4IGM2MmE2ZGE3ZmVhYzNkN2E1MTc5ZGQxMzkwNDBiOWFlMjE5OTM0MDAgbGVnYWN5LXRydW5rCiszNzE5IGE1MjU2MDYxZjNhMDBmNzZhZTI0YzUxODFlMjYwODAxZWQ1NTNlM2EgYWxwaGExMDAKKzM3MjAgNWZkNTVhNmFjNzZlODM3YzMwMDk4NTZhMzM2NjZhNTczMjYwNGY5ZCBsZWdhY3ktdHJ1bmsKKzM3MjAgMzI4NjVjODljZjEyZTYzZDg0NDQ1ZDg3MGM3ZDIyNjQwMDQ4NjZlMCBhbHBoYTEwMAorMzcyMSBlMTgzNTAyZmI1YmM2ZjVjM2E2MzQ2YWVjMDhhNTkwZjlmZTcyOWMxIGxlZ2FjeS10cnVuaworMzcyMSBmZGJkMzk1NGZlZjAwYjQ0NmE0MTE3OGE1Zjc2MjBjYzA1NjFjNzU2IGFscGhhMTAwCiszNzIyIDVlOTJiMTMyZTcwZmEzMmI3YmExZDQxNjRlYTVlZDc3NzIwMjMyMWYgYWxwaGExMDAKKzM3MjMgZDBiYjA3ZDRjNmZlYjhkMmIzMGFkNDA4ZmU5NThhMDNhMGU0YzIxYyBhbHBoYTEwMAorMzcyNCA3NDUzZTJiYTUzNjJhNDQzMjE2ZWE5OGViNmYwMDgxN2I4YWRlYjQ2IGxlZ2FjeS10cnVuaworMzcyNCBhYTQ3MmU5MTdmNmMyMzM5ZjQ0MDE0ODE4NGE5ZjQyZGY1NGJlMzcxIGFscGhhMTAwCiszNzI1IDg3NzA3M2I5ZjhjMzI1NGE4MzI1MGIyNTY0ZWZjNjVjOWYxYWJhYWIgbGVnYWN5LXRydW5rCiszNzI2IGU0ZWYxYjE3ZGEzZGJjNWI5YmMyMWYxYTBjNmEwMjdkNmJhNDUzMWEgYWxwaGExMDAKKzM3MjcgY2MzMTE5MTY0ZDVjMmYzNjVlYzcyMDZjOTk0MzU2NTUzMjlmNWJhNSBsZWdhY3ktdHJ1bmsKKzM3MjcgYWJjMmY5ODE0Y2M5Njg1NWVhZWNmMDg1ZmU2ZjEwOGEzZWFjZTFmNSBhbHBoYTEwMAorMzcyOCA5NDRjYzdjNjRlN2NkZDk2MTA1NzMwZDBjMWRhNTk5Y2ZiNTBhNzlhIGFscGhhMTAwCiszNzI5IDlmMjg4Y2I1NmFiNTFmN2FhNDhmNGQzN2Y2Nzg0YjUxZjg3ZTc3ZDcgYWxwaGExMDAKKzM3MzAgYTZlYmI2OGRiMzRlYjUxNjFmZDMxZjk1NjhkMWNlY2RmM2RhMGU3MSBsZWdhY3ktdHJ1bmsKKzM3MzAgNzdlMGVhNjA3OTZhZTQ4NGJjZGE2ZWY5NjAzMmQwMmUxMTIxYzVlZCBhbHBoYTEwMAorMzczMSBhNzVmNzBjYTFiZTBhNjRjM2U3MTkxNTlkOTNkNWRiYTAzZmZhMzYyIGxlZ2FjeS10cnVuaworMzczMiBmNTIwYjljN2FlNmY2NWRiMTA3YTgwYzhjZWMxMzY4NGVlNjZjMWU0IGxlZ2FjeS10cnVuaworMzczMyA1NjhjNjA2YTBlMzExYjY1NDc5ZDZjMWFiOGE3YjA4YjgwMDVmYTQxIGFscGhhMTAwCiszNzM0IDFmN2RhZDU3NmE4NTFkMWIxZjZjYWQyMmJhMjY3ZGQ2MmU3YjU2NmIgbGVnYWN5LXRydW5rCiszNzM0IDIwNGI3ZTc5M2MxNWI0YmQxZDQwYWRlNTY1NmE1ZWRmZWRhZGNhZTcgYWxwaGExMDAKKzM3MzUgNzgzZWYzNjFmMzk1MTVhOGFlZjU1Njk1ODMzZTNhYzQxMDllMzdhYSBsZWdhY3ktdHJ1bmsKKzM3MzYgODk2NWVmNGViMzk5YWM0NzZkY2JmZWJhN2JhNDMxYWE1ZDlhNmVlYSBsZWdhY3ktdHJ1bmsKKzM3MzcgMzY2NGNiODhhMDMwMDhlZGJjYzdmOTc0ODRlODU1OGQxODQzYjZiNyBsZWdhY3ktdHJ1bmsKKzM3MzggNTIzZDQyMTE4OGI5M2E1MzdhYjNiMjQ3MTEwMjI5YjhiMjZmNjk0YyBsZWdhY3ktdHJ1bmsKKzM3MzkgYWVlNTVkOTY5YTEyMjQxYTc4ZGQxN2RlZTA2YWM3MjgxMmJjYzlhYyBsZWdhY3ktdHJ1bmsKKzM3NDAgZWYwODJjMTA3MmE3MTE1ZGJmYzMwMzZlYzYzZmNkZjFiODlhNWM3OSBsZWdhY3ktdHJ1bmsKKzM3NDEgNWIyNTVhMzU4ODMzMGI1ODhjMGNkODViMTc2MmRlNjVkYzM3ZGUyNyBsZWdhY3ktdHJ1bmsKKzM3NDIgOTM5YTk1ZjNkY2RlYTQzMWI4MzhiYmRiM2IzMmFiY2JiYzAxZjZjYSBsZWdhY3ktdHJ1bmsKKzM3NDMgYmU2ODAwYTYwMTliNGQ0MjE0NzBjYzU5ODJjZjUyOWY2MzE5ZjE5MCBhbHBoYTEwMAorMzc0NCAzNjQyYzY0NDcyYzA3OGE2OWIzZDhlZmYzZmNlOTYzMTViYjJkYWE2IGFscGhhMTAwCiszNzQ1IDM2NDhlZGQzNDNlYjQ0YzY0MTBkZGRkODgyNGQwNDc5YjAzMDVmMTcgYWxwaGExMDAKKzM3NDYgNmQyNGI5OWRjODgxYjhmMzc2MWRjMGY3ZWNiNGU5ZmUyZGI4Y2Y1ZiBhbHBoYTEwMAorMzc0NyBjOGI3MTRiOWJjNWFiMmI1Y2Y2MDE3YzIyMDE1YzhkNWIzMDdmMmY1IGFscGhhMTAwCiszNzQ4IDU5OTQ5NDlhN2VlOWRiNDAxYjllNmNiNTFkMDRlN2QzMzA1NGZjYTggYWxwaGExMDAKKzM3NDkgMWUyNjk0YTA2OTM5ODhiZTQwOTY5NzM5MGVmZjZhMDVjNzYyMTVkNyBsZWdhY3ktdHJ1bmsKKzM3NDkgOTFiYWQzNzZiNGJjZTVlYjQ2YzIzODVkMjEyZTM0ZWM2NTRlYTAxYyB1bmxhYmVsZWQtMS4xLjIKKzM3NDkgMmVhODEzYWEyNjAyZmM5NTY0ODFlNGZkZTg3OTZmMzVjYmQyMWIxMyBhbHBoYTEwMAorMzc1MCBmOWFkYjg5ZjIwMDE2YTlmYTY0NTgwMDU2N2U0MjAyYzBjNTJhNGQwIGFscGhhMTAwCiszNzUxIGZhOWU0ZGI3OTExZGE5ZmZjMDYzYWU4M2JlNTU5YjhlYzA5ZjJkOWYgYWxwaGExMDAKKzM3NTIgYzVjZTM1ODQwMDEzMGE5Y2M5MzY0YzliZDIxNmYxOTVkOWY2NjdlNyBhbHBoYTEwMAorMzc1MyAwNzI2N2VkMTM3MTM1OTJjMDMyOTdiMDQwMjVlMDk2NjM1NjAwZTg5IGFscGhhMTAwCiszNzU0IDFmODQxNzgwZWZjMjNlZWRlMDc3NGI2MDNlNjFiODg4YzAxOTdiZjQgYWxwaGExMDAKKzM3NTUgMjdmMzk1YWZlNjBmNjk2NmRlNzM1ZDczZmUzN2UxYWJkNjNlM2JiZCBhbHBoYTEwMAorMzc1NiBmZGJkODk4YmMxZmU2MmQ4NDc5YmFhMTk5OGI0NmI4ODIwNzFiMGY1IGFscGhhMTAwCiszNzU3IDQ0ODYzYzQ5YTQzNmJmYTMwOGQwOTI1MzRmZjY0NzRhNDkwYTc3NzIgbGVnYWN5LXRydW5rCiszNzU3IGExYWVlNzY5OWJlYTY1NGU0ZGZkZjk1ZjFmMTNkNTU5YjJlMmJiZjIgYWxwaGExMDAKKzM3NTggNGE3MjI5NjJmYjY5NzA5NDY1M2UyMjBjNmRjNGY4NzkyM2JjNDc2ZCBhbHBoYTEwMAorMzc1OSA3NTM5Y2NiNzdkMjg4YWE4ZTZhZWMyZWM2ODQ1YTRkODA0NTdjZjFkIGFscGhhMTAwCiszNzYwIDMzMzZjZGNkNGE1ZmY2Yzc2YjEwMTc4ZDYwY2RhNDRkOWQ4Y2I1YjMgYWxwaGExMDAKKzM3NjEgNDcyYTM0N2JhZmNjYzQ5ODEzYTcwZGVlM2M5MjgxMTIwMTU0NDI4MiBhbHBoYTEwMAorMzc2MiAxMzBiMDRmYzU0ZGNjNjk5OGUyMGJiMmExNDljZGVjZTE5NzYxNThmIGxlZ2FjeS10cnVuaworMzc2MyBlZDRjMTE2YjU4OTM0ZTgyODM2NTE5MDZkYTVjNjQwZmE5MWYzYzQ4IGxlZ2FjeS10cnVuaworMzc2MyA4MTFlZjZlZDRjYTFiYjRjMzIxYzY3ZTJkZGZkNDM5N2U1NDhkNzcxIGFscGhhMTAwCiszNzY0IDNiYjc4OGExZGRhMDQ2ZGNlNWE1NTIzMGE5ODRlMTk3NDJhMWMxZmIgYWxwaGExMDAKKzM3NjUgMmJiYTE4OGM2YWRhZGUzNmI3NWRiNDFjMWEyYzZmZTVhZWYyOGQ0NSBsZWdhY3ktdHJ1bmsKKzM3NjYgMDYxMDYyZjhhOWJmZDdkYjFiNGQ2MzE0YzQ3MmIzM2MyODhjNzA5MyBhbHBoYTEwMAorMzc2NyAwOTBkMGNkOTYxYWYxNzUwZWY4ZGU2OGU1NTlmMGI5OWQzODFmOTFkIGxlZ2FjeS10cnVuaworMzc2NyBjMjNjMWFjOTIyMDgyNDNlNDM0ODExZjlkZDE5Y2M3ZmZiMTUyZTY2IGFscGhhMTAwCiszNzY4IDM1ZGI2ZmNhNGRmNGQ3MmVjMmJmZjc4ZTkyYjBiMzRjOThmMjVlNjMgYWxwaGExMDAKKzM3NjkgMDgxNzMyYzZjMTEyOThkMGEwNWZjMWE3ZDBhMjRhMjcwODgxMTM4ZiBsZWdhY3ktdHJ1bmsKKzM3NjkgYzU3OTg3NWIyOTgwNzhlNTdjYzViMTY3YjNiZGRlMjI3NjYyMTJlOCB1bmxhYmVsZWQtMS4xLjIKKzM3NjkgNzQ4MTkwNDBlNzI2NTc5MTZmYjQwYmE0YmE2YWNmMGU5NmEwMDIyMiBhbHBoYTEwMAorMzc3MCAwOWEyYTY2MWU4YzA1MTIxYmRhYjlhY2IyNDg3YjJlMjQ4NWM4N2FhIGxlZ2FjeS10cnVuaworMzc3MCA1ZjBmOGJmN2IzNWNlZDVlMzM5NTQwN2Y4ZTU4YWUzNDU2ZDBmZThhIHVubGFiZWxlZC0xLjEuMgorMzc3MCA5YjRmOWU4MjFmZDQ2ZWI3MTExMmQ5MzFjNDQyOWVhYzQ2NDE0OWFkIGFscGhhMTAwCiszNzcxIDdjM2ZiYzk3Zjk0Njc3MGVhYzQwZDUyZjViYTQ4ZTZjY2U3N2I3MjMgYWxwaGExMDAKKzM3NzIgYmM1YzkyNTA4ZjU2MDMwMTIwZWVmMGQxODExMjM0MGQ1MWQ2M2I4ZiBsZWdhY3ktdHJ1bmsKKzM3NzMgZGNjOTVhMTM3YTZmOTFjZTk1NjExZWZkOWFkMzhhNDA2YjgyYWViNiBhbHBoYTEwMAorMzc3NCAzYjZmOTUwNTMwNDM2MDgwYjc4MzNhNDJiZDgzMWUyZGM2OWYzNjg5IGFscGhhMTAwCiszNzc1IGUyMTBhNGEzZDlmMGM4NmFhYmI4YzU2MTE0YWU1YzYxNzg1YmJkMzMgbGVnYWN5LXRydW5rCiszNzc1IDFmZjM3ZmY2YWZmNGU0ZDZiNWIxMmUxODdhMzRjZGM1OTdmYTc0NjQgYWxwaGExMDAKKzM3NzYgYTI3ZDZlYzNmZDRhNTk5OWY2MjAwZWQ3OTFmNGFjODMyOTA0ZDA2OSBhbHBoYTEwMAorMzc3NyBkNjhmNmNjMjYxMWVjZTMyM2Q3MjAxNmQxNTI0NzE4NzE4MTdlOGM3IGFscGhhMTAwCiszNzc4IGY1YzE5NzliZWE3Y2Q1YzJjYTJiYWRmM2I4NGRlOWViM2Y0YzFjNzIgYWxwaGExMDAKKzM3NzkgNTZjYmZkZjM3MjU0YzllMDg1N2FkMWNkZGUxZDY1ZmUzY2MyZGFjYSBhbHBoYTEwMAorMzc4MCBjMjg2OGVmMjhiZWUyYjJmMWQyYmVjOWYzMDI0MjcwYTBjMmVhZjE4IGFscGhhMTAwCiszNzgxIDFhOGU5MGEzNzM1N2JhZTdiNGFiYTkyMmYxZjBhYjMzYmZkY2VmNmYgbGVnYWN5LXRydW5rCiszNzgyIDhlOTdhNjhiMmIxN2QwMWRhYzc0NTg2MzQ0ZmIwNjhjZWM4ZjhlNjkgbGVnYWN5LXRydW5rCiszNzgzIGJkYmU2ZDhhN2E4Zjg2ZmJjYTJiN2UwYWJlYjlhYzdmNTAyODk1Y2MgbGVnYWN5LXRydW5rCiszNzgzIGE0ZjZiYTJlNDdmZmQ2MzNhMjU2ZDI3ODU3YTk4OWRjMDUwNWEyZmYgYWxwaGExMDAKKzM3ODQgOTc4MTk1NjU4ZTlhMzdlMjBiOWMyMDk2YWYzNjE3NDg0OWI0MTAzYyBhbHBoYTEwMAorMzc4NSAwOTQyMGUyZTkzODg0NWEwZDVhZWZmZTkzYWQ0OTQ0YmZmOWI0MTMxIGxlZ2FjeS10cnVuaworMzc4NiBlNDU5NDhlMmI2NmNlNDg1YWRlNDkzMmE5ZGE1NGZlOTY1NWY4NTUzIGFscGhhMTAwCiszNzg3IGRkNmVhMTY3ZjJiZDFiNzQxYzcwZmU4ODZiOTJhNTA4ZDNmMjMzMGYgbGVnYWN5LXRydW5rCiszNzg4IDBmODhmOTY1YmZmMjdjODg2NzU4MTk3MjBhYjBjN2U1MmUwNTExZDggYWxwaGExMDAKKzM3ODkgMzM4ZmU1OGIyYzY3NzM4NThlYTAyMmY0NWFlMzI5YjA4N2IxNzQ0OSBhbHBoYTEwMAorMzc5MCAxNDdlOTkxOTg4MzhjYzY3ZmI4MTBkODExZGU4MWIwYjJiNmUwYWMyIGxlZ2FjeS10cnVuaworMzc5MCAyMGZiZDA0MzRmYjYzNGRmYzAwYjc3YWFhM2RiMzNjNGY2M2M2YzQ3IGFscGhhMTAwCiszNzkxIDc2ODkxZDBjZDVmZGFjMWU0NTEwNGUzMjg5Y2Y4YjdhYjAyNGI5YTUgYWxwaGExMDAKKzM3OTIgZGM4YWVkOGIyMDRkMThmZmQ3OTI0MTVlZjY0ZDYyOTk5MDUyYjIzYSBsZWdhY3ktdHJ1bmsKKzM3OTMgOGI5MDhlOTkzOTc1N2RjMzUxMjkxMDEzNThjYzI0YWYzM2ExYzgzMiBhbHBoYTEwMAorMzc5NCA4OGJhNWQxN2YzMGEwZjUzYWJmYzM2NzFjMTdiM2U0MWM0YmRlNGU3IGFscGhhMTAwCiszNzk1IDVkNWViNzZiYjI3OGFhNmMxNWEyOTI0NGU3NzZkMmVlNmU1ZDk1ZjAgbGVnYWN5LXRydW5rCiszNzk1IDA3ZTRjNTcyNmY3ODU2NzhhNGY4ODM4MWJmNTg2NWM5NTQzMjc2M2IgYWxwaGExMDAKKzM3OTYgYmJhODAwODhhMDQ0YTMzODc5MDYzOTQ0ZDliZDRhN2YxY2ZhYmVhNSBhbHBoYTEwMAorMzc5NyBjMjNjY2FlYzkyNDkzMjVkM2MzZjA5ZGFiOTQ5NWVjOTY5OGIyNGVmIGFscGhhMTAwCiszNzk4IDAzNjhlZjQ5ZmY0YzYxNzQwYzE2M2FhYTY3Mjk4YzY3ODZlOTFhNDAgYWxwaGExMDAKKzM3OTkgNTNlY2NlZDJmMmIyYTE4NGYyMzYxZjBjOWI5MWFjMDJmM2MxYjkyZSBsZWdhY3ktdHJ1bmsKKzM3OTkgN2NlNDEyMjk1Y2EzY2FiNWE0MmZhY2RlYWJmMjIwZmI4ZjEwNTJkMyBhbHBoYTEwMAorMzgwMCA5N2M1ZTYwN2I3OTc3MzI2N2QyODhhZjgwNWMzMzVhZWI0OTFjNzM4IGxlZ2FjeS10cnVuaworMzgwMCA4ZDhiN2RjOTk5ODJlMzYxZDY4NWJiMDNmNTEzMDRhMmM3ZmE1OGQ4IGFscGhhMTAwCiszODAxIGM5YjNmNzdlMThiYWVmYWU1YTkyZDk1ODVkNGZiZGE4MGEyOTljY2IgbGVnYWN5LXRydW5rCiszODAyIGMzZDdmODE0YjJkMDY0MDFjN2IwY2JiYmRiOWM2ODgzYzY4NTY1MTcgbGVnYWN5LXRydW5rCiszODAzIDI2MDNiNDIwYzVkZWNhYzUxNzhjNDQ2NmY3YzllM2U2YTZlY2I3YTYgYWxwaGExMDAKKzM4MDQgZTliMGNjZTNiOTgwOTNlMGY3NGRhNDI3Y2NhOWMyYTEwZDRjMmNmMSBhbHBoYTEwMAorMzgwNSAxN2U1Yzk0Zjg2MmY3Njc4ZjBhNDhiZWZiOTk5ZGUxNzIyNmRhMTM2IGxlZ2FjeS10cnVuaworMzgwNiAxNWUxYjg2MTA0YTZlNjE4ZjkyYzIxN2ZkNjNkNzg1MjNkNGZkYmFhIGxlZ2FjeS10cnVuaworMzgwNyA5OTVhOGVmNGE1YzA0ZjNlNjgxMTgxNjhiZTA3YTNlYjg5MjQ5ZWU1IGxlZ2FjeS10cnVuaworMzgwOCBlZDIxMWM3NjEwODU4YmQ2ZDU5NGEyMDcwN2UzNWZhMjQyYmQ1MDE5IGxlZ2FjeS10cnVuaworMzgwOSA4N2NiZjllMjI3Mjk4ZTZhOWI2NTMyYmU5MmE3NzJiZWE1NTEwMGQ3IGFscGhhMTAwCiszODEwIDVjNmM5OTA2NmIyYzcxMDk2MjhmZjQwM2M4ZGY1ZjZmOGI1OWE3OGQgYWxwaGExMDAKKzM4MTEgNDhhZWM5ZDM4NTJhOTUyOTE5YzBkYzgyZmE4MWQ3MDUwODYyZWQ4ZSBhbHBoYTEwMAorMzgxMiA4NjlmYmE4MDljNjg5ZTNkNjRhNjM0OGY5NWY0MzFlNDJiODY5YTk3IGxlZ2FjeS10cnVuaworMzgxMyA1YzAxOTMxZGE1OWJkMWQxOGUzNjdlYzNhOWIxNzgyY2UzZTc5NDhiIGxlZ2FjeS10cnVuaworMzgxMyA3YzM1N2M2YTI4YmRjODlkZWQ4YTQ5ZTZlYjc0ODYzMjBiM2YwYWQyIGFscGhhMTAwCiszODE0IDdlY2Q2MzgwNTY2Y2IzMThiMmNlMmQ2ZDZlZWU2MzEyNWVlMDJkZjMgbGVnYWN5LXRydW5rCiszODE1IGUwNTNhODc4MjhmNDQyNjJiM2FkMjYzOTJiZTQzZTQxNGM5OTZlOWUgYWxwaGExMDAKKzM4MTUgOTc4YmYxMzRmNDRhYjdjM2M4NGM0NzZhMjkxZTdmNGVkOTc4MzZhNiBhbHBoYTEwMAorMzgxNyA5ZmJmMzRlMWMxZjc2YmYxNDA0ZjhlYmU2YzJiMjYzNzI0NDNlNDIyIGxlZ2FjeS10cnVuaworMzgxOCA1YTE3YzQzZGNmZjAzY2Q5MjEwZDVjY2M1YTgzNTE4OWExNzg0NDhiIGxlZ2FjeS10cnVuaworMzgxOSA0MDQ3ZjIyNGVmZGIwZWM3ODgyZGRhYmVhMjgwMjIwNzY3ZGQ1OWY5IGxlZ2FjeS10cnVuaworMzgyMCA2MzBlMDMxMDljNjM4ZGQxNmNkZTkzNzhhZmE0MTFmOGMyOWQxZjZkIGxlZ2FjeS10cnVuaworMzgyMSBkZjBhZWU2NDExNGJjZjFmOTIzOTdiYzhmYzg0NDdhYjYxNGNiYmJlIGxlZ2FjeS10cnVuaworMzgyMiAxZmY2Y2VkZDIyNDEyZGVkNzU3NDFkOWE0ZDdmYzdhZGE1MGI5YmM2IGxlZ2FjeS10cnVuaworMzgyMyAxYzM2NDRiYWI4NmFiNTNmMmYyOTI2NDExMWQzZDgyYWQxMTg1NmI3IGxlZ2FjeS10cnVuaworMzgyNCBiNjhmYjczOTg1ZDgzNmE0MzIwYWVjMGM2ZDJkMzFhNjM0MjdhZDEwIGxlZ2FjeS10cnVuaworMzgyNSA0NDM0NzFmZjMxNDcwYTJlYjMyMzI5MGI2MmFkOGUyMWE2OTAzYTZiIGFscGhhMTAwCiszODI2IGJhMjRmYzhkM2Y4YzU1ZGY1YjFjNDNiZWVmZDEyMzQ0MTcxZjY4ZjcgbGVnYWN5LXRydW5rCiszODI3IDBlZmEyNDBiMWRiYzA1N2RjNDRmYTFkNDRkNGM0ZDhmZWRhYzU2MzggbGVnYWN5LXRydW5rCiszODI4IDUwNTUzMDgxNTJhNGUyODc3YjllNWY5NzJkZTI3YWU4NzNkYjMzODYgYWxwaGExMDAKKzM4MjkgNWNlZjRmNWEyOGNlZGZjYTVmYWRlODI1ZWRmYzYwYjA3ZmY2ZTg4OCBsZWdhY3ktdHJ1bmsKKzM4MjkgOWVjN2Q2Zjc3NTAwY2EwOTBjMjE5MWUwYjNiNDBjNjZhM2UwZmU3NyBhbHBoYTEwMAorMzgzMCA4MWYyNmJmMTE3OGY5ZTM3MTBjMDhhZGY2YjhjYzk0MmIxNmZmZDE2IGxlZ2FjeS10cnVuaworMzgzMCBlZTNkNWVhMTNhMzdiOTJjNmVjMDU5ZWU5ZDgyOTg3M2IxNjE5NjQyIGFscGhhMTAwCiszODMxIDQ4YWEzZDMzMTRhYzE3MWRiNWNlMTdmNjU2ZTRiNGM3MTAwMGUxYTAgYWxwaGExMDAKKzM4MzIgOTgwNjI2ZWNhZDYxZDhkMDU2ZjM5ZmVjNGUyYmE4OTQzNGZiYWRjNiBsZWdhY3ktdHJ1bmsKKzM4MzIgNWMzNTA2MzFjODM5NjA1YTFkM2FkYzViZjQzY2FmMTQ4MDVkMWYxZiBhbHBoYTEwMAorMzgzMyAzZTY1YmZkMTU3NmVkOThhMDhhMTk2YzcxNmFkNWM4MmEzMDQxMWZjIGFscGhhMTAwCiszODM0IDk5MzAwODdlYThmNWU2ZThkN2NjNTQzMjZhNmZiODRlYTI4YjljNzUgYWxwaGExMDAKKzM4MzUgOGM4OWY2ZWY5ZjlmOGY1NDdkNTdjODU4NmUzMGVlYjgzZGVmMzQzNCBhbHBoYTEwMAorMzgzNiBjYjVmZDgwMDY4Y2VmMjU2ODlkYjdkY2JiZGY5ZTM3MTliNzllOGNhIGFscGhhMTAwCiszODM3IGJhZmM1MzNlMGViNmFjNWFhNWYwODJlY2NmYmQzMTgyNzhmNmM1NDcgbGVnYWN5LXRydW5rCiszODM3IDcwMzJhOGEyYzQyYzUyMjRlM2NmNTJmM2M4ODZlYzM2Y2I1M2QxMzAgdW5sYWJlbGVkLTEuMS4yCiszODM3IGM5NmZjNDk3YjkzMmY1ZGQyODYwM2IxZGJkYzUxZTFjOWViN2QwNDEgYWxwaGExMDAKKzM4MzcgYjE1YjhjYzliOGQxMGUwMzUyYTBiOGI3ZThkNTFmYTMwOWRiNmRmMyBsZWdhY3ktdHJ1bmsKKzM4MzkgMjY4ZTU3NjMwMDE2MjAyODA4NjA5ZTFhODZkMGRiMDg4MzhkNjkyNSBhbHBoYTEwMAorMzg0MCBiNzBmMDg5MDc1NDYxN2JmM2Y4NTgxMjRjZmJiN2MwNTE3MDZiNDlhIGxlZ2FjeS10cnVuaworMzg0MSA2ZjUyYjUzODliODg4MTdkNDRiNzE0ODg3MWQ3YzA3MDQ5YWE5Nzc4IGFscGhhMTAwCiszODQyIGUzODBiNGQ1NGZkMzllYWYzYWI4OWExYzk0ZTNhZDE4OTVkNjk2OGYgYWxwaGExMDAKKzM4NDMgNWRmZDFkNTFkNjZkZWFhNTY1ZTVhNzcwZTQ2Y2YwMGQ4MGVhYTVlYSBhbHBoYTEwMAorMzg0NCA2OTY2ZDk1N2I1YjFlNzUwZjYwZmRlNTM3YjM5YTUwZDBiOGNhNWVjIGFscGhhMTAwCiszODQ1IDJiNWY4YjIwMjFiZmQ3MzA5NGM5ZjgyMjhlZTQ4ZjY2MjRkYzU4MTcgYWxwaGExMDAKKzM4NDYgOGRmNzJlNThmYTk4MDMyYzdlNDI2MWExNTJjNDM0ODQwNmEyYTg4MSBhbHBoYTEwMAorMzg0NyBhZDIxNjg3NmM0N2ZiZmY3MDRiM2FkMjEwNWQ5OWEyYTVhYjg5YzI0IGFscGhhMTAwCiszODQ4IDhjNjgxNGYzNGNkZDkzNmYwNzM5MGMzZDA3Yjk4MTU4OGM0ZmRiMGYgbGVnYWN5LXRydW5rCiszODQ4IDIyYjdkMzczNWJkMjVmZWMzZmNjZTQxNmYzNGMwOGY4OTg4ZTI3NjkgYWxwaGExMDAKKzM4NDkgNmQzNTMwODI2MWY0Zjc0ZDg1YzEwM2I5NzVjODQzNGU0MDc3ODViOSBsZWdhY3ktdHJ1bmsKKzM4NDkgNzcyM2UwMDAzOThkYTc3NDQ0OWQ3ZWZkNjUwNThiYzE5MjQ4ZTUwZiBhbHBoYTEwMAorMzg1MCA1OTczMzU0ZmI0OTk1NGY3MjQ2NWY3MTMyMmNhZWNhYjQ2YWQwYzc1IGFscGhhMTAwCiszODUxIGNkMjc5ZTBmNzdkODUzZjI2M2NhNzYzNTgwZmVjMTM1MzU5NmQ0NzcgbGVnYWN5LXRydW5rCiszODUyIGMzNDE1YjMxOWI0ZTg2OTJmOWM2NGUyNzdhNDdmYmMxNmI4ZTE4ZmQgbGVnYWN5LXRydW5rCiszODUzIDE3MmFhMGVlZWI2ZjdjYmYwYjc1NDFmZmRkODM3ODhhYWRiMTFmOTQgYWxwaGExMDAKKzM4NTQgMjc0MDY2YmRlMjQxMjNjYWMwNTYzNWNiNTkyMzhiMDA2Y2ZlNDlhYSBsZWdhY3ktdHJ1bmsKKzM4NTUgZGYwZmI3ODhjMGMxZjUwNjUzMzEzODhiYjM5MWM2NGU0NDg1MGU3YyBsZWdhY3ktdHJ1bmsKKzM4NTYgOWUzNDQ0OGEwMDVlZDc1ZmIwYTViNTk1NzcxNGY0YzdhMmNjZmRlMiBhbHBoYTEwMAorMzg1NyAxNmQxZGFiM2YyYzFiOWIzMzJhNzY1MDJhZWIwNmU3M2NlOTNiOGFiIGFscGhhMTAwCiszODU4IDhjYzkwOGIwZDgzYmRlMjVlZjExOWM2NTI3OTQwNzY1MmFmMDlkZGYgYWxwaGExMDAKKzM4NTkgMzI4NmJmZjQ0M2M2YTA2NjBiY2Q1ODFiMWM3NDIxZjhjZjhiNGQ2MSBhbHBoYTEwMAorMzg2MCAyNzRiOTNiMTIxMTNmNTg5YTU1ZDhmYTY4NGM4MDhjYTQ4Y2I3MTlmIGxlZ2FjeS10cnVuaworMzg2MCBlNWQ2NjUyMzFjNTg5NGM2MzYxYjMzYzhhMmEwN2JiY2U5MjdkMGVkIGFscGhhMTAwCiszODYxIDhlYWIyZWU0MGYzMmRiZGVkOGFjNjRlMmRjYmQ4ZWI4YTZjYzc1ZDQgYWxwaGExMDAKKzM4NjIgMjQ5ZmU1ZTI0ZTIwZWI4ZDllM2E3NzJiN2JlYzE2NzdmZDJlNWY4MiBhbHBoYTEwMAorMzg2MyA4YWFiZTlhYWUwZmEwN2E2YWE1NDJkMWZmOGMyODJhZWU2Yzc2YzU0IGxlZ2FjeS10cnVuaworMzg2NCBjZjYwYTJiMjQ5Nzk4NTg4OWY4YmY0MWIwMTc2NTUxMzYwYmEyOWFhIGFscGhhMTAwCiszODY1IGY0ZGI5MmVlZjJhZjcxN2I0ZWNmZDc1NTFiNGIwZjU0NzQ1YjM1MTMgYWxwaGExMDAKKzM4NjYgMDIwZDhjMmQ5ZDNjZmIzZDI2ODVhMDRiMzZkMzZiZjNkNWQzNDNiOSBsZWdhY3ktdHJ1bmsKKzM4NjcgYmQxYTRkNzE3ZTlkMWVlNDRlYThlYTNhOGZlY2U3NDJlZWMyZmNlMiBsZWdhY3ktdHJ1bmsKKzM4NjggNzgwZjMzNWJmNTI0YjcwNTlhZTY0MjU1ZjkwOWUwMGU2YmI1YTk0ZCBhbHBoYTEwMAorMzg2OSA1OWZkNDY4NmY4OGNhNjRiNGI3YjAzZThhNjJkYjM0YWI0M2MzZjA1IGxlZ2FjeS10cnVuaworMzg3MCBiM2JmZjVlZDVkM2QwODk0MWNiZDRkMjVjZjg0NDkyZTczMmVlYzgyIGxlZ2FjeS10cnVuaworMzg3MSA5NjAwNTUzOTAwZDQ3ZWExNDA1MDI4M2NkOGVlOWFiYWRhNDQxN2Y2IGxlZ2FjeS10cnVuaworMzg3MiBiMzM3MjBkMGFkOTdiMTUzNzk2MTQ5ZWQ1YTY4ODMxOWMxNThhMzQ5IGFscGhhMTAwCiszODczIGNkYWZjOTUxZThlOGIzMGZkMTMyMDZmNGI4MGRmMTQ1ZTNlM2RkOGUgYWxwaGExMDAKKzM4NzQgZGRkY2JhMjAzOGJjYjViMmYxOWZkZjBkNWZjYmQ1M2YyMDgwZTgzYyBsZWdhY3ktdHJ1bmsKKzM4NzUgN2QyMWM5MjNiNTRhZWJmM2NkZDczMWRmZjU5MjM5ODk2MzU0MTQwZSBhbHBoYTEwMAorMzg3NiA5MDM3OTRkZjVlYTllZWQ1NWEzMDBhY2YyZjc2MWM1NzhmMjY0YTkxIGFscGhhMTAwCiszODc3IGU0NDQ5OWE0NGNiOGUzNzRlMzViYmY1NGIzYWE2YmZhMGY2MTc3MDkgbGVnYWN5LXRydW5rCiszODc4IDM3MDA1MGNkMGI2YzUwMWU2MDM0OGIwOWQ0YmZiYWVlMjQzYmY4YWQgYWxwaGExMDAKKzM4NzkgOGQyNmVlMjRhZDE4MmVhMGU4YWI2NzFhNDdmOThkNzU5MTcyYzFhOSBhbHBoYTEwMAorMzg4MCAzYWNmODE4ZjM1NDgzMWY0NjIzNjc1NTFiMWJlYzIwYTUyOWJiYTAzIGFscGhhMTAwCiszODgxIGNkYjE0MDQxY2M4N2JiNjQwYWQwNGIwNGIyMDJmY2ZiY2U3YmZkZWMgYWxwaGExMDAKKzM4ODIgYWNiYTQ0MjdlODljNzAwMDc0OGY5ODRiZGE2ZWIyM2E1ZmMzNzJlZCBhbHBoYTEwMAorMzg4MyAzZDAxNjk5OTI2NGFjMmM3M2VjOGQ2YjQ0MGYxZDg2ZjdkNTgyMWM1IGxlZ2FjeS10cnVuaworMzg4NCBhZjNmMmEwM2JiMThmZTBlZWY5N2Q5NmVkNGVhMTlhMTIyYTkyYWZlIGFscGhhMTAwCiszODg1IDNjZGRjNjdiZTNmNTc1NjYyY2Y3MzRiNTEyNDcxZWZiNTAwZjg2MjYgYWxwaGExMDAKKzM4ODYgYWU0YjljYjViYTE1NjExMjhhY2JjY2MzOTdiMDA2ZjE4MTM5MDcyNCBsZWdhY3ktdHJ1bmsKKzM4ODcgMDZhYTYwOGM1ODllODZjNTg2YmMxY2NkMjYwZmY1YjVmNGY5MDNkNiBsZWdhY3ktdHJ1bmsKKzM4ODggOTFmODQ2ZjZkNmE2MWQwNDNkMGU3MjRmODVjNzg0ZDE0YTcxNWE1MiBsZWdhY3ktdHJ1bmsKKzM4ODkgZWFjYWE0ZjA3ODI2ZDlhMDBiMjNmMjE2MDQ5ZDNlMzhhODdjYTQ2OSBhbHBoYTEwMAorMzg5MCAyYTBkNDk5NzQwYjYyNGI4ODA3MjQzOTgzM2YxZWJlMDZhNzY1NDk5IGFscGhhMTAwCiszODkxIDgzNjIyYjdhMDBiNTIzOGY4MzA1OTA2Y2Y4ZTM0Yzg3Y2JjMDQ5ZGEgYWxwaGExMDAKKzM4OTIgZWFhYmEyY2FmZWViOWMzNDA3ODllYTJiYTQzNDIyMWMzOTUzMTE4OSBsZWdhY3ktdHJ1bmsKKzM4OTMgMmQwZWNlNTYwNDA2OWExNjJmNzk0MzQwYmViMWE4YzgwNDQ4YTY5NiBhbHBoYTEwMAorMzg5NCA3MmY4ZTFlNjE0ZjA2MzAzNTc3NTkzYzcxZDIxZmQ2OTE1NWE5YTU3IGxlZ2FjeS10cnVuaworMzg5NSA0NTcyOGJmZWNiNzY4ZjAyMTI4NTg3N2M2MTUxZmE5ZTYwMWEzMjhlIGxlZ2FjeS10cnVuaworMzg5NiA2OTVmYjQ5NGEzYTIyZmM5MzZiNDRmNTMwZDg1OWNlY2QxN2JhMGIwIGxlZ2FjeS10cnVuaworMzg5NyA3YmY2YjEyOGU5OGM0ODg2OGU1M2Q3YmY3YmJhYzI1OTI4OGM5MDI1IGFscGhhMTAwCiszODk4IGYzMjYzNzU5Njc4ZWYzODQ3MmZkMWMzODY3MTZhMWFlMDJjYjIyODkgYWxwaGExMDAKKzM4OTkgNDQ0ZTM0OWY5NjJmMGFlMzAwNjgyNTJlNTlkYmU1Nzc5MWZjYzY4MCBsZWdhY3ktdHJ1bmsKKzM5MDAgYjIxZjA0OGMyM2U5ZTAyODQ1MGYxZjJlYzRkMDRhZWI1NzEyOWJjNCBsZWdhY3ktdHJ1bmsKKzM5MDEgMjg4YTQ2MDZkMmZkZTEwMDY4ZGM3OWNlYTZhY2Q5ZjgwNzQ1NTg1NiBhbHBoYTEwMAorMzkwMiAwMjFkYWFiZTY5ZDg3OTU2NjFmNzlmNjdlYWViMjgyZmYzOTZhNTAwIGxlZ2FjeS10cnVuaworMzkwMyBjMTczNjBhMTY1ODcwMzhjNWJlYmJmM2ZkZTliMWRlZTdkM2EzZjAwIGxlZ2FjeS10cnVuaworMzkwNCAzMmRhNTc4MThlOTdiNWZmZDIwOGViOTZiZWFjYjRhMGQ5ODMwZGI4IGxlZ2FjeS10cnVuaworMzkwNSBiOTYzNGJkNWNhNTVhOThlMmVmZDZiMjc5YzBkOTI5YTBkZGY2YzYxIGxlZ2FjeS10cnVuaworMzkwNiAyMzg0ZmFhNTM1MGYzYjZkMWUwZjJiMTNmMmY5ZjBkMDU2YjQ1NDU5IGxlZ2FjeS10cnVuaworMzkwNyBiM2ZjZGJkMmQ5YmJhNTNiNTc4NTllODMwMTI0MmZlMjFjNGJhMzEyIGxlZ2FjeS10cnVuaworMzkwOCA4ZDdhYjJjN2U5OTMzMDkxMDI3NWYwMWRiOTFkOGVlZTU1MTZkNDU3IGFscGhhMTAwCiszOTA5IGU5NmE4Y2ZiYmVmMWI2YTNkZGY2M2VmOTBmZDA4ZWY3ZDZmZTQ3NzkgYWxwaGExMDAKKzM5MTAgYzk2NDM2NGE4ZjdmOGU3YzA0ZmU3N2UyOTYyZGMyZjI4NDIzNjA4NyBhbHBoYTEwMAorMzkxMSBiMmQxOGZhNTI5ZjQ4NzYwY2JkYjRhNTcxZDQyMzUwNzI1ODhiOGE2IGFscGhhMTAwCiszOTEyIDA1NTY2MTdhYTMzODZlNzBmZjQ3MGVjY2UxZjZhNjAzNzFlYzQ2MTIgYWxwaGExMDAKKzM5MTMgZDU5MGZmZDU0Zjg5OGNhMTE3ZjAwMjc5MjAzNDdjMWJjMmU5MTk2ZSBhbHBoYTEwMAorMzkxNCA3OWJiNjgyNzBjN2IxMmNkYjAzNmEwYWZkNjJlMjdjZWQ4NWExNzZiIGFscGhhMTAwCiszOTE1IDQxYmNkMTg1M2ZlYTU3ZGI5YjllZDdmODI5Yjc3N2Y4ZTBmOGFhODggYWxwaGExMDAKKzM5MTYgMTMxMzIzZjE3MTU5MjJmZGVjMGE3NDViYTBjOWFhMmQ5OGM5ZjE1ZCBhbHBoYTEwMAorMzkxNyA4MTAxODY1MGRjMzI0NWE5NmViYzA0MzBjZmIzOGY5YTJiOTBhZjhjIGFscGhhMTAwCiszOTE4IGMxM2JiZGZlZWJmZmU2YzFlMGY0ZTBhYWQ1YTdiY2UxZDBiYmNiZGEgYWxwaGExMDAKKzM5MTkgY2E1ZWQ1MmFjYTI3YTZhOGQ3NjBlZjBjYjkxNzkyOGJlMjkxNWEwNiBhbHBoYTEwMAorMzkyMCBmYzQ1ZTU3N2ZmOWIyMGNlYTg1Mzc5YjdkMjcwNGFkN2VhNzQ3ZjYyIGFscGhhMTAwCiszOTIxIGE3MDQxZDZmN2RlM2UzNTg5NzdkYTkyODc4ZGMyNDU1NGQyMGNhMTIgYWxwaGExMDAKKzM5MjIgNWVmZmFhZDcxYmE1MmU1ZTZiNDQwYzhkODUzYjY0ZjQ5YjI5NmI1ZCBhbHBoYTEwMAorMzkyMyBhZDIyNzBlNzFlYzNmMGI2NTNjMjdjMjZmYTE1YmEzY2VkZWU5Mjk0IGFscGhhMTAwCiszOTI0IDM0NjlkMDRlM2UzNmQ1ZmNhODk5YmY0Y2IwYzlmMTU1YjVhNDc1MTAgYWxwaGExMDAKKzM5MjUgZjA3MTRiYjRlYTk2YTFlMTAwODMyMmVkNWI3MWU0MzlmODczMzI3OCBhbHBoYTEwMAorMzkyNiAzMzdhYmRjMTU4NGE0MjVlNTQ0M2E4OTI3ZmRhMzFiZWJiYTE2NTliIGFscGhhMTAwCiszOTI3IDdjNzVmNjA0NjhmODAyZDBmNzMzMjk0ZjFjZmZiNmFmYmM1MThhN2UgbGVnYWN5LXRydW5rCiszOTI4IDIyMzZkNzA5ZmYyZGFlYTYwOGZhMDRiZGVjNTM5MWQyMTU5NmQ0YjYgYWxwaGExMDAKKzM5MjkgOTBhMjA5OTM3NDdkMWYzOGE1YTBjNGJiNWYyNTI0NjBhNTZkMzFiZCBhbHBoYTEwMAorMzkzMCBjMWNkZWVkOGM1MTQ0ZjVlZTcyMzMyZTczZTVlMDQwNmJkYzBiNWNmIGFscGhhMTAwCiszOTMxIDNkOGJhNDE4NDhmZjBmODIyNTQ0NDVlMjY5ZWIxYzhlMzMwN2NiOGEgbGVnYWN5LXRydW5rCiszOTMyIGI0NTRkYzkyNDdiMDc2YjdjYTU3Y2E5NmU4YzEyNGUwZGEwOTI4YTggbGVnYWN5LXRydW5rCiszOTMzIDk5OGM2NDIyY2Q4YWFlMDNkMjhiOGE1ZDMyY2JiNmNjYjY2OGEzMTQgYWxwaGExMDAKKzM5MzQgYmNmMGI4ZGZkYWU5ZjQ0NmQ2MTMxZTQ5ZTI4NjI0ZDgzMWIzOGJiNCBsZWdhY3ktdHJ1bmsKKzM5MzUgN2ZkZWFkZmE4M2UwY2M2ODc4OGMzNzA0OWNiYjI4NzBiMDdlMDFiZSBsZWdhY3ktdHJ1bmsKKzM5MzYgYWMyZTVjYzI5OTQ5ZDllZDZjM2VjMDU5NDE1NDkzYWY2MDFiMzJhMSBsZWdhY3ktdHJ1bmsKKzM5MzcgNTk0YThjMTJkNjg4Mjc2ZjJkMjI3MGY4YjQ2YzBlZGYwNGNiMGVlOSBhbHBoYTEwMAorMzkzOCBmY2EyZmVkZWE3MWNjNjdhYTIyMGJlZmMyNWE4ZmI2MWE5NWFiNGMwIGFscGhhMTAwCiszOTM5IDJjNmYxMzM3ODAxY2MwMTAyZWY3MzA5NmJmMGRlNmE2YzFhZTAxODMgYWxwaGExMDAKKzM5NDAgMTI4N2ZiMDU5NTg4OGMwMTQ3YzQ1NWViNjYyNDdmNzc4ZDRlZWRhNCBhbHBoYTEwMAorMzk0MSBmNjU3OTQ4ODkzNDM3MGE0NDQ4ZTZlM2MzZmY3NTQyZDNlNzVhZDQxIGFscGhhMTAwCiszOTQyIGFjOWUxMmI0ZWE4YzY1N2JjYTM0ZTE4YTcxMTdiMGI0NGUzZGZlMTcgbGVnYWN5LXRydW5rCiszOTQzIDIwZGY2NTMzNzZiNDE3Yjk4ZTJhYWFlZDNhZGViNDc1YWM5MTVmMzIgbGVnYWN5LXRydW5rCiszOTQ0IDY3MjAxMTg3MWExYjY0MDU5Yjg4MDBmYWUxZTc4N2I0MDI1NTE1MTcgYWxwaGExMDAKKzM5NDUgYTViZGZmOTcwNTk1MWZhNmNlN2E2NGI5NDIxNWU5NjUwNzg5ZDhjNCBhbHBoYTEwMAorMzk0NiA4OGRlMjFlZjRhOGEzMGY2YTkxNjliODk2ZmMyNmE4YzdhYzkzNzFmIGxlZ2FjeS10cnVuaworMzk0NyBiYTZhYzgyZmNiNjg2ZGUxNWNjMzZhN2UzZmQzNDc1OGM1YTRhZDhmIGxlZ2FjeS10cnVuaworMzk0OCBiMzQ0MzU0NmQ2ZWU0YjAwOThmOTJiMGM1NDRlYjI1NDcxZTkwODNkIGxlZ2FjeS10cnVuaworMzk0OSA0NTc5MDM1NmUwMjRmNzYyMDZiYzFhNDBlOGNhN2FiNTFiNmEwODUyIGFscGhhMTAwCiszOTUwIDIxOTdkZDI0MWQ4ZGM4NjIxNWNiYjJkOWFiZWY4MTRhMzg2NmZiNzYgbGVnYWN5LXRydW5rCiszOTUxIGRlYTY3YzJhNGMwN2YzYmRmZWM5NDEyYjYxYjhkMTQwZjY5M2IzNDggbGVnYWN5LXRydW5rCiszOTUxIDc5YWI0ZGY5ZDBmNWZmMmYyYzljM2EzMDZmMWZlYjFhZDJjNTI4MTQgYWxwaGExMDAKKzM5NTIgOWUwZWNlNmVkODFkN2EwYWQ0NTkzNGQ2MjE4MGNiNWMxMGQwYTkzMyBhbHBoYTEwMAorMzk1MyBjYTNjY2FhODUwNjAyNmZkZTFmMmI5NjhlM2M1MmFlNDcyMTg0OTgzIGFscGhhMTAwCiszOTU0IGVjYmFkYjgxODg0NzUwM2I2OGJmZmUxYWRmMWU3NGNmNGU1N2E0N2QgbGVnYWN5LXRydW5rCiszOTU1IGIyYzkyMmNmYjRkOTdiY2ZjZDg5NTBjZjk4NjU0NTQyNTg2NjBkNmYgYWxwaGExMDAKKzM5NTYgNGJjZjU4NGMxNTcyYjRmMjcxODAwMDYwNWRmYTc4ZTg4ODM1NzQ2NiBhbHBoYTEwMAorMzk1NyA4M2I0MWJmMTkzOTJlZDNmZjRhYjc0YTM2MTdiYmQzOTlhODM0NDg3IGFscGhhMTAwCiszOTU4IGQ3NDEwNDFjYjA3NmViY2JlMWY0YmIzOTdhOTllZmVjOTQ4ZGVlY2UgYWxwaGExMDAKKzM5NTkgMDlkNzdiYjcxZDc1YjUzZGViNWE0OGJjMjNiYWY5N2M0NTcwNmZkZSBhbHBoYTEwMAorMzk2MCBjZTMyODQ3MTY0ZTFlNmQwNzcyYzQ5MTM2YzkxM2M0YzgwMmEwMDhkIGFscGhhMTAwCiszOTYxIGU3NmM2ODdhYzc4MWQ0MmE3NDM1OTY4YTI3NDQzZTczNWE0MzJmZDUgYWxwaGExMDAKKzM5NjIgNmVjMTUyMjIxNzkyZTY1ZjdhMTFlMmFiNWVlZjVkMTQ4YmYxZjJjMSBhbHBoYTEwMAorMzk2MyAzM2QzMzQ0M2VjNDU5ZmQyMjhjZDU0NWUxNGQ1ZTlkNWRiOWJiNGI0IGxlZ2FjeS10cnVuaworMzk2NCAzMDFmOGNhOThlMGI1ZjQ0MGM5ZDAxNDUwNzcyZDNjOGUwZWE4YTEzIGxlZ2FjeS10cnVuaworMzk2NSA1N2I5Yjc3ZGEyMWIzOWQ1YTlhNWM5MTdhODExZGY4MmYzOWY5MjEwIGxlZ2FjeS10cnVuaworMzk2NiA1ZTVhNjFiZGRlMGI3ODE5Y2QyMzllZWRlOTg1YjBiNmJlZDY4YjVmIGFscGhhMTAwCiszOTY3IDkwN2M1ZGQ4OWM2Y2VmYmE4YTQ4ZDQ3ZGIzOWE0MDk3Zjk1YjcyMWEgbGVnYWN5LXRydW5rCiszOTY4IDRlN2ViNWEzZmJkYWYxMjE1ZWQ3MDAzNjhiZDlmZThkMjA4OTAxMWYgbGVnYWN5LXRydW5rCiszOTY5IGMyZmYyMTYzZjBiNzBjMWVjZDBkOGFhYzAzZDUzMzlhNDQ3ODk2ZTMgbGVnYWN5LXRydW5rCiszOTcwIGU4YmYxMDc3MTc4MTM5N2I4ZDM3NDUyOWYxMTJmOTRiNDlhYzg1MDMgbGVnYWN5LXRydW5rCiszOTcxIDYwYTcyMTRmMzNhODgxNjVjNzA0YjczMTllZTYyOGQ1M2JjYzhlOGEgYWxwaGExMDAKKzM5NzIgNTQ4ODkxMWViYzI2ZWM3Mjk2NWFjMzA5MWIyN2UwMzEwYmIxNzJlNyBhbHBoYTEwMAorMzk3MyAxNDMxYWJiMjgzNTNmNDg1MGVhNWRiYzIxYjIwNjI0ZjBlZjBjZGNmIGFscGhhMTAwCiszOTc0IDEyOWQ5OGI1MTdjMjU2ZmU4NWI0MzkyNjM3NmFhMDY2NGQ3YWY0OWUgYWxwaGExMDAKKzM5NzUgYTc1NGJjNzRlNTg0ZGFlYTdmMTBmNDhiZWY4YzczMTk5Y2JhYzk0YyBsZWdhY3ktdHJ1bmsKKzM5NzUgNzU5MzlkY2M5MzhhNzFhZGExZWQ4OWMzNTkxMjZjMGRjMTYwMWMxNyBhbHBoYTEwMAorMzk3NiAwNzcwODBkNzU4ZGRhNjgyZWQ2MThhM2E1YzlhZmNkZDc3YTJlZTI4IGFscGhhMTAwCiszOTc3IGM2YWZiOTZhNDUyMzBmNTUxZGYxNGFjMjExOWNjODBhMzY1YzFlYWEgYWxwaGExMDAKKzM5NzggNWMyOWY0YjFiMjg1MTUyNTM0YTBlMjU3NmYzNzI3Njk1MGJmYmRiMyBhbHBoYTEwMAorMzk3OSBlMjkxMTA1YjFiZWVhYjI2OWM3YTM0Y2RiODkyMTdmMWIxNzhmNTRhIGFscGhhMTAwCiszOTgwIDY5ZDVkYzI0Y2IzYjU1OWY4Y2QxOWVhZTUyOTAzZDAxN2YzMDU5NDYgYWxwaGExMDAKKzM5ODEgMjQxYzM1NWZkOWVhZDU3M2ZmMDgwODkxZjUxMzEyNzczZjRmZTlhMiBsZWdhY3ktdHJ1bmsKKzM5ODEgOGRlZDhjNjU1MTFkYTQzYmQwYjkwMzQ3MDg3NWJiNGRlYjk1ZWQ2MCBhbHBoYTEwMAorMzk4MiAyZThlYWVlOWVmNDVjZWE2ZWMxYThiMjU2OTgxZTRlYmM5ODI3OWVjIGFscGhhMTAwCiszOTgzIGJlMmRiMzE0MjM1NzRkNjE4NGJiNWExNGJiOTY3OGVmNjdlMDA3MzQgYWxwaGExMDAKKzM5ODQgMjIxZDQ3YjI5NzRlNzNhYjc5MWE0MGNiOWQ4YWM1Y2Y0NGE5OTc3MyBhbHBoYTEwMAorMzk4NSA3OGFjYWRlYTM5MThmYzk2N2U1NThmMGZmNDhiNzg2OGRlMTlmNWRhIGxlZ2FjeS10cnVuaworMzk4NSBmOWRiYmJiMTc5MjkwMjVkMDZkNjI5YTRiZWQzZTUxYTExMzFhNzI0IGFscGhhMTAwCiszOTg2IGFjZWExMTAzMTI5YmFjMTFhZjYxZGRhN2Y4MTJjNTE4ZGE1Yjg2Y2UgbGVnYWN5LXRydW5rCiszOTg3IDgzZWU3NjQ5ODIzZDI1NmNmMjc5MTNiYjQ0OGY5YzRhZmM4Y2ZmOGUgYWxwaGExMDAKKzM5ODggNDA0OGNjZjg1YjNkMjQ1NjY3NTRiYTMwMzNlYjc0Y2NmODY0NjAzNCBhbHBoYTEwMAorMzk4OSBkN2E4NTU3ZTc4MGNkNTI2YTg1NTM4YWVhNmExZDBmNDRkNTQ5YmQ5IGxlZ2FjeS10cnVuaworMzk5MCBjOTQ5ZGNiMDM0OGJlNGVhYmRmZTUxZWQ5NGM4NTliZDMyY2U3N2M2IGFscGhhMTAwCiszOTkxIDdiOTgyOGJjNzFkZDY0OTI1OWFiNGVkN2MxNWQ4YTIyZGVhYjhiZDEgbGVnYWN5LXRydW5rCiszOTkyIGUyMGQwNjk0ZTc0MDE0ZWJmNmRhYjY0ZDliMjZkMzBiZmE1ZTNkMzIgbGVnYWN5LXRydW5rCiszOTkzIDEwMzZmMjA1Y2MyZDdhNWYxMDdjZGMxZmJlZTMyMDc0OTgxOTJjMDUgYWxwaGExMDAKKzM5OTQgNzA0OTJkNjU5ZTNjN2MxMjRkM2ZjYjE0MDlhMjA5YjNmZDcyNWNjYiBsZWdhY3ktdHJ1bmsKKzM5OTUgYTgyNzU1NjI3ODRjZDJmMjY5MTk2MTFiMDg3ZTU2OTlkNjE0MzhmOCBsZWdhY3ktdHJ1bmsKKzM5OTYgZjUwZmU0Yjk1MmJhYTE3MmQ2ZGZmYTNhMjhjYWQ2Mjk1ZWQ1ZDczMSBsZWdhY3ktdHJ1bmsKKzM5OTYgMDMyNmI1ZDYxNDQ1ZWUzYThkM2RlMjgxMTlmOTY1MmNiNzJkMmUzZiBsZWdhY3ktdHJ1bmsKKzM5OTggNmEwMWYwOTlmMGFkOGQ0NTQ3ZGQ3YzZhOGExZDhlYWM2ZTVlYmZkZiBhbHBoYTEwMAorMzk5OSAzNjZmOGRlZTk2ZmJmNGU3NzQ2MDhlMGVkZTliYzBhYjRkN2JhMmExIGFscGhhMTAwCis0MDAwIDJlMDUwYTUwYWEwYTAxZjM1MzVkYTAyNzkxYTZhMGZlMTkzMzNlZjIgYWxwaGExMDAKKzQwMDEgMmIyNzU1MzAyOGFhYzIzZTY4NzA4MTc5ODYzOWM0MTlkMzRjYzA4ZiBsZWdhY3ktdHJ1bmsKKzQwMDEgNzQ5MjBjM2EzNjdkMmQxYzdmMjkzODhiMjQ0NDAxZmQyZWU0Mzk4NyB1bmxhYmVsZWQtMS4xLjIKKzQwMDEgMjI1NDgyMjlkNmZkZGNlMzNjZjU3YTM5MzFmYmI3MjcyYzRiZTc2NiBhbHBoYTEwMAorNDAwMiAwNDc3YmMzOWM5MzU5MmFkOTIzMzkxZjc4MzE0MWRkYTgxODM5NDMxIGFscGhhMTAwCis0MDAzIDdmODkxZjMyODY0Y2E1MmExZDBjNzk2YmViN2IzMDJkOTAyY2MzZjkgbGVnYWN5LXRydW5rCis0MDAzIDg4OTZlNGVjMDlmYzRhNDY4NDhmNDM4YjA0MWQyMDhiMjU1MzRlMjAgYWxwaGExMDAKKzQwMDQgYjE0YzZiOTU1MTYxY2EwNGFlMDkzYTg2NzIzZDQ0MDNjYTEzMGNiZiBsZWdhY3ktdHJ1bmsKKzQwMDYgODQ1NDU3OWFiNTJmMzcxZGNmNTU0NmNiNTMwZTJkZDZmZDYwZmY1ZSBsZWdhY3ktdHJ1bmsKKzQwMDcgOWNjODU4YmQ1NzNkZTM0ZjMwOWZlMTZlYTVjNDhlOTQ2Yjc1MzcyNSBsZWdhY3ktdHJ1bmsKKzQwMDggODEyZDA4MTFmY2YzZTA2MmU0NTE1OWI0MzhjYWJhYWYwMDMwOGNkMiBsZWdhY3ktdHJ1bmsKKzQwMDkgYTc1ZGM4NjU2Y2IwYTIzOTNkYmE0YzI1MmYzMWQzMTJiZTRkMTMyYyBsZWdhY3ktdHJ1bmsKKzQwMTAgYjZiNTBkOTQxMjVmZDQyZjEwMmJjMGQ4ZmMwNDQzYzQ3NTk2Mjg0ZCBsZWdhY3ktdHJ1bmsKKzQwMTEgODdhMmIwNGM0NjgwYmQxMjFmYzNlNjg2ZmZhODc4ZjZiNGZhMzE2YiBhbHBoYTEwMAorNDAxMiA5NmQwZGM0NzM5ZWNhMjQ4MjA3NTNiMTRiZGJlYjA4MTcwN2FiZDJlIGxlZ2FjeS10cnVuaworNDAxMiAxY2Y2MDg1Njk3Y2Q1YTBhNGUwMmIzZjA5MjRmYTI1NjhkZWQwMTI4IGFscGhhMTAwCis0MDEzIDU1MmIyMWU3YzIzMGE3OWQyNmJjMzE1ZjllZjU2MDk4ZDA0ZDc0NzUgYWxwaGExMDAKKzQwMTQgYzFmYjJiNmM0NzRjZWE5M2VlNTRjYzgxZjE0ZTY5YTBiY2M0MjcxMiBhbHBoYTEwMAorNDAxNSBlNDFhNjUzMDY3MDYyMDA1YTJjNWVjNTA2Y2FkZTA5N2QxYjg0NDQ2IGFscGhhMTAwCis0MDE2IDE1MTMyMWExOGRiNGE3OGI4ODdhN2I2MDc2YTQwZTYwZDJlMDY0YmYgbGVnYWN5LXRydW5rCis0MDE2IDQyNDg2YmYyMzY0N2RiNDMwMjY1YTRlMzMyODE4NDZjYTcyZjYwOGUgYWxwaGExMDAKKzQwMTcgOGZiZTg2MGEyNmUxOTk1ZjFkYTFmYTcxZDk4OTVkMTQ0MGQ4MDUwYiBsZWdhY3ktdHJ1bmsKKzQwMTcgZTQ2ZTBlZTc2ZGJjNDQ4MThhNjY3ZWMxMjQzYWZlOTU1M2FkN2FkMyBhbHBoYTEwMAorNDAxOCBhOWRkMmUxZWE1YzllYTJjYTQ3YjRkMGM4MGFjZWI2YTE0NTZmZjBmIGxlZ2FjeS10cnVuaworNDAxOCBhMTlmYTA1NWVjNDhiMjQ0NjdhN2EyMzBkYmNhYTI3YmNjMzE2YTMzIGFscGhhMTAwCis0MDE5IDQxMjFhZmQ3NmQ3MzRhZmVjMjI0ZmIyYmE5ZWI4ZDE2NmMzZDEwOTIgbGVnYWN5LXRydW5rCis0MDIwIDVhNmMyYTIzOGYwMzg3NmUyYTc5ZTJhYjMyOWYyNWUyN2JhMjg5MzUgYWxwaGExMDAKKzQwMjEgMjljNDI1NWNkNDVjZDVmMmViYzZjMTFkNmNmNGYwYzU1N2FmODg1NCBhbHBoYTEwMAorNDAyMiAwMjAyYTcyZDk5NGUzZDM4MjU1ZjNhNTUzYTkwY2UxYjE1MzZlZWZmIGxlZ2FjeS10cnVuaworNDAyMiA0ZTFhMmRiZjkzYzUzMmEyYmZmY2UzYzVkZmU1N2E3OGY2ZDZmMjJlIGFscGhhMTAwCis0MDIzIDNlNmI2N2NhOWRiZTQyNjlmOTU5MDA0MjM3MmI3ZWFmZDhjMzZiNzcgbGVnYWN5LXRydW5rCis0MDI0IDAwN2FkZjAxNTQzYzUxNzY5ZmMzMmQ4YTE5ZGU0OTQ2MWZjZWUxOTkgbGVnYWN5LXRydW5rCis0MDI1IDZjZTgyYzE1ODFiOTJmNzcxZGI5MGM0ZjUyODVkYWM1NmVkYjljY2IgYWxwaGExMDAKKzQwMjYgZjI2MDIyODgzODFhNDI1N2Y4ZjYyZjk4YTAzNmZkZTc2OWYwZWRjNyBsZWdhY3ktdHJ1bmsKKzQwMjcgNTkwMzljMDg1NmM5Mzk2ZTNmMWYzYTQ3NDQ5ZDMxNjlkNzNmNzVmNCBsZWdhY3ktdHJ1bmsKKzQwMjggYTNlYjI1MjU5MzI5NDIxNjZlMzQwZTdjNmQ4NDg3MzRhOGFmNTYwMiBsZWdhY3ktdHJ1bmsKKzQwMjkgMWY0OTI5YTQ4ZTY0YTAwNDdjMzhlZDc4OTFkMTJlYWI1OTIxYmIxNCBsZWdhY3ktdHJ1bmsKKzQwMzAgOWFmOGIzOTkxY2VkZjcyZWJiYjk2ZGE3Y2I2MTE0NDhkYTFiOGM3YyBsZWdhY3ktdHJ1bmsKKzQwMzEgZmNhZjhhMmJhZjM4OTZlOTAwMzc4Yjg2MDg0OWRhYTAxNDYyMGJjMCBhbHBoYTEwMAorNDAzMiBiY2E4MjkwYzFiMzFjZDdkNzI3MDVlMzkzMjc1NmUyZDI4ZWUwNTUxIGFscGhhMTAwCis0MDMzIDdhMjliYjNiZGRiNDY1YWU0NDBhMzVkNmY1MzkyNjllM2M4MDRkNDQgbGVnYWN5LXRydW5rCis0MDM0IDM3Y2Y4N2Y1NjFlY2E5ODVhZWFmMmEwNTE0ZGRkZDk3ZTlhMTg4MTAgbGVnYWN5LXRydW5rCis0MDM1IDA1NTk2MmY5NmRlN2I1ZjBmYTA4ZDNjM2VmMTU1NmJhMGZlODI2ZWMgYWxwaGExMDAKKzQwMzYgMTRiMDg3ZmU1MzQ3MGM0ZTM3ZTE0MDAwNzU4ZWRlNTU1OTkwN2U4MiBsZWdhY3ktdHJ1bmsKKzQwMzcgNzA4NjU0YTVkZGRlMDMxMWQ3NTgxNzU2NmNhYjE3YzZiZGFjM2U0NyBsZWdhY3ktdHJ1bmsKKzQwMzggMGQwMjlkZWU5MTI5MGY5YTJmNmU0NWEyYWRmN2Q1Y2IwOGZkM2Q4NSBsZWdhY3ktdHJ1bmsKKzQwMzkgN2E0N2ZhYmIxODdjNmMyNjdjZWU3N2I0NTI3OTU2MzJiNjFjNzI5YyBsZWdhY3ktdHJ1bmsKKzQwNDAgZmE1MGQ0YmQ1NTM3ODVhMWMxYWJlNzI5NzkzNjhiNDA2ODkyNThhOCBsZWdhY3ktdHJ1bmsKKzQwNDAgNjBiMDE1OGQ5NDhhY2MzYTE5MDVlMGIxZDdhZWUyNTY1OWQ4ZjczOCBhbHBoYTEwMAorNDA0MSBmODQ5OGIwODhhYTFhMGM1MDM2NmRjYTUyMzZjYzU1YzEwNDhjZDExIGxlZ2FjeS10cnVuaworNDA0MSA4YTdlNTMwZGQ0NGE1ZTY0MDAwOGE5MzZlYWMzNTM2YWU0NzJjYjMxIGFscGhhMTAwCis0MDQyIDYyM2RkNzI0OTE4NjY0NDExNDhkODBiZDA1MWI5MThmNGNkMzJhZTIgbGVnYWN5LXRydW5rCis0MDQyIDE5ZjIwNzUxZjhkZWZiZWYxNDZjNzc4MTU0NTllY2IzY2IwMjc3NTcgYWxwaGExMDAKKzQwNDMgMDNlMDk3ZGRlY2EyYmVjYjgyMjkwODZmNmYyNTBhZTZmNGYxY2Q0NSBsZWdhY3ktdHJ1bmsKKzQwNDQgNmNmNmI2NjkxYWFlYjI4MTdmMDkyNmZhMmRlMTNmOGM0ZDcyYjJhNCBhbHBoYTEwMAorNDA0NSA3YWM0ZTQ5NzkxZjQ3ZTFiZGFkOGVmNGU0NjhiMzkyYmM3NjI0NjQzIGxlZ2FjeS10cnVuaworNDA0NiA5ZTJiMTk0MmE3NDIwYWE0MDY3YzE5NWNhOTFkOWE5YjY2NjdhYzdiIGFscGhhMTAwCis0MDQ3IDFjNzFhMjdmZDY5MzNkYzZkZTU1ODcxMzI3YTQzYWIyYjA0OGNhYTIgbGVnYWN5LXRydW5rCis0MDQ4IDUxYTA2ZmRmZmY3ODlkMzNlMmEwMDZmYzE2OGI5NjE4NTRlNjE0MDQgbGVnYWN5LXRydW5rCis0MDQ4IDExZWExNjFhMDFjMmZkOTJiNDRhOThiMjIwMjZmMjk1NmZhNmQxMDkgYWxwaGExMDAKKzQwNDkgY2YzMjhhOWVjNWQ0NDg3NmNmMDI0ZjExZDdhYzU2NTlmOWQzOTU0MCBhbHBoYTEwMAorNDA1MCAxOWIwMGVmNGNkZDk5N2RhMzI4ZTM5ZTNkNTJkOTM0OTExMDk2MTNkIGFscGhhMTAwCis0MDUxIDdlNWY5N2JhYjFlNmY4ZGVjNzZkNGYwNzQxNzQ0N2ViNTc5MjAwZDAgbGVnYWN5LXRydW5rCis0MDUxIGNmMjRmM2U3YmU2ZDdlNjVlYTVhNWM1N2ZiZjFmYmE4ZjhhZDJmZTAgYWxwaGExMDAKKzQwNTIgMzJjMjhhZGNjZDEyYjA2OTBjMTk1ZDNhOGMyMzhiYTEyNDcwODYzZiBsZWdhY3ktdHJ1bmsKKzQwNTMgM2FhYzgyNWE1M2I1MjNkZjVmMDJhZDBmMzg3NzFkMWE3NWM2ZDE1YiBsZWdhY3ktdHJ1bmsKKzQwNTQgY2JlZTVlMWU5YmU4MzI1OTA0MjY5OTgwOTgzMTBmZTY5YmExMzdhOSBsZWdhY3ktdHJ1bmsKKzQwNTUgNzYwM2EzYjJjYmVlOTkzNDVkMmY5ZTNlN2NmYWJlZjkzMTg4ZDFhYyBhbHBoYTEwMAorNDA1NiA5MGVlNzFhM2ExM2ViYjQ0ODM2Y2FmMTZmNjk4ZGI5MmQyMThiZDVkIGxlZ2FjeS10cnVuaworNDA1NyBhNGM3ZWZmMjU5YTU5YzhiNGY1MTk4YTI2Nzg0N2RhZGE3NWI4YTE5IGFscGhhMTAwCis0MDU4IDRkZWY5MzRmZjc1YjgwNjJhYmZhOGEwNzAxZGJhNjc5NWY5NzU2ZTQgbGVnYWN5LXRydW5rCis0MDU5IGYwMmE0Njc1NGY1MDVjM2VkMzBkYWZkN2M0YzE1NTQ4ZmRiOTBkYTYgbGVnYWN5LXRydW5rCis0MDYwIGE4NjJkOGY0NTA3YjhiNGJkM2M0ZGZhMTNkM2Y4YjkxNzYzODRmZGUgbGVnYWN5LXRydW5rCis0MDYxIDFiOWVjMzdkYjJiOWFiZjk1Y2ExZThiOGQ0MThiNWQwZGU2NGUwMmYgYWxwaGExMDAKKzQwNjIgNTA5NmJiNDhjY2ZlMTMwYmZlMWZlOGMxY2EwMDRkY2Y4NjVhZjk0YSBsZWdhY3ktdHJ1bmsKKzQwNjMgYjVhNjYwY2FhOGUxYmM0NTdiNTQxNDQzYmIxYjFkZGEyZWVlY2Q3MiBhbHBoYTEwMAorNDA2NCBkOTBhYWEwOTEyM2JmNTg4YTc5ZDA5ZmZlZmYzNzA3MmE5ZGQzZDhiIGFscGhhMTAwCis0MDY1IGUyODIzMTEwYzA1MTU3MDQ1NDQ0ZTFmMzhjMzJlZDhlYzVmMmQ5MTIgYWxwaGExMDAKKzQwNjYgZTZhMjEzYjdkMGQyYjk4MDNjZjQwMjNmMGU2NGZjMGNkNzI1MTY3NyBhbHBoYTEwMAorNDA2NyA3MmM5YTRkYzQ4NDdkNzk0ODk3NzZkNTZhMjQyM2QzZWEwZTUzYWJiIGFscGhhMTAwCis0MDY4IDRmNDQ5YWI2MDU2N2ZiYjY0M2UyYWQ0NTM1Y2NiZGM5Yzk4MGZiYTQgYWxwaGExMDAKKzQwNjkgZmZkNDk1YmFjYmQ0MzZmMDBlOGNiZWIyYmIwYzEwODNhYjgzZjA0MyBsZWdhY3ktdHJ1bmsKKzQwNjkgOGU3ZDhkMGQ0ZTkwYTk0NTE1OGRhNTZkYWM5ODhkZjcyOWJiNWE4NyBhbHBoYTEwMAorNDA3MCBmN2UxZTIzODkzNzVmMjMyNjIwYWVmOGU0YWQ0OGU3MWM0YzU4YjIzIGFscGhhMTAwCis0MDcxIDAxZDI2NDg2YjBlZTY2NDdjM2YyZDEwYTBkYmJmNDEyYTM2ZjgyZmMgbGVnYWN5LXRydW5rCis0MDcyIDE0YjAzNDE4YzkwZmIzOGFmMjBmZWQ3ZjQ3MjY4OWVlOTUzYzRjY2IgbGVnYWN5LXRydW5rCis0MDczIGE2ZTZmYWQxYTAxYjMyZmRmNDQ4MzNlNGYwZjk4YjczZDM3MjRmMWMgbGVnYWN5LXRydW5rCis0MDc0IGEwOWVmYjEzNWRlNTUyNDYzNTBlZTQyNDVhYzE4MTk4NGI1N2U1N2MgbGVnYWN5LXRydW5rCis0MDc1IGQwNzRiMmZiNjA5MTRkZDdkNWNiOTAxYjkxZjk1ZmI5MmVmNjgyZDUgbGVnYWN5LXRydW5rCis0MDc2IDczZGQyYTk3OTg1N2YxN2IzNmU5MTUzMmIxNjcyZmU2NWRjYjk2MmUgbGVnYWN5LXRydW5rCis0MDc3IGI1ZDViYmNlYjAwZjYwNDg2MzRiOThmMDdkODY5YmRkYjRhOTNiNTAgbGVnYWN5LXRydW5rCis0MDc4IGE5NjE2ZjU2NTQ2NTUzNzgyOTVlNGE5YjMxM2UzZWQ5NGU4NGE4NTYgbGVnYWN5LXRydW5rCis0MDc5IDI3MzQ1MTg5MjMyN2NlMWYxYjA3ZjBkZDQ5MDlkMGQ1NmVhNjhkZGYgbGVnYWN5LXRydW5rCis0MDgwIDM4MmI0ZjhhNzM3YTRjZmYxYWI3YjA1ZmU5M2I4ZGQ2NzA1NDY5MzggbGVnYWN5LXRydW5rCis0MDgxIDk1M2U3NGVhYzAwNjI5ODE2OWM1MmVlNzJhMjllN2Y0ZjQ1ZDU2Y2YgbGVnYWN5LXRydW5rCis0MDgyIGNlZDNkMTEyMmY3Y2JhYjEzZTA3NzEzMmQ2OGQ0ZDAxMTkyODg1M2IgbGVnYWN5LXRydW5rCis0MDgzIDM0NGRkMjhkYTljNTY2MjBmNTM2ZWExYTM4ZTg3MjgyM2M1MGRiM2YgbGVnYWN5LXRydW5rCis0MDg0IGE5NDhiNDRhZDRhMTU1MGI1NzJiYjc1ODEwMmZlNWMwODMwZmQwNDYgbGVnYWN5LXRydW5rCis0MDg1IDJmZTU0ZjYyY2RiNTQ5NzJjMWE1OTJjYzYzZGVhZTRlOTc1OThiZmMgbGVnYWN5LXRydW5rCis0MDg2IDRjMzA2MmM3MTM1ZmNkM2Q3MWQwNGU0ODYxZGU4MmIyMjdlZmY5YjAgbGVnYWN5LXRydW5rCis0MDg3IDZhMGU1Y2Q0OTljNDVlZGRkNzVjY2IzYmY4MjQzYzQ1NmQ4Y2YwYmUgYWxwaGExMDAKKzQwODggNDk2YzdlOWYxMWQyNDgyMGRiMzQ1MzgxNGY2MjM0YWRkNWYyMjljOSBhbHBoYTEwMAorNDA4OSBjYTAyMzM5OWU1Yzk0YmI1ZTdmOTJmOWE1ZjA0YTQ0MmIwM2IyMjM4IGFscGhhMTAwCis0MDkwIDUyZmE0ZGNkMWIwZTBhMTYyYjBmZGM3YjQ4YjEzZTQzYmI1YjI2NGQgYWxwaGExMDAKKzQwOTEgYjZjMzVlMWZhZGFlNmZmMTI3MWY1YjVkODc1YjBiYjY0YmZlMTZiZiBhbHBoYTEwMAorNDA5MiA4Zjk2ODAyNzMzMDc3NTM4Zjg5NWUzOTc1NzQxZGQ5YjE4MGU2ZmMyIGFscGhhMTAwCis0MDkzIDlhZTdmMmZkODlmMTA5N2RjNzhhNjYxODlhZWI0YmYwYjQxM2ZiNDcgYWxwaGExMDAKKzQwOTQgNGI1MGYxMDQyZThkYzA5MDM4NmQwNTQ3MTc5MTg4MmMzYmUxZjY2MCBhbHBoYTEwMAorNDA5NSA3NjM3MTgwNWQ5ZjM3NGYxOTczMjg4MTI5YTI0MzMxNGNjNDI4ODYwIGxlZ2FjeS10cnVuaworNDA5NSAwM2IwNTcxN2I5NTIyNGFkMmE3MDdhNzYyMDU2NDRkOTMzNzA5OTViIGFscGhhMTAwCis0MDk2IDFlM2E1NTNlNDc5YWYwOGRlM2U3ZDlhOGVhNThkMDczOGI1OTJkZjMgYWxwaGExMDAKKzQwOTcgM2I5MGE5ZmMxZTAzOTg5Mjg1M2I2NWJjY2Q4NGI4ZmVhMTkyNDA2OSBhbHBoYTEwMAorNDA5OCAxZjA2ZjcxOTA0YzI0MWYwYTM1YmE3NTgzNDc3ZjhjZTllNGM5MjFhIGxlZ2FjeS10cnVuaworNDA5OSA1MDhiNzNlMGE3ZTRmMWYxNWJmNmNlNDRjN2U3NmE3NjlmYmZkODI0IGFscGhhMTAwCis0MTAwIDNhZmFmYWMzZDdhMTZiZWJjMjllNzRhMTRmY2RiNGJlMGEzYjZkZmYgYWxwaGExMDAKKzQxMDEgMDJkOGMxNTg4MmZmOWFkNTA5NjhhM2JlMTdjODAzZmFiMThmMTEyNyBhbHBoYTEwMAorNDEwMiA1MjkwNDI4YmFkMzcxNWI3M2ZhMGQxMjAwYTM5NGQ3MjE5MGIwNzYzIGxlZ2FjeS10cnVuaworNDEwMyA3NWJjYjFmYzY1YmU1OWMxMzI1NzY5ZTJhMmQyN2JmNTE0NmZmYzU4IGFscGhhMTAwCis0MTA0IDhjZjY0MGVmMzQ0MDA3Njg5ZTlkMzY0NDFhZTQzNWViN2FhNTNlMmMgYWxwaGExMDAKKzQxMDUgMTAwOWVhNDkzNjZjYzk4Y2Y2ZmFmOTU1ZDZjZDlhZDAzZDg5ZGI2YiBhbHBoYTEwMAorNDEwNiBjMmU2YzlhN2E5NWY4YjQ2YWY5Njg2MWE0NWZhMjQ0Y2ExYzIxM2ZmIGFscGhhMTAwCis0MTA3IDBhNjA0NjBlOTlmMDJiNDE5NmU0YTdiZGMzYjI5ODhjYTc4MDQ4MjAgbGVnYWN5LXRydW5rCis0MTA4IGRjOGUxZDcyZDc4ZGNjZTVlZjUwMWI0M2Y1ZDUyZjI3YzY5NjUyMjkgbGVnYWN5LXRydW5rCis0MTA4IGNhZWFlZTM5MGU0M2ZlNTczYTkzZDM1YzJiY2U4MzQyNzMzYTBjZDMgYWxwaGExMDAKKzQxMDkgMWIxN2FhZjI1MTA1NDk3NmJiMmMzYWVjN2M0ZDU5NDE0MDFiYjRiZCBhbHBoYTEwMAorNDExMCAyYmNkZGM5MDVkYTBiOWY4Y2I1MjdlNmZjZmI1ZmU4ZGM0M2M3MjQ0IGxlZ2FjeS10cnVuaworNDExMSAwODA4MTFiMWQwMjMzMjBmYWIzYTg5NWZmNmNhYzk0ZDZiMTNiYWM4IGxlZ2FjeS10cnVuaworNDExMiAxY2Q0ZmQxNjYyM2RlMjM0ZTZjMjFmODg3ZDM5MzczNGM1MzkyMjljIGFscGhhMTAwCis0MTEzIDRjYmY1MzZhNmYxODAzODU4ZTRiNTcwMTlmNmJhZDc2ODY3ZmNhNjYgbGVnYWN5LXRydW5rCis0MTE0IGM1NGMwN2FiY2ZjZjMxZmZiZDI4ZTM1MDgwZGJjNTA0MjIyMzljOTAgYWxwaGExMDAKKzQxMTUgNmJlOTFjNDRjYWZmZDVlMmMzZjQyOTEzZjhkZGIyM2FmOTg1YjUzMiBsZWdhY3ktdHJ1bmsKKzQxMTUgNmU0YTg5ZWUxMTYzNGI1ZWZjMGRiMGZlMTA3NTNiZDgzOWUxMzE0NiBhbHBoYTEwMAorNDExNiAyM2ZkNTBkNzdiNWEwNTAzNmRhYmRkZjRiZDg0N2E3NTZjODIzZTU5IGxlZ2FjeS10cnVuaworNDExNyBiNWE1N2FmNDA1MDhjOGU0ZGE1ZWFhYTZlNTg4YTUwZWQzNzU5MWQ0IGxlZ2FjeS10cnVuaworNDExOCBiYjYxODE2ZTFkYWIwZTQ2ODEyMTNhNzIxZWM0ZGFlMzljMzk5MGZlIGxlZ2FjeS10cnVuaworNDExOSA5NDYyMWE0NjhiNjBkNDE1OTNjMTJhYTgwMzAxOWY2ZjM2ZDgzYzNmIGxlZ2FjeS10cnVuaworNDEyMCA5M2UwMzY3ODZiMTdhNzhkMGQwZWY1ODE1MDE5NmI1YThkOTRlYmU1IGxlZ2FjeS10cnVuaworNDEyMSBkODhhZjU4ZTk1Y2QwODQ0ZWI5OTUxYTdjNmJiNDJkOTA1NzM2OGFmIGxlZ2FjeS10cnVuaworNDEyMiBlMjY2NWQ5ZDRlNDZkMjU0OWQ1OWJlMDg3NTVlMGQ3MTVkZDE3Yzc1IGxlZ2FjeS10cnVuaworNDEyMyBjZjI5YzA5ZjA3YjYxZjc5ZWEyMzhiMTdkMTJiMDYyNDU2ZDY1MzYwIGxlZ2FjeS10cnVuaworNDEyNCAwM2QzNTFiNmY3MzhlNGM1YjhhMmRmYjE4ZGJhZjgzN2U4OTA4YWVhIGxlZ2FjeS10cnVuaworNDEyNSBjNTAxMjc4MDkxNzlkZGVkN2M3YTAxMzg5MmRkNGFhM2RhZjBlMDJkIGxlZ2FjeS10cnVuaworNDEyNiBiOTQ5MjI0YTRiZDU2MWE4ZDg1MGIxM2ViNDhmNGU5Yjg5ZjE1MTY0IGxlZ2FjeS10cnVuaworNDEyNyA5MDJmZmY1NWRiMzgxZjA5MzRkOWFjMzVlNWYyMmI2YjdiMWZkMmM5IGFscGhhMTAwCis0MTI4IDUxN2JhYWUxYjY2M2MyNjFiNmEwN2RmZjU5ZjFiMDYxMDhlNTg2OTMgYWxwaGExMDAKKzQxMjkgNDY4Yjg3ODRkYTQ4Yjc0YTA3ZWE4MGJiNjAxNWM4OWNjNjVlZjRjOSBhbHBoYTEwMAorNDEzMCBiZmNmZjhhZjk3NTE2ODdmZTkxYzFmNTJiYWE5OTMxN2RlODdiZDg2IGFscGhhMTAwCis0MTMxIGY4NTQwYThjZjVkNzk0NjQ1YjRiNThiZTViNDA1ODc4ZDQyMWNjMzUgYWxwaGExMDAKKzQxMzIgYTI0MDNmZTJjODg1ODA1NWY2NTFhNzkxOTAwODI4MDQ4YTFmNzk0MCBhbHBoYTEwMAorNDEzMyAyYjA3ZDkyNWMwOWQ0MWVlZGQxYmY3ZjI4NGNiZDhhZmE4M2ZjZmFhIGFscGhhMTAwCis0MTM0IGRmMjIwNGU0N2I2NWY3NWEwNWVlMjFkMmU1ODJlMWFjYWIyMzYzYjUgYWxwaGExMDAKKzQxMzUgNzdjOTQ5MzAxZGIzNzQ5MDRiZjY1Yjc1ZTE1NThlOGJiZjEwYmViMiBhbHBoYTEwMAorNDEzNiA3ODc0NzU2MTBiMDJlMzFkYzU1NzBhMTMyZDBhNzdhM2NjNjEzN2I3IGxlZ2FjeS10cnVuaworNDEzNiBiNzA3MmVjN2Q2NTIzN2FjZTQ3MWFkM2ZiMzgyMTExNGM1YzQ3YWVjIGFscGhhMTAwCis0MTM3IDdiMWM0OWE3ZDM3NWVhMDk1ZjViNjg3MGFjYTIxNGQyYjE2MjA5MzcgYWxwaGExMDAKKzQxMzggZGEyYWZjMDI5OGE3MGZjZTdkM2MxOTY4YWE0MDYyMjljMmU2NDViNSBhbHBoYTEwMAorNDEzOSA5ZGE0OTQyMzg3NzNjOTE2ZTI1YTZlMzE1ZmQ2ZmJkOWVmMWY0YTIyIGFscGhhMTAwCis0MTQwIGZiNWJiOWU3Y2Q3YTgxOWMxZDRlMmFhODUzNGRkOGEyZDY4NTM0NjkgbGVnYWN5LXRydW5rCis0MTQwIGViZTg2ODFjZjVmZWFmMWE0ZGQ5ODAwNzRlMGI0MDIwNmMwODkxOTAgYWxwaGExMDAKKzQxNDEgODc5ZThkMDRlNTg5Njc3ZmM2NDA5NWQwMDczMmQ2ZWUxNzg0NzhkYyBhbHBoYTEwMAorNDE0MiBlYjExYTA5OGI3ZmYyY2NkZTgzOWVhNzYwMTBhMWM3MzU2ZTVkNzM3IGFscGhhMTAwCis0MTQzIDllN2QyMDZhNDkyMjE2NmEyMTlhYjU5ZDQyMzliNTJkNjMxOTllMzQgYWxwaGExMDAKKzQxNDQgOTNkZjgzMDIyYmU4NzhjMTEwNzZhODYwODhiOGMyMGUwMTc1MzRlZSBsZWdhY3ktdHJ1bmsKKzQxNDUgNzdiYmU1OGFmZWFiNTI1MzJiYWExNzBlZjU5YzQzNjg5MzZmOWZhNiBhbHBoYTEwMAorNDE0NiAwMTVhZjFjNDc3MjY0MjdmZWZiYTZhYzA0Y2Q2ZTRiNTc4ZTVkNjQyIGxlZ2FjeS10cnVuaworNDE0NyAxOTAxZTA4MDg2ZjlmZDY0ZTcwZjFlMTJiOTI3NjQwY2I3NjZkZWJkIGFscGhhMTAwCis0MTQ4IGYxYjA0MGJjYTNlMTJlYWQ0YmU1OWNlYzQ4MDU4ZTljYjc1NGQ1ZTUgbGVnYWN5LXRydW5rCis0MTQ5IDBmYjNhYTVjYTRjMDJlY2UxMDFjM2JkMGNlZDU4NGRlNGJiZTk5YmYgbGVnYWN5LXRydW5rCis0MTUwIGJhOTU3YWE0MjI0MWE5Y2U5MGI1ODc3NTc3OTkwNDdiNzE2ZTU2ZDEgbGVnYWN5LXRydW5rCis0MTUxIDIyMjgwMmYwZDk3ODI5NTQ1ZjQxMGQ3NTAxZmFlNmU0M2JmZjRjZTUgbGVnYWN5LXRydW5rCis0MTUyIDRiYmEzYzkwN2ZmYWU0NzVjYTBiMjM1MWRiMzVkZTMxZDkwZjkzYzUgbGVnYWN5LXRydW5rCis0MTUzIDE5MmQ4NjliZWI5NzM2YTE4MTc2OTA3NDM2YTA1NGI5MGY0OThmOWIgbGVnYWN5LXRydW5rCis0MTU0IDZmODFiMTNmZDZhYzA4ZDQyZTYxODhlZmJiOWIzNjRmYWZkNTRmZmEgbGVnYWN5LXRydW5rCis0MTU1IGRlMmRjMWJjNGJhZTFjYzNjOGM5ZTkzODM3MGRmN2M0NzczMzRlNjEgbGVnYWN5LXRydW5rCis0MTU2IDM3NWI4Yjg2MzEyNmZhZWRmZThjNjA5YjA5Y2IxZTc0YzFhYTRlMTEgbGVnYWN5LXRydW5rCis0MTU3IDU2NTZmODg3ZmZmMzdlZmQ5MzllODdmNmEzYWI1ZDk4ODczZTYxMTUgbGVnYWN5LXRydW5rCis0MTU4IDM2NmEwMjkyYjYxNDJlNjQ1MGRjMzVlYmE2Y2U3YzViMmE3MDM5MTEgbGVnYWN5LXRydW5rCis0MTU5IDJlZjlkNTBhYjY1NGJhNTAwM2JlNDg4YjllODI5NWIwODMxYzMwYTMgbGVnYWN5LXRydW5rCis0MTYwIGJiNTY2ZDI4Y2FhMGQzYWZlOTFiZTY2OGUxNTlmMWNiM2Q5NjhiYWMgbGVnYWN5LXRydW5rCis0MTYxIDU4NDBlNTUzZWI4ZDg5ZmM3NTlkZTMyNjBiZDFiYjlkNTFmZjlmNGQgYWxwaGExMDAKKzQxNjIgZGIwZWFlZjQyY2I5NGU5MjE5YWU4OTZhNzg3NDNhYjg5NTZiMWE5ZCBsZWdhY3ktdHJ1bmsKKzQxNjMgOTkyOGQzMzM4MjFkZTBiYmI4YjhhNTRjMTFhMTFkZDU2ZjM0N2ZmNiBsZWdhY3ktdHJ1bmsKKzQxNjQgNTA0YmZhNTliOTU0ZWY5N2VjMWY0NmNiODIxYmNjNGJhMTUyOWRiNyBsZWdhY3ktdHJ1bmsKKzQxNjUgYmE5Yjc1NWUxN2ZlMGIyZGQyMDYyN2EwNzBiYWNhZDI5YTkwNzYxZCBsZWdhY3ktdHJ1bmsKKzQxNjYgMGQ2MTMzYWJiNmU1ZmNiZjg4M2Y4YTBiYWMxNjkxODRkNzJhODY3OCBsZWdhY3ktdHJ1bmsKKzQxNjcgYTE2MDFmYzJiM2U0NDE0YmEzMjhhMGJlMzMzNzU3ZGQ1YzJhMjZhYSBsZWdhY3ktdHJ1bmsKKzQxNjggMmY5YmEyZWJjYjEwNzNiZmUxN2NiN2U3NDBlNGVhNmEwMjdlODMzMCBsZWdhY3ktdHJ1bmsKKzQxNjkgNDIxMGIwZGVmM2Q3ODE1MDUzYTcxYmEyMWNjYTc3NjdiYWQ5NjY2OSBsZWdhY3ktdHJ1bmsKKzQxNzAgMWRkMzExNTM3MDlkZDVjNjI3OGY2ZWJiYWJjZjQyZjEwZjA2NDM1ZSBsZWdhY3ktdHJ1bmsKKzQxNzEgNDcwYTUxNTQ1ZDZjNGRjZWNjOGExMjVmN2VmYWZlMzBkYjk0YzdhYiBsZWdhY3ktdHJ1bmsKKzQxNzIgZTVhOGY2NDc5MjE2OTFkOWUyODcxMTQwNjM0ZmIwMDYwMWYxNDNiNSBsZWdhY3ktdHJ1bmsKKzQxNzMgZTE2NzY5Y2Q3YTkwMWVkNzQzZmQzMmY4Mjc3OTUwYmZlMWQ2MDNkNCBsZWdhY3ktdHJ1bmsKKzQxNzQgY2RmNDRjMTRjMjcwODkwY2IwZDc1NDBkZjk2MjlhNTRkY2U2NTc4MiBsZWdhY3ktdHJ1bmsKKzQxNzUgZTgwYzcxMzlmNTMzZTRlMzlhYjE0ZWZhMzgwZDVjZmE3NGZkYmMxNyBsZWdhY3ktdHJ1bmsKKzQxNzYgNmIwZjBlZjJjMTMyYzc1OTcxOTZmNTY1ZWM0NDRkM2Y4OGM2MWI0MiBsZWdhY3ktdHJ1bmsKKzQxNzcgYmQxZDBiYTQwZjkwY2U0MjZiNTE1NmJiN2FkM2Q4YTY5NmU0ZTIxMiBsZWdhY3ktdHJ1bmsKKzQxNzggN2YyMGY0YjkzMzVmYTA3ODY1MzQzYzFiYzJjODI3YmJiZGY5MjhhMCBsZWdhY3ktdHJ1bmsKKzQxNzkgZTg2NTFkMGU0YTNjNzE4NjM1ZTQ0MDExMGNkMTIzZTZjOGRiZDUwNSBsZWdhY3ktdHJ1bmsKKzQxODAgNTgxZmU2YmZjOTAyNGEyZWEwNTQ3NzRjZDFhMDliNjU3YmNhNmQ5NCBsZWdhY3ktdHJ1bmsKKzQxODEgYWZjNTc0MDY0ZTYyY2FlODI5NDg2ZDc3OGY2MWIzNmNmYWFiNzcyOSBsZWdhY3ktdHJ1bmsKKzQxODIgMTc1MDBjZjk1MzhmMWE5ZmVhZjY4NzJlZDYyMGU0OTZhZDhlYTRlMyBsZWdhY3ktdHJ1bmsKKzQxODMgMjU0MzI2ZjI0MTVmNDZiZDAyYTI1NzlhMWVhN2Q1MDg0ODQ3MWZkNiBsZWdhY3ktdHJ1bmsKKzQxODQgODZlZDUzODQ0YjA3Y2Y2NDdiMmQ3NGU0ZjIzM2FkZmNmMWJlYjFiMCBsZWdhY3ktdHJ1bmsKKzQxODQgOTA3ZDllN2JmNGI1ODlmYzJmMDJhOWI5MDBjNThmNDFjZTU1NGQ4NSBhbHBoYTEwMAorNDE4NSA5NjAwZDNkNWNjZTdiZGQ5NDMwOTI3NzQ3ZGU2ZDkzYjhkY2M3NmM1IGFscGhhMTAwCis0MTg2IGVlMmY4OGE0ZjllMmJjZTYzOWZiZGMyNWJkOGRjOGFkOWQ4OWY1ZjAgbGVnYWN5LXRydW5rCis0MTg2IDI4NWZlODk3OTk3OTk1NzY1NWU3NmRjMDJiZGIwMDQwOGI4YmE2NGUgYWxwaGExMDAKKzQxODcgNDU4ZDhmM2VmMzA3NTgyN2UxZmZlNGJlNDI4NWI0M2FhOTIwOWUwNyBsZWdhY3ktdHJ1bmsKKzQxODggMjljNzg1MTZlZTMzMzNjMDk1YmU4ZmJkZTJiMmI5OWVkNTdhZWI2ZiBhbHBoYTEwMAorNDE4OSA3ODMxZmZkYjc4N2I4M2YyZDA2ZmUxN2E5YjNjNmM1OTEzMjM5M2QxIGxlZ2FjeS10cnVuaworNDE4OSAyMWQ3ZjkzMjgxOWI0ZGE4ZWU3ZGFjOWJlY2JkZGJlZGNjNDAwZDY3IGFscGhhMTAwCis0MTkwIGU5NWIwNzAxYzhiNTRmMjRkZjhjOTBiODMwNzQzNTc1ZWZkN2JmNjIgbGVnYWN5LXRydW5rCis0MTkxIDk2MDA5ZGFlOWQ2MjYyNmFhNGQyMzdmZTVkZDQ1ZmU4MWVkN2IxMzQgbGVnYWN5LXRydW5rCis0MTkyIGJlZGUzOGM0YTlmNWVjZDQyMTA3MzhlOWRkOTU2NzljMjhmYTM3MTQgbGVnYWN5LXRydW5rCis0MTkzIGJjMTFjMWZmNmNhYzAzMWY5Mjc5ODZiMzRiMGE0YjhkOTJmNTliMzMgbGVnYWN5LXRydW5rCis0MTk0IDU5NTI2NGMyZjA2ZDRhNjA5NjYxNjJhZjVmNDExNDFjOTNmNzJiOGUgYWxwaGExMDAKKzQxOTUgNmMwZTExYjk0MDA5YTI1MjM5OTM4ZjUyM2E3MmVjZGU3NjM2YWQwMiBsZWdhY3ktdHJ1bmsKKzQxOTYgZDViNjdkMmVjN2VlMDMxMDBhNjY4Mzc0MGZkZDBmN2ZmNzEyMjYxZSBsZWdhY3ktdHJ1bmsKKzQxOTcgMzcyOTAzYjYzNzExYTliZGQ4YWZjMzc3MzRlZWM0NTgzMjlkMzU4ZSBhbHBoYTEwMAorNDE5OCAxOTQwODkyZDJmZTNhOGNmM2I3NGNjMTJkNjcwMzk4YzNlNDgwMzYzIGxlZ2FjeS10cnVuaworNDE5OSBlM2E5ZDgxZGYxODUzYzhiMzc1NzYyNmIxN2E4NWFhODNhY2I0Y2Y2IGFscGhhMTAwCis0MjAwIDNmN2RkYjhiYjJmNjNiNzNhYjA3MWZjYjdlMWY4YTYyMmM2NTIwNjMgbGVnYWN5LXRydW5rCis0MjAwIGU3YjVmZTc2ZTVlYWNhZTRjNjYyOGE4ZTNlMjlmZThjZDRjODE0ZWIgYWxwaGExMDAKKzQyMDEgODI4NmE2NjI1MDJiYjZiNWIwYWUyYjFiMmE2NWJhMWM4ZGU3YmFkYyBsZWdhY3ktdHJ1bmsKKzQyMDIgYmNlYjcyMGVlMzYyYjA5NDdlMGE4YzEyNWEzYTcxZjhjNDZkNzZiYyBsZWdhY3ktdHJ1bmsKKzQyMDMgMGI2NDU3MjY5NTdlMjMyOWI5YzgzYWYwOGRhNzE0YmVkYmFkNmFjMCBsZWdhY3ktdHJ1bmsKKzQyMDMgNDYzOWMzYWQ4MzRiN2NjMDgxZDgwZDhmZmRmZmVmMGVlNTNmN2JhZiBhbHBoYTEwMAorNDIwNCBlYzI1YWFkNDM3MjRmMDU1YTNmODI2ZTM5ZGY3MjU1ZGE5MTRjZGZhIGxlZ2FjeS10cnVuaworNDIwNSBjYmI2MmVlODg1NGE2NDNlYzk2NjlmZTNjNjU3ZWFkYzYxZTZhMDY5IGxlZ2FjeS10cnVuaworNDIwNiBiNTQ2OGQ4ODZjYjU0YTIwMzRiZDA2NTY0NmU0YmQ4ZGU1MDdkNGU1IGxlZ2FjeS10cnVuaworNDIwNyBiYmU5ZWE1NTgyNjFlZTZkZWJkYTNmODAyMTk0NDNlZmMzMDNjZGZhIGxlZ2FjeS10cnVuaworNDIwOCA3OGEzNjU0MDZjNGNlYmY4NWRkYzdiMDAxYzZjYTM0NGI3OTdhYWUxIGxlZ2FjeS10cnVuaworNDIwOSBmNTMzNzkxYWNjNzc5N2VmMzNhNmZhZmZmZDNjMGViMjhlMzU5ZGY4IGxlZ2FjeS10cnVuaworNDIxMCA2OTdlZTg5YWRkZmUxZTY1NWM3MmRhYWE2MTBlZWJlNDMxM2MxYTA2IGxlZ2FjeS10cnVuaworNDIxMSBiOTk1NzhiODc4Y2U2YzRjNmZiZTExMGFlNDA0YWQ0MTFmNTFjMzkxIGxlZ2FjeS10cnVuaworNDIxMiA0ZDQyMWY5ZTgzNzNjYzBhMzEwNGUxYmViN2Q2NmI5ZjJkMTk4NTAzIGxlZ2FjeS10cnVuaworNDIxMyA0OGU2YjMxOWYzZTQ4MGQ5OWJmNDAzNWViYTg3NmVmZTA3ZjlmNDJkIGxlZ2FjeS10cnVuaworNDIxNCA3YTJlNzZlY2I5ZWY5MWRmNzNiMGIzZDIxMzkzN2VmNjE3NjYwZmZiIGxlZ2FjeS10cnVuaworNDIxNSA5YmMzZGJmMDg3MWQyNmUwNTFhZjI1NmE2NGU0NWYzZWE5NzUyMDM4IGxlZ2FjeS10cnVuaworNDIxNiBkMzUzNWQwNjI2YjQ2ODAyYjc0ODViZGU4ZmU2MzMxYWVhYjA5YjVmIGxlZ2FjeS10cnVuaworNDIxNyA5NDJjNGQwOTRhMGM0MTljNTVhNDNmNDliZjNiYTUyZGNlNTFkYThmIGxlZ2FjeS10cnVuaworNDIxOCBhMDQ2ODlmOTk4M2U3YWQ3YjE2ZmU2MmZlZGViZDU4NTEyNzc2NWY4IGxlZ2FjeS10cnVuaworNDIxOSA2ZTkxMzA0NjAyODg2N2EwZWViNDlkNjI3NzRhYmNjODczZGM5OGE4IGxlZ2FjeS10cnVuaworNDIyMCA5MDc2MDUzMjBhNWZkN2E0YTUyYjk3NThlOTdmZjcwODk3ODQ5N2Q5IGxlZ2FjeS10cnVuaworNDIyMSA2ODgxMmI3NjNlMGUyYmFkMmI3OTRjNzMzNmYxNzZkMjczZGI0MThkIGxlZ2FjeS10cnVuaworNDIyMiA2Y2I3NTljNmQxNzkwZDA2ZTJjMWRhODNjODkwNDE2Y2VkZDliMzhjIGxlZ2FjeS10cnVuaworNDIyMyBiMGRjYTI5NzJiMmIxOGQ5M2U2YWQ4ZGYwY2U1NzYzYzFmYTg1NzE1IGxlZ2FjeS10cnVuaworNDIyNCA1MWMyZTVhOWYzOWNkMTkxZjJjNGRiMGZlZWMyNjQ4YjBlZTcyNjM1IGxlZ2FjeS10cnVuaworNDIyNSA3YjNhNzY3OTI0YTFhOWUzMmI1NTA3MWYxNTk3NmIyZDA1Njk4ZGYzIGxlZ2FjeS10cnVuaworNDIyNiBkZjdhYTU0YWRjZDI5YmMwMWI0NTkxZWI0MjNlNDFhYjljYmM3MGIxIGxlZ2FjeS10cnVuaworNDIyNyA5ZDM2MmU1ZTRlNzg5OTBmYWFkOGI1OTE3NGY2YmQ3OGMwNTE4YzhjIGxlZ2FjeS10cnVuaworNDIyOCAxN2M4MGE5NTI5MTQzOTM2ZTkzYzMzOTgzMTE0ODZlMjkzNjUxM2FiIGxlZ2FjeS10cnVuaworNDIyOSA1MjU3YWY4MGUxNjEwODdjNjk1NzBlYzIzNTdjMGJiZDYzNDhlNTY2IGxlZ2FjeS10cnVuaworNDIzMCA3ZTAwMWM0ODEwYmJjNzYyYjBmMDVhNzc5Yjk2NzcxNGRhZGQwY2Y5IGxlZ2FjeS10cnVuaworNDIzMSBmZmRmYWYxYjI0ZDU0MGNjZDI5NjlmMzU5NjVjNDU2MzhkMzQ1MTIyIGxlZ2FjeS10cnVuaworNDIzMiA5OGEyMGE0MGY2MTNiMTNkZmE3YTU0YWU0MGMzMDlmNWQyM2YzZGU2IGxlZ2FjeS10cnVuaworNDIzMyA3NmNjODU4ZTMzOTE1ODBkMTU1YTU5MTdkYTM5MzBlMmMzMTM2Y2UzIGxlZ2FjeS10cnVuaworNDIzNCA5MmRmMzBkZjVkNzc5ZTgyMmMwMGNkYWMyYjQ1Njc0ZTkwNzUzM2E1IGxlZ2FjeS10cnVuaworNDIzNSAyMDg5NzgxNmE0YjZjOGRkNjQxOGE2NGViOWVhNTRhMGFiMGQ4NjJkIGxlZ2FjeS10cnVuaworNDIzNiAxYzI4ZjE5MzRhMTFlZWE0YjY4MjhkNWQzZThlYTk2NzUyZTE2NjRhIGxlZ2FjeS10cnVuaworNDIzNyBhM2YxOTllOGJhYzZmMDAzMjE0YjAwZDYwY2RjYmIwZDIxZWE4MWE3IGxlZ2FjeS10cnVuaworNDIzOCBkZDE2N2JmZDdhMDg2YTllZTY2MWFmYWIwODA1YTQzZjQyZWM4N2MyIGxlZ2FjeS10cnVuaworNDIzOSA3NzA3Yjk3MDhmNmNjN2MzZjllYmQ3ZDQ2OTJiYTA2YTMwMzY0YjE5IGxlZ2FjeS10cnVuaworNDI0MCBjYjg0ZGQ1MWMyYWEzMTBlNWJhZTcxZDlkYjRlNzQxY2EwZWU1YmZmIGxlZ2FjeS10cnVuaworNDI0MSA1NmE5ODZlNDlmNTY3Y2Q2ODQ4Nzg0YmM1YjY0NTBmMDBlZWUyYzIyIGxlZ2FjeS10cnVuaworNDI0MiA0M2FlN2ZjZDc4MzUyYTJmN2NlMjk1YWFkYTc0ZGVlZDE4NTE3NTM4IGxlZ2FjeS10cnVuaworNDI0MyAzNjIxNGM4NjExNDRkZDYyYTIwYWQ0ZDNiMjdiOWM4MjkzZjYwNDBmIGxlZ2FjeS10cnVuaworNDI0NCA1MzVhY2E2ZmY3ZTkxMzQ3MThhMDJiNGY0YWZiMjJiYmU5NzYzYjE1IGxlZ2FjeS10cnVuaworNDI0NSBhNTg0YjRiYmJjNTkzNGMxYWU0MWVkNTI4YWU3OTJjMTA0ZGY1MmE1IGxlZ2FjeS10cnVuaworNDI0NiA2Njg1MDQ4NDNkMGY0MTg5Yzg0NTM4MmQwYmQ0YmNkYzU3ODMyYjRiIGxlZ2FjeS10cnVuaworNDI0NyA5YjUzMGJiNTQ2NDJiYTE4NmJiNTc0YjU4OTYwMTJiMjAwOTM3NGRlIGxlZ2FjeS10cnVuaworNDI0OCBmYThiYmQwOWYyZTZiNmM2ZTk3NDcxOTdhMjgzOGNlODc3YzQ0NmExIGxlZ2FjeS10cnVuaworNDI0OSBiNzExYzkwMTAyMzI5MzI2OWIxZGUxNjc4MWZiYmUwNWU3ODlhMDBkIGxlZ2FjeS10cnVuaworNDI1MCBiMTY3ZTMzNTA0OTEyMGVjN2IwZmM1ZTY4NzQ0YzVlNzZmNjBhODRhIGxlZ2FjeS10cnVuaworNDI1MSBmMDdjNGZmMGY3OTQ2ODY3MjBmMGUxOWJlNzM1NWY0ZmI0M2U4OTFlIGxlZ2FjeS10cnVuaworNDI1MiA2MDY2MDM0MWVlMTA3MWI0MGZlZjkzNWEzYzE2NjEwZTU2ZTgyZWQ5IGxlZ2FjeS10cnVuaworNDI1MyBhZDNmMWQzNjJjMTQwNmNmYzAyMmE0MGE3MGVhOTgwN2ViM2E2MGNhIGxlZ2FjeS10cnVuaworNDI1NCAxNDhlZTJhYTYzZTZkZWM1OTFhYzc0NTIwZmFlYzFkMWIxMmNlN2Q5IGxlZ2FjeS10cnVuaworNDI1NSBiODQwMjk2YjllMDU4ZDI3NGE4OTAwNDRkOGNhZDUzY2RlZTA3MjU1IGxlZ2FjeS10cnVuaworNDI1NiBmYWZhNWRjODEwMGY4NDliZmU3MWU0ZjA2ODIwZjhiMzU0OTkyZjA0IGxlZ2FjeS10cnVuaworNDI1NyBiNDA4ZDZhNjM4MTk1MjM5ZTYyN2U3YTA1ODE4ZWRiNDg2ZDdmN2RhIGxlZ2FjeS10cnVuaworNDI1OCA1YjkyYTA4MzkzNGRiZmIzOTQ3N2Y3NGMwNjRjNTYwY2M1MTdlMDE0IGxlZ2FjeS10cnVuaworNDI1OSBmMmNlMzE5MWZjOWRlMzhiNDYxYmY1YmI0NGU5M2M4ZjJhMmE2YWU1IGxlZ2FjeS10cnVuaworNDI2MCA3ODI1MDk4MTNkNTcyYjg2ZjkwY2M0Y2QyN2NiYTVjMDc5M2VjNGViIGxlZ2FjeS10cnVuaworNDI2MSA2Y2ZkNDNkNWMwNzQ2YjBlYzgwZTM0ZTRkYTU5ZjI4ZTc3MGM3MWFjIGxlZ2FjeS10cnVuaworNDI2MiBkOGQ5NDFmYWY1MTEwYjIzMTZkMjM3ZjkzODFhMjRhY2ZmYzNkOGM4IGxlZ2FjeS10cnVuaworNDI2MyBkODkyYWM0YjRmYjk5ZTE0OTFhMjcwNTIyNDEwZjBjNTZiZTliNzc1IGxlZ2FjeS10cnVuaworNDI2NCBlYTViMTNkMTFhMTMwNWJiNDA0ZWQwY2E4YTI4YzFkZjgyY2NlY2MwIGxlZ2FjeS10cnVuaworNDI2NSAyZDViMzZhNDM4YWI5Y2YzODU4YjdkNzBiZDU5NjIyNDllZmNhMzgxIGxlZ2FjeS10cnVuaworNDI2NiBjNDdkNTI2YTk0ZDkyZTM4ZTY2NmU4Y2YzZTIxMzI2NzE1YzA0MTgwIGxlZ2FjeS10cnVuaworNDI2NyAwNDA2YTIwOGNhNWQzYzEzN2I5NWQ2ZGJiYTZlYzNlY2NmNDJhZjQ4IGxlZ2FjeS10cnVuaworNDI2OCA2MzUzZmUyNWNkY2U0YmU1M2M5NTc4ZWZjMDZjZGFmNWE1MmNmODdlIGxlZ2FjeS10cnVuaworNDI2OSAzYjQ3MDMxNzNjYWY4NjY0ZmUxNGYwMDZkYTJlOWU1MmU5NDRkYTk4IGxlZ2FjeS10cnVuaworNDI3MCAyMGUxZDI5NmZkY2M4NmJjZWI4MmQ2Mzg3ZjE2NDA5NDQzMDgxM2I2IGxlZ2FjeS10cnVuaworNDI3MSBhNzEwZmIwMDFhM2ZiNDUxM2MyMWZiMTM0Yzg4MDRiNzY0NjEyNDk1IGxlZ2FjeS10cnVuaworNDI3MiBhMjZiMzFlMTU5YmVjNDFkNzhiOTZmZjNmNWJhN2YwMjRmMzkwMjA3IGxlZ2FjeS10cnVuaworNDI3MyBjZTU0NDdkYjhmNTM3ZTJhMDRiYmEzNTBlZjQ5ZTNlNDU0NDUwZjVhIGxlZ2FjeS10cnVuaworNDI3NCA0MDU5NGY4MGFiM2MyZjI4OWUyMDlmNjk1NGY5MGU0YjFiZWU3ZWUxIGxlZ2FjeS10cnVuaworNDI3NSA3NmQwZjJiM2I5ZWU3MTE3OWUwYWNkNTIxNDkwNDExZmJhZTJlOTYxIGxlZ2FjeS10cnVuaworNDI3NiBhNmVmMmM5N2M3NzYxZWQyMTI3MGJhN2FjNWRlZTNhZWY2M2UxMTM5IGxlZ2FjeS10cnVuaworNDI3NyBiMTFhMDY2OGIxODFjY2JiNDU2ZGI3ODQ4MjJiOThiZDgzNGM5MjcxIGxlZ2FjeS10cnVuaworNDI3OCA3OTMxZGUwMWU2OTM3ZGU1YTRkMzMxZDQzNTU1YjBmMmIzZTYyN2EwIGxlZ2FjeS10cnVuaworNDI3OSBjZTg5N2U3NTJjYTRhYzU1MTUzMWEyMDIyZDI5ZjcxNDAzOGQ0OWQ5IGxlZ2FjeS10cnVuaworNDI4MCBmNWYzZGRmZWMzYzdiMTVjYzlkY2NiYWYxMWExYzUxN2U5NzZlYjEzIGxlZ2FjeS10cnVuaworNDI4MSBiNDY0ZTFkMGIyZmI0MzRjOGY2Yjg4YjI0MjU4YzIzNmZmYWE3NTYyIGxlZ2FjeS10cnVuaworNDI4MiBjMWIwZDdlZWQ5ZmRmYWM2YzBiNGQwOTc1N2QyNTgyZDcxYjFiOGY0IGxlZ2FjeS10cnVuaworNDI4MyBjNDUzNmQ4YWY3YjVkNGU4MDVmOWY1ZGZhZDA2OTA4NjFlZDIwOGMxIGxlZ2FjeS10cnVuaworNDI4NCAyMTZiNzU1NTE1ZTY1ZDAxZWQyNDE3Y2VhOWU3MGFjNGE2OGM5ZGRiIGxlZ2FjeS10cnVuaworNDI4NSA3OWU0MjA4MDVjNjcyMjdiMzg5NDBkYjU5NDAxYzQyMTg1ZTBhNWM4IGxlZ2FjeS10cnVuaworNDI4NiAzOWE0YzE1YWNiMzJkYmUyMTBjZThiYTFmMDNmY2I1OGE1MWZiOTcxIGxlZ2FjeS10cnVuaworNDI4NyBmOGJhYWI1YzAxNjUyODUwNWQ4MTdhNmE5N2RmYjdhZjk0ODRlNmU4IGxlZ2FjeS10cnVuaworNDI4OCBkNzk5ODg5YzAxZTM1YjkzZTg4NGQ5NzJjNmVhNzI2MWJmNzQxNDY2IGxlZ2FjeS10cnVuaworNDI4OSAxMjAzZjA2Mjk1Mjc1MzFjODBiNTk3NDE5NjY4NmRmYWE4MGViOGYyIGxlZ2FjeS10cnVuaworNDI5MCA4NzM2NGQ5ZTM0NDRlOTVmNDdhNDA3YTgyNTQwNjU2MjcxOWQzOGQ2IGxlZ2FjeS10cnVuaworNDI5MSA1ZjZhY2QxYWI1YzUwM2ZkM2ZlOTA4YjEwNzU0NWNjOGMyYzhiOTEyIGxlZ2FjeS10cnVuaworNDI5MiAxZjRhODZkYmNkNzkwNjQxN2U5YTgwMzQxMzk4MGU4ZjQ4MTJlZjE1IGxlZ2FjeS10cnVuaworNDI5MyBiZmQxMTYyMGEyZDgxZTgzMDRmNDhmNjU1MjJiYjcyOTQ4OTAxMDRlIGxlZ2FjeS10cnVuaworNDI5NCAyM2YwM2VmMDAzNjFiYzc3MTc3OTViMzFkZGM5MzE1MGE1NDQyYjU1IGxlZ2FjeS10cnVuaworNDI5NSA2NWNjNzI3ZjE0MzZjMDc5NzI3ZmZkZDcwOTE2Y2I0NTdiNWRhOGE4IGxlZ2FjeS10cnVuaworNDI5NiA4Mjk0YmJkOTQ1MzUwZDQxZDRlYWUzNmU1MTI1ODYzZGIzNDM2ZmI2IGxlZ2FjeS10cnVuaworNDI5NyBkMWU2YzlhNjRhNTYzODQxZjYwMTc3YWM5MDc3MzlmOTUzZjE1NjMwIGxlZ2FjeS10cnVuaworNDI5OCAwOTVjMWNjN2YyYmJiMjJmZjExNmIwMzM3YWMzYmQyZDJmZTM3Y2Q2IGxlZ2FjeS10cnVuaworNDI5OSA1MjQzZmIxODdkMzZjNjBiMDEyMTMzYTFhNWM2NjBkN2EzNWExMjY0IGxlZ2FjeS10cnVuaworNDMwMCAwZDMxODQ3NWY5ZTM3MTk4YjVhMzIwYzhlMTBlNjlhNzUyMjNiMTRjIGxlZ2FjeS10cnVuaworNDMwMSBiNzI0NTk5NDAxZmY3M2ZiYjhkNTk1YjliM2Q2MzA5MzYzNGI0OTk0IGxlZ2FjeS10cnVuaworNDMwMiA2ZTIzYWY2NDViNDBiZGQ4ZTMxZWEwY2M0YzcyZDMwZWY3NzhmMzE1IGxlZ2FjeS10cnVuaworNDMwMyAxZmM0ZGI3OTE0NmFlNWVmNTc3YzA2ZmJhNWNkZjdjNThkMmVlNDdlIGxlZ2FjeS10cnVuaworNDMwNCAxNDUzOTFkZjI2NTc5ZTFjNmZjNDQxMDgwOGVhNmZiOTE0OTQ1ZTU3IGxlZ2FjeS10cnVuaworNDMwNSAwOWRlNzIzYjI1OTY4MjY2NWM0NjYwMjJjMDIyMDJjMWZjMWZlMWFmIGxlZ2FjeS10cnVuaworNDMwNiA5ZDRhZGQ0MmVlMjJmZjQyODkzZWFmMzc3MDI4MDhhMjc1MTU3ZjcxIGxlZ2FjeS10cnVuaworNDMwNyAyNzg2YWNiYTZjZWMxY2ZiOWE1OTcxMWY0Y2U2MTNkMDI1MzZjY2E5IGxlZ2FjeS10cnVuaworNDMwOCA5ZGJkYjgzZDQxNzhmMzkyNzU4ZWM4YWY4ZDQzYmMxM2MyNDRmMzQxIGxlZ2FjeS10cnVuaworNDMwOSAxODIyNDY1YTM1YjgwY2ZjZTQyODM4MmU3NTdhYmI0YjI3NzQyNDYzIGxlZ2FjeS10cnVuaworNDMxMCBlMTVmOTc2MWNiMDM1YmNiNjFkNjI0ZmNlYWE1MzE5ZGE1MGVmODNmIGxlZ2FjeS10cnVuaworNDMxMSAwYjA4MTk2ZTlmZjYxNmVjMzc0NjNkZjMzNjIyMTM3Nzc4ZDAzYjIyIGxlZ2FjeS10cnVuaworNDMxMiA1NGZkYzlhOTVmNDg5MDkzZmY1ZWUzMDg4OWI5NmVmNjczNmU2ODcyIGxlZ2FjeS10cnVuaworNDMxMyA3ODg5OGIwNGE2NWJlZjFlNjIxZmZmOTUxNzUzZjU3MzA0OTU3NGQ3IGxlZ2FjeS10cnVuaworNDMxNCBkNDA1ZTNlOGZmZDM0OWFlNzYzZWI3YjhjZmRjZjRmYjRhZDI1ZDBmIGxlZ2FjeS10cnVuaworNDMxNSBlZjA5NDY1NjA2MjBhY2I1ODc5ODkyZmZhNjFkNGI1MTMzZDI4ZDg4IGxlZ2FjeS10cnVuaworNDMxNiA4NTVjZWZiYjI3MTg2MzEyOWFkMWVkOTlhMDQ0ZmM4ZjQyYTM4ZjcyIGxlZ2FjeS10cnVuaworNDMxNyBhYWYxZTA1ZTY4NDJkOGVkODM1NTk4ZTVjN2I1OWM4Mjk0MmQ2OWE3IGxlZ2FjeS10cnVuaworNDMxOCAyMGU2MDcxNDc4OGM1ZGE3YTc3OTkyZjdkMjU5ZTNiOGUzMzk4OTU1IGxlZ2FjeS10cnVuaworNDMxOSA5YzVkMzMzZDMzMDBlOTMyNDBlMTVmZTIzYTUwMjY4NmRhNjdjMDQ4IGxlZ2FjeS10cnVuaworNDMyMCA3NThjMTM3NGYzMDM0ODJmY2ZjNmYzZmRiM2IzNDEwMDdlYTI3ZGUwIGxlZ2FjeS10cnVuaworNDMyMSA2M2FkMjg5Mzk3ODFhYThkNzU3OWUwODZhY2MyZDU3NjU2NmFjODQ5IGxlZ2FjeS10cnVuaworNDMyMiAyY2VkZTYxZTliMWJhNGViOGJhNDg5ZmI1NDAxZDMyYzMwMjU2NTkyIGxlZ2FjeS10cnVuaworNDMyMyA2MTczOGVkNmNjMTBjNDI5NTJiYTkyZmUxMjE3NGMzYTYzZDRiZGZiIGxlZ2FjeS10cnVuaworNDMyNCAxMGExMjQ3M2VlOTMxY2FkMjRjNzNkNWZmNzI3ZjE0NGUxZGY1NjkwIGxlZ2FjeS10cnVuaworNDMyNSAzMmU2YzNhNjcxZDAwZjdmMGIxNmFkOWUxMTNkNDE3MTNkZjAzNmYwIGxlZ2FjeS10cnVuaworNDMyNiA5MDgxYmI3YWNkNTI4YWU5MzRjNTgyYzI5ODAxNjNjNzFlY2IxNzA5IGxlZ2FjeS10cnVuaworNDMyNyAwNzRhYTI2MzgyNmI0NjY5ZDBlMjQ0ZWEyMDVkNDIzZTEyYmFlN2U5IGxlZ2FjeS10cnVuaworNDMyOCA4YzljYzA1NGM1ZWRjZTZkZWFlOGM0MWY3ZDczMmJkOTYxMjFmN2RkIGxlZ2FjeS10cnVuaworNDMyOSBjYzViZjZiZTgxYTVkMjZmODNkMjk2OGFiZDk2YTQ0MGIyOGZhMDBiIGxlZ2FjeS10cnVuaworNDMzMCAzMmQwMDVmYWY1ZmNkMGJlNzQwYTM1OTQzYTI5MzVmMjYwMDQ2NTJlIGxlZ2FjeS10cnVuaworNDMzMSAyN2Q0ZjFmOTM0NmM1NzQ3NzY3NDcyODI2ODZmMjNmODExZTM2YzE1IGxlZ2FjeS10cnVuaworNDMzMiA5MWJmYjI3NzE1NTRlODE3YWUwOTNlN2QxYzg1ZTI5ZjkzYjE3ZTZkIGxlZ2FjeS10cnVuaworNDMzMyAwNWZiOWRlYzJjOWNmMWM0ZjhlNmY0NWUwMWUyYmQ1YmNlNjc4ZDUxIGxlZ2FjeS10cnVuaworNDMzNCAzYTcwZTljMGQ5ZjUxMWE1N2FlNDRlZjA0ZTdiNDg0YzU1OTRiNjhmIGxlZ2FjeS10cnVuaworNDMzNSBmODRiNjRkZjA5YzNlNjI5NTVhZTllNmRhMTdjMTdmODQxMjNmYTRjIGxlZ2FjeS10cnVuaworNDMzNiA0MjE0YTc1ODNmMmJhODhiODBlNGNlYjIwMmIxMmYyYTNjYmI0NDE1IGxlZ2FjeS10cnVuaworNDMzNyBhZmJmMTE4NmM4OTc0YTBkZWJmNmJmN2IwNGNjZTJkYzU1OTExNzRmIGxlZ2FjeS10cnVuaworNDMzOCBkM2RlMmNhZDJjNjg0YzE2MDM1YTQ5ODcwZDM4MGRjODJmZDkwODljIGxlZ2FjeS10cnVuaworNDMzOSBhYzZhOWY5MGY2ZmQ0OGQ3YzI1NDA4ZGEwNjYwYWRkNjMwNTgzODY1IGxlZ2FjeS10cnVuaworNDM0MCBlN2M2YTE4MzgxZDllN2EzMDVjODQ4ODBjMWZjNDcxMmFjYTcyMjg5IGxlZ2FjeS10cnVuaworNDM0MSBiZTk1NmIxZWZiOTdjY2FhNzVlMWFhOTdiYzVkNzljMWUxZWRkYjRiIGxlZ2FjeS10cnVuaworNDM0MiA0ZTFjZWFlZTI5NjMyN2RlZmNlNGFiNDUwOTI4MzJjZTcwYmI3ZTlkIGxlZ2FjeS10cnVuaworNDM0MyBiN2RlNjc4NWM4YWM3ZDk3MjQyMDIyNDZhNDY5Yzc3NjNjMjM3M2FkIGxlZ2FjeS10cnVuaworNDM0NCAyNGFlN2FmNDBhMDk2MGRlY2RlMTY3ODNmNjM0MThkMmNkZmM3YWEyIGxlZ2FjeS10cnVuaworNDM0NSBlZWMwZGM1YWJhNjAxMWJhYmE1MDhmY2I1NjMxM2Q3ODYwMjI1MDg2IGxlZ2FjeS10cnVuaworNDM0NiBhYmE1MTYyMTI0NGU3YjAxMjM5OGFhYTM3NjZkN2JjMTZjYWE3Nzc0IGxlZ2FjeS10cnVuaworNDM0NyAyYzhiNGRmMjJiYzJmMDQ1YzExZDU2OWU5ZmQyOWEzNjQzOTdlMGI2IGxlZ2FjeS10cnVuaworNDM0OCBjMjM1MGM4N2JlM2ZjYzc5ZTk3NTFiZDcxOTE1ZDVkMTkwZDk3YjY5IGxlZ2FjeS10cnVuaworNDM0OSA2NTRhYTk2NGRjMjYzZjlkYmJlMDU4NDY1M2QyOWVlM2UzOGU1NjRhIGxlZ2FjeS10cnVuaworNDM1MCAzZmJkYTg3Njg4NTUyODYyY2JiNjlhMmI1Y2ZlMTg2YTM4YmU0OGYyIGxlZ2FjeS10cnVuaworNDM1MSAyMGYxN2I1YWNjYmY4MjAwYjg3MmE5MGNjMDIzNTA1NjE1ZWIzYTlmIGxlZ2FjeS10cnVuaworNDM1MiBhNjc3NmE3ODhmNzQ5YWUxZDk5YmE1MjQyMWY1NWM1YjZlMDg1NDQ1IGxlZ2FjeS10cnVuaworNDM1MyA1YmFmMTEzNWExM2QzZjVhNjMyYjdjNzAyYzAzZjNjMDViZTQ0YzY1IGxlZ2FjeS10cnVuaworNDM1NCAyNTllNjlhYTBmMTU5ODg3MzAwMWIwYTkwZDUyNDBiNWU4MWRlZDk4IGxlZ2FjeS10cnVuaworNDM1NSA1M2QxN2MwNGI0MmZiMGYzNDQ5YjRiODU2MmNkYmY4NTU2NzRjYTMwIGxlZ2FjeS10cnVuaworNDM1NyBlNDUwYmQ0MzYzMWE5ODQyODZlYjU0MDNkZTY5MWViZWRkNDJhN2FmIGxlZ2FjeS10cnVuaworNDM1OCA2MTA5MDY5ZDU2MTJmMDM4OGU0MDIwOGRkODgyZWQ1NDU3Y2Y4ZDNiIGxlZ2FjeS10cnVuaworNDM1OSA2MWMzYzFhMmZkYjQ0M2YyYWUxZTBlNjc3NjJmMWFlZjdiMTg1MjkzIGxlZ2FjeS10cnVuaworNDM2MCA5ZDk4MTJmMjc5OGI3M2E2NTBmYTFjYzEyMTE0MmY1MWRhZmNkNDZkIGxlZ2FjeS10cnVuaworNDM2MSBiZDk0MDY4ZjBmZDAzNzU0MGFjNTA0ZmU4MTc0MjMyY2E4ZjIzYzRkIGxlZ2FjeS10cnVuaworNDM2MiAwNDM3NzM4Mjc5YThkNjgwNzkzZmRkZjlkNWFiYWQxYWQ3MjIyM2NmIGxlZ2FjeS10cnVuaworNDM2MyAwYzIzMjE5NGE2NGYxMGM3MWM2MTdhNzJjNjlhNGM4ZGVkYWMxMTkyIGxlZ2FjeS10cnVuaworNDM2NCAzNTk0N2Y2MDUyOGVkMDE1N2UyMTUxNGY1NTQwMzhiZTI2ZGQwZTIwIGxlZ2FjeS10cnVuaworNDM2NSBhN2YyNjk2MTBlYzJkNzlmN2ZkNDlkNTQ4ZjQ2MjM4ODcyZDk2YmFmIGxlZ2FjeS10cnVuaworNDM2NiBhZGExOWFhYWY4YzBjOGU1MDcxYjU3YTRiYTY5NWRmNDMwOGI2ZmM4IGxlZ2FjeS10cnVuaworNDM2NyA4NjIzYWEzOTE1ZGI3MDJiMTAyY2M3NzJjYjMzNjZlYWMyOTcwMzQwIGxlZ2FjeS10cnVuaworNDM2OCA4OTM0MTIxMDEyOTY5ZjAzZDBlOGM3ZTJiMDQzMmVkZGQ4NWE5MWVlIGxlZ2FjeS10cnVuaworNDM2OSA4MDgxOGMxMDZlM2U2ZjQ4NzdhODRlNDI2YzA2MWM3YTdmYmI1MWIzIGxlZ2FjeS10cnVuaworNDM3MCBlMTI1ZjUwMjFlNjczZDE0NWUzZWNkOGM2ZGVjOThkM2Y2Yzg3YWY4IGxlZ2FjeS10cnVuaworNDM3MSAwMTRhMWZiOWM2NDYzNDI5YWM1OGFhNDdhNjM4ZDE2MmNmZjZiYjZhIGxlZ2FjeS10cnVuaworNDM3MiBmMzlkNDM3Mjg3NzI0ZTU2Mjc5NmFiNjUxMTUwZmY4MWQyMzBmNGM2IGxlZ2FjeS10cnVuaworNDM3MyBlMGFlNmY5NWJjZmI0MTljZTI3Mzg5ZjlmZjI5M2VhMmYyNDhhYTNiIGxlZ2FjeS10cnVuaworNDM3NCA1ZjMzY2E1MjE0NTIxMjU5ZTM1ZmViMDNhZjk1NmFlMGZlYTdkOTBhIGxlZ2FjeS10cnVuaworNDM3NSAyNzU5NTFiMDg2MDhjOWNjNGQ3YmVkYTQ3NDU5MzA2Y2VmZWI2NDAwIGxlZ2FjeS10cnVuaworNDM3NiAzODUwNzEzZjZhZWFlNjkwOGQ2NGZjYjM4MTU2Mjk2NjBkMWIxYWQxIGxlZ2FjeS10cnVuaworNDM3NyBjMTA4OGQwYmI1NjIzMDY2Y2U1MTFlMDg3MGEyMGUxN2Y3NTU0ODIxIGxlZ2FjeS10cnVuaworNDM3OCA1OGIwNDY3OTUwZDgyMjM2OGQwZWJiMDVhYzQwNTNjYjIyY2EwNjRkIGxlZ2FjeS10cnVuaworNDM3OSBhMWFiYTRkNDU4OTNiMGFkYTk2MjUzMzE2NjM3NTRhOGMwYjI4MGQwIGxlZ2FjeS10cnVuaworNDM4MCBlYTllODUzM2Q2YzMyYTkzZjBlNGEzMTgxOTFlZGM0MzI4NDc5NDNjIGxlZ2FjeS10cnVuaworNDM4MSBlNTZhZmQwM2NhN2ZjOTQ2MDZkMmRhZWI0MDRlMTgxYzRiNmE5OTNkIGxlZ2FjeS10cnVuaworNDM4MiBhOGI3ZWUwZTU3MmRhN2RlMDAwZTM0ZTM4YzdlZDRkNDhmMzBjZmJhIGxlZ2FjeS10cnVuaworNDM4MyBmMDdkNjZjMTYyY2JmZmI2MDNhY2MyZjgzODk5OWM5MTNmZjMwMzZmIGxlZ2FjeS10cnVuaworNDM4NCBmYWNhN2UzMjhiYTc0OWMxM2VmNTZjMDczNjE0MTYzM2Y1NjBjNWQ5IGxlZ2FjeS10cnVuaworNDM4NSBlM2ZmOWUyYTNlYjdhZjVmMTZmMGZlOGQzOTZhN2EzYzY3OTBiZWZkIGxlZ2FjeS10cnVuaworNDM4NiA1YmNhYWVkOTAyZjU1MGRhZjJlYjk4YWI2MDU1N2YyODQxNzZhOGZjIGxlZ2FjeS10cnVuaworNDM4NyAyMzQ4MTc2NTJkYjA2YzJkNGYxNTlhYTE3NWY2YTVlYjU2NzViYjFhIGxlZ2FjeS10cnVuaworNDM4OCBmM2FlN2MxN2FjMDg3ZDlhMDBmYjAxYzA4N2M5ZThmZjkyOGExYjZkIGxlZ2FjeS10cnVuaworNDM4OSBkOWEzZTMwYjJlNDczYzhjY2FiNjAwNWI2YjMzMzI3NzdhODgwNzQzIGxlZ2FjeS10cnVuaworNDM5MCA0NWM3MzAxOGRkMDFkNzFjZjM4M2EzYTI0ZDVkODQ0ZWFlNTk2NjI4IGxlZ2FjeS10cnVuaworNDM5MSAzMjBiYWVhYjc4N2FjOWQ3MDU0Y2YwOWQwZDFlMGYyODNiM2M3ZjY3IGxlZ2FjeS10cnVuaworNDM5MiAyYjU4MWNlNDNmNGEzNzMzOTgyOWVmNmViYTU0YWNmY2EzNTc3MjIwIGxlZ2FjeS10cnVuaworNDM5MyA5M2RlNTc3NTk2NmU1NTllZjZjMmNiYjc3NjZjMzA0MDc5Y2E3MjcxIGxlZ2FjeS10cnVuaworNDM5NCA4Yjg5N2I3ZjNhZGU4ZmM0ZDk2NTQzY2JmYzU5NzAzMGZiZDIxYjI3IGxlZ2FjeS10cnVuaworNDM5NSAwYTkxNTJmODcxMTE2MDIzODIyYWYwZDZlN2VlZmU2NzhiZDlmZjE0IGxlZ2FjeS10cnVuaworNDM5NiA4NWYxZDJiZWM2MzJjYTM4OWFkMDhjNDE0MTFiOTBlMGNiM2UxZjMwIGxlZ2FjeS10cnVuaworNDM5NyAzMTg3M2JkNmY0YTg3MTY4ZTQ2OGI5YTVlNWU0NTljYmIwYTQ4ZGYwIGxlZ2FjeS10cnVuaworNDM5OCA4ZThmZGRjYmRmZDJiMjVlNGUxMzc2MWE1OGE2NGI4MzkwZTFkZDQwIGxlZ2FjeS10cnVuaworNDM5OSA0YmU2ZWYxYzJjMWRmNWUxZDgzNGY1YWRmZTE2Yjg2OTI4MWE5YTc3IGxlZ2FjeS10cnVuaworNDQwMCBiYmY4MmViNGE2ZDlkMzNmMDEwODAwZTFjNzM0YmI1ZDQxMzllZGQ2IGxlZ2FjeS10cnVuaworNDQwMSBiYTA5ZDkwZjQyYmIyNjMxNzRhNmQwYTUzZTMxMDRkNDZmZWYzZTNlIGxlZ2FjeS10cnVuaworNDQwMiA5YmNhYzhkYTAyNjI0NDVjNWFjMDg1OTVhOGM0M2FjNDFiMDNlYWIwIGxlZ2FjeS10cnVuaworNDQwMyAzMTVkOWM4MjgxNzc0ZDEzMTRlMDlmOWQxYjMyZmE1ZjNhZThhZjQyIGxlZ2FjeS10cnVuaworNDQwNCBmNmI0ZTdhY2M3YTM3NGZhMzBjNTk5ODUxYjMzODRhOTZjYzY0NTQ5IGxlZ2FjeS10cnVuaworNDQwNSBlMTU3YzgxZDAzNTg5ZDY5NDk3NmUxNGY2NzhmMzY2MjEwNzk4ZGVmIGxlZ2FjeS10cnVuaworNDQwNiBiMmM1NmUwNGNiODI5MDVlNDZlNTgzZTU2NzhhZTc3ZTk3MjA4ZGQ5IGxlZ2FjeS10cnVuaworNDQwNyA0YzU3MWQ4YzNjZTEzYmZmN2ZlNTAxODYwY2FhZjI4ZjlmMjBkNjgxIGxlZ2FjeS10cnVuaworNDQwOCA0NGU5NDE1MjQ1ZmIwOWNlZjVmMmExZmJkZmExYTVjNTJmMzUwMjFhIGxlZ2FjeS10cnVuaworNDQwOSA4ODNhMjI4MTc0NzJhZWQwNTgzNmEwNWI0YjA5YjY0YzRjZmY5ODNmIGxlZ2FjeS10cnVuaworNDQxMCA3NjEwNTFhYTQzNGRiMWYwOWRiODU0Y2U3ZjIwYmIyZDFhNWVhZjc5IGxlZ2FjeS10cnVuaworNDQxMSAzOGRjYjA5MGY0OGIwNjM4NTdmODkzMGViOGYxNzRmMmY2ZTk1NzJmIGxlZ2FjeS10cnVuaworNDQxMiA1NDVlMjM1ODMxYjdiYjQ5ZmJjZDc5YWQ2YWJmNmM1Y2MxOGY4N2I3IGxlZ2FjeS10cnVuaworNDQxMyA3MTAwYWNiMGQzNjNkN2ViNzg4MDdjZjc5MmJkOWJkOGFkYWE0MjA3IGxlZ2FjeS10cnVuaworNDQxNCA0MjdjNjE5Y2E1ZDA3MzE5YjY4MWE3MTAyY2NjN2Y3MWJiZjk4NmVlIGxlZ2FjeS10cnVuaworNDQxNSAwNThhNDZkOGZhZjc2NThlYTFhMjllNTY3YTkxMjJlYzM1Yzg4YTgwIGxlZ2FjeS10cnVuaworNDQxNiA2NDFmNmJiZjgwN2I5Y2M5NzkyZTczYjRlMDlmYTUwY2Y4NzIyZGFjIGxlZ2FjeS10cnVuaworNDQxNyBhMTBkMzFmZjM1MjdkYTdkMzJmODhiMWIwNmYyNjg2NzNmM2JlMjU0IGxlZ2FjeS10cnVuaworNDQxOCA3OGJmNjc1ZGY1ZTVkZmZhOTY0ZGVjMDA4ZDY1MzAzNjJkOTFhZWEwIGxlZ2FjeS10cnVuaworNDQxOSAzYmExNzMwNWYwNDdmMTkwMjRkM2Y5OTlkNGQzNGZiYzFmNzdjODQzIGxlZ2FjeS10cnVuaworNDQyMCBkZDdiZTgxMjg0MTA3MTRiMTk0NmUzOTk2MTEzYjY1OWMxM2QwNzc1IGxlZ2FjeS10cnVuaworNDQyMSBkYzFkYmY2YjUyMTEwMDViZGJjYWI5OGY3MWNjNTZjYmY5MzMyNTU5IGxlZ2FjeS10cnVuaworNDQyMiA0ZmIwYTA4MDdiMDU2NzQwMmEyNmIxNThhYmNiZjQ1NTkwNzhhNWQ5IGxlZ2FjeS10cnVuaworNDQyMyAzZGU1YTc1NDk0ZGZjYTJhNTg0ODVkMTYxZTRiN2I4YmI0YmZmZTBiIGxlZ2FjeS10cnVuaworNDQyNCA4NDYzN2NmZGJjMDc0MmE5NzU5NWU0NGQ2NjkyNDdkYzRmOTAzYjE1IGxlZ2FjeS10cnVuaworNDQyNSA4N2E2MjBkODQ3NjYzM2RiOGIzNWIxOWQ5ZTRkMzRkOGJmM2Y4MWQ0IGxlZ2FjeS10cnVuaworNDQyNiA0NDU0NDIxNzg0ZDg0YWM5NGQzOWQ5ZWZmYzYyNTRkZmYwNTJiYTgxIGxlZ2FjeS10cnVuaworNDQyNyBmMjJjYjVmZWU5YzhiN2Q4MjY1YjM3OWI4ZjM1MWYzMDFkNmYyMDhjIGxlZ2FjeS10cnVuaworNDQyOCBmOTVjMTkzYmZlNjUzNGZhMWYzY2Y4MjA4NjU2YzAxY2MxYTVkNTNkIGxlZ2FjeS10cnVuaworNDQyOSBkY2ZlN2ZkMWFjYmM1NjQ0ZmRkZTcyMTdmNTIwMjQ0MWE5MjE3NzI0IGxlZ2FjeS10cnVuaworNDQzMCBlMjM2Mzk4NzljZDA1Yjk2YTVmMjczYWUwNzg3ZDE2M2RkMmZiY2Y0IGxlZ2FjeS10cnVuaworNDQzMSBhZDI1YzUyMzc2YjQ1YjgwOWZiZDJhNmMwNDhkM2RiNjAxMjBlMmUzIGxlZ2FjeS10cnVuaworNDQzMiA0MmY5NWVhNzU4NjczNDdlODI0MDE2OWVkOWQ5MDI2YmY2MjcwMTM0IGxlZ2FjeS10cnVuaworNDQzMiA4MzI2MTVlYzA3NjQ2ZTMxMGM4NTMxNmI4YmE2YmM5YjE3YWQzNTQ3IGxlZ2FjeS10cnVuaworNDQzNCAyMzQ3YjFmZTgxMmRkNWNlNjUzYzEwMWEwN2IxMjA3Y2JhN2VhZDE0IGxlZ2FjeS10cnVuaworNDQzNSA0ZTYzMTAzMmVhY2YyYjljNmY5NzZiNjU4Yzg0MWIwMzk2ZjBmMzNlIGxlZ2FjeS10cnVuaworNDQzNiAzMzUxNTQ4NWVhZDBkNmRlMzNmMjgyMzIzYThiMTIzM2Q2M2ZlYWEwIGxlZ2FjeS10cnVuaworNDQzNyA4MGJkN2FmNzMyMDE5MDdkMjU3MTFmMWY2ODI4YTBlYzZkMWJkMzZiIGxlZ2FjeS10cnVuaworNDQzOCA0MDYxMWNhY2Q1YmQ3YTI2YWMxZjAxNDgwYjRjOTAwOTg1YzJhMGMyIGxlZ2FjeS10cnVuaworNDQzOSAxNWExZWIxMTNhNDMwODM1Njg2MGMxOWVkZjg4MmE5NjYzMjkxNGMwIGxlZ2FjeS10cnVuaworNDQ0MCA1OGVlZjUxZTMwODQ5YzZhNzgzNGVkOWY2OGQyMzVjNDM5NWRjYWQwIGxlZ2FjeS10cnVuaworNDQ0MSA1NThkOWY5NWE2MDIwYWQ2MzNmNmZhOGVkYzcxOTNmMmE2MWVmYjRmIGxlZ2FjeS10cnVuaworNDQ0MiBkYzZlYWExYThmZGRmZWQ1ZTczNmIwMTk3ZTc1N2RlNDQwMjUxOGRiIGxlZ2FjeS10cnVuaworNDQ0MyA3N2QxY2FiZjk3MWNjY2NhMjA4MjY3YTUxYjM4NGQ4NDkzNTExMDhmIGxlZ2FjeS10cnVuaworNDQ0NCA0ZTYwNTZkOTgwZTFhMWMwNzMzMDk3MjFiZDE5MTFjYmNkODVmOTUzIGxlZ2FjeS10cnVuaworNDQ0NSA3NDQyNjUzNzQ0NTA4MDFmMGYxZmFlMDI5ZDgwOWE4ODZjMTA2YjMxIGxlZ2FjeS10cnVuaworNDQ0NiBmNDk1MjdlY2RiM2FkNWNkNmE5N2I3OWVmZTAzNWM4NjQwMGM5MDQzIGxlZ2FjeS10cnVuaworNDQ0NyBhZjI2ZDRkNWMxZDQzYTJiZjM2NGM0OTJlNTVlNjM0Mzg2MjY4ZTM1IGxlZ2FjeS10cnVuaworNDQ0OCBmYjE5OGUxMzE2YjliZGMyYzg5NzhmNjNlZTY1YmViYmI5ZmYyNDkxIGxlZ2FjeS10cnVuaworNDQ0OSAxZGFiOTliODZmYThjM2Y2YTdjNDQwMDRkMjY0ZWYxZTM2MTM3YWQ1IGxlZ2FjeS10cnVuaworNDQ1MCBmOTAwYzA5OTk1ZGZjNDJmMjU2Njg2YzJlYmY4MTBjM2Y5MzAxMzRhIGxlZ2FjeS10cnVuaworNDQ1MSA2M2Y4NzU4NDliZDgzMTkxNDQxMjlhMTA4YzlkNzY0YmRhNzAxN2IzIGxlZ2FjeS10cnVuaworNDQ1MiBjZjRkODg2MmYxOWJmNDU3NDBmOWRmYzAxZDVkZmYzZmRkZjcwY2M5IGxlZ2FjeS10cnVuaworNDQ1MyBjNWE1MTRmOGYzZTNkYWM1YWM3YzFhY2NiNWYxZWQ5MTcxZGIxYTIyIGxlZ2FjeS10cnVuaworNDQ1NCBkNWY0ZDAxM2RjYzE0NDNlM2NjYjQ0MDllNzhmZDk1YjM2ZDkxYWRmIGxlZ2FjeS10cnVuaworNDQ1NSBmMDViNWNkNzlmYmVkYjczYTQ5MmVjYjk2YzliMWEwNGI2ODJjYzQ3IGxlZ2FjeS10cnVuaworNDQ1NiBlODk1MmI4ZGZlZmZjZGFjZjQ0NTE4M2Y5ZWFkMDllYWM3NzNmYzQ3IGxlZ2FjeS10cnVuaworNDQ1NyBhNzA4ODM4MDMzMzhhMDA1NzE4NGU5NDhjZjlmNTIxZDU0ZmFkZGVmIGxlZ2FjeS10cnVuaworNDQ1OCA3Zjg3MTlhMzY2NjIwM2I3NDM3ZGI2ZGQ3NGJiMTU4NzkzNjBiNDUzIGxlZ2FjeS10cnVuaworNDQ1OSBlZDVkMGFkNWVhMmYxZmRlODM2ZDQ0NDMwNDEzZmE5NTExYWE2ODM5IGxlZ2FjeS10cnVuaworNDQ2MCAzYWE5MTg0Y2ZmOGI2YzliZWEwN2E5YTYwODAzYTEzMjllMzU1OThmIGxlZ2FjeS10cnVuaworNDQ2MSA3YzUzZTYxYmM0YmE1NzhlMDRhNjgxODgxYjUxYjgzMmQwMDgwZjQ4IGxlZ2FjeS10cnVuaworNDQ2MiA4MTFjNGU0NjIyYWFiZjU2YmNhMjg3YzI0MTdmNjU1M2Y5ODNlYTU1IGxlZ2FjeS10cnVuaworNDQ2MyAzOTJkYjE4ODExOTA4YzdhYzcyMTg1YTE4YTY5MTFhMTQ1MTIxZTIxIGxlZ2FjeS10cnVuaworNDQ2NCBmNjVlYzNkY2M1NjMxZmQ1NWJhOGJkY2EzMWU4Y2Y1YmYwY2ZmYjZhIGxlZ2FjeS10cnVuaworNDQ2NSBmMjc4MDA5NjVmZjdjZWRiMDdkNmRiYTkyYTllYWQ0ZDYyNWIyZGY0IGxlZ2FjeS10cnVuaworNDQ2NiAwYmFlNmFiOWM5ZTBlNzY1ZTg4OTAyNDg0MjZlMjljNmVlZjQxZGU1IGxlZ2FjeS10cnVuaworNDQ2NyBkYzliNjMxNmI5YjM1NGYyMWYwYTMzYzI4ODg0Y2VlY2FhNGVkNzc2IGxlZ2FjeS10cnVuaworNDQ2OCA2OWQ0OGNiZGMyZDlhMzkzNzQyNzY2NmIxNDY3YjYyZDc5MjdhY2FjIGxlZ2FjeS10cnVuaworNDQ2OSBlYzA1ZDkwMjFiY2NkODIzMDE1MzhjMDBmNjI1MjQ0ODFhYWZjMGQxIGxlZ2FjeS10cnVuaworNDQ2OSA5ODk1NDc1ZDE4YzdiNWYzMmFkYWY3OGY3MTg4NmFlMDQxZTRkMTBjIGxlZ2FjeS10cnVuaworNDQ3MSBhNGE4NTQ1MGViYWZlMzI0Y2QzNGZlZjI3NWJkZDg2NDBhOTZiNmYwIGxlZ2FjeS10cnVuaworNDQ3MiA1YTA3NzVjZTdiMzExZWI5NmE3NjBkZTJhOGY3YmU5YzBiYzAxOGQwIGxlZ2FjeS10cnVuaworNDQ3MyA5ZTM0NjljMGVkNzVjYzI0YTE1ZGYzYjZkY2Q3YTU4ZTZlY2U1MmE4IGxlZ2FjeS10cnVuaworNDQ3NCA3YmRhMGYyYzE3MGNkZWEyOTY2ZTU3ZGQ5ZGRlYzMwMTc5ZDRmZjU4IGxlZ2FjeS10cnVuaworNDQ3NSBlZTEyZWRmYzIwOTU5OWJhMWMzNmNiNGZmZDlhNWZlZTE1YjQxZDA5IGxlZ2FjeS10cnVuaworNDQ3NiBlZWUzZDcxNWYwY2ZiZjFlYTJmNGM0Mjk3ZjcyYmJkMzczN2NjYjBjIGxlZ2FjeS10cnVuaworNDQ3NyAzZDQzMWE1MjExMzJmMjNhMDhiZDZkYzM1NDIyMTVlYjAyMWY5NzNlIGxlZ2FjeS10cnVuaworNDQ3OCA3MmIyYWI1NmU0MDM1MmUzZWRiNjcyZWQ0MWM1YWQ2MDAzMDQ3ZGZiIGxlZ2FjeS10cnVuaworNDQ3OSBmYTdiYzUyODMxNGJjNDYxZGFhNDI5NTVjZGQ2YTM4NTkxYzlhM2QzIGxlZ2FjeS10cnVuaworNDQ4MCA5N2Q2MTRiMjRjMDhjYjU0NjM2MWNlMWZjNzUyNTFlOGY4MjhiMWU3IGxlZ2FjeS10cnVuaworNDQ4MSA1Yzc0YzNhZWRhNzRhZjZhYzcyMzIwMjgwYmI5ZWJmM2E5M2ZiM2U1IGxlZ2FjeS10cnVuaworNDQ4MiBkNGEwNmU4MDU2Yjg3ZjlhMzE2M2I2MTIyZGM0NTM1MTU2OTQ5MGE1IGxlZ2FjeS10cnVuaworNDQ4MyAyYTNjOGJlYmYxNTY4YWYyODk1OTI3NTBhNjlmYmI2N2U5MjRlNmFiIGxlZ2FjeS10cnVuaworNDQ4NCA2NzFjZjFmOGIwYzMzYmI3MTgzOTBlZjM4M2VjNjc1NmNkMjEwYWY1IGxlZ2FjeS10cnVuaworNDQ4NSAxNzM5ZjAwZmZjODYzMWUzMGE2N2Y4YTY1MzY5MWM4YmEzM2VlYzA1IGxlZ2FjeS10cnVuaworNDQ4NiA2MDliZmI4YWU3ZjU0YWVlNzU3MDMxODE2OTE0MzczYTIzM2E1YmNjIGxlZ2FjeS10cnVuaworNDQ4NyBlNDNhMTk0MmU1ODgwNmExMjRmNzA0MWU3OGJlMDFjYmIxYjcyYjNmIGxlZ2FjeS10cnVuaworNDQ4OCBmMjM2YWRjMjhlNzc3MDkyMmUwYzY3MWQwYmZmYWMyMmNlOTcwNTc4IGxlZ2FjeS10cnVuaworNDQ4OSBjZTY5NzQyZjJlNzc3OTVkMTc0MmVkYWJhNzU4MmEwNTJlOTU4MjYwIGxlZ2FjeS10cnVuaworNDQ5MCA4M2ZjYjlkYjRjYThlYzRlOWY3NGI0OGUyNzQwZTMzYmRkYTcxODU2IGxlZ2FjeS10cnVuaworNDQ5MSAzNzBmOGNiZDdjMzIzZTg4NWEzMzAyNGVhN2Y2NjI1NTNhMWNjODg2IGxlZ2FjeS10cnVuaworNDQ5MiA1OTgzZDJkYjU5MDQ1N2FiMDZkYjZhYmQ2Zjc0NDg1ZWVmYmQ4MzhmIGxlZ2FjeS10cnVuaworNDQ5MyAwNzAxNzY5MDkwZjQ5YmYxYTMxNGIzZDVjNTBlYmE5MDMzMzgzZGE1IGxlZ2FjeS10cnVuaworNDQ5NCAzZDgyMmUzMmMzMjk3MDQ0MGU1Nzc5NzRhZDMyNWQ2MGM2YzY5ZDgxIGxlZ2FjeS10cnVuaworNDQ5NSBlMjhlMTBlNWRlYjJjMzEzMjUxMGYyZTZkNjNlZWJmMjdmZTIyM2JjIGxlZ2FjeS10cnVuaworNDQ5NiBlYTY5NmYyNDg3ZmM4NjI4NWI4YzNlMTExZTExZTY2ZDY4ODA3YmRhIGxlZ2FjeS10cnVuaworNDQ5NyA0ZWJlZTkwNDkyNGU2YWE3NzhlOWU0MTBhOGJjMjQ5NzIwOGY5OTZhIGxlZ2FjeS10cnVuaworNDQ5OCAyODFlNDA2NTJlMjM0NTM4NDU1MDA3MjgwZDQ3YzI2OTk3ZGU2OGEyIGxlZ2FjeS10cnVuaworNDQ5OSA2MmJiYmZlNmJiZjY4Mjg2ODg2ODQzYTc2ZTM3M2NlMmI2ZmMyODI4IGxlZ2FjeS10cnVuaworNDUwMCAxY2UzZGJlZWI4OTA5MzgwZTNiMWI3OGM4ZTI5MTk4MzM0ZmI4MzMyIGxlZ2FjeS10cnVuaworNDUwMSBmMThjMTkxNWM3MjJkMTc1MTk4YTM2YjQ3OWM5NmMzZDM5ZGI0YTI2IGxlZ2FjeS10cnVuaworNDUwMiBjODVhYmNjNzUyYjE4NDY0MzA2OTBmY2Y3Y2ExZWNjOTk0OTI4YjJjIGxlZ2FjeS10cnVuaworNDUwMyAwN2NmM2IzYmFmMTZmYzMzNzBhYzk1OGViNmNjOTkyNzI1NTFjZGZiIGxlZ2FjeS10cnVuaworNDUwNCAxOTM2M2Y4NTcwYTJmY2ZmZDJkYTI2MGE0NWQ0YTIwNzU4NDA4MmJlIGxlZ2FjeS10cnVuaworNDUwNSAyM2RmY2E4YWE3M2IwNDA1NmRlNzUwZGY4NGJkM2QzN2NkZmZjOTk5IGxlZ2FjeS10cnVuaworNDUwNiBkN2U5MTQzN2YwYTI3ZTI3NDdjZTAyYWIxYmE1MDhmNGU1ZDhlYzNjIGxlZ2FjeS10cnVuaworNDUwNyBkZTQ5ZDQ5MDQ0ZDc1M2RmMTEzMDQzYjRiNzkzNjI1MDNmNzhkYzQ5IGxlZ2FjeS10cnVuaworNDUwOCAwMzE5YjEyMzIxZDdkZGJmMjBhMGRmZDZmZTVhMjkwMzM5NmQ2YWRhIGxlZ2FjeS10cnVuaworNDUwOSBjZjMxZWFiNmFiNWFlMmUwMWY0YzY2YmNjOWQ1ZmUyY2FlMGMwYTE0IGxlZ2FjeS10cnVuaworNDUxMCBhZmY1ZDdkMDY3MzVjOGZhMGFmOTVkZGFhOGEyNjcxYWNkOGRlNTBiIGxlZ2FjeS10cnVuaworNDUxMSA3OWMxNzFmNTgxZmNkZWUzMDk5M2ZhM2QyY2NlMjQ5MTAyNWI1MWJlIGxlZ2FjeS10cnVuaworNDUxMiA1MDgwMzZkYmJhM2I0ZjJmNmYxMjgzNGRjMDYwMGEwNDg5MWQ2NzIyIGxlZ2FjeS10cnVuaworNDUxMyA4NjZjODEwNjhkYmRhMjcxZWUyMmI4YzA4NWMzMGMyNGE3MThjYjA1IGxlZ2FjeS10cnVuaworNDUxNCAxNDY4OTA2NTNhNTdlYTEzYjI4ZmY0NmQ0NmU5MmZkNGM2MzhlYWIyIGxlZ2FjeS10cnVuaworNDUxNSAxNzJiYTA0YTUxOTE2Y2I3NTA0MTM1NDBlMDNmNmY0MjgxYWY0MWQ1IGxlZ2FjeS10cnVuaworNDUxNiBkMGQwYTY5YjVjYTM0Yjc1ZWM3N2RiZmM4OWE1YWZmZmY2MjA0MzFhIGxlZ2FjeS10cnVuaworNDUxNyA1ZWQwNjU5NDM1MjYyMTU0N2Y1MzY4MTZjNzQ5MDU4MDcyZmY4NjU2IGxlZ2FjeS10cnVuaworNDUxOCAyODBmMzFlNmM2NTNiZTQwZmMzZDU1ZGVmYWYxY2RkOGNjOWZlZWUxIGxlZ2FjeS10cnVuaworNDUxOSAyNmNkNGQ2YzJkMTJiZTNlYjZlYzdhZDMzNTJkZjgyZmIxZTU3YTJmIGxlZ2FjeS10cnVuaworNDUyMCAwMDBhZTY0MmY5Yjg4OWExYWRmOTgyNDk0ZjA3MjI4ZGU5NDc0NmNkIGxlZ2FjeS10cnVuaworNDUyMSAxYjk5NDUxZmExNDM2Y2FkNzg0MmZlYzVjNTlhYTJjMDRkNjJhYjA4IGxlZ2FjeS10cnVuaworNDUyMiA1MjI3MzI0ZDY0ZTQyOTg3Y2I4NmNmOGI5N2ZhNDk2ZDQ0YWQyMWYzIGxlZ2FjeS10cnVuaworNDUyMyAzYWE3YTc3ODQ0NTU5YWM0NzRiNWY2MjllNzU5ZjE2YThlZGZjNzQ5IGxlZ2FjeS10cnVuaworNDUyNCBiZTVhYjhlODljNDk4NmU4MjI5OGFjYTRiYzY1M2JlODM4OTJiZDQ5IGxlZ2FjeS10cnVuaworNDUyNSAwNDhlOTFhNTljNzVlOGNlNjBhMzUzMjFmYWQwY2FjNjA3MmFiM2YwIGxlZ2FjeS10cnVuaworNDUyNiBjZjY1YTEyNGZhNGI3NjljNjkyMWI2YTlmNjVjMjkzNGIwZmE3YWMyIGxlZ2FjeS10cnVuaworNDUyNyA2OGEzOGNmZmNmNTgzYzI5MThhNTM4ODkwNWMxOWJkZWJhMTkxMjgyIGxlZ2FjeS10cnVuaworNDUyOCBhMzZjYWM3OWM1YWY3YzFjMTkyNWE0MWM1MmVjMjkxN2ViOTFiZDI2IGxlZ2FjeS10cnVuaworNDUyOSA0YzM0N2U0ZDEzZjFmMTE2NWM4MGRkOWJhNDE4ZWZmZGFmMWQ4MDUwIGxlZ2FjeS10cnVuaworNDUzMCBhZGMwMjhiOTc3YmRmNmJiN2Y1YWMxY2RlNjAyZTc4NmZhOGViZjU3IGxlZ2FjeS10cnVuaworNDUzMSAzODQ4MDk0ZjI1OWNhN2JhYzY5NDQ2YmU3ZjI4NzkxOWQ3ZWEzNDE5IGxlZ2FjeS10cnVuaworNDUzMiBkZjZmZTgyOTZiYzMxZDUzYzM0OTQyNjVlNzVhYWUzZmRiYTcwMGNlIGxlZ2FjeS10cnVuaworNDUzMyA1YmJmMGE5YzlhNDI4YWM3ODY0ZDMwMDA5OTYzYzYxNGUwYmUyN2Y2IGxlZ2FjeS10cnVuaworNDUzNCBjMjFjYzdiM2NlMjgzMzczY2Y3ZDJlNzEzNjU4OTU3MDNkYjNjNzFjIGxlZ2FjeS10cnVuaworNDUzNSBhZmVjZGVjOTk2ZmY1MDAzMzYyNWI1ZjVjYzZiN2ZjNzJmOTVhNDk0IGxlZ2FjeS10cnVuaworNDUzNiA0YWZhN2ViNDczNGJjZmFmNjUyZmRiZmRjODc3YjI4NGZiZjczZGJjIGxlZ2FjeS10cnVuaworNDUzNyBmMmQyNjdlZGJmZDY4NzY3MDkzOTE1ZmExMzdkZGU3MGRlMTJlYTgzIGxlZ2FjeS10cnVuaworNDUzOCBhYmJmMmE0YjQ4OGIzNzFhMmU2NDU5OTVhYTNjZTE2MWU0NzU3NDdjIGxlZ2FjeS10cnVuaworNDUzOSA4OTIxYTI4ODFmYzdmMjY0NjhjZDg2MjYyNTBiYTRhZjA0MzRlZGQ2IGxlZ2FjeS10cnVuaworNDU0MCAyNjA0ZDExYzhiNDA0NTljMGFjYjIwNWZlNzVhYjJiZDYwOTljNzMxIGxlZ2FjeS10cnVuaworNDU0MSA2NTE0NmI1MmYxNmI5MzRkZGQwZDQ5NWFjYTJkN2I3MWMyYzA5YzJmIGxlZ2FjeS10cnVuaworNDU0MiAxOTQwZTFlMGNlZGY1ZDU1ZTczYzBmZGUwZjUzNmFkYzI4Yzc4MDMzIGxlZ2FjeS10cnVuaworNDU0MyA1M2FhNTE0MzNmN2ZkNWQ1M2MyNzBiYmNkMDEzNGI0NDcxMjcwYjg3IGxlZ2FjeS10cnVuaworNDU0NCBmNzhiMzg3YjU0ZTBhMzk5NWEwZDI3NWQ5YmU0NmE4MmRmOTEyNzBmIGxlZ2FjeS10cnVuaworNDU0NSBiNGQ5ODJjNjQ4YmIzZTc2MDJhOTU5ZjQxNTMwNTg3MTVhNDhhMTgyIGxlZ2FjeS10cnVuaworNDU0NiBiMDNiNDNiZWUxYWIzZWNmZjZhNTIzY2FhNTAxNjZjMDkxOGNkNzhlIGxlZ2FjeS10cnVuaworNDU0NyBlOGNhZmIyYjc0M2E3ZTRjMDNkODY5YTM0MmEwY2Y2Y2VlMTI5MTg4IGxlZ2FjeS10cnVuaworNDU0OCBkMzU2YzQ3M2RiOTkzZmU3NGZiZmZiYmQ3Mzg1YjZiZjkzMDNhN2M3IGxlZ2FjeS10cnVuaworNDU0OSAwZDdlNGFhNTk1ZjdhYTViNGQ5YjgwZTVkYWEwMGI3NTA3NTRjMGRlIGxlZ2FjeS10cnVuaworNDU1MCBkNWM5MzViOWE3YjUwY2U1NGE4ZmQyYTVhMzU2MmMwNGZiMmRjMzQwIGxlZ2FjeS10cnVuaworNDU1MSBlNDU4ODQwNGZkZmYyNTQwMGMwNTgyYTU1MzA2YjkwMTYzNDM5ZTQ5IGxlZ2FjeS10cnVuaworNDU1MiBiN2JlMDM4MmY5ZWU2OWQxNmExYjhjZmY3MmQ5ZmQ4ZWQ4NTU5MzVmIGxlZ2FjeS10cnVuaworNDU1MyBiYTJlMjFhNTRhZTM5OTFhNGJlYTNiOGViYWNjOGYzNDY4NGRkY2ZkIGxlZ2FjeS10cnVuaworNDU1NCA0NTc0ZWQ2NTdjYzlmOWE1NWNhZTQ0NTQxNWU2YTc4ZDk4NzRhODlhIGxlZ2FjeS10cnVuaworNDU1NSBmZGNjYzMyMjJkMGFlNzk0MWNjNDVhYTZkOTMzMDg5MDlmYmMzNDg3IGxlZ2FjeS10cnVuaworNDU1NiAzMDgyMWJjMmRjYjc0NGZiMGFmMTc1ZDdiZDI4ZDI5NWRhYjYyNWVhIGxlZ2FjeS10cnVuaworNDU1NyBiYmZhYzNlMjU3MGQ5YWIyMjBkZmY3ZjYxZDkxMjIyYmI5NWE3YWVhIGxlZ2FjeS10cnVuaworNDU1OCA3NDkzYzY4MDVkYzZlNWNiOTM0N2JlYjY2OGViMTExZTJhYzExMWNlIGxlZ2FjeS10cnVuaworNDU1OSBlYTdiMmJmMGI1MjE2MWY5NmE1YTk3YzJjYThiZTZkMzAwZGM1MWZkIGxlZ2FjeS10cnVuaworNDU2MCAyZWJiMjEyODRmMzQ1MWE3NjliZjU3OGY2YmZlNDRjZGU4ZTQ5NmJkIGxlZ2FjeS10cnVuaworNDU2MSAwMTgzMGRjOGQ2ZTVkMzZiZmQwMWYyMmY1NjcxMmVmMjIzOWVmMWQwIGxlZ2FjeS10cnVuaworNDU2MiBhZjQxZjRhMjE2ODJlYTgyMTM2MjdhZGQ0NTMyMTJlNjBjM2U3Y2YyIGxlZ2FjeS10cnVuaworNDU2MyAwNzA4MGEyOTYwNzA3YmJiOWYwMWVmNjYzMGE5ZmVjMDQ5NWJjMjMzIGxlZ2FjeS10cnVuaworNDU2NCA2YzQ5MDVmZmZmMDFlOWI4OTIwZTQ4MjlhOTI4YjY1ZmZjZDc5MTkwIGxlZ2FjeS10cnVuaworNDU2NSAzMGNiZTAyNGRmNDA5ZWMwZDdlMzJhNDM3NDZkNzgzNjRkNTQyM2ZhIGxlZ2FjeS10cnVuaworNDU2NiAyNjY5ZWYxNGMyMDU0MTk5MGQ2ZGJjZWU5OWUxYmMyZjQzNjc2ZmRiIGxlZ2FjeS10cnVuaworNDU2NyA3NmM4NjBhMThkODIzNDNmYjRlMDc2ZGFkY2U0ZmJiYzUwODBlNzM4IGxlZ2FjeS10cnVuaworNDU2OCA3OTQ3YzBkMTZjYTA0MWU2OTE0ZWM4OTIxODUwYzM4YjQxMjUyNTlkIGxlZ2FjeS10cnVuaworNDU2OSA3ZWEzNjlkMDVjMmVlMTk1ZTEyMmQ0ZDdjZmQwZDg1MTIzMDg4NDAwIGxlZ2FjeS10cnVuaworNDU3MCBkNzNlZWQzNTMwMDEwYzRmZDRjODAyYTA5MDkzYWUwZWY0ZDNmNjE2IGxlZ2FjeS10cnVuaworNDU3MSA1ZGY2OWYyOTRjY2M2ZjZkNDY2MWU4NGUzOWUwNjEzMmIwNzBhNzU0IGxlZ2FjeS10cnVuaworNDU3MiBhZWRhODY0YzExYzQ0NjM5MjVlZGQyMGExODZhZDFkNDhlN2ViZGIzIGxlZ2FjeS10cnVuaworNDU3MyAxZGFlMGQzMDYyZDI2M2JiNmNjNjg1MWU3Mjg5YTA1Yzc2NmEyZTc1IGxlZ2FjeS10cnVuaworNDU3NCA4NGI2MWZlNDQ1NzMwNDg0MDBjZGIxZTcxMWYwNmRhY2RmNGIzMmFhIGxlZ2FjeS10cnVuaworNDU3NSA4NmQ5ZTkxNDA1Yzg1NTM4OTdjODg3MGM0MGVjZWYyYjhjYWY2NWQwIGxlZ2FjeS10cnVuaworNDU3NiBiYTNmZDk2ZjA1NWVmOTE5YjRkODAzMjZiMTY3NWJjMzUyODM4NjY3IGxlZ2FjeS10cnVuaworNDU3NyBmZDVhYjdlODI4ZmNjYzAxNDE1OTY4MjRmOGE3NWNhYWEyNmE3YWE1IGxlZ2FjeS10cnVuaworNDU3OCAzNjg0N2I4YjU3NWRmNjUxZjU4YWVkNTgxMzY5NmViNzZkZjY1MjRmIGxlZ2FjeS10cnVuaworNDU3OSBiZDA2MWRjMzA4NDJlNzUwNGVkZTRkN2MzN2YzZThlMTc5NzkwNWQ1IGxlZ2FjeS10cnVuaworNDU4MCBhZjM2YmFlMzQzZmNmOGRhZWY0OGE5ODU0MWUzN2MzOTZmMjQwOGU5IGxlZ2FjeS10cnVuaworNDU4MSA2OTU0MDE2OTJjNDZmYjYyYzRlOGM4ZGJkN2NmOTExYzBkY2Y1NWRmIGxlZ2FjeS10cnVuaworNDU4MiA5MmRhODkwMTUxN2UzZjE1Yzk4YzkxOGIyZGYyNDBhMDkxYTRjZWE0IGxlZ2FjeS10cnVuaworNDU4MyAwNTM2MGNkNjE2YWUzODg2NzUxMDU0NWU2OTRkZGFiMjQ5ZTZjNzRiIGxlZ2FjeS10cnVuaworNDU4NCBjYTI3YzJmZTBiOGQ0YzZiNTZlNGYwNmI2MzFhNWE2ZDhjNDcyNjNiIGxlZ2FjeS10cnVuaworNDU4NSBmZTkyMmZlZDZiMzFkOGM4NGZmNjBhZThlYjY0NTMyNTMwMWVjNTI5IGxlZ2FjeS10cnVuaworNDU4NiA0ZGRmNTU0NDU3YWQ1ZDFiMjAxY2M5YzZhZjMyMzExZDYxYmY5NDJjIGxlZ2FjeS10cnVuaworNDU4NyBjMTZkNjkzYmZlNzNmNTJmNDNmODA3ODBhOGY1YTFmNTEyNmU1OTBhIGxlZ2FjeS10cnVuaworNDU4OCA5ZDYxYzU3NDliZjgyNzgxYTdhMDYwMzk0NjlkYzgxM2FlMjg0OTczIGxlZ2FjeS10cnVuaworNDU4OSA0ZjkwYjQ3NGJlZWMzNDBmMDU5ZjA1OTY4YWQwYWE5OTdlYjY2Y2MzIGxlZ2FjeS10cnVuaworNDU5MCBjNTdiNWM1MGEyZDI5NTRmNmEwYzFjZDhhMWI1MWY4Y2IwMDIzYmVmIGxlZ2FjeS10cnVuaworNDU5MSBjOTA4NWYxZTk3N2YzMzgwMzQwYmJmYmMxOTFjMWIyZjE1NjMxOWVlIGxlZ2FjeS10cnVuaworNDU5MiAyM2YwNDAzMTc4MjgwYWUwN2NmYjMwODRmYWZkOGNjNTdjZWFjNjUyIGxlZ2FjeS10cnVuaworNDU5MyA5NGUyY2E4NjU5MGE1NmQzODc0ZGMyNGJlNWRlYjczZjk1M2I3ODFmIGxlZ2FjeS10cnVuaworNDU5NCAxNzNkZDAwODc5YWI2MDAwYzgyZGM2NDk4ZmM4ZjcyZmRmN2E4ZDRhIGxlZ2FjeS10cnVuaworNDU5NSA4NDkyM2Q5MmI1M2U3YWMxYTYzMjJhMzI4MGUzNDFhZTdkMzYxMmJjIGxlZ2FjeS10cnVuaworNDU5NSAxNmViNGM1MWVlOTcxNjkwNDYzNDA5OThlODUwYTYzYzY1MjI1YjBhIGxlZ2FjeS10cnVuaworNDU5NyA3YWU4NDdiMWIyNjkyMjhiOWNjMzg0ZTBiYWZkMDRhMzY3OTNiZTFiIGxlZ2FjeS10cnVuaworNDU5OCAwZTYwY2QyMDdhZGJiMjRiZDViM2MyYjg0NGI3YzA4NjczZTA0NGE1IGxlZ2FjeS10cnVuaworNDU5OSBlOWU5M2UwNzM1NGI4YmMwYjM5NDAxNDYyYTcwYTZiOWI5ZGJhMGY5IGxlZ2FjeS10cnVuaworNDYwMCA5YWZkYmY5NDRjMmEwM2E2NDlhNTdmZTBhMzIzY2QxMjI1MWM1NjBkIGxlZ2FjeS10cnVuaworNDYwMSA4MzhlZjk3Njg4MjEwMzAxNjc4NWI5N2Q0MGViOTJjZDlkMzAxZjljIGxlZ2FjeS10cnVuaworNDYwMiBmOTlhMjM5OTg3NzBiYWI3ZTJmMjU2NTZmN2QwMDRhNjViOTM4YjUyIGxlZ2FjeS10cnVuaworNDYwMyA2MDYwZDdmYjA3ZTM0MjQ1ZTk3MzBiZmZkODYyMTA3ZTg4NGY0YTM0IGxlZ2FjeS10cnVuaworNDYwNCA0NDg0MzViZmVhZGMwZDQ2Y2Y1NWM2OGM5MmY1MDNmNmQ5Y2Y2ODExIGxlZ2FjeS10cnVuaworNDYwNSA1ZmQ4NTI0ZGQwM2EyMTBhOTM3OGI2YjMyYWNlMTczYjhmMDAxYzg3IGxlZ2FjeS10cnVuaworNDYwNiAxYTUyMzUxYTAwYjI2Y2QwNTlhNmJjOWUyZDk1MThlNzY5YTFmMWRhIGxlZ2FjeS10cnVuaworNDYwNyBlNTRiODY1NGY5Mzg0ZjEyMjdiYTIxOTdmZWI1ZmUxNjExYWRkZWM4IGxlZ2FjeS10cnVuaworNDYwOCAwNzI4ZmViMWQwMzFiNDg4NDJiNzE5ODM3MGFmMmM3ODY4OGFmNTQyIGxlZ2FjeS10cnVuaworNDYwOSA4NDk3MWQwMTU5NjVlOGU4ZjJmNDFmNDQ1OTNmMjMyZjY4ZDZhNTQ3IGxlZ2FjeS10cnVuaworNDYxMCBjZmJhYjc5YTc5OWY0NjUzNTUyMjcxZGE1MDIwYmUyMjIwNTE2Mzg3IGxlZ2FjeS10cnVuaworNDYxMSAxZTA4MzhiYjhmMjIwOGUyOTJiMzAwMzQxNjIzZWY4MzJiYzIwOWY4IGxlZ2FjeS10cnVuaworNDYxMiAyOTcyMGM1ZDllN2VjNDIyMWZjODdmMWIyMjJmODA1MzE5YmZkNzA0IGxlZ2FjeS10cnVuaworNDYxMyBhNjE5YTYxYWFkMWViYjhjODgwMjQxZmMyY2VkMGYxZTA2MmMwMjJkIGxlZ2FjeS10cnVuaworNDYxNCA4OTliNGUzZGZkNGNmZjk5Y2E0MGVkNzJjMDc1Mzg0NTAyNDE2ZTFmIGxlZ2FjeS10cnVuaworNDYxNSBmMDYyMjJlMDdjYTc1NTM3OTU4MzZmN2U5NDQ0NzE4NWE2OTE1ODdhIGxlZ2FjeS10cnVuaworNDYxNiBjOWFlYTM0YWU0YjY5OTcxNGFlODEzZTQ3NWY0ODc0ZTJjMWRiYmMyIGxlZ2FjeS10cnVuaworNDYxNyBlZTBiM2NiMzdhZjg4Y2M0YzkzNjcwYTE2ZDE5YThlM2MzOGI5ODJhIGxlZ2FjeS10cnVuaworNDYxOCA0NTliZjdkMDRlMDViZWI4MjllMmQ0ZDAyNWI3ZGFmODNjOTZiMDNjIGxlZ2FjeS10cnVuaworNDYxOSBmNDliNjM3MjQ5MmYyOGJiNzNiNDE1Mzc2ZDdlM2I0ZDIxYjg0MDBkIGxlZ2FjeS10cnVuaworNDYyMCA3YTZiNTdmZWJhYzQ2YzEwNjIxY2RjZGQ3MzM5MjE4ZDRjOWJiYmZlIGxlZ2FjeS10cnVuaworNDYyMSBkOTBjOTE0YzU3N2QyMGI0MjFmMTBlNzJhOTA3Mzk1ZTU4YjM5NmRlIGxlZ2FjeS10cnVuaworNDYyMiA5YTlmM2Y1ZDZmODYwMzIyMTJmMDA3M2E1Mjk5MGQ5ZjFlMTgwNDBjIGxlZ2FjeS10cnVuaworNDYyMyA5MmNkODU0NzBhNzY5ZGY1NzdkODBjYTYyNGU2YTA3NThkZWQxMDU5IGxlZ2FjeS10cnVuaworNDYyMyBiNDVjNjg4NzU2ZDA0ZmI4NGQ0YTBkNTE4ZmMzZDdlM2NiMjVmYThkIGxlZ2FjeS10cnVuaworNDYyNSA3ZmY2ZDk5OWYwNTlhMDhjOGM4MmI4M2MwNTJkNTE0ZjZjYmU2NTE4IGxlZ2FjeS10cnVuaworNDYyNiA4YWRjYjgwOGQ4ZGRkODQyOTU1NDgxZmRjMjdmZjYyMjFlZWYyZDYxIGxlZ2FjeS10cnVuaworNDYyNyA2ZjM1YTFhZDFhY2M4MzM1OTBmOTgyNTc3YzUwZWJkNjBiYWU5ZGI2IGxlZ2FjeS10cnVuaworNDYyOCA1ZWVkODMyMTZlNmM1NWI4NTY4YTk5ZjU2NDdjYWM5MGUxZDkxMjEwIGxlZ2FjeS10cnVuaworNDYyOSAwNDQ1NzI1ZmU1ZGU0Y2FlYWJmNDkzOGQ1NGZmYzA2ZjAxMGQ2NzhjIGxlZ2FjeS10cnVuaworNDYzMCAxZTllNzQ5NDRiYjUxZjQ4Zjg2MjkxOWJhNjg5MGMxMjcxYmNkNjYwIGxlZ2FjeS10cnVuaworNDYzMSA5ZjUwMGEzNGMzNTU0MTgxMWM1NjRhODkyZWQyNmY3ODZkZGY0N2NmIGxlZ2FjeS10cnVuaworNDYzMiA2NWQ4N2YwNmYwOGZjMzBiODNhYzBhMzcxMDRkNjZiMGM0MDQ2OTQ4IGxlZ2FjeS10cnVuaworNDYzMyA4ZGEwM2RlY2VmNTkzZGRlMGU0NGFiMTI3YTZjM2E0Y2NkYzBiOTQ4IGxlZ2FjeS10cnVuaworNDYzNCA5YjQ1MWM4NGE3YmY5MzAxMTAxMjYyODU5NGYyYTdiNDRhNmYyMDc5IGxlZ2FjeS10cnVuaworNDYzNSAwMDQ4MDI0YjdlZjg0Y2Q5YzAwZTU3OGQ5NzYyMGMxNTE1OWVjMjVkIGxlZ2FjeS10cnVuaworNDYzNiBkZmFiYjEzYmNlNzBmYzE4MWIyNmMwMmI0MTljZmEwNTUwOTkxODgyIGxlZ2FjeS10cnVuaworNDYzNyA2MmJkZGVkNWYwMGEyMzE1MWM0ODM5NmYyMDcxZDUyMTViN2FjNGM1IGxlZ2FjeS10cnVuaworNDYzOCA4N2Y0ZDZkMmU5Yzg5YTg0ZTk5MDIxNmNhNjU3NWI4ODE1ZjkyNzNlIGxlZ2FjeS10cnVuaworNDYzOSA5YzhiNDMyMzgwOGJjMGY5OTEzM2Q5YjI3ZTJiMTQ1ZTk3OWNkMTIzIGxlZ2FjeS10cnVuaworNDY0MCA5NWNiNTJiODVmNzg2N2ZiNDdjNjg3OTk0MjQ1YmM3YzVkNWI5YTUyIGxlZ2FjeS10cnVuaworNDY0MSA5NjhlMjQ4NGQ5NGRhMzgyZDQ5YzczM2MwM2M0ZTI5OTNkMTE3NDQ1IGxlZ2FjeS10cnVuaworNDY0MiA2NDYxZmYwYzRiZWU2ZjMwNTYyYTE1NDgzMzg3YzVkZTE3NmM1ZjE5IGxlZ2FjeS10cnVuaworNDY0MyBkNTk1NjgzODE0NDdkMGUzMjk5NWY3NWE3M2QyMGEyODU4OGQ4MzRiIGxlZ2FjeS10cnVuaworNDY0NCBiNDBlMTBiZGEyMzE5MWQyZDc2Yjc4ODM0NmQ0ZDEyMmE0ODZiMDYyIGxlZ2FjeS10cnVuaworNDY0NSBmNDg5NTFkYWJhNGZmYzNlNzU2MjVmMzRhNGRmM2U2M2FhZmVlYmVhIGxlZ2FjeS10cnVuaworNDY0NiBmNzhmYmNjYWY1OGNjNjZkMWI4MDY2MzUxOTJiNTFlYjI2MDcyZWUxIGxlZ2FjeS10cnVuaworNDY0NyAxYzAxMmQ4MmE5NzU4YzIyYjM3NDU3OTdiNzRlZmRhOTZlOGIxMzI0IGxlZ2FjeS10cnVuaworNDY0OCA4ZTQ3NmNhM2E3YTNmMmZhZjZmMWY2NTE3ZDZiYmI4ODc0MDY5NjQ3IGxlZ2FjeS10cnVuaworNDY0OSBjY2MyNzlmZjkzNWQwZjU0YTZiYzk4MTVmZTE1MTJkNTA1MjUyYmU3IGxlZ2FjeS10cnVuaworNDY1MCA1ZTU2OGJhY2ZiZTk5YmE2MmE4MmEzOGFjNTI3NDI1YmNmNzgyZGZjIGxlZ2FjeS10cnVuaworNDY1MSA5MWE0M2VhMTFiYTM1OTRjOTAyYzFlYmU2NTY0YjEwMjYxMGFlOThjIGxlZ2FjeS10cnVuaworNDY1MiAyNzU1N2U3MGE4ZjAyOWJjZDc5M2I3MmM2YWEwOTdkMzJlMDgyMzIxIGxlZ2FjeS10cnVuaworNDY1MyBmNDY3MWI2ODFhYjk4ZTc2MjBmZDk3MjljNDM2MTgwZTcwOWM0NjA4IGxlZ2FjeS10cnVuaworNDY1NCA1YWU5MjJjZmU0MDQ5MzQ3YmIwNzQwM2QwMGU1NmRiZWFiZGZkMThlIGxlZ2FjeS10cnVuaworNDY1NSA4ZjFkYWZmZTc5OWJjZjM0ZTA3YWZiYzk4ZDEzNzcwODgzNDZmNGNiIGxlZ2FjeS10cnVuaworNDY1NiA5ODk0ZTU1NDY4ZWM2MGY3NWEyYWYwMDYzM2RmODM0MDAzNDk0NThkIGxlZ2FjeS10cnVuaworNDY1NyBjZGIzNzNmNjViZjM4MGRiZDI5NDcyZDc4ODE0YjJlMDBlMDBjYjRlIGxlZ2FjeS10cnVuaworNDY1OCAwMmRkNjNkM2ZlOWIzMTM3MGVlNTczNjY0YmUyYTIxMTk1YTQ0NDVmIGxlZ2FjeS10cnVuaworNDY1OSA1Mjc4ODlhZTg0NTAzOTA5NzdkM2U4OTUyMWI0YzJkY2ViOTEzNDE1IGxlZ2FjeS10cnVuaworNDY2MCAwZTMwMjc3MWVlNWEyYmZjN2JlZTE5YzI4N2ZjZjliM2Y4MzYyNWJmIGxlZ2FjeS10cnVuaworNDY2MSAzM2VhOWNjN2Q3YmFlNzIzYzg3YTI3MjI2ZDgyMzQwM2M0ODRhODkxIGxlZ2FjeS10cnVuaworNDY2MiBjNjhhMDExM2I3NWEyN2ZlYTMzYmQzNjQwY2ZjNTIwZjFhNTJhZDdmIGxlZ2FjeS10cnVuaworNDY2MyA0MDUzZDRjYjUwZTBkNzAxNzQ2YTc1NzQ5YTY3Y2EwOGI3Y2YwMjg4IGxlZ2FjeS10cnVuaworNDY2NCBlNzM0YzcyMzU3MjdlNzRiNTRhZDc5YjMwY2ZjZWYyZDM1YzI0MTBjIGxlZ2FjeS10cnVuaworNDY2NSBlYjNlNjFkYjBkZGE5YzVhZjQ1NTg5Y2EyMjFlMzgxZTZiMTVmM2M3IGxlZ2FjeS10cnVuaworNDY2NiA2NGViNDg3Y2E0NjVkNmI2YTI4NjA1ZTk5OGM4NzUxY2FhMTc3MWRmIGxlZ2FjeS10cnVuaworNDY2NyA5Mzk3OTFmMjE5YTYzZWQ4NTYxZWM2YmI3NTZjNGU3N2Y0ZTlhZjU5IGxlZ2FjeS10cnVuaworNDY2OCAyNzIyMjkzNDhmZTJiNzdhMTVjNGUzMTc1YTc1NjkxNDFlZWQ4MTVhIGxlZ2FjeS10cnVuaworNDY2OSBhM2JkNjE2MzJmMTQ1ZWQ5ODhhMWMyYWI3ZDU5YTBjNTA0Yzc5NzVkIGxlZ2FjeS10cnVuaworNDY3MCBhYmVkMzY4ZDY4ZWYxODkwYzY3MjVjZDkxZWI5ZjFmMmQyZWVmZjE5IGxlZ2FjeS10cnVuaworNDY3MSA3NmQ0M2MwMzM4NDgxMGI1MjcxMmFiZWRjNmI1OWVhNzFmOWNkMTk3IGxlZ2FjeS10cnVuaworNDY3MiBjZmVhYTUwODJiYTgzMWI2MjFhMDM0Yjc3MjkzYjg0ZWI3YzMyMjhmIGxlZ2FjeS10cnVuaworNDY3MyAwNjEyMTMyZTAwMTg1N2VlNGE4YzRlYTBmOTFmMzU2YzRjMzE2ZWM1IGxlZ2FjeS10cnVuaworNDY3NCA5YmMzYTViYWE2ODBlMzhkNDA1Y2NjNzE5OGU4ZDQ4MmU2ZDA1OTM2IGxlZ2FjeS10cnVuaworNDY3NSA3NGEwYTYxMjFhZjcxYjZhYzczNDk2NWFkY2JkYTcwNWM4ZjhhMThlIGxlZ2FjeS10cnVuaworNDY3NiBiYmI1NmRjM2I1MjZiNTUyYjUzZjY5ZTcyY2IyZGMwM2M3MGZmYmQ4IGxlZ2FjeS10cnVuaworNDY3NyBhYTMzNjU4MTVjMjBkNzViMjAxMzIzZWU2NGUyMTA3MzRmZjVkN2I0IGxlZ2FjeS10cnVuaworNDY3OCAzMjQzNWQzM2YzNGE2ZjQ0YzhlY2ZiNTQwOGQ0YTIzOGQ2ODY3ZTliIGxlZ2FjeS10cnVuaworNDY3OSA0OTcxOTdmMzU3M2MxMGI5NGUzZTEwOGM2ZTljY2RmZTI1MTg3M2RlIGxlZ2FjeS10cnVuaworNDY4MCBjMmQxOGI1ODIzMmVkZWYxNjViMzE1MGU2MjAzNDA5OTU5MDI2MmEzIGxlZ2FjeS10cnVuaworNDY4MSBlNTNkMDE5ZTdkNDc2MTJkMmU2NDZmZjc4M2Y1ODk4YmQ0ZmI2NGNlIGxlZ2FjeS10cnVuaworNDY4MiA5NTg4YzIzOGU2NjA5YzEzMTI0MTJiNWIyMTNkYWZhNjNmY2EwYmEwIGxlZ2FjeS10cnVuaworNDY4MyA0YmNmMWI5NmVmZWM0ZjExNmIzMzA5NDBmMzcxM2EyZmM5NzYyODgyIGxlZ2FjeS10cnVuaworNDY4NCA5MmU2ZjVkOGJlODJhYjkxNDQ4YmM2NzNmZDRlOGZmNGQ3NTZjNThkIGxlZ2FjeS10cnVuaworNDY4NSAxZThiMzQ3YTA1NmNmMzY2NmVmZTUzMTQ2YWUzNzI4M2RjODcyNGFmIGxlZ2FjeS10cnVuaworNDY4NiA4ZDVlMzZiMzdhNDEzMjI5ZmE5MWUxMTdkNzhhMWY1ZTQ3OGE5NzI1IGxlZ2FjeS10cnVuaworNDY4NyAwMTAzNzUzMmMwODYwYTFiYzk5NDExMzdhMjRkOWQ3Y2ZlM2JiMmI4IGxlZ2FjeS10cnVuaworNDY4OCA3YjY1NDA0OTZmNTU0YmI2ZTU3NGYxYTMyZTY1MDBmYjZlZGMwYjMzIGxlZ2FjeS10cnVuaworNDY4OSAwMWVkNGNkMjE1NzZjYmI0NTBjOGI4MTZlZjcxMGNlYTdkNDRmY2I2IGxlZ2FjeS10cnVuaworNDY5MCAxYjY2MjQ5NzQyNmI1M2ExMGUyZTg4ZjAwODM4ODY5Y2RkNjUzY2YzIGxlZ2FjeS10cnVuaworNDY5MSAwYjBiMThkNjU1ZDJlOWMwNWU0ZTU3ZmUyY2ZmOGQ2YTgxZTIxYzU2IGxlZ2FjeS10cnVuaworNDY5MiBiNWRjYmE3YjczMmQwM2IwZGJkYzAwMDUxY2I4MDFlNzdmMTNlNzA1IGxlZ2FjeS10cnVuaworNDY5MyA0NDJiYWU4ZmNmZGM2NTE0ZjE5ZDFhY2ZmOGJhNjExMTVkZjJmYjA4IGxlZ2FjeS10cnVuaworNDY5NCA5NGI4NDUzNWMzNGUxMWQ4ZWEyNWJhYmRiYzBiY2JiZTE0NjFjNTg3IGxlZ2FjeS10cnVuaworNDY5NSBmZWZhZTM3YzA1M2NmZDNiY2VmM2Q5MzlhOGYzZmQ3NTZiNzhhOGI4IGxlZ2FjeS10cnVuaworNDY5NiBkM2I1YmUwYzg3MmYzM2IxZWU5MTA4NjM0NGFkMmM3MGM2MjAyMWFiIGxlZ2FjeS10cnVuaworNDY5NyAyODNhOGViMmUzMTdjYjdkN2IxMTVhYzhiMDRhMmZmZTlmNjM0YmVmIGxlZ2FjeS10cnVuaworNDY5OCA3MmUwNWM2MWMyZmU1OTMzNzdlYTczY2I4ZWI0YjVjODdiMjA2MjU2IGxlZ2FjeS10cnVuaworNDY5OSA3ZmE0OGFiNGJlMGY0YmMzZjUxM2E1MDg0YzE5YjZmZjNhMDJmNjAwIGxlZ2FjeS10cnVuaworNDcwMCAxYWIzNWI2ZjYzOGEyNjZiNzE3Njc3NWY0NDA4Y2QzZTlkYjZhYmM1IGxlZ2FjeS10cnVuaworNDcwMSA4YWQxMzYzMjg3YWE4YmM5ODM1ZDJiNDUxMjk5NTY2ZjQ1MmIxM2MzIGxlZ2FjeS10cnVuaworNDcwMiA0MzhmNTNlN2NmZDE0ZTk1ZWE3MmQ4OWQwYzdiYzQ5ZjVhNTljMjA4IGxlZ2FjeS10cnVuaworNDcwMyBhNzZhNzlmODk2Y2Y1ZmUyMTEzYmI5ZjY2YWM0ZGQ2MDIyZDUzZDcxIGxlZ2FjeS10cnVuaworNDcwNCAzYmVmMWFmZjg3MWJjMzQ5MjA3MDg1OTc0NTE1YTM1NmQxZDU3YzA1IGxlZ2FjeS10cnVuaworNDcwNSBlMGEzMjQyZDVhZTc5ZDE2MjBhMjI2MjQyYThiM2NhYTEzOTRlYjkzIGxlZ2FjeS10cnVuaworNDcwNiBlOWQxMWY5YjgyZTJiNTgxYTk2YjczMjVlMjNjZmQwNzdhMzg5NDkzIGxlZ2FjeS10cnVuaworNDcwNyBjMjNkMDkyMjE1ZDJjM2U1ZjgwMzIyMjIyNWRmNzFhNmMzYTc2Njc0IGxlZ2FjeS10cnVuaworNDcwOCA2N2U4ZWY2OThhNDJmZjI3MjBhZjc4MTUwZWNkOTdkMGMzMzQ4ZDIwIGxlZ2FjeS10cnVuaworNDcwOSAzODJlZGVmMmQ2ZDcwZDM3YzM0Mjg5ZThiNzQxMTM4MjdmMjZiOGU4IGxlZ2FjeS10cnVuaworNDcxMCBkMDkxYjI0NmEzYTdhNWJiMmMxNDE1ZGZhMjEzY2YxOWZlNjRmNjViIGxlZ2FjeS10cnVuaworNDcxMSBlZTRjOTU0Y2Q1ZGY1MmU5YzQwNzM5N2Q0ZGJjZDFjYTEwNDI0NDM1IGxlZ2FjeS10cnVuaworNDcxMiBiMWE2YTgxYWYxY2ZmNDdkMzlhNTA0OGExOGNhOTgxNTU4ZjU3Mjc0IGxlZ2FjeS10cnVuaworNDcxMyA4M2QwNjQwNGY2ZTExNDQyY2QzMTBlNjljYWJhZmU3YTdmMjYwYWJhIGxlZ2FjeS10cnVuaworNDcxNCBhODFiNmRiNmQzM2M5NGU4ZDA5NDg2OWEyMTExYjg3MDg5OGI3MjAwIGxlZ2FjeS10cnVuaworNDcxNSA2NDVlOTYzNDNmODlmZWY4ZGI5OGY1M2Q2YTg4ZjM3NGZmMGQ1YzdjIGxlZ2FjeS10cnVuaworNDcxNiAwM2JkNzk0MzJmMDY5YzYzMmFlNWFlODQyMWY3MjRjMTNlZjcxZGEwIGxlZ2FjeS10cnVuaworNDcxNyA3ODk1YTk3MzEzZTVmNGNmYWQyNGM1YTZiYTU2ZTg0NjQ1MzllMjBlIGxlZ2FjeS10cnVuaworNDcxOCA4NWFhMmU0ZDAxMjNjNTNjNWU2OGU4MzRhNDZmYzcwYjg1MTk1YWNhIGxlZ2FjeS10cnVuaworNDcxOSA0YmNjOTI5MTZmYWJiMmY2YzUxZTRlMTE1MThmNjY3ZWRhZjdlY2Y5IGxlZ2FjeS10cnVuaworNDcyMCAzYTgzYzNjZWY0YjJiNWM4NGE5MzY3ZmUyZmIwMGQzNmI5NDMxZWE1IGxlZ2FjeS10cnVuaworNDcyMSA3NDExYjZhMDY5MjBjZDZkNGJlMjEwNmRhZjE0ZmMyMzg1ZDNiYzgwIGxlZ2FjeS10cnVuaworNDcyMiBhYzZmNjliMWU5OTMwNzE2MjAzYTdhNTRhMTI2ZmI4ZTc4NjIwNWViIGxlZ2FjeS10cnVuaworNDcyMyBhOGM2ZGEzYmQzMDU2ZGQ1NmY5ZmUwMzhjY2MxNGIzOGQ1YWIxOWI0IGxlZ2FjeS10cnVuaworNDcyNCAzYTY1OGVlYzFmMDJlMTQ4NWU2ODMzZDZmMGViZDFjOGI3ZGFhNmUxIGxlZ2FjeS10cnVuaworNDcyNSA4YTEyNDRlN2NiM2JkMmE0ODNjZjNmNjlhNTBmMGVjM2I4NDczMzIzIGxlZ2FjeS10cnVuaworNDcyNiA1OGFhN2YzYjE2OTJiZjU3OThjZWExNjZkZTMyMDE5ZGFmOGMzYmFjIGxlZ2FjeS10cnVuaworNDcyNyAwNzY1ZDBiZDg4ZDZkYTVhZmYwNDE4NjcyNDI0MGYzMzY0ODg0NDUyIGxlZ2FjeS10cnVuaworNDcyOCA5MDg4MGJkMDkyMjFkZWNkM2FiYzhmZjUzZTdjZmZmNjM5ODcyZjg4IGxlZ2FjeS10cnVuaworNDcyOSBlNWI5ZjY0NDA1M2U5ZTBjNGNkMWJkZDkxMDM5ZWU5Njk5NzE5NDE5IGxlZ2FjeS10cnVuaworNDczMCA2NmQ2ZDEzZGY0ZjhhOTgyMDRlYzRiYTQzYmRiNGIzMzczMmVlNzU3IGxlZ2FjeS10cnVuaworNDczMSBkZjdlMjZiNWM5MTg5YmE0M2EwYTBkZjQyZDgyM2I0YTkwZWQ5YmY5IGxlZ2FjeS10cnVuaworNDczMiA2NTY0NDc2NjE1OGFlOGU0Y2E5NzMyYTU3MzI2OTZmNTNiNWI2ZjJhIGxlZ2FjeS10cnVuaworNDczMyA2MTg3MDFjZGY2MDAwMTA2MDJkOWRiYTY5NDI2N2EzZDI1YmE1NmYyIGxlZ2FjeS10cnVuaworNDczNCA2NTBjYjY3ZDc2NTk4NDJkZWU4ZGNhOTliYzU1NWZmYTk1NzI1ZWJhIGxlZ2FjeS10cnVuaworNDczNSBlZWFhZjg3NWY3YjY4MTM5NzNlZTdkYzBmMWRmNzUzNjNmMmQ4NmIyIGxlZ2FjeS10cnVuaworNDczNiBiMDM0YjRlYTJiMzk5MDI2ZWJjZWI1NGRiOTkyYmIxZGYwOGFhMGNjIGxlZ2FjeS10cnVuaworNDczNyA3ODU5ZDNhYWIxYjQwNTE5ZDg5MTNhYjIyMjc1MmYxZDU0ZTZjMmRkIGxlZ2FjeS10cnVuaworNDczOCA3MWMxMWE2ZTRiYzAwZjJiNzljMjE5YTEwNmIyMTQ4MDU0NzE4MDQ4IGxlZ2FjeS10cnVuaworNDczOSA1ZTZjMGNkYWE3YzFiYmNjZGMyZDZkNjEwMmU5MGYyODkxYzBmMmJmIGxlZ2FjeS10cnVuaworNDc0MCA1NTQ2ZjRhNmUzYzM0ZmQyZTMxOTdmNTdiY2YyMmUyNjAyODEyNGExIGxlZ2FjeS10cnVuaworNDc0MSA1NDBmODQ0NGVmOGE4NzMwMDkzNDE3Y2RlYWYzYzJhZjg3OTU2ZDQ4IGxlZ2FjeS10cnVuaworNDc0MiBiNGNhYWMxNDI4ZDBkYTdlZjA5OTkwMjBhNzAwZWVkZTI5ZTVjZmVmIGxlZ2FjeS10cnVuaworNDc0MyAzMTk1ZGI2Njg5ZmQ2MTNlZWFiMTZiNjhiNmVkMDgxZDE4NDY4ZDFhIGxlZ2FjeS10cnVuaworNDc0NCBmNWE2ZTZlZTUyOWMwN2JhNzVjNTY4NGQwNTVjMzZmNWNmZGRiZDk4IGxlZ2FjeS10cnVuaworNDc0NSBhYzhhMjI1YjA1MWI3NTc3MjIxN2I0ZjBlNDkzMWUwMzU4NmY3YjJhIGxlZ2FjeS10cnVuaworNDc0NiAwMWE5NTQxMjQ1NzcyNGZiZDIxYWE3MDE2ODY5OGYwMTYzNjEyMTg1IGxlZ2FjeS10cnVuaworNDc0NyBhMjQxNDYyNDE5OTEzYjc4NTFhMDdlYTU3OGIxM2E5Zjg1ZGEzYmIyIGxlZ2FjeS10cnVuaworNDc0OCA2MjYzZTJmZDkzOTg4ODEzOTg4MTU0ZjNiYjE0ZmU3YmY4ZjJhYTMxIGxlZ2FjeS10cnVuaworNDc0OSAzZDZjOWE0N2VhNDQ1YTUzZmIyMzcxYjZkYjAwZjk1ZDJmOTMxNWY2IGxlZ2FjeS10cnVuaworNDc1MCBmMTdkNmU2YjQwZGFiMTRjNWFjYjE1MjkzZjY5ODI1NDc0YWE4ZjVhIGxlZ2FjeS10cnVuaworNDc1MSA5NzE3ZjZhOGY1ZmFmZTllYmNmMmY2OGRlNzQyNzhmZjJlMDg2ZTE5IGxlZ2FjeS10cnVuaworNDc1MiBmZThkYjc4ZjMxMWM5NmNlZDY4Y2Q4Nzk1M2Y4NmNlMzRlNTUwYmI5IGxlZ2FjeS10cnVuaworNDc1MyA5OTAwOTllZDc4MTA1MWQ1NWU0YzAyZjEzMzFhZjRhMDJjNzY1ZTQ3IGxlZ2FjeS10cnVuaworNDc1NCBkMjA0OWExZDNjYzVjZjFjZDJhZTY1OGMxZGU0MzkyYTJlMzM3ZGFjIGxlZ2FjeS10cnVuaworNDc1NSBhZGFiNjZmYWMzMGU5N2VjNzg2NmZmZTAzZTM3MDMzNThlZmVhZjZhIGxlZ2FjeS10cnVuaworNDc1NiA2YTA0MjU2ZWEwODc3YzA3NGQyYTkzODhjNDYzZmYzYzkyZWYyOGRhIGxlZ2FjeS10cnVuaworNDc1NyA1MDVmYzQ3OGZmMDg1MTRlNTIzZGE2MThkNGY1NTNlMTk3NjgxZGIxIGxlZ2FjeS10cnVuaworNDc1OCAxNzBiOTk4NjJkMDk1ZDk2Mzg1OTMxYTFiYjNkZmMxNDU5Yjg0ZmVkIGxlZ2FjeS10cnVuaworNDc1OSA2NWE2OGM1MWU5ZjJhNzBmZjM2ZmZjZDA5NmUzZDkwM2FlY2FmZDM3IGxlZ2FjeS10cnVuaworNDc2MCAwOGI0NTdkNmI1MTZlZGY0NTZmZjc2MzYwN2EyMDQ4NWEwYTdlNGNkIGxlZ2FjeS10cnVuaworNDc2MSA1YWVlMmM1ZDhkZmZjYWVhM2U4NmE3NzhkMDdiZmFhNGE2YmM2OWFjIGxlZ2FjeS10cnVuaworNDc2MiAxNGIxMjZkMGI1YmUzNGJjOTdiMTJkNjIyOTgwOWVkZWZhZGYwMzc0IGxlZ2FjeS10cnVuaworNDc2MyA1NmNhNjdkZGVjODU4YjU2ZDBmMDAxN2ZmMmJjMWY2YTQ4MTk4N2Q3IGxlZ2FjeS10cnVuaworNDc2NCAwNzkxM2ZiOGY5MmYwNDk5MzkwYjdhYjEyOTM3ZDIwNWQ1MzU5Yzg0IGxlZ2FjeS10cnVuaworNDc2NSBmYzZlOTYyMjEwODhiMDgyMzU3YWQwOGI4NzgyYzQ2NzdjMDZiOWUyIGxlZ2FjeS10cnVuaworNDc2NiA0MGFlYzQ4Y2QxZTIxNDdkOGY5YWYwNmIxY2IwZGQwMGZhY2U0M2IzIGxlZ2FjeS10cnVuaworNDc2NyBmZjcyYTVmOWE0ZWUxMjRhYTBkODhhOTEzMGJkYjg2NTQ5NmU4MWZjIGxlZ2FjeS10cnVuaworNDc2OCA1MTVlMWQwMzM5NGFkODY2OWVjNGQ5OTgzODRkZjA3OTI2MDk0NzczIGxlZ2FjeS10cnVuaworNDc2OSAxNDI1NjE3NTE0YWNjZjhhYTMwYzE1YzU1MzA1MDZmZTg4MjFmZTBkIGxlZ2FjeS10cnVuaworNDc3MCBlZDgyMWE5OWJhMzkyMzk1MDdjMDBjYTVkN2RlNzM1ODhjMGM1MTMwIGxlZ2FjeS10cnVuaworNDc3MSAxY2UwN2Y2NDg2MmU5ZjVmODBjNjU2ZTY4ZjAxNTdjNjNlODZlZDk1IGxlZ2FjeS10cnVuaworNDc3MiA5OWU3YWMyMmJkMmUyZDUxODhjMGRkYzIyODIwZDYxN2FhYzZmMDgyIGxlZ2FjeS10cnVuaworNDc3MyAxZTcyMDcxMjgxNjc4OGM2Y2VkOGU5NThmOTc3NzY0ZTQ1YThhM2JhIGxlZ2FjeS10cnVuaworNDc3NCA1ZjcwNThkODE2Y2Y5MWYyNTMzNDBkNGRjZDBiZjZiOWRmNmM3ZjNkIGxlZ2FjeS10cnVuaworNDc3NSAzMTYxZTdjZjIwNTRmNzM2ZjhjMjhjMTZjZDNiOWFjMWRmZDdkOWI4IGxlZ2FjeS10cnVuaworNDc3NiBkM2UyZjk4OGYxYWYwZTE0ODA1YzU2MTVmYjM4YzQ0MDE1NzllZDBiIGxlZ2FjeS10cnVuaworNDc3NyAzZGZlZjY3ZTBkZWQ5MGU3ZDExMjhhM2ZjMmEwMjQyMGE1YWEyZjMwIGxlZ2FjeS10cnVuaworNDc3OCBmYWFlY2U3Y2NkNmU3MWIxNWQ0ODAzNzIwMjUyMzhkYjYwYTRhY2MxIGxlZ2FjeS10cnVuaworNDc3OSA3YmRlNGIxZGY0OTQwOTdmN2FhMTk5NjU3NGI2M2VmZjg4N2ViZWQwIGxlZ2FjeS10cnVuaworNDc4MCBlOGQyMDc2NThhMDQ1MmIxZDU5Mjc3M2QzZWU4NGI1YzA4YWRiNmY5IGxlZ2FjeS10cnVuaworNDc4MSA0M2Y5ZTc1NDljNzBlNmU4MzdkMGUwYTY2NmFkMjQwNmY0ZTM2YjNiIGxlZ2FjeS10cnVuaworNDc4MiAzZWRlYzgyMTFhMzZhZDU3MTkzZTlkODgxOWY3NTkwMDBmMmUyOWZmIGxlZ2FjeS10cnVuaworNDc4MyAxYjI2MmQxOTBhNGE0ODEwOTgzY2MzZDY2NWI1NTk0NDkzMzk5YzE5IGxlZ2FjeS10cnVuaworNDc4NCA4NDU2MGY0YjI5ZWYwOWEyMDljZGNjNzg4ZDRmOTY1ZjNlYWUzNzIxIGxlZ2FjeS10cnVuaworNDc4NSAyNDJkZDVlZDNiMDg1ZWVlMmY0MjY3MmJhNjUwNDk1MjIyNmEyOTllIGxlZ2FjeS10cnVuaworNDc4NiAzMmU3ZDI2OTZkNzkxYzY5ZWM5OWFiMTEyNTYxN2U4ZjRjNzhhZTI2IGxlZ2FjeS10cnVuaworNDc4NyA2NDY4ZmQwMjUxZDI5NjhlNjMxMTg2ZmE5NDZhNTA0YTYwYWZkMzZhIGxlZ2FjeS10cnVuaworNDc4OCBkOGI0YzdkYjc3YWU2YmZmOGIyNWVhMjc5ODNhYTI1MDQ2OTU1MjJkIGxlZ2FjeS10cnVuaworNDc4OSBlMTFlNmIzNTg1MzEzYWE5MTlkN2E0ZTJmODEzNDU3OTdmZmY2MzM1IGxlZ2FjeS10cnVuaworNDc5MCBiMjI0MTE3N2JjY2M2Mjc3MzMyZThhNWU5NTdmOGNiODc2YmYzNDAzIGphcgorNDc4OSA5ZTgyZGFmNzYwNWJhZDc5NzZhOWFiYzk5N2NiNWUwYWJlNDM0MDc4IGxlZ2FjeS10cnVuaworNDc5MiA3MWU2MDg3MWM2ODFjZTkxNDE5NzRlZmFjM2UwYjMzYzlmZTMyODhhIGxlZ2FjeS10cnVuaworNDc5MyA0YzJmMTQ1MjEyNWQ1OWQwNzVjNmZlN2RhZjkwMTRjYmRmMTc4ZjM2IGxlZ2FjeS10cnVuaworNDc5NCA0MTI3ODkzYTg3YWQwNWEwMjJlZTcwYjU4YWQ4MWM2MzdmYmY5ZTY1IGxlZ2FjeS10cnVuaworNDc5NSAyMWYwZDVmMThjZGFlNjEwOGY1ZmM1ZmQyNTQ1MTk4MmQ2MDE5ZjlmIGxlZ2FjeS10cnVuaworNDc5NiA2M2ZhMzg3YzAyZmViY2IwOGIwNTRhMGVlMjAzM2ViMDNhODc3MDY1IGxlZ2FjeS10cnVuaworNDc5NyA2NzBlNTBhZTM4OWQ1NGNjMzIxMDFjZmI0ZDVhZDY4ZjYwOGYwNTU2IGxlZ2FjeS10cnVuaworNDc5OCA0YjYxN2ZlZTQyN2QzNjM4Yzg3YzBkNjJkOGM5ZjUzM2IzOGI5Yjc3IGxlZ2FjeS10cnVuaworNDc5OSBlZDBhYTRhNWQxMDZiOWMyYjdiMmVkM2Q4NTBlNDg0YmQ3MDY4NDYzIGphcgorNDgwMCAyNzlkNTFhMThhZTRiNGU4ZGNmMDA3NzYwYTk3NzhkOGJmZWY4OGIzIGxlZ2FjeS10cnVuaworNDgwMSA5NTUyZWRiNGVhYmZhYzM0MWE2ZDNlNGYxMDEzZmE5NDhjMDE3NzBmIGxlZ2FjeS10cnVuaworNDgwMiBmMDlkMzI1MmEzOGIyMTNlZWVkMmM3NzZhMThiZjI3YTIyNjM4M2Y4IGxlZ2FjeS10cnVuaworNDgwMyBkMDU2ODU5OTM0NzZkNGNiNzBmNWIzNGFkZGYxMTE4MDEwZjM5ZjA2IGxlZ2FjeS10cnVuaworNDgwNCBlZDQ4NjQ2MWRlZjY3NmYwNjE5OWFjYWZiYWRiZmNjMWRlYTFhZTczIGxlZ2FjeS10cnVuaworNDgwNSBkNjVjNDg1ZTBhZDgyMzYwMDM3ZjhhYjU2YzQzODk5MWU1ZGRhZDg2IGxlZ2FjeS10cnVuaworNDgwNiBhMjA1NDkzMzc3NWIwMDE0ZDYwNWZkZTNmN2YxNGE4NWVlMzgxM2ZlIGxlZ2FjeS10cnVuaworNDgwNyA4NWZhMDJiODVkN2QxMzBhMTRhOTFkNmJjMmU1ZjVjNGU1NjAxZTAwIGxlZ2FjeS10cnVuaworNDgwOCAyNmIxYjE1ZmM4ZWMzNzU2YTU2M2U0ZTcxZTdiYmM3YTgxZWE0ZmJjIGxlZ2FjeS10cnVuaworNDgwOSA4YTg3NjUzNDNjYzBkNDU1YTA2MTg4MmU1N2NhOGExNDJkOWZiMjJjIGxlZ2FjeS10cnVuaworNDgxMCBmYmFmNTQxNjk3MTE3M2IzNjYwNmRlNGU1YzU5YTc1YmY1NjkwMmVlIGxlZ2FjeS10cnVuaworNDgxMSBkZjViNzI4YjhlYjYyZWU3OTg2MDdiYTM4NjUwYTYxM2Q4Y2VhNTgxIGxlZ2FjeS10cnVuaworNDgxMiA2YTk0MTE5ODQ0ZWIzODIwZTQ0ZmMzMzY5NDA5ZmNjOWJhYzczOTk3IGxlZ2FjeS10cnVuaworNDgxMyAxNzQwZmQ3NmZjMzMyZmJjNDc5NWUxZmM4M2ZkZGQwNzNkNTQ5MTZlIGxlZ2FjeS10cnVuaworNDgxNCA0YzQzY2JkY2Q1MjQzZDk5Y2MyNTExZTI5NGZiOWRmY2JjMjU1ZDAzIGxlZ2FjeS10cnVuaworNDgxNSA5MTZhOGZmMzZhODU0NzBiZmE2YTBjN2EwMTU2M2MwNjBmOWU2NDcyIGxlZ2FjeS10cnVuaworNDgxNiA3ZmQ3NDEyZTcxODg0OGUwZjMzMzNjMmI0NmQ2MTgyNDliOTdlMDZlIGxlZ2FjeS10cnVuaworNDgxNyBlODBhY2ZhMTNhYzAwMDQ0OTdkNmIzMWU0YTVkYTU4MjBkMmQ4NmMxIGxlZ2FjeS10cnVuaworNDgxOCA3NDdmMGI3Y2I3YmU0MzRjYjk2NWVjZDE0ZjUyYzRmOTc1ZjM2MTM0IGxlZ2FjeS10cnVuaworNDgxOSAyMWEyM2NmYzQ4NDMxYWU5MWNhMDEzZTAwZWExMWMwMTIzMzUwM2JlIGxlZ2FjeS10cnVuaworNDgyMCA5Njc0N2M3ODdhODMzYzMxOTBkM2QzYzIwMTk0YWIzMmJhOGVlYjFiIGxlZ2FjeS10cnVuaworNDgyMSA4Y2Y2M2MzMGZmYzg3N2VjMGFkOTQ2MDBjYzE0MjE5MjU2NjNhODYxIGxlZ2FjeS10cnVuaworNDgyMiA5NGJmMmYwNWRhMzE5ZTZjZTM1ZTMzZjdhYTk3YTM3Y2YyODRiM2IyIGxlZ2FjeS10cnVuaworNDgyMyA5MTVmYWJlYzY0YTMwYWQ3MzNiMTI5MDIzYTJmMDcyN2Q2M2NmMjlmIGxlZ2FjeS10cnVuaworNDgyNCA2NjNhYTA1OWUyOWZlYzY2ZjAzMzgxOThmYzMyNmQ5YmIxMDMyMGU4IGxlZ2FjeS10cnVuaworNDgyNSBiYTFiNzZjMDkwNDE0YTNlYzgwNjhiNTcxNWQ5NDZlYTEzMmU2Y2MzIGxlZ2FjeS10cnVuaworNDgyNiBlMzg2MDM1Zjg5N2RmZDkxYWM2MzU5NjI2NTRjZGYzY2I4NjE2NTQ2IGxlZ2FjeS10cnVuaworNDgyNyAwNGY2MWE1YTc2NTQwOWM0ZDUwYWY3NDIwYjkzNTc0YWIwYzcyYmNmIGxlZ2FjeS10cnVuaworNDgyOCAwYzgzNWM4MDQzMjI0Y2Y1OTA1NTMyNzQ3MTdlZTRmMjgxNzAwYzNiIGxlZ2FjeS10cnVuaworNDgyOSA1ODJiMDBmYmFiMTYxNDUyM2Y4ZDRmNDMyMzI3MDYwYmVmNDM1Mjk5IGxlZ2FjeS10cnVuaworNDgzMCAzOTc0NzhiY2EwYzRkYWMxZGMwM2UwMmQ0ZDNiNDY5ZTIwZTdjOGU5IGxlZ2FjeS10cnVuaworNDgzMSA1MWM4ODI0OTg1ZjhhNTA4NTBhZDBlZWI2ZWFkZTFhNzNiZDk2NzVkIGxlZ2FjeS10cnVuaworNDgzMiBjMzFlYWVkNzc5OGJiYTQxZjMxNGQzOGU2OTNhNzRmOWU2OGEzNWY0IGxlZ2FjeS10cnVuaworNDgzMyBkYWIzNGNiZjhkN2ZhM2Y0MmE5OTc5Zjg3ZTkyMDJiN2U4YmM1YmZlIGxlZ2FjeS10cnVuaworNDgzNCA0ZTg3ZjNhM2YzM2E4N2FiZmIwOGQ4ZDczYWU5N2Y4MDI1N2E2NDFkIGxlZ2FjeS10cnVuaworNDgzNSAxYTIwZDUwNTg3NDQ0OGJjNzAxYWJlYTE2MTU5MmNkNTQyOGQ4YjNmIGxlZ2FjeS10cnVuaworNDgzNiBjOGE4MzIxOGJhNjE4NzBhNmM3MTc4MDFmYjdlYTViNjRiZmVmZWMwIGxlZ2FjeS10cnVuaworNDgzNyBmZjNmYzMwZWQ3NjA2OWExYjNkZGVlZjBmMWY0ZDNiMzFmMDdlNTc2IGxlZ2FjeS10cnVuaworNDgzOCA2NDUwZDg4MjhkMmI5ODhkNDE0MDIwMjcxNmQ3ZTkxNTRkYmRjNGU0IGxlZ2FjeS10cnVuaworNDgzOSA0Y2M4MTM3Y2NiNTZjZmZmMzkyZjY5YzZiZDU4MzYyM2NhZTczNmNiIGxlZ2FjeS10cnVuaworNDg0MCBmOGFiOTI1ZWZkYTg4YWUwZGEwYTBlM2U1ZTcxNzgwYWM5ZDQwM2EzIGxlZ2FjeS10cnVuaworNDg0MSBjNjUzM2I4OTYyODg4N2EzMTFlOWNmMzhiOWIxZDhlZDhkOTZkMGRlIGxlZ2FjeS10cnVuaworNDg0MiBjMDlkYWJmNzA5OTZmYjlhOWY3ODY2ZjI3YjEzODUzNTY4OTkyMjI3IGxlZ2FjeS10cnVuaworNDg0MyA1MzEzYWM2ZjM0ZmRjYjAzZTY3M2MxNzYxNDBmODA3N2MxZGQ4MGI1IGxlZ2FjeS10cnVuaworNDg0NCBmOTc5ZTViZDZhMjIzMGU3OGM1MjNiZjBmOWU5OGVhMGQwOTFlYTBhIGxlZ2FjeS10cnVuaworNDg0NSA0OWJmZWYxN2IxMmI2NWZhNzZiZmIwOWNmMzRhZGE1YTVhNjhiOGNiIGxlZ2FjeS10cnVuaworNDg0NiBkZGIxMzg2MmZiYjJiZWE3NDdhNjgxN2I5YThkZGVjYTNkZDFhNWQwIGxlZ2FjeS10cnVuaworNDg0NyBlY2JiYWE1ODRmM2MxNjczOThlMDZiNDcxMjVmMjNkMzFjMzYzMDg5IGxlZ2FjeS10cnVuaworNDg0OCA5ZGM4NzVhZDA1MGM4OTk0MGUzYTU5M2FjZDY4Mjg3ZTRjNzA5MGI0IGxlZ2FjeS10cnVuaworNDg0OSBiMTU2YmY0YmU2MmYxYjZhOWM1NzEzNTJhMmQ2MTllZDc2Y2U0MmZhIGxlZ2FjeS10cnVuaworNDg1MCBmYThjZGQzY2M1NDU0MDU1MTk0M2MwMzIwOWQ1YmY0ZmRlYWE1NGRkIGxlZ2FjeS10cnVuaworNDg1MSA0MmI1Njg5YTc0MDk1ZGQ4MDkwMjY1Y2FlYjYwZTAyMzZlOGQ3YTE4IGxlZ2FjeS10cnVuaworNDg1MiAyOWNhNDVlYjNhYjc1MjNiYTc1NTc5OTk3NzQzYTk3MDhlN2IyNjBiIGxlZ2FjeS10cnVuaworNDg1MyAwNzM2YTdlYzJmMjg5ZTVkZWU5MWQwY2U4YTJmN2Y5NWJiMzkyNjllIGxlZ2FjeS10cnVuaworNDg1NCBjYWJiN2M1NzMyZWYxYTM4ZDlmNDE0NmFjNTgyNjE4MjQwYzczZGQ2IGxlZ2FjeS10cnVuaworNDg1NSA0MzhhOGMyNjVlYjlmNTRjODY3Y2VmZjdhY2QyYjkyYmM5NGIxM2M3IGxlZ2FjeS10cnVuaworNDg1NiBkMzFmNjk0YzExYTg5YjcxMTE3MDYyOTc2MzIxNjhkZmFmMzE4MDY2IGxlZ2FjeS10cnVuaworNDg1NyAxMzI1YjNlOGUzZDNjZTFmNjVmMDc2ODAyYTM4NGVhZWNhNDliZDE3IGxlZ2FjeS10cnVuaworNDg1OCBjYWI2OTk0NTM3NzVjMTkwOWJiYWM4NjBhMTkyODI2M2UwODJlODg5IGxlZ2FjeS10cnVuaworNDg1OSA3MmM3MTVjMDA0Yzg5ODYxZDUwNGJlN2VmNGNiNTBiNDY2YzQ3MjkzIGxlZ2FjeS10cnVuaworNDg2MCA3MjQ2Yjk5ZDI5NjZhMmMyYjI1NmVlNmMxZjAzNDVkYWZlYWEzMDkwIGxlZ2FjeS10cnVuaworNDg2MSAwYjYyYjUzZDQzZjg3ODZiNjU0MWEzYTgzYTc0MzJmM2U3OTVhNzRkIGxlZ2FjeS10cnVuaworNDg2MiBlMTQ5NzVjOTEwZjBjYTFhN2Q2NDgyZGJhMGEyMzA2OWZjZTc3MGRhIGxlZ2FjeS10cnVuaworNDg2MyA5YTk0MjkyYWE0YzE1YmJkZDA1OWNlMjY0MjY4NGQ5MmVkZDI2NjgyIGxlZ2FjeS10cnVuaworNDg2NCA3N2ViNjM3MTZiNGY5OGQzYTU0NjBjMGJhOGZjNTFiMmM2ZDg3MGRmIGxlZ2FjeS10cnVuaworNDg2NSA0ZmMwMzNjYjU1NDQ1YmE2ZTFhYmIyNDZhODZiNjc3Yzc5NWU5MjVmIGxlZ2FjeS10cnVuaworNDg2NiA0MDNhNTYzMTIxNGIwMjQ1MTAyYzUzMGJkZGRkODVjZDRiMmM4OTM2IGxlZ2FjeS10cnVuaworNDg2NyBkZDFhYjIwZjgyMjNiMzk4NjQzNGRiNWM1OGI2MWEwNzc2YWZiZTdlIGxlZ2FjeS10cnVuaworNDg2OCA3NWFlMTA0ZjdlNmM1MWVhMmYwNDU2YzcyZmVhMjQ5MWY0OTczY2E4IGxlZ2FjeS10cnVuaworNDg2OSA4MTBiYzE1ZTE4Zjk4M2JlZjIzNWJlMTZhM2IzNWY2ZjEyMDU3YTYxIGxlZ2FjeS10cnVuaworNDg3MCA2MTQyNTE4MzZjZWIyMjczMDk2MjY1OTk1YjgyYjVmYTMzZmYyNjAzIGxlZ2FjeS10cnVuaworNDg3MSBlZThlOTFhMTc3NDVhYmI3Y2ZhMTQyM2M3NWYyODY2YzdjOTEyOTllIGxlZ2FjeS10cnVuaworNDg3MiA3NWFhNTI0NmIyZjZmM2QxZDJmYjA3NWRkMTIzOTlhZTg0MzI2NzM4IGxlZ2FjeS10cnVuaworNDg3MyA5N2U1NzA1MGUyNzYwY2ZhMjcyZjUyZGMwYjJkMDg2ZWI1ODhkZDk4IGxlZ2FjeS10cnVuaworNDg3NCAyMmIxYWIwZTY0NzM1ZGI3Zjg4ODM0YTFlZDRiOTk0YWRjZWQwNmNlIGxlZ2FjeS10cnVuaworNDg3NSA0YTQ2MmFhY2MxZTk5MTQ1YjgwM2NiZjhiMzBhODU1NjU3MWY3MmIyIGxlZ2FjeS10cnVuaworNDg3NiA2YmVlZjE3ODcxZjk4MmQzY2ZiNTRjMGJiMzlkN2ExZTM3YjE1ZWFlIGxlZ2FjeS10cnVuaworNDg3NyA2ZWRhNjQyZjE5ZDAzNzgwYmYwMjkwNzJmYTdlOTE4Yjg1MjI5NDRjIGxlZ2FjeS10cnVuaworNDg3OCBmNGY3MWViZWE1M2YxNDU0MjNlMTBhMzVmZmI0YTQzOTZhMDE4M2EwIGxlZ2FjeS10cnVuaworNDg3OSA3M2VlZmY0ZDQzZjg0YWQ3NmQyYmIyZjBlMGM0ZmI5NDA3MGNiYjE5IGxlZ2FjeS10cnVuaworNDg4MCAwMGY0ZTQwMDU3NWE5NzM0MGU2MDkxMjE2NzY4ZDFkYmE1NGU1ZmQyIGxlZ2FjeS10cnVuaworNDg4MSBlY2NmNDkzN2YxZGM5YWQzNWFlZmVlNTBkNDdmM2E0YmEyZmRmNmU5IGxlZ2FjeS10cnVuaworNDg4MiA5YmYxODk5NmVlZDhjOWRmNmIzZjRlYWQwMGQ1YjQyZGVkNDk5YTE5IGxlZ2FjeS10cnVuaworNDg4MyBiZDNhZDY2MzRlNzY0ODIwNjFmOWZkNGZjZTU5MTE0NTE4ZjliNzJiIGxlZ2FjeS10cnVuaworNDg4NCA3OTI0Yjc4MTlkOGY5NmM3MmExOGFlOGY5OTE3YTU3ZWM2NWJjZDE0IGxlZ2FjeS10cnVuaworNDg4NSBlZmIwNjg1YTZjOTFjYmU2NTg5YTkzNjRjMGM5YWYxNTZlMjYyY2UyIGxlZ2FjeS10cnVuaworNDg4NiBkMzlhYWI2YzEzMGQ0NWRiODk0ODg4NWYzZDZmMjljNjBkMWU3MDNlIGxlZ2FjeS10cnVuaworNDg4NyBjYmI0MDcyZDUzOGJlN2YwNDJhZWY4NWFmZTAwNmJlYjkyYWJmNjY5IGxlZ2FjeS10cnVuaworNDg4OCA0NDViZWE4Y2VhYjFkMDcwODNkM2U0YTY4ZDhiM2NkMTVmM2E2YzhkIGxlZ2FjeS10cnVuaworNDg4OSA2Y2JkMjgzMGI1YTIzOGNmNTgyODQwODU3NjY2NDYyMWFiZmJkYjRlIGxlZ2FjeS10cnVuaworNDg5MCA1YmMzNDFjNDA3MWNkMDkzOTc2ZGE4MDQ3ZWIyOGMxNDMzMGNmN2I1IGxlZ2FjeS10cnVuaworNDg5MSAxZThhZWJhYjg3NGFlMTI1ZTdmZDQ1Yjg2ZDBkNjUzN2E3MGEwZTAwIGxlZ2FjeS10cnVuaworNDg5MiBmYTk4ZGRhMDc4NzdmMDg4ZmIxZWQ3NTY0YmZhYzI2MGViZTkwYTczIGxlZ2FjeS10cnVuaworNDg5MyA2MmViYmNmZWE4MjcyYjg0ZDYzNTk4ZDc2Zjc2NWNkZjc4YjdiZTFkIGxlZ2FjeS10cnVuaworNDg5NCAxZjU5ZjJhMTMzMTI5NmVkZjAxMjEwNTk3MDE0MjYxOWVjMzM2MmZmIGxlZ2FjeS10cnVuaworNDg5NSBjMWQyNzA0M2MyMmY0NWI2NDE4ZjY0N2RhY2I1YTY0MDI1NzgzMTJmIGxlZ2FjeS10cnVuaworNDg5NiBkNTc3ZDc0OTkxOGQxODNkZDYzMmQxNzM3MDllNjAzMGMyMjk5Mzg1IGxlZ2FjeS10cnVuaworNDg5NyAyZjg5ZWMxYTljMzhjN2Q3MjE5MmM3NGYwNTAwODljODVhMjA4YTMzIGxlZ2FjeS10cnVuaworNDg5OCBhNWU5NWY5ZGU5MDAwZTU3ODgyY2JiM2FiODdjODZjZDdlN2QwMjE5IGxlZ2FjeS10cnVuaworNDg5OSAyZGNmNzUzODM0N2E5ZDY4ZjJlOGM5NTk4YWRjYTcyNDMxNTlhYmRjIGxlZ2FjeS10cnVuaworNDkwMCA5OGMxZDg0MTAxYTUwODEzYjQ1YTFmMDFkMTAwNWUzNmI2YTQ3YzU3IGxlZ2FjeS10cnVuaworNDkwMSBmNjE3MTZhZDBiN2Y1MWYzMWMwMjNmMzRlNWFlNDJhODNkOTczMTI4IGxlZ2FjeS10cnVuaworNDkwMiA2ZjEyMTFiMmUwNzc5YjExMDYyYjliMmNjZTY5MGYyNDQ1MDc1M2ZlIGxlZ2FjeS10cnVuaworNDkwMyA3MzQ5OWE2NjdlNzg0ZWRhNzQ4MTM2ODYxZmQ0YjBmNzdhODEzZjE2IGxlZ2FjeS10cnVuaworNDkwNCAyYzY1NjVmMWI3Zjg2NDQ1OGRkNTNhMjlmYjE4OGJlZDI1YzBmZWFmIGxlZ2FjeS10cnVuaworNDkwNSA4ZWVlY2QyMzNkNTY5YmJhOWY4YzIzMDk3ZGRjMjU2OTdmMzI4ZWVjIGxlZ2FjeS10cnVuaworNDkwNiA5NGE2NDM2NjU1ZTAzZmI5NzUzODE0M2VhODZmZTdlYzcwNDQwNjdiIGxlZ2FjeS10cnVuaworNDkwNyA0ODBiMjUxYTA0NjgzNWIxY2I0NTg5MzFlNTFiNGFhMmQwZDY1N2JiIGxlZ2FjeS10cnVuaworNDkwOCA5ZWZkNDA4ZmM5ZjZiYjcyOTM2YmRhNmI2Y2NjNjQxMGU2Y2RhYzA1IGxlZ2FjeS10cnVuaworNDkwOSBjZGQzYTcyMWI0MGUzZThlOTU3NzUzOWQ2NDg4ZThjYmUzNjU1MjVjIGxlZ2FjeS10cnVuaworNDkxMCA4OTlkMjA4NzQ1NjZiOTg2ZDIxNmQxNGZlMzYwOTIxMTA0YzRiZjIzIGxlZ2FjeS10cnVuaworNDkxMSBiNDJhYjc3ZjIyMjYwMzE2NjNjMzEyOTBhNWFhZDM1YWJhYmU5Mzc0IGxlZ2FjeS10cnVuaworNDkxMiBiYzAzMjI1YTQ0OTNmNWRiYTZiM2Y2ZTZhNGZhOTFiMGRjY2Q2YWY3IGxlZ2FjeS10cnVuaworNDkxMyBlMWE3YmRmYWZlYzkzMjM4ODUyNzg4OWRiZjExY2NjZjllZmZhNjFiIGxlZ2FjeS10cnVuaworNDkxNCA2NWJjYjQxODJjMWEzMjA3OTc5ZWViYTI5ZjQwZjRlNDFlMWQ5YzcwIGxlZ2FjeS10cnVuaworNDkxNSBiYWM5NmQ1YzQ2M2Y0NTJmZmE3YTQ0ZjdhZDViZGYwMTNiMGRlYzJjIGxlZ2FjeS10cnVuaworNDkxNiAxYzI5ZjZiZGQ4OThmNmUyNGU3YmY1NTMzYzZiZjM0NTQ5ZWJiODhiIGxlZ2FjeS10cnVuaworNDkxNyBkOTQwNDViZDRhMDQxMmI5YTY5MDBhNDBkNzk2NmQ5NzJjNTJhNDg4IGxlZ2FjeS10cnVuaworNDkxOCBlOWU4NmFlNWY1YTRhODdmMWE0ZGRiMDYyNTgxNjA0MTM3ZDAyMWRkIGxlZ2FjeS10cnVuaworNDkxOSBlNzY0Yjc4YTcwNGY1MThmMWE4MzQyZmRhMWI4ZjJjNDM1YmZjYjIyIGxlZ2FjeS10cnVuaworNDkyMCBlNzI2ZjkwZDJhOWZmMjQ5NTlkYTExOWYyMjU4NTkyNTU1NTdkNmFmIGxlZ2FjeS10cnVuaworNDkyMSAxZjQxNDFhYWZlMzYxOTc2OWE3YmU0ZWFmMjUzZmM0ZGM2YTI2YzZkIGxlZ2FjeS10cnVuaworNDkyMyAzMjJmYzU5NmYxYzQzNzkxMzAwZTgwY2FmZGFhOWExNDU1NjE2YWM5IGxlZ2FjeS10cnVuaworNDkyNCA0ZjdjNjczZGE5MThiNTZhZDFiYTU1ZTZmNGZjZDg0M2YzZWEyNTdiIGxlZ2FjeS10cnVuaworNDkyNSAzZDY3MzRhYjZjZDQwMmRkMDIxZTZkNGEzZDg3OWVjMWYzN2U4M2I4IGxlZ2FjeS10cnVuaworNDkyNiA4ZTM4Y2QwYTNhMzE1ZmUxYmQ3YThlM2M5YzE2ZjUwMjBlMjcyODY0IGxlZ2FjeS10cnVuaworNDkyNyAwZTFmOWExNGZiZDQ5NWE5M2FiNWYzMTJlMjFiZTYwMDM2MzkyZTNmIGxlZ2FjeS10cnVuaworNDkyOCA1YmIzOWE0MmM3MjkxMjI3NGVmYTkxMWE4ZjJiYWIwYmNmY2NjMmFhIGxlZ2FjeS10cnVuaworNDkyOSBkZDI4NDVkMDZlYjM3YWUyOTQwOGZlOGJmZTA3ODA1ZDBiMmU2NmI1IGxlZ2FjeS10cnVuaworNDkzMCA1M2Y5MmE0NzNjNmYxMGE2ZjFjMDYwN2M2MWQ2NDI4MTBjZDJiNjk1IGxlZ2FjeS10cnVuaworNDkzMSBkZTRkYzE2NWJmYjZhMTE1Mjk5YzlhYTFjOWI5YjFlMjRkMTlmMjllIGxlZ2FjeS10cnVuaworNDkzMiAzMDIwNWQ2MzRhMTViNTI4MTI2YWViZGFjYWNmNTZhMzZlZjE2MmViIGxlZ2FjeS10cnVuaworNDkzMyA3MDg5ZDQ4NDM0MDcyZWNkZjQ3OWIwNmU5M2MyN2MwNTdjNzIxYTQ3IGxlZ2FjeS10cnVuaworNDkzNCAxMWI5MzdlYTAwMjY0YTViMWY5M2Q1MTdiNWE1ZDc4YmQyMzE1MTdjIGxlZ2FjeS10cnVuaworNDkzNSA2NDg0MmUyMDZiNzZjYjE1YTlhMDAzMjY5MDcxODAwZmY2NTY1Njg0IGxlZ2FjeS10cnVuaworNDkzNiBhMTdkYTEzMjJjNTZkNTEwYjQyZDYwN2FjMzczN2QxMTVkYTk5ODkwIGxlZ2FjeS10cnVuaworNDkzNyBiZDQ3NjU1NWJlNDJhN2FkNzk5ZmE2ZTI1MjU2OWRmZTY1NWQ2NzQ0IGxlZ2FjeS10cnVuaworNDkzOCAyMmNkMjJiZjQzODRlNGQ0NmJiMDU3ZTM3NGNkNGQ2YzdlZTEwZWViIGxlZ2FjeS10cnVuaworNDkzOSAwNTEwYjk0ODE3OGUwYmE3MDZiNWE0ZTU5NWMxNGQ1OTM1NGJlZjg0IGxlZ2FjeS10cnVuaworNDk0MCA1MTdiY2Q0ODIzYWI3ODZjNzRiMmZiMTM3MTBhZmRmNWZmODUwYzZiIGxlZ2FjeS10cnVuaworNDk0MSAyYTU3NGQ0YjBkNThjMmYwZTM4MmFkYTQ2YTQwMzQ0YjY1NTVhMjZjIGxlZ2FjeS10cnVuaworNDk0MiBkNjMwYzZkMzY4MzlhZDg4NDI2YWU2N2IwZmFjNWJkMzMxMWU1ZmUxIGxlZ2FjeS10cnVuaworNDk0MyBmZTM3ZWQyY2Y3YTVjNTczYmZmYjgyMTRmMDMwZDQ4NjQzNmNiMTdmIGxlZ2FjeS10cnVuaworNDk0NCBlYjE0ZjMyYTk3Y2RjNWM1NDllNzJlYjFkOWEzNDk4OGMwMjA5YzZkIGxlZ2FjeS10cnVuaworNDk0NSA4MDcyOWFmZjkwNTdjMGZmMTdmYWE1YWM3MGRjM2FlNjc5MTllMWFkIGxlZ2FjeS10cnVuaworNDk0NiBjZDY0YTMyYWI4MDMyY2Y3NmJjYjZmZTFiY2M0ODZlOTgwYzg5YTg5IGxlZ2FjeS10cnVuaworNDk0NyA0NDE4ZTg1NDdlZmNmMTUwZjcwMWJhYzk0OTg4MGNmMDFlN2Q2MGExIGxlZ2FjeS10cnVuaworNDk0OCBmYjhlMDhlYzg4ZGQ1NjA2MmMxYTkzNTYwMjFhZTgxNWFiZDE1NmI2IGxlZ2FjeS10cnVuaworNDk0OSA0YjU3NGRiNWRiMTNmMTc1NzRiNjVjNDY5MGIwYmMwYTNiMmMyOWNiIGxlZ2FjeS10cnVuaworNDk1MCBkOTQ4MTM1NGZkYzM2MTk5YmUxYmEzYmU4MzJmZTgzNjkxMDU0MGRkIGxlZ2FjeS10cnVuaworNDk1MSA1ZmM2MjU2MmU2ZWNlMTcwOWRmM2M3OTQ2MTU0Zjc3ZTFlZDcyZDU3IGxlZ2FjeS10cnVuaworNDk1MiA3MThjNjVkMGUxMmRiNDg2NjFhZjc3YjU3NmNjZDFjMzY5MjJjNmYzIGxlZ2FjeS10cnVuaworNDk1MyA2MGU1YWFjZWIzZWIzNmNhMDRkMjRiMTMwM2Q5MjM2MGExOGY1MDNlIGxlZ2FjeS10cnVuaworNDk1NCAxNWE4NjY4N2Y4MzgwNzExNDU3YjMyYjYwYjZjOTI0YjNiMzE4MTJhIGxlZ2FjeS10cnVuaworNDk1NSBkZGY2MGJjN2VkMzAxNWY3Mzc4OTJhZDk0NGMwNjkzNzQ2YmJhOGM2IGxlZ2FjeS10cnVuaworNDk1NiBjMjIxOTU3YTYyNmQ3ZWM1ZmUyNjNlZjg3OGFjNTk3ZTU2ZjE4MWE2IGxlZ2FjeS10cnVuaworNDk1NyBmMjE3YzFiMjdmODY3NmE1ZDRiNjUzYTdjY2JjMjc0Yjk5MzE1ZTM2IGxlZ2FjeS10cnVuaworNDk1OCBiNWNlODAxMTQ0MTYxNTg3NWM0OTQzOGU3OWQwZDZkMDA4NGNhMmQyIGxlZ2FjeS10cnVuaworNDk1OSBkNTk3ODIzOGUzYmE2ZjdjYzc3MzIwMmYyMTNhNzM5NWJiNjNkNDAwIGxlZ2FjeS10cnVuaworNDk2MCA0ZGQxYWYwZGRlZjA4ZGIyNmUyNjI4NGMzMTY5NWM0ZTQ3M2Y3YzE1IGxlZ2FjeS10cnVuaworNDk2MSA0MjU4MzViODgwOTllODIyYjk4ZjA5MmFhYmU1MWJhNDVjOWVjY2ViIGxlZ2FjeS10cnVuaworNDk2MiBlOTIwZTZjMjcyMDgyMWMxYzI2ZWFmODYwMjg2ZGU3ZjcxMGQ0MGYyIGxlZ2FjeS10cnVuaworNDk2MyA5ZDZlOTdkNjY2NzA4ZDQzN2FiZTI4NWM5MWY0ODI2NTk2OTdhMWU3IGxlZ2FjeS10cnVuaworNDk2NCA4YWM0YzBlMWNlMTdhZDI5YmY3YWM5YTI5MWQ2ZDY2N2RhMzFiY2I1IGxlZ2FjeS10cnVuaworNDk2NSA0N2NjNTNhMWZkNDdiM2Q0ZWVjNDhlMzkyYTg5Mjc2NmE1MDI4NzRhIGxlZ2FjeS10cnVuaworNDk2NiBjNmU0ODI4NzBlYzMwYWQwYzQzYzM5ODNlMTBmMzk5NmRiY2QyNGFjIGxlZ2FjeS10cnVuaworNDk2NyBjMjlhZGIzMzg5NjRjYjdmYWMwOTRlZTYwOTZkOTk1YTMwYzQ5NGNlIGxlZ2FjeS10cnVuaworNDk2OCBjNmE2ZTJiMjBiZDgzZGQzOGE4ZTIyZTcxNjU0ZjVlN2I4NTA2ZjU2IGxlZ2FjeS10cnVuaworNDk2OSBjNmYyZDUxMjUxZDA3NWQ3OGRlYTM3OWI1NGJlMmUxYTNjNmZiMjljIGxlZ2FjeS10cnVuaworNDk3MCA1NmUyNTExNGQ0Mzg0NDM1OWFlMDY0YzkzM2U3ODY4M2I4MTFlZGYxIGxlZ2FjeS10cnVuaworNDk3MSBmNGRjNTFmNzhhNTZkYzNmYmIxNDFkNmRiZGViNWNjYjA0MzYxN2NkIGxlZ2FjeS10cnVuaworNDk3MiAxY2U5ZTY3YzY4NTZlOGZjNzhiYTE3NTU2NTFlYjQ5OWU1YTNjMGI5IGxlZ2FjeS10cnVuaworNDk3MyBkMGI5ODEyY2Q5Y2Y0MDUxM2FjOGY3MzlmYjdmYjJmYjBkZjk5YzVhIGxlZ2FjeS10cnVuaworNDk3NCAyZjQ1NTYyN2MxZjBlZDVhZmIyODc3NmQ0OWI1YjdiN2JmZmRkZTcyIGxlZ2FjeS10cnVuaworNDk3NSA1NTYyMTk3MDllOTk4NWJjZmUxMjBlYWE2MDY3NDMzMjNiNWZkOTQ5IGxlZ2FjeS10cnVuaworNDk3NiA0OTVhZmM4YWQ3Yjk2OWYxNGU2YzBjMjViMjRmNWJmZWU4MTc4ZjgxIGxlZ2FjeS10cnVuaworNDk3NyA4NDdkMjQ4NDFjODU2OTlkMTUxODJjNTMzOWRiNTVkM2Q2ZGIxMzIyIGxlZ2FjeS10cnVuaworNDk3OCBlN2Q0ODBjZjE2YmE2ZGY4MTBhZTY5MTA2OTc2MDBiN2Y2NmNjMjc3IGxlZ2FjeS10cnVuaworNDk3OSA5ZTQwMTJiMTc1N2ViNGI2YTZjYmQ5M2EzMmIxZjc3NTc1ZTQ0NTE1IGxlZ2FjeS10cnVuaworNDk4MCA4YjhhMzdiN2NiYTQzOTliOTg5YzA1MjlhYzBkNDI0MTYxYTBkMWRlIGxlZ2FjeS10cnVuaworNDk4MSA2MDAxNDQ4ZmFiODkwMzUwYmVhODNjNjJhYTIzODY1MWQ1ZDFlZWZjIGxlZ2FjeS10cnVuaworNDk4MiAxNmVhMTUxYWVlYzNhNGIwODZiOTNlOTQ3ZDYzMDViMTFkMGE1N2RhIGxlZ2FjeS10cnVuaworNDk4MyBkMTEyM2IxMGNmMjM3MmNjNGUzZTVhNTZmZTljMGNmNjI4YzdmZGU0IGxlZ2FjeS10cnVuaworNDk4NCA4MTVkZmFhNmE3Nzg3NzcyMDYzMzRhN2Q3Y2E3YjE4NjQxY2IxYzI1IGxlZ2FjeS10cnVuaworNDk4NSBhZTJiMDMyNDQ1Zjk5YzMzYjFmNzdiMmIyMjM2OGQzNWIyYjQzMDY0IGxlZ2FjeS10cnVuaworNDk4NiAxNmVhNTdjMzhjNGY3NDFmMzE2OTZhM2M5M2QzNTZhYjZhOWUwYzhkIGxlZ2FjeS10cnVuaworNDk4NyAxYTVlN2RhNDA0YzNkYTNiM2NjNWY1ZmFhNTY3NzY4MzE0MGE1OTZiIGxlZ2FjeS10cnVuaworNDk4OCBlMzliYjI0MGIxYjNhN2E4NDQ1ZDAwMWViYmJkNDYxNmUxYzBlZjlhIGxlZ2FjeS10cnVuaworNDk4OSA5ZTVhMDk4NDE3ODE5NThjMjg4M2RiZmNjYTY1ZWU2OGZjYzk5MzY4IGxlZ2FjeS10cnVuaworNDk5MCBlNTA2ZWM0ZmIyYjEwZDQwMGVlN2Y2MzhmNjlmNzliNTJjNmZhM2JmIGxlZ2FjeS10cnVuaworNDk5MSA3M2QxOTNlYWE5MDBlYTQzOGU4NDUyOThmZDc3Njg0YjZhNDc0NTI0IGxlZ2FjeS10cnVuaworNDk5MiA4NzUxNzNmM2YzMWNiZDIzNDZjYjQ3NzkxM2FlZTc1ZTkyNTg4OWVmIGxlZ2FjeS10cnVuaworNDk5MyBhMTRmYzJkMDRjMDYyNWE4NjVmZmI0M2JkOGM1NDQ5NDVjOTUwOWUxIGxlZ2FjeS10cnVuaworNDk5NCA2ZmNkMGIwMjJmYTc3YmJlNjJkZjdmNzk1MTQ3N2JmZWQyYTJiZjJjIGxlZ2FjeS10cnVuaworNDk5NSA0ZGYwMGIyOTQ3N2I3ZjdiMjY5NzliOWVkM2ExYmY3N2ZiODEyYjdkIGxlZ2FjeS10cnVuaworNDk5NiA1MzRhOTdjNDAwY2M3ZDYwYzUzNWNmZDI0ZTU0ODQwMWYzMWFlNmM4IGxlZ2FjeS10cnVuaworNDk5NyBkN2FlNWZiMWQyNTUwOTgxNDk3ODFjMDFmNDhmZTk1OTc1MDY0Y2I2IGxlZ2FjeS10cnVuaworNDk5OCBiNzJjY2Y1YjdkYmM0N2ZjOGQxMTY5ZGEzZGRhMmNhNzMxMWY3OWJhIGxlZ2FjeS10cnVuaworNDk5OSA0OWRmMTU3NmZiNTRlOTJmZjFjYmExMGE1MmNlNTE4ZDNmNTZkOTZmIGxlZ2FjeS10cnVuaworNTAwMCAxYTQ0OGRkODRlZGMyZTlmM2QyMTQ4Y2EzOWRlNmNhODI1ZWI4NmE3IGxlZ2FjeS10cnVuaworNTAwMiBhYWJiZmI2MWUzODg4NGI2YTBjNGMzMTllZmE2MjdkNGVhYmFmNmRjIGxlZ2FjeS10cnVuaworNTAwNCA5Y2M3NzVmZDZlODRjNWYzMzg1YmVhOTBhMjQ3ZTc5ODFiYWI5MGZhIGxlZ2FjeS10cnVuaworNTAwNSA1NTM2ZmNiYWU4MGFkN2IwMTdkMzM4YThmZTIwYTE1NDAwYjIyNWQzIGxlZ2FjeS10cnVuaworNTAwNiAzMjgxYTkzMWExZDlkYzk3N2JhMTNjNTAxYWY0MGQ5MmFlNGE1YWU3IGxlZ2FjeS10cnVuaworNTAwOCAyY2FjNmM1MDY2ZGE1MDk1OThhYjA2ZWUyOWU5MGRmNjliZmZhNzM5IGxlZ2FjeS10cnVuaworNTAwOSA0MTk2MDAwNzg5YmM1ZTI0MjZlMDM4YTc0ZTUyMTIwYjU2ZjU5MGJkIGxlZ2FjeS10cnVuaworNTAxMCAwZjZmZjQ1YmQ4MTY3ODc2YjdjM2U0NTNiNmUyNTYxZTc2ODYzZTFhIGxlZ2FjeS10cnVuaworNTAxMSBjNTVkZGRiZmNmN2NlOGViNmFmYmY5N2NmNGZkNTk4ODk1MWY0OWYzIGxlZ2FjeS10cnVuaworNTAxMiA3ZDcwMjA5ZjM1NWQyMGVjMDFkYmM3M2EwMmZiMjljZTkyM2YyMTk4IGxlZ2FjeS10cnVuaworNTAxMyBmMzBiYzQ4YzQxN2EyMWQxY2MzYjZlNjZmOTczOWM5NWYzODAyODNjIGxlZ2FjeS10cnVuaworNTAxNCBmNGQyNmEwZTI5NzUxNTFhNmZlZWQwMGRiYWVkM2MyMzUwZjA0NTI1IGxlZ2FjeS10cnVuaworNTAxNSBiMTgxZGZmMjFiMGI4ZTk5Y2YyYzk0NTc5ODkwZDY4MTNhNTFiZTViIGxlZ2FjeS10cnVuaworNTAxNiBmOWIwNzkxNWEwNjE3ZGEwYWU0ZmIwZTliYTU5MzYxYzJjYzQyZGFjIGxlZ2FjeS10cnVuaworNTAxOCAyYWE2YjVhZDQ1MjA0ZTA3MWRiMWQ0ZjdjMWUyODJhYmFiZTU5ZTNhIGxlZ2FjeS10cnVuaworNTAxOSAzOGYzMjI1ZWZmMzFiZGQzNWJjNjI3MDg4ZmU3MmJhMGZjZjUwZDBiIGxlZ2FjeS10cnVuaworNTAyMSAzZjhjOGI5MDE1OGRmZDMyZmJjNDhjYWI0MjkxZjYzYjM2ZGZkZTI0IGxlZ2FjeS10cnVuaworNTAyMiA3ODdiNGRkNmY1ZjNlNmMyMGUxMmQxNzk0YzEwNjllYmI0NGRhNjc5IGxlZ2FjeS10cnVuaworNTAyMyBiMDkyZDkzNmM4NzVlNjZmMTc0ZGQxYWNhNzYxMDFlMmQ2OTliYTZkIGxlZ2FjeS10cnVuaworNTAyNCAzODI4MjA2YzJkYzBjNjA5ZTY0YWI2YzI5ODNkNzlkOTk3NDUxZWNhIGxlZ2FjeS10cnVuaworNTAyNSA4NWMwODE5NjYyYjdiNDliZGRjZTQ0NTk3MWM2ODIwYWYyOGEzYjQ4IGxlZ2FjeS10cnVuaworNTAyNiA3ZmJmZjUyZGIwODc3NGRmOTRkMTQ5NmE0ZWVmZDBmMzAwYjYyYjk1IGxlZ2FjeS10cnVuaworNTAyNyA5MTI4MTNkNTczYjQyZmZhMjIzYTk1NzY2YzhmMzcxZDQ0OWFkYTc0IGxlZ2FjeS10cnVuaworNTAyOCA5MTljNTNhMzVlZmFlYWQzZTlkZjhlMDkzY2I1ZDEyNzZjNzNhMzZkIGxlZ2FjeS10cnVuaworNTAyOSBiNTk2M2M0YjYzOWFkMTQ5NzE3MTM2YjZmMzc3YWQzMGU3MjQxZTJlIGxlZ2FjeS10cnVuaworNTAzMCAyYzYxNzg2MzI3Y2ZmMDU0ZDM3ZDhiOTg4N2UwZThhNDBmNjcxZmY3IGxlZ2FjeS10cnVuaworNTAzMSA3YTM3MzM3MzI5MDFjMTE5ZTVmNWE2OTA5OGZmMTYxMjYzYzY0ZWRkIGxlZ2FjeS10cnVuaworNTAzMiA4YmU0MDAyYjUwODY3YzE4N2YzYmQwZTdmY2UyOWRlNTIyNWVlYzBiIGxlZ2FjeS10cnVuaworNTAzMyAxODA3ODY0YTc1ZjQ3MTQzY2IzMGM0ODc1OGRkYjY1MGRlYjEzZGU0IGxlZ2FjeS10cnVuaworNTAzNCBhYzEzY2FhNzllM2NhNjM0Mjg1NWUxMDNiZDdlNDllNGFmMGZmM2M4IGxlZ2FjeS10cnVuaworNTAzNSAwYmFlYjc0NmE4NTQwMzI5Yzc0MTI1MWUzNzA0YzAxMmMwNTYzMDRlIGxlZ2FjeS10cnVuaworNTAzNiBmMGI3ODcyZGE2ODkxYzA1ZDY3YmE4ZmJkNDRjYWM0ZTkwZWU3Y2MzIGxlZ2FjeS10cnVuaworNTAzNyA5Njc3ZWIxMDVmYWU4MjRkYjZjMDg3Y2U2MDQ3MGUyMzRlZTMyMjFjIGxlZ2FjeS10cnVuaworNTAzOCBmNDdiYzU1NTQ0MTg1YTVjMDliNjMzNzQzNDUxOWMxNzAzMDM2NDA2IGxlZ2FjeS10cnVuaworNTAzOSA0OThkYWQ4MDQ1ZDM0Yzg2YmQ2NWVkYjYzYjdlYTU2Y2IzOTQ3MTViIGxlZ2FjeS10cnVuaworNTA0MCAwYWMyN2ZmZDA1Nzk5YzNmMWRkODY3YmVjZDUxODFiODlhNjFjNzlhIGxlZ2FjeS10cnVuaworNTA0MiBiYzRiM2ZkYTZhODA3OGRjNjM3N2ZhYWM5ZmQwYjAyZThhM2I0NTU4IGxlZ2FjeS10cnVuaworNTA0MyA5MWJjOTA3YjFlNjNjZjA4MmY0MzQ3MTBlZmQyOGQ3ZTc4MzIxMzMwIGxlZ2FjeS10cnVuaworNTA0NCA0ZDI4YjY1NWI3Mjg3MTVlNDJiM2EwYmE4MWRjZjg1ZTkxNTRkM2NiIGxlZ2FjeS10cnVuaworNTA0NSAzNzcwZTQzNDc4MDM4NWVmOTI2ODU0NmQ4ZDg2N2M2ZDE0ZGVhNzU4IGxlZ2FjeS10cnVuaworNTA0NiA3OTE0OTE1NzI5ZTNkNTIxYjcxM2Y4MjBhZmFlNjA0NWU2NmVhYTc0IGxlZ2FjeS10cnVuaworNTA0NyA0YjZjMDc2MmQ2NTliNGQ2MWU3YzI5ZGM1YmMzMTMzODE1Njk4NmI5IGxlZ2FjeS10cnVuaworNTA0OCA3MDQyYWVlNjQwOWVmYzc4MjBmZDNkMThmYTYwNmJiMGRlNDc5MzQ1IGxlZ2FjeS10cnVuaworNTA0OSBhZTEzMWI4YjRlMzE5ZGJmYzEzZDg3MzliOTNmNTJlY2UyOTAxZGQxIGxlZ2FjeS10cnVuaworNTA1MCBkNjk5NTRlMWY1ZDQxOGY0ZmRmMGVkMjNmNTEyYjVmYjU5OGFkYjRlIGxlZ2FjeS10cnVuaworNTA1MyBiYmJmMTc2NDBjNmZhMTVjYmM1OTYzYzc1ODE5MDI1YWYzZWYzZDE2IGxlZ2FjeS10cnVuaworNTA1NCBkNWQyN2RhZDdmZWFmNWQ2ZjUzOWFiZTMwM2EwOTUwOTQ2ZTk0ZGU5IGxlZ2FjeS10cnVuaworNTA1NSA1ZDA5MzgzNTBhZThlOGQ4N2NjODc2MWZlOGFiZDM3ZjY0YjMxNDc3IGxlZ2FjeS10cnVuaworNTA1NiAyYTNlNDg5NzIyNjEyZjkzMDVjMTllNTliYjc1ODI3OWY4NTdjNzdiIGxlZ2FjeS10cnVuaworNTA1NyA3NjNlYjQ3OTc1ZGQzOTdlOTM2ZTQ3MmY3YjA5ZjUzY2M5ZTE3YTc4IGxlZ2FjeS10cnVuaworNTA1OCA4ZGY1NzRhNjU1YWQ2YzNjZDViODNlMzQ4ZDg5YTMzOWU4NjBmMjJlIGxlZ2FjeS10cnVuaworNTA1OSBjZTlhNzUwN2UxZWZlYjcxMDM1NmNhOGU1NWY4ZWNiYzFjNjQ0ODJmIGxlZ2FjeS10cnVuaworNTA1OSAwNjVlMzFjZjU4NjJlMjc1MjFjZjU3MjViMDAzYWVkMjExZjA5MWIyIGxlZ2FjeS10cnVuaworNTA2MSAzMTc3NzYyMmFlOTMxNTdhMjAxMDgxMjkxNDlhZWZjZWZlMmM4ZWRiIGxlZ2FjeS10cnVuaworNTA2MiBjZDVhOTZmNjIzOWJkZTQ1MmEyMGY3NzEwYmY3YTRiYWNkOTYyYzFkIGxlZ2FjeS10cnVuaworNTA2MyBiMjgxYzNjODYzY2NhZTRlZGJkMWM2OTU4ZjlkMzNhYTcwM2RmNzMwIGxlZ2FjeS10cnVuaworNTA2NCBiZGI2M2E3OTc1NTU1NDc4NDE5MjQwMmFmZmNiY2U0MzdhNzExNGJhIGxlZ2FjeS10cnVuaworNTA2NSA1ODhjZDQzNDNlZWQxZmMyNzM2MDlmNzA0MTFhMDNjODRjNjU1ZmI4IGxlZ2FjeS10cnVuaworNTA2NiAzNTIzMzY0MDQ3OWIyZWJjOGJiMmQ4M2RkN2M1NDM0OTJmNzc2ZTU0IGxlZ2FjeS10cnVuaworNTA2NyBiZWUyYWVkNDE2ZDYyNDQyN2FkMGFmOGNhM2MzNmYyMWRhMWNmNTFhIGxlZ2FjeS10cnVuaworNTA2OCA0MDg0ZWNmMjc2Y2YwZjVlNDZjODgyMmYwNmFlNDAzNmI2MmMxNTUyIGxlZ2FjeS10cnVuaworNTA2OSBjNTJiNWM5YmU3ZTIxN2Y0MjQyMjFmOGUyNTljOTBjOWY1N2ExOTM4IGxlZ2FjeS10cnVuaworNTA3MCAyOWI5MGE4NmFjOTZkOGM4OGMzM2YyY2RlMjU1MDdhY2JjMmRjMTg5IGxlZ2FjeS10cnVuaworNTA3MSAxN2M5MjVmMDA2MGI4YzcxOTY1OWViNjBiZDBlODc2MGNmOGUxYmQzIGxlZ2FjeS10cnVuaworNTA3MiAxYzgxNDc4M2VmYzE4NTAwYTMwMjJmZjU3YTM3ZWY3ZTVhNjQ0Yjg0IGxlZ2FjeS10cnVuaworNTA3MyBlZWFjMTcwZjVmMmZmODI1OGM2OWQ4ODIzN2E1YTdmYzhjNmU5ODFlIGxlZ2FjeS10cnVuaworNTA3NCA3ZWY3Mjg3M2U0ZDY4NzQ3ZjUyNmM3ODg5OGE4OWVlZDM5OGNiZmNkIGxlZ2FjeS10cnVuaworNTA3NSBiMDI1NzNlZWIxODI4YzY4MjJkYjI4YTM1MWNlYWM1N2U2Y2IxY2JiIGxlZ2FjeS10cnVuaworNTA3NyAwMTY4N2NlNDM3MDgyYTU1YjdlY2YwMDY0MzI4MDBmZWY1NTc0Y2VjIGxlZ2FjeS10cnVuaworNTA3OCBjYTZiNjBkNGVhOTA2MzdjNjc2YjEwMzAwMDgwYTdjZTk0YWNkM2NkIGxlZ2FjeS10cnVuaworNTA3OSBiMzY4YmU3YjA2MmE1MzAyYTJkMDZiOTNlNDY3ZjcyZjBiYThjOTdhIGxlZ2FjeS10cnVuaworNTA4MCBmNzA0OWQ0NjUzNjU3Njk4ZDk4ZDEyMGVmZmIxYWU1YWY2MmQwMzc0IGxlZ2FjeS10cnVuaworNTA4MSBiYzMyNjA3NGY4NjE0ZTgxYjViZGYzOWYwOWY0NGEyOWM5Y2E4MzMyIGxlZ2FjeS10cnVuaworNTA4MiBhOTJkZGVkNGE3YzRkY2M2MjRhNjgwYzAwOGRlYjY4Yzk3YWJkNGYzIGxlZ2FjeS10cnVuaworNTA4MyBlZDMwYmNhMTg0YmI4MWUyM2E4ZmFhOWQ5YmQ4MGJjZGRkYTA0NmMxIGxlZ2FjeS10cnVuaworNTA4NCA2Y2M2MzdjNjBjZTY2MmFmZWNhMjI4MjNmOTZhNmEyZmUwZmFhZDdiIGxlZ2FjeS10cnVuaworNTA4NSBkYTQ3YjQxNDZhN2M4N2NlZDRjYTQ4NGQ2ZjUzNmNmYzJmOTY5OTI4IGxlZ2FjeS10cnVuaworNTA4NiBiZDA1ZGNlYTdiMDljZDc0NzQ5N2NlYzNiZWU2MDcyMzI0MDk1MmRmIGxlZ2FjeS10cnVuaworNTA4NyAyZjkxMDJmNTcxNDNmMWQ2ZmQ0NjJiZDk1OGU1YzVmMTRjMDkyNzU0IGxlZ2FjeS10cnVuaworNTA4OCA2MWUzYjYwYWVjNDQxOWRhZWQxZTgxZjNmMjY3YjZiZjYyZGE5NjU4IGxlZ2FjeS10cnVuaworNTA4OSA4MzAxOGFhOWIxN2M5NTZjNTQ4NjhiMzM2NGE3YzE0YWM0NjM0ZDg5IGxlZ2FjeS10cnVuaworNTA5MCA2MzQxYTRjMDA4MmIzNDkzNzUxNzFkNWJmMDk5Y2RhNmViMDBkMjA2IGxlZ2FjeS10cnVuaworNTA5MSA1YTMzNzEzMjA5NzU0NWVhZjJlZDJmNWZiNDk0NzliMzRmZDg4YWViIGxlZ2FjeS10cnVuaworNTA5MiBkYmI0MTcxMjE2NWJlNGZhNDJmMGRlNzg3MTEyZGNiMDIxMjAyYmZhIGxlZ2FjeS10cnVuaworNTA5MyBlOWVhMDU3MDI2NzZlN2JjODFkYTY1OTljMTNmMzIwYjhlNTZjMGY4IGxlZ2FjeS10cnVuaworNTA5NCA3YzkyZDQ0ZmE2ZmNhNTEwZWUxYTk5NGU5ODY2NWU0NDI2MDIxMGU1IGxlZ2FjeS10cnVuaworNTA5NSAxNzU2NzFjYzIxZDhjNjQ0Y2VkMTdkYjdjYTcyNTQ4MWE0ZWNiOWE0IGxlZ2FjeS10cnVuaworNTA5NiA2Yzg5ZGY1NzZkOTFhZmFkYzczNzFjYzkzZDM5NjlmYzczM2M3MWU5IGxlZ2FjeS10cnVuaworNTA5NyA5MTIzMTdhMzdlMmIzODU2MTdlYmFmZGRmNjljZjNhMmExMzI3MmVhIGxlZ2FjeS10cnVuaworNTA5OCA3NWU5ZTU2YjVmOWIxYTBkZTNlMDI0ZWZiNDZkMDkzZWYyZGVlYmRlIGxlZ2FjeS10cnVuaworNTA5OSAyMjkxMmYzYTg4OWYxMmZmNjA3ODYwNDM3ZDhhNDAyZmQxZTIxNGRhIGxlZ2FjeS10cnVuaworNTEwMCBmNGVmM2IyMTI2ZWJjYmRkNjViNmM5NjUxNDRmYjMwZjJhNDYxMWM1IGxlZ2FjeS10cnVuaworNTEwMSA2ZjM5NmNlNTI1NWQwOGYxYTZlMzkwZGJmOGMzZGRiNDZhNDQ1NmFiIGxlZ2FjeS10cnVuaworNTEwMiA2N2ZmOWY0N2FiMzZmZTliOTgwMWY3NmM5ZjQwMWQwMmU3OTI5YWI5IGxlZ2FjeS10cnVuaworNTEwMyA0NDA4NzgxOTE0OGUyNzc2Nzg4Y2U4YjY2Yjk1MDI5ZTNlZDA2NWU4IGxlZ2FjeS10cnVuaworNTEwNCA2OGM3YTBhNjFmZDU4MWMwNzZjZjhmZjhkMWVkOGY4ZTIzNzE3M2Q5IGxlZ2FjeS10cnVuaworNTEwNSBmMTFiYTljYzM0MmYyODBjYWE4N2ZjMWMxOThhYTNjZWIxNTlhMGUwIGxlZ2FjeS10cnVuaworNTEwNiBmNWM0MDg2OWRhMTA2NThlYzEwMzE3MGM3YzM5NjI0MTgwMDM0NTAxIGxlZ2FjeS10cnVuaworNTEwNyBmOThhMjIzM2IzMzdiNDk1MzQ1OGI3ZGNkY2Q1NjRhNWQyM2U0NWY3IGxlZ2FjeS10cnVuaworNTEwOCA1MTM0YzAwOWUxYTRmZTU4M2RkOWUwZWU3YTcxODY4ZDg3MDE0YjZjIGxlZ2FjeS10cnVuaworNTEwOSBkOWU0Y2JiYTk1OGMwNjkxOGZlMTZmYTZhY2JmZGRkMTY4YzM0YTAxIGxlZ2FjeS10cnVuaworNTExMCA3YzY5YzRhZWNiMzhjYjQ1NWU3MzliZjE5MDZlMmIyNzcxNjdmMGY2IGxlZ2FjeS10cnVuaworNTExMSBmODc2Y2Q1YzQ0MTdkNzUwMDk1ZDgwMDlmN2MyZGM4ZjE1ZTI1ZWIwIGxlZ2FjeS10cnVuaworNTExMiBkZTI5N2NkZWEzNGVlNjUwZTIxZTJiZWQyZTBhY2JiNGNmNmZjYzNhIGxlZ2FjeS10cnVuaworNTExMyA5YjdlNmQ5YTUyOGRhN2M4OGYzZjg4OGE2NGIwYjg1OGEwNGY0YmRiIGxlZ2FjeS10cnVuaworNTExNCBiN2U4YmMwMDJhMjQzMGNiY2Y0NTZmNmU3NjE4MjhmYWEzZWI5M2U5IGxlZ2FjeS10cnVuaworNTExNSAwNjNhOTZiNDliM2U2MmE5NDgyMWJmMzY3NDRkZTcxYjk5MWU2ZTEwIGxlZ2FjeS10cnVuaworNTExNiA2MDZhMDk3ZGZkMDAyYzRhMDg2YjE1MWU4YjIyNzAxYjc0MDZhYzczIGxlZ2FjeS10cnVuaworNTExNyA4NGUyMjYwZGIxNzk5YjM1MGJiMjg5NjY4MzRmOWI3NjRiMTdlMWZhIGxlZ2FjeS10cnVuaworNTExOCBkNjM1MGEzMTg5OTc4ODJjNjlmYzc2YjhjODU5OGE2NTNmNjk2ZjFkIGxlZ2FjeS10cnVuaworNTExOSBlM2VjYzQwMTg5ODlhZTM4MTFiNzJhZDFiM2NkMWY1MGU0Y2M1ZTQ1IGxlZ2FjeS10cnVuaworNTEyMCBmNGIzZDY4YzcxMjQ0MmNjNzRiODU1ODJlNTViMzEzNTVhYzRjZGEzIGxlZ2FjeS10cnVuaworNTEyMSBkYjNkYWNlMjc4YWMwMTg4ZGVlYWMwMGExOWM0NjZhNWM3YjFhYTg2IGxlZ2FjeS10cnVuaworNTEyMiA5Y2Y2MDRhMzQxMWU5NDViOWY0ZTVkNjIzZmJiYmI2YjQxZTM3NDA0IGxlZ2FjeS10cnVuaworNTEyMyA4NDFmNzJkYzU0NDI0YjNkZWYzNjYwYjVkMWU4ZjIzNDIzNjA2NWEyIGxlZ2FjeS10cnVuaworNTEyNCAzYTNkZjIzMTMyN2MxZDA2NzE0NDA4MzU2MDFjOGE0ZGUxMGNmMjU1IGxlZ2FjeS10cnVuaworNTEyNSAyNjZhZDEzMjg3YTRlMGNhNTk4Y2YyMjgxNWViMTNkZmNmYzg2OWJlIGxlZ2FjeS10cnVuaworNTEyNiA0ZWI2ZGRiOWU5NjFjOWFiNWJhMjZhMTFkM2QxM2E5ZTQ2ZGRhNTgxIGxlZ2FjeS10cnVuaworNTEyNyBiNGZkNDhlM2EzYjg5YjJhZDk0ZmU3OTU1YmY2Y2M5MWE2MjQ5OWIzIGxlZ2FjeS10cnVuaworNTEyOCBkZjNlMWU1MjFmZTY1ZGUzZjBkN2NiMzA2ZGRlNzBjMjVmMmUzYmE1IGxlZ2FjeS10cnVuaworNTEyOCBlNzIyNTdlNjU1NDU0ZDU2OTQ2OGRhOGIxMTg5ZTBlYzMzNmYzNTM2IGxlZ2FjeS10cnVuaworNTEzMCA1MTNmMWNiNzBjZTZhOWVjZjQyOGE3ZTlhNTMyNDNjMjljM2VhYWUwIGxlZ2FjeS10cnVuaworNTEzMSAyZjhlOGI2MTI5ZjczYWM3YTI2MzNmZDI4NDNhZGQ3YjUyMTAxZWQzIGxlZ2FjeS10cnVuaworNTEzMiA0OTE4MzkzOGQwN2U5N2I0YzNjZTJkNjU1NDkxNWZiYzY3ZmI4ZDdjIGxlZ2FjeS10cnVuaworNTEzMyAwYjdlMTRiYjU0YWUwZWVmMTA3Yjk4MzJjOWU0ODg5MDI1NjlmMDYwIGxlZ2FjeS10cnVuaworNTEzNCBlMmRkNzgxOTc1OTZiZmQxOGJmM2NkYjg5ZjQxYmRkMGQ0Yzc2MmRkIGxlZ2FjeS10cnVuaworNTEzNSAzNGVlZmEyMjY3MDlhYThlZGFhYzZkZjRiZDRkM2Y2ZmNmOTc4ZTU4IGxlZ2FjeS10cnVuaworNTEzNiBjOTQ1NzM1YTRhZDcwZjQyMDIxODVjMDJiZGM3MDU4YTBlZTU0MzI4IGxlZ2FjeS10cnVuaworNTEzNyBkMjQxOTBjNjViNTFmMDM0MWQ3OTI1ZWVjOWVkZDczZWZmZmUyODdmIGxlZ2FjeS10cnVuaworNTEzOCAwZmI2NTUyMGZjZDAxMmE3NTA1MWU1YzFkY2EwZDkzMGVjNWI2NWMxIGxlZ2FjeS10cnVuaworNTEzOSA0YzgwY2YwMmQxNTQwYzc4OTUwNDFkZTY2ODAwZTlhN2NlYmJkMWYzIGxlZ2FjeS10cnVuaworNTE0MCA0OTNiODcxZjM3NzU0N2M2Y2UzZWJjNzc3NWI2OWM5ZGRlYmY2M2FlIGxlZ2FjeS10cnVuaworNTE0MSAzMTgxNzJmZjJmMTRjNjk3OWMwOTY2YjlmZTM5ZGYxYWUwNWMwMTZkIGxlZ2FjeS10cnVuaworNTE0MiAxMDdjMTgwMDkzN2UzZjQ3MWUzOTMyZTNmMjQ2NGJjYzBjZGNlYzg1IGxlZ2FjeS10cnVuaworNTE0MyAwYjZjOGE3ZTkzM2E2NmVlYWZiNjVhN2VkY2I2NmZlMmVlYzA2ZmUxIGxlZ2FjeS10cnVuaworNTE0NCAwZTljYWUwYjUwNzJkNjg4MjBkZDA5ZjQ5N2FjMjFiZWQzMmJlYzQ5IGxlZ2FjeS10cnVuaworNTE0NSA5ZTlmMjJkYmVkMWFmMDRlMDk3NjEwZGE2MzljM2MyNjkwMmFiNmZjIGxlZ2FjeS10cnVuaworNTE0NiBkNDY0NGQzOTJhOGZlNjhjNDNiM2M0MWI0YzQwOGY5YjM4NTRiZDk0IGxlZ2FjeS10cnVuaworNTE0NyAyZDliMTY1MjcyNDdkY2IzYTM1N2IwYzBlMThkMDI2ZGI1ZmFiYTM0IGxlZ2FjeS10cnVuaworNTE0OCA2OTBlNDZmMGJmNTk4NTVmY2M4OTkyNjY5ZWZjMTA2NWM0NWZlNTcyIGxlZ2FjeS10cnVuaworNTE0OSAxYTQ4MWE3NWFmNDVmMTI5Mjg2MzNhMjAwN2YyMzg1YWZjNzZmMjA4IGxlZ2FjeS10cnVuaworNTE1MCA4OTI5MmY2YTI1OGRjY2ZlN2MyNjk0YWU2OGNhMTJkMDlmNTIyZmIzIGxlZ2FjeS10cnVuaworNTE1MSAyMTA4MjFmZDU2NTA5NDdhZDAwOGM2NGZiYTkwZWQwYTU2YmRlYzZkIGxlZ2FjeS10cnVuaworNTE1MiA0YjU3YWYxYmEyOTcxMDZjZDdlYzU4YjQwMThkMGRjNGZkOGYxOWM5IGxlZ2FjeS10cnVuaworNTE1MyA5YmRjMjdkMTUxYmFhNmI1ZDRiYjBiOTY1NjE3NmU5OTMzZDk4YmRmIGxlZ2FjeS10cnVuaworNTE1NCAzNDdjZjBlNDkyZDgxMWQ1MGM1YzI4MGM3ZjY1MDEzMzlkNmI4YTVkIGxlZ2FjeS10cnVuaworNTE1NSA3MzM1YzViM2I0M2JkMjQ0YjI5MWE1YWI4YmI5ZjU0MTMwNzY3OWQ0IGxlZ2FjeS10cnVuaworNTE1NiBjMWY0ODg1OGYxODYwZmFjMzBlNjU1ODU1Y2IwOWU2MmUwNDMyNWEyIGxlZ2FjeS10cnVuaworNTE1NyA5MjVkMWJmY2Q5MjU5M2QwYWFhNDYwOWU2MjEzOTgyMzdmNzk5MGVkIGxlZ2FjeS10cnVuaworNTE1OCBlMWQyM2E2YjkzMGI4MDdhNDdlZDBiZjM5MWQ5YTBhNDNiNWI4ODVmIGxlZ2FjeS10cnVuaworNTE1OSAxYWY5MjIwYzZkMTlkOTQ2ZjE3Y2I5Yjk5YjI4ZTA0YTRmNWJiOTBlIGxlZ2FjeS10cnVuaworNTE2MCAxMTU3ZTE0MjcwZDY4NzY5ZDc4OTU5YjcxMmY1YjUxMzNiY2E1M2JiIGxlZ2FjeS10cnVuaworNTE2MSBlMDM5MzY1N2ZmYTQ3NzFkZDNhZWY0ZDc4MGZkNTIxNDFlNWIxOTQzIGxlZ2FjeS10cnVuaworNTE2MiAwNjIzNWZkYzFhYWYzYmRjNzU2NjcwZWZlZmI2OWExNGUwZjIwMDA5IGxlZ2FjeS10cnVuaworNTE2MyAzZmZiMzFjYzhhOWIzYTBmYWMzYWU0ODhkMzQ0MTMzNjA1YzI0N2ZkIGxlZ2FjeS10cnVuaworNTE2NCA1MzhhYjgyZjkxYTcyNzU0MTY0ODA0Y2IzZTgzOWQ1NDlmMDc3YTQwIGxlZ2FjeS10cnVuaworNTE2NSA2ZDkzYjRhMGY0Y2U3YzdlOGM0Njc4MGIyYTk1Mzg4OWE3OWM0MTBhIGxlZ2FjeS10cnVuaworNTE2NiAyZjQyZTI3MzgyZTlkMjM2OGEzZjVmM2Q4MDBkOTI2ZTE4MzIxNTUwIGxlZ2FjeS10cnVuaworNTE2NyAxMmQ4YzgzODU3MzVmY2FiM2ZiNTliNjgzM2VlNDA0ZGFkNzMzNzcyIGxlZ2FjeS10cnVuaworNTE2OCAxOTg2Yjg2OWUzYTEzMTIyYjA3YTlkNTUwNjQyYTFlMDVhMGI4M2E0IGxlZ2FjeS10cnVuaworNTE2OSBmMTJmZjEzMGUwYjVmNDI1NDU5ZjBlNzBiNjYxNWMwZGU0NDkyNGRhIGxlZ2FjeS10cnVuaworNTE3MCA3OTczZjUzODcyNmNhYWNmZTY3Njc0ZTk5YzdhNDBhMWRmZDY3NzIzIGxlZ2FjeS10cnVuaworNTE3MSA5ZWQ0NWRiZjI3NjU4YTBhZjg5YmM1YzJiNGY2MDRiZmVlZTI3MmUzIGxlZ2FjeS10cnVuaworNTE3MiA0ZTA3Njk0NDQ4OGFhYjg0ZWIzYjhiMDJhNzlmOGIxMzYwYjNjODAwIGxlZ2FjeS10cnVuaworNTE3MyAxMzA2ZTc2MWE2MjM4Mzc0MGE1OWY2MzlmMTg3NzlkYmI4YjY4MDRiIGxlZ2FjeS10cnVuaworNTE3NCAzNzNjMTYzN2QzMDEwNGU3Y2FmZWUxZDIxZjU2MjBlZDM0MjA0YjI3IGxlZ2FjeS10cnVuaworNTE3NSA1MDAzMjM0MzllYjM5YjNmNzAwYTQ4OTM3MWQyMDFiMTU0NGE4MzExIGxlZ2FjeS10cnVuaworNTE3NiBiNjg5ZTZmOTJmMTdhMTExMDAxMTJlMzNjMTA0OWU4ZDY3ZDVjYjgyIGxlZ2FjeS10cnVuaworNTE3NyA5ZmViMGIwYjUwYjYwYzQwZmU3NTI1MjQzMzdjNDZiZDQ1Y2IyNzJjIGxlZ2FjeS10cnVuaworNTE3OCA3NDc0N2JmZmI2YTRkMjdjODY0OTBhMGRhOTYyOGVmNTQ4ODJiMGFlIGxlZ2FjeS10cnVuaworNTE3OSBjZDlkODZlY2MxNzUyOTRjNmMxOWQ4OTNkMTRiMGU0ZWNiNGZjMDA2IGxlZ2FjeS10cnVuaworNTE4MCA3NWFmYWFjODU1NjcwN2NmMDNkNTdmOTljNTU2NzFiNGFkNDQ2ZjRmIGxlZ2FjeS10cnVuaworNTE4MSAyYTMxODc2ZjcxMDI5OTA1NmYwMmIxM2M4NzA4NWFlNmI4MDkxM2JhIGxlZ2FjeS10cnVuaworNTE4MiAxOWIxMTk1YTNhZjg0N2UxYTk2ZDY0NTI5ZjM4ZTNlNTg1MzJiODc5IGxlZ2FjeS10cnVuaworNTE4MyA2Yzg2NGFkNTE5YTM2ODRhZmEzYmM3MTk3ZGI1YTQ0MmUyYjIxMzRhIGxlZ2FjeS10cnVuaworNTE4NCA4ODljNmRhN2I0Y2E1MTE5ZGY3ZGFmMzAyNDM2ZjZiNDQyYjI0ZDBmIGxlZ2FjeS10cnVuaworNTE4NSA2MjY3YTVmMjIyYmZkZWQ1ZTM5M2U5YThiZDFmYWRkZDkzZWIzNTI1IGxlZ2FjeS10cnVuaworNTE4NiBhYmYxMTZkYjUyM2ZlNGRiOWI4ZmFmMDIzNjQwOTUwYjE0NzkyOWFiIGxlZ2FjeS10cnVuaworNTE4NyAzNjRkNGE1MjRjZWM4MjFkYmNlNzNlNjkxYzQ5ZWEyZWNjN2M4MmFlIGxlZ2FjeS10cnVuaworNTE4OCBhNWNlYjNlOTNmYTEyNzM1ZWYxYTEwY2YyODVmYzM3OGU2NTY1ODc1IGxlZ2FjeS10cnVuaworNTE4OSBhMGZjOTRiM2JiMjEyNzA0MmExZDBjNmM1YTM4YWQ4ZmZkYjgxNTgwIGxlZ2FjeS10cnVuaworNTE5MCA2YTllY2IwNWM2NzllZDhjNGJjNTcwZDdiZmE5ZGU1ODcyYmZhYzYyIGxlZ2FjeS10cnVuaworNTE5MSA4MjIyMDQxZjVhOTFkNTQzODQ4OThhNTJkNDdjMDgzZDI3ZGFlMmRlIGxlZ2FjeS10cnVuaworNTE5MiBkMDNjY2FlMTcwZWFmMjgyOWNmODNiZDQ5ZTY3YjMzNTRjMWM1YjIzIGxlZ2FjeS10cnVuaworNTE5MyBlODgwYzAxNjRhZWNlMjI2YjY0ZDY2NzMyYTNjODE0NDc4YzdmOTQ2IGxlZ2FjeS10cnVuaworNTE5NCBjMjY3ZTMzMTIwMzA4YTJhZTIxOWM1NzdjYzU2ZWZjYTIwOTIzYTU3IGxlZ2FjeS10cnVuaworNTE5NSA1YWY2ZGIxZjZjMGNkYzQyYWRjYjUwNTFmMmVkMDhmNTcyZjZmNzNhIGxlZ2FjeS10cnVuaworNTE5NiAxMGUxMDVlNGNmOWMzYjhmMDQ1MGFkYjc4YTQ3ODBmMGVmMzg4OGRlIGxlZ2FjeS10cnVuaworNTE5NyA5ZjgyYTZiYjAwMTBkYjYyY2I4ODUwOGU5ZTc3MjhhNTgxMGE0NTgyIGxlZ2FjeS10cnVuaworNTE5OCBkYWExNTBiM2E2ZTQzZTEyYjNlMTU5YjRlNTBjOTVmOTVhZDRkYWM2IGxlZ2FjeS10cnVuaworNTE5OSBkYzY0ZGY3ZjFhZDY5MDBmNTYxZDQyZjJlMzA5MWU5OWQ4NWMyMjIwIGxlZ2FjeS10cnVuaworNTIwMCA2ODZmNGJmYjRkYTYyMjg5YzA3ZGUyZDBhMTE0Yjc1Y2IzODlmZTZjIGxlZ2FjeS10cnVuaworNTIwMSA5MDI0MGU4MTliZWNiOTkxYzI2OGUzM2E4NzM3MzU5YjQyZmNlYzBhIGxlZ2FjeS10cnVuaworNTIwMiAzN2M0OGZkZTYxYjhlZDg1NjJlNjM1MDhhNWFkODAyNDNiZDBiZGFhIGxlZ2FjeS10cnVuaworNTIwMyAzY2Y4OTZkMjRlNTBkYmI0Zjc0MDJhMTM1ZTA1ZjhjZmI1NzQ2NmJkIGxlZ2FjeS10cnVuaworNTIwNCA3ZGY2ZmNiNDI2ZjUxNDc5YjllMDU3NGU2ZTVkZGY4YmNkZWMzNDBjIGxlZ2FjeS10cnVuaworNTIwNSA4MGI1YzgyMjcyYTI1YzFlZjg1MTMxNGUxYmY5MmQyODU5NDQ2YWVhIGxlZ2FjeS10cnVuaworNTIwNiAzZTM3MGE0YjEwM2JlMjA3OWM3ZTJiOGJkYjU1NTBmOGFlYTc5NzM1IGxlZ2FjeS10cnVuaworNTIwNyA5ODJhNWJkNmQ0NmQwNzY3MGYyMDhiOGMzZjM1ZDA4MGU3ZmUyZWQxIGxlZ2FjeS10cnVuaworNTIwOCBhODI3ODAxZWQ5NjMzODRlYWIxNmZkZmUwZWUzYTNjMTljMWZiZTk4IGxlZ2FjeS10cnVuaworNTIwOSBmMTg3OWIxYTJjMmFlOGRiN2YzOTUwOGNiZDAwOTViOTRhODA5ZGRkIGxlZ2FjeS10cnVuaworNTIxMCA0ZjFiMGNjNzM1MDdkNjcyOTU5OTVjNTkwZTYwNTRhMDE4NGJlYWZkIGxlZ2FjeS10cnVuaworNTIxMSAzZDVlYzFjMjIwNTUwMjIxNTZlOGZlZTkzMDYzNWRkZTYzMDhiMTQ0IGxlZ2FjeS10cnVuaworNTIxMiA4NTNjNDg2ODkzYjgyY2U5NWNlYzEwYmU0ZjhmZWE3ZDRlNDE0OTBhIGxlZ2FjeS10cnVuaworNTIxMyBlNDE2NjlhMWRlYTAyNGQ5YmRlMDIyYzdmM2I1OWIzYzI1MGUzMzc1IGxlZ2FjeS10cnVuaworNTIxNCAzOWNkMjU2NzhiNDFhY2Q0MTY0MzZlMTkwYWVmZDBhNWU0NzcyM2JkIGxlZ2FjeS10cnVuaworNTIxNSA5NTE2YmFkOTc5NjEzMTI5ZWQ2MGYwNzFiMzY5NzAyODYyNjEzNjE4IGxlZ2FjeS10cnVuaworNTIxNiAwYWYwMWYzZTA2Y2M5ZTRhMzM1NWY5NTU1MzFlYzJkZjkyZGY2ZGIxIGxlZ2FjeS10cnVuaworNTIxNyBhZTY0MDAzYjJhNzU2NTFjNGRlN2FiYTBmMGVhNTY3YjAyYzkyNTQ5IGxlZ2FjeS10cnVuaworNTIxOCAzNTRlYmRkZDM2MmIwNGM3NmNlMzc1MjE4OThmZmRlMGJmZTY4MjQzIGxlZ2FjeS10cnVuaworNTIxOSA0Yjc0YjNiNDMyNjliNzFmNGI2NjBmODViYmVjMmQzMzZhZGRmNWZkIGxlZ2FjeS10cnVuaworNTIyMCBhMTA4N2FhNjQxY2Q5NWYwZjA4MDNmMDE0MTZlYjAyZTdjMDljNjE5IGxlZ2FjeS10cnVuaworNTIyMSA0Mzg5YTYwZmVkY2U2NjFmZGFiNzcwMDcxZjhhOGU0NGY5Y2IyNjhiIGxlZ2FjeS10cnVuaworNTIyMiA1MjE1NjM1MmZkZDZkMzVjZGY5ZjMyNGE4ZGM4NWM5ZDg1MzkyMGU4IGxlZ2FjeS10cnVuaworNTIyMyA2Y2ZkNjk1ODU2MzZmMDJlZmVjMzlhY2UzNWZjMTRiZDhiODEyMmQyIGxlZ2FjeS10cnVuaworNTIyNCA2OWFiYTZkOWQzNzgzNTI2ZTM0YWNmNzRkMDIwZDI4ZTZlZjg2YWU1IGxlZ2FjeS10cnVuaworNTIyNSBhYWY5MDJjZGZkYzRhMmEyZDdiYTViMzFlZGNjYTk5MzVlMDQ0OTBiIGxlZ2FjeS10cnVuaworNTIyNiAxYjllOTAzNTM1MjkxMTkyMTYxMzNiZjEyZmMwNGI3MzU4NDc1OWM2IGxlZ2FjeS10cnVuaworNTIyNyBiNDBjYWJmZGM5MWRlMjViY2VmZWNmMjZkOGE3OTgyZmE0NmIxNjI3IGxlZ2FjeS10cnVuaworNTIyOCBiZTIxYzNlMGNjMDNmNDhlYjZhYTRhMjBhZDRjNWM0MTAxNjJlYTEzIGxlZ2FjeS10cnVuaworNTIyOSBiOTU0ODk2MGY5NDUwYzlhZDA5YmQ3YmQzY2FiOWNlYjlmMzkxYjM3IGxlZ2FjeS10cnVuaworNTIzMCBhYzZjOGIxMjE5ZTY3MWNkNDU1Zjk3ODVhNTU0NDYwYWUyZDZlNDFkIGxlZ2FjeS10cnVuaworNTIzMSA2ZDhkOTgxZWY2YzQxNTFjMzY2ODY1ZDYxYjQ1ZDRjNjA0MTllOWVlIGxlZ2FjeS10cnVuaworNTIzMiBmZWNjOTM5ZjRkNTk1N2NmYjdiMWU2MGI1ZDU0MWM1Yzk5NzgxZjI4IGxlZ2FjeS10cnVuaworNTIzMyA4ZWNlOTIyN2ZkZTEwNGQ5ZmVkMmFhMjdjMzA4ZWIyZDI5ZjA5NzYyIGxlZ2FjeS10cnVuaworNTIzNCBhMGE0YWZhMzlkN2EwMWNkNGYzNjVhNGI4YmViZDE1ZTk4OGNlNjhhIGxlZ2FjeS10cnVuaworNTIzNSA2YTE2NTZkYjdkZGVlY2I1OWY5ZmZmMmNlZDZhNjI2MmI5NTQzNDEwIGxlZ2FjeS10cnVuaworNTIzNiBkYzJhZGY3OWU1MjNlMTAyZWM1NzJmZThjNDc0Nzk0NTVmNjQxNGI3IGxlZ2FjeS10cnVuaworNTIzNyAwZTVkYWZiODVmYmQyYmI2M2I3MmQyOWZlYjk3ZTlhNjU5ODlhY2UwIGxlZ2FjeS10cnVuaworNTIzOCAzNTQzMmM5YTg3NGUyYzBkMWM2ZmVlOTZjZTRiNWU3ZGVmMTI2MTVmIGxlZ2FjeS10cnVuaworNTIzOSAxYTNmZjAxNDhkZWNkOGZmNjQ2NzkzZTRhNjU1YTE2NDM4NzU2OTA5IGxlZ2FjeS10cnVuaworNTI0MCBiNzM1ZDMzODY2NTFhMDU3ZDdiMGI4YzlkZDU2YjIzMDI0OWU4ZWJhIGxlZ2FjeS10cnVuaworNTI0MSBmZDc3N2FmNjdjMjMxMGQzY2NhOTE4MzJlNDllZWNhZjAwMjM1NWVmIGxlZ2FjeS10cnVuaworNTI0MiA1YmMwZWRkNWIzZjkzMmI0N2Q0OGY2MDJkYWZmYjI2NjdmOGIzNmVmIGxlZ2FjeS10cnVuaworNTI0MyBiZjFkZWQ3NTk2MmQ2MjA2MTU1NzVkZjExNjRlNzk3NWFhOWY4NTYwIGxlZ2FjeS10cnVuaworNTI0NCAxN2ZkZWMyZmIzMDlhOTFlYjFhZWVjZjE1OTU4MDIzOGI4MTQ3ZGFkIGxlZ2FjeS10cnVuaworNTI0NSBhZjdkMGZlYTNmYjJhMmMyYWUxZTIwNDg3NWVlZGNmYTZkZWUzOTZlIGxlZ2FjeS10cnVuaworNTI0NiA0MTEzZjRmYmFhZTUzNzIwMmQwOWExNmUyOTRkYjlkN2ZhZDNjYjhiIGxlZ2FjeS10cnVuaworNTI0NyAxMjAzZTU4NDIyNTVjZTY0ZWYyZjNiYTlmYTI3NjE0MWUyOTQzOGI3IGxlZ2FjeS10cnVuaworNTI0OCBhNWQzNjFlMmIyZTIwYzZkMGJjZDUwNTkzZmM4MTRiODhhNDYyYzRjIGxlZ2FjeS10cnVuaworNTI0OSA5ZWM0NGUzN2Y2YjEzM2MzNmFjODY3YmUzMDQ0NWEyYTJjM2IxNTk0IGxlZ2FjeS10cnVuaworNTI1MCAzYjdmYTU2YTNiOWJjYmZiNjMyMDE3MzlkMDg3NDZjZjg1ZDA0ZTU5IGxlZ2FjeS10cnVuaworNTI1MSA1MGIyZjgyZTZmMGVhNDdhZGI5NzIxMzMxODZlMDA4YzYzMDljNzE1IGxlZ2FjeS10cnVuaworNTI1MiAwNmYyMjhkNjIzNmU0Y2Y5YWRmNjhiZTgyNjRmNTQ4NmJiZjA3ZjlhIGxlZ2FjeS10cnVuaworNTI1MyA3YzNlNGYzZWUxNTJmODhjNDkxNjUzZTlkNzAyNWYxNDIwMTU4YTNjIGxlZ2FjeS10cnVuaworNTI1NCA5YWFiNGViMmIzZjk4MzdiOGRkNDg4YzY4ZGJlOTAxYjdkODI4OWVkIGxlZ2FjeS10cnVuaworNTI1NSA0MTU2NTQ1NmJjMjIxY2NjNTlhZGI0YWJhYjgwZGE1NWEwOTcyNmE4IGxlZ2FjeS10cnVuaworNTI1NiAyNGZjMDYxNmE2OTZjODI5OTQ5ZjBmZTI5NjdkYTA1YWE5YzllYTY2IGxlZ2FjeS10cnVuaworNTI1NyBiYWYwYjliN2MyYTVhYTY5MzhjZDZhOTU4YjVhODAyMzM4ODdlZDIzIGxlZ2FjeS10cnVuaworNTI1OCBhZjNhYWI2YjA3YzQzYTk1NGU3MmJiNTE0ODEzYzU0MmMwNTQ0MWEyIGxlZ2FjeS10cnVuaworNTI1OSBiODkzN2U3NGZkZjU1MWMwMzIxMjMyZmIzNGEzMGE2NTk5MGQ0ZWZlIGxlZ2FjeS10cnVuaworNTI2MCA4MjNmM2E4ZWNmZTQxOTM0NzAxYmNmMzhiNDdjMTJjZjhjYzg5YTY3IGxlZ2FjeS10cnVuaworNTI2MSBlYTM4YzM2M2RlNThiNzViNDllMDM2ZGMwMjdmMTFlY2U1YTc2ZWI1IGxlZ2FjeS10cnVuaworNTI2MiBlYmMxNzE0ZGM3MzhiZGRjMjQ0NDMxNDg1NzI4MjUwOWE1NDRhOTRhIGxlZ2FjeS10cnVuaworNTI2MyA3ZjJjMGU3ZWY4NDI2MmM1OTU4NjQ2MzQyZjg2OGYzMzM4Y2FiMGJmIGxlZ2FjeS10cnVuaworNTI2NCA1OWMyYWNiM2U3MDI1NDYzZjk5ZGZlM2FhN2UzNWVjMzk2YjBlNTg0IGxlZ2FjeS10cnVuaworNTI2NSA0YTk5OGIxYTMzMWYwYWU5ZjBmMzBjN2IxZTM4NzVhMDU1Y2E0ODdmIGxlZ2FjeS10cnVuaworNTI2NyBhYjNkY2E5N2ZmYmViNjM1YTE2ZWM1ZWQzOGZmNDVmNjJmODg4MDhmIGxlZ2FjeS10cnVuaworNTI2OCBlOTExZjJmYjE3OWMyYzMyY2FmOTIzNmJiZTIyY2RjMjNhZDVhMWEwIGxlZ2FjeS10cnVuaworNTI2OSA3NTBhMmRkOGE0MzdiZmM4YmQzMTk5YzhkNzAwM2MyYjQ1NDljZDExIGxlZ2FjeS10cnVuaworNTI3MCBhMjM2M2I2ZTljODZlOWFiYzUzNjkzYjZiNTk4NzA3OWRlYTJkNTYyIGxlZ2FjeS10cnVuaworNTI3MSA2MGM1Nzc3NzM2NmY3NTVhOTcxNDhmYjUwYzNhYmIwZDlkOGRiOGU5IGxlZ2FjeS10cnVuaworNTI3MiBiN2EwNmRiODVjYWZjZTQxM2QwYzU1ZGNkOTI1YWYxZDZjZjI3ODFiIGxlZ2FjeS10cnVuaworNTI3MyBkNzZhNzE0ZDFjZWFhYWRlMDA3ODA4MTRjM2M3MmJiOTMwZDU0NmE3IGxlZ2FjeS10cnVuaworNTI3NCA1Y2E1ZDc3YWZkMjhiYWM3MzdlYjBhYWI5Nzg1ZTQzMWVkZGJjYjRkIGxlZ2FjeS10cnVuaworNTI3NSA5MzE4YWM1MTY5MWU2ZDg2Mzg0ZmZkNDQzMGQyMTY0YTI2MTBkMzQ0IGxlZ2FjeS10cnVuaworNTI3NiA2ZmZjYmUwZmU5ZDNjZDAwZjJmZTMyOTgzNjg3NjM5MTE5YzJmOWI4IGxlZ2FjeS10cnVuaworNTI3NyBmYzIxOTBlYzFiZWFkMjg3YmMwNmUxODExMzI0NmIwNmY5ZDY5ZjE2IGxlZ2FjeS10cnVuaworNTI3OCAwN2ZjNGZlZmI2ODM3NTk1MWVlNzYwYzhhNTE1M2MyMzQ2NzE0ZGVjIGxlZ2FjeS10cnVuaworNTI3OSBmYjNkYWY5YjI0NTZkYzFhM2Q5OWY1NmY3OGM1ZTYyNzBlZWFmMWU4IGxlZ2FjeS10cnVuaworNTI4MCA5OTliNWJkYzE4Y2U5OTZiMDJhMDc2YWE3YzBiZjBhOTUzYWIxNDUxIGxlZ2FjeS10cnVuaworNTI4MSBjNmZlODBjZTdjMjA5M2ExYWNhNTVkZjBhYTJjY2UwNWRkOTM5OWIyIGxlZ2FjeS10cnVuaworNTI4MiAxZTgyZGQ2ZGZlMmVmNDE2ZjRiOGEyOGFmODRmZjk4NDNiY2JhMDJmIGxlZ2FjeS10cnVuaworNTI4MyBjNGMzOWQxNzFlYzNiMDYzZDZkYmRhMjY4YzJiMWY1NWY5NTdlMjgyIGxlZ2FjeS10cnVuaworNTI4NCA4YjhmYjI0ZDQ4Mzc5NGYyZTkzMDMxMzkyZTkzMjA4MzExZDkzMzdkIGxlZ2FjeS10cnVuaworNTI4NSBjOWI3Mjk3YTA3NTg3MjBiN2NhNDMyNWUwZTQyMTdhYjEyOWMwNzk5IGxlZ2FjeS10cnVuaworNTI4NiA4MjI1YzY1ODFiM2QzNmUyNWVhMTA2ZDI0NTQ5Zjk4YjI5OTQ0Yjg2IGxlZ2FjeS10cnVuaworNTI4NyA2OGQ3ZWFlNmNiZDZjNTY3NTEwNDk4Nzk2MThiYWJhNTI0OTUyYjNlIGxlZ2FjeS10cnVuaworNTI4OCA0M2NjZmNkOThlODA2ZWRhZDNmYWFhNmI0Zjk1YzRhN2JiMzI3YjkzIGxlZ2FjeS10cnVuaworNTI4OSA0MDdjNzg0NmI4ODZiODU4YmY4ODAzODRhMmYyYjM4NmVhNmQyMmE0IGxlZ2FjeS10cnVuaworNTI5MCAyODJiMGI0YzFlZWE1OTBiOTBhNWZmMTA5ZjM2YzFkNjFlY2U1Mzc1IGxlZ2FjeS10cnVuaworNTI5MSA2NWM3MTA1ODY4Zjg4OTk2NGU4ZTQ3ZTM4MTJlNjcyYjMyMWUyOTNlIGxlZ2FjeS10cnVuaworNTI5MiBiZWJiMGVhN2RlMjAwY2VjM2JmYTJkZmVhM2M1ODM2MGJmODU3ZmE4IGxlZ2FjeS10cnVuaworNTI5MyBjZDllNjEzNTI0NGE1NzA5MGE2NzI5ZjFiNTIzODgzNjQ1ZDA5NTFlIGxlZ2FjeS10cnVuaworNTI5NCBmZjFmYWE0Y2MxZGZiYzg5YjdhZmY4OTM5MGVhMzY0YmFmMDIwNzZhIGxlZ2FjeS10cnVuaworNTI5NSA1OWE5Njg5YzExYThiMDE0NTE4Y2M0MzBhYzI1ZTZhN2YyMWIxNTdlIGxlZ2FjeS10cnVuaworNTI5NiA5NDNlMWM0ODA0ZDgwMDYzNWFjOTc2NTNlMWZiYzNiYTkwNTIwMzBlIGxlZ2FjeS10cnVuaworNTI5NyBiZDc5Y2Q3NjhmZjg4MGU3MWRlODYxNjA3OWYzMjBjOWE2Zjg0NTM0IGxlZ2FjeS10cnVuaworNTI5OCBlZWRkNmMxZjNhZTdlNGNiZDM2Yzk2ZjhkMTk5YTEwYjJjNTllYmY2IGxlZ2FjeS10cnVuaworNTI5OSAxZmQ4ZjMxNmNiZTkwZjg5NDAwYzg4NTNiOTE4NzIzMmMwMGY3NzBmIGxlZ2FjeS10cnVuaworNTMwMCAxNjQzOTk3ZjE3MThhYTY0ZjUzMjBlNGNjNzdlZjI1MjM5Zjk2MTIzIGxlZ2FjeS10cnVuaworNTMwMSA0ZGVhM2Y1NTQ1Y2YzZDkzNTJmZTQxOTkwOWQ3MzQ0MDVjNmZlZDNiIGxlZ2FjeS10cnVuaworNTMwMiA3YzdiMzcwNGE2OGZhMjExMGMwNzEzYTI4NTM1YzExN2ViZThjOWI4IGxlZ2FjeS10cnVuaworNTMwMyBkOTJlZjk0YWZlZmJlY2VlNjZiODExMTM5MTg0OGViMjYwZjE3MDY1IGxlZ2FjeS10cnVuaworNTMwNCBiOTg4YTRhY2E2Zjk2MGEyOGIyOTVjYzhiYTE5ZTU2MmQ4OTA5MDUwIGxlZ2FjeS10cnVuaworNTMwNSA5YjFhMzI2NzI3ZGZkNzcwYWFlYTA3ZDA0YjlmNGMxZTZmOGYzOGViIGxlZ2FjeS10cnVuaworNTMwNiAyYzczYzhhYjhiODJhZTgyZDQ1ZjgxZTgzMDQzOGE1ODBiODZlYzgxIGxlZ2FjeS10cnVuaworNTMwNyBkNTM5OGFjYWZhMmNjYzkzZWViMTU2M2E1ZDRhMGFlMWU4YjEzMjgxIGxlZ2FjeS10cnVuaworNTMwOCA2NDkyOGY2YThlODBlMDZjZTI0MDE5YjdkZDdhNjFiZTgwNDBhYmVmIGxlZ2FjeS10cnVuaworNTMwOSA0MjA4NzRmN2Q4YmQxZmYwNDg5YjQ2YTJlMTk0ZmVhMzgwYWY2MjIxIGxlZ2FjeS10cnVuaworNTMxMCA4ZDkyYTNiYjljMWZmYWRjYjdjMjFhMWU1YTNkZWUyNDljOThiNzdjIGxlZ2FjeS10cnVuaworNTMxMSAwMjYxYmY1YjM4MTliMDNkODNmMjU0NTYyOTQ3MjQ0NjM0NjA0MDI2IGxlZ2FjeS10cnVuaworNTMxMiAwNTFiYWNhYjU5YWZlMjVlMzA2OTgzZmU0MGI2MWRjMTUyZjhmYmE1IGxlZ2FjeS10cnVuaworNTMxMyBlYWU0YjJiYTcyMmViNGM4NGMzZGVlOWUzMTRkMTU4OWFkYTU4M2ExIGxlZ2FjeS10cnVuaworNTMxNCA1NjBhY2MyNWY4OTY2MDMzMmEyZGIwNjY5MzFhN2YwNGVhMDg2OWJmIGxlZ2FjeS10cnVuaworNTMxNSA0ZjZkNWZlMTk4MTIyZjNkNjJkZDY2YWM5NmE3OTZlMTZmNGQyMzFkIGxlZ2FjeS10cnVuaworNTMxNiA5N2NmYzQ2ZTMzMDJjMTY2ZDU3YmQzNWE5YjkzY2NhYjJkNDE5ZWNkIGxlZ2FjeS10cnVuaworNTMxNyBlMzc5NWRiNGFkZjg5OGZjMjNlODVlMmE1ZjJjYTZmMTQ0ZmJhMDhjIGxlZ2FjeS10cnVuaworNTMxOCBiZWVlZmZmMWM0NDI2NTMzNjQyMWYwZGFmYzdkNGI5OGZlOGE3M2I0IGxlZ2FjeS10cnVuaworNTMxOSAxZWVlYmEwOWEzMDY0OTcxYWE2ZDNlMWNjYjU0YjkzMzg4MmRmZWMzIGxlZ2FjeS10cnVuaworNTMyMCBkNDI5NDFkM2E5NWY0NWY2NjJiNDc3Yjc2M2M1ODNhYjlkYzJlNzMyIGxlZ2FjeS10cnVuaworNTMyMSBkZDhhMzBlNWY3NDQzNGMyODllNjUxMWNhNjgzMWYwNDU4MjI2MGQ1IGxlZ2FjeS10cnVuaworNTMyMiBlNmJlYzE0OWE4ZDcyMzk3ZWY1ZTNiOWRlYjUxYzkwYzRjMGVmMjAzIGxlZ2FjeS10cnVuaworNTMyMyBhN2FmOTcwYTk0YTQyNzJiY2MxZjQ4MGQ1NDQ0YzhmMWMxNGViODI1IGxlZ2FjeS10cnVuaworNTMyNCBlZWJiZGJlZTU0ZjkwMjA3ZDZmMzlmMmQ0ZjczMzRkYzgzMWEyNTcwIGxlZ2FjeS10cnVuaworNTMyNSBlYjFlZDRkODQ2MjkwZDUyOWNhMTg3YWNlOWM4YzRhYmQ5MWIzYzZkIGxlZ2FjeS10cnVuaworNTMyNiBiYTJiMzA5NzJmZmVhNzM1ZTQ3OTViOWNkNmNhMjYyZDRlNzVkOThmIGxlZ2FjeS10cnVuaworNTMyNyA2YWU5YjM3N2U1MjJhNGVkMDIwYTE4YjU2ODg5ZTUzMTJmMGIxMzBlIGxlZ2FjeS10cnVuaworNTMyOCBkYzZiM2U3NmNjZTY2NDI3NzdlMDU4MWQ0OTYzOWNjMWQwMGFiMGUzIGxlZ2FjeS10cnVuaworNTMyOSBkZjhjZWRhODQ1NDVlNzUwM2MwOGNmYWVkYTVmM2VhYzc1NWU1NzBhIGxlZ2FjeS10cnVuaworNTMzMCAxMGUwMDdhZWYxY2ZmMTMwYTdmYWU0YzA2MWZjNjVmZmE4NDczOWVhIGxlZ2FjeS10cnVuaworNTMzMSA1Zjk1MTkxMmU5OTU5MGNiNGYxZjA5Y2UyMmVmNGVmNTg1MWRkZjE0IGxlZ2FjeS10cnVuaworNTMzMiBkNDAyOTBlNDI0NTU1NmU5NTc0M2EwNmQ0YTU0MWE3OWNlZWIwNzg2IGxlZ2FjeS10cnVuaworNTMzMyAxNDExMWQ2NjU3N2RkNTQ2NGFmN2U4OTkyMzE0NjQ2MzkwZGExYjcyIGxlZ2FjeS10cnVuaworNTMzNCBhMTY5ZTY4NzM0ZmYxMGViMTRmNzY0ZTlkNmQ3ZGRlNzdiYjhkZjQxIGxlZ2FjeS10cnVuaworNTMzNSBmNjU3ZDY3ODEyYWZhZThkMDI1OGRhNDE2MDdkZDNmY2ZmNTljNGM4IGxlZ2FjeS10cnVuaworNTMzNiBiOWE2MjUwMWU3NmRjODllOTllYmZiMmQ2ODYwMjFjNDE1MjcxMWE4IGxlZ2FjeS10cnVuaworNTMzNyA1MjBlMTg1NWEyNGQ5MGIyMWQ1Y2RjMmM2NjA4MzlhOWFmZmIzMTZlIGxlZ2FjeS10cnVuaworNTMzOCAwNTM0MDI1Y2VmZTU1NmZhYzdlYzM0ZDQ3OTAzOWVjYmJiZjUyYzc2IGxlZ2FjeS10cnVuaworNTMzOSBkM2IwN2JhM2UxMmRmM2I4Mjc2MTQ1MWIzMGMzODdhNmM5NmRiZDQwIGxlZ2FjeS10cnVuaworNTM0MCAzMTU3NjBiYTAwNDFkMDRjYmJiNzVlMzIxZDI4NmQ0YTM3ZmZlOTI1IGxlZ2FjeS10cnVuaworNTM0MSA5MjdmNDgzOWZiZmExNDhjNTc1NzgwMDM5NjljNzNkYmM4NzNiYjkyIGxlZ2FjeS10cnVuaworNTM0MiA3MTU4NGZlNzc0OWMzNWZkOGVhZjU3N2VlNTZhYmNiMzU3NWMxYWU3IGxlZ2FjeS10cnVuaworNTM0MyA4NTE0MGIzNTQ4OTAxZjg3NzkzNTk4ZDlmMjA5NGJkYmRmYmFlZDdhIGxlZ2FjeS10cnVuaworNTM0NCBiZWVlYTk3NTc4Nzk4OTc4OTliZjI0NzhkYjFlMmQ0YWIxODIwMjZhIGxlZ2FjeS10cnVuaworNTM0NSA1YTUyMTljOGMyZTY3NGZjNDBmYmZjYmMwNzFiMDc2ZWMxYmEzMjQ5IGxlZ2FjeS10cnVuaworNTM0NiAzNjM3ZGE0Yzk4Y2IzMTAxNDdmMDU4ZWFlMzYwZGU5ODgzMmZkMzA5IGxlZ2FjeS10cnVuaworNTM0NyA2ZjFkZGYxMTM5ODJhZGExOGE2YjM4YjllN2ZmZTc2MjE2ODRmM2IwIGxlZ2FjeS10cnVuaworNTM0OCBhMGU4MjQ2ZDUyMzc4ZDUxODkxZTYwYTA2OWZjZWJjNmFhMjcxOWRmIGxlZ2FjeS10cnVuaworNTM0OSBmODhiY2NiNTQ4ZWY0YzE1NTRhNGI4NDExNzAxMjdhMDY4ZTYxNjdiIGxlZ2FjeS10cnVuaworNTM1MCA1MWM5Y2ZmZjMxZjNlMTdlYTM0NzIxYjAwMGJmNmFjODMxNTdkYTJjIGxlZ2FjeS10cnVuaworNTM1MSBlMDA2ZWQ4OGI0YWE0NjdkZWQ3YmFhMDYwMTlkNTk4MmQzMmQ4MmYxIGxlZ2FjeS10cnVuaworNTM1MiAzNjNhZjdlM2VkMmQyM2NiNzliNTk3MmJlNzdiYTJmY2Q1ODJmZDQxIGxlZ2FjeS10cnVuaworNTM1MyAyMWUxMDU0NjBhNDk5OWU4YmYxN2FiMTIxZjZmMGVmZmI3NDVlNTQwIGxlZ2FjeS10cnVuaworNTM1NCBlYzBiNDI4ODkyNDNhN2Y5ZTZiYzc1NjgyMDIzYmMzODc5MWVjMWM3IGxlZ2FjeS10cnVuaworNTM1NSA2YWJkMTQ0ODU4ODRmNjFiOGQxMThiNmYzMTQwNWYzZDFmMTE2ODgyIGxlZ2FjeS10cnVuaworNTM1NiBlNTEzZjBkNjUzNjhjMWU1ODFhZDYxNmFmZDRlOTBjOTUzMDMyYmYyIGxlZ2FjeS10cnVuaworNTM1NyAwNGUxNjkwZmI0ZDExNzQ5NjJiMzdhNjFkYzgzMzQ4ZmE0M2YzZGVkIGxlZ2FjeS10cnVuaworNTM1OCA5NjRkNzZmNDlhNWVjYTk1ZThlZDIzNTU5N2U3N2U0ZWJhZDM5MTkzIGxlZ2FjeS10cnVuaworNTM1OSAzM2IxNTRiNmM2MWJiOWZlOWU0OGIzMDU3NTQxNTFkNjgyYzA4MWU0IGxlZ2FjeS10cnVuaworNTM2MCA0NTBhZDU0OTY0MDc3MDFkZWZjODA4NTE1ZGViYWIwMzEwYmNjMjQ5IGxlZ2FjeS10cnVuaworNTM2MSA0MDk1NzgyYzk0MGVhYzQwZThjYTU4MTQwYjA2ZDQ5OTljY2FhYjAzIGxlZ2FjeS10cnVuaworNTM2MiA4MWI0MTMyNGQyNmViOGU0NmMxNjQ5M2QxMDcxYTQ0M2ZiMDcwN2QwIGxlZ2FjeS10cnVuaworNTM2MyBmMGQ5ZjgwMGE0YWFjN2FkYTFlYjRiZTFmN2E5NWJkMDhkNDgxMGI3IGxlZ2FjeS10cnVuaworNTM2NCA0ZDY5ZmRlZTlmNWQ0MjlhODQwYTFjMTYxMjcyMDMwYTIxOTY5N2UyIGxlZ2FjeS10cnVuaworNTM2NSA1NmU2MjhhNzdjOGQ1OGEzMDA5MzNkZjRiYzRkNGYzYzM3NDQ3OTU2IGxlZ2FjeS10cnVuaworNTM2NiA2NWYwNmZjMzk5NjAwYjA1ZGE0ZjFiZmExOTZkOTY1Y2NjYjE0OGJmIGxlZ2FjeS10cnVuaworNTM2NyAwYWNiZDg1YmNkYmEzNjUzODgxYTRiMDA5YWE2NDZlYTViMGQ0M2FhIGxlZ2FjeS10cnVuaworNTM2OCA1N2VjMjRlMGYzNWE4MGYwMjY1ZmU5NzgzNGUyZTZjMGVjYmYwMzdhIGxlZ2FjeS10cnVuaworNTM2OSAxMzU4MWI0MTc4MzdiODQ1YmNiOTA5MDYwOWRiOWE3MzNhOWE2ZGY4IGxlZ2FjeS10cnVuaworNTM3MCA3MzhjNzQ2MTVhYzQ4OThhY2RjZjAzZGY3ZWJjZjkyYjBiMzAxYWE2IGxlZ2FjeS10cnVuaworNTM3MSAwMjRmZGQ5Y2NkZjI0MGJkNTRmZWJlYWUxMmY0NTQ1MTJjZTA3NzUwIGxlZ2FjeS10cnVuaworNTM3MiAwYWZkNDI5NjBhMWZkMzYwYjBmOTY4MWExMzZkNjZlODg2OWFiM2MxIGxlZ2FjeS10cnVuaworNTM3MyAyMTQzNWEwYjliMTE2YTQ5ODNmOGYzNWVlM2JhNmEwZjNiMmJhZTc2IGxlZ2FjeS10cnVuaworNTM3NCA4OTU3YmNlYmYxMmM0ZmIyOTZhZmUyNDM1ZTEwMmVlYWY5MGZhYTQzIGxlZ2FjeS10cnVuaworNTM3NSA2MTlmMzE2NThiM2JhN2IxYWEwZjMwMWM0OWEzNTg3YmNkOGM2NDI5IGxlZ2FjeS10cnVuaworNTM3NiBmOWIxMDY5YTNlMjY1ZDkwZGVmYmM4MDM3NjNkZjgxZWI4N2VhNDAwIGxlZ2FjeS10cnVuaworNTM3NyA1YTI2MTJmYjZjMGUzMWIwN2U2MjNiNWQ0NmI1YTAzZDIyN2QwYWY4IGxlZ2FjeS10cnVuaworNTM3OCA0MjlkN2UxYjFmMmI4YzM2ODJjYjQ4ZmRiYjFkN2UwZTAwYmYzMjJjIGxlZ2FjeS10cnVuaworNTM3OSBkZjdiMTVjMWU4Yjc5NmZmNGJjMjcxY2U5ZDM1NTJkYTMxNTcyODg4IGxlZ2FjeS10cnVuaworNTM4MCA1MWRkMDY1YTk3YTYxNGVjMjBiMDgxOWE4NjAzZmU0NDAzMWIzZDNmIGxlZ2FjeS10cnVuaworNTM4MSBlMTZlMThiOTYyNmM4ZjJlZWUxYWE2Yjc4Zjc4YzA5ODJkOGVlN2U3IGxlZ2FjeS10cnVuaworNTM4MiA0NTA5ZGZlMTliNjg2MGRmMWE1MjgwZDQ4OWY0YTQxNjYzZGFkMTc3IGxlZ2FjeS10cnVuaworNTM4MyA3NjRiMGZjODY3YTQ3NWM3Yjc0ODgxNzJlMDFhODMzZTgwMWVlMWI2IGxlZ2FjeS10cnVuaworNTM4NCA5ZmFkMDI5ZjgzOGZkMWI5MmYzMzZlOWFiNDM2YzZiMGI5NTAyZmNlIGxlZ2FjeS10cnVuaworNTM4NSBjZmE5YjNhODQ4NzJlYWY5ZDliMjY3MWMwMTQ0ZTJjZmQxMmY2N2E0IGxlZ2FjeS10cnVuaworNTM4NiA4MTFkOWE5OGUxOGFiNDE2MjdlMzhjMWU5M2JjNWUzMmY1MTIxYTI5IGxlZ2FjeS10cnVuaworNTM4NyAxNzdmNTc1NzA4YmIwOTBiMThkMTk2MTQ1MTE2NGM0NWMwOWQ2M2MzIGxlZ2FjeS10cnVuaworNTM4OCAwYzUwZWM4ZTgzNThlOGQ0YTA3NjlmMjJiNzRhNGU1NzBkODU3YzYxIGxlZ2FjeS10cnVuaworNTM4OSA0ZjA4MmJlNTkwMmFlMTUzODZlMTY3ODU0OGIzOWUxMzdkZjFlNGY5IGxlZ2FjeS10cnVuaworNTM5MCAxNzYzNTYwNGJkY2UxNWE0Y2IyY2M2MTU5ZDA2NjFmZDM4ZmI2MDBiIGxlZ2FjeS10cnVuaworNTM5MSA0NDE0NWVlYjYxMDBjOWMyNWVhZTE2ODc5MzkyM2E2NDE2MjgwM2U2IGxlZ2FjeS10cnVuaworNTM5MiA1ZWI4YmRlMzAwYjdlZGUxNDNiYTI5NjRmM2FhYTY4ZmFlMDEzOWI2IGxlZ2FjeS10cnVuaworNTM5MyA0YTUzNDgzOTM5YzFlYjk5MjkxODk2Yjk3YTI4YzNkMWU4MzIyMzYwIGxlZ2FjeS10cnVuaworNTM5NCAwYWQ5ZDEyM2ZmNTVkZjM0OTUyNGJjMjQyMzJjNWE5Njc1MjliMjFkIGxlZ2FjeS10cnVuaworNTM5NSA3OTJlMzlkZmUyMTYxNmE2NDJjNTQxNGQ1OWIyYmM1ZjRjOWMxNDFlIGxlZ2FjeS10cnVuaworNTM5NiA3ZDFlY2VjMjVjMDZlZGZhNDk4Nzk3MTIxOTUyN2Q5OTc1ZjhjNjRiIGxlZ2FjeS10cnVuaworNTM5NyA3MzkyNzkwMzI4YmJmM2ZkN2ZiMzAwNjJjMzdlNzI3YmVlZTQ1MTM4IGxlZ2FjeS10cnVuaworNTM5OCBkY2U5MTU1YjA0MDFlZDg3ZmE0NDk4NWM3YTAzMzcyOWEyZDAyM2M0IGxlZ2FjeS10cnVuaworNTM5OSBlZmJkYzUwZTdmNTRjNTNiNzI3NGVkMzNlMzViYTRlYTVmOTUxZGE2IGxlZ2FjeS10cnVuaworNTQwMCA3ZTEyNjUzMTJkZDQyNzUzYzg2ZWUwNjNhZTRhNmJhNzNmNjU3NjA2IGxlZ2FjeS10cnVuaworNTQwMSBjYjVjY2JiYTE4NTY4ZWIzODgyMzA0ZTJhMTNlODkxNzJiNjkyMmYxIGxlZ2FjeS10cnVuaworNTQwMiA4YWFiODNjYzYwYTA0MWMwNzY2N2M2MzM2ZDA4YmI4YzBjM2YzNWYzIGxlZ2FjeS10cnVuaworNTQwMyAwOTcwZWJkMzE1MzY3NDRlMzg5ZjM3MTJiNDgyNzJkOGFjNWQwOTA0IGxlZ2FjeS10cnVuaworNTQwNCAxZDg2MjZiYzk5YzcxMDI5MWI1MDA1NTI0NzM1MzQyYjc1OWJiODBmIGxlZ2FjeS10cnVuaworNTQwNSBmMDE3ZjVjZGI0YmRiMjg1NDllODkyNGY2MjQ4NDczNzE2ZTM0NjQ4IGxlZ2FjeS10cnVuaworNTQwNiA0ZGZkZjIzNGNkYThmNTAzMzIzOWE2YzJkZWM4ZDRiYjRlNzRhZTM3IGxlZ2FjeS10cnVuaworNTQwNyA3MDgyYzFhMWY5YWI5ODZmYzEyNGM4ZmQ2NmFjMWNjNjUwZTM3ZjllIGxlZ2FjeS10cnVuaworNTQwOCA5N2Y3Y2ZhYmUwN2U3YTk0MGRjYTVmOTFjZDgyYmQ5NjcwN2UwMjZmIGxlZ2FjeS10cnVuaworNTQwOSAzNzE1MjA2Mzk3ZmU5MDYwYmQ0ODI3MmQyZWI0M2ZkYWQ2ZWYwYmUyIGxlZ2FjeS10cnVuaworNTQxMCA4ZWRiZWFhMmJiZjdhNzAyZWViMzg0N2VjMGUyMDllOGJlZjJlYzYzIGxlZ2FjeS10cnVuaworNTQxMSBjMDk5N2I0NjIzNDRiNDA2NjI5MGUxMDg5ZTIxMGMxZTNkN2FjZjRjIGxlZ2FjeS10cnVuaworNTQxMiBmMTdiN2QwYTc0ODI0NGU5NzRmN2MxMDY4Y2UwYTIzMTYwNjQ3YTM3IGxlZ2FjeS10cnVuaworNTQxMyAxMGMxMDMwYjcwYWRlOGYwMTNmNTEzOTA5YTAxMmMxMDUwNTNkZGI5IGxlZ2FjeS10cnVuaworNTQxNCBhOTgwZDA3NjA1MmRhYmRjMTk3MmUxODY4ZTZjMDg1YmEzMzBjZTViIGxlZ2FjeS10cnVuaworNTQxNSAzMDI5ZTgxZWRiYzc3NWI5NjcxMTAyNDU5NzJlYTdjOWYxYWY4OTliIGxlZ2FjeS10cnVuaworNTQxNiBiYzA4MDMwODRlNjBhOTViZDdlYTM3YTAxMDU4ZWY3ZTBmYjcxMzg3IGxlZ2FjeS10cnVuaworNTQxNyBhMWE5YjczNjRiYzM0ODY2Y2ZiYjk0Njc5ZmNmNzJiZjI2NDQzZDJjIGxlZ2FjeS10cnVuaworNTQxOCAxMWQ4OTkxNGM3YjliMWYzZjVmOWNiMzBlNTI5NjllN2FjZmY0OTA3IGxlZ2FjeS10cnVuaworNTQxOSAyMWRmNDIxZjAzZmUwZDk2OGU1MjA3ZjU4OGU2YzA4NDdjMGJlNjQyIGxlZ2FjeS10cnVuaworNTQyMCA0NWFkMWE5Mzk4NmEwZWJkMmM5OTA2NDM0OWIzMmM0ZTVjYWFjMDYzIGxlZ2FjeS10cnVuaworNTQyMSBjNWNiM2E1MzkzM2MzNTFhM2M0M2YxMDIzMTQzZTUzMTVkMTYxMTM2IGxlZ2FjeS10cnVuaworNTQyMiA1MjdkMWIyOTI1MjUwNjI4ZWJjZGFiNThkYTk5YjFiZjQzZDgzZTVkIGxlZ2FjeS10cnVuaworNTQyMyA0ZDdmZDlmZjc5OGQ1NTE5OTVkZmQ0MmFlNGY2NzU4MDM4YzNjM2I1IGxlZ2FjeS10cnVuaworNTQyNCBjYzkyMjJiOTQ3ZWUwYTE0NzVlNGZhYTRkNjM2ZmYxYzFlNmNmMTA1IGxlZ2FjeS10cnVuaworNTQyNSA0ZjlkNGU3MzA1N2M3NjMyMzkwZDZkZTgxOTg1MmJiZjk1MGNjYWJmIGxlZ2FjeS10cnVuaworNTQyNiBlYjZlYjYxYjYwNmZmZDMyNTY5OTZlY2FjNmRmMTJkMmM3NzllMTkwIGxlZ2FjeS10cnVuaworNTQyNyBmM2Y3YzAxYmM5NjZjZDI3ODFmZjI2NjJmYzQ3NjYwNmI2YmQyZTIxIGxlZ2FjeS10cnVuaworNTQyOCAxYzkxOWQwMmE2NDU5NzU0ODRiYzc4MmNhYzM2MWRlZmQyNWExYTcwIGxlZ2FjeS10cnVuaworNTQyOSBmNzJhYmQ2MmQ1MDgzZjU3ZDVmYWEwNjYyYWQ4ODQ3MGQwOTkwNjIyIGxlZ2FjeS10cnVuaworNTQzMCAwMjM1MjczNDI1OTk2YTM2MmQ1OWEwYmFlZTNjYWI0YTRmZjU2OTkyIGxlZ2FjeS10cnVuaworNTQzMSAxMjJkMTQ5ZmE4MDE2NDYwNzU2ODQ3MjA1NDYwOTJlMmQ3ZWMzZTUyIGxlZ2FjeS10cnVuaworNTQzMiBkMDA3MmQxZGY4MmMyYjdmOWRlMDE5ZWZlYzA5NGIyODFlZDkzZTM0IGxlZ2FjeS10cnVuaworNTQzMyBmOWZiZmQ5MDMxNTMwMmRlM2Y5MWNiZTY3YmU0NGM3YzQ3M2YxYTQ1IGxlZ2FjeS10cnVuaworNTQzNCA3NDk1M2E0MTYwN2MxYTYzZTBhNTkzMTk1ODNjMDVhMzcwYzY4OTgwIGxlZ2FjeS10cnVuaworNTQzNSA1MjEzMDY2NzllMzQ5ZWZjMmZiZTEwYmZiYjIwNjBkMDFhM2RhODRmIGxlZ2FjeS10cnVuaworNTQzNiBjMDBmYWUzODBkYzc4ZDJhOWY2MGY1M2NmNWU3NjcxM2UxMDAxYjM2IGxlZ2FjeS10cnVuaworNTQzNyBjZmM2NmI4Y2EyMDI3MDAxZmZlY2I0Mzg3YmVkMjgxMDc3MGNjZWU2IGxlZ2FjeS10cnVuaworNTQzOCBkMjNkNzNiNGU1OGE5ZmZiMGM3MDNhMmQyZjQzODk3NmUyNzE1Mjg2IGxlZ2FjeS10cnVuaworNTQzOSA5OTk0NWZkYTcxOWRiMjIyMWI0NjEzNDA4YzEwMmI5ZjlkOWViNDZmIGxlZ2FjeS10cnVuaworNTQ0MCA5ODY0ZmUwNTllMGRjNGM1MDVhOGMxMjAyNmQ3ZGFlMTgwZDM5M2ZiIGxlZ2FjeS10cnVuaworNTQ0MSBkMWM0NThjODdmNGE2YjBlZGZhYzZiNDZmYjQ2MWI2MDU0ZjM3NDdhIGxlZ2FjeS10cnVuaworNTQ0MiA4MjM1NmJkZGY3MTJjZWJiZTZlMzE3ZjVjNzMxZWYzODMxMjBkMDcyIGxlZ2FjeS10cnVuaworNTQ0MyA0ZGU3NzkyMzJhYTRjMGE0OWQ2MTI4YjY3ZjNmYThmYmZjYzAwMDQzIGxlZ2FjeS10cnVuaworNTQ0NCA0NDE4NjZiZTJlYzk5MTZhMjBhZDc4NzkxOWM0YTNkZDBhZjhjNDk0IGxlZ2FjeS10cnVuaworNTQ0NSA3YTY3ZGJjYjZkODNjZjJiMGFiZjEyM2Q4ZGY0OGFhOWZiYjU3OTkxIGxlZ2FjeS10cnVuaworNTQ0NiA3ZWVhOWI0MjY4MDI0YjUwZDk5ZDQzMmJiNGYxYmI0OWY1MWJiNjA1IGxlZ2FjeS10cnVuaworNTQ0NyBiNmNmYTA2M2I4OWJiMGJiMTNlN2FmMjhmOWNkMjEzYWZmZjI3YjVkIGxlZ2FjeS10cnVuaworNTQ0OCA1NmFkMjQ3Y2JmY2JlZDAzYzNjMzNmN2E0Mjg5MDJmMTczYjBkNDIyIGxlZ2FjeS10cnVuaworNTQ0OSA4ZDI5MDc4NTZiMzc4NDcwMTM5YzFmZDY1MmMzZDNhYWQyOWUxYmQxIGxlZ2FjeS10cnVuaworNTQ1MCA3YjM5MTE5NjA1NjQxNWY1MjZkNGUxYTEzZWJmN2M0YWU5NzdiNGYwIGxlZ2FjeS10cnVuaworNTQ1MSA0YzFkODA5NTM5NTA5YjhlNmJlNzI0Y2QwMzA5YjZiZTRhMWMwOGJhIGxlZ2FjeS10cnVuaworNTQ1MiAwZDcxMDBmZmI2MWE3ZTczOGFmYjEwZjkxOWM1Y2M1NTE0NDhjZjNkIGxlZ2FjeS10cnVuaworNTQ1MyA3ZDI2ODM0MmRjM2EzYWM5YTQ3YTAzNGMyZDY5MDhiOWRiNDVjNjc5IGxlZ2FjeS10cnVuaworNTQ1NCBmOTMzYTUzMGMzOGYxNzA3MjY1OWRjMDNhNGRhNmRjZGJmM2M4OGQyIGxlZ2FjeS10cnVuaworNTQ1NSAyZmU5ZDAzNzFlY2QwNjcxYmI5NWEzMWIzMmVhMTQ2MzhmMmQ4NDc5IGxlZ2FjeS10cnVuaworNTQ1NiAwNGJhZGE4ZDY1ZGU0MzVkNTM4NmQ4ZTVmZGQwZDdiZjZhODdjY2YxIGxlZ2FjeS10cnVuaworNTQ1NyA5NDc3YTQ0NTdlNTY0MzMxNWMyMmZkZTVhOGQxYjc5NjRiMmUzZmMzIGxlZ2FjeS10cnVuaworNTQ1OCA0NDhlZGM5MjNjYWQ0MGQ3MDcyYWM2YzlmNzM4NmVlYWJiYTE4YWRmIGxlZ2FjeS10cnVuaworNTQ1OSBkMjk3YzcyMjA2MTM1ODQyNzdkNzRjMzQwN2Q0YmIyNDc0MjQyOTE5IGxlZ2FjeS10cnVuaworNTQ2MCA1ZDQ3NDlhNDcwYjRkMDIwMGI5Y2VhODdiODYwMWVhNGQ1YzA4NDM2IGxlZ2FjeS10cnVuaworNTQ2MSBhYzAxNTJmNjNiZGRmYjc5OGIxMTY1ZTdlNDVkZWYxYzhkZjM3ZGFlIGxlZ2FjeS10cnVuaworNTQ2MiAxYThkNmM3ZGQ1NjBmMTk1MGU0Y2I2YTc1NTFhZDM2NGE0NDEyYzcwIGxlZ2FjeS10cnVuaworNTQ2MyA1MTNhOTZhNTc1MGZiYTc1MTc0Y2UzYWUwMmQ5MDc5NTA3ZTBlOTNhIGxlZ2FjeS10cnVuaworNTQ2NCBkNGZmNDdkZjU5MjBkZmQyMTQ2ODM0OWVkNGUzNTE0Y2FkMjAzNTA1IGxlZ2FjeS10cnVuaworNTQ2NSA5YmNhOTRhMzZhMDgxMGFmMjA0ZDY4YzA2OTY3ODg5OWYyZmZhMWQzIGxlZ2FjeS10cnVuaworNTQ2NiBiYTJmZTVmODM2YTgzZGUyZDc4ZTVhYWQ2NWU1ZjM0ZDJhYmUwZTRjIGxlZ2FjeS10cnVuaworNTQ2NyA1NTg5NWI1YTMwMDdiNGJjOTFmMzBiYWFkZjk3YmU4ZjJiMzBjYzZkIGxlZ2FjeS10cnVuaworNTQ2OCBkNDZkODMxYmM1ZjMwMTIzZDg1N2M4MDc2NTk2N2JmZjkwZjY4MjQzIGxlZ2FjeS10cnVuaworNTQ2OSA1OTExZjI0YmNjMmRlMDM3MGVhOTA5YWRkZDlkOWZhODU3YWM1NTkxIGxlZ2FjeS10cnVuaworNTQ3MCA4OTg3Y2ZhNzU4YmJkNWI3ZDQ5ODAwY2QxODc3MTU1ODc4MTUxNzQ4IGxlZ2FjeS10cnVuaworNTQ3MSBiZWNkNTgxNjA5MTEwYmViYmVmZGRhOTFjZjdmY2Y0MTg0ZTBmYzIwIGxlZ2FjeS10cnVuaworNTQ3MiBhZDZmMDM5YTVjNDkyMmY4OTBmY2MwNDAxYWEwMGY4NTA2YWNkODQ3IGxlZ2FjeS10cnVuaworNTQ3MyAyMGNhNThlZGM4NTU0OGM4MGI1MTFhMDA4YzNkN2EyMDAwM2E0NjA5IGxlZ2FjeS10cnVuaworNTQ3NCAwMmYyYzUxOGFhNDZiOTQzNjZlY2IzMDFkOGZiOGFmYmQ1ODQwMjhiIGxlZ2FjeS10cnVuaworNTQ3NSBhNTEwMjJmMTk4MGZkNWExNWQ2OGEwZTliMzBlYzE4NjA0MDBlMDllIGxlZ2FjeS10cnVuaworNTQ3NiA3ZmI2ZjIwZTJiYTI5NDQ0ZTI5NDJhOTdhM2JiYmQ1OGNjNzBkNDRkIGxlZ2FjeS10cnVuaworNTQ3NyA2YWE0ZTkyMDlmYmQ4ZWRiNzA1YjcyN2YxZGIwODQzYmZhODFjMzgzIGxlZ2FjeS10cnVuaworNTQ3OCA3MmE2MWExNDllNGU2YzcwMTliMzEwMzJjNThkZTAzMGY1NTQ2NWYwIGxlZ2FjeS10cnVuaworNTQ3OSA2YjljYjY2MzQ4OTc1ZDI0MzIzYmU0Y2MzMmM5Y2VhYTc0MjczY2I3IGxlZ2FjeS10cnVuaworNTQ4MCAyMTA3Mzg4NjYxNjYxMjI4NTBkZGQ1ZGMzZmU4ZTEyMDFjN2NjNjJiIGxlZ2FjeS10cnVuaworNTQ4MSA1ZDNkMjk3MDQ2ZDJjNzAzMTljMmIzMGM2NmY2ODBlNDVlODRjNGI2IGxlZ2FjeS10cnVuaworNTQ4MiAyNjcxODQyYzcyY2ZjNGRjNGY0YTFlZGJhOGNlY2Y2ZDg0MDYyYjk0IGxlZ2FjeS10cnVuaworNTQ4MyA3YWUzMzI0NzI2MjljNGFmOTE1YzJiYTg1ZmU5OGExMjgxZDdhMWMwIGxlZ2FjeS10cnVuaworNTQ4NCA3Nzc0NDAwMzU4MTMzOTgyZTc3NmE1OWQ1OTA0NGIyMTBhMzVlMmNmIGxlZ2FjeS10cnVuaworNTQ4NSAyNzM5MGI1MzY2NDBjNTFiNDU0MGFmYWE5NDVhYWI1ZDBjYjQzNDk4IGxlZ2FjeS10cnVuaworNTQ4NiBkMjk1ZjRjOThjOGE2NDYwZTNkYWY2MDJlODFiYTFiNGQ5NjViN2ZlIGxlZ2FjeS10cnVuaworNTQ4NyBjNzY3MWMzNmM3MjVlNjg1YjEwYmEzZTczOTcyNWM3NzczYTY5NDE0IGxlZ2FjeS10cnVuaworNTQ4NyBlNjNkODNmODI3NTg1M2FhYWEzZDE5NzJjYjg2NTY0NTA1ZTY1NTgzIGxlZ2FjeS10cnVuaworNTQ4OSBjNWQ4NTI3MzVlN2Y3YjQ5MGVjYmNjYmM2MGZiNjNhOTdhMTRiN2MzIGxlZ2FjeS10cnVuaworNTQ5MCA4Nzg0NzIyOGIxNThkOTk3MWZhOWFiM2EyNWZlM2MyMjY3MjMxZGQ4IGxlZ2FjeS10cnVuaworNTQ5MSA1NGFhODdiMWNjZWU0NTlkZDFlMTI5ZWRkNDk5YjMzYmRkOWVmYzRkIGxlZ2FjeS10cnVuaworNTQ5MiAzOTExZDRhODlhYjBjYWQzNjg5MmQzNmI3NDI1Y2UzYmRiZWZlNThhIGxlZ2FjeS10cnVuaworNTQ5MyA3NGM4ZmNkYzk3ZGFhNjFhYWIzNGI0YjdjOTQwNzM4MzBiMThiYTViIGxlZ2FjeS10cnVuaworNTQ5NCBkYzRiZWMwMzY3ODNlNjcwMmZkOTAyNjkyZGUyYzZhMWVmNGZhMGE5IGxlZ2FjeS10cnVuaworNTQ5NSA3Y2QxZGE0MDY0ZDc4NDE2OTMyMmZlNDhmMWNjZmFlNzBlMDM3NzdhIGxlZ2FjeS10cnVuaworNTQ5NiAxNDc1M2MzMmU4YjQyYTEzMmViMTczZjc1OTkzMmQzMTcwMjgxYzEzIGxlZ2FjeS10cnVuaworNTQ5NyA0MDViNDczYWE0YTEzNWM1MGYyZWZlODE5NjViODc3OWFiYTg0YTUyIGxlZ2FjeS10cnVuaworNTQ5OCA5YzQ5YWNlNmIxZTc4ZjE5MTA2NTMxNGZhZDgxNjgyMjRjZTZkNGU2IGxlZ2FjeS10cnVuaworNTQ5OSAzYjNlNjgwNzU4MzMyYjgwOTdhODIyZGVmMTc1ZDUwNjhjNjUyNjc1IGxlZ2FjeS10cnVuaworNTUwMCA0N2Q4YmNhYmQxNzZmNDIzZWEyZDJhN2Q2ZTQ5OGViNGZkMjlmMjc4IGxlZ2FjeS10cnVuaworNTUwMSBiODM4ZDJiOTUyMDEyZmYxY2ZiNmY2NTQ4MWM4YzYwMmI0MWRiYzY5IGxlZ2FjeS10cnVuaworNTUwMiBjZTVmMGI4M2Y3ZTlmNGUwZTY2NzBmMzg4YWQ1MGE2MmY5MGIyNjk3IGxlZ2FjeS10cnVuaworNTUwMyBiYzhlZWZmZDRkMDY4NzZkMmI3MjhmZTAzMWM4OTc3YTNlNWRlMTY4IGxlZ2FjeS10cnVuaworNTUwNCBmOGFiYzAzN2I5NGY4Y2RlNDkxZmI1OWU0YWNiNzQwN2E5ZTZkYjA3IGxlZ2FjeS10cnVuaworNTUwNSA0M2VhMmM4YjMyODZlODg3ODI0ODI3MGUxMGYzMmU1YTQyYzQ0ZDBiIGxlZ2FjeS10cnVuaworNTUwNiAwMTZmMzY2MmVmOTgzOGJiYzgwYmJiNjVlYmQ0YzA4YzMzNWMxNDI3IGxlZ2FjeS10cnVuaworNTUwNyBkYTZkYmRmZDUxZGIxYmNjZTcxZTQyMGMwNmExMTk4Yzg5ZjdjMDRiIGxlZ2FjeS10cnVuaworNTUwOCA2YjljNTc1YzBjYmEwMzgyNGQzNDE2ZDI1Y2Q2NWQ2MmM4OWRlOGM4IGxlZ2FjeS10cnVuaworNTUwOSA2YWYwZmJjODU1M2FiNmIwNTY0ODBkYzcwYjVmNmUwY2RjNDE2NGYwIGxlZ2FjeS10cnVuaworNTUxMCA0NTgxYTBmMDM1M2VhZjMwZjg4NWQ1OTg5NjA4MWYyZGY4YTBmYjYwIGxlZ2FjeS10cnVuaworNTUxMSA3ZTdiYjAwYTBhMmUyNWQ5NWFmZjIwZDMxNTFkYWI0MmIzMzQxZDU3IGxlZ2FjeS10cnVuaworNTUxMiBiZGE1NGVhMjNhODBjYzJlODBjMTkwYmI1Y2Q5ODhiZTU2MzE5Y2ZjIGxlZ2FjeS10cnVuaworNTUxMyA5NDgzNWIzZWRmM2UwNTlkMTdlZDY3ZDc1YTc5ZTlhMWUwM2I0YzhiIGxlZ2FjeS10cnVuaworNTUxNCA2NWVhNzg4NzViYzgxMjkwNWY5YjkyZDdjOWQwNDY3MWMwODMxNDNhIGxlZ2FjeS10cnVuaworNTUxNSAwMWJjMDZjMmU0N2QzYmZjYThhYjEwOGU1NmE3MWY5ZDI5ZmUxMGJhIGxlZ2FjeS10cnVuaworNTUxNiA2YzY5NGVhZDE2Njg3NTM5ODNlMjRlZjIxNGMyMGM2YTg5OWZlNDUwIGxlZ2FjeS10cnVuaworNTUxNyAyY2Q0Y2MwNjVjMWY2MzY2ZGUzMTAwYzEwZWJjYzQ5ODg1N2M0ODdiIGxlZ2FjeS10cnVuaworNTUxOCBhOTQ2ZTRjYzZkNWIwMTcwYzBmNTNmZWNiZTkyZjA0YmIyMzU3NGRlIGxlZ2FjeS10cnVuaworNTUxOSBmZDUwOTg2ZjM1ZTVjY2RhMzg2MmQ1ZjdmNDgwNWUwZGYwMDA1OWM3IGxlZ2FjeS10cnVuaworNTUyMCA1YjkyOGI2OTVmYTRmNzc1OWRjZDlkNmUwOTk0MGUzZDM3ZGY3N2FiIGxlZ2FjeS10cnVuaworNTUyMSAyY2IxNDE2MDEwYjMzNjE2MzFiMzhlN2ZhNTBlYTZhNTk4NGIyZDMwIGxlZ2FjeS10cnVuaworNTUyMiBlZDA4NzQzOTg0MzNkYThmOTRiNGFhNmZiMzQwMTkyNzk2ZDFkOTBlIGxlZ2FjeS10cnVuaworNTUyMyA3ZTJjMDRlNmY3ZTcxNzBiYTdlMTJiNjRiYTRmYzY0MzJmMzYwNzlhIGxlZ2FjeS10cnVuaworNTUyNCAyNGFmOGVhYjdiNzYzYmI0OWQyNzQwMzhmYWVjZmYzM2UwMDBjNTczIGxlZ2FjeS10cnVuaworNTUyNSBkOTRiNTAwY2I5ODYzMDY4MzE3NmUzYjI3ZWU3NGU3MGY1MThiMDJmIGxlZ2FjeS10cnVuaworNTUyNiBjMTIwMzBmYmI1YjYwZmI1Yjk3NTY4ZDkwZGZiZmE0NjE0ZDZlNDU0IGxlZ2FjeS10cnVuaworNTUyNyA2NjBlNmYzNTk5MWNiYTQ3ZWQ5NzNjZmY5OTI0NDE2YTk1Y2UzMmRjIGxlZ2FjeS10cnVuaworNTUyOCBkZDU0ZWVmZGMyYzk3ZjA1ZDQ5ZWI3NDNkNDY3ZDgwYTNhYzQ5MzcxIGxlZ2FjeS10cnVuaworNTUyOSA4ZDUxNzkyNzc4NThiZTk5MDdhMDQzMmU2YjA0MGU2MzZjMGI3ZmIyIGxlZ2FjeS10cnVuaworNTUzMCBiMzMzZjE2ZmI0MTk2ZTkzZGVlZjRmOWE4YzA1NmYwOGMyYTA1YTkzIGxlZ2FjeS10cnVuaworNTUzMSBkZjdkZmFjMzBjM2UzYTkxOGNlNzJiMmJjZGYyNmI1NzMyMzdiZmEwIGxlZ2FjeS10cnVuaworNTUzMiBhNTc2OGU0ZWUwNDUzMjQwY2RmYjFiMDQzMjI1MmY1NmE0NWQwY2M2IGxlZ2FjeS10cnVuaworNTUzMyAxMzRjNmMyZDFhYmY5Yzk1ZDkwYWFmNWVlOGMxNjUzM2NlYmQzODRhIGxlZ2FjeS10cnVuaworNTUzNCA2ZWM4MjBkYjJmZmFmNjZhYWMxNTZiZWZjM2UxNjY5OTVkMmVhMWYwIGxlZ2FjeS10cnVuaworNTUzNSAzMWM1MmEwYTM3MmMwZWVjNzVjYzRiNzIyNGE1NDRkMWY5NzgxMmRlIGxlZ2FjeS10cnVuaworNTUzNiAzMjhhYzc0ZjZjYTY5ODM0ZTllNjU5Nzk4OWIyYWU4M2FlZWM2ZmE4IGxlZ2FjeS10cnVuaworNTUzNyAyNDZkNTQyMjEyNGY5OTljZDE4Y2UxOWI5MWI2ZThjZmJmMDVlM2U1IGxlZ2FjeS10cnVuaworNTUzOCBmYmI4ZWRkYzkzMDlmYjFlODgyMDZlOTI4YjUzZWFlZjVmMDI3NTE5IGxlZ2FjeS10cnVuaworNTUzOSBkMTRjZWYxNGZiZjI3ZTcwYjgyYWYxOGIyYjQ0NjQzMjk1YTViYmQxIGxlZ2FjeS10cnVuaworNTU0MCBkNmIxMzBmYTkxYjY1ZDM5ZjAzZWUyMWFhMGQ3MTU4Y2I3NGVlM2I3IGxlZ2FjeS10cnVuaworNTU0MSA5NzFlNWNhMThiZDFkODRhZTM2ZTk2YmU5Mzg1MTBlNmM0NDc1ZjYwIGxlZ2FjeS10cnVuaworNTU0MiBlNDI5YTdlNzFlMGNjZDIyZDExMWY2YjliNzM5NWEyYTgxNGNkMmVhIGxlZ2FjeS10cnVuaworNTU0MyA2OTljZjhiOTRmODAyZTg3ZmU4M2Y3MGZjNjFjMzU1MGVmMjkwNGM3IGxlZ2FjeS10cnVuaworNTU0NCA3MjI2ZGQzMTc1NWM3MDNiMDBkMGIwMDhjZjhiNTJhMDdlNjVmODlmIGxlZ2FjeS10cnVuaworNTU0NSBlM2ZiY2VkMWJjMDliMzE4ZTU2MmM5MzY0ZjNmZDIxNDM4YTkxNjdhIGxlZ2FjeS10cnVuaworNTU0NiBiZmE0MjdkYTU4MGVjZGYzNGI0NGJmYjFlNjAxMmJiOTRmNWVhYjYwIGxlZ2FjeS10cnVuaworNTU0NyBkYjg5YWFiNDE1YTFiN2JiZTZjMzQ1NTU3NDk0N2VjODQyODczM2VmIGxlZ2FjeS10cnVuaworNTU0OCBlYWRhMjQ4Njc2ZGVmNjNiODA3ZjYwNmM4MjBlMjM0NDUyM2RjM2I4IGxlZ2FjeS10cnVuaworNTU0OSA4N2ZlYTI2MWEyNjNlN2NmMWY5ZWI0NWM4YjQ2ZjE1YjY3NDNkNTEyIGxlZ2FjeS10cnVuaworNTU1MCAwN2NiNTAxNDFkMDcwNzJhYTU3YWFlNGVjYzVkYjAwOWZlZjM1MzY1IGxlZ2FjeS10cnVuaworNTU1MSA5MWMxYmI3NWU5NDVjZjhjYzk2YjI3MDk4MTdiMWI5ODE1MzI3NjA0IGxlZ2FjeS10cnVuaworNTU1MiBhN2M5N2M0MzcxOTFkNDRjY2QxMzBmN2I4NzliMjQ2OWQ0Yzc0OWY1IGxlZ2FjeS10cnVuaworNTU1MyBkN2VlYTkwMTNlNzM2Mjg4YjNkZmE3YzQ3OTA5MzE4ZjM0NjVkNDJkIGxlZ2FjeS10cnVuaworNTU1NCAzMTY4NGM1YmIxNzI3Y2NiNDg2NjMyNjhiZDNhMzFjNTFkNmQwMDg2IGxlZ2FjeS10cnVuaworNTU1NSA3NTkzNjk5MGEzMzBjMGE0NGVjYzhkNWY0NzMzNTNjYWEyMzEyOWZiIGxlZ2FjeS10cnVuaworNTU1NiBlZjlhYzZkZWY3MWQzYjZlYzkzODllMjUxNmY3ZTA0ODA3OGVmZGMxIGxlZ2FjeS10cnVuaworNTU1NyBmYmZhM2QzY2E0ZTA5NTY2ZDM0ZjZiZWJhMTAwYjhkNGYyMGJmYjRiIGxlZ2FjeS10cnVuaworNTU1OCA3ZGRmYjYyOWFjM2ZlOTAzODVhNDVlYzBhYWEwOGI0YWMwNmNjNDNlIGxlZ2FjeS10cnVuaworNTU1OSAxZmYxMjYxOWExNGM3ZGNmZGQyM2UxMzcwODUzM2ZhNDliNWUyOGU0IGxlZ2FjeS10cnVuaworNTU2MCBiM2E4MDEzY2I0ZmEzNjc1NTMyZTY1NTE4NTM5NGM5YjBlNDFhN2FiIGxlZ2FjeS10cnVuaworNTU2MSA1YTFmYmQyMWZjMmE1YTVmODQ2MWQyMWQxMWZjNWIxN2RiNWNmNDljIGxlZ2FjeS10cnVuaworNTU2MiBjMWQ3N2Q3NGZlMzUwNjhmZGJjMzZmNGM3ZjhjZWY3YmU0MmFkM2Y5IGxlZ2FjeS10cnVuaworNTU2MyA4NDEwNGQ2YjRhZTdlZGYwMDU0YmM2NDE2YmE5Yjc5MWMwZTZkYjgwIGxlZ2FjeS10cnVuaworNTU2NCA4YWE2OTE4YTg4YzZiMTU0MWM3ZDBjZDZmNDk2MGM0NDc4OGZlMjk0IGxlZ2FjeS10cnVuaworNTU2NSA0YzgzZjU2OWI0MzQ1OTNiMzg1NTMyNDBmNTE3NjRiZTYyOWFmNmQyIGxlZ2FjeS10cnVuaworNTU2NiBkMjQ5MTExZDRjY2NmZjY4NDFmZTg4MGJmYWY0M2JiNDM5OTViNmQ5IGxlZ2FjeS10cnVuaworNTU2NyAxNzFlZWY2OWEyY2QwODdmNjMxMjViMjhiMzNiNmI5NWY1OWM3N2YzIGxlZ2FjeS10cnVuaworNTU2OCAyMzdjM2IyYTYxODcxYjA3NTdiNThlODJkYTg0ZGQzNGNkY2I1ZmE0IGxlZ2FjeS10cnVuaworNTU2OSA2OTI3MTVhYmJkMGJiZWVmNmYxYzNhNDcyYzc2YzkwYTU3MDkyYjk4IGxlZ2FjeS10cnVuaworNTU3MCBlNTFlMTdiMmQ4OGIxNWQ5YTk1OTg2ZWIxM2FmOGE2MmQ2ZDE3OThhIGxlZ2FjeS10cnVuaworNTU3MSA1NmRiYTAzN2I4ZDZjNjU2NDVjMWY4OWJjNzhlMjFiMWNkMGRkMTQxIGxlZ2FjeS10cnVuaworNTU3MiA0MzhmODhiNTUxNTRhZDRjNDJjNjA1MTY3NDk4MjQzMTkzZjU0NWNkIGxlZ2FjeS10cnVuaworNTU3MyBjNDFhOGU1MDE5NzM0M2M5NzcxOGY2MzZhNzA1MTZhNmE3ZmNkYTJiIGxlZ2FjeS10cnVuaworNTU3NCAzZGM5ZmYzYWJmMzYxNjMyZGVjZGExOWE2MTc2NGVkMWI4ZjViMTk4IGxlZ2FjeS10cnVuaworNTU3NSBhOGZjYzUxMWE4OWE4ZjM3YTkzMzJjNzdkOTI3OGU1YTFiMTFkMWM0IGxlZ2FjeS10cnVuaworNTU3NiAxNDEyM2UwOGU4ODdlNDI4M2FkNjQ4OGE3ODQ2NGEwNWQ3MGZhMmQ1IGxlZ2FjeS10cnVuaworNTU3NyA1YzBhN2Y3ODM2ZmIxZGJkNDA1YmQxMWEwNzQ4NGZhZDFmZjk4NTExIGxlZ2FjeS10cnVuaworNTU3OCA5Zjc2MTg1Yzk2OTM3Y2Y1NWNkYThmZWI3ZTY1NWY4MjI1NDNhNTNjIGxlZ2FjeS10cnVuaworNTU3OSAzNmY0ZDU0Njk5MTUzM2M5NGE0MDI2YTAzNTU3ODIyNzFiZTA2YmZlIGxlZ2FjeS10cnVuaworNTU4MCBhZjgyMjkxMTM1YmQwNmMwZjgzNWI1N2Y0MGM0NWQ3Y2YxMDE1YTY3IGxlZ2FjeS10cnVuaworNTU4MSAzYWFiOTI1ZWJmYjAzNGUwNWNiNzljMDFmNTc0NTU1ZjdmNmFmOGI3IGxlZ2FjeS10cnVuaworNTU4MiA5NDk3Y2RjZGI2YWE1MWI0ZjFhZmU1YmVhODg2ODNlNjMwMWQwYTIwIGxlZ2FjeS10cnVuaworNTU4MyBkYjEzOWE0MTEyZjMyZjUzOGMzNTBkOWRhY2M2NWY5NDM0MDQwNjU3IGxlZ2FjeS10cnVuaworNTU4NCAwNzczOTljYzgyZThjZWIyODhiMDA1NTcyNThiN2EyMzBkZjRmNzg3IGxlZ2FjeS10cnVuaworNTU4NSBlNDc3MDk0YThjYTEwODgyMGY4ZjQzOTAyYjZjMzcwZGM0N2Y0NmJkIGxlZ2FjeS10cnVuaworNTU4NiAxMDcxZDE2YzkzMGMxZDg2OWNlMThkZDBlYmFhNDEzNmY0MmI0OGEzIGxlZ2FjeS10cnVuaworNTU4NyA0YTEyYTU0MzE3NWQwYmE5YTkzMDYwY2FiMzgwNTEwMzU4NGMzN2Y1IGxlZ2FjeS10cnVuaworNTU4OCBjMTBmNTViNDZhMTE1MWIxYjliZjYwYWE1MTgwOWZkNjM2MmYwZDMzIGxlZ2FjeS10cnVuaworNTU4OSAyY2FhM2UyODM1NjhkMDc1YTRjZDIwNjY5NzRlNjA0NDEyOWYzYTEzIGxlZ2FjeS10cnVuaworNTU5MCA5MzU2MmRkZTIyNGFiN2QwOTRlNWM3NjU4NDZhZThiZWU1NzBhMmQ3IGxlZ2FjeS10cnVuaworNTU5MSAxN2YzMTFlYTBjOWEwN2M1NWJkMjBlMGIzMGQ5ZjE5YjY2MmUxN2FlIGxlZ2FjeS10cnVuaworNTU5MiA5MDU2NmM5YzE4OWYzMmQxYjc5NDdjOTgzZWE1ODZiZmZhYjI1MDlhIGxlZ2FjeS10cnVuaworNTU5MyBlOTA2NDNmMzNjNjRjMTJhNjI4MWNmY2RkOWE1ZWEzMTI4OWU3ZjU1IGxlZ2FjeS10cnVuaworNTU5NCA4NzEwZDcxNDljNmYxYmJlZTE1YjI3OTQxZWVhMzIxNGUzY2MwMTdmIGxlZ2FjeS10cnVuaworNTU5NSAyN2EwNzY5ZGI5MjE5MzM0MGU2NzdhZWNmOTBiYmVhYjZkOTIwMmY5IGxlZ2FjeS10cnVuaworNTU5NiBlODM1YTIyYjBiZGRlOTRmZWJjMDFhYzA2NzM1ZTYxZTIwODliOGE4IGxlZ2FjeS10cnVuaworNTU5NyBkY2YyYTM3ZTczZDlkMzZmMTgxYTc0YWE3Y2JhMDhhY2Y1YTNkNTU4IGxlZ2FjeS10cnVuaworNTU5OCA3MWJiNzFlMzA2ZmUyZGNiNjZlOTY1ZTBkZDhlNzQ1OTM4MDA3NTNjIGxlZ2FjeS10cnVuaworNTU5OSA3MGVlNGUzY2IzZDgzODI2NGNlMTRhNzAwYTlkMDgyMTYzZGEwNWI2IGxlZ2FjeS10cnVuaworNTYwMCA1OTEyODdhMjJlZTU5NmRlYzFiMWQ2YmUwYmJmOGU3NmVmNjNhNDBlIGxlZ2FjeS10cnVuaworNTYwMSAyNjc3ZmJiMTE3ZDYyYjQ1MWFmY2M0OTc2NjZmMjhkZTEwNTQwNGI1IGxlZ2FjeS10cnVuaworNTYwMiA5OTlmY2NlNDk2Zjg0OTU0ODk4MmM0YTU0NWMwNWY2ZGI2NGJlZGQ5IGxlZ2FjeS10cnVuaworNTYwMyAxYjRiOGE0ZmI0NjMzNDAxNzEwODc3M2NjYjUwZDI3ODRjOTQ5MTkyIGxlZ2FjeS10cnVuaworNTYwNCBhZGNjOTE2Yjc2MTZkODA3NDZjMWMxMmYwZTlhYzJiYWIzNTFmZWJhIGxlZ2FjeS10cnVuaworNTYwNSBmMWYxOGM1NWQxMzY0MjQ1NDI2OTYyYjkwZjc5ZWE5MDE4YzJjM2U0IGxlZ2FjeS10cnVuaworNTYwNiBkZjA3ZjI4NzExZmRmMzI4OTlmYmFmZDczNTI4YWE5NmUzYTU0MjRlIGxlZ2FjeS10cnVuaworNTYwNyBjZDM4OGNjOWJhOThkY2I4OWZhODAyZTNhMWU5OWQ0YzA3NjlhYmY2IGxlZ2FjeS10cnVuaworNTYwOCAzZjhhNzMzODBjNGJjY2QxODkwODRhZTQwM2MxYjA3YWE5NjZiZjBhIGxlZ2FjeS10cnVuaworNTYwOSAzOTNiNmQ4MWIxMjZiMjc0ZDY3ZGQ5ZDYxZWZiNTA5OWEwOTkzMGIxIGxlZ2FjeS10cnVuaworNTYxMCA3YzVmOTRmNTZmNzkzNTg2OWVjZGJmZjY1NGVhZTJmZWQ5NTEyODMzIGxlZ2FjeS10cnVuaworNTYxMSBmYmY1OGQyNzhkNjQ1ZDBhNTI3YmU5OGU2NTZlNGM0YTRkOGQyZWUxIGxlZ2FjeS10cnVuaworNTYxMiA0M2Y4ZGIyM2VmMTVlMjBjYjU2NTlkYTBmMDIzNjNiNWYzZjNjYTZmIGxlZ2FjeS10cnVuaworNTYxMyBhOTVmZjg2NzU3MTgxMGU2ZTI1NGFjZjY2ZGZiZGQyZmI0YWIxZDIwIGxlZ2FjeS10cnVuaworNTYxNCA3MGE5MzI3ZjZjNGM2YjJiMzU5OGI1YWQ1ZmMxMjY3ZmMyZGY1YmEzIGxlZ2FjeS10cnVuaworNTYxNSA0OGRiNWQ5YTI3OTQxYzJlMTg3OTQxMGM3YWZjNTkwZWRlMjkzN2YzIGxlZ2FjeS10cnVuaworNTYxNiBiYWQ5N2I0MDUxNjY2YTJkZjJmNjFhZGUzMWVhMjA1MzYwMWY2MTVhIGxlZ2FjeS10cnVuaworNTYxNyA0OTBiZTg2NWFhMGQ1NzllZWQ0NGE2YWU4NjlhM2U1ODFlODE5ZTlkIGxlZ2FjeS10cnVuaworNTYxOCBhY2ZmNzlkZDE0Yjc1MDdmNmRjYmE0MzA3NTkzYjU3NTY3MmFlZTI2IGxlZ2FjeS10cnVuaworNTYxOSBhMzZlMzAyNDBkMDZmNGRmMjY3YTlhMzUyNGYwYjMyNmNjNWZjNzJjIGxlZ2FjeS10cnVuaworNTYyMCA5YTg5NjA4NmQzYzM3MDQxNDBkY2M1YjAwNzAxYjJmOTAzMzdjMmE0IGxlZ2FjeS10cnVuaworNTYyMSBjZDdlYWE2MmNjMzFiN2Y2NjM2NDNjYzMzZWE1MzdhMDUwZmQ4ZTVmIGxlZ2FjeS10cnVuaworNTYyMiBkNmRkNTBmZTFlY2FiNzU0NzJjMzRkMTUwNGVlZTJiNjNlY2RjNTY4IGxlZ2FjeS10cnVuaworNTYyMyA5MzE1M2Q1YzMzM2QwN2QxMWI1MTQ1Mjk5MjZhYzVlNjlkYTQ3YjBjIGxlZ2FjeS10cnVuaworNTYyNCA0NjkzNjlhZDJmMmZiYTRjOGUwNmNiMzlkYzNiMmFhMjIyNGEzNmY2IGxlZ2FjeS10cnVuaworNTYyNSA1OTYxYjc2ZDc4OTk2ZTM1ZjVkNGNiMWZmMzc5Mzc3ZjRhNmYzMGExIGxlZ2FjeS10cnVuaworNTYyNiA0Y2IxMjYwNGRhOWQ5ZWE4YTRlNmM5YTA1OWYwOTZlNTA5OTgwN2QxIGxlZ2FjeS10cnVuaworNTYyNyBmZDRmMDA4ZDc3NDNiNTFlZjk3ZDUwNmM3ZmEwNzY2N2JlZjQ5OWY0IGxlZ2FjeS10cnVuaworNTYyOCAyMjA1ZGM0OThhZGZiZWIwZWY1YTlhOGM0MzA2YjI4YzE3YTcxNjdlIGxlZ2FjeS10cnVuaworNTYyOSA0MGM2OGViZDU4OTFkOWI0ZjcyYmUzMTQ2OGNiNGFhM2RjNDY0ZmM5IGxlZ2FjeS10cnVuaworNTYzMCAzMTcyYzM5Y2RhZDgwODdkNWE3MTE4YTc5YmM5YmJmMDhjOGE2NDI2IGxlZ2FjeS10cnVuaworNTYzMSA5NWU4MGI2YjhmMmU0NGNmYmExZGRjNzI2N2E2MzI5YjI0Njk0NmUxIGxlZ2FjeS10cnVuaworNTYzMiA5MmUxNDVmODQxNGU5NjE2NTEyOWMzNTU4MWUzMmNhNzNiMzlkZWY4IGxlZ2FjeS10cnVuaworNTYzMyA5MzhjNDMzYzg3NmEzZDY5NWIxZDA3ZDc4M2Q2ODExYmY3ZTg0MGRhIGxlZ2FjeS10cnVuaworNTYzNCBmZTlmOTViMDQyZmM4Y2YwNjE5NTMxMGRjNDRlYmE3MTJmYmFiOWI3IGxlZ2FjeS10cnVuaworNTYzNSA5NDg5YTM3MmM2ODYyYTE5MjA1NDJlMjI5MTI1NDQwMjc2MDc1NDBkIGxlZ2FjeS10cnVuaworNTYzNiBmZmY4YTc1MGU3ZjYzZGMwYTAxYmIzOTNmMjViMDRkMGFhMzA5NjBjIGxlZ2FjeS10cnVuaworNTYzNyBiOWI5ZTY2MjhiMzUzNTMwMWM1YzQ4MjBmYjljYWQ2NDUzYWZhYWE0IGxlZ2FjeS10cnVuaworNTYzOCAxMzE0NmNiNmY2N2M2MWRlMjUyY2I2YTIyMzg2NWQ2ZDc0Y2M2ZjFiIGxlZ2FjeS10cnVuaworNTYzOSA2YmNjZmMwZWQ2OTU5NDM5NDg1MGQxZmQwODgxNTI0MDU5MTU4ZGIxIGxlZ2FjeS10cnVuaworNTY0MCA2ZDM0YWRlMmU5ZDQ1MjcxYjBmYzY1ZmI2MGYzZjRlMTJhZjBmMzc4IGxlZ2FjeS10cnVuaworNTY0MSBmNzc4OTk0NWI4ZGVlNmNkNzdlNDFlMThjNzA1NTI3ZTljOWUxZmU0IGxlZ2FjeS10cnVuaworNTY0MiA0OWI3ODdiOWJmYWUyNmNkYTU2ZTY0M2FkZDRkZDJjZmFlZmU0YjljIGxlZ2FjeS10cnVuaworNTY0MyAwNmUzNDBmODU5NjFkMWRmMjA1ZTVmNDVkODhjY2I3NGE3MDM1ZGM3IGxlZ2FjeS10cnVuaworNTY0NCBjZjZjMGM1ZGM3M2Y3ODYzZjA3N2MwZGMwNDgzMzkzNTFhNDBmYjE4IGxlZ2FjeS10cnVuaworNTY0NSAzZTFlNWY2OGZkMWNjYTIxYTE1Y2UxMGNiNTAxYmNkNGExNjZjMTBjIGxlZ2FjeS10cnVuaworNTY0NiAyYTRkMTMwMzczZGIyMTk4ODZlZGM5ODM3NmMyMjU0M2RhNzUzZTQxIGxlZ2FjeS10cnVuaworNTY0NyBhNDIwMTJjMTg4ZmQzODc5YjY2YmI5NGM0OTI0ZDlmM2E5YWM3YmY1IGxlZ2FjeS10cnVuaworNTY0OCAyNGI1M2NiMzE2ODA5NDUxMGRjZmNjMzA3NWI0ZjFhNTIzMTgxNmJmIGxlZ2FjeS10cnVuaworNTY0OSA4ZjNmMjVhODM3YjM4MTdkYmE5ZDNhMjdiYTFhOTMxZjdlNDU1ZjI2IGxlZ2FjeS10cnVuaworNTY1MCA2MWNhMTlhMzAwMGZlYzEyODhhZmI1OTZmYjNmMmNiNDlkYjYzMmE3IGxlZ2FjeS10cnVuaworNTY1MSA3YjJmNjk1NDA1YmFmYmZiZmQ4YWNlOWUwMzc1ZjVlNDBkNDM2YjYwIGxlZ2FjeS10cnVuaworNTY1MiBjMDU2ZjY4NWMwODEzYzhlNDUzYTVjOTc0NTQ0NzdjYzQ2OTQ4OGRkIGxlZ2FjeS10cnVuaworNTY1MyA4MzAxZDU1ZWI2NGJlMjY4ZGM1N2U5MTQ4MGM1YjhjZGIzMTVhZGQ0IGxlZ2FjeS10cnVuaworNTY1NCBjYzM5ZDYyYjI3ZmQxMTU5MDJjNTY0MGI2MmQxMWUzNDZlNjc5ZGQyIGxlZ2FjeS10cnVuaworNTY1NSBmNDcyYjdlYzI1YzU4M2M2MmI4ODkxZGUyNmU5MjNiZDg1NmJlN2RjIGxlZ2FjeS10cnVuaworNTY1NiAwMmM4Zjc0ZDA4ZGNkODRkMzYyMGYzYmUyMDE1MGJmNWJhNTIzYTlmIGxlZ2FjeS10cnVuaworNTY1NyAyOGRmYzQ2NzE4NWZjNDI1ODM4ZjhkYjU5NzViOTU5ZTdkZGMwY2QwIGxlZ2FjeS10cnVuaworNTY1OCBmOWZkNTEyMjY4MGYzMzNkM2M5NzM5ZWE4ZWZlZDMzMDkxNzRmN2MzIGxlZ2FjeS10cnVuaworNTY1OSAyYWE3OTgzN2FlZTU2ZWVhNzY4ZjE1Y2I1NTk3NDI1NGE4MDM5ZjBhIGxlZ2FjeS10cnVuaworNTY2MCA4MjI0ZjBiYzVjZGE0OTQyZWFjYWJhMDQxMDkyZDdlODA3ODViZGE5IGxlZ2FjeS10cnVuaworNTY2MSAwNWFlYjkxZTNiOTBkMGQzNjFmMzg1YTM4MzQ4NGYzMjRjZGVlMGYzIGxlZ2FjeS10cnVuaworNTY2MiA2MTE5M2M2MzJmNTFlMTkxMWE4NzJlYjU0MTMyZGVhN2FlYzkyNTM3IGxlZ2FjeS10cnVuaworNTY2MyAxOTVhZDlmYjQ1ODMyYzc5YTMyYzA5ZDM1Nzg5NTQwZDU2N2IzY2EyIGxlZ2FjeS10cnVuaworNTY2NCA1ZDE2ZWNhZThlZTcxMTE4MWRhNjhhMTYzMGM4NGRjZWIwYzViYWEwIGxlZ2FjeS10cnVuaworNTY2NSAyMWNkNTBhNGEzZjc2N2E5M2YwOGQ5YTRiNzg5YTkzYWI1OWE1Mjg3IGxlZ2FjeS10cnVuaworNTY2NiA4ODQxYTRkNWNkNGJlYjhmY2EzZDg2YTc1MjQ2ZmNkZTE1ZjViZmY0IGxlZ2FjeS10cnVuaworNTY2NyA4ZjVhYjFhNmM5MTQyZWJhNDlkMDgzNjNjOWY4ZTRjYTJjNzBiZjI1IGxlZ2FjeS10cnVuaworNTY2OCAxOWI1OGNlNzk0YzkwMjY3NzY4N2I3ZTY5MDUwZjJiZmMxYzcwN2Q5IGxlZ2FjeS10cnVuaworNTY2OSA2NDkxYmQyYmJkZWZmNjg1OWUyNTQ4MWZkMTM3NDM5NDZiZDZkMDBkIGxlZ2FjeS10cnVuaworNTY3MCA0NmRmNjcyYzdjMjcwZGEzNjBiNTdmMDA3MjBlNGNiNTVkMGIxZjJlIGxlZ2FjeS10cnVuaworNTY3MSBkNWU3NmE5NWI1NjY1YzkwOTFiNTVjYWJlMGRmMmE1NWRhNTZiNzU1IGxlZ2FjeS10cnVuaworNTY3MiAzZDEyMmYwMmU2NDk4NzI2OTZiZjg0OTEyODkzZWQ5MDYxMTBjY2Q1IGxlZ2FjeS10cnVuaworNTY3MyBkZjJmMjUyZGNkMjlkZGU3ZmYyNGFlY2FiZDMzN2IxZTA1MzE4ZjZjIGxlZ2FjeS10cnVuaworNTY3NCAwZWQ1Y2Q4ZGY1MWY5ODE2MTkxNGRhMDlmZTlhYmMwNTNhZjJhMmIyIGxlZ2FjeS10cnVuaworNTY3NSBhMjI3ZGNlNDg0NTE3ZGE2MTUwYTBhOTRhNzcwNDcwM2E2OWY5YWM0IGxlZ2FjeS10cnVuaworNTY3NiAyYjVjODczODEzMGNmOTUyMmYxZmJmNGFkYmE4MjUwYWZmMDljNmZlIGxlZ2FjeS10cnVuaworNTY3NyBjZGViZWU0YTNlM2U4NzFhN2U2ZjVmZTZjMTE5NGVkOGRkY2NhMDM1IGxlZ2FjeS10cnVuaworNTY3OCA5OGUyY2FkNDg1N2YxZDJiZDUzOTlkYTM3YjhkMmY4YWQyMDllOTc0IGxlZ2FjeS10cnVuaworNTY3OSBjN2NkZDIyYTQ4NTNhZDhiYTAwOWExZmRmNzVmYzUyZjIxNzc5ZDJhIGxlZ2FjeS10cnVuaworNTY4MCAyMWQ0YTA3YjE4NzViMWFkYmM3MGJhNmQwY2RmNTU1N2E0YzBkNTYxIGxlZ2FjeS10cnVuaworNTY4MSBmZmUwMzI4MzY5MzczNzM1MDY5YjQ0NmZiYzg4Y2MzODcyY2Y4MzA4IGxlZ2FjeS10cnVuaworNTY4MiAzYjJiZTgxMWE2NmFhYTZiZmRmODVkYzM3ZmM2MmU4MGI2ZjA4OWU5IGxlZ2FjeS10cnVuaworNTY4MyBkMDBhNzllYmIwMjczNDhjZGRmNWUyNTQ5YjRlZGM2YzczYzdkMzE3IGxlZ2FjeS10cnVuaworNTY4NCA4MDEyNjViODYxNjQwMjQ0NGFkNzc5ZmJlYjU2NjNjOTFkYzJlMTdlIGxlZ2FjeS10cnVuaworNTY4NCA3ZDc0M2M4NjVhOWFhNmJkZThiNjAzZTMyZTA1NDIwMzFiYmEzYzMzIGxlZ2FjeS10cnVuaworNTY4NiBlNDVmM2QyNjJhZTRhOTIzZWQ4YzQwZjBkZjk5ZGY5NmNlMGY0M2Y4IGxlZ2FjeS10cnVuaworNTY4NyBmMWNjMjQ3ZmZmMTM3ZDk0ZGI4MTJlOWVjY2M2YmJjOGFlNjg2OTRkIGxlZ2FjeS10cnVuaworNTY4OCA3OGUxOTUzZmM5YjJmMzM0NTM2MDJiYjJkZTg3YjA1Y2NjNDY1NzZjIGxlZ2FjeS10cnVuaworNTY4OSAwZjM4Y2VjNTY1MzkxZTUzMGVhNGY4OTIwM2Q4ZTllMDc5NmY5ZjhkIGxlZ2FjeS10cnVuaworNTY5MCBlNzQxN2E1Njg1ODZhYjM5MmQxYTY0OTczM2ZhMzZmNWVjMTA0OTAzIGxlZ2FjeS10cnVuaworNTY5MSAyZmIzOThhYjNlNmFiMDI4M2Q5ZTBkNzNmYjNhZDVmNzA5MTMyOTZiIGxlZ2FjeS10cnVuaworNTY5MiBlNTU0YTYxYTg0Njk0ZmIxNzcwODgxMGQ3Y2Q1ODY5ZGVhMTU1NDQwIGxlZ2FjeS10cnVuaworNTY5MyA4YzBhNTE4MGZhMzZlYWYyNGVjZWM1NDNlMDkxZDk3Y2IwZDZiZTJjIGxlZ2FjeS10cnVuaworNTY5NCBlZmI5NzE0Mjk5MmU0ODk3ODk2OGZiYWJlMGMxY2E3MThmZWM5YWQ0IGxlZ2FjeS10cnVuaworNTY5NSBmNGE1OWZmZTFhNWY1YzFjODIzNTI4Y2NiYjhjMDFkNmUzMjhlYzEyIGxlZ2FjeS10cnVuaworNTY5NiBlMzM3YmYzY2I0M2FlYTM4NmU2MjU5NzI0YzVmYTg0MzYzZjQyMTMxIGxlZ2FjeS10cnVuaworNTY5NyAxMThjMDYzZGY0NTNjMmMyZjNkNjc2MDE3MzUzODA2MDVkZjM3N2NjIGxlZ2FjeS10cnVuaworNTY5OCAxYWNjMDQ0NzhkYzMxMGU4YzQwNTFmMzIzN2U2ZTZmYTk0NjMxNDE0IGxlZ2FjeS10cnVuaworNTY5OSBlYTdlYzRhNGM4ZDJmNTMwYTY3MTBmODdmMjdhMzQ3MzA2MGVjODAyIGxlZ2FjeS10cnVuaworNTcwMCBmZDU3M2FjNzU5NDc0MDM1NWYwNWM0MWM5MTI5Yjc4YjY2OTRjMWUxIGxlZ2FjeS10cnVuaworNTcwMSBhYWZlN2Q2MzQ5ODUyN2VkZjdkOTYxNGI3MWZhYjg0OTRlOTE3OTA2IGxlZ2FjeS10cnVuaworNTcwMiAzZGY5YWIwM2JhZGZmYjJlYzJjZjRmODY5ZWYyYWI3YTNkMjcyMDlhIGxlZ2FjeS10cnVuaworNTcwMyA0NjNiMjZmYTRkN2I3NTY3ODUwYzFiNDUwNmFjYTg2YTRkNzEzM2VhIGxlZ2FjeS10cnVuaworNTcwNCA2MmJiZmRlNDFiMTQ0M2JhNjc2OWZiODU2MTBlMWQ2MTQwYmE1MjAwIGxlZ2FjeS10cnVuaworNTcwNSBkMzUxMGYxMTE4YjZiNzcyYTk0ZTFmYjA0MDNhMTk0OTdjODMwOWU0IGxlZ2FjeS10cnVuaworNTcwNiAyODVkYmE0ZTBlNTE2YzUwNzdjMGMxNGViOWZjZGUzMjE1NTQwZDY1IGxlZ2FjeS10cnVuaworNTcwNyBmN2ZkODViMzJhN2Q4NWU0OTZjZTc4OWFjNDQ1NzJlMjk3ZjZiYjYwIGxlZ2FjeS10cnVuaworNTcwOCBlOTI3ODlhOTYwYTAyNzJiMmQxNDBjMjU2ZmYyYzkyZmRlNGYzOWUxIGxlZ2FjeS10cnVuaworNTcwOSAzMTM2MzdjNzdkYWEwM2EyOTVjYjMxNzczZTQwZWY2ODBlZTc4YmNhIGxlZ2FjeS10cnVuaworNTcxMCA0MDVkYTU1NjY2MWQ2NmFhNDc5ZWFlNjhlZTIzNTZmYWRiNWJkMWZlIGxlZ2FjeS10cnVuaworNTcxMSAyODQyZmZhNTIxMjYwZGQ3NTU0MzUwNmZiNmU2OWJjYzA0ZWU1YjcxIGxlZ2FjeS10cnVuaworNTcxMiAxOGI2MGQ4ZDllMzVhMjY0YjQ2ZWE4ZWE3MzQ1MmNiNzE1ZGExNWQ1IGxlZ2FjeS10cnVuaworNTcxMyA3YjFhNmJiYTI1ODA1YjM5YTNhZGI0YTgwNTc4NGEwOTAxZjU1MDI3IGxlZ2FjeS10cnVuaworNTcxNCAyMGQ3NGZhM2I1MGIxYmYwNzJhZDE4YmY3YTJlYjE3MGIwOGY5ZGExIGxlZ2FjeS10cnVuaworNTcxNSA1ZTEwMWVhZDFlNjk5MDk1MjRmYjUwZDc0NWE5NDM5NzdjZTNiYTE1IGxlZ2FjeS10cnVuaworNTcxNiAxY2Y2ZTEwNTIyZTA5MTU2MDFlMDYwNDhkYTg1YjgyODA1MWEyZGNkIGxlZ2FjeS10cnVuaworNTcxNyBlZDBkMTQ4ZmMwNWM4Nzk3ODZhYzRkNmI3ZGRjMjk3NDE2NTBkNGM5IGxlZ2FjeS10cnVuaworNTcxOCAxYTM5ZDQwN2I0ZDM5MDI5ZDMxMGVmNzk4MjQwMzU5MzQzNDc5YjYxIGxlZ2FjeS10cnVuaworNTcxOSA0NjdlMGYyZDY3OGExMWY0MzFiM2U2YzczZmZlNzkxOGM0Y2E0ZGM0IGxlZ2FjeS10cnVuaworNTcyMCBmODljZGRhNzQwNWFjNGM3MWRmMjJhZDZlNzMxNTQwYzhhMzQ3M2U4IGxlZ2FjeS10cnVuaworNTcyMSBjYzU0NzQyMjFjOGNiMWE2MDIxYzJiZGIxM2Q5YjE3ZjE0NGQ1M2UwIGxlZ2FjeS10cnVuaworNTcyMiAzMzMxMGNiNmE1ZDc2ODM0MjA5OGExZjU2MTQzODk4ZGNkNTBmMzgwIGxlZ2FjeS10cnVuaworNTcyMyBhNmIwNzA0MTA2YzhjZmQ2NTE4ZDJkZTkxN2RiY2FkNDQzOTYzMzNlIGxlZ2FjeS10cnVuaworNTcyNCBiYWQ3ZjU2YzgzYjJiNjJhMThlZWQxMTZiODVmODY2MmM4Zjk2ZDhlIGxlZ2FjeS10cnVuaworNTcyNSA2ZTQ4ZmFiNjk5MGYzMTRmYjc2MTQ1NWIzZmYyNTI2MWMwNmQ2ODg1IGxlZ2FjeS10cnVuaworNTcyNiBkYjExYTJiZmVhNjZkYTQzYjA2MzZhMjBlNjFmODZiYWZiZWE3NDRiIGxlZ2FjeS10cnVuaworNTcyNyBiMWNhNjU5NzFlMzZmYWE2Njg1ZWQ2MTNhZDIxM2ZhMTVhYWM4OGJmIGxlZ2FjeS10cnVuaworNTcyOCA0ZjQwODNhMjZiZjIyMzM5MDE1NTcxN2ZkOTM4MTA0NzQ2MDk2YTVjIGxlZ2FjeS10cnVuaworNTcyOSBiZmI2M2I0NWZmMGY2NzdhYzE3YTA2Mzk2ZGRhYWI3ODRjNjA2ZGIxIGxlZ2FjeS10cnVuaworNTczMCA4YzU4YWI3YWE3MWVmMTAxZjMzM2Y1ZDM4Mjk4OGYzMjc0NTI5N2YwIGxlZ2FjeS10cnVuaworNTczMSAyYzFlM2U4NzUxMDk5NmZiMDNiZjYzZTc2MmUxZWUwZGFjNWFlNDMzIGxlZ2FjeS10cnVuaworNTczMiAyZjgzN2Q4MjQxMjBkODkyY2RmODhiODEyZTg4OTNjMTkzNjczMWZiIGxlZ2FjeS10cnVuaworNTczMyAxNTk3NzRhZjJlZGU2NmMwYzA5MjI4YjM1NzY2YTlhZTFiYjBhNmY0IGxlZ2FjeS10cnVuaworNTczNCA4ZTczM2Y5MmVkYzA5MzRmODM3ZWY0Y2VkM2VmOTMyODUxMGM5NzcwIGxlZ2FjeS10cnVuaworNTczNSA3ZWFjMDJhNjE3NmVkZjI4MWM1ZjQ1MDc1YzA2N2U2MjczYWZmZmE3IGxlZ2FjeS10cnVuaworNTczNiAxMTc2MThkZDBlN2Y1MzMwNDBmODg5M2ZhZDMyZWM1ZTE4MmQ3NjYwIGxlZ2FjeS10cnVuaworNTczNyBiMTZmY2QxMjZiMWMyNGU2ZTk5NzA4ODE2MjEwZGJjYjYxMDU4YmZhIGxlZ2FjeS10cnVuaworNTczOCAwMzE3YWM1MjI2MDU4MTdjNmZlMTc1MzZhYzI1MzlkZTcxMTg1YmI1IGxlZ2FjeS10cnVuaworNTczOSA2MTIyNzMwYjc5ODg1MTZmNDZhZTUzODg3ZDlkMmIwYzUzMGQzYzdjIGxlZ2FjeS10cnVuaworNTc0MCBmOTQ3ODNiOWJmYmFiN2UxNjA5NmE4MDEyNzQyNzFiOTFjOGE4MzM2IGxlZ2FjeS10cnVuaworNTc0MSA5NzVjY2ZhNzIxZjZiZWFmNDUzOTc1MThkZjQ5Mjk1YzEwOWQ3Njk3IGxlZ2FjeS10cnVuaworNTc0MiAzYTgzYzAxN2RmMWVjYTk1NWVhMzFiNDkyMDUwMjFjMzg2M2VlNTZjIGxlZ2FjeS10cnVuaworNTc0MyBmMWZiMzI2YzdlMmZlMWEwOGVjOTM0NTA2ZGI0N2NiZmI2MmFkODdlIGxlZ2FjeS10cnVuaworNTc0NCAzNmExODQ4OTVlYjk4MGE2ZDhlYzNjMWFiOGVhMTY5NjdhMmVjMjFiIGxlZ2FjeS10cnVuaworNTc0NSA0M2M1ZTdhM2ZjMWZiNjJhZTM2N2U5NmY1YzNhYzUxNzViOTExMzljIGxlZ2FjeS10cnVuaworNTc0NiBhODA2NTc2MmEzOGVhMDFjNTU2ZmY0YjNhOTIxMjY3MTE5MTNjODBjIGxlZ2FjeS10cnVuaworNTc0NyBmOGEwNzE3MDI0ZmU0YmY3YzM3Yjk4OWJjN2M1NjE4ZmI3MTg4M2Y4IGxlZ2FjeS10cnVuaworNTc0OCA4NzFjNzY4ZDBkYTIyMDc3MjMyZGJlZTEyNTdmYzgyMTFkNDc3YTI4IGxlZ2FjeS10cnVuaworNTc0OSA2YTE4YzRjYjY4ZDg0NGM2ZWE3YjZmY2M5Y2YzZTY4YzZhMGNjNGUxIGxlZ2FjeS10cnVuaworNTc1MCA5ZmEyZTIxOGUyYTg0YzY4YWJmNmNiYTNlOTUyZjA2ODc4MTEwMjZlIGxlZ2FjeS10cnVuaworNTc1MSAzYTBmODRjNjkwNTBhM2FiMmY4ZDM3NTJlYTAwNjcxNzlkNzJjOGRlIGxlZ2FjeS10cnVuaworNTc1MiAyMTJlYWU1Yjk2NjBiNThlMzFjZmRiMzU1MWRmMTZkMmYxYjZhOGQ4IGxlZ2FjeS10cnVuaworNTc1MyA2ZDRmNzE0MzA3MjJiNWVkYWQ3NmJkMTYxOTEyYjZlNTZiNGE5NWYwIGxlZ2FjeS10cnVuaworNTc1NCBlMzhjMDlkMDA4MDY4Y2ZmOGZmYzBhMWEzMTc0NDIyZWM5YjZmMTY2IGxlZ2FjeS10cnVuaworNTc1NSAyODhlMzM3ZjczZTdlNDM2OGM3MDhlYzU3M2VjMWU2NmE3ZWQwYWM1IGxlZ2FjeS10cnVuaworNTc1NiA2NmY0YmY5NDYyN2ZlZTA4ODk1MDg3NThkNGMyNWMzM2FhOTcyOGViIGxlZ2FjeS10cnVuaworNTc1NyAzZjQ1NTc3N2ZmMjg0MWFkNWYzYTIyMWY2ZmQ0M2NiM2I3OWQzZTI2IGxlZ2FjeS10cnVuaworNTc1OCA0NWU0NDQ1NDdlNWEzNWU4ZmYwMDMzYTExZjIzNTVlZWJiYmZhYmQyIGxlZ2FjeS10cnVuaworNTc1OSA3MjM1Nzk3OGZmZDIyYTE4NTYzOTU2M2RhZWIwN2E1OThlOTA3ZDYyIGxlZ2FjeS10cnVuaworNTc2MCBiYWZjMTA1YmM3Y2Q5OWE1MmFkOWE1MmNkZDE4ZGZjYTYyZDM1M2RjIGxlZ2FjeS10cnVuaworNTc2MSAyYmRkZmIzY2ZjZjFhYThkODExZmRmNDFjNTYzNTgyNzMwNWVhOWM3IGxlZ2FjeS10cnVuaworNTc2MiAzY2ExMTFlMGIxYTc2ODc3ZTRkZTY4Nzc3OGJmZWQyNTI2N2UwYmZlIGxlZ2FjeS10cnVuaworNTc2MyAwZDZiNjBiNzQ4Mzg0Y2FmMjEzYzg1ZGI4YmQxMzA1ODEwZTNmMzU3IGxlZ2FjeS10cnVuaworNTc2NCA1OGVmNGM0OTVkZTc2MmM5NDZiODQyMTQxYzcyNDM2MzZjMDExMzJhIGxlZ2FjeS10cnVuaworNTc2NSA5YTQwODE0NDA3ODMwMThmZWYyZjU2ZjZmNmMyNDVhMDJmYmI2N2JjIGxlZ2FjeS10cnVuaworNTc2NiA0Nzc2M2FjNDRjNDg2YjcyNWI0ZGMzMWRmZGM0NGQ5MWQwNjIxODNhIGxlZ2FjeS10cnVuaworNTc2NyA5N2NkNTc3MWMyM2UyNTdkMmU1NzM5YTlhNDUyMDUyNmZlYmM2YjY2IGxlZ2FjeS10cnVuaworNTc2OCA3ZjViNDMyYjg3YzQ4YzYzNWYyOTRkMTYwZWE3MGQ5MDI1MGY1ODljIGxlZ2FjeS10cnVuaworNTc2OSA1NGYwNjc4NzU3YjAwZjZlMzJjNzg3OTBhYTYyZTc5YzZjMzIwMGQ3IGxlZ2FjeS10cnVuaworNTc3MCBkNGQ1YzlmYTc4NTkyYTE2YjM1NjEwZjYwOTk5NjkzYWJjMmRiMmUwIGxlZ2FjeS10cnVuaworNTc3MSA4YTUwOTdlOWQ3ZWUyZjM2YzY3N2VhMGQzMDc5NWU5M2Y1MWYxOTQwIGxlZ2FjeS10cnVuaworNTc3MiA4M2RhYTU0YzE4MWRkMGJjYzAxODIxN2Y2NTY4NWQ3YTUzMjg0NWQzIGxlZ2FjeS10cnVuaworNTc3MyAxNDBkODIzOWE0NDZlOGYzMWM0ZGMwYWI5NzZmZmI2NjFkNTg3YzA0IGxlZ2FjeS10cnVuaworNTc3NCAxM2IyNGQxMDM0YmQzYmNjNzBjZjUwN2ZlZGYzZDkzOTNhNGE1OWE1IGxlZ2FjeS10cnVuaworNTc3NSBlNTI0NjU3MWYwZmRjYWM3ZDg0MTZlYTdjODAzYjczMzBiODk0YjE4IGxlZ2FjeS10cnVuaworNTc3NiBiODI4YmNjZGExODk4MzVjZjc4ZDBiODJjNDEyYTM1ZGRjMDkxMmFhIGxlZ2FjeS10cnVuaworNTc3NyA2MDRiMWZjMjZkNjMzYTg4ZTAyN2QwYWViOTI1ODAwNmQ4Mzk3ZmI3IGxlZ2FjeS10cnVuaworNTc3OCBkZjBkMDA5MTYyYjY3NTE4NzFiZjA1OGIzMWZiNjViYTFiYzczMWYyIGxlZ2FjeS10cnVuaworNTc3OSBjMDY2NGJlN2Y2NjI0YjZjYTBmODVlNjU4ZTQ5NGY4MDg2NTA3NTNmIGxlZ2FjeS10cnVuaworNTc4MCA2OGZkYzQwYWRkMmNiM2Y1NWQxYWZiMjU5YjA5ZTE0MDM0ZjcxNTY1IGxlZ2FjeS10cnVuaworNTc4MSA1OGE2NzMyMmM4OTYwY2QzMzk1YTU1ZDIxOTQ5ZDIzY2M4MDVmMWM3IGxlZ2FjeS10cnVuaworNTc4MiA0NGY0OGFhY2E4YmZmNDU5YmMyMmYzNGI4NDgzNjU4OGNiNTczZTAxIGxlZ2FjeS10cnVuaworNTc4MyBlNWQxZjI0MmRhZjljMTYwNTFkZjQzNzUwYjg3YzI0YWIzYTZkNjhmIGxlZ2FjeS10cnVuaworNTc4NCBlNGY1N2RkM2QyNDY1Mzk1ODM0YjRmYjljYTQ3N2RiMmQ4MjdlYTFlIGxlZ2FjeS10cnVuaworNTc4NSA4YjhkNjBmYmUzYmY5NWJlMzI0ODNhY2Y0MDM3ZTFmNmU4YzU2MTNkIGxlZ2FjeS10cnVuaworNTc4NiAzMmI0ZThhZGViZWI4NGY3NmNmZjQ0MTQ4MWM5OTJkNGM5Y2U0MzIyIGxlZ2FjeS10cnVuaworNTc4NyA0ZTZkMGIyNmVmYWYzMmViNzc3Yjg1YTgwNzQxYTJmMjBlMzZkMjdhIGxlZ2FjeS10cnVuaworNTc4OCA4ZGRkYTY2ZGJmMmM4OTI2ZjllNDE4OTNlYTcwNjdlMDRhMzNiNjI2IGxlZ2FjeS10cnVuaworNTc4OSA1OTYzNDdkYjZhNjhmNzk3NjZiMzYwNDg4NzY2MGI1MGM1ZTRmNjMxIGxlZ2FjeS10cnVuaworNTc5MCA2MDk4YWFhOGFlN2ZiY2Q5MjYyOGE1OThiOTg0NTY0NmQzODE2OWIxIGxlZ2FjeS10cnVuaworNTc5MSAzNjkyMGJiZDgxYTgzNDQxOTQzZjllMDlmYWNmMmY0ZmUzNDBiNTcwIGxlZ2FjeS10cnVuaworNTc5MiA4OTUxNDQyNmI5YjhlNGEyMDg1Mzk3YjkyMDJhMTYyNDRkMTlkNDQxIGxlZ2FjeS10cnVuaworNTc5MyAxZWFiODQ5NTQ2MmZiNDAyYjkxNDAyMTQ4ZTc4OTRlNWVlNjMyZTM2IGxlZ2FjeS10cnVuaworNTc5NCA0OWY3YTRhMWYwZjZjZTc3YzVhZmJlODA5Nzc3Y2VjZjM5ZTJhOGMzIGxlZ2FjeS10cnVuaworNTc5NSA0YzY1NTExNWRmY2U3ZGZlNDFhOGJkYWYyOGEwZmE0ZDhkN2Q0NmQ2IGxlZ2FjeS10cnVuaworNTc5NiA2N2QzNDdjMzJmZmZiOGM5NjM2MTVmNzlkNTE0OTE5M2VjNjg4MTRlIGxlZ2FjeS10cnVuaworNTc5NyA5ZjFiNmUyZGI4ZTAxMmMzNzgyM2E0NTViOWNmZTJkMGEyZDU4MmJlIGxlZ2FjeS10cnVuaworNTc5OCAwZGEyNGYxYzNkZGU2ZGE0ZmRjN2NkMzM3MTk3ZGQ3MGNmNmJlYzU4IGxlZ2FjeS10cnVuaworNTc5OSA5NTY0M2MwYjBjMGViMDgyYjE2ZTljZWE1NjM0YmY2ZmJlYjg5MDhiIGxlZ2FjeS10cnVuaworNTgwMCA0YjViZmY5NTgwNGU3MmI3NzljYWE0ZWFhNGY1NzAxZDNiZTJkZGFkIGxlZ2FjeS10cnVuaworNTgwMSA5NjliZDkxMWUxMTRmY2YzMmVhNGQzOWUzYzU3ZTk4MmIzNDE0ZjZlIGxlZ2FjeS10cnVuaworNTgwMiA5YmQxZTQxZDZiMTE2YTU1YWQ3M2Q1OGZlOTYzZWE4MGMxYWU5YTY5IGxlZ2FjeS10cnVuaworNTgwMyAyNDk3YzQzZjQ5ODNkYmNjNTZmNzJiMTc1MzkyMWRiYWM2N2FjMzM1IGxlZ2FjeS10cnVuaworNTgwNCAyMDFkZTg0NTVjMmJjOWQxYTI3MjZkNGUyZmViMTRkMTVkMzhiM2Y0IGxlZ2FjeS10cnVuaworNTgwNSAyZGI1ODVlYTIxOGJmZGFjYzgyMjcwMDc0YjY0YmEzYzlmNGJlMGU1IGxlZ2FjeS10cnVuaworNTgwNiAxNmNiMDQ3MzIyNGNkNTE3YTNiNmM5ZmY1NWZlMzdhNzFmY2I5MjJiIGxlZ2FjeS10cnVuaworNTgwNyA5MWMzZTk4MjFkMGEwZDk0MWQ0Nzk1M2U0NWEwM2Y3ZmVmN2Y0Mjc2IGxlZ2FjeS10cnVuaworNTgwOCAzNjQxNjE0MDEwNWEyOTQzYmQ0MGE1MmVhYWNlNTc2NDc2N2Y1ODAxIGxlZ2FjeS10cnVuaworNTgwOSAwMDQ1MzYxM2NkNGM3NzQ5MmM0YTkyYWM5ZmM4MTA2MzAyZTdiZTRlIGxlZ2FjeS10cnVuaworNTgxMCAwMTIzNzZkM2FhMTQ3YjAyZDI2M2UwNTgyODY0OGE2ZjE0ZjJkMmEzIGxlZ2FjeS10cnVuaworNTgxMSAzYjQ4NDgxMmFjZjZlMmUxOTdmZmQ4MGUyM2Y2NjM1Y2JmNzk0YzAyIGxlZ2FjeS10cnVuaworNTgxMiAxNzA5ZDVmZWQ1MjhlNmFlYjFlZDUyMDA0ZGEyMzQzZmY5NzcwMTlkIGxlZ2FjeS10cnVuaworNTgxMyA1Njg5Nzc2MGU5NTg3MjU3NGU2MTJhYjg0MmNmNWNkNmQzOWI2N2U0IGxlZ2FjeS10cnVuaworNTgxNCBmYWEyMWNlMWZmMDFkYzc5M2FkN2E3Mjk1MjVhMDY4M2EyMzJlZTU1IGxlZ2FjeS10cnVuaworNTgxNSBlZmRkZTFkNzQyNGI5MDQ2YWU4Zjg4M2ExNGRlOGJjOGUwMzRlMTc5IGxlZ2FjeS10cnVuaworNTgxNiA4MjA5OTk4ZDY2OWUxNmEwOGZjYTQ5Y2JlN2FhMjg5ZjE0NmQ4MDRhIGxlZ2FjeS10cnVuaworNTgxNyAyYmUwYmRlM2EwNzE4ZTAzNzQ4MDg5ODk4Njk1MzQ5MmY4MTgwY2RiIGxlZ2FjeS10cnVuaworNTgxOCBhZTAwNGE0NTA1MGZkYTQ0NzI3ZGJkNzM4YmU2MDM1MzBjNDkyNmQ4IGxlZ2FjeS10cnVuaworNTgxOSA4MWY0NWY2OTM4OGUyZGU3YmU0ZjI1NWVjYjZkODcxOGJkNTNhZDBhIGxlZ2FjeS10cnVuaworNTgyMCBmNmE4NDBlODNkMmE1MmI4ZjQ4ZmM2MGU4ZTUxODg5Yjc1MjI5ZTg2IGxlZ2FjeS10cnVuaworNTgyMSAwYjAyMWNmNDFkZGFjMGJiMGMyYWEwYjc1NGU4Y2NiYmMxOWU1NWRhIGxlZ2FjeS10cnVuaworNTgyMiBkZGI0NTEwZWViNDY4MzUxZmI4ZDBmNjg2ZGRhZjE5MzNmZjY4NTYyIGxlZ2FjeS10cnVuaworNTgyMyA2ZDc2MmEyZjliNjlkNjgwMzM1NDYzZDY4MTQwNjFiMTJhZjJkMjBkIGxlZ2FjeS10cnVuaworNTgyNCAxYTE3YmE1MGJkNjgxOTE3NzI2NTQzZGE4ODM4M2FmNzFlODA1M2ZlIGxlZ2FjeS10cnVuaworNTgyNSAyMWQ4OTY5ODMyOWM2YjJiMmZlN2VkODY5NDUwNjM1MWYxNWI1ZjFhIGxlZ2FjeS10cnVuaworNTgyNiAwODk4NTQzMTUwMGI3MTZlZDMwMDk5MjliOGI5ODdhN2E0ODBjMTM1IGxlZ2FjeS10cnVuaworNTgyNyBlMGVmMDA5YjI3MDIyM2YyMjcyNTYwZGUxMDgzM2YxYTgwMTI0YWJkIGxlZ2FjeS10cnVuaworNTgyOCBlMjgxMjRiYjdmYWIzMThiMWZmZjhkZjU4M2U0MDQ3MjUwODUwODkxIGxlZ2FjeS10cnVuaworNTgyOSA2Y2E5Nzg3Y2QzYWFhMGY1NmEzZTVhZWZkOWFhNzVmNjU3ZTYxMGE1IGxlZ2FjeS10cnVuaworNTgzMCAzNjliMzBmNzhkNjNmY2U1YTcwZjAyMjY1NWYwY2ZkZTUzOWE1YjlhIGxlZ2FjeS10cnVuaworNTgzMSBiYzE3ZTgzMTNlYTA2YmI0YjE0ZTRiNzY1NjdhM2NmMjJiNTc4NDM1IGxlZ2FjeS10cnVuaworNTgzMiBmOGZmMjgzMjk5NzE2MmQ1ZmMyZTk2NmI2NWFiMTE4ZThhYTU2YzMyIGxlZ2FjeS10cnVuaworNTgzMyBjMjU4NjU4ODQ2NDk1OGQ0ODRlNmY0MDNhMjAzNzYzNjI0YWI4NDJjIGxlZ2FjeS10cnVuaworNTgzNCA0ZTFhZDI0NDEwYTcxMTZmY2Y0Yjc5NDE2MWU5M2I4MDk0ZWQ4M2U0IGxlZ2FjeS10cnVuaworNTgzNSBhZjFjMmYzNmRjMzQ4NjllNTBjYTE5ZDRkY2Y0NjUyNzNhOGMxOWViIGxlZ2FjeS10cnVuaworNTgzNiAzY2YyZDhhMmQ3NGIxM2Q3NzVkNWMwZDYxNzNiMWU3YjI1ZDA5OTdjIGxlZ2FjeS10cnVuaworNTgzNyAwNTA4NGVlNTRlNTQ4ZTJjYjg0NDc3YzdmMmYxNGRiZmRmMWI5Yjk0IGxlZ2FjeS10cnVuaworNTgzOCA2YjBhZjc4YTkwZTVmMTExODcyM2E5OGNmNzdhMzVkMzZmZDUyMGIyIGxlZ2FjeS10cnVuaworNTgzOSAzNTkwOGUzNzVkMWE2Zjk5ZmEyMjE5ODVjYjE2ZDM4OWY1ZjkwOTg3IGxlZ2FjeS10cnVuaworNTg0MCBmZTE5OGRlZTA2NDA4NjI3ZTczYzY2ZjcyYjEzOTkyOTVmZTdkNDA5IGxlZ2FjeS10cnVuaworNTg0MSAwYzg4MjFiZjZkYjU2NmFiZDczMTQ5ZDgwYWU5MmMyMzRlNWNiMDUwIGxlZ2FjeS10cnVuaworNTg0MiAyOGY0MWVjN2M1Y2M0MjM1NTlmNWFmNWI0NzhhNTJkYTI1NTMwM2RjIGxlZ2FjeS10cnVuaworNTg0MyBlMDg2MmYwNWUxODUwNzdlYWYwMzE0NDU0YTI3MTQzZjJkZmIwYTAyIGxlZ2FjeS10cnVuaworNTg0NCA4MjczMzg2OTkwOTQ0NGQ0OWVhNjdkMDlmMjVlODNhNmY4NmMzYWJhIGxlZ2FjeS10cnVuaworNTg0NSA2YTNmZmMxZGJiOTVkODk3MTcwMjMxYWMzYWU0NTY1ZDE1ZDgwMGVhIGxlZ2FjeS10cnVuaworNTg0NiAwNDY4ODhkYTFmNDRhNmY1MTEzY2RmMmE1ZTk4NWI0Yjg5Zjg4NDY4IGxlZ2FjeS10cnVuaworNTg0NyAyZWUxZjkyM2NiMTkzMjE2Y2MyZWQxMDI2NGJlMzlkYzkzZDJiMWY5IGxlZ2FjeS10cnVuaworNTg0OCBiN2IyYzEzYjVlMzMyODYwY2ZiYTFiYzZkZGZlYmJiMTM5ZWE1ZmU0IGxlZ2FjeS10cnVuaworNTg0OSBhNDQyMzVlOTk0ZjM3ZjQ5N2M3YjZiMjJkMTUzOTkzZGIxMzkyMTg1IGxlZ2FjeS10cnVuaworNTg1MCA5MmYxMWFlZmI1Y2EzNWY0NDFkY2IzOGE5NTUwZTBjOWQxNjJhODVlIGxlZ2FjeS10cnVuaworNTg1MSBjNzFhN2E0ZjVmOGVhNTgyNWEwNzhhY2IzZGY1ZjA3MGJkYWZkOGQ2IGxlZ2FjeS10cnVuaworNTg1MiBkNTUzMmE3MWI0NTRiNmMzMjQ5ZTgxZWEyMDAyM2YxMDk1NzEyNzU4IGxlZ2FjeS10cnVuaworNTg1MyA2ZjVmZWIzYjQ4MjlmOThjMDdkNGE1NzIyNzk1ZTM5OTZkMDMwNGU5IGxlZ2FjeS10cnVuaworNTg1NCA5ZmEyMjI4YmIwOTYyMGViZDNkZDgyMDZkOGI0YmFmOGFmMThhZjdhIGxlZ2FjeS10cnVuaworNTg1NSAxNjk2ZmJmMzAyYjYzZmQxZDYxYjcyNGM5NTUwM2JiMGQ1NDU0NWZmIGxlZ2FjeS10cnVuaworNTg1NiBkMTVkMjliYmMxY2UxMWZjZGM4ZjU1NmJhMDM1YmE1M2FmMDk3YWMxIGxlZ2FjeS10cnVuaworNTg1NyA4MzJmMjZkMGUwNjlmNmQ1OWVjY2YzMDVjOWViYWYxMjgzZmU2OTUzIGxlZ2FjeS10cnVuaworNTg1OCAxYzAwZDI4NDZlODQ5ZjY5NjI1Y2M2YjcyMjc5YWMwNTNhZTM5NGI0IGxlZ2FjeS10cnVuaworNTg1OSBhZGEyMjI1ODUzNjZlNmY1OTM0YTk5YzIzYTc2ZDRkY2JiMTRjYjgxIGxlZ2FjeS10cnVuaworNTg2MCBkOWE3OTk3N2IzOGQ0MzllYTNmMTM5NDk1YjVkMjdhOGJmOGIzOGE5IGxlZ2FjeS10cnVuaworNTg2MSA0ZmVhNmNkOTRkZmE0ZDU5MjIzZGViNWY4ZGZlMDEyNTQ4OTFlYTRiIGxlZ2FjeS10cnVuaworNTg2MiBmNTk4NjIzMDUwYTM5OGNhM2IyMjgyY2RhMGIyOTIzYTIyM2UxNzhiIGxlZ2FjeS10cnVuaworNTg2MyA1NDY0ZmIyZDEyOWU1MDgxOTIxOTk4YjE4OTNmNTFjMzE3Y2ExODhlIGxlZ2FjeS10cnVuaworNTg2NCA1ZDdhMTVkZjcxNTU1MjU2OTZlZmZjMzAzYmFhOTRkNzU1NTY3ZGM4IGxlZ2FjeS10cnVuaworNTg2NSA0MDlhODljNWY2NmQ1MmIyMmI0ZTdmNzFhOTA5ZjlkZjgyZGMwZjljIGxlZ2FjeS10cnVuaworNTg2NiAwMjQzNWZkOTUyNzdjNjJkMmJmNGQ3MjlhM2I1NTc2ZDlkZjYxZTRjIGxlZ2FjeS10cnVuaworNTg2OCAxMTZkYjczNDdkMDFjNGM2ZTVlZTIxZTRjMjlhNTNkYzlmY2JjNGZiIGxlZ2FjeS10cnVuaworNTg2OSAxZGY4ZjVhOGIyMTZkMTExNTU3ZWRmODBiZGU4NmVhMThiZDg4ODQ3IGxlZ2FjeS10cnVuaworNTg3MCA1MmRjZTRjZGM5MzBlMDFhOGUyODk3ZWFjOTY4ZmJjNDU5YzcyNzJmIGxlZ2FjeS10cnVuaworNTg3MSBiYTgzZGQ0NTg1MzMxMTg1NTFhOWYzZjJjNDQ4NDU0YzM2ZDQ3NjUxIGxlZ2FjeS10cnVuaworNTg3MiBlOTk0ZTY3YmNiOTUwMDFkZmQ5ZTQ4NTliNzhhMjY4ZjEyNDAxZTAyIGxlZ2FjeS10cnVuaworNTg3MyBjMjgzNDQ3Yjk4NWY1MmVhNDdlYjAwNDFlOTQ3Mzk5OTBlNDEyZjUyIGxlZ2FjeS10cnVuaworNTg3NCA4MTBlNjkwYWE2MDJiMDMyNDY3MWQ1YjFlYzJmOTJlOTU4NTc0MWJiIGxlZ2FjeS10cnVuaworNTg3NSBmMjYxNGFjNzM1ZDBjMjZjNjFhOGQ3ODhmZjNmNzhkOTA2Y2NiY2YxIGxlZ2FjeS10cnVuaworNTg3NiAzOTdlNmQ1M2E3YWRlNThiYjhjOTBmYWIzYjZjZmFmMmFiZDM4YmMxIGxlZ2FjeS10cnVuaworNTg3NyAyNzQwNmMzNmU4YmQ0NDllNzg4ZGI3NTEzMDExNDU0NzhjYTdlODJiIGxlZ2FjeS10cnVuaworNTg3OCAwMjI0NzRhYzI0NTFlNDkwMDZmZmUwNTViZDNlNDViZGM0YjMwYjJlIGxlZ2FjeS10cnVuaworNTg3OSAxNDk5MWM0MzMxZGYwODRkYjE0NGJmZWRjNTk0MjJjNTFhOWEzYjM3IGxlZ2FjeS10cnVuaworNTg4MCBmNmJkZGEzNzBjYjc0YjBmZDIzZTY3NWQ3NjJhNmM3ZGQzNzlmMDNiIGxlZ2FjeS10cnVuaworNTg4MSAyZmU3ZDQ4OTY1NGU4YWQ1YzU3MzFjMDBjNWMwZmRhMTk0ZWU2MDk2IGxlZ2FjeS10cnVuaworNTg4MiAwOThjYmQ2ZDE5NmU0ZjdmZGM5ZmE4ODFiZmI1NjdhNDEzNzk1YzcyIGxlZ2FjeS10cnVuaworNTg4MyBmNmE2YTY5OTI3ZmZlZjIxNTNmMjBlZjYyZGVmY2FhYjVlNDhhNzlkIGxlZ2FjeS10cnVuaworNTg4NCBiNmMwYTQxZTRhNDY1ODBjMmQwMzNmNjk0MzJlYWM5MTUyMWYwNjExIGxlZ2FjeS10cnVuaworNTg4NSBlMWRmOTAyMDVhMzMzOTM2ZDk2NjkxZWI3NDQ0NDZiMDQzYmI4ODYxIGxlZ2FjeS10cnVuaworNTg4NiAwYWM1ZmJhZjhhZWY4YmFhY2Y0OTE2ZTM2M2UyNDUzODQxYjlkNDI1IGxlZ2FjeS10cnVuaworNTg4NyBlMDQ1ZjkxMzJiMDdiY2JkYWU5MDM2YzlhZmU0YTkwYzQ5NTk0ZDcwIGxlZ2FjeS10cnVuaworNTg4OCAwMTNiYmU0ZWY5NDM3YWM1ODA5MGUwMTEzMzFkNWYxZGIxOWM1ODU4IGxlZ2FjeS10cnVuaworNTg4OSA5MGI1NDMxMjY2MWEzNTAzNGU3NjRkMTgzNjU0ZmJmNTEyZGNkNWQyIGxlZ2FjeS10cnVuaworNTg5MCA2N2Y1ZDI5ZDQwNWIyYTkwZjcwMTdmMmZhNWRkNGM2MjhkZTRkYThhIGxlZ2FjeS10cnVuaworNTg5MSAwMmM5ZGEyMGI0MWU2OTM2NmVlMmNiYjY0NmE2NjA1Y2NmNGI4ZDUzIGxlZ2FjeS10cnVuaworNTg5MiAyNGJlZTM3ODNiMzVmM2Y0YzkwZmUwNjMzNGI2MWQyNDFlMzMwMjRjIGxlZ2FjeS10cnVuaworNTg5MyAyMzI1NGRhYTI0N2I4NzUzMjJjODJjMTA2ZGQyYzM5YjgwYWRlYmY0IGxlZ2FjeS10cnVuaworNTg5NSA2NDAyYmUyNjg5YzU3OWQyZGNiYmVhYzI0YWNkZTQ3OWQ1Y2IzNWI1IGxlZ2FjeS10cnVuaworNTg5NiBhZjVmZjUyMzFkNGExZDRhYmY3MGI0ZmE1MTBmNmU2MDVlYWE2YWM0IGxlZ2FjeS10cnVuaworNTg5NyBiYTk4MzE0MDcxOGFhNDdjZTgwYTg0YjQxNmIxMTFmYTJjMjVkYjM3IGxlZ2FjeS10cnVuaworNTg5OCBkYTg2YjNiNTQzNjNjY2Q0M2Q5MGVhOGZkYjk0MGY0ODY1YzQ5MmIwIGxlZ2FjeS10cnVuaworNTg5OSA1Nzg0NjY4ZDA1NzZiZjEyY2E5MzczMDNiY2UyMjk5NWQ2NjJiODQ5IGxlZ2FjeS10cnVuaworNTkwMCAyNmJlYzllMjJlNWQwZjU2NTQxZmQ2OTE5MmMyMzczMmQwNzA4ZGYxIGxlZ2FjeS10cnVuaworNTkwMSA2YWJjNzVlYzZkMjk4MjUwYzYwNzFkMWVhYzZmNzQzYmVkMjgxNGI3IGxlZ2FjeS10cnVuaworNTkwMiA1NzhjYTMwMmE1OThjMzY2ZjgwMDQzZWZiY2MyZmMyNDVmYmQxZjNkIGxlZ2FjeS10cnVuaworNTkwMyA1MjlmNGQ5Y2JlM2Q4ZTcyMTNlZGQzYWRkNDhhZjQ3Y2YxZTI0YzJmIGxlZ2FjeS10cnVuaworNTkwNCBmNzIwNTBkZDYxYTljM2Y3Y2RkOWI1MWUwZmY0YTRkZjM2YmI5MDZkIGxlZ2FjeS10cnVuaworNTkwNSBkYjlmNmVkZTU4YTc2NmMwOWJmZDE4NzU1ODRiMWRjYmRjMjk3NWUxIGxlZ2FjeS10cnVuaworNTkwNiBkNzAxNDkyMDJjOTNkYzYzMmU0MTk0ZWRjNzhjYWE2NjRmNmU3MTMzIGxlZ2FjeS10cnVuaworNTkwNyBkMGQxYTIxZDQ4YjBhZDNjZjdjZmI4MTU5MDUwYzZlYzAwYmZiNzE0IGxlZ2FjeS10cnVuaworNTkwOCAxYWYxYWRjYTgyNDI3NDhhN2NhYjU4MTM0ZDM5ODA0YzdlZmJkNGIzIGxlZ2FjeS10cnVuaworNTkwOSAzYmRlNGI1OWE1ZDJlMGNiYmYzNjJlZjc3ZDg3ZTQ5OGVlZjU5MDgwIGxlZ2FjeS10cnVuaworNTkxMCA1NTgwOGY2MDA5Y2RkMDIzNzVlM2IxMzlmMGJkYzRkNjU4YjAwNTExIGxlZ2FjeS10cnVuaworNTkxMSAwNjZhOGFlNGQ0MDYzYWI5OTk4YTdmMjcxYjYyMDBjNTIwZmYwZDhmIGxlZ2FjeS10cnVuaworNTkxMiAxZmYxMjgwNGZmMmE3NDVlYTliZjFkOWFjZTUxZjM2Y2UzZDkyMzgzIGxlZ2FjeS10cnVuaworNTkxMyBlNzZjYTM0ZDQ4ZjNlZWYzMTU1MjkwNmIxMjgyYzcxMWVhZTczMjExIGxlZ2FjeS10cnVuaworNTkxNCAwNzk3N2JmMGQ5OTcwYjdjMWI5ZDI2YmIyZTFlYTBlZTg0ODk3NzU5IGxlZ2FjeS10cnVuaworNTkxNSA2MjNiYTliZGViMjIxNTFjOTBkNDU2YmQxM2Y5YmI2MjQzNGMzOTFiIGxlZ2FjeS10cnVuaworNTkxNiBkYjc2ZmQzOTBmNzQ5YTFmZDA1NTgyZGIwOThiYjM0MzcyYWZhMTY4IGxlZ2FjeS10cnVuaworNTkxNyBmOTFmNjE5OGIyNzY4ZjZhNTBkYTZlN2EyMGMzNDc4NjZjZjY3ZDZiIGxlZ2FjeS10cnVuaworNTkxOCBjM2U1MWViMWMxNGZkZmJjZjkzYjFiYWExMGZjMDQ4MGViZDJiZTg2IGxlZ2FjeS10cnVuaworNTkxOSA3MTNiZDgzNzczODIwZmJlYTNkN2FiNjEzZjBkYjYzN2NiZDg3ZjMxIGxlZ2FjeS10cnVuaworNTkyMCA1YWJiYzliNWZkZjBiMjdhYTJmMjFiNDdlMjE2OGQxZGFjZTFmOTFlIGxlZ2FjeS10cnVuaworNTkyMSBlYzg0OTQ5ZjgxZWVkZjkzYTEyNDczMzFhM2Y4ZmU3M2Y3NzJlYjEwIGxlZ2FjeS10cnVuaworNTkyMiBhN2MyNzM3Njg3YzIxMmU1NWZhZTYxZDY3YmNlODBjNjNlOGY5YzZiIGxlZ2FjeS10cnVuaworNTkyMyBlNjQ2YWZjNTBhYzczYTlhM2NmYzg3NDRkMzU2YTI3NmE1NzE0MTk5IGxlZ2FjeS10cnVuaworNTkyNCAxNDQ0YTM1MjRlZGUwOWIwNDA3YTA5YWJiYjJjMGI1MGE2OTkyYTlhIGxlZ2FjeS10cnVuaworNTkyNSBkY2M1OTQ5MzQ5OWFlNzBiZDJkYTBjNjBkZDE1NzQwMmY3OWRlMTAyIGxlZ2FjeS10cnVuaworNTkyNiBhNzFkMmZkOTBmYTg3Yjg0ZjliMTRjYTUzYzMwNjFhMDFkMzE4MjUxIGxlZ2FjeS10cnVuaworNTkyNyA0MDhkZmM3MTg5NTE4ZjFkNGZhOTYwMDM4NzBkOGQ3NTg0ZDQ4N2M2IGxlZ2FjeS10cnVuaworNTkyOCA3MDUyMmRiMTEwMTlhOGNiN2MyMWI4MTYxY2FlNGE3ZTZkZTYwZTFkIGxlZ2FjeS10cnVuaworNTkyOSA5N2IwZTk2MjVlYjFkNWY4MGViYjZmNzA0ZmI1NjUxOGEyNjZjYmNkIGxlZ2FjeS10cnVuaworNTkzMCA4MDNmYmNkY2ZjOWY4N2Y3NDdjZDQwZmYxMzg5MzFkZDQ3ZWZmM2RkIGxlZ2FjeS10cnVuaworNTkzMSA4YjNmMmE4NjIwZjU0ZmI4YjQ1NGNhNWU4ZGE1YWY0N2I5YmY3MTE4IGxlZ2FjeS10cnVuaworNTkzMiBkMTk2OGE3Y2M2MjBjMTYxMDFjZjZjYWQxNjNmZTFlYjAxMDUzODM4IGxlZ2FjeS10cnVuaworNTkzMyA4ZGQwMTg4ZTUyYTdjOGM1OWI4Y2ZlMDMyNWMxYjIxZjg4ZTgyNTE2IGxlZ2FjeS10cnVuaworNTkzNCBmMGJhYWRiZmNhYmRiNTJkY2I2ZjIwY2FiYjEwOTc3ODRkMGRmYmE0IGxlZ2FjeS10cnVuaworNTkzNSAxNDI1ZmM2NDkxZWJiZmNkOWIyZmJjNDcyNTlkYzc0MDdmNzAzNTIyIGxlZ2FjeS10cnVuaworNTkzNiA0NTBmNGQ0NmQ5ZGJmMDEzNmU5OGM3M2UyOGViYWUyNDc4YWUzZWE5IGxlZ2FjeS10cnVuaworNTkzNyA2MjBhYjNkYjA3OTM0YzQxODFiZTJlN2RiOWI1NTk3NGRkNWJiZWJiIGxlZ2FjeS10cnVuaworNTkzOCBlOTA0MzIyMzkzNWFkMzRjY2NmOTE0ZDRhMGIwYzkxZmUzZjU5NWYwIGxlZ2FjeS10cnVuaworNTkzOSBiMzhmZGIwMDhmMWRjMzFhOTU4ZGJjMDQxNzAwOTg5N2E2OTY2NmJmIGxlZ2FjeS10cnVuaworNTk0MCBhYThhZGZkZDNhYTFlMWU5YWU1YjJjZTJjMjUyOGJkZDcxMjZlMGQ0IGxlZ2FjeS10cnVuaworNTk0MSA1MGFhMTZmODA5ZDc2MDAzMmMwNDFmZDVkNDY0MTdiZTYzNjgzYTNjIGxlZ2FjeS10cnVuaworNTk0MiBhMjkyYjc1ODNjMDE1YTI4MmExZWY5NjYyYzdhZjdkMGM4NDNhYTUxIGxlZ2FjeS10cnVuaworNTk0MyAxMTI5OWU5NWNhZTg0MGQ3MDEzYjAzNjBhYzE5MmZjYzk2N2VmYTEyIGxlZ2FjeS10cnVuaworNTk0NCAwNzM1NTBlMzEyNzMwNzQ3ZjU2MzQyMTQxNTMyYjkwYzc5MGZjOGVhIGxlZ2FjeS10cnVuaworNTk0NSAzNWM0YTQ4ZDlkYTE2OTRjNTBlNmY4ODNhNTA5MzdlNmMxNjEyMzYzIGxlZ2FjeS10cnVuaworNTk0NiBhNGYwMWQ0M2RhZDY5OTAxNWQxNjA2YTRiYTViNzM4ZWQzMDMwOGRhIGxlZ2FjeS10cnVuaworNTk0NyA4OWNhZmZkMmMwNjE0ODgzNWMyOGQ0NjQ2ZTljNjMzY2I2ODczNzNhIGxlZ2FjeS10cnVuaworNTk0OCBhZWM4YmJjZjhiMGU1ZjAyYWY4MjdkYzQ5M2RlZGI0MGMzZWY2MWY0IGxlZ2FjeS10cnVuaworNTk0OSA4MjdmMTFhZDY1ZGY2M2RkODdkOWRhOWZiYTI0NGI1MTNkOTdjMTZlIGxlZ2FjeS10cnVuaworNTk1MCBlMjkwZmFlYjkyYzg1Zjc4M2I0MzIzZDA3Y2FhY2Q4ZmQ5NjkxZmQ1IGxlZ2FjeS10cnVuaworNTk1MSAwMGNhOTAwYzc3NDJjNWUwNzM0Mjc2NDBiYjMzNWZkZWUwNjZlZDVkIGxlZ2FjeS10cnVuaworNTk1MiBmZWQ5M2QyZDg4ZmM0NmY5Y2I3ZTYwNWU1NDMyZmE4Y2MyYjg4OWY0IGxlZ2FjeS10cnVuaworNTk1MyBjZTI3ZTAzMjg0NjJlZDk2ZjM5MGMyODZmMjIyNDViMTk3M2MxMjljIGxlZ2FjeS10cnVuaworNTk1NCA2MWYxOWE3YjFmZjEwNmM2N2U5NTMyOTYyMTA1ZTg1ZjQ5ZGMzZWE2IGxlZ2FjeS10cnVuaworNTk1NSAwMmEyM2U2ZTQxNGFmZmU5NDc5YThkZWZjNTgxNzhmMmQ5NDY2NTNkIGxlZ2FjeS10cnVuaworNTk1NiA4MzU1NzE1M2Y1NDQ3NDAxMzMzZWM1ZDFiY2JmMDJiMzdhYWE0MWFkIGxlZ2FjeS10cnVuaworNTk1NyAyYzE3OGJmNzBmN2VmMzljMTc0NGFmNGJhODQzMThjNmU5OGRhNmQ4IGxlZ2FjeS10cnVuaworNTk1OCAzYjZlYmY4ZDJhNTllNjY5MGM5MjZhZGQ0NjRjYTk5YmFiODk2ZjcyIGxlZ2FjeS10cnVuaworNTk1OSAxZGZjNTE5ZWEzY2JlNDVmZDdmMDA0YzNjZDFiNjM4NThhMWQ0ZjZiIGxlZ2FjeS10cnVuaworNTk2MCAxNmE1ZjYwNDg0NjFmODM5Y2NlMzY5ODQ5OGY5MmQ4NmIwMjUxZTcyIGxlZ2FjeS10cnVuaworNTk2MSAwODEzMGYwMGMxOGRiNTAzZjRlMzk1Y2EyZTU1ZDFjNzc5MTE5YTk5IGxlZ2FjeS10cnVuaworNTk2MiAwM2M2YzE4MzI1ZWFjYTk2MmMzMTg1NzU2NDIxYzY3ZWU5MzcyZjQ4IGxlZ2FjeS10cnVuaworNTk2MyAxNDJjYmFiZGQ5NDU1NmEzM2I1NGZlMGVhMjQ3NDhhMDdhMmUzYjM0IGxlZ2FjeS10cnVuaworNTk2NCBmNzBkYmU2MDhmMDMxZjdiYWQ4YTFlZWMyMDFmMTU4ZjgyYTRlMWVjIGxlZ2FjeS10cnVuaworNTk2NSA4ZDQzYjgzMDM0MWJiNTZhZWYxYWZiM2YwNmJiNWZmNWExMzNmYTk2IGxlZ2FjeS10cnVuaworNTk2NiBkNjI0NmFlYjRhM2YyNzQyZTJjYjVjMjU2NDcwNzNjZmMwMmQ4ZjFjIGxlZ2FjeS10cnVuaworNTk2NyBjZGVhM2YyN2NmN2M3MGI4MjA5NGU2NjUyYzZjMWI1MmVjZWY5MjA5IGxlZ2FjeS10cnVuaworNTk2OCA1ZjI1MDQwZmQ2M2U2ZjQwZDFlNjdjNmI2ZDc0NzE1MmEyMDRiN2RlIGxlZ2FjeS10cnVuaworNTk2OSBlYWU3MGQ3ZjJlYzdjOGUwYTVlMTFlYzU3N2NkYmZiOTJhNDM5NzIwIGxlZ2FjeS10cnVuaworNTk3MCBlYjViOGQzZDhhY2Y0MjdiM2JjM2VmZTE2NjUxOGFmZjI1ZDE3ZGIzIGxlZ2FjeS10cnVuaworNTk3MSA2MTg5NGJhNTcxZjVhODNmNTNhYzI1YjEwOTljOTM5NTNlNTg5MTk1IGxlZ2FjeS10cnVuaworNTk3MiA4OTlhZWZlYTgwMWM5OWFlMzRiNzc1NmIwMDVkZjZlOGU4OGY2ZGQyIGxlZ2FjeS10cnVuaworNTk3MyBlOGQ1MDFjODhhM2UzZTliZGNkNmZlZjg0ZjFkMDRkNjk4MTBjZmIzIGxlZ2FjeS10cnVuaworNTk3NCBmNmJkNTdkYmQ1MjRkZWViNzU5OWI3OGIzNmFiOGIyZTE2NjZhZTNkIGxlZ2FjeS10cnVuaworNTk3NSBkMjRmOGQ3OWVjYTA3NGMwMjAzNWNmMTgyZWNiYTJkMmExMDlhYmYzIGxlZ2FjeS10cnVuaworNTk3NiA0MzFlOGQwMTA1NDdhMjNhYzhmNzg0NmMyYmJmZWM2ZWI3NjdkZjMyIGxlZ2FjeS10cnVuaworNTk3NyA2ZjM2M2E0MTc2NjExNzJmYjI0OGJiZGUwMDRlN2Y3ZmY3MjUxMTFhIGxlZ2FjeS10cnVuaworNTk3OCA1NThkY2U2NTUzZDkwNWJiMDY1MDE2MjI5OTY0MDFiMzk2MTk4YmQ3IGxlZ2FjeS10cnVuaworNTk3OSBhMWMwYzJhMzg4ODNmYWJmNzlmNDY5YTc4M2M5NzA3YmNjNWU0MDg4IGxlZ2FjeS10cnVuaworNTk4MCBjNWQzMGE1NjQzYmVhZWVkZjU4NmU3ZTk1YWMzYjAxNWEyYmM5MjlkIGxlZ2FjeS10cnVuaworNTk4MSAyYTA5OWZiNzY4MjNiMzJlYzNkOWY2Njc5ZGQxODUzN2JlNWFmZjVjIGxlZ2FjeS10cnVuaworNTk4MiA0MzYxYTVmZmI2MzgyNjAyZGUzYTFjYTA2YmI0YWM2ZmJlNmRlZmNkIGxlZ2FjeS10cnVuaworNTk4MyAwNWFmMjllOGRmMGU3NTZmNmU5YWJkNjU0ZTc5YjliYmVjMDI1MTlkIGxlZ2FjeS10cnVuaworNTk4NCA1NjZmNDZiOWQ3MTI2Yzk5Mzk5NmQ1NTlkYmVhNDRmNmRjNjdjOTA2IGxlZ2FjeS10cnVuaworNTk4NSA3ODc5ZjNiMzk2MDZlY2ZiYzNjNTdmMzU0NDJmMzQ4ZWZiNjAyZjJlIGxlZ2FjeS10cnVuaworNTk4NiA1NDJjODBlNjIxMTE0ZmYyYzlmOWYyYWM3OTlkOWU5YTBiMzQ1YTNlIGxlZ2FjeS10cnVuaworNTk4NyA3ZjIzMGQ0ZjM2NTVkNjZlMzUzNDhkOTJhZWE2OTBiOTYxMzhkZTRkIGxlZ2FjeS10cnVuaworNTk4OCAwNWU4NTA1NTU4MmNiNGEzMmVlM2UxODQ5OWQyNjg4ZjNlN2I2ODQ5IGxlZ2FjeS10cnVuaworNTk4OSAyYjJmYzlhMGI0ZWMxNjk2ODYwNjVhMjdhMjgzYmUwMmY5NGRmZDFjIGxlZ2FjeS10cnVuaworNTk5MCBkNzgwMWE3N2ZjZDU3YmYwNDlkZTdiNDUzMzIxNTkzMjMwYzcxZDBiIGxlZ2FjeS10cnVuaworNTk5MSAwMTQ1YjhhZTJkNWZiOWZkMDhmMmEyMzYxOWQwYjUyMmFjMjJhYjdkIGxlZ2FjeS10cnVuaworNTk5MiA5Mzk5NDUxOTIwMDAzOGVlNzIyM2U2NzI3NWNmMWNjZTcwN2VkN2Q1IGxlZ2FjeS10cnVuaworNTk5MyA0M2FmNTIzYTAwY2FmZDcwNjg2NjFiZGI3MDI1YjhiYjcyZGUzYmY4IGxlZ2FjeS10cnVuaworNTk5NCA3M2JjNDFiZTcwNzRkZTMzYWU0MWY1YTEzNjk0NmIxZTE2OTgwNTA5IGxlZ2FjeS10cnVuaworNTk5NSA4NTUyZTE3YWRhNjhhMThlODhjNzQzOThlZjgwNGUyNzMwNzQ4ZTAzIGxlZ2FjeS10cnVuaworNTk5NiA1MTBkYmZhOGM1OTk4N2NmZmNiNGQwZTQ4MjZjNmVmMzllMjcwZjEyIGxlZ2FjeS10cnVuaworNTk5NyBlYjgzZTRiMGM3MzM3ODA0ZDEwMDQxZjdjNjJmYjEyZDZhNDk1NzhkIGxlZ2FjeS10cnVuaworNTk5OCA1MGU1YjRjNTg5NWZjNTJmNTdhZTM0MzAzNWE1ZDM5MDJhM2IxYjU0IGxlZ2FjeS10cnVuaworNTk5OSAyNGZiOWY0Zjg5ODRiNDdkMWZkNDQ1NTgyMTI0MGIyYWNhZGQ4ZWY2IGxlZ2FjeS10cnVuaworNjAwMCAzOGUxNDgwZTdmODlkYmQ2OGU2Nzc2MzA1MDkzMDZlMmFjNjM1OTk4IGxlZ2FjeS10cnVuaworNjAwMSA3MjhkNTc0NWFlN2I4NjJjZDkyMmE4MzI1NjFhMzJiOWVhMzg5M2M0IGxlZ2FjeS10cnVuaworNjAwMiBlNjdhZGM4YjJmMTY2NzIyNWIxZGU3ZTE3MjFkMGQ4Zjg2YzBlZjY3IGxlZ2FjeS10cnVuaworNjAwMyAyMGExM2ZjZGFlNTRmOTMwMGFmOTQ2MzhjNGE1ZDJjZDY3OTA5YzQ3IGxlZ2FjeS10cnVuaworNjAwNCBhYzhkMjRmMWRmMDgyOThhOTA3Y2JkMjMyY2RmNTZhYTAyZDNlZjI5IGxlZ2FjeS10cnVuaworNjAwNSA4MjMwNzA3MWM2NjVlN2M0ZTFjZjcyM2IxOWM3Y2Q5ZDFjNTI3ODE1IGxlZ2FjeS10cnVuaworNjAwNiAzNWJlYzg4ZDk3MzQyYWYyNzE3Y2ViNTExOWQyOWQxZTJlZDUzZDBkIGxlZ2FjeS10cnVuaworNjAwNyA2YzU0MWM2M2M0M2ExMTJmNDlhY2YxYjQ0Mjc5MDgzMDRhY2VjN2U2IGxlZ2FjeS10cnVuaworNjAwOCA1YWVjNDkxMTE3NzI2YTdmYmM0ZDIyOTJjZjA0M2UwZDAwMWJhYmQ0IGxlZ2FjeS10cnVuaworNjAwOSAyYjE2NmIyMjBjMTEzZGE3OThjNjg5Y2NhMTBhZTUyMTViNDY5MWYyIGxlZ2FjeS10cnVuaworNjAxMCA2YzI1ODA0M2NmYWE1YTgzNTRmMDhkYzUwMWFhYjAzMzNlYTQzMDc1IGxlZ2FjeS10cnVuaworNjAxMSA1ZGYyYWNiYTBmYzUwMTk2MmFhMjdjOWU3ZmY4MmY5MjlhMDZlZTM5IGxlZ2FjeS10cnVuaworNjAxMiAyMmQ3ZjU0YzU3OTI3ZTMzYmY4NjJjNTI3Y2ZhOWZmNGZhMjc2MzZiIGxlZ2FjeS10cnVuaworNjAxMyAyYzkwMGRhZTg3OTkzNWJjYmYwODdhZTNmNjY3NWYxZGJkYTQ0N2E2IGxlZ2FjeS10cnVuaworNjAxNCA2ZjUyM2JkMGEzYWJmZjI5YTk5ZGE0YTM0MjY2MzEwZDNjNjcyZjQwIGxlZ2FjeS10cnVuaworNjAxNSAzZjdjZGYxNjYzZjdhZmYzNDE3NjM2NmFlMDdkMGM2MWMzODY1NGY2IGxlZ2FjeS10cnVuaworNjAxNiA5Y2E4YWU3MWJiYjA4ZDAzY2I1MWVkNGJiYTQwNThlYjE0MDZmNzgxIGxlZ2FjeS10cnVuaworNjAxNyAwNGVkZmNiYjcxMjEzMGE3M2I1OTU4ZDJmNjZhZDQwOTg5ZWVhMTlhIGxlZ2FjeS10cnVuaworNjAxOCBmNjYzMDZiYzA2NjNlNGQyN2MxNTc0YWU4YmZkY2NkN2NlODEyZGY0IGxlZ2FjeS10cnVuaworNjAxOSBhOTViMzUwYTQ0ZGFlN2FjNzZjMWQ0ZWYwZDZiZTYyODQ2NGEyMTdkIGxlZ2FjeS10cnVuaworNjAyMCBlOGEyYTVlNGM3YjA0NjBiODU3Y2RmMDk4ZjEzNmEzYzIwYTg5ZDZlIGxlZ2FjeS10cnVuaworNjAyMSBjN2U4MDg1OTZkMTQxYzAyMjVhNzNkMzQzNzJhZmYzZjJmOWUwMzAyIGxlZ2FjeS10cnVuaworNjAyMiAxZDAzNWUyMTEyMDk2OTE4YWQxYzAxMDJiZDFiYWM3NjI2NThjM2YwIGxlZ2FjeS10cnVuaworNjAyMyAyNDI3OWJhZmE4Mjg0MjkyNzJiYTgyOTYwMTBhM2M4ZjdkMTljYjRkIGxlZ2FjeS10cnVuaworNjAyNCAyOWMxOGZiMTNkOGY0MTJkMWM5ZTBlMTg2NjE1NDM2Y2U5OTlmNjk0IGxlZ2FjeS10cnVuaworNjAyNSA1M2M2NmQxOWQxMjdhMzMwZmEyMTE2YmQ2OGEzZjFlMzViY2ExYmZiIGxlZ2FjeS10cnVuaworNjAyNiBjZWU0YTZkODQxNWVjMWJhZjJhMmY5Y2I4YjgxMmM1MDhhMDgxNTQ1IGxlZ2FjeS10cnVuaworNjAyNyAwOThiODhkMjYwZDEyZmIwNjY2NzdkMDE1Nzk4ZDVmZjkyNzg0OGRkIGxlZ2FjeS10cnVuaworNjAyOCAxOGE5YzYyODA1NDNiNTIyOWI3NzFmNjY3NTk0YWEzNTExMmMxNzY3IGxlZ2FjeS10cnVuaworNjAyOSBiOGIxYjZiOTc0MzM4N2M0N2U0OGIzMzJkMDFhYWNiNTc0MmRmMzEzIGxlZ2FjeS10cnVuaworNjAzMCA5MTg5Mzg3MWJhMDc0MjM0NjYzMjUzN2Y0OTdjZTZjNjcxNDg1NDJjIGxlZ2FjeS10cnVuaworNjAzMSA1MjI3ODQxY2ZhMWZiNzA0ZTljMWRmODBkZDk1MzUxYWFhZjg1ZTFiIGxlZ2FjeS10cnVuaworNjAzMiAzNWIzNTM2ZmI3NjNiOWNmNTlhZWU4NzdmMmYxNjRjYjExM2M4NDNjIGxlZ2FjeS10cnVuaworNjAzMyA5MWMxMDgyMDY5ZDgxMzIyZDRiOGZkMTQ4MmYwNWU5MjU1ZjM1NzkzIGxlZ2FjeS10cnVuaworNjAzNCA0YzBhNWNhMzBmOTRhNjc0ZGY5N2FjZGE1YzU5MWNhODMwMWY2YmNiIGxlZ2FjeS10cnVuaworNjAzNSBhYTExMTJkNTY2NjgzYWZkYTc0Y2M4NDE5MmM5YThmZTYyZjJmOTRhIGxlZ2FjeS10cnVuaworNjAzNiA2ZjcxNWJmZjE3ZTQ4MjI5OTg3OTYyODE3Y2YzZjFlNGViZDdlYmFhIGxlZ2FjeS10cnVuaworNjAzNyA2ZGU0NGQ5NjYyOTI2NTlhZTk0Y2EwMWJiYWIzZjkzZDhhY2JmMTI5IGxlZ2FjeS10cnVuaworNjAzOCA5MjJjMDAxNjVmNzYxMmZhZDc3MTA2NGYxNGIwNTdlNjllYmI0NDUxIGxlZ2FjeS10cnVuaworNjAzOSA5NzdmZjFhY2UwNzAxZTk5MzEyNTc4MmQ5M2VlNTE3ZWVjZTdjNjI3IGxlZ2FjeS10cnVuaworNjA0MCBmNmIyMThjZWM2YmVmNjQ5Y2ZlY2M2ZDY3NDc3Y2IyOGU3ODcxZjk4IGxlZ2FjeS10cnVuaworNjA0MSA2YmUzNjVhNjczYjE0YzAzZjRkNThlYTFlODBlODZjYTFlZmVjMGEyIGxlZ2FjeS10cnVuaworNjA0MiA0YzdiYWI0Y2RjYTZlOGNjMmUwOTdkZGEzZmFjYzNiMGIzODJkNWE0IGxlZ2FjeS10cnVuaworNjA0MyAxZWMxNTQyNDE3NDc1N2YwYjU3ZTk4MDFjNmNhN2Y2YjE3YjAxZWNhIGxlZ2FjeS10cnVuaworNjA0NCBlMmIzYTY5NmQ2OWM3NTdjNWUzN2IwNzE2NzdiOTlmYmRmM2Y0YTZkIGxlZ2FjeS10cnVuaworNjA0NSA0ZWMxY2FjMzQyZGRjN2ZlMjQ1YTIyM2VjY2U3YTMyYWIxMzJhYTVkIGxlZ2FjeS10cnVuaworNjA0NiA2ZWM3ZGYyMDY5N2QwODY1ZThlNDQwZTljZWFiZjFmZDc3NTUwZTRmIGxlZ2FjeS10cnVuaworNjA0NyAyNjRkMTk2YmM0YzZkZThmZjg5OTYyZWE2NzNiMmE4ZDQ4YTQ1NGQyIGxlZ2FjeS10cnVuaworNjA0OCBmZDE2NjlmOGQ4NzQzYmE2NjE2Mjg0ZTViZTgyNjU5NGYwNjkxN2RhIGxlZ2FjeS10cnVuaworNjA0OSA4ZTY2Mzk0NWUxNzQ0NWM1OTI0OTdkY2I1Yzc3NWMyMWM1OWM4NThmIGxlZ2FjeS10cnVuaworNjA1MCBlYzhmNWI3NWRmNjRkYWNhZjMwMTZhZTk0ZGU4NTQxMTkyY2QxMTAwIGxlZ2FjeS10cnVuaworNjA1MSA2ZjQ1YmVlZDM4NzNmNzFjZGMwYjNlODk2NjBjYzEzZTJhNmI0Mzk4IGxlZ2FjeS10cnVuaworNjA1MiA2YWI0Y2JjZWRlYzIwM2I4Mjc4YTAyMjQwZjQ4ZjU2MjRhMmQ1MDUzIGxlZ2FjeS10cnVuaworNjA1MyA3MmFkMmYxZTk5MTlhZmVjMWNjN2JlYWI4ZDg5ODQxYWFmNTVhYjE2IGxlZ2FjeS10cnVuaworNjA1NCA0ZWQwOWEzYzMyMDE4ZTIxOWRhOWI3NjIxMTUzYmQ1ZjhjZjhmZDEyIGxlZ2FjeS10cnVuaworNjA1NSAzNmNjM2VlNTRmMjhiODgwMGVmM2ZjMTBmMjA1NTM1YzA1ZTRiODhjIGxlZ2FjeS10cnVuaworNjA1NiBiNWNjY2YxYzhmMzg2NmJlYWRjMzk0NjRiYjI3ZDZkMTMxNTY4ZTQzIGxlZ2FjeS10cnVuaworNjA1NyBkYWZjOGExMGIxODY4MDQ2MGRmN2UxOWQwZjIzNGExNjM0MjRhY2U0IGxlZ2FjeS10cnVuaworNjA1OCBiZDIwYzA0Mjc0ZmZhNmU2OWUxYzk0YTJjODIzOGI3MjU3ZDYxOGQ5IGxlZ2FjeS10cnVuaworNjA1OSA3MzY2NGVhMjAzMGUwYmZmZmJkZjBhMDY2MWE2ZWNmM2MwM2I5OGQzIGxlZ2FjeS10cnVuaworNjA2MCAxYzE4ZjkwNjM2ZmJiZTA4MTYxMjZhMWU2OGUwMTRlYjI3MzhhMWQyIGxlZ2FjeS10cnVuaworNjA2MSAyNDAzNjIwY2E5MzFhZWZjZWUwNzg5MmRkMjcyNjQwZGE5ZDNmNGQ2IGxlZ2FjeS10cnVuaworNjA2MiBkZTk4N2ZkNjdjOTQzNTAyZDViY2FlYmYyMTgzYzdiNmRjOWZhMDg5IGxlZ2FjeS10cnVuaworNjA2MyA1NjQ5MTIyNjcyOTBmNDQ5ZTFmMjRlZWM5N2IxYjQwZjI4YWIzYmM0IGxlZ2FjeS10cnVuaworNjA2NCA2MjkzNzIzMjA1YTZhODI5NGVlOTBhZTE0Mjk5ODUxYjY0OTMzNTA3IGxlZ2FjeS10cnVuaworNjA2NSA4ODAwZGYzNjZiMTMxZDJhMjY1MmUwMGIxOGU1NjJiNGRhNzdmZTBmIGxlZ2FjeS10cnVuaworNjA2NiBlMDc1OTczODlkNjRiYmZiNThiNjhjMzQ1NjE4NzFkMjUzNzZmZDgyIGxlZ2FjeS10cnVuaworNjA2NyA2YzkyNjBhZTBkMTYzNmE5NWQwMTBjMzZjMGI3NmIxZDg3MDJhYWVmIGxlZ2FjeS10cnVuaworNjA2OCA4NzM4YjBkZDc3ZmQ4NzAwOWNiZThjYTFlZjFkMTIwN2EwNWI1YjQ3IGxlZ2FjeS10cnVuaworNjA2OSA3YzU3MTFhNmE0NzU5N2Q5MzFiZTRlZTgzMjU0YTMyYzE2NTY3N2RiIGxlZ2FjeS10cnVuaworNjA3MCA1YTdhNzYxNjZlN2UzOTk4MTk0ZTEwMTIyMWMzOThlNTNiNDJkM2ZmIGxlZ2FjeS10cnVuaworNjA3MSA0MDQ5NmRiOGNmMWZjYzk4ZDYyOGU3OThiMDI2ZTBkMjJmNjg3Nzc2IGxlZ2FjeS10cnVuaworNjA3MiBkOTA2N2M1ZjUwYWRkNDllMzlhNDJlNGI4M2ZiMTcxZGFlMzlmZWJkIGxlZ2FjeS10cnVuaworNjA3MyBlYjZlZjdlY2EyMDdkMjk4OWI5OGIwYTcwMDdiMWY5YzU1ZDcwZTBhIGxlZ2FjeS10cnVuaworNjA3NCBhYTVmM2VjYmY1NmYzMmQ4ZmNjYjRjNzJkNmE1Mjk5ZjRkODljZjk2IGxlZ2FjeS10cnVuaworNjA3NSAxZDRmMmYyMGEyN2NjYjYxMDk2YTI1MWRkZjBkODkxNWNkZTk2OWJlIGxlZ2FjeS10cnVuaworNjA3NiBkZDc0YTA2MDA2ZTA0MDIxNzI2M2I4MDU3N2U4NDY4MmRkMzFkNGQzIGxlZ2FjeS10cnVuaworNjA3NyA4NTczZTY1ZmE5NDg0ZjI2YmIzZGFmYjdmNGY0NGY2NWE3YWM0OWYyIGxlZ2FjeS10cnVuaworNjA3OCAwYjBjNGVkMTkzNmFjMmQyODUyYzM5NTg3YjljZTY4Mzc4NjA0NThiIGxlZ2FjeS10cnVuaworNjA3OSBkMGE5N2FjMjVkYWI0NzM2NThhNDBkODY3ZGM3M2Q4YWQ2MTQ0M2JmIGxlZ2FjeS10cnVuaworNjA4MCA0NTNhOWY2ZTk2MTg5ZGU2OWI2MzNmZjczNWJiODQ4YTIwOWM1ZTEwIGxlZ2FjeS10cnVuaworNjA4MSA0ODY2YTBmYzJiYmQ0ZTY1NTM2NmZlNTg5OGFiZDU2ZjgwZjE4Y2Y5IGxlZ2FjeS10cnVuaworNjA4MiAyZjMxNGNhMGNkMzM4ZDZlYzQ2MThlNjQ4YzkxOGVlMGRjMWQwODBhIGxlZ2FjeS10cnVuaworNjA4MyAzMjMxNjVjYjFmYTVkNzRhZWZmOGFhN2ZjMzM1NGU0NzhkMzRmMGU3IGxlZ2FjeS10cnVuaworNjA4NCBmZGEzYzA5OGM4OTk1OGY1MjkzNjYzZjk1OTMwYTI1N2IwYzY4MWJjIGxlZ2FjeS10cnVuaworNjA4NSAwZTVhN2IyMjAxNmNkZWUwM2FiMjI0MTNlZTYwZjNhMTU1MDY2MDY5IGxlZ2FjeS10cnVuaworNjA4NiA2ZTczNTg0Y2Y1NzVlZWRhNzU2N2Y5NmEyNGUwOGU2YzFhMjRiMDlkIGxlZ2FjeS10cnVuaworNjA4NyBhM2M5N2UyMDU4NDc5MzQyYThkOTU1N2NkZWJmNmZkYjk0NTlkODg0IGxlZ2FjeS10cnVuaworNjA4OCBlZjc1OTY2OWFhMDQyNjI5MDMyNGViYjgzZDY1ZDE2NGRiNjZkYTEwIGxlZ2FjeS10cnVuaworNjA4OSAyOGMwZGYxY2UyODQ0OTgyMzQ0ODIzODhmNzE1MmQxNTNkNjhmMzA2IGxlZ2FjeS10cnVuaworNjA5MCBmMTU4ZWRjY2M3MmNjYjYzZmZlOGIxYTU5NTk2MDJmOWRkM2RlODA4IGxlZ2FjeS10cnVuaworNjA5MSBiNzVlZGMwZTYzMzNlZTYwYzU2MmQxYmE4MGQyNmMyZTY2NmY3M2NkIGxlZ2FjeS10cnVuaworNjA5MiBkNDFkODllYjQzZTUwY2Q5YmY4YjlmOTVmYzc5ZjAwYTIyZTkyZjlkIGxlZ2FjeS10cnVuaworNjA5MyA1YTk4YTRmZDU4Yjg0MjEwMTIxMmViODM4NTFmYjIyNjllMGQ2MDBhIGxlZ2FjeS10cnVuaworNjA5NCA5ZTQ2NjU3YmI5ZTg0NzljOGFjOTg2YzlkY2I5N2QwYzVhZTQyMzVhIGxlZ2FjeS10cnVuaworNjA5NSBiZDZlYWEyYjQxYWMzNjA3MGU0YWViZTI1ZTU5NTU2NjM3OWMxMmZiIGxlZ2FjeS10cnVuaworNjA5NiBkMTk1Yjg3MWU3MDQ0ZTE5ZDU5YmYxOWE2NTAyNmY3NGE3MjlmMjI4IGxlZ2FjeS10cnVuaworNjA5NyAzNDQwNzc3ZjBlNjU2YWNlM2VkMzgwNGJjMzY4NDEzYmQwNDM0NWQxIGxlZ2FjeS10cnVuaworNjA5OCBlNTRkMzkxMDcyNDk1NmYyYTA2ODkwY2U1YWQyZWU1YzA4YWRlZDllIGxlZ2FjeS10cnVuaworNjA5OSAyZWI3ZTllMjM2YmY1N2NmMDlkM2Q5OTAyZTI4MmM0YzBlOTU2NWRlIGxlZ2FjeS10cnVuaworNjEwMCA5ODUxMzQzNzU2NzIzNmQ4MmQ0YTg3YWM5YThmYmVlYTU0YzlhZTI0IGxlZ2FjeS10cnVuaworNjEwMSA0NDE2MWZiMDRiN2U4MzRiZmM3NzA5YmRkZDY5NzkxZDAxMzAyNmU2IGxlZ2FjeS10cnVuaworNjEwMiBhN2UzYmMyYTdjYWM0NzlkNDA4OTMzNDljZDRjMmYwYmEwM2ZhZTJhIGxlZ2FjeS10cnVuaworNjEwMyAzYWJjZjcyNWM1ZjQwOTc3NjI2NzNiMDJkOTI3YWQxZmE0M2ZhODM0IGxlZ2FjeS10cnVuaworNjEwNCA4OTQxNzg5NWQ5NjNjZWRjMjUwMWRhMjJkMjJlNTA1NWY3MThjMDRlIGxlZ2FjeS10cnVuaworNjEwNSA2NzY4YmJkMThlMDk5ODBhNzA3Yjk4NWI1ZTYyZGQwYjJiODkwNDVhIGxlZ2FjeS10cnVuaworNjEwNiA2YzAwODZmOTI3MGNmOTUxM2NjNDJiOWI4NTg1NzlkZGQ0OTRlN2MzIGxlZ2FjeS10cnVuaworNjEwNyBjMjgzYjdiYmRhMDk1MmIyNzJkN2I3YTg1OWEwZDk1ZWU1YTY3OTlmIGxlZ2FjeS10cnVuaworNjEwOCA3MDE4MzU5MjM3MGU3NGVhNjNmZWQ2MzE0ZDUwNzQzYTQzNWNhMmVhIGxlZ2FjeS10cnVuaworNjEwOSA4ZDUwYTk2Zjg2ODBlYTgxMWU1MDIwMGJhNTQwYTY2Njk3MTRmMTk4IGxlZ2FjeS10cnVuaworNjExMCBlNGZhYWRiNGFiZTJlZGI0ZTE4MWRjMzk3NTZhZWM3Yjk2NzU4OTJiIGxlZ2FjeS10cnVuaworNjExMSBkMDQ5NzVkYjUyZGNmM2I0NzAyOGVkODIyYTM3OGZmY2Q3YmUxYjNiIGxlZ2FjeS10cnVuaworNjExMiAwZDE0NjNhNDViNmY1NWM2ODU3NzAwZTY2MmRlZWQzOGJiOGU1ZDg0IGxlZ2FjeS10cnVuaworNjExMyAwMTdkMzM1NmE1ZWQwNDMwZmQxMzU5NWExYjA3YjZlOTRkMDcxNDZhIGxlZ2FjeS10cnVuaworNjExNCA0OWVlODllMDE3YWJlNTI2YzYwZjNiMmVjOWI3OTM3NWU0NjcyMGI3IGxlZ2FjeS10cnVuaworNjExNSA1NjRmYTZmMTg1YTdkN2NkNmZlNjdjMzYyZTFiNTNkMWU3NDAyNTMzIGxlZ2FjeS10cnVuaworNjExNiAxNmNhOGYwZjNmMTEyNDAxYTBmYzY1ZjM2NmYyNzAyOGJmMzhiNGI1IGxlZ2FjeS10cnVuaworNjExNyBhOWZiNWE4OTVmYTFjMzJlNmZiYWFhYmM1ZjZkNDBiZjA2ODI2NTNkIGxlZ2FjeS10cnVuaworNjExOCA2M2NkZmJiNGEyYmI5OWM0MTM2YjI5NDM4NGFkOGQ3YjhiZWYwMjliIGxlZ2FjeS10cnVuaworNjExOSA1ZDZmZTE0NWY3NzNhMjE0YWFjMjM4ZjFlZmJlMTc0MjFkM2YzODliIGxlZ2FjeS10cnVuaworNjEyMCAwNjAyZGIxZDFkZmY3YTVmN2U1YzdhZWRlZjUxNTY4YWU3MDIzZWMyIGxlZ2FjeS10cnVuaworNjEyMSA3MjhhMzlhM2UwZDU1MDg0ZTVhYmJjYzNmM2Y4N2U3ZTIzMTczNWU4IGxlZ2FjeS10cnVuaworNjEyMiA1MzA5Y2VmOGMxNjkyY2MyNWY1ZTYxMDQ4OWQxZjMwYmFhYWYwYTQ1IGxlZ2FjeS10cnVuaworNjEyNCA2NmVlYWI1YTc1OGM2NzMyZjIyNDY3MGQxMjVmMTg2Y2ZiNjdiMzhlIGxlZ2FjeS10cnVuaworNjEyNSBmODlmYTdlOTViODQwOTVmNDJhMTgyODU0ZDM0YTFmMWM2YzQzOGFlIGxlZ2FjeS10cnVuaworNjEyNiBhZGU5Zjk5NjU5MGE1ZTc4ZjVhOGJiMDc5MmYwNzAzNTk5NTA0YjVhIGxlZ2FjeS10cnVuaworNjEyNyA5YWMxZTBkNTY2NzQxM2NmZDdlNjg5OTgwYTU4YmZiYjA5MGM2YTZlIGxlZ2FjeS10cnVuaworNjEyOSAzNWJlNWRmNmVmNzcyMmI4ZjUwYTIzNWViMWYyY2Y2MTkxMWM3NzU1IGxlZ2FjeS10cnVuaworNjEzMCA4MjViZDhjMTFiMWMxYWM1YzQ5NmJjN2FjZmMyZDlmOGM0NmFkYTY5IGxlZ2FjeS10cnVuaworNjEzMSAwNThkODFkMWQ1NmQ5MzI2ZTM3N2RlNTMwMGY1MDk2MDY3MGRlMjY2IGxlZ2FjeS10cnVuaworNjEzMiBiZDZkMDI4ZDk4ZmNlZjQyNDUyNWIzMjQzNzI2MGQ1MzJkZDk5M2RmIGxlZ2FjeS10cnVuaworNjEzMyAzOTk0NzBhOTU4YzIyZDk3Y2NiODYzZTY3OTRjM2Y4OTdlODVkNzhjIGxlZ2FjeS10cnVuaworNjEzNCAwNzE2NGQzMDQyOWRjNmRkMDczNjJlYzIwYmMyYTkxZjI1ZGRjYjUzIGxlZ2FjeS10cnVuaworNjEzNSBhZDAzZTIxZmRhNTRiY2E1YzEyZWU3NzhmOGQ3YjgxODAyNThhZDkyIGxlZ2FjeS10cnVuaworNjEzNiA1MTg4Mzc0Mzc3YWU5OTYyNWZkMjViZWFlNDVjZDY3ODQ1MzZhZTJlIGxlZ2FjeS10cnVuaworNjEzNyA1NTZlYzgyZjRkOTM5ZTE1ZjJjNmJkNTI5NTc3NGJkZDgyNzlkYTJlIGxlZ2FjeS10cnVuaworNjEzOCBlYWJiYjNjMTgxOGZlNDI5NjJiMWMxNWE5OGE2OWNkMDg2YTgzYTg3IGxlZ2FjeS10cnVuaworNjEzOSBhYjkyNDgwZmE0ZWNiM2M5YjMwZDM0MzU1NTE4Zjc3NzhiYmIyOWJiIGxlZ2FjeS10cnVuaworNjE0MCAxZDEzNGVjZGEwOTRlZTE3N2M4MGJmYzdkMTAxNGFjMzg3NGMxNDQ1IGxlZ2FjeS10cnVuaworNjE0MSAxNjQxM2VlNTg5Njc3NDU2ODQ3NTE0OTdhM2NmZWJhMGFkMGM1MzdkIGxlZ2FjeS10cnVuaworNjE0MiA5YThhNDBmMjIxOGM5Y2IyNjI2NTg4ZTFmYzE1ODUwYWQ5ZjY0NTQ4IGxlZ2FjeS10cnVuaworNjE0MyBjZWMyN2M5M2I1Y2I4MzRjMTAxNzM3ZGQ1MTNlNjA4MTRhYWNmY2U4IGxlZ2FjeS10cnVuaworNjE0NCBmNmFjZTYxYzNkZmU2NGVhMzdlZjk4MGFlZTAwMWViMzQ5NDBkMmM3IGxlZ2FjeS10cnVuaworNjE0NSAzZWFmMmM2NzNhMTFhNzg4ZmI2MjQ0YWYyMjIzYjNjYmUyYmQxMDgyIGxlZ2FjeS10cnVuaworNjE0NiBkNjE3ZGUxNTc3NGIyZTdiNzVhMmI3NjQ3YWVhN2M5MDYwYWFjMjEzIGxlZ2FjeS10cnVuaworNjE0NyA3NDc2NGIzZWMxYmRiNzRhNWU2NTkyNzU2MjQ2ZjlhZjdkZmFhZGYzIGxlZ2FjeS10cnVuaworNjE0OCBiMDUzMTU4MTY1Nzk4MzA0NTJjMDRlMjlkOWEyZDM3ZjIzODRmNmUxIGxlZ2FjeS10cnVuaworNjE0OSBiZGRiYWE1MWFhNWE5MzMxOGFmZWI5MmRhYjJlNGU2M2FlNWVkN2Y0IGxlZ2FjeS10cnVuaworNjE1MCBiODk4MDczNWQwM2IzZTE0MDkzOGE2NDI0NjNmYTk0NDNkNzNkOGZlIGxlZ2FjeS10cnVuaworNjE1MSA4NzIxZmFmZGI2N2FhOWI1YTkyMmQyM2NmODdjOGYyMzJlZmMwNWQ4IGxlZ2FjeS10cnVuaworNjE1MiBhNTI3ZjQ0OWNhMjY2NjFmNWQyOTBkMzY3ZDEwMzI3NmFhZDM5MmFlIGxlZ2FjeS10cnVuaworNjE1MyA5NDY2ZWFiYjY2OWE2Y2YyNjZmZWM2NTVjMWM3MjZkNzNlMDI2OGE3IGxlZ2FjeS10cnVuaworNjE1NCBlYzM5MjY0MzExZmYyNDE0ZmFlMDFhZWQ3NDc5MjZjOTEwYjkwYjdmIGxlZ2FjeS10cnVuaworNjE1NSA2MDZjMzg1MzVmMzA0NTEzNDdkMTk0NjY5MGZhZWJmZTZlMTdmYjhhIGxlZ2FjeS10cnVuaworNjE1NiBhMTM2MmEwNjMxMjI1MjJmY2NjMTg4MDFkNzY1MzY4NmUwMjE0MzczIGxlZ2FjeS10cnVuaworNjE1NyBiZGJkYTkzOWI5OTk4ZjhhZThiNmQ1MWU1NTNiY2IxMzZiYTdiNWI2IGxlZ2FjeS10cnVuaworNjE1OCBkOGY5ZGZjNzZiYmZjOGRmOTZmZjFhZDhhYjZjZDc0YzhhZWY5ZmNlIGxlZ2FjeS10cnVuaworNjE1OSBhNzliOGQ4MTk5N2ZlYWFkOWNlZDJjMTRiNGIwOTNiOTBkMmJiNjY3IGxlZ2FjeS10cnVuaworNjE2MCA2ZGZkNzk5NDQ4NzJmYzAzYzU0OTc0OTNiYTliMTA5MjZkOWViYzAzIGxlZ2FjeS10cnVuaworNjE2MSA0YTA3ZmUxZTBiNTAzY2I1YmNhYzQ4ZDY2NzY4ZjQyNjNhNGFkMzBhIGxlZ2FjeS10cnVuaworNjE2MiBiNWQxNzQxZGVkNGE1YTQ4ZWFmMDhhMDViY2FhNmQ1YWNhMzMxNjhlIGxlZ2FjeS10cnVuaworNjE2MyA4ZGMxZTc0YzE2OTU2ZWIyMDBlYzY4M2FhZjVkODg5MTRhYTVjN2ZlIGxlZ2FjeS10cnVuaworNjE2NCA4MThlZTExNTA1NGEzYjljZTk2MDEyMmMxMTdhODFhMTVhMDc1MTdiIGxlZ2FjeS10cnVuaworNjE2NSA1ODFmMDczZjA3MWQ3ZDc3MGY0NzJmNzE5Y2JiNTAyYzM0ZmEzMDIyIGxlZ2FjeS10cnVuaworNjE2NiAxNDU0MTM4YzZmMmQ0MGM1YTBiNTYwNjhkYThiZmQ3MDZlZjA0MDYxIGxlZ2FjeS10cnVuaworNjE2NyA2NzM5MGMxZGFlYmVkZGNlZWNmNDFjZGYxMWI0NWNjMDkzMTgwY2E2IGxlZ2FjeS10cnVuaworNjE2OCA4MWY1MzVjYTFkOThjZDQ2YTY5NTg5YTY1ZmUwZDJmZDdhYzJkYjNmIGxlZ2FjeS10cnVuaworNjE2OSA5N2IxYzJhNzBlYWUxMWZiN2NkNDM5OWMwZTlkMmVjYmViODc0ZWU4IGxlZ2FjeS10cnVuaworNjE3MCBlMjNhZmJmNzdlZmRmOTU0YjNmOWNiYWY5YjFhZDY1ZmY5YWM5OTgwIGxlZ2FjeS10cnVuaworNjE3MSA5MzEwODZjYjg1Mjk1MDMzN2E4ODY3OTVmZWUxOGY1NmMwMjRjN2JlIGxlZ2FjeS10cnVuaworNjE3MiBmMDRiZWI4MGY4MTY3N2FmMGZkZjYxOGQ0YTY3YTNiNTNlMjRlNDMxIGxlZ2FjeS10cnVuaworNjE3MyAzNDA4NzU2ZWM2MDE4OTAxN2QxNDZkMGVkZGI2ZjI0NzRhZTlmMzRkIGxlZ2FjeS10cnVuaworNjE3NCBmZjdmYTU5ZjYyZTg5MzRhYjdiODQ1NzRjYjdkMWU0MzRjNjRjZDJlIGxlZ2FjeS10cnVuaworNjE3NSAxNzAzMDUxNWY2MjMyNzU0ZDM1MTEyYTU5ZDhjZjIzMGZkY2IxNTEyIGxlZ2FjeS10cnVuaworNjE3NiBjODY3YzI5NGIxNmMwODNhYTk2NjdlZDE4MTllNjIyODdmMDRiNDkzIGxlZ2FjeS10cnVuaworNjE3NyBkYjU3NzA5NGY2ODUzZTE1NzUzYmU5Y2JkNGIwMTY2YTM2YjkwYTI0IGxlZ2FjeS10cnVuaworNjE3OCAwZTk3OTUwMDRjZDI2NzZmY2QxOGVkMzY3NTVmMTRhODRmMTQzZTBhIGxlZ2FjeS10cnVuaworNjE3OSAwZjZmMGU5OGUzYjY0YjRlNTM4MWZmZTBiNjk2MGUxZDQ5YzdjZjcxIGxlZ2FjeS10cnVuaworNjE4MCBkYWQ0ZDQzMzYzZDhmZTFmYmI4ODgwMDU2MTY3MDBmOTBhOWQ4YTI4IGxlZ2FjeS10cnVuaworNjE4MSA3ODc3ZGVmOTQwNjNkNDcxNDljZmY1YjlhMzBlOWZjMTRlYTRlOGJhIGxlZ2FjeS10cnVuaworNjE4MiBjMDQ1MzFmYzI3MDk2OTM5YzMxNDQ4ZWVhYjRmY2I1Yzg2OTY3ZDJhIGxlZ2FjeS10cnVuaworNjE4MyA4ZTQ3OThkMjE5MTVlZmNhYjNjYWM4N2FlNGJkNTk0ZDhkNDhlODE5IGxlZ2FjeS10cnVuaworNjE4NCBhZGM4NjcwN2ZhOTYzODk5YjU5ZTI5Mjk3ZTJmNGMzZWM3NzE4YTUxIGxlZ2FjeS10cnVuaworNjE4NSBjMTIwYTQ4M2Q1OTA5OGQ2NjkxZmNhNTM1NDVjMmY4MWY3OTQ2MjAxIGxlZ2FjeS10cnVuaworNjE4NiA1YzI1OGVmZmU4MWM0ZDk1YmM2MDQ0ZjY2YTYwZTEzYTAxZjc3MTczIGxlZ2FjeS10cnVuaworNjE4NyBkZTUyNzk0MDJiOTQzOGNkZjY0MzNjMzczMzgxNjE3YWRhN2Q0NTAyIGxlZ2FjeS10cnVuaworNjE4OCA1MDEyMTkxZWMyZGFiMTRiYmViNDc4ODg3ODE4MDU4Y2FjZjFmMzUyIGxlZ2FjeS10cnVuaworNjE4OSA5ZTU0NGEyYzE5YTJkYTcwODkwOTc0YjZiMTIxM2Q0ODhhNjhkNTZkIGxlZ2FjeS10cnVuaworNjE5MCA3NmU1ZjM1OThlNjliNGEyOTkxOTE4NTM1ZjE0ODBjNWIzYTZmZmRhIGxlZ2FjeS10cnVuaworNjE5MSBiMzQxZGVmNGVlZjhjYmM2MmEwNzM1NjQyNzg5NTY5NDQ4MDRjZDEzIGxlZ2FjeS10cnVuaworNjE5MiAzMjJmNjFlNGMzODc1YWE0ODE1NjcxNjBjM2I4ODM1MzI2YTkwZTE0IGxlZ2FjeS10cnVuaworNjE5MyBiMmIwNjNhYTI3NTUxMGQ2YmNjNDg0OTcxYjUwMGYzZjY4ZjRjOThjIGxlZ2FjeS10cnVuaworNjE5NCA0M2EzN2U2YjY0NjlhNGQyMWFiMGZjM2MyNjVjMDU3M2QyMzVlOTk2IGxlZ2FjeS10cnVuaworNjE5NSAyNjQ0MmI1ZjljZmQ4NDdiNjNiZTI3ODFkNGZiM2NjYjQwOWJiY2NhIGxlZ2FjeS10cnVuaworNjE5NiAwZmY1YmQ4ZWJiMDFhNjBiNzE5YTc2NjNhMDljNzE4OGU0YzJlZmI1IGxlZ2FjeS10cnVuaworNjE5NyA2NTc3OTBkYjA2ZTNjNTk0NWQ5ZTdhZDljZmMxY2JlYzFmNjVkMjg3IGxlZ2FjeS10cnVuaworNjE5OCBhMTBhMGY2MDE0YzQ5YTVmYmQxYTRjMzQzOTVlMjg4MmY4NTVmZjVkIGxlZ2FjeS10cnVuaworNjE5OSA2ZjNjN2IyZjJiOGRlODI4YjI2NjgyZDM5OTVmM2ZiYTI3ODBmOWQ1IGxlZ2FjeS10cnVuaworNjIwMCAwNjg1NTYzODBjYjA4NjFjNWY4YzAyNDQzMGRhMTYxN2RjODBmZWVhIGxlZ2FjeS10cnVuaworNjIwMSBiYTg0ZDdlODU1NGI1ZWNkNGZjZDY5ZDU3Njk3NjRiNmVhZDMzZjBiIGxlZ2FjeS10cnVuaworNjIwMiBkZTFjYjMzMjE5ZTMxMThhM2Y5ZWEyMDkyMWVhMTgxYTY5ZTc3ZTU3IGxlZ2FjeS10cnVuaworNjIwMyA1MjNmNDlhMWU0MmE1NzA5ODg4MjVmYWFmNmQ2OTY1ZGI5NDFiZjAwIGxlZ2FjeS10cnVuaworNjIwNCBiMjUwYjI3MGRiZDRkMGViMDQwMTM1ZGU2NjhjOGVmYTM2NmZiYjE3IGxlZ2FjeS10cnVuaworNjIwNSAwNGMwNzUzOGNhYzRkYjc3MmNkMTYxMjc5NWMyMzc2NDZiOWE4OWE3IGxlZ2FjeS10cnVuaworNjIwNiA0NjkyY2I0NjAwOGVlMGM5ZTkzM2Y2ZDY4NzhhYTQwNWMzYmU4Zjc1IGxlZ2FjeS10cnVuaworNjIwNyA2YzljMmFjMTVlNGIwMTdmNzQ4NmJiYmQ4YzExN2I0ZDBjMjMxMzc0IGxlZ2FjeS10cnVuaworNjIwOCA2YjFiNjY0ODYzZjQwOTQwMjVlN2UwYjVkYWUwYzU0Y2Q1YjM3YWZhIGxlZ2FjeS10cnVuaworNjIwOSBjZTc0YmJhOGE2YTZkMThiY2U3N2NlNmJjNzI0MWM3OTkyNzQ3YmNkIGxlZ2FjeS10cnVuaworNjIxMCA3OTUyNDgyOWE3MzA2NjZkY2IxYjQ4NDQyMTI1MTRiYTUyM2Y5MjRhIGxlZ2FjeS10cnVuaworNjIxMSBlNDgwN2EwYzEwOTJkZTJlY2Q0MDY4NTU5N2E0Mjg5YzZhMjYzNjg4IGxlZ2FjeS10cnVuaworNjIxMiBlZjU5YjRkMDAxMzQ5MDdhZDM5Mjg2ZDllNDg2NTM2YWM5YjA0MmI5IGxlZ2FjeS10cnVuaworNjIxMiA0ZmM4NWM4MmNjMjIyNTU0YWU2YjljMGI4Nzc3NmVkNWYyYjcwYzZlIGxlZ2FjeS10cnVuaworNjIxNCBiMjA3ODc2ZGYyOWFjYWMwNzIyMWFhMjYwNGUwZWMwMTc4YWM0MmNlIGxlZ2FjeS10cnVuaworNjIxNSBmZmRmMWYwNmNmOGI1YzM2M2Y5YzU0NzYzNzlmZjVmOTVmN2U0YmY5IGxlZ2FjeS10cnVuaworNjIxNiA2MDgwYjJlYmMxZjE0YTVjNDVjMjEwNzY2MGE3NWRhY2FkOTEyODU5IGxlZ2FjeS10cnVuaworNjIxNyA3NTA0ODg0ZThhNzRmYzYwN2E4ODZhMjFlZjUyNmZhMmQ1NDQ3NTUyIGxlZ2FjeS10cnVuaworNjIxOSBhYzcwMThiNTc3NDU2Y2ViYjExNmE3NTBmZTIyY2U2NGI5ZGU3MzBiIGxlZ2FjeS10cnVuaworNjIyMCA1NmQzMzUwY2ExZjE3MmQ2MmVkZjkzMWI1MzJiMzBiMTExNWM5NjcxIGxlZ2FjeS10cnVuaworNjIyMSAxMWUwM2Q3YTcyOTgwNWRmZWVmNzQ0YTU1YzUwZTkzMzU3YmI0MDg5IGxlZ2FjeS10cnVuaworNjIyMiBhMjI0MzhlOTRmZTk3NGI1MTkxMzQ4M2E1MjUyOWEzMTUyYzE1ZTdmIGxlZ2FjeS10cnVuaworNjIyMyAyZGI2MzYzNDU5Y2FmMWQ2OWRlMmE4YmFhYzE2ZmQwMzVjMTQxOTQwIGxlZ2FjeS10cnVuaworNjIyNCAzNTM3YzA4YzFlZmZiYWI0NDcyMzZiOGMxMmFjM2YzMjg2OThkNzFhIGxlZ2FjeS10cnVuaworNjIyNSA5N2QyMjc4YTMzMWI5NDVkNDEzMWJlMzNkNTkyODBlYzZhZDBmYmYwIGxlZ2FjeS10cnVuaworNjIyNiBkMjNmZWEyNDhhMWVjMjViMWNjMTc3ZWI1ZGY0ODU2YzE0ZWViMWE4IGxlZ2FjeS10cnVuaworNjIyNyA2NTk4YTUxODY2OGY3N2FmMjU4YWJhNWFmMjdkOWNkNzMwMWZhOWY2IGxlZ2FjeS10cnVuaworNjIyOCA4MmJiN2QyYTZiMzFlNmY1MGVmNDQ0OWVmNzBmMTdhYjM5ODk1NzUwIGxlZ2FjeS10cnVuaworNjIyOSAxNWIxYjAzYWRlOTNkNzJjZGU1MDE3NTBiNGUzYzFiNmUxNzk3ZmMzIGxlZ2FjeS10cnVuaworNjIzMCBiOTE2ZDYxNGUzNjM0Njg1YWU2NTVkNWI4NjJiY2NhZDYwNzQ4YTg2IGxlZ2FjeS10cnVuaworNjIzMSA1Njc0NmVlZGZlMDM3ODk3NGI4YzM0MDNiNWUzYTgxYzI5ODQ0NjRkIGxlZ2FjeS10cnVuaworNjIzMiBiZjhjMjMwZGY1ZThkZDMyMGUyYzE0ZmY0NDU1MmIwZGUyOTQwZjVjIGxlZ2FjeS10cnVuaworNjIzMyBlNjAzNjAxYzY4Y2Y0NDY4ZTUzZjA2NjUzMzJiM2Y4NTFhZjRhY2JjIGxlZ2FjeS10cnVuaworNjIzNCBjNTdiMzhlNDBiMmRhNTBjNzVlY2VhYTI1MmQ3OGQ3ZDU2MGUwODY1IGxlZ2FjeS10cnVuaworNjIzNSBiYjRjYzNmYTYwMDBiMDliZGFmN2MzOGRjZTY5ZjVmNWUwMGQ2OGMxIGxlZ2FjeS10cnVuaworNjIzNiAyOWZlNmEwZGUzNjYzYjhkNDVjMmM3NDkzZWI1YjQ4NDBhY2Y4NGZmIGxlZ2FjeS10cnVuaworNjIzNyBkYjU0ODhmZTQ5NWIyYTAwNTkzYmI5MTMwOTVmODk0MTM5YTVlZjNiIGxlZ2FjeS10cnVuaworNjIzOCA1MTY0OTBjODE5MmNkZmIwMTZmYTE4NWI5MjdjMjA4YjcwZmRkNjg4IGxlZ2FjeS10cnVuaworNjIzOSA0YjVkZWY0MDc3M2NlYWZhNTc1ZmNlNWIyMDhhZWUzM2IwYzc4ZGIwIGxlZ2FjeS10cnVuaworNjI0MCBkMWFlMGVhOWE1ODVmOTEyZDdhYTNkMDA0ZmY4MTdkMGRlYTExMmY4IGxlZ2FjeS10cnVuaworNjI0MSAyYjgxMGEzYzdlNDE0Y2E0MmU2Yzg5YjRhMTM3YjRjYmQwZTQ2ZWMyIGxlZ2FjeS10cnVuaworNjI0MiA3Y2RjMGM3MTQ2ZDUwYWMyMTk3M2Y1MDYwZDhjZWM2NzFkYjg5MThmIGxlZ2FjeS10cnVuaworNjI0MyBkMDk4ODMxOGI3NTY4YzZhNTNlYmRiZTJmY2Q3OWI4NzFlZGM0MzZlIGxlZ2FjeS10cnVuaworNjI0NCBjOGQwZjc4MjIxY2MzNmU4MTc4NmQ2NDc1MDk4OWU4N2FmMGM0NzBiIGxlZ2FjeS10cnVuaworNjI0NSA2ZTQwYTJhM2U2ZWYwYzRhMzk4NjMzNjA5YTI0MTNlYTA2ZjhlMzQ1IGxlZ2FjeS10cnVuaworNjI0NiA0Yzc4ZDczYzU2Njc1NzIzY2I3NzNmMjNkMGEyYWNmNDI2YjVjYzIwIGxlZ2FjeS10cnVuaworNjI0NyBhYjExMGIxZTkyZmZhMTgyZWFjNGQ2OTNlMDI3ZTQzNGNiM2I2OGRiIGxlZ2FjeS10cnVuaworNjI0OCBlY2NmYWRhNDdmMjg1YWI0YTliZmFhNTQ1ZWU0YjIxZWNkNzdhZGRlIGxlZ2FjeS10cnVuaworNjI0OSBmMzVkZGU3ZjQxNDNlNWY2MTBiYWNlZDk2Y2EyMGYzOTljMzAwMjEzIGxlZ2FjeS10cnVuaworNjI1MCBmOTkwN2Y1NzMyN2VjNTc2MzhkN2E5MjAxZWE0N2EzY2RjYzdiNjg5IGxlZ2FjeS10cnVuaworNjI1MSAxMGI1MDYxZjZjYmNmODU0YzdlODFhNTJkYzQ5MDk0ZDA5YTIzZTM3IGxlZ2FjeS10cnVuaworNjI1MiBhYzExNGE1ZmM4ZmY4NDZlNzk4MjE4MzgzY2Y0YmI0MWFmN2M2NmRhIGxlZ2FjeS10cnVuaworNjI1MyAyN2MzNzc1NzVmNGFjNGRkOWY0ZmIyYjA4YWE5OTgwNmI0MWM1NGI3IGxlZ2FjeS10cnVuaworNjI1NCAzZWIxNjk0ZWRjZTZiMDQyOWRjNWNlODVmOThhYTBhNjhkNjM3NzQxIGxlZ2FjeS10cnVuaworNjI1NSBhNjIwM2QxNzE1OGJhNTJlMGZkMzNkOGMyOGIxYzQ1OWZhZmY1YzM0IGxlZ2FjeS10cnVuaworNjI1NiBiNDEwMTk1NTdiNmU3Y2ZmODhmMmFlMDg4ODE2ZDgxY2U4YzMxOThlIGxlZ2FjeS10cnVuaworNjI1NyAwZDc0MDExMzEwY2QxYjViZWFjZGNhZWE4Mjg0OWRkYTQxZDJjZDc1IGxlZ2FjeS10cnVuaworNjI1OCA3MThjOGFmN2JlMmE5ZmNlOTIxN2I1ZWJmMjQ2MmVjNDkyMzA3OGZlIGxlZ2FjeS10cnVuaworNjI1OSA3NzY2MzYwYjg1Yjg5MWVhOWRiNzg1ZWRmZWI4NWIzZGM4N2FmYmEzIGxlZ2FjeS10cnVuaworNjI2MCBiNjUzNjhlZDg2YmU4OWQxN2ZiOWIxYTk1ODlhZGNiYmU2NTczYzQ1IGxlZ2FjeS10cnVuaworNjI2MSA0Njg4MzdhZDQ1ZjM4MjNhYzg5MjA4NDg5ODRhNTFlOTU2YWY4MTg4IGxlZ2FjeS10cnVuaworNjI2MiA3ZTY1MzY3MzBkMGVlZWQyYmI4OWRlMjkxNGNmNTE2MTgxNjA2NWM3IGxlZ2FjeS10cnVuaworNjI2MyAyZjU3MzkyYjJmZGUxMjliYzZlMzA5OTQ2NzE2NDMyNzI5YzM4MzBiIGxlZ2FjeS10cnVuaworNjI2NCBlOWVlNGM5MDVhYmQyOGY3MmU4NzJlZGZjYjU5YTE4YjkxMWQ2ZWNlIGxlZ2FjeS10cnVuaworNjI2NSBjYTAyZDkyNzgxODAxMWI3ZjA5NjhlMjgxNzY0Zjk0NWE1ODliYTk4IGxlZ2FjeS10cnVuaworNjI2NiBkMWM0N2Y0ZjE1NDE1MDIzZjk2OTBmYWYzN2I0ZWMyOWQ5NjczYTk3IGxlZ2FjeS10cnVuaworNjI2NyAxZjIwZjUxYjcwMGU0NWI4YzM2NTJhYjI2ZmZmNThjYTkyNjVkZGEyIGxlZ2FjeS10cnVuaworNjI2OCBlYzY5NjNjMzc0MWMxNjc0MDcyNjZmY2Y1NTQ4Y2M0NjcwMmRlNWU4IGxlZ2FjeS10cnVuaworNjI2OSA1MWE3YzhmZTdjN2IyOTI2ZDhhYzA0ZjE4NzhjMGVhYzZiNjk5ODcwIGxlZ2FjeS10cnVuaworNjI3MCBhODE2YWJlODZmOTA0NGQ3YWM2NWFhZDNjMGY3MDdhZGMwNzU0ZjgyIGxlZ2FjeS10cnVuaworNjI3MSAyZjI3NTAxZGIzYzNlNDI3ZTExMzZiOTVhOTYyYTcyN2MwZTFjNjVhIGxlZ2FjeS10cnVuaworNjI3MiBhY2YzNWVkMGYwMjY0NzUxZWFkMDEzNzVkMzQ1ZTg4MTQ1Mjg3NDhmIGxlZ2FjeS10cnVuaworNjI3MyA4NDMxMjFhMjI2Y2E5NDYxYjg2ZGVmNmI1YzJhMTRiNzEwOGUzN2IwIGxlZ2FjeS10cnVuaworNjI3NCA0OGU4NTlmMzI4Y2JjMDExZjZjNzZlYTRlYWI1MjlmYjU3NWQ4MmFhIGxlZ2FjeS10cnVuaworNjI3NSAyZWFhMDA4NjBlZGM0NjBiMmM5OTI1NzllZWVhNzk2ZDU3ZTljOGY1IGxlZ2FjeS10cnVuaworNjI3NiA0ODc3NmJmNGJkNDkzYzZjMzExNzNiNTAyNWY3ZDVhOTY0ODkzOGIyIGxlZ2FjeS10cnVuaworNjI3NyA0ZjczOTYyYWFiYTZiYWM4NjQ3ODViMmUyMDY5NzZhYmE3Y2U4NTYwIGxlZ2FjeS10cnVuaworNjI3OCA5Mzg2OGM3YTE1YzkwYmVlYjg5NDQxOTg2MjMzYWJlNmZkYjY4NGEzIGxlZ2FjeS10cnVuaworNjI3OSA0MjZlNzk2ZjYxMTUyMTc5ZWE0ZGI5ZThhMTZkYzA3YjE2ZDJmNTBmIGxlZ2FjeS10cnVuaworNjI4MCAxN2EyODkxZTYyN2ZiODllNTIzZjcxMmZlNjUxZGYxMDBjMmM5OWRmIGxlZ2FjeS10cnVuaworNjI4MSBiZjNmODA5NDFlYzExYzhhMzcxYzU4M2ZjMzQ5YmEwZWU2YzkzZDY1IGxlZ2FjeS10cnVuaworNjI4MiAyZGJkNTA4MWM3MWU3YmZiYTA1NjBlOGRhZmY0MWY5NjhkYzVkNjZiIGxlZ2FjeS10cnVuaworNjI4MyBiOWEwNDM0ZDJjYjZmMTIwMmQ2NGY0NjQ4OTMyY2NhNDdlY2YwMmJmIGxlZ2FjeS10cnVuaworNjI4NCA2ZDMyNGZiYWZhZGMyZjlhMzY1OTMyYTkyNzMzMjA2YzE3ZDYzOTZjIGxlZ2FjeS10cnVuaworNjI4NSBjYTM2ZTMwOGUzM2Q5ZGUyNzNmMWE2OTc3OTZkNDlhMjJlZTdkNjBiIGxlZ2FjeS10cnVuaworNjI4NiAzMWUxMDBkOWQ5MjljOGIwZDhiYWE3NjE2MTRjZGVkMTVhYWE3MDRhIGxlZ2FjeS10cnVuaworNjI4NyBjYzkyZmEyY2Q4NmJkOGVlNmRmNzY2ZDg0YTI0YzI2ZjkzOTE1ZjJlIGxlZ2FjeS10cnVuaworNjI4OCA4OWQ0ZjVkZWQ2NzAzNzc2MDk5OTdlZWUxYjNmM2IzMzM2NDU3Y2JlIGxlZ2FjeS10cnVuaworNjI4OSBmMzI2NzZhYjNmM2EwNjExZDE3MWY4NDk5MGZhZjRkOTZlNTk3ZDM3IGxlZ2FjeS10cnVuaworNjI5MCAzYzVjYTc3Mjc5ODgzYTQzMTJlNjcwNTkyMjQ2OGQ5MjcyMWQ3NjgwIGxlZ2FjeS10cnVuaworNjI5MSA1YjZhNzkxYWM2ZTdkZTRlYWRhMjQ5Yzg4MGNiOTA0OTkyZTM4ZjA3IGxlZ2FjeS10cnVuaworNjI5MiBmN2YzZTRiNTY5M2MxNGJlZDM5ZGVmNjNlNmJiZGJmOWMxNTFjNWNkIGxlZ2FjeS10cnVuaworNjI5MyAyNDBmODM0YWVlOGJiYjQ4NDU4MzM5NDM0NmE5NTU4NzIyNGZhMjMwIGxlZ2FjeS10cnVuaworNjI5NCBkYjRlYTNhYmY4OTEyYzQ3MjA5NTAzZTljNzIwNTYzYzI4MTVjZjM1IGxlZ2FjeS10cnVuaworNjI5NSA5YWFjMzc4OTJlODg4ZmVkODQ4YmExZGFkNGI2N2FhNGI2OWYzMjQ0IGxlZ2FjeS10cnVuaworNjI5NiA4MjBhYmExMDQ2YzM5YWZkZjM5MTY5ZjIwZjczMDAzNDk5YTdmOGIyIGxlZ2FjeS10cnVuaworNjI5NyBjM2VjNjliMWZlMzYwOTMzZGRjNjVmZjIxM2M1Y2RmNzhlNDIyNGExIGxlZ2FjeS10cnVuaworNjI5OCA5ODMxZTBmYzAxZGUwNDcyOGU5YjgxZmVhMmNkZDUzODZjMDNhMzQ2IGxlZ2FjeS10cnVuaworNjI5OSBiYzIyZWI1ZDRhMGExMWJhNjVjZDQyMGE2MDVjMjMzNzJjNDE1NGMyIGxlZ2FjeS10cnVuaworNjMwMCBjMzVkOWUyYTY4NjA4MzI3ZTUyODI0ZDA0YzI0MDlmY2EwZTFiOWRlIGxlZ2FjeS10cnVuaworNjMwMSAwOWJlYmE5NDA5ZGRkNGFmNTMyODc0MDFjMjk2NDI4MTJkMGEyZTE5IGxlZ2FjeS10cnVuaworNjMwMiAzZTNlOTVkZGNlMjJmYjM0ODlmNDQ2YWFiNWQ1ZDMyN2ZjZjAyNmIxIGxlZ2FjeS10cnVuaworNjMwMyA5Njg1MWY1MWFkNmJmOWZlZGFlNWY2YTRlZjZiYzFkOGQ4MzY4ZTk2IGxlZ2FjeS10cnVuaworNjMwNCAwMzliYzNlNGU2NGVhMTIwOGZjYzM5MDAyMjIxMmY2ZTY5ODBiOTRhIGxlZ2FjeS10cnVuaworNjMwNSBmMGVmZmYyOGEyNGRkMWQwNTVjMzZhYzU5M2MwYjZkNGZhYjYxMDkzIGxlZ2FjeS10cnVuaworNjMwNiA3N2Q5MTJmMmFiY2I0ZjMzMDQwZjBjYjkzZDlmODc1ZTdiNDgwNDVkIGxlZ2FjeS10cnVuaworNjMwNyAzNDMyMzJjMWRjOWEwNzQ5Mzk5NzBlNmQxNTFjNDBhOGIzZTlhYmJjIGxlZ2FjeS10cnVuaworNjMwOCBmYTE0ODBlNjBlZDZiNDg4OGNmZWNmNjQxOGIyYzJjOTc2YzlkZTNlIGxlZ2FjeS10cnVuaworNjMwOSAyYjJlZmE0OGYyOGQyNmI5NzNjY2NkZGEwM2QwZDVjYjNhZjc2YmZiIGxlZ2FjeS10cnVuaworNjMxMCA1YWFiM2Y2NjhlODQ2OTZkMjVkMTY1YWVhNzM2Mjc0MGFmNzI4NmJlIGxlZ2FjeS10cnVuaworNjMxMSAyMmUyOWIxNzQ3ZTEzOWQ5NTk4ZWFhNTEyNmM1OTMxM2FmMzk5NDlkIGxlZ2FjeS10cnVuaworNjMxMiAyNmMyMDAyNjY2MTE5ODA2ZTAwN2FkMzY3Y2I4NTM4NWY3MjIxZGE1IGxlZ2FjeS10cnVuaworNjMxMyBmNjY2NzlhYThkZTBhY2UzNmYzNmRiYjNkN2I5NWIzMjk3OTZlMTg4IGxlZ2FjeS10cnVuaworNjMxNCAyMTA4MTZkMzQ4YmE0NWVlODkxNDY5MDc4YmNiYTYyZGEwNTgzZGFiIGxlZ2FjeS10cnVuaworNjMxNSBkZTBhZDc1MjdkZTdmY2U4NDcxZTg2MDk0ZjI4Yjc3ZTFjYjBmNWZiIGxlZ2FjeS10cnVuaworNjMxNiAwZDU0YTE0ZWYwYjhjNzRiZmI2MmQ1MzMyZjIzM2U1N2VjNzg2ODI5IGxlZ2FjeS10cnVuaworNjMxNyBkMTkzMzhmZDM4ZWI2OWU4NTQwNWNlZTFhMDlhMDczNjRmMWVlNmY0IGxlZ2FjeS10cnVuaworNjMxOCBmY2Q4MmEwMTUwN2QyNjIyOTU1NWI3YjA5MTRiY2FlY2Q3NzU1ZGEzIGxlZ2FjeS10cnVuaworNjMxOSA4ZGFiM2FkOTY0MDA2YmVkZmVmOGY1OTQzNDBmMzBkNzM2MmNjYTIzIGxlZ2FjeS10cnVuaworNjMyMCA5N2QyNGFmMzQ4Y2ZlODI5YjQxYzdkMmYyZGE5ZDg5ZmYwYTE4YzcwIGxlZ2FjeS10cnVuaworNjMyMSA2OWRjYzAyZTMxMzVmYWJjNzM0ZTUwZWIxMTI4MTMzZDllMzcyMWM1IGxlZ2FjeS10cnVuaworNjMyMiBkMWNmZjQ5ZTNjYzhkMjgwYTQ2ZDNjYTI1NTc4N2QxNGMxY2RhMTU3IGxlZ2FjeS10cnVuaworNjMyMyAwZmZjMGIzNjJmY2JiOTNmYWJiYmI1YzU3OGE2MWRjNjJiN2VkMzliIGxlZ2FjeS10cnVuaworNjMyNCA5NzUxOWRmYzYzYWViNzlkZmU4YTAxZmU5MjJmMDg1YTA5YTg1YTE2IGxlZ2FjeS10cnVuaworNjMyNSAzYjExNGYwMzE1YzE0NTYxNDkyMTYyYWQ3ODViZGRiOGQ5ZTQ4MDg1IGxlZ2FjeS10cnVuaworNjMyNiAyMzEyNmU4MDQwYTBjMTI2MmVhMThkMGZhZTcyYWQ0ZDY2NGY1NWQ5IGxlZ2FjeS10cnVuaworNjMyNyAwNDU3ZWE5NGVmNzlmYWY5YmM3OWJlZjFmMjRhOGFmYTJmNTQ2ZTBjIGxlZ2FjeS10cnVuaworNjMyOCA1ODMwZWRlNDA4NmM3NDQwNGQ0MTdkZTMyNTFkY2NlMzE2ZTE5ZDkyIGxlZ2FjeS10cnVuaworNjMyOSA4M2E5NWJmNzA4NjdkYmYzNzRkN2RlODU5OTc0NGZhMDhiNWUxZmI0IGxlZ2FjeS10cnVuaworNjMzMCA4YjcxZWE1ZGFjYzgzMTU1MDIzOWQ3Mzc5NGZhYWJhNmVkMDEzNTI3IGxlZ2FjeS10cnVuaworNjMzMSAwODUzMTY2ZjBkNjk2NjBkNmM0MzJlYjM4ZDI1NzBhZmQ0YjdiN2ZhIGxlZ2FjeS10cnVuaworNjMzMiBiNjE5Mzk1MjRjM2NlZmNiNGFlMGUyMTUwNDhjMDA2NGQxNmUwNjUwIGxlZ2FjeS10cnVuaworNjMzMyA4YjU5MDEzOTlhZGRiNGVhMjE2OGJlYjdjOTJmNTQzNTRiMWEwYzk0IGxlZ2FjeS10cnVuaworNjMzNCBkNTVjZGY0M2MyNDAxOWM2NDA4OWVmYTJjNmY4NzI3MDdmZmZhNDYwIGxlZ2FjeS10cnVuaworNjMzNSA0NTY2YTE5YzM0MzhkMTRlMDE2YWEzNzBmMjBjMzhlN2YxMThkZDAyIGxlZ2FjeS10cnVuaworNjMzNiA3ODE5NTY4MzIzYzM3NTNmMzJkMjNiNTcwMjE4MDRjNjc3MjczNmRiIGxlZ2FjeS10cnVuaworNjMzNyA0NTkxMDM1MjI4YTc3M2E1MTZhYTQwZTg1NzNmNGE1OWRmYmNkZTUxIGxlZ2FjeS10cnVuaworNjMzOCBhM2IwOWE3MTE2MmJjMjJiYzRjNGJhMzc2Mzc2ZjI2MDZmNjM4ZDcxIGxlZ2FjeS10cnVuaworNjMzOSBlOWIzNWNjODhiNTBlOTQwZDI3YmNkY2IwNDU3NzJhOWVjN2Y3YTZjIGxlZ2FjeS10cnVuaworNjM0MCAyYWMyYTYwMTIwNWIzMzViYzg2YjA5MTczZTZkNTlkMTRmNTA5NzAxIGxlZ2FjeS10cnVuaworNjM0MSA0ZGRlOGMwNDBmOWVjNTE2NWJlMDM3ZmJlY2MwM2E1Y2E1ZDk1NjZiIGxlZ2FjeS10cnVuaworNjM0MiA1YjE0NzEwOTVhM2EyNjcyMWZiNjQxZjQyNTU2NmE2M2I0MjQyNjg3IGxlZ2FjeS10cnVuaworNjM0MyA5YjE5NTI4NWZlMTc3YjE1ZjRkZTU1YTNlNGE2NTk1ODVmYjcxM2M1IGxlZ2FjeS10cnVuaworNjM0NCA0ZTk3OTE2MTY3MWY0MzlhZTg1ZTIwYmJkZDUwMjk1N2ZlOWYzMGM4IGxlZ2FjeS10cnVuaworNjM0NSBiYzBlZGM1ODlhZDQ5ZDliNWQ0OTBjYWI1MjUzYWQyNGE0ZWJjNzk5IGxlZ2FjeS10cnVuaworNjM0NiBkYzVjMTExNzczMzk4MGU4ZDg3NTQxZTYyNzAzN2I0YTdlNTBhZmU4IGxlZ2FjeS10cnVuaworNjM0NyAyODM4ZGI4M2QwZWQzODYwNGVmNjI4YTQ3ZDEwYzQzMjBhMzk1MGIzIGxlZ2FjeS10cnVuaworNjM0OCAwNjM4ZmRjMjNlZWM0YmE2ZTZiM2UyNDgxODhmOWU2MTdiZDBjODAxIGxlZ2FjeS10cnVuaworNjM0OSA0MDhlMzc0OTM0ZTVhNDI0ZDMwNDNiZmQ2NGI4OTVhYTIxNzU5NzhjIGxlZ2FjeS10cnVuaworNjM1MCA0Mjg2OTEwMDgwYTlmZWFhZmRlM2Y4MTMwNzliOGJkYmQzNzQ4ZDBhIGxlZ2FjeS10cnVuaworNjM1MSBmZWU5MjhmMTY2MWU3NzUyZjU3MjZmZjM4ODJhZGRmMDNiOTgyOWM5IGxlZ2FjeS10cnVuaworNjM1MiBkMGI0NTY2ZTIxMDdhNTM3NDE4MTM3ZWUxMDc4OWVhYmU4MjVkY2E1IGxlZ2FjeS10cnVuaworNjM1MyAyZGExMmM5ZDcxNGY0NzMyYmJkNDA5ZTU4NTY2MTg2YmIyZmUzMTE0IGxlZ2FjeS10cnVuaworNjM1NCAzNTdkNzM5NWM5OThjZGY2NmViZjY0NmJlNTQzZjgzNDY1Y2ZjNDgzIGxlZ2FjeS10cnVuaworNjM1NSBjODgzZDVlMjRhZDhmMzM1YzkyZWFmNmQwMmFjOWE4NDU0YTQ0ZWMxIGxlZ2FjeS10cnVuaworNjM1NiA2ZGM3ZWQ4YTQzNGIxZmYzNjkwZmI5YTU5ODExYTIyNDljMTMzNGUxIGxlZ2FjeS10cnVuaworNjM1NyBmYzliMTY1YThhMDlkMzEyODZiZTA4NjBhOTg0Mzc1MGIzOTQ2OTYwIGxlZ2FjeS10cnVuaworNjM1OCA4MWY2MGY1MmI4NzMyNTg1YWY0ZThjMzdhOWNmNDc3MTljZGFlMDRlIGxlZ2FjeS10cnVuaworNjM1OSA5NTdmNDJlYTBmODQ0NDQ4NmEyMzdjYjc5MmIzMDU3ZWQ3YzMyM2EwIGxlZ2FjeS10cnVuaworNjM2MCAzYzc1MzA2YTY1Y2VkNDE2NjMzNzhjNjkwY2E1YTM0NTRlOWRjN2E5IGxlZ2FjeS10cnVuaworNjM2MSA1NzE2ODI1ZjZlOWIxMzdmZjg2N2UzZDliYWJiNDNmOGUzMTM1YTU5IGxlZ2FjeS10cnVuaworNjM2MiBmOTAzMDE1NDRmYTliZTg5YTZiOGYyYTg5Yzg1YjdhYTRkMTZlYjEyIGxlZ2FjeS10cnVuaworNjM2MyBkOWU3ZjEwODhjM2IzNjNiYTQ4NTJjZDhlYTcxYzgyNzQxZTc2ZTgwIGxlZ2FjeS10cnVuaworNjM2NCBhYjA4ODllNDIxZWQ0N2EyYjJhNTQwNDJiOTY0NDZiNjQ0ODA1N2E0IGxlZ2FjeS10cnVuaworNjM2NSA5NThkNGM2NzUyNmIwOWNkZGQyZTI2MjI1NDIzMTQzZTBiMmRlNDY0IGxlZ2FjeS10cnVuaworNjM2NiBhNTBhZTgzOTNkMzc4MGNjNzQzYmY5YjgzNzA0YzFiOTkwNTAyZWY4IGxlZ2FjeS10cnVuaworNjM2NyAzM2U1ZDFkNDJjYzI2MmY5ODIwNGFiZDkzNTNjMTkyZWE3Y2Q3NTMzIGxlZ2FjeS10cnVuaworNjM2OCBmNGEzYjE2ZTk1ZjA3ZmFhZjRlZjFkMGExYzJkYmFhZTk5MjZjNDFjIGxlZ2FjeS10cnVuaworNjM2OSAzMThlNjg5YzIyMGY5MjE5N2Q5ZWM3NjViZTY5ZWNhZjMyNDc1ZDQ2IGxlZ2FjeS10cnVuaworNjM3MCA5NGM2YmY2ZmQ3ZjRmYTA5NTAyNGM3ZGFmODhhYjRiNDkyMWRjNTNhIGxlZ2FjeS10cnVuaworNjM3MSA1ODQ5MzY4OTBmODY2OTE1ZDIxNTRiZDUyNWU1MGYzZjQ1ZjJkMTc3IGxlZ2FjeS10cnVuaworNjM3MiBjYmE0Y2UxNWEwZDVjOTlhYTY1YTljODU5Njg0ZGRlNWNkZDdjNmJmIGxlZ2FjeS10cnVuaworNjM3MyBjZTJkOTIzOWJhODExNDVkOGM2MGMyYzYxZjkwNWRlYjdiODZkODM4IGxlZ2FjeS10cnVuaworNjM3NCAwODY0YTYzYTEwYTkyYzE3YzUxY2QzMDQxM2UyYmQwM2ZmY2IxY2IzIGxlZ2FjeS10cnVuaworNjM3NSBhM2Y2N2JiOTZhZGM4YzMyNmRmZmQ4NTJiMGU3MWZjOWJlNzMzYWE2IGxlZ2FjeS10cnVuaworNjM3NiBmZTQxMTYzYzAwYzNmZjI5ZGU1ZjU2ZTYzYzMyMjhkNDQ4N2YwMTA1IGxlZ2FjeS10cnVuaworNjM3NyA5N2U3MDExZmIxYjE5MWEzMDRmNjViZjQzYTE1NmMzZmMzNzAzMjBhIGxlZ2FjeS10cnVuaworNjM3OCBhMGZkODE2ODhiZTUyZjVkNTcyOTU4YzljMjRjYzA0OTFiNmViMzE4IGxlZ2FjeS10cnVuaworNjM3OSBhYzFkNWFiZmQ3OGVlNDkxMGQ3ZTU4MzJhNzhjNTQ1MjVkMmEzMjFlIGxlZ2FjeS10cnVuaworNjM4MCA4NjcxNjQyZTE0YTM3OGY5OThiOTFlODIwNmE1Nzg1NWI4YTQwODZkIGxlZ2FjeS10cnVuaworNjM4MSA2ZDUwOTZiNzAzOGQ4YTE2OWE3NDFiMDllMWFlZmIxNTM5M2RkNGMyIGxlZ2FjeS10cnVuaworNjM4MiA5Y2YxMWFmMzYyOGM4OTg1OWM1MzFkNTM1ZmM0Yzc4OTNjMjFjODMwIGxlZ2FjeS10cnVuaworNjM4MyBhOWE5MmRjMmIzNzQ5NDZjMjg2NDE2MTIyM2VjMTdmYTc2OWQxN2ZlIGxlZ2FjeS10cnVuaworNjM4NCA1YmJlMGRjZTJlMjY3MWNhZmI4YTA0Mjc0NmQ0ZTVjYzM4NzFjNjBjIGxlZ2FjeS10cnVuaworNjM4NSBmMjhkM2Q4OTgyYTI1YTczNzVhMWE1MWZmZDM2ZTEyMjQxYTFmZjRiIGxlZ2FjeS10cnVuaworNjM4NiA1MjRjZjUwMWM4NTFmZDg1YTM5ZTcyZTU2OWNhZTgwNjc4N2UzY2EzIGxlZ2FjeS10cnVuaworNjM4NyAzNDExNDYxMDBmMzhjYTk4ZmE2N2U3MGZhOGVhMDA5ZjliZGNjNDJkIGxlZ2FjeS10cnVuaworNjM4OCA4NGUxNmNmOTIxOTkyNWI1Y2UzOGE0OTg5MGQwMjU5OWFlZmMyMjY3IGxlZ2FjeS10cnVuaworNjM4OSA0NDQxMmU0NmYyNjg3N2U5NDczMGY1OTI1N2Y3OGIzOGVhMzlhZTQ5IGxlZ2FjeS10cnVuaworNjM5MCA3ZGU1ZTExNTNiMzkyY2I2ZDU2ZmFlNWMzZDZhMzcxNTk0ZWE0OGRmIGxlZ2FjeS10cnVuaworNjM5MSBmNDg3NzkzZDYwMTg0NmQwZjk2NjIxMzc1OTdiZWQ4OWIzMWYzNDczIGxlZ2FjeS10cnVuaworNjM5MiA5MzY2MTY0ZjVjNGE5M2Q3Mjk3Y2E4ZDc0OTgxMjVhY2EwMTc2MTNmIGxlZ2FjeS10cnVuaworNjM5MyBjMmFlMDQ0MGM0MjRhNzIyODRhNTdlYzg0MjFlOTc1MzU5NTk2OWNiIGxlZ2FjeS10cnVuaworNjM5NCBlOGJkNDMwY2QzNTdlODZjZjk5OGQ3ZDg5OGY5NTA1NDJjZjI1ZjkxIGxlZ2FjeS10cnVuaworNjM5NSBhMzlkMDY0OTc1MjAzNWI3ZDlhNTZiMmM0NmVhNTFkYWQxMThhNjE3IGxlZ2FjeS10cnVuaworNjM5NiAwNjNkODY3NDE0MTBlMmVkODdkMWMyOTZmOWFlMTdlMjNjNGZmNGNkIGxlZ2FjeS10cnVuaworNjM5NyA0YmNlZTYzZDViYjE3ZGIwMzgzNzY2ZmE3MzQwMGQzYTRjMzNhZWY5IGxlZ2FjeS10cnVuaworNjM5OCAxZGExNjgxODVlNGUwNWI4OWE1MDg2YTE4ZGRjNmU5MzE4N2NjZmJhIGxlZ2FjeS10cnVuaworNjM5OSA1M2U3NTdiYjY3ZDVkNjMxZTZiYTk4MWI1Zjg0YzdjODEyZDQ3N2I5IGxlZ2FjeS10cnVuaworNjQwMCAxNjQwZTM1NTliODY2Nzk5ZDljM2VhMDliMjI1OTk5YmI4ZGMxMTVhIGxlZ2FjeS10cnVuaworNjQwMSBmZjY4YTJlYzFmZjEyY2I2MTVjY2JjODcyYTU2YzUyNzA0ZjQ5Nzk5IGxlZ2FjeS10cnVuaworNjQwMiA1MmMxOWVlODNhNmIwZjcxYzg5MDA3YTVkMjJhOGRkYmVmYTE5MjRmIGxlZ2FjeS10cnVuaworNjQwMyA4ODJhMzFiN2Y4NzMxMWY4ZTA4ZjAwODJkYTNhY2I0NGI5MmJlODE3IGxlZ2FjeS10cnVuaworNjQwNCBmZTExOTY5OTUzNDQ2ZDcwYWE5MjExMzRmOGQzODcxMDcwYzE0NWRjIGxlZ2FjeS10cnVuaworNjQwNSA2MGJiNzQzYjhhNWMyMDAwZDNiMDU1ZjcyMjQ3OGU1OTRiYmRlMzg0IGxlZ2FjeS10cnVuaworNjQwNiBmOWFkOThiNTg0NzJiMDhlN2U1OTUwMmU2MzMwM2UyOGY1ODNlODI5IGxlZ2FjeS10cnVuaworNjQwNyBkN2Q4NzA1YmE2NDQ0ZGQwZDdhMWQ1YTIxODQ4YjI1NzE0YjZjOWM4IGxlZ2FjeS10cnVuaworNjQwOCA2ZTBiYmE5M2EwZWIzMzg2MDk0ZGMzYTk4NDk3ODMyODdmZWFkODE4IGxlZ2FjeS10cnVuaworNjQwOSBkZWNkMTNmNjYyOWQ1YTQzMjQwZjVlNWU1ZDhjZGVlMzJiNzg3MTJiIGxlZ2FjeS10cnVuaworNjQxMCA2MWI0Y2FlNzdmN2U4NzM1YWIwNjY2ZGU4Mjg1YWM1NGI4NmE0Y2NkIGxlZ2FjeS10cnVuaworNjQxMSA2NzUzMjhiMDgxMjJiOWNjOTQ0ZWQxMjJmZDJmY2M3ZmI0MzdmMmZhIGxlZ2FjeS10cnVuaworNjQxMyA0NmIzM2NmOGI5MTNlNWQwNzIyZGExYTU1ZTg2YzU1YzkyM2U3ZTJhIGxlZ2FjeS10cnVuaworNjQxNCAwZDQ0MzdkMWMyYjU3ZWJiYmFmYWUyMDBlMmI1OTIxY2FiMGZiZjZhIGxlZ2FjeS10cnVuaworNjQxNSAzODY4NDg1MjM3NmY1NDIyNjEzOTUzYzJkMGQyYjBkNjdkMmUxNDZiIGxlZ2FjeS10cnVuaworNjQxNiA2ZTYwOWUyNjZiZTlkMTBhOWIxYTIzNjJkZDU2NGY2OWY0ZTNlN2M4IGxlZ2FjeS10cnVuaworNjQxNyBmYmFmYjBjZDBhMmE1NWZmMzEzYWQ0ZTcwOTBkMTM3NGY4MDRmODE1IGxlZ2FjeS10cnVuaworNjQxOCA3M2NmNzA4MmI5ZThkNzQxNDcyYzRjZmJlOGM2NmRkMjcxNTM0OTMyIGxlZ2FjeS10cnVuaworNjQxOSA2Zjc4ZDMxNjQzNzZhZTI0MjFmNTAwNDE3ZmYyY2Q3OTAyMDUzNDkzIGxlZ2FjeS10cnVuaworNjQyMCAxMDc1M2U0ZDc2ZTcxZGM2YTA4NWU1MjYyMmRmOTE0YTc0YzA3Y2FkIGxlZ2FjeS10cnVuaworNjQyMSBkZWFkZWE0M2JiNTM2NDUzNWU1ZGQxNzBmMjhhZWYwZDE3Y2ZmOTU1IGxlZ2FjeS10cnVuaworNjQyMiAzYWNhZjdhZjQ5Y2MxMDEzNjYzMGYzNDU3YTAwMjVlYTA2YWQyZjM5IGxlZ2FjeS10cnVuaworNjQyMyA3NWQwMTZjOTdkMWMyY2VlZjQ3OGZlODc1YzMyYmQwODVkMWMwMzBjIGxlZ2FjeS10cnVuaworNjQyNCA5MDgxODE5YWJiZjU1Njc0MmE5ZjlmNDIwYjM1NjU5ZWFmNDBhZGYwIGxlZ2FjeS10cnVuaworNjQyNSA3ZWUxYjEwMGVkMjlhNGZmMWYyMzE1N2JlOGMwY2ZiNDkyYTQzZDBjIGxlZ2FjeS10cnVuaworNjQyNiBmMGY4YjUwYjViNmNkNjg2ZWMwZTZiYjQ5Y2NmMDFkZmVkYWIzYzkwIGxlZ2FjeS10cnVuaworNjQyNyA5ZDhhOTY1ZGU3ZWM4YWM5ZjUzNmRjNTU2NTQxNDk2ZTRhODE2NTI5IGxlZ2FjeS10cnVuaworNjQyOCAyOTAxNWI1OGU5MjIwMjM0NTI5OGVmYjk4MTBmOTQzODc3OTk3OGE2IGxlZ2FjeS10cnVuaworNjQyOSA4ZTMwOWJlODllZTQ1NGYxN2RkMDYwZTFlNTlhZWQyN2I3OTJkMGU5IGxlZ2FjeS10cnVuaworNjQzMCBmMDFlN2FmMWRkNjA2ODNiMWYzMDJlOTMyNTdhYzQ3Mzg1ODZlZDEzIGxlZ2FjeS10cnVuaworNjQzMSBiODZjODA0NDhkMzU1ZTdlODljYmM3NmMyMjQzNTRiY2FiMzEyY2IzIGxlZ2FjeS10cnVuaworNjQzMiA2YWY3YTcwM2FkYWVkYTFjNmY1ZTVkNWQyYjVjMjk0ODQyMmEyNjRhIGxlZ2FjeS10cnVuaworNjQzMyA5MGY1MDU1NTUwZDlhMDRlNTJhNmNmNmQ1MDAyMTUxYzdlYzgxMmNjIGxlZ2FjeS10cnVuaworNjQzNCBiZmQ5YmFmM2E5YzI5ZmU1ZWQ2M2UyYTZhODFhMjEwYzRmNWFhODg5IGxlZ2FjeS10cnVuaworNjQzNSBmMDhkN2YzNjhlYmZhMThlOTlkMDNhNmE4ZDRkZjA3ZDUwNGU0ZmU5IGxlZ2FjeS10cnVuaworNjQzNiAwMDcyMjk5MGI4MGMzMWYyZWQ5ZGRmMjVmNWRhNDgzZjE4NjY2NGIxIGxlZ2FjeS10cnVuaworNjQzNyBmY2ZlYzZhODEwYmE1NDNlNjdiMjBmOTJiMTk0OTc4OGQ2ZmI1YTk3IGxlZ2FjeS10cnVuaworNjQzOCA5YzA1ZmY2ZmIwYTRlNGJiNzVlNWJkMDYzZmU5N2EyMWI3MTI2MTQ3IGxlZ2FjeS10cnVuaworNjQzOSAyODk3ZGFmZWQ5NWE3Mjg0ZWNmOWFhNGNhMjdiZjBkMmU5MTE2NzAzIGxlZ2FjeS10cnVuaworNjQ0MCA1MzAxOWUzYTZkNWEzNDA1OTI4MmU1Zjc3OGYzN2FmMmYxZDNlMjczIGxlZ2FjeS10cnVuaworNjQ0MCAxMjlmMTI5OWQ0ZTk3ZTg4NGJiYmJkZDAwYmFmMTAxZDE3ODk3M2U2IGxlZ2FjeS10cnVuaworNjQ0MiBhZDg4YTAwMDUyMWY3YjNmM2VkYjU1NGViYWRkODc3MGU4ZjAwOGQzIGxlZ2FjeS10cnVuaworNjQ0MyBkYzE0NDI1OTQ5OGZjZTlhYTY4OWIyOGZiYzk3NjAyY2EzYWYzMGQxIGxlZ2FjeS10cnVuaworNjQ0NCAxNDgxNTI1MmM3YTNhNWFlNDFkM2Y4OTFiNWY4YjEyYmI4MzgxOTA0IGxlZ2FjeS10cnVuaworNjQ0NSBiYjBjZTY1M2MyYmEwMjdiYjQxMjk5N2QwYjE4YjRhNzE2ZGJmNmIzIGxlZ2FjeS10cnVuaworNjQ0NiAzZDFlNGI3NmY3NDVhOTJjOTE1YTg2ZGIzYmZkMThmMzc3ZTZkODlkIGxlZ2FjeS10cnVuaworNjQ0NyBmYzUwNWYwMmFkOGEyODA3NTllYjA3NGU1MmI5YjA4MDIwMDU0NjlkIGxlZ2FjeS10cnVuaworNjQ0OCBiNzZmZTY3ZWVkNDRlYTcwOTMwMjBkNzk1NjE3MGI2YTcxZjViZTI0IGxlZ2FjeS10cnVuaworNjQ0OSBhMzQ5OTdiNmVkZjQyYmQ3ZGUxNTIwMzBmMjBhZTIyNTQ3YzJjYzI3IGxlZ2FjeS10cnVuaworNjQ1MCBlYWVjNGY2YThiZThjZmY3ZmUxM2JiMDk3MDIzMDRhYmZlZDA5NTM1IGxlZ2FjeS10cnVuaworNjQ1MSBiOTNjNGNmYzJjZmVhNGI0YzNmNDYzYTRjYWU1MzU4ODgwMDNlZTczIGxlZ2FjeS10cnVuaworNjQ1MiA4N2U1M2M2MmNhYzgyMTYwYzdjZDkyNjhmMDljN2YxM2UxODA1ODcxIGxlZ2FjeS10cnVuaworNjQ1MyA0YjUwOThiMWZjZWYyODA2MGFiODkwY2U5YTAyZmNlOTIzNmFiYTIyIGxlZ2FjeS10cnVuaworNjQ1NCBmYjVmYzAzMjBlNmU1ZDUyZGFhYzk3NTQ1MzY4Y2M4YmE5YzZiMWFhIGxlZ2FjeS10cnVuaworNjQ1NSBjYWYxMTA3MjRjYzE3N2U0NTAzYmY2MDc4ZGI3MjI5NmE1MTI5N2EyIGxlZ2FjeS10cnVuaworNjQ1NiA0NDkwMjUxNjYxNGE5MDFmYzllZDlmY2M2OGRhOTFkMDBmNGFiMTU4IGxlZ2FjeS10cnVuaworNjQ1NyAwNjEzZjE3ZGNmZDg2NTNhMzA0NzQ0NzEzZDAyZjdiMTZhNjdhNTYzIGxlZ2FjeS10cnVuaworNjQ1OCAwMTFjZmU3NDkwZWI1Zjk2ZjQ4MzViNGM2NWU4NmNkYzY5ZmRlMmMxIGxlZ2FjeS10cnVuaworNjQ1OSA5YzJjYmYzMDY4NjRkMmZiOWIwNTNjM2Q4YjJiYzQxZTQ0OGE5MmIwIGxlZ2FjeS10cnVuaworNjQ2MCA2ZmJjNWM2NjU4MTIxZTVhNDA4NTAyMGRkY2MwNmY3ZmIxNjZhZTM0IGxlZ2FjeS10cnVuaworNjQ2MSBlZmIzYTVhMmNkZWFjYmZiMWYzMGUzOTM0ZTdmYWIzYTNkZTc4ODhjIGxlZ2FjeS10cnVuaworNjQ2MiBhODE1NzY1YjQ2OTUyYzFmM2E4ODE2MTgyNDA1ZTEwOGUxN2Y1MDMyIGxlZ2FjeS10cnVuaworNjQ2MyBhZThkMWI0Njk4MTNhNzFmYTc1M2NiNDBkMTAzYWZkZDdjZDkyZGI0IGxlZ2FjeS10cnVuaworNjQ2NCBjZmI4YjdiYzAyMzNhNWYxMmNlMTdmNWFkMTA5MWVkNmRkZTVkZDIzIGxlZ2FjeS10cnVuaworNjQ2NSBhNGFhYzc2NmNiZjAwNTgyOGVhOWQyYmE1NGJjOTc1NjFlN2E3YWRjIGxlZ2FjeS10cnVuaworNjQ2NiA2NDE0ZmZiN2YyODVkMzYyZTMyM2M1Njg5NzU1MDk2NTAwMmU3MzVmIGxlZ2FjeS10cnVuaworNjQ2NyAzZjU3YWIzMmI3NDEyYjMzNWMwZThhMzgxYTQxMjQyM2NhYWFiZGU1IGxlZ2FjeS10cnVuaworNjQ2OCBjYTBlMDVlYzg1YjlhYWQzMGQxOGRhOTBhNGRjM2E4MTFlNWE2MWMxIGxlZ2FjeS10cnVuaworNjQ2OSAwZWMyY2U5N2I4ZTNjYmQwYWFkZWUwMzE4MTM1YTFlMmY4OGMwMzI2IGxlZ2FjeS10cnVuaworNjQ3MCA4MDY5NzkwYjM5NzQwMDkxOWVlOTkwY2QzOTI0NGY0ZDQwYzI0NjdiIGxlZ2FjeS10cnVuaworNjQ3MSBmNjMwYTA2N2FlOGNiMjIxMGI2OGNjNzgyZjg1ZTE1ZWU4OWIxOTM5IGxlZ2FjeS10cnVuaworNjQ3MiBiMDk3NmNkYmQ1OTgwM2IzMDNlNmNhMDEzNjkwNTZjN2IwYWE1NTdjIGxlZ2FjeS10cnVuaworNjQ3MyBiZmZmZDM4ZDYwMGI1ZDk2NWE1Y2ZiZTYxYTQ2OGVkYTU4MmQyMzU2IGxlZ2FjeS10cnVuaworNjQ3NCAxZWQ3NzNlMTU5MzY5MzQ1YzM5ZTI4Njc0NDlmMTllM2UxYmRhMWZkIGxlZ2FjeS10cnVuaworNjQ3NSA0MjQxNTgyNjM2YWRiMzhlY2MxNDM4MmRjZDBhM2ZhNWM4NjhkMWQyIGxlZ2FjeS10cnVuaworNjQ3NiAxMzhmYTE1YTEwMzJlYzFiMThjNjkxZTY4MWNlODM5N2JmOGM4ZWM0IGxlZ2FjeS10cnVuaworNjQ3NyBkM2ExZjYwODhjMjhmMTMxOTlmMGMyNDYwMGZmMWI5Yjg3ZWNkODc3IGxlZ2FjeS10cnVuaworNjQ3OCA3NDk1MzIyNDI3Yzc2YWM2ZTNmNzk1MzY3NjNkOTVkNzExZjJjMjdmIGxlZ2FjeS10cnVuaworNjQ3OSBjMmE2MTFhZTBmZWNmNDk2OTAwM2MyZTlmNTFiYjlmMTQyYTRkODRiIGxlZ2FjeS10cnVuaworNjQ4MCAxYTBhYTk4NmY2ZmE2NDU1YjdiMTNmN2ViNDJhNWEyZTVkN2MxMTc0IGxlZ2FjeS10cnVuaworNjQ4MSAxOGMzMjcxNGY4YmE1NWQxNTVlYTZhODk2MmNlMDkyOTAxYzUzNjE3IGxlZ2FjeS10cnVuaworNjQ4MiA2MTEwNjk4NmExYTRjOWJkNTM1YzYxMTFjNGFjOWRmNDA5YTBjZWVmIGxlZ2FjeS10cnVuaworNjQ4MyBjY2NmOWYyNzMyY2YzZWQ0ZmU5N2Y3ZTUxZjI1Mjg4NzBhNDdkZDNmIGxlZ2FjeS10cnVuaworNjQ4NCA5Mjk0MTFkYjIwYTg1ODdmNjE1NDk3MjBkODBiODc2MzU4MDZhODdlIGxlZ2FjeS10cnVuaworNjQ4NSAyMmEwMzNiYmU2NTVmMTViNDAzZjQ2MWRiNDBiNGRmZTZhNTZmNTIyIGxlZ2FjeS10cnVuaworNjQ4NiBhYTk1NDg4ODViM2Y4MGEzMjNhODcxMjc0NGFhNWZjN2M1NzZjZmM5IGxlZ2FjeS10cnVuaworNjQ4NyA0OTA5ZWYzOWVhZjFkYjgyNDE0Njg0NTAyMWM4ZWYzNDUxOTA3MzY1IGxlZ2FjeS10cnVuaworNjQ4OCAyMTEyMTVjMWM1MGQ0YjI0YTNkNzQ4NGIzMjE5NjM2ZWE1ZjE2NzQ1IGxlZ2FjeS10cnVuaworNjQ4OSA5Mzg5MThmZjM1Mzc5NTBlNjkyNDhlNGViMmZiZjZhZTM1N2M2NjY3IGxlZ2FjeS10cnVuaworNjQ5MCA1ZGM4YzA0MjkwNWI1YzFlYjIyNmQ1ODdhYTY1ZGIzYWE2NzA0YTQxIGxlZ2FjeS10cnVuaworNjQ5MSA0MGM5MjkzMzVkN2YyNDQ0MjI2YzRmN2I3NzE1ZTY2N2E4ZDUyMzBlIGxlZ2FjeS10cnVuaworNjQ5MiAxZGVlM2U0ZjY3ZGYwMjIyNGU4NWQzM2Y4NGI2YjAyMzBlMzYwODc1IGxlZ2FjeS10cnVuaworNjQ5MyBmNDllNDA1N2ViNjgzMDJmMjk5YjM3YWZjZjc2MTIyOTM4OWUyNTE0IGxlZ2FjeS10cnVuaworNjQ5NCBjZjI2MzBhNDFmODc1MmU2ZmY1Mzc1OGMxNmVjZTVhY2FiOTEzNjMzIGxlZ2FjeS10cnVuaworNjQ5NSA0ZmNjZDllZWU2NzljMjBjYzcxZWExNTgwMmQ4ZWIwMDBjNTg1N2RiIGxlZ2FjeS10cnVuaworNjQ5NiA4OTJmNDU2MTY0OGEwOTUwZTFjNWE3YmIxNTFiNTY5ODQ3NjE5ODIyIGxlZ2FjeS10cnVuaworNjQ5NyA1M2Q1MTFjMDAyOWY1NDEzMTg1N2YyY2Q3ZGRlNGUwYjI4MWY5NDFkIGxlZ2FjeS10cnVuaworNjQ5OCA4NTRmMjVmZGU4ZjQyYzBhMjdmODE1Y2I4NjU3NjdiZjQ4OTFlZDY2IGxlZ2FjeS10cnVuaworNjQ5OSA2YmJjMTNiN2RjYTg4YjgzOTYwODE1NTQ4NWM2YThmZTllMDdiZDRmIGxlZ2FjeS10cnVuaworNjUwMCAyY2RiOGY1YWMzNjVmOGRjZmQ3ODQ3NzFiY2RhMTRhYjM5NjM3NGY0IGxlZ2FjeS10cnVuaworNjUwMSBkYTJiOWFlOTFkOTUzZWM2MGI5MTZiZjQ4NzMwYTkwNzU2ZTliMjEwIGxlZ2FjeS10cnVuaworNjUwMiA4MmM5ZGVlMDUzYmM2ZDQ0MWVlNGE5OTY3YThiMzc1MDg2ZjkyODU1IGxlZ2FjeS10cnVuaworNjUwMyBlNzdmYWY1NTY5N2I4ZjNkYzUyZWEwNGU3MDZjOGRhM2RkYTQ5NDA4IGxlZ2FjeS10cnVuaworNjUwNCAzYTIwMDAwMmQ4MGE4ODBlYTM1MDgxZmE2NmFiMGQ4Zjg2NjJiNTUwIGxlZ2FjeS10cnVuaworNjUwNSA4OTM5NDlkMWQyOGVhYTdlMmY3ZDUyODdlZGUxNDIyNWM3MDZkOTk0IGxlZ2FjeS10cnVuaworNjUwNiA1NTkyZGU5NjU2ZGU0YTkyMDA0OWUwNWQxZWIzNGI1YjhmNjVhYzFlIGxlZ2FjeS10cnVuaworNjUwNyBiNDMzMzhjNTIzMWUxMDUzMTYxNGQyMDM3MjU0MWE1Y2UxOWVlZWNkIGxlZ2FjeS10cnVuaworNjUwOCBkMWJhZWM1NzE4NTI0YzMzMzQ5ODU2OWJmOGFkZjQ4ZDRkYjAxMTU2IGxlZ2FjeS10cnVuaworNjUwOSBmN2MyNDNkMDE4NDQ2OWRjY2ZhMjAxNWU2Nzg0MzU2ZmE1NzVkMzk5IGxlZ2FjeS10cnVuaworNjUxMCBjYTM5MzU1YmU1NWEyYmFlYzk5MDM5NWYwZWE4ZWM0MTNiYzIxMTNiIGxlZ2FjeS10cnVuaworNjUxMSAyNjE0NzJmYTk3MmE3NTgwZjM0MzBkYjgwNzNkZWVkYmE4YzBiNWUxIGxlZ2FjeS10cnVuaworNjUxMiAyM2YyODBhYjU0MDliNzllNjE3M2Q0ZTFmODUxZGJiNjc1NTk0ZDMzIGxlZ2FjeS10cnVuaworNjUxMyBmNDFmMGNhZjFjZmNlMmY1NDI0MGI2MTMwNTk0Mzg5NGU2NDY4MmIxIGxlZ2FjeS10cnVuaworNjUxNCA4YTAxMGRkNDczNmViODNlMGU2MzU2Zjc3ZjQ5NThhNTZjNTc4YzFhIGxlZ2FjeS10cnVuaworNjUxNSA2YjRkMGYxYTBhZTljOWJiNTVjMThkMGRjMGMyYWVhYTBhOGFjMjI2IGxlZ2FjeS10cnVuaworNjUxNiBkNmM3ZTQwY2JmZGYwYTM5M2Y2YjQyMjM0MzU1MDQ4M2E4OTQ0OTllIGxlZ2FjeS10cnVuaworNjUxNyBlZjdlM2M0OTlhNGRhMDFjZDJlMTJkMzU2NTEwNzM1YmQ5ZDlmODA3IGxlZ2FjeS10cnVuaworNjUxOCA5NmUwYTcyMDRlMzFkODBmZjdhMTg0ZjBhMjM1NzA5YmE0ZWYxYmM5IGxlZ2FjeS10cnVuaworNjUxOSBlYjlmYzQwNGMwNjYzMTNlNGU5YWU3NmJkM2UwN2M1ZDc5MzMxZDFhIGxlZ2FjeS10cnVuaworNjUyMCAzZTY4NjNjZWEzODMyNjNjNTk4MmM3M2E4NDUyNWQxYTc3MTY4YjBlIGxlZ2FjeS10cnVuaworNjUyMSBmN2IxM2Q0MTgyYjNkYWU4YjM3M2UyMmRhNzkyYmM0NDhkZjYyMGQ1IGxlZ2FjeS10cnVuaworNjUyMiBhMmRjN2NlNGRmYmU3YmQ2ZmMzY2MzMjc1ZGI5ZDYwY2U4OGFkM2JhIGxlZ2FjeS10cnVuaworNjUyMyBiYzA2NWRmMDNlZTRlZjg4YzJjNDg2ZGFmYWE1MDNjNDk3OTE4NjY1IGxlZ2FjeS10cnVuaworNjUyNCBkNmNhNmUyMDc5OTQ3NzIyOTA1YjAyODkwOGMyMTYyMjViMzU3NjVhIGxlZ2FjeS10cnVuaworNjUyNSBlZjZjODlmZTIxZWRlYTFhZGMxOGZiNTVlMDExNTEyNmQ1MDRiNThiIGxlZ2FjeS10cnVuaworNjUyNiBhYzkyNWI5YTFkNjc3MjEzN2U1YzZiZjkzYTBkNmEwYmU0MzY2YTg1IGxlZ2FjeS10cnVuaworNjUyNyA2NjljY2Q5ZTcxN2U4ZWM5ZTJjZWViODhhNmY5ZjNhZjNlNGJkOTk0IGxlZ2FjeS10cnVuaworNjUyOCBmMDExMGM1YzYyMjc5MmI0NjViM2I1N2JiMWMxZGUxZjkzYTlhNDE2IGxlZ2FjeS10cnVuaworNjUyOSA2ZGVlZTNiMjA2Yjk5NDdlNDRlODI2OTBiY2ZlMGZiOTE0MmQyZjI4IGxlZ2FjeS10cnVuaworNjUzMCA4MTg1OTllMzkxMjNjY2I4MWIzOTM3NmIwODU5NjIyNDgzMzQyYzdkIGxlZ2FjeS10cnVuaworNjUzMSAyMWIyOGRjZmE4NjU0M2Q3NWQ3NDJmMDdiYjM4MTI4MjQ3OWI0NTA2IGxlZ2FjeS10cnVuaworNjUzMiBkNjg5NzM4NWMzMTg1ZmNiZGRkOWIxMjgwMjNhMzg3ZGRlNTdjYjY0IGxlZ2FjeS10cnVuaworNjUzMyA2NGE1OGIwZmIxNjcxMGRjYjczNzk0N2NhNjU1OTRjNTBjNDc5NWNiIGxlZ2FjeS10cnVuaworNjUzNCA0YmYwMWM2NmNiNjg2Y2E5ODUwM2Q2MTVhYWQ1MDZiOGM4ZTBiZWQyIGxlZ2FjeS10cnVuaworNjUzNSBkNmRlMmMxNDg4MTlhYzdjM2NmYjgyMmY2NzQzZDU5YjQwMjdkMjFiIGxlZ2FjeS10cnVuaworNjUzNiBhNTg5Y2VkY2JlZjU0NjU0NTE0YWQxNWIyNDExZTg1ZWNkMThlNGEyIGxlZ2FjeS10cnVuaworNjUzNyA3ODg0MzQ3MmZiNmZhMjNkOTY4MGRmZTg1YTRmMTM3ZTY1Yzk4MWY3IGxlZ2FjeS10cnVuaworNjUzOCBiZGUxOWFjZjEwNDVkNDdlNTk4MjkyNmVlOWQ1NTI1ZWY1Y2Y3ZDM2IGxlZ2FjeS10cnVuaworNjUzOSAyYzg5YmYwNGY4MzRlYWFlYWNmMTU1M2RkMzgwZTkxODVhZjllZDI1IGxlZ2FjeS10cnVuaworNjU0MSAyMzFhNDIwOTE4MzAyZTk3ZGM4OTllODEwNzlmYmQ3OTQ5MGZiNzA5IGxlZ2FjeS10cnVuaworNjU0MiA0YzU0ZWNmYWRjZTVlNDg2YjA2OGZiMmU4MDgzMTZiNGE5MGY5YjE2IGxlZ2FjeS10cnVuaworNjU0MyBlZmU4Njg5MWY0MTFiODU3YjlhZWVlY2Y5MzFhZDQ4NWJmMzY2OGM3IGxlZ2FjeS10cnVuaworNjU0NCAxOTQxMjMwNWQzMzVhNjljYjFjZmMxOTFjOGUyMjNkNmViZmZjYWQxIGxlZ2FjeS10cnVuaworNjU0NSBjNTc1YTkyMGU0YTFmMzVhNGY5M2ExNjFlYjZiZWIxZjgxN2VlZDRlIGxlZ2FjeS10cnVuaworNjU0NiBmNjY1NjI1MzZmMTFiM2Q1YzcyYmJjYmRjZDRlMGI3MWRkOTAwMDFhIGxlZ2FjeS10cnVuaworNjU0NyA1ODUwNGM5YTM3ZGM0YTgzZTNmZGMyNDU4YWQyN2RlMjU4ZWUwNTJlIGxlZ2FjeS10cnVuaworNjU0OCA3YjZlZWZhYzZlNDkzNzYwOTczNjg4MDJhYTZhNjU2ZDEyZjdhYzMxIGxlZ2FjeS10cnVuaworNjU0OSA0YTcwMzhlN2EzMTM5YzA5ZjQ5ZjU0ODYwM2Y5MjI1OGMwNWIxNjYwIGxlZ2FjeS10cnVuaworNjU1MCBlZGEyOWJlZjg4MGM5YTVkZWMyN2QxYTI1NjdmNTFhNjU2Y2U3ZTQ1IGxlZ2FjeS10cnVuaworNjU1MSAxMGMwODQ5NDJjZjEyZGQwZmVlZjNiYTJiMjI5NTExYTBiMGM3NjBjIGxlZ2FjeS10cnVuaworNjU1MiAxODQ1MWRjYTk0NjlhMDRlMmIzMDg3ZDVlNzQ1ODEyMjI2OTNmOWU2IGxlZ2FjeS10cnVuaworNjU1MyBhNmU2MmMyMWIwZTNiMDFjZWRmM2Q3ZTJiZGY1YWEzNzEyMjFkZTVlIGxlZ2FjeS10cnVuaworNjU1NCA3NTJiODZiYTE2ZmM2ZTkzODQ5NmI3NmI4ODhhZmZmNDlkYzU1MjVhIGxlZ2FjeS10cnVuaworNjU1NSA1ZjY4NjlhMzhkODUxZjA2OTY1ODA1NDFjYTVhOGJkOGMwYmQ4YTI2IGxlZ2FjeS10cnVuaworNjU1NiAzOTA2ODM4MThmNzM0MTdkYjkxNGZhMWIwMTA4NjBlZDZkNmMxNzRmIGxlZ2FjeS10cnVuaworNjU1NyA0NjYxN2QyOWM1ZDA2MzlhN2Q2NTMxN2FhNmQ3ODM2NGNlMzFmYTkzIGxlZ2FjeS10cnVuaworNjU1OCA3ZjgzZTI0ZDFkODY5YjY3NDcxMDMxZTQwMWFmOWIxYzU5ZWU5ZTYzIGxlZ2FjeS10cnVuaworNjU1OSBlMGY2NDJlZTQ1YmJkYTAxYTJmMWQxMDgxZGQ2MjU5MjMwYzJhNjZlIGxlZ2FjeS10cnVuaworNjU2MCA4MzFiNDIwZTQxMWU0MjFkMzM3YzJjNGU2ZTU2Njk5ZTlhYTg1NDQ3IGxlZ2FjeS10cnVuaworNjU2MSA3NDBkZWY2OTdkOGI4ZTNiY2RhNGRlNmM5Y2YyYTc5NjVjODc0OGZlIGxlZ2FjeS10cnVuaworNjU2MiBmODFkNzg1NDdmMjg5MjkxYWZiMjM1M2MzZjVjN2M0YjU0Nzk2YjA5IGxlZ2FjeS10cnVuaworNjU2MyA5ZjcwZDk5NWQwMjc5Mjk5Y2Q5MmYzNmU4MzdjODg0YmRjYTEwYjdhIGxlZ2FjeS10cnVuaworNjU2NCAwYjQwYzhkNWIyMWQyMjU5NTU5NzBjY2RhYzM1ZWFjOWExZDYwZGEzIGxlZ2FjeS10cnVuaworNjU2NSBkYzk0NmNhYjdiOWJiYmFmMzlmYWU2OTA5ZDczM2ZkNjdlNWYyNTI3IGxlZ2FjeS10cnVuaworNjU2NiA4NTkyZmE0YTExOWIwOGE4OGExY2E0NzYyM2IzOGQwYjE1MzdhYzVjIGxlZ2FjeS10cnVuaworNjU2NyBmMjlmZTcxZjExZTY0ZjEzODFlZmI3Zjg2ZTI4MTkwYzg3MTFkYzJhIGxlZ2FjeS10cnVuaworNjU2OCA4NDM4MTg0ZTQ0OGUwMzc4MjliYTcwNzUwZjk0MzI0MDllN2MxMzA4IGxlZ2FjeS10cnVuaworNjU2OSAwYTU5Yzk4ZGMwMDUzNWZhNzNiOTVmZTUzZjI5YjBiYzEwZjRhNDVlIGxlZ2FjeS10cnVuaworNjU3MCA4NDY1ZDhmYmM3YWMxN2JlOTdkYzgxM2NjZWVhMGEwOWFiZGQxYjRlIGxlZ2FjeS10cnVuaworNjU3MSBlNTM4NjM4ZWRjNzEzMzcyMjUzZTc4YjVhNTIyNzQ1MDliMTkyODc3IGxlZ2FjeS10cnVuaworNjU3MiA2ZjZiYTdjMDA4MjNlYWQ4ZDVlNWFhOWFkNjZmODEyZmI5OWRlNTk2IGxlZ2FjeS10cnVuaworNjU3MyAzYTNiMzY3MTY2ODljNWY4NzEzZDgwY2IzN2RhYTJkYmRjMDkxNTI4IGxlZ2FjeS10cnVuaworNjU3NCA1MzM2YzAzYTEzMWZiNWJmMDJhODQzNjBjNTRkMDQ5N2I2ZWYzOTI3IGxlZ2FjeS10cnVuaworNjU3NSAyZmNlYTVkZDFkMThhMjVhZDYxZTQ1MjZkNjg3NDFkMzQ2MmE4Y2JjIGxlZ2FjeS10cnVuaworNjU3NiA5NTY5NjY0YWMzNDc1M2Y5ZDVkMWE0YzM3ZDYzMThlNDA5N2IzZWViIGxlZ2FjeS10cnVuaworNjU3NyBhNWE4MjY2Njk3N2I1ZTI5Yzc4OGQyM2Q5MjBkYzdhZDdlMzY5NzI4IGxlZ2FjeS10cnVuaworNjU3OCA4NjlhOTQ4MDg1YzEwZmNlODM5ZGE2ZDVlNzRiMTg0NjczZjcyNWU1IGxlZ2FjeS10cnVuaworNjU3OSA5YzFmOWIwOWM0NDI3NTc2MmI4MzQ4NDJhZWM3YmY1MDg0ZThkNDM0IGxlZ2FjeS10cnVuaworNjU4MCBmMzk1MTYzY2E5ZDI1NWNhNGY2YzA4Y2MxYTc1MWMyZWE1ZTRlZDZkIGxlZ2FjeS10cnVuaworNjU4MSAzYWMwMzBjYzMzZjA2ODg3YmI4N2ExMWMwOTYyZGUzYWM1MTJlMTEzIGxlZ2FjeS10cnVuaworNjU4MiA2ZDlkNWU3ZTU4OGM0OWZjZDJkYmRhMThiM2RlMTZhNTI3YzVmMzYxIGxlZ2FjeS10cnVuaworNjU4MyA4YzdiN2U5NGY0ZGQzOWViYmRkMDk1MzNmN2QzMTg1YjE3ZjA1NzI1IGxlZ2FjeS10cnVuaworNjU4NCAwN2EzNWZkMmUwYTEzZWU5NDU3MGFiYjg5OWQ4NjdlNzNlZDU5Yzg1IGxlZ2FjeS10cnVuaworNjU4NSA5MDIxNmU5MDczNDVlYjIwYjM1OWRkZDg0OWUzODhmOGU4Y2MzNzNlIGxlZ2FjeS10cnVuaworNjU4NiA1NzI2YmU4ZWU1OWYzMGJiMzA4MjE3NTQ4OWEzZWJmYjUzODkxYzgwIGxlZ2FjeS10cnVuaworNjU4NyBiM2FmMzI1ZDcxMmRlM2U5N2FlMDg5NDExYjAxYTZmM2E5MGE2NTk3IGxlZ2FjeS10cnVuaworNjU4OCA1ZDUyMzk1ZjQwYjBjOWEyYjVmNWI5M2RjMzIwM2I4MzYxZTYzMDRlIGxlZ2FjeS10cnVuaworNjU4OSAyMzU4OWMwMTZjYjliOGM1MTQ0MDZlNGNlZmYyNzMxMDhkODgxYzgxIGxlZ2FjeS10cnVuaworNjU5MCAzMTkwMzk4YWU1MzNjMjZhMTIyNmZjYmI3MTRiYWUzMjJkZmRmYzRiIGxlZ2FjeS10cnVuaworNjU5MSAzZDExNzU4NzAwNWExZGUxN2FiMTkxOTcxNjU4ODgzMTFlNzY0MzI4IGxlZ2FjeS10cnVuaworNjU5MiBhODY0MDdiM2MzYWM1Mzk3ZGUwNmVhMDcwZDlkYmFlYmEyZjBkZDZmIGxlZ2FjeS10cnVuaworNjU5MyA0Zjg0Y2VlNjViOGM5ZTRlMmIwNWE0ZjA1MDU4MjMxOGQ0NzBjZDZhIGxlZ2FjeS10cnVuaworNjU5NCA2NTAwMzFlMWU0MTkwYmY2ZmRhZjQ3MjRkNDcxN2MzMmI2YjU1MDE1IGxlZ2FjeS10cnVuaworNjU5NSAwODNhN2NkODM1NDU1MjZmNDc3ODI0YmU0OTY2OTRkNDMzZjE0ZTZhIGxlZ2FjeS10cnVuaworNjU5NiBkMzBmNWYwZmQwZTJkMjlkNWVhMjE0NGExMmRkNTE1YTE1NjRlZjk3IGxlZ2FjeS10cnVuaworNjU5NyA3MWI0M2Q0YjdjZDBkMzY3OWVhNmFlZWVjNGY4YzNlY2M4ZjM3NWFkIGxlZ2FjeS10cnVuaworNjU5OCA5ZTY1MDQ0OTRhYzczOTE5OGU4M2M5ZTJkY2FhNzUxNWFkNzIxMTM0IGxlZ2FjeS10cnVuaworNjU5OSAwYjczYzMxYmFiOTA5N2VjMmIzZTBmMGRmZjJhMGM1OWIyMzNmNzM4IGxlZ2FjeS10cnVuaworNjYwMCBjODBjNTE1OTk5Yjk4MzBkZGY0ZDI4NTE4ZWVhNTkxYjJkMjA5N2JmIGxlZ2FjeS10cnVuaworNjYwMSBhN2E5ZDgzNTA1YzQ3ZGZjMGIxMGQ4Nzc3ZjIwMzk1NWRlYzIyNmQ2IGxlZ2FjeS10cnVuaworNjYwMiA1YWRlNDA5NmZiNmI4OWUzMjkxNmU1Zjg3ZGRlNjg1NmYxZjY2NDMwIGxlZ2FjeS10cnVuaworNjYwMyBlZWRhYTU5MzQxYjk1ZDMxM2IyMjYzYzhlYjlhNzlmMzE0OGZhZGVlIGxlZ2FjeS10cnVuaworNjYwNCA3Yjg0ZGFlOTdlZThhOTg4OGJiMzRlYzhmNmM1ZTI5NDNkNWEwYWIxIGxlZ2FjeS10cnVuaworNjYwNSA2YjU4OTMzNGUwZTllNmE4Mzk5ZGYyMzQyOTZlZjI3YjllODNlNTFhIGxlZ2FjeS10cnVuaworNjYwNiBjMThkNTJlMDYyMzg3MDNjNTI0NjJiZjMwYzg2NDI4MDE0Zjc5ZjUwIGxlZ2FjeS10cnVuaworNjYwNyBhMmJjOTQxNTY0YTE5ZmJhNmIzYzE0NWIyY2JjMDRlNWU1NzY2ZDdiIGxlZ2FjeS10cnVuaworNjYwOCA2OWVkYzY3ZTVhNjhmMjBlYWQxZDlkOTRiZDI5MDZhNWQ2YWU5YTIyIGxlZ2FjeS10cnVuaworNjYwOSAxODk5YjkxNTUzZDFlZjMyNzc3MGU2MGZmYWVhNmRlYzMzNTA3MGQ1IGxlZ2FjeS10cnVuaworNjYxMCAyNjJmZDU4MmU0NGIzNGU4MzUzYjAxNDkxZWYyNWFiZTdmMzFiMTMwIGxlZ2FjeS10cnVuaworNjYxMSA4Yjc1ZDVlYTIwN2JkNzllM2JjNjBjOTVkNjU4NzdiYTllNmE1YjNhIGxlZ2FjeS10cnVuaworNjYxMiA3ZDNkMmVlNTRhMmNiMjViYzRlOGIwMjg2OWVlNGIxOWE2YTlhOTIxIGxlZ2FjeS10cnVuaworNjYxMyAwMTAzNDRiNGE2MTYyNTNlYWQwZGRmMjFjNTUwM2E5ZDNiYTJlNDgzIGxlZ2FjeS10cnVuaworNjYxNCA1YmFhMDAzYmYzOWUwYjRlMjc2Njc5Mzk4ZDU1ZDJiNTcxOGUwZjIwIGxlZ2FjeS10cnVuaworNjYxNSA2ZmIxMzE1MDFiYjQ2ZDYzODBmMTI2YjRmMDM3NWJkNTAzZGIxMjEzIGxlZ2FjeS10cnVuaworNjYxNiA0NDg3MmYyNTVmOTM0NzQ3YjQ0MWNlZThjMzg2NTFhY2YwMDM3OTljIGxlZ2FjeS10cnVuaworNjYxNyAzM2JmMzgyYzJiMWQ5YjViNDBjMTQ5ZDNkNDhhYTIxZmIxZDNkZWQ1IGxlZ2FjeS10cnVuaworNjYxOCBlZmViZjFjNGVkYTI5NjU0MDQ4MGY2ODdmZWY5YWM2OTIwMWI5MjExIGxlZ2FjeS10cnVuaworNjYxOSA5NTFlZDlhODNmNTdhNTBkZGE1ZjYxNmYyNWJhMGUwZDUyZmQ4ZTQ4IGxlZ2FjeS10cnVuaworNjYyMCBjNGQ2NmM0MTBjODNjZDAyYWU3Y2IyM2Q5ZjE4ODQyOGUxZTJhOWM1IGxlZ2FjeS10cnVuaworNjYyMSAzMGYxYzAxZjM4NjUwYjY4Y2M1ZWNjNzIzZWYyZjk0MDIzOGRjNGIxIGxlZ2FjeS10cnVuaworNjYyMiBhYjQzNzE1ZWY0ZWUyNGY5NmUwOTUzZjRhMjY0M2JjYmEyNmNhMTljIGxlZ2FjeS10cnVuaworNjYyMyA0Mjk4ZmYyMjJkNzYzZGI3ZjQ5M2EwM2JiNGI4MjFmNDdkNDIzMzFjIGxlZ2FjeS10cnVuaworNjYyNCA4YTBkNDNiMTMxMjUxZDJmNmI1YjZmZGVjMThhMWI4YzdmNTRiYzcwIGxlZ2FjeS10cnVuaworNjYyNSA2OWEzM2ZhM2RiYjg4MTE1MDVjZDAzMTMyZGRhZDc3YTU4NDQ0NzgxIGxlZ2FjeS10cnVuaworNjYyNiA5ODgxYTUyMTRmZDJjNTAxOTkyMDIwMzIyMzhjYzZiYTc5NzBmY2Q4IGxlZ2FjeS10cnVuaworNjYyNyBjYzA2ZTcwMTI3ZmMwYmM4YzRlN2Q2NWY0YTg1MmVmNzQ1NGQ3OTI5IGxlZ2FjeS10cnVuaworNjYyOCAwMjYyMWI4NzdlZTVkZjAxMWNlNWI4M2M4Y2UwNzJiOTQ1Y2E5MDZiIGxlZ2FjeS10cnVuaworNjYyOSA4NmE2MmNhM2EzN2I3YWJmNTU5NDE0ZWIwZGE4ZDU0NjIxZDdhODg1IGxlZ2FjeS10cnVuaworNjYzMCAxNDA1MDhjOWM2MDMxODI1ZWY4NzIwMDA3MDYyNmZiYmUzNjk4ZGZjIGxlZ2FjeS10cnVuaworNjYzMCA0NGE4MmFjNjU0YTQxNzU1NjlkZWVkOGU4YTk0YjBjYzhlZGVlMDhkIGxlZ2FjeS10cnVuaworNjYzMiBmM2EwZDUwMjQ2ZDI3MTNmZDliZGJlNjI1MDRkMDU0NmFjODIxYWZlIGxlZ2FjeS10cnVuaworNjYzMyBkZjYzOTg1YzFjYTk2MGYwZTMwZjNjZDlkYTUwMjRlYjM3YmFlMmJiIGxlZ2FjeS10cnVuaworNjYzNCA4MTFhN2ZmNzgzYjc3Mjk2YWUwYjM4ZGEzYjIyMDBlZTE0MzgwMDgxIGxlZ2FjeS10cnVuaworNjYzNSBhODFjM2RlM2FhZDk1Yzk1N2Q4ODk0Y2RjZjllNjhiOWZkNDRiMjA1IGxlZ2FjeS10cnVuaworNjYzNiA5OTI1MDE4MmM0OGFmZmQ1NzhhNWNmMzZhYmU4YWEyMDczMzk3ZmJiIGxlZ2FjeS10cnVuaworNjYzNyA1ODJkNDkzN2Q0OTk3MWU1YzhkMDg0YWZmYzg0ODIxOTdjYzljNmFkIGxlZ2FjeS10cnVuaworNjYzOCAxYzA3OWUyM2ZkM2I4OTk0MGZkOTVlYWIwMjlmYjY3ZDkxN2RhN2FiIGxlZ2FjeS10cnVuaworNjYzOSBiM2ZkZTUyOTQ0MGZkNjRkZTdkZjJiZjY0Yzc0NDMyMThkMWY0MzA3IGxlZ2FjeS10cnVuaworNjY0MCBhNzFhNDNkMjQ3YjA5YzIwN2MwMmIzNzUyZjI5YzU3ZWU0NzQ4ZTQxIGxlZ2FjeS10cnVuaworNjY0MSBhOTQwMGVlZTA0MGIxOGViMTA3NGJiNDg5ZDRkOWNkMjhmYWQ1YjY5IGxlZ2FjeS10cnVuaworNjY0MiA3NGI4YWE3ZjExMTRmYmYzZjJlMjRkNDc5ZmUxZTZlZDI5MGE3ZGMzIGxlZ2FjeS10cnVuaworNjY0MyA2ODc4OTljNTYzZTNkZTM4N2M0M2QxZjJlNGI0MTJkMWU1OTM4YTM1IGxlZ2FjeS10cnVuaworNjY0NCAzZGMyZTY3NWYxNzgxNzA3ODRiZjk0M2QwNzcxZTlmMzRlZWIwNTA3IGxlZ2FjeS10cnVuaworNjY0NSAxODU1ZTdjNzkxZTIzZGNkMjIzNTczMjAxZWY1Nzg4ZDU0ZjBmODM2IGxlZ2FjeS10cnVuaworNjY0NiA4ODk5NzgwMmZiOWJiMGExODljZDQyNWY4ZjMxY2U5ZDQwNmNjMzJmIGxlZ2FjeS10cnVuaworNjY0NyAyMzZhZGVhOTc2MGIwMGYyNzRjODBkZDhlY2IzZDY1YzNmODA3OTA3IGxlZ2FjeS10cnVuaworNjY0OCBkMjQxYmZkYTdiNzQ2YWY0MmUzZDhkMWJhOTU1NjcxNTlmYjZiMGM4IGxlZ2FjeS10cnVuaworNjY0OSBiYjViOWZmNzJkZTE5NTE4YzYwMGZlNjQ2NDAxNWM3ZjA1NjBlOGNiIGxlZ2FjeS10cnVuaworNjY1MCAzN2QwMDliMWJmNDVkYTk2N2M5OTk2YzllMmUzZTQ4ZjhhZWUyMDY3IGxlZ2FjeS10cnVuaworNjY1MSAzMTVhNTBjYjE1ZTM4ZDg5NzhhMTZlN2I3NWFiMjQxYmFlYzA3MGE3IGxlZ2FjeS10cnVuaworNjY1MiAyODE3NGFhMzhjNzYyNzdhMDA4ZDU0YjM1NmE1ODNiZWY0ZWJhOGQ3IGxlZ2FjeS10cnVuaworNjY1MyAzM2Y0YTkxZjg3MWJkYmI5ZDYzNTQ4YzY5MzY3MWI4NzQ0OGY2ZGNmIGxlZ2FjeS10cnVuaworNjY1NCA3ZWRlMDEyYTM1YzVlZjM0NmJmNzU1OWMwYzFjYjc0YzU4MTQzYzJjIGxlZ2FjeS10cnVuaworNjY1NSAzZDUzY2ZhYjg4MjE4OGMzODlkODRiOWQ2YWY5Y2QwNDk4YzA4YzU0IGxlZ2FjeS10cnVuaworNjY1NiBhMzkyNjQ4NGE2NTgzYzMwN2MzZDU0OTU4NjhmOTZhNGU1MWFmZGViIGxlZ2FjeS10cnVuaworNjY1NyBjMzYzNjQ1YjdlZGQyN2I0OWJkMTYzMTEyZTcxZGE4NzM4MWIxZTU4IGxlZ2FjeS10cnVuaworNjY1OCAyY2NiOTljOTI4NTQ0NmJiYWJjY2ZlOTQ2MzBmZTI2MDcyNWIzN2I4IGxlZ2FjeS10cnVuaworNjY1OSBhMjNmNGY0NjcyN2I5YmZhNTQ2ZGI3MDlhMDBlMzVjMTI1YzJkY2QxIGxlZ2FjeS10cnVuaworNjY2MCA1ZTEyZTliMjhlYWZmMTEyMWRhYzgwMTc0MGM3ZDRkOTM4Y2ZiZWY2IGxlZ2FjeS10cnVuaworNjY2MSA4YmJlY2Y2ODNhNTA0MGY2YWRkM2QzODkyMzY1NTNlZTBkYTNkNTcxIGxlZ2FjeS10cnVuaworNjY2MiBjNzk2YWUxMTU3ODMyZDJjY2I1Y2YyNDhiZDJiYjdjMWUzZWVkMjE5IGxlZ2FjeS10cnVuaworNjY2MyAwM2YyYzIxYWVjYWYyNmEwMzc5YmQzZmVlNDFlMTYyMTE0YTRkY2MwIGxlZ2FjeS10cnVuaworNjY2NCA5NGRhNTgyMTRkNmM3NWZkODA5ODM0MDFjOTYzM2RkOWM4OWU3ZTNmIGxlZ2FjeS10cnVuaworNjY2NSBlNjEzMThjM2FkMWU4N2UxNjQyMjk0MDZmMDhkMmMxMTc2MmU4M2MxIGxlZ2FjeS10cnVuaworNjY2NiBkMjNmNzg3MzBlMDBkMTNkZmYxY2FmNzBiMWI3ZDE2NTM1ODVjM2MzIGxlZ2FjeS10cnVuaworNjY2NyBmMDI1ZDhhMzc3YjU3MDAxOGQ4MTlkZTQ3MTUzNjVkZWE1Njc2NzI2IGxlZ2FjeS10cnVuaworNjY2OCBkZmJkNmUwMGRkMzgzZDJmM2IwZWM1Zjg0ZDJlZDZjN2Q5N2I1MGU2IGxlZ2FjeS10cnVuaworNjY2OSBlM2Y2YWRhMjhlZDA5NWU3ZDAwZDljYmRjNTEwMjU4MmM4ZTVjNjI4IGxlZ2FjeS10cnVuaworNjY3MCA2NzIwNmJiZDViYjU0OGJkNjBkYjY5YTJiNDk0YTFhOTM3MzUxZDU3IGxlZ2FjeS10cnVuaworNjY3MSBiNzBiYWJhMWM3ODkzMmMyNzk2OTM0ODg5NDZhODg3Y2Y4MzFkZTM2IGxlZ2FjeS10cnVuaworNjY3MiAzODM4M2I2M2Y0MTU4Zjk0NGU3NjhhMzJkYjhlMWRkNTEwOTA0YTcyIGxlZ2FjeS10cnVuaworNjY3MyA2ZmI2ZTAxZTJiYTE0NDM2ZGUwZDg2ZDFhOGE1YzNjZDgwZjFkYjhlIGxlZ2FjeS10cnVuaworNjY3NCAyMmFhYzgxYzc1NjBjMWE4OTYwMzMzZjFiMTE0ODA5MmZmMGU0OTUwIGxlZ2FjeS10cnVuaworNjY3NSBjNjI1OWNmMmM1ODE0M2RiNjEwMjMwNWQ1MjE3ZGU0YWNkNzUxZWY2IGxlZ2FjeS10cnVuaworNjY3NiAzNTBkMGRlMDc3MzljMzc0NzFmZTkyOWY5Njk4OTM5MWRhYjgwYjUwIGxlZ2FjeS10cnVuaworNjY3NyBkMWI0NzQzYTlhNjA1M2U5OGI0MDU3MDliY2FmOTg2NDVlNDhmNzA2IGxlZ2FjeS10cnVuaworNjY3OCAzMTI2ZjhhMTQ2YTY2ZjRhNzZjYjA0ZDM4OGRlNWY3OWIwYmJhYWNjIGxlZ2FjeS10cnVuaworNjY3OSBjNzk5NDAwODM3OGQ5ZGU1YTBiZjA0YTM3NmQzNDlkZWEzZWUxYTUyIGxlZ2FjeS10cnVuaworNjY4MCA0MmVjMjNjNTAwMTg2ZDVhYmUyZGJjYzI2MWNiNTczZDQ1NThiMjJlIGxlZ2FjeS10cnVuaworNjY4MSA2M2FmMjU3NGY3MWY2YzQxNzJiNjdiZDU4OWJhY2I4OWNmNDZhYmYxIGxlZ2FjeS10cnVuaworNjY4MiAxYzAwNjQwMDY5ZjhhNTQxNDU2ZjMxZTljYjNmYmI4NWQ5MzYyMjAxIGxlZ2FjeS10cnVuaworNjY4MyAzZmRlOWQyYTM5YjBjOWEyMTFjYmNhODRiZjM4NDY2MDY2OTJhM2UxIGxlZ2FjeS10cnVuaworNjY4NCA2MGZjMDFkNmY3MjcwY2MzMzY4ZGJmMWE2MTIyMGZlYjU4NDdhODUyIGxlZ2FjeS10cnVuaworNjY4NSA0YTkzY2M3ZTdmYjZmM2U1YjcwZmYwODhjZDIxZmI0ODNiMWVlOWJmIGxlZ2FjeS10cnVuaworNjY4NiBkNzAxOGJjNTU4NGUwYTljODg3YmUxMDliMGE0MjQ1NTkxYzZkNTcyIGxlZ2FjeS10cnVuaworNjY4NyBlMzFiNGRlZmFkNWI0NWNkZjRjNjAwNDkzZDcwNjdhMDIyNjFhMWUxIGxlZ2FjeS10cnVuaworNjY4OCA2ODhkNTY2Y2IxNWIwNzlkYTlkOWE2N2I2ZTBjYmNlNTY3ZWVjMzM1IGxlZ2FjeS10cnVuaworNjY4OSAwNDEwZWQzODA4ZWViOGMyNTQxYWE5NTU0MTMzODdkNjBhNzE0YTlmIGxlZ2FjeS10cnVuaworNjY5MCAwYTVmMDFkNDcwMWMwOTkzYjI5MmNkNWEyMWM5MWIyOTE4NDNkNjIwIGxlZ2FjeS10cnVuaworNjY5MSBjNjY3OWIxYzZjZmMxYjRmNWM0NmM1MjQxYTgzNjJiNDQ5MTFiMzliIGxlZ2FjeS10cnVuaworNjY5MiA5ZTBlODQxN2E5OGFlYWRhYjljMmZlYjg2ODZlNDJlM2VjNWNjZjc3IGxlZ2FjeS10cnVuaworNjY5MyA5YmNmYjAzNGI5NjNkMmM3Y2I1MjEzNzQxZjk0OWZmM2U0YTQ0NTI5IGxlZ2FjeS10cnVuaworNjY5NCA0OGIyZDdhNDUzMWRmOGI4Mjc4MGYzMGM3ODU2ZGIyNjNiZWYxMzk5IGxlZ2FjeS10cnVuaworNjY5NSA2NjkxM2NhN2VjNDcwYWVjOTUzM2ZmMmQxNjliZDhiOGY2NWE0MjI4IGxlZ2FjeS10cnVuaworNjY5NiAxZDFmMGM2NDdlNzdiMTIwZjRmZjhjYjIxMjRlYzk5NDE0YjZlNTcyIGxlZ2FjeS10cnVuaworNjY5NyAxODBjMWQzZGFjNDExMTFmNzMzOWM5ZjBlMjExMTg5M2NmMGJmNWQ3IGxlZ2FjeS10cnVuaworNjY5OCAzZmVlY2FkMjk2ZjQwZjRlZDhkOTAwNDRlODZlNDBhOWExM2E1Y2JlIGxlZ2FjeS10cnVuaworNjY5OSBiM2FlMGNmMmEwNmQ3MTMyNGZhODk5ODI3ODc0MGExOGViZGRlYzBjIGxlZ2FjeS10cnVuaworNjcwMCA0ZmFjYWUwMGJkZDYxMjQwNjQyZWUwZWRmYmYxYThlOGE4NmMyM2RjIGxlZ2FjeS10cnVuaworNjcwMSA1NzNlZDVlMzg3OWI2OTk5OThhZWQ4ODExNDJmNGMzNDQ4M2I4ZmI5IGxlZ2FjeS10cnVuaworNjcwMiA4NDQ0NGVhM2Y1ZjY5ZDYwZjZkODQ3YWFhOTY0Y2ZjNjJiMjRjY2I3IGxlZ2FjeS10cnVuaworNjcwMyAxZjY5MmMzZjFkMzJkNDM5ZjI5MmQyMGFhM2VmZWQ2NjVjZjFhMzEwIGxlZ2FjeS10cnVuaworNjcwNCA0MWE1MmFiMjYzZGFhMjUwN2ZlMzMxNTE5MjJjZTk1MDAxMDhmNWJlIGxlZ2FjeS10cnVuaworNjcwNSA1YzM4N2FhMDM3MDg3MzM3ZmIyMjlhN2U1NGFiNWM0NWI5NTJiZGU1IGxlZ2FjeS10cnVuaworNjcwNiA4ODZjMGY3NzVjOTc2ZTJjY2RiOWZmNDZkNzRiNjZhNTkwNTZjZjkxIGxlZ2FjeS10cnVuaworNjcwNyAxMDk5MTU5ZWM4MjE5ZTBmOTZkNTY4ZDIwMmQxMTY4ZDIxYmQ1OGQwIGxlZ2FjeS10cnVuaworNjcwOCA3YmY3MWE4Mzk2NjFiYzI2MDA2YWM4MzAzOGVkMTFkMzYyMGQwZWU5IGxlZ2FjeS10cnVuaworNjcwOSA4ZjI5MWRjOGZhOWI0NjllNjBmMjU2MTc5MjBiZTM0MjQ2ZjFlNjhiIGxlZ2FjeS10cnVuaworNjcxMCA3ODBmYzJiMTY3NGQ3NzJiODg5ODE1ZjZjYjcyZDNkYmNiNGY2MzhjIGxlZ2FjeS10cnVuaworNjcxMSBjYjQ5MDBmYWI3NjQyOGFmOGFlNTVlMzE5OWU5NDY5NTI1ZGVjMWM0IGxlZ2FjeS10cnVuaworNjcxMiA2Yzg2ZDkxMzZjMDkwZDRmZDM0NTNmZTkyMjYwYTNlMTJmZTcwZjI3IGxlZ2FjeS10cnVuaworNjcxMyA2NzAwNTU4YTMyZmIxMzNjOTM5MWQ0MDc5ZWFmMTliNzQ3NmU0N2Q0IGxlZ2FjeS10cnVuaworNjcxNCAyMWU1Yjk0Yjk5YjgwYmRmOGU2Y2NlY2IyMjk5N2ZhM2NjOTEzYzI1IGxlZ2FjeS10cnVuaworNjcxNSBjNjJkMzJjNWZmM2RlY2VlM2ZlYWE1NGM2MjQ4MGU3OTUxMDA5NGUzIGxlZ2FjeS10cnVuaworNjcxNiAzNTQ1YWI0M2E3MmEyMTlmMGZiY2UzMjVlMmRmMTg3NzY3YTNlMmE4IGxlZ2FjeS10cnVuaworNjcxNyAxY2UwMGNkYzAwM2QyNTVlOGIwOGI1OThiYzcwOTJiNTIzY2QwNzkwIGxlZ2FjeS10cnVuaworNjcxOCAwZmFlMzUzYjA0Y2EyZDFhNTM0MTY3OGE2ZWRiMTliZTJlMjkwN2M2IGxlZ2FjeS10cnVuaworNjcxOSA0M2UyZTU5MmEwMDE5ODUxMjBkYTUwODllZGUxNGEwNmZmZjIwOGMzIGxlZ2FjeS10cnVuaworNjcyMCBjNmVmOGI3YjI2ZWJjMTIwNTIzZjg4MTA1Y2UyOTMzNWFkZjIyNTZiIGxlZ2FjeS10cnVuaworNjcyMSBkYTM4Y2Q2MTY0MTI3Y2NkYmE3OTYwOTQ0NjFhOTU0ZTk2YjQwOWIyIGxlZ2FjeS10cnVuaworNjcyMiA1ZjY3MmE1MTJkYzQxZmRiODA3OTE3NjEyYTFhOGFmMDM5OTc4ZTJhIGxlZ2FjeS10cnVuaworNjcyMyAwY2Y2NzE0NTJmYzU0M2Q0MjZkNTNkNmM4M2M0MzdkM2I0OTkyOGZlIGxlZ2FjeS10cnVuaworNjcyNCA0NDcwZjdmZjBjMjM5Yzg5NGNiOWI1MTg4MTI5ODJmNDdiZDBmZDg2IGxlZ2FjeS10cnVuaworNjcyNSBhYzNmYmI2NzcxZjVjMmRiMzliYjYzYTJiNmEyMDI5NjFkN2ExYTcyIGxlZ2FjeS10cnVuaworNjcyNiA2YjZjNWQxMjEzMGNkOTkwZWRhODA2NTYwZGY2ZDRiNDg5NWJhNjM1IGxlZ2FjeS10cnVuaworNjcyNyAwMmEwMzIxZjk0NjhiZWFjN2FkZGVhOTY2YzViMGZlZTAyOGNmYzJhIGxlZ2FjeS10cnVuaworNjcyOCAwNWFlNTcyYzFhYzU2NmMzZTgzNTA5NjMxZTRjYjA3Y2VkMDk5ZjM1IGxlZ2FjeS10cnVuaworNjcyOSA2NDcwNGQzNmIxOTgxZTgyM2ZjZjBmYTVlODg1NzJmYjA2MDM0MDk5IGxlZ2FjeS10cnVuaworNjczMCBlMjI1ZTcwZmQ2NTcxZmE2NDdkNDNiMGJjNDIzY2RhY2ZlOGRlODA2IGxlZ2FjeS10cnVuaworNjczMSAyMzliMTAwODExNzYzZDM0MTk4ZDEwMTk1ZGQ5YjEzNGFmMGFmZWJkIGxlZ2FjeS10cnVuaworNjczMiBiN2U3ZWI1ZWY4MjBhYTg3Nzk3YTE0ODkwNWFkNWMwZTkxZmEzMzFkIGxlZ2FjeS10cnVuaworNjczMyBkYmI3NjA5NWFkZWUwOTU5OTAzMzdiZWU2YmQ4ZGNiYmFhNzdhOTM0IGxlZ2FjeS10cnVuaworNjczNCA1MTZkZGY1MDE5NGQzNjgwNmVlOWZjOWVkZmJiNWZmYWYxNWQ1ZDM1IGxlZ2FjeS10cnVuaworNjczNSA1NDQyMTdkNTQ4YTVmMWQ1OTQ5NmVkZDAyOTRmNTUzNTI3MzBmMWFjIGxlZ2FjeS10cnVuaworNjczNiA2N2QyNThlZGQzZDk5YmNiNmZhMTNlYzg4NmI0ZWU3YzIzODZlOTcwIGxlZ2FjeS10cnVuaworNjczNyA3YjU0YTNjZWRiZTBjNjQ0YzcwNWNhY2I2NjZmNmY4MDhlYjdiYTc0IGxlZ2FjeS10cnVuaworNjczOCAyNTMwMWI5ZWEwY2NkZTlkNmYyN2EyN2JkN2M5MDJiNGVjZDg1NGM0IGxlZ2FjeS10cnVuaworNjczOSA4ODkyZGE5NTU0YTViZDExZmU4YmM3ZDYwNGU0ZmIyNjdmN2M4NDdjIGxlZ2FjeS10cnVuaworNjc0MCBmMGU4MjEyOWJkM2VhMzYxN2EyZjFmNWE3NjE2YzkyZTQ3NGQ4M2E4IGxlZ2FjeS10cnVuaworNjc0MSA2MDgyNTAxZWNiMmU1ODZjMjAwNTBiYjM5M2M0ZTY1YjBmMTU4MWUzIGxlZ2FjeS10cnVuaworNjc0MiAyZTg3YjgxMTc2ZjlkMzI1YTU2OTM4MzMwNGUzNDcxZTU0ZWQ5OTI0IGxlZ2FjeS10cnVuaworNjc0MyAzOGM4YTFjY2MxNmM2MGUwMzdhZThkMGVhYjdjNWRlNGZhNzQ1OWQ3IGxlZ2FjeS10cnVuaworNjc0NCBlZjUxZTRhMmU3OTk0NDlmM2Y1ZDljZGZiZmEzNzQ2NTlkNWE5ZDQ4IGxlZ2FjeS10cnVuaworNjc0NSA2NTEyMGU5MWIwNjFlYTdkZjFhNmY2ODFjMzY3YTQ4NGUwZmRmOGE0IGxlZ2FjeS10cnVuaworNjc0NiBlNzg5MDMzNmYxMDcwNGYzMzQwYjg4YTYwOWQ1MGNlYmMxYjE4YzZhIGxlZ2FjeS10cnVuaworNjc0NyBjNDg3NjRiZjYyZDFlZDA2YTczYzEwZjMwZGQ2NDE0MmZmNzE4YmZkIGxlZ2FjeS10cnVuaworNjc0OCAzNzk5YjcxMTYzMWIyNWVjNjQ2ZWU4Nzc4M2MwYjM1ZGE0YzYyNTVmIGxlZ2FjeS10cnVuaworNjc0OSBjYjg0MWYxYjAyMmVhMjI0Y2M3YzZmNWNjZDk2NjYwN2FmYjY1NWYxIGxlZ2FjeS10cnVuaworNjc1MCBhZTE3OGYxNTA0MDMwMGM2OTBhNTZkMjM5M2E3N2E2NjUwYWY4NTQ1IGxlZ2FjeS10cnVuaworNjc1MSBiZWZkZjBkYzA5NmIwOGVlYzUyZjNlOGJmNjBiYmJhZjRkYWM1MmFhIGxlZ2FjeS10cnVuaworNjc1MiBmNmU4MjRiMjcwMzIzNWQ4YzM1OWIzMjE2MDA5MmZkMjNkNzhiMWY0IGxlZ2FjeS10cnVuaworNjc1MyA5NGI3NjFmYWM0ZDdiYjNjOGFjYzNjOWJlOWUxMGVlMWNiODBmYzgwIGxlZ2FjeS10cnVuaworNjc1NCA1NjkwOTc4MWE3NDFiMTA1MDUyNmI1MjI2ZTJmNjRkOWRkZWU0OTNlIGxlZ2FjeS10cnVuaworNjc1NSA0YmRhZmE3MDNhMDRiNWM3YjZiZTY0OWQ3ZTVmZmU1ZWQ0YWUwNTUxIGxlZ2FjeS10cnVuaworNjc1NiBkYWYxMmY2NGQ1YWEzZDUxODUyMDA0ZTNiNDU5MDFhZGVhYTc0Nzk0IGxlZ2FjeS10cnVuaworNjc1NyA4MzlmNzI2MTBhZTFmOGJlMWJhMmUzMTcyM2IzNjdlODc3ZDNmYjNmIGxlZ2FjeS10cnVuaworNjc1OCBlMjFkM2U3YWVhODcxOTZjNDMxOTY1ZmYzM2MxMjAyOGU3MjM4NjU1IGxlZ2FjeS10cnVuaworNjc1OSBiNjlmNGI4Mzg5MmU2ODg1YjYwODlkY2EwY2U3NjBjY2Y0YjUxNjg2IGxlZ2FjeS10cnVuaworNjc2MCBkYjM1ZDJiOTNlYmEwZjk5NjlmMGIzMmE4NWYxMmFkMTgzNzdiZWI0IGxlZ2FjeS10cnVuaworNjc2MSBmMmY1Y2Q3Y2I1YjU2YjNhNmViYTMzYTIzZDUwOGRlMTQ1ODE4Zjg3IGxlZ2FjeS10cnVuaworNjc2MiA0M2FlMDQ1YWExMGUxMDdjNDliNWFkNTBjYjJhN2M4ZDZkOWFkOTlhIGxlZ2FjeS10cnVuaworNjc2MyAwMDM2ZGNmMjg0MDIzYTliZDg2MzIzMjZmY2NjODQyYTAxMGNhMTgxIGxlZ2FjeS10cnVuaworNjc2NCA5YzZlYWIwY2Y1NDJkZTFiMTQwNWMxMDVlZTNiYmVhZWI3OTRkNzI5IGxlZ2FjeS10cnVuaworNjc2NSAxNDI3ZDYxZjEzMDcyOTlmODI0M2E0MWMxMjlhNWJjNjU5ZjZjY2U3IGxlZ2FjeS10cnVuaworNjc2NiBhYmQwYjlmZjY3NTkyZDEwNDc3MzZhN2VlZjVjZDllYmM5MmJhNmM3IGxlZ2FjeS10cnVuaworNjc2NyA2OWJiYzIxZjU1Y2YyZTM0ZTQ3MzhhYTUzMjRkMjM2MzcwMGVjNGRmIGxlZ2FjeS10cnVuaworNjc2OCA1MjBkZGNiM2Q1ZDY4ZTI3YjA2NzQxMjhhZmE4NjUxYTg4MDU0NDQ3IGxlZ2FjeS10cnVuaworNjc2OSAwMDhiOWZjNTY1YmZkYzI3Mjg0YWE2MzM1NTMwYmUwZTIzNTdmYzUzIGxlZ2FjeS10cnVuaworNjc3MCA3NWQ3NTczMmE5ZTRiZThkNWI1YjEyYzE5MjhhZjhhM2IxYmM1NDRjIGxlZ2FjeS10cnVuaworNjc3MSBjZjlhOTdiZmMwMjMzOWUwM2U0YjQwNjBiOThlNmY0ZDM3ZTQ4OWUxIGxlZ2FjeS10cnVuaworNjc3MiA2ZjcwOTBhODI2NDU5ZDFiNTNkZmJmZGVhMWE3OTI3MjQ4MjI3ZWIwIGxlZ2FjeS10cnVuaworNjc3MyBlYjFlZDc0Mzk3MmM0MjZhOGNkZDNkODAzYmY2Y2JhNzBhNjI4NDU1IGxlZ2FjeS10cnVuaworNjc3NCBlMDVkYTgwNDNiNTAwYjQxNTM0ZGViYzcyNWUyZmNkYmMyYjk1ZmY2IGxlZ2FjeS10cnVuaworNjc3NSA4NjgwNjMxNjE2NjU4ZTVlZDVlYTQzYjcyYjk1MjIwN2EzYTk3ZWNmIGxlZ2FjeS10cnVuaworNjc3NiBmYzRmMTI4OWZlNmNmNmZkOTQ1NmQxNDY3MDBmYzI0YjJiZDJlNTUwIGxlZ2FjeS10cnVuaworNjc3NyAzODhmOWMyMjIwY2U0ZjYyYzJhM2E3YzZjNDE3NzM4MTUzOTAzZjY4IGxlZ2FjeS10cnVuaworNjc3OCA5NWMzMTkzMWI3NmFmNzA4MzdhM2E0MTRmMThkYjQwYjAwYTFmY2Y1IGxlZ2FjeS10cnVuaworNjc3OSA3ODA5YjZiNGZmZDkzNTM4NjY2YjEzZjdmNDM0OWUwNDhkYmQ4OGQyIGxlZ2FjeS10cnVuaworNjc4MCBlOWY0OGQ3ZTczYjFjYWM5YTNlMTVjZDFjZmYwYWNlMWI4NjJkOTU0IGxlZ2FjeS10cnVuaworNjc4MSAyZWVjMzVlMmFmZmY3M2YyOWU1ZDRlZmU5NDhhODNmNzE1NzZhOTljIGxlZ2FjeS10cnVuaworNjc4MiAxYTBmMzRjMTgxNjNjYzA0OTVjYmVhMTM0MTQ0NzRhZjZhZmVjNTNlIGxlZ2FjeS10cnVuaworNjc4MyBlY2JlYjQ0NWY2MmU1MDZmOGY3NTRmMTNjMzY0MDMwZjI1ZTNmNzhhIGxlZ2FjeS10cnVuaworNjc4NCAzZjZkMjYxNjU0Y2EyZTlkYjkzOTE1NjI4YWM0YTE0M2ZiZDJiZjZiIGxlZ2FjeS10cnVuaworNjc4NSBjOTdmZmQyZWJkNTM5NjQxMGRlOWE3M2ZhNjc3YTkzNWFlMzYxZjZiIGxlZ2FjeS10cnVuaworNjc4NiA5MzdmNjlmZDQzZmVhNWU3OGIxNjIxMmI3OTQyYTk4Y2JlNzBkYTIzIGxlZ2FjeS10cnVuaworNjc4NyA5ODQ3ZGU5NDA3OTAyOTlmY2VjZjJkMWI5MDFjNjk5MTU5MDA2MmRkIGxlZ2FjeS10cnVuaworNjc4OCAzYjM4NzBiOWFjZjI0Mzk3NjdhZjg1NWUyOTlmOWY5MDRhMDBjY2Y4IGxlZ2FjeS10cnVuaworNjc4OSA0NmQ3MzZmYjlkYTMyMjgyZDUyOGFhZWNhNTliMGU1ZDBlNGQxMjEzIGxlZ2FjeS10cnVuaworNjc5MCA3NzI4MjhjMWIxZjY4NzQxOWE1MjE3YWNkMTU1YWYxY2YxMGZkNGZkIGxlZ2FjeS10cnVuaworNjc5MSAwZjUxZjFkNzBkNDUyNmZjYWE5OWVlZTYzYjYzYmNlNTA0NzI2MGM0IGxlZ2FjeS10cnVuaworNjc5MiA5N2QzNjUyZTU3ZDM1YzIzYTFkZjJkNTAzNGQ2MzE0MzZmZmU3NzI3IGxlZ2FjeS10cnVuaworNjc5MyA5NzEzMzk5NmUyMmYwZjJhMjA1YTE1YzlkYTM5YTIyY2M0MTk1YWNiIGxlZ2FjeS10cnVuaworNjc5NCBkNTg3MTk2ZjliZWZhNWVhNmVlZWVhMjFhNGM3ZjhjN2MzMDJhYTEzIGxlZ2FjeS10cnVuaworNjc5NSA5ZDQ0NTAzNTA0NTFmMWViZGU3ZDZiNmMwMThjZmIzMzgwNWZlMWRlIGxlZ2FjeS10cnVuaworNjc5NiA3NzM5N2Q1MWY4OTIwNGRlYWFlNGQ3OGEwZTVlZDFkNGU3ZTg2YjUzIGxlZ2FjeS10cnVuaworNjc5NyAzMTRjMTM0NDVhMDJkZjAwMTRjZjFkMzhiNTlhMjExYzkzOTllY2UwIGxlZ2FjeS10cnVuaworNjc5OCAxYWZjZDFjZDMzM2I1N2MzZmYxMDQ3YjlkNTdmMTcxMGM5NmNkZjdmIGxlZ2FjeS10cnVuaworNjc5OSAxMmMzODY1YWVhYTAzNjM1MDY5OTRlNDk5OGI3NjU4ZmY2YzgyYzljIGxlZ2FjeS10cnVuaworNjgwMCAwMjdmZjE1NTRlNjYyYmZmMmNiM2RiOWEyZDhkMzI1YmIwODAyNjdlIGxlZ2FjeS10cnVuaworNjgwMSBmYjczMGZiMTNmYWI1Y2FlNjc0OTVmNjdjNGMwMDIzYzk5YmY5NDAyIGxlZ2FjeS10cnVuaworNjgwMiBiMDNhYjM1ZDUyZGY5NzdjOWJkNzNhZWEyYjU0ZjIwYWZmN2E3NDM5IGxlZ2FjeS10cnVuaworNjgwMyBhMjQwYmU1YmU2YjRjNDYzYTQ3MjE1Yjg5NDAyNmJlY2RjNTBiN2U1IGxlZ2FjeS10cnVuaworNjgwNCA5MDVmN2I0YjEzMjM4NzA3ZmU3YmI5NTU5ZDBkYTFkMTZkMjVlNzA0IGxlZ2FjeS10cnVuaworNjgwNSBjMmViMzhiNjc0ZjMwOTg5MjQ4YzY1NGRhZDg3OGY2MzUwOWVkNDI0IGxlZ2FjeS10cnVuaworNjgwNiBkMDQ0NjlkMDI1NmNlOGVmMWJiMDQxYWVlNjRjY2FlMGZjOTE3OTYyIGxlZ2FjeS10cnVuaworNjgwNyBlZTIwMjYyMTczNDk5YzRlNWM0ZjEyNTVjMThlY2M5MWQxNmEyZjRhIGxlZ2FjeS10cnVuaworNjgwOCBmMzdjYmZhYTczMjgxMjlhMGQ4ZGYyOTI0ODIwOTBkNzUyZDU4ZGIyIGxlZ2FjeS10cnVuaworNjgwOSAzNjZkNzJmMTI3OTRjNTY5NTdiYzc1ZTQzOGM5ZjcyNWFjM2QxNTQ1IGxlZ2FjeS10cnVuaworNjgxMCA0ZGJmZDRkZmUyODFjOTEyNTUyY2IzYWU3M2RmMDQwOTk4ZWM4ZDVkIGxlZ2FjeS10cnVuaworNjgxMSAzNzY4MjJjNjU4MTA4NDNlZjg2MTJkZGQyM2JjMDYyNGM1MjIzMjY4IGxlZ2FjeS10cnVuaworNjgxMiBhZjE2ODRmYzljNjMyNGQ4ZDI0MWUyMmI3ODFiZTY2ZmFhOTQzYzJmIGxlZ2FjeS10cnVuaworNjgxMyBlN2JhMDkyYzNjZjNjNzE1M2I1ZDliNDJkN2EyMzdiMWU0ZmFlZmFjIGxlZ2FjeS10cnVuaworNjgxNCAyZGY2MmRiMzY2Yjc2ODMwMmFiMzQ0ODdkMmI0NjNkOGYxNmYwNjViIGxlZ2FjeS10cnVuaworNjgxNSA1YTc1NTEyMzYwNjM1YWUzMzY3MTkwZmUwZWRkZWVhNDM0YmZjNDM4IGxlZ2FjeS10cnVuaworNjgxNiA4OTcyOTdhYmU1YjQwNWMxNjJiMWQxOGUzYWZhNmUyYzIzYzU5MWFkIGxlZ2FjeS10cnVuaworNjgxNyA0YmJkZTgwNGI2OTc4NGI0YjBmMGM1OGM3MDUwNTNmZDg2MTNkNjAzIGxlZ2FjeS10cnVuaworNjgxOCA1Y2JkYmE0ZDJlMTUyNWQ5NDIwYWVhOTc5YTEzNGNmMGFjMDg3MjVkIGxlZ2FjeS10cnVuaworNjgxOSA0ZmI4ODRiZjE0N2NjMWMxYjYzYzU1MGQ1MGJhOWVkYzI4MjdhNGM5IGxlZ2FjeS10cnVuaworNjgyMCA3YjYwMGU3M2ZkMmE4YTBmZmQxODI4MDkzZjZiNGNhOWEwNDEzM2FjIGxlZ2FjeS10cnVuaworNjgyMSBhNWMyOWFjY2M0MzhlODBiZTIwMTQ4MTAyNWFkZmMwYzA5YTQ3MGExIGxlZ2FjeS10cnVuaworNjgyMiA4NTJjYTIzYzgwY2NlMDBmNTEyYTc5NzM3OGYxYmQ1YmZkZjVhMDZmIGxlZ2FjeS10cnVuaworNjgyMyA5ODNkZjQzNjQ1OTU3MGZkODU2MWJhZWY3NmEwYWEyNTg2NDU1YmM0IGxlZ2FjeS10cnVuaworNjgyNCBhMjA5OTE5NDYyODUwM2FiZTc2ZDcwYzQ3YmEyMzA5NThiYzA2NmU1IGxlZ2FjeS10cnVuaworNjgyNSAwMmEyNGU0OGIzNzZlNTZiNDliY2U4ZmYxOThkNzMyMDcxY2UwN2RhIGxlZ2FjeS10cnVuaworNjgyNiA2ZWMwY2FlYWY4MjMwZDhlZmI2MTA3YjRjNGJkODA1MjUxZGNkODA3IGxlZ2FjeS10cnVuaworNjgyNyBhYWM4YTk5YTFmOWM0ZmEzMDVkMGIyY2U2MzQwYzExNmYyNDgyOGRhIGxlZ2FjeS10cnVuaworNjgyOCA2OTI1MDcwMzk1M2EyYTcxMDcyZjA5NmJjODYyZjk2NWU5ZWRmOTI3IGxlZ2FjeS10cnVuaworNjgyOSBlYjQ1NWQ5OWJhOTgyMjZmYjhhYzRkYWQwYWIzZmJkOWNmZmEyOWZhIGxlZ2FjeS10cnVuaworNjgzMCA5NWZmODlkODNkNjM5N2E4NGVkODFjMTAyNTAwYmUzZTlkNGE1NmViIGxlZ2FjeS10cnVuaworNjgzMSAyOTEzNTk3NDQzYjkwMGUwMGI1ZTE1OTEwZGY0NzYyNTgwMWQzMzMxIGxlZ2FjeS10cnVuaworNjgzMiAwMjEyYjQ4MDk0NGJjMjAzOTdkNjg5ZDk4MTg4NWMyMTUwMTBlMjEwIGxlZ2FjeS10cnVuaworNjgzMyA0ZTAwZTVkYWE2MTI4ZDI4YjA3NTJmY2ExMjhlMzkzZWRhMzFlYjRiIGxlZ2FjeS10cnVuaworNjgzNCBkYmYyNzM3ZDJjODFjYTNlM2NmMzlkYjM0OGFkMzg2NDc4YThkMGFlIGxlZ2FjeS10cnVuaworNjgzNSBhZjc1NDk2MWFjYzUyNGM5MTAwNTAzZDliNzNlNzBhNDI2YWI0NWQ0IGxlZ2FjeS10cnVuaworNjgzNiAzODM2MTFiZGE5ZTZkZWU4OWFiZGE1NTQxOGI2MzUyZjBhOTMzZTEyIGxlZ2FjeS10cnVuaworNjgzNyA3YjFmNmU1ZTkyOTQ2MzBjNGIwYzRiZDI2ODNhNTUxMTcxMzI3ZWI5IGxlZ2FjeS10cnVuaworNjgzOCAzNDE4MmE2NDA4ZTA0Zjk1YjAxZDJiMmI5ZjhiMmYwYWFjZjk1YTViIGxlZ2FjeS10cnVuaworNjgzOSA5MTNmYzlmZjQzYWMxMjFhOTcyMDlhOGM2NDIwZGUwYzI4ZWJiOTcwIGxlZ2FjeS10cnVuaworNjg0MCAzZWI3NGRmNjcyYTM5OTczMDFlYWZiMDE2MjMxNGQ4MWMyNTNhY2FiIGxlZ2FjeS10cnVuaworNjg0MSAzMTVhNzkxOTlmYzhlZDdjZmQ5YWM0YWU5MWYxYWNhYzlmYTM4OWVjIGxlZ2FjeS10cnVuaworNjg0MiBhMDVmOGQ4YzY3NjhmODFjZjIyNWIzMGUyZDJhYTAzNGM1Mjg3ZTNkIGxlZ2FjeS10cnVuaworNjg0MyAzZTc3ZDY2MzdhMmI5MGQzMmE2OTc0MGVkMDkyMTcyODIzZjJmMjZmIGxlZ2FjeS10cnVuaworNjg0NCBhNzA2OTJhNmQ4Y2NmNTg4MGYyZTg0NmM5MWE5MzYxZjFkY2M5MjBhIGxlZ2FjeS10cnVuaworNjg0NSBjMjc3ZWU4YzY2OWNkYjgyMGE5ZDNiYmUyM2Q2MDM1ZDUyNmRmYWViIGxlZ2FjeS10cnVuaworNjg0NiBjYmQ0MzRiNDZjMWE2M2YzMjI0ZjhhODEzMmEwY2FiZmE5MDdkNmM1IGxlZ2FjeS10cnVuaworNjg0NyA5OGVhODAwNTFkYmM5MWQwOTcwMmI1ZGMyNGIyMzcwMDQ4NWM3MDIzIGxlZ2FjeS10cnVuaworNjg0OCA0NjE0MGY1ODU2ZDkwYTBlYTg0NmNlOThlMWE3YmZlMjAwYTFhN2IwIGxlZ2FjeS10cnVuaworNjg0OSAzMWM3ZDhmNDVhZWIwODU1Nzg4M2JmZTdjZjY3MTkwNWQwZDJhNTA0IGxlZ2FjeS10cnVuaworNjg1MCBkNGY2NGZjNDJkODQ0OTA1NGYzMzE3ZWQ3NDkyMDY5YTM0NDYzZjVhIGxlZ2FjeS10cnVuaworNjg1MSA1ZjhhNjUzYjE3NzlhNTBkZTdlY2NjZWMwNDhkOTE5YjZhNDgxNzkxIGxlZ2FjeS10cnVuaworNjg1MiA5NjY5OWFmNDgxYmE5ZTk4MmQ0MWFmZGFlYjQxYmFmY2FjYzJmNWQxIGxlZ2FjeS10cnVuaworNjg1MyAzMDYxNjc2YTY1OWFlM2U4ZTc5NmEwODk3MGFkOWJkZWJkMjYxMzU5IGxlZ2FjeS10cnVuaworNjg1NCBhZjFiZjBmNmUyZGIxMTAwZjRmYTJlMjlhMTBmNjFlNzk4OGEyNDQ4IGxlZ2FjeS10cnVuaworNjg1NSA3OTg3MzJlNjliM2JhMWE2MjRkOGNiOTk3ZDhiNmUyMjJjNjFlZTQ3IGxlZ2FjeS10cnVuaworNjg1NiBhZDQxZGVjYzVmYTkzZjljODhiNWE4ZTY5YmNlMjg0MzI4YjgwNWE0IGxlZ2FjeS10cnVuaworNjg1NyBlMDMzYzc4NmYyOTcxYzc2NDc0OWY5ZjM5NTI0MGMwZTVjMzhjYjFmIGxlZ2FjeS10cnVuaworNjg1OCAwZGU5YzU1NGJhMDBjMGQ2ZWY1ZGEzNTgxMDRkMTFjYzZmYmYxNzQ1IGxlZ2FjeS10cnVuaworNjg1OSA3MGNjMjM4ZDU2M2U2MjI3OTJkZTdmZjgyODFjMzYyZmU0MzFmMTAwIGxlZ2FjeS10cnVuaworNjg2MCAzYzdlZmViNjA3YTA3MGNiNDQ1OTJhYzk5Y2YyZmY3YWNiM2M3YzQxIGxlZ2FjeS10cnVuaworNjg2MSAyZTI3MmJmNWE0M2U4NDQ3YmUwOGI1ZTZiYjcwYWVkZjEyYjhiYmFhIGxlZ2FjeS10cnVuaworNjg2MiBhNzdmNGMyMjY5N2ZmOWFlZjdmNTdiN2NiNTRjYjAwZmZhMmQ5NDY0IGxlZ2FjeS10cnVuaworNjg2MyBhZGJlNjMzMTdjY2IzZGNjNjdhNGY1YjQ1MmY2YjU3YzQ2ZWZiZjc4IGxlZ2FjeS10cnVuaworNjg2NCA3Nzk1NGZlNDM3NmNiNDkxZTI3YjVhNDg0M2E1ZjUwMDZhODIyMjliIGxlZ2FjeS10cnVuaworNjg2NSA2MmI2NWJlMmI3N2YxYjFhOWQ3MTc2YTJiNWVlNmIzMjQ1MGFkN2ZiIGxlZ2FjeS10cnVuaworNjg2NiA3MmEwY2ZkYTIwMDQ0NzQ1OTA4Y2Q4ZDUxOWE2NTEzZDg1NDc5MDgxIGxlZ2FjeS10cnVuaworNjg2NyA3OTgwODYzMjM0NjQ1Yzg1OGI3NTNmZWFmMDUyMzFlODk2YTE1NzIyIGxlZ2FjeS10cnVuaworNjg2OCA1Yzg2ZjYwNTM5Zjc0MjdlMGFkMTNjZjA0MWNhMDYxNGU4N2JiZjI5IGxlZ2FjeS10cnVuaworNjg2OSA0OGQxZjViZWIxNmJhNjQ5YWQ0MmQ2ZWExMmM0N2FiODhlNTc4NjA0IGxlZ2FjeS10cnVuaworNjg3MCBkNThhODQ5MTVmYWRlMTlhZTJkODJmMGQ4YTU5MTYxYjQ0OTNiMTI3IGxlZ2FjeS10cnVuaworNjg3MSA4OTA0MzRkNWJlYzJmOWMzOWFhNmVhNmQxMTE2ZTQ0MTgyMGRmMGI0IGxlZ2FjeS10cnVuaworNjg3MiBlYzRjNDJiZWE2OWQ2Y2ZiMTM5YzRjNDRkY2UxMThiZThiOWRhNTBkIGxlZ2FjeS10cnVuaworNjg3MyBmZGQxMjlmMDU3NGVkY2M2MTdiOWVhMDA2ZWM2NTk3ZmZiMWFhNGIzIGxlZ2FjeS10cnVuaworNjg3NCAwOTE3NzVhNWUxOWIzNWU5NDQ1MWIwNDcxNzYxYmU2MzRlN2IxOTdhIGxlZ2FjeS10cnVuaworNjg3NSBkMTZiODYyMWEzZjBlYWRhMzkwNGIwNmM1ZDYzN2E5OWUwYmU1YTk3IGxlZ2FjeS10cnVuaworNjg3NiAxZDI3NWNkNDJjOWIxODdjNjMyOWFjOGFkMjI1YjZmNzEyYjhmNzgxIGxlZ2FjeS10cnVuaworNjg3NyAzYjNmN2MzZjZkYTJmOGYwZDVlODRlYjZmNjE3NDViZDY3M2VlOGRiIGxlZ2FjeS10cnVuaworNjg3OCAxZTJkMjgwNjA2ZDFlZmY4ZDIzM2Q3MzhmYTk4Zjc1YmMwNTg2YTg5IGxlZ2FjeS10cnVuaworNjg3OSBlNTI4YzBhY2U0ZTVkYTlkMjFjYzNlMjg3YTUzNGIyODVkMTUwY2E3IGxlZ2FjeS10cnVuaworNjg4MCA2ZjAzMmVhMjY2NDJmNmRjZTAwY2VmYWU2MTc4ZDUwMmZiY2EyNzFlIGxlZ2FjeS10cnVuaworNjg4MSA3ZGRkOGIzZjY4MDJmMGUyZTkzMzllNzg2Zjg5ODQ1NDFhMmJlZDE4IGxlZ2FjeS10cnVuaworNjg4MiA2Yzc3MWVhMzhlZWU4NzI5YTEzMWVjYzQ5NjI3N2Y2ZjBhNWQ4M2E4IGxlZ2FjeS10cnVuaworNjg4MyBhOTgwMTFmMGY5Y2E1YjRhYjFiM2NlOGQxYjgxNWQ2ZDIxNjY5ZDc5IGxlZ2FjeS10cnVuaworNjg4NCA0Y2VmMjNlMWRjY2E4N2ZmMTg3MDhkN2JkNTdmNjkwZjk4MzM3YjY1IGxlZ2FjeS10cnVuaworNjg4NSBkNzM4NDkwYzhkYTE5M2MyZmNlYzBjMTg1YTg0Y2U0YjUzNTFhYmY5IGxlZ2FjeS10cnVuaworNjg4NiBhYzMzMjRlNjM4ZTk2YzI0MzhlMTU1YTI4NjljNGZhNmNmZTEwZmRlIGxlZ2FjeS10cnVuaworNjg4NyA3N2QzZDMwMTM2OTJmZGMzYjQ0NDEwYjFhMzk2MGQxOTQwMDdiMTM5IGxlZ2FjeS10cnVuaworNjg4OCAwMmE2OGQ2MjM4MDVjMDEyMTVlMTUxOTI3ZTMyYzQ2NGI1MTU4MjVhIGxlZ2FjeS10cnVuaworNjg4OSAzZGJlZDBmZjljZjIzMzRkNzYyN2ZiNDk3ZGU1YzNmYTdkNGVmNTZmIGxlZ2FjeS10cnVuaworNjg5MCBmY2U0Zjg3ZTU5NzQ5NDdiODEzZTUwNTIwNWZkZGYyZTg3ZTc2NWJjIGxlZ2FjeS10cnVuaworNjg5MSBjMTQzNWM1ZGEyODE3YjMwNjQ1OGVlZDIwYjI3OGQ5OWNjNGRjMDJiIGxlZ2FjeS10cnVuaworNjg5MiBmNDFhYjcxM2Y3ZWFiZTkzODFiN2FmMTA3NmU5M2U0NzY1MjAyZTY1IGxlZ2FjeS10cnVuaworNjg5MyAyZWFjZDJjOGVhYmZmNDM1NTQ2NzBlYTc4ZTM4MzlmNzlkNmI5Y2VlIGxlZ2FjeS10cnVuaworNjg5NCA3ZmZmZjY5NWYyMWRhNzcxOTRiYzVmNDdmMDAxNjhhMmVkMGMxZGQxIGxlZ2FjeS10cnVuaworNjg5NSA5M2QwNWUxNzgyMTY0ZGY3YjBlN2MyZmJlNjQzMDlhZGVhMjZmZWZiIGxlZ2FjeS10cnVuaworNjg5NiBkZDVlOWU4NTcxODY1OWQ2NWM0MWExODUyODdkM2FjYjEzMzU3N2NiIGxlZ2FjeS10cnVuaworNjg5NyBlZjc2MDRjMDc4Nzc4MWI5MTNlNzBlNmZlMDE2OWI5MTc2ODBkZTBhIGxlZ2FjeS10cnVuaworNjg5OCA0ZjZjNTYyOTJkMzRmNmJkZTU4Y2VkMTY2Yzg5NDdkMTM3NThjOGFlIGxlZ2FjeS10cnVuaworNjg5OSA1ZTAzODg1NmZhNTY4ODZmYjZiZjgyMGVhMGQyNjE1OTg2MGRkOThjIGxlZ2FjeS10cnVuaworNjkwMCA3NWFiZTczN2U3MGI2MTcxOWQxMTFmNzA5N2QzZjRhNTczMGMzZDkzIGxlZ2FjeS10cnVuaworNjkwMSA5YzdlZjAzMGJlYzgwMTFhM2IyNGY2MTMwMGUwNGFmMGU1NjczZTgwIGxlZ2FjeS10cnVuaworNjkwMiA5MzhiZTdhMzEwNmYyODViZDcyYjUwNDQ5Zjc3ZDc2N2Y4OWE3MDhlIGxlZ2FjeS10cnVuaworNjkwMyAzNGVlYjYxZjEwMjgzODZkOGE1MjQwMzAzNWJlYWFiYmQ3ODc0ZDE3IGxlZ2FjeS10cnVuaworNjkwNCA5Mjc1MzIwNzE0OTA0NDEzMWVlMmE3NmUxNzdjNWJkMTI1MjdlODc2IGxlZ2FjeS10cnVuaworNjkwNSBmMmY5NDZiZDdmNDdjNWM5YTYzNWE5NjhhZjQ2NWRjNzkwOGYxYjI4IGxlZ2FjeS10cnVuaworNjkwNiAxY2NjZTVlNGY4MDZkNTQ5YzFhYTNmYWI5YzQ4YTcwOGE0YzQ5ODYwIGxlZ2FjeS10cnVuaworNjkwNyAzNDBhZGZhYTk4NTQzZjAxOWViMGZlZTg2N2FkOWYyZmZmMGQ3ZmJiIGxlZ2FjeS10cnVuaworNjkwOCBhYzJhNjI3Y2UzYTdlZjc4MDM3ZTkzYTNkZDM4OTdhOWIyNzMxNjgxIGxlZ2FjeS10cnVuaworNjkwOSAyNWM1MzI4Njc2M2QwMzU5ZWIzMjM4MmYwZGM0MDI3NWI1ZmExOWVkIGxlZ2FjeS10cnVuaworNjkxMCBhMzYyMzU2MzEyNzM3Yjc3Yzk5YjI0ODA3OWM4NTBmNmNlZjdjNjI4IGxlZ2FjeS10cnVuaworNjkxMSA3ZGU0NTdiZGM5NDY2NzkzODY2MTRmZTIzYmYyMmU4ODVhYWE2MGEwIGxlZ2FjeS10cnVuaworNjkxMiBlODhiMzIxNWU5NGE1OTAxOGI4NGYxYTk2NTc3YmZkMzFjOTcxYjU3IGxlZ2FjeS10cnVuaworNjkxMyBmYjEyMzdiZjcwMjJiYjc3NzM5NzhkYjMyMTBhMmFlZTk4MDc3YTdjIGxlZ2FjeS10cnVuaworNjkxNCBmY2UyOTZkYmIwM2UxNjk5ODEwM2I3YTAzZWJmNTIyOTE4NTI0MGU1IGxlZ2FjeS10cnVuaworNjkxNSA3ODAxMGNjYjhhNDYxODgxZWJjYjU1NDM2YzgzMzA0ZmZmYTMzYzYzIGxlZ2FjeS10cnVuaworNjkxNiAwNTQ5ZTM0MjhkNTc4MzVkZDVhY2FkN2E5MGU3ZGM5YWYwZjNhZDEyIGxlZ2FjeS10cnVuaworNjkxNyAxYzI3NDQ5MTMwYmE0NDVjMjExMDE5MzExYjIyOTM4YmM4MTUyZDEwIGxlZ2FjeS10cnVuaworNjkxOCBmYTlhYmY5YTg2MjRlNmY2ZTc0NWFlMTVlY2Y0Mzc3ZWMzMjJiOTkzIGxlZ2FjeS10cnVuaworNjkxOSAwMmIxZjA4ZTMwYTAzY2FlOTRmYmY3MjU5OWNkNjI3ZjcyNWNjMTk0IGxlZ2FjeS10cnVuaworNjkyMCA5NDUyMTg4MDg3MWQxNjJiZGNmOWZjMzViODlhMDRmZDNlZGVlNzRjIGxlZ2FjeS10cnVuaworNjkyMSAxYmEyMmY3NDk0ODlhNDM1NGE3YmMzNjEyOWQwNDA0MzJmZmExM2UzIGxlZ2FjeS10cnVuaworNjkyMiA4NWQzODQ1NmFkZjA5NDg1YjQwNDJiMDBhYjNmOWE4ZWU3NjQ3Y2MwIGxlZ2FjeS10cnVuaworNjkyMyAxZmI5YTU0ZTRhOWMxNTdiZGE0YWYzNTI5NTc4MmIwYzM0MWZiMGJmIGxlZ2FjeS10cnVuaworNjkyNCA5MWM2OTY0NTdmZDRlZDJjZDMxNGIwYjZhMGVmMDUwMzhmMjhiYzc5IGxlZ2FjeS10cnVuaworNjkyNSBjNmZmYjRmYzRkYTQwNjYyNDczMjEzNzA1NzdmZmExZmNjMzJiZDdmIGxlZ2FjeS10cnVuaworNjkyNiBlZGFiMDk3ODgyZDgwZTQxYmQ2Yjk5NDY4Mzg0YTk3Y2I2NjUzZjJhIGxlZ2FjeS10cnVuaworNjkyNyBkY2M0Y2Y5ZmE2MmE4NmNiNjk0ZDEyMzU1Mjk1MGQzYzZmN2JiNWI2IGxlZ2FjeS10cnVuaworNjkyOCA0YzE2MTU0ZmZmYjk3YjQ2ZjI1ZGM1MjBkY2M0NzE3MmFhODI0NzEzIGxlZ2FjeS10cnVuaworNjkyOSA3ZWVlZmQzMjY3ZDQ1MGE3Mjg5NzBlMTk4N2Y5MzhjN2I0OTdkOWE3IGxlZ2FjeS10cnVuaworNjkzMCBhY2IxOTg4Yjg4NTJmYjg5NzZhMDc5Zjk5ZjRlZWUxNjAyNDkwNDg0IGxlZ2FjeS10cnVuaworNjkzMSBhYjYwYzU1ODVkMWIwMDVjZGM1NGJhZGZkNmViMzQzZjZkOGY1ODg2IGxlZ2FjeS10cnVuaworNjkzMiBkODc1OWQwYjVhNjdjYmJkMGEzYzBlYzZiYmE1ZTU3YmY5YTY0MTA0IGxlZ2FjeS10cnVuaworNjkzMyBjOTFhYWNiZjhlZDQ2NTI4OTQwYmIwNmU4NmNjY2QyY2U5YzAxNGExIGxlZ2FjeS10cnVuaworNjkzNCA1MTk3ZTBmM2YwZmZjZWQwYzllYmI4NjY0YTIzMTQwOTk4ZTdiZGFhIGxlZ2FjeS10cnVuaworNjkzNSBhODI2NGQ3MGYyODFjNjA5OGJmMDJiNWMzZDczMTVmOWQxNWFiMGVmIGxlZ2FjeS10cnVuaworNjkzNiA2Zjg5YTQ0YTg2MWM3YmQ5YTJhNjgyNjI0MTc1NDhkNWUxOGMyZmRhIGxlZ2FjeS10cnVuaworNjkzNyBjNmE0Nzg2ZTdmOGVhODMwMWJhYzE0YTc1OTViYWU4ZGZkNGY3ODEzIGxlZ2FjeS10cnVuaworNjkzOCBiYWFiZmI1ZDYyYTg4Y2U0MWE0ODkxZmVhYWRhY2FmY2NlYTZjOGU0IGxlZ2FjeS10cnVuaworNjkzOSBiNTFkYzJmYjQ4ZTE4MDRhZGQ1Nzk5MTc4ZjViNjJjNWRiZDk3NTNkIGxlZ2FjeS10cnVuaworNjk0MCA4ZDA1NmY1M2E3ZjYzMjVhOTA3ZWMzNWJjZDZjZmE1YjQzZGIzMzkwIGxlZ2FjeS10cnVuaworNjk0MSAwZDYxZjZjMzhiMzdlMjU3OGE0OWZhOTc2N2E0M2I1NDRjMGQ5OTgxIGxlZ2FjeS10cnVuaworNjk0MiA2MDBmNWI4YTE2Y2IxYzQ3NWJkYzI5YzUzOGU4ZWVmZTUzZGZiN2IxIGxlZ2FjeS10cnVuaworNjk0MyA1ZDdmYTNmMmNlYzNkNTYxMTZiNmE2OGE5MjJjM2I0MjQ0YTU0YzcxIGxlZ2FjeS10cnVuaworNjk0NCBkOWM1MTU1YmRhNTAwMmYyY2U4OGM1NDllODg3Mzk3ZmNlZTg5MTcyIGxlZ2FjeS10cnVuaworNjk0NSAxMjJjOGZkZmU0ZWY5MWFhNzViZGQwMDI5ZDNhMGI5NWNhYjU4MzFiIGxlZ2FjeS10cnVuaworNjk0NiBmNjM0NjA5ZjQwMjhhNWUyYzc5MWUwZDIzZTdhOTdiNDQ0ZDFlMmZhIGxlZ2FjeS10cnVuaworNjk0NyA1NWZlNjRjMjExNDVjZDg5MzI3MzkxY2VhN2UxZGRlYzQ3NTZlOTY4IGxlZ2FjeS10cnVuaworNjk0OCA0ZDZiYWJmMmU0ZTE5MTNhZDk2YWI4ZGRkYTJmYjNhZDUyNWI1ZTY3IGxlZ2FjeS10cnVuaworNjk0OSBmYjJkMWQ1ZTE0MWFhNDZjZGJhY2E0NTgwZGY5NTg5NTMyMDI2OWQ0IGxlZ2FjeS10cnVuaworNjk1MCA3ZTVmMDM5NTMxMTA1OWJkNDRmNmUyZTNjY2EwYzIzYmQ4MjBmYzRkIGxlZ2FjeS10cnVuaworNjk1MSAyZmRiYTEyNjc2MTM5ZWY1ZmQxYWY2NGY3OGIxZTYwOTA0YTQ5NWEwIGxlZ2FjeS10cnVuaworNjk1MiAyNjdhZTU4MjMyZDlhODZhOWVhYzU1MTQzMzJmMDljOWNmY2I5MWQ2IGxlZ2FjeS10cnVuaworNjk1MyAyMzQzODAzMzE4ZTRmNmY1NjMyMTRhMGMwODFmNDg2MmE2OTI4M2IwIGxlZ2FjeS10cnVuaworNjk1NSA5ZTg1M2E1ZjA0ZmY5ZWMxOTIyZWFjYTcwMGE0NDE2YzIxODQ5MmE2IGxlZ2FjeS10cnVuaworNjk1NiBkZDcwOWVkODIyNjI3MGRlZmUwMWRiOWNmZTk3MzQ2MmNlMjNjM2UwIGxlZ2FjeS10cnVuaworNjk1NyAzMjRlMWUzNmU2NTJiYzIxYTM1ODQxNjVlMDFhMWZjZmQ5OWRiY2Y4IGxlZ2FjeS10cnVuaworNjk1OCAxZmVjODhiMjJlODdmODI0YzQ0MWVjMDRhZGVlMmI1YjBlOWViYzBjIGxlZ2FjeS10cnVuaworNjk1OSBhNjBkODUyMzdmZGI4MWVhNTcwZDA4NzNiMThmMTM0NWMyY2IxNzZkIGxlZ2FjeS10cnVuaworNjk2MCBkOTA0ZjUzOWZmZDljZThlZmVlMTBiMDEyNzg0NGJhZWViM2QzYmM3IGxlZ2FjeS10cnVuaworNjk2MSAzZDQzNTEwYjVlMTlkYTVhNjQ1OWMwZDczYWE2MzVhMGY1ZGZhMzQzIGxlZ2FjeS10cnVuaworNjk2MiBlMGMxYmQwYTc0YTkxMjc0NGNjZmI2MjViZWI2MzEyY2RjZGU5ZTc4IGxlZ2FjeS10cnVuaworNjk2MyA4Y2UxODUzOGUzYmJmYjFlNDI5OTYxMzY4NzBjNTIzMmFmOTUxNjk1IGxlZ2FjeS10cnVuaworNjk2NCAwZTYyM2U4MjMwMWYxZmIxNDZmMDUzM2FjYmU3ZmU0ZTM5NjQzNTIwIGxlZ2FjeS10cnVuaworNjk2NSA5NzRkYzM2ZmVjZDYyYzE2ZjZlMmNlYzllNGM3MTA5YmM2ZWExY2ViIGxlZ2FjeS10cnVuaworNjk2NiA2YTc1YjNjZjAyM2NmYzdhYzNiMTgwN2U3MTMxZmY5ZGE4NDcwY2JlIGxlZ2FjeS10cnVuaworNjk2NyBhZTc1ZDRhMWY1ZGRiMzU3NzVjNjlmY2JjMDBkZTdhZjUzMDY5YTA0IGxlZ2FjeS10cnVuaworNjk2OCA5OWU3MGM0NzJhMjAyZGE1MTI2NjRiZjZjMTk5MGM4MzAyNzIxYzU1IGxlZ2FjeS10cnVuaworNjk2OSBhOTU1NDkyNjlkZTJiMDMwMjQ5OGY1NmVhYmM2MGVlYmFjZDE1N2JkIGxlZ2FjeS10cnVuaworNjk3MCA1NjllM2FmNTIxODc1ZGVmZjY3NDZjM2NjOGJmMTUyMjczZTZiY2JhIGxlZ2FjeS10cnVuaworNjk3MSBlYWU4YWIzZDI0ZTAzMDA5MmUyNzRlNDFkYmJkODE3ZGViM2RlYzE4IGxlZ2FjeS10cnVuaworNjk3MiA5MzM1M2UxZDFjNzYwNGYwNzU3NTI0NTdiZTMxZTI2MmMyM2FhODA5IGxlZ2FjeS10cnVuaworNjk3MyBkODAxMjVkN2RjNzM0YTFmOWUxNDU5ZWZmODY0N2NlODBiZTU0MDhjIGxlZ2FjeS10cnVuaworNjk3NCAyMGZkOTY2NDg1MTA4ZGMyZTA4YTdjNGUxZTIyYzY3NzNiYjkxODFhIGxlZ2FjeS10cnVuaworNjk3NSA0YmEyMGY0NDY1NGJiZTdlMGNjNDkzODY5YTIxZmUyNjkxM2ZhZWM2IGxlZ2FjeS10cnVuaworNjk3NiA1NTlhYTQ3YjJlMmNmY2ZlZTY0YjE4ZjlmYzJjNzk1OWFmZTQxZTAxIGxlZ2FjeS10cnVuaworNjk3NyA5NDFiMDUxYWY2NzVlMmI3ZWU3NjU4MzgzOGJiNmM5NDMwNzQ0YjYyIGxlZ2FjeS10cnVuaworNjk3OCA2NWQyZDhlNjdkYTMyM2I3NGI3MmU0ZDgwNTUzNmZhYTZmZDI0YzFlIGxlZ2FjeS10cnVuaworNjk3OSA4NThmYjJlOWJjMTcyM2M4OGI5ZWU3ODE1YjExODU2NDIzYmY4YTRhIGxlZ2FjeS10cnVuaworNjk3OSBkYjQ5NDk0YzkzZGM3M2RlMDZkNTcyMWM3NGVhYjUzM2E5NDdhOTJjIGxlZ2FjeS10cnVuaworNjk4MSAyYjIxZWEyZjM5YjQ0MzI2Y2IyMGMxNWY5MDhmMDNmN2QwY2ZlODExIGxlZ2FjeS10cnVuaworNjk4MiAxODkyN2FiZGMyNjI4MTk0OGJjYjk1NDY0MmE2ZjhhNzQ1MzQ0ZmYwIGxlZ2FjeS10cnVuaworNjk4MyA3MTg3YzcwOWViZmRlYTQxNDdhZjlkMjU5NzA3NzEyN2UyODJjOGRjIGxlZ2FjeS10cnVuaworNjk4NCA5Y2E1OTQyNDAyMGUwMGY2YmM2ZDExNTE5Nzc2ZWM5NjkxMDdjNzMwIGxlZ2FjeS10cnVuaworNjk4NSAxMWUwYzIyMDg5OTk3OTg2ZDM4N2YwMWE1ZTJlNzJkMDY2ODc1ZTk1IGxlZ2FjeS10cnVuaworNjk4NiBkZjJjMjEyZTRlYTNlYmNhYmVlZjYwZWI4YjQzNjFhYWU3ZGJmMTZjIGxlZ2FjeS10cnVuaworNjk4NyAyM2ExMDRkM2JjZWRjNzVjYzc3N2M0NjMxZTJlZjRlMjczNzlhYzhhIGxlZ2FjeS10cnVuaworNjk4OCA4NDc0NDVhZWFiMmQxOTBhNmM2YjU3MjY2ZGZiY2ZkYTU0MTQ3ZDA3IGxlZ2FjeS10cnVuaworNjk4OSBmNjk3NmI5YTg1YTQzZWY5YjQ3ODVhZTU1MjIzMWExMDU4YjJlODMxIGxlZ2FjeS10cnVuaworNjk5MCBhNzU4NThmZWY1NTA3ZWU3YWZmYjk3YzMwOWU0Y2M5MTA2NmU4YmZiIGxlZ2FjeS10cnVuaworNjk5MSA0YTdjN2RkN2IxZjA1NjMzOTM2MTczNmJkYjEwNTBhNWIwOGM4MGMyIGxlZ2FjeS10cnVuaworNjk5MiBhNGQyYWFlNzU3YThkNTE3NGE5ZjIyZjJkNjFhNmI0MDEwNjhlNTJmIGxlZ2FjeS10cnVuaworNjk5MyA2OTFlMzkyY2FkMzQwYmRiZjg5OTk4OWMxMTA4YzNkOGI1MDE0YTZhIGxlZ2FjeS10cnVuaworNjk5NCBmZDUyNGEwMDFjZTlmZWUyOWY4MTdjYWU1N2NiMjY5MmI1ZjJiMWNlIGxlZ2FjeS10cnVuaworNjk5NSBiNDA2M2MxMDFjMmNjZTMyNDkzOWY3MmJhMzI5Nzc5ODExZjU2M2QwIGxlZ2FjeS10cnVuaworNjk5NiA5N2E2MTc5NWExNjlhZmY3ZTFlYTdhY2RmZDhmMDhkM2IxNDAzODg2IGxlZ2FjeS10cnVuaworNjk5NyBkMjVhMGNjYmZkNmI4YThhMDg5YTU1YTlkMTk5MjcyOTNhYWVhNDdhIGxlZ2FjeS10cnVuaworNjk5OCA0ZDA2ODFmN2NmNmI2YjRiNWU0ZjExOTkwMTViNzZkYzJhZGU1MDE1IGxlZ2FjeS10cnVuaworNjk5OSBkMGMwM2MzMmU4ZDk0MzBkZmNhNDcwZDIzZmRkN2Y3NjU5ODBmM2RhIGxlZ2FjeS10cnVuaworNzAwMCBmZmVmMmMzMGRjNDhmZDA3ZGE4MmNjYTI4OGVkNjU3MzE0ZjBmMmIzIGxlZ2FjeS10cnVuaworNzAwMSBkYjU1YjgwYWFmMTAzOTRhNmU1ODk4YThiNDU5N2E5YTViOWRiZjFjIGxlZ2FjeS10cnVuaworNzAwMiA3ODk0YTBjZDhjNzU0Yjg1YzVkNzhmZDE4ODU2NmMyN2E1NzcyNTU5IGxlZ2FjeS10cnVuaworNzAwMyAyODI0Y2JkYmUxMmM1YmQ2N2E0M2FmZThmZTE2YmU2OTRjMzk1YzM4IGxlZ2FjeS10cnVuaworNzAwNCAzMzc1NjIzMzBmZDBmZDU5MDNmZDQxMmVhZGUwOThjMzcyZTFhNmZmIGxlZ2FjeS10cnVuaworNzAwNSA4MGJjYjAyZWJmNGVmMGFmNTQ4NjE5YzkxODEyMTEzYTlmZGY4OTI5IGxlZ2FjeS10cnVuaworNzAwNiA5NjAzYTYwYzg2OWJlMjkyMmVlOTg0MGE0OGNkYmVmOGJkZjBjMDYyIGxlZ2FjeS10cnVuaworNzAwNyAzMGNlY2EzZjEwNWIwZGE4MTA1NDMyMThkNmFhNzA0MDM0MmY5MGY2IGxlZ2FjeS10cnVuaworNzAwOCA2MmNlZjdlODk2YjZlY2FiMjcwNGYzMjkwMjdkMDk4ZDczYzBkOTMyIGxlZ2FjeS10cnVuaworNzAwOSBkOTBkN2I1NDFhZGFiMmY2ZGExN2RkNjgwZDI1OGI3MDQ5YzQwNGRkIGxlZ2FjeS10cnVuaworNzAxMCA5NDIxZDJmNjMwNzdhOTUyZjY2NmEwYjAwMzMzYzg5MjY4MTE4NmU5IGxlZ2FjeS10cnVuaworNzAxMSAwNTc1MDgzOGY4NDAzZjg4NjM1ZmY3N2RjYWI4NDRkOTIzODYxZTM4IGxlZ2FjeS10cnVuaworNzAxMiBiZjM3NjhiZDMxZjJjOTZkNTc0YTY1NzU5NzdkYTU3NDY5YTg1ZjU3IGxlZ2FjeS10cnVuaworNzAxMyA2NTE3MGRhMWQyY2E1YmM0YjMwY2Y2OWNmYjEwNDFjNWI1MjMyNzk0IGxlZ2FjeS10cnVuaworNzAxNCA0N2U3YzQyYjlkYzYzNTNmZGZkODgzZGU2NDk1ZWRhNzRjMGVlOGVkIGxlZ2FjeS10cnVuaworNzAxNSAxZjRmMWJlOGEzMzliOGNlN2VlNTE3ZTA4ZDA5MTMxODI0ODliNjU5IGxlZ2FjeS10cnVuaworNzAxNiA1NzQ4ZDVlZTE5ZWQzY2MwOTk0NTc0MWMxZTE3YzcwY2U5YzBiN2Y3IGxlZ2FjeS10cnVuaworNzAxNyA2NTIzMDNlZjkyNmIxZjYyZDJiNWU4MGNlYmU0MGNiOTdlYTAyMTBkIGxlZ2FjeS10cnVuaworNzAxOCBlNTIwNTQ0NDBlZmM1YjAyZmE5ZmQzNDYwMzIxNDMwY2JiNWFlOTlhIGxlZ2FjeS10cnVuaworNzAxOSA4ZDBiMDBlZDhjMmI1NmU2N2IzYjhjODFmZTJhNjNlNzlhY2Q2Zjg4IGxlZ2FjeS10cnVuaworNzAyMCA4MjBiZjFhZTdlMjU4MmRkNWYyNTQxMDI1NzJiMWQwMDk4ZWY4ZmNiIGxlZ2FjeS10cnVuaworNzAyMSBjYzY1MjFhMmNlMjFlZTg1ZmY2MWZmODg1ODEyMjY5MjdjZjdkZjgyIGxlZ2FjeS10cnVuaworNzAyMiA1NGM4MDA4ZGU4N2JiYjUzODQwZjJhODdjOWVjY2QwYzU3NjRjZmZlIGxlZ2FjeS10cnVuaworNzAyMyBiZDU1MWZiYjk1OTY1ODdiOTdmMTY5NjM1NTNhZjMzMjA3MmI0ZDgxIGxlZ2FjeS10cnVuaworNzAyNCBkYmM5ODgzNGVmZjJlYTU2ODk0YmM0MDhiNTBlYmU3YzcwZjcxNjQwIGxlZ2FjeS10cnVuaworNzAyNSBmMTI0NDAzNmViYWI2ZTM3MTE4OTJjOWMwZTdiNGUxNjMzZmQwZjY0IGxlZ2FjeS10cnVuaworNzAyNiBjZWEzMThiYjlkMmY0ZDhlNDcyNTRlZWU5YTQzYWQ1OGQyMjdlOTNhIGxlZ2FjeS10cnVuaworNzAyNyBlZmIyOTM4Y2U2NzYzZmNmMTU2NDk5ZDVhMTlkMTIzODYwZDRiMTZlIGxlZ2FjeS10cnVuaworNzAyOCA4OTAwMjEzNzY0YmExOWQyMzczOWRlNzRhOGQ0MmNlMzFjOGJlZjRkIGxlZ2FjeS10cnVuaworNzAyOSBmMDMxNDY2NTMwYWY2NzI4MzA4NGFlYzcwMDdkYjBkZjU2OWM1MzhmIGxlZ2FjeS10cnVuaworNzAzMCAwNDUwNzQyZjM2ZjRmZmQxMGY5YWZkNDQxYjU0M2ZlYjQzYzkzYjE5IGxlZ2FjeS10cnVuaworNzAzMSBiMjEzZDI1OGZmMzI3ZGVkNjM2ZGQ5MGUxZTRkZTQ0OWU3OTIyZmRjIGxlZ2FjeS10cnVuaworNzAzMiAyYzBjNjgwNDA3YjJlYzRjNDJiMDg4YzNjYjQ4OWVhMjMzZmJiNmYzIGxlZ2FjeS10cnVuaworNzAzMyBkZjlkMWViY2Y3ZjMwYmExODFjZWJhZGY5MTZkZDAxNmU2Zjk0NTk0IGxlZ2FjeS10cnVuaworNzAzNCBhZGJjYzBhYjllYjZhZjQwMWE1MmJmZDE5MjA4Zjc3ZGRiMjk1MTFhIGxlZ2FjeS10cnVuaworNzAzNSBiMjE3ZGEzZjliNTRjNjM2NDIwZTkxMTUxNGQwOTUwMjBiZDUyZGNjIGxlZ2FjeS10cnVuaworNzAzNiBjNzEzZGU3MmU3NmVjNDMyOWE5MDVkYWI0MjVhYjRmODk2MDkzYWU1IGxlZ2FjeS10cnVuaworNzAzNyBkMDMwZWE1MzNlNjNhZmFlODcwZGI0MjhhN2VhMTU0NWZmN2NmODc3IGxlZ2FjeS10cnVuaworNzAzOCBlYTQ1ODkzM2ZjMmFmNmIzOWRkMWRmNzg0NDdlMWQ5ZTc1YzRhYThhIGxlZ2FjeS10cnVuaworNzAzOSA3NDVjN2M3MGJlMzEwOGIxNzc0ZjQzZDBiMWE4NGEwNWE2YzZiYmM2IGxlZ2FjeS10cnVuaworNzA0MCA3ZjQ3ZTJiNmM0YTQ5OWYyYjBkNzk4N2JkMTc5ZmQwNjEzZWYwMjlmIGxlZ2FjeS10cnVuaworNzA0MSA2NDAzYzk0ZGU1MGRjM2MxZmU4NDg5OTkxOTAwMzNlYjcyMTE3ZDZmIGxlZ2FjeS10cnVuaworNzA0MiBhMzYwZGMxZmE1NTgyOTdlN2IyNmYyNjQ3NjIzNDM2ODEyOWEzZGYwIGxlZ2FjeS10cnVuaworNzA0MyA0MzQxNTc0ZTE2M2IzZjQ5MTUyNjU5MTdlNzNkNDUwY2Y3Yjc0N2M1IGxlZ2FjeS10cnVuaworNzA0NCBlNzA4ZjU2OGI4YjczZDMwZjQ5Y2M2MTVhMzViMGRkMGZlYTVlNDA3IGxlZ2FjeS10cnVuaworNzA0NSA3YmI4NGEyMjA1NDM1MWU4MzIzNjc3ZmM2YTYxZGRmZjI2ODc2YWM4IGxlZ2FjeS10cnVuaworNzA0NiBhMGVjOGE5ZGI5NjA1NGM5ZWVmNmFkYWMwZDYyYjQxMTM0MGM2OTk1IGxlZ2FjeS10cnVuaworNzA0NyAyNjI2ZDA2YjNiMDFmN2UxNmVjNmI1MjdjZjE4OTE0MzcxNWFlNGY5IGxlZ2FjeS10cnVuaworNzA0OCA3Mzc1OGRiMmY0NjQ2ODk0NzUwNzIwNzllNTVmNTI5OGQ0NDlhYTRmIGxlZ2FjeS10cnVuaworNzA0OSA4MTg2MDM5MDU1ZWRhM2QzZDliM2EzNzViM2IwMzNhYzk0OWQ0NjcyIGxlZ2FjeS10cnVuaworNzA1MCBhYTk2NTA4YTY1ODc5MGZiM2EwNTJkNWExY2E2ZjAzNmRlOTkwMjZkIGxlZ2FjeS10cnVuaworNzA1MSBjM2IwODk1YzkwZmJmMDg3ZDg2OTMzNzBjZjA3NDU2YmQ0ZDA1YmVjIGxlZ2FjeS10cnVuaworNzA1MiBmYWU3OGNmODU0MWQ0YmI3ZWNhOGRmZmQ5NzdmY2MzOGYxNjJjMGEyIGxlZ2FjeS10cnVuaworNzA1MyA2ZjFhMTIwYWU5YzA2MTYxNGE5ZWRiMjk0NThhZDMzMjgyYzJhMzFjIGxlZ2FjeS10cnVuaworNzA1NCBlM2Y3MWNlOGU2YmJiNWYzOGUxODU2OTdjNmNmNDA0MThhNGE1OTQ4IGxlZ2FjeS10cnVuaworNzA1NSAxMWJkNGY0OTc3NDJkODI3YjczN2MyNjliODhiOGFlNGUzMzVkZmQ5IGxlZ2FjeS10cnVuaworNzA1NiBjODM3ZjI1YzdlNDc3NDcyNDFjM2RhMDY1YjA3MTM5ZjgyNDZiMWEyIGxlZ2FjeS10cnVuaworNzA1NyAyZjhkOWMyMmRlNjJlMTcxOGMwOGMxODcxMGI2MWMyOWUwN2I2YWRjIGxlZ2FjeS10cnVuaworNzA1OCA0ZjY0NGVjYzViYWM0YWFhMjg5MjMzMTIyZDg2ODAxN2MxMWUyYTQxIGxlZ2FjeS10cnVuaworNzA1OSAzODcxZWJkMTk2M2M3YWQ4MWI3ZTVlNTc4YjYyY2EyYWJhZTg1N2E3IGxlZ2FjeS10cnVuaworNzA2MCA0YTgxNjViM2I2NjAzZDliMzE4YThlZTE2ZjczMzNkNTMxNTg5MzE5IGxlZ2FjeS10cnVuaworNzA2MSBiM2QyOTkwZDhhNGFmYjY4YjAyOWZjYzZmOWUyZWMwMjI0ODRiZWUwIGxlZ2FjeS10cnVuaworNzA2MiAwOWQ5NGU5ZWIxMDEwMDE5ZDFiM2QyN2Q1MjYyYzljNWY1NjgwZWM1IGxlZ2FjeS10cnVuaworNzA2MyA0ZGM2N2ZkZDllMGI1ZTBlZGMxMzUyZTU3MjNlOGMwMmQ0ZWNmMzMzIGxlZ2FjeS10cnVuaworNzA2NCA5NjFiZjlhMjAwZGQxODQ0OGExZjliZTIyOGU1NTBkMDIzMzE3YTk3IGxlZ2FjeS10cnVuaworNzA2NSAyMTI0ZjRiOTdiZGQyYmI5N2FkNWJmNDk4NGFhZmE1MGU3M2IyN2FiIGxlZ2FjeS10cnVuaworNzA2NiA4Y2RkOTRhM2QwMmQ5OTZjZWJlZTM4YzRkMjJlNjhlYjY2YWM2YjhkIGxlZ2FjeS10cnVuaworNzA2NyAzYmY5ZTJiZWFmOGMwMTk3MzhmNTVjOWFiYTYwYjM1ZDdmODQzMmI0IGxlZ2FjeS10cnVuaworNzA2OCA3MmQwZGZiOTE5ZmUyOGEyMmVlOGEyZDY0MGM1Y2FlZTlhMTA4NDA5IGxlZ2FjeS10cnVuaworNzA2OSA0MTg1NzA3NWQ0NWJhYzgwMDdjODJhMDQyYTY5ODg2NWIzZjY4YzA2IGxlZ2FjeS10cnVuaworNzA3MCBmOGYzZGEzZmRhZWQ1ODI2ODViYmQwODYwYjIxNzAwMmUzMTJiNzUwIGxlZ2FjeS10cnVuaworNzA3MSA0ZmExOTY1OTU5MWVmYTNlZDhjZTgyMzg2N2Q4OWNlYWQ0YmMwZjg1IGxlZ2FjeS10cnVuaworNzA3MiBlNzRiNjA3YTU5OTZmYTk5MjIxM2JiOTUzZGFjYjUzNzc0OWUxODZlIGxlZ2FjeS10cnVuaworNzA3MyA4ZmRiMDUzOWNmYjE1MGExMDc0N2NkMDExYjU4OWQ0N2YzMjAxMTBlIGxlZ2FjeS10cnVuaworNzA3NCBiMmExYzk5Y2E2NDJiOTkzYThkM2M1MTM1NmM5OTkyOGYzNjRlODFhIGxlZ2FjeS10cnVuaworNzA3NSBkMzYyNTBhZWZiODI1MjY3NGMyYmZiMjBlMzY3ZDgwZTgwYTY4ZDYxIGxlZ2FjeS10cnVuaworNzA3NiA3ZDU2YjQ5NmM3ZGMyMWNkZDFkMTc5NjQwM2QyMGRjYWJiMzAzNjU5IGxlZ2FjeS10cnVuaworNzA3NyA3YzY4MDJkODYyMGY0MmU3YTUyNjFkYmYwODQzODMwYjUzNDI1OTUzIGxlZ2FjeS10cnVuaworNzA3OCA1Yzc0MWQyZDk3ZjViMTQ1NDk0N2Y4Zjk0OTA2OWYzZWZkMDY0ZTAyIGxlZ2FjeS10cnVuaworNzA3OSAyMzY4MzUzZDk4ODc1MzAxOTdlM2FhMmEzMmFhZTczNGEyYTFjYmQyIGxlZ2FjeS10cnVuaworNzA4MCBiOThiNDZkZDQzNjdlMjc5NjAxOTc4YTE5NTliNzc3ZTc2NGMxOWM2IGxlZ2FjeS10cnVuaworNzA4MSA3MzliODQ4MGYxYWMyNzA2YTZiMmUyNWRhODBkZmFkYTA4ZTM3NTg2IGxlZ2FjeS10cnVuaworNzA4MiAzM2E4ZTY1ZWVmMjMwOTAwMDEwNTQ1NzkxNjQyN2Q4NTU3NGIwZGE1IGxlZ2FjeS10cnVuaworNzA4MyAzZWU4N2QwODIxNDdjMTY0M2JiZWYwNDNhZTljM2M5NGU2OTNjMzMzIGxlZ2FjeS10cnVuaworNzA4NCA1M2VmNWI1MWE0OGI0ZTBlNzAyZjZkMmM0YjhiYjk3NGZlNDg2NWZmIGxlZ2FjeS10cnVuaworNzA4NSBiYjQwOTRmZjdiZGZlZDRjY2MzYzUxZDQ3ZjU4M2JiNTJjZDBhM2M5IGxlZ2FjeS10cnVuaworNzA4NiBjYmM2NjlmZTM3MGFiMDViNWU0NmZhNDJiYTFjMmU5ZWEzN2JmMGE3IGxlZ2FjeS10cnVuaworNzA4NyA0ZGUwNWNiZjVhZDE5ODdmN2EzYTQyMmRkNTEyOGY1MThkMTk5MGM2IGxlZ2FjeS10cnVuaworNzA4OCAxMzIxMTEyZTllM2E0Y2U4M2M0MWUzNTZhNjgzMDVhM2Y1NzJhZGYyIGxlZ2FjeS10cnVuaworNzA4OSA2ODMwNzY0MzJiN2Y5ZGFlNmRhODQ1Y2QzNWJlYTVkMTA1NGY2MzEwIGxlZ2FjeS10cnVuaworNzA5MCA4NzYxNzcwMWQ3MjFlNzJkNzcxYmMyZWU4OTBiZmYwMzY5Yjc3ZWJkIGxlZ2FjeS10cnVuaworNzA5MSA5Y2VmOTY5YzQ1ZTQ1MDYxYjNiODIzNTBmZDUzODk5ODQ5MGVjZTg1IGxlZ2FjeS10cnVuaworNzA5MiA4Nzk5OWRjNGQ3OTgwMDE5YzIzMDVhODlhMDNhOWNjYjE5ZWJkMzA0IGxlZ2FjeS10cnVuaworNzA5MyAwNmM3YzdkZTY5NzY4OTdiM2QxYTRjZmJjMTM3NjUzY2FhMzQ0MjZhIGxlZ2FjeS10cnVuaworNzA5NCBjM2NhMDA2NTU0ZDQ0NGFjNjY0OTIxZmM4MzQ2ODFhNmM3ZjAyOWE4IGxlZ2FjeS10cnVuaworNzA5NSA5OGMwOGYwYzRhMmVkNmJjOWUyNTM3MDNkM2RjNWE3MDQwYTU1ZGQ0IGxlZ2FjeS10cnVuaworNzA5NiBhMmYxNzFjZTI1ZjgxMDVmZWIwNmI0YTQ4ZmZhNmQxOGQ0MWI1Zjg5IGxlZ2FjeS10cnVuaworNzA5NyA2OGIyOGI4Y2EwNzcwZTRhNTZiMmVhYjE2MjZjODYwNzUxMDYxMmE4IGxlZ2FjeS10cnVuaworNzA5OCAxZmFiOTgxNDY1YzhiZWQ0ZjQzNGEyOTk0OTEzNWEzNDcxNzM1Y2M5IGxlZ2FjeS10cnVuaworNzA5OSBiMTFkOTZjODA3NWM1NzQyZGNiZjc2ZDQ2NDdlNGQzOTU4MzA0NDlmIGxlZ2FjeS10cnVuaworNzEwMCAyMDI2MDJmYWVmYzc4MzJlZWJjZDEyOTIxMjkyMGMwMjI3MGYwYTk4IGxlZ2FjeS10cnVuaworNzEwMSA5NGNlM2UwMWMzMGNjMzAwZGI4N2FiYTcxNGFkYmE0ZjFiZThkM2E1IGxlZ2FjeS10cnVuaworNzEwMiA2Yjc2NTQ1M2IwNDEwZTExYjJhNzUxNzRmMTdmZTUwYTM3ZDVlZTcwIGxlZ2FjeS10cnVuaworNzEwMyA3ZGY1ZDRjZjgyNzc4YTQyNzY4MDY2ZDk3YzQzMzBiNzQ3ZTQ0ZmNjIGxlZ2FjeS10cnVuaworNzEwNCBmZjI2ODczMjY4YTg0MmNkYjYwMzMyNjJjMjhhMThiNjRmZmJjN2M3IGxlZ2FjeS10cnVuaworNzEwNSAwNDVlZDgzMGMwMzVhMGQ1M2FlZGQ5N2I1Y2JkYjlkMzAyMTRmNDg2IGxlZ2FjeS10cnVuaworNzEwNiAyNjQyZmZjYWMyYjRkY2MwYjExNGI0ZDhjZmE3MzZiMzg2NmVlZDBlIGxlZ2FjeS10cnVuaworNzEwNyBjOGQyNDdmZjhkMmY4M2I0Mjg0YmZjMDZlYjgzNDA4OWQ1YzJlMmZlIGxlZ2FjeS10cnVuaworNzEwOCAzZjEwZjk5OGE1ODcxZGNjODVlNDNkOWQ3NWNkMTY5ZTg3ZWJkOWM4IGxlZ2FjeS10cnVuaworNzEwOSA5ZmFjYmFiMTUyY2RhYjBlY2FiYjgxODJhNGYxNTYxMjQzOWIxNGVkIGxlZ2FjeS10cnVuaworNzExMCA0OTc0NWRkYjRmNjk4YjViZjllM2I4ODQwMmUyNTVjOGRjMjBkMTMzIGxlZ2FjeS10cnVuaworNzExMSBiZDI4OTQ1Zjc1MmJiNjQwYzE2MzAwNjZkZTJjYjQ0OWJkNzk1MWMxIGxlZ2FjeS10cnVuaworNzExMiBmNTJjMmFhMDYxZjhjNjEzZDViNzk0NjRmNmJkMmFlZjRjYzZkNTljIGxlZ2FjeS10cnVuaworNzExMyA1ZjdkMjQ2YmJlYjdiNmViMGIyOWZlNTk3NzgyMDZkNDBjMDk5ODFhIGxlZ2FjeS10cnVuaworNzExNCA5N2VjOWRmYmIyYjZlNGFlODBlNTU2NDQ3ZmQ4OTExMDUwNGY3NjFiIGxlZ2FjeS10cnVuaworNzExNSAzNGRiOWEyMWJmYjFkNDgyY2FmMTk2YmVmZWE5NDY3ZTg3NzU5M2M3IGxlZ2FjeS10cnVuaworNzExNiA1ZjhmNjA1YWYzMzg0ZDUzNzA2YjcyMGNhMjZjMDQ4Yzc3YjQ2ZmY1IGxlZ2FjeS10cnVuaworNzExNyA0MzU5ZThkMzg5ZTZmZDg2YzQzZWY3YjFjYzRmMThiZDc3OGMyOTYxIGxlZ2FjeS10cnVuaworNzExOCA4ZDkwOWFlMWYwOTk2NGVjYjRiZDg3MWZhZTA1NzU2OGM2ZjQxNmQ0IGxlZ2FjeS10cnVuaworNzExOSBmNGJhOWUwN2Q5YmYyZjQwNWU2ZTNmM2I2ZTUyZmU4ZDk1NmQwY2E1IGxlZ2FjeS10cnVuaworNzEyMCA2OGM0YjA2Y2ZmZjcwOTU2YjQ0YmE3ODUyOWE1NTI1NjY5MmE2NDJmIGxlZ2FjeS10cnVuaworNzEyMSBmNGE2MGYyNjFmYmI2NmU0NTM3Nzg0ODE5MDQ3YWE0ZmJmMjVjZGRiIGxlZ2FjeS10cnVuaworNzEyMiBhYjYzNzQyNjhjYWE5MjQ2ZmQ0Yzg2ZTc4ODA5YWIyMGJkYmFkMjM0IGxlZ2FjeS10cnVuaworNzEyMyA2ZGQ4NTE0NDVjN2RjMGIxYzhiZjlkMGJiYmNhZDFmYWVjMThmNWZiIGxlZ2FjeS10cnVuaworNzEyNCBkYWIwMWI4NGFmZTY2NGQwZDQzYjFhYzE0MzMwZjVkNjRhNWQwZmEzIGxlZ2FjeS10cnVuaworNzEyNSAyNzQzNzU5ZTM5Nzk3ZmE3YWIwMzViNzNiODk3ZjBjM2M1YjJmZDExIGxlZ2FjeS10cnVuaworNzEyNiA2ZWZmZDEwZTcyMzNhNjg1OWM4NWQzOGUxZTgwOGI4YmU2YmY3MTgwIGxlZ2FjeS10cnVuaworNzEyNyAzZDg3Y2IxYjNkMTdhZDcxOGEzZjZlYzkzOGVkMTY1MmQwZmVlYzc0IGxlZ2FjeS10cnVuaworNzEyOCAzYjdjZDgzYjYwMmQ2ZmQ4MzgwYTE0NWQ1YjExNzcxOWJhYTdkMDhhIGxlZ2FjeS10cnVuaworNzEyOSBkZjgxODU2ZGI1OGM1NDM3ZDI3Njk3NDdkZDk0YjUxZWRmOWFlN2Y3IGxlZ2FjeS10cnVuaworNzEzMCBjNzVhMmYyZGMyMjBhNTc3Njg4ZTYxYjEwZDc3NjE0NTgzNGU3ZDRkIGxlZ2FjeS10cnVuaworNzEzMSAxODZjMmFkNGFiZjMzYzkwZjZlNjZmOGM3MGI2OTNlOWRjNzU5MjE3IGxlZ2FjeS10cnVuaworNzEzMiBkZGJjYzAzODkxNmIyY2Y1M2FhZWYzNmQyYTNlNmE5MjY0YjhjYTExIGxlZ2FjeS10cnVuaworNzEzMyAwZGRkZjQ5ZWE0MTZmM2JlYmMwNjA4ZTQ5M2ZhNWI0MjFjMmU4ODY5IGxlZ2FjeS10cnVuaworNzEzNCBlOTc1Mjg0ODJiYzY3NDI5OTA4MTUyOTUzMzU4ODNkNDU2MGYwMDdhIGxlZ2FjeS10cnVuaworNzEzNSA4ZmI1NzJlMWIxYmExNzFlMTc0M2IxNWNlNmJjMDk0YTdmZTNiMmViIGxlZ2FjeS10cnVuaworNzEzNiBkNTAyM2QwYzU1MDIzNzM2NDhiYTVlODRlZTM0ZWI1MTU1ZjVjYWU1IGxlZ2FjeS10cnVuaworNzEzNyAyMjc4NTEwOGYxZWExM2Q3NGY3NTY5MzMzM2I3ODJmYTA5ZGY1YzIwIGxlZ2FjeS10cnVuaworNzEzOCA0ZWU0YjhiYjY3Yzc0NDI3MGNlZDQ0YjViYTRmM2FmNTcxYzU4YjJmIGxlZ2FjeS10cnVuaworNzEzOSBkY2IyZjVkMzRhZTgwMjYzZmUzNDE4OGMyZTNmOWE2NjExNzNlM2U2IGxlZ2FjeS10cnVuaworNzE0MCBlZDM1MDY3ZTM3OTNlMGZjM2E4MDVhMzE3ZTI2ZmQ5YjI0MjVjMDMwIGxlZ2FjeS10cnVuaworNzE0MSAyOWJjMjhlY2EzZTllZDU1NTNkNDlhNTdjZDNjNzUzZWVjNDk2Y2VhIGxlZ2FjeS10cnVuaworNzE0MiBjNDIzNzllNDY1M2JhOGNlZTkyMWEzYzQ3OWQ0YTVkZTYxODVjN2YyIGxlZ2FjeS10cnVuaworNzE0MyA5NTIwNGFhMmY0NTIyYTVjYzhjZDc4NTY4MTcxZDk3MDc5NTdjYjhkIGxlZ2FjeS10cnVuaworNzE0NCBkNTAxZGFmMGEyZjY1NWZmZGIyOTk1OTk1NDI4NzQwM2E2NDAwNzAyIGxlZ2FjeS10cnVuaworNzE0NSA3OTAxZmU3OWY2YWE4YTI0OTJhMDYxYmY3Y2Y1ZjI0M2M2MGU1ZWY0IGxlZ2FjeS10cnVuaworNzE0NiA4MmRmMTA0MGRmMGY4YTZjYzA4MTQ3YWJiOWYzMGY2MDc4NzI1ODQ0IGxlZ2FjeS10cnVuaworNzE0NyA1YjUzMjY4ZjU0N2EzOWRiMTc3NjkxMDlhODUwMzUxNjk0MzVmOWU0IGxlZ2FjeS10cnVuaworNzE0OCBhM2NkYzgxNjQ5OTBlMzRlMzQzYjhmZmE5MjAxNjU1MGRiYzgyNGY5IGxlZ2FjeS10cnVuaworNzE0OSBiNDNmZjg5ZmM1MGQ5NWMyMjdiNTZhZGM4OTgzZjQ4MzhjMzdkOGNjIGxlZ2FjeS10cnVuaworNzE1MCAwYzAxYTIzYzdkY2RiYWI4MTI5NzIzZjg3ODg4Y2M3YzdiYTllY2YwIGxlZ2FjeS10cnVuaworNzE1MSAxOTM5NTBiYzlkOGY3ZjRhNWY2NWYwNzVhZmUwODFmZDJjNDliYmZhIGxlZ2FjeS10cnVuaworNzE1MiBiODI4ZWI1MGRiZDUwNjM4ZTZmYzI5OTllZjY3MjllMzEzZDkzMmY5IGxlZ2FjeS10cnVuaworNzE1MyAxNTkyOTcwYzc4OWIwOTJjNTlkYThlYTA4MmM0YjdiOWI4ODNlYTIxIGxlZ2FjeS10cnVuaworNzE1NCA4OWIxNjEyNmQ0ZTIyZDFmMTI2Mjg4ZmFjNDM0NjcyMzEwZGRhMzk3IGxlZ2FjeS10cnVuaworNzE1NSAxMGMxYjhmMzkwMmZjYjI4YWNlZjdiZDgxMTZiZWU2NzBmZmFkODIyIGxlZ2FjeS10cnVuaworNzE1NiBmOWM1YTMxM2FmZDkzMjUwMmZjZDBjZmRlMzMwYTkxYzJkNDIzZjAzIGxlZ2FjeS10cnVuaworNzE1NyAxOWM4ZTYxY2FkMmQ4MzVhZTllMmZmZmI4MmFiYTM1YmQzZDM1MzFiIGxlZ2FjeS10cnVuaworNzE1OCAzMWJkMGFkMDI3MmQ1YTA5NTQ1ODQ1NmZhZDUzM2I1Yzk2MTAzODA1IGxlZ2FjeS10cnVuaworNzE1OSBkODAwODQxYjU3YThjN2VmODkwOGM1MTcyNGU5ZDAzMWZkNDJjNTI0IGxlZ2FjeS10cnVuaworNzE2MCBkN2QwNWUyMzQ0ZDczNmQ4OTZjOTk5YmNlMTg5M2FlNzY0NWUwMDU0IGxlZ2FjeS10cnVuaworNzE2MSBjMDQ2ZWZhZjFiZDJjNDZlNjMxODg2YzVkMGIzY2Y3NDNmZDEwMTRiIGxlZ2FjeS10cnVuaworNzE2MiBkMTIyNzUzZTViOWY2MDNjODYyNmMzNjNlNjcyMWY4YzFjZmEwMDE2IGxlZ2FjeS10cnVuaworNzE2MyAwMWY0ZWEwNWE3NjYzZWMxMmIwMzgyMThhNjQwZTBlZjAxOWVjMDc2IGxlZ2FjeS10cnVuaworNzE2NCA4ZjUwYmVjNTA2OGU2ZWZmYzgwNWM5M2ViY2JkYTAyODg4ZGY3NjUxIGxlZ2FjeS10cnVuaworNzE2NSBjMmI4MzFmOTIzYzJmMDNmZDhkNWI0NGUzNDBhN2Q4OTFlM2JlMjg3IGxlZ2FjeS10cnVuaworNzE2NiA4MDE1YzU1NDkzMDk4NGVhYjlmNGQzY2ExMzJjZDBiZjkzMjk2MDA3IGxlZ2FjeS10cnVuaworNzE2NyBjYjQwNWI5Njk2ZDQ4MzY1NzJmMzNjOWJiODc2ODJjOTA4NjQyYjUzIGxlZ2FjeS10cnVuaworNzE2OCBmYWRkZjZkNTVhZjBhNGQ0MDIwZmY0N2IyZmE2NWUyODg4YzlkMGM2IGxlZ2FjeS10cnVuaworNzE2OSAyYzEwMzk1OTIxZTFkMGJiYjFiODg2ZmU5NWEzMzIzMDk2NDVjZDg3IGxlZ2FjeS10cnVuaworNzE3MCBmMTJiMWQ0ZDZhOWJiODgyZjQ2ZTg2NDI5N2VjOGNiZDY4MGE1MWVhIGxlZ2FjeS10cnVuaworNzE3MSBkZTI3ZGE1ZjIyZjE3NTM1ZjdkNjhjZTgwNWVmNGY4NWJiMGVmNjQ5IGxlZ2FjeS10cnVuaworNzE3MiAxZjM2OGZiM2UxZjc4NmI0NDZkNWY3YzEzZjcwZjI2ZmQ1MWE4MWU1IGxlZ2FjeS10cnVuaworNzE3MyBlZTk4ZTQ0ZDRmODU1MWQ1ZTJjN2EwYWU4MTNjZmQ0MzQ1ZDkwMjYwIGxlZ2FjeS10cnVuaworNzE3NCBhMTY5NGU5NWJjYmE3OTIwZTc5ZjAzOTc3YzhkYWY5ODE3NzE5Y2YyIGxlZ2FjeS10cnVuaworNzE3NSA4MjUwMzhkOThhYjYyMmJkMDc2OTUyYWM5OTNlNzQ5ZjczNTQ1ZTllIGxlZ2FjeS10cnVuaworNzE3NiA4YTc1YjhiZjE1MjE4NzU0ZmJjYTgzYzMwNzliN2MwMmUxN2FkMDU3IGxlZ2FjeS10cnVuaworNzE3NyBlNWU1ODc5NDA0MGY0NTQzNDAxOTcyM2ViYmVjNTUwNzQ4OTUxOGQ3IGxlZ2FjeS10cnVuaworNzE3OCBlMGJiMWRhYzJkYmY1NTYyOTc1NGQ4N2VhZmM1NTlmYTBiMGFhMWE3IGxlZ2FjeS10cnVuaworNzE3OSA2YzBlMzVjZjBmODViZDYyM2FlMDVmNzZlNGUwZDA3NzdlOTRhYmYyIGxlZ2FjeS10cnVuaworNzE4MCBjYzUyNTE4MmJiYjFmMzZlZWMxYzIwOTFiZGFhM2NmYzkyMTEyZjVlIGxlZ2FjeS10cnVuaworNzE4MSA5Nzg1MTE0MzI2YWI3NTI1MmQ1NGFlMmNlODZhOTA4M2Q0NTdkY2MyIGxlZ2FjeS10cnVuaworNzE4MiAyZGQyODU3OTRkNjc0MzMwODM2YTU5Mzc5ZTRkZWViN2IzOWUxNGRhIGxlZ2FjeS10cnVuaworNzE4MyA3NzVhN2QwYzI5NjA5ZmFmZDg1MTY0OTg2NWQ3ZDcxNWEzYzc0MmE2IGxlZ2FjeS10cnVuaworNzE4NCA0Mzg5NDliYjQ1MDgwNTA2M2MyMzU4ZDczM2Y5YzZhNjhhNmRlMDA0IGxlZ2FjeS10cnVuaworNzE4NSA3YjlhNjE2NjI4MWExMmMzYWQzYTI3YTk1MjdlMmEyMWRjMDBmY2ZjIGxlZ2FjeS10cnVuaworNzE4NiBkOWZmNmY4M2ExNmFkMGExNTMxYjYzMTBlM2M2OGJiMTg0ZGUyNzE3IGxlZ2FjeS10cnVuaworNzE4NyAwMjUzZWYyNjdiNjhjNmNhNzg4OGY1NDEzYzhiMmE5YmM1YWNhMzFmIGxlZ2FjeS10cnVuaworNzE4OCA2Y2NmNWRiYThiMGJiNmI3NzI3Y2Q3MTljZTkwNmY0Yzk5YTc3NDA4IGxlZ2FjeS10cnVuaworNzE4OSAwYzZjNjliMGQzZTljNjlmYTQ5ODJkMWZjYWZiYWYyMDQ4ZjlhMmQyIGxlZ2FjeS10cnVuaworNzE5MCA2Nzc1OWRmZTZlZThjN2RhNmYyMWZlNjBjZGNjMGQ4MjViM2FkZjI1IGxlZ2FjeS10cnVuaworNzE5MSBhOGE1NDc0OTBhMTI3Y2RlZDNmN2Q0MTI0Y2Q0ZDkzNThhMmEwNTIyIGxlZ2FjeS10cnVuaworNzE5MiAxMjE1NGQwOTEzMTY3NGZlOWRlYWM3OTU3NmY0OTkzZGNlNzBhZDI2IGxlZ2FjeS10cnVuaworNzE5MyAxODM0NjU0YmViZTMyMTJlNTY4NGU5YWU3NGIzOGFkZTVkMDU3Zjg3IGxlZ2FjeS10cnVuaworNzE5NCA3NmJiMjA5OWQ2MTgyOWY2ODcwZDRhMjU3YTI0NWJmZDVlYzJmNjM0IGxlZ2FjeS10cnVuaworNzE5NSA5MDg1N2ZiNTczOTcwNmUwYzAwYTU2MGI2NzRkMDRkZTMyOTdjMWRkIGxlZ2FjeS10cnVuaworNzE5NiBiMjAwOWVkMTUyZmE1YjNiZmY3NTRmNTRiOGMxNjM5ZTVmYTY3N2UyIGxlZ2FjeS10cnVuaworNzE5NyBjMDdlNWM0NTU1NzZkYWFkMTlhOWRiMWEzZmM4ZGEyMWYxNzliY2M4IGxlZ2FjeS10cnVuaworNzE5OCA0Mzc0NGJlMjQzM2Y1OGYwM2I3YTM3MTlhMmE4Zjk1MWRjZmUzN2QzIGxlZ2FjeS10cnVuaworNzE5OSBkZTAxYzY2ZjVmYTU4YmYyODVkM2U5M2Y4MjA0M2U3NTQ4NjhhNzk3IGxlZ2FjeS10cnVuaworNzIwMCA4NjY5ZWRiMWQ5YzU2NTg3YjU0MjNiNWY0MDJmNGZkODBiYWU4ZWMyIGxlZ2FjeS10cnVuaworNzIwMSBmN2E5OTE2MWRmOTJhYTFhYTQ5YzM5MTM5ODI4ZmViMWUxZjliZTQyIGxlZ2FjeS10cnVuaworNzIwMiA5YWM5ZWE4NDhkN2RhNzc4Y2IyMWE3NDY1YzQzMGQ1OWVjZDZmMjg2IGxlZ2FjeS10cnVuaworNzIwMyBiMjE4ZjI5NGI3MjZhYmMwMzIzOTI4OWVkZTA0YmE3ZGQ1MWM5MjU0IGxlZ2FjeS10cnVuaworNzIwNCBlMjdmYTJhM2Y1MjY1MDE5MjA5YTBlM2I5YjNjZTM3NDhkNzNmNGNjIGxlZ2FjeS10cnVuaworNzIwNSA2MmNmN2Q1ODkzMDBlZjlmYzU1YTJjYzJmM2JlNzJlYjIyOWY2Y2Q0IGxlZ2FjeS10cnVuaworNzIwNiAwN2YwZjIxMzYzZTY0ODIxOWY4ZTI2ZGViOGNhZmM2Nzc0ZWE1MmNjIGxlZ2FjeS10cnVuaworNzIwNyBkMzY3MDE0MjAwYmI1YjgwMTE3YWJjZjViOThlMWUwYzhjMzBlZDNhIGxlZ2FjeS10cnVuaworNzIwOCAzYzc4MTJiZmExYTRhYWFiODY3NjBkYmNkYjBiN2UyZDgwNjEyOWEyIGxlZ2FjeS10cnVuaworNzIwOSAzZGI0MjM1MTU2MjZjMmZiYTcxMzJhNzA0NWNjMjgwZWZkYzgyMTI4IGxlZ2FjeS10cnVuaworNzIxMCA0YTNmNDViMzQ3MWFjNTRlNWQ1MzA1Yzg5NjgxYWEwYmJmMzY0NzIzIGxlZ2FjeS10cnVuaworNzIxMSA5NGFkNTZlZjUwNzMzNTk4NDdlMzY2MmY2OGQ4ZmIyZTNkNDYzNGMyIGxlZ2FjeS10cnVuaworNzIxMiA0MjZmODdjNDY1YTAyNjZmMzE0NTQ0ZDI0YWI1ZTdkMDhkZThjZjc5IGxlZ2FjeS10cnVuaworNzIxMyA4ZWRiNTdjMzM0ODdiYWVkOTNiOTA1N2VkN2FjODgwNTMyMTYyN2ZhIGxlZ2FjeS10cnVuaworNzIxNCBiMDE2ODI4NTFhNjMzNjc3YWY3YTg0MTNjYzhiZTRkYWU3OTBlNzQyIGxlZ2FjeS10cnVuaworNzIxNSAwNjJlODg2MDhiNTU1OWU2MDFjZGNkMWM0NTUyODMzYmUyNmQ5MDM1IGxlZ2FjeS10cnVuaworNzIxNiBhNDQwMjAwOGM1NjlkZDhlZjc4OGE1NmQ5YTgxNzhlZTMxNmViYTc3IGxlZ2FjeS10cnVuaworNzIxNyBlZDAxZWM0M2ViMzBmZjQzZjhiZTY3Zjg3YTY4ZWZhNGJjMTk2NWQ2IGxlZ2FjeS10cnVuaworNzIxOCAzNTdkNDU0NDA4NWEyYTZkMWQzMzhiYmY2MmFkOGMwNWU4ZTc5MzRjIGxlZ2FjeS10cnVuaworNzIxOSBlMDUyM2YyZDQxNjM5YzkwNGFhMTI5YTRlYjhlYWI0NTI2M2VlY2RmIGxlZ2FjeS10cnVuaworNzIyMCA3YWNkZjU5ZjMxYzVlYzFjZmZiN2Q4Y2U2Y2M2YTFmYjgwMGY0ZDcxIGxlZ2FjeS10cnVuaworNzIyMSAyY2JkZTVmYzRiMTliZTE5MDA5MTFmZDA0N2RlYTQ2NjAzOWExNjMyIGxlZ2FjeS10cnVuaworNzIyMiA1YjA1YmNiZDQ1NDJjNjQxN2RiODFkYjAwYTM4NWQ1NDg3NzBhNWM5IGxlZ2FjeS10cnVuaworNzIyMyBlYTEyNjVmMjZiMzMyNzQwOTVkZDJjYzM3ZjVkMjk2NDk4MmFhNzk0IGxlZ2FjeS10cnVuaworNzIyNCBkZGVhNjlmOTA3MWJhODJkOWI5ODk0ZTkyNDc1NzFjYWZlNmY2NTMxIGxlZ2FjeS10cnVuaworNzIyNSBmZmZjYzUyY2RjMWU4NmZlM2E5YTNmZjcxOGI2OWY2YmQxZGFjYmE3IGxlZ2FjeS10cnVuaworNzIyNiA3YWI4MzVmODdmODZkMjFjZGJjN2I3NDBiZjRmYzYyYjcwZGU2ODA2IGxlZ2FjeS10cnVuaworNzIyNyA3MzY3ZmIxMDcxMDgzZWUzMzZiMDUyMmY5Y2NiMjMxYWM4ZjY1OWM0IGxlZ2FjeS10cnVuaworNzIyOCA3YjFlNzg0ZTIwYTBlY2Q1MGVmNTUwZDBkOWU2MTg3ZWI0Nzg2ZWJmIGxlZ2FjeS10cnVuaworNzIyOSAzMDcwM2E2NTZkMTM0NWNkZmZmNDhjZGFjNjE0ODkwZjJkODFiOGVmIGxlZ2FjeS10cnVuaworNzIzMCAxZGU5NmM1NzJiMDJiYzRhYmU4MmQ0YTE4ZDJkMTRmZjFjYzQ4NzM1IGxlZ2FjeS10cnVuaworNzIzMSAzMDFkN2Y2YWNmMGE2ZDAxZWQ4NjU3MjFkZTRmNWMyZjc0MDRhOWQyIGxlZ2FjeS10cnVuaworNzIzMiBlMWYxNzI1Y2FlNmRhODMwMDFhM2JhMGE0MzMwOWNhOGQ5MjhmMzkzIGxlZ2FjeS10cnVuaworNzIzMyA2MDVmYmEwMmUxOTUwNzc2MjQzN2ExNDZmNzg5MTYyMDJlZTI4YTQ0IGxlZ2FjeS10cnVuaworNzIzNCAzZmM2MDQyYTJhY2I4NzRhMmRkZDIyNTU1N2JkMDMyNjA3MzM3YjhkIGxlZ2FjeS10cnVuaworNzIzNSA1YjIyZTMyZWFhMTc2NGUzZjY5MTYzNWVmNTMyZDQzN2UxYjgwNzQwIGxlZ2FjeS10cnVuaworNzIzNiBkN2VlYTY5NGNkM2EwNGU2ZTY1MGYwMTE1YzhjMmJmZGZmNDVhYzZkIGxlZ2FjeS10cnVuaworNzIzNyBmOTI2MjYzZmI2NTRjMjliODc4ZjlhODJkYThiODA4NjQxMmQ5MTRjIGxlZ2FjeS10cnVuaworNzIzOCAzODY4OWFjZWFlN2I2MGM1YjhhYzZiZmQ0MGY0N2UzZDNjZmY4MjRhIGxlZ2FjeS10cnVuaworNzIzOSA4ODcxNGZiZjlhMDYyNmFhNjBjZDM0MmRhODM1ZDBiY2U3N2YxZDlmIGxlZ2FjeS10cnVuaworNzI0MCBmOGIzNmMwZWMxMTRhZWRkYjMzZDM3Yjk0Y2RkMjJlNGUyMDI2NWE4IGxlZ2FjeS10cnVuaworNzI0MSA5NjA0ZDY3ODQ2NzVjMmRkOGU1MDJlNGUxZTRhMDAxZGU4YTIzNGYzIGxlZ2FjeS10cnVuaworNzI0MiA2M2RhZTI3M2IwN2Q4NTkzMTU0NGQ4ZjQ2ZGQxZjVkMThlZGFhMmZhIGxlZ2FjeS10cnVuaworNzI0MyBmN2E2MWM2YTY1YzM3OTc0NzFlNjk0NmNiMWUyYzY1ZDI5MzI3NDI0IGxlZ2FjeS10cnVuaworNzI0NCBlZWNiY2M0OGIwZTk3NmMyYmY2MTIzYzEyZmI2ODE3ZWI4OGI0MTQwIGxlZ2FjeS10cnVuaworNzI0NSA3MjEwOGZhYTU2YmYxNDg3MGQ3YTdlNjU4ZDUzZjMxYTQxNjUyMDk0IGxlZ2FjeS10cnVuaworNzI0NiA0NzEwNzAxNjkwYzFjNmJkYjQzNDMzODQ3NmUxNDJkZGIwNDVkMWVkIGxlZ2FjeS10cnVuaworNzI0NyBiODVmMTBhZTQ4NTdmMTE1MWNlZmNlYTUzNzk1Y2JhMDQxNTI3NTMzIGxlZ2FjeS10cnVuaworNzI0OCBkNTVmMzEzMzhmZGNmODUzY2M4MjVlNTFkOGY5ZWYyNjc2YWVjNDgyIGxlZ2FjeS10cnVuaworNzI0OSA5ZTQ4YWJiZWU2YzVjMDU0MTkxZmIyMDMyZmE3ZDk0YTJmNzFlMzdmIGxlZ2FjeS10cnVuaworNzI1MCAwZDBjNDEzYjZmMjUzOTc1Njg4NmMwNWVlOWZmNTZhZTEwMjFiODY2IGxlZ2FjeS10cnVuaworNzI1MSA0ZGU4Yjg2YmEyNTU5MWE0MDU5OGFkZGZlNWQ0MzYxMzg2NzAzMzMyIGxlZ2FjeS10cnVuaworNzI1MiA1MGQ2ZGM0NThhYTJmYmJmZjZmMjg0MmRjY2MzNzc4MjFhNGI4ZmZlIGxlZ2FjeS10cnVuaworNzI1MyAxY2NhYTQ0MWQwODNmMDA0MmMxODFjMGZmMzUzYTlmMzA0MjI1Y2FjIGxlZ2FjeS10cnVuaworNzI1NCBhNTcxYzdmMDg5OTE2ZGNiYzc1Y2EzYTRkNjUzOWE4MTljZDQ5MDdmIGxlZ2FjeS10cnVuaworNzI1NSBhYmVmNTAwNmY4NGJkYzcwNmI3MzMyNmNjMTJkNWJhZjM1MzdlZmM2IGxlZ2FjeS10cnVuaworNzI1NiA3NTYyYTZkZjkxZmI0YmViYzY0NWFkYTU3MWU3NjdkZGZjYjFiMDVlIGxlZ2FjeS10cnVuaworNzI1NyAyNDI2YTIyMDY2NGIxOGIzZGU0NjEzMThlMWNkNDEwMjFjNWM4ZTc4IGxlZ2FjeS10cnVuaworNzI1OCBmZWJhNmQ1OGQyMDQ4OWYwMTYzOGMxYTVjZGU4NzY4ZWVkOTk5OGVjIGxlZ2FjeS10cnVuaworNzI1OSBlNDMzNjI5MTBhNWUzZTNjN2Q1NTlhZmIxOTYyMDk2YTJlYjczMDQwIGxlZ2FjeS10cnVuaworNzI2MCA5ZmMzODBiMWE0NDVhYTE0YTEyZjY1ZGI1NzQyNzRjMDU4N2I5Y2EyIGxlZ2FjeS10cnVuaworNzI2MSAwOTQ4ZjM5ZWU5NjBlNDdlYjk3MmQzZmRkMzNlYTgyOTFkMDBhMWY2IGxlZ2FjeS10cnVuaworNzI2MiBkN2U2NjUzZDA4NGY2ZmJjMGU3NTkxNDJhN2UyMjYzNTEwMmJiMDQ5IGxlZ2FjeS10cnVuaworNzI2MyBmMjMyMWU0MjMwNzE3ZTVjNTk3N2U4OWEyYmRjNzA3M2NiNDc0OTcwIGxlZ2FjeS10cnVuaworNzI2NCBkNDViYTY0YjgyZmQ2YmVmMjk0MzQ4MjRjODllZWY5MWQwODUyZGM0IGxlZ2FjeS10cnVuaworNzI2NSBmMzc1ODIzMTQxMjMxODVhMDVkNGUwYTJiNGY5OWRkM2E3M2RiN2YwIGxlZ2FjeS10cnVuaworNzI2NiBhMmZkODBlZWQyN2ZhMTcyYjYxZmY4NWYwZmYyMTIzNzU0NjNhNTQ2IGxlZ2FjeS10cnVuaworNzI2NyAwYjZiMWI4ODI4NjZiNjBhMThhY2JjZGVlNDQ1MjliNGM1NDEyNjk2IGxlZ2FjeS10cnVuaworNzI2OCBhYWJmNGEwM2E0YjBiYmYxYmJhZjRlZGE4MjZjYzMxODFlNmEwMzM4IGxlZ2FjeS10cnVuaworNzI2OSA4MGMwY2E0MjQ1MTBlNzljYzQ2MjZiMjg4MDRlZGVjNzU2MGI0NTcyIGxlZ2FjeS10cnVuaworNzI3MCBiNjUyMGM0NWViMDU0ZTc3MDUzYzQ3NTllYjk0NTFhYTNkOTgxNTFmIGxlZ2FjeS10cnVuaworNzI3MSBiZjcyYTk0ZWU5NmI5YjNjY2NhZDA1Y2FjYzM3ZTBjNTJkNWY1ZDFjIGxlZ2FjeS10cnVuaworNzI3MiA1MjI1OGIwMjNhYTMxNzgxYmZlOWJiMjMxY2I2OGVhZjJhYTM5MTcyIGxlZ2FjeS10cnVuaworNzI3MyA1ZGI5YWQ2MDMyNmRjOGMxZDk4NzVjMGM1YTM5YjU0ZjJlZWFlY2M2IGxlZ2FjeS10cnVuaworNzI3NCBlNzJiMmVkMzgzYTk4YjRmYmMwZmEwYzYyMzQ1ZGYwZjU4NWE2MWQ4IGxlZ2FjeS10cnVuaworNzI3NSBlMmE3ZmY2ZjQxODg3MThmMzAzY2Y2ZWU3ZjY1N2JmOTM0NjI4ZTVlIGxlZ2FjeS10cnVuaworNzI3NiAyZDVlZTM3NGE3M2I4NWQ3MzNjMjA1M2IzMWYwY2YzODU0Nzk2NmMwIGxlZ2FjeS10cnVuaworNzI3NyA4NjdmZWRhMDA4NDA3ZjBkNzE3YTQ3M2M1ZDk3ZDE1YTI5N2YxNWQ3IGxlZ2FjeS10cnVuaworNzI3OCA5OTY1ZGY3ODJhZmNmNDJiYTdmY2JlMjAwNzVlNTkzN2JhMTBkZGJhIGxlZ2FjeS10cnVuaworNzI3OSBhMmM0MjdmOWRiMDJiOWJmMWI5YWQ4MDk0Y2ZkYzJiZWNlZTYyNmE5IGxlZ2FjeS10cnVuaworNzI4MCBjNzFjYTE1YzhiNTU1Y2Q4ZjRjNGYxZGI1NzhkMTZjOTMwOTYwYjA2IGxlZ2FjeS10cnVuaworNzI4MSBhM2M0NzcyNTk1MDU0NDMwOGJkZjgyYzNiYzM0YWQzYWYwNzk0MmY3IGxlZ2FjeS10cnVuaworNzI4MiA4ZDJjOGIwODA0MDE3ZDQxMzE2NTdjZjRmMGJjOGIwZGYyODBkZjRjIGxlZ2FjeS10cnVuaworNzI4MyAwOWQ2YzU3MDg5OTllNjMyNzg1MTJlNDhkMjAyNDBiZWUxYjc4MDkyIGxlZ2FjeS10cnVuaworNzI4NCA2ZjhiNWMzY2Q2Y2IyZTVmMmE2ZmVmYWExOWNhYzJlOTg1OGRmOGM0IGxlZ2FjeS10cnVuaworNzI4NSAyY2I0NjlhNDIxYTk3ODM3ZmQyNWZlODdmNDU0MjFlMzViMTg1ZDliIGxlZ2FjeS10cnVuaworNzI4NiA5YWUzY2NjZmE3Y2RlMTI5YmRhNTkzMDM2MzM2MmRjNzE3MmQyM2IyIGxlZ2FjeS10cnVuaworNzI4NyBkYjIzMGZlZmE3MDIzOThiNjA2OGIxMzg5MmJkODg5OTk2ZTQxYjRhIGxlZ2FjeS10cnVuaworNzI4OCBiNmZhZGYwMjMxYWY5YjI2MzlmOTI1ZTAwNDJmNWNmMDAwNzc4MTU0IGxlZ2FjeS10cnVuaworNzI4OSA5ODIxMzYwNGY5NDE0ZmQ0NWNmYWUyOGQ4NzhiZTUyZDZmYjM3MGFiIGxlZ2FjeS10cnVuaworNzI5MCBmYjE4Y2U4YzBjZjZhYmIwNjNlNGFmNDNmMjcwODQyNjU5ZmE1MWEzIGxlZ2FjeS10cnVuaworNzI5MSBjNDQ1NDBkNTJkMTM2OTkxMDc2YWVkMDhjODAyZWFhNjk3ZjlmZTNiIGxlZ2FjeS10cnVuaworNzI5MiAwZjc1MTVlYmUzYmY0ZWFkMmRmMDliMzk4NmE4YjRmZTFjOTdjMDhmIGxlZ2FjeS10cnVuaworNzI5MyA2N2E1MjIxYTJmNjBmOTM5Y2MzYjRmY2RhYWMzNDE2ZGY5MjU1NTI0IGxlZ2FjeS10cnVuaworNzI5NCA5YmRhMzhjNjdmNGVjMjVjMGZmNWYyMThhNzczMzhmYmQ3ODE3ZWI5IGxlZ2FjeS10cnVuaworNzI5NSBlNzJhYzFkYzYxNGYyYTA4NjA0Mjg0NDYxMTVkMzkyZTZmODdlZWEzIGxlZ2FjeS10cnVuaworNzI5NiAzOTFmMDhhOTc0NmI5NmQyYmY0MDU1ZWZjOTVlM2JlZTVhMmY5ZmJmIGxlZ2FjeS10cnVuaworNzI5NyA0NGU4NmRhZGVjOTQ0YmMxNDk4YjNhYWY4OWNjNDVjNTM4Y2NjMWM5IGxlZ2FjeS10cnVuaworNzI5OCBmNDJiY2EzZDdiZTIxZDMwYzE3N2JiOTE1MzM3NTFhZTdiMWIyMTkzIGxlZ2FjeS10cnVuaworNzI5OSA4NzgzY2ZkYzdjNmY5OTNjYmE0ODExNmFmODVjMzJkODNjMDMyNDZhIGxlZ2FjeS10cnVuaworNzMwMCBiOGE5N2FkNWY3Y2VkM2E1NDUwNzQzYjExMGM5YjQ4YWViZTA4ODMzIGxlZ2FjeS10cnVuaworNzMwMSBmM2I5MmM5NWU4NWIzNjI2YTBlZWI4YzM0OWZiMDI0YTA2ZjM2ZDFiIGxlZ2FjeS10cnVuaworNzMwMiBiZTQ4MWYzYWRhMGJkYWEzMDhjODU1ODIzMDlhYzU4NDljZmFmM2ZlIGxlZ2FjeS10cnVuaworNzMwMyA5N2FlODQ2NmQxYzQyMDc0ZTIxOWQ1ZTNhZGMxODJmOTBlMjc3MWNjIGxlZ2FjeS10cnVuaworNzMwNCA1YTJlNzI1MmM4OTAyZDRkNmQxODY2NGQ2NDBhYTYxZWM2YzE4N2Q4IGxlZ2FjeS10cnVuaworNzMwNSA0MzQxZmY1YzY5N2NmZWUyYTVkMDNhZTE3MWYxMmI4OGU2ZmYyM2JmIGxlZ2FjeS10cnVuaworNzMwNiBkODdlODc4NTM5NThmM2U5ZTkzZWY3Njc1ODQ4OGIzMmIyYmFkZjU5IGxlZ2FjeS10cnVuaworNzMwNyA1MGY0OTgzYjZiNzlkMTkyMjIxOTM4OWFjYmRmMjFlMDY3ZDM5YzQwIGxlZ2FjeS10cnVuaworNzMwOCAzMzlkMGM0OWYwYjU3MzhhZjQyMjkzNjY3NjRiOWNiZDA4ODcyOGUxIGxlZ2FjeS10cnVuaworNzMwOSBjN2U5OWFiNjI3ZjNiNzQwMjk2OWJiODE0YzMzMDJiNTMzNzFmMTA3IGxlZ2FjeS10cnVuaworNzMxMCBlMDU0ODBkYjcxYWIxMTM4ZGUzNWIzNGNkMmY4ZWQ1ZDUwYjRkZjlmIGxlZ2FjeS10cnVuaworNzMxMSBhY2IwNTAxZDkzZWY5ZDMwYmYwNTNmZDFhODJiZTdmNzhmOGY3YWVmIGxlZ2FjeS10cnVuaworNzMxMiA5ZTFhYzllYmU3OWY1MWRjZDI0M2I1MzNmY2QwY2VhNmQ5MGJmNWM2IGxlZ2FjeS10cnVuaworNzMxMyA1YzE5NTFkNTczYjFkOWJmMzFmZjM3ODYwMDFiY2Y3ZGZhN2U2NDc2IGxlZ2FjeS10cnVuaworNzMxNCA0NTY3ZTE1OGQyMGM1MTI5MmIyY2Y4NzY3MWFmNTM1ZDk2YjAxZmI1IGxlZ2FjeS10cnVuaworNzMxNSAzNWM2NDNlOTAyM2U3MmRjZGRiZWY1NmE0ODNhZTE0MTUzNjRhOTUxIGxlZ2FjeS10cnVuaworNzMxNiBhN2I5YzdjODEzMzc2MzIxYTgyNDIxMTI3NzE1OTk1MDI1M2Q0Y2E4IGxlZ2FjeS10cnVuaworNzMxNyA4NDY3OWY3YmJlNmQ1ODQ4YTYwNWMxNDBiZDhhMDBkMGFiNWFhNWNjIGxlZ2FjeS10cnVuaworNzMxOCAzOGFlMmEwZmM0ZjMzYzZlNmFkMGM3ZjA2ZmZlZThjMDlmMmNmOTg5IGxlZ2FjeS10cnVuaworNzMxOSA1NTVmNmU3NmQyMDdkY2NkM2RiYmNhNDk1ZGVlZmRjMzdhZmU2NjMwIGxlZ2FjeS10cnVuaworNzMyMCAwYmRkMzE1MzhkOGZkNjY2NzBiMWI4N2MyNzA3NzBlNzcyMTZhZmRkIGxlZ2FjeS10cnVuaworNzMyMSA5NzIwMjZkNDcyNzRhZWE1YWQ2ZjNhYmU3N2Q1MzI0Y2IzZGMyNGRlIGxlZ2FjeS10cnVuaworNzMyMiBkNTM4MTJkNjg0MDhjNjI0ZmM4ODJiN2M5NmNiNjkzMDA1NjQ1YWVlIGxlZ2FjeS10cnVuaworNzMyMyA1MjY5NWVmZGYyMmMyYTg1ZThiODlhNTgwNGVjOThhY2NkYjc4NThkIGxlZ2FjeS10cnVuaworNzMyNCAwYTQ5ZDE5MjUwNmRjYmE2MmY3NDIxM2FhNjllOGU5NTFiYjYxZDY4IGxlZ2FjeS10cnVuaworNzMyNSAwZTE4OTdhMWYwZDUyY2IwOWY5YWJlNTI5ODUzMTRkMjkyMGVkMzZjIGxlZ2FjeS10cnVuaworNzMyNiBmODA4MDAxYTNlMDEzN2FjYmZmMTJkOGI1NDEzOTExMjQ2NWVjMzk3IGxlZ2FjeS10cnVuaworNzMyNyAyOWNlZDQ4NWFjYTA5ODM1NmEyYmQzN2FlOGRhNTM0MTM4NDE0YzgxIGxlZ2FjeS10cnVuaworNzMyOCBjZjkwNzQ1MzgxYmZmZDBhNjYzMzVlYzUwNTYxMmM1YWM2YWEwNDk3IGxlZ2FjeS10cnVuaworNzMyOSAxNjdhZDM5NDQ4OGNjYWIxYTUzZWI4OTI4MjQ4ZDg0YWEwM2ZjY2MwIGxlZ2FjeS10cnVuaworNzMzMCA0M2FiMGZlZmU0YTE1NmFmN2Y0NGUyODE0NjE2YWVkYjQ3NWEzOGZmIGxlZ2FjeS10cnVuaworNzMzMSA4OGRiZmEyYmI5ZGNlZmZjMGUzOGI0OTUyNDE1ZmE1NmYwNjZjNWJlIGxlZ2FjeS10cnVuaworNzMzMiBlMGFhZWU3ZmQxZmQ0NTRlNmU0NjBiMjZmMjVlZTllYWMzODllNjc5IGxlZ2FjeS10cnVuaworNzMzMyAxOTg5ODllZTM2ZDU2YTVkM2U1NWU1ODFiOGEzMzdkMjdiYTBiZWFkIGxlZ2FjeS10cnVuaworNzMzNCBhYjQ2MWM3NjI1NTlhNDMxYmM0MDg5ZjQ1MWRkNGI1MDdkYTc0YzY1IGxlZ2FjeS10cnVuaworNzMzNSA1YzZmYmRjNTBlMWQ2NDM5OGRmOTA2OThmNjMxNDAzNmJkNzgyZGVjIGxlZ2FjeS10cnVuaworNzMzNiA2OWNhNWUzY2NjNmRhODI1MTYyYzVhZTljMzcwODcyYzdlOTUyYTNhIGxlZ2FjeS10cnVuaworNzMzNyA3ZDczMTk4MTFmZjBhZTEzNzFlMWMwZTdjNjkyOTQ5YWUwZmI5MTZlIGxlZ2FjeS10cnVuaworNzMzOCBiMTcwN2JjZGMyNjUyNmNjNzU5ZDVmMDY3YjAyNzZlYWY3YThkYWI3IGxlZ2FjeS10cnVuaworNzMzOSBhNTM5MDhkMDlhMDRjMDEwMzAyMWUzOTg2ZTc4MDE0NmE1M2YzNjM4IGxlZ2FjeS10cnVuaworNzM0MCBmNTA3M2UyNDE0N2MwNzg4MTVmNTAxZjg4ZmY0MWViODZkY2IyZTNmIGxlZ2FjeS10cnVuaworNzM0MSAzOTYwMzQwYTMyNTIwOGM0ZTVkNzkwZjEyZmMzZDQ1NWRhYzgzNDY4IGxlZ2FjeS10cnVuaworNzM0MiBlM2YyYWIwYjBhYTE2ZDIwMDMyMmY2NzBiMGU3Nzc3NDk3ZGE4ZTA2IGxlZ2FjeS10cnVuaworNzM0MyBiZjRkYjJhNGJiNTQwNzllZDA3YjBhYTZmMTc4ZWI4NzRlNTAxZTU3IGxlZ2FjeS10cnVuaworNzM0NCAwZWEwZmFjNjhjMWM5ZDhmNzZkNWY3ZDdhZWMzZjJmMjdlNjMyY2E4IGxlZ2FjeS10cnVuaworNzM0NSA2OGY0MTM0ODY5ZGIwM2I3N2NhZDJmYmNjZDA2M2IwMjQ4Njg5ZWIyIGxlZ2FjeS10cnVuaworNzM0NiBhNzE1OWJhMGU0NWQxZDc0OTQ0NjYxZjhhM2I4ODlmYWIyZDFiYTYzIGxlZ2FjeS10cnVuaworNzM0NyBkYTUzZTQ4ZWZlYTg2MGEyZGIzM2RlM2M1YmFjZWMyYWU5NjQ2MjJhIGxlZ2FjeS10cnVuaworNzM0OCAzMmY2YjBkM2E2NmZiZjA4OGJjYzZmM2RhZTI4NDZkYzhhMzQ5YzdmIGxlZ2FjeS10cnVuaworNzM0OSAwM2JjZGQyMmY2YTRjMmEyN2U3ZDdjODRkMTEwMjA2M2RkZWJlOWQ0IGxlZ2FjeS10cnVuaworNzM1MCA5MTEwNDBlMWJiMTE5MTg0YmI1OTM0MjQ3OGY1NDAyODRkZDg3Y2QwIGxlZ2FjeS10cnVuaworNzM1MSAwZjEwZmE3NTJjYTkyNTZmM2M3YmNmODkzNzcwNDA3ZTgxMWE1ZDA5IGxlZ2FjeS10cnVuaworNzM1MiBlNTdhOGRlNWFlYjM5YjMwMWRjY2RkNjk4ZDFiYzVmNTZiNGFkMWFiIGxlZ2FjeS10cnVuaworNzM1MyBhOWU3ZTBjY2FhNGFjMGMxMDVmNjNkNzMyNzg2ZmUxNmZmYzEzNDg4IGxlZ2FjeS10cnVuaworNzM1NCA0NTE0MDIzMTYwYjQ1ZDFlMmNjMGQ1ZmQ0MGE5ZjQ2YjJiM2VlZTAxIGxlZ2FjeS10cnVuaworNzM1NSA5YTdlOWYxMGFlZDYyMDhlYmZkODM5ODk5YmYyODhkN2RmNTg2NGU5IGxlZ2FjeS10cnVuaworNzM1NiAyMjQxZDMxMjY1OGFlNzczZDI0NjZiOTkyNTIxYTQ2MzM4MDQzNjQyIGxlZ2FjeS10cnVuaworNzM1NyA4ZDE3ZDU1MmQwZWMwNWRhYzZhZDgxZWQ2MzE0MzMyY2QxNzNmYmEzIGxlZ2FjeS10cnVuaworNzM1OCBlNzQyYjU5M2MwOTI2M2NkZWRiYmNhNTVlYzc4NmJlYjc4NmE1N2YxIGxlZ2FjeS10cnVuaworNzM1OSA2NWNiMjYxZjc3MzZjOWE0M2RmODFkZmM1Zjc2MmY5ZDUzM2U2MTFkIGxlZ2FjeS10cnVuaworNzM2MCAzODNjNjQ4NjM0NmY2NjMzYThlMjljODU1YzFmMzk5NDBjM2YzNzIzIGxlZ2FjeS10cnVuaworNzM2MSAyMWM0MWQzYzI2YjY1MTFhNzIzOWU2ZThlNDc1NzE2NTcwNjhiNmY2IGxlZ2FjeS10cnVuaworNzM2MiAzNDJkMmVlZDU3M2E1NzhiMmU2NTY5YTNlZGYxZTI1OTg2ZGNlYjgxIGxlZ2FjeS10cnVuaworNzM2MyBmMTI2MTE4NjcyMmNkMjA5ZDRlNWZiM2JmY2M4MDZjOTJkMmJjYmE4IGxlZ2FjeS10cnVuaworNzM2NCA5YzZiNWE2NWNlNjMwMGQ4ZDBjNmU5YmY3YTYxOTAyYjczMWJiY2E5IGxlZ2FjeS10cnVuaworNzM2NSA4YTY4ZjgxYmFhZDZiMTY5MTEzMTZhZGYzOTA2MDZiODZlYjQ0ZjZiIGxlZ2FjeS10cnVuaworNzM2NiBkMzk5YTQ1MzdmNmRlMGYyMDRjOWNhNmVkM2RmZDRhN2MzZThiZTY2IGxlZ2FjeS10cnVuaworNzM2NyAxYzA4OWM1YjY2ZTk5MDk1NGVkNTdjOWQ3YmM4M2E4NDQ4YzBmZDJkIGxlZ2FjeS10cnVuaworNzM2OCBjMmVhYzEyNmU4ZmZjMDg3OGM2NDk5ZjhmNDFlYTNiYTRmNTUyNzNhIGxlZ2FjeS10cnVuaworNzM2OSBmMzFmNDdmZjFmZGQzZjQ5YjI3MWI4YmQ1NTViYzFhMzE0MDYzZDUxIGxlZ2FjeS10cnVuaworNzM3MCA1NTY4MzIwZGE5YjU5YWViZmVmMjkxNzVlNTFlYTk4N2YzMGY4YTFlIGxlZ2FjeS10cnVuaworNzM3MSA1MGFiYjA4NTA3NDA0NjllZDhiZjJkMTAzMzI5ZjRjYWNjZGUzOTM4IGxlZ2FjeS10cnVuaworNzM3MiA5MGMyMWRkZTQyODQzZmIwNGM1NGQ4OGYzMjk1ZTk3ODQ0YzY2Njc4IGxlZ2FjeS10cnVuaworNzM3MyA0Zjg3ZmQyZDA1NjJlYWIxODRhNTc2ODQ4ZWJlNDBkNTAyYjMxOTYyIGxlZ2FjeS10cnVuaworNzM3NCA5ZWZmNzg4MGU2ODQ0ODA1YjkzYjYwODhjMjVjM2NlMWMwZDEyMDdkIGxlZ2FjeS10cnVuaworNzM3NSAzN2U5N2EzMTAyNDExZDIwZDE3MjU2NWI5YzliOWZlZmFkMjEzNmYxIGxlZ2FjeS10cnVuaworNzM3NiA3NzAxMDRjOGY4NGEwYWZhMzAzNDk5MjRlYjNhNDc0MGZlOWIzNWM3IGxlZ2FjeS10cnVuaworNzM3NyBkNDZlNDc4YjU3NjdjMzg5ZjNlNzc0MzNkNjZmYWMxMDliN2I4NzMyIGxlZ2FjeS10cnVuaworNzM3OCA2YTYyOWQyNzhhMThiOTIyZjJiMzhjNmMzMTU1OTlhM2ZhNThmYWE2IGxlZ2FjeS10cnVuaworNzM3OSA1ZGMyMGE5ZTA1MDY3YmExNzAzNjdlOTgwM2UzOTY3NGIxYzMxY2U0IGxlZ2FjeS10cnVuaworNzM4MCAzMjIyMGM1NzI4ZjUxNDg2ZTBkMzE5OTZkNjcwMzQwMmU3NDQyZTgzIGxlZ2FjeS10cnVuaworNzM4MSBmY2U3ODFiMTI3YjkyZjM5ZDNmNzNlNTFiYTM4YmExMzBhNTk3NGE2IGxlZ2FjeS10cnVuaworNzM4MiBmZDM2MjY1MTFkYWRmY2NiNGU1M2U2NzRhMGYzOGM1MTMyZjUxNDI2IGxlZ2FjeS10cnVuaworNzM4MyBjZmExMjgyOTAyZGFjZGEyZWFhYWU4YjNjZGMwNGJmZDk3NWQ1NmI3IGxlZ2FjeS10cnVuaworNzM4NCAwODM0YWFkZGJmMWZlNDRlMjEzYmI0MTYyNmVkYTFmMjZmOTFhMjJjIGxlZ2FjeS10cnVuaworNzM4NSBmY2FmOWQxMTlhYmZkYzA5MGVmODEwNjQ4ZDgyOTYwOTMyOTk5ODFlIGxlZ2FjeS10cnVuaworNzM4NiAyMTg3OGM4NDk2MjZhZTFiNzQyZjhhYWYxYWJhMzJmYTI3OWEzNDlhIGxlZ2FjeS10cnVuaworNzM4NyA0YjU5MGY1OGM2YTdhMzkzZjNhMWQ2ZWExOTIyNmViOGI1ZjlhOTNkIGxlZ2FjeS10cnVuaworNzM4OCA5ZTJjM2M2ZDRmYTE1YzhmYjg0MzYwYjg1MmVmM2RiN2MyMzg4OGZiIGxlZ2FjeS10cnVuaworNzM4OSAyNTBiZGRiMmVjY2YyZGJjZDA0NTE5NDY4MTVkOGVlNTRkMTRmNWI1IGxlZ2FjeS10cnVuaworNzM5MCAxNGVkOTA5YTljODA5ZjdlYWJhZmI3OGY4N2VjN2VkMjAxNTJkMDJlIGxlZ2FjeS10cnVuaworNzM5MSAwNzllYjY5NDcxZTU4MzM5YzFlYmFjZDBiYzdhMzhmYzYzNjk0NGM3IGxlZ2FjeS10cnVuaworNzM5MiAxYmNkNDk3MmRhN2U4NmU0NGJkOWEyZTcwMWIwNWFmZDNkY2U5ZjVlIGxlZ2FjeS10cnVuaworNzM5MyAyYTRkM2Q5OWI4YTQ1YThjMmM2Zjk5YmY1MmMxNTJiYjA2NjllYWI1IGxlZ2FjeS10cnVuaworNzM5NCBmOGU1YmM1MzUxYTk3M2FlODQ4NTMwZDVhYzU4YTcwMzlhOWVhZWU4IGxlZ2FjeS10cnVuaworNzM5NSBlNzc1ODVhZjJhMjE2NTU4Mjg2NGVlODYwN2JiNzIwOTQ0YTkyOTc1IGxlZ2FjeS10cnVuaworNzM5NiA1NThhYmFjNzU5OGQyOTBlZTlkMmRlYmMwMTJlOGRhOGVkZjgwNzZmIGxlZ2FjeS10cnVuaworNzM5NyAyZGVjMzYzNDU2NjU4MzIyYWEzOGY2ZWMxOGU2NTg2ZjY0MDZjOTVjIGxlZ2FjeS10cnVuaworNzM5OCBhZTU3MzkyMmZkY2RhY2NiNjFiYmUyYTMzNDI2NDkzYTlhZDRiMzZhIGxlZ2FjeS10cnVuaworNzM5OSBmMDdlMThkYjM2NmM0OTFjNGViZGUwNmVkMDMxNTgzMGI0M2ZiOGJjIGxlZ2FjeS10cnVuaworNzQwMCA1MDdjNDYwMjA1MjY0ZDU4ZTM0MDhhYjE2MjU3ODdiOTI5YTYzZDAyIGxlZ2FjeS10cnVuaworNzQwMSA3MDY5YTJiZjViYWY2YTlhNTZhOWEyZTdlOTJjYWUwZjk4MDgwMjZjIGxlZ2FjeS10cnVuaworNzQwMiAwNDA0OTNkZTg0OGQ4ZGQ3Mjc1ZDU4NTgwMzk3NDBiM2IxOWVhMzQ4IGxlZ2FjeS10cnVuaworNzQwMyA5YmU2NWU2YzM1YzgyNmQ0ZjcwOWFkN2Y2NTE5YjQ2MzEzMzM0MGM3IGxlZ2FjeS10cnVuaworNzQwNCA1MTI2ZDRiODE5ZTllMTljNWFiMjU0MzY3NWIwMWQ5ODlkMWFjZjgxIGxlZ2FjeS10cnVuaworNzQwNSA1MzY5MzVjMjk0MDE3M2QxYmM0NDJhZWFkNGExM2E1MWIxYjBiMzQ5IGxlZ2FjeS10cnVuaworNzQwNiAxODAyM2U3YzM4NjJmY2M4Yzk4ZGJhNjMyZTg1ZWI1NDFkYTU4YjZiIGxlZ2FjeS10cnVuaworNzQwNyBiMzc4NzUzODI1YTA5MWZlY2I5NGU0Yzg3YmZhZDAwNDE1YjUzOTNlIGxlZ2FjeS10cnVuaworNzQwOCBiNTZiYzI1YWVjODUyYWQyOWZkYmY1MTc2Yzc4YzkxMjNhMGMyODE0IGxlZ2FjeS10cnVuaworNzQwOSA2YjYxOTEyZDVmMzU5YjA4NDE3OWQ1OTQ4MzEyYWE3YTVmODFkY2YyIGxlZ2FjeS10cnVuaworNzQxMCAwOTVjOWVlMjNiNTc2YzAxMzkxODViNWUxZmM4MTU1MzMwNjA0NGU2IGxlZ2FjeS10cnVuaworNzQxMSA3ZDBiZmI0NjgyZjlhZjUyMDUwNTEwZWQ4MDBkMTc3NWNiNDYyNGI4IGxlZ2FjeS10cnVuaworNzQxMiA3ODlkZTdjNjY3MTI5NjYyZjBiYTQ4NTVmYjRiMGIwZTA3YzhiZWQ0IGxlZ2FjeS10cnVuaworNzQxMyA3MGRiNGJlMWRkNGIyNWMxMjVlYjJlOThlYTU3OGI3MjAwNGQyZGJiIGxlZ2FjeS10cnVuaworNzQxNCAyMTdjZmI2MTk5YmUxMTk2MTBjMjI0Y2NiMmE4M2M4YWVjZjM2MzJlIGxlZ2FjeS10cnVuaworNzQxNSA1ZWVkNTE3NTAyODQxNjMwNDNiZTI5Nzc5ZWFjY2I1OTAxZGZmZTc5IGxlZ2FjeS10cnVuaworNzQxNiAzM2UzM2JhN2Y0MjFhZTdmOTZhYzAxMDM0ODE2MTAxZTBhODU1MjI5IGxlZ2FjeS10cnVuaworNzQxNyBhNTIwYzY4NGNlOGRjMDBjYjkzMTFlMzAxNzM0OTIxYmY5MjA4NTRmIGxlZ2FjeS10cnVuaworNzQxOCA1N2FlZDE2ZTIxNjVjOGIyY2Y4NzUxNmVjYzFkNmI1ZjBmNmIxMzBjIGxlZ2FjeS10cnVuaworNzQxOSA1MjhjMzE5YzZlN2ZmMGRmMWI5MTczYWJjODg4OWJiZTYwM2ZkYzg3IGxlZ2FjeS10cnVuaworNzQyMCA2MTE4Y2E1MTQwNGQ4NjAyZmY5MDhiZmU5ZGQzZDJhMTYyYzg2Nzc5IGxlZ2FjeS10cnVuaworNzQyMSBiYTExYjU4YjJiMGEzOGMwYzdlOWQyMDI0Nzg0OTI5NzY2NjdkZWZhIGxlZ2FjeS10cnVuaworNzQyMiA3OGQ4ODAwNDMxMjllMDc0NWYyNTJlMzQ1NWQ5ZmIwYjkzZjAzNDliIGxlZ2FjeS10cnVuaworNzQyMyA1NjkzNDM0ZWE1MzhjODlmZDUzNWNiMThkZTk5NjUzODJiZWY0M2Q1IGxlZ2FjeS10cnVuaworNzQyNCBjYTlhYTQ3NDExZGU0YmEyOTA5ODc2MTYxYWIwMTcyOGZkODY5N2MxIGxlZ2FjeS10cnVuaworNzQyNSAxOWQ4MTliMTZiODI1MmEwMjEyOTNiM2M0YTMzMDBlZTZhYTYxNjdmIGxlZ2FjeS10cnVuaworNzQyNiBkYTJhYmJmOTM4N2M2MWViY2ExNWM5YzhkZTU4YjAyYjMyMTIxY2RiIGxlZ2FjeS10cnVuaworNzQyNyAwNWZkNDMyZDllMmI2OGQ4ZTkyZTM0MjEzNDdmMDY4MTA1NzNiYTI3IGxlZ2FjeS10cnVuaworNzQyOCBkYTRhNDk3YmVhM2E5NDgzOWY4ODVmMzM3MDRlZTc4NGJmYWMwNzc0IGxlZ2FjeS10cnVuaworNzQyOSBiMWVjZGIyZGEyNDAwNTUxOWUxOTY5OWE0ZTIzNDU4YTg2YTFjMDlmIGxlZ2FjeS10cnVuaworNzQzMCBlNmI3OTdhYWE2OWY3ZDIwNWI1MGU4NDkxNmM3OTNhNWEyMzZmYjFkIGxlZ2FjeS10cnVuaworNzQzMSA3MzMyNTAxOWFkMzlmZjViZjFkZTUxYzEzY2YzYTExNTViMjI2OTQ1IGxlZ2FjeS10cnVuaworNzQzMiA5ZDU4ZDBlOTg3N2U2ZTdhZjJhMmI5N2IwNWVhZjIxMzIzNzJkMjdlIGxlZ2FjeS10cnVuaworNzQzMyBjZTQzOGQzNmQ0ZmJmMTFkNGQ3ZjQ1N2FhZGNhZGFkYzQ3YTQ2NWRmIGxlZ2FjeS10cnVuaworNzQzNCA4OWQwNzc5NWZkNjk0ZmU0MjUyN2YyZjZjNGFmMGQ3MmYyNDQwZmUxIGxlZ2FjeS10cnVuaworNzQzNSAzOGY5ZTQ2ZDIzMTdiNTEwNzNiNjViNzZlYmM4YzVhNzEzZGRiZjgwIGxlZ2FjeS10cnVuaworNzQzNiA1ZTYzMzIyZjRjMDYxM2I4MmQzMTg0MDlmODQ3NGE1NTc0MmIyZDI4IGxlZ2FjeS10cnVuaworNzQzNyA3NjVkOTYyZjQ0NDk4MjU2NmZhZTJjNWE5ZTgxOTA3ZWYwMTE5YzI3IGxlZ2FjeS10cnVuaworNzQzOCA1ZGVkMmJjMTkwOGIzNjU3MWIxMjhhNGE5OWE5NDZlYjA4ZGNhODJmIGxlZ2FjeS10cnVuaworNzQzOSA2Y2U2MWYyMTJjM2U3ZjAwMWYxM2Y1OTdhZGM2ODE4Y2Q5OTgyMDFmIGxlZ2FjeS10cnVuaworNzQ0MCBkODRjYTE5Nzg2OGIzNTQ3MWMzYTU3YmIxMmU2MzA4Nzc4M2MyMDJmIGxlZ2FjeS10cnVuaworNzQ0MSA5YmJkNTdkMzYwOWZiYjQxMzNjYTBiNDIyMDUxZTdhOGYzMDYzYWUxIGxlZ2FjeS10cnVuaworNzQ0MiAzNzA1Zjc1YTgzNTVlMjM2NTQ0ZGNlNzBiNmYzNGM0MjQ2MGVkOTY4IGxlZ2FjeS10cnVuaworNzQ0MyAzZDMyZGEzN2Q2MjdkOGJhMDIyMTYwYWI0YjM4NDFjNzMxYTFlNWFkIGxlZ2FjeS10cnVuaworNzQ0NCAwZjFhZTYyZGQzYjg3ZTBhMTcxODBmZGQzYmUwNGMwMDQ5MWNlMzU5IGxlZ2FjeS10cnVuaworNzQ0NSA4MDU0ODdkNTA2MjBiNGY1NDZlMWI4ZDEzMDk3NTcyMjlmMDdlZTE5IGxlZ2FjeS10cnVuaworNzQ0NiA4ZDhjNzZhMWQyNTA0MDYyZTFmZjcyMTk1NDZlOGU5MDdkODgwNTNkIGxlZ2FjeS10cnVuaworNzQ0NyA2ZWNlNWNmYjQ5ZmZkYjNmZGI0M2QzNzdiN2U0ZGY5YmNiOWMwMzNjIGxlZ2FjeS10cnVuaworNzQ0OCA3ZDczY2RjMDExOTgyYTVlNzFjY2RiYzJlMGRkZGZjMjJhZTQ3N2QxIGxlZ2FjeS10cnVuaworNzQ0OSAzOTc0NTU3NGJmMDdhZmM2ZjE4YjFlNDg4Zjk4ZWM4MjQ1Yjg2MDlkIGxlZ2FjeS10cnVuaworNzQ1MCBiNGE0MDBiMzU5NWUyNGNlOTQ4Yzg0MWJhZTI4ZmRmMTc2N2ZiYTAzIGxlZ2FjeS10cnVuaworNzQ1MSAyZTI5NDVkODE2M2M2NzE3MjgzODg3NWYxOTIzN2QwMTNjM2QwMDYxIGxlZ2FjeS10cnVuaworNzQ1MiA5YjE2OTQzOTA4MjBkZDA0NDJhZGNmZTVkY2JkZmIwNjhjNzM4ZTU5IGxlZ2FjeS10cnVuaworNzQ1MyA0N2VlM2I0ZTJkODAzM2NhY2Q5OWQ2MzUyOGI0ZDY0M2MyNmE2MTJkIGxlZ2FjeS10cnVuaworNzQ1NCBiODY0YjQxNGM0NTdjZDllNDQ1NjA1ZTVhMDgyNzZmNDJmNzg5YjljIGxlZ2FjeS10cnVuaworNzQ1NSBhOGQ3YmZlYzdjOTJiN2MxOGFjOWVjODZjOGQyNDgwZDhhOWJjZGJkIGxlZ2FjeS10cnVuaworNzQ1NiA5OTQzNzZhZjkwNjRkMzBmMWU4MmZhOTliMTE0NDU2YzAzZTUwOTc3IGxlZ2FjeS10cnVuaworNzQ1NyBiNWU3ZmM4YmY5MTk2MzY4ZGMzMGYyN2YyY2U4NDg3YmE4MmVkZGQxIGxlZ2FjeS10cnVuaworNzQ1OCA2NmNiYjM3YjRjMGJkNjAwNTMxOTQ4MTk0MGY3NjlhNjM0MDM4YzFmIGxlZ2FjeS10cnVuaworNzQ1OSA3N2Y5NzAwNzY4MzE0MDI3NjAzYTMyY2YwOTBkZWRjMTRlY2ViYTYyIGxlZ2FjeS10cnVuaworNzQ2MCA0MzA5YmM5N2VjYzZhODc2OWU4YTZkZGMwYWFjNjM5YTE3NTI5ZGU2IGxlZ2FjeS10cnVuaworNzQ2MSBkOGQ1NjNiYWY4NzQ3ODY3YzA3MDQ5Y2VhMWQwNzNiM2Q0MGE1YTQxIGxlZ2FjeS10cnVuaworNzQ2MiAxZGVkOTQzOGZhNTE1ZDc3MzhhMDAyY2MwYTAyZjczZDczMDk4OTcxIGxlZ2FjeS10cnVuaworNzQ2MyBkZjM4NWNjMGQyZTM4NzBlZmQ4NjJkN2Q3ZjQ5ZjU3M2EyN2I3MmY0IGxlZ2FjeS10cnVuaworNzQ2NCA2NTE0OGRlZDUxMDg0ZGFmZDZjYmQ0M2JiNTAzNjAwMDRlZjUxNmU5IGxlZ2FjeS10cnVuaworNzQ2NSA2ZTE3ZWY1YTI2Yzg5NDRhODRiM2UzNmFjMDQ4ODhmY2I4ZDJiYTc4IGxlZ2FjeS10cnVuaworNzQ2NiA4Mjc2OTE2ZTFlYThkY2RlNTU4N2MzODhhNWM4M2MzNWJiNzZjZmJiIGxlZ2FjeS10cnVuaworNzQ2NyAxMWJhY2I4ZDczMWFkNmNhZGRjZDBkODljNWUwMWQwYjU5ZTM2ZGExIGxlZ2FjeS10cnVuaworNzQ2OCBiODJkODQ3YjNkY2JjY2Q2M2RlMDc1ZTM4NzlhOTM2OWRmYjM0ZTBkIGxlZ2FjeS10cnVuaworNzQ2OSA5YmM2NTJlOWYyYjQ2ZDI5MjhiMDMwMDNmMDhjNzViODgxNDc5MDU3IGxlZ2FjeS10cnVuaworNzQ3MCAyNjdlZDQ4MGVjMWI4NGMxZGUwN2ZhODY3ZjBkYjI2YjRjNzE1MmRhIGxlZ2FjeS10cnVuaworNzQ3MSA4ZGUxZjZiMDdkZjljZDdkYzBmYzBiNDZlNzJkN2RjMGQwNmMzZjA2IGxlZ2FjeS10cnVuaworNzQ3MiA1OGJiYWYyODRhZDY2ZWYwY2U3ZjQ4MThkMDQwNWIzMGFiNmNlOGE4IGxlZ2FjeS10cnVuaworNzQ3MyBjYzRiYTcyMTRiMThmOTk3ZTk5ZDA3MDMxMDBjOGQxNGJjOWU1ODdlIGxlZ2FjeS10cnVuaworNzQ3NCA0NjgxMjRhMTU2MGEyZDJlYmEzZjQ0YTYwNTIxNGVjM2FlM2RlYjRjIGxlZ2FjeS10cnVuaworNzQ3NSA3YzdhMTg2YjZkODZiMmIyMDMwNTA3MzE1ZGZlMDk5NGVlNjY1YjE5IGxlZ2FjeS10cnVuaworNzQ3NiAxN2M3YTEzM2NjZjcxMTI1ZmQyNDU4ZDRhNGU1Njc1NzBjNzJiN2VhIGxlZ2FjeS10cnVuaworNzQ3NyBhZTNiNDZhNzM3NjU3YjNmNDQwYWI3NTZkY2MxNjViNzBkYmVlOGVlIGxlZ2FjeS10cnVuaworNzQ3OCA2NWFhY2UyMDEyZTUyYzNmMTk0OTFlODljMTg0MjI5MGRkZDFiMWYxIGxlZ2FjeS10cnVuaworNzQ3OSA0YzhlNGU5MzExZTRlMGU1MmU1MDkyZWNiYWQxYmEyNjRmYTQ5ZmY1IGxlZ2FjeS10cnVuaworNzQ4MCBmMTdiYWNlNDhkZDY4YTJjODBmNDRjMDExNWQzYWJhN2QyOGNhMDk3IGxlZ2FjeS10cnVuaworNzQ4MSA1ZjRiMjNlM2Q5N2NiMzhkMGE5M2RhZTQxOGM4ODI5NTQzNWM1ZTZhIGxlZ2FjeS10cnVuaworNzQ4MiBlNGY3YzMzMWJiMWEyZmZmM2UzNThmYmU5NmZiYjk4NGU3ZTNmZDRhIGxlZ2FjeS10cnVuaworNzQ4MyBmNTVlODJlMWU1NjU4YzBmZTQ2MWY0ODM3NTUwYzgzMjE3NGIyYjBiIGxlZ2FjeS10cnVuaworNzQ4NCA0MDJlMzZjODNkMjAyOTAwYTAyM2UxNjA1ZWJkYWRiZGEzNmI3ZTIyIGxlZ2FjeS10cnVuaworNzQ4NSBmMGNmOGQyNzVmYmMxNzUxNDI4ZDBhMzNlZjFlMzYzNzQ4OTFiYTAwIGxlZ2FjeS10cnVuaworNzQ4NiA2ODQwZmY4OWQyNGExZjE5ZmMzMjhlNTFhMDE2NTdjZmUyY2Q5NzU1IGxlZ2FjeS10cnVuaworNzQ4NyA3N2Y5YzI1ZTFmMWZjYWNjOTNmMmU2M2IwY2JiYzJiNzBhNDc2NWZmIGxlZ2FjeS10cnVuaworNzQ4OCA0Y2E0ZTU0YzljZDgzNzZkZjE0MTdlZTI5YzYzYmZiNzlkYTI1Y2Y5IGxlZ2FjeS10cnVuaworNzQ4OSAwYmZhYzg5YWZjODNmZDZiMGE5MjliODJiNzcyYjgxODUyMmUyNDRjIGxlZ2FjeS10cnVuaworNzQ5MCBiMWUyZWVhNjZjYjZjZmRjMmE1ZTY0NjllNTUzMTQ3Y2QxZWU0Nzg0IGxlZ2FjeS10cnVuaworNzQ5MSBmMWFmMDk3YTVlNWQ3OTBjMmE2YjA2Y2FkMDAwNjRjNGQyNjEzZTAyIGxlZ2FjeS10cnVuaworNzQ5MiAxM2QzOGViN2UyMjVkMTgzNTRjYTRhNjdhODRhODgwODI2YTUxMTY4IGxlZ2FjeS10cnVuaworNzQ5MyAwMDFhNTA0MmIxODFhN2RhYjU0YjZjZDEwZWQxMjcyYmI2MmQ2YjcwIGxlZ2FjeS10cnVuaworNzQ5NCAyODkzNTYwOWRmYWVhNjRhYTA2Yjk2YzVlNjA0NTY3OTAyZDc0NGUwIGxlZ2FjeS10cnVuaworNzQ5NSAwZWNhOWQ1ZjdiMmQ0YjFhMDdjYjY0MzQ1MjVhOGI5YmM3M2RkNWY4IGxlZ2FjeS10cnVuaworNzQ5NiBjMjJhZGQzNjQzNTE4ZjZjNDgwYTZmNDY3MTZmZGEwZDdlMmI1YzA1IGxlZ2FjeS10cnVuaworNzQ5NyA2MjY0NTc4N2ZiYzhkOTJjYzI5YzJhNzcxNzhjODk3YWEzMzA1YzA5IGxlZ2FjeS10cnVuaworNzQ5OCA3NWMxZWU4ODJhNGFkNDhhZDZmNDVlYjk2ODJmNDdkMDIxYTA2MGU2IGxlZ2FjeS10cnVuaworNzQ5OSA3ZTUxOTA5OTk2MzMyZGFiMDc2MjllNjI4MGVlYjAxZWQ1N2RjODI4IGxlZ2FjeS10cnVuaworNzUwMCBiZmY4ZjVhZmM2N2ZlYzY0MWU4ZmUzMGYyZjVlMTE3NzVjODhjOTVjIGxlZ2FjeS10cnVuaworNzUwMSBiNWExYmIyZDE3ZmFkNDM2MTMzNmY5NTk0YTdkYzEyMGVjZDUxZTJkIGxlZ2FjeS10cnVuaworNzUwMiAwZWE0ZWE1YjJlYjczZmVhOGVlYTI4ZDEwNWI2ZDgyY2QzZWI2MzYyIGxlZ2FjeS10cnVuaworNzUwMyAwNjc3Yzc3YWE3MGRmMTllYjQ5NmMzMWNjM2RlY2NiNTRkNTgzNzBlIGxlZ2FjeS10cnVuaworNzUwNCAzZjAzN2VlNzczMWJlMzIzODU2ZWM0Njc5OTJlYzE1ZDg5N2QxYmE3IGxlZ2FjeS10cnVuaworNzUwNSAwMGMzY2IxMDdlNWYyNzg4MDZjNGQyYzI2OWVkODg3ZjMxMDkzMWI5IGxlZ2FjeS10cnVuaworNzUwNiAwMTdkNzI1NDRkZjJiZWM1M2ZkOTljMjQwYmFmYjVlYmFjNmJiNGFjIGxlZ2FjeS10cnVuaworNzUwNyBiZTMxZTdlMTkyNDFiMWQ1ZTVlY2ZkMWE0ZjY0MTExNzdhMWJlMmFjIGxlZ2FjeS10cnVuaworNzUwOCA1YjdiNzAzZGFiZmEwNzgzYjkxZjAxNGViMDMxYzE5MmNjZGI5NjAzIGxlZ2FjeS10cnVuaworNzUwOSBkZTJhNzVjN2VhOWZmNDY3Nzc3YjYwZjlkOTc4YjYxMjQwN2VmMTUzIGxlZ2FjeS10cnVuaworNzUxMCBhMGU2MmQ4NWRlNzdhMTUwZTI3OTdiMWRkOGQ4MjY5Njg2M2ZmMjQyIGxlZ2FjeS10cnVuaworNzUxMSA2OTc2NWQ2NDMxZTFjNGE5MzhhYmMxMzkxODMxNGNlZDMyM2E2MWZlIGxlZ2FjeS10cnVuaworNzUxMiA5YWQ3YjhjMzZjNzk0MDUyMzFkMGFiYmY3MWNkZjE4MjIxYjc3NjUyIGxlZ2FjeS10cnVuaworNzUxMyBhODIwZGVhZDA2ZTY3NjJmYzc4YjZiMTJiNjA3YTYzODFhMWVlMWI0IGxlZ2FjeS10cnVuaworNzUxNCAzODAzMjI2Nzk2OGMwMTcyYmE2Zjk0YWZhMDllNmM0YTc0MjJjMDBkIGxlZ2FjeS10cnVuaworNzUxNSA4NzZlNTczNjRjNjIzOTk1Y2ZhNWY0NTU1MjA2MGU0OTJjZjQ0NzZiIGxlZ2FjeS10cnVuaworNzUxNiBjNDk3OTI5YjIzNzExNWEyYzFkNzNlMDYyNWEzNjdlMzM3YzE0ZmM2IGxlZ2FjeS10cnVuaworNzUxNyA5YjdlMGNmNTE5OTA1YWM0OTE5OTgxMWYxMmZlNzJlZGUxZDRjMGRiIGxlZ2FjeS10cnVuaworNzUxOCAxMDRhNjQ2ZmM3YTY3ZjI3ZGYyNWQ0ZTk0MWIyMDAzNWU1ODc2ZjlmIGxlZ2FjeS10cnVuaworNzUxOSBlZTNhYzllMGEwMzIyOTg2MmQxOTA1NmE2NzQzYjE5MzRhMjUwYjY5IGxlZ2FjeS10cnVuaworNzUyMCBiMWQ4MjY5N2MwYjIzNjY3NGQwZTYxYzBlZmNiMGE5MTFlOWM3MmRkIGxlZ2FjeS10cnVuaworNzUyMSA2NTg4MTUyMzA1NDZhNDg5MmMyYWU1MTk0NjhlZGI0ODI3MDg3OGZlIGxlZ2FjeS10cnVuaworNzUyMiA3YTljYWM3Y2I5MTA5ZjQ3M2FjZGRkMWE5ZDIzZTI2OGFkOTVlMGNjIGxlZ2FjeS10cnVuaworNzUyMyBmZGU3MzQ2N2I1ODQ3YmY1ZDUyMjRlNmQ4NTQyMzIzZDlhNjhkNzY1IGxlZ2FjeS10cnVuaworNzUyNCA5NDZiMmIyYTc2MjJmYTE3YWQ0MjQ4MjgzNzZhNWU4OGE3YTAxM2FmIGxlZ2FjeS10cnVuaworNzUyNSA4NTc5ZTM0NDFkOWJjOTk5NWQ5OGU4YmYyNDg1M2ZlZTU1Yjc1NDUyIGxlZ2FjeS10cnVuaworNzUyNiA3ZjZkMTlmYzVhY2FjZmM4NTRhNzNiY2NkZjJhMjg5ZGE2YzEzODdkIGxlZ2FjeS10cnVuaworNzUyNyA3ODQxYzQ4Y2RiNWI0OTY3ZGRhNjNjMDBhZmFhZGY4NTNjM2EzNTZlIGxlZ2FjeS10cnVuaworNzUyOCAyMTliZGQ4YWZiMzhlZjA1YWM0MTdlNzI4YjU5MjI4Yzc0NDU4OTVhIGxlZ2FjeS10cnVuaworNzUyOSBlOWM0NDJkMDkzNmZiNWMzYjkyMmM3YTU5NDRjNWU5ZmY2ZDkyNjlhIGxlZ2FjeS10cnVuaworNzUzMCBmNTdlMTgxZmY2MzhmZGIxYzlhMzY5NjdhMzBiNGM4ZGNiMTk3ZDQ4IGxlZ2FjeS10cnVuaworNzUzMSBlNjI5Yzg4ZjNkZDgwNzczYmZlYzEzMmQzMTc2MjUwZmI4YTE2OGEyIGxlZ2FjeS10cnVuaworNzUzMiA2YzdhNzZmZDVkYzFlOTMyMGUyMTc2ZmQwNzE3OTVhNDE5YjBhOTM5IGxlZ2FjeS10cnVuaworNzUzMyAzNzE0NjRmNjY2NmI2NmQ3ZjFkZDVmNDZkZmExNjE5MTNlNDczOThlIGxlZ2FjeS10cnVuaworNzUzNCAxOTJkNTcxY2M0NjE1Y2U2ODRhZjQxODIzYWZjMTgwN2MxNTc5YTg5IGxlZ2FjeS10cnVuaworNzUzNSA1YTIzMjg3MGNjZWFiNWYzYzRmNWM5YjFlNzhjZTE1ZTFmYjJhZDgxIGxlZ2FjeS10cnVuaworNzUzNiAzNDZmZjliYTlkMzYzNzA0Y2FjMGNjYTBjM2MxMDNiODY3MTQxNWNjIGxlZ2FjeS10cnVuaworNzUzNyBkNjgxNjMxZDk5MmYyMDFiNDQxNTE4YWYyMmMwMDU0NTRkNmI2MGU1IGxlZ2FjeS10cnVuaworNzUzOCBmMDczMWZhNDQ0N2Y1MjYyZjU1MTc4M2M2YThjZGNhZDA0ODliMDNlIGxlZ2FjeS10cnVuaworNzUzOSA3ZGRlZDc4NTFmY2E4YzRiNDY2Nzc4NGFhOTcyOTRhMjk3NWEwYTZhIGxlZ2FjeS10cnVuaworNzU0MCBiNmZjZTcyNDNiYTBiYTg5NmYwNzgyMjcyOGM1NTAyMDZkNzJlOWRiIGxlZ2FjeS10cnVuaworNzU0MSA3NzYxNmIzMDAxZWY4ZjdlMDljNDYzOWMzNmMyODRkZDk3MWRlZTNhIGxlZ2FjeS10cnVuaworNzU0MiA0YWFjYTQyYTJhMTZjOTUxNzRiMmZmZjdhNWMzZDZjYWVmODViODc5IGxlZ2FjeS10cnVuaworNzU0MyA4ZWNmMmQ3YzlmYjFhZGI0Mzg1Y2Y3ZDBmZGFmNDQzMTJiZDEyNDFiIGxlZ2FjeS10cnVuaworNzU0NCBmYTMxNDc2YTI3ODZlZThmNTRkMGU1YzA5ZTVlZDAxN2ZlYjExNmU3IGxlZ2FjeS10cnVuaworNzU0NSBlYjEyZjQwNDZkMGJlMGYwZGY2NGY2ZjgwYzZiZTUxMDIxNjI5MzEwIGxlZ2FjeS10cnVuaworNzU0NiA0NGJkZjBiNTZjMGJkODM0MTQzNGNjZjhiOWEyMzcwOGEyMmEwZTFlIGxlZ2FjeS10cnVuaworNzU0NyBkMjQ4M2MyNzc0MmMxNTRjYzQ2MjBkZjUzZTY4OTllOWExN2U3NjcyIGxlZ2FjeS10cnVuaworNzU0OCBlMjFmMWQyNTk1ZGU4Yjk5YjgwYWRkYTY4NzJlZGZkZmNlMDg0NGNhIGxlZ2FjeS10cnVuaworNzU0OSAzMjczYWNiZTQ3NmZkYWE1ZmFiODlmNmEyMjNhOTJkMTMxOWZjY2ZlIGxlZ2FjeS10cnVuaworNzU1MCA1YjlkNDFmNGMwOGMxMTVmODM4MzViYTE4YTE3OTg1ZDc4OWE3Y2M0IGxlZ2FjeS10cnVuaworNzU1MSA0ZWRhYjQ3NDk3NGNlMDc3NjcwNjQ3MmEyM2U3OWMzZTk0ZjRlNDNhIGxlZ2FjeS10cnVuaworNzU1MiAyM2M0Yzc4MzhhYzJhYjNhNjY3NWMxY2FjYjcxYzAwZjEyNzAxYTMwIGxlZ2FjeS10cnVuaworNzU1MyA3ZjRiMzJlODY1NDU1NzI1MmI2N2FmZTJkYzllYmYzMWUxNDQzOGI3IGxlZ2FjeS10cnVuaworNzU1NCBkNmIyOTJhMzNjZmVmNTNjNzVlYTQ5ZmMyN2NiYmQ4Yzk5NTNjMDQ1IGxlZ2FjeS10cnVuaworNzU1NSA5YThhZGFmNThjZTg2MDc2YjY4OTM1NWNkMGRiNTBiNzJkNmQxOTY3IGxlZ2FjeS10cnVuaworNzU1NiAxYjYxOWI4MTFjMTAzNWE4MTUyM2I2MGIzNDhkNzA3NTg3YTQ3N2ZhIGxlZ2FjeS10cnVuaworNzU1NyAyYzg4MTJlZWE2Mzc5NDE1NTRhNGI2NTZkNGE5ZTE1YWNjMDIyMDBiIGxlZ2FjeS10cnVuaworNzU1OCA3YWIxYWEwOGQzNDhkYjBjZmE3YTM1MmRkOWVhNDM1OWIzOGQxZjExIGxlZ2FjeS10cnVuaworNzU1OSBhZmMzZTRlMDg3NDBiNjM4YWNjNTQwMzNhMTZhMzNiYzE1NmFmYTA0IGxlZ2FjeS10cnVuaworNzU2MCBkMzcwNjU3OTQ2OGU1MGQ2YTFhMTExMjU3MTgxZjYxNDUxMjM0N2MyIGxlZ2FjeS10cnVuaworNzU2MSBhYTczZGE2NjFjZGZmYWUwOWFmOTMzZTJlYzIxNDczNDE5MmM5MDQyIGxlZ2FjeS10cnVuaworNzU2MiA2ZWQ4ZWI0YjY2NGIzMWJlMTg4ODNjZTM1ZTEzMmUzMTZjZWQ3M2ZhIGxlZ2FjeS10cnVuaworNzU2MyBlNDI4ZDJjZmVkNDBiM2E5Y2Y2OTlhNjFkMDA5ODk4MGVlYTY0ZDZjIGxlZ2FjeS10cnVuaworNzU2NCA5MWY4NjMwNmIwN2I4NWZhYmRmOGY1NDZhYjhhODI1YTllYTBlODM3IGxlZ2FjeS10cnVuaworNzU2NSBiNjdjMDJiZDVlMjM2MGU0ODg5OTM2NzQ4ZGU2MTdiMzEzYjcwMjAxIGxlZ2FjeS10cnVuaworNzU2NiAzZmVlYzg1YmJhOWI2Mzk5ZjQ0NWVkNTIzYjNiNTdjNDA0ZTFkMmI4IGxlZ2FjeS10cnVuaworNzU2NyBjYjdhYWRkOWQ5ZjI5MjQ4NGFlZTRlMDY0ZWRmMGFlMTc5ZGFkZDgxIGxlZ2FjeS10cnVuaworNzU2OCBkOTk2ZGM0MmZlNjQxNWFkODIwOTY3MmE4YzY3MzQ2ZmM0ODRiNzQ2IGxlZ2FjeS10cnVuaworNzU2OSAzOGFkYmIzOWYxNWNmNTc3OTU5MDg0OThmMDJhYzQ0NTdlYWQwYzc4IGxlZ2FjeS10cnVuaworNzU3MCAxMTkyMmEyZWNhY2RlNGQ4MThjNDYyMWE2ZTI2ODMxZTM4YWYzOGI4IGxlZ2FjeS10cnVuaworNzU3MSAzMGMxMGIyMjI5NTMxOGVhOWU2ODdiYWI1YmViNDdmNjJjZTQxODAwIGxlZ2FjeS10cnVuaworNzU3MiA1N2I3YTAzYTMyNTJjMGU1M2JhN2RmMjhiOWYyNDI2ZmI5MjA2ZmZiIGxlZ2FjeS10cnVuaworNzU3MyBhNDQ1ODZiZDlmYWIzZjcwOTVhNDgzNzBkOTE2ZTdlZmJjYmMyYWIxIGxlZ2FjeS10cnVuaworNzU3NCBiNDIzMWQ1OTIyODFmMjViMGE1OTFiNjMzMGI4OTkzNzk0MTdlZjQ2IGxlZ2FjeS10cnVuaworNzU3NSAzMjMxMDI1MWQ3Njc0MDg2NDk4ZTBiNjVjZjhkYzAzZGEyOTk2MWEwIGxlZ2FjeS10cnVuaworNzU3NiAyNDk3YzhiMDQxMDE3Yzk2Njg2YWQxMzIwYmRiMWU3OTQyZjlhMDUwIGxlZ2FjeS10cnVuaworNzU3NyBlZTcwYjRjNzE4OTkzYjYwZmRhYjQzZDE5ZTM4MTVmNzVhNThjOTBhIGxlZ2FjeS10cnVuaworNzU3OCA0OTJjMGNhZTFmMDUyMjliMTE2YmE3YmQxMGM5MmM2ZWIyNGY5OGQwIGxlZ2FjeS10cnVuaworNzU3OSA0MTA5YTE3MWM5MDFhNDFmOGIzOTFkZWYzYjAxZTQyOTE5ODkxZjFhIGxlZ2FjeS10cnVuaworNzU4MCAwMGZkNjg1N2Y3NmI5MzljNWI5ZWEwMDBkMWNmODNkNmEzZTYxZjUwIGxlZ2FjeS10cnVuaworNzU4MSA5NDA4MTMxMTVmNzc1Yjg2Mjg4Y2ZjZGIwODA3MzA2ZDFlM2E4MThjIGxlZ2FjeS10cnVuaworNzU4MiBmOWI0NmI1MDM3NTE5ZjQ0MzMzNzQyYTE3YmU3NGZlMzg2MjRhMTMxIGxlZ2FjeS10cnVuaworNzU4MyBhOWE2ZDQxNmI5NDViNzk4OTIxN2JjODQ5MGQ1ODBkZGI0MzQ5ODIzIGxlZ2FjeS10cnVuaworNzU4NCAwYmJmOTc4NjFjZDlhMTYwNDA2NTAwMWUxZDIyYjYyZTYxNDJiODY2IGxlZ2FjeS10cnVuaworNzU4NSAwNzNmMWIzYWQ5ZDJiYWY0MGI0Y2JmMDJiNmQwMjU4MTI4MmFkYzk3IGxlZ2FjeS10cnVuaworNzU4NiAyMWI4NzEzMjVjODUzNGQxYjI4N2JhOTA3N2ZjNzY2NGVjOWZkZWMxIGxlZ2FjeS10cnVuaworNzU4NyBjYTYzODhiY2MwNWE1ZDkyOGE2MjYzNzcyMDQzY2VhZTBkZGFkZWRlIGxlZ2FjeS10cnVuaworNzU4OCBmYjhjZWZjZWZkODFlYTM2OTBhMDEzNjM5ZWQxMTg5Zjk0MDZkZDEyIGxlZ2FjeS10cnVuaworNzU4OSBiOWNlM2NjNTAwNzY3MWE4NzQxY2U2NWEzNDYyNTIyOTFkMTMzMTYzIGxlZ2FjeS10cnVuaworNzU5MCBlM2FiNDg5ODhjNzc5ODUzYzExYjVkYmViYTlhODg3ZWRjNzE2ZWU0IGxlZ2FjeS10cnVuaworNzU5MSA1MDY2NjQ3Njc3MzZlZmI0MDIwZTdjZWNkZjZiMmM5NzZmMmQxOGE5IGxlZ2FjeS10cnVuaworNzU5MiAyYmIwYmRhMTU4NWM3ZmE1NDk3MzVhMDllNTAyZDA4ZGU1YWVkZTMyIGxlZ2FjeS10cnVuaworNzU5MyAwMDI4NjVhZjU1ZTViNThjOGMzMTFmOTA2YTZmZTQwMzUxMDQ1YjUzIGxlZ2FjeS10cnVuaworNzU5NCBiZGEwMWEzNzQ3NjIyNWJhZjgwMWNmMDgxMTQ3NTNkNTgwYTgxNGVmIGxlZ2FjeS10cnVuaworNzU5NSBhNDhmMzY3OGY5ZTFhOGRlOTM5NGZkYjMwZjQyNmRhMjc4NDAxNmVlIGxlZ2FjeS10cnVuaworNzU5NiAyZTZlYjFjNzE1Y2U1YWMxZTc5NDM1MGYzM2JmN2ExMjVhYWJlNzI1IGxlZ2FjeS10cnVuaworNzU5NyA1N2IwZjE2MTllMjgyNDA0MmE3YzFhNWYzNjc2ODI5OGU0YjI4ZjhjIGxlZ2FjeS10cnVuaworNzU5OCAwNWZmZmQ1NWIwMTRjMDE1MGIwMmM5ZTEwNWExMTgyMjJiMzI2ZWFiIGxlZ2FjeS10cnVuaworNzU5OSAxNzE1OTFiMzlmNjMyZWQwYjQ1YmJhYzE2ZGNjODllMTA3NzA3MjdiIGxlZ2FjeS10cnVuaworNzYwMCA1NGE5YWRjYTIxNWM2ZTBiMWE3NDViYmNhNzVkNzViZDNiMTAyY2FjIGxlZ2FjeS10cnVuaworNzYwMSA3Yjk0MGYyOTYyMWI4NWZiOWJkZTVhN2E1NTAzYWQzZDZiYmNmZTI1IGxlZ2FjeS10cnVuaworNzYwMiBmMjIyMTMxOTI1MzE2MTBjN2E0NmI0NzYzZWFjNzg3ZDQ4NGQ5MDY5IGxlZ2FjeS10cnVuaworNzYwMyBiZjFiZDY0Zjg1ZTAxZjI5ZWFhNGVjMjdiNTQ3ZmFmYWI1N2NjNGMyIGxlZ2FjeS10cnVuaworNzYwNCAxMDJlMjkxMmQwZDE3NzZhNzYyZjJmZDNkOGRkMjhhYzQ5ZjhiMjAzIGxlZ2FjeS10cnVuaworNzYwNSAwYmY3Mzk0ZGJhMjIwNWIwMTU0MjMyMTdjNjVjMDU3M2M5N2RlZjIyIGxlZ2FjeS10cnVuaworNzYwNiBlYzQ1Mjc2YTZkYWRiOWJlMTNkYmNhNWE1MjBjMzA2NGRkOWNiOGFhIGxlZ2FjeS10cnVuaworNzYwNyAwZmMxZGFjZGFmZDczOGJkZTM3NTIyZjg5YWQ4ZWVmZTliYjkwNjQ2IGxlZ2FjeS10cnVuaworNzYwOCA2NjYxNTJiNzcwMjcxMDlmMzNjNzAyOGQzODVjN2ZhNDliOGMwZjRjIGxlZ2FjeS10cnVuaworNzYwOSBkZWYwM2QzYjhkZGJmOGJkMjFmOTJiMWQ4ZWI4MjM5YzczNzA4Zjk4IGxlZ2FjeS10cnVuaworNzYxMCA3ZmE5YTY0NDQ4M2U4MmU5YjMxZGViNTdhZmI2ODljOTFiMzk3OTI2IGxlZ2FjeS10cnVuaworNzYxMSBhNTEzZDgzYzA2Y2IwMDFmMGQzYWZmNGZkNWQ5NjdhYzlmODA1ZmQ2IGxlZ2FjeS10cnVuaworNzYxMiA0MGViOGIwZWUxOTI2MWI1YzJjOTIyNGM1NTBjMWIyMTIxMjdlMWUzIGxlZ2FjeS10cnVuaworNzYxMyBmOTNlYzFhYzE3YWE3MTkwZjYwODBiNTA0MDk4ZjAwZmE4MWZhMjRjIGxlZ2FjeS10cnVuaworNzYxNCA5MjE2ZjVjMjVlNGVmNzhlNjc3MGJiZWNmODYxY2NjZTYyNThkNjk1IGxlZ2FjeS10cnVuaworNzYxNSA4ZmJlZDc4ZTgxZTcxMjEyODg3YjlhYjc3OWNiYzBhZjQxZGQ1Zjk1IGxlZ2FjeS10cnVuaworNzYxNiBhNGM4Yjg4NzEzNzYxZmQ2NjRiMGNhZTY3Zjg2NWJlZDkyZTM3OTRkIGxlZ2FjeS10cnVuaworNzYxNyA4YTlmMTU3OTMyMzgyZWZmZjJlZjczMzk0NTM3YjZmNDRkMjA4ODIyIGxlZ2FjeS10cnVuaworNzYxOCA2OTUyZWI5YzNhNmY3ZjE1OTk0NjJiZWNhNzM1ZDVkMDFkNWMzMDNlIGxlZ2FjeS10cnVuaworNzYxOSA2YjMzN2VjOTJiZDBkMGE1NjE0MmU4MDA5NzlkZGIwZmMzYmM2ZTcyIGxlZ2FjeS10cnVuaworNzYyMCAxZTk1ZmFjODRhYjMyZjY0NjRiYmMzMmNiNWVkNTFlYzJjZmM2NzNjIGxlZ2FjeS10cnVuaworNzYyMSA5Y2VmZDA0ZWU1M2E1MmI4ZjYxN2FkNzYzOWI1YzMwNzdjYzdiNTQ1IGxlZ2FjeS10cnVuaworNzYyMiBiMjI3YjlhZjVmNTNkYmEwNDJmZDQzNWY3NDcwOThkMWQyZjg3NWUxIGxlZ2FjeS10cnVuaworNzYyMyA4OWVkYWE4ZWQ1MGZlN2M3YzBlMGEwZjRiY2ZkYjNhMjU2NTE5OGNjIGxlZ2FjeS10cnVuaworNzYyNCA3ODA2M2JhZTNmZDc0YmI0ZjYzYWNhNWVkMmM2YWZlNzhkYThhNThkIGxlZ2FjeS10cnVuaworNzYyNSA0NjY1ZTI4NDlhNGFjN2JlY2RjOTk0Y2UzY2VjODNjMjRlZmZkMmY5IGxlZ2FjeS10cnVuaworNzYyNiAyODI2OTI1YTg0MmUyOTg2YzhiMTcwNmIzZGZiYjYzYmVhOWYzODA3IGxlZ2FjeS10cnVuaworNzYyNyBiZDcwOGZlMTkzNGIzYjhjYjZhODlhOTAwYzI1NWYwZjJjZGQ0ZDA1IGxlZ2FjeS10cnVuaworNzYyOCAxYWU3ZTJlYmMyZjMzMWIyODlmOTdlZDk4ZGEyODRiMjYzNTc2MmM0IGxlZ2FjeS10cnVuaworNzYyOSBmNjIxOWQ3NzU0ODFiYTE3NTAxNmU3ZjNkMWQzNTNiNGE2ZGM1MDZhIGxlZ2FjeS10cnVuaworNzYzMCBiNTY2ZTc3MjgxY2MxNGQ1OTAxZGU4ZjU2YmQwYjU4YjM0ZTY0YTU5IGxlZ2FjeS10cnVuaworNzYzMSA0MTc0NjJhYjhiMDAyN2ZiMGQ0NGQxMjNjNDUyOTQ3NzQ0ZmM0Yzc3IGxlZ2FjeS10cnVuaworNzYzMiA4MjljNDI4OTMxODEwNGYwYjgwMjRjMGVhYmI4YTFjOGM4YTc0ZDA0IGxlZ2FjeS10cnVuaworNzYzMyAzNTFlOTVjNTFkZGIxYWNkZjUxMTViOWRiNzNkMGQ2MDEwOWUxZThjIGxlZ2FjeS10cnVuaworNzYzNCBlZjgzNTFlYTcyYzFjNjMyM2YyMzFjMGQwODQ1NmU1ZGQ0MjhiNjA2IGxlZ2FjeS10cnVuaworNzYzNSBkYzMzZTExYTFjMjhkZjVkNmEzM2UyODI5ODYwMzZlMDZmZDI4MDRlIGxlZ2FjeS10cnVuaworNzYzNiA1YmI3MGQyZTlhZGFkZDE4ZWJhMWFhYWFlOWZiZmY0NTczZmQxYTY5IGxlZ2FjeS10cnVuaworNzYzNyA3MTI0ZTRlZTQ5OTU1NzY0NWIwNzFiNjY3NjBjZDg1MDM5NjFiZGQwIGxlZ2FjeS10cnVuaworNzYzOCA5MDYzZjYwZWEyOGQ0MTkyZjk5ZDcxNjNkYTVjMDgwZGI3MTllYWZkIGxlZ2FjeS10cnVuaworNzYzOSA4YzI3N2YyOWI1MzVlMGIyMTI1MjlmZDcxMDliOWU0YmIxM2JjNzQ0IGxlZ2FjeS10cnVuaworNzY0MCA0ZDE1YmRmMWRiOWMwMDcyNzM1ZTU2OGRkODBlYTE3MzYzMGEyNzc2IGxlZ2FjeS10cnVuaworNzY0MSA3MTUxYmI3Mjc3NzY3ZWQxZTg3ZDg0YjU0YmI4Yzg3YjY2ZTE3OTc1IGxlZ2FjeS10cnVuaworNzY0MiA2MWY4OWJlYmExYWEzYzRiZjBmZGJmMTIyOTE0Nzc5ZWU4ODA4MDQ4IGxlZ2FjeS10cnVuaworNzY0MyBkZmYzZTUwNmM5ZThkNDFmNmZlMWRlY2Y0NDU0ZDliNzJlMThlOTkyIGxlZ2FjeS10cnVuaworNzY0NCAyZWE5YzQyNWE3Njc3ZjIyOTZhYzlmNDY2MjgzOWEyNmUzM2QwMTA0IGxlZ2FjeS10cnVuaworNzY0NSBmNWQ3MDdjZTQyMjNjMTczZWRmOGU3OGQzMzYxZjc4NGZiOTVhZDU0IGxlZ2FjeS10cnVuaworNzY0NiBiMWZjNGViMmFjNWE5NDhmYjE5YTg4OWZjMGQ2ZTg0NjY5ZTllYTBiIGxlZ2FjeS10cnVuaworNzY0NyAzMWIwZTVmMGJhZGYxOTY2Mjg3MjRkNmEwZmIwZDFmMDg1M2JlMWM1IGxlZ2FjeS10cnVuaworNzY0OCBmZjRmOGZhOGEyNzNhMDI5MGYyZjhiMWY5NGMwOWI0NjQwODUxZTIxIGxlZ2FjeS10cnVuaworNzY0OSBjNGU1ZWY5YmMzNjEyNDYxODU2MzBkMjIxNmVkMjVkZjI2YmNjMWY2IGxlZ2FjeS10cnVuaworNzY1MCAxOTdlMzIwNmUzZjMwNzQ3ZTVhYzY1ZDAwMmQ4OWIyNDVhZDFmOGU2IGxlZ2FjeS10cnVuaworNzY1MSAyYmQ5MjBlN2U1Yzc4ODU4NWUyMzliNDdiMjA4ZjRlZjE3MjBlOTRhIGxlZ2FjeS10cnVuaworNzY1MiBiMThlMDNiYTQ4MTc3ZjFmYTQzNjY0NWM2Y2VhMGE0YWQ2ZjY5NDYxIGxlZ2FjeS10cnVuaworNzY1MyBmOTc0MzY0ZjNhODdhMTdlYTIxOGM4NzhkOWM5YjhjMGE5N2JmZTRkIGxlZ2FjeS10cnVuaworNzY1NCA4NjNmZmMyYWI3NmE5OTUzNmY4N2M3YWM1ZDFmZmMwMmI5ODJjOTM1IGxlZ2FjeS10cnVuaworNzY1NSA2YmM1NjI1OWNjNGNjMjdmNzliZjhhZDdjYThkNWE2NTI1ZDVhZjBjIGxlZ2FjeS10cnVuaworNzY1NiA4YTBiODBkYzZlNzExNDg2OTM3MmQxNTUyYmY3YWMyN2IzNmQxMTNmIGxlZ2FjeS10cnVuaworNzY1NyBlMDM2MWQ1NDIxZmYwYjQ1MTRkZDU1NzdiY2IwYjQ4OGRmOGEzYmFmIGxlZ2FjeS10cnVuaworNzY1OCA2MzY3NTdlODEyYTRjNGJmYTRiZGFjYWQwYTcwNmFkYzZmM2UzYmE2IGxlZ2FjeS10cnVuaworNzY1OSA1Y2Y4M2FkMzI1MWU1ZjViMWRmZjA2YjdiOTc4OTc3OGJhMDkxM2UxIGxlZ2FjeS10cnVuaworNzY2MCBjMTcyOWUxNDg5MTZiMzM1NWI1NzQ0MGI2MWFlMzFkNmNkZDEwZTc1IGxlZ2FjeS10cnVuaworNzY2MSBhMTZkZWNiYjk3MTY1ODVhNTg3NDhiOGQyYTExN2JiMmQ3N2M1NTYxIGxlZ2FjeS10cnVuaworNzY2MiBjMWExYzMwNmE0MjliNWZjZmI4NjFkYzYzMDdlZGI4ZWIzNDU1OTliIGxlZ2FjeS10cnVuaworNzY2MyAzZWMzZDg4MDdmOWU4ODk2NjJkMjE1MGY3ZmFlN2U4OTUzOTA5NjhlIGxlZ2FjeS10cnVuaworNzY2NCBiYWI5MTk2YThmMzBjNjI0MTU3Njk2MzFhNjMyMjE2MGFjNGI2YzI4IGxlZ2FjeS10cnVuaworNzY2NSBhNzllY2Q1YWY3ZTViNDE5YjUxNWI5ZTA0MDc2MTdhY2Q1YWQwNTRhIGxlZ2FjeS10cnVuaworNzY2NiBmYTBmYzI4OGIyYzkwYjk2MTBlZWY2YjQ2NTQ3ZjMzNDRhOTBmNzBjIGxlZ2FjeS10cnVuaworNzY2NyBiN2FjN2I0NmIxMGMwMTA1YjQ1YjU4NGIzMmVmN2QyYzQ1MDlhOGNjIGxlZ2FjeS10cnVuaworNzY2OCBmMGZkMTJkNzZlMDc4ZmY1YmIzYmY0YThhNmYxNzk0YTA2OTA4MGQ4IGxlZ2FjeS10cnVuaworNzY2OSA1MmYzZGM0MWY2YzRmY2ViYmRmOTdlYjU3NTFiMGZlODAxYmFkNDZlIGxlZ2FjeS10cnVuaworNzY3MCBhODc0ZjVkMzAzOGVkYmQ0ZjE5MmE0MGMzNmZiNDNiNmZmZjdhOGFmIGxlZ2FjeS10cnVuaworNzY3MSA4ZWU4MWVmNGU5ODJmNGRkNjhmMDgxYjU2NTU0MTk4OTE3MDEzZjhkIGxlZ2FjeS10cnVuaworNzY3MiA3NGMxMjcwNGEwYmQwYzQ5ZTg3MWFmMDRmOGVhMWIzYzM2NDNmZTk5IGxlZ2FjeS10cnVuaworNzY3MyBlMGE2MDVlNjZiZWRhYWQ4Zjk1YWYxNWRkYjhkZGRmOTE1YTE1MmY3IGxlZ2FjeS10cnVuaworNzY3NCA3ZTM4MGRmMDBkMDBmYTFjMzhjMGU2MmI5MmNhOWM0ODNkZGI0NjNlIGxlZ2FjeS10cnVuaworNzY3NSAwMjRlNzM4Njc0YTVjZGE3OGY3YmRkN2IyOGFjNzVmZDRhNDI5ZjUxIGxlZ2FjeS10cnVuaworNzY3NiA1ODc4YTVhZjMxNDhkNWJmYWZhMGMyYWFmZTY4YWQzZjdjYWNkZjQ5IGxlZ2FjeS10cnVuaworNzY3NyBhZjkyZDc3OTE1MmFjMjRmZmJlNzY0NGFhMTIzYjkwMGYxMmMxYzE1IGxlZ2FjeS10cnVuaworNzY3OCAwNWM3ZDhiNGZmZDZlNGRkOWIzZDAwYzI2MzcxNzMxODZiN2I4MjQ3IGxlZ2FjeS10cnVuaworNzY3OSBjMjQ4YTA3ZTUzNDE2NGIyNjA4MGFiYjllMTA2OWM2NmQwNmE4ZjgxIGxlZ2FjeS10cnVuaworNzY4MCBiMzkyMDM5ODNkZTY2MTExZGY5M2FhY2IyOWRjZjZjNDMzNzQ0NWEwIGxlZ2FjeS10cnVuaworNzY4MSBiZDVlMmMyYzFlMDg3MmIxMWE2YzAzZTg1N2Y4M2I3OWQyMmY4ZWExIGxlZ2FjeS10cnVuaworNzY4MiAwMGViZmEzM2NjMDc2MzBlZWRhNzNhMGQ3NWQ3ZjU1NzUwYmEwZmJhIGxlZ2FjeS10cnVuaworNzY4MyA5M2U4N2NhYzQ4M2U1YmZmZDY3Mzg0MjdjOWI5OTViZDAxNDQzNzRmIGxlZ2FjeS10cnVuaworNzY4NCAyZWM5YzkzM2FmYjg3NDZhNDAyNDM5YzM0MTZiODY4YzI0NWUyZDVjIGxlZ2FjeS10cnVuaworNzY4NSBkNGM2YjRiMDU0OGMxYjYwNDM4MDY0M2ViNzc4ODg5YzA4ZTNjNTVlIGxlZ2FjeS10cnVuaworNzY4NiAzMTRkMGQ2MDNmMDZlZTRlMjczOTZmOGJiNGQ4OWY0NGQ5YzQyYmE3IGxlZ2FjeS10cnVuaworNzY4NyAxZjM4ZDVmYjNkMjM4ODFjOTk4ZTlmOGNhMTgwZDk2MjBiZTE0YTlmIGxlZ2FjeS10cnVuaworNzY4OCA1YjQwN2UwY2JjNzE1ZWE2NjczMTAxYWNlNWUzZTE1NDNkNzY5NDg2IGxlZ2FjeS10cnVuaworNzY4OSA5YzE2YmRmMTYwZmY2OGZiYjZjZDc0MWY1NTViOTAzZWMwOGIzMDIzIGxlZ2FjeS10cnVuaworNzY5MCBmNzAwNDJjMTljNTdhM2I3NmVlODQ5NmNiNDkxMTgxZGYwODM4ZWEzIGxlZ2FjeS10cnVuaworNzY5MSA5YmY2NTBmMjNkYTU3MTMwYjViMjhjYzE2N2QwMjFkYmI2MWVjYzcyIGxlZ2FjeS10cnVuaworNzY5MiAzYWI3ZDU4YzI5NjMxYTZhOTVhMGYxYzYzYTlmNjYxMmJjYTJjMGRhIGxlZ2FjeS10cnVuaworNzY5MyBmNWJmYjljNGMzNjQxM2FmNDJiYTdkYmY0MDg4ZmY4MDkxMzlmODQyIGxlZ2FjeS10cnVuaworNzY5NCAzMzRkNTJkNmRmNWRhYjRkMmU5YjZkZTc0OTYxODVlNjI1ODkxNDNkIGxlZ2FjeS10cnVuaworNzY5NSBlMWY2MTMzMjJiMjNjMjdmNjk2MGUwMWM0ZDAwODYwMTQ3MmU2ZmM2IGxlZ2FjeS10cnVuaworNzY5NiBkOTczM2I0ZjgxMWY0NzVhNjRiNjA4M2M3ODkxZjg3NDFhZjBkNmU0IGxlZ2FjeS10cnVuaworNzY5NyA0ZDhiN2RkNWRlMmEyODBhZjUyNDRlZjlhNmY1Zjg3ZTI1NGNlYzFhIGxlZ2FjeS10cnVuaworNzY5OCBiYzg4MzJiNTJiNTBiOGNiMTk2ZDI4YWJiYzk2OTY1YjA4MTU2ZWQ2IGxlZ2FjeS10cnVuaworNzY5OSAwNTc3NGVjMzlhZDIwNWJkYmRmNDc1ODkwOTU1YzI5OTFmNWRlNjczIGxlZ2FjeS10cnVuaworNzcwMCAxYjE0YzVjMWJlMmE1Mjg1NzJhMjZlZjE4MTE2MmJiYmIwZmFlNzAwIGxlZ2FjeS10cnVuaworNzcwMSA4NGM5M2Y2MDE3MTk0ZWE4NTAwYjcyYWE4N2RmZjFjODNiM2RmYTVkIGxlZ2FjeS10cnVuaworNzcwMiA5Nzg1MmY0ZWJkZTZiMDQ0MWVhZDk3ZmJkNWRiZTBjNTBiMTRhNjA2IGxlZ2FjeS10cnVuaworNzcwMyA1OWU4YTAyYTQ3NzRkODZhNTVlM2M0MDAzMmRjNDBmNTgxZmQ2MDkwIGxlZ2FjeS10cnVuaworNzcwNCA3NGNhZGRmNGIyOGE0ZTI4NDA3NWRmOWYzYTdjNDdiODFmNmU5NDQzIGxlZ2FjeS10cnVuaworNzcwNSAwZTYwZGUyYTQyYWY3NTBjNWRjZjgwY2E5NTUwYzU3NWM3MDA4MmQ1IGxlZ2FjeS10cnVuaworNzcwNiA5MzM0NGNiZGY1NDIyYTM2OGFkZTJiYjE4YmQ1OTBkODQ5NmExOTFkIGxlZ2FjeS10cnVuaworNzcwNyAwYTVjZWE0MjdhOWZiYmFlMDM3NjFjYjg5ZTI2NzMwMDBjMzBmZWM0IGxlZ2FjeS10cnVuaworNzcwOCBiNzQ5ZDJkZDc1ODI4ODFlMDFhY2RjYTRmNGYxMzZlOGU0NmJiOWVmIGxlZ2FjeS10cnVuaworNzcwOSAwN2VkNTJlMjAwZGI2OTY5OTU2MmZmZjMzNTgxYzAxNzNhNDBlYWFjIGxlZ2FjeS10cnVuaworNzcxMCA0ZjFmYTdiNjliYTc3OTMzNmU5OTY2NWRhYWE5MTRmNjkyZTM2YjkzIGxlZ2FjeS10cnVuaworNzcxMSBiNGU2NzFiYzEzMzExYWEwOGQwZWIxZTM4OWRmODcwMjM1NTQ5MTlhIGxlZ2FjeS10cnVuaworNzcxMiAxMjM3M2JhMjRlNWQzNzJjNmE1NWNiOGM1ZGY4ZGRhNzdhYTc5NjVmIGxlZ2FjeS10cnVuaworNzcxMyAxNTI4OGM4MzQzYTVhNjA4ODZjZWMxNGUxMWMwYjAxZDQ0MGE5OWUwIGxlZ2FjeS10cnVuaworNzcxNCAyNzYzNTQzN2ZhN2EyZDdkMDRkY2U5OTkzZjdjZWZkNTViMWQ5MmUzIGxlZ2FjeS10cnVuaworNzcxNSBhMzIzMzg2NGNhMzg1ZmVlZTA3Y2I3ZTRjY2I5ZDM5ZDU5NmI0ZTgwIGxlZ2FjeS10cnVuaworNzcxNiBiODlmNTI4MjFjNTJlODhhNTY5YjYwNWVhOGNkOWMwYTI1NTczYTA1IGxlZ2FjeS10cnVuaworNzcxNyBhNTBkZjdmM2ExMGEzM2QyYTc5Mzg2ZDgyZTFkOGE0MWRjMmY3NDZhIGxlZ2FjeS10cnVuaworNzcxOCA0ZjI1MWI4ZTMyOGY1YjVmOWE3N2NjNzkxNzc3MDJhNDVkNjkwMzMzIGxlZ2FjeS10cnVuaworNzcxOSAyNDcxMzlkMjAwZThjNzhjYzExNjdkY2Q0ZmNhMTVjYmE4N2YxNmFmIGxlZ2FjeS10cnVuaworNzcyMCBjNWZkMzI3MDU3YzZjMzU0YTdhMjZmYWRjM2FhYWYxOWJlZGRhM2FmIGxlZ2FjeS10cnVuaworNzcyMSAyMzMzMGExYjk1OTRkOTI4ZjVlOWU2YzUyYzJjYjY3OGIyNDdiNzJlIGxlZ2FjeS10cnVuaworNzcyMiA2ZGI4YWRlOGQ4YTk4MGQ1NjhjMjAxZjBiNjkwM2MxMmZhZjgxYmJhIGxlZ2FjeS10cnVuaworNzcyMyBhNTQ3MjBmOGRkMzZjZmZiZjllZDQzNjg4MmU5NTM3MGFkYjRjY2JkIGxlZ2FjeS10cnVuaworNzcyNCAxMzAwNTg3MmQwNTM0NmZiMDFjNzhkOGY2MDUxMzY0ZTU4ODFiNDhjIGxlZ2FjeS10cnVuaworNzcyNSA1MmUzYjYzZjJkY2EwMGVkNjM3ZjM4YjQ5NDQ0ZTQzODRhYWM2ZDA0IGxlZ2FjeS10cnVuaworNzcyNiAxYmRkYmEyZjEwMGU0OGRhMDVjZDUyYWI4MjcyYmI2YTI1Y2I1NTE1IGxlZ2FjeS10cnVuaworNzcyNyAyZmQ5MjQ2YjBlZTgyMTMyOGRhMzM5ZDU4YmExNTYyODJlNzZhN2UwIGxlZ2FjeS10cnVuaworNzcyOCA2ZmNmMjA3NDk4ZDhhYmUxNzFmMzgwNmE1MDIzMDVhZGIyNjZlMDYzIGxlZ2FjeS10cnVuaworNzcyOSBmZTFjY2I0ZTRjMWM3MzIwMDI3NjJjMmY0NmMwMzI4Yjk5MmVkM2Y3IGxlZ2FjeS10cnVuaworNzczMCBkMDg3Y2QwNjBiYWRkYTc2ZTdlYzUxOTRhNzJkMGNjOTQzYzYxZDNhIGxlZ2FjeS10cnVuaworNzczMSA3MTY5NGExNzEzMjRmZjVlODJiM2NmZDUzZTNiY2UyZmMxN2IwM2QwIGxlZ2FjeS10cnVuaworNzczMiA4MTI4Mzc5NWYxNmE4YTM4ZTI4NjFkYWEwN2U5N2Y2NTI0YmQ4MDI0IGxlZ2FjeS10cnVuaworNzczMyA0MGQyZmQ0NzIyODRhNGU0Y2YwZWY2MDMxMGY4ZjFkY2M5YjMxOTdlIGxlZ2FjeS10cnVuaworNzczNCA3MWRmMjFjMGEzNGVkNGJjNDRkN2YzOTRkYzkwNjk3ZjE2MjU4MzJhIGxlZ2FjeS10cnVuaworNzczNSAxZTVkNjI5M2M1MjRlM2U1Yjk0MjQ3YTQyODkyMDA5NWU5ODI5MjUzIGxlZ2FjeS10cnVuaworNzczNiA3Mjk4NmI3MTY4MjQ2MmE3ZjM0NGVjMWM4OWFjMDFhOTg2MzNiMjY3IGxlZ2FjeS10cnVuaworNzczNyA1YWJjMWEzNmJlZGRjNzM5NjJjYzk1MWIwMTdkNGJjMTkyODc1ZDYxIGxlZ2FjeS10cnVuaworNzczOCA4NmQ2MGMzNGViZGU3Nzg1NzhmMWUzNWQxZTk0NzEyMmE0NTI0ODA0IGxlZ2FjeS10cnVuaworNzczOSAzODg3OGYxY2Q0ZjFmZWM5OTk3YjQzYjE5ZjU4ODczYTNkM2NhMzU3IGxlZ2FjeS10cnVuaworNzc0MCAzYzE3ODhhYjk3NjEwNmYzMDE2MDc3MDg0YzIyMzIxZDliZTcwNGI3IGxlZ2FjeS10cnVuaworNzc0MSAxZWZjNDI3M2ZkYjdlMzQ5MGY5OGQ3NDdhODRiNmUyMmY3ZjdkZjkyIGxlZ2FjeS10cnVuaworNzc0MiBkNDFlZWU2ZDJmZjc2OTNiYWY0ZGMwMGY1ZDQ5MmFmZDg2MWU0NjUxIGxlZ2FjeS10cnVuaworNzc0MyA0ZjMzMWY1YmI1ZjJhNGI5MjE5OTQ5ZDdhNjkzNGNhZTVkYmVjYmQ2IGxlZ2FjeS10cnVuaworNzc0NCA0ZTUzNzQ2ZTUxYWY5MGExNzJiZTQ3MTZhMzAwODFhZGU4Yzk0Mzg3IGxlZ2FjeS10cnVuaworNzc0NSBkZTlkMGM1MjQ5YjBlMmE3ZDQ2MWVjZmRmMWZiMzUwODlkYmVkMWU2IGxlZ2FjeS10cnVuaworNzc0NiBhZmY3MDYzMzc4YThhNjM5Yzk0ZDM1MDY0NDg2OGM4OTdlNjY5NDZkIGxlZ2FjeS10cnVuaworNzc0NyBiMTU5Zjk4Y2JmZWZiZDY1MTg0NDEwNzJjNDYyOTJhZDI3OTQwNjZkIGxlZ2FjeS10cnVuaworNzc0OCAxMTQ4ZTdlYmNhMzU0YjIzZWYzODBjYzlhMjI0NTdmZTU5NjJhMDYxIGxlZ2FjeS10cnVuaworNzc0OSAwZDZlNzBhNWFiNGJkMWQ3MmFmZmMzMGU2YzExYzg0YmViZmIxYTlkIGxlZ2FjeS10cnVuaworNzc1MCAwOTlkYmM2ODRjN2JlNDBjZjY5Zjk2ZDI4MzQyYjRiNzBkNjI3MTRiIGxlZ2FjeS10cnVuaworNzc1MSBiN2NiNjk3Njg5M2Q4NWY4OTIxY2QyZWMwZTQ0MDY3NTM5YzNhZjQ2IGxlZ2FjeS10cnVuaworNzc1MiA3ZGY1YTBkMWY1MjMwYmRmMWEzNGMwZWRjNjA0NTcwMGRkZjc0ZWRjIGxlZ2FjeS10cnVuaworNzc1MyAwMWMzZTY0YmM4MjRhYWIwYWJkMTk2ZTRmYTQxZTYxMWQzOGM3OTlhIGxlZ2FjeS10cnVuaworNzc1NCAxNjM3MmE0YzRjMTQ1YzY5Y2Q1MWE4NzBmOGNiMWNjZmFmOTZkYzNjIGxlZ2FjeS10cnVuaworNzc1NSBlOGY4Y2YzNTgwNTRlZDZiNmQ4OWM0OGIzNmZjMjg1ZTE5M2Y1ZTBjIGxlZ2FjeS10cnVuaworNzc1NiA2MDdmYTMyZmMwNGExZGEzY2I5YTBkMmQwNzVlNTMyNjlmNTA4ZGZiIGxlZ2FjeS10cnVuaworNzc1NyA1MjUwZjQwOWQ1NTg3MjMxZTJkODZlNjk3NjM3YjVkZWI0YzkzODZiIGxlZ2FjeS10cnVuaworNzc1OCA4MmEzZmJkYTMzNjM1MGIzYTRjMzVhNjE3ZGI4OTUxNzI4NDJiYWMxIGxlZ2FjeS10cnVuaworNzc1OSAwMmIyZWRmNTViYWYzOWRmOTQ2NWFkOGM2NGJkZTcxMDYwM2JiZjVkIGxlZ2FjeS10cnVuaworNzc2MCBkMmM5OTVlYzQyOTAxMDA4ZGMxZWY5ZDM0YzkwYmEwNmM3NDRkNjM2IGxlZ2FjeS10cnVuaworNzc2MSBmYmVkYTZmNDZlYmIzOGFiN2JhNTI2NGNkNGFkMzk4ODZjZDIyYzI5IGxlZ2FjeS10cnVuaworNzc2MiA1YWY3NjZhMWI1MzEyNTBmYjY0ODg3ODE2MDg1OGY4OTc5M2RlMzEyIGxlZ2FjeS10cnVuaworNzc2MyAwZjE3MTFiN2QzNjdkZmZiYjljNTE0MjhmNDQxNjhhYWE5NTk0NGU5IGxlZ2FjeS10cnVuaworNzc2NCA0N2QzZDM5NmQ0ZWY4YTIxYTYxZDljOWQ0ZWVlZGM4M2IxZDBlNDJlIGxlZ2FjeS10cnVuaworNzc2NSBkMzJiOGY0ZDlkMzA5MjBjZTgxYzBhY2UxZTEyN2E0MDM3N2NlYzQ1IGxlZ2FjeS10cnVuaworNzc2NiBhNzZhM2EzOWY2YmNmYjc3ZWVjMjhhYzBhZTlmMzQwYmQzNzFkNDBjIGxlZ2FjeS10cnVuaworNzc2NyBjYTU2OGU1ZWJkMTlhMzgwNTVmY2NlNzJjNTRhYjg5MDFmOGQxZmExIGxlZ2FjeS10cnVuaworNzc2OCBiMGQ5ZGUzNzg2ZWMzMjljMGQ2OWMwNGQxNGIyNjU2NjE2YmYxYjQzIGxlZ2FjeS10cnVuaworNzc2OSA1N2EyZWQwNjMwY2Q4NTllOGE1ODhjY2FiYjU3YWRhNzI5NDg5ODg4IGxlZ2FjeS10cnVuaworNzc3MCAyZjI3NjBjM2RkOTA1ZDQzZmRkNTJjMzYzOGEwNGJjMGM0ZmVlYjI2IGxlZ2FjeS10cnVuaworNzc3MSA3YWE0NTY2MDE0YzZhYzA0OTJiOThlOWUyZWZkYmVkNTM5MmIzNjNlIGxlZ2FjeS10cnVuaworNzc3MiA3ZWM3MzNmOWMzMDU3NGJlZDJiZWQ4NGQ4MWM5NTE5MmE2OTNhNTJlIGxlZ2FjeS10cnVuaworNzc3MyA5YTMyYmQ4ZjRhYzhhMWNlNTBiMDY4YjUxYjE5N2Y0MGNiODllOGJiIGxlZ2FjeS10cnVuaworNzc3NCBiNTIzZTZlN2FjNjEyYWRlMWUyMjEwNDU1YjEzNGQ2NTJkMTE3Mzk5IGxlZ2FjeS10cnVuaworNzc3NSBlNzc5NDI1NjJkZDM4ZTUzNWU2NmI4YzljNTQ5NGQxNjU0OTc4NTM0IGxlZ2FjeS10cnVuaworNzc3NiBmYjgxNjUzMDQ5MzkzNDVkYTNlZTc1ZWNkYzliZGFkZWY4ODQ5MTU0IGxlZ2FjeS10cnVuaworNzc3NyA1ZTNiY2Y0ZWJmMjlmNDhjY2NjYTVjODY2YzY1ODJkNGNiZjU2YTNiIGxlZ2FjeS10cnVuaworNzc3OCA5NjQ1NjJiZDc1Y2MzNzZmYTlhMzI5NDRiMTBkZTIwMTBhNzNmOWQzIGxlZ2FjeS10cnVuaworNzc3OSA0NDU5MTcyZjQwYmIxNDQ4OWQzYWU2NmZjODkxNTI5Y2QzMjQ1ZDliIGxlZ2FjeS10cnVuaworNzc4MCAzMzJmZTAyYmYwMmRjNDdhZjkwMzgyOGM0MjJiNjMyNWRhOTQ5NmQzIGxlZ2FjeS10cnVuaworNzc4MSBlNjE0YmNkMzRlMzRmYzRmNTc1ZWJlMDBhM2U4MzFjMGE2NzMzZGNiIGxlZ2FjeS10cnVuaworNzc4MiBjM2VkMjk5ZDU5M2U2Y2Y0NGZlYzNhMGVjOTYxMWNmZTMwNzhhZDEwIGxlZ2FjeS10cnVuaworNzc4MyBkZjg3ZDVkMWJiZGYxN2Y5NzNkYzdkYzg0ZGJkMzBjZDU2NjZiNGM4IGxlZ2FjeS10cnVuaworNzc4NCBlNzU2YjhlNTRjN2MxYzYyY2E2NjUxYWY1ZTQxMDc0ZjU4ZjMxN2JlIGxlZ2FjeS10cnVuaworNzc4NSAxOTJlMmUwY2JjZTUwNjQ4ZDMyNjllYzMxN2E0OTY3ZGJkZDMzOGMxIGxlZ2FjeS10cnVuaworNzc4NiA3ODI1OTdjZjYxNTFkOWRlYTFmOGI1OTQ5MmNlNWFlM2ZiOTM1YmUyIGxlZ2FjeS10cnVuaworNzc4NyBkMGViMTgzMDkyYjBjZGM2OGI1ZDAxNWU1ODM1ZTk4MjBjODkxYmQ1IGxlZ2FjeS10cnVuaworNzc4OCBlODk5Njg4NGU4ZTE3ZTZiN2I0MDAzOTI4N2IzNmYwY2Q1ZmI5YTBlIGxlZ2FjeS10cnVuaworNzc4OSA4ZmMyMTdkMzMyNjc1NDU5N2IxNjY4MWQ1ZDcyNmVlYmVkNzdlNmEzIGxlZ2FjeS10cnVuaworNzc5MCA2NWM5ZTkwZDgxNDI2OTJkZjJiODg5MjYxMmQ4NmFjM2M1MzZlZGJkIGxlZ2FjeS10cnVuaworNzc5MSBjOGUyNGM0YjhiZmJjY2E4Mzk5ZjYxNDE3ZDI3YWEzNTc1NTc2YzY0IGxlZ2FjeS10cnVuaworNzc5MiBjNzJjN2UxOTMwYjNmMmNiMDdmYzRiYWM4YmRjZWNhZWRhODg2M2FmIGxlZ2FjeS10cnVuaworNzc5MyAyYzRiODAyYTNiNWQ4YjU1ZWUwNWQ0YjZlZTFjNTExM2NjNTQxZDJkIGxlZ2FjeS10cnVuaworNzc5NCA3NGExYmMwOTk4Mjc2ZTcyN2YxMWJkNDEyMTZjNjczZWE1YTBhNTcwIGxlZ2FjeS10cnVuaworNzc5NSBjM2RkYjg0YTc3NjFmZGUzYzU1NDE4OTNhNTMzODliM2IwNTU2YzRjIGxlZ2FjeS10cnVuaworNzc5NiBlMmFjMDk4MmNjMzJmMGNmMTE2YmM5ZDliNGI0Mjc1ODIwMTRiMmU3IGxlZ2FjeS10cnVuaworNzc5NyAzODgxODUzOGI4OWMwYWU4NzBhY2NlODcwMDVjZTY3MGM5NDQ3MmFjIGxlZ2FjeS10cnVuaworNzc5OCA5MWY5OTE4MTI3MTg1NTc5M2EzMjJiZWU3MWI2N2Y0YmE0N2I2MDQ3IGxlZ2FjeS10cnVuaworNzc5OSA0ODlkY2EzYjU0Y2NiNjBmYWI2MTRjOTRiNmIwY2NjZDcxMWU1NmYzIGxlZ2FjeS10cnVuaworNzgwMCAzYTA3Nzk5ZGViYTFmNmRjYmNjM2FhOTdkMmRlY2RkNTI5ZGFkMDEyIGxlZ2FjeS10cnVuaworNzgwMSBiNjg5MzEzMzk0MGZlZWIxMzE0MTU0MmIxMzk3YmU2YjY4NGMxM2YwIGxlZ2FjeS10cnVuaworNzgwMiAxNTJiMjgyN2ExYTA4NzNhMzViMmJjNDJjMzEyM2EzMzQ3MzIzYzc3IGxlZ2FjeS10cnVuaworNzgwMyAzNTllOGY4MTVhM2FjYjQ5Mjc3MTU3OTcwMmU5NmFjNWVhZWIxN2ZjIGxlZ2FjeS10cnVuaworNzgwNCA0Mzc1MmUyMDk0NzNjMzhlMWE4NDg1NGE5ZDliMWEyZjFmZWQ1ODVhIGxlZ2FjeS10cnVuaworNzgwNSA1YTIyZjliMzhhYWMyMjY4YWIwODY4NDgzYTdmNWQyNzc5NGE5NTYzIGxlZ2FjeS10cnVuaworNzgwNiA2MjMyYWNiYTdlYjIwYTBjNzU3ZmZjYjgyNDNiMzdjNWY2MjFhOTI2IGxlZ2FjeS10cnVuaworNzgwNyA4ZGZjMjUyOTYzYzcxOTllM2JiYTU4OTZmYTk1MGZlZjI0M2RhY2Q3IGxlZ2FjeS10cnVuaworNzgwOCA2MjczMTZjMDAxZmJkNDUxNzczY2MxYjJiMzQ3YjhmNmIzZmM1MzNkIGxlZ2FjeS10cnVuaworNzgwOSBkMWFjNTFiODcwZTIxOGMwNDc2NjIzYTFlYzkxOWZlOGVlZWRlOWVmIGxlZ2FjeS10cnVuaworNzgxMCBlZTkyNzViMGY1YzgwYWY5ZmVjZDdjZDAzODMyMWQ5MmRlYjUwZmNlIGxlZ2FjeS10cnVuaworNzgxMSA3NDZmNjg3YWNmYzFhZjUyMzFkOTVmNDBmNTQ5YjkxZjI3NWIwMjJiIGxlZ2FjeS10cnVuaworNzgxMiAxNjZjMjIzMjkyMWFiZmNlOGJhY2NkNTNiZjczNjY4NjFkOTAxNDI5IGxlZ2FjeS10cnVuaworNzgxMyA2Nzk5NWJjMTdmNjI1YmMwYmNiNjMyYTM4NzE2OTE1OGZjMmU2ZTM5IGxlZ2FjeS10cnVuaworNzgxNCBiMGEzMTQwY2M5YjFhZGIwN2JmMjNhYmFiZGM5OTE1NWJkMzJkZjhiIGxlZ2FjeS10cnVuaworNzgxNSBkYjY3M2U5OGYyOGRhZWViMmY3MTIxM2NhY2ZlYzUyMTQ4N2FlNjcyIGxlZ2FjeS10cnVuaworNzgxNyA2N2U1MjM3Y2UxNDE4YjM4N2RhMjIzZWUzMjQ1MTYzMTVkNTIxNWM4IGxlZ2FjeS10cnVuaworNzgxOSA2N2EwYjVhYWFlNDMzYmE5ODBlZmFiYmI3NTExMWI0MjgyNDFkZjMxIGxlZ2FjeS10cnVuaworNzgyMCA0YTU0MWJiMGM1MzQzM2M3YWEwOWI4Y2JiM2I2NTU1ZWIxNjIzMzc4IGxlZ2FjeS10cnVuaworNzgyMSA5Y2EyNzE4OGRhMjMyMzIyZjY3MDExYjM1YzIyMmE0ZjAwZTNlNTQ4IGxlZ2FjeS10cnVuaworNzgyMiA1YjJlZDYwODFlYjk0YWUxOWY2MzZkODUyYzAyMTczMmI3YWU1NjM1IGxlZ2FjeS10cnVuaworNzgyMyAzMzlkY2I5YTI4MjU3MGM5MzFmYTY1ZWMxZWRlMTU4NjBmNDBlNWE1IGxlZ2FjeS10cnVuaworNzgyNCAwMDYxZjRlYTk3YmU4ZWMzNTIxZGM5Y2QxNDYzYTZjNTAxMjgwOTYxIGxlZ2FjeS10cnVuaworNzgyNSBhZTAyZWQyYWFjM2Y2YzZhNTExYjUyM2UxOGI1MGNmOWY4ZjZiZDExIGxlZ2FjeS10cnVuaworNzgyNiA2YWIzOTJkN2E1MmZjZDYwNzM3NGVmY2YyY2ZjNmZkOTJmZDk5ZDM0IGxlZ2FjeS10cnVuaworNzgyNyA2ODhjM2ZkNDJjYTYyZDU2MjExMTA2ZDE1MzAxZTg5Yjk2Y2QxMjA1IGxlZ2FjeS10cnVuaworNzgyOCA5OTljMTk3ZGE1N2NjMTZiZjU5NmYxZWY3MDJlMGMyNTM5YjI1ODBlIGxlZ2FjeS10cnVuaworNzgyOSBkNTc1N2FhZDFhNGZlYTc3OGUyNGMxYmE1Njc1ZGFlZmVkYzM4NzI5IGxlZ2FjeS10cnVuaworNzgzMCBkNDBjZDkxMGQ2ODRmMGViNzdiZTNlMDc1NmQ0YzRmNDU0M2VmNTdjIGxlZ2FjeS10cnVuaworNzgzMSAyYzBiMTAxNjVmN2VjYTQxOTZhZTE0NGIxZDY4M2JkMjZjMDRmMTVlIGxlZ2FjeS10cnVuaworNzgzMiAxNzkxNjhlMTdiZmUyNWM1NzcyNGQ5ZTJkYmUyMDMyMTcyODA5NDYyIGxlZ2FjeS10cnVuaworNzgzMyA0NzM2MmZkOTA3MWJjNzkwOWI3MDFlOTc1Nzg0MWEzODQ1ZWZjMTNmIGxlZ2FjeS10cnVuaworNzgzNCBiYzJlMzMzNDA0OGUxM2ExYWMzNTZmODgwOGJhZjcwYWVmZjZlOTk0IGxlZ2FjeS10cnVuaworNzgzNSBkYjQwZGJhM2Y3OWE3ZDUzMDMxNDQ4MDZjYzMyYTZiOGEzY2NhODE1IGxlZ2FjeS10cnVuaworNzgzNiBlZGVhNGYxZDYzZmQwMTU1NDNjMWJjNmNjNGM1NTFiNTk4ZDNlZjA0IGxlZ2FjeS10cnVuaworNzgzNyBmODU4MDM4YjY0YzI2MDY1MzljMmZiOGNiNDA3MjQ5YzczZjk5ODdhIGxlZ2FjeS10cnVuaworNzgzOCBiMWMyYjc5YWE1MWY4NWM0OTBkMTEyNTQwNWZlZWIxMzQwMDhlNDUwIGxlZ2FjeS10cnVuaworNzgzOSA2MWU0MWIyYjFiNjlkNDg4YjBiOGRiNDIzMDBhNzMwYWZjMTU1NWMxIGxlZ2FjeS10cnVuaworNzg0MCBjYzU4NmJkYTYyNzU1MjVkNjc1OGUzMzE4YWNhMjZjNWViZjc4YzE0IGxlZ2FjeS10cnVuaworNzg0MSBlNGFmNDE0ZjVmODkzYjVkOGM2YWUwOGVhMDExZGVmYmQ5NWQxNDgwIGxlZ2FjeS10cnVuaworNzg0MiBiN2NhOThjNmRiYmQ2OGE3YmEzN2MzODRmNTUxNzZiNzc2ODhlYzE5IGxlZ2FjeS10cnVuaworNzg0MyA4NzMxMzMzM2FlM2ZjMzczYmU0ZWM4ODE2MGRiMzQxN2Q0ZWUwZjFlIGxlZ2FjeS10cnVuaworNzg0NCA4OTgxNTMzZTZjYzFhMTI3YWFiODAzNTIwZTUxNDA5YWI3MDIxMjA4IGxlZ2FjeS10cnVuaworNzg0NSBmMjEzMmQxZjY2YTYyOGY1OWM1ZWZjZWQ4MTUwZTZhMWE5Mzk5NWYyIGxlZ2FjeS10cnVuaworNzg0NiAzY2ExNDUwMzE3MGNjOWY5YjkyZmMwODc1ODYwMmJiMjcxNjFmYWU5IGxlZ2FjeS10cnVuaworNzg0NyAxZWExZjAxOTI2OGQ5ZjI3MDc0NTc5ZDcxNWZjYjI5NjYxNjZmODBlIGxlZ2FjeS10cnVuaworNzg0OCA0OTNhMzRkY2E1M2VkZDcyNTQ2Mjk5ODU2OGE3NTI1NTIyZDMwZGI3IGxlZ2FjeS10cnVuaworNzg0OSA0MjQ5MjJhZmMxYmI0MGU5ZjUyMDIwOWY1Yjk0M2Q0NmE4OTMxMGM4IGxlZ2FjeS10cnVuaworNzg1MCA1ODgwMzg0ZDdjNzE0OGI4YzQ1NTEwMWY3NGQ4MDU3YTYzMGExMTJiIGxlZ2FjeS10cnVuaworNzg1MSAxMThiZWVmOTE4NzM2ZDVmODYyZGEzMDkyYjEwODFmMTBiYjg3NWFiIGxlZ2FjeS10cnVuaworNzg1MiA3ZjkwYTY3MWNjMWRiOGE4MTE4ZmFmNmJhM2M0YmI5NDZmZDIxMjc4IGxlZ2FjeS10cnVuaworNzg1MyA5OTgwZmFlZWI3YTUxM2RkODI1MzIyZGMxY2VjZGFkOGI0YmM5MzRmIGxlZ2FjeS10cnVuaworNzg1NCAwOTU5N2E0MjMyMjdjZTMwNjZlZDI3M2E2ZmZkNjFmYWU1YmNmNjc4IGxlZ2FjeS10cnVuaworNzg1NSAzMTllM2VhZWNkZjRmYjc5MDRjMTVhNTAzMjk4Njc5ODA3ZDI1YTBiIGxlZ2FjeS10cnVuaworNzg1NiAxYzlhODRlMDk4MWQzNThiYTlmMDM4MGM4MmU3MTA2NzdlYjE1NjQzIGxlZ2FjeS10cnVuaworNzg1NyAyZDRjNmNiYTAxYmYwMDVlNGJmZGMwYmUyYTFjYWEzZWMzM2JlMTFlIGxlZ2FjeS10cnVuaworNzg1OCAzMzlkNDEyOWQzZjdmMTVhNDg5ZTE2OTg1ZWIwMTBlZjQ0MzA0YmZhIGxlZ2FjeS10cnVuaworNzg1OSAzZjU1OGEzMmM0OTgwMDAzNTI0MGVhOWMzOTBhN2ZkNDljYmNlZTRmIGxlZ2FjeS10cnVuaworNzg2MCAzYzVmY2Y4YmY1MTg5NjFiYzRiYTg1ZmIyZTAwZTBjYzhmOWYwZWVhIGxlZ2FjeS10cnVuaworNzg2MSAzNzE0YjMyNTgyNmQ4OTdjZDE2ZTc5MzRmMjQ5YTkxOTUwYTMxMmJlIGxlZ2FjeS10cnVuaworNzg2MiAxMGU3ZGJhMDFkMDUxMjFmZGExYWRhNTRkYWZiZjMwZjc3ZGM2ZWI3IGxlZ2FjeS10cnVuaworNzg2MyA0M2M1ZTFmOTE1NGU2ZDdhOWIzMmViYjZiMzRkOTc4ZTM2MGNkNDliIGxlZ2FjeS10cnVuaworNzg2NCAwOWM1OGIxNzQ5ODk5MTAyNzA5ZmQxNjkxZTQ1NWQyNWNlYjI1YTZmIGxlZ2FjeS10cnVuaworNzg2NSAxM2EzMGNlYThkYmY3ZDI4NWZjN2NlMWYzNDAwZmU0OGY3MDViMGJiIGxlZ2FjeS10cnVuaworNzg2NiA1YTk3MDY5NjVhNGVjM2ZjMTM5MGNiYjZlYmZiM2YyNjBhODQ4MDkxIGxlZ2FjeS10cnVuaworNzg2NyBiMjRlODRhMGYzMGIzMmFjYzM0MWJlNWIzMDIwY2U4M2VmYTlhOTExIGxlZ2FjeS10cnVuaworNzg2OCBlOTJmMTgyZDc3MjY4Yzg2Yjc5NDkyNjE2NzA4YTczZDM3MWM5NTY4IGxlZ2FjeS10cnVuaworNzg2OSAxOTRkMjZkZjZjNTAwY2ZmZDJmYzE5ZmIwNDUwN2Q0MWYxOGRhYjRlIGxlZ2FjeS10cnVuaworNzg3MCAzMWUzOTk2MzY2NzVmZDQxNDEwYzQ3NTIwZDk3NWEzNzViMGZhMWU4IGxlZ2FjeS10cnVuaworNzg3MSBjMmZiOTc2YmVjZWIzOWRhZDIwMTQyYzVjY2VkYmU5YTc5Y2JjMjAwIGxlZ2FjeS10cnVuaworNzg3MiAyYzgxZDdkNjhlZDNhYWQzYzY3ZTc3NTlmZDE0YTExZDM5NDNhZTEwIGxlZ2FjeS10cnVuaworNzg3MyBkMTQ0Nzk1MGZhMDQ1NjUyZmY1NWJlM2EyYWMyNzVkYTA3MDY3NmM2IGxlZ2FjeS10cnVuaworNzg3NCBmZDdlYjA1OGNlNWRiMzA0MThjNTFkZmI0NmM0MzA2Y2EzZTIxZTA5IGxlZ2FjeS10cnVuaworNzg3NSA3MmIyMzFlZGZiMjUyMzk1NTI5OWE4OTgyNDI1OTQwM2ZmNDUzMWY1IGxlZ2FjeS10cnVuaworNzg3NiAwYTU5OTc3M2E5Y2NhNGZlZGRlN2QwNDNkNzczMDk2NWUxYzQyZTk2IGxlZ2FjeS10cnVuaworNzg3NyA3OTE4ZTg3MzkxNDhhNGM2MGFiNjU3OTRiNzZjZWFhODhmNmRiOWU5IGxlZ2FjeS10cnVuaworNzg3OCA0ODdhZDAzMjdhZTE4MjhiMjdkZmJmYjNiYmVjNzViN2U0MTRmMGNlIGxlZ2FjeS10cnVuaworNzg3OSA4ZjBhNzkzYmIwZTI2OTU3MWM4YmMwZWEyZWYzYTZiZTE3N2E1NzYwIGxlZ2FjeS10cnVuaworNzg4MCA1MGE5YzE0MDk0NmM0ODlmZjIzYTJkYjNlMTMzYzQ0MTljNGY2ZDhkIGxlZ2FjeS10cnVuaworNzg4MSAzNzgwY2NlMTRmN2QwMmNkZGMxZmNkMWI5NTI5NzY4ZGUxN2E2M2I1IGxlZ2FjeS10cnVuaworNzg4MiBiNzg3MWNhOTMwYWQ1YmM1MWE5MDllZTc1ZWMyZTVkYTEzZTA3ZjRkIGxlZ2FjeS10cnVuaworNzg4MyBjMjI1NDc1NDE5MmMyZWFmMTVkZDJhZTQwMjVlZjhlMzM3M2I3YmIwIGxlZ2FjeS10cnVuaworNzg4NCBiN2EyM2RiZTAwNjVlY2Y3ZjgxMGI5NzQwYTczOGE1MzkyYmRlMThjIGxlZ2FjeS10cnVuaworNzg4NSA2NDgxMjRhNTg4MGEzMzI5N2E0NWVjYjg4NDFjNDdlMDg3YTM2YWQ4IGxlZ2FjeS10cnVuaworNzg4NiAxOGQ2YTVhYmQzZjgzMjI3MzZjNWZjODUxMTRlMGMwMjg4NGE3OWYyIGxlZ2FjeS10cnVuaworNzg4NyAzYjJmZGEzMWJmMWJhOGVkYzUwNTc3MGVhZmQ5NzI2ZDQ0NGI2Y2E0IGxlZ2FjeS10cnVuaworNzg4OCA2NzE3MDczZGU1ODY1YTcwNjFkZTBkMDNlZDM2YmZkY2QzZDEwOGZiIGxlZ2FjeS10cnVuaworNzg4OSA3OGQzOTgwMDViYWIwMmE1NDI4NmY5MGJjOWZmMDViYzMyNGFmN2RjIGxlZ2FjeS10cnVuaworNzg5MCAxMDI2N2ZkYzc1MzExNmMxZDNlMjU5ODgyMDMzNWYwYjc4MTcwZjY0IGxlZ2FjeS10cnVuaworNzg5MSAwMTNmZjY5NTE5MDlmMGViNTViNGU3NzE5ZTM5NWIwMDE3ZDkzMGMwIGxlZ2FjeS10cnVuaworNzg5MiA1OTYzODBhNTY3ZDIyMzk0Y2EwMWVmZjA5MDU5MzRjMzRiNTJjZmVkIGxlZ2FjeS10cnVuaworNzg5MyAxNzIyNTRkNDFhNTFkYWZiNzQ2ZDIxNTk2OThhYmQyNmYyNmJjMjI1IGxlZ2FjeS10cnVuaworNzg5NCBhYmYzM2I4ODJjZmRjZTgzODc0Y2ExNjQzMDNkMzM0MmJiZmM5MGFlIGxlZ2FjeS10cnVuaworNzg5NSBhMWI2M2M3M2FkMWRjNTE0Y2IzNmM0MDBjYWEyNjc2NjQ1OTE1NWMwIGxlZ2FjeS10cnVuaworNzg5NiBkOTk0MWE4OTVjMDIwOTQxMTU2NGYyZDRmMDQxNzJmZWFlYWRiMDVlIGxlZ2FjeS10cnVuaworNzg5NyAwMTRlYTlkNzJkMDNjZmU0Zjk3ODk3MWI3MWUzZDE1NDJlZDAwMzRjIGxlZ2FjeS10cnVuaworNzg5OCBkYWNiZmFhMDdjNDA3YzI2YWFiOTg0MmNlNGYwZWUxMzI0YjM4ZmY2IGxlZ2FjeS10cnVuaworNzg5OSAzNzMzMmI2ZjYyODBiZWQ0NzJiZDI5ZDkzOWNmZTVhNWNhNGExYjVhIGxlZ2FjeS10cnVuaworNzkwMCBiY2NiOGQ3NDI5NjQ3Yjk0MWU1ZTdlNmY4N2I1MDQzNjk4ZjVkM2RmIGxlZ2FjeS10cnVuaworNzkwMSA2MzhhOTliYzhmMmNjZjdiOWJhNDBhMjQ5ZDA2MjQ3MmUyYWY2YjgzIGxlZ2FjeS10cnVuaworNzkwMiBhN2UzMDliMTc0YjI3MjVlYmQ1MzI5OGRlOTUxOWEyNDI4MTg4MzBkIGxlZ2FjeS10cnVuaworNzkwMyBkYWI4NjNiNzlkZWJhYzMzODllYjRlYzdlMzMyOWJjYmM5ZTRkNjRmIGxlZ2FjeS10cnVuaworNzkwNCBiMDAyMzMzNTU4OGNlZjdmOTdhOTJhNzI5ZTA5YTRkYWQ1M2RkNzkzIGxlZ2FjeS10cnVuaworNzkwNSA1ZTJjMTdiMzc0ZmIwZWFhMjcwMWRmZjhhNTE5N2QyMzc5MGVlZDEzIGxlZ2FjeS10cnVuaworNzkwNiBhYzIzNWM5ZTY4ODFmMzM4Y2E2MDlmZWNhNDgwNGZlMmQyZDU5Y2YyIGxlZ2FjeS10cnVuaworNzkwNyAyMzI5Y2NmMGU1ODExMWNmMTY4OTFkNTZiYWQxYmUzMjMzMWFiNTc5IGxlZ2FjeS10cnVuaworNzkwOCBhNTZiNDRiMzU1MDU3MmZkMzUyOTk5MDA3NDg1NjFlOTFmY2M4NTMwIGxlZ2FjeS10cnVuaworNzkwOSBjZWU0YzQ1YzU2OGY3NjBmYWJhMTk2OWRlZmZhZmI2ZGZjNjIzODc0IGxlZ2FjeS10cnVuaworNzkxMCBhZDQ3NDFkNTQzMWNjMWJkMGJjZWQxY2IzMWEwMTgwYTIzNjQ2NjY2IGxlZ2FjeS10cnVuaworNzkxMSAzZDc4OTAyMzZhNGU1OTFiMzhjMTMzOGVmMzc2ODI0MDYwZDI0YmMxIGxlZ2FjeS10cnVuaworNzkxMiA1OTFjNjQyMGYxMWQwMjVkY2QyYzkzMWIwYmUxNzRlMjU5MmEzNzhlIGxlZ2FjeS10cnVuaworNzkxMyBjZjgxOGI3MGRhM2U2NWQ2NDFmYmY5YjI0OWMyMDU4NjljY2VhMTg4IGxlZ2FjeS10cnVuaworNzkxNCBjMmRhZTJiMWExMjM1ZDFkMjJkNTcyMWRiYTIxNWNhNjc0OGNiZTNkIGxlZ2FjeS10cnVuaworNzkxNSBlOTI2YzMzMWViYmYxZDMxN2Q3ZTcxOTUyY2YwMzU3MTEwZDVjMTIyIGxlZ2FjeS10cnVuaworNzkxNiAxZGFlNWIxYzhkYmExMmE1MzhmNmE4MGRmMGViYWMxNDMxOTcxZTFjIGxlZ2FjeS10cnVuaworNzkxNyA5ZWFhMmNhZWQxYzNiODQ1YTBmODk4ZjA1ZTRkNjE0MjI4YTYwNzZhIGxlZ2FjeS10cnVuaworNzkxOCAzYzZkYjcxNjViYzNkNjA0ZGNhNGY4NjlmZmFmOTRkZWI5NjY2M2Y1IGxlZ2FjeS10cnVuaworNzkxOSA0NTc5YTc3MDE5NDlkYWJkYzQ1ZmY5ZDA0MDI2ZjcxNDM1ZGE4OGVhIGxlZ2FjeS10cnVuaworNzkyMCA4ODY4ZTlmMTM2NTdkMzBjOWMyMzcxMGYyZWE0YTVkZDBmZDc4MGUxIGxlZ2FjeS10cnVuaworNzkyMSA4N2M0ZjA1YTE3ZTUxZmM2MDcyNGE2ZTk2N2M3ODk5NjQ1MDRkYmNiIGxlZ2FjeS10cnVuaworNzkyMiA4ZjNlMTYxMjM2MDA0OWUxNDZiNzE4NDA3ZDc4NGRjZTcxYjA5ZDQxIGxlZ2FjeS10cnVuaworNzkyMyA1MTVlZDczZGE1YjE0YjdiNWFlZTg4YTExOTY5ZTU3MTk0OTJmYThkIGxlZ2FjeS10cnVuaworNzkyNCAwYjFlNjk1MDg5MDczNmQyNDk0MTMwMWJjYWVhNmEyNzRiZmFiYzAwIGxlZ2FjeS10cnVuaworNzkyNSBlOWY2MTU4ODQ2YjE2YjdjMzgwODMzZTQ1ZTliODM0ODE3YTA2Zjg1IGxlZ2FjeS10cnVuaworNzkyNiAwMWYwMmJmMmI0NDE2N2I2ODQ2YWEzNDMzODUxYTI2YWJjMDcwNGNmIGxlZ2FjeS10cnVuaworNzkyNyA0YTgwZTZjYTdjZDM1ZWY0N2UzMDJlN2EzYzMyNjgzMTJmMTRmZTk2IGxlZ2FjeS10cnVuaworNzkyOCA1YWJkZGU5OWM5ZWFkYWE5ZDgwNmJmYWU4OWUxYmMzOWY2ODc4N2EwIGxlZ2FjeS10cnVuaworNzkyOSAyYTg3NTE5OWE3MWU4NjAyMmEzZWJjMDg4YTNmYThlM2MxNjkwYjBiIGxlZ2FjeS10cnVuaworNzkzMCA5YzZjMDdkNDQ5ZGY1NDAzNjIyOTQ5Yjc5ODhjMmE2NmRiM2NmNGZkIGxlZ2FjeS10cnVuaworNzkzMSAwZjZjOTZmNDhlMWJhNDc2ZTU2NzkyNjgzYjc5ZWU5YTgyNThkYjdiIGxlZ2FjeS10cnVuaworNzkzMiA2NjM1NzlhM2M3ZmViNTQwZTdmYWMyMDQ0YmMxMTA5YjQ4MDMwMTRiIGxlZ2FjeS10cnVuaworNzkzMyA3MzE2ZWVjYjFlNmIzMmU2MThjYjMwNDNmOTFlYmFiOWVjMzU0NzViIGxlZ2FjeS10cnVuaworNzkzNCA1MzQ0MDA5NzExMWZlZjhlMzllMGU5ZTVjNWY4NzIxMDdlYTdkNzQzIGxlZ2FjeS10cnVuaworNzkzNSAxMzA1MmRjMmQ1ZjZlNmU0YjkyNDZjMTJkMGEzZjNmMzcxYzM4NTA3IGxlZ2FjeS10cnVuaworNzkzNiBjNWQ3YjZmY2VlMDNkMjI1ZWNkMzdkNDMxNWYxYWRhMmQ3ZmFhYmJkIGxlZ2FjeS10cnVuaworNzkzNyBhZDZjNDI3ZGNiZDllNGQ1NzRkOWIwODA5MDRlODk2NGZlMDExYmFjIGxlZ2FjeS10cnVuaworNzkzOCAwZGVkNjNiY2Y1ZGUyOWVkZDk2OWVkZjEzNmM2YWZhMDViN2FhMjE2IGxlZ2FjeS10cnVuaworNzkzOSA2MGY2NjQ5ZmQyMzEwZGViYTNjMjM2ZGNjNmZmM2ViYzg3YmZlZGQ2IGxlZ2FjeS10cnVuaworNzk0MCA5NTI4NTFkOWNjZTIwZjhkYzFlMzg0OWFlMGM5NGMzNDYxMGRjOTMyIGxlZ2FjeS10cnVuaworNzk0MSBiMDU4NGJmN2I0ZjUyOTk2MmQ0OTM4MjA2MTNkMjhhNTI0MjM1ZTFjIGxlZ2FjeS10cnVuaworNzk0MiAwOWU2YjRlMzQ1MjNiYWUyMGU1ODI2NjA4YTEzMzhiZTAzY2ZiODAyIGxlZ2FjeS10cnVuaworNzk0MyA0M2M4NmM4MTgxZDQ1NzY2MWQ1ODBlOTI5OGE5NjJlYzNiODlkNzFhIGxlZ2FjeS10cnVuaworNzk0NCA2NGI2OTMxNTE5NTZkMjFhZDVhODNmODVhMmQ4ZmEyNTkwMTMyMzEzIGxlZ2FjeS10cnVuaworNzk0NSAwOGU4NmQ0MzkyODFkZjA1Njg3NGU2YmFkYmEwNDUzYWM3YTBkNzNjIGxlZ2FjeS10cnVuaworNzk0NiA0N2U4MWIyMTY5ZTk1NGVjMjVhZjRjNTE3YWI1ZDZlMWIxZGYzODI3IGxlZ2FjeS10cnVuaworNzk0NyBkOTAyOWE0ZTBmMmFjNzdjNmZjODEyOTE5MWM2MGM1ZjMwNDU5YTdiIGxlZ2FjeS10cnVuaworNzk0OCA4ZTVkNmQzMTAzYWVmODNlOTcyZmMyMjQ5YjgyMzg4MTdiNGZjYTk3IGxlZ2FjeS10cnVuaworNzk0OSA4NGRiMTU0ZDViOTNlOGQwYmUwNTYyNTU4MGJlYmU4MWEyYTZmNTk5IGxlZ2FjeS10cnVuaworNzk1MCBjM2Q0YmZiOGNjZGYwMWQ2YTM1YmQzMjljYjRiNDc2NDNiOTE5ZTczIGxlZ2FjeS10cnVuaworNzk1MSAyNjY2ZTkwNGU0MGIwY2NkNDhlOTJjMjEzMjY2N2NjMGE0OWU3YWU3IGxlZ2FjeS10cnVuaworNzk1MiBhODZlYTJjY2VhZWNkZDViMmU3NTY4Yzc1MWQ2ZWNhZDE4NWMzMjliIGxlZ2FjeS10cnVuaworNzk1MiAwNjJhZWQ4YTRjZTJjOTFjODFiODBlMjlmMDJmYWZmMWNmNWE3NjFiIGxlZ2FjeS10cnVuaworNzk1NCBmNDRhNTZlNjk3ZmIxN2NlNTZiODZjZjQxOWI2MDc2YzI2OGNjMzQ2IGxlZ2FjeS10cnVuaworNzk1NSAyNjZjOWFhOGMxMjc3NjE0OTFiZTg4ODFhMDMxZWQxNmQ0OTNkZGVlIGxlZ2FjeS10cnVuaworNzk1NiA2ZDUzZWJhZWMwMjE1OTFiMzM1MDk2MGIxODhhNTNiNmQzZmM0ZGMyIGxlZ2FjeS10cnVuaworNzk1NyBiOTYxNzZjOWE4NTNiNjlkMjAxZjBiNTAyMGZhNjgzOWE0ZTUwNTc0IGxlZ2FjeS10cnVuaworNzk1OCBmMWFmYzU2OTBiMmFiNWYyMDFlMzA0ZjUxM2RmOTk5NGJiNDc2ODI1IGxlZ2FjeS10cnVuaworNzk1OSA2ZmEyOTc1NmVjNmEyOTQyNzQ3YWQ4YTUzOGFkMGRmZDllZDI1ZWE1IGxlZ2FjeS10cnVuaworNzk2MCA3MzUwOWVmYTcyNGJjY2VjZjk4NTg3ODQ2NjczYjczYzc1MDEyMTM1IGxlZ2FjeS10cnVuaworNzk2MSA1OTVhNWZlMTQwZDQwYzI3NjMxMGFlNWRlYTkwMzU2MTBkYjY4YmYzIGxlZ2FjeS10cnVuaworNzk2MiA0NzhjNjhlYTk4Mjc1MWEyNTJjMjZiOGFhOWZmMTdiZGE2YTg5NDIwIGxlZ2FjeS10cnVuaworNzk2MyAxOTVkNWFhMTk1MWUwM2MyMzlkOGY0MDU4ZTVlOTk3ZmNkZjk3N2FhIGxlZ2FjeS10cnVuaworNzk2NCBlZDAzOTQ0ODQwODJiNjJjOTA0ZjZjNjAxM2ExYmEzMTk3NGVjZTI1IGxlZ2FjeS10cnVuaworNzk2NSAyZTg5YzU1ZDlhMjk1YTJlZmJjNDc4YjMwODAyZjU5ZDI4YWQwNDA1IGxlZ2FjeS10cnVuaworNzk2NiAyZDEzMzI4MDEyOWY3MmM5NzVlODMzMmRkMDg3MWU2NTJlZmY3MGM3IGxlZ2FjeS10cnVuaworNzk2NyBjMWI0MGIwNTc3ZDE5NGYxZTFhZWQzMzA3NzRjNTg2MDFkZjRhZDVlIGxlZ2FjeS10cnVuaworNzk2OCA1MDZiYTdkZjQyZjA0NjMxYjUxNGI5NjVkNjZmNjU2YTE0ZTg4YjdiIGxlZ2FjeS10cnVuaworNzk2OSBhZjFhZWE2Yjk2OGZkNmRhY2MxMzAzYTU1ZmRiMDJkYTVlMjU3ZTU0IGxlZ2FjeS10cnVuaworNzk3MCBlZjkzZDUxZGFiMzYyZGQ1OWJiNTM1ODA3YzQ4NzYwYTY4OGYzZTI2IGxlZ2FjeS10cnVuaworNzk3MSBiZmQwMzE1NDA4OGI2YWMxMTBmMGUwYzY1OThmYmE4YjNmMjg0NDJkIGxlZ2FjeS10cnVuaworNzk3MiBlNjUyYTc5M2Y0ZTcxMmY0NTdiZjU1NjE4YWNiZjZjZmVhNTI1OTY0IGxlZ2FjeS10cnVuaworNzk3MyAwYjE5NDY2MDBiZGRlZDhmMWQwYzg1MWFhMDllNGNhYjRjODk3YjljIGxlZ2FjeS10cnVuaworNzk3NCAzNzdmODY5NWE5ZmJiMjAxZDA2N2YzMzdhMGNkOTM0YWVlOGJlMDY3IGxlZ2FjeS10cnVuaworNzk3NSA5YTEyMjU5MjM5MTgxZjhhMzQyOGFjYWVlYTJkYzZmMmM0NjY5MTVmIGxlZ2FjeS10cnVuaworNzk3NiBiOTA1MzcyZWRkNGZiNDdhN2UwODcyN2I2ZDk2YzBjNGRhMDA0MWE2IGxlZ2FjeS10cnVuaworNzk3NyA4MjE5MTJmZDk2NWExZDBhNGE2ZWQwOTVhZjRhMDU4ODdiNjE0NTE2IGxlZ2FjeS10cnVuaworNzk3OCA0NjYwZmZiOWU0ODNjNzU4NzllMzQ1YzE5NTViYTc0ZjhmYzczYzc2IGxlZ2FjeS10cnVuaworNzk3OSA1MDU4MTY2NmM4NTRmYjEwOTA2ODFmMWY0OTY0Mzk3NmM0NWFmN2Y5IGxlZ2FjeS10cnVuaworNzk4MCBiYTAwNWU0ZGI0YzUzNDM2ZjIzNzA2YTgyYjY5OGIxYTQ4NWM0MWFiIGxlZ2FjeS10cnVuaworNzk4MSBjODhiOWI4Njg5OTUzMTQ3MzhhMTE0YjYwY2E1MDRhOTMwZmMzNzE2IGxlZ2FjeS10cnVuaworNzk4MiA0N2ZhMDA4Nzc5MjQyYTI3OGFjMmQ0NzU4ZTQ5NzQ0Mzk3ZDg5MmNlIGxlZ2FjeS10cnVuaworNzk4MyA1OTQzOGQxOWQ2MDM2NzVmZjc1MDhjZWNmZGRhODM2Nzg0NGRkYmIwIGxlZ2FjeS10cnVuaworNzk4NCA1NmI0M2E0MGE1Mjg1NTcxNzUyMjM1Yzg3YmJkN2YxMDVlN2MyZTJjIGxlZ2FjeS10cnVuaworNzk4NSAzNjQzZjE5ZDVjYTFhNDAwNjlmMzM4YzgzYmFjOTRhY2M2NjFhYTg4IGxlZ2FjeS10cnVuaworNzk4NiBkZGVkZmE1NTY4NGE2MGExMWMzNTlmY2IyMjgyZDM4N2VkY2JmNThjIGxlZ2FjeS10cnVuaworNzk4NyA3MjkwYTkzMGI0Yzk1N2M1YjU2NDE5OTlmN2Q3ZTEwZTUxODA3NzBlIGxlZ2FjeS10cnVuaworNzk4OCBmYjM5ZDI4ODY2NGI1MzllYjRmYTBkMTE0ZjhmMTUyNzMwZDI0NTRjIGxlZ2FjeS10cnVuaworNzk4OSAxNDlkNzQyYjA5NzFjZTFjNWMxODQ4NTQ5ZDc3OWFmZTgwMmI2YTlmIGxlZ2FjeS10cnVuaworNzk5MCA0ZGQ1MDk1YzNiNjdlOWY3N2Q4OWNjYTYwMmUxYzNhOTk5MjM4ZGFjIGxlZ2FjeS10cnVuaworNzk5MSA2NGUyZmQ4ZjFkNjg0OTBkZmI1NGNhMWE5NzZhZWNlOGM1NzNiMWRlIGxlZ2FjeS10cnVuaworNzk5MiAwNjRjODY3MTljYTdiZGZjNjE3YmNjZjczMjBjYTA2MmI5MDdhZTNlIGxlZ2FjeS10cnVuaworNzk5MyAyNDU2ZDhmZjlmYTgyM2UyNjQ2OGUwYmIzNTJmYjE3MjcwNGY0NzgyIGxlZ2FjeS10cnVuaworNzk5NCBjYTEyM2YyNDBiYTljMzY4MGJhNDg5ZjY3MWZkODNjZGI5ZDM4YWVlIGxlZ2FjeS10cnVuaworNzk5NSA1NzZiN2Q5MjdhZmI5MDljOGQ0YjMyY2ZhOTAwYjk4NTY0ZDU3OWVjIGxlZ2FjeS10cnVuaworNzk5NiAxMzgxNTI3M2UxNzFiYmExMzU0ZjMzNjNkODU1MWM4MmQ2MWUzMjIwIGxlZ2FjeS10cnVuaworNzk5NyAzMWQ2NjE5NGE3N2M5ZmZjYjg0NjY4MDllYTZmOWFjODJkNzcwOWU0IGxlZ2FjeS10cnVuaworNzk5OCA4ODAzYmY0MDRiNjk0NjY1NTYwYzE1N2NlYmExYzUyY2E1NWY5NTg0IGxlZ2FjeS10cnVuaworNzk5OSA5ODZjMzA4NzY1YWU5NjdhYWQ3NWY4NTAyMTA3Y2Y1MjNhMTU4M2ZmIGxlZ2FjeS10cnVuaworODAwMCAwYmE5ZjkxNGE3MDg4NzZlZTAyZTExMzEwNGRmMGZkODcwYTgxYWUwIGxlZ2FjeS10cnVuaworODAwMSA5YTIzN2E0Y2YzYTFmNmY4NzZkNjUwOWZhN2E0NGVlYzZjNjg4ZGZiIGxlZ2FjeS10cnVuaworODAwMiA4NTgyZjc0YTFkMjM1ZDNkMzM3NmEwMmJkYWViZTQ1ZWQwYjM3YWE2IGxlZ2FjeS10cnVuaworODAwMyBiYzlkNTQ1MjM4NjI4MDJiN2U5OTE1YjhmYjNjMDYzNjE2NDk5ZWJkIGxlZ2FjeS10cnVuaworODAwNCAyNmVmZjY5ZWQ1NTIzY2JhNDdmNzgyYjhhNzFmZDIxOThjNzljZGNlIGxlZ2FjeS10cnVuaworODAwNSAzMjU4NDYzZjFjYTI3NWUyNjZiOWQ2NzRiMTQ5NDE2MmUxNTZhYTZlIGxlZ2FjeS10cnVuaworODAwNiBmNWRlY2M1ZDcwNzNlZjlmMjU5OGQyODY5ZTIzNDUyZGZiZjgwYTM2IGxlZ2FjeS10cnVuaworODAwNiBjOTQ5OGFjOTg4MzcyNTc1Y2Y3MDI4Yjg2Mzk1YjkwMGM5YjBhODQwIGxlZ2FjeS10cnVuaworODAwOCA1NDU0ZmU0OTI1ZDM2NTY1YjJiNjhiZjQyZGNhZjkwYWViMzUyOWVkIGxlZ2FjeS10cnVuaworODAwOSAzMGQ1NTk4MjcwNDc5NmUxYWM2MTYzOTFkNzNkZjFlNDc5Y2VkNTRhIGxlZ2FjeS10cnVuaworODAxMCA4MjZmMjg5ODViZWFkZjU5MTA1YTQyNTZjNzNmZDdiMzgzMjUwODMyIGxlZ2FjeS10cnVuaworODAxMSA4NGQzY2NhODE0ZmJkMGQ2NTM0OTIxMTM5NjgyNmExZmRkZWRiNGM0IGxlZ2FjeS10cnVuaworODAxMiAyMGMyYjcxNTE4OGVhOTc1YmVjNDgyYzIwZTFmYTNjM2YwZTQ0ZjQzIGxlZ2FjeS10cnVuaworODAxMyBjNmYwNGU5NjU1MDgxODE3Nzc1ZGI0YzEwNDdiMGIwODY0NWM4ZTk4IGxlZ2FjeS10cnVuaworODAxNCBiMWRmOTM4NjU1ZTE1ZDUzOTBiNTY1ZmUyYzMyYjNlZGMwMDEwYjg0IGxlZ2FjeS10cnVuaworODAxNSA0NzJjOGU0Y2M5NzQxZmJlYmZmYWIyNzVjNjNhZWIwNzcxYmI0OWZlIGxlZ2FjeS10cnVuaworODAxNiA4Zjg3MWEwMzBiOGQxNDAyOTg1OTAyM2I5NjZlYTM1NzlmMWE3YjJiIGxlZ2FjeS10cnVuaworODAxNyBhMGNjMDA1ZWNjZDc4N2I0YjE5NTY2YjgwNzE2ZjQwOTJmYmJlMDI2IGxlZ2FjeS10cnVuaworODAxOCBiNTc5YzU5MThmMmNiMzViMGExOWY0NTNlMGYwMjE3YWIyMmZkYWI3IGxlZ2FjeS10cnVuaworODAxOSBjZmMxM2YzZjM4NzY5OWRmYTRiZjc1OTM0OTA0NjA3YWMyNDVmODQzIGxlZ2FjeS10cnVuaworODAyMCAzN2M5MzlmNzBmYWMwMWQwMjYyZTQ4NzY0ZmM3OTU4YTViOTBlMGE4IGxlZ2FjeS10cnVuaworODAyMSAwYmJhOTE0YmY3YjJhY2E1MWFhMzdiMzFhOTYxZjczZDcwMjc3NGJhIGxlZ2FjeS10cnVuaworODAyMiA3ZTQyMjg3ODBmZjhjMWEzNGM3YThkMWNjOGM3ZjI1NGIwYjRjOTA2IGxlZ2FjeS10cnVuaworODAyMyA2YzA3ZDQ0YTcwODEwOGNjNWRiNDQwZDRkZWQ3NTQ2NzAxNzZiMDlkIGxlZ2FjeS10cnVuaworODAyNCA5OGQ0ZTk3ZGFhYzA1NDZkN2ZlNjBkYWIwZGQ3ZjA0MGNiOGY4NzExIGxlZ2FjeS10cnVuaworODAyNSBhMjJjYWYxMjkzNDUzOGU0NDcwY2E4NzliZmY0MWI1YzlkZTVjNDU4IGxlZ2FjeS10cnVuaworODAyNiA1MjYxMGVjZWUzNjdhNzkzOGEwYjQxODM5OWI3YTM3M2FkZjdiOTBiIGxlZ2FjeS10cnVuaworODAyNyA0MzgyMmU0ZmMyN2Q0NzY0MWE0YWRjM2Q1ZWY2OGZiNDc3NmU5MTNiIGxlZ2FjeS10cnVuaworODAyOCAzNDUwOWMwNTI2NmYyMjk4NDE4ZWYzOGQwZWQwNGE3YzhjZWZkYjc3IGxlZ2FjeS10cnVuaworODAyOSAyZGZjNzA3ZDZlNjg1MTk1YmU4NjZlODhjYjdkOThkNjYwODNkYTNmIGxlZ2FjeS10cnVuaworODAzMCAxOGZkMDc4NjliMTNjNDhiOGI1MjdmYjkxNTU4YjNkMzBmZmVkMGZiIGxlZ2FjeS10cnVuaworODAzMSBiNWU2NDhmZGUwOTljOTZmZWMzY2M1OWY2YjE2ZDAxMjAzODE0MGMzIGxlZ2FjeS10cnVuaworODAzMiA5ODlmNGZmNzM0MjkxNWFhMGY4ZWFjNmZkYjM2NTFiZTU5MmNhMTQ2IGxlZ2FjeS10cnVuaworODAzMyBmYTlmYWRhOTE2YjQ1MzAzOWY5OTI3MGJlMWI2OGQ3NjczYzBhYTMzIGxlZ2FjeS10cnVuaworODAzNCA0MzI5ZTQwNzdjZjM5MTUxY2YyYmM2MmJlZDBjM2IyMjdhZDYyMzg3IGxlZ2FjeS10cnVuaworODAzNSBlZjNiYThiOTlkYTJlZmZmYmEzY2ZmYjYwOTkyMjJiY2Q5ZTNlYjlmIGxlZ2FjeS10cnVuaworODAzNiAxZWNlZDFhYWFkNWE4YTY1ZTYzMzBkMGI1YmFlYzI1Mjc4YzU5YWU2IGxlZ2FjeS10cnVuaworODAzNyA4ZWMyOThiMjU1YTIwYjY3MGEzZmFkODJkNzgzM2U4YTVhMjk3MTY1IGxlZ2FjeS10cnVuaworODAzOCA0ZGNmMjZmZTRkYTU5NTFiMDk5ZjVmMGRiZWJmMjhlMGFlYjJiZTljIGxlZ2FjeS10cnVuaworODAzOSAzZjNkMmQ0NzRhY2EwZjVjYTEzYTQ0ZjcxYTI2MGNiZTQ4NDY3MGU1IGxlZ2FjeS10cnVuaworODA0MCBmMWIwMzg3NThiZGE5M2IzM2U1YzhjZmE4MzkxM2JhYzUxZTllMzMwIGxlZ2FjeS10cnVuaworODA0MSA2ZTk0NDI3OWEzMTRmMzAwNDA2ZGYwYmQyZWZmM2NlMjcwNjY2ZmQ1IGxlZ2FjeS10cnVuaworODA0MiA1ZmZhYjY1ZjhkMDUwOTg4YjkwNjg3NDY1MzVmMmU0ZjVmNjg1OTI4IGxlZ2FjeS10cnVuaworODA0MyAxOWQ0YTI4NzQ2NDU0YzM0MTFjMGY2NWIzZGQyNWIzOGJmYTg1NzEwIGxlZ2FjeS10cnVuaworODA0NCA5MzJjZmM1ZmMxMDRiMjRkMTE4ODhiOWVhOTQ2YzM5N2RkYTY4ZDgyIGxlZ2FjeS10cnVuaworODA0NSAxMzlhYjIxZDI2MjliZTQ5OGYxODhjY2Y4NTMwMzkzYjczY2NhZTAyIGxlZ2FjeS10cnVuaworODA0NiA4MThjZmZmM2FhNWQ4YmNjMWI1MDYwMmFjZDZjYTNlNzUzZTMxYzg3IGxlZ2FjeS10cnVuaworODA0NyAxMWUyZTNmZjlmYzdiMTllYmM0MGI5NDA4NTk5ZWQ1NTIyMzhkNWQ4IGxlZ2FjeS10cnVuaworODA0OCAzZTY3OTUzMGFmYzllYzY0YWNlY2JlMGU3MjZjNjZmMDljOTZhNjExIGxlZ2FjeS10cnVuaworODA0OSBiMjMxODU1YTk0NzQ0ZGJkZTIzODQyZGI0Nzc3ZjY1YjY1ZTA4YzhlIGxlZ2FjeS10cnVuaworODA1MCBiZjlmMTA0YWJlNzhhNTVhOWRlNmRmMTU5NzUzOTJiMzYxNjhlMDg5IGxlZ2FjeS10cnVuaworODA1MSA4NGQ3Y2M1ZTYzY2RiNzY1Y2RlMGExOWE4ZjczMmZkNTE4NWY0ZWFmIGxlZ2FjeS10cnVuaworODA1MiA2YTlmMjYzZTJiNDhjYWNjOGI4N2U5MzY3NzlmMWE4MjhiNzA2NTFmIGxlZ2FjeS10cnVuaworODA1MyBjN2Q4MTJlNGFmMGQzZDkzZTM4NDIwYzMwNGRlNWYxYmVmNmQ0OGVjIGxlZ2FjeS10cnVuaworODA1NCA2YzcyYjkxYzhiODNkMWFjM2I0NTFmNTVlMTU3OTAyODExMTVlMjA3IGxlZ2FjeS10cnVuaworODA1NSA5MzdkOWVjMmI1NjA1MTdhMmRhMmY0MmMyZTBhYTkxODVjM2IxYzg0IGxlZ2FjeS10cnVuaworODA1NiA0ODZkNWU5ODkzOGJiYTRkNGJmZTE0NDYzODk4MTQ3MDczZjdlNWJlIGxlZ2FjeS10cnVuaworODA1NyBjZTU5OTczYWNjZGU3ZTA3ZDI5YWNmNGY3NDU2M2MzYzZlMDhjZTU0IGxlZ2FjeS10cnVuaworODA1OCA3ZTJhZDllMzJlMGQ1ZGQ1M2I4ZGY3MjNjMGQ1ZDY5YzU3MjJmNmFkIGxlZ2FjeS10cnVuaworODA1OSA4N2Q1ZDdmYThkMDdlNmI5OTY2NDVmZjkyYjY2NmRhMDZlYzFjZDFkIGxlZ2FjeS10cnVuaworODA2MCBlZGJjZmVkN2ZjN2JmYzg5ZTVlOWNhMWFlYWUxMDQ3ZTJmNDcxNGYzIGxlZ2FjeS10cnVuaworODA2MSA4NWM1MDQzYzkzMTY3N2VjYWJlNTg2ZTg0ZjBjNTY0MTUyZmQ3NWFjIGxlZ2FjeS10cnVuaworODA2MiA1N2RiZGMyYjMwMjI2ZjEwM2EwMWFmN2EzZTU4OWQyODU0MTUzNmJmIGxlZ2FjeS10cnVuaworODA2MyA3ODRiYWZiNDdlMWY2ZGJmNzRiZTBiNjhmYTg4YWMxMTJmZWM1YzI2IGxlZ2FjeS10cnVuaworODA2NCA2YTQ4YTdlNzExZDg2Y2EyMmFhZWI1MDYxMjcxYWJlMDI5YmIxN2QwIGxlZ2FjeS10cnVuaworODA2NSA1M2NkZjk0YjY1MmI4M2U1NjUyZjVjNzEwZTllYjM0ZmRkMzk4MjhkIGxlZ2FjeS10cnVuaworODA2NiA3OTVjYTk3NWQ5NmY4OGUyODNjYmRmNjZiYzU5YzMxMDIxMWE4YmY0IGxlZ2FjeS10cnVuaworODA2NyBmM2Y2NTY4N2U0MjYwZGFkZjdkZGMwOWQxZTY4MTEwNzYzN2FhYjhkIGxlZ2FjeS10cnVuaworODA2OCBkYTQ3NWUxMDdhNjhmNzY4ZGM0ZGEzMWEwYmU4MTc1MGE5M2Y1ODgyIGxlZ2FjeS10cnVuaworODA2OSBlM2Q1MjU4MmQzNjA3ODEwZDVlM2Q5MmFmYzQwNDlkZGQ3NzhkODMyIGxlZ2FjeS10cnVuaworODA3MCA0NTFjN2NjZjM2YjY3ZjJkMWFmOGY0NGMwMDY2M2VjNjE1M2EzMDY0IGxlZ2FjeS10cnVuaworODA3MSA0YzQ2MjFhYTllNzY3N2U2MTA5NjNjM2NkMzAyMDFiMjM2ZDg2YTE0IGxlZ2FjeS10cnVuaworODA3MiBjNWE1NjdhZjEzZWU3Y2YzY2E5MDhkZGRhZjhjYjczYTcwMTE1YmY1IGxlZ2FjeS10cnVuaworODA3MyAyZTJiYmU5ODU2MjAyMjM1NGRiZDU5ZDUxMGJjZTY2MWQxMTViMThjIGxlZ2FjeS10cnVuaworODA3NCA1NTE2OTE1ZmZlZTdkNzgyNzcxYjJmMzM3NzY4ZDMwMjM3ZTIxOGQ4IGxlZ2FjeS10cnVuaworODA3NSAxZjIwNmM5MWRhZWUxODAwZjkzYzllYWMzNTkzNTJlM2I5Yjg1MmU4IGxlZ2FjeS10cnVuaworODA3NiBiNWU1MWFlOWY4MzJlNWEzOTg2MGU4NDJkODQxOGE5YTA3YzIwYjc2IGxlZ2FjeS10cnVuaworODA3NyBkOTU0ZGMyNDNlYjA3YWFjNTNmOTY1MWM3MWIwODgzMGNiMzA1MGJjIGxlZ2FjeS10cnVuaworODA3OCBhNjEwMjNiY2EwYTk3NDM3OWRhNzE1NGEzMzBhMTQ1ODc5MzZkMDVlIGxlZ2FjeS10cnVuaworODA3OSAwMjk0YTY3YmZiZGI0MzdmYWNhYzQyMzhmZGU1MjI4OWUxY2ZmZmVhIGxlZ2FjeS10cnVuaworODA4MCBmNDM1NTlkMjNiM2Q2OGU5NWViNjFiYTM3YTE3MWViZDBmZWNkYzBiIGxlZ2FjeS10cnVuaworODA4MSA4NTk4MGVhNWU4MDVjZjk5MGQyODNkZThkZjUyOGNlMjVmZmU0NDg0IGxlZ2FjeS10cnVuaworODA4MiA4OWFmNWJmOGY4NzMyMDQ3Y2Q2YjlmMjYxYTc5N2U5YTI2MDVhYTViIGxlZ2FjeS10cnVuaworODA4MyA0OTVmYmRlNjRhNzNiNWRiNmI5ZDJjNGJjM2I5MDkyNWQwYmVmOWNhIGxlZ2FjeS10cnVuaworODA4NCBjYmI0ZTNjZjA4NmUyMjFhZDNkZmI1NDRjMjIxOTEyMDIzNjM5YWE1IGxlZ2FjeS10cnVuaworODA4NSA3OWU0OWNiY2UyZWZkMmYwYzZiOWMzODcwOWYwY2UwYjMyMDI3M2VkIGxlZ2FjeS10cnVuaworODA4NiBmMjhlZWEwMmNmOTQ0NjJiYjk5NWZhYjI0OTMxODk2NDgwODJkODFhIGxlZ2FjeS10cnVuaworODA4NyAxMGU5Y2ZhMDEwZjA4OTc2MWZlNzljOTVjZDdjYzEzZjY3MGU2NTU0IGxlZ2FjeS10cnVuaworODA4OCA1ZWQzYTIxY2MxMjI5YzE3OTg4NTI0NTNjMWU3ZmQ0ZDkxYjUzMWEzIGxlZ2FjeS10cnVuaworODA4OSA4ZDQwNWY3MTI4MmY5NmUwMTY4ZDg2MGRmMTI3YTUwMTI1YmIwZTg1IGxlZ2FjeS10cnVuaworODA5MCAxOTBlMzViYmMxNWFlMjMyNzg3ZGU3YjIwOTUzMWZkMjAwYzZiMjQ3IGxlZ2FjeS10cnVuaworODA5MSA3MjU0ZWUyYThhYmRhNzA4OWFkMTQwY2VlZjJjZTY4NDhmYzFmYTE0IGxlZ2FjeS10cnVuaworODA5MiAzYmEwOGQ2ZTliN2YyODQxYjI4MzU0ZTAzNjhjMDg2MmViYjM3MGMyIGxlZ2FjeS10cnVuaworODA5MyBiYWUyYzAxODlmODU5NGE4YTM2NjYyMzczNjY3MGQwN2Y1NTc0ODk4IGxlZ2FjeS10cnVuaworODA5NCA3MDg1NTU3NDUxNmI4NmI5OGM1MTU4ZGVhMWQxMTQyNmMyYWQwYWQzIGxlZ2FjeS10cnVuaworODA5NSBmZGQxZTFhNTMwYWY4YzA3ZDVjMjcyMmVlYWYyYjI2MTkwNzYzYzQ5IGxlZ2FjeS10cnVuaworODA5NiA3ZmRhNzg0MWRiOTE4MmY4ZTc4NDdhZDIwNDIxNTI0ZTcxYTU0YWI3IGxlZ2FjeS10cnVuaworODA5NyAwNTU2ZWE2ODdhOTdkODE4MTA1OTQwYWNkZTg2ZmVhYTdjMWQxZjNlIGxlZ2FjeS10cnVuaworODA5OCBlMTQxM2ZhNjRiODMxYjc0NWRmYTQ1Yzk3OTcyM2MyNmMzYzE2NGI4IGxlZ2FjeS10cnVuaworODA5OSBmOGU0NTJhMWY2NDQ4M2JjZjZlZDBiM2NkMzRiMDVjYTUyZjFiYjVlIGxlZ2FjeS10cnVuaworODEwMCBmYTZjOTFhNWY0MWI3ODM4NzU1ZTMzNzhmNjU2NDY5ZWQyNmQ5ZGYyIGxlZ2FjeS10cnVuaworODEwMSAzMmJhZmM5ZTljNGZjMzZjODA5YWY2MzBmMjcwYWI0ODBiZDI3NDRkIGxlZ2FjeS10cnVuaworODEwMiBhY2ZjZTAxNWRmZGQzNmRlZTBhYWExYjVhMWMwY2I5ZWY3NjA0ODBjIGxlZ2FjeS10cnVuaworODEwMyA2OTZlNzU0MDY0YzM3ZjBiNjkzMWJiMWE1MGIzOTVkODUwZmMxZGIyIGxlZ2FjeS10cnVuaworODEwNCA0ZDEyZTZlOWMyN2QxZTUzNjhhNzQ1MGI5MzE5ZGIzNTY3NWZiMzBkIGxlZ2FjeS10cnVuaworODEwNSA5OTI0ODI1ZGE0YjNhNjg1MDJlMDEwNzJlNzkyMDMxYjZiYWIyZWQzIGxlZ2FjeS10cnVuaworODEwNiBlNmEyMzNmYzhiOWI0MTRhZDI2ODM4NDZmMTI2NWE1MmNmYmQ3YzVjIGxlZ2FjeS10cnVuaworODEwNyA4YWY4ZWU3OTdjMDk1MmNmNzEyZjgzNjg2NDlkYmI0MDIxZDU2MjRiIGxlZ2FjeS10cnVuaworODEwOCA4YzU0Yzc3NzY3NDQ5MGU4M2JjM2JjMDdkYjgyMWRhZGJmYjUzY2ZmIGxlZ2FjeS10cnVuaworODEwOSAwMGZjNDEzYTNiOGJjNzZlYjI4ZTU0NzE5MjQ0OWIzMmYzYjdiYTg1IGxlZ2FjeS10cnVuaworODExMCBjNjljNzU5ZjQzNjZjNTYwNTVkMDRhYjhkYjJkYWU4MDE1YWE3YzMyIGxlZ2FjeS10cnVuaworODExMSBlYzk3ZjQxYzdhMDRlYjQzZDg5NGU3NWQ0MTBiMTg0Y2RhNDhjMmNkIGxlZ2FjeS10cnVuaworODExMiBhY2M1NWQ3MDQ2NzQ3OGUwZWVlODRhYzU5NDI0ODhkOTQ1NTk2MDBkIGxlZ2FjeS10cnVuaworODExMyA3NWJhNjRjNTVmMmUxMmM5NTA0Y2RlYWI1NjFkZWRkMzg4NDRiNDAwIGxlZ2FjeS10cnVuaworODExNCAxN2NhN2U0ZThmZDZlODFmZDlmNDhlYzA1Yzc4N2VlNjhiMGZkNzhhIGxlZ2FjeS10cnVuaworODExNSBmOTE0MzlkOGY2NmU0NzI2ZmYxZjIxMDE5ODc4YTgwZDg2N2FjNjZlIGxlZ2FjeS10cnVuaworODExNiA0MzcwNTY0N2ZlYjkyOTdkNWVlMmZhNTJhYWM2MzdkOTY0ZmZkNTY0IGxlZ2FjeS10cnVuaworODExNyA1N2EyNjFmYTU5NmM2ZjI2NGJjN2RkNzkwMmE0NTM5ZTc2Mjk1ZGY0IGxlZ2FjeS10cnVuaworODExOCA2NWVhNDFmMmQzNGQ4MGY3NzVlOTFmY2ZlMDcyYTlmNTIxNDZmNTdkIGxlZ2FjeS10cnVuaworODExOSAwZWY3MDJiODA0NmJhNmZhMzk5MTg1N2Q0NzRjZWY1YjUyYjBiODA3IGxlZ2FjeS10cnVuaworODEyMCA5Njk0OWI5ZjQyY2I5MDI0ZDUzODliMjk4ZDU1YWU3ODYyZGNkNTJhIGxlZ2FjeS10cnVuaworODEyMSA3YzIwOWRhYmQ4YzgwMDAyY2Y2ZWVmZWQwNDYxZjE0NDgwODI5M2JmIGxlZ2FjeS10cnVuaworODEyMiBlNTkzNzRlMjNmZGY2ZTQ2NTZiYzc1ZDFhOTEzMWIyMDI2NWY3NzZlIGxlZ2FjeS10cnVuaworODEyMyBjNjNlMjgzYmIyZTQ2NjE0OGY3YzFhZjU0ZDA2YzBjNDlkMGJlZmQ3IGxlZ2FjeS10cnVuaworODEyNCBiNDlkODAzN2E1Y2JhZTNmNDA0YzQ3ZjQ2ZjQzMDk5MjZiYzA0ZGFiIGxlZ2FjeS10cnVuaworODEyNSAwY2M5N2U3NWEzNjEzOTI5ZjRjNjA5NTYwNWQ4MWQ1OTIwMzc0MTI0IGxlZ2FjeS10cnVuaworODEyNiAwN2UxYWFiMjMxMTUzNDIzZWVmZDU1MDM1NjViNmJiOGUzZDE4YjNkIGxlZ2FjeS10cnVuaworODEyNyBkNDVkYzdmZTQyYWY5ZTNlOTg2MTc4ZjdkMGZhYzk3ZWJlNGEzYWU2IGxlZ2FjeS10cnVuaworODEyOCA5NWQ2ZTE3OTU1ZWZjOGJiZDkyNGE0NjQ1NTJlOWZjNTNlYTBiYTZlIGxlZ2FjeS10cnVuaworODEyOSA2MDA5ZDUzOTA1ODQ4Y2VmOTM5MWQ1ZDJlMGY3ODQwMzlmNmIzMDA0IGxlZ2FjeS10cnVuaworODEzMCAzMDk2MDJjODc5MjkyNDE2OWNmMDc5YzkxOTM0MWIxMjA3NTRlNGE3IGxlZ2FjeS10cnVuaworODEzMSA4ZTE0ZDU0YTY0MTlkMjljOWYzYTNmZjAyYjJmMjdlMzE4MzFhNTMzIGxlZ2FjeS10cnVuaworODEzMiAwYjU3NDJkMzE4OWEyNDBlZTRlMzk3MzlhZWVjYjcwN2RhYTM0YWFhIGxlZ2FjeS10cnVuaworODEzMyBkMTc1Y2FjNTUwYjk4YTYxOGU0MzU1NzJhZWY1NTM5Yjg2ZWM5MTM3IGxlZ2FjeS10cnVuaworODEzNCBkZGVkNDM5YjdiOGFiMTYxMjE5Yjc3YzcxZTcwOGVhNzhlNjY5MjAxIGxlZ2FjeS10cnVuaworODEzNSAxMjY1Y2E0NGYwNGI5YmNjOWZmOTlkZGI5Y2UyODZkMDkyZGI3NWI1IGxlZ2FjeS10cnVuaworODEzNiA2ZjlhMmM4NzQwMThlZDhiZmRhZTA0MmRiZmJiNWU0OTgyZjA0MDc1IGxlZ2FjeS10cnVuaworODEzNyBlZmRlZTdkNDMyNzA0ZDA3YTM3NTQ1ZGUwYzA1ZDRiZWVmNWY0YTAyIGxlZ2FjeS10cnVuaworODEzOCAzZGI3NTRhYmZmMzYyZjA5M2VkOGI4MWYzMzg0ZmNlN2M5MTJkY2EwIGxlZ2FjeS10cnVuaworODEzOSA2YmQzYTJjZWMzNTMwZmU3YTExZDEyYmU2NTU3NDA3ODhmN2JjYzdmIGxlZ2FjeS10cnVuaworODE0MCAxODE0OTk4MGVjZTk4MzY5ZTczNzRiZTYyYWU1OGE1MGIxZTdlMjA2IGxlZ2FjeS10cnVuaworODE0MSAxZGZhNGYxN2Q4ZmZmNjMxZGUwZDc5MDI2MGQ0N2MxMDUwODU4NDUzIGxlZ2FjeS10cnVuaworODE0MiBiNWJiZTUyMjBmNmJhYTk2MTMxYzkwNjY0ZmY4MGNiZjc1M2U1YmRiIGxlZ2FjeS10cnVuaworODE0MyAzNDcwNjg5YTk3ZDcyYTBhZWFjMDE3MzkwZDg0MzgxMzc5YzBlMzM2IGxlZ2FjeS10cnVuaworODE0NCA0YTU4NDk3YzE0YTgxNjdiMzFjZDlkNTgwZjE3YTIzYWQxYjIyOTRlIGxlZ2FjeS10cnVuaworODE0NSA2NzY3OWYyZWQyMTc2M2IxNDZmODQxMjk5OTYxNzgwMGU0NTlhMDYwIGxlZ2FjeS10cnVuaworODE0NiA4NTEzNGI5N2FlNGQ1NDA3MDZjMzZlN2RmZGQyMDk5MjBhYmFjODdjIGxlZ2FjeS10cnVuaworODE0NyBjMzUwMWE5ZDNjMjA1OWYxZWE4ZjlhMTQ1YzE0NWMyMzY0MjY3YjA1IGxlZ2FjeS10cnVuaworODE0OCBkNjYzMDQ5NjNjYTdmZTkxNjgwY2VkNjdmZWE3NWY1OGM5ZWQ1MDZjIGxlZ2FjeS10cnVuaworODE0OSAxOTI2ZTY0OTJkM2Y3OGQ1NTBiNWNiZjgxMjM1ODQ4ZjIxYjZhNGI5IGxlZ2FjeS10cnVuaworODE1MCBhOWZmZGZmMDU1N2Y5NWVmNjU5ZDM2OTVmMWZlMzdmZGIzMjgwNTU1IGxlZ2FjeS10cnVuaworODE1MSBlNWRlNzA3MzAwZTE3ZjA3NTQ3M2U5NzkzNzYxOWQxYzBmY2FmMGVmIGxlZ2FjeS10cnVuaworODE1MiBmZDZhY2FkN2NjN2E5N2E0ZGQ0MWI1NmQ3OTdiNGFmYzQ2MmVjYTc1IGxlZ2FjeS10cnVuaworODE1MyBlZjhhMTU5MDJhNDg3YWMxOGMzMWM5Yzk5NzIxNDgxNmE0YWNmYjA0IGxlZ2FjeS10cnVuaworODE1NCA2ZmRhMWU2ZTI2MTZjYjU3YjJhMGEwMWM1MzE4NmExNzNlMDRmYTJhIGxlZ2FjeS10cnVuaworODE1NSA2NGU2MTE2NTU4OWE3OTMxOWFkODk2YWNmNDRjN2EyOTMyYjQ0ZTQ2IGxlZ2FjeS10cnVuaworODE1NiBkNTkxMWNhOGQ0ZWIzYWY0Y2ZjMzRmNmQ3Yzk0OTAzNWY0NjJiMTIyIGxlZ2FjeS10cnVuaworODE1NyAxMmQ2NGNkYmFhYTIzZTJjMzc0MmE1NTA5ZTMyNzA5MzYwYmMwYTA1IGxlZ2FjeS10cnVuaworODE1OCBkODhjYjRkMjZmMTNlZDM4MjU5YzlmZDZiNjcwZWQ5YmY0NjhiMzI2IGxlZ2FjeS10cnVuaworODE1OSBlYTcyYmZlMzk1YmEyMTYxZWU5YTVkNTcwMzNmNmQ2NDMxN2RhODcyIGxlZ2FjeS10cnVuaworODE2MCBjZDFhZTYyZWQyY2ZmYzNiOGFiZTBhZmZjNDgyYzUzYjM0ZjJmZGU4IGxlZ2FjeS10cnVuaworODE2MSBhMDgzMWRlMjM1OGMzMGUyMjgyNDI1MGRkNGIwM2IwNTI5NThiYzc3IGxlZ2FjeS10cnVuaworODE2MiAwOWQ4N2FkNzUyNzg5ODdhOWY1NWNiOWU2YjNhNmFkMDVlYTExNmNkIGxlZ2FjeS10cnVuaworODE2MyAyMDc3YTMyZDg1OGVmNjUyNWNmMmQ2MDMzODE1YjkzNmUwNGZkMjQzIGxlZ2FjeS10cnVuaworODE2NCA4YjdmYWNlOWIxYTc4MmE2OTk5MWE0MGU5MTIyZGYyZTExYjBkZGIwIGxlZ2FjeS10cnVuaworODE2NSBlNzhkMWUwZWNjNTk4N2MyM2M0NzVmM2U2Mjc0YzMzMDU5ZTQ2ZTExIGxlZ2FjeS10cnVuaworODE2NiA1MmMxM2YxMzg5ZWZhZDQ4OTliMTk5MGNlMGRlNGUyNmMwZTc0M2RhIGxlZ2FjeS10cnVuaworODE2NyA0ZTgxN2IyYWQ5OTEwYmM5NjAzNmYyOTU1YjYyNjc3MWE3YTQyYzljIGxlZ2FjeS10cnVuaworODE2OCAzODM4M2FkYTM4OGU5YTAyNDkxZjlmN2U1YTIyZWVlYjRkODY5YWNlIGxlZ2FjeS10cnVuaworODE2OSA0NDI4ZjEwODRiNmM2NzAzOGVhZjk0M2U4YzBhNmRhNzg2OWVlZTI2IGxlZ2FjeS10cnVuaworODE3MCBhOTdmZGUyODE4ZmJlNDBmMzFkNzcwYjBjZmI2YjkyMmMxYTAyODAwIGxlZ2FjeS10cnVuaworODE3MSAwMTA5MDlkZmMzM2UyZTA2YzJmNmNkMGI4NjE2NDNiNTAzNjhhMzNkIGxlZ2FjeS10cnVuaworODE3MiAwMmVhOWQwMjE0Mjc0NzYxZmVkYjI5OGUzNDNjYzczM2MzZTBiYjE1IGxlZ2FjeS10cnVuaworODE3MyA5YjYyMWFjMDkyMTIxYzI1NmNmZjM0NTQxN2ExODdlMThjMGU5MGZlIGxlZ2FjeS10cnVuaworODE3NCA4OGIwYjJhM2FhYjU2YTVhOTk3MmVhMDI1ZmZkYmE5ZWU3MzY3ZjFmIGxlZ2FjeS10cnVuaworODE3NSBiYTg2MGRjMGE1ODUxNGYxNjljODBlMTJlNzRlMjUyNGRlYWFlMzU5IGxlZ2FjeS10cnVuaworODE3NiA3NmZkNTI4MWY5OGE3YjhmODM4ZDM4OWY4OTYwMmEwNTQ2YmQwZjdmIGxlZ2FjeS10cnVuaworODE3NyA2MGZjYTQ3ODM3OTM1NmY4ZDkzZGM0ZjJhMWNlMjI1MWViY2RlNzg3IGxlZ2FjeS10cnVuaworODE3OCAzYTFiYjFjOThjMTQwZThiNDgyNDI5MWYxYzE3MmRlMWYyNmQ1MzI2IGxlZ2FjeS10cnVuaworODE3OSA1NzY2NTcwMzgxZjI0YWU5NzkzMjgwY2U1MTRmZTg0NTExNWRiNWFhIGxlZ2FjeS10cnVuaworODE4MCAwM2RkMWRlZDVjYjNlODY0ZTRmZTMwMGM1ZDcwN2E5YWZiY2JjYzYzIGxlZ2FjeS10cnVuaworODE4MSBjNjYyMzZiN2NjNmNhNGI0YzJjNGJhYjE4YWFlMWNkMjY3ZTBmYmExIGxlZ2FjeS10cnVuaworODE4MiBiYTA5YjQwN2EwYmI5M2Y2NGE1NTY1MGQxYWNjOTg3NjgzYWM5OTkzIGxlZ2FjeS10cnVuaworODE4MyBmOGJiZDcxZmI4MTlhNTQzOWJkNzIxYjk4MDNiNzA0ZjU5MjcyYTEyIGxlZ2FjeS10cnVuaworODE4NCA0MDRiYTAxN2FkNDI3YjgwMDIyMjI1ZTkwNTlhY2E3ODRmNDM0MDMxIGxlZ2FjeS10cnVuaworODE4NSA5OWNkMzlmNmE1MmRiMTMwZGYyODJjMWI3MmY5MmE5ZWFiN2ZkMGE0IGxlZ2FjeS10cnVuaworODE4NiA2NzE4MzI0NzBhYTExMzQ3NmVkNTQwZjJhZjFhZTRlMzg1OGI1OTM2IGxlZ2FjeS10cnVuaworODE4NyBmMWRhMjk0NzcyY2YyYjVmZDlmZTMxNmVjOGVjYjdlZjhiY2U3NGI1IGxlZ2FjeS10cnVuaworODE4OCBmYjE3MGNlODI5NTEyOTM3NGQ0M2MyODliNWM2ZWI3MWVkYmE0YTRjIGxlZ2FjeS10cnVuaworODE4OSA0MzNjOWU3ZWRiNjA4OTA3ZmJkOTM5NzZkNTcxZTBjYThlY2ZmYmE4IGxlZ2FjeS10cnVuaworODE5MCBlY2VlNTViYWFjZTMwODk2ZjFiMmViMWQzZDM3YWJhYzQ5ZjNjMGQxIGxlZ2FjeS10cnVuaworODE5MSBkZWUwYTU4YTkxMzIyMjY4MDhhMzRkYTg1ZGRlYjQxZjEzNmUwMzgwIGxlZ2FjeS10cnVuaworODE5MiAzNzYzNWVlYTNiY2M4Mzk3ZGU0MThhNDJhZjM4N2FjZjhkODNlMWIxIGxlZ2FjeS10cnVuaworODE5MyBjZTY0YTgxMzkyMTY2NjA1NWE5MzBiNTI0OTRiMTExMWI0ZDUzZWFhIGxlZ2FjeS10cnVuaworODE5NCAzYzY3NDM2YTI4ZTYxYjAwYzViZDUwNjQzZjM1OGU0OGU3MjY4NGYzIGxlZ2FjeS10cnVuaworODE5NSA1NWRmZjgxNjljZjU0YzAzMWE4ZDg0NjExODk4Y2EzMzhjMjljZDg0IGxlZ2FjeS10cnVuaworODE5NiAzYjM4ZThkYjVmMjFmZGZlY2Q2NDc0MGU1ODcyZjZlZDNkZmQzOTk5IGxlZ2FjeS10cnVuaworODE5NyA2MTNiZDIzN2NkNTVjNTIxMTRjOWM2MDVhNGFiZjgzZGYyYTc4ZTBiIGxlZ2FjeS10cnVuaworODE5OCAxMzhiMTc2ZWM0MGY0M2M0YzBhNWNjNDQ3ZDY1NTIyNjhhNzZlOTA4IGxlZ2FjeS10cnVuaworODE5OSA2Yzk3MzY4NjU2MDg5MDU1ZDhiYmY1NWEzNjVkMmQ1ZWZkMmFhYTFmIGxlZ2FjeS10cnVuaworODIwMCBiZWVlMzUxZjFmNzJhZWZmNTYxZWRmZjg2NmE5MjgxZmI5ZGE2MTdiIGxlZ2FjeS10cnVuaworODIwMSBmOWFlYTczOGQ0MzUxZWQxNDAxODUwNGYwNjE4ZWU5YzFhMTc1NmNmIGxlZ2FjeS10cnVuaworODIwMiA5YTNiMTE1YWE0OTE5MGVmZmRjMGI3ZTljOWViZTM3NTVkYjBiZjY4IGxlZ2FjeS10cnVuaworODIwMyA1N2E3YmExNDEyZTI2NWViYjMwMjE3NGM0MDkxNmU2NzNmOTkwMmQyIGxlZ2FjeS10cnVuaworODIwNCBlMGRhM2Q4OWQ0YjY1ZmJhYjVkN2NiMzNlYWQwOTEwODExYWYwYWNkIGxlZ2FjeS10cnVuaworODIwNSAwNGMyODI3NGMyODE4MTIwOTgwNDA4NzRmYjNkYjI5OTU5Zjk2YzFhIGxlZ2FjeS10cnVuaworODIwNiA2MTdmMjAzMzk0ZTczZjg1ZWIzMDU4NDhiNTljNDg5YjYxYTc1NTU2IGxlZ2FjeS10cnVuaworODIwNyA5OTYwNzk3NDQ1NjY1ZDYyYmM4OWQ1YzI2NDg0MTczMGY2MzJlMTM0IGxlZ2FjeS10cnVuaworODIwOCA3NTc2MmM2NzIwMGNhZjc3MTQxNmVjNDIyOWM4NWJjZDgxZDcyYzg5IGxlZ2FjeS10cnVuaworODIwOSBmMDI3ZGQwYTg1ZTRlNWVkY2IwYTFkZDA0OWQyMzdlNmIzOTFhNWRmIGxlZ2FjeS10cnVuaworODIxMCA4ZjZjYzcxN2Q4MTdjMDdiZmE3YzczNjRmNmI2MGNmOTlhZGI3ZWI3IGxlZ2FjeS10cnVuaworODIxMSBhOTRiMGExMjJjOTg2OTM4NmQzYmY1Zjg4OGFmNjY3MjBiMWFmNTEyIGxlZ2FjeS10cnVuaworODIxMiA2MzQ3MjhkOGJjOThjZWJiNTdlNTBjOTFiYmUwMTdjMmUzZjlhMGVkIGxlZ2FjeS10cnVuaworODIxMyA0ZGNhNTMyOWU4ZmM2ZGQzNTZlN2ZhNTgxNWQyMDUyYjJmOTRjYTNlIGxlZ2FjeS10cnVuaworODIxNCBkMGM2YjQ5ZDcxMDE4ZTM3NDViMDYwNmVkMWM0MjM0ZmE4NTBiNzk5IGxlZ2FjeS10cnVuaworODIxNSBjMjlmYzE3ZDhlNGZkNDk3ODNiOTllN2I2ZWZjMTNmMTM0OWRjM2JkIGxlZ2FjeS10cnVuaworODIxNiA3MWUxMTA4MmQ3MzIzNTQ3M2YxNTgyYTVmMTJjNjk0YmIxZTA4ZmY4IGxlZ2FjeS10cnVuaworODIxNyA2YTIxOGZhOGJhOWI5ODc0ZDBlZGNlNGJkY2NmODc4ODJhYmE4YWNiIGxlZ2FjeS10cnVuaworODIxOCAxMzg0NjM3OTM0N2RhNTBlODFkNzlhNTdlM2IzMGY4NzJiNGQzY2NkIGxlZ2FjeS10cnVuaworODIxOSA4MjdhMmYzZTY0ODMyYWEwMDdmMmZiZjBmZjhlMjZmOTZhNzkwZTViIGxlZ2FjeS10cnVuaworODIyMCBjNjA2ZGQ2MTU0NGFlMDdiMTk3NzVjNTFkOWUyMmYyOTZkYThiZDQ5IGxlZ2FjeS10cnVuaworODIyMSBlYThhMGIwOTA5MDhiZDRkNjhhZjkxNGFlY2JkZTIxMTE3ODNlMDg0IGxlZ2FjeS10cnVuaworODIyMiBlMjJlZWE1ZDEyNmQ5YjQwODg4YjY0MzAzN2YzZmYzZjQ0YjIwYzY4IGxlZ2FjeS10cnVuaworODIyMyBhYmU4NjM0NDY2YjIzNmMxNWYzOGIzMzQ2OTA4YjRlNjk0OGJjNTkxIGxlZ2FjeS10cnVuaworODIyNCA0OWUwZTA3MmQ5Y2FiNTk3YzlmZmFhOGU3ODI1YjYwYzVkMTY2MDVlIGxlZ2FjeS10cnVuaworODIyNSAxYzM0YTBjZTc4NTg1NzNiMmUzMDcwOGJjY2Y3NmEyOWQ4YjYyZTllIGxlZ2FjeS10cnVuaworODIyNiAyMGU2Mzk5ODZmYjliYjJkM2FkYmZhNzFjMTgwY2IwZDRmZTgxODA3IGxlZ2FjeS10cnVuaworODIyNyA1YTc0MjlhYzkwYzgzYjFiYjE0M2U5YzViMzYxMTM4ZTc4OTBjNzQxIGxlZ2FjeS10cnVuaworODIyOCA4N2Q2NThhMTI4ZjkxYjVjNjgyYzE2ZTJhNjUwYTdlOTA0YmIzZDcyIGxlZ2FjeS10cnVuaworODIyOSBmYTZkMDEzYzk0MmIwNzc1YTdiYWUyNDAxZjgyZmI5YzM0NjVjZjgzIGxlZ2FjeS10cnVuaworODIzMCA2NGJjNzgyYTQyZWM3MzE1OWFlYWYwN2I0M2QwOGM1Yzg1YTAwNTU1IGxlZ2FjeS10cnVuaworODIzMSA5ZWQyNmFmZWVhYTUyZmNiMTY1OGFkMDIzNmU5NDA2ZTU5MmNjMjViIGxlZ2FjeS10cnVuaworODIzMiAxOGE2MzlkYjA0OGM3OTkwYWQ3NWE0NTYyMjUwZDc0ZjVjNTdjZTk1IGxlZ2FjeS10cnVuaworODIzMyA0YjQyZWVhMTBhMDI5ZTYzM2ZiOGUzNjc4MTljM2Q2N2ExMmM4Y2I5IGxlZ2FjeS10cnVuaworODIzNCA4YzBmNzQ3ZjExNDE5YWNmZGFkZmZiMjQxNmNmYjYzNmI0MTBmZTQ3IGxlZ2FjeS10cnVuaworODIzNSBiZmU5YmE3NGMxOWVkNzZlZDc4YTMwMjdlZjJiZjNjZmNjNjY5YzY4IGxlZ2FjeS10cnVuaworODIzNiA5MTkzODZmYjNlNTA0MzMyMjc1N2JhYjkwMzUyNzI2NTFlZjc3NDJlIGxlZ2FjeS10cnVuaworODIzNyAyMDFjOGQwNmUzYjc4Njc1MTlmYjM3ZmQ4MTc2YmJlZWQ2MDkyMDI4IGxlZ2FjeS10cnVuaworODIzOCBhOGUzMWQ5MDVkMmMwZmU5NzZmMDJkMzVlMzQ3MzI5M2E1ZTQwOWJhIGxlZ2FjeS10cnVuaworODIzOSA3OWJiOTk5N2NlNWZhYTBiNzg2ZDQ2M2U4M2ExZWQ5ZTRmYTkwMDAzIGxlZ2FjeS10cnVuaworODI0MCBmZDRlOWYyOTNjNzdhOGE4NGU0ZmI4NDMyYmYzNTYzNmQ2YmZiNGIzIGxlZ2FjeS10cnVuaworODI0MSA2MmZlODAwZDE3MWE3ODBjMGUwNTE5OWQ2ZDJjZDlkOTVjMzEzYjgxIGxlZ2FjeS10cnVuaworODI0MiBkNjQyMWIzZWQxZGE2NWI0ODkwMWEzNjAxYWJiMDI1OTc2YTNkNzc2IGxlZ2FjeS10cnVuaworODI0MyAzMDlhYWI0YzBiOThlNTc0NDVhZDk3N2ViYmE3ZjJmZmJlYjQwMTk3IGxlZ2FjeS10cnVuaworODI0NCAwM2E1N2FmNzIyMTg5Y2JmYTdkZmM5MDk3YmE2ZmQ0ZmZmMzkzZDJhIGxlZ2FjeS10cnVuaworODI0NSA3ZGU1OWY0N2U4NWI5Y2FkZjE3Nzk5ZGVkZDE0MWIwODA0NGYxNTI1IGxlZ2FjeS10cnVuaworODI0NiBiNzY0OTQ5MWFlOTI0NmE0ZGVjZjM5NTYxZDM2MzVkNmY0MDIwYmQ4IGxlZ2FjeS10cnVuaworODI0NyAzOGVmMDkxOTY0ZjAyMmZhM2ViOTVlZTQ1OGYxOTgzMTFjYzQ4ZGU2IGxlZ2FjeS10cnVuaworODI0OCBmYjhmMDc5ZTRlZmY4NmY2NTk1YzhkZGY3M2E4MjQ0Y2IxYWI0NDAyIGxlZ2FjeS10cnVuaworODI0OSA1ZjdkZGI3Y2EzNDdjZjhmMDVlMGI5NDVlNWNlNmM1ZGM4YzcwMDExIGxlZ2FjeS10cnVuaworODI1MCA3ODMxOTIyMWVkYjJmMjhjZGFkZDFiY2QyZjE4ZDhlNmY2NGJkYjUxIGxlZ2FjeS10cnVuaworODI1MSAzZWYyNTYzZTgzZWUzOTA5MGFjZDYxMmIxN2I3Zjg2MjI3ZDgxNmViIGxlZ2FjeS10cnVuaworODI1MiBjNjBiZWI1NjI1ZTcwMTY1Zjk3OGRhZDNjMWIzMDA5OGIyODg0YWNiIGxlZ2FjeS10cnVuaworODI1MyBmNmRlMDUwMDU1NzY5NWFhNzE4ZmRmMGU3MzIzOWQzODVlNmM4M2U4IGxlZ2FjeS10cnVuaworODI1NCBiNDQ5Y2Q4NWQ1MTk3MTk5M2YwZjBkMGY3YzM2NmE3NDBlMTE5Y2NmIGxlZ2FjeS10cnVuaworODI1NSAwNDlkOTRmZmMwNmEwMTI2N2JlMjE1N2ZlM2UyOTRmYzRiZDExMDEyIGxlZ2FjeS10cnVuaworODI1NiAzNDI4NDg3YjI5YTM4NWM5NjI2MTBhMTJhMWZkOGUwN2M0M2YwMWMwIGxlZ2FjeS10cnVuaworODI1NyBiYjBhY2ZkNGI3MjBhZmQ3YTA1MWYwZjQ4NDA1OGI2MmU5NWVhNTVmIGxlZ2FjeS10cnVuaworODI1OCAzYjhkMDA0MDNkYjg1ZGMzNzczM2VhYTczZTAyODU3MzBlM2NiNjc4IGxlZ2FjeS10cnVuaworODI1OSBiODNlY2Y2Zjg3MzAwYzFiNDc3MjEzYzJiYzkzNjQxNjI0YjM2NWM3IGxlZ2FjeS10cnVuaworODI2MCA5Y2ZiYzliYjY0MjNiMDhiYjhhZjQ1YmJmMWRjOGVlNmNiODE2NTAxIGxlZ2FjeS10cnVuaworODI2MSBjMDQzOTAxZmExZmViY2JmYTI0Y2M3ZDAzZDU2YmVlOTlkZGNmYThmIGxlZ2FjeS10cnVuaworODI2MiBiMjQ3Mjk3YmU5YTAyNWVjNjRiNTUwMjZjODExMjNlMTBhMzU5YWU3IGxlZ2FjeS10cnVuaworODI2MyBjNTY5ODczZWViMTVkODJmMWJlYjQ4NzdmZDhjNzcyODYzOTZjZmEzIGxlZ2FjeS10cnVuaworODI2NCBiNDIwYjY0YTQwOTY3YmY3NTVmNzMwNGQwODVlOGUyNjliZGQzNzRiIGxlZ2FjeS10cnVuaworODI2NSAzMWNhZTM3NGY3ODY1Njc3MzFjZmJhZGZmNzA3OWU5ZTM1ZGQ1ZWE1IGxlZ2FjeS10cnVuaworODI2NiA4OGU2YWUxMDVhYjU4MTBlZjhjMjkxNzg4YzZmMGM5ZjI3MGI0N2E0IGxlZ2FjeS10cnVuaworODI2NyAxZDQxN2U5YzcyY2ZhYzdiNjNjNmU5YmRhZDEyYTAzYTE5ZGJmNmEyIGxlZ2FjeS10cnVuaworODI2OCAyYjczNzJlY2Q1MDcyYjBhNGJiMWFmNWJjY2NiMmIwNTBjMGMwOGZjIGxlZ2FjeS10cnVuaworODI2OSBkZmZhYmM2MjBlNGU0NmQwMThkYjVkMzZiNzA4MjdiMWQ2YTU1ODlmIGxlZ2FjeS10cnVuaworODI3MCA0Y2U3ODI3YTM2MjE3YjY0OGY3MTQ0MjNhOWYwNGI4NTc0MGExNmI2IGxlZ2FjeS10cnVuaworODI3MSBkNzljNGZiYjE5ODJhMWUzMzYyZDkzNThmYmNlNzM4YWIwNWIxNGE1IGxlZ2FjeS10cnVuaworODI3MiAzZDFkODA1NTA4N2ZiNzgzZDNiOGI4NjM1MGQ5NWZjMGI2OTA4MDA4IGxlZ2FjeS10cnVuaworODI3MyA3M2NmNTgyNjFiODIzNDgxMzMzMmZkMGY5NDFhMzRkMzk5NTg0NmZjIGxlZ2FjeS10cnVuaworODI3NCBkNjg5ZDJjNGY4NDIwYjAxOTU5NWNmNWMzMjkxYzNkM2E1NDgyZDEyIGxlZ2FjeS10cnVuaworODI3NSAyNGE4YzU2ZGUyMTQ0NGViZjJhZWQ5NGNmNzhmMTQwNmQ4MGIyYjk4IGxlZ2FjeS10cnVuaworODI3NiBlODYyZDliMDAyNDZhYmQ3YzZjNDQ5MDg0YjFhZDFmYzMzNDZhNDc0IGxlZ2FjeS10cnVuaworODI3NyA3ZThlZDk2NTBmY2MxMThjNzM3ODBjZTI0ODc3ODY4ZWQ0M2IyNDBhIGxlZ2FjeS10cnVuaworODI3OCBmZTNlN2EwNTU4MzQzNjkwMWFiMTA1NDY4ZmJjZmY5NDQ5YmEzMjYxIGxlZ2FjeS10cnVuaworODI3OSBlNDIzOTFkNjc2ZDEyZDA2ZWI5MjRiZWU3MTJiODRiMDBkZTYyOTAzIGxlZ2FjeS10cnVuaworODI4MCBiNTZkNTI3YTQzM2Y1YTUwNTc5Mjg1NWMwOWNkYTZkN2Y4OGU0YTIzIGxlZ2FjeS10cnVuaworODI4MSBiN2M2MDBlY2MyN2Q0MjAwZTMxYWQ4YmI5ZGZhYzMwYWY0YmNkZTVlIGxlZ2FjeS10cnVuaworODI4MiA1MThkNGYwYzhmY2M0OTgwMjc2MDE4MmE5MDNhNGE4NzNjY2VmOWNjIGxlZ2FjeS10cnVuaworODI4MyA1YTlmM2MyMDczMzY2OWY1YzBiNGFlOWU0N2ZjMjA4YjkwZWUyM2VkIGxlZ2FjeS10cnVuaworODI4NCA1MDgwM2NhNThiMWY5MWUyNWM5YzcyYTY4YzI3NjBhNGYyYzdlNTc3IGxlZ2FjeS10cnVuaworODI4NSBkZmZkMjIxNDZhYWI4Y2NjZjhhMzZjMTQ5ZDZiMzA3ZDhiNjg2MzE3IGxlZ2FjeS10cnVuaworODI4NiA1MTIwZWE4NmIyNWQ2ZDExYWVlYzg1NGM2NDg4MTZjNjY1NWVjMmYxIGxlZ2FjeS10cnVuaworODI4NyA2ZDQwZWJkOTIyMjc5MzAyMjA5OWI5MmYwMTQwN2Y0MzU4ZGZjZjJiIGxlZ2FjeS10cnVuaworODI4OCA1OGFlYjg3MmQ5MTUwZDAwMjE4NTNlOTRjYzJiODE4NjU4NTAzM2QyIGxlZ2FjeS10cnVuaworODI4OSBmNTNkMzYzZWY2N2E5ZWEyOGIzOTlkNWM2MjI5MmIyOWVlMWYxMzI0IGxlZ2FjeS10cnVuaworODI5MCBkMzIwY2E4NDM1MTIyMjQwMjdiNzMzYzI3MThkMDUyMjVhMjVhYmQxIGxlZ2FjeS10cnVuaworODI5MSA1NWVhNTZlZTIwZjZiZDU2NjQzNzEyZDdhODA0MDJmOGNjNGEyMmExIGxlZ2FjeS10cnVuaworODI5MiBkOGE0ZjBkOTIyMWYwNzViMTYwMWY1MzEzYTMxZjRmYWRkMjU2ODM0IGxlZ2FjeS10cnVuaworODI5MyA2YTBkN2NmMTlkMzhmYWM1N2I5Yjk0YjY3OTc4MjFjMTk3Njg4YTEwIGxlZ2FjeS10cnVuaworODI5NCA0OGI5NGRlODViZjM1ZjI0NDJlYTU0OGE3YjRlMzU0NWZkNjg2YWM3IGxlZ2FjeS10cnVuaworODI5NSAzNDY4ZWE4NjQ1Y2E0MjM4YzJiNDUwMjQzNTFlNWUwZmFlNWQxYmM0IGxlZ2FjeS10cnVuaworODI5NiAwYWU4YzdkMzM0NjRlZTBjN2EzYzMwYjE4OTE0Nzc5ZDA1MTIzNTM4IGxlZ2FjeS10cnVuaworODI5NyA5MWRkOWQ3NGYzYjNjYjA2YWUwYjE3NjBjNzEzZjFlYzA4ZmE4MjkyIGxlZ2FjeS10cnVuaworODI5OCA3ODMyMWE4NGQ3M2U1Y2QzN2QxNzVmOTk1ZGYyNmFhN2M2OGQxNDhlIGxlZ2FjeS10cnVuaworODI5OSBkM2YyZGY4YzIyODZjMDVlYjg1MWRhYzMwZDlkYzM2ZDEwYWE3NDc4IGxlZ2FjeS10cnVuaworODMwMCBhZDA0ZDM4N2FjZWVlZTgxY2VlYzI2YzI5ZTAwOThkZWZlNjk4NzFmIGxlZ2FjeS10cnVuaworODMwMSAzYzE1YWUwZmI2YWQ3ODU1YjA0MDY0YmViYzdlZjdiODlmYjVhYWNhIGxlZ2FjeS10cnVuaworODMwMiAwYzMzNjEyZjExZDZiMTYyNzhmMzliNWFiMjhhYWFlMDUyMWJhNzlhIGxlZ2FjeS10cnVuaworODMwMyAwOTY1ZDlmZDE4NjJkZDIzMzdlZjg0ZmNhYWU5NWE2NTI1ODk2OThkIGxlZ2FjeS10cnVuaworODMwNCBhNzlkMGNlZjEwYTE5ZmRkMDRkZGM5NjczNmZiNGM4OTI5YmI5ZmM4IGxlZ2FjeS10cnVuaworODMwNSA5ZmEyYmQ4YTJiNzhhNTI2ZDgwMjliNTUwNGMyMjFjNTQ0YmJmZGVhIGxlZ2FjeS10cnVuaworODMwNiBmMTEyN2Q2ZmNkNzQyNDU0MjA1MzExMGViMjRiMzFhMTEyMjEwYTJjIGxlZ2FjeS10cnVuaworODMwNyAyMjZiY2E4NTg0NmY0MThmOTU5OTMxMmU2NGIzZTdiNGI2YTIyZTUzIGxlZ2FjeS10cnVuaworODMwOCA5ODViN2JmNDc1NWI2Y2ZlOTFhNDEyOTJmYTFmM2NhMDVmMzgwZWYyIGxlZ2FjeS10cnVuaworODMwOSAyODVmYjZhOTllNWY4NWY1NzdiZDExYWY2NTIwODYyMzY1MTU4ZGM3IGxlZ2FjeS10cnVuaworODMxMCA4NmMyNzlhODQ4ZWIyZDUwMTYxMzk0ZDEzN2UxN2E2MzVhYWRlMjY1IGxlZ2FjeS10cnVuaworODMxMSA5MWFlYTFhZjY1NGZmMTU4ZjExMDg5ZWYxYWIyNDY3MTAyMjNhNTFhIGxlZ2FjeS10cnVuaworODMxMiBiOTA2M2Y2ZjgxMWNiZmI5OGU0ODRmOTBkNTVkMzQzMzNhOTJiYjVkIGxlZ2FjeS10cnVuaworODMxMyAzYTc5ODY3NzUwNmNmMDY3NTg2ZmI5MWVjZWRjMDBjN2JiOGVkNTVkIGxlZ2FjeS10cnVuaworODMxNCAyZTkxN2Y5MzcyZTAzYTU0ZDcwODg3YTcxZjcxNDM3YTkyNzU5MjY4IGxlZ2FjeS10cnVuaworODMxNSBlZDVkYjBjMmEzZjM0NDE3MTk2YzEyOGUwYTIzM2VhZmJiYzYxYmU0IGxlZ2FjeS10cnVuaworODMxNiAxNzg2Y2M0MTk4ODZlYTY2YTE2YzNjNDBmM2U2Zjc2MjMwM2NlYzE2IGxlZ2FjeS10cnVuaworODMxNyA5ZjhmZjAyZWRlNmRlZWI1ZDY3NzA2NDFmODhlODZmY2I5MmE4OWExIGxlZ2FjeS10cnVuaworODMxOCBlMTY5OTRmM2QxMDJhYzZhZmQ5NzBjZDI4MGY0NzRjNDU5NGM2ZjVjIGxlZ2FjeS10cnVuaworODMxOSAzNWIxNGQ3OGM2MWQ5NDMyZDc1NTMwZDEyZGQ0OTMwNGM3MDYwYTRjIGxlZ2FjeS10cnVuaworODMyMCA1YThhNWExYTA0NzU3ZjYwZGI2YjBiYjYwYjU2OTY5YTc1YzMxYmQ5IGxlZ2FjeS10cnVuaworODMyMSA1OTYxZjEyYWU0MjY1ODZhMDBhNjg3NGU1ZmU3ZGE1YjAxODAxOWNlIGxlZ2FjeS10cnVuaworODMyMiA2ZTk5Njg2Yjc2ZGEwY2UyZjVkOGYwZGViYzcyZjVhY2VhZjNlNjM5IGxlZ2FjeS10cnVuaworODMyMyA4NTJhMWZhNjJhN2M0ZjZlMWZkNTE1OGQwMzM2YzEzNzY3NTMyZjNiIGxlZ2FjeS10cnVuaworODMyNCBmZjljMDExMDA3OWI3ZTQ2MjEwNDBlMTQ1NjdkNjdjNGU0YzRkNmJhIGxlZ2FjeS10cnVuaworODMyNSBmNjRhNWY3NTA2OTY2MDM5ODExNTc1YTEwZTk2YTM1NTRmYjY1MDRkIGxlZ2FjeS10cnVuaworODMyNiAwZDc4NTFiMzdhZDJkMTMwYjk3MTE2MGZkMjI3OThkMjM4OWNiNzJjIGxlZ2FjeS10cnVuaworODMyNyA2ZjY3YTFiZGExNWEyMThiMWViNTA2MjdjMmJlNDYzYWJjOWI4MDRmIGxlZ2FjeS10cnVuaworODMyOCBlZGFmMWNiNjNkYzBjODlmMzJmNWVmMTA4YjMwZjNjMTQzNDQyNDJhIGxlZ2FjeS10cnVuaworODMyOSA0YTQ3NzhlNjFjMTRlYjE5YjQ3OWI3M2FlMmQ5ODQ1YTQyNGVjN2EwIGxlZ2FjeS10cnVuaworODMzMCA5MmJjZjRjYzk0MjExOWFlOWM3YTcyZWM5OWM5YTlkODdkZmJjZDA1IGxlZ2FjeS10cnVuaworODMzMSAzNThkNzA4ODJhZjYyOWE3MDdjZWQ0MTNkYTRkZmUzMTU2ZDU2M2FkIGxlZ2FjeS10cnVuaworODMzMiBmZGQ4Y2VhMTgxYzA5OTRjZjg2N2VlYWQ0NmMwODVhZmRjNDkwZmI2IGxlZ2FjeS10cnVuaworODMzMyBjNGRkMzMyOWZkN2QwNDRhZDYwYTVlYjk0ZmIxNmE3Mjk2ODdiNzRmIGxlZ2FjeS10cnVuaworODMzNCBhNjY3ZDQ4ZTY4Yjg1Njk3MjIyZmM4NTU5YzRhNzhiNmQ2Y2M0ZjJjIGxlZ2FjeS10cnVuaworODMzNSBmNWY3YzczOTU2ODc2MGViYTUxZGRmYjMwODQwZTZkYTIxNTYxMzlhIGxlZ2FjeS10cnVuaworODMzNiA2NGY5Y2U5OTk0MzdiZDkyODJjMzg5NzMzZGZkZWJmOWYxYjAxOGRlIGxlZ2FjeS10cnVuaworODMzNyA3MjhhMDgzMjQyYTJhNmU3MDhlYTJiZDY0Zjk1ODU0NzE5NTc3ZDAyIGxlZ2FjeS10cnVuaworODMzOCAzMjNmNmExNmE3NjQyY2YxNjJiMDQ5ZWYxYmJhNTVmMmQ2MmRkYjA2IGxlZ2FjeS10cnVuaworODMzOSA0ZGJiNGVjNDRkMTUwZTYyMjlhYzhjZjdlZDNlMzRkMTExYzlkODcyIGxlZ2FjeS10cnVuaworODM0MCAwYWMyYzc0NzA1M2ZkYjc0Zjg4YjRhNDgxNjQwMWU1NDBhNzYzMjc5IGxlZ2FjeS10cnVuaworODM0MSA4NzUxN2U4ZWE1MTkxYjViZDI3MDAxZjlhZDllMTU4NTI3MDQwMmNkIGxlZ2FjeS10cnVuaworODM0MiA5ODQxYmNlMzdjNGQ2MzliOTU3NDlkN2Q3YTY5ODY2ZDFmNGZjOTJiIGxlZ2FjeS10cnVuaworODM0MyBmMWMwMzI3Njg3M2E2MGI0NTIxMmQ3NTVjOTQ5NTdlYjU4ZjNhNGRmIGxlZ2FjeS10cnVuaworODM0NCA5NzgzN2U2NGM1OGM1MmMyOTdkZjJlOWViMzQ3YmZiZDZkNjRmZjM2IGxlZ2FjeS10cnVuaworODM0NSBlNzQyZTQxYTRiMTFiZWZjNjdkMDg5YzA4ODc1OGZmYWE0YjZmNzYzIGxlZ2FjeS10cnVuaworODM0NiBmMmJmN2JjZjhiOGI2N2VjZDE4Njg5YjI4NDdiNzA3OGM5MzZlMWQzIGxlZ2FjeS10cnVuaworODM0NyBmZTRmMWViMTRkNTNmMGI0ZjA2OWZmYTY0ZDIyMzgzZGRlMzk3ODM1IGxlZ2FjeS10cnVuaworODM0OCBlZDkxY2I3ZDM4NzYxOTI4YmJjNmRjZWRjMjJhYmFmZDA0OTFkZDg1IGxlZ2FjeS10cnVuaworODM0OSBkZDBlOWI2NDY2MTY4NTUyOGE5YzI3ZWRkZDU4YTYwYTI3MDgwYWNlIGxlZ2FjeS10cnVuaworODM1MCBjOGE4Y2Y5NTgxMWMzOGNmMjc2NDNjYzc1MzUyZjY3NjliY2NkOWZiIGxlZ2FjeS10cnVuaworODM1MSBjNjdhZDViY2Q0YjIwMjNlM2YwODFlMjAxNzIwOTk4ZWUyMmIxNGNiIGxlZ2FjeS10cnVuaworODM1MiBkMjQwODUxY2M4YzU3NzVmYjUyOGYyOTAwOGM4OTcwNmUzYzcyMjc0IGxlZ2FjeS10cnVuaworODM1MyBhMmQzYzJhNjJhMzBhMzE4YjE0NzE0OGI1NGJjMGU3YmZjMzY2NGE0IGxlZ2FjeS10cnVuaworODM1NCAwNTM0ZTU0ZTgxMDYyYzgwNTY5M2U1Y2FkZDczMDhlZjQ0ZWQ4ZTcwIGxlZ2FjeS10cnVuaworODM1NSA2OGY3MzEyYTMxZjYyOWFkOTkwNzczN2E3MDMwYmM4ODc3YmUzOTBhIGxlZ2FjeS10cnVuaworODM1NiBhNzc1YTQ0MTI0ZDhiMGMyYTU4YTBkMmEwZjYxNmQyYmEzOWI4YmZhIGxlZ2FjeS10cnVuaworODM1NyA1MzBkZGI3MDc2OTVlN2ZjMTczZDA3NGYwNTIwMmZkODM3NmVkM2YzIGxlZ2FjeS10cnVuaworODM1OCBhMTAxYTE3YjhiN2I4YzdjYjYxODhhMzYyNzI5ZTQ5ZjhiMmUwYmQ0IGxlZ2FjeS10cnVuaworODM1OSBkNjUxM2RhOTI0OWQzOTdkMDRjNzcyYTg2YTNjNzAzMjRmMzllOGEyIGxlZ2FjeS10cnVuaworODM2MCA3OWQxOTMxZjE3MjI5ZWVjZjdkODM5MzM2NjRhZjQ1OWQ3NGUwMWNhIGxlZ2FjeS10cnVuaworODM2MSBiNTcxYjZlZTdmMTdlMzc4ZDE2MmIyYjNkYmViNGE0ZWYxMTI4OGMzIGxlZ2FjeS10cnVuaworODM2MiA3NmIxZGEyMWYzYTg5ODFkMDJiMmY1ZWQxY2YwNmEzMGJiNTYyOGI2IGxlZ2FjeS10cnVuaworODM2MyA0YzUyYTFiNmE1NGQ2MmE2MzNlNTgwYmJmNWIwMTAxMDUyYzg5ZjU0IGxlZ2FjeS10cnVuaworODM2NCAyYTE3MmI0OTUwYjZhNmMwMjI5MTdiMTg3MzY1NTBmM2Q2NThhMjYyIGxlZ2FjeS10cnVuaworODM2NSAwY2Q3NGY5MTg5YzZhN2M5ZmQxNDA3Zjc1ZWRiMjBlMzk4YTlmYzBiIGxlZ2FjeS10cnVuaworODM2NiBjZGQxMjVkZTc1YmY2ZjYyMDIxYmI4YjZhMTI0N2YxYjEyYmZhNWNkIGxlZ2FjeS10cnVuaworODM2NyBmMzM0MmIzODE5MzVhNDY0OTliNjBlNzcxYjU0NGY2NTk1OGQ0MjkwIGxlZ2FjeS10cnVuaworODM2OCBjNGQ1NDdjMDFlOTM0ZWQ4NWQ1MmYwNTdmZmU2MWM1Y2Q0OTgzODQ4IGxlZ2FjeS10cnVuaworODM2OSBiOTZjY2M3ODEyZjJmMDgzYmE4YzNiMjYzOTMzNzM2ZTZhOGMyM2RiIGxlZ2FjeS10cnVuaworODM3MCBjNTc5YjlmOThhNWE3MTU2MDUyNjg5MTFiYzEwYmMwNTY4ZGU1YzMxIGxlZ2FjeS10cnVuaworODM3MSBlMmRmOTViN2JlNzg5YTI0ZWZjYzBmODdlMjMwMjY0MDRjYmFlYmViIGxlZ2FjeS10cnVuaworODM3MiA0NmNkMzUyYzc2Mzg5ZmQyMjkyYzRjZjBiOWUyNmY0YTM0MmU3ODA1IGxlZ2FjeS10cnVuaworODM3MyA2NzAyMmQyOGE2NWQyZGZlOGE5ZmEyMmM3M2UyYzA0Njg0ODQxNWExIGxlZ2FjeS10cnVuaworODM3NCA3ZDM1YTA1ODAzNTZlYmRjZDYwZWI0M2ZlNWIwNTQ4YWM3MjFlZmJmIGxlZ2FjeS10cnVuaworODM3NSAyNTMzNzdhNDA2NDQ4NDc1NTk5Y2UwMjcwYThkYzUwMDkyN2MwYmRiIGxlZ2FjeS10cnVuaworODM3NiBmODJiNjA4YWZiNTY4ZGY2YjA0ODZiNzQ0MjRhMDk5MTI5MmQ3MzEyIGxlZ2FjeS10cnVuaworODM3NyA0NjY2NjRhZDM4ZTRjZWYxOTFmODRhMWMyYzczOGMxZWY0ODUwMTlmIGxlZ2FjeS10cnVuaworODM3OCBiYTQ5YTZlZjcyMTRmN2YwNGExNDM1YzU3Mjc0YmMyZGExNzZiZmEwIGxlZ2FjeS10cnVuaworODM3OSA0MTAyZjQ0NzIwMzI5YjA2ZDIzYWVmYWZiNTM3ODAwYzRlNDMwYzExIGxlZ2FjeS10cnVuaworODM4MCBiNmU0OGE0Y2RkMWU2OGIyOTgyZTZhMWEyMjE2YjkwYzU0N2FmN2I4IGxlZ2FjeS10cnVuaworODM4MSBjNTBjYzI4YWY3Yzc5ZjkwNGY0Y2ZhMWUyZGYwYzcxOTYxMGE3YjkyIGxlZ2FjeS10cnVuaworODM4MiBjMjQyMzg0M2EyNmY3MTVlYzI0YjdmYzQwNzg2ZDQzYWU0YmFmNjgwIGxlZ2FjeS10cnVuaworODM4MyBmMzQ0NjA5YTQ4ZTRlYTk2ZDM0MGNjN2E3NWI5Yzc4Y2YxMjY3YmNlIGxlZ2FjeS10cnVuaworODM4NCBhZjkyY2ZmZDA2M2Y1M2MwOTk0MGFiZDQ0MWVlNWI0MjVkM2MxZTJhIGxlZ2FjeS10cnVuaworODM4NSA0ZGQ5ZWExZTk0YTg4MDFjOTVlY2Q4NGU2NzdjNTE1OGNhYmQyYzM4IGxlZ2FjeS10cnVuaworODM4NiBmODI1OWNhOWVlZDM3Yzk5ZTNhNmExZTI2ZGRkNTAyNTgzOWFkMGE3IGxlZ2FjeS10cnVuaworODM4NyA4OTc3MWE0NmNhMzU0ZDUxN2I2YmIyNjM5ZGI3M2RhMjQ3OWNiNDBjIGxlZ2FjeS10cnVuaworODM4OCA2OTg2NzgxYTA3ZWYwZGMxNDM4MGYxYWQwNmRiYWQwM2E2N2U1NDVkIGxlZ2FjeS10cnVuaworODM4OSBmNTI3YzEyZjJlNTUyOGU1YWY0Y2IzNTBkZDY0ZGQwNjk4ZThmZTk2IGxlZ2FjeS10cnVuaworODM5MCA2YjM5Zjg2MzNjYTU0N2ExZDg3MjQ3NDc3YWY0ZWI2MjMzM2ViMGViIGxlZ2FjeS10cnVuaworODM5MSA1MTU1YjJjMzVlMTU5ZjU5ZGQxNzUxMzRiZDA0MjM4MmE4MWMyZTM1IGxlZ2FjeS10cnVuaworODM5MiBkYjljZmIxMDg2MjNjMjVhZGU1MTg4NzE0MWNlY2MzYTZhOGY0YjYwIGxlZ2FjeS10cnVuaworODM5MyBkMmM4MDM4MGFkMGRlNzQyM2RjNmZlNWQ0MWRiYzc5ZDZmNWEzZDMxIGxlZ2FjeS10cnVuaworODM5NCAwNGExYjgyYzgzMmIxYTdlMTdmOTNlMzFhOWFiNTU2NmJlYTg0ZGU3IGxlZ2FjeS10cnVuaworODM5NSA3ODBiNjhkZjQ1NjA3NzRmNWI4ZmY1NjZiZGFkMjUyNWJiODI0NDJkIGxlZ2FjeS10cnVuaworODM5NiA1ZGExOGUwMDJiMWE4ZmU4NWJhNWE5NTU4YzFjMThmODRhOGNiNzRmIGxlZ2FjeS10cnVuaworODM5NyA1ZmIzMDQxM2I5M2IyMTlmODAxNTkzMGRjMmRlYzY5Mjk2MTViMDA5IGxlZ2FjeS10cnVuaworODM5OCA4MDBhNTIxN2U2N2U3ODY5YmRhZTVkNWUxMTU2ZGJlOGQ5YzYwMTA4IGxlZ2FjeS10cnVuaworODM5OSA0NGRkYzcxMWVlMmRjOGMxMmQ0YTc1YThkMmRjYTVmNDRkY2MwYTExIGxlZ2FjeS10cnVuaworODQwMCAzZTE1OGU2OWFjNWQ5MWMxY2EzNGFkMDBkMDBjM2FlZjQyYTdmMWNiIGxlZ2FjeS10cnVuaworODQwMSAwOGIxZTlkODQ3ZTZiNTk5NTlhMmRmYzljZWI2YzFjYmVhYjIxMjczIGxlZ2FjeS10cnVuaworODQwMiA5MzMwNGIyZTE0Y2IzNjg3OWNmNjMxNGJhZGZlNDc0ZTFhZjBmZmYyIGxlZ2FjeS10cnVuaworODQwMyA4ZDIxOTRlMjJlNjczOWNkOTY2MjU0YTRmZTgyYTBiYTY0OWE2NjIxIGxlZ2FjeS10cnVuaworODQwNCA2M2JjOTI4OWFiMjgyOTM5ODVkMDRhZDYyMzk2ZDkxZmViOGRhYWJlIGxlZ2FjeS10cnVuaworODQwNSBjYTI0NWMzNmM2ZjZmODQ4Mjg2MzI5MTQ4YmU5ZjRiMDBhYTQwZjU0IGxlZ2FjeS10cnVuaworODQwNiBiM2M5MTM3NDY5MDBlMTYxY2FhMzc0NmIxYThkZTRiYjcxODExYTI1IGxlZ2FjeS10cnVuaworODQwNyBlMmNjZTRhZGYyYTcwMjllYmU4MGQ3ZDk3MmVmNDA3ZGJhMGRhZDNmIGxlZ2FjeS10cnVuaworODQwOCAxMmZlNWNjMTUxNmQwODJkMGQyN2E2YzgxYmMwMzdkZGMyZDU3MTBiIGxlZ2FjeS10cnVuaworODQwOSA0MGNmYzkwNWM3NzY5NmFjOGIxZTEyYzZlZWM4M2FhM2EzNjk4MDA4IGxlZ2FjeS10cnVuaworODQxMCBiMjEwZDIwNTk4MTIxNmRlZGQ0NWQzYThhMzFmMjE5MTNjZTgxNWIzIGxlZ2FjeS10cnVuaworODQxMSAwMzY5ZDYzYjEwMGIxZjRiYjgwNzZkYjkxZGYxOTBkODk2Mjc1ZDk3IGxlZ2FjeS10cnVuaworODQxMiBkNzdkM2I4ZTg2YjI1YTg5MjA3YTdkMjRlZDMzYTBlNWY2NzQyNTdhIGxlZ2FjeS10cnVuaworODQxMyA4MGQyNDM2NGI5MzI1ZWI2MjZhMWM0ZTM2OGI1MGEwZDA3ZTc3NDdmIGxlZ2FjeS10cnVuaworODQxNCA1YTRkMTgxZmZmZmRmNTczMGNiYjJhMjgzMTdjMzgxM2E5NGUzMDlhIGxlZ2FjeS10cnVuaworODQxNSAyMjJmYWViNDNkMDIwYzk0NmFjNzhjZDlkNzU5ZWE2YWFlYzM3M2I5IGxlZ2FjeS10cnVuaworODQxNiAyYzY1YmI2YWI4N2NkOWJiNjlmM2UzZTQ5YzYyM2I0ZTIzNjIyNWM3IGxlZ2FjeS10cnVuaworODQxNyBlZWY3NmIzY2Q5YWVmM2MyMjcyMmQ3ZmIzMGQ4MzA1YzQ0ODIwMzYzIGxlZ2FjeS10cnVuaworODQxOCBmN2ZjODhmY2ZmYTI0NmIzYjI0NjMxNmNkNDI2ZDM0YjAzNmYxY2U5IGxlZ2FjeS10cnVuaworODQxOSBjMTE5MjhkMjU5N2JkZGM2ZDIzMTJmZjE1NjVjNmQ1MDQ3MzdiNzJkIGxlZ2FjeS10cnVuaworODQyMCBhYzg3N2M0NzY4ZTFjYWJmOWEyNDE0MDA5NjU1NTNhYjBhZmJjOWNkIGxlZ2FjeS10cnVuaworODQyMSAxYmQ2OGU0NDY0Y2UyZmM1NDFlOTJjN2U1Y2UzYmQwMDAxNmE5OTEzIGxlZ2FjeS10cnVuaworODQyMiA3NWIzYWFiY2I3YzEwMDkxOTc2OGM0OWM4MjQzOGIyOGIyNWFmZWQ1IGxlZ2FjeS10cnVuaworODQyMyA5YTU2NDUyYzdlOGU5MjMxM2Y3OWQ4NDU3OTFlNjA5ZmI0ZjhjODkwIGxlZ2FjeS10cnVuaworODQyNCA3Y2E2YTkxMmQ0NTViOWJiMmYyNjU3NzMwOWFjZjRmZmI3MmEzZjAyIGxlZ2FjeS10cnVuaworODQyNSA2YzA2MGJjM2JmM2Q5YjU4MGEzYmQ4OTdhY2Y0ZmQxMGU5OTk5OTdiIGxlZ2FjeS10cnVuaworODQyNiAwYjRhOWRkMDllMGRiMGNkZDlmNmUyYWQwM2UwZjJjNjU4YWJkNjQyIGxlZ2FjeS10cnVuaworODQyNyAzZmJjZGE3NDE2OTY1YTQ0MjA3MDllYWM2ODk0NDJhOGJlNDA3MGI1IGxlZ2FjeS10cnVuaworODQyOCA4ZDdkYzY2OTY4Y2JjNmVjNGVhM2RiM2MzNDljNDU4ZTNmZjA0ZjBmIGxlZ2FjeS10cnVuaworODQyOSBiMmUwMThmYjJiYTkxNWMyMDdkODdkYmIyYTBiN2U1ZjRmZTc4YmVjIGxlZ2FjeS10cnVuaworODQzMCAxYTk5Njk1YTQxY2NmNjkxNDY4NGNiY2IwNzlkNDQzNmI2OGY4YzYwIGxlZ2FjeS10cnVuaworODQzMSBkMzgzNWE2YTE4Yzk1Nzg1YzhkMWIxMDAyNjNmOWZjODliNGRmYjcwIGxlZ2FjeS10cnVuaworODQzMiAxZjJkZmNhNTIyMDcyZDEzOWM4ODYyNmY2ODhjMjQ1ZDIxZDU1YWM5IGxlZ2FjeS10cnVuaworODQzMyAzZDZmM2YwYWUwMDUwNjU2MTQyYjE5NzE5YThkZWZlNWE4NjMyNTdjIGxlZ2FjeS10cnVuaworODQzNCAyNGVjNDYyNGVhOWUzMDk5MmI5ZGFmNzlkNDgwZTdhMWZlN2UxYjM4IGxlZ2FjeS10cnVuaworODQzNSA4MzQ0NjFhOGNhNzY3MTQ2MDhkZGEzM2ZiYzRjMjk4NWQ2OTlmN2NmIGxlZ2FjeS10cnVuaworODQzNiAxYTRmYjZmMTJmZmQ1NGIxMjNkMjNkZTk4MDJhMDUyNzQ4NGRjYWFkIGxlZ2FjeS10cnVuaworODQzNyA3NmJiNDBhMWViMDQ1MzIzODk4ZDZiMDBhMTIyMGU4Y2ViZmVlYTRjIGxlZ2FjeS10cnVuaworODQzOCAzNWU1YWNjNjUzMmM3ZTU0YTY5ZDcwYmUyNTU1ZGNiNDNhNzQ2OTlhIGxlZ2FjeS10cnVuaworODQzOSAyM2UwMTQ4MzlhYjA1N2QxNTk3Nzc3MjNmYzkwZjI1ZTgwMmUxZDY2IGxlZ2FjeS10cnVuaworODQ0MCA4M2RlNTUzOWY4ZTQzMjIwYWQ5ZGY3MDZkZDgzODA1NjljYmEyMTk3IGxlZ2FjeS10cnVuaworODQ0MSA0MzA1NDAyMWJiNTc1MTA2MTdhODhkZmRmMTM4Y2VlYTI3YjUxNWY5IGxlZ2FjeS10cnVuaworODQ0MiA4YWU4M2I5YzM0YTAyNDUwODdjZjJkNzE2MTk5ZDczMmQ1Njg4YmVhIGxlZ2FjeS10cnVuaworODQ0MyA5NmE5N2IyYjcyM2U5ZjUzZTA0ZjBiM2Y5ZjhjNDMyNmE4OGI2YTAzIGxlZ2FjeS10cnVuaworODQ0NCA5ZTRkZGI0NTliMTBkM2IwY2Y5NGIyNDVhNjdlMzQ3NTM4MGZiZmRiIGxlZ2FjeS10cnVuaworODQ0NSBiNzA0OGY1YmU5YTE4ZDM5YWFjNGFmOWE1NzFlMzQwMzg5YTcxNjY4IGxlZ2FjeS10cnVuaworODQ0NiA1ZjZhMmVhZGFiOTc4MzVmMjZlNmI5NTMxNjUwODQ5NTc5OTY5MmZlIGxlZ2FjeS10cnVuaworODQ0NyA3MDFkODU0ZDE5MzBiYjZhMWEyNGYyNzNmZTlkZGYxZWFiNzNkZDk1IGxlZ2FjeS10cnVuaworODQ0OCAzZjJiZmMxNTk4OWRjYWU3NTYxNzE3OWNkYmJmNTVkNjkyNDBlMjc2IGxlZ2FjeS10cnVuaworODQ0OSA4YWJiNGQ4YzMxMzQ0OWRhOTkyYTM0NWM2YTVhZWE2NWQwYjBkNmMwIGxlZ2FjeS10cnVuaworODQ1MCBlNzc4NDdlMTE1OGUyMTM4ODRkNGZjMzU4NDM2MTZlMjYyN2FhNDg1IGxlZ2FjeS10cnVuaworODQ1MSA3YTA4ODBmOGI4ZWMwOGVhMTI1MjEzMTY4ZGM2OTJmYTY2NGYzOGY3IGxlZ2FjeS10cnVuaworODQ1MiA4YmJhOWJiODY0YWUyMzhjNGFmOTNhNzc1ZTQ3OThmZWViYzcyZGIwIGxlZ2FjeS10cnVuaworODQ1MyA1YjJjNTk1NDI4ZmE5MWY5OTE5MzZhY2I3MTkzMmI4N2JhZWNiM2M3IGxlZ2FjeS10cnVuaworODQ1NCBiNzcwNzk2NTE5ZjYwM2ZlYTVlNzhkM2Y2OWU1OTBmNzI1MGFiNmZlIGxlZ2FjeS10cnVuaworODQ1NSA3ODFlYjQ5ZDJkNjZmZDBhMDY0MmQ4MmY0YTdiZDFhODFkM2U5YTU0IGxlZ2FjeS10cnVuaworODQ1NiA0MjI5NjA1MjMyODY1MjE1MjljYjY4YTczNDBmNmY5OGY1ZDcyY2ExIGxlZ2FjeS10cnVuaworODQ1NyAyODk0YmI0OWUyZWVlNjg5OTRkMTdkYzZmNDBiZDEwY2Q1MjI3M2U1IGxlZ2FjeS10cnVuaworODQ1OCAxNzBjNDZhNjUwMjIwZTYyYjZmOTYzMmE4OGFjNTZkZThjZGEwODVjIGxlZ2FjeS10cnVuaworODQ1OSA2YWViZDk3MGI3YTk5ZTg0Y2ZhNWY0N2Q5MDdhN2EyNmI4NWY3ZDEwIGxlZ2FjeS10cnVuaworODQ2MCAzMzM4NWY5NGNhOGFjNDJhMTI3NDc2ZTFkYWQwYzQ4NTg0ZjFjZGVkIGxlZ2FjeS10cnVuaworODQ2MSBiNGJiYmEzYWY0ZThjOGEyZTc2NWQ1OTMwYTU4YTEwNWNhMDY3ZWZkIGxlZ2FjeS10cnVuaworODQ2MiAwM2E4ODMzYjRiNzNkOTk5NWQ1MWNiYzY1ZThiYTY0NmZkNTJjZDA0IGxlZ2FjeS10cnVuaworODQ2MyAzMjEyNzU5M2MxMzRkMWExZTNkMjM2YTVlZTU3MjFlZTc0NGE2NDE3IGxlZ2FjeS10cnVuaworODQ2NCAwYTJjMzMxMjAwZjVmZjA4MjdiZjA4OTkzYmExYWE1OTQxMzExYzZkIGxlZ2FjeS10cnVuaworODQ2NSA1OTkzYTA5OWQ5YjAzNjYzMGVkZjBhN2JiNGVkMGM3NmQyODY0OGJkIGxlZ2FjeS10cnVuaworODQ2NiA1YjkwZGE4YTlkY2MxNzY4NDZhZjE2YWEwMTY3ZDFhOWZiMThmYjcyIGxlZ2FjeS10cnVuaworODQ2NyA1MDM1MDA2NTJiYWM0OGZmNDAyZGUyYmIwY2E3Y2E3NWE2NjQwMTdiIGxlZ2FjeS10cnVuaworODQ2OCBhNTczN2RkOTY5NzkwMDllYmY5OTFiOWNjOTY0YTVlZGM3MDZkMmMzIGxlZ2FjeS10cnVuaworODQ2OSA2ZTVkNGVjMDM3OTFjOTZjYzc5ZDk1YmZkMDgxZjY0ZjM2M2ZlMzViIGxlZ2FjeS10cnVuaworODQ3MCAyZGIzYjczNjE4NTNjNTU2MWZlYTMzYWYxNTUxOTRiMjdkOGE5YTg0IGxlZ2FjeS10cnVuaworODQ3MSAzYmFjNTIzNTJjMGJjN2E2ZGMxZWFlNjM1MjcxMmRjYmMwY2E0ODRhIGxlZ2FjeS10cnVuaworODQ3MiBiOGI2YTg4ZjdmNDQyZGY0MGI0NzA2YzA2NDhkNmFiNWY4ZjdhMTI3IGxlZ2FjeS10cnVuaworODQ3MyA5ZTdkNTk4MmFiM2RlOTZlOWE0NWRjYzg1OTY1MWJkMmQ4ODc4MzQzIGxlZ2FjeS10cnVuaworODQ3NCBmY2VhNTdjMzQ2YTU5YjYxZTNmMzczNjRlOWQ1MzVkYzVjYTIzOWNkIGxlZ2FjeS10cnVuaworODQ3NSBjMjRiNTRjMTk1NzE0MmQxZDNhZjYwZGRjZGMwNDRkZDZlMmM3OGIyIGxlZ2FjeS10cnVuaworODQ3NiBmMmQxMzRiZjY5NzNiYTI2NTQ5ZGM0MjkxZDM5NTg3ZWU2YzgwNGI4IGxlZ2FjeS10cnVuaworODQ3NyBkNTIwZDVkMDExMTViNzAyYmNmY2NhMWEwZWI3YTU1NjUwMWQwNmFmIGxlZ2FjeS10cnVuaworODQ3OCA4MDU2MTY5ZWM0NDhlMjMzZDBiNDUzYmMyZmVlOTcyOGEzZGI1ZjU1IGxlZ2FjeS10cnVuaworODQ3OSBkNDM5YzMyY2U5NjM3ZmZjYTYyYjYzOWM3Mjc4OTg5Mzc5YjhlZGY2IGxlZ2FjeS10cnVuaworODQ4MCA1MDg5MjE5NTBmMmM0MGIyYzBjNmY5ZDMwNmJlMWIwYjhkYzliM2RlIGxlZ2FjeS10cnVuaworODQ4MSAzZjU5YjM0ZWI5MGY5NmEzMTE2OGFjMWU4MDJiZjQ4ODgxYzg3NTBiIGxlZ2FjeS10cnVuaworODQ4MiAwY2RhOWYyNDdkN2FjYjliMmYyNGUyZGNmMjg1MDg3MmJjZDc0ZThlIGxlZ2FjeS10cnVuaworODQ4MyA3MzYxZjJmMTg2YWRhMDA1ZGIzOTE0NjcwZWEwZDA5NWVhNDQ0YjA3IGxlZ2FjeS10cnVuaworODQ4NCA5YmE3MmZjNGY1MDM2NGM3MjM0MDc2MDk1MmFhZWNmMmI3NGNjNjA1IGxlZ2FjeS10cnVuaworODQ4NSA1ZGMyNjdjZjQ4OTUyY2MxYmVhMmJhMWRkMzU3MjA5NTVjYWZkZmM4IGxlZ2FjeS10cnVuaworODQ4NiA4ODc0MDhlZWFlOTkzOWI1MTk1MWFmZTFjNWNmYjVkYWQyZDc2MzViIGxlZ2FjeS10cnVuaworODQ4NyA4NzFmMTM1ZGQ2MTI5YjM3MmEwZjEyMjNkMjRjOWYwMTg4OGQ5NDI1IGxlZ2FjeS10cnVuaworODQ4OCBjYzU3NzAwMWY3ZWNlZWQzZjNiYzcwYjIzNzI4MDM4ZmY4YzNiZThhIGxlZ2FjeS10cnVuaworODQ4OSBkMDJhYzYxY2Q1MGYxZmFlNTc2NTE4ODEwOGNlMzQyOTk0MjUwMzdjIGxlZ2FjeS10cnVuaworODQ5MCAwYjVhMjNlYTc1MTU2ZjI3M2U0YWZiMmYzODJkNDBmOGE5Njg5ODlkIGxlZ2FjeS10cnVuaworODQ5MSAyZjM2ZTBiYjM3YzM3OGE5Y2ZjNDBlZjI2MmU5NjQ0Zjk5YmZjZDVkIGxlZ2FjeS10cnVuaworODQ5MiAxOGFkMTEwNmY2NTFhYjhmY2ZmZDVlNDhkNjQ4OTUyZjc5ZGMzMzIwIGxlZ2FjeS10cnVuaworODQ5MyBkZmYyMDI0YWIwMjFmZTI4ODZmMWFhMDQ0ZTMyZmM1ZGU0ZTA4ZTQ2IGxlZ2FjeS10cnVuaworODQ5NCA1MGE0MTg2M2MzNGE2MDEyNzk5MjM3N2M4NTM0ODBhNTVlOGZmMTRiIGxlZ2FjeS10cnVuaworODQ5NSBmMDU1NDY3NDM0MDYxMDQ2NWM3ZDljOGI0OTMwZTBmMDA1ZDQyMjA5IGxlZ2FjeS10cnVuaworODQ5NiBhMmY5OGQ3Y2FkZWQxZGQyMmQ1OGVkMzE0YzYxMDMxZTE2Y2QyNGZjIGxlZ2FjeS10cnVuaworODQ5NyA1OWMzNDlhMTRhM2FkZTM3ZDU3ZWU5YzU1ZGM0OTNjODgxMTA5NWZmIGxlZ2FjeS10cnVuaworODQ5OCA2MDFjNGVjYTNkZTM0MWU3N2MyYjIzNzdkN2Q1NjIwMTdmMzE1MzZiIGxlZ2FjeS10cnVuaworODQ5OSA4MDI0NzBjN2E1MGYwNDg0ZjkxMjU3MmVkZDEzYTI2MmMxOWViNTIyIGxlZ2FjeS10cnVuaworODUwMCA2YTI1ZDgxMTBiMDA5NDUyYTZiMDAwNjlhYzQ5Yjk0YjI5ZTg4ZDBmIGxlZ2FjeS10cnVuaworODUwMSBkNWY4NzQxYTgxMmNmNTU1MDczMjE2YzdjNDY1YWRkNjQzZTkxMDk3IGxlZ2FjeS10cnVuaworODUwMiAwYWQxNWYzMGM4ZDQxMDhjYjYxMThjZjliODYxYTgyMGQ4YWIxNTdmIGxlZ2FjeS10cnVuaworODUwMyBiNTgwNDE1NGFmNGRmMTJkMmNlNjJjNjUwOGE3ZTY4NmRiNjJhYjQ0IGxlZ2FjeS10cnVuaworODUwNCA0OTRlNTUwY2IxOGQxNWMyY2UxMGQwZGVlOTRkNDI0ZDRmNDA0MWQwIGxlZ2FjeS10cnVuaworODUwNSAyOTIxOTMxNzBkYTE1OWZjZmZhYTEzODliNzc0ZWNhY2QzYTYyZWMwIGxlZ2FjeS10cnVuaworODUwNiA2OGYyZDc3MDQxODBhNzJiNGQxMjc4OGUwMGNhMDVkNzRkNGM0NWZkIGxlZ2FjeS10cnVuaworODUwNyBiZjgwM2RmZDQ0MjhmMjc2MTU2MGVlYjA2YzgwZGU4ZTAxZjU1NjM4IGxlZ2FjeS10cnVuaworODUwOCA2YzQ0OWRmZjJmYjg5Y2YwNTRmZDhhZjY4ZWJmMTIwZDAzY2QwNjgxIGxlZ2FjeS10cnVuaworODUwOSA5YTU3Y2EyMjk2ODFiNjgyY2YzYWM1OGI3MjIwZGQ4OGU4YzhiYTMzIGxlZ2FjeS10cnVuaworODUxMCBhYzc1NTRmMjkzMTM2OWUzNWJmOTk1YTkzYmIyODUwN2ZlZmI4YWEzIGxlZ2FjeS10cnVuaworODUxMSAxY2Y3OWVhOGZmYTJhNThhOTBkOGQxMDYyOTUxNzYyODJjZGRlZWM3IGxlZ2FjeS10cnVuaworODUxMiA2MTQxMThhMTM0OGM5NDIxYjdiM2ZmMmYxY2U0ZDA0ODg2NjE5ZWE5IGxlZ2FjeS10cnVuaworODUxMyBiZTFiNzhlNzA3Mjg3MjgzZDM1ZjIyYzcwM2RlMjIxMTcyZDM1OGI5IGxlZ2FjeS10cnVuaworODUxNCA0YzIyOTJlNzA5YjJkMjdkNTM3ZjdjY2FmNmI2MDMxNTg1Y2NmNmJhIGxlZ2FjeS10cnVuaworODUxNSA0N2FkZjE4ZDAxYWRkNzg2M2UwNmJkMzMyYjM1YzEyN2QzOWVmOThlIGxlZ2FjeS10cnVuaworODUxNiA2MTkyMzIyMzZkZGI4YTU4NmYzMzA0NTBjMDRmNzVhYjlmZTNhOGRhIGxlZ2FjeS10cnVuaworODUxNyAxYTQzNjk5MTA4YTYzNzU2NTYwYjRiMzI3NjY4ZDJkMmM4NzNjOWUyIGxlZ2FjeS10cnVuaworODUxOCBhOWUxZWE4MGVhM2Y0YWE1OWY1M2YzMjU3MjUyN2VkZGY4ZWY5NDIyIGxlZ2FjeS10cnVuaworODUxOSA2ZGIzZDUyZDRhNzhhZjA3ZWZhMjMyYzc1YjNhMzIyMWViZGVjYTQ1IGxlZ2FjeS10cnVuaworODUyMCBjMDc5ZTkyNGM5MjcxODk2MWIzYjlmZTI1ZDVhYTBmODE1YzRlZjcyIGxlZ2FjeS10cnVuaworODUyMSAwYjllYzFiMzRhN2E0MDg4MGNkMjljMmI0N2VjYzEzYWEyYjQxY2IwIGxlZ2FjeS10cnVuaworODUyMiA2ZWIxZTM1NDllMmRiYmE2MjZlZDNlNWYyNThjYzVhOTAyMTRkZDI0IGxlZ2FjeS10cnVuaworODUyMyA4YmE0NmIwNzc4ZGFkMjg4NzJjOTMwMDc4MGUzNGZlNTJmMTY4YTk5IGxlZ2FjeS10cnVuaworODUyNCA5NmZlY2M4MGEyOGY3YzlmMTUwMjQ5NGRjMzE5MDQ5MDZjYmNmZjZjIGxlZ2FjeS10cnVuaworODUyNSBlOTM2NjMxMTc2YjYxZDZkMTk5NzI5NDk2MDUwNGYyZmE1NTI1ODI5IGxlZ2FjeS10cnVuaworODUyNiA0ZjEyYzIxZjg3NDc5NjhiYzQwN2QyMjFjYzY1MmU4ZWRmYjU2NGY0IGxlZ2FjeS10cnVuaworODUyNyA2MDczMWIxOWZlMzRkNTdlOTNmMjM0OTBkZTMyMGE3YzE0ZjU3MGYxIGxlZ2FjeS10cnVuaworODUyOCA2YjBhZmJiZmUwYjc4MTlkZDM4NzJhNjVlYjIxODU2MTU4ZjRjZDJlIGxlZ2FjeS10cnVuaworODUyOSAxZGExMjI3MTg1OThlNzUwMTMzNmNlYmQ1MGVkMDlkOTJiMDIxMjNlIGxlZ2FjeS10cnVuaworODUzMCBkYTNjN2Q0N2YyMTBhNmU1ZDVhMDEwYmMyZjI0NjVkMmQ5MTQzNGU3IGxlZ2FjeS10cnVuaworODUzMSBjYWI5ZWE1ZTRlZWQzN2Q3MTExZjI1Njc3ZGZlMDUzYjkwMzI1YmUxIGxlZ2FjeS10cnVuaworODUzMiA3MmQwMDQ5NzFiMjY3OTdlMDA3NTlkMDJkZjQ0NTA5Y2JjNjY2NzUzIGxlZ2FjeS10cnVuaworODUzMyA4ZWMwMjEyN2M0NGJiNDM1OWU3MTExMmMwYmI0ODY2M2FhYjNlYjk0IGxlZ2FjeS10cnVuaworODUzNCA1NjZkMGNhZTkxOTE1YWIxMjJiZGQxNWVkNzBmYjliNjU2NjQ4NTYyIGxlZ2FjeS10cnVuaworODUzNSA4NzdkYmJhM2I1YTgwNDAyYzU2NTljMWVmYmFiMTJkZTkyNzMxNmVlIGxlZ2FjeS10cnVuaworODUzNiAzODc4NGI4NTNkMjMxZDJhZmVlZTY4NzZmZDZmZDMyMzdlMzUwNzZhIGxlZ2FjeS10cnVuaworODUzNyAxMTQyOTk2OGUyOWQyMmVlNGE0YTQ4MDE1YjhiZjdjMGRiZWU2ZGM0IGxlZ2FjeS10cnVuaworODUzOCAzNmRmNDQzNGIzYjMwM2ExNGY1ODZhMzUwODUwNzA4MzE2NzA3OTY3IGxlZ2FjeS10cnVuaworODUzOSA3NGE3ODY2NmRkYzhhZmJkMzBmMzAyYzdjZWM0MTNmNTkyZTFiMDNjIGxlZ2FjeS10cnVuaworODU0MCBhNWQ1MDNlY2E3NDc4ZGQ0OGU1ZjRmM2FlNWRlN2I4MmU5OGFiMTBiIGxlZ2FjeS10cnVuaworODU0MSBlODhkMmUzMjJjNWViZTgyY2JjZWMwZmQyN2JmOWNjYjk4MGY3ZTQ1IGxlZ2FjeS10cnVuaworODU0MiAwZjQxOTNiZDA4ZDBiY2JhZWQ2MjUyNzRiMThiNjQwNGIwOTQyYWYyIGxlZ2FjeS10cnVuaworODU0MyBlNGNkMDkyZjQzZDY2YWFhODY1ZmVkYjIwNzI5NmJjYzg0NGFhOGM5IGxlZ2FjeS10cnVuaworODU0NCAzZDNmYTg3NzM4N2FlZDMxNjRkYzIyZTkzOGYyZGEzNzkzMTZkYzMzIGxlZ2FjeS10cnVuaworODU0NSA5MjVmOTBiNDhkNzM3MjQ1MzdkMDc3NWRkMDIxOTUwYWMwYzBlNzRiIGxlZ2FjeS10cnVuaworODU0NiBlMGYyNDk5OTNhNGY3ZjU5YzkyNjE4MTk5OGE4MTM2YWEwM2FlZjAwIGxlZ2FjeS10cnVuaworODU0NyA2NDNmYTU0ZjIxMjQ1ODFkNWE2M2YzOGUzOWI0ZTI3MTY4OGM1YmE2IGxlZ2FjeS10cnVuaworODU0OCBkOTFjYzBhNTdkYWEzYTQzMmQ3NmQ5ZGRmMWQzZjhmOWYzZDBkMmI0IGxlZ2FjeS10cnVuaworODU0OSBjN2I1YTcyMmQ5MjY0OTRlNjZlMWNhMjRiN2M5ZjMxZDQ2YjAxZDQ3IGxlZ2FjeS10cnVuaworODU1MCBlY2M5NDkwZWM3MTkyNzgzOGIyOTc4MTFmMDhhNzViMjI5MjhiYzg0IGxlZ2FjeS10cnVuaworODU1MSA1ZTVlNTRhNmRiYTZmYWI5MmE4ZWRhMTQ1YjBlN2ZlOTZlYjZhZDgyIGxlZ2FjeS10cnVuaworODU1MiBiZjNmNDg3ZmNkOGI1N2Y5OTA5ZWFhMjdlYWVhMjBlMzc4YWZiNTBmIGxlZ2FjeS10cnVuaworODU1MyA2NTQwZWIxN2U1YjY0NTdiNWNhNWY5OGRlMTM5NzJiYTY5Y2IxOTM3IGxlZ2FjeS10cnVuaworODU1NCA4ODE0Y2NmMmQxY2RiNjU4Mjg1NDY0YWFiNWIyMzU1YzBhMTBkMmJiIGxlZ2FjeS10cnVuaworODU1NCBkYzVjOTY4ZWM5OTJhYWIzZDQwYTcxODlkZjBjNDQzZDFjN2ExYTY4IGxlZ2FjeS10cnVuaworODU1NiAyZjFhNWNhZDI3YjdhMjMwMWJjMDg4NGFkZDIzNjU1NDU4NjI1MjUwIGxlZ2FjeS10cnVuaworODU1NyBkM2M2MDM1YWMzY2JjYWI3NWZiZmYzZTkzYWJlY2Y2NTNiMWNlYzZmIGxlZ2FjeS10cnVuaworODU1OCAwZWIxNGE2NDg0ZjNmOGY3ZDJmM2E4NGU3NWFiNGZkMzEyYzQ2MWMxIGxlZ2FjeS10cnVuaworODU1OSBkN2NhMDU1NDc5NWVlZjNmYjQxZmJmMTk3ZDFjMGQwOGU4Y2NhMGVkIGxlZ2FjeS10cnVuaworODU2MCBmMTU5MDQ0NTMwYjE4MjcwNDY3MjZmYjM2MDI2ZWQ3MTBiYzFmOWZmIGxlZ2FjeS10cnVuaworODU2MSAwYWE2MmNiZWQ5ZjgyZTkxNzI5ZDM5OTM4OWI1OGIxZTcxYjliY2QwIGxlZ2FjeS10cnVuaworODU2MiBmOWYwMjYyYzRjNTc2ZTdiN2Q1MGJiZTQ0ZTM4YzFmZGRjYmI2OWI4IGxlZ2FjeS10cnVuaworODU2MyBkODlhMjE5YjQ5YTcyMTNjMWIyYzg1MGQ1ZWFmMWQ3ZTkyNTI2NTQ3IGxlZ2FjeS10cnVuaworODU2NCA2MjJjOGQ5ODFhNjk1NWZhNjFjYjA1MmZiNWRiMjQyNWMyMGEyMjkyIGxlZ2FjeS10cnVuaworODU2NSBiMDQ0YzQ3OWNiYzgzMDUxODNlNTNmYTNkMmI2MWU3NjkwMjRiYTI3IGxlZ2FjeS10cnVuaworODU2NiBlZGFlZTUzNzgwMjEzM2I2YmUwMjA5ZWQ0ZDBjZTA1NTc5MTIxY2Y5IGxlZ2FjeS10cnVuaworODU2NyBmMTMwNDllZDMxZmRiOTM0MzE3YWVkNWMyMjFkNjZlOTlhZjcyNzcxIGxlZ2FjeS10cnVuaworODU2OCBkYzkxNmQ4YmJiNTVkODgyNDA1ZmQ4YmYzMmFhZWNkODk0NjY1OGYxIGxlZ2FjeS10cnVuaworODU2OSAyOTQ5YzBhNDBiN2JkMDhjYWRjOGFhZDYxNDVjZTdiYzJlODYzZTkwIGxlZ2FjeS10cnVuaworODU3MCBkMTA5M2YzNDIxYjZmNTI4MGJlYjIyYzdkZjhkYWJjOWM3Y2M0YTI2IGxlZ2FjeS10cnVuaworODU3MSBhMjJmY2E3YTVjNWE3ZDEyNzA3ZmY4YWUxZGVmNzBjNTQzMDFmMjYyIGxlZ2FjeS10cnVuaworODU3MiAyNzQyMjY0ZWZkZGVkZDVkOTU5MmZmYzgwNzk0MzMwN2UwODI3NTU3IGxlZ2FjeS10cnVuaworODU3MyA0NGI4Y2ZiZGE0NDEyNDAzMjI2ZmJkYjM4ZTIzNDExNzdhOWFiYjFiIGxlZ2FjeS10cnVuaworODU3NCBkMTM3ZTYyNGNlNDJiMjM5MWFmYjlhNGMzMDUzZjNjMmNhZjEyZTY5IGxlZ2FjeS10cnVuaworODU3NSAxNzliZmQwZmVlMjRhMjczODhkNWU1OTk5NTA5YTc1N2M1MDBjNjBjIGxlZ2FjeS10cnVuaworODU3NiA4ZjdmNDc3MDA3YjM4ODY1MmM1NjdjMjg1MTg2ZTRjNGMzODU5MjY3IGxlZ2FjeS10cnVuaworODU3NyA4YmIxMjgyMTVkYzU4YzFlODlmOGZjZDBkNjUwYTc0MjkwOTE4OTgxIGxlZ2FjeS10cnVuaworODU3OCBhNjRkMTRjNDkxNGYyMTVlNTAxODIxNmFlODMxY2JmYmMxOTNlYTA5IGxlZ2FjeS10cnVuaworODU3OSA0ZDhlYmY3YWZmYWI0YmRhZGI3MGFiZWQ1ZTY2ZWI4NWFjMWJmNDFlIGxlZ2FjeS10cnVuaworODU4MCAzYmI4OTcwZmI5MTgzMGE1OTAxM2M3MDRiNWE2NzIzNzU3MWY5MWI4IGxlZ2FjeS10cnVuaworODU4MSBmM2MwYzE3Yjk3MDhiZjgyYzlkYTBhZGI4ODM4YTk2NjJlYWUyZjk0IGxlZ2FjeS10cnVuaworODU4MiA3N2ZiODgwZWNhNDkxZmUxMzU5NGU2ZGE0ZWY2NGFkODA5MjkyYmIxIGxlZ2FjeS10cnVuaworODU4MyAzNmIzYjMzN2M1NjYzODQyMWNmYTNiZGM5NTVkZWE3ZjBmMzdjMDVhIGxlZ2FjeS10cnVuaworODU4NCA3YmQ1NjVlNGZiYjVhYTA0NTU3MGM3YTVjNjdlZDk3NWEwZmRhODJjIGxlZ2FjeS10cnVuaworODU4NSAxNjc2ZjU3OTUxODBiY2I3NmY0YWVhMWY0NDgxOGRlMWRmMmQ2NTNiIGxlZ2FjeS10cnVuaworODU4NiA4Y2IyYWZkMTAxMTk1MDBlYjBlMGIzMzg2ZTlhM2IxMWZmM2E0NWFmIGxlZ2FjeS10cnVuaworODU4NyAyNjBiMjE3NjkwNjFhYTkwNmExY2MyYTUyZmYzNGZhOTMxZTJlM2IxIGxlZ2FjeS10cnVuaworODU4OCA5NzNlZjM1ZWY0ODI1NjhmMzk1NjJjMzExNWY2OWE2YWNkNzFmOWU4IGxlZ2FjeS10cnVuaworODU4OSA1ZDFmMzM3Y2VlMjY5ZjkxMWFjNmZlMjZhN2I5ZjY3YTZiYzI5ZDU1IGxlZ2FjeS10cnVuaworODU5MCBkOTFmZDdjZDhiZTdiMmY2YmQ0MjZlMTUwNDg2NmI5NjMyNjBkM2IxIGxlZ2FjeS10cnVuaworODU5MSA3MzdlZDY2NTI4OThlOTQxNmM4MDg5OWMzMjkzMGM3ZWEwYjliOGM1IGxlZ2FjeS10cnVuaworODU5MiA2NWM5YmE4MDAwMzAyYzJmNDZhNWFiODBhNTlkMWZmNzJkMzhlMjQzIGxlZ2FjeS10cnVuaworODU5MyAwN2I3ZDQzMjBiMTRhZGFhNTJiYTg0OWZlNzkyMDYzMDBkMDY1MmJmIGxlZ2FjeS10cnVuaworODU5NCA5OGEyODJjZmIwMTNlNzgyMjg3YWMzNDIxYjE5ZWEwZTE5ZGU2OTNmIGxlZ2FjeS10cnVuaworODU5NSBkMTNkM2MyYzk4NjBhOTM0MmYxMjBlMzgzMzZmNGJkODA0YmRmMzk1IGxlZ2FjeS10cnVuaworODU5NiBjMjBiNjk4MGE4NzBmY2Q2MWM4ZmU3MDVlYmVjZTgwZTljNDAxZDAyIGxlZ2FjeS10cnVuaworODU5NyBkZjI5ZTgzYzMwNGZhYTRlZDJiNDgzYTIxNWJjNTkxMjI5NTM0ZTg1IGxlZ2FjeS10cnVuaworODU5OCBkZjAyOGJjNTRlNmYzMmE1ZjBmOGMwYTE3YWI1YmU0MGMyY2YyNDMzIGxlZ2FjeS10cnVuaworODU5OSBkYjhhYzZlMTA5YjRkYzBiOTI4ZDA2YTljY2VkN2JkNzUzODdlNmJjIGxlZ2FjeS10cnVuaworODYwMCA3NDhmYjVhMDA5YTdjMGMzMDE2YTg1Y2IzZDE5MzVmYWYxYmYzM2I4IGxlZ2FjeS10cnVuaworODYwMSBjYzJjODQ3Njk2MzZhNDI1OWY3ZmU5MDVlYTA5Y2U3OWRmNjJlOGJjIGxlZ2FjeS10cnVuaworODYwMiBkNGU4N2FhN2JmZjA1Njc5MTUyNmYzZWZiNGY0ZDYwNGJjMWExNTQwIGxlZ2FjeS10cnVuaworODYwMyBiNDQ5MzRjMjAxMjVlZmQ4YTMyMjJjNzBhM2E4YzM2NGUwMzY0YzM3IGxlZ2FjeS10cnVuaworODYwNCA0MjU0MDk1YTUwMjk4MDFjMGY5MjYzNDdmMDUyMjk0YmRmNTZjYzQ0IGxlZ2FjeS10cnVuaworODYwNSAwNjBmODM5MzJlOTFhNmY1ODIzZTgyMDE2YzhkZmEyYjhlZjM2ZmE1IGxlZ2FjeS10cnVuaworODYwNiA1ZGMwNzhiMjEzZTU4MmQ3MWVhODFjZDBjMDA2YzRkZmMzM2FmMmMzIGxlZ2FjeS10cnVuaworODYwNyAyZDk1ODJlZWUxMTJlNmU4Y2FkZmQ2NGYxYzI0ZTQ5M2QxM2U4NjBkIGxlZ2FjeS10cnVuaworODYwOCA4NTQyYjg5MDM5ODk5NWY5YzAzMjlhYzI3OGI3MTgyNzA5MTQ0YTRjIGxlZ2FjeS10cnVuaworODYwOSA5NDYwNWIwMDI2ZTdmNmJmMzc3MmE3YzA1MWU4YTYyNjY2OWIzMzY1IGxlZ2FjeS10cnVuaworODYxMCBiNGEwYmU1YzQyYmY3NTliNWMyZjBmMjg5YjIxODFiOTQzZjc4ZTNiIGxlZ2FjeS10cnVuaworODYxMSA1NTI4M2Y2ODFhMWMyMTAxZDE5ZTdmMzcwZTFjZjM5Njk2MTJjZmJhIGxlZ2FjeS10cnVuaworODYxMiAzMmY2NTc0MTc0M2JkN2FjNmJkMTg4MzY2ODYyYTNmYWYwZDRiMDFiIGxlZ2FjeS10cnVuaworODYxMyA1NzA0NWY1MWRkMTJiMDRkMjU4NjU1N2Y5MjhhMjJmMTJjMGRiNDYyIGxlZ2FjeS10cnVuaworODYxNCA0MGFiZjIzZTE2OGJmYzNiYWNkMWQ1OTNiZjZmNjFhYWRiMzUzMjljIGxlZ2FjeS10cnVuaworODYxNSBmODBlNzYzYzE3MTdkZTc5MTEwODJlMjUwODFiNTI0OTMxMzNlMTBlIGxlZ2FjeS10cnVuaworODYxNiBhMjg3YzUwMTRlNjZhODE4OGJhZTI5MTAxZTI2Y2ExZjZiZTgwMWZkIGxlZ2FjeS10cnVuaworODYxNyAzYzk1MTI0MDFmNmQ2Yjc2ZjliMTA5YjNlNmNjYWZhMmFjN2FkNDMyIGxlZ2FjeS10cnVuaworODYxOCA5ZjYxNmE0OTIxOTY2MTkxMDA3OWY1Y2YzM2QyNDgyYzU2ZjQ1ZGY4IGxlZ2FjeS10cnVuaworODYxOSAxNDRkYjYzNWI0OWQzM2U5OWI2ZmQxZTViNzM3NzQ1Y2QxNzU3YWUyIGxlZ2FjeS10cnVuaworODYyMCBjMjMzNGQ5N2NlMTRjYTQxNjk1ZTdhOTkzNmI2NjcwZjA0NTdlODBmIGxlZ2FjeS10cnVuaworODYyMSAxNDE4MjAyNDAxMTEwOWRjZTVlMzU3YjQ4ODlhZjUxMzYxNjk4Y2I1IGxlZ2FjeS10cnVuaworODYyMiAzNDFmY2I3YmFkOTAzYmEyOTBlOGIyYmEwOWVmNDdhMTZjNDVhZjhjIGxlZ2FjeS10cnVuaworODYyMyBhMmExZGYwY2E4MDhmNjIzMzQ5MjMyMmEzNzcxNTNiOGU3YWFjMzVjIGxlZ2FjeS10cnVuaworODYyNCBiNzZhNDQxNjNlMGY2MDNiNmRjNGM4YWVlZTJhNmFjZWMzOTgxOGMxIGxlZ2FjeS10cnVuaworODYyNSA0NTg0ZjA4OTMwYWM5MWI0MDM3OTc0OThjM2ZlNWNhOThkNGZhMTlhIGxlZ2FjeS10cnVuaworODYyNiBiYjAxMTEzMDg3ZWJjNTBhMzcxNThjMDdjZTZhOTliMzg1ZGFlNGZlIGxlZ2FjeS10cnVuaworODYyNyA5YTc4Y2UxZGI4ZjY4ZWYxOTg5YTRjMGU0Yjc0YTA3YWQ5NzhlNGJlIGxlZ2FjeS10cnVuaworODYyOCA5ZmQ2MGU2NDBhZTVkMDk3NzEwYWUzNDFmNWM0YjM5NWY2ZGExNzNhIGxlZ2FjeS10cnVuaworODYyOSBkN2NiZDI2NTFlNTU5YmJkZmI3MmY5ODRmOGE2MDZhYzViZGQwYjhmIGxlZ2FjeS10cnVuaworODYzMCAxN2EyNmY5ODYwMDc4ODQyMzE3NzViODE5YWQ0ZTMzYjE3MzE4ZDE4IGxlZ2FjeS10cnVuaworODYzMSAyZWU5ODExYzkyZmQ0YjJlY2VhNjYyMGM5ZWFmNzI3YjM3N2JiOGM2IGxlZ2FjeS10cnVuaworODYzMiA0Nzg2NzAwNmYwNzZhZTg1NTc2YWQyZDgzMjljYjA2ODA5ZjY3YmNhIGxlZ2FjeS10cnVuaworODYzMyAxYTJiZmE5YTAzZjc0MmY4NjQ5OGQ5ZWMyMDdhYWNhMmEwYzY0NTZmIGxlZ2FjeS10cnVuaworODYzNCA2NDdlNjBmYjNiYWMzZjdjMDRiMzEwZjY0MzBhYjM3MDM2NzBmYTIxIGxlZ2FjeS10cnVuaworODYzNSAyZTBhYThkODEzOTY0YmI2YmFkZDlhODBkMzEzYWM5NTQwZWY0MWNhIGxlZ2FjeS10cnVuaworODYzNiAyYjAzYTFkZmRiZDNmZTZjODQ1MzFmMGUxZjQ5OGE5NzUyNGNiMTQ1IGxlZ2FjeS10cnVuaworODYzNyA3OTU5Mjc2MWIzMzFhMDYzZjNhNThhYzI1ZGE1YWZmNTYzNjdlYjgxIGxlZ2FjeS10cnVuaworODYzOCBkM2Q1YTI1ZjNiNzA1Y2EyNTYzZTFhYThlMWM3OGM0YmIyMTM0OWRjIGxlZ2FjeS10cnVuaworODYzOSA5MTgzYTNjNmI4NWZjYTM2MmJjZDg1YmE0ZmNlNTNhYjU0ZmM2MDY0IGxlZ2FjeS10cnVuaworODY0MCAxMTlkMTg0YmI1ZWQ4OTBlODE3NzI0N2ZjNGVmNmE2OTk2Yjg2OWI5IGxlZ2FjeS10cnVuaworODY0MSAzZWM1Y2E4YWY5MWQxYzYzNThlNWFlZTM1NmZkYjM4ZjUwZmVmNjY3IGxlZ2FjeS10cnVuaworODY0MiAyOWRkZjEwNDk4NDI3NGFmZjJiNTljMzJjOGU0ZDQyMDU5YWQ1NWY3IGxlZ2FjeS10cnVuaworODY0MyBhMThlMWNlYmQyOWZjOGNmZjQ4M2QwMDU3ZmZlZDA4ODU4OTA1YjM3IGxlZ2FjeS10cnVuaworODY0NCA5ZTQzMjQ2OGY3NTYwNWQ2YjA0NDVmYmFhOTJmZTBlN2FjYWM2NzkwIGxlZ2FjeS10cnVuaworODY0NSAyNTE0ZTlmZTI5ZjZkNzM5YTNmMTRmNThiODQ3YmJjY2I4MmRkN2IyIGxlZ2FjeS10cnVuaworODY0NiA0MzNkM2UxYzAyZjdkMDY5ZmFjZjMzNDAzN2JjYjM5NWM4ZDc5MmQ3IGxlZ2FjeS10cnVuaworODY0NyAzZTZkNjg4YjBkMmEyNzJiZjI1MWEyY2EyM2EyYzYzZmU1NWVlMDIzIGxlZ2FjeS10cnVuaworODY0OCA5YTNlNmYwZDZiNWE5Nzc1MjQwZjNjMmNhYjUwZWMyMThiYTA5MjU5IGxlZ2FjeS10cnVuaworODY0OSAyZjYwODM0ZWVhZjVkNjNhOTZjYTljODQwZDc3Y2I3MTk5ZGFlMGQwIGxlZ2FjeS10cnVuaworODY1MCAyNTNlMTFiNjExMDZkOGVkZWRkM2ZiMTU5YWQ4NDRjMDY2NTFhNzQ3IGxlZ2FjeS10cnVuaworODY1MSA3NzEzNWRhOWYzNmNkY2VhYTBjOGJkOWNiZDI1YTNlZTE5YTZjZDlmIGxlZ2FjeS10cnVuaworODY1MiAxOWZlODgwY2E5MTlmYTc1NTUzZDZjNzc3MjUzNzMxYTZlYzlhYmJkIGxlZ2FjeS10cnVuaworODY1MyAxOGY4MjRlNWI5ZWFlOWJiNTE2OWFhZTVhNDViNzkwMTY4MmYxMTdiIGxlZ2FjeS10cnVuaworODY1NCBhYWNlNTAyYjhlOGIxMzQ0OWJmYWMwOWJiNDg1NjQwNzY2NDU0ODhhIGxlZ2FjeS10cnVuaworODY1NSBiNTViMjE3ZjJlMGQ3OWMzZjM4NDI2ZDZiMzQxYzZkZTRkNmM4NzhkIGxlZ2FjeS10cnVuaworODY1NiA2Y2I2NmYwY2E4ZDU0MDhmNGFhODhmY2MyZmI2NTQ5ODhlMGI1ZTVhIGxlZ2FjeS10cnVuaworODY1NyAyZmY3NmU5YmM4NWQ3ZmQyNDg4ODgxNzVlMTFiNmYxYjU4YWY5ZTJjIGxlZ2FjeS10cnVuaworODY1OCBlZjlhMjk1M2Y5MzM0MzllZWE0NGQxMzMxYTEwN2MwN2Y1NDc2Mzk3IGxlZ2FjeS10cnVuaworODY1OSA0M2I4YzRhNjk2ZDExNGNkMGQxYzNlNWIxOTk3MDg5YmI3MzI1MDg0IGxlZ2FjeS10cnVuaworODY2MCA2NGUxOTRjNWY4NTRkMDc1MjRiMDNjNjRhYzA3MjE2NjJkZDQ3ZWRhIGxlZ2FjeS10cnVuaworODY2MSAxMTI0OWQ0Mzk4NDA0OWMwNjIxMjJlNDA3NDA4ZjZlMGUxNjc5NmM4IGxlZ2FjeS10cnVuaworODY2MiAzMmFhY2Q3NTNmMzQzYWEzOGJkODhlYWFmNjM5YzcwODM4NzA1N2ViIGxlZ2FjeS10cnVuaworODY2MyAyZTc1NWQxZmY2NjFmMTUwYTg4MWRlMmM4MjVlMjEwZmMwM2ZiZmE5IGxlZ2FjeS10cnVuaworODY2NCAzZWFiYTI1MWEzMjk5OGE4NTJhZGFiMGY0OWY0ZTUwZTI0OGRhYzg1IGxlZ2FjeS10cnVuaworODY2NSBiN2MyZmYzMDcwMzk5YTJhMDkyNGM2YmIxYWZlOWNhOWE0MTM5OTBkIGxlZ2FjeS10cnVuaworODY2NiBlNDcxMDExOWI0MWNkNjEyNDkwNGNkMWVkZDk3NzE0YmExMjI0N2NkIGxlZ2FjeS10cnVuaworODY2NyBiNTc1N2U4N2ViMzJlYTI4OGIwMzQyNWZkOTIxNjQyN2IxNDBiMmQzIGxlZ2FjeS10cnVuaworODY2OCAzYTZiN2EzNzdkYzNhOTYzZjM5YjQzZTRjNDUzMzNkNjExZmI5NWIxIGxlZ2FjeS10cnVuaworODY2OSAxMmI4YTQzNTk5ZDMzNzM0ODFjZGZjYjNhNGM2MWVlMGU0M2RmMzc1IGxlZ2FjeS10cnVuaworODY3MCBiZjdkNzcwNWRjZTVkY2FjMjZlM2MwMDY1YzQ3MjFjZThmMjVkZTNkIGxlZ2FjeS10cnVuaworODY3MSBjZmYxMDVhM2EzODRhN2U3MmY0OTdkNjM3MmJjZGM5OWM1ZjdlZjQyIGxlZ2FjeS10cnVuaworODY3MiBkOTc5ODBlN2MwNWYzMDVkNGU4ZGUzMDQyYjQ4N2RhYTE2NDg1OTc1IGxlZ2FjeS10cnVuaworODY3MyBhYjA0NWVkMTFiYzk2Nzg5ODBkOTgyMmZjZGZlNDJkYTI3NjM3NTkwIGxlZ2FjeS10cnVuaworODY3NCA3ZGE3YmE1YzY1MjU4NGY3ZjE0NzE4MDA2OWFjMTM0ZTcwYTM3NjEwIGxlZ2FjeS10cnVuaworODY3NSBjNDNjYThkZDAwODE4NzY5Yzc5OGIxYzY5YmJjZWIxMTkxNzE5OGYyIGxlZ2FjeS10cnVuaworODY3NiBmZTg5NzA5YzJlYWMwYmY3N2UwMWUwN2ZlMDU4MDI5ZjEwNGJiZTVhIGxlZ2FjeS10cnVuaworODY3NyBjNTdjZWRlM2M3YzAwMjJmZjFiMGVkZTZkNzE2MzllYWRjNzRiY2YwIGxlZ2FjeS10cnVuaworODY3OCBkYzk3NGIzYTZjZjRmNzIyZjZjOGU3MDE5NjMzOGU1ZjJlNjBkYzZiIGxlZ2FjeS10cnVuaworODY3OSBiYTJmMTFhODJmMjc3YzVmZDVkYjlmNjBiYWE5NmE3OTJjM2JiYjE5IGxlZ2FjeS10cnVuaworODY4MCBmNTdhZTY4YWEzYWU1MjZlZDY3OGRmYzQwZjlkMTk0MGJhYjEyMzhhIGxlZ2FjeS10cnVuaworODY4MSAyNGQ2Njg0NTRjYjAwMDIzMTljYTAxY2Q1OTIwYjYwNDk0ZGViZTExIGxlZ2FjeS10cnVuaworODY4MiBlNTU0YjlmNGEzYWE5MjllMmJkNzFjOTZkOTIyODFiZjZiMWU5NzE4IGxlZ2FjeS10cnVuaworODY4MyA3N2Y1YjZjYmVhNjYyNDA4OGI3NWRhZTEwNjdhNDY5OTQ5ZTZiYmRjIGxlZ2FjeS10cnVuaworODY4NCA5YzJlZTZiYmRiYjMyMzdmNjE2ZTIyN2RiOWY1OTNlYTE5NWViMzE0IGxlZ2FjeS10cnVuaworODY4NSA3YjQ1ZDkyZTM4NjFlMzc2MGQ4ODhlYjI2OTdiMGYzN2Y2OTVlYTBiIGxlZ2FjeS10cnVuaworODY4NiBmZTNmYWMxYTNlNTE3ODQ2YmJiN2E5ZTNlNGNmODg3MGI4MTBhMGViIGxlZ2FjeS10cnVuaworODY4NyA2YTBiZjZiMjYzOTY0ZmFiYTcxMTQ1NWY5NzgyMTcyM2QyNDFlYTc2IGxlZ2FjeS10cnVuaworODY4OCBhMTJlZTI3Y2FkOTMyMmIyMTMzYzFjYjNhYmQyMGI5MGYyMjA2M2Y0IGxlZ2FjeS10cnVuaworODY4OSA1MDg4ZWM1YTEyYTZiMmUzMDUwMzQwNTc4ZDRiMTU3NzU5MjMzMTgwIGxlZ2FjeS10cnVuaworODY5MCAzNmRmYzhjYzFkMDEzYTMzMTg3MjRiNzZiNmM4YTgzOGI3NDA1NjM0IGxlZ2FjeS10cnVuaworODY5MSA0ZTFmODlhMTJmOTkyOTMzNzE0NjcwYzAwMWUxZDcwOTNhZTRmY2FiIGxlZ2FjeS10cnVuaworODY5MiBlYjdhMDFiODZmOTMxNmI3N2U5ZTYyYTdjMTBjM2RhZDNmYzJjMWE1IGxlZ2FjeS10cnVuaworODY5MyAzM2NlZjAxOTYxYTcxMTBiMDI3MmRjZmQwMWY5MTA2OThlZjI2OTNjIGxlZ2FjeS10cnVuaworODY5NCBiNzAxZGY4NWMwNDc0NzY1YzY1NjA4NTY2MzJmYmRlYjBlODYzNDBjIGxlZ2FjeS10cnVuaworODY5NSA4YjU5YzAwNGE0OTljMTI2MWUwZDk3NGFlMTdlMjFkYjU0MDU4YmU4IGxlZ2FjeS10cnVuaworODY5NiA0MThkMzg1YTllNDI0YzRmYzZiNzUzMzMyMGE3ZTE1NTQyZWYzY2MwIGxlZ2FjeS10cnVuaworODY5NyBlZDQ5MjRmM2IyYTU2MWMwYzc1NDdhMmM2MjQ2ZGEwOWY4Y2E3ZDJiIGxlZ2FjeS10cnVuaworODY5OCBlZTViZDA4NTE3ZTg2MmE0NzM2NTY3NzNkYWJhMGJlZmEwMmQ4ZjY0IGxlZ2FjeS10cnVuaworODY5OSA3OGE0YTU2MzJhOTFjNTU5YTc5NDNiNjBhMjZhMTE0ZDhjNzIzYzJkIGxlZ2FjeS10cnVuaworODcwMCA4MGJkYmM0OWI0YzQwYjU5Mjg3MmM1MWNkNjQ5ODQ4ZTBlOTJiOWNiIGxlZ2FjeS10cnVuaworODcwMSA4NTZkODdkMjgyYWM2YmEzYTI4YWUwM2JhMjQzODRjMzdiODlkYjUzIGxlZ2FjeS10cnVuaworODcwMiBhODVjZGYwYmVmYzVjYmZkNDJjNmE3ODBhZWQ3N2E0Y2YwNGE5MzMzIGxlZ2FjeS10cnVuaworODcwMyA5OTg1NTIxOWIzN2Y2ODA3MDJkNjE1Y2JlNjdkODhmNWI1NjdiM2UzIGxlZ2FjeS10cnVuaworODcwNCA2MTNmOTc2YTU3YjQ5MmQ4NmVlNmY0YWNlNzZhZGUxZWM0ZjE2NmM3IGxlZ2FjeS10cnVuaworODcwNSBiNTMzNDdjODI2MGVmMTUyNmRjMDM5NTAwNGQ3ZGZhZmIwMzc3Y2Y4IGxlZ2FjeS10cnVuaworODcwNiA0ZGE0ODA4NzA5Yzk1OTc3NTdlNWU1M2U0NWI1ZjExNTM0ODU4NjMwIGxlZ2FjeS10cnVuaworODcwNyAwZWYwZTA1MWIxZjhkMjJjMTNlMmQ0NWFiY2RmNTIyMzA4MzZlMjE3IGxlZ2FjeS10cnVuaworODcwOCBjODkzOTBlNTZiOTE0MmVjODQ5Y2NkNzhhM2VlZThkOTYwZWYyYmU0IGxlZ2FjeS10cnVuaworODcwOSBmYzVlMWUwMDQ5OTQwYWU3NDA4ZDMzZmFkOTYzZTNjZDQ1MTM5N2FjIGxlZ2FjeS10cnVuaworODcxMCBlZmNlZDgzMjZlM2YyNTBhNmE2NTM5Y2Y3MjU1YjAzYzk5M2Y4MWU4IGxlZ2FjeS10cnVuaworODcxMSA0ZTVmYjhkOWFjYjFjNjNjOTU3MDIwNjM5MTkyNWIzMmYxYTczNGFiIGxlZ2FjeS10cnVuaworODcxMiAyNDg0NTk2ODMyM2Y5MTAyZDQwMmIzNjJhY2FhNmU2MWI0YWY2MmIyIGxlZ2FjeS10cnVuaworODcxMyA2ZGZlYzMyMGY5MTA5ZTE0YTIzNjc4ZDdhNzU2NjBlYTI1NjczZjM0IGxlZ2FjeS10cnVuaworODcxNCAwM2I4NzkzZjc2YzJjYmNlZDU4NjMwMzUzMDlhMjg1NDAwMTcyNmFkIGxlZ2FjeS10cnVuaworODcxNSA0NDYyZDNjNjAwYmY5NzJhYzZhZjYyMWIzNzE2MTU0Y2UxMDYwZTY4IGxlZ2FjeS10cnVuaworODcxNiBmNjA4NzY4MzVhNzU5YzIxZWU0NDdhYTBmNGJlYTFjMDY4MmU5NzY5IGxlZ2FjeS10cnVuaworODcxNyAzYjViYmNhZjkxN2Y4N2M3ZWMxYjc1Y2ZmODA2MWZjZTg1OGE5Nzc5IGxlZ2FjeS10cnVuaworODcxOCBhYjY0MzQ0ZTg3ZGJkYjViMjc2OTQ2ZTQ0ODJiOWI2OGI3ZWViMTEyIGxlZ2FjeS10cnVuaworODcxOSAyMWEyODQ5MGJkOTYxY2U4YzFkZjhjZDdkZTEwM2M0OTdmMmQxYWZhIGxlZ2FjeS10cnVuaworODcyMCA0Mjc5ZjRlYjIxMGEyMTRmMGZmMGY0OTcyNzJkNzc0NGY0ZGM3MzU3IGxlZ2FjeS10cnVuaworODcyMSA1YWIyMWQxYjYxZDg2YmYzM2IwMmUzMzkzZGFiNjMzZTRlZjAyMmNhIGxlZ2FjeS10cnVuaworODcyMiAxNWJjZWMzZDMyNTk5ZTY0OThkMWExM2U3NmQ4Mzg5ZDcxYmI2ODkzIGxlZ2FjeS10cnVuaworODcyMyA0Y2YyMGZhODgzYTkyZTFlNzRhOTE3ODVmYWYwODM3NzZjYjJjYTUzIGxlZ2FjeS10cnVuaworODcyNCAxNDk2NDQ0ZThjOGI4MzA0N2QyNGFhZWZlMmVhY2I1NjAzMzk1ZGI0IGxlZ2FjeS10cnVuaworODcyNSBhZjExNGVkOWU2MWRlZDYwYTdiZTk3ZDk0ZTkzMjA4ZjUxZWE2NTJjIGxlZ2FjeS10cnVuaworODcyNiBmMTBhYWQ3M2UwMjkzMTEwMjU3YTRmMzBjNjQ5NDI5NWYwYjI2NTZhIGxlZ2FjeS10cnVuaworODcyNyAzZmE0YjdhZTBlNmJjMWYwYWFhZTQwMWYwNWNjOWJjODBmNmZjYTBhIGxlZ2FjeS10cnVuaworODcyOCAzZTBhYTcxNjJjODgxZjYzZDdmYmVmYjg1N2YxYzZkY2I2ZWZmNTcwIGxlZ2FjeS10cnVuaworODcyOSA2NDI5ZGI1ZDBhZjcyZDAwOTFlYjA5MWU0NDUwOWZhNjdjMjAzMTM0IGxlZ2FjeS10cnVuaworODczMCA1MjI0ZWQ4NzdiYWU3ZDU2YjRkZTg0NTZiMjM5NzU3ZjRiM2ZiYWMxIGxlZ2FjeS10cnVuaworODczMSA0Yzc2ZWUwMWRmMDhkYjNjNGNhNDFkMDAyNTNkMjY2NzdkOTI2Nzk3IGxlZ2FjeS10cnVuaworODczMiBmNDQ2ZTA4YWMzMDI3Yjg2ZjI3YjNhZDY2YTc3NGJjOTg1ZGM3OWZmIGxlZ2FjeS10cnVuaworODczMyBjZTIwOTI3MTQ0ODQzNjllODhjYWUyNjJiMjY1NDQ4NTJlMDJhOWExIGxlZ2FjeS10cnVuaworODczNCBkZGQyNTUxMGYzZmI2ZjMxYmZmZjFhZjQ4MWU5NTc1MzY3NTYyMWU0IGxlZ2FjeS10cnVuaworODczNSA3YzFlYTg1ZTI2ODQyYWJkNDJkYmVhZTI2MzJjMDllYjBkNTlmODMwIGxlZ2FjeS10cnVuaworODczNiA0ZmJjYzQyODkwMTI2YzJiNmM5OWNhNjQ5ZTM5N2MzNmFkMjM2YzcxIGxlZ2FjeS10cnVuaworODczNyBjMGNkMjNlNzA4YjU4NmVkMjg4ZDJlZDMxZjJlNjBjMGZjOTYyYzRkIGxlZ2FjeS10cnVuaworODczOCBkOTc5NDFlYzVlZWQwMTE1NGFhN2E2YjMxNjk0ZjY0MDZkOWRmZjRkIGxlZ2FjeS10cnVuaworODczOSA1MDc0ZmFiMjkyNWQ4YWMwYTg1M2FhNWM4MTg2ZGJiN2E5YTQxMmZiIGxlZ2FjeS10cnVuaworODc0MCBhYTZlMDUwNGUwZjJhYjY4NzM1MGJjMGE2Nzk4YjFmMWM0OTE1MDgwIGxlZ2FjeS10cnVuaworODc0MSAzZGYyMmVkY2VjYWQ4Njk3MTJkOTVjYTZjNzI2OGIzM2RjZjc3YTAzIGxlZ2FjeS10cnVuaworODc0MiA4YTUwMjQ5YWE3MmYzM2QyYTkyYTY2ZGU5OGIwMGUwZmQzZjY0YzllIGxlZ2FjeS10cnVuaworODc0MyA4YzFlMDIwODkzNzk4ZTBmM2Y5M2ExZTI3MjcwN2YzOTMyZGEwMDVmIGxlZ2FjeS10cnVuaworODc0NCBlYjhkMWEwOThiOWRlY2IxNDZjZjFmMjYwYTg3OTgxOTk1Y2FmMzFlIGxlZ2FjeS10cnVuaworODc0NSAwMjBhM2M4YWIwNzBiYTM2NjQ1ZTAwOWM4NzhjZTJhYzA3ZmMxNTA0IGxlZ2FjeS10cnVuaworODc0NiAxM2M1MzI5ZDJjMmU5MTJmYWExY2ZiM2ZlMDlmNjkzODFjNThhOWMwIGxlZ2FjeS10cnVuaworODc0NyBkZWE4ZGM0YjhlMjI1ZGZiYWQ1MWQ4MDI0MWIxYzkyNGRjOGIxOWIxIGxlZ2FjeS10cnVuaworODc0OCBlOTkyNjI0MWZhYTQwMzJmYmYyZDEwZTIxNGE0ZWFkNWMwOWJmMzU4IGxlZ2FjeS10cnVuaworODc0OSA3NzU4OTk1ODNkYTY5ZDEwNGEzNjE4YTljZmM1ZThhZWJkNzJjNjg1IGxlZ2FjeS10cnVuaworODc1MCA0MzMzNzc1YjU1ZmRkZWY2YWU1YjRjNmI0NGUwM2Y3OTgzNmU5ZjBmIGxlZ2FjeS10cnVuaworODc1MSA3YTM4MDhlZGM1MzkwNDM1MTA3YTExZWI5ZTQ5YzViZDVkYmZmYjkyIGxlZ2FjeS10cnVuaworODc1MiBmOWZiZGU3NWM1MzY1YTVmNTgwODk2NzA0ODE0YjFiNDRkZDkyNDhmIGxlZ2FjeS10cnVuaworODc1MyBlZDc0Y2M1OWM4YTJjNTA0ZDI5MzllZDRmNjlmYmMwYTY0YzdkM2ZlIGxlZ2FjeS10cnVuaworODc1NCBiYjU0NzJmYjQ4ODViOTUwMmNhMmM3M2JkZDdjZjlhNzFkMmYwY2MwIGxlZ2FjeS10cnVuaworODc1NSAyOTg0NDE2YTFiMmIyMzhjNmZjNWZjYmJhODBjNGM0NmNjMjBlYTBiIGxlZ2FjeS10cnVuaworODc1NiAwNzg2MDA0OWYxYzQ1MTVmZjkyNWNjYTVjOTE0MWZhOTMxODhkNDQxIGxlZ2FjeS10cnVuaworODc1NyBhMjY2ZTk0Y2E1ZTFjZDk0MjgzZWFkNjcyZjExZTEzM2M0ZmVjNTZjIGxlZ2FjeS10cnVuaworODc1OCAzM2VmN2JhNmU3NGJhNTEzNmJkOGJjMDhkMGVhZWE2MzRmYTY1YTQ2IGxlZ2FjeS10cnVuaworODc1OSBmNjgzOWU1MzJiZTJiNGVhNTEyNTIxMjgxNDBkYjgzODZhYzcyNTVlIGxlZ2FjeS10cnVuaworODc2MCBlYmRjNDhkMDZjZjg1ZWQwMjk1ZGE2MmM3ZTczMDJlYWRjZmVhZjBlIGxlZ2FjeS10cnVuaworODc2MSBkYWE2MmMyMjY0YjUyNTk5NTY5NzFlY2U4MTUwNWM0ZjA2MjZkYTE2IGxlZ2FjeS10cnVuaworODc2MiAzMzcwNTRlOWQ0ZmE0Mzc1NjVjNGY4MTcyNTIzNGYyNWVkZDVjNGRmIGxlZ2FjeS10cnVuaworODc2MyA4MmNkMmJhYTQxMzY0NmY2Y2M4MGQ1YmE1YjllODBlODdhMjliNTI4IGxlZ2FjeS10cnVuaworODc2NCA0ODlkYjM2MmNkNDhkMDgzM2E4YmE4OTAyOWE3NGE4M2M5YzE0MDM1IGxlZ2FjeS10cnVuaworODc2NSA1ZmE0YjEwMzNiMDZmYzE5NTFlYjU4Y2YwOGE1MzZmNTJiYmNiYjY0IGxlZ2FjeS10cnVuaworODc2NiA2NTQ0NjA0NGZiOGY3MTI5YmQ2ZWI0MGZhYTgyZjY1ZjZmNWQ3ZDVmIGxlZ2FjeS10cnVuaworODc2NyA0N2ZhM2RkZmIwOTBjOTViZWZjYjI3NjAzYzYyZjgyMjQwZDE5NjIyIGxlZ2FjeS10cnVuaworODc2OCAzZDYxNDc0YTE1NTBkODY1NDU3MzE5Yzk4MDdmYjFkNTNmMDZkYjU0IGxlZ2FjeS10cnVuaworODc2OSA4ZTMxZjFjMDdkYzViMmVmMDExMDRlYTlhYmIwMzY2MzI5ZDhjODRmIGxlZ2FjeS10cnVuaworODc3MCA2YzBhMjY1OGExNTYxMDhhMDRlOWUwYjMyYmI1YzlmOTdkMTgxMzc4IGxlZ2FjeS10cnVuaworODc3MSBhODRlZjBhNzExYmEwOTJiNzA4MjdmMDEzYTEwNjc1MDZjNTAyNTkyIGxlZ2FjeS10cnVuaworODc3MiBlYWJkZTg2ZDk3ZjA2OTdmMjU4YzliN2JjOGNmMjRjZTllYjNiOTNiIGxlZ2FjeS10cnVuaworODc3MyBjMGQ0M2Q2ZjUyNDBkZTdlOTkwNjZlODFkOTY1MjdiZWI5ZjBiYjJiIGxlZ2FjeS10cnVuaworODc3NCA1MDk0NzRiODhiMDFjNDE3YzMzOGMzODhkYTE0OGI3NmJmOTQzYzhjIGxlZ2FjeS10cnVuaworODc3NSBlYmQwOTk4ODk3MjFjNDgwOWFmMGZlNThlZDg4ZTA4ZmMzNThlMzFkIGxlZ2FjeS10cnVuaworODc3NiAwMDU0YTM4NDBhNzUyYTUzNzAzZDJjMWRhMTQyMzIzYWE2ZDJmMzEyIGxlZ2FjeS10cnVuaworODc3NyA0OTEwNWI5ZTk5NDc0NDc4ODMwYjU3OTg3MzAyZDU2ZWI5YWNhYzMyIGxlZ2FjeS10cnVuaworODc3OCBhNDMzNTJmMGUxZWU2YmFhYWZiYTg3N2IyNjkwZmQyMzg2NjRhZGRjIGxlZ2FjeS10cnVuaworODc3OSBhNjJkNmQwNjNjMGYwODk4M2EyNmU3MTE3NDZkM2YzZjQxYjAxZTBkIGxlZ2FjeS10cnVuaworODc4MCBjZjBlZmZjM2Y1ODVjNzg4YzhjYTA3MzQ1NjdiYTAyMTFiOTc3MWQ2IGxlZ2FjeS10cnVuaworODc4MSBiMzc4YTA4ODY2MjAxNTFlZGMzODg5N2Y3ZTdiYzRkMjMxNDhmOTMzIGxlZ2FjeS10cnVuaworODc4MiA2ZTFmYTc2ZTc5NDA3ZDI0M2FiZmQwNzliMzdjYTc2ODM5MmZiMmVjIGxlZ2FjeS10cnVuaworODc4MyA1OWE5ZmJmNTkxMjg2M2ZhYTBkMTc4NDkwNzFkZjI3ODhmZTZhZjk0IGxlZ2FjeS10cnVuaworODc4NCBlMWVhNGFkNDYxZjkyM2I5OTk5ZTBlODI4OWUzOTA4ZWJlMmRlZjA3IGxlZ2FjeS10cnVuaworODc4NSBlYTZlNTg3MTM2YjZlM2JiZDAwODFhODg0Y2UxOTJiNjhkZTA2NjdkIGxlZ2FjeS10cnVuaworODc4NiA5MDRhNGQ3ODNhMzM3MmIzZjIxZmQ1MGM0ZWI1MmE5NjUxODgxZDFkIGxlZ2FjeS10cnVuaworODc4NyBlYjUxMjhlOGE4ZThlM2Q3Mjk2ZTg3NjE2YmJmNWQyZGU2OTY0YmRhIGxlZ2FjeS10cnVuaworODc4OCAxM2ZiZDk4ZDgxY2MwNjFjNzM5NWIxYjcxZThiMzZkNGNlZjJmODdmIGxlZ2FjeS10cnVuaworODc4OSA3YmE3OWM5NDliM2E3Mjc4ZmFmYmUwYmU4ZWUyMThiYjllNzE4NjdiIGxlZ2FjeS10cnVuaworODc5MCBiOTQ1OGRjOTlkNTBhMGYxMzk0MDg2ZjgzOWE4YTA2ZjI3MTliZTliIGxlZ2FjeS10cnVuaworODc5MSA0Yjc4NWU1OWU4MzEyMjAwNTUxZWI3YzgzNTQ4ZGJlYWU5MmYyZTgxIGxlZ2FjeS10cnVuaworODc5MiBkMjU0ODljNWEyMmY0ZmZhZmRiMDdhY2Y4ZGU0YzE3ZGFhOWQ0NzQzIGxlZ2FjeS10cnVuaworODc5MyBjMjM1OTY2NWJlODA3MzBjZTEyYTdlZjZkMzI4NzNlMzc5ZjQxOWY3IGxlZ2FjeS10cnVuaworODc5NCA3MWI0MGNjNGNjMDM3MmYzY2RlYmUyOTk0ZmIwYmRlMTUwZjg4ODdkIGxlZ2FjeS10cnVuaworODc5NSBjZGM1YTQwZmNmOTc0ZTk0MmVlNmY3OTk0MWYyNDYyMDVhYjU0MDMwIGxlZ2FjeS10cnVuaworODc5NiBiN2YwYjk4ZjUzMjUxN2Y3NTM4NGE3NzJhYzY1N2VmNzljYTBhOWQ4IGxlZ2FjeS10cnVuaworODc5NyBhNzVjYTc0ZGVlY2FjYzg4YWI5M2UzZDAwYWY5OWFhM2IyM2I3OTI1IGxlZ2FjeS10cnVuaworODc5OCA5MTNjZDFmMzczYmU0N2I2ZTkzMDVmZWNiZTJkNjMzZGNjZDU4MzdkIGxlZ2FjeS10cnVuaworODc5OSAwNWQ5NDNjNDU5N2MyZGMzZWVmODhkOGVlZDQ1MTU4MzU4NTI0NWNkIGxlZ2FjeS10cnVuaworODgwMCAzZjhkN2Y3NGYxYmM1NDlhMzQ2YmMyZDBkZGJhYjU2NWJhOTg3YjMwIGxlZ2FjeS10cnVuaworODgwMSAyMGI1NjQ3YTA2N2ViZmVmZmY1ODhiYjU4YjcyNzM5ZDA4NmRiNjE1IGxlZ2FjeS10cnVuaworODgwMiA1Y2RjM2NhMDUzZDZlODEwYTU2NTU1MGZjMTI0MDJkN2E0ZmJmNzBiIGxlZ2FjeS10cnVuaworODgwMyBiMDE4Mzk5NDAyMWIzNzJmY2Y1MTNhMjg4MzEwNzM4MWE0ZTg3NjNjIGxlZ2FjeS10cnVuaworODgwNCA0YjQ3NzViNDliZmFjNDRiNjE3YTY0Y2Y5MmZhNDBlNjFhYjY4YWYzIGxlZ2FjeS10cnVuaworODgwNSBkZmVhZjk2NWY0OGFkMzJmMGJiMGU5ZTZjNTIwYWE5ZjI1YzgyMTc1IGxlZ2FjeS10cnVuaworODgwNiBmYmRjYTE3MjgzYzIzYmYwMDRjZWZmMjc5OTcyMzIxYzE3NWQ4MmRmIGxlZ2FjeS10cnVuaworODgwNyAxNzJjN2ZlYmQ3NTU3YTUwMGUzNjk3NzJhZmFlMmMwNTEzZTAwMDNjIGxlZ2FjeS10cnVuaworODgwOCA5NzljNzEyMzhlNWJiMmMzYzI0OGE5ZmYwOWFjMjhhNTI1ZjQxM2ZhIGxlZ2FjeS10cnVuaworODgwOSAyZjRhOTI1ZThiNGIyNDE0M2QzMjhjMjA2M2JiZTM0MWY4ZGZmNGQ4IGxlZ2FjeS10cnVuaworODgxMCBkZDEwMjc2NmVhNTEyMWJjYjMwMzIwM2Q4MGVjNmVlYzgzMTgwMjI5IGxlZ2FjeS10cnVuaworODgxMSBmYzFjMGEyN2JiOTYzOGE2ZTBkMTYwNTk5YzA3YTFhYWU1ZGY5NGNkIGxlZ2FjeS10cnVuaworODgxMiA1NzVmNmI5MTBmODhiNDE2YTc2ZTNjMzIzMDI2M2I1MGNjMTU5MjU5IGxlZ2FjeS10cnVuaworODgxMyBhNDJiMzFmZTk3NmY1NTQ0MWEyOWNkNDU5Y2Q1MGJlZWE1MmZiZjJjIGxlZ2FjeS10cnVuaworODgxNCA5ZTQyOTUxOGNiMjAxNzQ1MGRkMmRkYWM1MjBmYTJjNDllZDkxMWExIGxlZ2FjeS10cnVuaworODgxNSA0YjA3NmZjNWJhNDAzZWFhZDVkMDBmNDg5ODExNjg1NzNkMWNlNmQ4IGxlZ2FjeS10cnVuaworODgxNiA2ZjhlYjRhMWZhMDdlYjc5OTE4MWQyZjBjMDE0MmUzN2IyNmFlY2QzIGxlZ2FjeS10cnVuaworODgxNyA1OTNmNTQxMjk2NjE2YTM5YzhkMzkwYWRjNDI0Nzc4NmM1YTg2ZmExIGxlZ2FjeS10cnVuaworODgxOCAxZWQ5MTRmOGJmMGEwZmVjOGM5OWYyZWZiYTNmODkyZGQ1N2EzMTVkIGxlZ2FjeS10cnVuaworODgxOSBlOWVkMDY0ZjM5ZjUwNWNmN2I1MDlkZjc2MjUzYjE1ZDFmZjJhZDNlIGxlZ2FjeS10cnVuaworODgyMCA2ODlkZTYxM2VhMWNjYTI3MTc3OWIzZGYwYTIyZTc4ZGM4Y2ZmYTI2IGxlZ2FjeS10cnVuaworODgyMSBlNDA4N2NkNDBjODVkODAwZGJlZDM2ZGJjZjFmZDY4OGQ2MTNkODJlIGxlZ2FjeS10cnVuaworODgyMiA5OGRhY2M4OTczYTEyMDJmNjQyOGFlYzJmNDY5YWI1NDU5MmU4MjFjIGxlZ2FjeS10cnVuaworODgyMyBhNWYyOWE1NjBjMDlhMzM4ODQxYTdhN2QzMThlNTY4ZWRiNjcxNTI5IGxlZ2FjeS10cnVuaworODgyNCAyNjU2ZDFlZWE3OTIyZGI5ZjJkNTBkZThlYWZhNjRiMjhkNjIzMDM2IGxlZ2FjeS10cnVuaworODgyNSA2YTNiOWU3ZDQzYzEzNzdkMjMzZjM5OGQ3MDJlYjM1YjAyY2Y1M2Y3IGxlZ2FjeS10cnVuaworODgyNiBiNzMzMWJkMGNjZjU3N2NiOWE5YTYxYTgzMDkxMzRiMDYyY2U2ZGIyIGxlZ2FjeS10cnVuaworODgyNyA5YTEyMWIzZmJlYmJiYWYxYTVhNTE1MWQ0NWMwNDFiMTYxMDRiNWM0IGxlZ2FjeS10cnVuaworODgyOCAzODY0ZGYyOTQ5NzlhMDY5NjFmM2NiOTdkYWNlYzVlMGFlNzdmZWNjIGxlZ2FjeS10cnVuaworODgyOSBiNjJhN2E1OTQxNGU3ZjNlMGY3ODU1OTdlZGM1OTRmOTY0ZDU4Zjg5IGxlZ2FjeS10cnVuaworODgzMCA2NjZhY2NkNjY4NzhiNzY4MTAzYmM4MDFmMGE4YmVlNzkzODRlZWMyIGxlZ2FjeS10cnVuaworODgzMSBmNGRjYmMwMjdjZDIyZWU3ZWE0MWI3NjI2M2FkZjdkNTVhMGNhY2U0IGxlZ2FjeS10cnVuaworODgzMiAyZTQwZTI3ZjhiMjYwZmM0NzYwYjQ3MTNkMTk3NGJmZTQ0OTZiOGZhIGxlZ2FjeS10cnVuaworODgzMyBhODU3ZDJmODczMzY0YzBmM2U4Y2RjMmE5OTAwYjVmNDI1NTUyNDIwIGxlZ2FjeS10cnVuaworODgzNCAxNzRjMWJjYzhlMmQwZDgyOGVmOTZjODI4NjczZTc3ZWMyOWJkMjcxIGxlZ2FjeS10cnVuaworODgzNSA5ZTgyZGQ3NjI4OGU4ZjE5MzBhNDliZmMzZjhmYjJkZjczZDQ2NmRhIGxlZ2FjeS10cnVuaworODgzNiA3ZGY3OGY5ZDZkMzQ3Nzc3YWExM2E2YmI2ODllMzNjZDEzZTBlZjZlIGxlZ2FjeS10cnVuaworODgzNyBkNjRlODVlZDdiNDQxZGFkN2RmMjA2OGM1NjBjMmYyNzVmNzBkNjNmIGxlZ2FjeS10cnVuaworODgzOCAwZTdlMjAwNDk2MzcyOGEzNjUyZWVlZmYwZDQ3Y2ZlNGFiNzQzNTc4IGxlZ2FjeS10cnVuaworODgzOSAzMjY2MzI2N2ViNDA2MTk2MGMwNTg5ZTBjYmY4MjFhNGIzOGNjZjU5IGxlZ2FjeS10cnVuaworODg0MCAwYzc0Njg4YmMxZmZhNDkzNjBiOWY4M2E1OGJkZWVkMDQyMWUwZDNjIGxlZ2FjeS10cnVuaworODg0MSBmMzliZWUzZmYyMmJkYWMyZjFlMjJhZDliMDJkMjk4MWE4N2MzODc3IGxlZ2FjeS10cnVuaworODg0MiAyMWI5M2Q5ODkyNmI4MTVhYzllY2UyODRkNGI3YzY0ODJlY2E3NmRlIGxlZ2FjeS10cnVuaworODg0MyA3MWMzYmViMjk0OTk5ZGFhYWE4MmY4NDc1NjdiMDljNTAwZWVkZGY1IGxlZ2FjeS10cnVuaworODg0NSAyYzI5Yjg5ODI2NDMzN2QwMmEwMGY2ZGQ1ZDk0ZWU1OGE1MGRjYTY4IGxlZ2FjeS10cnVuaworODg0NiA5NGUwYjMxZmRmNWYyODMzMTU4ODg3MWZmMWRhYTI1NGM2ODFkOTdkIGxlZ2FjeS10cnVuaworODg0NyBmODIyNDA0NmNjZjhjYjMzNjI1MTRhODZjZTM5ZjlkN2E3YjVlYjE5IGxlZ2FjeS10cnVuaworODg0OCAzNjQwNTMwOTM5N2ZjMjY0OTA2N2I5MjhlMDJlNmJkMTFmMDMyNzMyIGxlZ2FjeS10cnVuaworODg0OSA2NzhhM2YxZDBjODA5YzcwMGJkMmY0ZjY0OTNkOTM3OGI5OTViZWUzIGxlZ2FjeS10cnVuaworODg1MCBjNzEzOWI2ZjczNDA2ZTFiYjI4ZjEwZjQxYmNjODEzNTBlNzdlMTMyIGxlZ2FjeS10cnVuaworODg1MSA0N2E5YTZkZTIzZmZjMjNhZjI4YzIzYzM4Njc0NTU0YWFjNzQwNjJkIGxlZ2FjeS10cnVuaworODg1MiBmNmVmOWFmNGM4Yjk1NGE1NWE3YjRmOGViYWVjZDE2NGM2NThkYzhlIGxlZ2FjeS10cnVuaworODg1MyBiNjgxODVkOTQ3NzdjMGQxYWUyYTQ5YmI0OTUwZGI0OTQ5ZGQwOWRhIGxlZ2FjeS10cnVuaworODg1NCAxYWZjYWM3NjU4ZTU3NDZlNDEzZDRiMjBjMzFlNjM0MTk2Y2U2M2M3IGxlZ2FjeS10cnVuaworODg1NSA0Y2IyMjNmMjkzMzc2ZmE3ZmYwNmQ2MGUzOTYzNmJkNzcyZTExOGFkIGxlZ2FjeS10cnVuaworODg1NiA4OTIyYzdmM2EyODU1MTE4OTcyMTMwMmM4MjJiZjYyZjFkMDUzOGY0IGxlZ2FjeS10cnVuaworODg1NyBiODNlYTJmZWYzMzJiMWFhZThhZDFiM2FiMGYyMjFjYjIxMzE2ZGUyIGxlZ2FjeS10cnVuaworODg1OCAzN2ZmNzFjZDk0MWViMDRlNzQzYmFlNWU2NWI0YmJkZGVjOTE1NDQ2IGxlZ2FjeS10cnVuaworODg1OSA0NDkwNDc2NGRhZmE4Yzc0ZDMyY2Y5NmQ1OTQ1NWMwZDlkYjhhZmMwIGxlZ2FjeS10cnVuaworODg2MCAxNmNkMzk4MDVmZDUxODdhYjZmODJmZmFiZDFmOTMxYjllY2U0MDY4IGxlZ2FjeS10cnVuaworODg2MSAzZjE5NTI1MzQzNjdiOTkxNTQ1MjQ1NjhmNzcwZTk1ZjM5MTcxNDUzIGxlZ2FjeS10cnVuaworODg2MiAyMzhhOGI2MDk2ZTFiYjFmMjdjNTQyNTkzOWExZDJmZjI3M2M2YjdmIGxlZ2FjeS10cnVuaworODg2MyAxNGQ1OGI1YTIxYzQwODY4YmMxYjkwYWM4ODk1NWQ0N2U1NTY4ZWZmIGxlZ2FjeS10cnVuaworODg2NCA1MDVmNTIwMTBmMmFmOWRmNDk2ZjVhZjZjNWE3NjYzM2U1ODgxZGQzIGxlZ2FjeS10cnVuaworODg2NSA4MzNmYjAxNDA5ZjM0OWE0Yjk1YzdiYmI5NjExNDM4ZGQ0MmRlZWUzIGxlZ2FjeS10cnVuaworODg2NiAzN2U2OGI0YTUzOTczMzYzMjBjNmViMTMxMjAzN2ZhMmVlNTJlNmU3IGxlZ2FjeS10cnVuaworODg2NyBiZGY0ZTI3ZjViOWUzZDEzM2VjYzJkNjk3MWYwYTQ0OTlkODllMjk4IGxlZ2FjeS10cnVuaworODg2OCBhMmRmM2M5ZTVmNDNhY2ZiZjQyNjZhYmNmMWUxZjQzMjllNGY5ZGE4IGxlZ2FjeS10cnVuaworODg2OSA3Y2JlZjBkNzRlYTM0MWFiMTgwMjM0MzFkNDdkN2I3N2M5ODRkMDIzIGxlZ2FjeS10cnVuaworODg3MCAyNGYyOTU4NmRlOTY5MDM2N2ZiMGQ5MjhkMWQ2MjJhYjU3N2U5MDdlIGxlZ2FjeS10cnVuaworODg3MSBmNmYyNTExYmI2YmFhMmY4MGM0YThjNWY0MjMzOGJhYmU0NzZjNWEwIGxlZ2FjeS10cnVuaworODg3MiA3ODRhMTZmNTY2NDM0NzQ4ODg4NjdlZmQ4MWE2ZmJkNDg0MmYzOGU5IGxlZ2FjeS10cnVuaworODg3MyAyMmRhZTI2MzdlMDgyZWQwNjg3OWU0YWNhZjhhMzVhNjZkMjMyNDRmIGxlZ2FjeS10cnVuaworODg3NCA2ZWE5MjZiNDZmOGFlYmJmZjBlOWQwYzhhMzgzYmM5NGNhZTMxODk4IGxlZ2FjeS10cnVuaworODg3NSA0ZDU1YmZlMWZlYmJlYzYzNjIxNjYxMmNkZDFhOWFlZmMwNDI2OGQzIGxlZ2FjeS10cnVuaworODg3NiA5ZWQ5ZWI0YTdmMjNhNGZmODE1Mjk3NjE1MjFkYzJkZjc0NTNjY2VmIGxlZ2FjeS10cnVuaworODg3NyBjN2ZlMzg5MGYxMDNlNjY0ZjA4ZDkzMDY3Nzc1ZWNjNTBiZGQyZmQwIGxlZ2FjeS10cnVuaworODg3OCAwNDkwZjZhODRkMzQ3NTE2OThlMzljZmMzYjg5ZjBjOGM5M2EzZDQwIGxlZ2FjeS10cnVuaworODg3OSAzMjI0ODc4YmQ4YjNhOGUwMTkwZGU4NzVjODdhYTExYmVmNDBkMWYzIGxlZ2FjeS10cnVuaworODg4MCA5ZjgxMzRlOTU1NjViNGE2ZTQxZThhMDg5ZDJiZjg4YjRhODMzNmE5IGxlZ2FjeS10cnVuaworODg4MSA5NDUyYjc3ZDY3ZWM5ZmEwZTZmMzMwMmMzMDkyZGE1ODA4YWVmMGY2IGxlZ2FjeS10cnVuaworODg4MiBlZDZmNmYwMzIyMTcxOWIyZjY2MGU4MGYxOWE5MDJiNTdlZWQ2MmM3IGxlZ2FjeS10cnVuaworODg4MyA2NTE3N2FiNmE2OTZjNTE5OWEwY2ZiYmRjZTBmNDBkNmQ3YmM4ZTFiIGxlZ2FjeS10cnVuaworODg4NCA4MTE1NGE1MWMxNmVkMmE2ZGVmZTE5MmJhMWUyYzVmZGQyNzE0MzMzIGxlZ2FjeS10cnVuaworODg4NSA1NzQ4NGUyMWUzMjcxZGIyZDljNGJlMzEyZTlmN2U5YWZiYjIwZDE1IGxlZ2FjeS10cnVuaworODg4NiAxODQwOTNkOTZkMmEyYmI4ZGNmYWEwZmNlYjg0NDkwYThlZDJmYjkyIGxlZ2FjeS10cnVuaworODg4NyA0YWRjN2U5NmFiYTI1MjhkNjcxYzRmNDk4NGY5YmNlMGQ2MTg1N2UxIGxlZ2FjeS10cnVuaworODg4OCA0MzkzODAwZjkyNjE1OTgxMjJiNmQ4ZjFlOWJjZjBlMjQzZjY2NDVjIGxlZ2FjeS10cnVuaworODg4OSAzODY1NWUzYWQxOTI1N2UzNWYxODRiYjNhNzAzZThjMzkzMWZlNTFhIGxlZ2FjeS10cnVuaworODg5MCAwNGYzZDI1OWY5ZTk5YWM3ZTg2N2FiM2E0YTIyYjM3ZTZhZWE3N2I0IGxlZ2FjeS10cnVuaworODg5MSBjMzc4ZTdhMDIzNGEyYTEwMzdiOWFlZWFjMWY0N2QwYzk0YjgzY2ZhIGxlZ2FjeS10cnVuaworODg5MiBlY2M1M2VhOGQ0ZWI2NWMwNjI0YzQ3ZjE1YWNmYThiOTllODY4OWU3IGxlZ2FjeS10cnVuaworODg5MyAyMzA4M2JkOGMyNjE4OTg3OWNmYzQxYjdhMjRkNjliMDhjMDkxOGYyIGxlZ2FjeS10cnVuaworODg5NCA3Zjc3NzEwYTIyZDBhNjcxZWVkZmYxZTM5OTlkOTA1YWRjYzU3MDU2IGxlZ2FjeS10cnVuaworODg5NSA0NDkxZjg0YWMyMjNhMTZlOTEyZmM3MDRjMTYwNmE4ZGJmM2I5YzIwIGxlZ2FjeS10cnVuaworODg5NiA0OGRmMDFlYWEwOWEyNDVlODI1NDA1MDVhM2YzODgwZGYzZWU0ZTg5IGxlZ2FjeS10cnVuaworODg5NyA2ZjA2NDEwZTMwN2FmNDUzNzVkOWNkN2JmMzAzNGI4M2NjZGMxNWMxIGxlZ2FjeS10cnVuaworODg5OCBhYmVkNzU0YzdiN2Y1YjEzMDljYjcwYjFkMDQ4ZDdmNjM3NTlmYTEwIGxlZ2FjeS10cnVuaworODg5OSBjNjJlMzRlYTQ2NGIyZDQwZTdlZDY2NDkwY2YyNjZjMjg3YzkyNmI0IGxlZ2FjeS10cnVuaworODkwMCBmYjliMGQyNDZlZjM0ZWJmNjE4ZjYyMDBlYjc1ZmIxM2I4YzQyMWMzIGxlZ2FjeS10cnVuaworODkwMSA2NDQ0ODRlMWEzN2I3ZWUyYmQ0MzVkYTljMGI2ZWZhNjY2NDE3NWZjIGxlZ2FjeS10cnVuaworODkwMiBhYWNhNDdlZjU1YThkNDgzZTkyOTViZGM4NWUxYjg2ZWFiY2MxZmNhIGxlZ2FjeS10cnVuaworODkwMyA1ZjAyMTYzMDJjZDhmNGM4Mzc1Yzc2ZDQxNDMyZWJkNjMyNDQxZGI5IGxlZ2FjeS10cnVuaworODkwNCAwNjgyNTRmZTU2MTdlNGJhZmIzMjM2OTBhOTVlOWQ3NmRiNmYyOWZjIGxlZ2FjeS10cnVuaworODkwNSBhZWU1NmU5ZDEwZmM5MzU5MmExYjM4YjVhMGQ1ZTExMjNiNzdlYjhmIGxlZ2FjeS10cnVuaworODkwNiBlMzU2YTM0NDgxOWQ3YTIyNjBkYjY5MWNlNGY4OGQ1NzEyNWFhNmU0IGxlZ2FjeS10cnVuaworODkwNyAxNGE3MTEyNjhjNTFiYjY5MzdiMTcwODkyM2ViMDlmMGEyNjFkOWQyIGxlZ2FjeS10cnVuaworODkwOCBlNzhiNjE3NGJlYzkyM2UwYTNlYjhhNzkyOWY4NTVkYjkzNmIyZTliIGxlZ2FjeS10cnVuaworODkwOSAwZGYwMTU5MDUxMDA4ZWI1MWJiZDk4YjUzOGMzZDAxOGEzNjYwNDY2IGxlZ2FjeS10cnVuaworODkxMCBjZTU2YTdjZmU5NmNmZDEwMWM2ZGIzMWU2Njk2ZjY2NzQyMTJiNDUwIGxlZ2FjeS10cnVuaworODkxMSA0MzU2MDZiMjE1YzUyYmFlY2ZlMWE0NGQwOTdiMmQyYWJhZmU0N2Y1IGxlZ2FjeS10cnVuaworODkxMiBjODNhMWIyMWM0MmQyYTA4NjBlMjI5ZmMwZmJjYWQ5ZjBjMzkxNWNiIGxlZ2FjeS10cnVuaworODkxMyAwNTNiYmFiMGVjNTNlMjExMjI4M2UxODkzNjc4MTA3M2VlOTU4NDM4IGxlZ2FjeS10cnVuaworODkxNCBlNTdjNzJhMmIwNjU2ZDFmYTBiMTFlMjAxN2M3M2U3YjI4MTg2MzkzIGxlZ2FjeS10cnVuaworODkxNSBmMzg0Y2MxMWI3NWJmMDYxMzI1ZDhlZTMwZDE0MzZmZTE0ZjYwNmFkIGxlZ2FjeS10cnVuaworODkxNiA5ZTQ2ZWNmMDNjM2U4MzMwZTkzYTFlMjc1ZTRjYjYzZTIwNWY1MWQzIGxlZ2FjeS10cnVuaworODkxNyBkNzc2MGExYmE0Y2E3NjllNjI0N2E1YzFmYzNjZDhlY2QxZTdmZWE5IGxlZ2FjeS10cnVuaworODkxOCA0MmJjNzkyYWM2OWZhZTU1ZmYyMzA0ZjQyZWU1NDdjNzkyNzhmZTMxIGxlZ2FjeS10cnVuaworODkxOSBkOWU1MTQ1MWViZGY5MzAyYzRjNjJmZDBlM2I4OWZjMjUzMzVlNjQxIGxlZ2FjeS10cnVuaworODkyMCBkZGZjZWZjMGQ4MjY4MDdlMWU5YTU4ZmY2M2EzYzBmZTc0YTJkOWRlIGxlZ2FjeS10cnVuaworODkyMSAxMDhmZmYyNTQ2MmQ1NjIyZGQ2YTc1ZTY0NDc5ODNmODYzZjBiNmE1IGxlZ2FjeS10cnVuaworODkyMiA5M2MwMTVlYzJkNTdjYWFmODYwZDM5NGZkNzJmMDQxNzdiMTE0NTQ4IGxlZ2FjeS10cnVuaworODkyMyBiZGU1YWFmM2U1ODk3NDRiMzRjYWIyYmM2MDE5MWY5ZGYzOWExODlhIGxlZ2FjeS10cnVuaworODkyNCA1ODAzNzgyZTczZmZiNzJkZmRkOGY5M2E1ZmJhYmMxNGQ5ZDZhMDUzIGxlZ2FjeS10cnVuaworODkyNSAzMWE1MDQ2ODM2NmJhZTM3Y2NjMTE2ZmE4MDQ4YjJhZTEzODU0NTQzIGxlZ2FjeS10cnVuaworODkyNiBiODU0Y2E0NjA1ZTEyMjk4MTQwYmIyNzBlMzVlYzdiNmM3Y2Q1MGNmIGxlZ2FjeS10cnVuaworODkyNyAzMzUwYzczNTUwZWU4M2QyMzA5MjZmN2I3MTk5MDk2NmI3YzhkYTFmIGxlZ2FjeS10cnVuaworODkyOCA3N2EyMmQ0OWRkODU4NWRlZWMyMWZkNTRkZWY1OWIyZGZiYWVjNmFlIGxlZ2FjeS10cnVuaworODkyOSAxMDQxMzE3OWE3MmE1ODkwM2U0NWM4NWNhZjBhNzEwNTliYWJiNGUwIGxlZ2FjeS10cnVuaworODkzMCA3ZWE0NjU4MzBlZjQ1ZGJkZDMwOWQ3YjVmY2Q4OTQzOTVjMTJhMWExIGxlZ2FjeS10cnVuaworODkzMSBjOWIxMzliOWM1ZmZmNTAzYzdmNWMwZDNjMGEzMmY2MGM5ZDdkNTI0IGxlZ2FjeS10cnVuaworODkzMiBiNWIzNWEwY2YxYWE5MjgyNjI2Y2E5MDllZGJhNDI5ZWZjZTk4MzdhIGxlZ2FjeS10cnVuaworODkzMyAyMTM4Y2YzYmRjNWFiODU4ZmIyNWI0MGFiZjRmNjI0Yjk1OTJmN2VmIGxlZ2FjeS10cnVuaworODkzNCAyYzVjMzk5YjZlYTQ2MzM5MmUyMzYzMTNhODVmYjdlMDI5NGM0ZTgzIGxlZ2FjeS10cnVuaworODkzNSA5MGVlZDlhNWQwN2E4MzU4ZDEyMTA0YWJiYzJhYjA4YzNiZDQ4YmJiIGxlZ2FjeS10cnVuaworODkzNiAzOTM0ODk3NGIyMmU4OTAwN2ZjZGJhOTQxZmMyOGRjNzgwZTk5ZGExIGxlZ2FjeS10cnVuaworODkzNyBiNjVlYjQ0NDIyYmE5MzIyZjc5MWE4ZTQzYWY2M2U0MDUzMjg1ZjgwIGxlZ2FjeS10cnVuaworODkzOCA3NzdhZTUyNjBhMTJmNWM4M2M3ZWI3MTQxZDhiZGE3ZTBjODYxOTlkIGxlZ2FjeS10cnVuaworODkzOSA5OTg2MjcyY2UyNGExNWM0ZWZhYmQ2ZjBkMzZlZjg5MDViZTJkNWQ2IGxlZ2FjeS10cnVuaworODk0MCAyMmJlZDU3OTQ1MTRjNjI3OTEwNzUxMzQ3MTkyNDcyNDQzMmViYjg4IGxlZ2FjeS10cnVuaworODk0MSAwYjJiY2YwNDI0YTA1M2E1NmVlMGNhNjhmN2VjM2RiMmM1NzYxOGRmIGxlZ2FjeS10cnVuaworODk0MiA0ZDU0NWNjNmZhOTljNGIwYWNkN2NhYzFhNGQzZmQ5MDU4NzJkMmM3IGxlZ2FjeS10cnVuaworODk0MyBjMTQyZWI1MzNmYjkwZjliMzIxMzQxYzcxNzU4YmYxZjI0YjA0OGFiIGxlZ2FjeS10cnVuaworODk0NCA5NDE2Mzc1OWNiMDIxYmRhNzc5YzYyZDEwNGMzODczZjM3YTE0NmNmIGxlZ2FjeS10cnVuaworODk0NSA2YTkxYTBmNjQyZmU3YjBhYzM2Yjc0NDMyYzYwMmI1YjlkYzhmNjdlIGxlZ2FjeS10cnVuaworODk0NiAxMDNjNjM5ODNjZGZhNGRiY2EzMDhkNWJiMmY4NjAyYWI4OWFhYjhjIGxlZ2FjeS10cnVuaworODk0NyBkY2E5YmRmNWVhMDhhODBjMWYzYTZjMWJiM2NiNjMzNTY3NDZiNDNlIGxlZ2FjeS10cnVuaworODk0OCBlZTRmMmIxY2VlZGE0YWFjMjZkNDQ0Mzc2MzA1M2YwZGU3Y2VhZDk1IGxlZ2FjeS10cnVuaworODk0OSBkZjY1OWUyMzllOTA2ZDliNjE2N2NmNzE3MjVlNjJiMDNhZjA5ZmJkIGxlZ2FjeS10cnVuaworODk0OSA3NDY2NTRhMGFmNjgwYzdkOWI4MTRiMjEwYTAyNmViOTFiZWM5NTMzIGxlZ2FjeS10cnVuaworODk1MSAyZWRlN2MyYWM5MmNmMWVlODllOGU1MjQxOWM4OTAxYjAzNGI3NTg2IGxlZ2FjeS10cnVuaworODk1MiBkMTUzMjQyYWE2YmIyZGMzYjFmYmVjOGM5YWUyYWU3ODU5NGY2ODFiIGxlZ2FjeS10cnVuaworODk1MyBmNWY3NDRlZDgxMzdjN2NjMzRiZmQxMThkNjVjNjIzZTZlNDE0MTYzIGxlZ2FjeS10cnVuaworODk1NCA3YWIwYjA1MjkzYWE0MjcyMGQxNTFjYTgzYzdlM2JkZWI5YTU1MTFlIGxlZ2FjeS10cnVuaworODk1NSBjNjdkODQyMWZhMjE2NjY4MDhhMjRjNjIzODc3ZTMzMmQ3ZTRjNTNjIGxlZ2FjeS10cnVuaworODk1NiAyOTdhNTQxZWI4NjU3NGMyMzI3YjJjMDIxOGQ2OTEzNGExZjBhOTcxIGxlZ2FjeS10cnVuaworODk1NyA1OGI0ZDllYThlNTEzODQyZjM0N2UzZDVhNDMyZjNlYmZjMTY3MjQyIGxlZ2FjeS10cnVuaworODk1OCA3MjdiNTIwMzEyMTI1NzdkOWVkNTE5NWY5NDdiZjBhZjAxNDcxNGQxIGxlZ2FjeS10cnVuaworODk1OSBjYjA1ZWEyYjYzZDlkMDAwMDY3YjVjMmUxNTcyZmUxNjNjNTA4NzM3IGxlZ2FjeS10cnVuaworODk2MCBkMzExYjY4NzU0YzE4NmU4Y2QzZGU3MDJiYjYzNDBhY2U5YTliMmM3IGxlZ2FjeS10cnVuaworODk2MSA1NjNhZTIxYjIwNTc4MzYzOWQ4NjE4ZjljN2E5ZmMwZDBkZjg5ZWI2IGxlZ2FjeS10cnVuaworODk2MiBiOGUyNjA3OGQ4YjFhZDM4ZjRhMmFkMTJiMGI4ZjRhNzZmNWRmZWQ0IGxlZ2FjeS10cnVuaworODk2MyAyZjI1ODE2MmFhZTJhY2RmZWQ3NmM1NmViYmIyYmRlMzY5MTk1ZGJkIGxlZ2FjeS10cnVuaworODk2NCAxNjE4MDYwNzE2ZTc4MTk1MjNiZjFjNTAyMTUxMmM4ZTEzNDRmYTU2IGxlZ2FjeS10cnVuaworODk2NSA2MzA3MjU4MDVjNjYyMmZmYzcyNGU4ODQwZTI3ZmZkMDE3NmM0Y2I1IGxlZ2FjeS10cnVuaworODk2NiAzN2M4ZDdmOTY3YzcxYzBkZTQxNGJhY2E5MmI3MWU5YWJlNjhmODgzIGxlZ2FjeS10cnVuaworODk2NyA0ZTFhMGZlMGFjZTI0ZjU2Mjg0NjEwMjU4MDY1MmU0NGExOTE2NjJhIGxlZ2FjeS10cnVuaworODk2OCAyZjlkNTlkYTcyZmI4NmY0MDRiN2EwZTQxNWMyNzRjMDA5ZWI0ODVlIGxlZ2FjeS10cnVuaworODk2OSBhZTc0YjZjY2VmNTdkNDM3Y2Y3Nzk2ODAzYWQ1Y2YwZmMwZDIzZDRiIGxlZ2FjeS10cnVuaworODk3MCAyMjJkZDRkMDY1ODEyOTRmMjI5NTY1YzQ0N2Y5YzQ5MWEyODNlOTZkIGxlZ2FjeS10cnVuaworODk3MSBiYjhjMzAwNGQ3NThlYzFiZTllZDczMTY4OWI1MGYwYmE1MDMyNGE0IGxlZ2FjeS10cnVuaworODk3MiAxN2UzZDliNmI0MmU4Mjg1ODEzNGMyYzQzYzA3YjY2ZGQ0ZDQwNWJhIGxlZ2FjeS10cnVuaworODk3MyAzOWQyYTRkYjdjM2I4MGI4MDM2YjM2ZmViZTZiOTIyNDBiNTVmZjAyIGxlZ2FjeS10cnVuaworODk3NCBjZTQ1ZWY0YzY1ZTkxYmU3YjI5YjVhMTM1Yjk3MTRhZjExNjFjN2M3IGxlZ2FjeS10cnVuaworODk3NSBiMzhhNzU1YjhkYjFjODdhZWUzMGNiMjI5ZGIzODQxNjJkNTUzNWI2IGxlZ2FjeS10cnVuaworODk3NiA0OTgxZmQyYjMyMTE0MDZhYmE1ZDE2ZTRjNGVjNGViY2I5Y2U3NzE2IGxlZ2FjeS10cnVuaworODk3NyA2YTA4YjYwZGU4MmM3MjMwYjEyZmZlZDA2NWQ4YzZhYTYxOWI1OGRiIGxlZ2FjeS10cnVuaworODk3OCA4NzkxMzBmMWZmNWZjYjEyMmM3Mjg1MDcyYTQ3ODZhMDQwODFiZjk2IGxlZ2FjeS10cnVuaworODk3OSA5ZWY5Y2FkZDk3OGM1NGE4MTJhOTY1YzViNTkzNzAwMDFhY2ViY2JhIGxlZ2FjeS10cnVuaworODk4MCAyYTJlNWI3MzFkMWM3NzYzMzk5OWExMmM5ODYyMDIxY2Y2NTIyMjQ5IGxlZ2FjeS10cnVuaworODk4MSA5OGIyYTBhMDkzYzlkNDljOTdkZDdlYTVkZGYzZjU5MjdlZmMzODBkIGxlZ2FjeS10cnVuaworODk4MiAwNzFhMGQzYTQ5YjlmOTBmNWMwYmYwZmJhZjBlZmY5OTY4NWJmMjQ5IGxlZ2FjeS10cnVuaworODk4MyBiMDQ5NGJiNTIwMTk5NGY5MTQ5NjY3NGY1ZTRjOWI0NDQyZTJkNzllIGxlZ2FjeS10cnVuaworODk4NCBkZjZkZmFhYzJkMGI1MWEyZWZkMTJkZmNkYzFkNTAxNTM0NmI3NDBlIGxlZ2FjeS10cnVuaworODk4NSBhMDAwNzNmMmUwODdhYjRjZTE3MjljMWIyMGI4YTQ2ZGIyYWZhNDc2IGxlZ2FjeS10cnVuaworODk4NiA4MDczNWZjYzM1YWZmYjcyODE0NGY3NjZlYzFjNTRlNGJhOTZhNzZjIGxlZ2FjeS10cnVuaworODk4NyBmMDIyYmJkMTIzMzg2ODAxZDFkNDY1YTE4YjcwOTQyOGE4OTM5M2M0IGxlZ2FjeS10cnVuaworODk4OCA3NDUxOGQ4ODJlZDMxYWU5NDM1YTJiZTExN2U3NGI5NWFlYjdhM2NhIGxlZ2FjeS10cnVuaworODk4OSBmZGI3NzYzNmMwNzQzMDJmMDZhNTgzNDQxMzUxZDc5ZTIyNDczNTMxIGxlZ2FjeS10cnVuaworODk5MCBhM2RkNTkxMDgxMTk2YTJiY2FjYzNmNjRiZTIwOGI5ODYzOGM5MGU3IGxlZ2FjeS10cnVuaworODk5MSA2YzVmN2U3NGZhODgwMWZlOGNlODEyMjY0MGM1NDRiNzY1MWNhNTMwIGxlZ2FjeS10cnVuaworODk5MiA2ZDljZmI1M2M3ZWQyYzJjZGY0MjkwZDgxYzM5M2Y4MzM4YjNkMzM5IGxlZ2FjeS10cnVuaworODk5MyBlY2NkZmQxNzI3NDA2MTFlYjE1YjVmMDU0MTRkZDZhOGQ5NTA1NDg3IGxlZ2FjeS10cnVuaworODk5NCA3ZTUxNzI3ZDNiN2VmM2U0MjMwNDUxZGIzYTlhNGQ5MDdlYmVkMDdiIGxlZ2FjeS10cnVuaworODk5NSAxZDMwZTUyZGMzNGQ5YjQzNTcxY2UyYjI3MDIxY2E4OGU0NjM0OTQ5IGxlZ2FjeS10cnVuaworODk5NiAxYWZmMTk3ODNkNzQ2ZjFiNzNlOTY3ZWMxYjVlYzljOGU1YTA4OWVlIGxlZ2FjeS10cnVuaworODk5NyAyNGRhMDM1Y2ViNmViZDFjODVjODJhYjExNDMzOWUxNTRlODc1YmE2IGxlZ2FjeS10cnVuaworODk5OCBmMWIxNzI4NDUyYzEzMGIyYjU0NWNmMDc4YmVlNWE1YmVhZGMzNzk1IGxlZ2FjeS10cnVuaworODk5OSAzZjg0NTU4YTI0ZGQ4NGZmMmYzNDgxMmViN2JlMzUxNDVkZDYxODhiIGxlZ2FjeS10cnVuaworOTAwMCA5NjE0ZmRkODEzOTM2ZWNiODhiMTQ1MzhkZDY3ODcwNDU1MWYzNDVjIGxlZ2FjeS10cnVuaworOTAwMSBlZTQ5NmVmMWNhODM5OWI3MmYzZWY0ZTBmNTU1NDJiNjViMDkzZTYwIGxlZ2FjeS10cnVuaworOTAwMiBlOWM2N2MxOTJjZGI2Njc0MmQxMzkwZjI1OWE0MGU5Mzg1YmE3ZWJkIGxlZ2FjeS10cnVuaworOTAwMyA1Y2NiMTJhZmZiNTRjMGM3MTY5MTk4YjE0ZWMzOTEzMTk3MDFjMTU1IGxlZ2FjeS10cnVuaworOTAwNCA0NmZhNDcxN2NmMjRhY2I3ZmNjNTdiOThlYmJlODU0ZGRhMzY0YTM5IGxlZ2FjeS10cnVuaworOTAwNSBiYzE5MDAyNDNlMzM5YTBmZDJmMGUwMmQ1M2I3OTY4NTU3YWIwMzRmIGxlZ2FjeS10cnVuaworOTAwNiA3MjNjODk4ODMxODgxZDA3NWQwODI5ZWU5MTY1ODRkYjUwN2NhNjAzIGxlZ2FjeS10cnVuaworOTAwNyA4OWUyZWFhY2ZkOTAwMGFkZDcxYjhmMWFjNzc3N2Q5N2Y5OGYzNjFmIGxlZ2FjeS10cnVuaworOTAwOCAwY2QxZjJmMWQ4MmQxYzk1ODM3NWRjY2Q2ZDY1OWQ0ZjhlZTY4ZjI3IGxlZ2FjeS10cnVuaworOTAwOSBlNDk3YTdmYzBhYTg1NmM4NTg0NWZiMDE3MDYwODI4OGQ2OTNiMGNlIGxlZ2FjeS10cnVuaworOTAxMCBkMzY5NjI5ZThjMjdjMGEzZGQwYjhmZTAzZmQ5YTEyOWJmNWMwOGZlIGxlZ2FjeS10cnVuaworOTAxMSBiYTY1MzcyNDA4ZGRjNmJiZGUxYTJkZjM1ODNhYjgwMTBmYjU3YmMwIGxlZ2FjeS10cnVuaworOTAxMiAwODY0YTU1NjZkODlhYmRkZDVhZWFlMWY2MTA5YjgzY2M3YTBhODZjIGxlZ2FjeS10cnVuaworOTAxMyA2NGM1ZWZhOWQyYzRlNGMwMGZlZTkyNDY4OWVjY2M2OTljYjczYjA5IGxlZ2FjeS10cnVuaworOTAxNCAxODcwMzUzOGFmNDgxODE3MTgxOTQ3MjNlNDU3ZTAyZjdjYmEzNjNlIGxlZ2FjeS10cnVuaworOTAxNSAyNTUwNWU1NjNiMzdiNzJmZTk3YmFjMjMxNDc1NzYzYTA5MzMzNDEwIGxlZ2FjeS10cnVuaworOTAxNiBhMWEyYjcxMTU5OGNkN2FhZTFiMjU1N2U3ZmJjODUzYzhmMDI4NmVlIGxlZ2FjeS10cnVuaworOTAxNyBkMWY0NmEwOGQ3OGE4NmQyYzU5MTFmNjgwNjhhMTg3YWVlNWY2YmUzIGxlZ2FjeS10cnVuaworOTAxOCA4MGZjMGE5MDY4ODUyZWFlZjhlZjJiMDJhYThhMjdlMGNhOThkODhjIGxlZ2FjeS10cnVuaworOTAxOSBiMmRmZmYwNjc4OWM2ZGY3NzI2NzJkZjM4ZWZiZGE4MThhYTE1M2EwIGxlZ2FjeS10cnVuaworOTAyMCA2MmJkYjFjYmUwZjU1Zjk3NWI2Nzc4MGQ0MTk3MDBiM2NkNDY1NzVlIGxlZ2FjeS10cnVuaworOTAyMSBmYzMyN2VjMTVjN2VkZTJkZjdmYjZkZTMyOGJjZTAxYTc5N2UxMWMzIGxlZ2FjeS10cnVuaworOTAyMiBkMjg5MzJkNjc2YzhiOWU0YzU4NWRmY2FiOTkxZmM0YzVkNmEzOTBkIGxlZ2FjeS10cnVuaworOTAyMyBiNDUwMzIyODU4M2M0YjQ2N2IzYzUwNWE0ZmJkM2Y5NWNiNDk2Mjc1IGxlZ2FjeS10cnVuaworOTAyNCBjOTE1Yzk0ZWJiNmJmM2E4YTAyM2ZkMDQ1YzJiNWZhN2JiOTk2OGFhIGxlZ2FjeS10cnVuaworOTAyNSA3MjQzODJhZjUzMzliOGUzZDBhMDY1MTRiZDdmMWY4Njk2MDZiNDQ4IGxlZ2FjeS10cnVuaworOTAyNiBkZDFlODMzMjNjNDVmZGUxNzA4MTY5NzU2YjdkNzU0OTk3NTc2YTJmIGxlZ2FjeS10cnVuaworOTAyNyBhOGUzYjJlOWY1ZDIyODBjMjE0Y2QyYTVmOGE1YWNkNTkxNWQ1ZDRmIGxlZ2FjeS10cnVuaworOTAyOCBmNDA2ZWMzNWJmY2E2OTc3Y2E1MmVmYWZhYWYwNTE1ZTY2ZDdlODc4IGxlZ2FjeS10cnVuaworOTAyOSBiZGQ0Y2IyYTgzYjU3NTAxN2U1NDNiODNkNGQ2NDRiOWJiMmRkOTUxIGxlZ2FjeS10cnVuaworOTAzMCA1ZGJmZmM3ODQ0ZjU1YTllYzAxOTcwYTBkYmZlNDNmNDYzYzg5ZTBjIGxlZ2FjeS10cnVuaworOTAzMSAyYzZmMmQ5MmIzMTUwODg4MmExN2M0MDEwMzFjYzgyNmI2NmRhZDliIGxlZ2FjeS10cnVuaworOTAzMiA3YzljNGY4MjI0YzhiMjA3NGJkMmFkOGEwNDliOWZmNzA1ZmJjMzg0IGxlZ2FjeS10cnVuaworOTAzMyBhNWY3ZWI4NjlmMjFjMzMyOTI5MzUyZjM0MzZmNDhmNjU5ZGM1Y2U5IGxlZ2FjeS10cnVuaworOTAzNCA0MjgwYjI3MjljY2VjYjA5OWIxYzljNDVmYmUxNmU5N2Y4N2U0NGVhIGxlZ2FjeS10cnVuaworOTAzNSBiMzMxY2Q0N2UwYmM3MTE3MDBlZWQ4ZWE4OWYxNDZhNDFkZmI2ODM1IGxlZ2FjeS10cnVuaworOTAzNiBlZTMwN2Y5ODQ1YTMyNmNiNTM1MDI2MTJlNjc1ODRhOWJmMTgwNGQzIGxlZ2FjeS10cnVuaworOTAzNyAxYTIzM2JlNWZjMTdhNjg2ODA2NTQ2YWY0ZDY3YWYzMmE3N2FkZmY5IGxlZ2FjeS10cnVuaworOTAzOCA2ZTlhYTkyZmFiNjkyNzhmYTIxMzg2NmIxOTRlMGEwOTAxZWUwNjY5IGxlZ2FjeS10cnVuaworOTAzOSBmZDJkNGMwYWU2NDY3MmI5Nzc4NGMzODY2ZTdlMzVhNWRjMDAyMzExIGxlZ2FjeS10cnVuaworOTA0MCA1MzgzNTA0MzUyOGM4YjZmMTA3MDM3NGE4MGE4NGEwNDU5ZGRiMGJlIGxlZ2FjeS10cnVuaworOTA0MSAyYWExM2MwYzhmMmY2NjA5ZTdkNWEwNmNjN2U5NmY0ZjVmMTZhNjZiIGxlZ2FjeS10cnVuaworOTA0MiA4MTJhYWQ4YzA1YzI5MTQxNmY3ZTBlY2MzY2I3Yzk1Nzc0ZmRhZDhiIGxlZ2FjeS10cnVuaworOTA0MyBlMWM4ZDcxODJkNjY3ZDJjNWFhNjJhOTVhZTk5Mzg3MDkxMGEwZTVmIGxlZ2FjeS10cnVuaworOTA0NCBiZTJhMDIzNWFlODRhNGU0OWM3ZjY4MTgwNWRjNTA3ZDdmMjVhNGViIGxlZ2FjeS10cnVuaworOTA0NSAzZmRkNzE1ZTZlZjkwNjFlYjQwMGM1ZGI2YmEyN2U0OTdkMTBiYmQ0IGxlZ2FjeS10cnVuaworOTA0NiBhMGI4Mzk2NjdkMmUzZmM3NDMzN2QyNGM4MzU2MDhmZjhiOGJiOTg5IGxlZ2FjeS10cnVuaworOTA0NyBjMWJhYzUzNjA0NWZjZGI5NGZhZTNhYjg5OTE0ZDdmZmVhNGM2M2EwIGxlZ2FjeS10cnVuaworOTA0OCBiMTE3NDA0NWJjNGFiNjc2YTc4MjRmM2U2YWUzYTM1MmFjNTdmOTczIGxlZ2FjeS10cnVuaworOTA0OSA4YjE0MzEyYTAyOTAzNTlkZGQ5NzJhZDQwNGQzZWI3ZGM2ZGY1MjlhIGxlZ2FjeS10cnVuaworOTA1MCAzYjcyODc4NjcyY2QyZTJjMzIzNWQ3MzExNjI4MTc0ZDA5YjM3MjAwIGxlZ2FjeS10cnVuaworOTA1MSA2N2EyYWZjZGQyMWMxMDJkNTAzYjgxODJiYzFkNTFlNzk4MTdlMDFlIGxlZ2FjeS10cnVuaworOTA1MiA2ZmZhOWNiNjU0ZTJiNGZjYzJjZmU1NTA0MmQ3NTUxMzAyNTE1N2ViIGxlZ2FjeS10cnVuaworOTA1MyAwMGRhYjc1YjllZjEyZTE4MGI3NzNlZjM4MThiYWM0NDAwMWE5MzA2IGxlZ2FjeS10cnVuaworOTA1NCBkMjljNGIyZjQ5YWUyNzIyYjA2NGI1Y2ZkM2M4ZDZjMDc3MjQ0MThkIGxlZ2FjeS10cnVuaworOTA1NSA4NTU5Njk5MGRiNDNmOTlhMzllNmM2ZmVkZjAxNDRkYjgyMTY5OGE4IGxlZ2FjeS10cnVuaworOTA1NiAwMWVlNTYwN2JiMzVmNDU4MjQ2YjNjNWMxMDU3ZTcxNGYyNzkwZWEzIGxlZ2FjeS10cnVuaworOTA1NyA5MjFkMTdjYzI2OTJiMjkzZmYxY2JhYzU0YWM0M2VjYWIxMjQxMmIxIGxlZ2FjeS10cnVuaworOTA1OCBhMWQ4NWMwY2FlNWE2ZWRiNTVmNGIxYmVmMWRjNGRjYWY4ODMwMDY1IGxlZ2FjeS10cnVuaworOTA1OSA5ZTA3ZDViNjllYmFlNmE4ODI5ZGYzYTk2YzYwMmNlYzU5ZWU3NTM0IGxlZ2FjeS10cnVuaworOTA2MCBmOTZlNTdlNjk4NDZmMDc4ZWQ2NDk1MmY3N2E1YzljZDQ4ODk5NzllIGxlZ2FjeS10cnVuaworOTA2MSAwOGRkZTVlNWNjMjc0YWJmNGNkZTM4ZDFiMDY2MWYyOTEzZDYzMmQwIGxlZ2FjeS10cnVuaworOTA2MiBjMjY3MmU1YWJhOGI3OWY0NzBlNDY0OGRhODA1YzI5NWQ3YjkwZjE0IGxlZ2FjeS10cnVuaworOTA2MyBjNTY1MjcyZWQyYzc0MDdmODBhYTIyODFiOGNjNzY5NGI1MjZkYTU2IGxlZ2FjeS10cnVuaworOTA2NCA3NTMwNzdmOWViMmM4YTI2MDUxNjI2OWExYWQ1OGZmYzcwMTQzM2Y5IGxlZ2FjeS10cnVuaworOTA2NSBlMGU2NjdiYmM5NzFhNGZmNDUzYjIwZjcwY2M3NzFhYmRkN2U3YmE2IGxlZ2FjeS10cnVuaworOTA2NiBkYTAwYmI0OTcxZDhmNmYzMTMzZjkxOGEzNzI0NjBiYzk5ZjA2MmQ2IGxlZ2FjeS10cnVuaworOTA2NyAyMTkyYjkzZDUzMzdlNThiMWIyMjdmOTJkOWE0YjYzMTJlZGRlZTk1IGxlZ2FjeS10cnVuaworOTA2OCA1MTYyNDBlZjBlMTUxZGMxMzc5ZWI1MDhmMTRmOTA0YTQxYTUwNTNkIGxlZ2FjeS10cnVuaworOTA2OSA4NmI2NzcwOWMyYjQwMmNmMmQ1OWVjODcyZDk1MDY4N2MxM2MzZWIwIGxlZ2FjeS10cnVuaworOTA3MCAxNDAyNWE0Zjc5M2VjNWVkMTQzZTY3OTkwMDBhYmE2NmM2YzRhOTkzIGxlZ2FjeS10cnVuaworOTA3MSBmY2Q4ZTM4YjliMmFmOWYxMzlkYmJhMDQ3Y2M1YjQ0OTE3N2YwNGEyIGxlZ2FjeS10cnVuaworOTA3MiA0NWU4NGJlNmQ2NDA1YmRjMThjNjQ4MTYwYmQ3OWE5YWY3M2VmYWU3IGxlZ2FjeS10cnVuaworOTA3MyA1ZTBiMTUyYmYxZTY1YjFhOTQ5MTdlMDg1ZGQ5NzU3NmY2OGQxYzRiIGxlZ2FjeS10cnVuaworOTA3NCBmMTVmMGZjMzhjYjE5ZDc3YzJkYjMzZTEzMjMzY2RlYzRjYmEzOGYzIGxlZ2FjeS10cnVuaworOTA3NSBiODhmZDM4OTRkNWE0ZDM5YjU0ZDMzZWU1OTJjY2ZmYTRkMjcwNDliIGxlZ2FjeS10cnVuaworOTA3NiBjZWVlYzhjYjBhMWU3ZjVjNjk1NDRhNzNlMzEyYzdjZGU1Zjg3NDMzIGxlZ2FjeS10cnVuaworOTA3NyA2ZDZmZWMyZWVlZjZhODAzYTI2YmM5MTAwNmNmYWY2ZDIzMGZkYzA1IGxlZ2FjeS10cnVuaworOTA3OCA4M2NjZjQ0YmYxOTUzZjk0NGE1MGRkZmMzYTBjMDkxNDk0ZDgwNjI4IGxlZ2FjeS10cnVuaworOTA3OSAxZTQyOGY1MWVkNGUxM2M5NDFkYTJiZjE4OWYzMzM0MTJjOWE0NjY5IGxlZ2FjeS10cnVuaworOTA4MCA0NTE0YTVlYTNlYzQ2NDQyNTZlZWZiNjU1ODliZTM2MzI3NTQyYTE4IGxlZ2FjeS10cnVuaworOTA4MSA3YTBhNDhkNzMwNzZhODE0NTlhNzIzNTM5ZjU0Y2RmODM3YmMwNjlmIGxlZ2FjeS10cnVuaworOTA4MiBmNjdhNjMzOWVkZTc2ZWQ4ZTdmNzExYzVjNDJkYjNlODE5MTc3M2JiIGxlZ2FjeS10cnVuaworOTA4MyBkYmI0NjFlMjczYWRhYTU5N2RhYTM4YmRlNjAxMGZkNGQxOGNiYjBmIGxlZ2FjeS10cnVuaworOTA4NCBmNWI1NTMxMWU3OWRhZTg1OTRlNTUzNmZhYzNlZDQyYjk0ZDEyYzJhIGxlZ2FjeS10cnVuaworOTA4NSAyZjQ1OWViMjNhMGVmMTlmZjZhYTVhYWUxNjlmNWYyMzI2YzVlMzIwIGxlZ2FjeS10cnVuaworOTA4NiBmMWUzYTNmOGE0NmNkZjJlMWRhMGI3Yjc4MzJlNTBkNTlkZDZlODQ0IGxlZ2FjeS10cnVuaworOTA4NyAwMjNlNWFiMGY4N2Q4Yjk4ZmVhZDdkYjc1NTI3YzU1NGUzZGJkNTY3IGxlZ2FjeS10cnVuaworOTA4OCAyMzViYzZmOWUyMzdhNjgwNWZiNWZlMmE3MjBkZjI4NmRkZmFhMzc1IGxlZ2FjeS10cnVuaworOTA4OSBlNmI5ZDIxYzhlMGMwNjhjZmQ1OGNlOGUyODQxZjdmNzdhYjk2NWQ5IGxlZ2FjeS10cnVuaworOTA5MCA0YjJkOGRjOTJkYjRjYWMwYzE3YzI0NjA1NWI1ZThlYTNiNmJhZWE2IGxlZ2FjeS10cnVuaworOTA5MSAyZTg3NGE1YTkxMmYyZTFhZTk3MTk3MDU4NWY3YWU1ZTgwYzc3NWE0IGxlZ2FjeS10cnVuaworOTA5MiBlMmJjYWE5NmM5NDA4NDFjZGNiYzI4ZDNlNTFmN2Q5YzRiMzMwY2NmIGxlZ2FjeS10cnVuaworOTA5MyBlNTRkNTE3MTkwMmU2YTAxYjhhMWU5ZDc0MmE5NjFiMzEwOWI1Y2FkIGxlZ2FjeS10cnVuaworOTA5NCA2ZmU1YTUxZmVhMzAzZGQ2MDhkMzA5MWI5ZDUyMjhmNDczNzkwZjM3IGxlZ2FjeS10cnVuaworOTA5NSAyZjBiN2JhYzIwMWM1YTJhZDQ5NTU3ZDVlYjA3NWU0MjdhMWY1YmFjIGxlZ2FjeS10cnVuaworOTA5NiAwNDMxM2Q0ZjkzZmY3MzMwYmFiYWJjMzZiMDNmZWY2MzU4Y2I3YTg5IGxlZ2FjeS10cnVuaworOTA5NyAzYzRkNjI3NTQ2NWU4ZjM5MGE3YmMyZmMyZmE3MjEwMTljZmQxNmNkIGxlZ2FjeS10cnVuaworOTA5OCAwMGIxYjc3YzQxNzdjYTBlYjI2YmIyM2E1ZGVhZWJjY2JiMTM5OWFmIGxlZ2FjeS10cnVuaworOTA5OSBiOTZhYWQxMmExNTBiYjZjMzAwNGI0ODVkOWNjZjAyOGZkMmJlOGI1IGxlZ2FjeS10cnVuaworOTEwMCBmMTQzNDhmNzU3Yzc2OTk4OTgxMjBkZGEyNmVhOGExYTE0NmIxOGFlIGxlZ2FjeS10cnVuaworOTEwMSA4MmQ2Nzc0ZGEwYzY5NzFlZWE2NGNmYWEzNzYwNjYzNWYwZDg5ZmVlIGxlZ2FjeS10cnVuaworOTEwMiBiZTA3OTIxZDk3MTMxZTcwNmJiMWIyNWQyNDA5MTc1ZjhjNTRkMGJlIGxlZ2FjeS10cnVuaworOTEwMyBmODhiMGMyNjA4ZDgyZWMxYmI3OWM0ZGMyZTllOTZiNTM5YTI0NjNmIGxlZ2FjeS10cnVuaworOTEwNCA1ZTMxZDM4MWZhNDdkMjVjMGIzNzVhOTAzMjY4ODA4NGQzOWQ4ZDk4IGxlZ2FjeS10cnVuaworOTEwNSBhODM5ZDNlZmFiY2U2ZDYzNzkwMmUxOTZlODU4NGFmN2MwZjFlYzdmIGxlZ2FjeS10cnVuaworOTEwNiBlOTZhODE2NDdmOWM3ZjM0Y2MxMzdkNDk5NTNhZWQyMjE3NzQxNWYyIGxlZ2FjeS10cnVuaworOTEwNyBjZGZlM2I3ZDcxODdkODNiYjQzN2NhYTAyZjQzN2I3Yzk3MDUxNTI4IGxlZ2FjeS10cnVuaworOTEwOCA4ZjRkODlmMGYzMzZjODMzZDU3NWJkMTY2ZTQ0ZmExZjBiN2Q3NGY1IGxlZ2FjeS10cnVuaworOTEwOSBkNTE1MWI3YjlkYmNmZTllNGJmMTNjNzE3M2MyMzhhY2ZiNzlmNzcxIGxlZ2FjeS10cnVuaworOTExMCA1MmQ0MGNjNWZhMDhjYzViOWRlMjEwYWU4NjY3OTAwOWQzYTVjMDczIGxlZ2FjeS10cnVuaworOTExMSBkZjJhMmU0M2JlMThjZWIzZjAxYzdhZTczMGRkNDljMWJlOTE0ODhlIGxlZ2FjeS10cnVuaworOTExMiBlY2ZiYWQ5MDYyMzE0MjBhNGE5YzViOWJhY2VlMWQxZTY3Zjk3YjcyIGxlZ2FjeS10cnVuaworOTExMyAwMmY1OWNiMjg2ZmFhM2FkZDRhY2U0NGVmYWY5ZjcyODljNmZhMzU0IGxlZ2FjeS10cnVuaworOTExNCBmNDA4MjdiYWFiODExMmE4ZTE1MjRlNjEyODEyODNlZDA3NTg1NTFiIGxlZ2FjeS10cnVuaworOTExNSAwMzM5MmMyN2JmOTY4YmZkZWRjMzhjMWM1NTU3ZTQ0MTFlNDRhMzIwIGxlZ2FjeS10cnVuaworOTExNiBlNmQ3ODY5NThmYjMwN2ZmNWE3NTIwNjA2Zjk3NjA0MzM1ZDg0MzMwIGxlZ2FjeS10cnVuaworOTExNyBkYTY2MmIzNDVjODc2MDJmNjZhZjYzZWU3MmFkM2I0ZThmZDdhMThkIGxlZ2FjeS10cnVuaworOTExOCBmOTAzNTFiMTU4MWIyZGYxODQyYmI1YjdmZjkxZjE2NzM0OTVkMmRjIGxlZ2FjeS10cnVuaworOTExOSBhYzRiNDQ0NzM4Njk0M2Y0NjMwZGE0YmIwZjdhODQ0Njc4MzcxNTg2IGxlZ2FjeS10cnVuaworOTEyMCAyNTE4YWM5MjUxZjBmYzJlMjY1MDI2YjQ5YzQxZDJhMzJlODIxOWIyIGxlZ2FjeS10cnVuaworOTEyMSA0MTIxNzA0NTEwNjMwZTAzNWRjOTc1ZjYzMGFlZWJiNDMwNDdjNDYzIGxlZ2FjeS10cnVuaworOTEyMiBlMWQzNTY1ZDJiN2E0OTI1MWU2ZTEyMDc3ZjYxNDNiMDVkNzM5N2Q5IGxlZ2FjeS10cnVuaworOTEyMyBlODY4MWVkYTA4NTQ5NWQ0MTgxZmQ0NmI3MTU3ZGQ3Y2RhZGZhNGQyIGxlZ2FjeS10cnVuaworOTEyNCAxZGE5ZjYwMjc5YzkzMzAyMTAxZTMyMTQ4OGIwZDg1ZDFhNTkzOWJlIGxlZ2FjeS10cnVuaworOTEyNSBhN2VhNzRhMjc5OTM2OTM4MTViOGQ3MjAxMjdlZGJjNGNkNDhmMzI3IGxlZ2FjeS10cnVuaworOTEyNiAwZjI0OThiODQ3YmZjYzQ5NmE3ZWYwNGJjMjAxMDY3MTA1MWMxZTIyIGxlZ2FjeS10cnVuaworOTEyNyAyMDU4OWVkM2U4YmRlNWZmNWM4MmExNGQwM2YzNDJjYTJjNTJhOTJkIGxlZ2FjeS10cnVuaworOTEyOCBmNmJlOWI1YWRiZGI3ZDY2NzcyOWVhMWQyNDBkYjIyMGMyODE2MmM3IGxlZ2FjeS10cnVuaworOTEyOSBjZTUyODhlYzM2ZDAyNTVlNWMyNTE0YjAzYjUxMGQ3NTc3ZTM3MzQ2IGxlZ2FjeS10cnVuaworOTEzMCA1ZWFjMWM4ZGIwNGY2NDE4N2UxMWU0NTNjNWU5OWI0NmMzMjNkYzhhIGxlZ2FjeS10cnVuaworOTEzMSBjNmMxZDEzMzY3N2E3ODU1NWQ5NzA3NmIyODUyN2Y5ZjZjYzM3ZmJmIGxlZ2FjeS10cnVuaworOTEzMiA2ZDk4Yjk2OWUxZjY3MDk3MmRkODRhNzNjMzEzYjliMWE1ZTM5OTIyIGxlZ2FjeS10cnVuaworOTEzMyA0NjZlODdiMTQ3NjcxZjljMzAyNjAwMTJmZjM3NjBkYWNjMzBmYWRkIGxlZ2FjeS10cnVuaworOTEzNCA1MjMyOWExMTNlMGZhM2VmMGY5NzYzNjMzNjZlMmM2Y2E5NDUzYzE5IGxlZ2FjeS10cnVuaworOTEzNSBlNDk5YzdkYmZkZjM1OWE0ZTgyYzVlZTA1MGIwM2JiM2E2MTg0MmJhIGxlZ2FjeS10cnVuaworOTEzNiBkZWFkNmU3N2Y0NjQyOGVlYTRlMWUyMzI5MWI1M2FlMDNmNWViYTY4IGxlZ2FjeS10cnVuaworOTEzNyAzMzRjYmZkNTFkYjNhZWNlMGRmMTQ2MzU1MmQxODJmODJlZWVmYzhiIGxlZ2FjeS10cnVuaworOTEzOCBiYjg2YmI3NmQ2MWRhM2MwZjA2MzBjZWE0MjFhYjVkZmY2MmM1N2FkIGxlZ2FjeS10cnVuaworOTEzOSA5OTk1NWI2NTQwOGRhYTI3Y2I1NzU4NzBlZGJmYmJjZjcwOGExMTlhIGxlZ2FjeS10cnVuaworOTE0MCBmYmZjZjM4ZDJiMzk1ZmJmYjc3NzZjYWY1NmNmZGUwMGM4MmU3NTVmIGxlZ2FjeS10cnVuaworOTE0MSA5ZjAyZWIzNmI1NzM5YTQ3ZmQ2NTIwNzE1ZWI3NGIxYTE2MTI2OGIzIGxlZ2FjeS10cnVuaworOTE0MiA3MzE0YmU2NDUwYWEwOGNiNDlmNjQwZTg0YjA1NjVmM2QyOTFmMTFhIGxlZ2FjeS10cnVuaworOTE0MyBkNmQzZTdjZjg5N2UwYjE4OGRhNTk5YWRmNDBkZTIwMTVlODA5NzJhIGxlZ2FjeS10cnVuaworOTE0NCBiMmYxZmVjNmE3MDIzZTM1YzZmYWM5MGQ5MzEyOWZiZjA2MjE3ZDRmIGxlZ2FjeS10cnVuaworOTE0NSAwODljMDRkODkxNTFlYjBjZmU3YTdjZWM4YmU0OWVjMmZkYzVmYzM1IGxlZ2FjeS10cnVuaworOTE0NiA5ODU1MjcwNGI4OGYyN2E0NzZiMDM0OTc0ODUxNGE3YWMxMWY5NTNiIGxlZ2FjeS10cnVuaworOTE0NyAyZjVjODM3NDgyNWM4NTM3MTE5OGY1YTdiYjJiOTM4MDQ4OGIyYjJkIGxlZ2FjeS10cnVuaworOTE0OCA4ZTNlZTM1NzdkNGU5NTE2ZGJjMTYyNTY3OWI2YjAxOWFkN2Y3YzRhIGxlZ2FjeS10cnVuaworOTE0OSAxNDEwNWRmMzNjMTJhMjFmMjMwZjJiN2RkOTUzZWU1YjRhYjdjMTNhIGxlZ2FjeS10cnVuaworOTE1MCA5OGQ1NTc5M2I2N2ZiYWUzYWFlZTE3OWNjZDc2YTNhMzMyZjhhMGM2IGxlZ2FjeS10cnVuaworOTE1MSA5NzMxODdmMWJkMWQzZGMyMGFjYTA5Yjc5ZDAxMTA0OTU3ZTlhZmQ3IGxlZ2FjeS10cnVuaworOTE1MiA0MzJkMWJlMDE2M2M3NWMzMGU4M2JlMzRiNTZjYmIwZjYyNmFkNDkyIGxlZ2FjeS10cnVuaworOTE1MyBjZGIzMjc5YjA2ZTc5ZDI4Yjg1OTQyYzg5MmJlYzQ3MTNmOGUzNzg1IGxlZ2FjeS10cnVuaworOTE1NCAxYmI4YjdmZTQ1ZWMzZWQwYTI3OGEwY2M3ODVhM2NkYzRhYjc0OGFkIGxlZ2FjeS10cnVuaworOTE1NSBlNDViODM3MDhkOWU5YmJkZDM4NDM1NGU3OTFhYmQ3ZDFjZmQ4MjkzIGxlZ2FjeS10cnVuaworOTE1NiBkZTJmOGY0OTRhZTM3MzdlZjkyYjhhNGVkMDcwNmNlMzc2ODBmZTU5IGxlZ2FjeS10cnVuaworOTE1NyBmOTVjOWFlMmFhZWZlZTk1YTcwY2FhMTcxZTZmYjZiMjZjODk0MTZiIGxlZ2FjeS10cnVuaworOTE1OCBiOGEzYmE2ZTdiYzlkZWY2YTk5YzQyOTU5YzcyYzk0M2ZjNDg1ZTMxIGxlZ2FjeS10cnVuaworOTE1OCA4ZmY1OGI1NzMwZjA2YmUwOGZiYmRjMmJmNTkyMjI2ZjdhNzM2MjAxIGxlZ2FjeS10cnVuaworOTE2MCBlZmZhNjJiMDA2MmI3ZDJjYTVhYmMxNmI0OWY1ZTQ2MmE4MzFiZjRhIGxlZ2FjeS10cnVuaworOTE2MSBjYjg4OWI2NzgwNTNiMDEzNWFlYjk1N2ZiOWIzMTdkYTY2ZmEyNzk1IGxlZ2FjeS10cnVuaworOTE2MiAwMTc0NjdkZTc5MzNlOGM3M2I1NzQ3MmQxNDIzYjU2NGJkYmZkMDgyIGxlZ2FjeS10cnVuaworOTE2MyA4MzE0N2UwMmU4MGQ4ZTMyM2Q0OTBiYWFkZTc2MmM5OWQyMjAwZTI2IGxlZ2FjeS10cnVuaworOTE2NCAyYjdmYmQ3NmNlZjg3MDU0Y2I0YjNiMTBmMzYyNmE2NWQwMTQ2ZjUyIGxlZ2FjeS10cnVuaworOTE2NSBhNTkzYzIyMGVkY2M2NTkzZDUwZjZiODQ0YjhkMmY2MGJhZDJiNDVhIGxlZ2FjeS10cnVuaworOTE2NiA1M2EwN2FkYTQ5OWFmNzg4NjhlNWM2ZjNlZTYzNzI0OWZhYjZkYWQwIGxlZ2FjeS10cnVuaworOTE2NyA4NGI0M2ZmNDJmYTgwZTFhZWIzNzc5ZjBiYWMxMDQxZTM2ZDZiYmM2IGxlZ2FjeS10cnVuaworOTE2OCBjMDc5ODQ4N2I3MjhiODdhMTE2MmJjYWJiMjg0NzczMTNkMjcyM2M3IGxlZ2FjeS10cnVuaworOTE2OSBkNzkwZmUyNWUxNDhlZjkyZWJkODNjYmE2YTMyNThiNzBkODFjZjU0IGxlZ2FjeS10cnVuaworOTE3MCA0YmNiYmViNjNiODk4ZTU0MzIzNDJlZmE2OWRhMjQ3YTM4MDY0MThiIGxlZ2FjeS10cnVuaworOTE3MSA0MGE4NDIwYjRhYjM2ZTRlZTMyNzY0ZmRjZDJhNzJiMWM2MmUzNDUyIGxlZ2FjeS10cnVuaworOTE3MiBhNzJiZjQzYTg4NzBiMWUwZDMzNDM3ZDM2NzY2NDMyMmNiNzhiZjE3IGxlZ2FjeS10cnVuaworOTE3MyBiOWZjYjlhMzQzMzI4MjJmNjhjNjY5Zjg3YjVlZDliMzYxMDAwYThmIGxlZ2FjeS10cnVuaworOTE3NCBlOTIxNTQwMjJiNDhlZTZjZmE3MTk1NWQwNzVmMzVjMTM5ZGY3ZmU5IGxlZ2FjeS10cnVuaworOTE3NSAyZTc1YjMxZDk0Yzg0ZjMxYTkxOWY0YTk0ZDJlYzAxMDgxYjlhNTE2IGxlZ2FjeS10cnVuaworOTE3NiBiNzNlYjRlNmZhY2VjZmVmOWY5MjNhZTg1ZWU4ZjYzNDhjNzQxYzU3IGxlZ2FjeS10cnVuaworOTE3NyA5MDAxYzBhN2JlOTg2MzM5Njk3YTExYjMzMDExNmQyYzk1MTA3OThmIGxlZ2FjeS10cnVuaworOTE3OCBjNjkwMzRhOGIzZjQzNGY3YTRmMTkwZDFjNThmYjMxMDU2YWI3MTFmIGxlZ2FjeS10cnVuaworOTE3OSA0ZDYzYTAwMWMyNWVhOWMxMmJhODU2ZmFjYjdkNDZkMDE1NTI0MWQzIGxlZ2FjeS10cnVuaworOTE4MCAxNTE2MDE5YzkwYmU4OGY1MDM4ZGI0NzEzZmVjZjY4MzQyN2E0OGNmIGxlZ2FjeS10cnVuaworOTE4MSBiOTM2Y2NmNDJlYTJkNTFjMTNhZDY2ZjM4Yzg1ZTkzMDUzMGJlMzNhIGxlZ2FjeS10cnVuaworOTE4MiA5ZDhlNDhmM2I0OTg1ZjA2YzU2ZTE4N2M5MTRiNTVmYzIyNjRhMmUwIGxlZ2FjeS10cnVuaworOTE4MyAwNjE1NzkzOTUwNDY1MDFkNzExNjliOTkzZGZiYjRiYjFmZTUzMTNmIGxlZ2FjeS10cnVuaworOTE4NCBjYmM1ZTdkNmFkMjM1ZmJhOTBmOWI2Njc3MWJmOGFiZDJiOGM4ZmYyIGxlZ2FjeS10cnVuaworOTE4NSAzOWQ5NmQ5ZDNjY2I1NmE2MWZjZTUyMTNiM2MzY2Q3OWNkNzYzYzg3IGxlZ2FjeS10cnVuaworOTE4NiA0N2EzZjNiNjA1MDI2M2FhYzlhZWNkMDY5MmEyZDgyMjlkZmVhMmMzIGxlZ2FjeS10cnVuaworOTE4NyAxMmExYzk4NDUwNzQ0MDc2ZDhlYWM2NmQzMmJjY2QzNGZiMWM1NDg4IGxlZ2FjeS10cnVuaworOTE4OCA5MGM2MzkwYjQ5NDE3M2VkZGU4NDJhNDI2N2E1ZjM5ZWNhODg3NGFiIGxlZ2FjeS10cnVuaworOTE4OSA5OGFhOTI3ZjkwN2NjMDNkNTQ1OTA1YjMyMTY2OTk0NjZmNzRmZTRhIGxlZ2FjeS10cnVuaworOTE5MCBmZjE2NDQ4ZThmMjQxNzA4MGNiZTNlNjdiNjE1MGI0ODg2ODE5MGM4IGxlZ2FjeS10cnVuaworOTE5MSA4YTVhMDEyMzA3YmRkMTBmOTY5YmM3ZWE2ZjVhOWY3MTU4MTFiMDIzIGxlZ2FjeS10cnVuaworOTE5MiBhNWJiMGI4ZGMzMjA0MmJmYzU1YTQ4MTIzNjQ3OGIxZTcwNmMzZTIwIGxlZ2FjeS10cnVuaworOTE5MyAzOWI0MTNhYzJjYzkxYzFiNTlkMmM2YjllNTQ2NDNjNGE2YjlkMjg2IGxlZ2FjeS10cnVuaworOTE5NCBkODU0YTFjN2U3NGQzMzFhNzUyOTNlYmY1ZGQxYTdiZWI0NTdlZjEzIGxlZ2FjeS10cnVuaworOTE5NSA2NGE3NTIxMWNmNzI5Y2Y0YWMwNmVkNzI1NGRlZTljMjgzNjQ5ZGEyIGxlZ2FjeS10cnVuaworOTE5NiAzMmYyZWRhMjk0NmNhZDcwMWI0M2U2YzhhN2VjNjJkNGJlOTMyMTc2IGxlZ2FjeS10cnVuaworOTE5NyBmYWViYzE5NDA0MzI4YjEyYmMyYmMzMTIzNDAyYTU2YzVkMjk1MTU4IGxlZ2FjeS10cnVuaworOTE5OCA5NjA4NTM5MDJlYmU0MTkyZTE0Y2IzZjg0YmE0ZGJkNTI5OWRiMzFmIGxlZ2FjeS10cnVuaworOTE5OSBiYmY5ZTRiMzFkODRjNGMyMTJkM2Y1ZjJkNTk0MTUwYzAxOTBmOTdlIGxlZ2FjeS10cnVuaworOTIwMCAyMWRjZTMzMjUzMjE5NjIyMWJjMGIxYWFkZTFlYWJiMDMxMjcyMjg5IGxlZ2FjeS10cnVuaworOTIwMSBjM2Y4NWJjYjA0NWFkNzNmNjM3NTIxOGNhMzE4MzQ2ZWNjOGI4ZThhIGxlZ2FjeS10cnVuaworOTIwMiAyZTNhY2IyMTQwYmYzYTVmZjgwYzhjZmMzM2Q2YTExODk1NzJhZTI5IGxlZ2FjeS10cnVuaworOTIwMyAyODNkMWNhNTg1ZDk0ZjI2NjNmMTFjYjUzYWZmMzBiZGNiZmUxMjYxIGxlZ2FjeS10cnVuaworOTIwNCA0ZjM2NDJhMjAxMzcyZTY4MjQzY2Q3OWE4NTg1ZTRlMGIyZTRlNGU2IGxlZ2FjeS10cnVuaworOTIwNSAyNjYyYzlmZTFiM2UwM2NhYTI3ZmRmNTYxNjQ4OTIzNWI0MTJiNDFkIGxlZ2FjeS10cnVuaworOTIwNiA3Y2NlNDY5MTYwYzZlYjg1M2IzYThiZjQ0YWE0MTBjZTFkMjhkMGVmIGxlZ2FjeS10cnVuaworOTIwNyAxMWE3NTE3MDU0YTU4ZWE4MDE2YTY0NTNhNWFhYzM3ZTQyYTYyZmU2IGxlZ2FjeS10cnVuaworOTIwOCA5YzlhODdiNWJiMTdlYzAxZWEzYjNlMjUwM2ZiMDRmMDFlMjNmOTM2IGxlZ2FjeS10cnVuaworOTIwOSAyMTY1NjIwNGRkNGZiZDlhNjcxYzY0ODdlOGUyNzI2N2Y2NzQ3YTgwIGxlZ2FjeS10cnVuaworOTIxMCAwOWY2YTQ5YWNhMTJlZjcwNmQyNDg2NTRmMmRlN2ZjY2ZmZjlkMmU1IGxlZ2FjeS10cnVuaworOTIxMSA2NWFlNzExZGIwMGNiNWQ1NThiYjU0YzgzN2Q1NGMxOWI4NzQxYmY3IGxlZ2FjeS10cnVuaworOTIxMiA0YzliMjU2YTNiZWUwYzkxMjhhMWVjOGEyN2RkZWExZjk2YzRlN2Q5IGxlZ2FjeS10cnVuaworOTIxMyBmYWI4YWI1ZGM1Zjg0ZThmNmU5NmFkOThkMmNjMGJiN2E1YjI1M2M0IGxlZ2FjeS10cnVuaworOTIxNCA1M2ZkNDJhYTNiYmZjYWNhMGUxNTQ2YjBkNjRlNTFjMzIxMjgwZmJiIGxlZ2FjeS10cnVuaworOTIxNSBhYjNkN2EyOGUwN2QyNTgyYWRmMDVkOWVkNDE4OGI0ZDE5MmUxZGRmIGxlZ2FjeS10cnVuaworOTIxNiAzYmVmNTVjYjc0NGI2ZTZkZTljZGViMDhkMDZiMmM3YWExODdiOGZmIGxlZ2FjeS10cnVuaworOTIxNyAxZDQxNzVlZDZhOWNlZWUzMTU1ODBmMDgyYTU1YzVlZmVkNDJkYWM3IGxlZ2FjeS10cnVuaworOTIxOCAxODUzYjViYzA1NDhiYTA2MmMzNTQwMzNlODBlMzllMmI4NDE1ODgzIGxlZ2FjeS10cnVuaworOTIxOSA0Y2YwZGEwNzFlMmJlYTNlOWI0YjA3NWMwY2IyYjY1MzAwMTI3MDBkIGxlZ2FjeS10cnVuaworOTIyMCA0ODg3ZDc1NDY5MmFlZmIxMDBiY2FiNDU0MmIzYzQwNGU0MDU1YzUzIGxlZ2FjeS10cnVuaworOTIyMSA0ZjY4YzdhYzUxMTU0ZGNkY2UwZjQ1ODA0MmNlNDIwNzM2NDQzMzVhIGxlZ2FjeS10cnVuaworOTIyMiA4MDg0OGU5MThiY2MxODQxNDNhOWU2YjRkNDRiNWY3MGZhNmFlZGI4IGxlZ2FjeS10cnVuaworOTIyMyAxZGI0MWNhNDVjN2ZjODg1NDQ4Nzk3MjhkNDY0NDU2NmEzNWFiNDI2IGxlZ2FjeS10cnVuaworOTIyNCBhYmUzYWFkOWUwMzg1ZTdlNjVmNzU0MmRkMmIyYzY1ZGRiOTczNWI0IGxlZ2FjeS10cnVuaworOTIyNSBmY2ZmNTMxNjM0ZTE0ZjQxM2Q3NjE1MzZlMjIyYTcxZDViMDE4ODBmIGxlZ2FjeS10cnVuaworOTIyNiA3NGVhMjA4ZDQ2Y2U4MWFhM2Q5ZDc0ODJiZDU3NGM1NGQ3MjQ4OGVhIGxlZ2FjeS10cnVuaworOTIyNyA3OTNjYWY1MTc2NDc5ZTRlNGE4ZTQ3YTFlMzZiMzJiM2E2ZmMxMzQ4IGxlZ2FjeS10cnVuaworOTIyOCA1ZTdjOTEzNThlZDJjZGVhOTFjODdjNjAwYWU1NTgzZTcxZTMzYzVhIGxlZ2FjeS10cnVuaworOTIyOSA0ZGFmMDkwZmYxNjIyNjUxOTU0MzQzZjdmYjQ2NjViOGYzMTliNTNjIGxlZ2FjeS10cnVuaworOTIzMCBlYmE2YWRmM2Y4NDRlZjY0N2ZhYjg5NmEyMzc2Nzg3NzI0NWFkYmY1IGxlZ2FjeS10cnVuaworOTIzMSBlMmU1YmJmYWQxYzgxZjczYWIzMjQxM2ZjNWUwZjUwOTg1Y2FlZjAzIGxlZ2FjeS10cnVuaworOTIzMiAwN2U5NWVmNTVmNjU4ZTdlNjc5NWZiMGYzMzYzMGEwZmFlOTE2YjE0IGxlZ2FjeS10cnVuaworOTIzMyBmZDI5Y2ViZTg4ZGM4YjQ1NjJjNDRhY2I1MmZhODQ4YjY2ZjY3ZDZkIGxlZ2FjeS10cnVuaworOTIzNCBlNDA3MGRjNmFjMzVkNWQyZjNmMjFlMTlkODEzZTRkODMwNzUzYWI0IGxlZ2FjeS10cnVuaworOTIzNSBhZmY2ZmY1MmQ1ZTdlZDMxMmJkODUzNGI4ZmUzZjZkMzEwMTVjNDlkIGxlZ2FjeS10cnVuaworOTIzNiAwYjVlYjMyYjU1MWQyODJhMmE2NjllZTRhOGU1NGIzMGNkMzQ5MDEwIGxlZ2FjeS10cnVuaworOTIzNyBjYWU4YWE0NDFmYmQ0ZDdiNjVlN2UzZDliMmJjMTFiNmQ3MzBlMTk2IGxlZ2FjeS10cnVuaworOTIzOCAwMjA0ZDQ2MWQyMTk2Nzg4ZWMzNDBiOTAzMzA3M2U1YTI3MWZkNWUwIGxlZ2FjeS10cnVuaworOTIzOSA3NDhhYmM3Zjg4MDhmNDg0MzkxNGYyNTUzZGU0YTYzNTE4ZDFlYTgzIGxlZ2FjeS10cnVuaworOTI0MCAwYTNjNzQwMmQzOTUzZDA3ZjAwMGJjMmRhZTM5Y2YxNTUyYThjZTU4IGxlZ2FjeS10cnVuaworOTI0MSAxMjgyNGZlMDRhMDg4NTIxZGM1NGZhNjJlYjM1YzQ2Nzg2NThiMTg4IGxlZ2FjeS10cnVuaworOTI0MiAwNzUyYmJmNzdkODEzYTFmNTdkZjdlM2I3YjNmNDZhODNjMjU0YWJkIGxlZ2FjeS10cnVuaworOTI0MyBlNmMwMzNlOWI3NjkyN2I5ZWI1MWYyN2M2YzFhNTRmMzY4YzE3YmJjIGxlZ2FjeS10cnVuaworOTI0NCA4OTA5MmFkMWU2NjA3MGQxODY1ZjgxMjBlOWJlZWZmMmVjODQyMjg2IGxlZ2FjeS10cnVuaworOTI0NSBlOTdiODIzNzU5MWM1ODE1MTU1ZDYwOWQzNzg3Mjg4ODc3Yzc0ZDQ4IGxlZ2FjeS10cnVuaworOTI0NiBhMjlhNmJmMDNhZjMzMjNhZWY4YTM5ODJkMTBlYWRmZjEyOGUyZDUxIGxlZ2FjeS10cnVuaworOTI0NyAyMmZkZmQyODNjOWNlZDZkNTU4NGNlNWM5N2EyMjA5ZWVkMjgwZjJiIGxlZ2FjeS10cnVuaworOTI0OCBiNWNkNzY4ODEyY2IzMjQxMDgyMTEwNzc0YzdkZDRjYmJhNmFkOTZhIGxlZ2FjeS10cnVuaworOTI0OSAzM2UyMTQ1MjUwYWZlZTgyY2U1Y2I5Yzg3NjNmNGMwODIwZWIyZjU5IGxlZ2FjeS10cnVuaworOTI1MCA4MzJhODA3ZDAwOTg4ZWFkOGM2MmJiNDBlYTRlZGU3ZDYzNWI2NjYzIGxlZ2FjeS10cnVuaworOTI1MSAxNGQ2YjdhNDI5MTk0MjE1NGUwYTY5ZWUyYTRhMzljMTBiYzhmZDA0IGxlZ2FjeS10cnVuaworOTI1MiAwZWYyM2Y1MTNhNjU5NTk3NzNhMTVhOThiNTkyYzQzOGQwMDM0OTBjIGxlZ2FjeS10cnVuaworOTI1MyAzMTE3YWY5ZGJmY2U3OTM0NmVlZTFlZDBmYmNlY2E0NWZlNTEwZDE3IGxlZ2FjeS10cnVuaworOTI1NCAzZGZlMDUxMWJjM2IzMjYzMTUwM2NlNTE4YmMyZWE4Y2VhNzIxN2Y1IGxlZ2FjeS10cnVuaworOTI1NSBkYWE3N2Q5YWYzNGM5MDMzOWY5YzNmOWI4YjAzOWE2MGUxYzdmYzViIGxlZ2FjeS10cnVuaworOTI1NiBiZjZkZTgyYWFiMGQ4ODFhYjc4NzM5ZTEyZDQ3YTI3NjEzMDJhM2QyIGxlZ2FjeS10cnVuaworOTI1NyA0ZGJmZmZjM2MyM2JlMzk0NWRhNDRmNzQ0YWFkYTFkMGZjNGJiYjNlIGxlZ2FjeS10cnVuaworOTI1OCA5Y2Y4ZDE0ZjM1NjUyY2Q5M2ViZjM2ZmMwMGM5YTM3YTFmYmNkMjIyIGxlZ2FjeS10cnVuaworOTI1OSBiOTZkOWZiYjI0ZTU2MTRmYmVmY2U4NmRlYTNmMTE5OTEwM2I0OTRkIGxlZ2FjeS10cnVuaworOTI2MCA4OTgwMjA4N2Y4MDY2OWNmNzliZWZlYzE0NDJhZTI3MTlkN2I4MDI4IGxlZ2FjeS10cnVuaworOTI2MSBjMTg1MDE3NzA4OTU0NTNlNzM5NjM3OGMwZWRlZmIwZTdjYzcxODdiIGxlZ2FjeS10cnVuaworOTI2MiAwODQ4MDA1MDJhNDIwODQyMzZmOGJkNDc1ODNjZDc2N2YyZTdhNGMwIGxlZ2FjeS10cnVuaworOTI2MyBmNGUzYTdhZWI5NDlmZjNlZDY1ZTFkZTEzMGIxMWUxMTJjMjE4MTJiIGxlZ2FjeS10cnVuaworOTI2NCBiYzAwN2NmMWQ2YmEzYTE5N2VjMGQ5NjE5OWUzYjI5NGIxMWUwMDIzIGxlZ2FjeS10cnVuaworOTI2NSBmNjk1NDI3NGUxY2E0OGY4ODQ1MjNiZTBiMGI3MjQzYTFhNjdlNjMyIGxlZ2FjeS10cnVuaworOTI2NiBjZWFiZDUwMzE3ZTMwZWQyMTFlMDYzZGQ3NTJiOGM2YjA4OTY3YTA1IGxlZ2FjeS10cnVuaworOTI2NyBiYjQ0MGEyOTc1YWI5OTE1Y2Q4OTYyYTBiZmM4YWEyMGI4OTMxY2IzIGxlZ2FjeS10cnVuaworOTI2OCBiMWU2YzNmZTVkZTg1NDVkNGYxZGQ1Zjc0YTgxMmVmOWMyNjA4MTBhIGxlZ2FjeS10cnVuaworOTI2OSA5ZTc1ZDk0MjU2ZTBlNmE1MmI2YWNlMzBhMDc1ZGRmODI5N2Q2NjFjIGxlZ2FjeS10cnVuaworOTI3MCBmNTMzYzMwNzk3ODBiZmU5YTU2NzE0ZWNmOWY4ZTcyNTMyOWI4YjE3IGxlZ2FjeS10cnVuaworOTI3MSA4NTdmOTA2NTA0MWQ1MjBiNTIzYTNkYjU1OTg1MTA5ZGY1ZGVlYzJkIGxlZ2FjeS10cnVuaworOTI3MiBiMDkyZWUxOWFlNGZlYzBiYTViMzIyZjg4MzkxNTc3YTg0NGZkMjYwIGxlZ2FjeS10cnVuaworOTI3MyA1YjI0Y2JiMWY5OWJhMjVhZjUyMjE3MzZjZWQwY2FiNDkxYmM2MjIzIGxlZ2FjeS10cnVuaworOTI3NCBkMTAwZDAyNTJjYjFjNWRjZmRmMWY2ZWI3NDBjYWQ1MDM3YzNkYjJiIGxlZ2FjeS10cnVuaworOTI3NSA5NTQ0MTcxOTFmYmZjNzgxZWNlOGY2ZmFhODhhNTM3NTI2Y2RhYzRmIGxlZ2FjeS10cnVuaworOTI3NiAwYmE1MGM3NDI5ZTUxMDM0YjBmYTI5OGEyNjg3NjQzM2E3MDdmOTFjIGxlZ2FjeS10cnVuaworOTI3NyAzNDFhNmU0N2E4ZmY2NDVmZWFjYzZlM2RiYWY3NmJmODAzZGNjOTdiIGxlZ2FjeS10cnVuaworOTI3OCA1ZWRmZWI3YWE2ZWFlM2Q3MDQ4ODYyMmNlNWFjMzkyYjlmNmM0NTY2IGxlZ2FjeS10cnVuaworOTI3OSBiY2E5NDgxOTRkZWFmNDgyOTRmMGRiNjIxZjNhY2Q0YzAzMWY5YTM0IGxlZ2FjeS10cnVuaworOTI4MCA5ODViZTZkYzg5NGYzNWZhYjA1YmI0ODQ4OGViMWU3MDc1MThkMmU4IGxlZ2FjeS10cnVuaworOTI4MSBhZmJjMTFkZDJjNjVlNWZiODNjNmY3N2UzYTNiNmJiOTYyYmVkODdiIGxlZ2FjeS10cnVuaworOTI4MiBlMjI0YzQxYmRhYzY1MDhmMDc0ZmViZGMyODcwMjNkYmUyZjY4ODdkIGxlZ2FjeS10cnVuaworOTI4MyA5M2U0ODBkZWRjZjA5NDA3MWY4NDg3ZTlkNTNmMTVlNWI0ZTIzNTNhIGxlZ2FjeS10cnVuaworOTI4NCBhYzFiMjYxZjE2OTA0YTY2NTlmY2Q2Mjc4ODhkMjgwZGY3MGJmN2FkIGxlZ2FjeS10cnVuaworOTI4NSA3ZjkxOWQ0NzAxMjkzZmM1ZGQ2MGI2ZTZlYmMwOWUwOTgyMmVhNTFmIGxlZ2FjeS10cnVuaworOTI4NiBhODdiYzUzZmMxYWQ2ZWU3NWJhZWFlMmIwOTIzOWEwNTEzYzg0NmI3IGxlZ2FjeS10cnVuaworOTI4NyAxNDBlNjVmODM5NTMzZmE5ZmJlOTcxOTcwMTk3ZTI1Mjk5NmU2MTZhIGxlZ2FjeS10cnVuaworOTI4OCBjYTc1NWZiMWVmYjhhZjQzYjUwMTA5Mjk4Yjk2NTYxMDg4OWFiNjQ2IGxlZ2FjeS10cnVuaworOTI4OSA5YjQwNmM5MjUxNDA4MjU4MjllZjE0MmYzMWIxNDM1M2RhODY1ZDliIGxlZ2FjeS10cnVuaworOTI5MCBkODUxNDdkY2UxODVkMjYyZjJjMDc4ZGFkNTIwNTZjMTc0YzIyZjlmIGxlZ2FjeS10cnVuaworOTI5MSA2NjdhODVlYmZjM2VkMGFiYWY2MDAzYzgzZmNhNmY2MTY5OTZmMWY1IGxlZ2FjeS10cnVuaworOTI5MiAwZmUzZGMyOGI5MmMwYzk2YzI5NWU1OWM1MzgzODFkNjUxMWViZjVjIGxlZ2FjeS10cnVuaworOTI5MyA2MTMxZDNmOWFmMmQ2MDkyOWQwMDIzYTU1YTEyNjQwNTg3YTFlZGJjIGxlZ2FjeS10cnVuaworOTI5NCAyZTNmMjQ0ZjEwNWYzNTczOThmOTI3NzU5NWVlNDBiZjY1ZmNkM2EyIGxlZ2FjeS10cnVuaworOTI5NSA3ZGJhMmYzYjZjODEzNWMzZTc3YTAwMTZkY2M3ZWMwMjAzYjQwOGEwIGxlZ2FjeS10cnVuaworOTI5NiA3NzNmYmM4ZWZiZDc3ZTA3MmQ4ZGMxZjZiN2JjMTAyYWQ0NjJkOTQ0IGxlZ2FjeS10cnVuaworOTI5NyA5NTkyOWIwMWEyNjI0YWEyNmYzYzFlM2NhZGQwNDU0NDU0OWViNTQxIGxlZ2FjeS10cnVuaworOTI5OCA4ZWY0ODFjN2MzYWZjNjQzMDA3ZjNmOWVkNzJiNzJlZGM3MzhkMGQ5IGxlZ2FjeS10cnVuaworOTI5OSBiMTljZDQzMTMxMjY2M2VmNDU1ZDhiNDYxYjUwNTdiNGVkMWU3OTY1IGxlZ2FjeS10cnVuaworOTMwMCBmYzExZmYyYzc1YjA0OTVkZDVhY2RmMGU5ODQxOTAwMDdmODIxYjYwIGxlZ2FjeS10cnVuaworOTMwMSA2NjNhNDllNGJlZDMyNjgyNzhjNzM4ZTZjNDUxYzgxYzU0YzRmNDhjIGxlZ2FjeS10cnVuaworOTMwMiBlMzljM2I3NzcwNDE3MmM4NWFmMDM0NDE5MTc3YWIwZTFiMzRkYWY1IGxlZ2FjeS10cnVuaworOTMwMyBlY2FhNDMxYzU5NjlkOWIzYTM0MjU0NGUxMDUzNWQ3YjM3ZWYwZWEyIGxlZ2FjeS10cnVuaworOTMwNCBhMTU0NWNiZjBhZGY3ZjQ2YzQ5MDBjNzFlODg5NTMwY2JjMDg2ZGViIGxlZ2FjeS10cnVuaworOTMwNSA5ZmU5N2I3NjMwNjhiNjY5Y2I5NTg5ZDY5ZTk1YTU2N2ZhODA0YWIyIGxlZ2FjeS10cnVuaworOTMwNiBlZTg4YzVhYmMzNDFlY2U5MzhiYjFlMTQ1YzMyZGMyODllMTE4MWFjIGxlZ2FjeS10cnVuaworOTMwNyAzNTFjNzBiOGU3MzEzZmRiNGE4YzllYWJkNWZmZGQxNzk0NWVhNzYzIGxlZ2FjeS10cnVuaworOTMwOCA5OTIwOWRjZjI5NDY4Y2U3MzA4YzI4NGQ5NzMxMWZkMGI4NzVhYWYwIGxlZ2FjeS10cnVuaworOTMwOSBhY2YyNDc0NjVmZWJmZGUxYmQ0MWRjZTQyNWFhNmI0YTE3MWVjYjZkIGxlZ2FjeS10cnVuaworOTMxMCA5YTU3YjQxMDc0OGQ1MTVlODRjN2ViMDM0NDBmYjFiZWQ5ODFkY2ExIGxlZ2FjeS10cnVuaworOTMxMSBjYmZjNWYzMzJkOWQ0ZjE5ZjNhNDY5NjNhYWI1YTExMWNlZjUxOWIwIGxlZ2FjeS10cnVuaworOTMxMiBhYWIwODJiZmU2NTRlNTNlZTk3YzE2ZDNhNzUyYjZiYzdhZjBlOTczIGxlZ2FjeS10cnVuaworOTMxMyBkYjE5MWFjZjhlMDY4ZTZhYWM1M2Y4NzZkNTY1NGFhZGYwOWE2MDM4IGxlZ2FjeS10cnVuaworOTMxNCAwMjU1YjVlY2RlMTA2NTQyOTlmMDMxNjgxYmMzOGNlZTk0MmY5OGY3IGxlZ2FjeS10cnVuaworOTMxNSA5NjE4MWE0YTU0ODI0OWJkNmFhOGFlOTFkNmYxMjZhNTdlNDM4ODYwIGxlZ2FjeS10cnVuaworOTMxNiBiNzU1MDBlZWVkOWIxMmQyNzkxZWMwMjE0YTY5NTNiNTFjN2I5OGEyIGxlZ2FjeS10cnVuaworOTMxNyA2MjMzMzgzNTEyYmE5OWExODJlYmRmNWUyYTM4Y2VmNGYxOWZlYzg2IGxlZ2FjeS10cnVuaworOTMxOCA1OGJmZWNlMDE5NjhjYzA5YzE2ZjExZDczOTI0NWE0OGQ5NjNkNDQ3IGxlZ2FjeS10cnVuaworOTMxOSBkNzEzOWJhYzliOTk3ODVlYmQ2Y2NiMTI5YmU1OTZhZjZiYTY4NzQ3IGxlZ2FjeS10cnVuaworOTMyMCA0MTZjNzk1NzJmMTE4NzFiNmVhZDE3Nzg4ODA0ZGY4OGViN2MzOTMwIGxlZ2FjeS10cnVuaworOTMyMSBhYzY1ZGIyMDU0YzljNjc4Y2M0YzJiZTllY2I0YjFiYjdhNjFhMWVlIGxlZ2FjeS10cnVuaworOTMyMSBlYjc4NjU4ZDgxOWZiMGFmMDlhOGU2ZjliZWRjYjY3MDgwNWVkNWY2IGxlZ2FjeS10cnVuaworOTMyMyAzZmZmMzRlYTkxYWI2NDE4ZDkyYzc1MDUyZDYxYmYxMzFjMzIzYThlIGxlZ2FjeS10cnVuaworOTMyNCA1OTllZWE5MzA4NDNjMTRjZjJiYmQ5MzQ4ODcxNDg0NDgzNzA0ZjNlIGxlZ2FjeS10cnVuaworOTMyNSA5ZGVkNGY5ZTAxOWVkMGExZTVjNmVhZjE3NDJjMWEzMDYxNWRiMzI1IGxlZ2FjeS10cnVuaworOTMyNiA4YWRiMzUzMjlhZjAyNGQ5NTM3YjMxZWQwN2IyM2NlNjBmODYwOWYxIGxlZ2FjeS10cnVuaworOTMyNyA1MWY4ZDRkYTgxZTRiMDc3OTg2MThlZWNkNjQ2NWU4ZGNiZmM1MDVhIGxlZ2FjeS10cnVuaworOTMyOCA1MmZkODI4MTY1NjE0NWI1ZTczNDhjOTUxNDRjNDc1MThjMDdhYWQ3IGxlZ2FjeS10cnVuaworOTMyOSBkM2U1MTZlZjljZDExMjJmZDMyNzFkZmVjOGU4NTRkOTU5MzlkNjYyIGxlZ2FjeS10cnVuaworOTMzMCBhNDIzZTNlMGRhNDAxMGNiZDI1NjY1YjFiMmNhNDk5ZDYxMTNlOTY4IGxlZ2FjeS10cnVuaworOTMzMSA2NzJhNjU3YWJiYTg3YzkwYzU1ZjBlN2FjNDM2MzgxNGQxM2JkM2RjIGxlZ2FjeS10cnVuaworOTMzMiBmZDA3ZDUwM2EzM2M1ZTU2ZTFjYmZjMTkwNzNhYWRlNGQ5MGFjYjRhIGxlZ2FjeS10cnVuaworOTMzMyAxYWIzMDc5NTFmNGVkMDg4MTU2MjUwYWQxYmY3M2FmYmEwNDhiNGY5IGxlZ2FjeS10cnVuaworOTMzNCA5Mjc0ZmFiMmM1ZjIwZjViNzIwNWUzZmNhOTM0MzBiYzE5OTcyNTE5IGxlZ2FjeS10cnVuaworOTMzNSA2N2MxMGQ5ODkwOGQyYmViNzcxNGVmNDFiOGRhMDU5YzJhNzAxNWFlIGxlZ2FjeS10cnVuaworOTMzNiA2MWQ5NzNlYjQxMDJjYmZkMTk3YTA1YzcwMjI2ZGFlZjc2MDMzZDAwIGxlZ2FjeS10cnVuaworOTMzNyA1MWM5MzAwNzk1MTQ3NTAwNDQ5NjdlMTQ1Mjk5MTBhMjExZDE5YTQxIGxlZ2FjeS10cnVuaworOTMzOCA5ZjFkM2VlYjc4NGI5MzI1OTJkOWRhMDMzNDFlNDdiYTRiYjAxMTFmIGxlZ2FjeS10cnVuaworOTMzOSA3NDRiODk5NDE0OGFlMzJjMGViNzcwYTJhYTg5YjlkYzEyYjY5NDgyIGxlZ2FjeS10cnVuaworOTM0MCBjNWJmYjFkZTYxYTViNzA0MTlkY2QzNGY3ZGZjMjBhNGIyZmI4NTdlIGxlZ2FjeS10cnVuaworOTM0MSAzMjAyMDA1YTcyMGI0OTc1NzBhYTgwZTJkZmZjMTg5YWRmYjU2MWVhIGxlZ2FjeS10cnVuaworOTM0MiAyZGUzOThmMzcwZTg2ZTE2ZGQ1MTQ0OGU1ZTE0NDYyZDdkNTFhM2EwIGxlZ2FjeS10cnVuaworOTM0MyBjOGNkZTE1ZGQ4Y2U0YzY1MjdjMmYwM2M2Zjg1YzFkYTU0NzQ5NTk1IGxlZ2FjeS10cnVuaworOTM0NCAwYzNlZmRmMjgxMzMwYmVhM2RiY2Y3ZDNiODRiNWE1MTA5NTkyYjkyIGxlZ2FjeS10cnVuaworOTM0NSA4MWRmZGY2NTg5ZjhjZTc5MzJjYmNhYjU2MmEwNzAxOTM3MTUwNjU5IGxlZ2FjeS10cnVuaworOTM0NiAyZjc1M2Y1NDBmNDVmNDk5MDFlNGUxYzgyMjcyM2MxMzNiODRkMjc5IGxlZ2FjeS10cnVuaworOTM0NyAyNzhhYWNmMDE3MDcxMzA0OGRmMGVmZDllNmI3NDQ3NTM0MmM3YzEzIGxlZ2FjeS10cnVuaworOTM0OCAxOTAyOTM4ZTQyYzYyMDY0NTA4MjRiZjNhYTM5MzU4OTUzZWMxOGI2IGxlZ2FjeS10cnVuaworOTM0OSA3OTM3NWY3MWQ2YzgzODIyNmMwMmU0YmVjMTg3NjQwM2EzNTY1MWUxIGxlZ2FjeS10cnVuaworOTM1MCAyZDk3ZmIxZDA2Y2ExNDRjNzhhZmNmZWQwZTc3NGMyYWI5Yjk1YzRiIGxlZ2FjeS10cnVuaworOTM1MSA5YmU3ZjFlMzc1MzU5NDU5NzJlMzkzYzBkZDNlOWQ5M2YwZWNlYWUzIGxlZ2FjeS10cnVuaworOTM1MiA2YWUzYzkxZjJkOTM4MzQxZjgxMjU5ZTg0ZWU5MTE4OGM1MGUzYTkyIGxlZ2FjeS10cnVuaworOTM1MyBkMDNmMmUyZmJmMzY2NmRhYzI2YmVlNjNhMzU0NDRiNGUzZjg2ZDhlIGxlZ2FjeS10cnVuaworOTM1NCA0ZTJjYzUwNDRmYTUxM2YxYTE4ZmVjZDRlMDViYzliNTI0Nzc4MWUwIGxlZ2FjeS10cnVuaworOTM1NSA1ODA5ZWYxNTdjZGRiNGU4ZmJmMWM3YjQ1MzVlNTA2NTYzMjE4Njk4IGxlZ2FjeS10cnVuaworOTM1NiBlMjg1YTE1ZjNhOTJlYTBhN2ZhZTU1OTcxZTQ2ZDkxM2ExYTljYzdlIGxlZ2FjeS10cnVuaworOTM1NyBlYTIxOGRjZjcyN2RkMTUxZTk1NTZjYzY4YmU0ZWQ1YjBmZGUwMmEyIGxlZ2FjeS10cnVuaworOTM1OCBjNDZkODc5MjMzMTdjMzljNGMxMTUwOWU0YTQ1MmI2YzEyMjQ0MDE5IGxlZ2FjeS10cnVuaworOTM1OSAzOGY4YTgyOGFjNThkM2UzMGEyYWJiYWQxZDk5NjJkZjMwYzcxNzBjIGxlZ2FjeS10cnVuaworOTM2MCAzYzEyYzBkNjllMTIzMDJlNGVlYmFiOTNlZGE0NDEwMzkzMGEyMzZiIGxlZ2FjeS10cnVuaworOTM2MSBiYWY2ODZiZjhjYTBiNjQxNGM0MTJmMTg5M2U4MzZhMmY2ZTk1MGU1IGxlZ2FjeS10cnVuaworOTM2MiA1OThkMmZmYmZkOGI1NjIyMmEwY2MwOWMwNTBkYzQ2MDg3MjQzZTQwIGxlZ2FjeS10cnVuaworOTM2MyBlOGQzMjIwOTIxN2E5ZDI1OTQ5Zjg4NzBiNTNjOTkxYTQyN2ExYmJkIGxlZ2FjeS10cnVuaworOTM2NCBiN2Q4Y2NiNDU3NDYzMzI1YzljMDk1NzljMmUyNWMzZTg1MDBmYjZhIGxlZ2FjeS10cnVuaworOTM2NSA5MTMzNDVkNTRmMzA2YzVjM2JjNmM0MThhNzY3Y2I0MWNiYThiNjMzIGxlZ2FjeS10cnVuaworOTM2NiBlOGY5OTc4ODdjMmQ1ZTMyMWJmMTM2OWEwM2UxNzc0OTBkMDgxYzNjIGxlZ2FjeS10cnVuaworOTM2NyBjN2JhYjczZTYzYzZlNzQxODk3NjVmZjMwYmZkNDVhNDE3ZjExYzVjIGxlZ2FjeS10cnVuaworOTM2OCAxZmY5YTMwZjgyNmE0NWFkODEwYzE0OTVlMGIzMzdjM2JhNDIxODcxIGxlZ2FjeS10cnVuaworOTM2OSAwNDdhYmNiZjNmNDMyNTU3YzVhMzc5NTYyY2NkMjkyMmRiNTA5ZTYyIGxlZ2FjeS10cnVuaworOTM3MCA1ZDIwNWYyMmFiNjE4NjNhYTc4YThkODlkZjBkMDdmODVmMTQxYjg4IGxlZ2FjeS10cnVuaworOTM3MSBkMmVmNzk0ZDljMTE2ZGRmMDhkNjExNmIzZjU4NTRmMzcxMzdkMTU3IGxlZ2FjeS10cnVuaworOTM3MiAwNWUyNjdhZWQ4NmViYjUxMDc3NTg4NTY3YTg5NjFhMzE3ZjY1YmNlIGxlZ2FjeS10cnVuaworOTM3MyBkOTQ5YTM1Y2FlMjBjODNhMmYzZjBlZDYxN2MwZGM4M2M4ZDI1Y2M3IGxlZ2FjeS10cnVuaworOTM3NCBlNzBjNGFmMTU3ZDU0MzU0ZDI4OGIyODAwMjc1Yjk4MWNhMjY5ODdkIGxlZ2FjeS10cnVuaworOTM3NSA2ZmU2YTljMTQ0OTkyZjExM2YzM2YzOGU0NzI0NTY4NzIzMmQ0NDk2IGxlZ2FjeS10cnVuaworOTM3NiAzN2VlMTg3MTFjM2MzODE4NDExODk5YTE5YTBmMWVkNmMwY2JjM2E5IGxlZ2FjeS10cnVuaworOTM3NyAyMTRmM2M0ZjU0ODkyZWM3YzhkNWNhNTZjOTc2NTIyZmEwMTMyMTAyIGxlZ2FjeS10cnVuaworOTM3OCAyNDQzN2Q4ZDBkZGMzYjQ1YjMwZDQzNzYyMjJiMTY0Njk0MjZlNjM0IGxlZ2FjeS10cnVuaworOTM3OSBhZGIzMDBjYmQ1NjY4MGQwMTIyNDJmYTk5Mzk3NmNlMTJmYjQ0YTYzIGxlZ2FjeS10cnVuaworOTM4MCAyNTIyYzhmODYxNWJkNTMyOWNjNmY5ODQ3ZWY3OGJmOWNjYzFjYzZjIGxlZ2FjeS10cnVuaworOTM4MSBlMjA3YmViNWEzNjI5YmQwY2Q5NTNjODFhYzQ5YmJmNTJkM2ZiZmM4IGxlZ2FjeS10cnVuaworOTM4MiA5Y2IyZjEwYjA0Mjk4ZWZhMGUxNGYyYmIwZDBkN2E3NjQxNjFlM2FjIGxlZ2FjeS10cnVuaworOTM4MyA3YjU0Zjk2YWYzYmVmYTAzYzJhOTkyNDJhOWJlNjVmMGVkYzc5MWZlIGxlZ2FjeS10cnVuaworOTM4NCA4MGFiNjAzMGI5MDRkYzkyOWVhNjhhNWM4ODUyODI3ZjE5NmRkMzNjIGxlZ2FjeS10cnVuaworOTM4NSA5ZWM2ZTBhOGYzNTNmZDJiZTZhYzVhNmVhMGI4NjhhNmQ4NGY1ZTllIGxlZ2FjeS10cnVuaworOTM4NiBlNGNkMzBlNDUzNzFjZTBhOWM2YTFiN2U0YzZiODI2ZDIwYmE1MmRmIGxlZ2FjeS10cnVuaworOTM4NyAzNTQ3ZmRlYWI0ZGZhYzhhZjkyNzE5OTA5Mjg2MDIxN2I0NWY3NDg1IGxlZ2FjeS10cnVuaworOTM4OCBmNTk1ZTdmYzJiZDllYTUyY2VjMzNiNDQwZGEzNzY2YmZjODVkZTgyIGxlZ2FjeS10cnVuaworOTM4OSAyYzQ5YzAyY2Y3NDc0YWIzOWE4ZTMxZTg2ZmJjYWJiNTA3MWFjNjUzIGxlZ2FjeS10cnVuaworOTM5MCBmMjY2YWI5MWE5OTBkMDBhMzJlMGJlMTMzM2M1NjhhZGNjOTg3ZDc4IGxlZ2FjeS10cnVuaworOTM5MSAzY2ZmNDQ1YmQxMGZmYTk3MTE1YjYxZGNmY2I3N2E1MjM3OWRiYmJhIGxlZ2FjeS10cnVuaworOTM5MiAwMzVlNzk2Yjg5MGVkNjI2Mzk1MDMwMWUwMjZhYjNhNmM0OTZmY2FkIGxlZ2FjeS10cnVuaworOTM5MyAwZDUxYjNiNjYwZDEyOTNlZGJlODMzNjY5YjY5YjJiMWVmNWZjNDMwIGxlZ2FjeS10cnVuaworOTM5NCBiOWEzOTUwMTEyYWVhNTkyMGFlNjY3OTE2MzgxMTNkMzM0MDAzNDQ1IGxlZ2FjeS10cnVuaworOTM5NSA4ZGZiZWVjYzI0MjJiNzk5MTc1M2JjOTMwMjYzMDk2OTc2MTE5MThhIGxlZ2FjeS10cnVuaworOTM5NiA5NTBkMDUxOWI1ZmU5ZTk5YTEzZjA5NWFkZjFjNmUwYTI3YTAxYWU5IGxlZ2FjeS10cnVuaworOTM5NyAxMDAyOWM4YzQwZTBkYzU1YzI1ZTQ0MGM2Mjg2ZmM3ZDk2OTZiNDI0IGxlZ2FjeS10cnVuaworOTM5OCBhZmIxZThhZjdlNGY4YWJjMmZkNjRhODhjNWRlYTA4YzY1ZGExZWI1IGxlZ2FjeS10cnVuaworOTM5OSAyMzZlYTkzYzU2ZmY3OGI3NWI4OGQ4NWQ3ZDAyYjg5ODMzMmU0MGJjIGxlZ2FjeS10cnVuaworOTQwMCA3NjI5YzRkOTg1YmMzZWRlM2UxZmQ4MGU1ZmIyMDcyZWU0MzhkYmZjIGxlZ2FjeS10cnVuaworOTQwMSA3NGFkMjY4MjUwNjA4YTkzZGFkY2Y0Y2E1ZDJlOGY4MWFjNDA0ODZkIGxlZ2FjeS10cnVuaworOTQwMiBjZjMxN2E5YzQ5OWJiZmY2MTU1MjU1YjFiNDI0ZjM4ZGVjZDM5YzMzIGxlZ2FjeS10cnVuaworOTQwMyAzZGIyNGI0ZDljNDIyNzViZDlkMzBkOTdlYjM4ZDczZWM4OGI2NmQ1IGxlZ2FjeS10cnVuaworOTQwNCA4YzkyZWM4ZjYwMzhhNzUwNzBlMmVhMjk3YzFjYTA1NDhjNWRkNmMxIGxlZ2FjeS10cnVuaworOTQwNSA1MjEyNWNlMzc2YTQyZTQyMTI4MTJkYzlmMzllMmYzNWM2MWNlNDRhIGxlZ2FjeS10cnVuaworOTQwNiBiOWQ5YzUzZjFlMWRmNTEyMzBiYjg2YzRlZjdmYjQwNDBlZmUxYzU4IGxlZ2FjeS10cnVuaworOTQwNyA3NDAyNGU5MDdjNjBkNjA1NDZhNjZiOTFkYjEzZWU4MjdmZDQzMmEyIGxlZ2FjeS10cnVuaworOTQwOCA3NzQ0YmYxZTQ4NWI2NWYxYzVjNjVhNTIzN2YzOWQzYjVhYTcwYjUwIGxlZ2FjeS10cnVuaworOTQwOSA0MDkxYjA0ZjkzYWRmMDE4NzU2M2U0Zjg2NDRkYjMwM2FmNDJjYTAzIGxlZ2FjeS10cnVuaworOTQxMCBjNWI5MzliNWE5ZTAyZDZkODMzZTNkMjk1MzA0OTI1ZDllMTlhMmIyIGxlZ2FjeS10cnVuaworOTQxMSBhNzJkYzUyYjk3YWRkNDYxYzM5ZTdiMzhlM2I0NzNmMjYxY2YxODY4IGxlZ2FjeS10cnVuaworOTQxMiA2ODNiYzM1YWI3NTNhZjc4YjdiYjA5MGU4MDNmZTU3YzNjODBjZDNiIGxlZ2FjeS10cnVuaworOTQxMyA2YjZlZjkwOTIzOGUwNWNkMGQ3MDc4YzljZjliOWFmNDRkOTJjNzFmIGxlZ2FjeS10cnVuaworOTQxNCA0NTVjYmFiNGE5YmU3ZDY1NDYzZDdmMTAyY2ZmYjI1MzIxMzJjNTA0IGxlZ2FjeS10cnVuaworOTQxNSBlM2M4YzM0MGE5OTBjOGNkZmFlMDAyZjM4MDNjOTM3ZWJiZDAwM2U4IGxlZ2FjeS10cnVuaworOTQxNiBiM2IwYWQ0NzEyYWQwZjg0YTMyZmVmZWUyMTkyYTViYWIwMzBiY2UxIGxlZ2FjeS10cnVuaworOTQxNyBkYzNjOWMwNGVmMDdiOTMzYTQwM2ExZmQzY2EzZGQ0OTZjZmExNjkxIGxlZ2FjeS10cnVuaworOTQxOCAxZGFmYWQzMDcwMDY2Yjk5MWE3NmUzNzU3ZGY1MTJjN2EwOGU0OWVlIGxlZ2FjeS10cnVuaworOTQxOSA5MTA0Nzg0YWYxNTkwOGFjZDcyMDVhMjkyMTkwOTI5NDIxYTIxNmRjIGxlZ2FjeS10cnVuaworOTQyMCAwNjI5MWYwNGJhOWMzOGNhOWUyMDI0ZmIzYjYyZjljYmE3ODUwYTlkIGxlZ2FjeS10cnVuaworOTQyMSAwYzFjYzJkNmM0ZjAxZGM0ZTE0MGRkNmZkMzA0MGMxNmEwZTdhMGJiIGxlZ2FjeS10cnVuaworOTQyMiBmZWJhM2Q5YTMwYzcyMDBhOGEyMGNjMTYxYjIxYWQzMGFkOTVkNjRmIGxlZ2FjeS10cnVuaworOTQyMyBmMTRlNDQ1OWZiOTRkYmM3ZDlkM2Y1MWZhNmQ2ZTgxZTFiNDUwYTFjIGxlZ2FjeS10cnVuaworOTQyNCA1ZWY0NzAwNzE5ZGU5YTIyNmIxZDYxMTIyMjdlYTFkODBlMDE5NjRlIGxlZ2FjeS10cnVuaworOTQyNSBlN2JmNTQ1M2E2ZmY0ZmY3NjQ4MmYyNDFlOGUyNDRjZTU0MDFlN2JlIGxlZ2FjeS10cnVuaworOTQyNiA4MDBjYjIzNGY2NzZmMWFiMDNlNjg2NzJkNzUwOTU5NWYwNTg3NmYxIGxlZ2FjeS10cnVuaworOTQyNyA2ZTBlZGRmYTQwNGE3MTcwOTFmY2Y5ZDVkMzFkNmU0ZjI3M2VlZWM0IGxlZ2FjeS10cnVuaworOTQyOCAzOTEyZWZhNWJmY2EyNjYzZTY1OGZiYzI2MjZjMGNlMTViYTFlMmU2IGxlZ2FjeS10cnVuaworOTQyOSBjOGFkOWRjOGFlMWViZjY5YzIxMzA4ZjZjY2Y0ZGQ4MjE4ZDZhM2ZlIGxlZ2FjeS10cnVuaworOTQzMCAxMTQ0YTllZDk4ZDZhYjM4MmQ5YzRjOGI5ZDI4MjcwMDY3NTQ4MjMwIGxlZ2FjeS10cnVuaworOTQzMSBkYzA3MzkzNzk3MTQ5ODgxMTVlOWM5OTQ3NTI3OGEwYjViZmNiNWQ5IGxlZ2FjeS10cnVuaworOTQzMiA5NjQyYTI4ZGYyYjE0Yjc3ODc4ZGRlZGUxMjZjNDE2Y2Q1YjQyMDBiIGxlZ2FjeS10cnVuaworOTQzMyAzODQ5M2I5Mzc2ZWFlMTgxYjNhMDYyOTQ2ZDA2NGVhNTI1MjVmODgzIGxlZ2FjeS10cnVuaworOTQzNCA5NzU0YjIyMzM1ODA5MWNjNjdiZTQ1YTU1MGFjMTAxZDIxOTY3NzEzIGxlZ2FjeS10cnVuaworOTQzNSBkZjViNTZhNWFmY2ZkNjMyNGZlZDJjNDVhOGQzZmE2ZmU4ZDNjMWUzIGxlZ2FjeS10cnVuaworOTQzNiAxMzlhZDMxZmY4ZmQ1Yjk4NmI4YzA4M2Y5YTZiMzVmN2Y2NDEwNjlmIGxlZ2FjeS10cnVuaworOTQzNyBmZWRiZjkzMjUxOTBiOGE2YTYwMzA2YjkyMTg0ZTE0ZmQ0NDE0YzFjIGxlZ2FjeS10cnVuaworOTQzOCAzMTlhNTFjMzgxY2VlNGY4YTRmZDlkYzE0YTU1YzZjYWM2NmY4MzU5IGxlZ2FjeS10cnVuaworOTQzOSBjNTg3NGY2ZjU0MzFmMjk0YjlmYzVhZmEzYjkzZDhlNzRhMjc5Zjc1IGxlZ2FjeS10cnVuaworOTQ0MCA0ODRhMWM2OGM1NTg5NTZhZWFmMWFjOTdhYTVmOGQ0OTdiMGJjZDMxIGxlZ2FjeS10cnVuaworOTQ0MSAxMGYyOTIxYTA5MWU3MTRhYzc3ZmNmMmIxZmIxZWIzY2MxOWQ5M2IxIGxlZ2FjeS10cnVuaworOTQ0MiAzM2JlN2Q1ZDQ5OGI2MDcyYjcyYWIwYTcwMTIxNGIwNjIxZmIyZWUwIGxlZ2FjeS10cnVuaworOTQ0MyBkY2U4MzhjZDQyYzE4MDlkNzEzNTI3ODZhZTJkYmM1MTEwZWQzZDk0IGxlZ2FjeS10cnVuaworOTQ0NCBlZWQ2MzA0OWRmOTU5NTVhOTk1N2NiNjVlZDRkY2Y1YTljYTdiMDNhIGxlZ2FjeS10cnVuaworOTQ0NSA3NDRlMmI2OGYzYjZkOTQwYmJmMjUxMTE4NWMxOTc0Y2Y5OWEyZGEwIGxlZ2FjeS10cnVuaworOTQ0NiAzMWVjYTY0OGY3ZmZlYWYxZDJjNjQxMzRmZjM3ZWYwMTlmYmYzZWVhIGxlZ2FjeS10cnVuaworOTQ0NyA0OTJjNmRiMTYwYWM5OWUzZThmZjI1NzJlYmE5MmI4OTcwODE5ZTc3IGxlZ2FjeS10cnVuaworOTQ0OCBlNWFmZjQxMDM2ZjNkNjU5MDYwZTJmZmJmMWZkOWE2NGYxZDdhNjcyIGxlZ2FjeS10cnVuaworOTQ0OSBiYzEyNWYwZDJjNWQwZjE0MTRkMDQ4ODM1OTY3ZTBkZTFkNjVlOGY3IGxlZ2FjeS10cnVuaworOTQ1MCBhNjkyOWU3NDE3ZGQ2MmM3NzQxNTg4MTViNThiMGZlZWY2YWZlNDZmIGxlZ2FjeS10cnVuaworOTQ1MSBiYmFkMmM2ODRhZDcyYmNlNWYxMzQ0ZGZjNGIyZDY3YTg2N2RiY2NiIGxlZ2FjeS10cnVuaworOTQ1MiAyM2IyN2IwYjIzNWIzMTU1MmQ1N2VmOGUzM2JjYWU0ODc2OTZhZWM5IGxlZ2FjeS10cnVuaworOTQ1MyA4MGIxZTI3ZjIwZDQ5Y2UxMTk1ODg1MzUyM2Y1YmU2YjliZjEyZTQyIGxlZ2FjeS10cnVuaworOTQ1NCBjZGE3MjBiMTkxOWRmZTUyMmFjYjkwYmFjYWIzZmM1ZWM4Nzc3MzU5IGxlZ2FjeS10cnVuaworOTQ1NSBhNTY4NmU3NTY4NWYyZDNkZWI1NmQ1NTcxMmVjMzhiZWIxYzYyMDIyIGxlZ2FjeS10cnVuaworOTQ1NiAyZjJlZmI4ZmE1NGZmM2M2M2EyY2UxYTE2N2EzZjkxYmM1OGUzYjVkIGxlZ2FjeS10cnVuaworOTQ1NyA3Njg4ZjMxMDZhZTQ0MWMyY2I3ODczMmQyZDZkNWEwMzMzYWRmOTQ5IGxlZ2FjeS10cnVuaworOTQ1OCBjZmFkNGIwMjk2NDVlOWE3Y2IzZGFkZWI4ZWQzMDQ5MmYyMGRhZjRkIGxlZ2FjeS10cnVuaworOTQ1OSBiNzBiYTRkYjc2N2UwOTc0MGY1ZDFjYTdjMDdlYjg5MmYxYThlMTQ5IGxlZ2FjeS10cnVuaworOTQ2MCBmMzM2NDcwOGMwOWUwNzkwMTBiNmExN2U2ZDAyMDg2MjQyY2Q3ODI3IGxlZ2FjeS10cnVuaworOTQ2MSBmZmNhZjdhZmQ1ZDllM2U5MDFmZDhkYmQ1YmNlZjRlMTQ5M2MzYTQ0IGxlZ2FjeS10cnVuaworOTQ2MiBmNWZkMjM5YjE3OGFkMDA4YTY4MWI0MWRiZjUwNmQzNzQ2MWM3YjY4IGxlZ2FjeS10cnVuaworOTQ2MyBkNGU5YWM3NTdlNWMwN2ZmNTljNmIzODdjZDJjNDI1ZDFhNjM2YzM3IGxlZ2FjeS10cnVuaworOTQ2NCA2MzhkODc3ZWE5OTU4MzUzMzZjMDg4OGIxM2EzMjI2MDMyNjQ5ZmMwIGxlZ2FjeS10cnVuaworOTQ2NSAxYTQxNDE1OGViNjY1YjExMGNkNGE2ODcyZWQzYmFiNWEwNDMwZWQxIGxlZ2FjeS10cnVuaworOTQ2NiAyZTkxZmM3MWNiYjUwMTk4MzQ3MjkxYmI3MzRkNzk4M2Y0NWNjODNiIGxlZ2FjeS10cnVuaworOTQ2NyBmZTEwOGE0YmI4ZDU4ZGFhY2Y4N2M3ZGIzZjFjYjkyYzUyNzA1MTQ2IGxlZ2FjeS10cnVuaworOTQ2OCBiMjQ0NWM5M2YwM2I4OWMwYTA2ODc4ODI4NGJlYzlhY2JjNjYwYTA2IGxlZ2FjeS10cnVuaworOTQ2OSBmMzQ5YmYwZTkzMjI3NmZiNjRjMTc0NzM3YWFjYWMyYjI4ZGFkMjE2IGxlZ2FjeS10cnVuaworOTQ3MCBkMDA1MTVmOTJiNTM0ZDE0ZTVkMDQ2NzMxNGI4MTI0YWVkY2I4MjUyIGxlZ2FjeS10cnVuaworOTQ3MSA5ODdhODMxYWFmMjM2YWRmNTYxMWM3OTY5ZTdmODgxYmNkMzgyNjRiIGxlZ2FjeS10cnVuaworOTQ3MiA2MGNjZmE5NjU2YWNmMGI1MjM1NGExYzE1ZDdjM2Y0Yjg2OWViYjMwIGxlZ2FjeS10cnVuaworOTQ3MyBlYmNmNjA0Y2NlZTA1MTEyOWZiYWFlNmYyNjIwZGJjNGFhMGRlZTA1IGxlZ2FjeS10cnVuaworOTQ3NCA2OTExMjk5MGQ4ZTI0OGI5ZjNiYjgwZjVkZWYwMDI3ZTlmOGYyZTUzIGxlZ2FjeS10cnVuaworOTQ3NSBmYTE5NDMwZmVjNGU0OWZhMzFlNTAwZmJjMjk3YzExYWYxZGRkMTdmIGxlZ2FjeS10cnVuaworOTQ3NiA4YWQxN2U0Y2NkOWJhODk5M2ZiN2ViNTExNzM1Y2YwZGM3ZGM2M2ZkIGxlZ2FjeS10cnVuaworOTQ3NyA3Y2U5ZGEwMjk2MTlmNTViYzUzMTVmN2JkN2I2ZjFhOGM5OTBiYzRmIGxlZ2FjeS10cnVuaworOTQ3OCBmMmFmM2M2NDU3MTAyNGNmNzkwMTFjMDU2Y2RmZjJiOTAzOTlhZWFmIGxlZ2FjeS10cnVuaworOTQ3OSBmZWI4MGVhNTQ4ODg4N2NlZTg1NTI4YjE5NzgwODBjZmU2ZTU3ODZmIGxlZ2FjeS10cnVuaworOTQ4MCBmMGY5YjJlNGY0Y2MwYzUwOWY4ODRkOGIzZmQzNjdlZjA5YzJhYTUxIGxlZ2FjeS10cnVuaworOTQ4MSAyMjQ0NDM5ZmFmY2YwNmMxZGY2NmY0ZmEzNDY2NmM2ZjA2OTcxOTY5IGxlZ2FjeS10cnVuaworOTQ4MiBhMTBjNDUzOTEyN2ExY2YwYzEyMjBmOWYwM2M2ZGRkNGU0ODVlNWJhIGxlZ2FjeS10cnVuaworOTQ4MyBjZGVlZmY0ZDZjYjRjZjcyOWE4ODNiYjA3YjUwMWMxZjhmMmIxNzkxIGxlZ2FjeS10cnVuaworOTQ4NCA5NzczZDM5NDFjOTZlMmQzYmUyNjNiOGUwZDRhNzVkNGFkODU0YWUzIGxlZ2FjeS10cnVuaworOTQ4NSA2ZjJhYjRhZmE4Zjk0Nzg3YzA2ZmNmMGJkMGFkOGYzN2I2NGQ4YWQ5IGxlZ2FjeS10cnVuaworOTQ4NiA0Yjg4NzExOTg1YTI1ODljMzIxOGZlNTYwNTM5ZjRjNWYyMzIxODI0IGxlZ2FjeS10cnVuaworOTQ4NyA0NDRhNmIwN2RhNDY1MTY4YWEyOGRiNzFhODJjOThlODMxYTFiZWQ1IGxlZ2FjeS10cnVuaworOTQ4OCAwYWJhNjQ5YmQ5YmIzYWNkMmNmNmJhM2IzZjI0Mzg0YTA4MzFkOTc0IGxlZ2FjeS10cnVuaworOTQ4OSA3YThjMzA4MTk2ZDE0NjU1YzQyZjMxYjdlNTI0NzVhMjgzMjA5MGI2IGxlZ2FjeS10cnVuaworOTQ5MCAyZGIxNmQxZGJkODdjYmEwNjgzMjM2ODBhMmU4YzI1Y2IzNTY0ZGU3IGxlZ2FjeS10cnVuaworOTQ5MSBhNWRmMDJiNmM3YTgzMDgyYjQ3MmI4ZmYwYjQ4NzMxYTBmODk5M2VhIGxlZ2FjeS10cnVuaworOTQ5MiBjNzVkODk5ZTY2NmYxNjhkN2U0N2IwMDVjMTQ1ZDZmYzI2ZDM2M2YyIGxlZ2FjeS10cnVuaworOTQ5MiA4NDQ2MTAxMWExYTBhYjQwMmUzNTJmMDY3NDhmMjlmYjViNTU1OWU1IGxlZ2FjeS10cnVuaworOTQ5NCBkYzg1YWQxYmEwZTE1NjNhM2ZlYmYwYTkxNGUyY2RhZmRhYzJmODA2IGxlZ2FjeS10cnVuaworOTQ5NSA1OWFhM2UxYzEzZGM1ODIxYjE4Mjk3OTY2MWIzNzMxMGMyMzFjMzU1IGxlZ2FjeS10cnVuaworOTQ5NiAwYTk1MTQ3MGIxYmYzMGZmYjljZjFmOTVlMWFjNDc3YTNjNjk1MzJlIGxlZ2FjeS10cnVuaworOTQ5NyBhZGExMzExZGEyODZlZDY0MDA3ZjhjODFkMjg3N2IwZmEzYzIzNzE2IGxlZ2FjeS10cnVuaworOTQ5OCAyNjFiMTFiMGNjZDY0ZGYwNGY3ZGUwODE2MDdjZjg5MDhlMTFkNjEwIGxlZ2FjeS10cnVuaworOTQ5OSAzODQ0ZGUyYTcwOWY1MGNkNzEyNDRiMWQ4ZjI3MjExZDYyN2U5M2MxIGxlZ2FjeS10cnVuaworOTUwMCBhNjZkZjU1NWYwMjVmMmI4YTYyMWM0ZGI5MmUwMjY1NDJlYjIyZjhmIGxlZ2FjeS10cnVuaworOTUwMSBjY2Q0NzFjN2I4NjNjZGUyMmU0ZDMyNWEzYWEzMWQ5YWM5ZWZkMDA3IGxlZ2FjeS10cnVuaworOTUwMiBlMTdmZTc5MzA1Yzc0MDZiOGM3YjljYzI5ZWZlNDBmOTI4MjBlMjJiIGxlZ2FjeS10cnVuaworOTUwMyBjNWExOGZjNGY5NjYxNGJiMTJkZjM0YTNiNzQ2YjNjMTY0ZTc5MWFmIGxlZ2FjeS10cnVuaworOTUwNCA0ZDY0NTkwOWI4MzQ1NWQyMWJhZGYzZWUxNGIzYWZkZGQ1NzFhYTI5IGxlZ2FjeS10cnVuaworOTUwNSA4ZGEzNWYxYzczOTAxMGJiOGJmNGQzY2MxN2JhMmQwNTBjYTAwODUwIGxlZ2FjeS10cnVuaworOTUwNiAzNzlkMWZkNDJkYmYxZjkxZjkxMjFlZWQ5MWY1ODBjMDUxYTY2NzBjIGxlZ2FjeS10cnVuaworOTUwNyBhMzY3YWFhNjUwM2NiZGUyY2FlMGQzYWY3MzE4YTdjNTVlNWFhYTc3IGxlZ2FjeS10cnVuaworOTUwOCAwNWUwZTQ5OTAxNGYyOTRlZDYyM2NkZWYzNTMzZWUzODQzOTJjNGVmIGxlZ2FjeS10cnVuaworOTUwOSA4ZDExZWNjMTc3YjJiOGM1MDM0ZTQzMzRiMWJkZmY0ZDdmOTNmYzM0IGxlZ2FjeS10cnVuaworOTUxMCBmYTg1YTdmZDc0MGJjNjFiYjM5OTFhZWRmNjQyZTRmZjI2ZmVjYWFlIGxlZ2FjeS10cnVuaworOTUxMSA2MTQ3NDU5YmZjZmI5YTBlNjdjZmE3MmExYzhkYjhmOTZlYmQ1MjA4IGxlZ2FjeS10cnVuaworOTUxMiBkZGY1MmYwMWJjMGE3NmQ2ZDdjOTgyNmVmNjY4NzAxODUxNmQyYTI2IGxlZ2FjeS10cnVuaworOTUxMyAzMTYxNjc0OTkwMDU5OTY4MjU5YzE4M2Q5ZjI2NDk3NGVmYjYxMTQ5IGxlZ2FjeS10cnVuaworOTUxNCBkMGE5NzAxNGVkNDJmMDFmNjI2MTMzZWUzYTg3MTIyZTQwODAwNDNjIGxlZ2FjeS10cnVuaworOTUxNSAyNjEyZjlhYzMxZWRhMTc3NjI3ODM0YjMxM2NmNDhmNGI3YjFiOGNkIGxlZ2FjeS10cnVuaworOTUxNiA0OWNlMThhMTY5OWY0YzYyMDg4ODc2ZDE2YzJiNWJhZjZiNWEyZDAzIGxlZ2FjeS10cnVuaworOTUxNyBhYjRkNjA0ODIyZDBhY2YyNTdmNmFmMWE1YzMzNDdkMmQyOTJiODczIGxlZ2FjeS10cnVuaworOTUxOCAxYzkyN2VjZmNiYjNiMTg4MGQ5M2M5MDEzNWVlYjA3ZTBlNDRhYTE5IGxlZ2FjeS10cnVuaworOTUxOSBhNTJhM2UyNmVkYzRjZTk0MTRlZTEyNWZiZjM0NzBkNTI1ZTA5ODMwIGxlZ2FjeS10cnVuaworOTUyMCA4NGU4NzFlMjAwODdhZWNmODQ2MjJjZGY2NDM4MzQ3NTdkZmFmY2FhIGxlZ2FjeS10cnVuaworOTUyMSA3NmVhZjM2MDQwYmU1NWNhZTJiYjFkYjMwMDRlYmUyNjg5YWRkZWM5IGxlZ2FjeS10cnVuaworOTUyMiAyOTdlYTY3OTI2ZWI5NGFhNDk1NjdkZGE5MDA4Njg0YjM3ZDU3ZjQyIGxlZ2FjeS10cnVuaworOTUyMyBhZTYzZmEzY2IxYzZmOTFmNjM2MjdkZWYwNGEzNjk5M2VmOTI3ZmE4IGxlZ2FjeS10cnVuaworOTUyNCBjNGE3OGI5MjRkZDlhYzg4NjgzYThkZjcwNGE5N2Q5ZDFkN2QxN2ExIGxlZ2FjeS10cnVuaworOTUyNSA5ZmUzMzVkNDU1OTU2Y2NiODk4MTRmYWE2YzZhNjYyYThiOWUzNjg1IGxlZ2FjeS10cnVuaworOTUyNiAzZWNhNWYzNzUwMWE3OWMxMDEzMzNmNTk5MWQzOWFmNDA4ZTE3ZmVmIGxlZ2FjeS10cnVuaworOTUyNyBhZWNlNTEzNjJhZGFjNWMxYWEwZTJjNzY4NzYyNjYzYTA5NmY2OGU2IGxlZ2FjeS10cnVuaworOTUyOCA5MGVkY2IzOGZiMDAzZjI0M2Q1NzZlZmJiMTY5NGI1OGNkMTgxMTI2IGxlZ2FjeS10cnVuaworOTUyOSAxZjJmNTU5NzczOWJhMWViNzFkMGY2ZjE5MWU0ZTExNjBkYjE5NzRhIGxlZ2FjeS10cnVuaworOTUzMCA1MDI4ODBhZjQ2NTRlMzc5ZDlmN2U1MTcwMDJhYTU2MTlhM2MyNzIxIGxlZ2FjeS10cnVuaworOTUzMSBkYjBkZDExNzU0MWQ0NmU4MmEzY2MwYzY4MzhhYjdhNWRkYTFjY2QyIGxlZ2FjeS10cnVuaworOTUzMiA0MjUzNDQwOTc1MGEwNGVhMTE5YmY2ZTJiMWQ4NGI5NGE0OGFjNzMxIGxlZ2FjeS10cnVuaworOTUzMyBkZjA1YjljNGJlN2YzNzcwNTE2ODE0ZGI0MjBhOWZkZjkzMDZjMmM4IGxlZ2FjeS10cnVuaworOTUzNCA1M2U1NGExNGY0MzIzMzlkODE2YjQ5OWUwZDBjYWNiNmIyMjQyNzg0IGxlZ2FjeS10cnVuaworOTUzNSAwODk2ZDMyYjYwYTRiMWNjODAyY2YyNjdhNWFkMTJiMTYxZDIxMGNhIGxlZ2FjeS10cnVuaworOTUzNiBmMmIyYTdlYTJhMWUzNTVjOWY0MTlmYzZkODYwYWM3MWEyMTFjYjY0IGxlZ2FjeS10cnVuaworOTUzNyA2ZTNiNDY5NWZmYWUxY2FlMDA3ZmM0N2ZlYjg4MDI4ZjdmOWUwMzJkIGxlZ2FjeS10cnVuaworOTUzOCBjOTVlNjBlYWQ1ZTA2YTFlNWUzZTk5NmYyZDQwZGFjYjY3ZDQyZTM5IGxlZ2FjeS10cnVuaworOTUzOSAxZDBiOTAyODUyM2M2ZWJiMzFiOGNhYWY0M2QzNTAxNjhiODE5OWYyIGxlZ2FjeS10cnVuaworOTU0MCA2YjRmOGE5NmUxZDQ0NGY0ZmQ2YTc2NDcyYTY3ZDE5NjMwNzRlYWJmIGxlZ2FjeS10cnVuaworOTU0MSBlNjhlZWIzNWQwNGQxZGI3ZTdjYmIxYmU3MmQwYTg4ODc5YjNhNzFjIGxlZ2FjeS10cnVuaworOTU0MiAwYzcwMjY0NTczZGIzZDM1MjEzNjEwYmVjYzU1NGNkNGEwOGU5ODVlIGxlZ2FjeS10cnVuaworOTU0MyA4ODY2YzY5YjBhZmM4ZGM3OTMxYjRhNTE5ZjQxMDU2NWQ0YzgwOGZlIGxlZ2FjeS10cnVuaworOTU0NCBmYTQyMzA2ODU3NTcyZmY4NTNhYTAyOTk2YmE3MGQ4ZGJmNGEzZWE0IGxlZ2FjeS10cnVuaworOTU0NSA5MDY1MGJiZDlkYmI2YWM1OWYzMDdiNjIwYWQyNDdhNTcxOWRlNzcyIGxlZ2FjeS10cnVuaworOTU0NiAyY2RmMTFiMmVkOWI0NDEwZmFiZGUxNjA0N2QyYWQ2MmQ3ZDFiYWM2IGxlZ2FjeS10cnVuaworOTU0NyAwMGU2MTI1NjA0OTJjNmFhMzVhZTQwNWJkZDJkZTcwMDdjNzg2Nzg4IGxlZ2FjeS10cnVuaworOTU0OCA3NWExYWVjNmQ5YjJjZDI0MzhkNjk3ZDRkZGQ4YTI4NzVjODM2MWJmIGxlZ2FjeS10cnVuaworOTU0OSAwMzE0ZWNiYzVmNWQ0ZTI1YmU2ZWFjNzkyNDQyMTI1NTYyZjExYjQyIGxlZ2FjeS10cnVuaworOTU1MCA1YzM1M2M1MjJhNDgyNzgxNDhiNWVmZDRiYzdjODJjYjc3OGNjMGExIGxlZ2FjeS10cnVuaworOTU1MSAzYjUxOWE2ZDI3YmI1YmUyZmU4MGRlMzY2OThhYThjMjU2NDMwMTAwIGxlZ2FjeS10cnVuaworOTU1MiA4Y2Q1NzNiNzJkNGI2MTNjYWIwZTBlM2RkYzdiYWRmMTY2OGEyNWQ3IGxlZ2FjeS10cnVuaworOTU1MyAzZDhjMWI4ZjYwOTkwZTg0YzIxNWQxMTkyY2QxNTMxYmRmNTNhMTZhIGxlZ2FjeS10cnVuaworOTU1NCAyYWU0NDE3YWMzMzA5ZWU2ODI1ODdkMGZmYWYyY2M4Nzk5MWExMzlhIGxlZ2FjeS10cnVuaworOTU1NSBjMWFkMzRiM2MwNjk5NTBkNDc0ZGE4OTMwYTQ3NTZmZjU0MmZjOTY1IGxlZ2FjeS10cnVuaworOTU1NiAwMzE0NTUzNDgyYTI5ZTc0NDM4YTI1MWJjMzZiYzYyM2JmYTY2NzFjIGxlZ2FjeS10cnVuaworOTU1NyAzMjJkY2E1ZWUxNDViZGNiNDdkYmQ0MjRhMGI1MDEwOThhZDlmNTEzIGxlZ2FjeS10cnVuaworOTU1OCA5MjRmOGEwMTE3ZDVmYjAxMWQ1ZjNlNWFkMzE3MTllMzQzZjk2MzI5IGxlZ2FjeS10cnVuaworOTU1OSAwYmFhMmFiNDJlZTkwY2RkYWM2NmYzMzEwMmY2YmI4MjdhYWQ1NjlmIGxlZ2FjeS10cnVuaworOTU2MCA0MTliODZiMDRhZTRkOThiM2U2ZTY4ZjlkYTM1OGZlOTU4OTk5NTVmIGxlZ2FjeS10cnVuaworOTU2MSA5MTNlNDhhYWFjNzYxZWFjNDU0MTQyZGRhMDZlODhjMGQ5NzllNDljIGxlZ2FjeS10cnVuaworOTU2MiAwYzY4ODc3NjU5Mzk1MjRlNDM4MWNkZDI0NzJhNGZmMTgxY2M0ZTYwIGxlZ2FjeS10cnVuaworOTU2MyA5YjA1YzIwYzU3NzZhNGYyNWMzMjkxNzE0Yzc0OGVmZmIyMjM2MjMyIGxlZ2FjeS10cnVuaworOTU2NCBmY2IyZTNlZTg5OTU5NTZiODA1NzZiNTVlOTBhMzM5NTcwOTU3NDE1IGxlZ2FjeS10cnVuaworOTU2NSBhYjUxZGEzNDczMTZkNGJmYWI3NGIwNWUxMTMwNDUwMmRiNzRlYjZjIGxlZ2FjeS10cnVuaworOTU2NiBhMmUwNTQwMzI4OTljNjI1ODZjMDQzNmFhOWQyYTFjMjQxZTEyMDNhIGxlZ2FjeS10cnVuaworOTU2NyAyOWIxNjg2ODc1ZGFhNTE1MTNjNDFkYjYyODVhMjIzNjk4YmMwNmVmIGxlZ2FjeS10cnVuaworOTU2OCA5NjQ2MGVmMzNmZGVkN2VkMTJmZDc1YThhN2I1NTZmNGUyZmU2MWUzIGxlZ2FjeS10cnVuaworOTU2OSAyZThiY2RlNGMyNDhmZmJlNjk5NjdkNzcyMzc0N2ViMWNkODQ2YTUzIGxlZ2FjeS10cnVuaworOTU3MCA4YTU1NjQzZTY2N2ZhMTcyZGRkMDVkMjc2MTNmMzk5MmE5MDAzYjJlIGxlZ2FjeS10cnVuaworOTU3MSBhZjgyNmIyM2YwMDY0MzA4MzVlMGE3MmM5YjYxMDlhMjhmNTM2MmQyIGxlZ2FjeS10cnVuaworOTU3MiBlNTU0ODA5NmI0MmE1ZmI5MTI2ZThlYjYwNjVmNWU5YjhlZjU3ODk3IGxlZ2FjeS10cnVuaworOTU3MyBiYzE5NzZmZjZmZmQzMGZiMzUzNDc0OWU4OTc4NTlhMjc5ODdjYWE0IGxlZ2FjeS10cnVuaworOTU3NCA1YmI4ODQ1Mjc0NDZmOTY1ZDFlMjE5YWFkNjJiY2I0MTAxYzNhZDQwIGxlZ2FjeS10cnVuaworOTU3NSAwMGE4NWFiMDMzN2Y3Zjg3Y2RmNjI2ZDNiZGVkNTA4NWM4NDQ1YmYwIGxlZ2FjeS10cnVuaworOTU3NiAxNjc2ZmFkN2I2M2U3NTI5ZDJmMThiNTE5OWVmNWFiMDkzMmIxZDhjIGxlZ2FjeS10cnVuaworOTU3NyBmN2Y1NWJiNmEzYjMwODBmMmUwOGJiMjUwMTNhYmE5OWYzZGNlZDMxIGxlZ2FjeS10cnVuaworOTU3OCA4MDg0NzlmODVhMjlhM2IxMTllYWY1YjVkY2U3YWQ4ZGFkOWUzMjExIGxlZ2FjeS10cnVuaworOTU3OSAwZGMyZmNiMDc2YWNhNWI3YjRhMmZkMTVkZDAzYzRjMDQ0NzhlNTk0IGxlZ2FjeS10cnVuaworOTU4MCBlZmFhMDFkZWZmZDJkYjA0MjBlM2M5YWI3OGZmNmU2M2QzNjQ5NGIyIGxlZ2FjeS10cnVuaworOTU4MSAyZTVhMTE2ZTU0ZWNkNWNjZTFlNDcwNGM5N2UzMWZlNThmNDA0YTE2IGxlZ2FjeS10cnVuaworOTU4MiBlNzA2MWFiMjQ4NTIxNWU0NGJiNDdhYmU5MjhlNjI3YTI5NTZmN2NjIGxlZ2FjeS10cnVuaworOTU4MyAyOGM3ZDVmY2QzYWM5ZGEzMWY2YTkxZjhhOGQyZTcxYzE2ODExYTYzIGxlZ2FjeS10cnVuaworOTU4NCAzMTc2ZGVhY2I2ZDFmMGVhYTY1MDEwNjllMjkzNmQ3OWVhYTdiODg5IGxlZ2FjeS10cnVuaworOTU4NSA2YzkwMGFkYjFlYzNiMTVhMTAzYzNjOGEyYjZhNjkxOGNjOTVkYjQ0IGxlZ2FjeS10cnVuaworOTU4NiBlZDYyNTQ4MDQ1NjM1ZTU5YmVhZjI3ZWU3NjVlOGRlYmUwYWViMDhjIGxlZ2FjeS10cnVuaworOTU4NyBmNDM2Njc4NjZkNWU1ZTYyMWZhZDVhNTA3OTdlODQxZjg4NGIxMjY5IGxlZ2FjeS10cnVuaworOTU4OCAyODIyMzY4YzI2NmEzZjA5OTZkMDZlYmUwZGY5MDA0ZjU3YTQ4ZjFjIGxlZ2FjeS10cnVuaworOTU4OSBmMDYzZjFlYjI5NjRiYzQzMWE3MGMyMjA2ZDg0ZGFiNjA5ZDg4MDI4IGxlZ2FjeS10cnVuaworOTU5MCBlY2U0MTIzZTM2ZWEyY2M5OWI1ZGUzMmM5MjFiZTdjNzUzMTFiYzQxIGxlZ2FjeS10cnVuaworOTU5MSBmNWYzMDVkN2E2MTc1NzQ0ZTJjM2RjNzFhNGZhZGRmOTA3MjY2NTA1IGxlZ2FjeS10cnVuaworOTU5MiBmYTA5MzcyZjc4NzJkYmFjNDExYmQ3NWIyNTc3YzM2OGI4YWYyYWM2IGxlZ2FjeS10cnVuaworOTU5MyBlYTdkYzUxMGUyZGY1NjllODViMDcwY2JiMTE3ZTA2MmM3NmZjMDAwIGxlZ2FjeS10cnVuaworOTU5NCA0MTUxNGQxZWQ2NjRlMmFmYWMxYmRmNWQzMTVhMGVmZmNkZDNiZjg5IGxlZ2FjeS10cnVuaworOTU5NSA0MTlkY2EyYjNhNjE3OTBiNDNlYzU5ZGMxZmEzMWExYTNkOWNkYTUxIGxlZ2FjeS10cnVuaworOTU5NiBlOTEwOGU5N2E1YTAxN2UwMjdkZjMzY2RiZmE1NTQzZTkxNDgyMzhkIGxlZ2FjeS10cnVuaworOTU5NyA1MTYxODk5ODRiMGNhMzk0Y2UyZjRiZmI1YWViY2JlYzU4M2RjZWQ2IGxlZ2FjeS10cnVuaworOTU5OCAwZWZlZDRkMzMyM2IxMzAyYWNjYTAzOWJkNzE2ZTVjY2Y4ZDJlMzYzIGxlZ2FjeS10cnVuaworOTU5OSBjODc0NWQyMDUxMjI3MTZjOWUxMGRiNzk5ZmI2ZjEyZjllNjg2NDg0IGxlZ2FjeS10cnVuaworOTYwMCA0MWQ2ZGI4ZTI2ZGMwMzM5M2RmODdiNDkyNzJjNWIyNDliYjMyNTY5IGxlZ2FjeS10cnVuaworOTYwMSA1ZDUxN2RkY2JkMmVmNTE5MzNlOGYxZmU0Y2MxYzVkMzIzM2U1MDM3IGxlZ2FjeS10cnVuaworOTYwMiBjMDM3ZDAwYjFlMmNiYTg5ODVjYjYzOWMxMDY3YjNmNjQ1NTdmMTcwIGxlZ2FjeS10cnVuaworOTYwMyBkZTRjODFjMDY5OTQyOWJlZTQ5N2ZkOGIxYWQ3NDRmOGM2OTNkNWY5IGxlZ2FjeS10cnVuaworOTYwNCBkMmMxMTBhY2M2MGMxNjYyNjI5NTU3MGY3ZjZhNTkzMDNmMmMzOTkwIGxlZ2FjeS10cnVuaworOTYwNSAxYzRiYWFkYTU1OWUyMzBkMzQyMTYxNmEyYTFmNmE5OWM5ZTdiNmJhIGxlZ2FjeS10cnVuaworOTYwNiBkZTRkY2E5ZTQ3NzhjZmVmOTdhOWE4Y2YxNzc5ZDc2OTBhZTM0YmI4IGxlZ2FjeS10cnVuaworOTYwNyA5NzMxNWJmMDhmYWQ2MjNkNjIwNGQwNWUwN2I3NmQzNzY2OTkwMDFkIGxlZ2FjeS10cnVuaworOTYwOCBlNGMzMWRjMzA2MjNjNmQ4YTgxNjA3NTA4MTA4NTZlM2NmZjE0YTIwIGxlZ2FjeS10cnVuaworOTYwOSBkZmRlYWM1ZTE4YzYyNWFhZDk5OGEwYWM3ZTYwNGJmNWQ1ZjA3NGUyIGxlZ2FjeS10cnVuaworOTYxMCA5NmZhNjc1M2U5NTYyNzliNWI2OWU1M2M4NmYxNjM0ZmE1Mjg2NDNkIGxlZ2FjeS10cnVuaworOTYxMSBiYTg0OWU0OGY5Y2FlMjM4YzkzM2FiYWIyYzk0YTkzOTZmMGU1YjcwIGxlZ2FjeS10cnVuaworOTYxMiAzOTM5ZjlmZjY2NWY4ZmJlYTM1ZGNhNTc3MWU5OTY0MzE4NWQwMDQ5IGxlZ2FjeS10cnVuaworOTYxMyBlZmEyMjQzM2U4NTVkYTRmNDU1YjFlNWMwYzU1MzY4NzI0NWY2N2Q1IGxlZ2FjeS10cnVuaworOTYxNCA5M2ZmZTY0MWE1MTI3NmZmNGRhMTdjMmY1NGFjOWQxZDhkMDkyYzhlIGxlZ2FjeS10cnVuaworOTYxNSAxNmEzY2RkMmYxZDEzYjgyMDA5OGYzMGYzZjUxNGQxNDQxNzJjNjE4IGxlZ2FjeS10cnVuaworOTYxNiBiZjkxYzBlMTY1YWFkY2Y1ZWZiMTA2MDFiMDNlZmI3YTZkNTI1ZDNmIGxlZ2FjeS10cnVuaworOTYxNyBkYzg2ODdiNTNkZDBmMTc2OGEwMWI5NjhlZDkyNTM4NDNhNzQ0YWQ3IGxlZ2FjeS10cnVuaworOTYxOCBlN2JmZWE0MWY2MTdlODhlODc1NmZjMTVhNDg3MGZlZTNhNjAyYzUzIGxlZ2FjeS10cnVuaworOTYxOSBiODFmYjY3ZDkwOGQ3YTk3M2NlMTAyMmQ2ZmYwMzRlODAwOTQ3YjFjIGxlZ2FjeS10cnVuaworOTYyMCBhZmYxZTdiMWY1MjNkNzMwNWJjM2UxMWQzMmNhNzAyNTQxODg1MDBkIGxlZ2FjeS10cnVuaworOTYyMSAzZjBiZTdkZTdjYTVjYTU0YWNmY2EzZTE5MzRjM2QzMTg5N2ExODQzIGxlZ2FjeS10cnVuaworOTYyMiA0ZWY2YTgzYjJlNjI1ZTE2MzU5Y2VmYTE1ODk3ZjhlYWExMGFjZmE3IGxlZ2FjeS10cnVuaworOTYyMyA2MDc0ODQ3ZmFkMWRlNDk3MDI4ZWE5MmQ0ZmQwZWNmM2E4YjJjNjQyIGxlZ2FjeS10cnVuaworOTYyNCA0OWU0ZTNmMzBlNTg4MDJiYTZkYWIwZWQyNTNlOGZjYzA3YWFjODNlIGxlZ2FjeS10cnVuaworOTYyNSA1MTI4YzYwNzJhYTUxYmE3MTZiYzdmYjNiZGQwMDJhNTg5Y2RkODYwIGxlZ2FjeS10cnVuaworOTYyNiBkNDhiOTlkODU2MTc0MmQ1ZDc3Yzg1ZGY1NTgxMjdlOGQ2YmVkOWI4IGxlZ2FjeS10cnVuaworOTYyNyA3ZWRjMzBkZjczZjZhMmNiMjBlNWFjYjJlNmUzYTBjNmM4NThlN2ZmIGxlZ2FjeS10cnVuaworOTYyOCBiODY0MDI5YTViYzVjNWQwM2EwMTM1OTNmOGMyNTAzMGIxNTY3MzJkIGxlZ2FjeS10cnVuaworOTYyOSBkMzM5OTU0ZWE1N2Q4OTg3OTMxYzQ2NzhjYjljMTU0NTU0YmU4OTBiIGxlZ2FjeS10cnVuaworOTYzMCBkMzlhODA1ODUyYzIwYWU5YzdlZjhkZjdiYmI4ZGVmZWJjOTI3MTc3IGxlZ2FjeS10cnVuaworOTYzMSBhNzY5MGVmNWUxNTkzN2UxMDI4MGU5NTM0YzRlZjFhMjljMzE0YzI0IGxlZ2FjeS10cnVuaworOTYzMiA3NDkxNmM5NmRkYjk2NTE0ZjQ1MmJmNDRmZmE5YTAzODIyMmU5ZmVhIGxlZ2FjeS10cnVuaworOTYzMyAzMGFiMzljMmIxODYyZTRmMGRlYzNiOGQ0ZWU2ZWFhYWRkYjcwNzcyIGxlZ2FjeS10cnVuaworOTYzNCBjZTZhZDE3MGMwY2U3MmU5MDZmZTk3YjJmY2ZlZGM2OWE5MWM5MzExIGxlZ2FjeS10cnVuaworOTYzNSBhNmZhOWYzY2FkMTM3Y2FhNWY3YzVlMmM3OWE5YjY0YjdhZDFmYWVkIGxlZ2FjeS10cnVuaworOTYzNiBmYjcxYjkyZDE0M2FhMWUxNmI1YjAyNGNhMGExYzE4Y2Q5MjFjOTBkIGxlZ2FjeS10cnVuaworOTYzNyA0OWEyMGQwMGUzNGNlNWY1YzZkZjc1OWMwZmI2MTY1MWE2Mjk5NDRlIGxlZ2FjeS10cnVuaworOTYzOCBhNjRhNDIzZDZiNTQwYWE2NDQ3MTE3NmZjNmNkYzYxZjA3MTk0YTFiIGxlZ2FjeS10cnVuaworOTYzOSA1YWI3MDgxODFmYTYyMjMyZjA2NTQ2ZmFkZmYyZTAyOGExMWYyZmQyIGxlZ2FjeS10cnVuaworOTY0MCA4ZmI1ZmQwNzViMmFiMTMyMDM4NGJjZmFiMDNmNTBkZTc3MjY4OGU5IGxlZ2FjeS10cnVuaworOTY0MSBlNTY0NmVlY2VhZTg4NzlmYzBhM2RjNTNkZGM3NzA5NTM1ODAzYmI0IGxlZ2FjeS10cnVuaworOTY0MiBjM2I1YjFjMjVjNTFjN2YxNmNjN2E4YmEwM2VjNmJmNzVmNzcyZWQzIGxlZ2FjeS10cnVuaworOTY0MyAwZDVhOWEwZTdkNjRhMTJlMDJiZTcwNzM1NzI1ODJkM2RkMmI2NjNiIGxlZ2FjeS10cnVuaworOTY0NCA2NmNiMDAzMTdhY2ViYjZmNTgwMzE5YTBmM2ZmNTgwYjNkZjYxZDdlIGxlZ2FjeS10cnVuaworOTY0NSBlNThjN2I1MGU5YjljNmI5NmQ4OTMzYzVmM2QyNzZiNTY5MjU4ZWQwIGxlZ2FjeS10cnVuaworOTY0NiAyMTI1OTdhZjgyOWJiY2FiYzE3OTc3ZGM1ODNlOGQyYjg0NTFlNTMyIGxlZ2FjeS10cnVuaworOTY0NyAzNzNkNzgxMTgxMTNiOGNmNGY4OTA4NjYyZTMwM2RiNTc3ZjJkYzA2IGxlZ2FjeS10cnVuaworOTY0OCBjNWU3NjdlMjJiZDFjM2U2NWQzNmI2MjNmYTg5ZTQ5MWNkNTg4YWVlIGxlZ2FjeS10cnVuaworOTY0OSBjZTQ3NjZmYjNmNTYzZDE3NjM4YzkxYTFjNDI0YjI1NTZiYjY2NTkyIGxlZ2FjeS10cnVuaworOTY1MCBiNWIwYzMyNGNlNTk4NzhmY2FlZWFhMTUzZWZhMWQwOGI3YzM3YjAwIGxlZ2FjeS10cnVuaworOTY1MSAwYTRlMjlhMjg2NTVlNDA0MzBlY2YyNGE4MzlhNzE4ZGQyZjdhNzJmIGxlZ2FjeS10cnVuaworOTY1MiBkYzliYjQ3YjM1NTI4ZDdkZjI2N2NjYTNkNjAxZjYxMzA0M2NmNDUxIGxlZ2FjeS10cnVuaworOTY1MyBhMjhiZjYyYWMzMzViNWYzMDZhM2VlNTdlYzkyZGEyMTdmOGE2MWIyIGxlZ2FjeS10cnVuaworOTY1NCAwYmQxODVjMmU1ODEwM2UxZTgwZDA5M2ZjMzg4ZTIyZDczNGFkN2EzIGxlZ2FjeS10cnVuaworOTY1NSA3YzAwNGZjMTA5ODczN2FjZjAxNTk0MmU4N2JjNjY2M2FmZmQ4MTRlIGxlZ2FjeS10cnVuaworOTY1NiA0MDk4N2I4NmExYzc0ZmI4NWM5NmZkNzk3MmUzNDZhMDdhY2U1NTkwIGxlZ2FjeS10cnVuaworOTY1NyA3ZDYxZmE5YjU3YThjNTQyYTk1NmFmYWIyYTFiMzBjM2IzOWNkMmMyIGxlZ2FjeS10cnVuaworOTY1OCAzYTk2MGIyZTI2Njc3YzFiYzViZTRiNGE1MTg5YjBkZDE2ZWQ5ZWQyIGxlZ2FjeS10cnVuaworOTY1OSA0ZjEwZDIzM2YxZGM2ZDNkMGI0MTZiZjlhYmM2N2ExNDY3MzE2ZDc2IGxlZ2FjeS10cnVuaworOTY2MCA1OTM2MmVhN2UwZjhiNDEwNjRkMTk1MDA5ZmJlYjlmZDI2NzA3NTY5IGxlZ2FjeS10cnVuaworOTY2MSBkZTVjYjc4OWU5ZjBmMmY4N2I5OTFhN2JkOGFlOTc1N2M5ODY5Y2I1IGxlZ2FjeS10cnVuaworOTY2MiA2Zjc4MTk1YmY4ZjY4N2Y3MGVjNTg2OGE5ZGY2MjExZGE5ZDNhNjIxIGxlZ2FjeS10cnVuaworOTY2MyBhNTk2YmJlNzI1NzlkOGI1ZTM0Y2Y0MTMxNzlmMzZmOWZmNWQ3ODQ5IGxlZ2FjeS10cnVuaworOTY2NCA2ZTVlYjg0NTI0NmMwOWJkOWI0NTQzZGYwZDYxNTc2NGVhY2RhNzVjIGxlZ2FjeS10cnVuaworOTY2NSAyYTliYTU5YWJjMzgyYjc5ZjE4MjhkODQzNTMyNjVhMGYwNTU0YWNhIGxlZ2FjeS10cnVuaworOTY2NiBlZTRhMWEzMGQ3Y2U5MjdhNzk2YTQ2MzFmYWI1YmIzNzQ3ZTRlM2NhIGxlZ2FjeS10cnVuaworOTY2NyBmM2NjOGQ1M2FjODAzZGYyYWEzMGQxYjFkMzc2N2IwODU3ZmRjOGM0IGxlZ2FjeS10cnVuaworOTY2OCAxZjlkOTQyZjE1NmNjOTMyZmRlZjkxMzM0NTViMmY4MDRkMGQxZmMwIGxlZ2FjeS10cnVuaworOTY2OSA3MDU0YmU1YWQ3ZjY3NDFhZjliYjA2NTQ3ZjM5OWZkYzY5ZjRkYTQxIGxlZ2FjeS10cnVuaworOTY3MCBhZjk4YjQyMTQyNGNjMzliOGM2YThiNzRhYzZmNmU5NGRlNDZkOWQxIGxlZ2FjeS10cnVuaworOTY3MSBlMjc5NTcyZTJkYTI1NTE2NjcxODJlZGEyNmE3ZmU1MDczZjg1NmIyIGxlZ2FjeS10cnVuaworOTY3MiBiMDA5YTRjMjQxODhkNTI4M2ZiZWIwMmMzMzUzNmFkNWY4YzNhZGM1IGxlZ2FjeS10cnVuaworOTY3MyBjMTIzYTVhNTljZGUyMWQwYzEyOGFhM2RhMmVkZTlhNDA2NmZhMjdmIGxlZ2FjeS10cnVuaworOTY3NCAzMDlmZmZlNzY4YTYyNDIxODU1MjkwMDUwN2Q2ZDdlNDU2Y2Y3MTYzIGxlZ2FjeS10cnVuaworOTY3NSAyNmQwNzczNWJhNGE1YjI2N2FiZmM4NzBlNjNkZjY4OTlmYzUxYWFhIGxlZ2FjeS10cnVuaworOTY3NiA1Y2QyZjY5OWJmNjkxNjZhZDdhNWQ1OWYxZWE2NWZiNTE5YmM3ZDY4IGxlZ2FjeS10cnVuaworOTY3NyBkYjAwN2EyY2E3YjYzNjc3MzUyMWI1YmVlM2RkNzI5MmU1NGE5ZWQ0IGxlZ2FjeS10cnVuaworOTY3OCA5OGE5ZGE1MjBmMWQ4YzE5YWI1YmQ0ZTIwMzMyN2Y0ZThjY2M1MjEzIGxlZ2FjeS10cnVuaworOTY3OSA3MjBlOTE4Mzk2MWVlOGFkZDc0MDEzMjNiOWM1YzAxNTNkZGY1NDQ5IGxlZ2FjeS10cnVuaworOTY4MCBmZWQzZDIwMGZiNTY1ZDJhY2U4MDFiYzYxMTM2YThiMzdmY2JjODFlIGxlZ2FjeS10cnVuaworOTY4MSA4YzEyOWE1Njc4Njc3OTUyYTMwMjhjOWEwY2QwYjhhNGI5ZDliZTdlIGxlZ2FjeS10cnVuaworOTY4MiA0OGFiNjY4NzRiMTE5MWNkZDQ0M2EwZTMxMzBmMDM5OWFkMDllOTIyIGxlZ2FjeS10cnVuaworOTY4MyAwOWZmYWIyNzNlZWI1NjVhNzYxOTU5NGQ5MDU5Njg1MmZmNGQ4ZTFlIGxlZ2FjeS10cnVuaworOTY4NCAzZjI1NWFlZGY2MjFlOTVlMjY3MjlmM2ZiZDA5MDI0ZGI3NGEyNGExIGxlZ2FjeS10cnVuaworOTY4NSAwNmRiMTBjNzZkYzk1MmUzZmEwMTk0ZDgzYjQwYzQ3Mzk3NmJjZGI5IGxlZ2FjeS10cnVuaworOTY4NiBjZTI3MWU1ZjliYzVhYzg5N2MwYjlhNGQ4MmMzZGE3MGU1ODYxNmI1IGxlZ2FjeS10cnVuaworOTY4NyBjOWZlMzVhODI5OGFkODU5NmE2MzExYTcwZGEyOWRkZWI2N2JiMzNhIGxlZ2FjeS10cnVuaworOTY4OCBiY2NkZWNhODE2NjljZTNiZDMwMTRhMzAzMTBjZjcxZjUyZmE1MjBlIGxlZ2FjeS10cnVuaworOTY4OSBjNzY0MjE3YWU2ZWI5MmQzMWQ5MDA1Y2Y3ZWIyOWM4YWM1YzMxNzE0IGxlZ2FjeS10cnVuaworOTY5MCBiOWJiZmExNjk5MjBlNDU1YjEyNzEzZDgzMmE4ODdkOWY5MjFiMzAwIGxlZ2FjeS10cnVuaworOTY5MSBmZjUyNGI2OWI2NjRhM2ZjNjUxZjlmZTkzN2U4ODc0OTkwYjVjYWI0IGxlZ2FjeS10cnVuaworOTY5MiA2MjIyZDMzNzFmYjgwZWI4NDBlZTUyZDgxMjM2YzFmM2I4OTY5NzlhIGxlZ2FjeS10cnVuaworOTY5MyA1YTdmMjY4YTA3ODFhOTRhZGM1YzlkNzUzNWQ4YjE5ZWU4YzQ2Y2U5IGxlZ2FjeS10cnVuaworOTY5NCAxNmVjZjE1NTRhODM1NzkzODBlNzM3NmVlZWJmMTFmZDMxOTVmMTJkIGxlZ2FjeS10cnVuaworOTY5NSBiYzAwODY0MDRhOWE1NTI5MjFiYzMyYWExMTgyYmVlMzViZjBjYjg5IGxlZ2FjeS10cnVuaworOTY5NiA5MGEzNWYxYjkwMDg1ZmExOWYzNDA4NDRlMTA1MjZhNmZhYzIzOTA0IGxlZ2FjeS10cnVuaworOTY5NyA2NDBiOTdkMTA1ZGY3MTE1MmY5NzMyYWQ1MzNkZmJkMzUzZWQzMzVmIGxlZ2FjeS10cnVuaworOTY5OCBkMGNhODE1YzgwNzI1NDgxM2UyM2M4OGM5ZGNkMDJmYzFhYjFjOTg3IGxlZ2FjeS10cnVuaworOTY5OSA5NWMxMDE5NjQ0MTQ5ODU3MzBhODkxZmQzMDY5OTZiY2IwYjRhNjE5IGxlZ2FjeS10cnVuaworOTcwMCAxMGZkZjE2ZjRkZTljMWY5NGY2Yjg1MjM4YmM2NDBiMGMzNTQxNTk1IGxlZ2FjeS10cnVuaworOTcwMSA5ZGRlMDdhNTkzZDgzZmMyMzJjNzBkYjAxMjkxMzMzMDJjMjdhNmI1IGxlZ2FjeS10cnVuaworOTcwMiBkMzNkNDU2MjJlNjcxMWQ4YjFjOTc5Y2Q1MDBmYWEzNzI3MDUwOGRkIGxlZ2FjeS10cnVuaworOTcwMyAxMWYzNGJlMGJlMTFmZjQyNzdkNTBhMmE0NzlmNjlkNDc5YTA0YTNjIGxlZ2FjeS10cnVuaworOTcwNCA0NzgwMmUyZjViZWRiNGYyMmJiYzU0ZDMxNmY4MTE4Y2YwMzgxYmQwIGxlZ2FjeS10cnVuaworOTcwNSAwNDVmZmE0YzU2Zjc4NTZhMjM0YTk1OTRkZGRkNzZlNTAyNmIxY2ZjIGxlZ2FjeS10cnVuaworOTcwNiBiYzY0ODJmN2U3OGZhMzQ2NmI4Yjk0MWVjOTFiOTdhZDlkZDBhZTQwIGxlZ2FjeS10cnVuaworOTcwNyBiYzI4YTBlYTY2NDBmNzdiNGJkYjQwODRmMjYwNjBmNDllYmE0ODhhIGxlZ2FjeS10cnVuaworOTcwOCAzNzU3MjNhNzU1OWM3MTVlMDk0YmViYzI1M2YxNWJmMDFlODg1MTJmIGxlZ2FjeS10cnVuaworOTcwOSAxNzdhZDczYmYxYTkyNWYwMDkzMzVkN2Q3ZmRlMWE4ZDkyMjUwYmI0IGxlZ2FjeS10cnVuaworOTcxMCA3NGM1NzI4OGEwMmI5OTY3YmE2NDhmNGNiNWZiZTMzYjMzZDRjMjk5IGxlZ2FjeS10cnVuaworOTcxMSAwOGM1YmJmYWU1MmMwZGZlMDYzZWZlODAyMzFlNzM2YjAwNjY2NjkyIGxlZ2FjeS10cnVuaworOTcxMiAyM2M1MDlhYTNmMGQ5NDczY2U1MmExNWE3NjAwMjQ3MDZjNzc2Nzc2IGxlZ2FjeS10cnVuaworOTcxMyBkZWJlOGUwODEyNjA4NWY0MDBiM2RhNjNiMGQyM2Q3NjQyNGRjZTZkIGxlZ2FjeS10cnVuaworOTcxNCBmZDdhNTk5M2QwNmRhYTI4NDhmYzEwYzE3YjJkYTcxNTgxYjQ4YjE3IGxlZ2FjeS10cnVuaworOTcxNSBjZGI0YTgxMzc5YWQ3ZTU5NzNmMTViZWU1OWIxNmY1NmU0MjY0MGJhIGxlZ2FjeS10cnVuaworOTcxNiBhYTU0ZDdjM2RhZjkwMTY3YTk1ZmE2YmRiNDNmZjczZDg3M2JhNDdkIGxlZ2FjeS10cnVuaworOTcxNyAzMDZmNzM3YmFiNTc2YTgzODkzMmI1OTg0YTQ2NmRjZjc2NWQ1NmZjIGxlZ2FjeS10cnVuaworOTcxOCAyYjgyMjMxYTk3Y2M2YWJmNzY1ZDgzYTRhMjA5NmRhYjExM2Y0MTE3IGxlZ2FjeS10cnVuaworOTcxOSBiNTk4NTU0MmJhZTFlNjlmNjUzYTQ3NzcwMWZiNjdkYTBmMWJlZTg2IGxlZ2FjeS10cnVuaworOTcyMCBlNzUwMDYwNjkzNjdmYzZmMTE1MzBkNmVjYjVkZGU5ZGE1ZmVkZDgwIGxlZ2FjeS10cnVuaworOTcyMSA1ZjViOWU4NzE4ODZjZDhiOWVjNDE1MTllNmUyNTMwNGNlMTU5NTQ5IGxlZ2FjeS10cnVuaworOTcyMiAwYjUzYzAzOTNjODgyNjNkN2U0MWI4ZjE5YTNiYjFkYjJmZDRiOTc5IGxlZ2FjeS10cnVuaworOTcyMyBhNzExNjg2NDlkYzUxZWY4M2IzNTVmMjZkOTkyN2ViODdkNGMzZGY4IGxlZ2FjeS10cnVuaworOTcyNCAxOTNkNzA0Y2JjYzg1MWFlNzM4YzFmYjhhMTVhNDRjYzJjMGNlY2U1IGxlZ2FjeS10cnVuaworOTcyNSAxMjcyYjU4ZTg0YWViNmMyZGY3YTM5YzBmMjdiZDAwYmFmYWY5NDY0IGxlZ2FjeS10cnVuaworOTcyNiAyODc2MjNjY2UyODk0NTNlMjZjYzg5YmRjOWVhOWFjYjQzNjk3NTAzIGxlZ2FjeS10cnVuaworOTcyNyBmMGJiM2JjZjM5N2IyNTQ5NmMwZDdiZTRjOWYxODBhNGRjNGEzMWM4IGxlZ2FjeS10cnVuaworOTcyOCBjNjk4NjkwYTI3YjI1OTEzNDAwNTFjMGNjM2MwYjg4NzYyNjU5NDBmIGxlZ2FjeS10cnVuaworOTcyOSA4YTA4MDI1ZWY5M2Q4Zjk1NDM2NjlmZjdlMzYwY2NhMTk4OTI4MWRjIGxlZ2FjeS10cnVuaworOTczMCBkM2ZkMjE4MmNmYjhlZDAyZDQyNDAxNmI0ZTZiOGM5OWQxYjM2MTcwIGxlZ2FjeS10cnVuaworOTczMSA0ZTc0MDJjOGU0NjBiZmJmOGEzYjM4YjExZjc0N2UyZWQyOWYxMGI4IGxlZ2FjeS10cnVuaworOTczMiA4MTI2MTVlNTQ1NTBlNjlhZGFkNzBjMWYzODY5YjJkYmQ5ODg4YjNjIGxlZ2FjeS10cnVuaworOTczMyBjYTc4YjA5NWVjZjAxNDYzZTNlNjk1NzVjYWI5MWQ4YWMxMmY4YWNmIGxlZ2FjeS10cnVuaworOTczNCA4Yzc0OWRmYzQ5YmZhMzhlZDZkZjAyYjY0Y2I4N2U0ZGFmMmFiNmNlIGxlZ2FjeS10cnVuaworOTczNSA4YjBkNmI2NGEwZWEzOWNlMzNlOTZlZDk1Y2IyNmJjMGE1YWE5Zjc0IGxlZ2FjeS10cnVuaworOTczNiA2MTRkOGE5MDg0ZWFkNDc1ODAwZDFmM2Q5ZDliZjQ0NzczZTcwYmJjIGxlZ2FjeS10cnVuaworOTczNyA3Y2RhYTQ0OTU1MzA3OTNiYWVjZTcwZTNlN2IzNmY3OTM3YjM0ZGQ0IGxlZ2FjeS10cnVuaworOTczOCBhN2U5NTI0YTJhNTJjNjRhYTI4NjNlMDY1MWUzZThkYjc2NWViZjYwIGxlZ2FjeS10cnVuaworOTczOSBiYmYzNTA3ZWYzZmVmMjg0MGExZDUyNGUwYTk2YjQyM2Y5MDIxNDEzIGxlZ2FjeS10cnVuaworOTc0MCBjMDk5MDcxMDQwOTJhNTkyNTBmN2E3ZjVjNzJhYWJiOTBjNGQyMGY1IGxlZ2FjeS10cnVuaworOTc0MSA0MWE5MjhjYmNjNWVlYjhlMGE2Yjg4NzgzNzE3MzAyNmQwM2QwNmJmIGxlZ2FjeS10cnVuaworOTc0MiBiOGQ0ODQxMjVjOTJkZDYyNTBlNDhmYTczOThlOWMzZmIwMTE0OGIxIGxlZ2FjeS10cnVuaworOTc0MyBjMDAyZmZkMWZiYmZlN2JhNGNhZWZjMDU1ZDRmYTAyNzRhYWMwNGNiIGxlZ2FjeS10cnVuaworOTc0NCA4M2MwZTlkZDQyMjFmODZhZTczYjQ2ZDIyODdhYzNhYjJiZWI3NGRhIGxlZ2FjeS10cnVuaworOTc0NSBjYTE0ZmRiOTU1ZWY4MjdiYjQ3YzY4ZjUwZmU5NDE5YWY1ZDk3MWE1IGxlZ2FjeS10cnVuaworOTc0NiBhMmY0Yzk0NGNiODcyMWJmYzY2ZWIyZjlkNjdjNWJiMzg3OTllZWNjIGxlZ2FjeS10cnVuaworOTc0NyA2ODJkM2U1YjI2N2Y0NzBiM2MxMDE0YjMwMjUzNTJjNGQ4YjNkZWQxIGxlZ2FjeS10cnVuaworOTc0OCBmNTU5NjljMWMzZDU0MTk2OTgyZDljYTJmZmViYzQ3MWYzNTdlOWQyIGxlZ2FjeS10cnVuaworOTc0OSAwMDYxZDM5MTZhZTRiMTVlOWUwNjE5YWY3MzQ4MTU1ZWUyZWRmODc2IGxlZ2FjeS10cnVuaworOTc1MCBjODE3Zjg2Y2U3ZGI2NzE5M2E3NDc0YzQyYTQ4YzVkYmQ0Yjc0ZGFkIGxlZ2FjeS10cnVuaworOTc1MSAxNWJhNjhjMzNlZDFjZWRhMzAzMjQyMDNmYWU2OWY1ZTFjN2I1OTk5IGxlZ2FjeS10cnVuaworOTc1MiBmNWVhMWIzMGNiM2Y3NDllNWI5OGQzMDAwZDMzZDRiOTRhY2Y5YzE1IGxlZ2FjeS10cnVuaworOTc1MyAwMGNkOWZlNGY2ZjJiMDg5ZGI1YjQ1ZGExNGZkOTEzZjNmMWJiOGMyIGxlZ2FjeS10cnVuaworOTc1NCAzOWRlNDk0MzRkZjQyNjExYzQ3YjY5YWY2ODkyNDMxMjY2ZjQ4M2RkIGxlZ2FjeS10cnVuaworOTc1NSBiZjRlNzkwYmQ2MWE0YjliMTM5NTU4MTg1MTQ3MDkzYzUxMWFhMTc3IGxlZ2FjeS10cnVuaworOTc1NiA1OWQyNzYxYmExY2ZjYWEwYzJmMDQ4YTQwMWFlMzExYTcxM2I4ZDc4IGxlZ2FjeS10cnVuaworOTc1NyA1MmZiYjczMTIxMDM0NWIwMTM1NGU2NDBiNDQ3MDVjYTJhNzFlNzgzIGxlZ2FjeS10cnVuaworOTc1OCBmMjE0ZWU4ODM4ZGU2ODI2ZjM2MGM0MWQ3MGI4OTAzZjZhZjAxYzYxIGxlZ2FjeS10cnVuaworOTc1OSAxZmQ3ODczODc5YWY4MmM5YjkzOGI1NWRhZjNiYzFkN2VjMGIxMGRlIGxlZ2FjeS10cnVuaworOTc2MCA2ZDBjNDg1YmE1ZTQxOTNjMjZiMzQ0MzM1YjJmNjI5OWFlMWMzMjg0IGxlZ2FjeS10cnVuaworOTc2MSAzYTNlZTA3NWRmYjY5ODFkYzY5NDVmMTBlOTkyNTVkNjM2ZTUyNmMwIGxlZ2FjeS10cnVuaworOTc2MiAyZjBjZTRmYjgxMGJhMzAxYmRlMmQxZjVlNmE4YmYyYzNhZmJjNWM1IGxlZ2FjeS10cnVuaworOTc2MyBlZjI2OWFiNzcwYmNjNWJlNmViMmE2YzQ3NzYxNGY1ODA4NWNiZjk0IGxlZ2FjeS10cnVuaworOTc2NCAxZDUxMTc5Y2Y3YzdmZTQ1NDk2MjRlODk2YmJiODE5NmMwZGQ4Yzg3IGxlZ2FjeS10cnVuaworOTc2NSBhZjJiYzVmNDU5MThhNzAxMjA4OGJlNTU3ZGExYzkyZDBiNDA5ZGI3IGxlZ2FjeS10cnVuaworOTc2NiA0MTQ4ZTRiYzhiMjg1ZjliMTBkOWM1NDQ1OWNiMWVjYmU2MDA4ZTNjIGxlZ2FjeS10cnVuaworOTc2NyA2ZmVmMDMwYTk1ZDQ5YzY1OTQyZTE4Y2NlNzkwNWU4Mjk2ZGQ3NTE5IGxlZ2FjeS10cnVuaworOTc2OCA3MmQ1MzFkNTQ1NzI5YjAwMzY4OTAyNTlmZjYwNzE1YTFiZjBmZjJhIGxlZ2FjeS10cnVuaworOTc2OSBiN2Y4NGQxNzllNTFhMDNkNWY1YjFkNjIyOWY0ZjE3OGUyYTJmNWI1IGxlZ2FjeS10cnVuaworOTc3MCA2YWQyMzRhZDhkZTVjNmQ1OWY2ZjcwNTM0ZDhjYjBjYTQ3NjRhMjg5IGxlZ2FjeS10cnVuaworOTc3MSAwZGJlYzk4YWNmYzk2NzQ2NDlhN2E1Y2YxNmFkMWZlZThlYTIzNTk3IGxlZ2FjeS10cnVuaworOTc3MiA4ZTY0YzVkNTU0OGEyYTQwYjQ1NWNhYTE3NTQ5YjI2YTFjMmNkOWRlIGxlZ2FjeS10cnVuaworOTc3MyAyODU0NDkyNjhjMzdmMDhmYjBiOGMxOWVhMDRkZjQ2MDJlZmI4N2RiIGxlZ2FjeS10cnVuaworOTc3NCBiMDI0OTkwZDYxZWM4ZTIzZDZkYTg2NWM1OTM2NWYzNjE1N2RlZjFhIGxlZ2FjeS10cnVuaworOTc3NSBmYjBjNWIzMDc0NzZkZWFiMjFmODU5Mjg0NjQzNjliMGRmYzhkMmFlIGxlZ2FjeS10cnVuaworOTc3NiAzNzAzNDk1MzE1ZTlhNjQzMzI5MTk0ZTFiYjUzNDFmYTAyMTljMjFhIGxlZ2FjeS10cnVuaworOTc3NyAwOGY5YjkwMTY2OWJhMWNhMmNmZmQ0NjExMGVhZWNmODU0MmFmYjQzIGxlZ2FjeS10cnVuaworOTc3OCA0NDFhZTRmNGNmY2Y5MTVmM2NhNzcwOGYyOTNkYWYyNGQ4MTBlYTFmIGxlZ2FjeS10cnVuaworOTc3OSA0Zjg0MjAyYzM3N2FjZDFlODU4YTRiMmI0ODMyZjliYTczM2NmODcyIGxlZ2FjeS10cnVuaworOTc4MCA2NDBmMmVmNGRhMjEyNGU1M2JjY2JkY2I5NzJhZmFhNjc4NjEwNTg2IGxlZ2FjeS10cnVuaworOTc4MSA2NThiNzQyZTQzNTAzNWNjNjg5ZTFmYjg2MDgwNjg3MzkyZTg5YzgyIGxlZ2FjeS10cnVuaworOTc4MiAyNmE4ZTllOGNiODQxMWQ2OGExMzdhOGE0MzlkNmM1NjgzMGE3NWUwIGxlZ2FjeS10cnVuaworOTc4MyAwNjdlNDgxM2M2ZDY3YTA4MGNkYTE3YWY3OTFhNTUyNjhlYzFmZTI3IGxlZ2FjeS10cnVuaworOTc4NCBmODllOWNkZGMwOTYxMzA1NTdlNmQ5ZTdmNDJjMGY1MWY3OWQ3MzFhIGxlZ2FjeS10cnVuaworOTc4NSBjOThmZWY5MjJkNTE0NjhjZjIwNDk1MDgwZGEwY2Q4NTNhYTJmMmJiIGxlZ2FjeS10cnVuaworOTc4NiA4MDk2ZmVjNzIyYmE3OTZhZjM3YTI5N2NlZjE0NjM5NmZmMzc4NGMwIGxlZ2FjeS10cnVuaworOTc4NyBkNzI2NjM3MmRkMzcxYzlkMWE3MjM4ZDYxM2MyYjk0ZjZmM2ViOGRhIGxlZ2FjeS10cnVuaworOTc4OCA2MDk1YTQ3MmY1NzQ1YzNhY2E3NDE5NTk1YjcxOTY1MzViNjMzMTk0IGxlZ2FjeS10cnVuaworOTc4OSBkZjc2NGU0MmIyNThmNTc3ZWQ1M2FlYjFjZmE2MzNiMTVhYmZlZTI0IGxlZ2FjeS10cnVuaworOTc5MCA0OGRmMjA4MGQ3ZDQ4MjljMTI5OGE4YzFhZGEzMTYwY2UyMDA5ZWRjIGxlZ2FjeS10cnVuaworOTc5MSA1YWU4N2E3ZjlhMzIzZmQ2NTJiMjliZGI5MTQxMTFhM2Q2ODEyYTRiIGxlZ2FjeS10cnVuaworOTc5MiBkMjNiYjk2OWU2M2EwMzczYzZmZDJjYmQ0M2VhMGZjM2NhOTc2NGVkIGxlZ2FjeS10cnVuaworOTc5MyAzYTU1ZmJiOTlmMjA0NzdkNDBiNGU3YmJkMzUwNjFlYjkxZDAyNDlhIGxlZ2FjeS10cnVuaworOTc5NCBmNmM2ZDRkOTdkYzY1MWE1MzEwZjc0MzMxNTU3YjIwZDFlOGUwZjE1IGxlZ2FjeS10cnVuaworOTc5NSA5Mjc4NDgyNDgwMGMzZGQzNzNkMTRlNTk2NWU0NTI3YTdjNWQ1MWY4IGxlZ2FjeS10cnVuaworOTc5NiA4MzAwMDliNTczZWEwOTRiNzRmYjQ0ZDAzMmQyZjE3NjIyZDAyNjc2IGxlZ2FjeS10cnVuaworOTc5NyAwOTg5MmJmNmE1MGRmZjE1NzcyNDQwY2VkOTgzOTgzNTg0Yzg1ODc5IGxlZ2FjeS10cnVuaworOTc5OCAxOTI4ZjA1YmE0MDBjYTJlYjYzM2U2M2MzNGY4NmMzZTU3NzFiNzgzIGxlZ2FjeS10cnVuaworOTc5OSA5OGVmZDVkOTFmY2E0ZmZkZDZhNWU4MDczZjcwODZiMzFlMmVlOWViIGxlZ2FjeS10cnVuaworOTgwMCA3MjRmODA3MjYwNTUwZGU4MmFlYTYwNGU1YWNjZDU3ZjJkODJiYWRhIGxlZ2FjeS10cnVuaworOTgwMSA0N2VjZjAyYWFmOTdiMTRlMWMxYzg2MWIzNzQ2MmZlYWE3N2ZmMWI2IGxlZ2FjeS10cnVuaworOTgwMiA1NTEyNWIxMTQ0ZmEzYTZhNWUxNjkxYTI4M2Q1YjgxYWQ5MzRlYmM5IGxlZ2FjeS10cnVuaworOTgwMyA2ZTAwZmI3MjNmNjlkYmRkNjNlMmU4Njc0NTNkMTU5MmExZWZmNDY3IGxlZ2FjeS10cnVuaworOTgwNCBmZWM4ZTA4NGIwNzRmNTcwMjdhZTNlMzYzZjc1Mzg0Y2U3NGMxNTdhIGxlZ2FjeS10cnVuaworOTgwNSA0NWI2NmU5YWI1ZWZhMDA4MWJlMzk1ZGIxOTEyZTU1YTRiY2M4ZDRkIGxlZ2FjeS10cnVuaworOTgwNiBjMmEwODY5ODUyZWI4NDViOThhOWZkNjc1MDFhMjgyNDY1ZjQyNWIzIGxlZ2FjeS10cnVuaworOTgwNyBlNGM3NGY3ZjNlNDY1OTRhNGRiOGUxODQ4MzY0ODJkYzU2OGNkNmFiIGxlZ2FjeS10cnVuaworOTgwOCA5YWUyMTVjYTIwZGI0Yjg3NzQ3ODE0NGVkODg4ZjI3MzMxZTZmOGUwIGxlZ2FjeS10cnVuaworOTgwOSA4M2EzMGEzNTgzZDNmMzZhMzk0YjdkYmJiNmYyYmE0YWNmMjQ2ZWM2IGxlZ2FjeS10cnVuaworOTgxMCAyNTI1Mzk4NzE4NzNjMjFhYTA1OTU3MWYyMTBiYWFjOTA5NjExMGE0IGxlZ2FjeS10cnVuaworOTgxMSA2ZTk2ODhjZTdjNTc2MTAyNzlmYzlkMGVkODJmYjdmM2M5NmQ0YWU0IGxlZ2FjeS10cnVuaworOTgxMiAzOTY1YjY5ZDUxMTZlNTk5MGZjNDYzZmIwNmNjMGZlMzgyZjZjZWI5IGxlZ2FjeS10cnVuaworOTgxMyBjMzdhMjhhM2JiODViMjY3YTg0NTQzYjBkYTA0YmM3ZTZhODU2YTJkIGxlZ2FjeS10cnVuaworOTgxNCBlMTQ4Y2UxOGMzY2U0YjNjOWRjZTQxNWM3MTM0NTc3NWVhOTFiOWU5IGxlZ2FjeS10cnVuaworOTgxNSAxMjkzOWM4YjRlMzBhNTQ0ZGQ5ZWY1Yzc3OTk2NTZhYWZjMzEzYTZlIGxlZ2FjeS10cnVuaworOTgxNiBmOTA0ODYwMDkwNWU4Y2Q0MzQ4YzUzZTFhYmUzYzk5NGJkZDQzYzQ0IGxlZ2FjeS10cnVuaworOTgxNyBlOGI4YmExNjliNmRkMGU2YTUzOTFmNDEzYzVmM2NiNTQ3NzliMGIxIGxlZ2FjeS10cnVuaworOTgxOCA2ZGNjYWU3NWIyNmY2YjJhMGM2MzVjMWY2OWEyODRmNmFjNTE0N2E2IGxlZ2FjeS10cnVuaworOTgxOSAwMDY5ZjNlYmE5YTI1MDJjOWZjMTZjYWU0YTQwYWRmY2Y3NGMyNDA5IGxlZ2FjeS10cnVuaworOTgyMCA5Zjc0ZjkyMjNiNDM1NTc4MDc1NDQyYjAzYzU5OThkMWU0YTZhY2M2IGxlZ2FjeS10cnVuaworOTgyMSA0ZmZjYmNjNWU4ZmUzOTMzMzY5YTIzNmQ3YzBiMjUwOWVjNWI4NTM5IGxlZ2FjeS10cnVuaworOTgyMiBiYmEyYjIwNWY4ZWRkNDlmZjRhZGU2ZDczYjZkMDM0Yzk4NGNiZjc4IGxlZ2FjeS10cnVuaworOTgyMyAwODA5NjlkYmZjN2M1MTg5MDVmMDcwYzBkMmNiZTY5N2I4M2Q5NzFiIGxlZ2FjeS10cnVuaworOTgyNCA1YTkyNTZiOGMzMzgyYTNlYjg4M2JlOWEyODRkZTM1NWUyNjEwODRkIGxlZ2FjeS10cnVuaworOTgyNSBkNzZhNGVmYTFmNTFkZjk0NTA2NDM4N2I5ZmU4NjFhNWVjYWNmMzE5IGxlZ2FjeS10cnVuaworOTgyNiA3YmE5Y2Y0ZTBjNDA0MDRkY2EzMjIzMTgwYWYyOWExMmQ0MTIxOWYwIGxlZ2FjeS10cnVuaworOTgyNyAyYmQ1ZmJkNjA4NzA5OWE4NTRjYzQ5YmE5OTNiZGJiN2FjN2E2ODViIGxlZ2FjeS10cnVuaworOTgyOCA0ZmY1YzE0OThkYzhkYjljNmY4ZmQ4MTBkNmExYmZjOTkwNWFkYjVlIGxlZ2FjeS10cnVuaworOTgyOSAxYmFjYTVkMmJhNTdhNGU1YjBjYjJjNmE3OWE4YThkODI2NmFhMTkwIGxlZ2FjeS10cnVuaworOTgzMCAwZDMxYzdkOTY5N2Q3YzVlYzc5YjdhNjNlMDQwZWVhNjgyNjcwZDIwIGxlZ2FjeS10cnVuaworOTgzMSBhNGQ3YmJmZjk1YTRiNWY1NjQ1ZTFkNThkODIxM2IzYzU5NzViNmYyIGxlZ2FjeS10cnVuaworOTgzMiBlNDM2N2QyMDZhNTVmNzYzMDJiM2ZiMDRhM2EyZDkxZTg1ODE0MzUzIGxlZ2FjeS10cnVuaworOTgzMyBiMjg1ZmJjMjY0NmE0OTg2YTVjNWVhOTNlMWY5ZDE1ZDgwM2NlYTAxIGxlZ2FjeS10cnVuaworOTgzNCBjNjMyNTAyOWY3ZGM4OGM2ZGZlYmUyYmNhNDBjNTkzMTI1MzQzNjMzIGxlZ2FjeS10cnVuaworOTgzNSAzZTI3ZjlmYzc1YTI5MGY1MWZhMjI3NWNjMWZmNDBmZTlhMDhmZmIxIGxlZ2FjeS10cnVuaworOTgzNiAxNDIxYWNlYWUzNDY1MDQ1YTU3ODdkZTc1MTExNzhmN2FiNzhkNWQ0IGxlZ2FjeS10cnVuaworOTgzNyBkNzAwODZiMDhhMGZhZjAxYTY4OWM5OGMxMTYyYjkwMWUxZjBiNzAwIGxlZ2FjeS10cnVuaworOTgzOCAyYTA3MjU4YjFmNGUwODZjZjdiMzE5YjYxMTQ1NWQwNGZkZjBkNzliIGxlZ2FjeS10cnVuaworOTgzOSA2MjE0NDBiYjk4YjljMjYwODhjOThjMTMxMzUzOWQ3ZWI4MzVlMTMzIGxlZ2FjeS10cnVuaworOTg0MCA4NWZmMjA0NmUzN2Y4MWNkODRlMDAxMGFlYTA5MTg1OWEyY2MzNDkyIGxlZ2FjeS10cnVuaworOTg0MSBmNGE0NzIzYjk1NTMyYWI5MDRhZjY2MDM4NGJjNzA0ODE4ZWYyODIyIGxlZ2FjeS10cnVuaworOTg0MiBmMWM4OGQyZDEyNWJmZDQzMDZkZDA2NThjZmZiODk5ZDQ1MDM0OTZiIGxlZ2FjeS10cnVuaworOTg0MyAxODdiODk2NzVkZGFlNDBjNDA1MDZiODY3MzU0OWViNzE5NDlhM2E3IGxlZ2FjeS10cnVuaworOTg0NCA3MTdjM2RhY2EwOGU5NTM5Mzc4ODk5ODJkOTJjMTVhYjVkZjYxZmI3IGxlZ2FjeS10cnVuaworOTg0NSAwYzc5Y2FmZWM0YmM1NTA4YzZlNmUzMDcyMWQ3YjIyOTRiNTY2MDY0IGxlZ2FjeS10cnVuaworOTg0NiAyMTY1N2JiMGJlMzViNGM3MWRjYzgzNDQ5ZjJmMzZkMjNhMmViYzBiIGxlZ2FjeS10cnVuaworOTg0NyBmZWQzY2Y3MjY4M2RjMTc0N2VjM2MyYzRiOTYxNTc2MjA1NDY1N2JjIGxlZ2FjeS10cnVuaworOTg0OCAxZjQ2MjVmZTY2ZTJjYThjZTBiYThiZjIzOTRkMjY3MDUxN2M2MTE5IGxlZ2FjeS10cnVuaworOTg0OSBmNWExODlhZmJjZjk5NGRkOWExNDVkYjhmMjQwNThjY2QxYjIxNzBkIGxlZ2FjeS10cnVuaworOTg1MCAxZTY2YzRlMzFkMTUwYWZkOGIwYjllNWJmMjJlNTZlOWRiZjFhN2MxIGxlZ2FjeS10cnVuaworOTg1MSA4OTU1OWVlODVlNTQwZDJlZTRmMDg1ZTZhOWFiYmZjMDlkYTJiZjI3IGxlZ2FjeS10cnVuaworOTg1MiA4ZDExYjM2NzFlNWQ2MTg3ZDkzN2U2ODgzOGI4NWJjNWQxMjdmZmZiIGxlZ2FjeS10cnVuaworOTg1MyAwMDMzOGE4MTNkY2I4YmJlMWMyN2Y1OTQ0ZWFlNDY5OTQyYjdkMGIzIGxlZ2FjeS10cnVuaworOTg1NCBmYzZiZTdhZTAxMmY0NGNkOGQyNDA3NTJkNjgyZTlmYWIxODIyOWYyIGxlZ2FjeS10cnVuaworOTg1NSBmNzhhZjViYzc4ZWRkZTY2YjgzNzVlZDY3NjAyMzJlMTQ1MmU1NmRiIGxlZ2FjeS10cnVuaworOTg1NiAwZTBlODhmOGUxYWQ1MWZhZmQzNjFiMGQ0OWNkYjhlNjQwZGVmOTJhIGxlZ2FjeS10cnVuaworOTg1NyBlNjNmMmFkZmE3Y2M4NDVlOTkxOTAyZDljNTE0YjI5ZDQzZTEyMDYzIGxlZ2FjeS10cnVuaworOTg1OCA2MmFjNTdkZTdhZGJlNDZjZGU4ZWYwODU5NjZjZWYyYWNlYjBlOWQwIGxlZ2FjeS10cnVuaworOTg1OSAxMDg0MGMzNzM3YTdkZDEwOTNkMmFiODYwMDQzZmUyODk1ODcxMDY4IGxlZ2FjeS10cnVuaworOTg2MCA2OWFkZDRkNzczNmYxMDY1NjkwMTRlY2U5OTg3MmY0ZTQ0NmIwNjE3IGxlZ2FjeS10cnVuaworOTg2MSBmOGE3NzIyNGViY2FmNTEzNGJmY2MxZjkzOGM5NTc2ODQyMTNmOWJjIGxlZ2FjeS10cnVuaworOTg2MiBiNThiMmVlNjVmNzVmNTE5MmEzZDkwZjQwODVhZjc0YmIxNTdjMGI4IGxlZ2FjeS10cnVuaworOTg2MyA2ZGQ2NTFjYWY5ZTA2NmUzZWM5MWU4OGVkZmQ2YzczNzgwN2U5ODkyIGxlZ2FjeS10cnVuaworOTg2NCBmNDA0MGYzYmRjYzczN2I2NjVmOWMyOWJhMGE2ZDUyM2ZlYzc2NDc1IGxlZ2FjeS10cnVuaworOTg2NSA0NjExOWQxZTk0MTNmN2EwY2NlNzhmZWZkZDI1NTJiOGRlOTBiMjEzIGxlZ2FjeS10cnVuaworOTg2NiBlZGMwZDAyMWU0Mjc2ZGZiNWY3ZWZmMjljZjU4MjU5YWNkNDFmNTA3IGxlZ2FjeS10cnVuaworOTg2NyA1NDNiMmI0YWY1MzI1OTExNzY0MWQ0YzQxZTE2YzVmMTc3MWNiMWZjIGxlZ2FjeS10cnVuaworOTg2OCAyMjM0MzMwMzhhNDdlNzg0ODU4ZjQ0YWNkODFlMjk2MGUwN2VkYjkwIGxlZ2FjeS10cnVuaworOTg2OSBiNjRhOGNlYzhkNzVjNWFhOTMyNWE4NzFkYTI1N2JlY2ZkOGI5ZGE5IGxlZ2FjeS10cnVuaworOTg3MCAwMzMzZTRhOTUyZjkzZGJkYzhjMzFlYzViMTJiOWVjMDczMDg5NTgxIGxlZ2FjeS10cnVuaworOTg3MSAwMjhmNzBkNTA4YzBiNjE1ZjYyZjgzNDA4NjUwYjU2YTRhMDQ4MTAwIGxlZ2FjeS10cnVuaworOTg3MiA3NjdiZjgwMDRjZmZkZmVkMjIzNWMwNGY3M2YyMjQxMWE4OWNiYzNlIGxlZ2FjeS10cnVuaworOTg3MyA3ODY4NzVjNGM2MmM1MGQ3YzFlMDQxMDc4MGQzMDVkZGU4OWUxNzkxIGxlZ2FjeS10cnVuaworOTg3NCBmYmM3NTUzNWVhOTNjYjNmMmI1NDg2YjEwYjMzZDQ2NWI4YzU2ZmNhIGxlZ2FjeS10cnVuaworOTg3NSA0NWQ2NWJjOGE1NTBmMzM3OWFlZGI5MzE1NWZhNzIzZmU4MzJjM2JjIGxlZ2FjeS10cnVuaworOTg3NiA3YWZjMTVmMDhkODJjYWMzNzIzOWM1MDFlZDEyZmE4OTVjZDUzMjg5IGxlZ2FjeS10cnVuaworOTg3NyBiOGQ3ODY1MGY4ZGYxZDViYzVhNzFjN2EyZjQ3MjZmMmZmMjM3NjU0IGxlZ2FjeS10cnVuaworOTg3OCA2ODVjNTEwZTE0Y2VlYjVkNGUyZmM2N2U0MjRlNDFhYzFlNzY2ZTI4IGxlZ2FjeS10cnVuaworOTg3OSA4YzAxY2ZlZTE0YmExOTI2N2IxYTJiMGMzMjdkZTY5YTMzOTk0OTI1IGxlZ2FjeS10cnVuaworOTg4MCBjNzQ1NGNhN2QzYWNjMTQzZTAyYTBiNmY5YmVlMDUyMDA2MGI5YWYyIGxlZ2FjeS10cnVuaworOTg4MSAxODVjMWQ0N2NlN2EwODc0OWFjNzNhOTg4Y2Y2NzExZTMzOGYwMjI5IGxlZ2FjeS10cnVuaworOTg4MiAzYTc3YmNhMjI2YjkzNzdmZjJhOGRhMjMzNzQ1YmFjOTQwMGJlODk3IGxlZ2FjeS10cnVuaworOTg4MyBjNTFmN2I2ZDI1NTZlNDY5NTA5OGRlMmY3Y2U3YWVjODE5OGRlZTBjIGxlZ2FjeS10cnVuaworOTg4NCAzYTQ5ZjU4ODZhY2FlYjA5ZTYzYmI4NGRmYmQ5MWM4ZDMyYTFmZDdjIGxlZ2FjeS10cnVuaworOTg4NSAyYzU0OTAxNDcxZjVkOTA0ZDBiY2FmNmIzODQ1ZDJhZDMwMGI5N2U0IGxlZ2FjeS10cnVuaworOTg4NiBkODhiZjc2NzE0NTgyNWFiNGM0YTZkYjlkMGM4ZmRlYjdhYmY1OTMxIGxlZ2FjeS10cnVuaworOTg4NyBkZmEyNDc3NjQzMjM3MDI0NThhYjA5OTlmMTZmNmNiNjYzMjRjYzE4IGxlZ2FjeS10cnVuaworOTg4OCBkNzU4ODQxYTc2NjFiYzdmM2M4MDhjYmU3MzE0MGM0NzNmYjk1YjkxIGxlZ2FjeS10cnVuaworOTg4OSBhZDg5MWY2YTE5ZWViYTRkMzI1MTg3MjBkNzljNTg0MjI3ZWU2NGZjIGxlZ2FjeS10cnVuaworOTg5MCAyOTdiZWEyMzNlMDMyZmJkZjc5MzdhYjZkODQ5MzQxNjdlZGIwODc2IGxlZ2FjeS10cnVuaworOTg5MSBkZWRjZTliNjg3NDI0MDUxODg0MDI3MGY3OGQ5MjQwMGExYWJlZDkzIGxlZ2FjeS10cnVuaworOTg5MiA2NTg0OGE3Yzc3Yjk4MjUzMWE2ZTdkYzk3MGYxMWJmNjliOWU1OTU4IGxlZ2FjeS10cnVuaworOTg5MyBhMTQzNWM3ZDMzOWI3ZmMyMTM3NjNiM2JjZTEwZjQ2MThjMjVkMDRkIGxlZ2FjeS10cnVuaworOTg5NCAxM2YyOWI2MmEyMDk1MzhmZDU2MjhhYzM2NjQwZWE0MjY3OTMzM2NiIGxlZ2FjeS10cnVuaworOTg5NSA2MjU1ZGM4NjFmY2YxMzUzZmUyYWQyNjI1NjhjMWE4YWQyY2IwNjQ2IGxlZ2FjeS10cnVuaworOTg5NiBiMWYxOTVjOTdlZjk5YTRmYzZmMjQ5ZWVkMWE2Y2Q3ODQ1YzRhYTMwIGxlZ2FjeS10cnVuaworOTg5NyA3Y2EyYzNkODc2NjIwNmFlMjVmNTQ3OGI0MDM5YzJmYzU2MWQ1MDYzIGxlZ2FjeS10cnVuaworOTg5OCAzZDlmNTEwNTBhYmNhNDViNzJlOTY3NGQ3NjI3NDk0YWM2OWMwYmQ0IGxlZ2FjeS10cnVuaworOTg5OSA0MzkzODk3ODUyYjI0NDg2YjIzOTIxZDBkNGMxOTU0MjNkMjQ5ZTJmIGxlZ2FjeS10cnVuaworOTkwMCAyZDUwODgyMmU3ZjY4ODVhODNlMzkzZThmMWFkYWE1YzY1OWI2OTg2IGxlZ2FjeS10cnVuaworOTkwMSA2ZTczZjQxNjhiMDYyZWNhNWY3N2EwN2I1NThmMjNhMTczMTMwOTkxIGxlZ2FjeS10cnVuaworOTkwMiAxMWU5MzM3Y2RhM2QxNDdlZTZkNGUwMmE3ZGQyZDY1ODNlMmM2YjM4IGxlZ2FjeS10cnVuaworOTkwMyAyOWJkYmUwMzllMDVlYzg1YWQ3OTQ1YjAyZjZjZDQyMTI1NTg1MmFjIGxlZ2FjeS10cnVuaworOTkwNCBiM2UzZGFlOWI2MTIyNDQyZDE0NjIyMWIwNGIzMzI5YWVmNWU5MTY5IGxlZ2FjeS10cnVuaworOTkwNSA1YWY3ZDNkYTg3Y2Y2YWNiNzkyMjYwMmM4MDcyZmEyOWEyZGYyZTcyIGxlZ2FjeS10cnVuaworOTkwNiAzZjIyODQzNDRhNDFiYTI0Zjc1ZDA1NmZkMDNjYzg4NmY4NjFhNTIyIGxlZ2FjeS10cnVuaworOTkwNyA4M2U3NzU5ZTcyOTc4NjlkZGRhMWNkMTc3NDJkMWU1NjQ1Y2Y2ZWI0IGxlZ2FjeS10cnVuaworOTkwOCA3ZGY2ZjA0NTM0NjkxNzdjZDA4ZmNhNThhN2ViMjhhOTAzMDAwMmQxIGxlZ2FjeS10cnVuaworOTkwOSBhOWZiZjIxYWI3Y2U5Y2U3OTM2ZThhM2NjNTk5NDVjZGUwODRmYjhmIGxlZ2FjeS10cnVuaworOTkxMCAzNjU1MjZjNGNmOGJiMzIzODQ2NjU5NGQwNzMyM2RjZTIwNTgyZWFmIGxlZ2FjeS10cnVuaworOTkxMSA0ZjQ1ZGNjZGE5NmIyODc0N2UzM2Q0MWUxNTRkNWJkMWNhNGI0M2I1IGxlZ2FjeS10cnVuaworOTkxMiAzZGUwY2I4MmU2MWFlNjUxYmUwODA4ZTYyMDE4OTA5NWVkZWNkNzY5IGxlZ2FjeS10cnVuaworOTkxMyBjYmFjZDFiZTcyNzVjMDBmM2M2M2I5NWViNWEzODRjZjJlYjAwMGIyIGxlZ2FjeS10cnVuaworOTkxNCBkMTQ2NWI1YzBhMDg5NGUxNTUxMWRjMTdiYWJjM2I0MTcyZjQyMGVlIGxlZ2FjeS10cnVuaworOTkxNSAzNzQwZmYyZWUwNTNjYTkzZDg5MDViZWM1NTBhYTQ2NmI5YTI4OWUzIGxlZ2FjeS10cnVuaworOTkxNiBjZDExNjkwY2IxNGIwNzJlNzBmMjVlOGMzZmRhNzQ4YTExYjlkMTgxIGxlZ2FjeS10cnVuaworOTkxNyBhNjRjODlkYWUxOGQ2MGU1NGE4MmVlYWRlMzI4NmE3NGY2YjMwNDE4IGxlZ2FjeS10cnVuaworOTkxOCA1OTBmNjI1NGY5YTlhZWFhNDIwMjNlZGI1NjhiZThlYjA3MjVkYTdhIGxlZ2FjeS10cnVuaworOTkxOSBhODA1OWI5NmJjMzU1YWE4YjYyZmUxNjUzN2NmYzIwZTkzNGNkMzE2IGxlZ2FjeS10cnVuaworOTkyMCAwNTE4OWY3Y2RiZWIxODQxMThkNjE2OGFkMzMxZjk1MGMxYTlmMDY4IGxlZ2FjeS10cnVuaworOTkyMSA5ODE1YjE4YjIzZTNiNjg1YTlhZjIzNTQyYjUzY2I5OGQxYjM2NzkxIGxlZ2FjeS10cnVuaworOTkyMiAzNzIwZTk5NmU1NTEyNzM5MTQwZGJhMjk4YzlkMWNiMjU1MDM5MjczIGxlZ2FjeS10cnVuaworOTkyMyAxNjY4NDk5MjA2ZGNmYmI1ODJlN2U1MmE2MzQ4YTU0ZDQwZjU0MzlhIGxlZ2FjeS10cnVuaworOTkyNCAyOTMzZmIzNGYzMzNmZDUyYzE3MzkyMGZhOTRmMDU0MGUxODkwYjYyIGxlZ2FjeS10cnVuaworOTkyNSA4MjZjNzE4MDE5MTFjYjBjNjM5N2Q4OTY0YWQ2NjE0OGZmOGU0NjM4IGxlZ2FjeS10cnVuaworOTkyNiBjOWI2ODUwYzQzMzZhNGNkYWZhMmEzZjUwMDJlZGViYWM0YjRmMTc5IGxlZ2FjeS10cnVuaworOTkyNyA1ZWRjZWI4ZjFmYWI3YWM2ODBiMTlhOWNkNDliZDU1YmMzMDJmMmYyIGxlZ2FjeS10cnVuaworOTkyOCAwZDc2NzYxNGM5NDFlYjEwZjVlYzI5MzJjNDNhYzcxYmE5YWRiYTE5IGxlZ2FjeS10cnVuaworOTkyOSAwYTk1NDFhODY2ODkwOTRkZTQxM2Y0ZWM2YzAwY2RlMmQ4ZWI1OWYzIGxlZ2FjeS10cnVuaworOTkzMCAyM2NjMzQyZWUxNTBiYTg0MDFmYmMzYzM5YmFmZTM0MGEzNWEwMGNhIGxlZ2FjeS10cnVuaworOTkzMSAzYzM4YzhhZDU2MjNmYjQwZDRhZmRhMjYxMzMyNWMzNzdiZTliMDA0IGxlZ2FjeS10cnVuaworOTkzMiAxYjRhMmUzOGFiNWVjNjdhZTNlNTE5MGU3ZjhlZDBiMjUzNzY4NjMwIGxlZ2FjeS10cnVuaworOTkzMyA0ODMyODZlMjE5ZTFmNjQ0NDYzYjRkMmJkN2IyZjEyNmE1ZjExYWU0IGxlZ2FjeS10cnVuaworOTkzNCBiZDA1YWI0NzMxZjc2YjNjZTQ0ZDQzMGM1M2U3NzBkNGI2OTQ2ODg4IGxlZ2FjeS10cnVuaworOTkzNSAxYTliMDliM2NhZjhhZTVlMjg1YjcwNGQyZDlhYjdiNGE0ZGFhZWI0IGxlZ2FjeS10cnVuaworOTkzNiBlYzk1ZThkYWU1MDQxNDI1YWU1N2NhNTdjMTk2ZjBlNGU0NDgwZTc5IGxlZ2FjeS10cnVuaworOTkzNyA0YWE0NzEwZDg5NGM4MjY4ZjQyZTZhNDA4MTY5NTZiNmQ1YjZjZDU5IGxlZ2FjeS10cnVuaworOTkzOCBiZDgxNTM4ZDRkZGZkNDc2MTdmZGI0NWJhMzk4NThhOWZkYTY0Y2YyIGxlZ2FjeS10cnVuaworOTkzOSAwMzFkZTg1NDBhN2VhMDVkYjU0ZDAxZmFjZjUyZjhmNDIzZmNlMGNlIGxlZ2FjeS10cnVuaworOTk0MCA5NTQxYjliMDkzN2RkZjE0YzBiNjQ4YjFjYmVjMjMwNDcyYmE1ZjVmIGxlZ2FjeS10cnVuaworOTk0MSA4Mjk0N2ExOTI2Zjc4MmRlZmJlMGNkNzUzOTdjNTc2MDk5ZTU2YzEzIGxlZ2FjeS10cnVuaworOTk0MiAwMjEyMzdiYTUwMDc0MjVlMDIwZTdjZTk2OGQ4OTAzOTU1ODYwYTJjIGxlZ2FjeS10cnVuaworOTk0MyA3YjJmZDQ4NmVmZWUxY2Q4ZmRlMjBhZmNjMTZiODgzNzViZDY4MDIzIGxlZ2FjeS10cnVuaworOTk0NCBjYjFhNTc3YzAyMzljYmIwZDk2ODc5YmMwNGZlMjllMzU2ZjMwYmUxIGxlZ2FjeS10cnVuaworOTk0NSAwMzYwZTNlMzBhMmU0MGM0OTIyZjc4ZDVkNzE4MTgyZmE1NTk5N2YxIGxlZ2FjeS10cnVuaworOTk0NiAxNDlhNTQ3OTg4OTYxYjdhY2U2MjhhZWVjMTZlZTNhYmRjYzYxNmY1IGxlZ2FjeS10cnVuaworOTk0NyBhZDNlNGViMzVkYTc3MjM5MGM1MGMwMjkzNzg2Yjg2ZmM5YTA2ZTE5IGxlZ2FjeS10cnVuaworOTk0OCA2Zjg2OWU1ZDMzY2NiZjc2MzRiN2EwYmU1ZWFhNDEyYWY4MmVmZTI2IGxlZ2FjeS10cnVuaworOTk0OSA4ODFhNWU2NzE0ZGNiNzBhNWNlMDc5ZjUyMWZkYmUwNzFkMzBmMGU4IGxlZ2FjeS10cnVuaworOTk1MCA2YmI1MDZhZDk2ODQ4YWMyYTI4Y2Y1MTcwYjdmNTdjOWJmZGZhMmZmIGxlZ2FjeS10cnVuaworOTk1MSAyY2YxY2FlOWI0NmVmMzdmMDJkNWM3ODY0ZGMxODg1MGQwYWNjYmJiIGxlZ2FjeS10cnVuaworOTk1MiAwNzZiODJlMDQwYTVjOTM1NGU0Yjg1ZGNjYjIxZTIzOTU2Y2RmZmFkIGxlZ2FjeS10cnVuaworOTk1MyA3ODRmZWY4MzdiNTJkYzhkNjAxODFkY2FmNTBjOGMwMDJmZjM0NzdhIGxlZ2FjeS10cnVuaworOTk1NCBjYTY2YTI1MzZjZDU0OWE1OTdkOTZiMTgyNTRlMDNmNDdmNDk0OTgzIGxlZ2FjeS10cnVuaworOTk1NSBiOTQyMWUxN2RkZjc2MzFkMDdmZDIzZjBhZmQ2MWFjNWI2YzRjZjdhIGxlZ2FjeS10cnVuaworOTk1NiA4MDczOWIwYmMzMDI2YzkyYThkMjNkNmE0YmE4M2VmOGY2ZDg5NTcxIGxlZ2FjeS10cnVuaworOTk1NyBiZmU1N2VmYWQ3NTFmYWRmYmU5YjI2NWNmNTZlMzg3NmIwZGI5NjUwIGxlZ2FjeS10cnVuaworOTk1OCA1NWMzZmQxODUzY2ViYjJmNGNlN2I5ZmJhM2EwNjgzNDZjN2Y0NjhlIGxlZ2FjeS10cnVuaworOTk1OSBjY2EzOWQ3MTlhYmE2ZTVjMDQ1OTZkMzk1NDYwNzUyOGQwZDMyNjE1IGxlZ2FjeS10cnVuaworOTk2MCBmMDFmZjI2ZmFjYWViODczODJhMDE0NWRhOWZkN2VjNmVhMzlhY2E5IGxlZ2FjeS10cnVuaworOTk2MSBiYTRhMDJjMGU5MGM3OTJhZmE3ZTFhN2M5MWQzMzQ1ZTRjMTBiODEzIGxlZ2FjeS10cnVuaworOTk2MiA1ODBmNmM5MjI3MGJiODcwMTY5YTBhZWY4NzdlZTZmNGEzYTU1YjIyIGxlZ2FjeS10cnVuaworOTk2MyAxZGZjMTVlMzExMzA0M2Q2MDA4ZWZlZThjMjlmYWRlZjFkNzBjNDViIGxlZ2FjeS10cnVuaworOTk2NCA0Y2FlMmRlMzBiNTdmYzVlMGJiM2Q1Y2NkNmZjMzc4MzE3ZDMwZWUzIGxlZ2FjeS10cnVuaworOTk2NSAwNWQwYjZmYmVhOWI1ZGM2N2NlZWFkMzY1MmZkYzQ4MjY3MjkyYzRiIGxlZ2FjeS10cnVuaworOTk2NiA5ODM0NWFhMWQ1ZmVkMzE2MzNmYzgyZWVkMTlkOTI3OTIxNDYwYjc3IGxlZ2FjeS10cnVuaworOTk2NyA0MjdiODFjMjQ1MmZlMWQ3MmZhMTAwYTRiNzI1MGJkNDBiNGIxYmFlIGxlZ2FjeS10cnVuaworOTk2OCAzZGZjMzc2ZTZmMWE4YmU0Y2U5YTAxMzFmYzk1MGU2YThhNzE0YjEyIGxlZ2FjeS10cnVuaworOTk2OSA3ZjI4OTk3YjJjMTA2ZmNlMjNiZWUyYmMxZWRmMjZmYTIzNzg5NGUzIGxlZ2FjeS10cnVuaworOTk3MCA1NDQ1NmYwOGViYWQ3NTUxMmQ0MzFhZWExYTE4YWRjYTcxYTZlYWE5IGxlZ2FjeS10cnVuaworOTk3MSA2ODU3YWNiZTJlNzRiMDBhZjg2MGFmMmJhODcxZjUxMjk3NWIzOWFlIGxlZ2FjeS10cnVuaworOTk3MiBjNGQ1NmZjNjNkOGYwMzhiNGFiNDE2YzE0Nzk5YmUzYjZlNThhNmE4IGxlZ2FjeS10cnVuaworOTk3MyA2YjAyNjY2NzlmOTY5NTI1OGQ3ZmE0MTM5YzcwOWE5Zjg2NDU3ZTI0IGxlZ2FjeS10cnVuaworOTk3NCBlYzc5NzZkMmQ1ZTllNDEzZTIxODg5MmU5NmQ3ZTc5YzJhYzg2ODE2IGxlZ2FjeS10cnVuaworOTk3NSA1ZTM5MDA3ODQ2MGFlOGU0MmIzZjk1ZDM2Njg3YzEzNjRmOWI4NzFkIGxlZ2FjeS10cnVuaworOTk3NiAxOTA2YTdmYzc1MDk0ZDY4MjZhM2ZjYTViMmNiMmE1YTg5ZDYxM2FkIGxlZ2FjeS10cnVuaworOTk3NyBkOTU5MWM5YjJjNWZhNGQxNWE1YmU5MjZhNjA0OTI2YmJiMjc3Zjk3IGxlZ2FjeS10cnVuaworOTk3OCA5ZGUzY2FkNTA5MDUwYzJhYzZjNDZiZWJiOTEzZGEzZTEyNDk0MjAzIGxlZ2FjeS10cnVuaworOTk3OSBkMTdkYjNlYmZiYzIwNWRjMTg1NzY0YzMyOTU4M2ZhMjJjNTUyNGQ0IGxlZ2FjeS10cnVuaworOTk4MCBmMjNkYjNiNjVjODM4MWZiZWQ3ZWQ3NDQ0ZjYwNmJmZDg5YTk1OThhIGxlZ2FjeS10cnVuaworOTk4MSA3NTQ1ODYwMzljMTFiMWY5Y2ZhNDEwZmQyN2YyNDE5MmYxZTY0NjZkIGxlZ2FjeS10cnVuaworOTk4MiA4OTRjZmZlYjg5YmE1MzUxN2Q2YWNlNmZhNmMwNjI3NzNhZjIwMjQ1IGxlZ2FjeS10cnVuaworOTk4MyBlZjk4MGUxN2I1OTM5Y2FiYWY2MjE4MDRhODAzNDc5OGQyMzYxYTU2IGxlZ2FjeS10cnVuaworOTk4NCA2N2EyYjk2ZjAxODk3MzQ5NDZhZGMzZTAyNWMzNzA0ZTg2MzY4MTU0IGxlZ2FjeS10cnVuaworOTk4NSA1MTBlNTI0NDY3Y2U2MjczZGVjMmJmNDQzODAzYzY5ODE0NzQxMzUxIGxlZ2FjeS10cnVuaworOTk4NiBlZGEwY2ExMzhiM2Q4NGJhOTExOTYzMzhkMGU1ZWE5ZTBhYzJhNDQ4IGxlZ2FjeS10cnVuaworOTk4NyBiNWQ1MmM0MTViMTVlOWU0Y2YwZGRmOGM1Yzc4MjQ3MjdlMjRkM2JhIGxlZ2FjeS10cnVuaworOTk4OCBlYzQ3MzVjZTEzNjA4NDNkY2M2ZTc3YTMwZjdmMzAxZDc4YmE1MDMyIGxlZ2FjeS10cnVuaworOTk4OSAzNWEzY2MyNGVmMDQzMjdhNmJhNmRiNjBlMDQxYWM0OWVlYTAxZGU4IGxlZ2FjeS10cnVuaworOTk5MCBlM2YzN2EyNjAyZDUwNDkwNWJiOTI1ODgxYjYzNzYzOTY4MzY5NmNkIGxlZ2FjeS10cnVuaworOTk5MSA0ODg4ZjQ0ODQ1MGYyM2RhMDJlMmQ2ODI1NWQ2NzkyOWFjZGI0YmI4IGxlZ2FjeS10cnVuaworOTk5MiA5NzBlOWUwNThiNzYxYzRjODQ3YzFiNDQ3Y2QyMmRmY2EwMjk4ZjdkIGxlZ2FjeS10cnVuaworOTk5MyBlYzBmOTlmMWEyZmRiMGFiOWY2OWQzMGY5MGI4NGQ0NDRlYzA5OGVmIGxlZ2FjeS10cnVuaworOTk5NCBiNjA0MjRhNTZmNzQ0ZTVlZTQyYmZkNGZlMTlhYzJjYTQxMjczYTAyIGxlZ2FjeS10cnVuaworOTk5NSA4M2MyYTVhNDVhNDFiMmZhZGI5MzlhM2MzYjZhMGZkYjI1MzU4Y2ZhIGxlZ2FjeS10cnVuaworOTk5NiAzMTJjYTlmZGFjZmYyNzViZTkyMDcwNDQ5NmE5NWMyNWI2NjJjNmQwIGxlZ2FjeS10cnVuaworOTk5NyBjY2U4OTk0ZDUyY2YwZThhODMwMDQzMWZlNzY5NmU3ZGI4ODJmMjcyIGxlZ2FjeS10cnVuaworOTk5OCBmOWRhMzRmNzI2OGI1MWM4NzFmMmYxNDNkYTgwMDY0MjJkNGMzNzk1IGxlZ2FjeS10cnVuaworOTk5OSBmYmM4OTIyNDM0NzdmNmNjYjZlYTIzYWUzYmNkZTU0YTA2NGY5Nzk3IGxlZ2FjeS10cnVuaworMTAwMDAgZGMzNzQ3MTFjODQ4Y2Q2NjEzN2U5YjZhNmU2ZWI0YzE3YzA0ZmFlMSBsZWdhY3ktdHJ1bmsKKzEwMDAxIDVlNGMyODk3ZTYyNTc1ZTllNDY5YTBhZjAwNTlmN2Y3Y2ZkYjU2ZTYgbGVnYWN5LXRydW5rCisxMDAwMiBlZWFjMzZiZmUwMWFhM2YxZmM4ZDFkMWZkNWZlMGVhODczODQ1ZDA0IGxlZ2FjeS10cnVuaworMTAwMDMgODg5OTI2OTZiOWU4ZDE3ZDU1YTg0ZGUzMzJiNTliOWM3ZDdkNTc2OCBsZWdhY3ktdHJ1bmsKKzEwMDA0IDYwZTdiMDAwZjI3Mzg0NjIzZGMxNDdkNTJhYWNjMzM5OWJjNWQzOWEgbGVnYWN5LXRydW5rCisxMDAwNSAyNmE4NzcxYTRjZmQwMDliOTZkNzNhNThlYjU1ZTAwNzJlOGM5ZWI0IGxlZ2FjeS10cnVuaworMTAwMDYgM2NhZjIzOTdjNTA4MTU1M2IzM2NmYjdlOWJmYjVhOWUyZThlOTA5ZSBsZWdhY3ktdHJ1bmsKKzEwMDA3IDAzNDM5ODczNmU2NGM0MThjYmQzMzc3ODc1NWRmZGJkZTExZTQ1OWUgbGVnYWN5LXRydW5rCisxMDAwOCA4OTExMDVkYWM5YjQxODcxNDQ4ODE3OWJlMjgxOWVkMWNhMzVjNGUyIGxlZ2FjeS10cnVuaworMTAwMDkgYjQ2NjBhZDdkYzQxZWExNzRmODk1OTYzZWU1Mjg0YWMwMzJkY2YxZiBsZWdhY3ktdHJ1bmsKKzEwMDEwIGJmMjM2ZmJmMTFkYWFlM2EyMmMxMTQ2N2UwY2I0YjczYTIxNjQzYjkgbGVnYWN5LXRydW5rCisxMDAxMSBlYTgxODRiZmYxMmRhNWMwZDFlYTU0YmM4MTYyMzZiNjM3MTNiMGYwIGxlZ2FjeS10cnVuaworMTAwMTIgZjkxZDVhMDMzOWJmM2FhMzhlYTkwNGY3Mjg1NjQ3OTU0MThhYWQ4YiBsZWdhY3ktdHJ1bmsKKzEwMDEzIDEzYjYwYWJkYjcwZDE5ZWEwNjZmMjIwM2MxMTYzY2VlNGI3MzY4NTEgbGVnYWN5LXRydW5rCisxMDAxNCBlZWRhYzUwZDc3NDQzYjBiYmRjY2Y5YzZkNTI4NzIwZmNmZTExZmJkIGxlZ2FjeS10cnVuaworMTAwMTUgM2ZmNmIzZDNjNGQ1ZTJmM2Y1ZGI3YmNmYTlmNDFiMWRjNTcwMzYyNSBsZWdhY3ktdHJ1bmsKKzEwMDE2IDAxYTlmODRhMjY5YzlkYTBhOWJlMDFmMGFiYzI3OGFhNmU0OWZkNGUgbGVnYWN5LXRydW5rCisxMDAxNyA3ODMwZTFkZTk4MTc0NTdlYjFmYzQyZGI3NTNiZjNiZDkwZTk0NmU3IGxlZ2FjeS10cnVuaworMTAwMTggOWRhZTBhYjM4M2E0OThlMWI1NzI2Njg0MDE4Njk4YTdiN2U5YTU3NyBsZWdhY3ktdHJ1bmsKKzEwMDE5IGM5ZjRhYTJjNDVlZGQ2N2ZkMGM0YzQ1YjQ0MGUzYWE0ODQ0MTg1MmQgbGVnYWN5LXRydW5rCisxMDAyMCBjYTE3MGQ3NjFmMDg2ZTMwNWM4YjVkYjZjNzA3NTcxZjEyMWZiMzA0IGxlZ2FjeS10cnVuaworMTAwMjEgNDhmN2FjNDUyZDk5Yzk0YjkzMzAzMWQ3YjdlOWQ5NmM0YTY5N2Q0MSBsZWdhY3ktdHJ1bmsKKzEwMDIyIGQyMDJjODJkM2M1NzE2MjZkMzZmMWM0NDBmOWM1ZjUxZmMxYzlmMGEgbGVnYWN5LXRydW5rCisxMDAyMyBjMDEzMWZhZTA2ZTllMDcyMTFjODQ0YTkwZGVhNGQ3MmVjODYxN2VhIGxlZ2FjeS10cnVuaworMTAwMjQgNjQyMWVhMWRlMjgyODdiMjRkZDY0Y2M3YjI2NDdiZmZhYzk1MzFiYyBsZWdhY3ktdHJ1bmsKKzEwMDI1IGQ0ZDg0YjU0YzQ0ZDgxODllMjAzYTE0MDNkMzhkNzg5OWQwOWJhNDggbGVnYWN5LXRydW5rCisxMDAyNiA3ZWIxOWIxY2U4NGQ3NGYyZTJjOTU1YTYzMGM2OWE1OTdhY2M0OGQ1IGxlZ2FjeS10cnVuaworMTAwMjcgNGIxMWNiOTYxMDQ2YTBjNGQ4NzJkNWY2MmNjYTUzMDk5YjQzMTRmNyBsZWdhY3ktdHJ1bmsKKzEwMDI4IDY5ODYwODIxY2ExZDVkYTY2NTFkZDQ2NmY5YjI0ZjM2N2RkY2FlNTUgbGVnYWN5LXRydW5rCisxMDAyOSBkMzRmZTMwYjk1ZTg1NjgyMTM4OTNjZGYwN2NmM2MwMzllOGQzODdiIGxlZ2FjeS10cnVuaworMTAwMzAgYzhlNWY3MDQ2MjNkODkwMTFmODZmZmZjMjk0YjA5ZTA1NDA1NTIzMSBsZWdhY3ktdHJ1bmsKKzEwMDMxIDgyZWI4YjNkZjZmODI2NTQzYmJmOTYxZjcwZTUyNTRjMWU4YzFlYjAgbGVnYWN5LXRydW5rCisxMDAzMiA1ZGY2NTZjZDEwYWRlMWQzNWI1NzZjMzYzYWQyYzEyODEyY2E5MDg4IGxlZ2FjeS10cnVuaworMTAwMzMgNWFlY2MyNTA5ZTQ2ZDlmNGJiYzg0ZWFiMGE3ZWMxMmMyNDhjMTkzMCBsZWdhY3ktdHJ1bmsKKzEwMDM0IDczMzk1MDgwNGEwYjQyYWZmYTBiZmI3ZmIzYjcwZThhZDYxNmEyNjcgbGVnYWN5LXRydW5rCisxMDAzNSA2NTk4Mzg0ZDVmNGNiZWQ5YzZmZGEwMmU0MjQyNzY3YWQ1Yzg2MDIzIGxlZ2FjeS10cnVuaworMTAwMzYgMjJkZTUxMTY4MzJmZDY1ZTE5Yjk1NzJjM2IxNzRlOGZjYThiMmYyMCBsZWdhY3ktdHJ1bmsKKzEwMDM3IGMwMmFmMWU3MTNlZGM4YTQ1NjQ3M2JlYWUxNDQ3MjFiZTVjNzk1MDMgbGVnYWN5LXRydW5rCisxMDAzOCBhNDQ3YjI2OGM3NzMyYmQ5MDg2ODJjMTE1MjdmZDA2MDUxOTAxYWYyIGxlZ2FjeS10cnVuaworMTAwMzkgY2M3ZTEyNmYwMDlkMzg5ZDgzYjI1NGU0ZDkzYTA5MTdmMGMyZDhmYiBsZWdhY3ktdHJ1bmsKKzEwMDQwIDQzZjQ3YjhlMzk4ZGE1M2RhOTlhODY0ZmIzMWVkOTJmNzA0OTUyMGIgbGVnYWN5LXRydW5rCisxMDA0MSA1OWIxYWIwMWMyODZlZjMxN2E1OGU2N2VmYjI5YWM1MzY4YTFiZGZkIGxlZ2FjeS10cnVuaworMTAwNDIgMWE5ZjlhNWRmMDRiMTZmMGJjNTdlZTFlNGI0ZTI1MDUxMzQ2ZWRiNiBsZWdhY3ktdHJ1bmsKKzEwMDQzIGJhMTBjNDI5OTliOGJjYTI2OWNiMjBhYWU2ZGZiMTZmMTIwYTkyNzYgbGVnYWN5LXRydW5rCisxMDA0NCAyZmYyZTQ1N2FiODdhYzdhYWUyYmI5YjA3MzMzYjNiZjIwMWEyNzcwIGxlZ2FjeS10cnVuaworMTAwNDUgMDBhZWU0NzQzZDdiYTY5ZWFhOWU4NTIwOTgwMjQwNDY0YThkZmY4OSBsZWdhY3ktdHJ1bmsKKzEwMDQ2IGUxNWU4NWQ5ODdhZjg5ZTY2NjBhOWJmOWUyMGE1M2U4YjY4OWZkNzMgbGVnYWN5LXRydW5rCisxMDA0NyBiOWNiZjE3NGM3MjM4OTIwODY3Y2ZjZmE1ODJlNGNkNmQ5YjQxMWIxIGxlZ2FjeS10cnVuaworMTAwNDggOGFlZTUwYTlhMWIxZmE0Yzc0Yzk1ZjE3ZjQ4YjhmZWYxMTY3NTE3MSBsZWdhY3ktdHJ1bmsKKzEwMDQ5IDk2OGFhYmEyODFjNTNmMDJiM2Y0NWMxOTE0OTVmZTlkZmZhYWJmYjggbGVnYWN5LXRydW5rCisxMDA1MCBjOWY0MTcxMjRlMGY3NjY1NGI4OGE2ZjI0YjhkZWMzNjU3ZmM4NjdlIGxlZ2FjeS10cnVuaworMTAwNTEgYWEwZTgxOTljYzMxODNiM2Q4ODE3Nzg2YTdlZjk3ZGQ4N2E0MmZlYyBsZWdhY3ktdHJ1bmsKKzEwMDUyIDdlN2Q2YjFiOGE0YjJiZGQ2YTY0NzA1YjAzYTZhZmU5YzBhZjE5NjIgbGVnYWN5LXRydW5rCisxMDA1MyBlNjcxMTQ1YWI1MDdlMWQ2ODE3NTJhNjYzODM5ODQ3OTIwODM0YTMxIGxlZ2FjeS10cnVuaworMTAwNTQgMmEwNTZkMTkzZGQzN2E3YmQ0OTE1MDIyMzczMmU0NTkwMWQxODFiNyBsZWdhY3ktdHJ1bmsKKzEwMDU1IDgyN2FlYTVmNTYyMTkwZDA1MDEzNThlMmZiNDI4ZDM0MzUwMzQ2MjkgbGVnYWN5LXRydW5rCisxMDA1NiAyMDQzYzY5ZmYxZDQ1NWQ4MzkyYmM2NGY1YmI2ODFlZWYyMzFlNTM0IGxlZ2FjeS10cnVuaworMTAwNTcgNDJhMjE4MDZiM2QyZmVlNWFjNWY0NmFjOTU2OGE3OWNmZjRiMjRiNiBsZWdhY3ktdHJ1bmsKKzEwMDU4IGQ1Zjg5NTY3YjVhOWY2N2QwYjMyMzA1YTMxNzUyYzdiZTM2MWQyYTUgbGVnYWN5LXRydW5rCisxMDA1OSAwZjU2NWM3ZmU0YmJmZTliNDdjZTlhNWQ1OTIxNTcxYjJmNjgzNzYwIGxlZ2FjeS10cnVuaworMTAwNjAgMGE0YjQ1MzM4YWMyODUyNTZkZGJiZTIzMjM1ZjlhNGUwMjJjNTZlZiBsZWdhY3ktdHJ1bmsKKzEwMDYxIDlkZTBkNTA0OWNhMWI2NWY3OThhNDYyMThlOGJkNGY2YjcxYWEzMTkgbGVnYWN5LXRydW5rCisxMDA2MiBkMmI1ZDkzMjZmMDkxNTQ3MGY2ZmJhZDk4ZGJkMjk4YzI2ZmNjMWUwIGxlZ2FjeS10cnVuaworMTAwNjMgMmVmMGFjYTk2ZjJkMzNhNTVmZjRhZTc1Y2JiMzM3Mjk3NGY3Yzg4ZiBsZWdhY3ktdHJ1bmsKKzEwMDY0IDA3NjViOTU4Y2M2N2ExOWJlMmFhOGY3NDZlOGQ2YmEwYmRlNWZhYmEgbGVnYWN5LXRydW5rCisxMDA2NSBmYzc2MGM2MjY5NTBkZTk3Nzg2YjUyNzYzNGRhMTg2MzdlZGE0Mzg5IGxlZ2FjeS10cnVuaworMTAwNjYgNGI2MzRmMDI0M2Y5N2QwMzJjMTBiYmU0NmNhZDIzZTYzODJiMjcwYyBsZWdhY3ktdHJ1bmsKKzEwMDY3IGJkMDg4NmU3OGYzYjdlMmI0ZTE1YjdjOGNjZTMzZmM4NjJmMzQ4ODggbGVnYWN5LXRydW5rCisxMDA2OCBiNmQ2YTgzNGRiNDlhZjE1ZTQ3NjI3MmRhNmZjNGI5ZTc1MTFjOGJlIGxlZ2FjeS10cnVuaworMTAwNjkgMmYzMjMyMzgxMWM1MzU3Y2E5Y2M2ZThiNjdmNTAxNGQ5Y2Q3NWUxOCBsZWdhY3ktdHJ1bmsKKzEwMDcwIDA5NDQwNjA2YWFjNTg4ZjQ5YzY5YzAzYmFiZThkNjdmNDRiZjA5MTUgbGVnYWN5LXRydW5rCisxMDA3MSBhMTkwMjljZDc2YzUxNTllZjUwMGFhY2VjNzQ1ZjA0OGRiN2E5YTNmIGxlZ2FjeS10cnVuaworMTAwNzIgOTljZWZhYTljNTA5NzJjNWIzYjI1YTY4NTJiNzA3M2E4YzU3ZDFiMCBsZWdhY3ktdHJ1bmsKKzEwMDczIGM0NTZlYmUzNTMzNzRkZTFlNTU3ZmI1MGFhMzFiNzQ0ZDg3YjkyMWIgbGVnYWN5LXRydW5rCisxMDA3NCBhYWI3NjIyMDUwNWVmZGM2OTJkZjRhMzkyOWVkNWJlYTRjMDgwMjJjIGxlZ2FjeS10cnVuaworMTAwNzUgMzliODRhM2RjZWFhNTAzNDBiMTAwZWNkZDdhZDczM2RhZTM1YjQ4ZiBsZWdhY3ktdHJ1bmsKKzEwMDc2IDcyY2FiOTVkMzVlNTcwOWVlOTkwNmMxNDg1ZjdjNDMyZmE2NGU4NTQgbGVnYWN5LXRydW5rCisxMDA3NyAwOTQxNTY4MGJkNGY2YzQ4MTQyYjlkMDFhYzI5YzUxMjU4ZWI0YzE5IGxlZ2FjeS10cnVuaworMTAwNzggNmE0NTM1OTVlNjE5ZTk4MDc2NWU3ZjdjNzg0MzRhNjk2YjU4ODc1MyBsZWdhY3ktdHJ1bmsKKzEwMDc5IGVjYWQyMzRjODdlNDRkOGVhYzBjMDQyNzhhNzNhZTY5ZmI5MWQ0NzUgbGVnYWN5LXRydW5rCisxMDA4MCA3ZjRhNTAzY2U1OGIyNmY4YWMyYjlmMzI1OWE4YTFkZGM4NTE2NGM2IGxlZ2FjeS10cnVuaworMTAwODEgYzBiZjliNjBjMjk4MGIyMzhiNGVhOGI3MWU5MjAyZmJlMjFhOTBjNiBsZWdhY3ktdHJ1bmsKKzEwMDgyIGE2M2Q1NTNlYjY1ODI5MmI5ZDA0OGNiOTFkYmE5M2Q3YmI2MjllNDAgbGVnYWN5LXRydW5rCisxMDA4MyA1OTQwN2Q0NDhiNmFjZDkyMGUzZDFhMzcwNDI4ZmVhZjBmYjUwOGQ4IGxlZ2FjeS10cnVuaworMTAwODQgYzBjMDJlOTI2OWYzY2M5NTY5MzRkMDI3NmUwOGJjZjdkYWViMGJlZCBsZWdhY3ktdHJ1bmsKKzEwMDg1IDAwYWQzMDliZDUwODEwZDhiZGY5ZjkwZDE4MmQ4MTQwMjlhZmNjY2YgbGVnYWN5LXRydW5rCisxMDA4NiA4OTNhMzIwOTUyMjI1NDFmZGY2OTE4Y2VkOWI1ZjNlMmRkMzBjOWRkIGxlZ2FjeS10cnVuaworMTAwODcgYWZiYmZlOGY1NDk2NzA0YTdiYTE5NmQ1ZWI3MDg2YTkxOGM0N2ZkOCBsZWdhY3ktdHJ1bmsKKzEwMDg4IDcwYmNiY2RkYTc0ZjYxYTZmMzUxNWU4MmE0MGVjMzI3NzY1NzFiMDkgbGVnYWN5LXRydW5rCisxMDA4OSBjZGY4MGY3NDU4Y2ExYTczZDYwZTJlYmJkZGNjZmQzMWM2ZWUyMDA0IGxlZ2FjeS10cnVuaworMTAwOTAgNDZmMmM0ZmM5ZTM4MWFiYTI2OTliMmE4ODhhYWM2YjMxYjJlNDdiOSBsZWdhY3ktdHJ1bmsKKzEwMDkxIDE5MmVhOTg4NGViNjdkZmNhNjU0YjA4NzBlMDdlODI3OThhZDA0ODIgbGVnYWN5LXRydW5rCisxMDA5MiBmMzViMjllYjUyZDE5N2U5YjZlNjk3NTFhYmU1YWYwNWM4MGI3NWFmIGxlZ2FjeS10cnVuaworMTAwOTMgZGVjNjVmY2VhMjFlYjkxZTY0MGY4NjJjNmYxNjNmNTlkZDc0YmE4MyBsZWdhY3ktdHJ1bmsKKzEwMDk0IDBlMWU0YjRhMDgyMTAyOWY1OTM1NDM3YjdlNzFkNmQ2MWViYTc1NDUgbGVnYWN5LXRydW5rCisxMDA5NSAwNjhhNjk0MmZlMWExMmVhNTRjOWY2ZDQ5ODQyZjQ1Y2VmYWI5YWQ4IGxlZ2FjeS10cnVuaworMTAwOTYgYTNhNmVjMjU5OTg2MDUzYTY1YzhmYmY2YzhlOTg4N2M0MTQ4M2EzZSBsZWdhY3ktdHJ1bmsKKzEwMDk3IDI5M2IwY2IzNDcwNDA0YzI5YTI3ZTQwMGM1YmI4MmZmYjY3NWJlNjkgbGVnYWN5LXRydW5rCisxMDA5OCBlY2U2MDRlZDYyMjgxODNhOGM5MWNjOTQxZDMyMDYxNjY4MzAxYjkwIGxlZ2FjeS10cnVuaworMTAwOTkgOWNmNmY5NDA5NTk2NTA5MGE3NTc1MGE2Y2IzMmRmYzYwNmM1YjVlZiBsZWdhY3ktdHJ1bmsKKzEwMTAwIDBhMjBjY2UxNzM3MTQ5OGQ0NzNiNDRjMGYwMzNmYTBlY2E0NGUzMTkgbGVnYWN5LXRydW5rCisxMDEwMSBjNTRmMWNjZGU2YTlkZWI2Mjk4ODczYmI2ZjQ4MGQzYTNjODdhYzdkIGxlZ2FjeS10cnVuaworMTAxMDIgYTc4NzQyOWU4NDBhZWIwYmE2Y2FjYzlhNWE4MDdjZDRmZTRkOGU3MCBsZWdhY3ktdHJ1bmsKKzEwMTAzIDBjZTY1OTA0N2JiZjMyMjdjYjJhMWFhNDgwZWMzNmZhYmY5MjNmOTYgbGVnYWN5LXRydW5rCisxMDEwNCA1YWE3MDM3YTFlM2ZiNTBkOTMyMjRkNmJlMDIxYzNiZGJhY2YyN2Q2IGxlZ2FjeS10cnVuaworMTAxMDUgYTBjN2FhMDUyMmRlMTBkOWQ3YmMwMjNjZjNhZDhkOTU0NDI1NThjZCBsZWdhY3ktdHJ1bmsKKzEwMTA2IDE2NTQ1NjI4MjQxMjBkY2Y5OWI4ZjgyNmIxNGZmZjBmNzdiNDAyNGMgbGVnYWN5LXRydW5rCisxMDEwNyA3OTYwZGEwNTQ5YzQ3NDNlMjk2NGI5OTZkOGM2YzY4MmIyYjA2ODY1IGxlZ2FjeS10cnVuaworMTAxMDggZGIxZTUxNGYxNjI5NzMwMmQ0NThjOWRhODRkNWYyNDI0OTFjZjg1YyBsZWdhY3ktdHJ1bmsKKzEwMTA5IDQyMmJiZTg4NWNiZjcxYTYxMmZjZmVjZTBhNWRiZjgzN2IwZWI0YzIgbGVnYWN5LXRydW5rCisxMDExMCBkMjJjZjY2NmZhMmM4OGM1MDg3YTJkYzgyY2FiMDI0YmM3ZjRiYzVlIGxlZ2FjeS10cnVuaworMTAxMTEgNTUzNDVkNmQyYzE0MWMwMmUyMGUyYTIzZmM1ZjYxOTM3ZGRkYzY0ZSBsZWdhY3ktdHJ1bmsKKzEwMTEyIDNkMTU5MGI1ZTNkZGZkZWUyYjI3ODI3ZjZiNGRmOTNiMmJkZGJiYTUgbGVnYWN5LXRydW5rCisxMDExMyBiYmRkMjhkMzZmNDI5NzdmYjZmNDk3MmIyNDUxNDY5MDIzZGE4ZTNkIGxlZ2FjeS10cnVuaworMTAxMTQgNTQ3MmFiNjEwZmU5ZTQ5OTZmNWIxNjY5ZWZlMGQyOTIxOWY2NThlOCBsZWdhY3ktdHJ1bmsKKzEwMTE1IGMxMTI0NDNjYWJlMTE2ZTIyNTFlMDBmMzk4NDhhOWNlNGQ3ZWY0NGMgbGVnYWN5LXRydW5rCisxMDExNiAxYzBmNThiNzYwODFhODcwMjcwOWY5NDAxZGRjYTMyM2Q1ZDZiNDRiIGxlZ2FjeS10cnVuaworMTAxMTcgYzYzODdlMjQyYjc4MGFmYzY4OGMwNmNmN2NkOTM2MDM0MzkyYzU0OSBsZWdhY3ktdHJ1bmsKKzEwMTE4IDA5NTAxMjcxODVlYWI2NGQ2OWI4MGUwOGEwZjM0ZGIyZmViM2U2NGEgbGVnYWN5LXRydW5rCisxMDExOSAyYmJlZmVjMTY1NDIwNGJhNWFjYzdhOTk4YmI4ODVhOWNmNDIwZDYwIGxlZ2FjeS10cnVuaworMTAxMjAgZjc3OTE2MTdjMmIyNWQ5NmQ3ZWJkNTQ0ZTMzYWY0OGMxODJkMGVmZSBsZWdhY3ktdHJ1bmsKKzEwMTIxIGI5NWU1MjNkY2U2Y2NlMTBiMTg2NzIwOTVhMzdiY2JmOTc1NDZlMDggbGVnYWN5LXRydW5rCisxMDEyMiBkOGQ4ODQ0N2YzYzEzMTRjNzIyNmE2NGY4YWMyMzRmM2M2MzQ3YmM3IGxlZ2FjeS10cnVuaworMTAxMjMgN2FkNTIyYTRjNzUzYTEwNGExZGM0ZjcxNTlkNTFiNWE1ZjY1NzVhNiBsZWdhY3ktdHJ1bmsKKzEwMTI0IGQ5MmYxMGM0NTFhMTM4ZGE0MzQ1MWFmM2U1NTVjMDdhNDhhYTg0ZjUgbGVnYWN5LXRydW5rCisxMDEyNSBkZWU1NjAyNWQzOTBiNDFmM2QwZmI1MGNkODgyOTFiODAxYzI2MjRhIGxlZ2FjeS10cnVuaworMTAxMjYgMDJjNjY0MjhmMDQ4NDFkZjcyMzc2NzVhZDUyZGQxNmMwOGU1NDU2OCBsZWdhY3ktdHJ1bmsKKzEwMTI3IDkzMmRkNmI5MGUxM2E3OTIzMGZiNThhZjUwNWE4NGE5NTI3OGY4MmMgbGVnYWN5LXRydW5rCisxMDEyOCBlYTY4NjE5ZmI1NmQ0ZDU0MWQzYTZhNDc4ZTBkZDI1MDhiNGY4NjQ2IGxlZ2FjeS10cnVuaworMTAxMjkgOTU1MmQ0YjNkOWI3ODE0MjVlMzhiMmQ4MGRjMmQ0NGQyNzk2OWU1NCBsZWdhY3ktdHJ1bmsKKzEwMTMwIGQ2NGRiZDFjZDMyZWI0Mzc5MTgxNjA1NzI0MDZkZTA1YTM1NTliNjcgbGVnYWN5LXRydW5rCisxMDEzMSBiODY3NzFiMGQ3ZjkxODdjYjEyMWFhOTU1NTlkZjhkZTIxYmY2YzI2IGxlZ2FjeS10cnVuaworMTAxMzMgNzVkMDA0OGM4NjQzZGI1ZTRiNmUyNTI2MWZhMDU0YzRhZTk4ODRlZCBsZWdhY3ktdHJ1bmsKKzEwMTM0IDczZWViZGFjZmI3NzYyM2Y4MzA1Y2Q1ODA0Y2RmYTE1YmRiNmZhYzUgbGVnYWN5LXRydW5rCisxMDEzNSA2YjNkM2EyODU4MWY0YzBmZGQ0ZWVjYTFhZGM3ODVlNzkwODhjNDA0IGxlZ2FjeS10cnVuaworMTAxMzYgZjAxN2M0ODU4YmE4YzM2YWJmODE5ZTdiNzE0ZjRjOGVhMDA4ZjdkNCBsZWdhY3ktdHJ1bmsKKzEwMTM3IGY3NWZmOGQ0NDM0ZDg3YjUzNTNiNmVlYjRjNmYwYjBhYjQ0ODM2NGYgbGVnYWN5LXRydW5rCisxMDEzOCA4NjkzNzNmYTBiZjhiODY0ZDRjYjc5ZGY3ZDJhMzcxOTI1NmE1MGY1IGxlZ2FjeS10cnVuaworMTAxMzkgZjAzZTY2NWQ5ZjcyODg5ZGJkY2ZhNjJjNDA4MmYwNzRlMjU1ZDQ3YyBsZWdhY3ktdHJ1bmsKKzEwMTQwIDQ3ZGRlYjA3OTU3NTQ2YjMyMDczMjA2ZGZjMjc2NjM1ZTA0NWY0MjkgbGVnYWN5LXRydW5rCisxMDE0MSBlYTJkMzIxN2QwYzcyMTM4MWUwOTFiNjAzNDA2OThjMzZkZjlmNDAwIGxlZ2FjeS10cnVuaworMTAxNDIgYWNkMzkzYTkzZWQwNDRhNTI1NThlMTFhMjU2NzNiNmE3OGQyMGU4ZCBsZWdhY3ktdHJ1bmsKKzEwMTQzIGYyODU1ZDJhY2JkMzk5NDRmMzkyNGJmMjYyMzljODQ4MzU1NTM2YmIgbGVnYWN5LXRydW5rCisxMDE0NCBhYmFlNjhhZjMzNGY2NTJhMzI0YTRmOWY5NDRiOGZkYTQ4ODdiMWE0IGxlZ2FjeS10cnVuaworMTAxNDUgYzkzOTRhZWFhYzZhZGMyN2NmZDJiMzY1N2FhMWI4MjM5Mzg4YTY4YiBsZWdhY3ktdHJ1bmsKKzEwMTQ2IDM1ZjI5YjdkYWNmNTE4YzUyYWI0YjY3NTg2ZjNjN2MwMjZmOTZjYjMgbGVnYWN5LXRydW5rCisxMDE0NyBhZDM0NjcxY2Q0Yzk2MjllNDZmZGYwMjQ2MWEyYWM2YTM0ZjEyNWUzIGxlZ2FjeS10cnVuaworMTAxNDggMWY4YzhlMGJiNWVmNjAwZDU3YmUzNjdiYTYyNTkzMzY5OWMwNjliMyBsZWdhY3ktdHJ1bmsKKzEwMTQ5IDhlNmE1ODAxOTg4NzNlNjBhMGIwMzBkZWVjMTBiNDIxMDZlODgyYzYgbGVnYWN5LXRydW5rCisxMDE1MCAwY2YyZmZhZjRiZDdjNTBlZGJiNDU0ZTI0ODgzMjkwMDkxNjkzZjRlIGxlZ2FjeS10cnVuaworMTAxNTEgMWZiODY4ZjI1NDU5ZmUzNmUyMzA0ODA2NDhiYjliYjc3OGRiNWFiMSBsZWdhY3ktdHJ1bmsKKzEwMTUyIDUyOGUyYjk0ZThiOTg3M2E3NjNkMjM3ZGI4Nzk2N2M0ZDZlZTk1ZGMgbGVnYWN5LXRydW5rCisxMDE1MyAzNTdiNzdlMzQ1ZjM2NTYwZjJlYjY4NWU4NGYxOWM1MTdiNGVjODA2IGxlZ2FjeS10cnVuaworMTAxNTUgNzEyMmZmNGM0YWJlNjljYTJmYTMyZTMwYTQ1MWE3OTliYTU5YTc5ZiBsZWdhY3ktdHJ1bmsKKzEwMTU2IGJkY2Y3MDhhZTRkYWU4Y2M5ODdhYjUwNjMyZmUyMTc5MDI5MjI2NTUgbGVnYWN5LXRydW5rCisxMDE1NyA3MmYyYWJhY2YxNTFlNDE4NDhlZTkxOGEyNTM1OWFiMjQyYzYyZTE1IGxlZ2FjeS10cnVuaworMTAxNTggNDAzMDA1OWNmOTdjMTM0MTBhMzBhNWZjNzVlNjM4OGJjMzNiMGJkNSBsZWdhY3ktdHJ1bmsKKzEwMTU5IGE2MTAxOGEyYTUwMmE0MmZkOTRhMzk0MzY3MzA0MGM3OTc5MmU3MDYgbGVnYWN5LXRydW5rCisxMDE2MCAyYzljMjQ4NTgxYTIwMjNkZWMyYTE0NWNiYTg4MGIyMjc1ZWYzZGRhIGxlZ2FjeS10cnVuaworMTAxNjEgZTFlNzY3NjZkOGNhZTE1NjAyMDgwMjM2MGVlZDU2MTVmOGQ4YTUzMiBsZWdhY3ktdHJ1bmsKKzEwMTYyIDUzMzRlZWYxOTc0YzA1NWNlOTFmZDUwOTBhZDAyMzY1YjNjMzY4YzcgbGVnYWN5LXRydW5rCisxMDE2MyA2YmY3NDI2NGI5YzBjMzE1NDVmNzE3NzU1ZTI3N2E1M2EyMDc2Yjk0IGxlZ2FjeS10cnVuaworMTAxNjQgZjBkMzNmZGIzOTIxOTNmN2ViYWU3YTgzMThmMTk5ZTVkNzQyNTJhNiBsZWdhY3ktdHJ1bmsKKzEwMTY1IGFmZGNiZWYxN2VjMGZkMDY5NDM1MjkxNDY1NzE4NWY0MmQ2NzlmNWMgbGVnYWN5LXRydW5rCisxMDE2NiA0ODM5NzAwNjI5MTUxMTVhYWMwNDhmZTczZGQ0M2YxNzc5YWRkYzU0IGxlZ2FjeS10cnVuaworMTAxNjcgYzJlMWRiMWUxYmI4ZmJkMWNhYmUxNDgzNWY2Njk2ZTk2ODkwMjg0YyBsZWdhY3ktdHJ1bmsKKzEwMTY4IDA0ZDczOTc5NzBjMjA2N2E3ZmU0ZTViNTM3ODYwN2QzNWQ3YTc3N2QgbGVnYWN5LXRydW5rCisxMDE2OSA1NTRmMmI4NzlmYmIxMWNiMjBmMmYwOTdjYWQzYzNjODEzMGU2ZDA1IGxlZ2FjeS10cnVuaworMTAxNzAgZjkyNDcyN2NkMDBiNmFkOTlhNmFmNWU1OWYwODJkNjE3MTU5ZmMwMSBsZWdhY3ktdHJ1bmsKKzEwMTcxIDliZjgxZDkzYjk5NWI0YzE1YTU2ZWQ5MmQ2ZDI3OWU4Y2YyYWQyMjEgbGVnYWN5LXRydW5rCisxMDE3MiA1N2E0MjE4Mzg5N2RjYTg1MjUyMjdlODBhMjNlOGZjMTkxYWU5ZGQ1IGxlZ2FjeS10cnVuaworMTAxNzMgZmZjZGNmOWZmMGViYzY2YWE3ODIxMTM0ZDVhZjZlMDA2ZTEwZTA5OCBsZWdhY3ktdHJ1bmsKKzEwMTc0IDVlM2M5ZDUzMGJjMWQzYmI0MDJkNGY2MmU3MjAxZWU3ZTA5MGE0MWYgbGVnYWN5LXRydW5rCisxMDE3NSAxY2VkMDM2NzE1NzQ5ZWQ4ODA3Y2M0N2QzNWE4NTQ4ODkzMGVjM2Q0IGxlZ2FjeS10cnVuaworMTAxNzYgZDIzYmZlMDYxNzVlZWU3YTlkNjNjYjY2M2M2M2E4NDdkN2I2MmMzYSBsZWdhY3ktdHJ1bmsKKzEwMTc3IGU0MGYyYTZlNTI2ZGQyZGMwZDM3NWM0OTZiMGU5OWE4NDNiNmFjNzYgbGVnYWN5LXRydW5rCisxMDE3OCBhYmU3ZjFmNDc2OGIwMWMwZmVlYjQ5MDlhNTJjYjRkYzlkZGZhNWNhIGxlZ2FjeS10cnVuaworMTAxNzkgOTZiN2MxMzIzZDMwYWVjOWM1OTM0YmJjN2ZmOWQ4ZjJlNmZlOGY4ZiBsZWdhY3ktdHJ1bmsKKzEwMTgwIGFjODc3OTY4NTYyY2NkZDFjYjdjNjk5MTg0YWQ1NzVjNTNhNTdjMzYgbGVnYWN5LXRydW5rCisxMDE4MSAyY2M0YmMwY2QwMzY3NThlZDAwNWYyZGRkNzM5N2M0YmQzNDdkYjUyIGxlZ2FjeS10cnVuaworMTAxODIgNGI4MjllNmMwZGM1NTVhNTAwYWM2OTMwZWEyZDAzNmUzOTY3MTI5NyBsZWdhY3ktdHJ1bmsKKzEwMTgzIDJjZDE0NmUyYTNhMGRiMjA2NjM1YjExOTk1MjVkYjFkN2JhMjMwOWYgbGVnYWN5LXRydW5rCisxMDE4NCBjOWQ1NDY4MDllNGY4ZTM3MGE1MmJjZmUwNjg1MTZkMjUxNTA3ODIzIGxlZ2FjeS10cnVuaworMTAxODUgYTAwM2UxNGZlZDg3NzIzOTMyNTQ5ZjFjMmMzYjRhZWMwZTFkMWU5NyBsZWdhY3ktdHJ1bmsKKzEwMTg2IDU1ZTNmODkxZGJiNWQ3ZGYyY2Y5MmMyOWFiY2I3ZmQ2NWIwYWE1NjQgbGVnYWN5LXRydW5rCisxMDE4NyAyMzYxNDY1MGUyOWIxZGVlZWNjMmY3ZTE4OWI2ZThlNDg0Mjg1ZjZlIGxlZ2FjeS10cnVuaworMTAxODggNDk5MWFhYWIxN2JkZWY1NTEyZWJlM2YxNGJlZGMwNDYyYmY5ZDRkZCBsZWdhY3ktdHJ1bmsKKzEwMTg5IGFiYjgwMmMyMTZhZDI0MzY2NTFhYzZhMmNhMzEyMzU0MTZlODdiMzQgbGVnYWN5LXRydW5rCisxMDE5MCA3MDZlNGI5NTQ4NjI0OGE3Zjk1MTVlN2FiZDFiYzA3NGI2YTM3MTFjIGxlZ2FjeS10cnVuaworMTAxOTEgNTZkY2ZjMjc3MTBhYjZlZjNiM2U2Mjk5ZTU1ZmQ5OTk2ODhlMWFlNiBsZWdhY3ktdHJ1bmsKKzEwMTkyIDBjYmM5ZGY4ODJiNmJkZGY0ZGE0NTE1ZTlhNGU3OWZhMjhjOTRkNDEgbGVnYWN5LXRydW5rCisxMDE5MyAyNGZmNjlhZDRkYTIyMzlmZTJkZjZmYjQ5ZmJmODVmYmU5NzljMzU3IGxlZ2FjeS10cnVuaworMTAxOTQgOGRhNzFjNTE1NzE2YWRjZDYzY2E3NDhkYjE0ODRkOTU1ODA4MzcxOCBsZWdhY3ktdHJ1bmsKKzEwMTk1IDM4OGIwOTdiZGRiOTU1MWFjNzY4YzFiOTc2YjBlZDkwN2E1MjQ0YmIgbGVnYWN5LXRydW5rCisxMDE5NiA5MjcxMzQwYzdlMGNjOTg5NDA5YjhlNzk0MzFlZjYyMDAwMzQwMWEzIGxlZ2FjeS10cnVuaworMTAxOTcgOTk1YWVhMDkyOTE3MzNhNjU4MmQzODdjOWFhZDI3Nzc0MzgyMmViNSBsZWdhY3ktdHJ1bmsKKzEwMTk4IGY4MzQyNWNjN2U5Njc1ZTE4NDA4MTU1M2FkM2JkMGI1YzI2MGUwYWMgbGVnYWN5LXRydW5rCisxMDE5OSBkMjFkYzU5Yzg2ZDc0ZDBiMDFiNDBhYmQ5NzY3M2U1MDdmODMwMmM5IGxlZ2FjeS10cnVuaworMTAyMDAgNWM3YmNlMDUzZDAzODg2ZWZkOTJmZTU1ZTc2NWVkYmFkYTE0N2Q1ZiBsZWdhY3ktdHJ1bmsKKzEwMjAxIGYwOTNmY2ZkNTYyNWUxZGI5NDhjNDI1ZTZjYjI3NmJjNTgxMDFlNjUgbGVnYWN5LXRydW5rCisxMDIwMiA2NzMxOGQzZmE2ZGNkNjRhMzllMzBkZTA5ZmViZDUxZTQ5ZTAzMTFkIGxlZ2FjeS10cnVuaworMTAyMDMgZDEwM2MwMTgwYjJkZTA2ZTU1ZTQ0ZDEwNzU5N2NjNDE1NzZkY2E3ZCBsZWdhY3ktdHJ1bmsKKzEwMjA0IDFiYjk0M2NkMmMyM2RjN2QzM2ZhNzYwNjU0MjRmYTIwNjk2ZTFjMWYgbGVnYWN5LXRydW5rCisxMDIwNSA2NjMzNjdjYTEzZjgxNjQwMWZjZmY4YTJiYjJmNDAyNWM5ZmI5YThlIGxlZ2FjeS10cnVuaworMTAyMDYgMDk1NjM2YjhmYWI3ZTgxMWU3NzI3YzJkZWY5MDA3MWZiZmVkMjM3MSBsZWdhY3ktdHJ1bmsKKzEwMjA3IGNiMjU2Nzk4MzQ3ZWI5NWM2MTkyYzZjZGE4MTYxYjE3MDc0MGYwMmIgbGVnYWN5LXRydW5rCisxMDIwOCA1MmRhYTcwYmIwODQ5MzQ1MjA1MzdiNWY5YWUyMmQxYTRiMTM1M2MzIGxlZ2FjeS10cnVuaworMTAyMDkgODk1ODJmYTE4MjRmYmE5OTU1N2IwMmU5YzdkZjAxNjBhMTk0NDAyYiBsZWdhY3ktdHJ1bmsKKzEwMjEwIGMxMDlkNWNhZDEwMDc1NmY1MDU5NTk2MTFjMGI0ZjQ0ZTgzYzUxMmEgbGVnYWN5LXRydW5rCisxMDIxMSA5YzM3ZWQ4ODY4YjllZmJiYzk2OGY5ZWE1NGY4ZDJlMjMyZjIwNDc0IGxlZ2FjeS10cnVuaworMTAyMTIgYjhlMWUxMDU1NjQ5ZDYzNzc4NTZmZDYyMzY0YTlhMGNiNWE5MTUwYyBsZWdhY3ktdHJ1bmsKKzEwMjEzIDMwZTMzMTQ5NjkzMGI1YmFhOTUzYmNmYTJhMTAxNjI1NGZmNThkNGIgbGVnYWN5LXRydW5rCisxMDIxNCA3MjViMzcwZTg1M2YwZTFmMGNmYWYzNTUxMDcwN2ExYTk2MzQ0NDJhIGxlZ2FjeS10cnVuaworMTAyMTUgN2E5YWZhYmE4OGQ4NDJjYzM5ZTZiOTBhN2MwNjY4ODM4NWYwMTYyNSBsZWdhY3ktdHJ1bmsKKzEwMjE2IGVkMzIwMDAxYzI5YTg3NzFlNzA1ZjI0MjA5YTA2ZGU1ODM2OTllMTAgbGVnYWN5LXRydW5rCisxMDIxNyA1ZDdlNGQyMGM4OWVkZDk5OGI4MGIwNTBjN2QzMTFkMzUwNzI5Y2ZiIGxlZ2FjeS10cnVuaworMTAyMTggYmJmZDk0NmIwYjM4YzhmMTZlNWU4N2MzZTA2OWE5NTQwOTUyNzRkZSBsZWdhY3ktdHJ1bmsKKzEwMjE5IDEwOTFiYTJiYWVhNGEyOWNhNzk3YjMzMTI2NjRiNzhlMmQzNGNlZTQgbGVnYWN5LXRydW5rCisxMDIyMCA0MjNiZTdjZDA0Nzk1MjJiMGMzYzVjYjVmZWRmM2NkMWQzNjc5ODkzIGxlZ2FjeS10cnVuaworMTAyMjEgZTI5MDI5MDI5NDE0YjJhOWM1ZTY4MGM1NWM2NjViMjc4NWY2NWQxMiBsZWdhY3ktdHJ1bmsKKzEwMjIyIDViZjY2YWI0ZGZiNmY2OWM1MjEzYjE1M2M3YjYyOTZiNmZmNjAyMTIgbGVnYWN5LXRydW5rCisxMDIyMyAyNjlhMzI3ZDYzMDVmMjdkNTBmZjQ3MWQyODAzM2VhZjViODI3Mzg2IGxlZ2FjeS10cnVuaworMTAyMjUgYzQ5ODQ1MWM1ZjU2NDE2M2MyNDE4M2U3ZTc5OTY4ZWQwYjFhOGY2YyBsZWdhY3ktdHJ1bmsKKzEwMjI2IDQ1YTNkYWJmMGZhODNjOTAyZWYxM2M2MDQ5OTZjYWUxYTI0ZmViMWUgbGVnYWN5LXRydW5rCisxMDIyNyA3OTJiZmQ0NzNmNTE2ODhkZDI0ZmI5MzQyZGYwMjAzMGJkY2QzODNlIGxlZ2FjeS10cnVuaworMTAyMjggYWVkZDJkMGRjYjMxNTQzYmM1M2U4MmM2Y2MwNmZjZjYwMmNlOTY5NCBsZWdhY3ktdHJ1bmsKKzEwMjI5IGE3M2VmNzIwZmI1NjYzNmY3MzYwYzg3ZWI0Y2NmNjQ0OGI0N2FjOGUgbGVnYWN5LXRydW5rCisxMDIzMCAzYzA4ZmI5ZTEzNGY4MmNjODg4OGViZjNhZTlkNDRlYmU5Yjc2ZmIwIGxlZ2FjeS10cnVuaworMTAyMzEgNjk3MmU1MGYzNDgzZTUxMzUyODZjMDNkM2M2OTA0ODJjMzY2ZDAzOSBsZWdhY3ktdHJ1bmsKKzEwMjMyIDBjODM3ZGFiNWI5ZWFjNWRlNDg1ODE3MjA3ZDFlMDZhYTczMWJkZjUgbGVnYWN5LXRydW5rCisxMDIzMyBiNGIwZTRlNzU5YzU4MWYwODE1ZGVlZDVjNjBmNDljNzRiMzhlNzliIGxlZ2FjeS10cnVuaworMTAyMzQgOGVmMDY3NTU5ZDVhMzgyZjZiNzAwZWM1MGE3MDY0YTZmYTBiNzc5NyBsZWdhY3ktdHJ1bmsKKzEwMjM1IDAzM2RiZTkwOTIxODE1NDFkYTVhMWE1ODdjYWRkM2I0YmY0Yjk3OTMgbGVnYWN5LXRydW5rCisxMDIzNiBmYjRiNGQwNjljYzdjZGI0YjY2NTMyZWI0OWQ3N2FkMDZkMjdiZGZmIGxlZ2FjeS10cnVuaworMTAyMzcgYTQxOTMzNGYzYjM5N2I2NGVhMGJiZjg0ODI4MzYxMGQ0MTBmY2M2NiBsZWdhY3ktdHJ1bmsKKzEwMjM4IDc4YzI3ZTMxYWM3Yzk4MDZlYzMwY2M0ODQ4YjNmZjdkNDIxZjFhOTQgbGVnYWN5LXRydW5rCisxMDIzOSBjMzEyNTdiOTI0NDdlY2U1ZDc0NzY4ZGE4YmEyMmUzYWM4NmRkZjUwIGxlZ2FjeS10cnVuaworMTAyNDAgYTVlMmJlYmUxNzlhZTc2ZmI2YTJiNzEyNzNkZTk5Mjc2NzhkMjYzNyBsZWdhY3ktdHJ1bmsKKzEwMjQxIDZiZmE2NTBmMzExZGY0NmU2NzIyOTUxZmY1NmJhY2EzYjNiODI2OTIgbGVnYWN5LXRydW5rCisxMDI0MiA0NThhMzNhYmIzOWMxYWVhM2FkNDk2MDAxMjBkOTQ4MjQxZWQ1N2M2IGxlZ2FjeS10cnVuaworMTAyNDMgYWNmM2I5NTBjYjQzN2QxYjdlZWRkMTE2MThmZTNiNDM2ODIwN2ZlMSBsZWdhY3ktdHJ1bmsKKzEwMjQ0IDljMDJlMGEyNjUxMWE0ZmYyYzg1M2IwNzI0ZjBmOGI5NWMxMjA1ZTcgbGVnYWN5LXRydW5rCisxMDI0NSA5ZDBkYzExNzc1YTRlNDdhZTU0Yjk3NDZmNTcyMmU0OWU3OTdlMDZlIGxlZ2FjeS10cnVuaworMTAyNDYgOGI3ODY1M2JhZjFmZDEyMmI5ZTc5YmQ5OGJhOGUzNzRiMTk2MjhhNiBsZWdhY3ktdHJ1bmsKKzEwMjQ3IDU4N2QwMTc4ZjhkMzY2ZjAwOWMzY2YyZTRlNmY0ZDQ2YzkzN2Y3NzIgbGVnYWN5LXRydW5rCisxMDI0OCA3ZmQ3OWRkZmJiOGI4ODRlZjk2NGNhNWEwNjcwYzA2ZGJkNmNjZGViIGxlZ2FjeS10cnVuaworMTAyNDkgOGYxNzc5MzNjNDFmYWIzYzMxOWY1N2I4ZmE0NzMwMmU1NTBjN2Y0OCBsZWdhY3ktdHJ1bmsKKzEwMjUwIDQ2OWY2NjkxOGRkNmNiYmU1MmZmNmRlNDVkMjg4NjE5MmE1OGQ3M2YgbGVnYWN5LXRydW5rCisxMDI1MSA5ZjQ2ZTcwZWJmYmIyZDM2NWE2NjZjY2Q3OGI1MzhjYzRhZWIxOGYzIGxlZ2FjeS10cnVuaworMTAyNTIgNzA3ZDA2MmNhZTdiZmYxZWQ3ODU4NTE5YzJiNmJjNjU1Y2QzMGUxYyBsZWdhY3ktdHJ1bmsKKzEwMjUzIDkxNzI5MzFmZDgwYTQ4YWM4NzEwYWRiMThjMDI3M2Y2MGY3MzRhN2MgbGVnYWN5LXRydW5rCisxMDI1NCA4YTU2NzQxMmIyMWJiYWVmNzNhYmZlNjM1NDQxZjVkNDZhMDk4ZWQ3IGxlZ2FjeS10cnVuaworMTAyNTUgNWZiNjlmZjI0Y2RkYzEzY2I3NGUyZTdmYmFiYTViZDZhODJkMjQxNCBsZWdhY3ktdHJ1bmsKKzEwMjU2IDU3ZjExYWI0ZTI5MjFiMTQyMDIyMDNjNDk3N2M0YmUwMWU2ZTNlZTEgbGVnYWN5LXRydW5rCisxMDI1NyBkYjk0YjE1YmQ2NDAwYmU1MzBmNmMzZjk2NzIwMDliY2U3YmQxNTRmIGxlZ2FjeS10cnVuaworMTAyNTggNWUyMTU4OTRjNTU1YTI3Mjg5YTBhZGMwOTJmNzkxMDM1NGVhYzg4MSBsZWdhY3ktdHJ1bmsKKzEwMjU5IGIxN2QyMDBlZGY2MjdiZGY1MWQ1M2E4NWU2YTllZDViOTdmNjgyMzEgbGVnYWN5LXRydW5rCisxMDI2MCAxYzQyMDY5OWQ1OGEzYmEyZTIyYzY2NTdkNDNkMWY0OTlkZWQ5N2MxIGxlZ2FjeS10cnVuaworMTAyNjEgM2UxMTk4ZDIwZjljZTEzMzc1N2M0NDMxZWY1OGIyN2RmZThjYTc4OCBsZWdhY3ktdHJ1bmsKKzEwMjYyIDM2YjNiNjg3NmE1ODBlYjBkZmNmNDJjOThkMzQxMzk4ZjFhODVjMjUgbGVnYWN5LXRydW5rCisxMDI2MyA3ZmMzMmE2NjI1NWE3N2FjZjUwZDFlYTRlZDM1ODYyY2QxNTMwNTMyIGxlZ2FjeS10cnVuaworMTAyNjQgY2ZlNmY1OGRkMGQ4ZWY5MjBlMWFkMThlOGNhYjliNDFiNmVkOWFjMCBsZWdhY3ktdHJ1bmsKKzEwMjY1IDgwYjI2NzQ4MzgyOGU1ODIwM2QyMTNhMmZiOGUwYmU3NTk5ZjgwMTIgbGVnYWN5LXRydW5rCisxMDI2NiAwNTY5MmM2NjE0MzRhMTVkOTVjODE5NDQyZTkyZjk4NzA1Yjg0ZjVlIGxlZ2FjeS10cnVuaworMTAyNjcgNmFkZjkxN2VlNzczMGQ3MzlkMDYxNjBmZjZlZGJlYmVhNjQxYzAwYSBsZWdhY3ktdHJ1bmsKKzEwMjY4IDQ0ZmM3ZmZkZmM3N2ZiZWE3YzMzZTc4YWQ0OGIyNjg5OGZhZGMxODcgbGVnYWN5LXRydW5rCisxMDI2OSBiMWMwOTE1MDE0MTEwZmJmYzZhZDlmZjhjNjIzNmFiODA5OTgwYmFlIGxlZ2FjeS10cnVuaworMTAyNzAgODhjNTM5MjFiZjg4MDllNjZjNTgwN2RjMjE4YTJkY2MxN2NkZWQyMSBsZWdhY3ktdHJ1bmsKKzEwMjcxIGI5ZTMxMTIwYTBjNGVhZTllNWM2ZTY1NTE2NDEwMmUzMzlmNmY2MGIgbGVnYWN5LXRydW5rCisxMDI3MiAyM2QwNDkwMDI1Njg5NTE3YWIxNmQ5NjhiMjljNzhiNmU0Nzg2MmI4IGxlZ2FjeS10cnVuaworMTAyNzMgOGQ0MTQ4MjEzY2MwMmE2ZGMxOTM1ZjljOGVlOGI1OGYxMjRkMGVjMCBsZWdhY3ktdHJ1bmsKKzEwMjc0IDA3NDUzMTQwYTA5NTUwMDg4ZDFkZGI3YTc1N2YxZGNlODg0ZDBkZmEgbGVnYWN5LXRydW5rCisxMDI3NSAzNzVhOTAxMDY1YzFiODc3YTU4Nzk3YWYyYTVkMzY4ZDMwMDVlMDQxIGxlZ2FjeS10cnVuaworMTAyNzYgNDMzYzM4MWMzNzAwZTNiMDE2NTk4NzA2ZjUyYzljNTZiZTRkNzNiYiBsZWdhY3ktdHJ1bmsKKzEwMjc3IDY4ZTJiMGRiYmVjOGViNjIwYTJiOWIwZGZlZDQ0MWM0M2QyMDA3ZWYgbGVnYWN5LXRydW5rCisxMDI3OCAwNjhhNzc2MmUyODYxMzE2Y2JlZDY1OTU2ZTM2ZGZlOWQyMGI3ZDY4IGxlZ2FjeS10cnVuaworMTAyNzkgNDlmMTFlYjRlYjlhMzMyMjMzYWFmNzljMDM3ZjRhNzUxOTdlNTg1MCBsZWdhY3ktdHJ1bmsKKzEwMjgwIGNmNzIzOTkxZDc1ZmFkMTZhYjJmM2U4ZDEwOWVjMzUyMDE0ZjNjYzQgbGVnYWN5LXRydW5rCisxMDI4MSBjZjQyMDFlZjczYWEyYzZhYjRmNDllYmFhNzI5OTlhYzUxNGUxMWI3IGxlZ2FjeS10cnVuaworMTAyODIgMDQ3OTk2NjY2YzgxODk4YjAzNDE4OGEyYzMwYzFiNGZiNWNjZmE0YSBsZWdhY3ktdHJ1bmsKKzEwMjgzIGRmZmUxZTQ3MGU2Y2YzY2YxMTcyNDhiNzFlZTM0YWNmYzU3NzBjMjQgbGVnYWN5LXRydW5rCisxMDI4NCAwNjYwZjE3YWRlNjAzY2EyYTRmZmQxOGIzNjY2ZTE1Y2RjZjJkZjQ4IGxlZ2FjeS10cnVuaworMTAyODUgNmQwNGU4YzgxN2ZiZWZhNjBhNWRlOWQxYzFlNTExMDE2ZDM1YTA3ZiBsZWdhY3ktdHJ1bmsKKzEwMjg2IDRjNmRjMDdmMWI2YTYwY2NiZmMwYzExZTgwY2QxNWNkYzQyMTgzMjYgbGVnYWN5LXRydW5rCisxMDI4NyA4MWY5ODE4ODAxMmU0MTlkMDgxOTY4NDkyY2NhYjUzNzRlYmRlNjNjIGxlZ2FjeS10cnVuaworMTAyODggNWQxNWY0ZmQ2ZDY5ZmVlZTYzMTQ2Yzc0MTE0YjBkY2M4YTM4OThhZiBsZWdhY3ktdHJ1bmsKKzEwMjg5IDcwY2NiYmNjMTBjY2FkNDE4OTE3ODE1ZGRjMmM4YjE0ZGNlMmNkOTYgbGVnYWN5LXRydW5rCisxMDI5MCBlNTgwYWZhMWM4MzM4MGIyNDQyZGU2ZmUwODVmMTI2Y2UwY2ZkYmI0IGxlZ2FjeS10cnVuaworMTAyOTEgOTk2N2JlMWY0MDJiMWEwNjEzNDlmZTMzODhhMzE4YWEyY2IyOTFjMCBsZWdhY3ktdHJ1bmsKKzEwMjkyIDQxMmU2YWIwM2M2ZmZhZDk5MDgzMTcxZWFmNmUzMDAwZDQxMmM1MGIgbGVnYWN5LXRydW5rCisxMDI5MyBjMDQ3MDg0NGM3YmM3YzZlNWI3MDgwZTk4M2Y0YzIzOTRlZTE2MGQyIGxlZ2FjeS10cnVuaworMTAyOTQgNjQzMmNiYWQ4MjhkYzljOGJmM2E0NTU0YjU1NWEwY2IyZTMzZjU0ZCBsZWdhY3ktdHJ1bmsKKzEwMjk1IGE3MjdhZTZiZmU1MGM1ODgwNTRkMDk2MWNiMWEzNmQwN2Q5MGI4MTQgbGVnYWN5LXRydW5rCisxMDI5NiBjYzQ5NDJmMGVjNGM5NGNiYzk3YTllMGE0YTk0MDk5MmU0ZmZhNDIzIGxlZ2FjeS10cnVuaworMTAyOTcgNTEzMjI1OGRhNzhlOGFmN2JlODkzMzU4NzkyMmEyYzUxNTAyNmZlYyBsZWdhY3ktdHJ1bmsKKzEwMjk4IDQ2MTczOGFhYTUzM2QyY2NjOGJlOWFkODVmYjVhODU0NThlMzJjYTYgbGVnYWN5LXRydW5rCisxMDI5OSBhMzViNTQxNGZkZDliYjZiOTc1MTMzNGQ5ZjA2YmJmMDFjNDU4MWI3IGxlZ2FjeS10cnVuaworMTAzMDAgZDdhYmFkNzBmNjgxMTRkNDIxYzY1MTQ0ZjQzMzdiMmQ3Zjk5ZWVjZSBsZWdhY3ktdHJ1bmsKKzEwMzAxIDIwOTBmOGY5ZDVkMmQ0OTYzNWM2MGQ3ZjA2OTZmMjNhZjVmNDYyNGUgbGVnYWN5LXRydW5rCisxMDMwMiBlZDg1NmZjY2Y2Mzk3ZmZlOTQ3Y2FjMDBmNjc1YjgzOWNlYTFhMzZiIGxlZ2FjeS10cnVuaworMTAzMDMgZDFiMjM1MDRiZDk5YzNiMTQzOTZjNWQ4ZDlkMzA4ZDlmMGRmMmQ0ZCBsZWdhY3ktdHJ1bmsKKzEwMzA0IDA1NzVkNWExNzIxODU2ZDIwMWFiNmEyNGE1OTkwOWQ3ZGRjZDk1N2EgbGVnYWN5LXRydW5rCisxMDMwNSBiODVhNjc1YjY1MDNlNTg1OTc5OWE4N2IwODcwNTA1ZDk0ZmEyODQ0IGxlZ2FjeS10cnVuaworMTAzMDYgMjlkYzVkMTkyOGJmZTFhMjE0YzA0ZjRiY2ZhOGFhNDEyNTYzOTVhMyBsZWdhY3ktdHJ1bmsKKzEwMzA3IGI3MWQxYmRkMTg3ZGVlNmM5NzNhZWNmNGZkN2ZkYmY1MjY2YTgxMmMgbGVnYWN5LXRydW5rCisxMDMwOCA5ODZhNzRjM2EyMmNhMGZhN2U0MzI0YzA3M2U1NDM1OTk5NmZkOTM0IGxlZ2FjeS10cnVuaworMTAzMDkgOGYwZTI5Y2U1OWVmNDE3OGU3Y2ExNTA4YmRiMjExOWJlY2ZlZTdjMCBsZWdhY3ktdHJ1bmsKKzEwMzEwIGUyZmIyNTc4NDUzMDQ5ZTA5NDc3MmFkNjYxM2FkZjE4ZjU3NjllNWEgbGVnYWN5LXRydW5rCisxMDMxMSAzNDI5OWUwOTZlMzUzOTBhMzQyZGM3OGQ4NmI5ZjQzNmE2NDhmNmE3IGxlZ2FjeS10cnVuaworMTAzMTIgMWY4ZjIwMDJiZmI5ZjA1YTUwYTU3YWVmNzllNDYyZmI5YjhmYTU2YyBsZWdhY3ktdHJ1bmsKKzEwMzEzIGQxNGI3MTIwYzU1MThkMWVkYmUzMzRjNzJlY2QzZjY0ZTVkMmQ3NmUgbGVnYWN5LXRydW5rCisxMDMxNCA2NDNlOTcyOGFhNDkyZTg0NmU1YTkxNjkyNTY4ZDM0MDZjOTdmZTk0IGxlZ2FjeS10cnVuaworMTAzMTUgMTQ3YzEwNjdjYTMzZDE0ZWE5YjU5NWE5Y2I3MzczNzZiNmQ5ZGM1MCBsZWdhY3ktdHJ1bmsKKzEwMzE2IGNhNzM1Yjg0YTkzOWE1YTM0ZDFlMDMyOTQ0MGRhNWM5MGJmOGJlMTUgbGVnYWN5LXRydW5rCisxMDMxNyA5OGY2ZWQxMzFiNzVjZWY0M2Y4NjcxODVkYjNkNDVhMzk2MWYxNDI2IGxlZ2FjeS10cnVuaworMTAzMTggNTRkOGU4NWQzYzI4N2RjMjU0MDc3ZTFkYjcyYWQwN2E0ODYyZDQwMiBsZWdhY3ktdHJ1bmsKKzEwMzE5IGZjOTUwNDMzZDE1OGU1NmZkMTQ1YTU0NzcyOWFhYjM1ZGVjMTFjYjUgbGVnYWN5LXRydW5rCisxMDMyMCBkNGY1MzIxYjlkOWU4NTZmYzJjNmYwMDk3YTcyMjM5YTAyMWU0YzJlIGxlZ2FjeS10cnVuaworMTAzMjEgYWFhMjA0YTA1Zjg0MjMyNzE1MWQyOTNjNTE0MDgyOWU5ZmY0N2RkMCBsZWdhY3ktdHJ1bmsKKzEwMzIyIGNhMTg1MDQ4MWUwMmE0MWEzMmIzODgzNjliMzg5ZWFkNTRhZDM0NDYgbGVnYWN5LXRydW5rCisxMDMyMyA0OTFlMzAwNWY1NGI1NDY4NmNiZjIyZmY3NDkwOTFmZTgxMTcyYmQ4IGxlZ2FjeS10cnVuaworMTAzMjQgYWFjNTg1ZmU5NDUyZmJkZWZjODZmNGIwNzA5MGMyYmZjOTRmN2FhZSBsZWdhY3ktdHJ1bmsKKzEwMzI1IDY3MDlhMDJmNjcxODAzOGRmMTMyZDFlMWM3NTExNzFkYWNiMDI5NjIgbGVnYWN5LXRydW5rCisxMDMyNiA5NDliNTk4MjAxODVhZjkxMWI4NzRkOTJiOTM2OTg3NDcwNzVjM2U2IGxlZ2FjeS10cnVuaworMTAzMjcgNmM2YTQ4YmM1ODE3M2U3MDRmNTZjZjhkZWFlODU4NGJlZDg3NWZlZiBsZWdhY3ktdHJ1bmsKKzEwMzI4IDNjNGY3MzZkNWUwMTBjY2Q2MjdjNTJjNWRjM2JmNTM0NGVkYjMyMzIgbGVnYWN5LXRydW5rCisxMDMyOSA0ZmJlNmM5YzVkODExZmQ0ZjNlY2NjNDU2ODVjMjdhYzg5ZDRhNTc4IGxlZ2FjeS10cnVuaworMTAzMzAgOWQzYjQwMWJhYzZkZTJjNzA5M2RiODc2ZGM2MmZmNzU3NWM3OWE4MSBsZWdhY3ktdHJ1bmsKKzEwMzMxIGRiMWU0OWQ1MWZlMTJjMjc1OGY3OTEyYTBiNzg4MGE5OGE3Mjk1YTggbGVnYWN5LXRydW5rCisxMDMzMiA2ZTRlYTBlZGEyMmVjYzliZDJmODAzZWQwNzllYzUxZWNkMTViMjQxIGxlZ2FjeS10cnVuaworMTAzMzMgZjM0YTY1OGU3YzE1NjViNjE2ZTRmOTE2Y2QzMjM5MzIyMzFhYjZjNCBsZWdhY3ktdHJ1bmsKKzEwMzM0IDI2MWM2MzliOTg0NzMyNTQ4NzUyNTYwZGNiNTZjMGVmMDMyNTc3YTUgbGVnYWN5LXRydW5rCisxMDMzNSAxZjFmOTQ5NTA1YWYwNGExMThlZWU4Yzc3YmFhZDcyZTZkMTc1MmJhIGxlZ2FjeS10cnVuaworMTAzMzYgYjc1YjJmOWQzY2UxM2U5NmE2OGQzMDY4YzVhYTRkYzljMmRkNzQ1NiBsZWdhY3ktdHJ1bmsKKzEwMzM3IDk1NjcxOWVhNWY1YTZkYmNhNGZmZjkzMmZiYTM2NzBlZTA0ZjIwMmUgbGVnYWN5LXRydW5rCisxMDMzOCBiODQ3ODUwNGI3NzliYjI3N2ZjZDM4ZTJmMmNjMDBjNzY4MmM4MzAwIGxlZ2FjeS10cnVuaworMTAzMzkgODQyZWQ2YmJkMDY2MGE3YWE5NTI1MjU0ZGViYzBhYmE0YzVhY2ExNiBsZWdhY3ktdHJ1bmsKKzEwMzQwIGIwYjMzYTM1N2M3OWVkNjQwMTYyZmI3OWRiNWQ3YmU0OGE1NDBhZDMgbGVnYWN5LXRydW5rCisxMDM0MSA5ZTEwYzg2MmFiZmMxYTI4MGI4YmFhYzZlZmFhOWNlMTM0MTg5YzU2IGxlZ2FjeS10cnVuaworMTAzNDIgZTg1ZDZkYjdiZjk3NzUwYTQwYjQ0YTg5MjI5YWFkYTY5OTlhNmM3YSBsZWdhY3ktdHJ1bmsKKzEwMzQzIGEzYWRiMTZmMDg5NWYwYjI5OWNiNzExMjYyNzFhNjk3MGU4NDRhZTUgbGVnYWN5LXRydW5rCisxMDM0NCBkNzczZGIwNjM1NWMwNjk4ZDFhZmQ3NWM3MGMwODNmMDBkYjZhZThmIGxlZ2FjeS10cnVuaworMTAzNDUgMjFhN2UzYzMyNGRmN2ZhY2U5ZmEwMDNjYTk3YzA0Y2QzYmVkNDhkNiBsZWdhY3ktdHJ1bmsKKzEwMzQ2IDE3NmI5OWU2OTY1YmU5MzI2ODYzMWVhZjVlOGMzZmQ0NjNkZDQwYzYgbGVnYWN5LXRydW5rCisxMDM0NyBiNjlmYTlkMTQyY2E1YTc4YzNkNmZlZmYyNDAwODg4NTc5NWRlNGUxIGxlZ2FjeS10cnVuaworMTAzNDggYzc2YWRhZjUxMmQ2NTUzYWViZjFmNDA3NTE3NDk4YjQ4MTkwZDA1MyBsZWdhY3ktdHJ1bmsKKzEwMzQ5IGE2MWZkYjhhNDQ5ZWUxZjAzNjNiYmVjMGU4MjhmMDMyYzBkZTVjMDAgbGVnYWN5LXRydW5rCisxMDM1MCAzMWZhOGEwZmQxNzg3MmU0MmZkYWQ3NzA5NGQyMTkwNjU1YjIxMTI2IGxlZ2FjeS10cnVuaworMTAzNTEgNmJjNGY4MDcyNWQ2ZTI4ZGI0ZjZkMzJmODc1NDkxZDg3YjE4YTY5MCBsZWdhY3ktdHJ1bmsKKzEwMzUyIGQxNTE4MWEwY2ZiYWI4NjI1YTEyODkyZGY0MWRhNDVhOWJhYzM2NjAgbGVnYWN5LXRydW5rCisxMDM1MyBiNWVkZTEzM2Q5MjE2YWVmZDQyOGM4NTEzYTNhYmQ3ZTEwNGRlMTIzIGxlZ2FjeS10cnVuaworMTAzNTQgZDA3Yjk3ZDI5YTllMzJhMTJjZDE1ODM5YTMwOGQ0YzVhNWRmN2NjNCBsZWdhY3ktdHJ1bmsKKzEwMzU1IDM5MjM4OGM1MmUyMTcxN2VmMjNlM2U5ODBhY2IwYzA2OGNlZjVlZWEgbGVnYWN5LXRydW5rCisxMDM1NiA4ZjQyNWY4ZjRiZTJkZjVkZTBjYjc3YjQ3NzVjNmFmMWZjYTViYjJhIGxlZ2FjeS10cnVuaworMTAzNTcgMGE4NzNmMmI2NGY0MTgyYTNiODIwN2M1OTdhYjhmYTI0M2I4ZjM2NSBsZWdhY3ktdHJ1bmsKKzEwMzU4IDhlNTIyMzY4MGE5ZGE0YzY4OWZiZGIyY2JjNDA1MmE4ZWVhZTBjYjUgbGVnYWN5LXRydW5rCisxMDM1OSBhYzJkMWMxZjE5NzFmMmE5M2RlZDIxN2ZjYzc1NGE2ZGYyMGY4ZGFhIGxlZ2FjeS10cnVuaworMTAzNjAgNDI3YTliMWM5YWJkOGUxMjBlMmJmMGJjOWU3ZWQ2ZjdhNmY0MDFjZCBsZWdhY3ktdHJ1bmsKKzEwMzYxIGJkZTY5ZGZjMjI0ZjBlNzM3Yjg2NjgwNjNkY2Q1NmM2ZmQxYzhkYjEgbGVnYWN5LXRydW5rCisxMDM2MiA2MzcwZjE1OTNjNzIwYjkyYTEzZGY3MjdiOWYzMWNkNWUyY2JiNWYzIGxlZ2FjeS10cnVuaworMTAzNjMgYjBmYmU2YjZkY2JmMTFiMWExMDIxMmMzOTczYTM3ODQyZDY5MjIyNCBsZWdhY3ktdHJ1bmsKKzEwMzY0IGU4MzNiZWU1ZDA1ZmIyNGU3NDAwODJkY2RkNjNhYWQ4ZGIyYzFlYjYgbGVnYWN5LXRydW5rCisxMDM2NSBkZmM4ZGU4ZjFlYzNlNjliMjgyM2NmZmRmZGM2MDk5ZThiYWU4NzQ5IGxlZ2FjeS10cnVuaworMTAzNjYgNDJkM2YxZjcxYzU2Y2ZiOTliOWJlYTAxYWNiZGJkYzBhYzAxYzNhMCBsZWdhY3ktdHJ1bmsKKzEwMzY3IGFlOTc3OGM0ZmZjYWY2MzY4ZTZlMGVhOGVhZmUyODk1MmY2NGNmMmIgbGVnYWN5LXRydW5rCisxMDM2OCBlZmJiN2U1N2U2Zjg2ZmMwZjYxMDBlNDQ4NDIyZDg0NTQyODRjMTk0IGxlZ2FjeS10cnVuaworMTAzNjkgZjhmNjYzYjQzMmI0MzU2YThiYWUyMDcwYTY2N2JiMGU4OWVmZjczNSBsZWdhY3ktdHJ1bmsKKzEwMzcwIDQxYzdkNTI0M2JlOTMxZjgzZmVkNjFiNmNmMjM5ZWQxZTk5NTMyODUgbGVnYWN5LXRydW5rCisxMDM3MSA4YTM4OWM4ZmU2ZWZkMmEzNWJhMzI3OTZkZTlkN2Y0MjMwZTZlYmE5IGxlZ2FjeS10cnVuaworMTAzNzIgMzcyMzRlMWJiNzVmZmRkZWI4NTMxYjU0ZTY4ZmNjNGZkZWY5NWQ4MCBsZWdhY3ktdHJ1bmsKKzEwMzczIGRiZDJkZTI2YzhkMjI1ZmZlYzBmYWJmZDllNzhlYTlkZjA5YWUwZTEgbGVnYWN5LXRydW5rCisxMDM3NCA4YzkzNTQ0Yjk1ZTRiM2MxYzE1Njc0OTg2ZjBiOWQ5YTI3MGQ2OGEyIGxlZ2FjeS10cnVuaworMTAzNzUgMjY3Mzg0ODQzN2MzNGQ0ZWQzYTExMDRiNjhmMjZjY2RlZjRhYWY5MyBsZWdhY3ktdHJ1bmsKKzEwMzc2IGU2MDY2YjgxM2E3MTRkMTVlOTZlNDIxNzUzMzJmNDlmM2IwZjNmOTkgbGVnYWN5LXRydW5rCisxMDM3NyAyOWFiM2Y2MDJkMDAyM2I1YzE5MzczMjZhNDc4YjhkYjUxYTE3OGFlIGxlZ2FjeS10cnVuaworMTAzNzggZGY2MzZkZWQyZTcwMmJkZGZkZjg4MjJhYThiOGM3Mjk2NGFiODZkNiBsZWdhY3ktdHJ1bmsKKzEwMzc5IDZhMDI5OWViY2NlZjkwZDAzZDRjODAwZmUzYWUxNzRiNTRjNmE4OWEgbGVnYWN5LXRydW5rCisxMDM4MCA4ZjNiYjBiMThhODJiY2U0MDcxOWM5NDRkMTMzMGZhOGI0MmNjMTcyIGxlZ2FjeS10cnVuaworMTAzODEgMWVmZWU1MDMyNTllNTFhNDhkZDAxNjYxMDNhZjNjOTU1MjY1MDk2ZiBsZWdhY3ktdHJ1bmsKKzEwMzgyIDlhMjQ2ZDc0ZmNiNzUyYTE0NmQzNGI5ZjhhMTE5MWM4YTljYjcwYTYgbGVnYWN5LXRydW5rCisxMDM4MyBhMTEwNDIxZDg2YjczMTQwMDBmYzE4OWZjMGU3Y2VhZmU3NGJlZjVmIGxlZ2FjeS10cnVuaworMTAzODQgMTczNjhjOTJjNzY5YTUzYmM0MzljMDM0MTEwMTVlOTUyYzY2NDBiYiBsZWdhY3ktdHJ1bmsKKzEwMzg1IDNiZDY2OGRmNmVmZGMyZDYzNTEzZjhlZjZlZDAyNzlkNzBiYzk1YjYgbGVnYWN5LXRydW5rCisxMDM4NiA4MGIyYWM2MWZlMDM4YThiYjY5Y2IwZDM5NDQwNDQ5YTQ5OTE3Njk0IGxlZ2FjeS10cnVuaworMTAzODcgNGI1NjY2ZGZmNWU2NzI0OTY3YTc1MzliOTI1MWM2NTExNmY4ODVmOSBsZWdhY3ktdHJ1bmsKKzEwMzg4IDNmOGI1NTY0ZjBjN2MyOWUxMDdhNTQ0MTQ1NzM4ZGIzODcwM2IxNWEgbGVnYWN5LXRydW5rCisxMDM4OSAxYTFkMzE0N2IwMjdjNGI0ZmU1Nzg3NzI2MTk3NjkyNWRlZjVjYTVkIGxlZ2FjeS10cnVuaworMTAzOTAgNWVhZmQzZWRhMGFmNGNhZWUwYjYyMjUyNTEzZmJiZDdlMDVhNzA2MSBsZWdhY3ktdHJ1bmsKKzEwMzkxIGI3MWExMjU3NzY0YjAzMjU5MmU2MzcwMjVlY2Q2NTcwMjY4M2U5MDYgbGVnYWN5LXRydW5rCisxMDM5MiAzMWY5ZTI2NzUxOTllMTk1NjJkZDhmMTcxM2JjYjMyZWZkYzVlYTBhIGxlZ2FjeS10cnVuaworMTAzOTMgNTQxOGMwNzMwZjAwOTYxNjJhNWJkZTVlMDIxZDNkZTkyZjExNDY3YyBsZWdhY3ktdHJ1bmsKKzEwMzk0IDY0ZjNlOWViZjIxYWNmMzI2ODQxMjUwZTViYzEzMjM0ZjUzMmYzNjAgbGVnYWN5LXRydW5rCisxMDM5NSAxZGFlY2Q2NWE3YzVlZmM5ZTBjZDEyNWM0YzQ4YjZmOGU4YWQ4ZWY4IGxlZ2FjeS10cnVuaworMTAzOTYgYmE5YjFiNGFlYWI5ZWU4YWFlNWU3ZWE3ODRiZmRkNmEwMmJlMTQ0MyBsZWdhY3ktdHJ1bmsKKzEwMzk3IDEzMThhNDc0YmFhMDZkZDY3ZmE2MTJlZDFhM2IzN2VmMDYyMjFmNzYgbGVnYWN5LXRydW5rCisxMDM5OCAwOTA1Zjg2NjY4MDdmMzM4NzQzYTc2ZjUzODIxOGMyMGM5ZmVjM2JhIGxlZ2FjeS10cnVuaworMTAzOTkgNWZhYjU5ZWI0ZmE1YTFjZjQ3MTlmODViYmE3MDRkMjRjNWNhODM4NyBsZWdhY3ktdHJ1bmsKKzEwNDAwIDZiYzA1MzVkYmY1Mjc3OTJmOGRkYWZhZGYzMzc3ZDQzNDQ0ZGEwOTIgbGVnYWN5LXRydW5rCisxMDQwMSBkZGUwZGZmYjFhMDhhYWU0MTg5YmIzNjBlMGQ0OTVkYjI3NjRlZWRhIGxlZ2FjeS10cnVuaworMTA0MDIgMGJkY2VkY2QxNTQ5Yjc1OTUxZWMzZWJlYzBmMTJmOTA0N2M5ZTBjNSBsZWdhY3ktdHJ1bmsKKzEwNDAzIDZiZTdhYjI0NmEwNWI0YzgxYjEyNjNhOGFhNmQyMDNkNTE4OTcyZGMgbGVnYWN5LXRydW5rCisxMDQwNCAyM2NjNmFjNWViYTZjMDc2MzFjN2M3NmM0ZTU4YTgwYWE4NGU4M2NmIGxlZ2FjeS10cnVuaworMTA0MDUgZGU5MGJiZTg1MDEzN2ZlMWVmYjc0YjViNzA4Y2I5ZGUwMThlMGJkNyBsZWdhY3ktdHJ1bmsKKzEwNDA2IDMzNDA3YzBlZjE0ZmZlNTdjMTNjNTVlNWYwMDQwYTI2ZjQ5MmI2ODQgbGVnYWN5LXRydW5rCisxMDQwNyBlMjlkNDM1YWIxNDJmMWU4NWRlY2MzMWM5ZTkzZjg2NzdmN2U5YTQ4IGxlZ2FjeS10cnVuaworMTA0MDggMTEyNmU3MmU1ZWU5YzlhNDlhMWIyZDdjODdmYzM1YjMwNTFjZTllNSBsZWdhY3ktdHJ1bmsKKzEwNDA5IGVmMzAwZTZiMGM3MWRhMGJkNWE4MWVjZDIwOGJjYjZkNzNjOTliNjkgbGVnYWN5LXRydW5rCisxMDQxMCA5ZDhjMDY2NmIwY2JiYzE0ZjRiYzg2OWE3MDUyMTkyMDJkZGE5NzAzIGxlZ2FjeS10cnVuaworMTA0MTEgODY4ZGM4NGJiNWIyOWFiZTJmN2EwZDYxNzY4YzY5MDA5NTJkMDM2NCBsZWdhY3ktdHJ1bmsKKzEwNDEyIDdjN2ZmMWEzNjUyMTdiNDUzYWUxNDUzZDQwOTQ1ZjBhZjliODBmYzMgbGVnYWN5LXRydW5rCisxMDQxMyAwNTIyYWIyMTBmY2JiMDhhNzY1MWZiYzBhNTBmMjdjNjhkYTZhYmUwIGxlZ2FjeS10cnVuaworMTA0MTQgYjJhZGNkNzNjMTUwYjgyYzUzOTk3NzRmODgwNDFjYzVkZDlmNjU5MCBsZWdhY3ktdHJ1bmsKKzEwNDE1IDcwOGRlNGNiOTZlYjIxYmRhYzhiZjY1ZGE0MDk1OGUyMDBkM2Q3NWEgbGVnYWN5LXRydW5rCisxMDQxNiBhYTdkNjlkNjdjODFkN2RhMzkzM2FlMDg1MGM0ZmUyYzFjMWZjYTQ4IGxlZ2FjeS10cnVuaworMTA0MTcgMWYzOGEyYjU0OGJmOWQwNmE2YTI1MWU4NGIwNWJlNjA3ZmI3NDVkNCBsZWdhY3ktdHJ1bmsKKzEwNDE4IGYyMjNiZjYxYjRlZTAzYjhlZjRlZGYzOWU5OWI1ZTY1MjExMWY0YzAgbGVnYWN5LXRydW5rCisxMDQxOSBjYTRlMjVlZjYxZjgwNjliZDY5YTYyNDNjZGNkNDVlM2RjYmI4NDE2IGxlZ2FjeS10cnVuaworMTA0MjAgZDNlYzJlNTFmNjdhMjFiOGU1NDMxZTE0YzNmZTczNjU5Y2RhMGFhOCBsZWdhY3ktdHJ1bmsKKzEwNDIxIDA1N2U0MjJkMmM2MTA5MDA4ZTIwOTUyN2RiMGQ0NjhkYjU1OWVhMTMgbGVnYWN5LXRydW5rCisxMDQyMiA5MWVjZGE5ZDUyNDUxZGY3M2VmNmQwNTEwMGNjYTlhMzYzZTg1YzUxIGxlZ2FjeS10cnVuaworMTA0MjMgZWUyYWFhMmY3MjJhODQ3Y2M2ZGZmOTEyMjZmZWNhOWY5MDI3NmMwOCBsZWdhY3ktdHJ1bmsKKzEwNDI0IGIzMWFiYzEzMWMzZGY5NDNmMDJmNTY0M2I1NTQ1YmUzNjNmY2NhZmIgbGVnYWN5LXRydW5rCisxMDQyNSAxNjJkYjNkMGM5MTY3ZTA5ZDZkNzY5YjA3YjEzM2JiMjEwMjA2NmI4IGxlZ2FjeS10cnVuaworMTA0MjYgZGMxMzJjYzM5NTczYTBlYTZkZjJkMjZjOTk5MDllYWZiNThjNWYyZSBsZWdhY3ktdHJ1bmsKKzEwNDI3IGFkMTE0NjIwZjhjMjc4MmQ1NzdkYjJkMDQzYzE0NzUyZDE5ZTQ4ZjcgbGVnYWN5LXRydW5rCisxMDQyOCBhMmMxYjNlMTc5NTI2ZGQyNGQwMmJkYTc3NGI1MmQ0M2JkNTE0NDc0IGxlZ2FjeS10cnVuaworMTA0MjkgZjA2OTEzODA4ZmUxZGFjZTc1ZTEyMjA5Yjc2NWNhZmYxYzE3OTY4NSBsZWdhY3ktdHJ1bmsKKzEwNDMwIDU4ZDY4MTVhZjAwMmU2NzhmZWI4NzNhOTViZTc4NjY1MDc5YWNiNDAgbGVnYWN5LXRydW5rCisxMDQzMSA5Y2JjYjU5MzFkODAzZDY4OTYwMDFlZWU1ODljZmZjNjYzMzhkNzBjIGxlZ2FjeS10cnVuaworMTA0MzIgZjQyYjc1Nzc1NWViMzJhYmViNmQ4MjQ3ODcyYmM3NDJiNTYyZDQzYSBsZWdhY3ktdHJ1bmsKKzEwNDMzIDcyZDk5NjE1NDBkODViMjAwMzY5NDlmMTRiNGE0MWMyODQ2MmY2NWUgbGVnYWN5LXRydW5rCisxMDQzNCA5MmUzNjExNmFmNDIxYmNmZWVjOWY5MDZiZmJkYmM3NmQ5OThlZGFjIGxlZ2FjeS10cnVuaworMTA0MzUgZWJkZDQwZTI4MTYwMjVjOWY5NDMyYmE5YTM5YjA5M2UwOGIyNzZkNiBsZWdhY3ktdHJ1bmsKKzEwNDM2IGNkOWU2NjRhMWE5ZmE4NGJjYzYxZDJhZDgxZTFlMmQyN2ZkNGJmYTggbGVnYWN5LXRydW5rCisxMDQzNyBmYzA4ZGEyYzlhMGZhN2Q5NjgyZTExZDEwZTVjZDM5YWI1OTcwYTAzIGxlZ2FjeS10cnVuaworMTA0MzggOGYzNjhkZjE3M2U2ODhjNDY0YzkwNjM2NDdkYmM1MGIxOTFiZTNkNiBsZWdhY3ktdHJ1bmsKKzEwNDM5IDllMTEzYWEzNzU4ZGExMDQ4YzdhY2UzMzA3ZWQyNzdjYWFhNzg0Y2YgbGVnYWN5LXRydW5rCisxMDQ0MCBmZWM4ZWIyYTM4MGRkNTE3MWM2NTUwOTY3NjU1NzA3ZTU0NzEwYTk3IGxlZ2FjeS10cnVuaworMTA0NDEgOGNhMDEwODMxNDBjYjk5MmQxMmI2Y2VkNTIzYjE2YmYxMzZiMTQ1MSBsZWdhY3ktdHJ1bmsKKzEwNDQyIGNjZDFjOTYzZTUwOTVkZGU3NDRlYzRkYTBjNDllMjA5MmMyNGVjMjUgbGVnYWN5LXRydW5rCisxMDQ0MyBkNmZjYmQzNzE4NTVlMzY0N2YxODU5NzFhMjI3MTA0YjdjZGEzN2FiIGxlZ2FjeS10cnVuaworMTA0NDQgYWZkNTRmODk1ZGMzMDMwZGQzMGQ4MDk3ZmZiYjVlZTVhNjA5YjVlNCBsZWdhY3ktdHJ1bmsKKzEwNDQ1IGQxZWExM2NmNDZmN2JjNWFjZmU0ZTNiZDJiMDI1Y2RiZDdjYjZjZGIgbGVnYWN5LXRydW5rCisxMDQ0NiBlOGQwYjg3YzhkNmIxZmIwYTIyZjU3ODI2M2FiZDk4ZjhhMTFlYTgwIGxlZ2FjeS10cnVuaworMTA0NDcgOGMyNjhkMGU4ODIyMDU0Y2NiNTNhOGNlMjlhZDcwMjY0OTI2YmFkOCBsZWdhY3ktdHJ1bmsKKzEwNDQ4IGJiZDJiNWQ4ZDBiNmMyMmJjYTRmN2UwMmIwNGUxZGZhYWQ5ODVkNmMgbGVnYWN5LXRydW5rCisxMDQ0OSAyZWY2ZTA0MjQxNzljYWZmOWEzNmU3NzU4ZDBhNzE3MjJhYzllNWY0IGxlZ2FjeS10cnVuaworMTA0NTAgMzM4ZjFkZWY0MzcwOWJmNGYzMmQ1YjhkMDFmN2Y2ZjY0NmI4M2JjZSBsZWdhY3ktdHJ1bmsKKzEwNDUxIDRjZWVlMWVmOTliMDMyODEwZmJiNjIzN2RlYjAxODc3OWRlMGI3MzEgbGVnYWN5LXRydW5rCisxMDQ1MiA0NjkyODg0OTljOWJkZTlkNTNiZjJkZDRiNDEzMzRmZjFiNGU0YjM3IGxlZ2FjeS10cnVuaworMTA0NTMgZmYxMGIwMzI4ZmYzNzUwYmIzMDMzMTM1ZDA2MzI2NGY5M2E3OWY5MSBsZWdhY3ktdHJ1bmsKKzEwNDU0IDA5MTQ4MWRiZTEzZDdjNTEyNzk4MDdiMmZmZGJjYTkyMWMxZTI0NWEgbGVnYWN5LXRydW5rCisxMDQ1NSBjMTJjNjYxZmQxNGVmNGI1N2Y1MzE3YTk0YTIzYzJiYzY4NWY2YmNjIGxlZ2FjeS10cnVuaworMTA0NTYgM2RjNWQwZmNiMTY3YWMxYzgzNWI0YTM0OWQxMTFkYTM3ODkxYTZmNyBsZWdhY3ktdHJ1bmsKKzEwNDU3IDc1MjIzNTg0NjE4MDQxNGRkZDg2YzE1N2UzNzA0ZjI1NDcyMTgyN2QgbGVnYWN5LXRydW5rCisxMDQ1OCA1MWQzMWZjYWVlZjNhMjEwMjQ4MDgzZGY3OWRiYzY1OWRiOGViZGRlIGxlZ2FjeS10cnVuaworMTA0NTkgMTQzYzU1NmRlYjJmODU1OWY1NjRkZTE0N2UwYmQyYmI2NDUxYjExZCBsZWdhY3ktdHJ1bmsKKzEwNDYwIGNjNDc3MzNiNGRkMjJjNTVkMjU4OTg3YWYxYTBiNjFjNTA2NWU1NzUgbGVnYWN5LXRydW5rCisxMDQ2MSA4NWU4ODZkYjE5YjA1OThiOTJjZDFiNWQ3N2RhM2NkZDQzNWJjMDRjIGxlZ2FjeS10cnVuaworMTA0NjIgMDk5NjNhMmEyNGRiMDg5OGU0M2JmMzMxYjMxNWFhYzRkNzg1ZDgxNyBsZWdhY3ktdHJ1bmsKKzEwNDYzIGE5MDlhMjg2OWFjNTlhMGJlY2MwZjY3M2E0MjYxZDUxMmY2MjBjMmQgbGVnYWN5LXRydW5rCisxMDQ2NCAwNjgzMDNmOTI1ZWE4NzJiZDExY2JlOTJmODI3YTY5ZDM0MDYwMmMyIGxlZ2FjeS10cnVuaworMTA0NjUgMWQwZWIyZTk2ZDc2NzllOWY3ZjQ2ZTIwYzc5NDhiNjBlYjFiZmM3NyBsZWdhY3ktdHJ1bmsKKzEwNDY2IGFiNGY2NDU2MWZiYTMyODgxMzRhNzc1YzM0ZDZkZjk5MWM5NmQyNTcgbGVnYWN5LXRydW5rCisxMDQ2NyA5NzFiNWJiZDkyZWMwMjBlYWJjMGM3MzhmMWJjNzdkNGM1YWNlMzljIGxlZ2FjeS10cnVuaworMTA0NjggNjk3ZGY5M2U1ZGRiNDc2NGNiNDE1ZjY3MWMxZTE1OTFjYmJlM2I2YyBsZWdhY3ktdHJ1bmsKKzEwNDY5IDAyNjNkMzMyNGYwYjJlOThlZjFmNjVmMjc0YzdjMmFhYmY5ZTc4NzEgbGVnYWN5LXRydW5rCisxMDQ3MCBiOWViODA1NTc5YmE4NjMxYjkxMjg2ZTMxY2I3M2M1OWFjZTE2NDI4IGxlZ2FjeS10cnVuaworMTA0NzEgZGUxMDU2NmRlYzVjZDFjMjg2ZTViZDc1ZWQyOGJjOGRmNWU5Yjc2MiBsZWdhY3ktdHJ1bmsKKzEwNDcyIDZlNTA3OWU4ZmE2ZTA1MzNkOTI5OGJlNjc1MTEyZjZmNGVjMzY4NWIgbGVnYWN5LXRydW5rCisxMDQ3MyBjZjBjZjIxYjQ1NDU0NzcxYzdlZjVjZTY4N2QwYzlmODkxYjQ1OGQ1IGxlZ2FjeS10cnVuaworMTA0NzQgNmIzZmQyNGNjMDc3NmYzMmExOGY0YWYxYTIxNTZiMTljMjRhMTMwOCBsZWdhY3ktdHJ1bmsKKzEwNDc1IGU4YzRiM2QzODZlNGYyZDMzNzJkOTVjMjFjZGY5MDk4N2Q0OWZmMjYgbGVnYWN5LXRydW5rCisxMDQ3NiBkYWZmZGU3YTY4OTE3N2YxYjExYTIwODliNjEwYTlhNGI5ODRhZGJiIGxlZ2FjeS10cnVuaworMTA0NzcgODkzNTlkMDcyZTcyN2U3MmE2ZDY0NWYxZjlkYzc4ZTdiYTg1NTA5ZSBsZWdhY3ktdHJ1bmsKKzEwNDc4IDFkNTI2NTA3Y2Q5ZWM3M2UwMDliYzY5NDJhOTNmMjhhMzM0ZmQwYjYgbGVnYWN5LXRydW5rCisxMDQ3OSAzZDFkOWUyNWViMjJjNjMyNTdmNzlhOWFhNjViOWUyN2NhNjI5ZjU4IGxlZ2FjeS10cnVuaworMTA0ODAgMDgzNWI4ZGY1NGY4MGQyMzU0NTFlMmU2YTRiNDZiNDY2Yzg4NTg0NiBsZWdhY3ktdHJ1bmsKKzEwNDgxIGJkZjU3Yzg0ZGY2YWI1MWNjMzRjOGZjYzRjYjczYzBkMWQyOTczNDggbGVnYWN5LXRydW5rCisxMDQ4MiBjOGEzMTExNDQ3MjY3YTE0YzMzMDE4YTFiMzE3NGYyOTBlMGI3NzkyIGxlZ2FjeS10cnVuaworMTA0ODMgYjQyMGFlODUyMTNjNzlmMDVjZGMzNjk1OWM3MWExYjA0NzcwZjhmOSBsZWdhY3ktdHJ1bmsKKzEwNDg0IDVkYjM0NmU5YzhmNTYwZGNlYjE2YmFhYmU0ZGFiMGVjNjQyNzFmODQgbGVnYWN5LXRydW5rCisxMDQ4NSA5MDAzMjA0OTFiOTM2YzlmY2EzZjcyMzg0NjRkMDBmY2Q2YWM2M2I5IGxlZ2FjeS10cnVuaworMTA0ODYgZTk4NjY4NjgzYmVkNjM1OGY5YzVhNzMzOWU5NDQwYjdiNGYwMTA3NyBsZWdhY3ktdHJ1bmsKKzEwNDg3IGE4NDJjOWU2MzI4MGE5NmY3Mzk0YzMxYjcyMTA5MmYzOGFkNmY2MGQgbGVnYWN5LXRydW5rCisxMDQ4OCBkYmMxMWRkMDJmMDk1OTIzNTBiOWZhZmQzMDUxNTlkYjhhMTRiYjVjIGxlZ2FjeS10cnVuaworMTA0ODkgNGY0ZTJhYWQxZTBhYjViYTBhYmMyY2U4MjZlMDQ5NzZhMjlkNGZkNSBsZWdhY3ktdHJ1bmsKKzEwNDkwIGJmNmU5MjBjMGU3OTlkMTYxMjk0N2I4YWExZWQwNDc0MjM3Y2QzMjEgbGVnYWN5LXRydW5rCisxMDQ5MSBjYTBjNzI1OTEyMTFjZDkyOWYzZjg3MTQ3YTRhYjY0NGVkZjUxODQwIGxlZ2FjeS10cnVuaworMTA0OTIgODNiYTUzMDlmZjIyNmUxYzRiYjIyZDI1ZDMxZjViY2RiYTE0OWQwOSBsZWdhY3ktdHJ1bmsKKzEwNDkzIDJiMDlhNWQyNjM2ODhkMDc3N2Y2YjZiOGVjZDkyZjMzMTRhMmZjZTMgbGVnYWN5LXRydW5rCisxMDQ5NCA1M2RkZTQyMzI1ZjhhOTk0MTMwNjk0NzU2MWJlZjk4ZDQ4MTNlMzdkIGxlZ2FjeS10cnVuaworMTA0OTUgNmU4YmU2MDk2ZTU2MzAyZmE1NzhjNmQ4NDU5YzVjNTNmYTUwNTAxMyBsZWdhY3ktdHJ1bmsKKzEwNDk2IGJiYmQwYjEwNWUyNzM1ZmVlNzdjOThmNGE4NmFjMWU0NmZhZmQyMjYgbGVnYWN5LXRydW5rCisxMDQ5NyA0Njk5OWRmY2ZhZTNmMDUwNjdmNmNiMWNkMzUzZjU3YzBjMGIwODY2IGxlZ2FjeS10cnVuaworMTA0OTggNTI2NGNhYzhmOTAzNWYyYzc0YjU0NTFiNTdmOWU2NDM3YjQ3NGY5NiBsZWdhY3ktdHJ1bmsKKzEwNDk5IDAxMWFlNzFmZWE5NjQ5YTE3YTQ4N2Y3NmI4MDdjZWFjNDFkOGFiMmMgbGVnYWN5LXRydW5rCisxMDUwMCA5Yjg5MDIzMzhlMTRiNzA5ZjIzODVhY2UxNTA3MDA3YTI1ZDI1ZTdlIGxlZ2FjeS10cnVuaworMTA1MDEgOTJiYTdhOWUzYjlkOTcxOTgyMTllZGQ0NmM4MDY4MzI2MzNiYzljYyBsZWdhY3ktdHJ1bmsKKzEwNTAyIDNiOTFhZmZhMzMzZTk4NGE2MDYxNzdkY2YxMjJlM2Q3ZTkzYTlmMGQgbGVnYWN5LXRydW5rCisxMDUwMyA1ZDJiZDY3MzhlYjYyZTU1MjVhNWU1MjdlZjM2MDcwMDA1MjEzNzFmIGxlZ2FjeS10cnVuaworMTA1MDQgZDE1N2VlODIxNzc1YzA5OTM0NTJjNzIwY2RmNGIwMmY4YjhiOWUzMiBsZWdhY3ktdHJ1bmsKKzEwNTA1IDQ5ZjFjZjRiMTc0Y2M2M2YzYzFkMmRiMzIwZDMxYTg4OWZlZDk0MjMgbGVnYWN5LXRydW5rCisxMDUwNiBkMWMxYjIwNzU0YTgxN2ZmZjUxNDlhOTFjMTBhN2E5OTBmYTY1MGQzIGxlZ2FjeS10cnVuaworMTA1MDcgZDk5YTkwNTI2YWUwYjE5MmVlY2ZjMjFlODE4ZjFlYzFhMTdiZDQwYSBsZWdhY3ktdHJ1bmsKKzEwNTA4IGY1MzI2ZDM1ODY2MmJiMjEwYjhmMTRiYmQ1NTYyZmY2YTliYTdhZTYgbGVnYWN5LXRydW5rCisxMDUwOSA1ZGNmOWI1ZDMzZTZlNmYwYTBkMDQ3NmFjNTA0OWM3MGNiZDBhYzMxIGxlZ2FjeS10cnVuaworMTA1MTAgOTUxNDJjOGEwOWM4NmE5MDc5NDJmMDE2MzE4ZTNlZTA5NTRkNDc0YyBsZWdhY3ktdHJ1bmsKKzEwNTExIDNmMDM2MDM3NmNhMDAxNTE2NzZkOWRmYzE5ZGVhZGM1OGVjNWNkNzUgbGVnYWN5LXRydW5rCisxMDUxMiA3MTBmM2I3ODM1MTUzYmI3NmU3MDk3MzA3ZmViZWI0YjBmYzdlZGM5IGxlZ2FjeS10cnVuaworMTA1MTMgNWNjZTgxZTIzMzQ5OTZjOTk4ZDBmNmYyYTI2MTE1MGE0MWNkNThiNCBsZWdhY3ktdHJ1bmsKKzEwNTE0IDNmZmQ0NWYwNWUzOTU4ZjU4ZTViY2ZlNWNhMDc4OTY2NDgxYTQzMGQgbGVnYWN5LXRydW5rCisxMDUxNSBjZDMwOTIwNjlmNWEzOTM5MTJiYzFhMjA4Y2Q1NjIwYzE2ODIwOGYzIGxlZ2FjeS10cnVuaworMTA1MTYgNmM1OTQ5ODg1NzJhN2RlMjcxMzY3ZTQ2YTU1YzEzNDUwZWM0YTc1OCBsZWdhY3ktdHJ1bmsKKzEwNTE3IGUwOTFlOWQ0OTVkNWE5ZDA2N2M3YzQzZDZiZmYwNDg3NTU0NjYwMmQgbGVnYWN5LXRydW5rCisxMDUxOCA1ZjM1ZTI3ODEwMzJlMjMwY2UwNTFkZDg3YzBiNGQyNzEyNDFmODUwIGxlZ2FjeS10cnVuaworMTA1MTkgNDNiZTBiOTAyNzE3MDg4NzRjMGRmNjJhNjY5ZGJiYjY5MWMxOTVhNSBsZWdhY3ktdHJ1bmsKKzEwNTIwIGEzODU1MDYxM2FmM2Q5ZDhlOWVkYmM0ZjliYjQ5YWYxNDA2Y2Q2N2QgbGVnYWN5LXRydW5rCisxMDUyMSBkZjBmYTVkYzU5OWFlMDY1NGQ3OWNjMjkwYjllMDdlZDVkY2EzYTk2IGxlZ2FjeS10cnVuaworMTA1MjIgZTIzMzM5NjlhMmNhY2EzZjc4OThkOGIxNGE5NDIyMDE5ZTJhZWNiMCBsZWdhY3ktdHJ1bmsKKzEwNTIzIDQ5MTlkZWUxODc4MWMxMzc3MWU1YWQzYjA3YmJkNmUwMDgyYWY3YWUgbGVnYWN5LXRydW5rCisxMDUyNCBiOGU4YWNlNzljZjAyY2NkYTcyNTdlMWQ1NzRhMGZiY2Y5NTg4YWYzIGxlZ2FjeS10cnVuaworMTA1MjUgYmQzMGFjODMxMjE3MjM0MTg4MTkzYmNjYmFmNGNlMWYwNWNlMjQ4YSBsZWdhY3ktdHJ1bmsKKzEwNTI2IDI1NGZjOTFiNmIwZTczODA5NTgwNzRmZWI0NGI3ZWMxNjdiMzg2OGIgbGVnYWN5LXRydW5rCisxMDUyNyA2NjhjZTBlZGI0ZjFjNTQyOWQzZDAwMmI2Mjk4YWFlNWNkODJiNGY2IGxlZ2FjeS10cnVuaworMTA1MjggMDc3MzBiODJhMTQzZjI4ZjUyZmNhNDVlYzhkNjViNDEwODdlMzg1ZCBsZWdhY3ktdHJ1bmsKKzEwNTI5IGE5MzA1MmFlMGRlYjVhNGQxNjBkMDk2OGE3MDBhZDQyMGZiZTUwNzAgbGVnYWN5LXRydW5rCisxMDUzMCA1ZGNjNWM0YTE4YmRhNjQ4NWQ5OGI3MDk2ZGEyNzkwMzk4YzY3ZDYyIGxlZ2FjeS10cnVuaworMTA1MzEgNzA5OWRlODNiMTkxYjkyNDZmYzkwOTkxNDczM2I1NWJlN2UyODEwZSBsZWdhY3ktdHJ1bmsKKzEwNTMyIDliOGI1NzRlZjAwNzFlMWY5MDlmZTc1MzhmMmMzNTlmMjkxMjU5OGYgbGVnYWN5LXRydW5rCisxMDUzMyBjYjhkNzMzODI0OGNlZjc3Yzg3NWZiMzZlYWE4NDZhMDllZmQ5YzkzIGxlZ2FjeS10cnVuaworMTA1MzQgYTNkOTEyYWZjOTA5YWJjZGQyYTUzMTYyZTRmZmE3NDAyYzZjYmIzMCBsZWdhY3ktdHJ1bmsKKzEwNTM0IDQ0YWJhNGQyNmIwMWZiYWUwNDAzZWZlNjU0ZjlmZDAzNDc2MDY3MzIgbGVnYWN5LXRydW5rCisxMDUzNiBiY2FmNDhiOTRiYjMzODNjNGNhMTdhOTE5ZWY4MmZlYWIzZTJkNGY0IGxlZ2FjeS10cnVuaworMTA1MzcgNDNlODAyYzE2YTViMWFmYmI4NjAwZTU4ZDMyMmRiNjFjZDJhN2UyZiBsZWdhY3ktdHJ1bmsKKzEwNTM4IDVhYWNkZDA5Nzk0MTM5M2Q2ZGE2ZWQzMmEyNTI0MWY0Mzg3NDkxOGUgbGVnYWN5LXRydW5rCisxMDUzOSBkOWFjOTI0NjE4MzI5Y2M0MDk5NzIxMWMzNjEyNmY5NDIzNzgxZWFhIGxlZ2FjeS10cnVuaworMTA1NDAgNzdkNGU2ZjY2MmMxYmVlMDc2YjYyMGY2ZTA5ZWI3OWJjZTEzYTVlNiBsZWdhY3ktdHJ1bmsKKzEwNTQxIDQyODVmOGI3YmEwYjJmYjE3OTk0N2JlMjllNjVkY2I4MTJlYTEwYzEgbGVnYWN5LXRydW5rCisxMDU0MiAwNzY2ZGY1MDNlYTUzZGY0MTZkOGE1ZTVlYjFhZmFhMjljYWE5ZjUyIGxlZ2FjeS10cnVuaworMTA1NDMgZDk3MDQ4Zjg5MWJmMDZhZGQ5YWE4NzkxODczYmJkNTQ0MzZiOGM0MCBsZWdhY3ktdHJ1bmsKKzEwNTQ0IDk4ZWM0MjNjYTZmYTk5MTJhODIwZWFhMDU2ZjZkY2ZkNzRjN2NjZDcgbGVnYWN5LXRydW5rCisxMDU0NSAyMjRiNWMzNmFmZWY4NTZiODk5NmYwYjMwNTFjODhjNDgzMTIxNTgzIGxlZ2FjeS10cnVuaworMTA1NDYgZjBiZDllZTc4YTUyMTc2MzExMWVlNDlhNmE1NzI5OWUwZWJiM2E2ZCBsZWdhY3ktdHJ1bmsKKzEwNTQ3IGE3ZGQwZjUyZjJiNjA5NDZhYzQ1MmQzYjZjODhkNzE3NjQwMmI4YWIgbGVnYWN5LXRydW5rCisxMDU0OCA0OGUyMzQ5ZDExYzYwOTM3MmJlOGViZjBlOTBkYmEzZjZkZGViOTdkIGxlZ2FjeS10cnVuaworMTA1NDkgOWYxNmZhNzBkMDkwZWFlYmVlMDA0MDNiNDg3NTk1OGQ3YWFiZGE2ZCBsZWdhY3ktdHJ1bmsKKzEwNTUwIDg2YTYxOTMwNDlhOTZmNDA0Zjk5N2E3NjliZTIyNzAyOTA2YmJjOTggbGVnYWN5LXRydW5rCisxMDU1MSA0YTJmMWM2OWZkZTgxZTk2YTUxYTRkZjI0NDIzYjVjYmFkMTkyYmQxIGxlZ2FjeS10cnVuaworMTA1NTIgMDUyZTc3NjY0MDMyZTE4MDYwYzJhMTkxYjQyMzQzNzdkYjhlOWU0ZCBsZWdhY3ktdHJ1bmsKKzEwNTUzIGI4MTYyZDA4Njg1MDBlOTFmZTk5YWJiOTljYzJjM2U2NGZlODYwZjEgbGVnYWN5LXRydW5rCisxMDU1NCA1YTY3ZDkwNTEwMjYyYTE3YWU1ZjY3Y2NjZDY0ODU3MjQ5MTM5MjJjIGxlZ2FjeS10cnVuaworMTA1NTUgZDBmZjQxNzQ2YTI2MDBlNGJhZmNmZjhjZDY3MjhjN2RlNzg5MzlkZiBsZWdhY3ktdHJ1bmsKKzEwNTU2IGUzOTE0NWExMzA5NjgwMmQ0ZTQ4MWMxMWQ2OTI0YjBiY2Y0OTQ2NDUgbGVnYWN5LXRydW5rCisxMDU1NyBkZTAyOWU2Zjk4Mzg5MWM3ZTBmYmQwYWZhZjQwOGYyMTdlMTJjMWE0IGxlZ2FjeS10cnVuaworMTA1NTggNWJmZjA0MTcxNzk4NThlMzJkOGM2NjRjZjMzN2VhZWQyOGJiMTFmNSBsZWdhY3ktdHJ1bmsKKzEwNTU5IDMzMTdmNzI3MjNiYjYwOTZiODliNzE2MDQ2YzUyZTAwZWYzNWRkYmQgbGVnYWN5LXRydW5rCisxMDU2MCBjMTUzMzBlZWIxOTJhZDY2ZDFjNGUxNDE0YmQzODQzNTU1MTI1ZDM1IGxlZ2FjeS10cnVuaworMTA1NjEgNjU4ZDE4NGU5MjA0MWI5YzY4ZDg3MDZiMTZkMDhlMTE3MmUxODkzNiBsZWdhY3ktdHJ1bmsKKzEwNTYyIDBiMGI2OWE4OGI3Yjk1YjYxMzJmMzBhZjVlYTE5M2E3ZDBlMGVmNzEgbGVnYWN5LXRydW5rCisxMDU2MyA2YjU4Yjc5YTk1OGQ3N2E1OGY0ZTU0NzZhODllNzBkMzU2NjFlODVjIGxlZ2FjeS10cnVuaworMTA1NjQgN2FjZTE3MmMyNTIxYjAyZWFhMWZkNmRjZThlMzgxMDI4M2FmNzI5NyBsZWdhY3ktdHJ1bmsKKzEwNTY1IGJiM2VjODEyZWM5MGYyNDg3ODgzZThiOWE3MGU3MDRmM2UzZWU5ODAgbGVnYWN5LXRydW5rCisxMDU2NiA1ZTNiYjQxNTYwMDQyNWZkOWZmOGYxM2MzNTQ0MTBhOWQ0ZTYzZDkwIGxlZ2FjeS10cnVuaworMTA1NjcgNjkyYmUxMjNmNTQ3ZjFkMzQ3NTFiNGUxYWQ3OWYzYTQ5MzQ0MTU2YyBsZWdhY3ktdHJ1bmsKKzEwNTY4IGUzZGNlM2I4YzI4MjU5YzYxOTk3ZjFhODM5NTViYmIyZDM5MzMyNzggbGVnYWN5LXRydW5rCisxMDU2OSAwNDkzMTM3YTg0MTQ2MWFhNTgyOGE1OGQ0MTU0MmJiOWZhYWY4Mjc2IGxlZ2FjeS10cnVuaworMTA1NzAgYzVmOTJlZTg0OThmNWM4YjJjNDZhNTBiY2RhMDU0N2NiMDk4NWMzMSBsZWdhY3ktdHJ1bmsKKzEwNTcxIGRmMzdjYTQwMzhmNmMyNjE4MWU1MWE5ZTNjMWE2OGVjODc5ZDZjZjMgbGVnYWN5LXRydW5rCisxMDU3MiA5NmFhNTg3MjVjMGU0MDU4YjM1ODhiY2U2MmE4ZGVjYmRhYzI0OTJkIGxlZ2FjeS10cnVuaworMTA1NzMgMDhlMWJiODQwN2U2NTIwNDQyMGQ4OGUyMzgxNDFiNDY1NGE0YzdkMyBsZWdhY3ktdHJ1bmsKKzEwNTc0IGFkOWFhZDgxM2E2MWIxY2JmNTM4ZjZhOTRkZDU3NjMzNjY0Zjc1NjYgbGVnYWN5LXRydW5rCisxMDU3NSA1NzNiYzA2NDI2NGNiN2U0YWFhOWRmMjQ3ZDAyMmFjNzk5MTE0M2JiIGxlZ2FjeS10cnVuaworMTA1NzYgNDdiZGY0NWFmYjY4NjA3MDUxNDMzMzJiNTBjY2QxZGZmZmM0YWYxNCBsZWdhY3ktdHJ1bmsKKzEwNTc3IDhjMWYxNjFjNmM4YzAxZWQ4MGIzMzUwMzE4ZTcxYzNlYmYzOTIxZTUgbGVnYWN5LXRydW5rCisxMDU3OCBhNmNlMmRmZjI3MzViNzcyNWI0ZDgzZDIxZmQzMGM5ZTQxMjhjOTgyIGxlZ2FjeS10cnVuaworMTA1NzkgYjU3Njg0NmM5NGIzOGY1NDQ2ZWI5MzNjN2YwNzQ5YWQ2NGY3MTFhYSBsZWdhY3ktdHJ1bmsKKzEwNTgwIGE1NWNiYTk2Mzc2MTYzZTBjZjZjMWFmZWZhZjcxOTBlOGJmZTRlMmUgbGVnYWN5LXRydW5rCisxMDU4MSBmMmY5MTI4MjNlZTc4NTcxZmZmZGM4ZTJhY2E3MzA5YjNjMTI1M2Y0IGxlZ2FjeS10cnVuaworMTA1ODIgMjY1YzI3OTc3ODFhMDY4ZmE1MjQwNTkzOGMwNmUwMjMzODQ0MzM0MyBsZWdhY3ktdHJ1bmsKKzEwNTgzIDQyN2YzNDg5ZTUyYjZhYzBkYjZkYzVmZjIyYWEzNGY5YTU5NzhhNmMgbGVnYWN5LXRydW5rCisxMDU4NCAxMWExYmFkNmRmNjczM2UyYzYxOTNjOWJhOGY2ZmU0NzgyM2JhN2U1IGxlZ2FjeS10cnVuaworMTA1ODUgOTMzNDhlNWE4NWEyNDBkMTk2M2E0MmY2NTU0YzEwNzkwYjE2NzM0MyBsZWdhY3ktdHJ1bmsKKzEwNTg2IDc5MWVkYTUyYjNkOWNiYWVhZWViODM5YWNhNWY1OTVhY2RhNzNlY2MgbGVnYWN5LXRydW5rCisxMDU4NyA5YjNiMDEzMmMwMjFjN2M2Yzg4YWJjYzdhNDUxMmFmOWJhOGQ1YzBjIGxlZ2FjeS10cnVuaworMTA1ODggMjgxMGZjNjA5YWVkMDcyMDc1NzgyN2IxOTc3ZjExMWEwNTQ1ZDViZCBsZWdhY3ktdHJ1bmsKKzEwNTg5IGE5OTczZjliNTQxNzc3MjRhZjViZTlkMzZkZTA5ZTJiZDE0MzAzMGIgbGVnYWN5LXRydW5rCisxMDU5MCAyZTQ5YmM4OWZhZmEwZGQzZjZlNTZjYTAzYmExMTRlMGM2MDdiM2UxIGxlZ2FjeS10cnVuaworMTA1OTEgZjA3MDdhZTAwNDMzODQ5YWQ3Y2IwNWQ3NzA4NGYzZTViMWQ4NzlkNiBsZWdhY3ktdHJ1bmsKKzEwNTkyIDVjOWJlOThmNTM0NzM5NGUxZGY5ZTkwYjMxOTI2MDc5ZDAxNWNiYjYgbGVnYWN5LXRydW5rCisxMDU5MyBiNmNlMTcxOTMyM2FjN2RlOWYyMWI3ZmY2MzE5YWE0NjZhZjI1MzIwIGxlZ2FjeS10cnVuaworMTA1OTQgZTJkMzNjMDczMmJmYjE5MTc4Y2ZhMTg3ZWM5MjdhNDA0ZTZmZTk5ZSBsZWdhY3ktdHJ1bmsKKzEwNTk1IDUzMGZmM2I5OTcyMmI2YzBkYzU3ZmU0NDZlM2FiNjRjYjIwMDFlNzcgbGVnYWN5LXRydW5rCisxMDU5NiBkOTYyMjNiNzdlMmYzNzA5NDJmYTgwZGY3YWFiNTIxNDdiZGQxN2U0IGxlZ2FjeS10cnVuaworMTA1OTcgNTk5OTdmZGM4MWRmN2YxODMwYWRmZTJjNjcyMThhYTAzNmI4N2Y2NCBsZWdhY3ktdHJ1bmsKKzEwNTk4IDk1ZWZlYTY4ZjE4ZDc4Nzg1NzlkMTBkMDE4ODdiODQ3MjY1NzQ5YTAgbGVnYWN5LXRydW5rCisxMDU5OSA3Y2Y1MTY1N2IwOGNhYWI0NDczYTcwNmJlZGZmZTdhMTRiYTQyZWE2IGxlZ2FjeS10cnVuaworMTA2MDAgNWFlY2MyNzdlNmNhYTAwY2E3ZjU4NDlmMmZhM2MyNzQ0YzA5NDFjZiBsZWdhY3ktdHJ1bmsKKzEwNjAxIDA2OGZlYTE1Y2JjZDg2NGYzOTI5MjcxN2UxZWYxMDlhNmE3ZjUyMjYgbGVnYWN5LXRydW5rCisxMDYwMiBlOTA0ZTZkZmQ3MGIyNTI1ZmQyZWNiMmM3ZjcwMjE1M2ZmNTJlZjhlIGxlZ2FjeS10cnVuaworMTA2MDMgOGM1NTJlZWRiMWFmYWYxZDBlMDk0ZmI3Njg5M2U5NzZhZGQzODI0YiBsZWdhY3ktdHJ1bmsKKzEwNjA0IDBkYjZmNjkzMmI3MzVjNzFjMDNhZGUwYzdlYjA1ODVmMjE2YzY1OTQgbGVnYWN5LXRydW5rCisxMDYwNSBiZDc0NGFmNjg0NWY4YjFhNWM1Y2IxOTMxNWRmNWE1MmUwNDFhNmYyIGxlZ2FjeS10cnVuaworMTA2MDYgMzY0MDRkOWNiNWUxNWNiZjJlNzFkOWI4YzM1MzZiYjBjYWE5MDJjMCBsZWdhY3ktdHJ1bmsKKzEwNjA3IGRhYTU0MTMxNDUzYjc3ZTM5ZDU5ODBjNjdjODhkOTkwNGI2MThkMTQgbGVnYWN5LXRydW5rCisxMDYwOCAwNDc1MzM3ODkzNTlmNzk5N2I0ZjUxZTIyN2NjOGZiY2JiMDBjODIyIGxlZ2FjeS10cnVuaworMTA2MDkgZmRiYTYzOTdiNzI5ZTQ3M2FjM2ZmNjNkNDk4ZDk4YzA1Mjk0OGUxNSBsZWdhY3ktdHJ1bmsKKzEwNjEwIDEwOTRlYmJkM2E0NTc0ZDI4MmNjOGQzMDU5MDQyZTBlZGU4MDJlMDggbGVnYWN5LXRydW5rCisxMDYxMSAxYmM2NTY4NzYyNmI4Nzk0NjRmNjhhY2VkNmYwZWNjYmNjNTE0NzY4IGxlZ2FjeS10cnVuaworMTA2MTIgOGI0OWM5MThhMjVmMzY4MTBhNWUwMTAxYmNiYTkxZDQ2OGI1OTczNyBsZWdhY3ktdHJ1bmsKKzEwNjEzIDQzMjNiMjQzMzU4MWQ4YzhjODkzMTFkZDYwNjBlMDBmNWVhMzY5NzEgbGVnYWN5LXRydW5rCisxMDYxNCA2MDg4ZDY1MmI5MzI4NDFhYmRhYzVjM2VlN2QyZjY2ZDk3ZTg2YzhlIGxlZ2FjeS10cnVuaworMTA2MTUgYzdkOTlmNmQyZTJmOGMxNzllN2QwNjA3ZDUyMmM4MWNmNTE3ZTJiNyBsZWdhY3ktdHJ1bmsKKzEwNjE2IGFjMjg4ZGI1YmM5MWM0NDI1NDBlMmIzN2E4NzJiOTUzZWFiOGEyZTcgbGVnYWN5LXRydW5rCisxMDYxNyBjZDZiOWZjMTE0YTQxNWZhNGViNTQzNTA2OGJkNDZiNDE0OTM4ZDMwIGxlZ2FjeS10cnVuaworMTA2MTggNDQzNTZlZTdlNTc5MDYzNDA0ZGExYjIzNWQ2MjBlYzEwYWU4YTU4ZSBsZWdhY3ktdHJ1bmsKKzEwNjE5IDlkMDMxMDE0MzYwMDhjZTA4ZDJjNjQ1ZjNkYWFiYmM2ZWNhYmViMmQgbGVnYWN5LXRydW5rCisxMDYyMCBhYzNjYTU2NmNiNDE2MWM0MDlmYWUxYjRhN2YzODNjNzEzMzY5ZjA0IGxlZ2FjeS10cnVuaworMTA2MjEgMjNhODM3NzI2MjI2NGI1NzYzYzNmOWJlZTM4YjI5OTZjYmQ4M2MyMSBsZWdhY3ktdHJ1bmsKKzEwNjIyIGIxNDhmYTE1MjVkYjk5OGVlYzMxYjA5YWY4Yzg1ZDZjM2YyYmVlODcgbGVnYWN5LXRydW5rCisxMDYyMyBkNjAxYWY4MDZhNTczM2JmMzc1NmUyOWI3Y2UxYTNmMDM1ZmYwNTU5IGxlZ2FjeS10cnVuaworMTA2MjQgYWEzYjQ4MDAyZjg4N2UzNmFmMmIyMDg3NzA5ZGRmNjFjOThhNmEzZSBsZWdhY3ktdHJ1bmsKKzEwNjI1IGUwMzNlZDUwY2IzNzZjZjZhNWM4NWYwMDMzZjI3MWUzNzI5MmI4ODkgbGVnYWN5LXRydW5rCisxMDYyNiBjY2Q4Mzc1ZGIyNzM2ZGU5ZGE2NTBmNzU5OWQwYjM1NzgwZmEwZmIxIGxlZ2FjeS10cnVuaworMTA2MjcgYzBlMzk0NGI2YTY0ZmUyZTczZjhjZGM1YTAzYmY5ZjVhNDYwMGQ0ZCBsZWdhY3ktdHJ1bmsKKzEwNjI4IGJkYmUwODJlZTM4M2RhOGEwMmM2MmVhM2IwY2E5MThjYWVkYWY4MmIgbGVnYWN5LXRydW5rCisxMDYyOSA5Mjc5ZWY2ODY4ZWJhM2E1NTA5OTM5MmU1YTUwNzA4ZDlmNTg1NDQ5IGxlZ2FjeS10cnVuaworMTA2MzAgOTFhYWVlZjc1YTczNjJmODdiNTBjNjFmNGUwOTNiNjk5NDExMDZiYiBsZWdhY3ktdHJ1bmsKKzEwNjMxIDNhNTIwMjhmZTkzNjNkYTJmNjFjZWRmZTM0Yzk4ZGY5NmY0M2E3YmEgbGVnYWN5LXRydW5rCisxMDYzMiA0NjY4NmQ0MGJkZmQ2YzMxMTc3YjkyYmY0YTQxNWY5ODA2ZDhlN2FlIGxlZ2FjeS10cnVuaworMTA2MzMgMDVmZWJmOTMxZTkxYjRiZjk2MmU5OTAzMWI4NzVmODdlNGNmYjc0MCBsZWdhY3ktdHJ1bmsKKzEwNjM0IDk5NWZiNTViM2U2YWJkMjFkZGEwYzJjZjdmYzZlYjg5ZWE0MTZkZGQgbGVnYWN5LXRydW5rCisxMDYzNSAyNTUyMzNlNDI5MThmMzQ5ZjFlMzM0NjhhMGJjMmFkMTExMTUzMmEzIGxlZ2FjeS10cnVuaworMTA2MzYgYWRhNDBlNjlmZDA5MzZlMzUxNmEwZDJiNzFhMWZhYmU1NzE4ZWMzMyBsZWdhY3ktdHJ1bmsKKzEwNjM3IGU0OWIzMGM2YTgwYWMwYjdmOGM3NmI4YTBhYTQyZmFlNDE3NzYzZTYgbGVnYWN5LXRydW5rCisxMDYzOCBiYmZlOTljMjc4NWM5MzcyMzJiN2UzZjdiM2ViNjVmNTE0OGZlY2E0IGxlZ2FjeS10cnVuaworMTA2MzkgYjFiMjZlMGUwYTBhZGFkM2M3MWRhYzhkOWJiOGMwY2JhYjU0YmE3YyBsZWdhY3ktdHJ1bmsKKzEwNjQwIDA1NjU3MmUwNzgxYTZhMjMxM2IyZDM0OTdkNTY3MWIxNjRlOGQwOGQgbGVnYWN5LXRydW5rCisxMDY0MSBjZTlmYzY0NTI4YTc5ZGQ5MTBlNTQ2NmM2ZTU2YmU5NGQ2OTYxZDQ1IGxlZ2FjeS10cnVuaworMTA2NDIgMTI1YmZkODk2OTY3MTYzMzNjYWU0ZThjMzQ3ZWY3YzVmZWViOGFkNiBsZWdhY3ktdHJ1bmsKKzEwNjQzIDFiYmRkODRjN2E0MDk5NjU2MzhmYzJmYWNkNGIzYTQzMzcyYjg3YTcgbGVnYWN5LXRydW5rCisxMDY0NCBhMzEzNGM2OTcwZWJiZThjNGI1ZWM3YTY5NjY4NjBiMjE2MzFhYmYzIGxlZ2FjeS10cnVuaworMTA2NDUgZWE1OWJiOTIxMzgwNTE1MTA1MTc5MTlkMTJiODgzYmMwZjRkY2ZhOCBsZWdhY3ktdHJ1bmsKKzEwNjQ2IGYzYzhmYmM3OTNmZWE1ZTdjYTg0NmViOGQ4MGQxM2IwMTg5ZWNlN2IgbGVnYWN5LXRydW5rCisxMDY0NyA2ZjVjOTM2YWUyZDIyMjgxZDFmYTIzZDVhZjI5NGVhMzg4ZTBkMzJmIGxlZ2FjeS10cnVuaworMTA2NDggMTU0NmZjNzZkMDBlY2Q1ZWZiMDIyN2ViZWRlZWQ3NDdkYjI1ZDQ5OCBsZWdhY3ktdHJ1bmsKKzEwNjQ5IGI5ZDljMGVlYjQ3YzI2MDgzNzNiYzk0OGEzZWY4MGQ1MDZmNzRlN2UgbGVnYWN5LXRydW5rCisxMDY1MCBjOWQwZDYzMWFiYWFlMGUwMjcyZTAyYTUyZjdiNDU4NTExNzQ5MjA3IGxlZ2FjeS10cnVuaworMTA2NTEgMjg0YWRkNzRmZTM3MDVlYzFkNWQ3MWQ2YWQ5MGUxNDliNTIzZmVhYyBsZWdhY3ktdHJ1bmsKKzEwNjUyIDUzNmU0MzlhNjVmOWQwYjUyM2RmOTMzZDYyZjU2NzM0ZWJmZWZhYmUgbGVnYWN5LXRydW5rCisxMDY1MyA1NzMyZWMyNDg3YzUwYzZkMzllN2RmMjc3NTJmMjFiNzE3MGVlZDkxIGxlZ2FjeS10cnVuaworMTA2NTQgNWJjOGNhMTNjZmUwMWMxODE1NTUyZDk5YjJhNzkyYTQyMWQ0YjRlNyBsZWdhY3ktdHJ1bmsKKzEwNjU1IDI2YzYyMmQzNzE3ZDIyYzcxYzdhMDhiNTc5YmI4NTFkNDgzMzNkZjcgbGVnYWN5LXRydW5rCisxMDY1NiBhOGRmMDkwYTEyYmFmNjhmNTUyNDQ0MWUyMmZiZmE5M2U3MjgxYzU4IGxlZ2FjeS10cnVuaworMTA2NTcgYTBhMGMxNDMzOGMwNzRmZDk2ZjFlNzJjYTI1YzI0MDQ2YTZiZDlhYyBsZWdhY3ktdHJ1bmsKKzEwNjU4IGVlMjdmM2E5MTY2ZjgwMTMzM2JmMzgwMTEzM2IxNjk3NGFmYTQ4YTkgbGVnYWN5LXRydW5rCisxMDY1OSAzMGZiZTMwMmM1MThmZjg0ZWE1OTU4OGE5MThlZTkxY2Q5NDFmN2VlIGxlZ2FjeS10cnVuaworMTA2NjAgNGE3ZmZjZGU0MGRjOGY3MDExZWEyMTBkNWQ3YTJkMTE1MzZjMzczNyBsZWdhY3ktdHJ1bmsKKzEwNjYxIDY4ZWU4YWJkOTc4MjhiMDUzZDA3OGRhYTI3YzkwOTI5N2E3OWRmZDcgbGVnYWN5LXRydW5rCisxMDY2MiBjNjlhZDU2NmFlYjFlNTMxZGI4MmIyNzZjZDA0Y2I5N2ZkM2VmMGI0IGxlZ2FjeS10cnVuaworMTA2NjMgZGU3ZmM2NmMwYjRmZGZhZDE1YWFlYzQwMGFmNzFlMjVmM2EwNGFlYiBsZWdhY3ktdHJ1bmsKKzEwNjY0IDZmMWRiNTM0ZGZhZTRhZGZkNGIwM2ZjMTk3M2E5MjEyZWFlYmVhNTEgbGVnYWN5LXRydW5rCisxMDY2NSAxNDIxNjVlZDg0ZDgwYmMwNTcwNjZkMGY0NTNmOGNkN2UxZWNhYmUxIGxlZ2FjeS10cnVuaworMTA2NjYgOTI5YjdlNmU3NTIwYzVkYmMwMjUyMjk1NWM5MmI4MDQzZDg1YTNkZCBsZWdhY3ktdHJ1bmsKKzEwNjY3IDc3NTgwOGEwOWU0NmI3NzM0MWMxYWI0NjcyMThhZjBmNWY4ZjUyMGYgbGVnYWN5LXRydW5rCisxMDY2OCA2NzM1ZWY2NjJmMzlkOGNjYTNlYjgyZDZkNTc3OWM1MTcyYzZjZDIxIGxlZ2FjeS10cnVuaworMTA2NjkgOTk3ZDVhMjAwMGUwNDUyNmNmNTlmMTM0NmM2NmZkNzNjODdhNDY5MyBsZWdhY3ktdHJ1bmsKKzEwNjcwIGNlMmQxMjBjMzkwM2YyNTRhNTgzZjZjYzYwMTk0YjA3ZGJiZjQ3MGIgbGVnYWN5LXRydW5rCisxMDY3MSAyNWMyYWVhNjQ1MDE3Y2ZiMTQxYzFhYTQzY2Y1ZTUxOTcwMTExNzQ0IGxlZ2FjeS10cnVuaworMTA2NzIgMzVhYTY3ZmM0ZTYwZjZmNjkyN2YzNzMzOGM1NWNiZGU1MGU4NGUxNyBsZWdhY3ktdHJ1bmsKKzEwNjczIGI4MWJmOWNhMTc5ZDNlYjZkY2Q3NzNlMDRmNGRhZTgwYmViYzk4YjQgbGVnYWN5LXRydW5rCisxMDY3NCA0ODk0ZGRkNDUyZWVjYzEyNjk3MTdjNjU3MjA0YTIyMmE3NzE4OTlhIGxlZ2FjeS10cnVuaworMTA2NzUgYjY2ODZmNzUzNzk4ZjgyZjE1N2I2MGVhYWVjMDJjYTlmZDJlZjYxNSBsZWdhY3ktdHJ1bmsKKzEwNjc2IDgyMGQ1MTBkMWRkNjBjMDE2ZTVmYTdmZGJiYWRkNTcwNWFjOGM1OTQgbGVnYWN5LXRydW5rCisxMDY3NyA4ODVkZTQ5YjQ0NWM1M2M1Nzg3MGIyM2ExMmJkMzEyOGVhOWFhYWJmIGxlZ2FjeS10cnVuaworMTA2NzggM2E1NWI0YzVlM2M3MTk5NWRiMmYzOTQ5ZmYwNmI2N2M4YzcyYzlkMSBsZWdhY3ktdHJ1bmsKKzEwNjc5IDgzYTY5MzA1Y2IwNmUxMzhhMDk3YjY4ZWM3YzYyZTdlMDUwMDc3NTcgbGVnYWN5LXRydW5rCisxMDY4MCBjMzFjNTlmMTkyYWYyMjA0MTVlYmM0NThmZWYxNmE2ZjM2ODVlNzY0IGxlZ2FjeS10cnVuaworMTA2ODEgNDgyZTRiYTMzYzA4ZjZhNjgxMmViOGRhNWYzMjM5ZDNlOGQ1YTIxOCBsZWdhY3ktdHJ1bmsKKzEwNjgyIDA1MDk2MDUyZDgyNTdhMDM3ODA4MmRhZDUzMmRmOTkyNjk4NWY3MjcgbGVnYWN5LXRydW5rCisxMDY4MyA5ZjBiYjg3ZGRlNjAwYWM5YmNkOTNhODNiY2JiOTEwNmZjOTI5NGE2IGxlZ2FjeS10cnVuaworMTA2ODQgYzI4YjA1MzhhNDQ2NTQ3ZmU3OTE4NmY3OGJiMzVlOTFmMzVmNGVlZiBsZWdhY3ktdHJ1bmsKKzEwNjg1IGQ2ZjRjMmE1MzEyYzRlMWRkM2UyYTkwYzIzMGJjMjlmYzk1YjFlMDAgbGVnYWN5LXRydW5rCisxMDY4NiBjNDI4OWI4MTM5MjRiMjc1M2MzYjllOTg0Mzk3MzMxNDdlN2RmNjYxIGxlZ2FjeS10cnVuaworMTA2ODcgN2VkMTA3YWY5ZmY0OTUyMjBmZGNkNGRmMDRjYTNmMWZhNDBkMDBiOSBsZWdhY3ktdHJ1bmsKKzEwNjg4IGI1NDk0OTY5MDA3Nzk3NDQzM2RjNDc5MDJiMWZmMzFhZTZkZTMyMjAgbGVnYWN5LXRydW5rCisxMDY4OSBlMjY1NjkzZjA3OTAyMDc3MjQxMjJiMDg3ZDdiZjMxZWFkYWM0Y2RiIGxlZ2FjeS10cnVuaworMTA2OTAgMzRjY2E4MzJhNGFmZTM4OTEyNjBkOGMwNWM3YzM2OWM4ZjhhNTA5MCBsZWdhY3ktdHJ1bmsKKzEwNjkxIDBiN2YzYTkzMjA4NWMzNDIyMGU5OTMzZDQxZDAzMTA1ZGEzMzc5YWEgbGVnYWN5LXRydW5rCisxMDY5MiAyMDNlMmFiNjM5MzZhMjVmZTJiMGExZjY5ZjA1ZTY3YmMxOWYyOTY5IGxlZ2FjeS10cnVuaworMTA2OTMgMTVlYTE1ZTBjYTJhYjg1OGVmNDk0NzU5NDQwM2U2N2EwYWNhNTIxZCBsZWdhY3ktdHJ1bmsKKzEwNjk0IGE0NDRjZDgzNWMwZTA0NjU3MWVhMDNlNzc3NmY2OTVjN2RlNDM5ZTUgbGVnYWN5LXRydW5rCisxMDY5NSAzMGMyMzg1Y2EzODkzYTBiOTJiYWFkNTIzMDI3MGI0NjUwNjMxNTViIGxlZ2FjeS10cnVuaworMTA2OTYgYmMyZTliNGViOGRkNTg0NzIzNjU0Yjk5ZWJiMDE4ZGI1OTkzZGQ4NyBsZWdhY3ktdHJ1bmsKKzEwNjk3IGYzMjA4MDBmMGZhNTVhZmU3ODllMDQwMjFhZThjOGI1ODIzMjdjZWEgbGVnYWN5LXRydW5rCisxMDY5OCBhMTk2NjEwNzY1MjlhOGFmMWZjM2ZmYWQzZmI0M2UzOTlmYzc5MmUxIGxlZ2FjeS10cnVuaworMTA2OTkgZjFjOTYwOTMxNDEzMTkzMzgxNWRhYzQ1ZDkyOWVkNjdlNDQ5NzM4OCBsZWdhY3ktdHJ1bmsKKzEwNzAwIDMyOGQ0NmM0NzNmNGVjMGUyYzBmZDBiMzJiZDlmNTAzODU4OWJiNGEgbGVnYWN5LXRydW5rCisxMDcwMSA5ZDU0YWFmMDE2M2RiMGViNTA1YjIyYWFkY2E2ZThhZDQ5MmQyMzFkIGxlZ2FjeS10cnVuaworMTA3MDIgNmEwODdhZTE4MGJhMzU4YTMxZWJkNzkxNzBhM2RjODMxZWVhNTc0NiBsZWdhY3ktdHJ1bmsKKzEwNzA0IGU4MzRhZTczZGVkZGYyYmMwZjc2ZjkwYzJhMDU4ZmMyM2MxNjVkMGEgbGVnYWN5LXRydW5rCisxMDcwNSAxMzYyYzkxZWZjZDI3ZTI2NTJhZmZlOGVmYTQzZDVmMmJhOTNiODgzIGxlZ2FjeS10cnVuaworMTA3MDYgNWUzOTRhMDdhM2E0ZjEwMWU5ZjQwOWZjMjFiOWQ0Y2RkNDg2ZDI3MSBsZWdhY3ktdHJ1bmsKKzEwNzA3IDlmYzJhZjllNTg1OWEwYmEwNzA3ODNmYjA3YWE5ZjM1YzM5N2FjYzkgbGVnYWN5LXRydW5rCisxMDcwOCA2OWYyZTA1Y2MzNzhlZDM1YjFjNGUwNjkxN2E3M2Q4OTg4YTk2ZGMwIGxlZ2FjeS10cnVuaworMTA3MDkgNGExM2E0ZDI1ODhiMzBkYjA1MWYxYzQ5OGE0ZTQ4ZjRmYTBjMTAwNyBsZWdhY3ktdHJ1bmsKKzEwNzEwIDlkNjQyYTczNWExMzI3ZDFmZmFkMzYyY2U5MDdlN2QyYmY5ZWQwZWYgbGVnYWN5LXRydW5rCisxMDcxMSBkZjc1MmMwOGI0NjIyMDQ0MmZiYjdmZGFmY2RhNGNkNmQ0ODU1MjRhIGxlZ2FjeS10cnVuaworMTA3MTIgODVhOGFlNmRlMjc4NTg0MTczNDRiYTRlYjcwN2ZkY2I4Yzg5ODRjOCBsZWdhY3ktdHJ1bmsKKzEwNzEzIGExMDNjZjZkMzg0NWI1NThhYzdlZWMzN2VmMjcwZDlkNWE0ODFmZTcgbGVnYWN5LXRydW5rCisxMDcxNCBlY2RlOGE0NWQ0MjUxMzE4ZGI3NDM3NmE5ZDI2OTI5MzhjYTM4OTI5IGxlZ2FjeS10cnVuaworMTA3MTUgMGVjOWRjOWQyMDFmMmYxNDQ1NTI5OTIyZDgyZWFmMWNmMWYwZWRhNyBsZWdhY3ktdHJ1bmsKKzEwNzE2IDQwNmRkMmIzNjc5Mzk1OTdjZDFiMWU0MWQ1N2IwNDE4MjAwMjdlNWIgbGVnYWN5LXRydW5rCisxMDcxNyA5MzA2ZjU4Y2RiYTVhMWRhMjRjMzA1YjUxNjcyMDdjYTJjY2RlODNjIGxlZ2FjeS10cnVuaworMTA3MTggMTQxMThiNTc2NzFlYzRhYTliOTQ0ZjBkOTA3Y2I1ZmE5MmNmZjQzYSBsZWdhY3ktdHJ1bmsKKzEwNzE5IDI0MDNlOTJhNGE2YzA4Yjk1MzE3NDY0ZGUwYmY4OTc3OWY3NDA4NDkgbGVnYWN5LXRydW5rCisxMDcyMCAwN2MwYTMzMWMyNjkyMmJlZjI4MTlkMzA3NjE2NWFlODVhZTNlMGJmIGxlZ2FjeS10cnVuaworMTA3MjEgM2JlMWFkOWE4NTg3ZjM2ZmEzY2NlNTk5MjI2MTlmODY5ZTZmMzkwMiBsZWdhY3ktdHJ1bmsKKzEwNzIyIGRlMmZmODlkNmQ0YmVmMmI1ZjllZThhZGVjMDRjMWQ2ZDFlY2M0MWUgbGVnYWN5LXRydW5rCisxMDcyMyA0MDMzZmViMjZkYTg5OWE1ZTIyNzBmMjNhNGNkM2Q3NmRjNGJjM2E1IGxlZ2FjeS10cnVuaworMTA3MjQgMDc5MmRjZGU4ZTMxMWQ5NmYxOGMxMTY5ZjVjMDY3MzQwNjFmZGJjOSBsZWdhY3ktdHJ1bmsKKzEwNzI1IDc0ZWRkNWNkYTlmZDljNTQ5MWU0ZDhhYzgzY2IxMmQ1ZDJhNjFkOGUgbGVnYWN5LXRydW5rCisxMDcyNiAxMDUyYjBiMmM2ZWEwZjUwNjkwY2Q0NGEwOTU1N2IxNjk2NDExNzM0IGxlZ2FjeS10cnVuaworMTA3MjcgMmZhZWI3MmJiNjRhMTljOTE2YmZmNDg5YWE1ZjY5NDJjMzdkMzFlZCBsZWdhY3ktdHJ1bmsKKzEwNzI4IDg1MjNlY2FmNTljNTY5YTkyMzhkYzMzMTVlZWVkMDcyZTIxMjdkYzAgbGVnYWN5LXRydW5rCisxMDcyOSA3MzU2ZDQ4ODhhOGJjYTkzNDQwZTI5YTc5ZmI1OTVhZmNlYTJkYzJjIGxlZ2FjeS10cnVuaworMTA3MzAgMjQ2YWNhZDljODkzZGJkNmU3OWNlMTA5NzMwYzgyMzQ3YjU2ZjYyMSBsZWdhY3ktdHJ1bmsKKzEwNzMxIGFiMGQ1ZjI2NWQ1NGU5OGYwNWQ4Yzc5YzBmZTJhZWEyOWVhYmFiMzIgbGVnYWN5LXRydW5rCisxMDczMiA1MGQzNWJkZjIwNDJkZTIwYzZlN2FhMjFmMWI4OGY0MmM4N2ZhOTU3IGxlZ2FjeS10cnVuaworMTA3MzMgMzdjM2VjNGYzZDNmOWE3M2Q3NjhlZWMwNDQzYzc2ZGU5ODVjNWQyYSBsZWdhY3ktdHJ1bmsKKzEwNzM0IGZjMzM1MGFlNWYyYTk1NjcxZjQ4NTU1YjQ4NmQ3ODhjMjkwZDk0NWEgbGVnYWN5LXRydW5rCisxMDczNSBiYzUwZjVjMjBiYzk2MTU5ZDhkMjU4YmFhMDkzOGZhNDE3ODgzMjMxIGxlZ2FjeS10cnVuaworMTA3MzYgMTAyNmQwMzNjMGRkOWEyYThkYzcxMmU1YTM0ODY4ZWZlN2Q4ZDU4YiBsZWdhY3ktdHJ1bmsKKzEwNzM3IDEwYzYwOWZlN2RlYmM4Yjc4NGVkOTcxYWJkNGFiZWUxMmIyNjFkMGUgbGVnYWN5LXRydW5rCisxMDczOCBhOGMyMWFjY2JlY2RiOTI1ZDFlMjMzMjMzMjE2NmViYWFhMDdiYmZmIGxlZ2FjeS10cnVuaworMTA3MzkgMTA3YTg1MjViZjVlYjVmNjBkNTJmNDNkMWFkZjRjMTI0ZDkyZmFiNiBsZWdhY3ktdHJ1bmsKKzEwNzQwIGViODM1ZWQxZjZmZTgzN2E4MGMxYjVhNTU3YjRiYWQ5ZDVkY2NjMzEgbGVnYWN5LXRydW5rCisxMDc0MSA5YjA3ZDI3YTMxYmQ3OWE1ZDRkYzU2NzAyMTlmZGMyNjAwZmEzNTNkIGxlZ2FjeS10cnVuaworMTA3NDIgZDgzZjFiY2JiMTUwNWM2YzhiN2NhYjZkZjBiMGUyOWE5ZTE0MDRiZiBsZWdhY3ktdHJ1bmsKKzEwNzQzIGI4YmE4ODg3ZDU5ZjdmNmJjYjBmMTU2MzBiZmJkNTBmMTI0Njc4ZmEgbGVnYWN5LXRydW5rCisxMDc0NCA4YjgyMjA4MzcyNmIxYzZiMzZkNjkwMDczYTk3ODcxYmYxMTYzYjczIGxlZ2FjeS10cnVuaworMTA3NDUgYjRkM2QxYTA4ZTRkYWU2MTkzODRhZGVjOGM1YzI3YWFmODgyYTBlMiBsZWdhY3ktdHJ1bmsKKzEwNzQ2IGNlMWVkN2ViNzc1MDc3OTZlMTgyYjAwNDZkN2IwOWIwNzY4M2UwYmUgbGVnYWN5LXRydW5rCisxMDc0NyAwZDNiNzNkOTk1ODg4ZTliOWM2YzI1OGUwZTEwZjlkMmY3ZWU1ZDI5IGxlZ2FjeS10cnVuaworMTA3NDggZWE0YjdhNTRmZDkyZmM0ZGE0NDljNWExZmE5MzJjMjVjMmU1MzYzYSBsZWdhY3ktdHJ1bmsKKzEwNzQ5IGMzNDU3ZmIxOGE1MTA3ZjZkMDdkZDUxOWI4Y2ZkZTIyMjBlODM3MGQgbGVnYWN5LXRydW5rCisxMDc1MCBlMTg0ZjgzYmJiNzk3ZDRjMDdkNTNiZjk4MmMzOTQ1MWU2MzVjZTkzIGxlZ2FjeS10cnVuaworMTA3NTEgM2Q2NWY2MTZmOTNlNWU0NTJjMDZlMTY4MmEyZDhmZjQzZGRlZGE1YSBsZWdhY3ktdHJ1bmsKKzEwNzUyIGFhYTFjOGI1MjlmNTI1ODAxNjU4YjBiZWVmMjBlOTYyNGEzZGExMmIgbGVnYWN5LXRydW5rCisxMDc1MyA2NmEyZWE2M2I0ZDg1NzhhODRkOTE2Y2RiYjBkNDNhN2NjMzc0ODIyIGxlZ2FjeS10cnVuaworMTA3NTQgZTQ2OWE4YWYwNGIyMWQ0ZmUxNGZhZDA0MDhhODE3YTI5OTgxZDVmMiBsZWdhY3ktdHJ1bmsKKzEwNzU1IDJkZDg5MGFmMTg3ZTEwNDQ2OTcyZTBkZDgyNjU0NDU0MGQxMGY4NzMgbGVnYWN5LXRydW5rCisxMDc1NiAxZGI0MDk5YTcyY2U4YjA3OWMyMTA0ZDdmN2FjNjljODMyN2Y0NjY3IGxlZ2FjeS10cnVuaworMTA3NTcgN2IyNTAwNjU3OWY0Y2ZjMjVjNmQxMDk5OTE3MWMzNzA1ZjgwMzY1OCBsZWdhY3ktdHJ1bmsKKzEwNzU4IDcwNzY1MzFlZmI4ZmRiMzNjZTZjZWY0NTBmMzM2OTc1Y2VkYjY2YjkgbGVnYWN5LXRydW5rCisxMDc1OSBkODFmMzE2MTU2N2I1ZmYxNzVjYTY4OWYwMjllOTI1MzQ4ZjI5NWI0IGxlZ2FjeS10cnVuaworMTA3NjAgYzdkMGI5NzFlMGUzOTI1YTM0NWVkZDk4MTg0YmE0ZGJiZDBlYzc1YiBsZWdhY3ktdHJ1bmsKKzEwNzYxIDM1ZDFjZWVkNjliOWVhZWZhNGU0ZjllMzAwYzdmZDEwYzg5NjlmNjUgbGVnYWN5LXRydW5rCisxMDc2MiA2MzFhMTU5Y2YwNDBiMWE5YjMzNTBkOTkzZWEwNTM4Y2ZiMjY1MTNkIGxlZ2FjeS10cnVuaworMTA3NjMgMmIyZDIxZWZjNGQ3MTVlMTliMDgwZjI4ZDZhY2YzNzljYTkwMDYyOCBsZWdhY3ktdHJ1bmsKKzEwNzY0IDY1ODhhZGUwZWZiNzc0ZThiYjhkZDJkZGQ5N2IzOWJhNzFhNTVhMDcgbGVnYWN5LXRydW5rCisxMDc2NSAzODE4YTE5Zjc0N2YwYTg4NGM0ZWYzOTA0OTdhMmE2MDcwOGM5MGFlIGxlZ2FjeS10cnVuaworMTA3NjYgZjgzNGUxOTdiZDE0NmRhNzI4ZTk2N2RlYTVjOTI0MWIwNDI3YzkxZSBsZWdhY3ktdHJ1bmsKKzEwNzY3IDMyYmMxN2Y3Yzc3YmNlN2EzNTU1NmFmOTQ1MGUxMmNhNWQ3NDA3MGEgbGVnYWN5LXRydW5rCisxMDc2OCA0Yzg4Y2M2MmU5ZTkwYTg0MzRmMDc1MGUzNzllNmVkNGE0OTY1Y2I1IGxlZ2FjeS10cnVuaworMTA3NjkgZDNiZjNjMmFkNzVhOWZlNmU1OTU2N2JjMGE4ZWU4YzhiOWM1ZWJmMCBsZWdhY3ktdHJ1bmsKKzEwNzcwIDZlZDhhN2ZmYzU5NTM3MDRhYjhmNDZiZGU4ZGEyZGVmNGFjYTQxODUgbGVnYWN5LXRydW5rCisxMDc3MSA5MjgxYjVkMzU2NDFhMGMwNWNkODBmZTAxNGJkMjkzMDQwNjc0NzdhIGxlZ2FjeS10cnVuaworMTA3NzIgNzRhOTEwYjg2YjQ0M2QzNTI1OTVlZjAzZmY3N2ZhMDVmZTg2M2E0OSBsZWdhY3ktdHJ1bmsKKzEwNzczIGY4YTM4OWIxMDRmMDkxYjJmNjNhMTZiM2M4NjY4MGRlOTMwZWQ5NTEgbGVnYWN5LXRydW5rCisxMDc3NCBmZjYzMTA3YzlmYTVkNzhmZmM4NGNhNDJmMjEwMjE2ZmQyNWY1ODMxIGxlZ2FjeS10cnVuaworMTA3NzUgZjJiYjhkNTE5NWI2Njg3NGE1MjM3MmI2ZjJjNzhjY2MyOTI4Y2Y1NiBsZWdhY3ktdHJ1bmsKKzEwNzc2IDM1ZWEwYzA3M2VhM2QzMTE1NDg3ZjZiNzNiMDgxMTkxNzdlNjU1ZWUgbGVnYWN5LXRydW5rCisxMDc3NyBiNDM4OTg2YjNjMDhkODNjMTMzZDZhZTg0NjFmNzM4Njg4MDdmYTc0IGxlZ2FjeS10cnVuaworMTA3NzggNWRkNmYxZmY2NmJjMDUwOTk1MjA2MWQzMTdjYWNkMGYyNGJhNjNmMSBsZWdhY3ktdHJ1bmsKKzEwNzc5IGJmOGU4NmI5NWM5MjI2YTU3MDk2MTExYjI3MTM3OTM4NjkwYTA2YWEgbGVnYWN5LXRydW5rCisxMDc4MCA5ZGQ3OWQwMTA0ZDk2ZjRhNTg4ZTZmOGIxNTU4ZmZmZDFlOGQ4ZDIxIGxlZ2FjeS10cnVuaworMTA3ODEgNGMzYzEyZTk1NmE3NTU4NWI3MzRkMDY2NzMxYjI3ODViM2UzYTMyMyBsZWdhY3ktdHJ1bmsKKzEwNzgyIGUzZDIxYzRjYTM2MmZkMzA5MDc2ZmEzM2VlNmJhYjRjODkyODBlOTYgbGVnYWN5LXRydW5rCisxMDc4MyA4YjUwNzUxZjI3MmM4NGVlODQ2OTQ2OTdjYjVkYjRiNjFiNjhiNTIzIGxlZ2FjeS10cnVuaworMTA3ODQgZDNmM2EwNTY4YmQ2YTA4ZDA4M2Q3YzQzNzFmNjZkZTQ0YjliYWMwNSBsZWdhY3ktdHJ1bmsKKzEwNzg1IGI1OWI5OTQyYmFjOTYxZWNhNWRiMzdiZTVlYWZiMjlhYmYwZTJkYWQgbGVnYWN5LXRydW5rCisxMDc4NiA2MjNjNDU5ZjhmYmVkZWI3NmRmMGQ0MzU3ZWU2ZTlkMTAyMTUxNTcxIGxlZ2FjeS10cnVuaworMTA3ODcgMGQyZDYxZjUyYjljNTJkNjFlOTVlODI1OWNmMDAyNjQ4NDdiNWYyMyBsZWdhY3ktdHJ1bmsKKzEwNzg4IDQ2NzRjZDJmNmYwNzJiY2U4ZGQ3YWQzZjVhYjJlNjU0ZjkyNDA3MjcgbGVnYWN5LXRydW5rCisxMDc4OSAwOGRmOWNiNTczYWRhYzgxNTY5MDIyOTQ0ZjYwYmJmMWI4ODQ0MzkyIGxlZ2FjeS10cnVuaworMTA3OTAgZmUxZmQ1NmNhZGE3MDIwMDJlY2E1MGU2ODIzNjc0MWY0YzU4N2E2YSBsZWdhY3ktdHJ1bmsKKzEwNzkxIDQwNzA4NTlmZTYyZWVhNDA4NDFlNTc0NjU5YjVkODgwYjIwNWMyNzYgbGVnYWN5LXRydW5rCisxMDc5MiA0MTQyNDdkNGZlZDczYTNiZGIzMmNkYmRkMjc1ZjRkNWZiYzg4NWViIGxlZ2FjeS10cnVuaworMTA3OTMgZjRmYzlkMThhNTNkNDczMzgxNDhiOTE0NDkyNjcxZWNhN2RiOGJjYyBsZWdhY3ktdHJ1bmsKKzEwNzk0IGQ2N2JlMTNkYTNjYzE4ZTQ5NDRkZmE4NzU3YjIyYjBjZDMzN2U5OTMgbGVnYWN5LXRydW5rCisxMDc5NSBjNjIzNjBhYTVlYTQwYWFiOGI5YWVlODdmYTRkOGFkMzAxNThhYTcyIGxlZ2FjeS10cnVuaworMTA3OTYgZjk0ZDVhZTY0MmE5YjFjZGU4ZmViMTA3MmY5ZGY1YzJkYWEyZmVkMCBsZWdhY3ktdHJ1bmsKKzEwNzk3IGU0MmI5NDI3NTY1MmI5ZDU4MWJhNDY2MDdkNWViOGMzNTgxZjcxMTQgbGVnYWN5LXRydW5rCisxMDc5OCA2M2NjZTlkNzc3OTc2MjJlNTk0NTczYThjOGQxYzIyYTY2YjU2MWRmIGxlZ2FjeS10cnVuaworMTA3OTkgODEwNTc5OTZmZjIxZDFjNGFmMmIxMjk5MzFiODU1NTY0ZTJjOTdjNSBsZWdhY3ktdHJ1bmsKKzEwODAwIGVjODdiNjI0NjZkM2FhZDRhNTEzZjNlMmE0YzNmZWExYmIwZDM2ZmMgbGVnYWN5LXRydW5rCisxMDgwMSBkZjQwM2VkMzViZGRlMDBhMGUyN2M3ZTU2YmU5ZDc1MTQ1ZWZlYWE5IGxlZ2FjeS10cnVuaworMTA4MDIgYzE0ZTY4ZjU5MWNlMzA1YmQ4ZGRjZjM4NGM0NWZlMmEwYWIwZTNiOSBsZWdhY3ktdHJ1bmsKKzEwODAzIDlkZGQ2NzkzMTlhOWQ4MTAxNGM1MzliZmNhMGU4M2NjNDM5OWRlZjMgbGVnYWN5LXRydW5rCisxMDgwNCBlNmVmMGUzOWUzNWNlZDhkNjk2MmQzOWMxMDk1N2Q4YmY5YWQ5NDZhIGxlZ2FjeS10cnVuaworMTA4MDUgZTEzOTIxMDUwMzI3ODNjNTg3MmIxNDdkYmVjOTI5YjFmOTI5YjdkNiBsZWdhY3ktdHJ1bmsKKzEwODA2IGM0OWM4ZjdmZGZmMTg2Y2UxNDNiMjI0Y2Y3NjRjNDllOGYzMjk3MjggbGVnYWN5LXRydW5rCisxMDgwNyBhZjExZGJmMzVlZTVlOWZhOWFmNDE4MGE3ZTc3YjJlMmMzMjczNjMxIGxlZ2FjeS10cnVuaworMTA4MDggYTIzYjc1MTM4YmIwZmIyM2ZmYTM0MjQ0YjBjNDExNTJjMGZlNzM0NyBsZWdhY3ktdHJ1bmsKKzEwODA5IDE4OTc3NDc3MzhmNTk4ZmEzMWFlNzE4ZDUyN2IxNzJiY2YxZjcyMmUgbGVnYWN5LXRydW5rCisxMDgxMCA0ODI0MGY1MjVlYzNiZTU4M2M1OTViYTlkZDZlMzQxOTIyYTY1ZGE1IGxlZ2FjeS10cnVuaworMTA4MTEgY2Q4Mjg0NjJhY2JiODJlYzA5YjAwOGRlYmI0ZDBhNDE5NDM1NjBiNiBsZWdhY3ktdHJ1bmsKKzEwODEyIDdhMWU3ZGE5MjJmODcwNTcyYjk4NDMyYjU4MGIwYTVkZDBlY2I1Y2UgbGVnYWN5LXRydW5rCisxMDgxMyBjNTliNTczNmYzMDdmMzUwZTFhMDdiM2M5NWU3NWI2ZGU0ZDBlZmQ0IGxlZ2FjeS10cnVuaworMTA4MTQgOTY3OWU3N2Q0MmUzZDU4ZWFkYjgxOTFjODcyYjVmMzJmODBjYzQzZCBsZWdhY3ktdHJ1bmsKKzEwODE1IGE0YWU3OTJiOWI2ODAyYWQyMGVmYjAzNGRmN2Y4YmIxZGJmMjVhNTggbGVnYWN5LXRydW5rCisxMDgxNiA1YmZiNWVkYzMxM2NiNjYyMTMwMjUzYjdkZWQ2OTZlZWU0NmU4OGUzIGxlZ2FjeS10cnVuaworMTA4MTcgYmYxMTI2MjAyNmJkZjc1MjQ0YzRjYzU4NmM3MzE2NjdiMDMwODI0MCBsZWdhY3ktdHJ1bmsKKzEwODE4IDZiNzA5NWI5OGU1NGNhNWIxMWI3NmU0NDYwYjE2ZWMxYmRhZGQzNjkgbGVnYWN5LXRydW5rCisxMDgxOSA4ZDkwZTc4MWFkYThiYzBhOWIwZGY5MDJiYWZkMzZlMjcxNGZmMjEyIGxlZ2FjeS10cnVuaworMTA4MjAgNzY1OGM4YTE0OWQxODViMzRiYTBhYTA4YmYzZTZjMjE1OWY2MmZiNCBsZWdhY3ktdHJ1bmsKKzEwODIxIDI4ZGFlOTFjNWQwY2NkZmZkMzQzMmRjMDA1ZTAwNzA2ZDIwMDZkZWIgbGVnYWN5LXRydW5rCisxMDgyMiBhODRmNjU4ZDRiYTRjZWNiMjJjNTJlODQzYmYwOWQyMWJiNzVkYjk1IGxlZ2FjeS10cnVuaworMTA4MjMgZWJmZGUwNmZkYjhkOGNkOWRmNWU1M2JmMDMwMzZkMGZjNjhjNzNjOSBsZWdhY3ktdHJ1bmsKKzEwODI0IDIyODE1YTBiMTI2NzU2ZTQxZDgxNDAzZjU1NGZlY2JlMDY1OTUzZDYgbGVnYWN5LXRydW5rCisxMDgyNSAxYjRhMzdmMzczNDUwYWRlOWIyMWUyMGZlZGJmMGNmZmM5NWFjMDI3IGxlZ2FjeS10cnVuaworMTA4MjYgZDJkODJmN2I0MTlhNjAxMWRmYjNmNzIyZmU2NmRkZGI5ODJhNmVlOCBsZWdhY3ktdHJ1bmsKKzEwODI3IDA1MTk2YTRlNTQ0OGJmOGNjNWJjNTVkZGZiMGZhMjViOTE2MDFkNWYgbGVnYWN5LXRydW5rCisxMDgyOCAxYjM5M2RiMDBiMWFiOGNiM2VjZjBiZGM4NDQxMzdhYTlmYTUyNGQ0IGxlZ2FjeS10cnVuaworMTA4MjkgZTdkZDk5MWZhYTRhZjE5MGMwOTdmNDYwY2U4MGEyYzFmMDA5MzAzMCBsZWdhY3ktdHJ1bmsKKzEwODMwIDhkOTM3M2JkODM4NGRmY2M2N2RiN2JiNmE1YWJlOTFmODljNGI2ZjMgbGVnYWN5LXRydW5rCisxMDgzMSA0MTcyZGE5MTQ0MWFhMGY1NjQyYWU4ZjFkYzY1NjM3NGYzMmQ4NjFhIGxlZ2FjeS10cnVuaworMTA4MzIgNTJjMzM5NTI0NjBhOGY0NDdhMmQ5YTRhMTA5NjAxMGJiODJkMTUzNyBsZWdhY3ktdHJ1bmsKKzEwODMzIDI1M2JmY2I2NWI3NzM0M2FhMWE4NjA2ZGI1MjdmZjNhZGJkMzEwMGEgbGVnYWN5LXRydW5rCisxMDgzNCBjNTcxNTU0MTM0ZDE1MDUxNzI2OGIxODA3ZTA1ODQzMjRkODdlZjljIGxlZ2FjeS10cnVuaworMTA4MzUgYzg5MTkxYzJlNjNmMDIwOGY5MDFmY2UyYmJjYWI5MjFmMzQ2ZTliZiBsZWdhY3ktdHJ1bmsKKzEwODM2IGYzMDg5NjFiMDNkN2Q1MWRlZjlmODhmZTAzNDc5YjlkZmQwMjAzZjEgbGVnYWN5LXRydW5rCisxMDgzNyAxYmMwZGY5NmI0ZGRjM2U5MDZmMWQ3YmMxYTgyNGEwZjE0N2QzMGJlIGxlZ2FjeS10cnVuaworMTA4MzggYTc0MjNlNjhjZWU5NDc0MWY2YTU5ODliZDU3ZjNiMzc3NTE3OTExNCBsZWdhY3ktdHJ1bmsKKzEwODM5IDgyMGYwNmJiNDFjN2Y1NmY1ZjU0NGE1ZTY5Y2EyNjRmZjNmOGViMzAgbGVnYWN5LXRydW5rCisxMDg0MCBkYTRiZGNlZWFhZDdhNzY5ZDM2Y2E2N2E4NWYxN2VlNDk0NzdiNDhjIGxlZ2FjeS10cnVuaworMTA4NDEgNzM5ZDVmZGFmYzMyZWIyYTYwOTdlNmE1ZTNjMzU1MzZmMjU5ZmI5MiBsZWdhY3ktdHJ1bmsKKzEwODQyIGUwNzQ2YTBkYTczNjJiMDMyZGU5NjVmYTdjNTBkYjFmNGVmOTA4NzggbGVnYWN5LXRydW5rCisxMDg0MyBlODBkNGMzZGJiNzg3YzhlNWM5NDlmOWY5NTNiMDk1ZWMwNWEzYjE0IGxlZ2FjeS10cnVuaworMTA4NDQgZTQxMjExYTdhZWYzZmE1MTFlNGE4ODI2NzEzYTQ2ZTVjZmNjZDVlZiBsZWdhY3ktdHJ1bmsKKzEwODQ1IDUyZDdhOWU3MTIyMTUyYTlmNzdhM2IwNzRhMmNlYzliNTNiZDJiNmUgbGVnYWN5LXRydW5rCisxMDg0NiA0NTViMjI5NDU0ODJmZjBmNDY2MWNlNWY5ZGQ4Yzg1NGJmZmQ2YWJkIGxlZ2FjeS10cnVuaworMTA4NDcgNWY4M2Y5N2FhZWI4ZTE5MjM5MGMxNjUxN2ViMDZjZTg0MGY1ZDY3ZCBsZWdhY3ktdHJ1bmsKKzEwODQ4IGUxN2EwMTlmOTM5MGY3ZjUwZGZlYWJiZWI4MWUyNjUyZWQxOTAzZjMgbGVnYWN5LXRydW5rCisxMDg0OSBhNDY0ZTljOTg1ZjhlNWJmOWRjNTFiZWRlZTJiZTMzNjIyNTJmZDY1IGxlZ2FjeS10cnVuaworMTA4NTAgMWM3YTgyZDQ2OWUwNjcxNjdhZWZkNmFhMjhhNTQyZTg4YWFmNjhhNSBsZWdhY3ktdHJ1bmsKKzEwODUxIDY1MGJkMTNiZWM5MmQxMTNmZjQ5YzkyM2FjMjk1NDVhNzdiMDY0ODMgbGVnYWN5LXRydW5rCisxMDg1MiBmMmIwODU5ZmVjZTNiYmU3ZjU5NzAwMmI2NjhmNTNkZWUwNDllNTEzIGxlZ2FjeS10cnVuaworMTA4NTMgYTY1OTMwZjVjZGRiY2RiNWY3MmViMTE0ZmJiNDFlZjAyMjdmY2YyOSBsZWdhY3ktdHJ1bmsKKzEwODU0IDZhZDdjMTY1NmQxOGI2OTM0MTlmYzA5ZjE1MWJlOWQ0MTdiM2E2YWUgbGVnYWN5LXRydW5rCisxMDg1NSA2YzgyNmVlM2U1NTM4ZTQxMTU4YzhmYmZiYTc1Mzg2ZGMxMjA2NmI3IGxlZ2FjeS10cnVuaworMTA4NTYgYTFiZmU1YmM2ZDhlYTgxYTQ0MzhjMDc1MGYyYWExZDk3NmJiMzUyMCBsZWdhY3ktdHJ1bmsKKzEwODU3IDI0MmIzYzljNWJlYzI3M2JhOGFkOGUzMzdhNGZiMjZhOWQ2OGUxMWQgbGVnYWN5LXRydW5rCisxMDg1OCA3N2MxZjExZDBhOGFmY2FmNzA4OTAxZDg2YWZhZWI0MmIyM2M5ZWYxIGxlZ2FjeS10cnVuaworMTA4NTkgOTVmN2M1MmI2Mzk5NDc3YzIzNDdmODFlNzQ5MTE4ZTAyYmJlMGJlYiBsZWdhY3ktdHJ1bmsKKzEwODYwIDdhYzE1ZjFlNTMwMjEwOGY0ODMxNjViOTc5ODg5Njc0YzA2OGY5ZWMgbGVnYWN5LXRydW5rCisxMDg2MSBmNWViY2M3YTVhYjI2ZTFmNzEwNTU5MjlmMTc1OTY3Y2JlYTcyM2IzIGxlZ2FjeS10cnVuaworMTA4NjIgY2QyZGZlZDBjNDRiNTNhNDhjMGZhNTIxY2IxMWFkNDMyN2ZkYmI2NiBsZWdhY3ktdHJ1bmsKKzEwODYzIDgyMmUwODEyZjIwYzM1NzJkMGU1NjQ5MmQ2NmE2N2FjOGFhN2RjMDIgbGVnYWN5LXRydW5rCisxMDg2NCAwNTgxOTBjOWE0ZjEyNmU4OGY1YTQ5YTgwYzEyNGY5N2YxN2ZhYjlhIGxlZ2FjeS10cnVuaworMTA4NjUgOTFiYjVhODA5NDgxYTJiMWM5NmZmNWMwNzMyZGQ2MGE1M2NkZTA4NiBsZWdhY3ktdHJ1bmsKKzEwODY2IDc1MmI5ZjU1NTc4OGMwMjc3YzE4MTA3NzIzM2MyZTQ0YmFjYTc2MTkgbGVnYWN5LXRydW5rCisxMDg2NyAzYTMxMDAxODQ5NDk4ZTM3NGMwMjQzN2YwNjgyMzk2ZjUyOGE3NWI1IGxlZ2FjeS10cnVuaworMTA4NjggZDZiODYzZDFiZWI5MjQ0YWNmYjc1YzJmZjUyZDQzNDFlYzE4MTcyMSBsZWdhY3ktdHJ1bmsKKzEwODY5IDhlOWQ1ZTUxMDNmNWRjMTc1YjFhODZiZjlmYTcyYzJiMGQ4MTJlM2EgbGVnYWN5LXRydW5rCisxMDg3MCA3M2EyNTc3OWU4MzcyZTExZTAwMDAzZmY3NWI0NzgxNTUzYmExYjVjIGxlZ2FjeS10cnVuaworMTA4NzEgZGU2OGY4M2MxNjljYTY4OGU1Mzg5MjJmN2Y0MTc0OTkwNTA4MTZjOSBsZWdhY3ktdHJ1bmsKKzEwODcyIDc2Y2QwMzk3OWZjYTQyM2E4NzFmMDQ5NjVjYWU1Zjc5YWJlZmEyZDIgbGVnYWN5LXRydW5rCisxMDg3MyBhNTgyZDcwZTMxMmZlZWQ5MGE5MDczNDk5MGFmN2FmZTcxMDU1OGZiIGxlZ2FjeS10cnVuaworMTA4NzQgZWY5YjkzYjJhMGZhYTMzMGI0ZjNiNzdiZTAyNGFkNDJiZWY2NWE2NCBsZWdhY3ktdHJ1bmsKKzEwODc1IDc2NjlkZGYwZTdkNDk1MGE3Y2E4ZjNlODNmNjU2ZGVjMGQ2YWIzYmUgbGVnYWN5LXRydW5rCisxMDg3NiA5M2FhMDhjNzdlNjBlYjJiZGZlZGVhZTM5YjdjMmQ3NzczOTkyZDY0IGxlZ2FjeS10cnVuaworMTA4NzcgZDdjNTY4ZTc3MDdiZjE3OThkNDVkMjYxMDUzMzZhMDUzZjI4M2UwOCBsZWdhY3ktdHJ1bmsKKzEwODc4IDc5MDcxYTRlMGVjYWI2MzE0M2U5ODNmYmJlZWE0YzdkOTkzOTVkNzcgbGVnYWN5LXRydW5rCisxMDg3OSBjOWI3ZTkyNmZkODY5OTVmMTgxMDYzNTI4MjJkMGJiYmI0YmU5YzYxIGxlZ2FjeS10cnVuaworMTA4ODAgZmYzMWYyNTAxNzQyNTM1MmMzMWZkODI3Y2JiMGQyODgzNmM3NDUyMyBsZWdhY3ktdHJ1bmsKKzEwODgxIDRlZjdkMjYwZmVhYzkzMWVjMThiNzlkMWQzNTFmYWJmNmU1YWE0MzMgbGVnYWN5LXRydW5rCisxMDg4MiA2MjcwYzZiYWQ4MTE2ZmUxN2E3ZWQ0YzgxZDUyOWYxZDBhYjQ5NzBiIGxlZ2FjeS10cnVuaworMTA4ODMgNzBmOTNlMGM1ODBlZWNhZmJhMjkyOTc1YTkwNjc1YjYyNWQ3M2Q0YiBsZWdhY3ktdHJ1bmsKKzEwODg0IDBjYjAzOTRjMmVkY2ZlMTgzY2Q3NzdjODdiZTg2OTliNThhNTllMjMgbGVnYWN5LXRydW5rCisxMDg4NSBjNGRmOGI2NjM3YjY5NDViMmY5ZTgyMzYzYmY2ZDE1YzcwNzYwYTlhIGxlZ2FjeS10cnVuaworMTA4ODYgNjRiODhhMTc4MzI4NjkxY2Q0YzI1ZTc4ZGU3YTVkZmZiMTVjOThmOCBsZWdhY3ktdHJ1bmsKKzEwODg3IDNjNDBhZjJkMWRlOWUxMzRiNWU3ZGJkNWUzYjEwNzJmZmJhOTYyZWMgbGVnYWN5LXRydW5rCisxMDg4OCA0YTMzYmI3YWRmN2Q2MWJiODQ2ZDI0OWEzYTAzN2UxMGE0ODFmOWUxIGxlZ2FjeS10cnVuaworMTA4ODkgMDk2ODU3YjBlNGI4NWRiZGNlMDdjNzY5MDJlMWY5OTg3NjNiOTg1NCBsZWdhY3ktdHJ1bmsKKzEwODkwIDhhNGZlMTk5YjQ1ZGVmNzI4Y2MyZDMyYzFkODEzMDFlZWQ4OTVlZDMgbGVnYWN5LXRydW5rCisxMDg5MSBmMjE4NjdmODAzNWJkMzg5OTVjMmYxYWFlMWMzN2Y4MDVmNzM4YmQ2IGxlZ2FjeS10cnVuaworMTA4OTIgYzllM2NlOGU3NGI1ZDdmNTFiNGYwOTNhMmEyNjdjYmVjYmQ2YzljYSBsZWdhY3ktdHJ1bmsKKzEwODkzIGRiOGIxMGI3Y2NmMjI0OTc1NDcxODgwNmY1MDQxM2IwMWE2ZTdhZTQgbGVnYWN5LXRydW5rCisxMDg5NCA0NTA1MTYwYTdlNWM2Y2UxMzZkZjExMjAyZTk5YTY2NmU5OWQzMWFiIGxlZ2FjeS10cnVuaworMTA4OTUgNTVmYzhkOTMzMDg3NjZmMTg5YzljZjY5MTAwZTgwNjQ2MTZjYjk2YyBsZWdhY3ktdHJ1bmsKKzEwODk2IDQwNjRiNjcyOTUzN2YwMzFjMDg3Nzk5NzhlZTZiYTYzMzIzMzJlZjggbGVnYWN5LXRydW5rCisxMDg5NyBlY2RkNGI0Njg2MjY4NTkyYzg1M2U3NGI2MjA5YTcwYTBkMzI5MWZlIGxlZ2FjeS10cnVuaworMTA4OTggOWVhNTAwMzExNDljMjIwNGU3YjU4ODZkOWMyYmY2MzAwNDBhNzU2OSBsZWdhY3ktdHJ1bmsKKzEwODk5IGYzOTg0MTlkNTBmOTc0YzU1NWViNmYyOTIzZGY5Mzg1MTQ5MmQ3YmMgbGVnYWN5LXRydW5rCisxMDkwMCBiNWZmNjYzZWU3NmQ5ZWMzMDYzMTQzNmE2ZTAwYjgzNDY2M2ZkYzRjIGxlZ2FjeS10cnVuaworMTA5MDEgYzg1ZTE0MjkzYzJlZTFjYzQ1MTYzZjg1ZGVjZmUyMTE0OTQ2Y2QwOSBsZWdhY3ktdHJ1bmsKKzEwOTAyIDMwNGQ0ZTQ4ODdmNGNhNjBhN2M0N2YzMzdiMmJjMjJmYThjMmMxYmUgbGVnYWN5LXRydW5rCisxMDkwMyBkOTZjYmRhY2JlNzIyNGM5Zjk4YjYyMDMwZTlkMjk4ZWNmYmY4ZTk4IGxlZ2FjeS10cnVuaworMTA5MDQgNDcyZTQyNTQxNGQ4MjQ3ZmQ5Mzc1N2M5YjU1MzUyMTE0YzY3NDhmNiBsZWdhY3ktdHJ1bmsKKzEwOTA1IDBhMDBkZDU3MTFlNjIxMzE5ZjlhYWFlOGFiNmVhZTE2Y2M5NzRjZTggbGVnYWN5LXRydW5rCisxMDkwNiA3NTZlMmVmNTFiMTljNjNmZDA0ZTg3OTQ4ZjU2YWJlODY2NDRmMTQzIGxlZ2FjeS10cnVuaworMTA5MDcgZTJkNDFiZjFhMGYwNGNlZDc1ZDMzMDNkNmVlMTUzMGFkMjdiZDEyNyBsZWdhY3ktdHJ1bmsKKzEwOTA4IDBiM2U1NzdhOGRmNDdiZmZlZjlmYTUwNTdjMzJjYWQ3ODEyNThjMDEgbGVnYWN5LXRydW5rCisxMDkwOSBlOTZlM2QzODc2MTFmMDNhMjdjYmJiNmJiZjM5NjViYjEzMjIwMDIzIGxlZ2FjeS10cnVuaworMTA5MTAgM2U2NTNlMjA0YWQ3YmJmZTlhNDZiNzAxN2JmNjIzMDA5Y2Q0ZTU0NCBsZWdhY3ktdHJ1bmsKKzEwOTExIGY3YzU4ZWQyOTgxZDFlYjFiZjUzNTNlNjhkYjQyNGM5OTkzOTNkMDUgbGVnYWN5LXRydW5rCisxMDkxMiAxMmRkYjliZDBkMzM5MWQ1NjMxNGMwOWJkMjYwMTcwOTI4YmQ0OTQ0IGxlZ2FjeS10cnVuaworMTA5MTMgODJmMDIxZWVjZTJjNzg3ZWJhMDIzM2YxMjZlNjg5Zjk5OGJhMGM1YiBsZWdhY3ktdHJ1bmsKKzEwOTE0IDkyYzBjOThiNDJjNTM2Nzc4YjUyM2M4ODk5MDU2YWJhOTE1MmU0NDQgbGVnYWN5LXRydW5rCisxMDkxNSA3Y2RmZjhhYTgzMTgzZjdmNTFkMzFiNjE3Y2JmOGU3NTZkZGU0OTdkIGxlZ2FjeS10cnVuaworMTA5MTYgYWU3NDZlYWIyYTk2MDU1NGE4NWU5ZTg4NzU1OTE1MTA3MWRiNGY1NSBsZWdhY3ktdHJ1bmsKKzEwOTE3IDc4ZWI0MGYwMzI4NDNjYjFlYWExNDQyMGIwODA2ZjQzMTA5Yzg4YWMgbGVnYWN5LXRydW5rCisxMDkxOCBhOWE3ODhjNzRkNmU3YzI1MTVlMDNjMWU5ZjZhZmY0ZTc2YjYzYjc0IGxlZ2FjeS10cnVuaworMTA5MTkgYzdiMDQzMTM2ZmRiZDgxMWIzMDg1YzQ0ODQyMDBmOTU2ZWJhM2Q1NiBsZWdhY3ktdHJ1bmsKKzEwOTIwIGMwNTliYmQxNGIyMzJkM2VmZTI0ZjEyNWU0NjNiNDEyYjIwYjRmNmIgbGVnYWN5LXRydW5rCisxMDkyMSA1MzQ2MDI3NDYwNzlkMTNjOTI5YmY5MTZiNjcwZDNlZTRmN2M4NTNlIGxlZ2FjeS10cnVuaworMTA5MjIgNzc0OWMzZTAzMjRhZjA2NmE3ZThiODVjZjVlYzQ2MTkwZDYxOGU2MyBsZWdhY3ktdHJ1bmsKKzEwOTIzIDllNGFlYTVhNjUyZDIxYWQwYjUxY2EyM2Q2MGUzZDg4M2Y5ZDk4MGEgbGVnYWN5LXRydW5rCisxMDkyNCBmZDVjZWZkZDFmNjFkY2Y0YmU0YmI4MDRkYWFlYzYyYmYzNGFlODEyIGxlZ2FjeS10cnVuaworMTA5MjUgYzU1MGVlNDkzNWIwYzc4NmVmZWQ3NzQwZDhkMzdjYjQyZmRhZWQxNSBsZWdhY3ktdHJ1bmsKKzEwOTI2IDZmNzBjYTdjODRlNjZjZDMyZDYzYjlmNzVhYmE4OWYwMmVkYjAwNmIgbGVnYWN5LXRydW5rCisxMDkyNyAwMjQ3MTQ1NTg2MjBlYmQzMzJlNjc1MGQ3YTRlN2U1OWZhYTM0YTkwIGxlZ2FjeS10cnVuaworMTA5MjggNTlkZmE5ZWI3YzA3MGZmNjVlYjRiMWQzZTI0MWU3NTU2MDE4Y2YxYyBsZWdhY3ktdHJ1bmsKKzEwOTI5IDRlNjY4ZjFhOWRkZGVmNWEyYTRjYTNmNjM0YzdjZGM3ZWUwYThjNjEgbGVnYWN5LXRydW5rCisxMDkzMCBhMzQxNjA5MWMyYTI1YTM2MTMxYWUzODEwNjYyNWIyODM1MmYzMTEzIGxlZ2FjeS10cnVuaworMTA5MzEgMzZlYTEzYmEzMTM2NDQzZjcyYmU1MjgzNDZiMmIwNGZkYzVhMjA2MyBsZWdhY3ktdHJ1bmsKKzEwOTMyIDYxOTEyZDRhZDUyZjY3ODNlOWY5YjA1ZWMwYzU2NjU3MjY3MmI5ZjYgbGVnYWN5LXRydW5rCisxMDkzMyA3NTRkZTYyMWU4YjMwY2U4Y2UyZDViMTkxZGQ4ZTdjYTkwNzgyMzA0IGxlZ2FjeS10cnVuaworMTA5MzQgODRkMWI3Y2Y4MTVhNzllOTIzZGRlMDQzMDgyNjdiOWI4ODU1MzVjYyBsZWdhY3ktdHJ1bmsKKzEwOTM1IDRlNTlkODkwYTRiZGFkOThiZWUyMTMzMjE3NTE0YzI1MThhZDdjYmIgbGVnYWN5LXRydW5rCisxMDkzNiAyYmQ4ZDUyMGZmYWMwMWE1N2UxOGI5NTQ0ODUzNzE5NWVjNjY3MmM0IGxlZ2FjeS10cnVuaworMTA5MzcgYWY5MjczYjEwNzNhYWFmODk3MjFiNDIxZjRiMjc4NGZmNjZkMDY5YiBsZWdhY3ktdHJ1bmsKKzEwOTM4IDkyYzg4Y2E2MmRhN2I4MTM2OTZmZWI1N2RlZmE2YjFmNWQ5ZGRiNGUgbGVnYWN5LXRydW5rCisxMDkzOSBhZjQ4ODg3Yzk3MTc2YjZlODU1MzAwMTk0ZTliZDRhZjA0YzczZTVmIGxlZ2FjeS10cnVuaworMTA5NDAgNTdkYWUxYzdlYTg0N2JiOTUxMDkyZDUxMmJiMWQ4NDJiYTY0ZDVjOSBsZWdhY3ktdHJ1bmsKKzEwOTQxIGY3NTBiMWZmZTM1MjkyZTJkYjc0NWZiYzBkYWY1MjVhMjA1NzFjZmIgbGVnYWN5LXRydW5rCisxMDk0MiAyMDk1YWU2OTBhYWNhMDRkNzQyYmZiYTdiOTRmYTU4NTZmNDdkM2MzIGxlZ2FjeS10cnVuaworMTA5NDMgMTAyNjdjNzU1NWFlNjUxMDE2NjhjNjQ2ZTY4MzAyZmUyNjQ0MzI0MyBsZWdhY3ktdHJ1bmsKKzEwOTQ0IGRhMDc2NjNmOWZmZjQ2ZmQwODE2ZDlhMDY0MTY4Nzg3YmU4NTBiYzIgbGVnYWN5LXRydW5rCisxMDk0NSAxMzNmNDU1NGEyNmQ1N2NlNTkzNGQ4OWVmZDZhNWY3OTIzZWNhYjdhIGxlZ2FjeS10cnVuaworMTA5NDYgNzE2MGU1MjllOWExZWIyYWU2YmNhYjkxYTk3ZmZkNWQzZWM1NTJlYSBsZWdhY3ktdHJ1bmsKKzEwOTQ3IDBlNmZiYmUzYjYzYzE0MGY3OGM2OTVmMmI3MTk4ZjE2NDc1ODk2ZDYgbGVnYWN5LXRydW5rCisxMDk0OCA0MTIwOWQ1ZDFkNjQ5MGM4MDdiZTZmOThlMzBiNGY0MWY3OTM2MTc0IGxlZ2FjeS10cnVuaworMTA5NDkgNzYzOGU0NTk0MjA2NzViNmIwODA1Njc4MTY4ZGYwNGI1MDkwNGE2NiBsZWdhY3ktdHJ1bmsKKzEwOTUwIGMyN2NkNWZjNDZiNTMyZmFkZDQ0MTFhZTdkMmVjMThkYjE1NGU3OTYgbGVnYWN5LXRydW5rCisxMDk1MSA5YzMyY2FjNTYyNTA1ZDNjZGUyMGVkOWQ0ZTk0NjFiYjM5MzUzNzBhIGxlZ2FjeS10cnVuaworMTA5NTIgOTMzODgyYzBlOWZiYTBhMmRmZWRkMDU4ZDk0MDU2ZWEzZGFiYzhmZCBsZWdhY3ktdHJ1bmsKKzEwOTUzIGM4OTE4OWIwMjM2ZWMxZjEzOTM5MGQ0OWM4MTIyNzYxODg5MTQ3YjEgbGVnYWN5LXRydW5rCisxMDk1NCBjNTU1YzcyZjA5MGRkMDg3MDUwYzc0YWUwZTY5NWI1OTMwMTU3Y2FiIGxlZ2FjeS10cnVuaworMTA5NTUgYTlkODhiZmEyNGFmMzcyMzg1MDNhYWJlOWNmNTkxOGUxYzdkZjc3ZiBsZWdhY3ktdHJ1bmsKKzEwOTU2IDA0OWFhM2E4YTE3MjBkMTRlZDM5ODQ0ZThlZDE4M2QwNDQzZDUzYTUgbGVnYWN5LXRydW5rCisxMDk1NyBmOGM2Y2Y1Y2ZhN2QwMTZjMjljZTA0NzRlYTdiYmExNmYxZjRkZjgxIGxlZ2FjeS10cnVuaworMTA5NTggN2Y5NWJiMmYxNzA0ODk0MzdiNzQyMTRiZWYxZWYzMWM3NDUzMjBkZCBsZWdhY3ktdHJ1bmsKKzEwOTU5IDNhODVhZDVlNDExNmNkNTA2ZTVjNzY1ZDJhNGNhMmNiYzdlZTQ5MmIgbGVnYWN5LXRydW5rCisxMDk2MCA0YmE1ODdhYThhOThjOWM4Yjg0ZDk5ZjFiN2UzMWU5ZmY0ZWQ1MmY4IGxlZ2FjeS10cnVuaworMTA5NjEgZTI4MWQ1MDM2NzI1Mjk3ZjUxNWM0NTA5YThmZmQ2ZTQ0MDIwZTZjOCBsZWdhY3ktdHJ1bmsKKzEwOTYyIGQ5M2FlMzc0ZmI5OThhYmRiYTY1YzY2NDcxNDY0MTZhODY5NDU5ZTQgbGVnYWN5LXRydW5rCisxMDk2MyA2MTRhN2ZmZWUxMTMzZTcxMWM4YzJiY2M0M2QyZmZmM2U3NTMyNDYyIGxlZ2FjeS10cnVuaworMTA5NjQgN2UzYjcyZDhhZTk0NjIwMjA3OGMxNjAzMjQ5NGU1Y2YyNWMxOWM2MCBsZWdhY3ktdHJ1bmsKKzEwOTY1IGY2ZTkwMGRhMzdkYjQ1ODI3NGZkMTlmY2Y2M2NiMDEyYWYwYWI1NWEgbGVnYWN5LXRydW5rCisxMDk2NiAyZTRmMTc4ZDdlMTc1OTM4YzYyNzcyYmY1NjY1MTc2YTFkZjk5MjNkIGxlZ2FjeS10cnVuaworMTA5NjcgN2Y5NGI0OTU4MDU2MjllZTZlYjhjNGEyZTM2ODVjOGU3NmZhZGNmNiBsZWdhY3ktdHJ1bmsKKzEwOTY4IDUzYWZjZDI4MzI1ZWY5MTczNzVlNGY4NjI5NmI4OWYyM2I4OWU0ZWMgbGVnYWN5LXRydW5rCisxMDk2OSA1MTQ1Nzc0MGY1Y2FlOWQ1N2QyNjVhNDY2MjhmNzNkZTVhNGFmMmM1IGxlZ2FjeS10cnVuaworMTA5NzAgMzYwNDEzMWY5NDJkNjhmM2E2ZjM1OGVhMjJmNGY4YzEzNzM1ZDc5YiBsZWdhY3ktdHJ1bmsKKzEwOTcxIGJiYjdlMWRhNDY4NjIzNTFkMGU1MWZjMzkwYzVmNmQyM2ExNmNiOGMgbGVnYWN5LXRydW5rCisxMDk3MiA3ZDFkZmU2NmY2NGJjNTUxYzAzYjliOTVlOGU5ODgyMjAwNDliOTRkIGxlZ2FjeS10cnVuaworMTA5NzMgMDM4YTVjNDMzNTg2MWZlZDc1NjJiMmYxY2U2YTFjNTgyMjY4M2ZmZCBsZWdhY3ktdHJ1bmsKKzEwOTc0IGViNmY2NTk2NmZiMjJiOGYzNzBiMjRjMzhjOTk3Y2QwZmRhOTY3NTggbGVnYWN5LXRydW5rCisxMDk3NSAyOGY2YjAzYmI2NGYwNThkOWE1ZDdkODBhMzFjMDk4ZjZkOTk2YzI1IGxlZ2FjeS10cnVuaworMTA5NzYgZmMyOTYyNWRmNTMyNTkyYzU0OGUwNWNhZDVkMDVmZDQ3ZGI1MjViOCBsZWdhY3ktdHJ1bmsKKzEwOTc3IDAzNjNmMTk4ODdkMTViMmU2MGFmM2Y5ZmVhYTZkMzQ2NzljNzRjODkgbGVnYWN5LXRydW5rCisxMDk3OCAxZDhkYWI1YWE3ZDEwZTI5MzljNTg0ZDU5YjIyMzIwZTQyY2E3ZTUzIGxlZ2FjeS10cnVuaworMTA5NzkgMGY5MWMwYmJhY2M1N2M0NDJiYjQwOTI3Y2Y2YTIwZDhmYzMzYzZiNSBsZWdhY3ktdHJ1bmsKKzEwOTgwIDY5YzliYmI2OWFhYjI2N2ZlZjU5OGZmYmMxYmExYzBhZDNmMDc1N2QgbGVnYWN5LXRydW5rCisxMDk4MSAwNDQ3ZWY4NDgzYzhjNzU0ZTczZDEwNDA3NTRkYTlmY2U5MWJlYzkyIGxlZ2FjeS10cnVuaworMTA5ODIgOTJjZjdmNDI3NzIzMGU5MDkzZmI1NzczZGEyMmVmODg1N2RjZWZmOSBsZWdhY3ktdHJ1bmsKKzEwOTgzIGJhMzEyZTc5MGIyYTJjYjYzOWRhZjZhMmQ3YTZmMDg4N2FiNTgwZTggbGVnYWN5LXRydW5rCisxMDk4NCBiOGJiY2MwMDlhNmFiMzVkZmJhNzcyMTEyMTYyZjE1MzNmMzhlYWVhIGxlZ2FjeS10cnVuaworMTA5ODUgODVlNjgyMDQ4MmZmODM1Y2IxOWNiMTE4MjRmZjgxNDA1NmY0OTNkYyBsZWdhY3ktdHJ1bmsKKzEwOTg2IGRlMTFhODhhYzQ5OGViNGYxMjZkNWQ5NmViMjhiMTQxZjc0Yjk4OWUgbGVnYWN5LXRydW5rCisxMDk4NyBlODJkMDI3N2U2NTNjMDk4NWY1MGZmMTkzMTExOTNlZWFiYmRkNjIwIGxlZ2FjeS10cnVuaworMTA5ODggNmJmNWI4N2FmMDJmOWE2MGM4NGUyMjFjNTViYzVhMjA5ODQ1MjNiMiBsZWdhY3ktdHJ1bmsKKzEwOTg5IGY0ODA5ZmYxZjRkYTRlNmE1MmJjZjc5YWU4Y2QwOGRkNDljYzczM2YgbGVnYWN5LXRydW5rCisxMDk5MCBkZWQ2OWQxMmNjNjgzNWViMDQ3MjMxYzI5NDUxMzc1YTNkMTUyNzMzIGxlZ2FjeS10cnVuaworMTA5OTEgOGU4MjA3MTZjZjEyM2UyYzI1ZmU2NmQyNjk5MzExM2ZhMmMxNGRmZSBsZWdhY3ktdHJ1bmsKKzEwOTkyIGRlMGYwYzNlZDQyNGU2YTY1MzUyMDhmNWJhYzQ2Nzk1NGExMGJmZWMgbGVnYWN5LXRydW5rCisxMDk5MyA2OTY2MmYxNmE4Mzg5NjQzNjUwYTU2YjkyNmI5MDUwZjA3OThiNjc3IGxlZ2FjeS10cnVuaworMTA5OTQgNGRlZDQwMThiMGViM2NmZjMyYzM0YTU1YWZiN2QzODFlMGI1ZTZiYiBsZWdhY3ktdHJ1bmsKKzEwOTk1IGRhOWJmOWVlZDFmYzcyMjJhZjU3ZDRiMDc2YjM1NThhMDI2MTY0MjAgbGVnYWN5LXRydW5rCisxMDk5NiAxZWY0MGQ1YWNjZTIyYjc2NmU0MGIzZGZmZjUxNDZlNWFhYmNiMmU0IGxlZ2FjeS10cnVuaworMTA5OTcgMTZiM2ExMjFmZjc3MmUyNGRmZGYyYjI5NmU2ZjA2NTQxYWVhMTY0ZCBsZWdhY3ktdHJ1bmsKKzEwOTk4IDgxZTI5NDc3ZDJhNGMwYzc2MmEzMzJlNGU4Mzg0YzMyYzAwNTkxZTggbGVnYWN5LXRydW5rCisxMDk5OSA1MGU4N2MwOWMyMzY2YzMzMzhiYTNiZDIzZTQ3OGZhZTZlNjI1MTExIGxlZ2FjeS10cnVuaworMTEwMDAgYjU2OTgxYzBkNjFlYmIyYjgxZmYzODkzNTBiYTI2Y2NkNGYxZTU2YiBsZWdhY3ktdHJ1bmsKKzExMDAxIDYxYTljNTI5NDU1YTkwODJiZDllMmRiZGIyZjE2ZjRjZGM5YmY3ODcgbGVnYWN5LXRydW5rCisxMTAwMiBiOTQwMTVjMGM4MzdhZmU2ZDBlNzU1ZDU5MjUxZTA3NjBhMzdiMjU0IGxlZ2FjeS10cnVuaworMTEwMDMgMDY0Zjg1ZWU5YmU1YjA3OTVhMTlmOTMxM2FhZjE0MzZmZjhiNTNjMyBsZWdhY3ktdHJ1bmsKKzExMDA0IDRlNGZkOTU0ZGRhMGZiY2NjNDkwMjM3ZGIyODdkODk1YTk1MDNkYTUgbGVnYWN5LXRydW5rCisxMTAwNSBkOTk5MjBjMGJmYjAxNWU3MWNjZGI0ZWEzOWI5ZjA2OTFjNDMwNWIyIGxlZ2FjeS10cnVuaworMTEwMDYgNDdiZjNiYjk1NTZlMjFmOGMwNmE4YmRhNDNiZTIyY2E5NjVlM2E3ZCBsZWdhY3ktdHJ1bmsKKzExMDA3IGVjMjZkNTE0MmViNDQwMjEzNDhjZDNjNzMwNzg2OGIxZWUyNGFlOTAgbGVnYWN5LXRydW5rCisxMTAwOCBkN2UzOWVlYTc2ZjRjZTM4NmQ0NjRmODhiYjZlNTdlMWUwYzQ0NDJkIGxlZ2FjeS10cnVuaworMTEwMDkgNWYxZTQzMWEwYTgyNjhmNzNhYWI4MWE2M2JiNGFlOWI4ZmU4Y2EyNCBsZWdhY3ktdHJ1bmsKKzExMDEwIDNjOGIxNDliNDJmZjNhNjU2ZTY4YjM5MjBiYTNkNWM5MmViOWNiMTUgbGVnYWN5LXRydW5rCisxMTAxMSAwMzY2ZGFlZmEyM2MyNjk3MGQyNDdhNWIxYzM5Yzk1ZmNmYmUyMmUzIGxlZ2FjeS10cnVuaworMTEwMTIgNDgyOWI4ZmFmMmI0MmI0YzhlODRlM2ZhMzU3YmZmMzNmNTNhNGQ5NyBsZWdhY3ktdHJ1bmsKKzExMDEzIDE4YTkyODlkZjk5YTFmNWQzOGM0OTIyNzkxMGY3ZGJmMjlhYWExNDcgbGVnYWN5LXRydW5rCisxMTAxNCAyMTY2ODY2YWY5MmJiMTZjODU0YTM0ODdlYWY2OWM2YjE3NTYwNzIzIGxlZ2FjeS10cnVuaworMTEwMTUgZTVkMDZhNjAyNDY5Y2Q5ZGZiZDA2ZTdiYTZiZGMzNDI4NjAxMmYwZCBsZWdhY3ktdHJ1bmsKKzExMDE2IDVmNWI0OTJkMTgwNDNiYTYxNGJkYzcyY2Q3ZDBmYjhkZmM0YzE1N2UgbGVnYWN5LXRydW5rCisxMTAxNyBmMzFjZTQ2MjAxYzk1NjAxNzhmZDAwMTA0ZjhkMzU0OTQ2NWNiNzMzIGxlZ2FjeS10cnVuaworMTEwMTggMThhNGUwMzFkN2NhMGE2ODlmYWEyMjQwYmI0NzdkMTUwOGJhMjQxZiBsZWdhY3ktdHJ1bmsKKzExMDE5IDNjNDA2M2YwYTc4ZmFmMjc2NjUzOTcyZjc2MTdmOTc4Yjc2Y2M5YzAgbGVnYWN5LXRydW5rCisxMTAyMCAyMTM1ODdiM2I5ZDBhZjcwZTVlYTI4NjBlYzFjMDVjM2MwNGJiOWEyIGxlZ2FjeS10cnVuaworMTEwMjEgNTA5OWY0NGJhZjI1NWMxOTczOTczMmNmMmJlMTg4ZTdlZjdmMzIxZSBsZWdhY3ktdHJ1bmsKKzExMDIyIGY0YjYzNmQxNWFiY2Q5NWNkN2I4Y2NkOGU0MmZjNWMzYjk1NTRjYWMgbGVnYWN5LXRydW5rCisxMTAyMyBjZjBmYWFmM2MwNGI2ZGViZDA2MzliMDExMTZjMzA5MDY5MDE0NTQxIGxlZ2FjeS10cnVuaworMTEwMjQgNWMyZjE5ZDE5NjQzYTI4OWJjNzZkYjgyODkzODkxMGJlNWQ0YmYyNCBsZWdhY3ktdHJ1bmsKKzExMDI1IGU5NTFiZjJkN2Q5M2IyM2IwMzJkZGRhYWE0ODA1M2MzYTA4MTU1MTUgbGVnYWN5LXRydW5rCisxMTAyNiAzNWEyMTUxZmIxYzNmNjI0NzVhMjVhNTNiNzAwZWYwNjI4NWFjNmJlIGxlZ2FjeS10cnVuaworMTEwMjcgZTYzMzkzZjUzNjcwMjM0ODM5MjM2Nzk4NWE5NDEwZDQ4YTEwOWY5MSBsZWdhY3ktdHJ1bmsKKzExMDI4IGRjOGRhYTc0OGM0MDkzNDUxYWM4YTUyYjZkMGRhZTY4MDA3YjM2MWEgbGVnYWN5LXRydW5rCisxMTAyOSBkODRmMTIwOWNiYTUyOTk4NDY5MzY3N2VmYTJkNDg3YjM5MjYwNzVjIGxlZ2FjeS10cnVuaworMTEwMzAgZmFjMzM3MTZhMjE4MzRmOWU2ZjQ5NTg1NDQ1MWEwZTExNDhkMzkxMCBsZWdhY3ktdHJ1bmsKKzExMDMxIDFlYTE5NWIxNDI0NTk5ODRjZjk1MGExNzM4NTJkY2EzZjNmNzMxMWMgbGVnYWN5LXRydW5rCisxMTAzMiAxZTlkNjVmOWNhNTNjZjM3OWM0MDMzMDk1ZjNkNjMwZjI1YjZkMDlhIGxlZ2FjeS10cnVuaworMTEwMzMgNTg5YjY0MTM1ZWU2NTEyN2Y5ZDUzNWUzZTNhOGZmN2U5NWYwYTkzYiBsZWdhY3ktdHJ1bmsKKzExMDM0IDIyYTA3MjRjNmJhYzUxYTFhYjNkYzBiMDBjMjRhZGM3Mzg0ODJlODcgbGVnYWN5LXRydW5rCisxMTAzNSA0MzU3YjRlYjVjMTlhNjYxMDM0NGVmZTk5NWNjMTE3Y2E1OTM5ZTUyIGxlZ2FjeS10cnVuaworMTEwMzYgZDdjZTlhZTM2MmE5MDQxODFmZTM0NWI0ODMzZTgxZDE4NmYzMjM3MSBsZWdhY3ktdHJ1bmsKKzExMDM3IGY2ZDgyMzM0Y2ViMTU2YzYwM2U0YmQyZmI0MzRlYWZlMTM1ZmFkZjQgbGVnYWN5LXRydW5rCisxMTAzOCBkMGVlYzk2YjRjNTYyM2Q3YWUwY2Y3ZjgxODY5ZjE0ZDc0NGI4OGQ2IGxlZ2FjeS10cnVuaworMTEwMzkgYjAyYzQzYTIwMWFlNWRlYzAzMWE5MThjNzkwYTc3MTc0ZGRmNmUyYyBsZWdhY3ktdHJ1bmsKKzExMDQwIDhlNjBmZjA2NDYwOTkzNDZkM2FjZDE3YzEwZWEyNDJlMTdlNzllMTIgbGVnYWN5LXRydW5rCisxMTA0MSA5MjI2NzgzOGZlYjljYWU3MmZiZWU2OTFiYzM4ZDM2MjBkNTNkY2Y5IGxlZ2FjeS10cnVuaworMTEwNDIgNDZmZDYzMGRjZTYzMzFjYjU4MWUzZTYwMzUyYWIxODZlZTNlODUyOCBsZWdhY3ktdHJ1bmsKKzExMDQzIDg5NzNlNzA4NWNmNDljZDNjODY4ODkzYjhiZmZmNTAyMmY0YjExYmYgbGVnYWN5LXRydW5rCisxMTA0NCBmZjlhZGI1N2I4YjUxYjI5OTM4ZmYyOTZlYmY2NTVlNDVlZDM3MzViIGxlZ2FjeS10cnVuaworMTEwNDUgNDE5ZWU5NWRmMmQ4OGY1ZDkyMDY3YWI2ZDJlNGQ0ZGU0MWQzYmJiMSBsZWdhY3ktdHJ1bmsKKzExMDQ2IGU4N2QyMmM3ZGUzYzNjOTgzOGIyYzY1ZWJkOGI5MDg0MzI3ZWRlYjAgbGVnYWN5LXRydW5rCisxMTA0NyAxOWU4MDE2Y2QzOGNmZTZjYWJlZWZkZDM2NzQyOGQ3NmYxZDIyNGM3IGxlZ2FjeS10cnVuaworMTEwNDggNmU4YjBlNzU0YTdmMzcwOWIyZDQ0ZGQxMjA0Y2IyNWMzMjcyZTM4MSBsZWdhY3ktdHJ1bmsKKzExMDQ5IGJjODYxOWFmMDkyM2JlMTZmNTI1ZGQ4YTI4NjIyMGNlNzg3ODQxNzkgbGVnYWN5LXRydW5rCisxMTA1MCA4NzE2ODE2ZTA4NTk0ZjQwODk2MWJkYTQ3NTU2ODA3YzhhN2VhZDUzIGxlZ2FjeS10cnVuaworMTEwNTEgNDUwMDc2MDY4YjIyYWVlNGQ0ZTQzY2NhMzdmNjQ3NWNhMWFkZmY2OCBsZWdhY3ktdHJ1bmsKKzExMDUyIGJkNjk1ZGUxOGVjZjIzYWRjYmI1YjJlOTdmYzE0N2I5OTc4MDlkNTkgbGVnYWN5LXRydW5rCisxMTA1MyA2N2FhOTk3ZmJiMGUxNGIyMTM3MjMyNDUxNTFiMjU1ZWQyNmExYWJmIGxlZ2FjeS10cnVuaworMTEwNTQgZWE4ZjBmNWFiMDE1N2U5Y2FlOWI4NzhjNGM2YzBjMWZkNDI3YzEzZSBsZWdhY3ktdHJ1bmsKKzExMDU1IDYwNTFmMmU0MzUxNzY5OGY0NTQyZmVhYzk0ZTRlODZmZDEyY2E3MjMgbGVnYWN5LXRydW5rCisxMTA1NiAxMTBlOTczMzk3NDBlYjQ1ZjZmOWM5YWI2MThhMTNiNzc2MmM4YmM5IGxlZ2FjeS10cnVuaworMTEwNTcgOTRjZTc1ZjQzNDUyZjlkYjU2ZjM2NjhlMWQ4NWQxNjg2Y2ZkMmZkMiBsZWdhY3ktdHJ1bmsKKzExMDU4IGEzMzkyNTQ1ZDg2NTJjOGFjYzFlZjYxZWQ5NmRiOTY2ZDFjNTcyN2UgbGVnYWN5LXRydW5rCisxMTA1OSBmMGZhYWQ4ZDU5MzdjZTNkOWE4NTMzYWRmZGMxNmUxNTU3M2MyNTZkIGxlZ2FjeS10cnVuaworMTEwNjAgMmIwNDExMDU5NjMwMjNhZmUzNWFmNWQ1OGIzNGUzZjdjOGFlYWNhYyBsZWdhY3ktdHJ1bmsKKzExMDYxIGIxYjM1ZjUwZjNmYTZhNDBkZDcxNGE2M2E0ZTFlYmNmZjYxNTlkODYgbGVnYWN5LXRydW5rCisxMTA2MiAxY2E2ODk1MDI0ZDlmZWViOGNjZWY3Y2I1NjE5MmQwZjYyMGMzZDA1IGxlZ2FjeS10cnVuaworMTEwNjMgMjIxNjY3Zjg5MDY0ODZjMDk1ZGI5NTMyZjgzYzc3YWUxZjdjMzNhYyBsZWdhY3ktdHJ1bmsKKzExMDY0IGMzNDk3MDI2NTIwZDdhMDg3Y2U1ZTQ4YzllZGIwMmVkMjA2YTU1NWYgbGVnYWN5LXRydW5rCisxMTA2NSBlOGFkZWI1Y2QyZmI3Yjc5NzBiZWYwNDIyODlkZDkyYTJiY2U2OGFkIGxlZ2FjeS10cnVuaworMTEwNjYgY2I3ZmNmYjU2Mjc1NGM3YTM2YTlhMGM2NDg4MzZmZWQ1ZjEyMGRlMSBsZWdhY3ktdHJ1bmsKKzExMDY3IDFlNWU5ZGM2Zjk5Mzk0ODRjNmVjMTIxYjQyNGI3ZDEyNjZmZDBhODcgbGVnYWN5LXRydW5rCisxMTA2OCBiZGZlZjhlNzM0NTcyMzA5OWQ0NDEwZTE3MjRjMDA3ZDhlZmUxYzYxIGxlZ2FjeS10cnVuaworMTEwNjkgMTU4MWM5MzFjYjM1YTY1NDhiNTc1YTdlMjFjNjEyNjJmNDYwNjQ4NSBsZWdhY3ktdHJ1bmsKKzExMDcwIDc0YTEwMGNiN2E2NDNiNTFjOTJiNzg3MmUyMDBhYjEzMzU3YjFjMTggbGVnYWN5LXRydW5rCisxMTA3MSA5N2RjNmFhNTMyZTcyMTRkNGUwMjlmZmMwZTlhMzA3Njg3N2I5YTViIGxlZ2FjeS10cnVuaworMTEwNzIgZTFmZTMwZjMyNWI5OTE1ZDIwYTY4Nzc1ZGQxZDJmMTBhNDg1MTcwYiBsZWdhY3ktdHJ1bmsKKzExMDczIDJmNDNiNjFhOThkZjVhZTE5ZjJlYTdhMzZmNjk1MDNkZTA1NGUwZDAgbGVnYWN5LXRydW5rCisxMTA3NCBlY2YwZDUxNTI5YWM1OWQ1MzRjMWUyNTBlNzQwMDU0ZTY5NDlmYjg5IGxlZ2FjeS10cnVuaworMTEwNzUgZmQxZjRlZTFiMzJhNjEzZDVmMzdiNTgwNmMxYmY4M2Q0MWZhMDA3ZSBsZWdhY3ktdHJ1bmsKKzExMDc2IDVkNzc3YmVhNTQzNTE3Y2RkY2VjZjJiZDBiMmZjNzJmNTgwMTU5MDkgbGVnYWN5LXRydW5rCisxMTA3NyA2MzVjM2Q5NGE5NDgyMTU5NDQ1OTIwMjg5OWMxYjg4ZDgxODBhZDlkIGxlZ2FjeS10cnVuaworMTEwNzggMTI1ZjIxZmRlOGM0MDY1NWUxN2M4MmJhMDcxMWEwYTM0M2ZlNjMxYyBsZWdhY3ktdHJ1bmsKKzExMDc5IDdiYzcxNDE0NGI5OGQ4NGZmOGJmMjMxYzc0ZmUwNDEzZjgzOGFkYzkgbGVnYWN5LXRydW5rCisxMTA4MCBlYWJiODM4MWJmYzc0YWVkOGUwOTcyMjBjMzQ1NTE5NGZiOWZhOTk5IGxlZ2FjeS10cnVuaworMTEwODEgZDRhNjg4Y2NiOTM3MDFjMzFiMjJiZjJhYTgyZjU5YmFhODg1MTUxNyBsZWdhY3ktdHJ1bmsKKzExMDgyIDI4MzYwMmYzMDA0MzI0MWQxYzRmNTE2MTBiNWMyODA5NzdkZTcwMjggbGVnYWN5LXRydW5rCisxMTA4MyAwMTk4YjJmNmIxYzgzYmI1NjI1ZDFmMTc2OTcwNDQ1MmMxZTk2ODU5IGxlZ2FjeS10cnVuaworMTEwODQgY2UzNjJiOWJhODM2MWZlNzVmNWZkMDZkOTdmYmQwODEwZjE5OWY0OSBsZWdhY3ktdHJ1bmsKKzExMDg1IGMwNDQ5NzcxNDhlOTA0ZGNhNDFjMTg0ZDlmOTE5OTViYjU0OTZiYWIgbGVnYWN5LXRydW5rCisxMTA4NiBkMWYzOTJjZGZjZWE2ZDdmYzM1ZTFjNDdkOTNlN2QyYzcwNjExZjU2IGxlZ2FjeS10cnVuaworMTEwODcgM2M5NmZjODQ2Yjg4YmEzYTE5NDQ1ZmRhMmNjYjZjZTNmOTY3ODIyMiBsZWdhY3ktdHJ1bmsKKzExMDg4IGUwMTczNzFiN2VkMWIzMmRjNjU3NDU0YzA4MDBlYjgyY2YzMTkyMDggbGVnYWN5LXRydW5rCisxMTA4OSBjYzBmZGU0ZGRmNDRlYWU1ZWEyYWQ2YWM4ZjhhNzBlNjc3OWViYWU5IGxlZ2FjeS10cnVuaworMTEwOTAgNDVmOWRmZmRiYTNkYzA5MzNjZTJhMWZmYjJmN2YxYTc5YzY5NWY0NyBsZWdhY3ktdHJ1bmsKKzExMDkxIGNlMjk1YmZhY2VmMzdjYTYzZGEzODJiMzdlYTQ1MTFhMzg5NDE1ZDEgbGVnYWN5LXRydW5rCisxMTA5MiA2NmYwNTQwNjU2YTBlNGE2MWYxNWYxZTNlOGNkMDNjN2RlM2M2MDMxIGxlZ2FjeS10cnVuaworMTEwOTMgMDRkNTk4NzM3MGRlMmVlZWMwODk3MDE4ZWZhNDAyNzQ1YzI0ZjMyYSBsZWdhY3ktdHJ1bmsKKzExMDk0IDFiYmZiOTFmOGU4ODZmMjdiN2QwM2U4Njk4MTA2ZDVhYTFiZjc4NzcgbGVnYWN5LXRydW5rCisxMTA5NSBlM2QzYmJiZDkzZjM0YzNjMThlMzVmYTZmNzA4ZjdmN2ZhYWQ4NThmIGxlZ2FjeS10cnVuaworMTEwOTYgNjRmMGMzMTg4ZTcwN2FlMTVjYWFkNzNhNjAzMjhkMDQ5MzkwMjcxMiBsZWdhY3ktdHJ1bmsKKzExMDk3IGU3ODIyYjY0YTMzZDNkM2VjYmYzMzI5NmIzODE4ZGRlNTcyYTgzMjcgbGVnYWN5LXRydW5rCisxMTA5OCAyNDE3ZjE3ZmEzZTVmZDJjODBkNWJiN2FjYzE4YWNjMDdiNWJmNDI4IGxlZ2FjeS10cnVuaworMTEwOTkgNDZiNDcyZWNiMGY5MGE1MThhMGVjZmRkMGM1NzM3YTZlMDUzZTlhOSBsZWdhY3ktdHJ1bmsKKzExMTAwIGE4MDc1NTMxZTIwZDYwYmExMmQzMzc2OWMxZWFjMzNjZTI0YzJiYWUgbGVnYWN5LXRydW5rCisxMTEwMSA2ZWQ1MDNkOWMzZDUyY2E2YmRkMDk3YjJmMTQ3YjQ3MWRiNTgwNGE1IGxlZ2FjeS10cnVuaworMTExMDIgMGEzYzhjMjNlMWRhMmE0OTBlYzRkYTg3ZmQxZjMzOGRlMTNmOTVhNiBsZWdhY3ktdHJ1bmsKKzExMTAzIDlmODRiOTE5OTUyZTVkYzRmZjQwYTlmODFkZDZkMWZjNDc3ZWMxOWUgbGVnYWN5LXRydW5rCisxMTEwNCBmMDU3NzUxY2VmNjE5YzczOTViZTdmMGZhZDQ5NTI3MTZmNDYzMzgwIGxlZ2FjeS10cnVuaworMTExMDUgYmRhNWFjOWY2NGU5NGViYmUzNGIwYzVmZDc3NTUxM2M4MTNmOTQzYiBsZWdhY3ktdHJ1bmsKKzExMTA2IDM3MWMzMTI3NjdjYzk2MDgzYmYzMWY3ZTg5YWRhMjQzOTIwZmI2ZjEgbGVnYWN5LXRydW5rCisxMTEwNyA1MWRjYmY4YTBiOTJhYjYwZGUwNWI4Y2FlZDIyOWFkYTllYjg2MjY5IGxlZ2FjeS10cnVuaworMTExMDggMjZmNDgyZDE2MTQwYmZkNDZiODI1NjYxYjU2YzcwMTI0ODY1NTQzYSBsZWdhY3ktdHJ1bmsKKzExMTA5IDZlZDJjYzI3OTM0NmZkNzEwNGY5MTIzNjIxZmRkZDIwYzk2MDM3ZWQgbGVnYWN5LXRydW5rCisxMTExMCBhZWE2ODQxYWI4OThkMGJhMmU1MTkzNTBhODZkY2NiZmU3YmFiZjg4IGxlZ2FjeS10cnVuaworMTExMTEgMjM5NDkyYjM0ZjY4MmQ1Y2NhZGRhZDliZmNlZTFiODg2MjE5OGM0YiBsZWdhY3ktdHJ1bmsKKzExMTEyIGE5MzlkNGUxNGE4ZDMyNDUwZGU2N2RhYzViNjRiOGE5ZjYzZDk5N2EgbGVnYWN5LXRydW5rCisxMTExMyBkODY3MzM2NzY4MTU4MTUyM2M0YTJlMTRkOTVjMzk3ZDU5Mzc5MzIyIGxlZ2FjeS10cnVuaworMTExMTQgNmQ3NWE0NDM0N2EyMDIxNTJiZWUzMmViYzM2YjkzZDkzYzY2Y2UxZiBsZWdhY3ktdHJ1bmsKKzExMTE1IGNjZGViYjVlZDMzYTM5YjJiMjQwZTQzZDIzOGQ2MzE0ZjMyZjVmNmIgbGVnYWN5LXRydW5rCisxMTExNiAxMTcxMzgxZmEwMWM4YTc1MGMzMjM1YmRkZTk5M2JhOTM3NzdmNTU2IGxlZ2FjeS10cnVuaworMTExMTcgNTc5OGNlM2JmZjM1NGEyZTNlYmM1MTg2NTYwMTU0NzQwYzdjY2M5NiBsZWdhY3ktdHJ1bmsKKzExMTE4IGRjZWM5ODM1NzZkNTE0ZmMzZmMyYjIxOGY1ZmY3MTJhNjg3NDYyYWYgbGVnYWN5LXRydW5rCisxMTExOSA5ZjFlOTVjZGZhMTczMTQ1ZWY5Y2FkYTg1N2U3YjdmZjg0MDA3ZmUyIGxlZ2FjeS10cnVuaworMTExMjAgMWUxMjBhNWQyZTkzNDU0NWVkYmI2MzYwYmE2NzE5YTE2ZDg3OGVmNCBsZWdhY3ktdHJ1bmsKKzExMTIxIDAyN2ExZGFkMTM1MzJmYjY5MGJmMmM4MjFkODRiZTY4MWNiNzAyOTYgbGVnYWN5LXRydW5rCisxMTEyMiA4ZTg2YTc5N2U1OTZjOGM5YjEwYWNiOTljNTk2ZWFjZWVkNWE1MmI3IGxlZ2FjeS10cnVuaworMTExMjMgYjQ4MGU2ZWRiYzA3YmRmNjkzODRlN2JhNzRjOWMzODY1NjI0Y2YxZCBsZWdhY3ktdHJ1bmsKKzExMTI0IDJiZmIxMjM1NWIxMDJhOWI2MjQ2OWRlNWE5YjdlNGFlMjE4MWRmOWEgbGVnYWN5LXRydW5rCisxMTEyNSBkNDljYmVjNTkzOTVjMjhkY2UyYTM4ZDUzYmQzMTAxMjEzZGRmNDg5IGxlZ2FjeS10cnVuaworMTExMjYgOWFlOTFlOTMwN2UwYWVjYzU2OGM1OTdkZjlhNWEwY2FkOWQ0ZTMxMSBsZWdhY3ktdHJ1bmsKKzExMTI3IGFlMGI2YzFjOWU4ZDZhM2RmYjIyMzQzYTFjMjE3NDY2NWJkYjA5YjggbGVnYWN5LXRydW5rCisxMTEyOCBlODNiMzUzZDBhMWNkYWFlODQ3NzlmNGE5OTY0ZDg1YzFiN2EyNzdkIGxlZ2FjeS10cnVuaworMTExMjkgYTJiZWFlZGYwYWVlZjBiNjk0NTI1ZWRlOTQ4MDM5MzUzM2E2MjJjMSBsZWdhY3ktdHJ1bmsKKzExMTMwIDc3NTE4ODE0MGZlMWZhYmRjNWYxNjE1MzUxYzMwZmViNmIwMTU2ODQgbGVnYWN5LXRydW5rCisxMTEzMSA5YWY5NWQ3MjcwZGZlZjU1Y2M2YWY3OGIxN2E2ZTdkNGJhYzI4NDQ2IGxlZ2FjeS10cnVuaworMTExMzIgM2JlOTA2NDY3NzQwOTVhM2YxYjYzMjE0ZWE5N2I0MmY2YzY0N2VhZiBsZWdhY3ktdHJ1bmsKKzExMTMzIDRiYTliNzBjYTU2ZTI0ZjYzYTQ5ZDc2YTVjMTJjYzFiNWY1ZDM1OGQgbGVnYWN5LXRydW5rCisxMTEzNCA5N2ExMTA4YjBlYjI4MTU5MTExNDQ0NjI0NzVhOWM5YTMwZDViMjVkIGxlZ2FjeS10cnVuaworMTExMzUgMmViOWMyMWMyMmY3ZTk1MTU1ZWU3ZGYyNTIxZjBmZmQ1YTk2ZGMxMiBsZWdhY3ktdHJ1bmsKKzExMTM2IDdkNGEzODZiZWQzZmM1MzkyZGZhZTgyZTA0YTVlY2VkNGIwYzMzOGEgbGVnYWN5LXRydW5rCisxMTEzNyBlZDBhMzhjYmMzZTYzZDcyOGY4MGViM2M4YTg4MjA2YWZiNzY3Y2Q0IGxlZ2FjeS10cnVuaworMTExMzggOWU1MzZkZDNkYzk3ZjM5OTU3YTQxOWVjZjUwZTI5MTIxNjViZDAxMyBsZWdhY3ktdHJ1bmsKKzExMTM5IGFjNDNlMjI0NjY5NWJlYzdlZWI1NjNkNWExMjc3M2E0OWY3ZDM4NTkgbGVnYWN5LXRydW5rCisxMTE0MCAxZTkzZmEwMjE0MDU0Yjk1Y2QzMjM0NGU5ZTA3YjY3M2QzYWJlODBlIGxlZ2FjeS10cnVuaworMTExNDEgY2U1NGI1NDQ4Yzg1ZDc1YWE2MTFjNTIzODEwMGUzMmYxYTlkMjIzYSBsZWdhY3ktdHJ1bmsKKzExMTQyIGRlNzU5YWNhMTBiMjUyODliZmZkMGM1MzVmYmVmOTc4ZWY5NTA2ZjggbGVnYWN5LXRydW5rCisxMTE0MyAzMGZiZjE4YWYyOWU4YWM5NWNkNzUxOTMwNjIxMDNhNzFiZGE0ZjFlIGxlZ2FjeS10cnVuaworMTExNDQgNzRmMzg1ZWU0NGNiYmVmODMxOGRkYTYzMTlmMDE5M2FmNTRlYTEyNSBsZWdhY3ktdHJ1bmsKKzExMTQ1IDJmZGRlNzg0ZDg0OWFlMTExM2JjZTM5MjdkYWY0OTM2MzJhZTdjNTIgbGVnYWN5LXRydW5rCisxMTE0NiA4NTY4YWE0OTQ0YTAxZjFhOWE5OTA1OWQ0MWNhZmM4NWM0M2YzZGFjIGxlZ2FjeS10cnVuaworMTExNDcgZjU5NDc3OGE1NmFmOTU0NWYyZDNhYmQ5NGNhNDZkOTkyYzc4NmRiNyBsZWdhY3ktdHJ1bmsKKzExMTQ4IDYyNDViODE5YmRkODVjMjE1YmM3NDY4ZWI2ZTU3MWRiMTE2YmY4NGEgbGVnYWN5LXRydW5rCisxMTE0OSAzYWQxYmZmYmRhZWI0MjA1OTE2MDA0NGI5YjcwY2YwM2E4MjUwZDY2IGxlZ2FjeS10cnVuaworMTExNTAgODI4MTFjNmNiNThmNWJiMjk4YmVlN2Y3ZmI1MWMxMjYzYjkxYTY5NyBsZWdhY3ktdHJ1bmsKKzExMTUxIDJiMmZmNWE4MTM5MWEyNjQwMjE4YzhjZDMyZTMwYzE3ZGY1NjQ1MDQgbGVnYWN5LXRydW5rCisxMTE1MiAwN2U0NzM3MGZjYjhiOWJkOTIxNDJkN2JlMzVlYTBiMzQ1YTMzZmMzIGxlZ2FjeS10cnVuaworMTExNTMgNzQ0NGZlMzhlYWRiZDRkOTY1YzAyODhjNzMwNDJlYjg1OTMyNGFkYyBsZWdhY3ktdHJ1bmsKKzExMTU0IGIxZjFiYTQyOWI3M2YwMmMyMjA4OTUxNDAxNjAyMmViNWIxYjcyMjkgbGVnYWN5LXRydW5rCisxMTE1NSA1YThkOWNlOTA2MzJiOGQ0YjA3NmYyZmJmNTVmNTQzNDc5OTIyYTA3IGxlZ2FjeS10cnVuaworMTExNTYgZDZmNGU0MWIyYzZhZTg3N2IwOTcwNzVjY2ZkYmVmZTEyNmViNjFjYiBsZWdhY3ktdHJ1bmsKKzExMTU3IDQ2OWU4ZjQ1MzM2NWEzOWZjZWEyM2ZlYjdlOGMwNjY1Mjg1OWU0ODQgbGVnYWN5LXRydW5rCisxMTE1OCA3ZDk2ODQyMzgzYmJhOWQxMWE1MDk2NzNkYjhjMDU1MGE2MmRmMDgwIGxlZ2FjeS10cnVuaworMTExNTkgNjE3MDY4M2U5OGUzYjI3ZmM5NjhmMzliYzY0Y2ZkYzk5OTg0YTM0NyBsZWdhY3ktdHJ1bmsKKzExMTYwIDQ4YmM0NzAzNTg4MTVhMThmZmJkOTk2MGI0OTc0NDkwNTE3YjNmMDQgbGVnYWN5LXRydW5rCisxMTE2MSBiYTc0NDQ2MmU5NTgzMWQyODE5YWEwZjNkNzgyZTEwNGY4NjBiZTE0IGxlZ2FjeS10cnVuaworMTExNjIgNDY4ZGIyYjcxMGZkODIzMjAwNjc3NWViOGFkOGJmMWI5ZjA3NzEwMyBsZWdhY3ktdHJ1bmsKKzExMTYzIGNlMWU1OTFiMzEyNjM4NDBiYTViNWNiYzlhOGQyYzc1ZjM4MTU3MzcgbGVnYWN5LXRydW5rCisxMTE2NCA2ZWQ3MTU4ZmYyN2NjZTQ3NzgxZjEzOWViNGQwYzg0ZTY4YmE2MGNmIGxlZ2FjeS10cnVuaworMTExNjUgYTAzMjRhMzA2OGU5NTM5YjViMTQ2OTk3ZjkwMDQ4ZWQ4ODIxZjE0ZCBsZWdhY3ktdHJ1bmsKKzExMTY2IDEwMDQ0NWFlNDVlMzZiZDkxYWUxYWE5MWNkODVlYzdhMWRjNDMwMjQgbGVnYWN5LXRydW5rCisxMTE2NyA3ODE3MzE4ZWNkM2EyZjY5OTcwYWUwZWIwMTgxZmI2ZjdkYzUyYWRkIGxlZ2FjeS10cnVuaworMTExNjggNTUyZTQyZTQxNzBlZTcxODRmYWUzZmNjZjNhYjJkNTg5MWM5YzM0MyBsZWdhY3ktdHJ1bmsKKzExMTY5IGZkNDllZDY1Y2QyMGIyMDJlYWE3NmFjOGVmZGM2NzM3NTY2NDJjNjAgbGVnYWN5LXRydW5rCisxMTE3MCBhMzcyNmZlMzRkNThlYzA0NzY2NmUyOWFlYzExZDFlMDI0MmZkMTg1IGxlZ2FjeS10cnVuaworMTExNzEgZGU1NDAxNjZkNzMyOGNmNTQzMTBhODI1Y2E3MjM5Y2M4NTkzMmFjNSBsZWdhY3ktdHJ1bmsKKzExMTcyIGEwNDc3YmM4MjBiMjcyZGYxNzIxMmUzY2U4MjYyZWEzNDA5MjBmMjkgbGVnYWN5LXRydW5rCisxMTE3MyAzNWUxYTE0MGZlNGUyMDA2YzYwMzUzMGZlNzZhYmE4YzU0OGRiOTE3IGxlZ2FjeS10cnVuaworMTExNzQgYzk1MTRlYjFmYzA2MjdhYzI5NjNjZWY3MTdmMjBiYjZkNGE5YmNlMyBsZWdhY3ktdHJ1bmsKKzExMTc1IDhhYTlkMTI2ZTQ3MzMwNzAwNjk2ZDQ3OGUzMzRiZTAwMzRjZDQwMjMgbGVnYWN5LXRydW5rCisxMTE3NiBmNDE1ODBiNGVlYTE1NDI3ZmUyNmI3ODEyOWQ5NWY4MzczNzZmYTZmIGxlZ2FjeS10cnVuaworMTExNzcgNmQyMTY4YTk2NDFmZTc1Mzc3YTUyNTY1MjQwNzIxOGUwYTBlNDMxYSBsZWdhY3ktdHJ1bmsKKzExMTc4IGY3YjRkYjBjNWIwOGQ1N2U0ZDM3ODY2OWIxMzljYjE4N2E4MGZlMGUgbGVnYWN5LXRydW5rCisxMTE3OSBkYzg1ODA0YzJjNjQ1Njg5ZWJiMDU2ZjBhZGVhMzk1ZWZkNDM4ODA5IGxlZ2FjeS10cnVuaworMTExODAgN2QxNDc3Y2RhODNkMzdlYWY3NjBkYzU3YjE1YWM2MjRlYTA3YmNiYyBsZWdhY3ktdHJ1bmsKKzExMTgxIGYxMGI0NjljOTgxMDU0ZWE1YzMxNzQ0Y2M1YzhiNTJhNjlkMWRjZWEgbGVnYWN5LXRydW5rCisxMTE4MiA5NWYzMjQyNzJmNTQ5NmMxMzllNzgxZWM4MDM3N2Q5ODA1YzE1NGYyIGxlZ2FjeS10cnVuaworMTExODMgNzgyMTRlOGM5ZWI0OTA4YTVhMDdlMmY1MWMzZTA5ZWMxOGJhNWFkMCBsZWdhY3ktdHJ1bmsKKzExMTg0IDJmMjkwNTYwMjYzZmIwZGNmYzY3NGM3ZWM3NWQxNjE3YmJkODRkY2YgbGVnYWN5LXRydW5rCisxMTE4NSA1MDc1NzQ2NWZhNzBkZWNkZWEzYTc0YzQxMjhlNzZkNGIxZWRiYmE1IGxlZ2FjeS10cnVuaworMTExODYgODNjOGFkYWEwODRmNjgxOGZiYmEzYzY0MjcwMzFjZjlkMmNmY2YwNCBsZWdhY3ktdHJ1bmsKKzExMTg3IDg1NzFjMTI0NmYwOTNkMzk1OTZlNTcxMWU1MzRiMjUxNzNkNzJiZGYgbGVnYWN5LXRydW5rCisxMTE4OCBjYTFjNjY5YmIwNDE2OWNhNmY0ODMwZDE3YTliOWE0ODU2ZDQzYTk4IGxlZ2FjeS10cnVuaworMTExODkgNGVkZjM0OTVjNjkyNzZiMThhMTkxMDU1ZmRkZGU3ZDUxYjkxYjg1NyBsZWdhY3ktdHJ1bmsKKzExMTkwIGFjZjQ5YzlkZWY3ZGRiNTQyNTFkY2IwYjQ0Y2E4ZjQ4MmQ4YWI5MjMgbGVnYWN5LXRydW5rCisxMTE5MSAwZTI1NjNjMGViMGQ0YTZiOGZmNjcxYWY0ZDg2NjdmMGIwNDdlZjIzIGxlZ2FjeS10cnVuaworMTExOTIgMjA4NDI3YWI3NTY0NWIxMzU1YWZiNWRiODUxZWVhMGI0ZTA5N2NjNSBsZWdhY3ktdHJ1bmsKKzExMTkzIGFlNmI0MWRjNjUyMDE2YWJhOTg0YjljOGFhMTNhODQwOGRiNzIwNzQgbGVnYWN5LXRydW5rCisxMTE5NCA3OTgzZDg2YjQ4YWY3MzI2MTVlZmI5MmRkNTAwMDMwM2ZjOTU1YTUyIGxlZ2FjeS10cnVuaworMTExOTUgZWQ4ZjRlMmViMTFhMWFhNzhhOGIyYzk0ZGY5ZDcxNWUxMDM5NzY3ZCBsZWdhY3ktdHJ1bmsKKzExMTk2IDk3MzFkOGE2YjRmM2RmNDlmZjQ3ZGMzZTZkN2IyOWJjOGQzYzY1NzUgbGVnYWN5LXRydW5rCisxMTE5NyBjNzUwYzdhMjFlMDM3ODg0Y2VmNTU0MzAzMDcyOWM2NWY2MDY4ZDY3IGxlZ2FjeS10cnVuaworMTExOTggNzYwZGNmMTk3MDQ4MTI2OGIzMzFjYTY0NzBhOGVhM2FjYzExZWI2ZSBsZWdhY3ktdHJ1bmsKKzExMTk5IDk0NmQ2Mzk3N2ZhNDExZDVmMDgwMzkyMWRjMjdmODRiMjYzNTQxNDcgbGVnYWN5LXRydW5rCisxMTIwMCAwMjhlYWZiY2U4YWM3MjFkNGEzMjA2OTk1M2FjMmUzZDg3NTJmNGMxIGxlZ2FjeS10cnVuaworMTEyMDEgODE3NWM2ZTFlNjEzMWE5NTQ1ZDViNDEwZTNhMWZiZWEwNmY0MzI0ZSBsZWdhY3ktdHJ1bmsKKzExMjAyIGUwZDA0NzQ4NDk4MDA5NzlmMDhiNjg1OTY4NzM2MzdmMzExNWNjZDMgbGVnYWN5LXRydW5rCisxMTIwMyBkN2NhNDI5ZWYxYWI1ZmJhOTIzOTRlMTU4ZTY4MTMzMmQzNWJlYjM3IGxlZ2FjeS10cnVuaworMTEyMDQgOGEyOTQ3NmE1OWM1NDM4ODNjMzE2NjcxYjIwNGRkOWYwMWNjMWIzZCBsZWdhY3ktdHJ1bmsKKzExMjA1IDY3OTQyOTRlYjAxNDllOTZlNjdkMTQ2MGVlYzQzMzE4ZTkyNjEzZjMgbGVnYWN5LXRydW5rCisxMTIwNiA1ZDZiZjYwY2I3MzZkMWUzNWM0NjI2NTRhNTQzZWJhNWViYWE0ZmQyIGxlZ2FjeS10cnVuaworMTEyMDcgZjc5NzZlMDJiODczNDMyNzNlNDJiNDAyZDNjYjY4NmJhZjM3NmU5MiBsZWdhY3ktdHJ1bmsKKzExMjA4IDc0ZWE0ZGZkYTgyZDI0MWY2ZDA5OGZmNjUxYTE0M2NkYjU4MmI0MGEgbGVnYWN5LXRydW5rCisxMTIwOSA1M2I1MmEzM2Q0YmE2NDBkYzU5NzE5OTYwZWFiNzI2YmVkMjRiNjZhIGxlZ2FjeS10cnVuaworMTEyMTAgZDVmNDg1MWU3NjExM2JlMjU5YWE0ZjI2ZjY0NjY1OWQwODNlZjQ2NCBsZWdhY3ktdHJ1bmsKKzExMjExIDE5MDdkMTBhMjMyOGVlMDlmNWY5YWE4ZDMxMzlhZmNkNDc3NTNjNDMgbGVnYWN5LXRydW5rCisxMTIxMiA4YTMwNmRmZDlmMzMzZTA1Mjk4NWFhYWQwMzRkYWU2NDY4NzdlN2ZkIGxlZ2FjeS10cnVuaworMTEyMTMgNzUxMzdjZmVkOTU0Zjc5NjQ0YmU5YmU5MDQyNTY0ZjRhNmQ1MjkzMiBsZWdhY3ktdHJ1bmsKKzExMjE0IGE4MDQwYjk0MTg2NDlkOWYzZWNiMWE5MzNhMWJiMWIwN2MxZDBkNGQgbGVnYWN5LXRydW5rCisxMTIxNSBhZWFmYWYzODJhNGJlYzRkZDcxZDAzN2NmNThhZDA1NzYyNmE4MDFiIGxlZ2FjeS10cnVuaworMTEyMTYgZGRhYWMwNmVjMzI2NmY1Mzk4YTNlYjdhZjdiMjc0OTMzNDFjNWRiYyBsZWdhY3ktdHJ1bmsKKzExMjE3IDgwNzc2ZWFiZDAwNWZiYjgxNWQ2NDIzY2YxNTgyOGFiYzA4OTJlYzMgbGVnYWN5LXRydW5rCisxMTIxOCA2YzIwY2E3MjMxODA0Nzg3YWZlNjg2NDg3N2ExMTBmMjYyNzZhZDk4IGxlZ2FjeS10cnVuaworMTEyMTkgOGQwNTQ5NTQ3MDhhMmYwNTBiOTRiMmYxZThlOTVmMWQ4NzQ5MjZlNiBsZWdhY3ktdHJ1bmsKKzExMjIwIDc4MWFkMzJlN2IxZmYzYzVkNmYzOTRlYTM2ZWNmMWEyOTc2ZTJhYTQgbGVnYWN5LXRydW5rCisxMTIyMSAxZjAyMGY3OTk2N2Q5OTU4ZDA4YzFmNmY2ODIxNTNmYTkxZGUwNjU5IGxlZ2FjeS10cnVuaworMTEyMjIgNzRlMDMxM2NkODEwZTM0NWYwNWUyM2ZiZWUyMDA4MzdlZmQxNDBiNiBsZWdhY3ktdHJ1bmsKKzExMjIzIDQzNDY0YjFjODgwZWE5NmYyZTc4MDhiZWVhYjA1MjQ4MWRiNmQ1NWMgbGVnYWN5LXRydW5rCisxMTIyNCA3M2FmZTc3YTM5NDdiZjJlYTIyMDIyZDdmYzBmNDkxYzc3MjIxZmFkIGxlZ2FjeS10cnVuaworMTEyMjUgMmEzMGE4MTg5NGFlMGNjNDlhYjMyYzM3ZTUwMmY3Nzg1ODJmNjdiNSBsZWdhY3ktdHJ1bmsKKzExMjI2IDFkNTgxYTZkZmVlZTExNjkxNTg1ZTMyOGVkYTBiY2E0MDYyYjJjYjYgbGVnYWN5LXRydW5rCisxMTIyNyBlMWJjZjBiZDM0ZDU5MzM5OGY2ZjUyYWU2NjgzZDRjMzViNzI1YmRhIGxlZ2FjeS10cnVuaworMTEyMjggY2ExYjkwNjE0OWU2MjA5Yzg1MzU5OTNkNDc2YWZlNDllNmFlNzUxNyBsZWdhY3ktdHJ1bmsKKzExMjI5IGNkOTk1MjAzMjBhMzFmZDBiYTQ1YmI5ZDdjNzVkNDJjNjE4MTNiYzMgbGVnYWN5LXRydW5rCisxMTIzMCBlYWJlNTc0ZGM5MjFhOTEwYjkwN2ZmYzhlMDU0MjllMWNlYTkxN2QyIGxlZ2FjeS10cnVuaworMTEyMzEgZDg0YzExM2VmZWRiZjVhNDQ1NDhlMjkyZTkwY2JlZGE0NjhlYzM1NCBsZWdhY3ktdHJ1bmsKKzExMjMyIDVlYzg5NzliZjE3Njg1NDdlMzhjNjY1ZGQ0MGM1NzBiMmQzZTA1YzIgbGVnYWN5LXRydW5rCisxMTIzMyA5OTc5MzMwMmQxMGQzZTFhZTJmOTExMTRkOGFmYzAzZTA2NjgyZWMzIGxlZ2FjeS10cnVuaworMTEyMzQgNGUwNWUzODQ0NWNlYjM3Yjg0NmRmOWQ5M2U4ODgzNzlkNWUwNjZlNyBsZWdhY3ktdHJ1bmsKKzExMjM1IDllMDg5MDcwZDRjNWQwZTgyNGJhZDg1ZjU3ZGE3OTIxNzg1MjY0N2QgbGVnYWN5LXRydW5rCisxMTIzNiBlODhkNGU2ZTQ2MjJiNDM4MWY3MmMwZjdmZjRlZDM0MzhkMmFjYTg5IGxlZ2FjeS10cnVuaworMTEyMzcgNzAxYTg1YjA0NGIzNDVmNTBlZmM2Njc4MDZkMzhhY2NiNjc2YWI0NCBsZWdhY3ktdHJ1bmsKKzExMjM4IGZiYTg0NTVkY2I1NGM0MGUwY2EyMjJkNTYzNDgzYTM0MjdmNTg0NDUgbGVnYWN5LXRydW5rCisxMTIzOSBiOGE3MTljOGEwYTYwMTdhMGU0MGMzZjdmZDM3ZmM4ODEwMmVmNWJkIGxlZ2FjeS10cnVuaworMTEyNDAgNjhmZTYzNzUwZjg0ZjUwZmVlZDljNTNiMTNlNThkNDhiNDJjODhlNSBsZWdhY3ktdHJ1bmsKKzExMjQxIDRhYzJkNDM1Y2UzYmI1YmY1YmVjOWJkMzQ5YjFjNzZhMjVhNGFiNzQgbGVnYWN5LXRydW5rCisxMTI0MiAyYjJlZjgyZWRiNWViNzM0ZTExNjQ2MjExNDY5NjM2OGVhNThiODAyIGxlZ2FjeS10cnVuaworMTEyNDMgODYxY2QyMjc4MzQ4YTgzMjlhNDhhNjA0ZjA3ZWU1ZmMzODAzNDBiYSBsZWdhY3ktdHJ1bmsKKzExMjQ0IDQxOTJhNzNjYTQzMGViZGYyZTJhMDRlODM1MjgxOTMzMzFmMTRkZTggbGVnYWN5LXRydW5rCisxMTI0NSA1NWY3OTBhNWY2NGJmYjQ1NjJiM2I4NzE3MmMyY2ZjZTk2ODg3M2E5IGxlZ2FjeS10cnVuaworMTEyNDYgMDc2NjNkZDBmZTg2NTQ4NmRiYWMxNDk3M2Y4ZmNhZjJhZDkwMjg0NSBsZWdhY3ktdHJ1bmsKKzExMjQ3IDYyZmFiZTI0NzdjNGRmN2I0NGM3ZDFmZDBhMGExMGRmZjZjMTljYjkgbGVnYWN5LXRydW5rCisxMTI0OCAwNTg0MTcwNzFiMGU1MjZiYzIzYzIyZGRmYmI0OTJhMmUyNzdmOWVkIGxlZ2FjeS10cnVuaworMTEyNDkgODQzNGU5ZDAwYjVhNWU0NGU3NTY3MzBmMzNkYzI3ODFhOGJiZDIzNyBsZWdhY3ktdHJ1bmsKKzExMjUwIGZjMmE3MDBiMTAwN2E1MmY1MjE3Y2Q5ZTlhOGQzMWVlM2FlZWE5YTIgbGVnYWN5LXRydW5rCisxMTI1MSAwNmY4MGJjYzk1NjkxMWYzNzk2MTk3Mjc5MTQ4NjE3ZGQxMDFjMjU0IGxlZ2FjeS10cnVuaworMTEyNTIgMjU2YTgwZjM5YTg4ZmQ3OTYyMmJmMjdlM2E2NGU1YzhhM2IwOWU4MyBsZWdhY3ktdHJ1bmsKKzExMjUzIDJmNDZmODdhYTgwYWFmNWNkM2NiZjIwOTVkNjM1ODQ3ZmY3YmI2MjEgbGVnYWN5LXRydW5rCisxMTI1NCA3MGI2MzNmZjJmYjc1YzU2MTRiOTQzNTFmMTNiMWU4ZTQ0MzRmYWQ2IGxlZ2FjeS10cnVuaworMTEyNTUgNDViZTQwZWZjYjk1MDQ5MmVlM2M3MzM2M2ZjOTNlYjU4NjJlMjY0ZCBsZWdhY3ktdHJ1bmsKKzExMjU2IGVkYmY2MzFmYjdlOWU0MTI2OTlhNDJiODk2YmY1YjM4ZDkxYWU0MjIgbGVnYWN5LXRydW5rCisxMTI1NyBkMzk2NzhkMjJiNGEzM2QwM2E1OWYwN2FmYWQ5YzZjMjZiMGY3ODEyIGxlZ2FjeS10cnVuaworMTEyNTggMDQ4NDFlZWQ5OGVmOTE2NGIxNWQ2YzlmYWE1NDdhZjg3NWE4N2E1NSBsZWdhY3ktdHJ1bmsKKzExMjU5IDAwNTI0NTU1ZWYxNzQyODM3NjNiMTcxMDlhNjc4M2NkNWY1ZDQwOTMgbGVnYWN5LXRydW5rCisxMTI2MCAzYTFkZDAxMzc1ZTA5NDE2Y2FlNWQ1ZWRmZThjN2VkZmUxOTk1MjQ2IGxlZ2FjeS10cnVuaworMTEyNjEgOTEzODI3MmMxZmU2ZWMzYjFkNzFmN2QwMGIyZDg5MzU4MmY4MGNkYyBsZWdhY3ktdHJ1bmsKKzExMjYyIDZkNjFkNDg5ZDcyODg5MTQzYzk4MDEyNTliMGI5YjQxM2E2MzM3MzIgbGVnYWN5LXRydW5rCisxMTI2MyA5ZTMxNDE1NDM2ZjYyY2Q5NDc3Y2IxZjlkOTE1OTRkOWRjNDQxYWE0IGxlZ2FjeS10cnVuaworMTEyNjQgYWUzZTJlYWVmOWI5NTI1ZjY1YmE2MzMyMDY1ODQ1NDBhODJjZTI1MyBsZWdhY3ktdHJ1bmsKKzExMjY1IDhlOTRjZTkzOTRiZjI0NmUyY2I4ODNlZTI2OWM0ZTljNTcyYzZjYzkgbGVnYWN5LXRydW5rCisxMTI2NiBjOTkwOTA0NjI0NzY2ZWU4N2MxYzU2M2ExMGU0ZjZmNWIyMTRiMjA0IGxlZ2FjeS10cnVuaworMTEyNjcgYzg1YjM4ZDU4YWNkOGNmMDhhNWVkMzgzZDM1NDRhNGU1MWU0NzU3YiBsZWdhY3ktdHJ1bmsKKzExMjY4IDdkMjMyYzBlNGRkNmM5MGJmMzM5YmVjN2U2NzNkNGM3ODc5NTcxN2EgbGVnYWN5LXRydW5rCisxMTI2OSBkMmJmYzg2NTQyODBhNzljMTdkYTI2YzVhY2MwMDRjNzIwNDhkMmVjIGxlZ2FjeS10cnVuaworMTEyNzAgZDY0MmU2NzQ4ZDEyYzNhYmYzNzdkODU1MGFmOWM0MmU4ODI3MGMwYiBsZWdhY3ktdHJ1bmsKKzExMjcxIGQzMmRiYzIwMjYxM2UyOWJhYjM4Y2NlZjZkZjk5N2U1MWFmODg5MDcgbGVnYWN5LXRydW5rCisxMTI3MiAxMDc2YTAyODM2NWEyZWQ1YmRmYzUxOWMyZjk1N2ZlYjFiMjFmZDVmIGxlZ2FjeS10cnVuaworMTEyNzMgMzNkNTkzMzZlN2U2ZmJjNTY3NzRkYmQzNDlkMjA1ZGZmZDVhMmQ5NyBsZWdhY3ktdHJ1bmsKKzExMjc0IDBmNWUwYjQwNWJjMmYyYWI3NDVmODM2NDBjZTY0ZDkyN2U1MzhjMDkgbGVnYWN5LXRydW5rCisxMTI3NSAxZjgwNGZhY2Y2MzU0ZmEyZjJlYjg3YTE1OGZlODE5YWQ1YzdhZDFmIGxlZ2FjeS10cnVuaworMTEyNzYgMGUzMGIzNWI4YTNmZmUzNTYwYTA1ZGU1MjExODYzMzc3M2YwZGExZiBsZWdhY3ktdHJ1bmsKKzExMjc3IGI4ZDJiYTU5NzExYzIyNzAwNDM2OGM5ZjkxYmY5ZTQ3MzAwOGY4ODAgbGVnYWN5LXRydW5rCisxMTI3OCA2ZmJiNTYwN2NkZDYwNGM0MTQyMjdjMjNkMjYwZjA2NDE1OWUzMWU2IGxlZ2FjeS10cnVuaworMTEyNzkgZDUxZDFhNjFiMWNlZjQ3NzgzZWE4N2Q2NTE1ZTU1NzM3NjgwNjc4OCBsZWdhY3ktdHJ1bmsKKzExMjgwIGNhMWU1YmM1MjA5ZDg0NzEyNzNlOTNmNTJlNDQ4YTNkYmRlNGNlZDcgbGVnYWN5LXRydW5rCisxMTI4MSA0NDcyNmIwNTg3MDBhZDkzZmYyMDgzZTkxZDcyMWNjNTNlYzExMmQxIGxlZ2FjeS10cnVuaworMTEyODIgZThiNTZiMzg3MDQ1YWU3NGRkOWMzZjk4ZDhkNGU5MWNjYWE1ZmI2ZSBsZWdhY3ktdHJ1bmsKKzExMjgzIDYxNDY0MDM3ZGE1M2MyZDA1NTIxZjk3ZmFmYzJjZWUzZjg0M2JjYjggbGVnYWN5LXRydW5rCisxMTI4NCA4MWNiOTQwMWEyMWI3Yzg2MjllODI0OWIyZTMwOTgzM2RlMDZkYTA3IGxlZ2FjeS10cnVuaworMTEyODUgNGQxOGViZDRjZjQyM2VmODdiYmJhNzk2NGRjMzJhNGVkMWU4ZmU3YSBsZWdhY3ktdHJ1bmsKKzExMjg2IDVkNWE1YmM4ZGU1Y2I2Mjg5NDVkYTk5YzZmMTI4NmI0MzUyZmM0NjUgbGVnYWN5LXRydW5rCisxMTI4NyBjOWU0NTcwNWVjOWUxMjk0MDAzYmIxOTJlYTdiNjdlMzMwYjQzOTgwIGxlZ2FjeS10cnVuaworMTEyODggOGU5ZDIxNDZhZTkzMDIxNWMxMTY2MTM5NWYzNDY2NzY3ZTk5ODE5YiBsZWdhY3ktdHJ1bmsKKzExMjg5IDY0NWEzMjhlN2ZkNDk0OWNmNmUyMzQzODc3NDNiMjQzZmU0YTIwZGYgbGVnYWN5LXRydW5rCisxMTI5MCA3ODc4NTk4NWEyYWI1ODFiNGU1NTVmOGM1ZGVlZTM3MWVkNTFkM2JkIGxlZ2FjeS10cnVuaworMTEyOTEgYzVkNzJiY2RhOTMyYThkMzZjYTM2MDA1YjQ1YWJhYjhmYjc5ZDc5MSBsZWdhY3ktdHJ1bmsKKzExMjkyIDRhYTc2NDgwZDgxMjU4OTJjNTE1YWUxYmMzMTRmOTBkM2UwNDRmN2EgbGVnYWN5LXRydW5rCisxMTI5MyBlNThhNjE0ZmI4ZTQwZWFhNjcyMTIxMjk2MzIxYjk5ZDA4YmE2ZTFiIGxlZ2FjeS10cnVuaworMTEyOTQgMTQwNjkzNzQ0YTNjODUzZjdiNDQ2OTRmNmEzNzU4YjQxYWNjNmZmNCBsZWdhY3ktdHJ1bmsKKzExMjk1IGRkNjQ5ODM3ZWJkNDg5ODQyNTU3MWVhYjI0NjFkNjFmZDMxZjhjYWMgbGVnYWN5LXRydW5rCisxMTI5NiA2NzM4ZTUzODM5Nzc0ZmFlMjg2ZDdlOTExMGI4NjMzZjJkZjVhZDY0IGxlZ2FjeS10cnVuaworMTEyOTcgODQ2MGJkYzNkYmY3YjdlNmQzM2Q3MzkwNDNkYThjYTFmOGZkMTA3NSBsZWdhY3ktdHJ1bmsKKzExMjk4IGQ4YjQ2MTk4OTIzOGQ4MmY4M2RhZWJmZjU5OTMzNWZmODcwZGZlOGQgbGVnYWN5LXRydW5rCisxMTI5OSAwZWRkMzhkYjIyODg0NTk1YWFjYTMxMTRjNzQ1MTk3YzIxYTdlYWRkIGxlZ2FjeS10cnVuaworMTEzMDAgNzFmY2M0Y2EwZThhZWRjOTE2MThiMmIwMTMyMDNiNWUwNTJlYmFhOSBsZWdhY3ktdHJ1bmsKKzExMzAxIGMyODAxMTAwMGVkMzY5M2Q2M2MyMTRkMzMwYTRmN2IxMjU0MjI1ZjYgbGVnYWN5LXRydW5rCisxMTMwMiA5YjBkZGE5YTU1OGJkNWVlYzk2ZTkzNDYzNmViNWUzNDUxOTAxNDc0IGxlZ2FjeS10cnVuaworMTEzMDQgYTFjMTZhM2ZhN2RiNDBhMzc1NTg3YTIyMzU3ZDBkMDFkZWJjYmQ4NiBsZWdhY3ktdHJ1bmsKKzExMzA1IGJkNDdlZTA2OGI4M2ZiOWYyYThiNmE5ODlhYjQwZjNmODhjNGY5NjggbGVnYWN5LXRydW5rCisxMTMwNiBmMmE0YTJiNjA4NjA3YjBhZmM4N2M2YmRiZWIwZGIxNjAxYmE5Y2JlIGxlZ2FjeS10cnVuaworMTEzMDcgYjA0MDk4YTI1NmQwMDQ2ZDljZWE0Y2M0NmM4OGE5ZGRhMDk2MjFiMyBsZWdhY3ktdHJ1bmsKKzExMzA4IDEyOTg3MGUyMTc5YTkxZDI3OGFkZWY3YWM3YTU5Njk5NzgwYmVmMGEgbGVnYWN5LXRydW5rCisxMTMwOSA0YmZhNTNiZDk3YmMwNjc2MmU3YzNiMTMxMDgzYzRmYmFhMmMzYzUxIGxlZ2FjeS10cnVuaworMTEzMTAgZGYxNjAyYjZhMmE4NjIxNjYxODZkYWI0MDc2MGFkNTg2NGQ1NzM4YyBsZWdhY3ktdHJ1bmsKKzExMzExIDg1MzIxNDFjZmY0YzFmNWRmNmRkNWU2NjNmZWViNWYyMTUwMmU2YWUgbGVnYWN5LXRydW5rCisxMTMxMiAzY2MyZmFkNGUwMjBlMTdkODNlYTBiMGE3NWMzNjZmYmEyODRiMDFlIGxlZ2FjeS10cnVuaworMTEzMTMgZWVjNGRjZWI0NDM2YWFlNjA1ODBlN2E2OWFiNDAwMDY1ZDgwNDdmYiBsZWdhY3ktdHJ1bmsKKzExMzE0IDAwYTZiYjY1ZmYyOTNjMGUwYThkNjIzYzVlMjU0M2M5YjVkMTlkMmIgbGVnYWN5LXRydW5rCisxMTMxNSA3NDFkNTA2MThlYzJjYWE3YzY1NzhlZjA5ZjU5OTgwNWY3OGI5MDA4IGxlZ2FjeS10cnVuaworMTEzMTYgMDQ1ZTkwMGE0MTk4ZTAyYWNhMmQxODE4ODk3YzFiYmFmNWZjODgwOSBsZWdhY3ktdHJ1bmsKKzExMzE3IDMzNmNiNTA5ODc5YTQ5YzI3YzI1NTJkNzc2MTZiMTBjNTMzNGQxODEgbGVnYWN5LXRydW5rCisxMTMxOCBiMDRmOTVmZWRkNTBjYTFhZDViMzkyZGFlYmJmNDdjMWY4MWQ3NmQ0IGxlZ2FjeS10cnVuaworMTEzMTkgZjFjYTQxOTk1ZTYyZTUxNzI5ZmE2YjdjNzg3YjE0OTI3ZmMyZGVkMCBsZWdhY3ktdHJ1bmsKKzExMzIwIDkyOWRiODM4NWJhNGE1M2UwYmEzYjFlZDY4NGY0MzZmMWRlYjYwMzcgbGVnYWN5LXRydW5rCisxMTMyMSBlNWE4MzExNjg0ZTRiZGEzNzJiY2ZmNzcwNjUwNjRmOGRlNDk1OGI3IGxlZ2FjeS10cnVuaworMTEzMjIgYzJmOWU1MDVmNzVhMWRhOTFjYTIxN2IwN2MwM2IwMzk3NDU5ZjkxNSBsZWdhY3ktdHJ1bmsKKzExMzIzIDQ0YmFlZjhhYjVjODlkMzRiMTRmOTA4M2VjZGUwMTk3MmJmMGZkMjggbGVnYWN5LXRydW5rCisxMTMyNCBiZDZkOTdkNmIyYWUwYjc3MGJjODI5NTI5ZjQzNTA0Y2Y3YWU1ZDAyIGxlZ2FjeS10cnVuaworMTEzMjUgOGEzNzA1MjZkZTA2YWQzZGIwZDFjMzE0MDU4ZjA4NmM0NjQ4YWQzYiBsZWdhY3ktdHJ1bmsKKzExMzI2IDFjN2Q4NjA4NzFkOWQxMGVlZGViOWFjY2IzNjE2M2Y5NjEzOTViMWQgbGVnYWN5LXRydW5rCisxMTMyNyBiNjVlYTgxMjc3NTI1YTllNGRkMjc2NzA0NDU0M2Y5ZDMxMmY3ZDU2IGxlZ2FjeS10cnVuaworMTEzMjggYjkzM2Y1ODRhMjZkMDMxMjY0MWU2YzM4YjBlODUxODU3MzlkZmVkOCBsZWdhY3ktdHJ1bmsKKzExMzI5IDc0NTMzNDU0NTg5ODFiZTg4MGQ5NjA0MzliMTMyMDY1NjAzNjM0ODkgbGVnYWN5LXRydW5rCisxMTMzMCAwODY3MDIyNTAxNTM0YTFmMjRkMDEzYThkOGUyZGY1OWI2ZmZiNzExIGxlZ2FjeS10cnVuaworMTEzMzEgMzdjNjkxOGVmZDNiY2ExMmZkMzU3MjYzYTY1MTUxOGJhOTJhNTg3NiBsZWdhY3ktdHJ1bmsKKzExMzMyIDYxZWY4ODE4Njk1YmQ0MzZkZjBjOGRhZjgyNDgwYTQ1N2QzMDcwYjkgbGVnYWN5LXRydW5rCisxMTMzMyBjMzUxNTIzZWJjMDVlZWJkYzljNDQ5NzQxMDg2YWYwZjU2YjNjNWE5IGxlZ2FjeS10cnVuaworMTEzMzQgNTM0YTFhNDM3YWYzYTliOGVhZjczNTMyMzg2MWUyNzI4OTBlZDA2ZiBsZWdhY3ktdHJ1bmsKKzExMzM1IGNlZjIwZWM2ZjI0OWNjNDYyZDljNGYyZmY3OWRiNGRkZGVlMThkODEgbGVnYWN5LXRydW5rCisxMTMzNiBiYmU5ZDcyYmNjZGEyN2E5ZGFhMzNlMDU4ODI5MDNmZDlmM2JlYmVlIGxlZ2FjeS10cnVuaworMTEzMzcgNWY5ZGZmNjgxNzk3ZmY5NDA3OTQ4NDAzYjI4YzA2NzQ4MDUyYjlkNCBsZWdhY3ktdHJ1bmsKKzExMzM4IDM1NGNkMjRlNWRmZTQyYTBmODJmMDMwMWY3OWFhMDA4NzY5MDYwNDAgbGVnYWN5LXRydW5rCisxMTMzOSBkMjgwNDYwOGJlY2QwOGExYTRiNWUyOWVkYTBiMzkwNTBkNGZlZjJhIGxlZ2FjeS10cnVuaworMTEzNDAgZjdkNGE1ODVkYTAxODZjMGI1Yjg4YjgwMTRlN2NhOTRmMzBmNzYzMSBsZWdhY3ktdHJ1bmsKKzExMzQxIDU2NzYwNzA3NmQ4ZjRjNzZhMjkyNzY3YmI0NDM4YzNjMmE5NDgwNmEgbGVnYWN5LXRydW5rCisxMTM0MiA4NjUzZTFmMjE5ZjFiZDIyNjFlMTM3Yzk2ZjcwZmZlMTNiYTUwYTAyIGxlZ2FjeS10cnVuaworMTEzNDMgZDgwOGViYTRiM2M2NTMwNDg4MGYwZTJlNmQ1YjEyMzY2MmJkYmNhOCBsZWdhY3ktdHJ1bmsKKzExMzQ0IGUxNDQ1OGYxMzZjY2FlM2Q3YTZiNDljMTgxNjM4MWFlNjJlYzExOTggbGVnYWN5LXRydW5rCisxMTM0NSBlMDI0YzY5NjI1ZTEyZjhlZDk2NjY1NmE1ZmY1M2QwNWZjMWYzNTFjIGxlZ2FjeS10cnVuaworMTEzNDYgODAxMWYxNDY2OWE4MTdkNGJlOWNmMTUyZDM1MzBkNTQ0YzMyYWJkNyBsZWdhY3ktdHJ1bmsKKzExMzQ3IDVjZGVjYWFhOWJlYjBkMzdkZDFlNDQ5YTgxOWJkZWE0MTI0ZTFlZGUgbGVnYWN5LXRydW5rCisxMTM0OCBmNDU2ZjVhYTU3MTg1YTJkMzFjOTIwYTljMzYyY2UwYmNlMzA0NzZiIGxlZ2FjeS10cnVuaworMTEzNDkgYTFlYzNlYzI2MDJlY2E1ODI2ZWI4MGRmNjIxNDkwODc1ODkzYjYwNSBsZWdhY3ktdHJ1bmsKKzExMzUwIGJiNzhjYzI3NDY5YWI0YmU4NzM4YTBlYzA2ZmExMTg4MjYzMmE5NjcgbGVnYWN5LXRydW5rCisxMTM1MSBmOGUyYWQ0Y2Q0NWJjM2IxYmQxMTY0NTA4ZTIxMmEwZDZhZmFlMDczIGxlZ2FjeS10cnVuaworMTEzNTIgNTcwODlhZDRkNzNjNmUyMGJhZjg1OTZhMjk1YTY2OWNjY2Q5NjYwZiBsZWdhY3ktdHJ1bmsKKzExMzUzIDNiYzNmOTRkNjA2MWU0ZjJhZjM1NzhkNWRlMDBjNmU2YzA0NGEzODAgbGVnYWN5LXRydW5rCisxMTM1NCAwNWMxMTA0ZTA4NGIzMTQ2Mzc0YzkyODc5YjZkYjI0MjU0NjA0Nzk4IGxlZ2FjeS10cnVuaworMTEzNTUgODY4YTI1Y2Y2NTNiZjA1ZWIzOTc1OWU4YTdhMGFmZTc4MWRiZGJmZiBsZWdhY3ktdHJ1bmsKKzExMzU2IGFhY2JmZGY0OTQzZTUyOTg3Y2MzNWFhYTk0MTljNzJmOWRhZmQyNGMgbGVnYWN5LXRydW5rCisxMTM1NyAxMDc5MGYxNGQxM2FiZDI2YWEyMjhmMGMxOGYzYmRjZDU0OTZhM2QwIGxlZ2FjeS10cnVuaworMTEzNTggNzJiNjk4YzMzMjRiOTkwNWE0MzcwM2IxMjhlZTdlYzM5ZjNmMWI5MSBsZWdhY3ktdHJ1bmsKKzExMzU5IGQzNDJlYjQ0ZDdiZGQ1NGY3NTI5ODAwNjc4MzNlN2E0OTkyNWFlZjEgbGVnYWN5LXRydW5rCisxMTM2MCBlYjA1OWEzM2Y3ZmYzMWM5OTI4NjU4Nzc1ZjhjNDk2OGI5OThmMDk2IGxlZ2FjeS10cnVuaworMTEzNjEgODEzZjUyN2YzYmVjMDFjZDdjMmRkOTljMmI0Y2ViMGQzNDNhZThjYyBsZWdhY3ktdHJ1bmsKKzExMzYyIDI3ZWUzMjMxZGZhOWJlYzgwYTgyYjRlNTUzZDYyYzg3ZjEyMzQyZDMgbGVnYWN5LXRydW5rCisxMTM2MyBhOWViMjY1ZDJmNTcwZGViZmQ0ZDk2ZDU0NWYwZDIyN2M2MTUzMTYyIGxlZ2FjeS10cnVuaworMTEzNjQgZmViY2E2YjE4MjdkZGRkYTNhM2QyOWJmOTY4MjVjZDYzNDIxMTk4MiBsZWdhY3ktdHJ1bmsKKzExMzY1IGIyOGI4NGU2YTQyOTQwNWEzMWRlNzJlOWE1MWZiMzMwNTcwNmM4ZjUgbGVnYWN5LXRydW5rCisxMTM2NiBmODhmNDAyNDE3ZjI5ZjNjNDNhYTZiMzc2NGUyZDMyNmVhYjMyNjI5IGxlZ2FjeS10cnVuaworMTEzNjcgODVkY2UzMmFjZjlkNzk3ODhhOWNmYjliNmM0ZmMwMjA3ZjEzMTc2ZCBsZWdhY3ktdHJ1bmsKKzExMzY4IGMwYTllZDIxZGZhMDU2MDJjZjc0YTk5NDgwYjU2YTkxMjA2OWQyZjUgbGVnYWN5LXRydW5rCisxMTM2OSAwNGE0OTJmMTEwZGJkYzcwNmNiNmY4ZDAzY2ZjNmZkYTk4ODM4NTNjIGxlZ2FjeS10cnVuaworMTEzNzAgOGMwNTI0YTcxMjQ0ZmQwZWNhOGViNmVhMGZjMmQyOGNmZDk3YmI5YyBsZWdhY3ktdHJ1bmsKKzExMzcxIDlhMDc1YTJlZGIxZjU0MmY4ODkxYjk2MTRkMjk2ZTczMDIzNmZiNGUgbGVnYWN5LXRydW5rCisxMTM3MiAzNDAxMjEyZTU0ZmMzODA1Y2I2N2M5OTcwMTQyYjUzYzA5ZTNiMWZkIGxlZ2FjeS10cnVuaworMTEzNzMgMzFjMDYzNTE3YzIyZWMzNGM3ZTIwZDAzMzRhNWM4MTliZDA0ZWQ0YSBsZWdhY3ktdHJ1bmsKKzExMzc0IDYwYjRhNjEwZGNmY2NhYTczYjcwNjZhMWU3MDIwOGFjYzJjYTU0NTQgbGVnYWN5LXRydW5rCisxMTM3NSBhNzA4MzI5NWViMzhlYWMwMGJkMWZlNDk5ZmMxM2RjNDNlMWRmMTJlIGxlZ2FjeS10cnVuaworMTEzNzYgMDkwNjNlZWRhMmI3MDNkYTg5YzIyYjc2YzYwN2YzYjhkMzI1ZjE3ZCBsZWdhY3ktdHJ1bmsKKzExMzc3IDc2NGRlNzMxYzgwNjNmYTQzYzU2MjY5OTdhY2Q5MWUzMjVhMmQxMzUgbGVnYWN5LXRydW5rCisxMTM3OCA5YjRiYzNiOGI5ZDRjZDA1ZTgwMWNmZjhlMTM4ZTM0MTA5NTE2ZGVhIGxlZ2FjeS10cnVuaworMTEzNzkgZDI5NWE1MTg3NGE2YWZhMmFmMjE3ZmFiOWIwZjIyN2EzNTQ3MmQ2NyBsZWdhY3ktdHJ1bmsKKzExMzgwIDlkYjhiNWVhNmIyMTIyMDY5ZDdjNjZiYjEwNjkwMzljYjY2OGU0YWUgbGVnYWN5LXRydW5rCisxMTM4MSA0OTIzNjNkNmJjOTQ1MTE4NGMyZWY0NTMzNDBmMWUxY2U3ZmVkMDllIGxlZ2FjeS10cnVuaworMTEzODIgMzg1NDRmODI4ZDc0MDhlMjdmOWUzZDg4ZTAyNGNhNGMwZmE2NTRjMyBsZWdhY3ktdHJ1bmsKKzExMzgzIDZkYzBhOWRjNWJiYjkxYTU0YzM5MTIyYmQ0NTdjYjk1MTU4YmQ3ZjkgbGVnYWN5LXRydW5rCisxMTM4NCBkZGY3MTBiN2U2ZWI2ZmZiNTIwODgxM2I0MTZlZTRjNjgzZDQwZmViIGxlZ2FjeS10cnVuaworMTEzODUgNmY3M2FlMWNmOTM0NmE3MTY5NmJkZDVmYTU5M2MxZTIwMzYyYzY1YiBsZWdhY3ktdHJ1bmsKKzExMzg2IDZkOGI5MmNhZjhjZGI1MmUwNjhjY2NjN2FlYjU1NDUyZTAwMTdjNmIgbGVnYWN5LXRydW5rCisxMTM4NyBkNDFmZjViMTkxZDFkMTE2Yjg3YmRkMzA3ZGM1OWIxMDJmM2ZkNWFlIGxlZ2FjeS10cnVuaworMTEzODggMjlkODQ3YzQyOGY5ZGE3MTk5MGM0OTJhYmVlN2NhZjQ4ZTM2YmM0NyBsZWdhY3ktdHJ1bmsKKzExMzg5IDk4MDM1NTZjMWFlN2MzZmVlZWRhMWMwZWU0ZWI4ODhlZjRlY2VjODkgbGVnYWN5LXRydW5rCisxMTM5MCBhNWI3MWE4YTFhYjU4Njk2MmM0NjYwZWJhYmU4M2Q3Y2IyODU4OTdiIGxlZ2FjeS10cnVuaworMTEzOTEgN2Q2ODEzNTIxZjYxMzU5ZWM3NmIyOTBiYTczNTFlYmQ3ZmNlYjY5NyBsZWdhY3ktdHJ1bmsKKzExMzkyIDg5ZTY1YTk2YTdkM2ZhODA1NTM1NTM0ZjBiN2Q5ZTU0NGFlNWZjODAgbGVnYWN5LXRydW5rCisxMTM5MyBiMWQxZDhjMDA3MWJhN2NkNzM0YjdiMWQ1ZmMxNDAzZjk1ZTJkYjY3IGxlZ2FjeS10cnVuaworMTEzOTQgOWE5ODQyNzZjYzU2NWNhMmZkNmY2NWI2YjM0ZjM1MjMxOTY0YjZiZSBsZWdhY3ktdHJ1bmsKKzExMzk1IDQ1OWJkYTk0MGRhYTI3ODE0Zjc5OTdiZmE1NDYxMjNmMDRiNDAxNjcgbGVnYWN5LXRydW5rCisxMTM5NiBkNmI3Mzk2MjUyOWJiNjYxNGY2M2MyNWVjZWYzY2E3NjEyYmVjN2I5IGxlZ2FjeS10cnVuaworMTEzOTcgOWE0MDU0Yjg0ODVmZjRlYWY2NmM0ZjBiNzAwN2Q4OTdjNDQ2ODQyYiBsZWdhY3ktdHJ1bmsKKzExMzk4IDU1MmM2YjNhYmEzZGU1MDU0YmJmNDY5ZWU0NmY0NGY1NmIxYjkxZGIgbGVnYWN5LXRydW5rCisxMTM5OSA2YjYzM2RmNDFlNTk1MWFhY2M0ZjBiZjg3NTY5NWNiYTA3YzIyMzQyIGxlZ2FjeS10cnVuaworMTE0MDAgZTU1YTc5ZmY4MjI4ZjkyMmE4Y2NjNmU4YWI5NmI2OTEzNmM0ZDA3OCBsZWdhY3ktdHJ1bmsKKzExNDAxIGFjZmZmZTE0NjI4ZTQ0OGJmZWIwOGI1YThkMzkyMTE0OWY0ODZhNGMgbGVnYWN5LXRydW5rCisxMTQwMiA2MTA2ODBlM2I5MjkzZmI2Y2QxZDMxZDFkYTYwNTAzZTM5YWNiMGZjIGxlZ2FjeS10cnVuaworMTE0MDMgMDI3ZjNlZWY2ZTVhNzllZWM0NDI4NjE1MDAxMTM4ZDk2ZTcxM2EyYiBsZWdhY3ktdHJ1bmsKKzExNDA0IGQwZjkzZWJhOWJhYWQwYzRiYWI1OWYzN2FiMmNjZjQ5MmRhNTJiMzQgbGVnYWN5LXRydW5rCisxMTQwNSA4ZTQxOTA2ODYzYmU3YmI0N2QxMTNmZTdlYTBhYjQ5ZmIyZDE2NGMyIGxlZ2FjeS10cnVuaworMTE0MDYgMjhiYzVkOGU4ZGNhMzZiMzNmMDE0ZjMyNTMyZDBkZTJlN2M3MmEzZCBsZWdhY3ktdHJ1bmsKKzExNDA3IDA5NTRhZDRhY2RmZGU1YzhjZjVkNTYzYjBkMDljNTAxNjI2NzMzNDkgbGVnYWN5LXRydW5rCisxMTQwOCBiZTkzNTg1MWRjNTBjM2RkYWZmZmNjODA5MDZiNGM5OTBhMDM5MjE5IGxlZ2FjeS10cnVuaworMTE0MDkgYWY5YmY4NGZiYzVlYTQyYjlhNjEzODdhYWQ5MWE3NTIxMzkxZTYwNCBsZWdhY3ktdHJ1bmsKKzExNDEwIDczZjlhMWU4YWU1MmMwNWE1NDg3YTYxMTViZWU2ZDE5NTBkY2MxMjQgbGVnYWN5LXRydW5rCisxMTQxMSBhODI0OWE2YjFiNThlNDdkZGU4MzMyMzkxMzgzMTViNzkzYWQ4NzUzIGxlZ2FjeS10cnVuaworMTE0MTIgYmE4ZDFiYzk4YjJkODE1OWQ5ZmQwZjdhMDdiNDY1OGU0MTY4NTg2YSBsZWdhY3ktdHJ1bmsKKzExNDEzIGM0NWEyZDkxMWYzMTU2NmYzM2UzZTE2N2VhYjhjZDI0ZDNjZWJkMzQgbGVnYWN5LXRydW5rCisxMTQxNCBkYWUyZjJlZjkwMTVhYTNlMzhiNzEwY2VkNTA0ODRlZGY2NTg4MGMyIGxlZ2FjeS10cnVuaworMTE0MTUgMGJhODFiOTk4OGVlZmVkMWQ2MTAxMDdlMmVkZWU3NjE4YTdhYTBiNyBsZWdhY3ktdHJ1bmsKKzExNDE2IGRjNmVkZmQ0YmFlNWJmYjMzZTVkYTI3MDk2MzY4N2U1YmM0ZTJkNWMgbGVnYWN5LXRydW5rCisxMTQxNyAyMGI4M2NhMDZjZThhMTg3MzYzZTRjZWZmMTA1Mzg1MWE4OTFkYWQ2IGxlZ2FjeS10cnVuaworMTE0MTggMmY5MzZiN2EwOWY5NGYxODA0Y2FjYTdiNzE0ZTQ4M2NkZDQ0NWRkYSBsZWdhY3ktdHJ1bmsKKzExNDE5IDViNzNkNWJhYmM3OGU5MWFiNTUwNWViODY2NmMxMTgxMjI1OTVlNzIgbGVnYWN5LXRydW5rCisxMTQyMCAxOTdhYzVhZDMwY2RmMzYwOTM4NzUxOTMwYTE1MTdhYmJjMDcyZTJhIGxlZ2FjeS10cnVuaworMTE0MjEgYjRlMmIyY2I2NWIxYmQxMDVmN2ZjYjI5NWEyYWNlOTkyOGYzNmQwNiBsZWdhY3ktdHJ1bmsKKzExNDIyIDM0Nzg4NGVjNTMxODEzN2NlMmI3YTRmOGJiYmE0MTE1NTVkNDA3ZDUgbGVnYWN5LXRydW5rCisxMTQyMyAyZDc3NTMwODUzODU5MmRlYThkZGI5Mjk2ODlhMjIxMGQ4YWViNjM3IGxlZ2FjeS10cnVuaworMTE0MjQgNDAwODllNTU4MzA5MGNhZWJjMzA5ZTQzNmE3ZDBhOGNkM2FiMWI3YyBsZWdhY3ktdHJ1bmsKKzExNDI1IGZkYTQ2M2MzYjE3Njc4OTdlODUwNzFhNDE2NjRkYTk0NDk2ODNiMTAgbGVnYWN5LXRydW5rCisxMTQyNiAwZjMzMTg4M2NjMTVmMDUzZWU5N2VkOWM0NmI1MjFhZjE2MTZlOGFkIGxlZ2FjeS10cnVuaworMTE0MjcgM2IwMjkxNjU1ZTMxNjMxMmFiY2VlYjdlYmFjY2Q1NWQ5NDhmMDJhMSBsZWdhY3ktdHJ1bmsKKzExNDI4IDc2MDFhN2U5NTgzZGU1ZGI5MDkzYThiYjM4Zjk1MDA5OGJjNjllZjcgbGVnYWN5LXRydW5rCisxMTQyOSA1MGFmYTI4YWE0YjkxOWM5ZTZjMmQ2YTc1ZmRkNjZmNGQyYjA3ZTg1IGxlZ2FjeS10cnVuaworMTE0MzAgYzkxODA5Y2Q2N2U1NDFiZTY0YTgwZGEyMmU0NTAzMmIzZTE3ZjAyOCBsZWdhY3ktdHJ1bmsKKzExNDMxIDdjZDQyYzg3OGYxNjE5YjJkZTQ4NmQ2YjdkYWEzOTE3YmMzN2MzNmEgbGVnYWN5LXRydW5rCisxMTQzMiAwYTY4OTJiMWE0YWMyODI5Y2Y5YmFjMmYxN2JlNzU4YTRhMTI3MDA5IGxlZ2FjeS10cnVuaworMTE0MzMgY2YzY2ViYTdlZmRkZWQ2MjU3YTk3NjdjZWJjNjVkN2I4ZjdkODU2YiBsZWdhY3ktdHJ1bmsKKzExNDM0IDhhY2M3MmE4MTMxOTk4ZjgwNTY3OGYzYjFiNWU4ODVjYmY1ZTNiZDEgbGVnYWN5LXRydW5rCisxMTQzNSBjYjdhMTUwNjkxOWFmNGY3N2I3MDczZDhmMTZiYzA4OGYzNGIzNGJjIGxlZ2FjeS10cnVuaworMTE0MzYgOTkwMTUzODUzZTNiYjFlNzk3OTdhZmMzOWM0ZWE4N2EwNzU1N2U5NSBsZWdhY3ktdHJ1bmsKKzExNDM3IDM4NGZmZWQyNTJlOTFmZDg0ODg4ZWJlNWVkZWQ0OGVkOTZmZTUxMjUgbGVnYWN5LXRydW5rCisxMTQzOCBjMjY1OTBiMWMzOTZiNTcwZWYyOTZhZjM4MmU2MDJkZWNiM2JlZGU3IGxlZ2FjeS10cnVuaworMTE0MzkgYWMxODgxYzRiYTZkOWQwNmE5NmI3MWMxMTYzOTdiMjE0NjA5MGFmYSBsZWdhY3ktdHJ1bmsKKzExNDQwIGM3OWRlZmI1YTM5YzFiZDczYzNkNjJhYTdhMGIyYTExZjg5MmEzYjcgbGVnYWN5LXRydW5rCisxMTQ0MSAyNDljZDQ0MzNjZjA4ZWJmMmI4Njk1MjgzMjAxNDdjNWI0MmU3Y2ZlIGxlZ2FjeS10cnVuaworMTE0NDIgYTFkZWFmMDQyNzdiYmI4YTBkYTZlM2NlNzVlYTY0MzU4MzUyOGUxMCBsZWdhY3ktdHJ1bmsKKzExNDQzIDk2MThhODY4NzljYWVmYWFhN2NjMDM3NmQxMDhmNTUwYmFkM2VlMGUgbGVnYWN5LXRydW5rCisxMTQ0NCBlNzk1OGU4Yzc3N2E3ODRiOWMwYzY2ZTYxOWM5NTI3ZWM2NDZlZWFiIGxlZ2FjeS10cnVuaworMTE0NDUgZWNkZDk2ZGRiMDAzNWY3YmFhNzEzZmNiNDI2NjY2NDlkYTU5MzU2NyBsZWdhY3ktdHJ1bmsKKzExNDQ2IDRiNjRmMTMxYWE0ZDg1MzQyM2Y0MzEyNzY5OTJhNzFjZTA0NDk1YjQgbGVnYWN5LXRydW5rCisxMTQ0NyA5OWZmZTBhMzhhMWNhZDM4YWJmNTk1NWI3ZDUwODRhYzllMDAyOGJlIGxlZ2FjeS10cnVuaworMTE0NDggYmUyMWFhZGY0OTA4ZjdkOWVmMGRmNTA4NGIyYzM4OWIyMzc5ZjkxYSBsZWdhY3ktdHJ1bmsKKzExNDQ5IGM0YzMyOGFhYmQ4MjVhYWU5ZGQ0N2VkZDBjOWU2MDdmNGM2YmY5Y2YgbGVnYWN5LXRydW5rCisxMTQ1MCBkZTE2ZTE5ZmYxZGQ4YjBmOGE4ODU1NmNlNDU2MTAyMTUwODA0ZjI2IGxlZ2FjeS10cnVuaworMTE0NTEgMTU3ZTRmMjBjZDcxNjA5NGE3ZmQ5NWQ2OWQxZTNjZDQ0N2RlOGY4MSBsZWdhY3ktdHJ1bmsKKzExNDUyIDQ1NjE0Y2Y5ZTkxMWIwZDY0MDQzMzI3Y2ZlYWU1Y2Q2ZjkyMWY5MWQgbGVnYWN5LXRydW5rCisxMTQ1MyA1OGQ2OTBkNGUzMTI4Mzc1YjRjNjUxNzg5NWEyYTQxNjU0Mjk1ZDU0IGxlZ2FjeS10cnVuaworMTE0NTQgNzg4NWYxNWRhMDgwMWM5YTM1NzliNmFhODYxODgyOGUxNzlmOWU3NiBsZWdhY3ktdHJ1bmsKKzExNDU1IDQ2OGNhODRmYmMxNGEyNTVjYTMwZjk5ZGY5ZDkxZTFkZDliYmIyN2MgbGVnYWN5LXRydW5rCisxMTQ1NSBmZWQ2M2NjYmU2ZGMzYWM2NjNiZmU5N2EyZjcwMDZiMWIyODU2OGY5IGxlZ2FjeS10cnVuaworMTE0NTcgZDY5Y2ZjMjNhYTc2NjQzMGMxZDUzMTg3ZGNhMjBjOWFmMjY5YmU1YyBsZWdhY3ktdHJ1bmsKKzExNDU4IDNiY2Q2Mjc4ZTY1ODEwN2VkYmI0NjdhMWM0YjNlMTNiYjcwYzI2ZDUgbGVnYWN5LXRydW5rCisxMTQ1OSA4MmE0M2UxYmZhNGZkYTA2MDIzN2IwMWYzOTc0YjVkOGViZmY4OWEyIGxlZ2FjeS10cnVuaworMTE0NjAgMDdkOTdkMTU0NmQ0YjNjNDQ3OTViY2NmNGMzZDlhZjZhODUxMTk1ZCBsZWdhY3ktdHJ1bmsKKzExNDYxIDBhZmMzODI3OTc3ZTEyYjBmNzNiYmI5YTAzN2NiY2RjOTUyYmQ4OWYgbGVnYWN5LXRydW5rCisxMTQ2MiAyNmMwNDFiMTQ1YzE5NWI0ZGZiODJkZjhiMmMzZTljYTU5NmZlMDE5IGxlZ2FjeS10cnVuaworMTE0NjMgZjFlNDFmYzI3ODNjMTlkZDk2NTdlNWMwNzhhOTBlZTYzOTUwMWU3NiBsZWdhY3ktdHJ1bmsKKzExNDY0IDAzOTgwNTFmOGZmYWUxNzUxMzdjY2E2NjZhOWIzYTNmNmMzZmY2OTggbGVnYWN5LXRydW5rCisxMTQ2NSA3YzJiYzdkYjQ5MzM2Y2MxNjRlMjhiM2E4OGMxMTQxYzJmMDM0MzFlIGxlZ2FjeS10cnVuaworMTE0NjYgNGVmNjQwYWNmMjM2NWFhNzE1Mjc5ZjE3OWY2OTQxZTU4YzBlMTQwMSBsZWdhY3ktdHJ1bmsKKzExNDY3IDZkNGVhMzdkNzBjMjJhZmE1MGFiN2UwZTA2NTgzNGE2Y2Y0NzQ0NjUgbGVnYWN5LXRydW5rCisxMTQ2OCBkNzg3OGIzODZkYWZhODExYTE4OWNlOWQwY2ViYzJhYzNhNzFiMmUzIGxlZ2FjeS10cnVuaworMTE0NzAgZmY2N2Y5M2M0YTliYzBmZjNlMzVkOGM1ZDg1NzM3ODU4YTQzZTIxMCBsZWdhY3ktdHJ1bmsKKzExNDcxIDNlMTI3YmNhODRlNzJmYmQ5NGEyNGFhM2UxZjM3NThkMGU1M2NlODcgbGVnYWN5LXRydW5rCisxMTQ3MiAwNzBkZTRkMzlkZGQ4NmFjOTZkYmE1NmRlOWRjMzk4ZDE0MjE0NGIxIGxlZ2FjeS10cnVuaworMTE0NzMgNWZiM2M2ODNlODYyNjIzNTY2NmM2MTk0ZDQwNjJkZTUyNDU3OTc1MCBsZWdhY3ktdHJ1bmsKKzExNDc0IGQxNzgyMjcxMjQyMTBlY2E0OTQ5OWU4OTIxYmQ0M2UyOGM4YjQyMTQgbGVnYWN5LXRydW5rCisxMTQ3NSBkYjE2Y2E0ZGU0YzQ4NzgxOWU2MTJlNDg4YjM2OWNiNWY4ODM2ZWUzIGxlZ2FjeS10cnVuaworMTE0NzYgZWUzYWY5MTFhZDU2YjZlZDliMTE1ODJhMTQ3NGUwNDBiYTY1N2UyNSBsZWdhY3ktdHJ1bmsKKzExNDc3IDA5MTgzOTQzMTgyZWIzMmE4NmU5MzM5ZDgyNThhZjMwYWJlZmYwNTIgbGVnYWN5LXRydW5rCisxMTQ3OCA5YzljNGMzZWRlYzJlZDAwNzk3ZWVkNWM2NWIxMGM4M2U3OWIyNGJmIGxlZ2FjeS10cnVuaworMTE0NzkgZjE0NzM5MjYxYTM0YzE4MGNiZTczNzM5MTNjMTAxZGU0MzQ5NDU3MyBsZWdhY3ktdHJ1bmsKKzExNDgwIDNiZGQwZTc5MGJjOTg2OWMxMjYwODhjNmU2ZjBmNzBkM2IzY2Y2OTIgbGVnYWN5LXRydW5rCisxMTQ4MSAyOWUzYjFlYjQ2YjE5MGU3ZDM4YmUzMTdhN2Q4NjYyYTlhN2M5NTQxIGxlZ2FjeS10cnVuaworMTE0ODIgZjg2NGM5ZjY1NjA5NTJiNTE5OTc4NmM3NGE2YzdlZWRiZDVjODg2MyBsZWdhY3ktdHJ1bmsKKzExNDgzIGRmYjdmNDY4Yjc4ZDM3NzU4OTk3ZmJmNmM3ZmZhZmEyYTAyODAwODkgbGVnYWN5LXRydW5rCisxMTQ4NCBjMmRkNGYwODZhNDJiZmE0MTFmYWY3ZGZhNjljMWJhYTkyNzAxODU1IGxlZ2FjeS10cnVuaworMTE0ODUgNDQ1MDUwNzU1NTg2YjU5MTIyYzVmYTRhY2Q4Y2VkYjM4YTVlYTg1OCBsZWdhY3ktdHJ1bmsKKzExNDg2IDcxMTZjYjk3MTJiY2M3MDk5OGRmOTRkZWE3NWY1NWIyMzYzMDliMDcgbGVnYWN5LXRydW5rCisxMTQ4NyBmMTZhNmU2NDg1OWJiOGNmNmM5ODZiNTU0OGEzYWQxMzhiZTkyNTc3IGxlZ2FjeS10cnVuaworMTE0ODggOTNiZWM2YThkYjIxYjFmMTM1MzIwZGIyY2RkY2Q2ODZlYWU2NjA0MiBsZWdhY3ktdHJ1bmsKKzExNDg5IGVjMDFmZTljMjg0MTdhYmVlODMwY2NmMGE4ZGUyNDg1ZjM3OTEwYmIgbGVnYWN5LXRydW5rCisxMTQ5MCBhOWY2ZmIxNGFiZDdjYTIwMThiMDA5YTEwZWZkYWY1OWI0YjdhZTUyIGxlZ2FjeS10cnVuaworMTE0OTEgZmYxYThhMzhmOGMxMWFmYjViOWE3YzM0N2U0MzI5OWNkM2RhZjMwNSBsZWdhY3ktdHJ1bmsKKzExNDkyIGVhYmJlMGVkMzQ2OGNjZWM4YjgwYjIxMjVjNzZjYmNkYjlkMGJmMjIgbGVnYWN5LXRydW5rCisxMTQ5MyA1OTkxNjcyODg1Y2IxYWM0ZGZjZDg5NDFiNmY0YThhMTk3NDNjNjNmIGxlZ2FjeS10cnVuaworMTE0OTQgOWUwMWI3NGRhZjc3YzcxYzc3NTgxZmYzZTQ0ZTE5YWQwMDEwODhlOSBsZWdhY3ktdHJ1bmsKKzExNDk1IGExMTBiNjA2OTliMWI0MTI1NTE3YTE1ZmE4N2RkZTc1MDVmZGVjY2MgbGVnYWN5LXRydW5rCisxMTQ5NiAzNmJmYWZkZGE4ZDE0ZjNiOWZjZjI5NjQ2MTk4YzY5ZDllNzA1OWQ3IEJCUFkKKzExNDk3IGJmZDg0NzJmNjk2YjljOGZjNjlhMmM3MzE5MDJlYzE0MWQ5YTQwNDEgT1NBTQorMTE0OTggZDg1ZTgwNzBiMTY0ZjM3NmY3ZTZjNTJkNGJmYmFlNGUzY2QxMzQ5NiBQWVRIT05TQ1JJUFQKKzExNTAwIGE4ZDQ3YTM3MThjZTlmZDhjNGZmNzgzNzY5ZjFhYTU5NTNkOWQ5ZDAgQkJQWQorMTE1MDIgYjRkM2Y5OGJmMjI5NzJkNGExMjExZTViYzNkOTJkY2UzNzUzZDdhMSBQWVRIT05TQ1JJUFQKKzExNTA0IGUxZjMyM2FlOWM0YjUyMzdkZGRmMGUxODUwOWNjYzZlMzJlNTIwOTcgT1NBTQorMTE1MDUgMTFhYmFlMjg0YzA3MWVkYmVlNGU1MTg0NzVmYTBkYzdjZjZiMTJjZCBsZWdhY3ktdHJ1bmsKKzExNTA2IDE3Y2Q2ZTVkMjk0YmIzYTA0YmQ5OThjZDdhNWU2MzVkZGFhYTAyODcgUFlJREUKKzExNTA4IGU5MjFjZGJjYzVkZDYzYWZiNjMzNGFkOTNjNzRlNDQ1NWViMTc0YTYgUFlJREUKKzExNTA5IGRmZjY4ODEyNDY1NzJlYzc5MWE0YjE1OTM2MjIwYTAwZDcwYzI3NjQgbGVnYWN5LXRydW5rCisxMTUxMCAyY2UzZGE0MTllMWQzOWU3NGUwMDdhMDg4NDlhM2ZkNThkYmVlYzA1IGxlZ2FjeS10cnVuaworMTE1MTEgZGQ1ZmExNzU3NTU2ZGI3M2ZjNjMwNGQ0YzQ1YmI3Y2FjMDlkYjJjMyBsZWdhY3ktdHJ1bmsKKzExNTEyIGI5YTA3MDczNmVhY2IzMTFjN2M3MjE4MDhjNmNhYjRjN2EyMTA4M2EgbGVnYWN5LXRydW5rCisxMTUxMyA4OTdjZTA5NzY2OTY1MjBhNGIxZTNmYjdiMjAyZmZhZDI4ZGE4YWJiIGxlZ2FjeS10cnVuaworMTE1MTQgYjE1MGViZjdiMmI3MmM0OGE5MDBmMjIxNTkxM2JjZWQ4MTJkMzhmYiBsZWdhY3ktdHJ1bmsKKzExNTE1IDY3NGY0NTFjNDgxNWZmNGEwNDA2MmVhZDc3NThiNzc3Njk4OWFhYTYgbGVnYWN5LXRydW5rCisxMTUxNiA5MjhmZThiYzllYjZkNjc1NmZlNzE0YTdlMGZlNDRiMzFhY2U4MTRhIGxlZ2FjeS10cnVuaworMTE1MTcgYTk3MjRjOGU2ZTZmZDJiMDMwYzI2YTFiNGVmNDFmMjM1YWJhMzM3MSBsZWdhY3ktdHJ1bmsKKzExNTE4IGI3ZTc3NDdjMTk2OTY4ZjdlYTU5N2Q1MzM1NTk4YTZiYTVkZGJjOWYgbGVnYWN5LXRydW5rCisxMTUxOSA2YTJlOTI2MjE1NDExZGUyMWQ4ZDlhYWE1Y2ZlMzNhZDQwOTc3YWNhIGxlZ2FjeS10cnVuaworMTE1MjAgYTg3YjIzZDQyODgxNGUzOTA1YzI4MWI2YTJlMGJkYTRmY2M5YTlhNiBsZWdhY3ktdHJ1bmsKKzExNTIxIDNkZjViOWQ4MzM1Yjc3NWE5NjRkZWU0YTYxYmFhZjI0YTE1MjZkM2EgbGVnYWN5LXRydW5rCisxMTUyMiBmYjVhNWVjMmVhMWFiMDFiZjc0OTEwOGZkZGU1MmY5N2EyYjY5YjcxIGxlZ2FjeS10cnVuaworMTE1MjMgZDUzMjM3YmNmMTVmNzc0MjE1NDE4ZjczZjhiZmMyYjYwYjc4NTgyZiBsZWdhY3ktdHJ1bmsKKzExNTI0IDY1MTM5NzE5YjY1NjA1OWU1MmM3NjliMmE1ZmM4ODA4ODZkZGY3MDIgbGVnYWN5LXRydW5rCisxMTUyNiBiM2VlY2RlMzY3OWVkYzEzMzAzNDAwM2Q4ZmU0NTQzNzRmMTNiODBkIGxlZ2FjeS10cnVuaworMTE1MjcgZDNjMDY3OTM0YzYzY2JmNzZlZjc5NjJjYTY4ODNiYjY2ZjljZTMwOSBsZWdhY3ktdHJ1bmsKKzExNTI4IGQyNzIyYTRjYmQ5YzYxMjhiNTIxNjg2NjhmOGY1YjhlZGFjZDI2NTEgbGVnYWN5LXRydW5rCisxMTUyOSBiYWY5YTVhNzFkMmQ2ZGRmNjg4MTVjNGQ1YWQ3ZjkzNGIwNGJkNGZmIGxlZ2FjeS10cnVuaworMTE1MzAgOTk2MjgzM2Q0OWZkZGI5MzI2MjE5N2ExNWMwZWQ4ZDNlYzY1YjNkZSBsZWdhY3ktdHJ1bmsKKzExNTMxIDE4MmM5Y2JkZjA1M2RlM2E4MzJkMDgwNTE0YjQ1OWEyOGU1NmMxMTYgbGVnYWN5LXRydW5rCisxMTUzMiAxMWI2ZjBjOWVhYzk5OGNhOGY2YzgzY2VkM2Q0MGU3YjVjZDU1ZGEwIGxlZ2FjeS10cnVuaworMTE1MzMgMTg2OTdmNTlmZDQ4Yjc3YmQ1NDZlYTkxZjk2ZGZiNDMwZTc5ZWY5ZiBsZWdhY3ktdHJ1bmsKKzExNTM0IDYyYjk0Y2M5OGRlNDU5ZTdhODAzOTcxZDE0NzQyZGE1ZDYxODUxYmEgbGVnYWN5LXRydW5rCisxMTUzNSAyNGQwYTU3YWUyMzRkYzgzNTc2ODNlMWUxYzQzMWU1NGI4OTVkZDA4IGxlZ2FjeS10cnVuaworMTE1MzYgZjBjOGI4YTMzZjA4ZWFlMDhkM2ZmMjlkMTVlMGUyMDg3ZDhlOTdlOCBsZWdhY3ktdHJ1bmsKKzExNTM3IGViYzBjMTJkYmQ3OGQ2MGQ4ZmUwOGQ4OTI5NmIwOWIyYzEzOTU1YmIgbGVnYWN5LXRydW5rCisxMTUzOCA4ZDE4ZDQ5NmFmODcwOWZjM2FhYjBjZWU5NjJmZDZjMDE3ZTJiYmUzIGxlZ2FjeS10cnVuaworMTE1MzkgOWZkOTE1ZDIzY2ZhMDNjMDBkM2U4MDgyZDIyYzE1ZjM0M2I2M2E5NiBsZWdhY3ktdHJ1bmsKKzExNTQwIGQ4ZWRlMDIwZGZlYjI5NGI3NWFlN2RjNjk1YWJhOTIzNzBjMmFiMzAgbGVnYWN5LXRydW5rCisxMTU0MSBkNDM3YjY2ODNlMjQxNzZlYWI3NWIzZGEwN2RiODU5OWQyYjQzNGY0IGxlZ2FjeS10cnVuaworMTE1NDIgYWQ2YmMyYzVkMzUzZWVkY2IwMjM2ZWRiNjdlY2FjOTdkNGViYzMyMSBsZWdhY3ktdHJ1bmsKKzExNTQzIDkxZDA4NjA3NDZmYzI3MzNiZDIwYTE0ODZjOTAxMzA2ZjQ2NmRjMzMgbGVnYWN5LXRydW5rCisxMTU0NCA2ZDJlYjU4ZjA0MTg2ODA4NmQ5ODcxY2QxYzRhZjdkODg3M2YzNjAzIGxlZ2FjeS10cnVuaworMTE1NDUgMTE4ZjlmNzNhYmU5MTllOTJlYjliM2RlNjJmZjg1NDdjMjI0OWRiMiBsZWdhY3ktdHJ1bmsKKzExNTQ2IGNiZjcyYjIyMTBhZWE5ZWU3ODMyNjI4Nzk5YmQ3ZDQzN2E4MmY5YzQgbGVnYWN5LXRydW5rCisxMTU0NyBmM2ViZGIyMjc0ZTRhODI5ZjdmN2NkMmZiMDE3ZGEzNWY4MDEwMGI2IGxlZ2FjeS10cnVuaworMTE1NDggODM5YzY2MjJkMTVhMDcyMTBjNzZkNTk3YzUzYzJhZDI0MzE2ZmUxMCBsZWdhY3ktdHJ1bmsKKzExNTQ5IDkwNWJmYWMwZmEzMmUwNTY5NTdkZmI3ZDIwZGFmOWE1MjUzY2NiZjQgbGVnYWN5LXRydW5rCisxMTU1MCAxNmY4Mzk3ZDhmMDQ4ZGU2NGExYjhkMGUyMGFhOTFkYjQ4MDg2NTA1IGxlZ2FjeS10cnVuaworMTE1NTEgZGFiYjJiNmEzYTgxZWIwZmU4YzQ0ZTQ1NjE3ZGYyNjE3ZjI2NDA1YiBsZWdhY3ktdHJ1bmsKKzExNTUyIDViYzY0ZWZjNjVlMDI5ODQxYzMzNWY3MjY3OGQ1NTZmNmE2MTQ3MzkgbGVnYWN5LXRydW5rCisxMTU1MyAwNTE4MWUxMDQ0MjBhYzAzZjUwNjE3OTJlZTQ4MmZjMWRjZGZlNjBjIGxlZ2FjeS10cnVuaworMTE1NTQgMDI2ZTEyMzYyNDNlNmNiYWUxY2I3YmNmYjA1NGEyNTY4OWFhMmNmNSBsZWdhY3ktdHJ1bmsKKzExNTU1IDE5ZWM1MzQ2OTRhZGRlYjg0ZGZlZTIxNGRiYjVkZDZmYmQ3OWRiOGIgbGVnYWN5LXRydW5rCisxMTU1NiA4Njk1MmJkYWJiMjFlMTFmZWM5MWMzMWMxNWM5NDVjNjE4MjJhZWE3IGxlZ2FjeS10cnVuaworMTE1NTcgNWMxZTFmYjM3MmRlMDZlZTI4MWE2Y2YxMGZlMjRlM2I0ZDIwMzAyNyBsZWdhY3ktdHJ1bmsKKzExNTU4IDA4NzZiNmMyNDAwN2Q4NjY2ZGVhMjc3NmRiMjY3YjBlMzZhNjgzNzggbGVnYWN5LXRydW5rCisxMTU1OSAwMDg4YWQ5ZDk2YzM4NmFjNDJiYzU0NjBmZTJjYmEwMDhiN2ViMGUzIGxlZ2FjeS10cnVuaworMTE1NjAgNTQwMWM3MTQyOGVlZmIwZTYyYTY4MTczN2NjN2EzZGE5NzQyMTUwOSBsZWdhY3ktdHJ1bmsKKzExNTYxIDA3ODFhNDk5OTA1MTVjMTYyOTg2ZmRiYzI4Zjc5NjU4YmQzN2RhYjcgbGVnYWN5LXRydW5rCisxMTU2MiAyNTcwNjNhYWUwMDBmM2Y1OTg3YzYyNmFlYzRiYWM4YzRjYjU3Y2I2IGxlZ2FjeS10cnVuaworMTE1NjMgMzQzM2E5ZWJkZjQzOWU2ZDE4YzlmMjJmYmEyZmVlNzk1OWRlOWU5NyBsZWdhY3ktdHJ1bmsKKzExNTY0IGE1ZTNjNjk1ZDJmYmUzNzdmZWY0YTI4YWRmYTQzNTBlNTEwOGE2Y2EgbGVnYWN5LXRydW5rCisxMTU2NSBiMjVkNWE2MmUzNTc2M2Q1ODgzZTkwZDFjYjllM2IxODEyNDkwMDNlIGxlZ2FjeS10cnVuaworMTE1NjYgZWJjOGNiMDc3MDNmODlkNDY1MmQ2OTQ2N2I1ODQ0ZTdlNGQ3OGZkMSBsZWdhY3ktdHJ1bmsKKzExNTY3IGMyY2JlOWFjZmM4ZTU4ODMwY2Q5YWY3YjIzOTMzNGM3OWRkZTU3MmIgbGVnYWN5LXRydW5rCisxMTU2OCAwMTg4ZDYyNTk2OWFiMzEzZmQ2YzJiNDNkYTgyMmYzYzYzMGM5MzViIGxlZ2FjeS10cnVuaworMTE1NjkgOWNlYTZiNjE3ODM4ZTU0MTJmNTNhYTcwNjVjMmFiYzEzMzkxNWY3ZSBsZWdhY3ktdHJ1bmsKKzExNTcwIDYxOGZiODMwYmU2NThjZmI0NDM3OTlkOGQxMWRhZTQ4MDIwOWU5NTkgbGVnYWN5LXRydW5rCisxMTU3MSBhOTgyYjE3ZTkzOGY1MjlkZmEwNGMzNGQ4MTY1ZjM0NjRkMTgyYzJhIGxlZ2FjeS10cnVuaworMTE1NzIgODUwYWNmMjk5ZWEyM2RiYjFjYWQxZWZiMTA2OTEzYTM1NDBmYmQ3ZSBsZWdhY3ktdHJ1bmsKKzExNTczIGMwNjI3MjM4NGYxMThhZmUwZGM2MjkxZWFkMDNjZmM2NmE4M2QzYjYgbGVnYWN5LXRydW5rCisxMTU3NCBjNDQ3ZDFhZDc4NTE3ZDM1OGZmZjdiZDc0MGI5MTQyOTNiMTU5YmM3IGxlZ2FjeS10cnVuaworMTE1NzUgMThmODFmYWY0YmQ5N2I0MWYxN2FiOGZmMDUxYTg2NzhmMzRhNmJiYyBsZWdhY3ktdHJ1bmsKKzExNTc2IDRkMmNiMjEyYzhkMTU4NTQ5Mzc3NWI4NzFmOGEzYmM3MmE5NjA4M2YgbGVnYWN5LXRydW5rCisxMTU3NyBlNDliNWZlZDc0NGM0ZmY3NzFjOThiNWViNzJkNDk3OGRlNWFiYWIzIGxlZ2FjeS10cnVuaworMTE1NzggZWRhYzg2MGFkNzEwYjVhYTI5MjEwZWU0YzlkNzI0MGYwNDgwYTVjZCBsZWdhY3ktdHJ1bmsKKzExNTc5IDZiODU0OTMwNTJlOGEzNmY4MmU1ODI0NWMzODJjYmZjZjY0OTA0NDEgbGVnYWN5LXRydW5rCisxMTU4MCBiYzQxZTg2YzkzOGNmNGI5ZTcwYWU1YTQyYzA0MmRlNTc4MjQxYWNjIGxlZ2FjeS10cnVuaworMTE1ODEgM2Y0YmU3ZTI4ZDVjZTc4NTExNGNkZjJiN2Q1OTk5MGNmYjc0MWYwMSBsZWdhY3ktdHJ1bmsKKzExNTgyIGU5NDNmOWMwOTkwMWFkODE4YmUyM2NhYmVjOGM1ZDc3MTZiMDgzNzYgbGVnYWN5LXRydW5rCisxMTU4MyBkNGViMzVjNmU2ZWZiZTcwYWZmNTRmMjYxNTk0MTQ0NTI1Y2VlZGZkIGxlZ2FjeS10cnVuaworMTE1ODQgYWNmYjNhNjQ4ZGNhYWJmYTYzMjJiYWEwYTc2ZWZiOTYzZGIwYzE4OCBsZWdhY3ktdHJ1bmsKKzExNTg1IDdlNmM0ZjU3YWY2OTkyMGE1OGQ0YWNjZmVmM2I5ZTg0ZmFlMmZhYjIgbGVnYWN5LXRydW5rCisxMTU4NiBlNzFmODM5MjIzOTIwNGE0NWQ1MzhjZDU3MjY3YTg0MzI4NTZiODY3IGxlZ2FjeS10cnVuaworMTE1ODcgMjZmNWJmZDcxNWE0NjU2ZTg5YWNlN2ZiZTdlMjRkMTAxYWZkMjc2ZiBsZWdhY3ktdHJ1bmsKKzExNTg4IDU1NjkyN2Q4NjhkOGQ4ODgyYjY1MjNjZDY5ZWZlYzUyODNmYjQ3MDcgbGVnYWN5LXRydW5rCisxMTU4OSAyZTA3ZjFiMjk4ZTE2ZGI4MWYzNTlkMTVmM2NkMDc3NzVjZDcxOGZkIGxlZ2FjeS10cnVuaworMTE1OTAgNDcxYzZjMjIxODc5OWVlMjcwMGFkNmQyMWRiMDZmZWEzNzAwMWUxMyBsZWdhY3ktdHJ1bmsKKzExNTkxIDAzMTBlZTE2NDk3YTg3ZDcxOTNjYzE3MTA4OTEyZDZjYjVmNGNjYmQgbGVnYWN5LXRydW5rCisxMTU5MiA2MzdmZWM4YTdkZDNkYWZmMTdhN2Y2YjQ3NjAwMmFjN2Q4ZWFjYTI2IGxlZ2FjeS10cnVuaworMTE1OTMgMjA4OGY4MDI1M2RiMDRmMjE0YjVmMmIwNTgzYWZhNWE3NGI0MDVmYSBsZWdhY3ktdHJ1bmsKKzExNTk0IDQyNzg1NjFiZDVlODdmNTlhMTM4Nzc3ZmY0NjQ5NWRlN2E2NWQ1YjUgbGVnYWN5LXRydW5rCisxMTU5NSBiODI2ZTUwZTk1NzNmNGUwOTQwYzgyY2JmNjRhMTFiYmI2OWQzMjM3IGxlZ2FjeS10cnVuaworMTE1OTYgNzI4YmJlYjllNGY5NjU0NzJmODkyYjMwZTNmZmE2MDE2NTg2NjYxZCBsZWdhY3ktdHJ1bmsKKzExNTk3IDY4N2I2NmU2NTNkNjE1YTA4ZmMwYTBlOTIyYzY1YjA0MDM3YTgwZGIgbGVnYWN5LXRydW5rCisxMTU5OCAzMTM1MzE2Y2Q2NzBiMDhmYThjYWExNDQ5M2U3YmNlMzgxZDRjYjE4IGxlZ2FjeS10cnVuaworMTE1OTkgZjIzOTZkNDMwNTZiNmM2ZDFjZDk3NjVhMzVjOTZlYzA3YzZmNmE1YSBsZWdhY3ktdHJ1bmsKKzExNjAwIDc3YTliODVmNzYyYTc2NDhhNzhjMjczZWZmZmViZThmOTIxOTYwMjYgbGVnYWN5LXRydW5rCisxMTYwMSAyYmI3YjY2MGYwMDdiZWY3NDM5YzYwYTEyOTcwNDg2YTNjNjg1MDYyIGxlZ2FjeS10cnVuaworMTE2MDIgOWViMmQ2ZjZmZDNmNGM3MWNhNjdkYWFlMTc3MGRiOTg0OWVkMDMyNCBsZWdhY3ktdHJ1bmsKKzExNjAzIGNlNTJlOTIyZmJiMjZlYmFiNTM5Yjk2ZjM1MjA5NGU5MWE2NTA0MjkgbGVnYWN5LXRydW5rCisxMTYwNCAyNGNhZDRlMGRiOGRkMzljMzI1NDkwYzU1ZTM3MjJlNzIxNWNjMGE2IGxlZ2FjeS10cnVuaworMTE2MDUgYjUyODY0YzVlOWM5NDIzYTUzZDBiMmVjZDFlOTJmZTRiN2U3NDZlYiBsZWdhY3ktdHJ1bmsKKzExNjA2IDllMTc0NTY3OWU3MTUwMDNiMmNjYmJjMDlhYjQ3MzJlOWZlOGU1OTggbGVnYWN5LXRydW5rCisxMTYwNyAwNDIwZjU0MzRmNDQ5MzJhYTY2N2RmYmFjOWZiZTQ5NzMzMThlYzJlIGxlZ2FjeS10cnVuaworMTE2MDggYjA4NDVkMDlmZWRmNmY4MTY1MjA4NDQ0NzUyNDRkNGY3N2VkZjliMiBsZWdhY3ktdHJ1bmsKKzExNjA5IDgzNjYwY2RhM2UzZjM5NzAwNWY4NTY5NzFhZmEyZTZiNTk0NTgxZDAgbGVnYWN5LXRydW5rCisxMTYxMCBkYmE3MTE2MjZiNDMyNDFjNWU4MWVjMGIzNGI5M2ZmNWM0NWU3NmVlIGxlZ2FjeS10cnVuaworMTE2MTEgZDIzN2M4MDhhMDFlMTEzMThkMjUxNmRkMDkyMjgwYTU2NGQzMGFhYSBsZWdhY3ktdHJ1bmsKKzExNjEyIDI5MzgwYTRmYTIzMDg5MDMxNjNhYjVmZDFjZGE4NTY5NmQ2NjkzMzAgbGVnYWN5LXRydW5rCisxMTYxMyBkYjE1NDdmZDQwZTQ2NzViNzI4ZTViNmNhMTlhZGZlZmZjNmNmZWZmIGxlZ2FjeS10cnVuaworMTE2MTQgNGNjMTA5MDhlNmY0NWYwMGZlODI4NzM4OGE3MDE1ZGVkOWRhMzI2ZiBsZWdhY3ktdHJ1bmsKKzExNjE1IDEyMTM2NTQyZTE1NTQ5YjFlM2ZkYTIzYmE0NGFhM2RhOGNlMmQ3YWEgbGVnYWN5LXRydW5rCisxMTYxNiA0NDg2ODYyZDVjYmRkMGZjMDVkZWY3YjFmNDUyMTk5ZjQ2N2U4ZDg0IGxlZ2FjeS10cnVuaworMTE2MTcgNTVjMTgxMWJiOGVmYmEyOWI1MzIyM2Q3MmQwOGQ2YzU5NTJhOGMxMiBsZWdhY3ktdHJ1bmsKKzExNjE4IGZkZWVmMTc3ZjUzNmFkOTZjYTJiODBhZTU3OWI1NTFmYjQxNzMzMmMgbGVnYWN5LXRydW5rCisxMTYxOSA4NmI3MTI5ZDhkMDhiZDk3N2YwMjAzNjZiZjJhMmE5YmVlMjIxOGQ1IGxlZ2FjeS10cnVuaworMTE2MjAgMTdkMGM1MWUwODg3MDE5MjYxMmE3YTQyODRjOTFjOTc0MzdmYjNiNSBsZWdhY3ktdHJ1bmsKKzExNjIxIGIxNjYzM2IyMmU2YWUxNzBiOGI3NmNiYzc2NGJiNTE4YjI3YTBjZTkgbGVnYWN5LXRydW5rCisxMTYyMiA2Y2Q5MzMyMmI4MTBiNmY1M2ZhMTQ2OGZlMGJlMTAzNjg2MGU1YjAyIGxlZ2FjeS10cnVuaworMTE2MjMgM2QzMGRkNTQ0NDU2MjFkMDc0ZWQxYzYyMzI2YmNmNGQ5ZmE3OGVlMSBsZWdhY3ktdHJ1bmsKKzExNjI0IGY0MTI5ZDUyZGZjNWFkZjNmOTVjNjhjM2Y3YmFhYTUyZTA3MWU0NGQgbGVnYWN5LXRydW5rCisxMTYyNSBiYTQwMDY1ZTM5OWYwNDA0MTM5ZGVhZjBjM2VkNWY3NzEzZjczYmYyIGxlZ2FjeS10cnVuaworMTE2MjYgOWYxMDIzYzg4ZjU3MDY1M2IwODk0NTVhZjYyMDZkYjlkZmVjYTViMCBsZWdhY3ktdHJ1bmsKKzExNjI3IGIwZmEyZmMxMmRmYjI4Y2Q4NTI4MmMxY2I5NGQ2ZjJiMDBmZjA1MGUgbGVnYWN5LXRydW5rCisxMTYyOCA2Y2JmMDU2OTYxMjBkMDliMTUxNmRmZDVlYzdiYzMzZGZhOGJjNTViIGxlZ2FjeS10cnVuaworMTE2MjkgZWJiMDEwODU4NzcxYWFjN2QyOTQ0ZmQyNGU5MjYyNzZiOGY4Nzc2MCBsZWdhY3ktdHJ1bmsKKzExNjMwIDA2NjBiZTZlNjc5MTRiOWNmMWE2ZTNhOGY0ZTc3NGQ2MGExYzZhZWQgbGVnYWN5LXRydW5rCisxMTYzMSA4OGIyMjEwOTAwN2MxY2I5MThkNWVjYjJlMzU4MmQ1ZTMxYmJmMWFhIGxlZ2FjeS10cnVuaworMTE2MzIgNWFmNGIxMDIxNDRhZTVkOTA0YTQ5OTVmZDkyZTRkNzY5NDdkYjlmYSBsZWdhY3ktdHJ1bmsKKzExNjMzIGUxYjcxMGUzMGFjZjczYzViNTlhOGRiMTBkZTkzNDJiODAxZjM3ZWMgbGVnYWN5LXRydW5rCisxMTYzNCAwMzI5ZDQxOWU1MDYxODJlOWE4MDhlY2UxYzMwN2VlZjcxN2RlNTIwIGxlZ2FjeS10cnVuaworMTE2MzUgZGVlYjNjZTIwYWNmMWE4NWIxMGM4NjA3MGFjYjExYjYyOWNjMWY3YyBsZWdhY3ktdHJ1bmsKKzExNjM2IGY1ZDI2NWQ1ZTlkYzAyYWRiZmNhMTVmNzZjMDY0MDcxNDI3Y2Y5MzkgbGVnYWN5LXRydW5rCisxMTYzNyA4ZTNiNmQ2YWZlNGNjMWI1NTFjMzhiZmRlOTgzOWNmMjkzZDE1NTc2IGxlZ2FjeS10cnVuaworMTE2MzggODgxYjg2Mzk4YzIwNDNmNWEyMzM2ZTZkYTdjM2FjYjA3NWE1NWY3ZSBsZWdhY3ktdHJ1bmsKKzExNjM5IDk4ZGM2NzVkMDkxM2I2YjMzYmI4ODBmYjE4NTkzNzg3OTFlYWE2ODAgbGVnYWN5LXRydW5rCisxMTY0MCA3ZmFiYmJiN2FkOWE3YTFkNDc4NzdhZGU2OTA5YzFkYTJlMzQyN2IyIGxlZ2FjeS10cnVuaworMTE2NDEgNTIwNTgzYmRmMGIwMjkwY2U5OGEyNTI5ZjA4YWIwY2Q5NTUyYjVhYSBsZWdhY3ktdHJ1bmsKKzExNjQyIGU1Nzg0MzliOTgxZjg1NjE0NGI0MzIzNGEyYzBlNTllNGFiYTM4NDEgbGVnYWN5LXRydW5rCisxMTY0MyBjNDYwMjIzNjQwOWU4YjllMDQ5ODYxMDEwMGVjMzJjM2FmYjc1MGZjIGxlZ2FjeS10cnVuaworMTE2NDQgNmVjYjI0OGU2N2ZmMmMwYTU0N2QxMGRkODJkODZmZWQ5NjExZDE3ZiBsZWdhY3ktdHJ1bmsKKzExNjQ1IGU2MDA1NTIxNmI4ZjlmYzkwM2Q5NTk4NWY0YjgwOWE3MTRiMGI2ZDcgbGVnYWN5LXRydW5rCisxMTY0NiAxYzIyY2JmYjRhMWUyMDZhN2NiMDExOTlhNWJhY2FkYTI5YTY5ZWY4IGxlZ2FjeS10cnVuaworMTE2NDcgNGFmODdjZWQ5ZjNhYWI2ZDlmZGMzOGFkZDY0MzQxNGNmM2YyODljNCBsZWdhY3ktdHJ1bmsKKzExNjQ4IDRmYjRiMDA3NTViNWUwNmQ3N2U4YjAyNjNlZmMzNDBkMmNhMmVlZTcgbGVnYWN5LXRydW5rCisxMTY0OSBhMzA3NjU2Yzc3ODg5NzZjNDQ0ZmQxYjUwYzc1ZGE0MmFmNGJiOTAwIGxlZ2FjeS10cnVuaworMTE2NTAgNDY4MzBlNWEwMzUxZmFkMGQ0MTM3ZGVhM2U0NTVjNjI4OWMxNjdkZCBsZWdhY3ktdHJ1bmsKKzExNjUxIDFlOGYzMTA3NDU0NzUxMDI3MTdhMzVlZTM5YzYyMjNmNmYwYmEyMGUgbGVnYWN5LXRydW5rCisxMTY1MiAzNTI5YmI0Y2FlZmQ2ZTBhNWU1ZGIxY2Y3YzFiNmIzYzRkNjc3N2M0IGxlZ2FjeS10cnVuaworMTE2NTMgZGFmMWQ2MWI5NjExZDdhMjczMTI5NzAyNGRjYmJlMjc4NDI2NWM4NiBsZWdhY3ktdHJ1bmsKKzExNjU0IDlmNzI5MWY1NTAyNmQ0ZDU1YzQyNWI5M2QxMWRiMjNiMGVmZjM4MDAgbGVnYWN5LXRydW5rCisxMTY1NSBiMjYzMGEyOWZlZmRiOGI3ZjQ1ZDhjOWU5MDQ1NTNkNGNhNTc2NzIwIGxlZ2FjeS10cnVuaworMTE2NTYgZjJiOThjYmM1MDMwMTg4YWEyZTQ1ZGFkOGU4ZmE5ZDdlZTliODZkYSBsZWdhY3ktdHJ1bmsKKzExNjU3IGYwYTkyYzBhMTE1ZWNmY2RkNTU1ZjBmMTliYzM5NjczOGVhZTE5MDcgbGVnYWN5LXRydW5rCisxMTY1OCAxZTQzZGY3ZDhiZTNmZmU1N2UwNzM4YjMwZDEzODE4MjhhMDBjODJlIGxlZ2FjeS10cnVuaworMTE2NTkgZTJkYWE3ODNiZDQ3MjhlYTBlODMzODYyMDk2NWYzMzBjZmRiMGEyMyBsZWdhY3ktdHJ1bmsKKzExNjYwIDBhMDg1ZDczMWMxYzc5YThmMzI4NTY5NDBjYzUyZmZlY2IxNGMyOGMgbGVnYWN5LXRydW5rCisxMTY2MSBkMDg2NDE0YWRlNmVjNDllOTM2YTM5YzI5ZjUwM2YxZjBjZDgwMWFjIGxlZ2FjeS10cnVuaworMTE2NjIgZDNlZjRkMTBmYjk1NGM4ZTg1MTMzNDI1MGZhYzRjYjM1YjljYjQyZCBsZWdhY3ktdHJ1bmsKKzExNjYzIDZhNTU5ZGM3OGM5MTNmOGQ2NjkzZTc1NDViMDk2ZTI2MDNhYTYyM2QgbGVnYWN5LXRydW5rCisxMTY2NCBiMGJhMzE5Njc3MTk1ODIzZDg1MGZkNzA0MDk2YmM3NmMyMzFkNmIwIGxlZ2FjeS10cnVuaworMTE2NjUgNzVhODA0N2RmYzExMDNhZmIwMWQ3YWNjZWU1MzJkMDhlODIwYzU1MCBsZWdhY3ktdHJ1bmsKKzExNjY2IDZiZTM0M2RhMjkxNDRhMzkyMDgyN2IwNzk2YjkyZjdlYWU2YWE5NjggbGVnYWN5LXRydW5rCisxMTY2NyBjMDBiMjczMDg1YmVkNzBhYmJhMDcyNWNiYmJmM2ZjNjIxMmY1NDU0IGxlZ2FjeS10cnVuaworMTE2NjggM2NlNTExYmE0MjQyMjYxMzIxMDc0MjBiN2YwNzJlZmE3ZDllNjIwMSBsZWdhY3ktdHJ1bmsKKzExNjY5IDlmZDJiYmQ0NDU0ZTM2NzhiMWNkNmYxMTA1ODBkOWE4YzgyYWMyZjIgbGVnYWN5LXRydW5rCisxMTY3MCAzMmIxOTQ5MWU3MGI1YTc5ZDU1ODk5ZjkxNjBhNmY2ODdmOWQxNzFiIGxlZ2FjeS10cnVuaworMTE2NzEgOWE4OGZlMjA0ZDk1Y2Q4NTY3YWNjOTkyODIzODRiMTAzMGNkZmEwYiBsZWdhY3ktdHJ1bmsKKzExNjcyIDY4YWFkOGVjZmQ3MGVjYWFhOTQxNWY0YzE2ZDkwYzJiOWI0YjQzZDUgbGVnYWN5LXRydW5rCisxMTY3MyA2ZmM5MjBjOTA2NDA4Y2MyZTY3NTkxOTkxY2MwZGUzMDRhNDgzYTc4IGxlZ2FjeS10cnVuaworMTE2NzQgOTU4ZTFmYWEzOGE5MTA0ZmQ4Yjg4NjUzMTc5ODRmNTM1NjU5MTEwNCBsZWdhY3ktdHJ1bmsKKzExNjc1IDA2MjViOTk1OGIyM2JmNjJhZjI4ODE4NTMyMGVlMGYzM2Q1NjRhMjggbGVnYWN5LXRydW5rCisxMTY3NiA1M2VkNmJjZDA2NDFkZjM3ZWIyZjhlZThlNmYzNTI3MDc1OGEzMjRhIGxlZ2FjeS10cnVuaworMTE2NzcgMjUzYzk5M2VmOTM2YWQ1YTFmOTNjNzg1NDJlMTMxYTQ2NzE2ZDRiMCBsZWdhY3ktdHJ1bmsKKzExNjc4IGZhODkzZDU1Nzk0ZWNkOTg2NjM4NDg4MTAwMjM5ZThkMzFjODY5NzUgbGVnYWN5LXRydW5rCisxMTY3OSBlNzVlMjI4ZjgzOTVlN2VjNTBmNmQwNTZjMTVmZmFiODEwMWFjOWU3IGxlZ2FjeS10cnVuaworMTE2ODAgOGU5NTJiZGQwZmEzNzA0NzQ4YjA4NjYyZDFiMjhkYWYwYjVlZWM0NCBsZWdhY3ktdHJ1bmsKKzExNjgxIGYyNjRlNTdkNjU3ZGQzODA2MDM1NjFkM2QxZGQ4MDAxMGYyYzllMjIgbGVnYWN5LXRydW5rCisxMTY4MiBhODZhNzFiZWJkNjQwN2EyY2I4YjdjOTM5MjdhMmEwMzQ3MzVlMGU1IGxlZ2FjeS10cnVuaworMTE2ODMgYWE3M2RlZTIzMDkzMDc1Nzc2ZTRlYjNkZGM4YTYzNDk1MjhiN2VlOSBsZWdhY3ktdHJ1bmsKKzExNjg0IGUyMWQwNzk4YzAyYWFhZGUyM2UyMWQ1NDRjMzA5YjY1ZDg4OTBkNTIgbGVnYWN5LXRydW5rCisxMTY4NSBhMTY3MmU3NzVmMzMxZWNjMzQ2NTZiODVjZDlkYWEzZGY2NGJhMGE3IGxlZ2FjeS10cnVuaworMTE2ODYgNWZlNGQ1OTRhMGYyMTkyNDZiYWYyODg1OWJhMzJjOWJlNDcwNmYwYiBsZWdhY3ktdHJ1bmsKKzExNjg3IDNlMGM4N2JkYjU4ODk2OTQ4NjViNDdkYWQ4YjFlMWUxMzBiNmYwZGUgbGVnYWN5LXRydW5rCisxMTY4OCA0ZmU4YTc2NzBjMGQyYTMwODc4MjIwYjQ2Yzg5MWJhZDZjZTc1NWFkIGxlZ2FjeS10cnVuaworMTE2ODkgYWM2YzI5ZDFmMTBjOWMyZjkwM2UwNjRhNmM1MGYxYzJiZDNhNzk1OSBsZWdhY3ktdHJ1bmsKKzExNjkwIDAyZDhmNzIxNDA5YWJmNGZhYjg0MTE1M2FjMzhjNGY4YmVhZTUwODcgbGVnYWN5LXRydW5rCisxMTY5MSA0YzIwNDU2MTU5ZWJkYmIyODEyNjdmNDRmY2NiZmRlODJkNDdkYjMyIGxlZ2FjeS10cnVuaworMTE2OTIgMTk1ZTc0OGNmNjk2YTY5NmY5ZmRhZDZlN2Q4YjI2YTI2YzIwOGZmYyBsZWdhY3ktdHJ1bmsKKzExNjkzIDMzOTg0ODQxMjExZDVhYzE2MDI0NzJjYTcxN2MwZDUzM2QwMTI4ODQgbGVnYWN5LXRydW5rCisxMTY5NCA0N2NjZGI3ZmI2MjNhZTlhZGZiZDI4MTc0ZDVkMzQ0M2ZmODY4NmQwIGxlZ2FjeS10cnVuaworMTE2OTUgNThlY2VkNTMwOWEwNmI3N2RlYTVjMDI2NmZkNTJmMTE4NWI4ZjVmYiBsZWdhY3ktdHJ1bmsKKzExNjk2IGIyNDA0NjcyMGQ1NjA0NWU0OTEzMjNjOTQ2NzQwMWU4MzcxNzliMGUgbGVnYWN5LXRydW5rCisxMTY5NyBkNTc4Y2Q2NDc5NmQxMjY1ODVmYTBmOTU1OWY5NmE1ODZhMWRiZDNlIGxlZ2FjeS10cnVuaworMTE2OTggZWI4MDNlMTkxODg3ZTZlZDIwZDQ3NDBiYmRhOTA0YTU5OTY4NTdiNyBsZWdhY3ktdHJ1bmsKKzExNjk5IDE0YWQwMmQwNmUzMmQ4ODQyNjIxYTAxMDEwZDE4ZTYyMDY2NmRjZTggbGVnYWN5LXRydW5rCisxMTcwMCAwN2RhZTZmZGFlNzk0MTNkZjkyYmYzMjMwZjkzZWMxNzc2OTBmNDMxIGxlZ2FjeS10cnVuaworMTE3MDEgODg1MDUyNjliNDAzN2RlZWEyODNkN2I2Y2MzZmY3MzY1OWJlYWZhMCBsZWdhY3ktdHJ1bmsKKzExNzAyIDA4NThmMTFjODhkNzI1OGMxNjMzOWYxNWJjYjlhNWJiMGQ0YjZkYWUgbGVnYWN5LXRydW5rCisxMTcwMyBjMWRjMTlmOWFkNjA4ZTZiNGIxYThkYTYzMTcxOGY0YTIxOWU2NWI0IGxlZ2FjeS10cnVuaworMTE3MDQgNjcwOTY3YmU2ZGIzY2ViMzBkZjI3MWFjODQxMjdmYjE2MWFmZGM2YiBsZWdhY3ktdHJ1bmsKKzExNzA1IDgxNDhkNDRmOTkwM2RlMmZkOGQyMmFlOWFjMmI3Y2RjMGFjYjc2MmUgbGVnYWN5LXRydW5rCisxMTcwNiBkM2FmMzEwZjIzMGNiMTU2Yzk2MmI4MThkZjI4NGI1YzY0M2M2MWZkIGxlZ2FjeS10cnVuaworMTE3MDcgNzBlNDlmNzE1OTU3MmYxMzc5NmE5Y2QzNWIwOTY5ZTgyNmY2YWM3NyBsZWdhY3ktdHJ1bmsKKzExNzA4IGYxNzJkNDc0YzVhOTA0YThkNTMxYjhhZDAzMTU2MmJlNDA3MmNlMmYgbGVnYWN5LXRydW5rCisxMTcwOSBiZTNkODRmZjI5ZjlhOTUzYWQwOGY5N2ExZDNhMGI3NjIwYTM4NjljIGxlZ2FjeS10cnVuaworMTE3MTAgODlkOTE2ZGY0NzliMTViMTFhYzYyM2FjNzRjMzk1YmQ2MTU0YzM5ZCBsZWdhY3ktdHJ1bmsKKzExNzExIGMyNTljM2M0ZDBjY2Y5YmMzOWU2MDk5ZmFjYjZkYjY5OWJjNjY3MjUgbGVnYWN5LXRydW5rCisxMTcxMiAxOTk1Y2RiZTMzODQ2ZTQ3NzAyNGU2OTY3OTk3Y2FhMzYzNDY2YjNmIGxlZ2FjeS10cnVuaworMTE3MTMgOTM2OTkxNzlhNTBmMmY0YWM5MmVmZmE0ZDdlNTMyY2JiNjdhYzM0YyBsZWdhY3ktdHJ1bmsKKzExNzE0IDQ0ZmYxYWM1Mjk1YjM3ZDZkNWRkNjJiYzFhYTczMDM0ZDVjOGViMjcgbGVnYWN5LXRydW5rCisxMTcxNSBhNGU4MjMzMTU2OTkwMjE4M2M2YWRmNGZjODIxMzljN2NmMDEwZjVkIGxlZ2FjeS10cnVuaworMTE3MTYgMjk5OWYxZDkwNDI5OTYyODlhNjBlMjVhNDVjOTBjNjRhODAwMDMzMiBsZWdhY3ktdHJ1bmsKKzExNzE3IDU2MjFjZjliMDlkNjMyMGIzNmYwNTIwZWM0Mzk0ZmZjNDU4ZTdjZWEgbGVnYWN5LXRydW5rCisxMTcxOCAzYzlmZWM1N2I4NThhNjRmMDc5ZWU1ODYyY2NjNzU2YTdhMjU2NjFlIGxlZ2FjeS10cnVuaworMTE3MTkgOTg0OGY0MjM0M2M5OThmNGE5M2YxNWJhOWY1OWY0NjRiNmFjNDBiZiBsZWdhY3ktdHJ1bmsKKzExNzIwIGRjMWQ0NDVmMjM3MTg0ZDVjNmQxMjJiNWVjNjc2MzZkOGQ5NjM2N2MgbGVnYWN5LXRydW5rCisxMTcyMSA3M2RmMjRmNmJjY2YzM2FkZjc0ODQ3YzA1M2ZlNWZlZGMyYTVkYzY4IGxlZ2FjeS10cnVuaworMTE3MjIgY2U4ZjNjZWY2YWVkMmJmZjVjNDQxZmY0NTkyODgyOTk3ZDIzMmZlMiBsZWdhY3ktdHJ1bmsKKzExNzIzIDI1ZGEwOWI0MjdiNDc1ZjQ0NjU0NmYxZDEwMWVkOTNlOTc0NWI3YWYgbGVnYWN5LXRydW5rCisxMTcyNCA3OTQwMGQwNzhmMWIwM2ZjNWY5MGE2NWI3YTM2YzRkZTkwY2E1OWU0IGxlZ2FjeS10cnVuaworMTE3MjUgYTAzYzZmZDgxZDRkNmQxYWIzNDlkZTMxZGVhZWEwYThmMTc0NTcyOCBsZWdhY3ktdHJ1bmsKKzExNzI2IDJlMzcxMmU4NDc4MWZiMTI0NjY1MWY1NWNmZGYwNTk5YTZlYmExZTAgbGVnYWN5LXRydW5rCisxMTcyNyAzOGMwN2JhNGI4ZTQxMWY4NmNjMmY0Y2M2ZjAxOWYwMjQwZDk0YWIyIGxlZ2FjeS10cnVuaworMTE3MjggMDhiOGRhNmQ0Y2E2YTA3MjkwZWNiYWJkMWJlOTNjZTVhZjVmMDkzZSBsZWdhY3ktdHJ1bmsKKzExNzI5IDRiZmQyOWQ1M2I5NTBjMTdhN2EyYTY4MTYwN2UxODE3NjIxNDAzYjQgbGVnYWN5LXRydW5rCisxMTczMCBiMThkMWY5MWQ2NjQ4MzI0OTY3ZjQ1YTRiYzRlMzcyNWUzZWU2MGVjIGxlZ2FjeS10cnVuaworMTE3MzEgNDFmODNjNzJlMDk4NGM5MTc4OTdkMWU2ODA1YzNiMDlhMzM3MTUyNiBsZWdhY3ktdHJ1bmsKKzExNzMyIGQ3MjUyYTViN2UxZTdhZDVmYTgyNWZlNmE2OTJkMWIzZDA0MjVhYWQgbGVnYWN5LXRydW5rCisxMTczMyAzOWM0MTIyMGY3ZWQ0NmYyMzY5YzcxYzcwY2VmNWQ4NWViOGM0MDJjIGxlZ2FjeS10cnVuaworMTE3MzQgZGQ4NDQzYmQ0NDc0MGM3YTlmOTEyZmNiZGQzYWQ2NjgyNjI1MDA4OCBsZWdhY3ktdHJ1bmsKKzExNzM1IDRjNGNlYzU0YmE2MzRkZWY0MWI0OGM1MzY1NjYxZjk3ZmMzNDUwMDEgbGVnYWN5LXRydW5rCisxMTczNiBiNTVkYjA4ZGZmN2JmMjU5MjdhMmU3OGNiNTU5ZjhkYzlkY2VhMzA4IGxlZ2FjeS10cnVuaworMTE3MzcgMjI5NDc1ZDI5NTFmNzA1OTFlMWYwMTdlMDJmN2E2NTJjYTZhYjY0ZCBsZWdhY3ktdHJ1bmsKKzExNzM4IGUyM2VjMjQwMzE1NzI0N2IzZGQ1OWI4ZTlkMmYyMWYyMDRjODZhN2YgbGVnYWN5LXRydW5rCisxMTczOSA3MTBkYTEwZGVlOWRiMzRhMGU0ZDExMTg3YThmOTk1OTUyZmUxOTlhIGxlZ2FjeS10cnVuaworMTE3NDAgMDQ4MDAyZjI3YzFkOGJjYTVhOTNjMWRhYmQ5Mjc2NDQwMGQ2NGExNSBsZWdhY3ktdHJ1bmsKKzExNzQxIDE1OWY5ZTc0Njc1NDk0NzEwNWU3Yjc5MTQ2YmQyMzNlNzIzYzg2YjggbGVnYWN5LXRydW5rCisxMTc0MiA4YTg4NWYzYTVmNDZhY2U1NDU2YzY0ZTcwOGEzMzZkN2Y0ZTc1OWMwIGxlZ2FjeS10cnVuaworMTE3NDMgMWM0YmEwZTJmOGU3NDNiNjE2YjlmZDc1MDJlN2U2NTNiMTc2YzEwYiBsZWdhY3ktdHJ1bmsKKzExNzQ0IGI0ODcyYmM4ZDllZjczODYzNGYwYTI2OWFiYjkyY2VkZDI1OGFiMTAgbGVnYWN5LXRydW5rCisxMTc0NSBlMTk5NTRiYTFiYzQxMzc4OGIzM2I3NTZkOGExYTFkNmIwN2I2ZjU3IGxlZ2FjeS10cnVuaworMTE3NDYgMDI4Mzc1OTQwN2UxNjFkZjAxNTE5Mzg2NWUyM2Q2MDlmZDUyOGFmMCBsZWdhY3ktdHJ1bmsKKzExNzQ3IGNhODU4N2QyMTVlNmZlY2FlMzhhNjMyZDQ3ZWUzNmQzNTg3NjJkNDQgbGVnYWN5LXRydW5rCisxMTc0OCA0MzAwMzhlMTY0MzM3YTMwMDExMjk5NmJhNzlkYWQ5OWUxY2E4Njc0IGxlZ2FjeS10cnVuaworMTE3NDkgNTkwYmQ5YjQ1YmY2MGQxODc5YjQyYjYyNTI3ZjFlZDkxYWQwYWE3NSBsZWdhY3ktdHJ1bmsKKzExNzUwIGJlMTQ5MzM5MWM2ZGQzYmM3YmFkMzE3ZTdjMDBiYjQyMWYzZjA2NmYgbGVnYWN5LXRydW5rCisxMTc1MSA5ZDM5M2EwZjcyN2M3NTQ0YTRhZDFhYmEzZmUyMjFjOWE4YjhmZTM4IGxlZ2FjeS10cnVuaworMTE3NTIgMDgwNzk5ZDBjZjJiMmJkOWE0NzYwYWU1MzU3OWM3MDhhZjZiM2JhNCBsZWdhY3ktdHJ1bmsKKzExNzUzIDhkMTQ5MDYyOTJjNjZjYzAwNWY0NTU1ZTMxZTljNDA2YWFkNzk3NDQgbGVnYWN5LXRydW5rCisxMTc1NCAxZTMzYThhNTZiY2E1YjdjNjMwODdmNTY1ZTg2YmIzMGM1MTZjOGQyIGxlZ2FjeS10cnVuaworMTE3NTUgMjU3N2MwY2M3NDgyYTg4ODU0ZjIxYTQwMDU0NzE3NzkxNmMyZmI0OCBsZWdhY3ktdHJ1bmsKKzExNzU2IDZiNmJkMTRkNzUwYjgxYjg0NGZlMjc0NDIzYjQ2ZDlmNDU3MDRjZjcgbGVnYWN5LXRydW5rCisxMTc1NyBhNzNjZDdmOTliOTViZDEyZDBhMDc4MTljMThiNDRjY2ZkNDQxZjc5IGxlZ2FjeS10cnVuaworMTE3NTggYWNkODFjMzIyN2RlYjg5Njg5OTE3N2U2MGQwNjUxOTBlN2ZiNzA4NSBsZWdhY3ktdHJ1bmsKKzExNzU5IDlkMmMxMmYyNDBlNjM2MTJlY2FhNGY4N2M4ZGNhNGJkNmU4OTQ3YjggbGVnYWN5LXRydW5rCisxMTc2MCA2NWYwOGNjNTk1NTM2NDA2NDkyNGY5YmNkOTUzYWU0ZDc1ZWM5Y2QxIGxlZ2FjeS10cnVuaworMTE3NjEgODZkZTFmYTBmYmI3NjcyYzAyYzU2OTJmMzAyZDY0NDgwZmRmYjU0ZSBsZWdhY3ktdHJ1bmsKKzExNzYyIGMxMTZiYjNlMmFkMTg4YjMxMDFkNGZhZmM0YWQ0OWYyYTQxOTJhOGEgbGVnYWN5LXRydW5rCisxMTc2MyBhMGYzMzI1ZmVkZjE5MWU3YzRlZWJiZTU1ZjViNjY5NzJiOGQ2ODljIGxlZ2FjeS10cnVuaworMTE3NjQgNTUwYTQ1NmQ4ZjYxNTg3NmM4MGVlMmI5NTNiMmJkZTQyYzllZDE0NCBsZWdhY3ktdHJ1bmsKKzExNzY1IGFjZWUzNTk1ZTYwM2VkMmI0YjQ3Zjk5ZWU0MmMxMjhjZDIzNTgzMGQgbGVnYWN5LXRydW5rCisxMTc2NiBmYmI0NTA2MGJlMDMyNDNjZDUzYzE3ODFiYjJiZTU5OGIzZjVmMTU3IGxlZ2FjeS10cnVuaworMTE3NjcgNzI0NDExMTMyNDNhODVlMGFjYWNkZTkzZmQxZmExYTk4MzZiMTE5NCBsZWdhY3ktdHJ1bmsKKzExNzY4IDUwZDk4NTBjYzhjM2IxNGIzNDJkMmIwMjkwY2Q5OWJjNDE2OGRhZmYgbGVnYWN5LXRydW5rCisxMTc2OSAyYzZkZDBmYTRlYjk4N2I2ZmQ5Nzc0MjU3M2VmYTVhOGM1MjRlMzY4IGxlZ2FjeS10cnVuaworMTE3NzAgOGZlZDhjODVjNjFhOWE1N2EwZWMyN2UwMjc3ODgxMjQ1MDlhMzI0YSBsZWdhY3ktdHJ1bmsKKzExNzcxIDg3OTE0NTU0ODVlNTJjY2RiZDNhMGYwZWY5MWRmMzIyZjNmODJhZGUgbGVnYWN5LXRydW5rCisxMTc3MiAyZjg4ZDhhYTczMTA5M2E3ZWRmMjQwYzNlY2I1MTI2N2E5NGRjZTdjIGxlZ2FjeS10cnVuaworMTE3NzMgZjM3YmUwYzgyMmRjMmFkNDFhZGQwYWQ0MWUxNjc4YjZlNTdlMTYyMSBsZWdhY3ktdHJ1bmsKKzExNzc0IDI4NGJmOTVkYWI4MGExZjg4MDRkMWMyMWM2NTAzMzZhYTk5YjMzNGIgbGVnYWN5LXRydW5rCisxMTc3NSBjMzkyMThhNjhkZjFmMzc2ZDkxODUxYTlkMzg4MzY1N2NhNmVjZmE0IGxlZ2FjeS10cnVuaworMTE3NzYgNTNhYjhkMGIwZDY0NGUxMWZkMjA5MzkwZGY0ZjZmZTc5MGE0YjdmNCBsZWdhY3ktdHJ1bmsKKzExNzc3IGZlN2NiZDEzMDg2YzNhNDkwZTgzYWM1MzljMTcxMzY1MGNkYjhiMzcgbGVnYWN5LXRydW5rCisxMTc3OCA4MDlkY2MxYmJjMjFkY2QzNTNmODgyNzE5NDI5ZWRkN2ZjZGFiY2JhIGxlZ2FjeS10cnVuaworMTE3NzkgNGI5YzRjZTU5OTljOTJiN2IxNTNlNDA4YjA3YzA1YjJlOTdkNDBkMiBsZWdhY3ktdHJ1bmsKKzExNzgwIDBhNmVkMzg0YWYwNmE1NzIzMDNiMWExZmUyN2QxMzcyMTM3NzM0ZjkgbGVnYWN5LXRydW5rCisxMTc4MSBmYWEzMWIxYzBiNTQwNTcyOWJhM2YwMTdjM2JhZTI5ODE0MWRkNDc1IGxlZ2FjeS10cnVuaworMTE3ODIgNTE1NmNmOGU0MjY5MWFlNWZiMTFkMmFlZjhmZjJiNDM1NDRhMjdkMSBsZWdhY3ktdHJ1bmsKKzExNzgzIGJjNTE1MDY1MmVkY2FkNzBlNmQ0ZDA2NjcxMzFiZWUzZmJhNDJiNzggbGVnYWN5LXRydW5rCisxMTc4NCBlYzNkMmIzNzU2ZDc2ZDk1YTQ4ODFmYjg1NmEyZDQ0ODQzYWU4Y2Y5IGxlZ2FjeS10cnVuaworMTE3ODUgYTZjZmY5YzI5MGU1MjY0NWMxMzExMGM3NjgzMGU2Mzc3NDg3MzEzZSBsZWdhY3ktdHJ1bmsKKzExNzg2IDVkMzQ0NzEwZmNjM2Q2YTIzNzZkYjQ2YmFhZGE5NzUzMDk2ZWY1NDMgbGVnYWN5LXRydW5rCisxMTc4NyAyMzQwZjYxNWRhOGY0Mzk3MDQ2ZmY2ZDI3YTEzZjE2ZDFmMzVlMzk4IGxlZ2FjeS10cnVuaworMTE3ODggYmMzMWQ5ZjZlMGExNGUzNjIzMTViM2QyNTY5Yzg5MDVlMWEzNTFhYSBsZWdhY3ktdHJ1bmsKKzExNzg5IDAyZjM1MDRiMzk4ZGY0NzY2YTUwNjZhNmU3YTY3ZDlmNzRiNzFiNjYgbGVnYWN5LXRydW5rCisxMTc5MCAwYTY3ZGI0N2UxZDBlNDZlZDdiODY0YmU5ODE3ODEwYWIxMmY5ODA0IGxlZ2FjeS10cnVuaworMTE3OTEgMGRlNjYyY2VjYWNmY2FhZTk4NTAxMTEzNTA5ZjQ3MWI3ZmFkNzc5MSBsZWdhY3ktdHJ1bmsKKzExNzkyIGExY2EwODUxNjhmYzgxMTQwY2MxMWRkNjdmZTc4Mzg2ZWRlODJmNGIgbGVnYWN5LXRydW5rCisxMTc5MyBkNjRiNGNjODFiYTYyZDMzOWZiNWM1NmFhOGJhNDBhOGM3MjIxNTFiIGxlZ2FjeS10cnVuaworMTE3OTQgZDI4YjQ5MWY0NTU1NmFhMDUzN2QwZWVmMDNiNjJiYTE0N2I3ZmJiOSBsZWdhY3ktdHJ1bmsKKzExNzk1IGEyMzk3MjU1YTZkMzNmNWQyNGQ1MjVlNDZkNDhiZWQxZmFkMDEzMjkgbGVnYWN5LXRydW5rCisxMTc5NiBkNjQyMDA4MzRhNmI0YWY0NmM5MmFlODAwYTlkNzE5NzI2Y2UyZWYzIGxlZ2FjeS10cnVuaworMTE3OTcgNjkwMzQ4MjQzODAwMWM1ODMxZDc5ZGVjNGRjNTEyNGRlOTNkNzdjYyBsZWdhY3ktdHJ1bmsKKzExNzk4IDQxNDEyOGExNWJiZDlmNGRlNmZhNmI5ZGViNDhhY2NkM2Y4NTNhMzYgbGVnYWN5LXRydW5rCisxMTc5OSAyNDFkMDEyZTgyZGNlNTg4MThjMzMwMTgzODA3YzNiNjk1YzhkYzM2IGxlZ2FjeS10cnVuaworMTE4MDAgM2I2YzdlNzBjYWZmZjZiZGZkZjZiNzBhYTU0NjhiOTJhN2U4MjFiNCBsZWdhY3ktdHJ1bmsKKzExODAxIGNjM2UxNDgzNzM3OTk2M2Q1YTk4NmU2M2JmNmMyMGQ2MTQwMzUwYWQgbGVnYWN5LXRydW5rCisxMTgwMiAwODNlZmEwNzYzNjYxMGY4OWQ4M2RjNDgyMzlhOTg5NjU0MDM5NjdkIGxlZ2FjeS10cnVuaworMTE4MDMgNzk0MzllNGU5OTc2OTU4YTBkNGNjODMxMTRmY2I0Y2U0NTk0OWQ5OCBsZWdhY3ktdHJ1bmsKKzExODA0IDkyOGVhNWE0MDllNTM1MWQ0NjQ1NmViYmQzYTliYTdhNmMyOWMwNTEgbGVnYWN5LXRydW5rCisxMTgwNSAzNGU0MjAyZWRlMjAxZDdkOWMwNDRjZDMwNzRhY2VmNzFmNDQyMDdhIGxlZ2FjeS10cnVuaworMTE4MDYgYmQ5ZDM4ZDY0MzY5NGVjNTIzN2I1NTliNGFkZjI3YmE4ZDNjMmE0MSBsZWdhY3ktdHJ1bmsKKzExODA3IDVkYjY0N2ZlZGJhMDMzY2VjZWEwNDQwYTI4NzJjYzNjMzY1MGI5NDggbGVnYWN5LXRydW5rCisxMTgwOCA0OGM2MTVkODRkYTY2ZGFiODQyNjFkNDE3YzAyNDc1NWVhZWJjMTgwIGxlZ2FjeS10cnVuaworMTE4MDkgNWVhODgzNmQ5NjcwMGI5MmFlZWFmMTZiNjcwNmNkMjQ1MGE4ODk1YSBsZWdhY3ktdHJ1bmsKKzExODEwIDQ2N2RmNjFmZmJmYTk1ZmVlNmMzOTc0MDUwMWQwYTgzYTgwMjVlMjkgbGVnYWN5LXRydW5rCisxMTgxMSA0MTZiNzdiODExYzViODMxYjM5NTlmNzI0NTE3YTM3OTg5MTJiNjY0IGxlZ2FjeS10cnVuaworMTE4MTIgNzg0ODdlNzAxNjg2ZDk0MWQwYmM0YmE2NjY5YWUwYmZjYzg3ODQ2YyBsZWdhY3ktdHJ1bmsKKzExODEzIGYzM2IzOTRlNWQ3ZmNiYzM4NTQxZWI5NThlZjQ4ZGFlYTUzYWJkZWYgbGVnYWN5LXRydW5rCisxMTgxNCAwMDNiNDJjOWYyNGQyMTA4MjdmZGZiMGIxOThhOTAwMzE1ODYzN2QxIGxlZ2FjeS10cnVuaworMTE4MTUgOGEyNmU1NWUxOGI4MTJkYmFlYzVmMTM4YWE3YTY0ZGZiMmU2NzMzZCBsZWdhY3ktdHJ1bmsKKzExODE2IDg5MThlNGY1NGVjYThkMTY2YTQwYTQ3OTcyYWNjMjE2ZDE2ZDFhOGUgbGVnYWN5LXRydW5rCisxMTgxNyA4ZTlkOTc5ZGRmNTUwYjMwMjI1OTk0M2M3MDU3MmRmYzAzYWI5MzhkIGxlZ2FjeS10cnVuaworMTE4MTggNDBkMjFhNWI5OTkwMTU2YjA0OGM3OTI5OGY3NzQwZDczYTBkODg3YiBsZWdhY3ktdHJ1bmsKKzExODE5IDg0ZTIxYWM3ZDNlYTM1OGNkOGY2ZmI0MjEyZTQ5MjlkYTQyYzg5ZmYgbGVnYWN5LXRydW5rCisxMTgyMCAxNTA5MDdjMmMyYzA4Mjc5NzMwMmNlYzRhYzNmNDc5MjE4MWY5YzZhIGxlZ2FjeS10cnVuaworMTE4MjEgOTU4ZTQ4ODllY2FiNTZlMzgzZTlkMjMxYzM2ZDdiNmM0MmVmZWNmNyBsZWdhY3ktdHJ1bmsKKzExODIyIGNhNmUyMjczZmJmNjI3NTQ4MGEwNGU1NjZkYjAwMDk4OWIwODc2NTEgbGVnYWN5LXRydW5rCisxMTgyMyAzYjkxNDMyYmExYTQxMzE1NmIzN2YyNmIwMWVkNGVkMzhhOWQ5MzMzIGxlZ2FjeS10cnVuaworMTE4MjQgYzkxZTRkODdmNjk0Njk3MTVhZjVlMzgyMmY5NzViNGM0ZDMzMmUxOSBsZWdhY3ktdHJ1bmsKKzExODI1IDgxNTc0ZTQ2NDZiNDNjYWRmMTgzYzAwODZkNTYyYzgyNGM4MGY2ZGUgbGVnYWN5LXRydW5rCisxMTgyNiA3ZjI0MmYyOWE0NWZhOGEwMDA3Yjg0OTRiYTE0MGY5Mzc1Mjk3N2VmIGxlZ2FjeS10cnVuaworMTE4MjcgZmQ1YTQzMDliZmRjMmQ0YWY4MjU0ODZhZWZmNWZmMTAwMjY5NjJlNiBsZWdhY3ktdHJ1bmsKKzExODI4IDc1MjM3Y2E1NmFmZjM3NTUyYjZkYWU4MDNhNjdlNTk4YzljMjU4ZGEgbGVnYWN5LXRydW5rCisxMTgyOSA0NjJjY2QwYmJlNTBhYzY5MmZkM2Q4ZmJiODU0NzBmYjA3NDFiMjEzIGxlZ2FjeS10cnVuaworMTE4MzAgOTM0MGNiMmFkM2E4ODc0ZjlkZmVlODlkZDVhY2VmYjE3OGU0M2U4OCBsZWdhY3ktdHJ1bmsKKzExODMxIGI2MDVmMjJhMDk5YWE5YzY5NmQ4YzhmMWRmMzUxMWRhMDA5ZTIwMjUgbGVnYWN5LXRydW5rCisxMTgzMiBmNGRjYjkwYWM0MTlmNjllYTIwZmQ5ZDc5OTJmNDA3ZjAzYTkwNTVjIGxlZ2FjeS10cnVuaworMTE4MzMgZmIyZTdmMzhlMWJiZTY4YWJhODk5OWQyZTdkNTNjYmQ5NjIyN2QyNyBsZWdhY3ktdHJ1bmsKKzExODM0IDA0MWYyMmE1YTM5ZGQ5YjFlMzI3MzBhMzdhYjc3NjBmODVmY2Q3ZTcgbGVnYWN5LXRydW5rCisxMTgzNSBiYTMyNzdjZDMwNjg1ZjUyY2M5OWQ2MzE4YjU2Yzk5NzY1MjJjMmRjIGxlZ2FjeS10cnVuaworMTE4MzYgZDc0MGM5NjEzYmJhN2ExYWRkYTI2NGFiNjY1NGUzYzI3ZDdkYThiOCBsZWdhY3ktdHJ1bmsKKzExODM3IDcwYjMyZjQxYTdmYmZiMzhlZTU3Mjk0NjI5MTYxODQ0MDQ4M2E0ZDkgbGVnYWN5LXRydW5rCisxMTgzOCA1YTNkMjEzMDFhMDUxNDVhZjEwMDI5MjNiNWFlYjYzNjk4Nzk5MWQ1IGxlZ2FjeS10cnVuaworMTE4MzkgZWY2OGYwZTYwOWUxOThhYmU3YTg4ZDdjYjQxMjdmN2VmZDFlMGIxYyBsZWdhY3ktdHJ1bmsKKzExODQwIDRmNzg1MDRhNWY4MWRjNzZiZmI4NThhMDc0ZDI3MjJhOTBhMjllNjIgbGVnYWN5LXRydW5rCisxMTg0MSA1MGEyZDY0Mjc2ZTRiMTI2ZWZlMDg1MjE2MTEzNDQ5ZWQ0NWRiMWU5IGxlZ2FjeS10cnVuaworMTE4NDIgMjMzNjNiYjhiZDkwY2YxOWZlN2U0NGU5ZmM4ZWM3NzNhOWZjNTAzMyBsZWdhY3ktdHJ1bmsKKzExODQzIGUxNmUzNjNlMzkxYjQzM2EzODcxMDdhMmRjYjk2MzM5OGJmODA5MzEgbGVnYWN5LXRydW5rCisxMTg0NCBiYzlhZWE3MThlNGUzMmUzZDcxYjliMzNmYjQ1NzBlOWNkMjMxYzBmIGxlZ2FjeS10cnVuaworMTE4NDUgNjY5MDgzOGJhOGRhNjBlNGY1YzRmMDE4NmVlMmZhMjQxNmU0N2IzNSBsZWdhY3ktdHJ1bmsKKzExODQ2IGJmODlmMTQzNWI3MjhjZDBlZTNiZGUzOGU4ZDAwODZiNjJlMDBmMmIgbGVnYWN5LXRydW5rCisxMTg0NyA0NDIyYmEzODllNDE1NzBiNzI4MGU5NjM4NjUyMDliMzE1YTkyMjBhIGxlZ2FjeS10cnVuaworMTE4NDggZmRjM2M0NTllZDAwYWZjMjgxNGYwNzlkZDViODZlMWQ1OTRlYTA1YyBsZWdhY3ktdHJ1bmsKKzExODQ5IGNkMTlhN2RiODczNTZjZmRjY2Q3MDYyZWVkNmJiZWM5YTI0OTA0ZGIgbGVnYWN5LXRydW5rCisxMTg1MCA2NWIwODgyYTQ0YWJjZDlhZDZjNWEyYjFmODg1OTM1Mjk4MGMyZGFlIGxlZ2FjeS10cnVuaworMTE4NTEgNjFmNDVkZDdjNDNhNTMwNDY4OGMzNDZmZWVjMTgyYTU1ODk0YWRhMyBsZWdhY3ktdHJ1bmsKKzExODUyIDZiNWY3ZTlhMzFjYjllNmUwMzc1MzdmNGQxNmExYWEwZTQwMWM3MDUgbGVnYWN5LXRydW5rCisxMTg1MyBmMGEzYzFmYzdiOTAyNGVmZmMzZDkxOWE3OWQ1MGZmY2I4MTQ3NzdhIGxlZ2FjeS10cnVuaworMTE4NTQgNmI4ODllNGMwNzU0ZTAyMDkxNGRiYjc3ZDcwNzJmZDNlZmIwN2M3OCBsZWdhY3ktdHJ1bmsKKzExODU1IDJmZTdiYmU3MWRkOGMwYTAyYjFlZGQxODcwYmY1NDQ5ZDAxNTZjNDcgbGVnYWN5LXRydW5rCisxMTg1NiBkMWVhZGE5YmJjM2M3YTI3ZDgzY2I4ZjYwYWZkMjU1MTkxNThmMjEwIGxlZ2FjeS10cnVuaworMTE4NTcgNGMyM2FlNmM2ZTgyYzYxY2VjN2FhOWQ1OGYxM2RiOTlhNjQ5NzI2MCBsZWdhY3ktdHJ1bmsKKzExODU4IGIxMDA0YjQ3YmFjMGU3Mjk2ZjVkMTViMmFmZTE2NTFkMTI4MGE3MjAgbGVnYWN5LXRydW5rCisxMTg1OSA1MGUwNjMxY2YxMTcyOThkZDBhMTM4YWQzZDU0YWMxYTJlY2Q5M2U3IGxlZ2FjeS10cnVuaworMTE4NjAgZjM1MWM2NGM4MmVkYjg2NDg2NTUyYWY5YjI5N2UzZWFhZjQ1M2FiYSBsZWdhY3ktdHJ1bmsKKzExODYxIDlmMTM1YjNkOWE3ODMxNWQ5YjMxZTZlZDM4YmQzNzM3OWVhZjM3ODEgbGVnYWN5LXRydW5rCisxMTg2MiBjODAzMjFjMzI4YjVkMGQ5YjQwMWQzNDViN2RmYzE3ZGIzZGQ1NzMxIGxlZ2FjeS10cnVuaworMTE4NjMgOTgxZGQyMGJjNzExNjJiZjAzYzg5NjA1YmQ4MmE5ZDM0MzBkZmJiMCBsZWdhY3ktdHJ1bmsKKzExODY0IGY2ODE5YjkyNmZiMmM2NjEzMWJlNmYyYWY4OTFmYjZiOTBkMTA2MTYgbGVnYWN5LXRydW5rCisxMTg2NSBmMDQyODhjY2Y3N2I3YjMyYmNjNTNkZjI5YTA4NzcyNGRlYTQ4OGQxIGxlZ2FjeS10cnVuaworMTE4NjYgYTY4MDhiY2Y4YWMyOWI0Y2I1YjE5ZmI2MTFkMzUwMzViYmRmODAzNCBsZWdhY3ktdHJ1bmsKKzExODY3IDdjM2JlYTAxMTg5NThlYTM2MzQ3MTIxYTE0NDYyZThhOTcxZmM4MjkgbGVnYWN5LXRydW5rCisxMTg2OCAxMDZmYWYzNjZlM2YwN2VmYTExYzhhNzhjOWU0YjU5YmRmYTVlM2U1IGxlZ2FjeS10cnVuaworMTE4NjkgNmZmMDk0OGZmOTUxYzdhYmM4NTQ0YThjYzhmYjRjNWVlZWM2NDk5MiBsZWdhY3ktdHJ1bmsKKzExODcwIDIyOWY3M2YyYzg3OGZlM2QyMTQ5ZjAzYTNmNzVmY2NhYjBlZmNiNTUgbGVnYWN5LXRydW5rCisxMTg3MSA0ODA1NjczMTAxOTRjYTA3NjU2OTgxYTI1MWJmMzBmMzRkNTRiOTlhIGxlZ2FjeS10cnVuaworMTE4NzIgOWJmNDBlZjIyN2M5MmI2YjQ0Yzk2ZGJmNTJiMzVjODA1MzdiZTlhMiBsZWdhY3ktdHJ1bmsKKzExODczIDQyYTA3YmVmNjBlMDJjNzNhOTMwMDVlMzY4MzQwNmZmODY1OTFjYWQgbGVnYWN5LXRydW5rCisxMTg3NCBhNGI0YmE1YzRhYTIxMWI2N2Y2M2M3ZDY0NDQxMzFjNjdhNTE4NDQzIGxlZ2FjeS10cnVuaworMTE4NzUgZTE4MDI3MTMwYmJlMjBkMzRlNjJmZTZlN2VlM2ViZDQ0ZDZlYzA1MiBsZWdhY3ktdHJ1bmsKKzExODc2IGJmYTdlZDBiMWE2YmQyMGU0NDIwZTUzNGQwZmVhY2I0MGVlM2RmNmUgbGVnYWN5LXRydW5rCisxMTg3NyAwOWI1Y2I0NzU5MmQ0NGFiZTc4NGZhMjk3NWE2NmZhY2RmMTA2ZGRlIGxlZ2FjeS10cnVuaworMTE4NzggYWZlNTBiNjYxNTQ4YzhkMjc3M2Q3NWZlODUzNzk3NGY2YzhmYjNkMCBsZWdhY3ktdHJ1bmsKKzExODc5IDhhMzQ5MzA5ZmRmNDMzMTkwZGQ2MGMzNjE4OGJjNjNjZjc1YTNhNDMgbGVnYWN5LXRydW5rCisxMTg4MCAyYjM0NDYxYmE0YTNhY2VhNjY4YmRiNWMxYzcyN2E0MzNkMzcyZTBlIGxlZ2FjeS10cnVuaworMTE4ODEgNjRjYTExNTZlZGYxOTA2NzY5NDMzNmZmOWQwM2NlMDZhM2JjZjhkNCBsZWdhY3ktdHJ1bmsKKzExODgyIDAwYjA2Y2M1YjlkYTE3ODExNGM1ZjQzY2ViYjRhZmRmNTYyODQ3ZTcgbGVnYWN5LXRydW5rCisxMTg4MyBmNWQzOTc0ZDIwOWYzM2I5MmYxMzNlZjY1ZDJlNDBkMDI0ZGZmNmQwIGxlZ2FjeS10cnVuaworMTE4ODQgZjEwYzZhNzQzOGY1Y2UxMzljMWIxMzZiZDE1MDk4NTdlNzZkYjUwYiBsZWdhY3ktdHJ1bmsKKzExODg1IDlkZDZmNDI5NjQ3OWZiZjdjYTc0NTE5YThiNTdjMzg5MDUyYTVjOWEgbGVnYWN5LXRydW5rCisxMTg4NiA2Y2UwY2U0ZWEzYzE4NDdkNWVjYWMwZmRhZjk2ZTQyNzk0Nzg1YmRjIGxlZ2FjeS10cnVuaworMTE4ODcgYTlhZTk5ZjkyMTU0MDE4NzYzOWQ2YTlkY2IxZWQ3ZGI1ZTBkOWNhZCBsZWdhY3ktdHJ1bmsKKzExODg4IDIxMWM5ZTI4MzQ2NmY2ZTViMmJjNDhlYjIxZjkyNjFjYzQ2OTk2OTEgbGVnYWN5LXRydW5rCisxMTg4OSAzZDlhMGEzZTU5NmIyOGFiYzkzZjllODM5YTk3NzA5ODc2ZTc0Y2JhIGxlZ2FjeS10cnVuaworMTE4ODkgMjFkNzFmMmUyNzI0OGEwZjRlMzkzZDBmYzMyMWVjZjliODkzMjFkMiBsZWdhY3ktdHJ1bmsKKzExODkxIDA5NGMzODViNTYyNDMxMzZiNTkzMmU1MTMyNGQwZWI1NGQzYjI2MzMgbGVnYWN5LXRydW5rCisxMTg5MiA5N2E1NDNiZjlmOWE2NDQwMWU1ODllM2U0YTE4OWY5MjE5YmU1MTVlIGxlZ2FjeS10cnVuaworMTE4OTMgODdjODI1ZWY3ODc4ZGE2ZTM2ZDVjMzY1NTJmZjBmOWM1NzMyOTA5ZSBsZWdhY3ktdHJ1bmsKKzExODk0IDhjYjM4OGU3MWRkOTA1MDc1ZTVkNWRmNDg0NDI5ZmNhMTdhZmJiZmIgbGVnYWN5LXRydW5rCisxMTg5NSBiMDQ2NWFlYjBlZmNlMzAzMGE2MWU2MDE5OGE2Yjg4MzI1YTdiYTUwIGxlZ2FjeS10cnVuaworMTE4OTYgYzE5ZTlhYzJiMGM4Yzk5NzhiMzM0MzIxYjhkOGJjMmY2NmNmZGRhMyBsZWdhY3ktdHJ1bmsKKzExODk3IDNiZmY2NzM2OWIxMTA4NTlmZTk3ZTRkNDZjODIwZDMxNjdkNGE0YzQgbGVnYWN5LXRydW5rCisxMTg5OCBmMzY3MDkyNWIwOThjOTY2Njc0ZDM5ZWNhM2UyMmNjYmYxNDc2NGRjIGxlZ2FjeS10cnVuaworMTE4OTkgOWNjYWVjZDNkZWEzMmJlNjY0ODcyZmQ0OTdmY2Q0MGUzOTA1NzNlOSBsZWdhY3ktdHJ1bmsKKzExOTAwIDU4YTM1ZTVkMTNjYzYyNzE2MjQ1ZmExMGE2NTI5YTFkNDUxNWRiNmYgbGVnYWN5LXRydW5rCisxMTkwMSBmNTBiOWNjNzZjMWU2ZDkxNzM1OTkxN2ZiNzQzMTY0NGYxYWIyYzc0IGxlZ2FjeS10cnVuaworMTE5MDIgMzg4NjE2NWRiYTQyNjc4YzUyZGRlYzAyNTE3NmY3ZjllYzk4NmM2MyBsZWdhY3ktdHJ1bmsKKzExOTAzIDYzZWNmN2E0YzA3MGVjOWIzMzBjZWFkMWQzNzI0Zjc0ZDVkZDQyNTggbGVnYWN5LXRydW5rCisxMTkwNCBlZTk5MmIzMTIwZDNhZWNlNWZhMzk2MTBhNDJmZTI1ZDI3NDVlYmFmIGxlZ2FjeS10cnVuaworMTE5MDUgOWY5ZGEwMTg5YjdiNGRlZTEzNDFlZjFlZWU0NDI3OGFmM2UxZTQ1YSBsZWdhY3ktdHJ1bmsKKzExOTA2IDQ0YzU0NjhmOGQzNjQ1MzU2MTdjM2I1YjgyMGE2MDFkMTE4MTRmMDAgbGVnYWN5LXRydW5rCisxMTkwNyA2MjBlMDIyNTBjODBiYzYwOTMzNjI1YmYzMjk0MDU0ODRjNjk2NDYxIGxlZ2FjeS10cnVuaworMTE5MDggZmJjYTQ4NjMyN2NlMWMxNGIwOThhZTE1NTdlMDE5N2Q5M2ViZTJlNCBsZWdhY3ktdHJ1bmsKKzExOTA5IDAzNzllYjdiZTMyM2U4ZTc5YjExNDE1Y2U0MmQ2MDVmZDAwNzcyMzMgbGVnYWN5LXRydW5rCisxMTkxMCBlNzI1NGUyZjJkYzFjZDExZjI3NWExNjNiM2M4MzIyNDg0MjQyOGZjIGxlZ2FjeS10cnVuaworMTE5MTEgYzAzZmZmZjM4N2Y4YmRkNDI0NTNiMWY5OWQ0MDIyYTA1MGJjYzIzNCBsZWdhY3ktdHJ1bmsKKzExOTEyIDdiYTdmYmViODhlYzNhZGVmMjVkZWFjNmIzNmQxYzJhMzE3YTYxZjcgbGVnYWN5LXRydW5rCisxMTkxMyAwMTI5OTdiOWYxZWJkMTI2NTc2YmJlMTFkZDI5N2NkNTQ2ZDFjYWJkIGxlZ2FjeS10cnVuaworMTE5MTQgZTZlYTJiYzk3NGUyNmZiYmYzNzQxNTA1NTYxOTJjZjU0OTRkNmI1ZCBsZWdhY3ktdHJ1bmsKKzExOTE1IGY2Zjg2YjM3ZjFmYzNiOWE0ZTBjMTU1ODliYjJjYjlhYjk4ODg2OWQgbGVnYWN5LXRydW5rCisxMTkxNiAzYjhiMzFkMmM5Y2EzMTFmZTcyZjM2ZGIxZTZjYjE4NTY2MjBlMmRhIGxlZ2FjeS10cnVuaworMTE5MTcgOGU0ZmRiMGIwYmI4ZTU5OGU0YTlhZWM1YzRjNjkxNzZhZjI1ZjNlNCBsZWdhY3ktdHJ1bmsKKzExOTE4IDAyYjBiODRkZDU0NWU3YmE1ZWI2N2JlOTA4YmE1ZmJmNzY1MDcxNDkgbGVnYWN5LXRydW5rCisxMTkxOSAxYTU5ZjM2NTRiYzExM2EzOTk2MDE3NmM1NmNiNWFjYmQwZTU5ZGUwIGxlZ2FjeS10cnVuaworMTE5MjAgZTE4MDZiMjgwZjUzOTNjZGRhZjNjNTFhNDU2N2RmOTQ3NjhmZjQ3YyBsZWdhY3ktdHJ1bmsKKzExOTIxIDdmOGY2MDhhY2RiY2QzNzBhN2MxNDIzMzBkMzczZGY2YWNiMmJjYWUgbGVnYWN5LXRydW5rCisxMTkyMiA3OTJjZDdjNWZkODhhZDY3ZDQxNDQ0OGQ1NjcwM2NhZWI5NDY1NWRmIGxlZ2FjeS10cnVuaworMTE5MjMgOTBmYmVjNDM0M2RlYzYyZmViYmZmNzdjNzY2ZTViNjVjYzc3OTgzMyBsZWdhY3ktdHJ1bmsKKzExOTI0IDc1NjdlZjQwZGU3N2NiN2JlOTVhOTY0ZDEwZjM1MGQxNWM4MTQwNmMgbGVnYWN5LXRydW5rCisxMTkyNSAxYzk0ZjM0YjQ5ZTNmNzRjMzVhMDg1NzY0YzRhOTg3ZWJiMzZjMmFhIGxlZ2FjeS10cnVuaworMTE5MjYgMzM3YWUxMmQ4MDUwMDdhZDFjNmRmYWM2YWQ3ZGFjMmI0NTUxODQ0ZSBsZWdhY3ktdHJ1bmsKKzExOTI3IDIyYzMyZGQ2M2ZmNWQ3N2NkNzQxZGQxN2Q5MjBlZDA3NzE1OWQzYWUgbGVnYWN5LXRydW5rCisxMTkyOCA4N2I5NTU0YzUxZDRiYTZlYTU3ODA5MjMwOTRkYmEzNWJkMmRkODE0IGxlZ2FjeS10cnVuaworMTE5MjkgZWRmNzU1M2ZiMjBlZmVkZWY5YjkwMTlkMDQzOTc0ZmU3MWJkNTljMSBsZWdhY3ktdHJ1bmsKKzExOTMwIDllYTVjNDJkY2JlZGI1YzNlMTY1NjRmNjAyMTkzMGYyODQwMzRmNjUgbGVnYWN5LXRydW5rCisxMTkzMSA0ZjZmNzMwZDI1NTZkYmU5MzFlMGVhYjg3MGI2NzIwODI2YTFhZGJkIGxlZ2FjeS10cnVuaworMTE5MzIgNjNmZTg1NzM1YmRjZDk1NGQxYTBmNDQ1YmQ3YTQ0Y2EyMTIzZjRiMyBsZWdhY3ktdHJ1bmsKKzExOTMzIDQ5NjIzZGEzYzYzZjNmNTJlMmQ1Nzc5YWEyZDQzZWQyYWNlZTRiNDUgbGVnYWN5LXRydW5rCisxMTkzNCBjNjM2Njg5M2NlZTFkOTc2MGI1MzYxNmUzOGFiNzcyMGY3NWVhNzdiIGxlZ2FjeS10cnVuaworMTE5MzUgY2ViODc4Nzk2MTA4MTY5MTM5ZDRkMzcxYjI4ZjZiYWY5OGNkNjgzNiBsZWdhY3ktdHJ1bmsKKzExOTM2IGUxYzMzMDk0MzIyMWU1ZDk5ZGYyM2E0MmEwOTVkMmNiZDUwNmUyMDUgbGVnYWN5LXRydW5rCisxMTkzNyBmOGRkZDIzNDAzOTg4OWQ5Y2ZmZjk1YzdkMGEyMWEwY2FhZTJmMTVmIGxlZ2FjeS10cnVuaworMTE5MzggOTEzZWIzMWIwMzE3MjIxMjY1MWU3Y2FhODRkMDhjNWY0YmJkZTgwYiBsZWdhY3ktdHJ1bmsKKzExOTM5IDBmZWE1ZDVjNGZkOWRhOGQ3ODMxNDc2OTE1MjM0ZTI0Yjg0YWY0MTUgbGVnYWN5LXRydW5rCisxMTk0MCA1NjIxN2VhYmMwN2FiNGQ1YzU5ODMyYTMyMGE3Yzk3ZTRlNTI4NjUyIGxlZ2FjeS10cnVuaworMTE5NDEgNGJkNTEyOGU1ZWQ0MzQ0ZWQxYjE3ODYwYTc2ZmM2MGI0N2VhNTI5YSBsZWdhY3ktdHJ1bmsKKzExOTQyIDE4ODBlYWQzMjAwY2Q0NWZlMmE5MWVkZDllY2JiNjI3NzZmODExMDMgbGVnYWN5LXRydW5rCisxMTk0MyA0MWM4ODRkZmFkNWVmNGI5OTdmNmM2NWFiNzRmNDEwY2JmZDMzOTc1IGxlZ2FjeS10cnVuaworMTE5NDQgMjViNjkyOWZmYjEzZGUwMDVhODg2MThmMGE3NTNiNTM1YWQzYWIxOCBsZWdhY3ktdHJ1bmsKKzExOTQ1IGYyNDJjZDEwZTE2YTI0OGVlY2ZmMTY3NTQwODg5NDgwZTMyOWFkOWMgbGVnYWN5LXRydW5rCisxMTk0NiBkMzkzOWFkMzgxNzY2YWEzMDE5ZDZmMDY1MzMzNjRiNThhODg4MzE4IGxlZ2FjeS10cnVuaworMTE5NDcgZGE3MWFhMWJlMTkxYzAxYzNlODVkNzk0ODliNWIyOThhZTQxYzQ3ZSBsZWdhY3ktdHJ1bmsKKzExOTQ4IGIzNGY5ZTdlMjY5MTQ2NTRkNDg2M2M2N2JmNDg3ZTYwMDZjOTg2YzEgbGVnYWN5LXRydW5rCisxMTk0OSA0ZDNlMmYxZDBhZTQ3ZWRiNzVlYzEzMTcyYmQxMDc2YmE1MGU1MzA2IGxlZ2FjeS10cnVuaworMTE5NTAgOGJjMGEzMmRkYWI1YTIyYmI5NmUyNzcwODhmMmQyY2E2NmI2NTIyNiBsZWdhY3ktdHJ1bmsKKzExOTUxIGU1OTk2Mjc5ZjU4YzdiMzMxY2EwODMzMzZlMWUxNTQ2NWVlZjQ0NzQgbGVnYWN5LXRydW5rCisxMTk1MiAxN2JjYTRiM2RhOTM1N2NmOWRkOWRiOTU0MDU4OTg5ZThkYWIxZTUzIGxlZ2FjeS10cnVuaworMTE5NTMgMWFmZGM1NTgwMTU3OGNmMWNhNTY3MmQwM2M1ZTBiNmI4ODQ5YTIwMyBsZWdhY3ktdHJ1bmsKKzExOTU0IDU0NDIyYjQ2ZjZkMTgwMmNjOTNjNDc5ZjIyNzgzNjdmZjRlYjg4OTQgbGVnYWN5LXRydW5rCisxMTk1NSBlN2Q5ODRmMjY2Y2M2MWY2ZTZhZmY5NmM4NGViNGUyYzIyZDEyMzlhIGxlZ2FjeS10cnVuaworMTE5NTYgNjJlMWJjYzY2YTkzZTQyNTU5NTlhN2MxODJkNjBjYTVkZTA5OGM3NSBsZWdhY3ktdHJ1bmsKKzExOTU3IDRmYTg4MTBlODVjYWNmNWNmMGUyZGVhMDRiZmJmY2EzZDMxY2VkZTAgbGVnYWN5LXRydW5rCisxMTk1OCA5ZmZkNjA0ODA3YzIxNjczZGEzMGIxNDA5NDgyOGRhNDM5MTFkNGExIGxlZ2FjeS10cnVuaworMTE5NTkgOGRjMGU5N2E0NWVjNzUyMDhjNTJhMWRjMDY2NTc0YjkyZmVhNzU3NCBsZWdhY3ktdHJ1bmsKKzExOTYwIDc5OGIxMDQxZDI2MDZmMDk0NmU5YzU0ZmIwYzQzMWZkOGM0N2M4OTIgbGVnYWN5LXRydW5rCisxMTk2MSBhMTE1YzNkNDkyZGIwODM0NzRjY2I5OTlhMDAxMzI2YmE5MmZjNjgxIGxlZ2FjeS10cnVuaworMTE5NjIgNGRlMDllYTEwZWUwOGUwMjBiMGUzNjRlZDc2OTkxNWI4ZmUwYWYyNSBsZWdhY3ktdHJ1bmsKKzExOTYzIDZhMjQ0ZTY0YjNlNmIyZWMwNzY5NGJmZTlhY2FiNDQ4NTQ1NjFkNDMgbGVnYWN5LXRydW5rCisxMTk2NCBmZWI2YzM4NmFiNzcyNjU4M2U0ZjA4MzNhYzI3Yzc1NjI4MmVmNWFhIGxlZ2FjeS10cnVuaworMTE5NjUgZDA3YmM4YmYyZDg0NTkzZWY3OTEwM2U4MjJlZTFlM2NmN2FhNThiNyBsZWdhY3ktdHJ1bmsKKzExOTY2IDFhYmQ5MWY5NzAzMzI1Yzc0MzQxNTRlOWI3MmY1MTZlZjAyOWEzODQgbGVnYWN5LXRydW5rCisxMTk2NyBjMjE4MTVmYTA3Nzg4NjY1MDYxNjc2MjQyOThjNjQ0NmIxNjVhMzBjIGxlZ2FjeS10cnVuaworMTE5NjggZGUwMDkzMTY5NjQ5YmIzMGY2ZjhhZWZlMzA4ZTI0MzhiODc1ZDA0ZCBsZWdhY3ktdHJ1bmsKKzExOTY5IGFiZjJjZDI1MWIyNGE5YzQ5MWYzODhiYjlkOTFmYmQ4NDZmYmE2NzggbGVnYWN5LXRydW5rCisxMTk3MCAzZjcxNzM0MmYwYTM2ZGU5MWQ2ZGNmMzJkMTk1N2QyMDI2MzI2ZjVhIGxlZ2FjeS10cnVuaworMTE5NzEgYzFmZDgxNDZmMmU5YTc5Yzc3ZTU4NzdhYmFjYjE2MjA1MjkxNjM1NSBsZWdhY3ktdHJ1bmsKKzExOTcyIGY4OWVhOWJmOWE1MjVkOTgzMmQ4ZDIxZDI3NzA4MTZlZDI3NDY5ZWEgbGVnYWN5LXRydW5rCisxMTk3MyAxZWE2ZDIzNTZlNTJkYTQwZjk0N2JkMjI5NmJmNzFhYzA5ZGY4OTcyIGxlZ2FjeS10cnVuaworMTE5NzQgYWZhMGNkMjE3ZjRlYmE3MmRiNDFjMTY1YTMyYWJlMmNkNjljZjIzNiBsZWdhY3ktdHJ1bmsKKzExOTc1IGY2YTg0YTFjN2UwMmNmYjJhZWZjMjIzMDhiY2M0YTg5MmZlYzNjMTUgbGVnYWN5LXRydW5rCisxMTk3NiAzOWZmYzU5NjdiNmJhY2IyNDQ3YjA2NDM0MjU3MzEzMzRhNjlhOGEzIGxlZ2FjeS10cnVuaworMTE5NzcgNGFiY2IzMmY3ZWY1NGEzMzJkYzRkZWIzYjQ4MDMwZDEzYmU5MDJkYSBsZWdhY3ktdHJ1bmsKKzExOTc4IGUxZTljOWRmNGYxMmM4ZjUwMWQ2YzEwN2JiZDkxOThjNTNiMjc3YzMgbGVnYWN5LXRydW5rCisxMTk3OSA2Mzg3NmNkOTk4NGM5MjY4MWRmYTgzNGJhOGVmMzY3ZDU4NDY4Njk0IGxlZ2FjeS10cnVuaworMTE5ODAgMjViZTAwZjMxZGE2MTVkNDM2ZWU1OTNmMGI4YzNlMGY2MjdjNjE4MSBsZWdhY3ktdHJ1bmsKKzExOTgyIGQ4NDcxNTUyMzA5NWFjMjdmN2IzOTkyOTY4YjFjMWYyNmU5ZmVhMTggbGVnYWN5LXRydW5rCisxMTk4MyA2ZTZiZTg5NmVjNDY2ZTk0NGIzOWQzNjkzYzg4ZDM5YmE2MWM2ODk5IGxlZ2FjeS10cnVuaworMTE5ODQgZDM5MjhiOThlMmUxM2U5MjM4YzMxNTM0ZTY1MWYzYjczYjViMDM0ZSBsZWdhY3ktdHJ1bmsKKzExOTg1IDhmM2U3ZmUxZDRmNzYzYzBhZjUxMTRmM2FlNWM5NjI2YTdlMzdjZDEgbGVnYWN5LXRydW5rCisxMTk4NiBiMGNhMmNhNTg2YjE1OGIxZDRjMTA4Mjg2OWM1MTI5YWIzZGM3NjIwIGxlZ2FjeS10cnVuaworMTE5ODcgZGI3Y2NhMDliZWFmZTdiN2MyMjFlODEzZGIyZGU4ZDQ0Y2FhZmI4NCBsZWdhY3ktdHJ1bmsKKzExOTg4IGI3NWQ5M2VjOGU1YTZmN2YxYjNlMTEzY2Y5ZjJiMDdkMzE4MTg2NDEgbGVnYWN5LXRydW5rCisxMTk4OSBhM2JjZjFiMzY1NTE3YjU0YTk5ZmY3ZmQyODEwYzcwMGM2NmRkN2I4IGxlZ2FjeS10cnVuaworMTE5OTAgOTY0N2M2YWQ2YTUwOThjZTg5NWFlMmQ3MjdiOWFhOGUyNDYzZGUxZCBsZWdhY3ktdHJ1bmsKKzExOTkxIDE4MTUwN2NjMWE3MjU5NWE1ZjAwNTU2YWE4Mjc3ODgyYmRjZWZjMjggbGVnYWN5LXRydW5rCisxMTk5MiA1NDk4MzE3MjNlZjg1NzhhMWFhMmYxMWNmZGUzYTE5NTc2ZmZlOWFmIGxlZ2FjeS10cnVuaworMTE5OTMgZWFiZWJjMTYxNTE4NmIxZTJlNGY2ZGIzMzE3ZTY1MDIyZWNmMjEwMyBsZWdhY3ktdHJ1bmsKKzExOTk0IDVkODFlNDJjNmJhMmU4ZTA1OTg4MjgxMDQzMjJlYzc3ZGQ2YjVmOWQgbGVnYWN5LXRydW5rCisxMTk5NSA5NmM3MzRhY2Y4NGY1NWNmOTAzZDVlYTc5NmIyZmQ4Y2I5NTY0YTc2IGxlZ2FjeS10cnVuaworMTE5OTYgNzZlOTM1OTI0ZmFlMGI0OGM3ODUxYjI5YTcxY2ZjNmNiY2E1MmVhMSBsZWdhY3ktdHJ1bmsKKzExOTk3IDYzYTFhODUxM2MxZGNlNzBmZWZlNzM3NzQxNjUyNGY0YmZlZmEzNGYgbGVnYWN5LXRydW5rCisxMTk5OCA0NDMxZTdhMzE5Nzc1YmI2ZWRiNDZiMTJhZDU3MDczYjVmOTIwZTE5IGxlZ2FjeS10cnVuaworMTE5OTkgMzc3NzdlMGY4MGUzNzU1NGVkMmIwN2RjZWE1Yzk0MGYyNTBhYjVlYiBsZWdhY3ktdHJ1bmsKKzEyMDAwIDYwZGZhMjExZGRlOGJhZDY0ODRkOGFlMTQ0NTQ3MTNiNDAyNWQxOTYgbGVnYWN5LXRydW5rCisxMjAwMSBmZWM4NjIzMDFkNmUzM2NlYWEyZGQ0YjExYzQ0MmNiNTUyMzA3Y2NlIGxlZ2FjeS10cnVuaworMTIwMDIgZjU5NjUxOGQwNjkxZTAyNWJjYWU2Y2U3NDdjODE3MTYxZGJjZGNmNSBsZWdhY3ktdHJ1bmsKKzEyMDAzIDI0NDk3NjQzZGNjOTFkMTRkZjY1MmFlYzg2MTg4ZmNmMzU5OTg4OWEgbGVnYWN5LXRydW5rCisxMjAwNCAwNDQyNjIyNDMwMmFhZGFlNGEyMzc0NGM1MWNkMzlhOGM1MThiODEwIGxlZ2FjeS10cnVuaworMTIwMDUgY2Q3OTAzMTBiYzRmMDZmMmEzMTA1NDEyMDY0ZmMxMmZkNjZkNzFhOCBsZWdhY3ktdHJ1bmsKKzEyMDA2IDYwZDk5MGY3ZDdhYjU2YWZjNTljNTUyOGQ0Yzg3ZGYzNzNjZDU2NjAgbGVnYWN5LXRydW5rCisxMjAwNyA0YTczNDRkNTVhZTE4Nzk1MjhkMGE4NjNjMzUxOGVmNjBjN2E0MjA2IGxlZ2FjeS10cnVuaworMTIwMDggODU0NDRhZjJiZTk1ZDA1NWIxMjMzNjA1Y2YyYWRjYzNiNTI0ZmZmYiBsZWdhY3ktdHJ1bmsKKzEyMDA5IGJiZTkyOTMyYTAwNWU1N2UyMjhjZWMxNDJkYTYxYmI5ZGU1ZmJmNTMgbGVnYWN5LXRydW5rCisxMjAxMCBhMmU4M2JkYzFmZWFlZjczYmE1OTZhZTFlNGM0NjFjYWQ2NzFjN2M2IGxlZ2FjeS10cnVuaworMTIwMTEgMzUwZjI0MTgwZGNiNDIyYTE0ZDdmNmViYTA4YjBkNGVmYTBhNGZkOCBsZWdhY3ktdHJ1bmsKKzEyMDEyIGExMjYxMDdjNDMzYTZmOWEwN2M3ZDM2YWQ4OTljZjk1NWQ0ZjAyNGUgbGVnYWN5LXRydW5rCisxMjAxMyA5ODNmNTNmMmI2ZjY4M2NiNGZhZjlhMGI3Y2RiNmFhNjFmYmI1YzQyIGxlZ2FjeS10cnVuaworMTIwMTQgNThmNmRhN2M4YmI4OTQyMTRhZjM5ZjRlZTEyYzY1ZWEwYWY4ZGJiMCBsZWdhY3ktdHJ1bmsKKzEyMDE1IGZlNzgzOTg0ZjkyZWEzYTI0ODg5YWY1NGYyYzRlMGZlMDVhYWFlN2YgbGVnYWN5LXRydW5rCisxMjAxNiAyMzA5MjVmZTViMmRlOWRkNmIzNmIyMWVjMDBiYTcwNTg3OGYzYjNmIGxlZ2FjeS10cnVuaworMTIwMTcgNWFlMWEyMGJiZTcxZWI1NjllNjIxMWM0ZDRhY2NkOWQ2MmQ2MmJjMSBsZWdhY3ktdHJ1bmsKKzEyMDE4IDMxNWNjMDZhODE2MTU0N2RkNDlkZTlmMmIxMmMzMmM4NTkyOThlMGMgbGVnYWN5LXRydW5rCisxMjAxOSAwZjI3MjU3ZmI2Y2Y0ZjQxNWJkNmIzYTY0MDY3MWIyZWQ5MDhkODgwIGxlZ2FjeS10cnVuaworMTIwMjAgYTFhOGRmNzNiZmZmNTIzZmU3YzdkOGQzOThjY2JjOTJjZWIxOWI1NiBsZWdhY3ktdHJ1bmsKKzEyMDIxIGVkNmNhY2RkYzZjNjhlODdiOTA2MWFjZmY0NTM2OTNmMjkxZDE0NmMgbGVnYWN5LXRydW5rCisxMjAyMiBjNmExMTAzZWZhOGFmMzFlNmU3OWE2OWMwZTVlMWE0ODU5MTUwZjQ5IGxlZ2FjeS10cnVuaworMTIwMjMgNDhjNzAwNDEwOTM2M2JiMTUxNDk1NDNlZTZjNmYyMDA1ZjU4OTMxNyBsZWdhY3ktdHJ1bmsKKzEyMDI0IDc1MDRmMjNjOTI0N2Q5MTA2ZTg5YTU2ZmM3ZDFkODQzZmU2NjkyMWQgbGVnYWN5LXRydW5rCisxMjAyNSBmOTAyZWNjODY3ZDA4ZDM0YzlhMGEzOWYwOTAyZjQ4NDQ5NGMxYWQ2IGxlZ2FjeS10cnVuaworMTIwMjYgZTA1OTA0OWIxYTc2MjBjOGUxNTNiNDE0OWYzYzI1NmY2N2ZlMTQzYSBsZWdhY3ktdHJ1bmsKKzEyMDI3IGQ3ZDM5MjYwZmU4MmQ1ZmZlMWQ1N2I2Y2E2NjY0NmE5NmI0ZmQ1NzMgbGVnYWN5LXRydW5rCisxMjAyOCA4M2Y4M2YwMDJkMmVhZTUxZmZiODIzNjg5Y2RiMTM5NDExNjQ3OTk3IGxlZ2FjeS10cnVuaworMTIwMjkgNjg4NjNmNTEyNzZjMDg1MTEwNWJjOTI1YzFhZGM3NDgxMmQwZmE2NSBsZWdhY3ktdHJ1bmsKKzEyMDMwIGRmMDc3N2FiN2M2Mzg1NGY4NjMzMGFlOWEzNjg5NjQ4MDNiMjc2ZWQgbGVnYWN5LXRydW5rCisxMjAzMSA3OWE4YTFhNzQ2N2IxMjJmNDBlMTgyZGFhZmI4ZTFhN2EwYjhkM2ZkIGxlZ2FjeS10cnVuaworMTIwMzIgNTMzMjViOGY4Y2U5YjFjZDNlYjI1ZjhhNzgyZDlkMzI1MWRmZmFjZSBsZWdhY3ktdHJ1bmsKKzEyMDMzIDkzZWNjNTFmNTlkMTJhZjM4M2I1MzRjMmYzMTc0ZDExNzM0MWY5NmUgbGVnYWN5LXRydW5rCisxMjAzNCAzZTUwYzFkZGFiM2EzYmNiMTFhMmM5MGUwMGY4ZmIwODE2NzM1ZmM3IGxlZ2FjeS10cnVuaworMTIwMzUgZjE3Y2VkYTZlNjY2OTI1NzNkM2VmMWUzYTA1YjU0NzBmNTI0MDU1OSBsZWdhY3ktdHJ1bmsKKzEyMDM2IGZmMzkyZGQ3Yjk3MDk3NDRiYzRjNDgzYTFjZjA2YzliMGU5MTMwM2YgbGVnYWN5LXRydW5rCisxMjAzNyA4N2JiYzcyMWJhMmI5OWRmNTcxZjc4YzJiNDA3YWQwZjBiOGU0MDYyIGxlZ2FjeS10cnVuaworMTIwMzggYWEyYzFhOGZhOGNlMTEyNDk0OTRiOTk4NDA5ODA4M2VjM2I0MTIyMCBsZWdhY3ktdHJ1bmsKKzEyMDM5IGI4ZWM5NzRhZmQ2OTU2ZDY3MjU5MjU4MWY2MjczMDg5ZjEwNzZlNDIgbGVnYWN5LXRydW5rCisxMjA0MCAxNDM3YzIzMzViM2I0NmE1ZThjNmMwNDUzNDRlNjkwNWExY2RkMmU2IGxlZ2FjeS10cnVuaworMTIwNDEgNmJhZDY5ZDM4MjE2MjVmODI5MzgxMTZhMGY1MjE5MzllOTJlY2ZiYiBsZWdhY3ktdHJ1bmsKKzEyMDQyIDE2YWYyNTgyYzk2NGNjYzdjNWE1ZTA1NWIxYzZiMzc1OGUxNjY2NzMgbGVnYWN5LXRydW5rCisxMjA0MyBkNjQxNWMyN2IzYjFiNGJmMGJlZDAwZmU5MGZmNWVkZTNhNTkyNDU3IGxlZ2FjeS10cnVuaworMTIwNDQgYWE5NjFhNDZhZTllMDk3NjNiMzEzYTc1ZGQ0ZGRkNWRhZWQxNGU0YyBsZWdhY3ktdHJ1bmsKKzEyMDQ1IDZlMjQ5YjEzNWVkM2IyMWQ2OWYxNGNjMDYzZjgxNWE0YTJiZmY2YTIgbGVnYWN5LXRydW5rCisxMjA0NiA4ODE5ZGVmMWIzOWM2YWNhMDQwMWRiNmY4NDZjYjFlNTU4MDc4Y2FhIGxlZ2FjeS10cnVuaworMTIwNDcgNDg1YzBiZGZlOGEwZTM5ZWZjZTUwOWI5YjUwOTdkY2ZhYmRhMWVmOCBsZWdhY3ktdHJ1bmsKKzEyMDQ4IGQ1OTRlODMyYTU2Y2JjMTkyMzNjNmQyYTM2ODFjMTczMDliODY3NWUgbGVnYWN5LXRydW5rCisxMjA0OSBkZjM5ODVlYjU4NzNiYzhmNzYzYTQ5NGU4YWI2NWIwZTY0NDc0ZTg2IGxlZ2FjeS10cnVuaworMTIwNTAgOWE0ZjViYWE4MjRlN2FiYmQ4YjA0NDc3ZmUzYjkyOTVmOWMxZDc2NiBsZWdhY3ktdHJ1bmsKKzEyMDUxIDE2ODc4YTRjMjYwZDIwYTVkZmU0OGY0ZDRiOTlhMzhlOTczY2Y4ZTkgbGVnYWN5LXRydW5rCisxMjA1MiA5MTc3YzQwOWRjNDUxMmEwOWIyY2MwODA2MjJmY2U2ZDYzMjcyN2FlIGxlZ2FjeS10cnVuaworMTIwNTMgMjIwMDkwNGFiZGRjNTEzNjU0NGIwZGQwOGRkNmE3YjEyNDJjZThlZSBsZWdhY3ktdHJ1bmsKKzEyMDU0IDgzYmI2MDZhMzJlNmY0NDhmOTgwOGNhYjY3YWQ0MzlhMmNiNDNlZGIgbGVnYWN5LXRydW5rCisxMjA1NSBmMDJjNjU0OWVkMWI1NDE3YjQ2MjIzN2ZjNTVjNDI5Yzc5NmJmYmVlIGxlZ2FjeS10cnVuaworMTIwNTYgZmE4NjdkOGVlN2ViYzAzOTBlZDQ3OWZjYjAxZDBkMDM0ZDZkZGI5MiBsZWdhY3ktdHJ1bmsKKzEyMDU3IGZlYjhmODc2OWVmNjJkYzVmYWMxMDljOGQxMWQ4ZWYxZDlkM2I4OWEgbGVnYWN5LXRydW5rCisxMjA1OCAwNjcxN2U1MjA2OGZmZTMwODU3M2ViNTMwMmIwOWE4ZGVhNzBmMzMwIGxlZ2FjeS10cnVuaworMTIwNTkgYWU4ZTE0OTQ0NDE0N2NhZjJkYjU1ZTcwZDQxZWVlYTNjYzRiZDViZSBsZWdhY3ktdHJ1bmsKKzEyMDYwIGJjOWU3NzIxYzkxNjIwM2Y1MzFiMGNhNWNmNjUxNDliNmI3NmMzYjcgbGVnYWN5LXRydW5rCisxMjA2MSBkODVkMmQ5OTRmMWY3ODlmNmZjM2JjZmJkMjMxMTQ1ODMxNzFkZTVkIGxlZ2FjeS10cnVuaworMTIwNjIgZDEzYTYwYjQ0YjQ1ODdjNjViOTA5NGEwZTc3YTc3ZDY2NDg5ZmYwNSBsZWdhY3ktdHJ1bmsKKzEyMDYzIGEwOTExODVjY2ZiNmI0NThlMGJjNTQ4M2FiZDgyMDUzZTYxZmRlZWYgbGVnYWN5LXRydW5rCisxMjA2NCBhYzc0Mjg2MmNhMzYyNzc4ODQwMDRjYmRhMjdiYTYyNjlhYThmNmMzIGxlZ2FjeS10cnVuaworMTIwNjUgYjcxNThkYjM0N2Q5YjlmZWVkZjg5ZTc5MmEyZGI5MDBkYjMwMzM1MSBsZWdhY3ktdHJ1bmsKKzEyMDY2IDU1OTkxMTc2OGRjYmFkYjI4NTNiZWQ3NjcxNzE3YzZjYTUxNTcxYzcgbGVnYWN5LXRydW5rCisxMjA2NyBhYjIwZjVjZGQ3OWY2ZTU0YTVkYWI0YWMzZmFlZTcxMTFiOTcyYmFhIGxlZ2FjeS10cnVuaworMTIwNjggNWNkYmQ4YzA0MDE2Y2M2NDRmYzZlM2RhODAyODg2N2U0YzdiMTlhMCBsZWdhY3ktdHJ1bmsKKzEyMDY5IGIwOWE5YzQxMmJhMjk5NGE5NzlmZmRhNWFhMWIxNDFhMDM5NzNkNzMgbGVnYWN5LXRydW5rCisxMjA3MCBiNjc3NDM2NzUzYTg3MmIzNDRkODM4ZGJiOTQ2ZDUyOTFiNGQyNWQ1IGxlZ2FjeS10cnVuaworMTIwNzEgOGU2ZWE1ZjAzZTczNDBjYjdmZmNjZTBmNTllZWZkMzBhMGQwYjM4NiBsZWdhY3ktdHJ1bmsKKzEyMDcyIGFhMWU0ODI4NWQ3YmNlMDA3YThlNTBjNWM1OTNjODFiNmUxMzg0NDkgbGVnYWN5LXRydW5rCisxMjA3MyBjZGY1NjE3YzIwMjJkMmI3NzE4MDA1OGFkYzJiYzc4OGYxNGI3Mjk2IGxlZ2FjeS10cnVuaworMTIwNzQgOThhZDU3YzM5ZDIwZGMxZjEwNWE1YTY0ODI3MmE0OWFiMTJhMDU0NiBsZWdhY3ktdHJ1bmsKKzEyMDc1IDgxZGQ3YzczZjdiMjFmNDliMzg4NzI0Y2FjNzFlNjJhMTBkNDM4ZTMgbGVnYWN5LXRydW5rCisxMjA3NiAyOTkyODRlZTY2OWRmZmZiN2E0ZmM4YmM3NDQ2YzA5YWJmMzFiZjdmIGxlZ2FjeS10cnVuaworMTIwNzcgZjRkYTk0NDlmMDExMDFlMmQ1NzQ2NjY0Y2RhOWU1ZWQ0NWE0MDFhYyBsZWdhY3ktdHJ1bmsKKzEyMDc4IDlhOGVjZDc1OWUxMzQxMWMyYWUyZjA1MWI5OGNiYzlhODVmNzMxNDggbGVnYWN5LXRydW5rCisxMjA3OSA0NTk1ZWY1YTk2OGFjNTM2ZWI2MjBmMTI3NGY4YzNiY2QzNGM2NGEyIGxlZ2FjeS10cnVuaworMTIwODAgODhkNTkwY2MxMTE2ZTRmNGZhMGE5YTQwMGU5NTU0MDQ2M2I0ZjEyYiBsZWdhY3ktdHJ1bmsKKzEyMDgyIDY0ODNkYmUwOWYwNjE4OGNlM2ZiZTE2ZThjMzFiNDI4MmQwNDk3ZDYgbGVnYWN5LXRydW5rCisxMjA4MyBlNjZlODhmNTI2MDY0M2QzODM3ZWU4MTBhODY3OTQzNDg3NGU0MGQzIGxlZ2FjeS10cnVuaworMTIwODQgM2MyOTdhNmFkNGU4YmY5OWE5YzFjNzRjNjRmY2E2YjA0ZjQ4MjlkMCBsZWdhY3ktdHJ1bmsKKzEyMDg1IDYwZmRiMWRiMTE3NTY2NWI5ZDc1OWYwMmIxZGNhYjEwZDAwNGY1MmEgbGVnYWN5LXRydW5rCisxMjA4NiA1YTljYTJlOTM3YjViZDczNGRmY2QyZThhNTA1YzM3NWI2MGU4NWFmIGxlZ2FjeS10cnVuaworMTIwODcgMzgwMjNhNDI1ZTQ4MzgwYmVkN2I2MmIzYjc1M2IwNDVmMzM0NTZjYiBsZWdhY3ktdHJ1bmsKKzEyMDg4IDAxYzhmZTQ0MDY0YjMyZGQyZjZlNzMwNGYzNTI5NzgwNDY5Nzk0MjMgbGVnYWN5LXRydW5rCisxMjA4OSA0NWJkNmM0MGMwNWFlMDUyZmEwMDUzNmQwNzFhMjAxMDFjNDNhNGVjIGxlZ2FjeS10cnVuaworMTIwOTAgN2Y5MDczNjcwMWEzNTBlMzM5NTUzMDAzYzBlYzVhMjYwMjc0ZTA1NSBsZWdhY3ktdHJ1bmsKKzEyMDkxIDJhYWZjZWUyMjBiYzBiNzY4OWY4MmY0NmUwOWM0ZjllMDBlYmY3ZTQgbGVnYWN5LXRydW5rCisxMjA5MiBmMjJmNzY5YmYzZDk0MjFjOWE5YWExNGU2MDY1NGRlNzRjOGViMDdlIGxlZ2FjeS10cnVuaworMTIwOTMgODZiZjcwYTU1ZWZkZTRkZTc0MjJhMTY4YWM4NDU2MTI2ZTE1MTM5ZSBsZWdhY3ktdHJ1bmsKKzEyMDk0IDYxNmIxNzRlZWI1NDgzMGRlODRlMGRkMjM2MDY5ZTZmMTNmYWY3ZWQgbGVnYWN5LXRydW5rCisxMjA5NSAzNjA5Y2RkYzc5ZGY2MTAzZWU0ODQ1OTYwNmQ1NDU2OTNkMWU5N2JlIGxlZ2FjeS10cnVuaworMTIwOTYgNTgzMWJiM2NhNDJhNDlmODhhZDY2MjE5NWUwZjBhMTdlYjJkY2I3ZiBsZWdhY3ktdHJ1bmsKKzEyMDk3IDU0YWFmZTQyYzBjM2YyMDFlY2Y2ODVlNzcyYmY2NGM0ZmQxNmI4ZGMgbGVnYWN5LXRydW5rCisxMjA5OCAzMDc2ZmZmMzA1MzVmMmQwYjVhYjlmNGY2MDY1NThlYzYxODExNGJkIGxlZ2FjeS10cnVuaworMTIwOTkgZmNiZjIyMmU2ODk4MWFhNmY0NmRlY2YzOTQ0YjQxMDYzYWQ1MDVjYyBsZWdhY3ktdHJ1bmsKKzEyMTAwIDBmM2Y5ZTM2NjM1NmM3YjgxMTg4NWIyMzNiOGQzN2M4MTEzMzViZmEgbGVnYWN5LXRydW5rCisxMjEwMSBkNzk4NmI0YjkxMDA5YzBhMjJjMTQyMzM5Y2IwYzFjYTI1OWMzZTk2IGxlZ2FjeS10cnVuaworMTIxMDIgYzRlMmRhNDc3OTQ5MjljZTA1ZTBhZmEzOGM0MTg2MjJjODIzZGZiMSBsZWdhY3ktdHJ1bmsKKzEyMTAzIDFkYzBlZjI0YjE1ZDMyMDJlMjI5OTFiNDE1Yjk2MDE2OGJhOWQzMGEgbGVnYWN5LXRydW5rCisxMjEwNCA2YjU5ZjlhYjVkYjFhNTEzODQxOTJiNjBiNGViMGY5Y2M1NDgyNDkyIGxlZ2FjeS10cnVuaworMTIxMDUgY2I5ZTNmMDBkNmI2NTQ3NGRmZTgwM2E3MjA3NWU2YTg3NDg5YzdhOCBsZWdhY3ktdHJ1bmsKKzEyMTA2IDg0ODM5NTNhOTI0ODNkN2ViOTUwNDMxZTVkNDE0NTUwMTY2NDcxOGIgbGVnYWN5LXRydW5rCisxMjEwNyA1YTM2YmFkMWQyNDg5Yjg3YWJkNzdhMWNiYzIyMTk5ZWNkYzU5ZmY2IGxlZ2FjeS10cnVuaworMTIxMDggYzFmOTg4NTdjYzViYjdmNjA3OTAyZDgzNTcyZWY1YzM5OTgyNzA2MCBsZWdhY3ktdHJ1bmsKKzEyMTA5IDI2NzhkYmY0YWQ2OWEzMzBkNmU0ZWFlM2ExZWQ0MGUyYjYzMTEyYjggbGVnYWN5LXRydW5rCisxMjExMCA1NzBmZWQ0YWI4ZGFmNmZjOTdiNjQ1MTRhM2Q5ZTQ3MTZlOTA0NGM0IGxlZ2FjeS10cnVuaworMTIxMTEgYWE4OGNmZmMzNWFiOTRhMzJhODFlOWExOTQ3ZTI3MDEzZjNlOThjYiBsZWdhY3ktdHJ1bmsKKzEyMTEyIDU0MjZiZWY4OWVjMzM4ZDA0ZDhmZmRkMzQ2MTgyYjI0NzBmZjFjM2QgbGVnYWN5LXRydW5rCisxMjExMyBjZTc5YzBlNzRmNmZlMWYyOTBiZTQ4ZjZmZmU5MjhmZWVhMTRjY2M1IGxlZ2FjeS10cnVuaworMTIxMTQgYzAzNzg3ZWM5ODExYzk4NmI1ODZhMGZmNmVmOWYyZTRjZmMxOThkZSBsZWdhY3ktdHJ1bmsKKzEyMTE1IDlhYmVlNjNjNmJhYjNjNDZkN2Y2YjZiZTQwODZjMmU0OGViMjhhYTIgbGVnYWN5LXRydW5rCisxMjExNiBjMTJmZWU0Y2UzNjNkOGYzMWIwZGYzZjBiYjc3ZmFkOGUzN2Q3ZGExIGxlZ2FjeS10cnVuaworMTIxMTcgOTkxYmQzNTNjZmViZmJkN2FiNjQ5ZTJmOTNiMzU1MDczNGI3MTgyNCBsZWdhY3ktdHJ1bmsKKzEyMTE4IDkwZmRiMzc3NjRhMjJiMTA2YjRmNTI3MzdjM2U4NDY4ZmU2YWRkYjMgbGVnYWN5LXRydW5rCisxMjExOSAxNzlmYjYzYjE1NTQ3NDczYmIzZGFhMDhiYzJjNzIxODFhMGM5ZWI4IGxlZ2FjeS10cnVuaworMTIxMjAgMDdlZDM4YzI5NmVlOGY4NWI4OWRmN2FiODUwMGIwOTBmMjEzMDRmZiBsZWdhY3ktdHJ1bmsKKzEyMTIxIDU2NzJmNWYxZGI0Njg0ZDFhNzY5YjgyZWYyNzlkZThiMGNjNjQ0ZTcgbGVnYWN5LXRydW5rCisxMjEyMiBmYThmOWZlMGEzM2Q5ODUxNWFjYTQ0ODhlZjczZTUxODIxMjE3ODNkIGxlZ2FjeS10cnVuaworMTIxMjMgYjJmZGQ3MWNhMDA2Y2I0NjNlMzdmMjhkZmIwMzljNWYzMDk3Y2MyNiBsZWdhY3ktdHJ1bmsKKzEyMTI0IDFmZTQ4MDA5ZDhlYThjYTViNzY1MWM4OWJlNzhjZDNhMmViMWNhOGYgbGVnYWN5LXRydW5rCisxMjEyNSA5OGE2ZmM2ODc3YWVlMmMyMTk3M2FjMDE1OGJhNGJjZDMxZjJmYjZmIGxlZ2FjeS10cnVuaworMTIxMjYgNGY1MGM3MDQ1NGE5YjJkMTIwY2FkNmM0ZDYzYWI0ZmVlZjk4M2Q5NSBsZWdhY3ktdHJ1bmsKKzEyMTI3IDgyMDMwY2EwZmEyZWEwMGM1NGY1YzRkZTc5NWU2NjQ3ZmNhOTYzYTUgbGVnYWN5LXRydW5rCisxMjEyOCBjYTIxMjg0ZTg3NWRjZjU3ZTA3Zjc5M2E0ODI4ZTE2ZmE5YmM5MjMzIGxlZ2FjeS10cnVuaworMTIxMjkgZDY2NzEwOTM5YTMyNTQ4N2Y0YjI1MjUxM2UxZDZjYjAzN2UyOGE5ZCBsZWdhY3ktdHJ1bmsKKzEyMTMwIDJiMDBiYjUwODgwMzZhNDA1ODhlMjJmMzRhYWY3NDMzMjRjNDMxOWEgbGVnYWN5LXRydW5rCisxMjEzMSBhYzUzNDU4MTRiYTA5MzNjM2Q1YTkyZjJlM2JkODI1ODI4NmEyMzMxIGxlZ2FjeS10cnVuaworMTIxMzIgZTJkYzNjYjA4YzYwYTdmOTYwNWFkMDY5YjNiOTJhYmJiYmU2Mjk4MiBsZWdhY3ktdHJ1bmsKKzEyMTMzIDg1ODZkOTExZmIzOTAyMzhiMjNlN2VkYWU3ZDI5M2M3OTI4ZmFkNGQgbGVnYWN5LXRydW5rCisxMjEzNCA0NDI2N2I4OGZiNTk0MTBlZjY4ZTQ3MTY2NzljNTNiODQzNDhjOWRjIGxlZ2FjeS10cnVuaworMTIxMzUgZTU4OTU3ZjA2YTE1Mzg0ZTJkN2RjMjY1ZDBlNThkMTdkMjU2OTQwMSBsZWdhY3ktdHJ1bmsKKzEyMTM2IGY1ZTU4NmI1Zjc5MDAwNDVhYTQzZTczNGEyZjY3ZDZhNDUzMjI0MzUgbGVnYWN5LXRydW5rCisxMjEzNyBmOWNjNTIzNzRjNTJjM2VjZWUyYzg5MmU3YzkyY2RmMDAzMGJmOTJmIGxlZ2FjeS10cnVuaworMTIxMzggZGExZGQzZTU0YjdhZTI0YTI2MjNkMGNkNWZkZjAxOWY5Y2JhZmVkYSBsZWdhY3ktdHJ1bmsKKzEyMTM5IDcyYTJmYmIwZTFmOTAwMzhkYzA4ZmM1MWJjODRlMjgxMzRlZTFlOGUgbGVnYWN5LXRydW5rCisxMjE0MCBkMTUyYWRmM2YwOTRjYjIyYjkyODI1YTkwNDYzMTY2YjA2ZDI0MmNmIGxlZ2FjeS10cnVuaworMTIxNDEgMDgzNzljN2Y1ZmE5YjMwMWYyMWVmMGFiMmZhMzgzNjY2MTQ4ZjcxOSBsZWdhY3ktdHJ1bmsKKzEyMTQyIGMyZWMyMWM2NWQwNTAwNWQ2MDc2YTVjNTc1NmE2OWY3NDA5YTkzNTIgbGVnYWN5LXRydW5rCisxMjE0MyAyY2Q1OGE2MWIwNTE2MDczYzQ4YzkzMDU2N2JmYmM5ZjhhYzRiMzQwIGxlZ2FjeS10cnVuaworMTIxNDQgNGUxNWQxNzVlZWQwYzliYjQ5MWYzNWI2OTU3ZTgyN2Y4NWZiNzkyZCBsZWdhY3ktdHJ1bmsKKzEyMTQ1IDQ3NDJjNTI5ZDljOGUxYzlkNjYxN2NlMjljZTM3MjFjZWRhZTRjMWUgbGVnYWN5LXRydW5rCisxMjE0NiBjNGVhZWY4OWE0YTc1ZDk4MGFjZDUyNWY4NzhhZmZjY2EzNjhhNDQ0IGxlZ2FjeS10cnVuaworMTIxNDcgYzY2YjBkMzlhNzM2YmU2MGU3ZWViZjVlNmE2OWZkNzA4OWIzNTNmYSBsZWdhY3ktdHJ1bmsKKzEyMTQ4IDQ3MDEyYzEzZWZlNDdiNGRlYmI5NzA4MTI5OGFlYzU3ZWNjYzk2ZWMgbGVnYWN5LXRydW5rCisxMjE0OSBiNGNkYTM5NDBhYzNmYzk3ZjRmNmFlYmE4MTM1MWRlNzVjMGQ4ZDU1IGxlZ2FjeS10cnVuaworMTIxNTAgYjc3ZDM3Mzk5MzQzN2E5OWNkZTg5ZDBkN2M3YmVjYjBkNmY4ZGRmMiBsZWdhY3ktdHJ1bmsKKzEyMTUxIGU3ZWUxODg0ZmQ1NDkxY2ZlOGVkZTU5Y2JlMmRjZTAxYTIwZDU3ZDcgbGVnYWN5LXRydW5rCisxMjE1MiA2OTQxZjQzZDNiYjgwOWM3MDYxMDI0YTlmM2YwZDY0NGJjYmIyMTcwIGxlZ2FjeS10cnVuaworMTIxNTMgOTE3MzU3YzEyNTUyMjZjOWY4OGJkZWRiNTVlMmQ2ZGNlNDNhNTFjNiBsZWdhY3ktdHJ1bmsKKzEyMTU0IGJmY2U3M2QzNTc2YzMyMDhjZGMxMmMwODY1YjgwMTEzOWNlOGFlNmMgbGVnYWN5LXRydW5rCisxMjE1NSBhZDQ5N2NiNWQyZGMyZjk4OWE3NGMxMzFmZjEyYjk4OTgwZWU4ZTY3IGxlZ2FjeS10cnVuaworMTIxNTYgN2RkZTQ1MDFmNTNhZGEzNGQxMWU2MjAyMWRlZDI1N2FlYTg5MWI5YiBsZWdhY3ktdHJ1bmsKKzEyMTU3IDIzMjM3YmNiNzc0YmYyZWY2M2Y5ZTJjN2MzY2E3ZWYyNjlkOTJjZjYgbGVnYWN5LXRydW5rCisxMjE1OCAwNGIwYTBmMjlmNjVmMzBhYTU1ZGM0YzA1NTUyNzNhZjA2NzdiMDNhIGxlZ2FjeS10cnVuaworMTIxNTkgYTIwNmM2MWE4OTUwOWU1ZDQxYzFkNzFhNWY3MDFjMWMwOGZjNGYxYSBsZWdhY3ktdHJ1bmsKKzEyMTYwIDQ4MDhhOGI1N2FmM2FiYmU3Nzc0YTA1YmJiYzBmMTQ1YzkxODk3NWQgbGVnYWN5LXRydW5rCisxMjE2MSA5YmE3ZjUwYjgyNWFkMDg1MWMzNzM4NjAwYmFiZWIwMzUxZTNhMmZkIGxlZ2FjeS10cnVuaworMTIxNjIgNDQ0OTcwMmEwOTZhNGZkNzQ3YzY5MjhhNTk2OTY4MTRkZTc0ODEwZCBsZWdhY3ktdHJ1bmsKKzEyMTYzIDRlZWUwNjFkYWM0NGNiY2I0NWY1MzNhNTExYjliOGY2NGJjODdmODggbGVnYWN5LXRydW5rCisxMjE2NCBlMTFkNzUwMDVhNWE5NjYyY2YyZTQ3N2IzNTUxMzc5MGFlNTk3YzAyIGxlZ2FjeS10cnVuaworMTIxNjUgOWRhMDFlNThhMGI1NWJhOThmMzY0YjIxODFmMjhiZGIzZjRjZTAwZSBsZWdhY3ktdHJ1bmsKKzEyMTY2IDkxNGY4M2U3ZmEwYTAyODk5YTM3ZjI0ODYwYjYyYWIxN2FkMTE4ZDAgbGVnYWN5LXRydW5rCisxMjE2NyA0MDg1OGFiMjM1NjgyMTM5ZGE0NzljMWUzNzU0NzI4MWY4ZGE0NGE3IGxlZ2FjeS10cnVuaworMTIxNjggMjcyZWNjYzU3M2UyNDA2YWZlYjllZWZjYmJkYmU2YTAwZDEyZmU1YyBsZWdhY3ktdHJ1bmsKKzEyMTY5IDIxNGYzMDQ0ZDE4YzEwY2Y3MWU5YzAwZTNjZjFiNmYzMWYxZWRhZjcgbGVnYWN5LXRydW5rCisxMjE3MCAxZDQwYmMyNTcwM2E1N2M5ZDRhZWJjN2U4MWUwZTliZjk4MjRjODE3IGxlZ2FjeS10cnVuaworMTIxNzEgYjQ4NDNhMDdkNTc5MWMxMzAzNmIyZWYwYzJmMDI5MmJkYjY2MGZjYSBsZWdhY3ktdHJ1bmsKKzEyMTcyIDk5MTZmYzg1YjI4YTU5ZmIyNGY3OGE4Mjk4NDJkYmMwZTVhNTQ3NDYgbGVnYWN5LXRydW5rCisxMjE3MyA1Mzc2NmZlZDlmOGNiOGFlYTAyMjQzN2EzMzc5MTUxNDczZGYwZjliIGxlZ2FjeS10cnVuaworMTIxNzQgYjc4MDQ5ZmVmY2ViMjk3YzY2NzIwYjE5NmYzYjc4M2E2ZTcwMDNhZCBsZWdhY3ktdHJ1bmsKKzEyMTc1IDVkNGYxMzQ3MTUwZWRlYTQ2NTJmYTczZDUwMjFmMGQwMDY3YTMzYTIgbGVnYWN5LXRydW5rCisxMjE3NiAwMGZlZDc2OTgwYmM3ZjcyN2VjYTI0Yjk3ZDM4MmU2NWIwODg5MjllIGxlZ2FjeS10cnVuaworMTIxNzcgZjM5YTE5YTEyMjlhZjZlMWU1ZTY2ZjUxZTMzMGM5NWNmZTY5ZDZjOSBsZWdhY3ktdHJ1bmsKKzEyMTc4IDg3N2QyM2JkNWJkYzJkMzA0ZmEyMWMzNDVjOTliZGNlMWZiZjMxMWUgbGVnYWN5LXRydW5rCisxMjE3OSA4YjYxZTEyNzNiNGJkYTM0YTdmYjg4YjJhNzkyNzFiYjhiODUzNTllIGxlZ2FjeS10cnVuaworMTIxODAgNjE1NGQyZTY4NjAzMjg2NjliNGY2NDc2NTBjNjFhMTM1MjM4YTlkYyBsZWdhY3ktdHJ1bmsKKzEyMTgxIDUzNDVmZDEzZGUzZDlkN2E0ZmY1OTk2Njc4NjBhODk1MGY2ZDQ5ZDIgbGVnYWN5LXRydW5rCisxMjE4MiA1YTZiZDQzZTJkNWE3NTU0NDBhOGNjZjA3ODY3NDY4ZDkzZjExYjA2IGxlZ2FjeS10cnVuaworMTIxODMgMTA5NTVjMzljMGU3YjZiZTY4ZDY0Y2U4YjFlZjkxMTQ2NTQ3MGRlYSBsZWdhY3ktdHJ1bmsKKzEyMTg0IDkzY2IxYWEyNGY3ZDEwNjk3MzhiZmY5M2VlODU4ZDZjYjQzODJkNDIgbGVnYWN5LXRydW5rCisxMjE4NSBiMGI4MTVlZWVkMmM0OTFhOGU1OGVhMDliZGZjMmIyMTEyZTM5NjdkIGxlZ2FjeS10cnVuaworMTIxODYgYjg4M2VmM2IyZDE5NmIyZDljOGUwYjc4NzA0Yzk1MTMyMDlkMjMxYyBsZWdhY3ktdHJ1bmsKKzEyMTg3IGVjZDExNTQyZWFiZTUxOTM5MDM5ZDc4YzI0YjIwMzdhMWEwMzI3MTkgbGVnYWN5LXRydW5rCisxMjE4OCAwYTA0MzRlZmViY2ZlYmNhOTBmMDU2MDU2MmJiODY0NzU4MzY5OTI1IGxlZ2FjeS10cnVuaworMTIxODkgMzE0ODk3OTljOGM2MGEzMDkyNTU1OGJhNDlhMTZjNjc4MzIzN2VhZSBsZWdhY3ktdHJ1bmsKKzEyMTkwIDhkM2MyYTgwODM0Y2MxMGJmMTIxODdmNTAxYzVkZjNhYmIxMWVkNzggbGVnYWN5LXRydW5rCisxMjE5MSA1Mzg5YzZlMzBlNTRiMTMwNzUwZjBmODFmNjkzMzAzOTRjM2I1YWMxIGxlZ2FjeS10cnVuaworMTIxOTIgMjYzNjU1YzZiNjU2NzE4MGQ3YjhlM2FhMTg0Y2UwZGNmMTYwOTc5MSBsZWdhY3ktdHJ1bmsKKzEyMTkzIDYzNzMyNTI5ZjZkZjdlOTc1ZjcxNDdkOGFmYjVkNGJhNzFiYjFmNDAgbGVnYWN5LXRydW5rCisxMjE5NCA3YTRlZWVkNTRiMjQ1MTRlMGIxMTA2ZWVkNjBmZDFmZTU3YjUxYTBiIGxlZ2FjeS10cnVuaworMTIxOTUgMjJmM2E4ZDgwM2E1MTdlYzJkOTYxZTUxMjMxODk3Y2M1ODhmNzYyOSBsZWdhY3ktdHJ1bmsKKzEyMTk2IDkzYzY2YWM2YWYxODk2ZDI2YWQ0YTljNmRkOTAyMmMwMmRhMDg3ZmIgbGVnYWN5LXRydW5rCisxMjE5NyBmN2U4NjY4NGNkNGMyZDM2NDJmYTRiNzllNDA3MTE2N2FjZGExYjM5IGxlZ2FjeS10cnVuaworMTIxOTggOTczYzIxZGYyZDYwMWI5ZGYxN2YxOWIxMjIwZjVmZDFmNTkwMTkxMiBsZWdhY3ktdHJ1bmsKKzEyMTk5IDk3MDFjNTBjNjk0NjA3MzhhNDc4MzA2YTBjODZhYzFiZDU3MmVjNzQgbGVnYWN5LXRydW5rCisxMjIwMCA1NTU5MDI1MWNmNTI3M2I2NWIxM2NiZGU1OWNmZDY2ZjdhOTkwNjQxIGxlZ2FjeS10cnVuaworMTIyMDEgNmJhN2JkNTYzZTNiZjdmYTZhZWZiYzdhZmNmZjY5YTYzN2ExMDVlNSBsZWdhY3ktdHJ1bmsKKzEyMjAyIGI1ZDFhMTYyNWNkNWRiNGZmZGMwZDJmYWNhY2Y4Mjg2MzEwYzczNzUgbGVnYWN5LXRydW5rCisxMjIwMyA0Mzk0MjFjZGE4OWVhNzZkNjczYzAwY2ZmYmNjZjRmNDkzZThjMDM0IGxlZ2FjeS10cnVuaworMTIyMDQgYzIyZGMzMDFiMzZhODFlMmFkZGE3MzQ0YTU0Y2EwNGNkNWEyYzhmYyBsZWdhY3ktdHJ1bmsKKzEyMjA1IDEyNzc5NDYwNTRlOGM2ZTE2MmFlY2YxZWEzMTQ2NGRhZGVmY2I0ZWUgbGVnYWN5LXRydW5rCisxMjIwNiBlMGE0ZmIwYWJiNzY5ZGRlMTgyNTIzYTMxMWRjMzk2YWRmYzcxMWNjIGxlZ2FjeS10cnVuaworMTIyMDcgZjNmNjAyM2ZlYjc4OGQ5MWE4MTk1NzYxNDk1OGQxM2M2N2QxYzc3MyBsZWdhY3ktdHJ1bmsKKzEyMjA4IGQ3ZGQ3MWQwZDE4MzFhNjhmMTNhYjJhYzljZDAxNzBiYmZmOGY4OTMgbGVnYWN5LXRydW5rCisxMjIwOSBlNzhiZGNjZDIyNGZmYzkxZWRlODVmODdmOGRmY2I0NDk0ZDczNzgwIGxlZ2FjeS10cnVuaworMTIyMTAgMmJjZGUzNDc0NmQxY2YwYmQ0MWM0OTY2ZjcxYjEzM2M5YjQwMTRhYiBsZWdhY3ktdHJ1bmsKKzEyMjExIGEzYzljZTI5ODVkZWU5NTFjOGIyMGViODg0ZTY5NmNhYmNlNWY0MzIgbGVnYWN5LXRydW5rCisxMjIxMSBmMDhjN2EyYTU2ZjgwNzQxZjVmMTkyZmQwZWJlMGIwOTY3YTIwM2NmIGxlZ2FjeS10cnVuaworMTIyMTMgY2Y2NTRlZDU4ZmYxNmEwOGRhZGFiOGI0ODY2NzZmOGFiMjdiM2Y4MyBsZWdhY3ktdHJ1bmsKKzEyMjE0IGQxZGI3ZjZhYjc1M2M5ZjM0NTI5ZDg0OTdkNjBlNDAyMzhkZjY0NmQgbGVnYWN5LXRydW5rCisxMjIxNSA4YjI1YmEyNDk0NDY1MmE2MGJmMjI3MjdmMGJiZmM1ZWEzYjg2MjhmIGxlZ2FjeS10cnVuaworMTIyMTYgMmE4OTU0M2RkM2NhYjBlODRjOGRmNmQ4ZTYwNzFkYzAxZTgxNWU3NCBsZWdhY3ktdHJ1bmsKKzEyMjE3IDQ4MmU2M2Q3OWM5ZGZlZTRhOWVkMzkxMzM5NGVkN2ExNjg1NTI1Y2MgbGVnYWN5LXRydW5rCisxMjIxOCAzNTE5ZGU0NDBmODkyYzJjN2UxNTk2NWEzY2Q1ZTc3OWEyOTVmNTNhIGxlZ2FjeS10cnVuaworMTIyMTkgMjRjYTY0MTM0NTk0YWQ3ZjMzNmNlZjFjNzFmNGVhMWE4ZmFkYjA2ZSBsZWdhY3ktdHJ1bmsKKzEyMjIwIDcyYjc2MWI5NDhlN2U5YWI3OTFjYzAzZTg5YzJlZTc3OGRlZjFjODIgbGVnYWN5LXRydW5rCisxMjIyMSAzOTU1Zjc4N2U5YTExYzE0YmM0NGFlNmU1MzQyOWEwZTk4YzM1NTBiIGxlZ2FjeS10cnVuaworMTIyMjIgMDRlNDRjNjA3NmU4ZjJmMmYzNTA5MjI5NDVmODZkZjE3Y2Y2OTZhZSBsZWdhY3ktdHJ1bmsKKzEyMjIzIDU2ZjM4YmYzYWY5ZjJkNjMzODI0MDliNmIxNjJlOWQ2MDFiNGMyMzIgbGVnYWN5LXRydW5rCisxMjIyNCA0YjFiOTQzMmIyNmJmZDhmNjc5ZWRiNzQxM2U4MmE5ZTNiYjMwN2Y2IGxlZ2FjeS10cnVuaworMTIyMjUgNDMzNmExOTA1MDViNjZlMjYzMmNkYTVhMWViNDdmMzM5ZGRlY2FkNCBsZWdhY3ktdHJ1bmsKKzEyMjI2IGVhYWI4ZmViN2ZjMDc2NGQ4OWNjMmM0NWYwMzFlMGM1YzhlZDRlNzcgbGVnYWN5LXRydW5rCisxMjIyNyAyY2NmMDQ1ZjVhMjExZjEwMTQwMTZjMjA4M2Q5YzYxNmFhN2JkYjkyIGxlZ2FjeS10cnVuaworMTIyMjggMjY0Njg5M2NiNDk5Mzc1YWFkMDBjZjllYTU2OGY3YjFhZjBhMGU5OSBsZWdhY3ktdHJ1bmsKKzEyMjI5IDZmMWNhOWRjOTVkYWIxNzUxZDQ1YjZlZDdkYzU2NjQ0ODA2NGE5MDcgbGVnYWN5LXRydW5rCisxMjIzMCA3MmY1MDYzNmRmZWExZTQ1ODNkY2NlMzdiNWRmZmQ2OTQ3YzU0ODE4IGxlZ2FjeS10cnVuaworMTIyMzEgMTBhYjJjNWZiZDhlZTdjMGQ3ZjlhZTAxOTVjOWY2MGU4YTZhNjdlZCBsZWdhY3ktdHJ1bmsKKzEyMjMyIDg1ZDViNWVjZWQ5ZWE5OTg2MzM5MGU1YTUzZjE4MmUzZDAxODYwYzkgbGVnYWN5LXRydW5rCisxMjIzMyA0N2QyZTRmNzExNDc4ZGQ1ZjBlMDc1N2ZjNDQ1YjdkNGZlYTVlMDZlIGxlZ2FjeS10cnVuaworMTIyMzQgMmU5OTMxZjQ0ZWY0Zjc4NjJjYjA4NjQzNWJlYzIyNmFiM2Q3ZDQwZiBsZWdhY3ktdHJ1bmsKKzEyMjM1IDQ3YmJkMGJhOGU4YTA1OWYwOWE2YTExNmIzZDFhYjNmMWJjYTdkYWEgbGVnYWN5LXRydW5rCisxMjIzNiAzNDE1ZDEzZjhiYzhjMDNkMDlhZDczNTc5ZDhiM2U4YzNiZTFjOTU4IGxlZ2FjeS10cnVuaworMTIyMzcgOWZjYzkwMmQ3NDBmYWFlYTk0ZjkyNTAzZDNjNzg5OWFlMDBlOTAxNCBsZWdhY3ktdHJ1bmsKKzEyMjM4IGU2YjY2MmE5YjcwOTYxMTg5Yjc0YzY3ZTQ5NjcyMzEzNzkxNWNmNjMgbGVnYWN5LXRydW5rCisxMjIzOSBlMDZlZjg3YjM0Y2M0YTg4NTg2NGVkNzYwNjBmYzE4YzNhNGFjNjlhIGxlZ2FjeS10cnVuaworMTIyNDAgMDVmYjRkOTY2YzczZmZhYjBkYWFiNjA4OTcxOTY5NzJiY2VhMDMzNiBsZWdhY3ktdHJ1bmsKKzEyMjQxIDI1MDdlMTVlY2E2YjkwYzZiZWYyYTJlZDk1YjFkOWVlMWM0NmU5N2EgbGVnYWN5LXRydW5rCisxMjI0MiAwOTk1YTdhNjM3ODJiYmQwYTRmZjA2NzU5MDEyYjhiYmYxZWM0NGYxIGxlZ2FjeS10cnVuaworMTIyNDMgODVhYjI4NjQ0MjAxNDE0MTEzNmI2NTAyNDMxNmM5MDM4ZDA4OGIzZSBsZWdhY3ktdHJ1bmsKKzEyMjQ0IDZmYzU4ZDc5ZGFjNWRjNWQxNmUyZTA4ZDhiNjMxMjE4ZjQ3ZTlkMTggbGVnYWN5LXRydW5rCisxMjI0NSA5MzQyYzYwZWFhYzA3NWFkMjM4MDM3ZGI4MzYxODM2OWU3NDhkODUyIGxlZ2FjeS10cnVuaworMTIyNDYgZDYzMjhkNzRiNTgwZWZkOTA0NTI3NmVkNjA2NGQzOGYxMDRjNDE1NyBsZWdhY3ktdHJ1bmsKKzEyMjQ3IGZjZTZjMTFjODBmYTFkZTlhYjQxZDJkNDllMTQ5ODEwYzJkNDA3MGUgbGVnYWN5LXRydW5rCisxMjI0OCA5NjdhYzVlODkwN2FjYTk0YzQ2MjA2ZDU1N2YxNjA0MzIwM2QzNjA0IGxlZ2FjeS10cnVuaworMTIyNDkgN2NlYjkyYmE4NmY3NjQ5ZWMxNTViZDIxNzhjODY5MTI3MWIxNjUzOSBsZWdhY3ktdHJ1bmsKKzEyMjUwIDA4YTkzNzM4NjBlODM2YjFmZTZjOWI0ZTM0Y2Q3MTIwYWVjMjIyZjkgbGVnYWN5LXRydW5rCisxMjI1MSBlNDVkZjZmNDU2MDRiOTUzMGNjNzQ2ZDJlY2M5MDk0MTM1ZDc3MmZiIGxlZ2FjeS10cnVuaworMTIyNTIgODhhZjhhNDI4NTdkMzFmMmI2YzIwYjA1M2Y5NjRkOGNlNGJkZTZhMSBsZWdhY3ktdHJ1bmsKKzEyMjUzIDc2NjNjZjk1YmQwZWE4NjI2ODAyNWRlYTZkNGU2NmVmZTZiNTYzOWUgbGVnYWN5LXRydW5rCisxMjI1NCAzMGYzNjMwYjc3Y2E5OTQ1Y2YzNDM1ZmQ5NTkyNGYzMzY1NDIxNTgyIGxlZ2FjeS10cnVuaworMTIyNTUgNTg2ZDFiMDg2MTRlMjYxN2RjMzBmOGZjNThhYWI1OTJmMTc4N2U1YiBsZWdhY3ktdHJ1bmsKKzEyMjU2IGM3MDhkNzBiMTM5ZTIxNWU2Y2ZiMGRlNmFhZWZiZGIyNTVlNDliODEgbGVnYWN5LXRydW5rCisxMjI1NyBjZDJlMDVkYWU0YzI5NWZhNGZhYzdiYTE1YzA1N2I2ZWU0ZTA0OTA2IGxlZ2FjeS10cnVuaworMTIyNTggOWU2ZjViYWMxNWFjMjRhM2ExNzBkYTU0ZWRiMDYzNTdjOTFjYTMyNSBsZWdhY3ktdHJ1bmsKKzEyMjU5IDNlN2M0MzQ1M2U1ZTk5OWM3MTExNWJmYzJkZDQxMWFjNTM4N2ZhMWMgbGVnYWN5LXRydW5rCisxMjI2MCBjZmI5MGRiMzk5NThiMjRhM2RkNjhhNGI1YTU5OTMzMDg2NTllNWY1IGxlZ2FjeS10cnVuaworMTIyNjEgZWQ1MjNlYTA3M2RiYTA0OWY4YWZjZmMxMDE0NDRhNmMxOWM3MzhiOSBsZWdhY3ktdHJ1bmsKKzEyMjYyIDE2YzlhNzE0ODgwZmMwMGYwOGI2MjU3ZmU3MTRkZGZkMWUwOTI3Y2MgbGVnYWN5LXRydW5rCisxMjI2MyBmNzU1MmRkMjM2YjBhZDYyN2JmZmIxODYxMzEzY2MyN2U1Y2RmYjNkIGxlZ2FjeS10cnVuaworMTIyNjQgNjMxZDk2ZDNjZjY2MGZlZjMwMGI3ZDEwOTE0YzJiMjdkMGFjNDU3YiBsZWdhY3ktdHJ1bmsKKzEyMjY1IDBkODg3MzM0MDg0NjIyNTZlYTY1MjI0MGVjNGZkMzI5ZTZhMWZkNTEgbGVnYWN5LXRydW5rCisxMjI2NiA2MWRkZTdlYmZhOTUxNjg4YTg0YjA1OTAwYTA1NjIzYmY5NmMzYmZkIGxlZ2FjeS10cnVuaworMTIyNjcgNGEwN2Q2OTg2NGY1NzUxMjIyMWYyNzVmYmIxYTYxZGMxNjllZDE1OSBsZWdhY3ktdHJ1bmsKKzEyMjY4IGUxNTA4ZjcyYzYxMGJhZDIxMDViZGZiODMzODlkNmEwYTZhYmM5YzggbGVnYWN5LXRydW5rCisxMjI2OSA4NTQ3ZDI3N2EyMmY5NjBjNWRiYzk4YmI2NjI5Y2E0Y2YzMTkxYjRjIGxlZ2FjeS10cnVuaworMTIyNzAgZWFmOTNkNWJiNDZjZjY1Yjk5Y2U4NjQyZTZjNTI0M2YyYTkxMWIzNCBsZWdhY3ktdHJ1bmsKKzEyMjcxIDg4MTM2MjdhYWM0NjZhMDFmZDE5NmM1YTU5YTYzZDFhY2Y5Y2U0MGEgbGVnYWN5LXRydW5rCisxMjI3MiBlMjA4YjI3NGViODA4YzZiZDNlMTQyNWU1Mjg0ZjU3NjhmM2Q2MzYzIGxlZ2FjeS10cnVuaworMTIyNzMgNzcwYjQwZmVkNWY3YWIxMDZjNjUxYTdiYWUwYmE5MzljY2I5MzFmZSBsZWdhY3ktdHJ1bmsKKzEyMjc0IGIxMTZhZmI4MTczMjhlYzJmZGQwZDA4MzhhZGJlNjRmYzNlMDgxNTEgbGVnYWN5LXRydW5rCisxMjI3NSA3NzBkODk0ZTIwYmQ4ZDIzYzllNzNmNWYwNGVmZDNlNDlkNTdmY2Y3IGxlZ2FjeS10cnVuaworMTIyNzYgOGIwODYzNDlhNDg4Y2IxYTFiZWFkNjRmZjdjOTBlNGIwMzI4ZDM5NyBsZWdhY3ktdHJ1bmsKKzEyMjc3IGRhOTQ0Njc4YjAwZTBiOGYzMzFiYzljY2MzNTExMmNhMzU0OTJlNjEgbGVnYWN5LXRydW5rCisxMjI3OCBjNDY5MjA0NmI0ODIwMWJmZjhjZWMzMjMyOWFjYTMzMmQ4ZGJkYjAzIGxlZ2FjeS10cnVuaworMTIyNzkgNGIxOGY4ZWFhMTZiMmJmOGJiMzg0NzcwMTE0YWY0MWNjZjBjYzIzYSBsZWdhY3ktdHJ1bmsKKzEyMjgwIGM5MWNlNDliNDA3NTA4OWFkMWRjN2RlMmJlMWRjMjgzZWM5YjNlOWYgbGVnYWN5LXRydW5rCisxMjI4MSA2NjgwZmFjYjRkNWI1ZTI3YjlkZTk5OTZiYzdkOGRhOWNiOWE1MzIwIGxlZ2FjeS10cnVuaworMTIyODIgYmUyNGI1YjkwZGVjZDYzZGE1YzA1YWI4YzUzZGJkZWMzZTRmOGViZiBsZWdhY3ktdHJ1bmsKKzEyMjgzIDhkYmEwODIyM2RlYmExNjRmMDRhOThmZjVmYmE4NWUwOGI0YjEyNWUgbGVnYWN5LXRydW5rCisxMjI4NCBmYWNiNDU3YjRkMzJlZDZlMjI0Zjc3NzgzNmE0MzUxMDgxNzM2NDE5IGxlZ2FjeS10cnVuaworMTIyODUgNDBmNzIzYWMyNmU4MjgwNzM3NDczM2I0Y2IzMTI1ZjkyMGQyYjhjNyBsZWdhY3ktdHJ1bmsKKzEyMjg2IDFiZWFmOTE3OTEyNWIyNGFmOTliMTI0M2E5MjdlY2EwZjc4MzdjZjcgbGVnYWN5LXRydW5rCisxMjI4NyBlY2I5MTJiZTQzMThhNjNjNTIzZTQwOWY3OWM5ZWJiZmQyMTk1MzViIGxlZ2FjeS10cnVuaworMTIyODggMDhkZmJlZTBhMzJhMTM5N2ZiMWIxZWE2ZDVlZDMxMjk1YjRiMWMyNyBsZWdhY3ktdHJ1bmsKKzEyMjg5IDdjZGNkZjg2ODZiM2M5MWI3ZDAzZjllODYxMzc1ZDYwNTZmZTM0YzAgbGVnYWN5LXRydW5rCisxMjI5MCA5ZTYxMTY2ZWNkZDgxZDViMDgwOTcwNTcwMGNiMWJmZjM3Yzg2NTM1IGxlZ2FjeS10cnVuaworMTIyOTEgZmU3MDE5NjliYzJjZjZiNzkxNWQ1OWFjYTc1NGQyMjQ0YTQ5NDZiYSBsZWdhY3ktdHJ1bmsKKzEyMjkyIDczN2QwNWE5YmI1ZThhOWFmOTRjZDg1NjllY2QwMmI2OTcxYmUwNGQgbGVnYWN5LXRydW5rCisxMjI5MyAyMDllZWQ2YTJlZjY1OGVkMzhjYmUyYzIxYWY2YWYwZjUxYzYyODBlIGxlZ2FjeS10cnVuaworMTIyOTQgODM2Zjk0MDhjOTU2NWFhNTljODAxOGQ1MjlkZjVjYzI4OTNkM2NiNSBsZWdhY3ktdHJ1bmsKKzEyMjk1IDdlZjVhMTUyMGFlNTNkMDExNWVmYzdjOGNkYTI0MmMyMWZkNjYyYjEgbGVnYWN5LXRydW5rCisxMjI5NiBkYjI5ODJmYjYzYzA0ZDVkOTQzMzkzZjRlYmRiZjg3NmYyYmI0ZTZiIGxlZ2FjeS10cnVuaworMTIyOTcgOWNmYzUzZTU5OTZlMGFhMGM4YzVhNDY5ZmI4OWYxYTBjNjA1OTM2ZSBsZWdhY3ktdHJ1bmsKKzEyMjk4IDlkMDJhZmEwMjJjNTJmZDc0ZTk0NGE1NzNhNzQ5YjJmZmVlYmJiN2EgbGVnYWN5LXRydW5rCisxMjI5OSBjMWVhYjFkYzc1MzYzYTM0MTE5MWJkNTY0ODQxMDA2MmY0Nzk2MzlkIGxlZ2FjeS10cnVuaworMTIzMDAgOTI4YzkzZDJjMTA3MWRiOWQwYzZkZGViYjMwNzVkNWUxMWVkYzYyOCBsZWdhY3ktdHJ1bmsKKzEyMzAxIDU2NjhmOGEzYTQzMDRmYmMxMGE0OGUzZDExMjY4MTgyMWM1ZmNlNGQgbGVnYWN5LXRydW5rCisxMjMwMiA4MWIzZTZjYTRhMjlhZmJiMTM4YjYyNGM3MTlhM2YxODM5YmRjMThhIGxlZ2FjeS10cnVuaworMTIzMDMgMTAyNzAxMTVjZDRiODA1Y2ZmMzdlMTM2NTIzNTljNWJhMDk2MDk3OCBsZWdhY3ktdHJ1bmsKKzEyMzA0IDhkNmY4NGM1OTQ4YzI4NTFhMDAwZGY1MzBmNjczZDc1YWUxZGE5ZTkgbGVnYWN5LXRydW5rCisxMjMwNSBhOWFhYzAwMmU4NDM1YmEyYjY2YTlhZGQ2YmIwMzdiMmY4MGFlY2JlIGxlZ2FjeS10cnVuaworMTIzMDYgNDE1Yjk4NDExNzA3ZjEyMjJmZjJhYzMyNjAyYzQ5ODgwNTI3YWJlOSBsZWdhY3ktdHJ1bmsKKzEyMzA3IDBiZmFmZjExYzU3Mzk5NzZiZmFhNDcxMjk1MjAyYzUzNjQ4M2IzZTEgbGVnYWN5LXRydW5rCisxMjMwOCA5M2Q3MDMwOGJlMTcxYmI1OGE0OGE5ZDlmZDNmYWNmNTMzYzAwMzVmIGxlZ2FjeS10cnVuaworMTIzMDkgZjk4MWM5ZDM2YzhhZjg1NjUzNTY1NDlmZTBhZmIzY2Q3NTkyNmIwOCBsZWdhY3ktdHJ1bmsKKzEyMzEwIDFlYWViYWVhYTIyYjlhMmExNjA5NGI3ZmI1Yjg0ZDUwZWFkMTA1ZDEgbGVnYWN5LXRydW5rCisxMjMxMSAzMGVlODYxNzIxNjhhMzFjMTNiNDRkM2RjODg5M2ZlOTQ0NDQ4ZGI2IGxlZ2FjeS10cnVuaworMTIzMTIgODcwMTA5YTQ0ZTBlYmUxOGEwYmI2YjdlYTZmNTAwOGRmMjc2NWMwYyBsZWdhY3ktdHJ1bmsKKzEyMzEzIDRkMDQ0MDA1NjExZTQwZmVjMzY4YTM5Y2EzOWIwMDQxM2RlYTk1ZDIgbGVnYWN5LXRydW5rCisxMjMxNCA0MDEwZTVkMjQzZDY2YjhiMjFlYWI1MTQ3MzAzM2FjZGI3NmY3YWIyIGxlZ2FjeS10cnVuaworMTIzMTUgMTQyMGY4NDAwOTI0OWI4NmQxMTM2OGRlNGU0Y2JiZDI1M2Q4NzhjZSBsZWdhY3ktdHJ1bmsKKzEyMzE2IDY2MzczNzI3ZmFjODViMjgwYmU1YmVkNWRjZWVlOTMzMjY5YjliY2EgbGVnYWN5LXRydW5rCisxMjMxNyBhM2IyNTI1YzkzNzA0MDQyOTkxMzk2ODFiZDUzZmVkMDU3MzhjNTYwIGxlZ2FjeS10cnVuaworMTIzMTggYmQxY2U0MTIwZTZmOTU0NmRlZGY4NWNhOTdlOGVjZjFhNWFjMjM4OCBsZWdhY3ktdHJ1bmsKKzEyMzE5IDQ1N2NiODY4YzI1ZTQ1YTQxYjdhZDJmM2VjNDMzZjAwODU0ZDQwZTYgbGVnYWN5LXRydW5rCisxMjMyMSAyOGQzYTlmY2I1NzdkZmM4NTYyZjE4NDliNGRkYzRlNGI2MTg5Y2E1IGxlZ2FjeS10cnVuaworMTIzMjIgMTdlNGQ4MTk0OWI5ZjFlYzAzOTRjNjEwNmE3ZjkyNzQ5ZWIxYzQyMiBsZWdhY3ktdHJ1bmsKKzEyMzIzIGJhNjNjNmY2MDI1YjRmMjM1YjEwYTAyMWE3NDg2YmY5MmRmOWFlZGEgbGVnYWN5LXRydW5rCisxMjMyNCA0ZTk1MDY1YTcyYTFhNmYyZDczYzk4ZTk2MGYwNDJmNTJlODM2MDg1IGxlZ2FjeS10cnVuaworMTIzMjUgNWJkZjkxNjUxMzc3MjZlYjc3YmViNmU0M2IzOTE5ZDJkMDkxZDgyYiBsZWdhY3ktdHJ1bmsKKzEyMzI2IGNlMGMxN2NjNzdjZTUwZmU4MzcxNmJlN2MxZTU4NGIyNmI0OGI4YWQgbGVnYWN5LXRydW5rCisxMjMyNyBlZjk3YjRmNmQxODc1ZmM2ZWI1MDBjMzUxMzhjNTIxM2Y5ZjIxMjg0IGxlZ2FjeS10cnVuaworMTIzMjggODAxNTBmOWM4YzQxZmNlOWRhMmZjMTNiM2YwNzE5OTA5MGZmM2JmNyBsZWdhY3ktdHJ1bmsKKzEyMzI5IDEzOTliZWY3YWY2MTM1NWQ2ZWViZWUzNmE2MTQ4NzQwY2NiM2Q5MzAgbGVnYWN5LXRydW5rCisxMjMzMCBhYjU1Njk4YmZmMWNhOWE4YTBiMTE4MGJhNjM5OTJkOGM5YTkyY2RiIGxlZ2FjeS10cnVuaworMTIzMzEgMWRhYmM3M2I3YjBiY2M4MmJkY2RjNmE5N2ExMTU2MWE2MDJhNTM2NCBsZWdhY3ktdHJ1bmsKKzEyMzMyIDYxY2FmYTk3ZWI3N2FmMDY2OWI3MmI3ZjdlZmYyZWEyZTkwZGEzZGUgbGVnYWN5LXRydW5rCisxMjMzMyBlNWNiMTU3ZmYwOTMxZmYwNWUzNmJmM2U5YmM0ZWJjNGFmM2MzOTI1IGxlZ2FjeS10cnVuaworMTIzMzQgODI0MzlkOTk4N2IyY2Y2N2E5MDFjNzFmZWJjN2JlNWZmNmE0N2YxOSBsZWdhY3ktdHJ1bmsKKzEyMzM1IGRkM2M3ZmMwYTM0ZDRiOWNmZjQ4ZmNjNTllNjQxZDBhMThiYmYxYTAgbGVnYWN5LXRydW5rCisxMjMzNiBiMDgyMWIwYmNjZjBmZDVlNDRkMzZlZjI4MGUxYzBiMDg5NTY1Mjg1IGxlZ2FjeS10cnVuaworMTIzMzcgZjc0ZGU3N2YwNTEwZWYzYWE5ZTM2MWQwYjk3NWI5ZDYxODJiYmE2MCBsZWdhY3ktdHJ1bmsKKzEyMzM4IDEzZDBmNjI4YzU3MjI5MGYyYzRkODgxMTQyMDU0NmFhNjg3YWExNmUgbGVnYWN5LXRydW5rCisxMjMzOSBiOGZlZGIyMjZmMDljMTA4NGJhYjZlYmFmY2MwMjM2MDJkZjg0ZTViIGxlZ2FjeS10cnVuaworMTIzNDAgYWFiMGYzNDYzYWYwNmJjMDVjN2I2MTVjZjE1NjAzYTM2YTczYjUwMiBsZWdhY3ktdHJ1bmsKKzEyMzQxIGRkZjNkNTUyMjBiOTBkODIxNTVjYjUyNDlhZDcwMzJjYmVjNDYxOTQgbGVnYWN5LXRydW5rCisxMjM0MiA4NmNiNzdmYjE5ZTg4YWRmOGQzMDZkNzBlOTJhOWViMmI3ZWU0YTk2IGxlZ2FjeS10cnVuaworMTIzNDMgZjM0YmI0N2FhZmFjYWNhZDQzMTdiNjQ4YWI5MzFkMzdhZjc2Nzc4YSBsZWdhY3ktdHJ1bmsKKzEyMzQ0IDQ5NjcwMDM3NGZjNDM4Y2IzNDcwZjk0MGY3Mzg3NjI0OTljYTE2ZTEgbGVnYWN5LXRydW5rCisxMjM0NSA5YTI5M2U3N2M1NTQ2Y2Q3YTE5ZjFkYjBkMjUxYWZmMzY1YmE5OThiIGxlZ2FjeS10cnVuaworMTIzNDYgZDY0Y2UyOTgwMWNiMTcwOWFkMDZiYThmZmQzZTBlNWMzZmM0M2NkYyBsZWdhY3ktdHJ1bmsKKzEyMzQ3IDViYWM1NmZmY2NhOGY4MDE0YjE1YzkzMzI0M2JlNWRlNTU1YWEyYzcgbGVnYWN5LXRydW5rCisxMjM0OCBlMTljZDhlYzIwYTJlOGZlNzNjNmE2MDUwMjg0NGZjZjgyYjgzZTZiIGxlZ2FjeS10cnVuaworMTIzNDkgNWU5ZWY5ZDg1NzViYmNiNTc1NDljN2ZjYTA1MzI0ZTdkNzY1MGNlOCBsZWdhY3ktdHJ1bmsKKzEyMzUwIGVjODBhZDI1Y2E4NjEzMjhhZjUwNjgzOWU5ODU4ZjFiNjExYWQ0NTMgbGVnYWN5LXRydW5rCisxMjM1MSA2YzZlZTNiYjNmY2MyMmRjZGViMDQ3ODM2MTM2NjIyMTYzZjZiM2Y3IGxlZ2FjeS10cnVuaworMTIzNTIgMDE0NzdiMWE3NGY5YzFjNTY3NDE5OGRiOWRkZDU0ODgyOTNlODgwMSBsZWdhY3ktdHJ1bmsKKzEyMzUzIGI1MzBiYzYyZTNiOTkxYjgxM2Q0MGZjYjdkZmEzMTE5YjIwOWQ0YzMgbGVnYWN5LXRydW5rCisxMjM1NCBlNmNkNjgzYTIyZjgxODk4MTdiMDc0MDE5ZTM2M2MzZmExNGQ3Y2Q0IGxlZ2FjeS10cnVuaworMTIzNTUgMzBjMWM0MGNkODBmZDM2OWZjNTNmZjgzMGI3NDJjMjI2MzdlOGRiNSBsZWdhY3ktdHJ1bmsKKzEyMzU2IDFlOGZmOGE4NzkyZWY3Yzk4Y2MyNzE3YjQ2ZjNmOTlmNWViYTgzY2MgbGVnYWN5LXRydW5rCisxMjM1NyBjZGI3NzJhYWJiYTI1ZDUwM2JmZTk4NTc0MDQ3YTg1YzhhYTBjYmE5IGxlZ2FjeS10cnVuaworMTIzNTkgNjA1ZWFmOGNjNmQwZWNlZGEyMTc2ODI2Y2YwODQ0NGMzNzBmYzYyYyBsZWdhY3ktdHJ1bmsKKzEyMzYwIGExNTg1ZjY5MjU1ZGEwMGQwZTFlNDU5YjZkYWZhNzAxOGY0ODM1NTMgbGVnYWN5LXRydW5rCisxMjM2MSA1MWU4NjhlZjNiMzFlNWExOThkYmYyZjRiYzBmNWY5NTQyMjM5OGQyIGxlZ2FjeS10cnVuaworMTIzNjIgYjkzYzM5MGZkMjVkNWYxNGRmZWI3NTQ2MzlmOTgxMzNmZTc3ZjdmZSBsZWdhY3ktdHJ1bmsKKzEyMzYzIGE3ZDFjZjk1ZGFkYzU5ZTY0OTQ3OTE4YmEyOWE0NGNlYThlZmQ3YjUgbGVnYWN5LXRydW5rCisxMjM2NCA4YTY1MzZjMWEwYTQ2MjY4MDYxMjM1YTFmNDQwMzY3Y2FlYzdjYjlhIGxlZ2FjeS10cnVuaworMTIzNjUgNjBmNDI1ODY4NjZlYWYyNTM1ZjViMjRjMTAyOTBjODVhODUyYjU0ZSBsZWdhY3ktdHJ1bmsKKzEyMzY2IDBhYWVhNDg5MDJlNDNiMjc2MDczNDgyMTE4ZDU5MTlmODFhNDFhNzkgbGVnYWN5LXRydW5rCisxMjM2NyBmNzdiOTQxYTBmOTM2ZGUzYmQwMWZmNzM3MTMzMzY1YTdjN2RmY2QyIGxlZ2FjeS10cnVuaworMTIzNjkgYzk1ZmZmOGYxODBhOGQ3Y2M4NmUxY2ZkZWU5Y2UzZTA4OTMzZGI4MiBsZWdhY3ktdHJ1bmsKKzEyMzcwIGE1OGYzNjM1MmM0ZjNmZWRjYzMxNGM3MmYwYmIzYjcyMDlkNDYyYWEgbGVnYWN5LXRydW5rCisxMjM3MSAzM2M0YmE3NzdhM2E3ZDFjYTIyMjQzMzUyNTA4NDllMmVmNzAxNDA0IGxlZ2FjeS10cnVuaworMTIzNzIgZWUzNmUxZjEzMGNjYmI3OWY3ZWI5M2VmN2VhNTJlNDkzMzU2YTE2NCBsZWdhY3ktdHJ1bmsKKzEyMzczIGUzYTc5ZjkzZDFkM2U1OGQ5MTQyOWU5YjE4YWQ5MDdmOWVkZjdhNTQgbGVnYWN5LXRydW5rCisxMjM3NCBmMzUyZWVhNjgzNzM0OTM1YzZhN2Q0NjcxMjU1NmZiMTUyZDRmMGFjIGxlZ2FjeS10cnVuaworMTIzNzUgOWRhNDI0OTM1Zjc4NjczODY4NzE4ZWIyNjc0YzJmN2RkMWRhNDhmZiBsZWdhY3ktdHJ1bmsKKzEyMzc2IDJhYjE4OTU4NWQyMzg2NThjOTNkNjMzZDRkYzdkNmVlMmY3YzNiYjEgbGVnYWN5LXRydW5rCisxMjM3NyA3Nzg2Mjk3ODQ3YWNhMGE2MGMzYTg4YjYyYzdhNDIzYWI1YTFhMDNkIGxlZ2FjeS10cnVuaworMTIzNzggZjc4ZmQ5YjY3Mjg0YWRjNGNhZWY0ZTA1NDhkMzFmNzg3YTgwOTFhNSBsZWdhY3ktdHJ1bmsKKzEyMzc5IDFhYzM0ODVmOWUzZTM2NzZiMmZlOGNkODc2NTMxZmRlZDg4Mzk4ZmUgbGVnYWN5LXRydW5rCisxMjM4MCBlMTRmZWVlNGM0NTZiYzg2ZTNlMjliYTQ4ZjYxMTBkMDE4MGRjZGQxIGxlZ2FjeS10cnVuaworMTIzODEgYjBlZGM4OTJmYzc4MmU5MGIzN2M4OTM3NmI1M2YwZDNmMzAzYTQ3YiBsZWdhY3ktdHJ1bmsKKzEyMzgyIDY1OTM3ZmY3MThkZWZjNWRhZTI5Yzc2MmQ3YTIyOTZmY2NkMzkyODYgbGVnYWN5LXRydW5rCisxMjM4MyBkZTQxZThkODIxMWRkMzVkYjZiZmEyMzkxMDRjN2M5YWQ3NWRkODg3IGxlZ2FjeS10cnVuaworMTIzODQgMzU4OWMwZTU2ZWYyNTE2NjFkMzI1MDI3Y2U2MDg4ZTdhOGJhNmI4OSBsZWdhY3ktdHJ1bmsKKzEyMzg1IDcxOTVlYzI5NmIzZDk0NDAzNDJmYjhhNzg4ODE0ZGJlMTBiZTIxZDAgbGVnYWN5LXRydW5rCisxMjM4NiAxNGRjYmIzNGI5ZGQzYWUzMWYzNzQwYjUxNWRmY2VhM2RmZWMzYmM5IGxlZ2FjeS10cnVuaworMTIzODcgMDMwZWU1MGJkOGQxYjQ4NTgwODg2NDMyYzVhYTI1NThkMzcwZWNlMyBsZWdhY3ktdHJ1bmsKKzEyMzg4IGZhZTZkMjRiODk3YmNlNjRhYmQ5Njc5ODY2Y2ViNDQwYjMyM2Q2MjYgbGVnYWN5LXRydW5rCisxMjM4OSBhZTkwOGVmOTFjZjBjYzU2OThmMWE4YWExNzNkZTgzZTA2ZjNmNDA5IGxlZ2FjeS10cnVuaworMTIzOTAgZGRiODNiMjUyMjZlYjcwM2JmMDAwMGNjMmIzMjk0YzBlYWQ0YTAwMiBsZWdhY3ktdHJ1bmsKKzEyMzkxIDlmMTNkNzM4MGJmODk4MzMyMTk0YmVmMjIyZWE3YzQyOTNiYjMyYTEgbGVnYWN5LXRydW5rCisxMjM5MiAyOTFjMmQwYTk2ODNjNGM4ZTRiODk3YTE5M2ViN2NlZGQ3MjI1NzEwIGxlZ2FjeS10cnVuaworMTIzOTMgNWJkNmRjZjE2ZDQxYWJmYWIwMjk3YjFjZDEzZTA1YzgyYmFkZTNhNCBsZWdhY3ktdHJ1bmsKKzEyMzk0IGIzZmI4NDEwZjZhZTk5MjViOWI3MmYzYzA2YmVjZDNlMDBlMGNlNGMgbGVnYWN5LXRydW5rCisxMjM5NSA3ZTJlNTNlNzQ4Yzg1ODViYmVhOWFkZjM1NTdjMTM0Y2EyODRiODRlIGxlZ2FjeS10cnVuaworMTIzOTYgNGQ4NmI1YTViZjllMjRhODkyMTNiMzBjZmQ5M2M5MzIwNzIyOGYwOSBsZWdhY3ktdHJ1bmsKKzEyMzk3IGEyZDMzN2IyZTIxYmE0YmY0ZGU0MTM3NTYxMTk2MzhiYWVlNDdmMmUgbGVnYWN5LXRydW5rCisxMjM5OCBmODhkMTRhZGVkNzcwNDBhZmRlZWJjZWVmZDI5ZWRmY2Q1M2ViNTM0IGxlZ2FjeS10cnVuaworMTIzOTkgN2JkZWY0YmVkZDVjZTYyODgxMjE1YWFjYWM2MzAyYmE5MDA5NWI5ZiBsZWdhY3ktdHJ1bmsKKzEyNDAwIDkyYWUxMTU1NzNhZjI5YmVmMDQ2ZjY2OTEwY2VkZTU0ZjE4NTJiMjUgbGVnYWN5LXRydW5rCisxMjQwMSA1YWQxYTM1ZjU0MGM2NTkwYmUyMmU5MDA4YTkxMTA2NTExMzgxM2E5IGxlZ2FjeS10cnVuaworMTI0MDIgYmFjOTY1NTUyZjdlNmM0ZGY5NGUzNjIxNDgxZGRhMmI0OWQzYTZlNSBsZWdhY3ktdHJ1bmsKKzEyNDAzIDY5NTExM2M2NTBiYjU5NjJiYTI0N2VlM2IxZmEzNDAyMzc5M2IyNDYgbGVnYWN5LXRydW5rCisxMjQwNCA3YWE1MTUzMjAwNmE5ZTMzOGNkMTY5OWVkNmZiZGE5ODk1ZDViYTI1IGxlZ2FjeS10cnVuaworMTI0MDUgMWM0Njk3MDgwZDA3MTlhZDBlZDRkNGY4NDdkZjViNmJlNTI3Y2YxOCBsZWdhY3ktdHJ1bmsKKzEyNDA2IGQ5NWFmZTg3ZGI0ZGNhYjQyNDBjMjNkZTRjMjg3NmYzMzAxZWMzOTMgbGVnYWN5LXRydW5rCisxMjQwNyA2Y2YwMWVhYjA1YTMyYWFiYzA5ZWQyM2NmMTE5Zjk4MmIyZDU2YWY1IGxlZ2FjeS10cnVuaworMTI0MDggNzgwNTljZjA2N2RlZmJhMGVlZTBhNWJiZTEwOTJjNjIwNDZhYTQ1YiBsZWdhY3ktdHJ1bmsKKzEyNDA5IDExNDE0ZjAyM2FkMGExMzMzMTI0YjZjNTk1YmJiMWFhOWIzMjAzNzEgbGVnYWN5LXRydW5rCisxMjQxMCBhOGEwNzE5OTZhNzNkOTdmYjMwOGFhNDdiODFjMGQ5NDU5MjJjOWYzIGxlZ2FjeS10cnVuaworMTI0MTEgMzdjM2FmZmIwNWJhMjNlZjY4OTAwN2RkOWU2OTk5MGUwYjkwYzg5YSBsZWdhY3ktdHJ1bmsKKzEyNDEyIDE4YzA2ZDM5Y2UyYzJhODdjMTVjZDk1MjA5OTdkYzZlNDRmODJjMmMgbGVnYWN5LXRydW5rCisxMjQxMyAyMGQ5OGNhM2QzMmZhYmFjMGZjZjNiM2I0ZjhhNjc3YTEyNWZmMDI5IGxlZ2FjeS10cnVuaworMTI0MTQgOTAzNDRjMjYxZjI0NTBmNTdmYjBmMGFlMDJmYjAyMGUwZDhkYzI3MSBsZWdhY3ktdHJ1bmsKKzEyNDE1IGI3NGY1NWU3ZDIwOGY3MDc1NDBmNDIzNjViZmI1ZmRhOGYyMmNiM2IgbGVnYWN5LXRydW5rCisxMjQxNiA5ZTI1NTVlZGM5NGY0ODg3ZTAzNjVhYzBjMTI3MjU4MGFjZmI2MzE5IGxlZ2FjeS10cnVuaworMTI0MTcgMjQ4NjE2ZDNlZDEyY2RjOWUxYzViZmVjZjM4ZTJmNzJkOTZmODVjNCBsZWdhY3ktdHJ1bmsKKzEyNDE4IDlhN2U3OGU4YmRmYTI5MjIzNzE2NDUxMTlhOGIzMDI2ODg3MjlkODAgbGVnYWN5LXRydW5rCisxMjQxOSAyODY4NTQ3NzFiMTE5MTFmOGE4NTI3MTNiZDA4Mzg3YzEzNDdjMGM2IGxlZ2FjeS10cnVuaworMTI0MjAgMzdhYTg0ZDI3OGM1NTk5ODRmM2JmNjUyMTBiYTY5ZjJjYzk1ZjY4YyBsZWdhY3ktdHJ1bmsKKzEyNDIxIGE3ODEwMDM3MDUxNWNkMTNmYWJlNGMzNTZlNGYwZjg5YTE3ZmZkYzIgbGVnYWN5LXRydW5rCisxMjQyMiA2MzEyNDhjOWM2MmUxNjIxZmY5NWQ0MzYyODljYjQ2Yzg3ZGU1ZWQ5IGxlZ2FjeS10cnVuaworMTI0MjMgMWE3OTlkMWQ0YjVhNmUxOWMzOGVkMTVkZGZkMzg4MTNmZWU2MTI5MCBsZWdhY3ktdHJ1bmsKKzEyNDI0IDZjMTA3NzI4NDAwMWQ2MTFkOTA1NTQ2MDFkMjY2MzYzOGYyYTJjZDkgbGVnYWN5LXRydW5rCisxMjQyNSA3NmJkYWQyM2ZjZGI4YTc1ZWViMjZmZDIyY2E4NjdjNWUyOTQ1OTFiIGxlZ2FjeS10cnVuaworMTI0MjYgNWIxNzdkNTFiYTI3NTgxM2E5MTIzMmNmYmYyYmY4YTFiMjE5OWRiMCBsZWdhY3ktdHJ1bmsKKzEyNDI3IGE1OGQ4ZTQ0Y2UzMmZkNDY3NDA1MDVkYjdiYjI4YjRjOTlkMGFhMGUgbGVnYWN5LXRydW5rCisxMjQyOCAwNDU1NDAyNjc3YThhZGYxYzc4NDMxMTZmYTk3OWZkYTcxNDQ4NTAwIGxlZ2FjeS10cnVuaworMTI0MjkgMzVmNTY4NDgwNzY0YWZmYjM5NmRhNTA2NWE2OTlhYzlmMDIwNzI3MSBsZWdhY3ktdHJ1bmsKKzEyNDMwIDRiZGZlNWQ4MGE2ZjViOTIzYjVkYmZhZTg1NzI4OTdkMTk4YWRmNWIgbGVnYWN5LXRydW5rCisxMjQzMSA1ZjRkMzJiMWE2NTgzZmZiZjNjZGYxOTgyOWYzN2JkMDlmYmYyY2FhIGxlZ2FjeS10cnVuaworMTI0MzIgZjg2N2UxM2RhNTc0Y2U3YmRlYTA0MjRhYWRmNjRhNzIzOGQ4N2NjMSBsZWdhY3ktdHJ1bmsKKzEyNDMzIDAwZmMxOGFjNmFlYjhlN2YzMjQ3NjE0YWQ2YmVhYjIxY2E5ZGE4OTIgbGVnYWN5LXRydW5rCisxMjQzNCAxZGUzZGJiMjZjMmZhMmVhYWUyZjM3MWRmZTExOTcxMjZjY2NlYjU2IGxlZ2FjeS10cnVuaworMTI0MzUgMTg5ZjFlYzVjNjhmM2RkNjdlMmRhNDhiMjY4ZTM2ZjZmY2VhYTdiZSBsZWdhY3ktdHJ1bmsKKzEyNDM2IDE1ZTk3NjFlNTRkZTFkNTdhYzQ4NjU5NTUzOTI1ZGJhYmE5M2NkMzUgbGVnYWN5LXRydW5rCisxMjQzNyBhZDc0OWZiMGJkNGJkNDViYTk0ODk3MWEyNTRhMDM2N2E0YzVjZDIzIGxlZ2FjeS10cnVuaworMTI0MzggYTY0YTYxNWJiNzU2MzMwZjdiOWQ1YTNiZjBiMDQ1Zjc3MTg5OWUxMSBsZWdhY3ktdHJ1bmsKKzEyNDM5IGM1OTJjMTc3MWRmYjVlNjNmZTdlOWY0YTlkYTI1MGI1NzRiMTBkMDYgbGVnYWN5LXRydW5rCisxMjQ0MCAzMzc4NDNjNmExODM2OWQ1NzUwYmViNTA5MDYwYzRlMzcwMTM1OWQ4IGxlZ2FjeS10cnVuaworMTI0NDEgZmFmMzUxZTMxNTcxZDg4YWU3NjkwMDlmOWY3MGExYTlmNjVlM2Q3ZCBsZWdhY3ktdHJ1bmsKKzEyNDQyIDkzYjllYWZlMWYxZGU4MmExYTIwNzFmODg5MGRkNWE4MjI2OWY1YjUgbGVnYWN5LXRydW5rCisxMjQ0MyAwNmM3ZmZmNTI3NGE3YmZkM2M5YzY2Yzg5MTIwMTIzMzE2NjI4MjQxIGxlZ2FjeS10cnVuaworMTI0NDQgNjI2MzI3YTc4YThlZTM2YTlhNGViMzU4ZmQ0ODA2NDdlNTcwN2Y2OCBsZWdhY3ktdHJ1bmsKKzEyNDQ1IDRkYTFmYWYyOTdhYjhmYTM3NDY0NjFhZTU1NTMwNjI5NGVmYmU4YzUgbGVnYWN5LXRydW5rCisxMjQ0NiAzOTZhMzhlYTliODRmYWNlYjI2YWQ1MzdkNjA2NzZiNmQ3MWQxZjE5IGxlZ2FjeS10cnVuaworMTI0NDcgYzM5YzRiYzQ1ZDM5MWUyZGYxZGI4YTFjZjUxOWRkMzlkZmVjYzNlNSBsZWdhY3ktdHJ1bmsKKzEyNDQ4IGM4NzY2MmVmM2YxZGI1OGEyMzQzY2E0Mzk2NWM5ZDA4YWUwYmFlMTcgbGVnYWN5LXRydW5rCisxMjQ0OSA3Yzk5NmYzNDA0NzIwYTIzNzBjMjM4M2M1YWI0ZTdlM2YzNTgxM2VmIGxlZ2FjeS10cnVuaworMTI0NTAgNzUzOTg1OWU5ODVhMTRhNGFjN2E0NGIwY2M3MTdmZWUyN2NiNTlkOCBsZWdhY3ktdHJ1bmsKKzEyNDUxIDk4ZTM3MzQ3Mzc4YjAwNmNlNmZjYzQ5MjA4ZTIyNGFjYzhjM2MzMTEgbGVnYWN5LXRydW5rCisxMjQ1MiBhZTgzZjYxZDNjZDdlNzE5OWZkNTFhMzQ0YjVkYTE5OGVhZTFmMGUwIGxlZ2FjeS10cnVuaworMTI0NTMgNDA0NjNkNTE0ZjNlYTRiYTQ4YTJjMjY4NDU1MzAxZTFhMGVlZWJkNCBsZWdhY3ktdHJ1bmsKKzEyNDU0IGU1ZDBkZjgyNGJmMzgyNzQ4YzFlMGRiYzRmYzM2YTA1ODY2NWQxOWQgbGVnYWN5LXRydW5rCisxMjQ1NSBjYTI3NDUyNzExMTE2NDAxYzAyMTUyODBhZTRjZDljMDk3OTc3MTdiIGxlZ2FjeS10cnVuaworMTI0NTYgYzQwNGE2YjBjZGIxZTI3YTU3YTAwYzBlMzRlNmY1MWQxYzE1ZGEwNCBsZWdhY3ktdHJ1bmsKKzEyNDU3IDlhODQyYjgxZDljM2U5NGRlNzFhNDFmZGVkYTE1MWUwNWNhZmUzYmIgbGVnYWN5LXRydW5rCisxMjQ1OCA3MTZkYzFkMWRiZmY4OTAxYzI1OTEwMWE4OGFmMGJiOTJlYWFjYjRkIGxlZ2FjeS10cnVuaworMTI0NTkgNTdiY2M2ZWM2MzhmNmViOWNlZDkxMjIyOGI1OTE0MmViOTlmZjY1NiBsZWdhY3ktdHJ1bmsKKzEyNDYwIDI3NTBlMWRlNjgyOWFkMTc5YmUyNDdmMWNiMDlhYzE3ODNjZWIxNDEgbGVnYWN5LXRydW5rCisxMjQ2MSA1NzJlMTMxYWUzNjkwZmI1ZDIwNDc5MDQxYjhkY2U4NGM2ODgyODg5IGxlZ2FjeS10cnVuaworMTI0NjIgOTJhMjVkNTFmZjI2Y2UyNTE1ZDQwZTFmOGVkZWY5YmRmN2M5MmMxMCBsZWdhY3ktdHJ1bmsKKzEyNDYzIDg3OWUzNDkxYjY2MWI4ZTVhNWJlYmE4NjIzYTdlNTY5MTlkZTQyNmEgbGVnYWN5LXRydW5rCisxMjQ2NCA4OTQ5NjBmYTkwYmM3NTU5YjdhNWU3OTMyZWFmMzU4YWVmNGZlNDgzIGxlZ2FjeS10cnVuaworMTI0NjUgMGQyNzkxYzcyMDZkYWZiYWM5YWU4YWQ5YzU2ODdlYzFmYTM5ODdjZSBsZWdhY3ktdHJ1bmsKKzEyNDY2IGQ0NGNiODdlNTAwZGJiYzdhMTg5NWIxMzA4Y2EyZGJhNmNlZmNkYmIgbGVnYWN5LXRydW5rCisxMjQ2NyBjMTA5MWU4MmU1YWFiMDZkZDRkMjU0NzJhMTliNTU4NzI3ZmFmM2M0IGxlZ2FjeS10cnVuaworMTI0NjggMDdkMzMzNDg1YTVlMDhiMjRmNzA3NDlkMzIzYzVhY2FjYTQ1NDY3MSBsZWdhY3ktdHJ1bmsKKzEyNDY5IDQ0MTQ2YzA2ZTdlZDNjNzg3ZWIwMTFjZTQ3ODI3YWJjMDEyODg1ZWQgbGVnYWN5LXRydW5rCisxMjQ3MCA0ODU1MDJjNDJkODlhNWQ2OGU0ZmZhOTBiMGJjNTc4OGVhM2VmMmNjIGxlZ2FjeS10cnVuaworMTI0NzEgZWU4NGY0NDVlNmQ3YTFjZjhmOGU2OWM1ODhlZGFiOWUwMTY1Y2ZjMyBsZWdhY3ktdHJ1bmsKKzEyNDcyIDhlZmEzN2E3NzBjNjQ3YjY1ODVlNmZkYTMzNTkwMTU0YzJmN2NmZjMgbGVnYWN5LXRydW5rCisxMjQ3MyAwMzkwYWY2YWNmN2ZhOTg5NWNkYmZkODQ2NDFhYWI2Y2FmMDY4MGZhIGxlZ2FjeS10cnVuaworMTI0NzQgMTlmZGFmMzY3ZDQ1YjZkZDI0MWYxMWQ5ZWRhMTExY2U5NmE2N2NjMSBsZWdhY3ktdHJ1bmsKKzEyNDc1IDRlYzNiM2NiMDdjOGExZWEwMjUyZDcxNTU2ZTFiZmJlN2MyZWUzNjEgbGVnYWN5LXRydW5rCisxMjQ3NiA2MmZhMDNhMzMzYWFmZWRjZTcyYzhlZTllMzdiOWMwZjZhMjMzZTUxIGxlZ2FjeS10cnVuaworMTI0NzcgZjFhNTIwZDI2MzFhOGVjZGJkMmMyNDllYzMwN2YxZDE2Y2FlZjEwNiBsZWdhY3ktdHJ1bmsKKzEyNDc4IDRlMmVmZjk2OGNmNWM2NzFkMTJhNWNmZTQ1ZGM5Y2M4MTQzNmNjYWQgbGVnYWN5LXRydW5rCisxMjQ3OSBmOGZjOTFiMDE3YTE0MzE1YWZiZGU1Y2YxNDY0MzY5MzQwZmMwZTM4IGxlZ2FjeS10cnVuaworMTI0ODAgZjZiMmYyMGRhNTgxNjdkYzg2NjYxNmU2YjcyMzAyODEzZDEzYWU3OSBsZWdhY3ktdHJ1bmsKKzEyNDgxIDQ4OWVmN2Y2NDA0MTBiMmNlN2YzZTk4ZjhjOWVjNjUwMGFkMjkzZTggbGVnYWN5LXRydW5rCisxMjQ4MiBkY2JlNzJhMGIzOTI2Yjk0MmU2YWNhOGEyYTVjZDJhYTI3ZDI4ODg0IGxlZ2FjeS10cnVuaworMTI0ODMgNzU5MTIxZTNkOWI2ZDY3Mjk1ZDg4YzE3ZGFhMDljMWRlNzUyOGRlYiBsZWdhY3ktdHJ1bmsKKzEyNDg0IGFkZmFjYmNiZDkzNjFjOTI5ZTJkZmU0NDYzNTkyNjVjYmE5MTNkNzMgbGVnYWN5LXRydW5rCisxMjQ4NSBjODY2ZjE2NjMzMWJiNjY1NWY3Zjc0YTc2YjNiZmRkNDFhOTk4MWIzIGxlZ2FjeS10cnVuaworMTI0ODYgNGFmMzhhNDVkMjljOGM5MjBhODZiZGU5YmQ2MWYwMzFlMzVmOGQ2YyBsZWdhY3ktdHJ1bmsKKzEyNDg3IGE2Y2I4OGI1ODE2NTIzZjM5MzYxNTIxYjJmZmZjOWE0NmU5YThjZTggbGVnYWN5LXRydW5rCisxMjQ4OCBkNGI4ZGRkOWE0ZmQwZmQ3ZjIwNDIyYTY3ZWMzZDFjYjhlM2FkNDI3IGxlZ2FjeS10cnVuaworMTI0ODkgYjdiY2MyY2RhMWIzYjI2MTgyZjI4YWVkOTAwNWIxMTM3ODNmNzc2NCBsZWdhY3ktdHJ1bmsKKzEyNDkwIGNmYmNhYjgxNTBkYTkxNzQzMDQ3YmEyYWVhNmE3YTU3MTNiZTI1MmQgbGVnYWN5LXRydW5rCisxMjQ5MSA3OGZmMjAzZWFkMjQ1NGQ0ZjBmNjZkY2I0YzZmZWFkMjU3N2Q0NmM0IGxlZ2FjeS10cnVuaworMTI0OTIgMTI0ZWY2OTRjMjg0NDNlNDIwNmYxNDg4OWM0YWQyMWZmNjM5NWY3NyBsZWdhY3ktdHJ1bmsKKzEyNDkzIGRkYmJlZDhjYjgzMGVlNDlkYWM4N2M1MmVhOWY3MTZhMDlhZjEyNDMgbGVnYWN5LXRydW5rCisxMjQ5NCAwMDljOWJhOWY2NThiMjU5YzdkY2NkZTQwZDg2ZDZhYjEyODZkOTgyIGxlZ2FjeS10cnVuaworMTI0OTUgMTZiZDBmZGUwOWFlY2I3MjM2N2Y1NWNlN2U2OGQ1MjEwNjQyOGFlNyBsZWdhY3ktdHJ1bmsKKzEyNDk2IGE3OGQzMDU2YWI2MTA0YjM1MDJmMmQzNTlkNGNjMjM5NDRkNTBhY2MgbGVnYWN5LXRydW5rCisxMjQ5NyBiZGRlOGZiYWVhNThjN2RjZTJmNmViNmE1N2RmNzNhZGI1YWE3OGJiIGxlZ2FjeS10cnVuaworMTI0OTggZWVkMGNhY2Y0YzY0ZDhmZjFlY2EzN2YxNWYzNWVlN2YzYzI0NDJmMiBsZWdhY3ktdHJ1bmsKKzEyNDk5IDhjNmU3MDViNmI5NzFkNDIxMjZiYTMwMDYxODIwNjI4MTNmNWVmNzcgbGVnYWN5LXRydW5rCisxMjUwMCBhMWJjZjNmMjlmNjZkZjVkNDYzMzI4Njg0MWJjNTk0ZmE3NWM2YTI4IGxlZ2FjeS10cnVuaworMTI1MDEgYzBkYWZmZTQwMDM0Njg5ZmNkMjIyZjhlMmM3YTU0NDJhOTE3MjViZiBsZWdhY3ktdHJ1bmsKKzEyNTAyIDQ0MTUwMDAxOWQ1MGFjYzI1YzVmZWI0ZDE1MTZmZGVmNDc4MzBkZWQgbGVnYWN5LXRydW5rCisxMjUwMyAyYjIzOGQxOWFlODhhN2NiYjM3M2M2NTA1NzU0YzBmZDFhMjBlNzMxIGxlZ2FjeS10cnVuaworMTI1MDQgNGFiNWU5ZjgzOWQ5NzQ2ZDlmMmZmOTUzMDg1MWZjN2FlZTkxYjZkZiBsZWdhY3ktdHJ1bmsKKzEyNTA1IDBhNTZlNTA4MjY4MGI5ZjI1NDEwYzE2OWMzYmE3MDdhNWVmYTU2OTEgbGVnYWN5LXRydW5rCisxMjUwNiAzYTQyMDcxN2JjOGE0MmU5NTc1MDFmMDUwMDBiM2IxOTI5ZjdmZmEzIGxlZ2FjeS10cnVuaworMTI1MDcgNzdhOTQ1MzE1MjllYzIxMmE3NGU4YmE4NzQ1MmU2Nzk1ZjU1ZWI3YiBsZWdhY3ktdHJ1bmsKKzEyNTA4IGZlMGI1MjJlNDZjYjNjODYxMzM0OTNiNDJkMzY1ZGM5Mjg2MGU5MmMgbGVnYWN5LXRydW5rCisxMjUwOSBlZjVjZjFhNGU1MmE5YzQ4NTQwYzlmZDM5YzM5MmVkNzc1MzZkMGIyIGxlZ2FjeS10cnVuaworMTI1MTAgNTVmOGM3MDFjOWRhZDExYTU0MWM3MGIwMDM2MTA3MWQ0ZDk0YjVhYSBsZWdhY3ktdHJ1bmsKKzEyNTExIGFiNmRkNzBmMjUwNzZmNjg5MjRhODk5Y2QwZmY3NDhiOTIzOWMwYTEgbGVnYWN5LXRydW5rCisxMjUxMiA0NjcxYWUxMDM1YjM4OTU5OTA5ODM3YWJjNmQ4ZTM2OTQ1OWY0NzJkIGxlZ2FjeS10cnVuaworMTI1MTMgNDJiMjI4ZDc4YmVhZDEyZDMzZTdkMDMwYzRiMzY4NjM3OWU4YzIxMiBsZWdhY3ktdHJ1bmsKKzEyNTE0IDRhMjVkZDg1ZGY2MjJhNWM4NjBkYjk4NzNkNzg2NTQ2NzY1YzMwYWIgbGVnYWN5LXRydW5rCisxMjUxNSA5OGZhNTM1YjlhZjFlZjYwYWYxZmU4ZTc5YTBkYzg4Y2EzMDRmMGNlIGxlZ2FjeS10cnVuaworMTI1MTYgNjM3ZWI5NjFjMTFiZjUyNmI4YzM0MDJlZTc5NzM1YjkxYzUyZTEzOCBsZWdhY3ktdHJ1bmsKKzEyNTE3IDJhMGNmOTY3NzE5Mzk4MzM0Y2ZkZWUyZWU2Njc4MDNjNjRjNGI2NTYgbGVnYWN5LXRydW5rCisxMjUxOCBjNjkxM2M3MzI2ZjA5NmMwMjMwNDJmMTU1MDM1MDMzZDgwM2I2NjZkIGxlZ2FjeS10cnVuaworMTI1MTkgZjI0NTdkNjk3YTJhMjhlMTNlOTM5Yjk2NWVmZDIwNDc5OWU0NzU2ZiBsZWdhY3ktdHJ1bmsKKzEyNTIwIGQ3OTc5ZjRlZDJiNjE2MzU2NWVlYjI4NDc3MzRiZjI0NzNlZTJlNmQgbGVnYWN5LXRydW5rCisxMjUyMSA4MzI3NjY4Y2ZkMTcxNGQxMmRkZmQ4OTk2MTE1ZDkyMDgxMDUzYzM1IGxlZ2FjeS10cnVuaworMTI1MjIgOTQxMjVhMTM0M2Q4MThkZGRiYTAyODZkOGNmNzg3NjUwNmI0MTNmNCBsZWdhY3ktdHJ1bmsKKzEyNTIzIDIxODNmNTA2YTA4ZTFjOGJlNjZiNWVmNmMwOTkzZjZkNDIzMjE5ZTkgbGVnYWN5LXRydW5rCisxMjUyNCAyODE5NGY1MWY3ZmU1NGM0MWNmN2JkMDc3NTI5ZmM1MjAzZDVmMDIxIGxlZ2FjeS10cnVuaworMTI1MjUgODlkY2VhNjNjNDZiZWEwMmI1YzM1ODAyNDdkMzNmNGE5NWM1ZmFhZSBsZWdhY3ktdHJ1bmsKKzEyNTI2IGNhZjJjNjVhNmJjZjI1Zjk2NTBjMzUzMDFjZThlMDYwMjk0YmUxMzggbGVnYWN5LXRydW5rCisxMjUyNyBmNTcyYWUzNmQ1YmFjOWI0NTZhMzlkN2FkYTdlYmNkYjA1NmU2ODk3IGxlZ2FjeS10cnVuaworMTI1MjggNjIwNjg1ZTRjNDc3ZTIwN2E5ZTE4Nzk0N2Y1NjJlMzMxNDdjYmMwNyBsZWdhY3ktdHJ1bmsKKzEyNTI5IDA4MGJkNDZmMzg0ODc5OWNkZjUwMTBlOTdkODI0YjI0NmIyYzAxOWUgbGVnYWN5LXRydW5rCisxMjUzMCAxNjdhZGYzMTc4NmQ3MzQ2MmE3Y2M2ZmFlN2I0NmM2NWYwZTY3ODBlIGxlZ2FjeS10cnVuaworMTI1MzEgMDM0YjQyYmE2OGE2OTkzYThhMWYzYWU0ZjE1NzY3NWYwMGFkYjlhMyBsZWdhY3ktdHJ1bmsKKzEyNTMyIDc0ZDBkMmYzY2IxZGJhOGZjMWE4MTYwY2E3ODA1ZTI5YzZiMzkzYjkgbGVnYWN5LXRydW5rCisxMjUzMyBkZTU2OGVhMGQwNDBlYjYzMGRlZGM1OTJlNjU2ODdhNjg1YTUzMDZiIGxlZ2FjeS10cnVuaworMTI1MzQgMjBlOGEzMzQ0YTBmZjYwY2Q4YzRjNmQxMzU1ZmU5Y2E3OTc4NTYyYSBsZWdhY3ktdHJ1bmsKKzEyNTM1IDEwNTFlZjk5NDMxZTVmZWRjYWUxYzA0ZTc5ZTkxNWVhOTczMDM5ODMgbGVnYWN5LXRydW5rCisxMjUzNiBjOWIwNzAwNzRjODVkM2JjZjJiMzExMGQyZWM0NTliYjMxNzJjODA1IGxlZ2FjeS10cnVuaworMTI1MzcgYjcyYThjNDhmMmQwMDQzZjNmZjA1ODA1ODM3YmEyMDY1ODcwZWMzZiBsZWdhY3ktdHJ1bmsKKzEyNTM4IGY1ZGYyMmZkYWRhODg1OWI4MDFkNjBhZjVhZGU5OGUwMjE2NzVlZmMgbGVnYWN5LXRydW5rCisxMjUzOSBmMTMyZWNmZGIyODU1Nzc3ZjYwNDJjZDUxYTVhZDQ3YWQ3NTVmZTNmIGxlZ2FjeS10cnVuaworMTI1NDAgYmEwM2U2OGRmMGZkNGYwOTBkZDcwNmUxZDg2Mzg0NGIyOGFkNWRiMCBsZWdhY3ktdHJ1bmsKKzEyNTQxIDZkZmY3Njk2ZTM1ODExMmUyYTUwOGRlZjE1ZTUyYTM3YjRjYTVlNjIgbGVnYWN5LXRydW5rCisxMjU0MiAzYWQyYjJlMzFmNTMwOGVhM2ZiMjIzZDRiNWUzNjNlNmEzNDNiMTI2IGxlZ2FjeS10cnVuaworMTI1NDMgMzI2NTJmNjk5NmUzNzQzZTE4YzZkYjY0Zjg0YWJkOWI3ZDllYmIyZSBsZWdhY3ktdHJ1bmsKKzEyNTQ0IGYyYzA3MmIwNTQ2NjU0ZDYyMTRhMDNiNDg1NDhkNTA4YjAyNmZjNzIgbGVnYWN5LXRydW5rCisxMjU0NSAwZGM1MGQ0M2ZiODQ2MzRkZDk3OGVkM2I5ZTg3MTBlN2QyZjEwNTkyIGxlZ2FjeS10cnVuaworMTI1NDYgOGNmNjZiMWQ0MTU1ZWNkMWU5MGMzOTE5MWYzYmU5YjQ5NTRlYWNmMSBsZWdhY3ktdHJ1bmsKKzEyNTQ3IGVlOWE4ZmUwY2ZjYTVmMTEwZDc4Yjg5ZmY0ODM2ODY1MTBlZDNhNmUgbGVnYWN5LXRydW5rCisxMjU0OCBjMDczOWY2NDFiZDFkNTgxYTIyOTIyMjAyNWU0ZTliZWZjN2FmYjdiIGxlZ2FjeS10cnVuaworMTI1NDkgYTBiMDY4OTFkMjg2MDA2NmNlYzk3ZjQ0NmI4NTYzODVkMjE2NDgwYiBsZWdhY3ktdHJ1bmsKKzEyNTUwIDdiODhjMTJiODcwMWNkZTY2MzE1MzQ0ZDUyNjZmZTgwMGQxOTdlZTUgbGVnYWN5LXRydW5rCisxMjU1MSBkY2UxMDRlMWE3M2JiZGNjYWU2NGFhZWU4MTVjYjAxNTE2OTYxMWVlIGxlZ2FjeS10cnVuaworMTI1NTIgNjY4NThmZGY0NjdlYmExYzUyZDYwMzIzZjcxMmRhNDk4ZTg4Nzc1YiBsZWdhY3ktdHJ1bmsKKzEyNTUzIGYwNzIwM2NjMjc0MGE5MTk3MTI3ODk4ZjUwY2JjZDdmNTY2MmVjMDIgbGVnYWN5LXRydW5rCisxMjU1NCA3OTRhMjFhNWFkMzVlMTkxYWM5NmExMjFmZmI0NGQyMjk4NzU0YjQxIGxlZ2FjeS10cnVuaworMTI1NTUgZjMzZWQ5ZTJhNjA3ZmE0YzljZDU4MmE1OTYzMGY3YThkYmU1YTBhNSBsZWdhY3ktdHJ1bmsKKzEyNTU2IDI3Y2M3YTMxNDUwMjY2MGE3NzIzYTUwYjkxNzA5ODVjZTI5ZDhlMzYgbGVnYWN5LXRydW5rCisxMjU1NyA4MGUwYWFiMTcwNWViZDU0MjAyYWMxMzQwMzQ4OTg5ZDg0ZGY2MDI5IGxlZ2FjeS10cnVuaworMTI1NTggYjgyYTYxYTg4NGNmMjg3NjA3YTdlNzJjZTQ2Y2NkZGY4ZWMwZWJkMSBsZWdhY3ktdHJ1bmsKKzEyNTU5IDA3NWY4NzFkODBiNTVlZWFhNTQ5Mzk3ZGZkOWZlMThlMWIzZjg3MTggbGVnYWN5LXRydW5rCisxMjU2MCBlZTYyNTYwODEzNjZkMjgxNWM4YWUxYjM2MzM0OGExMzUzYzUyYjIyIGxlZ2FjeS10cnVuaworMTI1NjEgYzg4YWE5NTkzYTA4ZWQxMTAzMGQ2ZjYyN2UyOGU3OTk4NTBkYTAzMSBsZWdhY3ktdHJ1bmsKKzEyNTYyIDAxNWNiNjIzMWYzZjhlNjZlY2ExZGYwOTQ2ZmQ4YTY1YWY1ZmQ3NmUgbGVnYWN5LXRydW5rCisxMjU2MyBkZGRhNTg1NGUzZWFkNTIyMGQ2ZmEwYjhmNTY3OGQyYTA4MjM0ZmM0IGxlZ2FjeS10cnVuaworMTI1NjQgZDVlNjRhNjE2MzIwMDNjNmM2YTdkZjZjZTgyZmUzNzdjNjdmZDgyZCBsZWdhY3ktdHJ1bmsKKzEyNTY1IDhmZmU0NTA0MjhiMWIzMzkwMTA1YzBjYzk3OGJjMDhiYjlhZTQ5MzUgbGVnYWN5LXRydW5rCisxMjU2NiBkOWI3YTIwODA5NzFiYTMwOWViMGRlN2ZkYzU0OWVjM2RhNTU2YTJhIGxlZ2FjeS10cnVuaworMTI1NjcgNmFiZDg0YWFiMDhhOGU1MjkxYTAyYjI4YjAyMzk4YjE0ZWNmYWMxOSBsZWdhY3ktdHJ1bmsKKzEyNTY4IGQ3ZjQzNGQ3ODRiZjllNjg5MmNkZmU1YzZiY2U5YmFmZDM1M2MyYjAgbGVnYWN5LXRydW5rCisxMjU2OSA3MTAyMjg5MDQyZDVlOGU0NDkwYzRhMjY2MzVmY2U2Mzk4MmU4YTM1IGxlZ2FjeS10cnVuaworMTI1NzAgNmQ2ZjQyN2FiNmVjYjE4MzYzYmY2MmNkYTg0NWIxYWQwMTRhMjM2OSBsZWdhY3ktdHJ1bmsKKzEyNTcxIDVlMDE2NDVlZTQxYjhjMjBjZDZmMDAxMzU5YWRmNjJjNDZmNmY0M2IgbGVnYWN5LXRydW5rCisxMjU3MiAxMzcxNzkxODY5MjdhMDQwYzBlYTgyYWE3M2ZiM2UzMTk2YTg0MGE3IGxlZ2FjeS10cnVuaworMTI1NzMgNjdlZDA1Y2YxNzFkMDhmNTM1YTBhYWEzYmMwZTkzMDg3NDMxOGJhZiBsZWdhY3ktdHJ1bmsKKzEyNTc0IGVjZWJjZDg0ZGYzN2IyYWVmMGUyMjUwNzVlZjkwNzlhMWIyM2E5MjIgbGVnYWN5LXRydW5rCisxMjU3NSAxZTIxZTIyNDUzZGMzYzRjODU4ZDI1ODhkNTk4Mzc3MDFkMTg5Y2ZkIGxlZ2FjeS10cnVuaworMTI1NzYgZDRlOTYzMjUwM2RmZGEzMzA0YmVjYWZiMjUzNWE1ZWM0ODA5MTJkOSBsZWdhY3ktdHJ1bmsKKzEyNTc3IGQ2YmE4ZTVlNTVhZDRjODlhNDg3NjRlN2ZhY2I0MmExNjE0OGE4NGYgbGVnYWN5LXRydW5rCisxMjU3OCBjYmY1NTAzYjMyZDU1OWI2M2IzYzExOWNhOTUxNDk0NzZmZGQwNDIwIGxlZ2FjeS10cnVuaworMTI1NzkgODBiMjE1MjQ5YjE3ZDUxYjI2NTBmOWJhMGU4OGY3NTkzNGJiMWZmOSBsZWdhY3ktdHJ1bmsKKzEyNTgwIGMzZDUwNjc5NDk2N2RmODQxY2MyMWI5ODlmM2NjNmE5MjNiNjk3ZjUgbGVnYWN5LXRydW5rCisxMjU4MSBiYzM2MDJhODNhZDMyOTViMmQ2M2Y4YThiN2NiM2EyZTFmZDVmOGE3IGxlZ2FjeS10cnVuaworMTI1ODIgNmY0MmM4ZmU4NzViN2RlMjI1ODQ3NWYyNDY1YmRjZjFiNjgwNzBhYiBsZWdhY3ktdHJ1bmsKKzEyNTgzIDQ4YWYyYzZiNzQxZTljODBjZDMwY2FhNjRiNzk1MTYxMDczOGI0MjYgbGVnYWN5LXRydW5rCisxMjU4NCBiNTQ1NGRjMjJkY2I4MTFmM2YyMTI3Y2NjMDdlYTVhMmIzMmZjOTVhIGxlZ2FjeS10cnVuaworMTI1ODUgNDg5NGRjZWExMjZiNDA3OWRjNjBlMjA3OWFkNWQ2NTI2Mjg0YzU2MiBsZWdhY3ktdHJ1bmsKKzEyNTg2IDU4MjNiNjE1YzMwMWUzYmI2OWZmOTkxN2Y0MDgwYjYwNDA5YWEzMTMgbGVnYWN5LXRydW5rCisxMjU4NyBkM2U0NGU2MTBlYTE0YjIyN2QwMGYyNTUxZWY3Zjg4YjY3OTIyNWM2IGxlZ2FjeS10cnVuaworMTI1ODggYzcxNDRlN2U4NDk0MjA1MDRmNDIzZjcxZDI5ZDlhZjExMDlhY2ZhNSBsZWdhY3ktdHJ1bmsKKzEyNTg5IDllZmE0MjQ0NWVjOWFmZWVlMzJiOWIwMWNjY2JmM2ExMmNhMmIyYzMgbGVnYWN5LXRydW5rCisxMjU5MCBmNWE1NWQzMjc2MDgzZWJjNTAxYTRjOTdiOTA0NTRiMjU5NWNlNjlhIGxlZ2FjeS10cnVuaworMTI1OTEgMmE5ZWYxZTBmNTQxZDlkZTE4MTUzZGY4MjE0OGY4MWVjYTliNDMxNSBsZWdhY3ktdHJ1bmsKKzEyNTkyIGFhMDMzNjUyN2M0ZTk1NjMzOTRkYjA0YTIwYThmZDQyZDQ2MWU3YmYgbGVnYWN5LXRydW5rCisxMjU5MyA5NjU4NmRiMzc5ZmJhOWQ5ODRjNjM2ODY0YjQwZjdiNDRhOTg5ODdmIGxlZ2FjeS10cnVuaworMTI1OTQgNTc0MDc1ZTlhMjVmNGRiN2I1NDYxOTU3ZjVhM2Q3YzZmYTYwOWZiZSBsZWdhY3ktdHJ1bmsKKzEyNTk1IGQ4YzQzNzhlYjg3ZGFiZTk0ODMzNzUyMDU1YmIwMTY3YmIxYWVmMWEgbGVnYWN5LXRydW5rCisxMjU5NiAxZDI4YzdlMTY2MzY1NzMxNWQ4YmExZTEyYjNkZDgxZjIzZmVhMTc0IGxlZ2FjeS10cnVuaworMTI1OTcgN2VhZDRhMDQ0MjdlODg0MDJjNzU1NmUzYmY0ZTllMjYxYTVlNTIzYSBsZWdhY3ktdHJ1bmsKKzEyNTk4IDNhZTAzYjliNjVlZGMyYTA5ZDhmYjRkZGNiZGQ4MDQ2NTU4YTkxNjMgbGVnYWN5LXRydW5rCisxMjU5OSBmNWYxYjVlOTgxNGE0OGVhMmVjY2IxYzE0MTk3NWNiZDA0YmJiYTNmIGxlZ2FjeS10cnVuaworMTI2MDAgM2Y3ZGMzZGUwNjE3MGQ0OThjMTZjYjAwMWI1MDc1NmFlYjYxMmE0NSBsZWdhY3ktdHJ1bmsKKzEyNjAxIDlhM2E0NjkyOGRiZmViOGZiMmMzOWVmY2FiMmMyOTkyYmZlMzg5ODMgbGVnYWN5LXRydW5rCisxMjYwMiA5MTg0ODYyYmQ4ZDFlOTJkYzIzZjdhNmYwYWY2NzM5YmRlMjBmNzM0IGxlZ2FjeS10cnVuaworMTI2MDMgNmIyOGI1ZjE5N2NmYjA0ODJkMDRlMzA4MTVhY2E0NDFmNWIwNjVjZSBsZWdhY3ktdHJ1bmsKKzEyNjA0IGM3ZGZkNjE5MzUwYmM3ZjRhOWMzNzg5YmM2NGE3MDdmMGI4YWVmZDQgbGVnYWN5LXRydW5rCisxMjYwNSBlZmYwOGJkODE2NWQ4MmFmZjJkNzMzOTc2NTQ0MTA1YmE0OTg4YTMxIGxlZ2FjeS10cnVuaworMTI2MDYgNThlN2NjNWEzODQxMzAwY2E1YWIxMjZhMGY0ZDRmZmY0ODQ4MzMxMSBsZWdhY3ktdHJ1bmsKKzEyNjA3IGU2YmJhMDJmZjYyNDY4NGJiMDc2Y2Y3MWQ2ZjhhNTRlODkxOGQ2YWEgbGVnYWN5LXRydW5rCisxMjYwOCAxNmFhNzM1ODhkOTNiNjhmNTAyMDNkMjFhOGFkOTY4NzViMDdmZDQxIGxlZ2FjeS10cnVuaworMTI2MDkgNjk3ZTBjOWQwOTQwZWM5NTNjMDM0OGU4YmQ5YWU4YTA5OTMzOWNiYSBsZWdhY3ktdHJ1bmsKKzEyNjEwIDUyZDU3Y2MwM2Y0MjllODJlNDdlYTI1Yjc3YzA4ZjhlYTIxZTc2NWYgbGVnYWN5LXRydW5rCisxMjYxMSAzZDU4N2U2NTNmMmQ2NThkOThlMTE2MTc4NDhjMDkwOTFlN2NhZjlhIGxlZ2FjeS10cnVuaworMTI2MTIgMzFjMTEyNTk0YWI2MzdhZThiNGMyZjlhYmJmYWQwZmM2YzliODY3NSBsZWdhY3ktdHJ1bmsKKzEyNjEzIDNmOTM4NTg3ZjJhM2YwMmEwOWVlNzBjZGUwM2E2ZGE1NzU3ZDUzMzUgbGVnYWN5LXRydW5rCisxMjYxNCBhYmY0OTMwNjQ3ZTI4MjJiNzgwZjdkNGMwNjU4Mjk0ZjdjMTRlODY5IGxlZ2FjeS10cnVuaworMTI2MTUgZTlmNTk4NWI2ZWE0NjRmODFjYWQzYjI0OTNhMTVkZWNmNDMwNmE1NSBsZWdhY3ktdHJ1bmsKKzEyNjE2IDUwOGE2MzlkOGZlYjM1YWY2MjNkNTM1M2IzM2VhZjY0MDc1NWQ1NTggbGVnYWN5LXRydW5rCisxMjYxNyBhOTk4ODVhZjM5Zjg4YzRlZThlNTExMzMyZTkyYzA4N2YzNzczYjJjIGxlZ2FjeS10cnVuaworMTI2MTggNDllN2UyMTg0OWIzY2M1MWZkYjY1YzVhNDFlODE2MmI1NzkzYTM2NSBsZWdhY3ktdHJ1bmsKKzEyNjE5IDMxNDVkZWY1ODNlMmNhMTRlMzk5YTljNzI0ZjQwNmJiMWVkOWQwOTkgbGVnYWN5LXRydW5rCisxMjYyMCBhOWZjNzM5OGNlN2JiZjdmNjY3ZmRmZjJmMDMyMTRlZDhhMmUxOTVlIGxlZ2FjeS10cnVuaworMTI2MjEgYTYzYzljM2U5ZWNjMDFkNGY3NTM2YmUyMmMzNjU5YWQ5ZWI5Nzg3NCBsZWdhY3ktdHJ1bmsKKzEyNjIyIDViMTU2NDJlN2JkZjRhMjhkNzc3NzhlODQ5OTFiZmMxZmU5ZmRmNjggbGVnYWN5LXRydW5rCisxMjYyMyBiN2Q4MTI1YzI0MTdkODdkYzNjYjA0Y2JkOGJjNzNjNWNhNzAyYWE4IGxlZ2FjeS10cnVuaworMTI2MjQgY2JiM2IyYzU1NWQ3YTcwYTE2OTY0MTJjODc5MTBiYTE2NWQ2Yzg1YyBsZWdhY3ktdHJ1bmsKKzEyNjI1IGJjMjg3YzZjZmEyMzBmMDU2NmUwNGY2NzNkNGJiMTBjMjdiZWM1NTAgbGVnYWN5LXRydW5rCisxMjYyNiBmYjk2NjU2MmRiMGU2MWU2MTFlY2EyNjY4MTNlMDdhNmNiN2NhNDYwIGxlZ2FjeS10cnVuaworMTI2MjcgNjQ3MjhhNTFjYjU1MWU4NmI0M2NlNjE0MDE4YmYzMDM4M2Y3ZDg5YyBsZWdhY3ktdHJ1bmsKKzEyNjI4IDg5ZjY1NTZmMDU5ZWI2ODNjMGYzNGQyMjdhNjdkZjAxNGZmODA1MzcgbGVnYWN5LXRydW5rCisxMjYyOSBiYWZjZDdiNjIzMjc1Yzc1M2UyZDVmOTU1MTI2OTU2Y2FhMmIyNDFlIGxlZ2FjeS10cnVuaworMTI2MzAgMGRkNGZhZmVmZDZjNDhhNGMzODZjODI4ZDZlZGI2Njk0NGM1N2U5NyBsZWdhY3ktdHJ1bmsKKzEyNjMxIDhiNTVjNTE1NjgzZDkyN2NhYzMwYjBiZmM5NGEwMTU5M2YwZTY0MjMgbGVnYWN5LXRydW5rCisxMjYzMiBlNTY5ZjliMGQ5NjlhMTFiNmVjN2QxOWUyZjFlNmY2NTM0Y2FlMTVmIGxlZ2FjeS10cnVuaworMTI2MzMgMWFjMmE4YmI3ZGMxMDg2NGMwOWE5NzBhNTMzMGIxM2QzZWNkNDI3NiBsZWdhY3ktdHJ1bmsKKzEyNjM0IDY0ZTY0ZWYwOGQxYzkxMTU2YWIwNzYzNWYzNjYyNzAxOGRkNGFkYWIgbGVnYWN5LXRydW5rCisxMjYzNSA1NzE4ZTgzMDIwYWU5NWU1M2JiYmQ1MTFiM2E3NmRjZWFhZjliYTkzIGxlZ2FjeS10cnVuaworMTI2MzYgMTM5ZDVmMWE2Zjg5OWQ3Y2IzZjA5ZDdhNWZkNzVhNjhkNDc5YjVkMSBsZWdhY3ktdHJ1bmsKKzEyNjM3IDBjMDdjMGRiZTMyODJjMDRiOWQwNzVlNTUxZGM0YWQ3ZWFmMTVlN2EgbGVnYWN5LXRydW5rCisxMjYzOCA2NTczMTY5OGM2ZWRmNGE3NmFmNmUxNDZlYjI5NGM4M2VkNzgyNTU0IGxlZ2FjeS10cnVuaworMTI2MzkgNDljZjE0MTI0NDVmMzIwOTYwYzAzZjFhNDA0NTdmY2RiMTdhOWFlMCBsZWdhY3ktdHJ1bmsKKzEyNjQwIGIyMTkxNWU2NTg5ZTA0Zjk4ZmMxMzdhYmExY2Q1MTI2YzM2OTQ5OTEgbGVnYWN5LXRydW5rCisxMjY0MSBiYzAzNDc2NDNlY2ZjNmNhYjk1YjgzNTE1NDYwNzExNDkwMDYwYWNlIGxlZ2FjeS10cnVuaworMTI2NDIgOTIzMjM2MTI5NGJiNjkyNDVmZTFjNWNmODgzNjMzMTQ0ZjYxODc2NSBsZWdhY3ktdHJ1bmsKKzEyNjQzIDA5OTAyZTEzMDUzNzM0NGUzY2ViMjFjMTYyNDYxMjcyMzYzMmMzNDkgbGVnYWN5LXRydW5rCisxMjY0NCA1YmRiNzJiMTk1N2UxNmU3YWI4ODczZGMwMjA0ODI0ZmUzYmI1ODE1IGxlZ2FjeS10cnVuaworMTI2NDUgM2M2OThiNTNiZTU5MjExNmZiMzBkMjg3NjY0MDcwNDZiODA4NWFiMiBsZWdhY3ktdHJ1bmsKKzEyNjQ2IGFiZDNmMDY2Yzg3YWM1MzlmNTRiYzJmOTA0MjFkNmJhNjJkYTk4ZmYgbGVnYWN5LXRydW5rCisxMjY0NyA4Mjg0OTI3MDI1YmU2ZmQyYjRhZDc5YzUzMmE1Njk5NWRkNTliZDJlIGxlZ2FjeS10cnVuaworMTI2NDggYmQ0OWY5MWQ1OWIyZDMxYTQyODk0NWM4NDM3ZTE2ZjU5ZDQ2Y2Y2NyBsZWdhY3ktdHJ1bmsKKzEyNjQ5IDNhYzdmMDA2NjM3NWZjODYxZjM0OWIxZDAxMTFlMmRmMDQyNjRkODEgbGVnYWN5LXRydW5rCisxMjY1MCBlNDBiY2Y2YmMxYzhiYTM2MDZmNDE4ZDAzZTI2Nzg0MmQzNzEzOTMzIGxlZ2FjeS10cnVuaworMTI2NTEgOTU5ZTgxYjM5YjgxMTIyZjY3MzBhODY4ZmIyNWVhMjU2Y2U0NWMyZCBsZWdhY3ktdHJ1bmsKKzEyNjUyIDlhNmMzZGMxZGNkM2YwZTE0ZWNlYTY4NDM0N2Y4MjcxYmY0YTgwNzggbGVnYWN5LXRydW5rCisxMjY1MyAxZDNmZTdjODhjYzhjNDMzZDhlNTJhYTU4YzJkNDMyYjA1ZjI2NmQ1IGxlZ2FjeS10cnVuaworMTI2NTQgNjJkYzlmZjljZDRjMzkyY2NkZWQxNzU5ZmIwOWI0YTg5MTI5MmIyMCBsZWdhY3ktdHJ1bmsKKzEyNjU1IDlhYTQzOTBiZTM4YjdjMGFjMjhhZTFlNDNjYmEzMjYzZDMxZDM0OWMgbGVnYWN5LXRydW5rCisxMjY1NiBkMzdmMDMxMjRjNTRmODIzZjRiMmNhZjk0ZWM1ZWE2MzI0NjUzOTUxIGxlZ2FjeS10cnVuaworMTI2NTcgODQ2NGUzMTM3NmVkOWJmMWEzMGI4NzMwMGQyYjhhYWU3MmZmNDlkMiBsZWdhY3ktdHJ1bmsKKzEyNjU4IDBmN2Q2OTRiYzMzNGVmZjBmMWNjMDAxMDMxMTVkNGEyYzU5MzQyYjYgbGVnYWN5LXRydW5rCisxMjY1OSAxMzIzOWI0OGM0NjljMWE4MjkxYzA1ZjkxYzczYjIyN2NmNWI2N2MzIGxlZ2FjeS10cnVuaworMTI2NjAgNjI1YjdjZWJmZGUyYjJkOWQwM2Y4OTMyMjljYjQ5MDQxZTkwN2Q3MyBsZWdhY3ktdHJ1bmsKKzEyNjYxIDNiN2I2ZDVmMTkzMTY3ZGM5ODRkYWIwYmMzYTI3ZGRmMzU5MmNmMTQgbGVnYWN5LXRydW5rCisxMjY2MiAzYmEwMjViYTdmMDk1MDRiNzE4ZTlhMGQ5MGFiYjFlNGQwN2FiYWM0IGxlZ2FjeS10cnVuaworMTI2NjMgNWMxZWJmMjNmMWQ3N2I0M2RlNDE3M2E1YjM5ZWMxMDdmZmIwYTI5YyBsZWdhY3ktdHJ1bmsKKzEyNjY0IDU2NGYwMzYzMjkxNjI1ZGNjYzRiMzU2ZDdkYjVhYjI2OGI3MzUyZmIgbGVnYWN5LXRydW5rCisxMjY2NSBkZGY4NjFkODRiYmI5MjI4NGIzNDRlMzlkZGRjOGNiYzIwM2E2YTQ5IGxlZ2FjeS10cnVuaworMTI2NjYgMTU0YzY0MDhjM2MyZGRjZDZjYzRmNDE0ODEzYjY4ZGQyZjFlODAwMyBsZWdhY3ktdHJ1bmsKKzEyNjY3IDljOWNmNDU3MmE5NzdlZjZmN2JkZjU5YTc5OGM0YzE4NmUwZTVhY2EgbGVnYWN5LXRydW5rCisxMjY2OCAzZjEzZWU1OTJhNDBmODNlMjkxMmUwMWRlYTdlZWQxOGYxYjNmNDFkIGxlZ2FjeS10cnVuaworMTI2NjkgYmQ4YzQzZGFlZjg1ZTIwNDFhZDk5YTFjMjkxNGI3YjdkZWY2YTc3ZCBsZWdhY3ktdHJ1bmsKKzEyNjcwIDc2MmNmZTk2ZmFmOWQ3MWVkYjdhYWM3YmEwZDNmOWNmN2FiMTFiN2EgbGVnYWN5LXRydW5rCisxMjY3MSBiYTI1YjJkM2Q3ODRkN2Q3ZTU2M2M1N2MwN2QxZTQwZjRmODlkMTllIGxlZ2FjeS10cnVuaworMTI2NzIgN2NmOTc2NThjYWU3ZTM2ZjM5NjM1NDMwNjc1OGE5NjA0ZTcyMTI5NCBsZWdhY3ktdHJ1bmsKKzEyNjczIDczZTVlM2Y1MWI4NzRmYzk3MzliMDJhYzI2MzdhMDNiNzU1NjEwM2UgbGVnYWN5LXRydW5rCisxMjY3NCA5NjU1MGI1ZDA5ZTE0YzJkNjhmNWJiNzAxNTc3NTNhNTEyMjA0NzM0IGxlZ2FjeS10cnVuaworMTI2NzUgNmExY2I2ZjM3YTUyYzViNzBjNDNlY2JlNWJjMzAzYWNlZjc3OGUzYiBsZWdhY3ktdHJ1bmsKKzEyNjc2IDc0NGRiODZlMDMxMWFmZGY2NjM2NGQwMTM4OTQ2NmI2MTNjNjkwY2YgbGVnYWN5LXRydW5rCisxMjY3NyA0OWQ3NzZmMzg3OGQ4ZGQ1MDQ1N2FjNjU3MTU1ZGQzMTU2ZjA3NDIzIGxlZ2FjeS10cnVuaworMTI2NzggYTc5ZGNkMjdiZGMzYTZiNWY5ZmE5MDgzMzY0MTBkOTRkMWY1MmE2ZSBsZWdhY3ktdHJ1bmsKKzEyNjc5IDM1ZjkxY2FlYWE4ZGEzNzU0NzNmODQ2NjdhYWMzOTg1MzE0MGIwNjIgbGVnYWN5LXRydW5rCisxMjY4MCBmMGE1N2NjZjIzM2NiMzU2ZDk3ZTM1MTIyOTI4ODYwMjUxYWJjYzU2IGxlZ2FjeS10cnVuaworMTI2ODEgMDRiODgwNDJhOTJiOGZjMmRjODViMGFlZWRiZGRhODYzNGExNDExNiBsZWdhY3ktdHJ1bmsKKzEyNjgyIDAwNWJhNDEyYThlY2I1MmE0MDY5NTAyYzZhYjlkY2UzMmM2YjU5YjUgbGVnYWN5LXRydW5rCisxMjY4MyBiODkzMmFiNDFhZGQ0ZjIwMWNmOTNiMGJlN2Y3ZDkwNjcwYmRmNTllIGxlZ2FjeS10cnVuaworMTI2ODQgNTUzOWFlYmY4OTM4YTg2NDU5ZDFjZTY1ZDE4MTEzZDU1YzAyYzY0YiBsZWdhY3ktdHJ1bmsKKzEyNjg1IDZkYmNkNWE2ZTVlNjE4Yjc1MWIxYmFkMzVkM2RmNmEzNjhiNTI3ZDEgbGVnYWN5LXRydW5rCisxMjY4NiBkODY0MDA1MDBhYTAzNzMxNTM1YWUzN2FmOGViOTUxN2NmYWQ5ZjRjIGxlZ2FjeS10cnVuaworMTI2ODcgYjI2ZTI1MTU4OTIyZWY3ZDIzMmU3YzBjMWFkMzVmYzRhMjllMjMyZSBsZWdhY3ktdHJ1bmsKKzEyNjg4IDYyZTYxMDU4NDgwYTM5OTMyZmQyNGJhN2MzZGIwOGY4YWE2NzdjMDcgbGVnYWN5LXRydW5rCisxMjY4OSBlZTFkMzJmN2EwNTVmMGI4ZDFiNTc4Nzg2M2NlNDAyMjM5N2I5YWYxIGxlZ2FjeS10cnVuaworMTI2OTAgNjYzM2MzZmNhNjI2M2YzNmVhNjEwYmRhNzQxNWE1N2YzNzkyNTYyOSBsZWdhY3ktdHJ1bmsKKzEyNjkxIGJkMzBkMzk3OTdhNDA5ZWJkM2JkYWE2MGFiMGUyZTU4ZGUzYzQ1ZmUgbGVnYWN5LXRydW5rCisxMjY5MiA4ZjRhZDE0YzM0MDczY2M4ZWMxNDc1Y2QzMDVmMWZiODFiMTg0YjE4IGxlZ2FjeS10cnVuaworMTI2OTMgYjBmMDRiN2M5NDA3MWU3MmQ4YTk2MWNkMzI1MTY4YzA0MTU1ZDE5YSBsZWdhY3ktdHJ1bmsKKzEyNjk0IDRhZjg0Y2RjZmRiNTNkMjA5YjQ2YWMzNDM3YzMzNDE1YmE3MzNjZmMgbGVnYWN5LXRydW5rCisxMjY5NSA2N2YxZDZiZDU4Y2ZiYTEwOTMzZWQ1NDg1ZGY2OWNiMzEwYmY5MzE5IGxlZ2FjeS10cnVuaworMTI2OTYgMWQ5NDI0OGZlMmI5OWEyOTllNDAyYzQ2NGJhNjI1YTI4MzU5NDVmMiBsZWdhY3ktdHJ1bmsKKzEyNjk3IGEzNjk4NjU2OWFmMThkNjg0MWQ5NjE2NjVmZDdiYzgyOTQxNDU1N2MgbGVnYWN5LXRydW5rCisxMjY5OCAxZTBkZDJlZjM5NzFjMmFjYjBkMDc1N2UxNGFlOGU0NWFjZDVjZTQ3IGxlZ2FjeS10cnVuaworMTI2OTkgZGU3YzAwMDM1NzhmOGFhNmUyOWZhZDcwYTc4YWZhZmEyMjkzMTgzMCBsZWdhY3ktdHJ1bmsKKzEyNzAwIGI1ZjA3YTRhNjU0YmYwNzFjMTVjY2I4MzY5NGY1MWY0YzNmZDYyYWQgbGVnYWN5LXRydW5rCisxMjcwMSAyNzkwMjU1NWY2NzIxZGQzYTAyMTFiZTJmNDZjYTNiZDg1YTYwODM2IGxlZ2FjeS10cnVuaworMTI3MDIgMDQ5YzkxMzQzZjk1ODhhZjUwNDE5ZGVmNTM3NmZlNTk2OGE4OGI5OCBsZWdhY3ktdHJ1bmsKKzEyNzAzIGMwZjY5Y2JlODA1ZDE3ZTZhOTQzZWRhNDFkZDNiYzJlNTNhNzBiOGUgbGVnYWN5LXRydW5rCisxMjcwNCBlMWRhMjkwYWNjNWYxMGVkZDAzOWE3YzliZTU4M2QwM2ZhZGU1YTdkIGxlZ2FjeS10cnVuaworMTI3MDUgZGZkZmY4NzI0ODg3NWRmNTZhNDFhM2RjMmZkZmM0NmIyMjAwMWY2MSBsZWdhY3ktdHJ1bmsKKzEyNzA2IGJmNDE4NDBjODE1MDcyMmFhMGI4YjhhYjY5Y2NmMmJiM2M2YzE5NTAgbGVnYWN5LXRydW5rCisxMjcwNyAxYzU5YTk5ZTk5NzBmMDY5NTM0NDk1OTI0YWI0ZmUzODdmMTY4YTNlIGxlZ2FjeS10cnVuaworMTI3MDggMDJiMTcyYTVkODkzZDdhNzExY2E4NjMwYTUwMmNjZGY4OWFkYWMyNyBsZWdhY3ktdHJ1bmsKKzEyNzA5IDI5ZDFkM2IwOGNhN2Q0ZjU5NmUzMTRhYjgxOWQ1ZDY4YWFlNjc5NjAgbGVnYWN5LXRydW5rCisxMjcxMCBhODZmZTFmM2NmNGU2NWIzNzUyNmM5YThhZWY5YmQ5NGU4ODgxZWVlIGxlZ2FjeS10cnVuaworMTI3MTEgZDI4MjI3NGZiYjcyMmZkODU1Yzc5MWY3MTIxNGY3MjM2MTlkZWJiYyBsZWdhY3ktdHJ1bmsKKzEyNzEyIGIxZDQwZmIxMGFmNmNiZDlkZTU4NWFmNjgxNTI3NDBjNWE5MDhhMWQgbGVnYWN5LXRydW5rCisxMjcxMyAzMmI0M2U1ZDg4ZDM1ODFkYTYwMjExOTk2ODVhYzM1ZDBkZTQ5YTdmIGxlZ2FjeS10cnVuaworMTI3MTQgZTMzOTdhZTg4MTI5MjFlODU2MzQyNDY5Y2FhMjFmNTJhMGUyODJmOCBsZWdhY3ktdHJ1bmsKKzEyNzE1IDAyZTEzM2VhYmFjNjk2ZGY2YTdiYmEwMTg4YzI0ZGM0NjMyNmFmOWMgbGVnYWN5LXRydW5rCisxMjcxNiAxZmJjNGJhZTI4Y2YwNTg3MTc0YjFkNzdkNmQ5MGJkNjE5NzgwMjZlIGxlZ2FjeS10cnVuaworMTI3MTcgZDE2ODZjZjA4ZDExNmM3MTdlNWYzNjgzYmU2YmMyZmI5OGJkNDJlOCBsZWdhY3ktdHJ1bmsKKzEyNzE4IDYxZWRkM2I4NWQ2MzY5ZDJjYWM3NDdkZGIyOWYxNDczN2RiNzAzYzQgbGVnYWN5LXRydW5rCisxMjcxOSBjZDQ3NjQ0MmVmNzE1YjYyNGU2OTkxZDE0YzkzZDVlZDUzMDA5ZmJjIGxlZ2FjeS10cnVuaworMTI3MjAgNDc3ZTk4MTA5YzdkNjYxNTE4ODBmYjJjYzMzNWI4NzE5YzQzNWRkMiBsZWdhY3ktdHJ1bmsKKzEyNzIxIGEyOTE5MmYyZDQ3YWZjZjY0MzMwODU3NzlhMzk2OThhZWM2YmZlNDYgbGVnYWN5LXRydW5rCisxMjcyMiAwZWYxMDcxY2I3ZmVlZDkxNzM1NzdiZWY5NTk2YzA5Y2I5YjIzMDAyIGxlZ2FjeS10cnVuaworMTI3MjMgZmViNDE1MDA4NzY1ZTQzZWU2OTEyNDI1OWVkOGQ5M2E2MzA0ZGMwNCBsZWdhY3ktdHJ1bmsKKzEyNzI0IGIzMDA3N2M1NzM0ODU0MmJkNjFlNmQ4MWY2MWRlZTRmYzI0Yjk3NzIgbGVnYWN5LXRydW5rCisxMjcyNSA1NTNlZDZhZTllN2E4NWZhNGY4ODZlMmNlY2RkOWY1YTc5OTkxNjNiIGxlZ2FjeS10cnVuaworMTI3MjYgZGY0YTk2N2E4MTQ2MmViZDJmYzFmZGI4YTY1MDE5NGM0MGQ1YTk4ZCBsZWdhY3ktdHJ1bmsKKzEyNzI3IDdiYmU3MTYzMWMzZjAyODgzYmUzNmU2MWE4ODVjZDAxMmViZThkNTEgbGVnYWN5LXRydW5rCisxMjcyOCBjZDEzMGM5NTU4ZGIzOGI2ZWU2MDljMDg0ZGJmOGQ4MzdiMGVkNDQ3IGxlZ2FjeS10cnVuaworMTI3MjkgYWU2MTM1Mjk3NTc0MmZiOTA2MzkwMjNjYWFjZjliMmRkMTg4MDYzNSBsZWdhY3ktdHJ1bmsKKzEyNzI5IDhmZTdlYzRiNGZjMTUxOGZjYWM4OWU2YmY2NzRmYmJjZTE2MTUwYTkgbGVnYWN5LXRydW5rCisxMjczMSBjZTU3ZWIzMDk2OGE1Yjg5MmM4ZDE3N2NhMDhlNTFmOGE3ZmZlYmM1IGxlZ2FjeS10cnVuaworMTI3MzIgMGUxNDdhNTE3NGExNTIxOWUxNWRiNmVjMzc1MGY2YjAxODk4NmRiMiBsZWdhY3ktdHJ1bmsKKzEyNzMzIGE2NWY4NzU4NDM1NGFlNjZhMjI0ZjA2ZTcwNWUzMmNjMmRiMzE5NTcgbGVnYWN5LXRydW5rCisxMjczNCA4Y2NjZmM2ZDYyNzIzNjc0YWIzZmM0OGYzNjNmZGE4ZmFmZTY0MjFjIGxlZ2FjeS10cnVuaworMTI3MzUgMjQ5ZDlhMmI1YmM5NjhkZjQ5MjlhMWZmODVmZDVmMzM2YWViNjZlNCBsZWdhY3ktdHJ1bmsKKzEyNzM2IDkyZmNlNDE0ZjM4MjMwOGQ0YzZkNDEyZjUwZWFmYTI3NjIxMjExNGYgbGVnYWN5LXRydW5rCisxMjczNyA1NzQ0YTZkYjJkNGY4NDE5NTUwNjI1MDU2NWZiN2VkN2M3NWQ1NGU2IGxlZ2FjeS10cnVuaworMTI3MzggYzVlODM0N2ViODA5YzI4YzU1MjEyM2M1NGU1NDYzMzkxMTQyMWE3ZSBsZWdhY3ktdHJ1bmsKKzEyNzM5IGYxY2NiZDZhOTRjZTMzM2QyYzRmMTNmNDc2ODQxY2I4ZTE2NmNjZTggbGVnYWN5LXRydW5rCisxMjc0MCA4NjY0MmI3YTdhNjBmNTg0ODgwNWM1NjQ4MTJiYzFlOTk1NzU1NzBlIGxlZ2FjeS10cnVuaworMTI3NDEgYzFiZWZkYmQ2NGU1NzIyOWU1MGM1NjU1OTU2ODVlOTY5NzBlMjVhZiBsZWdhY3ktdHJ1bmsKKzEyNzQyIDM1OTI0NGZhNmI1MmFiMGViYmFmOWNmMDMxNzY2NTBlOGIwYmVhNjAgbGVnYWN5LXRydW5rCisxMjc0MyBmMTM4YmE3MmJmMmQ5ZjJlM2U4ZTE4MGUzOTVjMmY3ZmNhNzJlZjdhIGxlZ2FjeS10cnVuaworMTI3NDQgYjZiOTMwMDZkMDc2ODQwMDY3MzMzMDNmYjRmMDgxM2FjMjg3NmQwOSBsZWdhY3ktdHJ1bmsKKzEyNzQ1IDU3NWM0ZWEyNTQyYmMwZTJmNDRiNjNhYWMwYWQxMmY4YjI5NTBmZTcgbGVnYWN5LXRydW5rCisxMjc0NyAzMmM0MjA0NzQyYmFmZDZkM2M2MjI5YWNhMWNjMzZlZGIyNDkxOGNjIGxlZ2FjeS10cnVuaworMTI3NDggYmRiZmUwZWM5NzBmODkyZDZiYjgyMGE1MzBjNWM1YzkyNzFiYzkyYyBsZWdhY3ktdHJ1bmsKKzEyNzQ5IGM1ZjExYzViZjViMjIwMDYxNDgxYWMyYWVlNDkwZjQzNzJjMzAyZDkgbGVnYWN5LXRydW5rCisxMjc1MCAxYTJhMGEzZTlkZGIyZTEyMmZjZmIxOWYxNDc4ODdjNTk4MzEyMDM2IGxlZ2FjeS10cnVuaworMTI3NTEgODk1ZDg2MWEwODcwMWZjZGM4YmJlMmE5YjU0NGM3MWM4ZjRjMGNhZiBsZWdhY3ktdHJ1bmsKKzEyNzUyIGU1OWNhNWQzNDZmNGRmMmM4NDQ2YzNjMmEwMjE1YzNiODcxNTBhYmIgbGVnYWN5LXRydW5rCisxMjc1MyA0N2MxMWU4Mjc2OTk5ZjAwNzhjMDcxZGUyYjk4MzgzYzc3MDJmOTU2IGxlZ2FjeS10cnVuaworMTI3NTQgZDgzOTM1ZDE0MDg0NTY3ZjhlYTQ5ZDY0OGQ4MzU2N2IwZTZkYzNmMSBsZWdhY3ktdHJ1bmsKKzEyNzU1IGMyN2MxMGM2YjlmMjgyNzQwMWQ4ZDAzYWVjODE0MWI0Zjc4N2JiZWEgbGVnYWN5LXRydW5rCisxMjc1NiAxM2I0NWM3NGU5N2I1MzA2NjIyNjFiMmRhMzdlOWFiNWQzMmI1OWUyIGxlZ2FjeS10cnVuaworMTI3NTcgOGZlYjI5NTBkYTdiMjYzMjM4ZmEyYjQwZmI0NjRkOWM0ZTA3Y2M4NiBsZWdhY3ktdHJ1bmsKKzEyNzU4IDA2MTRlN2YxNjc0MWYyYTE1ODhlMjRkNGUyOTBjNDBhMGU2N2IzZTkgbGVnYWN5LXRydW5rCisxMjc1OSBhNDkxM2JhZTlmOTNlN2Y0MTAwMDA5ODI1NjU4ZTYyN2QyMzNiYmNkIGxlZ2FjeS10cnVuaworMTI3NjAgMGNiOGU1ZWE4NGE4ZGFhYzBlOTVkNDQ0Njk3Y2E5NmE5MDJhNmZlNiBsZWdhY3ktdHJ1bmsKKzEyNzYxIDE2M2ZkM2Q5NWMxN2U0MDQ4MjI0YTFjODkyMTFlZjg3MWE0MTBkNWMgbGVnYWN5LXRydW5rCisxMjc2MiAwYTVjZGQ3ZTVmYzNmODUwYTZiZGMxOWVkMmQ1YzQzNDZlNmM4OGQ4IGxlZ2FjeS10cnVuaworMTI3NjMgMjZhMDIwNjBiYWIxNzQxNmNmODI0Yzc1ZjVkZDVhYWY5ZjMzNTU0MSBsZWdhY3ktdHJ1bmsKKzEyNzY0IGI2NGYzMzU5NGEzMTEwNjk4ZjBlYmRjN2NjNTRiYzVjY2YxYzc3ZDAgbGVnYWN5LXRydW5rCisxMjc2NSBlODNmNjc2ZDE1YzI4OWNlYjZkN2M5MDNiNTVjZjBhYjQyMWRhMGY4IGxlZ2FjeS10cnVuaworMTI3NjYgMjk3MDFlMjkwNGFjNTQ5NzA5OWZkMDQzZDAzMTYwNWZkM2YxM2QxMiBsZWdhY3ktdHJ1bmsKKzEyNzY3IGI5YmI3NWRlZDgwNGFjYTU3YmU5NjNhZjJkY2RkNDg1NmFjOTJmNTMgbGVnYWN5LXRydW5rCisxMjc2OCA0ODcwMGY5OWM2YTZkMzFkNTIyZDFjNzRkM2ExMGYzNTIyZTMzZmRmIGxlZ2FjeS10cnVuaworMTI3NjkgMmY0MjVhNTdkOWFmZTcxZWY0NGVkZWY5ZTkxMDMwODNhOGIwYTk4MyBsZWdhY3ktdHJ1bmsKKzEyNzcwIGFiYWM3ZjYyNzU3YzgzMTE4ZjVmM2ZkY2I1ZTgwNzliZDBlYzZhODkgbGVnYWN5LXRydW5rCisxMjc3MSAzNWRmNGRjMmQzMGQ1NDM2MmQ1YTI5MTc4YWFjODgxNWZkZTViYjEzIGxlZ2FjeS10cnVuaworMTI3NzIgMGUzNTVkZmQ2ZjdkMTVjYzMyZGYyNzI4MDY0ZjFhYTY2YzQyM2FhMyBsZWdhY3ktdHJ1bmsKKzEyNzczIDY0YmNhM2JjYWEzNzRmMTc2NTBhMTQyMjJkNjhkMTI3OTI5NDI3YWYgbGVnYWN5LXRydW5rCisxMjc3NCA2NWEyNTM5NzFlY2NlODY2NTNlNTAzMDA4MGNiZmRlNTU3NzhhZjlhIGxlZ2FjeS10cnVuaworMTI3NzUgYTJhNzY4MWIyNWYxZjU5YmVjZWNhNTg1ZTBmYmUxYTM5M2UyODdkOCBsZWdhY3ktdHJ1bmsKKzEyNzc2IDA4ZWFkYzY1MGVmMDk1YzdhNWVkNmZiYWUzZmU4NWRiOWIwMzk0YzYgbGVnYWN5LXRydW5rCisxMjc3NyAxOWQ2MTIxZmU0ZjM0M2M0NjNiZDRjYzM4YWQxYzRmNjcyMDVhOWFiIGxlZ2FjeS10cnVuaworMTI3NzggNjMyYmQzYTVkZGVmNWJkZDA1YzE5M2FmNTU5MzhiYjcxOGFjMjNiYiBsZWdhY3ktdHJ1bmsKKzEyNzc5IGJhNWM2MjkwODEyMjVhMmE5M2VlYzZiNzk5YmRjZDI2Mzc4MmVhZTggbGVnYWN5LXRydW5rCisxMjc4MCA4NjAzNWFlNTMwNmMxMTdhZjdkZmRkMjk1MzY2ZTUzZDhiMjAzOTcyIGxlZ2FjeS10cnVuaworMTI3ODEgNDZhYzExYjc4ZTkyNzgwNTZhYTk2ZTc5NmRhZTdmZDgyZWI4YzMwNyBsZWdhY3ktdHJ1bmsKKzEyNzgyIDg4NmVhMjU1ZjM4MWZmMGM2ZGI3MGUyNzkxMjIyYjJlYjcyMTg4YzIgbGVnYWN5LXRydW5rCisxMjc4MyBjYzlmZDUwNjMwYTY5OWNiMDNjMmFmMGIzMjRmMGI3NDgzMjE5MWZmIGxlZ2FjeS10cnVuaworMTI3ODQgY2VmMmExMzQ1Njk1ZDE4ZjgyMTMwZDYxZDU2MjYzNmNjODFkM2Q2ZSBsZWdhY3ktdHJ1bmsKKzEyNzg1IDAxZGFmYzU3MWEzMDMyODUxODY4YzE1MDVkN2ZmYmI4MWM4MTEyODcgbGVnYWN5LXRydW5rCisxMjc4NiBkM2JlY2U0NjQ4NmUyOWQ3YTJjNWE2MmY5ZmJjMWM1MTFmMzlkZDNiIGxlZ2FjeS10cnVuaworMTI3ODcgMDZkYTNiYTNhYWRlMmU0N2VmNzJiYzhlNjUyYThiYTA0YzJiM2UzYyBsZWdhY3ktdHJ1bmsKKzEyNzg4IGNkNGM0NTEwYWRiZDQ3ZTk4NTMxOWRmMWMwNzBjZjFjNTQ4YzQ2OTAgbGVnYWN5LXRydW5rCisxMjc4OSAzYjgxYTdkNDE4Y2JlZTg4NDc2MzAyNjg3NWNlOTllYmIzODc4NGNkIGxlZ2FjeS10cnVuaworMTI3OTAgM2UzYzA5ZTE0NTAzMWQ0MDM5Yjg4YzlhZWZkYjc3YjBjODcyYjYxMCBsZWdhY3ktdHJ1bmsKKzEyNzkxIDVjMGMwNjFkZTJhZWJhNmY4ZWQ0ZWNlZDYxMzU3ZmY0MDdkZmMxYmIgbGVnYWN5LXRydW5rCisxMjc5MiAxZTc2NmRlNzE0ZGViYjBkMzcxODJlNTgxNjgxODgzYWY2MDFhMzcyIGxlZ2FjeS10cnVuaworMTI3OTMgNWNjNzEyMjY3MWFlYWZhOGUzMTAzNzY3NGQyM2QyOTYxOTk4ZTI2OSBsZWdhY3ktdHJ1bmsKKzEyNzk0IDliZTI3MjZjOWIyNTRjZDhhZGE2YTFlN2VhMWMxNjVmYWMwZTllNTkgbGVnYWN5LXRydW5rCisxMjc5NSAxYzZiMTBkZWE5ZjA1Zjg1NjQ3ZTBhY2FkYjkzMDE2ZDMxMzA1ODQxIGxlZ2FjeS10cnVuaworMTI3OTYgMjZkYjFlOTZjYWYzOTQ2OWZlOThhNzhlNmM2NTY5ZjdhYWJlNTkxYiBsZWdhY3ktdHJ1bmsKKzEyNzk3IGI3ODEzNWIxMGE4ZTFlNmJmMzBjOTU0NzcwYzg4NWI0OTdhZGM0ZDkgbGVnYWN5LXRydW5rCisxMjc5OCAyNGRlZjZjMjViMGEwNTBhZWUxZmJlZDBlMzM3Zjc3MjU4MDNkYjMzIGxlZ2FjeS10cnVuaworMTI3OTkgNTAwMzZkMDZlOTRhYTg0MGRmZjU0NmJiNDlkNWQxOWE4ZmIyY2I5NiBsZWdhY3ktdHJ1bmsKKzEyODAwIDMyNDExYWY4YzAxMjk3NjAzNmIzMWEwOWEwNjg2OWE0MDk1MWNjM2EgbGVnYWN5LXRydW5rCisxMjgwMSBjYzBjOTA2YzI0MTU2NjhkMzE1MmMzZGU2MzY1NDEyNmYyNmVmZTIyIGxlZ2FjeS10cnVuaworMTI4MDIgYTk1YzdkMmE4M2Y3ZDAxNTFhMDQxZDg1ODE3MTFjYjdiZDc5NGRlZiBsZWdhY3ktdHJ1bmsKKzEyODAzIGZkMDliM2ZkMWVkYzRkYTRmOThkMzc3MTc2ZTFiNzc0NGQ4MDUyZDcgbGVnYWN5LXRydW5rCisxMjgwNCA1ZTg5ODljMmY4NWRmZGZhZWY5OTcyNWRjY2VmZmI2Y2I3MmJjNjk5IGxlZ2FjeS10cnVuaworMTI4MDUgODhhN2Q4NTk5MDBlM2ExMzc3ZTgzMmUwNDNmZTk5MmExNjIxYjFjNiBsZWdhY3ktdHJ1bmsKKzEyODA2IGYxZjYzNjRhZGRiZGVkYzE5OTRkZWYwMWNiNTkxZDVhZmQ1MWYyMDggbGVnYWN5LXRydW5rCisxMjgwNyBiNjQ4ZjllOGIzZWRhMjlmYTEyNWM1YTdiYmYyZjU2ODkzNzU1ODZjIGxlZ2FjeS10cnVuaworMTI4MDggNWRiY2RkYmRlZDAwYjJkOGU4MDBhNzg0YjZkMWYyMzhiZGQ0MzE3OSBsZWdhY3ktdHJ1bmsKKzEyODA5IDQyYzlhOGQxMDgzNDRmMTc1ODI3YTU3MWM1M2ZmMDMyZjZkMzVmMDIgbGVnYWN5LXRydW5rCisxMjgxMCBlN2MwOWE2MmJmMWYxYTYyMjZhZjRjODRlZmIwZGEyM2NjNTRmMmE4IGxlZ2FjeS10cnVuaworMTI4MTEgZTMwODkzOTYxMzk4MjdmNzIzMzcyOTc0ZDY3MTZhNGEyMjUwYmZlMyBsZWdhY3ktdHJ1bmsKKzEyODEyIGRiMzJkZWIxM2M5ZjA2ZTA5ZmM3MWFlY2U4NmVhN2Y3ZTdmYjI5NDEgbGVnYWN5LXRydW5rCisxMjgxMyBhNGQ5OTYwNzM0NGYwNzhiODZiNDZjMWZiOWI3NTk4OThkMmFlMGI1IGxlZ2FjeS10cnVuaworMTI4MTQgY2RhZTZjMTE0NWY0YzNiOGU3MjBmMGNkYThmZDE2ZGJlNTQwN2MwYyBsZWdhY3ktdHJ1bmsKKzEyODE1IDFlNTdhZWU1MDU2NTRlZWVjNWE3OTUxMmMyNWU3NWY1OTY4MDMzZWIgbGVnYWN5LXRydW5rCisxMjgxNiBmYTE4YjBmYzBjMTgxZTQzZTk5YWY2YjdlMmUwNzFhMDhhMWFlMmY4IGxlZ2FjeS10cnVuaworMTI4MTcgOTBjNzUyYWU0NGE2YjkxZjk0ODgzMDUxYmU1MjI0Y2E4MWM4OThkZCBsZWdhY3ktdHJ1bmsKKzEyODE4IDQ0YTM3NWUzMWFlMmZlN2Q4MGNkY2Q4MzMzOGViOWIyZDllZGQ2YmEgbGVnYWN5LXRydW5rCisxMjgxOSA0NDZiMDk2N2Y3ZDk2OWNmMDYwMGYxMzNjOTkzMjNiOGUxZTQ3YjA1IGxlZ2FjeS10cnVuaworMTI4MjAgMzliZDdiODQ3OGRiMzVjZGU4MmRiMWE2NjdhNWU5ZGY0YzFjNDVhMSBsZWdhY3ktdHJ1bmsKKzEyODIxIDRkZDc2OGFlODk1ZTY0Y2M4MTBlZTUxNjVkZmNkOTNkNmI1MjUxNDcgbGVnYWN5LXRydW5rCisxMjgyMiA5MDAyZjRiNDcwMDBhM2ZjN2MzMTg0ZTY2YTQyYzJjM2YyYWU0NGVhIGxlZ2FjeS10cnVuaworMTI4MjMgZTkzNWQ4OTQ3ZTMzOTZlOGQwN2EwNzMzNTk2YWE3YWY0OTUyYTZlMCBsZWdhY3ktdHJ1bmsKKzEyODI0IGJkMDc2NzRjM2M4YjA3NGVmODQ4YTkwZWRlM2Q5OTgzY2UzNjRhNGEgbGVnYWN5LXRydW5rCisxMjgyNSBhODdjZmVhMzBiMDRkODBhMzc2NGJkY2VkZTNmODc1MjUyYjc0MjM3IGxlZ2FjeS10cnVuaworMTI4MjYgZmVkNjZiZGRjZTYzODFlYjM0OGRiMzc5YzI0OWNhNjU1NWUyMjU0NSBsZWdhY3ktdHJ1bmsKKzEyODI3IDBkMGUyMjM5ZGZkOGMwNjg1OGI0OGUzZmMxZDQ0Y2FlNzc5NDEyOTMgbGVnYWN5LXRydW5rCisxMjgyOCA0YTNlNjM5Mzg0Njk0MTExZTkxZDVlMjViYzI5MTlmN2JkYTg4YmYwIGxlZ2FjeS10cnVuaworMTI4MjkgNGM0ZjM2MmZhMGE2YWQ4NTIwNDdlNTA4MzI0MzAyZTc4Njk0Y2M5NCBsZWdhY3ktdHJ1bmsKKzEyODMwIDY2YTdkNjFjZmQ4NGEzZGRhOWQyNTFjYjAxZjJjMGFkMmFiNjJhZGEgbGVnYWN5LXRydW5rCisxMjgzMSBmNDM4YzZlMmI2YzE4ZTU3Y2Q5MjRkNjY0NGZiOTI5YTk5MzNiODYwIGxlZ2FjeS10cnVuaworMTI4MzIgMjA3YjQwZWM5YTdlMzkxNGJmYWNjMmQxYTZkZmIzZmIwMThhNzM3YyBsZWdhY3ktdHJ1bmsKKzEyODMzIGJlMDU2MDk0NzhiZWYwNDM5NTViNDMzNGQyZTllYzJiOWM4N2M1NTggbGVnYWN5LXRydW5rCisxMjgzNCBhYmQ0MjAyOWZhMDEwMWQ1NDNmZTYxMTViZDcwNmYzZjBiMmFkOWIyIGxlZ2FjeS10cnVuaworMTI4MzUgZmZmODJkMmZiMzY5ZWZkMmVjMDlhNmJlMGY2OWRkOWRjNmQ4ZmRjYSBsZWdhY3ktdHJ1bmsKKzEyODM2IGI2ZWRlYzFlZmU2NDI3ODUxYmExOTA4OTRjMGZmODgyNjIzNzQ1Y2MgbGVnYWN5LXRydW5rCisxMjgzNyA2MTIyNDQ1OWJiMDkzNjFiMTFmMzQwYjQ5ZjNiMjg5ZTEwMTUzZjNjIGxlZ2FjeS10cnVuaworMTI4MzggMDkzZmMyOThhZmQ2YjBlMDJlNDExYTY0NWQxYzFlY2E4N2JiOTc2YyBsZWdhY3ktdHJ1bmsKKzEyODM5IGRkYmYxYWNiNzE3MDJkZDUxOTM0ZWRmYmY1NTJiNmQzNThkMmNiYjUgbGVnYWN5LXRydW5rCisxMjg0MCBhOGRjNTliNjZmNDk2NmNhYzgzZmNhMDViOWExMTk5YTM3M2M1OWU3IGxlZ2FjeS10cnVuaworMTI4NDEgNWM3MGVjZGVkZWZjMzM2NDlhN2M1NWIzZTJlZmYwOTUxZTczYWZkOCBsZWdhY3ktdHJ1bmsKKzEyODQyIDZlZTBlY2ViNzc1ZjJkMjJlOTAxYzBjYWE4ZjU0N2NmMGU4ODI3YWQgbGVnYWN5LXRydW5rCisxMjg0MyA2NWFlZDUyOWFkOGFkYWYzNDZkMTZkM2Q5YTc3Y2RlZTEyMGU2NDE5IGxlZ2FjeS10cnVuaworMTI4NDQgMDhkMzE5NGEzYzNmYzhkNjUyODMyMTA3ZWRkNmU2NDNiZmU0NWVkZCBsZWdhY3ktdHJ1bmsKKzEyODQ1IDhkMDkyYTY3MmQwOWJiMThkODVmNTAxMjk5MDE3ODUxZmE2YzdmY2IgbGVnYWN5LXRydW5rCisxMjg0NiBiOWE4MGJiYmU0YTVhNjg1YjM4NWMyZTFlZTAxM2VlOWVmNzdmZDE0IGxlZ2FjeS10cnVuaworMTI4NDcgNmRiMzVlZTkwYmZhYzAzZTVjMGZjZTM2MGExZDBjZjhhNmE2Zjk1MyBsZWdhY3ktdHJ1bmsKKzEyODQ4IGQ3MzllMWViNjE3NTFjMTk5NWEyNjdjZDJkNzY2Y2IwYTlkMmQ3YTAgbGVnYWN5LXRydW5rCisxMjg0OSA0ZTJkMTg5NzNiOTRhMDM3N2YyNWIyYThkZTZkZDRmMDE3ZTE3NzMwIGxlZ2FjeS10cnVuaworMTI4NTAgMWQ4NTdiNTk3NTgyMzc4NzYyNjIyMzViMTY4N2RiZmJjYTlkYWE0NSBsZWdhY3ktdHJ1bmsKKzEyODUxIDg5MmRiYTdmNDBkZWVmZWVlYmU4YmE3NWVjNDc4MWQyOTZhNTc2NDUgbGVnYWN5LXRydW5rCisxMjg1MiA3YTM5Yzg3M2RjODE4MGM5NzRmMWUwNGEzYzc2ZmZjYzk1YmJmYzNjIGxlZ2FjeS10cnVuaworMTI4NTMgNjdmZjllN2RjOGFmZjRhMDBlNWRhZTNiNWQyYTRkYzk5MWQ5NWRhOCBsZWdhY3ktdHJ1bmsKKzEyODU0IGE3OTdmMGM2YzJlMWRkMTM5YzE0OTU3MzZjYzIzYTNiZDlhZDlmYjEgbGVnYWN5LXRydW5rCisxMjg1NSBlNmQzNGNjMGM3OWM5NjJjMzlmZTYzYWRlZmQ4Mzc2NmMyZjZiZjQ3IGxlZ2FjeS10cnVuaworMTI4NTYgNmI1NzkwY2UyNTM2ZGM2ZTQ2MTI3ZTFlMjEwN2VhOTU4MDU2NjgxMiBsZWdhY3ktdHJ1bmsKKzEyODU3IDUwZDMwOTlkNTBjMjFkM2M3ODZlMGY5NjgxZjUyZmJjM2YzMWMzZDQgbGVnYWN5LXRydW5rCisxMjg1OCA0MDcwMjJjZjE5MzFjMTU4NzQwZTllYTNkZTU3Y2E3OWQ3NWUyMmZlIGxlZ2FjeS10cnVuaworMTI4NTkgODkyM2FkN2UxM2YyYjAxNTllZGUxYWIwMzZjY2E5MzdmYWRmNjliMyBsZWdhY3ktdHJ1bmsKKzEyODYwIGU5OGUxZWE1MWYxNjI2ZDVlNmY0ZDU4OTZlMTZjM2RiMTMyMjU2NmEgbGVnYWN5LXRydW5rCisxMjg2MSBkYTBjMTMzMGU2NmVmMmNkMGZjMDU5MzBlYzk1YzViMjExY2YwMTVmIGxlZ2FjeS10cnVuaworMTI4NjIgNzBhM2ZiMWNlMjNiNDFjYjgyNjBlMDkyOTIxYTkzMmQ4MTZkODczNSBsZWdhY3ktdHJ1bmsKKzEyODYzIGVhMGJiYzNiZjFkZmE2MThiNGNhYTE5ZTMwMDdhNjY5ZjRmMDRmN2IgbGVnYWN5LXRydW5rCisxMjg2NCA1MGU0ZGRkYjgyOGIyMDcxMmU1OTQ5Mjk4ODQ5NTk5ZGI5NWFjMmNiIGxlZ2FjeS10cnVuaworMTI4NjUgMTQwOWU3Njg3YTlhMDNiMjc4ZGZhNGI5NzViNTgxMGQ5ZjJhN2YwZiBsZWdhY3ktdHJ1bmsKKzEyODY2IDRkYWFiN2E5ZjU2NmFkNDIxNTUyNDY5MjZmOTU4N2RkNGNiNDRhZWIgbGVnYWN5LXRydW5rCisxMjg2NyBkNTE2NGM2NmFjYzk2M2JiYmZmMjAyMDYyZWFmZWRjZTkwZGM1YThhIGxlZ2FjeS10cnVuaworMTI4NjggMjVkN2Q0ZDczOTlmMTBjYWFhZmY5MDgzMWVhY2VmMjc5YjExMDU5NyBsZWdhY3ktdHJ1bmsKKzEyODY5IDY1ZTcyMTJkZjFiY2YxY2MxN2E0Yzk2ZDlhMjg0YTg3MzI4NjJkZGMgbGVnYWN5LXRydW5rCisxMjg3MCBjNWY0OWQ0ZTI5YzUwMzk4M2UxMjU4YzE2YmVhNGVjMmRhYzViOGRlIGxlZ2FjeS10cnVuaworMTI4NzEgNzk1ZDUxYWQyMjhhMjQwZGQ0NjY0NzNlYjZhMjhkZDEzYTNlYWRjMiBsZWdhY3ktdHJ1bmsKKzEyODcyIDEzMmY5NDY0MmM3NGQyODcyNDM1M2RmM2IwZWU2OTJjYTBjYmM4MzggbGVnYWN5LXRydW5rCisxMjg3MyA5NWI5MjI1YTUyZTQ1YmIyNTZkYmFlMTVmNTExNDFmNjgyMjhhODg4IGxlZ2FjeS10cnVuaworMTI4NzQgOTY5MTM5MDdhZTY4ZDk0NjljNTEyZDNmODQ5MDZjZDgwMDQ3MzRkYSBsZWdhY3ktdHJ1bmsKKzEyODc1IGZiN2ZhNDc2MjExZjM1ZDE1OWMyMTE0YzE0YTRiNzliNjI5YWE5ZTkgbGVnYWN5LXRydW5rCisxMjg3NiAwN2VlNzk1Nzc0ZDg5YjQxYmViM2JkNTdmZmY3ZDg5NGVjMmRlYTUzIGxlZ2FjeS10cnVuaworMTI4NzcgNDgxNDFkYTUxOGRmYTdjYWMyOWQ3YTZlYTcxNDAxNTQyNWI4YjhlYiBsZWdhY3ktdHJ1bmsKKzEyODc4IDQxN2FhNDI1MDEzYWQ3M2VhMzgwMmY1ZjAzNmViM2NmOTlhYWIzMzIgbGVnYWN5LXRydW5rCisxMjg3OSAzMzc3MzNjZTk1OTNmYjFlYTA1ZDY5NzZhNzlhNDllMDI2OTAwNjQ5IGxlZ2FjeS10cnVuaworMTI4ODAgNGNiYjIxMjJjNzM1OGY0ODUyMmE0MTEyM2Y5YjFlNjM1ZTNhZjJlNiBsZWdhY3ktdHJ1bmsKKzEyODgxIGQ5ODA4NWRlOTdkMWZlODhhNWNhOGQyMTg0OTg2OGQ2NjAwOGY5NWIgbGVnYWN5LXRydW5rCisxMjg4MiA5ZTk2OTVlMzE0Yzk2MDcwMzYyMjZmOTU2MmI2ZTM2MmUzOGU1MzgyIGxlZ2FjeS10cnVuaworMTI4ODMgNjk4OThhY2IyM2YyODFiZDY5Y2EyZWY3NGRmOTVjNDhkZWI0Mzg2OSBsZWdhY3ktdHJ1bmsKKzEyODg0IGZiNTFhYTgyNGRmMmQ0NzIxN2Q0NjdmMWM0YjRhMzI5MWU0YWI1YjEgbGVnYWN5LXRydW5rCisxMjg4NSBlMmEwOGE4MWU1NmY0ZWUyODU2OTVlMjFhOTg4MzM0ODcwNmFhYmU1IGxlZ2FjeS10cnVuaworMTI4ODYgNzBkZDkxYzIxNTEzNGZhZTRlZGZjZTE4NTZlNzQ3ZTdkMWJkOTIyOSBsZWdhY3ktdHJ1bmsKKzEyODg3IGQzZGM2MjAwNDc3NmRmMDJmNDMwNzBkOWU1ZmUxMWM4ODJlNjhhZGEgbGVnYWN5LXRydW5rCisxMjg4OCBlOTMzNTIyODZhYWM2ZDE5ZTgzZDU2MDdkZjUwZjFkODYxMTkyMmE1IGxlZ2FjeS10cnVuaworMTI4ODkgYzU4OTAyMWM0N2M5MzM3ZWVmNDcyNTAyMTY2Njc3N2UyZjVmYTkwZiBsZWdhY3ktdHJ1bmsKKzEyODkwIDljNWQ5YmRmN2U0MjM0MTliZGZiYmRjOTg0OTczMDViMDRkNTgyM2UgbGVnYWN5LXRydW5rCisxMjg5MSBmNGU2MDViZDhmMWI3NmI2NjJmNzZlMDAzOWUxM2RmN2ZhOThhNDdmIGxlZ2FjeS10cnVuaworMTI4OTIgMDE3M2E1ZjQ3MjA2ZGJlNDFmYTI5M2ZiODZhYWM0NWRjMzJhMmZmNSBsZWdhY3ktdHJ1bmsKKzEyODkzIGZiODE2NTk0ODlhMTY2NTY0YTFlYmFjOGE4ZDRiYmYxYzE4ZDgwYTYgbGVnYWN5LXRydW5rCisxMjg5NCA3YjgxMGFhMzViNWNlODZkYjE4MDAyYWQ4NTA5YTFlMTdiODIwZTQ0IGxlZ2FjeS10cnVuaworMTI4OTUgZjU0YmFjNWFmOThjYTAxNDdkODVkYWZjNDE3Yzc4NjEwODQyODBiMiBsZWdhY3ktdHJ1bmsKKzEyODk2IDc0OWUxYjNkODE3M2EzMDkzYzM3MGI5MjEyZWUxMDBkNWNjMTUzY2EgbGVnYWN5LXRydW5rCisxMjg5NyA1MjIwNjUzMmQzODkxYTA5MzNhMmFjOWY5ZDMzNDYwZDg2ODcyNTZjIGxlZ2FjeS10cnVuaworMTI4OTggZjM0MzMyOTUwMGJlNzliMTI3ZDYzNjgyZDk2NzY2N2UyNmJhYTI5NyBsZWdhY3ktdHJ1bmsKKzEyODk5IGMwNjZmZDg0MzNiYTg0ZWMwNTNkM2ViYTRiN2MwN2I4NWZkYmQyZjcgbGVnYWN5LXRydW5rCisxMjkwMCBkYzliMGQ0MThjMDA5YmI4ZDY4YTRjYTYzYWJkMTFiNTUwNTYyOTRiIGxlZ2FjeS10cnVuaworMTI5MDEgN2YxNDdjNGU0MjE5YjE2ZDZlMzRkYTMzNDI4NjZhODIzNDhiODMxZSBsZWdhY3ktdHJ1bmsKKzEyOTAyIDJhNGMxNzZkZTZjZGQzYzg4OTE3NjZkMzEwOThjMTgxNjlhNjNkZjUgbGVnYWN5LXRydW5rCisxMjkwMyA5NGFkOTBmZDI3MTI2ZmU1YmY2ODg4OTk1ZTI2OTEzNjI2YmVlOWE2IGxlZ2FjeS10cnVuaworMTI5MDQgZjgxZGI3MzhhYmQ5MmMyNmIwZDQxMzBmYTcxYTQzYjRkMTE5OThlYSBsZWdhY3ktdHJ1bmsKKzEyOTA1IDlkNGVmY2UxMWYwOWIxNTk4NmExMTA4NGFiMmEyOWUzMDliNWJiZDUgbGVnYWN5LXRydW5rCisxMjkwNiA5YzZkYTMwYWU2NzVkY2E1YzY5ZGVkNzA1Njg2ZGFmODhmMWFiYzI5IGxlZ2FjeS10cnVuaworMTI5MDcgODBkMmI5YWZkMTljYzU1NDBmMTYyYWMxOWQwYTgzNzg5MmM3NDdiNyBsZWdhY3ktdHJ1bmsKKzEyOTA4IDJjMDM5YzAxMDQzNzdlOTQ1ZmVlMjNjODA2Y2MyYWViYzBkOWMzNmUgbGVnYWN5LXRydW5rCisxMjkwOSAxNTlmMWMzYWZlMjg0ZTllYzlhZTUwNGRlNzM0YWJlNjBjZTE2MWY4IGxlZ2FjeS10cnVuaworMTI5MTAgY2NlZjVjMGU4ZGRjNjhjZTUxOTcxYWNkOTZlM2FlMjZiNmU4MTM5MyBsZWdhY3ktdHJ1bmsKKzEyOTExIGExNTQ0ZmM0OWE3NjM0NTVhM2UwN2NlZjVjOTM3OGI2ZTBhODhiZGMgbGVnYWN5LXRydW5rCisxMjkxMiAwNTA4MzJkODM4Y2E1ZWY4NmY3YTcxYTY2YWUxZjRiNzJhZWM1Mjg0IGxlZ2FjeS10cnVuaworMTI5MTMgOTc4MjMxODQyNjZhMDE5MDIwMGViMzljY2E5MGQxODZiMGQ2OWZiNSBsZWdhY3ktdHJ1bmsKKzEyOTE0IDk5NTJmMTZiYmU4Y2UzZTk3MmYwMDVlMjEyYTRjYWNlMTQ2YTU2N2YgbGVnYWN5LXRydW5rCisxMjkxNSBlOWU2OWIwMmQwZjBkMTBmZjNhZWY4NjNmZDcwZmM1ZjliYmM1NmIwIGxlZ2FjeS10cnVuaworMTI5MTYgNDM2M2ZiMmQ0MzQ1MDNmNzUxYTg1NjhjNTQ4MTg0NTgxNjU5YmY3NyBsZWdhY3ktdHJ1bmsKKzEyOTE3IGE2MzBlNTRlOTdmMjkzYmJiNjgxZjg5NDNiOGUxZDgzZDMyZTg5YWIgbGVnYWN5LXRydW5rCisxMjkxOCA0OGZiYzU1YzA1NTM0MTg4MGY5NTEzZjI5YWQyYjgzY2Y1YWU5Y2EzIGxlZ2FjeS10cnVuaworMTI5MTkgNTI0MzhjODdmZWRjYzIyNmE2N2FhNTI4NzY5Y2ZkNDUzYWIwYTBlNiBsZWdhY3ktdHJ1bmsKKzEyOTIwIGRjNTAyY2U3NTc1YTIwNzIxMDE2OTQwNmZhYzE1MDI5OGU1MjNhMjAgbGVnYWN5LXRydW5rCisxMjkyMSBiOGU0ZGUxYzM1Y2RhZDkwOTZkYTA1NmU2MGM0M2UxMTM2NTI2YjgzIGxlZ2FjeS10cnVuaworMTI5MjIgY2FiYWIxZjU1OTZlMjg1MjhiMmIyZTlkOGJhNjRhYmI3MmU3ZDcyZCBsZWdhY3ktdHJ1bmsKKzEyOTIzIDZkNTgyNzBkYmNkNDNkNDQ4YjFhOGQ4MzE3NDJhZWJkMDkwODA0ZDkgbGVnYWN5LXRydW5rCisxMjkyNCAwZDZiZDM5MWFjZDgzNzA5NzVlNzQ5MWZiNGQ1ODI3MTlkNzlmYjVmIGxlZ2FjeS10cnVuaworMTI5MjUgYjM2NDY5Mzk4MjYyNjllM2VlYTg5ZjcxN2VlZDhiNzE1OWRjMzdiNCBsZWdhY3ktdHJ1bmsKKzEyOTI2IDlhNGJhZjBjNTdlYTE5NDE5ZWRkNzk5ZmFiMDAzMzhjYjRhZmQ4NTIgbGVnYWN5LXRydW5rCisxMjkyNyA1Y2NkM2I4NmIxYTYzN2ZkMzAyY2I3Y2UwYjM5NDUyMWViMDVjZGUwIGxlZ2FjeS10cnVuaworMTI5MjggNGU4ZGVmZWMwOWY4NTA0MDc1YzlmMDYwMDMxNGVhZDczYTdmMzQzNiBsZWdhY3ktdHJ1bmsKKzEyOTI5IGMxNzY5NjhiYzkxYzEwOTMyOGM0ZDkzMTgxMGVjNmVjMWZmNGM2YmYgbGVnYWN5LXRydW5rCisxMjkzMCBlNjc5OWE4NTVhZjc4YzU0N2Q0ZThjMmQ4ZTkzOTFkMWIyNDcxZDk3IGxlZ2FjeS10cnVuaworMTI5MzEgMzU3MWI0YzFiYzBlM2QzN2NkZGY3OTE1ZWY1Y2JjM2M4YzdlZDA5NyBsZWdhY3ktdHJ1bmsKKzEyOTMyIGY5YWQxNDhjOTgwY2NlMGJmNzJmZDllNTQ5MGQ1NWY1NGY4OTIxNjAgbGVnYWN5LXRydW5rCisxMjkzMyBkNTkyZmU1ZTA5ZDU3NGQwZGYzNTdkNTY1YTdlYTRkOTdhMmE5N2U1IGxlZ2FjeS10cnVuaworMTI5MzQgMDc4OWUwYjU1NTg3YmIyMTgxZjNlY2Q2ZmUwY2JlNjViZjA4M2I2MCBsZWdhY3ktdHJ1bmsKKzEyOTM1IDFjYzVkMjBkMmVkODQyOTY4MWQ1Yjk2NDQ3YjEwOTVhYTVkZGNkOWMgbGVnYWN5LXRydW5rCisxMjkzNiAyYWIwZWM4NDcxODQ3NjdjMzgzMGM3ZjIzMTRlYzk1ZTk1ZDM2YTBiIGxlZ2FjeS10cnVuaworMTI5MzcgYTQ3NjgzMTU5NDhkYzMxMDdjZDBmYThjMWRmYTEwNGI0YTQ3MDM2MSBsZWdhY3ktdHJ1bmsKKzEyOTM4IDMyNDQ1MGVhNTQ1MDJiODkzNjIyMjA3OTExNmEwYjk3YmVhZWNkYjAgbGVnYWN5LXRydW5rCisxMjkzOSA3ZDNhNjBmNGUwYjQ3MzQ2ZWVhMDFhYWUwNjY1NjcyNjAxMzFiNGM5IGxlZ2FjeS10cnVuaworMTI5NDAgM2JjOGY1MzA0MWMwMTViZGFmNDgxNTg2MmNkYzZjNTYzZDRhODg2MyBsZWdhY3ktdHJ1bmsKKzEyOTQxIGVlNmZhOWI4Njg4NTRhYzEzMDc0YjFiMTYwYTZiZWVmNzFmZTJmZTcgbGVnYWN5LXRydW5rCisxMjk0MiA5Y2UxNDc0YWJkZGQ3YzM2OWQ4NGQyNmIxMGRkNDMyZTA2Y2ExYzZiIGxlZ2FjeS10cnVuaworMTI5NDMgYjk0MTQ0ZGUyZjMyYjUzZTJmZDUxODI1YmRhOTIwMDEzODlkYTZkMiBsZWdhY3ktdHJ1bmsKKzEyOTQ0IDliYTVkZmZjY2IxYmRiNDM2MzYyNzE4ZTJiYmMyOGVmMjFiMGEzNDggbGVnYWN5LXRydW5rCisxMjk0NSA5MTg0YzllMTA4Zjk3YmI2NmNlMTIzM2Y5NzM4ZjkyZGMyYjFmYTJiIGxlZ2FjeS10cnVuaworMTI5NDYgZjNhNGM0ZjQwNDQ2Nzg1ZTg1NjY4NDc3ZWQzODRmNGFhMWI5MTA5YSBsZWdhY3ktdHJ1bmsKKzEyOTQ3IDJhMTQ5ZTk0ZWY0YWMxNDVkNWQyMWU2NTIxYWNkNzcxN2YwNGEwNjMgbGVnYWN5LXRydW5rCisxMjk0OCAwMGMzN2NiNzVjMjg1NDlkMDQ5N2ViNmY0YmU4ZGIzNWU1ZDBjNzI2IGxlZ2FjeS10cnVuaworMTI5NDkgYmYyNmI3YzFlNmRlYzE5Y2E3Y2E5OTEwMmRiZWQ2MDk3M2ZiMDZjMiBsZWdhY3ktdHJ1bmsKKzEyOTUwIGQzNzYyOTMzYmZmODg5YTkwODM2ZGQ1NTMwNmQ2Y2JmZTIwNDA1MzUgbGVnYWN5LXRydW5rCisxMjk1MSA5N2EwNmVjN2M2ZjQ5YjcyM2JhNTQyMWY0MzRiNGRmNWRhMDBhN2RhIGxlZ2FjeS10cnVuaworMTI5NTIgN2ZlZjYwZjhiYzQ1NTVlNjNiNTcyOTZmMGQxZTA4Y2IwNmJkN2Y1MCBsZWdhY3ktdHJ1bmsKKzEyOTUzIDVjZmJkNDg5YTVkMzRkMDlkOWUxZjk3Y2M1NzRmNTZhMDcxOTU5NzkgbGVnYWN5LXRydW5rCisxMjk1NCAyYjFkZmMxMzk1MWRmYjYzMGFhNjZmNmZkM2MyYTI1NjdiMTEzNTRhIGxlZ2FjeS10cnVuaworMTI5NTUgYzllMTBlZDI2ZDlhYjEwMDA1ZWIwNmRjOWNmYzA1ZDU1OGM1MTk4YyBsZWdhY3ktdHJ1bmsKKzEyOTU2IDViNTRmYTc3NWU1NTBlY2Q4ZWIyMmYyYmJmOGRkMzk1NjFiYzgxMWIgbGVnYWN5LXRydW5rCisxMjk1NyBkYWQxNGZmZTFjMjJhMDZiMDVmNTk2ZjAxMzFiMDBmZjU0ZTdkOTlhIGxlZ2FjeS10cnVuaworMTI5NTggMTExNzhjOGQ2YmUyYTZjMjkzYTliYzQ1NjBlZGU0MWIyNzViNzZhOSBsZWdhY3ktdHJ1bmsKKzEyOTU5IDNmMjEzYThmYzA0ZTA2ZmRmZWFhMWI4NzI1YmZiOGUyMGU4OWNiZjQgbGVnYWN5LXRydW5rCisxMjk2MCA4MmFkYzU0ZGQzNzdjNDY0NGYzNGIwZGY5NTk4ZjBmOGY4NzIzNTdiIGxlZ2FjeS10cnVuaworMTI5NjEgNzA5MTBlMzEyNWEyNzYzMTQyZmIwOGE4OTY4MWRlZDdiMmU4NGVmZCBsZWdhY3ktdHJ1bmsKKzEyOTYyIDRjMWJiZWRhZDE0YmU2M2NkMGY0ODUzZDQ1NGUxOTM1ZDk1MDZhODQgbGVnYWN5LXRydW5rCisxMjk2MyA2Mjc4MTkxNGZhZGI4OTNjZDZhZTNmY2ExYmY3YjYzZWUzNTVlNzJkIGxlZ2FjeS10cnVuaworMTI5NjQgNGFiYzVhYmFlYzlhYjg4MGY1MTI0YTE5ZWYyN2U4M2Q4MDJhZGU1OSBsZWdhY3ktdHJ1bmsKKzEyOTY1IGE2NDY0ZWI5ODdlOGNlYWYzOWZjMWM4ZTM1MDAwYzcxMDY2NzhjZTYgbGVnYWN5LXRydW5rCisxMjk2NiA1M2MxZmFlYzFkNDY2NmE1MDY0MzUyMGI5MTYxN2M0NTc5NjljNzNlIGxlZ2FjeS10cnVuaworMTI5NjcgZjc0ZWYxOTcxYmQxMjY4MDg0ZTU2MjdkMjNkMGVmODdjYmUwOGJjZiBsZWdhY3ktdHJ1bmsKKzEyOTY4IDU4Njg4NDYyMDFlZGUyMDEzOWYwMjY3NjE3YjBkMWJiZjI1YTA5YmEgbGVnYWN5LXRydW5rCisxMjk2OSAzNmJhNGRiZmY2ODZlODUzYWIwYzRkMDYyZTY5MDBkMWY2YTM1MWM4IGxlZ2FjeS10cnVuaworMTI5NzAgMjU1YWJhYjNjNTc0MzA1MDhiZTMxZjNmNTJiMzk1NjIzNThmMzEwOSBsZWdhY3ktdHJ1bmsKKzEyOTcxIDljZDRmZDkyNmRmNjQ0OTliM2EwNGE3NzJiYzgwODAzZGVkMzVlYmMgbGVnYWN5LXRydW5rCisxMjk3MiA2MDFiNGYyZDVmYzg1MjQzYTBiYjA2YjcyOGZmOTQ4MmMxYjhlZjVkIGxlZ2FjeS10cnVuaworMTI5NzMgMDIyYjE3OGZkMGVkNTc3ODA1ZTRmMWRmNDEwNGVmMjZlZmE0YTUzOSBsZWdhY3ktdHJ1bmsKKzEyOTc0IGFjM2E0NjVlNTBhNjdiZTkxYTdlMzNjYTYxMDMwZGQxOTdmODViNTUgbGVnYWN5LXRydW5rCisxMjk3NSA0ZWU5MDAwMDVlZDg4ZTY3YWQ4YmFhNTI3MGI3MDUxNjQzOWJjMmEzIGxlZ2FjeS10cnVuaworMTI5NzYgNjNjNDYzYTg1MjkzNmVmNDAwYWFiMjEzMmFkMzVmNGRhZGZhZWFiOCBsZWdhY3ktdHJ1bmsKKzEyOTc3IGY4NTBlZjNkYTQzYWY0NGRkZTQ0NzczOWVhMDdlZTAxNzZmZDk1NDAgbGVnYWN5LXRydW5rCisxMjk3OCBjODJhODViYTFkZGVmOGU4Mjg1YmUwYTRjZGUxODExY2RlZWY4OWRhIGxlZ2FjeS10cnVuaworMTI5NzkgNTc3MDRmMGFkOWIwNWMwNzQwMTQ3MjYyNDQ2ZmRlNmRkNGYwNjgwOCBsZWdhY3ktdHJ1bmsKKzEyOTgwIDRiMTk0NjE3ODBiOTlhMGM1OTY0NzhlZTkxNGY2ZTE1OGY3YjBiOWEgbGVnYWN5LXRydW5rCisxMjk4MSAwMTI1MGI4MzIzNzRhYjJjNTZmZmFiODhiNjZkZmRmMjk3ZWE5MWQzIGxlZ2FjeS10cnVuaworMTI5ODIgZWU2MTA5NDlmOTAyMjY0ZWFjMTAzMGYyMTNiYzMyYTQ0ZWNiNGRkZiBsZWdhY3ktdHJ1bmsKKzEyOTgzIGMyNTU0YmY2MTdjMzI1NjU5NmJmNTE5MmYyZTZkMWU2M2EzOWNjZDEgbGVnYWN5LXRydW5rCisxMjk4NSBiYWU2NTBmNTdjNDE1MGJiMGM0ODE2ZWE4NzI5MzQyMjFjNTM5YWEyIGxlZ2FjeS10cnVuaworMTI5ODYgNzU2ODNmZDM5ZTkxZWE0Y2RmZTNiY2Y0ODY4NWY3NDVhNDQwOWZiOCBsZWdhY3ktdHJ1bmsKKzEyOTg3IDc0NzRhZDdlMGE0NDlhYjkxNTAyMjk1YmNhZThkNWFkNGE2OTc5MTYgbGVnYWN5LXRydW5rCisxMjk4OCA1MDBmOGVjOWRlZDE4ZDZkZDQ5ODVjZGNjZDg0YzQ2OGQ5OWRjODczIGxlZ2FjeS10cnVuaworMTI5ODkgOGQxMTVlMTExYTE3NDBlOTNlMjU2OGM5NGU2N2UyNDNjZmZlMWYwYiBsZWdhY3ktdHJ1bmsKKzEyOTkwIDMwYzk0Y2Q0OWE2ODhhNjYwOGJjZTI4Y2IyMTE2MDZhY2RhMWNmNjEgbGVnYWN5LXRydW5rCisxMjk5MSAwNWU5N2Y2YTM2MzhiMzUwZWMzOTVlMDFlYjFhNDk5NTEwNDRmYzI5IGxlZ2FjeS10cnVuaworMTI5OTIgZWNkZmNlYTEyNDM4NTZjNjI3ZDY1MDBlZmMwMjdmZjBlODAxMDlkOCBsZWdhY3ktdHJ1bmsKKzEyOTkzIDg3NDllODhhYjQwNjYwY2MxMThmNzkyYzI0OWE0NWE1NzljODUwODkgbGVnYWN5LXRydW5rCisxMjk5NCAzOTBlNGMxMDNiZTI2ODhlMGEwY2E3YWVkNWVlNjMxZDRjYzc2YjY1IGxlZ2FjeS10cnVuaworMTI5OTUgYjIzNTc5MjRhOWE5MjZjZGNmMzliNTNkOTMyMDQ3ZmMwMjM4YmZjMSBsZWdhY3ktdHJ1bmsKKzEyOTk2IDQzMDUyZDViOTgwODM0OTI2MWE3ODk2MzE1NTMwNDU1ZWQzMWFhYjkgbGVnYWN5LXRydW5rCisxMjk5NyBmNWQ3YzQ5NDVkNWY1YjRkYzkyYjEwYTllODExODIyYjA1MjhlOTNlIGxlZ2FjeS10cnVuaworMTI5OTggZTY0YzhiODRlMjRiNzk1ZmIwMGU5N2ZkMzBhNDFkN2ZhYTI0NTE4YSBsZWdhY3ktdHJ1bmsKKzEyOTk5IDI0NmIxMzQxMGEzMTdlNGQwYWNiNDI1NDRjMGIyOGI2ODViYzIwZTcgbGVnYWN5LXRydW5rCisxMzAwMCBiYTFhMjdkNzNjZGIwYTMzZmFiYzM3NjhkZmY5Y2IzOTE5Y2UxMmNiIGxlZ2FjeS10cnVuaworMTMwMDEgOGQ0MGU2YmE0YzllMjE0MTZhMjhiZTM4ZDc5OWUyZDI4MTQwOThkOCBsZWdhY3ktdHJ1bmsKKzEzMDAyIGZlODY0NWU0OTMxNDgwYzViN2U3N2Y4MmM1NTgyY2M1YzM4NzlkMjYgbGVnYWN5LXRydW5rCisxMzAwMyA5OTM5MDgyODZhYzcxNjVjYWRhMWRkYTEwYTEyZDc3MTc5NDFkYjU2IGxlZ2FjeS10cnVuaworMTMwMDQgYzBmMTQ3ZjRmMTAwZGI5OWI5OTlkNDUzN2Q3ZWQ4ZjhlN2RkYmJkNiBsZWdhY3ktdHJ1bmsKKzEzMDA1IGUwOGRhMzRjNDU4MmZlZGExZWQzZTdhNzdlN2EzNDM0YmJkNzY2YmYgbGVnYWN5LXRydW5rCisxMzAwNiBmZTg4MWY0NDZjNWQyOGZlYTk3ZWZhMTg2MjVjMjYzMTI2OGQ1ZGUxIGxlZ2FjeS10cnVuaworMTMwMDcgNTM5M2NlNTIwN2M3MDY1MTYwY2RkY2QwZGQxNDk5OGVhYThkMjJmOCBsZWdhY3ktdHJ1bmsKKzEzMDA4IDQ4Y2RkZDBjYzczMzA3ODIyMGEyMDY0YmRlY2YxZmIwZjNhMGQ5YjAgbGVnYWN5LXRydW5rCisxMzAwOSAyMGZlYmE5Njc0MzcxN2I1ZDQ1NTVlYjYzY2Y0N2FmNWViN2NkOWJiIGxlZ2FjeS10cnVuaworMTMwMTAgNDVlOTk3NWNiMDkzOTQ4NTc2MDI5MGQyZTJjZDViOWM1MmEzOGJjMCBsZWdhY3ktdHJ1bmsKKzEzMDExIDc1M2YzZjk1YzUwZjE1YzhkMmFjNTk0YjMyM2YwNDM3NjU0NDhjMDcgbGVnYWN5LXRydW5rCisxMzAxMiBkNzk5ODlhNDM1ZDkyZTMxYjcyMmJhNzA2ZWVkMDhlM2ZmNDVlYTRkIGxlZ2FjeS10cnVuaworMTMwMTMgNjViM2NmZTZlNjY2OTI3OTcxMDVjYjdhNjY2YzgwZTVkNzFmNzk1YyBsZWdhY3ktdHJ1bmsKKzEzMDE0IGMzZWRjMTRjMzg4MGEzOTRkZTMxMWFjOTcxNDc2YmQ1NDlmODk0OTMgbGVnYWN5LXRydW5rCisxMzAxNSAyMTk5ZjcwYjBlZGE3MmM4OWMwYzA4NjQyN2Q0Yjc3MTgzOTYyNmIwIGxlZ2FjeS10cnVuaworMTMwMTYgY2E0NGZmNzQ4MmM3NzVkMTZiNzc2ZDJjOTIwYzZmMTU2NWM3Y2E1NSBsZWdhY3ktdHJ1bmsKKzEzMDE3IDgxZjRhNzdlNzMzNzMwMWIzNjY1MjBkOGM5N2NmNmNiZDM0NTFiMTIgbGVnYWN5LXRydW5rCisxMzAxOCA5NmJlYWVhZDg3NGY3NmEwNzkyZGIzZWE0YTVjMDQzM2NkOTZkOGY3IGxlZ2FjeS10cnVuaworMTMwMTkgNTYxMDU0NDk3NzFhNjg0MzNiOWZhNmZkNzNmOTFhMmU4YmIwNjBhNiBsZWdhY3ktdHJ1bmsKKzEzMDIwIGQzODQ4NjhhZDQ2MjJlYmI5MGM4NjgxYTJmMTI1ZjM5Mzc0YzhjMmEgbGVnYWN5LXRydW5rCisxMzAyMSBlM2Y1OWEwNjQ3MmUzYTU2NDMzOTk3Y2M2NTkzNjBjNzRkOTlhYzZmIGxlZ2FjeS10cnVuaworMTMwMjIgOWFhNjVkNDhkZDA1MTc3NWRhMTI2YjM2NDY4NTg5YjE1ZmY5OGRhYyBsZWdhY3ktdHJ1bmsKKzEzMDIzIGIxOWYyYTk4MjAzMDVmOTI1NDQ3M2JlYjc1ZDUwM2I5M2MyZGMyODQgbGVnYWN5LXRydW5rCisxMzAyNCA3ZWUxZTMxMzQxNDczZjUxYzI0ZGUwMWU4M2ViMWI1YWY2YjFlOGI1IGxlZ2FjeS10cnVuaworMTMwMjUgZjAwNWFjNzM1ODYzNDEzYWRhZWZhNWFiMDFiNTk1OGI0M2UzYzZiNyBsZWdhY3ktdHJ1bmsKKzEzMDI2IGI1ZGVhNGM3OWQyNGUwYTBiNTYwYmY2NGE4N2EyM2U2MDcyMDA4NjcgbGVnYWN5LXRydW5rCisxMzAyNyA0NzRjNWI4MmQ3ZGU5OWY3ZWUwNDJhMGM2ZGZiZjFhMDNmMmU3ZWFiIGxlZ2FjeS10cnVuaworMTMwMjggODc4YTU0YTA2MTE3YjM5Yjk5NGI5ZTgzZGFmMzE4NzM0ZTE5YWM0OSBsZWdhY3ktdHJ1bmsKKzEzMDI5IDYxYmVjMWU1ZmE1OTNhOTc1Njc5MzQyNTFiNmFjM2JlNDc3NGUyMDAgbGVnYWN5LXRydW5rCisxMzAzMCA0MTU3ZjM4NjJhMDlkZjE3MTc0NmIxYmRiN2FlNzAzYmI0ZTM4M2MyIGxlZ2FjeS10cnVuaworMTMwMzEgM2VlZmU2YjA4NjYyZjQ1MjlhMzJmMWJlZjIwZDQ2NGFlN2E2NGNkZiBsZWdhY3ktdHJ1bmsKKzEzMDMyIGQ0Y2U5ZjFmNjI2NjZlNGQ4OGQ4YjJhY2M1ZGM0N2Q4YzdiZGZkNDUgbGVnYWN5LXRydW5rCisxMzAzMyA1NDBjODE3M2U0ZmRiZmVjYmEyNDY1NDdjN2I4MWFmOTUzOTA2MTBkIGxlZ2FjeS10cnVuaworMTMwMzQgZDgzNGVjZGY4YzI2ZTBkZjkyMzE4N2YyMGJhNDdhY2E2ZWYyZTIyMCBsZWdhY3ktdHJ1bmsKKzEzMDM1IDllYzlhYmZlYzc5NGVjMTQxZDdjZDY5YzBlNWQwNmQyMTM1ZTU1NGEgbGVnYWN5LXRydW5rCisxMzAzNiBjMDRmMDNlODJhNzU0MzgyMDgwNzczM2E2ZmY3ZWRmZDUwZDIwMzdkIGxlZ2FjeS10cnVuaworMTMwMzcgMzJiYTA5Yzg2OTE3YmI3MGY1YTQ4NjhiNjRiZDY1ZWJhNWVkZTM2NCBsZWdhY3ktdHJ1bmsKKzEzMDM4IGE0YTI2OGI3MjViMmE0NjIzNmY4MGU3ZmNjMWIzZmI2NjFiOWNlNmIgbGVnYWN5LXRydW5rCisxMzAzOSBiNjI3MjRiMDkzMDJlNzQ5Y2M1OTNmMzg1MThlMjg4MGNmZjZmOWFhIGxlZ2FjeS10cnVuaworMTMwNDAgOTM0NzE5YzI1YWY4MmVkZWYxNThlYjdlMmZjYmQxZjdkZmQ3ZTJiOSBsZWdhY3ktdHJ1bmsKKzEzMDQxIDNmZTk1YzJiMzcxMzRlYTY5NmUwZmUyZTYyMjc4MzRhMDcwNjdkMTEgbGVnYWN5LXRydW5rCisxMzA0MiBjY2VlM2MyOGI3ZWZmMWJmNWUxZDEwNzFjZWQ3NGY3NGI5MGIyYTk4IGxlZ2FjeS10cnVuaworMTMwNDMgNWY0NTRiNzA2MTU2ZWEzMWM4OGM5ZmFlNzBmYzZlMDE4YzVlNTRlYyBsZWdhY3ktdHJ1bmsKKzEzMDQ0IDBiZWI3ZDM2YzFhOTc2OTQ3MjYxMTIwOGYzNjQ0YTg3MDcxMjNkZmUgbGVnYWN5LXRydW5rCisxMzA0NSBmMjhlNmEzYjkxMzRlMTgzZWYxZjE4Y2YzYzBlNGYwZWEwMWI0YmVmIGxlZ2FjeS10cnVuaworMTMwNDYgZWRjN2IyOGQ5MDUyMTEzNmI1M2RkNDc0Mzc5YTUzMjg5ZjU2NzFhYSBsZWdhY3ktdHJ1bmsKKzEzMDQ3IDVlOWVhM2VhYjc3YzgxMDI1MzA3NzE1ZDUxNTMyZWJlZmVmM2EyZGQgbGVnYWN5LXRydW5rCisxMzA0OCAzNDAwYWExYjAwNzNmYzc4YzM2Mjg2ZDZlMjNlNDU3MDNlNzI5MmJjIGxlZ2FjeS10cnVuaworMTMwNDkgYzBhNjllY2Y5NjQ2ZjYxYTYwZWQxZjY4YjNmMzUyYzNhMDUwNDU4ZCBsZWdhY3ktdHJ1bmsKKzEzMDUwIGU2OGQ1MzdlYjUwZmVhYjc3MDVmYTIxYTQ0NzVlOGM2YmNmMmRhNWUgbGVnYWN5LXRydW5rCisxMzA1MSA1OTgwYmIwMDFmODY0ZWMwMDY2ZTRmM2ZmMDg3ZjU5ZDAwYjBkNDAxIGxlZ2FjeS10cnVuaworMTMwNTIgOGMxY2ZlOTY1ZDliMmRjMzFmMTA1M2Y0MDhhZDgzMTJmNGJjYzgzMiBsZWdhY3ktdHJ1bmsKKzEzMDUzIGFlNjFiNzBlZmRiM2E5NDhiZmE4MWM5NTk3ZDAyZjEyNjFiZWRjYzYgbGVnYWN5LXRydW5rCisxMzA1NCBjNjliZmUwZWNiZDg3MDZhMzVjNzdkZGVhYWI3YzkzNmI0YTM1ZjZmIGxlZ2FjeS10cnVuaworMTMwNTUgYWZmMDdlMDQ5YWVlZmEyYmU0MzIwOGFkMGQyNmQ3M2M0OGIzM2FkMCBsZWdhY3ktdHJ1bmsKKzEzMDU1IDM5ZmIwZGNjODNkYzM3NWMxNTY1YmE2NWRiY2UwZWQ1OWIxMzU5YzkgbGVnYWN5LXRydW5rCisxMzA1NyBhODM3YTZhZWQ4M2U2ZGUyZjM0NzcwZWI0NGIyNWQwZmY4ZjJkMGUzIGxlZ2FjeS10cnVuaworMTMwNTggMDVjZmEyOGU2NWY2MjQ1MzcyMjI0OWNiODRkOThiNGJhNDc0OGFmZiBsZWdhY3ktdHJ1bmsKKzEzMDU5IDI0M2NjNmQ5YzViOGZiZTBlZGExN2YxNTY3OWMzYTcyNGRmMTVjYWMgbGVnYWN5LXRydW5rCisxMzA2MCBlM2U1ZDc2MzY5NTg2NzljNDEzNmE5N2U4ODk2NTcxMDJmYzVlOThkIGxlZ2FjeS10cnVuaworMTMwNjEgMjg2YjJjZTY1MjQ4ODY0OTNkNTAzZWVlZDUxMzJkZmUyZDhlNzk4NyBsZWdhY3ktdHJ1bmsKKzEzMDYyIDhkMmE4YTQ5ZDk4MzkyMTIxOGJhNGEwNDE1NGE4MzJhNWMxMDU3ZDYgbGVnYWN5LXRydW5rCisxMzA2MyBhZmFhM2FhODM1Zjk4MzM3OWE3Nzg5MzU5MWI5YjNjYWIxZjQyYzE0IGxlZ2FjeS10cnVuaworMTMwNjQgOTcwZDYxYmI2YWNmOTM4M2IzNTZiZTRmMWY1ZjBhYzM0OWNhZWI2MCBsZWdhY3ktdHJ1bmsKKzEzMDY1IDNiZTA1MjViZjQ3ZjFhYzQzNjhlOTY0MmRkODViYjc1Yjc1ZmZkMjUgbGVnYWN5LXRydW5rCisxMzA2NiBhNDI4MjRjZjBiMTgxZTI4NmIyNTNkNWMwNzcyY2U1YmVmZDM5MWUwIGxlZ2FjeS10cnVuaworMTMwNjcgZjZmYzY3ZDcwNWRlYWQyYmQ0MWUwODc1MzM2MjVkMjc1NjAwYzdlOCBsZWdhY3ktdHJ1bmsKKzEzMDY4IDA0YWZjMWFjMWEwZmQ5ZmM4YjNlOThkOWJiOWE0ZDE0ZTk3MTcyZDAgbGVnYWN5LXRydW5rCisxMzA2OSAxMDRhNDQxYjJiYzhjZDkxZDUyOTAwMjcyODdlOTQ5YWY4MDQwMTAyIGxlZ2FjeS10cnVuaworMTMwNzAgN2JmM2Y0MTJlMTM3ODYxYmZjNjkxOTI3YjJhODdkMmRhY2U1Zjk0MiBsZWdhY3ktdHJ1bmsKKzEzMDcxIGRhMTVlZDMxNGUyNDI4MTQ3NjNmYTQ5YTMyOTRkYjYzNzhmMDg4ZDIgbGVnYWN5LXRydW5rCisxMzA3MiBiZmYzMzgyYzZkMmY1MWVmODhiMTY3NWI5OTlhM2JhM2E1ZDM5MzVkIGxlZ2FjeS10cnVuaworMTMwNzMgZjU4MDQ2MzM5Y2JmMzVkOWI1ZjA4OGMyNmRiZjY5Njg3YmMwYWUyZSBsZWdhY3ktdHJ1bmsKKzEzMDc0IDRlMGNjNmUwMmEwZGU5Y2M1NjZmMWYxZDYyYmNlNTJlNzc1OGE1MDYgbGVnYWN5LXRydW5rCisxMzA3NSA0YWZmMzkxNzUxMzcxZGE1Zjk1NDg1NGE5ZTdkMjJlYjNlOGUxYmJmIGxlZ2FjeS10cnVuaworMTMwNzYgMTBiZDJmYjJhMGQ2N2Q5ZDNmZWRjYmQxMGNhMzhkMDA3Yjk0YzIyOSBsZWdhY3ktdHJ1bmsKKzEzMDc3IGFmMWU4MTljMDQ0NTY5YmZhYWRkMWIyMTBlYWQzODI0OGJhY2Q4YmUgbGVnYWN5LXRydW5rCisxMzA3OCBmOTZiMjcyOTgxYmNhNjRhZDJjY2RiNzBkNTFmNTk5YjkyMTY0OGYwIGxlZ2FjeS10cnVuaworMTMwNzkgNTYxNzJlMGVmYjc1MmVjNjUzNzQ4ZjI2YjExNGRkMDUzZTI5OWQzMCBsZWdhY3ktdHJ1bmsKKzEzMDgwIDZlN2YxNGFmODliNzFmZTI0YWQ1ODFkZGIyYTZhMjliOWVmZGQ4NTYgbGVnYWN5LXRydW5rCisxMzA4MSA4ODViZTYwMTA0ZDQyMzU1MDgzMDBiYjRjYjgzMGM0ZjJjM2EzZTQ3IGxlZ2FjeS10cnVuaworMTMwODIgNjM0MmNlNGZmOTQ2NTRmMDM5ODRmYmRhZmE1YTlmNjY0YTIwYTMyYyBsZWdhY3ktdHJ1bmsKKzEzMDgzIDFlZDFlYjViYzZlYzBhZTgwNDJjMzRmNjU1ZGM0YzZkMTRmZTgxYzcgbGVnYWN5LXRydW5rCisxMzA4NCA0MzlmYzg1MzI0Y2RkMjIzNzQwNmU5OTU4NjQxNGYzM2NkNmUxZGNiIGxlZ2FjeS10cnVuaworMTMwODUgYmJiNWFmNzhhMjU5Mjg5MDhiOGZmNzBmN2RmYmIwY2Y2ZDEyYjY2MiBsZWdhY3ktdHJ1bmsKKzEzMDg2IGY3YjhmODg2YjUxYTc4YzQwYWUzMmI5MDYzMmIwYWVhYTdmNmJjNGEgbGVnYWN5LXRydW5rCisxMzA4OCA0NGRhMDM2NTFiZDAyYWQ2NGIyZmYxZDAyYzg2NTU4MDk3NzVlOGQ4IGxlZ2FjeS10cnVuaworMTMwODkgZTQxMTEwZmY4YzJmYTA3YjEzNmY0MGVjNWRiYTQxNzE0ODdmMWVlYyBsZWdhY3ktdHJ1bmsKKzEzMDkwIDcwMGRhYTc1ODQ3YTVkNGI0Mjg2MDBhMDMzNDU5YTg5MTIzNjBkYzQgbGVnYWN5LXRydW5rCisxMzA5MSA4ZGE0NmQ2YjhhZjNiMjQxODY1MmE0YjgyNGNiMzI1NDUyYTVkZjZmIGxlZ2FjeS10cnVuaworMTMwOTIgMDQwYjUyODY4ZmU4Y2UyMjY4MTU5NDZhZmMwYTk0MTI3N2QwZWVkMCBsZWdhY3ktdHJ1bmsKKzEzMDkzIDI1MWJhYTAzMmFmMGMzY2IyYTkwMDVkMzNhMmM5NDJiZjMzYzQxNDkgbGVnYWN5LXRydW5rCisxMzA5NCBjZTg2MWI0M2VmNTM1NmYwOTRhZmI3M2EzZjFjNzhiZDY3NGZiYzY1IGxlZ2FjeS10cnVuaworMTMwOTUgMDk2NWFhMmRmNWNhZDhjOGM4MGYyNDk5MDBjYWI0ZDEyOTZiZGNhZSBsZWdhY3ktdHJ1bmsKKzEzMDk2IDgzZDM4YzRhZDFkZWZiMDhlMTVmNjFjZWZmYjBkOWM3ZTNkMzQ3YTMgbGVnYWN5LXRydW5rCisxMzA5NiA2MWM5MWM3ZjEwMWJhYjMxNDlhZGZjZDU2NDZhZTQwZTA0OGRlNzEyIGxlZ2FjeS10cnVuaworMTMwOTggYzMxYjg4MGFlODRmOWQyMmIwMzU0NmViOWViNDkxZThlNzA3NDVmNiBsZWdhY3ktdHJ1bmsKKzEzMDk5IDI5YWJiN2Q5NmMyNTk1MThjMTJkYjc5M2U1ZWUxNDFlMzA1YzQ3MGMgbGVnYWN5LXRydW5rCisxMzEwMCA0ZTI2OTQxNGVlZTUzMGE2N2QxNDM4NjU4NWI4Njg5MzlkZDZlYzI5IGxlZ2FjeS10cnVuaworMTMxMDEgNjNjN2E4YWM0ZTRjZjljZDMwOGZjZTJiYTQxNWFmMjU2YWUxNTlkNyBsZWdhY3ktdHJ1bmsKKzEzMTAyIDU2NmJkODdlMDAzMmU2OTJiZGY3Zjg4M2ZkZTI1NmY2ZGJiMDAzZTkgbGVnYWN5LXRydW5rCisxMzEwMyBjODc1OWJhODM1NTJhNTZiOWY2MWMzMDAxZTY4ODlmNzE5MzhlNWJhIGxlZ2FjeS10cnVuaworMTMxMDQgODc2ZDdlNzkyMjUyYzVlMDUyMjJkMzQ0ZWZhZmNmY2Q0NGFiMjkwOSBsZWdhY3ktdHJ1bmsKKzEzMTA1IGRjZGJiMTAwMDYwZjJhOWY4YjBmYWZlOWJhNmJiNTkwOTA0ZjhhZjUgbGVnYWN5LXRydW5rCisxMzEwNiA5MGJkZjhmYTc4YTliOGViN2E4MGViZDI4ZTAzMDA2YjhlNzZjZmQ0IGxlZ2FjeS10cnVuaworMTMxMDcgMmFiOTY3Zjg0ODk1YjBkZDgyZmNmMjYyYTMyYmM2ODk5ZWQwZGQ2NyBsZWdhY3ktdHJ1bmsKKzEzMTA4IDI4YzQ0MzcyZGUzODQxZTJhMWMxM2YzNzI2MTBkMTRmYzU5ZGM0YTIgbGVnYWN5LXRydW5rCisxMzEwOSAzZGUwNDRlNjUwYTFiNjNiZWYzMzM1Njg0M2FmNTE0NTc3YjFkZjFmIGxlZ2FjeS10cnVuaworMTMxMTAgMDI3MDFiOTlmOWJhYmI5NjhhZGM1OGZlM2ZkODcxNzM4OGIxZmUxMiBsZWdhY3ktdHJ1bmsKKzEzMTExIGZlNWZjYjdlNzNmNzliZDU1MTAyMzEwNzczZmZlM2VlNjg3ZTY3MzggbGVnYWN5LXRydW5rCisxMzExMiBmY2FhYzQxZjZmM2EwMzNmYjRiYmU5ZTY4Njg0ZTFiNGMxM2Q1MmNmIGxlZ2FjeS10cnVuaworMTMxMTMgYjQ4ODlmMTA2YzNiMTgwNmRjZjc3ZDNlNzgzNmEzYmEyOWZkNGIzYSBsZWdhY3ktdHJ1bmsKKzEzMTE0IDI0MTlhNmM5ZjYyODEwNjNmOGZiZDdhZjhkMTIwMWJhZmIxYWYyYmUgbGVnYWN5LXRydW5rCisxMzExNSAzZjFlNzJjNzFiM2E1Y2JkNmY2MWVkM2U2YjdhMDgxZmI3NmU5NmMyIGxlZ2FjeS10cnVuaworMTMxMTYgNmY4Y2RjN2UyMjVjOTE3N2Y2OTQ1M2I4ZjA0ODA2ZTYzYWU5MTYwYyBsZWdhY3ktdHJ1bmsKKzEzMTE3IGY0MjVlNjBhYzcxYTQ2ZDgyYzI5ODEwYzdjMjczZGRjOWJiZDM3MmYgbGVnYWN5LXRydW5rCisxMzExOCBmNjE0ZjVjZjJkZWM5ZTNkYzg0ZjdlZDc2MWZhNjQyYmEzMTQyMGM4IGxlZ2FjeS10cnVuaworMTMxMTkgYTA3N2U1ZGE1ZmE1NzMwYTBhODZhNTNkMjk1OGE4ZjdlZGFjZGZlMyBsZWdhY3ktdHJ1bmsKKzEzMTIwIDU2OGU5NDcyN2EwY2M4ZDlmYmJlOGNmM2FjNzc4NzNjOTcwNWEwMjggbGVnYWN5LXRydW5rCisxMzEyMSBhNmI5ZDQ1MDAzMTc1Mjg5MDgwYzMwYzQxNGJkNzcyNTVmOTE5MmViIGxlZ2FjeS10cnVuaworMTMxMjIgMDEyZDM2MWZkZjIzYThhMzQ3YzMwMThmMjhmM2I1MzdhZGQ1NTgwZSBsZWdhY3ktdHJ1bmsKKzEzMTIzIGY3ZTliYzhkYTEzZDIxNjMzZWFhNDJmMjE0YTc4Y2NkY2NlM2UxODQgbGVnYWN5LXRydW5rCisxMzEyNCBmYTQ2ODVmZDVhZGZmMTM0NDhiY2U0ZGFhNWQxNTM5ZmY5NmJmM2I3IGxlZ2FjeS10cnVuaworMTMxMjUgODkxZDA4OWFiYTQxMmJhNjA5NWRhZTlhMGVjOGU1MDZkYWVhMWZjOSBsZWdhY3ktdHJ1bmsKKzEzMTI2IDViMTcwZjBkYTlmZWJkOTkyMmMzZDQ1ZWVlMzliYzBiZTk1NzFhYzUgbGVnYWN5LXRydW5rCisxMzEyNyBkZGNlZGRlZjU4YTFjNzFhN2NlY2ExOGVlNGY1MWYyOTVlOGJiOGRkIGxlZ2FjeS10cnVuaworMTMxMjggODRkNGYxNzI2NjlhNmZkMzdkMzFlY2JmZTJlNjYwYzNmMDkwNjg5OSBsZWdhY3ktdHJ1bmsKKzEzMTI5IDM0ZmQyNTI0MjczMTlmMjMxMTNlYTMzZmE4NjFjNjEyNjIzZTI0ODMgbGVnYWN5LXRydW5rCisxMzEzMCBhZDU1YmRiYTVkZmZlZDhjYTIwYjQ2MjA4MWE0ODhkMWM3MWQ3NDNlIGxlZ2FjeS10cnVuaworMTMxMzEgMzdkZDhiOGIxZDg0MDM5YTI4ZWI0YmM3YTNlZWIxZjNmMDI2YWJiZSBsZWdhY3ktdHJ1bmsKKzEzMTMyIDc1ZjEyODcxZWVlYTdiNWM5MmQxYTUzNGNiNGM3NTdhYTllMDk2ZGMgbGVnYWN5LXRydW5rCisxMzEzMyAxOGM3NGQ2YmNhZTg4MDc0MTQ0MTVmYWE5ZTIzODEzNjliODc2NzNlIGxlZ2FjeS10cnVuaworMTMxMzQgMWJkZWExN2JjNDcxZjI1ZjdhOTc3MTQ3OTljYWQwYzVkODllY2EyMyBsZWdhY3ktdHJ1bmsKKzEzMTM1IGQ3MTk3YjMyZmJmZWExZWNjMTlkNjhiNGYzNDEwYTEwZmNmYWRhNGMgbGVnYWN5LXRydW5rCisxMzEzNiA2NDcyNzI4ZGYyZDBjZjJkNjQyMzYwNjI4NzFmNTJlM2YxODRlODU3IGxlZ2FjeS10cnVuaworMTMxMzcgNDZhNzA4YjBjYTM4ZjAxMDY5YzI4NTMyODRmYTJkYWZjOTMyNDRmOCBsZWdhY3ktdHJ1bmsKKzEzMTM4IGFhNGVjYjcxNmU2ZTFjOGE2YzY5ZjI0YWYwNDljZGVmMmEwZTJjMmYgbGVnYWN5LXRydW5rCisxMzEzOSBlMjY0MzkyZTE1MzYxZjk1Njk3MmJjNDNiMDNlNWQyNGMzMTQwZmNjIGxlZ2FjeS10cnVuaworMTMxNDAgM2MyNTkzNzBhYzU3YWIxZWE1NDBkYWM1ZmY0NGQyMDg2NWMxZGIyMyBsZWdhY3ktdHJ1bmsKKzEzMTQxIDlmZDI5MDIxZDE0N2VhYzlkMjZjY2YyZDc4M2QyZDMzODI5MTVjMTQgbGVnYWN5LXRydW5rCisxMzE0MiBiZWQxNWEwMTVjMWMzOTRlYzliODZmNDExOTdiYTYxMTE3ODcyOTMxIGxlZ2FjeS10cnVuaworMTMxNDMgZGY4YTFjMjgxYWQ3ZDc0ZDQ4OThjY2FlYzYwZjJlMzRkN2YyNjY3MyBsZWdhY3ktdHJ1bmsKKzEzMTQ0IDM2MDQ5NGMyNWUwZTVhOWQ4MDJkZjg1M2NmNDEwN2JkZjlhZTE2N2IgbGVnYWN5LXRydW5rCisxMzE0NSBlYWNhMzc3NWI0MjVkN2JkMzg0NmZmNjRiNGUzZTJjOTI5ZDMxYzJlIGxlZ2FjeS10cnVuaworMTMxNDYgZjZlYzRhOWNiMGIzOTNmZDIzN2JhNjc0ZGVlOTA1Y2MyZjVmYzhiMSBsZWdhY3ktdHJ1bmsKKzEzMTQ3IDYzNzJjMmE0ZDQ3YmQ4MTRkYjJiZWEyMTUzY2ZkYmQ5ZDBlMTRiNGEgbGVnYWN5LXRydW5rCisxMzE0OCBlM2EwODk4M2NkMjUxZjhlZmU3MjMxZjUwYjEzMWI1NTRhZmZlNjE3IGxlZ2FjeS10cnVuaworMTMxNDkgY2Y2MmFmZjEwNDY4N2E0YjNjNDE0MzlkYTNjOGYzNTVkNWZjMTFkZSBsZWdhY3ktdHJ1bmsKKzEzMTUwIDQ2Nzg4ZjE2NjUwYjA3YjgwNDI5MTBhNjQ0NWZkMzNmNzBlMWEzNmQgbGVnYWN5LXRydW5rCisxMzE1MSBlMDlmMTk0NDExMzZjYTM5ZDY3NjA1NmY2OTZhMDMxZWQzNzQyNjg5IGxlZ2FjeS10cnVuaworMTMxNTIgYzc0NzBiMTRkZWM3YzNkZjA4MWMxNjEzNGY0M2ZlM2IwYjExZDM0OSBsZWdhY3ktdHJ1bmsKKzEzMTUzIDQ4YzMzZDA1MzY3ZjJhNWU4MjUxMDVkNjA0NjJlNDIyZmY4Mjg0OGIgbGVnYWN5LXRydW5rCisxMzE1NCA0MzY5NGQzNTM0NDIxOWJjOTUyYmUxODIyYWRiM2U3ZmVhZWM1YzNlIGxlZ2FjeS10cnVuaworMTMxNTUgYzk5ZTY4N2QxYWM0YWM2NTFhMzQzYTVhNGYyMDgzMGRhMWM3NjNjMyBsZWdhY3ktdHJ1bmsKKzEzMTU2IDhiMzhjZTQyMjgzZWNiY2ZkNWUzY2Y2MWNhNTMwMTVjNTUzMjkyMWUgbGVnYWN5LXRydW5rCisxMzE1NyA2YzI2NTExM2U3ZThjNmZhNzFhNzEwZTI5ZDQzOGJmNWQ2YzBjYzUxIGxlZ2FjeS10cnVuaworMTMxNTggNDJkYmZkNDk4Mzg3NjczMmRkNmEzMjNlYjBiNjU3OGVlMDhiYThkMiBsZWdhY3ktdHJ1bmsKKzEzMTU5IDk4ODNlMzBhY2FjNTkyODg2MzBjNDg3NjZjM2I4ODJkZDJkMmRiZjkgbGVnYWN5LXRydW5rCisxMzE2MCAyOTliZjUzZTY4NjE2ZWZiZmE4NGU5MWNjMzM5ZjAyNWFjY2VhMTBmIGxlZ2FjeS10cnVuaworMTMxNjEgOGU3MmZjNTdmNTVmZDQzMWY0YjNmMDkzODc5NmI2MmU2ZjBmYjA0MyBsZWdhY3ktdHJ1bmsKKzEzMTYyIGQyMDNjYjllY2UzNzI3N2RmMTVhMTYwMzU0NjI0YjdlNDZhNDEyYmUgbGVnYWN5LXRydW5rCisxMzE2MyA5OTY4MWVlODY2OTgyZDA2NGQ4ZDkyNmMzN2U3ZmJkOTYwMTAxOTg1IGxlZ2FjeS10cnVuaworMTMxNjQgNjlmYjgxZmFjYjAzNzg0YzUwNTAxYTE2MTNkOTNhMWVmY2U4MWIxMSBsZWdhY3ktdHJ1bmsKKzEzMTY1IDk1YWMxYzhjMDg1ZTU0Y2UyYzc5ZjY1NzNjMjlkODllOTRlNWJkY2QgbGVnYWN5LXRydW5rCisxMzE2NiBhNzFjNjM2Yjg1ZDE0YTM3MzBmYjJiMTYwZGRiZjg2YzQ0YmYxZTJiIGxlZ2FjeS10cnVuaworMTMxNjcgYWIwMjMzNDQ1M2Y5NmQ0NzAyZWZlZDRhYjQzMmI0NmRkNzQyOTJkYiBsZWdhY3ktdHJ1bmsKKzEzMTY4IDM3YTIyMzZkNDcyZjJmNGYxNTk3N2ZhNjYzNjQxMzBiOTMwMDNmYTMgbGVnYWN5LXRydW5rCisxMzE2OSA5MzM3MzIwMjZlOWNkNDlkODdjMGQ4NDhmMGRlYWIzZmQwNjE4ZTEyIGxlZ2FjeS10cnVuaworMTMxNzAgN2QwNWJiM2UxMzVmNjI3NzY3MWUyNzZiMzE2YTk5ZDE2ODEzZGExYyBsZWdhY3ktdHJ1bmsKKzEzMTcxIGJlYmU5ODMwYjMzY2RhMTk2YjY1MzYxYmZhMmE1YzY4Y2ZlNWUzYjUgbGVnYWN5LXRydW5rCisxMzE3MiAwMmViNzQ3NDkyNjJlNTViNWYzMmMxMjgwYWFiN2RkODQxY2JiZTQyIGxlZ2FjeS10cnVuaworMTMxNzMgOGM2ZmZlNjcwOTYzYjAxZWM5NGUyZTQyZDRiMWMzYWE1YWIwOTA4ZCBsZWdhY3ktdHJ1bmsKKzEzMTc0IGUwNWY2YmRjOGI1MjA0NWMzNWFlOTlkMDNkYTQ3MGZlYjIwZWY2ODEgbGVnYWN5LXRydW5rCisxMzE3NSA4YzBhNjBmYjZhY2Y2OWNkNTY1OWEwMjg5ZDMzN2M1MDFjM2QxOTNjIGxlZ2FjeS10cnVuaworMTMxNzYgNzk4NjU1NTU2NDU2NTUwZGJlZDI0ZTRlZDgxOGFjY2QxZTk5NjZmMyBsZWdhY3ktdHJ1bmsKKzEzMTc3IGY2MDYyZTU5MjM4ZjNlMzVlYTAwZDVjMmE3Y2M5M2NkMGVjOTc4NGEgbGVnYWN5LXRydW5rCisxMzE3OCBlMmExYzhkMjMzZGY3MTkyMDcyNzI0OThjOWIwMzI0YjRhZWU4Y2ZhIGxlZ2FjeS10cnVuaworMTMxNzkgYjI2MDZhOGZjYWFiYTk2N2RiMzM0M2M3Mjc4ZWU1NzI4ZDAzNzhhOSBsZWdhY3ktdHJ1bmsKKzEzMTgwIGVlODYxZDdiYzBlOTMwY2ZjNzhhMzNmYjY5NjIxZTg1OTcxN2JhMmQgbGVnYWN5LXRydW5rCisxMzE4MSA1OGRkZWUxMjU2ZTk1NDA1ZTc3MzMyZjY4ZjJjOGU0MTNkNjRjMzhiIGxlZ2FjeS10cnVuaworMTMxODIgOWU0YzU3M2VhNDliYTZiMzJjYTYxMWQ2YmJmNzIwN2UwYzI0ZGQzNiBsZWdhY3ktdHJ1bmsKKzEzMTgzIDE5YjQ4NzAwYWNkYmJmNzRkYTMwZWQ3YmYxYzljNzM2YmEwZjA3Y2UgbGVnYWN5LXRydW5rCisxMzE4NCA0Y2I4NDk0YWJhNjIwZWYyN2VlYWE2MTRkNTI5ZDMyYWVlOTU1NTA5IGxlZ2FjeS10cnVuaworMTMxODUgYWUxOGU4ZWViZTA0ZGE4ZDRmNGFkOTAzMDAxYzVlMWYwMjJlNTAyNCBsZWdhY3ktdHJ1bmsKKzEzMTg2IDYzM2QyZjdhMWU0ODgwNWMwYThhNDhhMWVjYTZlNTMxMTgwODUxZmUgbGVnYWN5LXRydW5rCisxMzE4NyA3MTM3NDAwMDM3ZTAxNTkwMTU0Y2E2ZDY1MDZmN2VmYWE1ZDE4Nzk1IGxlZ2FjeS10cnVuaworMTMxODggM2JiMDI5YzZkZDM3ODIyYTA5ZGMzZWU5ODJkYmI3MWQ5N2I1N2IyNCBsZWdhY3ktdHJ1bmsKKzEzMTg5IGY2NzExOTVhZjAyMGVkOGRiNDgzYjlmY2U5M2RiYWI3N2RkOWQwN2EgbGVnYWN5LXRydW5rCisxMzE5MCA4NWNmNDc2NjU3YzVkZTYxOTg0ZTVkNWZmMGJkNDc2NWUxYTc4MDg0IGxlZ2FjeS10cnVuaworMTMxOTEgYWUwMzA2YWFhNjg4ZTExYmU1ZDhkMjJkMzQ3ZGIwYTA0MGI1YTJlMSBsZWdhY3ktdHJ1bmsKKzEzMTkyIDNiODc2MmI4YzE0MGQwMTZjZTQ1MjU4ODdlYmQxYTIyYzE0ZWUxNzggbGVnYWN5LXRydW5rCisxMzE5MyA5MjFmZjM4NWYyNTZhMThhYzI3MTgwMmMwZmRjN2RlYzBlZjFmZTQzIGxlZ2FjeS10cnVuaworMTMxOTQgOWI3ZDhlYzliOTEwYzMyMjRiOWM0ODg3OWM2Mjk2YzI1MmU1ZDBhYSBsZWdhY3ktdHJ1bmsKKzEzMTk1IGE5ZDYxM2FiNWE3NjVlMzM1MTllMDUxNDg2ZGQ0N2FhMzY5NmRjYTEgbGVnYWN5LXRydW5rCisxMzE5NiBhYjEyYzYzMWQ3MzVkNDhmZjdjMGM2MmUwYWRkNmZlYTBjYzNkNTJhIGxlZ2FjeS10cnVuaworMTMxOTcgZDMwY2NiMDBiZDdiODBiNTgzNzRiMDFiMmY3YjJiOWNkZjFiMTI3NyBsZWdhY3ktdHJ1bmsKKzEzMTk4IDllMDQwMmVlMzgxMjA2ODk3NzE5NmFjNjI5NzZiN2Y4MzM1NDIzMjIgbGVnYWN5LXRydW5rCisxMzE5OSAyNWNjN2YwZDQ1ZjM4ZGFkYzg5YzJlY2FmYTE0MTk3OTZjMmNhZDc4IGxlZ2FjeS10cnVuaworMTMyMDAgMGI4YmE5MzUxYTA2MzUxNjg0YjM1ZDAzNTNkOGFkY2E1M2JmM2Q5OSBsZWdhY3ktdHJ1bmsKKzEzMjAxIGU3MDM5NzlmZjVlNzQ2OTI4Yjg2NGE1NDA2NzNiZGExNTJjNTZjMWMgbGVnYWN5LXRydW5rCisxMzIwMiA2N2E0YWNlZDBkODhlNTNhODNjMGI5ZDcwNzdhM2MzOGI4MmE3NjViIGxlZ2FjeS10cnVuaworMTMyMDMgNDgyMjYxN2IzOWYxNGE3Mzc3OWM1OTE1OWI2ZWRiMjhhZGI5ZDI5ZCBsZWdhY3ktdHJ1bmsKKzEzMjA0IGFiYTFjZDBkMTNlYWZiZDQ1NjlmNmUwMGIyZmQyMjE5ZDUyYWM0NzUgbGVnYWN5LXRydW5rCisxMzIwNSA4MWY1MTEwNWY0Mjg4ZDIzYmVjZTU3M2IyNjkwNTBmZDg4ODBmNWIwIGxlZ2FjeS10cnVuaworMTMyMDYgMzQ2ZTlhMGYwZjhjN2NlNmE2OTBlYmVlNDY5NmZhNTNhYWZkZDViNyBsZWdhY3ktdHJ1bmsKKzEzMjA3IGM5MDNlY2VjYmE2NjliYjMwZjBmNzE2MDVhOGI5OGYwYjI4ZDhjYWIgbGVnYWN5LXRydW5rCisxMzIwOCBlNGU4MDBhNzhkOGRkMjc5OTQ5YTVjM2FhYzI0NmExZTU1YWUzOWIyIGxlZ2FjeS10cnVuaworMTMyMDkgNThiMTkxYmFkYjlhOGI1ZTAzYjUwZGJjYzZjODJlZjczOTVhNmQzMiBsZWdhY3ktdHJ1bmsKKzEzMjEwIDQ3ODhmZDA3MGEzMGIzZTFkMTRmNDVlOGEzODIwOTk4ODQxNjdjNTMgbGVnYWN5LXRydW5rCisxMzIxMSA4NTExZWZlYzczMDljN2UzNTQ2Y2ZmYjkzNWUyYTBmYjE2ZjlkNTE5IGxlZ2FjeS10cnVuaworMTMyMTIgY2FkN2I1NWEzNjNmZjU0NjNjODA1ZTc3ZGQ4Y2QwZjA2NDNhODJhNCBsZWdhY3ktdHJ1bmsKKzEzMjEzIGIyYWFlNzE5ODcyMzg2Nzk1ZjNiMTIzZWZlNjM0Y2E0ZjY2NGNjZDUgbGVnYWN5LXRydW5rCisxMzIxNCAxNGY2ZTBkYzk2MjI5ZmNlMWQyZDA5YmFlOTcwOGVmYjNlMzFmNjQ0IGxlZ2FjeS10cnVuaworMTMyMTUgZDhiMmY4MmYzM2VkMmRkZTQxNTA4M2FhOGJhMTEzZWMzZjQwYTRhYiBsZWdhY3ktdHJ1bmsKKzEzMjE2IGNkMDFiYTEwYTk2MmMwOWZjNDUyYzhhYjBkNzJhZGY5MzQxYzFkYjAgbGVnYWN5LXRydW5rCisxMzIxNyA0OTBlYzBjNDBjYzYwMGNjN2YwYjA1NTAxMTMzNTk1MGVlZDZiNTUwIGxlZ2FjeS10cnVuaworMTMyMTggY2ZkMDkzMmE1M2U0OTFmODNhZjI0NzkyMzY0MTBmNTI4ODgzOWE4ZCBsZWdhY3ktdHJ1bmsKKzEzMjE5IDc2NjhiY2RlOWMwYWQ2NDA4NzIxMjhjYjcwYzVlYjg4NWEzNjZhMjcgbGVnYWN5LXRydW5rCisxMzIyMCA2NzEyMWEyYzYyYmY5MzE0Y2QxZDlhNGRkOTRiY2M4ZGQ5OTk2ZDBlIGxlZ2FjeS10cnVuaworMTMyMjEgYmFmNjZkNmUxYmMxNmQyMWZmMDEyNzIyZjllM2VlZDU3YzBiODQ5MiBsZWdhY3ktdHJ1bmsKKzEzMjIyIDgwZDQ4ODVlZGQ2NjQwOGFlMmFiZjljOGZjMzNjMWNiOTBhNzY4OWYgbGVnYWN5LXRydW5rCisxMzIyMyBmZTFlOTgxOTBhZjZlZTgzYTNkNDUyNDU0ZGNiY2ZjNTI5MjFhMzY3IGxlZ2FjeS10cnVuaworMTMyMjQgZjA5NTA3N2QyMGIwMmUyZjU3Yzg2ZDUwZGM2NGRmNTFkOGRmYjg5ZSBsZWdhY3ktdHJ1bmsKKzEzMjI1IGU5OTViY2M0Y2M4MjI0YzhlODc5MTNjOGQ3NmMwMDk0ZTE3ZDA4ZjAgbGVnYWN5LXRydW5rCisxMzIyNiA5ZjY5NWE1NDk4NjU0OGM5NzRkOTI1NzdjODlkN2M2OTU4ZDZhODdkIGxlZ2FjeS10cnVuaworMTMyMjcgZjMzNWZhMWQ2ZTcxNWVhOGMzM2Y5YWMzZmI0NTdlNjQ5MGQzYTJhYSBsZWdhY3ktdHJ1bmsKKzEzMjI4IDQ4MDM3ZjQ4MTRiMTEwYzBjMTQ1ODE4OTg5Y2FhMDcxMmE2NGIzYmYgbGVnYWN5LXRydW5rCisxMzIyOSBmM2M3ZmY3YTZlODFhYjU2NDI1OGIyMWVjMDA1ZjdhNjA2NTJkNzg4IGxlZ2FjeS10cnVuaworMTMyMzAgYjZkMWEzMmFlZDc2MzhiZWI3ODMzZTZmYTQwMThiOTM0NThlMjA5MiBsZWdhY3ktdHJ1bmsKKzEzMjMxIDhkZTdkOTBiMGIzNGZlNGVkZDM2Yjk2ZjNlODg0MTg4NWMxNTJkM2IgbGVnYWN5LXRydW5rCisxMzIzMiA5ZTVkZjRjNDlhNTY3NTRkZmNhOWNjNDE3Zjg4YjRhZTRhZjVhZDZjIGxlZ2FjeS10cnVuaworMTMyMzMgZWVhMWFiMDI4ZjQzMWVjYzZkZWY4ODI4ZDMxMDkwNzA1N2E3YjVjOCBsZWdhY3ktdHJ1bmsKKzEzMjM0IGYzODc2OTMwODQzODYyZTFjODdkOWNiYmFhNjYyYjk5MmUzOTMwNGYgbGVnYWN5LXRydW5rCisxMzIzNSBjNWY0NDlhYTQzNDU5MjE0MTU5ZDU1NGMxMWEwMzExZmE1MTQxOTUyIGxlZ2FjeS10cnVuaworMTMyMzYgMjQ3NWMzY2ZlODM5MDMyNmU4ODJjMmQzOTY5YmM5YzQyMGY3ZGMzYiBsZWdhY3ktdHJ1bmsKKzEzMjM3IGUwNzUyNzJmNDNmMjY1Njg4ZjllZWNhNTEwYTExZGU1YmU3MjZjZmYgbGVnYWN5LXRydW5rCisxMzIzOCA2MTA1MWZkNjVhYWIwODEwNWE5NTc3OWIyMWNmNGM4Mjg4ZWNiZTQ5IGxlZ2FjeS10cnVuaworMTMyMzkgMjY2NjRkMDc5NTk3OTk1OTJiYmZhYWQwOTUyNjVkYmVjOTAyNzk5ZCBsZWdhY3ktdHJ1bmsKKzEzMjQwIDc0NDJjY2VkZDVmZDNjMDJiOTFjMzI3YTNhMDE2ZDMxYzI5NmE2MWYgbGVnYWN5LXRydW5rCisxMzI0MSBlYzY2NDI1NGVmNWFhYTllMWMzNzc0ZmVmZTNhMmZkOTMzOTQwNmM0IGxlZ2FjeS10cnVuaworMTMyNDIgMjczNzFiNmQ3MGMxMTFkNmE2YzE1YjcyNjVhNWNmNzkyZTlmYTA2NiBsZWdhY3ktdHJ1bmsKKzEzMjQzIGRmMTU0ZGExOGYwZWEwZGZjMWVkZjdkYjIwNzMzN2ZlNjRhZGYxM2UgbGVnYWN5LXRydW5rCisxMzI0NCBlNGVlOGVhNGU4MzY4ZDJmM2RhNDE4YTIzNjI3ODRkZjM2ZjFhY2Y3IGxlZ2FjeS10cnVuaworMTMyNDUgMDNlNzRjNGIxODljOWRhNTQ5ZjJjNTA5MGUxMDlkNTM4Zjk0OTE0YSBsZWdhY3ktdHJ1bmsKKzEzMjQ2IDA5YzZiMmNlYmVlOWM2MWU4NjVhMjdjYzAyMmI0OTYyNDc3NjA4NWIgbGVnYWN5LXRydW5rCisxMzI0NyA2NzZkZThhN2EzY2JkMjVhMGZkOWZmZWRmYTNlMWQyYzE4ZTkzZGFmIGxlZ2FjeS10cnVuaworMTMyNDggODU1ODg3YTJjYzYwMTdjNmQ4YTc5NmY4MzIwMGNhMTA2YjQzMWYyNyBsZWdhY3ktdHJ1bmsKKzEzMjQ5IDRjOWRlNmZkMjY3YjkzZmFjYmNjMTJjYjg0NWE1OGU2ZTM1ZWE5NjMgbGVnYWN5LXRydW5rCisxMzI1MCAzZTViMDUwMzVlYjk4NDI5ZTZhZmRkM2UzNTBiYmQwMzVlY2I3ZmQ5IGxlZ2FjeS10cnVuaworMTMyNTEgNGRiMzY5MWI5Yzg3MTVmY2JmOGQ4NDU3YjQxMzA5NjZjYTc2Y2E4ZiBsZWdhY3ktdHJ1bmsKKzEzMjUyIGU3ZWJjZmRlM2I1ZTQyNzFhYzYxZGNkNzdlMzdlMThmMTc5ZjRlYTEgbGVnYWN5LXRydW5rCisxMzI1MyBmMGE2MTllZWJlOWEyYTI3MzMxZTVkNzEyZTEyYWJkYzBmOGIzMjk0IGxlZ2FjeS10cnVuaworMTMyNTQgYTBkNGE5NTdmZDkxYzExZjA3YWE1ZTY3NTBlZTFmYWMwMjg3YTIyYyBsZWdhY3ktdHJ1bmsKKzEzMjU1IDhmMzY2NWJiOWUzZTBjODEyZGFmMTczNDgwNTE4ZDhhOTNmMThjMGYgbGVnYWN5LXRydW5rCisxMzI1NiA4ZWRiZDVhYjYyMTc1NzBiZWFkYjAxYmVmMmYxMWJlNjFjNzcwZGIxIGxlZ2FjeS10cnVuaworMTMyNTcgOGVlZjZmNjc1Njc3YzU3YzBkNDk4OWMzMmI1NmU3MzgzYTZiN2I5YyBsZWdhY3ktdHJ1bmsKKzEzMjU4IDgxZjU0YzAwZTIyNGZlNWIxZGZjNDlhODE1YzdkZmNiYjNkNzhlOTYgbGVnYWN5LXRydW5rCisxMzI1OSBjZGU5YjJlNjRjMDA5N2UxOTA5NGM3ZTg1N2ViZjkyMjBjNWU3ODM1IGxlZ2FjeS10cnVuaworMTMyNjAgYmZhMGM3NDMzNDdhOWRjYzkyMmYxYThlN2M3YWVkZjEyYWRhODg5NyBsZWdhY3ktdHJ1bmsKKzEzMjYxIGYxYjJiYjUzNWViMzYzYzQwOTEyOGNmYzFiODhkZDQ3MTc5MWEwMWIgbGVnYWN5LXRydW5rCisxMzI2MiAzYzRkYjZjNmU5NzkzY2ZmNjFhM2U0MzQ0NjhhMGRiNDgzYmU4ODQwIGxlZ2FjeS10cnVuaworMTMyNjMgZWNlMDk4ZjNlMWRjOGVkMGI0ZWE0OWExMDBhZGM5OWNlZDgyZDEwYSBsZWdhY3ktdHJ1bmsKKzEzMjY0IGFhYTVmOThjYjJkNmQ5YzVlZTViYTg2MWYzYmZlZTIzNGNhZmU2MWQgbGVnYWN5LXRydW5rCisxMzI2NSA2YTM4ZTY2N2QzNDk4MDhjYTNkMWRkODIxYTVlZTc5MjUzYjlkYTljIGxlZ2FjeS10cnVuaworMTMyNjYgMDVkNzAzMDE1ZGUxNTRmOWJlZDk1YjkzYTgxYjc2OGI1Y2Q0MzdjZiBsZWdhY3ktdHJ1bmsKKzEzMjY3IDM5M2E2ZGFmMjg5ZGUzODk0YzY1ZjliMDU4Y2VhZjU2NDM2Zjk1MzAgbGVnYWN5LXRydW5rCisxMzI2OCAxNTBhYzBkNzA5MjkyMjQ5NGFmMjY4YjY2NGNkOTEzYmExNGQwMjEyIGxlZ2FjeS10cnVuaworMTMyNjkgOTJhOTJkZTk1OWI5ZTI0YmRmOWIyZTMzNjk1YTM4YjZkMzhlZjE1YyBsZWdhY3ktdHJ1bmsKKzEzMjcwIDNmMGE2YjE1NjllN2U2ZWE4ZTcxYjNmODQ4OTk5MzBhZWQ5ZjYzNjAgbGVnYWN5LXRydW5rCisxMzI3MSBkYmNhNDcwYWY4ZjI0ODcxOTM0OWM2OTBlMzAxNGJhNTU0ZDRhNGJmIGxlZ2FjeS10cnVuaworMTMyNzIgZTM3MDc0YjZlNzhjZjRhYjcxYTFjOGY1ZWRhNDUwYzI3MDQ3MTdhYSBsZWdhY3ktdHJ1bmsKKzEzMjczIGM2YTRlNDZmMWIwOWRkZTMyNTA3NTM3YjIyYzY1MjE2NzM1ZWYzYTggbGVnYWN5LXRydW5rCisxMzI3NCAxYWY3YTE0NjcwODgzOGFlMGYwODRhNGVlZjc3NTg0NjgwZmE2OWNlIGxlZ2FjeS10cnVuaworMTMyNzUgZmIxNzMzYjZiZWY1ZWFjMGViM2M5NTA3NDMyNmFiYjUxNjMxYzYzMSBsZWdhY3ktdHJ1bmsKKzEzMjc2IDJmNmIxMjc2ZTVkYzY0MjlmYTQ0MjQ1NzkzZTc4YmYxYWM2MzMwYTkgbGVnYWN5LXRydW5rCisxMzI3NyA0NDI0ODNmNDUzNDU1ODVhNzJiYjIzOTY0NjEyZWE0MTEzMjFiY2RkIGxlZ2FjeS10cnVuaworMTMyNzggMmIwMTY2ZDIyNTUxM2U0ZDQzNWZiNTgyNDIwNGYwNzUzZjBhNjI3ZiBsZWdhY3ktdHJ1bmsKKzEzMjc5IDFkN2ViYmYxZjBmMjc1NTA4OTU0ZjVkNDA0MWM4ODc0NzRjYzExNzggbGVnYWN5LXRydW5rCisxMzI4MCBlMGU5M2U0MTY2Y2UyZDUwODI4YmUzNjU4MzM4MDc3OGJkM2JkODRjIGxlZ2FjeS10cnVuaworMTMyODEgYzFjNzBiNzQzZGYyZTc4Yjk4N2Y2OGJiZDcxMTg0OWM2NGU3MmY5MyBsZWdhY3ktdHJ1bmsKKzEzMjgyIDk2NjU5NGM2YjFlMjU2YWRhNTFjMWZlNTc0NGYyYTUwMzYwYzdkNTQgbGVnYWN5LXRydW5rCisxMzI4MyBiNzA4OTZlYjg5NDQwZTkwN2QxMDUwYWFiNjY0OGU2MzQ2YzFhYjBkIGxlZ2FjeS10cnVuaworMTMyODQgOWYwZjFkOGU2ZWJhZjdlNzNmOTFiNjU5MDEwYzVhYzA5N2ZhNDhmMyBsZWdhY3ktdHJ1bmsKKzEzMjg1IGIzOWZlNTEyOTliZTlkYWU5NGQ4NWQ0NjVmYjNjZTQ1NmI5YThjYWYgbGVnYWN5LXRydW5rCisxMzI4NiA0NzliNGQxYzBiNDcyODVkZjY2YWNiNjI3MDRmYTZkNzcwYmYwMWRhIGxlZ2FjeS10cnVuaworMTMyODcgNTRhMzBkNmIwMWYxMDhhODA1NDA4ZTM1MjIxMDBlNjY3MDg1NjVkNyBsZWdhY3ktdHJ1bmsKKzEzMjg4IGMzOWMxNDBiMDRiY2M5Y2YzYTAzMzJjZDdhZjlkMjMyMDViZTI0YmYgbGVnYWN5LXRydW5rCisxMzI4OSAzMmU3OGM5ZmI0OTZjMzg4ZGQwM2ExYmQ0Y2I5N2JmYTY0ZmFhMjNlIGxlZ2FjeS10cnVuaworMTMyOTAgNWRiMmMwNDI3Y2FkMzRhNDk5YzI5ZTg2NTAxNTJmNzhiN2ZlYWU1ZCBsZWdhY3ktdHJ1bmsKKzEzMjkxIGEzNGQ2NjU2ZjhlMmRkZmE5MmY3YzQyNzFhYzg2YzNjNDQ3ZmViN2EgbGVnYWN5LXRydW5rCisxMzI5MiAxYmZhYTUzNzRkZjk5NzU4YjE0YTkxMWZhNmUzYTJkOGIyN2I3MDI1IGxlZ2FjeS10cnVuaworMTMyOTMgMzM1YjRjMDJmMTBkZjBkOTAwYmE0NDM2MzM5MGFlN2M3MTIyYzk5ZiBsZWdhY3ktdHJ1bmsKKzEzMjk0IDc2NzM1MWY0OTQ0YWJhZGU0MWMxZTVmMGRlMmI0N2I2ZDUxZDUwYjAgbGVnYWN5LXRydW5rCisxMzI5NSAxMDViZWVkMDY4ZjhlNjJkMjczYjNkZDVmMWViMDY4ZGQyZDMzZDVlIGxlZ2FjeS10cnVuaworMTMyOTYgMmQzNmYwNjg5YjhhM2UwNTU5YjdlYmEzNDUzMTVmYmMyNmQzNDRkZiBsZWdhY3ktdHJ1bmsKKzEzMjk3IGIwMTVkNWYxZGExYjU3MTc5MWY0NDBmNGJkOTVhMmJmMDg2NWMzZmMgbGVnYWN5LXRydW5rCisxMzI5OCA3YzQwZDdjMWVlZjk0Zjc3MDM1YWFiODc4OTBhZGZhZDA4YTNmYzZmIGxlZ2FjeS10cnVuaworMTMyOTkgODg1YWJlMDhlYTJkZWFjOTMzNTA3ZDIxNzk2NzcwYTI3OWNlOTY3YyBsZWdhY3ktdHJ1bmsKKzEzMzAwIDllZmUwNjc5NDBlYWE4N2Y4YjExOTJjZTg2YWJmZDcyMWYzN2E2YTIgbGVnYWN5LXRydW5rCisxMzMwMSA5NGM3YTNmMWMwMDVlNjU5NDcyMWM5YTg1ZmJmMTc1ZTMxZWZiMjg5IGxlZ2FjeS10cnVuaworMTMzMDIgOGYzMTEwM2M4OGE4ZTA3ZTU1ZDkyMzI2NzgzMGE0OTA5OWY5OWRkZSBsZWdhY3ktdHJ1bmsKKzEzMzAzIGQyMGU0ZDBhZmI0MzYyZDg5MjU5OTM3ZTQ3YjI0NDdjMmVjMTY2YzMgbGVnYWN5LXRydW5rCisxMzMwNCAzMTJlYjQ4MDFhMWM4MTZiYmU5NDY5Y2RhYWY3YzZkMGQ5NzBiY2QxIGxlZ2FjeS10cnVuaworMTMzMDUgM2QyZWE1NWJjNGU2OGE0ODBmNTk0ODZiNjAyNzQwOTNmMDQ3NzZkMCBsZWdhY3ktdHJ1bmsKKzEzMzA2IDg3OWQxYWU1YzdhNWJjZWQyZTA0OWZlOWNiMWYxY2JmNjljNjZmMTIgbGVnYWN5LXRydW5rCisxMzMwNyA3ODEyMzgzNjFmNTMxZTNjNTAxOTk0NTgxYWMyNDYyZWJjYWQ5OTU5IGxlZ2FjeS10cnVuaworMTMzMDggYWViMTNjYjdiNzhjYTVlODA4NGIzYTYzMGZmMzgxZDI3ZDM0MWFlMyBsZWdhY3ktdHJ1bmsKKzEzMzA5IGI4OGE2MDUyNDI2OTA5ZDYyYjc2ZTUzZWQwYTEwODgwYzdkMjhkNTUgbGVnYWN5LXRydW5rCisxMzMxMSA3ZWEzODU5N2U3MGZhYmJkYjQ1ZjIzYmMzNjk3NmI2M2Y2NmMxMTBlIGxlZ2FjeS10cnVuaworMTMzMTIgZmZiMmE0N2I2NDVlYzdiZjFhNWJiZGFmZGUzMGE0NzEwZDk2Y2U4OSBsZWdhY3ktdHJ1bmsKKzEzMzE0IGYxNjRkOTE5MzM0MWM5YjRmMDhlNDM2ODQxZGJjMzQ2YmUwZWIyZDYgbGVnYWN5LXRydW5rCisxMzMxNSAwZmU4Y2Y3YWM2ZDVhMzU2NDM5NDE1MTc2ZjJlZWRlNDI5YjhjZDNiIGxlZ2FjeS10cnVuaworMTMzMTYgZGZiZTI1OGUyOGMxODE3ZGEyMjI5MTA3MWEyNWZlOGNhN2I0YjAyYSBsZWdhY3ktdHJ1bmsKKzEzMzE3IDY4Nzk5YTIwMjc2NmExNDQxYTdmMTljNDY5NjM1NDlmMGQ2YTgwODEgbGVnYWN5LXRydW5rCisxMzMxOCBkNzNhMzI5M2M0N2IyY2RmMWU4NWY3ZDAzOGI2Y2U5MmY4MzU2YzhlIGxlZ2FjeS10cnVuaworMTMzMTkgNWFkMjdhZWU3ZTU4ODYxZjYyNWZlN2VkODY3MDA2MzMyMDQxYTQ5NyBsZWdhY3ktdHJ1bmsKKzEzMzIwIDJmZTBiYjhiOWVlZjc5YmJkYWExYjc3NTMwMWZhMDMxMTkzNzFjZmYgbGVnYWN5LXRydW5rCisxMzMyMSA4ZGUxM2NlYTk2NDExMjI2ODg5ZGEwZThiMWQ1Y2JmMTEyNDk5ZjQ2IGxlZ2FjeS10cnVuaworMTMzMjIgMzMxYzg1YWNhMTk1NzJjMmY1OTNjYjA1NDE4MjhhYzM0NjNjZjUzMCBsZWdhY3ktdHJ1bmsKKzEzMzIzIGMxMmY3Y2YxOTJmYjMzODYwOThiODYxYzU5OWMzZTNlMzA0ZmRmYjcgbGVnYWN5LXRydW5rCisxMzMyNCBkMjZhOWY5MjU0ZjE0ZGMzMTc5NjYwNDY5MTg1NWM1ZDRmZWEyNDA4IGxlZ2FjeS10cnVuaworMTMzMjUgZWI3YTYyYWNkZDFkYzViNGY4M2RlNGQ4ZDM0ZWUxMzg1NDNhMGIzZSBsZWdhY3ktdHJ1bmsKKzEzMzI2IDVlMDNlYTY5MjdmMjA2ZjU2MDA5MjM0YmQxMmJjMTVhZTE4YzhlNDUgbGVnYWN5LXRydW5rCisxMzMyNyBkZmI1ZmRhM2IyNzNhZDc0Y2FjZmZkZGUyYzA4ZmI0ODJiOTI2ODFhIGxlZ2FjeS10cnVuaworMTMzMjggZDNjNmU5YTEyNmIyOWZhYzZkNzhmMjdiN2M3M2RkMjRiZTNiNzAxOSBsZWdhY3ktdHJ1bmsKKzEzMzI5IDQ5YTBiOGRjYjM2YTRlMjY5MjhhMjZkMTYwYjJmMDljYzkxYmNmZmMgbGVnYWN5LXRydW5rCisxMzMzMCAwYmM3YzUwMmViNGQyZWNjM2E5Njg2ZjRjZTk5ZjI4NGIwOGFjMWYzIGxlZ2FjeS10cnVuaworMTMzMzEgOTYzODlmMGI1ZWYwODZiNGYzOGYzY2E3NmZiMGJlMjQ3NjllZWQ1NyBsZWdhY3ktdHJ1bmsKKzEzMzMyIGZlNWI3ZGVhNWExMGZmYWRjMjczZGVhZWE4NDMxMjJkMzAxYjFjZWYgbGVnYWN5LXRydW5rCisxMzMzMyBlYTgzMmMzYzZlNmRhMjYzYTQ4Y2I0MzgwMDlhNjk4ZjllMGIzZTkwIGxlZ2FjeS10cnVuaworMTMzMzQgMmEzMGVkOTExMmM2MWQ1OWM5YTBkYWMxZTkxNjRiMDkyYTg5NjZmOSBsZWdhY3ktdHJ1bmsKKzEzMzM1IDY5ZDg5ZjdmNTMwYzVjNzllOTU3ZjNmNGY1ODFlZjZlMmM4YTJlZjIgbGVnYWN5LXRydW5rCisxMzMzNiAzOTFhOWNiMmIwNzI5ZjcyYTAxNTdiY2E4ODlmYmIyNmZkNWNlYzFkIGxlZ2FjeS10cnVuaworMTMzMzcgMDAzNDRkYmYyYTYwNTI5NDllZjU4ODhjN2I0N2E0NTAwOTMxMzQ2YiBsZWdhY3ktdHJ1bmsKKzEzMzM4IDY1ZGI1ZTI2Mjk4ZjI2NmQ4YWI0OWFlMDM0ZWM3MmNiY2I3ODIxYjcgbGVnYWN5LXRydW5rCisxMzMzOSBhYWUxNGM2MTgxYjlkODhkNWRjMzlkZDVhOTM5ZTYwZDViMmY2YTM3IGxlZ2FjeS10cnVuaworMTMzNDAgMTM1YzFlYzk2MzZjNjg2YTIwZDAzZWQyNzdhMzUzODI0Yzk3NDI0YSBsZWdhY3ktdHJ1bmsKKzEzMzQxIDU1ODEzMDdkYjJmNzM3ZTZhMzhlMmQ1YzcxMzQxNGJlMjEwNmU5MWIgbGVnYWN5LXRydW5rCisxMzM0MiBlNjUyNDM0NmQ2NmNjMTg1OWI5ZDU5NmU0MDA5MzUwNzc4MTlmZWFlIGxlZ2FjeS10cnVuaworMTMzNDMgZWZkMTU3M2E0YjAzYjIyZGEyYTEwN2VkZjdmMDEyNTM2NDkzZWM0NSBsZWdhY3ktdHJ1bmsKKzEzMzQ0IDBiZjMwMTk0MWVmZDhjNTMzNTdmYWMxNGE0OWU3MWE0ZTJjOTEzYWQgbGVnYWN5LXRydW5rCisxMzM0NSA4ZmRhYzQwMjUwMzI1Zjg5YmU3ZTk2ZDIzZDIwY2VhMWM2YmM2YzIxIGxlZ2FjeS10cnVuaworMTMzNDYgODRhNGVjZDJjYjk1MzgyNDg2ZGRlM2ViYTA0NTZhZTg4NGI4ZWVlZCBsZWdhY3ktdHJ1bmsKKzEzMzQ3IGFlZTc0ZTk3N2FkZDBmZjdhMGFiYTcyMjlkMDU0YWViYTRjZTU3MjYgbGVnYWN5LXRydW5rCisxMzM0OCBmYTZiZTFkMGI4NjQ1YTMzZmU1YjViMzFmYzk2OWUwMTk2MzZjYzYxIGxlZ2FjeS10cnVuaworMTMzNDkgMzUyZTU4MjRlZGE2NjYwYTQxMTQ4ZmNlZGYzMDQ2MmI5YzQ2NDJkMCBsZWdhY3ktdHJ1bmsKKzEzMzUwIGUxYjg2ZWY0NTU3YzU3NTkyZmFiYTllOTA1Zjc1MzdlNmQyZDRmNDEgbGVnYWN5LXRydW5rCisxMzM1MSBjZGY3YWU1YjMzNjdlZWU2ZTRkYTI0NGUzZDY3MDU4MmViOTc5NzlkIGxlZ2FjeS10cnVuaworMTMzNTIgNWVmNGIzY2E1NTY0NTcxMmY1NjNkZmMzMmE0YjI1YTY5MzBhY2E2NyBsZWdhY3ktdHJ1bmsKKzEzMzUzIGI3Mzc4ZGYzZGI1NmQ3MDQzMTYyN2MxN2Q5YmFiY2FjYmQ5MTdmMmIgbGVnYWN5LXRydW5rCisxMzM1NCBjN2FhOTk2NTgzODNmMjdmYjI0MmU1NjVhMjc5ODdjMWUzYzA3MzUyIGxlZ2FjeS10cnVuaworMTMzNTUgZDc4Y2MyNjc2YzU1MWI2NzE4NzQwNDMyZWYzYzM3NzEzYzllOTVjYSBsZWdhY3ktdHJ1bmsKKzEzMzU2IDRkYTc2ZjgzOGE1ZTRlZDVjM2UzYjMzMTZhM2IzNmM2OTBkMjcwMjMgbGVnYWN5LXRydW5rCisxMzM1NyBhMTQxNWVjZWEyM2Q0YTMyMWQ3MWRhZGM2NTYyNDA5NTQxYmNiNzI3IGxlZ2FjeS10cnVuaworMTMzNTggZmNiMjUzMzVkNmFlZGYyYzFlNWVkOWE5ZTE2YzliZmQ2MDBiMzc3NSBsZWdhY3ktdHJ1bmsKKzEzMzU5IGIyN2FkNTA5YjQ0YjM1MDI1NjYzOWM1Mjk4MDBjNjc4ZmIzNDE3ZmYgbGVnYWN5LXRydW5rCisxMzM2MCBlMmZlNjVlODc3NjFiODgwYzQwYmZjNmU3NmQ5OTVlYzU4YjUwZjVkIGxlZ2FjeS10cnVuaworMTMzNjEgZjJlMTIzYWYyYWRhNDQ3MTNhN2M0YTY0ODAxZGQyMmNiZmNkYmEzYiBsZWdhY3ktdHJ1bmsKKzEzMzYyIDI4ODg3ZjQwZTM0NDJlMGI1MWQ0NDkwYTcxMjUxNjc0NzMxNjcwZDMgbGVnYWN5LXRydW5rCisxMzM2MyBiZTBhYzVhYmU4M2I3YjZhYjc4MWVlMmNlYmQxY2FlNjY0ZjI2M2JlIGxlZ2FjeS10cnVuaworMTMzNjQgMWFhODBmNWJmOWFjOTFkM2MwMTJiZDZhYWI3NGM5MWMzY2I5MDI5NiBsZWdhY3ktdHJ1bmsKKzEzMzY1IDgyMDJmNWFjZTI0ODQ5YWY3NTFmM2IxZTlhOTQwOTkzNWQ3Yzc3MGYgbGVnYWN5LXRydW5rCisxMzM2NiBlNzUyNTBlNTU0MjRmNDFkOTQ4YjY2MTMwYjUzNDg2MDI4NDQxN2E5IGxlZ2FjeS10cnVuaworMTMzNjcgY2ZlNDcyOTEyYjdmOGIwMjgyZTc0ZGE4ZTRjYjA3YTQ5ZDIzODVkMCBsZWdhY3ktdHJ1bmsKKzEzMzY4IDlhM2EwNDY4ZjUxYzdmOTdmYjM0MjJlOWRjMDdkNzhmN2ViZDk0MGUgbGVnYWN5LXRydW5rCisxMzM2OSA0ZjVkNDk0NTYwNWM2N2QzNGM3NTljN2E5ZTgyNTdiZTM1MTNjNmY4IGxlZ2FjeS10cnVuaworMTMzNzAgZjdiNDFiMjcwNTU0ODIxODNkYzJmZGJmYjg2ZjRmYTFjZjNmOWFhZiBsZWdhY3ktdHJ1bmsKKzEzMzcxIGNkMmEyNWI3YjQzODU4ZTU4NTNmYWI5ZGU0ZDdiY2VkZTdjMWI3Y2UgbGVnYWN5LXRydW5rCisxMzM3MiAzZWRiMzI5ODIzNGNkMGIxOGUyYzQ0N2U1OWRkZjZkZDk3MjQ2Yzc0IGxlZ2FjeS10cnVuaworMTMzNzMgMjUxMzhkYjM1Y2UxZWRlN2Q3ZjFkZmVkYThlYTAzOWRlZTJlZjNlMSBsZWdhY3ktdHJ1bmsKKzEzMzc0IGJiYzJhODc4OTRkMDgyOTMxZjA3YTIwMTc2MjA3ZThkZGZhZWZlMmQgbGVnYWN5LXRydW5rCisxMzM3NSA3ZDExODJkMGM0MTkzZWExMThlZWZiMTFmMDYzNmY2MWRhNmZlNDc4IGxlZ2FjeS10cnVuaworMTMzNzYgZmZmZjY2NWY4YTdiZjI5ZWZmNTU2MTY1YTIzNmI4NTU4YTdlOGQwYSBsZWdhY3ktdHJ1bmsKKzEzMzc3IDVjNWFlMTYxZjI4YWMwNDA2YjliM2NlZDEzMzgxMjdhYTIwYTE1ODQgbGVnYWN5LXRydW5rCisxMzM3OCA3NTUwYTM1ZDgwZjliYWZmY2JhYWEyOGI5YTI5OTUxZGJhZmMwMjM1IGxlZ2FjeS10cnVuaworMTMzNzkgYTU2Mzc5MjAwMDc3MGUxNjA5YjNjZDc3ZmFkYzVlOWU0NTRlOTJjMCBsZWdhY3ktdHJ1bmsKKzEzMzgwIDk4NjhjODA3NzMyZDU4NzA4ZDY1MDMzNjM5NDYzMjhkMjgzOTBlMmMgbGVnYWN5LXRydW5rCisxMzM4MSA4NjM0ZWEyZWM0ZTJmZGMyYTcwZDU0ZGYxNmZmNzQ4MzViZTQ2NGRkIGxlZ2FjeS10cnVuaworMTMzODIgMTgyMWU2NGUwOGZjZWRhOGZjMjhlMTBkMTJkOGQwYWY4YjQ1ZGM0MyBsZWdhY3ktdHJ1bmsKKzEzMzgzIDE3YWUxNzhhMzAzODhjNGNkMWYwM2U2ZjA3NDAxMzM2NjQ0NjI1MzYgbGVnYWN5LXRydW5rCisxMzM4NCAyNjY5YWM3Y2Q3NmE5NmY4NzEzMjBlYmY5MjdlZjliMDM2MTJhNDBhIGxlZ2FjeS10cnVuaworMTMzODUgYjllZjQyNDE2NWQ2MjUzZDJiZDVmZDQ2MDgzNjRhZjcyOWEyNzQzMyBsZWdhY3ktdHJ1bmsKKzEzMzg2IDUwMjBiZmE3NDJlYWE3NTExYzYwODUxNTg2ZDYxODAwY2RkNGZkMzMgbGVnYWN5LXRydW5rCisxMzM4NyBmODhkM2E3NjM3MjNkNWJhMGJlNzU5OWNkYTNmZmJjZTYwYjY2ZWFhIGxlZ2FjeS10cnVuaworMTMzODggODM4Y2IzNGFiYjc5MTljMzQyZjI0M2E5NjAzMjhiMzY2MGQwYWZkZCBsZWdhY3ktdHJ1bmsKKzEzMzg5IDA2ZGVmODA0MmQ4ZTE2ZmEwMTA2NTVhMDdiZWMwMTZhNTMzNDFhNWIgbGVnYWN5LXRydW5rCisxMzM5MCBjMjA5ZGQ5OGI4Njk1MjVhMWRkZjk4OGI2N2YzMDNlMTk2MTY4ZWFmIGxlZ2FjeS10cnVuaworMTMzOTEgZjAzMThhMWM5ODkyY2I1NzI3Zjg2ZDEyN2UzOTkyZmYyYTZjOTcyYSBsZWdhY3ktdHJ1bmsKKzEzMzkyIDYyZWQzMmU3OWI1ZDI5NjI0NjMzNDA3ZDBkY2EzMzk0MjRlY2RhZGEgbGVnYWN5LXRydW5rCisxMzM5MyA4MjJjNTI4MmMxNDU2OTc4OTc1NTdlNzU0YmRmOTBiMjVmZDUxOWE4IGxlZ2FjeS10cnVuaworMTMzOTQgYWYwNzM4OWM4NTE3NWZiYTU5NDgxNTcwMmZkNmJmMmIyZGRiYjgzNCBsZWdhY3ktdHJ1bmsKKzEzMzk1IGJhNmQzYWUzYTAyMTQ3YTIxNmZhZTgwNzEzNzdkOWMzMDdiZGQ4ODEgbGVnYWN5LXRydW5rCisxMzM5NiBhNjI4YzM3MDU4OTdhY2ViYTZmODRiMTIwMjczN2M0ZTUzNTJjYzE5IGxlZ2FjeS10cnVuaworMTMzOTcgNjMyYjY3MDViZDlmYWRkNjAzZDE0OTBmYWNiNDA0OGFlM2M3ZGEwYiBsZWdhY3ktdHJ1bmsKKzEzMzk4IGI4MTM2NTY2Y2FmNWMwMGUwNzk1ZDhiM2Q1ZDU5ZTdhNDM2YjU1N2YgbGVnYWN5LXRydW5rCisxMzM5OSA2NzgzODQyYzEwNDI0NWMwMzZkM2Q5YmYxMTA4MTdhMjFjNGNiNzIxIGxlZ2FjeS10cnVuaworMTM0MDAgZDM4ZDNiOGVhNDYzYmZjZjFlYjA5NGRjNjVhOGU1YTM5YjRiNjNmNCBsZWdhY3ktdHJ1bmsKKzEzNDAxIGUxODNiYzAwNDlkY2RkYzAwMzY1ZTU5YTA4MTNjOGI0Njk3MDMzZmQgbGVnYWN5LXRydW5rCisxMzQwMiA3NDg2Nzk2ZmFlNWI5NDQ1ZmRiY2NiNzk1OWM2ZTFiNWI1ZmVkNTU0IGxlZ2FjeS10cnVuaworMTM0MDMgODE3ZDA1MzgzNTBkMzM2NDQ3MTAwYzNiMWNjNzk3N2EwMDE2YzQzYiBsZWdhY3ktdHJ1bmsKKzEzNDA0IDNlNDE5YWJjNWJhYWRjZmIxMDkzZmI4ODJiYTU2MDUwNmIwMTY4NWIgbGVnYWN5LXRydW5rCisxMzQwNSA5NTgzN2UyNzMyNTc1OWQyMzQyNzhhZDJmZWRjOTcyOGY3ZDQwNTc5IGxlZ2FjeS10cnVuaworMTM0MDYgODVjZjQ5YTliMDBiY2VlNzNmYTE3NDc3NWI0NjI0Yjk2NzE5ZmMxZiBsZWdhY3ktdHJ1bmsKKzEzNDA3IGE1OWU5NWQyZjE4MTBiNDM2Njk3NDI3ZWJjN2JkNTUzZmEyMWU5ZDggbGVnYWN5LXRydW5rCisxMzQwOCAxN2NhMmY2NGI2ZDY3MTdiNzg4Y2VkY2JiMjQ0ODVlMDg0YmJjNGUxIGxlZ2FjeS10cnVuaworMTM0MDkgN2U1NmQzOWQwNzQxMTQzMjZjNjljYTgyZmMxMDFhYjNhM2NkODFmYSBsZWdhY3ktdHJ1bmsKKzEzNDEwIGYwYTIyMTM0NDRhMDQ5NDVkNWQzOGY4YjVkMWI3OGEyYWZiN2U5NTkgbGVnYWN5LXRydW5rCisxMzQxMSA5NTdjMzM1MDRjYzEyNGRhZjcxYWZiYWZkZjJlZmRiZTk5OWQ1OTkwIGxlZ2FjeS10cnVuaworMTM0MTIgZDMxNzQzMjBlM2NlYzliZWFkNTk5MjNhYjMzMGRiMjk1ODAwNTk3OSBsZWdhY3ktdHJ1bmsKKzEzNDEzIGY0YzZjZTU1OTNiOWQ2MGQ4YmRmNjJhNmM0OGMxNTI5YjE4Y2NhNjEgbGVnYWN5LXRydW5rCisxMzQxNCBjMjQ1MTYxNDY4NWFjNGQ4ZWI2NDg2ZDg1ZWE1NGZhMzVhZDZiYTE4IGxlZ2FjeS10cnVuaworMTM0MTUgMjllOTYyNzVhNDJkY2I3OTVkNTVlZTgzYzk1ODAzMjAyN2RiNTJlMCBsZWdhY3ktdHJ1bmsKKzEzNDE2IDhhMzEwOTc0MGM2YWZmMGU0NWE1YzAzODY3Y2ZhYTViMDVkOGE1ZjMgbGVnYWN5LXRydW5rCisxMzQxNyBkODNhNGFhNzBlYjQyOGQyMmQ5M2RjYWI4MTZlODg0OTIxZjM0MGNmIGxlZ2FjeS10cnVuaworMTM0MTggY2ZhYzgzZjVjMGVmYTQ3MmMxMzY3NzhhODU4M2FmMzk4ZjNmOTU4NSBsZWdhY3ktdHJ1bmsKKzEzNDE5IGIxYTFlYjMzNDlmMzdhZDFiNjM4YmUzNGUwZTkyYzUxNGU3NGVhOTQgbGVnYWN5LXRydW5rCisxMzQyMCBkMWI0ZmQwNTdiNGE2MzRlYzRhYWE4ZTg1NTY2NWMyNGU4ZGY4YWViIGxlZ2FjeS10cnVuaworMTM0MjEgM2ZkZjFjN2Q5Zjk4OGY5ZTkxYjA0NzE5NzQ2ZmRiY2IzMjVjY2MyYiBsZWdhY3ktdHJ1bmsKKzEzNDIyIGJhNzk3MTc5ZTJiYTYzOTBhNWZiMjFjNGVmZGQ1NDRhODdlOGMzZTMgbGVnYWN5LXRydW5rCisxMzQyMyBiNzVkMDExOWVkNTFhMDdiOGNiYjYwM2QyM2ZiZDExYmY3NmIyYWEyIGxlZ2FjeS10cnVuaworMTM0MjQgNmIxY2I4NTgyYTFmOTJiY2M2NzQzYzZhZTRiZjlhNGQwNGZjMDBiOSBsZWdhY3ktdHJ1bmsKKzEzNDI1IGE4YTFlYjk5MzQxYzIxYjhlNjEyMjk1YjVkOTM4OWI2MDU5ZmMyMGYgbGVnYWN5LXRydW5rCisxMzQyNiBiZGQ2YjA5YTM3MWM0MGRhZGRhODZlYTk4ZmI1YmJhOTcwYTRkYmRiIGxlZ2FjeS10cnVuaworMTM0MjcgM2ZhYTYzNDMwOTI0NmY2NDM1ZTc2ZjhmM2M0ZjZmZmQyNDIyZmNiMiBsZWdhY3ktdHJ1bmsKKzEzNDI4IDljNDAzNDg4NzU1NzI5MTM3YTE2NzMzMWFmZGUyZWUxNGNhYmQ1ZTAgbGVnYWN5LXRydW5rCisxMzQyOSAxYzU1MmRjZDQzZjk3NWNkODhjOTFhYmJkYjk0ZmQwOWNhMjhkMzM0IGxlZ2FjeS10cnVuaworMTM0MzAgODIzNGJiMzZmYjhjMzVmOTAzOTg4NGYxM2ViZWM2ZDA4OTY2NTZkYyBsZWdhY3ktdHJ1bmsKKzEzNDMxIDUyNTk3MDNmNGI1YzAyMDIyNTU0ZTQ2YzU1NjcyZWIxZWE1MjJiNTggbGVnYWN5LXRydW5rCisxMzQzMiBiMzViYWI0NTczNTBiNTBhYTVmMTk2OTExMTQzNGQ3MWFlZGU1NjgyIGxlZ2FjeS10cnVuaworMTM0MzMgZjljMDNiM2QwZjE0NmU5MTgxNjJjODVhNDNhZWFiZmQ2OGUyM2JmZCBsZWdhY3ktdHJ1bmsKKzEzNDM0IGU0MTA0OWFjODI4YjQ5YzA2ZGE4M2Y1ZmVjYzdkN2FiYzBkYmE5NDggbGVnYWN5LXRydW5rCisxMzQzNSA1ZWQ5YTJkZDE4ZDllNmY4YTA1ZWMzYWVhNTc5M2ZlOWJiNDdhNDkwIGxlZ2FjeS10cnVuaworMTM0MzYgODRmMWNiZTAwOTQzMzVhZTZlNWFkMDUwODU0MzM1OWJjMjAwNjQxYyBsZWdhY3ktdHJ1bmsKKzEzNDM3IDQ1MWIwODQ5Yzk3NzI1ZGJlYzEwNzQ4ZThkMDRmMzU3MmI2MWZjYmEgbGVnYWN5LXRydW5rCisxMzQzOCAxOGEyOTIxOWY1ZTA2ZjRkY2U1YTFhNjIxYjBjOWU4NWY3ZDA0MTU0IGxlZ2FjeS10cnVuaworMTM0MzkgNTBjM2IzYzIxN2EzOWU0NmE3YWY1NDc0NGI0ZDg2YjJmYWVkYzAxMCBsZWdhY3ktdHJ1bmsKKzEzNDQwIGNjNmFiYzk5ZDJkZGYxNDE0MTg0Yzg4MDA5MTljMTQwOWNiNGFkZDcgbGVnYWN5LXRydW5rCisxMzQ0MSBjMDg5MDIwYTdhMWU1NzY1ZmY5OGI1OGRmOGU0MTUwYjkyMDU3YWViIGxlZ2FjeS10cnVuaworMTM0NDIgZGNjYmY1ZTgyOTRkZDkxZjZmZTNhMjNiNGQ1MWIwMGM5YTgwNDcxNCBsZWdhY3ktdHJ1bmsKKzEzNDQzIDg0MTY1NTNjMzNkZjE3ZmYyYmI3OTUxNzU0YmM1MmY3YTg0Y2Y3NzYgbGVnYWN5LXRydW5rCisxMzQ0NCBlOGZmNGIxMjk4YzIzM2QyZjU1ZDNlMjllM2JmNDcxYzU3Y2I5YTVmIGxlZ2FjeS10cnVuaworMTM0NDUgYWY3NjUzOGRkMDc5ZDI0ZjBkNjc4MWI0MTQwYTgxZjdhMDY3MmUyMCBsZWdhY3ktdHJ1bmsKKzEzNDQ2IDcxMjhjMGZkMmJjZjUyNGU3NDNmNDVjMWI3MjcwMjUwOGU5MzA3MjIgbGVnYWN5LXRydW5rCisxMzQ0NyA4Y2MwYzg5OGY2YTc0NzgzZDE4MzFlNDgwMmNlM2E0YjliMDcwMjI2IGxlZ2FjeS10cnVuaworMTM0NDggZTdlYWU2M2U4YjkwNzc5MDQ5ZTVmOGUxM2FmNzg4ODAwYzY4ZGZkZSBsZWdhY3ktdHJ1bmsKKzEzNDQ5IGQ5NzY0NTFiNDY1ZjIxMmI4MjRkZTcwYzBkNDk3ZTYxMzU3MGE2ODYgbGVnYWN5LXRydW5rCisxMzQ1MCA2ZWU2NmZlMTc5YWQ3MmUwYjA1MmJiMzk0YmQ1Y2I4YmRlNzU2MjhjIGxlZ2FjeS10cnVuaworMTM0NTEgMzVkNWIwNzM2MjQyMjYyMWJlODY0OTU4YWQyMWY5NTMxZTdjNDhkYiBsZWdhY3ktdHJ1bmsKKzEzNDUyIGJmNmEwOTgzOTUxZGRkZDlhMWE5MzY5Yzk0NDI0YTk4ZTIyYWI2NjIgbGVnYWN5LXRydW5rCisxMzQ1MyAxYWJjMjc4NWIzNDQ2YzBiZjg4YzY3NTc5NTRmYTcxY2EzMjRkNDcwIGxlZ2FjeS10cnVuaworMTM0NTQgMzg0MjUxOGNmODAzMDEyY2U1MGQzZjk4YWZjZTNjM2Y5NmYyMzE1NSBsZWdhY3ktdHJ1bmsKKzEzNDU1IGI5MjhmN2I5ZGZhMjNkM2ZlZDQ2YzNjMjI4NjMwNjhiMzAxMDQ4MDUgbGVnYWN5LXRydW5rCisxMzQ1NiAwMzUzMGVhMjE0OGM4NTg0NjUwYTQ4YmJhN2YwMmM1N2ZiZjdjMmI1IGxlZ2FjeS10cnVuaworMTM0NTcgMGZjMmU4NTdlODIyODUwMzg3MDJkMzk0ZmI4OTlhYjA4ZjEzMjFjZiBsZWdhY3ktdHJ1bmsKKzEzNDU4IGI2ZDNkMTcxOTVkY2JhODY1NTU2YTEyOTVlMWYxYWY2ZjRiNmQ5YWQgbGVnYWN5LXRydW5rCisxMzQ1OSAzMTcxMWEwNTg3MzgyMzY4ZjFkZDg0YmFlZmMyOGZjYTE0MWJlMDljIGxlZ2FjeS10cnVuaworMTM0NjAgZTA1MGQ0YzAxMzI3Y2Q5YzZmNWIxMjk0MzM4ZTVjN2YxNmVkYTE2NSBsZWdhY3ktdHJ1bmsKKzEzNDYxIDRkNzZjYWJiZjk5ZTY1NTgwYjEyY2Q4NTA0ZTVmNTY0MDkwYjg5MmMgbGVnYWN5LXRydW5rCisxMzQ2MiA0Mjk0MGVkMjJjZWJkNzhiMDc1ZTEyZWFkZWFhNzA4MjgzOTEwYjM1IGxlZ2FjeS10cnVuaworMTM0NjMgNjY2ODliMmRjODk1NGI1YzczYWFiMjM4NTA0MDUxYjQ3ZjA2ZjNhOCBsZWdhY3ktdHJ1bmsKKzEzNDY0IGJkYzE3MDNmZjkyY2U3ZjUyNGJlZDBlMmNmYWJiODI0NzA1MGU2MDYgbGVnYWN5LXRydW5rCisxMzQ2NSBjNzc5MDI1NDFiMTNhNTdkYzEwODg0MTY2ZTA5MTQ3NzYwMGZlYjk4IGxlZ2FjeS10cnVuaworMTM0NjYgYmJiMDM4NjhmMjFiNjI3MTI3ZWY3YzExYjlhMjdmZTI5NzNmNWIwNCBsZWdhY3ktdHJ1bmsKKzEzNDY3IGFhMzI3NmU1ZGNjZjViMjIxMTM2M2VhYjEwYjdkM2E2MzU3YzE4NTkgbGVnYWN5LXRydW5rCisxMzQ2OCAzNmZhODM1MmQwMzg4MTY3ODAzNDE4YTNkYTc5OTJiNjM2NDZlMDA0IGxlZ2FjeS10cnVuaworMTM0NjkgNGRjOWVlZTI2MTU3MTQ1NjdjYjFhMWU4NzBkZTY2NGIyM2M1NDBmYSBsZWdhY3ktdHJ1bmsKKzEzNDcwIDJiOWFmOWQ3ZGEyZDhhN2ViNDVhZjgxNWMzMzdlNGRmNDM3NTU2MjUgbGVnYWN5LXRydW5rCisxMzQ3MSBkYTIzNjA0NGNmNmM4YTk4MmZjMjgzZTgwNGE4ZTVlNWRjYmUxMjg3IGxlZ2FjeS10cnVuaworMTM0NzIgMzA5ZDhjZjgzYTExNzk4MmExNzEzYzIwZGVlMzlhY2QwY2ExZTM4MyBsZWdhY3ktdHJ1bmsKKzEzNDc0IDUwZTdlYjIwYmIxZDUxYmE1NjkyNjUzNjFkNDZkNTk3M2RlN2UyYTggc3RyaW5nX21ldGhvZHMKKzEzNDc1IDI1OTIzN2IyNWI5MzVmOWQ3ODQzNWMyMDkxZjQ2NjZiMGE0MDYyYmYgbGVnYWN5LXRydW5rCisxMzQ3NiA3MGNmMTM2MDlhZWQ2OGEzZWE5Zjk2ZWQ5Yzg0MzgwYzYwM2Q0M2NmIGxlZ2FjeS10cnVuaworMTM0NzcgZmJiNGVkYjcyMDJjYzVlMWZlNjUzYWI1YWMxZDBlYWEzZTBjNTRjOCBzdHJpbmdfbWV0aG9kcworMTM0NzggNWJhMmU0Y2U1OGNiNGJhYWQzNTJiMjk1OGI5NDExZGZkMTk5MGYwZCBsZWdhY3ktdHJ1bmsKKzEzNDc5IDU0ODA5MjFhZTdmM2ZlZTY5ZDY2ZTU4NDIwODliNmM1OTkyMTUzMDUgc3RyaW5nX21ldGhvZHMKKzEzNDgwIDlkNzFjMmMzYTY3NTZmMjZlMzRmNDZjZmMzMmQxODgzY2Y1NjRmYWIgc3RyaW5nX21ldGhvZHMKKzEzNDgxIGUxNDA3ZDYzMjBjYmI3YzEwMmYzN2YyZjk4MzQ3ZWIwNjYzMmMwOWEgbGVnYWN5LXRydW5rCisxMzQ4MiA2ZmZjOWQ4ZGM1Yjk4NmE4ODI5MTE5NGJkNmI3MDhiZDFiNmM4NzY4IGxlZ2FjeS10cnVuaworMTM0ODMgMTdjNGRiZDM2ZTY3NzY0NDg0NWE1MTE4YTNlM2VmNzcyNTk4OWVmZCBzdHJpbmdfbWV0aG9kcworMTM0ODQgNzhjZWY1Njc2Y2NmNjEyZWZhN2RhMDc3NDdhNGYzODdhOTc3YjlkNiBzdHJpbmdfbWV0aG9kcworMTM0ODUgYWU4NTA4MTNjYjdiNDhjYzk0M2RjNjE0ODQxZTFlMmY5Y2RkY2RlMyBzdHJpbmdfbWV0aG9kcworMTM0ODYgZmYwZTU3NmU3NThhN2I0ZTg1ZjQ1OWZmYTUzY2FhNGFmZDE5NGM5NiBzdHJpbmdfbWV0aG9kcworMTM0ODcgMWRjYzk1NmZjZTY0OWY0ZjRhZWZmYjdhMmZhNDg3NDAxNTUzMGU3MyBzdHJpbmdfbWV0aG9kcworMTM0ODggZWVkNWViNWI5ZDRmNTljZjAzODZmN2Y0YWRlYmNiOWYzMDZhYjBlNiBzdHJpbmdfbWV0aG9kcworMTM0ODkgZGRkMjE2MDAzYmQxODcxZDM2NDVmMjU5YTNjNjk0Y2JiZDljNmU2OSBsZWdhY3ktdHJ1bmsKKzEzNDkwIGNiYmYyOTdhZWE3YTkzNzk3YjhmZDlhYzFiNGY5NWIwYzJiMzcwMzEgbGVnYWN5LXRydW5rCisxMzQ5MSBiMmQ2OWY3NTEzODM5YTQ1MzI5OWQ1ZDEzODQxOTFjY2UzZTNhMDVmIGxlZ2FjeS10cnVuaworMTM0OTIgZWM2YzhhZDk4MzQxMDc5NDYzYWY5ZjYzODQwMzgxNTRkYTkwMDljYiBzdHJpbmdfbWV0aG9kcworMTM0OTMgNTE5NjlmZDczYzRhN2U3Y2NiNjYxYTVjYTUyNzg3YTFjYzk2NjQ1ZSBsZWdhY3ktdHJ1bmsKKzEzNDk0IDJlYzA0ZmYyYjliNzMyZjk1MjlkYjgxZTU5NDM2N2FkYzNmYWZjODAgbGVnYWN5LXRydW5rCisxMzQ5NSBjZmVkMjk0OTNlZDY1NjFjYmVhYjE3OTY1OTNlNWM2YTFhMDY2MjM4IHN0cmluZ19tZXRob2RzCisxMzQ5NiAwZjBhNjZjMWRlYWNhMjY4OGFlNGY0NGVlNjgyMjI5NmY2OTk5NzY0IGxlZ2FjeS10cnVuaworMTM0OTcgMGYyMjkyZjU3YTgzMTc0MzY2OTIwYmE5YzU3NTc4MGIwZTk5MjQwZCBsZWdhY3ktdHJ1bmsKKzEzNDk4IDk1ZDc4MjgxNTkwMWQ4YmFlNTY1ODIyZmZmNzBmZjFjNWM1MGQ1Y2YgbGVnYWN5LXRydW5rCisxMzQ5OSBiMmZiZDlhNWExYjU1YzEzMmQ3MjZkNzBlZDIwZjE2YTliZWRlNzY4IGxlZ2FjeS10cnVuaworMTM1MDAgYWU5NmIxYTEyOGY4YzE2OThhMTI5NTE2YzJiYzNkNzliYzk4NjJlMSBsZWdhY3ktdHJ1bmsKKzEzNTAxIGY5MGVkOTY2MzE2ZThjNjk0MjM5N2FmZDlmNjMwMzYwNjEwOGJiMWUgc3RyaW5nX21ldGhvZHMKKzEzNTAyIDRiOTY5MjY1YjlkMjFiY2NhODYyZDQ4NmY1ZjdmMGUyYzc1ZDU1ZWQgc3RyaW5nX21ldGhvZHMKKzEzNTAzIDcxMTM4MDM3MmJjOTE4YTJmZjBkNjk1NTlhYzAzYWUyZDZmYmI0ODkgc3RyaW5nX21ldGhvZHMKKzEzNTA0IDE3ZWMwOTAyZWFmYTA2Y2Q3NDBjYzM2MjBjN2JkNWI5MTU2MDc3M2YgbGVnYWN5LXRydW5rCisxMzUwNSBiZWY0NmVhNWVmNzVjMDRjNGRjNjVkMzU2MmNhODhjODQyYjMwZWQxIGxlZ2FjeS10cnVuaworMTM1MDYgMzlmMjQyYmY0NjIyODM2ODc2YTI2ZTNlZGVjYjZmMWJjNDRhOTViOSBsZWdhY3ktdHJ1bmsKKzEzNTA3IDFkY2NiZWVhZjc2YWNlZjQzNmMxMDQwNmU5OThiOTdlMTg5ZWE5YTUgbGVnYWN5LXRydW5rCisxMzUwOCA2M2I1MzBjMDMwYzU0YjAxZTc3ZmM1MWQwOTg2N2NmMmJiZDAyOTk0IGxlZ2FjeS10cnVuaworMTM1MDkgYzczZjUzNzYyZjliMGYyZjExMjUwZTczZjdjMWRjNjZiOGRlNDM3NSBsZWdhY3ktdHJ1bmsKKzEzNTEwIGUzOWE5ZjEyOTE2MzI2ZDUyZTNmNjFkMmZlMmRkZGI4ODYwNmVlYTkgbGVnYWN5LXRydW5rCisxMzUxMSA3YTEyN2YxOTkyZDE5NzVkZGViOTA0Y2Q3NWUxNjA3ZjgzMzE5MjIyIGxlZ2FjeS10cnVuaworMTM1MTIgNmNhZmEzZDRlMjI5ZThiMGZmNTBiNDk4NjQ2Y2JiMzBmNjJkZDk5ZiBsZWdhY3ktdHJ1bmsKKzEzNTEzIDEzNDYyY2E2ZDk0NzU1ZWFiZWI4ZWFiMTZkMWNiZGVjMWM3NTkzZDcgbGVnYWN5LXRydW5rCisxMzUxNCA0MDUwOTk1YTY2MzliYjg4MmNlNjc0YTRiZWEyMjdiM2JhNTE3YmRlIHN0cmluZ19tZXRob2RzCisxMzUxNSAzYzM1MTI1NWYxNzNhYTk3MzIxMzQ0NzcyNTVkZDgwYTI1OTQ2MGE2IHN0cmluZ19tZXRob2RzCisxMzUxNiA0NmE1NjE3NzMyMmViMDZhYTQ5YjE5MWIxYmU2MTQzOGY3NTIzNzM3IGxlZ2FjeS10cnVuaworMTM1MTcgODdkM2Y5MWU0NGQ0ZDdjNGNlNTEyNjNlZWFhOWJjYjg4MjA1NTUxYiBsZWdhY3ktdHJ1bmsKKzEzNTE4IDNlMDVmY2FhYWVkMjE5MjE4ZWJhODYxMjdhOWRkYTIwNmQzODdkNTcgbGVnYWN5LXRydW5rCisxMzUxOSA3MDg2MjhiNmMwNGJmMjJlNGU3MDE4YzJjNjM2N2M5NmJiYjAxZmI2IGxlZ2FjeS10cnVuaworMTM1MjAgMGQxODZjMTBhNzBlMjRiZDljYjQ3OTU1ZWIyOGIyZGQzMGU2OWM0YiBsZWdhY3ktdHJ1bmsKKzEzNTIxIDg0YWIxNGQ4NTc2MzQzMGMzZGM1MWMzNzIzY2JlYjgxNDQzZTZlMDAgbGVnYWN5LXRydW5rCisxMzUyMiBlNjhlNjA2YzEzMGY1MWFlOTBhYjg1NzU5ZDVmNzQwM2Y0YjRlN2U0IGxlZ2FjeS10cnVuaworMTM1MjMgNjk2MTVkNTBmNThjMDA1ZDJkZjU5ZjM0Y2U3NGNiMWY0YTY5NjhlNCBsZWdhY3ktdHJ1bmsKKzEzNTI0IDhhNGZjNGRhNzY4ZDhlY2NlZDZhMzgyMTVjZDI0NmRmOTdlZDZkY2MgbGVnYWN5LXRydW5rCisxMzUyNSBmY2FjNjQzMmE3ZGZiM2Y1MTk3OGI1ZTFkZjdjZjQyNGRhN2VmMTY3IGxlZ2FjeS10cnVuaworMTM1MjYgOTI2Y2I1YTVlZTMwOTMzNTk3ZTA5OGFhODJhMDlkMTFjNmI1YTdiMiBsZWdhY3ktdHJ1bmsKKzEzNTI3IGU1MjcyM2FmM2NkNWU2ZjEwZWQ5NWRlZjhiNGQ5ODRiZDc5M2ZhMWUgbGVnYWN5LXRydW5rCisxMzUyOCAwODZiMmJjNzU3OGY5ZWYyYzVjNWMwMzYwNDNlYzliNDY0YzRhYjE0IGxlZ2FjeS10cnVuaworMTM1MjkgOGMxMTRlZGUwNTY4NjFkZDVlMjViYTMxMTliZjRiNmMzZjk3YjQwNCBsZWdhY3ktdHJ1bmsKKzEzNTMwIGM4ZWQ1YTE0NDg4ZGU2ZDMyNGQxNjdhMTVjYjFkY2NmYzUwMmI4ZDUgbGVnYWN5LXRydW5rCisxMzUzMSAwODcyZGEzZjNmNTYxMjEwOWZjMDYzMWY3ZTIwZTY4NzUxMjk3YjEyIGxlZ2FjeS10cnVuaworMTM1MzIgYjlmNTVjYzEwYWIzZjEwYWE0YjQ1MzRlOWQ3MjA5MDY1Y2U0NzY5MiBsZWdhY3ktdHJ1bmsKKzEzNTMzIDQ4MThjYjhlMTExMDFkZjQwMGQ3YjdlNzdkMzJjMjYwYjE1YTlkNjYgbGVnYWN5LXRydW5rCisxMzUzNCA0OTJhNjk0ODkwMjg2YTJhZGM0YTI4NmIxZjM3NjkwNWI5ZjIwMTgwIGxlZ2FjeS10cnVuaworMTM1MzUgZTk0NDI3MzRiYzQ5NzNkOTJkOWVjNDIyMzIzY2Q4NzIwYjQ5Mjg5MCBsZWdhY3ktdHJ1bmsKKzEzNTM2IDNiM2M3YjhhZGU3ZmZjODk3NmYzYjZhZTUwYTg0NDdiYzdhZmEwZjQgbGVnYWN5LXRydW5rCisxMzUzNyA0MDc3Y2EzYjI2NTYzMjg5OGJjZGNmNDc1YTlmN2M0NTRlOTAzNWExIGxlZ2FjeS10cnVuaworMTM1MzggMmEyZTk5YWYzODI5MTRlNjI5NmJlYmI3MDk2MTE2MzVkZTBmYzc5NSBsZWdhY3ktdHJ1bmsKKzEzNTM5IDZjOTJkYjNhNzdjZjM3YTAzYjgzZGQ2MzNkNTVmOTI2MDIwNzAyYjkgbGVnYWN5LXRydW5rCisxMzU0MCA0MTM4NWQ1MGExMGM3NDY1MjQzN2Q4Y2VmNGJhNWY4OWFjNTI3MDNlIGxlZ2FjeS10cnVuaworMTM1NDEgNzQ5NzExZjg4NWNkM2U1NjBlYWVhOGYwNWZjMTMwZmYwNjJhYzRjMyBsZWdhY3ktdHJ1bmsKKzEzNTQyIGY0YzYzMTg1Y2UxMTA4NzQxOTRiNDBjMjk0YmM3NDI0N2I3YjYyM2EgbGVnYWN5LXRydW5rCisxMzU0MyAzMDhjZTIxODM5ZDYzZmEwMTk5OTMxZGQ4MmM4MWNjZGU4ZmRmMDM5IGxlZ2FjeS10cnVuaworMTM1NDQgNjEyN2I3Mzg1OGJjOTFmMzUzMTk4M2VlNGY3Njg4MTczZmJiOGQ0MiBsZWdhY3ktdHJ1bmsKKzEzNTQ1IDNhZGMwMzQyZDA4YmQyNWY2ODNkYjA0YTQyOGIzNmQ3NzgxZGVmOGUgbGVnYWN5LXRydW5rCisxMzU0NiAxMTllMTE5ZmNmNWFjMGIzNzA2M2E2YTg4N2Y5NTEzZWI3Y2VhMzZkIGxlZ2FjeS10cnVuaworMTM1NDcgMTI2YTljZGYwNTcyOWUxNWY0MGM1YWQ1MWQzM2MzODE4MzcyNTc0NiBsZWdhY3ktdHJ1bmsKKzEzNTQ4IGU2YWJlZGJjNzljNjllZTllOGQ0ODkxYTgyNWJmZTRkN2QwZjM0OWIgbGVnYWN5LXRydW5rCisxMzU0OSAyNzFhZjI5N2FhM2VhNzk4NTM0YjhmYjZmZTg3YjZlMGZiZGZlYmQ3IGxlZ2FjeS10cnVuaworMTM1NTAgMzFmZDRlZDczZDI5ZTUxZWU0MWJiOWNkODQ2YWU1MTMxMGI1ODg4NSBsZWdhY3ktdHJ1bmsKKzEzNTUxIDY0OWRhYWQ2Y2Y1MTY3ZmQzZGJiN2I1YWE3OTJiNzZkM2Q1NTllYTcgbGVnYWN5LXRydW5rCisxMzU1MiA3NzFhOWExMDBkNzViYzhkNzA5NmUwMzc4Zjk5MzczMDBkNDZjMzk2IGxlZ2FjeS10cnVuaworMTM1NTMgMzgxOWViN2M4MzRiMzU4ZTQxYWUwMGZkMDFiNmQ0YzdjNzNlMDk2OSBsZWdhY3ktdHJ1bmsKKzEzNTU0IGY5YmE4MDIzOTc2ZDY2MjBhOTJhNTk3MTMwNTFjZDZjZjliYzc1MzcgbGVnYWN5LXRydW5rCisxMzU1NSAzYmU5MzViZTM3ODFmY2QzZDZmMDMzZjEyOGY0YWVmOGI2OGEyYThiIGxlZ2FjeS10cnVuaworMTM1NTYgOGI3ZjY1YjBkYjE4YTM2Yzk4NGQ1OTYxM2EwNTk3YjNlYTY0MmE4MCBsZWdhY3ktdHJ1bmsKKzEzNTU3IDM2Njg0Y2UwZDQwZDYzNjkwY2U5MWFkZjA3ZTdiODcwODNlNDMzZjkgbGVnYWN5LXRydW5rCisxMzU1OCBjYjM2NjMyMTE1MmNiMmU2OTcxZWJlNDZmMjcxMGNiYzRjNWJlMmQyIGxlZ2FjeS10cnVuaworMTM1NTkgYjZhNDM4Y2MxOTViOTk3YmFjMjQ0OGEwMGNhNWE2MmMyMTBiMjBjZCBsZWdhY3ktdHJ1bmsKKzEzNTYwIGFkMTVhMDM5NGY3ODI4ZmQxZTdiNDU5ZTcyNjg0NGMyNWJkMDY0NDAgbGVnYWN5LXRydW5rCisxMzU2MSA1YWRiYjNmMDRjYmMyZjkyNzg4ZDMwODY2YTg0NDM4ODRiYTRjMTgyIGxlZ2FjeS10cnVuaworMTM1NjIgMTJjZjkwOTY2ODIyMzAzNjI4MWIzZmVhZDBkYzZiOGRmNzVlMDM2OSBsZWdhY3ktdHJ1bmsKKzEzNTYzIDVmYTk2ZDA1MDMxOWQ4NGJiY2MwYTJhYjRkM2E0NjYyMzg0NGZjMTUgbGVnYWN5LXRydW5rCisxMzU2NCA5Nzg5NmMwOWVmMWIzMzFlMDkxNGJjMzc5NDEyMjViYjk1Y2E4MGY4IGxlZ2FjeS10cnVuaworMTM1NjUgNjI2Y2FlY2E1MzVhMjQzYjBjODFlZDc0NDYzMWVkY2UzZjE4NGY0YyBsZWdhY3ktdHJ1bmsKKzEzNTY2IDI3YzQ4ZGYxY2ViNzk1OTFmYjJlYWRjOGZiNGI5NzY5MzQwMTQ1NGUgbGVnYWN5LXRydW5rCisxMzU2NyBmNzhmMTZmZWE0NTU3ZjRkNGJhODA0NzY4OWM5ZjczZGNjNTcwNjM2IGxlZ2FjeS10cnVuaworMTM1NjggY2MyZWIwMWExNmY0MjNiZmIwNDcyMmQwODBiYmJhN2RhZTBmNDc5ZiBsZWdhY3ktdHJ1bmsKKzEzNTY5IDgxNDk4YzRlNTY5ZDM0OThlNDFkYjRkZGMyM2VlNWVhMDVkN2E5MjAgbGVnYWN5LXRydW5rCisxMzU3MCA1YmI0ZjUwZGE0NzRhNWI0NTcyMTRlMmEyZGU0ZmJjODhkNTM2NDJlIGxlZ2FjeS10cnVuaworMTM1NzEgZmQ1NDZjYmRmYjVmODY1YTkxZWVhNDc4MzczZjQ0YmYxZDQzMTRlZiBsZWdhY3ktdHJ1bmsKKzEzNTcyIGFlYjEwY2MyMzAwZDZlNmE1Yzg0MDE3YmRkMmVhMzIwYzhmYWIyMmEgbGVnYWN5LXRydW5rCisxMzU3MyAyMjJhZWU5NmRjNDI1MTBhOGE3N2QwN2I5ZGQyZWJlOTVhNzhjMjA3IGxlZ2FjeS10cnVuaworMTM1NzQgNGY1MWU5N2E2ZWRmNWQ3OGEwOWYyZmNmMzdkZmNkODU2MjIwYzczMiBsZWdhY3ktdHJ1bmsKKzEzNTc1IDVhODJmYjRmNzhlNTk0Y2RmOGI4ZjAzYmUwNzEzYzUxOTdjODgyYWIgbGVnYWN5LXRydW5rCisxMzU3NiAyN2ZiYjA4ZjhjMzhkY2FlNzQxZmU5MWQ2YTI2YWU5MzlkZmQyNTQ5IGxlZ2FjeS10cnVuaworMTM1NzcgMjUzOTcwYTJjMDVkNjY0NTVjOTFmN2FjNGViNzk2MzY0YWI3NDRmYiBsZWdhY3ktdHJ1bmsKKzEzNTc4IDI1NmI4Nzg2ODlmM2IxZTRhMDg5OTkzZDRkOTgwNGI4YTEzMzc5YzYgbGVnYWN5LXRydW5rCisxMzU3OSBiM2FjZDU2NTIwY2Q5ZmFmNzIzMjFlMzczMmUzN2VlMGVlNjAxODJlIGxlZ2FjeS10cnVuaworMTM1ODAgYmNjMGJlN2NiNDA4MDFkYjFhMGFjOGUwZjhlNTNlNDA3N2FkOWE1ZiBsZWdhY3ktdHJ1bmsKKzEzNTgxIDEyMDk4YThhOTVlY2I4YjU3MzdjMDhiNDRhNTJhOWQwNTEzODNiM2IgbGVnYWN5LXRydW5rCisxMzU4MiA3OWVlNmRjOTNkMGU5ZTNjYmQ5Zjg1ZGIyOTk3ZDkxZDFlZjQxMDE4IGxlZ2FjeS10cnVuaworMTM1ODMgOTYzMWY5NzI2YTcwNWI0OTA3OGY2Mjk3ZDE3NTMwMzUzODg0YjQ3NyBsZWdhY3ktdHJ1bmsKKzEzNTg0IDA3YjA3Mzc2Y2E3Mjg4YzQ5MzE0ZWI1ZGMyM2NiZTlkYzUxYjE3MDIgbGVnYWN5LXRydW5rCisxMzU4NSA5MDIzMTZjNzJiNDNmOTUzZTBkM2M0OWZlZjk3OTVkMThlOTVhMDdiIGxlZ2FjeS10cnVuaworMTM1ODYgZTNkZGI4NzYxNjM3MWNiYjU3YjdjNzQ5N2U5N2Q5NzYwNDc0MjIzNSBsZWdhY3ktdHJ1bmsKKzEzNTg3IDQ5ZThkZTBiNWVhNzRhODU1YmI1NDU0YjA3ZjRlZjc4MWU0ZGU4NTYgbGVnYWN5LXRydW5rCisxMzU4OCA3ZWQ2ZmJhODI2NWNiNzlmNjExN2VmN2Y5NWNhOTk4MWIyMDFmYjk1IGxlZ2FjeS10cnVuaworMTM1ODkgZjExMTQ4YzVmYmVkY2NmMmI0YWEzMjI3YTBhNzQ0OTIzZmM5Y2Q3OCBsZWdhY3ktdHJ1bmsKKzEzNTkwIGQ2Y2E5MTA2M2NlYzkzY2JlYmM3ZjgyZjU5NjEzZTMzZTBhNmQyNDcgbGVnYWN5LXRydW5rCisxMzU5MSBmNTI2ZGI5YTZjZjgzNmRmMDFiZjgzN2ZlZDJlMTQ0MmFkNjJiZjQ3IGxlZ2FjeS10cnVuaworMTM1OTIgZGZiNWFkZDY4NGMzZTgxMjE1ZDM1ZjY5NDZjYzE1Y2Y4MjY3N2E1MyBsZWdhY3ktdHJ1bmsKKzEzNTkzIDYyODJhY2UyNzk1ZTA2Y2JjNWEzMDYyNGQ0NjU2ZTgxYmFkNWJmYzEgbGVnYWN5LXRydW5rCisxMzU5NCBiYWUzZmJlMmI1OTFhZjlkZWEzYjYxNGM4MGNlZGY5OWJlYTg2NTdlIGxlZ2FjeS10cnVuaworMTM1OTUgMGI2NTgzNWUyYjI5MDlkNjViZTJiZTlhNDA2MmFkMzM1MzYzZTgwNCBzdHJpbmdfbWV0aG9kcworMTM1OTYgOGU0ZGQ2YTE2MWZmYjdjYzQ3ODBlMTdmN2M3OGJlNjAzMDI2YWQ3OSBzdHJpbmdfbWV0aG9kcworMTM1OTcgMGRkNTBhNzBjNDdlMjJkNjJmODEwYzY2ZmFlYzJkOWRmOTU1YTlmMiBsZWdhY3ktdHJ1bmsKKzEzNTk4IDJmZDY1ZDBmM2Q0MTUwODNjYzFmNzMwZWI4MmQ4YjMyOTM1YjYxMDUgbGVnYWN5LXRydW5rCisxMzU5OSA5ZGQ4MTlkOTkzMjYzOTI2YzJhNGY0ZWFhZjdmZTcyYmNjNmFhNTAxIGxlZ2FjeS10cnVuaworMTM2MDAgYTg0ZjlkMzk5OWFlODQ2NTk0YTEzNDNkZmU4YmI3MmEwMDFhZmZhNiBsZWdhY3ktdHJ1bmsKKzEzNjAxIDY2MTNkZmQ3MzkxNzE4Y2RjNWY0MTQzYWY2MTNhMDRhMWUxMmEwNzAgbGVnYWN5LXRydW5rCisxMzYwMiAzNmUyNThiNTc3NTA2NjkzYzQxMjExODg2NmM3ODQ3MzJjZjcxMTFjIGxlZ2FjeS10cnVuaworMTM2MDMgNGExZDZjN2IwOTUwMWY5M2M3OGU1MmI5YmVhNGI5ZDZiZmE1YWQ5NyBsZWdhY3ktdHJ1bmsKKzEzNjA0IDYxOTNjYzE0NWI4YzdhZDhlMWNjOTdkZThkMTk1OTFkMGM5ZDc4MWIgbGVnYWN5LXRydW5rCisxMzYwNSBkMWI0OGVlMTQ2MDFmOGE1NDQ2OWI1MTY1NTZhODliZDQ3NTkwNDlkIGxlZ2FjeS10cnVuaworMTM2MDYgODdhMzkzNWU2NmFhY2RjYjFkNDhmMzU3ZDg0NmRhNzczMDNkN2QxZCBsZWdhY3ktdHJ1bmsKKzEzNjA3IDNlNWY2OTY0Y2QzMzE3YjAyZDRlNDY2ZWRhMWVmYWIwNzlmMTFlM2MgbGVnYWN5LXRydW5rCisxMzYwOCA3NjAwOGY4YTBlNWY2Y2RlMTcxNWZlZDFlZDQ2NDI1ODZkYmU5NTM5IGxlZ2FjeS10cnVuaworMTM2MDkgZDA0NjA5YTM3ZGMxMTY2M2IxNjI0M2FiYmI1ZmNhMDQ4ODM4M2EzYyBsZWdhY3ktdHJ1bmsKKzEzNjEwIDViZTk0MDZiYmIwNWNhMTEwMzc1Y2M4NWFjZjQzMDY0MTBhZmI4ZmEgbGVnYWN5LXRydW5rCisxMzYxMSBkNDUxYTIxMWMxNmEzZDY3ZDhmZmNiMWQ5NDcyNjQ4Y2EwOTEwZmM3IGxlZ2FjeS10cnVuaworMTM2MTIgMjU2NzM4ODRhM2QwZjNjZDI3Mzg3ZjkyMTU1Y2JiMWJkMWQzNGRkNyBsZWdhY3ktdHJ1bmsKKzEzNjEzIDg0NjEyYTU2ODhmYzkzYzI0ZTFkNWYwZDQ2NjYzZmFkMGE2NDczMjAgbGVnYWN5LXRydW5rCisxMzYxNCBkYzZiZTBlZDM5OGNmZDM3Njg4YzY3YWI0ZDVmZjdmY2IwZWMyMjUzIGxlZ2FjeS10cnVuaworMTM2MTUgNDQ2M2RkN2JiM2U4OTVmM2UwNTljN2FkZGQ5ZWNjM2E5OWYwZDhmMyBsZWdhY3ktdHJ1bmsKKzEzNjE2IDRhN2IyYjRkMTY2OWFlZjVmMGRlOWM3NzE1NGVhODNmN2Q2OWRmM2QgbGVnYWN5LXRydW5rCisxMzYxNyA0N2UwMDNiZDM1ZWQwNTNhODlmNTlmM2I0Y2Q3NDM3Zjg4ZTYyOGI3IGxlZ2FjeS10cnVuaworMTM2MTggNGI1M2Y0YTBhOThhY2QxYmZjZGZjNjMwMzNkZjViNzVlMDNlMTc0NSBsZWdhY3ktdHJ1bmsKKzEzNjE5IDcwMjllMThiNGYxMWU3N2M0OTU3OGFmYWJmYzRkM2U3YTZjMjU3Y2UgbGVnYWN5LXRydW5rCisxMzYyMCAyZTAwYjg4OTAzNWYyZjQ2N2Y4YTQwZjg0ODc0MWYxOTUyNDYzM2RkIGxlZ2FjeS10cnVuaworMTM2MjEgNzI4YTI1MDBlYTQyZmI1ZmE4MzFiZmM5MGM1NWU5OGZiZDQ3YzRjYiBsZWdhY3ktdHJ1bmsKKzEzNjIyIDFkNGY1ZjQ5ZGU0ZWNmMzhmMTk2MDljOGNlM2Q4ZmM4MmFlZjE2MmIgbGVnYWN5LXRydW5rCisxMzYyMyA3NjljNmI0YzViODg3YzM0ZTc1M2ZmNTY2ZTg5NDc0YjM5MGUzMDQ1IGxlZ2FjeS10cnVuaworMTM2MjQgNGM3NTU5NmU5MmY0ZjhhZGVmYmUwM2NhZWM1Mzc3ZDlkODNmN2E2OCBsZWdhY3ktdHJ1bmsKKzEzNjI1IDljMjkyYWQ4YTZkNDYzYzAzNGY1NDJmYWUzMDdjZTk5OGY4ZGI1MWEgbGVnYWN5LXRydW5rCisxMzYyNiA3MWVkMGEyYzI3OWE2MDVmMWJkZDk4ZjY3N2JlNTY3M2NlNWNkYTBhIGxlZ2FjeS10cnVuaworMTM2MjcgZmEyZTNkMDZjNzkwMmUxNmJkN2EyMGU3M2I4NTM4YzA0MzQ1NDAwMSBsZWdhY3ktdHJ1bmsKKzEzNjI4IDg3MmE4MmZkMGVjNDFkNDg3NGIyNTBmNDAyNDIwZjUwNzdiMjhhZDkgbGVnYWN5LXRydW5rCisxMzYyOSBhYTZjNWY4NmRmODdhNGU1ZWIzY2Q2ZDE2YjY5OWVlY2FjMTk1OTAyIGxlZ2FjeS10cnVuaworMTM2MzAgZmJmNDBkN2ZkNGRhYzI2NWMxMjE0Mzc4M2E3ZWRkNTVlY2RhMmQzYiBsZWdhY3ktdHJ1bmsKKzEzNjMxIDY3YmQyYWFlMjczMmVhYTVhMWE5ZDY2MTczZDc5YmQ3NDRmMzQ4OTcgbGVnYWN5LXRydW5rCisxMzYzMyAwNjhmYmY0ZjU1OGEyMzNjNTQ2YzZhMzdhMzE2YjgzYTFlZDVlNDNhIGxlZ2FjeS10cnVuaworMTM2MzQgNWU4NDhjM2U5YzVjNzFjNDRlNDMyZDJjNDU1Njk2OGFiNjk1MjAyMiBsZWdhY3ktdHJ1bmsKKzEzNjM1IDE0Mzc0YmEzNDFhNjdhOGY2NTU4NWVhYzI5YmNhN2U0NmFjY2NmZTMgbGVnYWN5LXRydW5rCisxMzYzNiAxY2RlNTIzMGM1MDgxOWUzZDI0NzNjYzEwZDI2NzE0YmExYjhjN2Y3IGxlZ2FjeS10cnVuaworMTM2MzcgNmJmNjIwMzc1OTc2MzQ5YTk2ZGViMTQ2NjU2ZjgzNzEzMWQ0N2IyMyBsZWdhY3ktdHJ1bmsKKzEzNjM4IDk5Mjg2ZGFhOTAwZGQ0OGU1NDBmYjc5MmNhNDY5YzQxYWNjODc0NzkgbGVnYWN5LXRydW5rCisxMzYzOSAxMmYyMDhkYjQyYjBlOTJmYWM2YThmOTM3NmYzMjRiNTIwZDZiYmUyIGxlZ2FjeS10cnVuaworMTM2NDAgNzhmNWJmMTc5NzUwNGE5ZTY2OTUyNWZiMGI1M2ViMmY1YWVjMDVmYSBsZWdhY3ktdHJ1bmsKKzEzNjQxIGJlOGVjODI4YzA3MjM3MjhjMjcxOThiZjQxN2MzMjIwMzE5MzhjYmUgbGVnYWN5LXRydW5rCisxMzY0MiAwMTBlN2I2OWQ4NmJmMGUwZjFiNzM4OTRhM2U4YTJmMjExZTMxNmQ0IGxlZ2FjeS10cnVuaworMTM2NDMgZGNjMDkyMjhhM2QyNDIyM2M3OTFhMWVkNDhmMDVkNWI3ZmNjOTc2NCBsZWdhY3ktdHJ1bmsKKzEzNjQ0IDkzOWQ5MTRhZjU4MTZmZmM0NmNmZjc3MjU1NjkxOWI2NDIwZjZiMzIgbGVnYWN5LXRydW5rCisxMzY0NSBkYTljODNiNWZiMDc0NWVjYWFjNGJiNTIzNDRiOGIyYmNkZGM0OTc2IGxlZ2FjeS10cnVuaworMTM2NDYgM2IxOTgwZGI0YWU5OTA0NmNlZDJhODBjMzEzMTU0ZWNmYjc5MGNkZiBsZWdhY3ktdHJ1bmsKKzEzNjQ3IDE2NGI0YmM0ZGRkZDBmODI5NTg2NWRjYzY3MjFhMmIwNjk5MGYwODggbGVnYWN5LXRydW5rCisxMzY0OCAzYTM5ZWJlMjc2YzhmNGY4Yzg5Nzc4ZjMzMzAwMGNlMDhhNWE1OTY1IGxlZ2FjeS10cnVuaworMTM2NDkgZDQyM2Y1Nzg0NGIyNmI3MmI4MWQyZWFmMjY4NTdmNDIxMWQzZjUzZiBsZWdhY3ktdHJ1bmsKKzEzNjUwIDMwNmI0OWQ2ODIzMzdjYjk1NmQwNWVjMmRmMDA5NmJkOGNmZjFjMWEgbGVnYWN5LXRydW5rCisxMzY1MSAyZWIyODc5ZDU2N2Y0YjMxNjlmMmFkYTlhM2M4ZmYwM2E2MjIxMzdlIGxlZ2FjeS10cnVuaworMTM2NTIgN2MyMzk3MTEyMjFhMjQ3NDVmM2IxZTYwZjkzMWY0YjYwNjBkODQxZiBsZWdhY3ktdHJ1bmsKKzEzNjUzIDQ0MmZmZTlhNThjMTNjOTcwMWM0N2VhNzM2NmNkMDliNDcwNWU1NjAgbGVnYWN5LXRydW5rCisxMzY1NCA1ZTc2Yzk5NjVmZTgzOTAxZTBiMTc3MjVmZThiODBmYjZkN2I2MjhiIGxlZ2FjeS10cnVuaworMTM2NTUgOWEyMDAzOGYwYjk5N2VmMGRjMjAwY2ZmMTUxMGFmZDY4NmQxZWE1NCBsZWdhY3ktdHJ1bmsKKzEzNjU2IGE0YjcyNDJhNGI3NGNiZjQ3YzliNmNhNjA0NzJlYzA1MWFmNmVlODkgbGVnYWN5LXRydW5rCisxMzY1NyAxYzZmZGM4YWRhYjBhNGM2ZmRjNWRkMTZlYzYzYjcwYzA5MGFhMTZkIGxlZ2FjeS10cnVuaworMTM2NTggZjcyOWJiYzRhOWYzMTBmOWY3ZWE1ZGZmOTg5ZDViYmQzYThiNGFkYyBsZWdhY3ktdHJ1bmsKKzEzNjU5IDBkODhlMGQyMTg0Zjg5MzlhYmQwZDdkMGYwNDAxY2I1ZjkzZjU5MzkgbGVnYWN5LXRydW5rCisxMzY2MCA0MWE0Njk3OGE0NDRhNzI5ZDc3MmYxODc3MTdkMjYyYmUzZjExY2M3IGxlZ2FjeS10cnVuaworMTM2NjEgMmM1ODU1MjY0NDdlOTVlYjhmNDNlZjljM2JiYWMwZmEzNGE2OWEwNyBsZWdhY3ktdHJ1bmsKKzEzNjYyIDgwNDlkMmRlMWU3OTRhYWM0NjYzZmZmY2IyNDhiYjg4MjRhZTVjNjkgbGVnYWN5LXRydW5rCisxMzY2MyA4NGUzNGQ4MTM4YWM5MDQzNTFmZjhkNTY3YTJlM2YxYTljYjllMGY1IGxlZ2FjeS10cnVuaworMTM2NjQgYzJhYzg5NjkyNmNjNGE3OTg0ZTg1MjhkOTM3NTdhMThmMmU5NmEwMiBsZWdhY3ktdHJ1bmsKKzEzNjY1IDBhNWE4ZjUxM2QxMzYzYTdhNzkzMWM0OTYwYTRlMGI2ODMxNzdkOGMgbGVnYWN5LXRydW5rCisxMzY2NiBiNTZiZGExOTAwZmMwZWQwMGM3OWJkNmFiYjNhNGFhOTRkMGQ0OGNmIGxlZ2FjeS10cnVuaworMTM2NjcgMmMzYWY5MGYzZmFlYjQ1NTZhNTMxN2ZkMjFjMzNmYmU3YTVjOGEwMSBsZWdhY3ktdHJ1bmsKKzEzNjY4IGNkZmE5Y2Q0ZTcyYmIyNmE3ZDVjNDI1NDcxODg0NzQ5YjM0NmZkMzggbGVnYWN5LXRydW5rCisxMzY2OSBjMDk1NDExMjhjNWE0MWRlMzU2Zjk0MGQ2MDFmNmI4ODYzMWY2NDZkIGxlZ2FjeS10cnVuaworMTM2NzAgYzk1ZTFmZDg3YWYwZjA2OTZmYjI3OTdjZDBjYzVhMjg4ZGYxM2I0ZSBsZWdhY3ktdHJ1bmsKKzEzNjcxIDJiN2M0M2Q0YjQ2OWIwZjIyMjBjOTVhNjZhMGYxMWE0YmU2OGE0MmQgbGVnYWN5LXRydW5rCisxMzY3MiAxZGJjNWU2OTc4ZjlkZDJmNTg4OTQyYjQyMWJmODQwZjA0MTVjMGQxIHN0cmluZ19tZXRob2RzCisxMzY3MyA0MWZjYjQwZTg0MWZkNmE2MzEzY2VkZjJlY2FhYmQ3NTYxYmU2OTlhIGxlZ2FjeS10cnVuaworMTM2NzQgZDk5N2UyN2UzMzEyYmMwZGM2NmYyNzA5OTVkNTg3MzFmODlmM2MzMSBsZWdhY3ktdHJ1bmsKKzEzNjc1IGY2MmU0NjVjNGQwMTRiOGUzNmI4NTI0OGZhODEyOWRlMDY5MThhZTcgbGVnYWN5LXRydW5rCisxMzY3NiBiYmQwMzVlNWE5NzJjZmExZWFhNGVmYWM3ZjQ0M2MxZTBjMzY4ZDVkIGxlZ2FjeS10cnVuaworMTM2NzcgYjhhMjlkZTllZDU0YjI0M2FiZDM0NDcwOTk1YjllNDY2YmUwZjcwMSBsZWdhY3ktdHJ1bmsKKzEzNjc4IDg3OGFjMGNkMGU3NjgxOGUyNTYzZGVlZTNlMmE5MTYzZTI5Yjg4ZWQgbGVnYWN5LXRydW5rCisxMzY3OSBmNGVmYmEzMjMyMGVjNDNhODE5NGMyMWI1OGEyY2Q4OTM1ZDViMTM5IGxlZ2FjeS10cnVuaworMTM2ODAgODNmMzlmYzg1NzYzYmVmNDI5YjlmZjI1YTA4ZTFjNTlmY2E3M2JiMCBsZWdhY3ktdHJ1bmsKKzEzNjgxIDM2YTY1NDYyYzI2OWQwY2NkMjVjNDEyZWViZjdkNmFlMGM4NTg0MGMgbGVnYWN5LXRydW5rCisxMzY4MiAxYTY4Yzk3MmQwODQxZTM1ZDRlM2UxMzAzOTE1NDIxODc5MDQ2NzgzIGxlZ2FjeS10cnVuaworMTM2ODMgNjg1MmZmMDMwMzA4ODRiZGZlNzU5ZjJmMzRjNDFhMjRjNWM5NzcxYyBsZWdhY3ktdHJ1bmsKKzEzNjg0IDJjNGQ0OGUzMWJkNWU3OGFiNzA5M2MyZmFhMzhlOTUyZDFkM2U4NmUgbGVnYWN5LXRydW5rCisxMzY4NSA0M2NjYmNmNDM4NGYxMjMxMTMyMDJkOWFhNmE4OWRjZTZmMzZjYmRiIGxlZ2FjeS10cnVuaworMTM2ODYgN2NlNWJhZTdmNzY1YTQ2ZWNlMTU1ZDBlNDE2NTNiOTIxMmJhZjRlNiBsZWdhY3ktdHJ1bmsKKzEzNjg3IDJmMTAyNmRiODIyODBiZWZlN2Y2OGJkM2VhNTk1OTE5OWVmMGNjZmIgbGVnYWN5LXRydW5rCisxMzY4OCBhZWQxOWFmNjBlYTMyNTJjOGRmMGNhZWU2NTZlNGZjMmRjZTliNjNjIGxlZ2FjeS10cnVuaworMTM2ODkgMGJhZmYxMzVjNGI0ZTFiMDhiYTBhZTc4YmQwNjQxYmQzZDRiZjlhMCBsZWdhY3ktdHJ1bmsKKzEzNjkwIGQxNTRhZTdjYTAxNGY3OTEzMGU0NjAyOTQ2YmFmNzMzYTI5YWY2NDggbGVnYWN5LXRydW5rCisxMzY5MSAzYzhjNTU3NjEwOWMzNTdmMWY2YjU0OTk5YjNkYzg0NTFmYTc0MWRjIGxlZ2FjeS10cnVuaworMTM2OTIgNmU2YmRhZTg4MDhhNTMxOTQ1NGI3ZTZkZGJjNmUzYmYxYzYyMjU3NyBsZWdhY3ktdHJ1bmsKKzEzNjkzIDk4ZTU5Yzg0ZWMzMWEzZWJkYmY4NjI4Mjc5NmUxODcyNjA2ZjdhOWQgbGVnYWN5LXRydW5rCisxMzY5NCBhNGFiYTIwNTAzOGViNWEyYWI5OTI2M2UwMmYyMzAxZjg3NDM4ZmJkIGxlZ2FjeS10cnVuaworMTM2OTUgM2UwYzdlNjkzOWJkMDJhNjc1NTBjYTEwNTJkODAyZGEzNGI0ZDRlZSBsZWdhY3ktdHJ1bmsKKzEzNjk2IDFhMjdkZDA2Y2NlMTY5ZGFkYzI4MWQ2YWRjNDQxNzAxODAzMzEyZmEgbGVnYWN5LXRydW5rCisxMzY5NyA2MTdlMTBmYzVkOGQzMjhmYTAwOGZkMTM3YzdjOTQ5YzFhOGFlMDljIGxlZ2FjeS10cnVuaworMTM2OTggNWRhNTdlYTVmYzY0MTgxM2I1ZjI1MDYwNTdmZDAxMTdkNGI2ODlmZSBsZWdhY3ktdHJ1bmsKKzEzNjk5IDMyMDY1MjI0MmU2YmEwNmM1MTVhM2I2OGU1MDY5MmZmNzI0ZTk3YzIgbGVnYWN5LXRydW5rCisxMzcwMCAwNDkyOWFiY2FkODZiY2I1Mjc1NDc4ZWQwY2RkNWFjOTY5YTU1MDg2IGxlZ2FjeS10cnVuaworMTM3MDEgOGU3NGVkMTU0ZjYwODdmZWM3MmY1ZTYzODRjN2M3NjBmNzA0NDcyNSBsZWdhY3ktdHJ1bmsKKzEzNzAyIGY3NjZmYjZmODUyNjVhNDliODM4YjdlM2Q2NWE2YTFjNjhhODE4MjQgbGVnYWN5LXRydW5rCisxMzcwMyAzNDg1YTdlNDYwMGI5ZmVkZjE4ZTY1NWZiZjhhZTlkZTU0NjQ2MTNkIGxlZ2FjeS10cnVuaworMTM3MDQgZmFiODFkZjU2NmQwY2ZjZTQ2NGJmYTg0YzhiNTA0ZWIxYzUzMDQ1MCBsZWdhY3ktdHJ1bmsKKzEzNzA1IDY0YjE1ZTkwOTFhOTJiYjYzNTg5N2NmZjk5ODc1N2MzNTUwNGIyMjYgbGVnYWN5LXRydW5rCisxMzcwNiA1ZjVmYzEwMzE5NTdhYTVhNDJmZTFiNjI3YTQzYzhlMjczNTYxZGQyIGxlZ2FjeS10cnVuaworMTM3MDcgMjQ1ZDJiNjA1MDM2ZDE0ZjE0OTQ2N2M4MDliOGNhMzVhMWQyZDNjZiBsZWdhY3ktdHJ1bmsKKzEzNzA4IGQ2YWI3MmNiMTYyNThlOWMxMTExYTU1OGJmYTRkNmU3NTFkNWVhZDYgbGVnYWN5LXRydW5rCisxMzcwOSA4MTc1YmZkZmJlYTllNDBmODE5ZjBmNmNkZTZhOWQ3MzJmNmFlYWNhIGxlZ2FjeS10cnVuaworMTM3MTAgNmMxMzA5ZDgyY2IxMTQxZmZlMzFiNmNmNDIxM2VlZjg1YmE1YmFhYiBsZWdhY3ktdHJ1bmsKKzEzNzExIDM1ZTBkMDNmMmIwMmY5ZjhjNWRkZmIzMTBhYmI5YWJjZmM1ZmMyMDggbGVnYWN5LXRydW5rCisxMzcxMiAxZTBiMTk2N2JlN2YzZTVkOTRiMjhjNGNkNGY1ODA1MTZhMDM0MjM0IGxlZ2FjeS10cnVuaworMTM3MTMgOTM4YjQ2ZmE2Mzk0ZTg4OGUzZGJkNzhjMDkzODcyNTY2NDc5NGE0MiBsZWdhY3ktdHJ1bmsKKzEzNzE0IGRiYjgwODNmMGNlNzFjMzljYzIyNmRiMjk2MTdkMGNhY2E2OTQxYjEgbGVnYWN5LXRydW5rCisxMzcxNiAyNGM1YmM2YmZjYWFmZThlZTViNWY2Njk0ZDY0N2MxZDNkYzU1MGU4IGxlZ2FjeS10cnVuaworMTM3MTcgZjZlNmNkYmFkYmI1MDRlMGMzMmJlMGE2ZjQ2NWE2NWM5MzhjZmUzMSBsZWdhY3ktdHJ1bmsKKzEzNzE4IDEyM2MzOGRhNmY0MzgzZjgzZmRjNjljM2Q1ZDNlNjZmOTA4OTVhYWEgbGVnYWN5LXRydW5rCisxMzcxOSBlY2VlOWRlNzliMWVmNTczNGY4ZjFkY2ZjZDYwZTFjYTNhYWJlNWQ1IGxlZ2FjeS10cnVuaworMTM3MjAgM2Q2NmExOTcxOTM2OTgwYTVjMGM5NDE2MDgzZTNiZDlkNTk3ZDYzYiBsZWdhY3ktdHJ1bmsKKzEzNzIxIDAxYzUxYjI2OGMwNDk2MWZmMmNhNWU2YmRmZTQ1YWFhOTcyNTZkN2QgbGVnYWN5LXRydW5rCisxMzcyMiBjNzIwMzE4ZTNjNDkyMDc4MTdkZmRiMGMzNjljMTM5OTk1NTJlMTQ2IGxlZ2FjeS10cnVuaworMTM3MjMgODk5NjFiNjgxM2FjMzkxOWI0N2FiOTJlYWE1ODhiMDI5OTQyMGYwNCBsZWdhY3ktdHJ1bmsKKzEzNzI0IGM2Mjc3MzRlYWY5MjlhNzljNjJhMzM1YTlkYTdmNmE0MTUwZjE2OGYgbGVnYWN5LXRydW5rCisxMzcyNSBhODE5NWZhMzI5YWMzOWJmYzJhMzkxZmIyZDFiY2E1NTUzMWI0YzFlIGxlZ2FjeS10cnVuaworMTM3MjYgMWM4ZTQyMjdkOTg3OTFiYWE5ZDgwOTk5Y2Q0YzU4MzVkNjY1NDlkZCBsZWdhY3ktdHJ1bmsKKzEzNzI3IDRmZGQzMzkxNGVkYWI0ODIwMjk2NWEyOGI5Y2UxMTQwYWZiOTI3NWIgbGVnYWN5LXRydW5rCisxMzcyOCBlOGIyNGNkMTdkZjIzZDg3MmUyNmU3NTZiZmEzNmEzZWM2N2Q1NzEwIGxlZ2FjeS10cnVuaworMTM3MjkgYzUyZmJjNmJkMzhhOTE3MDE1YjM5MmQ5YzllMDNhOTRkZTYwMDIxNiBsZWdhY3ktdHJ1bmsKKzEzNzMwIGJjYTJkMTRmM2UzNjUwZjZiMTdkNDIzM2Y4YzFmY2U1Nzg5NGM0ZTMgbGVnYWN5LXRydW5rCisxMzczMSBiZjU2NWIxOGNmZGM0ZmJhZDEwZjA3ZWRhOGY5YTM4MmExYTIwZWEwIGxlZ2FjeS10cnVuaworMTM3MzIgN2VlZWIwZDJiMGE0MDFiMTg3MjgyN2IwNWE1NjYwZmI2NjczN2UxNSBsZWdhY3ktdHJ1bmsKKzEzNzMzIDcxZTBiNDVkNTU4YzJmNjllNGIyMzcxNzVmY2JiMmMyOTI0NWU2YzcgbGVnYWN5LXRydW5rCisxMzczNCA5MTU3YzZkYTc2MTkzYTE1M2E0NmFmZGRmN2RlYjQxMDE3OTU0ZTk5IGxlZ2FjeS10cnVuaworMTM3MzUgZGU4ZmZkMmU3MWI1ZmFlYWQ2NzAyMmYzODBhZjlhZTY3YmMxNmRkNiBsZWdhY3ktdHJ1bmsKKzEzNzM2IDk4ZDQ1NzM4M2EyZDNmNGIwNWZjNzdhNmExNzI0ZWMzN2Q3N2ZjODYgbGVnYWN5LXRydW5rCisxMzczNyBjMzg4ZjAwYWZmZTdkY2IzY2FhMWZiY2YzNmMzN2I1ZTIzYjM5NjMxIGxlZ2FjeS10cnVuaworMTM3MzggNWZlMjYzZmI2NzRhYjFhMDA2N2U2Y2FjMDkwYzQ0MDY2NWFhMTdkYSBsZWdhY3ktdHJ1bmsKKzEzNzM5IGE4YjVhNWIzOTJmYmM1MmMwOTY4MWUwY2EyYzVhMzU3ODRhMzQzNmUgbGVnYWN5LXRydW5rCisxMzc0MCBjZjdjZDdiMDRmYTY1OWE1YzIxM2EyODE4ZTBkNzczZmIyZmNkMzQwIGxlZ2FjeS10cnVuaworMTM3NDEgZDVmNDZmNTk5NTg1YmI2ODQ1Zjc4MmVjN2U5NzQxZWY3ZTE3MmNhMyBsZWdhY3ktdHJ1bmsKKzEzNzQyIGQ1YjM3MzQ0MGY5OWEzODI1ZWNiODdhNDgwNTYwM2U3Mzg1NjQ1NjAgbGVnYWN5LXRydW5rCisxMzc0MyBlYWY5ZWVhYjNiY2ZmOTFkY2RkZTE5ODlmZjUxNjFhM2E2Y2ExNzY5IGxlZ2FjeS10cnVuaworMTM3NDQgOTY1MDFjYzNhNjYzYjQ3ODUzMjU0N2MwMGI2Y2VmNWFkODdmNmZlMyBsZWdhY3ktdHJ1bmsKKzEzNzQ1IGI1YmQzZjk3OWRjOThjMzFjYWI2NWU1ZDA3ZDdiZmExOTU2NTI4YTcgbGVnYWN5LXRydW5rCisxMzc0NiA0YWFlNWFmZTFmMTQ0NDQyZjU2ZWNjYmQyNDA3NzBjODU3MjIwMjVjIGxlZ2FjeS10cnVuaworMTM3NDcgZjQwNmU3OGVjMTBiY2RmNmNlZmQ5Y2EyNWZkOTlkYjI0NjRkMDRhNCBsZWdhY3ktdHJ1bmsKKzEzNzQ4IDQ0NWNiZThkYjhmNmY0N2U2MTc2MmViY2M2NzljMWRkNmI2MTc1ODcgbGVnYWN5LXRydW5rCisxMzc0OSAyZDczMzFmNGRmZTM1MWJjOWZiOGZhZTg0YjgxYjFiYzE5MTJkNTNkIGxlZ2FjeS10cnVuaworMTM3NTAgOGJiMjdmNGViZTE2ZTVhOTc0YzA5NTM2ZWI5MzJiM2Y5ODYxNmNlYyBsZWdhY3ktdHJ1bmsKKzEzNzUxIDMwODk0NjE5NjNjNGI5NTc2M2U1MzA1YzMwN2ExOWI1ZTMwNjM1M2QgbGVnYWN5LXRydW5rCisxMzc1MiBlY2ZlM2Q4Y2IwYzM0NzEwZDZiZGVjZWUxYTQwNmZiYjA0MzRiNWM2IGxlZ2FjeS10cnVuaworMTM3NTMgMjg1NmFkNWM2NzlhZTczOWM2NjMxMTI5NzViYTViZTMwNjQ2MDY0OSBsZWdhY3ktdHJ1bmsKKzEzNzU0IDlhNjZlNzgwN2M3NzM0MTllMTU4NjZiOGY3NjZlMjE4NmVmODRmMTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzU1IGFhNGM4ZTJlZjViNDI5ZTkwODZjZTgxZjY3YThkMTYxYTkzZGY1ZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzU2IDkwNTIyNjQ3MWI0YzdmOWZiMTkwOWMyOGZmOGMzMzg5MzNjMDJmYWEgbGVnYWN5LXRydW5rCisxMzc1NyBlMDFmMjM1MzliNmNhOGIzMmM1MGNiODBhNzFhODFlMGQ2ZDNiMjYyIGxlZ2FjeS10cnVuaworMTM3NTggYTBjNTIwYzFkMTJkNDZiNWU5NDgzOWE4MDJjOWM4ZGZlYzE4YjMyNSBsZWdhY3ktdHJ1bmsKKzEzNzU5IGU3NzNkMmYwNzQxZGM1ODcyNDkyZWU4ZTY1OTk0OGU5NmYxMjhkYzUgbGVnYWN5LXRydW5rCisxMzc2MCBlMGU2N2NmMmZjNjQ0NTE5ODBiNTQxZjJkMjU3MTM0YjY2ZDM4MzBlIGxlZ2FjeS10cnVuaworMTM3NjEgMTBlYmIyNWIyNDJkN2EwMDk0YTU5YTcwMjlhNzdjZjlkMmZjNjIyNyBsZWdhY3ktdHJ1bmsKKzEzNzYyIGI2OTg1OWI2OTc2MzljZWRmNTY5ZTU3MzUyZGZjNWJlMWRiZWQ1NTIgbGVnYWN5LXRydW5rCisxMzc2MyA2ZGM0Y2MzMThhNWM4YTEwMzNiOTk4MTgzODYzMmNmZWFhZjgyZTY5IGxlZ2FjeS10cnVuaworMTM3NjQgZTc0Njk0NGU5YTRhNjc2ZjljODM3MjNiMmYzZjdkNThjNTNjNjdiMSBsZWdhY3ktdHJ1bmsKKzEzNzY1IDgzM2ZkMjMzOGM2OThkYjQ2MzQzZjc2ZjBkNzhiMTBjNjdhMTU5YzggbGVnYWN5LXRydW5rCisxMzc2NiAwMjg3ZjViMzIyNGNjNzgxN2IzZDRlZmYzMDUxODQ0YWZkYTYzMWE1IGxlZ2FjeS10cnVuaworMTM3NjcgMDVlMGNiMzY5MTQ2MjdhNjkyMmJiMDM1MDA3OWMwNGJkYzNiYjMyNSBsZWdhY3ktdHJ1bmsKKzEzNzY4IDdmYjJmNDU2MmY3NjU3ZGEzNDliNGZhMWUzNDk1Nzc1ZDIwNTgwY2QgbGVnYWN5LXRydW5rCisxMzc2OSA3NzljZTQ2ZTM0MzBhOGFkNjVhZDkxNmNlMmEzNDZkZjdkZmUwZjQ1IGxlZ2FjeS10cnVuaworMTM3NzAgNTZlZjRjMmUwZDdlZmJiZDkxY2E1OGMwZDZkM2JmYjQ2ZTM4ZDY4YiBsZWdhY3ktdHJ1bmsKKzEzNzcxIDU3N2VhMjYxYmRmMjU5YWEzMjQxNjcxMGIwMTcyNmEwOTg4NmI1YTUgbGVnYWN5LXRydW5rCisxMzc3MiA0Y2M0YmFhMjRhNDAwNmUzZGYyMWI0M2Y2NTcxZGUzNjM3ZGZhODExIGxlZ2FjeS10cnVuaworMTM3NzMgNWYwMzI2ODZhMzcxMmQ2Y2Q4M2M2ODkyNjM0MWNiNzNiYjk0ZjY1NCBsZWdhY3ktdHJ1bmsKKzEzNzc0IDAwNjFjYTQ4NjVkNzM0YzhlODhiMWNhZGE2Y2UyMzA5YzY1YTI4ZmQgbGVnYWN5LXRydW5rCisxMzc3NSA2YWFjMzFjZDIxMDI1ZDgyNDFkNjYyNTQwZTc2MzE4ODY3Zjk0OGJjIGxlZ2FjeS10cnVuaworMTM3NzYgNDM4NWIxYmNiYzNiM2VhYjkxZjQzOWEwNjcwYTI2MTRlZjVjNTJhMSBsZWdhY3ktdHJ1bmsKKzEzNzc3IDg1NGI4MDEyNTNmMGZmYzZiN2Q3MmMwMWZlOWQzOWZkNWU0ZjU5NzEgbGVnYWN5LXRydW5rCisxMzc3OCBkMTNkYTE5NDE4ZWNhOGRlZjI3N2FjMTgxNjczNWE4OTkyNTQyYzgwIGxlZ2FjeS10cnVuaworMTM3NzkgYzljMTg4NDI2ZTc2YzJlOTNjMzNjYzMwMWE0MTRhNWU1ZjZlOGY1NCBsZWdhY3ktdHJ1bmsKKzEzNzgwIGU2MWM0ODZiMzU4YTUwNDU0MjU1NTA5MzZkNDMzYjg4YjlkMThmYzkgbGVnYWN5LXRydW5rCisxMzc4MSBhZWRlN2IyZGQ0MmZlMGZlMmQzNTg0NmNjMTVkZTQ5YWI5ZGM4YjQ3IGxlZ2FjeS10cnVuaworMTM3ODIgYjNmMWFiZDMwMjdmZGI5ZmMxMGMyY2M1ZjI5YWJkZmUyMTc0YjEyZiBsZWdhY3ktdHJ1bmsKKzEzNzgzIDJmMDdiYzU2ZTk3ZTdhYzc1YjRhYTAwMjFmZmU5MWRhZTQzZjdmNmIgbGVnYWN5LXRydW5rCisxMzc4NCBlY2M4MDE4YTQxOGMzNDc1N2FlMDcyNTdhNTVlNWUxNzdhZmIxOTBiIGxlZ2FjeS10cnVuaworMTM3ODUgYzZiZGYwMzJiNzA1NmUyYThkYmE4MmUxZjA4NzJlZmQ4NmMyZTc3NSBsZWdhY3ktdHJ1bmsKKzEzNzg2IDBkNzNjZTZkNjIyNjdjYWU3NDMzZmVkNjc0MTM2YzM0NDJiMjIwZDggbGVnYWN5LXRydW5rCisxMzc4NyA0MjdjM2I1MDA1OGVhYjBjOTBhNDY3ODAxZDgzYjY2NTBkOWQ0NzE4IGxlZ2FjeS10cnVuaworMTM3ODggMjZmYmM4MGZhZGYyNWFkYzBlMjkxZWI3ODJkMDFlODE5MzkwZTYyNiBsZWdhY3ktdHJ1bmsKKzEzNzg5IDBkNDRiMGRiZGQ5NTFiMTkwMGRmNmRlZTE1OGI3ZWE1MGQ2YmJiNDcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzkwIDdhZDRlMzk4ZjNlYTNkYzI0MjM4MmZlY2ExMjU1YjU2ZWY0MWZhOTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzkxIDkyODZkM2UxNDc0YzU0NjM1OTY1MTM0MWJlOWI4MTU3YmZhZGE2Y2EgbGVnYWN5LXRydW5rCisxMzc5MiAyMzQxYmU3NGI3NTgyZjc2MzhhNzQxZGZkMjg1NGJiNzBhMzJkMzdiIGxlZ2FjeS10cnVuaworMTM3OTMgMGE3MGEyYzVkOWU2OTk3OGNlYTQ5MmU2MzAzYTkwNjA5YzVkYzI0MSBsZWdhY3ktdHJ1bmsKKzEzNzk0IGVhZWVhOWU0MjM2OThhMzI3NzM4MzM5MjMzNWNmMzBhMmNmMmE5NGQgbGVnYWN5LXRydW5rCisxMzc5NSA2OTY4ZmRiYjFhM2ZlYzkzZDM4NzE1YjY2YjM3ZGY4MzE0ZjBhMzMzIGxlZ2FjeS10cnVuaworMTM3OTYgODEwYzI1ZDUwNDFjNGE1MzRiMmY1NWNkMTdjZTgyZGRlMGJlZDQwOCBsZWdhY3ktdHJ1bmsKKzEzNzk3IDQ3MTcxZjJkN2Q1ODVkMDA4YjI4MmU4NmE3NzdhYzJjYWYyMjZiMWMgbGVnYWN5LXRydW5rCisxMzc5OCAzMWJlY2M0MzI1MjM5ZTBkZjQ5NDIwNDE5YzY2MWM2ZGYwNjNkOWYxIGxlZ2FjeS10cnVuaworMTM3OTkgODMzNjE4OGEzYzEwMDUyMDY0NTM5OGJkZTFlZTVlZmUwNWNkOTU0NyBsZWdhY3ktdHJ1bmsKKzEzODAwIGMwYjg2YTQ0YTEyMDNhNDU0ZjA4ZjFjOGI2YjZmZmE1ZTljZjQ5MTEgbGVnYWN5LXRydW5rCisxMzgwMSAyYjI2ZTQ4YTg1YTZhMjRlMDUzZWJlYmE4ZTZiN2RlYjFmZTgwZDJhIGxlZ2FjeS10cnVuaworMTM4MDIgM2ZlOGQxMzMyOGM4MTMyOTM0NzI1NTE1ZGE4NWU0ZmU3Mjk4YWRhMiBsZWdhY3ktdHJ1bmsKKzEzODAzIDJlMDg3NTM5ZGE2MDRkY2I1OTVmM2IzNDQ3ODc0MmEwNzdiYzNiZjQgbGVnYWN5LXRydW5rCisxMzgwNCAyY2M2YTEyY2Q0MTE4ZTJkZmI3NzRjYTYwMzJlNDg0YTRkNWFiOGMxIGxlZ2FjeS10cnVuaworMTM4MDUgOTJmN2FmNDJlZDkxYzVhYTc1YWUwMzQ4NjE3MjU3ODJhMDBhYWVhNCBsZWdhY3ktdHJ1bmsKKzEzODA2IDIwMWFjMDY5YjBkMGI4YTg4M2ZkYjQ3ODVhYmZlNjQ2OTY4MTJkOWUgbGVnYWN5LXRydW5rCisxMzgwNyBmZmNkYjA3MTE2OTU4NGZmOTdmMTE5OGU0ZGE1MWYwMzNlNDE5MjA1IGxlZ2FjeS10cnVuaworMTM4MDggZWZhNzVjNjk4NTdkMmIyODJmYzhmOGE0Njg0NzE1NzQ2OWMzNWJkNyBsZWdhY3ktdHJ1bmsKKzEzODA5IDY3MmRiYmMzOWJhMDgzNGI5NmM5MWMzYTJiNzY2NjIwMjJiYmU5NDUgbGVnYWN5LXRydW5rCisxMzgxMCA0Mjg4NjVkMDBlZWVmNTUyZTEyYzBlM2UxMDNiNmRiNTBhOWM1NGMxIGxlZ2FjeS10cnVuaworMTM4MTEgMmUyMGEwZmMyYzVmM2IyYjk4OTk0OGUyYjk5Yzc1YjdlOWY0ZmQ4NSBsZWdhY3ktdHJ1bmsKKzEzODEyIDNiOTgxZWFjYWQ3YjQzOTM0ZTk2NzZhOWE5MmFmZTI4ZTM2M2YxZmEgbGVnYWN5LXRydW5rCisxMzgxMyA3MGNjY2NhNmJkZjA2MWUzOWZjMzQ1YzQ1YmFkNTY4OTYxOWZiOTY3IGxlZ2FjeS10cnVuaworMTM4MTQgYTQ5OWQyMGEzNWNhMmNlYWQ4NzZkMmEwOWViMWZmZDFjYWFiMzkzNyBsZWdhY3ktdHJ1bmsKKzEzODE1IGNhZTRiMDkyNzNiMzBjNzg2ZDViZDMxNDA4ODc1YTNmMDc5MjMwMGEgbGVnYWN5LXRydW5rCisxMzgxNiBhZGY2ZDIxY2NkN2YxYWE0NGQ4YzZjOTk5ZTkzZDZkMDFhYjQyNmEyIGxlZ2FjeS10cnVuaworMTM4MTcgY2RkOTI4ZDIyOTNjMjgyZWYwYjlmY2ZiMjA1NWQ1ZmQwNDQ2MzFlOSBsZWdhY3ktdHJ1bmsKKzEzODE4IGQ0MTEyZDRjNWJiMTgzZTY0YWI3N2RmZTEwYzk3OWJjZDJjZTMxYjIgbGVnYWN5LXRydW5rCisxMzgxOSA5OGUzMDM5MzliMzllMjJlYWUyN2I2ZjIxNmJmNWQ4Y2M1YjY3OTI5IGxlZ2FjeS10cnVuaworMTM4MjAgMjAzNTBlY2NhNmU0YjEzMjgxNjg2MjVkYWI5MjJjNTM4M2RmMmU0NCBsZWdhY3ktdHJ1bmsKKzEzODIxIGY2N2NlMTUyNzE5YWFmZTljYTFjZmIyOGU3NTFlOGI4Y2U1ZWNhMjcgbGVnYWN5LXRydW5rCisxMzgyMiA4MzdmZTc1ZDZkYzE5ZTAzNjAyMWM4MGEyNjE4NzAyYTM4MGY0MjE2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyMyA1MTg5ZWE2ZTRiZjZlZTQyMzEzNzFiY2QyNmQ3NTc0YmQyZWJhMTFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyNCBhZGY4N2QxM2EwYzFhYWYxMTNlOTQ1M2ZjMGI4ZTIyNWZmMjk0MGU5IGxlZ2FjeS10cnVuaworMTM4MjUgZjJjOTIwZDAzZjQ0Y2UzMWQzOTdkODA3YjBhZWE3YzdhY2QxYTBiZSBsZWdhY3ktdHJ1bmsKKzEzODI2IGNjZGY1ZGMyYWNmNjUyNjQ3Yjg4NDQ0NTZjM2I4MjMxOTA5ZGQzNjkgbGVnYWN5LXRydW5rCisxMzgyNyA5NjQxODY3NDVlYTZhNGQxODU2OThiNzM5MWU0MjMxOGMzYmZlMDJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyOCBkOTcwYWYwY2VjZTk2MjBkMjQ3MTFiNmZjMjQ2ZDNiNWRkMDgzMmY4IGxlZ2FjeS10cnVuaworMTM4MjkgMzMxZWU0YWZlOWJlZDg2YmRlOTMxMDFlZDVlZDU1YWU3OTM5NzA1NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MzAgYjdhZDE4MDliZTA0OWYwMjM4YzFmN2I4ZTJiMjRmNjliY2Q0MGZmNSBsZWdhY3ktdHJ1bmsKKzEzODMxIDc4ZmRiNmMwYzBhMTUxMjMyODI3NDM3MzYzMDg5Y2VkZGMwZmYwNGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODMyIGE5ZDI4YTA3YTMyNzZmODk5MzlmM2I2YjQxZmRmMjA2YTZkZjZjNTAgbGVnYWN5LXRydW5rCisxMzgzMyBkMzY5NmJmMDhlZWVhODYxZDgwNTk5M2Y3ZDVjMmQxYWVhZTU1NWJlIGxlZ2FjeS10cnVuaworMTM4MzQgYzZhYTMyZmIzY2Y4ZmFmMTYxZDM3NTRmYTQ3ZDc1MjA2OTM4MDUyNCBsZWdhY3ktdHJ1bmsKKzEzODM1IDAwOTRiZjE4ZTY4ODg1YjAxY2U1YjIyM2E4MjBiMjVjNzkwZmYwYzYgbGVnYWN5LXRydW5rCisxMzgzNiAyNTYwMjM2ZWNlZGJhZGFiYjc5M2EzYzUyYzMzZGVkNDE0ZjZlZmI5IGxlZ2FjeS10cnVuaworMTM4MzcgNDhmMmIxOGJhZDVkMWZmYTEzZDZjODRjNzliZDMyYWJkOThiODk4ZCBsZWdhY3ktdHJ1bmsKKzEzODM4IDZkNjQ2ZjdlMWExYzdlZjRiMTU2ZTFlYTIwZDExYjYxODg1YmJkYTYgbGVnYWN5LXRydW5rCisxMzgzOSA4ZWM2ZDJjNmM1OTgxZWYyNjVhNGZkNmQwYjBlODM2OTMyMjM4Y2Q5IGxlZ2FjeS10cnVuaworMTM4NDAgN2YxNzVjMzIzYjhlNDZhOGM1ZGRlOTE3MGJkNDBmNjY4ZDI3Mzc4OSBsZWdhY3ktdHJ1bmsKKzEzODQxIDgwMjg5MDhhOTg4OTkxMjM2OTJjNjY2ZDdmZDZhYTlmNmU3OWIwYjQgbGVnYWN5LXRydW5rCisxMzg0MiBhZGI1YjZkZGMxZTVlZjVjN2YwNGQwZWFkOGFiN2VlNDgwZTU1MzI2IGxlZ2FjeS10cnVuaworMTM4NDMgNDI0YjMxYWY2ZDUxMGUxNTVkODE1MTc2ZjlmZDg5ODZkNGVjMDI2OSBsZWdhY3ktdHJ1bmsKKzEzODQ0IDQ0YzgyMmE0ZDk1MDE4NjU2OTM4OWM3NWYzZmNjZmI3MjU5YzQzYzcgbGVnYWN5LXRydW5rCisxMzg0NSAxNTg0OWZlYWMzZmEwMWRjNjFkMDQ1MmQ3ZjU5ODE3MWRlZWU5NmJlIGxlZ2FjeS10cnVuaworMTM4NDYgZDNjNGMxM2UwMTM4YzI0Y2VmNGQwYzcxMWYyMDkyNmFlOGQ2NzQ3YiBsZWdhY3ktdHJ1bmsKKzEzODQ3IDc3YjMzMmRjMjA2MzY0NGVmMTRhNTQyM2E0ZDA0ZTg1NWJjMmRlMTMgbGVnYWN5LXRydW5rCisxMzg0OCBlMzQ0YzFmZmNkYWY1MzZlMzMyODVkY2IxOTQ2YTM3YmMxNGIyMTliIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg0OSA0MjMyMDNhYWJlZmI0OGNjZDY2ZDY4YTdjY2Q1ZjE1NjRiZTBhODRhIGxlZ2FjeS10cnVuaworMTM4NTAgNThiOGQyMTZkNzIxNGNlM2MyYjNlNjhkMjI4ZGI1MGQ1ZWVmY2ViZSBsZWdhY3ktdHJ1bmsKKzEzODUxIGU2ZTQ1YTYwZTFlMDI3M2FmODgwYjczODBkYzFmYzc1NTE0NzAyMTMgbGVnYWN5LXRydW5rCisxMzg1MiBiNDQyNDBiMjczY2ZiNTMzZGNkMzQ3MjNlNmU0MTFjMTI3YTRmMjEzIGxlZ2FjeS10cnVuaworMTM4NTMgYjFiYjZkN2EzMzVmNGY1MjQ0Y2NhYWNlYTU4NjVhZDQ2YmI4ZjE4ZSBsZWdhY3ktdHJ1bmsKKzEzODU0IDE1ODEzMDc2Y2JlZjZhZjU3MTg3MTIwOGNkZTUyMDRkN2ZiNWQxMzggbGVnYWN5LXRydW5rCisxMzg1NSBmZGNiODlkMDA2OTU0YjhlOTM5NjAxOTMyZWI4ODkxMDc5NDVlNGM4IGxlZ2FjeS10cnVuaworMTM4NTYgMDBkNTc3ZTQ0ZDM0MWU4NmIyMzBhYzI3MDdjMzdkMTJmOGNkNWQ0ZCBsZWdhY3ktdHJ1bmsKKzEzODU3IGE1OTRkMWU4Y2QxYWE1YTgyMDZlY2MxMGZhN2U3OGMyODBkNDhlYTMgbGVnYWN5LXRydW5rCisxMzg1OCA4M2E5ODYxODBmNDFkNjg3ZTA3YTU5NGZhODViMWFlZTI3NGY5ZmJjIGxlZ2FjeS10cnVuaworMTM4NTkgNTU2NjY0YzYzOWZjMjY0ZWEzZWE0NDNjYWRlZTQzOTIxZGMxZjcyNyBsZWdhY3ktdHJ1bmsKKzEzODYwIDNjNDQwMjhiOTE5ZDRiZWY2N2VkNDljZjY1YmRjZmE0NDkxNWRlNzggbGVnYWN5LXRydW5rCisxMzg2MSA4OThjMzNlMjE2YmIzNjA3YjE3ZWY2MTExYzE1Njg0MmVlYTljNTc4IGxlZ2FjeS10cnVuaworMTM4NjIgYjRkMmY1NDY1YjNmODk4ZmQ2ODVlNGM0ZWRlNjUyZWE3YmRiODM0MSBsZWdhY3ktdHJ1bmsKKzEzODYzIDA1ZjY4ZDdmOTFhYzQyMGM0NDEyN2VkMTY4NWFhOThjNjZjN2YwZDcgbGVnYWN5LXRydW5rCisxMzg2NCA1NWExZWY5ZWJkNGNkZWM2OWU1YWExZmZjNGM2ZDQ4OTYxMjkxYWY2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg2NSAwYWUyNDQyMGM4YTlmMjZmYjAwY2Q3Y2U3MTcyMzVmYmQ5MjE0NGJjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg2NiBjMWI3MjViMWExNDQ2MmNiMzEzMTAxNDFkZWRhNTExNWMwYjAzZDEzIGxlZ2FjeS10cnVuaworMTM4NjcgYzcwMmExMmQzMThkNjg2YzM1ZDM2Mjc3OGZmMTBjN2NjZjNmNzY1NCBsZWdhY3ktdHJ1bmsKKzEzODY4IGVkMWI0OTgyMmY3MDU1ZTM4MmY5OTMzZjVjM2E2MjE2ZmEwZTVlZmIgbGVnYWN5LXRydW5rCisxMzg2OSAwODJmNDJkNWVhZTMwZWNkMjVlM2ZmYTVkNGExYjQ1NTYxNGExMWVkIGxlZ2FjeS10cnVuaworMTM4NzAgYTJiOTYzZjdhYzk5MDcwNTEzYzY2MmZjZjU1ZTZjOGRjYjdlMzIwOCBsZWdhY3ktdHJ1bmsKKzEzODcxIDU5NWNiMjlhODg2N2VlMmFlNjY5YmUxYzg0NTU5NTExYzUxZjEyNDEgbGVnYWN5LXRydW5rCisxMzg3MiBhZDc1N2FmZjhkMzc5NWMxMWUwNGQ3MmI1NGVmZWRmMjZmZWM1MGI2IGxlZ2FjeS10cnVuaworMTM4NzMgNGZkYzljMWVjYWY2YjdjY2ZmYWE2N2I4YjA4ZjcwZGY3ZDIzMWE3NCBsZWdhY3ktdHJ1bmsKKzEzODc0IGZhZDU1ZWVjNWRmY2RhMTNmMmI4OTM2ODUyNWFiOTZiNmU1NWY1ODEgbGVnYWN5LXRydW5rCisxMzg3NSBmOWVmMzY4YjhjMmQzZmFkZTdjZGU1OGI5MjE3MDM1NDE5NTUxNDcxIGxlZ2FjeS10cnVuaworMTM4NzYgNDg3NjIyMjg4ZjljMjk5NDUwNDJhNmViZTNiZTdkY2I1NjQ4MmI1ZCBsZWdhY3ktdHJ1bmsKKzEzODc3IDNkMTU0YmU4NzE2MjllYzZiNmNhYTdmMTJjNDI0ZWI2N2YwZTYyY2IgbGVnYWN5LXRydW5rCisxMzg3OCA3MGFkY2NkNDUyM2E0OTFmMmVlZjI4YjAzZjMyNTZkZjNlMjgzZTRiIGxlZ2FjeS10cnVuaworMTM4NzkgMzM0MTAwMjE4YTRiMWRkMjAxNjdlNWI4Y2FlM2I0MmYxMzEwMjk3YyBsZWdhY3ktdHJ1bmsKKzEzODgwIDQyOTQxZTJlYjlkODZhNDhmMjNkYzJhYTNkNzczMjc5OTcxZTIyOWUgbGVnYWN5LXRydW5rCisxMzg4MSA2Zjc1MDdlZjJiMTE1YTUzYmI5Y2Y0NmI4ZjFhNDM5ZWU4Mjg2ODNhIGxlZ2FjeS10cnVuaworMTM4ODIgN2FlNWM0MDUxMDQxZTVhMDNlODcyMDVmZDZiNzYxNmRjZDJjNDdjMiBsZWdhY3ktdHJ1bmsKKzEzODgzIDhiODE1ODA1ZjEwY2I3MmJkOGUwZGQ5OTVjZDI1ZTMxMWQzMmNiMzAgbGVnYWN5LXRydW5rCisxMzg4NCBkODNmYTFkZDdiNzk4MTk5NDgzYWI3YjQ2MWMwNThjMDg2YzM2MDViIGxlZ2FjeS10cnVuaworMTM4ODUgY2JjNDYyODRhNWFjYjg0Y2I1M2ZiMjIyMDZhOTM2YTNhMjY5ZTAwMyBsZWdhY3ktdHJ1bmsKKzEzODg3IDRjNmM4ZWZmY2I0MmExMmJlMjVjOGZiNzcwNWQyODUyMTU1ZmI3ZjkgbGVnYWN5LXRydW5rCisxMzg4OCA1M2IyOTc0ZWQzZDM2ZjcyNDI1NzRmN2RmNjc4NTBhZmYyNDM4ODBlIGxlZ2FjeS10cnVuaworMTM4ODkgMTA2NjhlOGEwOTc1NmMxNGRlNzhiZDg5ZWNmNWU3NjlkY2MxNjg5YyBsZWdhY3ktdHJ1bmsKKzEzODkwIDgyNmVmOGYyODc4MmNlOGQyNzIxOTU2OTY3MmNlZGVlZDc0MGVmMzYgbGVnYWN5LXRydW5rCisxMzg5MSBjZmM2NTE1OTM3YTY5NTRiZGI4MTJjNWFhMzM0MmVlYTIyNWZkYzZmIGxlZ2FjeS10cnVuaworMTM4OTIgYzVlZGQ4NmUyNjk4MGQ0Zjk5ZjQ1OThjYzExODkwMTVkOGMzMzRmNiBsZWdhY3ktdHJ1bmsKKzEzODkzIDY3OGE5YTc5YzdlODViNzI2MjJlNGRjYWE4NTQzY2RmYjUxZTJlY2MgbGVnYWN5LXRydW5rCisxMzg5NCAwM2QxYjk4ZDE3OGRjZmU1NTUwZGQ1Y2FkNzBmZWFkOTY0ZTkyOGI0IGxlZ2FjeS10cnVuaworMTM4OTUgOTE1ZmFkZjIyOTQxMTM5YWNiM2M4MWE0NjY2YjE1YjQwODg0ODI4ZSBsZWdhY3ktdHJ1bmsKKzEzODk2IDM3MWI5NzYyZDYzZGU0NTUxNDNkOTU5MjI4YWI0MjM3N2Y4MjkyN2QgbGVnYWN5LXRydW5rCisxMzg5NyA1ZDU3YzY4YjJiMzIxMjc0YjdjMDllYjkyZWE2MTEyYzQ1YWFhOTkyIGxlZ2FjeS10cnVuaworMTM4OTggMDRmMDI0ZDg1NDFjOGQ1OWM3NDllOGVmMjI5YWRmYWZjOTg0ZmM5NSBsZWdhY3ktdHJ1bmsKKzEzODk5IGU1NTViYTA0YjkyMjc2ZGM4ODUxYTBlZTFlZjY2Yjk1NjU3NWFmZDYgbGVnYWN5LXRydW5rCisxMzkwMCA1ZjQ2Yzc3ODQ5NzE1MGUwYWY3MDFlZDlkZTE3MGM5YTVhYjRhYmRmIGxlZ2FjeS10cnVuaworMTM5MDEgYmU2MDNmY2JhMDAxYWFmZTc0MjgzYjIzOGFmZDVjODdkMmYwOTBmMyBsZWdhY3ktdHJ1bmsKKzEzOTAyIGNhOWJmNjkzNWM1MmE2M2U1Njk0MGNiYWU1YmJjYmZmOWYxZDNlNjYgbGVnYWN5LXRydW5rCisxMzkwMyA0YzdkNjA0M2I0M2EyODk0NDQzMzY0ODQ5YWNhOTcxNWJkNTdlYTYzIGxlZ2FjeS10cnVuaworMTM5MDQgZGZkMmM3ZDM0ZDQ0M2M2OTk0YzYwNTU0MDdiZTg4NDMxMDgxM2IzZiBsZWdhY3ktdHJ1bmsKKzEzOTA1IGQzNDU5OTZmY2I2NTIxZmJjOTM0ZDQxOGIwNDNiYjRjMjM4MjY4ZGEgbGVnYWN5LXRydW5rCisxMzkwNiAyNWMwMjAyZTAxYTYyNjM4MWYxYTExMDRlN2ExNjdiNjUwN2IxNWFlIGxlZ2FjeS10cnVuaworMTM5MDcgOGZkYWMxNjU0NGUxYzdjNjc4ZDliNWJkZWY2OWJhN2RjM2ZmM2Q2NiBsZWdhY3ktdHJ1bmsKKzEzOTA4IDA5ZThhYWUxNmU5OTgwMzI5NzExMmRkMWY4NzQ2MDkxYzA1ZDRmYWEgbGVnYWN5LXRydW5rCisxMzkwOSAyM2YyNzg2NjBjYTlhOTI1M2Q0MzkyYzgxZWY0OGQ4MTYxMjI2OWQzIGxlZ2FjeS10cnVuaworMTM5MTAgOGI2M2E2ZjdhNTIzYzRlMTVlNWZhMzE3ODYxNWJkNjQyM2E4YmFiNSBsZWdhY3ktdHJ1bmsKKzEzOTExIGI5YmJlODhkOTU1NDc3YTNmNDBiNGE4Y2Y3N2Y1NDVmMWVlOGM5YTUgbGVnYWN5LXRydW5rCisxMzkxMiAyOWNlOTU2ZmE3Yjc1ZTdhZTEzNjIxMTRlYTRkMDc1ODYxNzFiOTM1IGxlZ2FjeS10cnVuaworMTM5MTMgNDE5OTBiY2UwMjNhODEwMzg2YzZlOTY3OWQwOGIxMDIwZDIwNTJlMiBsZWdhY3ktdHJ1bmsKKzEzOTE0IDg2MTg0MTVlN2E2NmM3MWJhZDI5ZjQyZjgxZTIxNzk0OGI5MDBhOGYgbGVnYWN5LXRydW5rCisxMzkxNSBkOTE5Y2Y5ZmRkODllNzJiMTFjNGVmOTM0YTBiMGUxNGU3ZTlmYjA1IGxlZ2FjeS10cnVuaworMTM5MTYgN2UwNWE3ZDBiNTExZDVkZjA1OGM1MjAzMmZiZWM0OTBjODNlN2MyOSBsZWdhY3ktdHJ1bmsKKzEzOTE3IDY2MjE2ZjMyNDAzZDFhOTFiNDYyNjA3N2MzNjU2YzA3OTMzZTFiYjcgbGVnYWN5LXRydW5rCisxMzkxOCAwNDBiMDU4MTZiMTdmOTgxMTA5MDhlYWYyNzA3ZWM1YjZkODcxYTc4IGxlZ2FjeS10cnVuaworMTM5MTkgYTEwZGI1YjY4NDNmMjkwZDJiZGNhOGM3MDY5NWEwNTgyNWMzMWRjZiBsZWdhY3ktdHJ1bmsKKzEzOTIwIDMyMjliMTM4MTIxZTJhNGNhYmY0MzM3ZjY0ZmY1NTUzYzliMDUzYWIgbGVnYWN5LXRydW5rCisxMzkyMSBkYzlmMWY5NjQ2OTBiYTQwNThjMTYzNTEyMGE2YzljYzNlMGRhYTYyIGxlZ2FjeS10cnVuaworMTM5MjIgM2ZhYTEyMTg5NTBlZWNlMzNlYTJkZWM4YjI2NmQ0MDFhNzY3ZWFhZCBsZWdhY3ktdHJ1bmsKKzEzOTIzIDNlM2M3MWY0ZDJkZWQxZTRmMWZlYmFlYjkwNjQzOGMwMzk5Y2E0NjEgbGVnYWN5LXRydW5rCisxMzkyNCA0YWQxNGU0ZGM3ZTUxNjAwYzA5ZTk0NWNmNjUzODYwYjRiNzVlNWQzIGxlZ2FjeS10cnVuaworMTM5MjUgMWVmMTgwNzM3N2JmYTllYzhhZDNkNjdiMWNlZTUxYzg1YTRlYTVlMiBsZWdhY3ktdHJ1bmsKKzEzOTI2IDMyYzA1M2M3OWNjYjNjMmNlMDA3NDgwNmVhYWI1MWM0OGM2MGU5NmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTI3IGFjYTdiNWVhZjVlODJmOGEwZjAwYjRjOWY5ZjQyYzM5ODAwMmFiMDkgbGVnYWN5LXRydW5rCisxMzkyOCBjMjRjMjQxODUzNTE2ZmYyYmYzOWQ4ZjMzMGVmNDYwMDkyODA4YTIyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkyOSBkYWY4OGU4ZWRiYzBlNTNkYWJkNDJiYWI0MjdkYWFlZjk3NjFkNGNhIGxlZ2FjeS10cnVuaworMTM5MzAgYzIwOGM0ZTllMmFhY2Y4ZmQyODI1NDZjOGE4OWIyNzFjNmUwOTUxMyBsZWdhY3ktdHJ1bmsKKzEzOTMxIDE0NjYyODBlNmJiMGEzYjQxZDM0MGRkNWQxYzVmYjA3NGQ1YjNhNjkgbGVnYWN5LXRydW5rCisxMzkzMiBjN2U3MjNjZDYzNDk3Y2I5MzgzOTQyYmFhNDAyNWQwYWYyNjY1MWI1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkzMyAwMTljZDIxYzhjOWZjYjY1ODQzYzdhMzY3Mjc5ZjVlYzVkN2U5YzUxIGxlZ2FjeS10cnVuaworMTM5MzQgNjFhMGYwMjE1YTk3NmJjZWRkYzQ1MTA4ZmRlNTI2MzY0MjUyNmMzZCBsZWdhY3ktdHJ1bmsKKzEzOTM1IDg5NTEwMmVlYTQ4NTFhNzc4YzA1YWFlZWNmZWM0NTYyZTc3NDgxMzMgbGVnYWN5LXRydW5rCisxMzkzNiA2ZWJmNjkzOGM4ODcyMDE3NjIxODhiNTNmMjg3NDRmZjgyNmQzY2M4IGxlZ2FjeS10cnVuaworMTM5MzcgNTQ4NmRjZjEzZDc3NGNhY2QzNDYzMWJkMjdhODI2YmMzNjQ1MDVhOCBsZWdhY3ktdHJ1bmsKKzEzOTM4IGExNGQ5NjE0ZGEwMDdlMWE5MzA2YjQwOTUyODYyNDU5MjJlZDQwMDggbGVnYWN5LXRydW5rCisxMzkzOSAwYjJlOTk0ZWYxNzVhNTk3NzAzOWYyYzQ0Nzc5MDFkZjVkMzY1MDJmIGxlZ2FjeS10cnVuaworMTM5NDAgNGNhN2I3YjhhODQ5MTZmNTQyMGE3NjU1YTliZTBmZDNkYzhkZDMzNyBsZWdhY3ktdHJ1bmsKKzEzOTQxIDhjNWVlM2MzZDM4OTAxYmRmNGM1MzYzMWVkODZiZWJiOWQ1OTVlOTcgbGVnYWN5LXRydW5rCisxMzk0MiBlMGVjZjFhZWZlMDRlMmRlYmUxZjBkNGM5MjY4ODI4YzNhMmViYTdhIGxlZ2FjeS10cnVuaworMTM5NDMgNjUwZTg5ZDE1NTdmMTQ2MGZmMDk3MTc0ZjEwOTNkZGE5YzA2MTdiYyBsZWdhY3ktdHJ1bmsKKzEzOTQ0IDg3YzVkMGIzZGU1OWViZTAxOTMwOTU5YjVkOTYzNjQ5MWIwNmZiN2QgbGVnYWN5LXRydW5rCisxMzk0NSA3OTFjZjcxN2MwYmU0YmYxYmJhNjFiZDVmM2E4NzU3YzI3OTZhNzI3IGxlZ2FjeS10cnVuaworMTM5NDYgNmM0NTE3MWMxYTFmZTdiYzgyMjNmOGI5YjU4YWEwN2UyZjNjYmIxNyBsZWdhY3ktdHJ1bmsKKzEzOTQ3IDQ4ODJiMmU1MmNiMjQ5YTg5NTA2OGY5ZWQxNmJhN2FhZGRjODMxYWQgbGVnYWN5LXRydW5rCisxMzk0OCA5NWU5Njk4ZmM5MDhjMmQzZWQ0NGI5ZmE2MDllMDNiOTU1ZjI3M2U1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk0OSBjMTYxZDJiODUyMDdmYTc4ZTAwZjllYjNhZjZjMmVhMjgyODYzN2NiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk1MCBhNWE1MTNmZWU1YjFkYjNhNjIxNDNmNWVmZTA5ZTBjNGQwZmU2YzU4IGxlZ2FjeS10cnVuaworMTM5NTEgNTNmNjliODY3NmYzYzFlNThmMWVlOWM4OGJhYWZhNDAwZDc4NmU1NSBsZWdhY3ktdHJ1bmsKKzEzOTUyIGJmMzY4ZjJmN2MwMDZkNWU3NzNmZTM0MzQwOTM2MzJmNGExYzYxNGMgbGVnYWN5LXRydW5rCisxMzk1MyA1MjViNWE5YWNmZDVkZGU1MWM5YWI5NWI3ZDhiODAyNGE1NzBkZWNiIGxlZ2FjeS10cnVuaworMTM5NTQgZjQ2Yzg3YjY2MTU0MjA0YTI2N2QwODc2ZDgyMmE0YTRkMjFhZjNhOSBsZWdhY3ktdHJ1bmsKKzEzOTU2IDUwNzU0NmE4N2RjZmQzYmI1MGZmODgzZTMzZGU5ODkxNjExZDg2YzMgbGVnYWN5LXRydW5rCisxMzk1NyBiNTUxMWMwMTcxMzFmZTYyOWEyNGYwNDg2ZTAwOGY3YjE3YTU0NjdmIGxlZ2FjeS10cnVuaworMTM5NTggMDYxMTU2NDUxZDM2YWY4MjFmODk2NDljODUwOTEyYzg5YjI1OWI0YSBsZWdhY3ktdHJ1bmsKKzEzOTU5IDA2MDY2ODJjN2ViYzM1YzQyZjJlMTFlNzU4ZjgxODMzYjg1M2YxYWUgbGVnYWN5LXRydW5rCisxMzk2MCAyNDEzOGVjM2YzOTYyMTFlNDY0YzAwODkyNjYzYzA0MTlhZTNhMzZjIGxlZ2FjeS10cnVuaworMTM5NjEgM2ZhYjM3MTFjN2RjNjg3MzMwOTQ2MTAyZTkzYmYyYjIwMDZmZWY0NSBsZWdhY3ktdHJ1bmsKKzEzOTYyIGZiYzJjNDg1OGNjZThhNTAxN2EwZTEyZWFmMzJmNTU5NGU1NzBlMmQgbGVnYWN5LXRydW5rCisxMzk2MyBjODE1NWQwNWQ5Y2E2ZmFmOGUxMTJjMjVmMmUyMTRkZWRkOTlmOWY1IGxlZ2FjeS10cnVuaworMTM5NjQgMjg4NzQwNzY1MDg4ZDM1ZDZhOTRjMWYxOTc1M2RmMWRkMzg0ZDllYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjUgNTNiMmYyMWFkNjdmMDgxNmRjYjY2YjliMmExNmI1ZmQ3OGUxY2Q2NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjYgMmY5YjY1YjM4YWYyZGYwNzUxNTExZjIxODFkMWQwMTZiMWU1ZTAzYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjcgYzU4MjFjM2JlZmNhY2JjYTk0YzFmZDU0MDViMDM4M2RmY2UwNmRmYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjggYzZkMDk5YjRlYjQyYTQ0MTk1NjFhMTNiYjYxZGVjNzJhNDFjNDVjMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjkgMWUwZmJlMzM3NTE4NTczY2NlZjM5NWE0YmQwNmEwYmM5ZGMyMDU4ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NzAgYTYwZmE3NGFhZWFmZDlhNWE0OGQyYmExMDZjNmE4MDAwNzIwNjM0ZSBsZWdhY3ktdHJ1bmsKKzEzOTcxIGNhNzY5ZDk4NjUxNGJiMjkwMmZiMzZhOTExODdhNDdjODJlYzIwZDkgbGVnYWN5LXRydW5rCisxMzk3MiAxY2U0MTk4OWEwM2QwYWVlYjQyODRlNGUwMjFiYzRmNDI5NWZiMjI3IGxlZ2FjeS10cnVuaworMTM5NzMgNDFlMDA3MWRiNTNhODAwODQzNTI2ZmZlNTExODgzZTFiNTllYmVlZSBsZWdhY3ktdHJ1bmsKKzEzOTc0IDEwYWQzNzBiYzViZDFhYTZjY2MzNzJkYTA2YWE0YWY2YWU5MTFmMDAgbGVnYWN5LXRydW5rCisxMzk3NSA3YTE4OGFhYmVmMTE1Yzc0MGM1ZTQyYzY0MmZkYWEzODkxZWZkN2QwIGxlZ2FjeS10cnVuaworMTM5NzYgYTk4OWVlODcyOTYxYzA2ODcxMzZkNWI4ZWJiNWRlMThjZjNhMzBjYiBsZWdhY3ktdHJ1bmsKKzEzOTc3IDdmYjhiMGYxM2RhMGEwOTQ3M2E5YzBmMzM5MDBkMDE1MGVjNzNmNGEgbGVnYWN5LXRydW5rCisxMzk3OCAzMzMwZWI4ZGEyMjI3NGNlMGRkMTFlN2U2MjFlYjE4NzZhMDUzOThmIGxlZ2FjeS10cnVuaworMTM5NzkgYmMwODU2NjBkYmMxMzM4M2JhN2I0NDQ0MmU5ZDRmYTA5ZmU4OTlhMyBsZWdhY3ktdHJ1bmsKKzEzOTgwIGYzMDg2NTQ4NDQ2ZWM1YjA3NDJhNzNhM2MzYjhlMDdiYTZiMmFmYjkgbGVnYWN5LXRydW5rCisxMzk4MSA5NDA0YTViNDE2YjVmNzY5ZDcxZDg0M2JkNmQyOTY5ZDg4MDJhZGUwIGxlZ2FjeS10cnVuaworMTM5ODIgOTg5OTdhYTQ5MTY0MjM2NDIyYmMzZTYyNGYwMWNiM2U3ZTU0ZTNjNCBsZWdhY3ktdHJ1bmsKKzEzOTgzIDg0ZGZmNWNjNzIxNjIxYzEzZTk1ZDk2ZmIxOTJiZmFmNTViMzA0YzkgbGVnYWN5LXRydW5rCisxMzk4NCA0ZmI4OTM0NDhhNmI5NWExNDBjYmRmMzU2NmZjZTIzMWZjMTRjMWRlIGxlZ2FjeS10cnVuaworMTM5ODUgZTNkYzU4NGU5NjIzMGM0YzM0NTc4ODQ3ZWUxM2E3ZjYwN2I3ZjhhNyBsZWdhY3ktdHJ1bmsKKzEzOTg2IGEzMTZjZjlmODFhNzY4ZjlkMzcyZGJkZTJiZGQ4OTJmMGRlYzdkYzggbGVnYWN5LXRydW5rCisxMzk4NyA4ZWRiODFmYTBhNWYyNmQ4NjUwYzNmYzUyODMxNzA0NTgzZjQ3Y2JiIGxlZ2FjeS10cnVuaworMTM5ODggMDljNjNkOTEzYWUwNWFmNDFiODliYjUyNzNlNmQ1YjM5N2MzZGY2MiBsZWdhY3ktdHJ1bmsKKzEzOTg5IDNkNmI5N2E1OGU5Y2E0MGM0ZjhmM2E4OWVlZjYzZjg1YTQ0NGI5ZDQgbGVnYWN5LXRydW5rCisxMzk5MCAwNjY3MDI0MWE3YjFkYTIyN2VlNmYyNWE4YmM4MTYyYWI4MjZjMWJlIGxlZ2FjeS10cnVuaworMTM5OTEgZWI4NDZiNGQwMzg1NjQ4OGU0YTFjMDFjYjM0YWEzYTQ1MWY0MDllOSBsZWdhY3ktdHJ1bmsKKzEzOTkyIDMyYTQ4MGQwODIzY2ZhMWM0M2VhMDkyN2JlMjkxODlhYWIwNjI3MzMgbGVnYWN5LXRydW5rCisxMzk5MyBjYzkyMmE5YTQ4YzAyMGIwNWYxZWU1N2Q0N2Y4YjM2NWUzY2ZkN2ZhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk5NCBiZTI1YWFjYTExZjQ1NmY0YzExMGQzODcwMmRiOTBmZmIwMGM4NGQ5IGxlZ2FjeS10cnVuaworMTM5OTUgMzE2YmUwOGM5ZWNkYTFkOWZkMmY3ZTI5M2IyMTZlYjU4ODBlOWE2MyBsZWdhY3ktdHJ1bmsKKzEzOTk2IDVmMThlNzg1M2Q5MjQzZTJjMmYzNTUyNjJlYzEzMzczNjdlNGUyZmMgbGVnYWN5LXRydW5rCisxMzk5NyAxZGMzOTM2ZTg0ZGIyODE2MWE2MDczOGZkYzRjYTVkOGIxZWY0MWUzIGxlZ2FjeS10cnVuaworMTM5OTggMDEzZGQzOGE1MDMxZDBiOTgzNzA0NzEwZDVhZGY1MjMwZjkxNjdkOCBsZWdhY3ktdHJ1bmsKKzEzOTk5IDBiYzJiYTE3NTIzMDU4OTE4NDZmMGZkZmM2YWU2NjQ2Yzc5NDhiNmMgbGVnYWN5LXRydW5rCisxNDAwMCA5MGY0ODMwZTIxMjJmMmRhYTBjMWY4MTcyNTZhMTgxNjU1MGQ0ZjJmIGxlZ2FjeS10cnVuaworMTQwMDEgZjAyOWQ0N2RkMjk2NGE2YzQ5Njk4MmRmYmUzNmEwZDQ4ZmVkZmQzYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDIgNWI4MDI0MzhkOGZjOGQyMzYwMWY1MmRhMTJlNTMyNzEzZGU1YzQyNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDMgM2E1MDZhYjFjMTM4OWQwYmU3ZjlkNzg2OGJiZjRmYjc1M2NmMDM2YSBsZWdhY3ktdHJ1bmsKKzE0MDA0IGFhYmZhMGQ3MjEzYzNlYThjODE3YTE3YzgzNGQ2ZjIyNzJmMDk5M2UgbGVnYWN5LXRydW5rCisxNDAwNSAyMzljYTQ3ODhiZWMwYmZhY2JjMDdiNzRiZmNlZTU4OTFhMjYzZmExIGxlZ2FjeS10cnVuaworMTQwMDYgOGE2ODcxZTk1ZDgwYjBlYTUxODRjZjcxMWZiMGQyZTZmZGQ1MjczMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDcgY2MxOGIyNGRlZTNkYjc5Zjk3N2FiMjJlYzU4ZjM5MThkNWZhMjBkYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDggMmQ3OWI0OTFhNTI5YzU0OWE2NDQ4NTJlZTVhYWRjMzA4NTU4MzAzNSBsZWdhY3ktdHJ1bmsKKzE0MDA5IGUwZmU0YzdhOWVmZjMzZGViZjAxMTRjZDdiM2U2NzA0ZTY1N2UzYmIgbGVnYWN5LXRydW5rCisxNDAxMCAwYTNiYjQwM2E0MzA1YTFkMDk1MzI3MTQ5MzhiOGE2OTQyY2ViOTkwIGxlZ2FjeS10cnVuaworMTQwMTEgMzhjNzQ0NGY2MzNhYjgwMmZhNTA0NzJkODFjMTlhMzIyMjNkZjE2MSBsZWdhY3ktdHJ1bmsKKzE0MDEyIGUxMmJlOGY1MTg4ZmQ3NjI1MzU0NDZjNzM5ODBjMmJkZTRhNzQzOTQgbGVnYWN5LXRydW5rCisxNDAxMyBhMDVhMDU2MDI5MDI4YTgwNTgzZDZhZmVjZjI0ODNlYjNiYjIxNTIxIGxlZ2FjeS10cnVuaworMTQwMTQgZTc0ZWYyYjUwNTU1NmVkM2RlZThhZTAxMTkwNDk5ZTNiMmZiYmM0NSBsZWdhY3ktdHJ1bmsKKzE0MDE1IDdlNDI5ZTQ2OTY4YTI0NjFhMWQzZTlkMGI0ZGI0MTY4NzhmOTQ2MTcgbGVnYWN5LXRydW5rCisxNDAxNiA0MjY5OGYzNDViZDMwNDBjNDI1NjlmMjI0OTg0YThjZjVhNzBlMmFmIGxlZ2FjeS10cnVuaworMTQwMTcgZWYwM2YxNmFlNWViMjc1MzQ4M2MwNmUyNGFlNzc4ZjU1Mjc5NDZkYiBsZWdhY3ktdHJ1bmsKKzE0MDE4IDZjNWUxMmM1YTYxNjRkMmQxYThiNDUxNDZmY2E2N2UxMTZhNjg2NjYgbGVnYWN5LXRydW5rCisxNDAxOSAxMmY0NjJmZDI0Zjc1M2VlMjUyYWU2YTI3ZmEwNjFjNzVhN2Y1MWQ4IGxlZ2FjeS10cnVuaworMTQwMjAgZDBmNGE3OWI5ODVkNGRmZGJiZWE1YzYwMTYxMjc3NzUyNjc5ZjQ3NCBsZWdhY3ktdHJ1bmsKKzE0MDIxIDI0NTlmMTE3NjFmMDk1N2Q4OGU4Y2MwZTBjN2FlNTY5ZTQwMGYxZWMgbGVnYWN5LXRydW5rCisxNDAyMiA5NWE5ODMzYjAwMGU5N2RmZTJhZGMxMjFmZmEyODBmMzQ3YzMwODg2IGxlZ2FjeS10cnVuaworMTQwMjMgMTdlMTIzMDU5NzNlYWIwYTdiNjVlYzE3OTBjNTQ4OWUwY2UyNzA0MCBsZWdhY3ktdHJ1bmsKKzE0MDI0IGFhYWVlN2IyMzM4MDIxNWM4NmI5NTBjMTFlNGE1YTA0NDFjNWNiOWEgbGVnYWN5LXRydW5rCisxNDAyNSA2OTgwZDA2ZTM2MDc1MjgzZjg1MDQ0ODg4OTE1MjYyYzlkYTUwYmQxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyNiA2NzU3ZTgwYzc0NzgzMjY5YTIyYTA1ODcyMWFjOWY2ZjkwY2ZiZGE0IGxlZ2FjeS10cnVuaworMTQwMjcgMDc3ZmY2ZWZjYTM1ZTg0NjEyOTUxYTcxNTRmNjI0YTRhNWQ0YjU5OSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjggYTE3MGI3ZjA0YzY0N2ExYzRkMTVmZWMwNTEzOTgwZDUwMjEzZTNiMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjkgYWIyYTZmOTEwZjY1MzEyMDk2MmZlYTJhMTExZWVhMWU4MWZkYTc5NSBsZWdhY3ktdHJ1bmsKKzE0MDMwIGEyNjczYThiZGNhMjgyNDI1YTlmNDc5OWRkY2RkMGU0MTU3YzhiNDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDMxIDE0OGZkNDc1YjM5M2RjNzJiYjgyODc2MWRjNjUxZmVkZGRlZjg3YmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDMyIGI0ZDA3YmVhYzA5YmVlZDU3M2FlM2IzNTljMTAwYzc5ZGNiMjgzYWQgbGVnYWN5LXRydW5rCisxNDAzMyAxODU1MTMxYTRkY2Q0N2EwNDBmYmFjNzI1MTcyZjhkZDI4ZGU2YjI0IGxlZ2FjeS10cnVuaworMTQwMzQgYzA1MzYzY2YxYjczYjBmMjVmYzcxNjQyNjI2MGQ5OTlhMjZlNWNkNyBsZWdhY3ktdHJ1bmsKKzE0MDM1IDk2ZjNlYmFjYTZhZTU4MGYxMTJlMmE3MDFiYWU0NmM2ODc1ZjczYjUgbGVnYWN5LXRydW5rCisxNDAzNiA0ZjI3Njg5MzMzMTNhZDQxMTRjNjA2NjQzZjZmMmFjNDNlM2Q1OTdhIGxlZ2FjeS10cnVuaworMTQwMzcgMDlkMzUxODgyYzUxMGY5NmY5NmFiZGVkMDQxYWM2MDlhNTQxOTI2ZCBsZWdhY3ktdHJ1bmsKKzE0MDM4IGFmMTFhZGMzY2JkNzE3YzZlZmVhOGYzZDc1NzBkYmM2ZDMzMDNhZjkgbGVnYWN5LXRydW5rCisxNDAzOSA4YjQ2ZWUzMjVkYzAzZTYyOGNhZjc3MTJiZjMwNTA2YmRhMzgyZmJjIGxlZ2FjeS10cnVuaworMTQwNDAgYzljZDRiYmVkOGUyODNlMjY1NzExZDk4ZTYxY2I3NDIzMmQ2OWVhMCBsZWdhY3ktdHJ1bmsKKzE0MDQxIGYyMWYxOTg4NmVlMzhmNWY4Y2NhYmFhOGEyNTA3ODM1YjY2NDMzNjEgbGVnYWN5LXRydW5rCisxNDA0MiA1YzVhM2E1Y2M3OWZjZGU2MmQxYzQ4ZmQwYWVmM2M0NWNlNzAxODRhIGxlZ2FjeS10cnVuaworMTQwNDMgZTI0MDg3NDRkYzdmMzllNzY5ZmI2OTI2MTZiYzM3NzM4YWVmNjBhZCBsZWdhY3ktdHJ1bmsKKzE0MDQ0IGJhYjQ2YWNhMmJlY2U2NjAzNGI4MWU0ZGRkYzRlZDIyNjY3YWYxNjYgbGVnYWN5LXRydW5rCisxNDA0NSBhOTdlNjI1ZWQ1ZDA0ZDA1ZDFlMGY2ZDhjOTYzNDY5NWRiMjc4ZmExIGxlZ2FjeS10cnVuaworMTQwNDYgN2RjOTI3MjA0ZDY1ODJlMTJlMzk3NjlkMmRkNTA4ZTQyYTc4MTNhMCBsZWdhY3ktdHJ1bmsKKzE0MDQ3IDA2ODBlNjdhMGQ0OTU3MzdkMjEzMmMwN2RkZjk0ZGI4N2Y2ODhlYmQgbGVnYWN5LXRydW5rCisxNDA0OCA2YjhmNzQ2YmJkNWFhMDJhMjNiMGNkYzNiYzVhMDU2NzA5YmU2YzM4IGxlZ2FjeS10cnVuaworMTQwNDkgMzRiNmE5MmZhMDg4NDJmZGM3NzBhYjIwYzBmY2YxODNiODcwZTU0ZSBsZWdhY3ktdHJ1bmsKKzE0MDUwIDljZGYzZmFkZGE5Mjc2YzYyYTUxNGJkNWE1NTg3MzMzNWQ0NDczZmQgbGVnYWN5LXRydW5rCisxNDA1MSA1ODUxM2ViYTU2NjQzMDA2NTQzMDEwOGJiMzQyYmRiMGZjNDJhZTFiIGxlZ2FjeS10cnVuaworMTQwNTIgYmRlMDZkOWQ0Y2I0ZjE2MmZhODFmNmUxMTczMmEwNTgxMmRjNjYwNCBsZWdhY3ktdHJ1bmsKKzE0MDUzIGJkYWU2MWFlYmE1NWU4NzM4Y2UzZjMzOTY1N2ZkODE2NzcyYTYxYWQgbGVnYWN5LXRydW5rCisxNDA1NCA3MDM0Yjc1YWFkMDNiNzE0NmZmNTE1ZTY2ODc1YTIzOWZlZmY2NDE5IGxlZ2FjeS10cnVuaworMTQwNTUgM2IyMGU1MGYyZDgzYTMxNzNkM2EyZmVkZjVkYmVlMDg3Y2QzNTdlOCBsZWdhY3ktdHJ1bmsKKzE0MDU2IGQwMjNkMWM5YWM0OTE0NmYxMTg3NWJhOTU1ZGVmYjE5ZjZkYTZhZTEgbGVnYWN5LXRydW5rCisxNDA1NyBjZWIwNmRlMjNmYWE5MmUxZTVhMWQ4MWYyMjkyNmViODc1OGZhYmRmIGxlZ2FjeS10cnVuaworMTQwNTggNjEyYjgyMzBjNmU3ZmM2OTcwMWY0MWM4OTYyNTY0MGYyMGMzNmI5NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNTkgMDJhZTJlNTU1ZWY5ZDI2ZWZmZmQ0NzY2NzA3ODBjMmMxMWM2OGYzNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjAgNTkxMTRiZTIxYTc1Zjg5N2NkNGJkODdhOWE4YTcxNDA3ZmJhYWRkOSBsZWdhY3ktdHJ1bmsKKzE0MDYxIGRmZTM3MTlkNzhlOWRjNmVlYWNiZTM2NGM0MGRlNmJhZjc0NDRkYjEgbGVnYWN5LXRydW5rCisxNDA2MiAzM2Y3YjEyYzc3NmNmYjZkOTRmM2RmYzVhMTkyYzhmMDE5NDRjNmU5IGxlZ2FjeS10cnVuaworMTQwNjMgY2RlODgzN2M4MjU5YWQwOWQyNmZmYzQ2YTFlNTk1NTU3ZjU2Y2Y0MyBsZWdhY3ktdHJ1bmsKKzE0MDY0IDkyM2I0M2RiMzgxNDYyYjJmNzQzYmJlODhiMDRhMGZkNWE3ZmQxNmYgbGVnYWN5LXRydW5rCisxNDA2NSAxNmIxMWFjZDNlOGMzZDU4ZDNmOGNkOGMxZTNmODEyY2FiNDY1YjFlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2NiA3NTYzNTE3MDdjYWNjNWJjZDBiOWUwMWRkMGM5NzBmZjY0ZjYzNjdhIGxlZ2FjeS10cnVuaworMTQwNjcgZDcxOTliOWY5MDkxMmFhMzc1NDIwOGU0MDdlNThiOWYyNjAxYjg3YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjggNGM1MDMwZDQyYzZmZmVjZDMyN2U5M2JhNmJlNGU1MTk3YjIxYWRhNSBsZWdhY3ktdHJ1bmsKKzE0MDY5IGIwNGJmMjc3NGQwNWVkYzc0ZTUxOWIzNWI3NTA4OTA2MzU5OTc4MmUgbGVnYWN5LXRydW5rCisxNDA3MCA3ZWZlY2M1YTM5NGM2OWE3ZmQzMDA2NGQ0Mjc2ZmE1YWU1NGMyZWE5IGxlZ2FjeS10cnVuaworMTQwNzEgN2U1ZjUxZGMxYjRiOWExNDk1NzAzNDYzNDkzNTFkMTY5NzgyMTI4MyBsZWdhY3ktdHJ1bmsKKzE0MDcyIDk2MzZhNTAyZjc5MTdkMWQwZDIyYzdkMzA1ZWM5Yjc0YzY4M2RmNTUgbGVnYWN5LXRydW5rCisxNDA3MyAzM2U4ZTc0MDliMTIwMjAzMWFhNDk5NThkMDM1MGVlNTAzMWRjMjVkIGxlZ2FjeS10cnVuaworMTQwNzQgY2E4OGU1OWE2ZWJjYTNiOGQzMWIxNzE3ZTQyYjVlYjYxZjI4YTgyYiBsZWdhY3ktdHJ1bmsKKzE0MDc1IDNiNzFjZGZhMDJjNzQyYzI2MmQ4YWMxOTYyZDg0MTE2MWE5OGE3YmEgbGVnYWN5LXRydW5rCisxNDA3NiBjN2YwYWE0NTEwZTI2MzhlMDQ5OTllMThlM2U0ZTAzMTU4NzIwNGNiIGxlZ2FjeS10cnVuaworMTQwNzcgZGE2ZjE2OTNjZDY1MTNjMDMyMDc3ODNhYWNiZGY0NmYzMmEyODAzZiBsZWdhY3ktdHJ1bmsKKzE0MDc4IDllYWNkMjllNjA2NjE4MDQyZGU1Mjg0YmMwODNmZmNlMzM1ZTllMmEgbGVnYWN5LXRydW5rCisxNDA3OSAzZjI3NDQ3OGM0ZGFhOTg5ZDA3Njc0ODE4NzlkMWE1OWJlNThhY2VmIGxlZ2FjeS10cnVuaworMTQwODAgNTNkOWMxNTYwZmUxNGYzZmI5NDA0YTU3OWNjMDFlYmViMTIzM2EyZSBsZWdhY3ktdHJ1bmsKKzE0MDgxIDY2NDM4NmQ2OTY3Y2FlZmNjZDdhYzljMmEyNDc5MzY3NDJhMzIyYzIgbGVnYWN5LXRydW5rCisxNDA4MiA5Y2EzMDQ1M2RkNGU0ZTQ3NjFiZmVkYjI1MzMwYjEzMTI5YWQzOTdlIGxlZ2FjeS10cnVuaworMTQwODMgZjlmNzViMjEyZGE0MTg5Y2ZhZjI3NTBjOTY1NWZhNzVjYjA5YTI2ZiBsZWdhY3ktdHJ1bmsKKzE0MDg0IDAxZjdhMTM2YzY3N2YxMTk4M2MyNWUyZTM3ODc5YzNjYWMxZjQxZjggbGVnYWN5LXRydW5rCisxNDA4NSAxNzVkN2Y2ODA0ZDdhM2I2YzkzYWRhNDY3ZDJiMTZlMDdhYjY1ZGMwIGxlZ2FjeS10cnVuaworMTQwODYgNzEyODFmZjhjNmEyYmE1NjA5MTY0NDBhY2MyOGJmMTkxZWY5NWM1MiBsZWdhY3ktdHJ1bmsKKzE0MDg3IGNjNDEyZGZkNzlmNzdjN2RiMDg4YTJiYmMxNGI1OTU2ZTVlYzIxZGIgbGVnYWN5LXRydW5rCisxNDA4OCAxNmZjNzE3YmVhM2M5YWViMzgwNjMwN2YzOWVlNjUxYjZjNmY0NGE1IGxlZ2FjeS10cnVuaworMTQwODkgYzBlYjYzYzhmMWZlYmI4Y2E5OGYzMGI5MWFjNjFhYjkxZWE3ZGU5YyBsZWdhY3ktdHJ1bmsKKzE0MDkwIGJhMDdmZmY3MjUxMWIyYzk0ODFjMjBlN2Y2N2JlNjcwOTE2NTU2YWQgbGVnYWN5LXRydW5rCisxNDA5MSA0ZGJiN2M2MDlhYzFmNWI1ZDAxMzczN2VhYzlhODI2ZDU3ZWU4MjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5MiBjYmY1OGNkMGJiNTc0MjkyOTI5MjY2NGIxYzkyNzZlYTMwYWRjOThmIGxlZ2FjeS10cnVuaworMTQwOTMgODJmYjAyZGU1NDIxMTM5MzdjNDNlZDdiZGMzYjA2MGM0OWY4ZDcyMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTQgNWEyZjEzYTdiZDQ1ZjA3OTMxODUxMzAyMTJjZGQ5YWFjMWJlNzBhMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTUgODBhYzA3NjgxYWJlYjEyM2JlMThhZGExMzYzYWE0OTE5ZmY5NGNkZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTYgOTA2NmY2MjdkMzYyZjExOTM1NDBlNDUwNDQxNmNmNDEyNjMwYmVjNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTcgYjViYmNjYjc1ZjJkZDkzNWQ2ZWQ1YmJlMDRjMjI5NGNjNjlkODk2ZiBsZWdhY3ktdHJ1bmsKKzE0MDk4IGE0NmM5Y2I0MjEyM2U5ZTljNzUwZDFmNWNlNWM3ZTU5MzYzY2UzNDIgbGVnYWN5LXRydW5rCisxNDA5OSBiMTJhMTFhZTEyM2NmODViMDlkOWYyNDMzYmIyZDI5ZjA5ODNlMzI3IGxlZ2FjeS10cnVuaworMTQxMDAgNWMxMzVjZWFiMjBjNTQ0ZGQwMGE1OGYxN2U4ZmRiOWY1MWQ4YjY1OCBsZWdhY3ktdHJ1bmsKKzE0MTAxIDc2MWQyNWNmYzI1OTQxMmQ1OGZiZTA5NzU1YzQ4MmRiM2VjZTczNTIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTAyIGY4ODZmZGU3NjVhMDU3MDA0NDkwOTliZjc5MTM3YzYxYjJmYjA5NDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTAzIDI4Yjg1ODUzNTRkZTU4MDg5NDNlOGUzOTMyMjFmYzg0NjEyNzlkZjUgbGVnYWN5LXRydW5rCisxNDEwNCA1MzVmNDBmOWY4N2RjNjc5ODg5NzcyMzQ3MGRhYjNkYzk0YTZmNWRiIGxlZ2FjeS10cnVuaworMTQxMDUgZjgzYjc0MjczZGEyM2EwMDhjMjQ3NTU3Mzc0NWIyNmI5YmVkZjJhMCBsZWdhY3ktdHJ1bmsKKzE0MTA2IDgwNTY5ZDcyNTMyOTFhMDBlMTJhNTMwNTA2MGJiMDBjYTI1MTcyNDYgbGVnYWN5LXRydW5rCisxNDEwNyA4Y2ZjZDI3M2ZhNWNhMmI2NDRlZmY3YjdkZTEwOTU1ZDhkMzE1ZGI4IGxlZ2FjeS10cnVuaworMTQxMDggMjk1MWUyZDI3ODUyMmVkNDAzN2NiODUyMGZkNTRlYWNkZjhhNjFmOSBsZWdhY3ktdHJ1bmsKKzE0MTA5IGE4M2QyYTFjZTE5N2EzOWE3MjJlZTgyY2ZiYzM0YTI1MWE5YzUzNWIgbGVnYWN5LXRydW5rCisxNDExMCA2ODM2NGJmMDAyZjEzODkwYjJhOGQ1NDU5NGIxYWQxNjVhODI2YzdiIGxlZ2FjeS10cnVuaworMTQxMTEgYmJkM2E4YWQ3Y2I3NjY3MjlhNmMxNjRiZDc0ZDZiMzRiOTRkOTRjOCBsZWdhY3ktdHJ1bmsKKzE0MTEyIGIzZTU1Y2UwZWJkNzVmNGIzOGE0ODljNGI5ZGI0NjdlNjBjZjIwYTcgbGVnYWN5LXRydW5rCisxNDExMyBhZmI5ODdhODQ0ZGJhMjE3ODM0MWY0NjExNGM4OWU2YjEzOTRmYmQ4IGxlZ2FjeS10cnVuaworMTQxMTQgMjYwZDQwZjIwMDc3OGZlZjhjMmIwZDkzYzRjZGRmYjE3OThmZmJjNCBsZWdhY3ktdHJ1bmsKKzE0MTE1IDRjNjkzZWIzMjNjNmYzMTczMmVmNWVkOGMzNmJlZGQwNzQ2MTQzZTIgbGVnYWN5LXRydW5rCisxNDExNiA1MGY3ZDM0NWYxNTdhNmUwNzVkMTdkNWU0MDg0ZTA5ZjhkOWY1YjJhIGxlZ2FjeS10cnVuaworMTQxMTcgYjYwNWM0NjZkMWMwZThmYzE2NjNjZmIwNjZmMjVkMjQwY2U5ZWVkNyBsZWdhY3ktdHJ1bmsKKzE0MTE4IDE4ZmMwOGZjOWZkNDc4ZTJkYzYyMTc4ODczZTI0ZWRlMWQ4MzQ2ZGUgbGVnYWN5LXRydW5rCisxNDExOSA4ZDRjYTdiZTczNzk4Yzk3MDAxOTc2MDdhODRmMjdhMDE1NjM4MWU3IGxlZ2FjeS10cnVuaworMTQxMjAgOTBmZmMwN2Y1ZDEwZjAxZDZmMjRhMTUzNzRhZWY5NGU4NDBiZmZlYSBsZWdhY3ktdHJ1bmsKKzE0MTIxIDc1NTU5OTBlOGRiOWE0MTNhMjQ2MmVkZDkyOGM4N2EyNzhjZDFhNjggbGVnYWN5LXRydW5rCisxNDEyMiBmNzAxZTkxNjNjNzZkMTM1Mjk5ZTgzNGJjYWM5M2FmMmJjMGNjZDRiIGxlZ2FjeS10cnVuaworMTQxMjMgMjM2ZDg0MjhjNGM1MGRiZDFiMjhhZTBlMGVhOGRhMTc2MTY1ZjcyOCBsZWdhY3ktdHJ1bmsKKzE0MTI0IGMwNDJlNDE0MGYxZWUzYzg5Y2E0ZjYxY2NiM2YxNzYzZWVjMzg2MzMgbGVnYWN5LXRydW5rCisxNDEyNSA3M2VjNjZhZGQ5NDc4ZGVjY2RmYzY1YjdlMDhmNTUxNDUyYmQyNWNmIGxlZ2FjeS10cnVuaworMTQxMjYgODE5OGM1MzFiYmM0N2Q1ODE5MWI0YmM5MzA3ODJmMDgzNDU3NWIyMSBsZWdhY3ktdHJ1bmsKKzE0MTI3IGVlYWM1NGNiYjFkY2VkMGVjOTc2MWRjYmQwNTM4NzI0YWMxNjkzNzMgbGVnYWN5LXRydW5rCisxNDEyOCA4OTQzYjc3ZjIxOWFmMTcyNjAxNjkxNTY3YmUzZWE3YTk4MmZlMjcwIGxlZ2FjeS10cnVuaworMTQxMjkgMzlkNjZhMDY3ZDBiZjM4NjIzMTNjY2I5OGVhM2FhM2U5ZjAxZWI3ZCBsZWdhY3ktdHJ1bmsKKzE0MTMwIGJlZjg2Njg2Yjc1MmI3YWExODIyMTYzOGFlNWVhOTk2MDc0ZWI1MTAgbGVnYWN5LXRydW5rCisxNDEzMSA3YTRmNjI0OWM5Nzg3ZGM2YmEyOTE2NzJiMDllYTA1MjUxZmI0MWQzIGxlZ2FjeS10cnVuaworMTQxMzIgYjE3ZWY1NGM5MWM0MWZlMmI0MDNjZDI3MWM1NzBjNjU3YzA3OTQyNSBsZWdhY3ktdHJ1bmsKKzE0MTMzIDE1NmIxYmZlYzNiODlkN2MwNjEwZWE3YWY3MmEwMzZkNjkxNmZjYjAgbGVnYWN5LXRydW5rCisxNDEzNCA0NTIwZjY5M2I3NjVmNjgzMjkzZmFlZmUyZGNiNzBlNzlkYzM3YzExIGxlZ2FjeS10cnVuaworMTQxMzUgMjJmNGNmMTZiNWEzMTYxOGIzMzJkODUyOGU2NzcyNzFlNzYwMmI1NCBsZWdhY3ktdHJ1bmsKKzE0MTM2IDJjYjU2ZTk4Y2Y1MjNhYzVlOGUzMzU0NDJhOGM5YmNmZjU5ODEyY2QgbGVnYWN5LXRydW5rCisxNDEzNyAxZTdlZmMxOGE4OWRiNDUxNTAyYWVjMWY0ZWJkNDcyYzY2ZjE0MGE3IGxlZ2FjeS10cnVuaworMTQxMzggYzcxMTU1Y2UxMjE1OWZhZjJjMGFkMTgzMmQ4ZjEzMDMzM2I4NzE1MyBsZWdhY3ktdHJ1bmsKKzE0MTM5IGNhMTVjY2MyNmYwYzJkYjU5MmViZjdmMjRiNWEwMjZlYmRmZGQ5MzkgbGVnYWN5LXRydW5rCisxNDE0MCA4ZWZlYjg3MTIxNWI0OGYxYTNjZmFmMjE1YWMxOGYxZjYxYTk1NTFiIGxlZ2FjeS10cnVuaworMTQxNDEgMDRhZmI4N2QxMTAzZDEyZmM2NDdiMGViYjA2N2Y5M2RkZDk0NjcyNCBsZWdhY3ktdHJ1bmsKKzE0MTQyIGUyNjYwYWZkYzM4MWI4YzY1ZjE4ZWMyY2NhNGE2ZGI4OWRkNGYwYjggbGVnYWN5LXRydW5rCisxNDE0MyA1MjU1ZDA1MDQwYzI1MjIyNzVkZDMzNTQ4MjEwN2YyZWFmZTBkMzk3IGxlZ2FjeS10cnVuaworMTQxNDQgZDQ3MzFlNDNmYTYwNTNhNDJjNDNhMDliMDAxNTNmMDc0NmM3NGJlMyBsZWdhY3ktdHJ1bmsKKzE0MTQ1IDZhYmM1MGJiNDcwNzRkMzhiYzhhZWNiYTM4NDAxMjcxY2Q4NWQ1OTggbGVnYWN5LXRydW5rCisxNDE0NiA4ODU4MjBmYTdlMzE4Nzc4YWI3NmJmZmFhZWU2YTY2MWQ0ODRkNWZiIGxlZ2FjeS10cnVuaworMTQxNDcgMDdkMmVhNzFhY2RjNjYwMDYyZGRmOTRjYmMwZGZkODdhM2QxYTJiYyBsZWdhY3ktdHJ1bmsKKzE0MTQ4IDIyYzAzYWI0ZmIxNjUyNWQ1MzMyYWZjYjMyMWZhODAwY2M3M2M1ODMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTQ5IDZhZGMzYzVmYTE4NWExMWE5ZWM0MzZmYTg1MTFmMWJiNzBjZWVkNjggbGVnYWN5LXRydW5rCisxNDE1MCBjNWFiYzgxZGQxZWVkOTAyNDQ4ZDVmMDM1OGFiYmJiZWRiYzNhNDY0IGxlZ2FjeS10cnVuaworMTQxNTEgZmQwZDMxYzM0NmIyYmI0OTgzYWJkMDM4NjQ2YjFhNmI1YTFhZDYzOCBsZWdhY3ktdHJ1bmsKKzE0MTUyIDU1ZGYzNzAzYzk1M2I2N2UwNmQ1MGNlNWIzZDQyMDhkNjcwYjNmY2IgbGVnYWN5LXRydW5rCisxNDE1MyBmNTdmZjQyODlmYzY0YjZiOGQyNmRlNjE0MzFmN2UwZDY3Zjc5ZjQ4IGxlZ2FjeS10cnVuaworMTQxNTQgNTdjMTY4NWFjYjE2NzNlZWZlNDAyY2FiZmYwNzIxNTE3YWIzN2YxZiBsZWdhY3ktdHJ1bmsKKzE0MTU1IDRjM2U1NWM4MjhkM2JlM2EyZmM3YWNlYWEwMDI2YmUwZjNhNmIyMzkgbGVnYWN5LXRydW5rCisxNDE1NiA0OWQ2ZDMwMjc3ZGE3N2M5YmRmNDlkYTQyYWJkYWIwODIxYmMzYzA0IGxlZ2FjeS10cnVuaworMTQxNTcgNjZhYTIxZjUwZWEzNTEwY2ZlMGFjMjlhNWY5MzcwNTllNzgxNDEzZCBsZWdhY3ktdHJ1bmsKKzE0MTU5IDNmZTI3YmIyZjExOTM0MGEwMzE0ZGViZWQwMjI1ZmMyZWRkOTY5ZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTYwIDI3M2E1ZTlhYTYzM2UzMDNlMmM2YjdlOWY1NzAxNDEyMTM5NTRmOGUgbGVnYWN5LXRydW5rCisxNDE2MSA4NmExNjNhNTNiMWNhYjdlODk0ODRmNDJlZDNiMGFhM2JlNmNiOGFkIGxlZ2FjeS10cnVuaworMTQxNjIgZjM2MTFjYjNhMjYxNzM3NDIxZjE5ZTkyN2FlYThlNmVmNzYzMDRlNiBsZWdhY3ktdHJ1bmsKKzE0MTYzIDE3NzU5MDBkYjEwODc1NGY2ZjUwYmVlMzliMzk5Njc1NjRiNzQyOWMgbGVnYWN5LXRydW5rCisxNDE2NCA1N2FhMjc3ZDdhMDBkZTdlMzFkZWE4YmUwODMxYzdhNzg1NTlmZGQxIGxlZ2FjeS10cnVuaworMTQxNjUgYzYyMDViYzcxMGVlOGIyYjFkMmRkMmYzZWQ4NTU1ODY0ODIyNTNiNSBsZWdhY3ktdHJ1bmsKKzE0MTY2IDNmZmRmMDVmNTYzNWRmM2JjNDhmYjBiMjAzZjg4M2U5YWIyMTczNDggbGVnYWN5LXRydW5rCisxNDE2NyBhZjVhZDVlZGI3YTVkYTFmMDE4ZGU3OWNhYWVlOWJjNWQ1M2UwZTNkIGxlZ2FjeS10cnVuaworMTQxNjggNGJkNGJkM2I1OTdhYmU2NWY5NjZiN2JjOThiYTc4ZTllYTg3ZjQyZiBsZWdhY3ktdHJ1bmsKKzE0MTY5IDY0OGQ5N2JkM2FjNmMzNzc1YzhkNDFkZTgwYjQ1YWI2OTE2ZDNiOWYgbGVnYWN5LXRydW5rCisxNDE3MCAxMTMxYmZhMWFkOTkzMjM2ODlkZjdhMjNjMmM3ZGNkYzE2MTZhNjZkIGxlZ2FjeS10cnVuaworMTQxNzEgMWIyZTNlMmEyNDM3OTNmNjBkYTAyZGNmOTVjOGQ2MDM5ZjhkMzhlNSBsZWdhY3ktdHJ1bmsKKzE0MTcyIGNhYjNmZjU1MWY0YmM2MjY1NGUyOGUxYWE3NjU4ODQ3YTZlNjBhM2QgbGVnYWN5LXRydW5rCisxNDE3MyBmMjQ5NjVlNzdiODU1NmJhZDVkZWYwYTA0ZTgxN2E2MGU5M2RlM2IxIGxlZ2FjeS10cnVuaworMTQxNzQgZTBlMDExZTQwNzNjNWE1YTJkYjEzNGYzYjVlZGYwYTBlOTA0YjE4OCBsZWdhY3ktdHJ1bmsKKzE0MTc1IDE1ZTViZDg5Mzk1YTdkNTIwN2QyMzgxZjcyYmUzMThjMmU3M2NhZjkgbGVnYWN5LXRydW5rCisxNDE3NiAyMzhiNDM5ODgyZTUyM2I4ZDU5MDZlOWJhMTYwMDk3Y2Q3MmQ2ZTEyIGxlZ2FjeS10cnVuaworMTQxNzcgMDExNzFiZTQ3NjlkMTNlNDM3OWY1Yjc0N2VmZGU4N2QzY2E4ZmZmYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNzggNzcwNjE4ZDlhN2ZjZmEwZDc4ZTJhYjM3NWZiZmY1ODkzMTI0ZDAzNyBsZWdhY3ktdHJ1bmsKKzE0MTc5IDc4ZmU4N2NlMGRlZDEwNjIzNzAzNjA5OTRkMzc3NDRkNWUzYWQ1YmUgbGVnYWN5LXRydW5rCisxNDE4MCAxNDU2MWU4Mzk1YmI5ZGVmZTg1M2UwNjkzZjIzODExYzIyMDc4ZGI4IGxlZ2FjeS10cnVuaworMTQxODEgMGJhZDlkOGI5NDVmNzIyMzk0ZWYwZjE3MjI3OTYwMjMwMTExZDE5YiBsZWdhY3ktdHJ1bmsKKzE0MTgyIDU3MzhhZDczNzExNDQ3MzlhMmVmM2MzYTRmNDJkODJkMGJhNWM0ZDMgbGVnYWN5LXRydW5rCisxNDE4MyAyYWFiNDc0ODQwMTIyMmU3MGI2ZDdlMTViNTAzMmVlOTBjNDQ3NWNlIGxlZ2FjeS10cnVuaworMTQxODQgMWNmZDgxNzY4ZTcwMzVkMzlkMzE0NzgwYjI3YTM4NGY4NTEzN2JkMiBsZWdhY3ktdHJ1bmsKKzE0MTg1IGVjZDY2Nzk4Y2YwYmRiY2Q5OWYzOWJjZGQ2NTUyMGRhYzdjNmViNTcgbGVnYWN5LXRydW5rCisxNDE4NiAxM2RhYWQ4YTZlZWUxMDhjODQxOTNjNzMwZDFiNzRhNDg2YTliNGVjIGxlZ2FjeS10cnVuaworMTQxODcgNjkyMTZjMTFhMWJkN2M2NmYyMjRkOTM0NDI3ODcwZjU4MmMxYzg4ZSBsZWdhY3ktdHJ1bmsKKzE0MTg4IDllYzdkOTc4ODAwZDI2Njg4M2ZmZThmYzQ1N2EyMTJkNTA3OGQyMjYgbGVnYWN5LXRydW5rCisxNDE4OSBiMzYwNDEwZDYzYzY3NzFiODE4YzdjYzZiZGU3ZmM5OWI0NGFhZjkxIGxlZ2FjeS10cnVuaworMTQxOTAgNmQ4Y2I2NmNkMjM4NTY0NWMwNTY3YTA2OGRkNjdiZjI3NjYxNDI0MyBsZWdhY3ktdHJ1bmsKKzE0MTkxIDA4MzEzYWMxN2NmM2RhYzY2MjUyN2QxMjNhYmIyMDFjMDRkMzM5YmEgbGVnYWN5LXRydW5rCisxNDE5MiA2NzUyODQ0OTc0NDNlMjI5NjkxMDg5YTAyNjRjYTBiYzA5MTk3ZDY2IGxlZ2FjeS10cnVuaworMTQxOTMgMjBhZjAyYTU3YTVmMWUzNTgxNDg5N2E1NDQ1OWUzNjZlOTYyNmJmZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxOTQgNjhjMjU5YjZlNmNkZjhjZDNhNWZlYjdlMmYzM2ZiYmQxMjM0ZjVhMyBsZWdhY3ktdHJ1bmsKKzE0MTk1IDU5MDI3MmFiZTY5Yzg1YmMzZmZjMDVkMmRiODgwNjdlMDcyNDFiM2EgbGVnYWN5LXRydW5rCisxNDE5NiBiYjFmNDNmMjVjZTA5YTUzYjliYWZmM2QwNTRhOWU0MGIzNWZiMTk5IGxlZ2FjeS10cnVuaworMTQxOTcgYTcwZGM3M2EyOGRlMDkzMjQ1MGI0NGI5MmZmNjhlNjRkYzRjOWExYyBsZWdhY3ktdHJ1bmsKKzE0MTk4IDEwN2NlMjliMDRhNDVkODQ4MzgxNTAwNTc2NTYyYTY5NDk1N2Q5NDQgbGVnYWN5LXRydW5rCisxNDE5OSA1Mjg1NTlhMGIyZjI1MjBlOTg3MWQ5MDQ2Y2Q4M2RmNGFlYmI5NjY3IGxlZ2FjeS10cnVuaworMTQyMDAgOTEyNDVkYzk0MGViYWYwMjFmNDM3OGU2ZWJlY2QzMzhjMTlmZmY4MCBsZWdhY3ktdHJ1bmsKKzE0MjAxIDhjZjdiMjNmYjk1NTE2ZTAzY2IxOTAyYzI2MzA1YWNlNzMzMTBjMjQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjAyIGM4N2I4NjFjNmVjNjA2MTFiNzMwOWJjZTAxMjE3OGRiMGNjNjcwOWEgbGVnYWN5LXRydW5rCisxNDIwMyAwZWM4MDNjYmQ4NzIyNWFlNWYwM2Y0ZTdmYjhkN2Q0NjA0NmM5NzhkIGxlZ2FjeS10cnVuaworMTQyMDQgNjVkYzA4MmY3MDA0YTFkM2ZhNTg4ZGE2ODAzZGYyMTM2NTg4YmE4ZiBsZWdhY3ktdHJ1bmsKKzE0MjA1IDZmMjExOWNkOTlkMjU2YWM2N2U3ODIzODM1ZjU2NzE5ZDE2NjUyOWMgbGVnYWN5LXRydW5rCisxNDIwNiAzYzIxM2UzNzJiMjI4OWY3ODdhM2U2YjI5NDRkYTcxNDc4ZTA4MThhIGxlZ2FjeS10cnVuaworMTQyMDcgOTJjNTNiMGIyZWU1YTBkNjkwYzU1MDhjOWQ3ZDkyODQyNDI1Nzc1YiBsZWdhY3ktdHJ1bmsKKzE0MjA4IGM2ZTE0M2RmYzVhMzMyYjA1OTBiMGI1Y2M0Zjg4ZjFhZjUzYmU4NWMgbGVnYWN5LXRydW5rCisxNDIwOSBkNGVhMTM2MTczMWI2MzU2MGE4MTBjNjA1NjkwYzU1Yjg2MmRkYTJjIGxlZ2FjeS10cnVuaworMTQyMTAgNDdmOTNhOTY5MzY2YWJhNmU0MDM5OWM4NGVhMGI1MTA0ODlkOTdiMiBsZWdhY3ktdHJ1bmsKKzE0MjExIGQ3ZTk2Y2RlNmI0N2JkZDNmYjU2NjUzYjdiNjNhY2NlMWMyNDZiYzYgbGVnYWN5LXRydW5rCisxNDIxMiBjMzVlZWY4YTIxNzFhNTI1ZGZjNzNmZjNmYTA2MDEyNzQ4NTgzMzA0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxMyA0ZTMwOTVjNGFlYTBlNzdiY2RiYWE2MTIyNmNjNTgwYzU0NzNhYWVlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxNCBkZmUyYmZjODA1MGNiOTI5MzhlZDY0ZjM3ZGRlYmE0ZjkwYjQ0ZTdkIGxlZ2FjeS10cnVuaworMTQyMTUgYjgyNzNlNWRlMzc0YmZiMDc3MTMzZjdkZmJiZWFkNDk3Yzc2OTAwMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMTYgY2Y3YTBmMWI3YjQ4YjZjOGVmODBhODY0YmU3Zjk1OTE1YjE5M2ZkMyBsZWdhY3ktdHJ1bmsKKzE0MjE3IDRjZjkyNWZjYjU2MTllNmI2NzY3ZjRjZDE2ZGY1MDQyZTdiZWQ2MGIgbGVnYWN5LXRydW5rCisxNDIxOCBmNGNjNjAzZGQ3OTkxYjMxYzQxYmRkMzFmZjZmNzU2YmMxMjFhOWVkIGxlZ2FjeS10cnVuaworMTQyMTkgODE3NTg5MTU2ZjIxNjE3Zjg3ZGZhMmMxZTQxM2IzYTc0YjFhMzhhOCBsZWdhY3ktdHJ1bmsKKzE0MjIwIDc3ODU0NmRjYmEwNTJiYTBmYmQ1ZGJhNDUxZDFkMGY4NmM1YjU0MTggbGVnYWN5LXRydW5rCisxNDIyMSAzMzIyOTg4MDEwYjVlMTcyZDQ4MzE0NWU0MmNjZWIwMDk1NWY1ZmEyIGxlZ2FjeS10cnVuaworMTQyMjIgYTdmMjdmMzAzOTk1ZGI1NGUyMTRmOGJhNzg3NTZlMGI2OWY2MzhiOSBsZWdhY3ktdHJ1bmsKKzE0MjIzIGE5NGMyOTZhNmZjY2NjODExNTZkN2ViMDJlMjA2YjBiOWM2MjA4ZTIgbGVnYWN5LXRydW5rCisxNDIyNCBjZjdmY2IwYzViZGUyYjFmNTM5ODY1ZGQ1NGY1MTJlNjhiZWM1YzUwIGxlZ2FjeS10cnVuaworMTQyMjUgMWZjOGU2NjczYjQ4ZWQyNjIzYzNlY2MyMTUwMGE0NTA3YWFiN2VlZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMjYgODRmZDMxZGQ0YjEyMWI5YTcyMWVhY2VjZTY3YTBlYTI0ZWQyMWZlYyBsZWdhY3ktdHJ1bmsKKzE0MjI3IGE3ZGY3ZDUyM2QyOTM1YmE3NjI1OGE3NWZiNGRlYjljNDI3M2M5Y2YgbGVnYWN5LXRydW5rCisxNDIyOCBiY2IwZDYzOWFjZjIxYmQyNGQxZDRlYjNhNzRkNTIyNmYwODcwMTM1IGxlZ2FjeS10cnVuaworMTQyMjkgMDY5YTFmZDQwYWJiZDc1ZDY3ZjkyYWU5MjM5ODEzZjk1NTJiYTFkMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzAgODY4OTBjMDczYzNiZmJjYWViYTIzZGMxYmY4MDk1NzEwZjgyYjQyMSBsZWdhY3ktdHJ1bmsKKzE0MjMxIDFkY2Y5Yjc1OTM3NGYyMTNhYTc5YzI4MDJkZjIwZjZjYWQ1YTVlNTQgbGVnYWN5LXRydW5rCisxNDIzMiA0YTMyNDdlZGRjNDM4NjljZjAyZjE0NGE0YTA0MTViZWJjN2Y4NWU1IGxlZ2FjeS10cnVuaworMTQyMzMgNDcyYTE3ZjJjYTlmY2UzMTcwMmFmZDUwNDVlNmFkZjdjZGExMzZlMyBsZWdhY3ktdHJ1bmsKKzE0MjM0IGMwZDRlZTkzOTFiNjgyMjYxNmRmMGQ3YzRiZTQ0YzM0MjhlNTM5MjcgbGVnYWN5LXRydW5rCisxNDIzNSBkMDkzNGE4MDM4ZjZhOTY3YmFkODlkNGU1NDFiZjUyYTQ4NDAyZmUxIGxlZ2FjeS10cnVuaworMTQyMzYgODcwNWVhMzkwZGJhMDUyYjA5NGFlNGExMjdiYzJhY2JlY2U0M2RlYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzcgZGVkOTYzNjdlOGNhNzJiZWIyZDQ4NWFkZDllMWFiYjM5ZGE0MTA5ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzggZDMzNTIwODIwZmFmYWM0ZGFhOWQxMmUxZDU3NGFjMzlkNjMwMGZmNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzkgZTgyNzY3MzNkYThmYmU4YzhkMGY2MTVjMTg3M2NmYTdlM2E5NWE5YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNDAgMGIwMTk0ZDQzNTJmMzEyNGM4ZGUyNWJhNjY4NGJmNDllMjIxZGY0MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNDEgMzg1NjBhM2EzMjQ5MTJjNTY5MTM0OGU4NTk3NzI3YzBlODA3YzBhZiBsZWdhY3ktdHJ1bmsKKzE0MjQyIDk5YTAxY2IzZGRiNWVmNWQxNWJjNDFjMDczYWViYTBmMzcxNWQ2OWIgbGVnYWN5LXRydW5rCisxNDI0MyBkODg5OTZlNDZjYjJjZTAxMWYwZWZiZDAxOTc1NzZhM2Y4MTAwODhkIGxlZ2FjeS10cnVuaworMTQyNDQgOTljOWIxMjY2OTBkZmIwNTAyMzU4NDc2YjBhMWQ2ZGM4MjdjNjE2NSBsZWdhY3ktdHJ1bmsKKzE0MjQ1IDRjM2NhNmMwNWJjYjMyMWY4ZDdmYTliNDA4MmYzZTUzNmM3NmYwZGYgbGVnYWN5LXRydW5rCisxNDI0NiAwYWQyMzMyNDAxNmU0ZWQzMTJmYjk3ZDQ2MDNlNTYwZDMxZjM3OTkzIGxlZ2FjeS10cnVuaworMTQyNDcgZmQ1Y2VhZDczM2I2ODI4OGQwOTMxMDBkMTU4YzFjZDNlODIzYTcyMCBsZWdhY3ktdHJ1bmsKKzE0MjQ4IGRiNzU2ZDMxZTcyN2EzYmJjZDZlN2M1ZmEyNDI0OWJmYTM5MThlMGQgbGVnYWN5LXRydW5rCisxNDI0OSAwMjNlZDI2NjMwNzQ2M2NkMjA1ZmYxZDgyZGVlOWYyYjExMmFjYzVjIGxlZ2FjeS10cnVuaworMTQyNTAgMGQyN2U4ZDhmMDRjMWEyMDI5NjQ0ZmZhMWVjM2Q3ZWY1NTZiNDc4ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTEgNjc2NDY5Zjc1YWU2NzIzZDcxYjY1YzZjYTExMjA4YjY4NjQzMTBkMyBsZWdhY3ktdHJ1bmsKKzE0MjUyIGVhNjEwNDRmOThhZWQ4NjJmMmU5ODcwZDYwZDNmMjYwZDZjZTJlNGQgbGVnYWN5LXRydW5rCisxNDI1MyBhZDg1OTQwODQwY2JiNWI1ODhiN2MyODJhYTNjODMwZTI0YzhhYmUwIGxlZ2FjeS10cnVuaworMTQyNTQgYjg5NmMxMmMyZWVhNWNhMzQ5NzA1ZDhmN2IxNmQ2MzRkZTI1YzkwNSBsZWdhY3ktdHJ1bmsKKzE0MjU1IGM0MzRmOTQyN2M5YjAzYzUxOWM0N2FhYzg3ZjA1MDc5ZDk3MTQ4OGQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU2IDI0ZjgxNGQ5ZTNmZjU0NTQ1YmUyN2Y3ZDk0ODMyZDczMDU4MTFlY2MgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU3IDAwMDE3MjI1ZjA3Nzk1NTUxM2M3NjgyYTU3MDFhZmVlMzJhMGFkOTkgbGVnYWN5LXRydW5rCisxNDI1OCAyYWI3NGIxOTMyODZkOWM4ZGJhNjFkYTZmN2ZhODM2MDExY2I0YzI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1OSA1MjhlZjM4YjNkM2E3NjdhMmE4NDVlZDc0YjgwOWUyYmY5ZGI2YjA2IGxlZ2FjeS10cnVuaworMTQyNjAgN2ZkZmFhYTY1ODI3MDk2NDMxNTJmN2YzMjgyMmIyNjBjYjY2NDU0MyBsZWdhY3ktdHJ1bmsKKzE0MjYxIGU5OThiMzUwYTRiYjFkYTEyYmI4ZWNlYzE2ODljZGVkZWZlNzhhNjMgbGVnYWN5LXRydW5rCisxNDI2MiA4MjgzNTU0ZjEzMTlhNGQzYWQwY2JkMjRjMTQzYzZiY2Q2YTNhM2YwIGxlZ2FjeS10cnVuaworMTQyNjMgNzcwOWM5ODM1MzgyOGMyYmIyM2JhYmRlYWQyNzA4ZDMxZmU3Njg2ZiBsZWdhY3ktdHJ1bmsKKzE0MjY0IGI3ZjI2Mjg3M2JlMDRiYmU0YWZjOTg0ZjY2MjZiMzUxZGQ4OGRlMDIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjY1IGEyMzg2YjlmNDc0ZDhhYjFhNTQ3ZmRjZDYzNzBiOTZkZGE5YWM2ZmMgbGVnYWN5LXRydW5rCisxNDI2NiA5NTUxMWYzOTMxOWE0YTFmNzlhNDAwOWQxYWNkNTVkZDE1ODg2YjNiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI2NyBiODAwZTM2YWVkNGViZGFiZWNjZGRkMjg1ZTIwZmNlMTFkMmMyM2I3IGxlZ2FjeS10cnVuaworMTQyNjggNDQyZDRjYjQ0MGM4ODIyODg3ODEwNjExMTRlYTVjYWI5NDM3YmIyYyBsZWdhY3ktdHJ1bmsKKzE0MjY5IGRmZjdhMDNlN2QyNGVkYTA5MTdhOGZlMjIzYTI1ZTY3YjFiMjFiNTUgbGVnYWN5LXRydW5rCisxNDI3MCA4YWZkNmZiNTg4ZWU3YjljNjUzZmU4MjI1MWY2MGI0YmFhYTM2MjUzIGxlZ2FjeS10cnVuaworMTQyNzEgNWU2ZTllODkzYWNkY2VmZDQzYWViNTM5NmZlYjMxZmIwZDllZTU1NCBsZWdhY3ktdHJ1bmsKKzE0MjcyIGExMjZmYjVjNjJkYzc0Nzg4NGY4MjY4YThmMWY5ZGZiMDIzMzY0ODIgbGVnYWN5LXRydW5rCisxNDI3MyA0ODM3MGM2N2RkOWU2YzdmYjE5MmRhMzI4MGRjNjJkNTI2NWM5MjJlIGxlZ2FjeS10cnVuaworMTQyNzQgNDg5NDgzYjY1YjNhM2ViMWJiOTUzMzg0Mzc0M2JkNDA5YTRmNjE2OSBsZWdhY3ktdHJ1bmsKKzE0Mjc1IDY5Yzk5NTE2MjI3MDY0NzQxZWY1ZTcwZjM2YmMyMDYzNTE5N2MyM2EgbGVnYWN5LXRydW5rCisxNDI3NiAwNzU2ZGZlZWM0ZWVjYmQ4Mzc3ZWQ1MTQzYzhkMGJlNDM0ZTFjYTEyIGxlZ2FjeS10cnVuaworMTQyNzcgMjE2ZWZkYWQ5YTRiNmZmNjU0NWViMzdhYTUwZjhlMTdjZjNiYWY1YyBsZWdhY3ktdHJ1bmsKKzE0Mjc4IGZmOTE5ODUzNjJjN2NjMGQyNWJjZWIwMmE0MTdlYTNlYWNkZGUzYWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mjc5IGY5NGQ2NjAxNjkyMWU5ZDBlMDZlN2EzZjk2NzViYjJkZTAzOTIyZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjgwIDkxOWIzN2M1MmE4NDJhMjY1ZDY2ZmVhNjgwN2MzYWRmOGU4NGJlZjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjgxIGNiZjQ0MTAyZDQyYWZjNWRiODJiODYxZDRkMmQzYWVmODg4MjMxM2UgbGVnYWN5LXRydW5rCisxNDI4MiA2ZDFkNWYzY2NhNWZiNjJiOTc4YTY5YjViYmMwMTFmNzk0Zjc4ZDczIGxlZ2FjeS10cnVuaworMTQyODMgNjdjNjIzOWM3YmM3YWZiZmFiNTE1ZDFhYjFhZGM4NTRmNmFkODhjZCBsZWdhY3ktdHJ1bmsKKzE0Mjg0IDQ3Zjc1YTE3YjEwMzc0YjJjZDRjYWM2MGRjYmNhNDAwYjYxZjVkN2IgbGVnYWN5LXRydW5rCisxNDI4NSBhOTQ3MTNkNmQ5ZjZhODMwMDg0NGMyMmE0ZWJhYWNiZWQ1OGQ4NGFlIGxlZ2FjeS10cnVuaworMTQyODYgNWVmYjYyYWNmMjZlZjNkOTNmN2U2MmViNzdiN2I0ZGViNzY1MWZkOSBsZWdhY3ktdHJ1bmsKKzE0Mjg4IGI1YWVjMzM3OTBjOGU1NTI1ZGU0MjgxODIwZGNmMzNiMjFkMzQ3OGEgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQyODkgOTNiZWQ2MDM1NWU0ZTllNTg0ODc2YmJmMjI0ZTBkOGNhYTdkYzRhMSBsZWdhY3ktdHJ1bmsKKzE0MjkwIDhiMzQ4MTg3ZTMwMzMyNmM0MDQwMzM4MWVjOGQxMThjODU3Njc2MmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkxIGVmMWU2M2Y3NzQ0NTk5MGFiZDQ3YmJkODMwNWEyMzZlODNkYmRhNTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkyIGY2ODBhYjEwNmU4NjFlMDdlMjZiNTE1MTUyZjQ2MGEzODIwZGY1M2MgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkzIDQ3ZDcwZjRmNjM1ZjMxMGU5MWFmNGYzZDMzMTQzOTY2NTBiY2I5MDYgbGVnYWN5LXRydW5rCisxNDI5NCAxYzQzNTRiYmE0MmI5YTE5YmVkZGYyMDdhYjg5NjVjYzY5ZDM4MGFmIGxlZ2FjeS10cnVuaworMTQyOTUgMDlkYmI0NzAzNGUwZjUyYmY5MGRmMTlmOTQ3OTc2ZGI3OWUzMmY1NiBsZWdhY3ktdHJ1bmsKKzE0Mjk2IDRjMTZmNDI1YzcxMmM0MjM3MGZmZTNiODcxM2FlMDQ4YTlmMGMxNjUgbGVnYWN5LXRydW5rCisxNDI5NyBlMzQ5OTEwMjI1NzE3NTExMmEwMWNhZWMzMTNiZmRiNDNjM2EyZjQzIGxlZ2FjeS10cnVuaworMTQyOTggZjRmOWI2YjQ0ZTllNDdjNzM4ODE2MjNjNTAzODcyNGUzZWQ5ZTcwNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTkgMGRkNTIwZjRkY2U4ZGMxZGRkNDZiNTBjMjhlMzdhZjQ4ZmZjODg4ZSBsZWdhY3ktdHJ1bmsKKzE0MzAwIDhmODhiMzE4NDNhYmM1MjQ0OWYwZjRjYTdkODMzYjAwNGE4ODU0MzEgbGVnYWN5LXRydW5rCisxNDMwMSA4OTBiMTFhYTJlYmM3MmY4Njg0ZTBiODMyOWNiMWJiNjNjMmNkNTQ5IGxlZ2FjeS10cnVuaworMTQzMDIgZGU0NGY1MTE3NjhhYzY2NzBkYTU0Y2YxZDZmZjcwMzM1MmRjYzMyNyBsZWdhY3ktdHJ1bmsKKzE0MzAzIGIwZWI0MjFmOGFlOWJlYjdkOGExNzhhZTNmYzMxNWQ2YzdiNjBiODQgbGVnYWN5LXRydW5rCisxNDMwNCA1ODgzNzEzZTJkYTNhNjFmMTM5YTRjYmU4ZTg1NjJlMjMxZTQ5MmRlIGxlZ2FjeS10cnVuaworMTQzMDUgZGFjYWEzNGRmY2E0NmY5NDNjMGI5OTdmZmZjYThiNzdiYzQ3MTE3YyBsZWdhY3ktdHJ1bmsKKzE0MzA2IGQzNmQzMTJjZjkwYmVlODYwZGFlNzdhYjEyZTZkNzNlMGU0OThmYTcgbGVnYWN5LXRydW5rCisxNDMwNyBmZjc5ZWU0M2I4YTFmYTc1OGUwZDk5NGJhMjNkMTQ4OTdkYjhjYjRjIGxlZ2FjeS10cnVuaworMTQzMDggODZlN2U1ZWNhZjc5NjBiMTYzMTM4ODlkZDhkNjUwMmJmY2JiMjcwYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzMDkgNDk3ZTAxMWVmMWEzMjVjMDc1ZmUyZmZmMjc4MzU0OTA1NzBlZTMyOSBsZWdhY3ktdHJ1bmsKKzE0MzEwIDdmMjkzMzllYzNhNTBhM2E1MzQyM2EyMzNiNmE4ZDFhNDI5NTYyMDEgbGVnYWN5LXRydW5rCisxNDMxMSAzNGY1M2MzNmJhOWExYjFkMGM1MTdlNTI4MmM4YzZjNDE0MWM5MjU3IGxlZ2FjeS10cnVuaworMTQzMTIgNzE2ZmI1OTU0OGJlNDlmYzM5NjlhNGZiZGM0ODEwYjU1N2UwM2MxYyBsZWdhY3ktdHJ1bmsKKzE0MzEzIGQxMGMxMDhkM2ZkNzYyMTI1MmY5NWRkYjEzMzY0ZWU2Y2NlYTZjMjkgbGVnYWN5LXRydW5rCisxNDMxNCBiNmY1MmMxZWY2ZGE4YThhY2IwZjcyNjZkZDFjZjRmNjhhMWNlZTI2IGxlZ2FjeS10cnVuaworMTQzMTUgNmY0MTQ2ODQ2MzM3ODc4YzBiYmYxNDk4MmIyYzBiNDAxZDUzZDg3ZSBsZWdhY3ktdHJ1bmsKKzE0MzE2IDRhMjNjYzQ5ZTJiMDY0ZDlkMjZmM2E0MGM0NDk3YTUzZTA5ZGM4YjIgbGVnYWN5LXRydW5rCisxNDMxNyBkOTAwMGVlOTU5ZTUzN2U4ZDkyODYzNGMxZjIwNzE5ZGE3ZGU2Mjg3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDMxOCA1ZDYyNWEzNjVlNzY1N2EyOTI4MDNmMmNkYTI5YzllODU1YWRjMmQ2IGxlZ2FjeS10cnVuaworMTQzMTkgMzhjNGQ2MWRiN2VhMWY5MTA4NGIzNTE0NDA2NTU0NDlhMDEzNGY1OSBsZWdhY3ktdHJ1bmsKKzE0MzIwIDY1NDZlYTA2ZTE1NzA5OTI1NTcxYTQ5MzAyZjFhZjcwODQ1YTdiODkgbGVnYWN5LXRydW5rCisxNDMyMSA5MjUwZTVkM2FhMzFmZGQ0ZjlmNmZjYTE5MWUxY2ViNjA3MjA5YmUwIGxlZ2FjeS10cnVuaworMTQzMjIgYWJmYTFjYjFlZDA1MmE1NDJkMmE4NmE5ZjkxNDFlMjEwMGM1ZTMzOSBsZWdhY3ktdHJ1bmsKKzE0MzIzIGIzMjIzZjAzYzllYTg4ZGY5NWY2NjVlYjhkYTBhZmNiOGUxN2NhMDMgbGVnYWN5LXRydW5rCisxNDMyNCA2MjdiNGRiYTExOTJlMjViMDk4YjAzYzFmOTRiNGJjMWM2NWVjYzhkIGxlZ2FjeS10cnVuaworMTQzMjUgZTQyNTU1NmU2OThlYmZhMzM2YTlmNjhkNDVjMTBhMTUxZDhkMWQxZiBsZWdhY3ktdHJ1bmsKKzE0MzI2IGU5MTY5YjE5ZTllNWM0NDdjNjVhZDllZWI1MjBmNDczMTVjNjNmN2UgbGVnYWN5LXRydW5rCisxNDMyNyAxMTYzYTdhMWNjNjc5YjgyMGEwMjFiYTg5NjZiZjVmYjg3YTYyN2Q2IGxlZ2FjeS10cnVuaworMTQzMjggODM5ZjhmODZjY2FhM2FhMWVlMzFkOTQxOWJkOTE3MGZiNDE5YThkZCBsZWdhY3ktdHJ1bmsKKzE0MzI5IGZkYzllZWI4OWUwYjMwZTY2ODFhNGEyNGU2MGUzNTQxOGQxMjJmN2EgbGVnYWN5LXRydW5rCisxNDMzMCBlYjM4MWZmMTdhMzE5OGMyMzI0YzY0NGYzMTY0MjYwYTZlZWJhN2UxIGxlZ2FjeS10cnVuaworMTQzMzEgNDIyMzM3YzMyMjlhZGVhMWY3NzYxYTAzYWJmZTM1ZWI2YzRjZDdjYSBsZWdhY3ktdHJ1bmsKKzE0MzMyIDY3NmU2NDdiMWJlNmI5NDNjOTg1ZWY1NjJiOWExODYwNzQyMTc1NjIgbGVnYWN5LXRydW5rCisxNDMzMyA3MWQwMzhkYjBkZDIzYzJmMTIwNDU0MmUzYjBmMDFhNGQ1MDA0MDU1IGxlZ2FjeS10cnVuaworMTQzMzQgYjdhZWJjODRjYmMxNjRhNWUwMGM5ZGVjNTdmOGFlZmU3M2I5OWI4ZCBsZWdhY3ktdHJ1bmsKKzE0MzM1IGE1MzI5MzJhYzQwODM4N2QxOTRiYTU3YmEyN2NmMmUxZDk1ZDI4YzEgbGVnYWN5LXRydW5rCisxNDMzNiAxZTk1MmQ5MzNhYmJlZjVkM2Q5YmUyNjIzZTlkNGIwMjU5ZDEwNmY3IGxlZ2FjeS10cnVuaworMTQzMzcgOTg1NzIzNDk4YjFiYTY0MmNjMjY5NWU2MDk3MWU4YjliZjhlNmQyOSBsZWdhY3ktdHJ1bmsKKzE0MzM4IDYwMjViMDdjNWMyOTY2ZTU2YzM3MGM5MDI4YjA1OTRhZWQzZDliODMgbGVnYWN5LXRydW5rCisxNDMzOSAwYjQ2ZDI1MGUxOTljZmE2ZThhNzFiMzA4MmNiYzkyY2RkYmYwNmZjIGxlZ2FjeS10cnVuaworMTQzNDAgNzJlYmY5MWRhYTA1ZDVhNzMwZmEzNzM5MWI1YWZmMGM1MzdiNmQ5YSBsZWdhY3ktdHJ1bmsKKzE0MzQxIGM5NzZkNjkzZGRlYjM2NDA1Y2Q5NzE4MDM0YWZmOWU2ZWZhNjFjMTUgbGVnYWN5LXRydW5rCisxNDM0MiA3OGYwMDk4ODEyYjc0YjI1N2IyNWM1NDFiMDJlMDQwNTUzOWQ5NzAyIGxlZ2FjeS10cnVuaworMTQzNDMgNmE5OWZmMDY5NDU3ZDcxOGQ0MTg5MTAwYWU1ZWFjMzdkMTFjNmMzYSBsZWdhY3ktdHJ1bmsKKzE0MzQ0IDg5ZDMwOGZjZjZmNDU4MzYzYjRkZmYwMzJjNjk0NWZjNmU5YzkzMTYgbGVnYWN5LXRydW5rCisxNDM0NSBlMTlhMzUwOTk0Yjc1YWZjMWJkNDc5MWMyYzFiN2EwNWZmZWEyYmQyIGxlZ2FjeS10cnVuaworMTQzNDYgNjUzYTkzNTBhODE3MzM5NjliM2U3MDI3NjNmZGE1ZTA0ZDA3YWIxYiBsZWdhY3ktdHJ1bmsKKzE0MzQ3IDgzZDM1MWY5NDhhYjc1Y2VkYzhhNmU2ZmJlMzJkYjhlNGIxOTc1YzcgbGVnYWN5LXRydW5rCisxNDM0OCBhODZiZGZlNDU3MjU4NGQ2YzZjNjZhMmIyOWM4YjlkY2QwYjdiYzEyIGxlZ2FjeS10cnVuaworMTQzNDkgMjNlN2Q5NzgxMDEzMTE1NjkzY2RlMDI5NDAzNzkwOTMwNDY0ZTA2OCBsZWdhY3ktdHJ1bmsKKzE0MzUwIGRhN2Y1ZjZhODQ5ZDBlZThhODJhZTc2ODljZjM0Y2I4MDgxMmE0ZGUgbGVnYWN5LXRydW5rCisxNDM1MSA4NDBlMThlZWMwN2Y0ZjU1Yzg3MzkwMjJhM2I1ZjU2YzM0Y2Y5MjBjIGxlZ2FjeS10cnVuaworMTQzNTIgYzk3OGEyM2E0ZGFiMTA3NTkxZThkMDc2OWYwN2FiZGMxN2Y0NTE2YyBsZWdhY3ktdHJ1bmsKKzE0MzUzIDNjNzdkNmM1YzhlOTE4MGYyZmJiOWZiYzA5MzYyZDhiNzQ2OGFmMDggbGVnYWN5LXRydW5rCisxNDM1NCA0NWMzNWI1Mzc2ZTRiZGJiNWJiM2E2MWRiNzBhYjg4ZTRiZDVmYTllIGxlZ2FjeS10cnVuaworMTQzNTUgNzc0NjVkOGI5ZjVlMjkwZGJjMzQyN2U3Y2YyMmIwZmRlN2NkNDQ5YyBsZWdhY3ktdHJ1bmsKKzE0MzU2IDdlZjM5ZTA3MTIwYTdkYWI1ZjM0ZjZiZTNhOTRlMDJkOWVjYzE3YWMgbGVnYWN5LXRydW5rCisxNDM1NyA3NmE2MDlhOTQ3MzAyMjM4ZjUxNDhhNTM0YjhmODI1MWZkMjQxMWY1IGxlZ2FjeS10cnVuaworMTQzNTggNWMyNzcwMTI0OTA0ZWRiM2MyM2IzMTE4ODQxNDgxNzAwYTI0OTQ2NSBsZWdhY3ktdHJ1bmsKKzE0MzU5IDc3ZmEzMzE2YmY1ODI1NDcwNzBmZTQwYzA3NjFiNWNhYmJjYjNjMDMgbGVnYWN5LXRydW5rCisxNDM2MSA0ZDkxMjIxMjA4ZmZiMGI0OTQxMTI0MGU0MDAyZDJlODFiOTBjN2U0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDM2MiAzZjFkYTA1Y2VkNTUzNmEyMWFjYTIxN2RiODBlNmFmYzQzZmViOGQ1IGxlZ2FjeS10cnVuaworMTQzNjMgM2RjZGRiNDc5YTdlNjQ3MzllMGM4YWQ3OGQyMjBmMTJhNzZmOGQ0OSBsZWdhY3ktdHJ1bmsKKzE0MzY0IDYwNTZjZDUwMjk3ZTRjOTkxOTE3OGNmZGY2ODAzNzFiNWQ5MTU3YjEgbGVnYWN5LXRydW5rCisxNDM2NSBkZmZiZDkyMWVlZWQ0NWNiMzA4NGQ3YzdhZTk1NDY1OWViZmE5OGNjIGxlZ2FjeS10cnVuaworMTQzNjYgNTdmYjM1MDFhYjIyYjJmNjQ4OTg0OWM2MGU3NWIwYzVhZjIwNTBhOSBsZWdhY3ktdHJ1bmsKKzE0MzY3IDYzNjdkODI5ZjM2YmMyMGM5NmE2NTk3ODg4YTc3OWE5NjlmYTZjYjMgbGVnYWN5LXRydW5rCisxNDM2OCBlMzYwNmQzMDg4NmYwMzgzN2FjNzJmMjFmZDI5NzQxMDJmYjIzMTQ4IGxlZ2FjeS10cnVuaworMTQzNjkgOTQ1Y2U2MGQ5ODc5MTczNjhiMDk4NmNhZTg1OGI4MDZjYzVlNmZmMyBsZWdhY3ktdHJ1bmsKKzE0MzcwIDAyMDUyNmU3MmVhY2YyODM1NGNkNTUxYTZmNzIxODdjNTEwZDdiMDcgbGVnYWN5LXRydW5rCisxNDM3MSA5MDkyZDMwYzJiYjdkNTg2Zjc5MDZiMWYyZmI0ZmY3MWFlYjYzOWZjIGxlZ2FjeS10cnVuaworMTQzNzIgNjJmYThlYzg1OTVmMDJlYTJmNzhhYTVjOWFlM2NjZDYyMmNhYzA3OSBsZWdhY3ktdHJ1bmsKKzE0MzczIGE0ZWVmMDgxM2Q0Y2JlMGJlZjg3YWRhNGQzODUyZjkyNjIyYmZiMGMgbGVnYWN5LXRydW5rCisxNDM3NCA5ODc2YTY0YzE4MWFhYTYxODI3ZGE3NmI1YTljYWYxMjM4ODYyMTdmIGxlZ2FjeS10cnVuaworMTQzNzUgMzU3OTk3NTUwOWQ5MzU3OTYyOWVhMmMxNDc2ODg2NjA2YjEyNjE3OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzNzYgNGNmODRkZGY1MTI5MDQzZDI2OTFhMjc0NWY5YTM5OGJiZGIwODgyMiBsZWdhY3ktdHJ1bmsKKzE0Mzc3IDNjZGUxMmJiM2RhNWQ3NGM3YjYxY2Q1ZWMzOTgyZWU1OWUxZTFlYTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mzc4IDAzYmQ1OGY4YzlkMDNlMTJiOWJiYTViNGRmMWFlMmFlN2M3MjAxMWIgbGVnYWN5LXRydW5rCisxNDM3OSBiMDM2OWU4ZGFhMGJmZjM5NjU0MWNkYjBiNmRmNTllODllZmM0Njk1IGxlZ2FjeS10cnVuaworMTQzODAgMWEyNWJjMmQzMjcyYWRjNmExZTEwZjQ4OGMxYTc1YWE0YjE4NzU5MiBsZWdhY3ktdHJ1bmsKKzE0MzgxIDEwMzNhMjRjNGE1Mjk4ZjBkMDk2OTEzNmJmZjNkN2NkZWJiNTZjNTYgbGVnYWN5LXRydW5rCisxNDM4MiAzNmM2NzUwY2YyMjc1ODYzZjNlY2ExNmFlMThmN2NhNzE0ZGI1MGI5IGxlZ2FjeS10cnVuaworMTQzODMgOGQ1YjkwZWJiOTE5YmIxN2I4OTcxOTI3MTc5ZDQ5ZmE0MTY1NjUyOCBsZWdhY3ktdHJ1bmsKKzE0Mzg0IDcwN2QxNmYwZDM0NWFhODM0M2UyOGE5Mzk2NWI2YjRiMGJkMjgxMDggbGVnYWN5LXRydW5rCisxNDM4NSA3ZjUwZjcxYWU3YmYyNTYxNTZmN2FmNDcxZGM5ZGUzZGVkMTJkZTM3IGxlZ2FjeS10cnVuaworMTQzODYgMjgzOWQ4NGNmZDk2NjZkOTY4ODg4MmM2NjdiOGRmYTVlODQ3ZjFmNiBsZWdhY3ktdHJ1bmsKKzE0Mzg3IDhiNmUyYjIzNmJhYjUyMzQ0OGZjOGMxNzNlYTkzMGMzZWEyM2U0NGYgbGVnYWN5LXRydW5rCisxNDM4OCA2YjhkYWYzMzdkNmJhYmNjZjM0OTNlOGQ0YmJkMmM2MGFlMDNlZTEyIGxlZ2FjeS10cnVuaworMTQzODkgY2FlOGU4ZWRkM2UyYWIyOWNhMjA4ZGY2ODUzMzViOTMwYzQ3NjkzYiBsZWdhY3ktdHJ1bmsKKzE0MzkwIGRjMTliNTkwMGRhZWJiZGYxODczYzkxY2JlNjc5NDkyY2Q1NjliZTMgbGVnYWN5LXRydW5rCisxNDM5MSBhNzQyMTQ3Mzk2ZWVlMDRkYmQ0ZTNkZDU1YmRkNTkyOTkyNjY5MzY0IGxlZ2FjeS10cnVuaworMTQzOTIgZTJiYmMzZTQwY2RiOTY0ZDU3OGNjMmMxNzFhMDcxMDU2OGZmODc1OCBsZWdhY3ktdHJ1bmsKKzE0MzkzIGVjNDZmYWE4MzU5NTY3ZGEzMjQ2YmEwMjhjNGU5M2YzNWQxMjY4OWIgbGVnYWN5LXRydW5rCisxNDM5NCBiN2NmYzJkYmE1ODZiYmFkMTFiZDg4OWRiNDc1MWQ1OGI5NjNlNzQwIGxlZ2FjeS10cnVuaworMTQzOTUgMDQ5YWI4ZjM0ZGYxNjRmYTUzYTA1MGFiNzg5ZThjYWIzNjUzMDQ0NyBsZWdhY3ktdHJ1bmsKKzE0Mzk2IDQxZGMyNGIyMGExNzVhNDI0ODMwMDAwYmE5NGMwNjgwZDg2YTIxYzEgbGVnYWN5LXRydW5rCisxNDM5NyBiNmYxMjg3ZTE5NzA3MzFlNWVkYzg4M2VjN2QwNjdiZDcyZDcwNGYxIGxlZ2FjeS10cnVuaworMTQzOTggNWFmMDE1NzE4Mjg1ZTM1NjE0ZjUyMTI1NTY1Y2I3ZDAwZjFkNWI5ZCBsZWdhY3ktdHJ1bmsKKzE0Mzk5IDQ4NjcyMWVjOWRkNzQ2ZmM1NDBlYTU2ZmRlNjMwMjJiZmQ4MzQyNWYgbGVnYWN5LXRydW5rCisxNDQwMCBhZThkZjA3ZDRiNmExYjZlZDZkODA2NTBjOTE5YjE2YmEzNThmYzQ3IGxlZ2FjeS10cnVuaworMTQ0MDEgZjgzY2RjYmNhMWIwOGYxMzY5NWIzOWFiNTM0OWMwZjBiMDlkYTQyNiBsZWdhY3ktdHJ1bmsKKzE0NDAyIDg2MDUyNDE4MmI5YzhjYWNkMWJmNWY1NDExYjJjMWI1NTA4ZWYxM2IgbGVnYWN5LXRydW5rCisxNDQwMyA3Mjg0OGM2YjYxMWNlZDQwNGEwMGU0MjczZTI4ZTk1NWYwOWE0Mjk4IGxlZ2FjeS10cnVuaworMTQ0MDQgZmQ0ODE0YjU5YjczYTY4MGRjMTY2ODU3YWQ1Y2EwMDRhZmMyOGY2NCBsZWdhY3ktdHJ1bmsKKzE0NDA1IDdlYjEyN2FkZTA2OTRlYjIwM2ZjMzcyOTYzNWE4Njg5YmIyNzNiY2IgbGVnYWN5LXRydW5rCisxNDQwNiBkMmFiOTU1M2Y4NzEyZTNmNjI3NDE2MThkYjc1ZDExNDYyMWNmZGYwIGxlZ2FjeS10cnVuaworMTQ0MDcgMDlhM2E2OGNlOTY0MDRlYThkOGIzNWEzMDE3ZGJkNGRhYTQ4Y2JlZCBsZWdhY3ktdHJ1bmsKKzE0NDA5IGU5M2E1YTkwNmQ3M2EyOGY4NGU4ZDAxZGZkNDYyMTQwYTBjYmU4MDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEwIDczM2VjNmU4NjlkZDMxNzNiNzRmOGQ2ODRkMWU0ZjIwOTIwMTE0ZDggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDExIDhiYzg3MTA4MTcyNDc3OGIwNGVlYTQ4YzY1N2YxY2U4ZDY2MzQ4NTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEyIGY0NWQ4YjI2YmIyNDUzNGQ5NmMxODEwYmU4NGRiOWNlNDkwZmM2OGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEzIDcxZWMzMWY5N2ZmYzdlMDRlMjE5YmFmZjRmMDIwNTZhM2FmZTc0Y2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE0IGE0YmIzODQzYTU4MjIzMTY1OWU4NTQyMTU5MjUzNWVlYWIzNWNjYmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE1IDQ1NDE5NjExNGZkMjQ1MzU5YTEzMGEyMTYzZjM3N2IyODE3YTVmNjMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE2IGNlZDhkZDYyMjdkZDJkMmMzYjU1OTQ2NTI5NzJkNThhNDZiMWUwN2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE3IDVhZjNjNWI3NGM1NDU4OTMwMThlNzU5NWQ5ZGFmODMwNmVkM2EzZDUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE4IDI5NWZmM2IxNzUyMmEyZWM2ZTk4MzEwMzlhYjgwYWU1NzM3OTVhNzMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE5IDYzY2UwOWRmNjA3ZGUxOWY1ODEzMzk2ZDU1ZWI2NTE3N2VhZDljMjkgbGVnYWN5LXRydW5rCisxNDQyMCBmNTNmZWMwYzc0MmJmNWI0NGI0YmNlMDNhZjQ3NmFlYWVhYzRhN2EzIGxlZ2FjeS10cnVuaworMTQ0MjEgMjllNzRjNzBkZTE4YWZkNTNkOGUwMjhkMjFmMGZjNGMxOTAzNTVmZSBsZWdhY3ktdHJ1bmsKKzE0NDIyIDUwYTZhYjNmYTAzNmEyZGQ2Mzg2OTE0NjM2ZGFhNDkxMjVkNDMwYmUgbGVnYWN5LXRydW5rCisxNDQyMyAzNjc4ZGQ2ODU4NjcwNWQ5Yjc5N2EwYmZlM2Y2M2JhMDE5NjkwOTYyIGxlZ2FjeS10cnVuaworMTQ0MjQgNDQ5YjA3NGMzMDUxYjE3MWJkMTU2OTRhNDAzZGFiYzk2YjY3YTM1MSBsZWdhY3ktdHJ1bmsKKzE0NDI1IGZlOTYwYWQzZGI2NWJjMjQwOTZiZDIxYzUwYmM3ZjQ4ZTgwZmI4YmIgbGVnYWN5LXRydW5rCisxNDQyNiBlNzdhMjg2ZDBlYjEwMzBkZDNkMzFhOWY1MzIxOWFlYWZlNjVjMzc4IGxlZ2FjeS10cnVuaworMTQ0MjcgYzIyODZhMWMyZjI5NTg1YjRhNjJmNTViNzk0YmFjYWYzY2VlMmEyMiBsZWdhY3ktdHJ1bmsKKzE0NDI4IDU3Nzg4ZGExNjQ4ODk2OTRmMjdjOTQ2N2ZjMjQwYTNiMzYyNzc4MjYgbGVnYWN5LXRydW5rCisxNDQyOSBmZmJlMGEyM2EwZjE3NThmZjkzMDY1NjBjNTQyNGVhZGRmOTY5NzRhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQzMCBiZDE2MWE5MDhiM2JkYTVhMGM0M2FiMGVjNDMyYzY5YmFmZTA4ZTE3IGxlZ2FjeS10cnVuaworMTQ0MzEgNTcxNjc3MzFkMTI0MmUzODcyNDI4NzcxMmFiMGJiZGUwYWY1MDM4MSBsZWdhY3ktdHJ1bmsKKzE0NDMyIDMwMjI4NmIxNjBhN2EyNjhlMmZjYzU4Nzc0ZjcyMzRhOTJmY2Q2ZTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDMzIDhkMGIyZmVkN2Q1NTk4MWMyZDBkNTllMGY1NTM1YzAzZjIxYzg1MjggbGVnYWN5LXRydW5rCisxNDQzNCBjZjhmYTkyZWJmM2Q5NGU0ZGExMGQ3NzQ5YWRhZjVkYzk0YWVjZmViIGxlZ2FjeS10cnVuaworMTQ0MzUgZTJiNjMzOTkxZTAxMzU0Njc5NmU2NDMyZmMxOTk1ZTZiMjQyMzBlMyBsZWdhY3ktdHJ1bmsKKzE0NDM2IGZiYzEzZmI4MDM4Y2E1OTVmNGQ1Y2M3Mjg1ZGZjZTg2NDM5OTU5YjIgbGVnYWN5LXRydW5rCisxNDQzNyAyMGNhNzIzMGFlM2Y4YTk1NWY4ZjkzN2Y1NzA4ZjYwNWU5ZmQwNzQ4IGxlZ2FjeS10cnVuaworMTQ0MzggNmU1ZWE3ZGNmMWY1NWI2MzdkMzJlMGUzM2ZmNzM0NmEzNjM4ZDE3ZCBsZWdhY3ktdHJ1bmsKKzE0NDM5IGVhZWRhNDYyMWY3ZGNkNTU0ZTZjOTlkNWIzNGUwZWQ2ZTVhNDUzYzQgbGVnYWN5LXRydW5rCisxNDQ0MCA4NGY3N2MxOWQxNDNiNGIxNDJkNWUyMjNlNGYwOTg2MWY1MjRhYjViIGxlZ2FjeS10cnVuaworMTQ0NDEgMDM5MDJiYzAyMTRhMTUxZDU4YzQ4ZmM2YjYyMWI1MjQ1MjY2NGI2YyBsZWdhY3ktdHJ1bmsKKzE0NDQyIDUwZjEyODgzY2RkNzljYmY0Mzc1ZjM5ZTc3MDdjZDIxZWQ5Njk0Y2EgbGVnYWN5LXRydW5rCisxNDQ0MyA0NzZlYWEzOGUyZDZhYTc3ZThmNTI5N2I1MmE2NzY4NzBiNGM5Mjk3IGxlZ2FjeS10cnVuaworMTQ0NDQgYjdiY2EwNTBkN2RlYmNmZTYwZDNhYTAwNDg3MWQ2OTYxZDk3ZGI5NiBsZWdhY3ktdHJ1bmsKKzE0NDQ1IGJmMTUwMWNmNWYwODJkOWI1YmRjNWI2ZTVjNzM1MDJmMDhiMjgzODAgbGVnYWN5LXRydW5rCisxNDQ0NiBiZTk1MDBlNjQ3N2ZkMzE2MDg2NTViNzlmYjU4NGE3MjlhMTFlOGY2IGxlZ2FjeS10cnVuaworMTQ0NDcgMTlkZTZkMTk0YWNlOTgzN2NjNmE1NTM5YjIyNGE0NWJlZTJiMjU4OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NDggYWEwN2M0N2Y2ZWU4ODI4MTA0MzczY2JlYjU2NTNiYzY4YTFmMWNjNyBsZWdhY3ktdHJ1bmsKKzE0NDQ5IGM1ZmI2NTA2ZWVjNDBlMjhhMzRlYzZmZTYzNmFjMWRlZjA3MDRlODAgbGVnYWN5LXRydW5rCisxNDQ1MCBmYzBmY2VhMTRiYTA3MjNlNmRmMjJiYjYzMzY5NDkyNDMyNWM1ZWE5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1MSA4ODc4YzA5NmZhMTllNzM5YWY2MDVhZTc1ZTY2YTAwMGE5ZDZkYzQ1IGxlZ2FjeS10cnVuaworMTQ0NTIgN2MyNTVlN2EyMWMyYzU3NDg5MTNhZDhmY2U1MWJiNjcwYTk4MjU1MyBsZWdhY3ktdHJ1bmsKKzE0NDUzIDM2ODRkNWM3OTAzYzNlZGRlNzU4NTRlYjJmZGUyYzg3NGU1NmY5MTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU0IDdiZWQxZjBlYzYxYWM1NjhhMWZiOGEwYTIyYjFiZTkxMjFiNDdhODIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU1IGM2Zjg0Y2QxZmY3MDVhMGU1NDI1OGJkM2IzODhhZGYyZjAyNDZkMDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU2IDNiNmQ4YWQyNDY4ZTM1YTI3Y2MwYjdkMTEzZDljZWRmM2VlMzRjMWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU3IDRkNWQ1Y2ZhOGE1MzkzMWIxM2EwZTNiMmY4N2QzNjBmZjdjNDgxOTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU4IGViNDgzZDlhMGY2MmNmMDI4OTVkOTQzM2YwMzg2NTQzZmQzYmI0YzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU5IDQwODBjN2EwZjFlZDZjOWY5ZDE3MTFhZmM2NTFhZDYzYmQ0ZDFjYTggbGVnYWN5LXRydW5rCisxNDQ2MCAwYzBiZmFkZmY3N2FjYTM0NTFhZGQ0MmRjYmU5NDI2NzcyMGNjMThjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2MSBiMmQ0YjJlMDNjOTk1M2ZiNzA4YTEwZjA5Nzk1N2E3Y2ZkMWExNWUzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2MiA5NGI2NDIwNzkzOThjYTY3NjU2ODRjZDVjYzdmZGE4YjE1NDM4ZDk4IGxlZ2FjeS10cnVuaworMTQ0NjMgNzE4ZDIyZGEwMDE3ZjVlMjZkODVlODY2NmQ4NWFlY2I3NWQ4Mjg5YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjQgZTI1MTJkNGZkNDcwODMxZmU3NDM1Njc0MTcxNmUzNmEzM2E4MjhhNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjUgNjgzNDQzZDhkYTNiOWQ0MzllNTRkOWFjNDcxMmQ0ZmY4YTQzYzQ5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjYgZmU3NjMyZmJkNGY1MzY5YjdjOGE0YjdkMjJkNDUxNjNlN2U1YmI4YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjcgNTk0YTc2YmI5ZmYwMzE1NzlmODU2YzE2N2ZiNzBjNmMwMTA5MmMzMyBsZWdhY3ktdHJ1bmsKKzE0NDY4IGEwMzEzMDAzY2IyZDUyMDY3ZDBjNjBkYzBmY2FmMmZiYTAxZjg1YTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY5IGRkMGFlMTBiNzIwNjBmNTc0ODI5ODM3ZjJiZWQzYTQxODkzZjk3NTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDcwIDljNTljYmEwNGQ4NThhYTZhNjdlODY5ZmQxMmY4NzAwZTBhNGEzZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDcxIDUxYzIxNzQ1NDk1M2Y4MjM0YWM1ZjMzZjVjYWUxOTU0MTM4MzI3MWMgbGVnYWN5LXRydW5rCisxNDQ3MiAzZTUyZjNkYmUzZGNkOWYzNmY4NzhiODU1NDYzOWI1OTA5ZTM2MzQ0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3MyBlY2RjNzgxNDg4MTE4OTczMzJjMWFlMGZkYjI4NDZiY2VlMzQyYWNjIGxlZ2FjeS10cnVuaworMTQ0NzQgMTg5ZGVlNzBkMzJhMGNiMDdkNThkYmIxMTFkMDE1Y2MxYTE0MjQ3MSBsZWdhY3ktdHJ1bmsKKzE0NDc1IGEwNDY5ODNjYjU3NjEyZDkzOGE3MGU5NGFiMTk4OWYyMGRhZjgwNWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDc2IGJhMjExMTc0ODAzOGUwMjg1ZmI5NmM1ZGYwMWZlYzQxMDhjZTQwYWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDc3IDMyODdjY2QwZGQwMTMzZWU3NGVkM2E5MzEyZDA5NTkyNzE2ODE1NWYgbGVnYWN5LXRydW5rCisxNDQ3OCBkMjI5YmI3OTI2NTkwMDEwM2E5YTJlOGZjZDA4MzQxYzI5YjUyOTE1IGxlZ2FjeS10cnVuaworMTQ0NzkgMWI3MzFlY2Q5ZWQzMmJkYzI1OGU1N2VkY2IwYTNlYWFjZDcxYzkwOSBsZWdhY3ktdHJ1bmsKKzE0NDgwIDJjNzI1NmUzOTg5Y2Y5YjA2ZjI4NzI5MTBjZjkxNjRkNTRlNTQ3MjcgbGVnYWN5LXRydW5rCisxNDQ4MSA3OTdkOTk2ZjdjNmRhMDA5NGJmN2Q0YjkxYjIxMzM3ZWVmMzk1NTAxIGxlZ2FjeS10cnVuaworMTQ0ODIgYjBjNGYyNjFlNDcwMzI2Mzc1NzNjMmFjYjk1YWQ2YzMwZTE1MWJhNiBsZWdhY3ktdHJ1bmsKKzE0NDgzIGNhNTM1Mzg2N2JlMjMzMjIwY2IwZWM3ZDQzMGQzNzM3NTkwMTJkNjIgbGVnYWN5LXRydW5rCisxNDQ4NCA3MjY5MjE2NzQ2ZDAyZmFkZDk2MzA5NjRlMDY0YTM4NDY4ZTdjM2EzIGxlZ2FjeS10cnVuaworMTQ0ODUgOTFjZmI2ZTY4Y2E0NzE5ZWEzZDA5YjNmNTg0YzU4NDZmMWZjYzUwMyBsZWdhY3ktdHJ1bmsKKzE0NDg2IDMyZjk3NWNiOWY1ZmYyMjA2NTZhNDIxNjMwZGJkNzY0OGRiNzVjMWIgbGVnYWN5LXRydW5rCisxNDQ4NyBiZjZmMTc0NmIxMGJhMGZmYTFhOWEwYzdlNGMyNzY3NmQwOThiNGZiIGxlZ2FjeS10cnVuaworMTQ0ODggZTExOWMwMjUwYjIwOTE1ZDMyNjM1ZTU4NTRhZjA2MzEyOTIzZGQ0NiBsZWdhY3ktdHJ1bmsKKzE0NDg5IGMwNGUxYzcwZjBmMTI2YTEyZTVhMWFkY2I0MjZiZWUwOWQ4YTgyZWIgbGVnYWN5LXRydW5rCisxNDQ5MCBlMTIzZTY1ZWYyNTViODQ2OWIyYjI4YzBmNTAxYTdjNWUwMGJjM2VlIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NDkxIDI1MTc1NjlhYTFkZDQxYjhlYTJlMjNhZjgyNWIzMTA3ZjRjYzAyMjQgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ0OTIgMTA0NzMxM2NlYjViYzk4MzM0OTlhZTQxODAxYzJiMzhiMmY5MDI3NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDQ5MyAyNTNlYzk1ZjM5MWUxYzVhOTlmMjYzNGUyODcxNDE5MWE4ZDIyM2JmIGxlZ2FjeS10cnVuaworMTQ0OTQgZTU2NzgwYjc0MzZhNmE1NzQyNTk2MGRlYTliZDAwYzdhM2M0YWM1MCBsZWdhY3ktdHJ1bmsKKzE0NDk1IDhiNzBlYWFhZGY0YjQwZDg2MzQ3MGMzMTE4MTNiNDA5YzQwMzE4ZDEgbGVnYWN5LXRydW5rCisxNDQ5NiBkMTVkOGY1MTQxYTg4OGZiMTY0YTRkMzM2MGI1MDhhMzAwNDJhNTkwIGxlZ2FjeS10cnVuaworMTQ0OTcgNmY5Nzk5YTE0NWU1ODJlNDY1ZTg4Nzk0NTY5ZjdlZTE5YjE0NjJkNCBsZWdhY3ktdHJ1bmsKKzE0NDk4IGVjMDYyYzdjMzhhNTk4MzY3MTNhMzRjZjEwYWM5YjQyOTljMTQwYTUgbGVnYWN5LXRydW5rCisxNDQ5OSBiNzBkZWU3MTUzNGE2Y2E4MjFiN2FiYmJmNTEwOWI3MTc1ZmMzNTM1IGxlZ2FjeS10cnVuaworMTQ1MDAgMGNkZTcyZjZlYWNlYjBiZDY5MGI1Nzk0ZTM2ZmFkMjUxZWUxODQzMCBsZWdhY3ktdHJ1bmsKKzE0NTAxIDg5YjUyODk1MzEwYzdlMjQ3YjdjNTMwYmJjNjJjMTk0ODhhNmVlNzIgbGVnYWN5LXRydW5rCisxNDUwMiA5MTk3MWViMjE1MjdmYTk0MWUwODk4Yjk4OGNkZjAwYmRlYTFlOGIwIGxlZ2FjeS10cnVuaworMTQ1MDMgZTY5NWI1MjI5NWE4NmE4MWIwZDJjNjc5OGViMmY2MTU2ZDI0ZmNlNCBsZWdhY3ktdHJ1bmsKKzE0NTA0IDc5ZWExOTA4NWZiNmFiOGM4M2I3OWVmNmNmMGRmZWY3OGQyZGRiN2IgbGVnYWN5LXRydW5rCisxNDUwNSAxNDUxNTM5YTI3ZWNmNGFkZWU0NWQ4NzJiMzJkZWE2ZWNiZDQ1NzViIGxlZ2FjeS10cnVuaworMTQ1MDYgNzgxZjQ4MjkxYTI5NjkzZmU1MDNmYzQyYmEzMmI4MmEyY2M5MzM5ZCBsZWdhY3ktdHJ1bmsKKzE0NTA3IGJiYjc1MWY1NWQwNDhlYjAwZmE4NDM4M2U5NjU0MTExMWQwYjRjMjMgbGVnYWN5LXRydW5rCisxNDUwOCAyZDg3NDA2NDdlOTk4YzNlMDNmYmFhYjkzMGU0YWM1MmIwOTc2NjA3IGxlZ2FjeS10cnVuaworMTQ1MDkgOTg2YTg3MzYzYTY2OTEyYTNmZjgzMjQ0MzdhMjI1YzcwYTc0Y2JiNyBsZWdhY3ktdHJ1bmsKKzE0NTEwIGUwMDU5NDM2NmVjNGY3NDQ2M2U4NzE4ZjkzMjNjMDJjOWVjMWFiM2QgbGVnYWN5LXRydW5rCisxNDUxMSA1ZTFmNGY3ZDc5YTc1NDAwMWEzNDk0ZWU2M2RkYWE5OWZkMTliYjdmIGxlZ2FjeS10cnVuaworMTQ1MTIgNDFiODVhMjZjZWVkYWE0ZWZjN2VmMmQ1ZTFlOWQ1YTEwM2Y3ZDkxNCBsZWdhY3ktdHJ1bmsKKzE0NTEzIGNhMzUwYTcxOTg4NzMzZWQ3NTdlYWYxNzhkN2RlOTQ4NTE2NDFkZWQgbGVnYWN5LXRydW5rCisxNDUxNCAyZmE4OWU2NTdhNGVkZGVmMzEwNzk0NTc2NDEyZDNmMGMzNTkzMmQwIGxlZ2FjeS10cnVuaworMTQ1MTUgMDY5ZWE1NzM2ZmY2MDdhODFmMzgyMzRiOTZjYjUwOWUzYjJkZDQyNCBsZWdhY3ktdHJ1bmsKKzE0NTE2IDA2MTA0YmNmMDZhNjRmYjA4MTkwNjYyZDc3MDY5YjQ1YmQ2OGEyMDcgbGVnYWN5LXRydW5rCisxNDUxNyBkN2U2NmVmMzQ1ZDA3YjljY2JhOWNjNDM0ZDU2NzRjZDdmYWQwY2I4IGxlZ2FjeS10cnVuaworMTQ1MTggMzJjNTllMjg4OWM0Y2M0YWEwMTg2YzAyNmMzNjY3MTUwYWRiZGExMSBsZWdhY3ktdHJ1bmsKKzE0NTE5IGQ3ZWNhNWIwOTYwYWJiMDIxYjQ4MWVlMTJhNWNhMzk4Nzk4ZTc3MDIgbGVnYWN5LXRydW5rCisxNDUyMCAyZmU5NTY4YmRlZjJiOTFiMWI2MDc4MTZjOTkxMmQyZjcyMTkwOTQ3IGxlZ2FjeS10cnVuaworMTQ1MjEgYzkwYWM2OTgyMTRkYjczMGI1NDdjNWZkYmU1NWI1YjE1YTg1ODBkMyBsZWdhY3ktdHJ1bmsKKzE0NTIyIDQ0NGI3N2NlZWJlNjkzMTBlMmNlN2MyNmVkYWMyM2I5OWQ2YWM5YjggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTIzIGI5MWQ4NDhjOWExYWQ0ZWI0M2RhNmU1ZGNlNjdkODIyZjRiZmM0Y2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI0IDcxNDIzMjA5ZDdmYzJjNTFmN2U4MTBhZjNmM2EwNzc1NzQ1MGFiZmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI1IDdlZDEwNGM0MGRiMzM2NTk5ZTI1ZjA1ODYxZGQ1NDg4M2EzYzM1YTUgbGVnYWN5LXRydW5rCisxNDUyNiBjYWIwNzFlOTJmMzIxZjUyYWM2YjMyYzk5NzE2NzliY2M0YTdhNWJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDUyNyA1MmEzYjQ2NDU3OGYyZTg3MjM0ZjA3ZGQ0YTQ2NjE3OGU2Y2UwYWI4IGxlZ2FjeS10cnVuaworMTQ1MjggMjg2MzAzZjAwNTQ2YmNlZjUwNzc2N2I5OTZkYWI4NDRjMGJlMWNmZCBsZWdhY3ktdHJ1bmsKKzE0NTI5IGMyN2QzZThjNDVjNDY2NjdjY2FkOThkNTJiY2QxMzVjYTg4YzNjY2EgbGVnYWN5LXRydW5rCisxNDUzMCA1ZDA4NzllMWZmMzdjNTdlYTAyMmMzZmVhYzRkM2U1MzhiNzNmODU2IGxlZ2FjeS10cnVuaworMTQ1MzEgM2Q3M2ZmYzEwNWQwYTQ4Yzk4ZGNkYmE5ZmU1MGZhMmM0ZWQzZWNjNyBsZWdhY3ktdHJ1bmsKKzE0NTMyIGE3ZDYwOWVhOTBjYzY4MjY2NDBlYmM1NzE0ZmYyY2VjNTNmZGZjNDUgbGVnYWN5LXRydW5rCisxNDUzMyBkMjc2ODRhYjIxNWE2YTVhY2I0MDc0NzQ5OWVhNDlkMmQwZjI4MDFiIGxlZ2FjeS10cnVuaworMTQ1MzQgZWZkNjMxNWFlNjc4ZDYyZTU1OTc0NTNhZjJiZWFmYjI3NTEyZGIxYSBsZWdhY3ktdHJ1bmsKKzE0NTM1IGRjNjVjNWY2YWQ3YzE0Y2E0NDY5ZjZlZDI4ZmYxMzRjYjA5ZWMwODcgbGVnYWN5LXRydW5rCisxNDUzNiBkMjRhZDU1MDM4MzFhN2Q5ODE5NTA3OWEwMjY2NTQwZGU2Yjg4Yzk1IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NTM3IDliZWQzMzU5OWMzMzljMTVhMjZmMTBiMzllMDM4M2Y5MmMyMmNjNTYgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ1MzggOWM5M2YxMGRjZDY5NjhjZDkwNGNjNjRkZGI5YzM1OWJjOWJmOTk5OSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDUzOSA4ZWU3NTlkNzk5NjQ2ZWQxMTQyMmZlZTFmZDIwNzM3YjJlZWYzNjVmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MCAwYzQ3MjllMzhjM2RiOGY0OGQwZGRlODI1MmQ1YzliMjlmMmY5YTAwIGxlZ2FjeS10cnVuaworMTQ1NDEgNTRjZjNiYjNiOGI3Y2Y0YzcxMDFjMTcyMzY5MTRlOTg0NGNmZGRmOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDIgMTBmYmZkMDdmMzg5NDFiM2RiM2MwNmU1ZDMyZWRjMDgzNTI1NmFlNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDMgYTM4ZmJjYjdkMzM1NjgwZjZhNTkxYWFkMTRlYjEzMjljNWJlZTkwZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDQgZTM5OWFiY2M1ZGU2MzBlYTg1NWNkYjYzMDc4NTMxMWFhMGI2YzM3OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDUgNzU4YTg3ZjRjYjJjOWU4ZDhiNjc5NDgzZTgzODliYTQ2NTdkYWJlYiBsZWdhY3ktdHJ1bmsKKzE0NTQ2IDM5YmIwMTc1NTA3OTA5NzIzYzI0MzA4YWI2N2QzNmYxOWJiNzExMDcgbGVnYWN5LXRydW5rCisxNDU0NyAyNzBhMTE0ODhjNmM1YzNkMmVjOThlNTE1NWU2MWMzNDNjZGRkNmViIGxlZ2FjeS10cnVuaworMTQ1NDggODFmMTA2OWUxNTU4Njk5MzljNzNkMTIzOTZjMzVjMTFhZDNkYmYwMCBsZWdhY3ktdHJ1bmsKKzE0NTQ5IGE0NTcwZjQwOTg3MTBmNGZkN2VjMzExYmRjZWE4OGVjNDBmMDk5NTUgbGVnYWN5LXRydW5rCisxNDU1MCAxYTQ5YjYxNDRmMGRlMzI1YjU5NzhkMTJjNjQ4M2UyZTAzY2QwMGM2IGxlZ2FjeS10cnVuaworMTQ1NTEgOTQzMmQ4YjE1Yzk3MTRmZDI3ODRjNzBjNzFjYTg2YjI0ZjkzOTZkMSBsZWdhY3ktdHJ1bmsKKzE0NTUyIGU4MmE5NjMzMDc4YmM5MjU1ZjhjM2Q1NTI1NGVmYTQ3NmQyOTVmMjggbGVnYWN5LXRydW5rCisxNDU1MyAwMDE2NjMzZmJkMzIwYTFjNTg2N2QzNTkyYWQ2NDZhYTE1NDUwMGUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1NCAyMzEwOGNjZTE2OWI0NWRmYmIzZWRhYzkyNjVjN2JlMDI2OThkM2I0IGxlZ2FjeS10cnVuaworMTQ1NTUgZWY4YjA2MmI1Nzk4MDQ0ZmYzMzM0ZmFkZDEwYTc1NTA4ODNjZDVlYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTYgNjEwZDdkNjQyOTE3ZTVmY2JkMTNiNjQ2NzljZTAyNDdjNzc1NTFiMiBsZWdhY3ktdHJ1bmsKKzE0NTU3IDc4NDJlY2Y1YjQyNDg5ZjJiMjMzOGUyZmYzODZiOWUxYzc1MDAwYzggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU4IGNmY2ZhYTM5NTBkNjQyYzlhMjBiMzI4YTQzZDYzZjY4MzgwNmEzZTIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU5IDU4ZDFlNzc5MTk4MDViODdlN2UwMWE2NDBmYjA2M2Q4YmQyMTZkYzYgbGVnYWN5LXRydW5rCisxNDU2MCBjZDU3Zjc3NmMxZGY4NTE1Zjc3OGEwMTUxN2JiNzRiOTkzYzMwZGE5IGxlZ2FjeS10cnVuaworMTQ1NjEgMjgwMmZiNTJlOTliYzc5YTY1YmQwMzRmMWU2NzMxMDhiYTlhMGY5NiBsZWdhY3ktdHJ1bmsKKzE0NTYyIDAxN2U1OTJjMGZkMmMzZTg1M2M3NDM5MDgxN2UzMTY3NjM1OTY1YmQgbGVnYWN5LXRydW5rCisxNDU2MyA0Njc5YmNlZjdhNGY2NDVhYjM5ZWY4YjViMTgyMTNhZGUxNTBlMDcwIGxlZ2FjeS10cnVuaworMTQ1NjQgNzIzZWZjZGNjZTFiZGE1ZDA2YjJiYWZjOTIzYjk1YTA1NjkzNDNiNyBsZWdhY3ktdHJ1bmsKKzE0NTY1IDYyZWJlOGM3MTU2NTliMWZkMjU5OWE5ZDZjMmQzMDdkYzcyN2JmY2YgbGVnYWN5LXRydW5rCisxNDU2NiAwMWQ1YjdkMTFmYzEyOGUyY2UxNWIwMjM1ODIxYjQzMWVjODdhOGY5IGxlZ2FjeS10cnVuaworMTQ1NjcgNjkzMmUxOGFmZjk4YWQ3ZjE2ZjA5ZDkzZGI0NzBjZmZhYWJjODk1MyBsZWdhY3ktdHJ1bmsKKzE0NTY4IGY4NTE4ZjA2MGJlZGY4ZjhmNWNmZWVlYmZjNmE4YzA5NmRhZTAzNWQgbGVnYWN5LXRydW5rCisxNDU2OSBhNDBjMmZlY2Q1MjY5ZjNhZTgyNjEzODgzZWRhYjYyOGFhYjMwODQyIGxlZ2FjeS10cnVuaworMTQ1NzAgMGE0YmFjY2JlOWZlOTM0ZDAxYWEzYmUwODViNDQzNzFhNGM3ZGJjMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzEgNDliMTA5YjQ1MGRhN2Q3NmE5MTMyMDExYjIwMDcxY2Q1NTQ5OGM5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzIgYWIxZWYxYWE0MDJlYTUyMzZiZTI1YWY0MDViNzkxMTY0YWJjN2M1MCBsZWdhY3ktdHJ1bmsKKzE0NTczIGIzY2EzY2FhMzc0YzUxOGJiNThkYzViODhkYzRlNmE4NzExZWRkZTUgbGVnYWN5LXRydW5rCisxNDU3NCAxMWFlMWVmZWM4NzFhMzdhMGNmN2U1OWM1NjkzZGUwNzBiMzYyOGQzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NSBkNzRlMTJkNDY1ODBkMzdiMTc1NTkyNWU1Y2Y0MmY1OTQ2MGM2NGRhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NiAwMGE5ZWY3NDQ3YmFhNTM5MzI1OWY4ZjczZDdhNzUyMzIzYWJiN2QyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NyA4NTVjNzhmNWI1ZGRkNGZjNTNhZjZiMjhhODViNWNhY2U5ZTdmYWUzIGxlZ2FjeS10cnVuaworMTQ1NzggOTk0OGZkNTMyZDNiNGNiMmE4NDJkZmE3NmViOWVmOWRmODdmOTY4MCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzkgYjk3NWEwNTZkZWI2NjY1YzdkOWI4MzE1YzRmYmU2NzIxNDhlYjVhZCBsZWdhY3ktdHJ1bmsKKzE0NTgwIDBlY2E1NjdlNTMyYzI4NGI2ZjVkM2FmY2UxMTFjZGU2OTY5MDUxMjAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTgxIGZlNDg1YTVkMDQzZmM3YmI3ZjViNTQ3OTE0N2IxZDRiYjgxNTQ0ZjIgbGVnYWN5LXRydW5rCisxNDU4MiBjMGYxOGUxMWY0ZWYzMjkyMGQ4NWJkYWVlNzhhZjczNzA2NjhlYjI0IGxlZ2FjeS10cnVuaworMTQ1ODMgYzE2NzExZmRkOTcyNDQzM2M3Yzk5MDEzYmY0ZTMyMjQwYWMzZGQyMCBsZWdhY3ktdHJ1bmsKKzE0NTg0IDFjOGE5ZmFhMzUwMWVjNDcyOTFmZmI1ZmM4ZTI2NjUzMWM5MTJiNGIgbGVnYWN5LXRydW5rCisxNDU4NSBjOWQ4N2E3YTcwYjBhMjkzMjQ5MzM0NWJiM2EzM2E1YWIxMDExMzcwIGxlZ2FjeS10cnVuaworMTQ1ODYgYTZlNWYwMjc0ZTUxNzJjNWQwOGUzMmEyMzJlNjVlZTdhYzg1YTFkMCBsZWdhY3ktdHJ1bmsKKzE0NTg3IDc5MjJkMDg0MjZjYWFlN2EzYjdkMTg1NWMwMTM1NTcwZTk2NzMzZGYgbGVnYWN5LXRydW5rCisxNDU4OCBkMTM1OTgzMWU1ZjI2NGM5YWIzODg4OWEzMjU2YmZiM2RkMjY4OTllIGxlZ2FjeS10cnVuaworMTQ1ODkgNWIwM2M1Mjc4MzE3ZDY0OWE0MGI0YWQ0OTgwZDdmZGZkNjUyYzkwZSBsZWdhY3ktdHJ1bmsKKzE0NTkwIDE1Y2JiNTdjYTc0NzI1N2RlMGZiNWMwNGQwNjk5MWE0OWQwNTE4ZDAgbGVnYWN5LXRydW5rCisxNDU5MSBhODUxZWYzMjZkOTMyZjcxNDc4ZDhkYTZjMmQyY2RjZDEyYjY0ZDkyIGxlZ2FjeS10cnVuaworMTQ1OTIgN2NiNDkxZTM5OWU2MTlmNGU3ZjU1OTVhYzQwZGYzNzdhNzc3NmZhYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTMgMjljNWM1NDE1ZGE3MWRlY2JlYmNkODI1YjMwOGEzYTkzMDZkYzUzNCBsZWdhY3ktdHJ1bmsKKzE0NTk0IGY4MmI5MjNhN2E5NmMyYWY1ZDQwZGYzOWJhZDRiMTA1MDVlOGQ1ZGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk1IGNlMjY5OGQ4ZGZlYmY2ZDg4NTJhNDYwZDUyYjVhNDYzNDU0Zjk2MmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk2IDA2ZmIyZGQzOGQ3ZDI5OTkwYWNiNzJjZjI2NzgzYTNjZjE4YjRlMGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk3IGNmZWMxMWI0YThhNzJjYmU4YTcyZjcwN2EzMDBmZDgzMGE2ZjkxOTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk4IGFhMGQwYjFmMWJlM2UxMWI2MmExOTAyZGNkNzQxY2I1YjJjYTMwNTcgbGVnYWN5LXRydW5rCisxNDU5OSA4Y2M0NDI4YzdiYWQ5MWU2NGZkOWEyNGU4ZDUwMmZhYmJlNTUxZjNiIGxlZ2FjeS10cnVuaworMTQ2MDAgZDA5N2JjNWFhN2YzNDQ0NGU1ZjRlNDk5NmUyZGJiOWEyMDIwNjhiYyBsZWdhY3ktdHJ1bmsKKzE0NjAxIDRiOGJjOWFiODE3NTU1NmY5ZTg3OTM4ZThjZGJiNzljNmVlMzdjNDIgbGVnYWN5LXRydW5rCisxNDYwMiAyYTYyODA2Nzk2OWI5M2NhNTYwNGEzYjdmZjJmNDI5MzJhZjlkZmNmIGxlZ2FjeS10cnVuaworMTQ2MDMgYTQ2OWFhOGIzMzJhNTg0NjM1NTc3MWVkMWU4ODlhOTlhMDYxNmJmYyBsZWdhY3ktdHJ1bmsKKzE0NjA0IDc5YjZhNmE4ODJkOWU4ZDU3MTM3MDkxZGFhYWQ3MDZmZmFhM2VhNzggbGVnYWN5LXRydW5rCisxNDYwNSBiZGI1ZjZhNTI0YjVlM2Y2NDE3OTE5Nzk4ODNjMjVkYmU5MDE3NTQ4IGxlZ2FjeS10cnVuaworMTQ2MDYgOWQ4ZjQ3Zjg0NDdmOTc2MjAxMzhkMTRmYWNmNmRhMmQ0N2RiZTAzMSBsZWdhY3ktdHJ1bmsKKzE0NjA3IDFiNTRiMjEzNDZkMjRmYTI0NjkwYTc2MmNlZjFiN2NiYTI4ZGIzMGYgbGVnYWN5LXRydW5rCisxNDYwOCBhZWY1YTdjNjIyOTFlYjY5ZWU0MzhlODdjMWJhYTMyYzI0YmRmMjU3IGxlZ2FjeS10cnVuaworMTQ2MDkgMjVhZGM1YzhkZDY4MDA0ZTNmZjE3ODBkNjAwM2MwYTFhOTE5MjFjZSBsZWdhY3ktdHJ1bmsKKzE0NjEwIDY4ZTBlZjA1MjgxNTA1OGYwMjI1NDc4YjQ5MzlkMmU5NjllZDI4MDkgbGVnYWN5LXRydW5rCisxNDYxMSA3YmQ5N2MzZGQ0MzJmZDk0NTk4ZDhjY2RjNWRkMzI0ZjYxNjBmOWE4IGxlZ2FjeS10cnVuaworMTQ2MTIgYzk0NTcyYTUwOTk1MjMxOGVhMTM4ODMxNDA2YThkNThkYzRiZmRiNCBsZWdhY3ktdHJ1bmsKKzE0NjEzIGMwZDM2ZjkxNmFmZDhjYTcwMWRkNTY1ODhkNjQxZjkyY2FjZGFlNDEgbGVnYWN5LXRydW5rCisxNDYxNCBlZjk4ZWU2YWViNDJhZTAxZTRjYzBmNjhmOTY1M2JlMTFhYTM3MmYwIGxlZ2FjeS10cnVuaworMTQ2MTUgMDQ1NmE4YzJlYmY3YzJhOTcwZjE2NzM2MTYyYmIzMTRiZDE5MDIwYSBsZWdhY3ktdHJ1bmsKKzE0NjE2IDczZGZiZWUxNTAyNzFmM2E3YTBiZGY4MTkyM2Y3NjljYmE2MDg1MTcgbGVnYWN5LXRydW5rCisxNDYxNyBkZTg0MDQ1NzNmZTUxMmM3Y2RhNjljYzYwNGNjOGM5M2MxNTExMTI0IGxlZ2FjeS10cnVuaworMTQ2MTggZjZkMWQwZmRjMWM3YzcyMDFiNDkwYWM3NTk2MDc4NDA3NzM3YWM2NyBsZWdhY3ktdHJ1bmsKKzE0NjE5IDQyMWIxNjIwZjU4MmY5YTdiODNmYzNiOTBjYWE4ZWY5NDlmYjMyNTQgbGVnYWN5LXRydW5rCisxNDYyMCA4MDIzNzBhNjBlZjdlM2Q3MWY0YWE3ZGJiY2I0ZmU2Yjk2NzU4YTRmIGxlZ2FjeS10cnVuaworMTQ2MjEgNzM0ZjNjMDdhNmJiOWYzZDVjYzI3OTIyZWQwNzJjNjkyMGU2OTAxYiBsZWdhY3ktdHJ1bmsKKzE0NjIyIDFhNThlNmZjM2E5NTRkZjc5Zjg1ZjM4ZDEzMDMzODAxMjQ4NTU5NTUgbGVnYWN5LXRydW5rCisxNDYyMyA4MjY2OTBiYTFhZTY5YjhiNTg0ZTRmNjk0N2Q2ZmVkYzU1ZTMzZTIyIGxlZ2FjeS10cnVuaworMTQ2MjQgMmE0MGU5Y2FlODU5ZGNhMDQ4OGZkY2RlODE2OGM4ZjUwOTg1YzIyZCBsZWdhY3ktdHJ1bmsKKzE0NjI1IGQwNDA0NzgwZjAzYmY0ZTJmMmEzMjA4Y2VlYTZhYWFkYjM0ZDYyYjIgbGVnYWN5LXRydW5rCisxNDYyNiA1ZTQ4ZDgzYzBmY2UxNzIwNDE5YmFlZTYzN2EzZDA0NzczMzU5MGQ2IGxlZ2FjeS10cnVuaworMTQ2MjcgYTM5OTJhNzg5ZTJlN2JiMTU3ZTdiMjk4YTU3ZTg3OGE3MWVjNDU3OSBsZWdhY3ktdHJ1bmsKKzE0NjI4IDViMzNmY2EwMmI3ODViYjZkYjcwMTVjMTE1OTE3MDJkNThkNjA1NGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjI5IGFkZGVhMTE1N2FhN2Y5MDcyOThiYWI5ZTk5NzA1MjI0YjI2NWRjZTEgbGVnYWN5LXRydW5rCisxNDYzMCBlMTA1MTVlN2QzNTZjY2JhN2Q0NzQxNjRjMTdhNGY1Mzg1MTg2MzQzIGxlZ2FjeS10cnVuaworMTQ2MzEgZjlkYjM2NTRhMWZkMDg3NjZhMDU2ZTM2MDM3MGVhNWY5YzdlMDBhZCBsZWdhY3ktdHJ1bmsKKzE0NjMyIDM5OGE0NTk5ZWVlMzNjZTliNzM0YzNjZTlhODQ5MzQxZmM2M2JjZGIgbGVnYWN5LXRydW5rCisxNDYzNCA2ZTNjODFiZDgyOTFlZGVhN2Y3ZjRkNzYwNDU0ZWRlNTI2NTQyZWJjIGxlZ2FjeS10cnVuaworMTQ2MzUgMjNmZDdkMTAwNjRlYjE2MjFmY2VjYmZhMDJmMmIwMTVkYTljNzZkZSBsZWdhY3ktdHJ1bmsKKzE0NjM2IGQ0NjYyZDM4MTc0OGFjNmNhNmI1NTBhZTMxMjY5ZjUxZGQ3MzVjYTMgbGVnYWN5LXRydW5rCisxNDYzNyBmOTE0MWJlYmVkNDhmNGU1OWExMWRiMTJjZTYwY2E1NDViYTBlMjVhIGxlZ2FjeS10cnVuaworMTQ2MzggM2U1ZmJlZjliMWY1MWNhNjE0YWVjNzNlMzM0MmNmZGM3YWI1YWI5OCBsZWdhY3ktdHJ1bmsKKzE0NjM5IDI0YzE4N2I5Mjc3Mzg0ODZhZjBhYjQ0ZTA2ZGQwMjNmZDFjNzk3MTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjQwIDc0MTA2OTA5MjgzMTliZDgxMmQ2YzIwYjI0NmI0NzNiODQ5NThlOTggbGVnYWN5LXRydW5rCisxNDY0MSA5ZDUzZmM4MDQzYmE3OWY1NGEyOTYwMWI0NDJkNmZkMTJlNjUyMDc3IGxlZ2FjeS10cnVuaworMTQ2NDIgYmU5OGUwNTVlMzlkOTkxNDU3ZGQ2N2M4ODhmYmFlYTQ1MTlhNDk2MCBsZWdhY3ktdHJ1bmsKKzE0NjQzIDI0MTk5YzFiOTE4MmEzNmNjNzkzYzI2NDQ1ZWEwYmVlNjNiZTljMDcgbGVnYWN5LXRydW5rCisxNDY0NCA0NDEyYzdhMzI0OTdmOTBjMjk3MWIyZDFkMGExYTBjNzVlZTEwYWFlIGxlZ2FjeS10cnVuaworMTQ2NDUgOWYyNjFlOTRiMmIyNWIwNDFkYmZmYTNlYjJlNTM1MmY3NDQxNTU4MSBsZWdhY3ktdHJ1bmsKKzE0NjQ2IDUzMDVmOWIwMWZjNzU0NTc4MDJiMTcxNjI3ZjRmOThkYmU2ZjkxNzQgbGVnYWN5LXRydW5rCisxNDY0NyA1MDc4MzNiMTgyMTNiNzBiN2MyMjNlYjk2ODYzN2Q1MmFhNTU1OTc1IGxlZ2FjeS10cnVuaworMTQ2NDggMTNiYzY4ZmFlYjY1NWI2NmRiNjUzZDQ2MWRlODBmYzcwYTE3ZjYxMSBsZWdhY3ktdHJ1bmsKKzE0NjQ5IDc0YjcyMTNmYjYwOTIwYTAxZTQyMWM5NDUwY2U2ZTQ2OTZlZjQwZmIgbGVnYWN5LXRydW5rCisxNDY1MCBmNzZiZjYxY2IxOWM0YTc4M2FmYTNmNzg5ODcwYWE1ZTkxNTY3MTU0IGxlZ2FjeS10cnVuaworMTQ2NTEgNTc0MjgzZGIyYjNkZGRlZjM2OWRmZDAzNjljZThhODhlMmIwMmQyNCBsZWdhY3ktdHJ1bmsKKzE0NjUyIGQwZTA2ZWZiMzE2NTFmMGU0Y2RjYjQzZjYwNzg3NzU1ODE5YTBhYTMgbGVnYWN5LXRydW5rCisxNDY1MyA4YmRjMjVkMjI5MjVjMjFhMTM2YzUzMzEwMTc4ZTkxM2RiZTA2Njk0IGxlZ2FjeS10cnVuaworMTQ2NTQgMjgwMDNhZmExYTJmMDkxZjMyZmZmMzNhYmIxNzVhMmYyYjI5MDg1MyBsZWdhY3ktdHJ1bmsKKzE0NjU1IDg3NmYzNTgyOGU4NzBhMmYyYTcyODg2ZjMxMjU5ZjJhOWRkOGQyNGYgbGVnYWN5LXRydW5rCisxNDY1NiA1MTMzNTRkODdhODVlNzdlMzExMzk3ZWU4ZjkwNDZiMzU5OWNmMGZkIGxlZ2FjeS10cnVuaworMTQ2NTcgOGI4OGUxYmMwZTFiNGIwYzgyZWM0MjNhZmFjNGUzMWRjZWVjYjBkNiBsZWdhY3ktdHJ1bmsKKzE0NjU4IDNjNjIwZjY1ZWFhNWI1ZWI2NWI0ZTZmYzYxZTEyOTFmM2Q3ZDZiYzEgbGVnYWN5LXRydW5rCisxNDY1OSAzMGQ5MjQ4ZTExYmJiMjMxZjczODc0M2YzYzJkMWU1NWIyMDQ0OTExIGxlZ2FjeS10cnVuaworMTQ2NjAgYTliNWEzMWZmOGNiMTkxMzcwNzVmOTNhYTdmYTliNTZiZmYyYjVhNSBsZWdhY3ktdHJ1bmsKKzE0NjYxIGQ3YTRhNWFlMmRhZWM0N2Q2NzVmMjY2YzM2NjI2ZGIzODkwMDk0ZjAgbGVnYWN5LXRydW5rCisxNDY2MiBhMTMyOTRhZWYwMmVhNGZlYjM0YjU2ZThmOGY4ODU1ZWUwMTA0NWM3IGxlZ2FjeS10cnVuaworMTQ2NjMgNGM3YmM4ODVmNDIwYWZhNThhNjY2Zjk0MTZiYTI0MDI3MTdiYjU5MSBsZWdhY3ktdHJ1bmsKKzE0NjY0IGVmYjNhNDVjNjZmMzFhYzg5YTg0ZDdiYzQ3OTMzNGFkOGVkYzkyNGYgbGVnYWN5LXRydW5rCisxNDY2NSA4ODIyNWRmMzVlZmJhYzQ2YmI1YmMxNzY1ZmRjMjhmNzQxOTQ3N2NmIGxlZ2FjeS10cnVuaworMTQ2NjYgMzMwM2E1YmFjNmRkZDQyMDEzMzgwMWU2OTVjNGNjYmE4MDFmM2MwMCBsZWdhY3ktdHJ1bmsKKzE0NjY3IDBmZGFjMWY1NGVjODEwMzUxMTVlZjZmZDc3YzAwNGE3YzVkMDZlZmYgbGVnYWN5LXRydW5rCisxNDY2OCA5M2RhYzQwNTMxODljMGY1NTBiZjU2OWE2ZjgyZjk2ZDcyNjE1MDEzIGxlZ2FjeS10cnVuaworMTQ2NjkgZWU2NDkyYTVmZGVlNjZhODM0MjE1YjE2YWJjODg2Mjk1NTE1ZGJkYiBsZWdhY3ktdHJ1bmsKKzE0NjcwIGYxMDQyNTFiNmY4ZjM3ZWY1ZmIwMDExNDhiZWU2MTc3MTNkM2YwOTIgbGVnYWN5LXRydW5rCisxNDY3MSA4MTcwMmE3MzU0ZWNiNTBjZTA0NjMzNGRkMDlkOGJiZTlkZWQ1ZjhjIGxlZ2FjeS10cnVuaworMTQ2NzIgMTc4OWZhZTVmMDc0MWEwM2M5ZDQ1NmI0ZTNjMzZkNDY3M2Y2YzY3NCBsZWdhY3ktdHJ1bmsKKzE0NjczIGI1ZTgxMjcxYzRjOGJiY2M1YWY1NmM1ZjUyOTVmNmU5OTJjMzE4ZWYgbGVnYWN5LXRydW5rCisxNDY3NCA0YjhiMmUyOGJlMzQ5MjU5OGZjOTFmMWQ5YWFiZGVmZjU0NWJkYzc5IGxlZ2FjeS10cnVuaworMTQ2NzUgOTZmYTQ2ZDM0ODk4YWNkZDdiYzZhZmFhM2MxOTkxMTNlNjMzZWYwYiBsZWdhY3ktdHJ1bmsKKzE0Njc2IDMyNjI3ZGNhZmFiZmY3MmY1M2M1NzY0YmY5NDRkNjA3NDQyYmJhODAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njc3IDIzZGM4OWFkMDk5NmU4OTU2MWI0MGUzODVhMDNjNTkzZjFiZDU0ZjkgbGVnYWN5LXRydW5rCisxNDY3OCAzODMxMGViMDY1OWUzYTRjNDE3MzVjOGZkOTMzNzRkOTk5ZjIyNTI2IGxlZ2FjeS10cnVuaworMTQ2NzkgZjk0ZDEwYjZkMGY0ZDEzMzY2ZDZjN2VmYzIwYzZiM2U3ODExYjcxOSBsZWdhY3ktdHJ1bmsKKzE0NjgwIGM5NDI0N2I1YzM1NTU3OGY0NjI2ZDNmNjdiOTVkOWU5MDE5MzJlNzEgbGVnYWN5LXRydW5rCisxNDY4MSA4NjUxZjJkYTdjNGM4NzAxZTVkOTI5M2Y0YjY1YjljNWZiNzVmOWQ5IGxlZ2FjeS10cnVuaworMTQ2ODIgZTM2MmYzMjYwNDhjYTJkMWQ5MmYxMTEzNDM4YmU5NjFiOWYzZjJlZCBsZWdhY3ktdHJ1bmsKKzE0NjgzIGQ1MGZhMzY3MGI2NmExN2Y1NjMxNTlmMjBjZDU5NTliOTRkY2ZlZDMgbGVnYWN5LXRydW5rCisxNDY4NCAxNDhkYjYzMjIxNjFmZTI4NDk2YTQwNjZhOWY3MWM2ZGFkM2Y3Y2ZkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NSAwMWZhNWNhOTg4MTNiNDU1YzgwYzA1OGYwYTg5ZjkzMTZhY2I2ZjU5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NiA3NWQ2YzdjM2VjNTUwMGU0NmEzMWFlNTM5MWQxNTZjZmRmNjgzM2RiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NyA3NjEwZWVkM2UwMzMyODNmZmNhOWFjNTE1ZDMzODdlYjg5Yjg5OWM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4OCBmNzhmNDc3MjU2OGVjNjFjYWYxY2UxOTQ2ZjMxZjE4ZDM2YWJjY2JjIGxlZ2FjeS10cnVuaworMTQ2ODkgNzRkOTdkNzk1YzRlZTczY2Q4NzczOTQxNjQzMzVkNDUzMGJmZWViYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTAgM2Y1NmNkYTNkMmZjNDE3MTM4YWEwZTM0ZmIwNTdlYmQ1M2NlNGRmYyBsZWdhY3ktdHJ1bmsKKzE0NjkxIGM3NDU4OTIzZjZhMmQzMzAzNDVkMTEwOWVhYzJhZDk4ODNlZmU1NDEgbGVnYWN5LXRydW5rCisxNDY5MyBmMjdjYzE3MzUxN2UzNDJjMzEyN2YyMDA3ZGYzOWY4Yzk3MDk4ZDEwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NCAwZjZlYWIwM2YyODgwMWI2MzE0ZjQ5YTliMWJlYjhmMTlhZjUyYWFmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NSAzNjZjMWU5OGY3MDc4YmY4MGM0MWM2NWE1ZTA1MTFhZDQ2YmRlODAxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NiAwYTcwNjA3MmQ1MGFmMGY2Y2Y3OTkxODIyMWE0NmExY2JiZjZmNTI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NyAxYzkzNWNhMzc4NWM4ZDgwNTgwMjQ2OGYzZTMwMjg5ZmJiN2Q3YmFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5OCA0MzhhNDQwYmIwODVlNWU5NTJjOWY1MTNhYzEwMWFmM2RhMjQ5NmFlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5OSAzZjg1YzRiOTlkMzMyMjA1YjU1ZGMzNzc4MjliODU0ODQ1NjdmYzllIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMCBmYWYwYzllOWI5MmZlYjM5M2VhZTE1YzJhNjNkYTRjZTYxOTUyYWExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMSBmMjM4NjRlNGFkMmNjNTUxMjRjMWNkYTBjYzg1MmI3YTM4MWM5NDdmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMiBlNTdjZTRkZjU3MDdhNzJmYTUyMjExMTA1MTY5MTQ2NjBlMDI3MThmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMyA0ZmJmNjk2MjA4N2Q1OGYzYjEwZDk4Y2ZhMmNjYjVlN2Y3OGVlZGI1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNCBiZGFiOWM1NWYxNjgyOTdlY2QwOGQyZjZkNmE1ZjM1ZTAyNWMwYjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNSBhMzNmMmEzZGI4OTI3ZWIyNTQyMmVhMjZlMmU5ZDNlZjJjNjdkZDJjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNiAyZWFhZWQ3NTg5YWU1ZTBkOTY5OWJmYzIzMDVmMGE4YTdhNmQ1NjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNyAzYWYzYjFlYjY3ZmUxNGMxYTkwMDBmZjRkY2FhNDhhMjgzOTU0ZDI3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwOCAyNjEyYjk2Yjk5YWM0NGZiZjcwNDNlMjE2NjMwOWM4YTI4ZmEwNjVhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwOSAyOGM4Y2U2NjViMDMyMGRlOTdiYTMzYWQ1YjM3MzVjNzY0MjE1YTViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMCBiNThmMmYwY2Q1NWIzZTQyODE5YjZjMGQ0ZDI5MjZmNjBjNDkyMDQ2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMSA5NjM0OGJlYjkzODQzODlmYmU3ZjJkOTA1ZDViM2JiYTI2MzMyYmZmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMiAxNjlhZGQ2YTRkYzFiMGEyMjk2MzE5NGRhMzZhOTE4NDBjZDc1NjkxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMyA1MDAwZWFmMDU4ZGI3OGNkNzg0MjZiYzIyYTY2MDlhZjZmMGQ0OGY3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNCA3MDNkYTdlOTRiMjE2NWQyNTg5Nzg2M2FjNDg0YzYyMWRjZThmODRiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNSBkN2I4N2YwZmYwZDJhN2Y3MWZjYTY2NDViMDIyZDA0NmFhZDgyNDVlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNiA5ZDczNTYzOTQyOWQxM2FmY2I5YWRjYzA0MDEwZDRmMWJkZDcyNWY0IGxlZ2FjeS10cnVuaworMTQ3MTcgZTBmYjA0ZDFiZDkzNGI5MGIzOGE2MGI1ZmZhMGVlNDgwZjNiOWNhOSBsZWdhY3ktdHJ1bmsKKzE0NzE4IDc0ZmI2MDJiNzZjMmZmYjFkZTkzNzViY2U0YTMyYjhkYjkyMmFmMDYgbGVnYWN5LXRydW5rCisxNDcxOSAxMjdmNzBmNTliMDI2NjQzYTIzMmI4OWUwNTQ1YzIwNDI5YzNjNmZkIGxlZ2FjeS10cnVuaworMTQ3MjAgNjYzMTI5ZjNhYmUwMDFlYmQ3NTcwZTIxYWNlNDEwOTMwM2I5NzY5ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjEgYjQ3MjQ4Y2U3YjZjOTQ1MDQ5YzZkZmU1ZTdhYzg5YmUyN2M3YzMxMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjIgMzk1MjMxODk1N2NmYTMzNjRmYWVhYThmYmU2ZGE5Zjg5YmM0ZjlmNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjMgYmQxMDE0MjE1ZjYyMjU0YTZkMDRhNWI4M2ZlNTY4MjljZWFjMjVjMyBsZWdhY3ktdHJ1bmsKKzE0NzI0IDRmYTI1YTI5MjI3M2I3NTRkYmFiMGRkZTA2NDc5MTA2ZTBhMzEwZDcgbGVnYWN5LXRydW5rCisxNDcyNSBjMmVmZDE3Y2VjYmYxZDZmMjVlZmQ3OGViYzJiZDI5NmQ5ZjFlZjNhIGxlZ2FjeS10cnVuaworMTQ3MjYgZTZjNDY4MTlkYjkyNzI5NzZhMmQ4ZmY4Y2ViMGI4ODFmNDAxNTU5ZSBsZWdhY3ktdHJ1bmsKKzE0NzI3IGJhODBjOTA2NDQ5MTgwNjdlNmY3NThjYTZjNjQ5OGQ5MzcyNWRhM2UgbGVnYWN5LXRydW5rCisxNDcyOCBhNDExODM2NzAzODZlNjJmZjM4OThlMTk2OGU3YjhmZTM0MmMxNjIxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyOSBjNjAzY2RlZGFlMTc3NGUwZWZjNTliYWE1NWQ4ZjkwZGM4NDE2OGIyIGxlZ2FjeS10cnVuaworMTQ3MzAgMTNmZDBkZmVjNTYwYTdkZDU1NmFlMDY4NjlhNWE0ZmNlZjc1YWU0ZiBsZWdhY3ktdHJ1bmsKKzE0NzMxIGU3ODIwMzUyY2I4MGQwZjNkN2IwZWFhY2M1MWIxYjNmODc3YzZiMDYgbGVnYWN5LXRydW5rCisxNDczMiAwNTY5NzI1MTcxOTEyZTViN2Q3ZDFhNTk4NGIzZTk3OTI3NTA3ZGE1IGxlZ2FjeS10cnVuaworMTQ3MzMgNjliMGZjZWY0YzBmMjFkNzY4Yjc0NzU1ZTRkYmU0MmQxNWUyZGJjMyBsZWdhY3ktdHJ1bmsKKzE0NzM0IDc2NTE2MjA0YjYyMGJlYjg0ZmMxZGRlOWZhZWRiODQzNDRlMjJlNTIgbGVnYWN5LXRydW5rCisxNDczNSAxZTFhZWJiM2U0ZjY5ZTU4ZjBiNGQ4ZDIwNTM3MDQzMzdkNDQ3OTZmIGxlZ2FjeS10cnVuaworMTQ3MzYgODZkOWNlMTU4MDg5OGVmNDc4Njk3N2QzZjZhNmE0MTRkM2M4YjFiNCBsZWdhY3ktdHJ1bmsKKzE0NzM3IDkxNGVkNTI4ODk2ZTBlZDVhNTBjMmQ1NmFkMDA5ZDE3MzM5Mzg5MjQgbGVnYWN5LXRydW5rCisxNDczOCBhMGE5YzY5YWY5Zjc4Nzk0NjUzYjZmMDljMDc5ZDE5ZTMzMTE3Y2I4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDczOSA2ZmQwYmIwYzAzMzFlZmJlN2IxZjE1NDVkYWJiMWU3MzUxOWY0OTYyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MCBmMDdjMzMwNTU3Y2ZmODYzZjVlMzE1ZmI4ZDVmMWQ2MTIwNTIzYWY0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MSBkNzRlYWE5MmYwYjQ1ODM0NDkyZjQ1ZTI0NjRjNGFkYzYyNzk0MTExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MiA0M2QyMjQ3ODZhNTgxZTQ1ZDMyNmNlMzUzNzNjZDZkYTVhYzM3NWE3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MyA2MjhjYTFlOTA1OTFlNTBlOTU4OTg5OGI3ZjVjMWRkMDAxYWQzOGZmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NCBmMjIwZmJhNTc3NDlmYjgwMzA1Y2ZmZTkxYmEwN2Q1NmFhYjc2YWVmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NSAwYjk2MzNhNDVkNjhlYjgzYmJiYWM5ZThiMjc5NGIzY2E3NDUwNDljIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NiBjYTAxN2RlNGYyZmQ5NGM2N2JjMmVlMjBiY2ExYjU3MDIzYzFhYTE0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NyAyNWQzZGQwYjFjYTI5MzgwMzI5ZjQ0YWRhZDY2ODQ4NmIyODQxODE1IGxlZ2FjeS10cnVuaworMTQ3NDggNzk5NGQ5ZGI3ZjRkNWRmZTUxZWJhZDMwMDQ3MWQwMWViYmMwMDI5YiBsZWdhY3ktdHJ1bmsKKzE0NzQ5IDAwOWQ4ZmFlODFlYWU2ZWRiYjdmZDczZjBiMGY5MDdlZmQ2Y2UyYTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUwIDBjNDQ3YzI4OTE0NjZmZDEzYTEyZDIzZGU1NGQ5NDJiODc2ODYwNjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUxIGQyYTAwNjEwOTJmODA1MDE1NWQ0Y2I5YjQ0ZDI2OWNiYWFkZDlmY2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUyIGRhZjRlZmMzYWJhOTFiYzFlOWE5MjVkMjk4M2Y5ZDFmNTk1Y2IxZTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUzIDhkYzA5MThhZTJjMmZmY2U3Y2FhNGVhMGQyM2FjNmY0MmVhMDE2YWUgbGVnYWN5LXRydW5rCisxNDc1NCBmOTU1ZmJkNTEzZWU0ZjZkNGE2Yzk4NjY4ZTM0OGEyN2FlMDFhODI5IGxlZ2FjeS10cnVuaworMTQ3NTUgNTU2YzI3YjNhYjZlYmY1NmQzMzc4MjQ0YzgzNzA0YTQ2MjJlMmU4NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTYgYzhlMDAxMGMxMmVmMzFlZGNiZTMyOTJkZjY2ZTYzZDIzYWRmYzcwYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTcgODdhZWU0ZWYyOWY1Mjg2YWM2YWM4MzAwNGEyNGE0YjdhZjliYjMwZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTggMzI1OTM4MzAwYTc4NDE1YzYxYjdiODQzY2IxNWU0OGMzYmIzMDJjOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTkgNmU3ZWM5YTAwY2NlNWNiMDlkOGQ2NTdhOTE2OGQwYjljYzc5ZmVlMSBsZWdhY3ktdHJ1bmsKKzE0NzYwIDM2OTBjODdhOWJjNjY0YzY1MzRjMzM2OTA1OTQwODgyZjhhMDAyMjkgbGVnYWN5LXRydW5rCisxNDc2MSBhZmFiN2JkNzJjNDc5NWQ0ODU1ZWFiM2UzOTg0ODIzNjRlNTEzMWRkIGxlZ2FjeS10cnVuaworMTQ3NjIgYTA1ZDgzMzhmYWM1NzM3NDFlYTBiZDM5ZThhN2JjYmFhZjMyOTNhNyBsZWdhY3ktdHJ1bmsKKzE0NzYzIDljYWNkMTE2Njk4NjIzY2ZkYWQ5MDMwOTAxNjYyMzk2Y2M2OTg0MGMgbGVnYWN5LXRydW5rCisxNDc2NCA4NTZkYWRmNTZjZDk3YjI4ZjAzYThmMzJjNGI3MmJiM2IwNjY4ZGM0IGxlZ2FjeS10cnVuaworMTQ3NjUgMjNmY2U5YjlmM2JjOTMxN2NjMjgyZGE1NjRkZjlhZjljZTc2YjA2OCBsZWdhY3ktdHJ1bmsKKzE0NzY2IDZmMGQxZTMzNDZmOTVhNzAxYzg4MGM3ZWI1NWI2YWEzY2RjMjg5OTcgbGVnYWN5LXRydW5rCisxNDc2NyA5NDA0MTk1ZmYzZmVmZmFjYmUyNjA5MWMwZTEwZTBhOTI1OTNkMTczIGxlZ2FjeS10cnVuaworMTQ3NjggZDNlNGE0NTY5MjhiZTFkYTQxNGI2ZDRlMDQxYjI2YThmNWUyZjI0ZSBsZWdhY3ktdHJ1bmsKKzE0NzY5IDE5NTZlYzA3Njc4ZTg2ZjA1ZWExZGM0MmM4MzMxYTg3YjhmMzExMWIgbGVnYWN5LXRydW5rCisxNDc3MCA3NDBlYzA4ZTZlYzFjNTkyN2Y2M2U1MWNkYWY0ZGIxM2I5OTdjMzM0IGxlZ2FjeS10cnVuaworMTQ3NzEgNDFhNzI1YzEyNTUxZjYxYjRiMjhjZjM0MWU1MDE3ZTMzYjM0MWJkZiBsZWdhY3ktdHJ1bmsKKzE0NzcyIGQ2YmMzYmQ1MjQyNGU2YTFiY2E2MWE5OWZkMGM4NmQ0ZWFjZGE3ZGMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzczIGUxMjA0MTczMjMwNDA5MzU4OWUzZGU3ZmY0MDIzODQ0NGRhMWJiMDggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc0IGE0YTc4NWEwMTM2MGFlYWUxOWFjNDE4Mzk3NGRlZDY1YWMyZmY2NzEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc1IDAxYTYwYjkzYzJmNTAwZjM1NzMwNmIzOWZhOWYwZWU5NTY4N2ViNjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc2IDAxOWMzNDI4MGZjMjFmM2I3MjlmZTkzOWFiNTU4N2FmNGZkMzJkNTAgbGVnYWN5LXRydW5rCisxNDc3NyBhOWExZTU5MWViM2ExYjFlYTA1ODAxNDg1YjYxY2RhMzliZDRmNGUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3OCA4MWMyM2IzODdiYjA4NDhiMGY1ZWFlZGJhZDliNDk4NmRhMWY4ZDk2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3OSAyZTIxYWQxYzYwZmY4NjYzMDEzODY0MGY1YTRiNzAwMzRhZWU0Nzk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MCBhZjQ3NzhhMTMwNTU2OTE3ZGJhYWRlM2ZhNDIxNjMxNWJjMzk3YmY5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MSA2Mzc0YzY2NjkxNDc4ZTY3MmFlOWQ1ZjViYTI2ODQ3MWZjZDdjMjIyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MiA0MmNiZWE2Nzc3YjdlZTlmYWNhNmJjZjc3NmI1ZmJhZDA3MWU1ODViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MyBjYWU1NmY3ZTgwZmZlZTczYTg0YjYxNzdkMmE3MGI0NWJjZjZhYzA2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4NCBkOGIyMmE3ODE5MDVjMTkxMTRlMTAxYzM4ZTM4NjAwZDAyMzAzZDdkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4NiA1Y2FjY2FjZTFkY2Y4ODQyZDRjNDU4NmVmOWVjMGU5NTBmNjcyYTM2IGxlZ2FjeS10cnVuaworMTQ3ODcgMTc4YzZlZmFlZDhiYWUzMWIzZDUzZWVhYWZkMzcwN2M4MTVmZWU1MyBsZWdhY3ktdHJ1bmsKKzE0Nzg4IDE0MDkyYWJiOGJiNGJlNTQ3Yzg0YWU5MTRjZWE1NTE0NDhhZDA0MzYgbGVnYWN5LXRydW5rCisxNDc4OSBiMmQ0NGJiNzYxZDRiNWExNGRjZWRmNDdmYjk2OTZkODVkZjJlODU3IGxlZ2FjeS10cnVuaworMTQ3OTAgYTM4NGIwZjY5NTEyZjZkZGVlNjIzNWNkY2RjZjRmYWIyZTYyOTY0ZiBsZWdhY3ktdHJ1bmsKKzE0NzkxIGZhMTJhNTYzMzY4ZDUyZjJhNzI3ZDg4NzJiZjlkOWYxYjhlM2FlNjAgbGVnYWN5LXRydW5rCisxNDc5MiBmODdiNTZlZWJhY2M3MmMzZWFhYTQ5MWY3MWQyZTNlNDljMTQxOGU0IGxlZ2FjeS10cnVuaworMTQ3OTMgZGRhMzc5NGM5Y2Q5MDQ5YmFlNTc0ZWNlYTk4MmMyNjYyYmRiMzUwMyBsZWdhY3ktdHJ1bmsKKzE0Nzk0IGI5MDg4MGMwZTVlYjIyNWMxOGYwMDcyMzEyMDRkNjk0YWQwOTAzYmEgbGVnYWN5LXRydW5rCisxNDc5NSBkODk1NTZjMDRlZjk5ZGJjOWZhNmIzOGI3ODZiMWY4MDg0MjIyYmM0IGxlZ2FjeS10cnVuaworMTQ3OTYgNWQzMTY1ZTMwYmNlNjMxM2M0NTgzYjFmNDRkNTEwOGZjMDMyMWJlNCBsZWdhY3ktdHJ1bmsKKzE0Nzk3IDg4YjBiMzIxMDhjZmEyZDRlMzQ4MzRmOWViMzIwMmM2OGQxMzY5YzcgbGVnYWN5LXRydW5rCisxNDc5OCAyM2ExYzUyNmM2ZjAyYzViZGIwNTZlYzZlZGY5N2E5NjA3OTRhNmQ2IGxlZ2FjeS10cnVuaworMTQ3OTkgNWQ0NWNmYTFiYzkxMzg5YTg2ZTNkNGM4ZjlkMDY3MDZjNWMzNzNlMyBsZWdhY3ktdHJ1bmsKKzE0ODAwIDFlNWNkNzBjZWUxMDc1NmI4ODhhNzU2NGQyMDFlZjZjMmQ4Yjc3OTYgbGVnYWN5LXRydW5rCisxNDgwMSA0MmQ4ZDc2ZGFlNmQyYzVkNWJjMTA4YjMyMmIxMTY1ZDY3MTI5OGI5IGxlZ2FjeS10cnVuaworMTQ4MDIgYzZjYjBkMjY2ODM5MzAyYjhjOWM3NWU4YTkxYzBjNjMxNWNmZTM4YiBsZWdhY3ktdHJ1bmsKKzE0ODAzIGRlMjk2YTc4YWJmZGM0ZTUwMmRhMzY1N2ZiZmYyYmQ1YTJkYzVjMmMgbGVnYWN5LXRydW5rCisxNDgwNCA3Nzk1NTczZWMzNTgxYzUxODE5NTczNzdlOGRjMzlhMDc3ZDlkODlkIGxlZ2FjeS10cnVuaworMTQ4MDUgMDQ5ZjAwYmZiOWNlZjM0MDI4ODZlNTY5MGExNzA0N2NhMTQ1ODczYSBsZWdhY3ktdHJ1bmsKKzE0ODA2IGM0M2IzODA3OTIyOGYzOTkxNTU4OTg3NWIxOGEzNGI1MDFjNzM5MjggbGVnYWN5LXRydW5rCisxNDgwNyBjYTg4ODBjZjM2NzRjYTBmODI2MzUwZGFjNGNjZjdlYWUzNTU5YTUyIGxlZ2FjeS10cnVuaworMTQ4MDggZGIwM2EyOWNmMTZiNWMyMmNiY2U0ZDE1NWMzODEzNzg4ZmQ2OWM4YyBsZWdhY3ktdHJ1bmsKKzE0ODA5IGI5ODFhN2E5YjczOGU5YzE5MzViMDNhOTE1MjU1NmJmZDBjMjA3ZDAgbGVnYWN5LXRydW5rCisxNDgxMCA4NmNmZmU1MGZiMTcyYzAyNTNkMGIxNDA5ODhlNzA0Y2ViNDliYmY5IGxlZ2FjeS10cnVuaworMTQ4MTEgYmNhYjE4OWRkZjg2YmRlY2M2NTYyZjVmMWQzMDE1MGMwY2JiZDc1MSBsZWdhY3ktdHJ1bmsKKzE0ODEyIGUyNDM1MTkyNmUxM2VhNjA3NTNkMDFhODYyN2RhNjhmMGZmNjE5OGMgbGVnYWN5LXRydW5rCisxNDgxMyAzMzIzMTBmZTNkM2FmMzcyNzRlODY5ZjUwZWVhZjI5MDY2MDQ5MWYwIGxlZ2FjeS10cnVuaworMTQ4MTQgYTFiZmM4ZDRmYzAwNmM4MTgwODU5Zjk2MjgyZmViMWFlNzhjODUyNCBsZWdhY3ktdHJ1bmsKKzE0ODE1IDk3NTBhZjVlNzFiMDEzOWFlY2MwZDRhY2ZkMTRkNjY2MzEyNmNiNmUgbGVnYWN5LXRydW5rCisxNDgxNiA2N2Q0MTI4ZGEyNTQzYTFiNDBhNDQ5NTI1NGFiYWE0MDkyOTc0NzhlIGxlZ2FjeS10cnVuaworMTQ4MTcgZTQ5NDNlYmI1ZjdkMjI1MTEwMDdmOWU4MGQ1MjdlZDBmMjljMmNiYiBsZWdhY3ktdHJ1bmsKKzE0ODE4IDY1ZjM1YjczZTM1MDU0ZDk1YWZlYWFiZDI4OTcwZGQzODY5ODU0MjYgbGVnYWN5LXRydW5rCisxNDgxOSA5ZWRlZGU2NTFmYjFhNDhlNzBjYjA4ODBjYTI4MjVlZGY1ZjkzZDg2IGxlZ2FjeS10cnVuaworMTQ4MjAgNGE2MWNjODFmMzY3MzVkMTYzNTYxNmQ4NWVjMzMxM2FlZDE5MTU4ZiBsZWdhY3ktdHJ1bmsKKzE0ODIxIGZkMmIwNmM2ZmY1M2I3MjM3NzMwMWMwM2E0ZDU4NzI5NDJhODBiZmMgbGVnYWN5LXRydW5rCisxNDgyMiA4OTdjZjBlNWE0MzRhNjBkMTdhMmJhZjQxY2U3ZjUzNTkyZGRkMDE5IGxlZ2FjeS10cnVuaworMTQ4MjMgODM4ZGMzODBlNDY3N2VlODg1NzBhMDVjMGE2Yzc3MzQ0NzgyYmVlMyBsZWdhY3ktdHJ1bmsKKzE0ODI0IDQ0Yjk0MmY3ZmViNzY2ZWIzZTViZGQ0ODM5MGIyZjRiNzlhNmZkM2YgbGVnYWN5LXRydW5rCisxNDgyNSBkYzhhYTk1MWRlZjgwNDVjMTM4YmYwNTk5NjFkYjVkNGE0MjI5MGZkIGxlZ2FjeS10cnVuaworMTQ4MjYgNjAzZGIwZDBhZWQxNDM0NWM5MDAwNDRiYWQ5ZTY1ZjFiNmMzMzJlNCBsZWdhY3ktdHJ1bmsKKzE0ODI3IDdlMDA2MzQyZTc5MDdjNjk5NThhMGVjNDVmYjA3YWJmMjQzYWQ2ZGUgbGVnYWN5LXRydW5rCisxNDgyOCBhNmU1MjJjYjU5MTg0YTVjMGFmMzI1MWZhMTExYjZhMDNiYjBmMzk1IGxlZ2FjeS10cnVuaworMTQ4MjkgMjViNjMzNjczODVlYjA2NTNhYjJiYzI4NGYyOWYwMDYzMTVhZDI4YSBsZWdhY3ktdHJ1bmsKKzE0ODMwIDk2ZWExYTgwMGIyMzkzYzk2N2JiNWYzYzgyYjdjOWUzODhhZWQzYWYgbGVnYWN5LXRydW5rCisxNDgzMSBlMmRiODlhOThjYjJmNDliNDJjOWYxNTcwMThlNzA1ZGU1MTNiMjVmIGxlZ2FjeS10cnVuaworMTQ4MzIgMzc4OWI2NDNmZTg5ODEyOTBjMzUyMDY0NjMxZTJhNjQ0MWViY2E4NiBsZWdhY3ktdHJ1bmsKKzE0ODMzIGJiOTAwNDQ5MjAzMDUzOGJkNjExZmJkNGVmMmI0NjE3Y2UyNGQ5YTIgbGVnYWN5LXRydW5rCisxNDgzNCA5ODc3ZTk3ODE3MGVhNzViMjY2MDcxNGQxY2U1YWIyZjg5MThlNmJmIGxlZ2FjeS10cnVuaworMTQ4MzUgYWUwNjVkZGJhMGYxNDY3Y2EyMzczYzQxYmE0NzQ0NDYwMjVlYzkwMiBsZWdhY3ktdHJ1bmsKKzE0ODM2IDJhNjBkNmY4MzRmZmI0MTIwMjA3MDg3MGExYTRhN2NkMjJlNzcwZGIgbGVnYWN5LXRydW5rCisxNDgzNyBlMDlkNzQxNGQzZWNmODE2NTdmNmJlMzJjMjE4NzQ5YmEzYjMxZGE0IGxlZ2FjeS10cnVuaworMTQ4MzggOGQxYzY5YmRjNGYyYzJjOTVjMTRiMmQyYzhlZTAzOGQwNDgxZDQ0ZCBsZWdhY3ktdHJ1bmsKKzE0ODM5IDQzODc2MDZhMTI4MWI1YTBmOWYzNzdmOWEwYzhhZWU0ZmY5YzNkZmIgbGVnYWN5LXRydW5rCisxNDg0MCBjMGU0YTkwZGM0ZmY5Zjc2ODhiYmY0YWVjNWRhN2EwYjVhZjQxZTFjIGxlZ2FjeS10cnVuaworMTQ4NDEgN2E1MTVmYzEwYzFkNzdjMzkyNjI4MTIxZDkyNDgzMzUzOTc4MzJmYyBsZWdhY3ktdHJ1bmsKKzE0ODQyIDg4MTI1N2QxZTg1NDRiZjhhZDUxNWFlMzJlZTk4YjI1Y2U4Mzc1MTEgbGVnYWN5LXRydW5rCisxNDg0MyA0MGEyNjg5ZGFmMzc3NjZjMjFkN2Y1ZmYyZTY0ZDU1M2U2ZjI5OTM3IGxlZ2FjeS10cnVuaworMTQ4NDQgNDFjYmQyOThmZmM2YzFkMmI2NjJiOGU1NzllY2I5NDAzMGY2OGM4MiBsZWdhY3ktdHJ1bmsKKzE0ODQ1IGYwZTAyYWRiOTFlYmExOWIzN2Y1MzU5ZmVmNDY3ZTlmMDk0NGRkMjggbGVnYWN5LXRydW5rCisxNDg0NiBlODFiMTM5YWI4YTQ5NTlmZWFkYjNhNjkyMzkxNmI3MjdlYzZmNTA0IGxlZ2FjeS10cnVuaworMTQ4NDcgZDczMWNlZjgxMmIzNWU2MTRkMjYzODUzMzdiNDg4ZTQ5ZWU0MGUzZCBsZWdhY3ktdHJ1bmsKKzE0ODQ4IGU5ODc3MGRlMzE0NzJkMzY3YTg4MjgyMGUzMWU0N2JiYTBjOTMxZTYgbGVnYWN5LXRydW5rCisxNDg0OSA2NmYxNGZmZThlYjcxNmY5NmU4YTQ4NWQ5NmIxYWZmMjY0NzI3YmJlIGxlZ2FjeS10cnVuaworMTQ4NTAgMmE5MTBhNzc1NzlhNGQ4MzJmNmQ5YWI4OWIxY2MyMWQ1NDQxMWQyOCBsZWdhY3ktdHJ1bmsKKzE0ODUxIDMyNDA3YzA4Y2FmNGQzNTg5ZWFlZmZkMjA1YzkyYjIxMTAzNDI4OTAgbGVnYWN5LXRydW5rCisxNDg1MiA2ZmQ0Mzg2N2FhNGZiMDdmOWZmZWIxMzc3YTlmM2I0MjIwMTZlNTRmIGxlZ2FjeS10cnVuaworMTQ4NTMgZjdhMGQyOWZiOGI4MWUxNDQ1MDI5YzEzYjI2ZGMyZmNkMmYxNjE5MyBsZWdhY3ktdHJ1bmsKKzE0ODU0IDkyZWM3OGUyMTdkMjlhZjg5OTA0ZDNmNzM0YWMxMmNjYWM2MGM4NjMgbGVnYWN5LXRydW5rCisxNDg1NSBlMmIwMmQ0MGExNDI1YzNjODU4MmY2NjE4ZGYwOTc2NmFjZTllMzZiIGxlZ2FjeS10cnVuaworMTQ4NTYgZGZlM2JhZjBhZWNkY2U0ODA0OTVhYjljN2E1NjU3ZGUwMGQ0Y2FhMiBsZWdhY3ktdHJ1bmsKKzE0ODU3IDJmMmYyYjFjZTU2OGQ2MWUxZDY4NzJhNzRmMDg0ZWQ2OTI2NDI4ZDIgbGVnYWN5LXRydW5rCisxNDg1OCAyNzIxYzdjYzBiMjcxNWYzZDFjNTFlYjk1ODc0NDg5MzA5YmEyYjcwIGxlZ2FjeS10cnVuaworMTQ4NTkgNjMzMzZmMjA3ZDUxMjhkNTVkMzhlZWY4ZmQ2N2I5MDAzZDBlNTI2OSBsZWdhY3ktdHJ1bmsKKzE0ODYwIGU2YWIzYzYwM2ZmOTEzYmE2MTdlYWI2MjE5NTY2NjllYTQzOWZkOTcgbGVnYWN5LXRydW5rCisxNDg2MSA1ZjIyMzk0MDZkZDIwZDM3NDQ5OWNiMGVlMjRjZWJlNjE5ODA1MWI3IGxlZ2FjeS10cnVuaworMTQ4NjIgMzBhNDlkMTVkYTk3NWMyNjM3ZWU5YzJkM2U1ZDlkM2Y3ZTA3Mjc0MiBsZWdhY3ktdHJ1bmsKKzE0ODYzIDA2OTlhN2RmZDczN2MyMzUxMzk0ZWRkM2ZmZmYxMzhmNmI2ODFhNDMgbGVnYWN5LXRydW5rCisxNDg2NCBlYzU4YjUwM2I2NzAwYzVmZDZiNTA1OGQ1MWRkMDJmNjU0ODc5YTE4IGxlZ2FjeS10cnVuaworMTQ4NjUgMDcyN2ZmMzllNjRmYjkyNjQ3ZTJmZGRiZDVjNWY4Y2ZiMjA5OWUxNSBsZWdhY3ktdHJ1bmsKKzE0ODY2IDNkNzg1YzJjZGE4ODE1ZGJhNjczMjFkODc2MzQxNTU0NTgwMTYzYWUgbGVnYWN5LXRydW5rCisxNDg2NyBhMGVmOGZhNGIyNDg4YjQzOGRhZWExNWRkMzUyNTc5N2M0NjcxYzhjIGxlZ2FjeS10cnVuaworMTQ4NjggZWMzNjBiNGU4ZjY2ZmU3ZWJhZDE2MDA3ZmEzMDNjNGJjYzY0YjMyNyBsZWdhY3ktdHJ1bmsKKzE0ODY5IGUyYjMyODNjNWRiMGE0ZDY4MjAxOWIyOTRmOWY4YWQ0MzkwZTg3ZTggbGVnYWN5LXRydW5rCisxNDg3MCBlNjIxNGFkMmE2MGNiMDdiMWRkOTQ5ODhjNjgyMTI3YzBkOTAyMjNlIGxlZ2FjeS10cnVuaworMTQ4NzEgYjNhNGU0NTFjMDZjODZhMGIwMmY2ZDk1MDgwN2QyMmM3NzVkOWY2MCBsZWdhY3ktdHJ1bmsKKzE0ODcyIGI1ZmNiNTM5Njk5OTQ3Y2ViNDc1MzliNzc2ZGI0ZDA3NWU0YzcyNTUgbGVnYWN5LXRydW5rCisxNDg3MyAyY2Q5YzQzNmJkNDJiMzc5YWYxN2FkNGQ1ZTIyOTRhNWZjMWVhNjlkIGxlZ2FjeS10cnVuaworMTQ4NzQgMTAzOGU1ODYxMDc5OGU0YzgwNjc0MjBkZGMzNWJiNWJmYTY2N2ZhNiBsZWdhY3ktdHJ1bmsKKzE0ODc1IGI0MGY2NzliMTA3Y2U1NTgyOWM2YjZhZjZhOTQ5YjA3MTA2OTkzYWYgbGVnYWN5LXRydW5rCisxNDg3NiAxYjY4ZDBhZDc4MzU2YzBmYTIwZGQ3NDMzYTI5MGIzMjRlYTU4ZjNkIGxlZ2FjeS10cnVuaworMTQ4NzcgNzExMzQwZDQ0Nzc3NjM5MTQ5NjA4MDE0OWNlYjJlOWJjZTAxN2YwOSBsZWdhY3ktdHJ1bmsKKzE0ODc4IGMxNjA3NDlhY2ZmODU3MWI1YWMyYzQxNWViMWU2MmFkYzNhZDdmMmUgbGVnYWN5LXRydW5rCisxNDg3OSA2Njc4Nzg3NzY5MzM2YTM1ZmIxODkwOWI4MmI2Nzg3YTM0NTE0MzkxIGxlZ2FjeS10cnVuaworMTQ4ODAgOWI5YWJkZTAzMmIzMjQ1NTExOGVjZDE0YzRlODFjMzFkN2E5ODZlMSBsZWdhY3ktdHJ1bmsKKzE0ODgxIDViNTU4MWFmOTUxYzVkNGRhODBjOGZhMTE5MjI5MzY2Y2ViMTg2ZjcgbGVnYWN5LXRydW5rCisxNDg4MiA1NzIwZDFjMThmNGQxMzE1ZTFiNWU5MDQ2ZDJmYzU0ODBiN2YxNjJjIGxlZ2FjeS10cnVuaworMTQ4ODMgMzM4ZTA1NWI3Y2MwOWM4MDM5MzkyYjliODE1NmRjNWZlNTY4ZjU1NCBsZWdhY3ktdHJ1bmsKKzE0ODg0IGRhZGU4MmI5ZWUxOWNlMGYwODg5ZWI5YmViZjkwMDk4YWE0OGFhMjAgbGVnYWN5LXRydW5rCisxNDg4NSA0YTNmZDJjMTM3MmYyMjgxZTE4MzVmNzQxY2NhZDdlMjRmMDE1NzA5IGxlZ2FjeS10cnVuaworMTQ4ODYgNDNjMzZmNjNmODY3YzkzOTIwMTUzMmIyNzJhN2YzOTNlY2UxN2ZiZCBsZWdhY3ktdHJ1bmsKKzE0ODg3IDk5OWZjM2VlZGE5OWE5OWI4Yjk1NGI2YmE4NDFkZDg1MTA2YzUwYjEgbGVnYWN5LXRydW5rCisxNDg4OCA0Y2FjMzc2NDhhN2Y5ODYwMjRiNTAyY2E1OTMxNWEwZDcxNTZiYmZhIGxlZ2FjeS10cnVuaworMTQ4ODkgNDllMDI3YjQ4NjI3ZjA1MWJmZDI3NWU1MTU1OGQ0YzUzMDM0ODZlMCBsZWdhY3ktdHJ1bmsKKzE0ODkwIGU4YzMwZTY5NjY2YjBlNDJhOGIyNzQxZTg2ZGM2MDgyOTQ4NWUyNGMgbGVnYWN5LXRydW5rCisxNDg5MSAxNGU5M2Q4OWQzNGViZDFhNWM3OTAyZGI5ODZiYTUwMTMzNGVmYTc2IGxlZ2FjeS10cnVuaworMTQ4OTIgODA0NDMzZjAxMTJjOWI4MGIyZmZmYjk5NGI0OWRjZWMzNzdkN2Y5NSBsZWdhY3ktdHJ1bmsKKzE0ODkzIDBhYzU3N2ViODI4MmYwN2FiYzQyOTY0MGVmYmFlOGI5NGJlYWYyYjMgbGVnYWN5LXRydW5rCisxNDg5NCA4MWU1ZjgwMDAwOTQ0ZmM3NTRlNDUyNDUzOTMyNGYxM2I0YWI3NjIyIGxlZ2FjeS10cnVuaworMTQ4OTUgY2E5MzhmMzhkMDg3ZGZiMWYzNzM5YWU1Nzg0Mzg0MzE4YTdmM2Q2NSBsZWdhY3ktdHJ1bmsKKzE0ODk2IDIxYTliYmI1NzJkNzM3YjlhMGY4MzkwZDMxM2RhZWYyMWEzMTlmOTAgbGVnYWN5LXRydW5rCisxNDg5NyA4MzBkZDU4MWU5MzRmNmM3YjUxMzBiZDViZmZlNWI3ZTA5MWNhYzNjIGxlZ2FjeS10cnVuaworMTQ4OTggNzhlMzZlMDZlNTM2OWQyMGUyOTA2N2JhODdiZDRjZmZjMTNlZjFjMSBsZWdhY3ktdHJ1bmsKKzE0ODk5IGZlZDg5YjU3NjM3YTZlNDJmMDIxN2JlYTUxYjU3MzBhYWRlNTc2YWEgbGVnYWN5LXRydW5rCisxNDkwMCBkYjVjMDNmYThjNzNmNTVkOTY3NDM4MWVmOGM3ZjI3NGNlN2I4MWM3IGxlZ2FjeS10cnVuaworMTQ5MDEgYmUyZjAwM2Q0N2NjNmYxZTEzZDQzNTk0ZmNlNjA2NTM4OGMyNWEwZCBsZWdhY3ktdHJ1bmsKKzE0OTAyIDllN2FiYjI4ZTkyYTE3MTI5NDNlNTdkMWM4YjNjNGVjZjViMDBlNGUgbGVnYWN5LXRydW5rCisxNDkwMyA3NWFkZDk2NDRmZjM0YTI5ZjJjMDk5NDE0YmQ2OWM3OTE4MGU2MzJkIGxlZ2FjeS10cnVuaworMTQ5MDQgNTIyZWVhZTZjMDY2MzJlMmE5MzFkMzNmMDllYTZmOTAxYTM4NDBjMCBsZWdhY3ktdHJ1bmsKKzE0OTA1IDIzNmFjMWViMTg4ZTNkMjY5ZmJmYWI3YjNlZmNmOTBiMjY3YWZhYmIgbGVnYWN5LXRydW5rCisxNDkwNiA5OGIwOWM0MGQ5N2NjOWQ4Y2E5YWZhNTRmMWNmZTczOWViYTE3YmVmIGxlZ2FjeS10cnVuaworMTQ5MDcgZmViOWFmNzUyN2E1N2Y1YWRlMjU1ZTBhNGRkYjUyNDJhMGYwNjJkNCBsZWdhY3ktdHJ1bmsKKzE0OTA4IDQyMzg3YWRlNmFmYmU1MmUzOThhY2FjZjU4OTQ2NzM5Mjc0ODUzYjMgbGVnYWN5LXRydW5rCisxNDkwOSAzNTZiOGU4OWY4ZTMwNjQ1YTMwMGU3ZDM4MDQ3YWYyOGIwZDliOGVlIGxlZ2FjeS10cnVuaworMTQ5MTAgYzg4YzhhODUyNzQ0MDViNDAyZmY2MTAzZTEzNTE2MGE0YTBhNzgwNiBsZWdhY3ktdHJ1bmsKKzE0OTExIDZlNjhjN2RkY2RiNTdmNmZhODJjMGJiNTFhZTM4ZDRiMmRiMTViMjQgbGVnYWN5LXRydW5rCisxNDkxMiBhMmZiYzBmZjdjMmUwNzJlM2RjMzc5N2U2M2RlZmI2Y2RhMGE3NGYyIGxlZ2FjeS10cnVuaworMTQ5MTMgZmY2YzFhODJjMzIyYWNjNDVmMDUxM2M2NDY4YThlYWU1N2U2MzhkYSBsZWdhY3ktdHJ1bmsKKzE0OTE0IGY0MDdmYWIyNzM1ODlhMzNkZTIyMmRjNmZhMzUxNGZkN2U5OGM3ZDQgbGVnYWN5LXRydW5rCisxNDkxNSAyNjUzZmQ1MTZkNGUyZWUyMDE3ZmI3YzVmNzVjMWFhNGYzYTU2ZTA1IGxlZ2FjeS10cnVuaworMTQ5MTYgYjczMDNmMmZmNjEzYTNhNDFhNmJmMGMwYzcyMDM4ZjgzYTZhYjM3YyBsZWdhY3ktdHJ1bmsKKzE0OTE3IDBkM2RlNGMxM2NiNzI0Y2JmMGVmYjhkYjNmM2QzZDZlNzc4M2RmNmIgbGVnYWN5LXRydW5rCisxNDkxOCAyNzQ1ZGFlODcwNWYxOTQyZDQ0NDgyMzI4N2E2MTFmNjhlYmIxM2NkIGxlZ2FjeS10cnVuaworMTQ5MTkgMDE1NWEzYjEzYmYwZTBjOWI4Njk2NTk3MWViZmIwMDJiMWJlYTAxMCBsZWdhY3ktdHJ1bmsKKzE0OTIwIGRiODNlNjNiMzg0YjZkYzcyZjBmZDUwZjdmMmUzN2MzZjU2MGU2ODMgbGVnYWN5LXRydW5rCisxNDkyMSBmMDNlMmE4MTg4YWEwN2NmNWMwN2NjYzFlMDExODMxOTU4NzU2NTVmIGxlZ2FjeS10cnVuaworMTQ5MjIgNzcxOTNlOGUwMTM3MTkyZWFiNTM5ODQ1Y2ZmMDczMzE2NjQyN2ZjNCBsZWdhY3ktdHJ1bmsKKzE0OTIzIGU3ODllMmJmMDViM2VlZTFiZmMzN2NhOGI5OTM4ZGQxYmVkZDRkNjggbGVnYWN5LXRydW5rCisxNDkyNCBjMjljZGRlOGViZDgwMzA4ODhmODlhODQ4MTlhYjIwOTlhNWZiM2Q2IGxlZ2FjeS10cnVuaworMTQ5MjUgYjU4YWVkNzFjZDYzZjM3N2JmN2M0OTQyMzYwNTNjNjk0OTQyZGE0YiBsZWdhY3ktdHJ1bmsKKzE0OTI2IGM4ODg3OTJkZTZhNzcwODgwYTY3YzUyYjk5ZDVhNDRhYWE3OTU3ZmUgbGVnYWN5LXRydW5rCisxNDkyNyAyNDI0NTg1MDNiMTMxMWI1ZDY4Yzc4MTY2ZmY0ZTkyMzM1YmM5Zjc1IGxlZ2FjeS10cnVuaworMTQ5MjggZjVhMWU5NTQ0YzVkZTZlZTc0MzUyNDk5MjZiNzIzMmI5OTdjNDg4ZiBsZWdhY3ktdHJ1bmsKKzE0OTI5IDgzMjU3ZjMzOTRhZTMxMGM5Y2FmYWFkMDBhMTEwZmU2ZTVlNjg0YmMgbGVnYWN5LXRydW5rCisxNDkzMCAxNzE5ZTQxZTIzMzAzMWVkN2ExZjMxYjdkNzA0YTI1NzAyYWVmZDA2IGxlZ2FjeS10cnVuaworMTQ5MzEgMzliOTFjYjgwYjQxYzFhYmE0ODQ0MmZiMjA0MzBkOTk5MmZiZDdlNCBsZWdhY3ktdHJ1bmsKKzE0OTMyIGNkZjY4Y2U1ODZjNDM5ZWM1NTM3MjExY2I4ZWVlOTZkMjkyOTI0MzQgbGVnYWN5LXRydW5rCisxNDkzMyAxNTFiOTEzZTc0YTEzNzYyNjc5NTQyMTFhMzBmMjNkOGE4YWJiNmY0IGxlZ2FjeS10cnVuaworMTQ5MzQgOTRiNjAxZmFlYmFjZWFmMmM0ZWI4MGI1NzU5NjVlZmUxOWFmNzg2ZSBsZWdhY3ktdHJ1bmsKKzE0OTM1IGU3NWFjMjkyZWY0YzFmYWE4NWYxOGIzODc1ZTk0Y2ZlMzdmNmIwZTAgbGVnYWN5LXRydW5rCisxNDkzNiBmMDllOWQ2NTZhMTE1NGViZGU5YWM4Y2VmNTljOWY1NjdhMjE2ZTAxIGxlZ2FjeS10cnVuaworMTQ5MzcgYzNmYzJiNDYxN2ZjZDk2ZTI3OTlhZDgxZGNjZGZhNTg4MGZkY2RlYyBsZWdhY3ktdHJ1bmsKKzE0OTM4IDRkZDhiNmEzYjljNWRkYThiNGEzNTk4YzVjNDYzYWExNmUzZjA5MjQgbGVnYWN5LXRydW5rCisxNDkzOSBiYzg2MWFkZDVkNzEyYTE4MzViYmY2Y2RkOGJkMDE3OTNjZDM0Mjc5IGxlZ2FjeS10cnVuaworMTQ5NDAgNmQxMDhkNTA5MzQ2YTg5MjA0ZGYzYjk4ODMxYjZhZjZiYTBhZTJiYyBsZWdhY3ktdHJ1bmsKKzE0OTQxIDdmMThmOTc5YTkzYWZhM2NjZGY3YWQ0NzAxM2NjZTk4ZTI3MjMzZGMgbGVnYWN5LXRydW5rCisxNDk0MiA0NzYzYTNkNTlhYjlhMjU1ODIwMzc0M2U4NTQ4NjIwMzU4ZGZkMTk4IGxlZ2FjeS10cnVuaworMTQ5NDMgZjI4ZTkyZGJiOWU4ZTE0ZDhiNjQwODBmNDY4MzBlYzU2NGI5Mjk0YSBsZWdhY3ktdHJ1bmsKKzE0OTQ0IDQyZjIxZTQ3YjQ4NjA3MDcyZTlmYzc3N2Q2YjQ4NWI1YTBlMDk0ZDIgbGVnYWN5LXRydW5rCisxNDk0NSA0MWRmYzdkNGEzNmIyMjZmYmY1MjNiMjM3MmRlZmI1ODNhNjQ4MzliIGxlZ2FjeS10cnVuaworMTQ5NDYgNmZmN2Y3NmE2ZjJlNTgyZTEwZjliOWRkYTFiOGQzNjY0OGZiM2IzNSBsZWdhY3ktdHJ1bmsKKzE0OTQ3IGZlM2NiNzM0MWI3MDg0MmI0YWY1MTJjYTEzNTIzNDdmZjg2MGQ0OWIgbGVnYWN5LXRydW5rCisxNDk0OCBmODNlNDA4YWViMDVkZjEyOTFlN2Q0NjA3NmQ4MWM2MzI1ZDA4ODc4IGxlZ2FjeS10cnVuaworMTQ5NDkgMjUzY2RlZWFmNDJlZjZlODdkZDE3NWE2Nzk1OWYzZGY1NWUzOTY5YiBsZWdhY3ktdHJ1bmsKKzE0OTQ5IDYwNWViOTMyNmZmZTFmZDFlNDNmNDBlMjMzOGQ2NjUyYWI0NDlmZGYgbGVnYWN5LXRydW5rCisxNDk1MSAzZTNkMTUyYTg1NTQ3MDQwZjNmYTg1M2I2Mzk1Mzg0YmNkOTBjZDcyIGxlZ2FjeS10cnVuaworMTQ5NTIgYjczYzlmOGM1MzdjMWFlZDE1M2FhYzNmNmE3MjkwOGRlMzU0NmE2OCBsZWdhY3ktdHJ1bmsKKzE0OTUzIDA5MDlmNTYyM2Q0ZmEyYzJjMDVlYzFhNjMyODNiOGFmNmViNGY5YzIgbGVnYWN5LXRydW5rCisxNDk1NCAzN2Q4MjI3MmYwZjQ0NWJlZjAzNDJhN2MxMWY3YmNmODY2NzIxZmQ4IGxlZ2FjeS10cnVuaworMTQ5NTUgNGJmOThjYzM4ZGI3MWFjNjE1YTEyZmFlNWQwODM3N2NmMzcwMjM4NCBsZWdhY3ktdHJ1bmsKKzE0OTU2IDI2M2JlZTRlZjEzYzU5YTRlMDI4YWExOTRiYmFkMjJjZjUzNjVkOGEgbGVnYWN5LXRydW5rCisxNDk1NyAxZGMwYjYzN2ViMWIzYTU5MzE1OTE5YjliNzQxNmFhYjYzY2MwZDIyIGxlZ2FjeS10cnVuaworMTQ5NTggYTIxNmZlNzlhZTAwYjQxN2JkZDRhZGY0N2YxYWQ2NTYxOTg0OTg4YiBsZWdhY3ktdHJ1bmsKKzE0OTU5IDc3NDgxNzI4NWI4Y2EyMDM1NTUwZDQ1ODFiNmYxNTFjOTA4YTA4YWIgbGVnYWN5LXRydW5rCisxNDk2MCAzM2JmYzUxZGVjMDVjZjM5NDc2ZmNhNTU0YTgyOGQxYzVkNGE3ZjU4IGxlZ2FjeS10cnVuaworMTQ5NjEgNWVhNzczNDEzNTMxOThlMDdiMjU3MTJiZTRlOGE3MDlmOTI4YTE1OSBsZWdhY3ktdHJ1bmsKKzE0OTYyIGY5N2JiNDJkNDM0NDg1YzFkNjlkMTM5MzY3YjM3MTQ3YTQ5NTc1MDggbGVnYWN5LXRydW5rCisxNDk2MyA1MzBjZDlhZmE4MGQ1NDNiYWJkZTNhYTA4YWEwODBmNTgzMzE3ODk3IGxlZ2FjeS10cnVuaworMTQ5NjQgNWE2MjAwZmY3N2FhYzQ1NDdjNWMyODMzYmZmZDlmOWY5ODQ4MDg3MCBsZWdhY3ktdHJ1bmsKKzE0OTY1IDE3Y2U2NjM5NjdkODQwOGM1MzVlZTFjMGY1MjViODA1Mzc1NTMzYjggbGVnYWN5LXRydW5rCisxNDk2NiAzZTlhMWMxYTlmNTY3NjFlOTJlY2M1MDcyNDQ1YTc4ODkzMTJhNzNjIGxlZ2FjeS10cnVuaworMTQ5NjcgZTgyZTgyYjNiOWFkNTY1YWM4ZGY4MTM1YTY3ZmE2MTEzNTZkYmU2NyBsZWdhY3ktdHJ1bmsKKzE0OTY4IDJkYzFiZGI0MDg4ZWQ2ZjE4ZDU2ZDI1ZDczYjQ2ZjYxOTZiOTVhOTUgbGVnYWN5LXRydW5rCisxNDk2OSBjNDA1ZGJkZDI2YzllYzVkY2JlMGM3MDg4N2JmMmZkMTI1MTRiMWY3IGxlZ2FjeS10cnVuaworMTQ5NzAgZmZkMjQyZmVkMGUyZGM5ZGM5ODcyNzgwYzE5M2NkMDZkMzE5MTU1MSBsZWdhY3ktdHJ1bmsKKzE0OTcxIDIzNjYwYjY2YmNhMzBjMGU1ZWVkODQwMGI2OGZlNGI5ODNiZDM0YjcgbGVnYWN5LXRydW5rCisxNDk3MiA3N2IwMmU1M2Y2NjYyZjRjNDI2YzZjODgwZjBkN2M0OTNiYTdkMWY0IGxlZ2FjeS10cnVuaworMTQ5NzMgNzg1OWMwYTRhZDk1NDMwYmFiNTJhODBmZWExZDFiN2RhNDJmNjg2NyBsZWdhY3ktdHJ1bmsKKzE0OTc0IDdiZjhiMTBjZTJhYjVjMGQzYjM4MDc4OGMxOGU2MTM2NWFjMTk3NDcgbGVnYWN5LXRydW5rCisxNDk3NSAwNzRjMzBmZjMyMDZmZDlmZmRiNzRmYzMzOWQyZjE2NDExOGFlZDhjIGxlZ2FjeS10cnVuaworMTQ5NzYgNjMxMzVlOWRlZjI0MWU2ZjBhMGE1OTczMmEyNzE3NTNiMTc5M2M5ZCBsZWdhY3ktdHJ1bmsKKzE0OTc3IGQ0OTIzNzc1MjAyOTc2ZTNkMTQ5NzE1ZjhhNjhlNWZlYmNkN2VlNTQgbGVnYWN5LXRydW5rCisxNDk3OCAxNDVjMDA3M2Q3ODU4MWI0YTQ4ZDVhY2E0NWIyODdhN2EzNmJiNzJiIGxlZ2FjeS10cnVuaworMTQ5NzkgY2UyNmQ1ZjNkM2NlN2ZhNWM5ZDkyNDdiOTdlMzc5YWExMTJhZGZkNCBsZWdhY3ktdHJ1bmsKKzE0OTgwIDkyMzVhYzc2MTc2ZDQ1MjI4NTQzNGEwMGIzNTUwYjA0NjE0MzMxNGQgbGVnYWN5LXRydW5rCisxNDk4MSAwY2QyMmM4NGE0ZjE0ZDZmYmNiZjlhN2Y0NTQ3MjQxYTJjYWE0MTM4IGxlZ2FjeS10cnVuaworMTQ5ODIgZGUwZjkzZDkwZWU0ZDE5NTUzYmJmZjgzMzRhMjVhNWE4NTk4MDAzMSBsZWdhY3ktdHJ1bmsKKzE0OTgzIDA4Mzk4MzgyNzIyNDFlZDc1YTY0OTdmM2Y1MjA3NTg5YmMwODIwYzMgbGVnYWN5LXRydW5rCisxNDk4NCA3MjlmMzE1Mjc2NWNiOGY1NmJkYzBhOWJhYjU5NzZjYTliNzkzMjViIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg1IDFiN2M0OTQ1YzYxYzE4OWE0NmE5NTQ2ZDFjYjFlOGZiZTkzMjgwYjAgbGVnYWN5LXRydW5rCisxNDk4NiA3ZmEzMTc0ODQ5YmRiYTdiZDI4ODRjYmQ1ZTViYzhiMTIzMzQ3OWJiIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg3IDE5MGE5MjQyZjgzYThiMDBkMzAxY2QyMDk4MzlhMDQwOTk2ZTE5Y2EgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODggYTBhMjRkM2NmZDk2MTFiNmRlZTJjOWY3MTEzZTE4Mzk1MWMzNDU0ZiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4OSAxNzYwNTI0MTY2M2MxOWMwNTBkMTM3NTNhMmNjYzdjMjVlMTQ1NGQ3IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTkwIGZiZmZhN2ViMmE0Zjc0ZjU2ZTk1MDNmOGUyNWNkMGFhYTg4OGE0YTkgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5OTMgN2U5YTVjZjU1Yzc2NzZhNTk2OTYxNjg2NTM5MjZlODNhMDdlYTZmNSBsZWdhY3ktdHJ1bmsKKzE0OTk0IDFjM2Y5MTk1MWY3MzdhMDM3MzJlZGU3MzYyN2QxMDZlMTExMmMwYTggbGVnYWN5LXRydW5rCisxNDk5NSBiZTNlMGQxOTc1MjIzZWU2ODEwMDYwZGY0NzViMjBjYjUwNWVkNmQwIGxlZ2FjeS10cnVuaworMTQ5OTYgM2RhYzg1NGU2MTE4NTBlZGU3OTBlMTI0NTk0M2NlYjhlMWJhMGJjYyBsZWdhY3ktdHJ1bmsKKzE0OTk3IDYxMmJlMWJiNjVmZmUxYzFiZDdmMjZiNjUwNDU2Y2ZjMzZjZjgzMjAgbGVnYWN5LXRydW5rCisxNDk5OCBiZGZjYTU0YTE0MWNiYzNiYmYxOTM3YjNlZDlkNDYxNDNiNTYyYTk5IGxlZ2FjeS10cnVuaworMTQ5OTkgNjlkMTFkZjg0M2MxNTQ0YjJmMjA0ODM5NjU4N2E5M2ZjNTk4ZTFmOSBsZWdhY3ktdHJ1bmsKKzE1MDAwIDcwMTU0ZTJlOWM4OTBlOTNmMWU5YjI1NzA3ZTA5YTU2NWM3ZDIyMGYgbGVnYWN5LXRydW5rCisxNTAwMSA5ZWI3NjllMTVmODFiYzI0MDY3ZjViNDNhNDAzOGFlZGFkOWEwNzFlIGxlZ2FjeS10cnVuaworMTUwMDIgMGEzY2IwODJjNWRiZGI0ZjllNzg5OGNkY2FiNGE0NzNhNTlkNjU3MiBsZWdhY3ktdHJ1bmsKKzE1MDA0IDlkZGUzMTVjZGUzOTY5YTYwZDFhYzQ4ZjEzYTBkZDRiYzg3NjI5OWUgbGVnYWN5LXRydW5rCisxNTAwNSA0ZGEwNmZkZDNlNjM4MWJiZmViOTE2NTRhOTQwYjQyNWE1ZjY0MmM3IGxlZ2FjeS10cnVuaworMTUwMDYgNDE1ODVlODUxZjU1YjYxNDk0NWMyMGExZjRkN2I4MGFmNjM4MDNkMCBsZWdhY3ktdHJ1bmsKKzE1MDA3IDY2OTAzYzNmMTRkYjQyODZkNDZmOTNhMTI2MjEyNWQzZWM1ODBhNTIgbGVnYWN5LXRydW5rCisxNTAwOCBjMzQxZTY4ZjE5ODhlMzkzZDA2YjRiMTc2NmQ4NmM5NWM3NThiMDQyIGxlZ2FjeS10cnVuaworMTUwMDkgMGJhODU3MDlhNjcxMjk1MWE3NzBhMWI1ZDU5NzMzOGFkYWM3MGEwMCBsZWdhY3ktdHJ1bmsKKzE1MDEwIDIzMjY2MzUyZjEzOGMwMGNlN2E5ZmIwYjE1OGJmNzQ3OGQ1MWFjMzMgbGVnYWN5LXRydW5rCisxNTAxMSA2NWJjNWVhZjQ3Y2U5NmUxMmViMDZkOGFmN2M3ZGNkYTc0NjQ5OTRmIGxlZ2FjeS10cnVuaworMTUwMTIgZDFkMDE2YWNjZTc0ZWIyODlhNDEyMmY3ZTcxMmM2ZDZkMmQ5ODM0ZSBsZWdhY3ktdHJ1bmsKKzE1MDEzIDhjMGY4NjNiYTUwYzY3ZTM4YmY3NDdlNGI3ZWQ3MWJiOGMwMjZkMDQgbGVnYWN5LXRydW5rCisxNTAxNCBmYjIwZjZmZGQxNmQ2ZDA0OGJjNzFiMWM0MmZjNTkzZmIzOWFhMWQ5IGxlZ2FjeS10cnVuaworMTUwMTUgYWFjMTEyY2NhNzliNTE2ZDlhZTIxM2ViZTY3ODFhMzhmOTBlMGEyMiBsZWdhY3ktdHJ1bmsKKzE1MDE2IGZmNzVlNDczNGRkOWZlZmRjYTdiMGY3Mzg2ZTYxOGU4MGYwMmRkMWQgbGVnYWN5LXRydW5rCisxNTAxNyA2NGZjYWU3OGQ0N2FmNjM1NjQ3Yjk2ZTViMjU4YzBkZmZiODFlNDhlIGxlZ2FjeS10cnVuaworMTUwMTggNjZlOWM5N2Y5ZjY3N2MwYmM2NzhiMDhmNzZiNTAzOWM5NmUwNTE2ZSBsZWdhY3ktdHJ1bmsKKzE1MDE5IDc2ZWQxMzlmY2U1OTczNWZjNTBlZDhlMTUwYTJiNzU0OGNhZTk3ZjQgbGVnYWN5LXRydW5rCisxNTAyMCAzZmRhZWNmZmM0ZGRkYmM1MjU0NWFjYzE4MjI3NWFlY2JkM2MwMGUyIGxlZ2FjeS10cnVuaworMTUwMjEgOWUxZjYwOTc2MjA5ZjI3ZmMzZjhkYWYyNDNmZTUwMDRlY2YwNGQ1MyBsZWdhY3ktdHJ1bmsKKzE1MDIyIDI2MWU4OTU0NDA4NTRmOTBkMjEzNDNkOWEwMjQwZjZmOWVhY2YyNDIgbGVnYWN5LXRydW5rCisxNTAyMyBmNmI1OGIwMjFlNTY4OTI5N2IwNmVmZTYyNDViMGE5YzBhN2VjYWYwIGxlZ2FjeS10cnVuaworMTUwMjQgOGExZWM4ZmMwMGZlYTY2YTYwMzMwNzE4NmQ5MDNlN2U2OGQwM2E2ZSBsZWdhY3ktdHJ1bmsKKzE1MDI1IDBhYzQwZTQ3YmRiNWUxZjIyNjA5ZmQxODAzZGE3NDFiZDY0ZTE0NGYgbGVnYWN5LXRydW5rCisxNTAyNiBmZDc1NjExMjQyMDc2NGIwZGZhZjZhZmFlYzkxNDZkMmE3MWQ3Zjk1IGxlZ2FjeS10cnVuaworMTUwMjcgNTU5YjI1YTc5MDMyYWNiYzZmZGQ5Y2U0YTczYWVjNGZlY2FkZTEyYiBsZWdhY3ktdHJ1bmsKKzE1MDI4IGNmMTMzOGJjMjFjMDAwYmY1ZWQyMDZhYmQzNGVlNWM0ODFjMTU1ZTIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTUwMjkgY2EzMWU2NzkwMjRiNWM4OGEzMWM2ODkxYmU4Yzk4YzI1YmU1ZTM0NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNTAzMSBjYmZhOTVhNmEwM2VlNjlhZTc4ZWJjYmZhMmRlZjgzNDE2NDU4ZjE4IGxlZ2FjeS10cnVuaworMTUwMzIgOGVmMzY3MjM0MjY0OWVhNTM5ZDM3ZDgxMzk5NjNhM2I3OGQ0ZGRiNyBsZWdhY3ktdHJ1bmsKKzE1MDMzIDU3ZmRmYTAwZGE5MzM3YTg4ZjJmZjVhMWNjZTkwNmFiMzA4NmRlYzggbGVnYWN5LXRydW5rCisxNTAzNCA2NDdiZjcxOTEyZjAyYzE0NjM4ZTM0OTc0ODk4ZjRmMzBhYmM5NjkzIGxlZ2FjeS10cnVuaworMTUwMzUgYWY4ZDIxMTNiYzFkMDI0YmMzNGU1NzYzNTI1ZmIyYjgxNTQ3NTBjNCBsZWdhY3ktdHJ1bmsKKzE1MDM2IGQwNmI1MGJhODFhNjJjYzFiZjMxZjdkNDEwYjczOTk4MjhjZjc3OWIgbGVnYWN5LXRydW5rCisxNTAzNyA1MWMwYzNiNmQ5MTllZmZjNTYxYmFhZTIxMzBlOGQ0NGUyOTViMzdlIGxlZ2FjeS10cnVuaworMTUwMzggM2E5NGM3Zjg1NTUxZTg5OWVlNWZjNzA3ZmU0NzhlMTRlOTA4YmNlYiBsZWdhY3ktdHJ1bmsKKzE1MDM5IDk2MDE5MjUxODgyOWIxZWVlOTYyNGFjODlkZDBmNmE2MDg2MzY4NWUgbGVnYWN5LXRydW5rCisxNTA0MCA5Yzk2ZTVkNDM3YTgyMWI3NDk5NGUyZDg5OGZjZDNjZmEwZDRlOGI0IGxlZ2FjeS10cnVuaworMTUwNDEgODE4NjE0NWM0YTA3ZDZlMjg2ZWU4NWJiYTcxMzFhNTk4NjE5NTlhYyBsZWdhY3ktdHJ1bmsKKzE1MDQyIDRjNmMyNDgxNjkzZWQ0MDY5MWI2ZWNhNDI0NjUzOWZkNjRkZWM0ZjkgbGVnYWN5LXRydW5rCisxNTA0MyBkMWQyMmEzNjI2OGY5NTM0NTk5Y2FkM2RjNTIyN2JiZGQ3OGI5YmIzIGxlZ2FjeS10cnVuaworMTUwNDQgNWYzNjI0YmZhNTk0YzM3Y2RlYTdjOGJjN2NhNWFlMDJjMGE1MWU3ZCBsZWdhY3ktdHJ1bmsKKzE1MDQ1IGZiNzVlOGFjZmIwNTc5OWU2NzEzNjJkZTY0Mzk2Yzc1ODRkZWZmMDYgbGVnYWN5LXRydW5rCisxNTA0NiAxNWQ0MTE0OWJmMjQyOTQyOWNhZDRhMWQzOTQxNDVkNWQzNTc0ZDVmIGxlZ2FjeS10cnVuaworMTUwNDcgYjdmMmIyMjVkMGMwMjA1NjkxYWQ4ODEzOTcyOWQyMzdlMzE1Y2QzNCBsZWdhY3ktdHJ1bmsKKzE1MDQ4IDBkNjRjZTczNTRiOTk5ZTQ2ZjE0YjcwNTgzNjBlNDIxMGQ2YjQ0OGEgbGVnYWN5LXRydW5rCisxNTA0OSA5YWY5OTcwNjU3ZmFlYjg1MzRkNzU5OWM1OTM3YzYyYWFjOWI1ODY0IGxlZ2FjeS10cnVuaworMTUwNTAgMzVhMTE5YWExOWI0YmVlMzFiOTQ5ZmFmNTE4NmE0NmJhOWQ4NGVhMCBsZWdhY3ktdHJ1bmsKKzE1MDUxIDIzNDZhYzA3ODBjZTkxMWIzMzE5NTVhNDFkY2I2NWYwMzBjMGViNGMgbGVnYWN5LXRydW5rCisxNTA1MiBiMTU3MjU2ZGJhNzY5N2M5YmRiOGVhZGY5YmU3NGExZDU4NTVkZjU3IGxlZ2FjeS10cnVuaworMTUwNTMgMTYzMTk4NmRiMTNhNjY0ZmY4YzBmYTVmZDRkMmNiYmU3ODg5NWJjMCBsZWdhY3ktdHJ1bmsKKzE1MDU0IGQ2NDBlN2Q0YWVjNDhjNWQ2MWM0MGRiNmQ5OTdmMjFiOGZlYjI2YTQgbGVnYWN5LXRydW5rCisxNTA1NSA5MTcyZWRhYWVmZjU4NjkxMGRjNGI1MGU0YzhiNDRjMjhiMmY2OWQwIGxlZ2FjeS10cnVuaworMTUwNTYgMTdmYzlmOTU5OTBiNDhlMTc4MjdjZWQ5M2Q3YjY2NjBlMjI3ZjNmZSBsZWdhY3ktdHJ1bmsKKzE1MDU3IDQwZTU4YzViNmY4NGZhZGMyOGE2N2JkMTE4ZDQwMGQ5M2JiNWUwMDIgbGVnYWN5LXRydW5rCisxNTA1OCBmZDkwNWJiMmY2YjYzMTAzMmYwMmU0MzkxNTI4ODNkNjhjODkzZjFkIGxlZ2FjeS10cnVuaworMTUwNTkgMGM2MmQxYzc2YzA2NDk3ZGMwZDM4MTI0YmQ2OGNiZTM1MjBmYTY3MiBsZWdhY3ktdHJ1bmsKKzE1MDYwIGJiYWFkYTQxYTIwYjY5ZGQ0MGY0MmE4ODZjMDAyZmJmZDZjMzI3NGUgbGVnYWN5LXRydW5rCisxNTA2MSAxZjdjMzI4MDFkYzExZTg1MDI3YmNiODc5MTJhOTRkOGExZWE1MjY1IGxlZ2FjeS10cnVuaworMTUwNjIgMGE0NWI5NTNmNGMwM2U4ZGYyOWY0ZTFlOGY2ZmRmOTliODExMDA5MSBsZWdhY3ktdHJ1bmsKKzE1MDYzIGU1NDA5MzA2NDI5NTVhODdmMDhiYWI4ZjliY2QzZDlkZTkyNjg5ZWUgbGVnYWN5LXRydW5rCisxNTA2NCBkZGM0ZTYyYjIxNmIyZmNiYzU2Y2NhZmEwMWJlNzA1MDk0NTM1YzJlIGxlZ2FjeS10cnVuaworMTUwNjUgZDMyMzliN2MwNWZlOThkYTUxOTk5ZjgxYjc3ODUyZjgxNDlmMDBlNyBsZWdhY3ktdHJ1bmsKKzE1MDY2IDNlNzBjNDVmOGQ2YmI4ZWIyOWNjZTY5ZjgyM2NmNzU1OWY3OGNmMGUgbGVnYWN5LXRydW5rCisxNTA2NyBhM2IwNDYyMzRjMDkzMTIxYTRlZjg0ZTNiMGQxMDA2ZWJhNzdlYzIwIGxlZ2FjeS10cnVuaworMTUwNjggZjc4MjQ0NjM5NWRiMmQzZTU5YjlkYWI5ZTZkZWM5OTRmOGFhOGYyMiBsZWdhY3ktdHJ1bmsKKzE1MDY5IDkwYjJhM2NkMzY1ZmUzMGExNzQwZGUxMWFjOTFhNTBkZWYwNjExMDEgbGVnYWN5LXRydW5rCisxNTA3MCAyMGE1Y2JmOWZjYzAyYzUxYzU4YjA0YTRkYjQ4ZjU4NWRkYzQ2M2E5IGxlZ2FjeS10cnVuaworMTUwNzEgZjFmNjY1ZTA3NWNhMzA1OTljNTZkNzFjNTA4YzMzNzIxZDJlNmRjYSBsZWdhY3ktdHJ1bmsKKzE1MDcyIDU0MGYxMDg4MWE1OTcyOWZlNDEwZDJjOWMwMWYyMDUzM2VhZmMxNzUgbGVnYWN5LXRydW5rCisxNTA3MyAyOWU3NTM0OTNkOGU1ZDc4OTliNmFkNzk1NDk4ZjQ1ZmE5N2U1MWIwIGxlZ2FjeS10cnVuaworMTUwNzQgMjBhMzcwZjFhZjhkZmE5YTY2ZjgwMDVjOGIwYzQ0Y2U1MWNmMWUxMiBsZWdhY3ktdHJ1bmsKKzE1MDc1IDU3ZjM0ZTE2MmU2NzYyNThkODJhZWNhZjNmMjlmZjQ2MjA5MDIyMGUgbGVnYWN5LXRydW5rCisxNTA3NiA1ZGUwYjkzOWZlNjFjY2JkZjc0MjI0NTViM2M4NzYzZDdhNmUwYzlkIGxlZ2FjeS10cnVuaworMTUwNzcgYjMyMTYyNzM4MmJjMTQ1OTdlYmYzYTkxNzg1MmI4YmJhMjY5YzE1NCBsZWdhY3ktdHJ1bmsKKzE1MDc4IGQ3NjI5ZmEzYjI5ZjU4MTdlZjcwNTgyYTJkMWFkMjRiYjI4OWIzZGEgbGVnYWN5LXRydW5rCisxNTA3OSAxYTIwN2M2OGU4YjRkNWY4Y2VmNTNhZGVlOWNjYjQ1NWFiZWZiZDFhIGxlZ2FjeS10cnVuaworMTUwODAgNzI5NmNkZGU4YTVlM2JlOTE4YTk5MmQ4MDM4YjdjMGRkMGMyMTU2NSBsZWdhY3ktdHJ1bmsKKzE1MDgxIGI1ZjZiNGJjZWY5MGVjZjYzNzM3NGM5NWZmZDViN2YxMDYwMjhiYzEgbGVnYWN5LXRydW5rCisxNTA4MiA5NDg4ZTRmZGFmZTQ2YjI1NThhYzI0NWI3ODkxNTNlZmE4MTE5MTQ4IGxlZ2FjeS10cnVuaworMTUwODMgNjZiNDkwNmQwZmM2YmU5ZWE3Y2ZmMWI0MzYxOTE2Mjk0YTczODYzZiBsZWdhY3ktdHJ1bmsKKzE1MDg0IDRmNTY3MWEzMTM0NzNjNmFkMmI1NDI4NmFiNTgxMzcxNGM5NjFhMzggbGVnYWN5LXRydW5rCisxNTA4NSAzY2M3Nzg0OGE2MmFmN2I3MDYxNmIwOTZjMWQ0MjU3ZDZmMjgxZTkxIGxlZ2FjeS10cnVuaworMTUwODYgNzdlNGYyMWUzZWU2NGE5NWRiZWY4NmY2OTRlZjY1YmQ3MmNmNzM2YyBsZWdhY3ktdHJ1bmsKKzE1MDg3IGQxOTVmMTdmMjkyNzMxZTYxYzkxNzliYzUyNDNhNjdiMTRiNmZlOGQgbGVnYWN5LXRydW5rCisxNTA4OCA2YjQ2NjdmYTQ5MzgxZGJlZDAwZTAxNjY4NjVmOWY2YWQyMGQ1OTJmIGxlZ2FjeS10cnVuaworMTUwODkgNTI1YjIzNTg3MjFlOWU5MGY3NTU1MmEyYmI2NmRjODA3ZjBmNzc0NSBsZWdhY3ktdHJ1bmsKKzE1MDkwIDM3ZmQyZTZjODFjN2Q3MGU4ODRiMTI4OWNiNWM0MzQ4MzJlOGNlZDcgbGVnYWN5LXRydW5rCisxNTA5MSBlNjllZWY2OTI2MTI1NTMzNzYyMDFjMjdiYTBjZjc2ZTYxOTc2OGZjIGxlZ2FjeS10cnVuaworMTUwOTIgZDMzNzQzMTAyZjhhZDNmMjIxZTkzMzZjOGY5N2M0MTFlZTEwZGQ5ZSBsZWdhY3ktdHJ1bmsKKzE1MDkzIDg1MTBiNGFiM2MzZGViYzMzYTFkNzM3ZTViZWNiNzU1YWM1MDVmNjMgbGVnYWN5LXRydW5rCisxNTA5NCAxODVkZTRlN2NlZjEwZTJiZDQwMzYxZjA4NjA4ZDNiN2M0ZDVmZGZhIGxlZ2FjeS10cnVuaworMTUwOTUgOWU5NjY2ZjY3OWY3MmMyNTY4MGE4YzY3YmRiOWQxNGI5MGRhNmYxMiBsZWdhY3ktdHJ1bmsKKzE1MDk2IGUyNjIwYWFiOWYyZDZjYjFjZTg1ZGNjMGFiYmI4YjM3MzRjNjlhMjQgbGVnYWN5LXRydW5rCisxNTA5NyBmYzU1N2Y0MzFlODdlMGRkYjYzMTg2NWFhNTFlOTlhNzNjOTRlYTU0IGxlZ2FjeS10cnVuaworMTUwOTggYWEzYjAyYTAzOGEzN2FhYTdkYTI1NmI3NWViMjg3MzE1ZTQyYWUxNSBsZWdhY3ktdHJ1bmsKKzE1MDk5IGJlNTEwMGFmYTFiN2VkMWE5Y2RlZmJmMTc5MmMyNGNkNzQyYjY2NWYgbGVnYWN5LXRydW5rCisxNTEwMCBmY2Y1ODhkODZiMTQwOWVmZWYyN2ZkZTdjNzhkMDI5YTYwYWQyZWE2IGxlZ2FjeS10cnVuaworMTUxMDEgZTk1MmE0YjkyMGFkZjA3YjUwMzQwNDgxOTE2ZmEzOTYwZDU2NjEzZSBsZWdhY3ktdHJ1bmsKKzE1MTAyIDI0ZDQxMTY4OTdkZDQ0N2I4MWMyNmZiODlhYzgxOTA1NDc0YWIwN2EgbGVnYWN5LXRydW5rCisxNTEwMyBmYWNjMTA1YjY0MWIwMWI5YmRlNjhkZTk1YTg2ODc1YmMzMjIwZjI4IGxlZ2FjeS10cnVuaworMTUxMDQgMTY4MDRiMzdkNzUyNWNlOTEwYmY2MmVlNmY5OWZhYWMwMGI3NjRlYSBsZWdhY3ktdHJ1bmsKKzE1MTA1IGU0MzQ5YjYyZmQ5YjQxOWMzMTQ4MzI4YzZmN2Y0MmZjMWJjNjIwZDIgbGVnYWN5LXRydW5rCisxNTEwNiBjNTliZGM3ZmQ4YTYxZGNhY2RlMTIwNTlkNjJjMzYyMTg3YjA5NDBmIGxlZ2FjeS10cnVuaworMTUxMDcgNjc4NTYxOWMzM2UxY2IxYzk1ZTgxYzcyMjc2MmJlODIxMzZjMTAxNCBsZWdhY3ktdHJ1bmsKKzE1MTA4IDE3OWE2ZTI4NTBhY2E1ZDBjNzUxNzZkM2M4OGFmMjllNDUyYTM0ZWMgbGVnYWN5LXRydW5rCisxNTEwOSA1NGU4MGRiNDk0MjM3NWViOWMxZGM1OWQwYTk5ZmJhYzVlOGQwOTc4IGxlZ2FjeS10cnVuaworMTUxMTAgOTk2ZWIzYjNiMzNlYzUzMjNmNTA2YzQxZjRlYjVjYTdjOTA1NjJjNSBsZWdhY3ktdHJ1bmsKKzE1MTExIDA0ODAyYjdlOGExZjA4NDZlNzBhNDAxMTY3MDdhNzgzN2Y2NDZhOTkgbGVnYWN5LXRydW5rCisxNTExMiAxZTc5MWQyZTg4NzUyZTJlZTc2ZDk2NjUxN2U2YjFiN2FmNTJlY2VmIGxlZ2FjeS10cnVuaworMTUxMTMgNWI1OWVhNDFkYjRlODY5MGIxNjc2ZTRlNTBjNWQwZGQ2NmIyYjFiMiBsZWdhY3ktdHJ1bmsKKzE1MTE0IGZiYzhkYWZhNDQ4NGM3ZTBiNGNhNGNjNjMxY2M1ZGNkNzg0ZmFlZGEgbGVnYWN5LXRydW5rCisxNTExNSAxMWVjYjY2NzBmNGY5ZTQ4MDE2NTYxZTE4MzBlZDUxYWRkNGNkYTI5IGxlZ2FjeS10cnVuaworMTUxMTYgZjczYmY0OTI0Mzg2ODJmMzhjZmQ4OGRiNWZhNmQ4OTZiNjhmMzdiMyBsZWdhY3ktdHJ1bmsKKzE1MTE3IDc5MWExMTJiZTNiY2Y4YmFjYTgxYzI2OWQ5N2UwYmEwYzM2YThhM2QgbGVnYWN5LXRydW5rCisxNTExOCA4Nzc5NjllYzA5NmZkNGY2MTA1ODZjYjViYTliNmI5OTEyZjA5OGQyIGxlZ2FjeS10cnVuaworMTUxMTkgN2Y2NTBkZjI3MWM5ZTNlZTlmM2M5YjUwMDg5ZGM4ZjczZGNkZGVlYiBsZWdhY3ktdHJ1bmsKKzE1MTIwIGU2NGZhYTZlMjcwMjJkMzNiNTFjMzE1ZGViZDIxZGRhMzdkYjc1OTkgbGVnYWN5LXRydW5rCisxNTEyMSA3ZmE3NmNjZGYyZGU3M2YzNjgyNDQ2OTA3ZTk3ZTY0ZWRjMzM2MDBmIGxlZ2FjeS10cnVuaworMTUxMjIgMDQ4MTA5NmEwZjQ1YmM5NzA4MTdkNmZiOWNmMTE0MDRkNDlhMzc0MyBsZWdhY3ktdHJ1bmsKKzE1MTIzIDY3N2UyMTQ3ODI5YTlkMmNhMGI5ZmY0ZGNkYTc3ZjE4NWEzZjc4NmQgbGVnYWN5LXRydW5rCisxNTEyNCBjMmQwZDY3NDRiM2JiN2U1MTQ0YjdiMzk4MGE5MDFlYTgxZmJmMjFhIGxlZ2FjeS10cnVuaworMTUxMjUgNjhlNDhiYjk0MDcxMWZiMThhNmM2N2IwNzZlMzMzZThjNzczMzU5NSBsZWdhY3ktdHJ1bmsKKzE1MTI2IGFmODdmY2FlODgwZmQ5YzhlNDc1ZmRjZmNmODhjZjNkYjZmMjY1ZmQgbGVnYWN5LXRydW5rCisxNTEyNyA0MjlhMzdmZjlkYjVjYzI3YmU5MTYwZDgzNzcyNTY3YjY1Mjg5MDhiIGxlZ2FjeS10cnVuaworMTUxMjggMjE0MzAzZDMyZjc2NjRkNDNmODRiZGQwYTY1OGNhYWQzZDIzNGM0OSBsZWdhY3ktdHJ1bmsKKzE1MTI5IGQ2M2I1N2FjNjE3ZDRkYjIzYmJhNmE0ZDYzNGJmMmM5ODc0MzY2YjcgbGVnYWN5LXRydW5rCisxNTEzMCBmNTdhZjM2MGI3ZTVlZjM3ZTYzYTg4NmZjYzg0YTk3MWI5YmVhMmNlIGxlZ2FjeS10cnVuaworMTUxMzAgMDExYmVlOGZkOWY3ZjRkYTQ1N2VjNzE1OTY0ODRmYjA4ODJjMDYxNCBsZWdhY3ktdHJ1bmsKKzE1MTMyIDZjZTZjMjNhY2QxNDIxYzg2MTRhZGI0YWE3NmQyNzM5YjEzZmNlMmQgbGVnYWN5LXRydW5rCisxNTEzMyAwNTJmYmQ5MzE0OTIxZmY3YzdlODJkZTE4ODJiMzI1NjI5YWUxZGRiIGxlZ2FjeS10cnVuaworMTUxMzQgNjNhZDc1NGFhMzBlZTJlNjZlNmU1MDA1YWE1ZWQ2ZjI2MzJlYmEwMSBsZWdhY3ktdHJ1bmsKKzE1MTM1IDNiZTJmNzU0YzAyMzliODFiZTEyMzY0MjY2ODAxMjRmMDc4ZGUwMDYgbGVnYWN5LXRydW5rCisxNTEzNiAzN2Q5ZGVkNWFiOTE0NTA5ZjQ0MzJlNDMwYTZmNjdhY2I4NTFhYzY0IGxlZ2FjeS10cnVuaworMTUxMzcgMTE2YzNhYTNjY2Y3MmQxNWRlOGM1NmRkMjQ0ZjdiNzkzOTcyODYxMyBsZWdhY3ktdHJ1bmsKKzE1MTM4IDVmMjlkN2MwMjQzMzg3MTg1OGRjYzQ3MjE1OGEwZGYwYmE1YzZmNTIgbGVnYWN5LXRydW5rCisxNTE0MCBiZTgyNTczZTQ0NDQ4MmQ1MDkzZTA0NWQ2NTAzYTcwZTIyNDNiMThjIGxlZ2FjeS10cnVuaworMTUxNDEgYWEwMTNmMmNmODBiZThiZDAxNWFhODdiYmRhNDk4OTQ1NzNmMjY4NiBsZWdhY3ktdHJ1bmsKKzE1MTQyIDYyNzIyNmRmOWYwMTgxZDlhNzUxMGRiNDRlMWFlZmI1ZmNlZjZkYzAgbGVnYWN5LXRydW5rCisxNTE0MyAzMmU5ZDBlNzg5MzUzMzQzNjQ5YTI1YTllNmE3ODVlZTM4NjBkMGU2IGxlZ2FjeS10cnVuaworMTUxNDQgZWVmNmEyNWYwOWM1MzE2ZGI4YTIxOTM1MzFjNTI2ZTBmYjNmMjU0MyBsZWdhY3ktdHJ1bmsKKzE1MTQ1IGM0ODE3MmFmMTNkYzE1MjhjYWVlNjVhMDZlMTcxZWUwZjUwMmYzMTEgbGVnYWN5LXRydW5rCisxNTE0NiBlNWIwYmVhMDNjZmE1MDU1NmVjZWExMDA1YWE4NTQ3ODBmMWZkNDNiIGxlZ2FjeS10cnVuaworMTUxNDcgNmVkYmFlNmRiY2Y1NWE4YjdiMmM2ODc5Mjg5NDUwNzNmYjlkMjNjYiBsZWdhY3ktdHJ1bmsKKzE1MTQ4IGE2ZjBiMzk5ZjY2NTY5NTkxOTgwOThiMTdhOGNkNmVmMjEwOTY0ODcgbGVnYWN5LXRydW5rCisxNTE0OSA4ZDdlMDc3MzdiNGM2YTE0YzJlZmVmMWE4YWE0NDdhMzRjMzFiNGQ0IGxlZ2FjeS10cnVuaworMTUxNTAgYTA0OThiMTUyNDRjZDEwYzhkYmFhMjAwNjNkOTUxY2Y4NGYwMzJiOSBsZWdhY3ktdHJ1bmsKKzE1MTUxIDYwZGQ5NWM3NTk5OTkzNjI5YzQ5NmRlMmM0NjMxNDAzZTZlNWI4NDYgbGVnYWN5LXRydW5rCisxNTE1MiAzYmIzOTg5OTYyOTFmOTNmMjFmNzQ4MWIyZDNmNGIwN2QxMzY2NjdlIGxlZ2FjeS10cnVuaworMTUxNTMgZjgyYjI1NzdmYTBjZjA2NzI2ZjdhNDhhZTEyNjg3MTNjYjRlOTcxZSBsZWdhY3ktdHJ1bmsKKzE1MTU0IGYwNzA1YmNmNjczYjJjNzUzYTE0YmEwNzMzNjc0MTJjMDhkNmNiMGQgbGVnYWN5LXRydW5rCisxNTE1NSAyMzkyZDEwZTIxZjE2OTRmNjdhOTQ3MjQwYzM4ODcyMDk4NjA0YTNhIGxlZ2FjeS10cnVuaworMTUxNTYgOGJmOTEzMDIwNjA0ZWNkZWQ0Nzk4MmQ0NjQ4NTMwOGNjNmVhZDU5NyBsZWdhY3ktdHJ1bmsKKzE1MTU3IDlmMmM3ZjcyNzJmYTcxZWRiMGMxZGE5Nzc4ZjU3MzA0MTViZTZiNTYgbGVnYWN5LXRydW5rCisxNTE1OCBhNTc0M2UxNDc4NjBjMTZhYTY1YjNjODVjYjY5ZGZkYTY0MmI1ZjljIGxlZ2FjeS10cnVuaworMTUxNTkgNGM1MWE5NjZkMmEzOTBlYjM2MTQ0ZWU3MzNkZTUwY2RkODc0OTI1OCBsZWdhY3ktdHJ1bmsKKzE1MTYwIDgxYzk2NmIzNWMxMjYyMjAxYmY2Y2NlNWZiNDUzM2FkMTk4MGE1MTYgbGVnYWN5LXRydW5rCisxNTE2MSA2N2U5NjE1NzdkMGViOGZhMzhlZDljYTk2NGRlNTQ3MDNiNzI4YzE5IGxlZ2FjeS10cnVuaworMTUxNjIgMTU1NTRkM2E2OGM3MTVjODM5NWVkMTQ1YzIzMTZlZmIxMzBhYzFkNyBsZWdhY3ktdHJ1bmsKKzE1MTYzIGVjNmI2Y2E1ZDExMTYyM2FmNzViYzZmZDA1MmRiYmFmMjk1NmYwMmIgbGVnYWN5LXRydW5rCisxNTE2NCAwMWNmZjlmZTJkNDUyMTI5NTU4YjQ3ZGQ3ZGY3YzFhZjI2NjQyNDgxIGxlZ2FjeS10cnVuaworMTUxNjUgMmZiNmM3MzlkMzI0NzFjMTFkZGUxZGU1NzQxZGJlNGU2ZWU0MmYyMiBsZWdhY3ktdHJ1bmsKKzE1MTY2IGNiNGYwZDgxODgwZDViNGI1ODM1OTIyZWI1NzJiYWZlZTIyNGM1MWUgbGVnYWN5LXRydW5rCisxNTE2NyA1Yjg3MGMwZWE3YjYxYTBmOGRiNDBiYmVlNjE2MTJhNDY0Mjc5ZWM1IGxlZ2FjeS10cnVuaworMTUxNjggNGM1ZDYyZTg2NzViMzg5MTI0YjYyYzkxZDg4YTExNzRlM2RkOWNlYiBsZWdhY3ktdHJ1bmsKKzE1MTY5IGFlNTI1YWIyM2VlZmM2MWVjNTJkYmU5NzcxZTI2ZTQ1YjI4ZjY4ZjUgbGVnYWN5LXRydW5rCisxNTE3MCA3ZGU5MDJjMWY0MzllNTZkMWU5MDhmZjgxMDNiNmY0NDMwZDAwZTc0IGxlZ2FjeS10cnVuaworMTUxNzEgMmZjNTNkZGEyMGViNjNlNDU3MGNjYjQzNGE4NTdlYjY0N2E3ZmEwMCBsZWdhY3ktdHJ1bmsKKzE1MTcyIDBiNjg5OTAwODlkMjE0OWUwMzQyZjAyYzZmYzFlNTRlNWE0YjgzMjAgbGVnYWN5LXRydW5rCisxNTE3MyA5NWUyOTZlNjdhMTJjMDFkZDYyOWQ4OGMzZTY4NDc3OGE0ZjhmOWNjIGxlZ2FjeS10cnVuaworMTUxNzQgMjU5YzRiOWM0Yzg4OTc2ZmIyMzE3MWZmYzliOWRiY2VlZjY2ZTI0MCBsZWdhY3ktdHJ1bmsKKzE1MTc1IGFlMTA2Mzc5ZTc1NmMyNzc2Y2E2OWMwNDNlMWZjYWYwZDk3NGI0MWQgbGVnYWN5LXRydW5rCisxNTE3NiAxYzg1YWU2NzZiYTdlNWRiYjgyMTA2NmY4NDQwNTM5M2IxZmNhMzFhIGxlZ2FjeS10cnVuaworMTUxNzcgMzYyNjI2MTE4OWI0OGQ5YjE3YTM2YzdlNTMxZjBmNzM1ODMxYWQwYiBsZWdhY3ktdHJ1bmsKKzE1MTc4IDY5Nzk5NjZlZTk0ZGExNjdhMGVjMTZhZDUyYzllYThiMGJlMzU3NmMgbGVnYWN5LXRydW5rCisxNTE3OSA2ZmI0MGE4NWE1MTk3NTg5OTU0ZjYyMjMzNmUwNDg3YmVkODkwYTc4IGxlZ2FjeS10cnVuaworMTUxODAgMGQxM2NlMmUxNTViOTM4MjY3ZjNmNDE5OWEwOWJkNjg0NGE0NWU5YyBsZWdhY3ktdHJ1bmsKKzE1MTgxIDBhZTYzNTIzZDUwNGJkZmEzODhjMTY2OWI4MzM3NzhmNGVkYjMwZTYgbGVnYWN5LXRydW5rCisxNTE4MiBjMGJmM2VkOTM4MzU4MGZmZTA3MmU5ZjViYWQ2NDMyODllNDEyOWRhIGxlZ2FjeS10cnVuaworMTUxODMgZTg3ZTZiZGZjYmRjNjc3ODkxZDIzNjUwM2Y2ZDBjNjY3NTY1ODUzZSBsZWdhY3ktdHJ1bmsKKzE1MTg0IDk3OGM5Njg3YmVlZjRmZDY0ZGViNTU0ODRjYzJkMWQ3OTg2NjZkNTcgbGVnYWN5LXRydW5rCisxNTE4NSA2YjJiOWEyM2E0MWYxZjhjYTU2NDg2ODVjNGVjNjQzYzBiNTE1YmVhIGxlZ2FjeS10cnVuaworMTUxODYgZDk0MDBjNDc2YjlkYzJlNWUzMTE2NDdkY2FiYTQzYzkwZTFjZjQ2NSBsZWdhY3ktdHJ1bmsKKzE1MTg3IGM2MDU5ZTcwYmFiMjNiZWJkNDg2N2Y5MDJlYzY0YWU2NzM0ZWQ5NWIgbGVnYWN5LXRydW5rCisxNTE4OCBjYTk4OTQyZmUxMDNiOWNjMjIwMjEyODE4ZWU0ZDcxYTViMmVlYzM2IGxlZ2FjeS10cnVuaworMTUxODkgM2ZkMTMyMjJhODc2ZjNhMTg3Nzg5OTk2YzgyZTY3OTgwMzE3MDYyNSBsZWdhY3ktdHJ1bmsKKzE1MTkwIDgxNjEzMzQ5NDJkNGZmNWIzMWE2MDE5OGE5NmQ4MGUyYzE5NzBlYmQgbGVnYWN5LXRydW5rCisxNTE5MSA2YThjZDA2ODIwOTYxZWFiOTAwYjI3M2VhZjMzYTE3N2YwZDg2MjZiIGxlZ2FjeS10cnVuaworMTUxOTIgY2E3Yjk5ZDI3YTQwNzFhMWUxYTljNTU5OWQ4MTdiNzIwOGY0NGEyMiBsZWdhY3ktdHJ1bmsKKzE1MTkzIGRmZjdiMjYxMTZkZWJkM2JmNGRkMTRjNWRmYTIyNWJmMThkYTdiMWUgbGVnYWN5LXRydW5rCisxNTE5NCA4Mjg5YzBlNTUxY2QzMTI4NGZmYjhiZmJjYjkyODUyZjlkYTdiM2NlIGxlZ2FjeS10cnVuaworMTUxOTUgZjBiNzE5MTNjMGFhN2IwOGNjMzA3Mzc0ZmZlYTAzN2I5YTY1MjljNyBsZWdhY3ktdHJ1bmsKKzE1MTk2IDQ1Njg2OWVhYTdkNTkxYTVkZGI4N2I1ZDVhYWQyNzhkODMyZTgxYmYgbGVnYWN5LXRydW5rCisxNTE5NyBkNDc0NjBiMWE2Nzk5NzI3NzA0M2ZjMjUzNWYyNjI3ZTRmMWRmNWMzIGxlZ2FjeS10cnVuaworMTUxOTggZDc2MzM0MWQzMzEwYmUwZWI0NmY1NWNhODBiNGM5ODAxZDQyYWY1MSBsZWdhY3ktdHJ1bmsKKzE1MTk5IGM5OWJiYTllOTIxMmNiMTBkZTM0NTM2NWZkZDVmMzU5OWUyYzZkYWIgbGVnYWN5LXRydW5rCisxNTIwMCBmODc2MTY0ZmExNTE0OTg5ZDFmNDMxNzIzZTU0M2UxMzk1YTE0OTNhIGxlZ2FjeS10cnVuaworMTUyMDEgMDNiODE5MTI4MzVlYmU5YjVjMWFlZjE4Yzc5MTgyZjEzOTY5N2YwNCBsZWdhY3ktdHJ1bmsKKzE1MjAyIDljNGE0ZTZiZDU1NWFlZDBhNzYxM2FmNGRlMTg1NWYyZTY5MDljMWMgbGVnYWN5LXRydW5rCisxNTIwMyBlMzY3YWQzZWE1OWE4NjFkMzFiMTBjOGUxZThjMGYxODhjMmRkZTUzIGxlZ2FjeS10cnVuaworMTUyMDQgOTUxZDg0ZTFkNTRiZWIwMDc2NDkzZWYxNWUwYzE5MjU2NWRkZWMyNiBsZWdhY3ktdHJ1bmsKKzE1MjA1IGUzYmIyMzliMmRiZjVlMDVkYjdlNGQ4MjJhMWE3M2JlNDg5NDRhOGIgbGVnYWN5LXRydW5rCisxNTIwNiAxOWY1M2Q4YmQyOTgxMDZjMjg2NzY0OWNiOWUwMmRhZTUzNjZkYzkyIGxlZ2FjeS10cnVuaworMTUyMDcgMTZkYzgwNzMxYzIzYTIwYzE5MDM0ZjA3YWI2OWU0MTJmNjVlODcyZCBsZWdhY3ktdHJ1bmsKKzE1MjA4IDMzYmEwNjI2ZWY3MmE5ZTEwM2E4NWUzNTM4OTliNjk1YWU5YTU3NTUgbGVnYWN5LXRydW5rCisxNTIwOSAzNDY5YjJmMTc2MjRmODYyNzIxNGMxNmI5OWFlNWRmMGQxNmFlYWQ1IGxlZ2FjeS10cnVuaworMTUyMTEgZDBmMjkwYjNjMGIyM2JjMDU4NGFkOTRjMWMwOTcwNzcyMGMzNmQ2YyBsZWdhY3ktdHJ1bmsKKzE1MjEyIDQ4NjE2MTg5NDUwN2Y0MDU4ZTdlNGU3YjU3NDY4NjVkNWM3NWI4MDMgbGVnYWN5LXRydW5rCisxNTIxMyA0Y2IzMzM0ODIxNjBjOGY4MjMwOWNjZGExZTljNDY0MWQ4NGI0ZTFiIGxlZ2FjeS10cnVuaworMTUyMTQgZGUzNjViNjVjMTdiYzhkOWYzMmYwY2U2OWE0YThjNGRlNGJjMDNiNiBsZWdhY3ktdHJ1bmsKKzE1MjE1IGQ1ZmRjOWIxZTQ3NGM3MjFjZWVkNWZjNjI1OTFlZTY5MmJmOWU3NzEgbGVnYWN5LXRydW5rCisxNTIxNiBjMjhmYTAxZTczMjljM2M0MTZjMWZkNWVhYmZlNWZkYTdjNzI4OTdhIGxlZ2FjeS10cnVuaworMTUyMTcgZTc2MjNkMDE5MjdjOGM5ZmI1YmQ5MjkzZTUxMWQ4OWIyY2ZmNmFjZiBsZWdhY3ktdHJ1bmsKKzE1MjE4IGU1YjMxYWNiMTBjZWI2YmYxMzhkMjllZmY4ZjBkOWU2MTIwMjIyMWIgbGVnYWN5LXRydW5rCisxNTIxOSBmZDBlNWRhZWY4NmFlNmRhMmU2ZjdlMGI4OGQyYWY5NjI5ODcxYTZhIGxlZ2FjeS10cnVuaworMTUyMjAgMTQ0YTg5NTcwYTM5Y2YwNWM1MTQ3ZWVhM2MyYzdhMmZhOGZmYjcwYyBsZWdhY3ktdHJ1bmsKKzE1MjIxIDc0ZDRlNDUzYTdmN2RhMzk2NWUxNTM4YjBjZWQzOTYwMWM0NjhkMWUgbGVnYWN5LXRydW5rCisxNTIyMiAxODk1MWEwMjRkMTFkZjJhNzU4OTA2YmI2MjdlNTk5ZjQ2NmE4ZDRiIGxlZ2FjeS10cnVuaworMTUyMjMgNmY1MDk2YThkMDNhMjBiOGM1NzVhYzZjOTk3OTYxYzg0ZDRiNTc4MSBsZWdhY3ktdHJ1bmsKKzE1MjI0IDQ5YjBiODQ2ZjY4MzQ3MmQzNDMwNjFlZDAxMWVmM2YwZWQzMTAzOWIgbGVnYWN5LXRydW5rCisxNTIyNSAwYmY4YWJkMDJiZDhkN2NkMWU2NGU3NGFiMThmY2E2ZDcwMDI1YTQ4IGxlZ2FjeS10cnVuaworMTUyMjYgMTgxYzZmOTVmNmY2YTVlYmJlM2M3YzNkZTlhNzg4NDNkNWRjMzgyZSBsZWdhY3ktdHJ1bmsKKzE1MjI3IDc2MTNmOGIzYzFjZTRjZDUwOThkZWUyNjc5MWUyM2QxYzc0MjJjMmIgbGVnYWN5LXRydW5rCisxNTIyOCBlMzllYjkwYjI1MGEwMmE2MjQxZGZjNDk2NzA3NjIyNjQ4OGM3MTE1IGxlZ2FjeS10cnVuaworMTUyMjkgMmEyZDVmZjkzMzA4MDc3MTg2NWI5YmEwZWUwYzNjZDM5NjkyY2VlZiBsZWdhY3ktdHJ1bmsKKzE1MjMwIGU1NjdlMzNkZTY0NWJmNzBkMjVlNmE0YTYyOGFiMDc5ZTJmZTM2ODQgbGVnYWN5LXRydW5rCisxNTIzMSBmY2I5MmI5NmYxYWZiNTYwMzkzMTJjMDIyMzA1ZGNmNzg3ZjcxMTVkIGxlZ2FjeS10cnVuaworMTUyMzIgNjk5ZGZiMTI1NGNiZjcyMzhiZjI5MmY0OWViN2MxNTdiMDExOWNiNCBsZWdhY3ktdHJ1bmsKKzE1MjMzIGMyN2Y0ODRhZWZmZmE3ZmU0MzA2ZmYxNDY1ZWE2NjQwMTQzZjA2NzUgbGVnYWN5LXRydW5rCisxNTIzNCAzNTAwYzQzNTBmNjI2ZTExMGMwODkyNTU0MmU3ZTgzNjhlMWM1NjZhIGxlZ2FjeS10cnVuaworMTUyMzUgZjFiZmYxZWM3OTZiNjQxMDkzMjExNWMxNjQ4ZGY3OTMwZTQyNDhjZCBsZWdhY3ktdHJ1bmsKKzE1MjM2IDg2NmFmMWQ4Nzk3MDg0YzY3MmFmYzhhNjUzNTdhMTM4NzdlNTdiY2IgbGVnYWN5LXRydW5rCisxNTIzNyBhM2UxZmVjYjQzYzZlNTE5ZGRhZGQxNTA3MGUwNzcxMGZlMGZmNTlkIGxlZ2FjeS10cnVuaworMTUyMzggYmUxZDc1ZTE2Y2I4MTYyOWU0YzE5OGU0ZmRkZmM0YWU5ZmQxYjljMCBsZWdhY3ktdHJ1bmsKKzE1MjM5IGE4ODk4YTE3MmZlMmYwNzY5NzI1NzU3NWYzNDY1OTM0YTY5ZGNkNzMgbGVnYWN5LXRydW5rCisxNTI0MCBhM2MwYjZjZGQxNjhhNjk0MzEzZmJhZDg5Y2I4Yjc5NTkzMzAzNWQ5IGxlZ2FjeS10cnVuaworMTUyNDEgMTllM2U4ZjhjNTc0ZDIyYTY4NmJhMzkxZDI0OTFmNjAwZDM3ZTg3MiBsZWdhY3ktdHJ1bmsKKzE1MjQyIGZjMjc2ODc3NWY4MjE5ODM5MDJlYmE1MDkxNjFkMjhiMjM3Y2Y2YjEgbGVnYWN5LXRydW5rCisxNTI0MyAwZGI1YTM2MDI1MjYxZmY4ZTY3MWYwNDdhNmU3NDhkZjIzOGIwYmY1IGxlZ2FjeS10cnVuaworMTUyNDUgMTBhZGJmODE4M2U2OGUwMjdkNTU5OTk1ZjEwN2YxMjhiZDZmYjRiNyBsZWdhY3ktdHJ1bmsKKzE1MjQ2IGYxZTg2N2FkN2Q4NWFjM2EzMDQwMmNjNDkyM2M5YTk0MjZkMGMzOGIgbGVnYWN5LXRydW5rCisxNTI0NyA4YjMzMGQxNjM4MDA3NzE4MDU2NTgwNzA3MTc1Y2ZhOGM1ODQyZjQyIGxlZ2FjeS10cnVuaworMTUyNDggMTk1ODU3MWQyNWMxNmJjZTRkZmNjNTk2ODgyODVlYmYzMjVhOTRkNSBsZWdhY3ktdHJ1bmsKKzE1MjQ5IDRjZWUyZGEzZGFjZmQ3NWRjN2QxMTczOGIyOTRhYzNlMzViYzQ1MzIgbGVnYWN5LXRydW5rCisxNTI1MCA3MjBkMzU1NmIxNDM4NTIxN2ZmMzU2MTZiMmJlNTZiMzY3OWYyMDE1IGxlZ2FjeS10cnVuaworMTUyNTEgMTcyNWU4MDJlM2ViZDUyZTdkYTViZDlhODQyNzYwYjdhNjU5YzdlZCBsZWdhY3ktdHJ1bmsKKzE1MjUyIDA0Y2ZhMTM0MWE1MDljMTc5NjlkOTFhNGYyN2U3OWFiNTA1NTZiNTIgbGVnYWN5LXRydW5rCisxNTI1MyAxY2JhNjU4OWNlNjY3Y2VmN2M0NTY5OTU0OWZmZGVlMDgzNjA3MTZkIGxlZ2FjeS10cnVuaworMTUyNTQgYmVmMjRkNDhhZmM4YzViNGQzNmFkMThjNjA0MjIwNjY3Y2JlMTkxYyBsZWdhY3ktdHJ1bmsKKzE1MjU1IDJhNTNhM2E0Nzk2MmE4ZmYyZjA4NGVjMzZjZmRlZDc4Y2JlYmVkODIgbGVnYWN5LXRydW5rCisxNTI1NiBlNTBiYmI4ZTk4ZGFkMmFlOGJjMmM4N2M1MjE3N2M0ZTQ1YjhkMjcwIGxlZ2FjeS10cnVuaworMTUyNTcgMGQ3NTU1NWVkNmViNmQ5NzA5MDZlYWQwYWNhNjU5MjNlZWM0MmJkZiBsZWdhY3ktdHJ1bmsKKzE1MjU4IDA3ODBhYmE5Nzg5ODkzMThhZjIwZmU0ZWQ2MjM1NmYxNjA5ZDAzNjggbGVnYWN5LXRydW5rCisxNTI1OSBlYjQzM2VmYTI0ZGVlYTg0NjJkZjA1MDg1OTA0OWRiNDhiMjljZjVhIGxlZ2FjeS10cnVuaworMTUyNjAgYmQ5MmM1M2IxNjY5OTMzNDRhMTRiNTI4NDU0MTQwM2I4OTcwNWJlOSBsZWdhY3ktdHJ1bmsKKzE1MjYxIDJjZTJhODMyNTNlODAzMTdjNDI3YmZmYTY1NmJmNjhjZWM1ODhiN2IgbGVnYWN5LXRydW5rCisxNTI2MiAyMTE0ODNiZDBhNTE4MmRjYjYzNjBjM2U2ODAyNTNiN2M4Njk4NWZhIGxlZ2FjeS10cnVuaworMTUyNjMgNDRlNTIxYTkzNjQ4YTUxMjdlYTRkNzBhOGY1Zjg4OTRmY2Q1MzEzZCBsZWdhY3ktdHJ1bmsKKzE1MjY0IDVjM2U1OTk5ZGFhMTZiODExOTY5M2Y3OTk3NDIzNTY4YmVjNWQzMDggbGVnYWN5LXRydW5rCisxNTI2NSBmNGRkN2M4ODQ4ZmNhNDVkOGIzZWIwYTNlZGUyYjA0MTA3YzMzZWMwIGxlZ2FjeS10cnVuaworMTUyNjYgNTY2MWY0ZjlhNDdmNzk4NDg4YjQ5ZmE1OTdjZDcyMTE3Yzg3YTI3YyBsZWdhY3ktdHJ1bmsKKzE1MjY3IGI3NmJhY2NjZDM0NjMxMGQ2MmE5NzliZTdkYTliMWY0NDE4NzE2NmIgbGVnYWN5LXRydW5rCisxNTI2OCBlNjNlY2NiYTg3M2I3NjQ3NDFhZTU0MjRkYTQ2MzFkZTEzNjQ3OWRjIGxlZ2FjeS10cnVuaworMTUyNjkgMTNhMTY3OTNiYjFjZjA4MDk4Y2JkYWFjNzRkMGYwMGI4Y2ExNWM4ZCBsZWdhY3ktdHJ1bmsKKzE1MjcwIDg3NDdmMWM4YjVmYmViMWY3OGRmM2EzOWY2N2YzYmE3OWZlYTA5ZmIgbGVnYWN5LXRydW5rCisxNTI3MSBhNjExNTczMjhiMTIxZTE1ZGI2MTExM2JiZDVkOGE0NTMyNjJlOGI4IGxlZ2FjeS10cnVuaworMTUyNzIgY2EwZTlkOTdkNTU0YzQ4NWFkZDZiYjhhODU1OWUyMTkxZDg1NThiNyBsZWdhY3ktdHJ1bmsKKzE1MjczIGJhNTQ4NjJjODc4NWMyMGVmODg3ZGY0OTY1MGE3YjNiZTRmOGYyYjEgbGVnYWN5LXRydW5rCisxNTI3NCBmYjQ3NzUxMTFlZDlkNTEyZjUxYzgwNDRkZDFlMzcwYWY1MThmZjAzIGxlZ2FjeS10cnVuaworMTUyNzUgZTZlOTE0ZDViMjA3MmZlNDZlZGQ1ODZkZDQzZDc2ODM0NTg5MjQwNyBsZWdhY3ktdHJ1bmsKKzE1Mjc2IDZlYmUwYWNiNzc3NjQ5MTJjYTNlMDhhYTMyZGFjODg2ZTJmY2NhMjUgbGVnYWN5LXRydW5rCisxNTI3NyA5ZTUzYTcxMTIzOTVmYjQwOWQ4MDU2ZDM4MzNiYjJiNjgxZTM1MWUwIGxlZ2FjeS10cnVuaworMTUyNzggYWY5ZDYyM2JhYmIwNzcxNzc1MTBiOGNmMDA4ZTg4NjYxNGY5MWU5YSBsZWdhY3ktdHJ1bmsKKzE1Mjc5IGI2YjdiZDIwYzg0NWI3Mzc2ODliMTI5MGM1MTA3YTBhYmJkNDIxOTIgbGVnYWN5LXRydW5rCisxNTI4MCBkMzU3YWU4ZmJmZTU5MGFhYWIxY2Y1ZTZjYTRmNGFhODcxY2I0MzA1IGxlZ2FjeS10cnVuaworMTUyODEgMGMyOGM5Y2FiYmRhZWIwZmI5N2VkNjUyZGZiOTYwM2Y3YzM3ZjBkNiBsZWdhY3ktdHJ1bmsKKzE1MjgyIDAxOWVhZWY2MzdmZjVmOTljZTYxMmExZDlmODhkNGFkOTNjMjNlMjQgbGVnYWN5LXRydW5rCisxNTI4MyA0YWUxMjczMTJiYmZkNzg1ZWRiN2ZkMzE3OThlNGQ4ZjQwYmVmYWQxIGxlZ2FjeS10cnVuaworMTUyODQgYjQ3NmU0YThjODkxMWQyYzRlZWFiYWRjZjFkNzUxOWIzZGU0NDZiMiBsZWdhY3ktdHJ1bmsKKzE1Mjg1IDZmNzM4NDhiODQ1MjE5MTkzZjBlMGQyYmFlMGM1ZWIwYWQxOWI4NjkgbGVnYWN5LXRydW5rCisxNTI4NiA1YWU4NWJkYzVmNjE2NTBhNTRkZDgxZjgxYTNiMzgwNjIxYWMzMzNlIGxlZ2FjeS10cnVuaworMTUyODcgYzBhZGJjOWNhNTgxMzE4ZDY0NDI5ODZjZGMzMmFiNGU0NjYyNmQyMCBsZWdhY3ktdHJ1bmsKKzE1Mjg4IDU0MGQ5YmIxNjQzOWYwN2JhY2UwN2FmN2EzODYxNDQyYjYyZTVlNGMgbGVnYWN5LXRydW5rCisxNTI4OSBjMmJiNWU0YjA0YTg5ZDYzZjcwMjg0MzQyNGI2ZmMzNjYyNWQ1MmExIGxlZ2FjeS10cnVuaworMTUyOTAgODRjZDUyYjU2MGU1NzFlYmEzNzFkNzEzNmFiY2M5YzQyYzI3YjAwMiBsZWdhY3ktdHJ1bmsKKzE1MjkxIDgyY2JiMmRmZThiZGIyN2JlMTIzNzBiZGE4MzBjOTI3NTYwNDhkNDQgbGVnYWN5LXRydW5rCisxNTI5MiA1MjM1NjU2ZjlkMGYwZTIyZGNkMTEzYTUwODg3MWZiNjBjYTUyMDk0IGxlZ2FjeS10cnVuaworMTUyOTMgMTg5Mjk4YTFmYWI0YzIyMzI4NmZkZDI2ODc3OTMzZTExZTQxZTg5MCBsZWdhY3ktdHJ1bmsKKzE1Mjk0IDhhNTAzNjU0NDcyNzc4ODM1ZjFiNWZiMmZjZTcxMzA0MjNiYmIyZGIgbGVnYWN5LXRydW5rCisxNTI5NSBjYzA1ZWRjY2NmNTJiYTM3YWY1MmRlNDgwNjlmNjgyMzUyYzQwYWUyIGxlZ2FjeS10cnVuaworMTUyOTYgN2NjM2RkN2NkMzFhYzZhNWNmODI2ZmIwYmM4M2Q2ZGZmYzM5NmMyMSBsZWdhY3ktdHJ1bmsKKzE1Mjk3IDg1OWU1MDBmMDc2MDA0NjNkNTdkYmI5ZjY2ODdlNjEzNDlhNzY2ZjUgbGVnYWN5LXRydW5rCisxNTI5OCBkNzQ4NGE3NDMzNTQxYWE5NzhmMDQzNzI2YmM3OWY1MjE3ZGEyMDA5IGxlZ2FjeS10cnVuaworMTUyOTkgODFhMTIxZDIxMzQwODNmZGJiZjMyNmU2MTc0ZjEzNzk3YjM0YTA0ZiBsZWdhY3ktdHJ1bmsKKzE1MzAwIGMzNGJhM2UzY2ZjZDM4NTBkY2M0MTdlNmJiYTljN2I1NzI4OTk0NGMgbGVnYWN5LXRydW5rCisxNTMwMSA1OWVlMTcxMjQ1MTE1OWM5MThhZDI5ODY2NGU5N2Q4MWI0ZWEwZTQ3IGxlZ2FjeS10cnVuaworMTUzMDIgYzhkYmQ1ZjcwMjg4Yjg0OWM3ZTBhZjkzMzdlYzdhMDg0NjM2Yzc1MiBsZWdhY3ktdHJ1bmsKKzE1MzAzIDU5OWJmYTRmZmQ0OWMxNDU5NGJjYjU0NDIwYzBiNDMxZDE4YTc3NDUgbGVnYWN5LXRydW5rCisxNTMwNCA2YjY0N2UwODc5MjVhYjc3MzhkNDFkNTgxOGZiNDhiZDQ3YzdiMzg3IGxlZ2FjeS10cnVuaworMTUzMDUgNzY5ZWRiMmRhOGI5M2ZmN2EyMTRhODJhMDExYmEyNDA1YWYwYWYwNiBsZWdhY3ktdHJ1bmsKKzE1MzA2IDE3N2U2MWM1NTQyNmRiNDE2NjgyZjlhNjc4Y2I0NGFjNjE3ZWY2MTMgbGVnYWN5LXRydW5rCisxNTMwNyAzZTZlOGY3NmE5ODgzODM2MzhkYzg3NTg3YWU0YzhiMzEwOTRhZTZkIGxlZ2FjeS10cnVuaworMTUzMDggZWZkMWU1ZDIyODRhZjU0ZWEzM2YzMzgxZTAzYTYwNGJjOTg3MjVjZSBsZWdhY3ktdHJ1bmsKKzE1MzA5IGRjOWQxYjcxY2MzODBjNmY3ZWU1ODU3MmU1NDZlYjY4YTBhODI1ZGIgbGVnYWN5LXRydW5rCisxNTMxMCBiZWY2NzVkYzExY2MwYmMxODQ0NzJkZjY3MGY2ZmQ3Y2FjZTYzNGFkIGxlZ2FjeS10cnVuaworMTUzMTEgNjZlNDdlODVlYzUzYjVlYmE4N2IwMGE1ZWUxMGNlN2MxZTI1YmMzOCBsZWdhY3ktdHJ1bmsKKzE1MzEyIDEyYzc0YjEwMmQwMjdkN2RiMDZlM2EyYTAzMDM5ZDVjZWNjYjM2MTIgbGVnYWN5LXRydW5rCisxNTMxMyA4ZjdiMjRiNDBkZTczNjE3M2E0M2M0OTEzNGEwNTQxN2U2MzJlZTlhIGxlZ2FjeS10cnVuaworMTUzMTQgMDRjZjc4OGQ4NjJiZTA2YWE5ZmZmOGQ5ZjFmMmU1NDg4ZDkxZDcwOCBsZWdhY3ktdHJ1bmsKKzE1MzE1IDc4MzgwZGZiMmE5MDZkYWUyNmRkMGNiZDRlOWUxM2FhNzc5YTA5M2EgbGVnYWN5LXRydW5rCisxNTMxNiA5YTg0MWQ2ODQ1M2E3YzhkZWVmNTIxOWNkMzJhNjcwYjkwNGJhM2VlIGxlZ2FjeS10cnVuaworMTUzMTcgNGRmODQ2MmEyNTlkZWI4ODBmMmE3OGY0YzVlNDY3ZDhkMTE0ZTAxYiBsZWdhY3ktdHJ1bmsKKzE1MzE4IDNiOGQ5ZTYzZTRlMTU3YjcxNWU3OTY4YTg2ZmE0YmM0YzlkODcyOTQgbGVnYWN5LXRydW5rCisxNTMxOSAzOGQ1YTExZDljZDRiMDAwZWY2MWE0MTY3ZmE2Njc4NzNlYjhlODk2IGxlZ2FjeS10cnVuaworMTUzMjAgN2I4ZDBhNDdkYWE5N2I2NjYwMGQ5MjZmMmVhNzViYTY0YzdmNTI1ZSBsZWdhY3ktdHJ1bmsKKzE1MzIxIDdiMGUwYjU4NjdlMmQzOTY2MTAzM2JjYjc2MzU4MzM5Mjk0YmY5NmQgbGVnYWN5LXRydW5rCisxNTMyMiBiODdkNzU3OThkODE2YzMyYTE0Y2NlZmUxODBiZTYyOGZiZGU1YzRmIGxlZ2FjeS10cnVuaworMTUzMjMgYjBhNDM1MGQ1YzAzMTM3ODgzNDEyYWFlNGI0MjdmMWNmNTcxYjU0NyBsZWdhY3ktdHJ1bmsKKzE1MzI0IDUzOWExYTk5YTc4YjQ4MjM2ZjAwYzJkNjI4M2I2MWRlMjYwYWRhY2UgbGVnYWN5LXRydW5rCisxNTMyNSAxOWU2MWI4ZjRlMDA2Y2RmMmJmNjQ4YjU1MTVlY2U2ZWI5ZWQzOWIzIGxlZ2FjeS10cnVuaworMTUzMjYgMWJlMjMzMTU4OGIyMzhiM2Q4ZmQ4MDJjMmMzNjE0M2FmMTQ4NzhjMyBsZWdhY3ktdHJ1bmsKKzE1MzI3IDY2ZGQyOThlYWY4YTVkNGFhNWY4MmE2NjhhMmM4OGJjYWIyNWNlYjIgbGVnYWN5LXRydW5rCisxNTMyOCA5YTk3YTcxNGExYmUwMzAxZWZjNWE0OWJhYmJhZGFhYTI2ZTg1NzE2IGxlZ2FjeS10cnVuaworMTUzMjkgM2RiZTQxMzgwMjY2NjA4NDNhNmQ2YmVmNTRkY2QzOTlmMzkxNjE5ZSBsZWdhY3ktdHJ1bmsKKzE1MzMwIDhiY2QxNDMxM2MxMWNkYzkxNzY4YzE2NTAxZjdkY2JkNWEzYzA5ZDggbGVnYWN5LXRydW5rCisxNTMzMSAwZGYxOGY5NDcyNjc4YzZjMGMzMjRjODYwNzczYzhiYjM1M2MxNzY1IGxlZ2FjeS10cnVuaworMTUzMzIgNTk1MmVmNjc4NmMyMDA4MzNmY2MzYjFmYWE0YzcyOTE3MWEzOTIxOSBsZWdhY3ktdHJ1bmsKKzE1MzMzIGFlZTdjNDRiYjRmZTViZWZiZWRlN2E4ZjhhNDY3NjBmNGZlOTZmNTYgbGVnYWN5LXRydW5rCisxNTMzNCA4YmE4YjU4NTdlODk3NTZjOGFiNzFkZjczOGE3NWM4NTljNWU3ZjA3IGxlZ2FjeS10cnVuaworMTUzMzUgYWY4NmNmODgyZDBmZmMwZDYxYWUxMmNmNWVmN2VlYmVjNTcxMmNmYyB1bmxhYmVsZWQtMS45OC4yCisxNTMzNiAxYzdjMmRkMWJlYjFmODEwNmE3YWZhNjFkNGI4YmFiY2M4M2UxNzU3IGxlZ2FjeS10cnVuaworMTUzMzcgZGM3ODliM2UyYjliOThkODQ2MGYwMGUxZjFjOTE1YTQ1ZDIyMTFhNSB1bmxhYmVsZWQtMi4xMDguMgorMTUzMzggODVmMDBmOGNkNjc0YmJjNjM3YzE4MWZlNWFjNzVhODE3MGU1YWY0MSBsZWdhY3ktdHJ1bmsKKzE1MzM5IDA3NzQ1NmMzMjRiYzU5ODkwMTQ5MGJhMGE0NTE3NzAwNWU1YzEwZjkgbGVnYWN5LXRydW5rCisxNTM0MCA5NzgyNTM1NDIwNzYwY2JlZTk2MGI4NmMxM2YzOGFkMTdkOTlhNzlkIGxlZ2FjeS10cnVuaworMTUzNDEgZTBhMTIwOTVmYWMyZTEwOGRkN2RjMzQ2NjI4YjcwZWQwZjQ1ZmYzNCBsZWdhY3ktdHJ1bmsKKzE1MzQyIDZhYzNhMmMwMDQwZmNiMWRmYjRjODhkOTJlY2E4NmIzZTZkOWMwYTkgbGVnYWN5LXRydW5rCisxNTM0MyAwYmFiMWUzNmEzYTZjMjNmNzM2YTA5NTE5ODA5YWU5MTMyOTBkZWE5IGxlZ2FjeS10cnVuaworMTUzNDQgZGI5NDU4YzJiNjMxMDdmMzUwNTYxZGEyZmZmZGM3YjNkNWU4ZjE5YyBsZWdhY3ktdHJ1bmsKKzE1MzQ1IGNkZTRkYTE4YzRmYTA5YWFkODIxOWQ2NTk2ZjFiZmUzOTk3YjIwNzMgbGVnYWN5LXRydW5rCisxNTM0NiAwYjkxYzNiMzg0ZDhjYzM2ZWRkMzRhYTQzNjEzMjg4ZTNjZmQ2ZDg4IGxlZ2FjeS10cnVuaworMTUzNDcgNmNlMjFlNDVhOTZlZWJiODg5NWE4Mjg2ZmJhMTEzMmM0OGUyYWUzMyBsZWdhY3ktdHJ1bmsKKzE1MzQ4IDQ4NWQ1ZWFmMGY3NTcxMDZmMDQ2YjQyYzk3OGVhNzUyMGRhMDkwOWUgbGVnYWN5LXRydW5rCisxNTM0OSA1NDI3NGJlYjI0NGQxZDliMGM2ZTM0ZGYyNDNjOTczMjg0ZDNlMTc4IGxlZ2FjeS10cnVuaworMTUzNTAgMmNjNmU2ZGZlOWJiNzU2NWUzMTdiNWY2YjdjYWYxMTQ4NTc0ZTA0YyBsZWdhY3ktdHJ1bmsKKzE1MzUxIGNlZjQ1ZjFhNzk0MzA3OGNiMDRkYTVjOTcyZjM2NTY0ODNhMDI2MTQgbGVnYWN5LXRydW5rCisxNTM1MiBlNDQyNjYyYjI4ZTE4OTAwMTcxZWI5ZWMzNDczYzYwNTg5YzViYTIyIGxlZ2FjeS10cnVuaworMTUzNTMgNzZiMzM5OWIzNjRjZGQ2NjE0OThjODFmYjA5YWY4YWVjOWFiZDU0MiBsZWdhY3ktdHJ1bmsKKzE1MzU0IGVhZWU5MjRlZmIxOTJjZDk5NDBlMDE5NmE3YmZiYjU4ZmViYWVmMmMgbGVnYWN5LXRydW5rCisxNTM1NSA1MjhjZmU4Nzk2NjUyMDdhMWU0Y2U3ZDAyNWQ5MGE5MTMyMzgzN2M5IGxlZ2FjeS10cnVuaworMTUzNTYgMDVjMDY3MTU2NTdiY2M0ZTA5MjZhOGM1MmNlZGE3NTAzN2JlNGNkZSBsZWdhY3ktdHJ1bmsKKzE1MzU3IDU2NDIzYjkzODBmNGY3NmIzNmMwNmMyZDJkZjNmMmFjNTNjYjg0YTQgbGVnYWN5LXRydW5rCisxNTM1OCA2MjZjOTdhYjEyOGNmZTk5NzY4NmQ2M2U3YTEzZjkxNzhkYjc4MzQyIGxlZ2FjeS10cnVuaworMTUzNTkgOTJkMWRkYzFjNTdmZGI5ZTA2YzY0MGE3ZGQyZjJjZWExYzU2YmE5MCBsZWdhY3ktdHJ1bmsKKzE1MzYwIDY0NTVkOGZiNzg3NjFlNjk2N2Y5N2VlMGM3NjY3OWNlNDA1YTViNzIgbGVnYWN5LXRydW5rCisxNTM2MSBiNTcwZDRjZDY0MGFjMzhkZmViZjNlMzZhOWU5NjcwYWNmOGI1NTc1IGxlZ2FjeS10cnVuaworMTUzNjIgODJmMTc2YjcwNjdiN2NmMzJjNjZkOTJkOTdmMWM2YWUyMWE4OTYxNCBsZWdhY3ktdHJ1bmsKKzE1MzYzIGRkNjA3OGQyMGY3ZjgyZTA1YjliMTgzMWY3NmQ5YWEwMjM2YWY3N2YgbGVnYWN5LXRydW5rCisxNTM2NCAzNWNkYjNkMDNmZDM1MmM1MDBkZWQ1NWNjMDE3OWY5NDllNmYyNDE5IGxlZ2FjeS10cnVuaworMTUzNjUgYjVmN2FiMjcyMjM3OTUzMzRjOTk0MDMwMGYzNGRkMTQ2Yjg2YjQyYyBsZWdhY3ktdHJ1bmsKKzE1MzY2IGExMTEyOWNlZWNhNWRmNjllNDdjMWJiYzdiYWZkMGU3ZmY4OTg1NzggbGVnYWN5LXRydW5rCisxNTM2NyA1MTI1M2UwOGY3Njc4ODEwY2RkMTQwZDhhNjcxZTk1YzRiOGMyZjY0IGxlZ2FjeS10cnVuaworMTUzNjggYThhYjA5ZWY0OGI3YWY1NWY1NzU0NmU5NzU1MjUxOTA0OTQxYjA0MSBsZWdhY3ktdHJ1bmsKKzE1MzY5IDMyYmQ0YmFkMTA4YmE4Y2NjNGI0NmE3MjA5YWM5Y2QwODdjNTJjNWQgbGVnYWN5LXRydW5rCisxNTM3MCA3MWU0MjAyOTZlZjExMjdlZTU1MTUwNGIxZTRkN2IxNDJiNmYyMWI3IGxlZ2FjeS10cnVuaworMTUzNzEgYzE5NWZhMTU3NTQxYzYxY2ZmN2Q4M2RiNjEzOTc3Mjk2OTFlMjNkNiBsZWdhY3ktdHJ1bmsKKzE1MzcyIGIzMjBjZjNhOThiOTA2ZmRhZjdmNTdmMGE3NTZkNTAwMDFjOGZiMmYgbGVnYWN5LXRydW5rCisxNTM3MyA1NjQ4ZGY3NDM5NWY5YjQzN2JkOWZhYzI0YzkwMGY1NGEwOTY5OWFmIGxlZ2FjeS10cnVuaworMTUzNzQgODIyOGMzYWU5MTMwYWE4ODA4M2I0YzI2NjczNjcwZGMyMjM0ZjMwYiBsZWdhY3ktdHJ1bmsKKzE1Mzc1IDhkN2FkMzgxOGVhNmU3MzhjNWU5Y2U4NzA5YWNmNTdkYjJkMmU5NjAgbGVnYWN5LXRydW5rCisxNTM3NiA2NzIzM2RmMTMwMzczZTc3ZTE5MmEyYjY3M2ZiZWNjZTExZDU0NmQ3IGxlZ2FjeS10cnVuaworMTUzNzcgODFiYWJiYTViZDM0ZTk5YjMxMDNhMWM5Mjg3YjA0YTM5ODI1YTU4MiBsZWdhY3ktdHJ1bmsKKzE1Mzc4IGQ5Y2ZhMmU2Zjc4MjA4NTA3ODE2N2VkMDBhY2MxY2RlNWQzYmU5ZjEgbGVnYWN5LXRydW5rCisxNTM3OSBjYzQzNTBiMWI5MWZjOTUzNzIxN2E4YzQyYWI1ZDUxN2I4MjE0MWI4IGxlZ2FjeS10cnVuaworMTUzODAgZWI0OTE0MWQ2ZTEwZjA3NTQ0NjFlMzdmNmRkOGVjZDhmOTQ0NjViNCBsZWdhY3ktdHJ1bmsKKzE1MzgxIDllYTZhZThjZjA1Y2JlY2Y4OWIxODRjNzgwY2U5Y2FkMjU2YjdhYTIgbGVnYWN5LXRydW5rCisxNTM4MiA4YTgyZGRhZWJhNmFhMTQwYWMxNmZkNzNmM2QyY2FjYTBhZTRlNzc4IGxlZ2FjeS10cnVuaworMTUzODMgZjdmOWE3NDBlZDFjYjVkMjNiMmQ5NGExMTg5MjA4MjI1ZDkwMmU3NSBsZWdhY3ktdHJ1bmsKKzE1Mzg0IDlhNzcyNWVhNzhlYjBiMGE3MTE0MzYwZjcyNDU3MGZlZTU0MzM1YmIgbGVnYWN5LXRydW5rCisxNTM4NSA2ZTA3M2JhNTE0MTQyZDk5MDA3NTA5OTE0YWE0ZGE4YTkwYWRjNzViIGxlZ2FjeS10cnVuaworMTUzODYgMTExZGM5MTY4ZTQzNWMyYzJlN2ZhM2I0MTFkNTg0NzU3ZDczMjI2NiBsZWdhY3ktdHJ1bmsKKzE1Mzg3IGE2Yzg0MTNiM2M0ZmY1Mzg2YjU1ODdiMjg5NGJjYjQ0YjNkNzdjNTggbGVnYWN5LXRydW5rCisxNTM4OCA4N2Y1OTQ2YzU2ZjU2NmI1ZmMzNzIxYzk3ZTdmMDA4YWUzOGNkYWYwIGxlZ2FjeS10cnVuaworMTUzODkgZTdjOThhZjAyMDg0OTFkOWNjMWMzOGQyZDQyYjBkYWQ0NjRjYmUwZiBsZWdhY3ktdHJ1bmsKKzE1MzkwIDNlZmVhYTc1MjFlNDFiMmZhZGQ2OGRiMTgxMzkxZWExNDA5ZjU3YmMgbGVnYWN5LXRydW5rCisxNTM5MSA1N2Q0ZmM4MzA4ZTNmMTdjZjczMmIwNzI5NjYxZDk5ZWU0NDE1MzA1IGxlZ2FjeS10cnVuaworMTUzOTIgMTMyZTI3MTQ5ZjlmM2Q2NzhlMWNhZTEzZmY0NDQ0ZjA2ZDJhMDE3NiBsZWdhY3ktdHJ1bmsKKzE1MzkzIDM0ZDJiNTBlZmYyZWI5MzFkNTEzYjBjY2U4NGEwYjlkN2MxODNhMTAgbGVnYWN5LXRydW5rCisxNTM5NCBhNTY3MDdiMDdiODFkZDQ0MTdhNDYxZTQxNWViNGVhZTNiNWJjNDZiIGxlZ2FjeS10cnVuaworMTUzOTUgZGRmOTg2YTk3MWI1NjhhNDIyYjM1ZjRjNWJjYmNlODBhNzQ0OTFhMyBsZWdhY3ktdHJ1bmsKKzE1Mzk2IGJlYTNkNzcwYmUwYWM0ZWViMGU0NWFiM2EyOTIxYTZkNjBjYWU1YjIgbGVnYWN5LXRydW5rCisxNTM5NyA3NWRhOWQ2MzUzMWQzMjU3OTA0NDg2ZWM3YmRlNzZjNDE2MGVjNDQ5IGxlZ2FjeS10cnVuaworMTUzOTggNjk0ODFjZGU1MTFkODY1ZGY3MTlhYzBlNjY2MjBiZTFmYjE5MWE1OSBsZWdhY3ktdHJ1bmsKKzE1Mzk5IGRlZjk1OTM1MjQyMmQxOGQ3ZGIzZDYxOWJkMjhjZTE5OWU1OGJiYjQgbGVnYWN5LXRydW5rCisxNTQwMCA5MTdkODQ1ZTZlNWYyMWU0OTllNWU5N2E1NjI1OTkzYWNiYjU1MWNhIGxlZ2FjeS10cnVuaworMTU0MDEgM2YwNmY0NzY1YmE0MjFiMmZlNzg3NTQ1YmE0MmI1MWE2OWQwNWFjZCBsZWdhY3ktdHJ1bmsKKzE1NDAyIDAwNGJiMjBkYjExZTA4NjdlYzU0MDA5NzM2Y2VlNzA3YWJkODgzZjEgbGVnYWN5LXRydW5rCisxNTQwMyA5MWIyZWMyMDc2MzM0OWVmNDBlYTMxMjk4Y2ZhYzIxOWNiMTY5MjM5IGxlZ2FjeS10cnVuaworMTU0MDQgMDZmZjk2NmY2OWQ1MmYzYjAzNzA4NGQ0M2NhNWE5OWYwMzJiYzkzNCBsZWdhY3ktdHJ1bmsKKzE1NDA1IDAwYWE2M2Q2ZDI2ZWEwZDUwMDIxOTI3NTY4MzZmNWJmYjM1ZGQ3OWMgbGVnYWN5LXRydW5rCisxNTQwNiBjNGViNzBkMjRhODczZmNjNDNjZTVlMTkyM2YwZDUyMDRhNmNmM2MxIGxlZ2FjeS10cnVuaworMTU0MDcgMTdkMWEzZjFmMDg1ZDdhNjRlMzZmNTBiZDMwZjUzNGE0YTQ5MmY3MCBsZWdhY3ktdHJ1bmsKKzE1NDA4IDAzNWFiYjkzMDMxN2YzZGM4MGVkNDgzZjFiMjc3Mzg0NDg5NzNiMzQgbGVnYWN5LXRydW5rCisxNTQwOSAyYTUzZjVkYzA1OTBmZGQ4MGIwNmI5Y2NkMmMwYzczMzk1ODhlYTkwIGxlZ2FjeS10cnVuaworMTU0MTAgYzkyNjY4NzY2ZjVkZjliOWFlMzQzMjI3ZjAyZjdiNjIzZjk2MDY5MSBsZWdhY3ktdHJ1bmsKKzE1NDExIDFiMDgzZmVkOWE0OGYzYjRlNTVhODg0YzFkOTY0ODUwZTA5OWQwN2YgbGVnYWN5LXRydW5rCisxNTQxMiBmYWE5OGM4ZjNmNDIyNTI1OWY0MDQwNDliYTk3MWI4MWZlMmI4ZDc1IGxlZ2FjeS10cnVuaworMTU0MTMgODY2MzY1YjQ0ZjIzNzQ4NTdkNzkxZTZjMDY0Yzg3NjliNGE2ODZmMiBsZWdhY3ktdHJ1bmsKKzE1NDE0IDBhMzA4MWRlNTVhMTg1Nzg3ZGJjNDM2NThiZDYyOTM5NWJlNjgzMWEgbGVnYWN5LXRydW5rCisxNTQxNSA2YjE0M2NhNGZkN2YyMzRlMDQ3MmJkZjE0YzQ1ZDQ1MGI4N2RiMDczIGxlZ2FjeS10cnVuaworMTU0MTYgNGNjNzRiZjgwZTBiYzdmYjI4MjM3NTFiYjJiNGE1MzI1NzBkNmFjMiBsZWdhY3ktdHJ1bmsKKzE1NDE3IGY3YTg5OTY0N2NiM2ZiMGYwOWI5ZGMxNDA5NWIwM2JiNDZhNjEzMjYgbGVnYWN5LXRydW5rCisxNTQxOCA4MDViYjkwYWYxNGQ3MTBmNDNmMThmYTE1MDZiNWMxZjQzMzE0OTVhIGxlZ2FjeS10cnVuaworMTU0MTkgZTJlNDM2YTYyODk4MTkxMjIyOTFhMmRmNzdkYTVjMzNkZDdmZTM1OCBsZWdhY3ktdHJ1bmsKKzE1NDIwIGI2NTYzZDlkZjA2ZDA3MmUzMjI5MzQyZTdmMWUwNjE2ZDFmNjcyN2UgbGVnYWN5LXRydW5rCisxNTQyMSAwNTQ5MzNmYWY3N2ExMTdkZGYzNzQ0YmZiZjUwMDk5NDY2YTYwMjE0IGxlZ2FjeS10cnVuaworMTU0MjIgYjkxZmRjMjljNWJkMmMwYTM2ZDI0MmQzMmZjNGUyZmVjN2Q5YmE4NSBsZWdhY3ktdHJ1bmsKKzE1NDIzIGFhOWE2MzVhNmY0NzdhODc1OTliOWIyZDBiMzVhNDk1ZTY5NmU3NDUgbGVnYWN5LXRydW5rCisxNTQyNCAxZWE4Y2Y4ODVmN2JkOTMxYmY4YzU5ZGY2ODYxNmQ4NjEyMTdkMWZiIGxlZ2FjeS10cnVuaworMTU0MjUgYjc3ODkxZmE5M2IwZTQzZDAzNGNjN2MzOWQ5NTA1MjA5YWQ3YzM1YyBsZWdhY3ktdHJ1bmsKKzE1NDI2IDA1NzA5Nzc5NjEyMGI4NjNjZDg4ZGQ4YzY1MWY2YjgyOWQzMTQ2YWYgbGVnYWN5LXRydW5rCisxNTQyNyA0ZGY1MjM5OThlNWQ5NDk3NjNhMzI3NzI3NTI2OTVjZGRkMWE1YWQ2IGxlZ2FjeS10cnVuaworMTU0MjggN2QwMjU1YmVlMGY5OGE4MTNkYTU3MDkwZjkwOGEwZTczN2ZkNTA0YyBsZWdhY3ktdHJ1bmsKKzE1NDI5IDA2YTM0NmViM2NiZjAzYjA2NWZkMTFhMTQ0ZDc2ZmJkNTQxOGEyMjIgbGVnYWN5LXRydW5rCisxNTQzMCAyYTZkYzY1YzA2MGY1OGRkMzAxZWE4ZDk5OGMzYWE5YjhhZTdkYWJmIGxlZ2FjeS10cnVuaworMTU0MzEgMmZlYjk3OTBiNDA0NTZmZWM3MzY0Y2JhZGE5NjgzNTljNzcwZGE3ZSBsZWdhY3ktdHJ1bmsKKzE1NDMyIGEwMmU2YTQzY2ExNWIwOTkxZTE3YzU0YmIzY2FiNjhkODliNDk3ZjggbGVnYWN5LXRydW5rCisxNTQzMyA0N2JkYjYzNjE1OWM4MDVhMzU3ZTJlYjE4ZDBiMDE2MDkyNjA1ODBhIGxlZ2FjeS10cnVuaworMTU0MzQgNTY0Njc3MzMyMGJlYTZkYWQ2NGI1NTQ1MDgwNmEyNzU3NzgxYTkyYyBsZWdhY3ktdHJ1bmsKKzE1NDM1IDExNmZjNDMwNWEzOWIxMzJlZDJlZmY3Y2ZkZGFlYjQ1NTk0NmFiYTkgbGVnYWN5LXRydW5rCisxNTQzNiBkZTQzNWE1OWE0ZDUzNTU1ZDE1MWUwNDEwZjE1MDRlZDQ5MjczODJkIGxlZ2FjeS10cnVuaworMTU0MzcgMDdkYzNlZDE3ZGQ1ZDk1YjZlNGU2YWY1NjgzNWM1YzhmZGNhNWMzZiBsZWdhY3ktdHJ1bmsKKzE1NDM4IDIzNDA3NDU0NWViNGUxOTdhN2Y4ZGU4YjM1NjU0YjM1MmQ0NjZkYTMgbGVnYWN5LXRydW5rCisxNTQzOSA4NzVlNjc3MjM2YTcxODk4ODI2YmU5ODIwNDYzYzEyY2NlZmYwZDI0IGxlZ2FjeS10cnVuaworMTU0NDAgOGU4MWM2YzUyNGIyMDVhZDUxMzI1ZjVhNDZhNTJiYTJjMGQ5ZTU1YyBsZWdhY3ktdHJ1bmsKKzE1NDQxIGI4OWRhMjAyZDE4ZDc2OWMzYWE4M2Y2OTlhM2ZhMGYyOTg1YWQ0YzMgbGVnYWN5LXRydW5rCisxNTQ0MiBiZGFlNmI5MDkzNGY0NmRkNDY4YTNjMzA4OTQ5YmQ2YzMwNjczNzIxIGxlZ2FjeS10cnVuaworMTU0NDMgN2M4OWVlNDA3MzBmNDBlMzA1NDdmZjAzN2ZhNWQwMTFjZWNmZGEzOSBsZWdhY3ktdHJ1bmsKKzE1NDQ0IDJlMWIwNDgzYjEwMWIzMDc2NDgyY2Q3Y2Q0NTNmYzJjMDc0MzE4ZGIgbGVnYWN5LXRydW5rCisxNTQ0NSAzNGYwOTA2ZmU4MjM0ODQ2MTRkYjlmYjVhMTYyOWZiMzJiN2IyYmUxIGxlZ2FjeS10cnVuaworMTU0NDYgY2JmOWQ2N2I1ZmMxZjViMGEzNGU5YzRkZmFmNmYzOGE3MDIwOWIxYyBsZWdhY3ktdHJ1bmsKKzE1NDQ3IGJjOTZjOTEyZGNlOGNkNTllZTBjZDg0NmQ3ODU4OWZiMTZiNWIxMzkgbGVnYWN5LXRydW5rCisxNTQ0OCA2YmFkMTY3ODlmNzliNDUyNTMzZDI5MTc2MDdhZjkyMjg4ZjlhNzFmIGxlZ2FjeS10cnVuaworMTU0NDkgOWNiOTYwODYwNTI4ZjMzN2ZmZDQxNTNlN2M1ODUzNDhlOTY5NDc4NiBsZWdhY3ktdHJ1bmsKKzE1NDUwIDIwYjNiOTc2NWNlYzY2YmRhYTdjYTRiZDUyNDZkODI3YjYyNzI5MTMgbGVnYWN5LXRydW5rCisxNTQ1MSA3MjhjMTYwNTMzNjhhZWRjNjBhZDZkYjgzYTEwNGM0MGIzNTQxZmRhIGxlZ2FjeS10cnVuaworMTU0NTIgN2I0NjZhNzNjOTYxNjYzZThiOGMyNDdlODM5ODlmYWJiOTJkOGU4MCBsZWdhY3ktdHJ1bmsKKzE1NDUzIDQyMGY5YWFmODgwYmRlMzFkZTRkMTBjODhmMmExYjMwYTU5ODg5YzQgbGVnYWN5LXRydW5rCisxNTQ1NCAxZGVlOTNlYjllZTMyMTVhN2Y1ZmY2YWFkZDY3MTI4NTllNDU0OGQ1IGxlZ2FjeS10cnVuaworMTU0NTUgYTk0MjY5YmQ2NTg1OTE5NGFkNTFkYWU4MzQyNDhjMDA2MWFjNmU3OSBsZWdhY3ktdHJ1bmsKKzE1NDU2IGE0OGI2MGI2ZWI0ODM3ZGM2OGUzNjFmODdjMDM3NGY2NTA1M2VkNzYgbGVnYWN5LXRydW5rCisxNTQ1NyBhNDllNDUwNjg4ZTJlMGQ2ODA1M2RmMGQ5ZWRlYjFkZmQyMzA4NDJhIGxlZ2FjeS10cnVuaworMTU0NTggOTAyODAwZDhlOGJlMTE1ZTUyZTViMjRiYjE5MWNjZDcxMzBiODZhYSBsZWdhY3ktdHJ1bmsKKzE1NDU5IGViMTcxOGM1YTU2YzBkYmVhMDNmZWQ5MmNiY2UxY2Y0YmM2Njc3ZmMgbGVnYWN5LXRydW5rCisxNTQ2MCBlZTk3MmNhNjVjMWMyMzE0YWExYWY3OGQ0ZjA3MTgxNGEzZTQ5OTJkIGxlZ2FjeS10cnVuaworMTU0NjEgOTRlZGUwNGI5YTllZWFkZmEyNGMxNjhlZTNiMGE0YWVhYWU1OTgwNyBsZWdhY3ktdHJ1bmsKKzE1NDYyIDkwYzc5MDZiMDk5OWI1MWE3NWQ4ZGE1MWY3NTllYjMwODFiNjJlODggbGVnYWN5LXRydW5rCisxNTQ2MyA1OGFkNjE5NmQ4MWYyYjQ4OTk1NGUxNGYzZmFjNzJiZjFiNTlkOGI3IGxlZ2FjeS10cnVuaworMTU0NjQgZjU1NWZkODA1MDg1NWVhOGMxOTk4NGZkYmI3MzgyYTY3ZDJlZDlmNSBsZWdhY3ktdHJ1bmsKKzE1NDY1IDYwNTlhOTI3OWQ5OTk0YjA1ZGE2MGMyMmY1YWJiZjYwZjllMzlkOGYgbGVnYWN5LXRydW5rCisxNTQ2NiA3ZmY1YWUxMGE3NzFkN2M2ZDlmZDg4YjJkNTA5ZGY2YjJiNjFjYzcwIGxlZ2FjeS10cnVuaworMTU0NjcgMjk3NzVjMjg3MjM3OGY1NDM4ZGE3ZTRlOTVkOGRmMjlhOGNiMDkzMCBsZWdhY3ktdHJ1bmsKKzE1NDY4IDlhYmVmYzViMWQ4OWEyZmI2MzEyYjc0YjBjNmEwMjhiYjRiZDc1NjQgbGVnYWN5LXRydW5rCisxNTQ2OSAzNTMwNTk5MTcxOWI1MTdlMjlkZDVmMWE5YWExMjNlMDg4NmU3NTZmIGxlZ2FjeS10cnVuaworMTU0NzAgMWJmNzE0ZTBjMTBmNWFkYzZkMjUyYWNlYjE4ZmJmNzhjZGMzZjlhZiBsZWdhY3ktdHJ1bmsKKzE1NDcxIDk0MmNlMjIxMTI4YTI4MzAxNTUzMGY2OTM3N2Y1OGM0MzI5Y2NmMTkgbGVnYWN5LXRydW5rCisxNTQ3MiBiODE3ZjE2Mzk5MzljZmQ0NGYzOTZmNmViNmIwNGRkNThhYjUwMDkwIGxlZ2FjeS10cnVuaworMTU0NzMgYmU1NWY1ZGRjNjE1YmQyMTVjMTg0NmNmNTIxMjA4MmI4OGRlNWMzYiBsZWdhY3ktdHJ1bmsKKzE1NDc0IDdlZmJiNGU2YWZjYTgzMGRiMWZlOGRhZmQyNDkzODJjNmU5NWU4ZjggbGVnYWN5LXRydW5rCisxNTQ3NSA4ZGNhNTU4Njc5OThhNTkyY2YwOWMzZjM5NDY5ZDc5YmIwNGExMzkxIGxlZ2FjeS10cnVuaworMTU0NzYgNmFkOGNkMzRhZDhjOGYxYWNiMThmMmJmNTdhYmNkOTIzMDM1MzE5ZiBsZWdhY3ktdHJ1bmsKKzE1NDc3IGFlY2YzNWYwYzE2YmEzYzllOTM5YTIxMjMzNDVkZTNmZjU1MjVhYzggbGVnYWN5LXRydW5rCisxNTQ3OCAwYTZhZjU5ZWJmZmQ5M2FkNWI4OWIyZDAxNjY1MTIwZDk5NGIzMGM0IGxlZ2FjeS10cnVuaworMTU0NzkgNTNlNTRiZDRlNWY0YWNiMWJhZjU4ZTg0YTAyMzI1NDJmOTQ4MzE2MyBsZWdhY3ktdHJ1bmsKKzE1NDgwIGZmODFhNjVlMGE5YmIyMjA2N2ZjNmE1ZjRjM2NjZmEwODVkNGJkM2IgbGVnYWN5LXRydW5rCisxNTQ4MSAyZWE5OGQ5ZGM2Njk0NDlmNjkxN2JhOTdhZjkwM2NlZGZkZjU1NTI0IGxlZ2FjeS10cnVuaworMTU0ODIgYTU5OGFjZTAxOTQzOWM1MDMzOTVlOTU3OGU4MzA0NmY1MGM0YjllNyBsZWdhY3ktdHJ1bmsKKzE1NDgzIDA1MmFmYjc0OTUyZWNmZDMyOTgwZDFlNDgwYzE1YTk1MDdiM2M3NDEgbGVnYWN5LXRydW5rCisxNTQ4NCBkMDQwY2ViZDc0YWMyZjI1MzUyMDc5NGYzZjdkNjUzMmQwYWNlMjJkIGxlZ2FjeS10cnVuaworMTU0ODUgMmI0OTg4MzdjZDg1ODY4Njc3MWNjMjZhOTE4YzI1NTVjNjU0YTY0YiBsZWdhY3ktdHJ1bmsKKzE1NDg2IDQwZDZkMmZjOWNmZmY0Nzk3MjE1NmJkMWJkZjJlYWYzOGU4MjQ2NjIgbGVnYWN5LXRydW5rCisxNTQ4NyA1ZGQzYjM1YmZkNTIyZjhhMzBjOGY3Yzc4ODU0NjRiODNkNzExMzFlIGxlZ2FjeS10cnVuaworMTU0ODggY2UzZGUyOTQzNjJiOGE4NTJiYjEwNzE3YmJjNzU3OTUxZjQzZGM3NSBsZWdhY3ktdHJ1bmsKKzE1NDg5IDRmZDg0NTkyMmM0OWFlMGU0Y2U5MjBlODU1ZmQ3ZTNmYTc1ZGY2OGUgbGVnYWN5LXRydW5rCisxNTQ5MCAyNGFiODRkYzQyYWJmMDk4NDBhNmM0ZGUyY2FiMWQxNjRjY2JjYzk5IGxlZ2FjeS10cnVuaworMTU0OTEgMTQ3ZDBiNDE0NGVhMTdkZjBmODAzYzU0MTliMGRkZDNmMWQ0N2RkNSBsZWdhY3ktdHJ1bmsKKzE1NDkyIDQxMThmMDAyZTczNzczMmVkMDc3ZjFmYmRlN2I5ZmYxNzYyZjIyZjYgbGVnYWN5LXRydW5rCisxNTQ5MyA3OTU0ZmY5M2VlM2JjNjlmNzljOThjNGZkMzAxYWIwMWE5Njc5YjlmIGxlZ2FjeS10cnVuaworMTU0OTQgODEzODMyMjIwOThhM2Q5ZDQxOGZjMmJlZGU1Mzk1YWVmMGM5MjY0ZSBsZWdhY3ktdHJ1bmsKKzE1NDk1IGNhYjIyYmNiZjViNmRjNmEzZTk0ZTQ4YzljNWJmOGQwMTI1MjRkM2QgbGVnYWN5LXRydW5rCisxNTQ5NiBkMmQ4NjVkOTU4NjEyNjQzYjA5MGNiZTY1MTgwZjU0YzJhMjU3ZGM2IGxlZ2FjeS10cnVuaworMTU0OTcgZDI1NzNkYmY2ODUyNTQ0ODdkYzg3Yjg4N2VjZGU2YjcwZjc2NGUwOCBsZWdhY3ktdHJ1bmsKKzE1NDk4IDc3YTVhMTQ2OTViMzJhOWUxNzdhMjU0NzFlY2Q0ZDRlNGU3ZWQ5ZDggbGVnYWN5LXRydW5rCisxNTQ5OSAzZDI2Y2IzODA4YTdkMjIwZGRmN2NmMTI0YTc1ZDJmOTdjMzk2YTliIGxlZ2FjeS10cnVuaworMTU1MDAgMThiMDM1NjUwNWE1YTRhYzI2Nzc4NDhiZmI1NjRlN2ZmN2I0OTU4MSBsZWdhY3ktdHJ1bmsKKzE1NTAxIDg5ZjQyMDk5YzVkZDZmNDJmNDJlNDJmNGI2MGI5YzZmNGMyNTA3ZTMgbGVnYWN5LXRydW5rCisxNTUwMiBiNTBiZjdkMzk2MWY4N2U1NmEyOGFjYmUwZjU5ZDk5MGEyNmVjNzdhIGxlZ2FjeS10cnVuaworMTU1MDMgNTcwZmFjYjczZTM2NGY3NzcyNTVmNjJmZTk0ODk5MDE1ZGY2ZTMxMSBsZWdhY3ktdHJ1bmsKKzE1NTA0IGU4NzhhNjQ3ZTA2ZWFmOTFmYzRkODM0NDJkNWEwOTA3NDdmNGIyNjUgbGVnYWN5LXRydW5rCisxNTUwNSBlZWFmYWI4YzkyNWJlNjg0NGZmYjUzZDgwMWExZmRhODE1ODE3Y2QzIGxlZ2FjeS10cnVuaworMTU1MDYgZGFkMjA1ZDEzYmI1OWRiNjM0Mjc5MmRkMGE0MmJiMGMwMGQwYzI0OCBsZWdhY3ktdHJ1bmsKKzE1NTA3IDNjMzBmN2I1MTBkMzQxMzZmYTZhZDM3NmZkYTQ4YjU2ZjQ1ZDA4MDQgbGVnYWN5LXRydW5rCisxNTUwOCA2YzY4NDRhMmZhMzA0ZjAyMDMwZDU2ODEyOWI0ZDkyMjU5MTE2NDQ5IGxlZ2FjeS10cnVuaworMTU1MDkgZWI1NjJkZjBjZWJlMGVmZWZjZjBkZjYyMGJkODIwYzRjOGY2ZTNjNiBsZWdhY3ktdHJ1bmsKKzE1NTEwIGJjZTQ5YTZmYThiOWU1YmQyNmIyM2U0NTk3ZGQ4YzI2NDFkZmM1OGIgbGVnYWN5LXRydW5rCisxNTUxMSAyNDk3ZTFjOWViY2VlYTcxODhlMzg1YmJhOWE2NWM0M2M3NGUzNmQ3IGxlZ2FjeS10cnVuaworMTU1MTIgMmMyYjQwZWIzYTY1NDYzMTkwNzMxMTQwNzZkY2M1M2YyNTBmMWNhNCBsZWdhY3ktdHJ1bmsKKzE1NTEzIDdiNDkzMzRhNjM2OTZhY2M0YzgzZGQwN2RiOTFlNmMyNjFlYTU5YzcgbGVnYWN5LXRydW5rCisxNTUxNCA4NmVjNzVkYWMyNzJiYWZjN2U2YWRkOTk3MzlhY2NjMWNjY2ViMWY4IGxlZ2FjeS10cnVuaworMTU1MTUgNTIxM2FiZmU1MjMwYmViMDNmYzE5OTYwMTAxNzY1NzA0ODhhYmM0YyBsZWdhY3ktdHJ1bmsKKzE1NTE2IDg4OWYyY2IzZjcyYWFmODIwOTYzNTkxMmI2ZWY2N2NkZTI5ZTAyNTggbGVnYWN5LXRydW5rCisxNTUxNyBlY2RkYjJlZDRjNzU2YTc1Y2RiZGZmNGE3N2E1YWFiODUwZTc5OGYxIGxlZ2FjeS10cnVuaworMTU1MTggZjBkMjI1M2I2NjRmNThkM2NhNDk5YjJhMmU1NzM4OTFmNDcyMjZhZSBsZWdhY3ktdHJ1bmsKKzE1NTE5IDQwNmIwZTI0ZDYyZTczZjhhYjhiNGU1NmY1OWQxMzQ3MGFlNmIzMWEgbGVnYWN5LXRydW5rCisxNTUyMCAxZGUwMDE3ZTEyMjY3YjEwMTE5MzZmNTcxZjMwNmM4MGI3NzM3OTA5IGxlZ2FjeS10cnVuaworMTU1MjEgMGYxZTRlMzkzNWQ3YzQwMDM4YmY5ZDIwMDAwYzkzOTJjNGViZWQzMSBsZWdhY3ktdHJ1bmsKKzE1NTIyIGRhMDJhODkyZDYxMTg2NDU5NjY5NzEzNjk5YjdiZGYxM2UxOWMyMTQgbGVnYWN5LXRydW5rCisxNTUyMyA5ZTFiODA1MGRlNjNhNDVlYTRkMjA4M2M4YjEyN2YxMmM1ZWE4ZThiIGxlZ2FjeS10cnVuaworMTU1MjQgM2MxNDlkMzhhYmY5ZmM0ODlmOTQ3Zjk5NTQ5OGI2MzQ1NjJmYWViYSBsZWdhY3ktdHJ1bmsKKzE1NTI1IGM4YTlkMTc2NjQ2NWNlNWFmYmVlOWMwMDk5MWI3OTA4ZjZhYjBhNjYgbGVnYWN5LXRydW5rCisxNTUyNiBlMGVmNjIyZjhjMjNjZTk0ZWMyOWRiNTkwYzRjY2RiYTE5OTA5NzY5IGxlZ2FjeS10cnVuaworMTU1MjcgOTY3NzMyZGQzZjk1OWJhODZmMTZmZWQ4ZDljYjllNTllZDk2Nzc0MCBsZWdhY3ktdHJ1bmsKKzE1NTI4IDljYmNhZDJlODcyMzg0NTkxY2E5NmNmYTYzYjlhOWNkODVjYzIyMzcgbGVnYWN5LXRydW5rCisxNTUyOSBiNWFiNDczNjViYWQ2NThhYzIwYTNhOTFmYTdiOGViMTFhMWYxYTFhIGxlZ2FjeS10cnVuaworMTU1MzAgMjYzY2RmOWM4NDJlZTc0ZDQxYzUwNDlhNmY0ZGE5ZGIxNTdmNDM2MSBsZWdhY3ktdHJ1bmsKKzE1NTMxIGZiNDAzOWIxY2Y4ZDc1ZjEyYmQ1ZjlmODgwZWU5NjFhNzljYjRjMDUgbGVnYWN5LXRydW5rCisxNTUzMiA1MmM2YWMyZDE2YThjYWVlYjgwNzg2NjEyZThjYjI0NjYyOTljY2VmIGxlZ2FjeS10cnVuaworMTU1MzMgN2E0ZjY0MDJjNjdmODg3NWM2NmRmODAyNDk1OWMwYzY2MjQ2YmJjMyBsZWdhY3ktdHJ1bmsKKzE1NTM0IGIwNjk0YzFjMTI4N2Q4YjZkZjkzOWEzNTNkYTdiMWJhZGQyNTFiNDQgbGVnYWN5LXRydW5rCisxNTUzNSA0MGRiOTA5Y2UyZTMyYWFmNmE3NGU4MjliYWE2NTQwMjY2NDM0OWM2IGxlZ2FjeS10cnVuaworMTU1MzYgOGUyYjM1ZDM4NmFhY2FjNzZkNzk1NGNkNmNiYTNkZTIxNmJmODQ4NiBsZWdhY3ktdHJ1bmsKKzE1NTM3IDM0Mjk0N2YyZmI1MTQzMWQ4NGI3NDMzNDNhMjYwOTM4YjhiMWM4NDQgbGVnYWN5LXRydW5rCisxNTUzOCAzOGRhODY0YTBjODA2NmFjNWQyODQ5ZjE4ZWQ0OGE0ZTI1NGI0ZWYxIGxlZ2FjeS10cnVuaworMTU1MzkgMDI2M2E5OWQwZWIyODg4ZGM5YTk3Y2NkOGZhM2UzYjgxMTk5ZDVmYiBsZWdhY3ktdHJ1bmsKKzE1NTQwIDA1NzBkZTljODIwMmQ1YmUwNjNjZWZkMThmZjAwNjA5NWFiZjdiYTIgbGVnYWN5LXRydW5rCisxNTU0MSA5MzM1ZGFhOWRkZDNiMDM4NjI2MTRiMjFlM2RmMWZjMWEwYTFhYWUxIGxlZ2FjeS10cnVuaworMTU1NDIgOTM2ZWZkYzAxZDUyNDY5MGZlMjE4OGIyOTExM2FmZTgxZTYxZTNkMyBsZWdhY3ktdHJ1bmsKKzE1NTQzIDc3MWIzZTFhNzcxYzhmODc3NDM0MDU3ODc4MWEyMjFjMTZjYzU4NDEgbGVnYWN5LXRydW5rCisxNTU0NCBiOTFiMzVjMWQ0YzAwOGVkOGI5OWY5YTljMDcxOWViOTBlNWI2NjAxIGxlZ2FjeS10cnVuaworMTU1NDUgNTM5OGIxOGY4MzE5ZDFlNDRmZTU0MjZhNmRkYjczMWFjYmM1ZWYyOCBsZWdhY3ktdHJ1bmsKKzE1NTQ2IGY2ZTczMGY2NWJjZTYyZWJmOTVjODJhNTdhOTkyYmU2ZGIwMGUyN2UgbGVnYWN5LXRydW5rCisxNTU0NyBmNzY4ZDRkYWQ5YTYyYTM3ZWRjMGZjNzg4Nzg0ZDcyNjg5MTAwNGNlIGxlZ2FjeS10cnVuaworMTU1NDggNmY3ZGY5ODVhODBjNDdkNjBhM2JiNTNhZWU4OTk3YmE4YzE5YWY4OSBsZWdhY3ktdHJ1bmsKKzE1NTQ5IDgwMDRkMjljNzdiOGJkMjk2MjllMDdjNzhjNGMyMzExM2UyYTA0N2EgbGVnYWN5LXRydW5rCisxNTU1MCBmMGQwMzY4OWMxYWUwMDRmZjdlYzE2Mjk4M2E0Y2Y5ZmEwMDQ4MTYzIGxlZ2FjeS10cnVuaworMTU1NTEgZjhjMWM1YjdkYzlmNGI5NzM3MDQ2Y2I4NzQ2OTNhZWViN2FhZjIxMyBsZWdhY3ktdHJ1bmsKKzE1NTUyIDkzN2Y5ODU5YzlkZTFiNjk2ODhjNDRmNmE5NWY2ZTY3Y2I5NWM5YzUgbGVnYWN5LXRydW5rCisxNTU1MyA1Y2U0MmUwN2FmZDg1YWU5Y2Y3OGQ4NDc1NDU0NDE4MjIxZjQwMDc2IGxlZ2FjeS10cnVuaworMTU1NTQgNTM5NzQ0NTFlMzFmMTE2Njg4MjhkZTk2YWM4MDIzYzNiMGJlNDhlOSBsZWdhY3ktdHJ1bmsKKzE1NTU1IDA3NDgxOWFmZGM5NWFiMWQxNjMyNDMwZjc3MzI4NjMwMTVmMjUxMjYgbGVnYWN5LXRydW5rCisxNTU1NiBlZTExOTA1MWRmNzdmNDE1ZGFlYjViOTExMTg5NmRkMjJmODJiNDcxIGxlZ2FjeS10cnVuaworMTU1NTcgNWMwZWRiMzUxYzA3Mjc5MTg4NTQwYzQ4OGU0ZDkwNGFlNDlmNjM0MiBsZWdhY3ktdHJ1bmsKKzE1NTU4IDA5ZjcwZjkxYmRhZTJlOGY1YWM5YWUxYjJhZDc2ZGI0MGJkMWYwZjcgbGVnYWN5LXRydW5rCisxNTU1OSA4OGQwYjMzODNmZTI1NTY0MzllZTMwNjUwZjM3NmE0YzEwZGY4MThhIGxlZ2FjeS10cnVuaworMTU1NjAgZDgxYzk1ZGQ0MDM5ZGRhOGY1YWQ2OTY1MzFmYmNhYjA2OWMzN2MyNyBsZWdhY3ktdHJ1bmsKKzE1NTYxIDNhYWIwYzUxOTAwOTBhZjY5NjE1YWQ4Y2UzMTQ0NDE0ZTZmMDE1MWEgbGVnYWN5LXRydW5rCisxNTU2MiBlZWYyYjkxOGQwN2FjODY5MjRkYjBhZTUwMmNiYjhhMWE4NjFhZGU4IGxlZ2FjeS10cnVuaworMTU1NjMgMzNkZGMxMmRmMjY3ZDg0ZDEwODMxMjJmZDdjMGI4MTFjZGU1MDhmNyBsZWdhY3ktdHJ1bmsKKzE1NTY0IGY2ZDdlMzI4NjYwOTI2MTFkNDQzYTYyYzk3OTBhMzc2Nzg0N2QzNjEgbGVnYWN5LXRydW5rCisxNTU2NSAzYmU5MmNlZjE5MTc0NDk5NmZiMDBiZjc2ZmM5ODNmNWYyZTI0NjJlIGxlZ2FjeS10cnVuaworMTU1NjYgZTM2YmU3ZmI3NmNjYzdmYmFmODQwMmM0NjQ2MmZmMWUzMmY4ZjgwNCBsZWdhY3ktdHJ1bmsKKzE1NTY3IDU4M2RlZjhjZWRmNDMxMGRjMWQxNWU2Y2VjN2ExYmU5NGY1MjZiYzMgbGVnYWN5LXRydW5rCisxNTU2OCBiY2U1M2IxNDcyMWU5MTliYzk1MjFlZmMzNzg1ODMyMDIwNTk3MGE3IGxlZ2FjeS10cnVuaworMTU1NjkgYmMxZmU5NTYyMzk5ODNmMjJlZDM2ZmEzZGJhNmM2ZmQwN2QwNGMxZSBsZWdhY3ktdHJ1bmsKKzE1NTcwIDI1OGVlZDQ1NzBjZTg5MGMxMGY3MzQ3ZDVlMDZhOWNkNzNiOWFkOTcgbGVnYWN5LXRydW5rCisxNTU3MSA3MTFiMzI5NjA5MzQ3ZDVkMjcwNjgxZjk1NDNiYjYzODIyNmU1YjFhIGxlZ2FjeS10cnVuaworMTU1NzIgYjEyYWRhMmViMzEyYjA2ZDAzOWUxNDA3MTMyMTM5NzNjYzVkZmVjMCBsZWdhY3ktdHJ1bmsKKzE1NTczIDBjMjE3ZTVmMDU1Yjc2ZTQ5MGIxODIzZTQ2MTNhMDZjNGQzN2Q4M2YgbGVnYWN5LXRydW5rCisxNTU3NCBmMWY5YzMwYTQxNTY5NTc0OGI4ZDliNTQwNDM3MTU5MjUzMWZkMDFlIGxlZ2FjeS10cnVuaworMTU1NzUgYjFiMjYwYTJkZTk4N2U4Nzg1Mzk4MTc3NmEzZGRkZDI4NmFmMGIzZSBsZWdhY3ktdHJ1bmsKKzE1NTc2IGZmMGY3MjgxYmZiODRiYzI2NDQ0NDhmODJiODA0ZmMyNTA3YzExNzIgbGVnYWN5LXRydW5rCisxNTU3NyA0MjcyYjM2OGJmNjlmNmNlYWEzZmU3ZjliYjE4YmI1Yzg1NTZiZWJiIGxlZ2FjeS10cnVuaworMTU1NzggNWYxZjhkZGMyYTBjZGU0OWE4N2U5Mzc4ZWQyNTE5OTIzMjkxYTdiMyBsZWdhY3ktdHJ1bmsKKzE1NTc5IDY2Njc4MjMyNmQ0MmMwZGIzNWIwMTMxMmFlNjJiOTA2ZDJlNWM4MjggbGVnYWN5LXRydW5rCisxNTU4MCBhMjRkOWFkNjc4NmQ2NjM5MjY2MWFhMjU2ZDZjNThhYTQ4NDQyNmJmIGxlZ2FjeS10cnVuaworMTU1ODEgMzVlYTVkZTFlZTgzYWI1ZjU2NzljMjE3MjA1MGQ1OGY0ZjhhNGU0ZSBsZWdhY3ktdHJ1bmsKKzE1NTgyIGYyZGI2MDk0M2Q2YjgzMWI5NDJmZjA1NGRmNzY2MDEzNWIyOWEwMTAgbGVnYWN5LXRydW5rCisxNTU4MyA3MjNkZjBjODAxZDFkYzRhNWE1Zjc1ZjRlZGUyYWRlMTZiNmQ4YTVmIGxlZ2FjeS10cnVuaworMTU1ODQgMmM3YTQ3YzY0ZTMwNmU2Y2FhMmZkODI1YzhkNDAxMGU1MmU3ZGNmYyBsZWdhY3ktdHJ1bmsKKzE1NTg1IGI1MzE5ZjQyMjU5MTNmMDQwMTY3NTljMWYwMmVkM2E1Yjc4MzY2NDggbGVnYWN5LXRydW5rCisxNTU4NiBjOTI5OGVjNjM3YzVhNjEyZDc0OWQyOTk3OWY4NjE5MTgyNTQyNzM1IGxlZ2FjeS10cnVuaworMTU1ODcgN2QyYTAwNjNlMjZkZmZlYmUyZDI1M2EwMjI3OWVhYTAwMjA5YWQ0MSBsZWdhY3ktdHJ1bmsKKzE1NTg4IDA0Nzc0ZDYyMmVhMmRlMjE5YmU5YTg1YzI5MTk1NDkyZWE0NTNkNWUgbGVnYWN5LXRydW5rCisxNTU4OSA2MmFkMzU3MDhiOGM2Zjc3MDIyYzlkNGNmZDhkZTY1MDFjYzViYWYzIGxlZ2FjeS10cnVuaworMTU1OTAgYWYzOGE3YTdhZjEwYjc2YzNhYTg3NWQzMDJhM2Q5MjRhZmU4YThhNiBsZWdhY3ktdHJ1bmsKKzE1NTkxIDJmNjA2ODY3YWI0ZTdiMDYxNzlkZTMwNDllNjEzYzU5MjU3YmQ5YmEgbGVnYWN5LXRydW5rCisxNTU5MiAxZjUzMTIwOGJlMTE3M2I3ZGUwM2IwNDYyZWU1NzgxMzg5ZDE3YTIwIGxlZ2FjeS10cnVuaworMTU1OTMgYjkwZDYwMWQ0ZDU5M2E4MmY0ODdhYzhiZTUwMDEyOTMyNDRiOGMwNyBsZWdhY3ktdHJ1bmsKKzE1NTk0IDQxYzBjNjBkY2FmNWY1Mjk2YTYzNWNjZDVhMzgwOTA2NjY0MjNiYjkgbGVnYWN5LXRydW5rCisxNTU5NSBjMmEwZjJhODFmYThhOWI1YTljZTIzNWRlOTc1MTNhMDYzM2JkYTE3IGxlZ2FjeS10cnVuaworMTU1OTYgYmMzNTY0N2ZlNDcyOWMxYjM1NjVmYTUwODY4ZDNkOGU5ZGNiMzFiZCBsZWdhY3ktdHJ1bmsKKzE1NTk3IDNmZTMwNDA1MDQzNGUzYTAwNjZkNzk5ZDI1Y2EwYzk0OGE2NzZmYmMgbGVnYWN5LXRydW5rCisxNTU5OCA0ZTllYjg2NmFhYzZhNTgzNWQ3MWRlYmFjY2YyNTU3NGI4Nzc2ODMwIGxlZ2FjeS10cnVuaworMTU1OTkgMTYxNTU5ODlmYTkzMmE2MjE4MWRhNTBiOTFkZGI4ZDBlZTkwODViZCBsZWdhY3ktdHJ1bmsKKzE1NjAwIGI0YmEzMmJiNzU4YmVjM2M4OGQwODg4ZGQ0NGRkYmIzNzI4YzcyMWQgbGVnYWN5LXRydW5rCisxNTYwMSAzOTEyZmI2YzYzZjYxMzNkYmZiNDZhY2U1NmJhYzZmNWM1Yjg5YTc4IGxlZ2FjeS10cnVuaworMTU2MDIgNjQ1ZDU3ZWYxNjM5NTY3M2NmNjdlMWI1OGFkMjY4ZDgwNTJlZjY1YyBsZWdhY3ktdHJ1bmsKKzE1NjAzIDRlOWY3NzI0YWM1NTk1MDJjNTQwNzAxMDgzYjIwOWVkYjM2NTBiYzcgbGVnYWN5LXRydW5rCisxNTYwNCAwNDBjMTA5N2NkMzUyNDRlOTlmZTY4OGM0ZjQyODkzYmQ5ZjU4OWQxIGxlZ2FjeS10cnVuaworMTU2MDUgYWZkN2NiZTFjNDkyZjYzNTZmOWE3ZDI1YTVmMDVhNWYxNThkZGQzNCBsZWdhY3ktdHJ1bmsKKzE1NjA2IDIyOWZkM2E1YWZhMDgxZDRhMjRmN2FhNTg3Yjc3OGUwMjc3MGY4YWQgbGVnYWN5LXRydW5rCisxNTYwNyBiNThiOTAzM2M2NWE0MmVjMDI3MjY0NzQ3YTA1ZDIwNWUzZjM2ODZjIGxlZ2FjeS10cnVuaworMTU2MDggNDkxNmQ0MGQ5Njc3NmE5Yzg0NGM4MDNmOWExYjNlZWRjYWI3NzA5YSBsZWdhY3ktdHJ1bmsKKzE1NjA5IDA1N2FkODhhYWU5YTYzNTk3M2M4ODJmYTViODFjODFmZTk1NDQ5NGYgbGVnYWN5LXRydW5rCisxNTYxMCA1OTRjMjdjODcwYWRlZGZlZGZlNjNjNjIwYzI2MzQ3M2Q5ODAxYTI0IGxlZ2FjeS10cnVuaworMTU2MTEgYTkyYWRiNzgwZjQzZDkyZTQ1M2M0YzMxZDU0NGNiM2RiMjhhMGM4MyBsZWdhY3ktdHJ1bmsKKzE1NjEyIGU3ODdmNjY0MWFmYjhjOTBiOTgwZjdhNTU3YWY2OTNiNmU0Y2I4OTEgbGVnYWN5LXRydW5rCisxNTYxMyAyODkwOWU4MGYzNmNmNThkNmM3NDZhZjViNDRkN2NkOTVhODc1NzdmIGxlZ2FjeS10cnVuaworMTU2MTQgMjE1NTNiZDJlODc1ZjJjZDZjM2M3MWJlYWRhOWE2MzMwY2JlNzg2NiBsZWdhY3ktdHJ1bmsKKzE1NjE1IDYzZDM5MzU4ZGIwOTM0MmUwN2JmMTM0N2FmOTIwZTYzODc3ZTE4NjYgbGVnYWN5LXRydW5rCisxNTYxNiAwZmUwMjE2ZjZjNGU0YTEzZWIwNGU0NjI4NDcxMTQ5NmIyNjgyNGYxIGxlZ2FjeS10cnVuaworMTU2MTcgMGM4ODRjOGQxZTc1Y2RhMDQ3Zjc1YTZiN2EwOThjZmE1YWQ4NzdiMiBsZWdhY3ktdHJ1bmsKKzE1NjE4IDZhZTA0NmQ0Y2QwNDIwM2VhMmQ1YjAwOGIwYTFiMWY4MDBlNzcwNzggbGVnYWN5LXRydW5rCisxNTYxOSAxNGIxYjVkYjZjYjJkZWJiZTBkYmFlMTNiMWYyY2I2MDY1MGFjNGQ0IGxlZ2FjeS10cnVuaworMTU2MjAgMzc5Nzk3ZjNlZWIyMDYwNDQ1NTA3NzRlYjRkZWVmMGFmMmE5ODA5YiBsZWdhY3ktdHJ1bmsKKzE1NjIxIDQzMjNkNDg1NTA0N2I4YzcyNGI1NGQ5MjdkMjAyOGYzNGY2Zjg0ZjggbGVnYWN5LXRydW5rCisxNTYyMiAzOTcxZTZiMTRhMDk3NDk3ZDUxYjBiZGQzOWRlZjYwZDZlMGE5NDJhIGxlZ2FjeS10cnVuaworMTU2MjMgYWYwZGVmMDYzNjU4MDM2Y2VhYTgxY2NmNTA2ODhlOWYyNTc2YWEwMyBsZWdhY3ktdHJ1bmsKKzE1NjI0IGMwZmQ4OGYyYTY1YTkxNjRhYzgyOWU2YjljNGYxYTY0YTRlMDhlODIgbGVnYWN5LXRydW5rCisxNTYyNSAzMWQwOTg4ZGE4YTk3MzE0ZjYyNmYwZWUxOWZjMGQyNjNiYzUzOWZjIGxlZ2FjeS10cnVuaworMTU2MjYgZTU0NWEwYzQ0ZmUxNWNiMmYyZTMwZjUxZGNiMDNhY2VmMTc5NGRjZiBsZWdhY3ktdHJ1bmsKKzE1NjI3IDU0OGNjMTBkZjllYmFjODA4ZTViNjQwNThiMDFjYTdhZDEyM2UxNDcgbGVnYWN5LXRydW5rCisxNTYyOCBlMDQ2NDljM2NlZDAzZGIyMTM5MDY4ZjhjMWIyMDEyOTY4YjE1NDE5IGxlZ2FjeS10cnVuaworMTU2MjkgZjRiNDg3ZTM1MjE0MGNlNDFiY2M4MWQyODYyNDE3Y2FhODFjNGFkNCBsZWdhY3ktdHJ1bmsKKzE1NjMwIDg4ODcyNzkxOTk4YTBkYTE5NjA4MDMxN2MzZGRlY2IwYjFlYjYxOGQgbGVnYWN5LXRydW5rCisxNTYzMSA1MjdmN2UzYmI3NmQ3ZWE4NGVlZmIzYzZjZWM4MTlkYTJjZDcxODc5IGxlZ2FjeS10cnVuaworMTU2MzIgZGRhMWNhNTNlYThhMjYxOGU5NmNmMmMxZTc0N2RiMGIzMTZhNTEyYyBsZWdhY3ktdHJ1bmsKKzE1NjMzIGUwMjRlZDJkYjYyNWI4ZTNlOGQ2ZjU2OTliNzdiMmQ1YzMxMmZiZmQgbGVnYWN5LXRydW5rCisxNTYzNCBlZmM2ZDc3ODlkOWU2ZjczMzljYzIyYWQ0N2UwMzU1ZDM2YTlkZDA0IGxlZ2FjeS10cnVuaworMTU2MzUgZDk4YTc1NTczMjZhNGQ4MGVjOTA1YjY0NmFmY2RkZTVhYzkzNTQzNSBsZWdhY3ktdHJ1bmsKKzE1NjM2IGE4Y2UxOWMzMmRiOWE3Y2Y3YWFjMjM3OWZjNDUzY2U3YzA1N2ZiODAgbGVnYWN5LXRydW5rCisxNTYzNyAyNDM1OTNmMTFmY2Y2OGU2NzVmYmEzYTkzZmExMzVmODkyNjYyMTA4IGxlZ2FjeS10cnVuaworMTU2MzggNzgyMzFiYmU2MDVkYzJlYTdjZmE4M2FiNTU1NWViZjU2YjliYTA4MSBsZWdhY3ktdHJ1bmsKKzE1NjM5IDZkNzkxNDg4NWQ2M2YxYzM5YWY3OTYxMDJmMTgyYzY0NTA4OGQwOTYgbGVnYWN5LXRydW5rCisxNTY0MCAzMDFmZjE0YjJhMGVhNjFmYmMwZWNiOTIxZThmNTQzZWYzMWU1NDUzIGxlZ2FjeS10cnVuaworMTU2NDEgMjZlMjBhMjhkMDUxYzZjZWQ0Yjc0Y2EwN2JhZTg2MWNjZmEyODM4NyBsZWdhY3ktdHJ1bmsKKzE1NjQyIDY4ODlkZTI5YzU1ODRiMjhlYTlmMzA2MGYxMGIwZjlhNjBhMmJlZDIgbGVnYWN5LXRydW5rCisxNTY0MyAxMWU1YmY4ZWI0NzM2OWFmMGQ1ZWJjMzMwODQ5OTljMGQ2MWI2MzZlIGxlZ2FjeS10cnVuaworMTU2NDQgN2JhYmY5MWI2ZDc1YzY2NTAyYTU3ZTMwZDdlOGMyZWM5MjZjMDdhYiBsZWdhY3ktdHJ1bmsKKzE1NjQ1IDA5MmJhZjY5ZDZhZjg3ZDYwY2JiMzVlN2FkZDAwMDNiZWQ1YmZhNmUgbGVnYWN5LXRydW5rCisxNTY0NiA1YTBkMTU2YzQyMGFjNzEzYjAxMjVlMTFjNGE4OTZmYzI2Y2Q5NDNhIGxlZ2FjeS10cnVuaworMTU2NDcgMWFlMDM1YTMxY2I0ODM1ZDAxZTkzMjU2NGE2Mzg0MzI0OTBjZTRlYyBsZWdhY3ktdHJ1bmsKKzE1NjQ4IDExZDEwZTliNTA4ZDgwYjBhNDg0Y2YwOWRhYzUzY2FjODAxZTlhMWYgbGVnYWN5LXRydW5rCisxNTY0OSBiNTc1MmRlMGNmYTQ2NzM1NGQxMWY1MjQzNDYwYTcwMzdmYzVmNzJlIGxlZ2FjeS10cnVuaworMTU2NTAgZjU0YzM2NzdiYWU3ZDg2MWFjYjg3ZDAzY2NiMTNlNTRiMzM4Y2VhYSBsZWdhY3ktdHJ1bmsKKzE1NjUxIDE3ZjM1ZjY2ZWNkOGJjOTU0ZjcxMDk3ZGQxNTY1MjVjMjRkMzBkMzIgbGVnYWN5LXRydW5rCisxNTY1MiAwYzhiOWY5NmIyNmFjNzMwYmE3Y2MxMDNiZjM3NDA1MDgzMGY1ZWZiIGxlZ2FjeS10cnVuaworMTU2NTMgMGMyY2RkN2NmN2RjNmM2MjcyZWIwOWU0M2U4NjlmYzNiY2RmMjc3MyBsZWdhY3ktdHJ1bmsKKzE1NjU0IGZkNTg4MWUxNzQyN2IzZjZiYzI1NGMxNjIzMTZjNWVkZTA0MWYxNjcgbGVnYWN5LXRydW5rCisxNTY1NSA2MWY2YWNjNGFhNzQ4ZGQ0MGU4YzM4MThjNzJjNzExZDE0MDEwODIyIGxlZ2FjeS10cnVuaworMTU2NTYgZjBhOGYxMjczNDU2NGJjMmI2YjE5NDk5ZDg4MDRjOWMzYzBhNjUyZCBsZWdhY3ktdHJ1bmsKKzE1NjU3IGFkZWY5N2YzZmVhMGY1NDA3ZGUyNTIxYWU3YTM4NjcyZjU4Yzc4ZTggbGVnYWN5LXRydW5rCisxNTY1OCBlNDdiMWEwZDY0ODQ3OTc3MTExZDhjZTBjY2RhNzVkNDljMTM5NTRiIGxlZ2FjeS10cnVuaworMTU2NTkgZjMxZGNkMWFkOGM0MTE4NzliNjc5YjIxZDViMWVkMTRiMmIzYWE2ZSBsZWdhY3ktdHJ1bmsKKzE1NjYwIDlkZjkxZjkxZTVjYzlhNDQyNDAwYmI3NDk3MTBlZDUzYjk0NDQzOWUgbGVnYWN5LXRydW5rCisxNTY2MSBmODJiMTU3ZjQ1ZTI5YzEwNmI2NTZlMWRmYzIwYWE5MTE2NDlkYjc1IGxlZ2FjeS10cnVuaworMTU2NjIgZWZmMjQxMDY4NWNjNDYwZjc1MTg5YjRkNjgzZjA0MjA5ZWEyMzNkMyBsZWdhY3ktdHJ1bmsKKzE1NjYzIDk4ZWIzMDU5YWU3NjBiY2RmMTlkZTZkODMzNWNhY2JiMDk0NDA2YWIgbGVnYWN5LXRydW5rCisxNTY2NCA5ZWUxZTU5NDU3MWQ3MTU1ZDhlNWUzNjk2YzVlNzE4NTRhMTAxNzI5IGxlZ2FjeS10cnVuaworMTU2NjUgNzUyYWE4ZGZmNTIwYjk0ZWRjNTE2OWY2NGE4ZmZkNzcwYjNiNTYyZiBsZWdhY3ktdHJ1bmsKKzE1NjY2IDI1NDMxOTcyMjk0YjRmMzdjZDY3YzY4MDQ1OWQyNmMwNjdiMDI0Y2EgbGVnYWN5LXRydW5rCisxNTY2NyBmNjkxMDJjMWY0MTNmMWM2NmE0ZTM3ZDkwMDAyMDdmY2ZmNWFiYWJkIGxlZ2FjeS10cnVuaworMTU2NjggZGRlN2U5MWYyZjJlNWMzMTZkOGQ0MGJiYjk3OTFhM2I3Y2NmNDg5NyBsZWdhY3ktdHJ1bmsKKzE1NjY5IDFlNzg0Yjg3OTAzOTBlMzM2NjBjYmU5YjJhZjQ4MGRjMmU3YmE5OTcgbGVnYWN5LXRydW5rCisxNTY3MCBiZTM2ZjEwM2E5NTM5YzNkZGRkZGJmNTU5Zjc5MGFlMzc2MGRjMzFjIGxlZ2FjeS10cnVuaworMTU2NzEgNTEzOThmNzFkMzAxMjI3ODQzNjQ0MmZkNGVlZTE4NTkxMjUwMDUzOSBsZWdhY3ktdHJ1bmsKKzE1NjcyIDNjZWUwZDc1MTkxZTIzMWMwMzZmYmRlOTI5ZmIwZjIyZTg1ZmI4YjQgbGVnYWN5LXRydW5rCisxNTY3MyAzNDQ1MmI4ODNhNzFkNWY3MGI4ZDgxNjE4NjU2MGRlMWFhYzNjNDJhIGxlZ2FjeS10cnVuaworMTU2NzQgZTVhYWM5ZGZhY2Y4NzE1YmQ5MmQyYjRmZGQ3MmJmMjJhZDNhNTkyMSBsZWdhY3ktdHJ1bmsKKzE1Njc1IGM4ZTEzNTM1ZmRjMzE5YWIyMDcxN2E3NWJkMzRiN2Y1MzhmMDJkYzUgbGVnYWN5LXRydW5rCisxNTY3NiA1N2UyOTQ1NDM1YzkwMDQ5ZTY0ZjYwODExMmU3YWYxMTlkMzI3M2YxIGxlZ2FjeS10cnVuaworMTU2NzcgMDBmNWQwZGY3MGFkODBlMWQ4ZTdiYmRkZDQ4MmUwODY5MjIzN2Y3NCBsZWdhY3ktdHJ1bmsKKzE1Njc4IDJhMmNhYWVlNjc5NzNhOGRiZTExOWYyYmY5MWZjZGNkYTk2YzM0YWQgbGVnYWN5LXRydW5rCisxNTY3OSA4YTIzYWIwNTdhZjYxNzZjZTJiZTM3ZDQ4NTJiMWQ0NzhlZWZmNjM1IGxlZ2FjeS10cnVuaworMTU2ODAgMzFjNzI1ZDcwZTY1MjEyZDNiMTg3NTM1MzgxZGM0OTc5Yzc5YWI5ZSBsZWdhY3ktdHJ1bmsKKzE1NjgxIGRlYWYyNWRmMTVmZTI3ZTY0Y2I2NTFkY2YwZDBkNTIzMWEwYzUyNWQgbGVnYWN5LXRydW5rCisxNTY4MiAxMmQwYzQ2NWIxMDNjZmU5NDA4OWRmYzBjY2NmMWE1YmU5ZDgyZjZhIGxlZ2FjeS10cnVuaworMTU2ODMgYThhZmVmYzRmY2VkOTk0N2I2ZTc5NjA0NTAwMmRmYjcwYzU0ZDVlYSBsZWdhY3ktdHJ1bmsKKzE1Njg0IDFjYWFkZmI4Y2E3MTBiZDkxZDgxNDZlY2UyOWE0NjM4YTY4ZTUzY2QgbGVnYWN5LXRydW5rCisxNTY4NSAyZDBiOTk3NzhlZGYxYmE2Y2FiZTg0Y2UwNTU5NGQ3ZTZkYjc3NGVlIGxlZ2FjeS10cnVuaworMTU2ODYgMTI4ZTdiOTk0NTA1OWM2MDBiNWE2Y2FlMWU0YjA1MWZlNGY5NTRiYSBsZWdhY3ktdHJ1bmsKKzE1Njg3IGRmNjg2OWJlYmUwM2M1N2MzMTQ5NTA1ZjA2YzJkOWM5NWYyNzNhZjEgbGVnYWN5LXRydW5rCisxNTY4OCAxNWRmM2ZhMGZkNGQ3ZGE4ZTIyOGZjMGExMDM3ZDAwNjQ0ODRjZDExIGxlZ2FjeS10cnVuaworMTU2ODkgNTllNDk0YzA4MDJmYzkyNTZhNjVhZTZkNDY1ZjY5MjI0ODAwY2JkYyBsZWdhY3ktdHJ1bmsKKzE1NjkwIDJlZWY2MzZiYTFiNjJmNmUxMDBjNjJjMTgzMjI0YWJiMDUyZDhhYWUgbGVnYWN5LXRydW5rCisxNTY5MSA2NjE4MzI1NTc0Y2I5NTNlZjI3ZTRmZjE1MzRkMzY1NDU0ZTI4ZGRlIGxlZ2FjeS10cnVuaworMTU2OTIgMGFhM2Y4MGRiYjIzYWU1NmQ0MDI3NzdmZWE0ODNiY2JlOGZhYjM2NSBsZWdhY3ktdHJ1bmsKKzE1NjkzIDFmYTdjMTE5YjdhNTZmMjBhOTg4ZDViYWNiOGViYjg1YTNkZGQyNDEgbGVnYWN5LXRydW5rCisxNTY5NCBiNjYwZWNiZWFlYjhlMzJhZDg0MzhlZjYwYzI4YzhmNjg5Nzg1ZjA5IGxlZ2FjeS10cnVuaworMTU2OTUgNzUzZjkxNjNkZjBiYjNmMzc5MzE5NWIyYTljYTViZmQ4NjZhNTNiYSBsZWdhY3ktdHJ1bmsKKzE1Njk2IGE5ODAwOWE0MzkxZTc4NzkxNmYwNmE4ZmYwMGY5YmUwYmIyNzM1NDcgbGVnYWN5LXRydW5rCisxNTY5NyAzNDI3YjBmODVhN2NlNzFiYWI5Y2QyYTE2NjNjNWE5NzA0MTQ1YTcyIGxlZ2FjeS10cnVuaworMTU2OTggYWJiY2ViNmEyNTMyNGI1YjQ0YzUxYmZkNjFhNzU1ZWU3MWI2ZmRhMSBsZWdhY3ktdHJ1bmsKKzE1Njk5IDdhYjViMWVlZWJkZTkyODM5MzRmYTliYTY1ZjRjODIzZjJiOWI5N2QgbGVnYWN5LXRydW5rCisxNTcwMCA4ODAwNGYyNWRjMjVhYmJkYjM1MDdjZTBmNDBkZjFkNjU2NjgzNmIyIGxlZ2FjeS10cnVuaworMTU3MDEgM2Y3YTM1Nzk4YWNlYTEwOWI0ZTVlODQzNzA3ZGJmZTEyNWM0YzRhNyBsZWdhY3ktdHJ1bmsKKzE1NzAyIDhjOTU1NGVkYmViYmI0OGY0NmRlNjkxNTkzYTI0MjBiNGM2NzAxZDkgbGVnYWN5LXRydW5rCisxNTcwMyBhODUzMGQzNjAyMWM2YzgxZTU5OTY2NzJkNzFjZTU0MWQ2ZWNiYzczIGxlZ2FjeS10cnVuaworMTU3MDQgNDI5ZGQwMjI3MmQ2ODA3OTI2YjFhMjNkMmY3MWZmNjc1N2JkYWY4ZSBsZWdhY3ktdHJ1bmsKKzE1NzA1IGIxZWM0OWIyYzVjMmE5MDNiM2I5M2RmMTcyYzMzOTNhODJiNDIzN2QgbGVnYWN5LXRydW5rCisxNTcwNiA1ZDJmYjY3NDA4YTdjYzYzMjRiODlkMjExNjlhZDA1NWU5ZjA3Mjg3IGxlZ2FjeS10cnVuaworMTU3MDcgNzU1YzlhYzllNmFlYmI1ZjE0NjgxMzE3NmI1YjhmYjg3MTk4ODgzYiBsZWdhY3ktdHJ1bmsKKzE1NzA4IDZiMmVjZDE3MjIwM2I0YTExNzcyY2U1YWM5ODYyMjY5ZWE5MjNiYjkgbGVnYWN5LXRydW5rCisxNTcwOSBhY2IwMjYxYjY5NDJmM2JlN2IwYmEzNzRlZGIxZjAzOGJiOTIzMDU5IGxlZ2FjeS10cnVuaworMTU3MTAgMmE2NGYyMjVhMTA1MzFjMjRiNzU4Mjk5ZDljYmYyY2U4ZDAwMGI1NSBsZWdhY3ktdHJ1bmsKKzE1NzExIDg5NGVmZWE3MWFjZmVlMjVkNzBiZDRiZTYxZWYyOGJlYzkwZGZjZDEgbGVnYWN5LXRydW5rCisxNTcxMiA3ZjAyMmUyNjBhNGQ5MzM3NzA5MGFmMzRhMjQyMWZiMDdhNzhkNWNjIGxlZ2FjeS10cnVuaworMTU3MTMgNTE5NDlkZTc2MzY1YjFiNTQwYzk3NDhhYWIzZjM0YmI0YjlmNTdiMyBsZWdhY3ktdHJ1bmsKKzE1NzE0IGEzZTEyODgxY2MzYzIzZTM3M2QwYThlNzNjY2VmNmMxYzQ5OGU1MTggbGVnYWN5LXRydW5rCisxNTcxNSA0MzA5ODVkNTdkYTMxNmY1ZDM0YzkxYjYyMDJkMTM5YjFlOWQ4YjZkIGxlZ2FjeS10cnVuaworMTU3MTYgY2FhZTc1MDFkYmE1NTY4NTE1NGI5ZjgyZTE5YmQ0MjI4MzMyMjRhNCBsZWdhY3ktdHJ1bmsKKzE1NzE3IGRjMGEyMTJmYjM1MzkwZmRiZGI5MDliMjc1NjgzZmI4MTE3OTA2NDMgbGVnYWN5LXRydW5rCisxNTcxOCA5N2RkNmRjMzM1MDM2N2Y0ZTYxZDQzZWQ5NTFhN2UxNjQ0NmY3ZjhlIGxlZ2FjeS10cnVuaworMTU3MTkgM2M2NjQxYzgxMGRiYTJiNTc1NjRjOWNkMGQ4Y2E4ZTY5ZjViZGNlNCBsZWdhY3ktdHJ1bmsKKzE1NzIwIDI1MTNjZDc0MTQ3YzczODk0MWJiNTc2ZDkwMTM0MThiMjQwODAyYTEgbGVnYWN5LXRydW5rCisxNTcyMSA0NWFhYTc1ZjA4YTM3ODAyZmNkMDI4NzY0YWEyODRhNGVmMTY2ODU2IGxlZ2FjeS10cnVuaworMTU3MjIgZWI5MTFlY2E5ZWU5ZTgxOWMwMDAyOTUzNWMzMTkwNDI2NDMxMzYyNyBsZWdhY3ktdHJ1bmsKKzE1NzIzIGJhYzA0NWI4NTI2M2YzNTlmNGRlNjE0MTA0YjU1NWUzNTRhZjE3ZDggbGVnYWN5LXRydW5rCisxNTcyNCBhY2UxMzcwMWYzMzRkODdiZDk5MjQ2OTBiZWJiZjNjNTVmODMwMDEzIGxlZ2FjeS10cnVuaworMTU3MjUgOTM2NjFkMGViNWNjNTFkY2E1NjU1NjdhYTRhMWY5NGIzNzUyMThhNSBsZWdhY3ktdHJ1bmsKKzE1NzI2IDA0Yzg5ZDc3ZGZkYmY3ZDU1ZmRkNTZmMDIwNDMwMDM2OTU5YjRlNWYgbGVnYWN5LXRydW5rCisxNTcyNyA0NDdlZmI2NGM3MmRkY2IzYWQ1MTA4ZjVkNzk1MDczNTI1MjM2OWE2IGxlZ2FjeS10cnVuaworMTU3MjggZDExNWE5MWNhNWZhN2YzY2ZjOWU0NGUwNDFiZDg3NDY3YTRlN2JjNSBsZWdhY3ktdHJ1bmsKKzE1NzI5IGYzMWZmYjM3ZDcyY2Y3MzM2NDhiZjBjMzAzMTRkYmFjMTY1MzVlY2EgbGVnYWN5LXRydW5rCisxNTczMCBlNmI0MDdiYTQ3MTUzZWNiNmY0OWU3YzdlNzE3M2E3MzE0NWEzZmEzIGxlZ2FjeS10cnVuaworMTU3MzEgNjM0MzY3MTlkMTJlMDJiZDkzZDBkYTE4ZjJjYTlkNjY4ZTAxOTNjOCBsZWdhY3ktdHJ1bmsKKzE1NzMyIGJjMGQ0OTY4MGFhM2RmNmFhYzhiNGQwNDAxOTAxZTJkY2MxNjk5MmUgbGVnYWN5LXRydW5rCisxNTczMyBmYzc3ZTM0ZWYyNzQzZjgyOTU3YmRiMDIyNzIyYzFlZmJmMzYwNmRlIGxlZ2FjeS10cnVuaworMTU3MzQgMGI0MjI2NGFjMDIxNTQ0YmFmNmU0ODk3NzBkNWVhMDE2MDZjYzZhYiBsZWdhY3ktdHJ1bmsKKzE1NzM1IGU3OTkyZDBkNjgwODI4Y2MyNmQ2YTAwMDdlZjFhZTQ1OGM3ZWRkYWIgbGVnYWN5LXRydW5rCisxNTczNiBkZjYyN2U2MTkxNmUyMGExMDRlMWM5OTBmNWY3OTIyMjQ5YjMxZTRkIGxlZ2FjeS10cnVuaworMTU3MzcgZjc5M2M0N2M1MTBlMTM2NzMzNGI2N2UwNGNlMGFiNTBjOTEzOWNhNCBsZWdhY3ktdHJ1bmsKKzE1NzM4IGRiYjEwM2U5YTU2ZjUxM2Q4MGRmOWFmYWMzYmZhOTAyMjAxNjA2NmQgbGVnYWN5LXRydW5rCisxNTczOSA3N2M2NTExMzE5ODRiMmVlYjM3NzI3MjFmMmMwZTA3NThkYzczNjYzIGxlZ2FjeS10cnVuaworMTU3NDAgNDAwMzgyMTkwMzY0OTdjNDQ2NTlhYzllYjE4ZTM1Mjc5MzhlMzhkZiBsZWdhY3ktdHJ1bmsKKzE1NzQxIGRmYThkOWYxYzEyMzE4ZTk4YzJjZDQyMjAzMDhmZWZiZTE2OTcyNzMgbGVnYWN5LXRydW5rCisxNTc0MiA5NTY5YzU2MjU3NjU3ZTA2MWVmZmY4ZDYxNWU1ZTM4ZWFkMDRmYjFiIGxlZ2FjeS10cnVuaworMTU3NDMgODk2MDJmMzMyNDQ3YjRlZjMyYzFiODhhN2Q2ODkzMDRmM2NmNjZhNSBsZWdhY3ktdHJ1bmsKKzE1NzQ0IGI1NDQyOTllNjhjNWZhNzRmYTQ1N2NkYWJhMTUzZDA5ZTlkNTQ1ZTMgbGVnYWN5LXRydW5rCisxNTc0NSA1MzZjNjMxMjk5MzI5YjJiYzIyODU1YzBlOGI5MDJjYzYyZjZmZThiIGxlZ2FjeS10cnVuaworMTU3NDYgNTVlMmZjNGQzNDBlNDgyOTk3ZTQwZjBjM2VhZTA3YjAzMmQ2NTZmNCBsZWdhY3ktdHJ1bmsKKzE1NzQ3IDUyNzlhNmUwMGQzNjdiMDBmNTRhZjRlMDc5ZWY5Y2RlNTU0ZTJmZmUgbGVnYWN5LXRydW5rCisxNTc0OCA2NThjNTVjMDgxMzljY2Y2YjM5Mzg5MjEyZGRhNzdmMDI1MzBhZGJjIGxlZ2FjeS10cnVuaworMTU3NDkgMGViNTMxY2UwOGQxOGJjYTdlOGZmYzBlOTQ0ZmJlZjQyYjM1N2QxZCBsZWdhY3ktdHJ1bmsKKzE1NzUwIDI3MmRiNDYwNWJlNDdhZmE0NmVhMmM4OTU4Mzc5NzczOTQ4MWVkZTYgbGVnYWN5LXRydW5rCisxNTc1MSBlNjE1NTk2YzVjNDdjMDAxODQyMDcyY2VmZTYyMmU5OTZkYjljNGQ3IGxlZ2FjeS10cnVuaworMTU3NTIgMWE0MGYwMGE0OGJmNjQ5YTBiZmM2M2I1ZGNmMmM5ZTM5NjViY2YzMSBsZWdhY3ktdHJ1bmsKKzE1NzUzIDNmOTkwZWY2NjY2NzlkN2VlYmEzNmVjNmU3ODQyOWI0MmZhNjRjOGEgbGVnYWN5LXRydW5rCisxNTc1NCA4Zjc5YzViNjllMGFkYTNjN2MwNTM2NGFhODFiMjMyYTI4YTg4M2YyIGxlZ2FjeS10cnVuaworMTU3NTUgMDFjZTg5ZmM3NDVmZTFhZWRlN2Q2OTJhZjExMDQ2MjZiYjUzOTE4ZCBsZWdhY3ktdHJ1bmsKKzE1NzU2IGM5MTBiOWQ5YTBjMGU4NWUwYzIxZmQzNjk4YWQ0OWM0ZmRhZjRmOTUgbGVnYWN5LXRydW5rCisxNTc1NyBjNzU3MThmYmQ4NjI2ZThiZWVlYzY0Yzg3YWIyNDc0NDU4MTA4NDI5IGxlZ2FjeS10cnVuaworMTU3NTggMjdmM2ExOGZkMjk2NTdiNjVlMjAzNjI1MWVjNzdjNmUxZjJiNWFhMCBsZWdhY3ktdHJ1bmsKKzE1NzU5IDg2ZDQ5ODk0Njg2OGNmNWE2NzIwNmIyZjJlOTJmYzM5MDFmNDZmZWQgbGVnYWN5LXRydW5rCisxNTc2MCA3MTYwYjUyY2E3NGEwNmIxYjAwM2U1MmE2YjUwNDYyNDU5MGJlODVhIGxlZ2FjeS10cnVuaworMTU3NjEgYmMxNDdlMTg5YjdmOWI0NzkwM2ViYWJiZWI2Y2RhYjk2NWZjNDNhNCBsZWdhY3ktdHJ1bmsKKzE1NzYyIDdjZDE1MmUxNTM5YzVjYmM2OWE4ODA5MDc2ZjUyNmE5NmJkMGMyMGMgbGVnYWN5LXRydW5rCisxNTc2MyA1ZjM2MjZmZTU4Y2E4ZWQyYTEwOWNjZTA2NDQyMDk2ZWM0MzViZjI4IGxlZ2FjeS10cnVuaworMTU3NjQgNTc3MDdkYmNjMjQ1YzgxMTZiYTI1YzBkYzg3ZDQ3YTE1OTljZDhkNCBsZWdhY3ktdHJ1bmsKKzE1NzY1IDM3YmE3MDU2ZDRhYmZiNmRmMGY2NTI3NzAyN2NiODg0MzNkMzQ3MDAgbGVnYWN5LXRydW5rCisxNTc2NiA4MjE4MWU4MjBkZTNjODg4Y2NiZDg3Y2VjYWIxNDg4MmE0YzI2NjBmIGxlZ2FjeS10cnVuaworMTU3NjcgODcwMDM4NDJmYWVjYTZlZmMyOWJhYjIzNjAyOTI3YTljODE4MTU5NiBsZWdhY3ktdHJ1bmsKKzE1NzY4IDVkOGVmMjJhZGNhNTE0NjgzMzcxMGMxYzRmMzQ3OTIyZWU0ZDZiYjkgbGVnYWN5LXRydW5rCisxNTc2OSA2ZTE4NjFlMGVkNjg3NmJiZjcwMjdlZWI5ZGQ5MGY5ZmMyYzRkNTllIGxlZ2FjeS10cnVuaworMTU3NzAgN2IzODY3OGIzNjUyNjVlMmJiOGU4NTY4YzFlMGJlMzBhNGIyNGE3NiBsZWdhY3ktdHJ1bmsKKzE1NzcxIGZiYWNmNmQ1NWRjNjkzODMzNjA2MjE4ZDFhMjlmODA0ODUzYWJmNjMgbGVnYWN5LXRydW5rCisxNTc3MiAzNzQwMWVjMmU5MTBiMGNiYmVkN2M4NmQ0NDc4MDQ4ZjI3ZGFjMGFlIGxlZ2FjeS10cnVuaworMTU3NzMgOTA3NmVmYWM4NDIwYjc2MDgwNjE1ZGE4NjBiNDg5OTllYmNiODllZSBsZWdhY3ktdHJ1bmsKKzE1Nzc0IGRhZGIwY2M1YzJkMjg1ZWRlZDk4MmJjOThkNTE5Y2JkMjQ1MjFlMGQgbGVnYWN5LXRydW5rCisxNTc3NSA0ZjEzYzJiODMyMGJjM2FhMjkwOTVhNjlmMDAxZjA3ZTE5YjViNWVmIGxlZ2FjeS10cnVuaworMTU3NzYgYWZmZTEwYzNiOTJlY2UyMzBjYmJjMTBjMGRiZTYwM2Q3NGE5OTJlMiBsZWdhY3ktdHJ1bmsKKzE1Nzc3IDdhMjkyNThjNTVkZGFkZmZlM2Y2M2Y4YTE0OWE5N2E4ZDE1MWRhYjYgbGVnYWN5LXRydW5rCisxNTc3OCAzODNmNDA0Yjc2ZDdmYjE2MmIyNzA5ZjhiNGZlZWFlY2MyOWIzZDEwIGxlZ2FjeS10cnVuaworMTU3NzkgMmUyZWUxMTdkNDBmZDZiMTQ0MTFjZDUwZDZhMjAwNGQ3YzhjZDM0MyBsZWdhY3ktdHJ1bmsKKzE1NzgwIDRhM2U5ODcxYjQxYmJhMGI1NWQ4ZTI5YTY2YmMyMjg5YmQxY2MyN2YgbGVnYWN5LXRydW5rCisxNTc4MSAxZGFjODliYmJjZDIxNzMzZDZmMTMyZjJmYzVmMWFiMzViMDg3MDZjIGxlZ2FjeS10cnVuaworMTU3ODIgMzBhNGUxMzk1MjExMDM1YmJmZmYwZWMxYzRlZTdkNjY1M2E5OWU3ZiBsZWdhY3ktdHJ1bmsKKzE1NzgzIDg3ZWNlMTI3Y2JhMmQ2OWViYTkxZmI4MWZmMjU2YmRmN2ZhMjFhMTAgbGVnYWN5LXRydW5rCisxNTc4NCA0MTAyZjdlZGU4ZTk5OWNlMTAxYWVhNzk0MDg1M2VkZWQwNTczNTkyIGxlZ2FjeS10cnVuaworMTU3ODUgMjNlOGFhNDg1YTcwZDU2ZTJlMTU4YzFjZDdhMTFlYzIwMTYwMjE3NSBsZWdhY3ktdHJ1bmsKKzE1Nzg2IDU4NjYxYTU1N2RjNjkzNGRkNGViZDQ1MTQzNmJmNGZkOTQ0ZThhMzUgbGVnYWN5LXRydW5rCisxNTc4NyBjYTk2ZDhjZTEyZjNkZGUyN2YyOTIxN2NkOTVjNzZhMDEzMjc0ODgxIGxlZ2FjeS10cnVuaworMTU3ODggYmYyZWU4NTY3MjAxNTQ4Zjk0OTNkODZlNDcwOWNhYTMzYjlkNWQyNiBsZWdhY3ktdHJ1bmsKKzE1Nzg5IDk3NDgxZDdhYzU0OGFkNGNhOGNmYWFhY2NjMGE5MmY0MjQxZWNjMDEgbGVnYWN5LXRydW5rCisxNTc5MCA3MGIxNmRjNjEzN2YyNDkwMGRhNDU1MWZhNWY3YTI2Y2I1MmJhZGNiIGxlZ2FjeS10cnVuaworMTU3OTEgNWRmMDM0ODI2NzM1MmFkZDMzZTNhN2VlOThlYjI3YWMzY2U4OWZlMiBsZWdhY3ktdHJ1bmsKKzE1NzkyIDAwYTk4MTE5NGNhNjlmZjBmNGZhOTliNzc4MjI4ZDQyNGJhNWZmOGEgbGVnYWN5LXRydW5rCisxNTc5MyAxMjQwYmM5OTdjOGZiODY5NDM4MDk1ZTI2NjE4Y2Q3MjRhZTBkNDAxIGxlZ2FjeS10cnVuaworMTU3OTQgZjdhZDdlNzkxNWU5OWY1NzNiNDkwOWZmYWE0YmRjOTI0NTJjYjZmNiBsZWdhY3ktdHJ1bmsKKzE1Nzk1IGYxZTQwYWJiZWRiM2UzMWI1NjkwMDlmY2I2MzQ0MGMxNDdiOGRkYjMgbGVnYWN5LXRydW5rCisxNTc5NiAxZjYxZWY2NDUzZDU0ZjEwNDg3YzcyMTRjNDU4OTJhOTRlMzYxZWRjIGxlZ2FjeS10cnVuaworMTU3OTcgYzA5YTU3MGViNmViNWZmNzQwYWMwZDEyNWJiMjMwMTE5NzFmNzVkNSBsZWdhY3ktdHJ1bmsKKzE1Nzk4IDM2MDMyMGQyZmU5NDRkNjQ4ODBkYTgxYWM4MjRkM2MzZWZkZjJiOGQgbGVnYWN5LXRydW5rCisxNTc5OSBlYWE0YzZmYWYzYzRiMjNiZTlhYTI2NzhiYTMyNDJhNjQzYjhhYWE3IGxlZ2FjeS10cnVuaworMTU4MDAgMWM4YzEwMWYyYmUxZTMwZGRhNWE3NTEyZTU5NGRkOWFhNmMzOGRkYSBsZWdhY3ktdHJ1bmsKKzE1ODAxIDEyYWMyYzI2N2I5MzJlNWMzNjhkMmFiMjRjMTBhNmM0ODIwY2M5OTkgbGVnYWN5LXRydW5rCisxNTgwMiA4NGMyYTRkMmRmOWY0ZmYwN2VjYTM4ZWU5MTQxM2JkZWI2ZjVhOWM0IGxlZ2FjeS10cnVuaworMTU4MDMgMWYyNDQxOTc4YWIxNDAwNjM2ZTBmZjQwY2FlNzM5ODE0ZWRhMDY4MSBsZWdhY3ktdHJ1bmsKKzE1ODA0IDdkZjc0NTJkMTNjZDQzMzkyNDM1MjFjMzgzYmIyZWJlYTNhYjYxZWIgbGVnYWN5LXRydW5rCisxNTgwNSAwZDMwOWY3ZjAyM2ZjNGFlYzhiYWIzOTE0ZDFhMzhkYjRjNzFhNDQ0IGxlZ2FjeS10cnVuaworMTU4MDYgNzIwNThkYzdkNTQ1Yjc3ZTFkMTdmNjc2NWI0YjEwNjE1NmY3ODdiMyBsZWdhY3ktdHJ1bmsKKzE1ODA3IDAxZDFlMTAxODQ5NTBmMmE0MzgxZTc1NmUwZmZiMTJhNTNlZDZkOGUgbGVnYWN5LXRydW5rCisxNTgwOCBmNzM0NThjNWMzNWQwMWRkOTFjNzc5NDViY2I5NDhjMzc3NmY2NWUzIGxlZ2FjeS10cnVuaworMTU4MDkgNzAwOTg0MTA5Y2I5OWZlYmU4YmFhYzI4ZGQ2ZTgwNTcxNTYyNTgyNiBsZWdhY3ktdHJ1bmsKKzE1ODEwIDBiZTRiN2I2NTBlMzNkZGEwODI4OWQ3ZjZlYWJkMmM1NDQ3NDdhZGEgbGVnYWN5LXRydW5rCisxNTgxMSBhMTk1OTYyZTM4OWNiMmEzY2ExMjZkNWRmMGM3ZjM0OTNjZDc1ZTE3IGxlZ2FjeS10cnVuaworMTU4MTIgZjEzMzg0MTA1NTI4OWM3YmM2ZmNiZjU1ZTRmOGQwNDc2MjNlMTMwYyBsZWdhY3ktdHJ1bmsKKzE1ODEzIDRkYmUxMzAyN2NiMzE5Y2UxYzg5NTM4M2NkNzkwMTk5ZTFhZTYxZWEgbGVnYWN5LXRydW5rCisxNTgxNCBiMDA3NDQyMzc4NzcwZGZlZjc4YzdkMGM2Yzc0OGZjZWNkODdlOWIwIGxlZ2FjeS10cnVuaworMTU4MTUgMjc3YmE4MjZjZmM5N2ZmZWQyZmEyNWRlY2MwMDc5N2M3ZjFlNzIxMiBsZWdhY3ktdHJ1bmsKKzE1ODE2IGNiODEwOWU3Mjg3NzFjZjc1ZTE3MmQxNmViMjJiNDc5ZmMzM2E1OGUgbGVnYWN5LXRydW5rCisxNTgxNyA4YTA3NDAyZTIzZGVhZmM0ZWVjYTA4NTU0OWQ2YzVhZWE5Njk1NTI4IGxlZ2FjeS10cnVuaworMTU4MTggMmIyMWNjMWJiNTY0OTEyYWI5NjRiNzUyZDE5YWJhMGFhNzYzYjcwMCBsZWdhY3ktdHJ1bmsKKzE1ODE5IDUzZjQwMjJjMGNkNTg3Yzk3YWQ0N2ExNTgwM2E3MzFiNjY1MzJlMTcgbGVnYWN5LXRydW5rCisxNTgyMCBmNDAyMDU3NTYxYjNhMWM2YzQ1NzBmYzI3NjlhNDJiNjkyNmRlZDk0IGxlZ2FjeS10cnVuaworMTU4MjEgNGI0ODIxYmY1M2RjZjMxYjBlN2JkN2MzNGM1YmI4NDM2YmVlMTY5MyBsZWdhY3ktdHJ1bmsKKzE1ODIyIDliMmU3MGI1NWM3ZjE1ZjM0ZTcwMGI0ZjM2N2MxODE3MTgzNzEyMzMgbGVnYWN5LXRydW5rCisxNTgyMyBjYmRiMDU1ZTc5ZDkyNTAyNDcyZDZjMDIxODJlOTdjNjE5Y2QzODk0IGxlZ2FjeS10cnVuaworMTU4MjQgZWIyNDM0NDNiODg0MGU4MmZhYjdkMzIzODBjNDczNzFhZjJiMGNjYyBsZWdhY3ktdHJ1bmsKKzE1ODI1IGJkOGRiNzE0MjJmNjA4OWY2YmYwNjEwYzJkMjIxMzlkMjgxODE0MzEgbGVnYWN5LXRydW5rCisxNTgyNiA3YjI0YzgxOGUyY2YyZDMxOTdjOWQzZjk4YWU4MGJkN2RlMzY0NjRjIGxlZ2FjeS10cnVuaworMTU4MjcgNWJhYmMwYWRkNjRmMjc5YmZmMmYwMzZhYzc0MmE1MWMzODFiNGRiNCBsZWdhY3ktdHJ1bmsKKzE1ODI4IGE2NzliZGI0M2ZhZGM5MWVkNGUyZDc1OTE5ODEyYzE1ZGFiODJkMTAgbGVnYWN5LXRydW5rCisxNTgyOSA3MDUxMzI2NjdmN2JhMmNkN2JjNzIzODcyMjNiYzY4NDE0NjhjNThiIGxlZ2FjeS10cnVuaworMTU4MzAgYjc2ZGY2ODA5OWE1Zjc5NjMxYmY2ZDhkZWZhMWM1YjBmNGYxNmE5ZCBsZWdhY3ktdHJ1bmsKKzE1ODMxIDczOTJlNzFmNmNjZTAyNzJiYTcxMzkzMWJkOTAxMzY1ZjQ5OWIwODUgbGVnYWN5LXRydW5rCisxNTgzMiBjODc4ZGM2M2Q3YWVmYWJjYWZhNjZlNWE4NDA1ODJhNDljNzE4OGYzIGxlZ2FjeS10cnVuaworMTU4MzMgNmFiOGUxYmIxNjdjZDMzNzJmOGQ1ZWVjYmU5ZTZhYzUwYTdkMmIyMiBsZWdhY3ktdHJ1bmsKKzE1ODM0IGVmM2Q0OThhYTMzYzJlZTQ3MjI2ZjBkOTczMzcxMGM2YWM1Mjc2MTAgbGVnYWN5LXRydW5rCisxNTgzNSA0ZmYzY2UzZjNjYzYyMWU0YzU5MmIzNmI1ZmI5NmY3M2RhNTE0MzJkIGxlZ2FjeS10cnVuaworMTU4MzYgMmNmOTg3NGI2MjExNGZmZTg0NDc2MzVjMjU2OTc2MWM1ZjQ0YTliZiBsZWdhY3ktdHJ1bmsKKzE1ODM3IDVhNzA4MzY5MDg4NGI3Y2MxNTE0MDA4NDc0YjJiNzZkNDgwMTRmZTAgbGVnYWN5LXRydW5rCisxNTgzOCAwM2IxY2M0N2E4NmQwMTQyMjczMzYzZTE0MDkyODRmZmE0YjRmNzRlIGxlZ2FjeS10cnVuaworMTU4MzkgMWQwNDA3OTYwOTUzYTZkODAzMjRhZTM2Yjk5ZTIzMTBjOTljOTE4OCBsZWdhY3ktdHJ1bmsKKzE1ODQwIDE4NTAwM2QwOWU3NjZjODNiMmJmNjEyYmJkMTU5NzdjMzBmYThlZmEgbGVnYWN5LXRydW5rCisxNTg0MSA4N2I0NjZiNzAyZDYwODNkYmZiNDc5ODI0YmM5OTc0NWY4ZDg4NTZiIGxlZ2FjeS10cnVuaworMTU4NDIgMGFjZWMyMTFhMjA5MGZjODg0MzFhMzAwY2E1NzhlNzlhMTgwN2U5YiBsZWdhY3ktdHJ1bmsKKzE1ODQzIDZiMmM2OTYzYzQwYjY4ZjExZThiMzJkYzA1Nzg0Y2Q1M2Q3Yjc4OWMgbGVnYWN5LXRydW5rCisxNTg0NCBlMGM5MDMxMTJlNGVkNGY0Y2EwODcwMzFiMTVhY2UyMDExMDlhMjFhIGxlZ2FjeS10cnVuaworMTU4NDUgMDgxNzRiZjIzNzAyZmMwODc0OGNlMTFiOWYxNDlhZWQ5OTM0YjlmZiBsZWdhY3ktdHJ1bmsKKzE1ODQ2IDkyNDY4ZDQzYTIzZjAzNDg2NGUyYjMzNzU4N2Q4NjIwMzNiNjJhMmQgbGVnYWN5LXRydW5rCisxNTg0NyBkZTRlMzA5NjJmYWJhMDA2NTk4OWZlNTQ3NDQxNjllNjQwZWI2OGE3IGxlZ2FjeS10cnVuaworMTU4NDggMGYyMTZhNTRkMzRiNDkwM2UzZWU0YmNhNDMwNDk4OGFmYTYwMDRmZCBsZWdhY3ktdHJ1bmsKKzE1ODQ5IGE4ODM0ODhiOWRjYmYyOGFjZTI3NTBhOGYxMjBhNmEzYTFhN2EwZDMgbGVnYWN5LXRydW5rCisxNTg1MCBiZjFlYmU4Njk4NzgxY2Y2NTgwMjNhZmZjYjVjZTIzMjkyZGQ4Njc4IGxlZ2FjeS10cnVuaworMTU4NTEgZDA2MDEyOTY3ZWFhMjJlYzgyZjkzZGMzMTJiYTU1NmZkNmNkZmQzZiBsZWdhY3ktdHJ1bmsKKzE1ODUyIGI5YWIzYjJhY2M4Y2U0MGY3MDZmZWQxYThjMTY4MDU4MjNmNTI4ZDUgbGVnYWN5LXRydW5rCisxNTg1MyA1NTJmYjQzYWU4MjM3NzY0ZGJjMjkyZWFlYzM0ODYyNzU4ZDE2YWZiIGxlZ2FjeS10cnVuaworMTU4NTQgY2JlMDJiOGFlZTA3ODkwZmY4NzQ5Yjg1MTIwY2U4ZWM3ZDVhOTVkNyBsZWdhY3ktdHJ1bmsKKzE1ODU1IDA3YTRkMTYzN2UwNmRmOTNiMDA4NjQ5NTFlNzdiODU1MGJmOGVkYjggbGVnYWN5LXRydW5rCisxNTg1NiAyMjMwOWU5NTdmYTczZWUyZDc1OTE0MmE1ZDBkOTQ1NDczOGM1N2YyIGxlZ2FjeS10cnVuaworMTU4NTcgOGM4ZGU1YjczNmRjMjFmMGU0ZDQyNjAyZjQ3ZTJlNGExZjE5Y2Q1YSBsZWdhY3ktdHJ1bmsKKzE1ODU4IGQ4NDlhMGQyMjkyN2FkMzYyNTNjYzEwNmYyMDZiOTFlNmZlYjIxNWEgbGVnYWN5LXRydW5rCisxNTg1OSA3YmU1NDgyNDI2ZDFlZmM2MjFiZWIzMTI2NWFjZDYyYTg3MThhZDYzIGxlZ2FjeS10cnVuaworMTU4NjAgOTljZWUwYzg3ZjZhMDRmMDkxYzRjMDM4YzFmMTc0NTUxOTcyMDQ0YiBsZWdhY3ktdHJ1bmsKKzE1ODYxIDM2NTg0NGU3NTU4NjY5Mzk5ZWQwODFmYjZmZjNhYzMxMGQyZmE3YTggbGVnYWN5LXRydW5rCisxNTg2MiAzY2VhNzNhMmJiZDhjMTI2NjcwNDJlMjg2MjQ4MDk2Mjg5MzEyZDM3IGxlZ2FjeS10cnVuaworMTU4NjMgNDU5ZDE5N2FkYjA4ZmM2N2Q5MjAyODMzOTZlNDg2ZWI2Y2EzZjkyZiBsZWdhY3ktdHJ1bmsKKzE1ODY0IGU4MzllOGU4ZDNlOWMwYTEwNmQwZmYzZjBjODA2ZTc5OGIxOTQ1ZTQgbGVnYWN5LXRydW5rCisxNTg2NSA3OTdhY2YzZmZkMjY2NTczMWMxOGMxODkzNjUwYzFkNzFmZjI5NzVhIGxlZ2FjeS10cnVuaworMTU4NjYgZmQ4NDY3ZDEzNzVkMjA0YTU5OGRmZDQ5NmM0YTkyMzZkZmViYWFhNCBsZWdhY3ktdHJ1bmsKKzE1ODY3IGE2NzI1YWNkZjMzYjFiOThmNDBhOTMyNjA2NWUzMGFmZTc3N2Q3OGUgbGVnYWN5LXRydW5rCisxNTg2OCBmNjFiNGE5OGI5NzI5MmNkNmQ5NzM3NTBjZTZlNzE5ZmNhYmNjYmNmIGxlZ2FjeS10cnVuaworMTU4NjkgNjhlNTdjNWQxYmVjMDcyODc3YmUzMmIwZWM1MTI1OWQ1ZDM5NzM5NSBsZWdhY3ktdHJ1bmsKKzE1ODcwIGMzYTAxYjY0MmM5NzE4OWFkYTQzMmYwZTNlNmZjMGY0YjVhNzdjY2UgbGVnYWN5LXRydW5rCisxNTg3MSAzNDZmMmExYzAyYTBhMzRhMzcwZGFjZGU1MGNmNDcwZjNhZTVjNzQ2IGxlZ2FjeS10cnVuaworMTU4NzIgNTJkNWZiNDcxZTE3MjBmMDVmMWVjMTcwZjU1OTUxNWMyMTFhZmQ3ZCBsZWdhY3ktdHJ1bmsKKzE1ODczIGY4YmM3ZjYyZGMyM2FmZGNlNjA5ZDc3ZDRjMzRiN2VhNGVkNmNmYTIgbGVnYWN5LXRydW5rCisxNTg3NCA1YmQxMjczM2E2NGFjNDhiMjNiYTBmZmQ0NDBiMDdmNjkwNmY2MGEyIGxlZ2FjeS10cnVuaworMTU4NzUgOTBlYjU4MjI0ZTQzMTcyMzdmMmVjYzA5YmYyNGUxNGM1ZTgwMGJjZSBsZWdhY3ktdHJ1bmsKKzE1ODc2IDgxOTNlMDQ1Nzg3YmZmMDgxNmUyNDQ2ZGEzZGEyNTZjNWExYTIxNzAgbGVnYWN5LXRydW5rCisxNTg3NyA4OTQ2MTNiNGViMDc1YTg1MGZlMjUzNTA3ZGI2M2UwMmFlYTI3NzM1IGxlZ2FjeS10cnVuaworMTU4NzggMjZlYzFiMzBlZmE5M2ZkZjVkNGIzM2U4YjA2M2Y0NWIxYzk2OGZlZiBsZWdhY3ktdHJ1bmsKKzE1ODc5IDdmZjQwZGEwOGMyYTY0NjUwZWUzMjcyOGNlMmUwMGNlNGFjZDdmYmEgbGVnYWN5LXRydW5rCisxNTg4MCBmZDEyY2Q5OTYxNTQ0NDRmYmMxMTgwNDBhMzhhZmRiZTNiYWU1OWU1IGxlZ2FjeS10cnVuaworMTU4ODEgODk2YjM1OWQxYzdkNmQyNDIxZTM5ZmU0NGE1M2I3N2JmMTk0M2I0MyBsZWdhY3ktdHJ1bmsKKzE1ODgyIGZhZWZmZjQzZTU4YTk5YjJlNTMzOWE1NjM0MzM4YzY3YjNhMGQ4OTMgbGVnYWN5LXRydW5rCisxNTg4MyA1M2QwMGU3YzU4NDg0MzY3YjBiYzMxY2YwMTQ3MDJjYTk3M2FhMmQ3IGxlZ2FjeS10cnVuaworMTU4ODQgNDYyMTc1ODI3YTc0ZWViZjkwODA3NjMxN2M2YzBmYWI5M2U5ZDZlNiBsZWdhY3ktdHJ1bmsKKzE1ODg1IDUwMjFkYjY3NDAxOTMxZjZjZTQ5YzM4MGZlMDU1Y2U0ZmY5MGY4MDEgbGVnYWN5LXRydW5rCisxNTg4NiA0MjU1OGYxYmJmYzRkYzcxOTM1YTVhODJjZmI4ZWM5ZjdiMjc2YWQxIGxlZ2FjeS10cnVuaworMTU4ODcgNzhhZDRmNjRhZGM1ZjQxODI1ZWVkYjFhYzY0YWZjZjkzN2NjYWFiZSBsZWdhY3ktdHJ1bmsKKzE1ODg4IDA3MDQwZDU2MWYwOTEyNDM4ZjkwNzU3M2MyZDRhODU4YjIxOTk4MDcgbGVnYWN5LXRydW5rCisxNTg4OSBjYjkyOGQ5MjZmMjczZGI5MTRiNzhkNDk0YWFlZGM2YzZiMTVjNGZkIGxlZ2FjeS10cnVuaworMTU4OTAgZTA0MmM0YzM4NjA1NmE4NDM1YTgyYjU3OTFhMmQ2MTZlMTdlNGE0YiBsZWdhY3ktdHJ1bmsKKzE1ODkxIDdhNzg3MTUzNTcyNzFlN2Y3ZjgyNTk1Y2ZkMTU4YmExMWUwOTE4MzQgbGVnYWN5LXRydW5rCisxNTg5MiAwNWNjNDVkNTdhN2ZhMTYwYjNiYmVhMDc4MDE2YTQ2ZTdiNWU4ZGMyIGxlZ2FjeS10cnVuaworMTU4OTMgZWFjYTllMjVhMDQ4OTYwN2RkNTFhMWIyNWExN2Q4ZGFmZjJiN2M4MiBsZWdhY3ktdHJ1bmsKKzE1ODk0IDE1NjUxNDkwYWYzNDJmMDYyNTQ0OGIyM2IzN2NmYWQ3ODU3YTQzMTAgbGVnYWN5LXRydW5rCisxNTg5NSBmODI2NTI1NGQ4YTlmY2M1NzE4NzkyMTQxYmJjODZhYmFjOGE3MTM4IGxlZ2FjeS10cnVuaworMTU4OTYgYjMxZmZmNTk2MjJhM2RmMzdjYmM2ZDhkMTJhMzJlOGM3OTk4MTNhMiBsZWdhY3ktdHJ1bmsKKzE1ODk3IGI2ZWQ4ZmEyNjc1Yzc3ZDQxYjJjZTE2MTIyNGM2Zjg2N2RhYmU3ZWEgbGVnYWN5LXRydW5rCisxNTg5OCA3MmUzY2RiMzJhNmM2MTQ0N2E2MWRmNTYzZTNjNWYzN2Y2ZmEzM2NiIGxlZ2FjeS10cnVuaworMTU4OTkgNDA0MTU2MDkyZjc4MWI4OTdmNGFmNjU5Y2M5YjEwZTQ0ZWY1ZDRjMyBsZWdhY3ktdHJ1bmsKKzE1OTAwIGMyMjA3ZDZjMDNhODE4ZWY1M2Y1NWJkOTFjNjFjYTAwNDEyY2NkNDYgbGVnYWN5LXRydW5rCisxNTkwMSA3YzZiMTJjZWNlZjI2ZTMzOGU5YmUxNjkyNmFmNWEyZjI2NTM5MmFkIGxlZ2FjeS10cnVuaworMTU5MDIgY2NhODQ3NDVkYTNlMDBjYmY4M2E0ZjZjZTRkZWJiNWMzYjQ4YjFhNCBsZWdhY3ktdHJ1bmsKKzE1OTAzIGY4NmVhNWE2OWM1ZWFkYjgwNDBmYzE4ZjY3ZjUyOTg0MDg4MmMzNzggbGVnYWN5LXRydW5rCisxNTkwNCBmNWYwZjAwZjkyMmEzNmFhYWM4ZmEwNjkyYmZmNzhmMmM3ZWIyNjZhIGxlZ2FjeS10cnVuaworMTU5MDUgZmZhNGI0YjQzNzAzMWQzNGYwMTAwYWVmYjYzZTNkZmJkYTFhZGM2ZSBsZWdhY3ktdHJ1bmsKKzE1OTA2IDBhMTQ2M2JhMjkzNDg3ZDZlYTU2YzA4YjFiOWI2OWI2OWU3M2NmMTcgbGVnYWN5LXRydW5rCisxNTkwNyA3OTViMzI3YTk1ZmViZGFiYmZjOWJkZGFjMDIwMWE5MTNhZGFiYWY4IGxlZ2FjeS10cnVuaworMTU5MDggMmYzZTQxODY1ZDNkM2JmYmJjM2Y5YWIyZjkwMWUyNjYxMGFkOTNmYyBsZWdhY3ktdHJ1bmsKKzE1OTA5IDYwN2U1Mjg0MWRmMjc4ZmNlMmE0MTA3OTQxZWYyMWI1NjRlZDQ0ZjUgbGVnYWN5LXRydW5rCisxNTkxMCA2N2U3NzQ2NjE5ZGE3ZWQ3Y2I3NWNhYjYwMmM5NGFhNzNkMjVhODMyIGxlZ2FjeS10cnVuaworMTU5MTEgZjFmNGQ4MjJlNzYxZTdhY2VhOWZjZDI0NTI1NjUwOWI3OTFjY2IyMCBsZWdhY3ktdHJ1bmsKKzE1OTEyIDNmODA3M2M2MzAzM2MxNjNhNzk0MGU2M2I3OTc1ZjcyMmQ2MjNkYjEgbGVnYWN5LXRydW5rCisxNTkxMyAyYjcyYWFiYTc4OTUxMTE1NjRlYTczYWIxYTBkOGRlNjFhZjIzNmRlIGxlZ2FjeS10cnVuaworMTU5MTQgMzI4MTZjZTYwYTQ5YjA5YWRlOTc1OTE3MjllMjgwMzMxNmZmYzM3MiBsZWdhY3ktdHJ1bmsKKzE1OTE1IDM1N2I3MWM2OTMzYjg1MTNkMjViZjkxZWY5NGE3NTMwNDZmYzM4ZjcgbGVnYWN5LXRydW5rCisxNTkxNiA5OTE5ZDY1ZWRjNzZjYWZmYmQ2ZmMyODAwMGI2OGJmMjdmZTEwZWNhIGxlZ2FjeS10cnVuaworMTU5MTcgYzMzOWFjN2I2ZDRmMWUxMTJiOGJmZmU2MWY3YzUyZmI0Zjk4MWU2NSBsZWdhY3ktdHJ1bmsKKzE1OTE4IGZhM2RjMjFkMGUwODgwZTVjNDJkMGQ5NjI4NDE4NDg2MjE5NjJjZmMgbGVnYWN5LXRydW5rCisxNTkxOSAxYTQyYTlkMTAzNTdlMTQ2YWZhZGRlN2I0MjEwYTY3MGM4MDdlMTEwIGxlZ2FjeS10cnVuaworMTU5MjAgNTMzNTVlZDYxMjg4OTI4MTg3Yzg1Y2I3ZTYxYzc0ZjJjMmNjMGM1NSBsZWdhY3ktdHJ1bmsKKzE1OTIxIDEzOWVhZjJmOTZhYjY3MjFlMzJhMThiYzI0ZGViZDc2MWY1MDRhMDUgbGVnYWN5LXRydW5rCisxNTkyMiBjY2UyYzdhMzhiZDU2ZGUxMjY2MzQ5NzgxMWM5ZjU2NDFkYTZlY2Q0IGxlZ2FjeS10cnVuaworMTU5MjMgYzM2MDgwNmMwNmM3NjMyNjFhYzVkZGQ4MjQxNmI0ZTg4YjQzNTg5OCBsZWdhY3ktdHJ1bmsKKzE1OTI0IGEwOWU4NjM1NTM0ZGUxMmI0MmUxNzkyNjgyYTEyOWY0YTVkMzY1OWQgbGVnYWN5LXRydW5rCisxNTkyNSA2ZmFhNDExYzYxZmI0YWVkZjMxMDJhMjIzNTA1YmY5ZmViYzdkMGM4IGxlZ2FjeS10cnVuaworMTU5MjYgYzliMWYxOTg2YzQwMjk0OGQ3MjI3ZDhiM2M4MmU0YWMzMWEwNDcyZSBsZWdhY3ktdHJ1bmsKKzE1OTI3IDAyM2EyMDE4Yjk2ZGViYTg0Zjk3Nzc3MjAyMWVkMTUwM2NiMjk3MDEgbGVnYWN5LXRydW5rCisxNTkyOCBmNzI5NDI0NmQwNGY4ZDRjNTZkNjZhMTAzMWNhOTY0OGUzNDA1Y2IwIGxlZ2FjeS10cnVuaworMTU5MjkgNWY2ZjA4ODY5MDVjZDMzMTg1MDBlZWViMTYxNTA0MjExYjAyMDg0MSBsZWdhY3ktdHJ1bmsKKzE1OTMwIGI3OGI5OTZlOGViYzJiMDYzMjFjZmFiZjE5NzNjNmE1ZTlmNDkxMDAgbGVnYWN5LXRydW5rCisxNTkzMSAyMDgzNDZlOTI0Y2IwMjkwYWQ0MDcxNzk1YjI2NDE3MDU2YWVhNTEwIGxlZ2FjeS10cnVuaworMTU5MzIgYzE3ZmQyY2E2NjU5YzAxNDhhOGI2OGI1ZWViNGRhZTU0MjMyMDIzMiBsZWdhY3ktdHJ1bmsKKzE1OTMzIDA1ZTQ1YzVmMmRlNWI3Y2VmZDY4MGQ4ZjE2YjdkMDQ3NDYyN2E2ZmIgbGVnYWN5LXRydW5rCisxNTkzNCAwMDIxZjNjMGIyMzgwMzIzOGVjYzU0MjI3YTljOTllNTBiZTljOTE2IGxlZ2FjeS10cnVuaworMTU5MzUgOWQ5ZTVhN2MxMmRhYmQzOTE5OGQ3NzRiNGM4MzBmMzNkMWRkNWQ3MiBsZWdhY3ktdHJ1bmsKKzE1OTM3IGQzN2MwMjdlM2ZhZTk3YmQ4YzUwYjY5NmU4OTA3ZjVmYTFiNTA2NGMgbGVnYWN5LXRydW5rCisxNTkzOCAyOGE4YmI3OTRmMTlkNThjODIyMmFiYjk1NzIwZjUzMDRhNDkzZmJlIGxlZ2FjeS10cnVuaworMTU5MzkgN2E5NmVjMDEwMzMzZGM4MjYxMjE5Nzg3ZDI4OWJlNDQyYWM3YWE0MiBsZWdhY3ktdHJ1bmsKKzE1OTQwIGQzNzM3NDU1MmExNWY5YjZkYzJmOGM0ZDA3NWM3ZTFiNGFkZjY0MmEgbGVnYWN5LXRydW5rCisxNTk0MSA5MTVkOTg1OTE4ZTIxZDNhOWNkYmQ3ZDczY2NmZDk3ZjYxNDAzNDI2IGxlZ2FjeS10cnVuaworMTU5NDIgZWYxMzI0MmRlNDMzZTc0ZDBjMjc3ZGUyOTg0ZWE1OTZhZTM3NjY0NCBsZWdhY3ktdHJ1bmsKKzE1OTQzIDZmNDY2OTgxNDg4NGEzMTA2OGViMDg1M2QxMmY5NTQ0OWFiODMzZTQgbGVnYWN5LXRydW5rCisxNTk0NCAxZTMwMmQ5OTZkNThkOGNiNGE5OTAxYjM5OTlkMzJiMGM5YzVmMmU1IGxlZ2FjeS10cnVuaworMTU5NDUgNTRiZmZkZGRjMGVmMDgzMTVkNjUwZTlhZjJlYzk4NDMwNDU0ZWFkZSBsZWdhY3ktdHJ1bmsKKzE1OTQ2IGVmZWNiYmY3Mjc2NTNkNzdhNjJhYzgwNzZjOTJhNjdjYWRhYWI0NmQgbGVnYWN5LXRydW5rCisxNTk0NyBlOWMzNGNjYTBjOTY4NjI0MzU1MmU2ZDdjMGFmNmY0NDc5ODM4ODgzIGxlZ2FjeS10cnVuaworMTU5NDggYzQ1YmMyNThmODMzYzEyOTBhNmUwOTY1ZWJiM2FjZmUyZWY4NDQ4MiBsZWdhY3ktdHJ1bmsKKzE1OTQ5IDU5Mjk0ZGQ0YmZkZGYxZTE0MjgzNzE2OGJkYjY3NjA2ZmE4ZTJlZjcgbGVnYWN5LXRydW5rCisxNTk1MCA5MmJhOTI4YzA5YjhiOGNjMWE3NjIxMTM1NDRiN2RkMjExMWU5MjE2IGxlZ2FjeS10cnVuaworMTU5NTEgN2UyNDViYzU5OGI3YmMzNzE4M2E1NWE2OWUzMzUxZGIyYzA1MDE5OSBsZWdhY3ktdHJ1bmsKKzE1OTUyIGM3YmU4NDc4MjZiMTcyNDEwZjJkMGU2YTkxZmJjNDk2NGRhYzIwYjYgbGVnYWN5LXRydW5rCisxNTk1MyA3ZTcxOTc1ZWE1ZjA5MGZmZmMxNDNlOTE3N2NmNDk0ZGY1NGI5NDI2IGxlZ2FjeS10cnVuaworMTU5NTQgMzEyOGMzY2QxOGU4NmNlYTQ1ZjIyMDVmZjE3NDJjYzIzYjMxYmZkYyBsZWdhY3ktdHJ1bmsKKzE1OTU1IDU0MWRiNWY2MjU5ZTk2YWMzNGM3M2NkOWIwYjc5Nzk1ZDQyOTM3ODAgbGVnYWN5LXRydW5rCisxNTk1NiA3NTNhZjYyYWI4YTE5YmY5YWViMzM2OGUyNDRhYmIyNTE3NWExMTJlIGxlZ2FjeS10cnVuaworMTU5NTcgOTYxNjdhZjkwZmEwMzExNGYxOThlMzJkY2I3NmViMDE0MWEyZWZmNCBsZWdhY3ktdHJ1bmsKKzE1OTU4IDE4OTIwZWFhMTIyNjRhN2FmYThkNzRhYmI5MzQwYjViZGRmZjFmMDEgbGVnYWN5LXRydW5rCisxNTk1OSBlZGUxOGZkNWVkMTVhZThkNmZlZmFmNTJhM2Y0YTYzMDE3MjE3MWYxIGxlZ2FjeS10cnVuaworMTU5NjAgNGRlZWVkNThiZjc2NGNkNTY3YjQ4NWRjY2RhYzllNmMwZGVlMjg2ZCBsZWdhY3ktdHJ1bmsKKzE1OTYxIGM1Mjc5YzBmNzE2ZjA1YjI3ZWMwZmMwMmQ2ZmFiOGYzODI3MzE5NzUgbGVnYWN5LXRydW5rCisxNTk2MiBlZTFhMzRlNWVkYjEyNzVjY2IzZjU3NTg3NThhZmZmNjczNzFlZjYwIGxlZ2FjeS10cnVuaworMTU5NjMgYTA5M2ZhZDkyY2NmODk1MDQ4OGRjZDZkODgwNzE4OWNmZTY2OTgxMCBsZWdhY3ktdHJ1bmsKKzE1OTY0IDc5YzRhMDU0MjU3MjQ0MmY0ZjRkZmQ4M2YyODRhODg4NDVjZGIyNWUgbGVnYWN5LXRydW5rCisxNTk2NSBhNjI1Y2UyZmJmYmQ4NTUyYWFhMzRlNzljYTk1YmVmYWU4NDEwYjllIGxlZ2FjeS10cnVuaworMTU5NjYgNWE0ZGY5ZDljN2JmNTZlM2I0N2Y2ZGJhMmVmNTBiYzI5NTJhYzFhNCBsZWdhY3ktdHJ1bmsKKzE1OTY3IGI5YTU2ZTVlM2QyMjdmZDlkMDFkNzk2Y2Q1Y2RlNzZmMGNlYjBlNzEgbGVnYWN5LXRydW5rCisxNTk2OCBkNjY0MzUzMzdlMWMyYjU1M2I0Y2NiODNhYWNhMDk3OTRjNzFkYmNhIGxlZ2FjeS10cnVuaworMTU5NjkgZWE0YmJhYmM3NDk3MzA5YmZlNTBjMmJhZGE5MTVlMjkyM2I3ODc1ZiBsZWdhY3ktdHJ1bmsKKzE1OTcwIDlkMjA2ODczYzViZDRiMWZhOGU4OWRmZjc1ZGE0YjFiOTU2NzM1M2YgbGVnYWN5LXRydW5rCisxNTk3MSBiMTFlMGE4OThkZTA5NTViZDRjZWZhZGU4NmFjODUzZmYyNTA2MjlmIGxlZ2FjeS10cnVuaworMTU5NzIgZmYyNDNiMGYxNmVlYjg4NTU5MjdjMTI2MDk1YjU4NWY5YjVjOGE2MCBsZWdhY3ktdHJ1bmsKKzE1OTczIDgyN2I1NzZlMjY1Yjk2MDhkOTI1ZjMzM2MwYzRhOGYxMDgxODA5NzMgbGVnYWN5LXRydW5rCisxNTk3NCBmMjlmYmE1Yzk4YmRmN2IwODMzMjYzMGUwNTViZDM4MzU5MTJkNmRhIGxlZ2FjeS10cnVuaworMTU5NzUgYzI5MDllYzdkNGNkY2EwMjUzODVlYTJiYzZlZWM4OWIwODJjZTczOCBsZWdhY3ktdHJ1bmsKKzE1OTc2IDU1NWIyZTIyZWU4OTgyZGEyZGE2ZjBkYjlmYWJhNDdlZDE2MzRhOWIgbGVnYWN5LXRydW5rCisxNTk3NyAwOTc2ODRiOTNjYTljMTA0OWE4MjZmMjc2N2Y1Yjc2ZDU3ZmUxYTc5IGxlZ2FjeS10cnVuaworMTU5NzggNjNlYmI2OTA2ODc3NDlkODIwNGVhYTFiZTE5OGIyOTJmNDQzMzM2MyBsZWdhY3ktdHJ1bmsKKzE1OTc5IGUyYWVlNjE5MGIxOTg1MDAzZTAyYjhiNmZiMzJhYmFhOTUyYTc3OGQgbGVnYWN5LXRydW5rCisxNTk4MCA3OWRjMWVmNWMyMmQxOTY5MTg5MjQ3NmNjNzE5NjA2NWUyYWE4OTk1IGxlZ2FjeS10cnVuaworMTU5ODEgYTkyZjQzZDIwZWNiMTVmODM3OGI1MmFmOWYxYzRhNmQ1MmU2ZWE0NCBsZWdhY3ktdHJ1bmsKKzE1OTgyIDA0MmI5NmNkZjdkNzk0NTAwODIwYzcwZGY0MDc3Zjg1MWUzYWZiZjIgbGVnYWN5LXRydW5rCisxNTk4MyBkN2I0OGM4NDkxODk1MzRiNTNmNGEzNDNkNDcwOTk4YTY0YjZiMTA5IGxlZ2FjeS10cnVuaworMTU5ODQgNWRkMzgxYWViMjNiMjdhODhhMjQ0Y2I0Y2ZkNGU0NDc5NTUyMjc0MyBsZWdhY3ktdHJ1bmsKKzE1OTg1IDA1ZDVkM2Y5YTE4Y2JmYWZkYjgwNzU0NzcyODQyYzIxZTc4OWRmZDAgbGVnYWN5LXRydW5rCisxNTk4NiAxY2Y1NDRiYTIzOWU1NjE2NThkZTRiNTM2NDBlM2EzMTI5MGJmMDM2IGxlZ2FjeS10cnVuaworMTU5ODcgMmViZmZmMTM5MzZjMjRjMGQxYmZmMWRjNWUxNmUwYjgxMzE0ZmJiMSBsZWdhY3ktdHJ1bmsKKzE1OTg4IDEyNDM3ZGViMDY4MGFiYWZjMTE3NDdkYWUxNmE5MDA4OTNjYzFhNzAgbGVnYWN5LXRydW5rCisxNTk4OSBjMmRmNWQyODAzNGRhNTc3Yjg5YjViZWQwYzgyZDIwYTI4OTJiYzZlIGxlZ2FjeS10cnVuaworMTU5OTAgZjE5NWM5OTgxZmExYTlhNjUwZWJkM2I1MDYxYmM1MWFjZWYyZWIwMiBsZWdhY3ktdHJ1bmsKKzE1OTkxIDM0NGFiMzQ4ZjFlOWM5ZDhiMDA3MzMyZjg2MDhjMGRlN2EzNThmODQgbGVnYWN5LXRydW5rCisxNTk5MiA3MDY2YmUyZWRjM2I2OWQ1ZjY5MzFlNTFmNDE5N2QxOGNjMWYzZTQ4IGxlZ2FjeS10cnVuaworMTU5OTMgMjA5ZWI0NGNkYmY3ZTExNDY2MjI1OGEyNTRjODhjNTgxM2QzNjJiNCBsZWdhY3ktdHJ1bmsKKzE1OTk0IDY4ZGQ0MDMwNzE3MjZlMWY5OWFjNDlhNTY5ZTY5MTU3NzdjMjY0MTkgbGVnYWN5LXRydW5rCisxNTk5NSA4NmM5ZjY5MWYzNzkwYTM5MGJiNzIzOTBkMDI0M2M5ODc4NGE1ZmU0IGxlZ2FjeS10cnVuaworMTU5OTYgNzlmOGY2Yjk2M2MyNjlhMjQ5ZjQ2ODA5MDRiNWVhMmMxYjA0NWZlNiBsZWdhY3ktdHJ1bmsKKzE1OTk3IDc4YmZjNzQwYjYxY2QxZDljZTFkYjZlZjRhM2MwMDY4NTRmZTY1NTAgbGVnYWN5LXRydW5rCisxNTk5OCAzMWY5ZmE0MmRmNjAwYWFjZjVlZTA4Mzc1YmFiNGM2ZDlmZTExMGUyIGxlZ2FjeS10cnVuaworMTU5OTkgYWY3MjgwNWU5OTQyYWQyZmRmNWFmYjkyNWM5ZDI1M2I1M2FjMjkxMSBsZWdhY3ktdHJ1bmsKKzE2MDAwIDA0OTM5NWIwMjYwMmEzNGQxMGI0NWE2Mjg4OTAxZDFmOWQ0MTUxZDMgbGVnYWN5LXRydW5rCisxNjAwMSA2NTAxNTQyOTJlZTExNzNhNjMwNGUyYjY2ZjExYTQ4Yzg3MTE3ZGRhIGxlZ2FjeS10cnVuaworMTYwMDIgNTNiZTI4NWNmZDJjYWM2YmI5YjY4NmRhNDQzNzJiOWEwMDQwM2I5NCBsZWdhY3ktdHJ1bmsKKzE2MDAzIDYxMDRiNjEyMTVlNjdjYTYzZDZiODUzNjIyMGU0N2Q1ZWM2ZjVhN2IgbGVnYWN5LXRydW5rCisxNjAwNCA1NDY2MjcwZGJjOTI2OGEwY2ExYTk3ZGRmYjkyNTdlMzlkOTBjMWQ3IGxlZ2FjeS10cnVuaworMTYwMDUgMWU0NmMyM2IxZGFkYjc0ZTZlYzMzN2UyNjg5YjBmMjJjOTAyYzE4NyBsZWdhY3ktdHJ1bmsKKzE2MDA2IGE3OTJiNzRjYzllOGMzNTI2N2I5OWFiZDhlOTk5NzM1NzZiZDRhNTggbGVnYWN5LXRydW5rCisxNjAwNyAwOWQ5MTcyZmIxZDM0Y2Q3MjAwZDA2NWE3YTY5NjFhNzA1YjU3NmIzIGxlZ2FjeS10cnVuaworMTYwMDggNTdkNmEzMWVlNDBlMDE0OWQxOTg3OTkzNjk2ODc1M2RhNjFmNWZjNiBsZWdhY3ktdHJ1bmsKKzE2MDA5IDU4OTIwMmM2NDg4NzkxZDBlN2M3MzI3YzhhYzQ5YWIwOTIzZDAwMDIgbGVnYWN5LXRydW5rCisxNjAxMCA4ZWRlNGIwODAzZmI3OWZmYzM3Y2IyZDA3NmRiMTc3NTg2NmFiMWMyIGxlZ2FjeS10cnVuaworMTYwMTEgYWM0ZDNjZmJjMWM5ZDE4NDE5NGNiOWMyZTU5YzNhZmQxMjc3M2RkYiBsZWdhY3ktdHJ1bmsKKzE2MDEyIDg4NjQwZWNmNTUwNjFmMzI1Y2VmOGIxMjIyYmE0ZjhhOTcxMGRiZDYgbGVnYWN5LXRydW5rCisxNjAxMyA4NjE3N2ZiMGVkZDgzNWNjYzRiODhkNzZkMTJjYzg0NzZhMTA5ZWJmIGxlZ2FjeS10cnVuaworMTYwMTQgMzEwZDdjYmJhMzI5MjM5YzliYzY3YTJiNzM3OTc1MWQwYzA5Mjk1OCBsZWdhY3ktdHJ1bmsKKzE2MDE1IGE2YTY0ZTlhYjIzOGQwZmU0MWMyNjg0ZjZlYTA1YWI5Zjk1ZWRlNTMgbGVnYWN5LXRydW5rCisxNjAxNiBmZjA5NzRlODgyMWJlZWMzMmQ3NjFlMDFjOTkzMWZmNTNjNmY2ZTEwIGxlZ2FjeS10cnVuaworMTYwMTcgOTE2ZmIwMjRjZTk0MmQwOTdiMDhjZTU3Nzk0NzRjYTZkNmJhNmI2NCBsZWdhY3ktdHJ1bmsKKzE2MDE4IDg3ZWU4MmU1YzU2ZDMxYjc3MWY3NmVkNWNlMzBhY2I2MzM0ZjlmZjQgbGVnYWN5LXRydW5rCisxNjAxOSAzNGE2ZTVmZWNhMThlM2U0YjMyYWY1MmQxNjI5NDRkYmUyNzFkYzU0IGxlZ2FjeS10cnVuaworMTYwMjAgYmFiZTdiOWNjNjE3NDU2ZjQyZDM1NWYxYzI5OWUwNTM4NWJhZTA5OCBsZWdhY3ktdHJ1bmsKKzE2MDIxIDNkYTQ5MzQyMTllNWY0NzdlNzVjNDg4N2I4ZDZkZThiNDQ1YjI2MmYgbGVnYWN5LXRydW5rCisxNjAyMiA1ZmMxOGJjYTdmNTVhYzMzYTUyOTBjNTI0MDk4MDcxMTRiYjMzZDk3IGxlZ2FjeS10cnVuaworMTYwMjMgMWM1YTVhZGUwNGUyNzYyYzliMTFlMjlkYjkxMjlhMmYyNjVhYTJkZiBsZWdhY3ktdHJ1bmsKKzE2MDI0IGM2ZmQ2ZmZiY2IxNWM3ODFjYTRkNGViODUyNWI2ZWQ2ZmVhZTI2ODMgbGVnYWN5LXRydW5rCisxNjAyNSA4NDg3OWFiNzFiOWYzZmQ4ZGFmOTZiZmI3N2JkZjExYTEyNjc4NzgxIGxlZ2FjeS10cnVuaworMTYwMjYgYjlhZGI3OWNkZWI2MzQwOWY5ZjUxZDRiNDE4YjFmMjM4MzYwZjg1ZSBsZWdhY3ktdHJ1bmsKKzE2MDI3IGU4YmIwZDUzNjYzM2FlNzk1MjMwOThhMjU3ZjE4YzRkNTIzNzRkMzQgbGVnYWN5LXRydW5rCisxNjAyOCA0YzRlOTUxNDcyNTgxMTEyNTgyNzRmNTQ0ZDVkZWU3NTZmZGQ2ZGEyIGxlZ2FjeS10cnVuaworMTYwMjkgNGNlMjU1NDk1ZGEzNDAzMDQ0MGE1OGI3YzcwZjRhNTVhYmI5YmFjNyBsZWdhY3ktdHJ1bmsKKzE2MDMwIDgzMzc3ZmMyOThkODNjOGFmNGVkN2VmZDNkOGZjZGU2ZTU5MjkyMWMgbGVnYWN5LXRydW5rCisxNjAzMSBlNzJjYjQyMTc2YmM3MTkzZDk1MjIzMjRkN2QzNWM0NWFjZjRjNTcwIGxlZ2FjeS10cnVuaworMTYwMzIgNjE1NWY1MzJmMWZjYzQ4ODdiZmU4OWE1MDkxOWJhZGM0NTBkNWZlYSBsZWdhY3ktdHJ1bmsKKzE2MDMzIDg5ZjBhNjY0ZTI4MzBiMWNlYmVkM2U4ZGIzZmI5YTFlNTAyN2NmYmUgbGVnYWN5LXRydW5rCisxNjAzNCBmZGI3OGNmZDllNzY3ZDkyYTgyMTE2MzAwODU2OWQyZWIwOTI5MzFhIGxlZ2FjeS10cnVuaworMTYwMzUgZWZiNGIwYzY2Njg4ZTQzNjMyZGMxMzU1YjljOWViNzAwNzk1YjVjMiBsZWdhY3ktdHJ1bmsKKzE2MDM2IGI1MzI5MGI3YjU0NjhhMTliN2U4ZDA4ZjQ4MGJkMWE3OTQwNWFkNTggbGVnYWN5LXRydW5rCisxNjAzNyAxYzI3YjM3ZWQxYTFhZTc3ZjI1ZTY1ZTY2YjgyM2U0NjFiNjU4M2IzIGxlZ2FjeS10cnVuaworMTYwMzggYmM3MTRhN2EwMDQyODRiZWRjNzQ3OGI0NTVhNzU0YWVjZTUyYzA3ZSBsZWdhY3ktdHJ1bmsKKzE2MDM5IGUyYjM2MjFlNjUyMTM5MmFlYjZiYjdjY2M3NWY1OWIzNWJmNTI2ZWUgbGVnYWN5LXRydW5rCisxNjA0MCAzMzcwZWRhZDA4Y2VkNWRmODg4ZWFjYmE3OTZmOWFhZWVhNjA1Nzk2IGxlZ2FjeS10cnVuaworMTYwNDEgZTJlZTM4ZWE3ZjM1ZTRkNGEwM2UwNzNjZTExNDMwMDIzYjRkZGMzMSBsZWdhY3ktdHJ1bmsKKzE2MDQyIDUwM2E3Mzk5ODIyMmM1MzEyNDY5YzgxYjZiMDlkNjJiNmM0Y2U2YTcgbGVnYWN5LXRydW5rCisxNjA0MyAzZjU5OGI5OGQ3ZjkyMjQwNmZjNGQxODM3YmJiMDNiMjQ5OTA5ZDcxIGxlZ2FjeS10cnVuaworMTYwNDQgOTFkZTNmMDNhZTg5MjdhZjJmNzc5MDExNzIyZDQ1NWIxMDc2YjEyMiBsZWdhY3ktdHJ1bmsKKzE2MDQ1IDNlMDdhNzMxNWFmNTJmZjY4NDVmOThjNDkwNmE0ZGVmZmQ0YTU2NWYgbGVnYWN5LXRydW5rCisxNjA0NiA1MTAyZWZmYjBjNGI0YzVlYjVlNmMyZGU4NWM5OWM2Zjk4MDhiNmE1IGxlZ2FjeS10cnVuaworMTYwNDcgZTBlYjQzMWU0MzkzYWNkN2Y2MjZiMWMyYmE3Mzk2YjJjZGZjNTljMyBsZWdhY3ktdHJ1bmsKKzE2MDQ4IDcyOTVmMzYwMjY0ZTQ3Y2M1MWU2YWUxYTYxMDdmMTA3ZjExOTAwNTAgbGVnYWN5LXRydW5rCisxNjA0OSA0MDExYWNmZTE0MzNmYTk2MTViYjJkNjVkZDRhYjNkNjkxMTcxNTBlIGxlZ2FjeS10cnVuaworMTYwNTAgZjExOWMyZDhkNTYwM2Y3ZmY0YzE5OThkYmJmOWJmNGM1M2Y0ODhkYiBsZWdhY3ktdHJ1bmsKKzE2MDUxIGNiMTg2NDAyNTk5YTcyN2ZhYTEwMjQzMjk3MjkwNzc4ZDQwM2E0YjIgbGVnYWN5LXRydW5rCisxNjA1MiA3ZWRjNDgwYmI5ZjM5OGU5ZDI0MWVmNThhNDNmNTNlNDc5OTM2NDljIGxlZ2FjeS10cnVuaworMTYwNTMgY2ZjNjRmYWYxMmNlNTk5MDM5YWUxOWZkZDRiOWVkNDUyZWU5MjM0NCBsZWdhY3ktdHJ1bmsKKzE2MDU0IDE4YzgxZjFhMGRhMjM0ODkwMzk0YjcxNmYyY2FlNmMyZjlkZTc1ZmQgbGVnYWN5LXRydW5rCisxNjA1NSBlMzhiZTg3MTdlYzAzMWI2MTJiOGVmNTU2MWJhZTMyNjM2ZDNjYmZlIGxlZ2FjeS10cnVuaworMTYwNTYgODAwYTc1ZDA3ODdmMGEwMWE4ODk1Y2M2ZDg2ZWNiOTk5YjNlYTRhNyBsZWdhY3ktdHJ1bmsKKzE2MDU3IDZlNGRmMzQxNGE1ZmNmNTAwYzU3OGJhM2MxMmI2MGY5ZmVhZDUzYjcgbGVnYWN5LXRydW5rCisxNjA1OCBiOTFiNTc2MmIxY2QxMTRhYjdjMDM3ZmQzNjRlODk4NWRkZWFmYWYyIGxlZ2FjeS10cnVuaworMTYwNTkgYTVlMjBkMDc0NzBjNWU3YjgzMTlkOTA1NGZkMTNlNGM5OTAzOGE2ZiBsZWdhY3ktdHJ1bmsKKzE2MDYwIDQ2ZWUyNzE1ZDI5ODM5YmQ2M2VhYmFiMjQ2OWJiMzU5ZmNlM2ZiYTQgbGVnYWN5LXRydW5rCisxNjA2MSAyZmIzZmI2NDZjYzU5NTk2MzA0YTM1OGQ1NjM0Y2NjYjgzOWUyZWRiIGxlZ2FjeS10cnVuaworMTYwNjIgM2RiNjJjNzVlNjViMTU3MjlmZTY2MGU3YjAyZGUyMDQzMGJiNWEwNCBsZWdhY3ktdHJ1bmsKKzE2MDYzIDFjZjY3MzgyNDlhZmY1ZTMzMzliZTc5MWYzYjQ5ZWFkMDNkNmEyMGEgbGVnYWN5LXRydW5rCisxNjA2NCA5MDU0MGNkZjljOGQ5NjQ3YTZmNGU2Yzg4ZjZmYTljMjlkZjg4YTU5IGxlZ2FjeS10cnVuaworMTYwNjUgMzYwNzQyMjIxNjFjMGIxYjRlN2Y5OGE1ZDQ1YzZmZmZiNDM3YzE1NiBsZWdhY3ktdHJ1bmsKKzE2MDY2IDUwZjk3N2UxZTJhYjcwZDJiZTc4OTNmZmQyOWI1ZGQ5ZDQyY2IwMzEgbGVnYWN5LXRydW5rCisxNjA2NyAzM2NlNjNiMDYzNTkwOGZhM2ZjMDIzNzcxNjBhZDE1MGJkNzk0OWMxIGxlZ2FjeS10cnVuaworMTYwNjggMzg0ZmE5YjllMjUzY2EwZjc0NDA3YWNjM2ZkMGY0NGNhMGNlMWRmMyBsZWdhY3ktdHJ1bmsKKzE2MDY5IDA4NWIwMTVhOTI5MWQ5ZDVhMTM2OThlYzM4MDdjMGQ0NDJiNzYxN2YgbGVnYWN5LXRydW5rCisxNjA3MCBmYzJhZDZmYTA4ZWNlOTEyYjM4ZDUxNzZlNWExNjc3ZTQ3NTI5ZTkwIGxlZ2FjeS10cnVuaworMTYwNzEgYzdlZjE1ODU5ODNjNDY2NTRjYzRjN2EyMTEwMmEyOTk1YzA4ZjkyNCBsZWdhY3ktdHJ1bmsKKzE2MDcyIDNjMzViZjdiNTgwYjAyMmU4YjdiZTc2MDM0ZDgwZmRiNDc5MGI0NzggbGVnYWN5LXRydW5rCisxNjA3MyAwNjk0Y2UzYmQ0OGY2N2IxMTVkYjVlNzg5NTQ4MDRjNmFiZGRmZGYzIGxlZ2FjeS10cnVuaworMTYwNzQgNDIwYWI0NDMwMjFlOTY1ZDNiY2NiMmMzODFjMjQyNjIwMDg3NGQwZCBsZWdhY3ktdHJ1bmsKKzE2MDc1IGEyYmM4ZGZmNTVkZmY1NDc0NGE0YzEzZGYxNjQzY2ZiZDQ3MGU3OTggbGVnYWN5LXRydW5rCisxNjA3NiAwM2FhMjY4MTlhYzI3NjUxZDljZDkyZTBiOTRhMjMwNDdjYTgxNjIxIGxlZ2FjeS10cnVuaworMTYwNzcgNTgxODM2NzljOTBhMjIwOThiNjA5ZTFmMmI0MGVlNTAxZTI5ZTcwNyBsZWdhY3ktdHJ1bmsKKzE2MDc4IGZkNzhiYzVmMmIyY2NiMWJmNGQzODQ0MTExNzc3NGM4NDQ1YTMzYjUgbGVnYWN5LXRydW5rCisxNjA3OSA2NmQ0MmM1MWRmMTZhZWY5MmVhYmU0MjA4ZWQyYzkzNjFhNjQ3YjkzIGxlZ2FjeS10cnVuaworMTYwODAgY2Q4YTQxYmY0YWMyMGI5YTcyYjRmMGY3MTgyNGJlN2VmN2M4NjFkOSBsZWdhY3ktdHJ1bmsKKzE2MDgxIDM5MGU1ZDUxZmY3MzMyYjY1MTJiOGY3ZTQxZDg5NzhlN2Q1NzEyZDggbGVnYWN5LXRydW5rCisxNjA4MiA2N2EwNDgxNmVhNTAxMWEzMDBlZTM3YTA2MzZlYTQ3M2JmMzQ0ZTA5IGxlZ2FjeS10cnVuaworMTYwODMgYWMyNGQ4MmQ4ZTMzYmFhNjNhOWU3ZWMxODBlNjY4NjgyMGUwOGVjOCBsZWdhY3ktdHJ1bmsKKzE2MDg0IGFmMTBkOWI3NDE0M2QyYzNhYjE4ZDg4Y2I4YTNmZTIzOTQzZGRhYWYgbGVnYWN5LXRydW5rCisxNjA4NSBjZWQ4NjBmMmQ4ZDJjYTVlMGVjMmZhMGM5NGRhYzI5Njg0ZTcyOGNjIGxlZ2FjeS10cnVuaworMTYwODYgMzQxOGQ1YzBmOTYwMjJjYThlYzNjZTVlMDc3Y2U2YWQyOTQ1MGE2ZCBsZWdhY3ktdHJ1bmsKKzE2MDg3IDdiYWMxMGE5YmI2MWNmNmVhMGJkYTFmMDZjM2RlOTUyYzM5MmNjM2IgbGVnYWN5LXRydW5rCisxNjA4OCAyNDcxNzQwNWRkODk5MGY5YjFhOTYyNThmMWY5MjMwYjIwNjNmMjA5IGxlZ2FjeS10cnVuaworMTYwODkgYzE1NWJjY2I3YTIyZmIyNDY4YTFlNDBkZjRiOTI2NTE4YjdmZmQwOCBsZWdhY3ktdHJ1bmsKKzE2MDkwIGQ4YTQwNzc3N2E2ZjRiN2E0YTgxMzE0YzU0MzcyZjNlZDk3ODkzNzkgbGVnYWN5LXRydW5rCisxNjA5MSA0NTQ5NDA0NmMyZmI2MWM1N2JmM2E3OTU0Y2UxZWQxNTIyOTVjY2Q1IGxlZ2FjeS10cnVuaworMTYwOTIgNjNkMjg4N2JhZjExODQyNmQzMmZjNDkzNGMzNmJjYzFkNTMyZDg2YSBsZWdhY3ktdHJ1bmsKKzE2MDkzIDdlM2Q2MDQ1NTk1OGZjNzM4NjNiNjVlNDRjMjlkMTBhNDI3NDA3MDEgbGVnYWN5LXRydW5rCisxNjA5NCA1NjI2ZDQyNTVmY2VkNWNjOTM2MTYwODM5ODc0M2M5ZGVjYmU3Y2ZkIGxlZ2FjeS10cnVuaworMTYwOTUgODllNDdlYmEyNzcxODliYzg4ZjRkOTFhODNjYzNmNTY4OWI2OTRjZSBsZWdhY3ktdHJ1bmsKKzE2MDk2IDg3ZGYxYWU0ZjExMGM1ZDA5N2QyMzI0MTVhNDUwOTViMDY2ODFjM2QgbGVnYWN5LXRydW5rCisxNjA5NyA4ZDMyNGQ5ZDUxOGZkYmQ1MGUwYzg5MzE0NGFiZmYxODkwYzgxOWE4IGxlZ2FjeS10cnVuaworMTYwOTggZjBkNDAyZDQ4MTgwYmU5NDg4ZGI5ZGRlNmMyMjkyMGFlNGRjYjEwYSBsZWdhY3ktdHJ1bmsKKzE2MDk5IGUxMDE2MDBhZGVlNDRhNjMxMmU5ZjEyMDIxNmJlMWZjYTVjNTQzNmQgbGVnYWN5LXRydW5rCisxNjEwMCBhN2Y3MjAyMmI5M2FjODk3MjM4YzI2ZGNmY2FiMzc5ZmRiZGYyMTIzIGxlZ2FjeS10cnVuaworMTYxMDEgZjk4ZDZkNjNhZDcxYjZiYzE0NGEwZGY0N2UxYzQ3YWJkMWMwNjBhNiBsZWdhY3ktdHJ1bmsKKzE2MTAyIGRmZjI3N2Q1ZmViMjViMGVlOWRjYTI1YWQ4MzAyMzIwN2UxMTNlNjMgbGVnYWN5LXRydW5rCisxNjEwMyAzZjFiZDQ3ODI2MjhiNmEyZDVmNDc0NjM0NjUxNjQwOTgzNmRlMGUzIGxlZ2FjeS10cnVuaworMTYxMDQgMmE1YTNjYWQ1MTc0YTVmYmE3NTc3MmFjM2ZkY2E0ZWNmY2I4MGViZSBsZWdhY3ktdHJ1bmsKKzE2MTA1IGFiZWQ4MGI1MGEyY2NhYmE0MzMyZGFlZGNjNDk5Njg2MDdhNGZiNDYgbGVnYWN5LXRydW5rCisxNjEwNiBjMzAyOWYyNzYwNDcyY2Q4NTRiMGY5NjJlMmNmZWM1MTFkNDNjN2I1IGxlZ2FjeS10cnVuaworMTYxMDcgNGM0MGVmNWRjZDgyN2FmOWZhZDgxZmMyOGFlYTM5ZGFkNmQ5M2Q5NyBsZWdhY3ktdHJ1bmsKKzE2MTA4IGZiMzA5OTYxMDFiYzgzNGQyOWU4YTMxNmJlYTRjMGIwYzg3M2IyODEgbGVnYWN5LXRydW5rCisxNjEwOSAzODQ4MzVlYTBhNWExNmIzODVlMjA4Y2JjYWQ0NGY3ODk2NmJkM2M3IGxlZ2FjeS10cnVuaworMTYxMTAgNzYyODg4MmRjY2NkZTg3ZTA2OGVkNDMxYzkzYTRjNTU5ODM1MjczYyBsZWdhY3ktdHJ1bmsKKzE2MTExIGIzNTMwZGFlMDNiZmI5N2ZkOGEzMDc3MjNjMjJkMmZkZGM5MGM2ZjQgbGVnYWN5LXRydW5rCisxNjExMiBlMGQ2NzZlOWNiNjZjMTQwYTc3ZWI1ZDA5ODU3ODg4MTMxMDVlOGZjIGxlZ2FjeS10cnVuaworMTYxMTMgNTYxOWMzZjdhNDRiZGM1YWQxNjQzMDc2MTQ2ZTljZDIwY2U1YzhiYyBsZWdhY3ktdHJ1bmsKKzE2MTE0IGQ4ODUzNWNjYWVlNWMyNjljNjg0MmY5NzVlN2Q0NGRjMTUxZjYzYTEgbGVnYWN5LXRydW5rCisxNjExNSAwYjI4OWUwMGQ1MmEyNzQ1NTIxM2FlZGNlMGIwZDBiMjFjZWNkNGQwIGxlZ2FjeS10cnVuaworMTYxMTYgOTlmMzQxYTk3ZmRlYjZmMDc5MjRhZTVkODBjZmVjNDY5NDk1MTA4ZCBsZWdhY3ktdHJ1bmsKKzE2MTE3IGI0YWVkZDkwYzg2NDJlOWRhMGVhNGMxNjEyYzI2ZDdhNmE5ZTE5MzggbGVnYWN5LXRydW5rCisxNjExOCA5YTFiOTYxZTBjM2FmNTA0MWIwOWE1M2RmZDI5MmNmOGY1ZDU2OWUyIGxlZ2FjeS10cnVuaworMTYxMTkgZDgwMzgxMzM2NjEyZDYxZDdlMjhmNDE1OTAzOThiOTVkMjYyZThmNCBsZWdhY3ktdHJ1bmsKKzE2MTIwIGM4NzA2ZTVhODgyZmEyMTJkZjMzYzBlNThkYWFmOTU0MTc4MjlkNzggbGVnYWN5LXRydW5rCisxNjEyMSA2MGE5NzI2ZDg1ZjhlMzAzNDZjOGZjYTBiY2VjMWVhMTVlNWZmNGJiIGxlZ2FjeS10cnVuaworMTYxMjIgNDg0YmZkZTcwZGNjYmY0Y2I2YmM4M2M2MDg2OWQ0OTZiNTQ4NjgxYyBsZWdhY3ktdHJ1bmsKKzE2MTIzIGJlZjdiNjI5YWM5NTliZTEzNWM3Y2RkMDVkMWU5NTljYjU0NTdiNjggbGVnYWN5LXRydW5rCisxNjEyNCAwMmY4NzA1YmRhMDVlNTIwNmZkODYxMTFlOWU4YjA4OTU0NmQxZTFlIGxlZ2FjeS10cnVuaworMTYxMjUgZjM2OTM2ZDQzZDAyYmJjNjNiZTAzMDlmNDFhYTY4YmFlNGZmZWE1MiBsZWdhY3ktdHJ1bmsKKzE2MTI2IDNiZTI5NDQ5NTlkYTczYzU3OTcxNzViZjkwYTRmYjgwMGQ2ODJiZjYgbGVnYWN5LXRydW5rCisxNjEyNyBiNTk3MDY3ZTA1NmY3OTFiMzQ1OTkwMjgyMmZlYmNhNjdlODZkOGExIGxlZ2FjeS10cnVuaworMTYxMjggYTExMTBkYTY1N2U1MGRkZTUzZTBmYTkzMGVhNDY4NTIyMjI1MWJhNCBsZWdhY3ktdHJ1bmsKKzE2MTI5IGNiZjY2ZTRmZjA4ZjBlZTljYTBiMTJhOWViMWNlODYwZmIzOTc5ZDQgbGVnYWN5LXRydW5rCisxNjEzMCA5NDc5MGIwYzU1ZDA0YWNjY2YzOTZjZDYxNjM4NDMyZjIzMzcyNzU0IGxlZ2FjeS10cnVuaworMTYxMzEgZjBjODBiODM2NGUyMGIzYjQ4ZDI4ZWFkYjYzNzFiYzg4OWY3YTI4MSBsZWdhY3ktdHJ1bmsKKzE2MTMyIDNhMDAwMzFmOWQ2MGM3YzJkZjJlMWZjMWQ4MmFkYmFhOTBjM2M5NjEgbGVnYWN5LXRydW5rCisxNjEzMyBjZDhiOGJhZmJiMzM5NzNiMTk0MTA4ZjY3YTc1MzIyZWJmY2FiOTlkIGxlZ2FjeS10cnVuaworMTYxMzQgNzQ1MTc3YmUxYTcxN2NmMTUzMmExNTFmMjdhNWM5Y2Q5NjEwODE5OSBsZWdhY3ktdHJ1bmsKKzE2MTM1IGQ2Nzk3NDVkOTg2ZmRiNDkwYTcyNzZhMzE0NGM0ZmUxMDRlZWZmYmQgbGVnYWN5LXRydW5rCisxNjEzNiA4ZmI3MzExZDEzODEwODhlNThkNjcwYjE5YmYwZWYzNWExMzkxNWI4IGxlZ2FjeS10cnVuaworMTYxMzcgY2JiZTUxMmQyNGUwNWNlZDM0N2EwZDZmODIxOWFhMWY5NmFhM2E5OCBsZWdhY3ktdHJ1bmsKKzE2MTM4IGJmZTIyY2Y2ZTc3MDhiYTY0MmE0MGFkZDI2ZjFmMGIzYjE0NDhhMWMgbGVnYWN5LXRydW5rCisxNjEzOSAyMDE3ZjU0YjAzMjVjN2E2OWIyN2NlMmRjNjdjMDQyOWRhMWU5M2E3IGxlZ2FjeS10cnVuaworMTYxNDAgMTEzZDgzM2VlYTdlMDdhOTE4YmI1MTZhYjU0NTQ5ZDk0NDA0MTgzOSBsZWdhY3ktdHJ1bmsKKzE2MTQxIDYyZTE0MGJhNzgyZGMwNDAwOTRkMThkZjg1Y2Y3ZTQzNTdmYTc0NmQgbGVnYWN5LXRydW5rCisxNjE0MiBkMTY2YTFlNjA3NjBmZDI2ZjYxMWEyYzMzM2U5NWIyYjQ4MTM4MWRkIGxlZ2FjeS10cnVuaworMTYxNDMgODlmZjU5MTdiYzhiYzdmMDljZGFlNWMzNzNlYTkxN2IwODIxNDkzYSBsZWdhY3ktdHJ1bmsKKzE2MTQ0IGIyZDEwNDA3YWI5ZGJjYWNhNmRjMGU3YTRlOGJlMjQ4ZTY4ODY4YjYgbGVnYWN5LXRydW5rCisxNjE0NSAzZmYwMjJlMWI5NWQxYWFmMDViMTgyMmZhZTM1NmVkNzhjMjFhMTg4IGxlZ2FjeS10cnVuaworMTYxNDYgZWFjYjJlNTFlMTY5NjUyMGJkYzg1ZjAyNzNmZjdjYzRiNTE4YTM0OCBsZWdhY3ktdHJ1bmsKKzE2MTQ3IGFmZjFjNDE0NmMxYzJmM2E4NzRmOTZiNTM0MmQ1M2NhYzE0NWRjZGUgbGVnYWN5LXRydW5rCisxNjE0OCAzZjA4YmVkYzFjMjYxNTE2YzUyMjNjYmU3ZTllMjJkNzYzYmE1YzA0IGxlZ2FjeS10cnVuaworMTYxNDkgMWJlNDY2NTE5MGYwNjk1MWIzODIyYjM4Y2RkZTgyOGJhODRiMzIxYiBsZWdhY3ktdHJ1bmsKKzE2MTUwIDg4MDQ0ZjlkZjgzM2Q1NjRkODNmY2M1Yzk3MzM4OGMyNDYzYzk5Y2QgbGVnYWN5LXRydW5rCisxNjE1MSAxYzBkMzViYTE2YjFjNjJiMjFjMDYzOGQ0MjU1ZTNhNjIxMzkyZDgxIGxlZ2FjeS10cnVuaworMTYxNTIgNjI3NTRiOWVjN2RmYzA1ZjU2MjBlYzY3ZDRjNTBlZjlhODZiMDlmOSBsZWdhY3ktdHJ1bmsKKzE2MTUzIDFiNDM1OWEyOTc2ZGFjMzMxNjQ3NWJiMWJlMjQzMGFkNWRhNmE5NzMgbGVnYWN5LXRydW5rCisxNjE1NCBiMDVkZjY4NzIxNWVmNDRjOTdmNWZlMTBkMDgyMWE4YWM3YjNhMjU0IGxlZ2FjeS10cnVuaworMTYxNTUgYmNiMTQ2MjdiOGY0MWNhMTExNmQ1MDdmZWY0YzU3OWM1YzNlYzc5YiBsZWdhY3ktdHJ1bmsKKzE2MTU2IDgxMDdkZTI4YmM4MjEzOWQwNDc4MzEyZGEwYWM5ZWRiM2M2ZjQ3MWUgbGVnYWN5LXRydW5rCisxNjE1NyAzMTdlOGUwOWNlODc3MWM2MmNiYzZkN2NhMjQ0YjYwM2RjMjRlODBhIGxlZ2FjeS10cnVuaworMTYxNTggNzU5ZjY5ODc0MGNjZjNkNmNlOTZiZjczMzk5Zjg5MDY4YzVkMGVhNyBsZWdhY3ktdHJ1bmsKKzE2MTU5IDhlYjVjMzZlZGU5ZTcxM2Q2NWUwZmI4Y2IyYjg1Njk4OWExOThmNTUgbGVnYWN5LXRydW5rCisxNjE2MCBlOGNlMWJiMDU2YWVjMjFjZGQ2ZmFjYjk5ZWRjYjgwYjc0NDJlZmVkIGxlZ2FjeS10cnVuaworMTYxNjEgMjExMTkxODllZTE4MmNiZTgwOTEyZmRkMGE4YTViNmVlZTA1YjZkZSBsZWdhY3ktdHJ1bmsKKzE2MTYyIDk4ZGIwYzNjMWZiOWRjMDA0OTczYTAxYWYwMmE4NDkzNzIwOTgxMWIgbGVnYWN5LXRydW5rCisxNjE2MyA4ZjFhMmRlZWI5YjAwMGQ0ODNlMGE0YWM4YTQ4MDhhZGUyNTQ4MDM0IGxlZ2FjeS10cnVuaworMTYxNjQgN2ZiZGI1ODE4MzhmNjMxYmRkNzRjMmNkYjJlMTQ4ODc1MTZmYWJlNSBsZWdhY3ktdHJ1bmsKKzE2MTY1IGU5NWZmMjExYjlkM2M3YjhhMDBmOGUwZGM5ZWI2MWJkODNkMWU4NDYgbGVnYWN5LXRydW5rCisxNjE2NiA0Y2YyMTg1MmZkNTIxNjAwOTE3NjAyZTYyNzI1M2YzYjQ5OGQ0MWVjIGxlZ2FjeS10cnVuaworMTYxNjcgNTM3MTQ3OGY2ZjViODZkZTNlNmQyNTFmNWNhNGIxYWQ0MzY0N2I1NSBsZWdhY3ktdHJ1bmsKKzE2MTY4IGE1MDNhZjdlN2ZiN2JhNjdhNGUzMGY1MTc4ZjY1MTc1ZjNhZDRkYzQgbGVnYWN5LXRydW5rCisxNjE2OSBmMjYzM2M5M2UyZTU3ZTdhOThmODcwNzQxOTQxNWU1Mzc4MmUzNjM4IGxlZ2FjeS10cnVuaworMTYxNzAgZjUyMTJhZjllNjQxM2YzMTc0ZmNiMDE3MTFhZjQyZjNhZmU2OWRmNSBsZWdhY3ktdHJ1bmsKKzE2MTcxIGMzOGJhY2Q4ZWZhZDJmZTIyODAwNjRlOTYxMmYyYTE2ZDEwNjUwZTggbGVnYWN5LXRydW5rCisxNjE3MiA1MTU3ZWI3YmUyMGQ3ODAzMmU5YWRlMjYyYzY1ODgzYmM0N2Y1MDY0IGxlZ2FjeS10cnVuaworMTYxNzMgOWE4MzkxMDU0ODQwOTI3NGQyYTAzYTY0Y2Q2YmY3ZTRiYjIwNzczNiBsZWdhY3ktdHJ1bmsKKzE2MTc0IGU3MTA2YzJmYzI2Y2M0NzQzYWI4Y2IwMmRkMGI1MzQ4Yjc2NGM4YjcgbGVnYWN5LXRydW5rCisxNjE3NSA3ZmVhNGExYWYwOTA5ZmVhYTY5Y2YwMTEyNGM0ZGNjZmNhMzFmZjIzIGxlZ2FjeS10cnVuaworMTYxNzYgNmE3OGVhZDEzOTg3MDQzNjhiNWNmODRhZmVmYzA0ZTI2OWJiYzgxMyBsZWdhY3ktdHJ1bmsKKzE2MTc3IDJiYTc2ZTMxNTAxNmIyMzZiZDUzZDlkYWQ4NDUyYzkxODZhZWIyMmEgbGVnYWN5LXRydW5rCisxNjE3OCBkYTYxMDkzMDYzOGI0Nzg1OTk2NjE5YzljYzJhZjA4ZWZhNzk2NTlhIGxlZ2FjeS10cnVuaworMTYxNzkgNzBlNGNiZmMzYjI0NzljOGVhZTM5NGEwY2FkYzA1Zjk1YTNlNDVjYyBsZWdhY3ktdHJ1bmsKKzE2MTgwIDg1NTIwYzIyMDA2N2EyOWFiMWE2YmQxZDVlN2ViNmVkZjcyOTg0NmQgbGVnYWN5LXRydW5rCisxNjE4MSBkYjkzOTJhMDRiZWQ0MjFjZTllMDI2NmYwNWRkNDg0ZWVhMWQ1ZmFkIGxlZ2FjeS10cnVuaworMTYxODIgZDNmMWVlZmRjYjNhOWNhMTZiMTI5NGZhZDAzYWJhNDJmZTQ2OWM2NyBsZWdhY3ktdHJ1bmsKKzE2MTgzIDM0NmRmMTkyMDg3MzdhYmRlYjZjOTNkZjNkYzc4NDQwMzU4NDU1OTcgbGVnYWN5LXRydW5rCisxNjE4NCBhYTNkM2JlY2U3NzQ1NDVkMjJmNjE4ZjczZDg3ODNiODM5YjgwMzA5IGxlZ2FjeS10cnVuaworMTYxODUgYTg3ODAzZWI5ZGZiMTQ0N2Y1OWZmNjU0MWJmNjNiYzBmZmU1NjczNyBsZWdhY3ktdHJ1bmsKKzE2MTg2IDY0YTE0YmE3NDY0MTM4NTNmMDBkOTVmNjhjM2MyMjE5Y2RkM2E2YjcgbGVnYWN5LXRydW5rCisxNjE4NyAyNjNiNDQ5Mjg0NGEyMDZhM2I5NTRiNzEzODU4OWU3M2M2MjJiYjg0IGxlZ2FjeS10cnVuaworMTYxODggNWViYWQ2ODliN2E3OTIyNGUwN2E0NzRjMDk2YTc2N2U3MzQ4YTM4NyBsZWdhY3ktdHJ1bmsKKzE2MTg5IDYxOGE3MjgwZjZiZTUwYjk3NjdmOTc2NzI5YzU3MWJjNDNmYjg0MWEgbGVnYWN5LXRydW5rCisxNjE5MCAwZDZhZjMwM2E4NmNiNGQzNjc3NmU5NGQ4OWFlOWQ3ZmQ3ODZlMjE2IGxlZ2FjeS10cnVuaworMTYxOTEgOGEzZDUwZWQwNmY3OTdjNzM3MDY0NDJjZDMwMTBlZWQ5ZWY1ZmQxYiBsZWdhY3ktdHJ1bmsKKzE2MTkyIDA4OGM1ZjNiNzA5NGM5NTkyNDk5ZGJhNTI4NDZmNWZjN2JhZGRmZDMgbGVnYWN5LXRydW5rCisxNjE5MyBjNzExMThiNzgwNTk0YmJiYTkxODA3MTZmNDBjZDU5YTc5MDkwY2RkIGxlZ2FjeS10cnVuaworMTYxOTQgZDE3NjY0YmQ5YjY1N2VjNTRiYmE2ZmM5YjJiYjJiODJkMDJhZjlkMyBsZWdhY3ktdHJ1bmsKKzE2MTk1IGZjNzhlNWE3ODEyYTUxMGE1OTU4OTY0YWUxNjBlNzM2N2QxYzIzMDggbGVnYWN5LXRydW5rCisxNjE5NiBjZGUyNzMxOGNmODdiNWJlODJjMTYyODE3MTIyZDBjZTViNjhkYWUxIGxlZ2FjeS10cnVuaworMTYxOTcgN2UzY2Q5NDgwZjY2MzhhYzE0NjRlMDczOWZmYzA3YjAxYzY1OTQ5YyBsZWdhY3ktdHJ1bmsKKzE2MTk4IGJjOWUyMmFkNWM0NjA4MTE4MmI5YjM2NzgyYTExY2VkNzc1OTAyMjUgbGVnYWN5LXRydW5rCisxNjE5OSA5ZmQzMzM2OTMzNTA4MWRiNzRiOGZlMjUyZmZlNjk2MDlkN2JhZThlIGxlZ2FjeS10cnVuaworMTYyMDAgZGRmMDc0ZWM2NTA2M2Y4ODFhM2QzMWVmMTI2OGQwODczN2Q0ZGVlOSBsZWdhY3ktdHJ1bmsKKzE2MjAxIDk2OGEwMDZlNTQ4MGMyNjhjYzA4NmNkMzc5NjYyN2QzOTY2ZTNmMWYgbGVnYWN5LXRydW5rCisxNjIwMiBmOGQwODRlM2Y4ZWNmMWY4M2VhNWIyMGJkZTIxMzMxYzEyNjQ5NzAyIGxlZ2FjeS10cnVuaworMTYyMDMgNWVkZWU2ODc4OTQzMjYyYjdkMDA2ZWNkMGM0ODM1Yjg1YmE5MTkyNyBsZWdhY3ktdHJ1bmsKKzE2MjA0IGVkNzIwNjdhYWMwMzI4ODQxMzM1NjBkY2IzNDIzMDA1ZjJiZGZjZDYgbGVnYWN5LXRydW5rCisxNjIwNSA3ZTU4YzA2MGQ1MzQyZDQ4MzIyMjY3ZjQ4ODU5MjRmOTk5MzMzMDY3IGxlZ2FjeS10cnVuaworMTYyMDYgNTcwOWRkYmE0MjNjYzhkYmZlZGMxNTU4YzhhNmZmOGFlYTk0ZDA2NyBsZWdhY3ktdHJ1bmsKKzE2MjA3IDA5MWNhNmI5MzQ4ZjUwZDUxOGYzZjY0NWY3MDA0ZGJhNmRiNDRkMWEgbGVnYWN5LXRydW5rCisxNjIwOCAyM2Y5Njg5YWNlNTA2Mzc3YmMyZThiNTJmMTdhNjhjNWUwZjE0YmE0IGxlZ2FjeS10cnVuaworMTYyMDkgYTg5ZjdmMjY4ZGU0NWYxMTQzYjRkOWI0MWY2MTQ3MTU5YzRkZGJmMyBsZWdhY3ktdHJ1bmsKKzE2MjEwIDNlMTBhYzdhNWJmMzZmZDNjNzY3MzczNjk3NTY0OGMxOTZkYjNhZjcgbGVnYWN5LXRydW5rCisxNjIxMSAwNDA5YTk4Y2Q1ODJlMzY3NWMzMDI1ZTg4OWQ3MmZkNDNlNWY3MWQ2IGxlZ2FjeS10cnVuaworMTYyMTIgNGFkMjY5Njg2NjJiZTA2MjY2MmI2YjJiN2YyZjJlYzIzZjk3MmE4ZSBsZWdhY3ktdHJ1bmsKKzE2MjEzIDgwOGI0NDZhZjk3Yzc2MzYxMWVhN2E4OWFiODZlYjMzYTkyYTlmM2IgbGVnYWN5LXRydW5rCisxNjIxNCBlZDRmN2EyMmU5MjhjYWEyMzNjZDkyMmY1NzJlZTYzMGVkODljZTVjIGxlZ2FjeS10cnVuaworMTYyMTUgZDYxOThlNzAzNjAyYmUzMDcwYjE2MDgyNzlmMGQ1MGQxMzViOWM4OSBsZWdhY3ktdHJ1bmsKKzE2MjE2IGZjYzc1YTM3NDhmNTQxOTY3MGY5ZDNkYTA4MjJjODQyNDk0MThlOTMgbGVnYWN5LXRydW5rCisxNjIxNyA0MzE1MzhmZmIzYWQzMjE0NjVhMTFkNDhhMjlmODk1MTcwN2I0MjVmIGxlZ2FjeS10cnVuaworMTYyMTggNjIxMTMxNWViNTkyY2VkMmRhMzc5ZmIxY2JjZDM5YWFlMmJkM2IxYSBsZWdhY3ktdHJ1bmsKKzE2MjE5IGVmMmViYjNiMGM2NDdmZmFjMWVjZmU5ZTgyMzUwNDdkZGQ4ZDc2OWUgbGVnYWN5LXRydW5rCisxNjIyMCA3OTA4ZWM4NTU2NjVkY2JkNGQyNmM0MjRmNmE2YmVhMmUzNTNmNGRhIGxlZ2FjeS10cnVuaworMTYyMjEgMGY5NWM5M2YyMDBiZGVlYjJmMDVhOTRmNDFhOTVkYTg3Njc2Y2VhYyBsZWdhY3ktdHJ1bmsKKzE2MjIyIGU2ZDE3ZjE1YWU2YWVmYWU5NWI5YTE0MTIyM2QwOWY5NTMxZDE2NzUgbGVnYWN5LXRydW5rCisxNjIyMyBmNmNkZWFjNDRhMTA1MjhkZTYyNDIwMzg1OGEwNmY5NGM2MTY3MWMxIGxlZ2FjeS10cnVuaworMTYyMjQgNGNmMGRlMjljMDhjNzFhYmVlOTViOTFlZjdlNmIzMGE0NzA3MDUzZSBsZWdhY3ktdHJ1bmsKKzE2MjI1IGI3MDY2YmI3OTU4MTBjYjE5NGZhMTA1MTAzZDgxYzdhZTk4ZDg4ZmUgbGVnYWN5LXRydW5rCisxNjIyNiBlYTgyMzVlZGZjOTYxNTgzNzJmYTk5YjhjODY0ODRiMTNhMTg1MzY2IGxlZ2FjeS10cnVuaworMTYyMjcgOGU5MmQ5NDFlMDdmNTA0NDljODdiZGJjNTcxMmE2ODY0OGZkY2JmMyBsZWdhY3ktdHJ1bmsKKzE2MjI4IGJmYWRkMzYzYTIwMGEzMWE2OGYxMjE4NThiYjkxNGVlN2ZhZGQ0M2QgbGVnYWN5LXRydW5rCisxNjIyOSA2NjkwMzc0YTFkYzFhNWEwZWFiODA0ZGU2OTA5NWYxOGE1MmUyOTBhIGxlZ2FjeS10cnVuaworMTYyMzAgYjkwN2ViZjNiMDUyYjkzMjE0NDY0ZDhjYmY1MmNjOTIyMjc3ZTg0OCBsZWdhY3ktdHJ1bmsKKzE2MjMxIGRkN2UxMzkxNTMyOGZjOWE1OTE3NGI4ODE5ZTNjMDg2MjIyNTcwMGYgbGVnYWN5LXRydW5rCisxNjIzMiA3NWIwZThjYjA3ODMxZDNkZmNmZGRjZDkyNzJjNGU3N2E0ODI2OWIyIGxlZ2FjeS10cnVuaworMTYyMzMgZGYxODlmOWNkMDEwZGVhMGVmY2Q4OTlmMjI0MDE5NDBhMDc5OTE2NyBsZWdhY3ktdHJ1bmsKKzE2MjM0IGRiZTgzZmQyMzM5M2EyMTA5OTlhYWI0NDIyZDAxYTk2N2ZiYTIzMmQgbGVnYWN5LXRydW5rCisxNjIzNSAzMWIxZjY5MWE3ZDkxODllN2I3NzllZWEyNjhhNTIyZWYxZmJhNzIxIGxlZ2FjeS10cnVuaworMTYyMzYgZTFiMDcwZDcxNjJjOGRlNzY2YWJiNDM4MmM2ZDJkZDczYmM3ZGYzOSBsZWdhY3ktdHJ1bmsKKzE2MjM3IDJmZjI3ODVlNTI5MTljMWNjNjFjNWNjMTBlOGEzZTVmNjBmNDc5YmQgbGVnYWN5LXRydW5rCisxNjIzOCA4ZjY2YzVmZmEyNmM4NjA1MjUzYzRkNDUxYzc5NGViNzUwYjQ0OWY3IGxlZ2FjeS10cnVuaworMTYyMzkgMTYyMmJiMjRkYTU1NjY0ZDM4ZDQ1ODIwZWJhYzAyYmI4OWJjNDM2NiBsZWdhY3ktdHJ1bmsKKzE2MjQwIDcwZDM1MWZjYjhkNTkwMGM4NmVhYmZiMjRjNzUyYzYwZmU3OTc5OGUgbGVnYWN5LXRydW5rCisxNjI0MSA5M2FlMzRhYTIwYWIzNjM1NjdiMWEyZTBjYjQzZDg4YzNlZWQwOTBjIGxlZ2FjeS10cnVuaworMTYyNDIgNjA4NGY4ZDNhODI1YzBhNzY0N2IyNDJmM2I4YWRkNWEzMDA3Zjk1NSBsZWdhY3ktdHJ1bmsKKzE2MjQzIDNhYmVjYjM0NzM3ZmNjODA2ZWRkMjJkY2M2YjkyOTRhZWY3ZDZiYTAgbGVnYWN5LXRydW5rCisxNjI0NCAwMDBhMWM3ZWIwOWZiY2ZhODhmYTQzZTZjMmVlMGU1OTM0ODY2MjdjIGxlZ2FjeS10cnVuaworMTYyNDUgODdmODM5Njg1MWIyYWE2NWYxNGE1M2NiOTU0NTRlMGYyZTgwOTJiNiBsZWdhY3ktdHJ1bmsKKzE2MjQ2IDY3ZmQxOWQ3NDUyODE4ZDY5NGFiNmI0Yjk2ODU5OTJkYmUwNjUyZDcgbGVnYWN5LXRydW5rCisxNjI0NyBlNGVjNzc4NzlkZGQwMmVkODhhMjY1NjVmNGExMzNmYWEyMjU3NDhlIGxlZ2FjeS10cnVuaworMTYyNDggMzJiNjg2ZGEzZTUxOTEzYTc0NzQyYWRiNzFiM2UyNGQxMDdiOGMxMSBsZWdhY3ktdHJ1bmsKKzE2MjQ5IDg0MjRlYzRjNGJiMjAzMGNlMzYxMjljODE2NWFhODFhNjIzMGMzMmMgbGVnYWN5LXRydW5rCisxNjI1MCBiMzEzMTFhNzhhNWRhNjUzMTcyOTUxYmYxMTQ4MWVlZGZkZTIzYjY2IGxlZ2FjeS10cnVuaworMTYyNTEgZjUwYmRjYjBkZDBlYWUwMWQ5MDA2ZTEyZmYyYmFiYjBmNDJiMzRlZiBsZWdhY3ktdHJ1bmsKKzE2MjUyIGNiNTM5ODI0NDQ4ZTg1ZTJiNTNjZjJiNWZhYzhkMjVmMjg5ZmNlYzMgbGVnYWN5LXRydW5rCisxNjI1MyA1ZGE4NDU2ZjJlNGQzNDQzN2JjMjlmMGI5ZjhhOWExMjRkOTc4NzlhIGxlZ2FjeS10cnVuaworMTYyNTQgNTA4N2QxZDQ1ZjFkYTY2Y2VlN2Y1MTUyMzk3NmFlNmNmMWNiYmY5OCBsZWdhY3ktdHJ1bmsKKzE2MjU1IDhiYWNmODYzMWExMWNlY2U1ODBkZTM2ZDMzN2Y3ZjBjOTcwOTRiMjkgbGVnYWN5LXRydW5rCisxNjI1NiA0YWExMmU1NWJmOTVkMWRmMjIzYjY0MGFhMTYwZjA4MjZhM2RhZjZmIGxlZ2FjeS10cnVuaworMTYyNTcgNDIzYTViOTUwY2M5ODNjYTI5NTQwOGIyNWI2NzU2NWU4MzA1OGY1MyBsZWdhY3ktdHJ1bmsKKzE2MjU4IDAzYmM1MWU0M2Y3YWY3NTViZWUwYTJkNzI5OWEyYzg4NmUwNzMyYTQgbGVnYWN5LXRydW5rCisxNjI1OSA5NTQ1NGI3M2VhOTFkM2Q2YmEyZGY3MzEzYzBlZTUwNjM3NDEyOWZjIGxlZ2FjeS10cnVuaworMTYyNjAgYzgzMDg1NGZhNTA3YWRkYTgzZDVmNjRiOWRhNzQxYzg4N2NmMzBiMyBsZWdhY3ktdHJ1bmsKKzE2MjYxIDA0Njc5OWEwODA1N2MyOWZiOWRmOGYwMmYwN2MyMThiNmQwNjc4NzcgbGVnYWN5LXRydW5rCisxNjI2MiBkOWNjNjIwZmYxODZlZjhhYWZiNjFhZTVlMzhjYjY1ZWVmOTVhOTEwIGxlZ2FjeS10cnVuaworMTYyNjMgY2EzMmZmN2EwNjdlNjk1YzFkM2IyMmY1OWE4YjJiMTcyZWNjYTNjYiBsZWdhY3ktdHJ1bmsKKzE2MjY0IDczNDhjY2VlZThmYWE5ZDRiODc1NWJiNGYyODY5MzlmNDYxYWQyNDEgbGVnYWN5LXRydW5rCisxNjI2NSA2NDg0MDk4ZjQwZmMzZDI0OGQ0ZDVkYjJhNTI1ZjBjNjc4YzI1NWQ4IGxlZ2FjeS10cnVuaworMTYyNjYgODI1NmQ2MTk4ZWMyZjdiODliMjQ3ZDkyZmMwMTUxYjI0YWMzZTA5ZCBsZWdhY3ktdHJ1bmsKKzE2MjY3IDBlZGViNGVmZTZkYmMzOWNlNzc5YjNlMzI3MTJhODYzY2MzOTdiNDEgbGVnYWN5LXRydW5rCisxNjI2OCA4NmIzNjdkMmU3YWZhYmNmMDdiYjBmYTBmMmJiYTgzODkyNjIyMjQ2IGxlZ2FjeS10cnVuaworMTYyNjkgYzA1ZWI5MDJlNTYwMGQ1ZTUwZDU1ZDBlNDZjODE4NmY1NzNiZDQ4MSBsZWdhY3ktdHJ1bmsKKzE2MjcwIDdiMGY0NDgzYzMzMTc2MDRkNDliMzdjZWIyYzlhNjAwZjdiODUyZjggbGVnYWN5LXRydW5rCisxNjI3MSBmYTc0MTk4OGRiMTc4NWQ4MzNhODZhZDc3MjAyODI5NmViMDgzYjM5IGxlZ2FjeS10cnVuaworMTYyNzIgZDAxODQ4NTI3MWZiNGUwMDJjNzIxOGVkMTkyOWI3ODhkZjg3NDY1YiBsZWdhY3ktdHJ1bmsKKzE2MjczIDE4Mzk1Y2E1YzMwZWZiYjdlMjFlMWI0NjUwODUwZDAzZjQ4OTdlYTcgbGVnYWN5LXRydW5rCisxNjI3NCA5YTQwZjE4ZjA1NjFmZmYyYzY0YjQ4Yjc5ZGEyZjkxYmI4ZGMwMDcyIGxlZ2FjeS10cnVuaworMTYyNzUgNjA1N2Y0NGIwYjdhYzVjYzQ3OTkxNDVlNjQ1MTY5ZTM5YTdmMjZlNiBsZWdhY3ktdHJ1bmsKKzE2Mjc2IDUzMDRiODhmZTNjY2YwNzllNTY0MzVmYjYxNTMyMTc4ODA3NDg3Y2UgbGVnYWN5LXRydW5rCisxNjI3NyBjZDdhYmI0ZmViMWJhNmYzZjVhM2FhYzNmZDc4ZmU2MThiMGMyYTRiIGxlZ2FjeS10cnVuaworMTYyNzggZTQ0Y2E2MWRiNzE1ODRmNTRiZDAzZDA0OWU0ZmY2MDJmYzU1NjliMiBsZWdhY3ktdHJ1bmsKKzE2Mjc5IDRmMTEwNDQxZGIzOTE4MmFhMzcxYjI5YjI0NWUxOTMzZThlNzE2MjQgbGVnYWN5LXRydW5rCisxNjI4MCA4NjcwNDQzMmQyODNhNWQ0YTdkYzUwOTYzZjI4ZTM3MzNmYjlmOTQzIGxlZ2FjeS10cnVuaworMTYyODEgMDcwZTQxZjI2OTdiNmNmOTc2ZTgxMGMwMzQ2YmNmY2IxNzA3OGM0MSBsZWdhY3ktdHJ1bmsKKzE2MjgyIDI3ZDg3ZTA3MmJmYjA1MmM5OTcyY2ZkNGFjM2U2OTgyOTE2OTNkZjAgbGVnYWN5LXRydW5rCisxNjI4MyA0ZGJjNzVjMTg5YmNlZDljZTA2MzVmZDhjYjY3ZDY2M2I4NDM1ZWEzIGxlZ2FjeS10cnVuaworMTYyODQgYWNjNDYzOGYzN2Q1N2E2MGUyNWFlODc3M2Y3Zjk3OGM3ZDU2NmU2YiBsZWdhY3ktdHJ1bmsKKzE2Mjg1IDAyNDc0ZGY1NDZmNjAwYTNkYWYyNzc1Y2YxNDgxZjI5YWMzMTNhYmMgbGVnYWN5LXRydW5rCisxNjI4NiAxNmU0OTA0NjJlNmJmMTk4ZDE1MTc4NjdmMGQwNDhkN2NlZTQwN2ZmIGxlZ2FjeS10cnVuaworMTYyODcgZjMzNmEyNjdhMmEyNTYyOTY0Y2I5N2E1YmY4ODY1MTkzYmE1OGViMCBsZWdhY3ktdHJ1bmsKKzE2Mjg4IDM2ODZkMTIzNjJiOGMwOTYwZmI5N2Q1NDRiZDQ1NDg1M2RlMzRmNmIgbGVnYWN5LXRydW5rCisxNjI4OSAwN2MzMTE4MmYyMzcxZDA0MTIzY2FkOTJjZjU1YzEyNTkwYjk3NmMwIGxlZ2FjeS10cnVuaworMTYyOTAgZTg0OGQ2ZWQzZWI5ZDAzYzYyNjIyZDFhZjQ5Mjk3ZTYxY2U3MTY5MCBsZWdhY3ktdHJ1bmsKKzE2MjkxIGJhYmFlOTEwYzJlMTNhMzYyMjlmOGY2OTc0YmZhMmMxMzZjNjIwOTMgbGVnYWN5LXRydW5rCisxNjI5MiBlZDU2NWIwZmU2NDg0MTc4YjFiM2E4NDc4NzE5ZTZhNTk4OWRjM2FjIGxlZ2FjeS10cnVuaworMTYyOTMgMzA0OTVkNzNiOTQzNjE1YTY0N2ZmMzVlMTFiZGM2MWEwZGFlNGNiMCBsZWdhY3ktdHJ1bmsKKzE2Mjk0IGIwNjM2YTUyN2E4Nzk5OWFkZjkzMTAyNTQwMWZhMjUxMGZiZTM2ZjcgbGVnYWN5LXRydW5rCisxNjI5NSAxZTdjMzJiZGRiOGY3MDA0MzRmYjUzZjk4NTZlNTBmMGMyNzIyM2MyIGxlZ2FjeS10cnVuaworMTYyOTYgNDdmZWM0OGNhNDk1OTQ2OWIxYzY4NjllMjQ5NWM1ZjA2MTRhMTU0YSBsZWdhY3ktdHJ1bmsKKzE2Mjk3IDhiMTM0NWZmOTgwMTNmOTJmOGVkODdjYzM0NTk5ZTVjNGVkNTIzOTggbGVnYWN5LXRydW5rCisxNjI5OCA5N2NkNDczNjM5MmMxNzc3OWIwYzk3MTZkODc3Mzg0YWJiOTcyN2UwIGxlZ2FjeS10cnVuaworMTYyOTkgYjlmOWRhMWEzZmM0NzNmNTEzMDU3OTI0NTFiY2FhZTM0NTE4NDFjNiBsZWdhY3ktdHJ1bmsKKzE2MzAwIDQyMjg3NzVkNDU1ZWQ1N2IxNGE5OWIyYWQ2OWU2MzA4MWQxMTJhYjYgbGVnYWN5LXRydW5rCisxNjMwMSBmZWFiNjc3MjY5ZTA4YzE1ZWMwZmFhOTVlZjY5MzdmYmIzNWRkODliIGxlZ2FjeS10cnVuaworMTYzMDIgMDYxNWRjZWYwMjRkZTA1ZDM2MTI3NzU0MGJkYWNlMWQ2ZmM3OWM2MCBsZWdhY3ktdHJ1bmsKKzE2MzAzIDlkYmVlNGI0YzAzZmRhYzhkM2IzZTYyYjZkNTNkZWMwZDY3MDI0MzUgbGVnYWN5LXRydW5rCisxNjMwNCBkZGQ2MTM4YzllNmZlNzYyZGJhMWU3MzFjYWY4MDcwYTMzM2YwYTVlIGxlZ2FjeS10cnVuaworMTYzMDUgN2FhNTFlYmY0ODNmOTkyZDNlNDkwMjZhOGJkNzQ5YTA2NGQzNzA0MSBsZWdhY3ktdHJ1bmsKKzE2MzA2IDNjZjRmNWFlZTAwZTJmYWMzZmQ0MDk0Y2JiNjBmYmZlNmJkN2U1YTMgbGVnYWN5LXRydW5rCisxNjMwNyAxZDY2MzA3OTIyMTI1OTExYTYzZWM1MGQyODkyMDI4YzUyYjliZGVjIGxlZ2FjeS10cnVuaworMTYzMDggMWY4MmE0YmZkMjk0NTU4ZTVhODE4Yjc4MTgxMDljZTVhNzQxMzJmYSBsZWdhY3ktdHJ1bmsKKzE2MzA5IGRiOTYzYTYxNWJjOTMxMmMxYzk2YzMxMzQxMzkyMDkyZTAyYWJmMjIgbGVnYWN5LXRydW5rCisxNjMxMCBkOGI4NzQ5ZGUwNGFiYTYxZDY5ODFmOGE5MDFjZTNmOTM5NWRiNDJkIGxlZ2FjeS10cnVuaworMTYzMTEgMzMzODg5MjdhYzJmYWE3OTAxZmE2NDVmZmRlMDViYTFmNGZkOWMxMCBsZWdhY3ktdHJ1bmsKKzE2MzEyIDk1YjlkZGIwMDM1MjNlMzY3ZWJiNjhlN2M3MjRiY2IyMjcxNGNmOTggbGVnYWN5LXRydW5rCisxNjMxMyAxNWIxOGUwY2MzZmQyNDgyOTAwODM4OWE2ZjM3YjM0YzI3YzU2OGM5IGxlZ2FjeS10cnVuaworMTYzMTQgZGQyYjUyMThlMDY5ZWEyOWU4OGJkMzBlMGM0ZmI5YzQyZDc0NzBhNyBsZWdhY3ktdHJ1bmsKKzE2MzE1IDYzMWI2YTAzYzE2MGViOWMzMmE2MDhlMDMxOTEwMjJhMzUxMmY5MzggbGVnYWN5LXRydW5rCisxNjMxNiA5MDZlZmMxZGEyNDdhMzYxNTcxZmYxYmRmY2NiODdlMjExNGJmMzllIGxlZ2FjeS10cnVuaworMTYzMTcgOWM3NGI4MjM5ZmY4MGY4NzJkNzk3NTdlMGQ3ZjUxZTZmYzQxOTYzNCBsZWdhY3ktdHJ1bmsKKzE2MzE4IDM3YjFhMzk2MDZjZThiZmI0YTdlODAzNmQ0M2UyM2JlYmM5MzRmZWEgbGVnYWN5LXRydW5rCisxNjMxOSBjMzk2YjYwMjYxN2RjNDYwYjc3OWQxODUwOWYyZTBhMzVjYjM2Yjc4IGxlZ2FjeS10cnVuaworMTYzMjAgNmE0NDM2ZDY5NThiMGM2NzQ5M2VjMzYyNzQ1MTVlYjg0OGJmYzUwYSBsZWdhY3ktdHJ1bmsKKzE2MzIxIGI3ODY1MzZmMjFhY2JmODM4MTAxOWRmNGVmMDcyZTRmZjIzMjYyMzEgbGVnYWN5LXRydW5rCisxNjMyMiA2OTg3ZTk0NTA2MTliN2NiZGU3ZmM3NGU3OWQ0MDA0OWE5NWVhOWIxIGxlZ2FjeS10cnVuaworMTYzMjMgZWE3MzI3MTliM2ZkMDdjMDE0MzEyY2QxM2NjNTYzOWJjYTE0YTI3MyBsZWdhY3ktdHJ1bmsKKzE2MzI0IDkxOWYzZDUxNzJhOTVlZjMzZGM1MTAyZjRlNGFmY2NmZTk4OGViZWYgbGVnYWN5LXRydW5rCisxNjMyNSBkMWY2YjY1NjEwM2IyYzIwMDhmYzI3MDgzZTQyYjE1ZmU1ZGRkMjA3IGxlZ2FjeS10cnVuaworMTYzMjYgNzk5MWFlYjM1OThmZWIyZWU3YjFjN2Q0ZjdlNGYxYzdmMGI1YjgzOCBsZWdhY3ktdHJ1bmsKKzE2MzI3IGU1NThlYjIyOGE0NjNmNTRkZDVjZWE5Y2RkZTlmZDBlMWM5ODMyY2QgbGVnYWN5LXRydW5rCisxNjMyOCA0N2E5NDcxOTU2YWY5YmZhYmQxNmVkMWNlZTg2OTYyYTFjODAxODBmIGxlZ2FjeS10cnVuaworMTYzMjkgY2ZiMmEwZDBhODY5NmYzNzc0MjM0MDg2NDEyZGI0MjNlY2JmYmEyZiBsZWdhY3ktdHJ1bmsKKzE2MzMwIGFjMmJiNzcwODMyMGRiZTQ3NTJhOTkwYzliZGEzMTlmYmJkOTcyYzMgbGVnYWN5LXRydW5rCisxNjMzMSA1ZDYxYjZmMmFlYTNjZGExYTczMTM4NDNhZWU0ZDA0YjQ1NDdiYmNjIGxlZ2FjeS10cnVuaworMTYzMzIgZWYzZWQ3NWYxOTVjNzgwYTc4OGM0YWU4MjI2ODBmNDczNGNiZDdlOCBsZWdhY3ktdHJ1bmsKKzE2MzMzIDNhOGM2NzAzMDlhMjFkYjRiMTc2NmM1ZGQ4ZGViNmYwOTk1YTQ3YzggbGVnYWN5LXRydW5rCisxNjMzNCBlNDE3ZDk1MjhmZDYxMTU0NGMxZmUxMzQ3YzI2OWE0Zjg5ZTU5MjBiIGxlZ2FjeS10cnVuaworMTYzMzUgMDFiMjMwNzJjYzc2OTY3NjIyMTI1ZjRiMjgyZjBjZjBjNWE2YTFjOSBsZWdhY3ktdHJ1bmsKKzE2MzM2IGNiNzZkN2RhNjcwMjc5ZTBlNjg5Zjg1NGM4NDhjNDUxZTJmNDU4ZTAgbGVnYWN5LXRydW5rCisxNjMzNyA3YzExOWYwNTAyOTBlM2EyZDlmY2UxMzA4NzRjZDk0MmIxZjcxNzY2IGxlZ2FjeS10cnVuaworMTYzMzggNjFlNGMyOWQ1M2Q4ZDI3N2JjOGMyNDllZmExYjczYWFkMTBkNjNiMSBsZWdhY3ktdHJ1bmsKKzE2MzM5IDJlNDViN2MyM2RjNjg2NWY4MThhZmM0MWM2NDY0NjgyOWRiOWM3YzAgbGVnYWN5LXRydW5rCisxNjM0MCBhMDMyMTAxZWQ5MjY0NGMyZTYyYTM2YTVlMDEzOGEwNDUxM2FiODk4IGxlZ2FjeS10cnVuaworMTYzNDEgZmZkNWU4YjY3Yzg0MzMyYjI4ZmQ0NmViYTVhOTVkMzY2NzA1NGM5ZiBsZWdhY3ktdHJ1bmsKKzE2MzQyIGI0YjZmMzk2MmJkMTIzOThiYTAzODZkNWExY2E3MDZlNjJmZTBiZDAgbGVnYWN5LXRydW5rCisxNjM0MyBlODcxYmQwNWM2YTc0NGQyNWJjZWI4ODRkMmE0NGNhMTY5OTM2NWUzIGxlZ2FjeS10cnVuaworMTYzNDQgMDg0YTc1ODA1MWUwZTFjNmUyYjZkZTA2YzYzNWM5MTAyNWVmZmZmZCBsZWdhY3ktdHJ1bmsKKzE2MzQ1IGFkMWM4MjcxYjZmODI4ODYwZTU2NmYxMzExZDFlYTE4YmIyOGIwYWQgbGVnYWN5LXRydW5rCisxNjM0NiAyOTc3ZmJhZTRjYTUxYjRhMDQ0MDhlMGUzMDAyNzg4Y2M2ZTRlZjQ5IGxlZ2FjeS10cnVuaworMTYzNDcgODlmOTA1ODcwYzBhOTBkZTdiYWM2Nzc3OTc4ZGNjOWFlYjljYmViMCBsZWdhY3ktdHJ1bmsKKzE2MzQ4IDE0Y2ViMTU5ZTQ0OTlhMzc2NmUwYTMwZjIwOGY1YmNjNzNjZDM1YzkgbGVnYWN5LXRydW5rCisxNjM0OSA3YzEyN2E3OWEzNjllNTc0ZTdjOGJhNDdkMWQwYzNmMWEyYmEyMjFlIGxlZ2FjeS10cnVuaworMTYzNTAgNGZhZjhjMjJkYTYwYmUyYTJkNzgxZTNiMWJkZDk2MzlmNjFkMTU2NyBsZWdhY3ktdHJ1bmsKKzE2MzUxIDUwMjUxMTVkMjNjZjJiMWYwZDMxYTg5ZjlkZDQ5ZmI3YTJjODlmZDYgbGVnYWN5LXRydW5rCisxNjM1MiBjNTAzZDhlNDc0YjM3MGMyYTNjOTAxZDA0NmQxYzI5N2UwNDNiNTgzIGxlZ2FjeS10cnVuaworMTYzNTMgMjA3N2JmMTQxYjM3N2E0NDI2ODRkZDQwODVjOTZiMmYyMzYxNjBmOSBsZWdhY3ktdHJ1bmsKKzE2MzU0IDljYTUwZTI0MzNlYjQxZWYyNDk2YzM0MzQ5MmJjZjExMThmM2M0NWUgbGVnYWN5LXRydW5rCisxNjM1NSBkZjY0Y2MwZTg0ZTJhOTJhNzRlOTZlNDA0MTg5M2IzYjM4Mjk2NWYzIGxlZ2FjeS10cnVuaworMTYzNTYgNTk0OWI0NzU4N2Q5NTU1YmE0NmRhMjVhNjFmNmNkMmE5NDIxODljNiBsZWdhY3ktdHJ1bmsKKzE2MzU3IGExM2NlYTQzMGMxMzYwZTRlOGMyZTEzYzhkMjMzOWEzZWQ5MzZlOGEgbGVnYWN5LXRydW5rCisxNjM1OCA5MzBmNGJiYmQ5M2FhNmQxNTU5M2Y1YWY5NzY4ZTMyYzEzZTlmZTVhIGxlZ2FjeS10cnVuaworMTYzNTkgMjU4NDY4YTIwZDc0NTc2ZTVkZDdiMzFkNjAyODg4YTc1OWRlMDhiYSBsZWdhY3ktdHJ1bmsKKzE2MzYwIDA3ZDc0MDNjZWIwZjI1YWNjM2M2NGJlM2Y4YTMwMDRlMDI5NDA5YTcgbGVnYWN5LXRydW5rCisxNjM2MSAzMjYwMjIwYWFlZTQzZDJjNTdmNjg2NzRmYWY1MGI0NDA0MTFjZTM0IGxlZ2FjeS10cnVuaworMTYzNjIgMzlmNTRiOWE3ZjljYjY5NjIyNDMwZTNkOTc5NjNiYzZhODk5NzU0NSBsZWdhY3ktdHJ1bmsKKzE2MzYzIGVmOGIyMGI5ZjZmNTM3MTgyNzYyYzBjYzRjNjUwOGM5NWM4OTg5YmYgbGVnYWN5LXRydW5rCisxNjM2NCBkN2FlYzE3Y2QwYjUwNDZiNTk0ODBkNmQ1OWE2OWUwYzczZTNlZmIxIGxlZ2FjeS10cnVuaworMTYzNjUgNDJiNjcyYTA5YzRhMTAzZTU1OWZkNjEwMzNiMDJmOGI2OGI4NGFlNyBsZWdhY3ktdHJ1bmsKKzE2MzY2IDQ4M2U3NWVmYzExMTIxODBkZmE0ZjBjZDQzMDBmMjU3ZGY1YjgxMmYgbGVnYWN5LXRydW5rCisxNjM2NyBkYzE3ZWYxYTc2MTM4MGNiZWVlMmFmYTQyMGYxN2YyODJhNDQ4MTBjIGxlZ2FjeS10cnVuaworMTYzNjggYzlhNGExMzE2MTcwODA5MGIwNzNmODQ3OTZmYjM4YjFjMzRiMDc4YSBsZWdhY3ktdHJ1bmsKKzE2MzY5IDU1ODNjZmE2ZDJiMGYzY2RiMTQzYjQ5YWQwNDg3YTRjMzI4MGU3NTcgbGVnYWN5LXRydW5rCisxNjM3MCBhOTAxYzJjMDE2NmJhYTZhMTk1Mjg5YmVjMzM1ZTMwYzM5MWNiYzRhIGxlZ2FjeS10cnVuaworMTYzNzEgMjk1OTg3ZjNmYmQyMjAxMjc0MTk5YTRlZGVkYzE4OGVhZDI3MTQ4ZiBsZWdhY3ktdHJ1bmsKKzE2MzcyIDJlY2E0MDUxZjA1Y2I1Zjk0MTVhZjlkNmIyOTJjMmE0MDBkMDFjMTYgbGVnYWN5LXRydW5rCisxNjM3MyA4OGI0ZjNiNTA4ZGFhNTk4OWI1YzI2OTQzZWE5ZGFhODQ3NTQxNmFkIGxlZ2FjeS10cnVuaworMTYzNzQgZjM0MDFlZDEzMmExNGNmZjRhNjI4M2VmMzcwYmNjZWFmZTE1MzA4OSBsZWdhY3ktdHJ1bmsKKzE2Mzc1IDI2MDc1YzAzZjAyMjc5NTk1YjAyYjI3NTVmNzgyMzk4OTI2NDBmN2QgbGVnYWN5LXRydW5rCisxNjM3NiBlNzhlZGMzY2ZhZTZlYWU3MzIzNmQ4NzA4NTZkNTE2MWMyNWZkZTI1IGxlZ2FjeS10cnVuaworMTYzNzcgODdhNDE2ZDlkOWI2Zjc0MDE1NGU2ZTNhMGUzODViZGQ5YzM1ODVhYSBsZWdhY3ktdHJ1bmsKKzE2Mzc4IGY3ZDllNjE4NWY2MjIyYzFlYjJkNzRmYjRlNmIzYTY5ZGM4NjhmYzIgbGVnYWN5LXRydW5rCisxNjM3OSBmYTg5NDk2NTg0YzYyN2IzZmRlYzIzMmQzMmRlZTY1YTM1MzAyN2ZmIGxlZ2FjeS10cnVuaworMTYzODAgMDg2OTQ3Y2QyMDJjYzEzNTZlYTE4M2Q3MDhkMzhkMTRiYmE5YWZkMCBsZWdhY3ktdHJ1bmsKKzE2MzgxIGI3NDU0OGE5MGE2M2MwMzY5ZWRkMjQ3OTI5Y2Y3NWE1MjJmNGFmMmMgbGVnYWN5LXRydW5rCisxNjM4MiA1YjcyN2FiMzcwOTJkNTcyYWE3ODk0ZjYzOWNjZTEwMGM2ODk4ZjExIGxlZ2FjeS10cnVuaworMTYzODQgZjExYzQ3Mjc2NGFkMzcxNzE3Y2ExOWUzMTY4MjE0ZTkwZWFlZDA3NSBsZWdhY3ktdHJ1bmsKKzE2Mzg1IDM3OTE5NjdjYjMyZWY4NmZjNDkxNDUxNzAwMjBhODc2YTMzZGQzM2IgbGVnYWN5LXRydW5rCisxNjM4NiAxNjdkZTQ5NTM4MTJmYWNhYTZhZDFiZjIwMzAyNDJiZWFlZDA2YTkzIGxlZ2FjeS10cnVuaworMTYzODcgODNhNTk1ZTY5MWU0MjYyYjdjMjQyYjYwY2I4NWFkZWZkYTMwN2U1YyBsZWdhY3ktdHJ1bmsKKzE2Mzg4IGZkZmQxMDQ5ZjM2ZTk0M2U3ZDU5NDY4ZWQ4YTRlOTRkMzVmNDllNDkgbGVnYWN5LXRydW5rCisxNjM4OSBmNGRhNDM1NWFjZGU2MmZlNjJjYTY2ZGIzMGM4YTdmN2QyZWFkN2NiIGxlZ2FjeS10cnVuaworMTYzOTAgZjQwODRmNDQzZjMxOWRhNTk5NGE1NzIyNzBiNjFlNzVjMTI2NGI0NCBsZWdhY3ktdHJ1bmsKKzE2MzkxIGQ2ZDIzZDVlMjk2ZDQyZjRhY2FiZjUxMGQ3NzMyNjY2ZmRhYjVkNmEgbGVnYWN5LXRydW5rCisxNjM5MiBhMWFkNzkxZTE4MjE4MmVlNmM3MTQxNDhlODgxZGE5ODQyZjY0NjAzIGxlZ2FjeS10cnVuaworMTYzOTMgNzNjNjYxYmUxZWEzZGU2M2Y3Mzg2ZGY3OTM4OTgxNmYyM2FjYjkyZCBsZWdhY3ktdHJ1bmsKKzE2Mzk0IGZmODJmZDQyMmYxYzFhMzI4ZDJlM2FiMTY0YTkxODEzZTlmNWJiNTAgbGVnYWN5LXRydW5rCisxNjM5NSAwODU5NjA3Y2EzZTUzYmFhZjM1MWNkOGViYWRmM2I1NThhMDllNTNhIGxlZ2FjeS10cnVuaworMTYzOTYgZTE0NjliN2EyZTY4ZGIyOTI2ZTIwOTBiNzQxMmI1OWUyY2VhYWFhZiBsZWdhY3ktdHJ1bmsKKzE2Mzk3IDZmMGQ5NmU2YjVhNTEzY2I3YjE0MDdmM2M2MTJjMzRmYWY3NDRkNjUgbGVnYWN5LXRydW5rCisxNjM5OCBkZmI3ZWNmZmZlM2Q1YjFjNjZiNjRiN2YxMmE5NTc2Mjc0YWQyODQ3IGxlZ2FjeS10cnVuaworMTYzOTkgYjUxMjBmNThjNWRhNTgzMTBmOGRmN2MxY2U2ZmQ2MDVhNGNiMThjMiBsZWdhY3ktdHJ1bmsKKzE2NDAwIGQ5MDFjNDNlN2Q1OGNlOTlmN2FmODQ5MGMyYjM0YzgzZmZkYWUzN2MgbGVnYWN5LXRydW5rCisxNjQwMSA1ODM5OGMwZjk0OGJjODk2NzYzNzg5MDliZGExNDQ5YTQxYzU4ODQ2IGxlZ2FjeS10cnVuaworMTY0MDIgZTJlMjVlZWU2YTRiMTQ3YjhjZDMzMzc5MjdjZTMxODExZDZlNzkyYyBsZWdhY3ktdHJ1bmsKKzE2NDAzIDM3MThlNTM5OGZhZDM0Yjc2ODJhOTE2MmNhN2RmYzQ4MGY4NWI2OWYgbGVnYWN5LXRydW5rCisxNjQwNCAzOGVhMjc0NTVjYmIzY2I4ODc0YTg5ODYyNzYyNTBhN2ZiZWM0NzY1IGxlZ2FjeS10cnVuaworMTY0MDUgZGFjYzlmMTY3ZTk1OWZmNzBiNmJmZmY2ZGFkODIyODJhNDBmZWQzNCBsZWdhY3ktdHJ1bmsKKzE2NDA2IDE1MjhiYzNhYzczZDUwMzE5NDhjNmU0M2NjODg4ZDBlN2I3NDIzZjUgbGVnYWN5LXRydW5rCisxNjQwNyAyZDVhYTIxMmEzMjJiMmY5OTU4MzM3MjMwNmU0M2FlNDZmZWMxNTg4IGxlZ2FjeS10cnVuaworMTY0MDggMGMwOGRmYTYzNGMzNGU0N2JjMzM2YzU1ODVjZmFhY2NiM2QyMWYwZSBsZWdhY3ktdHJ1bmsKKzE2NDA5IDUyNTk1YjcwYTU2ODQ4OGZhMzU2OTViYTkxYjA1OTlkMjU4NDNkMDUgbGVnYWN5LXRydW5rCisxNjQxMCBiMmZiZDlmY2UwNWU1ZTUwMDViZTIzZDkzZDRkYjMwZTdiMmYxZjYzIGxlZ2FjeS10cnVuaworMTY0MTEgOGVlNGEyMDlhOWVmNWJhYmQxYmYxMDgwNDA4YzZkZTNmYmU4ZTNhMCBsZWdhY3ktdHJ1bmsKKzE2NDEyIGY4MDU3MWJiMjkxM2U3ODc3OWE0NDE5MzFlMzZjOTdiZjdkZjY0NzMgbGVnYWN5LXRydW5rCisxNjQxMyAzZDZkMjE4YjY3M2QwY2YxNDU1YTMwODJhOWMxMGExZTQ0ZGRmOGFjIGxlZ2FjeS10cnVuaworMTY0MTQgOGEwNjM0MjNlMGI3ZGY5OTc0ODhmMzFlNmJiNmVhYzU3Yzk3MjEyNSBsZWdhY3ktdHJ1bmsKKzE2NDE1IDExN2QyMDk2OGExMDQyZDAwNTE4ODQ1Mzc3YWMxMjVhOWZjMTkyZjEgbGVnYWN5LXRydW5rCisxNjQxNiBhNzRhYTQ5YjBjMzdmYWQ5ZWU2Y2FhMGZkYTJiOWIyMTZkNzNiYTVkIGxlZ2FjeS10cnVuaworMTY0MTcgMGJiNDliM2RiZGYwYWNhZGJlMzZkMGUwMGEwNmIwZmU2ZTgzYWQ2MiBsZWdhY3ktdHJ1bmsKKzE2NDE4IDEyNjUyZGE2ZDYzMmJhMDhkMjc1MGZkZTE4YzdhYzc2ODI0Mjk4MWYgbGVnYWN5LXRydW5rCisxNjQxOSA5OWRkMWM5MzMxNjE2YmRiODk3N2NmMTQyNDlkOTI1MGU0NTg4Zjc5IGxlZ2FjeS10cnVuaworMTY0MjAgNmE1MzE0YTZjMmMyOTllMzNjNzNjNzk0YWYzMWRhM2EzYTEwMmU4ZiBsZWdhY3ktdHJ1bmsKKzE2NDIxIGY3OTQzNGVlNDFmYTg2MDE5MjE2MjQwYmEzMmJlNjYwYmNmYzU0MTkgbGVnYWN5LXRydW5rCisxNjQyMiBlNzgxNTNlMTc5ZmJjY2FhNTEyOTdhMDkxMTVmM2Y3YTVhYWU2M2M5IGxlZ2FjeS10cnVuaworMTY0MjMgYTFjZTA3MjE4NzgxMzRiMzZkNTBkYjExZmQ4MmYwN2Q4NDNkZmVmYyBsZWdhY3ktdHJ1bmsKKzE2NDI0IGVmMjVmMzJjNDUyMzkzZjBkNGQxMDFjMzI3MzQ3YTE0M2UwMTdlZDMgbGVnYWN5LXRydW5rCisxNjQyNSBhMzg1NmFiNmIyMDZkN2QyY2Y2YmE2NzZiMGI1MTk5N2NlYWYzZjZiIGxlZ2FjeS10cnVuaworMTY0MjYgMjlkYTM1NTQzODMzMjE2MDM2ZDk0MTUyNzVjYzNlY2M2MGNkYjdjMyBsZWdhY3ktdHJ1bmsKKzE2NDI3IGVlMTA4MzRkNjdhMzZjNGY3YjI2MzA4M2Q3YmE3M2Y2YTJiNDc0MTUgbGVnYWN5LXRydW5rCisxNjQyOCBlYWZiNzk5NjNlYTY0ZWU5MTUwNGRkYjRlMjg4MWUyYzdkOTVjMDQzIGxlZ2FjeS10cnVuaworMTY0MjkgMzZkZTdiNmFiN2ViOTk0MTcwMTMzYzFjYzM5ZDhlMDdiMDZhZGNhOCBsZWdhY3ktdHJ1bmsKKzE2NDMwIGE2YzdiZmRkNjc3NzQ2NGFiZTk0NzlkMjgyYjU1OTlhZjk5OTk5Y2QgbGVnYWN5LXRydW5rCisxNjQzMSBkN2Q4MWVhOWM4MmRlMDE3NzE5YzUzY2ZjODE3NDEzZWZiOWZmNjE2IGxlZ2FjeS10cnVuaworMTY0MzIgZTk0YzA1MzUxZDQzNzRiZWE1ZDlhMGJiNGI2MTdlNTJiYWFkNTZhNyBsZWdhY3ktdHJ1bmsKKzE2NDMzIDQzODgyNDk1MDZkMTkwYTc2YTRkYmJiYzcwMjk0ZWY2YmEwNjU2ZDUgbGVnYWN5LXRydW5rCisxNjQzNCAyNjY4NWJkMmMwOWU2MWJmMzg5NjU1ZjgzZWYxNGY0MmI1NjA1NWQzIGxlZ2FjeS10cnVuaworMTY0MzUgYmZjNWIyYThjMTFmNWU2MjY2ODJiOThkMzc2ZmEyZWY2OTcwYTM5ZCBsZWdhY3ktdHJ1bmsKKzE2NDM2IGNjMGMwZGM5ZmVmMGRjNDQxYjg1NjNhOWI0NGM4ZDA0MGMyZTAzYjkgbGVnYWN5LXRydW5rCisxNjQzNyBjOTBkOTRkMjg3ZDc5Yjc0NWU0YjVhMGJkNTUxNWNlZGE3MzE3NGU2IGxlZ2FjeS10cnVuaworMTY0MzggYjE5NTlmMDA2NTY2NTkxYjNiZTE0MDFiOWNkMGYxNjQ1MWViYzYwMCBsZWdhY3ktdHJ1bmsKKzE2NDM5IDU0MjNiMTMyYmM5N2FmNGQyNDA3NmNlZjE2ZjI3M2I2NGZhZjA0ZDMgbGVnYWN5LXRydW5rCisxNjQ0MCBlZGIxYThlNmI4NTk1OTYwYmJkZDc4YmJjNjBhZTFmN2RlNzViZDkyIGxlZ2FjeS10cnVuaworMTY0NDEgMzE3N2UyODI5MTY3Nzk3ZWEwODE2Y2Y3MDcyZTQwM2NmOGMyN2FlOCBsZWdhY3ktdHJ1bmsKKzE2NDQyIDYxZjY1ZGUxOWUxZTY4ZWFhYzk3NWUzYmM1NTI0NzExMmJmYjA0MmIgbGVnYWN5LXRydW5rCisxNjQ0MyA5ZjYxODllODkyMTIxNTk0NjlhNjE1ZWE3MjQxMDU5ZGRhODJmMmEyIGxlZ2FjeS10cnVuaworMTY0NDQgYjBlODM5NjJmNGRhNzA4ZGI3OGVmMTcwYjQ0MzEyM2JhYjNiMmQwZiBsZWdhY3ktdHJ1bmsKKzE2NDQ1IDdkZTE4ZjA0Zjg1YTc3YTFkNTVhYjYxOTFiZmUzYmM1OTVkYTc1NWEgbGVnYWN5LXRydW5rCisxNjQ0NiA4Y2IyNGUwYmVmOWJlNTljM2RmNTA4ZmQ2MTgzYjVjZjM4NGQ5OWJhIGxlZ2FjeS10cnVuaworMTY0NDcgZWMxOWEwYThjZDY4NzdiMTlkNDI1ZTQ4YzdhYWYwODVjN2I0N2I4ZiBsZWdhY3ktdHJ1bmsKKzE2NDQ4IDEyOWM5Nzc1Y2MxOTMyMGNlNTg4ZTA0Y2E4N2EzNDc3MGVhZWQ1OTggbGVnYWN5LXRydW5rCisxNjQ0OSA5YTU4NTVlYTNlNTZhZTU0Mzk0MDU3M2Y1N2JmMzlkZWY0OTA1M2MxIGxlZ2FjeS10cnVuaworMTY0NTAgNjM4MzJlZGU1NzdmYzU5ZjliNDhhZWM5OWViNGY0ZWQ1YTBmNjMzZiBsZWdhY3ktdHJ1bmsKKzE2NDUxIDk1ODk0YzMxMDhkMTk4NWY2MDQ4NWUzNDViMTAzNjgxZjgxMWExMzYgbGVnYWN5LXRydW5rCisxNjQ1MiA5ZGI4NmIyNzI3OGZjOTIzNjVhOGU0Njk4Zjc2MzY2ZmEyN2VhYTk1IGxlZ2FjeS10cnVuaworMTY0NTMgYzA5YzAxNzE0NzRmMGY0OWMxZGFiYzA4NGRhZDg0Mzk5NmI5OTBkNSBsZWdhY3ktdHJ1bmsKKzE2NDU0IDBmMWM2MDUzZThkMDkyMjM3MjhjYTc4YWRjZTA2ODc2ZTMzYzdhYmUgbGVnYWN5LXRydW5rCisxNjQ1NSA3OTNiYmFkNmQwOWNmMDgzOGM1ODBiYzYxZTA0OTI0ODFiMmY0NzM2IGxlZ2FjeS10cnVuaworMTY0NTYgMjVmYzY4MDc3YjY2NTQzNDAyZTcyYWY4OWEyYmRjMGFiZTM0ZjA2YiBsZWdhY3ktdHJ1bmsKKzE2NDU3IGI1NGYxMWFkYTkxZWEwMTM4ODVhMzE0OGFkNWJkMDYwYmNiZTZlYmEgbGVnYWN5LXRydW5rCisxNjQ1OCBhMjhlZDhjNWU2MmUwMjZjYTI4MzVjYTg0YjdlNWYzNzEwZWNkMWQyIGxlZ2FjeS10cnVuaworMTY0NTkgYmIzNjRkNmY5ZjY5MjU2MDQxNjBiZTM2YzQyZTI3ODUwNzQwMmNlOCBsZWdhY3ktdHJ1bmsKKzE2NDYwIDVlMmU5MWZmYWRjZDhlNDg1ZWZhNDEzZjJjOGFmYTRlY2RlMzliNDMgbGVnYWN5LXRydW5rCisxNjQ2MSBjYjI5ZDRhMmMxN2IwYjNmZWZiNGM2N2MzOTNlZTA3MjlmYzg1NWI2IGxlZ2FjeS10cnVuaworMTY0NjIgMDI2ZTEyYWM5ZjcxYjQzOWVjYzcwNmZlZjQ2ZDNhM2YzMDE1Y2FkOCBsZWdhY3ktdHJ1bmsKKzE2NDYzIGQ2ZGRlZDNjODUwNzc4ZWMxOWJlM2NlODc4NzY0OTNjMTM1MmU4N2EgbGVnYWN5LXRydW5rCisxNjQ2NCBjNjgwMDNlZmI3OTZhM2ExZDA4ZDBjYjFiZGQ3N2Q5MmJhNjJlYjU3IGxlZ2FjeS10cnVuaworMTY0NjUgZjg0MGJmNmEzMzUxZTYzOGNhNDMxNDA1YTY2MDExYTcyMzkzZGY0NiBsZWdhY3ktdHJ1bmsKKzE2NDY2IDk3OTcwMTY5OGNkMjk3MTE1ZmRjMzNhOGFiNWMwYTZmZTA2MmE2OWMgbGVnYWN5LXRydW5rCisxNjQ2NyBjOWZkNTJkN2NhMGFlN2M5NDNjOTlmOTRmOWViYjE4NGVjYjk3MDQzIGxlZ2FjeS10cnVuaworMTY0NjggNDYxZjliNmVlNTU1NzViYTU2MWFjYTUxNzk1NjU4YWY0M2UxMGI3ZiBsZWdhY3ktdHJ1bmsKKzE2NDY5IDJlNjAzYmQwYzFhOTNkN2M0NzEyOTI0YWY2MTY1MzIzYjdiODE2ODMgbGVnYWN5LXRydW5rCisxNjQ3MCBkZDlmZmEwYTZiMTEwN2UwNzc2MTEyZWI2YWE5YmM3YmNjYjc2M2Y0IGxlZ2FjeS10cnVuaworMTY0NzEgZmU4OWVhMWM5MTA4OThiYTNkYmExOTk3NGQ1OTNmYzAwZmZhZDM0OSBsZWdhY3ktdHJ1bmsKKzE2NDcyIDRlMmFhZjFlNzIyYTc4NzI1MTcyNzA2MDhjZjFlMjg2MjgzZjczMzcgbGVnYWN5LXRydW5rCisxNjQ3MyA2OTdjODhjYzQ3MTRkZmIwMmQ2M2VhMjJmZDExYzhlMDM1MTNlNjQ4IGxlZ2FjeS10cnVuaworMTY0NzQgNDg4ODZmYTgyYWQ1MGU4NmFhNWY4NWVjZTVmODJkYTk1NWZkNzZmMCBsZWdhY3ktdHJ1bmsKKzE2NDc1IDAwMDMwZWI4ODEzMWY4NDBmM2IyYmVlOTJkMDM3ZWM0YzkzNjFhNDEgbGVnYWN5LXRydW5rCisxNjQ3NiBjODdhMzdhM2QyZTY1Yjc2MTRkNzFjZGQzYTM1ZGJkMTkyNzUyYWNhIGxlZ2FjeS10cnVuaworMTY0NzcgYzlkMDM5MTk2ZGI2MTA4YjIyZWFlM2JhNmEwOWE1YzVhNzZhNzM5ZSBsZWdhY3ktdHJ1bmsKKzE2NDc4IDA2ZDQyMjU5MTlkNGQyNjM3MjY3OWNlMzA3MTBjNmE3ZTllNmY5ZDEgbGVnYWN5LXRydW5rCisxNjQ3OSA2NTc4ZmFmNDhjZDFkNDljZDk4OTcwNDVlODk4ZjhjZWU1NjNmYjZlIGxlZ2FjeS10cnVuaworMTY0ODAgNWMzZWU3NmQyNDJlM2U4ZjFlZDY2ZGExOWFhM2JkNzY3OWMzZGUxOCBsZWdhY3ktdHJ1bmsKKzE2NDgxIDE3MjkzZjEyZTg4NDBlYjJlN2Y4NDAxMDhlNTBjYWE5MzQ3MjMxNDIgbGVnYWN5LXRydW5rCisxNjQ4MiA3NjdiMmY3YmU0MGU2M2RmZTU0OGUwZDJiZmY3ODUwYmRkZjI1MTJiIGxlZ2FjeS10cnVuaworMTY0ODMgZDNmNjk0MDIzNjQyNWJjZjg4YTAyMjVkMjM0MTkwNTQ5N2M5OTNlZiBsZWdhY3ktdHJ1bmsKKzE2NDg0IDA1ZDU5ZjQ0NzZhZDUwZjZhOTQ5NjRkMmE2YmJlMDc5ZjEzM2RjYjIgbGVnYWN5LXRydW5rCisxNjQ4NSBiM2U4ZDJlM2RjNzNiMDRiMGVkMTNkZWMyNGYyZWU2ZWMyNjU2MjM5IGxlZ2FjeS10cnVuaworMTY0ODYgYjdjOTNjNjc3ZTU2NTg5ZTY2MDM3Y2VhMWE3NDdkOTJmMDNlODMxNSBsZWdhY3ktdHJ1bmsKKzE2NDg3IDU3ZDAyZjYzNGEwMmI3Nzg5MGM2MDkyZGJmZDE3YmZlMDJhZWEzNzkgbGVnYWN5LXRydW5rCisxNjQ4OCA0NDlkZDNhMDBiZDcyOTI5ODk2ZWIxMDczNGNkZjg5Y2M2NDczZWU2IGxlZ2FjeS10cnVuaworMTY0ODkgZWNiOGFhY2ZmMmUzYWU4NmZmNTM3Y2UwYjBkYjkyYjUzNDZjMTlmZCBsZWdhY3ktdHJ1bmsKKzE2NDkwIDA1MTc3Y2Q0NDFhMThlNzg2NzhlZDk3YTZmNDJiZDJiZDNmMTBhZTMgbGVnYWN5LXRydW5rCisxNjQ5MSBiNzY5ZTJkZDZhNTFiZmZkNjYwN2UwZjU3NzlmM2RhMDI1MmQwZGEwIGxlZ2FjeS10cnVuaworMTY0OTIgNTQ4NjFiZjY3NDhkYTYzZjc4NGY2ZGU4MjhhYzg0Yjc4MGNjMTFmYyBsZWdhY3ktdHJ1bmsKKzE2NDkzIDY4OWYxOTAwNDA2MzU0MzZiOTAxNzJmY2RjYjcxZTUzNTY0Zjg5NTAgbGVnYWN5LXRydW5rCisxNjQ5NCA4ZDk5NmY5YzU5MDNiZjBjZDZlN2I2OGJlNjZlYzM5ZmRjN2YxZTBlIGxlZ2FjeS10cnVuaworMTY0OTUgOWNlM2UwNWI3ZmRiMjc0YTZhNzU1OTk1MWUxODUzMjFkMDdlODY5NSBsZWdhY3ktdHJ1bmsKKzE2NDk2IGJhMzZhOWMzZjQ3NzE0MjAzNDYyZDJjMmRkYTgzODk4ZDUwNzFhYzAgbGVnYWN5LXRydW5rCisxNjQ5NyAzYjY5YTlkMDQ0ZjFjNDMxZjc4MzIyMTIyM2ZlZDIxMzU4YTZjYmRjIGxlZ2FjeS10cnVuaworMTY0OTggYTk0OWE3MmFmOTY5Y2IyZmY5NDAyYTFmODQ5NWU0ZmQwYTU3ZGYyYSBsZWdhY3ktdHJ1bmsKKzE2NDk5IDMyY2UyNTRmM2JlYTZmOTBiYTQ2NmMxMjk1YjY4MTE3YjI4MDI2NmMgbGVnYWN5LXRydW5rCisxNjUwMCBjMzFiMTNiN2RiNzQwNzUxMDY4YjZjNzRiZjQ1ZWIxMDc4YjZmNmM5IGxlZ2FjeS10cnVuaworMTY1MDEgMTQ3NWMxY2MzYmYxZWU5YzAxNTk1YmQ4N2Q2MWNiYTA2ZjM0NGFiNyBsZWdhY3ktdHJ1bmsKKzE2NTAyIDgyZDljMmYxMzA5OGU1Yzc2ZmY0OWFjY2JkNmVlZmRkZTZiZDE0MzQgbGVnYWN5LXRydW5rCisxNjUwMyA5OGQ4MTY5NTYzZTcxZDc0YWFlMzZhMzFkNDljYjZiNGQ2YmY0ZGJiIGxlZ2FjeS10cnVuaworMTY1MDQgZjY1Yjg2NzM4ZDNiNThjMjFiMTM5NmY2ODExN2I2ZjUzYmRkZmQ2YiBsZWdhY3ktdHJ1bmsKKzE2NTA1IGVlOGYwOWU0MTM5NTQ2MWJhYjhhOGUwMTg4MDdkMzY1ODQxZmFjOTMgbGVnYWN5LXRydW5rCisxNjUwNiBjNzZlNzRhYmI2NWJhZjNkZWY1NDQ1ZWIzMjQwNzU1OWM4MGIwYjZkIGxlZ2FjeS10cnVuaworMTY1MDcgNWEzMTE0ZThjMDI3YTk0NjNlYTg0OTM4Mjc4MmUyNjhmYmM4NTA2YyBsZWdhY3ktdHJ1bmsKKzE2NTA4IDVjMDY3YzFiNWVkMGQ4YTVlNjkxZjc5MzY5ZDkzMWU5NzJkNWM1NTMgbGVnYWN5LXRydW5rCisxNjUwOSBhNDRkYmJkZTVlY2ZkYTU3OWE5NjU5YjlkYmIzYTY2YzI5YTQ1ZGE5IGxlZ2FjeS10cnVuaworMTY1MTAgN2FlOWZhNDA5YjQ2ZjI2YzUyMzEwM2Y2MWIzODNjZmY1NDJjY2VlNCBsZWdhY3ktdHJ1bmsKKzE2NTExIDA4M2I0ZTU0NzE3MWVmOWE0ZGJlNDU3MmQxZDU0ZjBmNzE0MDQ2M2IgbGVnYWN5LXRydW5rCisxNjUxMiAxZTlmMzBlZWM0ODI0NDgxZWRiYWEwMzE0MmQzY2YwZTA2YTBkNWE2IGxlZ2FjeS10cnVuaworMTY1MTMgZGZkYjkxMWNiZWMyNTJjOTM2NjViYmMxZDdhOWY4YWRhZmI0YjRiNyBsZWdhY3ktdHJ1bmsKKzE2NTE0IDgzZGJhM2Y1ZjdiNDZhMDA4YjkwMDFkOTQwYjU1NTdhMGI3NjgwNzAgbGVnYWN5LXRydW5rCisxNjUxNSA4ZDEwNzU3YTU3NWIwYTZjZmU1MWZkODhhMzQzMjhiMDU5NzNjMWZlIGxlZ2FjeS10cnVuaworMTY1MTYgODRmODU3OWEwNzljZGFhYmZkYmVkOTU1YThlMTQ5NTA4NWYyZDNmZiBsZWdhY3ktdHJ1bmsKKzE2NTE3IGU4ZGMwYTBiZTRiYWNjMDgxN2ExNDVhNTY2ZDcyMWY1NzA5MGExNzAgbGVnYWN5LXRydW5rCisxNjUxOCA2MzJiZTk5Y2MyY2IxMzg0YzAyYzVmNWRiZDA4M2VhNzdmMzI0NWUyIGxlZ2FjeS10cnVuaworMTY1MTkgMDBlZDRiNzQzMDJmZDdlODY3OWUwNWIxN2ZkZDFjMDhiZDVhNjVmNCBsZWdhY3ktdHJ1bmsKKzE2NTIwIDY3YjliMDVjZTVhNWRmYjI3NTIxNjAzYzBlNjQyNzVjNzYzYWQ1OGUgbGVnYWN5LXRydW5rCisxNjUyMSBiYzM3ZTZhMzM1ZjIxNWQ5YjljYTkzZDVmMzZjNTRjMzEwYThkY2FjIGxlZ2FjeS10cnVuaworMTY1MjIgNDkzYjEwNjU3NjNkYmZjYmMzZjI0MjBlODVlODA5Y2MzNDc2MDE2YyBsZWdhY3ktdHJ1bmsKKzE2NTIzIDE2YjYwYmQ2YzM3NWRhOWJmNGZhZTY4MGQ1MGE4MGU0ZGQ4ODEzNzQgbGVnYWN5LXRydW5rCisxNjUyNCBkODlkYTE3YjQ2ZjYxMGFhNWZjZjk2MjI5MTAzZmVkMDdiYTgxNmI2IGNucmktMTYtc3RhcnQKKzE2NTI1IDZmOGQyNGIzMzJkMzVkNTk1Y2Y0ZjJiMmQxYWRlZDUwMGE3NzFmNGQgY25yaS0xNi1zdGFydAorMTY1MjYgNTlmOGNlZGNmMDQ5NTFjMzBmZDhhMGMyYTI5Y2ExM2NiODUyNTQ3ZiBsZWdhY3ktdHJ1bmsKKzE2NTI3IDJkMDBiY2VkNjAzODcwYTMyNzM2OGExNjU2MjljZWRkMzBjODE1N2YgbGVnYWN5LXRydW5rCisxNjUyOCBjMWZjNDA2NjQ2MDM4MmYzZDMzOTIyNzZlZDgzMzQyODcxMmEwOWVhIGxlZ2FjeS10cnVuaworMTY1MjkgZmRiYzg3MzBkMzU2OTg5NzBkZGRlNDBmOTU1M2FlZDBlOTJmYzQwZSBsZWdhY3ktdHJ1bmsKKzE2NTMwIGIxYjQ3NGNjODk2NjQzN2RhNGVhMjE0ZWUxNjY1MTQ3OGNhNzMxNjggbGVnYWN5LXRydW5rCisxNjUzMSBkYWQwMTMxN2JlZDcyZmFmNzA1ZWI1MDk2ZjE5ZDI5ZjMxMjI3YjExIGxlZ2FjeS10cnVuaworMTY1MzIgOGJiYzBlNjQzMmFiNDgyYmI4NzhiY2Q5NzgzNjAzNjYxNjY1MjBlYyBsZWdhY3ktdHJ1bmsKKzE2NTMzIDMyM2RlM2E4ZmY4ZWJjMjViOGYzNmI4NTUyMDk1OWZjZTM4YzczYzAgbGVnYWN5LXRydW5rCisxNjUzNCBmNzFjZDI0NTM1YzQwNjE5Y2M5MTYyZDlmMzI0NTNkN2UzMmNiMzAwIGxlZ2FjeS10cnVuaworMTY1MzUgYjA4YWIyY2RmNzQyZDEwYWRjODJmMjQzMTcyYTA4Y2M4NDBhMTMyOCBsZWdhY3ktdHJ1bmsKKzE2NTM2IDJjZmZjZDcxZDVlNDE0NzE0ODJkM2NjY2E0YmEzYzExNmU1NTY0ODkgbGVnYWN5LXRydW5rCisxNjUzNyBlZWE1MTI3NWFjYmZiNDQyZmFlZGFjNDNmZDAzZjg1ZjNhZmFlZjAwIGxlZ2FjeS10cnVuaworMTY1MzggYjZkOTNkYmExMjBlYWI1ZDU2MTAyMjM3YzNmMjM4YTZkZjUyOGYyOSBsZWdhY3ktdHJ1bmsKKzE2NTM5IGYxYzk3YWY0Yzg0NzA5YmU2MmE3MGY2NmIwNGZmMTEzMDgwODdkY2QgbGVnYWN5LXRydW5rCisxNjU0MCA5ZmJjZmJmOGExZDI5MmI4ZmVmMDNiZDM4ZGZjNTYzNGU1MDVkNjllIGxlZ2FjeS10cnVuaworMTY1NDEgMzNkZjNiNTE2NzExOWUwNTNiMGRlMzIwYWRjMzU2M2ExMjFmOWUxNSBsZWdhY3ktdHJ1bmsKKzE2NTQyIGIzOTAzZTA1MDE3ZjE2MDQyYTY1MDkxNjBmYTY4NGM0NzhmYjYwZDUgbGVnYWN5LXRydW5rCisxNjU0MyBmNmU0YTlkZDY3Y2RkM2VhNGFjY2VmNzY5NjY2M2FmMjM1NWQ5M2NlIGxlZ2FjeS10cnVuaworMTY1NDQgYWI0MmQ0NTQyNDI0ODUyZjkwZDU5ZTNlZjI4YmUyMmE1NDBiMjg2MyBsZWdhY3ktdHJ1bmsKKzE2NTQ1IGUyMGZlMDA1MjY4MDk1NTRjMDhiNGY2MWI4OGU0YTBjZTZjODE2OGMgbGVnYWN5LXRydW5rCisxNjU0NiBhZDM5MDI0MGVmYjNiMDk1YWMxYThmYmMxMjhlMDYyYjdiMDI4ODYzIGxlZ2FjeS10cnVuaworMTY1NDcgZmYxMTFkMjg5OTA1ZDUyNDc3YzM1OTExMDkxNjRkN2M3OTk1MWI4MSBsZWdhY3ktdHJ1bmsKKzE2NTQ4IGMyNGY3NzU1YjFmNTI1NTFkMDViZGJmMzliNWQzMTRhOWYxMDg0ZDAgbGVnYWN5LXRydW5rCisxNjU0OSAxYzE4NjAzMDY4ODIyOTcxNmNlZTNhYmIxMzM3YmNlYzI2YzVjNmQ4IGxlZ2FjeS10cnVuaworMTY1NTAgNDIwNDU2NGFiZjIwYzUzZmZlYTY0YzY1MDBhYjFjZjgyOTA3ZDEwYSBsZWdhY3ktdHJ1bmsKKzE2NTUxIDY2NTc5NTZhZjMxZTBhYTY1ZmQwNThlOGZkNTNiODJlYmJmYTI0YzcgY25yaS0xNi1zdGFydAorMTY1NTIgYzkzNjg3ZDZjNzMxNzE4ZjlmYzI0YzkyYjJkNWUyNzU5OWE2ZTAzMyBjbnJpLTE2LXN0YXJ0CisxNjU1MyBmMTI5MGFiYTI5ZGE0YTI3OGFhZThmYzQyZGE5ODhkOTMwNjJmNDFiIGxlZ2FjeS10cnVuaworMTY1NTQgMWY5NjZmMGQ0NjdjYTFkYTc0YmY2MjU1ODEzMmIwNTE0NzA0YjdjNiBsZWdhY3ktdHJ1bmsKKzE2NTU1IGY2NjUxM2EwZGVhNWE1NWUyYWZhMjRmODE0NDhmMWJhMzFkOTM1ZmQgbGVnYWN5LXRydW5rCisxNjU1NiA0ZWRkMTNlYjc1OWQyNmMzZjYwOGE2ODdmMTE3YTIzNjMxZjE3MWNiIGxlZ2FjeS10cnVuaworMTY1NTcgYzY2ZTk5MWI1ZjIxN2NiYTY5OGQ3ZDA3ODcwY2NmMzQyYTZjOWIzNiBsZWdhY3ktdHJ1bmsKKzE2NTU4IDA2Mzc0MTNlNTkzOTdlNzQ4NWM1YTU2OGY2YmU5ZGFkNzI2NjVmZWYgbGVnYWN5LXRydW5rCisxNjU1OSAxYjc4MTM1NzVhZjdkYzk0MjhkZmVhNmFmNjAwOWUzMTQ4ZTkwMTk1IHVubGFiZWxlZC0xLjguMgorMTY1NjAgMzUyOTY4ZWU0MGU2MjlhZDI3ODNmZmRhMGNjNWI2NzkyOTA3NzJmNCB1bmxhYmVsZWQtMS44LjIKKzE2NTYwIDZmN2FiNzRiMTI5OGRhYzUxYTIxNDNiMmY4M2IyYjY4MDNlYTEyZDUgY25yaS0xNi1zdGFydAorMTY1NjEgOGZiZjMwN2I5MGE2YzJmNGU0N2FmYWQ3NGJhNTRlZTg4N2NiYzA5MCBjbnJpLTE2LXN0YXJ0CisxNjU2MiAxMzZkM2Q3MjY2NmE3OTUzZmM3NDJlMzhkZTE3MWE1MGI1ZDU0N2IxIGxlZ2FjeS10cnVuaworMTY1NjMgNGMxMGJjODExZmVkYWFkNmExYjliNzkwZjc3NmY5NDAwMTVhMDk1OSBsZWdhY3ktdHJ1bmsKKzE2NTY0IGJhMTM4M2M5ODdjOGRlOTg4Mjg5NjQwYTMwYjJjYWI1NDMyZTE5NzkgbGVnYWN5LXRydW5rCisxNjU2NSA4Mjk1Zjg1MDZlYWVhNzU5NmY5M2M3NWNlYzAxNjI1ZGRhYWIxOTFlIGxlZ2FjeS10cnVuaworMTY1NjYgNDJhNGE0MTdiNDc1MDNmZDMxYzExY2Y1ODUxNjVmYzBiODgzMjc5YyB1bmxhYmVsZWQtMS4yMy40CisxNjU2NyAyYzc4Njg5NmU1NDlkNGVlYjc1ZjFiNDRiYzM3OGNlYzE0NDcwODlmIGxlZ2FjeS10cnVuaworMTY1NjggZTAwZDNjZTcxZjg5M2FiY2U1YjE3NjcwYWU4YThiZmFmMTQ3OGI3MCBsZWdhY3ktdHJ1bmsKKzE2NTY5IDAzMWRhZTA4YTBhOTg4MDJkYTZkYWRlZjY4YTBmODRhNzg3OWY4OGEgbGVnYWN5LXRydW5rCisxNjU3MCBhYzQ4ZDA3N2VhYWM5N2JjNWNmMzIyOTQ4MDQ4ZGFhZWM4ZWYxNThjIGxlZ2FjeS10cnVuaworMTY1NzEgNTQ2NjMyNGJiODExNGVmN2JhODg5ZmE4ZjQ3MWYyNDI1Mzc1Nzg2NyBsZWdhY3ktdHJ1bmsKKzE2NTcyIGZkNDM3Mjc4NzYxMWFhNzFlY2M2OTlkYmRiNmI5ZTA3ZTQwYzY5MTEgbGVnYWN5LXRydW5rCisxNjU3MyBiMWE3ZjYxYWI3ODExYjFjZTI4ZDc0YjUyZWIwY2UwZjE0OTVhOGIwIGxlZ2FjeS10cnVuaworMTY1NzQgZThiMjJiYzg4ZDk1ZWEzZjdmMWFlMDVhYmM1OTM2YWI1ZjM2MzYwYSBsZWdhY3ktdHJ1bmsKKzE2NTc1IGM3N2Y4ODczZGE4NDEzMjQ4MmMyZGY3ZTk1MTZjMjc2ZTkwMGVkOTIgbGVnYWN5LXRydW5rCisxNjU3NiAxMTYyNTYzM2QwZjY3MDBmYzAyZTgyOTRlOGY1M2RlZDZmNmM4ZmEzIGxlZ2FjeS10cnVuaworMTY1NzcgZGU5MDY2MmYyZWFiMTU0NmNjZWU1YWQ0NzcyMjBkNjYyZDQ3MjRiMCBsZWdhY3ktdHJ1bmsKKzE2NTc4IGJhOGRiOTZlYTRkOWZkNDVjZGU3ZWU4MzY2Y2Y5ZDU3MWY1MDQ1ZWIgbGVnYWN5LXRydW5rCisxNjU3OSAzNzRkYTU4MmVjMTJmNGRhYThmZWIwNmJkZGJmMTAyZTA1MDIzMGQ1IGxlZ2FjeS10cnVuaworMTY1ODAgZjM5NjhkZDE3MTFiMjVhYjdiNzU5MGM0ZjViODhkMWNiOTk2ZTU5ZiBsZWdhY3ktdHJ1bmsKKzE2NTgxIDc2MjM3YzBjYmYxMzNmNmRiOGE2ZGNkOTVhNWFlNjk5ZWUzZDFiZDYgbGVnYWN5LXRydW5rCisxNjU4MiBmMzhlMzIxYmU4YTQzNjQxNjAxYTI4NmUxMGMwZmQ5ZWY3NjQ3MTVlIGxlZ2FjeS10cnVuaworMTY1ODMgNjQ4NzNjZjIwYjE2YjQwZjk5MTEzOGFlMGM4OGYxOWU3ZGRiYjdkNCBsZWdhY3ktdHJ1bmsKKzE2NTg0IGFjZDA3NTVlZTc3MjUxMzhmNzI1MGZjNDc3YzRkODFkMGZiMDQ2MzYgY25yaS0xNi1zdGFydAorMTY1ODUgNGY3MzdmYjA0NTI4ZGJkYjFlZDI1Y2IyZjc1ZTQyYzk1NWNmOTczMCBjbnJpLTE2LXN0YXJ0CisxNjU4NiA0MWFkMzZmYjAwZWU5MzVlZmQ5NmUzZjdiNjE0NGU1MjZmY2M4ODczIGxlZ2FjeS10cnVuaworMTY1ODcgNDVkOGYyM2RmMjE4MmMxZDc2NjY5ZTQ5OGZhNGRlMGIxODM1MGFjMSBsZWdhY3ktdHJ1bmsKKzE2NTg4IDUxZjI5ZmNiZDliYTVhMzBlMzRmYmI4OTE4YjI1ZDU1Y2FlMmM5M2MgbGVnYWN5LXRydW5rCisxNjU4OSAzM2ZmNGQ0ZDkxYWMzZDhiMzc3MjM2ZjU5NTMxYWJlZGRhNzE0Zjc3IGNucmktMTYtc3RhcnQKKzE2NTkwIGFmYmJlNjc0ZDU4YTBiYWJmZTlhOWM0ZjdjOTNhYjdlNDIzNTY2YmIgbGVnYWN5LXRydW5rCisxNjU5MSAzYzBmNzVhMjE5OGZmMTkxMjMzMThlNDNjYTNiZTFjMTU4OTIwNTljIGxlZ2FjeS10cnVuaworMTY1OTIgNjYyMmQ3NjMxY2NmZjFmNzBmNTA1ZGYxNzMyOWVhOGIyYjc2ZjliYiBsZWdhY3ktdHJ1bmsKKzE2NTkzIDk1ZWVlODY4NjExZWM2OGY3YzI5MDJlMWFjYjM5YTZlYzI0YTk2NDEgbGVnYWN5LXRydW5rCisxNjU5NCA4YmQ4MmNmMzYxYWE0MjQwODU0Y2I0Mjg2MTg5ODdiMWQ0NWI4MDlkIGxlZ2FjeS10cnVuaworMTY1OTUgMzVlMjI2Njg2YzJlZDgwMGEzODc0ODY3MWFkYWM5MzNjOTdkNzk1YSBjbnJpLTE2LXN0YXJ0CisxNjU5NiBkNDMwMDk3ZDFiZmQxODk5ZTMwNDY3OWU0ZmQzMDY4NmY3MDZiN2I2IGxlZ2FjeS10cnVuaworMTY1OTcgYzU3YjU3NGU2NzY2NGRjMmM4YzBiZDQxMzBjNWI5ZWE1Yzc2NjY5MyBsZWdhY3ktdHJ1bmsKKzE2NTk4IGVlZWQ3YmM4YTI4M2Q5NWEzOGM5MzMyODM3ZWU5MWU5NjQwOTE5ODQgbGVnYWN5LXRydW5rCisxNjU5OSAwODRjNjNkODVmOTA4Mjk1NGQ1NTE2NTI4MzA3ZjYwYmUzM2ZiNGU3IGxlZ2FjeS10cnVuaworMTY2MDAgYTEwZGM3MjE1YzFlYzE3NWJjMzA0OTFiNjJkNzMyOWRhNzNhNjViZCBsZWdhY3ktdHJ1bmsKKzE2NjAxIGM2Mzg2M2FiZTFhYTlkZGVhYjEyZDYwN2EwMzU5Mjk2NDk2YjA0MzQgbGVnYWN5LXRydW5rCisxNjYwMiA1ZmQ4MGM4MmExNWE5MTQzNDg3MGVjNmExYjlhMTg5MWU5MzE2ZmRmIGxlZ2FjeS10cnVuaworMTY2MDMgMjU0ZjhiN2M0YTgzODEzNjU5ZjIxZGExMDFmMmUzMTU0OGU1NjRjMCBsZWdhY3ktdHJ1bmsKKzE2NjA0IDYxY2M1NGMzMTNmNmNkMTU4N2ZkY2UxNGEzMDFjOGEwNTM4MDg0ZjMgdW5sYWJlbGVkLTIuNTQuMgorMTY2MDUgMDJlMDgxNmU0YjM3MTdiOWYwMTcxYWZlZGNhNjY2N2NhNTJhMjc1YiBsZWdhY3ktdHJ1bmsKKzE2NjA2IGU0YzM4MGVlOTA3OWY3MTM1MjczNzU0MmM3OTFmN2RhNmZkMTdkZmMgdW5sYWJlbGVkLTIuNTQuMgorMTY2MDcgMjNhNjJhODc1MWI0NzYyYjg1ODk3MjRjZDkxNTFhNjkzMzk3ZmEyMiBsZWdhY3ktdHJ1bmsKKzE2NjA4IDE1MTE0ZTAxNzY1Mjk0NjAzODdhZDFiODIyZTdhZDc1MGFkNDNkYWUgY25yaS0xNi1zdGFydAorMTY2MDkgNDAzYzk3MGQxYTVlNGFjOWNiMWFhNjk2NzdkZGMyY2JiOWVlMGNkZCB1bmxhYmVsZWQtMi4xMDguMgorMTY2MDkgOWFjZmQwMzdjYjk0ZGExODM2MDYwMjQzMzgzNGFiZGJjMjlhZDk0YyBjbnJpLTE2LXN0YXJ0CisxNjYxMCBjMzc4M2EzM2Y4NGJmMDM1NzhlOTI2ZDZiNDZiMzhlMzg4ZDk1NzM3IGxlZ2FjeS10cnVuaworMTY2MTEgYjAxNmVjODczOGY5ZDIzZGU4ZjJiODE1YmU5ZWIyNWM4MmVmZTZjMCBsZWdhY3ktdHJ1bmsKKzE2NjEyIDUxMzZlMzdmZjU0OGU2OTEwMTczMjE0NTliZmRlYzZkZmI2YTU3MzQgbGVnYWN5LXRydW5rCisxNjYxMyA0YWViZDBmMmEwNjI2OTIzZjVjMTc2NTgwYzUwNGY5MmIyMTIxNDM5IGxlZ2FjeS10cnVuaworMTY2MTQgNjMxYjVkZjQ0ZGU2MDk1MTM4OWVmNzBmYjczYmVhNzJmYmEyMDc5ZiBsZWdhY3ktdHJ1bmsKKzE2NjE1IGIzNjhhYTgyMDhmM2ExZjRlNmNmNWFkYmIxMTQyYmU3ODk3YWQ5ZDEgbGVnYWN5LXRydW5rCisxNjYxNiAxMWQ4ODIyMGZiNTIyOGZmOGM4MjJkOTQ4MWI2ZjBmMGIyNWJhMDAwIGNucmktMTYtc3RhcnQKKzE2NjE3IDJiYWRiMzIyMzU1ZmNlNDk4NDM0YzY3ZmJkNDZiZDRhNjAyMDU0OWQgbGVnYWN5LXRydW5rCisxNjYxOCA5MWQ5NWE3Yjc4NTgzNzQwMzExOWIwOGVmNjBjMjcxMTUwNWU4YTkwIGxlZ2FjeS10cnVuaworMTY2MTkgM2FlMDZjNTdkMDllYThjYjgxYmRlOWFmNWYxOWM5NTM4NjExZjg1YiBsZWdhY3ktdHJ1bmsKKzE2NjIwIDQ2NTE0NGFiZjAyYTJlYTk5ZTBjMDY2MGQ0ODM4MDVkZjE5YmViMDAgbGVnYWN5LXRydW5rCisxNjYyMSAxZTlkMWNjMmJjM2Y3YWM1OGExMmRkNjdlYjI2NjFiOWEzNGYxYmZhIGxlZ2FjeS10cnVuaworMTY2MjIgOTI0ZjA5ODFiZjc2ZGNkOTE0ZmFiNTFkNGUxZDIyZmIzZGQwMmE3MCBjbnJpLTE2LXN0YXJ0CisxNjYyMyA5NzU3M2NmOTFlNmFkZTk0NzhiZTBkYjQ2NWZlNjYyZWZkZDY4YmE4IGNucmktMTYtc3RhcnQKKzE2NjI0IDg3NDg4YzMxMTNmMjc2ZDY3ZGE0NTU4ODhiNWUyYzU1NDI2NjYwMTQgbGVnYWN5LXRydW5rCisxNjYyNSAwMGE1YzgwNmNmN2NiOGFiYTk0NTYzZjE1MzM1ZDhhNjE3MzZjOTRhIGxlZ2FjeS10cnVuaworMTY2MjYgYjM3ZjA4NjM1MDIzZjI2NzNhYmZjMjZlNWMyNzkwYWRlZDY4MTY1MyBsZWdhY3ktdHJ1bmsKKzE2NjI3IGZjODczY2EwYzdkM2Y0OGQ3ZjdkMmJjOGIxZTc4NTliZmQ4NWRhYTUgbGVnYWN5LXRydW5rCisxNjYyOCAwNTI1ODUxYmEwYjc3YWI3MGMzNDJjMzY3ZGQzZTFhZTQ0NWI3NTZhIGxlZ2FjeS10cnVuaworMTY2MjkgYTU1ZTQ4ODNmODg2YjljYzk2ZjcwMjIwYmJlMzk2YTRlN2EwMWVhMSBsZWdhY3ktdHJ1bmsKKzE2NjMwIGRkMDQyZjVhOGZhMjIxNDQ4ZWFiYmQ5MDEwYzgyMGMyYWZhNTY4NWIgbGVnYWN5LXRydW5rCisxNjYzMSAwOTg4MjVlNzRhMDVhZDkyY2RmZTdmYjA1ZWVhYmQ5NDEyOGM0MjVjIGxlZ2FjeS10cnVuaworMTY2MzIgMzQ4YTdjMThlMGU2M2E3ZjMyNjMwNWFlMTZlZGEzZmIzNDg4MmU0NiBsZWdhY3ktdHJ1bmsKKzE2NjMzIGI3MzFhMjA2MzAyYWU3MGE5YTQzNDhkY2Y3ZTJiZjY3OGIwMDg0YmIgbGVnYWN5LXRydW5rCisxNjYzNCBjNDgwNTI5ODA3YWIzMzA2YWE0ZmEzMTFkM2FmNzNmNDcyMjMzOWRhIGxlZ2FjeS10cnVuaworMTY2MzUgMDdiODVmYzdlZjY4NGY3NzgzYTQ1NTllNGEyYmU5NzFmNmY5OWM0MiBsZWdhY3ktdHJ1bmsKKzE2NjM2IDY2NTg5YjA2YzYzMzA4NjE0ZmNkZGRmNzA2ODhlYmJjMDUwMjlmZTEgbGVnYWN5LXRydW5rCisxNjYzNyAwNGEzNmU5M2RjM2RkODA2NmY1MDgxYWI5ZTYwYmE5YWQxYzA3ZjEwIGxlZ2FjeS10cnVuaworMTY2MzggNDVlZGMzMjVlODlhNTc2OTBkODZmZWYyY2QxNjhjNmM5N2VhODdhZSBjbnJpLTE2LXN0YXJ0CisxNjYzOSA5NGFkZDg4ZWYwOGMwNmI1NTE4NGY2MmY4MWMzZTAwN2Q0ZWMzNDRiIGxlZ2FjeS10cnVuaworMTY2NDAgNjY4MmZmM2UzMThmNWYyOTQyODM5YWZhZDgxZDYwYjE2ZGFlYWFkYiBjbnJpLTE2LXN0YXJ0CisxNjY0MSBhMjk2ZmY1NTIyMWY3MTIwYjU2ZjdlZTU3ZTAwYjFiNzE4N2ViMzRiIGxlZ2FjeS10cnVuaworMTY2NDIgOTlmMDQxM2VmNzk1ZjMxNWIyNTFkMTcyYjcyZTljMDk1ODczYWE1MCBsZWdhY3ktdHJ1bmsKKzE2NjQzIGJmOGQ1NmUyN2M3YmJhNTZkZmY4NDQ3YTBlNDljMGZkMDQ3MGQ3NTUgY25yaS0xNi1zdGFydAorMTY2NDQgOTRmNmVjODc5MzBhYmU1ZWRkNGJmZGExMjFlMjUzM2U5NjU0ZTBlOSBsZWdhY3ktdHJ1bmsKKzE2NjQ1IGQ3NGE0YTQzZjQ1ZmI4OGFkYzg3Y2MyZGI2NjAzNTZhZDQ4MTViZTAgbGVnYWN5LXRydW5rCisxNjY0NiA0NjhkZjVhOGNmNGFjZmQzNDJjZmZiM2U5MTU2MDA4MzBjZjQ3ZDA2IHVubGFiZWxlZC0xLjIzLjQKKzE2NjQ3IDk2YWQzMjQ5OGRiNzgyMTQ4NjkwMWIwMmUyYTNmMzNkMDE5YTg3ZTIgdW5sYWJlbGVkLTIuNTQuMgorMTY2NDcgMWMyYWRhZTQ1MDY5N2RmYzMxYzY2NTMzZmI3MmM4MDYzZmIzYmFjMSBjbnJpLTE2LXN0YXJ0CisxNjY0OCBmM2Q1ZjcxY2NiYjQ1ZTczNmY4Y2MzY2E0YmE3ZTNlMWI1Mzg4MjhiIGxlZ2FjeS10cnVuaworMTY2NDkgNGMzZjk3N2NlMDZjZmU3Y2I1YmQ0ODc5MWE1ZDUwZjlmODgzM2FiZiBsZWdhY3ktdHJ1bmsKKzE2NjUwIGE5NGUzN2VjZGJlYjZmYjY4ZDBkZTZkYWZlYTkzZjQyMzI2YzVmNjkgbGVnYWN5LXRydW5rCisxNjY1MSBjNTgxNDljMDY3MGFhOTkxZWQ3NDhhMTZkNWVkZTEwYjA4NDU4NDAyIGxlZ2FjeS10cnVuaworMTY2NTIgZmM0OWEzYjM4NjNiMTk2YzVjMTBiMDA3NzMwMmIyOGU1ZTc5ZGIzMSBsZWdhY3ktdHJ1bmsKKzE2NjUzIGRmZGI2MDFjZWUxY2Y1MTQzNWJiMzM4NmEyZTZiNmIxZjM4YzRjOTMgbGVnYWN5LXRydW5rCisxNjY1NCA1OTJhYzI3MjY0MWQyMmRmMzVmZjcxNDdkNWM5MzQwMTZhNTU3YmY0IGNucmktMTYtc3RhcnQKKzE2NjU0IGE2OTg1ZDg5NDY0Mzc2YjkxNzNjOWE1NzdjNjcwYjdkMGI3NjdkM2QgY25yaS0xNi1zdGFydAorMTY2NTYgZTI2M2EyNzNlMzIxZjk2ZTk3YWRhY2M1MzBiOWJlZTgwN2JiOTIzZCBsZWdhY3ktdHJ1bmsKKzE2NjU3IGVlOGM1Y2ZhZDMzNWU2YmM2ZmRmNGE3NGE4ZjYyNDNjY2FlZTkyYTMgbGVnYWN5LXRydW5rCisxNjY1OCA0ZWY0NjFkZjMyYzE5MWU5MTMwZGM5YmNiN2I5NTFlYTBhMTE0ODcyIGxlZ2FjeS10cnVuaworMTY2NTkgNThmZWZlZjcwZmFjYjczMDBhMmU0NTZmYzc1Njc2MjA5MDgzODNjNCBjbnJpLTE2LXN0YXJ0CisxNjY2MCBkZjdkZWIyZWJhNDE0MTA3ZWRmYmNiYWJlOTY1OTU0NjhhOWQ2NDk3IGxlZ2FjeS10cnVuaworMTY2NjEgODMwNzQ0NmJjNmFhZDY2MGRkNTExN2U2MzExOGY4MGU3ODBiNTJiYyBsZWdhY3ktdHJ1bmsKKzE2NjYyIDM1ZmM5NTExYTM2ZmYyYzQ3YTZiYTY2NzgyYTQzMDA5YzQ0OTY4NmUgbGVnYWN5LXRydW5rCisxNjY2MyBkMDE0YzhhYjZhODI0MzUzZDMzMDAxYTIzMmIxMDEwNmI4NDE3ZDQ2IGxlZ2FjeS10cnVuaworMTY2NjQgMjY2ZTExYTIyNmY3Y2Q4MzljMjI2ZjM0MDE3OTkwNmEyMDdhZWNmNiBsZWdhY3ktdHJ1bmsKKzE2NjY1IGVhNWViNTFlZDBmNjk4YzRiNDY2MmNkMDc5MDgyNTQ5MTM1MDg5M2QgdW5sYWJlbGVkLTEuOC4yCisxNjY2NiBmOTExNjE4YTBlYTBmYWM0NmNlOTZlMmNiNjVjZDNmMDM5MWQwMmE3IGxlZ2FjeS10cnVuaworMTY2NjcgMWMwMGZlYTlhZTQwYzBmMWZiNDJmZWQzZWFiMzgyMThmY2IzZDk3MCBsZWdhY3ktdHJ1bmsKKzE2NjY4IDc1NWUyMTM1YTE5NDhhOGQzYzEzMWYxZmI3NjNiZDMwNGIyNGI1NWEgbGVnYWN5LXRydW5rCisxNjY2OSBhYmZhNGU0YjJmM2U5YWNlMmVmMjgyZGVkZmFkNjc5ZGM4ODQxZGMzIGxlZ2FjeS10cnVuaworMTY2NzAgMGY2ODAxOGNjZTU4ZjlmMWZhOWRiNDI3NmJiZmY3N2VmN2E2MTA0YiBsZWdhY3ktdHJ1bmsKKzE2NjcxIGRkODMwYzllNWMyMThmYWU1OTE4MjZlNDAxNDVlMzI0NTk0ZjgzOGUgbGVnYWN5LXRydW5rCisxNjY3MiBjNGUzMjE4MzQyNTAzYWM2MjY3ZGEyMTUxNTZkMzE1YzNjMzJkYTE5IGxlZ2FjeS10cnVuaworMTY2NzMgODgxZDM5OGE0NGUwNzEwYWUwMGZkNzA2M2UwM2YzZTYzYzU1NzEzZCBsZWdhY3ktdHJ1bmsKKzE2Njc0IGJmNzA2MmU4ZWVhY2Y0M2UzZTc2NzJkNzc4NDQ4MTNlMDlkZjI1MWUgY25yaS0xNi1zdGFydAorMTY2NzUgMzFhN2IwMDQ1NThmYjdjM2E5MTNlMGRhMWY5ODNmZDVjMThiZDU0OCBjbnJpLTE2LXN0YXJ0CisxNjY3NiAzM2ZkNjBhYmQ0ODIyYzRhYWQ1NzFiZTk3OTY3YTA5NWIyNDg4ODZmIHVubGFiZWxlZC0yLjEwOC4yCisxNjY3NyAxNWFkNDA4OGE3MDBiZmIwNWJkMzAwYTg2YWY3MGJjMjlhNTA1Mjc5IGxlZ2FjeS10cnVuaworMTY2NzggOGVlYWZmOTZiNGMyNDQyMmZhYWYyNzE2ZjMxYzJhYWM4MDBjMGFmOCBsZWdhY3ktdHJ1bmsKKzE2Njc5IDA5NTY1Nzg0NzE1ZTFjNjY1NWU2OTg5OWY2OTI5YTAwNWZjZjIxOTIgdW5sYWJlbGVkLTEuOTguMgorMTY2ODAgM2E1YTdkMjdmMWI3MmI5ZGUxZjk4OGExOGNkMDQ0NGI4NmQ5MTBhNiBsZWdhY3ktdHJ1bmsKKzE2NjgxIDYyNDk0YTk2ZGNjYWI1YWEyMzllNjdlZGU5YWY2MWI2MGVlZWZkZWMgbGVnYWN5LXRydW5rCisxNjY4MiBjMGMxNzM0N2RhNWJiZWNjYmVmZjFjNzVkMWVhM2YwMWRhNTA0NDM5IGxlZ2FjeS10cnVuaworMTY2ODMgYWE0OWQwNzRmNzE2MWIwNzI3Yzk2NTNjYWMwOTY5OGZiYmJhNTFkZCBsZWdhY3ktdHJ1bmsKKzE2Njg0IDk4ZjA4Y2FmZTE5YjEyNTQxZWFmM2QxYTNjYTZmZTIzZjU2NjlhMzIgbGVnYWN5LXRydW5rCisxNjY4NSA4ZjBmYzBiNWY3ODRjY2QwNmEwYzcxMTQ0ZmJkZjFlM2E4NWI0M2YyIGxlZ2FjeS10cnVuaworMTY2ODYgMDhmZWI1MzhjODM3MTYwZWI0ODVlOWMwNDRjYjE5OTk1YTc3YTg5NyBsZWdhY3ktdHJ1bmsKKzE2Njg3IDIxOTBiNzU5OTgzNzM0YTBjNGU5NGRmMGQ1MjFkYzhhMTNjODY0MmEgbGVnYWN5LXRydW5rCisxNjY4OCAxYzViZGI2NjIzYzhjMTE0ODVjMjU4OTE4ZmMzM2U4YzEyNDBiZDM1IGxlZ2FjeS10cnVuaworMTY2ODkgNzdiOWUwNDFiNTk1Y2I1MDlkMGQ4MjI1MTA3NDIwMGM0OWI5NGZhZiBsZWdhY3ktdHJ1bmsKKzE2NjkwIGMzMzIwZDI0ZDdkZTQ2YWRkMGVlNGI3MzM4MDBiZjkyZjhjNmMyZmQgbGVnYWN5LXRydW5rCisxNjY5MSBlMmVhMDA2MjBlZDY4OTlhNGQ0MTc0NjkwNjE2MTU0YjgxMjVmNzQ0IGxlZ2FjeS10cnVuaworMTY2OTIgMDQzMGExMzA5NTk2Yzg3OTBkMzdkNzZmZDc5Zjc3NTBlMTFhNjAyYiBsZWdhY3ktdHJ1bmsKKzE2NjkzIGQzYmY5N2Q1MzJhMDhiNGYxM2YyZDNmNTA3OTU1MzYxZGM1YTIzOTEgbGVnYWN5LXRydW5rCisxNjY5NCAyNWRlNzE5M2Y5ZmNlYTY1ODM0NTA0YTc2ZjU4ZGZmMmU5N2NiZWE1IGxlZ2FjeS10cnVuaworMTY2OTUgYTBiMzY1OThiMzFkMGQyOTg5OTExNzQ1OTNmNGFiZjJmYWZmYWIyZCBsZWdhY3ktdHJ1bmsKKzE2Njk2IDljNjliZDFhMjgyMmYwZTUwNWYwOGRkNGMzNDA4YWMzNTMzY2VjY2QgbGVnYWN5LXRydW5rCisxNjY5NyBlMzBhMTk0ZGNhMDE0ODJjNGRlMjFjNjhkYjY0MGYxNThlNWUwN2ZmIGxlZ2FjeS10cnVuaworMTY2OTggMGVmZGY0NWJmNmJiNmI4ZDE2Mzg2MDgzMTdkOWNjMzViZjQwOTRlZCBjbnJpLTE2LXN0YXJ0CisxNjY5OSAwYWM5MTljYThlNjk2MjQwNTllODdhNWNjZGU1MDVlY2JlNzg3YzU0IGxlZ2FjeS10cnVuaworMTY3MDAgOTllMTljOTgyZjk0NDVkZjhjZjhjMzFjZjJmYjQxMWRlOGE0MTY4ZSBsZWdhY3ktdHJ1bmsKKzE2NzAxIDljMWU2ODk4NDAyNzNmOTQyMzdlMjE3MjJkNWNmZjRmZDg0MTY1MzQgbGVnYWN5LXRydW5rCisxNjcwMiBjNDVhY2NjOGU2ZDAzNmZmNzVhZGE1YmM1MTU4YTY4YjZhYTU3MDM2IGxlZ2FjeS10cnVuaworMTY3MDMgNDQ2YzM2MTZjMzIzYjBmNDdiZmZlYTljM2IwMWY2OWM3NDkyZTgzMiBsZWdhY3ktdHJ1bmsKKzE2NzA0IDUyNzU3YmFmMDMwZGRhMGYwODM5MTQ5NTJhNTM2YTI4OTc2MzJlYmIgbGVnYWN5LXRydW5rCisxNjcwNSBiMzQ3ZmM1ZGFlYjcwYzcwMDZkMzU4ZjdkNGE1ODY4NjhjOTU0NDMzIGxlZ2FjeS10cnVuaworMTY3MDYgYTQyNTliZmNhNWJmZThiYTJmMmYwMWZlMDM0YTMyZTk3NTA0ZjE5MyBsZWdhY3ktdHJ1bmsKKzE2NzA3IDZiZjEyODFlYzc2MzliZGU0MTcxNjhjODRkYTQ1OTM1YTIyMjI4MDEgbGVnYWN5LXRydW5rCisxNjcwOCA2MDI0Mzk5Yjc4YmZhNjJmOTNkYWQ5YjBmMDVkMDY1NmZlYmQ5ZmY5IGNucmktMTYtc3RhcnQKKzE2NzA5IDk0MTRkMDMxYTJjM2E0Y2JmNjRjZTgxOGY1ODQyMTY1YjEzNTRhNGUgbGVnYWN5LXRydW5rCisxNjcxMCBjOGZmODBjZWE0ZjdiZTYxOTFkNWQ3Y2M5NjA5NGNjY2ZkNmE4ZDVjIGxlZ2FjeS10cnVuaworMTY3MTEgOGY0M2U1OTJjZjlhNGY2OGE1YjBlNTIxZTJkOGM0MTYyMzJkYTgwZSBjbnJpLTE2LXN0YXJ0CisxNjcxMiBkNzBhZWMyZTM0OWNlYWI1ZTlmMjRjOGRjNWUyYmZmMjFjZjM4NDBmIGNucmktMTYtc3RhcnQKKzE2NzEzIDQ2NmU1ZmYyODkyNjIwYTAyN2MyZjQ5ODFmNWU4ODNiZWQ5Y2Y5ZjQgY25yaS0xNi1zdGFydAorMTY3MTQgZjQwNWZjYmFhZWY1YTk3NTQ4MGM4YjgxMzhjOTAwODg4OWE3ZmUxOSBjbnJpLTE2LXN0YXJ0CisxNjcxNSBlNmVmY2ZjZjE3NGE4N2RkZDQ5MWRhZDE1MDc3NTkxMjZjNjViMmYzIGNucmktMTYtc3RhcnQKKzE2NzE2IGNmNTAzNDUwZjA3YjI0YzYyZDY2ZDM5MTc5YTFlNWMxOTIyN2UzMDAgY25yaS0xNi1zdGFydAorMTY3MTcgYmQ2N2E0ZDZmNGY4YzFkNmQ3NWFlODI5ZmY2NDIxYzNhY2FhMTkzNCBjbnJpLTE2LXN0YXJ0CisxNjcxOCAwODAyM2QyNmEwY2U4NzUwOWUyNDY5YWE1ZDYxYTkzNWI4YTYzMzkwIGNucmktMTYtc3RhcnQKKzE2NzE5IDU5YzZlOTgzMmEyMDQyNTI2ZWUxZGRhM2YzMTVkOWI3NDQ1OWEwMDMgY25yaS0xNi1zdGFydAorMTY3MjAgNjkzYjYxNTgxNzQ2NjkwN2NiZjc0NjQxYzc0ODc2YTZhN2JkMjQ0ZCBsZWdhY3ktdHJ1bmsKKzE2NzIxIDRkMTZjOGRkODk5YzRlZWEyMTA5NDY5MWE3OTI2YmU2MzFhOTRmMDkgbGVnYWN5LXRydW5rCisxNjcyMiBiYzAxNTNhNzM5YWVmNDY3ZTVhMmNkMzFhMDdhOWIwMWQ3ZGJlNWZjIGxlZ2FjeS10cnVuaworMTY3MjMgMDNmYTQwNTI4ZDE3OWZhYjY1MjgwNzk4NzcyMTg2MmE3ODExZTcwZiBsZWdhY3ktdHJ1bmsKKzE2NzI0IDA4MDkyZDFlYjI2YWY5N2M5NmZiMjczODJhZDQyMDVmOWU1YmE2M2MgbGVnYWN5LXRydW5rCisxNjcyNSAzMzk2OTc1MWUzNTFmZDc5MDQ5ZjdkOTRlZTNhN2U5Yjk1MmJiMTEyIGxlZ2FjeS10cnVuaworMTY3MjYgNTJmY2QwOTg1NDdlOWVjYjM2ODFhNjc2Mzg3ODkyNTA4MmI1YjQxNyBjbnJpLTE2LXN0YXJ0CisxNjcyNyBkMDU3Y2Q1NDNlZDk2NmRmMDM2MTJhNmM0MmUwNzExYWRjNzYwYTE4IGxlZ2FjeS10cnVuaworMTY3MjggYzdiM2ZlODQzMzU4Njc1YzJiNzExZjA0ZWRlNzRiOTI2NjU4NmRjNSBsZWdhY3ktdHJ1bmsKKzE2NzI5IDFkMTdjNWU2N2VmNTcyNTI0ODgwMDhhMmY4YWU1NjlhODUyNmMzOTggbGVnYWN5LXRydW5rCisxNjczMCA2NThiMDg1ZTE3NWJmODQ3ZDc2ZDZlMWExNmNlZjEyNjBhY2JlMTlkIGxlZ2FjeS10cnVuaworMTY3MzEgZGRmMzAyZDY5MjExM2U2ZTRiOWRiMjFjYzUzNzZjZDYxNGQ1Y2IxZSBsZWdhY3ktdHJ1bmsKKzE2NzMyIDJhMDRmYmI3YzA3ZDk2NDc3ZGIwNzI1NmEyZDA4ZTZhNjlhMWU4Y2EgbGVnYWN5LXRydW5rCisxNjczMyBiNmUwN2MyNzI0ODc5MDBmZGQ5NzY5MGZmMjMzZDU4MzcyYWFkNWM2IGxlZ2FjeS10cnVuaworMTY3MzQgMjY2ZmI2MzAyZjMxMTdkNzFmOGMxNjczOTg3MjUzMDRjZDE3YmExOSBsZWdhY3ktdHJ1bmsKKzE2NzM1IDM5MjdhNGQ5YzJmYjAyZGEyNzE4ZjNjZjQzZDRiYzA5OTRhNmJjY2EgbGVnYWN5LXRydW5rCisxNjczNiBmMTk0ZDhiMjQ4NjU5MTJiZDE2YzE3NTUzMDFlOWJlMWEzODc3ZDcyIGxlZ2FjeS10cnVuaworMTY3MzcgNGVhYTQ2M2MwMzFhMWJkYjVlNzc5MWMzNzBkMDQxMDhlMDY4MmRkNCBsZWdhY3ktdHJ1bmsKKzE2NzM4IDYwYzdjZGEzNWNmYTQ4NzdlY2M1YTE1NDhlOTAzNjIxY2E4NTgwOGYgbGVnYWN5LXRydW5rCisxNjczOSA3MTcyYzJkOGI5MmI2NThmMmNkYzZkMmY0ZjIyMmM3MDczY2VmN2Q0IGxlZ2FjeS10cnVuaworMTY3NDAgNGQxNGVlZjhlYTA3NjU2OGJhNzUyOTA2NzJjNTAxOGFiNTgzMDIyYSBsZWdhY3ktdHJ1bmsKKzE2NzQxIDJlMGQxYWVhOWMzNzQxZTA0YWRmZjhkYTE1Mzc2MjBmNGY1MzJiOTEgbGVnYWN5LXRydW5rCisxNjc0MiA0NGIxYjgxOGYyOGU5MjU4MzMxYWRjNGI0ZWYzMjNiYjYwYThiZGU5IGxlZ2FjeS10cnVuaworMTY3NDMgMjVmZDk4NDZiZDU0MmMzNDRmMGNlNTgwNzM0MTIzZWI5YzJjYWUyMiBsZWdhY3ktdHJ1bmsKKzE2NzQ0IDQ2NGEyMTkwZDliNjc2YTY5MzU3ZWJmY2VjYmY5NTYzNDE5NzJkMDcgbGVnYWN5LXRydW5rCisxNjc0NSA4MDA4OWE0NTBjMzRkMGI1YmRhMWY0NmIxZTNhMDYwYjlhNDA2MjA5IGxlZ2FjeS10cnVuaworMTY3NDYgODdhZjJjMzQxYjc5YmEwYjU1OTEwNmQ2NTA0OGYyM2VhNDEzOWIyNiBsZWdhY3ktdHJ1bmsKKzE2NzQ3IGVjZTc1YjA3YjEzNjA4MDEwY2I1YTI5N2Y0ZTBjYTU2M2E1MjBlNTggbGVnYWN5LXRydW5rCisxNjc0OCBkNTZkZDE1MzBjZTExMzJjMjU3YzFlZmFjZjExMWM5MDUxYzM0NzBhIGxlZ2FjeS10cnVuaworMTY3NDkgMzFiMjVhYzFmMDE5YWYzMDNjNjYyYmExMDcwYWE3ZmYwMjdjM2MzMiBsZWdhY3ktdHJ1bmsKKzE2NzUwIDU3ODBiMTk4YWJjODk5ZWE3ODc1ODFiNDlmY2UxZDBiNzgxY2UzMjggbGVnYWN5LXRydW5rCisxNjc1MSA2NDhiYTQwNDQ0NTU5ZmI0ZmE1ZGY0MmE2NGJjZGY0MDQ0NTBiNGJhIGxlZ2FjeS10cnVuaworMTY3NTIgYWZkYjNmNDg1ZDhmOTNlMzg3ZjFlNDdjODZiNDYwZDI5M2M2MjlkOCBsZWdhY3ktdHJ1bmsKKzE2NzUzIDdhOTk0NTBkYTJkNjRmN2IyNTA1ZWZhNGM5ODZjNDQwNmM1NjI4YjcgbGVnYWN5LXRydW5rCisxNjc1NCAxOTFmMjBlMDQ3M2VlMWZmYzQwZThkM2UzYjZjNDhjNGVkYzU1MWU1IGxlZ2FjeS10cnVuaworMTY3NTUgMjY4OThhOThkYjZlZDBiYzFhZDA1MTQ4MjY4MGNkYjIxYmIwOTQwMyBsZWdhY3ktdHJ1bmsKKzE2NzU2IDI4YWZiYzVlMDc3MDA0YWU3MmQ3ZjE3ODAyMTMwNmI2NGU5ODY0NzUgbGVnYWN5LXRydW5rCisxNjc1NyAzNzBhZGU4OGE1MmE1NDRjYmQ2NDM5ODJlZjlhMmNiNzM4M2Q0NTZkIGxlZ2FjeS10cnVuaworMTY3NTggMWIxNTZlZjgyODFiOGJlYWJhYmZiNzkxNTU1ODljOGViZjgwZjEwYyBsZWdhY3ktdHJ1bmsKKzE2NzU5IDcwYzQ3YWIwMWE4NWUyYmVjZTMwYzg4NjA5MWJjMzc1NTY5MDE5YmYgbGVnYWN5LXRydW5rCisxNjc2MCA3NDQ1ZDk5ZGE4ZGQ4ODI1NTE0MjY2ZjNkZDE2Njk0YjExZDQ2YmUyIGxlZ2FjeS10cnVuaworMTY3NjEgODJhMjJkODI5NjA3MTBlYTk0Njc4MDdkMDVhYTQwYmQ4YjgwNDNhNSBsZWdhY3ktdHJ1bmsKKzE2NzYyIDQ5NGNmNWZiOGYxNzRlZjA0MGM0ODI1ZWI0Y2NkNmI2MjY3OWEzNzAgbGVnYWN5LXRydW5rCisxNjc2MyA4ZThhOGRmMGZlNzM0ZjJiOTBjOGFlMzA1NjdlZjAwZWEzOWY2ZWE0IGxlZ2FjeS10cnVuaworMTY3NjQgYjkwMDJkYTQ2ZjY5M2FjN2Y0NzI4Mzk4ZDc3M2FjOWE5MDQzYjQ1YyBsZWdhY3ktdHJ1bmsKKzE2NzY1IDBiYjBjNzE2N2QxZmM3YjBjNDcxZmM0YTkxYzAxNDg3YTJmODNjOTAgbGVnYWN5LXRydW5rCisxNjc2NiA4YmU3NTI0MDg1ZDYxOTRhNjM4MjkwNzI2Yzc3NGUzNGY0NjZjMGNiIGxlZ2FjeS10cnVuaworMTY3NjcgN2RkZTc0YzFlYmJlNGNmNTIzODc5N2U1ZmFiMTU3ZmJjOWVjNDBhNCBsZWdhY3ktdHJ1bmsKKzE2NzY4IGM5YWE0OWU4NzQ4ZTcxNWI0ZDUzNzJhYTAzMGQ4MWUwOWUxZDg3NjUgbGVnYWN5LXRydW5rCisxNjc2OSA3MDc5YWEwNWJiZDA1OGM5NTY3OTA5ZjY5NjM3ZGFhY2JkNGUyMDc5IGxlZ2FjeS10cnVuaworMTY3NzAgMmVlMGY0N2YxNGQzYjBhNDRkNThmNmQ2Y2JlZjYwYTkwNDNiMDFkOSBsZWdhY3ktdHJ1bmsKKzE2NzcxIGEyNTZjMTAxYmYyNzk1ZWMyMWVhMjQyYzkzNTU2M2NlNDg0Y2ZjYTYgbGVnYWN5LXRydW5rCisxNjc3MiA1NjAxNzU4MDBhMDdlNzEyZGQ4MjZkZjgwMzEwYjg5M2VjN2NmNDA5IGxlZ2FjeS10cnVuaworMTY3NzMgOTFkZGVlZDEyZmE3MDNhNmNjNDg3MjFiYmI3MGE3MWE5ZGM1MzA3MiBsZWdhY3ktdHJ1bmsKKzE2Nzc0IDdiN2VlNTg5MDFmYjBmMGE3ZTBmMmYwN2QwOTJjN2Q4OTA2YWQxZjMgbGVnYWN5LXRydW5rCisxNjc3NSA4NDFjZjkwMTJhYzNjYmZmYWExODJjYmVlM2I5ZDliZDI5YWJiNGM4IGxlZ2FjeS10cnVuaworMTY3NzYgNTVlMzk4ODIwNWIzNDgwYmNlN2VkMDVlZTBjYWUxNjhkNGUzYTA0OCBsZWdhY3ktdHJ1bmsKKzE2Nzc3IGQ5OTE4M2NkYmJkYzk3YTliYjkxODBmYWNmMWFkNzYzYWZkYWUyN2UgbGVnYWN5LXRydW5rCisxNjc3OCA0ZWFiZDdkMzkyNWZjOThjODk3NjBkZDEyY2VhYWIzNWU1YWJiYjQ2IGNucmktMTYtc3RhcnQKKzE2Nzc5IDgxNTVhOGIzMDQ0NGE0YTRhNmVmMGY1MGEzOTg3OThjZGZkMWE4ODYgY25yaS0xNi1zdGFydAorMTY3ODAgNmUyYzBkMGMzZmQ1NmQ0YWU5NzRhMDM0MTljMDA1Y2VhOGM1NDc5MyBjbnJpLTE2LXN0YXJ0CisxNjc4MSBkZTJiZmMxNWY5ZWNlNWE1YmU0NTMyNDJlZGViNGIwMDVlNjFhYzg0IGNucmktMTYtc3RhcnQKKzE2NzgyIGFhNDIwMjcwMjI1MjYyNzExZWQ2ZTAyNjcxMGExOGIyNWIwZjg5NzcgbGVnYWN5LXRydW5rCisxNjc4MyBjMjU4ZjA1ZWI4NWRjOThiMzhhMzk0OTVlYmY3YjE2MWQ3YzBiZWNiIGxlZ2FjeS10cnVuaworMTY3ODQgNGUyOGNhMzQ1Y2ZlZTc2ZmJlZDU1NWI5MWRjYmUzOTdlYTAwZmE5NyBsZWdhY3ktdHJ1bmsKKzE2Nzg1IDNlNmUzZDA1ZDAwYjdkNWYxNmNjODdiNmU2YWIzZGYzMGIwM2Q2MTIgbGVnYWN5LXRydW5rCisxNjc4NiAzMDcxM2Q1Mjg4ZGY0OWM0NDI1MmU5MDdiMWZhNGNiYmE3MmEwMjg4IGxlZ2FjeS10cnVuaworMTY3ODcgOGE0YTE3OTQxNGQ0YWE0ODQxYjM0MGVkMDljYmZmYWRlNTViNjZlNSBhdmVuZG9yCisxNjc4OSA1OGFjODMwNDAxYmQ1Yzk0OWZlMDUxYjBiNzk5ZmUzY2Q4Y2RiYjlmIGF2ZW5kb3IKKzE2NzkwIDVhZGE5ZmE1NDgwMTViZWI2OWFmNTA3MjhkYjhmMDM2NTJhMWY2NjEgbGVnYWN5LXRydW5rCisxNjc5MSBlYjlhMzYxNjNhOWVhYTk5NDMxYzllZDM0MGQ4ODYzYzU4NGE0MzE4IGxlZ2FjeS10cnVuaworMTY3OTIgYjJjZDY2ZTVlYTRjMjRiNzNkNTNjZjZiOGQ5MzJkOTFkMTA1OTg5NyBsZWdhY3ktdHJ1bmsKKzE2NzkzIDYzZGU3ZjAwYjViY2NiZTliYTk3Y2JjNDBhZWE0YzliYzhkNTlkYWUgbGVnYWN5LXRydW5rCisxNjc5NCA4OGY0ZTcyZDcyNDUzOWRkZDMwY2Y0NDM5ZGNmMDcwMGI3NjlhMWZkIGxlZ2FjeS10cnVuaworMTY3OTUgNzJmNjgyZWI5YWRiZTQxYjJhOTJlNTRkMzE4NTRhYmNjNzNlNzQyZSBsZWdhY3ktdHJ1bmsKKzE2Nzk2IDQzZjRmOGQxNTk3MWVhMjQyZmI5NGYzNTQ0Y2I0N2UyYWNiMzU5NTEgbGVnYWN5LXRydW5rCisxNjc5NyAxYjEwN2M5YmE3MDIxMzY3OWE3MWNjZWEwMDQ4YjY0OGNkNjcyMjgwIGxlZ2FjeS10cnVuaworMTY3OTggMmM0MjQzOTU5NGI3ZTgwMzQ5MTM2NjRiNjhkNTVmODY3ZDIxZGI4MSBsZWdhY3ktdHJ1bmsKKzE2Nzk5IDYxMzQ3ZWNiOWIwMTM3ZWU5ZmQ1ODY2NTQwM2IzNTY3ZjM2MzVkNWEgbGVnYWN5LXRydW5rCisxNjgwMCA0MDBhNWUzYWM3NmM5NGFhYmQ5NTE1OTAyODAyOGUzNTBjMjNjMjg0IGxlZ2FjeS10cnVuaworMTY4MDEgZjNiZmNlZTc0NWE3NjM2Y2RkZThiMzg2YTJlZGZiNWNhZTNiNTE3NiBsZWdhY3ktdHJ1bmsKKzE2ODAyIGU1YTc0Y2ZjYzk3MWMwNWViODIxYzY4M2M0ODk2NDk5ODUyMDllZGEgbGVnYWN5LXRydW5rCisxNjgwMyBmMjc5MmVhZDFmMDZlZTg4OWRmMjdmNzg4NmRkYjQ2NzE0MmUzOGZlIGxlZ2FjeS10cnVuaworMTY4MDQgYTk1NWZkNWRlMDM1MDU0OGRlYzdmNDBkNWM2YTNiNjRhMzQ5NTk4ZCBsZWdhY3ktdHJ1bmsKKzE2ODA2IGEyODRlZDIxYTBkZGFlNzFlY2Q1YTgwZjc3NDYwOWEyNTRkYmM3YjggTm9uZQorMTY4MDcgNzgzNGExMTNjZTI0ODAxMGRhYzA0Zjg0OGZhN2MzOGQ1ODYzYmY5MiBsZWdhY3ktdHJ1bmsKKzE2ODA4IDk3ZjUzODhhNmRjZTA1N2FmMDg1NmJiY2MyNDhhZDRhNmU3ZjQ3MjEgbGVnYWN5LXRydW5rCisxNjgwOSA3MTZlMWM0ZTNmNzg5NDcyNmY5MjNhOTA3NDNlMjUzN2E2MTQyODUwIGxlZ2FjeS10cnVuaworMTY4MTAgMmU4N2JiYjg3YWQ0NDA1YzZkMjExOGRlODJlMDcyNTZjMTE4MWI4NiBsZWdhY3ktdHJ1bmsKKzE2ODExIDY1YzFhYmY0NTFkYzA1MzBmNzJmM2Q2YWU2NTU4MzhlOGViYjdjNGUgbGVnYWN5LXRydW5rCisxNjgxMiBkODA2OWVmY2Q3NmU0ODM0N2M4MGZlYzU3MDlmZGY5OTc1ZmRiYzhiIGxlZ2FjeS10cnVuaworMTY4MTMgMTQzZmZiZjg3ZTUxYmIxYjIwYTE1ZThhMTVmMTJjZmQxZTM5OTc3OSBsZWdhY3ktdHJ1bmsKKzE2ODE0IDMwZGJiMzBmZjAxOTE5YjBlNTVlZDJmMGU1ZTU0NDVjYzhlNjI0YzcgbGVnYWN5LXRydW5rCisxNjgxNSA0NDNmM2M3N2Q4OGNlZDY4NzdhMmQ5ZjMwNDBkYWEwMGJiYWE4MTY3IGxlZ2FjeS10cnVuaworMTY4MTYgNTVlNGY0Mjg5ZTE4ODMzYjU3MDJmNTE1Zjc1NzNhN2YyMzM5NGU0NCBsZWdhY3ktdHJ1bmsKKzE2ODE3IDczZDk3NmFmYThkNDNmNDllOWNmMTcxNDJiYjExZTYwYzU5NmM1ZTggbGVnYWN5LXRydW5rCisxNjgxOCA1OTFhZmUyZmM4MjMwYjYwOTRlZjczMWMwY2Q2MTBiNjc5MWJhMmExIGxlZ2FjeS10cnVuaworMTY4MTkgZjM2OTM4ODc0Y2U1YWJiOTgxMGQ3MmYxMzExZTA1MTg2OWY3ZTEyNiBsZWdhY3ktdHJ1bmsKKzE2ODIwIDlhMDUyNjk2Y2ExMjM3YmI3MmNkMTY1NDNkMWUxNjRmNzNjMTU4MWEgbGVnYWN5LXRydW5rCisxNjgyMSA5Y2RiNmY5NzlmYTU1MGFmZmI1NmFkNTlmOGEzZWQ4YTNjYmVjMDg3IGxlZ2FjeS10cnVuaworMTY4MjIgZWQzNjlmMGFhMzJiMzk2M2FiOWE0M2NkOGEyZWM1MzRiZjdkMWRiOSBsZWdhY3ktdHJ1bmsKKzE2ODIzIGVkYTA5ZjgyNGE5ZmI5MDhjNmM1MWE4ZWI4NTgyN2E3ZDE5MTE3ZGQgbGVnYWN5LXRydW5rCisxNjgyNCA2YzkxYWQ5YzBlMDZjM2NlYjg1OTUyZTg4NDczYjRhOTg3OGE3MWFmIGxlZ2FjeS10cnVuaworMTY4MjUgZmFhOTcwZjE1NDBmZjk0ZWI4NzcxZWExZDBjMjFlMGJmZTliODBiMCBsZWdhY3ktdHJ1bmsKKzE2ODI2IDQ5YzdhNGRkOWY2MTVkNzQzZDMzNmQ2Y2ViM2RlMzNmZWE2ZWZkYTEgbGVnYWN5LXRydW5rCisxNjgyNyA0OWM4MzA1MDA0ODAxZWRjNDFhYWI1OWI5M2FhODgxMWFlNWNiODQ3IGxlZ2FjeS10cnVuaworMTY4MjggODJmNzk2MThiNDQyODUxODA2YzVkMGE0NDYxODMyNjYxMWJhMzc4OCBsZWdhY3ktdHJ1bmsKKzE2ODI5IDZjN2ZhNTIzNzI2ZmM1NTZmYWFmMTI5OGE3MjI2NjEwOTM1ZDMxNWIgbGVnYWN5LXRydW5rCisxNjgzMCAzZDY4ZDViY2NkNDA2ZTg4ZDViNTQ3YWJlOTg1ZDVlMmQzZWYxZjg5IGxlZ2FjeS10cnVuaworMTY4MzEgOWI5NDYxYTY1NmRkYzU1N2FjMzlhNzM5ZWM1YTI0YmRjOGU3MzdlYSBsZWdhY3ktdHJ1bmsKKzE2ODMyIDlhMjkxODg5YWI1ZjE3ODg0NjdjZTI2NTAxZDlkNzcxZmM3YWVlMDkgbGVnYWN5LXRydW5rCisxNjgzMyAxMjhmNjQxMTkxYzMzYzg5NTMyNWJiZjgzYTc3ZWZjOWM2NWRhNDkxIGxlZ2FjeS10cnVuaworMTY4MzQgMGQ4MDVlMjM5ZDhmNDRjZmUyM2E2ZDg2YzlkNWY4OGVhMzc2YzI5YSBsZWdhY3ktdHJ1bmsKKzE2ODM1IDU5ODRjM2Q3NjFmNzg0NDJlMjgwOTAzNGM5NTlkODY4YjgxOTNlNGUgbGVnYWN5LXRydW5rCisxNjgzNiBiNGIyNjEyZWEzMzMwZmQ3Y2JlY2ExZmM2YTQ4NjVjYzVhODU2ZjE2IGxlZ2FjeS10cnVuaworMTY4MzcgNWIzNGI3MGVjZjIyZmRiNGE5M2YwOTUxMjBiMmY1OTQ5ZmEzNTFkMiBsZWdhY3ktdHJ1bmsKKzE2ODM4IGQ0NDYwM2YyYjkyODliNGE2ODI3OWUwNTBkMzE3OTJkMDgxODczYmYgbGVnYWN5LXRydW5rCisxNjgzOSA3NDAyOTBhNTYxOTBhMTMzY2QzZmQyNTMzYjJlYmY2NzdhNDBkYTgyIGxlZ2FjeS10cnVuaworMTY4NDAgMDQ2MGNjY2VmZTRlM2I2ZTQ4YzZkZjNmNWI5ODE5ZjkzNWFhZjAzOCBsZWdhY3ktdHJ1bmsKKzE2ODQxIGFlMjI4YTY0MjkzZTEyZGNiYzEyNDZkYWEyYjZiMWE4NDVjNzhlYWMgbGVnYWN5LXRydW5rCisxNjg0MiAyMTljZTk2MjIzNTI1MTRkYmYyMjQxNzM3MzllZDEzMThiYTVmMzM1IGxlZ2FjeS10cnVuaworMTY4NDMgNjdhNTQ0OGM5YTBmMjVhNzQxYzZmMDVkZjAxZmU0MGU3ZGVkNmMzMyBsZWdhY3ktdHJ1bmsKKzE2ODQ0IDViMGYzYzQwMDYwZmMxODIwMmZhODJmNTJhNGQ0YzY2MjkwYzgyN2MgbGVnYWN5LXRydW5rCisxNjg0NSBmNWQ4ZTczZDc3YjdmNWJiYjY1OGE2ZTQyZGFkNzYyMDA1ZTUxYWZjIGxlZ2FjeS10cnVuaworMTY4NDYgYTk2ZDdjNDVkOTYxZjMzNjI5M2FhYWVjZjI1NDY4MTlkODJhMTFlYiBsZWdhY3ktdHJ1bmsKKzE2ODQ3IGQyNmNjNWJkZDI0ODIxZTZhYTZiNTRiYmU1MDY0YTQxYzhiZGRmMmEgbGVnYWN5LXRydW5rCisxNjg0OCA3N2E2MTVjOTIxN2UxOTllOTNjZDY2NDcwOGVhMWY4NmJjZjQ3ZmQ1IGxlZ2FjeS10cnVuaworMTY4NDkgM2RkZmEyZDY3YmU0NjdjYzJmNDVjYTBiMDFkYmU3YmYyNDFhNWJiYyBsZWdhY3ktdHJ1bmsKKzE2ODUwIDkxYzY1OTk2OGE4MDE4ZTI2MWZmYjNkOGUyNGE2NWFmZWEyOWRmOGQgbGVnYWN5LXRydW5rCisxNjg1MSA3OWJmNmIzOGI3ZDVlZTk2OGI2NDg5NzE4ZDk0NzMxZjlkMjA4ZDFmIGxlZ2FjeS10cnVuaworMTY4NTIgMzIwNDVkNDIzYTc4NjlmMDAyNTcyYjFiMmZiZWFiMzQ5MzdjNTk3ZSBsZWdhY3ktdHJ1bmsKKzE2ODUzIDkxZjg0N2E3ODNkMmEwMjdmNWY1YzgyNThmYTBjYWZjY2ZlN2VkOGEgbGVnYWN5LXRydW5rCisxNjg1NCAxODM4NTE3MmZhYzBiNzA5OWJkMmQyMjY0ZGY2MTRlZDQ0NjZmMDgzIGxlZ2FjeS10cnVuaworMTY4NTUgYTI5YThjZjVlNjZkZDNmN2YxNjc3ZGViYjUzODI5MGYxNjNkNjU3NSBsZWdhY3ktdHJ1bmsKKzE2ODU2IDgzMDgwNTM5ZjdiNGI4NDk5MzhhYzE4YWI5YjI2ZTZhNGQzYWI4ZjQgbGVnYWN5LXRydW5rCisxNjg1NyA1M2FjM2UyMDYyZWZhOTY4NTVmOTAzNjJkZDEwNGNkZjM3OTcxZDk4IGxlZ2FjeS10cnVuaworMTY4NTggOThlMzI1NTQ4Njc5MDI2NGMyZmQwNmQzNzdjYjY2MjQ2NGY1ZjI2NCBsZWdhY3ktdHJ1bmsKKzE2ODU5IDAyMzQ2ODExNzUxNGY0OGVkZTcyYzE0MjEyNDU1YmQxMDQxNDU0NmUgbGVnYWN5LXRydW5rCisxNjg2MCBhOTA1YzVhYTA2OTFjZGI5ZWFhNmM0NWVjMTcyZjZjZDliOGE4ODZiIGxlZ2FjeS10cnVuaworMTY4NjEgYzQ0NDRmNjhlYmY5Njc3M2ZiZGFiYzlhMDg3NTBkZWEyYmViZDczNiBsZWdhY3ktdHJ1bmsKKzE2ODYyIDFmOTRhMTFkMmI4MGJmNDg3ODE0YmI2N2E2NTA4ZmVjZWQxYWYzODMgbGVnYWN5LXRydW5rCisxNjg2MyAwYTg3YzViNzVmZTNkNWVmNGQ2NGE5Y2RiMjNmNWExYmVmZGM2NDEwIGxlZ2FjeS10cnVuaworMTY4NjQgOGNmNTYxNDdkN2I1ZGJmOWZiNDc2MjQ3ZDFhOTg1N2YxNTQ5N2NmOCBsZWdhY3ktdHJ1bmsKKzE2ODY1IGI5MTMxMjU2MTljOGJiNzQwZjUxMDE2ZmQxMDllMWZhYTU3MTY5Y2IgbGVnYWN5LXRydW5rCisxNjg2NiA2ZTJkYmE0NWM4M2U1ZGU0MTNjODZjNGM3YmNkNzcyNTQ0OTk3OGE5IGxlZ2FjeS10cnVuaworMTY4NjcgZmVlMGY0MDJlY2NiNGUwODU4OWI4NzExY2IxY2JiNzczMGY4YTI4MSBsZWdhY3ktdHJ1bmsKKzE2ODY4IDI3NWJjNGY5ZDUwZDE3NTg4MzBjZTk0NjE2Y2QxODc2NWZlZTg0NzUgbGVnYWN5LXRydW5rCisxNjg2OSA4MGE0MTkyOTQyY2U5NWYyM2I1ZTNjYjQ2NDlkMjg0ODIwMTU3MjIwIGxlZ2FjeS10cnVuaworMTY4NzAgZTgzMDE2MTJlN2Q4MGI5Mzc1NzIzZTlhYTcxZjJmYzcyNjY2NjM1OCBsZWdhY3ktdHJ1bmsKKzE2ODcxIDdhNmM1ODY5ZjQ1NjY2NDJkOTQ5Y2NkYTBlY2M2NjBmZDE2YjVlNGMgbGVnYWN5LXRydW5rCisxNjg3MiA2MzY1YTg1YmY0ZmIxY2VmMzkwM2Y4MDMzODU2YjRmYzIyYjcyYzBiIGxlZ2FjeS10cnVuaworMTY4NzMgY2E4ZGMxYmFlNjdkN2RjOTdhNzdmMWUyOTRiYTk1YjA5MDEzMjZlZSBsZWdhY3ktdHJ1bmsKKzE2ODc0IGY2OWEzNzI0MDlmYzBmMDEyZDI0ZTNkZjg1NDBiMjliZGRkNTRhMzUgbGVnYWN5LXRydW5rCisxNjg3NSBkMDM0OGEyNmIwOTM5ZWJhYmNhNjMwNWE3OGQ0Y2E2YWUwZjFlMDUwIGxlZ2FjeS10cnVuaworMTY4NzYgZGMyZGVkY2E5M2Y3MGVjYjFmZjU3MWM1NjBlYTA3NGM2ZTdhMDkyZCBsZWdhY3ktdHJ1bmsKKzE2ODc3IDY1MzFmYjFjODc5ZmU5MTg4N2NlNzEwYzIyOTJiYzg5YTZlOGYwMmQgbGVnYWN5LXRydW5rCisxNjg3OCBjNzIyYjRjNDIyOWE2MTE1NGM5YmZjMmVmYzFjY2RkYmY2M2RiY2UwIGxlZ2FjeS10cnVuaworMTY4NzkgMTdiN2ZjNDQwMTk1YmQ2YTA3Mzg4OTVjNjcyYzI5OGU0OTQ0OTBhMyBsZWdhY3ktdHJ1bmsKKzE2ODgwIGM3ZmU3NTY5ZTRlMTc3ZDc1NmZmZDI2ZjQ1NDVkNzFjMmFmNzBiNmYgbGVnYWN5LXRydW5rCisxNjg4MSBjNTBmZWZmYWU4MjIwOTQ2OGU0OTMzNTU1MDhmYjBjMmVjZDNkYmE5IGxlZ2FjeS10cnVuaworMTY4ODIgMjVlZWE4ODA0N2U5ZWNmY2NhYzI3OWFlMzM2MDlmYmVhYWI4MWRjMyBsZWdhY3ktdHJ1bmsKKzE2ODgzIGRjMmRiNDU2MmQwNjAyZDdlODRjYzRkOWYyZGExNDQ5MmRmMWUyNDEgbGVnYWN5LXRydW5rCisxNjg4NCAwMzQwMWFmMzZiNWMwYTEyZTc5YjUyNzY0MDNlMzhkYzllN2NhMTRhIGxlZ2FjeS10cnVuaworMTY4ODUgOTIwZmMyODY4NTQzOTZmZDJhMTM1Y2E1YWM2MzRjZDJhMzFiM2U3MiBsZWdhY3ktdHJ1bmsKKzE2ODg2IDI2NmQ3ZWFmMDY5ZThlNzJiMDEwZTY1MTY5ZWVlMWQ5ZWFiY2NhZTYgbGVnYWN5LXRydW5rCisxNjg4NyAxZmNmN2I0MzhjYWI5YjQ5MjhiM2IyY2EzMGFmOWNjNTQwNjkwZjZiIGxlZ2FjeS10cnVuaworMTY4ODggMDA4OWIzOWZlNDljYmMzMjM4OGYwYWFhMWY3ZTYyMDJhMTE1YmU5NyBsZWdhY3ktdHJ1bmsKKzE2ODg5IDMxNGVjNTllNGUxNGNlMmZlNThmYmRjNWVlMzNjMWZmZWI0NmRjM2EgbGVnYWN5LXRydW5rCisxNjg5MCA3MTNkZDc2YmUzN2JhYzc4MmE3NjIxYjdkNTM4ZGFiODM2YmZlNTRhIGxlZ2FjeS10cnVuaworMTY4OTEgYzY0YWM4M2QzZjE4MjI1ZGU0OWE0OWE3ZTk4MjhlYTQzMTkyYWRmNSBsZWdhY3ktdHJ1bmsKKzE2ODkyIGY4ODQzMTAxYzk0M2I4YTdiNTNlMTI0MmYxZTFlZDZkYmUyZTM0NWUgbGVnYWN5LXRydW5rCisxNjg5MyBiNjc4NDkxZjdlMTE2Zjg1MDNkMzkwMzJkYTE5NGMyN2IzZWI2NzQ0IGxlZ2FjeS10cnVuaworMTY4OTQgYjY1MmE5YWE5NGYxMzM1MWExMzZjY2NhNTE5NjdhNzg1NmQxZWM1OCBsZWdhY3ktdHJ1bmsKKzE2ODk1IDUxYzJlZWQ2MDE1OTBjZjgzYjI1ZjU3NGVhYTIyN2ExMTYxOGRmOGEgbGVnYWN5LXRydW5rCisxNjg5NiA1Nzc4ZjkzY2YyMmI0YzIxODU3ZWY1NTU0MjA1ODEzOWFlMGRhMzQwIGxlZ2FjeS10cnVuaworMTY4OTcgZGU3NDIzMDNjNDU2OTEwZDZkZTFiNjVhNTNhMWZjNmIyNTIzYWYwYSBsZWdhY3ktdHJ1bmsKKzE2ODk4IGU2NzhlNTgwNDliNGM1NDBkNjEzZjU3MDlmMTcxOWU4YWZiMzVkOWMgbGVnYWN5LXRydW5rCisxNjg5OSBmMTliZWE2ODFiNjY3YzQzODRlODQ5ZmRmMDVhOTc5OTg2YzNiMjE1IGxlZ2FjeS10cnVuaworMTY5MDAgMDJhYmY3NzE3Yzk2ZTE3OWQ5YzNkNGU1MTAyZDVhNmIwNWUzZjk5MCBsZWdhY3ktdHJ1bmsKKzE2OTAxIDBhNjNiNDc4OWRmY2U0YmUyMGM5ZGI1YTZjZGI2YjA1MzYwNWFmNjYgbGVnYWN5LXRydW5rCisxNjkwMiAwNjEyYTFjZmJiZjY4OTUyYTRlZTIxNmFhNDVhZTIwNjVhMDc0ZGJmIGxlZ2FjeS10cnVuaworMTY5MDMgNWJmNTYzOTI0MTk0MzgzNjNmNzFiZmUyMWJkNTUyNTVkMWMxN2IyOCBsZWdhY3ktdHJ1bmsKKzE2OTA0IGQ2MzhmNTM1ZjQwM2M4ZTE4ZWVlOGE4NGMzNTc5NGNiMjIwODAwYmUgbGVnYWN5LXRydW5rCisxNjkwNSA1NzllNWM3MDM1ZTJkMDAzOWQyYjg5YTIyNDUwNzlmMjYwN2FlNGNlIGxlZ2FjeS10cnVuaworMTY5MDYgOTUzNDYxOWRhYWExMmY3NWQ2NWUzNjNhMDA0ZTg5NDNmMzI3YjE3ZiBsZWdhY3ktdHJ1bmsKKzE2OTA3IGQzZjViNDUzYWRlODRlMWRlYTZhZTIwNTcyNmZiZGYzODA1M2U3NjkgbGVnYWN5LXRydW5rCisxNjkwOCA0NjVjN2MyZThmMjE0NmQ3NjFmYzQwNjc2MDBjNmJhZDQ1ZDRjODY1IGxlZ2FjeS10cnVuaworMTY5MDkgZWM2YTBiNGE2NDc5YTU1ODE3NTUxODJlMzZhN2RiMDY0MjBhYTFiYSBsZWdhY3ktdHJ1bmsKKzE2OTEwIDYwNjcxNGZhZTFiNTA3YzkwOTFhNjgxNmJiYjExNThlZTNiZmFiODAgbGVnYWN5LXRydW5rCisxNjkxMSA4OGQxMWY0OGEzODQ1YjQ3ZjExOGU5MjhmNzI4YTVlZTQ2MmY0MDYzIGxlZ2FjeS10cnVuaworMTY5MTIgMDNkYjdiMjM5MmFlODhhNDAyYjgyNDBkOTI4Y2UwNTkxOWQ2OTY5ZCBsZWdhY3ktdHJ1bmsKKzE2OTEzIDc0NjM4ZDIwYzRmZDBmNDE2OGY0ZWNlYzM2ZjEwNTQzMmVlNjkxNGUgbGVnYWN5LXRydW5rCisxNjkxNCA0NGU2NjZjYzhjMDdiZGVlYzJiYTE0NWI3ZDk4Y2I2NjFiZGYxM2EwIGxlZ2FjeS10cnVuaworMTY5MTUgNDY4NDgxMTM1YzQ5MGIxYTMxOTQxZjU1NTBhZWVjOTlkOWVhYmJhMyBsZWdhY3ktdHJ1bmsKKzE2OTE2IDJkZTBjYzE3NGMzYmU5MWFlNDU1MDE5YjBhOTVkNDJlZGRkNjUyMjcgbGVnYWN5LXRydW5rCisxNjkxNyBlMmVkNjliODJkOGQ3MTgxODUyOGUyMWM5ZTYwYzA0ZjhmYWZiOTc1IGxlZ2FjeS10cnVuaworMTY5MTggMjk2MzZmMDIwZDRjN2I0YTViM2FmMzQ0YzVkY2Q0NmNhM2E5MWI0ZCBsZWdhY3ktdHJ1bmsKKzE2OTE5IGY2NTdkYzhmZjI1ZTkzYjg3NzMwNWJiY2ZjNDVlMzYwMTkxYmIzMjYgbGVnYWN5LXRydW5rCisxNjkyMCBkYTY5YjdkMWYyMGYwYTZjYmE0YWYyZjAzNmYyYjdmNDljYjIwMjlmIGxlZ2FjeS10cnVuaworMTY5MjEgZDgwOWI5Yjc1Yjk5MzkzMTlmNzQ4NWU0NmIyNjIyZWI5OTU4MGQwMSBsZWdhY3ktdHJ1bmsKKzE2OTIyIDRkYWM5ZTMxNDliZWFjOTkwZmYxMGU0NDY4YTEwZjkyYjllNjY1MWYgbGVnYWN5LXRydW5rCisxNjkyMyBlOTQzNDJlZWE0Zjg4ZTQyZDVmZDIzYTkzZDJjM2EzMTE2NGRlYjhhIGxlZ2FjeS10cnVuaworMTY5MjQgMTdkMzEyODQ3OGMzYjkzZjFiOWQyNTg4MzhkYjU0OGQxZWQ4OTA0NyBsZWdhY3ktdHJ1bmsKKzE2OTI1IDMxNDhlZmU1NjA2ZmMxODE4YzMzY2NlMzgxMzVmMmY2MTEyNWUwODggbGVnYWN5LXRydW5rCisxNjkyNiAwYWJmY2EwMDM1ZGNjODMyZmExNWMwZTJkMzI1MGNjMDgxYzhmYWNjIGxlZ2FjeS10cnVuaworMTY5MjcgODdiOGYwZWE1MGU4ZDE1NjA2NTM0OTYzYjdiZGVjMThiYjZkOTYwYSBsZWdhY3ktdHJ1bmsKKzE2OTI4IDNlYTIzZTNjMWIwNmUyYTY0OWUzMjY5ZDJhOTlhOTI2NDFiM2NhYmUgbGVnYWN5LXRydW5rCisxNjkyOSA0ZWFjYzBjOTEyMDkwYmEwZTU2ZjA2MGQ2MmExZDBlMDA1MmViOWEwIGxlZ2FjeS10cnVuaworMTY5MzAgM2EzYWRmZGRjMjlkMWYwODIzZTYxNWFjNjc1N2I5ZWNhNzY3MzJmMiBsZWdhY3ktdHJ1bmsKKzE2OTMxIDBmODM0MWRjYzNjYmM2YjRhZjY4NmZiM2Q5ODk5NjZmZjBjNDVhZGQgbGVnYWN5LXRydW5rCisxNjkzMiA5Mjk4MDkyMGQ1ZWQxMGRlNWI1ZmVjNzFmNzExMTA1MTZlN2YxZjg0IGxlZ2FjeS10cnVuaworMTY5MzMgYWM4ODA5OTU5ZDAxNjQ0MTQwZTcyMWRjNTE0OTI3ZTExN2ViOWVhMCBsZWdhY3ktdHJ1bmsKKzE2OTM0IDQ0ZjRhODRhODBhODI1ZDhiZjBjMDgzMDk0M2Q1NjQ0NTE1MjM1MmUgbGVnYWN5LXRydW5rCisxNjkzNSBmNjMzOGQ3NGRjYTEwN2FiYTg2ZTQ3ZTZjZTVhMTllNTg2YTFmYjE5IGxlZ2FjeS10cnVuaworMTY5MzYgODBkNDY2OGYxZTEwMzdiNTJkNDg2YjVlOThkYWY0NTM4NDhlZjBmYSBsZWdhY3ktdHJ1bmsKKzE2OTM3IGMxNGNhMjBkMWZjOGQ5NWI1MTFiMjJmMGYzYjBlZGE4ZTNhOWRjODAgY25yaS0xNi1zdGFydAorMTY5MzggNzNjNTY0ZTRhMGYzNTI3YWViZGU2NmJjZmI0YjI3M2U0M2ZiNWU0NSBsZWdhY3ktdHJ1bmsKKzE2OTM5IGU4YWU3MGMzYWJiNDNhMTc5Y2Q5ZDJiMTc3MTRmZTI4N2VjODlmNjUgbGVnYWN5LXRydW5rCisxNjk0MCAyNjg5NjdjOTkzNGEwNTg2NDE2YzNiNDg2ZTc5YmY1MWI5NzE5NjM1IGNucmktMTYtc3RhcnQKKzE2OTQxIGRjNWY2N2U4YTJhZjE5Mzg5MGUzYmQwNTVlYThmOGZkMDFlOTFiZjMgbGVnYWN5LXRydW5rCisxNjk0MiBjZWY0ZGE0MTQ3YzgzZDU4OTg5MzkyZTZmYzc4YTBmNWNkZTE0NTc3IGxlZ2FjeS10cnVuaworMTY5NDMgZmQzZjhhY2YxMDNkMWU3YTNmOGYwMmVlYWQ5NDk0MjUwMzU1N2ZiMCBsZWdhY3ktdHJ1bmsKKzE2OTQ0IDQxZWI3NTVlNGVkMTUzZjY1OGI4NjNhOWNlNmFiYjEzYzE1MGMwYzUgbGVnYWN5LXRydW5rCisxNjk0NSAyNjc2OGUyMWFjZjkwZWNmNTAyZDVkNWM2NTQ5YTRmNjkzYmMzNmE0IGxlZ2FjeS10cnVuaworMTY5NDYgMDM5NTgzYzA5MGM0MzQyNGI5YTg0NDMwYzFlNzk1ZGNmZDJlOWRlYSBsZWdhY3ktdHJ1bmsKKzE2OTQ3IDJjMmFlODZkZmU4NzcyNTlhYjA5MWU5YzljM2E2MzU0MTYwM2FhNmYgbGVnYWN5LXRydW5rCisxNjk0OCA3YWFkN2Q5YjYxNmU5ZGRiZGRiYmEwNGYyZmJlYTk5NWEyMDU5ZWZmIGxlZ2FjeS10cnVuaworMTY5NDkgNDQxZGEyYzVkZTQzYTk1M2FjYjY1YzY1OTc2NzI4Zjg2YjY4OWVkYyBsZWdhY3ktdHJ1bmsKKzE2OTUwIDQ0MjEyMzM2ZDcxZWE5N2VmZTdhZTIzNzQzMmY5NzQzMDM4YjQ3MTIgbGVnYWN5LXRydW5rCisxNjk1MSAzZWIxMzVkNjJlMmFlZDJjMzFmZGMzMjdjZDNjMmIyNTBmYTg2ZmY4IGxlZ2FjeS10cnVuaworMTY5NTIgNzZlNzMzODljMzQwNzAxMjBlNjYyZjI3ZmU1ODI0YmYxZGU1MGU3MCBsZWdhY3ktdHJ1bmsKKzE2OTUzIDk5NmNjMDY3NWRiNjc4NjllOTZlMDI2YmY5ODRiZDZiYjVhM2QwZDMgbGVnYWN5LXRydW5rCisxNjk1NCBhYWUzN2RjOTlmNTc1NTcwOGNkMWEwMjk2ZTYyYjZlMjNjNGVhMDkxIGxlZ2FjeS10cnVuaworMTY5NTUgMDcwOGNhYzU5ZGVmM2E2Njg0NjgzM2JmNWQ4NmY0MjY0ZTQwNDQ5NCBsZWdhY3ktdHJ1bmsKKzE2OTU2IGY2ZTVjYzJhZjZmMTk3YTQ0MzAzMTViMGZlZDM5NWY4OTE2NWM4ZjIgbGVnYWN5LXRydW5rCisxNjk1NyAzMTE2YjBiOTEyZTk3NWM2MTg2OWRhNTllNDYwMDRmMjcxNjUxMDc1IGxlZ2FjeS10cnVuaworMTY5NTggZjdhOGM0MGIzODgwYzQxMzczMmEwMTFlNGUwNzNhNmM2YjNkZTEwMSBsZWdhY3ktdHJ1bmsKKzE2OTU5IDQyODcyOWZmODgyNDlmZGViNTE5N2I2YTAwMWRhNGNmY2Q1Nzc1MmEgbGVnYWN5LXRydW5rCisxNjk2MCBmNzA0MjRlYmIzOWI0YTFmNDhjMjI0MDU4OGRiNGZlOGYyOTJhZTg1IGxlZ2FjeS10cnVuaworMTY5NjEgMjJiNTkwZjhjZjUzODI0MTBlMGMzNWQ0MGIwM2ZiMGVhOTM5MDNjZiBsZWdhY3ktdHJ1bmsKKzE2OTYyIDMxY2RhODdlOWZmNGVhNDczMThhNjhjNDNmOTdlZGQyNzMxYjBmMmYgbGVnYWN5LXRydW5rCisxNjk2MyA3M2U0ODg0NzEyNjMwOGIyMGM3ODk5ZjkyMWRhOWFiMDUyODZiZTNiIGxlZ2FjeS10cnVuaworMTY5NjQgZjVmODc4NGE0YzI3YzhhNTEwYWUzZGRlZmIyM2Y3NDQ3NGZlNWE4OSBsZWdhY3ktdHJ1bmsKKzE2OTY1IDIxZWM2OWE1NjIyODg2M2Q4OWY4N2M2ZDQ5N2FkMjE2ODk2YTk1ZWEgbGVnYWN5LXRydW5rCisxNjk2NiBiOGU1ZTkzMzgwMWUzNmFmYmQzNWM2OGM4NmZiMDNlNjg3MGE2ZmQ2IGxlZ2FjeS10cnVuaworMTY5NjcgOGRjZGRjZjEzMzBhNzdkNTgyZTBiODg5ZmE1MTIwMjNmNDg3MjkyZSBsZWdhY3ktdHJ1bmsKKzE2OTY4IDMwMmRmZDUzYjNjOGZjMjI1OGFkODhiMjE3NTIwYWQzNWE5YzYxNzggbGVnYWN5LXRydW5rCisxNjk2OSA3MmQ4YTNiMjAzYjE0ZjZiMWRiNmY0MzQyOTkwMmE0NWU1NGU3NzMwIGxlZ2FjeS10cnVuaworMTY5NzAgM2RhNWJmM2M1ZjE1NzQ4NjRlMTg0M2MyNDFhZTgxODZiN2VkYWYxYSBsZWdhY3ktdHJ1bmsKKzE2OTcxIDQwNDQ3YjY3MjA2NGI0MjA0OThlOTZhNzAzYTU0YjIzMDllMGI1MTIgbGVnYWN5LXRydW5rCisxNjk3MiBlYzNlMGZlMTdiM2Q3N2E5OWMzOTg3YzU1OWY2NGQ0MzIyMmQ3ZWMwIGxlZ2FjeS10cnVuaworMTY5NzMgZGFkNTRkNDRkOWVjYzI3MzQ0NjQ3MWJlMTM4ZmI5NjczOGZlOTQzYSBsZWdhY3ktdHJ1bmsKKzE2OTc0IDA1MWRjZDdjZDE5OTFkZTllMTZlZDAzMGFhZTZiMWYwNGJjMGU2MTEgbGVnYWN5LXRydW5rCisxNjk3NSBlN2M4YjU5OGZmNzVmYTIzOTUzNjZmZDVmMjFkODBjNzQxMjQ4NWYzIGxlZ2FjeS10cnVuaworMTY5NzYgYzEyZTc5NmJjNGI2NzViMDg0OTA5NTA2NmIxZTBmNjA0YjdlZGE2ZCBsZWdhY3ktdHJ1bmsKKzE2OTc3IDZiZjA2MWEyZmM3ODAyZjc2YWVjNjNiNmVmZDNmODZiNjc1ZjcwNjEgbGVnYWN5LXRydW5rCisxNjk3OCA1NDY4YjZlM2I5NmE3ZDE3ZjU5YjA1NTFmNDc1MTRkMDgxOGRiNjU1IGxlZ2FjeS10cnVuaworMTY5NzkgNTJmZDQ5NmQzNTMyMDljNTNmN2E3YWMwMmZjMDY0NzUzMTU3YjhkOCBsZWdhY3ktdHJ1bmsKKzE2OTgwIDI3ZDdkODljNzc0YjEwMDAzYThlODMzMzBiYzYzZjY0NDRmZjA2MjQgbGVnYWN5LXRydW5rCisxNjk4MSAxYjlmZDBjYmQ5MTQ5NDdjYzQyMWJhN2U0NWFhMDkzZDdiYTlhZjAwIGxlZ2FjeS10cnVuaworMTY5ODIgZGJhNGFlYzk3MGU2Y2RiNTBkMTc2NTEyYzFiN2YwYmM2MGFiNTIxNiBsZWdhY3ktdHJ1bmsKKzE2OTgzIDAxODQ2NTY4ZDE0N2QxNjcwN2VkOTU5MmQ4NjliOTA2Y2YxYWRkMGYgbGVnYWN5LXRydW5rCisxNjk4NCBlOWMyZjgzMGY5YmE1MmJmNTk2OGNjN2NkMjY4ZDJjZTcxNzVhMmRlIGxlZ2FjeS10cnVuaworMTY5ODUgNTFhMzNhM2IyYmE5MzU0NTdmZDVmYzg2Y2E3OWRlYTE0ZjBjN2E3MSBsZWdhY3ktdHJ1bmsKKzE2OTg2IDkxZGVhZGZkYWUzNmJhYWU2YTJhZDdjY2UyZjlmNjQxN2MyMjM3YTAgbGVnYWN5LXRydW5rCisxNjk4NyBiOGVhZGVlZDhlZDM1MTgwMzY2NGE2Yjg3OGYzOTkxZmY3M2FmMzkwIGxlZ2FjeS10cnVuaworMTY5ODggMDE5MjY1YjNhODU2NTljNDI2OWE5Y2FkN2Y1Mzg4MDBjZGZmNmFmMyBsZWdhY3ktdHJ1bmsKKzE2OTg5IGM1NjM3MmFkOTM0MzVmMWZjYzVjZGM1MGViNTk5MGUxMTM1MGExNWIgbGVnYWN5LXRydW5rCisxNjk5MCAyYjZhNjM3NTliOTdjZjk3ZjNlN2ExODQ1ZDU3ZjFmZmQ0YmM2OGFjIGxlZ2FjeS10cnVuaworMTY5OTEgZjY2ZTg2M2EyYTViMWU0MjdkNmZjMTcwNTIzYmVjMjQyY2UyYzY5NiBsZWdhY3ktdHJ1bmsKKzE2OTkyIDM1Yjc5ODliYTIwYzhhMTUzYTQ3YzAxNDhiYzYyNGZjMWQyZWZiMDcgbGVnYWN5LXRydW5rCisxNjk5MyA4ZDFhMDU5YWU5OWQ0NGUyMjZhM2UyNTMwOGI5Y2E0ZWY4OTAwZTdmIGxlZ2FjeS10cnVuaworMTY5OTQgYWNjNzI4NThlYjcyYzgzNjAxNjlmZGIxYzhhMTY5YTEzMTY5Yjc5MiBsZWdhY3ktdHJ1bmsKKzE2OTk1IGFiYmMwMjc5NWM0ZGVmZWNhMjllOGM2ODU4YTE1ZWZmZTE4MjBjYTEgbGVnYWN5LXRydW5rCisxNjk5NiBkZmYyMmQ0YTQ4ZGFlMzZmYjBhOGE0ZGIyNzgwZmY5YmRiM2U2YWM2IGxlZ2FjeS10cnVuaworMTY5OTcgNTc3MmM0OTgzZGQ4N2QzODIwMjkwODdkYmM2YWFjNDc3YTFlMmNhZCBsZWdhY3ktdHJ1bmsKKzE2OTk4IGVhNzA0MGFiNzI4NmYyMmFjYjEyNjAxYjg1OGIyMDgyZjdjY2VkMzQgbGVnYWN5LXRydW5rCisxNjk5OSA4OWY4MTUzZmQxYmExNjFmODIzZjE5NjFlM2Y0YTg0MWI4NTYyMmFlIGxlZ2FjeS10cnVuaworMTcwMDAgYzg1YTgwZGI2ODQ1YjA2MmY1Nzk5NGJiNWVhYTBjYmM5MGY4NzI0NiBsZWdhY3ktdHJ1bmsKKzE3MDAxIDIzODVlYTU4NzJlMTkzYmU1NGJiN2EwZGZhOGI1MzI2MjFhMTNmNjcgbGVnYWN5LXRydW5rCisxNzAwMiAyODYzZmJiMTM1ZjFmOWNjNmM5N2ZmNDUxMGU0ZDRkZTZiNjllZThlIGxlZ2FjeS10cnVuaworMTcwMDMgOTMwMTNlNGJiZTAyZTI0YjAyY2EwMzc3MTViMzY0NTgwNTFiNjRkYSBsZWdhY3ktdHJ1bmsKKzE3MDA0IGU5MjEyMjhhZjQzNTY3ZWZjOTAxMjM1ODdlMDE2ZTkxNDVmMGViNWYgbGVnYWN5LXRydW5rCisxNzAwNSA1ODE0NjBmY2YxNDI1NjAwZTUxYTlhNDEyNzc4ZGE2YjAwY2Y1YTU1IGxlZ2FjeS10cnVuaworMTcwMDYgNjIyMzM5N2JkNmEyNjYxODQzMzYyMjA5ZmE2N2UzYjgxOWZlM2VkYyBsZWdhY3ktdHJ1bmsKKzE3MDA3IDI3N2ZkZDk2NDdmZTA4YjFhN2FhMjdiODBhZjVlYjE2MjNiNDQ0ZTIgbGVnYWN5LXRydW5rCisxNzAwOCA0ZTY2YTNhYjc1N2RhMzJmNjY4MWRlY2ViZWRmMGQwMDVjMzg5ZmJmIGxlZ2FjeS10cnVuaworMTcwMDkgYmQzZDE0MTFiNjZjMWQ0MDVkNjM2MmQ1NDliOWY0ODE3NGZiYjhhNSBsZWdhY3ktdHJ1bmsKKzE3MDEwIDliZjE1OWZmNDkxMjkyM2VkMmQ0NTIwOWEzMWVhNTdhMjEyNzAwMmYgbGVnYWN5LXRydW5rCisxNzAxMSAyMTE5NzYwMzRjZjdlZTM5MGMzMGY3OTc2Njc2MTZlZGQ0YTdjODU3IGxlZ2FjeS10cnVuaworMTcwMTIgOWQ4Y2U2ZWQ0YTI5YWI0MjAwMzU4MDE5YjcyZTFiNjk4MjY2NWM3OCBsZWdhY3ktdHJ1bmsKKzE3MDEzIDk5OTY3MWY2OWRmNGQwNWZmNzRmZjE5MTM1MDlhZmI1YjBiMWY1ODUgbGVnYWN5LXRydW5rCisxNzAxNCA0MTIzNGFlOTVkMmEwN2U1ZGIwMzQxMWFlNDUyY2YxMGVhZDk1ZmYyIGxlZ2FjeS10cnVuaworMTcwMTUgMjc4N2U5MzgxN2M2YTBhMThkZmJlOWEwZjMzZTU2NWZhZWMxNDIyMSBsZWdhY3ktdHJ1bmsKKzE3MDE2IDM0ZTdkZTRhZGE3MGFmM2NiYjYwNzZhM2RkZjU4MmI3NGY5MTUwZTcgbGVnYWN5LXRydW5rCisxNzAxNyA5MDBhMTc3NTQwMjEzY2JmZGE1NGYzYjAxYzNmYTQzZWQ4ZDc3OTZhIGxlZ2FjeS10cnVuaworMTcwMTggZWM2YTIxZjU1ZmExY2U3ZDc0NWEyZGM5NmFkZDAwMTg0OGE4ODdmMyBsZWdhY3ktdHJ1bmsKKzE3MDE5IGQyMjM2MjBhODExMjY4OWM4YjFmYzg0NjJiOGZlM2U3YThiMjU3MTEgbGVnYWN5LXRydW5rCisxNzAyMCAxYjBkYWJmZmM1MWNmMDkwMDQwZWFhOTdhMzhlZTE2ZGI5MmU3ZTNiIGxlZ2FjeS10cnVuaworMTcwMjEgMWMzNDQ1Mzc4ODc5YmEyNmI0ODFiMGMyZDk1ZGFjYWY2MDY1NjBmZSBsZWdhY3ktdHJ1bmsKKzE3MDIyIDY4MTZkYjI2NTBjYWJmOWIwMWRjZTA1ZmNhYWU2ODk4ODZkY2VjN2MgbGVnYWN5LXRydW5rCisxNzAyMyAzYWUxODViOGZmMDMxYjE0OGU1NjRjODI3YTQ1MzZiNDIyZWI2MDc3IGxlZ2FjeS10cnVuaworMTcwMjQgNGU5MDdhNTFhN2FmZmMxZjNjYzJkYjk4NGJhZGVmOWRjNDVjMWE0ZiBsZWdhY3ktdHJ1bmsKKzE3MDI1IDhjN2RjZDFlZDA4YTU3ZjYzYTc4MWViOTY4Y2ExMTk3NTNjOWJjM2MgdW5pdmVyc2FsLTMzCisxNzAyNiBjMTZmMmRjOWMwODllODZhNWNjYzAwMWJhNGI3YTFmNDk2MzU4NjU4IGxlZ2FjeS10cnVuaworMTcwMjcgOTRkNzFmMmZjOWE4M2NkZGM3MDM1YTg5ZmU1MjFmYWI3YjMzYWI2ZSBsZWdhY3ktdHJ1bmsKKzE3MDI4IDBjMGVlODg2ZmIwM2I3OTA1N2YwMGJiNTE3MjM3NGEwZTc4NmI5NmYgbGVnYWN5LXRydW5rCisxNzAzMSAxOTEyNmU1NTdjZTg0MWY3NDUzNjBjMDY2YmNhYjU5YzhlMzYxMjA0IGxlZ2FjeS10cnVuaworMTcwMzIgYTg1NmM5MmIxZDdiZjFhM2RlYzBlMzAxYWZjZTNhZTVjNDUxNzc3MSBsZWdhY3ktdHJ1bmsKKzE3MDMzIDU4OTExMmM0ODI3MzQxMDA4YWM4YTkxMmNlMmE5ZmNkYTU4ZjJlZDUgbGVnYWN5LXRydW5rCisxNzAzNCA2M2VhMmEyZGYwNmYzZDE4YWU1ZDRiMmVjNmVjMmNjNWUyMTgwZDc0IGxlZ2FjeS10cnVuaworMTcwMzUgYjVmYjE3NWFkNTI4MjU0MWM2YzIzZDcwNDJlYTk4OTdkZTY1MzdlZCBsZWdhY3ktdHJ1bmsKKzE3MDM2IDA3OTdmZGIyNWE3NzllMTdhOGJjZGVmMzQzOGNlYjE2MGU5ZDE2YmYgbGVnYWN5LXRydW5rCisxNzAzNyBkMzMxNzljZGM1MTEyMWQzYjkyOTU0OGRhODFlZWM4YWI5NzUzM2Y5IGxlZ2FjeS10cnVuaworMTcwMzggYWUxZWRjNmZmNTQzNWZhZGY4YzYzZmQ3NzQzNzZmN2Q5ZmY1YTM0ZCBsZWdhY3ktdHJ1bmsKKzE3MDM5IGU3OWQzY2Y0NDQzZWQ5ZDdmZDcxZjVmOTRjYmFlY2Q5MTEyM2U4YzMgbGVnYWN5LXRydW5rCisxNzA0MCAyYzMyODMwOTQzMTE2Nzk3M2ViNTkzZWNjMmE2ZWMzYjg1MzRkMTJjIGxlZ2FjeS10cnVuaworMTcwNDEgMzAzYzM2ZTQ4NzY5ZjkzOTUyN2MyZDI4YTQxMGUwNjc2NTgyOGQ0OCBsZWdhY3ktdHJ1bmsKKzE3MDQyIGU3NWViNGQ4ZTMyOWI0N2FiMzlhMGNhOGI1NDNiZWU1OTMwZDU4YzUgbGVnYWN5LXRydW5rCisxNzA0MyBkOTc0Y2Y1NDVjYTZhZGIzYzIyMzM1ZWU0NTE4OWRjMWNhMTY5MjE0IGNucmktMTYtc3RhcnQKKzE3MDQ0IDhjNTI2OTMzOTdkMjRhMTFkZGNhMjg4YThjYzBjNWUyNDY3MDM0YzggbGVnYWN5LXRydW5rCisxNzA0NSBjMzk3MzNiZTBkYzgxMWFhOGIxMTA5ZWY5Y2NkOWI1YzQxOGYxYmMyIGxlZ2FjeS10cnVuaworMTcwNDYgYTRmNTMyOGNjZjE5MjI3YmZkZjBlNWU2Mzg4YzU1MDgzYTA5Y2U0YSBsZWdhY3ktdHJ1bmsKKzE3MDQ3IGNiZTk1OTBkMjM0NGM0YjgyNmNjYzliYWFmYjY1YzYwZWU1YmM5MTggbGVnYWN5LXRydW5rCisxNzA0OCAxMWEyNmU5NjNkYzkwOGY2ZDQwMGFlZDBjY2IzMDA5ZDQxNTUxZmFlIGxlZ2FjeS10cnVuaworMTcwNDkgOWY5ZjMyODBkYzY4YTAxNzhiNjRjNDMwOWM4MjhlZjQwYTI5ZGU4OCBsZWdhY3ktdHJ1bmsKKzE3MDUwIDIwMzc3ZjE1Yjk2YTdjYmYxZjE4YzEwZTZiZDRmNTI0NzJmMGM0MGIgbGVnYWN5LXRydW5rCisxNzA1MSBhYjBlYmYxMmQ0ZGUyMjJjMDc0NTFhZjk3YmVlZjhkMjNmYTc0ZmVjIGxlZ2FjeS10cnVuaworMTcwNTIgMzE5MjVhYjQ2YjIzNTQyYTFjMzQ3ZTNmYzMxNWIyNmFkMjc1NDBlNyBsZWdhY3ktdHJ1bmsKKzE3MDUzIDM5NmI0YWIzYjljMmE5Y2JkY2IyNWQ3YWVmYTQ3MTFjNTMwZTQ4YzMgbGVnYWN5LXRydW5rCisxNzA1NCAxZjFhMTU2ZWQ1YWY4ZjdhNTBjZTA1ZmM4NWY4NTQyM2EyNGYyYWE0IGxlZ2FjeS10cnVuaworMTcwNTUgYjk3ZTYyMDJmMGIxOTY4YmQ5ODkwMzFmMmExMTg1OTAyM2I2ZTI5NCBsZWdhY3ktdHJ1bmsKKzE3MDU2IDNlNWQ2ZTIwOTNkZmUxYzViZDk2NTliNjFhZGI5YjVmOWQ4Y2MxOGEgbGVnYWN5LXRydW5rCisxNzA1NyA2M2Q4NTg5N2M2OWZhNGQ1N2MxNzFlM2I4OWFkMzUwYTdiMzRlNjdlIGxlZ2FjeS10cnVuaworMTcwNTggNThkNzk5NWNlNzk1Zjc5ZmViMDJjZmQ5ZWNiZjhjZmUwMTdiZTc5YSBsZWdhY3ktdHJ1bmsKKzE3MDU5IGQ5NjQzZTljOTBlYjFhNWNjOWQwMWU3ODgyM2VhMWNkMzE5MDcwNDQgbGVnYWN5LXRydW5rCisxNzA2MCA3NGY3ZjIzN2Y3MzlkOGQ2YzkxZTQ1MzcxNjQzYzc0ZjM0YzhhYmU2IGxlZ2FjeS10cnVuaworMTcwNjEgMGU2NmI3NzQwOTRiZmU1NTE0NTRjZTdiMmM5YjFkNTI1NmJiNGU2OSBsZWdhY3ktdHJ1bmsKKzE3MDYyIDM0ODNhNzhkMTM1ZmQ0NjI0MWJjNmYzYTY4ZTdjZGY1OGQwNDU0ZDIgbGVnYWN5LXRydW5rCisxNzA2MyAzZmNhYzM1YzdmNWUyMWZmZWUxN2IyNWI1Y2MyMjdjNTc5MzM0NGIxIGxlZ2FjeS10cnVuaworMTcwNjQgMDY3MGM0ZjkwMTcxMGYyZDA5YzIyOTQ3ZjQxNmQ1YmY0NzYzNWMwZCBsZWdhY3ktdHJ1bmsKKzE3MDY1IGIyYTgyOTJjMzlhOWEyZGYzZmU5OTE5MjAxZmFhYTczNTUxNmQyMTYgbGVnYWN5LXRydW5rCisxNzA2NiA3YjMyY2NkZjFkNGEyMDI0ZmNmMzhmY2IzZmYxNmQ2YTczMzY2NzBlIGxlZ2FjeS10cnVuaworMTcwNjcgNTk5NGJiNjE5MTYzMzJjNWZkZTkxNGM1MmY2ODIyOTBhZmMyNDJhOSBsZWdhY3ktdHJ1bmsKKzE3MDY4IDljZDJmNzkwYzUwYzM4Mjg2NGVhMzZhY2QyN2U2ZDdiMGQwNThmNWEgbGVnYWN5LXRydW5rCisxNzA2OSBhMTQyZWEyMGZlOTRmMTg0NmY0NWM4OWEyOTgzNGY2OWY3ZTdiZDgzIGxlZ2FjeS10cnVuaworMTcwNzAgNDM4ODcxZTcwNTMyYjE3YmUyNzBjYjhkNWQ4MmYyNjE2N2QxMWQ0ZiBjbnJpLTE2LXN0YXJ0CisxNzA3MSBhMWIyZmIxN2JkZTdlZDdhYjdjYWYzZjA2YWUxMDlhZjY4NjMzN2E0IGxlZ2FjeS10cnVuaworMTcwNzIgNGUzNjQwYTA2ODU3MjA2YmYxNjZlZmY1YWJmNjc4ZjczZGI1ZGVjMiBsZWdhY3ktdHJ1bmsKKzE3MDczIDRhZmIwODg5YTE2NWMxOTc1YjRhMTA2MTMyYjhjMmU3ZTk4OWE0NzYgbGVnYWN5LXRydW5rCisxNzA3NCA1OGYzZjkzNjI3OWZmNjgyYzYwNWM4MWI1MjNkMjRhOTc3YWZlNWI1IGxlZ2FjeS10cnVuaworMTcwNzUgYTk5ZmFiMGJhMmRmODhjOWE4YzE2NjA3MDNiMmU3NmNjNWM0ZTdhMiBsZWdhY3ktdHJ1bmsKKzE3MDc2IDc0NTkxNTliYTI0OWY0NmZmMWQ0MzA1ZjViYjE4YmNlMmZhNTFjNDYgbGVnYWN5LXRydW5rCisxNzA3NyA4MzBkZTY4ZGUzMzA5NWFiNzNlOGUxNDhkOTBjZDgxODBlYzg5NzVkIGxlZ2FjeS10cnVuaworMTcwNzggY2RkOTVkNjdhNzE0MjU4MjlkZThiODU5MDg1M2JlODc3MGQ5MDczZiBsZWdhY3ktdHJ1bmsKKzE3MDc5IDFmYzMzZGZjZWM0NDJjY2ZmOGUzY2Y5NDE4MDBlMmYxNmM3NWZkMTcgbGVnYWN5LXRydW5rCisxNzA4MCA1ZmZmNGZmZWIzNWQ1YzVhZjFmN2MzZmQyYmI4NGNiZGIwNGQ4ZjNjIGxlZ2FjeS10cnVuaworMTcwODEgNjM5NjUyOWE0MjFjOWVhNDMxMzI2NWEwMjEzNTU2YmI1ZWVmN2I4NSBsZWdhY3ktdHJ1bmsKKzE3MDgyIGFlMjc1NjQ0NDU3YjU1NGFjZTQ2YmVhZjdiOGM4Y2ZhZGFiMTdlYjkgbGVnYWN5LXRydW5rCisxNzA4MyBkODdjZTJkMmU0MjU3MzE2NTY4NDBlNTExMDc4MDhkMTRlMTMwOGZlIGxlZ2FjeS10cnVuaworMTcwODQgYWRmM2EyODRhMmNmMWQ2NmU2YWIwMTQyYWU1YmMxN2IzY2MxZmVhOSBsZWdhY3ktdHJ1bmsKKzE3MDg1IDliMjBhNjlhNTA1ZTBlNmYyODg3Yjg2NjcyMjY5MzBjOWNlMDkzZGEgbGVnYWN5LXRydW5rCisxNzA4NiAzNjM4NTFjY2NmMmFlZDIyYTc1ZjZhYjZjNjc5YjUwZWUyNjI5NDI3IGxlZ2FjeS10cnVuaworMTcwODcgNjYwZGJjYzE4YjllYzZlOTZmY2UxYTA0ODgzMTU0YjNkNDRiZDQ1ZSBsZWdhY3ktdHJ1bmsKKzE3MDg4IDFmNzZmYzk4YjRjOGRmMDA3YjA4ODY1NjBhNmViMzk3MTQ1YzE1YmQgbGVnYWN5LXRydW5rCisxNzA4OSBkM2Y5MmYzZmMwYjA5MDI2ZDkzYWVhNWZhZjk4OTVhZmM5YzI5ZDNiIGxlZ2FjeS10cnVuaworMTcwOTAgOTg2MDg0MjljYTZlNDI5MjQzMGQyMmEzYzg0ZGE0ZjJjZTYyMjQ0YyBsZWdhY3ktdHJ1bmsKKzE3MDkxIGNkOGI4MTVjYjE5NjU3YTBjZjUyMWFmMGViNWRkNGIyY2Q3ZjdlNzkgbGVnYWN5LXRydW5rCisxNzA5MiA5MGNhNmFiMjY5MDllYzM0MWUwNTFkYjI0ZWZmMDNiZWU3MjVhYjc4IGxlZ2FjeS10cnVuaworMTcwOTMgZGM5ZDllYzQ0Njc5Mzk1YTBmOWM2YWY1YjE3MzhhZmE0YmU3ZTIwNyBsZWdhY3ktdHJ1bmsKKzE3MDk0IDE1YjZmYzI1ZjYwNTA5NmY5MzY2YzczNzEyOTc4YzE4MGJmYWViMzcgbGVnYWN5LXRydW5rCisxNzA5NSAyMTU1N2JhNGFmYmNlZGJjZmRkNDc2ZDA5ZjkxN2RlN2FhNWFhMDU3IGxlZ2FjeS10cnVuaworMTcwOTYgYmJmYzQ5YTg0Mzg5NjQyZTk5MGE4YmJhZDhjN2NjOTYwNDkyMjAxMCBsZWdhY3ktdHJ1bmsKKzE3MDk3IDE4ZGEyYmM1MDU4YzBmZGY4Yjc4ZjY0MWQ3Y2MzNjE0ZTM0ZjE4OTcgbGVnYWN5LXRydW5rCisxNzA5OCBiZDk1MGM1MDE2N2ZhMWQ4MWMxNDRmODJlNzFlYzhhZGNhZDNmMmQzIGxlZ2FjeS10cnVuaworMTcwOTkgZjNhOGY2MDM2NTY3MDk5NTNhNGU1ZDRhMmY0NDUwMTc0ZWYwNTdhMCBsZWdhY3ktdHJ1bmsKKzE3MTAwIDk4NGFiZDIwZWVjMjYwZDI1YjQyZTQ3M2Q5ZTU1N2Y1OGM1MDdlYTkgbGVnYWN5LXRydW5rCisxNzEwMSBmYjhmYjUzYTJlZmYwMTNjNTZmYzFhOWVkMWJhNzBiYmFlZmViNDllIGxlZ2FjeS10cnVuaworMTcxMDIgYjFhMGZkM2RmMWZjOGQ2MTA3Y2NkOWRmZmIxNDg2YzMyMWMzZGRhMCBsZWdhY3ktdHJ1bmsKKzE3MTAzIDY4YjYxYWExYWE0YWEwOTQwNGI5Y2IwZjY0NDc5ODhkNzVkYmRhNGUgbGVnYWN5LXRydW5rCisxNzEwNCA4Y2Y2NjMxMjY3MjNhZGFmZTY0ZjNkZTRlODFlMDljYTgxZDg4MzU0IGxlZ2FjeS10cnVuaworMTcxMDUgNGQ1NjUwOTVhZTk5MzMwMTcyNzJmOTc4MDExN2U4Yzg5NmU1NjM4YSBsZWdhY3ktdHJ1bmsKKzE3MTA2IGRmODkyMzhhYzc0NzcxOTE4NzU4ZGVkNDlhOTU3MzQ4Nzk4MTgwOWUgbGVnYWN5LXRydW5rCisxNzEwNyBlMjVhYTU2YTUyMDdkZjhhOTBhNTcxZDYzYmIxMGFlYTFhYWZjYjViIGxlZ2FjeS10cnVuaworMTcxMDggZDM1N2FkMzY3ZjI2MGZiYjljYjJiMzcwZjI0MTVmNjY3NjhlNmRhYiBsZWdhY3ktdHJ1bmsKKzE3MTA5IGVhOTVlZWVlMDRlNzI0OTM0OGU1ZGFmN2UzY2JlOGMxODYwNWUwYTEgbGVnYWN5LXRydW5rCisxNzExMCA2YWI1OGM1NWUwYTNjMDY4NDA2NTA3MGE3ZmY0ZmViNzY2NTU0NDhiIGxlZ2FjeS10cnVuaworMTcxMTEgNzdlMjQ0M2FiZjliZGUzMjUxODlmY2NjZjZlYmYwZjVhMGE5MzVkNyBsZWdhY3ktdHJ1bmsKKzE3MTEyIDJlMmZiZWU1M2U2OWZlNmNjZTZmMDZiZTc3YWE2ZmZlOTFhOTgzMzQgbGVnYWN5LXRydW5rCisxNzExMyA1OWMxOTA1MmFlNGZiMDIxZTgwMzdlNGQwMjhhODFmMmRkMjBlNjZiIGxlZ2FjeS10cnVuaworMTcxMTQgYmZlMzA0ZmMwNmFiOTEyMjQ0NDg1NzZkOTNiNWYzNDI0OTExNmQxMCBsZWdhY3ktdHJ1bmsKKzE3MTE1IDExYTg5M2NiYzFhMDEyYTdkZjg4NTk0ZWRiNDI0NzIxYWUxOTVkMWEgbGVnYWN5LXRydW5rCisxNzExNiAyNmRjNjJkZTliNmUxNWFhNTg5Y2U1OTc5ZmMxNWVhOGE2NzgxNjhiIGxlZ2FjeS10cnVuaworMTcxMTcgMDUzNjI3ZTdhYzE0MWU0OGUzYzI1YjI2M2FmNjk4NDZkMWZiNTk1MSBsZWdhY3ktdHJ1bmsKKzE3MTE4IGU1MjUzYjY5MmU5ZmJlMzY1YWI0MzY5Y2Q3NTliMjRiOGI4NmQ2MDkgbGVnYWN5LXRydW5rCisxNzExOSA4MTcyYWM5ZDIxOTY2Y2ZiYTUwOWZiY2RlMjE1ZWYyNmVjYWQ0YmEyIGxlZ2FjeS10cnVuaworMTcxMjAgZWRhNDQ5ZjU0ZTQ0OWVmMjJlNzNjYWFkNTNjZTM4MGFmZmUzMTA0YyBsZWdhY3ktdHJ1bmsKKzE3MTIxIDEyMDViMTgwYmE5MDNjNmFhMDRkN2VkZjNhMzRlMjAyNjU0NjUzZjAgbGVnYWN5LXRydW5rCisxNzEyMiBiZWNiMWVmMGE1NzM1MzkwNzZhNjliNzFiMjc0N2IzYjRmZjFmM2JiIGxlZ2FjeS10cnVuaworMTcxMjMgNTE2N2VkNjgzNmZjNGExYWEyMDFjNjFjMDFjNGE1MjMyM2EzYjQxOCBsZWdhY3ktdHJ1bmsKKzE3MTI0IDAxM2NlN2VlNzE2N2MzOWZmMzllNDVhNzg4ZmYxNzIyZTVhYTU1MTkgbGVnYWN5LXRydW5rCisxNzEyNSAzMTY0MWVhODlhNTM0ZDcwNmMxYjA4MzQ4NzE1N2I1MzE5ZTQ3ODgxIGxlZ2FjeS10cnVuaworMTcxMjYgZjhiMjBkOTBjOWFmMjU0MDgwNjBlNmNmZTk2ZWY4Njg5NTE4MjQyZCBsZWdhY3ktdHJ1bmsKKzE3MTI3IDAxOThkMjAyMDM5MDM2ODMxNDU1YWZjOWFkNTVkYTc3ZWViOTc0NWEgbGVnYWN5LXRydW5rCisxNzEyOCBlMzc3OWVlOTQyZDBhMDA1ZWIzMjZhZTliNjE2NjA5MDRkYjc2ZTcwIGxlZ2FjeS10cnVuaworMTcxMjkgNjJlYzBiZmQ5M2Y4MDhjNjdhM2IyOGY2ZTQwN2NhMGNkYmZiZWVjZiBsZWdhY3ktdHJ1bmsKKzE3MTMwIGIyNGRiNzcwZGZmZGRhOWMwOGRmY2FkZjliNGU1OGJiMjE5ZTU5NGYgbGVnYWN5LXRydW5rCisxNzEzMSBiOGIzZjc2ZmZkNTFkMTI0MWE2ODJmODJlZDcyZDAxZjg1Mjc3YzkyIGxlZ2FjeS10cnVuaworMTcxMzIgN2Q0MGJkMDdiMTI5NjYzNWJhODBlYzZhYjhmZmQ3ZTdhM2QyYTNkOCBsZWdhY3ktdHJ1bmsKKzE3MTMzIDJkYjgwN2YzNDViY2MwNzc1NDY5MWFjODE3NzcwNmZjYTc4YTg2OTUgbGVnYWN5LXRydW5rCisxNzEzNCA5NzY1MWYyOGIwMDRjNWI2ZmJlYmRjY2Y1Y2IyMTUwNjQyMjkxNTU3IGxlZ2FjeS10cnVuaworMTcxMzUgNGI5OGRmZGVkNDlmNDBiMDlhNjE0MzBmZGUzMTljMGNhMTU0OTkyNSBsZWdhY3ktdHJ1bmsKKzE3MTM2IGMwZmUxYThiODcyYzA0MDczMmE5NTMxNTZlZmIxMWJhZWMxOWU3MGIgbGVnYWN5LXRydW5rCisxNzEzNyA0ZDQ5MWFlYjk4MGZkMWQzM2E3NmNlNjUxMTQ5MzRhZjM0YzI0YjgwIGxlZ2FjeS10cnVuaworMTcxMzggNGRmYmQ5YjM0MTJiYWFlMzYzNjNjN2YzMWE4ZjliOGNhMTAwZWNlOCBsZWdhY3ktdHJ1bmsKKzE3MTM5IDUxMTEyM2RkODQyNDNkMzQyZGMwNmY2ZjdhY2RhMWViODdmODg2NmMgbGVnYWN5LXRydW5rCisxNzE0MCAyZGNmYWQzYjIxMTVkZWI2NTc2YWZkOTQwOGM3NjhhNzk1YjkyNzE5IGxlZ2FjeS10cnVuaworMTcxNDEgMzNjN2RmMGM1NDlkNzJmZTNkYWYzZjU1ZmFiZGU2OWUxNDg4MzJlMSBsZWdhY3ktdHJ1bmsKKzE3MTQyIGRkYWVmNDU1OTVlMmQ3NjJiZTNhMDJmZDg0NzdkMjE3NDBjZTBkZGQgbGVnYWN5LXRydW5rCisxNzE0MyAxZmFiOTI4MzY3NThmODA0M2JjY2E2NTNiNDFjOWZlZTMyM2NhZDJiIGxlZ2FjeS10cnVuaworMTcxNDQgYWRhNGVjNGNmZmQ1MDFkYmNkYTg4YzA5ZjA0Mjg5YTVkNGZiMGFjZCBsZWdhY3ktdHJ1bmsKKzE3MTQ1IDU4ZjEwMGFjYzNhYzBlZmEyYTU4ZmFkZTNmM2MwMTc1ZjY3MmM5YzMgbGVnYWN5LXRydW5rCisxNzE0NiA0NjBmZjNjZjMxOTViZTJkYzFlZDY0OGM0YWFlOGIzMjhmNmU0MjhjIGxlZ2FjeS10cnVuaworMTcxNDcgNTg4NDJjYmE4ZGJjZDIzMWY1MzRkMjhkNTY2ZWFmNTk0OGJmZjA0MSBsZWdhY3ktdHJ1bmsKKzE3MTQ5IDIyYjJlYmQ3ODM3MmYyNTUzZmVlODgwNzE5MmYyZDkwNDhiOWUxOWIgbGVnYWN5LXRydW5rCisxNzE1MCAxNGEyYjhkNGZjZmYwOGJiZjNkMGU3NmYwZGZkYmNhODM2MGMwNGVlIGxlZ2FjeS10cnVuaworMTcxNTEgNzNmMzllYTRlZmI3YTc0ZjY5MTM5OTYyZTBlMzIwNTQ3MTRkYWNjYyBsZWdhY3ktdHJ1bmsKKzE3MTUyIDhmMmU2MTM0Y2VhMDBhNTA2YTk1Y2VmOTQzN2JkODcyNDUzZjc4MWEgbGVnYWN5LXRydW5rCisxNzE1MyBiNTdlMzYwYTZkMTYxYTlhYzZkZWZjMzYyNjY2YjU0NjJmNTkzNDFlIGxlZ2FjeS10cnVuaworMTcxNTQgNmRlZTE5ODVjNjgxYzEwYWM1MDJjMmU2YzkwOTZkYjM1NGE4ZTQxOSBsZWdhY3ktdHJ1bmsKKzE3MTU1IGNiZTQyM2IzYmEzYTA2NWJhNjVkNjM4YjM5NDA2OGZjNjliNmVkNDcgbGVnYWN5LXRydW5rCisxNzE1NiBlYjdjMjdlOGZlMzdlZTdkNGFjNjAyYzAyYzlhMTdlMWJmNDQwMGQ1IGxlZ2FjeS10cnVuaworMTcxNTcgZjU1YjY3M2Q5YWNkNzQyNWNhZjk1ZTBkZTExODljZjE4ZTEyNzI2NSBsZWdhY3ktdHJ1bmsKKzE3MTU4IGJlYThmMTRlN2Q2MWNmODBlNTMyM2MxZGM5OWQyNzM4YzMwZTEyZmEgbGVnYWN5LXRydW5rCisxNzE1OSA5NTFlYjNhZjM0OTQ4M2JkNTcxNjNhNDA3YjUwOGFkMjMyNzg5YTBjIGxlZ2FjeS10cnVuaworMTcxNjAgMDExNWY0MDNmYWRkOGZiNTBkZDMwNGZjMmM1MWJmNzAwYTBhZjc5YyBsZWdhY3ktdHJ1bmsKKzE3MTYxIDNiODRjNWZmODlkYTg5M2ZkOWZiYjQ3NmRmYzVkOGE0MWIyOWNmYjUgbGVnYWN5LXRydW5rCisxNzE2MiAwNTdjN2NlYjkyZjA0NDg2ZjI5N2JiZjc2ODYzZTY0ZjE1MmU3Zjg0IGxlZ2FjeS10cnVuaworMTcxNjMgZjQ4ZWQ5NDQ4ODRiZmZmMmE1NTE3MzRmNDk3ZDJkZTE5OTE5NzJkMyBsZWdhY3ktdHJ1bmsKKzE3MTY0IDgwMWEzMDRmMjQ4ZmJmZjc2OGNkNGVjMmUwOWMwYzIyMzY1M2VmODUgbGVnYWN5LXRydW5rCisxNzE2NSBhYjYxYzMzNWEwNGRjZDFiZjQ5NTViNmRiYzBhNTE3MjhmMzQxNTA5IGxlZ2FjeS10cnVuaworMTcxNjYgZDQxYzQxMzcxZGMxMDg5MDQwZGI3NDdlMTVkMzI4NTk0Zjc5OWQxNCBsZWdhY3ktdHJ1bmsKKzE3MTY3IDY5NDliNTAzNjRkZDA4YzgyMThjZTdiNzM0YzY5NjEwNGQ5MjMyNzcgbGVnYWN5LXRydW5rCisxNzE2OCA3YjUzZWMyNzA0ZTAwYTNhNWU1ZDc0OGQzZTBmODJhMjhmNzAyNWFkIGxlZ2FjeS10cnVuaworMTcxNjkgNDMyZDMwOGM0NWU4ZDhiNDFmYzFhYzcyNDcwMjg3YWVkZmRlZTJlZSBsZWdhY3ktdHJ1bmsKKzE3MTcwIDUzOTdmZGY4OGVjMjVhMWI1ODM3ZGVjOWZjODUyODM5YWJlNDQxZTAgbGVnYWN5LXRydW5rCisxNzE3MSAyZGUxZmI1MzAyZWQ4N2VkNjhmMmJkOTdkMGY1MzFlOGViZjkzOWQ1IGxlZ2FjeS10cnVuaworMTcxNzIgNmQwZjY0ZjdkZWRkMTgzNTRlNThjOTJiM2ZhZGU2YTc0NzY5ZTVhOSBsZWdhY3ktdHJ1bmsKKzE3MTczIDIxYmY5ZmE5MjI1NTg1M2VlNDJjYWNjYzI0NGU0ZTRlYzVjYTgyOTggbGVnYWN5LXRydW5rCisxNzE3NCA3MzUyYmIxNjMyYmMwMWE0OTE2MTIyMDNjZmE1YzYyNjk2Y2NiY2FhIGxlZ2FjeS10cnVuaworMTcxNzUgZWY5Nzg1MjAwODVmMTBlNTk3ODI2YjI1OWFhOTA2YjFiN2I5ZTY0NiBsZWdhY3ktdHJ1bmsKKzE3MTc2IDkzZGFiZmMzYTgzZmM4YzUyYmFkODgyYmNiNTM3NjUzY2I4Y2FlNjMgbGVnYWN5LXRydW5rCisxNzE3NyBkZWI3Mjc0MzVmMzkwNjRlMzVmNjgyNWQ3OTQ4ZDIwZWM4OTAyYmVhIGxlZ2FjeS10cnVuaworMTcxNzggMGY2ODA5ZWJhNTBhODhjNzczZDFkNzExOGJjMzY5N2FmYjU3YTYyZiBsZWdhY3ktdHJ1bmsKKzE3MTc5IDYzMGM4YWJmYThkN2MwOGU1NDU2N2U3OTQ5MTU5MjA5ZmMzODMzOGMgbGVnYWN5LXRydW5rCisxNzE4MCAzYjJkZmJjMzQ2ODlkZWQwYjBlNzI2MjY4MjI2N2ZhNjcyYTkyY2YzIGxlZ2FjeS10cnVuaworMTcxODEgYTM4ZTEyZTRhZmI3MGM1OWRiZTVlNjQ3ODQ0MWE0YWY3NTUwMDE1MSBsZWdhY3ktdHJ1bmsKKzE3MTgyIDNlZGEzMDEwYmMwYTBkYjg1ZDE5ODE4MjhjOTY2YmZhMDY4ZjEzNDkgbGVnYWN5LXRydW5rCisxNzE4MyBlYTllNjI1YjAxYTJhMDU2ZDFlNTIzNTk1OGU2ZmJjNTdmZjA5YTU5IGNucmktMTYtc3RhcnQKKzE3MTg0IDM1NzYzYmU3NWRkYjdjYTZmNzIyOGQ1N2Y4MmNjYTQ2NGYzM2NlZDQgbGVnYWN5LXRydW5rCisxNzE4NSBkMWQ1ZTJkYzI5ZGI1MGQ3NDhkOTJkYTBjOGU0NGRlYmVmOWZmNTUzIGxlZ2FjeS10cnVuaworMTcxODYgNWM1MWMwOTZkZTNiZmU2Y2MzNmJhNzE4ZGJmMGUzNGY1NGQwYzg5YiBsZWdhY3ktdHJ1bmsKKzE3MTg3IGE2NjViZGM0OTIyZjVkZmIwZGFkZGJhOTI2ZGM3ZmMyM2Q4ZmM5YWIgbGVnYWN5LXRydW5rCisxNzE4OCA1ZGE0MDZlYmVmNTUyMDRmN2RhMWI3YTliYWZhOTgwY2MwMzRkYTM3IGxlZ2FjeS10cnVuaworMTcxODkgNjY1YjE5ZTc3NzZiNTNiMjAxZTU0Mjk2ZWZiMGEwZDk0YTQyNzU4ZSBsZWdhY3ktdHJ1bmsKKzE3MTkwIGM3ZWQ0MTJhMDc1YjAxOWRkNTBkN2NmYTYwNjViODM2NTZjYjM0ZWYgbGVnYWN5LXRydW5rCisxNzE5MSAzNmQwYjViMDk0ZTQyMWZiN2U3OTY2YTBiNTRhNTM2Mzc2MDgwMTFhIGNucmktMTYtc3RhcnQKKzE3MTkyIDdhMWZlY2MwOGQ3MGE4Y2EwMGUyMjA0ZTViMjJjNTZlYmViM2QyMjIgbGVnYWN5LXRydW5rCisxNzE5MyA2NDhhMTJhNzgwZDkwODM0NGFiZjdkZjk0ZmUxNmNiZWI5YjhiNjAyIGxlZ2FjeS10cnVuaworMTcxOTQgMDM0YmYxMDgxMzA0NzUwMjM4YTQ2NTY2OTZjOGE3Yjk1ZmMwYTYxYyBsZWdhY3ktdHJ1bmsKKzE3MTk1IGNhYzkzOTA3NmM3ZGJlZTcyMjAxYmRlMzBjNjBhMzMwODcyNDY0MjQgbGVnYWN5LXRydW5rCisxNzE5NiBjZDA0N2E4NThhY2UxOWJiYjUxZDc2MGM4ZTk4YmVhODQ4MDlkMTZlIGxlZ2FjeS10cnVuaworMTcxOTcgMDlkY2ZmNTE5MzJjNzdkZGU1MmJiZjYyYTZjNWQxNmYyOTQ5YWY2OCBsZWdhY3ktdHJ1bmsKKzE3MTk4IDY0YzI1ZmQyOWQ2ZjY3MTdiZGNhZmY3MTBiYzhjNjc2ODAzYjc0N2EgbGVnYWN5LXRydW5rCisxNzE5OSBlZDE0N2E1MzcwMWI4MDA2NTI0NzgxNGE1NWFhYzk1ZGQ2OWIwMDc2IGxlZ2FjeS10cnVuaworMTcyMDAgOGRmMTY2Y2EwOWIyNWFlOTI1YjcyMzYzMTVhMzQ2OTliOTA4ZjUwNCBsZWdhY3ktdHJ1bmsKKzE3MjAxIDZmNmY5NjVjNWUyZGI2NGI5NDdkNGZjYzczODFlODNhYTBjYjA3NTYgbGVnYWN5LXRydW5rCisxNzIwMiBmZDQ3OTk2MGU1ZTBjMmMwNzc4ZWM0MjA4MTI3NmI0MTdhMDJiNTQ2IGxlZ2FjeS10cnVuaworMTcyMDMgZGQ0NzY2YWEyZmQyZjc3Yjc2YTgyODc3ODI5ODVhNDg3YTZhYTk1OSBsZWdhY3ktdHJ1bmsKKzE3MjA0IGNhNzMxNmEwMDQ2NGVhNDhmMThmMGVhODUxOWRkYTkyNWRjZmZkZWYgbGVnYWN5LXRydW5rCisxNzIwNSBiMDY5ZDdkOWNlOGEwMGRmYWY3MTI0MGI5MTJlM2FjZDIzZWJjZmNmIGxlZ2FjeS10cnVuaworMTcyMDYgY2QwYzRkZDQ5MDRjOTYzNDEyYmMyYzY1Mzg1NzNlZTg1ZjQzY2U4YiBjbnJpLTE2LXN0YXJ0CisxNzIwNyBlOTliMGRiMTZkZDdkM2M5M2NhODg1ODVlMjZjMGU2OTBjYTgyODI1IGxlZ2FjeS10cnVuaworMTcyMDggNzk1OGE4OGVkZGExNzczODk1Mjc1OTJhOGMwYmI4OTg2ZmQ2ZDYzOSBsZWdhY3ktdHJ1bmsKKzE3MjA5IDJkNmNmNjhhYTY0YTU1ZDJmYTJiMmY3Y2QzZGQ1MzJmMDg0ZDUwMzMgbGVnYWN5LXRydW5rCisxNzIxMCAzODhjNzIxYzIwY2ZiOTUzNDEwZTgwMWVlYzE2ZTVkNTMzMTZkYTU0IGNucmktMTYtc3RhcnQKKzE3MjExIGNmZDA3NDMyMWFhZDlkMWE1MmNkZWFlN2UwMGVkZmQ5N2Y4ZTg1MTEgbGVnYWN5LXRydW5rCisxNzIxMiA3ZTQ3YjM3MGViNjc1NTE5Yjg3NTI4NjQ3MDI2NjE2MDY0Y2ViZDg2IGNucmktMTYtc3RhcnQKKzE3MjEzIDZmYjYxYjgzNDM1ZGExYjZmODdkNmJiMGE4ZmMzMjU1NjAwMDgxMzkgbGVnYWN5LXRydW5rCisxNzIxNCBkMzk1Y2FjNzg2YjIyNGIxODYxZTMyOGNkZGFmMzA1MmUwZWFjY2RhIGNucmktMTYtc3RhcnQKKzE3MjE1IDA1MDdlNTY5ZDc0YWU2NTE2ZWFkNjczZGRiY2QyNTRmNmRjMzkzYTIgY25yaS0xNi1zdGFydAorMTcyMTYgOGE5MzNlYzQ3ZWY3MzM5Y2RiMTVlMTJhYzkyYWI4MTY1MTYzYjNiZCBjbnJpLTE2LXN0YXJ0CisxNzIxNyAzOWFiMjg1NzIzMDdmODE4OGFlNTUyYzJhY2Q2ZDg4Y2U5YThmZmU1IGxlZ2FjeS10cnVuaworMTcyMTggNTc5YTFlNzMxZmM4NDI0ZWU4NTFlMmRhMGU1ZDA2YTc5OGE4YTdkZiBjbnJpLTE2LXN0YXJ0CisxNzIxOSAxZmRjYTBhZjcxZDM0M2U4OGU2YmY1MGY3OTU0NDIxMzE0YzliYmJlIGxlZ2FjeS10cnVuaworMTcyMjAgYWZkNmZhZTQ2N2U1OTI1OTUxYmU5OTk5Mzk1ZWNhN2EzZmQ0YmIwZiBsZWdhY3ktdHJ1bmsKKzE3MjIxIGVmMjcxNGJiMDczMGE3NTI1NmU4MzJiNzA3NzJhNDczYjdhM2FiYzcgbGVnYWN5LXRydW5rCisxNzIyMiA5ZjAzZDJmYWYxNTZhZGU5ZGMyOTZiMTA1ZjA0OWYyNWQyNzY4ODUzIGxlZ2FjeS10cnVuaworMTcyMjMgMWM0MzhmZDVjMGU5MzQwMDZlYjQyYjljNTYzYWE1MTBlN2EyMzMwMCBjbnJpLTE2LXN0YXJ0CisxNzIyNCA0NGZmN2U0MTYzYWExZTBjYjIyNTAyYmMwNjg0YjhjOGVhZTE5OTQ4IHIxNjEtYnJhbmNoCisxNzIyNSA1NThlYTkwZjViMWNhMjhjM2Y2MDQyYmM0NmRlMTJiOWM1NTgxN2NmIGNucmktMTYtc3RhcnQKKzE3MjI2IDliMWRhZjNkZWUxNGQ0ZTQxY2QyNDdjYzczNzY4OTE1YTUzODUxMTAgbGVnYWN5LXRydW5rCisxNzIyNyBmMWJkMzA0NDdlMzBiNTljMDhmMDIxYzU5ZjE3YzY4ZDg4YzY4MzlkIGNucmktMTYtc3RhcnQKKzE3MjI4IDFmZDY0YjNhZjc2MDIyOGJiNWViNTEzNGE2MjRhZTA4MWQ2M2M0MzkgbGVnYWN5LXRydW5rCisxNzIyOSA2M2Q4MjQ2NzliMjg1MzNiZmFhMTBlMzRjZjQ5N2EwNTZkMGM0MTFkIGxlZ2FjeS10cnVuaworMTcyMzAgN2U0ZjYwMmRjNjg1NzZiMmU4ODZiMGY1MjIxOTI2ZDA5ZTExNzMzZCBsZWdhY3ktdHJ1bmsKKzE3MjMxIDJlZWI1OGI0M2ViMTg4M2JkZjQ0MzcyZmY0YzgxMWM3YjgzMWJiZjYgbGVnYWN5LXRydW5rCisxNzIzMiAwNWYxMjEyOGMzOGRiZTQyNGMyOTdiNGZjYWEzZGY4NzY3MGJlNzNmIGNucmktMTYtc3RhcnQKKzE3MjMzIDUzMmM5Y2U2Yzg3YzE3ZDliYjUxYjA3YWEwZmNjNGNlMzgwOTBiY2IgbGVnYWN5LXRydW5rCisxNzIzNCBhMTBhZmIzYWQyNzUwYzBlMjYyNDEzNGIxZjU5YmM5MDA5MGI3MjQzIGxlZ2FjeS10cnVuaworMTcyMzUgNTQyZDEwYmQwNGY0NzdhNGI4OTk4N2ZiMTI2NzUwZmU5ZTRkMjJhMCBjbnJpLTE2LXN0YXJ0CisxNzIzNiBjZDZmNzA1YzU0YjhjNDUzYjljZDM2OWM4ZjE2NzAxYWIxNDA0ZDA5IGNucmktMTYtc3RhcnQKKzE3MjM3IGY2MjlhZjFkNGJkYWE4MmNiNWZlNjA5OTJiMzU4OGVlODhiN2ViZDMgY25yaS0xNi1zdGFydAorMTcyMzggOGQ0NzEwMTQxOWI4NGNhYjkzZGM1YWNmMmQyMDExMTMyYjE3MmQxZSBsZWdhY3ktdHJ1bmsKKzE3MjM5IGNkMmJlMTUzZjIyOGY3ZmNlNzY5MDNkMWM4YzlhNmY2ZjM2YzAxMTIgbGVnYWN5LXRydW5rCisxNzI0MCAzNjdjYTQ5MTkwYmM1MjY1ZTZkNzFlZmZhYmRjNzk1MDI0ZDZlMTc5IGxlZ2FjeS10cnVuaworMTcyNDEgMzIwMTU4MDI2YTRiYzRlZTkxNjUwZWQ5MDdiZDQwODMyZTE0ZjczYiBjbnJpLTE2LXN0YXJ0CisxNzI0MiA4ODg1M2MxMDMwODc5N2M4NWNhYzU4ODc1OWNmMDkxMDcxZTVhMTE0IGxlZ2FjeS10cnVuaworMTcyNDMgNmE1ZmJlOGM1YWE2YTg4OTM4ZjgxMjJkYjIyMDc4NGNkYWE5N2RjMyBsZWdhY3ktdHJ1bmsKKzE3MjQ0IDNlMzc2OThjZDczN2Y0ZjdjYWNjNDQ5MzllYTAxNzI4NzRmODdiNzAgbGVnYWN5LXRydW5rCisxNzI0NSA4YjQwNjg1NmJjMzFjMTJhZjRiNzgwYzU1NTY3Mjc3Mjc1N2E4OWIyIGxlZ2FjeS10cnVuaworMTcyNDYgMDU3YmMxOTcwMzQ1MjZhNWRmMTBjZTVmMWE1YmE0MTMzZTA5ZjNkNCBsZWdhY3ktdHJ1bmsKKzE3MjQ3IGQ2ODliOGNlOWQwYTkyOGJhNjUyMzkyNjg1MjFiMGRkM2U0MDFkZjEgY25yaS0xNi1zdGFydAorMTcyNDggODcyMTkxNWE2YWNiODMwN2E1ZWMxMjBhODcwZWUyMjhiM2FiY2JlNSBjbnJpLTE2LXN0YXJ0CisxNzI0OSBiMTc1OThmZjJjZGQ3NDAxZDhmODY2NTFmNWZlMDAwZmJiYWE2ODBkIGNucmktMTYtc3RhcnQKKzE3MjUwIGQ4ZDE4MTJkZmNlMDY0NmIyZmRlNTU5YmQyNjJhOTFjODE5MjVhNzkgY25yaS0xNi1zdGFydAorMTcyNTEgZDg0NjY4NTUwMjZmNWU5YmRhYmFiN2EyYmEzZDY4Y2QwMzI2YmMwNyBjbnJpLTE2LXN0YXJ0CisxNzI1MiA2NTYzZDcxZTdkOTVhZDBiZjhkYWExNmM0NDcxOGYwN2QxMzQ4MjgxIGNucmktMTYtc3RhcnQKKzE3MjUyIDc4NmE1N2I3ZGM2Y2NmNTZlNjMwZWI5MWEyNjIwMTZiOWExNDk4MmYgY25yaS0xNi1zdGFydAorMTcyNTQgYmVlZmE4NWEzOTI0YzNlMjJhNTgzN2JkM2ViNjE4NmQ3NmVjODQ5YyBsZWdhY3ktdHJ1bmsKKzE3MjU1IGZjMTBiMjI3YzE3ZGRjMmY5MTg5NTJhYmM4NzM2ZTYwNDJkYjAyYTUgbGVnYWN5LXRydW5rCisxNzI1NiA4ZDAzNWMyZmMyMzQwODU4MzUwOWM4MjVmZTc1MDdkODkyOTczYjlmIGxlZ2FjeS10cnVuaworMTcyNTcgZDFjMzk1YzQ3MTAyYTE1NmI0MjJiMmJmNWQzMDk5NTU5MjQ3OWIwMSBsZWdhY3ktdHJ1bmsKKzE3MjU4IGE3NmFiN2M4ZmMyOTIxYmJjMWVjMDI1MmFjYzAyOTAwODkzZTk3MDAgbGVnYWN5LXRydW5rCisxNzI1OSA0MzA2MTA3YjEzOTU1MThkOWQzMjk3ZTE4MzNhYmVhMGFlZmQzNzE3IGxlZ2FjeS10cnVuaworMTcyNjAgYTcwN2E1ZjE3MTM5MzI0YTg0ZGMyZTZlNDUxMDMwZWNkZjZjYjAyZSBsZWdhY3ktdHJ1bmsKKzE3MjYxIGIxOTQ0Y2U1NDkyYjJmMmJjMzJmMGZkYTdhOWEwMTQ3NzI4OTE3MWIgbGVnYWN5LXRydW5rCisxNzI2MiA4NjI2NmY3NjNkNDQxOTcxN2VkNjQwZjIwN2Q2MDM4MjI4OTNlM2VmIGxlZ2FjeS10cnVuaworMTcyNjMgOTBmMDk0NmY2NGU3ODFlNzMyZDZmNTY3Y2VjYmQ0NmU2MzVhOTAyOSBsZWdhY3ktdHJ1bmsKKzE3MjY0IDYwNzI2NGU3YmY1MTQzNDBiNjIxNzkxMTM1MGJmMDA3NmNhZGQ4ZTYgbGVnYWN5LXRydW5rCisxNzI2NSA2YmU0NDZmZmEyZDlhYmM5MTNhNzJkM2NjNmI5MjhlMGRkZWY5NTYwIGxlZ2FjeS10cnVuaworMTcyNjYgZDQyZmMzYzcxNzNlNWM3M2M3Yjg5ZmIyZWVhNjA5MWQ0Yjc2MGY2ZCBsZWdhY3ktdHJ1bmsKKzE3MjY3IDEwYmU5NjgyYjAwM2YyM2MyMjc2ZDEyNzFkMjViNWIzMWMxMDZlNWQgbGVnYWN5LXRydW5rCisxNzI2OCAwZGNhZTg0NTA2YmFhOWNiNzM1MmMyNzc2NGI3MTliNzY5YmIxMjhkIGxlZ2FjeS10cnVuaworMTcyNjkgYmEyMmE1ZWQ0NjQxMGJjZDkxYWEwZjU2NmNjYTA3ZWZjNmJmOGI0YiBsZWdhY3ktdHJ1bmsKKzE3MjcwIGUzNmFmZjUyZmI0ZTBmYzM2MDhjMGQ1OTIyMjZjZGRjYzg4ZmJhMzIgbGVnYWN5LXRydW5rCisxNzI3MSBhY2Q0MTEzZTMwMWEzYzdiYTNkMmE3YTAyZGE0MjEyNDZhM2IzMmEwIGxlZ2FjeS10cnVuaworMTcyNzIgMjRiZTA0OWQyMDM3OTM0MmE1ZTA2NzdjMDk0YjNiNGM4MzRhNTUzNSBjbnJpLTE2LXN0YXJ0CisxNzI3MyBmOTQ0OGY0NGU3MDFjYWQ1NmM3Y2Y1ODE1OTZmMTUwMzU1MGM4ZjU5IGxlZ2FjeS10cnVuaworMTcyNzQgNjQ2MDQxMWY0NzNlZmZjZmQ4NjA2NWM2ZDA3YzdhOTA2MzBmYjAwOCBsZWdhY3ktdHJ1bmsKKzE3Mjc1IGM2MTZiNzkxMDc0NThkZmViNGZhZDVlOGYxODEyYTdjMjUwYzAxMDMgY25yaS0xNi1zdGFydAorMTcyNzYgYzM4NGZhYWU1MDUyYzVmMzllNjgzYmFiYTIwMTFkYzI4ZGU4NjdkOCBjbnJpLTE2LXN0YXJ0CisxNzI3NyBmOGU2Njg0NDdlMmExZDI5MGQ1NzFhNDk5YWJjMTZkYTg2ZDRjNDMxIGxlZ2FjeS10cnVuaworMTcyNzggNDQ4YmRmNDQxNzkyM2ZhYjdhYWNkOGY1NTYyNzg4NjE4MzM0ZWQ4MSBsZWdhY3ktdHJ1bmsKKzE3Mjc5IGJiOTA4MzMxMmQ4MTRjNGViNGRhY2ZmMTdlMWMzZGVjOTAxMDc5YTkgbGVnYWN5LXRydW5rCisxNzI4MCBjY2IzN2UyYjI0NjAzYjdjMjIyZDU4ZDA2OWUxZjc5YWU2OGZhZGE4IGxlZ2FjeS10cnVuaworMTcyODEgOWYxZjBhNmJjMThlNzU3ZjUyNzRjYzcyZGUzNGFmYWM0NDk4NjNiOCBsZWdhY3ktdHJ1bmsKKzE3MjgyIDgzNzZhZDY2NDVlM2RkYzU5Mjg3YjVlZjFkYWE5NTU0YTgzMzMwOTUgbGVnYWN5LXRydW5rCisxNzI4MiAzNWM0ZmMxNDE0YTU5ODg4NjE0YjliZTc4NGEyNWYyMzNiYTY3OTg0IGxlZ2FjeS10cnVuaworMTcyODQgNzdlOGU1NTBhZTEzZjc1ZTFjNjQzNzAyMzA0NzU5ZTk0OTEyYzk0NyB1bml2ZXJzYWwtMzMKKzE3Mjg1IDRmZTAxNDgwODg4NWE0NmY0N2I4MTNhMzUyNzM4Nzk5NGFiNTdlNDEgbGVnYWN5LXRydW5rCisxNzI4NiA3ODg2YjNiNmM0MGY3YmQ1ZWVjYWU1YzM2Y2ZmZjE4ZTI2Nzk3Y2Y0IGxlZ2FjeS10cnVuaworMTcyODcgMzQzNzkxMjdlZTNiNGQ5MWZmMDVlMzBlNTgzZjI2YTE2NDY4MzU3ZiBsZWdhY3ktdHJ1bmsKKzE3Mjg4IDlmYTNjNTcxZGFmZjIwMmUzNzdkMjMwYmRlM2U4MjA5NjdkMTQxNDIgbGVnYWN5LXRydW5rCisxNzI4OSBjMDUwOTk4OTQwNWVjMGVlYmE3NmNiN2YyZjE1OWE5ODFjMjc3MDc4IGxlZ2FjeS10cnVuaworMTcyOTAgZTM0OGVkOTQ2ZDFmNGMxYjBiYzE4Yjg1ZmZiOWRiYWZhOTk3OTY2MiBsZWdhY3ktdHJ1bmsKKzE3MjkxIGFjMzkxNzhmYTg1ZmM5ZTRjMjRlMWQxNjkxNjE5ZjJmODYzYmQ5NGUgbGVnYWN5LXRydW5rCisxNzI5MiAzYTkzMmNjNjQzMjMzZmRjZDhkYmFhOTJlZjYwZGMyODgzNDZjNDJhIGxlZ2FjeS10cnVuaworMTcyOTMgMTk0NDM1ODVjY2NjMjU1ZTg3YzU3ZGE3ZWExOGQ2NGYxMjhkODVjNyBsZWdhY3ktdHJ1bmsKKzE3Mjk0IGY3ZmQwOTVjMzFhNmFhYzk5YzllMjgzYWU3MzVlYmIyZmRmN2Y4ZjYgbGVnYWN5LXRydW5rCisxNzI5NSBjNzM4MDQxZjk3NWRiZTgzZWE2NGJjMWUxZGY0NThhMjFkZDRiNWIzIGxlZ2FjeS10cnVuaworMTcyOTYgZjRjOTJhMjQyMTFiZGRkMDMwY2U1NDM1ZDcwYjE3MWY3NzYwODc0OSBsZWdhY3ktdHJ1bmsKKzE3Mjk3IGYwNTFhYzgzNDBmN2I4YTFmYzA3ZjIzYmRhMjIwOWY5MTQ0MzE1MTMgbGVnYWN5LXRydW5rCisxNzI5OCA5M2IxZGFiMDk3Njc2ZDkyOTQ3MDMyYWMzZmMwNWNmMmU5NzFlZDA5IGxlZ2FjeS10cnVuaworMTcyOTkgNTIwY2U3ZWNlMjUzOTg1YWYwODllNjE3YzE0MzBlNzY4ZTU3NmRlMyBsZWdhY3ktdHJ1bmsKKzE3MzAwIDVkMTJkOTY2MGMyZWE4ZDM4NzdlNDgyZDI2MTI0MTJjZGZkNzQ5MDUgbGVnYWN5LXRydW5rCisxNzMwMSBjOWVlNmY3NDY3MGRhZjU1ZDVlYjJhNmEyNDdmNzFlNDhjNmU3MjdjIGxlZ2FjeS10cnVuaworMTczMDIgM2UzODc1MDdhOTkxOWIwNTUxMzI4Y2YyY2I3MzJiZTEwNzcxYjFjNCBsZWdhY3ktdHJ1bmsKKzE3MzAzIGZjNWI0MDYxNjI2MjM3M2VmNzQ2YmRhZDdlZjMxYWRkYmNjMTM4MGMgbGVnYWN5LXRydW5rCisxNzMwNCBlNWNkY2UyYTJiMTY0OWY2ZDYyZTcyOTQ1OTdlNzdkZjViYzJhOTJiIGxlZ2FjeS10cnVuaworMTczMDUgMGQwNjEzYjk1NzU4ZTdiY2Y5ZDA5M2I1MmU4YjRmZDkwMjcyNDMyNiBsZWdhY3ktdHJ1bmsKKzE3MzA2IDBkMTAyNWFlZmViZmYyNDg4YzkzNWQ1MzMyOTc5MzkxODFlYTAwNzIgbGVnYWN5LXRydW5rCisxNzMwNyAwMTVhMzRiZmJjY2JhMDk5MmJkYTc0NTE5NzhmMTRiM2I3ZDk2OWMwIGxlZ2FjeS10cnVuaworMTczMDggNjkxOWQ4ZTE0YTMwMzY5MDA2Mjg5M2ViZjdmMzhhZWYyMTEwZjg5MCBsZWdhY3ktdHJ1bmsKKzE3MzA5IDIwYWNlYjhlZGZhNWU2Y2E0ZmFkZjljNTI5ODdjNDI0NmMwZWU1MGQgbGVnYWN5LXRydW5rCisxNzMxMCAwYjY2ZDAzMDBlZWJlOWMyMDdiOWZjOGNjMTAzMTU3NjVhMjY0MDY4IGxlZ2FjeS10cnVuaworMTczMTEgOTVlZWIwNjFmYzZkNGQ0NTUxZTc4Mzc5YWU4MmQzZTAxMGMwMTRmNSBsZWdhY3ktdHJ1bmsKKzE3MzEyIGVkYTI2ZjEyMzIyNzRiZjZiZjE4YjA0YTkxZmM3YWUxODViNmMzNjQgbGVnYWN5LXRydW5rCisxNzMxMyA1ZWRkNDlkMzQwZWE5YWEwYTRkYmI0OWI1MzBlYzQwNmM5YmM2NWQ4IGxlZ2FjeS10cnVuaworMTczMTQgZGIwMjYwOTJjYjdlNDlkOGU3NjVmZjVjNTM4MmU3ODhhMDhkMjY0OSBsZWdhY3ktdHJ1bmsKKzE3MzE1IGFhNDQ1MzdkODBiNTNmZWRkNTZjMmU0Nzk1NmMwZDRlMTVlOGI0YWUgbGVnYWN5LXRydW5rCisxNzMxNiBlYzE2NWQwM2Q0NmNhODYxNzZjMDQ3OGY1ZmE0MTE1Y2Q2NGEzYWJkIGxlZ2FjeS10cnVuaworMTczMTcgMTdjZWM5NmY3NWJjMWQ1NjA5ZDIyMzE1Zjg3YTAxOGRlNDEzMjgzZSBsZWdhY3ktdHJ1bmsKKzE3MzE4IGUxM2RmNGU5MDc2Zjc1OGJjN2Q5MDQzZDhlODc2MzEyOWJkMzk4NDcgbGVnYWN5LXRydW5rCisxNzMxOSAwNzIxZGY3ODkyNzBlNzk0MzhkYThjMmVjMGY5YzIwZGZjMzJmMDk1IGxlZ2FjeS10cnVuaworMTczMjAgMTQyY2I0ZTczMTBjZGVhNGM1ZTA4MWQxNDNlNjUzNjgyOGNjMTIzMCBsZWdhY3ktdHJ1bmsKKzE3MzIxIDBlZjZlYTU4NTkwYjYwYTVhMzZjODcwOThkYzc3YWQ4ZmFjMWQ1M2IgbGVnYWN5LXRydW5rCisxNzMyMiBmOTBiODIzMjA1ZmYxZTFjNjhiYjJlN2RlYzI5OGYyMDYxYjY0YWRmIGxlZ2FjeS10cnVuaworMTczMjMgMzlmZjZiM2M0M2FmYzNlYjNhYjRkODZmNjY3MWFhNDc5ZTZiODZlNyBsZWdhY3ktdHJ1bmsKKzE3MzI0IGMzYzQ5ODU5ZTgwYjA4ZmQxMTBkZTRiYTIyNTdhNjUyNjQ5Yzk4YTUgbGVnYWN5LXRydW5rCisxNzMyNSBmNmI4NmUyZGM1NWJiZmYyNmE4Y2EzNDc1MTJhNWQ0ZmEzMzA3NGVmIGxlZ2FjeS10cnVuaworMTczMjYgOTUzN2U3ODkzZjNjM2Q0NTNhYzUyZjY0NmVkNzkwYWM2ODQzZjY1OSBsZWdhY3ktdHJ1bmsKKzE3MzI3IGI3YmI0YTM1YzEyMTg5Nzc3OWE4ZTFkOTk0YTc4YmYwNWU4MzhmMjQgbGVnYWN5LXRydW5rCisxNzMyOCBlNGNhOGMyMTM3N2EzY2I3M2I5M2MyNWUzNTgwOWQyZjVhMzMyZTEzIGxlZ2FjeS10cnVuaworMTczMjkgNzE0NTY3ODJkOGZkNWExZjMwYjk1ZmQwMTAzZTJkZjY3YjExNTI4NCBsZWdhY3ktdHJ1bmsKKzE3MzMwIDk5OThiNzA4N2VlNjA0OWFjMGZlYzFmZjdlMGZiMmNlY2NiMzY5OGYgbGVnYWN5LXRydW5rCisxNzMzMSBjYzY4M2EwYWM1NjhlYjg0NDcwNTA4MGNiMWYzYTNiZmUyODE2ZTQzIGxlZ2FjeS10cnVuaworMTczMzIgODllM2I2YTU0ZmU5M2M2ZGM1MzgyOGNjOTliOWU4MmM0ZmRkMGQ0NiBsZWdhY3ktdHJ1bmsKKzE3MzMzIDBkMTVjODA1MzcyNmIyN2Y0ZjJiMDJmZDE5NGExMzFmNGJiN2ViNzMgbGVnYWN5LXRydW5rCisxNzMzNCA1MDA0MzQ5ZWRlNGRmOGVjYTQxMWVlZmJjNDhkODJkZjUyNWQ0NmYwIGxlZ2FjeS10cnVuaworMTczMzUgOGE2M2M2MDRlZTU5OGZiNjQwZjFlZTUyZjk1ZTIzNTcwYTdkOWQzNCBsZWdhY3ktdHJ1bmsKKzE3MzM2IGMzMmY1NDkwZjVlM2FjMmU4MjkyODFiOGU0YTNkM2Q3MWQ3Zjc1ZGUgbGVnYWN5LXRydW5rCisxNzMzNyAzNGY5YTAxN2NlNjMyY2NkYzhjMTcyOGQxMjU2ODQ2NzQ0ZTRkOTFhIGxlZ2FjeS10cnVuaworMTczMzggYWMwMjQ2NTg2ZDUyNzgyYjVjZWZlYjE3OTY3MWVkMTcxNDgxYTYyOCBsZWdhY3ktdHJ1bmsKKzE3MzM5IDUxMzY5YTU3YjBhYWI0ODBhMDc5YzZlOGJkMTNlMTNhOTI3NWE3MTIgbGVnYWN5LXRydW5rCisxNzM0MCA4YTcxNWQyZGZlYjlmOWE2MWQ3YWMyNjBhYzYzZjUzMWM0NTVlZTdkIGxlZ2FjeS10cnVuaworMTczNDEgYWJhN2ViOWQ4ZDYxNDU0Zjg5YTVmZDg3ZTk5ZGIzMzYxYjM5MTBmMCBsZWdhY3ktdHJ1bmsKKzE3MzQyIDUyYTYwMGIzOGY3ZWU1OTgwYzBlYmU2MjBmOTg5YzFmZjMzMjFjNWIgbGVnYWN5LXRydW5rCisxNzM0MyBmNzhmMjg3YjNhZGRiYzg4N2MxOTQ0YjViODczZTY5NDFmZTAxOTJmIGxlZ2FjeS10cnVuaworMTczNDQgMzM0ZDlhZWJhYWYxMGEwMmVkMTNhMjliNzBkMjExNjVhNDM5ZmEwOSBsZWdhY3ktdHJ1bmsKKzE3MzQ1IDc3MjhiMGVhOTM0NDFjNTMwMGFjYWZlZTMwNjhjNjhjMjIwNGViMDEgbGVnYWN5LXRydW5rCisxNzM0NiAyYmEwOGQ5OTFjNDMzMGFmNGQ3ZWU0NjgxMGMyOTE3NmUxOTI4OTM5IGxlZ2FjeS10cnVuaworMTczNDcgYjE5ODg2YmVhMzc4N2ZhZmMwZDIxYjhkNDVhYTJhNzBhZWE0YjY4ZiBsZWdhY3ktdHJ1bmsKKzE3MzQ4IGU2YTlkNDEyNjUyZDI4YTljZTUxYzU0YzI5OWI1Y2M3NGRiZjBiNjUgbGVnYWN5LXRydW5rCisxNzM0OSBhZWQzN2Y1YWE0NzVlNzQ3M2Y5ZThkNmFkY2QyOWZhNGMwOGMxYmQ4IGxlZ2FjeS10cnVuaworMTczNTAgZDMyN2ZjNDdmOGZkZGZhZDk3ZGQ5MGRkZDBjMWI4YjNhODYxZWU4MSBsZWdhY3ktdHJ1bmsKKzE3MzUxIDM3MWU4OGFmNjQ1ZjFlODU3NDk1ZmRhNWVlM2EwMzA1NDYzZDA1ZmYgbGVnYWN5LXRydW5rCisxNzM1MiA3ZjIzZWM1Y2Q5Y2E4NDU4Yzk2YThmMWVmYmQzZGNkNmYwZDM4MGZhIGxlZ2FjeS10cnVuaworMTczNTMgMjFkODQ3NjUzZjU0Yjk1OTkwMzI0MDMxMzliYTM0YTA5MzM3ZDVhYSBsZWdhY3ktdHJ1bmsKKzE3MzU0IDU4YmE5MGU0ZTk4NWYxYmFhOWNlZmFhZWQxZGM0N2U5YThkMzMyNGYgbGVnYWN5LXRydW5rCisxNzM1NSBlZWYyNTczMGU2NGRhYWU3ODIxMjQyOWRmODgzN2IzOTNlZDgxNDgxIGxlZ2FjeS10cnVuaworMTczNTYgMTVhY2Q1YzU5MWZkNGMwNTE4ZGYyNGViOWIzMTA5ZTBmOGRlZWUxNyBsZWdhY3ktdHJ1bmsKKzE3MzU3IGRlYjNlOTY4NWExZWRkYzJlMWJhOWVjY2U1Y2YwMWY3OGZkNDQyYzcgbGVnYWN5LXRydW5rCisxNzM1OCAzODIzZmM3MjJiNTBjNTMwOWQxNzRkNTVjNWI5YmExZDQ5ZmQ1NDkyIGxlZ2FjeS10cnVuaworMTczNTkgMjhhYzE0OGQwMTI5YTc4MDJjYzc1OGZmYzE4ZDg2YTNmYWVlNDIxZiBsZWdhY3ktdHJ1bmsKKzE3MzYwIGM4NzI3YWNhMTQwNGM4OWYzNjZiZGVmMGRmMzZhZTQ4YmYzMGQ5YTcgbGVnYWN5LXRydW5rCisxNzM2MSBjMmY3YWQwNzBiOWVmZjMwMTNlODhmYWU5ZTM2ZTZkNzViMjAyZDBlIGxlZ2FjeS10cnVuaworMTczNjIgYTAzOTJmNDM4OTYwNWY4NzA1MDdiMjlkMzJkYTIwNWE2ZDM4NGNmMCBsZWdhY3ktdHJ1bmsKKzE3MzYzIDc1ZWQ0MjYzNDM2NjI5ZWFiNDk3MGRkMmI5OWI1MjlkYWIxYTk4YzYgbGVnYWN5LXRydW5rCisxNzM2NCAyOWZhY2I3OGQ2ZjQxNjc0MDhlYzZmMjI4Nzc5NzUwNGQwNmY3Yjk4IGxlZ2FjeS10cnVuaworMTczNjUgMGQ0OWRkMGYxYmNlMzEzNWQyNjE5Yjc4MjI4NDcwNTNlYmU4YWQyMSBsZWdhY3ktdHJ1bmsKKzE3MzY2IGIzNDA5NWU0ODhjZjFhYzg4MThiMjIxM2NiZGMyOWFiZTg5NDJlOWIgbGVnYWN5LXRydW5rCisxNzM2NyAzYjYxOTM4NWE5MGU0N2M5NjhjZjAyY2ZkYzlmYjdiMzc4NGVkODdiIGxlZ2FjeS10cnVuaworMTczNjggMWRiNDUzMjk2Yzc2N2JkYWNlZmFjZWZmMDYwYWY1ZGU3YWZhYzU2YyBsZWdhY3ktdHJ1bmsKKzE3MzY5IGI4MjgwMmJmN2ZmZjJkZmNjNGE5YWU3MTkwZjBhNTEwYmJkMzQ0ZjUgbGVnYWN5LXRydW5rCisxNzM3MSBiZjg0NGFjMmM4MWFiZjMwMjMyNWM4MjEyYjI0YmVmMDMzYjYwOTllIGxlZ2FjeS10cnVuaworMTczNzIgNTE2N2QyM2JkNmIwYmYwMWRhZDIwOGUwM2I2OTQyZmE4ZjkxYjdiMCBsZWdhY3ktdHJ1bmsKKzE3MzczIDc0MzUzMzFiNDhlZTY1ODQwNTExNjVlNjEwNzRmMzFjNzhiMGFjNzMgbGVnYWN5LXRydW5rCisxNzM3NCBhZGRhYmE5OTEwNzdkNDgzOGJiZDYxZjY0NmU1YTgwNmMwMGFhMmU4IGxlZ2FjeS10cnVuaworMTczNzUgOWZlZDRlZWJjNTg2NGZjZDhlNGVlYTUwNzM5ZWNjYzU1NmZhMjdlYSBsZWdhY3ktdHJ1bmsKKzE3Mzc2IDIzNWJjZDNlNWYxNzQ0NjkzZjZhOGQ4MzdjM2ZlODQ1ZTQ1YWY0YjYgbGVnYWN5LXRydW5rCisxNzM3NyBjZDNlNGQ3M2RmOGU0ODYzZjYzMmM1M2UwYzAwNzkwMzk2YzUwNWY1IGxlZ2FjeS10cnVuaworMTczNzggOTE5ZDM2ZmRhOGM4ZDE4NTcxMTg3MThhNzY2NTEwM2VmMzMzZmVhYSBsZWdhY3ktdHJ1bmsKKzE3Mzc5IGZjNTRlMzk3MTY5ZmY2ZWFkYmNiMDlmNjU0ZTg4MzUxZDNkZjFmMjUgbGVnYWN5LXRydW5rCisxNzM4MCBmZjRhZTY5MWJlOWI1MGY5YzJlNmUxMmUzYjQ0MDJjNmRhNzI4NzA0IGxlZ2FjeS10cnVuaworMTczODEgODZkNDc4NjczNGNhMWRkNjUwMGU0ZGUzOTQwZGRkYjAxMGQwOWQ0NyBsZWdhY3ktdHJ1bmsKKzE3MzgyIDczNjZiYjk1ZjIxMjk5MGE4MGJhN2NmNjczZmU0Mzk0NjAxYzJkN2QgbGVnYWN5LXRydW5rCisxNzM4MyBiZTFhYjE4NzM1OGM4MWYwOTYyZGJjODJjYWI4MDM1MDk4MzcwOTQzIGxlZ2FjeS10cnVuaworMTczODQgOGQxYTQ2OGY4ZTU5MTU0YjcwMmI5ZTRjY2M1ZjMxNzRiM2VjOTEyNCBsZWdhY3ktdHJ1bmsKKzE3Mzg1IDMwNjdhZTI3NDU4YzI0MDU5MmVjYzJlZTVhOGM2Mjg0NDQzMmE0OWUgbGVnYWN5LXRydW5rCisxNzM4NiA3MTUwOTc5Zjk2OTQxNTY1NTFlZjhmNjQ0M2RkYWIyZjgwZjNlM2M1IGxlZ2FjeS10cnVuaworMTczODggNjM1ZjY5MTIzMzQ5M2U1Yjc5MzVhOTQyODc0YTAwY2M4MzJlZjZjMyBsZWdhY3ktdHJ1bmsKKzE3Mzg5IGE1ZDY1NDU5YTdiNjkyMDMwZTU0NTExMzRjMDY3NzRjMDhkYWI0YmYgbGVnYWN5LXRydW5rCisxNzM5MCA2ODc5NWMxM2FjZWEwMDExNmExNWUxMTZjZjQzNGNiNTY3ZjMxZGY4IGxlZ2FjeS10cnVuaworMTczOTEgNDE3NWVlODBhMDg1OGM5ODc2ZjA3MzA2ZjcxMWM4YjlkYmY4ODJmMCBsZWdhY3ktdHJ1bmsKKzE3MzkyIDA1MmIxMTNjNzVkNGNiZTZlZDk2MDE0ODg5MWNkZjBkZGJkY2IwMTQgbGVnYWN5LXRydW5rCisxNzM5MyAzNjlhYzE4NTA1NWQzMTFjMDFkYTMwODkyY2RjYWRmYTc0NzgzZjg5IGxlZ2FjeS10cnVuaworMTczOTQgZGMzYmVmNzcxZDA3MzJjNjkxY2U1ZGE5NWE5NTBlMjQyNmRjZGEyMCBsZWdhY3ktdHJ1bmsKKzE3Mzk1IDM1YWU4ZGZmOGVkMDk5YmVhOWQ5YTVkMmIwNzIzMjBiNmFhMmNhOTYgbGVnYWN5LXRydW5rCisxNzM5NiA1NjFjMGIxZDUxNGIzNGY4OWFiY2IzYzJjZTQzNjFjZGZhNmZkMDhlIGxlZ2FjeS10cnVuaworMTczOTcgYTQ1Y2ExZjdmMjQxNWJiNzI0MWVkOTc4NTY4Y2FkYjllNDU0MWIzNyBsZWdhY3ktdHJ1bmsKKzE3Mzk4IGMxNjM5NjUxMWFhMzU2YWExYzlkYjdkODhhM2Y5ZmRjNDU1MzBjMjYgbGVnYWN5LXRydW5rCisxNzM5OSBmZjcxMmRlOGJkODEzNDVkNzQ4YzQxMmFjMmExZmRlMTJlMzg3NDhjIGxlZ2FjeS10cnVuaworMTc0MDAgMTIyNzc1ZmZhMzZjOTNmZTAyZGNkNTQwNTRkNWNlYjdhOGY0MWZkNyBsZWdhY3ktdHJ1bmsKKzE3NDAxIGVmYmEzMDcwY2RkZWM4YWY5YmFjOGE3NjFhYjE5ZDZlODI5MDFkMTMgbGVnYWN5LXRydW5rCisxNzQwMiBhZWQxMjI2YTdmYzRmMzRkMTBjYzM0YTA3MGNhNmVkYTFiNzg5OWMyIGxlZ2FjeS10cnVuaworMTc0MDMgZTljMzEzNzQ1MzAyMTdhNjY4YzM4MDRkNGY3YzhkMzEwMGVmOWNhMCBsZWdhY3ktdHJ1bmsKKzE3NDA0IGQ0OTBjMmExODZkYWZjZDlhZjM4ZTNkZDZmZDAzMjU3NWNkM2M2MjcgbGVnYWN5LXRydW5rCisxNzQwNSA3ZmE0MzAyYTVhMDg3MGYwNDYzMTkzYTI1MGFiZjQzOTRjMzdhODAxIGxlZ2FjeS10cnVuaworMTc0MDYgMjhkZjRmNDU5NjdmYjY0ZWI5MmI4Y2NlZjUxOWVmMGEwMTM5ZDViMCBsZWdhY3ktdHJ1bmsKKzE3NDA3IGE4ZDFjMDMwYjE5ZmU2ODBjNzBiNjc2OTVlNDM2MTM5NTViMTFjYjIgbGVnYWN5LXRydW5rCisxNzQwOCBiM2YxNTYxMTYyNzEyM2Q5MDlmOTlmNTJjNjNlNzdiZGE4YWIwZWYwIGxlZ2FjeS10cnVuaworMTc0MDkgODc3NDVlNTU0NzI3MTRkY2MyODhiMzVmNzQwOGViZjNjODUyYzg4YiBsZWdhY3ktdHJ1bmsKKzE3NDEwIDIxOWUwMDIyMWM4NDM1Y2ZiN2ZkNDhmMzYzNzk3MDdmOWRjYzhlZGUgbGVnYWN5LXRydW5rCisxNzQxMSA0YWMwOWU5NzA4MjgyZGY1NzFjMDVlYTI0MWMwMzM5MDJjNzdmZDQ1IGxlZ2FjeS10cnVuaworMTc0MTIgYTcxMzg1ZjhiNGRhYmZkODFmMzNkMWVkYmJlODg2MzliODllNzQ3YSBsZWdhY3ktdHJ1bmsKKzE3NDEzIDVmMmI5ZWYzZjJhZWMxYzM4MjNhMzkzM2EwNGMyOTYyNzk0NGUzNDIgbGVnYWN5LXRydW5rCisxNzQxNCAyOGNhYWEzZTI5MmZmZTFjM2IxMDg4NmU1MTAxNWQ5YjYyY2EyYjM2IGxlZ2FjeS10cnVuaworMTc0MTUgZWViOGVlNDg4MTA2YTdjYjliOWViZjNmOWIwMWM4MzI2MTM0MTAyZCBsZWdhY3ktdHJ1bmsKKzE3NDE2IDA3YTJkYzFiNzJhZWEyZmVkMTQ5ZWNiOWM0NDBhMzExYTY4ZTY2ZDQgbGVnYWN5LXRydW5rCisxNzQxNyBmZThlZjQxYzMyMjNmOTlmOWIxN2RhNjBkNTJjYjYxMzZkNmRlYjM2IGxlZ2FjeS10cnVuaworMTc0MTggMDNlNjE1MGZkOGQ1MjRhODJkZTUyNzVmNjdjZjdjNDMxMDVlNDViZiBsZWdhY3ktdHJ1bmsKKzE3NDE5IGJjZjIzYjUyYjAyZmQ5YWViMGFiNjg1ZDliYWQxNDdiNjU5OGIzNzIgbGVnYWN5LXRydW5rCisxNzQyMCBhYzgxZTBjYWM1ZjZjZDhiMDlmNmEzMThlMmMwNGYxNjYxZmM0NTBmIGxlZ2FjeS10cnVuaworMTc0MjEgYjdlZDU0M2Y0YzU2ZDJhNjIxZjZhYzUxNGQ3ODEzNWY5ZWU1YzQ5NyBsZWdhY3ktdHJ1bmsKKzE3NDIyIDYyOTc5YzdiOWE3MTliMzEyNDM5MmJlMTI1ODA2ZDJhMmRkNjFiNjcgbGVnYWN5LXRydW5rCisxNzQyMyBmNDQ0Y2ZkNGZhMDc1NDEwOTIxOTY3MWUxZGEwYzMyMDc3MTVmZjJmIGxlZ2FjeS10cnVuaworMTc0MjQgNTVkNjczMDI0ZTVmOTZiN2I0NjY5MTMyNWVjYzVjMzc0YTE5NmEyNSBsZWdhY3ktdHJ1bmsKKzE3NDI1IGJjYTFkMjAxMzYyNmI5MjQ1ODE3YmM5N2U0ZGE1MWU5MzE5MjQ4MDEgbGVnYWN5LXRydW5rCisxNzQyNiA2MDA1MTU3NDdjNTFhMzVhMjRmMjZiOWY4NDI5ZGRkZDRhOGFkMTg4IGxlZ2FjeS10cnVuaworMTc0MjcgMjViN2FjMDU2ODllNTA5MmRkZWNmMDY3MzBmNjhiZTIyNWViYTZjOCBsZWdhY3ktdHJ1bmsKKzE3NDI4IDg1NzM3NmQ2OTliYjlkZjQyOWE1MDhjNzdhZDBhZmFjZTI4NmJhYWEgbGVnYWN5LXRydW5rCisxNzQyOSBiNGEzN2FiMzI5ZGEyNDgxYjk1YzNjMzFhNmQ5YWFiMGRlZjhlMTlkIGxlZ2FjeS10cnVuaworMTc0MzAgYmE1NDIxZmYwMjU2N2IwMmU3Mzg2NWI2NGJlOGQ0YWI5N2RjNDgzYSBsZWdhY3ktdHJ1bmsKKzE3NDMxIDgzNjlmY2Q3OWE2NGJjZGY0OGY5OGE2YzRlODYxYjlmMjQ1NTQyMDAgbGVnYWN5LXRydW5rCisxNzQzMiAxODMzZDJiYmY3NmE0OWNhMTBmZWZmMzc0Y2E0NmUyNTNhZTYxZmNhIGxlZ2FjeS10cnVuaworMTc0MzMgMzQ0ZDIyYjlkYjMyYWQ5MmI4ODUzY2YwNmI4YzUwYmYzMTkzOGI2OCBsZWdhY3ktdHJ1bmsKKzE3NDM0IDIwYjIyZmRlMWNiNzlmOGYzZDNiZDU4MjRkZGZjNzRmYzNhMDQ1MjIgbGVnYWN5LXRydW5rCisxNzQzNSA1Zjg3ZWVjN2I2YjhmNjZkMmI2YTYwZWE4ZTU1OGIyZDA4NmYxMGNlIGxlZ2FjeS10cnVuaworMTc0MzYgNGQ3NDQ1MTVhNzNlNGIyYjQzMmUyNjViNTk4NWY1ZjQ3YzNmMGI4MSBsZWdhY3ktdHJ1bmsKKzE3NDM3IDY0MzVjYzQ3ZmNjNmZmMjQ4YjE5Njc0ZTc1NjBiM2ZhMGY3ZTQwZWIgbGVnYWN5LXRydW5rCisxNzQzOCAyMTNkYmM4ODAxNTk5NjdmYzAwM2NjMTc3MGM1ZGJhNDdkZjk3MDM3IGxlZ2FjeS10cnVuaworMTc0MzkgODljZTQ4MDk2M2Y5YmI0MGU0Y2VkZmEwOGFiMTMyMzU1MGU1ZTFlMCBsZWdhY3ktdHJ1bmsKKzE3NDQwIGQ4NGQ1NzU5NDgxNTU2YWE3YTgyMGQzOWZhOTBhYWQyMmNmNjczMTUgbGVnYWN5LXRydW5rCisxNzQ0MSBjZDFiOWQ4ZDA0NWRkOTRkZTJlYjM5MWMzMzIzMjI3N2FiMzY1ODUyIGxlZ2FjeS10cnVuaworMTc0NDIgZThkODc1OGFkZmRiNjM4YzYyNGQyMzMxOTNiOWY5YTg4Y2E2NGRjYyBsZWdhY3ktdHJ1bmsKKzE3NDQzIGRjYmMwODRkMDQ2ZWJhNWQwMjRiMjQzNWI5ODMzNDQ1NDM3ZjUwOTIgbGVnYWN5LXRydW5rCisxNzQ0NCA5YWI0MTlhNWUwNTI4OTE5ODlhNDcyOWU0NjdlMjYzMDVmODU2ZjQ3IGxlZ2FjeS10cnVuaworMTc0NDUgYzQyMTA1YmRiNWZjNGViMWFlNDYwZGU2Y2ZhZDAzZTcyM2Y3OGI2ZCBsZWdhY3ktdHJ1bmsKKzE3NDQ2IDE2YTljMDU3ZGMxMTlmMmM1MzU3ZTIzODNjMjNmZjIzNzYxNDU1NGUgbGVnYWN5LXRydW5rCisxNzQ0NyA5MGYwNzg5ZDU3YjcxN2QzMGQyNzRkZDlmNmY0ZWI2YTQ4M2NkNjEwIGxlZ2FjeS10cnVuaworMTc0NDggNmMzMTdhZGMxOGE5ZTJiYWRmMWFjYjZiOGQ2OTlkZTMwMzkwZWIyNiBsZWdhY3ktdHJ1bmsKKzE3NDQ5IGExZTJlOGQ1NWVmMDA1MDA3YTBmZmQ3M2JlNDM0YmVlNzEzMDdlNmEgbGVnYWN5LXRydW5rCisxNzQ1MCAyYTQ0MTZhZDgzN2M0NTk2YTQyZjkzNWU4ZjFiNTdjNmQ3MTdiMTIwIGxlZ2FjeS10cnVuaworMTc0NTEgMjU2ZDFiYjYzODg4OTQ3ZmM2MTYwZDYyZjA4ZDQ1NGI3Y2ExMzhiYyBsZWdhY3ktdHJ1bmsKKzE3NDUyIGY0ODYxNzZmNTZmODcwODcwYWE0NzFmOWQ1NDdiM2JmYTA1YjVlYTUgbGVnYWN5LXRydW5rCisxNzQ1MyA2OWY5NmI2Y2FkMjkyYjQwNjBmMTJjNDM4NTg4N2M0OTAwZjFlNGY5IGxlZ2FjeS10cnVuaworMTc0NTQgNDlhMDQxMzMwNDYxY2U4NGE4NDVlMGVhYThlZmQ0ZWEyOGIxMWNhYyBsZWdhY3ktdHJ1bmsKKzE3NDU1IDAxNGNmNmQyOTM5ODcyZGFhZTJhODEwZThhMDJiMmUxOTM4YTRmYTMgbGVnYWN5LXRydW5rCisxNzQ1NiA4ZTVjYTNmYmNkYjY0NjMyYjk1MWMyNDI2YjRhZmM2OTA4NGJmMGU2IGxlZ2FjeS10cnVuaworMTc0NTcgMjRmYmJmMTNkYWE1YmQ2NzZlM2YzMThkNGVhOGM3MzNlYzJmMDVhYyBsZWdhY3ktdHJ1bmsKKzE3NDU4IDgwYTc4MjA4NmE1N2YxOWI3YzJlNmFiY2FhZThmOGUxOTExNjE0MzIgbGVnYWN5LXRydW5rCisxNzQ1OSBkMjYwOWQ0MzA0ZWZjNWNhY2ZjNzMwZDg1YThjY2E5ZTAyNDA1NzJmIGxlZ2FjeS10cnVuaworMTc0NjAgOGFkOWJkOWNhNjBjMDA0YWVjYjdlZThiYWI0OTQwYmZhY2RmZWQ5MCBsZWdhY3ktdHJ1bmsKKzE3NDYxIGYyZmM2NmE2MTUzYjQwNTZlNjJkOWFlZTVmMTBjODk0MjEzNjJjMGEgbGVnYWN5LXRydW5rCisxNzQ2MiBhYzU4M2U2YTNjOGI1MWE1ZjIwYjYzNTg2YjA2NTU5ZDQyYTAzYWYyIGxlZ2FjeS10cnVuaworMTc0NjMgMTQyYTkwZWVhOGY0YTE4OTIxNjkxNDdiMTNjOTFkYjExMDNkNTExMiBsZWdhY3ktdHJ1bmsKKzE3NDY0IDBiNjMzMzI1OGY1NDdkMWU5MDBjZGQyN2Q2ZDllMjczZDlhZjkwN2UgbGVnYWN5LXRydW5rCisxNzQ2NSAxM2M3M2EyMTljYjExZDllZTM3NzgzZDQ3MTU1MDI1MGZhYzJjY2Y0IGxlZ2FjeS10cnVuaworMTc0NjYgZGNiOTI2ZTcyOTZlYzBhZDJmYzRiYTAzZWMxNDU3NjA2M2VjOWE3ZSBsZWdhY3ktdHJ1bmsKKzE3NDY3IDFlNmMwNDRkOGU1OTg1MTU3ZDZhMGRmNmJiNTA3NzUzMTg1NzE0ZTUgbGVnYWN5LXRydW5rCisxNzQ2OCA1YTUxMmVjOGE3YWRlMjhkOWU5YzE1YmM4ZWQ1ZTk1MjU5OTU1MTk1IGxlZ2FjeS10cnVuaworMTc0NjkgMzNlMmVmMzM5ZTUwZDE5MTNkNWY1Y2I0Y2QyNjMzMjI5OGFlZGNlYyBsZWdhY3ktdHJ1bmsKKzE3NDcwIGM0ZDA1OTg1YzZmMzA2OWM5MTJlNjFmNTA3MWZhZjMxNmVmMGEzZGUgbGVnYWN5LXRydW5rCisxNzQ3MSAyODQ1MDhjNjUzYzdjM2U5MzFiMWJlMjNjMWM1NTlmNTYyMzJjMDY0IGxlZ2FjeS10cnVuaworMTc0NzIgOWQ3OThhNzYzZDI0MTc5OGQ3MGYwNTJkMTY1MzdjZTVkODg5MWE1ZCBsZWdhY3ktdHJ1bmsKKzE3NDczIGNiNzYzODM1YjE3NjFkYTdlNzFlZjczMWY3OWViYjM1NDU0Y2E5YTggbGVnYWN5LXRydW5rCisxNzQ3NCA0ZjA2OWY1ZGZhN2I5NzgwYjBhNTJhNjZkY2Y2NmFhMTQ1ZTg0MDFmIGxlZ2FjeS10cnVuaworMTc0NzUgNGFjY2M2M2Q1NmRjNTY2ODY0ODE1NzQyOGUwMGZkMjAyMGQ1MTg4ZiBsZWdhY3ktdHJ1bmsKKzE3NDc2IDQxYWZjZDA2OWE2YzUxODRkMDM5ZTkwZWQ0NDIzNDhiMjE3MWEwNGUgbGVnYWN5LXRydW5rCisxNzQ3NyA0NmY3NjJhNjFiOTk2MzAwNTIxMzExNWFkZTU1NWQyMzEyOGI4MjM5IGxlZ2FjeS10cnVuaworMTc0NzggYWFhMWRjMTYxY2UzZDJmMzBiMWMzODE1NTY0MDRkYzk2MDdlNDgzNSBsZWdhY3ktdHJ1bmsKKzE3NDc5IDk2MTg2MGQ2YmVhOTNiYTU0ZjQxMmU0NTJlNDA2MWYzMTYyZDBmYTEgbGVnYWN5LXRydW5rCisxNzQ4MCBhZjM2YmE1MDYxZjZlODQ1Mzg4ZWYzMjU5ZWQwZWUxYWE3ODc1NjY2IGxlZ2FjeS10cnVuaworMTc0ODEgZmU0N2QyMzhiNTBkZTI1MmMwZDg4MjA3NGE2NzMxNGQzZDc0MWI2OSBsZWdhY3ktdHJ1bmsKKzE3NDgyIDQwNTk1MDE3YTk5MmU1NTJlM2JjYWUzZTlhM2JhM2E3M2RjOTBkOGUgbGVnYWN5LXRydW5rCisxNzQ4MyA3MjExZmJlMGRiOWQ4NzA5YjgyYTIwZmMyYzg5OWZmMGZlYmZiNGIzIGxlZ2FjeS10cnVuaworMTc0ODQgOWQ5OWEyZGY2NzVmNDk2YWI0YjA3NmFkZTkyODE3M2IwMDFlMmIxNiBsZWdhY3ktdHJ1bmsKKzE3NDg1IDc4OWM1YjZjMGYwOWEwOTc5YzU5MjRmZTExMGViMDdhNmViNTgyZWEgbGVnYWN5LXRydW5rCisxNzQ4NiAzY2QyMTc0ZWUxMGQxMTYyMjM0NTM0YzI1ZDQ2YzQ4MDNhNjdiNzkyIGxlZ2FjeS10cnVuaworMTc0ODcgNGQ2YTVlNWZlOThkYzg5MTA2OGQ0ZTgyYjQyMTBmOTc5ODhjNWRlNCBsZWdhY3ktdHJ1bmsKKzE3NDg4IDdkMGUzNDUwZWU0MTA3NDZhNDZhNjgyN2Q1MDEyODdmZjljZTM1YTYgbGVnYWN5LXRydW5rCisxNzQ4OSA4YmQ1MzQ5ZTdhYThlMDRjNjE1YzM3MzQ0M2IwMjY3ZTdhNjA5ODEyIGxlZ2FjeS10cnVuaworMTc0OTAgZGI5ZWE1YjVmMzM3ZTdmNWYyYWUyNmMzYTZhMzI3ZDA1OGFkMzU1NCBsZWdhY3ktdHJ1bmsKKzE3NDkxIDBjMzAzYTIyZDlhNDk3MTE5MTE0ZDYzNmUxNDY3OTEzMTFjOTViZDMgbGVnYWN5LXRydW5rCisxNzQ5MiAzNzM5N2JkMWY4YThkYjRiMTg2ZjEwMTU1MjU0ODkwNTk0OThmMDkzIGxlZ2FjeS10cnVuaworMTc0OTMgMmUxNzBjMmY2MWUxMzhiMGU3YjVhZThlZjJmZjU3MDUxMTIyNWNlYiBsZWdhY3ktdHJ1bmsKKzE3NDk0IDEzMzYyNGFiYzUyNWFlY2RlYmYzZWI1ZTBhMjc4ZGQ1Y2Q3YjJlOTUgbGVnYWN5LXRydW5rCisxNzQ5NSAzZmVmZWFmYTNmNGEwZjVhMmE2ZTZiMzQ1NTkwOGQwMzM5NzA3Mjk3IGxlZ2FjeS10cnVuaworMTc0OTYgOGE3ZDQ3ZDA3OTgxMjJiNGU5M2E3ODhhMGQ0ZTlhNDFiZmY5Y2FjYiBsZWdhY3ktdHJ1bmsKKzE3NDk3IDA4ZTFjM2M0MWU2MDdmNDYxZmVhM2EwMDE5YjdkMjljZDIxOTJiOTYgbGVnYWN5LXRydW5rCisxNzQ5OCBiOTU0YzMzZjBiNGIwY2Q3OTM0ZjBhOTIyYTdmNzJiYTc1MTE3MjA1IGxlZ2FjeS10cnVuaworMTc0OTkgNjYzN2MwOTFmZjQ0ZjM2MmI4OTNkMWFmYjdmN2U4ZGMzYWVmNDcwNiBsZWdhY3ktdHJ1bmsKKzE3NTAwIDJkMzBjMzVmZWViZTUwMzFhZTg3NTUxZTJlODFhMDM5OTBlMWMzMWIgbGVnYWN5LXRydW5rCisxNzUwMSAxYjgwNjU1MzkwOWY1ZGJiZjIyNDY4MjZiODE5Y2E5ZTY2MGY5NDk1IGxlZ2FjeS10cnVuaworMTc1MDIgM2I3MGU2MDI5OWEzMTg3NzUwNjEyNWJiNjliZjUzYWRmMTk4MjgxZCBsZWdhY3ktdHJ1bmsKKzE3NTAzIDE1Y2JlMzk5YTljM2I1ODVjMjA0MzQ4ZDI4MTRjMzg5MGU1OWNhZTEgbGVnYWN5LXRydW5rCisxNzUwNCAxZWM2YzYzMzQ3ZWEzODMzZTI3N2E1NmNhMmFiZWE0YjU0ZWZhZmE4IGxlZ2FjeS10cnVuaworMTc1MDUgZWRkYTM1M2JkZTEyYTFkYjZiZTgyMDc2ZjgwNWIwYjI1NDNjOWM4OSBsZWdhY3ktdHJ1bmsKKzE3NTA2IDdmYzQ1NjlkOTYyNTA3MDUyY2Q2YjMzN2U4NDBmNDQ0Y2QwYmNmZjcgbGVnYWN5LXRydW5rCisxNzUwNyBmNGYzODQxYTI2ZWRkMTRiYmM0NjkzMjY0ZTE5N2YwNWE1ZTNjODEyIGxlZ2FjeS10cnVuaworMTc1MDggM2Q2ZmU2NGJjZDIxOGEwYzRjZTdiMmVlYTFiNmIzYWE2M2E1ZDhmMyBsZWdhY3ktdHJ1bmsKKzE3NTA5IDBiZDc0NmJjNzYyN2Y3ZjQwN2FmMDE0N2JiMDNmMmRiZTU2Zjc5ZDIgbGVnYWN5LXRydW5rCisxNzUxMCAwMjI4OTE0ZTBjNWYwZjcxMGI2ZGIyNDQwZTNmNDYzNzNmNjBmYThmIGxlZ2FjeS10cnVuaworMTc1MTEgNjAwMjllM2UwNWVlYThlMWZkYTAwMTI5NzZhOTYyNTk4YmU0NWYxNiBsZWdhY3ktdHJ1bmsKKzE3NTEyIDk0NjcwOWU4MmJlMDJkNzA2MWEwOTZjNmQ3ZWQ2NjgzMDM4YzNjNDEgbGVnYWN5LXRydW5rCisxNzUxMyA2ODZkM2NjYWViNGE3ZTFhMDMxMjQxNDZkZGVkYzE1MmMyYWE3NjhmIGxlZ2FjeS10cnVuaworMTc1MTQgNjk5ZmJiYmEyOWE3MzBjOGEwODM4MTljZmY2ZGE2YmNlZjEwMDU3MSBsZWdhY3ktdHJ1bmsKKzE3NTE1IDk4MzUwMmIyY2Q0M2E0M2Y4YWI3ZGFhZWM4NzM4ZmM3MDQ3YjliOTYgbGVnYWN5LXRydW5rCisxNzUxNiBlN2Y3M2QzNWVjZDhjMmY4MmYxYjY0OTJkYmNjZGRkYWFmMjAwYzA1IGxlZ2FjeS10cnVuaworMTc1MTcgMmQ2MTg4YzJlYTU2ZjFiYWY5ZWE5ZjdhOWMxNWQyMmMxZGY2ZGQ5MiBsZWdhY3ktdHJ1bmsKKzE3NTE4IGQxZWQzMDgyNTgxYTYyODE1ZjRmMWY2OTkzY2MyZDYyMDUzZDliODAgbGVnYWN5LXRydW5rCisxNzUxOSBmODM4NDA5ODYyNjg0NDFmMWJhOWNiYTExMTQxYTVhYmY3MjY2M2Y0IGxlZ2FjeS10cnVuaworMTc1MjAgNmZjZjVhNzA1MzNjZjBjZWNlYjkyMDIyZjZlNzg2ZDYzODU1NmExYSBsZWdhY3ktdHJ1bmsKKzE3NTIxIDE1NzA4NTQ5MTFjZTA2ZTdmZmZlNGUwZWFiNTMwYzhmM2NkNmE4NTAgbGVnYWN5LXRydW5rCisxNzUyMiAwODAwNTRiMTIzNTY1YTc0YjNhNWY1Y2VlZDliYzk5ZTI0ZmQ3ZThhIGxlZ2FjeS10cnVuaworMTc1MjMgNDJjNDFkYWRmMjkzNmZlNDBjNjI5ZDIxYTg3NDA5ODI3ZjQzYzY5ZCBsZWdhY3ktdHJ1bmsKKzE3NTI0IGE1YjQwMjk1ZGMxOWJhN2UyODc4YjNmYThkOGU4MmUyYzY5ZTFlNWMgbGVnYWN5LXRydW5rCisxNzUyNSA4ZGI4NjA2ZDg0ZWFhMGE1NmMyMTNkZTU1ZjY5MWViZWVlZmY4ZWVkIGxlZ2FjeS10cnVuaworMTc1MjYgMGM2YjlkZTE5MTAwZjQ5MzcyMjE3MGJiY2Q3ODdkYjA2M2UyMzM4OCBsZWdhY3ktdHJ1bmsKKzE3NTI3IDFiMjBhZDZlYjUwMTk0MGQ3MzFjODY1OGRmMjMzNjRhNWIxNjY5NGIgbGVnYWN5LXRydW5rCisxNzUyOCBkZjhkNTc1ZDk2N2Q4OGQwNTgxMWJkNmVkNDYwYmJmYTY3MWQ4MWQ5IGxlZ2FjeS10cnVuaworMTc1MjkgNzU2YzhjNjUzNWZlMmRkZWMyZjBlZGNmOGEyNGQ0OWEwODM5Y2ZjYSBsZWdhY3ktdHJ1bmsKKzE3NTMwIDIyMDExZDk3NjkxNzM4NGY2ODk4ZjEwOWI5YmM4MDYxNTcxMTZjMWQgbGVnYWN5LXRydW5rCisxNzUzMSAzYzU4NzE2ZmFmZGU4YjNmNzNmNmE4YWU3ZDZmODE4ZjYxNDAzYzE5IGxlZ2FjeS10cnVuaworMTc1MzIgYTc4MTNhZDczYTRlZGVlZDAzMmNiNWY5YTMzMDFkYzE5MWRlMzEzYSBsZWdhY3ktdHJ1bmsKKzE3NTMzIDk0Y2E4N2EzZTVlZWUyOGM1ODBmYTdkZWM5NjRjNWMwMGI1YzBlNmYgbGVnYWN5LXRydW5rCisxNzUzNCAwODgyMzA5OWFlNjI2ZTExMjJiNGI5NDYyZTNlOThmNjJkMWJiMWYxIGxlZ2FjeS10cnVuaworMTc1MzUgZTJkNjJkNzQ3ZjdhODJjMTgzY2U3ZjA0YzUwZjlhOWQ4ZmM4MzI4NyBsZWdhY3ktdHJ1bmsKKzE3NTM2IGU0MzJhMTg1ZjRkYjgzMzFiMzFlZGE2YzBlZjg2M2IzMWU3NzVmMzMgbGVnYWN5LXRydW5rCisxNzUzNyAyOTUxMjY0MzM4NTZjZDMzM2EyM2EwMmMxYmI4ZjhhMWI1N2U2NjMyIGxlZ2FjeS10cnVuaworMTc1MzggZWRmMWUxNWM2NzFhMDg0ZTUzOGUxMWJhZGFlODYxZmUwOWFiYzhmNyBsZWdhY3ktdHJ1bmsKKzE3NTM5IGM1MmZmMDJiYmQ3MDRmZTQ3YzljZjUyYjY0NTRmZjlkNDM1NTZhOWIgbGVnYWN5LXRydW5rCisxNzU0MCBmYWYzZTczNDI1NGRkNmY2MTFhZmNiYjgwNGM2ZjhlNWExZWFhYjI0IGxlZ2FjeS10cnVuaworMTc1NDEgZTM4NGY1MDE0OWM5NDA0NDUwOGFlOTM1N2YwZjcwOWYyZWFkZTEwOSBsZWdhY3ktdHJ1bmsKKzE3NTQyIGU4NmZhN2U4NTBmMTQyMGJjYjU0NDhiOTJmMWZhOGYxZjQ3MzZhOTkgbGVnYWN5LXRydW5rCisxNzU0MyBkNmZmYjZkN2ZlOGFkMzY1ZmMxYzU1ZDk5NDcxMWEwNzkzMmMwMDI5IGxlZ2FjeS10cnVuaworMTc1NDQgY2VjMDAzYmEzYzdiOTc5Yzc0MDNiZjFiODhkZTE5NzYyOTc4MjI2MiBsZWdhY3ktdHJ1bmsKKzE3NTQ1IDY3YTQ5MTNjMDc3ZmVmYzkxMmVmN2IzMWRjYWZkMmVjMzdjZTFjY2IgbGVnYWN5LXRydW5rCisxNzU0NiBiYWI0ZmE2YzNjMjQxYjZhOWRhNGEzZDZjMjYxMGQ5ZmQ3MGY5NjE4IGxlZ2FjeS10cnVuaworMTc1NDcgYzZmNDNjNjAzNmJhMTA1MTM3YmI3MTJkNDUxNzIyZGVhNmRmMWYyOCBsZWdhY3ktdHJ1bmsKKzE3NTQ4IDM0MTEwNTM4YjExODQ0ODU1ZDhjMTJhMTQ4ZjU3MmY4MDZhMDUyOTIgbGVnYWN5LXRydW5rCisxNzU0OSAyYjliMTU5NjU5NTE1Zjg4OWVhNTQ2YTE2YmNiYjk3M2UwYzA0OWE1IGxlZ2FjeS10cnVuaworMTc1NTAgZWYzNzA3OGQyNzJkNjQyYzExMDU0ZWQ1Y2RkZDBjMmYxYjQ4ZWRiOCBsZWdhY3ktdHJ1bmsKKzE3NTUxIDg1MDM4YTAyNGIxOTFhODg4MWFkYzZmZGRkMzQ5NjU5MmJhMzAzOWUgbGVnYWN5LXRydW5rCisxNzU1MiA5ZTNkYzdjNDdhZmEyOWYxMDc1OWZhMzFhOTE4OTU0N2UzMTMzYThmIGxlZ2FjeS10cnVuaworMTc1NTMgNDA3Y2UxYzk5ZTk4ZTMyOTE1NjY2ZDQxZTUxMTA2ODhkN2RjNjY1YiBsZWdhY3ktdHJ1bmsKKzE3NTU0IGZhODI4MjBiZDNmZjNkZDNjMjdhNzdlY2U2OTlkYmFhMDA4NjhlNTQgbGVnYWN5LXRydW5rCisxNzU1NSA5NWZlMDgzYzc4ZWU1ZTBiNDgzMmQ0NDRiMTAyN2RkYTBmYmZkNTMzIGxlZ2FjeS10cnVuaworMTc1NTYgNTgxZDFlNzdlMzVlNzVkZWQzMzdiZjY2ODU2NzIwMDEyMGI3NzlkYiBsZWdhY3ktdHJ1bmsKKzE3NTU3IDkxZGRlN2JmZmU3ZDllM2MyMDlhYTU2NWM0ZDJmYjE0NTY1YzIxMTkgbGVnYWN5LXRydW5rCisxNzU1OCA0MzkzNmEyNWVhZjEwMDM0ODkyNjI0YzY0ZTdkZDRiNWE4NTk2YzBkIGxlZ2FjeS10cnVuaworMTc1NTkgMDRjMzk4ZTc0ODc4OWM3YzQwMTRmMmRiNDI2ZGQ0NDNmNmVhYzg4OSBsZWdhY3ktdHJ1bmsKKzE3NTYwIDQ3MTJmNWI4ZjI3OWFmMmE4N2Y5NTExMDhlNDdiYzhlNTAxNDU1MzAgbGVnYWN5LXRydW5rCisxNzU2MSBmZWY5Yjg5YWQxNjIyYWU5N2FjNjFmNTE1MThlMzQxZjFhNGRmMTEwIGxlZ2FjeS10cnVuaworMTc1NjIgMmZjYjk5MGI5NjVmODZmNWYyYWE1MmI0NzUzYTE1MjVlZTVmNWI0OSBsZWdhY3ktdHJ1bmsKKzE3NTYzIDg5YjJhZWU0M2UwYmQ1MjdkZjJlNmJhNzlmYjQ2ZTA1MDI3MzY4Y2EgbGVnYWN5LXRydW5rCisxNzU2NCBlMDI0NDM4NTIyZGQ3MGJiMzdjYWVkZjU2NGI5NGY2YjhiODRjMTZkIGxlZ2FjeS10cnVuaworMTc1NjUgYWM2ZGYwNDk0YzU4MjZiYmJmODNhYWQwMmRmMTcwOWFhNTQzYmJhNiBsZWdhY3ktdHJ1bmsKKzE3NTY2IDE5MjIzYmJmMWFhMTllNTUwYWU1YTJlMmJhMDMyMzY3YjVlNmEyZGYgbGVnYWN5LXRydW5rCisxNzU2NyBhNjk3MDQ0OWRmNDI1YTVmNGRjNTNjNzU4YjEwMDlhOTY1ZWU5ZTc2IGxlZ2FjeS10cnVuaworMTc1NjggNThiODMyYjg3NDVlZTJlZTYzZWI2ZTc4ODFlZWRkOGY3OThmZmIyMyBsZWdhY3ktdHJ1bmsKKzE3NTY5IDJlYzU5YTExZDNjNjFlMzE2YWYyMjVmNjNmYTA0Yzk1NTA1YTRkZGQgbGVnYWN5LXRydW5rCisxNzU3MCA4MzBlOGVjZTY1NjM5YjUzYmRlNTZhZDUwNWY5NDBlZmRhZDBlZTM1IGxlZ2FjeS10cnVuaworMTc1NzEgNWFlMWQ4YTlmMWRkOGVmZmI3M2U0NjI3YTY4NjM5ZjE4N2YzYmY0MCBsZWdhY3ktdHJ1bmsKKzE3NTcyIGMzYTI3YjZlYmUxYmNiMWZlMDI1YjAxZWMyOTliNWUyYWY5NWNiYTcgbGVnYWN5LXRydW5rCisxNzU3MyA2OWNhNDZhZjQzNmE2YzIzYjRlNGJmNDFiYTdjM2QzZWQ1MmM5YmM4IGxlZ2FjeS10cnVuaworMTc1NzQgODcwMjM3MDg5YmEyOGU3NjM1MDc1Njc2MmUyOWMyZThiMmQxMDA4ZiBsZWdhY3ktdHJ1bmsKKzE3NTc1IGQ4Yjc5ZTM5YzQ3ZTE0NDJmZjA5OWExMzE2YmJmMjIwOTliYWU4MTMgbGVnYWN5LXRydW5rCisxNzU3NiA3ZjQ5YzU4NjRmNzc0MWI1MGY2N2Q2OTlhNDJkMzg3OWYyNGU5ZjQ2IGxlZ2FjeS10cnVuaworMTc1NzcgNGQyZTljZjFlYjIwYjZiZGJhMjBkYWZhMDFmZjFiY2UxOWQ4Y2Q2NCBsZWdhY3ktdHJ1bmsKKzE3NTc4IGMwNGFhYzE4NjU2YWIyOTgzYTE4YmE5YWUzNDBkNDYxNDY3NzQ1NmIgbGVnYWN5LXRydW5rCisxNzU3OSBhNmY4MDEzYmJjM2QxNmYwYTU5NGVhM2M3M2QyYmE4M2E0ZjkxOGVkIGxlZ2FjeS10cnVuaworMTc1ODAgMDZiYjVkNWQ4OTkyN2Q1NjUxY2YwMTk3OTAwNTlmNTQzNTBkODMxMyBsZWdhY3ktdHJ1bmsKKzE3NTgxIDE3NjY2MGZmMGM5NTk2Njk0ODkwODhjNDI0NDUxMzM3Mjk3NjVkNTYgbGVnYWN5LXRydW5rCisxNzU4MiBiZjQ2ZjE4NWM1ZTRjMGMxNjI2ZmRhYzQ3MmM0NTNhZDMzYzk0Yzk5IGxlZ2FjeS10cnVuaworMTc1ODMgZTJjMDNjMzBiMDZkZGZjNmZlYWNjODNkYmY3YTExOWFiMjgzYThkYyBsZWdhY3ktdHJ1bmsKKzE3NTg0IDg3NDljYzg0Nzk3MDIyNjVhMTIwMTA0OTZlZTlkNjFmMmQ1NDU0MTQgbGVnYWN5LXRydW5rCisxNzU4NSBmZmMzMDBlOWQ4NjdiZDFkOTg0MDdmZDA3MTg4OTFhNjNhNzFmMWM3IGxlZ2FjeS10cnVuaworMTc1ODYgZjFhYmUwM2IyZjE2ODQ2NzI5OGRiMGQzNWY4MzcxOTdiZjAyYWU1NSBsZWdhY3ktdHJ1bmsKKzE3NTg3IDMzNmE2MTc5ZTA1OTcyNGRlZjgwMmQ1N2FjYTNkOGU3YTA2ZTgxODcgbGVnYWN5LXRydW5rCisxNzU4OCA4MTRmNDIxZTAzMjY3MzE2ZDdiN2RhNDI3OGIzMDJkODI4YWQ4MTg4IGxlZ2FjeS10cnVuaworMTc1ODkgOGFhMTEyZjllMTMwYzMyZDE3ZmI4OTE4NDg4ODg5YTBjOTc2MDk4OSBsZWdhY3ktdHJ1bmsKKzE3NTkwIGQ0NmEwNDM2ZDZlMTk4MTdmM2ZlMDZmM2EwN2RkZmQ3Y2Q4YTk4YmMgbGVnYWN5LXRydW5rCisxNzU5MSAyYjlhODkwMTYyYjA1MzhlNDc0MmQzYjRlMDQ3MmU2NGMyYWVmZDk5IGxlZ2FjeS10cnVuaworMTc1OTIgN2VkMDgwYjhjZGFjYTc3OWE4ZjdkY2FmZGM3MmNmYzZmZTZkYzhmZCBsZWdhY3ktdHJ1bmsKKzE3NTkzIDIyMTQwNjI2OTVlNzk5ZTY5NjM2NWNlM2JjYmE5OTAwZDUzZDU2MTggbGVnYWN5LXRydW5rCisxNzU5NCA1NzA0MzczNDFhMDlkMDdmZmI2MmQ2ZWFjZDBlZjc3YTY4NWYyNDMzIGxlZ2FjeS10cnVuaworMTc1OTUgOGJiNmRjYTY2ZWNkYzQ4YTdlNWE0YjlmZmI2ZjQ3NGIwMWY1OGUxMSBsZWdhY3ktdHJ1bmsKKzE3NTk2IGMxZGUyYzNlNDVjYTY0NjdhMjNjOWUyNzg1OTNjODhiZGMxOWMyMzMgbGVnYWN5LXRydW5rCisxNzU5NyBkNzMyYTNhMTM5OGViMDhmYmE5Yzc3ZGE2YTNmNTY2NDNjMzczYmE5IGxlZ2FjeS10cnVuaworMTc1OTggOGRiMDk2Yjc4MmY5NzMzZDJiZGVlZWVhMTg5ZDA2NmIwMGJhYjQ2NyBsZWdhY3ktdHJ1bmsKKzE3NTk5IDRmOTVjZjFiMjY2NGY3YzcyYjkxYTRmNmI0MzM0ZjAzZjM0NDkzZTYgbGVnYWN5LXRydW5rCisxNzYwMCA3MDk0Mjc2N2RjODEwYzhiZTUzZjA1ZmU3NDM5NWQ3ZWVlNzliMDM0IGxlZ2FjeS10cnVuaworMTc2MDEgMDI5ZmY0NmM3OThjN2MxMTY1YjNlYzRmMDI4NTQzNDZkMzBkZjJmMyBsZWdhY3ktdHJ1bmsKKzE3NjAyIGUxNTRlNzlmNGQyMmJmOTZiZDE0MzU0N2ZlYzk5ODYwN2M2ZGI3NWUgbGVnYWN5LXRydW5rCisxNzYwMyA5ZjhiMjEzYjg0MTU3NzEyZTE2ODUzMTUzY2Y5YzlmNmU3MDM1ZjYyIGxlZ2FjeS10cnVuaworMTc2MDQgNmYzZmQ3YTJhN2JjYjM4M2JiYTI2M2IzMjllYTJkMGFkYTk4NGFkZCBsZWdhY3ktdHJ1bmsKKzE3NjA1IDAwZTgxNzJhYzBjYjk1NGI1NDg1NmI4NGI3MmJhMzdkOWYxNTU4NGEgbGVnYWN5LXRydW5rCisxNzYwNiBmODk4NGYwM2RlMjAyNTMxOTFmNWE0OTAzMmJlYTNmNmQzZjZkOTRhIGxlZ2FjeS10cnVuaworMTc2MDcgNDZhNjk5MDc2OWQxNzBhYjU2NjA2ZjYwMDNiZGMyMjlhY2MxZjUxYiBsZWdhY3ktdHJ1bmsKKzE3NjA4IDlmZmNmNzQ5YzE1YTlmYmJjNjU4ODE1Y2FlYmRlZWFlZTZhMzVlYWMgbGVnYWN5LXRydW5rCisxNzYwOSAyZjc3Y2I4NTQ3YTFjMDE0MmY0YTFlNmVlMGY0MzNmNWVlMTA4YjYxIGxlZ2FjeS10cnVuaworMTc2MTAgOTMyMDcwNzZkNjEyMThkMGNlOWQ5ZjZiMGY0NzQxMGNiNTU0ZGZhOCBsZWdhY3ktdHJ1bmsKKzE3NjExIDZlOTMzMWU2OGEzYmQ3OGU5Zjg0NWU1MmFjNTQzZTJiNGM1N2I3YmUgbGVnYWN5LXRydW5rCisxNzYxMiBiNGVhNTc4NzBmMmFhYzU5ZDIwY2ZkMDMzODkzYTY3OTY1YmZkNTA5IGxlZ2FjeS10cnVuaworMTc2MTMgYTg2NTY4ZjU0Mzc1ZGRjNDgyNTA1YWY3NDMxN2NlMGZmM2E1MjlhZiBsZWdhY3ktdHJ1bmsKKzE3NjE0IDVhOWRmZmZmMGRhMmI0NmQwMzAxMjkyMGNkMzQxOTkxMjZiMTU3M2IgbGVnYWN5LXRydW5rCisxNzYxNSBiNTQ1MWE2ODcyYTI5OGExNzQwYzRjNjJlYzEwOTNjOTkwOTUzNzUwIGxlZ2FjeS10cnVuaworMTc2MTYgYzU2NmFjOWM1MmQ3OTJlY2NkNWIwZjgwNzhiN2Y0MTViZGMyNTAxNCBsZWdhY3ktdHJ1bmsKKzE3NjE3IDVmNjM4YTI5OTg4OGM3MDRkN2U0MmRlZTU4ZDg4NzdjOWQ2MzZhYjkgbGVnYWN5LXRydW5rCisxNzYxOCBkMjcwNTg0MDQ5ODEwNjM2Mzc0YTYxYTcwZTlkNTgzMzk0MDUwNDU2IGxlZ2FjeS10cnVuaworMTc2MTkgODI4ZWY3ZWNkMWY3NmNkODMzYWM4ZWVlZjkxMzA5OWVjMTk2NjU1MSBsZWdhY3ktdHJ1bmsKKzE3NjIwIDlmZTVjODJjNGM4YTBiOGM0YWU0N2I2YzdhNDNkMTcxN2IxZmQ3ODQgbGVnYWN5LXRydW5rCisxNzYyMSA3Mjg2MGVmMDMxNzE0ODY3MWZhZTcwYTJmZWJmYWNmNjFhZWM0ZjBkIGxlZ2FjeS10cnVuaworMTc2MjIgNjBjZTM3ZjA2NmQ4Y2VhMTA4MmVjNmU2ZDJkYWVjMzU4NWE2NDhmYiBsZWdhY3ktdHJ1bmsKKzE3NjIzIDkyYWVlMzFkNzYxMzhiYTc0ZGQ4ODI4YTIyYjIyZDMzMGJkOGVlMGYgbGVnYWN5LXRydW5rCisxNzYyNCBhYTE4ZTUyMzliNDY5YzNiZjIwMWFlNWIxN2NhODFhN2JjNDRmZTQwIGxlZ2FjeS10cnVuaworMTc2MjUgM2ZmYWNmMWRjOGYwNWY2ZTlmOTBkMmQwNzY1NDlkMTdjNTM1YjQ2YyBsZWdhY3ktdHJ1bmsKKzE3NjI2IDEzMzAwNzY0NmZiNDc3MGY3MjRjOGFiZDA1YzE4YWRmN2NjNGMxNWIgbGVnYWN5LXRydW5rCisxNzYyNyA2NDg2M2M1NmNlOGUzZTkwOTI0NTIyY2RlZDFhODVjZjI4NGU5ZDY0IGxlZ2FjeS10cnVuaworMTc2MjggYzVlYzBiMTFmOGM5NTgzOGZmZjFkNjM1ZjVlMTY4YjY0MzJiNTFlMCBsZWdhY3ktdHJ1bmsKKzE3NjI5IDUyMTc0YjAwMmYxZmYzN2YzMGFkNTUxMGNiZmFjOTEyNTdiMzg4ZjYgbGVnYWN5LXRydW5rCisxNzYzMCA3NDU2Yzk3Yzk5ZWZhMDY4NjQ2ZDhiZGI3ODE0NzRhYWU2NzM1MTZjIGxlZ2FjeS10cnVuaworMTc2MzEgMTc5ODc3MGNhMzZiMjBhYzc5ZWM4ZTBlZTczZWI4ZDJjZGRlYmYwYSBsZWdhY3ktdHJ1bmsKKzE3NjMyIDZiNzcyYzUyN2NhNzRjZmU3MGI5NjFjODU1YWFlMmFkNjBkZDkyZjAgbGVnYWN5LXRydW5rCisxNzYzMyA4ZmFlM2Y5MTE2MWY4ZWI0ZGIyZDU0NDhlODgwMjI5NjRmN2VkODY5IGxlZ2FjeS10cnVuaworMTc2MzQgN2JhNDkzYmMyNGEwYzBmODFmNDY5ZmZhMmE5ZDY0MjA5ZGQ0YWYyYyBsZWdhY3ktdHJ1bmsKKzE3NjM1IDA2NGU0MzRlNzQ0ZjE3MjQzZjBmMjcxMzY3MDY2MmNkNzMzY2FmNGYgbGVnYWN5LXRydW5rCisxNzYzNiAwODE2NzFjZWY3YzFiNmRmZDE4NzYyZGY2ZmNhMzNjNDczMjQ1ZmI5IGxlZ2FjeS10cnVuaworMTc2MzcgM2MwMWY5MjFjNDUzZWMzNjg0NjQ3MDMzOTVkNTM4YjE1ZDhmMGIxNyBsZWdhY3ktdHJ1bmsKKzE3NjM4IDc3ZWRkZGRiYjdjY2Y5NDE4NzY4ODc4MjNmNWJiMDc3YmY2M2M0MWEgbGVnYWN5LXRydW5rCisxNzYzOSAwOTg1ZGRmZDQ0MmJlOWIwODgyNjA4MTNjNzdkMTgwYjc3MThlMjRhIGxlZ2FjeS10cnVuaworMTc2NDAgZDBiNzc3ZWM5ZTAyN2FkYzFiZmY1ZTI0NDMzMDUxYjY5ZDk1N2NkYiBsZWdhY3ktdHJ1bmsKKzE3NjQxIGFkMGQ5MzJjY2UzMmQ3NjNlN2RkOTgxNDM5OGYxNDdmYWM0YmIyMWUgbGVnYWN5LXRydW5rCisxNzY0MiAxZWRiNmI2ZTNiNWI1OTQyMzc2ZTg4MWY0ODNmYmZkZDc2MTdjYzllIGxlZ2FjeS10cnVuaworMTc2NDMgMTc5ZTA5ODIzOGU4MDk2MzliZWVjNzAzNDg2ZmZlMjExMzg1NmFkZiBsZWdhY3ktdHJ1bmsKKzE3NjQ0IGJlMmRmOTkzNWVkZDhmYTFiYjEwOWRjNjhhNGExZmU4NGRhOGM2MTQgbGVnYWN5LXRydW5rCisxNzY0NSA0MzI5M2NmNzUzYzE1YzAxYmY1OWFkYjc1OTEzNzg5ODg1MGJhMGQ1IGxlZ2FjeS10cnVuaworMTc2NDYgZmY4OGM2NGNmZjJlNTE5NWEyMWNkOGUxYzQwZmNhM2MyOTQ5ODc0YSBsZWdhY3ktdHJ1bmsKKzE3NjQ3IGFmYmFkYWM2MGZmNzRjOGYwMTQxMWVmOTNjZDE1NzE2M2Y2YzkyMmMgbGVnYWN5LXRydW5rCisxNzY0OCBmZmQzZTlkYTg5YjBlYjhmNDQzMThlMzE2NGM1ZmM0ZTFkMGUwNzZmIGxlZ2FjeS10cnVuaworMTc2NDkgYzM2MDJhZTQ5ODkwNjlkM2E1NmM2NmMzZGI3Y2MxYmYxY2U3OGRlNCBsZWdhY3ktdHJ1bmsKKzE3NjUwIDdjNTc0YmZhNmUxMzhjZjNkMmQ2YTYwZTgzMTYxNmI1MTgwYWU1MGIgbGVnYWN5LXRydW5rCisxNzY1MSBkNjgyOGRkOWE5MjcwNTk1MTM4M2VjOTQzZDRjMmM5MGJmNTZjODE2IGxlZ2FjeS10cnVuaworMTc2NTIgYTkwZGFjNGJmODhhMjRhMTAwYjA2YzdkZDUxYmM0M2IzNzA4YTU4MyBsZWdhY3ktdHJ1bmsKKzE3NjUzIDNlM2MyZWZjNzljNzNjMDFjOWNlZmM3MmQ2MjNlOWIzOWEyNWVhNjggbGVnYWN5LXRydW5rCisxNzY1NCBjZjlkOGJmNTZkMTQ1MDc1ZDk0MTE5MmFiNjMyOWU4MTgyMDZmMzFhIGxlZ2FjeS10cnVuaworMTc2NTUgZmNhNWY4ZjFhOGY0NzFlOGQ0N2NkYTkyMGZlZWUwOTMxNWZjOWEwYSBsZWdhY3ktdHJ1bmsKKzE3NjU2IDI1NzQyOTU1NDVmZjdjMTYwZDljYTNmNmQ4NGE1MzY3YWZjZDgzOGMgbGVnYWN5LXRydW5rCisxNzY1NyAxZDc4MDMzYTUzZDc3MmEyNzY4MGUzYzEwZWQyYTQ4NDE5YzI5MDEyIGxlZ2FjeS10cnVuaworMTc2NTggMjk5MDJmNzc0OGZhNjc4ZTliZjRhYmQ3ZjU1ZDMwYTY4ZjhkNWU5MiBsZWdhY3ktdHJ1bmsKKzE3NjU5IDdkYTM2ZjZmZDU0NGJhNzdmMjUxZGVhMDlhMjc3M2Q4MTBiY2I2YjYgbGVnYWN5LXRydW5rCisxNzY2MCA2OTg3M2EzMGI3Yzk5NzM4NDAxNTZkZDU1NDEyOTJjZWYwNmVkOWRlIGxlZ2FjeS10cnVuaworMTc2NjEgNzQ2MWVkY2QyNDlkNDUxMjg0NTc0Nzc3ZGEyNjcwODBiNTRiMDk5ZCBsZWdhY3ktdHJ1bmsKKzE3NjYyIDZkYjY5NTJkODg3YWM5YjU3N2ZjM2NhZDMwM2E0Mzc4NzY5MjQ2ZjAgbGVnYWN5LXRydW5rCisxNzY2MyAwM2VlYTdlYTdlNWNiZGIyZDJhZDgxNWQxMjBlZDRjYWY4NzhhZGMyIGxlZ2FjeS10cnVuaworMTc2NjQgNGQxMGExMzU2OGFhM2Q5NTExYTZhMjQyZjFlYmU4NDNiZDM3M2UwOCBsZWdhY3ktdHJ1bmsKKzE3NjY1IDUyM2ExMmVkMzFmMGRlM2MxNzkxZDc0NDRmYmJmOWQ4Y2U3MGZhNGQgbGVnYWN5LXRydW5rCisxNzY2NiBmNTY1M2FhZTFjYmQ3Y2M3MjA1NjUxZmUwMDQyODgxNzRmOTBkZjg0IGxlZ2FjeS10cnVuaworMTc2NjcgZDU0M2RhYTE1ZDcxNTg4NmQ2YjY2ODJjYTc5YWM5ODQ4Y2NjMTllYSBsZWdhY3ktdHJ1bmsKKzE3NjY4IGI3ZmIxMjE2ZjZiNjIyMjI3M2ViMzFkZDFiNzk3YmE0YTFlNjZkYTAgbGVnYWN5LXRydW5rCisxNzY2OSBiNTZhODgyNzdlOGNlZjU5ZWMxOWI0OTkxMzczODUxNjcwOTBhYjZlIGxlZ2FjeS10cnVuaworMTc2NzAgNGZmODRlNzM0NTg4ZmFjZDE4MWViYzFkYzE5NmYzYTgxYzgyZGMxNiBsZWdhY3ktdHJ1bmsKKzE3NjcxIGI0MTNlODdlZWVkNDIzNzM5MGFiMmEzNWVjMTg2NTAyOWZkMjExODQgbGVnYWN5LXRydW5rCisxNzY3MiAwZGQyMDRkOTM2ZTE2MzUyMjY2ODRhNzllNTI5MWVmMTRkNzJmZjAwIGxlZ2FjeS10cnVuaworMTc2NzMgYzk1YzY3NmIxODQwNzAwNDViZWExMjEwYTkwZmIzOTc5Zjk2YThhMSBsZWdhY3ktdHJ1bmsKKzE3Njc0IDE4MmQ4MjRmMmI0NzNiZTA4Mzk5NmVkNzY2MjA3MDUyNjM2MGIzMjYgbGVnYWN5LXRydW5rCisxNzY3NSAwNzk2MzQyMWZhZmNjOWZlNTQ0ODUwMTJlMWFhYjIzZGVkNDRmNDY4IGxlZ2FjeS10cnVuaworMTc2NzYgYzUzNjk1ZjNkODQwZDE0YWMzODBlYWM5ZWE2MGJmMTI0MTVlY2I2OSBsZWdhY3ktdHJ1bmsKKzE3Njc3IDNlMzkzZjliMTI5MzkyNjgyMDdlMzliMzBhMzY1ZTkzZDE5Y2QwNGMgbGVnYWN5LXRydW5rCisxNzY3OCA0OTQ0ZTM4NTlhODYwOWVkMzYwN2Q1Mzc1NjZhYzljOTBhMzVmM2E4IGxlZ2FjeS10cnVuaworMTc2NzkgYTEwMzMyODNhMjVkYzYwYmRmNTViMWZjYTA3NzNkY2UwNzczY2UyZCBsZWdhY3ktdHJ1bmsKKzE3NjgwIDlmZDAzMGFmMmZlMDM5YWNlNGI4YjQ0YjUxMzhhNGU0MGEwYWFjYTEgbGVnYWN5LXRydW5rCisxNzY4MSA5MmRjZWEwODU5MzA1ODc2ZmYxNmMwZWUyOGM5ZjEyMDM0MDgxODBjIGxlZ2FjeS10cnVuaworMTc2ODIgYjFhMGZiNTU0NDU2Y2FlMGEyNjczNjIzNTg3MWI5MGM0MDA1MjYxNyBsZWdhY3ktdHJ1bmsKKzE3NjgzIDlmOTZjOTJmMDNlM2JlNmMzYjE2ODdhZmI3MjFlMjY3OWNhMjVmY2QgbGVnYWN5LXRydW5rCisxNzY4NCBiMWYyMjBmNjM2ZWRkMWU4Y2MwMWNhMjg3N2Q0ZGZlMGUxZGM1MjY2IGxlZ2FjeS10cnVuaworMTc2ODUgMDcyODhkMmRiNTk2NDI0NmFjYTM5NmI3NGY1NmM3ZWJjZTMxYjFiNyBsZWdhY3ktdHJ1bmsKKzE3Njg2IDFhMWI3OTVmMGM5YjllZGQwZDg0MjFlNjllNTVmN2VhYmVjNTYyZWIgbGVnYWN5LXRydW5rCisxNzY4NyA1NGFkYjdiNGY4Yzg0ZGU4ZGM3YmI1M2JkODY0ZTdkOTNhMGI1MmRiIGxlZ2FjeS10cnVuaworMTc2ODggZWU4MTNlODQzZjNlNTcwZTM2YzdlOTc0NDBkMDI4MmI2ZjkwNzI2YiBsZWdhY3ktdHJ1bmsKKzE3Njg5IDFkNjI3MjQyZTI5YTJjZmI2YWNkY2RlODZkODE0YTkzYzJhMWFmODkgbGVnYWN5LXRydW5rCisxNzY5MCA5NmQzMWExNDM4NTdjZjhiNWYzNTQ5NGI3ODMyYWMzYzMwNmQ1NWEwIGxlZ2FjeS10cnVuaworMTc2OTEgNjdlMGZmNGFhN2I5NzdmMWFiNTY1YTFmNWMwM2Q2M2QzMDliYWRmZCBsZWdhY3ktdHJ1bmsKKzE3NjkyIGI3Nzg3YTkwNTJlM2QwODFkMDBmNjk4ZjE4NzQzNjk1YzE4NWVjNzcgbGVnYWN5LXRydW5rCisxNzY5MyA3NmFhZDViMDY1NDNhZmM3NDQ0Y2I3YTc5NmJjYjc2OWMxZTYzNzgwIGxlZ2FjeS10cnVuaworMTc2OTQgM2IwY2EwY2MzNzUwZTIyMzNhMWJjODQwZTkyMjg5Y2MzNTI4ZDhiMSBsZWdhY3ktdHJ1bmsKKzE3Njk1IDYyNWE5YTY5NTQ2OWI1Y2M0YmUzYzk1NGJiN2RkYzU1NDcwZGNkZjIgbGVnYWN5LXRydW5rCisxNzY5NiA2ODE4OTI4NTY1OGYyMjg4MGZmNTFkYWM5OWQ2NzU3ZDE1ZDRkOTBlIGxlZ2FjeS10cnVuaworMTc2OTcgNDYwYWIxOWEzMjg5YmI5ZjczYWZjYzEwMWU1YTJhZmYxZDc3NDA5OCBsZWdhY3ktdHJ1bmsKKzE3Njk4IDk0YzI0NmU2Mzk5ZDIyMDFhMzhkMWY2OTFiMTc4NDg1ZDhlM2EwZWQgbGVnYWN5LXRydW5rCisxNzY5OSBlN2Q2Nzg5OTA4ZDcwOTM0YjNjOTJkYWExYTFhNmQxMDBlOTE0M2ZhIGxlZ2FjeS10cnVuaworMTc3MDAgODhkM2E4OTc0NDA5ZWU3MmM2MjkyNTdlZDc4ODg1ZDZjYmY0YWZkZSBsZWdhY3ktdHJ1bmsKKzE3NzAxIDQ1ZWM1ZGY5YTYyZDMxZWFkNTUyOWYyYzdhM2Q2Yjg0YjA1YjQxNWUgbGVnYWN5LXRydW5rCisxNzcwMiBmNmU1MDFmYzMyYzc3MWRmZWY1NGUxMTk1ZTFiNTk2ZjdkZGU5NTcyIGxlZ2FjeS10cnVuaworMTc3MDMgZTUyYzI0MzE5YWVmNTE4YjQzMGU3NzcwNDQ1OTliMTJhNzc0YmM1MSBsZWdhY3ktdHJ1bmsKKzE3NzA0IDkyY2RiYzBmNTVkNTAzMmY2NGY3YWRkMGQyNzYwMDZhZTljZWVmNjIgbGVnYWN5LXRydW5rCisxNzcwNSBjOGNhOTMxMDdmMmVkYzRmZjg5ODY5NjgzNzUyNjU5NTBlOWIxNzYzIGxlZ2FjeS10cnVuaworMTc3MDYgNTQ0OTMwMmM0ZDJlMTQ4ZDQ3ZWQxOWVmMDM2MzBmNGMxZmQ4MWNlNCBsZWdhY3ktdHJ1bmsKKzE3NzA3IDQ2M2ZhZjAxNjg1ZTcxMjcxODMyNTcxYmU1ZGUzMzc3Y2ViNDEwYWUgbGVnYWN5LXRydW5rCisxNzcwOCAxMjkzNDkyZGZlNjAzZWE0YWI3N2E5MjhlMzVmYTM1NjdmNjhiZjgwIGxlZ2FjeS10cnVuaworMTc3MDkgODliYzg0NzVmYzg0ZTE3MGQ2NjA0Zjg2ZjVkMTViZWFjYmVkMzFkYSBsZWdhY3ktdHJ1bmsKKzE3NzEwIGFlMTJiOGMzYzNiMzNhYjZmMDU4YTdlNDJjYTgxMTQ4YjM5YTkzN2IgbGVnYWN5LXRydW5rCisxNzcxMSA4M2FmZjFlYTViNzBkZTY1MjRmZGExMTcxYzhlYWJhMzdlOTFlMGExIGxlZ2FjeS10cnVuaworMTc3MTIgNmVkYTZhMWE2OTNjNTQ3MjVlNTE3MWNiYTg2ZDg3NjFiYTYwN2MwOSBsZWdhY3ktdHJ1bmsKKzE3NzEzIDE2NjExOWVjMzE5NTViNTllNTdmZTNjYjM5NzRiMTI4MmNhZmMxMjEgbGVnYWN5LXRydW5rCisxNzcxNCBlOTc2NjBkMWYxYWFlYjEyZTNjZjBhNTY4ZWM5OWMxMjY0Mzc1YzA5IGxlZ2FjeS10cnVuaworMTc3MTUgMThiM2RlZjZjNGI4Mjc2MmMzNjAxOGY2OWY3NDA1MjM3NDQxNWQzYiBsZWdhY3ktdHJ1bmsKKzE3NzE2IDA5YzE0YWU1YzJmNTQzNTc4YjhjYzE5NjVlYmQ1YTc1NzA3ZjRjOTQgbGVnYWN5LXRydW5rCisxNzcxNyA1YjhjZGE2ZjNiNWY2OWVjMjQ3MzA1YTA0ZTkwZDNmYTAzNWJlNjQ4IGxlZ2FjeS10cnVuaworMTc3MTggYzNmMGQ2ZjE5ZjdiZmZjM2RkNjM0MGZkOTc5OTkyMWZhMTJhMDViZSBsZWdhY3ktdHJ1bmsKKzE3NzE5IDU2ZmRhNGU5ZWNlOWY3YzIyODg4MTA0ZWUyYzM5MWMwNThkN2M1Y2QgbGVnYWN5LXRydW5rCisxNzcyMCA1YmFmN2Y3NDM5NmYxZGFmYzJmOGFmYTZlMTA5NmE2ZWZjZmJiNTBiIGxlZ2FjeS10cnVuaworMTc3MjEgNGMwODlhZDI5ZWVhYzQ1YTRhOWRkNmFjZDk1YmIxZDgwNmRhNWYxOCBsZWdhY3ktdHJ1bmsKKzE3NzIyIGM4OTJlNmFhOTk5NzZjODMwMTkzZjQwYzRhNDdhYzk2NzgxMTFhYjEgbGVnYWN5LXRydW5rCisxNzcyNCBiNjgwMDZhNTY0NzExNmIwMWM0MjYxMTQ5Mjg3NzhjMTMwNDMzNDliIGxlZ2FjeS10cnVuaworMTc3MjUgMjVkZGQzZGM3YTdhMmU0ZDU3YzMyYzQwZTliMGIxNDRiNDlhN2JjOSBsZWdhY3ktdHJ1bmsKKzE3NzI2IGUzNWEzYTc3MmRjYTllZmIyNTY4NjVjMmYwNmNkNzFiMDQxMWQ0Y2YgbGVnYWN5LXRydW5rCisxNzcyNyBmYjZiNTEwMzNjM2I2MGUxMTc2ZTE1OGQ3M2IwZTRhZjFjZjY3MTQzIGxlZ2FjeS10cnVuaworMTc3MjggYWMxNGI4NmYwZjhiOGY4MGVlYTUyZGEwODUwYzU5NmI0M2M2ZjRkYiBsZWdhY3ktdHJ1bmsKKzE3NzI5IGE5M2IyZjE3NmE1ZTJmMTVlYzkwMWU0ZWQxZWNjYjQxZGY5Y2Q4YTQgbGVnYWN5LXRydW5rCisxNzczMCA2NDMxY2Y1YzhhMDA0YzY2NjUxYzRmNDc5MDYxMjA4YTU1M2RmMzY5IGxlZ2FjeS10cnVuaworMTc3MzEgMTdiNWM0M2MwOGE2YzRkOGFlZjBjNmQ2MWY5NzZmYjIzZGU2NzdlMiBsZWdhY3ktdHJ1bmsKKzE3NzMyIDczZmRlNDQ1NjNkMWVmOTI4ZDFlZjFhMmM2MGI4ZDY1OTA5NWVkOGYgbGVnYWN5LXRydW5rCisxNzczMyA3OTg2YTQ1NTM5MzBiMjYzMDFlNzBjMGRjNDhjM2E4ZmJhNTYyZTY3IGxlZ2FjeS10cnVuaworMTc3MzQgNjhlMjNmMWZmNWRiN2EyODhjM2Q2ZmVkNmQ5YTliY2E5MTg4OTIzMyBsZWdhY3ktdHJ1bmsKKzE3NzM1IDI4MDk2NjJhZTljZTE4Mzg0ZTdjYWM2YjdjZDdkNThlNzkyODFhYjAgbGVnYWN5LXRydW5rCisxNzczNiAzYTU5YTA3MzNkZjhjMTZmYTNlMTZjOTllMGFjNGVmYTA0ZGE2YThjIGxlZ2FjeS10cnVuaworMTc3MzcgNWQwODkwOTVmNDBmNWNlNjVkYjBjZDQ2N2U3NzFkMWU4ZTg3YTIzOCBsZWdhY3ktdHJ1bmsKKzE3NzM4IDUyOGI1MmJkNGJjMzJlZDIzZWJlZjM3NzBiZjZiOGQ0NGVjYTAxZmUgbGVnYWN5LXRydW5rCisxNzczOSBkNmJkY2IwODk5ZGRhOTBkZjMxMTljNmIyZjYyZmI2OWNhNWYzZTM4IGxlZ2FjeS10cnVuaworMTc3NDAgOTY4YWU1NWZlNmVlYWIyOGQwZmM4ODJkMWE3MGNmZmU2MGNkOGJjZSBsZWdhY3ktdHJ1bmsKKzE3NzQwIDU1YmJhMTk3ZDQ4NzBjZGFlNjJhZWNhMDBlMjAyNDBhNzU2Yjg0ZjggbGVnYWN5LXRydW5rCisxNzc0MiBmNjU3OTMwZmQyNzRjM2I4MWYyZGE1NDA4YzA1MDUyMmJmZTk3MmQxIGxlZ2FjeS10cnVuaworMTc3NDMgNGZkZjY2MDBkOGFhNzAxMGMyOWZlMjQ1NjY1Y2ZkNDM0MzBlN2I0YSBsZWdhY3ktdHJ1bmsKKzE3NzQ1IDY1Mzc0OTAwM2RiOTc2MzkwMmNjODIyMWMzNjg1NjcyYmNmNzY3MDMgbGVnYWN5LXRydW5rCisxNzc0NiBjN2Y1NTU1MWZlMzFiY2NjMGIxYmEzODdkYWYzZTllYjAxODM5OTY0IGxlZ2FjeS10cnVuaworMTc3NDcgYWZkN2VjZTM3YzQ2OTVlZTY5ZjU5Y2JlNjIwNzk3YTljODM1OTQxZCBsZWdhY3ktdHJ1bmsKKzE3NzQ4IGU0NjQxZDE5MzIyMGYzODZjMGQ5N2E3Mzg1Njc0ZDg4ZDE3N2U4ZDMgbGVnYWN5LXRydW5rCisxNzc0OSAxOTY3YmUxMzU5ZWU1OThiYTkzOGQxMWI4ZjFlNjVjYTUzNjE4N2Q0IGxlZ2FjeS10cnVuaworMTc3NTAgODM0MDYyZjY5NWUwZjIxYzc0YjkwMTdlYTkyNjYwMDRhNzc1ODNiOCBsZWdhY3ktdHJ1bmsKKzE3NzUxIGRlMTg5MmVhY2NmZmFjYWJlZWMwODg5MDU5ZmU4ODkxZjcxYjZmMTcgbGVnYWN5LXRydW5rCisxNzc1MiA0MjBkM2M1N2VmZWM3Mzg3NGVkYTdiMmRmMDE5NWFiNTY2MDA5NGM1IGxlZ2FjeS10cnVuaworMTc3NTMgYWQ5OGMxMzY0NzVlN2IyMzczMmI5YmQ4ODdlZGNlOTE3M2Q1ODAzNiBsZWdhY3ktdHJ1bmsKKzE3NzU0IDQxMTFjZjIyYTBhZDk0MWNhMmU0NTI4ZDllZjk1MDQzNDRmYzgwNDMgbGVnYWN5LXRydW5rCisxNzc1NSA0YmVhNGY1OWM0ZTQzYzljNWM0YTYyNjUzYjhmZTQwZGZmN2VhZDhlIGxlZ2FjeS10cnVuaworMTc3NTYgNjA2YTgwODM0YTg2MjIzOGM3Y2E5N2NlNWE1YmI0NGE5MzYzYmYzZSBsZWdhY3ktdHJ1bmsKKzE3NzU3IGY5MzJjMTI4Mjc5YmNmM2ZjNDc3NzZmNzA4Y2RkNDdkZGY0ZDkyYmYgbGVnYWN5LXRydW5rCisxNzc1OCAyOTFhYmViZWE1NWIyZWQ3YzQwOGUxYTA5ZDU3NjQyOTY5ZGJmMDkwIGxlZ2FjeS10cnVuaworMTc3NTkgZWM3NTZkNThlOGE3MGVmYTc3NWRiNGY1MzVlYTI3NjAyNzQ4MWVhYSBsZWdhY3ktdHJ1bmsKKzE3NzYwIGY0YTFkM2Y4ZjI2Mjg5NzcwM2IwNWYwZTVmYzc3YjhkYzY5MDNlYTcgbGVnYWN5LXRydW5rCisxNzc2MSBiMTVmY2U4NjhlNTBiNzdhMDY5OTQ3ZWY2MTJmYjhiOWU1NWNkMjcwIGxlZ2FjeS10cnVuaworMTc3NjIgNDU5NjdmZjFiNmRjMThlNTcxMGQwNjAxZjU0ZjZkZmM3OGU3ZTFkMyBsZWdhY3ktdHJ1bmsKKzE3NzYzIGEwYTEzZjEwY2U0YmY1Y2VjYzI1ZGNjMGMwMjZhMzUwYzg2MzMwMDQgbGVnYWN5LXRydW5rCisxNzc2NCBkMDEzOTRiMGFhNjk4ODBhNGI1ZDU5YTliZDhkYWE0Y2MwM2ExODEwIGxlZ2FjeS10cnVuaworMTc3NjUgOGY1OWJkOTU3OTUyNTc3NjhlOWNlZjI2MjcwMzdmYTZmN2E2ZWU5ZSBsZWdhY3ktdHJ1bmsKKzE3NzY2IDEwMTg3MjdmMzIzMTc2Y2FmZDBlMmVjOTFhOWEzZDIxM2ZlNjU4NjIgbGVnYWN5LXRydW5rCisxNzc2NyA2ZmIyYWY3NjY4OTJlYjg3YmJiM2Q2YzQyYzBlMjAyMWNhMmUwZmQ0IGxlZ2FjeS10cnVuaworMTc3NjggYWY4ZDc3YWE5MGY4ODU4NzBiN2Y0ZWU5MzJjZTU5ZTg3NDg2NTJlOCBsZWdhY3ktdHJ1bmsKKzE3NzY5IDJjZGY3YWM5MTYyZDkzNTA0ZGUyZWRlNjRhN2Y1ZThmNDJjYTQ2MTIgbGVnYWN5LXRydW5rCisxNzc3MCBhMDYyNzQ5YjgwZjhjNTAzZWU0Y2RlZTdlZjI4MjIxODBjYjkwOThhIGxlZ2FjeS10cnVuaworMTc3NzEgNzljZGVlZWVmYWZhNTc1NWU5MzEwYmM5ODZmMGM1ZThhMjQ0NTgwMSBsZWdhY3ktdHJ1bmsKKzE3NzcyIGVhMmJhOTEwZTVmMDVmZTZjYWNjYmMwNjYxYjI0MWIwYThjZWEzZTIgbGVnYWN5LXRydW5rCisxNzc3MyBhYWQyYjVhM2Y3YmY0YzM3YWEyMTdlMjVkZTRiNzZiMjQ0MDI4NTU5IGxlZ2FjeS10cnVuaworMTc3NzQgY2VmYjE5MTBhZDBkN2I4NGRmYjNmZDk3Y2FkNzRhZjg1Mjc5ZDgyZCBsZWdhY3ktdHJ1bmsKKzE3Nzc1IDkxNGFlN2Y5YzY0Y2Y3ZjAwNjE0YjM5YzcxYWVjMDRkYjY3MTRkOGEgbGVnYWN5LXRydW5rCisxNzc3NiA5NWIyMDAxOWI3MTE0NTRjNDc1N2M3Y2Q2NWJkNTcxNzFkMzIxODBmIGxlZ2FjeS10cnVuaworMTc3NzcgZmFkODI0N2VmMGE1MmRhNzM0YzcyODhmNWViOTAxZTQ5ZjJkYzVjMyBsZWdhY3ktdHJ1bmsKKzE3Nzc4IDNkYjhiODAzMWE2YTQ3NDQxODQwNTk4NDk3YmRjNmM5YjZkZjdiNmQgbGVnYWN5LXRydW5rCisxNzc3OSA5YTg3MDBmZGM1MmJlODA2MGYzN2RmOTdiZDc2NDNiMDllYjlmY2RhIGxlZ2FjeS10cnVuaworMTc3ODAgNzVmM2Q1ZTdiODljYTJlMTg1YWMwMzAxOWYyOTQ1MDlkMzM2ZjZmNSBsZWdhY3ktdHJ1bmsKKzE3NzgxIDE1MzU0MWY4MjRhMzYzOTY3OTI1NzZmMWUwYzY2MjY2ZjhkMWUyYzkgbGVnYWN5LXRydW5rCisxNzc4MiBiNGY3NDQ4MmY5YWZlMTA3ODAzMDY3YTdkZDA2MjA5ZmRlM2NlYmViIGxlZ2FjeS10cnVuaworMTc3ODMgNzZjMWU0MGM1YzVkZTkwNjFlNDYwYTZiOGFkY2VmZjllZGIyZjk5OSBsZWdhY3ktdHJ1bmsKKzE3Nzg0IGM4ZjIyZjE1NDk5ZjhiMTdkZTY0MTYxOTgyMGUxMDI5MmMyOTgxMGQgbGVnYWN5LXRydW5rCisxNzc4NSAyZWEyOTc4NjliMDI3MWUwZWI1MTkyOGU0Mjc1MjllMzAwNmY5N2NmIGxlZ2FjeS10cnVuaworMTc3ODYgYWYxZGU0ZjUwNTA4OWIzNDZjZDQ3ZmM4NWExMzNlY2I2ZTQ2NWJhMSBsZWdhY3ktdHJ1bmsKKzE3Nzg3IDU2MTBlY2QwN2RjMDM2ZTRhYTIxYjYxZWNhY2VmZGNhMTVjZWUwYjYgbGVnYWN5LXRydW5rCisxNzc4OCAwYzkzZDJlMjdhYzA3YzEzMDM4ZGNjN2ExNzgxN2U0MDNjMDFlMmFhIGxlZ2FjeS10cnVuaworMTc3ODkgODI3ZTlkMjFhNzgxNjRkZWZiM2M4YTVlZjcyNjg0MTliYWVjOGRkZiBsZWdhY3ktdHJ1bmsKKzE3NzkwIDcxNWEzZTkyNDczNzE4MjgwNmE5YjUwNzIxODMzY2VhMzVlMGIxNmEgbGVnYWN5LXRydW5rCisxNzc5MSAzZGE5OWYwYzE4NGYyNmJhNGNiZTlmZjQ4ODQ5OWQyOTIzOGE2NTE2IGxlZ2FjeS10cnVuaworMTc3OTIgMTM0ODg1MzlmMDJiZmUyOGJiYWFmMWIzZjQ3ZjkwYWZjNjZlNWM1OSBsZWdhY3ktdHJ1bmsKKzE3NzkzIDAxMWRmMjY0N2Y0MTNkMmQxNWRkODRkNzczY2I4MDQ5MjBmNTk0MGMgbGVnYWN5LXRydW5rCisxNzc5NCBmZDdmODc5YWZmODFjNWFiY2QzZDVhYmJjOTJiZmUxMTQ0YTExOGU0IGxlZ2FjeS10cnVuaworMTc3OTUgYzEyODc1ZGVmYzBlNGUzOTYwN2YzMDRlOGIxOTVhNTdiYmU5NWEwMCBsZWdhY3ktdHJ1bmsKKzE3Nzk2IDE2MjllZjczOGIyZjA5NjdmYjMzOTA0NDk5NTA4YTY4ZGRmM2NlNWYgbGVnYWN5LXRydW5rCisxNzc5NyA5Y2VhNGRiNDFkOWZhZmVlZDRmYzQzZjZjNjQ4ZTcwZGJiOTUxMmYxIGxlZ2FjeS10cnVuaworMTc3OTggZjljZjYxMTA5NmJmNTAyZjhmZDc5YjI1OTU1ZTg2MDBjMzM1NmZiOSBsZWdhY3ktdHJ1bmsKKzE3Nzk5IGUxNWU5N2E2YzE0YTgzNDY1MTgzZjdjOWQ0Y2MxNDQ3YjAyNmViZGQgbGVnYWN5LXRydW5rCisxNzgwMCAxOTkxOWUxNDZmZjhmMzFiNWUzZmJjYTljYjdiNmFlZGRmZTIwMTZkIGxlZ2FjeS10cnVuaworMTc4MDEgNzU5MmY3MjE5YjdjNmNhMWQxMTM1NzVmMjkxYTg5MmNmY2IzZjVhZiBsZWdhY3ktdHJ1bmsKKzE3ODAyIGE1OTYwMGE5NzVkMTI0NzBkMmVkODZmYzQ0NTI0ZTU5NDY4YmRmN2EgbGVnYWN5LXRydW5rCisxNzgwMyA5ZTQ0NWRkY2EyZDc0YTAwMTgyZWE5MjU5NjFjMGJlYzVjZGZhZTk1IGxlZ2FjeS10cnVuaworMTc4MDQgNzNjZWE1OTY1N2JhYmM3ZTYzZDZjZmI2ZTNkYjlmMjUzMzg3OTM3NyBsZWdhY3ktdHJ1bmsKKzE3ODA1IDdhY2I4YmJjMjE1YmI3MmEzMzA4ODYzMmJmZDk5M2U2YTgyMGQwYzUgbGVnYWN5LXRydW5rCisxNzgwNiAxNGI2NDdkNTUwZDM3OTMxYTkyMTA4NWM0NjM5MzYwMzI1MmNhOGViIGxlZ2FjeS10cnVuaworMTc4MDcgZjhiNTI2ZmMzOWY2N2ZkMjY0MTkxODI0M2U5ZWFlOTc4MWE2NWJhYSBsZWdhY3ktdHJ1bmsKKzE3ODA4IDAwNWEwYjRjMzgyZDM1ZjQ1ZGQ2YjJjMTIzNTdiMWM3NDQyN2Y2NzcgbGVnYWN5LXRydW5rCisxNzgwOSA2ZTcwNTI0NzM3Nzg2YjM1ZTI2MjlhZTMzYTg1M2EyMzI3OTgzNTJkIGxlZ2FjeS10cnVuaworMTc4MTAgZDllNjZhODNlNDMzODRhNjM0MWU3NjFhMDY1ZGIxMjBkYjJmN2FhZCBsZWdhY3ktdHJ1bmsKKzE3ODExIDM0MjQ5N2FkOGZlYzk3NjMyZDQwZTI5NjRkYWI1Mzg1MmFiMGRlMTggbGVnYWN5LXRydW5rCisxNzgxMiAxZjlkMjM3NzdmZDAxNzQ0OWViMjg5MTk2ZGM1NGFjOTFhYTE3OTBhIGxlZ2FjeS10cnVuaworMTc4MTMgYzc4ZTc2YTU3MWI2NWRiOTM5MmIyMDEyYjAyYmVmM2I3MTU5NmEzOSBsZWdhY3ktdHJ1bmsKKzE3ODE0IGRiMWNjZTFmZmI2MDgyNjgxMTUzYjYyNjMyNmQ0OGI5OTg5ZjhiZTkgbGVnYWN5LXRydW5rCisxNzgxNSA1MDM4NmM3M2JhMjI1ZDI5ODVmZDI2NTA2NDU5NGJhOWU0OWRkOGYyIGxlZ2FjeS10cnVuaworMTc4MTYgYjAzMWFiY2EzZTkxYWJlMDVkM2UwNjBiOWQ1MjhhMGQ0YTg0MTg2ZiBsZWdhY3ktdHJ1bmsKKzE3ODE3IDU2OTIxNGE0MTgyYzkzZTRmM2MyNjcxYjM5YjVhZmJhNzViZmUxYmQgbGVnYWN5LXRydW5rCisxNzgxOCBlYmFlYjE5ZTAzODA5Yjg4NjFjYmQyY2YxYjFkZWUxYTQ0MGRlNjRjIGxlZ2FjeS10cnVuaworMTc4MTkgOWMzYWVmYTVjZDdmNTkzMmFkMzRmNzgwNjM4Y2EyMmRlYzIyZDZmYSBsZWdhY3ktdHJ1bmsKKzE3ODIwIDczZDA5MzIyZjJjMzYwMDc1NDdmMTU2MGNhOTMzNzg0MTQ5ZDQ0NzEgbGVnYWN5LXRydW5rCisxNzgyMSA1NGVjNWVjMzIzNTJmMGVhODdiM2U0OGFhYThiNDkwMTRkMjI1ZTEwIGxlZ2FjeS10cnVuaworMTc4MjIgMWFhMzcwMDhmZDJjODI1ZTEwYWI3ODQyNTIyZDAzMDJiMTRlNGI1MyBsZWdhY3ktdHJ1bmsKKzE3ODIzIDkzMTRjYzc5ZDZlMTJlN2MxZGFmZGVhNjU0NDFhMTJjNjljNTZjMjggbGVnYWN5LXRydW5rCisxNzgyNCAzMTRlYjhmN2FlMTM1MjlhNTc4ZDZjYmNlODEyMDg5ODQ3ZTcyYjMyIGxlZ2FjeS10cnVuaworMTc4MjUgNTMzNjk0NmI2NDk1YTE2NDBlYmIyZDBiNzk2ZDQ4YWM0ZDc4NjkzMiBsZWdhY3ktdHJ1bmsKKzE3ODI2IGI0MTEyMzhkZTlkMTBmMTJhMTgyYmU1ZDNiNWFmN2IyZjY4ZjRhZjQgbGVnYWN5LXRydW5rCisxNzgyNyA2YWY5YWExNTY0N2Y5OGY3ODc0NzE5ZjhiMGU4OWE0YjQ2YzQzOGExIGxlZ2FjeS10cnVuaworMTc4MjggMzJkMjYzZDQ0N2I3ZTEzYTc2YjViYmEyMDgwMzI2Mzc3ZjAxZTc5MyBsZWdhY3ktdHJ1bmsKKzE3ODI5IDNlZWNkYTJiYTkzYTM4NDY2NjIwMjc2NWEwNGFmMGY3OWUxNzQ2NzQgbGVnYWN5LXRydW5rCisxNzgzMCA0OGI0NWEyODEyNzcwMDE2MTg0ZGRmNGVlZjUwZTZmNDA3OTU1MTQ4IGxlZ2FjeS10cnVuaworMTc4MzEgYzc5MDczNzlhNmJkMjI4NTNkMDY3NDRmZGQ5ZmQxYzhlNDFkMTI2ZSBsZWdhY3ktdHJ1bmsKKzE3ODMyIDI3ZWFiODAzMjc2NjJhN2VlNTVkZmYzYjExMmRmOTg2Yjc3NTU3MDYgbGVnYWN5LXRydW5rCisxNzgzMyA4MzliYTM1YjBhYTMxNDQyODVlNDE5MjAyNWM2YTAxMTc4ZGMxMGQ5IGxlZ2FjeS10cnVuaworMTc4MzQgYjAxMmFlYmJiZTUxNzhmYTBkOTFlY2IxNTBkZTRjM2ZjZDhhYmI4NyBsZWdhY3ktdHJ1bmsKKzE3ODM1IDE3NGQzNGVhYzUxNjNiOWM5NGMxMjI3N2VlM2VkNDAxYzlhMmY3YmIgbGVnYWN5LXRydW5rCisxNzgzNiBlNzlkMDdjMjQ1NzFlMzhlMjE5OWM3ZTliZjJiNjQwMjljZDA3ZDBhIGxlZ2FjeS10cnVuaworMTc4MzcgMjZkMmU0ZjU4YWRjYTk3MGJkZGY5OTg0NDIzY2QzZjQ4ZGE1NTBiYiBsZWdhY3ktdHJ1bmsKKzE3ODM4IDgyMTIzY2UwMjY4NGZlMjUwMWZkYmEyNWIzMTA3Njc0OWJiN2FhOTMgbGVnYWN5LXRydW5rCisxNzgzOSAwZmE1OGZlYTMwY2YyMTZjMjM3ZjJlZjJlY2U4YWU5MWRiMjBhNzUyIGxlZ2FjeS10cnVuaworMTc4NDAgYjYxY2QxYTQ4OTYwM2JjNDc5ZjZkYjJlNzZjZWQzZmI2NWFjNDRlZCBsZWdhY3ktdHJ1bmsKKzE3ODQxIGVjZTZjMTllZGNjMTU1YjRmZjdjNGJmZTY1ZTc0MmRiNTgwYjljZmIgbGVnYWN5LXRydW5rCisxNzg0MiAzZmM2YzVhZGRmMWVjMWFjMjU2M2YwYmZjNTk0NDc4NjdlNDY3NDIzIGxlZ2FjeS10cnVuaworMTc4NDQgYTlkMjRhNTNjNTUzMzRkYTIyYWFiY2IwNjdlMTcyYTU3MzdiOThkNiBsZWdhY3ktdHJ1bmsKKzE3ODQ1IGJiZTA5Y2NjYjQ5YmUwNzA0ZjA4MDA2MWVmNGEzYjg5OWNhMDNkYTMgbGVnYWN5LXRydW5rCisxNzg0NiBlODU3NTRmYTY5MTc0ZmE3MmVjNjE0YjE3MmFjYmEwOWM1MmYwMWM5IGxlZ2FjeS10cnVuaworMTc4NDcgMmI0MjM2NTgwZTBjNGZiYTBlNmY2Zjg4M2ViMWFmMWM5NThiYzA5ZiBsZWdhY3ktdHJ1bmsKKzE3ODQ4IGJiNmNjYTU3ZWI4YjBjOTRiMTY2OTlkOGNiZTQ5ZTQ2ZjUyOWMzZmUgbGVnYWN5LXRydW5rCisxNzg0OSA1ZDQxY2E0OWExMGFkYzJlOGNiMmU5NjhmZjEyNDk0ZDlkYjY3YmQ4IGxlZ2FjeS10cnVuaworMTc4NTAgNGM0OTM0Y2E4NTc5NjIwZTIxYjgzMjdjMGZjMzMyNzJjY2Q0N2E1YiBsZWdhY3ktdHJ1bmsKKzE3ODUxIGZhNWM0ODIzNjdjN2FmNTAzOGRlYmVmZjZlN2M4NDdkM2Y3OTMyZjYgbGVnYWN5LXRydW5rCisxNzg1MiA3ZjRlMjgwNDVkZmI0NTg0MTI0NjI1ODFlNzQ4ZGM2OWJiOTVkMzc5IGxlZ2FjeS10cnVuaworMTc4NTMgZWVjMmViMTIxZGFlMGNjMWQwYzgxZjQ2OTM5YzVmMzkwNjRhN2Q2NiBsZWdhY3ktdHJ1bmsKKzE3ODU0IDVlNGVlZDA2MmI1NGE5ZTZmMjM4MDAxYzI3MDJkNjZhMmY5OTUyNmQgbGVnYWN5LXRydW5rCisxNzg1NSAwYzViMDJjYzU0ODkzOTJhMmNmY2JmOTBiMjc5YTVhZDA0NGEwM2ZkIGxlZ2FjeS10cnVuaworMTc4NTYgYzE2YmRmNTU1Yzc5NzgxMTA4ODc5NmMyMjFkZjcxYzBiZTI5ZjcyYyBsZWdhY3ktdHJ1bmsKKzE3ODU3IDFhM2I1YzhkNjczMGQ5Nzk3M2Q5MDJjODAyZDA5M2VkYzZlZjZiNWYgbGVnYWN5LXRydW5rCisxNzg1OCAwYTk3ZjVkZGUzYTc4ZGM3YzM3MzliZjgyYzM4ODQ5MzI0OThjYzk0IGxlZ2FjeS10cnVuaworMTc4NTkgYTM0OWI4OWJmMTBlZTVkNTFkN2IyYjI0NDc3YmEzMDM4YWFiMTk3YiBsZWdhY3ktdHJ1bmsKKzE3ODYwIDlkNTE0MmM4Y2YyZGRkZDk3MzhiZDRmNDU1NjhmNzNmYmNjNTc5ZGQgbGVnYWN5LXRydW5rCisxNzg2MSAwMDMyZGZmZWIxNjNiNGZhZDgyNWE4MjE0MzkyM2FjNDE2MDAwMzhmIGxlZ2FjeS10cnVuaworMTc4NjIgZGRiMjAxOTA1OTFkYmJmMTZmNTIzZWYwNWY4ZTZlODc1ZmY5MTM3OCBsZWdhY3ktdHJ1bmsKKzE3ODYzIDBjZjUxMTFiZjA5Y2IxYmYxNzA1MGVmZWYyMjlhZWUxOGQ4YzBiZjAgbGVnYWN5LXRydW5rCisxNzg2NCA4YjZmZTZiOTk3YzJkYjdiNGEzOTEyY2ZmZjg3NTM0NmZkMzMxYTcwIGxlZ2FjeS10cnVuaworMTc4NjUgY2I0YjJhMTZlYjg3MTI1NTk4OGVmMTYzMGRmZWM3ZWFhM2RkZmY2OCBsZWdhY3ktdHJ1bmsKKzE3ODY2IGFhMDUyYTUyZWY4NzEyZjA4NWY2ZWY1NWRmZjg1ZjVjZWExYTg0MzcgbGVnYWN5LXRydW5rCisxNzg2NyA5ODQ3YjQ4NmQxNWZiYTgwOWY0N2YzMDQwZmFhODY4YjNhNTMwYzlmIGxlZ2FjeS10cnVuaworMTc4NjggYzVjZjZmYmE1NGRkYjhiNzM2NjI3MjMwZjBmMzNmMWU2Y2FlZGZkMyBsZWdhY3ktdHJ1bmsKKzE3ODY5IGRiM2E5NTc4YWIwYmVmY2ViYzM5YjQ3NGVjN2QyZTcwZjIzZWRlMTEgbGVnYWN5LXRydW5rCisxNzg3MCA2YzUxYjVhZjFiZGUxMzA5NjIwZWVjYTk2M2RiYmMxNmMwNWVhOGU0IGxlZ2FjeS10cnVuaworMTc4NzEgMjViYzE2OTUyYTI0ZTU0NzdiOWI4NDQ1MmMwYjcyODhlOGYyZTAzYiBsZWdhY3ktdHJ1bmsKKzE3ODcyIGIwZDFkZWMyMzUzYTQxMWFlY2Q5Y2IzMzM0OThlZDk4NTBhYjNhYzIgbGVnYWN5LXRydW5rCisxNzg3MyBkYTNlOGM1MDY0Y2FmM2JkMjJiMWQxM2RjZmNmYTdlODg5NTIwMGExIGxlZ2FjeS10cnVuaworMTc4NzQgZmI3YWM4YTQwYTk3YzI0ZTBkYTNjMjdhNWM1NDYxZWZmN2U4YWE3OSBsZWdhY3ktdHJ1bmsKKzE3ODc1IGMyODVkZjE1YTA1MDM4MzAxNTlkZmU0YjcwZTkyYzM0NThmYmViM2IgbGVnYWN5LXRydW5rCisxNzg3NiA5OGIxZmE2YzE2MDAwZTdhNGYzNTQ4MTNjYzc3YzkxODhhYzk4MzhlIGxlZ2FjeS10cnVuaworMTc4NzcgYTZkMzVjYzRiZjVlZTVkODMyMTc0YmIwNmFkNGVlYTI2NDZkZDQwOSBsZWdhY3ktdHJ1bmsKKzE3ODc4IDQwNWFkMGE3ZjdhNjEwOTllN2JiZDhjNTc4N2Q2YWNkYmYwMjk1YTYgbGVnYWN5LXRydW5rCisxNzg3OSBmMTJkMzVmOTk0ODg1NWZjMzRjOTY1OTdkNGJhMzRiZjI2OTI0YzIxIGxlZ2FjeS10cnVuaworMTc4ODAgMzdiMWNhZWVkNzA1NTdhNTkwNjMzMmY2MmYxZjZlZDQ1OTgyZTMwYiBsZWdhY3ktdHJ1bmsKKzE3ODgxIGRiOTEzNWYzODA2ODlhMjNlYTAwMjQyM2YzZTUxZWZlM2JlYzFjMDIgbGVnYWN5LXRydW5rCisxNzg4MiAwYmIzNDg5ODZkNTI4MWIyZTNkOTY2OWNlNzUwYmUyY2VmYzU5Yjk2IGxlZ2FjeS10cnVuaworMTc4ODMgMjljMmQ1ZTUyMTYxMmI4MTIzYjZjOTRmMjE4YzhjMzk1NGE2NzVjNSBsZWdhY3ktdHJ1bmsKKzE3ODg0IGIzNjhlMDZhM2I2Mjc1ZTkxNDY1NjkyMmEzNjc1N2M2NWNlNjA0NzggbGVnYWN5LXRydW5rCisxNzg4NSA1ZmZhNTE1ZTYyMGU0ZDc2NDQ4NTczNDI0NTZlODZlYjVkNDJkNjg1IGxlZ2FjeS10cnVuaworMTc4ODYgMjVmMTA5MmVjZDg2ZDU0ODBmMjg5MjQ4ZWIyNDM5Y2FlZGVlMDRjNiBsZWdhY3ktdHJ1bmsKKzE3ODg3IDUyZWI0OTlmMjViMDlmZDU3YmU1MDg3YzMyOWRlNzZlMDgyMzQ2ZjUgbGVnYWN5LXRydW5rCisxNzg4OCA3YTVjMzg1OWEzNjEzOThmYTE2MmNmYWYxMzBlZjAyMTZlNDkwMjE4IGxlZ2FjeS10cnVuaworMTc4ODkgOWJjNTI3MDZkMjgzNGY3YThjNTM4NjllMzI4YTlkNGU1NzgxODk2MSBsZWdhY3ktdHJ1bmsKKzE3ODkwIGNlNWRmZjMwYTkzNWQxOWYxOGVkZWI0MmU0YzE5N2JjMzljYjcyZmIgbGVnYWN5LXRydW5rCisxNzg5MSA2YzkxYTA0MWMxZDJiMmM5NWZlNmVmZWRiZjA2MDc5ZDQyZjc1NjYzIGxlZ2FjeS10cnVuaworMTc4OTIgOTRjMDMxZDdlOWMyZTgyODllNGExYmYzMzQxNjY3YTkzZTJiYTYyOSBsZWdhY3ktdHJ1bmsKKzE3ODkzIDg5NGRjYTIyNWQyNGFlYzI4NTljYWU5ZDI1ZmEzYmJhMmI1NjZhNDQgbGVnYWN5LXRydW5rCisxNzg5NCA2ZTlmZjA2MGE3Mjg4Mjk5Zjk5N2UxNzI0M2JjZDIzZWRiZjljYWM0IGxlZ2FjeS10cnVuaworMTc4OTUgYzdkNDZlYWU5NWQ4OThkODgwNDhhMTRkZmRlZTBkYzgwMGVjOWIyMSBsZWdhY3ktdHJ1bmsKKzE3ODk2IGU5NzEzY2JlMmJhOGQzMDdkNDk3MWZmNzljMDY3OWVlNGVjMmMzOGEgbGVnYWN5LXRydW5rCisxNzg5NyA5MjFjNzQ1OTc3MWI0MTJlY2EyNGVmYTgxYzMwMDBmNTZhODRmZGNmIGxlZ2FjeS10cnVuaworMTc4OTggZDEwNmRmZGZmNDgwYWViZjFhMzU5YzY5YTNiOWI3MmRmMjI0ZDRkOCBsZWdhY3ktdHJ1bmsKKzE3ODk5IDdlZWZkZTkwZWMwZWU0YjRjZTFmNDkwODQzODE1MmVjODI4ZTgwMzEgbGVnYWN5LXRydW5rCisxNzkwMCAyOTNjYWYwZTYzMmExNzQ0OGIyNmMxM2I1YTFjMTdhYTlmNzdkMThhIGxlZ2FjeS10cnVuaworMTc5MDEgYzBjMjU0ZmJkZTU3NmJjMDE5ZGRjOGMxNTE1YTM1MjQ4MmJlNDRmZSBsZWdhY3ktdHJ1bmsKKzE3OTAyIGRhZTdjZWY1OGFjMjZhZGRjMjEzMDUxMDg1ZDZhY2ZiZDgwMGVmNTYgbGVnYWN5LXRydW5rCisxNzkwMyBjOTBjM2FhYmQ4ZjUwMzZhNWY4MTg3ZTE3MjA1MWVkNDhmNDM2MjdiIGxlZ2FjeS10cnVuaworMTc5MDQgYzY1NGIyMDE4NDAzOWM4OGM1ZTcwNzAwZWEzZjI2Yjg2MjY4MDZlOSBsZWdhY3ktdHJ1bmsKKzE3OTA1IDQ1N2YwZGY0NmRkOTgwNTVlYjhlYWQwMDFlN2FmNjBlYzNkNmY4NTQgbGVnYWN5LXRydW5rCisxNzkwNiAxZGQ3MmE5MmU5MjJjMzVhZDNkYzVjZmFhMmZjZWUxYWFkYzk5ODZjIGxlZ2FjeS10cnVuaworMTc5MDcgNDNjNDlkYmQ0NTQ2ZThlY2FkMTQ5MGMxZDIyMjgzMmYzYWQ5NTgxZCBsZWdhY3ktdHJ1bmsKKzE3OTA4IDc4YmNhZTc3ZThjNzAzZTg2NmJhYTkzNGJkZDg4ZmUyNTQ2YWE3ZDEgbGVnYWN5LXRydW5rCisxNzkwOSBmY2Y4NWM5MGEyNzQwYmZjNmZiYzFiNjQxNjMyNzZlZWVmODUzYTRhIGxlZ2FjeS10cnVuaworMTc5MTAgMjU1NzljZDZjZGQ5MDM4MDdmZTQ4Mjk4ZjlhYzgzODc5MWMwZWQxYSBsZWdhY3ktdHJ1bmsKKzE3OTExIGJlNGZjOGI2ZTFjYjgzYTAzMDYyODZmODFkYzE4M2NhMWRlM2Y5YzQgbGVnYWN5LXRydW5rCisxNzkxMiAwOGU2ZjEwMTkxNzE0OThiMDRiNzgwM2Y0OTIzZjE2Y2E0MjQ5ODJhIGxlZ2FjeS10cnVuaworMTc5MTMgNjI3ZmY1NzhmMTJmOGY4NTE5MmYxNzMyYjk0YjQ2OWU1Njk5MDU1NCBsZWdhY3ktdHJ1bmsKKzE3OTE0IDQxYmZjOWE0MGZlMzk0OTZiODM0ZDIzNTU5ZDZjODE4ZWRlOGY4MzAgbGVnYWN5LXRydW5rCisxNzkxNSBiZjI3Y2FiYTNkMGU0MDkyMzE4NTk4YzQzM2QzNzU0NDJlZjllYTk2IGxlZ2FjeS10cnVuaworMTc5MTYgM2EwNGJlYmI2NjZhZWIwZTBiY2U4ZmRjZjEwZTc5NTRiMGEzNGM4NCBsZWdhY3ktdHJ1bmsKKzE3OTE3IGFjYjg4NjA3YjRiZDdlOGJjMGRlNDJhNGY5ZmJjYmUyZDdhMGUyOTYgbGVnYWN5LXRydW5rCisxNzkxOCAxNzdhZTFjNTIwMzc2NTAyMDZhY2RiNTdlMzQxMzRjOTk2MDc0YjdiIGxlZ2FjeS10cnVuaworMTc5MTkgMTAzNjEyNTE2YWE4ZDM1ZmNkZGVhMGZkY2Q5OTllYzdkOGQ5MDQ2MSBsZWdhY3ktdHJ1bmsKKzE3OTIwIDY3NTc0ODM3OGM4MTk5ZDk3NDliNTRhODkxY2VmNzE3ZDI2ZjNjZTEgbGVnYWN5LXRydW5rCisxNzkyMSBmNzgwNDY5YTk1NzdmOTVjOGM5NzVmMTIxNGMwMzBlOTg4NjkyMWZhIGxlZ2FjeS10cnVuaworMTc5MjIgYzA1OGJjMzU2NDBmNzhhZTg4NDBkYjYxMmYyYTliYjkzYmVkODdjYSBsZWdhY3ktdHJ1bmsKKzE3OTIzIDExOGFjODVhZjMwYTA1YzRiYzEyMTcxYWNiNmNkOGQzNDI4MWM4ZmMgbGVnYWN5LXRydW5rCisxNzkyNCAxODc5YTQ4YTMxMzM2YTRlYjRjZDI1ZWQ3OTFhYTQzMDE0NjVlZThiIGxlZ2FjeS10cnVuaworMTc5MjUgNjkwYjQxZDQ3YzFkNmFkNTY1ODZmZGE2Njg5YzkzYjAyMDAyZmM0MiBsZWdhY3ktdHJ1bmsKKzE3OTI2IGE1M2YxNmIyMGYxZDkxYmQ5ZGIwMzMzNWI4OTA5NmRkZTFhMzE4NDUgbGVnYWN5LXRydW5rCisxNzkyNyA1N2ZlYTg3MDk3NThmMWYzN2ZmODBiMTRiYTgxODQ0MmYzNWM2YjYzIGxlZ2FjeS10cnVuaworMTc5MjggNzFhNGFhZGRlMDE5OGI4NjZhNDYwNmYxYzczYTYxZjU1NzJlN2E3MCBsZWdhY3ktdHJ1bmsKKzE3OTI5IDYzZDIzN2EyNWY0OTFlMjY4ZWNhZTc2MjRkODQ5YzZkODhlMjUyNDkgbGVnYWN5LXRydW5rCisxNzkzMCBiMjVlYWJmNjZkOGQzNzVjNDU1NTI4MjNiNTFiNzU2NDg4NjQ1ODU3IGxlZ2FjeS10cnVuaworMTc5MzEgN2NlOTA2MWY3OTY3ZmZjNzMyNTI1OTU1ZDNhNDdlY2ZmOWZlMTE1NSBsZWdhY3ktdHJ1bmsKKzE3OTMyIDc3ZDFkNzlhNjVkNzVlODRhODQ3NzNjMzdkODFjMzJmNTBmZmZlYTcgbGVnYWN5LXRydW5rCisxNzkzMyAzMTQyMDI3YjU5NzlkYWVhYmQ1MjYxNzUxNWY0MTg0YjkxNTc2YTI2IGxlZ2FjeS10cnVuaworMTc5MzQgYWQ4ZWYxNTVjYTM5MGU4YTY4MTAyMmFlMzExZDQzMzhkOGJhYWIxYiBsZWdhY3ktdHJ1bmsKKzE3OTM1IGRjNGNhZWRjNTk2MTFiMTcxYjE0OTc4YzE2YTZhZjFkYjcwNjI2NDEgbGVnYWN5LXRydW5rCisxNzkzNiA0N2U2ODA3NzExN2U0MjExNTA5ZGMyODNhM2U3NjdhMTIzOGU1ZjUwIGxlZ2FjeS10cnVuaworMTc5MzcgY2RmZWMzNmYxMmNjOWZhMWI4ZTlkYTVlYWE1NjBhODY1NzkyZTliZCBsZWdhY3ktdHJ1bmsKKzE3OTM4IDBlMGVhNTZlNGJlODRjMDQ4ODIwYjEwMjg2NWMyYTA2ZmRmYWJmYzUgbGVnYWN5LXRydW5rCisxNzkzOSBhMTE5ZTBjOGI4MGIwZTRkMTk2M2JiMzM0YzYzZWEzODJiN2JiMjkwIGxlZ2FjeS10cnVuaworMTc5NDAgYzJmMTNjMzk1YjlhZTdmODg1ZmM0N2E4MTZhYWIwNmYzMjg4ZTFlMSBsZWdhY3ktdHJ1bmsKKzE3OTQxIDAyYWQ5Y2I1MjIyMjc4MzA2YTU3ZDg3MzdiZGQ5MmM1ZThiYzFkZmEgbGVnYWN5LXRydW5rCisxNzk0MiA5YmU2N2M1YTgyM2FiMWRhMWM5MzIwYTYxMWFjYzUxZTNlNzMzNDZmIGxlZ2FjeS10cnVuaworMTc5NDMgZjlkNGJkNzliNDY0ODBjMTRhYzRhZDdhMjc3MjMwZTExNGEzYWMyMCBsZWdhY3ktdHJ1bmsKKzE3OTQ0IGYwOWE4NGFmNjRiZDg2MzIwMWJjYjY1ZmZlYmY2MDlkNmNkMWExMzYgbGVnYWN5LXRydW5rCisxNzk0NSBhMTNhMmFjYmUyMTRlZjhmYzA2YmEzNWUzODAwYTNlY2MzNGIxNTlmIGxlZ2FjeS10cnVuaworMTc5NDYgMWE2ZjkxNTg2MzBmMWQ2ZWZhOTViZWQ4NzBiMDkwNmU0MDViYWE1MiBsZWdhY3ktdHJ1bmsKKzE3OTQ3IGQwYTZkNDQ0ZDZiYzc3YjE2ZDg2NjM3YjM2YmExZTVmYmI2NTJhOGMgbGVnYWN5LXRydW5rCisxNzk0OCA1ZGE5NjIyZmVkN2I1NDc0YjVkYzRlOTFiYzdiNWUyODdjNDdjMGNkIGxlZ2FjeS10cnVuaworMTc5NDkgNDFjNDJiMWJkNTgyOGI5NDg4ODBjOTVjZTc3ZGIyNjA0YzBhYjY3YSBsZWdhY3ktdHJ1bmsKKzE3OTUwIDQ0ZmExNmYwMWI0ZTEyMjlhY2MzZDI0NTZlYzY3YzY2NDg5NmE2ZWMgbGVnYWN5LXRydW5rCisxNzk1MSAxYjM0YzQ3NWRhODdmYWUzZWE4ZDVhNTQ2NjQ3MTNlYWZkNzM4NzZiIGxlZ2FjeS10cnVuaworMTc5NTIgZWMxZjIzNjViYzJkNTdiMTFlNjBjMjU1NWRlNzJkNzc3YWU2MDYxYSBsZWdhY3ktdHJ1bmsKKzE3OTUzIGMxOTk0NjBjY2RlOTA2NjAzYzkzMjZiODAzODE2MDg1MTg5MTYzOTIgbGVnYWN5LXRydW5rCisxNzk1NCA5NWJlNDNkMWQzMzI2NTcxOTM2ZWRlNTk3NGE5MGVlMjA3NTFhNjZlIGxlZ2FjeS10cnVuaworMTc5NTUgNWZiOGRjMjg5ODEyZGY5ZWI0ZDY0NjIwMDk4ZTg0ZDIzMzBkMjAzMyBsZWdhY3ktdHJ1bmsKKzE3OTU2IDdkZTA4MDhmMWZlMzIwN2RiYzY1YTExMGYwYzYwNDY0M2UyYmVmZjMgbGVnYWN5LXRydW5rCisxNzk1NyAxYWNhYzQ3NTZhMDNiZWJhNDBmZmJkMjQ3NzBkODAwYTA0YWY3ZjgxIGxlZ2FjeS10cnVuaworMTc5NTggZjhlOTYyNTA2MDYzZGRhZjUwODBkMTM2ODY1ODE3N2U0NDNlMjliNSBsZWdhY3ktdHJ1bmsKKzE3OTU5IGEwMmY5ZGFjMjE2Y2Q5ODk0MjRmZjA5Y2Q5YzMzZmIzY2Y0NmY3YjAgbGVnYWN5LXRydW5rCisxNzk2MCA4YmZhOTcwM2E0ZTRmNDAzNzBlNWU5YTRjYzQ3NGJiNjgzY2JkMDQwIGxlZ2FjeS10cnVuaworMTc5NjEgYTVhOWNmYzAwOWI1YjNjMGFiOGIzZWRhOTE0ZGIyN2IxZGM2NDNhMSBsZWdhY3ktdHJ1bmsKKzE3OTYyIDI5MDA0NTIwMjZjY2Q1ZWUyMjI1ZGQ4N2Q4ZjFkZTgyYmJmNGY4Y2UgbGVnYWN5LXRydW5rCisxNzk2MyBmNzZhMWVjZDZiNTkxNmFmZTBmNTY1NmU2Njg1MjQ1ODhkMWFmNmE4IGxlZ2FjeS10cnVuaworMTc5NjQgNjY2MDkxZjBkNzE0NDcxYWVkNTVkODc3ZTMzODk1NjA1OTZiNGI3NyBsZWdhY3ktdHJ1bmsKKzE3OTY1IGQyYzE3YWRmMmYwYzQ1NTY5NTJiYTc0NDBkOTNlNzVlY2Q1YjA4MDAgbGVnYWN5LXRydW5rCisxNzk2NiBjZTA2Njc5OTEzM2VhNDc1MDU1ZjEzZTNkZTA3ZGU3NjAzYTJlYzg5IGxlZ2FjeS10cnVuaworMTc5NjcgMzA4MWQ3MDFiZTg2MTVmMzJjOWE4OTEwMjcwZDJkZDFlMWI0MDYxMyBsZWdhY3ktdHJ1bmsKKzE3OTY4IDE1NGI3MWUxNjU2NTAzYTY5ZThiMTNlYTlmMmRmNWY3MTA1ZjYzY2MgbGVnYWN5LXRydW5rCisxNzk2OSBhODA1NDEyNDViNjYzMjAwZDFlMmM4YzE4NGJlODZhMWNhN2U4YmM2IGxlZ2FjeS10cnVuaworMTc5NzAgZTk2ZDY2NGRlMjU2YWNiOWRlZDg2MDcxMzZiMmJmYmJkNDNkYmY5YSBsZWdhY3ktdHJ1bmsKKzE3OTcxIGM2ZDlhZmE2ZTZhMDVjNWU3YjM4NGQ4MmRkMjk1NmUwYzQ2NjJhNGEgbGVnYWN5LXRydW5rCisxNzk3MiBmYzY4NmRlODYwNTliODQ1NjBmMTRhODdiOWJjNDgyZDFkNDAyZTU3IGxlZ2FjeS10cnVuaworMTc5NzMgNGUxZTlmNWMwNzk1MDY4ZTQzZDJhZThmMmVhZTlkZjAzZmM2Mzk3NCBsZWdhY3ktdHJ1bmsKKzE3OTc0IDFjZDAyODVlM2NmZWQ4N2MyMTg4NzhlNmJkN2ZkNzIwNjU5YzI3ZDQgbGVnYWN5LXRydW5rCisxNzk3NSBkMTZiNzQxM2RjNjk2ZGY3NGZmOWVjY2E0YzJiMmE3NDc2M2Y3NzgzIGxlZ2FjeS10cnVuaworMTc5NzYgNjZkMjQ4MzI4OTY3MmQ3NWUyYzhkM2JkY2Q4OTM1YjhiZDJkNjYzNiBsZWdhY3ktdHJ1bmsKKzE3OTc3IGEzNThiYTcwN2U0ZDM1MWU1NDVkNGI0OWViNGNhNWUyZTliMGZiNTkgbGVnYWN5LXRydW5rCisxNzk3OCAwYzBlOTA5YjhlZDIzYWQ0MGQ2YjhkMmE5MmM5Y2JkOWI0Nzg2NzU1IGxlZ2FjeS10cnVuaworMTc5NzkgN2QwYWY0ZTgxM2Q4NWRlZWFiZmE4OTlkMzNiZDQxN2U3OTM1ZTI1MCBsZWdhY3ktdHJ1bmsKKzE3OTgwIGVmMWY0NzNhYWVlYmViM2YyZTY0Y2I0MmY4N2RmOTZjNTQ4OTZjMjQgbGVnYWN5LXRydW5rCisxNzk4MSAzMmI4YzVhNDgwYWRlMzVjZGI1NWZiNWIzNjkzZmQyZmFiOGRkMjZlIGxlZ2FjeS10cnVuaworMTc5ODIgM2FlOWQzMTNiYzMzZTBiNGZhNWZhZTY1NWE3MzIzYjM4YzI0MmM2NiBsZWdhY3ktdHJ1bmsKKzE3OTgzIDY4MDM0MjkyNTBlOWJkMDhmYzc1MGE5MTgyNjM2M2RiMGNhMjU4YTIgbGVnYWN5LXRydW5rCisxNzk4NCBmNzcxNDUzYzNhZjU4ODY0ODgyZmMzMzk3M2Q1YTlkMGY4NWNjYzVjIGxlZ2FjeS10cnVuaworMTc5ODUgZWJhMzIzZDc0MDdmYTEzNmViMmYyNGQzNjMwMjMzMzBkMThkODdhMSBsZWdhY3ktdHJ1bmsKKzE3OTg2IGNmMjY2MWE0NTk4ZWJiMjdjNjdlOWQ4MjYxMWRhODJiYzM5MTc0NzMgbGVnYWN5LXRydW5rCisxNzk4NyA3ZTZlNDBlNDFjNmU0YTdjMzY0NTQ1MTNlOTA1ZTJiNWU5NGZiMWI4IGxlZ2FjeS10cnVuaworMTc5ODggYjM5MTc5NDBlMWZhMWMxYTA0YTY5ZjFiOTUyNGFlMGY3ZWVlMGVhYSBsZWdhY3ktdHJ1bmsKKzE3OTg5IDM0YTZlM2VhZDFjMDQ4NTU3MGYyMmZiNDE1ODIzODcwODUyYTRiMGQgbGVnYWN5LXRydW5rCisxNzk5MCAwNTY4NmY5N2YzOGQyNDZkZDM0NWZlYWJiYzhlMzY1MjUyZDFjOWZkIGxlZ2FjeS10cnVuaworMTc5OTEgYTVjMzQ2OTIxOGU5YzQ1NGNiNWFlMjRkYjY2Y2Q2YmJkY2MyNWU5MyBsZWdhY3ktdHJ1bmsKKzE3OTkyIDlhZDA3NjRmMmU4NDFiMTY1OWJlNzY3MTcyZjQwODNkMmY4NDA3YmUgbGVnYWN5LXRydW5rCisxNzk5MyA5MTIwMWRlMjVmMzZkNjQ5MDI4NDA3ZTRkZDU4YmMwNDAwNGM4YWQwIGxlZ2FjeS10cnVuaworMTc5OTMgZTI3NjMyOWNjZTAzNmE1ZjllOWQzNDUxMjU2ZGNhNTk4NGU1NDNkYyBsZWdhY3ktdHJ1bmsKKzE3OTk1IGRhOTA2N2JjOTQ5NDI4ZjZkODg0OGJkNTE2MjRjYmNkYjk3ZWUyZDkgbGVnYWN5LXRydW5rCisxNzk5NiA1NzE5MmYwYWMxM2E3ZDZmZGY5M2Y1NmE4MTYwMjgwNWY1ODM1Nzc3IGxlZ2FjeS10cnVuaworMTc5OTcgZGQ0OWYyOWQ5ODc5NWUyNWQxMzQyNmJjMzdlMzAyMzQ2YjdlYzZjYyBsZWdhY3ktdHJ1bmsKKzE3OTk4IGZiOTk1ODkzM2IyNThiNTgzNmVhMzdjYTY2MTQ2Y2U3MzE3MmY5ZTMgbGVnYWN5LXRydW5rCisxNzk5OSA0MzMxODc0NjY5MDE2OWQyYjQ5NTQ0MjU1NzhjZTI1ZWIzMWJhM2JhIGxlZ2FjeS10cnVuaworMTgwMDAgNTYzZGVlNTk4ZDNhOWY0NjNkMzgzNjQ0MjdmZDNkZTllYTg0M2VjYiBsZWdhY3ktdHJ1bmsKKzE4MDAxIDc0YzAyMGFkZDg0NmVjNGI2NmEyMGM5YjgyOWM2MGFiMWVjM2E0NDAgbGVnYWN5LXRydW5rCisxODAwMiA2YjAxZmMyMmVmNmVmOGVkM2RmZTM5OThjOTA5NTBiOGUwOGYxYzg0IGxlZ2FjeS10cnVuaworMTgwMDMgYTE5YjFkNmE1OWNlMWM2OGU2MmFiYjNjNjViNTUwOGUwYzQ1ZWM1YSBsZWdhY3ktdHJ1bmsKKzE4MDA0IDVjZjBhMDJhNTc0YjExOTk5YmNlM2M3Mzc4ZWFiNWRlNzRkOTZjN2QgbGVnYWN5LXRydW5rCisxODAwNSA1ZTViNDMxMThjNTJkYTZmYzZiYzliZWU0N2IwMjRjNTIzMDFkNzVkIGxlZ2FjeS10cnVuaworMTgwMDYgYTJmY2M0ODdiOWRhMTg1ODc2ZmQ3ZTljZTAzMWFlYjE1YjZiZDM5MyBsZWdhY3ktdHJ1bmsKKzE4MDA3IGZkYzJhYmRmNDc3N2ViZDJmOGQ5ZGQzM2E2ZjlmYzk4ZGNlMGVlN2IgbGVnYWN5LXRydW5rCisxODAwOCA0ODZmM2ZmMTRkOTVhYzk3ODJhNTNjZWJlMTliMzVmZWEyZWYxZGY5IGxlZ2FjeS10cnVuaworMTgwMDkgY2E5ZjZhOGU5ODg1NzEzYmM3ZDgxOThmNjAyYWMzZDEyNWYzZjhhZCBsZWdhY3ktdHJ1bmsKKzE4MDEwIGVkNDlhNjc4NjllOWMyMGY0YjZjM2U0OTljZjY2NjNjN2RkMGI5YTQgbGVnYWN5LXRydW5rCisxODAxMSBlMTdkOGNkMDk2ODlmMDFhYjdjYWFjMmRmNmI0NjNmMDg3ZjRlNjM1IGxlZ2FjeS10cnVuaworMTgwMTIgMTczMDU5MWQ1ZDVkYThhMjUzYWJlM2NjMGY3Nzk2ZDAwNmRhODBkOCBsZWdhY3ktdHJ1bmsKKzE4MDEzIDc0ZjE2NWRjMGI1YWU3YjVhYmYyMDQwMGE0MmY1MzNjY2FkZDU1OTYgbGVnYWN5LXRydW5rCisxODAxNCBiZWNkOGExMjE0NjRmMzZhNGFhOWRiZDI3YTY3NGU4YTc3YzM2NzY0IGxlZ2FjeS10cnVuaworMTgwMTUgNDU5MjMyYTliODA0YzBhMGNmNjQ5NTdjOTIzYWU5NjE3YjgyNjQ0OSBsZWdhY3ktdHJ1bmsKKzE4MDE2IDdiMDdkNjJkMmM3OTYxZDQ1NGY2ZGUwNzg3MzQ0YzFmMzIwZTRmZTUgbGVnYWN5LXRydW5rCisxODAxNyBlNzE5NzFhNDAyZDMxOWFlZmM0ZTNjYWIyZWM3YTI3NjRiOTNlNjlmIGxlZ2FjeS10cnVuaworMTgwMTggM2MyMTA2NGU4MjE0YzI3ZGRlZTYyMTZhMjgwMzQyYzUxYjJjYjc0YiBsZWdhY3ktdHJ1bmsKKzE4MDE5IDAwN2E5MWQ3NzcwM2ZlYjZiYzJhNTY0ZDIzMDBhMzNiNTY5NGY2NTQgbGVnYWN5LXRydW5rCisxODAyMCBiMDc1MzU5ODAzMDE2NTQwY2ZiOTQyNzc4NDhlYWMwNTUwMWIwNGM0IGxlZ2FjeS10cnVuaworMTgwMjEgYTgwMDZiYmI2MjI1Nzc5YzNhMGQ3ZWJhODBmZTg4OTc1MGFjOGExOCBsZWdhY3ktdHJ1bmsKKzE4MDIyIDg5MzBlYzNiYzAwYTkxYjcyMmEyN2ZjNGZjYmQyODhhMWZjZTc1MDcgbGVnYWN5LXRydW5rCisxODAyMyAyNTc3NTE5ZDVlYTEzOTc0NmE2ZTI5NzBkMDRlMzdmMjhmMDhkNDM4IGxlZ2FjeS10cnVuaworMTgwMjQgZTYxZTY0ZDFiNWVjM2I4MWM3NDIyODM4ODhmYmRiY2JkZGZjMmQyOSBsZWdhY3ktdHJ1bmsKKzE4MDI1IGU1ODJmNTczNDNmNGQ1YzgzNzQzZGVjYjdiYTgwNDFmZDMyYmRiYzIgbGVnYWN5LXRydW5rCisxODAyNiAyZWRmMzY2ZjU2M2M4ZGI2ODc2YjIxM2E4MDE0MGM5MDk3ODA4YmE2IGxlZ2FjeS10cnVuaworMTgwMjcgZjYxMDJjNWQzZjljMmMzMmQ5OTlmYjM4ZGY1NWY5MzEyNDUxNjI1NiBsZWdhY3ktdHJ1bmsKKzE4MDI4IDA5YzdhYzE4OGNlMjE3OGI4N2IwNjUwNGIwZTRmZTU1YjNiYzRkYjkgbGVnYWN5LXRydW5rCisxODAyOSA4NWEwMmNjMzc1OTBhNmY0OTBkZDg4Y2JkOTg4NjA2ODk0NjViOGRmIGxlZ2FjeS10cnVuaworMTgwMzAgZDJmNGQ3NDhjOTIxZWJkYjA5MGYzMjc4ZGNhMTZiODRmNDg1ZWY5ZiBsZWdhY3ktdHJ1bmsKKzE4MDMxIDc0NGFhMDYyZjQ3MDFhNDE1NDBkZDQ2ODI3YWNlNWMyYWFlOTBiODAgbGVnYWN5LXRydW5rCisxODAzMiAzZWI4Njg3Yzk4YzZmN2MyYzRjYzc5MTI5NWI1Y2NhN2M1ZjM3YjU1IGxlZ2FjeS10cnVuaworMTgwMzMgYWIxZjkwZGQ1MDJmOGFhODU5MjAzN2RiNjc3NDNkY2YyYzVlZDc0NCBsZWdhY3ktdHJ1bmsKKzE4MDM0IGU3ODIzZjBjYTIxYTA2MTJhYTA1OTlkY2M4NTE2NWMzZDU2NjU0NzkgbGVnYWN5LXRydW5rCisxODAzNSA1MmQyZDM2YjhiZjdmNzg1NmVlYzc2NTIzMjY4ODRlMGQ1YzM0ZTBlIGxlZ2FjeS10cnVuaworMTgwMzYgMWI3M2IzNTE0YjU4NTVkNWVkNDdiNzIzODViMjM5NTc1ZGUwMmFkYSBsZWdhY3ktdHJ1bmsKKzE4MDM3IDAxNWRhMTNmMDAzOGMxNjZmMGU0NmViNzRjMTY5YjlmNjA5MTcyODQgbGVnYWN5LXRydW5rCisxODAzOCA1NDI3Mzg1OGVhZDljNjI1MTA1NGU5NTQ3N2FhNTQ3OTY3YjMyYjk5IGxlZ2FjeS10cnVuaworMTgwMzkgMmVkMzU4NDQ2ZjJmZTMzOTAyMzkxZThmNDgyMzU5ZmQyMTFlOGZlMSBsZWdhY3ktdHJ1bmsKKzE4MDQwIGIzMzg3ZWViYTY4ZGZlNGNhOThkNWY5MmFkMmQ0ZTIwZjM0MGY1ZTIgbGVnYWN5LXRydW5rCisxODA0MSA0ZDIxODcyNjRjZmE3YWQxMTMwMGNlOWVkODI1MzNkMDkxZTBhYzBjIGxlZ2FjeS10cnVuaworMTgwNDIgOWU5ZWUzYzVhNjA3OGYzYWVmYjEzYTU5ZTRjYWRiZjE2MWFlOTBmMyBsZWdhY3ktdHJ1bmsKKzE4MDQzIDEwMGJlZWJkZTlkZmY1NGQ0OGI0NTA1NTcxMjFhMjExYjQ3ZGFlMmUgbGVnYWN5LXRydW5rCisxODA0NCBiMjg5MmNiYzYzZGI3MzQ0MTgwY2I1MjcwMjU5MmVkNTZiNzk5NTNmIGxlZ2FjeS10cnVuaworMTgwNDUgNWFhOGM1YWFmZmFkZDY0MjQ1ZDQwOTczOTY3MGE2NjExNmQ5N2EyOCBsZWdhY3ktdHJ1bmsKKzE4MDQ2IGYwNDRiMDZlMzE3ZGFhMjQwMmQzNzlmNjQ4NGM3ZjE0OTBkNWE4ZjAgbGVnYWN5LXRydW5rCisxODA0NyAzMTljNmUzNzE4MjUxYzk4MzUzNDM2MTFmZDI3MzI4MGY0MGZjMTNiIGxlZ2FjeS10cnVuaworMTgwNDggNjU2ZDQzNDM4OGM4ZTIyODMwMjJhYzE0ZDk2ZDRjYjUyMmM0MmM0YSBsZWdhY3ktdHJ1bmsKKzE4MDQ5IGRiNGQ4MGE2NzM4OWEyMDYxZDFhMWEzZGUyMzA4YzM0MDAxMGZjMDQgbGVnYWN5LXRydW5rCisxODA1MCAxYzYzZTIyNGY2MTY2NDBjNjhlYTQ2NTljNWJkODdlODQ0ZTdhYWIxIGxlZ2FjeS10cnVuaworMTgwNTEgZTNkODM2NWVhMjMxNTEyNmU4MDNkNDkyZDdmOWQ4YTcwMWI1ODg5ZiBsZWdhY3ktdHJ1bmsKKzE4MDUyIGFmMDJhYzU4MDAyOGM5ZTVkMWMwOTJmMjAzNTJmNWNhYzRhMmZiZWMgbGVnYWN5LXRydW5rCisxODA1MyAzNzQzYTZkYmM0YTc3MmI1YjA4YmRjZDExMmIzODI3NWY4NmQ2MDkzIGxlZ2FjeS10cnVuaworMTgwNTQgNDhjYzc3YjYzYWQ1ZGY1ZGVjMGMzYjA1OTc4MjY5MTEzMTZjNGYzZSBsZWdhY3ktdHJ1bmsKKzE4MDU1IDIzYmYzMDg1OGVmNDUzMWVmMTQyNjJmOTA2MWUzOGU2MTdhNTM0M2MgbGVnYWN5LXRydW5rCisxODA1NiBkNDY5ZDE1NzIzZDM1ZjA1MmZmYjY0YzA0Y2RmYmI0ZTIwNGYyY2IwIGxlZ2FjeS10cnVuaworMTgwNTcgNzdlYThmY2VmMjRjYjM1NWIwYmUxZmQ2ODIwODM1ZTNmMWIxODQzNiBsZWdhY3ktdHJ1bmsKKzE4MDU4IGM1MGI3ODZlYmM0ODRiMjRmYjkwN2JmMjAxZDg3YTk5YWY1M2JiNDUgbGVnYWN5LXRydW5rCisxODA1OSA0ZWViMDI4MTdiNWQ4MGU0MTNiN2E2ZWFkYzViM2U1Y2ZiZjI3YWVkIGxlZ2FjeS10cnVuaworMTgwNjAgOWI3ZGRkOWNhZTMzZTI3NzFlOGQyNzJlNjM0MjU5ODk2MWViOTM0ZiBsZWdhY3ktdHJ1bmsKKzE4MDYxIDY0MTdjZTkxNGRhZTg3ZWRkMjg0OTE0OGFkMWY2YjQyMDk5ZTQwYjcgbGVnYWN5LXRydW5rCisxODA2MiBlMGE1ODM1YWY4MzM1MGEwNzg2MGFiN2UxYTc5Zjk1ZjQ5ZDA4YjdkIGxlZ2FjeS10cnVuaworMTgwNjMgMDRlNzZlMDhlMTBmZjQxZmUyYWVjOGE1NmJlYWU2ZmRhMzUxZGJhYSBsZWdhY3ktdHJ1bmsKKzE4MDY0IGM5NGYxYzc3NjE1MzZlYTcwNjMxNjcxZmMwY2UzOWMxZTEwNGRkZjUgbGVnYWN5LXRydW5rCisxODA2NSA3MDFhNTYxYmRlZmE4MTY0ODY0Y2FhOTI4MmE0YWIyZTVhODViYWFkIGxlZ2FjeS10cnVuaworMTgwNjYgNzgzOTY3YjE2ODc5YThhODRiZTU4YjE5MmZlMTZiOTdhZTkyMmE1OSBsZWdhY3ktdHJ1bmsKKzE4MDY3IDlmMzA3NzUwNmQxYTE2YmE0ODdiYzUxMGIwN2ZmMDFhMTZkOGRjYmQgbGVnYWN5LXRydW5rCisxODA2OCBkMmMyMDVjMzZkOGE0MThmNzBkYzkxMWYwOGY5M2I0NDRiZDM0YjYzIGxlZ2FjeS10cnVuaworMTgwNjkgZTRjOWI4MDVmMzlmYmQ3ODNhMDkyNTBhMTA5ZGMxNzdiMzM3ZDEzNiBsZWdhY3ktdHJ1bmsKKzE4MDcwIDUwYTg4OGVjNTdjMTI3MTFmZDUxMWEyOTNjZTA1MzY1OTEyMGNhYmQgbGVnYWN5LXRydW5rCisxODA3MSA4ODJjZWZlMjFkYzM2ODE4NWQ3ZmZkNzkwOTg2M2NiMDY3NTgyN2U4IGxlZ2FjeS10cnVuaworMTgwNzIgN2Q0NTI0OWIxNDc3ZDljNzhiOTU0ZmEzOTQwMzU5NmI0NWJjMDdmYiBsZWdhY3ktdHJ1bmsKKzE4MDczIDk1OTg2NTBmMmJjOTAyMzIwYjdlOTIwY2VjODJjNjBmZDQ4ZDAzMWIgbGVnYWN5LXRydW5rCisxODA3NCBhMzk3NWQyODExZjAwODlmNTJkYTJjZTNjNTg2YWE3ZTdiNmNhODhjIGxlZ2FjeS10cnVuaworMTgwNzUgYTgyZTRjMjk1YjkzMDBkMzA4YjI2ZDE0YmY0MjA5YmIxZjMwNzg1OCBsZWdhY3ktdHJ1bmsKKzE4MDc2IDViNTY1NGNhNzU1NWI5OGIwZTJiNDFjZjY2MTEwOWQ2MDNlNDNjYzIgbGVnYWN5LXRydW5rCisxODA3NyA5OWYzOGM3NTVhYmViYTQ1NTAxMDk4ZjZhMmFiNDA1NjYzNTkwMWU3IGxlZ2FjeS10cnVuaworMTgwNzggM2U3MDE2Yzc5ZGFhMGU3YWZjZDNlNDUyZmRmMmRmNzAwYzVlMzNjNyBsZWdhY3ktdHJ1bmsKKzE4MDc5IGQ3YzkzYTc4Yzk0OTI4YWZiOWMyOGMzYjQ0YWI5ZjE3Zjg5MmUwNDUgbGVnYWN5LXRydW5rCisxODA4MCAzZDkwZTFkNzYwNWY3MTI3MjNjNGI0ZDZiY2UzMGJlY2M0YjI0MGQyIGxlZ2FjeS10cnVuaworMTgwODEgZTQ3MGE5NjE4Y2E3MmFiYTM1ODZkMTRhMzRhM2QyMzQ2MTQyNzBmZCBsZWdhY3ktdHJ1bmsKKzE4MDgyIDdlOTJiN2E1MDU3YzUxMGYxZDNiZWUyNzkyZTM0M2RmMDNhY2Q3ZTQgbGVnYWN5LXRydW5rCisxODA4MyA0ODZhMzFkOGEzYjM1YzVmOTFmZTE3MjdjNTQzYzhmYTc2YzA2M2Y1IGxlZ2FjeS10cnVuaworMTgwODQgNDg3YjM1MDJhNDViMzEwZmNkYTcwYWEwOWZkYjJkNjU4Y2Q1ZDFhZCBsZWdhY3ktdHJ1bmsKKzE4MDg1IGY3OTI4MjBmM2NkNGJlZjU2MDUzY2FkZmU4ZTRkZTVkMDEyNjQ1YWQgbGVnYWN5LXRydW5rCisxODA4NiBkMmI5Y2M0NDBiOGRkNDJlMDMxNWYyYjhkMzI2MWYzMTBjN2EwYjAxIGxlZ2FjeS10cnVuaworMTgwODcgYmQ4OGRmMjBkYTJmNTlhYjRlZGRkNTkyYTM5NTM3NjAyNDBjYTU5MSBsZWdhY3ktdHJ1bmsKKzE4MDg4IDEwYjNjYmRiZGZkOWZkOTE5NWY1ZjU0MDIzYTJkNDNmNzAxMzIwOTcgbGVnYWN5LXRydW5rCisxODA4OSAzOGM3OTVhZmIzYjgwNTNlYjZhOGQyYWNkZjZlODdiNjliNmQyYWQzIGxlZ2FjeS10cnVuaworMTgwOTAgODY0ZjE3MTRhZjI4NzFiMzA3Y2U0MzcxZjk2YTlhYTU2YzA0Y2JkZiBsZWdhY3ktdHJ1bmsKKzE4MDkxIDAzNzIwYTI2Y2ZlNzM2NTQ3Zjg2N2Y0NzgxMzg4ZDAyYjdjZGRkYmUgbGVnYWN5LXRydW5rCisxODA5MiA4ZmUyYTc5ODFkNzBiMzJhOThkYmE2NDBhNjQ0MjA2MmYwOTA3ZWQxIGxlZ2FjeS10cnVuaworMTgwOTMgYzk0YzJhZTc0NmYxY2IzYTY0MmE1ZmQxNGE4MzAzYzBhN2ViZTU5ZCBsZWdhY3ktdHJ1bmsKKzE4MDk0IGYxYWRlOGFiMTg2OTU1MzdjY2VjOTBmN2NlMzNhODZkNjY1Njk1NTcgbGVnYWN5LXRydW5rCisxODA5NSA3NWJmYmUzN2FiN2E2YzA5MDM0YmZhN2MwYTA2ZWI3NmM3NDZlOTllIGxlZ2FjeS10cnVuaworMTgwOTYgOWFmN2ZjZTM2Mzg0MTMxNzNhMDA3ZmNkMzQyMjQyZWVmMTlmOTA4MyBsZWdhY3ktdHJ1bmsKKzE4MDk3IDAyMjdiNTk2MWVlZjc0YTg3ODIzMGE2MDhkMGYxZjJhOTlhNWI4MGYgbGVnYWN5LXRydW5rCisxODA5OSBkYTQzYjE2OTg2YjY3NzAxZDhiNzA0NDU4N2M3MTVkYzJjNzkzNjYzIGxlZ2FjeS10cnVuaworMTgxMDAgNjU3NzUwYzFkNzgzNTRkODc4NzczZGNmMmMzMmQ4ZDkyNDg2NGM3MCBsZWdhY3ktdHJ1bmsKKzE4MTAxIDJjZGZjNDZlODA2OGQwZDhhZDk4MjNjNDVjODExZjQ2Yzg0ZWZmYWIgbGVnYWN5LXRydW5rCisxODEwMiBlOWU4ODI0ZTNkOGRmZDlhM2JmYjJlZDlmZDQ3YWMyNGI2ODQ0MDYyIGxlZ2FjeS10cnVuaworMTgxMDMgNzFlYTJiYjAxODg5NTcyZjk2ODc4NjY4ZDExNmQxNzY0MTQ5YTlkMCBsZWdhY3ktdHJ1bmsKKzE4MTA0IGU0ZWE0NGIxMGFiYmVmMjVhZDEwN2UwZmUxMTY0YjljOWVlNGQ2ODQgbGVnYWN5LXRydW5rCisxODEwNSA2ODM3MTM1MDgxZDQ3MjdlZWZkZTc0NzU0YmRmMmIwMjBhNjFkMzI3IGxlZ2FjeS10cnVuaworMTgxMDYgZGQwZDE5OTY3NGY4MmE0Y2Y1ZTMxZjcxMzE5M2MwZjRkMmY5NzE4MyBsZWdhY3ktdHJ1bmsKKzE4MTA3IDg2ODZmMjg0ZmE4ZDc0OTAxM2VjZjQzZDk3OTc2ODBkMDM5ZWY0YTggbGVnYWN5LXRydW5rCisxODEwOCA3MzVlZDg1NmRlNjBlNDE4ZjY3NTdhYzczY2JhZTRiYTBjMGE1NWMyIGxlZ2FjeS10cnVuaworMTgxMDkgMmEwNWMxZmJkODk0N2RkMjMzMDFmOGY0ODBlZWZlZGE1MWRjNTliMiBsZWdhY3ktdHJ1bmsKKzE4MTEwIGNjOWViMTg3YjczMDJjYTM3NzBiMTE2YTlhYzJjZDRhZGRjODg5NDUgbGVnYWN5LXRydW5rCisxODExMSA5NzIwYzJjNmY0MzVkM2Q2Y2RlYjNiOTAyZjRhYjIwMmIyY2Q2NTY3IGxlZ2FjeS10cnVuaworMTgxMTIgMGY5ZmQzZmQ3Nzk5YThhY2NmMWY1NmJiYWNlZmQxOTA5MzExMTBjOSBsZWdhY3ktdHJ1bmsKKzE4MTEzIDA4MTMwMjBiMjk3NzVlMWNmMmNmYTM0MTgwZjNhYWRlNDdlNjdlNDYgbGVnYWN5LXRydW5rCisxODExMyAyZmE0ZTM1MDgzZTAyMzQyY2EwMTRiZjViZmJhNDZhZWNiODE2YzMxIGxlZ2FjeS10cnVuaworMTgxMTUgYmQ0Y2Q3M2NiMGQ2ZDVmODhjZWQ3ZGY3NGQzMGQ3ZDE0YjIyNmJiNyBsZWdhY3ktdHJ1bmsKKzE4MTE2IDYxZjgyMzAwOTE0NWNhMTNhOGZiNWY2OTg3YTE2MjkyOTk2NjMzY2MgbGVnYWN5LXRydW5rCisxODExNyAzMTQyNjk4ZDE3MmM4NTdiYjk5MThjNTEyZjFlYjhmMDU2NjIyNjBiIGxlZ2FjeS10cnVuaworMTgxMTggYTE4N2FkODJjMzNmNDcyOTNmNDRhNGMzNDIzOGQzZDQ0YzYwNGFjMCBsZWdhY3ktdHJ1bmsKKzE4MTE5IGQyYWEyNjZhZTQxYzg4ZWI3ZWMwZTIxODkxZmVhMDZjNDVkOGJjMDcgbGVnYWN5LXRydW5rCisxODEyMCBiYzRmODllZWZiMDRkNDJlYjdlMWIxYzIzZjRhMzY2ZTgwMzAwNGRiIGxlZ2FjeS10cnVuaworMTgxMjEgODc3ODBkYmY4ZDE3NGIxYmRlNzUzYWY1MGU4NjE1NjEzZTg4YWIzZCBsZWdhY3ktdHJ1bmsKKzE4MTIyIDBkM2JhYmFjNDM5OGZiZTM4YjVmNDcwYWQ5YTg4YjRmMDJhMTAwNGQgbGVnYWN5LXRydW5rCisxODEyMyBiNTE2Mjk5ODBjODg2YzI4NGViNDNiNWRjYjQ0MjZiOTFjYTMxNWM5IGxlZ2FjeS10cnVuaworMTgxMjQgMzg3ZjMxYWMzMmU2NDhjNTQzNzk3ZjQzYTJmZjIzOTBiZDhmZmMyMyBsZWdhY3ktdHJ1bmsKKzE4MTI1IGM5NGMxYjY2MGRkYjE1NmE3ZWZiNGVkODFkMDBkODRmOGM0MTI1YzUgbGVnYWN5LXRydW5rCisxODEyNiBkNTAzMzVhYzU1ODAzYzA0OTExZjRjOTEzNTFjMjI0MzllY2Q1MWI1IGxlZ2FjeS10cnVuaworMTgxMjcgMDgzMjgxMGM0NjEyNDMzNzhjNTMwNTgxYTU4NDdjYjUwYTAwMTNjZCBsZWdhY3ktdHJ1bmsKKzE4MTI4IGQ1NzQwZTEyZWE4YTI5YTlkYWE0YWRhYjVkYWU1OWYzOTdiM2U1ZjQgbGVnYWN5LXRydW5rCisxODEyOSA3NGM2MTUzYWJiYzEwZDBkN2RlZDI0MGZjNDdlYjI1YmI4NzkwMjY5IGxlZ2FjeS10cnVuaworMTgxMzAgOTI5YzkyYzUwY2IyYmJlYzgzNjdjMDU4YmUwMTkxMjQwOWFmMDU3ZSBsZWdhY3ktdHJ1bmsKKzE4MTMxIDNlOTZmZDQ0YjlkMGY3OGZkNDkyNTk4MWM0MmFmZDVjY2I4ZDM4MDQgbGVnYWN5LXRydW5rCisxODEzMiA2MzgxZmE4ZDdkZjMzNzA0YmMyOTZkODA0ZWI3Yzc2ZTMwZWM5N2UyIGxlZ2FjeS10cnVuaworMTgxMzMgNjgxNThkNjRlODc0ZTk1MDc0Yzg5MTY3MGRkYjQ0YzBkMjdmM2Y0NCBsZWdhY3ktdHJ1bmsKKzE4MTM0IDg0N2Q5OWU0ZjI0YWQzZTIwN2U5YTZiOGQwYWJlN2UxOTRkODA2MDEgbGVnYWN5LXRydW5rCisxODEzNSA2NWQyNjVkODlkOGY0MjU1YzczNTdiOTk4ZDIyMGU5ZjZjMDc4MmNkIGxlZ2FjeS10cnVuaworMTgxMzYgYmEzNjc3ZTFmODFiNjVkYzc0YzQxZGVmOTVlZWQ1ZDYwNmJjOGQ2MSBsZWdhY3ktdHJ1bmsKKzE4MTM3IDExNjc2ZGRhZmYwMTVlMjg3YTBlNzgxZjI3YjliNjcwZTg2YTIwZDkgbGVnYWN5LXRydW5rCisxODEzOCAyNTQxMDYyZWQ0ZGQ5OGJhYzljYjFmYzcwOTRjY2YwYjI5NTIyYWQ1IGxlZ2FjeS10cnVuaworMTgxMzkgYTVjYTU0OTY5YTNmZmU3MjhhZjUzNjE2ZTc2ZGNiODMzOTEyYTczOSBsZWdhY3ktdHJ1bmsKKzE4MTQwIGFmMmFhODA3YWNkZTdmYTRjYTA4ODY0MzA0MjI0OTIxYmE2MTZlMDEgbGVnYWN5LXRydW5rCisxODE0MSBiZjIxZTQxN2JlZDIyMzQ5MjA1ODVjMzJiMzk5YmI4ZTQzYzg2YTUxIGxlZ2FjeS10cnVuaworMTgxNDIgNGM3Yzc3OWJhZDg3OWI4ZGViNzBkZGQzNWNlN2EyYTQ1NDhkYzI4YiBsZWdhY3ktdHJ1bmsKKzE4MTQzIGI5NDBhMGZjMjllMzM5NDkzNjUwNzdhMGY1YTFlODU3NzMzNzNiZjQgbGVnYWN5LXRydW5rCisxODE0NCA4ZjQ1OTJmNTQ5ODhkYmVkNDYwYTcyZDkzMTY0YzYzNGIyMWMzZGRmIGxlZ2FjeS10cnVuaworMTgxNDUgMTMyZTY5ODkyYWE1ZDE1YWU1MDg4MGFkMWM1YWExMTFiZmQ5YTRlMCBsZWdhY3ktdHJ1bmsKKzE4MTQ2IDNhN2FmZDNlNmM5NzgxNGI0MDQ4NDc4MTMwMzEwM2U3MTUxMThkM2QgbGVnYWN5LXRydW5rCisxODE0NyAxZjRhOWFkZTMwZWNjMTdjYjFiNzgzNDFkMWUwYjA1YjhmMzlmYTMzIGxlZ2FjeS10cnVuaworMTgxNDggMjcyYzI5NjUwODFjNjUxODYwMzY4ZDc0MWM1YzZlZmM5MTRjMTljYiBsZWdhY3ktdHJ1bmsKKzE4MTQ5IDIzYjExMDhkNmM4YjVmY2FkNzI4MjgwMWIxMjc4ZDRkMWJmNTE4YTEgbGVnYWN5LXRydW5rCisxODE1MCAxZjlkNWViODRiMGIyMGMwYmI2ZThhYmE2ZGIwNzZlYzg0NjM5NjkxIGxlZ2FjeS10cnVuaworMTgxNTEgOWRkN2VhYjgzNmQ3Y2ZjOWM1OWMzZWVhNmI5NjA0YTcwY2U0MzIzZCBsZWdhY3ktdHJ1bmsKKzE4MTUyIDA5YmY2ZDMwMDI0ZmIwODhhNTA4ZjY5MDJlZWY1MGU1MDM0ZWQ3NzYgbGVnYWN5LXRydW5rCisxODE1MyA4NDdkYzYxZTMwZjVjOGU4OGU5NzY5NWI0NDdhOTQ1YTA5YzY5NmRiIGxlZ2FjeS10cnVuaworMTgxNTQgNzU3ZmY4OGUxN2FhZGJkYTNkMzFjZjg4YzZhZjRmMjkzMGRmYjJmNCBsZWdhY3ktdHJ1bmsKKzE4MTU1IGU2YTEwODU3MjVhY2Y0NzhhOWU4MWViMzc1ZTQ3MzA1ZjhjZDBjZmUgbGVnYWN5LXRydW5rCisxODE1NyBmMjBkZWFlYWY4Yjk3YzIxZDZmZTAyOTU0YmVkZmI3ZmQwNDU2ODAzIGxlZ2FjeS10cnVuaworMTgxNTggODVhNTA5ZmFjY2M3OTZmMzAyZGZmOTY0ZGJmYTI5ZGJkM2I1NTUyOCBsZWdhY3ktdHJ1bmsKKzE4MTU5IDY4YmNlNWQ4M2Y3YjkzYTcxZWUyZDRhN2UzZDljZDg3ZjYyYTY1ODggbGVnYWN5LXRydW5rCisxODE2MCAwZGE0Y2NjN2U4Y2YzNmU2ZmIyYmY1ZWNlYmZiOGQ1YTM4NjVhM2I1IGxlZ2FjeS10cnVuaworMTgxNjEgMmE5ZDI3NjU2MjVlNWE3NzVkZDViZGE2MGQ0MzU1NGE3NjdjZDIyNyBsZWdhY3ktdHJ1bmsKKzE4MTYyIGIyMTEwMjZjZWY4NGNhODAzZDg2ZjlkYWEyYjk2MzY4MGU1NjJhYzggbGVnYWN5LXRydW5rCisxODE2MyAwODIwOTk0ZTJkNWU4NzZmMWUwOWJmMmM0NzVkODc3ZGMxYWMzNzNjIGxlZ2FjeS10cnVuaworMTgxNjQgYTZmM2VmMTA4MTVlY2I4ZGMxMGQ4ZDdiOWNhMDk0YWFkZGNhMGZiYyBsZWdhY3ktdHJ1bmsKKzE4MTY1IDA3ZjI0MjYxYzZlNmViZTNlZmNlNDQ4Y2U0OTQ2YzUxNmY3ZmIyNmEgbGVnYWN5LXRydW5rCisxODE2NiBhOTk5ZDA1OGZhYjU1ODE1ODM4YzAwMDYyMzViOTg3ODg5YTQ3YWU4IGxlZ2FjeS10cnVuaworMTgxNjcgZjg3MjFlODQ5NDI0NmNiYTQxODMwMTkyZWRiN2EyODQ3ZWNlYmM4OSBsZWdhY3ktdHJ1bmsKKzE4MTY4IDg0N2FlNDAwNzRkNGUwMDczNGIzMGEwZDRmNzZiZTI1YWJhNjQ5NDcgbGVnYWN5LXRydW5rCisxODE2OSAwNzU4Y2NiMzM2M2NmZDY0ZTlmNzZjNDg4MDExY2VkNmU1Y2NiODZlIGxlZ2FjeS10cnVuaworMTgxNzAgNWQyYTIxODVjNjUxYTQzMzliYTRlYTgxNjdkNjBhNjRiZjU2MGM2MCBsZWdhY3ktdHJ1bmsKKzE4MTcxIDMzMzM3ZTVhNDMwMGM5OGRhYTE1OWFjZDhjMGYxNThmNzUyNWVjMzkgbGVnYWN5LXRydW5rCisxODE3MiA4NmQwNjk0MTQwOTlmZTk4MzYzNTQyMWY5ZTViODcxMzJhYjA3MTNlIGxlZ2FjeS10cnVuaworMTgxNzMgNDk0NjhjMDA3YzBjZDVhZjI5YzM5NzFlZmY3NDk2NGM1NDE1YjNiNyBsZWdhY3ktdHJ1bmsKKzE4MTc0IDg3YjVlNDgwNzYyZjg2YjE3OTcwYzViM2NhOTAxYmE2NDY4MTcwMTkgbGVnYWN5LXRydW5rCisxODE3NSBiNDlmNTIyYmY4OTNlYTUyYWIwNTk5NjhhZjYyMTVkYWVhZDUwZjRmIGxlZ2FjeS10cnVuaworMTgxNzYgOGU4NjVmNWVjZjc4NDFmZDQxOTEyYWIwNGUzMGJkMTNmN2M4MWY0ZSBsZWdhY3ktdHJ1bmsKKzE4MTc3IDEzOTc1YWVjNTE1MjE1NjAxNzMzOGZhZmYxZTI5NmUzZjhiM2NkY2MgbGVnYWN5LXRydW5rCisxODE3OCA4YWE5NDdlMWVlZTgyYTJlZjJlMmNmNjBkMDAxMWMwNDM4YWZjYmE1IGxlZ2FjeS10cnVuaworMTgxNzkgMDllYzg4MmNkZTYxNDQyMGI5NTUxYTM4YmMxOTdiMGRhNzZhYjZkYyBsZWdhY3ktdHJ1bmsKKzE4MTgwIDNiZDEzYTJmYzgzODI0ODRlMDAyYzUyZTczY2UxYjVhNWEyMzQyOTIgbGVnYWN5LXRydW5rCisxODE4MSAxMWUzYTZlMTZhOWYyMjVmYTYyYTg4MTRkZWMwNGZlNGMwM2UwNmQ4IGxlZ2FjeS10cnVuaworMTgxODIgZDE3YmExNDE0ODBhZTdhNjNiNzc4MjcwYWNlNDZmZTFkNGY5ZTU5ZCBsZWdhY3ktdHJ1bmsKKzE4MTgzIGZkMTcyMTdkNWJhODY4YWYwZmVhMzQ3YzhhOGNjY2E5ZmIzYzgwZjAgbGVnYWN5LXRydW5rCisxODE4NCBkOGFjYTNjODkwZjdhNGZjMzUyODU2YjJjMWVlNDhiNTYyMzUwNzI4IGxlZ2FjeS10cnVuaworMTgxODUgNjU1OTRmZWI1NTI3NTdlNzZlYWQ5NjcwZTUzZDBiYzQzZWJmNjcyOSBsZWdhY3ktdHJ1bmsKKzE4MTg2IGU1ZDRjNDI0YzQ0ZjkzNmI3NjRmOGE1MGEzZmNhZGNmODMzMjNkZDcgbGVnYWN5LXRydW5rCisxODE4NyBjMTg0NmQzMzFkZTlkMWQzOTc1MmQ1ZTUxMTMwMWYzYmZlYjc5MjQ3IGxlZ2FjeS10cnVuaworMTgxODggMGQ2M2MwY2E3YWU0MjIzOTQ2NTNlYzFiMTQ3MzM0ZWEwNGY3M2Q5NCBsZWdhY3ktdHJ1bmsKKzE4MTg5IDVkNTg2ZDQ1Y2I1YTUyNGFkOGEwM2Q4MTg5ODUyNzFlNzc4ZTk0ZjkgbGVnYWN5LXRydW5rCisxODE5MCA4MTg5MDRhOTljYTM3MzE3ZTFjMjM3YjE3ZWJmOGI3YjcwOGVhMTY1IGxlZ2FjeS10cnVuaworMTgxOTEgNzg4YjUyM2Q0ODI3YjI0Njk0NmMwNTNjNTVmODQ4YjYwNGNmOTJlZiBsZWdhY3ktdHJ1bmsKKzE4MTkyIDEyYWVjMzM4MWM5NDZiYzdiMTg4NzBmMjM1ZDBhZjlhZDAyNzk3NmQgbGVnYWN5LXRydW5rCisxODE5MyBkNTE1N2M4YmIxMWE0ZGRhMTJjMGM3ZjFjZmQ5MmI4ODM0MzhiMjVlIGxlZ2FjeS10cnVuaworMTgxOTQgMTAwYzUzM2Q5YTNlNjE1NjZkM2M1MWVhNzA0YmI2YzQxYjg3N2JiMiBsZWdhY3ktdHJ1bmsKKzE4MTk1IGVjNzk4MDBmNGMyNzcwMjVmMDA3Y2FkMzNjZDViZWE3ZTA0NjQ1ZmEgbGVnYWN5LXRydW5rCisxODE5NiBiYmM5OTFhYjZkMzIyMWE2ZjUzZDUyYzVlZjUyMjE4ODZmZWRmODg0IGxlZ2FjeS10cnVuaworMTgxOTcgYTgxZjkyMDI4MDNkYmQyZTU1MTYwYTE0OTU1OTU3ZTMyMDRlZDFhNSBsZWdhY3ktdHJ1bmsKKzE4MTk4IGNhMWFlMjFhMzAzOWIzNDFkM2U2NjU1Zjg0OTZkZGI5MzcwYzA3YjkgbGVnYWN5LXRydW5rCisxODE5OSBjMmQ3NDUxYjQyZjY2YzUyOGI1MDMyNmZkYWE0ZmUxYzI3ZjAwYWJlIGxlZ2FjeS10cnVuaworMTgyMDAgZDk5YTBmNmNmY2UyMGM4YWU5OTYyNjY2ZTZjZTM5NTVkMGExNjEyOSBsZWdhY3ktdHJ1bmsKKzE4MjAxIGMyZDEwMjc0YTIxNDg5MmY1M2Y3MjNlMjE2Y2IyYjhkMjkzNzc5ZWQgbGVnYWN5LXRydW5rCisxODIwMiBjYjExZmE1YjExZjQyM2RmYjUzMzg5YWQ0ZDIyMzE1OTkwZWU3NTVmIGxlZ2FjeS10cnVuaworMTgyMDMgYWNmMmIxOWU0MzQ0MzIzMTRhYjY3MDIxM2I3NzJjZGVkM2I4MWY4NCBsZWdhY3ktdHJ1bmsKKzE4MjA0IGU1OWY1MzhiYjgyOTNhZjI4ODUxMWQ1OTBlYzQ2NGJlZmQ2MTMzMWQgbGVnYWN5LXRydW5rCisxODIwNSAwM2RjNzYxZDJjYzQ5ZTg4NDg1NmFkMjExNWFlNjU1MzZlNzdkNmM3IGxlZ2FjeS10cnVuaworMTgyMDYgNTYzZGNmZWMyYWU5ZTZjM2FlMTlmZTViYzdjOTc1Yjk4NTkxY2ZhMiBsZWdhY3ktdHJ1bmsKKzE4MjA3IDMwNDg3MWQ2ZTg2NjI0NDY3ODQ3N2JlMTk3MzkyNDFiYjMyZDM3Y2QgbGVnYWN5LXRydW5rCisxODIwOCBkNGE0NjMyNmZhZjQzNjk0ZWE2NzM5ZWYyMGU3NjA3MzU0NmRhM2Y3IGxlZ2FjeS10cnVuaworMTgyMDkgMGMxOTY3MmQ0N2JiMWUxNzExY2Q0YmIyOTEwZDY3MzllNTBhM2IxYyBsZWdhY3ktdHJ1bmsKKzE4MjEwIGIzZGViZjY0N2I1M2VhODMxMmJiODYwYjc1MjU4MTAzOGI0MzViOTYgbGVnYWN5LXRydW5rCisxODIxMSBhNjIyNGRhN2I0ZTQzNWNiZmYyZTE3YTk0ZTFiNTg1ODU5MWY4ZDY5IGxlZ2FjeS10cnVuaworMTgyMTIgM2U1NGNlZmM1OGM2MDFlOGYyMGUyOWQ5NzY3YWU5NDAyM2Q4YjJlMyBsZWdhY3ktdHJ1bmsKKzE4MjEzIGY0ODBkNTJjMDc2MGFkYjE0OTJlMmMyMzVkZjI2NmE5NmY1Zjc1OGIgbGVnYWN5LXRydW5rCisxODIxNCA3YmU5ZWRjNGQ1ZGIxMWIwMjZkYzdjYTQ4ZDkyNjFkOWViYmEyMDRhIGxlZ2FjeS10cnVuaworMTgyMTUgMmEzNjk2ZDMyNzIxZTcwMDlkMjlmODdjMWQwNTEwZjI2ZjA3MWM0OCBsZWdhY3ktdHJ1bmsKKzE4MjE2IDZlNzBiYWE0ODdlZDUyMzRkNGIzZmJkNjVmYmQyNGVhYmUwN2EyZTkgbGVnYWN5LXRydW5rCisxODIxNyBlZTI3MWMyMGIwNWYzYjI0OWEwYzIyN2ViZTBjNmRmN2RmZGI4ZmJmIGxlZ2FjeS10cnVuaworMTgyMTggYWIzNDM4Y2YxZjNlNmIzNmE5OTBjYjhhMjVhYjEyZTJjOTViYjYzMiBsZWdhY3ktdHJ1bmsKKzE4MjE5IDEyYjkyYTM1NjQxYmUyZWVjYmE2OGVmZWFjYWQwYmVmZTQyZDgzOTEgbGVnYWN5LXRydW5rCisxODIyMCA3NGUxZDc5NTIwZmQ0Y2RlY2NlYWZhYWNkZDNmYTFhZThiYzdjM2M5IGxlZ2FjeS10cnVuaworMTgyMjEgYTNhZjE0NWQyNTMxZTBjMzY0MjdmYzUxMzc3NGYwM2EzZTM0NTkyNSBsZWdhY3ktdHJ1bmsKKzE4MjIyIDlhMTdjZGNkMzMyMDM1OGRjMTY1MzNkNDY4NDcyYTFhMWI4YmQ0NjUgbGVnYWN5LXRydW5rCisxODIyMyA0N2Q5ZmJlNjUzN2M4N2NkNmRiOTNjMmJjNjc2N2FmOWQ2YTZjMjAyIGxlZ2FjeS10cnVuaworMTgyMjQgMDk5NTJkNmVkMzcyNTlmMTZkNTYxNjUyYjIwMDUxYjg1NmM0YWM4OCBsZWdhY3ktdHJ1bmsKKzE4MjI1IDFlNGRlNjAxMDUxYzE2MjQxMThkZWEzMzY0MzkxZTU3NDc4ZjI5OTUgbGVnYWN5LXRydW5rCisxODIyNiAzYzYwODMyNDdjZTc1NWM5NjAwMjc1MmVhOWM1OTNlNzc0NWY2NDk4IGxlZ2FjeS10cnVuaworMTgyMjcgODI3NWQ4NjQzZTc5ODkxMzRlZGIwNDdhNTNhMjMxYjQ5MDk4OWVmYSBsZWdhY3ktdHJ1bmsKKzE4MjI4IDkwMGYyNjZjNWQ4ZTJjMTkyNzI0NmY3NzRkNmFiOTI4MDRjNDUxMzkgbGVnYWN5LXRydW5rCisxODIyOSAzYWJjYjY5NjY2MTc1OTI2NGNhYjZhNTYyODY5ZWU4YTBlMzlmMzEwIGxlZ2FjeS10cnVuaworMTgyMzAgMmUxYWIwYzk0MWMwZWNjMjdhZGVhMDkzM2MzYWYxZjc5OTAzMDU1OCBsZWdhY3ktdHJ1bmsKKzE4MjMxIGM3ZjVkZDJiZGM3ZDY5ZjUzZTllZjc5YjA5OGMyZTZmZmM0ZjQ1MTQgbGVnYWN5LXRydW5rCisxODIzMiBmNjIzMzkzOGZmODliMGU2NDhmNmYzMTAyMGU5ODFlNWFkNjk3YzQ2IGxlZ2FjeS10cnVuaworMTgyMzMgMDE5MjJhMGY2ZjkyYjJlM2ZlYjNmOGM4OWVhOTllMjE5OTI1ZmM4NyBsZWdhY3ktdHJ1bmsKKzE4MjM0IGE4MjZhNDZiYWU1NGFjOTBmMGZhOWVkMDFmZDI2NTIwZGJhY2VkZDEgbGVnYWN5LXRydW5rCisxODIzNSBjZWU5NmIzOTFmZmMyNjA2NzVlYjU2OTgxMmFkMjE2ZDZlNjE4YmM0IGxlZ2FjeS10cnVuaworMTgyMzYgNDkzY2E5ZTQyNjBlNTJhMjM3ZjQwZGQzNDc2NWJjYTRjODgxOGE4ZCBsZWdhY3ktdHJ1bmsKKzE4MjM3IDgzY2RkNDU0ODVhNTczYTJhZTViZjg3MjRiNzE1MThlOTZmNjE1MGIgbGVnYWN5LXRydW5rCisxODIzOCA5YjFiZTFkODQ4MTA0NjczOTc0NjgwYWNmYzRiNDhmNzMwOGM1NzE5IGxlZ2FjeS10cnVuaworMTgyMzkgN2E4MmY4NDI5MGY3YmJkMzA0ODhhMTU1YTg2YjM5ZDJiODMxZjJkNyBsZWdhY3ktdHJ1bmsKKzE4MjQwIGJiMDA2YWQwMGQ5ZWFjNmNmOTU3ODM3YTEyZDNiYTgzZmJmNGY4MjIgbGVnYWN5LXRydW5rCisxODI0MSA1MmMyN2I3MTE2ODY5MDA3MjQ5YjYzZjE1NTVjMmE0ZDA2MmUyOTYzIGxlZ2FjeS10cnVuaworMTgyNDIgYzEwNGYwMGM5OTA5ZWIxODYwNWQ4NzgzOTAyODNjYTk4N2QxNWJmYSBsZWdhY3ktdHJ1bmsKKzE4MjQzIGVlYjdjOGE1Yjc5ZjY0M2MyZGI3N2I0NzA5ZGI3YzY5NDMzNTNhZmEgbGVnYWN5LXRydW5rCisxODI0NCAzY2IxMmUwZTdhY2QxMDJkYzM4YjZjZjRlNWI0YWIzMDE3ZTQ1ODY4IGxlZ2FjeS10cnVuaworMTgyNDUgMjJkYmNmZmM1NGVmMTBmODgwM2NlY2E0Y2FkZDVkMTI0ODBhYTIyMSBsZWdhY3ktdHJ1bmsKKzE4MjQ2IDE2YzEyZDE2OThmNmFkNjBkMWQ2OWQyYmQ2YzUxMWUyYTRjOGE2MjcgbGVnYWN5LXRydW5rCisxODI0NyBiMzQ2OWViNzhiYzY2ODExMzNkYTI1ZGRlNTBiYTczMjcwYzI1NmE1IGxlZ2FjeS10cnVuaworMTgyNDkgZjI5MDFiNmFjNWVkOTQ2OGM1NjJjOTA0ZjI4MzI4MWJjMDgxMTYxZSBsZWdhY3ktdHJ1bmsKKzE4MjUwIDg3YTViYWUxYjk0NGE5OTkzMWY3YjVjMWI3NzcyZGI5NmIwZTBkYjEgbGVnYWN5LXRydW5rCisxODI1MSBmNjJlM2U3ODcxYmU5MjM5MmNiOTNlZDIxNGE2MDIxZmUzZGQxMTliIGxlZ2FjeS10cnVuaworMTgyNTIgNTE5MmJmZDdhOGJiZDU5MDE3OTMyNGUwMmRjNjliN2ZlOWNmNWJjNyBsZWdhY3ktdHJ1bmsKKzE4MjUzIGZhZTViMWU0MTQ5MWQ2MzZhOTRkZjUyYWM0Y2RmYzgwNzZiNjExZDEgbGVnYWN5LXRydW5rCisxODI1NCA4NmYwNmMxNTNkZGE0YTNhMzQzNmI3OTczMjEwMWUyMWZhOTVhNWE2IGxlZ2FjeS10cnVuaworMTgyNTUgOTZjMzk0YTQzYjViYWZjNjcxZWJiMDQwZjNlOTEyMDNkMGQzZWViNSBsZWdhY3ktdHJ1bmsKKzE4MjU2IGQyNjViZjRhZGE3YzkyMTBmNTZkZjNkOTUyOTgzNWI3MzU4YzFjZDkgbGVnYWN5LXRydW5rCisxODI1NyBiNzE0NTlhZWRhOTU2OGRlNzljYTM4YjQ0ZTllZmQ2NjczYWMzMWMyIGxlZ2FjeS10cnVuaworMTgyNTggNWQ1YzUxMzA0ZjdjNWFhOGM3MDUwMjY5MjRkZGNiMTNhNjk1MDVlZiBsZWdhY3ktdHJ1bmsKKzE4MjU5IDNhYjdmYWFlODAzYWYyNGMzYzY3MGNlMDE4YTY2ZWI2YzI3ODIxMDIgbGVnYWN5LXRydW5rCisxODI2MCBhYTFlYzI3MGYyZDM4Yjg0ZTAyYzE3YTllNmM0OGI5OTcyZWRiZmMzIGxlZ2FjeS10cnVuaworMTgyNjEgOGY4MjMxNmY2OWQ0MDUxZmI5ODFiZGVlZjc3ODkxYjc4MjQ5ZTc4NiBsZWdhY3ktdHJ1bmsKKzE4MjYyIGM0NWM1MDgwYzg0NDgxMGYyYWQzMWM5MTZkZTNhOGM1NzNkNTcwMzIgbGVnYWN5LXRydW5rCisxODI2MyBmZGVkNWM5ZWNjOWJiZjRhMGQ4ZDQzZmNiMGUzOGJkNTEwYWU5MzY5IGxlZ2FjeS10cnVuaworMTgyNjQgNWI0YWJjZWZmNTNkNGQzOTVhYmMyMWFiNzk3NDdlYzFjMmQ0ZDA5MSBsZWdhY3ktdHJ1bmsKKzE4MjY1IDlhNjg5NGY4ZTFhMDk3MzVkOTkzZjI0Mjk4MDhmZjZlMWRlYmYzMDggbGVnYWN5LXRydW5rCisxODI2NiBhZjFlOWU2NGVkOWQyNDE4OTBkZWE2NDVkNzNjMGZjMjUwOWRiZTk2IGxlZ2FjeS10cnVuaworMTgyNjcgNzcxNzEzMThlMzIxMjg3Mjk4NDJlNjcxYWQyNjQ5OGFmM2FhZWEwNSBsZWdhY3ktdHJ1bmsKKzE4MjY4IDM3NTIyOWMzYWMwZDk5ZWFjYWM5YmU0MWI5Njc4NGZmNDBlMDEyYmYgbGVnYWN5LXRydW5rCisxODI2OSBkZGQ5MDNmYjZhNzEwODAzN2NkNDk4MjM5ZDkwYTFmMGJlMGI3MDdkIGxlZ2FjeS10cnVuaworMTgyNzAgOTljYTQxOWNhNThiYmI3ZTEzZGUwOWRiMTBmZDE4NzFjZjIzNGIzNSBsZWdhY3ktdHJ1bmsKKzE4MjcxIGI2NDhjYjBkMTk4OGYxN2Y0NDU5ODRiMTAxYWQ1NTA2MDY3MWY1YTMgbGVnYWN5LXRydW5rCisxODI3MiA1NmU5N2U3Mjc1NjljM2EyNjMxMDg3ZTc3MzgxZTZlMjQ5MmNkYzFiIGxlZ2FjeS10cnVuaworMTgyNzMgODc2Y2Y3YjNkM2RmYjFiNWI5ZjEyNGQ3OWFkNjE5ZGY5MDAxMzBlOSBsZWdhY3ktdHJ1bmsKKzE4Mjc0IDRhZTQ5MjliMTJmZmUxZDg3MzE2ZTdmODAyN2YwZDg1ZDNjZWFjOGMgbGVnYWN5LXRydW5rCisxODI3NSA4NmY0ZTFlZjgxY2FhYzA1NWI4ZGM2MjAyYTJhN2M3MzkwNWY0ODIzIGxlZ2FjeS10cnVuaworMTgyNzYgMGYwMGI2YzdiOWI5NWUxMzY0ZDBiMjY2MWIxODFmMzQ2OGU0ZTNjNCBsZWdhY3ktdHJ1bmsKKzE4Mjc3IGM4ZDRlNmYxYjVmZTk3NWMyNzZmMTk1ZmE4MTRkOGIwNmJmOGFmNDQgbGVnYWN5LXRydW5rCisxODI3OCA2YjI1MjRlOWM2NzJlODA1ZDYwZDY1NWU4MTYzMDhjZTJlOWU2MzRjIGxlZ2FjeS10cnVuaworMTgyNzkgMDY0NjVlZDgxODI2MzA1YTg4N2RhYTIxODY4OWZhZDVkYTM0NmQ3YyBsZWdhY3ktdHJ1bmsKKzE4MjgwIGJkNDFlNjI3M2VkOWIzMTQ2NjljNzgyYTM5OTVjMGY0Mzk1Y2JhZjUgbGVnYWN5LXRydW5rCisxODI4MSAyN2U0ZjU2MDFhYTU4OWMyMGRmNzYyOGZmMTJmYTUyZGJjYzZjMjQ5IGxlZ2FjeS10cnVuaworMTgyODIgNDkxODUxN2VkNmI0Y2I0ZjBiM2ZhZjgxNDU5YmI2NmUwN2QwZDk4NSBsZWdhY3ktdHJ1bmsKKzE4MjgzIDM5YWI4MjdlNzJiZDZlNzdiZGUzZDkzNDJhOWY1YmM1OGNlYjBmY2MgbGVnYWN5LXRydW5rCisxODI4NCA3ZWJkZmU0MjVjODFlYjYyMzY3NjJiODM3ZDI0NmRkYjU5YWI2MGMzIGxlZ2FjeS10cnVuaworMTgyODUgOTdlYTBiNDk0MjJmZmYyYTg0YWI5YjlmMmI4NDFlZmQ0NTJiNjcyYyBsZWdhY3ktdHJ1bmsKKzE4Mjg2IGJlMzMwNzkzNjBjNjY5NGFjZDA1NzE3OWVkYWFmMTE3Yzg3ODFkY2IgbGVnYWN5LXRydW5rCisxODI4NyBhOTM1MTA1MTkyM2UwYjA0NTE1YTIzODk0YmMwMzFjYjg4YjVhMzdiIGxlZ2FjeS10cnVuaworMTgyODggYzBmMWViZDMyMDcyMzkwMDgzNTA2MWY1NTAxM2M4YjA0ZGVkOTk0MiBsZWdhY3ktdHJ1bmsKKzE4Mjg5IGM4MzNkY2RiM2ExNTU0N2E5YmQ5MTFmNjkzMmU2M2NkOTAzN2E2NjkgbGVnYWN5LXRydW5rCisxODI5MCA3OGE3ZjhhNjRmODVhNzQ4MTdiNTliYWY3ZTdkMTNiNTA1YTRlMDBlIGxlZ2FjeS10cnVuaworMTgyOTEgZDVhNTQyOGU5NjVjNGQyNTBiYjQ1YzE0NWQ4NTQxYjNlN2U1MDQ0MCBsZWdhY3ktdHJ1bmsKKzE4MjkyIDg0OTY5ODU1MGIzMmE2OGI5NWY1ZDEzNjM3OWZhZjNiM2YxN2UzMTggbGVnYWN5LXRydW5rCisxODI5MyAyMDQ5ZDU3MGNhNWE3YjBlNDNjYTE1NTcxZDA1MTc3YTY0NWI0YjM5IGxlZ2FjeS10cnVuaworMTgyOTQgYWM2ZmJhMGVjYzI5MDI0Mjg4ZmJmN2E2OGI4M2I0YjFkMjUwZTZjOSBsZWdhY3ktdHJ1bmsKKzE4Mjk1IDUzYzlkMTVhZDk4ZWQ2OTM0ZjExMTQ4YjI0NGFlMmFlOWE4Mjc4OTkgbGVnYWN5LXRydW5rCisxODI5NiBmYjEwOTM3MDYwY2NiYzM4OGQ4ZGQ2MzdiY2VlMmRmODU3ZjUzNzhjIGxlZ2FjeS10cnVuaworMTgyOTcgNGU4NTc3ZmI5NDA3ZmY2ZTRlNDAzMTg5YjMwZDc1N2YzYThlNmM4ZCBsZWdhY3ktdHJ1bmsKKzE4Mjk4IGQ1ZjA2OTZjMzdlODFiYWIyZjkwN2JmOWM0ZjljMjBiNzZhZDdjOGMgbGVnYWN5LXRydW5rCisxODI5OSA0MzM0NTg2NTFlYjQwMjc5NTRmYjczMjVjMDM2OWMwZGI3YzQzOWFhIGxlZ2FjeS10cnVuaworMTgzMDAgMzI4ZmFjMWNhMjEwZmNiNjAwYjM1YmZhNjQyNTY2NGUzZWNlMmZhYiBsZWdhY3ktdHJ1bmsKKzE4MzAxIGVmNDY2YTE5ZTNiYzZhMjU2ZDAzNDM4MDk0ZGU3NDFlNWI2NTZmODAgbGVnYWN5LXRydW5rCisxODMwMiA0YWM1NTVhODc2YTIzZjUwMGY3NjRmODY0MTc1MzY0ZDZhNzhmYWIyIGxlZ2FjeS10cnVuaworMTgzMDMgYjg1NWM4OGM2YWY2YTQxNmQyODEyNTE1YmU1NmMzNzgwNzkwMTk2NyBsZWdhY3ktdHJ1bmsKKzE4MzA0IDY4ZGU5MTg1YjQxZTJhMzFjZTIzY2E2ZTNiOGNjNGI2NDhmMmMwNTggbGVnYWN5LXRydW5rCisxODMwNSA3ZTUxNGYxZmUzMWZjZDRmYWZjNjA3YmYwZjgwMWVjNDZkZWEzNWMyIGxlZ2FjeS10cnVuaworMTgzMDYgZGNkMmJlYmMxODBlZjQzYjVlMGE2NTRmOTA2ZWVlOTNlZTc1OTE0YiBsZWdhY3ktdHJ1bmsKKzE4MzA3IGY4MTNlZGUxMzRiZjY4ZDQ1YzcyY2MwMzBiMDRhNzYwMmE2ODJiNmYgbGVnYWN5LXRydW5rCisxODMwOCBmODIzYjlhYTBjMDM2MTUxNDk4NDZiNzUyOTU2YTk0M2NlOGQxOTI4IGxlZ2FjeS10cnVuaworMTgzMDkgMzFmNzBjYTA2YzY4Zjk0YTc0ZjRhNGQ2ZDc3NjQ4OTVkMjY3MjFiMCBsZWdhY3ktdHJ1bmsKKzE4MzEwIDlhYjdhNTk3ZWVmZTkxNDI5ZWRkMDg4N2IzYzIyZjNkODc3NTg0ZTIgbGVnYWN5LXRydW5rCisxODMxMSBhZTQ5MDA2YjJkOGZhYTZhOGI4MDgwNWJhMzVjYjc0MmUwNzdkNmU3IGxlZ2FjeS10cnVuaworMTgzMTIgZGI2ZDliYjdlYzk0NTNiNzc0Yjk4OGY0ODFkNDM5MGI4YTk1ZTczOCBsZWdhY3ktdHJ1bmsKKzE4MzEzIGYyYzE3NmQ4NDZhNGE1YjkwY2MxYzdiYjI5Nzg0NmI5NDE5Y2NmNzggbGVnYWN5LXRydW5rCisxODMxNCA3NzIxZmI1MDk0NjIzMWQ5Zjg2M2UyM2NjODc2ZmUzODYxNzg5ZmZmIGxlZ2FjeS10cnVuaworMTgzMTUgY2U3NzczOGI4MWFjYmY2YmRmZjQ5MTgxNWQ4M2NkYThjZjQyOWY5YiBsZWdhY3ktdHJ1bmsKKzE4MzE2IGQwMTQ2ZDEyODg5N2U3MzU0NjYxZDkxNDg4Mjk2OGMwZDcxZmUxNGEgbGVnYWN5LXRydW5rCisxODMxNyA1OTcwODlkZDI2MDlhNWVhMmUxZWQ1N2E1NjUzOWM5ZjFmMWIzMjkxIGxlZ2FjeS10cnVuaworMTgzMTggYWYzOTdmN2RiYmQ1ZWI1MDc1N2U5ZTViNTY2ODhmNGE0YTM4YWI0YiBsZWdhY3ktdHJ1bmsKKzE4MzE5IDVkNzU4Y2Y1MTExZDdkOGNmODQwMTBmMTQ5MWE0NzI3NzY2ZTljMzYgbGVnYWN5LXRydW5rCisxODMyMCBhNzlkMzYyNGY4NDU0YTZkNDI4MjE4YjhjZTQ0ZTdlZTMyOWZmM2ExIGxlZ2FjeS10cnVuaworMTgzMjEgZDM5N2Y2Njc3NWU4YmM0MWNhNjNjNTUwNjUxMzZjNjk4NzA4Yjg1YiBsZWdhY3ktdHJ1bmsKKzE4MzIyIDlmNzc1ZTI0OWJhMTgwODQxOTZiNTYyMTlhN2U0YzU0NTliZTE0OWYgbGVnYWN5LXRydW5rCisxODMyMyBiYmU4YTY0ZTIxOWU1OGY1ZmI1Mjk4NDlkNWExY2U2MDI4OGZjZDM4IGxlZ2FjeS10cnVuaworMTgzMjQgYWFhOTFlZDNmY2ZkMjlkNTk0MDMyZDEzYzc4YzI1MTgxNjc2ZDg4NyBsZWdhY3ktdHJ1bmsKKzE4MzI1IGM3ZjIyNWFlMzE2MDViMjAxMzUyZjVmM2VhYjE1ZTQ5ODBjYmE3ZTIgbGVnYWN5LXRydW5rCisxODMyNiAwYjg0YjMxYWE5NzUxODk3ZmI0Zjg2NTczYTJiZmFmN2ZlOTdjNmQ4IGxlZ2FjeS10cnVuaworMTgzMjcgOTczMWJiYjUyZmI0YWM0OWI2ZTNlNWM3YjY5Yjg0NzQ1MTRmNDMyMiBsZWdhY3ktdHJ1bmsKKzE4MzI4IGQ3ODY0MzQ1YjFjOGE4YzRlN2FiOTJiNTkyZjBkM2NkZjMxZTAyODkgbGVnYWN5LXRydW5rCisxODMyOSAyMTk4NmNjMTRiYjJhN2QwYzQ1NzFlMjc1OGZhODQ1ZWU4MjMwOGY4IGxlZ2FjeS10cnVuaworMTgzMzAgYWMyMjBjMzFkZGQ3ZTlhYjAzZDIwOWEyYmZmZDdlZDM5OWE1Y2I5MSBsZWdhY3ktdHJ1bmsKKzE4MzMxIGUwZDhhNmYyZDA5MTFiMjZkNmZhNWM1MzQzY2JlODRjOTY0YjVmM2QgbGVnYWN5LXRydW5rCisxODMzMiA4NmNmNjQ4MGQyZmE2M2I3ZTRkYTMyYjMxMTNiNDVlNDc1OTk5MTQ1IGxlZ2FjeS10cnVuaworMTgzMzMgNDg4MDRkYWI3ODhjYTZkYTVjMGVkZTUwOWU0YmQyZGRlNTYwNmI0OCBsZWdhY3ktdHJ1bmsKKzE4MzM0IDJlY2U4ZmE1NjgwODA3OGI3NDU2NmZhM2U2YmU3MjRlMjFiMGVmNTUgbGVnYWN5LXRydW5rCisxODMzNSBlZjkxMzkzMzc1NDc0ZmE5ZDZkMzQ5OTQyYzM2ZWI3NzllZjQ0NzMxIGxlZ2FjeS10cnVuaworMTgzMzYgNjU1ZjRjNGJiOTQ0OWIxZGE2MGQ0ZGIxY2NjY2VhMzE0YmNmYTU3MyBsZWdhY3ktdHJ1bmsKKzE4MzM3IDNiZTFmNWM1MjBhZDUyNWYyZjU3NjkwMjViYzAwNGM2OGE1ZTFjNWQgbGVnYWN5LXRydW5rCisxODMzOCBhNWNmZjhjMWY0ZTRhNDIxNGI4ZjM5Y2VmM2MwNjg2NzMyMDYyZGRlIGxlZ2FjeS10cnVuaworMTgzMzkgODU2YjJiYzIxNmY5ZmIzODI2Y2YyMTUxNGE1NDYxNGMzYTE1NDY0OCBsZWdhY3ktdHJ1bmsKKzE4MzQwIGU5ODk2NGJjMjY4MTQzMjMxNDBjZjE5NGUzMzdlMmU0ODcwZjRiMGUgbGVnYWN5LXRydW5rCisxODM0MSAzYzMzZjJjMzU3ZDNiNmM3NWY0YzMwNjllZTE5YWQxZDBhYTdkNjU0IGxlZ2FjeS10cnVuaworMTgzNDIgMDdjMmUxMzYyNjBjM2VjZTQwMjY1ZDg1MjBmMjJlMWQ5OWNjZjFjYSBsZWdhY3ktdHJ1bmsKKzE4MzQzIDY4MzhlNzJmOGRkMjcwN2RhMDhlMjEwNTk2ZWU2ZDliOGQwZDQ1ZjYgbGVnYWN5LXRydW5rCisxODM0NCAxMDVjMjUwNTJkZTk4ZWM2YTQ2NDU2NGQwNmUxZjljNjQ0NzkyNGQ5IGxlZ2FjeS10cnVuaworMTgzNDUgMDc3MDUxNzdjYTZiZWQ5NWE4ODI2NjQ5ZDU0OTljMTA0ZWU3ZjYzZCBsZWdhY3ktdHJ1bmsKKzE4MzQ2IDEwOTFhZDlhMDMwM2NmYzhhMjZhMzlhMzVmZTQ4ZmU0M2ExODY3ZDkgbGVnYWN5LXRydW5rCisxODM0NyBiMzM5OGM0NTJkOTU5MWEyMTQ0NTA0MDYwOWFiM2EzMDI3ZDdhNDcxIGxlZ2FjeS10cnVuaworMTgzNDggZjBjYTRjNjc5NTdiNTdhOWYyY2M1YWYwNmI5NWEwY2VhZTFjYjJiNSBsZWdhY3ktdHJ1bmsKKzE4MzQ5IDJkMWJiYmFjNzZkMzA3YTBmOThiZWVjZjVkYzM0MDNlMjQ4ZGVjNTcgbGVnYWN5LXRydW5rCisxODM1MCAxMGY2ZTE5NTY3MWRmZTdmN2E4YjhlOWEwNWQyMmUxODUyY2VkY2FiIGxlZ2FjeS10cnVuaworMTgzNTEgOGE1OTZkMTBiYzcwODUzYmJmYmFhOTFjYWRjMmY5MDcyMTFjYjMzNyBsZWdhY3ktdHJ1bmsKKzE4MzUyIDU4YjRhZTRlYzU1YzZlOGNlMmIwYmFmMjc5ODcwMmZhZjdhNTEzMmQgbGVnYWN5LXRydW5rCisxODM1MyBmNjQwMzkwMjNkNjQ5MjNhMDlmYmU0OGI4NDhjNDQ2OWYxMWY0OGQ5IGxlZ2FjeS10cnVuaworMTgzNTQgZmQ4NGIzNTI0MTQ1NzYxMzg5ZDZjYmQ4Zjk5NjkwY2NiYTdmYjQ4YSBsZWdhY3ktdHJ1bmsKKzE4MzU1IDhiNTk2NDUxZjFjMThmMTc0ZmRjZmE5YWVhM2ViYTM5NDkzZWY2MjYgbGVnYWN5LXRydW5rCisxODM1NiAzMmM0NDBkMmIwZGZkNmRkMWM3NmRmYzQ3MTc5YjJmNGUwYjFkMTU1IGxlZ2FjeS10cnVuaworMTgzNTcgMjZkNDE0YzBhMDkyMDJlMGJmMDUxZGI3ZDhjOTA5MDRhMGE2MTNhNyBsZWdhY3ktdHJ1bmsKKzE4MzU4IGYzYmY1ZjA4MmEzZjhhNzlmZjIxNmI0ZmNmZDU2ZGU2YjE0MmJmMTggbGVnYWN5LXRydW5rCisxODM1OSA0NjI3NTYxMWNkNTliZTg4ODI1M2QyMWYyYjNjOWUxNDM2MDFkMWFkIGxlZ2FjeS10cnVuaworMTgzNjAgOGJlODg5ZTgxMTViY2IwNGQ0ZmM5YWE1ODliYjU1ZTBmNjdmZjJjYyBsZWdhY3ktdHJ1bmsKKzE4MzYxIGQxMzdiOTRmM2RkZmQxNmViZTM1NGYzZWY0MWNhMzRkOTliNTM2ZjIgbGVnYWN5LXRydW5rCisxODM2MiA1NWY0YTZlOGI1YjNhN2U0MzFiOTMyOWJmNDlhNjliODU2YmQwZDRhIGxlZ2FjeS10cnVuaworMTgzNjMgZGFhZGQxZTg1MzE2NTgxODRjODY4ZDc5MzZhNDIyNWY2ZmE2MjhkZSBsZWdhY3ktdHJ1bmsKKzE4MzY0IDM5NzQyYzkxYWRkM2U0N2UxMTI4YzQwOTEzN2Q5NWZkZDJlNjkxMjEgbGVnYWN5LXRydW5rCisxODM2NSA0YjY1OGMwNTljMjNkOWRmOWNiY2JjNDhjNzI2ODkyYmM2MDQ1YWNlIGxlZ2FjeS10cnVuaworMTgzNjYgNWU5ZDAxMjdhY2U5YTFjYzYwMWE3MDU0YmMzMTQzZjJkYjg4ZGEwYSBsZWdhY3ktdHJ1bmsKKzE4MzY3IGFjODMwYzllOWE4MzcyYTMxYzFiNzVmNzg3MTdmNzA5OTBiY2I4NzUgbGVnYWN5LXRydW5rCisxODM2OCAzNDA1OGFmOTc2Y2VjZWVhZGYxMDMyNDBiZWMyNWU1YzljYzcwNjQ4IGxlZ2FjeS10cnVuaworMTgzNjkgZWNkZTc3MTQyOGY5ZWI0NzJlODY1ZTlkMzBmMjZjZDFhMWUxMDdkNSBsZWdhY3ktdHJ1bmsKKzE4MzcwIDMwNTQ2YTJiOTQ1MGU1ODljOTgwOTUxMjAzZTJkNjAyMzFjOTY5OTAgbGVnYWN5LXRydW5rCisxODM3MSBkYjc1NzAyMjVlZjg0MjE5YTkwMGJmYTdiMThmZjQzNjgxMmUxZDI2IGxlZ2FjeS10cnVuaworMTgzNzIgMzQ4MGU4M2UxN2FiYjFlODQ3YWMyMjE0YWU5YThlNjg1YmFmMWMxMSBsZWdhY3ktdHJ1bmsKKzE4MzczIGUxMWMxMjMyM2ViZjVjNTA5MjUxZDk2MmMxODQ4MDc0OTc0NWRhYTYgbGVnYWN5LXRydW5rCisxODM3NCBlZmM5NmFhYjcxYzI4OTFkMDdlMTAzZWIzYmQyMThhMTg0OWZmZTdmIGxlZ2FjeS10cnVuaworMTgzNzUgM2U5NGNjMmEwNDczZmY1ZjhiZDc1ODY5ZWMwNDUzMzE5MmYxZGI0MiBsZWdhY3ktdHJ1bmsKKzE4Mzc2IGRkNTgzYzMzZjQ1NWFjYTM1M2U0OGI4MjVjNTQ4ZmE2NjcyZmQxYjAgbGVnYWN5LXRydW5rCisxODM3NyBjMTMzMzY1NzJmNGY0MWEwMWJjMzhjZjVjOTE5MDhhMWYwMzBlYjdmIGxlZ2FjeS10cnVuaworMTgzNzggNWU0MWViZGZhOWEwMGU0M2Y1NmM4ZjM4Y2E5OWYxNjQxOTY0MmI2YiBsZWdhY3ktdHJ1bmsKKzE4Mzc5IGMwYWQ0YzJlZjQ0NDYxZmNhMjg2ZjM3MjdiOWQyMzgwZTI4ZTIzM2UgbGVnYWN5LXRydW5rCisxODM4MCBlZDI5ZGY3ZWI1Yzk2MTg2ZTdkMjAwMjc5MWNhZmNlNWI5ZDdjYmM3IGxlZ2FjeS10cnVuaworMTgzODEgODg1NGQ5ZDVhZGQ1ZjQ2MjFlMmZlNzE5NWYzN2NjMTFmNGY1ZjA5ZiBsZWdhY3ktdHJ1bmsKKzE4MzgyIDA3MGVlMzFjYWYyOGI3MGVjMDUxMjJiMWYyMTQ2YTNjMDZiM2ZhYWUgbGVnYWN5LXRydW5rCisxODM4MyBhYWE1NDc1MmU0YmFkMDM5NjA1YWNjODM5ZGYwOWZlOTYzZGU2Mjc5IGxlZ2FjeS10cnVuaworMTgzODQgMTAyMjFhNmM3YzNjNWY2Y2VjYWZmM2IzMDgyYTUxNWFjOWFkZDhjNSBsZWdhY3ktdHJ1bmsKKzE4Mzg1IGNmMTc1MGMzZjdmN2Y5OGQwOGVkZjAwMGZhZmM0YjBmNzk1NzA2MjMgbGVnYWN5LXRydW5rCisxODM4NiAzMmM1NWY1NzQ2ZGVkMjBhMjM1M2Y3NDhlMjkzZDgyY2U5NzhhZGFkIGxlZ2FjeS10cnVuaworMTgzODcgOGQ5ZmZmZWQzNGY0MDY0YmRjOTBkMmE3ZjVjYTgzM2U1NjViNDZhNyBsZWdhY3ktdHJ1bmsKKzE4Mzg4IDA0MWQ1N2UzYTJiOTA0YmU1YThmZmYwY2M2ZjI5OGY1MDdhMTExYTUgbGVnYWN5LXRydW5rCisxODM4OSA1ZmUyZWM1MDQ4MzZjMTBmMjA5OTk0NjhmNjU2OTUwOTUzZWU4YWJjIGxlZ2FjeS10cnVuaworMTgzOTAgYTkzZDc5ZGE0ZjhjNWRiY2YzZjg0YmRjNDA3MDc2NjU0ZTlkNTI0NyBsZWdhY3ktdHJ1bmsKKzE4MzkxIDc5ZmNkMmIzMTgwOGJkZTZjZGExNDc4NjMxNWViNjJhYzlmNTM1OTUgbGVnYWN5LXRydW5rCisxODM5MiBhZDE0ZGRiZDA5YTcyNWVmNmI0M2VlYTE0M2JjNzI4MWM2MDU3ZDAwIGxlZ2FjeS10cnVuaworMTgzOTMgMjlmNDI2OTQ0MDJiODBjZDk0Mzc1YjAyOGMyMTA1NmRhY2M5ZDI2NyBsZWdhY3ktdHJ1bmsKKzE4Mzk0IDVkOThkNDk3MTNmMjFhMWM2OTNkY2IzMTQxODE0NzI0MjgyYjAxYjUgbGVnYWN5LXRydW5rCisxODM5NSAwY2I3NTFiNTYzOTE2YzMwZThlN2E2ZWIzNTU1ZWI1ZjZjYTAwN2ZkIGxlZ2FjeS10cnVuaworMTgzOTYgN2VlMzllMTRjZjJiMGY4MmM0YmU4NWFlMDllYjJjNDdmZWQzMDY5MiBsZWdhY3ktdHJ1bmsKKzE4Mzk3IGM1OWY2NDVkYWVkZWQwZGRhNGU4YjAxMTI1OWU2MDVjNDZmZjA3NWEgbGVnYWN5LXRydW5rCisxODM5OCA1MDM1OGQ2NGRjNDM3YjdlNWFiMzkxNWMyZGI4MmFhNDRlNjY2ODkxIGxlZ2FjeS10cnVuaworMTgzOTkgM2IwNGQzNDI1ZmYwZjMxMDg5NGNlNzI1NTg3MjMyNGNiZmQzZDkyZSBsZWdhY3ktdHJ1bmsKKzE4NDAwIDVhYWM1ODczYWFhZTdkMDRkZjdjZDM5ZTI3NmQ2YjBlYzg3Zjg5YmYgbGVnYWN5LXRydW5rCisxODQwMSA5ZDQzMTI5YzhjNTVmMzM3YTliZjU5NTZiMTdiNjI2NDkxNTkxOWI4IGxlZ2FjeS10cnVuaworMTg0MDIgNThiYzk5ZTAxMmE4NWZhOTk3NzE1YjhkZmQ2MDZmZGEwMDg3NjUyMSBsZWdhY3ktdHJ1bmsKKzE4NDAzIDYzNTk0ODAxMDZlY2ZhOTlhZDYxOWM0ZWJkNzJiY2FlMDBjNTQ0ZmQgbGVnYWN5LXRydW5rCisxODQwNCA3ODUxNTVlMmNmY2EyOTQ5ZjBkNzdmYjYwNjBlNWY4OTQ0OTg5OGJkIGxlZ2FjeS10cnVuaworMTg0MDUgY2JkNGYzNTViYjk2Zjc5OGMzMGMxZmViN2YzMDI1M2Y4Njc4NjhkNCBsZWdhY3ktdHJ1bmsKKzE4NDA2IGQ2OTYxMWNjZTg3NzY4M2JjYzU5N2QyZTI1NmRkZTI2YmNkMzVjZTQgbGVnYWN5LXRydW5rCisxODQwNyBiYjkzYjFkY2E1NzE5OGQxOWFkMzg0MjhkNzVjZWI1NDg0ZGE3YzJhIGxlZ2FjeS10cnVuaworMTg0MDggYWY3YzYyM2Q4ZDMzYmQ3YTkwMDNjMTM1YjEyOTkxZTZiYmI4MTkzYiBsZWdhY3ktdHJ1bmsKKzE4NDA5IGYzYjA2ODJkMjZkNjAxMWEzN2Y1YjE3NzJmZGJjMmM0Y2Q2MDI0MGQgbGVnYWN5LXRydW5rCisxODQxMCAyZmRiY2RlZTJlMWYyZWQ2OGE1ZTlhNmVkYmM2MTkwNWQ5MzNiMTM1IGxlZ2FjeS10cnVuaworMTg0MTEgODQ1NjQ2YjA5YmY4MjQ1ODJiODcxZDA5MjdmZjk3MjBhNGIyZTUxNCBsZWdhY3ktdHJ1bmsKKzE4NDEyIGY5YjE4NGE1NzIyMzk1MDE3OWIxYzZjZjEwM2RkYzMyN2YyZGI4YzAgbGVnYWN5LXRydW5rCisxODQxMyA0ZDljMzFmMzJjMDljMjRiZmUyNDQwY2E2OWNhNmNlMDA0MzE3ZDI0IGxlZ2FjeS10cnVuaworMTg0MTQgNTc0MzkzMzZjMmUwZWU5NmVmNTkyMjAxMmY3Y2IyZWYxNTg3ZmE2NiBsZWdhY3ktdHJ1bmsKKzE4NDE1IDQzNTQ2YzVhZWVjY2VhN2VkOTk5MDg5Yzk5Y2Q2MDA3ZGM4ODE3NWIgbGVnYWN5LXRydW5rCisxODQxNiBmNzIzNDViNDM2NjIwMWNmZTU2NTRlMWZkMTFlM2Q2OTRjZjMxYzI1IGxlZ2FjeS10cnVuaworMTg0MTcgZDNmNmYzMTU1YzI0MDRiZDFjOTFkNjdhMDJjYTQxN2U0NTliOWQ1MCBsZWdhY3ktdHJ1bmsKKzE4NDE4IGIxNzU0MDBlOGIyMmFmZDMzYzk0N2IzMWY4NGEzMWEzNDNhYmE3ODMgbGVnYWN5LXRydW5rCisxODQxOSBjODFiZWQwMTY4YTA5NDljYjE5Y2EyNDQ5ZGE2ZmU4YmFiNjE1ZmIxIGxlZ2FjeS10cnVuaworMTg0MjAgZDA4ZjhjZWIzZDU1NmUzZWU0NWY0NjFjZWJlMWI3MWVkNTkzOGFkZiBsZWdhY3ktdHJ1bmsKKzE4NDIxIDE0MzY0NmJhZmQxYmU4OTBmNmRmZWZiMTU3YjNjZWFmZWYwYzM5NWQgbGVnYWN5LXRydW5rCisxODQyMiA5NDUzZjZmYWNlZmE0NWUxNzY5ZDM2MTlkNTVlYTgyMzE2ZTBjODA4IGxlZ2FjeS10cnVuaworMTg0MjMgNzRlZTY2MTU4MWI2ZDQ3ZTg2ZTU0NGQyYmE3NWIzOWI3YjQ4MDM0NCBsZWdhY3ktdHJ1bmsKKzE4NDI0IDM1ZThhMjllNTQ4ODRlMDNiYTUyZWZhNDY0MWZjODFmNTlhYTk3MmQgbGVnYWN5LXRydW5rCisxODQyNSBjMTA0MjZkYTdiY2UyNDIwZDU5MzA3ZDVjYTQ3ODFlODY0NDlhYWM0IGxlZ2FjeS10cnVuaworMTg0MjYgNGMyMDM3OWU2NjNkNDU4MmJmMGE0MjE2YmFmNDU4ODAwZjI1NTdjMyBsZWdhY3ktdHJ1bmsKKzE4NDI3IDk5NDIyZDYxMGRiM2FlOTZmMzEyOGI4MDRkZWFjODJiZTZmZWExOWYgbGVnYWN5LXRydW5rCisxODQyOCBkMzg1MTZjZTZmMTQxOWQ3ZTI5Mzg3MDg0NDMyNTZjMWRkZjkxZGY1IGxlZ2FjeS10cnVuaworMTg0MjkgYjM0MjBiMDAyZDU1Y2Y3MTkwYTQ3YTNjMmNjYjNjZTAxYzhkNjU1ZSBsZWdhY3ktdHJ1bmsKKzE4NDMwIDU2YWRjNjhlMDZmNjkxM2RjOTQ3MzljNTQ5NGRmMzI4M2NjNDU3MWMgbGVnYWN5LXRydW5rCisxODQzMSBkNDEwZjZhZDNjNjAxOGVlYTMxNDEwN2FmMWI2M2E5ODUzYTU5Nzg2IGxlZ2FjeS10cnVuaworMTg0MzIgMDI3ZWU5YTg3MGQyYzIzM2M4ZmQxNTU2ZTVhODYzOTIzNzE5OWZlOCBsZWdhY3ktdHJ1bmsKKzE4NDMzIDIxNzVlNTY3YmQwNjI5MGRiYmE3MjgwYjI4MDgwOTY0Nzk2NWE2MzAgbGVnYWN5LXRydW5rCisxODQzNCAyNDA3NGY5NzIzNWM0OWQzYjM5M2Q3YWQxZTZmYTI0YTA5NjYwYjkxIGxlZ2FjeS10cnVuaworMTg0MzUgNGE5ZjE1NTJiYTY4ZTBiZjAzOTg3MDM5NjY1Nzg1MDMxNzBjMDFhNSBsZWdhY3ktdHJ1bmsKKzE4NDM2IDAzYzMyZmFhMWE0OWI0YzdjNTQ0MmMyYTA3ZTJjMGJlODYyMWYyNjAgbGVnYWN5LXRydW5rCisxODQzNyA1OGZlOTM3ZjczNGE0ODc4YWY0NDliOWE1OTlmYjlmZjhkNDZlNWIzIGxlZ2FjeS10cnVuaworMTg0MzggOTZjM2FlMTNkZGNhODE4YjIxM2NjMTQ2ZDNkMTdkM2U2NDFhOTE2MyBsZWdhY3ktdHJ1bmsKKzE4NDM5IGUwNzY1YzU1MTJkNzE5ODk3ZDA1YWE0YTQzYjJlNDc1ZjFmNWY2NjcgbGVnYWN5LXRydW5rCisxODQ0MCAzMWQ3OGYzNjE1MzBjZjA4NzNlOTM0MTZlNjIwYWQwMDk0MmMyMjE1IGxlZ2FjeS10cnVuaworMTg0NDEgNjY4MTY2YTUwYzcwNzFiNjU3NjI5MTVkNTAzNDFjZmU0NGVhMjc3ZCBsZWdhY3ktdHJ1bmsKKzE4NDQyIGFmYjQ1YjdmYTI1MjhjZWE5MDQ3MjJiNmQ2NTJkZWNlYWVlNDBkM2MgbGVnYWN5LXRydW5rCisxODQ0MyA2MTc5ZDRhZmE0ZTRlNWNmZjNjMjU2MmFiNjgwZmYzNTI3OGUyYWRlIGxlZ2FjeS10cnVuaworMTg0NDQgYjhmNWI3MjY3ZjE0OTdjNDU2MzhhMWUyYTgxZWI5NTM1YWIxNjc0NyBsZWdhY3ktdHJ1bmsKKzE4NDQ1IDY3YzI0Yzc0ZjE4Y2M0MzQ0YzQxNGIyMmE3MjM4YzE3NTMyMTFhY2IgbGVnYWN5LXRydW5rCisxODQ0NiBiMmE5YmM5MTY2OGE3ZjI0MGY0OTNhODY2MWVkODIwNDg2NWFhMzRiIGxlZ2FjeS10cnVuaworMTg0NDcgZmY4NDExMmRhYmM4OTUyMzYwNTgyMmYwZTdhYzUwNjY5ODI0NDc4MSBsZWdhY3ktdHJ1bmsKKzE4NDQ4IGViY2U5YjI2N2JiOGVhNjE5MmQxOTlmMWE2ODNjODM5MTFlZGU0ZWIgbGVnYWN5LXRydW5rCisxODQ0OSBjZTkyMjMwMjgxNjQ4Y2ZkNWMwNWFjMjYxOTc3ZjYyOTViNDNjNDA0IGxlZ2FjeS10cnVuaworMTg0NTAgODU3YTU0MDBiZTg3ZWFkYWNlODcwZmEzODMyNTg4ZWIwZjY3ZmVjZSBsZWdhY3ktdHJ1bmsKKzE4NDUxIDFlNzU2ZjkzYmY1ZGExZTk3ZDM4ZjIzZDJiYTY3YmNhZTg2Y2Q3NjUgbGVnYWN5LXRydW5rCisxODQ1MiAzNjI4NjYzMmZmM2E5M2NmMjNmOTJiZGFkOWQ4ZmFjYjNmMDMwYWE4IGxlZ2FjeS10cnVuaworMTg0NTMgNTI3NTZmNjEzYzE4MmE4YjMwMTQ2NTZhMTU4Nzk2OTlhMGE3ODYxYiBsZWdhY3ktdHJ1bmsKKzE4NDU0IDk2OTQ5MDlkYmIwYTc5ODg2YzUyMGVmMjg3MThjMDQ5YmMyNmEyNTggbGVnYWN5LXRydW5rCisxODQ1NSAxNzc5Zjg1NzRhODNhMGY0N2NiNmU0MjZlZTQyZjY5ZTA4MWNmNzM5IGxlZ2FjeS10cnVuaworMTg0NTYgMGY0MmY2NjY5ZTgwMmMyZWYyNDZjOWQwYzZhZjVjY2VhMWY0NjRlZSBsZWdhY3ktdHJ1bmsKKzE4NDU3IDU5YTQ1ZmE5NTMxOGZlZWY3NzkwODVlYzEzOGZhNzUxMmM4ODAwMTMgbGVnYWN5LXRydW5rCisxODQ1OCAzZmU1OWVkMTFhZjEwZTU0MTI4NmY2YmI5NDJlMGI3MmQxZTEyNTVhIGxlZ2FjeS10cnVuaworMTg0NTkgMTQ4YjhjMWI3MTNhOWRhOWEwOGIwMTVjZDVkNDQ2OTg0N2U3N2I4NiBsZWdhY3ktdHJ1bmsKKzE4NDYwIGQ1YzlkZDI0ZDk3N2I4YzcwNDUyYjI5ZWVjNTNhZWY0OGU4ZGViOWUgbGVnYWN5LXRydW5rCisxODQ2MSA2NjMwY2NhMjk4Y2MwZWI5ZmNkYTcyYTUwODdjMDNhODI0YzEwM2JkIGxlZ2FjeS10cnVuaworMTg0NjIgNTM0MjNlYzBhNzI4ODRiMDU3ZjQ2MTI0ZWNlZGU5YzIwMzc4NWY3NiBsZWdhY3ktdHJ1bmsKKzE4NDYzIGUyM2Q1YjJlMjI4YzQyYzIzOGI2MzQzMmQxNTI0NzIyYzhkYWUyNzMgbGVnYWN5LXRydW5rCisxODQ2NCA5ODdjNzRjODg0Mjg5N2Q2ZjgzNjY4OWUyYjdhMWQ4NjFiYTE0Yzc5IGxlZ2FjeS10cnVuaworMTg0NjUgMTVlMWViMTAxOWI4YTM3YWY0ODhhY2YzNmRlYmZmYjdiY2Y1YjE0NyBsZWdhY3ktdHJ1bmsKKzE4NDY2IGUxZjJlM2VjNzZkNGZlNmFmYmY0NmZjN2QwMmZmYTk0ZjVmOWNiNmMgbGVnYWN5LXRydW5rCisxODQ2NyBmOTliYjZhOTJlODRmNzgxYTY3ZWJmY2U2NTEyODc5NDRlODI2YjkxIGxlZ2FjeS10cnVuaworMTg0NjggNTliZmJiZTU4MWMyZDBiYTllNzZjODRhNzFiYjViZGIzNDdjZDk4OCBsZWdhY3ktdHJ1bmsKKzE4NDY5IGZmMDc2Nzc1M2Q4MTNkYzA4MGI0MGNjMTYwYWRhYWI1NWZmYzJlMDQgbGVnYWN5LXRydW5rCisxODQ3MCAwOTA2YzhlMmM5NjFjM2IwM2YxYjNhYWYzZjgwYzUzN2YyNDViZDQ4IGxlZ2FjeS10cnVuaworMTg0NzEgZWQzMTViNTVmMTllNjJmYWYzOGNkZDAzNzRiN2VmYzMzYTA0NzU1NiBsZWdhY3ktdHJ1bmsKKzE4NDcyIDJmZTc0Mjc1OTFlYTk2N2ZjODdiMGQ5MWRjMjY5OTkxYzZkMTBiMjggbGVnYWN5LXRydW5rCisxODQ3MyBlNTdmOTNhZTRmZTlmNjg1MmMyY2U5YmE5NzA4ZTExN2U0MWJjNTNlIGxlZ2FjeS10cnVuaworMTg0NzQgMzU3NDlhNTU3ZjFlNWQ2ZDBiYTVhN2Y5YjNlZmM1MDJmMTNiY2Q5NiBsZWdhY3ktdHJ1bmsKKzE4NDc1IDdiYjdiNzJmYTY2NjZjMTUyZjA0MmE1YTEyZWRiZjE2YTM4NjRiNjkgbGVnYWN5LXRydW5rCisxODQ3NiAwNzg5ZGQwNjJkNmMwODMzZDAxZmJiNGZmMWI0MjMyNTZjODUzZTg0IGxlZ2FjeS10cnVuaworMTg0NzcgZTEyYjY1MGYwZmFjZTZkMWY4N2ZkZTljZWU5MWFmZjU0OTIyYzAzMSBsZWdhY3ktdHJ1bmsKKzE4NDc4IDA1MmUzNzJjZTE1MWM4NDc3N2YzZmRkOWEyOGIwYjIxMmY0ZTVmMDAgbGVnYWN5LXRydW5rCisxODQ3OSBkM2U4NmZmODkzYjEwNTZkN2UwNjUxN2QxZTlkODZhNTg0NmJjYzU5IGxlZ2FjeS10cnVuaworMTg0ODAgNTBkOWI1OTA2MjdkNjRlMzZkMjlhMDU4M2JiNzRkNzNlODllNTFlYSBsZWdhY3ktdHJ1bmsKKzE4NDgxIDMwZWM4NzMzMzhhZDE1NjQ0ZmRlN2ZhZWUyNDY2MWQwYzllYTdkNGIgbGVnYWN5LXRydW5rCisxODQ4MiA4MjYyYmZhNTE0YzJjMDAyOTNlNzM2ZDI2ZjViYThjNjc2NjYxMzRlIGxlZ2FjeS10cnVuaworMTg0ODMgZjU5NDkzOTdjOGE1ODhmZjZlZDAxZDM4MGVhNDY5ZGUxNDVjYjYwZCBsZWdhY3ktdHJ1bmsKKzE4NDg0IGRiNjljMDkyYzkwNmQzOTc5MzRiMzAyM2Q2NzgyOWI4OTMxMWM3ZTkgbGVnYWN5LXRydW5rCisxODQ4NSA1MGRlM2IxOThhNjIwNWIwNTcwMGNjMmEzYjgwN2ViZGZhZWRiMzM3IGxlZ2FjeS10cnVuaworMTg0ODYgMzhmMDlmYjE4YjgwMjBjNzdhMmM2YzlkNjhhOWY0ZGZmM2VjNmNhYyBsZWdhY3ktdHJ1bmsKKzE4NDg3IDUzODA5NzE5OTc4Mzk4NmQzNGI3NWVhZTY4MGNjZDVkM2VmNjcyZWIgbGVnYWN5LXRydW5rCisxODQ4OCA3ZTJiYjk5NGMyZDNhYzZlNTYzMDJlMTJiOGQzNDg2NDIzY2NmNmI1IGxlZ2FjeS10cnVuaworMTg0ODkgN2YyMmUzNGNlNDBlM2VhYTJjYjkyZWM1NmNkN2ZhOGQ3ODllNDJjYyBsZWdhY3ktdHJ1bmsKKzE4NDkwIDUwYmJlZWRiY2U0YTY4M2JhMzA2M2Y4M2JiMjAyZDgyMzQxNzg2ZmMgbGVnYWN5LXRydW5rCisxODQ5MSBkYjdlZTVjNjBhZjBiODdkMjMwNmMwMjA4NjQ5Yzc2NjEwOGQ2NzUwIGxlZ2FjeS10cnVuaworMTg0OTIgNTUyZGI4ZDgzYWNkODk2ZDIxZDYzYmFlNmRmMGI5ZDY3ZDI1MjBkMyBsZWdhY3ktdHJ1bmsKKzE4NDkzIDE5NzU2YjkxODA0MTY2MjZmOTU0OGU3ODJhMTM2ZWM2N2ZlMTFhYTkgbGVnYWN5LXRydW5rCisxODQ5NCAyYTYxMmFlMjUwOTU5MmEyYzM4MDk4YzM0YWE1NmIxZjcxMWVlYTVhIGxlZ2FjeS10cnVuaworMTg0OTUgNDQ2ZjNmOTM5ZGYwMzk3NjY1N2UxOTFjYjNjMmI5MDI2ZGYwMGI0NiBsZWdhY3ktdHJ1bmsKKzE4NDk2IDgzODU1MTg2OTc5MDRkODkzYjcwMmM0MDVkZTQyNDljOTI5ZDZmYWEgbGVnYWN5LXRydW5rCisxODQ5NyAyZDZlNzY4OWRjNDIwNTc5NTJiYzYyZjI3NDVkZWM1YWFjNzY2OTNjIGxlZ2FjeS10cnVuaworMTg0OTggN2ZiN2M1MWEyZTYxNjIwMDdjM2ViM2M1YWQ3NWMxYjkzYWE0ZDJkNyBsZWdhY3ktdHJ1bmsKKzE4NDk5IDc2MzlhOTU1MjQ3OWUzMDkzZGFjYTgyZDM3MGVjMGFlMTE2NTZiOGIgbGVnYWN5LXRydW5rCisxODUwMCA3ZmI1MDk5YmUyMDI2OWJjNTBiNzIzYjU3M2EwYjhkOGI5MDNhYWRhIGxlZ2FjeS10cnVuaworMTg1MDEgYzRiZWM3YzRkNmZmNjQxMzhkY2UyYTJjODBkZjY0YzJiOGU4NzQyOCBsZWdhY3ktdHJ1bmsKKzE4NTAyIGYwY2RhMGQ0YjUzYzIwODI2YThlNTgzYWEwMzAxNzU0NzU3ZTczNmEgbGVnYWN5LXRydW5rCisxODUwMyAxOWM4YTJkMzgwN2Q1OGRhMDQwZWFhN2QzY2U2ZjM4OGMxZjg0N2ExIGxlZ2FjeS10cnVuaworMTg1MDQgNjNiODBiNzdmNWIyZGIzMDlmOTg3MmE2ZWFhNTExMDI2ZmM4MmQ2NCBsZWdhY3ktdHJ1bmsKKzE4NTA1IDhjZmUyNmVkNzI4ZDk0MmQwZDUyZjFhNDU2MzFkY2JjZWQ1MGQ5YjIgbGVnYWN5LXRydW5rCisxODUwNiBjMTNmNWEyMGVhMzEyMzM4YTFmZDY5YjM0ZGRlMWE1Y2UyOGMxMTQ2IGxlZ2FjeS10cnVuaworMTg1MDcgNWIxNThmYzBlZDU1NWExYWIxZTg0MjQ1MTkzMjMxYTAxOTAxZTY3MiBsZWdhY3ktdHJ1bmsKKzE4NTA4IGU5ZjRiNzY2OTlhYTIzMTBkY2YxOTY1YzEzMzg3OTc4NTU4YzE3MDQgbGVnYWN5LXRydW5rCisxODUwOSAxYTRhNWE5MzZmNTA4Y2U1YzU0N2ZhMDA4NDQ3MTg5MDgyMjJhN2FhIGxlZ2FjeS10cnVuaworMTg1MTAgNTZjNzQ0ODNiMDUwY2MyMTY3MGVmNTc0OTNlMGU0MTkzNTIzMTQxOSBsZWdhY3ktdHJ1bmsKKzE4NTExIDJmMTc4YmRkZGMxNjM3ZDFiMTVjMjhiYmNmYjkxYTc2NzY0ODY1YTMgbGVnYWN5LXRydW5rCisxODUxMiA5MjdiY2MzMTVlNTZlODMwMWYyYzU1ZTdiMWNmYTQ3NTk2N2Y5ZGE5IGxlZ2FjeS10cnVuaworMTg1MTMgM2UyNTRmNTZlZWYxY2Q1YzRmMjc2NWY0MjE5Zjg5ZGQ0NGMxNTU2OSBsZWdhY3ktdHJ1bmsKKzE4NTE0IDgyYmVjMzg4YzYzNjI5YWFjNWI4NDBhOGE4MWQ0NjU0ZThmMjk4OTEgbGVnYWN5LXRydW5rCisxODUxNSA2NDA1ZjMwYWEwOGMyY2M1MTA4ZWNhNmUzM2Y3ZTM5Mzk0YTgzNWE2IGxlZ2FjeS10cnVuaworMTg1MTYgODNkNTk5NjUyYjYyMmI1MzlhYWJlZGM4YTBkZjgyMDc1MzExNjI5OSBsZWdhY3ktdHJ1bmsKKzE4NTE3IDE3M2Q3MGU3MmM5ZjY1YWU4YTVhOTZkMmVlOGE0MTc0MTFkYjhjNTkgbGVnYWN5LXRydW5rCisxODUxOCAwMjZhOTIxMDUxNDUyOGM0ZGJlZmRlZTdlOWE2YzIzNWI3NzAyZjhmIGxlZ2FjeS10cnVuaworMTg1MTkgNTZjZTM4ZTU3NTAyNmJiM2MyYjA2OTY3NDc5NDI5ZWQ2NmE0NTEzYSBsZWdhY3ktdHJ1bmsKKzE4NTIwIDY1ODVkM2MwNGEyOWQ4NTY5YWQ2NGQ2OGJhMGFmNTFjZGYyZDkyNzcgbGVnYWN5LXRydW5rCisxODUyMSBlYWY1YTc4YmQyODI3MTE4YTI2MTY2YjMwOTAzYjRkNjRhODEyZDA3IGxlZ2FjeS10cnVuaworMTg1MjIgYWZhZDY1OTc1YTgyZTVjNDk5YWNlMzEwNzIxODMyMTM4Y2MyYjdiNyBsZWdhY3ktdHJ1bmsKKzE4NTIzIDVmM2VlNWYxYjNkNzk3ZjllZGY0OGNiZTJiN2JiNzM3NzM2Njc4NDIgbGVnYWN5LXRydW5rCisxODUyNCAxZTQxNzE3MTdlNzdjY2YxODFmYzZjMWQzYjcwODkyZTlkODQzYWNjIGxlZ2FjeS10cnVuaworMTg1MjUgMTgzZDBiZDJmZDY2ZGMyZWM1NGEwODY3NmY0MjBlNTJmODQxNmU1ZCBsZWdhY3ktdHJ1bmsKKzE4NTI2IDE2OTA3NTVjNTk4NmJhYmQzNDQwNTVmNmE4ZmRkYzg2Y2I1ZmVhZTYgbGVnYWN5LXRydW5rCisxODUyNyA5MGVhMWUzZWVlYjE0ZDM0M2RkOTFhNGIwMDFkYjFlZmQxZWE2ZDcwIGxlZ2FjeS10cnVuaworMTg1MjggM2Q1NWJmNjU2OTlhZGRjNDZhMGZlODI2MTI5MDVhYTUyODA3NzQ1OSBsZWdhY3ktdHJ1bmsKKzE4NTI5IDhiNGNhNWRhN2RjMjY1ZDg3NmNiMzEyMzcxOTllYTY3MTk1YmE2ZmIgbGVnYWN5LXRydW5rCisxODUzMCA1YzY1ZTY3NmYyOTk2YzUwZjA4NjRiNGYwNDgzODJmYTk4YmY5OTU0IGxlZ2FjeS10cnVuaworMTg1MzEgNTFiNTg5ODA0MDUxNGY4M2JlNzRhNzM0MzM3NzE0YjkxMDNmZTk4YyBsZWdhY3ktdHJ1bmsKKzE4NTMyIGMzYzhiZmFkMDdjYTMyYzMyOWM4YzJlOTNkNmVjNjJhNmY1NDdlY2UgbGVnYWN5LXRydW5rCisxODUzMyAyNzdhN2ExNWViOTRiMDUzNjE1MmM1NWVhZWQwYzgyNmU3YTY3MTBjIGxlZ2FjeS10cnVuaworMTg1MzQgNjdiM2FjNDM5ZjY0MDIyODBmOTU3YzMxMDkxNWEzNWYyZGU4NGM0ZCBsZWdhY3ktdHJ1bmsKKzE4NTM1IDc1YzNhNjQ4NDdjNDlhZjIwNzY1MzJmNWJmNTNmMTBkMDQ0ODMxYjIgbGVnYWN5LXRydW5rCisxODUzNiA5M2E1NzViYmEwOWY2Zjg1Njg4YTdiNmViNjdjZTk5YWI1NDhhOGVkIGxlZ2FjeS10cnVuaworMTg1MzcgM2YyZmYzOGNjNjU3NGVkOTljMTIxODBkYWVhZWVlNGVkOWU1MDMxNSBsZWdhY3ktdHJ1bmsKKzE4NTM4IDI5YTJhMTE0ZTljOTMzMmM2OGQwYjQwMTQxOTBlN2Q2NjY2NTFhZmQgbGVnYWN5LXRydW5rCisxODUzOSAwMWE0ZGMzMWI1NzliMjRkMWI2NjdlNDUyNGIwZTA1ZDlhNzNiNjI5IGxlZ2FjeS10cnVuaworMTg1NDAgOWM3MWFkZDdlMTYwODE4YWVjY2EyN2NjMWIyYWE5MzZmZDlkMDhlNyBsZWdhY3ktdHJ1bmsKKzE4NTQxIGVhNDgzMmRlZWFjNTlmMTdhMGI3NTNlMDY1ZGM0ODcxZGEyYWUwZTIgbGVnYWN5LXRydW5rCisxODU0MiAzY2E3MDJjYWE2MWFlYWNjNjk5NWQwY2JmZGE4YTg2MmE0ZWUxMGY1IGxlZ2FjeS10cnVuaworMTg1NDMgYTUxOWYyMDdlZDM2ODcyM2RjMjA5NmNkYjhiNGQwOGExNjQ2NGVmMCBsZWdhY3ktdHJ1bmsKKzE4NTQ0IDEwNjEyY2JiNDYyM2FkZWZiOTZjZjY5ZGU5ODJiZjBhMTdhNTQ2MGUgbGVnYWN5LXRydW5rCisxODU0NSBlY2RhY2Y1MTc1OTQ1MjVkYWE1YjhlOGMyNDQ1MTRlMzA5MzI4YTAzIGxlZ2FjeS10cnVuaworMTg1NDYgZDZmODY2MTlkYmM3MzRmYWUzYzNkZTQ3NWU1YTlmMTEwMmM1YzhkYiBsZWdhY3ktdHJ1bmsKKzE4NTQ3IDk4NmQxYzNjY2RkZTkxYTE0MTZjOTM1ZTg4ZWU1M2QyOWViMWMwMWYgbGVnYWN5LXRydW5rCisxODU0OCBlOGY1ZTYxYThiOTQzNWE4MzY1OTUxMWNhMTRhYTAxNmFiZDkyZTRkIGxlZ2FjeS10cnVuaworMTg1NDkgODRjZGM4OWFjNTYxZjk4MmFiN2I5OGEzZDQ2ZDU2NWE2MGE3NGY5ZSByZWxlYXNlMjAtbWFpbnQKKzE4NTUwIDE3NWEzYjE3MjA2ODgwYTI4ZDdmNDE2ZmMxMTBjOGVhMjk4MDU0OWMgcmVsZWFzZTIwLW1haW50CisxODU1MSA1NTZhNGU1M2MyNjk3NzMzOTE4ODFjNjE1ZGZhMTdhMTBkM2VkMjhhIHJlbGVhc2UyMC1tYWludAorMTg1NTIgZTYwNTYyNDAwMGJmMTkxMDUwNjliMDdhMGM2OGIyNDZhZmI2N2E1MyBsZWdhY3ktdHJ1bmsKKzE4NTUzIGY0MTcwNTMwNGFmNDQyZjMyY2U5MDZkZDJmNGQ4OTkxMTQ2Y2YwOWEgbGVnYWN5LXRydW5rCisxODU1NCAyODBhNzhlZDAwMzU1MjgwOGRjNDRjYmJmN2M1NzYyNjZhZTE5ZDRhIGxlZ2FjeS10cnVuaworMTg1NTUgNmYxNDUzYmJkNTY5MDJlYjRmYTc1MTcxMTAxMDcwZjFiNDBmOWVmNiBsZWdhY3ktdHJ1bmsKKzE4NTU2IDEzOTY4NGE5MDA0MWEwZWNjODkwNzZhNzY1YTRiZjYxY2Q1OTNlNTIgbGVnYWN5LXRydW5rCisxODU1NyA1N2E0ODU3NDMwZmY1ZDI1NzcxZDVjZjI0MzI1MzdmMWU0ODNiOTljIGxlZ2FjeS10cnVuaworMTg1NTggMzZmN2MwOWMyZDdmMjQzZTZjM2E2ZjVjZjc3ZmMwOTdmZTVhMDI3YiBsZWdhY3ktdHJ1bmsKKzE4NTU5IDBjMjJhZjJjZGQ2ZmIzN2E3MTA5ODk0YmI2MjE3YjIxYTI0NDdmODggbGVnYWN5LXRydW5rCisxODU2MCA4ZTAxNDE3ZWMwMDE3YWI0ZTRmMjU5NjQ3ZjNmNjRkODNmOTgzMzg4IGxlZ2FjeS10cnVuaworMTg1NjEgNGIxNjhlZWI2MWIzYjdjNzRjNjhiZGRiYWYwY2U2MjM0NGY2NDEwNiBsZWdhY3ktdHJ1bmsKKzE4NTYyIDVhNWU5ZTdmYjZiMjEyNzA5YzQ1YWJiYzhlNjRlYzQxYjRiYjVhNmYgbGVnYWN5LXRydW5rCisxODU2MyAxOTk3ZGZlZDhkMjFkNmQ5ZjVlYmRkNGQ1ZDBjOGU4ZWY0MTE2NWQ2IGxlZ2FjeS10cnVuaworMTg1NjQgZjZlZTBkNDY3MmQ2Mjk2MDY1ZDZiODgxNmVhMDgxNWZlMzRiYjMxMCBsZWdhY3ktdHJ1bmsKKzE4NTY1IDYxMmZiNzcyN2ZhMjk4ZTE2ZjFjYzk0NGFmM2Y4ZDY2NmY5NThlOTMgbGVnYWN5LXRydW5rCisxODU2NiBiNDA4YWNkY2FmM2VlZWNjNWZmMGYyYTFiZGNjODBkZTc4MDBkYmEzIGxlZ2FjeS10cnVuaworMTg1NjcgYmY5YmIwZTNkZDM0MTNmMzA2NzYyZmNhMTliZTgzZGE4OTUxOTZlZiBsZWdhY3ktdHJ1bmsKKzE4NTY4IDMwNzVhMTUzYTA4M2UyMjliZGNhMmZlYmFmMDE5MzBlMWUwMWY0YjggbGVnYWN5LXRydW5rCisxODU2OSBlMjk3OGMwYjdjYmQ2OTIxYWY5NmEzOWQzNDFiMGJmMGE5NTIwN2E3IGxlZ2FjeS10cnVuaworMTg1NzAgMTYxODkyYmY3YzE1ZWZlOThlZGY0OTkwM2VmYTkwMWUyYjRiNTMxZSBsZWdhY3ktdHJ1bmsKKzE4NTcxIGE2MjZlMzlkNjg0ZGMyM2ZhNmY1ZjRhYTYxZGU3OTg2ZTVkOWYwZWMgbGVnYWN5LXRydW5rCisxODU3MiAyNDgxYjVmZTg2ZDZkY2U3YWM0NjAzYzMzYjk1MTVhNmJmNDMxOTE2IGxlZ2FjeS10cnVuaworMTg1NzMgOTAxZjM4ZjdmNmY3NTUwNzc1MmQwMzZhMjA3MDQwN2E1YTFiM2NkMSBsZWdhY3ktdHJ1bmsKKzE4NTc0IDM2OTNhYmQwZWFjMWQ0MWE0NzA4N2UwMjc2ZTc1NGM1NjNmZmMxODkgbGVnYWN5LXRydW5rCisxODU3NSAyYTMwNTEyOWQ1NjZlYzE0M2U0MjcyYThiMDUwYmYyODU2MTlmYzkwIGxlZ2FjeS10cnVuaworMTg1NzYgNGQ5NzhhZDhmYjA1ZDYwNGVhOTc0YTA2ODY3M2I3MmQ4YjkwNTE1YSBsZWdhY3ktdHJ1bmsKKzE4NTc3IDM2MmU1M2Y0M2RkMjM2MWI5MDk4OGZlNjRjODI4MmVkOTQzOGRlOGMgbGVnYWN5LXRydW5rCisxODU3OCBjNjU2ZjMwOGFhMWY4N2ZjZmRkZmEyM2FkZmI4MGI1ODAwYjUyMTA4IGxlZ2FjeS10cnVuaworMTg1NzkgNmUyZWM4ZjdjODcxZjc0YTNiZWMyZWExZmU2MTI3ZjFhZmE5ZDVmMyBsZWdhY3ktdHJ1bmsKKzE4NTgwIDI2NWY0ZWY3ZDdiMWQwZDYyNWEzNDMwNmVjMDZhZDhkOTA2ODNlYzcgbGVnYWN5LXRydW5rCisxODU4MSAwNjEyNTJmNWM3Mjk2Y2QzNDY4NDhlY2MzNDFhOGVmNjJmNDhlNTk2IGxlZ2FjeS10cnVuaworMTg1ODIgZWFkOGI1Yjk5NGFkN2NlNjEyY2Y2MGViYzQ2MDJjZWY1ZTRhYTM3NSBsZWdhY3ktdHJ1bmsKKzE4NTgzIDNlODYyYTUxODYxZmQ2YjZkY2YxOTJlMTdkOGJmN2QzNTBkYzVhMzIgbGVnYWN5LXRydW5rCisxODU4NCBhYzdhZTNlYWQ4OGE0NGFhYTM1NDlhZjAwYjVmZTdmZTgxYmEzNmU1IGxlZ2FjeS10cnVuaworMTg1ODUgMmRjYzRhODZhODc2YTcxZjdjNmE5ZTczN2FjNWE2M2Y1YzM2MGEyMCBsZWdhY3ktdHJ1bmsKKzE4NTg2IDhlNDAyYWVjYTBhM2QxY2RmOGRjMzRiZmEwZTVmNDc4YzdlOWIyMzkgbGVnYWN5LXRydW5rCisxODU4NyBkYjlmMTg5M2JlMDE2ODE2Njc2MjVhYTM0OGUzYThiYzlkMDU1NDJhIGxlZ2FjeS10cnVuaworMTg1ODggNjQxYWQ2YzgzM2JlODA0Y2FkZjVhYzgwNWUyYWEzNzNjYWEzMDJiZCBsZWdhY3ktdHJ1bmsKKzE4NTg5IDRkZDBiOTdhYTZlMTY2OTI4YjBjNWE1YTI2YjkwZmQ5ZDk5Y2QwOTkgbGVnYWN5LXRydW5rCisxODU5MCAyYjNiYzA4ZDRkODUzYWVmNDA0ODRmMTNkOTdhNWE1ODI1ZmExYmI3IGxlZ2FjeS10cnVuaworMTg1OTEgZDNjN2VkMTVjZTI1Nzc4ZWI5NTExZmJmMTA3MWE4M2Q4NGZmNjVlNyBsZWdhY3ktdHJ1bmsKKzE4NTkyIGEwNjQxNTk5NGNiNTZhNzg2ZjYxZjVlMTAzMDA5NDU3NGJkYTdhMDMgbGVnYWN5LXRydW5rCisxODU5MyAzYWQzMDA0ZGZlNmRiNmQ5ZDQzYTg2NjgyNzc1NGZiMjA2MDBmMzIzIGxlZ2FjeS10cnVuaworMTg1OTQgMDBjNjg1NWQ3NDJhOGQyYTUxODgzZjY4ZTc5NGU3Y2ViOGE5NmEzYiBsZWdhY3ktdHJ1bmsKKzE4NTk1IDMxN2MyMDNhYmVlNjg2Y2I2YmRhMjg3YWJmYTFkNTJlOTlmMGZlM2YgbGVnYWN5LXRydW5rCisxODU5NiA4NWRjMGNlMDE2MmU2ZjNjZTY1NjQ0M2UwYTQ2NDBlNmI4OWU3ZTE1IGxlZ2FjeS10cnVuaworMTg1OTcgNjEyNGNlZGY4NDM4ZGM4NmEwZjgzOTUyNDNmYzk0YTE2ZjM2YmU2OCBsZWdhY3ktdHJ1bmsKKzE4NTk4IDI3MjkwZWI5YzUyNjRiMDdiOTVjNWM5ZGNkZmZjZDU0NmQ5MWYzMDggbGVnYWN5LXRydW5rCisxODU5OSA3NmNhZjA4NTVkMWZmZTdlOTcxYmMxMTAyY2E4OTI5MGE5OWNmODNmIGxlZ2FjeS10cnVuaworMTg2MDAgOTc4MjFhNDZlMDAwMzAzYTZiODJjMDkyMzE2MWZlMGJjMDVmYjBjOCBsZWdhY3ktdHJ1bmsKKzE4NjAxIDBhNzcwMTNjNTBhY2EyMDQ1YjE0ODg0ZjU4MzE4MDc1Yzc3ZDMxOTIgbGVnYWN5LXRydW5rCisxODYwMiA5ZDE1YmFmNzE0NWFmZjJlNTA1YzBmMmIzYmY0NWFlZGJiMWQ4ODk0IGxlZ2FjeS10cnVuaworMTg2MDMgYWJiOTQ2MDkzMThlNmM0MzQwNDc3ZDBmMjE2YjNiNjIyM2E0Njc4ZCBsZWdhY3ktdHJ1bmsKKzE4NjA0IGJmODA4NjY4MjRlY2I1ZWY4YTc4YzU5YTM4ODhlYzExOTcwMGMzZDkgbGVnYWN5LXRydW5rCisxODYwNSA0YzA0M2UyMjdjNDQwN2VhZGIwOWYxZjFiZDM4ODk5ZmRmMjRkNGNmIGxlZ2FjeS10cnVuaworMTg2MDYgZjVjMDQxMzRmNGUyYmQ3YWQzYTlkYzhjNWFiY2E2N2EwM2IxOTJmNCBsZWdhY3ktdHJ1bmsKKzE4NjA3IDRkYmJmMzIyYTlkZjJjZmJiNTU4OTBhYzQxNWE0M2I2Y2YyYTZiNzUgbGVnYWN5LXRydW5rCisxODYwOCBmYTNmNTM3YzgyNDljNDRhYWY2NjA1NTZhNWExZWQzMjI5ZTI3MDgwIGxlZ2FjeS10cnVuaworMTg2MDkgNzlmOWUzMzMzMTZlNmJjZGUyYjA5YWMxYzA3YWU0NTk3YTY1ZDhlOSBsZWdhY3ktdHJ1bmsKKzE4NjEwIDc3Yzc2MWNkMTI3MmU5YjAzMDQzYmU1YTI2YWIzZDY0MzYyNzkyZTMgbGVnYWN5LXRydW5rCisxODYxMSBkNjdjZmNjMDY4M2VkYTg0ZmQxNjQxNTU1YmI4ZTAxOTUyZTRjZjYzIGxlZ2FjeS10cnVuaworMTg2MTIgOTM5YjhmZmZjNDUyZTA1MjViMzgwMDYxYjYzMjg2OGQzNTVlNmU5ZCBsZWdhY3ktdHJ1bmsKKzE4NjEzIGMwODIyYTA1ZTkyM2I2ZjUwMDk0ZDg1OTBkNDI0MGVhODE5ZmQ4YjUgbGVnYWN5LXRydW5rCisxODYxNCA4ZDAwZjc1NTVlZWMyNzgyZjg1MGNhMGZjZmI5ODY3MGZmM2FmZWI4IGxlZ2FjeS10cnVuaworMTg2MTUgN2M4ZmFjNGFjMzFhYmQ1OGM5MzFiYWJlMjZmZTNjMDlmMDA0M2IxNyBsZWdhY3ktdHJ1bmsKKzE4NjE2IGE0M2E4YTFmNDZlZTFiYjY1Yzc0NzNiYzliZTY5ZTJhM2ZiNTM2MGMgbGVnYWN5LXRydW5rCisxODYxNyA0NTk3OWNkY2QzNjk3MzljYmI4NTlhODVmNWY2YzVkNjU1YTQ5NDc1IGxlZ2FjeS10cnVuaworMTg2MTggYTllMTViY2FiMzJjYjYwMTMzZGI3NjEwZjAxYjNkMjZlOWNlMTUyYyBsZWdhY3ktdHJ1bmsKKzE4NjE5IGExZDg4YWIwMjNhMGJlY2Q1ZGVmYTUwYjhjMzUzNmYzNGNlMWU3MjkgbGVnYWN5LXRydW5rCisxODYyMCBhMzFjMzg2OGM4MTJmY2U3NjY2ZDEyNGI4Y2I1NDQ1ZjZkZWRmYWMxIGxlZ2FjeS10cnVuaworMTg2MjEgYTU2YzAwMGU1NzljZjdlNDM1NjcxZWZjYjhhNzUyMzczOGY1MjkwMCBsZWdhY3ktdHJ1bmsKKzE4NjIyIDk1ZWU3OWRmZDc0NjIzMTg2N2Q3Mzg0ZWIwYjAzN2E0ZmE1MTA0ODEgbGVnYWN5LXRydW5rCisxODYyMyBkZWY0MTZjZDkyM2RmMjJhOGIxYWZkYTQwYzRjYTY0OWQ4NjkwZDBiIGxlZ2FjeS10cnVuaworMTg2MjQgMzVlMDhkZDM3ZGYxMzdlMTY1Mjg1NjgwNWU5Mzk1YzJlYTZjZmUyNiBsZWdhY3ktdHJ1bmsKKzE4NjI1IDdiM2Y4ZTc2MWEyZDgyZGIzNzZjMjgzMzA3OGI0ODU5ZGUxMzg1Y2QgbGVnYWN5LXRydW5rCisxODYyNiA2ZDhmN2UxMjQyYzAyOWQ4MTYyODk4YzMxZDY2NDZhMDViMjAzZDI3IGxlZ2FjeS10cnVuaworMTg2MjcgZDZlNmE1Y2ZlYjNkNmI3ZDAxYWU1ZmVkZTZjNDY5N2VjNDI4MzgyYiBsZWdhY3ktdHJ1bmsKKzE4NjI4IDg3NDVmYjNhMTE5MTcyYWQ4ZWIzZjgwNGY5YTA3MTBlMGY1ZmJmODMgbGVnYWN5LXRydW5rCisxODYyOSBlNzkxZjQ5MDVkMjU2MWMyN2ZkYTE1ZGEzMmUzNWFkNzFmMmI3MGM0IGxlZ2FjeS10cnVuaworMTg2MzAgZmIxNDNmYjIzNmQwYWY0YjY1NGYyMTBmYjY4OGFmZWI0YmU4M2Y5YyBsZWdhY3ktdHJ1bmsKKzE4NjMxIDE4YTZlNmQ5YjRmODhiZWYzOWY2MzRkNGJlN2MzNTA2YzAyNGVjMjQgbGVnYWN5LXRydW5rCisxODYzMiAwODY4YzM2MWFmNWFmZGEyZmYyYWNlMzkwMTM2NzkzNjU3MmVjMWI3IGxlZ2FjeS10cnVuaworMTg2MzMgZWRiOTY2NmMwN2MwNGE4ZjllODc5Y2MzYTljNDVlNWYwOTIwNGZjNiBsZWdhY3ktdHJ1bmsKKzE4NjM0IDA3NmJiMjlhNjVkYzRiMDkzY2NhYzMyODdiMDE4NDVhOTQzOWQwZjcgbGVnYWN5LXRydW5rCisxODYzNSA1ZDZmYjdmZjY4Yzc5YTY5ZmNlNDRjMDRiMTNjYWMwY2YxNDczYzEyIGxlZ2FjeS10cnVuaworMTg2MzYgZThhYWQ4NDI0NzNhNGE1ZGJjMTlmNWRlNzgwNzE4ZWYyNDE5Y2I1NyBsZWdhY3ktdHJ1bmsKKzE4NjM3IDQzNzBmYzE5Njk3ZTRhOTY5MzBkZTBiOWM4Nzk2ODllMGU1Y2UwYTQgbGVnYWN5LXRydW5rCisxODYzOCA1MDc2NTQ0YzMzOGIxMzlkYjlhNmNhMDgzOWM1MGExYTM5YzNhZDliIGxlZ2FjeS10cnVuaworMTg2MzkgYjVhMzdiZjlkMTJkYTdhMjExNDhlMjVjYTdhZjY2Y2VmYWEwNzhmMSBsZWdhY3ktdHJ1bmsKKzE4NjQwIGM2NjljMjlkMWI4Y2RmOWJkZDgwYTI4M2FlYWIwYjc5MjE0ZTIzMjAgbGVnYWN5LXRydW5rCisxODY0MSBkNjQ2ZDYwNjg5MjQzMGQxNjIyMmM1ZjBmZjU4NGZjMGVlMDM2YTA5IGxlZ2FjeS10cnVuaworMTg2NDIgYjFjNTc3ODQ4MGExOWY5NTYzN2IwZWUxODQzZWE3NWZkMzBhODkyMiBsZWdhY3ktdHJ1bmsKKzE4NjQzIGFiNTM1MjQ0NDIwNTdlZGEwZTIyOGY4MmNhZTMwZjQ5NzlhZDZiYzYgbGVnYWN5LXRydW5rCisxODY0NCBmY2EyY2Y4NTBlNGFjZjEyMmI0ZTEyMDBhMmVmZGMwYjEzNTNhMmM3IGxlZ2FjeS10cnVuaworMTg2NDUgNzhjNGI2M2I1YjlkMzU0ZjcyZTNkNjlmNDA5ZDk2MzllNjEzMmNlNyBsZWdhY3ktdHJ1bmsKKzE4NjQ2IGVmZjExZmFjNWYzNjM5YTk5MWMyNDEyNmFkZTVlYzZiNDY0ZGU5NGEgbGVnYWN5LXRydW5rCisxODY0NyA4M2UxNDY5NzRiNzJhNGE5N2YyODYwYjIyZjUzODVjMDYzZDk4YzlmIGxlZ2FjeS10cnVuaworMTg2NDggYjMxYTA0NmY4OGE3NzI0MTI5ZWRhNTgzY2E3ZDg0MzlkZTBiOGJkYyBsZWdhY3ktdHJ1bmsKKzE4NjQ5IGRkZDNkOGMyY2NhMDUyOGE4YWQ1Mjk0N2VmZTBlZDFkYmIxYWY4ZWYgbGVnYWN5LXRydW5rCisxODY1MCA5ZTk1NTY5MjRiMGE3NDIxZThjYmI0NDY3YmI3ZDNlZGQwOGM5MmEzIGxlZ2FjeS10cnVuaworMTg2NTEgMWRiM2NhOTUzMGMyODYzZGU3YmZiMGJkMDk5ZDdkZjFiNmZjNTE4NCBsZWdhY3ktdHJ1bmsKKzE4NjUyIDQ4NTRlZTU4NWUwZGY4ODFjODAyNTYwODU2YjY4ZDBkMjRiZDBhNjAgbGVnYWN5LXRydW5rCisxODY1MyAwMTMxNzkzNzZmYTM1ZTUzZTA2MGVlNTcwZjc5ZTExNTUwY2FkMDlmIGxlZ2FjeS10cnVuaworMTg2NTQgMGZkZmFhZWE1ZTJmOTAzMWNlMzAxYTgxOGJhM2EwZTE5Y2ZiZTQzOSBsZWdhY3ktdHJ1bmsKKzE4NjU1IGI3ZDVmNjhiZTAxN2Y0YzgwMzliYjg1N2FmYmRiMTlkOTJmMmExOTkgbGVnYWN5LXRydW5rCisxODY1NiA2M2MwNDgzZWZmNjhmZjhkMjI3NDQ5NjhjNWZkNjgyOGM2YjNmODhiIGxlZ2FjeS10cnVuaworMTg2NTcgYjU3ZTNlMzc0MzE0ZTM1M2I1YTg3MGFlZTZmN2Q3NDM3YmFjNTQyNSBsZWdhY3ktdHJ1bmsKKzE4NjU4IGVkZDE5MjE3YjM5Njk1ZGE5YmE3Njk3NmViN2NjODQ2ZDEzMjk2NTAgbGVnYWN5LXRydW5rCisxODY1OSBkMDI3ZTg1ZTIwOWY3ZDg0ZDE5ZGZjOGRmZDUzMTQwNjQxYmMxZjYzIGxlZ2FjeS10cnVuaworMTg2NjAgNWEzMDhhOWY5OWE1NjY0N2ZkYjNjMmQzYTQxY2Y4MjRjZWQ1OGEzNyBsZWdhY3ktdHJ1bmsKKzE4NjYxIDNhMjYwMjc0YmNjNmExNWI0ZWM2NzAyZjhiMTBjMzEzOWQ3YTlmYjkgbGVnYWN5LXRydW5rCisxODY2MiAyMjhmZmQzNmEwZGRjNzM5ZTBiNzkzYTQ2MDQ4NGZhNjY3YTAwYTNlIGxlZ2FjeS10cnVuaworMTg2NjMgZWIxNzY3YjA2OGZlYzIyNzZmNzMyYTkyOGU0ZDE2ZDI2YzQxMTcwOSBsZWdhY3ktdHJ1bmsKKzE4NjY0IDliNjgxNGJmYjJjMGQ5ZjUzMjIzOTkyODFjZTlhY2FiMTE4MzZmYzggbGVnYWN5LXRydW5rCisxODY2NSAzNzgxOWE3NzdmYzBjNDllZjQzMGU0N2EwY2EzZDNkNzkxNjI2ZmEzIGxlZ2FjeS10cnVuaworMTg2NjYgNTQxNTgwNGZiMzQ1YzY5MjI0YmZmMTdmOTFmYWZkODViYmFjMzhkZSBsZWdhY3ktdHJ1bmsKKzE4NjY3IDNiOWI4ZjJkZGZlNzk2YmNkODczMDgwOTRlOTc4MmVkNGIzOGRhZDMgbGVnYWN5LXRydW5rCisxODY2OCAyMmZlZDJiMTVhNTRiMmI1YzFhNTY4NGFhZmFiNzVmNmUyMzViMmY1IGxlZ2FjeS10cnVuaworMTg2NjkgMzdkMTIwMjFkZjA1MTEzNDU5NzQxYjgyZjQ1MzNlYmRiNjgxMjRiNSBsZWdhY3ktdHJ1bmsKKzE4NjcwIGY5NzcyZjg3YjEzZTNkMGZjZTZkYTVmN2JhMjUwN2ZlZGQ2OGJiNjYgbGVnYWN5LXRydW5rCisxODY3MSA5NTQ2MTFmZDM1ZTFlOTQwZDQ2Y2YxMjZlYmMxYmE3MWE0ZjkzOGI5IGxlZ2FjeS10cnVuaworMTg2NzIgMWEwMGQyMTkxMGM4OWYxYjM4YjEyYTg2NTNjMWEyNjJkNmU1Nzk5YiBsZWdhY3ktdHJ1bmsKKzE4NjczIGE1NjNlZWM0NmMxYWJlOTFmNmExM2MwMGE2MTkwMDIzMTZjMTk2MjMgbGVnYWN5LXRydW5rCisxODY3NCAwNjQwMjZkYzc2NGU4OWU1MGU3YTgwYWE3YjFlZmRhZDQ4MzA1ZjA5IGxlZ2FjeS10cnVuaworMTg2NzUgZmFhZjlmMTBkODQ5NDM5ZTc5MTNjOWQ0NTI4NjBkMzQzYzMyNDdjMSBsZWdhY3ktdHJ1bmsKKzE4Njc2IDg2OGQyYWNmNzQ1ODA4YzkwMzNmNTdjZDU4MjlkOTdhNjllY2Y1NmUgbGVnYWN5LXRydW5rCisxODY3NyBjNjhiMDYyNDlkOGEyMTQ2N2E3YWU1M2M1ZjNiNmM0YmViYWQ5YTA0IGxlZ2FjeS10cnVuaworMTg2NzggNjQ1ZjhmZDZmYTlkY2M1OTk1MWNjMmQyOWQyNjk4MDUyODhmMDdlOCBsZWdhY3ktdHJ1bmsKKzE4Njc5IDJkMzk5MDY1NjI0ODAwNDE4MjYwZWY3ZjlkNDNiY2VjOTg1NTI2YzEgbGVnYWN5LXRydW5rCisxODY4MSA3OTc3MGNhMTVjNWE5ZjUyOTE0YjE2MmNiOTAxZTVlNGIzZWU3MGExIGxlZ2FjeS10cnVuaworMTg2ODIgMzNiNDQ0Y2JhZGI5OTJhN2U1NzI5MWJiOWU3NTM5MTNiODdhNmJlZCBsZWdhY3ktdHJ1bmsKKzE4NjgzIDBmMjJmZWI5Mzk3ZGI5YjFiODA3ZmNlNjA0ZDdmODZkOTRhMDY3OGUgbGVnYWN5LXRydW5rCisxODY4NCBjN2RmYmEwZGI4NzkwYjAwNGQxMWZiYzNiNWJhNTU3MWZiZDE2NWY2IGxlZ2FjeS10cnVuaworMTg2ODUgOTgyMTc3N2Y4ZGFkNmMwZjQ1ZjMyZGI4MzUzZWE5OTA3MWRjZmZmOCBsZWdhY3ktdHJ1bmsKKzE4Njg2IDdmN2VmOTQ0N2U1OWZjYTRiOGUyMGE1MmJkZDMxNTMzNTdkZmViMDQgbGVnYWN5LXRydW5rCisxODY4NyA0MzI4ZmZlNjQ3YmY3YmVhZmNjZGQ3NTU4MTM4ZWUyZDhiNzgzOTgzIGxlZ2FjeS10cnVuaworMTg2ODggMTc0NDkwZTkyNGQ0N2YxOTJiZDk4ZmE4ZGQyZWU1M2Q2OWY1MDdmMiBsZWdhY3ktdHJ1bmsKKzE4Njg5IDgxZGI5MmU4MGVhODg2M2RiOTk5ZmM5ZWVlYTM2NGZjZjcyNTU3ZjUgbGVnYWN5LXRydW5rCisxODY5MCAwNWFkMjk3ZTE0NGZlOTdkZTUyZWUwMmI3NTA0NDg4ODBjMTIwY2Q3IGxlZ2FjeS10cnVuaworMTg2OTEgOTMwOGRjOGM4NWUwMzVjNDQ0YjVkNGZhN2EyOTkxYjE3NDAxMzA3YiBsZWdhY3ktdHJ1bmsKKzE4NjkyIGUwMGY3MThlNGQ4YWIzOTVlNjgxOTRlM2RjY2UxNThlN2NjZmJkYTYgbGVnYWN5LXRydW5rCisxODY5MyA5YTIzODVlZTFkOTk0NDY0MDc2MTc4NTVjODRkNjI0ZWU2YmRkOTMyIGxlZ2FjeS10cnVuaworMTg2OTQgMGFlMzg5ZTkzNWZjNDE2ZWI4NzQzN2JjZDM1Y2UzOTE4ODE0OGMzYiBsZWdhY3ktdHJ1bmsKKzE4Njk1IDdlYTMwYTE2MzQ2MzZkOGZlYWMyZDY0ZThiYjU4YzNjZjljMmIxMWEgbGVnYWN5LXRydW5rCisxODY5NiA2ZTMyOWYzZTE3ZjBlNTM5YTYyOGQ4OGQzMDM1NmJhMWQ2ZjI4MTUzIGxlZ2FjeS10cnVuaworMTg2OTcgYjFiMGE3MDNlYzRlNmEzYjA2NzNkMTNkMmIzYmYxNTc0MGI2ZWI3MSBsZWdhY3ktdHJ1bmsKKzE4Njk4IDBlNGY0OGM1ZmM4NGQ4ODA2MDUzZDljNjg1NTM5MDg2MzQ3YmRiZGMgbGVnYWN5LXRydW5rCisxODY5OSBiYjMwM2E3NmE0NzgzN2NmMDQ3MjY2YmI0Njc5ZTdiNGNiNmQxNTU2IGxlZ2FjeS10cnVuaworMTg3MDAgNjdjOGFiZDIxMDI1YTU0MmZlYTc2MzZjYzgzYTE0ODhlNTcwNTc1NSBsZWdhY3ktdHJ1bmsKKzE4NzAxIDNiNjQzNjUzZTA3ODIwYmY1NzM1YjI2ZDU2YTY2MTc4NTNlYmQ4NzkgbGVnYWN5LXRydW5rCisxODcwMiA3ZDUwMjViYmEwMzdjNmM0ZmE1MTA5MWI5ODhlNTk1YTY1YTk1NTFiIGxlZ2FjeS10cnVuaworMTg3MDMgMTdlYmE3NDA0MDk5Y2U1M2QzZjU4NjIxNDFhZGJmZTI5M2UyZDFkZCBsZWdhY3ktdHJ1bmsKKzE4NzA0IGY2Y2QzNjQ5OGE1MDNmMzE2NTE2NzMxMmZkZDVhYzg2NmE4OGMyOTIgbGVnYWN5LXRydW5rCisxODcwNSA2MDFjNTNhOWU0OWRmMWZiMjBhOTJlOGY2NDFmMGM2ZDIyZTAzNzZkIGxlZ2FjeS10cnVuaworMTg3MDYgMjgzMzU2ZmI2ZWZjNzU5ZGFhNzlkNDUxNTcxODQ0ZDBlMjIyN2E2YSBsZWdhY3ktdHJ1bmsKKzE4NzA3IDIxMGJiZTUzYjZkNGFjNzhiZGViNDc0NzMzZDFhOTQ5M2JlNzA4ODMgbGVnYWN5LXRydW5rCisxODcwOCBkNDFmOWIwYTQwY2FhNjE0Nzg5NWVlNGNhMjU3NmEwZWZiODJiNTE3IGxlZ2FjeS10cnVuaworMTg3MDkgNjc5ZDUwNzA1ZTA2OTVlMTE2NmI0MzUyMTIwYmMxZWY0M2NhNzVjNCBsZWdhY3ktdHJ1bmsKKzE4NzEwIDQwNWE1OTczNTg0MTZkMDJhNDA5MDVkZjQ5MmNhZjZhNDliMDRlNjkgbGVnYWN5LXRydW5rCisxODcxMSAxN2QzYTYzZTIyYzc0MjgzOTBmODIyMTI1N2MyYjg3ZTNkZmVjOGIyIGxlZ2FjeS10cnVuaworMTg3MTIgYzcwNDIxNDMzOTlmMzE4NDRhMmQwYTIyNDIxNTMxMjAzZmNlNDA2ZiBsZWdhY3ktdHJ1bmsKKzE4NzEzIGEzYzFhMjM0Y2VlNzE4NDE0Y2MyN2M4Y2VlZDBlNjgwYmMzZGVkMTAgbGVnYWN5LXRydW5rCisxODcxNCAwZDhiNWIzZDlkODNkMDY2Y2VkNjgxYjk5ZTNhMmNmNjJlNmM3NjhlIGxlZ2FjeS10cnVuaworMTg3MTUgYTg0YjUzYmE5MGM0MWRiZWRjYTMzY2Y0MzYyMjdlZWViY2VhNmYwMiBsZWdhY3ktdHJ1bmsKKzE4NzE2IGZjNzY1NDY0YjE3ODAxMmM3Y2MyYWI5YjQyNDgxYjcxYmQwYmQ1OWMgbGVnYWN5LXRydW5rCisxODcxNyAxNTJkMDA3MTgwMDYwOWQ1MGIwY2E0ZTk2MmZlZTdhNzc4NTIzZDk1IGxlZ2FjeS10cnVuaworMTg3MTggOGM3MTQwOWFjMGMzOTRkMTk2NjU4Njk4ZTg5NTQxZGU1MjIxNWExMSBsZWdhY3ktdHJ1bmsKKzE4NzE5IDBhOGRhNmYzOTdiNzhmNTgxOGQ5MDc4Nzg0MTcwOWRlZThiMGRhOGEgbGVnYWN5LXRydW5rCisxODcyMCA4MWUzZDg2MjZhZGYwZjc5MDU3OWJhODk1MTEwNDI5MWFhZmVjMmFiIGxlZ2FjeS10cnVuaworMTg3MjEgMzE5NjdhMjMzNjAwOTJhNWM4N2Y4N2RiMDlmODQ4MmRiYzFiYWE0OCBsZWdhY3ktdHJ1bmsKKzE4NzIyIDA4M2E1Yzc1ZWQ5MDQ1MjIxM2I0ODQ2MDQ2MDg5NjJiOGQyMmMxYTkgbGVnYWN5LXRydW5rCisxODcyMyBlN2Y2ZDU0YzAxNGQzNDFlZTUzYTM3NWM5ZjVlN2FhMTIyOGMzN2RiIGxlZ2FjeS10cnVuaworMTg3MjQgZmMxZTU4MzFmZTEwNzdiNzgyMWVlM2Q1ZmZlMDU1OGY5NjY1YzZlZSBsZWdhY3ktdHJ1bmsKKzE4NzI1IDcxYjE5ZDM2YWFmYTkzZmViMDAzYzIxNDAyNzkwMmE3M2RiNzI1OWEgbGVnYWN5LXRydW5rCisxODcyNiAxYjAzZjc2YWIwM2VhNzQyNTVlYjc1NDUyYjk2YTQ5OTViOTRjOGVlIGxlZ2FjeS10cnVuaworMTg3MjcgNTU3OGU5YjQyNGQ0YWE4ZGRjZTU2ZWEwYWNmZDJkYzA0YmJmMzI0ZSBsZWdhY3ktdHJ1bmsKKzE4NzI4IDcwYTU5ZTNmYjI3OGJiNTIwZTk3MTM3YmNjZGM1NWE4ZDg4ZDY5ZmQgbGVnYWN5LXRydW5rCisxODcyOSBmNWEzZDk4YTM1YmM0YmRjNzRhODRmYmE2ZWVkODU5ZDBmMDdhZDI5IGxlZ2FjeS10cnVuaworMTg3MzAgMzA2MGNiZmEwMWJlNmRmYzZmZGI4OGYwZjVjMTBiNzNiYmZiZjA2ZCBsZWdhY3ktdHJ1bmsKKzE4NzMxIDFhNGMxYzBlMTRhMTNmNTk1MjY1YWI2NGNiMTRjYzQ5MTM4NjYxYTggbGVnYWN5LXRydW5rCisxODczMiAwMTBkMDM4NTM1NDY0NmYxNTcwMDUxZjE5MzZmNjUwNzQzMzFkZTBiIGxlZ2FjeS10cnVuaworMTg3MzMgNjJhZWVmYTAxZmRkNTU0ZTMwYjUwNWU1ZTAzNzc1NGRlNzFjNTRlNCBsZWdhY3ktdHJ1bmsKKzE4NzM0IDM2ODVlZjJhNTVhNDhlM2Q2YzAwYTkxOGViYWZmNzMwZjNiMjRkZjUgbGVnYWN5LXRydW5rCisxODczNSAzZGQyMTdmYmRkNTliMWVkMjY4MzcyMTg3ZGM4MWQ5ZjE1ODA5ZWFjIGxlZ2FjeS10cnVuaworMTg3MzYgNGMwMWVlMGE4MDczZjlkZTQ4ZDJjMGY1N2Q4YmFmOGY1ZDYzNzExMyBsZWdhY3ktdHJ1bmsKKzE4NzM3IDE5NTU1N2EwZjA1MGI4MTI3MmUyYTVhNjE1N2UxMDczNGE5MjIzYzcgbGVnYWN5LXRydW5rCisxODczOCBhMzNkZTIzYjMwNjZmYmNkYmIyN2U5MTZmNDJlODQwODg3ZWQ4M2FlIGxlZ2FjeS10cnVuaworMTg3MzkgOTNkMDU2N2M5ZmM5Y2IxZjE0ZTgzNzJmMTExZjNmNWNhOGQyM2U5YiBsZWdhY3ktdHJ1bmsKKzE4NzQwIDc1MTIxNWZhMGRhN2YzYzMxMjY3NDY1ZjRjZDA5Njc1ODFiMmEwMWQgbGVnYWN5LXRydW5rCisxODc0MSA5MDk5MmM4MmQ0NmU5ZmNmZmM0ZjVhZjQ2MDgxMTRjYmYwNDZmYjM5IGxlZ2FjeS10cnVuaworMTg3NDIgM2VhMTBlZTkxZTljNWU1ZDQ5OWI4NGIwMDk4ZDEyYTRkY2UzZWIxZiBsZWdhY3ktdHJ1bmsKKzE4NzQzIDQxNTQ2MzUzMjU1YzdmMGE5Yjg0MzQ1ZGYxMGE0MTI4YzVjNGYxN2QgbGVnYWN5LXRydW5rCisxODc0NCAxOTBkMTRiNzBjMjdiOGY1NTMyMGM1OTkyNDQxYjEwMWM0NDdlNzNmIGxlZ2FjeS10cnVuaworMTg3NDUgZjQ3ZDFjYmZiZTcwNjMyNGI5YTZlM2Q2OGYzZjUyMzlkMjBlZGRkNiBsZWdhY3ktdHJ1bmsKKzE4NzQ2IDdjZDQ2ZmY4OWJmYzNiMGVmZmUxOGM4OTU0YzZmYzk2YWZlZTI2ODkgbGVnYWN5LXRydW5rCisxODc0NyBlNmEwZmQ1NGI2MDcyZmE4NGEyOGVlNTY5MGEyODBhM2VlMmZiMzZlIGxlZ2FjeS10cnVuaworMTg3NDggYTcwMjVmMDcwOWM1Yjk5Zjk1MDhiODIyNmMxOTk5NTA2MTQ0YTVkMyBsZWdhY3ktdHJ1bmsKKzE4NzQ5IGY4MzExNWVkZjE2YWY2YWQ2YjQ3ZTg3ZjBmZWVjOTViYWM3YmM5YzMgbGVnYWN5LXRydW5rCisxODc1MCBiNTMyMDYyOTViZGZlZjc1NDI0Mjk1MmM0YWMyNGZkOTM5ODAyZDBmIGxlZ2FjeS10cnVuaworMTg3NTEgYjBiYTQ2YjE2ZTA3NTA5NGZiMDQ0Yzk1ZWI5MzdkNTQyYWE3MjRhZiBsZWdhY3ktdHJ1bmsKKzE4NzUyIDdjYmU0NWQ3OWFiNWMwYmQwNjIwNzIxMTZmMTdiMjJkNzk2ODczOTAgbGVnYWN5LXRydW5rCisxODc1MyAxOGM0YzdjYTkzZWEwNmExOWNiMzMxNzFhYmU2MWJmNWI1ODNjOGJhIGxlZ2FjeS10cnVuaworMTg3NTQgOGVmMzFhMDM5YTk2NDBhMDU3NTFhMTM2NjEyZWJlOThiNTk2NjczMyBsZWdhY3ktdHJ1bmsKKzE4NzU1IDU1M2EzMTVmNThlOTJmZDEzMmQxNGQ2ZWQ4ZDg3YjdjYzc1OGNjYTIgbGVnYWN5LXRydW5rCisxODc1NiAxYzZiMGQzYTU4ZWFkYjU1NjdmY2NkZGJkODYxZmM3ZDk0ODQ0YzQ1IGxlZ2FjeS10cnVuaworMTg3NTcgODc2NGRmZmJhZjIzNGUxOTY4N2YyMjlmYzgxZGE0M2I5ZDMzZTc3NCBsZWdhY3ktdHJ1bmsKKzE4NzU4IGM4N2UyYTJlMzM1ZDBhMjkwMjYyNWI1MmUxZGRmNGZjZjIxMTBmYmYgbGVnYWN5LXRydW5rCisxODc1OSBjNTY4YmE5ZGMxODBhMmNhMjMwOTI0ZjUxNGEwMTJkOTgzNjdkY2JjIGxlZ2FjeS10cnVuaworMTg3NjAgODM2NmZjZmI2MDkwNGNmYjVmYWY2ODNkNjI0MWM5NTI4YmQzM2FlYSBsZWdhY3ktdHJ1bmsKKzE4NzYxIDE1MjgxNGY2Y2QxMTMzZTdiMzJhMjc3NmFmYWU3MjRlMzM0ODgyMmQgbGVnYWN5LXRydW5rCisxODc2MiAxMTI5ZTE2YTExZGZiMzU3OTE3ZDVhNmE4YzFkMTQyOTE5NzExZTJlIGxlZ2FjeS10cnVuaworMTg3NjMgY2Q4M2Y3YTljZGNkMWYzMTU5ZTYzOTFiYTE2YzEwNmI2MGVjMGExYiBsZWdhY3ktdHJ1bmsKKzE4NzY0IGVlZjMyMWI2ZTQxY2U2NjNjNjg2YjdmYjYzOThmYTZmZDM4ZGU2ZTkgbGVnYWN5LXRydW5rCisxODc2NSBjOWRkYmUzNDA3ZmE0NDAwZGE5YWNjZmY0ZjA3ZTc1ZTI5YjM4ODFhIGxlZ2FjeS10cnVuaworMTg3NjYgMTQ5NDU4YTU3NDBhZjFmNTk2ZDVhZWI3OGI4YmZkMTg1YTIzZTZjNCBsZWdhY3ktdHJ1bmsKKzE4NzY3IDEzZTVlYjAwNmViMzIxYmJmZTQ5MzljMzJhNDE3NGJkZGFhYzUwYWYgbGVnYWN5LXRydW5rCisxODc2OCA1MDg5MGUzNDU0Yzk1MGE4OGViNDMxM2U1MDRiYTZhZThhMTA0M2JjIGxlZ2FjeS10cnVuaworMTg3NjkgMTMyNWJkZTk0ODk2ZGQ1ZGQzNmY4NTlmMTUxMTUyYzNmZDQyNDdhNyBsZWdhY3ktdHJ1bmsKKzE4NzcwIDk4ZTk1ZTBmNWJlYzc0NWU5ZTAxMDI3OWZlN2UwYWY5NjdiZTk1YmIgbGVnYWN5LXRydW5rCisxODc3MSA4ZGIzMTlkZGZiMzc5ZTdjZjZhNzc5ODIxNzMxMDg2OTE2ZWRlNTI5IGxlZ2FjeS10cnVuaworMTg3NzIgZjdmM2JlM2QwMGI5YzlkZWQ2YzRmYjYxMDM0ZDFlY2VlYzRiMmNhZCBsZWdhY3ktdHJ1bmsKKzE4NzczIGE4ZWRiM2Y3ZjRmODNiOTVhMDUzYmVkMDU0MTM1YzE5M2YwMWYwNmMgbGVnYWN5LXRydW5rCisxODc3NCBlODI0NjQ0MGE4MjVjOTRkZWE5YWQyNzlmZjZmNmJiYmQzMTQ4MzY2IGxlZ2FjeS10cnVuaworMTg3NzUgZDdkMTY2NTUwYzQzMzlmYWVmOThiYjIxOTdhYzIzZTg3YzA4NjJlYiBsZWdhY3ktdHJ1bmsKKzE4Nzc2IDg4YTEyNjdhMzM5NWVhZjEzM2UxOTg0OTE1YjAyZDZjZmVjODY3NDYgbGVnYWN5LXRydW5rCisxODc3NyAxODUxMWUxMTI4NzAwZDFlZDViOGQ2OTJlOWJmYWY4MmEwYmZlZDUzIGxlZ2FjeS10cnVuaworMTg3NzggYWU2MzZiOGFjNDgwOGRmNGJiYTljZmFiYjk0ODIxMTMzOTYzZmYwZSBsZWdhY3ktdHJ1bmsKKzE4Nzc5IGEzODE5MGY3MWJmMmI1ZjU3N2FiNTIzM2QwZmU1MjRlNTM4MWUzMzAgbGVnYWN5LXRydW5rCisxODc4MCBiYTZkNGI1MjE4MGE3N2ZmZGM2NjIxMzBlMmI1NjI4MjBhNzdhYmEwIGxlZ2FjeS10cnVuaworMTg3ODEgYmUyNTdhNzU1M2EyMjcxNjYzZmJkMTA1ZDNmMTY2NmQyZTQ5ZTA3NCBsZWdhY3ktdHJ1bmsKKzE4NzgyIDAwN2Y3ZmFmNjJiMjAzMThmMjdkYTBkYjFiNDg0MTk2ZDQzMzU0NWEgbGVnYWN5LXRydW5rCisxODc4MyA0ODk2OTJlNzkxNTE0MzIxNDE0ODBlMWNjMDRlZTg2MmYwMGQzNTc2IGxlZ2FjeS10cnVuaworMTg3ODQgZmRhOWY4NmRjNGU4NDQ1NWRiOTM5YjU2YjcwMTIwZGJjYzg0MThiYSBsZWdhY3ktdHJ1bmsKKzE4Nzg1IGZmNmMzMGU4Y2E3M2M4NjljZmJkMTJjNDQwZmM5MGRlOTBiNGZlNDMgbGVnYWN5LXRydW5rCisxODc4NiA3MDJlZDk5NjUyMjhiYjA3YjYwYTdmN2YwYTUwZTZhNjI2ZTMyNGFkIGxlZ2FjeS10cnVuaworMTg3ODcgOWQ1YmVlZDBiOTNmZGYzNWFjZjIxMTk1ZjU2YTliZjRkNGQzN2YyYiBsZWdhY3ktdHJ1bmsKKzE4Nzg4IGFjMTNjZWY0MjNjODMzZjVkMTI3OTcyMzIwMzE1MTM2OTQxNTI0NzggbGVnYWN5LXRydW5rCisxODc4OSBjOTU5ZjRiM2VmYTExYWU0OWEzMTc5NmI4YWRhZWUyYjI3MWVkODViIGxlZ2FjeS10cnVuaworMTg3OTAgMTg3MmU2MDlhNjM0YzAyYzE0M2IxODcwNzljNWI1MmM0NDNlMWNmYiBsZWdhY3ktdHJ1bmsKKzE4NzkxIGE0ODQ1OTNjZDQwN2UxYzY2MTU3NGEwNzFmYjFmZmExODY3NTNkODQgbGVnYWN5LXRydW5rCisxODc5MiAxNGEyN2FjYzc1NWFiNDM0MWZiNzdjYzhjNjZkOWVlNDIyNzEwYTBiIGxlZ2FjeS10cnVuaworMTg3OTMgZGMzYjlhNTgxNjg2Y2Q4YzRjNGE5MmRhYmIyMWE0NmUyNDg3Mjc0NSBsZWdhY3ktdHJ1bmsKKzE4Nzk0IDE4ODFiOTY4OTg5Yjg4ZGE3M2RiODQ2NTA1Mzc0NTUwNTZkNmRkMWQgbGVnYWN5LXRydW5rCisxODc5NSAzNWE0MTk0ZjllYWQ5Yjk2ZmM2M2Y1MjIwMWVlNzIyNTk5ZmE0MzM3IGxlZ2FjeS10cnVuaworMTg3OTYgYjFhNWVkYjgwZjVjZmNlY2I1YjMxNmJhMjYxNDExODcyMzliNGVjYiBsZWdhY3ktdHJ1bmsKKzE4Nzk3IDBiMGZjZTE0ZDRlODgyNmJmYzZiY2FiMzFkYzhiNzc0OTE1NzlmZWQgbGVnYWN5LXRydW5rCisxODc5OCBiZWMwZjYxY2ZjZDU2ZTA2MzRkYjdmN2UzMTQ5ODJhNDRkYzc4NjI4IGxlZ2FjeS10cnVuaworMTg3OTkgZDlkMGRjYjczNWQ3ZjdhYzQ1NzI3NWQxYzE1MDdhMDE0ZjhkNmZiYiBsZWdhY3ktdHJ1bmsKKzE4ODAwIDhmZDIyMWFlZDM1NzU5YmYwOWRlYjgzNjIwNDlhYjcyY2Y0YzA4MzcgbGVnYWN5LXRydW5rCisxODgwMSA4NjdhNGE2ZTdjZGE4NzdmODdiNmNlMDBkMzc1ZjgyOGM2YjQ5ZTFiIGxlZ2FjeS10cnVuaworMTg4MDIgZWE0NjRlZGE2MTU4NGI4OTg5NDIzMDU4NWQxYTM0NDQ2YjI3MzRhOCBsZWdhY3ktdHJ1bmsKKzE4ODAzIDVhYmFlNzk1NzQyZWE5NjkzN2RmZWIxYmVkMjZlODYzZDAwNTBlMzQgbGVnYWN5LXRydW5rCisxODgwNCA2NDM5MGNlYWFjMWFmOWNmOTY4ZmMwMGZlNDMxNjc1ZjU4ZDhmODU5IGxlZ2FjeS10cnVuaworMTg4MDUgNWIwNjNiYWViZWY4YzZkNTdjZDk0ZmRmMWUwNTBlMjA4ZWI1MjA4OSBsZWdhY3ktdHJ1bmsKKzE4ODA2IGY0NjRhMDNiZTg1YWU2ZDkxMmFhYmUwZDU1MzRmYTFhZjg2NzlmMWQgbGVnYWN5LXRydW5rCisxODgwNyAyZWRmNWVkMzA1ODM5YjFjY2YyNTQxMTczZTYxODQ4N2E0NDc0ZDBjIGxlZ2FjeS10cnVuaworMTg4MDggNGY2MjE3MDg1MTRiMWFhNWYyMWEwNjEzMTA0MTI1OWVmYmMwMDlkYyBsZWdhY3ktdHJ1bmsKKzE4ODA5IDZhODUyNDhiNDM5ZWFhM2Q5MDhlYzEzYzYyZTA5OGIwMmVhNmI1MzUgbGVnYWN5LXRydW5rCisxODgxMCAzYmMyNDQwNDI3ZDMzMWNmZDIxN2E5MGY2NWQ2MzZmZmU3MDQzOGIwIGxlZ2FjeS10cnVuaworMTg4MTEgNzZhZDJhOWEzZTUzNGUxYzA1NjRiNDYzMzUzMzlhZGY1YWRjMjBkNyBsZWdhY3ktdHJ1bmsKKzE4ODEyIGYyZTEzODk1YmRhN2RmNTE4MDc3MTZmZDBhZTAxY2QwZWE1YzA5YmIgbGVnYWN5LXRydW5rCisxODgxMyBkYjI2YjQzYzkyNGYzMGRjYTA3NGViZGI3MzUyNDUyNzUzMTE3ZTg2IGxlZ2FjeS10cnVuaworMTg4MTQgMWY5MmQ2M2IyMGYwMjMxMDdmYTU5ZWVmNDA3OTk3ODRlOGZmNjMyOSBsZWdhY3ktdHJ1bmsKKzE4ODE1IDgzNDliNGRmYzUxYWRlNjNkMjRmYzljMGIyNzFmMjFmZjE3Y2U1MzAgbGVnYWN5LXRydW5rCisxODgxNiAwMWVhZTQwODU3ZDgzZGJlNTlhZWY4MzlhODY4M2Y5ZWRmNGE2NzM4IGxlZ2FjeS10cnVuaworMTg4MTcgMjgzYTBiMmFhZGM1ZjJhYTk0YWJmM2ZhNmNjNjNiNzQ2ZWVlY2ZlMyBsZWdhY3ktdHJ1bmsKKzE4ODE4IDg1N2FhZDg0MmFlN2Q5OWQxMjgyZjMwZGZmMDhjZWFmY2MwOTgzM2IgbGVnYWN5LXRydW5rCisxODgxOSBjMWE4ZGViMTVmMGUwNjZlZTFhMTBhMTczNDI3NjA3MGEwYmYzMWNiIGxlZ2FjeS10cnVuaworMTg4MjAgYzgyMDU1NTJkZGUxZWI2OGRlMGM4YmI1ZjY1NmE5NDFhOTA5OGUwNiBsZWdhY3ktdHJ1bmsKKzE4ODIxIGZkYTNmZjE5ZDFjNGE5NjllYTY0ODU0ZWYyNDNkY2M1ZGI3YjMyMTEgbGVnYWN5LXRydW5rCisxODgyMiBkNzNiMjFkYWUyOWEyZWU4OTg5M2QwNGE5NjRmMzkyYWMwZWE0YWEwIGxlZ2FjeS10cnVuaworMTg4MjMgYzAwMDBiZDYyNTJjNjgwMzI1MDRkMTRmMjE0NzM1YTgxNjEwYmI1YiBsZWdhY3ktdHJ1bmsKKzE4ODI0IGYxNzUxYWJmNzcxZmZjNGFjYjYxMTk5NjMyYzJhMTk3NWVhOTQ1ZGQgbGVnYWN5LXRydW5rCisxODgyNSBjZjE3YTNjZTUzODc0M2VkMjNhZjMyYWU2ZDBjYWE1YTQ3MTVlZTU3IGxlZ2FjeS10cnVuaworMTg4MjYgZGM4YTMwYjg4ODdjODA3M2JlNWE3ZDIyZDllODNlNzhjNTUzYmU2NCBsZWdhY3ktdHJ1bmsKKzE4ODI3IDVhYmI0NzMwNGJjNzY4NWU2OTBjNWRlMDgyOWE1Zjk5Y2EyMzNkYzIgbGVnYWN5LXRydW5rCisxODgyOCBlNTliODM1YWQ4OWE1MmVjZjk3MWMyNGU1Y2MxZjI2NGRlOWIxYTg5IGxlZ2FjeS10cnVuaworMTg4MjkgZGNhZTNlMDhkODQ4NDg1NzNjMmYyYmM5NzQ0NGU3N2Q5YjNjN2Y0ZiBsZWdhY3ktdHJ1bmsKKzE4ODMwIDViYmE4NWQ0OWU1YWY4YjZjMjk0ZDRhYTE5ZmZiYTJhNzkxMDU4ZDkgbGVnYWN5LXRydW5rCisxODgzMSBlMjFkYTg0ZDBjNjVmMGExMDI0MjRlZDhkODY4Yzc3OTVkMTRkNGJmIGxlZ2FjeS10cnVuaworMTg4MzIgNzcwMDhmMDdjZTI1ZGFhMDNjNDcyODM3YTVhYWU2NzdhNGIxMzY2NyBsZWdhY3ktdHJ1bmsKKzE4ODMzIGZmOWM3OWJiYzNlZWQxYjIxNTZmN2EyZTc3N2I0ZGM0ZDYyMzcwMTYgbGVnYWN5LXRydW5rCisxODgzNCA4ODliN2JhZjhiYmI0YjNjOWRkMjAzNmRkNThkNGE5ZGE3ODQxNzYzIGxlZ2FjeS10cnVuaworMTg4MzUgNzIxMzkyNjNmOGE3OTc1MmQyMzFlOGQzOTljMDQ0NmFkNTAwOTkzNiBsZWdhY3ktdHJ1bmsKKzE4ODM2IDViOTEwM2U2MmZhYzNkYTRjZjI4MjVmOWMzYTdjNjNmYWVkZGM5MGIgbGVnYWN5LXRydW5rCisxODgzNyA1NDIwNTgyOGIxZTE3M2M2ZjkyZThmMmQ5YTMzNDFkYzgyNjBlZjJlIGxlZ2FjeS10cnVuaworMTg4MzggNTFmYzQ1Mjc2YTQzM2Q3YTA1YjUzMzdjZGJhNjc5YTllZDMwMmYyNiBsZWdhY3ktdHJ1bmsKKzE4ODM5IGYxNjU0NWY1ODM0NTYwOGI1YWRjZTg0MzczNDkwN2NjNDEwZjEyMzcgbGVnYWN5LXRydW5rCisxODg0MCAyNGRhZmJiMGRiNThmNjYyZTVlMGUzYjcyMTBhZmU4NzZhYjRjNGUxIGxlZ2FjeS10cnVuaworMTg4NDEgYTM2YTQ5MzJlMzk5MTM1YzE1NDA0ZDY1NzZhYjlmZmU1YjgyNWQ2YSBsZWdhY3ktdHJ1bmsKKzE4ODQyIGFmYWU0MDY4ZDJkZDk4ODI4ZjIzYzY0Mzk0NmQ1MmQyZGQwY2IyODQgbGVnYWN5LXRydW5rCisxODg0MyBkMWNiNDEzOGZkMzRhNGE5Njk3NTIwNzRiNzcwMjg1ZWFkYmNmNWNjIGxlZ2FjeS10cnVuaworMTg4NDQgOTEzMDRjNGM3MjU2ZjgzZDYwMjc1Y2EzOGNlNWE4NTg2NjAzMDViNiBsZWdhY3ktdHJ1bmsKKzE4ODQ1IDJiMjkzMTlhZTY4MTk0MDNlZjAzM2MxOGZjYjAxZmYzZGYzODBjN2MgbGVnYWN5LXRydW5rCisxODg0NiA2YzE3NTFmNmFmZTIzZTBkZWI0MzRiNDVhZmI0YjU0MDMyNzQ5ZGUyIGxlZ2FjeS10cnVuaworMTg4NDcgMTdmMjNmOGNkOGM3N2YyZDU5NThjNTMzYWZhODAyYzA0OGRiNjAwNCBsZWdhY3ktdHJ1bmsKKzE4ODQ4IGJkNWFlZTZiODM5MGQ0ZGIyMjBmMzkzYzcxYjI0MGRhM2JlY2ViOGQgbGVnYWN5LXRydW5rCisxODg0OSA1ZmI4NjUwNzUxOWMwOWQ5YWRlY2NjMWZhMmM1NTRlNjk0NzJmNjY4IGxlZ2FjeS10cnVuaworMTg4NTAgYWUyOWE4OWI3N2MzYTEyNjRkZTg1M2UyODc4M2M2Y2NiYTA3YmVmMCBsZWdhY3ktdHJ1bmsKKzE4ODUxIDFmMWVmZjA4MWEyYTc1MTJlODIyZDkwMDRlMzhmYjhhZjUwOWNmM2IgbGVnYWN5LXRydW5rCisxODg1MiAzZjRiNjAwMmMwN2QzMTNkYTYzNzNjOWI1Yjk3ZTFkYjZiMWJhZDYwIGxlZ2FjeS10cnVuaworMTg4NTMgNjIwODRjZDk1N2JkNmQ0ZDI0ODFmNTY3YWJmYWQ2ZDI0MTRkYzk4NiBsZWdhY3ktdHJ1bmsKKzE4ODU0IGFhY2JhMzc0NzZkNDI2ZWQyY2E2NWQyYjk4NmIyYTdiMDM4NTgyOTIgbGVnYWN5LXRydW5rCisxODg1NSBlYWUyNjExNzk4NmZhNGI4YjIyMjU4MTliNDVlNzVmOTEwNjA4NzE5IGxlZ2FjeS10cnVuaworMTg4NTYgZjlhMTVhNTgzYzc5ZDlhNjE5MDc1ZDIzYWY4ODYwZTU3Y2VmMzlkNCBsZWdhY3ktdHJ1bmsKKzE4ODU3IDg4MzI1YjczYTZhM2IxMjk2NmE4ZTNjZTg0NmY3MDg0YzNiOTRmNTQgbGVnYWN5LXRydW5rCisxODg1OCBjNTAzZmE5YjI2NWUyMmJlMmU1NWFkNGE1Y2RkMjllZTk3MTQwNjFkIGxlZ2FjeS10cnVuaworMTg4NTkgNjk2NWMyMDViNjAzNjRmZTg4ZmViOTUzNmE4ZWE4NDJkYjU4ODAxYyBsZWdhY3ktdHJ1bmsKKzE4ODYwIGYzOTBmNDNhYzRiNjQ5YTlhYTgzM2ZiZWEyYTJjNTliN2MwYjUxYzMgbGVnYWN5LXRydW5rCisxODg2MSAxZGMwMmIyMjk1YTk3NDY5NWVjNGE2ZDRhYzJkOTNkYjI4ZDJkOTE1IGxlZ2FjeS10cnVuaworMTg4NjIgM2Y2MWVmNzJhZWYzNTA2ZTI3YzRlZGEyMGIyNWUyYWNjNDRmYzY1MSBsZWdhY3ktdHJ1bmsKKzE4ODYzIGYzNzQwNjc0YWM1YmYzMjk5ZWZmOTU2YWU4ZmEyOTcxYTYyODcxNmEgbGVnYWN5LXRydW5rCisxODg2NCBlMWU3NmZlM2NiNTNiMTUyNWVjYjVjN2MwODRiYjdjYzlhOGQzMzVkIGxlZ2FjeS10cnVuaworMTg4NjUgZThlZTA3ODVjODQ2ODY4Y2RkZDQ4NzNjNjE1ZWQ3MDE5NGI2MzUwZiBsZWdhY3ktdHJ1bmsKKzE4ODY2IDkyNTFjZjcwZWQxZjhiNWVkNWIzYzAyYmNlMTcyMGQ5ZmUwZTU4NDIgbGVnYWN5LXRydW5rCisxODg2NyBjZWQ4MDQxZWI0ZWE3ZGE5NTU0NmJkNzQxMzk3MzZjMzRiZDg1ZmYwIGxlZ2FjeS10cnVuaworMTg4NjggNTE4MTFkNzhhOWRhYTY0ZmU1OWEzZmE1YTQ2YjZjMGYyNzc1ZTY2ZCBsZWdhY3ktdHJ1bmsKKzE4ODY5IDMyMzUyZTEyMGMzNzk0ODJjMTg4MTJkOWFmMjY0NTYxMDUxYmIxOTggbGVnYWN5LXRydW5rCisxODg3MCA0Yzg1NmExODA0NTg3YjA1MTc3MDU0OWI4ZjRkZWMwNDY1N2I4OTk1IGxlZ2FjeS10cnVuaworMTg4NzEgMmRmNDU3NGQ5MGZlNmQ4ODg0MGNlN2I4Y2I0MDY4ZTcwZmQzNWUzOCBsZWdhY3ktdHJ1bmsKKzE4ODcyIDMzZjVlZTZhMGViZTc0OWZmNDVkZjJlYmY4MDY5NDU2MjI2OTY4NzkgbGVnYWN5LXRydW5rCisxODg3MyBkOTBlZWFiNWY5YTQxOGVkZjgzMTMyODE0MTlmNzVhYzYzYWY3OTA2IGxlZ2FjeS10cnVuaworMTg4NzQgOGU0ZGZiNjgxNjg5YmEwYzNmNmVlNGQ5NzkxMzMxZjFhNTU5ZmFhMCBsZWdhY3ktdHJ1bmsKKzE4ODc1IDliYzc1NDQxM2E4YzJkYTNkYmQzMDVhY2I3ZmM0NWEwN2MyMTA0YmMgbGVnYWN5LXRydW5rCisxODg3NiA3NTRlY2QyMWZiZWY2NWUyZWUxNTQ5NjU3NWM0MmI5YWFhZWMyMWVjIGxlZ2FjeS10cnVuaworMTg4NzcgYzgzMmVmNzI0OTlkYjNiZDU1MjgxZGRiNjgxYzM0YWRjMTE0NmNhNiBsZWdhY3ktdHJ1bmsKKzE4ODc4IDhjYTZkOGNhZmNkMzc2NzRmMGMyZjE4ZjZhMWQ2NGQ3MGNmZDE4OWIgbGVnYWN5LXRydW5rCisxODg3OSA3MjM0ZDdjM2MyOWY5NzVjOTQwNDAzODI3YWUyMzhjODQwNzJhNDlmIGxlZ2FjeS10cnVuaworMTg4ODAgMjFlN2ExOGRlYmU2ODFiNTQ1M2ZiZGIwNjY2NTcxZTBlMjRjNzZlNiBsZWdhY3ktdHJ1bmsKKzE4ODgxIDQ2Zjc3MmM2YTIwMDNjZTkyMTJkN2JkNjUzMmIzYTI5ZDE4OTIyZmQgbGVnYWN5LXRydW5rCisxODg4MiA3YzEzYmM3YzQ4NWZhN2UxYTQ2ZjdlMzBjNjk3ZWM3MTY1NDAzNjgyIGxlZ2FjeS10cnVuaworMTg4ODMgY2ZhYzIyNDVhMmM3MmUxMWYwMDlhMzQzMTc2ZWEzODFiYWM2OTdjZCBsZWdhY3ktdHJ1bmsKKzE4ODg0IGQ3ZjUzZjEyZGJlZTFmZjkxZjdkZjc2YWNjY2YzZmU5NmY2YThjYWYgbGVnYWN5LXRydW5rCisxODg4NSBjZTBlNDFjZTc4N2ZmZjkzZDUwZTY1MzVlMGVmNGJiMTBhOTE4NzljIGxlZ2FjeS10cnVuaworMTg4ODYgMGY4MTI3MzY2YTNmN2JlMjcxNzQ1ZTUwNzI0ZmQ2ZWJhOWRkMTU4MSBsZWdhY3ktdHJ1bmsKKzE4ODg3IDVkYzE3NzNjN2Y3Yzk3ZTA3ZTgyODNmN2Q5NTIzZjJjNjYyZWU2YzggbGVnYWN5LXRydW5rCisxODg4OCA4NjUyNjYwMTFkZmE5MmEyYjFhMDBjMWVhOTYzNDM2NTRlMmYyNWFlIGxlZ2FjeS10cnVuaworMTg4ODkgNTk4OGY3NjQ4MGQ2ZDlmYTg3NDBhYWYxZDEwZGY2YjlhNjk0MDM2OCBsZWdhY3ktdHJ1bmsKKzE4ODkwIDgzZDMzZjdlOWZkNDU3NDc4OGViNzZhOTc3OGZmNTliZDFjOGRhMDIgbGVnYWN5LXRydW5rCisxODg5MSA1NWQ4OWE4ZmU5NjNmZWIxN2IxMWMzNWUzOTAxMDlkZjAzZTllYTE3IGxlZ2FjeS10cnVuaworMTg4OTIgOGJhODkwOWZiODIzMDRlY2M5N2U5NmNkN2QyZmQyN2I5MTc4MGE5ZCBsZWdhY3ktdHJ1bmsKKzE4ODkzIDFiZjVkOGI0Y2ViZTg4ZWQwOTJmMTQ5NzlkZGUyYTM5NTI0MzYwYTAgbGVnYWN5LXRydW5rCisxODg5NCA1YmE0NTkxNmFmYzdmMDc1YjJlOGEzMWFiZDBjNTMyY2ZjN2Q4ZDQ2IGxlZ2FjeS10cnVuaworMTg4OTUgNzYxNTUxMTIxODdlMGFkZGIxNWYzNWZmMDFhNzkxMjliMjc1MTBhZCBsZWdhY3ktdHJ1bmsKKzE4ODk2IDE5ZWVlMmRiMmIxNmNiNTg0OTk0M2NiMmUxNmQzZDgxZjI3OTY3ODcgbGVnYWN5LXRydW5rCisxODg5NyAxMTQ0YWZiOTQwMTljZGEwOWZhOTI1YjU0Yzk5OTI3MmE5MmY3ZTY1IGxlZ2FjeS10cnVuaworMTg4OTggNzNjNDFiNDlhOWI4MGVmZWQ0OGNkMWUyZDg4NGU5MWNlNjBlMzM5YyBsZWdhY3ktdHJ1bmsKKzE4ODk5IGJhMjk1ZTJjNzNlYTYwOGJkZTFkOGU1N2QyYzlkNTBkZGEyOGQ1ZTkgbGVnYWN5LXRydW5rCisxODkwMCBiNjg2M2JhODg5ODk2MmQ1OWM5ZDg2YmM2ZTlhZGYyN2ViOWFjNGIxIGxlZ2FjeS10cnVuaworMTg5MDEgNGE2NjU4ZTE4ZjM2ZjEwMGM2OTRjMWU3ZGU3ZmE2ODg5OWVlYzIyNiBsZWdhY3ktdHJ1bmsKKzE4OTAyIDYzYTBhNmQxOGE2MDQyNTY4NDhiNTU4ZGJhNWM1MzRjYTMwYzM0NGEgbGVnYWN5LXRydW5rCisxODkwMyAzMGUzMWMyYWI2MGZhNTliYjgzMGIwZGQ3ZjQ4NzcyMjJiZDc3ODZmIGxlZ2FjeS10cnVuaworMTg5MDQgNzhiZDk3ZDg0MTNjY2Y3YmY3YjQ0M2YxNWU2MGQ0MzMzMzk4MjUxMiBsZWdhY3ktdHJ1bmsKKzE4OTA1IDhiYWMwNjU5MzkzZWJkZmZkZTQ3NjZiODUzNzhlM2FmNDUzYmY3MTggbGVnYWN5LXRydW5rCisxODkwNiAzNWRmZjQ3MTJjOGU2MjVhNmRkMTY0OTM0NGY3MDllMjZlZTg0YTJmIGxlZ2FjeS10cnVuaworMTg5MDcgM2E1NmY2NTA5OWFhNzhkZGM4NDJlYjBkMjNmZDdkOTMwYzUwZDliMiBsZWdhY3ktdHJ1bmsKKzE4OTA4IDc5MzdiY2JiZGQyNGEwOGQ4ZmE2NDdlYjI0NjMzMGRmZWUyMjBiMmUgbGVnYWN5LXRydW5rCisxODkwOSBlNTBjZmE1NDc1ZjM0MjA3Y2UxOTFmNzFhN2RlYTFkMDY1ZjUzNmMwIGxlZ2FjeS10cnVuaworMTg5MTAgNzBiYjExMTkwNDRhY2VlZWIzMDdkNTllNWJlMTIxNzNlMzljOTRjYiBsZWdhY3ktdHJ1bmsKKzE4OTExIGJiODA1Y2NlYjQwMzAwYTg0MDNlNTczMmIzNzMzYWQyYjg0ZWIyMWQgbGVnYWN5LXRydW5rCisxODkxMiBlNjJkNWFmZjBjM2FmMWQyNDQ2NTM4ZDhlOTE5ZWI2YjU1Njc0MjQyIGxlZ2FjeS10cnVuaworMTg5MTMgNDc5OGRjNzM5YzE5YTM5ZjY0MTFiYzlmYzdlMWNlNmI4MDBkMmJmNiBsZWdhY3ktdHJ1bmsKKzE4OTE0IDc1YTIxYzIzMGEyNjgxOWYxZTc3NzhhZDhlM2YxMjk4OWY3ZWM4MDggbGVnYWN5LXRydW5rCisxODkxNSBhY2EwNWQ3NWQyMzJmMTAwZDk2ODAyYTJhZDFiMmRhNGQ5YjdmN2VjIGxlZ2FjeS10cnVuaworMTg5MTYgNGNjOWExZWJlYTYyOGVkMTg0NmQyNDc5OTg5MGIxMzhiZGI2ZTgyOCBsZWdhY3ktdHJ1bmsKKzE4OTE3IDY0ZmFiMDA0N2ExNDI5MmE3MjBhOTZmYTc1ZTQ0Y2VhODMyMTU3ZGMgbGVnYWN5LXRydW5rCisxODkxOCA4ODNjN2Y2MTU3ODkwOTljNjRlNTdiZmMxNTA1MmQ0NDUwMTFmOTU2IGxlZ2FjeS10cnVuaworMTg5MTkgZTMyNTllNGJlYzYwNjM5MmQ3NDAzNDYwMzZiZGVhMWEwOGQ0OTNkZiBsZWdhY3ktdHJ1bmsKKzE4OTIwIDRjNDBlOWQ3NGM1YWE1ZDIwNDViODA5NTI3MjZhM2FhN2E5NGQyMmYgbGVnYWN5LXRydW5rCisxODkyMSA1NjRiYzI0MmZmMGYwODNlYjJiNmJjNzA1MDY3ZWYzNWEwNzg0ODNkIGxlZ2FjeS10cnVuaworMTg5MjIgNTk2ZWRmODEyOWEwNzgwZDU2ODZiNDM0MGJlNWNiODkxYTBlNjY2OSBsZWdhY3ktdHJ1bmsKKzE4OTIzIDZiNjQ3YTVkNWI3ZTM5MWVlOTJiMTdjZjAzZWIzMTFhOWJkNGZiOTkgbGVnYWN5LXRydW5rCisxODkyNCBhZmM2ZjExMzdlYTQ3YzkyNDI3MDY0N2RiNjgyNDIzODU2NTZhZTk0IGxlZ2FjeS10cnVuaworMTg5MjUgODEyODVmNTQ1ZDU0Njk2OGFhMWUzM2M5MjA3OWQyZTVkZTIyNjIwYyBsZWdhY3ktdHJ1bmsKKzE4OTI2IGE5N2FhOTIzODc3MTEzYzE2NTYxZDU4NjcyMDRiMmM0MTVlZjUwNmMgbGVnYWN5LXRydW5rCisxODkyNyBjMjlkYTJjMTQ0MTdkOGUwNjllZTNlNTU3NzU2Y2FlMDc2MGFhOGZkIGxlZ2FjeS10cnVuaworMTg5MjggZDliNjlkNzgwYTE2MGIwNTJjNWJhYzhiM2FkM2RlNGQzMmU3OWJmZSBsZWdhY3ktdHJ1bmsKKzE4OTI5IGZlMzZhYjRiM2U5NzMyNTQzYWQyNmZjZjE4MTlmZjQyNTViMDVhNWUgbGVnYWN5LXRydW5rCisxODkzMCA0ZGI2NjQzODk0MTUyMDJkYjlhOTFhZTFiZGJmNmRkNzAwM2Q5NWEwIGxlZ2FjeS10cnVuaworMTg5MzEgNjhhODAzYjRkNjE4MmFiNGM3MmE1ZTBhMmZkMTBjNTY1MTc1NjJiMSBsZWdhY3ktdHJ1bmsKKzE4OTMyIGI1MzQ1ZTk5NTk2YmVhOTg0NGI3MDU3ZTI1MTBkMTM1NTgzZjNiYTggbGVnYWN5LXRydW5rCisxODkzMyBhZjdkNzkxNGZiZjk5YmNiMjQzY2FjMTdkZjIxYmMyZDkyMzM5YWNhIGxlZ2FjeS10cnVuaworMTg5MzQgYmFlODg5ZjQ0Y2QxZmRkZDIyNTE4NmRlOTJiYjlmMTFlYTk0ZTc2NCBsZWdhY3ktdHJ1bmsKKzE4OTM1IDcxM2VkNmM2YmNiNTM0ZmQzZjBlNTQwOGEzZmQ4MThjYzMyNzMzNWQgbGVnYWN5LXRydW5rCisxODkzNiA3ZTU1ZmE5M2Y0ZGJjMjg3OTBlNGFjMDMwZDY2OWM0YjRmYmEwMzdmIGxlZ2FjeS10cnVuaworMTg5MzcgNTBiYmU4MTFiMzQ0YzkwNjUyNWZjNGFmZDBjMTA5MjZhYTk1NzhkOCBsZWdhY3ktdHJ1bmsKKzE4OTM4IGVhYmQwMDhiMzZlZTdmZWNhN2UyYmU4NjQ4NmZkZjNhOWVjMTYxNzYgbGVnYWN5LXRydW5rCisxODkzOSAyZDNlNjAxNzlkN2FmZWFkNzE2MGU0Y2MwMzcwYmU2NWQ5OGIzODRiIGxlZ2FjeS10cnVuaworMTg5NDAgOTFhNjNkZjdlZWU0MThkMTg3MTZiODUxZDVjYzUxOThiMTQ0NjllNSBsZWdhY3ktdHJ1bmsKKzE4OTQxIGM0MzU1OTA1YjA0NGRlMTBkNTI5OGM4OTViOGZjNGU2NGNiNzcxY2IgbGVnYWN5LXRydW5rCisxODk0MiA5M2Y4MzY0MzJjMmJkMmEwMjhkMTIzYTU5ZDU2OGEzMzk5YWQzNWMwIGxlZ2FjeS10cnVuaworMTg5NDMgMWI2ZTQ1N2QwM2FiNmNiNWUzMjgzZWYyNjRhODA4Nzk1MDlmMzcyMSBsZWdhY3ktdHJ1bmsKKzE4OTQ0IGUyYjJiMDQzYWI0ZWY5NzU1MTE3YmFkNTI5NmNjMGE4ZjZmZjU5YWUgbGVnYWN5LXRydW5rCisxODk0NSBhYmZiMTFmOGUwNTFhMDEzYzM4MjJiYjljNDVmNGYzNmU1YzJkMmIyIGxlZ2FjeS10cnVuaworMTg5NDYgNGMzMDdhMTJkY2I5NzZhNDcxNjY2YTY1MzE1OGU3NzgwZmUyY2Q0OCBsZWdhY3ktdHJ1bmsKKzE4OTQ3IGQ1NmI0OTI2NTMxMGZlYTRkYTY1NTEwNzI0MGJjMDc5NTc4Y2RjNzIgbGVnYWN5LXRydW5rCisxODk0OCA0ODFjM2Q1MGE0ZTU1NTdjNWI1YzcxNWNlYTQ4ZjY4NTVlMjdlODIyIGxlZ2FjeS10cnVuaworMTg5NDkgMjYzMDM1YmVhM2FmMjEwZTI0NDg5ODljNzQyMzA0NGIwZjI5OTQ5YSBsZWdhY3ktdHJ1bmsKKzE4OTUwIGRiYTgzODA5YTc3NTA3NzEzMDIzNDE3ZTI0YTFmZTU2YzEzOTNlMjYgbGVnYWN5LXRydW5rCisxODk1MSA2ZTE0M2FmODQ5MjdhODZhMTU4YjVkMzE0NTE0MGYyOTA4ZGVmYWUzIGxlZ2FjeS10cnVuaworMTg5NTIgOGFjNDBkNDhhNTgxNGJmOTcxYmFmZTAxMTEwMDMzMDNiZjVmNDMzZCBsZWdhY3ktdHJ1bmsKKzE4OTUzIDQ1YzA2NTY2OGVhNWM4Zjk5YzEyODFiNzZkZmE0ZWM3YzU1ODgxNDcgbGVnYWN5LXRydW5rCisxODk1NCBmM2Y2Yjc1OThiYzVhMDUyMzYyNDY3ZjkxM2MyM2ExNDZmYjhjYjY3IGxlZ2FjeS10cnVuaworMTg5NTUgMGMxYWNjMTU0NTVmMGI0YjBlMjkzY2UxMGRlZTgwMzllN2NhYzg2NyBsZWdhY3ktdHJ1bmsKKzE4OTU2IGNhNDZkMzQ1NDI2OWU2OWQ3YWFhNWE5MzBlZDVhMWE2YzVmNmVjNDIgbGVnYWN5LXRydW5rCisxODk1NyBhYjAyZjE3NDFhMjhjN2NjMTcwN2NkZTE2MDdhZTA4NjkyMjQwYzg2IGxlZ2FjeS10cnVuaworMTg5NTggZmI2NzEyMmU1YzFlZGJhZTdiNTExZjczNmYwOTYyNjJiM2NkOWIwZiBsZWdhY3ktdHJ1bmsKKzE4OTU5IGUzNTM2YWE3YWU0YWM0YTRhMWE1ZTFhMzZjYzYwZTgwYWRhZWM2ZGUgbGVnYWN5LXRydW5rCisxODk2MCBmYjc2N2E0NDk2MWU3MTkyNTk3OWEzYTNmYjI4OTY5ZWY5ZjM5MzFjIGxlZ2FjeS10cnVuaworMTg5NjEgOTY3YWJiZWNjNDA0MWEyMmUxMTMyNjQyM2Q5MWRjMTY3OGY0ZTdhYSBsZWdhY3ktdHJ1bmsKKzE4OTYyIGFlMjk2MjI5ZjQyNjk1N2U2OGI1ZDQ0Yzk4NDE5MTRjMGIwOGJjZTYgbGVnYWN5LXRydW5rCisxODk2MyAzZmNkN2Y0NjVmMzQ5ZmNiOGY2MzI1YmYwYWRhODBlMWZmMDljM2JkIGxlZ2FjeS10cnVuaworMTg5NjQgN2NiOTQwYzE1NjQ1MWVlM2U1MGUyNjVhNmVlMWUyMGE5MDc1YzdiMyBsZWdhY3ktdHJ1bmsKKzE4OTY1IGUwNDE4YjFmNWNiN2NiMTcwZDIyNTlmN2ZhNTgwN2U3M2M0NDcxZDcgbGVnYWN5LXRydW5rCisxODk2NiBiYWU5YWJhZGVlMjJhNDg4MzgwN2RiNmExZjZkY2E4MjNiNGEyNTRkIGxlZ2FjeS10cnVuaworMTg5NjcgZDY5NTcxYmY3ODQyNjdiZGVkNzQ0Zjg3ZTRiODZlYzAzMmY1MmJlYiBsZWdhY3ktdHJ1bmsKKzE4OTY4IDI4YzQxNGRjYjNlMThlNTQzZjAwMDkxNjQ4MmRhOTQ2N2IwMTU1ZTUgbGVnYWN5LXRydW5rCisxODk2OSBkYzFjNTc3MTRiM2RkNGYyNDNmNjBjZmZkMTQ1MmE3MGFmNTNiMjRjIGxlZ2FjeS10cnVuaworMTg5NzAgMjhkOGNjYmUyMzdmNjgzZDIxNTE5NjgxYTNkNTAxY2QyOTJhYmU4NyBsZWdhY3ktdHJ1bmsKKzE4OTcxIDRkNDUxYzkyYmM1MGIyZDY0NDVhOWY2MThlY2MxYWQwYmI5NjVjOTEgbGVnYWN5LXRydW5rCisxODk3MiAxNDBkNDVhYTA5ZGMwOWQ2MDFlNzk0Y2M2Mjk1MDE1ODlmMGM1ZjhjIGxlZ2FjeS10cnVuaworMTg5NzMgZTA4MjRiMzU0NGZiZWU4MWIyNjM3NzFkY2ZiYmNlNDA1OWViMjE0YSBsZWdhY3ktdHJ1bmsKKzE4OTc0IGEwNTlkMTM2MDVhMGUxNzk5YTJjNDA5MDI3YWQ3OWY4MTJhMWE4MzEgbGVnYWN5LXRydW5rCisxODk3NSA3MDY2NmIyN2MxYjFhY2RkNzEyZjNmYWFlNzFhNWRiMDhjN2VhNTU4IGxlZ2FjeS10cnVuaworMTg5NzYgNDRmZDFhN2NiMjc5MzlhZjFkZWE0ZjQ4NDdiMTg3MGVmOTJmZTNiMCBsZWdhY3ktdHJ1bmsKKzE4OTc3IDNlMTM1MjRlZDg2Y2MwZWMzNGZhNTE5ZDdjNDA2YjlhNjlmOTM0MzggbGVnYWN5LXRydW5rCisxODk3OCA2MGZhYzYyZjZjMTVlYTA2MDA4NmNlNGFlYjM3NThiMzJhMGRjZTVmIGxlZ2FjeS10cnVuaworMTg5NzkgOGUwMTJhZTlhMDQyMzI3YTdkNTFmOTlhODBlZTVkYTA1M2EwYTYxZCBsZWdhY3ktdHJ1bmsKKzE4OTgwIDY0NTQ1Yzk4NmI5OGIyNmYwZDQyMjhlMDgzMjYxNmU2ZDZmNzg5ODYgbGVnYWN5LXRydW5rCisxODk4MSA5MmIyMTRiYjQyODg0ODU4NDE2ZDVkOTBkZGNjZjYzOGY1MTRlY2I1IGxlZ2FjeS10cnVuaworMTg5ODIgZTA1MjNhNDJjNzhjYWU5MmVhYWU4NjcwMTUzNTEwOGI1NWEwODdjZCBsZWdhY3ktdHJ1bmsKKzE4OTgzIGY2ZDhhMTM5MjlkNzI3MDUyNDQ1MTYzMmZmNzY5YjYwNjc5Y2M0YjkgbGVnYWN5LXRydW5rCisxODk4NCAyMzljNzM3MmMzZDM3ZjhjZTRiNjQ5MWI0Yzk2NTkxMmE1ZDJlNjYzIGxlZ2FjeS10cnVuaworMTg5ODUgZjk5N2RlZDRlMjE5ZjMwYWRiMGI4OTQ0YmE2YjMwYTUyZjc0ZDJhNCBsZWdhY3ktdHJ1bmsKKzE4OTg2IDQ1NDBlNDE4YjgzYWI0ZjEwODUxNjNhZTFjMDE2MzliODk0ZGZkZWMgbGVnYWN5LXRydW5rCisxODk4NyA1NDhlN2E1NDI5MTg1ZmYwYWVkZGFkY2ZiZjNkNTc0MDJjM2RhZGUwIGxlZ2FjeS10cnVuaworMTg5ODggZmJmMDdlMWYzY2EwNzFkOTI3MGU3MTJiNDMyZjdkMmUwMjFlNzhjZSBsZWdhY3ktdHJ1bmsKKzE4OTg5IDZmMWZkODUwMDM5OGNhOTFkOWZkOTZkNWE5OTk4NmIwMzEzNGU5YzEgbGVnYWN5LXRydW5rCisxODk5MCBkMDg2NDkwMmM4YzdkODk5NGZlZjRlOTUxMDFkMDQzYTJkNDIzOTliIGxlZ2FjeS10cnVuaworMTg5OTEgNTYzNjhkMzUwOGRlNTYwMjQ0NDkwZjg4NTU4MTU3MDNkZTIyMjU4ZCBsZWdhY3ktdHJ1bmsKKzE4OTkyIGE5ZTNhNTI4MTVlMmJiM2UwZWJlN2JmNWNhMTg2YTU2OTUyNWZkODggbGVnYWN5LXRydW5rCisxODk5MyBhYTAzYzIwZTg5YjdhZWY5MmQ4NWIzYjYxZmQ2Y2NmNGRkMWJlYjlmIGxlZ2FjeS10cnVuaworMTg5OTQgOGY2NTUyYzcwMzBkMDU0ZmEwZWFjOGRkYjI0NTZhOTVkNTE4NjJlMSBsZWdhY3ktdHJ1bmsKKzE4OTk1IGQ0ODAxOGIzM2UzNTdmNDlmZGFiYTAwNjFiOWMzYjI3NDM1YjQ0ZWUgbGVnYWN5LXRydW5rCisxODk5NiBhMDZiNzNhZDM3MWVhNzc2MGY1YzQzM2MzNzJlZTM0OTU0NWMyNDBkIGxlZ2FjeS10cnVuaworMTg5OTcgNTEzZTU5YjNiOWE5MGI0MjUwZjZmZjI4Y2Y0ZjNhZTY3OTcyNDMzZSBsZWdhY3ktdHJ1bmsKKzE4OTk4IGZhOWVmMGUyZGMwN2RhZGUzZTc1YTJlNzNhM2YwZDAwMDMwNzJmZjggbGVnYWN5LXRydW5rCisxODk5OSA4ODNjYjBlMzFiYjJiM2Y1M2EyZGE4MjU5NzU1ZjMyNjgwYmRjMWJiIGxlZ2FjeS10cnVuaworMTkwMDAgNDliN2MxYmM2MDA0MjkzYmUyMmU0YTBhMGNiMjg3OTg5N2ZmNGJhMyBsZWdhY3ktdHJ1bmsKKzE5MDAxIGQ5NmNlOTcwOGMwMDdjN2RkMjhmMGZlZDk1ZmM0MzIzZjQzMjYxYzcgbGVnYWN5LXRydW5rCisxOTAwMiAzOGRjZWMwNjYxN2JkZmExZjUyYjhhYjAyOGFiYWY3NDA1YmRlMTU5IGxlZ2FjeS10cnVuaworMTkwMDMgMDU4YmQxYmZmMDA4MGU1OWIwMmM1MWE1MGUwNzFlOTdjYTc2ZDU4ZSBsZWdhY3ktdHJ1bmsKKzE5MDA0IDQ5Zjk0YTJiMWRkNDBjZjkxNDg4NDAzOTFkZGRhYWMxMTBjZTQwNzQgbGVnYWN5LXRydW5rCisxOTAwNSA2YWE5NzJkZjgwZDU3NjJjZjI0N2EwMDIzZGZjMzgzZTYxYzVmMjAzIGxlZ2FjeS10cnVuaworMTkwMDYgZDEyYmRlNGIyYWU5MmNkMWVmZGQ5YzcxMzM4YzBkZjE4ZjhjYjllZiBsZWdhY3ktdHJ1bmsKKzE5MDA3IDI2ZTgzMWJiMGQ2ZWM2ODhjNTBhOWQ0NGQyNDE3YTBhYjU2OTQ2YTYgbGVnYWN5LXRydW5rCisxOTAwOCBjZDlkZGRkODk3YTk1NTNlMmY4NmIyMmU5MDVkMzdiMzJiM2VjOWI3IGxlZ2FjeS10cnVuaworMTkwMDkgZmJmOGFiZWM5M2QxOWZjMDM0N2FlN2NkYTAzZTJkMWEyMWEwMjVjZSBsZWdhY3ktdHJ1bmsKKzE5MDA5IGI2MDgzMWVlYWI1YTA2ZGQzYzVlODI5N2E5OWUzOTI5N2FhODc5NGIgbGVnYWN5LXRydW5rCisxOTAxMSA3ZDc2NWMxZDQ5ZTJmMzE1N2E2ZjE4OWNjNTc4NGQzNjU1OTg1ZDkwIGxlZ2FjeS10cnVuaworMTkwMTIgY2EwNTU2MDZiM2ExMWMxNzViMzRmOWU2ZjgzMzg4ZjY4MTg4Mzk5MCBsZWdhY3ktdHJ1bmsKKzE5MDEzIDQ5NTFmNWM0ODEwNWJiZGRmNzI4MzRlZWUwYzdiZWM3M2FhYTJlNmQgbGVnYWN5LXRydW5rCisxOTAxNCA4NWUzNWU2OGUzZGIwNTc4OTZlNDZkZDBiMmVlNWJmZTI4OGU1ZWFhIGxlZ2FjeS10cnVuaworMTkwMTUgZGY3YmZiMzRiMmEyZThkZDY4OGYxMzFjMTEwYzBiNTg2M2M0MGUzZCBsZWdhY3ktdHJ1bmsKKzE5MDE2IDNlZTU1ODYzNDE2NGRhZjQ5OWY3NzY1NzAzNWFkODRkNGU2MWZmODIgbGVnYWN5LXRydW5rCisxOTAxNyBiMmM4Nzk1YTM0NDg5ZWIyMmY2NjhjZGE2ZWY2ODM3N2Y5M2NhNDNiIGxlZ2FjeS10cnVuaworMTkwMTggODNjMWYxNDY4MmEyNTYxYWQ3YzRmNWU3MmI3ZGZiNmM2ZDU1N2IwZiBsZWdhY3ktdHJ1bmsKKzE5MDE5IDYyYmY3Mzk5OGNkYjIxYjQ5NGMzNmUxMjg5ZWRkNjBmZDk0ODU0MWMgbGVnYWN5LXRydW5rCisxOTAyMCA2Mzk2Y2M2YjFmN2ExMjdlZDIxN2E5MTMzYmY4NDRiYTk1ZWNkMmQzIGxlZ2FjeS10cnVuaworMTkwMjEgNjgwZDZhNTBjMmU4NDRmMTE4OGE4Y2ZhYzYxY2VkMTdiYzVmZjhkYSBsZWdhY3ktdHJ1bmsKKzE5MDIyIDQ2OTIwYjYwY2QzMzQzZjI2MzM1NTQ5NDRhNzc4OGQ0MGZiMTNjNWMgbGVnYWN5LXRydW5rCisxOTAyMyBjMGRlNzEwZjMxYzAzZjgwMTk0NTVlMWRjYTM0MzI4MzhkYzc5MTBjIGxlZ2FjeS10cnVuaworMTkwMjQgZmQyNzgwMzFmNDQ5Y2I4NTE3NDRmZGJjNDQ3NTY1MDc1MmQwMmU2YyBsZWdhY3ktdHJ1bmsKKzE5MDI1IDVmNDBmZGJkZDAyYzQxOGQxYWUzZTFjMmJkOGFlMjRkMGFhMGQ3ZTIgbGVnYWN5LXRydW5rCisxOTAyNiAyMjA4YTAzZDA1YTNhZGQxZjMyYzU5NjBhMTAzMmQ3MDYzMDg5MWI2IGxlZ2FjeS10cnVuaworMTkwMjcgMGE3MjA3MGVhYjZlYmE2MzBjNDg4ZGM3NDZmMzg1OWMzMTQwYjI4MiBsZWdhY3ktdHJ1bmsKKzE5MDI4IDEwNjQ2ZDA5MmE1MmZiMmQzNjMzZmZlMmRkMGIxODJmNWI0Njc5YzMgbGVnYWN5LXRydW5rCisxOTAyOSA3MWNlYWJhM2Y2MTUxYjQ0ZjllN2NiODA4YjA0NjY3Y2YyZDM2MjEzIGxlZ2FjeS10cnVuaworMTkwMzAgYTBlNTIwMzhjYzRlMWM4MTNjNjRlODQyNzQ3YzMwYzZiMWI2MWNlNiBsZWdhY3ktdHJ1bmsKKzE5MDMxIDc4Y2RkYmE0NTgwNTMyZmFhNzdiYjU1NmEzNTMyNWM3ZjQ1ZGY5ZWEgbGVnYWN5LXRydW5rCisxOTAzMiAyYzdkZjQ1NDk2YTYyNzZlNDYzOWJkMjQyMTcyMDNhMjJjMjE0ZjI1IGxlZ2FjeS10cnVuaworMTkwMzMgN2FlNmEwOWQ0ZDAyZGVkZDVlYzlmNjE1ODkzMGQ2YjUzY2EwNzg4MCBsZWdhY3ktdHJ1bmsKKzE5MDM0IDcyNWIxYmFmM2RhYjkxYzJiNDMxZTUzYjlkNTk3ZGUwM2RlOTEyMWUgbGVnYWN5LXRydW5rCisxOTAzNSBmNzViODY0ODk5ZmIxNTMxNWQ4MTA4ZTg0Zjg2MzY3YWJkNjU5ZDUwIGxlZ2FjeS10cnVuaworMTkwMzYgMzBjNGM0ZTllM2Q1Njc3ZjQ0ODAyOWQ2NTFiOTI0ZmI5Y2UwOWFiMSBsZWdhY3ktdHJ1bmsKKzE5MDM3IDQzODQyOGQxYmYyNzBlNjk3MGYyYjRhZTU2MWU0OGU2OWRiNGM1NmQgbGVnYWN5LXRydW5rCisxOTAzOCAyZGNiYzFkZmNhOWM1NGRlNjMwNzE4NjQ2ZDdjZTM3NjhlOWE2YjVkIGxlZ2FjeS10cnVuaworMTkwMzkgMjc3NDk4MTgzMDMwNzQ4YTBkNjE5NTJmZGY5NDZmMTU1NDdmNWM5NiBsZWdhY3ktdHJ1bmsKKzE5MDQwIGQwZThlMTk1OWMwYmU0MmYxMjBiOWQzODg0MTAzM2Q5ZGJmZDNmNjQgbGVnYWN5LXRydW5rCisxOTA0MSAzYTBlYjQ1YjJiNWUwMjZkZmQzNTE3NTM2NDQ1MzQ1NTk2MzY0YTY3IGxlZ2FjeS10cnVuaworMTkwNDIgNmY5MjkyMGMxMTUwMDlkZjQ1YTAyMzg4MmY2MzFiN2Y0MDIxODE5NyBsZWdhY3ktdHJ1bmsKKzE5MDQzIGE1NGMyODJiZmI2M2RhMmI3YTc4ZTVlNmM5ZmI0ZjFmYWM1MzI0MDQgbGVnYWN5LXRydW5rCisxOTA0NCBiODgyZjRjODU2NjY4YWYzMzI3NDg3NDI1OGU0ZmM0OTQyNzgzNGEzIGxlZ2FjeS10cnVuaworMTkwNDUgYTEzMGQ1ZjdlNThhZWIyMTk2NGRjZTY0YTQ3ZDljNGRlYTJmYjFjMCBsZWdhY3ktdHJ1bmsKKzE5MDQ2IGUyNmY4ZDZjZjI4OGVmMzZlMmJiNDc0ZWVjYTJmZmZlZjM2NWJkMzMgbGVnYWN5LXRydW5rCisxOTA0NyAxMTVmZGM2MWFlOTE0YjgyYTljOGZiMTM0MzhkMDgxMmYyN2QxNjI0IGxlZ2FjeS10cnVuaworMTkwNDggMDFlOGE2ZDhkYThiYjY1ZWZlZjUxNTE1OTkxMTExN2VkNWQwOTJjOSBsZWdhY3ktdHJ1bmsKKzE5MDQ5IGQ3MjE4YWM5OWMwOWFiMmNlZTZkYTc0ZWIwMTdiYmVhMmRmY2JmNWEgbGVnYWN5LXRydW5rCisxOTA1MCA0OTllMjI5ZTZjZWRhODkyZWY1NzIwMzVlYTU5Y2Q2NmE0ZGExZmJjIGxlZ2FjeS10cnVuaworMTkwNTEgOTkxYTE3ZDYxMDM2Mjc2OWNhNDI1YmNiNDdmZWJiNjVlNGYyOTBhMCBsZWdhY3ktdHJ1bmsKKzE5MDUyIGMxMmQ4NjIzYjI5NDkwZTEyMGI5MDBkY2FlNTM0OTQ5MTU2OGVkNzggbGVnYWN5LXRydW5rCisxOTA1MyBjMDJhZTdhZTAxMWQ2MjgyYWIyMTkzY2EzOGRlN2RmOTNhOWE5ZmUyIGxlZ2FjeS10cnVuaworMTkwNTQgNGZlNjlhOWY4YjMwNzZiOWVmMTcxZjk0ZjE5ZjIzMDViNTM1MGJiNiBsZWdhY3ktdHJ1bmsKKzE5MDU1IDFmZjRmODkwMWQ5NjA2MDk1NWQyN2I2OWUxZjU3ZDE3NzhlMjIzNzAgbGVnYWN5LXRydW5rCisxOTA1NiBmNGFjMDYwYTg0MWIzOTljMDcxNmQ3NmU3ZjQ3ZDhkOTA2NjNhNjMyIGxlZ2FjeS10cnVuaworMTkwNTcgMWFhODM0OWY2Njk1NTgwNmIwMDVkMDQ3YmFlZWMwNjQ1MDg5MjcwYSBsZWdhY3ktdHJ1bmsKKzE5MDU4IDU3MTI2MjAyOTg4ODJhYzA2OTcxZjA5ZGNjZjliZDE5MGI1OTBkNjUgbGVnYWN5LXRydW5rCisxOTA1OSAxYmI3NjUxNjgzZTc0MTI4NGExNDJjNTczZjU4MWM4ODVlY2ZiOTdmIGxlZ2FjeS10cnVuaworMTkwNjAgMzI3NTViNDU2MzY5ZDgyMjY5YjQ3M2ExYTFmNDI4ODBlNWRmYjVlOCBsZWdhY3ktdHJ1bmsKKzE5MDYxIDAxZTVkM2U1ODgzM2FkOWU5OTBkZjg3ZTQzMmY2ZjdiMjBmNjk2NDAgbGVnYWN5LXRydW5rCisxOTA2MiAzNDg0NjcwYzM3ZjJlOGRiZjIwNjAxMWMzZDk5ZWZlNGNiYjBjYTk4IGxlZ2FjeS10cnVuaworMTkwNjMgMzg2NzhjYjBiM2NkYjhkZDYyMjA3ZWVlMmRjMzMzODMwZTEzYTNiOCBsZWdhY3ktdHJ1bmsKKzE5MDY0IDM5N2FlNTNmMWE0ODk5MDZlNTYxNTE5NzlmZTM2NGQ2MDA2M2RjNTYgbGVnYWN5LXRydW5rCisxOTA2NSA3NDNkNTIwNzViZTVlZmNiZjA3ODE5MmE2ZWM4ZDI4NTMwMzFhOWQwIGxlZ2FjeS10cnVuaworMTkwNjYgMjNhYjU5OTIxMjJlODE0MDhmZmUyMzQ1MmQ3NWE3ZDc1OWRlMWJiNSBsZWdhY3ktdHJ1bmsKKzE5MDY3IGEzZjU3ZWQ3NTdlNTBhOWI1NDk2NDAyZTRkZDcxMTc4NmIyMzU3YjAgbGVnYWN5LXRydW5rCisxOTA2OCBhNjQ1M2NmYjczM2YxZDdhZjgzNWZmZmQyYTZlYTIzYWY2NjdmNWRiIGxlZ2FjeS10cnVuaworMTkwNjkgNzQzZjE2MzM2ODI3M2IzYjVkNWY0MDI5N2U0NzE5NDEzZjQ3ZDgyNyBsZWdhY3ktdHJ1bmsKKzE5MDcwIDhkNGEyNWM4MWE5Yjk0MzBmYjAyZGE5MGQwZDU4ODNiNWVkZGNkYTggbGVnYWN5LXRydW5rCisxOTA3MSA1NWU4YzAyNmUxZTNmZjIyYzVlNjI0YmUyNTBhZDlmMzI3ZTNkMzgzIGxlZ2FjeS10cnVuaworMTkwNzIgMWU0M2EyNDU2ZThmZTRjY2U1MWQ1MmE0MmIyZmQ0MWM3ZmJhZTMyNiBsZWdhY3ktdHJ1bmsKKzE5MDczIDk4YjY1NDg0YWRlNmE4NGNlODExZGFiYjhiMGQzMTNmNWYxYzg1NTcgbGVnYWN5LXRydW5rCisxOTA3NCAxZGY0MGQ3NzI0Y2NkZTQwNjU3YzM4Yzc0NTE4YTkzNjY0NTUxNWU1IGxlZ2FjeS10cnVuaworMTkwNzUgYzBmNjFkNGY1YTA0ODgxMjM0NjlmYjNjYzMwYzU1OTZmN2E3NTM4MCBsZWdhY3ktdHJ1bmsKKzE5MDc2IDYzNWU5ZGNmZWQyY2M2NTg0ODk1Y2NjNDIxNzA0YjZkYzMzNDM2ZDUgbGVnYWN5LXRydW5rCisxOTA3NyA3Mjg2MGVlOWVhZjA4OTBmZDBlMmI2YmE1OTMwMzUyMzFjMGM5ZTZkIGxlZ2FjeS10cnVuaworMTkwNzggNWFlYTE1ODE1NDNiNDQ4Mjg1MGE1YjIxYWEzODVkNjM4NzZlMDYxNiBsZWdhY3ktdHJ1bmsKKzE5MDc5IDM5NzQ5MWFhMjBhNmViY2E3YzkyODkxYjVlNWRkNzBmMzdkODU4MmMgbGVnYWN5LXRydW5rCisxOTA4MCBhNGU1NGJmZDNjMjlkNjU2OTExZWFhYjhiY2JkZjA5OTI5MDQwZTRlIGxlZ2FjeS10cnVuaworMTkwODEgMjU5Zjc5YTM2ZTJmMzZkMGIyZGUxYjRiZGE4MjUwNjZkNGZlYjFiYyBsZWdhY3ktdHJ1bmsKKzE5MDgyIDE4NWRmYzE0YTkzNDJmYjc2NWJkMTUxYjRhZGM1ZTllOGU2MThlMTIgbGVnYWN5LXRydW5rCisxOTA4MyA1ODg2OTFmODA2ZjRkMDgxYTM0NDE2NzAyMTM4YzFmZDhiZjMwZWUwIGxlZ2FjeS10cnVuaworMTkwODQgYTBlNDZjM2JlNjNlZjJkZjRmNDFkNDU5NzE3ODYwNmFlNDhjNWViNiBsZWdhY3ktdHJ1bmsKKzE5MDg1IDU0NTM0MTQ4ODczZTZmOWMxNzkyY2U2ZWZkZDJkYzJjYTU2NmFhODMgbGVnYWN5LXRydW5rCisxOTA4NiBkMzI5MmVlNWI2ZTI0YTE1YzU0NWUwYjFiOTExMmJlOWI4MmU3MzQ5IGxlZ2FjeS10cnVuaworMTkwODcgZTU2ZGQyZGQ5OTYwNzJhNzk0OTY4OWU0ODdhMzRmYjE1MDUxM2FiMCBsZWdhY3ktdHJ1bmsKKzE5MDg4IGM3YzQwNGIzNWYzM2EwZDU0YzgyZjY3NTg5OWYxOTBjMTNlNTBmZDcgbGVnYWN5LXRydW5rCisxOTA4OSA4YzRkYjhiOWFmOWI5MGU1MzZiZmI1MDBlNDcwZTYyMDYyZTFmOGYwIGxlZ2FjeS10cnVuaworMTkwOTAgYWJiOTQ1MDY2NDM2NzUwODA0NGY5NGZkZWIwMmU0YzQxMGFmMzFiZCBsZWdhY3ktdHJ1bmsKKzE5MDkxIGUzMDI1ODY0NTJhMzA4MzgwY2JhNDllNjA2MDJkODhlMTA3ZTc2NjkgbGVnYWN5LXRydW5rCisxOTA5MiAzOWExNGJjOGEwZjc5MGI4NDhiZWRmZDNjNmQ0ODdiOTlhY2VhNmNkIGxlZ2FjeS10cnVuaworMTkwOTMgM2EyMGRhMjg5M2M0N2Y1OGJkNmRhOWFhMjY1ZGU3ZDQ4NzYyYTlhMiBsZWdhY3ktdHJ1bmsKKzE5MDk0IGRmMmVkNTY2NGJlNTE1MjJlMTJmZGY3ODUzNmQ3ZGFkYzM3YjAzZTYgbGVnYWN5LXRydW5rCisxOTA5NSA5YmY0MzhjOGY1Yzc5MzhhNWY1ZjU1MTdjZDMyOTYwNjBiNTAxYTJiIGxlZ2FjeS10cnVuaworMTkwOTYgNDFlZDRkODZkYjc3NzI1MGM2MmM0MWJhNmUzZDA4NzEyY2VlYzVjZSBsZWdhY3ktdHJ1bmsKKzE5MDk3IDVjNjAxODRmN2Y1MmFiMWQ1MjIzM2VjOWUzOTgzNDkyMGFmYzk3NTcgbGVnYWN5LXRydW5rCisxOTA5OCBlNWQ1OWE5ZGJmYzAyOGNkZWYwZWQyNjdhMjM5YWMyYzAzNTI3YjRmIGxlZ2FjeS10cnVuaworMTkwOTkgM2ZlNzU5MjRlYWMxMGRjYWE5NzM5YTYzMjM0ZWUyYjczYjE5NTNlMyBsZWdhY3ktdHJ1bmsKKzE5MTAwIGI0ZDRmMjAyMTExNDRhOWM4ZTI4MDMxZjQ4ZGZhMmVhNTBjN2QxMTMgbGVnYWN5LXRydW5rCisxOTEwMSAyZmY4MjYzMThlODllZGZiZDBkNzZlYTdjYTU4MjU0ZGExNGM0MzYxIGxlZ2FjeS10cnVuaworMTkxMDIgN2Y2MThiYzEzOTgxMTA5MjJjNTU1NmQ2Y2JkZTNiNTNkMDlkMmZiYyBsZWdhY3ktdHJ1bmsKKzE5MTAzIDA1YmU1Zjg1ZjNiZjYwOGQ2YjlkOTI4NTcxYjVhM2RmZDhlOWYxNWQgbGVnYWN5LXRydW5rCisxOTEwNCAzYzVmMDk0MjJiNjlhOWZkODcyMzBiZTc0ZWU5YzVmNzAyMWM0YmQzIGxlZ2FjeS10cnVuaworMTkxMDUgOWZkOTZlMjQ1NWI2MmM3NzU3ZjFlMGUxN2RkZTVkNDU5NjBjMGZiNSBsZWdhY3ktdHJ1bmsKKzE5MTA2IGZhMjA5Y2M4NGNhY2UzZWM4ZDNjOTg4Mzc5YjdmMTY4NWU0MTc2ODUgbGVnYWN5LXRydW5rCisxOTEwNyAwOTczNmFlYWI4MzExZmYyMzdkYmE1ZWMwMjQ1YTYzYTIyYTcwYTlkIGxlZ2FjeS10cnVuaworMTkxMDggYzQxZGQyMjA0YjljOGUwYjMwM2QxMjIxODBjMTdjZDVkYTA1MjhkOCBsZWdhY3ktdHJ1bmsKKzE5MTA5IGE2OGM3MDMyY2RmMjk5ZjJiM2VmODEzOGRjYTdmYTQ1NTIzZDI5ZjQgbGVnYWN5LXRydW5rCisxOTExMCAxNDBjNTI4NThmNjVlNDA4OGFiMTVmZjU3OTZhZWRkOTdhMzAzZmJlIGxlZ2FjeS10cnVuaworMTkxMTEgZmEyNzFkN2IyYTYyYmNhZmRmOTM2ZjRjMTZjOTY5ZDg1MjNiOTI1NiBsZWdhY3ktdHJ1bmsKKzE5MTEyIGFhYjg3MTYzNWZmYWU0OWI4OTA5ZWY2NjBlZGIyNjRmNjAzMGFlZDggbGVnYWN5LXRydW5rCisxOTExMyBiZDhkMjk4YWY4ODBjMmExZTAyYzE4ZWQ3OTlmMjM0ODZhNTAyZTFmIGxlZ2FjeS10cnVuaworMTkxMTQgM2Y4OWU3MjQwMDg2MDU2ODM5NDEzZTM5ZjA0YTdjOGJiNWNjMjIzMyBsZWdhY3ktdHJ1bmsKKzE5MTE1IDRiNTFkMDY5YmUzNTBlZDlhNTQwNGYwMjQ3NjM5NjlhY2JmMDAyYTYgbGVnYWN5LXRydW5rCisxOTExNiBjMWNmNWQyYzI2Y2FlNzBlMzBjOGMzNWUyODQ2YjFlMWIwMDExOGU0IGxlZ2FjeS10cnVuaworMTkxMTcgZjgwNDUzZTQ0NWI1YTQ0MTU4ZWQ5Njg2MmFkMDJjNWFiZWIxMGRhYiBsZWdhY3ktdHJ1bmsKKzE5MTE4IDA3MDcxODcyZGUzZTExNGIwMTI2YzNlMjdhYjdlNmY3ZTk1MDYyMDAgbGVnYWN5LXRydW5rCisxOTExOSBmZDhjNzIwMzI1MWZmMzdkYmIzOTdmN2Q0MjNhZTQxZjE2YTAzYzY4IGxlZ2FjeS10cnVuaworMTkxMjAgZjQ5NGNhMGEyYjM0NmZmNjhmYWFjY2M2NTA4YmVhMjgwMmRhOWEwOCBsZWdhY3ktdHJ1bmsKKzE5MTIxIDkzODZiMzJiZmYxZGFiNDI0ZDBiNTU0ZjY5ODYxOWJjYjU0M2E4ZmEgbGVnYWN5LXRydW5rCisxOTEyMiAyMGVmODQ5ZWM4NzdjNzJlNTRiNmE0NGJmNThkNDVhZTNhZDQzNTFhIGxlZ2FjeS10cnVuaworMTkxMjMgYmRmYzZmMWZhNDc1Y2U2NzMxM2Q5M2RjMWUzM2FlMmJjZWJhZjUzZCBsZWdhY3ktdHJ1bmsKKzE5MTI0IGE3MDRlYTVlY2ViNmIzZDFhZmMxZmFkY2RjODg1NDQxY2VkZjc4NGEgbGVnYWN5LXRydW5rCisxOTEyNSA3NjNhM2Q0MmJhZWRmMTY3ZDI5MjU5MDc0OGFmM2EwNjcxMmQzMmY2IGxlZ2FjeS10cnVuaworMTkxMjYgZTE4ODg5ZTM5NDljMDY5ZjFjMzQxZTBlNzdjMmI2NDY1M2IxZmNjNSBsZWdhY3ktdHJ1bmsKKzE5MTI3IGQ2MTRiNmU5ZmI0ZWQ5NGUxZjAwYjcxMDkwZTk0MWMxMzljN2FjZTIgbGVnYWN5LXRydW5rCisxOTEyOCA5OWYzNDY3Mzg0MTVhMDZiMzJmYjdhNGJiMTE4OTAxNzljZDE4OTJiIGxlZ2FjeS10cnVuaworMTkxMjkgNjBlZTMzOGYwZDY2NmZkZWZlMDAzNjAyMTUzMTk2NmZjYzYxZjkwZiBsZWdhY3ktdHJ1bmsKKzE5MTMwIGMyY2U5YjJlNWJiNDIzYWFlZWRiMGYxZDk1NDk4OGExOWUxOTdhMGIgbGVnYWN5LXRydW5rCisxOTEzMSA3Nzk1ODI2NmM3ZDdhYWJmZWM1MzlmYmI3MWU0NTQyZjZkNmUwZGVlIGxlZ2FjeS10cnVuaworMTkxMzIgOTAyNTVkNDQxY2Q1ZjYyMWQwODVhNDhlM2JlMTY3MjRmZWUzMjI5YiBsZWdhY3ktdHJ1bmsKKzE5MTMzIDdlZjIzODJmNjEyM2EwNjVmOTA3NjIxMGRhN2MxMjQ1OTNmOWVjZjEgbGVnYWN5LXRydW5rCisxOTEzNCA4MzVlOWRkNTRiZmI4YWM2M2ZlYWUzOTNkOGUxZjRjYmZlMWU4ODQ5IGxlZ2FjeS10cnVuaworMTkxMzUgYzg1Y2E4YzYyMTI5Y2M4MTE0YzUzYTcwNDFmM2FjYjFiYTZlNDk3NyBsZWdhY3ktdHJ1bmsKKzE5MTM2IDJhZWIzYTM0YzdhY2RiMzNmZmE1Zjk4N2U0NWY3YjJiYzZhNmFjMzkgbGVnYWN5LXRydW5rCisxOTEzNyA5Y2U1MTQ5ODI1ZjZhZWFiZDBkN2NiNDY5MGY2MDJmZDViMGE4NGJmIGxlZ2FjeS10cnVuaworMTkxMzggY2E4NTU0N2ZjYjVlNDI0ZjUzYmY2YzRkNDQ2ZWMwYzc5NTk2NjE3NiBsZWdhY3ktdHJ1bmsKKzE5MTM5IDE2ZTIxNzcyY2EzZjE0NjIwMmRhZDc1OTlhZWQxOWM0MjU0OWJiMDAgbGVnYWN5LXRydW5rCisxOTE0MCBiNDZmOTU2YWJjZjg1MmY1NjBhZTk5MzQwZTQyZmUxYjFlOGFiMzcwIGxlZ2FjeS10cnVuaworMTkxNDEgNzg1Y2U2MTk2Nzk2MTQyODM0MzBkZjQ5MzBkZmYwNjI0Y2ZlMzcwNCBsZWdhY3ktdHJ1bmsKKzE5MTQyIDhiODFhN2U1OGExZDE5YzhiZjZmOTVhYmY0NTg3ODI3NTVmN2YzNmUgbGVnYWN5LXRydW5rCisxOTE0MyAyYWJjYmU0NDI3MWFiYjA3NjM0NTM3Mjg1OWNjNTE4YmMzNWYyMzFlIGxlZ2FjeS10cnVuaworMTkxNDQgZWE0YTJmM2IyNjZlMDE4NjVmZDY0YTMyNTgyNjY0YjhjZmI3OGI0OSBsZWdhY3ktdHJ1bmsKKzE5MTQ1IDY1YzZhMjk5OGIxYmRlZDBjOTk2NTNkNjIyMDczMjI1ZmU3OTQzMmQgbGVnYWN5LXRydW5rCisxOTE0NiBhMDU1OGViZjY2MTI3NTNlMDM4OGI2ZDdhZTNjMGMwNDY1NWRhNDU4IGxlZ2FjeS10cnVuaworMTkxNDcgMTVlMGMxMDA5MmJiNGRiMGFkNjczMjcyZmEyOTczMTI4YTFjOTg2MiBsZWdhY3ktdHJ1bmsKKzE5MTQ4IDIwZTNjMGQ1ZTQ2ZmQzNDNlMThmMTFjNjBjM2FlNWZmZGFhNmExNDkgbGVnYWN5LXRydW5rCisxOTE0OSA0YjcyODg4YzllMmY3ZWRkMzM2NjkzZjg1ZjJmNjZhMzJjZTM5Y2JiIGxlZ2FjeS10cnVuaworMTkxNTAgYzBhMjQ0MWE0NDU0YmRmMzBkYTFkMjc4NGRiYzJhNGIxYWU5M2U4YSBsZWdhY3ktdHJ1bmsKKzE5MTUxIDkzYmEzM2RjMzMzYWYyMmM3YWFkZWRjN2IwYjExY2IxMDZiODE1ZjcgbGVnYWN5LXRydW5rCisxOTE1MiA3YTI1MTQ0MGNlNjdkNjg5NGFiZjJmYmRlOGIzMjZiNjJmNjAyY2ExIGxlZ2FjeS10cnVuaworMTkxNTMgMDk0MDNjNWNkYWZiYzA4YTYwYjI2ODU2ZjFkNDI4MGRmM2I2NmFjYyBsZWdhY3ktdHJ1bmsKKzE5MTU0IDA1MDFjMmExMDMxNWZjNGYwZDRjMTQ4NTNlYzEwNjQyNjM3Y2YyZjYgbGVnYWN5LXRydW5rCisxOTE1NSAyN2E0YTE3YWVjMjUxNGNkODg2NDY3OTk3MjllOTU2ZDE4NWY1M2Y3IGxlZ2FjeS10cnVuaworMTkxNTYgMjhjNmVjNTgxYWE2OTY4MjJiOTllM2NmMjkyYmFhMzEyNTNkNmI3NSBsZWdhY3ktdHJ1bmsKKzE5MTU3IDdiMzQ3NmMxMzgyZWJjYmZjYTVkZDc3NzE0Y2RlMDk1Y2FmNTY3MjIgbGVnYWN5LXRydW5rCisxOTE1OCBhYjk5YmQzOTQ3MGNlMzkxYmFjMmY4Y2NjNjA3OTk5OTcxM2ExMGQ1IGxlZ2FjeS10cnVuaworMTkxNTkgZDBkOGM5ZDUyZjE4NDk5ZDBhYWRlY2ViMDExYTQwMjgxYTQ2NmNkYSBsZWdhY3ktdHJ1bmsKKzE5MTYwIDJkYjI5OTM5NTgwZGJhNzhkNTA2YTMyMWEwNjJjMmE1MjQwOTJkZjQgbGVnYWN5LXRydW5rCisxOTE2MSBlMWUwZTk5NmIwMDM1ZGEyMmQ5ZGI1NmU4NGJmMDYyZTBhOGUxN2VhIGxlZ2FjeS10cnVuaworMTkxNjIgMjZjMWZmZmRmZmYyZjA4ZTc0YzlmNGNhYmMwM2YzNjRiNzFjMzZhMCBsZWdhY3ktdHJ1bmsKKzE5MTYzIGJkZmI4MWQzYzYxMGVhZDhmMzlkYzZhNTM5NjczZWM2MWEzYjc4NTIgbGVnYWN5LXRydW5rCisxOTE2NCAzYTFlNjU4ZTQ0NzQ2YzAyMTZjNzBhZjZmZDU1MjlhOWU4NzkyMTQ5IGxlZ2FjeS10cnVuaworMTkxNjUgZTdmNDEzZDRlZTE1YWI4NmQ0NjRhMTViZTNmYzdkYWQxZDQyZDkwMCBsZWdhY3ktdHJ1bmsKKzE5MTY2IGZjM2Y1MDU5NDVkNGNkMDgyZDY1MDZjYWUzMTg3MzIwNjMxNzRhYmUgbGVnYWN5LXRydW5rCisxOTE2NyBmYjBmNTZiYjE0MDU5OTczZTU2NDU5NmQ4Njg5Y2RhODdkNjJjMzFkIGxlZ2FjeS10cnVuaworMTkxNjggOGU4NzNmYTU0NTBlYmY1NmJlNDA2ZjE5NmE1OGQ0ZWE4ODY1ZGE5NyBsZWdhY3ktdHJ1bmsKKzE5MTY5IGY4NGY4ZDgxZTMyY2U3MDcxMTJiMzg2NTA5ZDk5OTczYjQyNjMxNzEgbGVnYWN5LXRydW5rCisxOTE3MCA4ZTY2ZWE2MDI2MTZkYThmZWU5MThhYTcxMTkwZDQ4N2M0YTc4NTY5IGxlZ2FjeS10cnVuaworMTkxNzEgOTY2M2Q1ZWJiNjQ2YzEyMmM4YzFiNTM5Nzc1NDQ3MDczOTVmNTgyNiBsZWdhY3ktdHJ1bmsKKzE5MTcyIDU0YjBhZWY2NTBjNTI5ZDA3NmU4NzgwOTFmNzcwNjlhMGQ2NGU4NGIgbGVnYWN5LXRydW5rCisxOTE3MyA4YzQxZjM4NjFhYWRkY2NhZjJkMGYyYmFiMTVmOGU3ZjQ5ZDg3MTkyIGxlZ2FjeS10cnVuaworMTkxNzQgYjgwMTgxNDVlMmE1ZTc5NTI2YjU2OWU3MmEwZjdkNzU3M2U1NzFiNiBsZWdhY3ktdHJ1bmsKKzE5MTc1IDY2MmFkZjAzZTRmYTJmNjZkYTZmODgwYTgxYzA3MTAyNWM1OGEyZWYgbGVnYWN5LXRydW5rCisxOTE3NiAyNGU0NTdiYTFmOTI2YzViNGM3NGM4YzIyMTY2ZjhiMDQzNjA2NWUwIGxlZ2FjeS10cnVuaworMTkxNzcgMjhjNjBlZjQ4ZmEzYTFjYmExZTE5MzgzOThmZmJkNDJlMmU4YTIwMCBsZWdhY3ktdHJ1bmsKKzE5MTc4IDc5ZTcyY2UyMmE0MzBmMDFhMDRiYmZkYTU3ZmRkMjJmOWI1ZmMwZWYgbGVnYWN5LXRydW5rCisxOTE3OSA4NjFiZjhkY2ZiNThiODY2N2Q4NWU5NmEyMDczMjgyMzkwMWZmZTgyIGxlZ2FjeS10cnVuaworMTkxODAgMTdjYWM3MGNhZTc2NjIxNzBhMmE5NThlNDdlY2RlZjYzNmVmNmUzNSBsZWdhY3ktdHJ1bmsKKzE5MTgxIGIzMzVkNGRkMjIzZjM4ODRhNjc2YmM0MDAyNmJlOTc5MTE0NmJlNWUgbGVnYWN5LXRydW5rCisxOTE4MiAwZWZhNmM5N2E0ZmFiNTY1ODZhZDQ3YzAwYzllYjU1NjkzYzc1ZWQ0IGxlZ2FjeS10cnVuaworMTkxODMgYTU4Yzk5M2Q5MjM0NTcyZjgyOWQ4NThhNGU4MmIzZDc3NWVmYWZkNCBsZWdhY3ktdHJ1bmsKKzE5MTg0IDkyNWIyMzNmMDJlYTBkY2UxOTQ0Njk2NDc5ZGRmMWQ0ZTYyMzZmN2QgbGVnYWN5LXRydW5rCisxOTE4NSBhZmQwOTMwZjg2ODM5OWFlYjI1MGZlNGQyZDMxNjBhM2IyNTRjZmRkIGxlZ2FjeS10cnVuaworMTkxODYgOWQ1NzIwMzgyMDZlMDI3NjA4OTU2MzEzYmY3ZTkxY2VhMzA5NGZlMyBsZWdhY3ktdHJ1bmsKKzE5MTg3IDMzMDIzOTU3NWUxZTY3NTdmY2ZlNzdhNjdmZGY0YWUzYjZmMmFlMjMgbGVnYWN5LXRydW5rCisxOTE4OCBmZmQyNTFkZmFiZjQyYWQ4MmE5NzIwNjQ1ZjMyOWMxOWVlYmMwMDliIGxlZ2FjeS10cnVuaworMTkxODkgOTNhZmIyYmIyMmVkMDliYWY4Zjk2MDcwNDgwMzY1MTcyZDg4ZTFiNSBsZWdhY3ktdHJ1bmsKKzE5MTkwIGFiZDM4M2YxOTA1YzgxZWNlOTBmNGUyMmNlM2RlNDE4YzVjNWI1Y2IgbGVnYWN5LXRydW5rCisxOTE5MSA0ZDQyNGQxMzk3YjJkOGI5ODU0NzgzNTc5ZWJmMzIwZDU3MTIxNWMyIGxlZ2FjeS10cnVuaworMTkxOTIgYmUwNmJmY2JlNTFhMmVhYzUwMjU4Yjc3MmNmNDI1NmFjMjdlYWZhMyBsZWdhY3ktdHJ1bmsKKzE5MTkzIDI0ZThjNjljZDM0ZGE1NGE1ODI5NzcwMzNhMDBiODJhY2UzYjkwYzQgbGVnYWN5LXRydW5rCisxOTE5NCBiYWNiYjQ1ZmU4NDQ4ZmUyMzY3ZjQ1MjIxMGQ0N2E4MTcwMjVkMTcwIGxlZ2FjeS10cnVuaworMTkxOTUgMDFkNWI4MGEzYzAzODIzNzVkZjk0NjQ4YTc0NmNjYjg5MzhkZWYzYyBsZWdhY3ktdHJ1bmsKKzE5MTk2IDM2ZGIxOTM2MDhiZWUxNTQ1YjdmOTU5NDE1ODgxMjdjZGNmY2YzZTEgbGVnYWN5LXRydW5rCisxOTE5NyAyODUyZWFkYjdkYWJhNTEyY2IzMWVkY2M0MzI2NjM1MmJkNDg4ZDYwIGxlZ2FjeS10cnVuaworMTkxOTggMmQ4ZTAyOTAyZDY3ZTk4ODk3MTRkOTAwM2FhZmU5ZjI2YTBmZDZmOSBsZWdhY3ktdHJ1bmsKKzE5MTk5IGZhOTNiZDFkODcwOWQ4Y2JiZGNiZTA0YmI5N2MwNzZhN2IwOTI4ZDYgbGVnYWN5LXRydW5rCisxOTIwMCA2ODdmOTNkZGYzZDczNDNiYTAzYmNhMjNjZGQ5OWE5MzhiZDgyZTQ5IGxlZ2FjeS10cnVuaworMTkyMDEgNjU0OTgyYTQ2NjA3NzY5ZWViMjBmNWNhZDQ4MjFjOTg2YjhmMWYwYSBsZWdhY3ktdHJ1bmsKKzE5MjAyIDIwNzA3NDU4OGI5ZmRlMDRkMWQ2YzFmMzA0NTZlMjA5NGI0ZmZlNTggbGVnYWN5LXRydW5rCisxOTIwMyBhNGJiYTNlYjM0YzFmMTczNmUyOTM1NjYzNWRlMWFkMzUwMzc4MDM1IGxlZ2FjeS10cnVuaworMTkyMDQgMDVhOTEzZmY5N2E2ZTIxMGY2YTIwMTk4N2I5NTk0NzFmY2FjNDMzYSBsZWdhY3ktdHJ1bmsKKzE5MjA1IGY4N2E0MWI5NmUyOGNjOThkMTAxNDRlNGIwYWU4NDZkNzZiY2RmNWUgbGVnYWN5LXRydW5rCisxOTIwNiBhOGQ4ODU3YWIwZjFlY2Q1YmFhNjBjZTlmNTU5YjMwMjhhODQ1MzNlIGxlZ2FjeS10cnVuaworMTkyMDcgMGNiNDc5NTUzNDRlNDQ0ZTAxMWFiMzc5MjUwZGRjYWMwNzZhZGJlYyBsZWdhY3ktdHJ1bmsKKzE5MjA4IDkwZWRlNTE2NWQxZjNjMTVlYTA4YTJiODc4OGIzMjdhNTE3MGFiMDcgbGVnYWN5LXRydW5rCisxOTIwOSA2ZjFjMzdlODExNjA1YmZhMDUxMTVjY2VmNjdkMjk5YmU4MWYxODhmIGxlZ2FjeS10cnVuaworMTkyMTAgNmRmMTI3MzJlMjYyZjNjNzgzYjJjMDY5YTdkZDZjYmVhYjhiOGViNSBsZWdhY3ktdHJ1bmsKKzE5MjExIDdjNGViNDBkNGZmNzkyOGU1MGRlMTNkMmQ2MGQ4NzUwMWIwOWRlMTkgbGVnYWN5LXRydW5rCisxOTIxMiA2NmQ0YmY1NmUzMmRiYjE4NWIyZWUyYzM2MWU0MjAzMDMyNjYxYmMwIGxlZ2FjeS10cnVuaworMTkyMTMgZWYzMmJmYTVmNWM2ODEzNDgwYjRhMTM4YzYxNGQ1NzM1NTAxYzg5MiBsZWdhY3ktdHJ1bmsKKzE5MjE0IDBlZWIyZWUyMDc5OTlkYWFlYjFkYjZmMWEwNThmNGZmOTU4NDEzZjcgbGVnYWN5LXRydW5rCisxOTIxNSBhZTA0ZDYxNGEzZTAzM2I0MGViZjdkYWE4Njc5NzljYjhhN2I0NzliIGxlZ2FjeS10cnVuaworMTkyMTYgYzNiNzVhN2ZhZDNmNzgwNmM3NDkwOTc1YjJiN2I3MjIwOTcwNGE4NyBsZWdhY3ktdHJ1bmsKKzE5MjE3IGU0NDIwYzI0NjhmOTBhYTZiMWI2MWZmMTcwYjNiZjIwZmE4MDUyZjMgbGVnYWN5LXRydW5rCisxOTIxOCA0ZmYyODU4ZDdhODU1Njg2NDY5NTc2ODEyZmY1MzJlNGE0MWNiNDNjIGxlZ2FjeS10cnVuaworMTkyMTkgOWYyY2E4NTVmYTQ0ZGI2NGExNjhjYjkyZWRkYmY5ZTc1ZDI4MGY4YyBsZWdhY3ktdHJ1bmsKKzE5MjIwIGZhOGJlMjg3MzBjOTg1MzI0M2I0MjdmYzBjZmYzNzMyNDIwYmJhYzAgbGVnYWN5LXRydW5rCisxOTIyMSAxMDljNmEyODBlNTFhYTJjN2VmMmMzNWZkNjAxNjY2NTQ2OThiNGU1IGxlZ2FjeS10cnVuaworMTkyMjIgOTVkYWU2MWNlZDUxODMzZDhmMTg1OTFmODcwMTYwY2ZkZjc2OGM5MCBsZWdhY3ktdHJ1bmsKKzE5MjIzIDhjNWQ4YjYxNzk3OWFiYjFlNmJkZDI1MWY1Zjk4YWRiNDcwMDdkZGMgbGVnYWN5LXRydW5rCisxOTIyNCA2NTVhYWNjZDFjYWY4YTU1OWZmYzMyZjE2M2QxMDIyOGU1OWM0MTJiIGxlZ2FjeS10cnVuaworMTkyMjUgYzI5Y2ExOTgwMzAzOGJjYjRhMmYwYWE0OTY5Y2ViYmZhMWNlYmMzYiBsZWdhY3ktdHJ1bmsKKzE5MjI2IGYxZTJmOThmMDEyMDc4MDM3MWQyMGFiZGFlMTZmNGJkNmQyOWFiNjAgbGVnYWN5LXRydW5rCisxOTIyNyA1MGY3ZGQxYTUzNTdkOWM5NTkzMjdiOWIxNjc3MzIxZjI1MzljYjJmIGxlZ2FjeS10cnVuaworMTkyMjggMzhjYTljYzlmYzQ4YTFjZjMwMDdhOWE5MDliY2YyMDg3MmQ5NTc1YiBsZWdhY3ktdHJ1bmsKKzE5MjI5IDNjMWI0MjZiM2ZmNGM2ZWNjZWIxZTEyNmZiZWZhNDdkMGY3MzRmM2UgbGVnYWN5LXRydW5rCisxOTIzMCBjNjk2YTUyYzI2MjE4NDU4MjMxZmQ4ZjYzNzFkNmJkYjllMzc5YjdhIGxlZ2FjeS10cnVuaworMTkyMzEgYzA0Y2E2Y2JhMWUzYzhlOGI1MmQ1YTM2MTUxMTQ4NzA1YjdjMTAyNiBsZWdhY3ktdHJ1bmsKKzE5MjMyIDRiNWJlY2ZhMmViM2FjZDRmMWY1OWNkNzljMzA2M2M3MzAxMzdjZjYgbGVnYWN5LXRydW5rCisxOTIzMyAzZmU4NTU1MjZjNTU2MDQ5ZDg5YzQ0ZTA2YjJmMTFiZDZhNWE2NzU0IGxlZ2FjeS10cnVuaworMTkyMzQgNjcwYTAxOTRhOGRhN2U4YmU4ZDE5NzkxOTY5ZjgyZmE2ODllMmRmZCBsZWdhY3ktdHJ1bmsKKzE5MjM1IDVkZmQ3ZTE2YzYyZjE3MmU2NGFkNGI0ZWQ4NTAzMTdkOWI5ZDJmNDcgbGVnYWN5LXRydW5rCisxOTIzNiA2MzI1YmQwNjNmMGE4ODMzNmZiYTU1MDdjOTQ1NjZjOGM0ZDlhNTUzIGxlZ2FjeS10cnVuaworMTkyMzcgNmZkNjNjNWMxOWE5MjE4YjI4OTllY2UyOTQzZGJlOWE1ZjBjNzA2NyBsZWdhY3ktdHJ1bmsKKzE5MjM4IDhiMWEzODIyNGFkZTliNTc1YTU1M2IyNTg1ODY5YTEyOWQyMzFhN2QgbGVnYWN5LXRydW5rCisxOTIzOSAwZDRiNmJhNWVlZWM4NTA1MjJjZDkzNTc3OTNiM2NlZTgxZmYxZWZlIGxlZ2FjeS10cnVuaworMTkyNDAgNGNkNTc0NDY5ZmUxYWE4YzlkYTBkZThmMWNjNjI3NDJhNjlhMWUyOSBsZWdhY3ktdHJ1bmsKKzE5MjQxIDVmMDY4M2E2OWVmYzY4ODRjNjQxNzNhMDNkOGNkMDNlNTQ2Mjk2NmEgbGVnYWN5LXRydW5rCisxOTI0MiAzYTRkMmJlZmJiNzQ3MzQyZGYzMzBhOGUzM2JhNmQ2NzgwYzhhMzhkIGxlZ2FjeS10cnVuaworMTkyNDMgNDhiNGFjZjczYWQ3YWJkMjAzZDMyZDNjODk1YTAzNmMyZWNkOTQ0MiBsZWdhY3ktdHJ1bmsKKzE5MjQ0IGVjOGY0N2ExY2M0ODM4ODc4MWQ4MmM0MmM3NzFlN2JhODZiY2I1ODMgbGVnYWN5LXRydW5rCisxOTI0NSA5OGE4OGFiZTU4ZDQyZWI3ODkwZDkxMjhlMjMyYWIwMTRlYzk5MjczIGxlZ2FjeS10cnVuaworMTkyNDYgYzg5OGNlYmEyMjYxODQwZWI5Y2Q0YTExOTFiNDhiNzUxZmQ3NmMwNSBsZWdhY3ktdHJ1bmsKKzE5MjQ3IDFmYjY2NzJiMjBlZjNjY2FmMjEwNDg2NzgwMWI5MTFjZDBhZDY3Y2IgbGVnYWN5LXRydW5rCisxOTI0OCBjMjU1NWI0ZjM4YTMxNDBmNjEyMTE5YThkNmJlMDQ1MTQ0NzhjZWFkIGxlZ2FjeS10cnVuaworMTkyNDkgNTU2ODg3Mjk2ZDJhZDhhZTFhZGQ0MTg2YWIwMDA2NzY4NzI4Y2RlMCBsZWdhY3ktdHJ1bmsKKzE5MjUwIGZkNGE2MzU2NmJhMWY0ZDk5YTI3OTU5OGExNmMzMDhiMTM2ODBmNDUgbGVnYWN5LXRydW5rCisxOTI1MSA0NmE4Y2ZlOWFmYTYzNGQwYzM4YzNkNDFjMWI5Y2YzNDNhZWI1MTM1IGxlZ2FjeS10cnVuaworMTkyNTIgZDM0ZjI1MDQ2YWQ0YmE0NjlkNzdlN2E0NDRiN2VhODExZDA5MmNjZiBsZWdhY3ktdHJ1bmsKKzE5MjUzIDJhYjI4YjIxM2Q3MDVkY2M5ZmQwMzNhMjU0MzRiYTRkYmE2ODZmZWMgbGVnYWN5LXRydW5rCisxOTI1NCAyZWNjZWI5ZDg3ZjU5ZTIyMGZkYjQ2ZGFmMDE2NmU3ZWQxMTFmYzI3IGxlZ2FjeS10cnVuaworMTkyNTUgMDM5NDI3MGQ0ZDA2ZDVhMTg3MjU3ZTQ5NDVlNDEzZWYyNzQ3OTIzZCBsZWdhY3ktdHJ1bmsKKzE5MjU2IGY3MDBlNmI4ZGUxZmE2MDU5ZTI3ZWJkNGUyNjcxYjAxNDAxNDIwMDAgbGVnYWN5LXRydW5rCisxOTI1NyA3NGQxNDBhM2YwMzQ2MzU0ODQ4MjRhMjI5NmNmNWEwZDZhMGIxMjgyIGxlZ2FjeS10cnVuaworMTkyNTggYjIyZTRkY2E0NTFhMzU3Njk3YzZiYmQ1MWM1NDllNWMzMDI3MmQxOSBsZWdhY3ktdHJ1bmsKKzE5MjU5IDBiYjU4Y2RmYTY4OGZmMWQ5MzdmYWI5YzBlYTI5MDJmZjc3NmJmNjIgbGVnYWN5LXRydW5rCisxOTI2MCA4MGMwYjI4MGE0ZjkxMWVmNmI3YzgyZmUzMmM5ZDRhMGMzY2ZlNDJmIGxlZ2FjeS10cnVuaworMTkyNjEgZGNlN2I0ZTZkNDIxYmNiOGNjNzEzZGU0YTRjMzI2MGU3YTFkNjFhMiBsZWdhY3ktdHJ1bmsKKzE5MjYyIDE2NmU4NzgzNmU4ZTYwNTkyNjBjOWFhN2QzNjExNmQyNmY4MTE0NzMgbGVnYWN5LXRydW5rCisxOTI2MyBhYmU4NWQyNjIyZjlmYmRlZjUzY2I1NDBlNWI4ZDJmZDEwMDkxNWQyIGxlZ2FjeS10cnVuaworMTkyNjQgMDhhYzU1NmYyZDEyZGU1OWViYTY1ZDM0NWE0N2Q5N2E3ZDVmNjkzMCBsZWdhY3ktdHJ1bmsKKzE5MjY1IGMyMmU4NzI1MDFhMGM5NTJlNDZmZjQ1OTk5MTFkNThiYTQ3YTZhZDkgbGVnYWN5LXRydW5rCisxOTI2NiAzOTBjYTQzZTVmNzlkMGYyZmIwOWZmYzFjMGE1OGNkZDRkNGZhNjY1IGxlZ2FjeS10cnVuaworMTkyNjcgN2FkOTc4MzJhNWNkMDViMTdhNWVlMjBhNDUxYjJlNjdjZjIxNWMxOCBsZWdhY3ktdHJ1bmsKKzE5MjY4IDJkNzJkYjlmNWNhNTQ0Y2RiZWQwOTJmOTA5MDRhZjNiYjhjYjc5MDAgbGVnYWN5LXRydW5rCisxOTI2OSA5OWVkZTIxOTA4NzI3MzY0MTYyYzE1YmUyYWM2MjRiM2E3NjRhYWFlIGxlZ2FjeS10cnVuaworMTkyNzAgZWM3MDllZThlNmZhNjUyN2JhZGIwM2ZkMTRhNzMyMGY3ZmQ2NTNkMSBsZWdhY3ktdHJ1bmsKKzE5MjcxIDc0MzBlYmFiZGJkY2FlZTMyOWNjYjFjN2JjMmQ3YWVjMzQ5ZDM2ZTIgbGVnYWN5LXRydW5rCisxOTI3MiAzZDRhN2NkMGJmMTc4YWQ2M2UzOGJkM2NlZWY1MGYxMzI3MjQwMmRhIGxlZ2FjeS10cnVuaworMTkyNzMgYWVkYjkzZjljNmI4MGQ1OTkxYzAyZGM5NjVlOGIwYWY4ZTA2YWNiNCBsZWdhY3ktdHJ1bmsKKzE5Mjc0IDEwZWE0MDYwYzhkYzU1YmQ1M2Y4YWZlYjAxYmYyMmFjY2NmYzVhZDkgbGVnYWN5LXRydW5rCisxOTI3NSA4ODE5ODY3ZjE0ZWY2NTliZThmZjgwNTFjMDEyNGE0ZDljNWQ0MzllIGxlZ2FjeS10cnVuaworMTkyNzYgMTg1YjkxOTY3MTQ3ZGQwMjc2NjE1ZTI4YTMyZjJiNzYxZDJmYjk5OSBsZWdhY3ktdHJ1bmsKKzE5Mjc3IDEyZDAwNDhlZDZjYTViNjhjMmU2NDdmNTZhMmYzNzg4MGE0NTdjZTkgbGVnYWN5LXRydW5rCisxOTI3OCA3ZDM5ZDlkY2YyZDYxMTM3OGZhY2M2ODA0MDgwMjRiZmI3NTU0ZGNmIGxlZ2FjeS10cnVuaworMTkyNzkgOTAxYjk0NjU2OTI4YjBkMGFlZWI2YzA3MjgwYTI5YzhmMjQ3OThjMSBsZWdhY3ktdHJ1bmsKKzE5MjgwIDFhYzdlNjE4NmI2ZTNmNzdiYTdiMzg1YWVkZGM0NjkyMDQ2NWRlOWYgbGVnYWN5LXRydW5rCisxOTI4MSAxZWY3ZTQzNzE1ZjU0MGMzMGJkZDYxMDdjNWFmY2IwZmMzOGQ2OWMwIGxlZ2FjeS10cnVuaworMTkyODIgMzgyMDQwOTNkOWM5MjlkNjQ0ZWY5YzU2YmI4OWRhZjk5NDU4N2MwYSBsZWdhY3ktdHJ1bmsKKzE5MjgzIGFhODQ0NzExNDYzYWE4OTRhZmZjZTA5YTg3YmJhYzNmNGM3ZTBlMjcgbGVnYWN5LXRydW5rCisxOTI4NCA4YjMxOGI4ZDc4Yzk0NDY2ZGNiZWY1YmE5MTI1Y2I1M2IzOTZmMjkyIGxlZ2FjeS10cnVuaworMTkyODUgNWM0MDExMzQwOWMzMjc3YzY2MjQxYzliYzdmM2NlNjFlZTkwYWM3NyBsZWdhY3ktdHJ1bmsKKzE5Mjg2IDI1ZWM0ZjhjNjBhYWNmNmEwMjgzNDliYzcyODcxMjYxZWNkNzJlMjAgbGVnYWN5LXRydW5rCisxOTI4NyAzZmZjYzliM2JhYjg3ZjcxNDg4NDM3MzA2ZDdjMDJiYmIwYWY0MWVjIGxlZ2FjeS10cnVuaworMTkyODggN2VhN2ExYzVhOGQyMDNiM2ZiMjUwMmU2OGVmMTU1YTk4ODA5ZGE4MSBsZWdhY3ktdHJ1bmsKKzE5Mjg5IGM4ZWY4NjRiYTg2MWYyMzRjYjUzNWFhZmQ4ZjgzNzVlNmFmZjNiNDQgbGVnYWN5LXRydW5rCisxOTI5MCA2NDk2ODQ0YzRhNDI4MDkwNmI3NTI5Y2QzOGQ0OTEyNDNkNDc5NWYzIGxlZ2FjeS10cnVuaworMTkyOTEgOGE0NDBmZjI3NGVjYmNiMWU1MzU2NjQxOWI4OWNlMzRlMDVjZjVjMCBsZWdhY3ktdHJ1bmsKKzE5MjkyIDJiZTdjOTBjMWRkZWQyZTY0MTBjMTc3ZDk1NTE4ZDU4ODQ1M2QxMzYgbGVnYWN5LXRydW5rCisxOTI5MyBjMTZlMDYxZDIzZTg4NmJiMWIxMWNjYmE0Mjk0OGQxNjYzNzc3MjJjIGxlZ2FjeS10cnVuaworMTkyOTQgNmI1ZTIwZjY5ZTllZTlkNTZjYmY1MGNkZTA0NjM0NDZmOGM5YTdiZSBsZWdhY3ktdHJ1bmsKKzE5Mjk1IDAwNzZlOGQyOGY5ZWJhOWVmZjQ1MDg2OTZkYzMzNzMwYWYyYjQwMDEgbGVnYWN5LXRydW5rCisxOTI5NiA1YTRiZGZjNjYwODNlY2MzM2MzYzIwMGQ4MTg0ZWFmNTI2ZTlmZjg0IGxlZ2FjeS10cnVuaworMTkyOTcgYTYyMTk5NTA3NjZlNzhhZjM4NmQ5ZTRlZTVlN2FlMmEwNWYwZTNiZSBsZWdhY3ktdHJ1bmsKKzE5Mjk3IGIzODJmMWYwN2VjNmIyYzk1NTUxNjU4YjMwYzYxMzllZWIzMjA3N2EgbGVnYWN5LXRydW5rCisxOTI5OSA2NzlmODI2YjI0Y2EyNjliOGYxOGM0MDQzZWNmNWMzZDVhZDg3ZmY2IGxlZ2FjeS10cnVuaworMTkzMDAgMjQ2YjNhNmFhN2E5NDExZWE3Nzg2MTM0YTMyNWZkMDIyZDRmMmZlMSBsZWdhY3ktdHJ1bmsKKzE5MzAxIGQ1NTdmZjBhMmY2Yzk3ZDQyYTgwMzI0MzY5OWM1MTAxY2U1YjFiMGUgbGVnYWN5LXRydW5rCisxOTMwMiA3YTM5NzA0YTUwNDdlNGY2ZmM3MzAxMTA5MmJlMmRlOTIxNThjZDMyIGxlZ2FjeS10cnVuaworMTkzMDMgYzQ1M2ZiZjMwZjYxMzc3ODFmNGY1ODRkMDY5ODE2ZDg3ZDFjNWIwMyBsZWdhY3ktdHJ1bmsKKzE5MzA0IGIyYzUxNmJiNzM0YTcyOWVhZjJkZTZjYzc2NjZkZWNlNDBjMzRhMjUgbGVnYWN5LXRydW5rCisxOTMwNSBjZTk4NTAwNTExMjA0OTBkZTMwODUyZDNlYmM5N2MwYTBkMjU4ZWVjIGxlZ2FjeS10cnVuaworMTkzMDYgYjc4YzhkOGM1MmU2MWY2YTE2YzY5NTgyNWVkNzNiYmRkZjNkZjA3YSBsZWdhY3ktdHJ1bmsKKzE5MzA3IGY5M2UyM2E4MmE3M2QyZjFiYTlhNmUwYjAyNDA5MDc4ZDU2MWQ0OWMgbGVnYWN5LXRydW5rCisxOTMwOCA1NzU4NzI1ODRiMGNmYzZkZDVmMzI2MTA4MTYwODlhMGYxOTJmZWQxIGxlZ2FjeS10cnVuaworMTkzMDkgYWM1MmQzNzI3ODY3M2ZjZjQ3Mzk0ZWU3NzE5NThlZGVjMzhjMzdlNCBsZWdhY3ktdHJ1bmsKKzE5MzEwIDE4NzcwNTdhYTkyNjIwNzYxN2I5NWY2YzllODQ2ZjQ4NjUzNGM3YTMgbGVnYWN5LXRydW5rCisxOTMxMSA2NGEzMmRmNWMwNjM0NWQ4OTA2ZWIyNWY3ODIzZGRiZWRmYzQwZmUyIGxlZ2FjeS10cnVuaworMTkzMTIgYWYzOWRlMjYyYjljOWI4ZjFiN2Y4OWFhYmNlZjVmMzE4NGZjMGExNCBsZWdhY3ktdHJ1bmsKKzE5MzEzIDk5YmVmZWFjODQwMGZmYTgwNjI5OTBiMTY1OGFlZTc1ZmVlMGI3MDggbGVnYWN5LXRydW5rCisxOTMxNCAyODg1YTMzOTYzNWVkZTlhMDI3MWMyOTBkMzJkMzU1ODhiOTkzMjAxIGxlZ2FjeS10cnVuaworMTkzMTUgMmUzZGQ2MmNlYWM1Zjg4NDM5ZTM5YzM4MDEyYTNiMzZiMThjYjU5ZiBsZWdhY3ktdHJ1bmsKKzE5MzE2IGRkY2U3MTVlNDliYTA2Nzc4N2Q1YWEwOWJhMDAzNGI4YmY5MDg4ZGMgbGVnYWN5LXRydW5rCisxOTMxNyBiMzA1YzE1MzZiN2FhNGQ0MjBiZGJkODdkZmJiMzVjZjM3MmI1YTVlIGxlZ2FjeS10cnVuaworMTkzMTggYTUwNmYzYjc1Njk0MTQ5OTNlODE0ZjA3NzVmODEyNGM4NDM3MjYxMyBsZWdhY3ktdHJ1bmsKKzE5MzE5IDNjYzg2MzU1ODc5MzNlYzVhOTFhYjYwY2IzNmI5MzgzMThjMGM3YWQgbGVnYWN5LXRydW5rCisxOTMyMCBjOTlkNmQ1YWZkNzVkMGJjYjAwZWJlOGFiOWJhNTc2MzIyNGJkMmU1IGxlZ2FjeS10cnVuaworMTkzMjEgNWVmNzFjYjY2NDk1MzYxNDFmZGVmZGQ4NWVhYjZlMTNhOTk2YTI3ZCBsZWdhY3ktdHJ1bmsKKzE5MzIyIGMxOGFjOGMyZjAzNjViYTdkM2E1OWU2NzI1OGQyMDE5NGIxOTY0NjEgbGVnYWN5LXRydW5rCisxOTMyMyAwYmIxNzEyN2IyZjhlYTNjMjhhOWZhYWQ2YzRjZGM3M2M3ZjExZmQyIGxlZ2FjeS10cnVuaworMTkzMjQgYTRmNmI2MzMyMzBjMzcyMmQzN2E4ZGI1YjY3YWI5YTFmMzI5ZTM4OCBsZWdhY3ktdHJ1bmsKKzE5MzI1IDJjYTg3ODNjZThhMzVhZTdlMmNlOTIzYzE0Y2Q4ZmUxZmMyNjhiMGIgbGVnYWN5LXRydW5rCisxOTMyNiAyODZhOWQ5ODczNzUzNjNkM2UyYTU5MjU4OGU3MTU2ZDkzNDk1NTBmIGxlZ2FjeS10cnVuaworMTkzMjcgNjVhNzA4OTUwOTIyYjZmOGY4MzI0ZjkwOGI1MGE2YzAzMmJjMGQ1MCBsZWdhY3ktdHJ1bmsKKzE5MzI4IGVhODhjMmE3MzE3MzA0NGYxNDgwYTliZmYxMmFkOGEzNTYyY2MxOWQgbGVnYWN5LXRydW5rCisxOTMyOSAxYzcxYWE3ZDU1MTMxYWJmMmQwMGJjMWEyMGY2NDI5ZjJhY2VmNTA1IGxlZ2FjeS10cnVuaworMTkzMzAgZWQ0MzM4YzdlOGE0NWM4OTdiZjg0MDNlZjU4ZGRkOTM0NjU0MmJlNCBsZWdhY3ktdHJ1bmsKKzE5MzMxIGMwYjBmYzEzMjc5ZTIzMjE2NDdjMjQ4ZGE3MDdkNjQ0ZTk1Y2Y5M2YgbGVnYWN5LXRydW5rCisxOTMzMiA4MDdjYTY5NzYyMGFlZTE4YmMyNmFlMzBkMTAyZTNkOTlhYmY5ZWE1IGxlZ2FjeS10cnVuaworMTkzMzMgYWIwMmJjNmE1YWIyY2FkYzA4ODU5NmM2ODE4M2VmMmUyN2EyM2Q3ZCBsZWdhY3ktdHJ1bmsKKzE5MzM0IDU0OWU5OTNhNDc2Y2Q3MGYyNTM2OTMwMzFhNDQ0YWYxOTU2YmMyMjIgbGVnYWN5LXRydW5rCisxOTMzNSBmNWJjYmE1ZmE0MWM4YjBjNmYyYTk3ODRiNjUzNDIwMTRmNzYxY2FlIGxlZ2FjeS10cnVuaworMTkzMzYgNGQ0MDZjMjZjMTZlYTc5ZGE3YTM2OTczMjczNjAxZDJjMmU1MDRjNiBsZWdhY3ktdHJ1bmsKKzE5MzM3IGI2MzEzYzkxMTRlZDZkMTJjNmE5Y2RmMTYxYTNkMWQ4Y2Y2NGMzYzAgbGVnYWN5LXRydW5rCisxOTMzOCBmN2IxNjdjODMzMTg1OGRkNzQ4MzVmZDRjODE5YzgyN2MwMTQyZGJiIGxlZ2FjeS10cnVuaworMTkzMzkgNTdjZTkyYTE2YjNjOWVlYjI4YTYzMGI3NWMyODk2Y2M2ODc5YzliZSBsZWdhY3ktdHJ1bmsKKzE5MzQwIGVkYzBjOTlhNjlkNmQyMjU2MjI3M2RiYmI1OWM0NWM5YzZiNmFjMDIgbGVnYWN5LXRydW5rCisxOTM0MSBkNTk2NjNkM2U0MzNhMzU5OTdjZTg2OWRjMzM0MGFiMGFhMjQ2MWFiIGxlZ2FjeS10cnVuaworMTkzNDIgZTk3MjE3ZjViMzIzMTlmM2E3Zjk4N2UzMjJlZmNiNjdmZjJkZDk5ZSBsZWdhY3ktdHJ1bmsKKzE5MzQzIDgxMWIwY2NiNjJhZWNlOTM3ZDEwM2RiOWVjNWEzZmM3NDEwOGU5ZDEgbGVnYWN5LXRydW5rCisxOTM0NCAxZmI3YmVmYjU5ZjA3M2IwMWJhMTQ0N2RmMzU2MTFhMDdlZWQ5N2JhIGxlZ2FjeS10cnVuaworMTkzNDUgYzIzM2VmY2I0ODllNWJmNWY0N2M0ZTY5NGZkZTEwZDQ4YzNhZmNjMyBsZWdhY3ktdHJ1bmsKKzE5MzQ2IGJmOTc4MThkZDllMWUyOGI4YWQxZGRjOWFmNTk4ZTMyMTIyZDFlOGYgbGVnYWN5LXRydW5rCisxOTM0NyA1ZjEyZGY4OGEyMDg1YWEyMzg5ZTBlMjUyZGIxZTlkZTliNTE1NGE5IGxlZ2FjeS10cnVuaworMTkzNDggNDY0ZGU4ZGZhNTllOWE3NWRhZDlkNDcxOThmNmM4MmVkOTU1YjA2NyBsZWdhY3ktdHJ1bmsKKzE5MzQ5IDc3MWRiYjE1NTU3NWZiY2ZlOGRhNWQ3ZDhkY2U0MjhlMTkwMDVjNjUgbGVnYWN5LXRydW5rCisxOTM1MCA5MmNiZWZkYjY3NGE2NWNkNzgyMWJjYzY3YWVkZGFhMjg5YjZjOTkyIGxlZ2FjeS10cnVuaworMTkzNTEgYTY4ODg0ZGUxMmVjNTRlNTRiNjhjOTZkNzM1NTNmZGZhYmRhMGZkMiBsZWdhY3ktdHJ1bmsKKzE5MzUyIDg3ZjJhYmI3MzE4NDhiNmZmYTJiZjI0OTY4YWVmZjY1OTY2YTdjOGQgbGVnYWN5LXRydW5rCisxOTM1MyBhNGM2ZTQwMWVlMTg0YzNmZmQ1MjU4MDQ4MzM0MzEzZTIzYjMwMjc2IGxlZ2FjeS10cnVuaworMTkzNTQgZmM0YWNlMDI0MmNiMDk0YjZiMzZlZDYxZGIxNjY4M2U3OGM0NzNhZSBsZWdhY3ktdHJ1bmsKKzE5MzU1IDZlNWFiNzg0MGIwNWQwYmM5NGQ5YmZlZWMxOTA1YTJjZmJjNTBjMzUgbGVnYWN5LXRydW5rCisxOTM1NiBmNGQxNWZkZDE1ZGQ3YjFlZTc1MWNiNzY5MjM3ZjJlOTA4NmM2NDYwIGxlZ2FjeS10cnVuaworMTkzNTcgNjlmMTYyZGNkOGI0YzA5YzVlZjRkZGQ0YjU3YjkwN2I3OWQ2ZjhjOSBsZWdhY3ktdHJ1bmsKKzE5MzU4IDFmZjlkNTcxYmFjMDlhNzgxNTY3ZTA2YTkxN2RhNWUwOTlmODBlODIgbGVnYWN5LXRydW5rCisxOTM1OSBkMzI5NjA2MzYxZjhiM2JjNWRlNTg0ZDMzZWYzN2Q5ZDUyY2U4ZTg5IGxlZ2FjeS10cnVuaworMTkzNjAgZjc1MWI5NmRlNjIxZWU3MTRlNWFhZTViYmU4YzY4MGUxYzg2OWU3NCBsZWdhY3ktdHJ1bmsKKzE5MzYxIDU4ZGUyODI5Y2ZkZDNiODk4MTAyNTUzY2Y5N2VkZjgxMGM5NGNlYTEgbGVnYWN5LXRydW5rCisxOTM2MiBjOTdlNjE4OWFkOTZhOWVhZDUyYWJhNTFmNGI5MzhjNWUyNzk4YjUzIGxlZ2FjeS10cnVuaworMTkzNjMgYjExNzgwYjA2OGZhNmMxMjI5Y2JlZDI5NWRmM2NiZTk3NDA3NWZhYiBsZWdhY3ktdHJ1bmsKKzE5MzY0IGJmMDMwOWQ1ZmMwYTkzOWU5MGFlYjFiNzYzZTEyOGJmNDE2NzJhNWQgbGVnYWN5LXRydW5rCisxOTM2NSA4ZDc2NTVhYzhiZjg2OGE1MzRlMDQxMzg5NjkwNjY5Y2NhZDIwZDg3IGxlZ2FjeS10cnVuaworMTkzNjYgNmZmY2U4YmUzZTBiOGRkMzE0YzY5NmU2NjFjNjQ4MDZlZGE0YWY2YiBsZWdhY3ktdHJ1bmsKKzE5MzY3IDg4Yzg3Yzg5YjQwNjgwMDc4OTRhMTE5MjVhOGI2Y2U2NWM0ZWNhMjIgbGVnYWN5LXRydW5rCisxOTM2OCBiMjZjYmMxZmU0ZTNiNWJmNjE5NmJhNjk1Mzg5MTZkNjRjOTM2ZDQ1IGxlZ2FjeS10cnVuaworMTkzNjkgYmRmYzZiZjdiMGRhZTdkMjI4YWE3ZmZkNzUwOWZkNmRiYmRlZWFiZSBsZWdhY3ktdHJ1bmsKKzE5MzcwIDVjM2JmMmU4OWQ4MDExYWZiNWZlZjY4Yjk4YTcxYTI2YjM3NTljN2YgbGVnYWN5LXRydW5rCisxOTM3MSA1ZjU4OGRkNTQzOWJmMDA2YTE2ZGYwZjE0NTFkMGRmNGI5MDkwZjExIGxlZ2FjeS10cnVuaworMTkzNzIgYzg3ZmRmN2RlMGU2YjhmOTE3NzAwZDEwOGYxYWUxNzJhNzJmY2I2MiBsZWdhY3ktdHJ1bmsKKzE5MzczIDE4ZWYzZDVlYWI0ZjIyY2I5M2E3YzcwMDJhNmFjNmZhYTg0NDdkNjAgbGVnYWN5LXRydW5rCisxOTM3NCA4OTNhNTE1ZDMzMWE3M2FhYjM2N2Q5ZTFiYWY5YWFjZWJmZGY1Yzg4IGxlZ2FjeS10cnVuaworMTkzNzUgNTY0M2UzN2I5OWFlNjllZWY2M2JiZWU1ZTRiN2MwOTY4MTkxZjdjZSBsZWdhY3ktdHJ1bmsKKzE5Mzc2IDkwYzYwMGE4MTllOTZkNDYwNjk3OWUyZDY4ZTM4ZGQxNGZkYjQxMTIgbGVnYWN5LXRydW5rCisxOTM3NyA4YmE2YmM4YzJlMDkzODFmMzc2ZjExOTM5YTk4OWM5ZDNjNDExNGM0IGxlZ2FjeS10cnVuaworMTkzNzggYWY4ODQ2NTk5OWM3YTZjMDMzNDZiYjBiOGY3NWQ3ZThmYTFlZTI2MCBsZWdhY3ktdHJ1bmsKKzE5Mzc5IGVlZTY3YTg0ZTVmYWFmMzAwYTFlZjI2ODFiODk5ZTM2ODAxZDJmZjkgbGVnYWN5LXRydW5rCisxOTM4MCBiM2Q5MjNhNjYxNTJjZDhkNTM2OWY2OWVjZmE0ZmQyNDhkOGUxMTU1IGxlZ2FjeS10cnVuaworMTkzODEgNjMxZDRjOGRiNzg0MDgwMjg2N2Y5M2IzOTZmMjI1YTYxZjU3YzM1NyBsZWdhY3ktdHJ1bmsKKzE5MzgyIGM4MDIzODVhNmFjM2U2NDIyNjkyOGFjMDNlMjhjNjg3ZDVkNDUzYjggbGVnYWN5LXRydW5rCisxOTM4MyBlM2Q0ODgwNzQ4YjVjNDc1YzRjNThlOGZmMDAzZWVhNTNkMWI0NDlmIGxlZ2FjeS10cnVuaworMTkzODQgZjQyNzk5YzY4OTI5ZWU2NGM5YzgyNGY2ZjkyYWFkNWRlOWFiODI5NSBsZWdhY3ktdHJ1bmsKKzE5Mzg1IDlkNjI1MzAzZjkxNGJlODMwYTk5MjdkM2E1NGEyNTEwNWQ2MTU4NTUgbGVnYWN5LXRydW5rCisxOTM4NiAyNGU5NDZlOTUxZmEyYTM1YTE4YTU5MjFjYTRkNjlhYTQ1MGMyMzU4IGxlZ2FjeS10cnVuaworMTkzODcgYzM2OTY3YmRjOWRkNGRhYmI3OGJjNWY3MjQwY2UzMjA5YjdkNGIwYSBsZWdhY3ktdHJ1bmsKKzE5Mzg4IDU3ZDI0OGRkYmUyYWJhYjRkZmY0YWE2NmM1YjA4NjhiODM3ZGU5ZjYgbGVnYWN5LXRydW5rCisxOTM4OSBhOGUxMjNkZjI2OGI5Y2JmYTA1MDE4NzAwYjZkMWE2ZTU5MzQ3MjE3IGxlZ2FjeS10cnVuaworMTkzOTAgZjNlODNlNTE0ZGQ4OWFmY2VmODA0OTgwZjdmNDAxZGNmMWJmMWNiZiBsZWdhY3ktdHJ1bmsKKzE5MzkxIDc1MWU5Y2M0NzdkOWQwMzQ5Mjc1ZGFiOTNhY2JhOGE0YTI0NjJjMDUgbGVnYWN5LXRydW5rCisxOTM5MiBhODBmNjdiNzIzMDhlOWQwNTE1YmRiNDlhZmZhZGVmYmVjMjU2ODVlIGxlZ2FjeS10cnVuaworMTkzOTMgMDZkZDk0ZTIwZjNiODFiY2MxNDA4ZDUzNzI4YjAxMjY1NDBkM2VlNyBsZWdhY3ktdHJ1bmsKKzE5Mzk0IDdmYzY0ZGYxM2RiMGFjYWZjNjMzOTFkMDJkYzRhYTNiNjE1MTYwNzQgbGVnYWN5LXRydW5rCisxOTM5NSBjNDhhZjM5Y2IyOTJlMDFiN2M5MmI3MDA3NDZmY2RmNjhlOGE5ODJjIGxlZ2FjeS10cnVuaworMTkzOTYgYjU5ZjNhMWViMTIzOTFiYzFhZWRhNzVhNjlkOTJjMzM5NWYxOTBiNSBsZWdhY3ktdHJ1bmsKKzE5Mzk3IDA4NGIzZGM5YjZmZjMxMDJhZThkNWY5ZTliN2NiNGI3OWI1NDkyYmEgbGVnYWN5LXRydW5rCisxOTM5OCA1NGY3MjA5Y2M3MWU3YjY5MDlkMzJmMmMzNmQxNGM4ZWY0MTdmNGQzIGxlZ2FjeS10cnVuaworMTkzOTkgZjRlNzFiYWI3ODUzYzk3YjU1Nzk3OTA5YzBlZmU5NjY0Y2ExZDNkYyBsZWdhY3ktdHJ1bmsKKzE5NDAwIGE1NDBjNmZkMGNlZDFkODgxZGJlY2ExN2I4MjFiMjEyN2UzZjQxN2MgbGVnYWN5LXRydW5rCisxOTQwMSBhNDdkOTNlZjEwM2E3NjczYmMyMmYzYjY1ZTdmNTJkY2FiMzJiOGQ2IGxlZ2FjeS10cnVuaworMTk0MDIgODIzNmYzZTc1ODVlMTRmYzgwMDBhNGE5MjZmNGUwNTUxN2M0MDY3NiBsZWdhY3ktdHJ1bmsKKzE5NDAzIDhlZWQzNzNiY2U3ZmU1MGFkZTJhNjFmNTc4NGMwNTBhNGY5OGE1YWIgbGVnYWN5LXRydW5rCisxOTQwNCBmZWY0YzAzOTczM2RjYjgxZGM3Nzk0YmMyOTU5Y2U0MTZhYTBjM2JhIGxlZ2FjeS10cnVuaworMTk0MDUgMTIxNGFiZWEwYzdiMmE4MzUxMTcwZDg4ODQ1NWEzZTZkZDJlMWQ0MCBsZWdhY3ktdHJ1bmsKKzE5NDA2IDQ2NTI3MjNlYTY1NWNhODJhOGZlMjY4YTFlMWM0NjY3YTcxM2ViNmQgbGVnYWN5LXRydW5rCisxOTQwNyAzOGVjZmQxMWQ5YjUzYTI2YzRjZWIzMWNjYzE3ZTQ4ZWI5YWU4YzY3IGxlZ2FjeS10cnVuaworMTk0MDggNjBhMmU5OWM4NjNiZTk3MTllMzE0Mzg5NTY4ZGIzOGE5ZTA1MWEwYyBsZWdhY3ktdHJ1bmsKKzE5NDA5IGNjOWNiMWU5MGIzZDI0YmQ3OGQzNDAzYjM3ZmFiYTg1M2QxNTcyYzMgbGVnYWN5LXRydW5rCisxOTQxMCBkYTg2ODFmMTdiNTAwZTY0ZTFkZTY3MWQ0NGU0NTNiNGZlYjU3Y2IzIGxlZ2FjeS10cnVuaworMTk0MTEgN2U5ZjQwNTFiYTRhZjEzZmZkNWE1Y2M5ZjFlNGVhYzAyY2YzM2QyNiBsZWdhY3ktdHJ1bmsKKzE5NDEyIDhmNzBiNWRkZDVjMDhmNjQwODhmNjc4M2NhYWNkNWM1MzdmN2ZiNmUgbGVnYWN5LXRydW5rCisxOTQxMyA3ZGU1MDQzODI3ZjcwZmRjMTg2YjZkZjZlZWVjYmMwMjE4NzFkNGExIGxlZ2FjeS10cnVuaworMTk0MTQgZTU1OTJmMWVmNDFmODY1MWYyN2UzZmI2NWM4YjEwNTUxZDZhOGFmZSBsZWdhY3ktdHJ1bmsKKzE5NDE1IDlhOTU3OTRlMGY3ZWM2NWI1MzY5ZGQ4NDVmN2IwZjAwYjhiYjk2N2QgbGVnYWN5LXRydW5rCisxOTQxNiA0NDRjMGVlZDVhNjZjNWFjOTU1MjFiNDczZDA3ODc0YTRmMTI0YzM4IGxlZ2FjeS10cnVuaworMTk0MTcgZDM4YWZiMjBjMzM2YTcyNGFlZTIzMjQzODkxNzkzNWI0NWQ2NGFlNiBsZWdhY3ktdHJ1bmsKKzE5NDE4IDI3ZmNlMmQ3ZmFjZGI0MjdkOTc2OGFiODFhNmNjMmNlNTRmZDBiODQgbGVnYWN5LXRydW5rCisxOTQxOSA5Y2U5ZTAzNDJjYzFmMGYwMmU1OWJlY2JlZTc2MGIxNjlkNzliYmVlIGxlZ2FjeS10cnVuaworMTk0MjAgMTkyZTk4NTVjN2MwMDY1NTZhZDI3OGUzMGViYTY3YTlkNWY1ZDRjZSBsZWdhY3ktdHJ1bmsKKzE5NDIxIDhjMWM3ODdiZDZmOWUyYjVhNWRjZDM1ZWQyNGQ2ZTMxOGQ1MmFhNjEgbGVnYWN5LXRydW5rCisxOTQyMiBlOGU2MzZjYzFhMDkzM2Q2ZTc3Y2NkZjBjMTMyYmYwMjMzMTU0MTNmIGxlZ2FjeS10cnVuaworMTk0MjMgMGQxMzA1YzgzZGU0YzllMGRjNTgxZGYzZjAzMTZlMmIzNjE4YjUwMSBsZWdhY3ktdHJ1bmsKKzE5NDI0IDYyMzQ1NjU3NmQ2YThlNTRkNWU5MGI0NjgwNjhiZDhmYzEzNTU4ZDIgbGVnYWN5LXRydW5rCisxOTQyNSAzMGQzNGJiZjg2MjAxYWE5OGM4YjRhODZhNjhlZjNhOGYxMGQzYmY5IGxlZ2FjeS10cnVuaworMTk0MjYgZDM0ODRjYTQwYjhhMGQ3ZjkxMWNhYzEyNDJkNjJlYmEzNjZlNjlkMCBsZWdhY3ktdHJ1bmsKKzE5NDI3IDIzYjVlN2QwM2Y3NmZiYjg1OTQwYjAwMjAwOWFlZDExMjU2ZGQ2YzggbGVnYWN5LXRydW5rCisxOTQyOCA0Y2VkYzgyNmJlZThiNmQxOTg2NDg4ODk5MTM5Y2M0ODRhZjIwOTY2IGxlZ2FjeS10cnVuaworMTk0MjkgYjRmZjFjZjRhMTBmYWZiODc4Mjk0NjFiN2Y1NTI5OGU1YzQyMWYyNiBsZWdhY3ktdHJ1bmsKKzE5NDMwIDkxNzYzMDEzYzM2ZmNmNWM2ZTFlMDliYzBjMmNjNDMxNjIzZGMwYzcgbGVnYWN5LXRydW5rCisxOTQzMSBjOTA0YTQwZTE0ZWE5ZmYzZTQ3MjAxMzI4NmIxNWEyMmEyMzA3N2Y0IGxlZ2FjeS10cnVuaworMTk0MzIgODY1NzM4NGRjYzRhYjI4M2VkZDNhNzJkMzdjZGQzYjg2M2M3NmYwZiBsZWdhY3ktdHJ1bmsKKzE5NDMzIDJjNjQxN2VmNDYyODUwYmRlZjg2N2VhYTZiYTBjOWEyMzg1MDk2MTEgbGVnYWN5LXRydW5rCisxOTQzNCBlZTBkZDBjNzk2NGVkYmNhMDY2M2EyNjRkYTVhMDY3NDkyOTI2YTE1IGxlZ2FjeS10cnVuaworMTk0MzUgNDc3MmZlMmRiMmM0NmMyNDVhZTM0ODViODM2OTE1Y2JkNTczYjkxYSBsZWdhY3ktdHJ1bmsKKzE5NDM2IGJmOWMyNGJlZGE3ZDU3NTM0ZTkzMGY2Njk5NTk4ZTcwMmZiN2UzMDcgbGVnYWN5LXRydW5rCisxOTQzNyA1ZjNhODM1MDYxNWM4YjljZTYzODcyMzQ2OGEyOWI1MzNjNjc3MTUzIGxlZ2FjeS10cnVuaworMTk0MzggZjY1NDQ2OGI5YWU4YTlhMDUxYWFhMjhkY2U3ZWYxOGE0NjMxMmZmNyBsZWdhY3ktdHJ1bmsKKzE5NDM5IDA2OGNiODQ5NGI3YjFlNjYxZmYwMzQyMjY5OTdkOTdjMzk2ZTA4MzMgbGVnYWN5LXRydW5rCisxOTQ0MCBiNDM5ZWVkYTAwODI4ZjNiZjBkNmFlNTA1MWE3MmVkNjQ3YzdlMjhhIGxlZ2FjeS10cnVuaworMTk0NDEgYTYzZGM1OWJlMGY5ODZhMjQyYWIzZjQ0NDA4OTgzYjA4OGMyMzIyNCBsZWdhY3ktdHJ1bmsKKzE5NDQyIGRhMTVlNWY2ODY0NGE5NjBkZWIwYjZjNzI1NWI1OWZlMWEzOWE3NWYgY25yaS0xNi1zdGFydAorMTk0NDMgZTJiMmZlN2ZhYmI4OTQzOTA0MWUxYTVjODI0NzM2NzZiZDhkZDgxNyBjbnJpLTE2LXN0YXJ0CisxOTQ0NCA5ZDA4YzM3NDczY2I5MjZhYmY5NjM5ZDY3NjY1ZjE5Njc1ZGMyZWU0IHJlbGVhc2UyMC1tYWludAorMTk0NDUgYzBjZGY4MjU5OWUwM2YzOTRjODUyMTZmMGI2Y2NmMTdkYjI1YjEwMCBsZWdhY3ktdHJ1bmsKKzE5NDQ2IDlhOGU5NjFiNTA1ZjAzMDY5NmQwMmNmMWM4YTJjMzAyODcwNDFiNTMgbGVnYWN5LXRydW5rCisxOTQ0NyA4MTdkZjllZmFjYmFlNzQzMDE2ZjU4ZWY3NzFkMGFmZWYxMGU3NGE4IGxlZ2FjeS10cnVuaworMTk0NDggM2Y2YzA1ZTA0MDgyNmRjNzIyOWQ0M2RiMzc0MTQyNDE2ZjAyZDhlOCBsZWdhY3ktdHJ1bmsKKzE5NDQ5IGFhZTJiYjhhYzM3MzllMGM1OGU0ZjJkZjdiZDViZGNlMWEzOWE2NGMgbGVnYWN5LXRydW5rCisxOTQ1MCA1ZmEyNTU0MmI4OTY3NWQ0MmIxNWQ4ZGZhNTViNmY2NjIzMmIzYzQ1IGxlZ2FjeS10cnVuaworMTk0NTEgOWJiMmI2OTYzYzgyNWFhOTBlNWVlNmJjMGY3OTExYmE3Y2FjNTdmOCBsZWdhY3ktdHJ1bmsKKzE5NDUyIDU2YTgxMDZiYWY2MzVhZGEyOTAxOTRiNjE4YjA1YzFkNWU5ODhkZTEgbGVnYWN5LXRydW5rCisxOTQ1MyBiYTg0NDYzZWZjN2JjNWNiZWVmZDJhNzMwYTRiOGI5MTI2OGNkMjAwIGxlZ2FjeS10cnVuaworMTk0NTQgZjgxM2U5ODdlNjVjZTQwYTgzZjRlOTM2MmNmMGViYjQ1N2JlZjY5MCBsZWdhY3ktdHJ1bmsKKzE5NDU1IGRmN2Q1MmFlMjBlNGNkMDUzNjBjOGExZTdhYTA4Y2I5ODM3OWE1ZWYgbGVnYWN5LXRydW5rCisxOTQ1NiA3NGFlODBkOTBmYTZjYzI2NDM2NTlhODg2NTljMWZjMTA0NTJkZWNjIGxlZ2FjeS10cnVuaworMTk0NTcgYjM2MjUxMzE2ZjZhZWRhNmUzYjlmYjUxZDk2MDc4OGFhMTJkM2IxNiBsZWdhY3ktdHJ1bmsKKzE5NDU4IDllZjk3OGM2ZjAzOTU2NTBjOTliNzJiOGEwMTE0ZDgyYjA0ZDliMzQgbGVnYWN5LXRydW5rCisxOTQ1OSBmZmRjNzE4NWJkYWJkNjNlMDQ5MzBiMDE1NzZhOGY5MjY3ODlkMGFjIGxlZ2FjeS10cnVuaworMTk0NjAgMDg1NTExOTE2Nzc2MjY5NmM2YTE4YTRhZTU3Y2FmZTA4MDY0MDQzYiBsZWdhY3ktdHJ1bmsKKzE5NDYxIDA3ZmZiMGMzYmQ1ZWU2N2MxOGJlYjdiMjIxNDJmNDUzZDU0MGFlMzIgbGVnYWN5LXRydW5rCisxOTQ2MiBlMTA0MzY3MjU2ZjAyMDM3NTRkNGZmYTVmNzNiODA3NmU0OWRjNGMwIGxlZ2FjeS10cnVuaworMTk0NjMgMjYwZjAzM2FlN2RmMzg5OGI5MzNiNmYyZTc1Y2NhYWNmMWQ0MGUwZSBsZWdhY3ktdHJ1bmsKKzE5NDY0IDg4NWQ1NDUyNDhkYjM4MDc5MzM3MTUxMDNhYzAyNjJiM2Q5Zjk4YmMgbGVnYWN5LXRydW5rCisxOTQ2NSAwYjQ1NWE0Mjg5Njc3ODdlMDRjY2Y4YzM4Yzg0NmE0OGM5NzJjNDk5IGxlZ2FjeS10cnVuaworMTk0NjYgOTZkODg2OGEwMDI4NGQ5OWM4OGUzOTQyODI0YTc2NTE5YzIwNjA2MiBsZWdhY3ktdHJ1bmsKKzE5NDY3IDBjZDg3YTVkMWVmOTc0ZWFlN2YwMWMyOThiZWE5NDNhZGM1ZmQ0NmUgbGVnYWN5LXRydW5rCisxOTQ2OCBlZjJiZTEyYjE4ZmVhMzk2NmE5N2U4YTYyNDRiMzY1ZDQwM2RiMGVhIGxlZ2FjeS10cnVuaworMTk0NjkgYjA1YjhiNmMwYjQzMDk4OWM3YjdiNmQ4YzQzOWI1NWZlMTg2OGUyOCBsZWdhY3ktdHJ1bmsKKzE5NDcwIDQ0ZWY2NDRjYjUyNmVlYjdmZGMyYTQ0ZDhlN2Q4YTA0Y2NhYTQxMDcgbGVnYWN5LXRydW5rCisxOTQ3MSA5NDFhNzZmMzg3NDc0MjU2MTQxOGRiOWRjNDY3ZjhjMTlkYTAxYThlIGxlZ2FjeS10cnVuaworMTk0NzIgZjQyNWQ4NTIzNDgwYjAxZmMzNjQ2MTA5Mjk1NWI3YWU2OGUxNjRjMSBsZWdhY3ktdHJ1bmsKKzE5NDczIDczMzA2OTQ5MTE5YzA0ZDM1OGExMDU2OGFlMGQyM2M2ZjU4NDk2MDEgbGVnYWN5LXRydW5rCisxOTQ3NCBmMGY1NzI5ZDYwM2ZiNTlmOGE5NmY2NzM3MTU5ODMxNmM2YjZlZDk0IGxlZ2FjeS10cnVuaworMTk0NzUgZTNjZmZjMDM5NGJmYjZjMDQ1MmI1ODY1Yzg3NzczMmQ2ZDYzMDY0NSBsZWdhY3ktdHJ1bmsKKzE5NDc2IDhlZjI0NjdmMDE5MWJiNjEwMDRiMzAwNmFkZjBmOWYwOTdmN2VkNDkgbGVnYWN5LXRydW5rCisxOTQ3NyBmNjhkYmZmZmY5MjdiZmE1NjZmZDJjM2E5ZThhZWZiNWI2MTMwYWQ5IGxlZ2FjeS10cnVuaworMTk0NzggMjBlNTJlNWE0MDhhMTZmMDI4NjZhNmZhZTIyODYzZDA0MmE0YTFkNiBsZWdhY3ktdHJ1bmsKKzE5NDc5IDhmZjRjZjQ5MjY3ZWM1NDc5MDFjMGRlNmY2NTIxOGZiYjEwMGM2YmUgbGVnYWN5LXRydW5rCisxOTQ4MCBlMmE2MzU4NDU2NmY4MmRiOTM3ZTBhMzMxYTFiM2JkZjhiMjUyN2U2IGxlZ2FjeS10cnVuaworMTk0ODEgZTA1MGI5NGYwNGQzYzk2NzI3OTNlZjZhNDljZDE4M2UzZmY5Mzc4OCBsZWdhY3ktdHJ1bmsKKzE5NDgyIDU2OTE0ODg0YWFiNjMwMWI0NzYyNGVmY2IwNjA4ZDZjNWMxNzIzMTkgbGVnYWN5LXRydW5rCisxOTQ4MyA0ZTJkMWM2ZjI5MDRkYTY0YmVmM2M1ZDEyOTFkZjlhZDgwODM4Y2UzIGxlZ2FjeS10cnVuaworMTk0ODQgMWM2YmE5NDZkOGZhMGJlMmU0NDAyMTNmYjRjZDNhNzQ1ZjVkNDE5OCBsZWdhY3ktdHJ1bmsKKzE5NDg1IGM5NTg2Nzg3MjBmZGFjNDI0NjU0NWY1YTg5ODU0NWRkYjEzMDJkMDYgbGVnYWN5LXRydW5rCisxOTQ4NiA5MTc4MGVhZDhjMjViMjcyN2M0MjJjYjhmN2VhNWZjNGU2ZTI2NGM5IGxlZ2FjeS10cnVuaworMTk0ODcgM2E2YjRhMDAzYTE3ZTRiOWFmNmZkZmIxZDMzYTczNDllOTlmNzIyYyBsZWdhY3ktdHJ1bmsKKzE5NDg4IDY3YTA2NjZmMTFlMzIzMDcwZjUzMjg1MjMxMWZhZDc1YzM0MTY2MDkgbGVnYWN5LXRydW5rCisxOTQ4OSBjOWYyM2Y4MGZjOTMwZDg1ZmIyOWZhMzNlYzg0NGViY2E2YTRkMjk5IGxlZ2FjeS10cnVuaworMTk0OTAgNjExNzY4MzQ5ZGQ5MGYzOWFkZjEwOWNkY2Q5ZTFhZTA5M2ViMGUxYyBsZWdhY3ktdHJ1bmsKKzE5NDkxIDA2M2Q1YzRmNmNlNThiMzQwODgxMWM5ZDQ3N2FmNzU4YTUyOTEzNjIgbGVnYWN5LXRydW5rCisxOTQ5MiBjODdlNzAxN2Q2NmIzM2E4OGFiZDk5ZTM5MWY5NTkzNWJkNzFiOGU0IGxlZ2FjeS10cnVuaworMTk0OTMgOTZlOWNjYmYxNjVmNmE0ZTIwMTVmNzlkMTcxNDgyZjNhOTA5YjE1OSBsZWdhY3ktdHJ1bmsKKzE5NDk0IGM5NTA5ZDg0ZjNkZjdmOGViMGY2MzhjODI4MjMwMWViNjg0NGE2NmYgbGVnYWN5LXRydW5rCisxOTQ5NSBlMzgxNDUzMDYyMzEyNjM1YTc0MTYzMzE5Njg3YjRjNWE5OTk2ZWEyIGxlZ2FjeS10cnVuaworMTk0OTYgMDU2NGIxMzRiNTg0MDM1NTFiZGJhMWQwOThjYTJmNDUwY2ZkOTk0NiBsZWdhY3ktdHJ1bmsKKzE5NDk3IDIxNzI3NzU4MzQ2OGQwNTY4ODRlNGYzYjVhZDViNTlmZmZjNzllMjIgbGVnYWN5LXRydW5rCisxOTQ5OCBkNDU1OWI3NDU3YTBlMzJhMzE1MjVkYWFiNDI2OTk4MjFjMWQwYzBlIGxlZ2FjeS10cnVuaworMTk0OTkgMmZiNjQ5ODM5NjVmZjIyM2FlYTI1MjM5MWZmMzRjYTFiNTNhNGFlOCBsZWdhY3ktdHJ1bmsKKzE5NTAwIGUzMGMxOTc1MzJhYTEyNmE2ZGFhNGIwN2ZjNjk4MzZhMDYxYmFjOTIgbGVnYWN5LXRydW5rCisxOTUwMSA1OWY0ZjY5NjAxMDE2OGRhMThhOWJhOWE3OTBkMmY0ZTJlM2Y3YTNkIGxlZ2FjeS10cnVuaworMTk1MDIgNzk1NjhjMGQzZTc3YTY5MzYyYjM1NzljY2Y1YjQ3NTAzNTY1MGExZiBsZWdhY3ktdHJ1bmsKKzE5NTAzIDE0NmRmZTdlMDMzODJjZWIyMTkwY2IxOWNlOWI3ZDY5MTlkMzBlN2MgbGVnYWN5LXRydW5rCisxOTUwNCA3ZDFlN2I2ZWM4Mzk0NTM0ODZkYjJhY2U4MWVmMWY2MjU5MmNmZTljIGxlZ2FjeS10cnVuaworMTk1MDUgMzhmNjk3MmRjOGI0MTdmZjJiYWI5ODUzMjE1NWVjOGQ5MWNjNjE2NCBsZWdhY3ktdHJ1bmsKKzE5NTA2IDE1ZjAwNjRjODQwMDk2ZWZkYzlhZGM1NTZmMTczNWM3NThhYTE5MWQgbGVnYWN5LXRydW5rCisxOTUwNyBmN2E5Nzc2NzcxYWIwZWZlMWQ2NzIwOTJlOTAwMTBiYWFhNWQyM2U1IGxlZ2FjeS10cnVuaworMTk1MDggN2YxMjdiZTA3YzUwOTU3NzgxZTFjMzgxZWRmNzdiMzc5MDk2YTYxMCBsZWdhY3ktdHJ1bmsKKzE5NTA5IGQ2ZDVjMTFmNzVhOTIyZTk1Y2UyYjkzNzRjYzBlYWJiZDYwMWY4NzggbGVnYWN5LXRydW5rCisxOTUxMCBiOWU1NDgxZjY0NGMzMGFmNzQ2MzRkNmM3ZTVkNDljMTM2ZjE0YWUzIGxlZ2FjeS10cnVuaworMTk1MTEgNzI4YzExNTYyMTg3MmYxNzAxY2VlM2RjZmU3ZjM1M2I4ZjNjZGNjMiBsZWdhY3ktdHJ1bmsKKzE5NTEyIGE1MWI5OTYxZjNiYmIwYzA2MDVkYTdlMTJkMGU5Y2I0ZWYwNzk0N2EgbGVnYWN5LXRydW5rCisxOTUxMyA4ZDg1MDk2MTc4NzQxZjU5NDA4ODc4ODg4ZTI4YmQyMGZhMmM4ODJjIGxlZ2FjeS10cnVuaworMTk1MTQgZDNlOGI4ODA2NTFiN2Q0NzM1NGU5ODk5MWIxMzNmMTJjNGIzMjE5MiBsZWdhY3ktdHJ1bmsKKzE5NTE1IDkxNTIxYzUyYjFkYjU1YWZjNmQ2ZmNjYTQyMDQ4MzljMzlhYTRmZGYgbGVnYWN5LXRydW5rCisxOTUxNyBkYTlhNGExNjk4ZjFmNjg0ZTc5NjkxYjk2NjRiN2M2MDdiYmUxYzkyIGxlZ2FjeS10cnVuaworMTk1MTggYjlmZThiZDllNWY0ZmJiMDZkMjk5NjdhYjJmZTZiMGMwZGJkNjc4NSBsZWdhY3ktdHJ1bmsKKzE5NTE5IDU5MjFiMTI5ZjM1MDQ4NDM1YzA2ZWM3NDlkOWY4ZDQ3MDYxMWFmZDggbGVnYWN5LXRydW5rCisxOTUyMCAxZDdhZWQwNzY5NjQ4MTI2YTVmNjA0YzkzYzE4MmY3MWRmOGJiMzA1IGxlZ2FjeS10cnVuaworMTk1MjEgN2Y4ZTgxN2FjNDIzYzQ1NjlmODkxNTY4YjdkMTAxYTdlMjBjNzllYyBsZWdhY3ktdHJ1bmsKKzE5NTIyIDc5ZDUzMzkzNGFjMWIzMDk1ZTBjNGY5YTRiNzMxZTIxYzBlZmZmMjggbGVnYWN5LXRydW5rCisxOTUyMyAxYTVhNDQxNzcyZmY2M2FhOWY5MThjMWJlOWViNTliYjJiMDZhMWJjIGxlZ2FjeS10cnVuaworMTk1MjQgZGVlYzZmYTgwNDcxMDgzN2QxNzY4MTJkZjhlOTVhZDE5MzI4OTUzZSBsZWdhY3ktdHJ1bmsKKzE5NTI1IDAwNDlmNzdiMzZjNjIzMjM3ZTcxZDI5NjlkMWJlMTY3N2ZmMDk4N2UgbGVnYWN5LXRydW5rCisxOTUyNiA2YWY0MTVmMGMwMWViMDBkMjM3MjQ5NjVjZTIzOWU3MDIzZTYxNjc5IGxlZ2FjeS10cnVuaworMTk1MjcgODljMWNjZWY1Y2U4MzYwZTNiNDY2NDAzYTAzZDcxMDQ1ZjUyNjYxOCBsZWdhY3ktdHJ1bmsKKzE5NTI4IDk0YTM4NDQzZjk5YmI1NzA1NTVjYjE3MWQ1NDVhOTkyOTljNTM1NWUgbGVnYWN5LXRydW5rCisxOTUyOSA1NzQ2ZDBiZjVmMDRkZjdmMjUzYjljYjIwZjU0NjYxNTZmNmQyOGMzIGxlZ2FjeS10cnVuaworMTk1MzAgZGUwZTg3NTJkNWI3MmNlNzQ1MGNmNDg1NTBjMzgzYjExYTJkMzIyZSBsZWdhY3ktdHJ1bmsKKzE5NTMxIGU5ZmNiNDZjMWYyY2FjYmMzOTc0NmQ1ZTdmNTQ4MzZhZGVmNjIxZGIgbGVnYWN5LXRydW5rCisxOTUzMiA3MjUyMzgyOTM4NjljYzVhYzlmNjY1YTcwYzcxNDYzYWU3ZWYzNzk5IGxlZ2FjeS10cnVuaworMTk1MzMgNTdhOTcyMmM1ODhkNGRhMmI4YTVhMGU4OTFmOTJiZmQ1N2M1Y2Q2MSBsZWdhY3ktdHJ1bmsKKzE5NTM0IDk5MGZhMjVjZGUxY2NmMTU2OGM4Njk0MzBhOGRlNjYzZWVmMjJiMDEgbGVnYWN5LXRydW5rCisxOTUzNSBhOGEwMGRlMDI0ZTczODBhOWZlODRkY2JkNzI1ZjJhN2NiNTZiOWFkIGxlZ2FjeS10cnVuaworMTk1MzYgOGJjYzEwZGI1NjJlNGY5ZmY4ZTIyZjI3YzEzNThkMGZkN2UwZDFiYSBsZWdhY3ktdHJ1bmsKKzE5NTM3IDBkM2FlOGYwODQ5ZDkyYTUzOTdlMWU0OGNhODhlN2JkNjY5MzRmNjggbGVnYWN5LXRydW5rCisxOTUzOCA1YmNmOWM0OWI2ZTc4YzQ1ZmI2ZWEwZTc3MmM3YmFmMTkyMWJiMGM4IGxlZ2FjeS10cnVuaworMTk1MzkgZjRlOTdlYzFkYzlhYjYyZTYxNTJlZmRjYTI4OGMyNzQ5YTY5ZmZmNyBsZWdhY3ktdHJ1bmsKKzE5NTQwIDk2M2Y5NWViNzY0NmRhYTE4ODE4YTQ5MWYzMTI2MGVlNjI0NDNkODYgbGVnYWN5LXRydW5rCisxOTU0MSAyOTRiYTE2YjBlODhhNDc2M2QzZWEwN2I1ODFhNTRkNGE1ZWE4NWFjIGxlZ2FjeS10cnVuaworMTk1NDIgYjk1NWU3NDk1NWQ1NGM5NThhNjkyMjI3OTE3MTgyMmYwYmQxOTgzMyBsZWdhY3ktdHJ1bmsKKzE5NTQzIDA2YWQ1MDUzZjQwYTA2MmM5MDc3OTdlNTAzYzBiMTM1YmU0ZmY4ODkgbGVnYWN5LXRydW5rCisxOTU0NCBkYjRmYzgyYWE0NGJhOWI1M2I2ODRhNjgwY2ZiNWFmYWExMjU1MGNiIGxlZ2FjeS10cnVuaworMTk1NDUgMTdlZDYxZmQ1YjY1NDA5MzNmMzU5NmM3NGEzN2MwYjA4ZDBhMmE4MSBsZWdhY3ktdHJ1bmsKKzE5NTQ2IDI2YWNjMjQ0NWYzNzM3MzJmMTdkZDUxODJhYzBmMmUxYzA2MWFhMjkgbGVnYWN5LXRydW5rCisxOTU0NyAzY2IwMGNiZTc0NTUwODRlNzIxZTkxY2NhYThkMzU1M2Y2NDlhYzIwIGxlZ2FjeS10cnVuaworMTk1NDggZDk0ZmVhNTc4MzRjMzNhMDFkYWIwMGM5MTM4ZGNiNzU4MDc1NjEwNSBsZWdhY3ktdHJ1bmsKKzE5NTQ5IGY3YWUwZDkzN2NkMDc0MzFhMzAwYzcyMzMwOWZlODI2MjBhMzY0MTUgbGVnYWN5LXRydW5rCisxOTU1MCBhNmYwODBmZTUyNTExZjkyODZhYTMzNTI4NzJlOGQ5MGYxZmY0NjBlIGxlZ2FjeS10cnVuaworMTk1NTEgYTBiYWY0Y2Q4MzVjZjJmNDBkYjkxNTQ0NjkyY2I2OTJiMDU4NGU1YyBsZWdhY3ktdHJ1bmsKKzE5NTUyIDEwMmZmZTE2MTFlMGY4NDc0OWQ4ZmRmYzAyYjhmOGFlZDJjYTNiODUgbGVnYWN5LXRydW5rCisxOTU1MyA2ZWJiMTRiMTQxYWQ1MWI5Y2M0Yjg4ZjIxN2I4ZGIzYjE4M2VmMDg4IGxlZ2FjeS10cnVuaworMTk1NTQgNzM2YmNlZWNhM2RiZDYzYWY4MzI4OGRiMmJiYjE3NmY3MTdkYTRmNSBsZWdhY3ktdHJ1bmsKKzE5NTU1IDQxMzRiNTk3MjIxOWNmYmM5ZWZlNjNhNzU3MzNiYjgwNTVmMDkzNTUgbGVnYWN5LXRydW5rCisxOTU1NiA2NjI2NmM0NmNjZmRjZDYyYWE5N2E4ZWNiM2YyZDY4N2Y2YTYxMmY1IGxlZ2FjeS10cnVuaworMTk1NTcgMmE4NmQ1MTlmODBlNWU4ODUyMTM3Y2Y5ZGViYzgzNTYzN2U0M2ZkMyBsZWdhY3ktdHJ1bmsKKzE5NTU4IGRlNWE4ZGQxYzZmMjQ3NTZmYTQzYTQxNjNhMGM3ZjMxY2I5YzVlODEgbGVnYWN5LXRydW5rCisxOTU1OSAzYmRkNTY1Yzc3YmRkZGQyMjgwNGYwNzNlMTU5N2VmMmI3NWZkYWFhIGxlZ2FjeS10cnVuaworMTk1NjAgZTE0YzVmMzRmYTA1ODU2YTU0MTJjYTg1ZDAzMmE0MTkyYjNhOTRkYSBsZWdhY3ktdHJ1bmsKKzE5NTYxIDU2NDkyN2M1NTc0MjVmOGJmNThjZGJhY2QzODYyZGFiNDE1Zjk5NGMgbGVnYWN5LXRydW5rCisxOTU2MiBjMDJhOWRiNTZmZTE1ZDViMDUzMjYwM2E0MjVjZDlhYWY3MjIxYzVjIGxlZ2FjeS10cnVuaworMTk1NjMgMWI0MDBjODU0YTJjMmZmZTQxODlkMjg0ZWU2ZjI5M2RiNjRkOGI5NCBsZWdhY3ktdHJ1bmsKKzE5NTY0IDczMzRiMmNlZGRhOGU3NTBiZTJlYjUzNDhkMGI3ZTdjMTljN2EwZDMgbGVnYWN5LXRydW5rCisxOTU2NSBkMmE4NDE0YTFlYWIzZDFlM2Q4NWQyOGQ2Yzc0ZTM0MmQ0OWVmYWE0IGxlZ2FjeS10cnVuaworMTk1NjYgNjBjOTBmZjljMmY3OGFkNmQ4ZTgzOGIyMzRhMDcxODEzNDNhODhjNiBsZWdhY3ktdHJ1bmsKKzE5NTY3IGY5ZjRjMjMzZWUwMzdjZDUzNGM1NjhjZTEwNjU3MDI1YTQ4NzNkMjUgbGVnYWN5LXRydW5rCisxOTU2OCA4MTcyOTA2YzZkYzhmYjM3ODYxNTg4YmJiYzBlYTZlNmE1YTQ3YTlkIGxlZ2FjeS10cnVuaworMTk1NjkgMDQ2ODU5NmUzMDE4NzQwMDhkMDdlNmE3YThhMzVlMDEwZWU4ZThjNiBsZWdhY3ktdHJ1bmsKKzE5NTcwIDkzMmExZjhkOTJmNzA5MTcyYzI3ZDZhOWY4ZTRiMmNkNzI1OGRiYmQgbGVnYWN5LXRydW5rCisxOTU3MSA2MTdjYjQwY2I3NGI4Zjc0MjAwMWQxNjc5MzNiZTIxMjNlZWZmZjNkIGxlZ2FjeS10cnVuaworMTk1NzIgOTY5NmM5NWQwOWI3NDI0Y2QxMjNkNDBiZThmOTk3YWUxYjdjMDBmMSBsZWdhY3ktdHJ1bmsKKzE5NTczIDU3Nzk5ZjAxM2FhZDI1NGE4Zjg5ZGY2YjYxNGE4YjRiZDk2MGU4NDQgbGVnYWN5LXRydW5rCisxOTU3NCAxY2YzNmViNWEyNWMwZjU2MDJmY2UwNzNmYzQzNjFjOGNkOThlNzY4IGxlZ2FjeS10cnVuaworMTk1NzUgNTg5MDhiYjQ3Y2NhY2FkN2E2MTcwZGQwZTgxNWQ3NjNlZDBkZTgxNiBsZWdhY3ktdHJ1bmsKKzE5NTc2IDJjMWY4ZDNiYmEyZjgxZWJiNTI3YjY2NGQ1MjE5MDk3NjFlOTU4YWMgbGVnYWN5LXRydW5rCisxOTU3NyA2MzQxZjhkOTA5YWM1ZjU2YzFjMmY3NGQ2ZjlkYTA2MjM5YjY0ZDkzIGxlZ2FjeS10cnVuaworMTk1NzggZTRiNDdiNDM5M2M4YWQ0ZDZhY2QyNWUyOGY4MWI5M2Y4NDAyYTI3NyBsZWdhY3ktdHJ1bmsKKzE5NTc5IDZkMWZkOTI0NGRhZGFhYmVmMmE5ZWVlZTIxNmNlNzExMTY1ZmNiN2IgbGVnYWN5LXRydW5rCisxOTU4MCAzZTkzOTZhYzRiYTA3ZTRkY2Q5ODYwNDU1OWY5NjRjMTUyNDQzNzQ4IGxlZ2FjeS10cnVuaworMTk1ODEgZWY2NGRjNjg1MjBmZGI5OTJmYWU1MmRmOTQzNDdkNmI1ZWRmYTA5YyBsZWdhY3ktdHJ1bmsKKzE5NTgyIGExZDhiYjY4NjU5YTQ3NDM3ZWVmNzBkZjdkZDIzMTQ0OWMzMDg1ZTIgbGVnYWN5LXRydW5rCisxOTU4MyAwMWMyNDcwZWViMmVhMDM0MTU4NzZjYTM3YzU0NmRkZmMzYmY3ZjlhIGxlZ2FjeS10cnVuaworMTk1ODQgODljMTI2ODg3ZGYwOTNlMGQzN2I3NTQ5MDJhZTgzYWZhYjY2ODg3NiBsZWdhY3ktdHJ1bmsKKzE5NTg1IDQwN2Q0MDIyY2M4YzA0MjhiMTU0ZmU5NmE1OGU1MGQwM2UxZGM0MDUgbGVnYWN5LXRydW5rCisxOTU4NiA0ZGIwZmRkYjY5MTc4ZGJmY2ZkN2JhMWFhZjM5M2Q3NjA5MDQ3NWMwIGxlZ2FjeS10cnVuaworMTk1ODcgY2MzMzhhNWMxNmU1YzQyMDNlNGZlMzFkMTY1MTVmMzM1ZTExNDg2ZSBsZWdhY3ktdHJ1bmsKKzE5NTg4IDU5ZjFiNTdiYzkwOTk4ZjA3NDk3Njg2Y2FjNjZhNTI1NzIyOWRmMjMgbGVnYWN5LXRydW5rCisxOTU4OSAxMjA2MjFiZDMzZmNhNTlhMTAyNmExNmI0YmRhNWI0MTZiM2M2NzVmIGxlZ2FjeS10cnVuaworMTk1OTAgZDE3MGMxZTc3MmM1NTNhOWI1ODk2YjZhNGExNGRlZjVkN2U0OTNkOSBsZWdhY3ktdHJ1bmsKKzE5NTkxIDU4M2E4MTJjNDVjODg2MTM0NTU2N2E1Y2U3Y2I4YzFiNzVkNDNhYmIgbGVnYWN5LXRydW5rCisxOTU5MiA4MDBiMDA0YWNjNzE3ODBlNmQ5OTNkMzJiZjgxNDM0M2NhOTE1OTI2IGxlZ2FjeS10cnVuaworMTk1OTMgMjU2ZTE1OTlkOGQ5NmMzYmJkNzQ3YmMzNjFmZjVhMGYxNDY5YjRjMyBsZWdhY3ktdHJ1bmsKKzE5NTk0IDc0MTQ1YWIxZmRjNWJkOWRmNTAzZmE2NzViNjQ5OTJiYzY2NWIzZDUgbGVnYWN5LXRydW5rCisxOTU5NSBlODFkZGE1ZDM3YzRiMWIwNjMwMjA2Mzk4ZDZiNTFmNDI1MGU4ZTJlIGxlZ2FjeS10cnVuaworMTk1OTYgODZjNzY4M2I2MDZhOTBiZWU5Y2M5MDg0MGVhYjVlYjY4OTQyMDIxOSBsZWdhY3ktdHJ1bmsKKzE5NTk3IDhmMDM0YmNlZTg1NmJhZGYwZjU0NjRmNzIzMjc2MjI3ZGU4MDhiMTQgbGVnYWN5LXRydW5rCisxOTU5OCBjOTlkMTlhOTZlOWViYmVjZjYyZGM3NzE1MTY2YWU3ZmVkYjliYzE4IGxlZ2FjeS10cnVuaworMTk1OTkgMDVlYzFiMDU0YjRkOTNmZTA2ZjI4OWU3ZThkMzczY2ZkZDdmNmQxZCBsZWdhY3ktdHJ1bmsKKzE5NjAwIDlmODZjYmE0NzY2YjU0ZWU5NTE3MDBkZDgwZjUwZDViNzg3Y2IyZTAgbGVnYWN5LXRydW5rCisxOTYwMSBiMzI3OGJmNGYwOTE4MjM3MTNjZmM0NzExMzMyMGMyYmJjZGE5ZTc0IGxlZ2FjeS10cnVuaworMTk2MDIgMzg2Y2M2OThhZWY5NTU2ZjZkYjQwYmIxYzQyNzllYzFlYjJjMTMwNyBsZWdhY3ktdHJ1bmsKKzE5NjAzIDg0NGZkZTYwMGE2MWQzMzg5YWFiMWJmMWRlZDZmNmE0NWNmMDZjZmMgbGVnYWN5LXRydW5rCisxOTYwNCBkZGFmZGJmOTE0OTg1Yjg5MTRjZDhhMDRhNTcwOTk0ZjZhNjMzYzc4IGxlZ2FjeS10cnVuaworMTk2MDUgYzEwMDU2MTAwZWE1ZGQyZmU4NGQ1MmMyZTMyNzBkODliYmU5ZWUwYyBsZWdhY3ktdHJ1bmsKKzE5NjA2IDg0NjZiYjM3Mjg5Y2Q2ZTc2MTBhYTg4ZDM4ZmVhMjQ3MTQ1NjhmYmYgbGVnYWN5LXRydW5rCisxOTYwNyBkYjYxODk0YjBkNmZjM2U0MDBlNDAyNDRjMDVmOGM5ODY4NDEwOGVmIGxlZ2FjeS10cnVuaworMTk2MDggODVkMmFmOTcyZTYyMzA0YzBiOTIwNjIwOTc2ZGZhM2VmNzRjMmEyZCBsZWdhY3ktdHJ1bmsKKzE5NjA5IDM1ZjU3YzcxNzBiZDQwYTc1ZDhkYzMyYzIxMDU0ZWZiMWJmMmEzMTUgbGVnYWN5LXRydW5rCisxOTYxMCA0Y2E2MmFmZWMwMDQ1MjVmYzNjYjczNGZhYWY1NjYwY2ExZTkxMjUyIGxlZ2FjeS10cnVuaworMTk2MTEgYjQyYjIyYTkyMjhjYzg2MDVhNTlmOTE2YjA1NDk5YWJkMDhmMDczMSBsZWdhY3ktdHJ1bmsKKzE5NjEyIGUyYTBkYjgzOWViMWE0M2I0NTI2ODYzOWQyZTU1ZjI5MmM0NjdjMGYgbGVnYWN5LXRydW5rCisxOTYxMyBlNDQ0YTUyNzExODEyY2NjYzcxMGE5YWRjMDAxNTQxYzlkZDMxZmIyIGxlZ2FjeS10cnVuaworMTk2MTQgOTUxODg5M2NjOGE3ZDZmNWQyMjZlY2Q3ODBjZWMyNTQyZjMzZDA5YyBjbnJpLTE2LXN0YXJ0CisxOTYxNSAwNmY2ZjBlMWUxMDYxNmM4YjY2MzRkNzdkMWY5OTYzOTkxMDVjYzAyIGNucmktMTYtc3RhcnQKKzE5NjE2IDNjMGEzNTAwMjEwOGQyZTEyMDQzMWQ1NGQ2YzNjYmJmNTE1N2I1YWMgY25yaS0xNi1zdGFydAorMTk2MTcgNmE1NWI2NzdmNTA5NjQ1ZjNjODdiYmVhOTUwY2IxOTgwZWVhMTYyMCBjbnJpLTE2LXN0YXJ0CisxOTYxOCA3ODE1OTE5ZTJhZjhiNjNlMGVhNzYxNjZkZDM1YTkwZDA1NjMxZTdjIGxlZ2FjeS10cnVuaworMTk2MTkgOTBlOTBjOTIxOThiN2RhNjA5ZTU2MGZjM2IzZmM3NjdlNTM2Y2VjMyBsZWdhY3ktdHJ1bmsKKzE5NjIwIGNhMWJlN2QwMDQxM2U4YWFhNWUzOWNmNWFkYzM0MTYwY2FjZTc4MGYgbGVnYWN5LXRydW5rCisxOTYyMSA1YzNhZWRjOTY5ZGE0NTY3OGNjOWIwZWQyMGYzOTM0ODVlOGIwZTQ0IGxlZ2FjeS10cnVuaworMTk2MjIgNTE5NzdhZjIzMGZhNDdiZWU5NDgxMzc2MzFjMDViNzE4MjkwNzJlZCBsZWdhY3ktdHJ1bmsKKzE5NjIzIDIzYzdhMDEwOGY1OTBjZmM3YzFiOTgxYjAyYWVjYzUzNTE4NTdiZTEgbGVnYWN5LXRydW5rCisxOTYyNCAyZmI0ZDYyNWJkMzlmMDFhNGEyY2JmODdiY2Q4OWJlOTJkNjVmMGExIGxlZ2FjeS10cnVuaworMTk2MjUgMzQ0ODU5MWU4Mjc1ZTdhNzVhNDcyZTAyOTVmNGVmYzgxNTE3Y2M5YiBsZWdhY3ktdHJ1bmsKKzE5NjI2IGUxZmE5OGZkMjM5ZTc1YTEzZjA4Zjc3NWE4MmE5ZDM1NjI4NGU1MDkgbGVnYWN5LXRydW5rCisxOTYyNyA4OTk2Mjg4YTg4NzNiMWM0ZTc4MTRiYmIwYThlY2RhNTI0NWZiOWVmIGxlZ2FjeS10cnVuaworMTk2MjggNmM5NmU4MzI4ZDUzMDFiN2I2ZDVjMTQyMWM5OGQxMjZhMGJlNDdkMSBsZWdhY3ktdHJ1bmsKKzE5NjI5IGE4ZTUxZjZiNWNmYzA5N2M1ZDRmYWJkODI0NTIxMTM1YzVlNDI4NWYgbGVnYWN5LXRydW5rCisxOTYzMCBmZjEyMmM0MDRmNjQzMWM2ZjQ1OGE0YjFmZjc3NDRkMzk4NWRmYzk0IGxlZ2FjeS10cnVuaworMTk2MzEgZGI0OGQwYjEzYjFlZDAxMjIzNzE5MDU1ODM5NGYzNzc3NzUzMzQzOSBsZWdhY3ktdHJ1bmsKKzE5NjMyIDJmNTg1Y2JlNzFkYTU5ZGUzOTdhNzdjMGE4NWQ3MDhiNWEzMTAzNDcgbGVnYWN5LXRydW5rCisxOTYzMyBhN2M1MTRlMTUwMDM2NzBhYWI5MWZjYzU5ZDA3M2ZmYTM1MzA2ODEyIGxlZ2FjeS10cnVuaworMTk2MzQgYTgwNGM5MWMxODJlMWMxNWUxNzk2YjE1MWZjMGYwOGNkMjdmMzY2ZiBjbnJpLTE2LXN0YXJ0CisxOTYzNSAwYTM4ZjRkOTY2N2VjZWZkOWExOGYxZjY4NTgxYWI2MzdkNjE5ZTA3IGNucmktMTYtc3RhcnQKKzE5NjM2IGY0ZjI4NjBkM2E1ZjNlMDk5OGM4Y2QzYTZmZDJmYzYwMDYyMGRlMDcgY25yaS0xNi1zdGFydAorMTk2MzcgYjRlNDJkMjk5NjNkZDRjYmQyZDJjNTZlOTBlODI5MWRiMjJmMmVmZCByMTYxLWJyYW5jaAorMTk2MzcgN2VlMzc4ZDVhNDFkMmQ4MzE2ZWUzMjZmODE4OTkyNDE5YTQ4MDRlMiByMTYxLWJyYW5jaAorMTk2MzkgNjM0OGNkNDU5ZWU0OWUzZTU1N2U3ZjViNTEyN2UwNzhiMzBmN2IyYiBsZWdhY3ktdHJ1bmsKKzE5NjQwIDY4MGM4ODVkZmFjZTkxYjk0NjE2MmViNTYyMmZjZjNjZTZlMTU5NWUgbGVnYWN5LXRydW5rCisxOTY0MSBiNmE1MmU0MzgzNDQxZjVhMzMxNDAxYmJiZDIyYjNmOTlkZTEzMzM0IGxlZ2FjeS10cnVuaworMTk2NDIgZDQ0NmU0ZWM5YjdiMzk3NzBjZmY3ZmE5MjllNGY2OWIzMDQ2MThhNSBsZWdhY3ktdHJ1bmsKKzE5NjQzIDkwNTAxMWU4NzQwYzU0NTljZjhiYjFiODc5MjNhMDVmNGRkN2ViZjkgbGVnYWN5LXRydW5rCisxOTY0NCAxNGFmZmJkMDM3NTA2YzRkOThiYzk4MDc0MGUwMmEwNjU0NjFhOWE4IGxlZ2FjeS10cnVuaworMTk2NDUgYjIzNTE2MGYxMzQ2NzA4NTE5Y2UyNWY1MmExMDA4YmY2MzUxMDhkYiBsZWdhY3ktdHJ1bmsKKzE5NjQ2IGU0ZDliYTBhYzBiMmNhMTRjYjM0MThkMjc2Y2Q0N2NhNzBmY2Y3N2UgbGVnYWN5LXRydW5rCisxOTY0NyA2N2VkOGE2OTA1YzMzOWRhOGU1YTlhMTg5MWZjNjA2NWE0NGU1YmMzIGxlZ2FjeS10cnVuaworMTk2NDggMzgzOWYwYWExZTdjY2VjZThhMTIwODczMTNmNDkyZjM3NzllYjc0OSBsZWdhY3ktdHJ1bmsKKzE5NjQ5IGE0MTgyYzY3OWM2MWM0NDgyNTI0MGY2M2M0ZWE0MmRmZjUzYzM3YWMgbGVnYWN5LXRydW5rCisxOTY1MCAyOTE1ZWIwN2JkMjVhMzRiOWZlODRlZjNjNzkxMGE4MThlZDA2NDU5IGxlZ2FjeS10cnVuaworMTk2NTEgYjllNWMxMjIyMTJlZjM0Nzg2YjEwOWI1Mjg0Njk4MjExYjdjZjdkOCBsZWdhY3ktdHJ1bmsKKzE5NjUyIDY4YmQ5NmU0MjZlMzJiYjFiOTkyYmExMWJmMTAxMmFkZmU5YjRjZDQgbGVnYWN5LXRydW5rCisxOTY1MyBlYjI5OTI0YTMzNzBlMWZhODIwYWFiYjgyMmRhZWM1Njk1YzQ3M2MxIGxlZ2FjeS10cnVuaworMTk2NTQgYmY4ZDJiOTJlYTBlZjMyNTFjY2FiNmMzM2IwY2FjMTBjOTJiMDhkNiBsZWdhY3ktdHJ1bmsKKzE5NjU1IDVhMTIzMGRlNDM2YTg2MDU3ZjdmZDQ1ODI4MzIxZjYzMWU2MmM4NGQgbGVnYWN5LXRydW5rCisxOTY1NiA1ODY0YTljNThjODFjMjI4MWE2MTc4NTRkMTlkN2NlNGE5MTE2OWE1IGxlZ2FjeS10cnVuaworMTk2NTcgNGZlZWE5OWJlNzc3Zjk2MjdiNDBkODY5ODJhNzBiZjgyYWQ3Y2E2YyBsZWdhY3ktdHJ1bmsKKzE5NjU4IDYwZmQ5ZDQ1NDIwNmRhNTdlZjVmMjM5OTIyNzllMzZkNmFjMmUzZWQgbGVnYWN5LXRydW5rCisxOTY1OSA5OTc3ODA2Yjg2MTc0ZDk2ZGI3NzYxMzM4ZTY3YTRiYzc0MjQ1YzkwIGxlZ2FjeS10cnVuaworMTk2NjAgMjZkM2U4ZWFjZWRmYWRlZTZiOTA5YTVlMTRmNGRjNGE0MmU3NzYxMyBsZWdhY3ktdHJ1bmsKKzE5NjYxIDk1MTljYWQ2YmY5ZDRjNTNiNmIxODNlMzYwZDRkMjBhYzdmMGExODIgbGVnYWN5LXRydW5rCisxOTY2MiAwMGZlYTQxNzMwY2Y0M2M1Y2M4MTg4OWYyZDg3MjJkZDM1NTM0MGJmIGxlZ2FjeS10cnVuaworMTk2NjMgZTk5MWQ4ODQzYWI0N2U5MTZiOWM0YjRmNmEzYTkyZTgyMTRlYzYxZCBsZWdhY3ktdHJ1bmsKKzE5NjY0IDY3YmFkOWYyMGIyOWMxNzkzZWU5YWM3MWZjZmU5YmIyNTMzNzg3MWUgbGVnYWN5LXRydW5rCisxOTY2NSBhODlmNzgzYzEzM2E1MDI4ODhmZTcwZjMyZTdjMTQzMTU2OTYwNmRjIGxlZ2FjeS10cnVuaworMTk2NjYgZGFlMzllYmJjMDA0MWNjMTViZTJjZmI1Yjg2M2E3NjhlMTkzYmU1NCBsZWdhY3ktdHJ1bmsKKzE5NjY3IDdmOGY3YmViZDFmNjQ2NzY3OWY3MmVhMjk4YTM5MTFhZDE4ZmRmOWMgbGVnYWN5LXRydW5rCisxOTY2OCAyOWFhODMyYjg3ODc0Nzg2NmQ3OGY5ODAyZGNhZGZjMDY0ZjNmYmQ3IGxlZ2FjeS10cnVuaworMTk2NjkgYjgwMjQzZjdmOTdjYmU2YTc4NjQwNWRjODljNTlhMTg0OGVkZjhjOCBsZWdhY3ktdHJ1bmsKKzE5NjcwIGFjMTgwYzk4MjI5NTAwMWE3ZTQ2NjI1NDBjYjhlNDNiNWM2MTU0ZDYgbGVnYWN5LXRydW5rCisxOTY3MSAzYzIxNDJmMDc2YjQ2ZmUyYWIyYmQwNDY1Zjk1NWM0ZmRiNDdhYmE2IGxlZ2FjeS10cnVuaworMTk2NzIgMjU4ZGNhZmUyZDBiOGRjNmJjZWMxNmUyYTIzMmQ5MTg3N2EwMjY4ZSBsZWdhY3ktdHJ1bmsKKzE5NjczIDA4ZDkzNzEwN2ZlNmNjMjA5NWIxOGE2NTQ5M2M4ZGQyNGQ5MjRmNWQgbGVnYWN5LXRydW5rCisxOTY3NCBlMDA2MmU4OWQ4ZjQyN2E1ZmE4OGU1MGZlNTEzNWE2ZTkyYmZlZDBhIGxlZ2FjeS10cnVuaworMTk2NzUgMmM5MTg2ZTQwYjMwNzc4ZmQwNzAxYjE0YTczNDFiMmFhZjExNjNhYSBsZWdhY3ktdHJ1bmsKKzE5Njc2IGE4Njk1MDUxOTU4NjNjODdhZWYyMDM3MzJjZmRlZWVjMTNhZjUwNTcgbGVnYWN5LXRydW5rCisxOTY3NyA0NDQ1OGZlOTQ3ZGRiMDU1NDVjZjhhODQ2ZmU4YjI1NzhjYmI2NTljIGxlZ2FjeS10cnVuaworMTk2NzggODE1Njg3OWZlNjBkMWUyZGFiMzA3OTZiOTI0ODk4NmVkMzE5MjA0YSBsZWdhY3ktdHJ1bmsKKzE5Njc5IDgzODk1YjRjZTBiYmYxZWVmNWU0NzBmM2M2Y2RiZTM0NmQzZWZkN2EgbGVnYWN5LXRydW5rCisxOTY4MCBiMjU4NWQ4ZmRiOGJiZjQ0MjI1Y2Y3MmRmNjFkZjg5NTExNDNlYTM3IGxlZ2FjeS10cnVuaworMTk2ODEgNzRmZDE5NTljZjQ0ZWUyYjNmYzAyMTZkMDIzNzA2ZDE1YjM4ZmIyZCBsZWdhY3ktdHJ1bmsKKzE5NjgyIGFlN2Q3MjA3ZGE0ODgwMzZlMmY3MThmZGFhOGJlOWY3NmQ3OTg3ZDkgbGVnYWN5LXRydW5rCisxOTY4MyA4YmYwYzQ5ZmNlMTAxYWJhOTE3OTZiNGUwNDE4OGExMDgyNWVjMDMzIGxlZ2FjeS10cnVuaworMTk2ODQgNTBkOTE1OWVkYWFiNjc2YmJmZjJlZTc3NGUyYjI2ZTQzZjVmMzljOSBsZWdhY3ktdHJ1bmsKKzE5Njg1IDFkMWJmNjgxM2VlNTY5ODc5ZGM1MDc2OTMxOWY5YjNkY2U2YzgwYWQgbGVnYWN5LXRydW5rCisxOTY4NiA1ODBhZDY4NTQ0NWY1MTgzYTYxNjFhNWRjYzYyNDk0M2YzZTdhNTM3IGxlZ2FjeS10cnVuaworMTk2ODcgYzNmYjA0NGQ3ZTZmMWFjOGQ2MDYxOTYzYTdiYmFiNTUyMjhiODY3MCBsZWdhY3ktdHJ1bmsKKzE5Njg4IDRlYWRkZjQ3OGU5N2E0NjNiNzdhOTkxN2E3M2Y2YWEwZmEwOWU4ZjQgbGVnYWN5LXRydW5rCisxOTY4OSBiMmNmZjU3MDU3NzVlMjY5OTM5OGNkZGM3OTE2MTA1MTEzMTI2ZmEzIGxlZ2FjeS10cnVuaworMTk2OTAgNzY1ODAxZGUxNTEyMDgzZDZhNDk2MGMwYWJiY2QzZmVjNWU1OTBhMCBsZWdhY3ktdHJ1bmsKKzE5NjkxIGZmY2IzY2ZmOTQzOTRkMDUyMzI2MzE1MGE1NTI2NGZkMWZkMWYzMzAgbGVnYWN5LXRydW5rCisxOTY5MyBmZDJhODY5NzY5YjI0OWI4NzY3MzEzOWQ5ZTE2NGVlMTcyMDI4NTk0IGxlZ2FjeS10cnVuaworMTk2OTQgNTNlOGViZDExNjIwZDQ1YzA4YTcyODRkNzMxNTU4MjVkYmE0NjU0YyBsZWdhY3ktdHJ1bmsKKzE5Njk1IGY1NGJhZTg2YTJjNmJjYzYxNmJlMGNlMmVlN2M4MTFmNzBlN2NkOTQgbGVnYWN5LXRydW5rCisxOTY5NiBmNzk2YTg3NzExN2U3MTViMzQxZjFiYTdlMDBkYzA0MjRlMjAzZjNlIGxlZ2FjeS10cnVuaworMTk2OTcgMGYwZWZjMmQxMmYxNDNhNjg2ZWNlNzY2OGMzNWMxNzg1Mzk1YWVmNSBsZWdhY3ktdHJ1bmsKKzE5Njk4IGFjYmU3NGYzYTc4NmYyZjQ1NzljNmY3ODQzYzZjMmM3ZTM4ZDE2ZWMgbGVnYWN5LXRydW5rCisxOTY5OSBkNGEzMTVlNDA5NGM0ODcxZGY0MzNkMGY2ZjY2MWIyMWJiMDIwOWU2IGxlZ2FjeS10cnVuaworMTk3MDAgNTFjZjQ1MWZhYWU0NjAxOThmOTcwNDZjMGJmNTQwNTBiYzAxY2RlMCBsZWdhY3ktdHJ1bmsKKzE5NzAxIGE5NTY5MzQ5MWVjYWFmNzEyZGViNzg4NjcyZTdmYTBlY2MzZjI0NDUgbGVnYWN5LXRydW5rCisxOTcwMiBjZTQ3NDk4YTMxNTg1OTczYmE3ZDNjOTU1ZjMyNzk4MDRiZDk4YWMzIGxlZ2FjeS10cnVuaworMTk3MDMgM2IwNTIxMmMxNjE2MDI1NTcwMzhhYzg4ODBlNjRmOGIyZDBjNmNlMSBsZWdhY3ktdHJ1bmsKKzE5NzA0IDY3MzI5MDU2ODZkNDBlODFjYmYwODFkMjlkOGFlN2QzYWYwMWVlODggbGVnYWN5LXRydW5rCisxOTcwNSBmNTM3MGUxZTIzOTJlNmU0MmFkNDM5YTlkNjFhNTllMDVkMWQxY2Y1IGxlZ2FjeS10cnVuaworMTk3MDYgMjdmMDRkNzE0ZWNiYzUzNmNlN2FmZGYyM2VhZTFmZDI2YjVhM2UxOSBsZWdhY3ktdHJ1bmsKKzE5NzA3IGI0NjNhY2Q2ZGEyMjI5OWVkMWEwNzBmZThmMmJiYjdjY2YyOWVkMmEgbGVnYWN5LXRydW5rCisxOTcwOCBiYmRlYjZkNGRlYTE1MmZjMzZhNTE4YWEyOTZmOWNjN2YxZmQzMTIyIGxlZ2FjeS10cnVuaworMTk3MDkgNTJmZTM3N2YwN2YyY2UxNjBiMDMyNWYwYWVjMjI0MDU3MzZlOGY4ZCBsZWdhY3ktdHJ1bmsKKzE5NzEwIDU5MDJiNTc5NGExN2ViN2Y3MzBmZjM4NmYwMjAyY2NiNDNmM2Y5MzYgbGVnYWN5LXRydW5rCisxOTcxMSBmMjljNzY2ODY0Y2I1YTM4OGYzNDI3N2U1Yjk3Y2Y4ZWQyOGE2MDgxIGxlZ2FjeS10cnVuaworMTk3MTIgMGU2YTNkYTRmOTU2MTMwNTIxNjY1YWI2MGE4Y2NiYjFkOTg2ZmJhMyBsZWdhY3ktdHJ1bmsKKzE5NzEzIDA5ZjZjMTM3MjA1Njk5MzcwODg2ZWY2YzdjNjZmMWFjNzliNTY2NzggbGVnYWN5LXRydW5rCisxOTcxNCBlMWIxZTY4Y2JkOGMxNWI4MWNlOTIxZTRkZGY2ZmU4OGQwMzE0NjgzIGxlZ2FjeS10cnVuaworMTk3MTUgOTUwZmMyMjYxZGE0NjFhMTI4ODk5YzJlNGUwMWY5Yzc0ZDIxMzlhNiBsZWdhY3ktdHJ1bmsKKzE5NzE2IDNkMjk2OTBhMjRlODk1NTA2NGQwNzM5ZDdlMzIzY2QyNzA4ODUzNDEgbGVnYWN5LXRydW5rCisxOTcxNyA3NmE2ODRmZTNmN2ZjNWQ4MzkwZGEyNGEwMjM3ODdjYzg5MmFmOGUzIGxlZ2FjeS10cnVuaworMTk3MTggMzI2YTRkY2JjZDIyYTc2NmYzOTZlNDEwNGFjMTc3YWFmNzRmNWUwMiBsZWdhY3ktdHJ1bmsKKzE5NzE5IDgxNTZkZWIwZTYyZGU1ZTEyMTU5N2E4OTZhNWFiODI1MDU5ZGFkYzggbGVnYWN5LXRydW5rCisxOTcyMCAwOWRjZjVlYmNkODAzMmZjOWJlMzA3NGNjOTU3NTNhYTFmOWEzY2JmIGxlZ2FjeS10cnVuaworMTk3MjEgMmQyZWUzMGY0M2VhZGQ1ZGNkMmQ3YWMwODdhZWNkOThjMWU3NTAzNiBsZWdhY3ktdHJ1bmsKKzE5NzIyIDk1YTdjNTg5OGZhYTFkYTdhMGM0YjZkMzUzYTFmODAyOGZjNTk2NjAgbGVnYWN5LXRydW5rCisxOTcyMyA0ODk0YmEzZWRkMGE1MzQ0ZjRhMTlmMTJlMWYzMmY4ZGMxMWZlOTJiIGxlZ2FjeS10cnVuaworMTk3MjQgYTg3NzFhNTJhYmIzN2ZlMDdjOWM1ZWVjZTFlNWI4NWYyNTZjYzU1OSBsZWdhY3ktdHJ1bmsKKzE5NzI1IDJkNGRhNmNmZWU2MTgyOWY4M2I0ZDZkZDlkYjMyNzJhMDRjNjdkOWYgbGVnYWN5LXRydW5rCisxOTcyNiBlNWYyYWI4MTFlYzNkODE4YmQ0NjdjNjVjYTgzY2E2ZmRmMTBmOTg1IGxlZ2FjeS10cnVuaworMTk3MjcgODQ3ODQ0MjQ4YzZmOTI3NzI5NjhiZTk0YzlmMzAzNzlkMTM3NTE3YiBsZWdhY3ktdHJ1bmsKKzE5NzI4IDA1Nzg1YmRmMjg5Y2QwNjA4YTMxNTJjMWZkNWI5N2VkMWE2MmIwMmMgbGVnYWN5LXRydW5rCisxOTcyOSBiYzg5ZjExNjE2MGI5NzRhYzI2ODg4NTNhOTNkMWZkOThiZjY4MTY5IGxlZ2FjeS10cnVuaworMTk3MzAgZWM5MDgzYWMyNmRmN2RkYzFhN2JiYmY3YjdhYjQ3YWQyMzE0MGIzYyBsZWdhY3ktdHJ1bmsKKzE5NzMxIDI2Y2U2ZWZjOTc0NDI3OWFjNjdmYmMxYmIxOTY4NWRmOTRhYmExOWMgbGVnYWN5LXRydW5rCisxOTczMiBjNTU3ODA4MTVhNmU1YTM1ZDMzYWYwYTY2YjZjMDY0NDgwYzA1Y2EyIGxlZ2FjeS10cnVuaworMTk3MzMgYjBhYWY4Zjg1ZDEyOGUyNDBhNjJkODk0MTM3YWQxNmM2NmMzMTkzZCBsZWdhY3ktdHJ1bmsKKzE5NzM0IDhkN2Y3MmNjMmVjYzgxNDU0YzQ5MWQ2NjliYzAzYjg1OGE5YzI4NDAgbGVnYWN5LXRydW5rCisxOTczNSBjZDQwODVjZWUzMDkzYWE1ZjQxMDI5MmYzNjhhYWE2YWVmYjc4ZjcwIGxlZ2FjeS10cnVuaworMTk3MzYgOWZhMjAwOTgyNTgzM2M4MTg2MTg1NDVmNTZiZjNjN2Y2NWUyYmVmNCBsZWdhY3ktdHJ1bmsKKzE5NzM3IDc3YTU0NzAyOTlkYmU0ZDI3ZTQzYmFjNTE0NmRiYjdiYWJiNWQ5NDkgbGVnYWN5LXRydW5rCisxOTczOCAxM2NkYmZiNTkxYTQ3NDNhMTc1MGI5ZjM0YjEzYzRkNjAwY2Q5MTQwIGxlZ2FjeS10cnVuaworMTk3MzkgZDA1MmRkZGJmZDQ0NTBhMTE5MzVkMjAwMDc2NzllOGI1YWYyODUzZCBsZWdhY3ktdHJ1bmsKKzE5NzQwIDI1MTRmY2ZhMGYwODI1NGZmMzQ1Y2Y1ZDI0MjA5M2MzNDE1OWZjNjIgbGVnYWN5LXRydW5rCisxOTc0MSAzYTQxMWQ0MWVlYjRmZjA3MDRkMmViMmI0NWYxYmVlZjNjZmNkZTU1IGxlZ2FjeS10cnVuaworMTk3NDIgNzk3NmNmN2ZkMTk2ODNiNThhNDRlNGM2NDMxZmEyOTU2YTY5OGVhYSBsZWdhY3ktdHJ1bmsKKzE5NzQzIDdkYzY2ZDViMTAwZWVhZmYwOWM1MjRlODg2ZjQwYTE5N2U4ZTEwNmIgbGVnYWN5LXRydW5rCisxOTc0NCA0MTI2ODAzZTFhODVkY2FmZGRlYTFlYjZmNTg2NTcxOGRhN2QyY2JiIGxlZ2FjeS10cnVuaworMTk3NDUgZjM5OWU2YTg4ZjY1ODQ5NTgxNjIxYzc2MWUzODM2Zjk4YzQwYjMyNyBsZWdhY3ktdHJ1bmsKKzE5NzQ2IGQ2NzVkNzVhZjgzOTVlYjg0YWU4ZjMyYWIxY2VkODA5N2RlZTEzOWUgbGVnYWN5LXRydW5rCisxOTc0NyA1MjgwZTg0MzlkNTU2Mzg0Mjk0MDQ1NGJhMTdmN2Q0OWY5MGQyMjNhIGxlZ2FjeS10cnVuaworMTk3NDggOWQwMThhM2Q3OTQ2YWE3MWQxOTc1OTYwZTA2MGY3Yzk0MDVhNjQ3YiBsZWdhY3ktdHJ1bmsKKzE5NzQ5IDc5YmJmN2FkMGZjMTc5YjI2YzRkYTQzNmUwODIzYzEyNWVkYWMyMGIgbGVnYWN5LXRydW5rCisxOTc1MCAxMGI4NDA2MGI3ZjM5YzY3NWNmOGVkOWQ4NmIyYzc0NTVmM2ZkNmMyIGxlZ2FjeS10cnVuaworMTk3NTEgOGQ3NDg2YThkNjlhYzBiMWE1YmNjYzg5ZGVjMzA3ZTM2NmE5MWE3NSBsZWdhY3ktdHJ1bmsKKzE5NzUyIDMwYmE4ODM3NjRlYmI0ZTE5NTRmNjFhNzI5YzFkYzgzZGIyYjdhZjYgbGVnYWN5LXRydW5rCisxOTc1MyAxY2Y1MjUzNmMzODFlZDBkYzMxYjVjNmRhZWM2ZmZiNmIyNjU4YTJiIGxlZ2FjeS10cnVuaworMTk3NTQgYWJhZWE0NDNlMjhjMmZjYWI5NDE0YTQ3YTI2ZjE2NjY1OWIyYzZjNSBsZWdhY3ktdHJ1bmsKKzE5NzU1IGJkY2Q3OTg3MzkyNGNlNjQyYjBhYzNkYmIzMDk0NWNkOTY4NWY0OWQgbGVnYWN5LXRydW5rCisxOTc1NiA4NTk4MjkzODQ2NjNiMzZkOTBmOTRiOTBhODgxZTZkZmUzYTExOGEwIGxlZ2FjeS10cnVuaworMTk3NTcgYWQ3MzQzNzM3YWVlOWUxMmVlNzQ2MmU5YTJiYTZkMTg2N2MxZGI2ZSBsZWdhY3ktdHJ1bmsKKzE5NzU4IDdiNWI1NzU2YjJjYWQwZTFmMTRlMjMzOGFkYjBmZjI3ZWIyYmFhN2IgbGVnYWN5LXRydW5rCisxOTc1OSAxY2U3NTFmYTY3ZDgwNmVlN2I1NDkyNzBjYTZkZjkzNzI2NTk5MjAxIGxlZ2FjeS10cnVuaworMTk3NjAgZDNmNjQ2NDA0YTQzNTcyYTU2YjA0MWM3NTFkZTg3NmNiMGNlNmM3NCBsZWdhY3ktdHJ1bmsKKzE5NzYxIDY4Y2UzMjg2MTYyNmY4ZTY0MzM1NmZjOGU5YjFjMGY1YTNlMjBlMjUgbGVnYWN5LXRydW5rCisxOTc2MiAxNGRiZGUxZWNkZWFiOWMzMzY3NzU4MjA5NmRlNmM5MTAyMjMyMjJiIGxlZ2FjeS10cnVuaworMTk3NjMgZmNmYjQ0MmQ3YjM0ZTI5NjUzMDU5NGRmYzE0NjdmYWU2Y2RjNjc3MyBsZWdhY3ktdHJ1bmsKKzE5NzY0IDBmZWI2MzQ5MDA5MzVhYTZiMzc3NGEwNGNmOTNjNDRiNzU3ZmUxY2YgbGVnYWN5LXRydW5rCisxOTc2NSBmMjg3YzY4NGUwNGM0NWU2ODAxZTlhYjE5ZjY3ZjkyZTdkMjkxZDBjIGxlZ2FjeS10cnVuaworMTk3NjYgODA2YzZhZTIzMTAzMjQ3NTU1N2MwODc4NzY0NTA4OTA2ODEyNTcyYyBsZWdhY3ktdHJ1bmsKKzE5NzY3IGYyN2QzMjk5ZGYzOTA2MjA2YTllY2ZlZjBhOGVmMDljYTI3OWVmOWUgbGVnYWN5LXRydW5rCisxOTc2OCBmMWM4ZWE5MmVlODUyZWU0YTdhYmNmMTljODBkNzU2MzBiNGQ2NDdmIGxlZ2FjeS10cnVuaworMTk3NjkgYjNkNTA0YmRkOTc5ZmEzNmU0MGE2MTI0YjQwYWRkN2U2NDEyOTZiYyBsZWdhY3ktdHJ1bmsKKzE5NzcwIDhhZWNkYjIyMzQ4ODE3MzBhMWQ4MTE0NDhhYmUyMzYxN2U3YzdkN2EgbGVnYWN5LXRydW5rCisxOTc3MSBmYTg0ZjlmNDEwOTIzMTE2YjFjZDU3ODc3MWUwNTA4NGQ5ZTlkMWVkIGxlZ2FjeS10cnVuaworMTk3NzIgNzRhOWQwYTQyMzFhNWViMGExYjM4NjRiNmUxNDJmNWUwNmJmMWY0OCBsZWdhY3ktdHJ1bmsKKzE5NzczIGRjZWEwOTM4ODMzMmNhYjg1NzI5MzQzYTgzZjc1Mjc5N2JhZTA2ZTIgbGVnYWN5LXRydW5rCisxOTc3NCAzMjBmYTUwYTFhN2QyNTU2MTgzZDExODZlZTBmYTEwMGZiOTY0M2JlIGxlZ2FjeS10cnVuaworMTk3NzUgOGQxZTg0NGZiYjFhYjVhZjBjYjAxNzY5OTVhY2Q5NWVmOTZjMmQ3MSBsZWdhY3ktdHJ1bmsKKzE5Nzc2IDU3MmI2NTRiZjRlZDU0YjA3Y2UzMDZkZjM3MjI1MDBiOWVjMzQ2OGYgbGVnYWN5LXRydW5rCisxOTc3NyBmNTVmMzVkYzUzMjAxYTU0OWQ0Y2M4OTc5NjA4ZmFkMDNmOTU1ZTQ2IGxlZ2FjeS10cnVuaworMTk3NzggZTg2ODc1ZjA2OWIxNmUzNGQwOTZiMDM3M2I3YjQ4ZTg2NzcyNDQ4YiBsZWdhY3ktdHJ1bmsKKzE5Nzc5IDQxZjNmNGIyZmU0YTY3NjJhYjAxMDg1YmRkNzU5ZGE4ZmY2MTRlMWMgbGVnYWN5LXRydW5rCisxOTc4MCAwZjA3NzBhNzkzYWNkMmZiODViOTg5NGI5MjNjYTFkNmMxMTE5MTdmIGxlZ2FjeS10cnVuaworMTk3ODEgYjczMjQ5YzhkZTE4MDE2OTNkMzY0ZDk5MTMyNmMwMjlkNDRmMTFlOCBsZWdhY3ktdHJ1bmsKKzE5NzgyIGYxZDQ1ZDZjMTJhMjhjMjJhMzlhOGFjMTRmYzczMDg5YmMxNjExYTkgbGVnYWN5LXRydW5rCisxOTc4MyA2YzkzZjE4ZDMyMzM0NWVhZjZlYjdmMzc0NGQ4ZmQxN2U4ZTVmY2QzIGxlZ2FjeS10cnVuaworMTk3ODQgZmE4OTA2ZWNkYjcwMjQ1OTUwZDhlZmQ3M2UzYTYwZTU2NmZkODQ1ZCBsZWdhY3ktdHJ1bmsKKzE5Nzg1IDIwM2FkNmYzZWY4Y2UxMmUyYmZhMTkyYmNiZGYzOTlhOTlhNmU0Y2MgbGVnYWN5LXRydW5rCisxOTc4NiBkYTYzOGM0ODRkMDhjNjNkNjU2NTZlYTU5OGU1ZGFjY2EwYjAzMDk3IGxlZ2FjeS10cnVuaworMTk3ODcgYTQ2YTEzMjAxZWViODg0NGMxMzkyZDcxMmYyMGU2NDVhYTNlMWY5MCBsZWdhY3ktdHJ1bmsKKzE5Nzg4IGYwN2ZhN2Y1MjYyYTkyZmRjNDUzZTdiZDhhNmM2MDRkZjg1MzFhMzcgbGVnYWN5LXRydW5rCisxOTc4OSBmMjkwMjY1OTM3NGFjODhlODI0YjJiMmExYmI0ODc1ZjdjNjk2YzFiIGxlZ2FjeS10cnVuaworMTk3OTAgNDkzNDEwMjIyNzE5MmVjYjY3ZTIyYzdjYTc5YzczNTE2NDIwNjBmZSBsZWdhY3ktdHJ1bmsKKzE5NzkxIGIwNDU2ZDNhMGYxZjFkM2VjNjMyZGYxNmIwYjNhZWIwZmRkODkzMzkgbGVnYWN5LXRydW5rCisxOTc5MiBiYjI1ZjJiN2JkYWUwM2I4YzQxNjFmZWZhMzdmMGQ5NmE4YzA1NTM4IGxlZ2FjeS10cnVuaworMTk3OTMgNmQ1OTgxN2NmNzkyOGViZWI1Mzk2YmU0OWY0YmZkMTE2YjM4ZWM0ZSBsZWdhY3ktdHJ1bmsKKzE5Nzk0IDQ5MWZiNDliNDZlNmZkZWQ5NjU4NTgyYTliNGY4OWVhNWZjZGUyY2YgbGVnYWN5LXRydW5rCisxOTc5NSAwMDQ5ODVhNWFkNWE4MDYzYTU5YTg1MTgwOThkNTk3MjI5MTY5NjliIGxlZ2FjeS10cnVuaworMTk3OTYgNDE1MjA1YjJjZGIyZGRjZjI1MWFmOGE0NGY5NmJmNDk4NzE5OGY1NiBsZWdhY3ktdHJ1bmsKKzE5Nzk3IGI1ZGIyM2M3YTgwNGExOTJiYWJkYjBjZmVhZjJlYzJjYzc5OTQwYzAgbGVnYWN5LXRydW5rCisxOTc5OCA1YWI0ZGE2YWQ0ZmM3YmM4ODQwYzZiZGY0NmI3NmFkNGVjNjlkYjliIGxlZ2FjeS10cnVuaworMTk3OTkgYjBhOTgyYzkxYWYwMTMzZjM2NWFkNGYyNjBhYjY0Njc1ODgzYmQzMiBsZWdhY3ktdHJ1bmsKKzE5ODAwIGZhYTdhYWViMDIxMGRmOTE4YzBjZjJiOGVhMTRlMzNhNjNhM2VmNzkgbGVnYWN5LXRydW5rCisxOTgwMSAzYzY1YmFiZjMyMmZiM2M1ZmFkMzZkNzJjYTE2ODg2ZjMyOGI5NGQ3IGxlZ2FjeS10cnVuaworMTk4MDIgMjU0OGQxYTcwMTgwMDJmNWE2NjYxZWRjZjQyYmYyYjJjOTJkZTIwNSBsZWdhY3ktdHJ1bmsKKzE5ODAzIDAyZTA5N2Y3MmQ0N2IwYTNiNWM5MzUyODQ2YTlkNWZhZDYwM2I4M2QgbGVnYWN5LXRydW5rCisxOTgwNCAzYTJlOGEzZWRlNDgxOTM5NDY2NTdlNzhjM2U0NDBiNzdiOTZkNGYxIGxlZ2FjeS10cnVuaworMTk4MDUgOWM5MjFhOGVkM2E3MjNiODRkYmY5ZDhmOTE3Njg4MjlhZGI5ZGRmZiBsZWdhY3ktdHJ1bmsKKzE5ODA2IDUyYTNmODI2MTdjNDBjN2U0ZmUxZjFmNWVmOWM5ODM2NzcyNTA0ZjQgbGVnYWN5LXRydW5rCisxOTgwNyBhYmM4YzZjMDI1Y2U4MzcxMTk2NDcyOWJlYTZkZjJmOThlMWRiMTY4IGxlZ2FjeS10cnVuaworMTk4MDggYjA0NmEzMWFmMmUwNmU4M2ExMzI3M2U3NzA4ZmI2MzVhNDYxNDEyZiBsZWdhY3ktdHJ1bmsKKzE5ODA5IGViNGVkOWYyM2QyMDY5OGU1MWE2MTVjNmY4ZGNlNGYwZmFmOTFkNmMgbGVnYWN5LXRydW5rCisxOTgxMCA5NDY4M2M4NWVjNzZlNmQxNjA0YzA2ODRhZmQwZjUzN2Q3YzNmZDNjIGxlZ2FjeS10cnVuaworMTk4MTEgOGM2NGRkYTFkMjZmMzBkZWFhM2YwZTZlNjM4M2E3ZTdjZmI2N2Y0MCBsZWdhY3ktdHJ1bmsKKzE5ODEyIGI4MjU5YzdmZjQ5YzliZGViNThkNjI2YWFhZTViMzVkN2E0NzkwN2UgbGVnYWN5LXRydW5rCisxOTgxMyA1ZDdlMGVhMzE4MTgwY2ZiMDRiZTk3MTg3N2NiN2U2ZTgyMWZlN2IzIGxlZ2FjeS10cnVuaworMTk4MTQgMDlhZWM2NjhkZjNhZTI4YzI2ZmUzZGE4YWI0NWJiNTU3MGFmMDQ5MiBsZWdhY3ktdHJ1bmsKKzE5ODE1IGMyOGRmZTVmODdhNzNiZTE5MDhjODdlMTk5MWU2MmE3YTQ1ZWJlNmIgbGVnYWN5LXRydW5rCisxOTgxNiBhMDE1YWVkM2ExYWMxMDk4ZmUzNGU0NTkxNjkxMWMwNjRmNGQzNTQyIGxlZ2FjeS10cnVuaworMTk4MTcgYWY4MTBmMDg0MjViZWYyNTQ4YjVmZmI1MDg3N2FhODE2MjAzYTU1ZiBsZWdhY3ktdHJ1bmsKKzE5ODE4IGU5NDQ1YzUxZmYyOWY2OTIzMTY2NzA1ZWMyNjBhM2RmZjQ0NmUyMTUgbGVnYWN5LXRydW5rCisxOTgxOSA0YmFhNWE5NTU1MzJhZTU1YTg4MWQ1Y2I0NTA0NjEzMjQ5ZGM4MTg1IGxlZ2FjeS10cnVuaworMTk4MjAgOGE0Njk2ZDdmNzRjMGMyMWU2ZWZmZmM2MzgyYmQxNzlkOWZmNTMwNiBsZWdhY3ktdHJ1bmsKKzE5ODIxIDMxZTMwMmU5NGRhODgxYjJkZTNiN2RhODJiOGM3NzcyZmQyNTRmMDEgbGVnYWN5LXRydW5rCisxOTgyMiBiMjUxMzFiYzZlYzdjODgyNTQ3MTUzOTk5ZThkZWE0ZWY1NzA5ZGUwIGxlZ2FjeS10cnVuaworMTk4MjMgZmFhNTJmMzg0YWY2NTI0OGRiNGJjMjYyZmIyMDczYTE4MzMxMzgxNSBsZWdhY3ktdHJ1bmsKKzE5ODI0IDA5YmExNWVlMTk2MWJhMzM1N2RhOTE5NzJjMjRlNjE1YTM2ZDQ2ODIgbGVnYWN5LXRydW5rCisxOTgyNSBiNmMwY2ZiMWVmZWFjY2M2Njk1YjY2MzViZjZhMDIyYjFlMWY1OTg2IGxlZ2FjeS10cnVuaworMTk4MjYgZGZlYjNhZTY5MmMxMTE5ZWQ3MDkxNDA5MDMyMDBiNDM1Mzg2OWM3ZSBsZWdhY3ktdHJ1bmsKKzE5ODI3IDgzMmU0MDkwOWVmNDg0ZjRhZGYxMTA4ODk5OGJjOTM2ZjgwYjczNzcgbGVnYWN5LXRydW5rCisxOTgyOCA5ZmQyMGNhZTdiNzY2NzU0YzU2YzdiMjQ4NDJlZmU3OGM1NDUwNTQ5IGxlZ2FjeS10cnVuaworMTk4MjkgYzdjNTM1MzYxNDY3ZDQ5MDFkMTk1YmI5ZTBmOTIyZDY4Y2Q3NzdiOSBsZWdhY3ktdHJ1bmsKKzE5ODMwIGFjZDUwNjA4NDcyN2U3MzRkODdiMzAyY2NmYjZmNmNmOGZmZDE5MGUgbGVnYWN5LXRydW5rCisxOTgzMSBhMWIzNDQ2YzcyMGYxYTRmZjc1OGUyZTE0MWEwZjAzZmI3ODNhZThmIGxlZ2FjeS10cnVuaworMTk4MzIgY2Q2ZTRiYzk5Mjk1Yjg1NWZmNDc1YThjN2YxOGVmNzEyODE1YTg1MSBsZWdhY3ktdHJ1bmsKKzE5ODMzIGU1M2IzMjg0NTIyNGU3OTMxOTUyMTZkYTg2NmI2NGFmYzViNDg1ZWMgbGVnYWN5LXRydW5rCisxOTgzNCA5MTIzMWJiYjM4NDJmNDc2ZjA4YzZlM2Q4YWJmMGUwYTg1MGUwOTQ1IGxlZ2FjeS10cnVuaworMTk4MzUgYjgzMjBhMjZjMDY1NzZkNzM4YTVjMDQ0ZGEzZjQ4YWYwYTYxZDMyMSBsZWdhY3ktdHJ1bmsKKzE5ODM2IDBkNGU4MDZjNDJjY2JkM2VjMmJhMzkzMzU4ZWNmYWM5OGNhODllNTkgbGVnYWN5LXRydW5rCisxOTgzNyA2MDJlYjA0NmIzZTdkMzQ0NDc5NzIyMTE3YzFlODEwMThkZjMyNDI4IGxlZ2FjeS10cnVuaworMTk4MzggMmMyOTBkNGMzYjM4MmY3YTg3ZmI1ODYzY2Q0ZjRhNWYyMWQ4NWZkOCBsZWdhY3ktdHJ1bmsKKzE5ODM5IDZmNDJjMWQ1NWU2YWYwNjg0MDFmMWE0NGUwZjUzOTQwODEwYzllMTQgbGVnYWN5LXRydW5rCisxOTg0MCBlYzI5ODk1ZWU0MGNmZDI2MTFmOWY1NGE3MDQyNzNlNmEyNjMyMjAwIGxlZ2FjeS10cnVuaworMTk4NDEgMzhlMTdhMDg5NDkyOTA2NGYyNzU5ODAxY2RmZjczZDA1MTMzNDY4MyBsZWdhY3ktdHJ1bmsKKzE5ODQyIDZiYmUyNjhmOGFkODQ5MThjZjRhYWJiNzI3MjcwMDE4YTM0N2IzN2YgbGVnYWN5LXRydW5rCisxOTg0MiBkMGM4MzBkYjVlNjhlZGQ0YWFhMzQwMTIxNmU2MTBjOWZmMTQ1ODI2IGxlZ2FjeS10cnVuaworMTk4NDQgOWE5ZWFlY2YwZmQ4MjkyNmJkMjMwMGU2MWViOWQyY2JlY2Q0OTk3MCBsZWdhY3ktdHJ1bmsKKzE5ODQ1IDcyM2NmNWUzNzhlNTdkYmQyZmFlZDg3YzdiN2IxZDQ1YzU5Njk2ZmMgbGVnYWN5LXRydW5rCisxOTg0NiA2NDUzMmJhNWRjZWQ1ZGZmM2U1YzUyODk1Y2QyZmYzZjVjODI4ZDFkIGxlZ2FjeS10cnVuaworMTk4NDcgYjgzYTNiNzgzMTRlYjg5MzE5OTNhNWVmY2RjYzI1OGZjYWJmMmRmNiBsZWdhY3ktdHJ1bmsKKzE5ODQ4IGQ4ODhkYzdiZWEzMmViZjUzMTgyNjU5YmQ4YzQ2MWZlMjYwYWViMmMgbGVnYWN5LXRydW5rCisxOTg0OSAyZGZlZTMzM2E2NTEwMDYzNzgwMjZkZmE2YjUzMzg3ODMxOWQwNGM2IGxlZ2FjeS10cnVuaworMTk4NTAgYTc5ZWJiYTY0NjZhNjM3YmYzNTlmYjgxNmIzYmU2MWY5NTcxNTc1NyBsZWdhY3ktdHJ1bmsKKzE5ODUxIGU2YzViYzViZWFiM2EwN2M3MWE0NWNlM2U0MGJmZDZhMGUxMDYzZTYgbGVnYWN5LXRydW5rCisxOTg1MiAwYjRjNTdhMjU5NzdlZGE3YTk3NTYxZWMxYzQwMTZlMmNkMWM5OWM2IGxlZ2FjeS10cnVuaworMTk4NTMgZDVlNTNjZjlkZTdjMzMwOTM2MmY0YzdkZTA2NzUxNzUxNzcyMTJhNiBsZWdhY3ktdHJ1bmsKKzE5ODU0IDJiOTM1NGY0ODUyZmFhYjA1ZmQ4MzczYzIwYTYzZmY4OTNkYjk0NjggbGVnYWN5LXRydW5rCisxOTg1NSBjMWUxOTQ5ZjM5ZmVhMjE1MmU1YmZmOGExZWFhOTBiNzNlY2EzMzljIGxlZ2FjeS10cnVuaworMTk4NTYgNjcwMmMwZGYxNmI2NjhhYTAzZGU3NmY4NGQzZmFjOGI1MWUxYTVlYiBsZWdhY3ktdHJ1bmsKKzE5ODU3IGM3OWRhYjY1MmVhODQ0MTNjOGMzNGI3NWY5MWQ2OGZhM2FjZDZjNjAgbGVnYWN5LXRydW5rCisxOTg1OCBkNmVjZTdjM2IzNWVhZjZhNWU5ZDc4ODk2MGZiZmY2NTM3N2RkOTkyIGxlZ2FjeS10cnVuaworMTk4NTkgZjVjYjZkNjZhOTc3YmRlMzMwODc0NGMwMGQxMjE2MjcyOTAyNTZlYiBsZWdhY3ktdHJ1bmsKKzE5ODYwIDFhNWEwM2UyZGE3Mzk2OWUyMjY1NWZlY2Q2ZTBjNTNkYThmNDM4MWMgbGVnYWN5LXRydW5rCisxOTg2MSBjNWE0MTdlOGQ4NGM4MzYzNzRhMjkwYzFmMDg3ZGVmODJiOTFjYzRmIGxlZ2FjeS10cnVuaworMTk4NjIgNjFjOWZhOTRjZTlkOWE0YWQ5YTE4MGNhNTg2YmU0OWMwZGQxMDFiMSBsZWdhY3ktdHJ1bmsKKzE5ODYzIDFjOTViNmIwNmFlMzFkMjdhNWFiNDE1ODY5NTJhZDA3OWE2NjgzMGQgbGVnYWN5LXRydW5rCisxOTg2NCA0MTUyODU1ZWY5YThiNjM1YTg0MTAxMGRmZTM0OTU3YWY1ZTExZmQ4IGxlZ2FjeS10cnVuaworMTk4NjUgYTk3NWYyYzE1NGMwNjA0NTk5OTEzYjYzY2UxZjFhMTFkNzZlYWQ1OCBsZWdhY3ktdHJ1bmsKKzE5ODY2IDdjN2NjZmI1ZGIzZWYxMzc1YmM2NzA3ZDhiN2ZlNmMyY2MzMjRiNzYgbGVnYWN5LXRydW5rCisxOTg2NyAxZGRjNzBkZDFkMWJiYWQwMzE5ODhiYzM1MzYxNjIxNDdlODAxMTZjIGxlZ2FjeS10cnVuaworMTk4NjggODYzMTg3MzNmZTcwOTM1OWZhNzE5OWNkYTZiZjExYWU2NDBmNGQxZSBsZWdhY3ktdHJ1bmsKKzE5ODY5IDQ1OWM4ZWYwYTAxMDM1OTgzNDljMDUzM2RjYzVmZDU2MzI5NGZkNDYgbGVnYWN5LXRydW5rCisxOTg3MCA5MTA0ZWQzOGFjMDUxYzlkNTA5MWFkYzJkMTk5YmU5NGY1NzcwNWFkIGxlZ2FjeS10cnVuaworMTk4NzEgNDFiOTI0OWU0ZDQ4NjNiZDVhYTJiYWM3NjJhMzU4NzkxNWIzY2ExMCBsZWdhY3ktdHJ1bmsKKzE5ODcyIDg2ZmQ3MjNmMjkyODZhMmMzZmQ3MzY3Mzc3ZjcwN2JmODg1NTIxNmYgbGVnYWN5LXRydW5rCisxOTg3MyA0ZjlkYjgzNDgyNWNhYTBjM2ZkOGIxNmVkNjdmYjc5YWNlOTkyMTUyIGxlZ2FjeS10cnVuaworMTk4NzQgZWVlN2QwYzVhZTU5MmFmNGRlOTUwZmI3MmIzNjIwOTRjMThiYTUyMyBsZWdhY3ktdHJ1bmsKKzE5ODc1IGU1OWVkYTUyNWZjMWU3YjUyYjc0NWViM2Y4ZjBhMGZjZGMwYmNkN2MgbGVnYWN5LXRydW5rCisxOTg3NiAyZGMzY2ExZDg5MGM3NzMxN2U2MzRjZGI2NTVhMDMzYzE5YTE0NDc1IGxlZ2FjeS10cnVuaworMTk4NzcgZjNmYjA1YmZlZWViMTM1YzZlOTI2NmY2MTBiYmUyOTY3YTI1ZDI3OCBsZWdhY3ktdHJ1bmsKKzE5ODc4IDUzNGE5M2Q4MmVkY2ExYWRmYjBlOGUwY2U2NmE4MDE5ZDYyNzMwMzggbGVnYWN5LXRydW5rCisxOTg3OSBiN2IwNDhkYTE2NzM1ZjA0YzE2MGMxZDYxMjE4MjJhYjZhMTVjNzI4IGxlZ2FjeS10cnVuaworMTk4ODAgNTQ4NzE2ZTJmMWYxM2MzOGI4YjVmYWQ4MmFlMDBmODM4ZTAzNjQ3MCBsZWdhY3ktdHJ1bmsKKzE5ODgxIDNiNDk0YzVjNjIzNGRlYWQxMWEzNWI4Njc2MTM5ODI0ZDQzYzhiNjkgbGVnYWN5LXRydW5rCisxOTg4MyA0YzE3Y2IyYzYyMWU5YmQwOWFiYjdiYjIwOTA2NjYxZGU5YTBhMmU4IGxlZ2FjeS10cnVuaworMTk4ODQgYTFkZDBiMDcwOWQyMDYzZmYzZmY2Y2U3ZDUwN2FiMDU1OTI0NmNhYyBsZWdhY3ktdHJ1bmsKKzE5ODg1IDk5ZGU0YmYyYjllNTUxOTNiMjgwYTcwY2E5ZDA5YjJlZTBhMzJlZmQgbGVnYWN5LXRydW5rCisxOTg4NiBkNTZkNzdmOTM3M2JkZWY5OWJiM2JmZjgxMDlkM2ZmYjIyMTAzOWUwIGxlZ2FjeS10cnVuaworMTk4ODcgZGI1NTYwNDM1M2IzYTJhNGRhMmM5MzZjMjE3YTYzNjZhOTgxNjU2OCBsZWdhY3ktdHJ1bmsKKzE5ODg4IDhlYWY3NGExMTFlYmQ5MjA1OTgzYWU4MTJhNzExOTMzODAxY2Y3NDYgbGVnYWN5LXRydW5rCisxOTg4OSBkMTVhY2UzMjExMDI2NmY2ZTNkNTAwYmE5OGI0ZjAyOTk1OWYyNmRmIGxlZ2FjeS10cnVuaworMTk4OTAgNmJkZjU2M2M3NjNiM2E0ZDAzMzc3MGM5N2E2YTUxNWEzYTkzZGY2NyBsZWdhY3ktdHJ1bmsKKzE5ODkxIDNjNjUwZDljMzhlNzRlZWFjM2ZlNDBmN2JmYzY3ZjgyN2U0NWM0OTQgbGVnYWN5LXRydW5rCisxOTg5MiAxOWMyZjUwZTUzOTU3MWM0ZWY5ZGE1NzJjNjg2NjkxYjY1NjZjMTViIGxlZ2FjeS10cnVuaworMTk4OTMgM2Y1YTU0YThhMWZiNTA1ODk2N2EzZjBiMGRkZmQ3ODA5YWFhYWM0OCBsZWdhY3ktdHJ1bmsKKzE5ODk0IDdhMzZmNjIwMWM5NDAwNzJkMmYzNjFhY2I4MDJhOWM0NGJiY2I0ZjQgbGVnYWN5LXRydW5rCisxOTg5NSA4OTU0NmJkZGMyMmNjMGRlZWYxYjRkYzY2YzI2NDAyMGM5ZTM0MjNkIGxlZ2FjeS10cnVuaworMTk4OTYgOTUzYzUwZjEyMTg0YWFlMmM0MDIyYjRkYmJkMjY3NGI0NGUxZTU0ZCBsZWdhY3ktdHJ1bmsKKzE5ODk3IGYwZWZkY2QyNDUxMmZiOGQ0YjRiNGYwZTA2MDMwNzc5MGFjNGZhYTIgbGVnYWN5LXRydW5rCisxOTg5OCBjZDdhYzRkOWFkZDAyMDc5YTI4Yjk3Mjg2NWJmN2RiOTM4NTkyYTRmIGxlZ2FjeS10cnVuaworMTk4OTkgZTIxZDRjMjA1NjVkMDBjYTQyNDczMzQ0YTUyOTg0YTM3ZDA2ZWU2YyBsZWdhY3ktdHJ1bmsKKzE5OTAwIDNjZmJiY2JmNzEzNGQxMTdiODIxMzgwZmIyYjU1NmRiYTlkZWNhNTMgbGVnYWN5LXRydW5rCisxOTkwMSA5NzFmZjZiNThlZGJmYjdlNjZmYjUxNGVlMjgxNDgxOWM4YzJlMGYzIGxlZ2FjeS10cnVuaworMTk5MDIgZjQxNDZjYTBmMjkyMWUyMGI0ZDc0MmM1OGY3MzFmMTgxMjgwODUwMCBsZWdhY3ktdHJ1bmsKKzE5OTAzIDJhODAxOTFkMTIwMzBlODM5ODFiZDA3OWEwM2JiYjUyZjEzNmZlMzEgbGVnYWN5LXRydW5rCisxOTkwNCA1MWM2YTJjYjAzZDFiNDE5ZTFkNGE2YTdhMzFhMzhiOTMzMGNjODQxIGxlZ2FjeS10cnVuaworMTk5MDUgNjVhNjM4YTI0ZjdlOTU0ZjQ4MDc3YmJlZDM4NTcwNzRiNjMxYzk3YSBsZWdhY3ktdHJ1bmsKKzE5OTA2IDNlYzUwMDQwM2YwMTBkOGVmZDU0MzA3MWNlZWVhMzlkMWQwMjdjNTggbGVnYWN5LXRydW5rCisxOTkwNyBiNDBhYjMxMDU1MjFmMTk0NWNkZGI3NWM5NmNhYWM1MzMxMzMyOTFjIGxlZ2FjeS10cnVuaworMTk5MDggMWU1OGQ3ODJjMDlhYzlmM2ZjMTM1Yjk1NDBjM2M3NWNkOGM1OWI5MyBpdGVyLWJyYW5jaAorMTk5MDkgZDU4MTFhZjhhY2YzZGQ0ZTMyOGJkYmQxNmI3MjgxYzdkYWFmODQ0OSBsZWdhY3ktdHJ1bmsKKzE5OTEwIDUzM2NjOTA3ZWRiZDJjYjYxMzc5ZGQ3NTA0MGYwNWEwODcyNTBiMzAgbGVnYWN5LXRydW5rCisxOTkxMSBiYTgxZDc5ZGMzYTMxZGFmNTcwMWY3ZmUyNGYyYWZlZTM5YTQ5NGQ1IGxlZ2FjeS10cnVuaworMTk5MTIgN2UxZTY3MjU1MDllNmM1OTcxYzllOTRkODJlNGRjZjc5NDJkNDdkNCBsZWdhY3ktdHJ1bmsKKzE5OTEzIGFkNzQxNzQ1Y2I2YzA5NDE2MjZmY2E1NDA0YjMyYWVlYTQyYmNhNWUgbGVnYWN5LXRydW5rCisxOTkxNCA4YTM0ODMwODMxNmQ1NDRmYjA2ODFlYzQ5NDhhZDgxMzJkMDZjMjdlIGl0ZXItYnJhbmNoCisxOTkxNSA0MjBhMDc4MWJiOTJmN2M2MDExYzdlODhhNjgwMjFjYzFmNjU0NGNmIGxlZ2FjeS10cnVuaworMTk5MTYgYzFlZGIxNGYwNDNiYmI3MzJhMmVkMjQ3MWMwNjllYWJlZTc0MmNmYiBpdGVyLWJyYW5jaAorMTk5MTcgNDBhZDBhMDc2MWQyNGZhNjU0YjAxNWJlZDg3YjE0MGQ3YzZhZjIyOCBpdGVyLWJyYW5jaAorMTk5MTggZjM5NGFmOGM1ODBmMDU1MWU0NjA5M2FhZDJkNDk1OWE0N2U2OTBjMyBpdGVyLWJyYW5jaAorMTk5MTkgNjJmNzRjMjU5NzYyZGZlNWU1ZWQwNDgzYmNkMjBiNjRhOTIxMWQ3MyBpdGVyLWJyYW5jaAorMTk5MjAgM2Y1NTg3YzI4YTUwZjkxM2E3YzBkMDVjYmVkZGQyODhlMjhlZDY3YiBpdGVyLWJyYW5jaAorMTk5MjEgZjRkNDk4YTlkOTg5MDNmYmMxNjgxMDAyZGUxY2UyOGJmMDEwYmUyNyBpdGVyLWJyYW5jaAorMTk5MjIgNTI3OTdiNGIzNzViYzk0MjZjZDFiMDc0MmVhYmRkMmVlMzk1ZDM4MyBpdGVyLWJyYW5jaAorMTk5MjMgZDI3Zjg0NGY2Y2ZlNTYyZTI3M2E1OGUwOTk2NDhkY2UxNjZmZmY1ZCBpdGVyLWJyYW5jaAorMTk5MjQgOThhMmJiOTA1MjBkNmNmNWUyODMwODg3NDhiYjUxZmI4NWQwMjhmMSBpdGVyLWJyYW5jaAorMTk5MjUgYWZiMzNmZWYxNGNiOGUzNmU0Y2Y0YmE4ODE4NGYwNTFlMmY2YThhZSBpdGVyLWJyYW5jaAorMTk5MjYgM2E4NjY2ZTEyOWFkZjllYjZlMGM2YjA0OGQ3YTRlYWJiNDE3OTFjZSBpdGVyLWJyYW5jaAorMTk5MjcgMjIwYjYyNzM4ZDc0MjgxMzM5MDJjNDNlZDJmNTAwYWY2MTVmOGY2MyBsZWdhY3ktdHJ1bmsKKzE5OTI4IDVkNjhhZmM1MjI3YzkxYjFiZjNkZjJhYTY5OGMxOTIxNTExODE2NWQgbGVnYWN5LXRydW5rCisxOTkyOSAxNzJkMmEyODE2YmZhM2EwYWZlYjEyNmYwYmUwMzU3ZjQyODk0NTEyIGl0ZXItYnJhbmNoCisxOTkzMCAwOTViODBkMmU3ODVkOWY5MjBjOWViMjQ0ZDJjNzJmNjllZjNlODJjIGxlZ2FjeS10cnVuaworMTk5MzEgMmVkN2M1ODk0M2U2MTEyYWYyNWY5YmFhN2RjY2Y4NGE3MWU4ZThjNCBpdGVyLWJyYW5jaAorMTk5MzIgYzU3YTFiNjc4MWIwNGZiNDUxN2QzMWVhOTg3YTZhZjMwNjg3YzQ5NyBpdGVyLWJyYW5jaAorMTk5MzMgN2JiMTI1NmI1MDZkYjQ2NGRlOGFjOTk0NGNmYmI0YjExZjY1N2IyNSBsZWdhY3ktdHJ1bmsKKzE5OTM0IDMzNzVhMmE5OGU1NjZmZDEzZTQzYzJiYmY2OWJmODM3YWRjZDE1ZGQgbGVnYWN5LXRydW5rCisxOTkzNSBlYjQzNjZiM2UzOTFhYTkwYzNjODM3MTM1NTg4OTBjYTUzOTVlMTFjIGxlZ2FjeS10cnVuaworMTk5MzYgNmNhNzJkNzE1MzZlMGM3ZjFkZWViODRmNjc4NTcxODNkNDEwYzkzNSBsZWdhY3ktdHJ1bmsKKzE5OTM3IGZmNzVjMzgyZjBkMzJlMGY3MmQzOTAzZGRiMWE4Njk2ZTE0M2Q1MDIgbGVnYWN5LXRydW5rCisxOTkzOCAxZjcwMGE3MjA2YjJmYzQ0ZmIzYTcyZWMxZDk0YjE2MjBjZGFhMDEwIGxlZ2FjeS10cnVuaworMTk5MzkgNWU2YWI5MzliZGJjYzRkYTZjNGVkZDA0Yjk5NzlmYzllOGM3NzA5MSBsZWdhY3ktdHJ1bmsKKzE5OTQwIGJkNDBiMTNmYTVhYmZhYjkzZGE0YTM1NWE2ODUzYWZlMTA2YjM5YmUgbGVnYWN5LXRydW5rCisxOTk0MSA3ZWI1YTZlOGM5OGQ0NTBjY2JkMzhiMDlkY2FmNjc4NWQwNzk4MTZhIGxlZ2FjeS10cnVuaworMTk5NDIgN2E0MTc1ZTEwNjI2Y2Y3NDk4YzM5MjhkNDExZTU1OGY4OTczNTEzNCBsZWdhY3ktdHJ1bmsKKzE5OTQzIGQ1OGU5M2RhZmI5OGMyZmRkZGY1MDUxZWYzNjgzYTZkYTA3MTNjNjIgbGVnYWN5LXRydW5rCisxOTk0NCA0ZTZmMTRlNzU1N2U5OTAwNTQ3NmM0YTA5MGJmZjEwODFkNDJkZDNjIGxlZ2FjeS10cnVuaworMTk5NDYgOTBlNDA2NGNhMDQ1ZWNlOGQxYTk4NTAyZDgyYzdmMDA2ZGVkNGVkZSByZWxlYXNlMjAtbWFpbnQKKzE5OTQ3IDQxNWExOWJiMTY3NWM0Nzk0YzE2OGM2NGViOGQ0MjUyZGJmZjUxYTggcmVsZWFzZTIwLW1haW50CisxOTk0OCA3NDMyOTZjZTA1MmIxODdhYTA3NDMwYWZkZWE1NDYwNjhjOTNhNjgwIGxlZ2FjeS10cnVuaworMTk5NDkgMTRiN2E3YjhkNThkYmJmMmE0ZGUyZGJiMTg0ZjYyMWU4NWI3MjQ5MiBsZWdhY3ktdHJ1bmsKKzE5OTUwIDc5N2ViYjcwMzNkNzI2ZWYwZTkyOGVjNDhiOWFhZWE0MTQwZjdlYTAgbGVnYWN5LXRydW5rCisxOTk1MSBhMTA2NmU1YTEwNjVjYWQ0MTZlZjRjMWJhZmY5ODRjMWRlZDM3MDJlIGxlZ2FjeS10cnVuaworMTk5NTIgZGMwZjYyZTc1ODhiM2U4OTVjZGQ0ZDgzNDhiMTY0NzY2ZmM3ZDI1NiBsZWdhY3ktdHJ1bmsKKzE5OTUzIDNmNTI3NmNiYmM0ZGEyNDRhYWZjNDhmOTI5ZWM2NWUyMWFhZjliY2UgbGVnYWN5LXRydW5rCisxOTk1NCBhNTgxNGY2MjBlODZkOWE3MDNkNjk3YzlmMDJjZGQ4OGM4YzE3YjllIGxlZ2FjeS10cnVuaworMTk5NTUgMzNjODY4MGIzYjM1NDA0NmQyMzI0YTg2YzE3ZmMyYWQ5OTkwNTJhOSBsZWdhY3ktdHJ1bmsKKzE5OTU2IGQ3ZTAyYjllZTE3OWMxZTQzYWRjZmQ0YTlkYWM5ZDc5MDIyNTA3MmQgbGVnYWN5LXRydW5rCisxOTk1NyA1NDY5MjJmYThkOTk0OTBhMzQwMjNkODZlZjcxYTFjYjYwYjJlY2E0IGxlZ2FjeS10cnVuaworMTk5NTggZGQwNGJiZmQ1YTc2Y2VlYWEwNTJkNDEzMWEzMmY4Y2FjMWYyODVjNyBsZWdhY3ktdHJ1bmsKKzE5OTU5IDJjMWJlNzkyNGIwNGFmYWY3NGJhYzdjM2M3N2UxMjA2YmU0NTgzNmIgbGVnYWN5LXRydW5rCisxOTk2MCAyNmNkZWQ1OWMxNzI1M2Y5N2M2NWUxNGQzYzcyNDkwZTJmM2RmYzEwIGxlZ2FjeS10cnVuaworMTk5NjEgZWI0YTVmZjBmNzJjYzg1MzcyOWRjOWJkZjM3ZmMyMzNhNWVkM2RkYyBsZWdhY3ktdHJ1bmsKKzE5OTYyIGVlNjc5M2FlMDZjMTRlMDAzODcyOGI2NGYzY2NmN2ExZWZmZGUxMjMgbGVnYWN5LXRydW5rCisxOTk2MyBiNjUwZDdkYWE1OTNjYzk2YjIzMzAwNmIxMGMxOGM3YjNjYzg2MTgzIGxlZ2FjeS10cnVuaworMTk5NjQgYjQ1YWU4YzQ2N2FhZjQ0ZDBhZWJjYzgyMjcxMDI0NjcxNjU3ZDc3NCBsZWdhY3ktdHJ1bmsKKzE5OTY1IDQzMTcyODg5ZThlNjZiMTg5OGM1ZWYyMjc2MzQyOTUxYjc3YmI2YWYgbGVnYWN5LXRydW5rCisxOTk2NiA0NjJiOGRmZTg3NTM5MWU5NjMxNjA5NjI3Y2Y3OTVjYjBjZmE4MWQ0IGxlZ2FjeS10cnVuaworMTk5NjcgODMyM2IwOThjNmNlMGIxYzYzMTFkMmFlNTNkMjhjYzE4YmQ0NDRhYiBsZWdhY3ktdHJ1bmsKKzE5OTY4IDkwNzlmNzBhNWI4M2Y5ZjIyOGU1ZGE4MjQ3ZDY2MDQwZGNhNTdjMGQgbGVnYWN5LXRydW5rCisxOTk2OSA4NWQ3NGYwNDA3MTJlNjRkYTUzMDk0OGZlYzBjYWRhYzA0ZWUxODc1IGxlZ2FjeS10cnVuaworMTk5NzAgZjdlMmMzZDljMzg3OTFkMzE3OWNiNTRhMzQxMWEwNTZjYmU4YWU0ZCBsZWdhY3ktdHJ1bmsKKzE5OTcxIDdlMTgxZWJhNmI5YmQ0ZDgxNGI5NGIwMTFlMDk0MTM1ZDZhMTNkNWIgbGVnYWN5LXRydW5rCisxOTk3MiBiYzA1NTViZTIyMTIzYTRkNWE4ZGMzMjRjYjVjYzE4ODdkNDc4MjQzIGxlZ2FjeS10cnVuaworMTk5NzMgNTJjYjBjNWZkZjIzODA5OTI4MzkyZDMyMzQ2MWFkMWM2YTIyY2UzMyBsZWdhY3ktdHJ1bmsKKzE5OTc0IGYyNzE3YjAxMzdkMDcyNzRkZWFhZmE1MDFmNzM1OWEyMWI4MDljMjggbGVnYWN5LXRydW5rCisxOTk3NSA2NDM0ZGM3NzZjYjk3NWEyYzM1OTUwNjRhM2Y3ZGI5MDBmYWNmZDE3IGxlZ2FjeS10cnVuaworMTk5NzYgMTM4MGE1MmYxYTIxODYyOTBmOWVhNWNjMjU5YTI5Yzc4NTc1MjdlNiBsZWdhY3ktdHJ1bmsKKzE5OTc3IGNlOGFjMzdkYjMwMGE1YTc0MDQ4Zjg1N2IzOWJiNDVjNDdkMzY0MGQgcmVsZWFzZTIwLW1haW50CisxOTk3OCA2YTUyN2JlNGM0ZDE5MDdkODRkOWViNDM2MjBlNTY4OGYzYzhmZjk1IGxlZ2FjeS10cnVuaworMTk5NzkgM2YyMjgxZTI0ZTJkYzRjYzlhNjE5OWY0ZDk1N2E1ZjA0NTM0MjcyZCBsZWdhY3ktdHJ1bmsKKzE5OTgwIGMwNjRjMGQzYzQ5YjkzNjIyNDlmNmQxYmNkYjRlNjZlY2U1MDY3M2MgbGVnYWN5LXRydW5rCisxOTk4MSA3NDA0Njc4MjA3MmQ2MDhjOGFjMGQ3OWNjZmY0OTk4ZTlhNzgyYzQxIGxlZ2FjeS10cnVuaworMTk5ODIgYjFhYmIyNjIyOTc5M2RmN2M1ZmRkYmU4ZWI5MzMwY2EzZWE2MGRjOCBsZWdhY3ktdHJ1bmsKKzE5OTgzIDdlOTM4ZjBlOWE0OTc1NDhlODk5ZDQyYTZkNTg3ZThiNDY0NGM2ZWEgbGVnYWN5LXRydW5rCisxOTk4NCA3NzE5NjU1N2ZkMzE2N2NhZTQzM2RiODA5Y2E3NzUzMWMxZGI2MmQzIGxlZ2FjeS10cnVuaworMTk5ODUgOWNmZDljMzI5N2RkNDI5M2M2MDIzYzZiMGM1NGVhODcxODdhZjAwMSBsZWdhY3ktdHJ1bmsKKzE5OTg2IDQ1YWQ3YTQ2OGJhMmEzNTNiZmM2ZDZmMjQ4YWFiODVlYzZhODM1ZDcgbGVnYWN5LXRydW5rCisxOTk4NyBkZDVhMWIyODA0NDA3OWMwNjIyZjA1ZTcwM2NhZDYyNzQ0MGQ0YzM2IGxlZ2FjeS10cnVuaworMTk5ODggNTc5YWM4ZTM1ZjViNWU4Mjc3ODc3ZjU1NWQ4MzRlODk1MWUwNDQyMCBsZWdhY3ktdHJ1bmsKKzE5OTg5IDhmMzM5MjY5ZTAyN2Q2Zjg5MTZjM2YzZGVkNmM1ZDlhMDI1YmViNzQgbGVnYWN5LXRydW5rCisxOTk5MCBjMjE0ZjM3MjA2NThlMmI4NjUzNWYwODYyYmM5NzQ3ZGYwNjlmNDFjIGxlZ2FjeS10cnVuaworMTk5OTEgOTg5ZmVkMjhiNzRmMzNhNDQ4ZTA0ZjYzOWNkODRmNzMxYjQ3MjA3NiBsZWdhY3ktdHJ1bmsKKzE5OTkyIGQ5ZWU1NmI2ZGIyNmE1NDdmZDczZjhjNWVkNjhlNmVjNzlmMDk0MWMgbGVnYWN5LXRydW5rCisxOTk5MyBkY2Y3M2YxMGY3Y2NmMDNkNzljZGYxMWJkNDg5MTUxNTE4MDU2Mjg3IGxlZ2FjeS10cnVuaworMTk5OTQgOWJmMzc0OTMzODcyMDVhY2YzZGRiZWE3YzgwYTc0MGRmMmExZjNhMSBsZWdhY3ktdHJ1bmsKKzE5OTk1IGVkZGE0YTQzMjM5YmNjMzBiNTBjMjAzMDRlODhhNjdlYjc4NDIyNGMgbGVnYWN5LXRydW5rCisxOTk5NiBhMzhjY2UzZjQxYjQxZGZjMjIwZGEzNTZjNWNmMGE1MDY1MWVlNWExIGxlZ2FjeS10cnVuaworMTk5OTcgYTQ4OGE2M2NiODY3NGU2YjcwNDI0Yzk2NzAzMTgyZTRlNjk5OTllMyBsZWdhY3ktdHJ1bmsKKzE5OTk4IDhmZjI0YWJlYjM4ODExMGNiNGM1ODI3NTg1YWJjZGQ5ZWYzNDBlZDEgbGVnYWN5LXRydW5rCisxOTk5OSAxODIzZmEyMzE1MjE1YzA0ZTg1ZTBkNGEwMmQwZTA5ZDhiMWM0NDZmIGxlZ2FjeS10cnVuaworMjAwMDAgYWRjOGE0MWJlZTlmNjk3NjkxM2IyYjI1MTkxZTE5NDc3NmNlMjg5NSBsZWdhY3ktdHJ1bmsKKzIwMDAxIDMzZjc3NjlhMjE4ZWQ3YjU0ZjZiN2E4NWQ5YTU2MjViMDI4MDVmNzcgbGVnYWN5LXRydW5rCisyMDAwMiA3ZWI4YjI0MGRkNmM0YjAxNzc1ZmE4OWJjYjhlMGZhMzdjNTBlZWJiIGxlZ2FjeS10cnVuaworMjAwMDMgN2VkM2U3YTA4YTMxMDE5ZGM4MzkzZDcwMjRhNzFmNDMzMjdiNDc4ZCBsZWdhY3ktdHJ1bmsKKzIwMDA0IGJmNjc4YTExYzIxYWVjN2QxOWZiNzQ1OGU3MGMzM2EzYjg1MTM5YjEgbGVnYWN5LXRydW5rCisyMDAwNSA3NmVhYjJlYmNlNThhNDRiNDg4MGU1ZTJjZjNhMDIyMDlmNjc2Zjc3IGxlZ2FjeS10cnVuaworMjAwMDYgNDg2M2I1OTViZGFlODYwMDEyNDZlMTRiZjIxMzMzYjVkMTU5YWY5YiBsZWdhY3ktdHJ1bmsKKzIwMDA3IDZmZTEzZDAwOGUyNWY3YTkzMmUzM2NmMDE1MGVkYWM5MDZlMWQxN2UgbGVnYWN5LXRydW5rCisyMDAwOCBlMTIxNGY5ZTEyYTNjY2YxODY4ZTNmZDVmMjU4ZmQwMjc0N2NkYWVjIGxlZ2FjeS10cnVuaworMjAwMDkgZDMxYWRkOTlhODQ2OGNhOGNiMTMwMDUyY2RmNGQ2YWZhMzljMGVkYSBsZWdhY3ktdHJ1bmsKKzIwMDEwIDMzZDhkZDAyYWE5OTEyOTE5ZmU2MmJjNzgzYTYzZjg2NzNjYmVmMzEgbGVnYWN5LXRydW5rCisyMDAxMSBmOWEwN2U5OTkwN2U2ZWI5NzRlNDkzYTQ0ZWM1MjlhYWE3ZmMxYTE4IGxlZ2FjeS10cnVuaworMjAwMTIgM2I2ZWE0Y2ZlZWUwNjJlY2JiYzBmNDY4Njk0ZTk2NGNlZmEyMThlOCBsZWdhY3ktdHJ1bmsKKzIwMDEzIDg0OGYwODU1OTkxNmQ0YTczMTg5NmRmMzI4M2M0MDI1YTE0ZDFkMTcgbGVnYWN5LXRydW5rCisyMDAxNCA2NDZlYzJhNGQ3ZjRlMGNiMjc2MDkwMjg2MTI5MGY2N2M5OWRmNjhjIGxlZ2FjeS10cnVuaworMjAwMTUgOWU2ZTRmNWU1NjA0NWY4NjQzNTIyMjVkOWU3MGQ3YzRjNjNkNWMyZCBsZWdhY3ktdHJ1bmsKKzIwMDE2IGRhNmM2NjI5ODJiNjQ0NDNhYWUxMTlmOWRkNjE2MjU2Njk0NDMxZDMgbGVnYWN5LXRydW5rCisyMDAxNyBhODMwMWQ0ZWQyYjFiOTU4OTZlMGI3YTQ5OWU4ZWY4YzJiNzA2N2M4IGxlZ2FjeS10cnVuaworMjAwMTggMjA1NGNlYTM4NzU0YmQzYmFkYmNhM2ZjNDQwM2M0M2ZiY2Q0NmEzYyBsZWdhY3ktdHJ1bmsKKzIwMDE5IDFiODc0NWZhYTJlZDJjOWYxNGJlYWM1ZWNjMjViMzczMmY3ODdhNTggbGVnYWN5LXRydW5rCisyMDAyMCA1NGI2ZDI4YTY4NzhjOWIxMDJjNjhlZDRiZjM5ODM0ODFiMmU1YWJmIGxlZ2FjeS10cnVuaworMjAwMjEgMTE0NjA3MGY0N2VjNmI3ZWFjNDQ1ZDVjODY2ODlhYTU0M2UxOTc1NyBsZWdhY3ktdHJ1bmsKKzIwMDIyIDMyYmNiNGUyMTAwNTRmZjE4MmY0Y2I1MTI4NjM0NTA3OTIzNzU5ODggbGVnYWN5LXRydW5rCisyMDAyMyAwYjMzZmM2N2NhNGU0OWQ3ZTNhZjQ0Y2QwMTdiMDBkYTE3MzZmMzRmIGxlZ2FjeS10cnVuaworMjAwMjQgMWM5MGExY2Y3OTVjOTY4MGI3ZTQ3OGMzOGY3Y2FjOTJmYzFlZTI0OSBsZWdhY3ktdHJ1bmsKKzIwMDI1IDU1MjE4ZTA0OTViYzQ3ODRmM2JhN2VhNTQ0YzhkMTk0Mjg2MTNiYjUgbGVnYWN5LXRydW5rCisyMDAyNiBkMGZkNjBjNTlhZWZhZDBhOGVmOGViYjk4YjlmMjM0ZDk5YzdkZjVjIGxlZ2FjeS10cnVuaworMjAwMjcgMGZhMmMwNTE4OGEwYjc5YzZlOTJlNDA1NGU2MjdlOTVmOGE1Yzc4MiBsZWdhY3ktdHJ1bmsKKzIwMDI4IDIwNmE5ZjE5NzhlNTAwYTg2OWNmYTNmODIwNWZkNjA5YTY3ZGY1OGIgbGVnYWN5LXRydW5rCisyMDAyOSAyZWQ4NDVmODFiMGM1ZGY4ODQ4MTZkYTJmMDlhZGZlMDQ2MzM2MTFlIGxlZ2FjeS10cnVuaworMjAwMzAgODE2ZDg2MDAyNjgzMWIyNDA5ZGYwNjUzMzdkZDdjMDYzNjljMDIwZiBsZWdhY3ktdHJ1bmsKKzIwMDMxIDcyNDNkZWIwMjBlODdlMzJjMDc1YmJkNDE0OWU3OGI3Y2ZlMDVjYjAgbGVnYWN5LXRydW5rCisyMDAzMiBjOWI0ZWZmMTVkY2RhY2Y3OTA0ODQ1Y2I5ZDcwMGI0YTU1ZjI1ZDIwIGxlZ2FjeS10cnVuaworMjAwMzMgZjU4YTY1ZDRjYzIzNzgzN2VkNTRmNzNjNmIxNDQ0ODkxNTExNWM4MyBsZWdhY3ktdHJ1bmsKKzIwMDM0IGY0MjllZTk0NDhhYWQ0ZDJlYjM3NjQ1NTNjNzU1NGYzZWM0NzZjYzMgbGVnYWN5LXRydW5rCisyMDAzNSA4ZmIxMGFmZmI2MTU3YWNkZTU3ZWNmODIxZmIxM2I5N2U1YTAzZGMyIGxlZ2FjeS10cnVuaworMjAwMzYgYzJlNGJhM2M4NWNjOTJjYjgzOTI5MjA3MGFiYmZiN2E0MmVhMTYwYiBsZWdhY3ktdHJ1bmsKKzIwMDM3IGJiZjVlYTJhMjJlNTU5N2I5ZDdjNGRhNTk4NmU5YmZhYWEyZmQ5OWYgbGVnYWN5LXRydW5rCisyMDAzOCA4MzY4NDA0MzczZWNjZjI2MzdmM2ZiZTMwMDUzOWU2NTI0ZTAzMjFjIGxlZ2FjeS10cnVuaworMjAwMzkgZjA3YmM0ZjhkYjllNjk4N2NkMmY2Njc1ZmYyMzEzOTUyNzc2ZjA0OSBsZWdhY3ktdHJ1bmsKKzIwMDQwIDM0OWM4Nzg4NjA0ZTI5MzI0OWI5ZWVhZDkyYjNmZjBjMzFjNDI5ZjUgbGVnYWN5LXRydW5rCisyMDA0MSAyMDY4MDllMjViNTBkMmRkZTIzODhhYTgxOTI5YjllNTViM2UxZmI4IGxlZ2FjeS10cnVuaworMjAwNDIgNTA4MDdjNDY1MDM0YjY5YTIzYzI4NDY2ZGY3MGFlODYxZWY0MjQwNyBsZWdhY3ktdHJ1bmsKKzIwMDQzIGM3NGM0YmRjYjQxMTIyZjM4MDgzYTlkYWRkOTk2ODBkMzYyZTYxZDYgbGVnYWN5LXRydW5rCisyMDA0NCAyNjA4NjhjYWUxYTFkNWRmZDg3N2ZjNGYxZWZlODk2ZjRlNjRlZTlkIGxlZ2FjeS10cnVuaworMjAwNDUgY2U5MGY1NjdmYTQyMDJhNTljNGQ3YWUxMTcxYjllMDdjNzk1YjUzNCBsZWdhY3ktdHJ1bmsKKzIwMDQ2IDBiOGI2Zjg0MDZkY2ZiODA2ZDJlZDhmNTkwZWJmZjhmNDFlNmZiMDEgbGVnYWN5LXRydW5rCisyMDA0NyAzYjhhNWJiZmQyZTU3MjBkNmU5NjE0MGU0YzQwZDUwYmY0OTU5MWFhIGxlZ2FjeS10cnVuaworMjAwNDggMTU1MDg3MjI0OWU5ZTg1MTkzMTBmMWJmZmNjOWI3ODQ5ZDk0MDc2ZCBsZWdhY3ktdHJ1bmsKKzIwMDQ5IDFiZTBkMWM1NzgzNDAyNWRkNWQxYzMzNWQyYjA5MGZmNTA1NzE5ZmEgbGVnYWN5LXRydW5rCisyMDA1MCA4YzZmMjJjZWY4NzgyMmQ2ZTAwYWI2NWUxMWFhNjlkMmM1OWVmYWJmIGxlZ2FjeS10cnVuaworMjAwNTEgZjcyMTczYzc5M2I2ZDgzMmNiZTQ3N2Y2NjY1NmYxYzJkZTM0ZTk2OCBsZWdhY3ktdHJ1bmsKKzIwMDUyIDEwOTQwNTYxZTg5MWMxMDBjOTkzNWExOWZlNTI4NTEwYzA2Yjk3YTAgbGVnYWN5LXRydW5rCisyMDA1MyA3MjkxODkxY2IwYmY3Njg3Y2M1ZGYwNzNiNmU5MjNiZTA1ODk3YTQxIGxlZ2FjeS10cnVuaworMjAwNTQgZTNiNWQwM2UzZDdkYjdjNmNmYmIzZjYwZGVhYzYyYmIzODZlOWFjMyBsZWdhY3ktdHJ1bmsKKzIwMDU1IDE0M2VmODhlYzg1NjM0YjQ0MDY2ZTZkZDdlNjc0NTUyYjI3NGFjNTAgbGVnYWN5LXRydW5rCisyMDA1NiBhZDY4M2YyMGJiMTQwNzViMWFjMjExNDFmZjAzMmZlOTE2ZmZiYmU0IGxlZ2FjeS10cnVuaworMjAwNTcgYjQ0ZTc3YTEyOTc4OGRlNWI5MDYyMjlhODIwOWFmZGE3YmU1MjhhYiBsZWdhY3ktdHJ1bmsKKzIwMDU4IGRjOWExNTFhMGJkNTJhOTY4MmJkMDc3MDBlOGQyMjliOGEyNjkwMjAgbGVnYWN5LXRydW5rCisyMDA1OSA5ZGJhYjNkNTRkZWVlYzNmYTBjNTQ2ZmUwYWU4OWI4NTJiMGFjNGM1IGxlZ2FjeS10cnVuaworMjAwNjAgMzQ2ZTk3ODYzMGE5YzNiYzdkZTFiZjA2ZjA3NjU3NDEwOWZiMDRkOSBsZWdhY3ktdHJ1bmsKKzIwMDYxIDBkNTIzNThjYjI4ODM0MTk1NDhkNGE3Zjg1NDI2MjI1MTQwOTQ4YWEgbGVnYWN5LXRydW5rCisyMDA2MiBkODA3NDg4ZGZjN2ExMmI3YWUzZmFiYzkyMWM5NTI0ODljY2EyMTRkIGxlZ2FjeS10cnVuaworMjAwNjMgOTYyMTk2Y2U3MjMxNTYzZmIwNTg0NGZiNjNlNmU5YjEzZDg4ODYyYSBsZWdhY3ktdHJ1bmsKKzIwMDY0IDRmNjhkM2Y4ZmRjODIwMDgwNTk3NzlhODQ1YWQ0ODk3Y2FlYzJmOWQgbGVnYWN5LXRydW5rCisyMDA2NSAxMDkwMmVjYWJjYTljNzMwYTFkZjBlZDA2MTdlNzkzODJmMDkzZmZiIGxlZ2FjeS10cnVuaworMjAwNjYgNzNmNDFiMGZmNzc3NWFmZGU1ZjQyNmFmMWEwZDBkMGFhOWQ1OWMzZCBsZWdhY3ktdHJ1bmsKKzIwMDY3IGNkMjQ1NWNiMTNlZjU1YzY1ZWM2ZjU4NDAxYzFlYjBiZWMwZTNkN2QgbGVnYWN5LXRydW5rCisyMDA2OCBlNDkwNzgxMDFhNjg3NDFkNzdhNWYwNGI4Y2I3NGFiNTEyMWE3ZGUxIGxlZ2FjeS10cnVuaworMjAwNjkgNTk2ZWZhN2U3ZGY4M2NmYWZkN2JhOGE0NDFhMzBhNjA0NjkzOWQ3NSBsZWdhY3ktdHJ1bmsKKzIwMDcwIDYzY2FjZGViODA0NWJkNTE5YTI2ZDZkNmE3OTcyMDAwMTg5NWNjOWQgbGVnYWN5LXRydW5rCisyMDA3MSA3MDdmOTVkMDVlNjkwNzY0ZTg4YmQxY2M0YTY3YjI0ZGQwMzk0ZDI5IGxlZ2FjeS10cnVuaworMjAwNzIgOGRmMGY2NWUzODYwMzU4NzgxNmQxOTU3N2RiNGI5ZjAxYTk4ZGE0ZiBsZWdhY3ktdHJ1bmsKKzIwMDczIGE3YmJmMzNmY2UwNWFlNGJiZjAyMjllMTI3OTliYjVmYTM5MmU4OWIgbGVnYWN5LXRydW5rCisyMDA3NCA3OTE2ZDMyYWEwODEyNWQ4YzlkZjZlZGZjNjJkZDI4ODNjOGZmNDA3IGxlZ2FjeS10cnVuaworMjAwNzUgNWVlMzU0M2VhMzNmNDI1MGU5N2M4MWZlOGM4NTU0MWY0NmQ5N2NmMiBsZWdhY3ktdHJ1bmsKKzIwMDc2IDllNjQ2ODM1NmEwYjMzNzE2NWY1YjI1ZGYwN2QyNTU2Y2FjOGQ5NjAgbGVnYWN5LXRydW5rCisyMDA3NyA1NmQxOTVmMjFiNGZlMGRhOGU1YWNkYTllZWFiOWY0MmQ3ZWY5ZDQ1IGxlZ2FjeS10cnVuaworMjAwNzggZjlhMzAwMTVlOGIwZmNiNGZjYzdmNWNmMmNmNzg3YzJlNDEyZTg5YyBsZWdhY3ktdHJ1bmsKKzIwMDc5IGYyZjhmM2UyYWMyMzFjMWJmNDlhY2RjNWYyNzQ3NjhjMGIxN2JkMWQgbGVnYWN5LXRydW5rCisyMDA4MCBkNDhkMDljNzg3YTg0OWQxNDA1ODJlNzg1ZmJiOWFiNDNhZjU5NGQ3IGxlZ2FjeS10cnVuaworMjAwODEgZjVkMzhjNWIxNzUxZTNkNzE2ZDVjMTU2M2EwODc0OWY4MmRlZGRjNyBsZWdhY3ktdHJ1bmsKKzIwMDgyIGQ3MThjMjkzYTFmZmEyYjdmNGY5ODE4YmM3MDgyNmMwZTEwZWIxMDUgbGVnYWN5LXRydW5rCisyMDA4MyBiYWNhYzc1ZDIyZmRlOWU4NmEyNGQwZDYwYTc4NTUzMGRhMzMwYzhjIGxlZ2FjeS10cnVuaworMjAwODQgZWIwNmEwMmUwNTA3NmJlNGNlMTZkNGFkOTkwNjc3ZGIxYTA0M2MzOSBsZWdhY3ktdHJ1bmsKKzIwMDg1IDExNTM3OTZkMjFjMjQwNzA2YmQwOTMxMjBlODMzZjFkN2Q1MmY5OTYgbGVnYWN5LXRydW5rCisyMDA4NiA0MTIwZWJlMDhkZDA0MTZjYzNkN2M4N2NhY2FjZTVkMGYxN2IxMDkyIGxlZ2FjeS10cnVuaworMjAwODcgMzRlZjA1NDQxNDEzZjI2YjY1Y2IxNTQwMGNhZTgyYTI3NzY1OGUwNyBsZWdhY3ktdHJ1bmsKKzIwMDg4IDM4ZWY0NjYzNTk0OTI2NTY5MDNjNzQ0ZWIyNGQ2ZDA1ZDFlMDc5YjQgbGVnYWN5LXRydW5rCisyMDA4OSAyZTdmNDczMTRhZGFhMzE3NzgzNGJjZjEyZDRiZmQxZjdkNGE4M2ZiIGxlZ2FjeS10cnVuaworMjAwOTAgNTcwNWQ1YThiY2IzY2Q5NWU0ZmFiMGQzM2MxMmE5ZWYzNmQ4YTdkYyBsZWdhY3ktdHJ1bmsKKzIwMDkxIGM1OGI2ZDg2OGQwODE2ZjVhNjk0ZTEwYTZiZTM1MjQxMjU0ZGVlODkgbGVnYWN5LXRydW5rCisyMDA5MiA3YTQ5NDBhNGFjYTZmNzI5ZTI5MDgwY2I5ZmRkOTM2ZDc2MGViNDI4IGxlZ2FjeS10cnVuaworMjAwOTMgNzA1N2I2YWE0NmVjNTVmY2ExODBjNWZkZTU4ZDcwZTBjNTZkYWQ3YSBsZWdhY3ktdHJ1bmsKKzIwMDk0IGFjNjU2YzgzN2I2Yzc2NGJhYzEwZWI5MmQwOTZmMzM5NzJlYTZhZmEgbGVnYWN5LXRydW5rCisyMDA5NSA2Y2ZhM2Q2NWFiNTQ2OWJmMDY4YjkyZTUyYzZhZWFkNDgxZTNlMzUxIGxlZ2FjeS10cnVuaworMjAwOTYgOTA1NDZkNmU1NDQ1NGZjNjg1OTRhMjA1ZjkxMTJlNjYxMTIxZTFjOCBsZWdhY3ktdHJ1bmsKKzIwMDk3IGI3NDJjYWYwYTg2MmE0NWMzZjE1NjU1NzBhOGJlNzNiMjA1N2VjODUgbGVnYWN5LXRydW5rCisyMDA5OCA0MDdkNjBiMmZhNDFhOTRjOWRmNGUzYzY2NWNhOGMwN2VkMzNlYTBhIGxlZ2FjeS10cnVuaworMjAwOTkgNzgyMjM5NDg4MDU4NWJmN2I2YTViYTJkMmFmN2U3YjIxY2JiNGU5ZiBsZWdhY3ktdHJ1bmsKKzIwMTAwIDE2ZjE0NWFhYzJlYzEyZTVkNjEyMTc4MzJjNDc0OWE3YjlmMzYxZjYgbGVnYWN5LXRydW5rCisyMDEwMSBjODgxN2E5YmJiZGRiYzRjMGNjZGFiZTFhNmIwNmE3OWNiNmM3NGIzIGxlZ2FjeS10cnVuaworMjAxMDIgNTJkYTA5NGI1M2VjMzliZjk1MDVhZWY2MTk2ZWI4ZjAxZDg0Yzc0NyBsZWdhY3ktdHJ1bmsKKzIwMTAzIGQzZjdjN2ZhZGVjMDM5ODljYWVkNzk0OTBiZTljZDAyODgxYmVhYmYgbGVnYWN5LXRydW5rCisyMDEwNCA2NDg3NmJiOGFhY2RjNWIxZGY5ZDA2Mzc0ODQyNWIyY2QyNTVhYTU0IGxlZ2FjeS10cnVuaworMjAxMDUgMjE1ZGM3MjVkYjg0MDQ5ZWQ2OGY1NWE3NWI4ZDdlZjUxYjZiNWVkNiBsZWdhY3ktdHJ1bmsKKzIwMTA2IDRkNmVlN2YyYmVlNjYwOWEwYzMwNjc2Y2RiMTJhODY3NTQxYTI0YmMgbGVnYWN5LXRydW5rCisyMDEwNyBmMWE0OWVlYzdjMmJmMWRiNzU4NWQyZWMyNzMxMDk2OTFmMGQxNTIzIGxlZ2FjeS10cnVuaworMjAxMDggZjZlMWZhMmRiNDhjYmI3YTRmNzJkMjViZTdmOTBmMDNkMDRmYTYwZiBsZWdhY3ktdHJ1bmsKKzIwMTA5IGExYjk5ZDA4OGNlYTgyOTRkNWI5MjEzMjdkMmI0MzRhMDMxODMzODUgbGVnYWN5LXRydW5rCisyMDEwOSBiNTlhNTM2YWUxZWYzNzc0ZmQ4NWMxN2Y2MjNlODkyNmI3YjZjMDk1IGxlZ2FjeS10cnVuaworMjAxMTEgYjNkY2UwNjg2OGQ2ZDM1ZjU5MDM0NTJlNmU5MGQ3ZjBhYzQxN2MzOCBsZWdhY3ktdHJ1bmsKKzIwMTEyIDNmOTEyZmI4YzE4MDgxODRlYmE2MzI4NjdiMjBhYjFkYmJjYmEzNTggbGVnYWN5LXRydW5rCisyMDExMyBiNjAwOTZkNTAwMWE2ZTBkODM2YTA2NjBmZjk1Yzc5Y2QxMWUwMTkxIGxlZ2FjeS10cnVuaworMjAxMTQgZTNjYzIwZTllYTM2ZWNkZDc4N2JmYjdiZmQ2ZGYwMjExYTNlZDc0OCBsZWdhY3ktdHJ1bmsKKzIwMTE1IGVlYzM5MWE1NWY4NDQwMTllYjRmM2Y5YzY0YzE2ZTMzZDgyMzFjNjQgbGVnYWN5LXRydW5rCisyMDExNiBiMjkxODMzYTBlZmI3ZTFkMTQ2NmQzZTQxNzJlYjAxMzRlM2FjMWI5IGxlZ2FjeS10cnVuaworMjAxMTcgZjkzOTVmNzYyN2M0YjdiZjI0YWY0YjY5OTM5NmQ0NWZlMGRjNWQ2YyBsZWdhY3ktdHJ1bmsKKzIwMTE4IGFiNzA3MjA5NDA5YmI5NTg1NzRhZDM0NjEwNjVhNDE1YTgxMGQyODcgbGVnYWN5LXRydW5rCisyMDExOSAwMmE0YjBjZmM1N2UxMzU0YjBlZjdlMGE2NmUzYzk1MzI4MDk0YWMyIGxlZ2FjeS10cnVuaworMjAxMjAgM2ViOGQ3MjU5OTY5MjRjMmE3NTdmYzBhYzk2MTk2ZDQwZmQ2NzE4ZSBsZWdhY3ktdHJ1bmsKKzIwMTIxIDMyZmI2NjQzYWRmMWYwNGNiODc4ZWI2ZmFiNTU1NWNlNmJjNzE1ZjggbGVnYWN5LXRydW5rCisyMDEyMiA5MmIzZTA4MzE5NzAyYTRjNzMzYjRiZjQzMmNhZTBjMGM5OTI2NmIyIGxlZ2FjeS10cnVuaworMjAxMjMgNDVjZGExYjM5MzU1YmM3NjYzOWUzZjVhZGQ5NzE3ZjcyMGM1MjJkZSBsZWdhY3ktdHJ1bmsKKzIwMTI0IGJmNGNjOTlkNzExZDBhYzc0ZjAwMTQ1OWE1Y2MxYjVlZTNkODNjMTQgbGVnYWN5LXRydW5rCisyMDEyNSA0ZTE5ZmI4Y2YxZmJkMzk4NzBlY2JhZDZiNmQ3ODgyMDc4ZTdiZTI3IGxlZ2FjeS10cnVuaworMjAxMjYgZDJiMDFkNGUxN2U5ZGNmZDJiMjc2YTk4Y2E3M2Q0OWRkZDBmMTBlMyBsZWdhY3ktdHJ1bmsKKzIwMTI3IDcxYWYzYjYwYWE2MjkxMjNhNTY0MzI5NGM5ZGZlZDViODYyMWZlZDUgbGVnYWN5LXRydW5rCisyMDEyOCA1ZjcxMTg1ZWYyYjVhZGRlZGU3YWMyMWJiZGU3Y2YyZjg3MzM1ZmM2IGxlZ2FjeS10cnVuaworMjAxMjkgMTQxMjMwOTU2MzI1NmUxZTQzMDE2M2ZjN2ZmZWVjNzY2ODVlMGU0ZiBsZWdhY3ktdHJ1bmsKKzIwMTMwIDM5MGE4MzE1ZDYzNDJiNGMyZjcwZjhhMjFiZWEyNDRlYzhkYmVjNzkgbGVnYWN5LXRydW5rCisyMDEzMiA3YzA0NzI5MzJmYmY5NjBiZDU5YmIyOGQyYzkyYTE3NjIzMmU1ZWYzIGxlZ2FjeS10cnVuaworMjAxMzMgMjJkODUwMTdiZWNlODk4OTliNzIxMDYyZjMwYjI5Y2RlOTIwMTcyOSBsZWdhY3ktdHJ1bmsKKzIwMTM0IDUzNmU4ZGQzNTk1MzI0NGQzMDI2ZmRmMzE5NmI2YTg0ZTI3YzYzZWEgbGVnYWN5LXRydW5rCisyMDEzNSBlZTQ4MDM4MjY3ODQ3OTY2OTM1Nzg5N2IwNDA0M2YxNzYxOTkxNTIxIGxlZ2FjeS10cnVuaworMjAxMzYgMWIxMmU2MzQwMDM4OTRjYzE4Yzg0MTIxNThmZDllN2UxZjhlOWY4ZiBsZWdhY3ktdHJ1bmsKKzIwMTM3IGEzNDBiYTRhYWMyNzBkODRhZjZiOGQxZTAyMmE3ZjdkNjcyMWZhMDkgbGVnYWN5LXRydW5rCisyMDEzOCAyNWU5M2EwMWY4NmQ5ZWYwNWRlNDgyZmZhMTJjNjc4MDNiNDk2MGUwIGxlZ2FjeS10cnVuaworMjAxMzkgMDM3N2Y5MjdjYWZhMzM4NDYzODYzNDBiMmZlN2Q0NDlhZjA3ZmJkNyBsZWdhY3ktdHJ1bmsKKzIwMTQwIDc1MTAzYmVmMGMyNDU1ZDMzODZjYWYwNDQ3ZGZiYTQyM2YzNTI3NDAgbGVnYWN5LXRydW5rCisyMDE0MSA1OTQ3MmJjYmZiOGU4YTVhYmQ1OGIxNzI3ZDAzYjU1N2E3MWM1Yjg2IGxlZ2FjeS10cnVuaworMjAxNDIgMDJjZWMwMGYyMmJiNTNjZjYwOGQyZTMwNmYwYjgxMjJmOGZlZDEwYyBsZWdhY3ktdHJ1bmsKKzIwMTQzIDZkMzA1NTJjYjRmOTkwODdhMWYzOTBhZmRlYjEyNDNlOTI5NmNjMTUgbGVnYWN5LXRydW5rCisyMDE0NCA0YWE3YWZiZjI5ZDgyMTU3ZTI0OWM4MzBmMWI5NzZkODEzNDRiMmFlIHJlbGVhc2UyMC1tYWludAorMjAxNDUgZmRjNTIyZGM5ZGY1NTZjY2FiYmNhN2ZkOTY3NDg2ZGUxYjQxNDNhZCBsZWdhY3ktdHJ1bmsKKzIwMTQ2IGI1NTNmYmFjMTQ2ZGRiZWFkMDY5YjQ2OTE5YTEyYjIyODM0ZWNiYjMgbGVnYWN5LXRydW5rCisyMDE0NyA4N2Q1MDlkMDg1YTBmYzM4ODUyZDcxOTg1NjRlZmVmMzRkNjgxODAwIGxlZ2FjeS10cnVuaworMjAxNDggODcwZGEyNGQ0YmFmMjRlN2FmMDc4ZjE2MDUxMjkwNGVjNTVlODQyZiByZWxlYXNlMjAtbWFpbnQKKzIwMTQ5IDIyZDM0OTc0ODM4NGY4NjY2YTgwYTg2ZTg2OWI1MzM2YjM5YTkzYzAgcmVsZWFzZTIwLW1haW50CisyMDE1MCBjNGE1YmQwODg1MWJjZmFiNWY3YWQ4YTYyMDY5NjdkODE1YmJiNjIyIHJlbGVhc2UyMC1tYWludAorMjAxNTEgZWUyNjQ2NjliNjc4MGU5N2VkZTUwNGY0MDJlYmMzZTMzNmZkMzY1OCByZWxlYXNlMjAtbWFpbnQKKzIwMTUyIGEwMDI5MThmYzBjMjc2NDRjNDc5OTBjMTM3MWI5ODYzMzJjZGE3ZDIgcmVsZWFzZTIwLW1haW50CisyMDE1MyAxMmZlZTdmYjAxOWIzYjg0MzU2YjMyMmZjYzc2YmJjMmVjOWU3ZWY2IHJlbGVhc2UyMC1tYWludAorMjAxNTQgYmViMjk4MmQ4NWFhODIyYzQ1NGZlZmU0Yzk3MDQyZmZiMTUxMGM5YyByZWxlYXNlMjAtbWFpbnQKKzIwMTU1IDExYTIxZDU5MjgzNDg3YTVlM2NhNjE3MTg2OWVhNGY4YzE3NDMyMDQgcmVsZWFzZTIwLW1haW50CisyMDE1NiBhNjI2YWNjMzBmYzIzOTlhYmQ5YWJiOTk2ODllYWQ2NjQ2OWViOTFmIHJlbGVhc2UyMC1tYWludAorMjAxNTcgZjRjYTkzZThhMmQ0Nzk2NGM4N2Q3OGE2YTBkNjhlM2U2NzQ0MjIxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTU4IDYzOTNmNTVkYmQ3YmU5ZGY3ZTI3OGNiZTdiMDNjMTkyY2E1ZjA3MTEgcmVsZWFzZTIwLW1haW50CisyMDE1OSA1ZWQ0YzdlOGI0Zjk4ZWNmZGY0NjM1YWM2NzUwYmEwOTNmZTMyZjdmIHJlbGVhc2UyMC1tYWludAorMjAxNjAgOWRkYmI3NmMzMTE0NTQzNWJlMmZhZmNiOTE2ZWFiMzVmMTVjNGE4NSByZWxlYXNlMjAtbWFpbnQKKzIwMTYxIDQyYjFhNjk5YTVkZGMxY2Q1MDBiNTk0ZGVhZWE2OTZlZTI0NmI5M2YgcmVsZWFzZTIwLW1haW50CisyMDE2MiBkNDY3ZDE4NGI0MjkzMDRlODNjMWMwMjhjMTAzZmRjMGZiMTMxMTE2IHJlbGVhc2UyMC1tYWludAorMjAxNjMgMDkzZTlhMjRlZTc2N2ExZDRjY2RlZjE5NmQxNWJmYjk4NTkyNzA5ZSBsZWdhY3ktdHJ1bmsKKzIwMTY0IGUyZTkxNDZmNGFiNGQ5YzI5YmYzNGIwYjExMDQ0NWM5N2U4NWI5MWIgbGVnYWN5LXRydW5rCisyMDE2NSAyNGQyMmVlZTk0Y2YzNzE1NzNkMTIzMmI2Y2QwMTNlMzI2NGE5MjcyIGxlZ2FjeS10cnVuaworMjAxNjYgNzJmZDI2NTdiZTM0Mjg3ZjU5NmYzNGJiNmI3YjFkNTZiMWIwZjMwMiBsZWdhY3ktdHJ1bmsKKzIwMTY3IDUzNmNjMTI2ZmI5ZjhhMDcxMTJiMDUwYmQxYjc0MmJhZmYwOGU4OTcgcmVsZWFzZTIwLW1haW50CisyMDE2OCA2ZGM0M2UwYzZiYmY1MDM1MzQzMzAwNjJlNzNiNzI5ZWUwYmUxOTBjIHJlbGVhc2UyMC1tYWludAorMjAxNjkgZTUxMGM0Y2M1NzM3NjNkM2RjZDE0YjYxMmZjOTVhYWUwZTMyMmMzOSByZWxlYXNlMjAtbWFpbnQKKzIwMTcwIGE0Njk2NGQ3MTExZGRlZjRhMmEyOTIxZmQ3NGQwYzNjNGQ0NjY3Y2QgcmVsZWFzZTIwLW1haW50CisyMDE3MSBkN2UwZDIwY2RkYWRiMzYzMmU1ZTAwMDZmNTIwYjkxYTM4YzBmNTk0IHJlbGVhc2UyMC1tYWludAorMjAxNzIgZDlmZjEzMTAwZTJmMjEyMmNhMjNhOTk0NWY2NTU5MWE1YTZlM2U0YyByZWxlYXNlMjAtbWFpbnQKKzIwMTczIDVjZjM1NWY2N2FhMzdiMWY2ZmNkZDUwYjhmOWJhZTNiNGNhYTY5NWIgcmVsZWFzZTIwLW1haW50CisyMDE3NCA1NzNhOTEzODg3MDViNTAwZmNhNWI0ZDczYWMxZjNkZjAwMWFjMDM4IHJlbGVhc2UyMC1tYWludAorMjAxNzUgY2NlZjAyZGE4OGE2N2Y5OTE4Mzc0ZThhN2VhMGMxODQzZjRiMTc1OSByZWxlYXNlMjAtbWFpbnQKKzIwMTc2IDMxMjAzZDk5MzU4MjczY2Y3MzNiOWZlMWRjMjNmYzZmNzg3YmUxMTUgcmVsZWFzZTIwLW1haW50CisyMDE3NyA5OTU2YTFjNWQ0NDA1NGQ2NGY2MWY4ODVhZWIwZjgxZTRlY2JjMTAxIHJlbGVhc2UyMC1tYWludAorMjAxNzggMTkyZjI1ZTQxZmJiZWU5ODhiZjFiNWQ5OTUzODZkNGQxZGYxODJhOSByZWxlYXNlMjAtbWFpbnQKKzIwMTc5IDJiNTc2OGMxMzU5OTIwMjkzZTU2ZTBlODYzNWFkMmEzNzQ2NDMwNDEgcmVsZWFzZTIwLW1haW50CisyMDE4MCA5OTI0NjBjNjY4YzE1YmY5MjY0ODRjZWUzMDM2YzkwN2UzODg0ZDk1IHJlbGVhc2UyMC1tYWludAorMjAxODEgOGRlY2E3OWVhNmFiYjU1ZTMzZjhiMzgwNTdjOTU2YjhmYTBkODc4YyByZWxlYXNlMjAtbWFpbnQKKzIwMTgyIDA0Mzc3NWIzYjhiMjk2NjM0NzQ5YmY5MjFmOWFjODBmOGM3ZTY2NmIgcmVsZWFzZTIwLW1haW50CisyMDE4MyBmMzRjOTA5ODkxMzgzNDVkY2Y2NzNhZDIzMjM1NWI0OTY4NWY2MmViIHJlbGVhc2UyMC1tYWludAorMjAxODQgZDFjMTM1MGEzYTVmNDJiNTg1YzY4YzQ5OGFhMjRlYzhkNDc5ZGFkNyByZWxlYXNlMjAtbWFpbnQKKzIwMTg1IDVhNGUwODM5Y2NlNzZjZjA2ZGUyNGYxMzRlNjZiZWY0N2VhYWUzMTEgcmVsZWFzZTIwLW1haW50CisyMDE4NiA1YmQ2ODZlMGVjZDQxZjYwMDE5ODcyOTRiZmE4N2JmY2YwM2U2NmRjIHJlbGVhc2UyMC1tYWludAorMjAxODcgZDE2ZWRjNzA0ZGExZjU4Y2M1NGQ4MjhmMmFiMzhkYTJkM2Y5ZGMxMCByZWxlYXNlMjAtbWFpbnQKKzIwMTg4IGQ1M2E5Njc5YTkzYmI4YmU4MWFkOTVkM2UwM2JlZjNkMjVkMTY4ZjUgcmVsZWFzZTIwLW1haW50CisyMDE4OSA5Nzc2Y2Y1ZGJmZTM4ZDBjNzg4MWI2ZGVlMmQxYjU1ZDZiYjBiM2YwIHJlbGVhc2UyMC1tYWludAorMjAxOTAgNzZiODlmYTNlZjM0MDYwYTNjYzFkNDZlNGY5YTNlYTVmNDQyNmRlOCByZWxlYXNlMjAtbWFpbnQKKzIwMTkxIGMwMTE0ZWRmZDMxMzc2YTg4NmNiZDdjYWE4ZTEzNTMxOGRmMDViNGUgcmVsZWFzZTIwLW1haW50CisyMDE5MiBlZjEyMjNkODQ0MmRjNTY4MWQ5ZWE0OGVmYTE5NTQzNjcyMDJiYzU1IHJlbGVhc2UyMC1tYWludAorMjAxOTMgNmIwZmY1MjlkNjE1MDI0M2I5MGUwOWU4NmUxYmI2NzQ0ZGRhNDI2NiByZWxlYXNlMjAtbWFpbnQKKzIwMTk0IDdkMDQyNDVlZDc1ZjM5YmYyZTRmZDM0YmNkYTY3MWZhNzVlODg3NmYgcmVsZWFzZTIwLW1haW50CisyMDE5NSBkNjU0N2ZmOTQxNmJhYjgxOWFiODliZGE5ZWIwOGUwMjdmY2EzNTNkIGxlZ2FjeS10cnVuaworMjAxOTYgMDNiYTA2MjQ3NDg2NjMwYWFmYTdlMGY0ZWRjYTIzMDhlMWVmNWUzYyBsZWdhY3ktdHJ1bmsKKzIwMTk3IDgzNmNkZjhkMTI0NWQ1ZjkyYjNkNWQzNmE4NTM2OWQ5NDkxMmQ0Y2IgbGVnYWN5LXRydW5rCisyMDE5OCBlYTMyNmViNDc3NWNjMWM0MGVlMWUyMTJkNWRkNzU5NjhlMDE1MWVkIGxlZ2FjeS10cnVuaworMjAxOTkgNDZhNmMyOGQzNWU1ZGI4ZDE0YTYxNzFjMzQ3NjkyYjRmNDkzZDU2OSBsZWdhY3ktdHJ1bmsKKzIwMjAwIDMxMWU2YWVlZjg1OGFkNTA1MjNlMDZlYTY1MTA1MzMxOTU4OTI0ZTMgbGVnYWN5LXRydW5rCisyMDIwMSAyODhkODA1YWYxNDIxOGYzZjQ5Mjk5NWJlYmIyNmRhZTBkNjQ3ZjQ5IGxlZ2FjeS10cnVuaworMjAyMDIgNTA2YTA4MGQzOWVjZmMyMjkyMzk4NzRhZmUwY2JlNjFiYjJhMWJjNSBsZWdhY3ktdHJ1bmsKKzIwMjAzIDM3ZDllZDU1NDE2ZmYxOWFkNjRlNGYyOThlMzMzNmUwNzQzNjkzNTcgbGVnYWN5LXRydW5rCisyMDIwNCAwY2RmY2NkYjY4NzEwYTEwYzU2NjhkZGRmMzJhZDM0OWU5NDY1YTQyIGxlZ2FjeS10cnVuaworMjAyMDUgYjBhN2ZhZjk4YThlZGIzZjNhZTAzYWM0MGYzZmMzNDdlZWM5NjFkOCBsZWdhY3ktdHJ1bmsKKzIwMjA2IDc2MzVmODgzOGM2ODkyZTI5YzE2MGI4Mzk4Y2QyYTRkNDllNmZlNjEgbGVnYWN5LXRydW5rCisyMDIwNyBiNzM1NDdiZjhiYzI0ODcyOTFjNTBmNWRiM2JkZWY1Yzk3OTdmNjVjIGxlZ2FjeS10cnVuaworMjAyMDggMTFlYmE1YmJmYTE0YWI1MWEzMjJjM2M0NzIyZWQyMTUxZTQ5YTlhNSBsZWdhY3ktdHJ1bmsKKzIwMjA5IDZiZThiYjQ4MDhlMTRlZjlkZGY5ODg2YjhlYzU2ODU5YmI3MmYxN2QgbGVnYWN5LXRydW5rCisyMDIxMCA1N2E1ZjZiMDMzN2QxZTE3Mzg4NGViODU0YTZmOGRmMjE2YjI5NWFkIGxlZ2FjeS10cnVuaworMjAyMTEgMzEwMDY2Yjk5MmYyZjhhOGUxYjc4NzBkZjJhZTkzZmI4YjhhNzRhNyBsZWdhY3ktdHJ1bmsKKzIwMjEyIGIyNWEyNDEzMDIwZTIzNThjZWQ3OTlkNzFkMmRkOTA5ODk1MWYyNjMgbGVnYWN5LXRydW5rCisyMDIxMyA5OTA2ZGIyYTFmZmE3ODYxMTQ3Yzc3OTMyNGJjNDdjNjk5YTk1OGJkIGxlZ2FjeS10cnVuaworMjAyMTQgOTJiNjVmMTIxYTNlOTc2NzIwMWVhNzEwNmQ2MzZhMDViOTE1ZDlhYSBsZWdhY3ktdHJ1bmsKKzIwMjE1IDliOGVhNjM4N2RjNjA5ZmQwYTkzZjRmNDY5YmM2ODgwODEzZTQ3YzAgbGVnYWN5LXRydW5rCisyMDIxNiBiZDExMGVhZGMxOWFkNDA5OTUxYmYzYWYzMDJjMTRkNDlhNDVlNzcwIGxlZ2FjeS10cnVuaworMjAyMTcgZTdmNWI3MGIwNjA2YWJiMGQ4YjVkOTg5M2I1Yzg4YjU3NjAyMjg5MCBsZWdhY3ktdHJ1bmsKKzIwMjE4IDkxMWUyMTFiODkzMGI5MGUyNGZiZTIyZDE5ZGE1YjNhMjAwNzMwOGYgbGVnYWN5LXRydW5rCisyMDIxOSBhM2RlYjIwMWVjZGExMGY4MTVkYWY0YWQ5MjZhMTQ4MzRhODdkNDk3IGxlZ2FjeS10cnVuaworMjAyMjAgYmI5ZTIxNDAzNWUxMjViOTEzNDg1YzI3NTM2ZTM2MGM0ZjU2MzQ3NiBsZWdhY3ktdHJ1bmsKKzIwMjIxIDc2MDc1NDQxOGVlMDI3MGFjNGVkZWI4NWE5YTM5YTZjYzE4N2Y0ODQgbGVnYWN5LXRydW5rCisyMDIyMiAwODA4MjhiZjhkYmRlOGZlMThiMTQ1M2I2YTk2Y2Y3OWE5OTI5NjVhIGxlZ2FjeS10cnVuaworMjAyMjMgNGIzNDZjYzM5ODliYWE5OTNlYTU3NThkYzk0ZGIyZjQ5YjcyZThlMiBsZWdhY3ktdHJ1bmsKKzIwMjI0IDEyZjdmMTY3YWM1MzNkNDZhNGZlZTQyY2MxYjYxYzUwNmU5OTQ1YWQgbGVnYWN5LXRydW5rCisyMDIyNSBkMzI4Y2ZlYjBjNzViYzA0NjRkZWQwMGFkNWM3OGY3ZmEzZDAwNjYyIGxlZ2FjeS10cnVuaworMjAyMjYgMTgxZDAxMzIwZWY0M2UzZjU2NGU3NmQ0MGU4ZmExMGZkMDYxNzM5ZiBsZWdhY3ktdHJ1bmsKKzIwMjI3IGIzZmQ0NGZmYWIxZTkxNjEwMmUyZjZhYjEzZmViMWU4YTQ0NDBlNDQgbGVnYWN5LXRydW5rCisyMDIyOCA5MmI2MGRlZTdmMDgzNWRmMjg5Y2NlNTY4MjE2NjE1YjdiODA1YTU2IGxlZ2FjeS10cnVuaworMjAyMjkgY2NhZTQxMmJiYzNlMjJjZmE2MjQ5YTcwMmE5N2M4ZDI3YjIxMDY0MiBsZWdhY3ktdHJ1bmsKKzIwMjMwIDIxNDZhNzNjZTM1YzBiZGQ0NDk5ZjNlZTliNGIxN2JlODU0ZmYxNmUgbGVnYWN5LXRydW5rCisyMDIzMSA5NmVhMGVjY2RiMzE3Mzc4ODgzNTg4MTZiNjc3MTY2ZmJhMGYyOGM1IGxlZ2FjeS10cnVuaworMjAyMzIgYzMyNzUyYTI4NjUyMjEzZTJjMzdlNjc4MzdjMjFkYjBkMTE1MDUyNCBsZWdhY3ktdHJ1bmsKKzIwMjMzIGE1NzEwNTc4YzJlMDIyMTY2MjkzMzRjMWExYjdjZTFlNWJhYmY4MjMgbGVnYWN5LXRydW5rCisyMDIzNCBhYjRlNGNiMDk0YzFmNjQzMGQ0MzhjOTNmN2FmYzczYWE5ZjI4NzczIGxlZ2FjeS10cnVuaworMjAyMzUgODNlZTYzYmNmMDM2NTk4NzI3ZmI2MjcwM2JhMTJlMGYyMDUzZjhjMSBsZWdhY3ktdHJ1bmsKKzIwMjM2IDk4NzZkNmJhZjg0Mzg5NjM4MWNmYzg2MmVjZGUwOWZhNDFkNTM3ZWQgbGVnYWN5LXRydW5rCisyMDIzNyBkZTk4NTg1MzBhNTUzZGM4NGVhYWRkZTgyMTY5NmJkMTEwYWI5NzMwIGxlZ2FjeS10cnVuaworMjAyMzggZjFkMmU4OGZhMTFkZTMyNjA1ODM1OTBlMjE5NWUzMWY4YWZmZDc3NCBsZWdhY3ktdHJ1bmsKKzIwMjM5IDVhZmZmY2E2NmUyZmFlMjZmMjA2MDI3ZmFiYjBmYzA5ZTcxOWFkNjIgbGVnYWN5LXRydW5rCisyMDI0MCBmOGZkYmViNzM2NjcwOGI3MzM5Y2YxZDdkOGM4NDY0ZTI1YTYwZGVjIGxlZ2FjeS10cnVuaworMjAyNDEgODc2ODYxZjEzNTQzNmNlN2M3OWNmOTZlYzA1YjI5NzAxNjVhYTNmMCBsZWdhY3ktdHJ1bmsKKzIwMjQyIGE5ZWY0NGJiZDk2ODI5MDU5N2I1Njg2NjY5NGYyMzA3ZTgyNzY4ODYgbGVnYWN5LXRydW5rCisyMDI0MyBlNzIyZDQ4ODNlMTk3MTVlZjI4OGE1MmUxNjUzZGYwY2MwM2U0NzdhIGxlZ2FjeS10cnVuaworMjAyNDQgMzMwOGFmY2FhMTMxNTVkNzNkNjNiM2ViZWIzZGQxODM3NGNhN2ZkMyBsZWdhY3ktdHJ1bmsKKzIwMjQ1IDJkMzBhMDk5NzA1ZjM5ZmNkY2VhYWVkODVkNjM0OTk2N2UyN2IxZWIgbGVnYWN5LXRydW5rCisyMDI0NiBlZDNlNjZmMzA4MzdjMjIxMTY1MTZmY2NmZDdlM2I1ZjYzNjkzYTZmIGxlZ2FjeS10cnVuaworMjAyNDcgYWVkNmIxNDM2ZGI0Nzg3MGY1YzgwMDU5NDIzMGE0NDM5OTBiM2RhMCBsZWdhY3ktdHJ1bmsKKzIwMjQ4IDE5NDMzMThmYWUzMTc3YTU4ZWNiZWVjMGYzYzk0ZGM4MTY0OTk1MjQgbGVnYWN5LXRydW5rCisyMDI0OSA0NDY4YThkYTY3Y2EwMTA0MjRlYWVhNzRhNzgyOGNkYmYwZjZmNWY4IGxlZ2FjeS10cnVuaworMjAyNTAgMjhjZjBhNzk0M2NmZDdiMjM1MzFiYzJkZDY4YjE0MzA3MzJhNGJkYyBsZWdhY3ktdHJ1bmsKKzIwMjUxIGNjOGEyMWJhNjQ0OTk4Y2NlYWQ0Mjk2OTI0NTNlN2JmZDhkMjRhM2YgbGVnYWN5LXRydW5rCisyMDI1MiAzYWFlZGJhYzk1YjMxMmJlNWYxMzkxODg0OTk0OTU0YjZmYzYxODZlIGxlZ2FjeS10cnVuaworMjAyNTMgYTE4NDBiOWIxNGYxNDVmMGQxZjEwZDk3MmNhNmI3ZDNmY2U4MDlmMiBsZWdhY3ktdHJ1bmsKKzIwMjU0IDk2MjFkMGZiYzJlNTJmMGQ3ZjQ5ODFiNzNmOTcwZWJmMGU3ZjMzNjYgbGVnYWN5LXRydW5rCisyMDI1NSBjYTU2NWUzZDNjYzVjMDY5N2ZjYTNkM2JlNTE4MzlkZjE1NzZhY2M3IGxlZ2FjeS10cnVuaworMjAyNTYgNmI4ZDkxZWE5ZGUzNDM0MGZkZGE2ZDQyZjIxMmJkZGVlMWFkOTg0NSBsZWdhY3ktdHJ1bmsKKzIwMjU3IGQxMDllYzY2N2VjMjVkOGZlZDEwNjJhMzQ3NmYwZmU2OGYxNDIxYTggbGVnYWN5LXRydW5rCisyMDI1OCA4YTNiYTEwZjEwZjZhMjU0OTE2YWQ0ODBlYWJjYTEyMzg1YjdjMWIwIGxlZ2FjeS10cnVuaworMjAyNTkgMTFlOGJiNGQ4NDVkMmMwYmU1M2ZlMDFhYmJmNTY2MzgxMTdkYzNhNCBsZWdhY3ktdHJ1bmsKKzIwMjYwIDUwNzlkNmUzYjYxNTA4MDA3ODY2NWZjYjRkNjJmZDI0N2JkMGIyYjIgbGVnYWN5LXRydW5rCisyMDI2MSBlMmIzZTZkODUzNDMwYTIxMGZjYmFhZmVmZmFlM2FkMTE1MDMzMWViIGxlZ2FjeS10cnVuaworMjAyNjIgYmI3NWQ5M2Y2YTMxYzkzMzRkZWE2YzM1YWVkODBiZGM0N2FhZGE3NyBsZWdhY3ktdHJ1bmsKKzIwMjYzIGYzOThlNTg1NmZhNzQ2NTMwNTViOGJiYzM4YTYzOTMyOTAwMWIxZjUgbGVnYWN5LXRydW5rCisyMDI2NCA2NWYzNjMyMzZlY2Y3ZmE2YTgzNmFhOWYzNWNkYzFlMjM3NDIxOTAxIGxlZ2FjeS10cnVuaworMjAyNjUgZTg0M2VlZTdhMzNlODYyNWIwNjI2YTQ5N2ZmYTY0MjIzMjlmMWI1ZSBsZWdhY3ktdHJ1bmsKKzIwMjY2IGQzODI3OTIyOTA5Y2EyNTc1NGRiOWM3NjUxZTFkNTE1NDQxNTJjZTIgbGVnYWN5LXRydW5rCisyMDI2NyBlNTRlMTFjMzBlNGIxNTQ5N2MzZjcyY2ZlNDY5ZTE4NGQwMjAzYTAyIGxlZ2FjeS10cnVuaworMjAyNjggY2I0MGU3NzBjOTAzZGQ4ZTBiOTk4OTkxZjJhMTM0YjVmOTI0MjFhZSBsZWdhY3ktdHJ1bmsKKzIwMjY5IDBjODdhYzY3NGNlMTgyMDY3NGE5ODNkNGNmNWQyMzFhZTdhMzQ0OGQgbGVnYWN5LXRydW5rCisyMDI3MCBhODBhODQ3ZjVmNGViYTU4YmUxMDA5NTA0NDZmYmJjNTRmZDE2M2Y2IGxlZ2FjeS10cnVuaworMjAyNzEgNWY2ODc1NGViM2I2YmM4MDA3YzMzZTk3MGZkMGVjYzkxYjhkODFkZiBsZWdhY3ktdHJ1bmsKKzIwMjcyIDMwZTUyNzBkYjEyODNiZjhjZGEwYWE4NmQxNjI2ZGZkODRjMzkyM2QgbGVnYWN5LXRydW5rCisyMDI3MyAwZjZkOGZlNGEzYTkxY2ZkN2NkYzcwOTI3ZjVhNDJhZmVjZGNjYzQ5IGxlZ2FjeS10cnVuaworMjAyNzQgNDYyMmFmNGRhOWUyODJmYjFkY2U3OGE1YWUzMTE5Y2ExOWQ0NGExYiBsZWdhY3ktdHJ1bmsKKzIwMjc1IDhhMmRkOTc4NzNmMjU3NjJmZjRiN2NiMzM5NzBmYTYyNWNiOTM0ODkgbGVnYWN5LXRydW5rCisyMDI3NiBkMzY4NTUyYzJiNzI2MTAxZjlmZmI4NjlhYzY1NjU1NzlhZDk2ODFmIGxlZ2FjeS10cnVuaworMjAyNzcgN2M0YmFjMmY3YjNhYjcxOGUyMzliNzAzNDUxY2U4NTE2M2M5ZDU5ZSBsZWdhY3ktdHJ1bmsKKzIwMjc4IDliMjk3YWYxOGUyZjMxNTA4NDQ5Y2U0NjYyM2I3ZTQ4MTg3YzhmZDYgbGVnYWN5LXRydW5rCisyMDI3OSBiNjEyYjUxOWQ0MWE1NDY5ODc2ZTUzMDlhOWU2YzcxMjZmNGVjNTIxIGxlZ2FjeS10cnVuaworMjAyODAgYmJjYzk4MzczMTJlOGU1OWY2YmM1ODA5ZDUzYTgxZjdlM2NjYTM0OCBsZWdhY3ktdHJ1bmsKKzIwMjgxIDBlYzA2YjQ3NTVkYjcyNGQ1MjZlZGEzOTI0M2UzZjM0Y2M3NGY4MTIgbGVnYWN5LXRydW5rCisyMDI4MiBlNGFiZTc0YmM5NzMyZDcyOGIzMWE1ZjRhNTM5NTEyOTAzYzJlNmU3IGxlZ2FjeS10cnVuaworMjAyODMgNDcxY2UwZmFhNzc1MGY0MjA4ZTY5NTIxNmVjNzQ0ZDc0MWRmYmZjZiBsZWdhY3ktdHJ1bmsKKzIwMjg0IGIyYmM1NjMzMjA0NWFlMDI1MjVhYjkzMWY4ODJjNDA3YzUxZTVkOWEgbGVnYWN5LXRydW5rCisyMDI4NSAxMTJiZDQ3ZTA3OGQzMTkzMGM2YzVjODE3MmE1OGEwZWNhNjY3NDcwIGxlZ2FjeS10cnVuaworMjAyODYgNjg3MzU0OWQ0ODRjNzU4NWQ2MGJkMmJmMzQ3NGU4OGEyYTMyYjAyYyBsZWdhY3ktdHJ1bmsKKzIwMjg3IDRiMDZlNGRiMDA3NWRjM2IwNTViZmVmZGMxOGU2Y2VhM2U0YzNiNDggbGVnYWN5LXRydW5rCisyMDI4OCA3MTdiMGM4ZGU3MWU5YTEyNjdlZTYyY2M4ZDhmYjZkN2MyZmZmZTQ5IGxlZ2FjeS10cnVuaworMjAyODkgODYzZTgwNzNjN2FhZjMxZjMxN2JlODcyZmQxZDc2NTdkYzNjMDlhZSBsZWdhY3ktdHJ1bmsKKzIwMjkwIGJlYjlkMmIwMjg0NjU3YmUyM2ZhOWY5YjM0NDk4ZTJkYWE4OGM4OWYgbGVnYWN5LXRydW5rCisyMDI5MSBjZjhhNTk1Y2VjMzM3NDhiNTIzNjI0MDRmNzMzNTNhNWE2Zjg5YjU4IGxlZ2FjeS10cnVuaworMjAyOTIgMDA0YzliMDMxOTI0MWM1YzA1NDZhYzEwY2I1OWI1NGI5MDQ3YjdlNCBsZWdhY3ktdHJ1bmsKKzIwMjkzIDcwNzYzYzQ3NTJlMmZhM2Y3ZWM2YmEzOTAxMjUwNDZiZjAwMzlhODkgbGVnYWN5LXRydW5rCisyMDI5NCAxMzg1N2ZiMzMwMTc3MGNkMmNhNDI3NmIxYTBiZjI1OWQ0MTBhZmI5IGxlZ2FjeS10cnVuaworMjAyOTUgODUzZDZhOTdiN2Q5YjRkMzg2YzczNWY2Y2YwYTI3MGM2ZTg2NTM1YiBsZWdhY3ktdHJ1bmsKKzIwMjk2IDNiOTA1ZjI4ZjIyNTY5OGM4YjRkM2Y1NmM1MTMwNDdkOThlYWYzOTEgbGVnYWN5LXRydW5rCisyMDI5NyAzNGVjNWUyZmEzNTYxZWNiZjAzYWVhZWNhODU5OWFmYzljMDYyMGE0IGxlZ2FjeS10cnVuaworMjAyOTggMDE3OTFhMDk3NDU2YjZmZTc1MTJlNjA4ZDcxMTEwNDNhMjEyYjBlOSByZWxlYXNlMjAtbWFpbnQKKzIwMjk5IGFmYmI2NWI2MGZhMjAzODE5MzI0MWI1MDU2NjI0NzBlOTMyNmVhOTMgcmVsZWFzZTIwLW1haW50CisyMDMwMCBjOWUwN2JjMzAzYTIzZWQwYzc4M2I5OTA2MWEzMTkyNzBkNjljMjJlIGxlZ2FjeS10cnVuaworMjAzMDEgOWQ3NmQ4NTUyYzM2MTI3NzRkNmFhYWY0NzhlNjQ3OTg2ZDBlMGY5MyBsZWdhY3ktdHJ1bmsKKzIwMzAyIDY5NGI4YzNmMjVlN2M2ZDM3MzFmMTQyNTU5YTg0MmE4YzQ4ODdkMjQgbGVnYWN5LXRydW5rCisyMDMwMyA4NGEzZDcwZWM2ZjQ0ZDY1ZmFlYmM3NDlkOGU5MjM5ODI1NTk1NWQ2IGxlZ2FjeS10cnVuaworMjAzMDQgZjk2NzQ4OWVlM2I2NGJhZDg2ZTc0NWQxNWZkODY3ZTRkMjViZjZmMyBsZWdhY3ktdHJ1bmsKKzIwMzA1IGJkODQ0YjIwYjljODU0NGZiOTE5OTc3OGFmZTc5ZjA4OTcyZGUxNGUgbGVnYWN5LXRydW5rCisyMDMwNiAzNzA0YmUzZGIzMDI4NjI2MGY2MjhiYmZiNmFiYzE4ZWZhZWRlNGZhIGxlZ2FjeS10cnVuaworMjAzMDcgYmFkMmRhZWI3NDQwYzMzMTIwNDJkNTZmODY0MGZlZmQyZDI3Y2Y2YSBsZWdhY3ktdHJ1bmsKKzIwMzA4IDRjNDk3YzVlNzJhZGNlMWRiOGRjYjg1YTI2YzQ5MjEzMGQwMmYxZDYgbGVnYWN5LXRydW5rCisyMDMwOSA2NWE5MjI1MWQ2Yjg1Y2FjMjM1OWUyNjNkODM1ODY2YTdiZDExODg5IGxlZ2FjeS10cnVuaworMjAzMTAgOWRjYjRiZDY1MTU0OGU4NzY5OWE2MjBmMGJjNmY5MGIzZGFkOTZjMyBsZWdhY3ktdHJ1bmsKKzIwMzExIGI4ZmNmNDVkYzZmZGM3NDM5MjNkYjc2NjRjOTQwNGEyYjU3YzU1OWIgbGVnYWN5LXRydW5rCisyMDMxMiA5NjVlZWI0NGU0NTQ0MTIxYzIyMTc0NjkwYzAyNjEzZTEyZTBjMmZjIGxlZ2FjeS10cnVuaworMjAzMTMgM2ZhZGMzN2NmYTkyMDllZDQwNjc2ZTVhMDljMjY0MGEzNzc2YzU2YiBsZWdhY3ktdHJ1bmsKKzIwMzE0IDY0Mzk2MjQzYzExNDFkY2Y5MDg3NjBkNzNjMWQ0MDcwNDViYmI0M2QgbGVnYWN5LXRydW5rCisyMDMxNSAzNDAyYzcxNjZkMzA4MTE0NGNjYTRjYmYyNDJlZWMwMzY4NTU4NDY0IGxlZ2FjeS10cnVuaworMjAzMTYgZjNmOTY0MTc0M2EwN2U4OGRmOWVmYzc5ODY1MjlhYmNmMGRjNjliNCBsZWdhY3ktdHJ1bmsKKzIwMzE3IDYzMmM0ZDViNzViN2E5NmRlYzNmY2EzMmQzYWFhYWI5YTJhYTIxMjEgbGVnYWN5LXRydW5rCisyMDMxOCA3YzYxNzE1NzUyYmUyMDI2YWJiNThiMDQ1MTM4NDA3OTAxMDlkMDFkIGxlZ2FjeS10cnVuaworMjAzMTkgOGVjN2Y2NTZmODA4MzFlNmRjNjYxMmEyNDNlNWU1NjEwNzc5ZjBhMCBsZWdhY3ktdHJ1bmsKKzIwMzIwIDI1N2I1N2JjY2RmM2JlODk0YjJiZDhmZDk3NjdlZDc5MjE2M2E2NDcgbGVnYWN5LXRydW5rCisyMDMyMSAzMTYwZGE0ZGRkODkxYWUwYmU4MDZmZDFmZmUyZWI2N2NhMzA3Nzk4IGxlZ2FjeS10cnVuaworMjAzMjIgZWMwNzVjYzgyYmRiM2Y1N2MyZWY1YmY3OGZjZGQ0NzM4ZjM3YjJkMiBsZWdhY3ktdHJ1bmsKKzIwMzIzIGMyZmIyZDQ3NmJkMzhjZGYyN2FiMzg1YzM0OTQ4MzYyODJiYjAwODUgbGVnYWN5LXRydW5rCisyMDMyNCBlNTAwOTAyNWU2MmYyYzFhZjk4ZmMzNDcwZjMwMTVmYTAyZGM2ZjE0IGxlZ2FjeS10cnVuaworMjAzMjUgYjRiM2NmZmM3YzM1NWZmMjE0YTRiNDRkNTdmMDBmMWFkY2UwZGQ4NiBsZWdhY3ktdHJ1bmsKKzIwMzI2IGJmYzEwYTgwNTQ1YmFhZDg4OTNiMmI5MzE0MWI4YzQ0ZDZkOGI3MjQgbGVnYWN5LXRydW5rCisyMDMyNyBiMDA1ZWI5YmM4NDJkOTdhNWEzMTVkMjFkOTVhYzExYmEyZTgxZjEzIGxlZ2FjeS10cnVuaworMjAzMjggMmNjYzBmMmM5ZTFmMjgxZmEyY2ZjYzFiMmZhMDYzYzc0MmQ5MTU4NCBsZWdhY3ktdHJ1bmsKKzIwMzI5IDBmMzJhYjVhZmZmODllNjQ0YjE2NzcwNjE0ZDg1YWE2NjI2NjUyNGYgbGVnYWN5LXRydW5rCisyMDMzMCA5OGY2OTI0NWJiNjljZDI0N2FmZDQzMjk4NDQ2YmNkOTNhYmI3NDY3IGxlZ2FjeS10cnVuaworMjAzMzEgMDJkNjlhODg3MDM4OTEyMTRiNzg3MjhjNTJjMzRhYWYxYTU0ZWEwYyBsZWdhY3ktdHJ1bmsKKzIwMzMyIDQxYTQyMzI5NGNiNTEzMTI4NTlhNWVjNjA2NmRjMzJmYzNiNWRhNjggbGVnYWN5LXRydW5rCisyMDMzMyBmYmMxMmQ2Y2QwNTExYjk0ZTY0MTRiMDVkNTcwZTAzOWI5YWZmZmU5IGxlZ2FjeS10cnVuaworMjAzMzQgMWNkZmYyODM4YTE3OGVmNDYxZDkyNGJiOWY4Nzk2NDU0YmE3MDRiMyBsZWdhY3ktdHJ1bmsKKzIwMzM1IDc0YjlmYjFjOTYzMzk3OTI4YTNlNWMwZWM4ZGM4ZjlhZTUxMzFhMmQgbGVnYWN5LXRydW5rCisyMDMzNiAyZDUyMTQyMGRiOGYxZTI5MmJlMmQ0YzFjZDcxMThkZTFhZmMzY2Q5IGxlZ2FjeS10cnVuaworMjAzMzcgOTIzN2Y1OGRjYzE5MjI4ZjA5MGQ1ZjYzMmVkODBhMzA1ZDZiZTUzMSBsZWdhY3ktdHJ1bmsKKzIwMzM4IDExMTkwMmM5OTFhOTA0ZjNjYTJlMTQwMjRmYTc4YTBmNTQ0NTQ0MDcgbGVnYWN5LXRydW5rCisyMDMzOSBmMGYwNDY3YTMzMzQyZGFjODY3NjllYzE3YjkxMDM3ODQxOGMwNmY2IGxlZ2FjeS10cnVuaworMjAzNDAgMDE4NGM1MGE4NzUxMGFkYTgxN2ViNTk5YWVhNTkzOWViNDQ1YWJkYSBsZWdhY3ktdHJ1bmsKKzIwMzQxIDA0NzVjOGI3MjIzYmE1OGI4NDcxOWE2OTg3MWEyMWZmNzkxOTc2N2YgbGVnYWN5LXRydW5rCisyMDM0MiA0NWMxODI1MTk2ZWQ2NjAzYTdkMmRhNWQ1OWUyMGFhMjg5ODE4MmFkIGxlZ2FjeS10cnVuaworMjAzNDMgNTFjOGNlMWEyZTI1OTk1M2YyOWRjZjI2YzZiMjAxYjVmY2U3Zjg3ZiBsZWdhY3ktdHJ1bmsKKzIwMzQ0IGY3NGY1YWFmZGM3ZTI1MGE1ZDU0ZDMzNTIzOGY4Zjk0NWU0Y2E5YTcgbGVnYWN5LXRydW5rCisyMDM0NSA5OTQxYzQ0ODE2YzFjNzMwNjg5YmQ0ZjVmYTk0MWU3ZjdmNjg0M2MzIGxlZ2FjeS10cnVuaworMjAzNDYgMWEyZmQ1YzRkY2Y1NzBmZDEwZGNlNDQzODUxMzAwYTg3ZDE0NmUzNiBsZWdhY3ktdHJ1bmsKKzIwMzQ3IGYzYjZhYzEyOGRlOWYxMzc1YjhhNGY4ZDA3NDg3NzhmODlhOGQyZjcgbGVnYWN5LXRydW5rCisyMDM0OCBkOTE1Nzc3ODMzMzU3NjQxNDYxZTQ4ZDkxNmYzMjdiYzFjYmNjOWJiIGxlZ2FjeS10cnVuaworMjAzNDkgNGVlMzQ2YjM1NTI0YTg4NWRkZGVlNDA5OWNiYWFhMTkyNWU0NGYzOSBsZWdhY3ktdHJ1bmsKKzIwMzUwIDNiZGE1OTA3MTM4OTUxMzQxNzA0MWU4ODFlMWI5NGNlYmUwOGRmNTQgbGVnYWN5LXRydW5rCisyMDM1MSA2NmE3YzhjOGRkMjcyMzhmNjQ0MzBiMjJkZmMwZjI4NmRmN2Q3M2JmIGxlZ2FjeS10cnVuaworMjAzNTIgMGQwNTQ2YmQ4NDQ4YWM1MjIwYzAxZmRiODNiMjAxODg3YWNlN2U5ZSBsZWdhY3ktdHJ1bmsKKzIwMzUzIGU4NDZlOTYwZTdmNjMxZmJiM2FhMDYxYWQ1MWMzZTUwMGZhMTQyMTMgbGVnYWN5LXRydW5rCisyMDM1NCA5OWM0NzFjZWQxNzAxODVjZGZjZDgyZGJkZTYwNGI3Yzc3ZWQ1MWU3IGxlZ2FjeS10cnVuaworMjAzNTUgYTAwNGM2MmU2OTZlNmUyMjkxMDZmN2EzODc4MWNhMTkzMWZiYmRiNSBsZWdhY3ktdHJ1bmsKKzIwMzU2IGU4NzQxZGMzNmFkMTNiOTE5NDE5NDg5NGQ2MmFjMjI5M2VhOGEzOTkgbGVnYWN5LXRydW5rCisyMDM1NyBjMjllZTM3M2Y3MThmNzhhYjQyMzQ2ZDVhY2MxNGVhOGNiNjNiNWFjIGxlZ2FjeS10cnVuaworMjAzNTggZjFlYzUyZWY3NzFjMTFhNmI0YmRjNGI3OGI1YTE1NmEzZjcwYTliZCBsZWdhY3ktdHJ1bmsKKzIwMzU5IGYyNDI3MmU4OTYyMTUyNTc4ODUxZGM5MTI5MDNlM2IyMDA1Y2U1YTQgbGVnYWN5LXRydW5rCisyMDM2MCBiODRmMDg0YjI5OTJhODFlNmIwNmMyMDliYjNjZWMzNWY3MDY3NjIxIGxlZ2FjeS10cnVuaworMjAzNjEgNGI5ZTY4NGJlYmI4NzJlYjNiZTI1ZmQ0N2VlNWFjMzNlNmM1YjA1MSBsZWdhY3ktdHJ1bmsKKzIwMzYyIDhhYTRkZTIwN2FlMzY0YjQ0YmFhYzIyODY4ZWE5YjhiZTAzMjFlNmIgbGVnYWN5LXRydW5rCisyMDM2MyA5MjZiNjRmYmE1ZTdlZDU5YTJmNDAxM2FjZDYzNDMxM2I5MDU0ZDJmIGxlZ2FjeS10cnVuaworMjAzNjQgYjRlMmI4ZTlmMWU2ODQyMzY4Zjk2ZmE5NDM5OTVmMjU5MzFlMjdhNCBsZWdhY3ktdHJ1bmsKKzIwMzY1IDI0ZTgxYjQzMDY3ZGM2NWY1YWEyMzgxNWQwOTQwYWM0NDhhMmQ4MjAgbGVnYWN5LXRydW5rCisyMDM2NiAyODg4ZmM2MGJmOWFjZWFkNjRkZTEyODNkMWE3NjY1YmM5ZDkyMGQwIGxlZ2FjeS10cnVuaworMjAzNjcgMzM5YTkzYjAwODRjNzViM2FjNDE3ODZkNjIzMWZlNTQ1NTU4Njc2OCBsZWdhY3ktdHJ1bmsKKzIwMzY4IDE0MjU0NWQyYWFmYzgwYTc3NzNhNmY5MGZhNzUwMGJjZmI4YjY1NDAgbGVnYWN5LXRydW5rCisyMDM2OSA0YWI1ODYyNDY1M2U3ZjU1YWUxYjkwNGEyODBmOTIxNWI5ZDM2ZjRkIGxlZ2FjeS10cnVuaworMjAzNzAgMjVmNTViMmUzOGFjYzgzZDJiZDJlYTE1NGExNzdkOWQ5YTRiNTEwZCBsZWdhY3ktdHJ1bmsKKzIwMzcxIDBiNjllMTdlMDU1ZmE3NGUyNTk3Y2YzZTc2YWUxMWQwMTZhNDEwNGEgbGVnYWN5LXRydW5rCisyMDM3MiA2MTNkY2Q1NDc2YjZlNmRhOWJmZmVlMzNiZWYyZjJiNGU3M2QxMGUwIGxlZ2FjeS10cnVuaworMjAzNzMgZWQwN2Q2YTg3M2U3MzQwYzVlZDljYTJhMGY5MzkyYmQ4Y2U4YjRmOSBsZWdhY3ktdHJ1bmsKKzIwMzc0IDA0ZGFlZTNhYjYyN2EwYTY5MmJhYjkyMTk0ZDUyYjljNmI0OTM3ODMgbGVnYWN5LXRydW5rCisyMDM3NSA5OWFkMDI1N2I5NDJkZWRjMTdjNmIyZGZkZTBhZjhlNTYwMGQ3OGJiIGxlZ2FjeS10cnVuaworMjAzNzYgMjI2NTAzMmVmYzlmMGY0YmM2MjhkYjI0ZjlkM2Y2MzU1MjllNDM3ZCBsZWdhY3ktdHJ1bmsKKzIwMzc3IDcxNzUyYTQxYjU3Zjk4YmE2Y2M2NWZkODhiMTExODJhNGZjY2NiODcgbGVnYWN5LXRydW5rCisyMDM3OCA3ZTgyOWRkMDNmOTdhOGI2OWNmMDlmZjFhYTJmYzYzZjMzMTk1Y2ZjIGxlZ2FjeS10cnVuaworMjAzNzkgNjQwYWZmZGY5OWU1MDdlYTUxNDEyZWI4NzI3MTlkMTlkYWMyZTAxYyBsZWdhY3ktdHJ1bmsKKzIwMzgwIDc0ZTdlOTNlY2Q0MTQxOWRhNjk1NmFkYmYyY2Y3YTFkYzc3NmMyM2IgbGVnYWN5LXRydW5rCisyMDM4MSA5NmJkNGE4NGYxYTQ5NGMyN2U1YzRhY2FiM2RiNWQ0M2Y2YWQxNWJlIGxlZ2FjeS10cnVuaworMjAzODIgZjdjMTJiYTQyNzM3MDhlYzhhOTI5MmE3NzAyNzAyZTYwNGQyNDJlZSByZWxlYXNlMjAtbWFpbnQKKzIwMzgzIDVmNGZjZmI4ZDNkZDM2NjcwMWFjZTMwODNiNGI4MDJmNGZhMDUwNGEgcmVsZWFzZTIwLW1haW50CisyMDM4NCAzNTEzOWE5NDU0ZDQzODAxNWFlN2IyMGE3MjYyZDkyNWYzZjY5NDBhIGxlZ2FjeS10cnVuaworMjAzODUgMTViNzYwOWUzZTJjODkxZDRkNjAyMzRmZTYwZjVhNzI2YmZjNzQzNyByZWxlYXNlMjAtbWFpbnQKKzIwMzg2IGI2NWQwODllODg0MTg5MGExMGY3Yjg4YWQ5ZWFmN2E2YTFlZjFmMDcgbGVnYWN5LXRydW5rCisyMDM4NyA2ZWVhNGNlYjc1MTY1MjgyZTJiOWI4MjljNjBjYjJmZTgyNjkzNDlmIGxlZ2FjeS10cnVuaworMjAzODggYTM0MjkzY2VkNjNiNjEwOWY0NzVlNjVkODgzNjZmMTJjMWY3ZDRjYiBsZWdhY3ktdHJ1bmsKKzIwMzg5IGU1MjZkOTI0ODk2NWY0N2Q0NzM1Y2I1NTRlZjA5MTU0OGRhMDBiYjYgbGVnYWN5LXRydW5rCisyMDM5MCAwYjA2MGNmNzYyY2U3Mzg1MTllOTJlOWVhNGZjNDcyYWQ4MjcyMGZhIGxlZ2FjeS10cnVuaworMjAzOTEgNmEzNzc2MjAxNzUwNzVmZDNjYjk3NmRmZDAxZWI0NWZhM2M3YTczNCBsZWdhY3ktdHJ1bmsKKzIwMzkyIGY3MmRjZDY3Y2NjYjA5Y2IxYTgwMTQ5ZDQxYmQ1NjRlNGE1ZTBjMWIgbGVnYWN5LXRydW5rCisyMDM5MyA4MDZmZDg4MDE1ZjUzYjczOTE2MjY2ZWE0YTZhNjE3MTJlOGZkNjMyIGxlZ2FjeS10cnVuaworMjAzOTQgNWU5OWExZDBlYTRkZDc5MDQ0YTcwYzAxMTRkMjcxODdkYmYxZTk0OSBsZWdhY3ktdHJ1bmsKKzIwMzk1IDYxZDk1NGU3YmU5OTIzYTQzNGVjOTc4M2M2ODA3ZTNlNjQ0MWFlZTkgbGVnYWN5LXRydW5rCisyMDM5NiBjNWJhYjc5NGRjZGU2NDQ5YzI4NTdiMGEyY2I2NzI2YTYyNjczNmY5IGxlZ2FjeS10cnVuaworMjAzOTcgMzI3ZWZiNTlkYmNkZTdiNjBjYmEzOGMzYWM5YzM4ZjJhZjczMTc3ZiBsZWdhY3ktdHJ1bmsKKzIwMzk4IDhlMTQxNWVmOWIyOGQ4MzI2ZWJmZTI1YmNiYzVjNDExYzYyM2M2NzAgbGVnYWN5LXRydW5rCisyMDM5OSAxMTE1M2MxNDE5OTkzMWFhYTY0NmIxMTYyYzc5ZDdmYTU5NTQ4MWMzIGxlZ2FjeS10cnVuaworMjA0MDAgNTVlZTE1YzRlZWU2ODNmNGFhYTI1MGIwOTQ4MmY1ZTRiNzJlYjQyZCBsZWdhY3ktdHJ1bmsKKzIwNDAxIDA2OGZiNThhMTFkNDg2ODFjMTVhZTk3MDNiODVjMjAyMmFmYWM5NzIgbGVnYWN5LXRydW5rCisyMDQwMSBkNjExMjc2ZTlhZDUzYjVkMzJkMWU4MDY1ZTFkODExYzMyZjdkOTZmIGxlZ2FjeS10cnVuaworMjA0MDMgN2I2N2ViMjZiMzlhYjY4YmY1NjJmNzM2MmRjOTVkYjVlNGFlNjQyNyByZWxlYXNlMjAtbWFpbnQKKzIwNDA0IGZkMDY4M2NiNzMwMTJmYWFjMDVmYjNkMGM5MTY2NDhkNDJkMTM2ZmUgbGVnYWN5LXRydW5rCisyMDQwNSA5MGFlMzdmZjYxN2ZjZWI2MDQxNjM5MjkwMTcxY2Y1ZDMzNWI3OWU3IGxlZ2FjeS10cnVuaworMjA0MDYgNzZmYWU2MTQ1MjZjZWMxZWI2YjU1ZGE5NWI5YzZlZGUyYzcwODdhYSBsZWdhY3ktdHJ1bmsKKzIwNDA3IGM2NTFjZmQwZmZkNDg4YTVjYzM3Y2M5ZDhkOTYwYmFmY2Y3NTRlOWIgbGVnYWN5LXRydW5rCisyMDQwOCA3NzNjNjRkMzhhYzY4OTdjZTRlOTk4YWI0ZDZlYWE2MDUyMzhkZGY1IGxlZ2FjeS10cnVuaworMjA0MDkgODE4MjNjZmI1YjE0NjgyM2IzNjIxNzJkZDgyOGIzZDAzYTgxYTlmZiBsZWdhY3ktdHJ1bmsKKzIwNDEwIDMzZDcxZTgwYTA5Yzc3MzE5MDk0ZGRhYTA3NDIwZjY5NGUzMjE5ZDIgbGVnYWN5LXRydW5rCisyMDQxMSAxZTIzZDkxYzBhODIxYzA2ZGM2ODI3MmI0MDJhZWMwZjY2NWZkMDVmIGxlZ2FjeS10cnVuaworMjA0MTIgZjkzOWNlNTJhNzM0ZDVkMmY2YjA0YzIwNjgwZDcwYjEzYjEzNmNlYyBsZWdhY3ktdHJ1bmsKKzIwNDEzIGY5ZGZkNTg3YzE0MmI2OGRkYmRmZTljY2ZjOWRiZTM3Yzc1MTdiOTEgbGVnYWN5LXRydW5rCisyMDQxNCAwNWJhZDJmMDViZmE2ZWNlZjJmMTRlNDA4NzNhZjZiYjhkN2ZkYjVkIGxlZ2FjeS10cnVuaworMjA0MTUgYzljYWU1YTcwYjQ4Mjk3MjEyNTA3ZWJjNDhiZWIxNDdiOTkwY2UwNyBsZWdhY3ktdHJ1bmsKKzIwNDE2IGIyODQwYTNjNTYwMWQ3NzQzMDAwMjQxZjY4NzFlNDVmYmY5MmU0OTUgbGVnYWN5LXRydW5rCisyMDQxNyA4Mzg5YzRkZjQ4OGRiMDViM2UwMTUwYmI3ODczZDAzNWIyZTM2N2NiIGxlZ2FjeS10cnVuaworMjA0MTggNzllZmJjOWEwM2RlZmMzMmUzNzAwOWUzOWQ2YTVhMjdjZmE2MzI0MSBsZWdhY3ktdHJ1bmsKKzIwNDE5IDVmYjBjNDY3NTNmOTgzMDEwNzczYzI5MjlkZjE3NzFlMjViODdjMzQgbGVnYWN5LXRydW5rCisyMDQyMCAwZjVhMjZhYTRlNGEzMGFlNjRiM2QzZDFmNmRmNzkyZjQwYTQ5NTc0IGxlZ2FjeS10cnVuaworMjA0MjEgMDFiZTA4MzMzMzA4ZWEzNTNiYzQ3ZDZjNjQ5MGMyMzE4YTRmMGEwNSBsZWdhY3ktdHJ1bmsKKzIwNDIyIDUwMGQ1MzQ2MGY1NjA4MzU4YjA2MWFhNTg2MjM5MWVlZDUwZjFjNjEgbGVnYWN5LXRydW5rCisyMDQyMyBjNDQ0MmZiOTlkMjY1ZmIxNDk4YzkxMzg1ZTI0MWNjOTU4NjA5ZTI3IGxlZ2FjeS10cnVuaworMjA0MjQgMTdhNzFkMmI4MWY3Y2Y3ODU0MmNiMzUzOGY3OTY5Mzg5OGU4MWYwOCBsZWdhY3ktdHJ1bmsKKzIwNDI1IGM0OTdmYTNmZTM4YTJlM2M4NWQ5MjZmZTFjYWYzOWY1MmNkYzRjYzEgbGVnYWN5LXRydW5rCisyMDQyNiBkZDZiZTYyNWE5MjMzZjg1OTU5MDIxODk0YmUwOTNiMDI1OTM2ZjI3IGxlZ2FjeS10cnVuaworMjA0MjcgMWNmZWY4YWRlMjcwNzM5MDM0MGU5NzIyYjYwZmUzNGRjMWNmMTM4NCBsZWdhY3ktdHJ1bmsKKzIwNDI4IDAyNTkyOWMxNTMxZDNkNzZmNmRlNGNmN2JmMmNlOTFkY2RjNWVmNGQgbGVnYWN5LXRydW5rCisyMDQyOSA4M2M3YjRiNzU2NjhmZmNkNDcyMmVlZDUxMzljMTBmOGI3YWQwZTI0IGxlZ2FjeS10cnVuaworMjA0MzAgZDJkYTY4MWNjYjU0ZGY0YjBiMmU2ZTNkZTc2M2MzYzBjODBiYWE3NyBsZWdhY3ktdHJ1bmsKKzIwNDMxIGUxYzUwN2NkYzZmMWY3Y2ZkNzcwMGU4ZGVhNDBmOWQzZjllYmY1NDYgbGVnYWN5LXRydW5rCisyMDQzMiAxNjJmYTZiMTM2NmYzYjRhNDdjMmNkYWIwYjQ5MmE3OTczMGI4Zjg2IGxlZ2FjeS10cnVuaworMjA0MzMgZjE3YTgzMGUyNWVhYjM0ZTIxODAxNTU3M2E5OWFjMGVhODY2YTVjZCBsZWdhY3ktdHJ1bmsKKzIwNDM0IDUyYThlMzVkZjEyNzk5NGMyOGI1ZTUxMTcxZjhjYzBlOTY4NDYyNWQgbGVnYWN5LXRydW5rCisyMDQzNSBlMGE1YTYzYWQ3NTY5NjFiZGI2YjQ0YjAwODA0MWRhNGQ2MjUzYWJhIGxlZ2FjeS10cnVuaworMjA0MzYgNDQ5MzE5OWQyYjk1NmVjMThjYmJjMmJmMzNlODIzNDA1ZDY5MGUyNiBsZWdhY3ktdHJ1bmsKKzIwNDM2IGZmMDY1ZTY3NGFmNmM5YWI4OTViZDllZmY3ZDllOTAzOWEzNzZjN2QgbGVnYWN5LXRydW5rCisyMDQzOCA0OTA4NWJiN2JjZDk5NDE2OTljOWEwYWYyOTVhZGRkZDY1MTZjMTQzIGxlZ2FjeS10cnVuaworMjA0MzkgZTUyMmVkODBmYjM5MzNhNjFiNmE1YWEwYzdiZmNlZTViM2ZjOWE1NyBsZWdhY3ktdHJ1bmsKKzIwNDQwIGRhNWVhYjMzMTQ3Yjk1OTViMDRjMzI0YmQ3ODNkM2YyYTUwNTUwYzggbGVnYWN5LXRydW5rCisyMDQ0MSA2MjUyNjkzYWZkOWFmMWNiZDlkNmQ2OTQ2YTMyMzc5YjA2Y2RlOGMzIGxlZ2FjeS10cnVuaworMjA0NDIgMzU0YTU3MWEwNWI0ZjRlNTEwODE4N2M1M2U0M2RkMzUwMjljMjhlOCBsZWdhY3ktdHJ1bmsKKzIwNDQzIDY5M2ZhNmI0MWRmYTVlMGJjZTZhMjVjZjU1MDg3Y2NiZDIwZDhkNjIgbGVnYWN5LXRydW5rCisyMDQ0NCA4NGQ3ODM5YmRjZjYzZGMwZTM1OTRhYzg5YTQ5N2M4MWRlNzA5ZmQ1IGxlZ2FjeS10cnVuaworMjA0NDUgY2JjOWY4ODY1NTk1ODljYzRkNDA4OThiMWMwODEwMWNmMWZjOTM3YSBsZWdhY3ktdHJ1bmsKKzIwNDQ2IDA1NDM2YTc0MDEyZDFjNjAyNmQ5MjkyNTFlYWNhZDZhY2E3OTYyN2MgbGVnYWN5LXRydW5rCisyMDQ0NyAxZDk5NTFkMTI2ZjVjMzQ1OTA4ZTMyMDUyNTQ1ZDc4ZTM2ODMwYWM4IGxlZ2FjeS10cnVuaworMjA0NDcgMDIwZTk1ZDgxODBkNzk0M2ZlNTQ3MDFlMWRiMGE3ZDdkODdlMmIxZSBsZWdhY3ktdHJ1bmsKKzIwNDQ5IDE5Njg2YTYyNzlmNDc1ZWI4NzExNzU4YjRjYTMzZDI3NjNjMjZkYjYgcmVsZWFzZTIxLW1haW50CisyMDQ1MCBmZmYzMDIyMWQxOWEzNGMwZWViZmRkZGEzMGI2NTk3NWE2ODZjNDhlIHJlbGVhc2UyMS1tYWludAorMjA0NTEgNzMyZGRlZTY4OTU3MjA4YjFlN2VmYTI4MDk5NzMzNDk3NTBjOGM0NyBsZWdhY3ktdHJ1bmsKKzIwNDUyIGQwNmJiYjhjNDkzYWMwMTY5N2VlZjQwMTQ4NGExYjRjODVkOTRkYTQgbGVnYWN5LXRydW5rCisyMDQ1MyAyOGMxNGE3OWFkMjI1YjUzMjE1ZjNjZjQ0Mjc5Y2VmYTIwZTg2N2FjIGxlZ2FjeS10cnVuaworMjA0NTQgZGI5MjhhMjc3ZjhiMmU4NDg1MzNkMzk5ZGJiMjYyMzI1ODcwNTc4ZCBsZWdhY3ktdHJ1bmsKKzIwNDU1IDM2MjMyZjU0MzIyMGVlZGM4ZDNhZjdhMTE0OTMzNjM2NTdmNzZmNmYgbGVnYWN5LXRydW5rCisyMDQ1NiA4OTVmYzVjOTU3NjNlZDEwZDdhNGQ3NGRiOTgxM2MxMWRhMTQ3MzhjIGxlZ2FjeS10cnVuaworMjA0NTcgMjgzNjgzYjVlNzY3Yzc5MTRlODE4MGVlZmU5YTA4MGM2ZGUzNjc4OCByZWxlYXNlMjEtbWFpbnQKKzIwNDU4IGI2ZjA4ZDI3OTViNWUyNDQyYzhmYWFmMDUxZDlmOWVkMGVkNDg3NjcgbGVnYWN5LXRydW5rCisyMDQ1OSA4OGE1Yzc2ZmZjOGQzZDhhZWUzNDI0OTYxYzlkYzdlNWQyZTIzMjhhIGxlZ2FjeS10cnVuaworMjA0NjAgNDJiY2FmZmE1ZDliMWFlNzQ3YjNjNTJhNjgwZmM3OTdhMTUwNGJhYSBsZWdhY3ktdHJ1bmsKKzIwNDYxIGQ5NDQ0MjNlNmZmZjZkYzI2Mjc2ODNjZDAyY2U4NmIwYzEwYWM0OGUgbGVnYWN5LXRydW5rCisyMDQ2MiBhOWFkOGRlYWMxN2Q1YjJmYjI2ZDM5MTNiYjZiYzQzY2E0NmM4OTM3IGxlZ2FjeS10cnVuaworMjA0NjMgMDQwNWM2NTdkMmFjOWZkZGYyZGZmNjdkOGJiNTNjZTNjODc0ZGM2ZiBsZWdhY3ktdHJ1bmsKKzIwNDY0IDc1ZTMyMmQ2MDRmMTZlMjk4NzJlZTMxZjlkMDFmMTA2ZGFlZDg3OGYgbGVnYWN5LXRydW5rCisyMDQ2NSAzZWFjMjBhZmQ1NGFhYWQ3NDc3MjY2ZGFjYzkwNDJmNGQ5MjY2NTNiIGxlZ2FjeS10cnVuaworMjA0NjYgNTE4ZGI0NTQ4NjMwMTlhNGU4ZmFiYjNjMTRlMmFmODk0NTQwYzNhOSBsZWdhY3ktdHJ1bmsKKzIwNDY3IGQxMTJmMTM1YWY4ZDE0MTlmMzc2NzJlYWZjY2U5NzU0Yjg4N2M5MGYgbGVnYWN5LXRydW5rCisyMDQ2OCAwZGQ1ZDZkOWE5NTJhNmYxMTEwNTQ2MDgzNDQ1MmE0YWMyMWEzN2U2IHJlbGVhc2UyMS1tYWludAorMjA0NjkgNzA3NDMwMzg0NjAzMTkxN2MyNjMwZDNmOThjZWVhODU2ZDEzZWI3NSBsZWdhY3ktdHJ1bmsKKzIwNDcwIGNjYzQ0ZTU0M2JlZWYxN2ViODQxMDhiNDU5ODFmN2NlM2ZjNTAyMjcgbGVnYWN5LXRydW5rCisyMDQ3MSAzZGQ5ODYwZTRlMmQ0YmQzZTdkODI0NjI0YzI2ZGNlNDlkNGNhZmUyIHJlbGVhc2UyMS1tYWludAorMjA0NzIgMjI4ZjRiOGQxOGYwMWE5OTA4NzM5YjQxYjcyZmI2NTc1MDgzMzM1YyBsZWdhY3ktdHJ1bmsKKzIwNDczIDQ1MjY2NmNiMjgzZGY4YjkyNDViMzM5MDVmYThkOTkxN2YwMzBkNDYgbGVnYWN5LXRydW5rCisyMDQ3NCBjNjU3YTM5Mzc5MDIwNzcyNjVkZTBhZGM0YTA2ZWI3MWU4NTkwNTFkIHJlbGVhc2UyMS1tYWludAorMjA0NzUgYzE5MzdmYWFiYjIzNzQ4YTRlMjgzZTdjNGU5MGM3ZDJhYjc3YTBhMiByZWxlYXNlMjEtbWFpbnQKKzIwNDc2IDJmY2IzZmE2N2UzYjY4Nzg2NjRjNTJhMzQ3OWNjYzFiYjMyYTcwZGQgcmVsZWFzZTIxLW1haW50CisyMDQ3NyAwZDcwZGFlYjg5NmUxZWYzOWI5MDQwMzIxOWZmMjRjOWU0ZWZkMDJmIHJlbGVhc2UyMS1tYWludAorMjA0NzggZjk5ZGYyYTBlMmNmOWM2MjMxMThhYzZlOTkwMDE4ZjNiZmIwZDJjOCBsZWdhY3ktdHJ1bmsKKzIwNDc5IGQxNmRjMjZlYzQyN2FiMDBiOTU0MGU4YzgwYzE2MGUxNzgyNWMyZTMgbGVnYWN5LXRydW5rCisyMDQ4MCBjNWY3MTkxY2U2N2U5MzRiZDFmMTJiYzVkZDE3Y2UzYTU4NjFiZThkIGxlZ2FjeS10cnVuaworMjA0ODEgN2ViODdjZjE2YTUzNjBjMTQ0YmM1MjlmMjlmMDAzM2FiY2M0NjNhYSByZWxlYXNlMjEtbWFpbnQKKzIwNDgyIDVhNTgwNWE0NWRiZjQ5NDExMWUwYWFmOGY0MjFlZjYzMWY3MTg1NmQgbGVnYWN5LXRydW5rCisyMDQ4MyA5NmY5Yjg2YjdiM2RkZDY3NjBkMGVhM2Y3OTYxMWZjNTgwNGQxODIxIGxlZ2FjeS10cnVuaworMjA0ODQgMWUzMDQyYTRlNjBlMmUzY2YxMjQ3ZjcwOWNjZmI5YWE5YTE4MDQ3OCByZWxlYXNlMjEtbWFpbnQKKzIwNDg1IDQ0YTNhYzU5YzI2OGRkOGVhNTIwZjhmYWRiODA4MmU4ODVkZWIzYjkgbGVnYWN5LXRydW5rCisyMDQ4NiAxZjNhMTk0ZTIxZjMxZjQ1N2ZiZGQ0M2I3ZTZjYzkyMjk0M2MyYTlhIGxlZ2FjeS10cnVuaworMjA0ODcgMDBhNmIwNjA1MTEzNTM1ZTNmMzE4ODM4ZTQ4NTcxNjU4OWY2YjZiYiBsZWdhY3ktdHJ1bmsKKzIwNDg4IDU2ZjFiOGJhNWNhMTdkMWJkMjk1MWFmYzU4NTVmNDE4NDk1ZDE1ZTEgaXRlci1icmFuY2gKKzIwNDg5IGJmOTRhZjM5NmIxZTEwN2FkM2NkOGYxMTY3MTZiMjc2ZWE4MTJkYjggbGVnYWN5LXRydW5rCisyMDQ5MCAxZDcyNmY1Y2Q1N2EwZmRmYmE2MjJmYWFhMzVmZWMyZDY3NmM5ZTJiIGxlZ2FjeS10cnVuaworMjA0OTEgMWI0OWIxNzdhMTA1ZTEzY2NhMWYxYzRlN2I0MWZlZWJjNDY1ZGIyNiBsZWdhY3ktdHJ1bmsKKzIwNDkyIDMyZTdkMDg5OGVhYjg1ZGU4MTM0ZjkzMjY4MGE4NWM2ZTdhYmNlYzAgbGVnYWN5LXRydW5rCisyMDQ5MyBjM2JiMGZmMzk2ZGNjNjMzY2I2NzE5NmE0Mzc3NjEzM2Y3MDIzZmY5IGxlZ2FjeS10cnVuaworMjA0OTQgZTE1YWI0ZTY1MmFkY2I3ZmE1NTZhMTgxNTRjYzExNmQ0OWM3YjU2MiBsZWdhY3ktdHJ1bmsKKzIwNDk1IDFmZThlNTBlNmUxYjk4MmQ3YjdkZDFmNjhlNmE5NGQ0MDZhMzViMzUgbGVnYWN5LXRydW5rCisyMDQ5NiBiNmRiZmM0NWFjOWJmMTkwMzhlMWNkMzI1OGQ5YjlhYzIwODQyZjM5IGxlZ2FjeS10cnVuaworMjA0OTcgZjYzZjc0OTM2NGVmZmRkMzZlMGY3Yzg0OTkxOGQ5YjY3OTMyOTU1NCBsZWdhY3ktdHJ1bmsKKzIwNDk4IGQ2MzhlNDE5YzMwNDUyZDlkMWQ3ZmU5YTk4NjFmZDBiOWQ0NWVmM2QgbGVnYWN5LXRydW5rCisyMDQ5OSBkMzI0YWUyODkyZmZhNGFiZmIyMTdmNWE1OTg5YTdkMmQwOWE5MGU5IHJlbGVhc2UyMS1tYWludAorMjA1MDAgNGQ3ZmIyNGZlNzk1M2Y5MGY4MzY0YjJhMWZhZDkyNmIyZTZiYmE2NSByZWxlYXNlMjEtbWFpbnQKKzIwNTAxIDRhYmQwNzJhYjNkNWI1YmRhMWNkNmFjYmQwYWY3MTI5MjIxM2FkNWEgbGVnYWN5LXRydW5rCisyMDUwMiAzODdlODBlMTFhNzk1ZmNlNTY3NjdjZjQ5ZmFjMzIxYTNlN2NkZjFlIGxlZ2FjeS10cnVuaworMjA1MDMgMjJhZjE1Zjg0MTBhOGIyNzczNDM0ZDlhZmNkYWMyMjhjMDQyMTg0MiBsZWdhY3ktdHJ1bmsKKzIwNTA0IDc5ZjBjZDNhNzFhMWU5OTZlZDg0M2EyMGM3MTcwY2I4ZGNiYzkyY2UgbGVnYWN5LXRydW5rCisyMDUwNSA2MjRmYzk3MTNkMThiMTEwMTU2ZGZiNjY5MmQ2YTVmMjYxZjBhZjg0IGxlZ2FjeS10cnVuaworMjA1MDYgMWViMDBhMTIzYTBlY2Q3ZDY4MTQ2MjA5MDQwMzViMGJjNTk1MWJkNiBsZWdhY3ktdHJ1bmsKKzIwNTA3IGMxOWQ2ZGI2ZTk5YjdhYWM3Y2Y3YzhlYzlhMjBmYWM1NTgwNjgyNjQgbGVnYWN5LXRydW5rCisyMDUwOCA3ZGNkYjE2YmQwNjhjY2FlYzU5MTc0NzU2ZDc5OWMzYjQyOTc3NDQwIHJlbGVhc2UyMS1tYWludAorMjA1MDkgMTg4NTQxN2Y0NWRhMzk4NTViOGM0MjAyODM2YTJmNDNiMDA2N2UwYSByZWxlYXNlMjEtbWFpbnQKKzIwNTEwIGI4MzBkZjA4M2E5YWRkMDcwOWI2OGQwYjUxOTIzMTZhMDExMTg1ODYgbGVnYWN5LXRydW5rCisyMDUxMSA3YWNiYTc4ZTFlMDkxZGJiN2VlYzI5MDgzMDE2ZjViYjkxYzE3OGU2IGxlZ2FjeS10cnVuaworMjA1MTIgYWFjNjVmNTBkZjZmZjE0NGI2NzAxZmU1MWExNjNiMzBhNmJjZDAyYyBsZWdhY3ktdHJ1bmsKKzIwNTEzIGI0NGJhN2MwMTIxNzc1ZDY0NDEwY2YxYzkzZDAyNzViNWM4MmE0YjQgbGVnYWN5LXRydW5rCisyMDUxNCAxYjczMGJmM2Y4ZDJhYzFkMTUyMzdlYzllZWU0ZDUyZDI2N2RmYzZkIGxlZ2FjeS10cnVuaworMjA1MTUgZWZiNWM4MTRmZmI2YWI0ODU2Y2U4MjJiZjNjZWE3MzE2MzNiYzZkMSBsZWdhY3ktdHJ1bmsKKzIwNTE3IDk5ZTk0NmE4MjY5OTIxNzA2MGI5NWRhNDYyYWI3ZjdhZmIwMDZiMmEgZGVzY3ItYnJhbmNoCisyMDUxOCBlMmFmOTBiNjFiMmJkMjY3OWI0ZWFjY2UzZjg0ZDM1ZGM2NjRkYzE2IGRlc2NyLWJyYW5jaAorMjA1MTkgYjdhNzEzNWJjY2M4YjNlMWFkMTQ4NWU3Zjc3MGVlNmQ0MTFkZThhMiBkZXNjci1icmFuY2gKKzIwNTIwIDBiNWQzZTAzMTIwMThhZGNjZDA5MDA3NmViZTExZjBhOGRjYmZiMDcgZGVzY3ItYnJhbmNoCisyMDUyMSBjOTdiMzcxMzZkODNlMzUzMDA1MDliZWE1MmE0NWIxMWFlMWVhYmEzIGRlc2NyLWJyYW5jaAorMjA1MjIgNjgxOTMxMGRlODI4NDQ3Y2RkZmZmMGQ2MDE2NTA2OTFhZmQ1NTliYSBkZXNjci1icmFuY2gKKzIwNTIzIGExZjA3ZmNjM2Q0MTNmNzUyN2Y0ZmQ5NTIyMjBlM2M5YzcwM2VjMTMgbGVnYWN5LXRydW5rCisyMDUyNCA0NGEwYTlhMjc3ZWY2OTFhM2NiM2RiNjg1YWYxMDU3YjkzODYwODQ1IGxlZ2FjeS10cnVuaworMjA1MjUgMTY4NjA4MGE3YzZjMzc2ZDM3YjA1ZWUyNTIyOTdmYjkwNDc4ZDQ5MSBsZWdhY3ktdHJ1bmsKKzIwNTI2IGQ5MWZjMDIyNjhkOGQwMTBiNzI1YjEwZjAwYjU3NGM5ZTEzZTdjYWYgbGVnYWN5LXRydW5rCisyMDUyNyA5YzExMzJmMzA5NWEwNjNhZTRiZTZjMzg3YTYwNzIyZTE0NTQ2ODM2IHJlbGVhc2UyMC1tYWludAorMjA1MjggOTUwZjFjM2E4ZTZhYTE1ZjFkNDM3YTI4MjIxOTAzMTZkYjJhMDM2NSByZWxlYXNlMjEtbWFpbnQKKzIwNTI5IDdlOGVkNmUzOWViZDBkNzU1OTNmMDFhZDMxMzg3N2U5MWRlYmIwN2UgbGVnYWN5LXRydW5rCisyMDUzMCA5MWNiZDAxYjg1Y2JkZjkxYWMzNTFmN2Q3ZDEwZDYzYzcxOTkxNmY5IGxlZ2FjeS10cnVuaworMjA1MzEgYTk0ODVkNDA0ZjA1ZDI0MTA2MzcxMTQ1MGExOTc3NmNiODg1NDU4ZiBsZWdhY3ktdHJ1bmsKKzIwNTMyIGRhNDgwOTk0N2EzMjEwNWI4ZjRkMmI3NTI2MWNjZjFlNTU2ZTI0MDEgbGVnYWN5LXRydW5rCisyMDUzMyAyNDkxMjNjMWY0ZGMxMTM0MGE0YjQwYzdkZjQ1ZDJmYzMzZTQ0NjdhIGxlZ2FjeS10cnVuaworMjA1MzQgZmNkZGU2ODAzMzFlNWFlY2M0ODQyYjIzZjEwMDM5ZDAxNjU4MmYyZiBsZWdhY3ktdHJ1bmsKKzIwNTM1IDdmNWUzZTZiMmEzOTIwNzUwMGMyMGUwOWM3ZGIxZmE1ZGE1NTRjZTUgbGVnYWN5LXRydW5rCisyMDUzNiAwYmMzMzc3ZDBkNzIwOGJjMjIzOWJhYzQwNDc4YzYwZmU2NjAzNjg4IGxlZ2FjeS10cnVuaworMjA1MzcgYjdkZjg4YTc4YWRiYWI4MWQ5Zjg3YjY4MDU5OTk2OWY1YWYwZDZkOCBsZWdhY3ktdHJ1bmsKKzIwNTM5IDk5MjFhOWQyN2Y3MjhjNjE5MDU2MTNlZjYyZWFiMDNmMTljZTIzYzUgbGVnYWN5LXRydW5rCisyMDU0MCA4ZmY3NmNmMzBhOGNjMzdjZjZlZWEzNmNmNjA0YjRiZWI3OTliODQ4IGxlZ2FjeS10cnVuaworMjA1NDEgN2Q2NzZiNDIzN2E5OTMyZjkxM2ZiMjgxMzE3ZGMyYzkxOTEwMTAzOCBkZXNjci1icmFuY2gKKzIwNTQyIDMyZTczNWJlZjBiYzI5YjA1NjkzNjY0NzRkMTEzY2NiM2VhODg1YjcgbGVnYWN5LXRydW5rCisyMDU0MyBiZDY1Zjg4OTNiZTNhZWY0MDUwMTRjNWEzMjc5Y2NhYTMzM2QxMTljIGRlc2NyLWJyYW5jaAorMjA1NDQgYjEyNTQxNjM5NGZhY2EzMDY0ZmZkN2YyMTI4MjBkYjRlYmY2NzM2OSBsZWdhY3ktdHJ1bmsKKzIwNTQ1IGExOWU2OGUzNjVjNzU3MWQ5Nzg0OTQ2MTMxYjM4ODU3ZGMyMWZmYzMgZGVzY3ItYnJhbmNoCisyMDU0NiA5OTM0MjI1ZmUyOTc4Mjc0MGJmMGJmZWYwOGUyYTYwMGZiNjg0ZGMwIGxlZ2FjeS10cnVuaworMjA1NDcgOWJlNzc1OGE4Yzk0Yzg4OTY5NzQzMTlhNjMzMGRlMjRkZDMxMDhlNiBsZWdhY3ktdHJ1bmsKKzIwNTQ4IGIyODIzNjM0OWRlNTE0NzM3MTExZDNjNWU2NmM0ZjExMTIyYWIzNzggZGVzY3ItYnJhbmNoCisyMDU0OSA5ZTgxZDM5MWI3NjU4OWQ4NmZhY2M0NWRhYzJhZDM1NWMzNzAwNTY3IGRlc2NyLWJyYW5jaAorMjA1NTAgOTg3Y2ViOWVjMDIzMzNkYzBiMWQwMzUzNjU0ZGI3ZDc4NWQyOGM5OCBkZXNjci1icmFuY2gKKzIwNTUxIDg4N2I1Mjk3NjUyYTNjNmZhZmFmMGQyZWU0YWJiNjJiMDdjYTE0YzMgZGVzY3ItYnJhbmNoCisyMDU1MiBlMDZjMzZjMTNmMTI4NjI0M2VkMDg1ZGYwNTA1NTQzNTc4MWU0OTE0IGxlZ2FjeS10cnVuaworMjA1NTMgNTNlZTBmYTY3NjYxN2E5MTdjOWE4MmE5ZTcxMWRjMjZlNGFmMDBmMCBkZXNjci1icmFuY2gKKzIwNTU0IDAxM2RlYjVlMTcyYmY1Yzk0YTEzNmUxMTdmYTA1MTVlNzdkMGI3YzUgZGVzY3ItYnJhbmNoCisyMDU1NSA3MDM3ZDFmNmU3OWFlYjQ2OTQwMDFmN2Y5NjEwODQ2NmY1MmNmNTI0IGRlc2NyLWJyYW5jaAorMjA1NTYgNTg3ZGEyOWQ2OWQ1ZDBjZTk3MTQzNTQxNDE0Nzk2ZDZiZTc5M2MxMCBkZXNjci1icmFuY2gKKzIwNTU3IDE3MjEyNjJhYmFhODJhMzM3ZGJhZWI0NTczZjIxZjk4MTc3NGZlOWMgZGVzY3ItYnJhbmNoCisyMDU1OCA0YjgxMWE3MWJlNWMyZmFkOTdhZTVjOWZhMjIwYWIyOWNmMWM3MGJhIGRlc2NyLWJyYW5jaAorMjA1NTkgYWUwNzU5OWFkZjMzZjdhODZkYmQ3NWU1Y2ZiN2VmNjcyODExZjc3NSBkZXNjci1icmFuY2gKKzIwNTYwIGUyZGFlZjA2ODQ5NmJjMTM2YjYxMzE3NGM3NDUwMDgzN2JhNGUxZDYgZGVzY3ItYnJhbmNoCisyMDU2MSA1NmM1NDQ1ZWM4MzU4NmU1Zjc3N2FhZmNhNWQwNmE2MzNmMzZlNThmIGxlZ2FjeS10cnVuaworMjA1NjIgYWE3MDg3YWM2ZDk1NTliYzk5MWY4ZGQwOWY0ZGVjZDRiNzQ2NzAwNSBkZXNjci1icmFuY2gKKzIwNTYzIGJkMzEzYTVlMjBkNzg4ZmY5MGQxMTA1MDU3ZjM2ZjlmNDFkZjY0MGYgZGVzY3ItYnJhbmNoCisyMDU2NCA1ZGJmZTgzMTYyMzYzODljZTdhM2Q5ZTYwYmQ4ODMzOThjNGExZjc1IGxlZ2FjeS10cnVuaworMjA1NjUgYjVmNTgzZWVjYjIwM2M0YzI4NGIyMGNjMzQzYjA0Yzc1MjAwMTE3MCBsZWdhY3ktdHJ1bmsKKzIwNTY2IGQxZWM2NzliYWEzZGI4MmFiODVhZGM4MDdjMmFkMTlkMGUxNTBjNDMgbGVnYWN5LXRydW5rCisyMDU2NyA1NTdhYWQzZTc0YmE2MzRiMDJmZWI4MDc2ZDEzYjc1YjJhMjk0M2YwIGxlZ2FjeS10cnVuaworMjA1NjggNmM4MjI3N2U3N2YzNTdkNzRhMzU3MTgwNDc2ZDRjNDA1ODBiZTA2ZSBsZWdhY3ktdHJ1bmsKKzIwNTY5IGRkMjRhYmNiMjMzMWM3OGNkNjhkNWVhNGQ3MjkyOTE1ZThjYzk0MTcgbGVnYWN5LXRydW5rCisyMDU3MCAxMTE4MWNkMzg5N2RjMWI4MDFjYzFkMTk3NjRiYzMxYTcwNWNmNWE5IGRlc2NyLWJyYW5jaAorMjA1NzEgN2EzNjdhZDQzZjM1MjM4ZDQ2NjRjY2ZiOThhZjRlMDE5NGFjNzM3OSBsZWdhY3ktdHJ1bmsKKzIwNTcyIGZhODMyNmNjNzYxY2IzYWZmZDY4MDJlZTAzZTEzYjM1YTVmMDRhNzQgbGVnYWN5LXRydW5rCisyMDU3MyBlYmMyNGExMDQxMzI5YzVlZWYyZTUwYWU5YzlmNmE2NDg2Mjg4ZWQ3IGxlZ2FjeS10cnVuaworMjA1NzQgYTg0ODc0Njg3Y2IxY2RlMzg3MTc4MDk4NjVjNTU3ODhhMDc3YjUxMSBsZWdhY3ktdHJ1bmsKKzIwNTc1IGE5N2UxOGU0OTlhOWNmN2IxYmI0YzBhOWEyM2Q0YzkxNTZmMDU4NDUgbGVnYWN5LXRydW5rCisyMDU3NiAwNDcwYmFiZGFlNDlmZWU4MzM2NDg0ZTRkMTIzOTc4N2RjZWU4ZWQ4IGxlZ2FjeS10cnVuaworMjA1NzcgYTY2OThhMDE2YWZlMjA2MWY3Nzc0NWIxNzJiOGUwMjYyNDE0ZjcwMCBsZWdhY3ktdHJ1bmsKKzIwNTc4IDA4NWY0NjBiMGUzYjU5OTRhMjRiZDg0MGIwMjI5YWVhZjYwZGJjYjcgbGVnYWN5LXRydW5rCisyMDU3OSBkNjQ5OGIxZWY1MGQxY2Q5M2YwZDcyNjQyOTNiOGVmNTMwMWZhM2MyIGxlZ2FjeS10cnVuaworMjA1ODAgZGViOGE1ZTE1MWEzNDZjZDU0YTY0YjA0NjdjZGZmMGExZGUyODZiOSBsZWdhY3ktdHJ1bmsKKzIwNTgxIDMwZDc1MThlMTdlNWJmYTkzNTJkMjU2OTg1YWM2NGM3MDYwZTQ1ZmQgbGVnYWN5LXRydW5rCisyMDU4MiAwZmY0Y2RmMzRmYzFhNTBmM2UwYjZmNDVhN2Q3NGFkZWYxZDA2YTVmIGxlZ2FjeS10cnVuaworMjA1ODMgNjQ1MjMzMDc3OTRlOTM1NDdjNTg1NjI1YTA2YjRiNzFmM2ZiZmMzNyBkZXNjci1icmFuY2gKKzIwNTg0IDViNmQ1OTYxYzllMzhlMGY2MmYxOTQ4ZGJiMzYzMzNjNjBmNmJlNzQgbGVnYWN5LXRydW5rCisyMDU4NSBkNzY2NDliZDM4ZDAxYzk2ZTVkZTI2YzFjZGY2YjAwYmMzYzE5MTRmIGxlZ2FjeS10cnVuaworMjA1ODYgYjkwNzZkODcxOGFiMWQyZGJhZDBhMGM0NGRhYTA4ZmQ5N2YwMTdlMiBsZWdhY3ktdHJ1bmsKKzIwNTg3IDRjMjliMDRlNGQ2ZmMxODZjNTFmZGYxNDIyZThhMTI2OWI3NTE3NDUgbGVnYWN5LXRydW5rCisyMDU4OCAxMmM4MGI1NzBkMDBhMGVjYjkyOWI4Y2JlNjdhZmJkNDVjYzExMjQ2IGxlZ2FjeS10cnVuaworMjA1ODkgNzZlZThiNjJlZTJhODJkNjIzYzZjNGUwOTFhNGM4Y2ZmMTBlZGM2NiBsZWdhY3ktdHJ1bmsKKzIwNTkwIDE1Y2NlM2Q4MGQwZmQ4ZDNiYjFhNzZkMzA0MDdhYTk2MjQ4YjUyYTUgbGVnYWN5LXRydW5rCisyMDU5MSBkN2QwNTEwM2MwMjNmYzY0NTk5Y2NhZTM0ZjFmZDEyNDM3YjEwMmU2IGxlZ2FjeS10cnVuaworMjA1OTIgOGQ5ZWI1YTRlYmNkOThkZGI1ODRlOTQ4NzBhZDJhY2FiNGVlNzU4MiBsZWdhY3ktdHJ1bmsKKzIwNTkzIDk5YjA2YTY0OWIxNDdiNzUwYzdkOGFkZjVlNjEzNmI4OTI5OTJjMDYgbGVnYWN5LXRydW5rCisyMDU5NCA3OTQ4Y2Q0Zjc2NjM3NDI0M2ZjYTE0ODdjYjZlNGFhZTdlNDdmY2IxIHJlbGVhc2UyMS1tYWludAorMjA1OTUgODY0M2U2ZGUxM2RmYTcwMzVhNGU4ZGU0M2IyM2I3ZGEzODRlYjBiNyBkZXNjci1icmFuY2gKKzIwNTk2IGU2ZTgxZGNlYmZkZTVkOWU0YzI1NjNhODEwYzAyZjllMGU0Y2Y1NGMgbGVnYWN5LXRydW5rCisyMDU5NyA5OGYzNGM0NjQzZTk4MDAxMjRjYmU0ZGRmMGY2NGY4N2M0MWZmMmE4IHJlbGVhc2UyMS1tYWludAorMjA1OTggMGJlMjc3MDM5ZDkzYjQyZjM2ZGE3Y2Y5MzUxZmUzMmM4ZTczYmVjNSBsZWdhY3ktdHJ1bmsKKzIwNTk5IGQ4MDUwMDA3NmU5ZmI5NWNmZjgyYjgwZTI0MjlkOGZiNTU3MTY0OGIgbGVnYWN5LXRydW5rCisyMDYwMCBiZjdmMTY2ZDNjOTc0NjBkYjBlODkyMmUwYTU3OTE3ZWE0NDY0YmQwIGxlZ2FjeS10cnVuaworMjA2MDEgNTVlMzIwMTg5NTA4N2IzZWQxMTUxNTMyZjk1ODYwYjVmMjk2YjVjNSBsZWdhY3ktdHJ1bmsKKzIwNjAyIDFjMmQyNmVlZjdlZDFiNTljOTgyZDc1NWExNGQ4NGU0NjM5ODAzOGIgbGVnYWN5LXRydW5rCisyMDYwMyBiYjZjNTlhODVjYTE0N2RkMTRkNzdjN2M5ZWJlZDM3YmVhMGIwN2FhIGRlc2NyLWJyYW5jaAorMjA2MDQgOGIwYzBjNDgyYTU1ZmQwNmQ5ZWNlOWQzN2Q3YzBmNjY3ZjQ4MWQwZiBkZXNjci1icmFuY2gKKzIwNjA1IDgzOWY2ZjJjZDY2ZjNjZmRhMjYxOTk2ODE1YWUwZWI5ZjhlYWNhZmUgZGVzY3ItYnJhbmNoCisyMDYwNiAzMDkxZmI4M2Q1MjcxY2NkMzkxMjc3YWI1M2E3ODBmNjZkMzY1ZTY2IGRlc2NyLWJyYW5jaAorMjA2MDcgOGZjN2JlY2Y3ODM5NDcyOTI3ZmY2NDhjZGY2ZjliZDk4MmVlMThmZSBkZXNjci1icmFuY2gKKzIwNjA4IDBhOWUzYWE3MWRiOWYyMzBiODU3ZTg5ZDgzODQzZWQ1YTk4YzM4YmQgZGVzY3ItYnJhbmNoCisyMDYwOSA4MmY4YTJiMWI3OWNjMzJkYjE2YTc2OThmMmM2YWZiYTIwYzJlM2ExIGRlc2NyLWJyYW5jaAorMjA2MTAgZmM2NThhZGNlZGM4ZTliNGJjMjg2ZTk1ZmU1YmYyYzk1NTYzMmI1YSBkZXNjci1icmFuY2gKKzIwNjExIGY4OWU4NTE1M2QwNDc1MzljNGY0NzQzNDRhMGM5NjgwMmI1ZmMwZjUgZGVzY3ItYnJhbmNoCisyMDYxMiAzOWNhYmQwYWFlMWViZDI4NTNlNWNjNThjZjM2NmM3YjFkMzRkYjNiIGxlZ2FjeS10cnVuaworMjA2MTMgOWQxZTMwNGVjYjE4YTU4ZGI0ZmRhY2MzMDgxYWQyYTc1NTg0ZDUyOSByZWxlYXNlMjAtbWFpbnQKKzIwNjE0IDU1MjdkNjJmYWZlMDVlNmI2NmE1ZTgwYTlmNmUwZmIxYWZkZGM1OTQgcmVsZWFzZTIxLW1haW50CisyMDYxNSA2ZjhlZmRiZGZmNDgyM2JjYWZlZGUyMWMzOGE2ZWE4YTFjMWI1NmUwIGRlc2NyLWJyYW5jaAorMjA2MTYgMTYyYjk0YzhkMmQxYTk0YWU2YjhjNDVmNzUxMDhlYWNhZTc2MjlhOSBkZXNjci1icmFuY2gKKzIwNjE4IGU5YTRlMjdlOGQ0ZTE2ZTE0YjMyYWIyNjY5NTMwMzdlYTI0NjgxMTUgbGVnYWN5LXRydW5rCisyMDYxOSAzOTlkOTk2MDFiMmRjMGQyZTdiYjRiNTUwZDg0MjE4YzM3NzNkMTk1IGxlZ2FjeS10cnVuaworMjA2MjAgMGM5ODc3MTIwZjM4MTc4M2Y3NTAzYmRjYWI0ZDU2MDA1MDY5M2Y2YiBsZWdhY3ktdHJ1bmsKKzIwNjIxIDNjZDRhZjY2NmRlNmIzZTZmMDBjODEyMjIyMGIxYWQ5Zjk3NTdjMzkgbGVnYWN5LXRydW5rCisyMDYyMiA5ZTA5M2JmOGY2YTkzZjJjMzNkN2NmYWIwOTE2NmJlNmQxOTY4ZTU5IGxlZ2FjeS10cnVuaworMjA2MjMgMWViYjRlNTY2MjU3YWE4OWRlZDBmM2Q2ZjAxMDgzNGY1YWEwMTRhZiBsZWdhY3ktdHJ1bmsKKzIwNjI0IDQ5ZDliYTU1NTg4YjY3YjZjYzYxMWJjMzE0ZmI5YWFhNjM5YjQ4MTEgbGVnYWN5LXRydW5rCisyMDYyNSBlZTRkMTc4NjJiNjE4MGIxNDA3NTgwZmY1NzY5Mzc3NDY1NDgzZDMyIGxlZ2FjeS10cnVuaworMjA2MjYgMDAyZWM3MzNiNWRjNWI2MzhkNWNkZDUwMDQ3YWE4NDA0NzRlZTQyOSBkZXNjci1icmFuY2gKKzIwNjI4IGQ0ZDA2NTI5YzIxODExZDMwZWNiNzJhZTJjMjExMjI0N2VmODIxMDQgZGVzY3ItYnJhbmNoCisyMDYyOSA5ZTUzYTVkNzFmMWRhMWVmMzEwNDVmNWYzM2EzNjk2NjNlZGQxZDkwIGxlZ2FjeS10cnVuaworMjA2MzAgMTgxMjQ3NmI3ZmU0NTcwMjE4ZTNkNmM1M2FmZTk1ZGQ4ZmE2ODQ2OCBsZWdhY3ktdHJ1bmsKKzIwNjMxIDY4ZTcxZTliYzIwNDU0MmE5YTJjZGRhZDE1YjI4NTAwYjE3Yjc1MGYgbGVnYWN5LXRydW5rCisyMDYzMiBhYWI2YzFmMTkyODlkY2ZkYmRiYTJjMTk4NjYxY2U5NzExOGM3MDMwIGxlZ2FjeS10cnVuaworMjA2MzMgMzA2NGI3M2FkYzFhZDc3MDRhMTllZTdjMjE0NjZkMzUyNWJmY2FiOSBkZXNjci1icmFuY2gKKzIwNjM0IDQ0MjRlMDZkNDE1OTU0ZmExMjI3N2IzYjZiMjcxZmNmNDMzNTM3NDMgZGVzY3ItYnJhbmNoCisyMDYzNSAxZTkwMmZjNzM2NDUxODU0NzNkNzQ1NDEwMjhjOGI0NmQyMjFkNzE0IGxlZ2FjeS10cnVuaworMjA2MzYgZmZjMjkyM2JhZDFhOTY0NThiYzZhODk4YjJhMmQ4MDEwZGI3NjI4ZCBsZWdhY3ktdHJ1bmsKKzIwNjM3IGY5NzAxOTUxOTZjNGZiZTc2MzEyY2RmZjU4NGY5OGMxOWQ4NmJlY2MgbGVnYWN5LXRydW5rCisyMDYzOCBhYWQwYWRmODA2YWRjODJkYjI2YWYxNDcyYTEyOThmODBlOWQ0NTIxIGxlZ2FjeS10cnVuaworMjA2MzkgMzc5ZmU4ODc2NDRmYjgwYzYzZDc5MjcyOTFjMTcwZmMzN2ZiMmJhMSBkZXNjci1icmFuY2gKKzIwNjQwIDU0NjIzNjI2ZGE0ZTNhMWZlOTE4YmViMWVlMzcwZjBlNDg0ZTQzY2EgbGVnYWN5LXRydW5rCisyMDY0MSA0MzMwMTNhZjQ1OTg3OGE4YjBjNDQ1YjNiNWZmMDM4ZTJmNDFmODlmIGxlZ2FjeS10cnVuaworMjA2NDIgZGVkNDFiZTg0ZGE0ZmFjYzE1ZDlmYzA3MmQ4MzdiZjQ4ZmE1YTM2OCBsZWdhY3ktdHJ1bmsKKzIwNjQzIGUzZjBmZDM4YzI0YjcwYjA5YjU5MTZkMzY5YTgxYTVkN2ZmNGVlMTggbGVnYWN5LXRydW5rCisyMDY0NCBmM2I4Nzg1YmQwMjIyYTYxZmUyYmJhMzgwMzI0ZGM3YjhhYzM5OGQzIGxlZ2FjeS10cnVuaworMjA2NDUgYjQxZjZlZjZlYThmNzhmMTZhY2FiYzgwODBiYTY4YTdkNTM3YmU4OCBsZWdhY3ktdHJ1bmsKKzIwNjQ2IDJmMTYwNjJhMWI3Yzc1Y2ZiZTY2MGE5ZjhlYTc3ZWVlYWNmODkzNjkgbGVnYWN5LXRydW5rCisyMDY0NyBhZDI1YmZjYzQzNzcxNWY3MGNmZDM3N2Q5ZWZhYTk4YmVhMjlhMzFmIGxlZ2FjeS10cnVuaworMjA2NDggZmU0YzEwMzRiNDgwMTNiNGYyMmRjNzcxOGQzMTVjMWVmOWQxYWUxZCBsZWdhY3ktdHJ1bmsKKzIwNjQ5IGJhOGY4ZTRkNDJiMDQ3OTI1ZjgxNjE2MDlmMTBiNjg3NGE0ZWE2NTkgbGVnYWN5LXRydW5rCisyMDY1MCAxYzg2YzhkMWM5Yzc2MmE3MjJhNjZlYTZjNGFiN2FjYjcwNTcyNmFmIHJlbGVhc2UyMC1tYWludAorMjA2NTEgNjE5OWU1YmQzNzBiNTYwYzQ1MzM4ODUyYzFjMTdmMmMzNmM4YjgwNCBsZWdhY3ktdHJ1bmsKKzIwNjUyIDM1MGJlMTljYTZhNWY4OWRkY2E2YjYyOGE1YmJjMDZiZmUxYTU3NGQgbGVnYWN5LXRydW5rCisyMDY1MyAyYTdjZmMxNzJhNjg0YTBhMmQ3NDIwMTY5Yjg1YzY5YzQ0NmM3MmFkIGxlZ2FjeS10cnVuaworMjA2NTQgNWUzYmFiOGFlZjdiMGZhYTI3YzFkYWVkNTgwY2Q2OGNiYWM2YTJjZCBsZWdhY3ktdHJ1bmsKKzIwNjU1IDY0OTNkNWU5NDFjMmE4MGZmZWE1ODJmYzI3NDFhYjRhODhjNjkyODYgbGVnYWN5LXRydW5rCisyMDY1NiBmZjgxMGZiNTk1MTMyMTlhY2QyY2VkNjkyNGNkOTMwYjMxNzk3YmY2IHJlbGVhc2UyMS1tYWludAorMjA2NTcgNzVlNzgxNDA0MWRhY2I4ZWJkM2Y5NDMyZTc3MzM5N2NjZWU5ZWVjNSBsZWdhY3ktdHJ1bmsKKzIwNjU4IGE2YTM5OWFjZjYyMDY0ZjlhYzJmYTQxMmM2NTMwNDQ3NWZlMmEwYzkgcmVsZWFzZTIxLW1haW50CisyMDY1OSA5OTQ5Yzg3MGUxNDQyMGEyNjgyNjdiNGE4ZDYwNjA4ZjkxNjU2YmY1IGxlZ2FjeS10cnVuaworMjA2NjAgYmIwOTUzNDBhYzk4NzU5M2VjMTk0ZTI0YThmYzAwZWZmNjZmZTI3OCByZWxlYXNlMjEtbWFpbnQKKzIwNjYxIGVkZTI5YWQ2NDQwYWMwMjhiODM3MDhiNDBmNTVmNTg1ZDc4NmU4NjAgbGVnYWN5LXRydW5rCisyMDY2MiAxZGVhNDMxZmIwYTA0MTEyMzE3ODcyNGEzMGYxOGJhZTAyMzY5NzM0IGxlZ2FjeS10cnVuaworMjA2NjMgY2Q5MmMwZDdlYWM0N2Y5ZDQ3NTY2N2IxMTZiMTJlNzEzMTBiN2JjMyBsZWdhY3ktdHJ1bmsKKzIwNjY0IDlmNmNmZGY3MWQ1MDY5YWE0MzMyNGM1OTk2NzA0Mjc5OTc3Mjk1ODUgbGVnYWN5LXRydW5rCisyMDY2NSA2ZGMzNjA3OGY1M2UxZTg2ODdlYTNiMTBkMTdiM2UyMjA3ZmE1ZGJmIGxlZ2FjeS10cnVuaworMjA2NjYgMWIxZjBjYjI4NWMyNTgzNmE2MjJmMTc4YzJiNjQ0MmJjY2QzYzBlMSBsZWdhY3ktdHJ1bmsKKzIwNjY3IGJkZWQ2ZDMxODZjMGQyOThhZDY3ZTkwYmNmODc5ZWRhNDlmOTlkMWYgcmVsZWFzZTIxLW1haW50CisyMDY2OCA0ODk2NjMwNTkzNDEzMjJkMjczZDA5YzRiMDkwYWZhNTIzNGE0NDExIHJlbGVhc2UyMS1tYWludAorMjA2NjkgYTYyNmZhMGUzZDc1MDRkNmNlNzA5YzViMTQwOTkwNDA5ZDAzZDMwOCBsZWdhY3ktdHJ1bmsKKzIwNjcwIDBjZmFkZDc2MDdkNTFlMjU0ZDIyNTliYzk3YWVhZTIwZGU1MjUxYTYgbGVnYWN5LXRydW5rCisyMDY3MSAwNmQ3ZGE4MTQwOWRlMWMwZmM0ZjMzMjk0M2I2NmUwYWJjZGY3YjlhIGxlZ2FjeS10cnVuaworMjA2NzIgZTEzZWVkZDA0YTRhODFjNzVjMTM1ZmI5MGE2MDQ2NmU3ZjIxNDYwZiByZWxlYXNlMjEtbWFpbnQKKzIwNjczIGU3ODVkN2JkNzU5OGZhNDlmMGVmNTA4N2M5ZWNiNjIwM2FkY2UyMDQgbGVnYWN5LXRydW5rCisyMDY3NCA2MGY4YzE1YzAyNTVkYjk4N2UzYjc2NjA3NWQ5YzJlMDg4ZjY1YzAwIHJlbGVhc2UyMS1tYWludAorMjA2NzUgMzliZjFmNmNmMGY5YmQ1ZjgyMDY4MTVhZjZhZjFlZmY2MWVmNTBjNiBsZWdhY3ktdHJ1bmsKKzIwNjc2IDE0NzYzMmFkMWJjYzNhM2Q3MzMzMjM3M2YyMzNlNjFkYTk5OGU1NmIgbGVnYWN5LXRydW5rCisyMDY3NyA0Mzc0ODJmZTU1ZTY0NzdjNTUyMzM4MTVmMjBkZmViY2E4ZGQ3NDRlIGxlZ2FjeS10cnVuaworMjA2NzggMGViZmU5YTFlYjQzZTk1YzQ0YmNkMGZhOTA3OTA3ZGVmYTliNTQyMSBsZWdhY3ktdHJ1bmsKKzIwNjc5IDgyMGU1YTBjMzExMmZjZjNkNzliN2Q5YmViMzY2NDQxYTNjMWVhNDEgcmVsZWFzZTIxLW1haW50CisyMDY4MCBmOTcxZjI1MmQ5Yjg3YTY1NjI3ZmJkNjVjMjAyYzhhMjgwNGY5NTQ5IGxlZ2FjeS10cnVuaworMjA2ODEgZDA1ZGJmM2YzNmY2NzI5NDI4Y2I5ZWU2NTExZjJhZGE2MjA1NGQ2NSByZWxlYXNlMjEtbWFpbnQKKzIwNjgyIGVkNzcxYjVkYjVhYWYzYTc3NjcwNGUwMTYxM2FlZDlmMzMwZjEzZTAgbGVnYWN5LXRydW5rCisyMDY4MyAxYTIxZGQxM2U2MGE2ZTc0MmVhMWIwYmQ1OTg3NmYwMGJhZTczMmY1IGxlZ2FjeS10cnVuaworMjA2ODQgM2VlOWEzZjYwYmM3OTY0YTE3MjFkMTViZDQwMjZkNGU3NTdhZWM3OSBsZWdhY3ktdHJ1bmsKKzIwNjg1IDUzYmJlYjI1YmRlNzE5ZjQ2YWI2YjhjNmE5M2ZhZGY0MzkxNzZjZTggbGVnYWN5LXRydW5rCisyMDY4NiBiMTZmYzg5YzE5NGY2YTM1NGYxNWM0MTc4YjhkYzdmYWI5ZmY1M2FmIGxlZ2FjeS10cnVuaworMjA2ODcgYjc2ZDFiNWU4ODYwMGQ2ZWVmZTM3YmUxYTg3MTJhYTRhODk2NDM4MiBsZWdhY3ktdHJ1bmsKKzIwNjg4IGM1N2NlNzVkY2RlMGM4MmYxNzZkOGMxZTJmZjRmNDY3ZDViYTczNjUgbGVnYWN5LXRydW5rCisyMDY4OSAyNjExOTZiZDE2ZDdlZjIyY2ZjOTk3ZWJiOWNkNzg2MTk2N2E2YTQ4IGxlZ2FjeS10cnVuaworMjA2OTAgZjQ2NWNhZTMwMWVlNjE1ZDMwMTg4ZGI0MGIzNWI4NDRhMDZlMjVjYyBsZWdhY3ktdHJ1bmsKKzIwNjkxIGIzOTI2NmY3NDg0YzQ0ODA1NGUzNjlmYThhNjFlZDVmOGEyYTg3MGYgbGVnYWN5LXRydW5rCisyMDY5MiBjODg2Y2QxYzIxODQ3M2QyY2ZmZjc2MzZlMjQzMDQ2ODE1MGY1ODE4IGxlZ2FjeS10cnVuaworMjA2OTMgZjQzNzRkNzkzMWJhOWZmYmViNTM1YTQxNGY5MTZhY2I5ZjQ3NTE1YSBsZWdhY3ktdHJ1bmsKKzIwNjk0IGM0N2NjOWE5ODY0YzRlNDIxYTA0Zjg3ZmU5MzFhMmE0ZjcyNWYxOWEgbGVnYWN5LXRydW5rCisyMDY5NSBlZjZmM2UxODE4Nzg2NjMzYjRhYmEyNWZiZjNjNmE1Yjk4MzgwOTAxIGxlZ2FjeS10cnVuaworMjA2OTYgNDdkMTg2MDJkNWVhNDU1MTA2ZTQyZWRhOTZiMmQ2YzAzM2U4MWNlYSBsZWdhY3ktdHJ1bmsKKzIwNjk3IGEwNmE3MDQyNjBlOTZhMWQ1ZmU1ZjQ1NDdhMDdkMmJhNzk5NDk3OTggbGVnYWN5LXRydW5rCisyMDY5OCBhOTg3Y2YxODE0MzQ5MGRhOGFkYjk0N2M4YWNmNGUzNmUzZjYwMmU2IGxlZ2FjeS10cnVuaworMjA2OTkgNWUwZWMzOWM0Y2VjYzRjNDg0ZTYzNGU2NGYwNzJmMWJjMTcxOTk2OSBsZWdhY3ktdHJ1bmsKKzIwNzAxIDA4MGExMjkxYmY2YzlmODFmNzYxMmM0MTE2MjBiZTZhZmI3OTgzY2UgbGVnYWN5LXRydW5rCisyMDcwMiAzMzI2OTdkZThkYjhlMmQ1Mjk0YTdjM2JkYjU4NDE1ZjZkZDMxNzMxIGxlZ2FjeS10cnVuaworMjA3MDMgYjUzNGYxMDczOTg3Y2QzNjAzMDY4NmI3M2NhNjdkNWVkZDk5ZTUxOSByZWxlYXNlMjEtbWFpbnQKKzIwNzA0IDA5OGQ2Zjg2OWE5ZGU4NTUxNzRkNWY3ZjBhZTMyYTQ3ZWYwMmNmOWQgcmVsZWFzZTIxLW1haW50CisyMDcwNSA2ODYwNTRlMDNhYzU5YzViZDIwYzYwNGYyZGQwMWE0NjFiNTU3YWEyIGRlc2NyLWJyYW5jaAorMjA3MDYgZWY2NWJjZWU3MmNhMjIzNmNhN2IzY2EwZTgxMDQzZTg2Njc5N2MzOCBkZXNjci1icmFuY2gKKzIwNzA3IDY1ZTI2MTEzYjNmYjJlMTFmOWI2MTFkYWUzMGQ4YTRkNGMzNDQxMzAgbGVnYWN5LXRydW5rCisyMDcwOCA0ZWYxYjZhODNhNDc5NGUxNDRiNjhlNGJmNjU5NzU1ZTJiNzg1M2M5IGxlZ2FjeS10cnVuaworMjA3MDkgMmYwZGY5ZjBiMDg4NzgyZDg2N2ZkYzhlNzc3NTgxM2NlNDc3NmRlYSBsZWdhY3ktdHJ1bmsKKzIwNzEwIDY1OGMwNzdkZDM1MTMxMzVjNDlmMjE0N2Q2ZDhmODU5ODY5YzBkMzUgbGVnYWN5LXRydW5rCisyMDcxMSA1MWFhNDI1MDI5NzU1MGRiMWVhYWI1ZTBiNzZmYTY1MzE0MmU0Mjc3IGRlc2NyLWJyYW5jaAorMjA3MTIgNDdkNDRkODU0MmI3YjJmYjY1MTIyOGJlMDQ1MzM3ZGIxYWMxMWJmMyBkZXNjci1icmFuY2gKKzIwNzEzIGRkNmY4YzljYWZmMGVjNWUwNDVlZDU2MTE2MGY5OTcyZGFhY2FiMzQgZGVzY3ItYnJhbmNoCisyMDcxNCA3YTlmNmMwOTc5MWE4ZWVkMjY0YTQ4NDJkYTk1YTE4MWRlODYzYzAwIGRlc2NyLWJyYW5jaAorMjA3MTUgNDdmNGQwNTY4YzdjYjczMjc0ZGNlOGY0MTYyYTQ3ZjdhMTExYzA5NyBsZWdhY3ktdHJ1bmsKKzIwNzE2IGMxODgwZjZiMzE4OWNmODRjMzRlZjJlMDM4MDQ0N2ZkNGRkNjdhZTEgbGVnYWN5LXRydW5rCisyMDcxNyBjZTM3MzQyZjZmNmUzZjMwZTYzNmEwN2UxZTZiZGE3NjM0MjRkYmVhIHJlbGVhc2UyMS1tYWludAorMjA3MTggY2M4ZDE0OGMzOTZhZTkwOGM5YjQzMzQ2YWQ4OGVkYzE4ZjVlMzRlMCBsZWdhY3ktdHJ1bmsKKzIwNzE5IGZiMTAzZTNkYTJhZWFmZjNjOWZlMTljMjJjOTYwNmUxNzRkNjM5YzYgbGVnYWN5LXRydW5rCisyMDcyMCAwMWI1MDQzYTQ1MDlmNzA0NDQzNDA4NzFhMTQwOGRlYTQ0NjE0NTE5IGxlZ2FjeS10cnVuaworMjA3MjEgNjY5NjA0ZDkzNDNmMDVkMTdjYTgzNWI3YWE1NTlhZmJkMjU3ZTU5YSBsZWdhY3ktdHJ1bmsKKzIwNzIyIDRiMmZkYWViYmZlNWRlMzFjODcwYjM0ZjA2Y2RkNGFhMThkYjdiZDYgbGVnYWN5LXRydW5rCisyMDcyMyAwZWEwOTEzZjgyNGRhYjNmZTFiNWIwMTM3N2U5MmJjMzNjOTA5M2E1IGRlc2NyLWJyYW5jaAorMjA3MjQgZDdjY2I5MzFjYTc5NTU1ZWY4Njc4MjQ2MTc1NWIxMmNhZWUxN2YwZCBkZXNjci1icmFuY2gKKzIwNzI1IDdhMmExMjJjOTk3YzIwNjM3NWJkMTMwMTQ0N2VkYzA2Nzg1MjYxOGUgZGVzY3ItYnJhbmNoCisyMDcyNiBkY2UxZjUzNDUxYTVhZjQ2OTJlNWQzOGE2ZmU5NWI2M2NjNzM0MzhhIGxlZ2FjeS10cnVuaworMjA3MjcgNTk2MDRmNWI0ZGQxMjkwZTFlYzRmZDFhYmM2N2ZhMjk0NzgxZGE1MCBkZXNjci1icmFuY2gKKzIwNzI4IDQxOWViYzY3M2VkOGRmOWM2Zjk4MTBiOGY2MDBhNTY0ZGU0MTBiN2EgbGVnYWN5LXRydW5rCisyMDcyOSAwZWJiOTE1MjFhZTZiY2VkYmJjMDVlZWM3YjkyNjE5MmIyMTI4YjZiIGxlZ2FjeS10cnVuaworMjA3MzAgYjRiMzY1N2NiMWZhYTQ1NzNhNGQ1NGRlNzRkNjk3Mjg2NDk4NzlkMSBsZWdhY3ktdHJ1bmsKKzIwNzMxIDk5M2ZiMTgwMWY0MWIyNGE2YWMwODA4ZWRhZWI2YzRiZGM1N2Y1NTUgbGVnYWN5LXRydW5rCisyMDczMiBhMTU3NWRiZjdkODEyYjE5ZTg2NTdiMDAzOTI2ZjRiOGI3YWQyYTUxIGxlZ2FjeS10cnVuaworMjA3MzMgYWIxN2I4Yjg4Njk2MmQ5MTAwYWU2MGJiYjE2ZjA4YzllMzY0M2I0MCBsZWdhY3ktdHJ1bmsKKzIwNzM0IDUzODdjYjc2NzA1OTRhMmY5ZWZkNmM0ZjNjNDY3ZjRlNjIxNzdlMjEgbGVnYWN5LXRydW5rCisyMDczNSAxZGFjZDBkNjA2MzdjODczYzkzNzFmZDRlMDM5ODA1NGYxMTIwNjNlIGxlZ2FjeS10cnVuaworMjA3MzYgMTI5NmU4NjMwNGVmNThmNGYyYmU1YzU3ZTVkZGRiMzZiZGRiZjEwMSBsZWdhY3ktdHJ1bmsKKzIwNzM3IDBlZDhjNWYzZjUzMDYyNDEyNTIxYzQzMGMzMDZjYjNlM2YyZDRhMDUgbGVnYWN5LXRydW5rCisyMDczOCA5OWM0OWYwMDkzODhlNTJjYjQ4MjQ5ZDJlYTNhNjY1MWU1NjFhYWY2IGxlZ2FjeS10cnVuaworMjA3MzkgODk5ZjM2N2ViYTU2YjUwYzkyZTEwNmE0ZTdkMzg0MmViM2I5ZjY1NiBsZWdhY3ktdHJ1bmsKKzIwNzQwIDQ3OWVhNjllYzg1YjMyMGI5YmI2MGIzMzdkMjczMDdkNzE0Y2NhYzQgbGVnYWN5LXRydW5rCisyMDc0MSAyMmEwYjJlMzI5MWYwMmE4ODllNGRlYzg1NGEzMTE0NmYzM2MxN2U2IHJlbGVhc2UyMS1tYWludAorMjA3NDIgNzhjNjRjMGY2NjFjYmM0ZjUzYTg4NTRmNTJjYzA5MTA4ZTU0MjIzZSByZWxlYXNlMjEtbWFpbnQKKzIwNzQzIDgwNDI1YjJjMWU0YzcwMjNjZDVlYjE3ZmNiZWYyN2NlMmJlYTkxMmQgcmVsZWFzZTIxLW1haW50CisyMDc0NCAyZTAxNWY4YTFhYzIwMWIxMmYyMjUzNGY0MWViMGEyYjY2MjAxOTRlIGxlZ2FjeS10cnVuaworMjA3NDUgMWM2MDRiYzZiOTFlNTRmZGYxNjE2N2FiZTkxZGJmNWEyZDM5ODQwMiBsZWdhY3ktdHJ1bmsKKzIwNzQ2IDFmYjNlY2E4OTY5ZWE4Y2ZlNzAwMDc1YWI4MjFmZjhhYTMzM2Y4OWQgbGVnYWN5LXRydW5rCisyMDc0NyA2ZTAwOGM2MTk4NTUzODU2ZjExNzc3OGI4NjFhMmZjZWJjZmU0ZTJmIGxlZ2FjeS10cnVuaworMjA3NDggM2I1YmViOTI3N2UwNDdiZTMzMTFiOTZmOTM0MGE5NzkyMzNlNWQ4OCBsZWdhY3ktdHJ1bmsKKzIwNzQ5IGE4ZmE5YzBmMWUwYmI1Y2NkNzg5MmJhNzc5MGQ2OTBlMGQxMDMxYTIgbGVnYWN5LXRydW5rCisyMDc1MCA4YWVlNTM5NTA1ODMwOTI1MzM4NGFjZmNiMmEzZTVjMjBlNTFiYjdjIGxlZ2FjeS10cnVuaworMjA3NTEgYTJiNjU2YTUyMjk0M2ExOTE5M2MxMmE0OTFmN2VkZDQ0Y2I5YTA0YSBsZWdhY3ktdHJ1bmsKKzIwNzUyIGMxOTk4MGMwM2UyZGUxNWY0Nzg3NmJlNzA4MmE0MDk0N2I0ODk3ZTcgbGVnYWN5LXRydW5rCisyMDc1MyA1NTk3ZDRiY2RlMDc1ODViMzkzMTU3ODllY2VhMzZiNDYxOTczZDcyIGxlZ2FjeS10cnVuaworMjA3NTQgN2ViMzI4OGM4MWUzNTViY2Y3ZTc4ZWUyMzUxYzk4YTYxZGI4MDY4OCBsZWdhY3ktdHJ1bmsKKzIwNzU1IDUzZmNjZjRkNmE0MTQxMzU3MjdlZTI0ZDNkMGNjNDcyNDVhNGUyMTkgbGVnYWN5LXRydW5rCisyMDc1NiA0OWU3MWE4M2Y3OTBmYTIyNGExN2E1NTg5N2ZkMzliZjUwZjVkOGE3IGxlZ2FjeS10cnVuaworMjA3NTcgYmY3MGQxZjRmNjFmNmNkMTUxNzQzZWViZjMzMjc1M2VlNTAyMjVkOCBsZWdhY3ktdHJ1bmsKKzIwNzU4IGNlOGMzNTY1NDJhYjdjZTY2YmMyYmQ0MjFhMzE0NjZkMDY0OTRiZWEgZGVzY3ItYnJhbmNoCisyMDc1OSBkZDVmYjM5ZTY1ZWYzNjUzZjJkZjAwNjc1MzU2ZGY1MTY2MDg3ZjMwIGRlc2NyLWJyYW5jaAorMjA3NjAgMzM4MDI3OTYxMmEzM2M4YmM3YjM5M2I4MjQwMDRkMGEwMjhlYTJjNSBsZWdhY3ktdHJ1bmsKKzIwNzYxIGZmOWE4MzM5YWQxYjRiMjk1OWI2YzY1ODcyMjE0YjQ0N2Q5OTUxZjcgZGVzY3ItYnJhbmNoCisyMDc2MiA5ZjU1OTdlYTk2ZmMxNGVkMTdmZTFlOGYwOTkzZGRkMzczNDY2ZGE1IGRlc2NyLWJyYW5jaAorMjA3NjMgN2YwZjVlY2U0NTYyOGJlOWM0MjNlMjg2MzMyYTFlOTk0MTg3MDAxNCBkZXNjci1icmFuY2gKKzIwNzY0IDE0ZmQ0YmI3Nzk5YWMxNWY3ODk4MzkzYjc3Y2Y0ZTVhYzdkMDkwZWIgZGVzY3ItYnJhbmNoCisyMDc2NSAxNTc5ZDMwOTY3NmUzNTA3Y2E5OWE2M2RjNTg4NDhmNDY1OWU1OGIzIGxlZ2FjeS10cnVuaworMjA3NjYgNTRkMzk1NDI1ZTkyOTM0NjdkNjFiZjc3YWEzYzhjYjZjNzA5ZjAwNiBsZWdhY3ktdHJ1bmsKKzIwNzY3IGMzNGNhYjg3ZDcyMTlmYmY4MGZmYTgxZTM2NDRkNzVlZTMxNmFjZjQgbGVnYWN5LXRydW5rCisyMDc2OCBjODM2MjMwM2VjM2IxZTMzMjIzYjJlNjZmMjNiOGZjMmQ5MzVjNGQ1IGxlZ2FjeS10cnVuaworMjA3NjkgMjIyNzY3ZWIyOGY3NWNlZTBhMWE4YzZjZjMxYmFjMjM5ODc5NGNlOSBsZWdhY3ktdHJ1bmsKKzIwNzcwIDRmMjA0OTViOGJlZGM1OTllZDc0MWU3ZTM1MzM2ZjhhNzJiYjVlZjggZGVzY3ItYnJhbmNoCisyMDc3MSA0YWY4NjViMjIxZWRmMGMyMTk4NDgyYWY0MTY4YTAyY2YyOTMzYjU3IGRlc2NyLWJyYW5jaAorMjA3NzIgYjg4MWRjM2JjZmIzZDNiMzIyNWQ1ZjlhNmMzMDYzYmFkOGY2YjQwNiBkZXNjci1icmFuY2gKKzIwNzczIDRiMDhmZDA4N2QzNjQzZTQ4YmE0NzU2NmQzZGU1ZDMxODU4M2ExYzUgbGVnYWN5LXRydW5rCisyMDc3NCA4Y2Q4NzQxZWJlYzBkNDQ4MzFjZDlhZWI4MTYxZTdkZDM3Yzg2OGJhIGxlZ2FjeS10cnVuaworMjA3NzUgMjIxMWM4OTk1YTVmOGQ4NWFjZmNmOGFhMTg5ZTE5ODMwOWNmMjEwNiBsZWdhY3ktdHJ1bmsKKzIwNzc2IGQ2ZGY4ZDM3MWI2NzQ2NzhhZjkwYjUzNWMzMzQ5NWVhOTQ3MGU1MGEgbGVnYWN5LXRydW5rCisyMDc3NyA4ZjVjZTU4MTE5ZTA1NGFiNzIzNjU4ZWZkZTI1YTIxNTM4YThmMjQ2IGxlZ2FjeS10cnVuaworMjA3NzggZjdjMzg1MjI2ZjY1YTg1MzVlZDUyMjI5ZDM0MzYzODQ2OWJlODQ5YiBsZWdhY3ktdHJ1bmsKKzIwNzc5IDI5ZDg0ZjkyMGQ1Yjk3MzFiMDc0Y2JmNTVhYzJjNzJkZjRjMzgyODAgbGVnYWN5LXRydW5rCisyMDc4MCAxOWE0NDhmZGVkZjcyNGI2MTRiY2Y4Njg4ODE5ZGQ2NTljMDZkNWQzIGxlZ2FjeS10cnVuaworMjA3ODEgNGJjZjg4ZTRhYmZmMjA5OWM0NWE2MGM5YzEyMDUyYjlkN2FlYmMxNSBsZWdhY3ktdHJ1bmsKKzIwNzgyIDc4MDI0OGNkMWQ5YWZhNWI3MDY3YzA5YzUxMTk3Njc5N2I5OGRlZTAgbGVnYWN5LXRydW5rCisyMDc4MyA1MDM3NmQ0NzA2NDgyMTc3ODc4MWRlNWVjMjA1MjhjMTY0MWY0Y2M0IGxlZ2FjeS10cnVuaworMjA3ODQgZjEyMzk2YzUxYWVhZjRkNDlkMmU2Y2ZjMTc2ODY4ZTZhNDAwYTAxYSBsZWdhY3ktdHJ1bmsKKzIwNzg1IDBhZGZiZTMyODlkNWFlM2NiMGUzNTI4MjBiOGU4ODgyYzc1ODc3YWIgbGVnYWN5LXRydW5rCisyMDc4NiAwYmUxNmQwZWNmNjRhNzk3MTIzMzg3MTllMTc4MjY3NmNjMzNhMmUwIGxlZ2FjeS10cnVuaworMjA3ODcgMDdhODc1MjAwMWJhY2I5YzE1ZDE0MDhhZDg4NmQwODY1MTk3NTc4MiByZWxlYXNlMjEtbWFpbnQKKzIwNzg4IDBiM2RhOTk4MjRjN2Q1ZGZjYWEzMjI4OWJiMDYzZGEwN2Q0YjE3YTQgbGVnYWN5LXRydW5rCisyMDc4OSAyNjc0NTA1M2Y4NDA1OTZhYzM0ZDkxMWRjYTZjMDVmYzk2ODEyNzUyIGxlZ2FjeS10cnVuaworMjA3OTAgYjU0ZGJlZjFmOGQzNjU2NGZmZWNmMDhlMGFhNjZlZDdiZjEyNTZjOSBsZWdhY3ktdHJ1bmsKKzIwNzkxIGQ4OTBhMjFiZWJkYTJiOGExNGYzMTkyNDZhMjMwY2Y2ZjE5YzhkZTYgbGVnYWN5LXRydW5rCisyMDc5MiBjZWY1YjYwMGZhMTYyODQ2ZmFlYmRmZTgxZWNmMGIxMDUxMjhjMTExIGRlc2NyLWJyYW5jaAorMjA3OTMgNzUwOWVhMDcyY2NiNDIyZDFjZjczYTc3Y2QwMTg0NzcxNDNlMTFjNiBkZXNjci1icmFuY2gKKzIwNzk0IDVjMDZhOTU5NmZiZmZkZDExZDNiNWJkMWQyMTViNWRhZDdlNTAxM2MgbGVnYWN5LXRydW5rCisyMDc5NSAxYmVjZjQ0MmQ3MzU1OWJjNTY2YjhlZDUwYmE5YTFlMzEzNzJjOWRlIGxlZ2FjeS10cnVuaworMjA3OTYgYzNmZjU3MjI2M2QzMzJmODUxNWFjYjBlMzE4YWE1NTAxMjk4ZjhlYSBsZWdhY3ktdHJ1bmsKKzIwNzk3IGVkMWU4YjZlMjZlY2IxYzczZmYzZTc4YzBjYjM2M2VlMzkwNGQ3YmUgbGVnYWN5LXRydW5rCisyMDc5OCA5ZWE4N2MwYTdjMDQzNzgwZDU2OWI2M2E3MWQyMjQ0ZDg2NmZkODhjIGxlZ2FjeS10cnVuaworMjA3OTkgYWQ1MDBiNTI2NzNjNjM5ODZkNjRiZDA1ZTVlNTYwMjgyNjc1MDhiNCBsZWdhY3ktdHJ1bmsKKzIwODAwIDI4OTJhYTI2MDdkNWY1ZTc0NzhhZDgzYzQwNzZmMTZjNmUyYmQ1ZDIgbGVnYWN5LXRydW5rCisyMDgwMSBkYjA3NGFiYTllMzY0Y2E3NjI3NWNiMTYzOTI5ZjA0YWQ5MTA1OWUxIGxlZ2FjeS10cnVuaworMjA4MDIgM2RkNDk1NDJjNGQwMWExNjFjOWUyOTMwMjhhZWM0MWZmZmViNjMwZiBkZXNjci1icmFuY2gKKzIwODAzIGM4NzJmZGYxMDEzMGY0NjllOTJmOGEwODgyMWEzYWY4NmE4NjEyMGQgbGVnYWN5LXRydW5rCisyMDgwNCBmMThlODA4YzAyMzBkMDM4N2FkNmMyMmRlMzZlOTI0MTBlYmZkZDA4IGxlZ2FjeS10cnVuaworMjA4MDUgMmI1YTliZmYxYjExZTkzODJkNWE5YWY4MmFiZDUyYjBlNjZmYzEyYyBsZWdhY3ktdHJ1bmsKKzIwODA2IDdlZDBjYWViZGQ4NjFjZTJkYWEyZjI1NDIyNTkxMmIxZDZlNzMyYzggbGVnYWN5LXRydW5rCisyMDgwNyAzZTI1NmY5ZDk5YWRlMGE5MTUyODk3YTMwNGQzZDY4OTQ5OGE0MjQ5IGxlZ2FjeS10cnVuaworMjA4MDggYWRhM2JkMWI4NzEzNDdjY2IyYTBlZmQ5OWZhNTIyZjE5YTU2OGVkYyBsZWdhY3ktdHJ1bmsKKzIwODA5IGZiMzFjMzM3NjFjOTY1ZjBjMDhiMWEyODU1OWUxM2VkYzExYjZkNWYgbGVnYWN5LXRydW5rCisyMDgxMCA5ZmYzNWY3NjYxYmQ3M2VkNjAxYjU0MjQyNjI3MDAzZTk3ODhmMzQyIGxlZ2FjeS10cnVuaworMjA4MTEgN2Y0NTU0YTFjYWUyMjhmMDI5MTk3NmM5ZTkzNGZhM2I3OGVmNzgzYSBsZWdhY3ktdHJ1bmsKKzIwODEyIDY5NjBiMmJiYmZjYWEyMTFiYmYwYjEwODlkMzdiN2IzNDViMTRjNTcgbGVnYWN5LXRydW5rCisyMDgxMyAwMTdhNjRhNGJkYzdhOThjNjAxOGM0ZDc3NGM4MGRkYzUyZmI4NDM0IGxlZ2FjeS10cnVuaworMjA4MTQgMjk1YTJmNDkyN2FiNjlhNWNhY2EwZDM5M2VmNzI5ZjkxM2YzNjNjMyBsZWdhY3ktdHJ1bmsKKzIwODE1IGEwZDA4YzQyZTcxMDJiYWVhYjMzMWExNDkxZmQ5NjlmMTBhZDA3OWEgbGVnYWN5LXRydW5rCisyMDgxNiBiYTk3MTExYTZhZDlmOTk3ZjAxMDg4NjVlMjMzMmNjMmYzOTZhMzkxIGxlZ2FjeS10cnVuaworMjA4MTcgMDU1ZmMwNDZlMDgwZWMwZTJkYTRhMThmZDBmYWEyMDEwNjkwMzJmZSBsZWdhY3ktdHJ1bmsKKzIwODE4IDAyOGExZDM5ZWZiNjVjNGIzOGZhODU0Y2VhNDI0OWMxNjM3NjBlMTIgbGVnYWN5LXRydW5rCisyMDgxOSBkMmQzZjg4NjYxYTNlOTk0YWY3MTc4MjU2MGZkMmZjNjA0ZGNjMzZkIGxlZ2FjeS10cnVuaworMjA4MjAgMjgwNzk0OWUwYmE1OTFmMTRmZjFkMjMwMWRhNWIxOTk4ODMxOTM3MSBsZWdhY3ktdHJ1bmsKKzIwODIxIDc5YWVlNDk4YTJiZTUxYmY4ODlhMTg2NjVhN2MxODJiNTgzNTdkYjIgbGVnYWN5LXRydW5rCisyMDgyMiA3NzYzNTQ5Y2NhNDU2NGE0ZTUxMzFlNWU1NmRjNGM0Mjg1MmYzN2VjIGxlZ2FjeS10cnVuaworMjA4MjMgYjc3YzQ4ODhkN2NjYWRkNmY3NDc2YmZjZjMyNTZmNDMwZjNmNDM5MSBsZWdhY3ktdHJ1bmsKKzIwODI0IGI1M2I2MGYxZWQ0NTk2Nzg3ZmYxYTRhYzM0YzIzZDk0OWYzNWEzMzcgbGVnYWN5LXRydW5rCisyMDgyNSAzMzVmYmRlZTdjZjgzYzI3YmZhY2JhMzM1MjQyZjc1YmI2YmM0MTI4IGxlZ2FjeS10cnVuaworMjA4MjYgOTdlY2U5MzIxYzUzNjRmZTg3OWU4ZWM2MTE0YmI4NTkzMGJhMzMzNyBsZWdhY3ktdHJ1bmsKKzIwODI3IDBlODZiZGViMGI5MjYxN2ViNzA4MmNlOTRkZjA0ODdkNzdlMjUyNzIgbGVnYWN5LXRydW5rCisyMDgyOCBiZTk2OWU3MTdiOTFiMGEyOGJmNTJjMGNkYWVjYTkxMmJhZjIwOTllIGxlZ2FjeS10cnVuaworMjA4MjkgZmRlNTUwOGU4MmRlNmNkOWQ4ZGQ3NzBkYTY4ODliMjM3MmNjOGY1YyBsZWdhY3ktdHJ1bmsKKzIwODMwIDA0MmRjYTFkNDUyNmUxNTkxY2NkOTY1ZTNkNWU3ZGVjZjk3N2YyYTIgbGVnYWN5LXRydW5rCisyMDgzMSBjY2I2ZDc2NjMzYmU0ZDlkYTI3ZWE4ZTZhNDNhNDRiZmYzZDc2MWZhIGxlZ2FjeS10cnVuaworMjA4MzIgNjhiZjA3ZTdiY2NjOTRkZDZlMmRhYjhhN2Q1MGM5ZGQ3NjM0ZTc0MyBsZWdhY3ktdHJ1bmsKKzIwODMzIGI4MjNhMzMxODNmYzY0YmJmOTZjYjc2NzFlODAwNzRiOWUwZjcyNTkgbGVnYWN5LXRydW5rCisyMDgzNCAwOTRjZWU2ODk4YzEwMjZjNGE5ODY3Zjc5NWY2ZWNjZjYzOThmNzYwIGxlZ2FjeS10cnVuaworMjA4MzUgNDNiN2VlNzE4ZjUzZmZhOTFjM2U2YTY0MmVlZjA1NjMxNmQ5ZjFiYSBsZWdhY3ktdHJ1bmsKKzIwODM2IDIwMGYzYTVkZTFjOWFkYjJlZThjYWQ3MmMzZmExZmRmM2MzMzg3NjIgcmVsZWFzZTIxLW1haW50CisyMDgzNyAxZWIxMjI1OWZlZWE2NDc5ODQ4MjY3ODY3NWVlYjM5MmRhMWE4MmY5IGxlZ2FjeS10cnVuaworMjA4MzggZWIwM2M2ZmMzMWU1YmQ5ZmI1MzEwZTA4MTU5NTA3MmQ3ZjZkZmRlNSBsZWdhY3ktdHJ1bmsKKzIwODM5IDE1MWEyZmEyOTZmZTQyYWZhNDFmZGNlNWU3Y2U4NTg1YTJiMTE3YWEgbGVnYWN5LXRydW5rCisyMDg0MCBjYjExYzU5YzE4ZGQzYmZmYWNmZTFiZTYyOTU1Mjk0Mzk4Mzg3ZTE4IHJlbGVhc2UyMS1tYWludAorMjA4NDEgMTNiZGI1YjIwN2QyNmQ5MzY5NjU5NDZmZmQwOTNmZTBiNGU1ZmY0MiBsZWdhY3ktdHJ1bmsKKzIwODQyIDUyNGUwZjNjMTY5YjI3MDdiYWE1ZTk1MTI5NzY2MzcxZGYyMGMxM2EgcmVsZWFzZTIxLW1haW50CisyMDg0MyAxN2MyMDBhN2RiODVhZDZkNDhlNWFkOGVhNjVkNzRjNGM1ZmVlOTgxIGxlZ2FjeS10cnVuaworMjA4NDQgNDNhYjlmODI0ZDg5MGQ1NWNiM2E4NGFjOWMzMjI0MmUxNWE1N2Q4ZiByZWxlYXNlMjEtbWFpbnQKKzIwODQ1IGQ1NjY2NmRlYjk1MzhmZjNhZTAzOTU5MDQ2N2RmYzhhZDE2YzA3ZmMgbGVnYWN5LXRydW5rCisyMDg0NiA2MDI3ZDNjZjgwNWNmNzA3YTNiNTk4YWQ4OTkzZjcwOWFlN2E5MTZmIGxlZ2FjeS10cnVuaworMjA4NDcgMjA2MGVlMGE3ZDkyYzQxZjNkMmIwOWQ5NTkwYjAxZjRlOGEwODkzMyBsZWdhY3ktdHJ1bmsKKzIwODQ4IDIxMzVkN2RlODZhZGIyYWE1ZDg3MTFhMWMzYTNmNjVmMWMyYjc5ZGQgbGVnYWN5LXRydW5rCisyMDg0OSBhOTNkYWFmYmQxM2Q3NDhjZTk1ZDE2YWM5ZWRjYWJjZGE1YmRjMTI3IGxlZ2FjeS10cnVuaworMjA4NTAgMGFmODI0Yzg4MjAzMDYxZTQwNGVhZDA1YmMzZjFmOWNhN2JiOGUzYiBsZWdhY3ktdHJ1bmsKKzIwODUxIGZkNWY4MzE4ODc3ODZkMzEyYzM4YjM2ZjdhYmRiYWYxYTk2YzM5OGQgbGVnYWN5LXRydW5rCisyMDg1MiA5M2I1OTA3MjliZGM4OTkwZWVmNzFjYTU0NTFlYmIxYzNhYWQ2NmI2IGxlZ2FjeS10cnVuaworMjA4NTMgZmQxMmU4MmI3NzI3ZmIyODJmNWVkN2RkNDEwN2JmMDk2MjJkOWQyNiBsZWdhY3ktdHJ1bmsKKzIwODU0IGExZGRjNDA4MGNjNTcyMTk3ZWNlODY3OThmODk5YTM2Zjk3NzBkNDcgbGVnYWN5LXRydW5rCisyMDg1NSBmOTViYWRhNTI3M2UyODk5MGNjY2MzNmYzNmIzNGVmMDY0MjczNWZkIGxlZ2FjeS10cnVuaworMjA4NTYgOTM5ZTNkYTU5YzYxMjIxMjYzMGExNGZjOTU3MTAwYTZiN2E1ZTc5YyBsZWdhY3ktdHJ1bmsKKzIwODU3IDViMDk3ZjYxNzE3MzUzODkyZDA4ZjQ3YmZhMmE1NGVkNjU1MGUyMDcgbGVnYWN5LXRydW5rCisyMDg1OCA4ZGE5NDczZjA3MzZiMDQ4YmE0Y2FlMTRmODUzNGIzMmVkYzQ1N2MzIGRlc2NyLWJyYW5jaAorMjA4NTkgMTRkYTUzMTQ2NjRkOTQ4MmNkYTIxMDZlMDQ5NTE4NGRmOGVhZWUyMSBsZWdhY3ktdHJ1bmsKKzIwODYwIGM0ZjU1NDAxZThhZWQ1NzAxZTE0MTIzMmFkNTc1Y2M3Y2YzZmU0MjEgZGVzY3ItYnJhbmNoCisyMDg2MSBlMjA4MGRiNzFiMWIwY2JhYWI2NmZlYzk3NzZjNDhjYTY4ODI0ZWJiIGRlc2NyLWJyYW5jaAorMjA4NjIgYzEwYjQxODU1MjAyOGFkN2JmYzExYmVkNTM0YzZkYjYyMGRlMDBmYyBsZWdhY3ktdHJ1bmsKKzIwODYzIGYwYzNkZTIyY2FlZGRlYTIyNGI3ODEzNDU0ZjJiYTc0YjMwYmZkZGQgbGVnYWN5LXRydW5rCisyMDg2NCBjYzk4NGVkMjY1ODZhYzA2YzZlYzg5ZDZmNDc3MGRlZDdiM2Q1M2Q3IGxlZ2FjeS10cnVuaworMjA4NjUgNWQ1MGQxZmFlMDc4N2Y1OTJkNTdkZGIxNzNkMGRkZjA3MmI4YjhiYiBsZWdhY3ktdHJ1bmsKKzIwODY2IDM4ZmRmOThkYTk5ZmRkMTYyZTJkYmYzYWZmNGM3ZDZhOWM1ZjYzYmYgbGVnYWN5LXRydW5rCisyMDg2NyAzNGIxNTA0ZTY2NDRjN2U4ZGExMGRhMjM0YjBiMWQ0ZjdiNDQ0MTUyIHJlbGVhc2UyMS1tYWludAorMjA4NjggYWU4YzRmNDcwYTBlNDQ3MjdjNzM5MjQwMzVmYTEwMDgwOWUwNDY5ZCBsZWdhY3ktdHJ1bmsKKzIwODY5IDUzZGUwZWVhNGQyNWM4NmU5OThlZWM1N2EzNzIzYjhkNTU0YWQ0OTIgbGVnYWN5LXRydW5rCisyMDg3MCA2OTczN2Q3ZjQ3NzZmZDZjMzI5NDNkNTBiZDYyMWNhMjEzOGQ2ZDI1IGxlZ2FjeS10cnVuaworMjA4NzEgYTQ2ZjFmN2E5Yzg2OWEyYzc1NDllMWI1NzYxYjUzZDVlNTNhOTQ1MSByZWxlYXNlMjEtbWFpbnQKKzIwODcyIDBhN2FmMGU1MzhkNGFiZGNjMGI1N2ZhMzM2ZDY3NzVhZWMxNDExYTcgbGVnYWN5LXRydW5rCisyMDg3MyA5YWY4MDZiMjg2YzYxNjU0NzY2ZDNlMzBjMTQ4YzE1MDQ5YzBiMTE3IGxlZ2FjeS10cnVuaworMjA4NzQgN2I5NzcxZjY4NTZiMzA5ZGQzMzJjYTlhNmQyZWJjNjQyNGUxMTc4YiBsZWdhY3ktdHJ1bmsKKzIwODc1IGQ4ODQyMzVmZTc1YzNmNGY2NTEzMTM0MDNkMTkyMDcwZWNlNmUxZTYgbGVnYWN5LXRydW5rCisyMDg3NiA3Nzg3MWM0OTkyMTVmYjE5Yzc0Njc0ZmNlMzI2YjdjMzIxMzg2MWU0IGxlZ2FjeS10cnVuaworMjA4NzcgNjE5ZmQ4ZTA2N2RhZWNmMDc3MDgzZDk3NjVmYTQ0NWYxOTc0ODA2MiBsZWdhY3ktdHJ1bmsKKzIwODc4IGZiZmZiNmRlMjVkZGNiM2I4M2VkYzJmOGVkMTdkYWY3OWVmNzEwYzEgbGVnYWN5LXRydW5rCisyMDg3OSA0MjFiMWQ2NjA0OTUwODg2OWYxYzdlNzI4ZTI5NjRkZTJjNWUwM2JkIGxlZ2FjeS10cnVuaworMjA4ODAgODRmZjE5NzdkNzcyNWZiNTI0MDU3ZWQ3M2ViZjlhYzc0YzVhZWE4MyBkZXNjci1icmFuY2gKKzIwODgxIDQ2OTA5ZjIyMTcwYzNlODY4MjYwMmQ2NjdkMGVhNWZiYTEyNjBkYzEgbGVnYWN5LXRydW5rCisyMDg4MiBmZjZhNmQzNDcxOTVhZDRkMjQyM2Q4N2M2YmNjNmQ1Y2NjZDAwZWNjIGxlZ2FjeS10cnVuaworMjA4ODMgMWJlNmQ2OGFlMTJjZTdiMWE0ZmMzNGFiMzY2OTE2YjhjY2JiZmE4OCBsZWdhY3ktdHJ1bmsKKzIwODg0IDZjNWE4MDBkYTc5MWY0MjU5Y2QxZTFkM2Y4NjZkZTAyMTdmZjU4YTQgZGVzY3ItYnJhbmNoCisyMDg4NSBhNjQzYTg3YTRiMmNhYTQ2MzFjODMyMjRlNzM1ZTlhOWVjMDdmMWQzIGRlc2NyLWJyYW5jaAorMjA4ODYgNzBjZDlhNDE5MDc2OTQyNzQwNDI3ZmQ4ODM0MjVhMzBiZTRlNWFjZCBsZWdhY3ktdHJ1bmsKKzIwODg3IGJkNTM0OWI0MTFmNjFhNjlmMWFmNTAxZmQ2ZWYzNTQ1OWMyMGRlZTkgbGVnYWN5LXRydW5rCisyMDg4OCBkNDI2OTQzN2U4YjNkYzFmYzVmMTdkNTc3NDkxYTFlOGM5OWQ0NzY4IGxlZ2FjeS10cnVuaworMjA4ODkgY2U2OWZiOWM4ZDU2MTcwOGI4OTI5ZTNhOTI3ZWYyY2I0NTE2NjZjOSBsZWdhY3ktdHJ1bmsKKzIwODkwIDE2MDA1YjI4NTU3NjJkZjFkYTAwYjEzZGU3NGNlMDg4ZmRhNzM4NDMgbGVnYWN5LXRydW5rCisyMDg5MSBhMWZjZmRjYjM0Nzk2NjgxNTMyZGZkYjJiZTM3ZTRiYWZiNzcwMDZiIGxlZ2FjeS10cnVuaworMjA4OTIgNWFiYzIzMjk5MjJmZWQ2YTMyNjBkZTgxNmVmMDNjMWI3YjMxMDU0MSBsZWdhY3ktdHJ1bmsKKzIwODkzIGE4OTVkN2Q3MzlhZDQxNmI3NGUyZjhkNTZkZWE1MzY1ZDY0OGQxZWEgbGVnYWN5LXRydW5rCisyMDg5NCA0NzRlM2RlMDBiMDUwZWNiYmIwNTEyZTM0ZDc4MGI4ODk3OTU5OGUzIGxlZ2FjeS10cnVuaworMjA4OTUgMjk3YTI2NmFjNGVlMTcyYmRkNWZmMmVhZWZmMDQ5M2Q5ODA2OTc1YSBsZWdhY3ktdHJ1bmsKKzIwODk2IGRlYTBiYWRlNjU2ZDQ5MTUxMGYwOGFiZWI0ZmVmYTZhYmI5ZmYyYTUgbGVnYWN5LXRydW5rCisyMDg5NyA2OTRjOWYwY2Q4MTQyOTc5MzQ4ZDZiMzQxMmNlZTUzOTBiMmFiYmExIGxlZ2FjeS10cnVuaworMjA4OTggODMxYzI3Zjg3NmFjOWRiY2Q5Yjc3YWI3NjYzMDBhZmI2NGEwYmUzNSBsZWdhY3ktdHJ1bmsKKzIwODk5IGJiZjcwMjA0OWVjNmIxYmYxZjliMzYwZDAyZjk2MTkzN2RiZmI4NjcgbGVnYWN5LXRydW5rCisyMDkwMCBlNGU4NTNkNTU2NzVhMjk2YmUzZTZiN2JlZWRkYWNkYTAyMmI5M2YzIGxlZ2FjeS10cnVuaworMjA5MDEgZWEwY2FkOTJjZmQyN2I3ZjZkY2NhNzNlMDJlZDQ0NTM2MTc1NjdhOCBsZWdhY3ktdHJ1bmsKKzIwOTAyIGNlN2YwZTM4MDgzMDQ4N2JkOTNkOGUwZjFkNjdmODBkNGE0NTI0YmQgbGVnYWN5LXRydW5rCisyMDkwMyA1NjIxNzYxOTFlNjA0OTg3NTlkYjZhMDBiMmJjNzhmMjUyZDBmNTdhIGxlZ2FjeS10cnVuaworMjA5MDQgZTE0YjQxZmQyYWIyNTE1MjE4ODY3MjM0ZjI3MTgxNzQ1NGIwYTQ3NSBsZWdhY3ktdHJ1bmsKKzIwOTA1IGNmZTA4MWM5NTUzZWM3ODQ3NmZkNzU0YWM4OTNiYzE3MWIzNjc3YzAgbGVnYWN5LXRydW5rCisyMDkwNiAzZTY5ZDdkYjVmOGQ1MGZiNTUzOWU0N2Y4OTdhODRlMzUyNDIxNWE2IGxlZ2FjeS10cnVuaworMjA5MDcgYTQyOTEwYjU0NDJhOGZkNzc0YWY2ZTQzZGM3NTcyZDMwZTNiZTcxZSBsZWdhY3ktdHJ1bmsKKzIwOTA4IDIyYjUxNTJkMjNmYzJiZWUwODBmZjI2OTEzNmFkMjM4MGIzNzM0MjggcmVsZWFzZTIxLW1haW50CisyMDkwOSAyMjM0NDE1NDA0NDMxNjY3OGI3NzdhMWM4YjY4M2M1ZDliOWIxNDdiIHJlbGVhc2UyMS1tYWludAorMjA5MTAgYjg2ZWVlZGRhZTIxMzQ2ZTRiY2ZkMmY2ZTA2ZDQ0ZTI3M2FmMjQzNyByZWxlYXNlMjEtbWFpbnQKKzIwOTExIGRiNDNiZTE5ZDNlMzNiMDAwMTU5MTcxNDM1ODhiMTNiZDY5NmRlYmQgcmVsZWFzZTIxLW1haW50CisyMDkxMiAwOTYwNzJkODg3OTg2OGFjYjBkYzJiZDhmYmEyNGRmNWNmOTkyNDA5IHJlbGVhc2UyMS1tYWludAorMjA5MTMgZDA3OThiM2EzOGMxNTZlZjE3YjI4ODRlMzc4YjQ1NWZiOTdiM2Y2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE0IDJlZGFhOGU5ZjM4MTUxNWNiMGE3ODdlNzNkOWVmZGM4MmI4YjE5ZDggcmVsZWFzZTIxLW1haW50CisyMDkxNSAwNzExZjNjZDQ0ZDA3NzA3MDM5NDNmNjZmZDVkNDg5ZTJmNDg4ZTNkIHJlbGVhc2UyMS1tYWludAorMjA5MTYgZTE4MTZmNjQ5ZmY4ZTEyMzY0OTgxMTcyN2ZkNmJmYTkzZWMxMTQ2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE3IDVkODk0YTVmY2UzOGMyYzk1ZGUwMDY3Njc2NWMzOGEyNjZlNWQwNjUgcmVsZWFzZTIxLW1haW50CisyMDkxOCBiMzhmZDJiZDY4YzBhMTllNDUyNDA3ZjRlMmZiNTY3YjBlZWFkNTYxIHJlbGVhc2UyMS1tYWludAorMjA5MTkgMTQ1OGI1OTZhNDM0YWM4YzNjZDA0NzkwNzZhNzRmZDc5ZjU0MmE5NiByZWxlYXNlMjEtbWFpbnQKKzIwOTIwIDc5M2I3NTU0M2YxM2Y1YjViM2I4MmYzYTViNTUxMDhmMmY4YTRlYjUgbGVnYWN5LXRydW5rCisyMDkyMSA4YzQ3ZDlkYTMwZGUyNmRjODg4OWJjOWJkMjI1NWM4MzkxYTExMDhhIHJlbGVhc2UyMS1tYWludAorMjA5MjIgOWRmZDIyZThlOWI3NmRkMTk3MTAyODY2ODA1ZDg2YzliMjIzMTU3NSByZWxlYXNlMjEtbWFpbnQKKzIwOTIzIGE0MjlkYTdkYjcwNjk1NDY3Y2Q2MmNlNWY4NmRiN2RkMWY5MjBjMWYgcmVsZWFzZTIxLW1haW50CisyMDkyNCAyNDg0MThjYmQwMDUyN2Q0N2U1NWY1ODc2ZmI0NWQ4MzI2MGE4ZjM3IHJlbGVhc2UyMS1tYWludAorMjA5MjUgNGVkNjU3ZDM3Y2VhN2JkOGMzZGE4MGU0ZGExMmI2N2RiNWNjODZkZiByZWxlYXNlMjEtbWFpbnQKKzIwOTI2IDU2OTZkZGRhM2U0MGY5NzFmYmExNzNkYTI0Zjk0NDEyOWMyZWQ1NTggcmVsZWFzZTIxLW1haW50CisyMDkyNyBmYzY4ZjZlZDcwMTQyMDQ1NWY2N2QwOGI0ODhlZDg5YjRmNDcwYjA5IHJlbGVhc2UyMS1tYWludAorMjA5MjggNGFkN2EyYWI0MmI0MmU4YzUwYzk4ZTlkYTcxNTM0MDkzNDE0YjJiZSByZWxlYXNlMjEtbWFpbnQKKzIwOTI5IGU1YmEwZDJiNDdlMjk0MjUyZTFlYWI0ZWYzNTFlYzUyYTNlMmUyODggcmVsZWFzZTIxLW1haW50CisyMDkzMCAxMDMxMTFhZDk5ZjFmMGUyZWJhNTA0MzE2MzY5ZGRlY2RiZTAyMTU3IGxlZ2FjeS10cnVuaworMjA5MzEgYWY0ODk1ODc1MDlkY2RkZTYzYzA5MmU4MDNkY2NhZGVjOWExZjhjOSBsZWdhY3ktdHJ1bmsKKzIwOTMyIGQ4NmIyNDVlMDg1ODAxYzI0YzcyNDE0MzhkMjhkZTViOTVkM2M2OGEgbGVnYWN5LXRydW5rCisyMDkzMyA5NWJhYTMzM2VlNDNjYjgwMTc4NzVhZGFmMjg4N2M4ZmRkNTk3ZjIyIGxlZ2FjeS10cnVuaworMjA5MzQgNWUxMTQxMTU3ZDUzZmQ5NWU3NjhjYTBjZWMwNjc0ZjI2ZWI5YjcwYyBsZWdhY3ktdHJ1bmsKKzIwOTM1IDc4ZjY3MDcxYzk0OWViMmM5MmMzZmVlOWRkMmEzNzcwY2Q5ZjRiYzggbGVnYWN5LXRydW5rCisyMDkzNiAxNzhiZWRmOTUzNmQ4Y2UxYzBmYzY2NjZlZTMxMDg1NWM3MDcxZTJhIGxlZ2FjeS10cnVuaworMjA5MzcgMDVhYjBhNzE0ZTRjYWVhOTc0MGNlMjU4OWNkNDc1OTEyZWMzYTAwYSBsZWdhY3ktdHJ1bmsKKzIwOTM4IGIyMDE4ZTVkMjE0MmI5NDFkMjE3MTIwOGRiNjg3Y2E3YzFiNWY0ZDIgcmVsZWFzZTIxLW1haW50CisyMDkzOSBlZDhiNzljNmNiNGIyY2RhYWM0M2Y3NmFiOThkMWFhOGI5MmU2NWNkIGxlZ2FjeS10cnVuaworMjA5NDAgZjlhMzRhYzE0YzhiZTk5NjIyMjJiMjQxYjc2ODc0OGVkMmMzZTYxMyBsZWdhY3ktdHJ1bmsKKzIwOTQxIDczZmNjNGY0YTE4MjI5MGVkMTUzMDRiOWQ4MDg1M2FmYTk2NmFiMzYgbGVnYWN5LXRydW5rCisyMDk0MiA0MDFjY2ZjZjI4YzM4ODQwZWE3ZTc3MmRlMjEwMGRjODczMzUxYjY4IGxlZ2FjeS10cnVuaworMjA5NDMgMmYyZWU1ZGFhNjBkYjY1Nzk3MGNmNTZlNzU4MTlkZmU3ZmUyOThmNSBsZWdhY3ktdHJ1bmsKKzIwOTQ0IGIwYjQ2ZDc3MzRlMGVkM2U0OGM0YmY1MmE0YzQyOGNlYmQzZWIyNzEgcmVsZWFzZTIxLW1haW50CisyMDk0NSA1MjdkMGZmZGYwOTkwMTYxMWJmNjM2MWMzMzhiYmYyYzMzNTZiNjJjIGxlZ2FjeS10cnVuaworMjA5NDYgZDU3OWE1ZDhiM2ZlYTgxYzExNWNmZmM2NzRhMDBlMzgwODQwMmNmNSBsZWdhY3ktdHJ1bmsKKzIwOTQ3IDJhOTRiZjIzNWRhYWNmYWVmNGU3OTM3N2UwOTFiNzhlZjBlN2Q1MzYgbGVnYWN5LXRydW5rCisyMDk0OCA1ZTg3YTA4YWJiMDU3YTE1Y2E5MmNkMmFjOWJiMGFhMDVlMzMwNTkzIGxlZ2FjeS10cnVuaworMjA5NDkgMTkyZDM2ODY5NDQ1NThhM2YzNTk3ZGNmNGRiOWM2YjEzYzBmYTkwYiBsZWdhY3ktdHJ1bmsKKzIwOTUwIGRiMTNmYjVjODU4YTUxOTMxMTE2YjI0NGZlNjdiM2U5ZjYwMDA2NGEgcmVsZWFzZTIxLW1haW50CisyMDk1MSBhMmI5OTZjNzE2YTFjNTA0NDU5OTFiZjU0ZDEwYmFhZmI0NzdhMDQ4IGxlZ2FjeS10cnVuaworMjA5NTIgNjJlZWMyOTM2Y2QzZjllMWI2MDA1ODVmYTkxYTM1ZmM2YjBmMjk3NSBsZWdhY3ktdHJ1bmsKKzIwOTUzIDk1MjZmMGVkMDY2YTA0N2U0YzRlOGZkMDU0ZGVkNWU5NzcyMjQ4OTMgbGVnYWN5LXRydW5rCisyMDk1NCA0N2M3YzFlYjk1NzRkMTk5Y2U1NGU1ZTMyMmI0M2I0Njk4Nzk2OTI5IGxlZ2FjeS10cnVuaworMjA5NTUgNzA2YmI2Yzk0NWRmZjU4MzM3YTdmOTM0ZjQ2NjUwMzZiMjQwYmE0MiByZWxlYXNlMjEtbWFpbnQKKzIwOTU2IDg1ODUwNDFiYTU3YjFiZWNlMWRmN2QzOTQ0ZDYwN2ViYmY0MGViMzcgbGVnYWN5LXRydW5rCisyMDk1NyBhZTA4YTAxZjJmMmRkMmY1ODdmYTY5N2RjYzVjMzAwNzJjYzIzZDA1IHJlbGVhc2UyMS1tYWludAorMjA5NTggZTgxOWNjMGE5ZWY2ZGMwYmVkZjE5ZjUzYmU0NTM5NWUzZjMzOTlmNCBsZWdhY3ktdHJ1bmsKKzIwOTU5IDgzNjE0ZDBlMDBmMTVlNzQ1ZjBlMjRjOTk4YWUyYTkyNDY3Mzc0MTUgcmVsZWFzZTIxLW1haW50CisyMDk2MCBjZGY4OGJhMmQ5NjhiOTNiMGJhYzVlNDM4MDljZjg0YjE5NTQxYjc3IGxlZ2FjeS10cnVuaworMjA5NjEgMDc2OWUxMWQ5ZDVmNDhmM2UzNjFhNTRhOTU2M2UxMGViNzA0MzczNiBsZWdhY3ktdHJ1bmsKKzIwOTYyIDllZTIxODI0ODFhZjlhMTQ3M2E2YWI3MGI4MmQ5YmU1NDE5NzZjZWYgbGVnYWN5LXRydW5rCisyMDk2MyA0NDdlYTY1MTgxYzI4NWMwNjc0Nzk4MmJhNDdkN2VkMTdjMTBlOGFlIGxlZ2FjeS10cnVuaworMjA5NjQgMjk4ZmIyOWRhYTgxYzI3MzQzNjJjNjdhZmUwOGVmNWJlNzU0YTZhMCBsZWdhY3ktdHJ1bmsKKzIwOTY1IDgzNzgyNWE3NzljMTZlYTMyMWM1MzI2NjE4NGIyMDQzZmYwNmM5NjEgbGVnYWN5LXRydW5rCisyMDk2NiA1YTlkZWJiMTQ0NDBlMjUyZTMzNTVmMzNiYTQ5NWJjMTRiOTZiOWI0IGxlZ2FjeS10cnVuaworMjA5NjcgMjdmMjQyMmVhMzM1NzgwYTc3MGZlMTQ3Mjg2ZjZiYzI2OTRhYzhhZSBsZWdhY3ktdHJ1bmsKKzIwOTY4IGM4Y2I3OTc3MjM2NGU0ODYwYWIxY2FmNDBjMzJiODhiYjNkMTg2NGYgbGVnYWN5LXRydW5rCisyMDk2OSBmZjY0NGU2MDg1MjhjZjZjNDc1Y2EwM2M5NWFlNzIxOGM0MzdiMWM1IHJlbGVhc2UyMS1tYWludAorMjA5NzAgZWM5MzQzYWQxZTYwOWE3YzViYTVkZTg0YzJmNDNhZDMzMjRkNjYxNSBsZWdhY3ktdHJ1bmsKKzIwOTcxIDk3ODA2YTU5OWM3ZWI1YTY5NzY3Y2MzYjM4OTE1MGIxMzBkMDdkZWIgcmVsZWFzZTIxLW1haW50CisyMDk3MiA0NWJhZGZiZmIwMGVmNjEzNmYwNTczZjFlNjExNmFmYWNiMDdkMjU5IGxlZ2FjeS10cnVuaworMjA5NzMgMjdlZGU4YjA5NWQ2ZGYxZDE0ZTE5ZGEyYWRhNTVjZDQ3M2U5ZTlkOSBsZWdhY3ktdHJ1bmsKKzIwOTc0IDY0ZTFlYTM0YjU1MzAwZDNmMmU1NTk0Zjc0ZTBjYjNlZTE5ZDg1ZjMgbGVnYWN5LXRydW5rCisyMDk3NSBiYWYyMTM3ZTk2NzZjYjQ0NmM5ZjdkNGJkMWE5MzJlMjRhYTBlNmUxIGxlZ2FjeS10cnVuaworMjA5NzYgZTYwZmMwMTc2MmEwZjkwMTc3NDY2NDQ4NzQzY2FmZWE3ODZmZjI2NiBsZWdhY3ktdHJ1bmsKKzIwOTc3IDZhMmUyNTQ4ZTZjZjM5YTFkOWYxZDM1NzRiMWVhYmUyY2MwOWI5NGQgbGVnYWN5LXRydW5rCisyMDk3OCBhNDMwMTQzMWIyYWM4ZTc1ZWZjMzhjOTI2OWQ3NGNmNTY5ODFjOTZhIHJlbGVhc2UyMS1tYWludAorMjA5NzkgNTBlMzM4MGIwODZhMWQ0NzYyMWUzZjk4ODVmMWVjNjYxYWNlZmE2ZCBsZWdhY3ktdHJ1bmsKKzIwOTgwIDUzYjBmNjVhMGEwNWQ3NWRmMTNhZGU0NWYzMjYyZWU3YWIzY2FmZTMgcmVsZWFzZTIxLW1haW50CisyMDk4MSAxODA3MTA5MTFmMTVkN2RjNjdkNGE0MDg2Nzk2ZGU2ZGQ2ODk0MzNlIHJlbGVhc2UyMS1tYWludAorMjA5ODIgNTgyODQ1ZTE0ZTVjYzE1Y2MwOGNkMTg4N2YyYjcwMmQ4MmY0Njg2ZCBsZWdhY3ktdHJ1bmsKKzIwOTgzIDk5YWVhNmY1Y2ViZDI4ZWY1MTljODEwYWYyZGU2NDZkMjNmMmUzNTIgbGVnYWN5LXRydW5rCisyMDk4NCA5Zjk3MTY3ZjE2NDMwMTY3M2NlZWNiOTZhN2VmYTc0NDAxMTA3M2NmIGxlZ2FjeS10cnVuaworMjA5ODUgMGMxYTA0ZTk4MTM0MmZkNWI5NGQxY2EzYWM4ZTU4Njg2Zjg1ZjQ3ZSBsZWdhY3ktdHJ1bmsKKzIwOTg2IDBkNmY3NjBiNmVmMWE2NDQzNmIxOGZhNzExNzc4OTE1MGU4OWJjMmQgbGVnYWN5LXRydW5rCisyMDk4NyBmYWNmZjVmNTBmY2NhZjI4ZTlkZDkwMDZhNGFmNTY0YmVjYjVmN2Q3IGxlZ2FjeS10cnVuaworMjA5ODggMDM4ZTJmNzQ4MDBkOTc4MzAxZWU0MGNkODFkYjUxMmJkMzk0MmFmMyBsZWdhY3ktdHJ1bmsKKzIwOTg5IGNhN2UyZTFhZThkZjk2ZTU4NjY5MDJkNDJmNjM3MzIyMmU4Yjc0Y2MgbGVnYWN5LXRydW5rCisyMDk5MCBlODZkMzMwODFiYmE5NGJlOWQ3ODZlNjY4NWY5M2Y5YjU1Yzc0ZGRmIGxlZ2FjeS10cnVuaworMjA5OTEgYzk4N2RjZDg4MmI5YzczMThkODUxZjc2ZGRkYTAwYzFiODBiNzQ2MyByZWxlYXNlMjEtbWFpbnQKKzIwOTkyIGJkMWM0ZmU5NzdjYmRjNzU3MzJmNWYwMWNiZDFhMmZjYWNhMWY2ODkgbGVnYWN5LXRydW5rCisyMDk5MyA4ZDJiYmJiZjJjYjlmZGMyZmE4N2JhM2I4M2JkZmRiYzMzMjBjNDk3IGxlZ2FjeS10cnVuaworMjA5OTQgMTliNTA0ZmI5ZDE1NmU3YjE3Zjk4OTIyMWQxNWQ2Y2E4M2UwZmI0OCBsZWdhY3ktdHJ1bmsKKzIwOTk1IDUxMTU4N2FiMmRkMmU2ZjI4MmQ2ZmFkZTgwOTJlMDg4ZTNiMjVjZDkgbGVnYWN5LXRydW5rCisyMDk5NiAwMjQyNjc0NDE3NjFlOTQ0YmZhYWYzZGNhYzgzZDYzMTU1ZGE2MjUzIGxlZ2FjeS10cnVuaworMjA5OTcgNTM5MWI5ZDAyMmFjMTI3NTcxNTFmNzg3YjM0MWZjYjQwYmIwY2E4NiBsZWdhY3ktdHJ1bmsKKzIwOTk4IGVlNWYwMTY1ZTRlM2ViMWRiMGQwOTQ0Y2NiZmZiNWE2ZmRhNDk4MWYgcmVsZWFzZTIxLW1haW50CisyMDk5OSA0ZDYyYTJmZWM5MzBhMmE4ODQwMTc3ZDdjZDVkNWY3NTQxMzIzNTA1IGxlZ2FjeS10cnVuaworMjEwMDAgNmFlNjEyMjkxMmQyZWRiOWQ0MjUxMGI4ZjY4ZmVlMzBmOGRhM2RkOSByZWxlYXNlMjAtbWFpbnQKKzIxMDAxIDllYmU4NWU3MTU1MDQxMDRjMDBiY2RiM2RmNmU2OWExZDZmY2NkMDEgcmVsZWFzZTIwLW1haW50CisyMTAwMiBiOTk5NzlkMGY5ZTdjMDgwNGRiNDliNzVjMWE2OTY0NTI1NGY2OTEyIGxlZ2FjeS10cnVuaworMjEwMDMgYmQ5N2E0ZmRiNmYzYzVmODI2ZDY2NmVkY2JkYjc0MzU3MzQ5NDA0MyBsZWdhY3ktdHJ1bmsKKzIxMDA0IGMwMDM3MzE3N2JiYjZkNmE4NjhhNDZhYjM3OGMwMjdlMmI4YzhjYjkgbGVnYWN5LXRydW5rCisyMTAwNSBmYTIyNTVkMzE1MDBlOTJkNDQ3NjJkMzY4MDFjZTI5ZmM0OGU3ZmYxIHJlbGVhc2UyMS1tYWludAorMjEwMDYgYTAyMDg1ODcxYzNmZTRmYzY2NWEzZDExNjY2MWVmYTVjZTQ2MTg2YSBsZWdhY3ktdHJ1bmsKKzIxMDA3IGRmMWM1M2E4MTUwMjkxMjY1ZDY3OWNkNDNlYzU3M2ExNTI0OTY2MGMgbGVnYWN5LXRydW5rCisyMTAwOCBhNmY4YjJmYTJlMjAxODNlNTExMTk0MmZlYTdjNjc2YmIyN2EyOWY4IGxlZ2FjeS10cnVuaworMjEwMDkgOTE2MTlkN2RmNThiOWIwN2FlOTQ4MWRiY2RlZWIxMTUxMmM3YTVjOCBsZWdhY3ktdHJ1bmsKKzIxMDEwIDZmZGNlNzZkNDA2NjVlMGRkNjIzMjUyYzBkMjcwNDMzYTc1NzZkMjUgZGVzY3ItYnJhbmNoCisyMTAxMSBiZjE2YzNjYTU4MGVjNjQ3NzRiZTlmZmFjZjQ5ZjJiZTU5MDhlZTdjIGRlc2NyLWJyYW5jaAorMjEwMTIgNzNhMWU5ZjdjODNmMjE2NjE5NjNlNDAzYmM1NGZhMTlkMjkxMmFjZiBkZXNjci1icmFuY2gKKzIxMDEzIDhjNDVhNjRlZTgzMWI3ODkyYmZiN2I5MDY5MzYzNmUwMDBmMWQzMzYgZGVzY3ItYnJhbmNoCisyMTAxNCBlOTE5NDczMTc2YzgyMzRkY2I1ODE4NTIzNTEzZTM1MjEwNjkxN2YwIGRlc2NyLWJyYW5jaAorMjEwMTUgZWQ0MjUyYmYwODBjOTdlMWQ4Njc5MGU1MDNjNjcwZDAyNzFiNTNmYSBkZXNjci1icmFuY2gKKzIxMDE2IDQ5ZjBmZjZlYjRlYjEzNWRjMmE1ZWM1NDI2YTIzODJlZWMzZDI4NTUgZGVzY3ItYnJhbmNoCisyMTAxNyBjMDc0MzAyNWIyM2RiMzhmMWYzMDM4MmQ5OTI4NTQxNjBjY2UyOGRhIGRlc2NyLWJyYW5jaAorMjEwMTggNTQ2NmNjYmIyZjk3NDk4ZWJiYjBmNzU4ZmEyZGJjNGMwODUwMzI2YyBkZXNjci1icmFuY2gKKzIxMDE5IDViNTA1NmNmMTQ4OGM3NWNjNGMzYTNkOGYzNjE5YjAyNDQ0NWYyNjUgZGVzY3ItYnJhbmNoCisyMTAyMCBmYjkzZGZiZDgwNTIzNTdlOGQ4NTg0ZWZmODk3YmNkZmVmZjA5ZjNmIGxlZ2FjeS10cnVuaworMjEwMjEgYzJkNDlhNzMyMTY2ZGJiMWQ5MmU5MWRhYjgyZmJkYmUzYjU1Mzc4MSBsZWdhY3ktdHJ1bmsKKzIxMDIyIDk1N2Y5NDI4NjYwZjIyOTY0ZDUyZmFjMTYwZjBjN2FkMDMyMDJjZTEgbGVnYWN5LXRydW5rCisyMTAyMyAzY2JiODU3MjZmNmVkMjE0MjYzZDlmM2M4ZTExMTVkMGMxZGI2OGNlIGRlc2NyLWJyYW5jaAorMjEwMjQgZTBmMGY3YmM1ZGE3Njk0YmFjNzA1YWIyYWU5YmEwYmY5ZGVhODI0NSBkZXNjci1icmFuY2gKKzIxMDI1IDNhYjZjNDM0YTljODc1M2MyNGFiZmU1MmZkMWU3MDBmMjkxOWQyOWEgZGVzY3ItYnJhbmNoCisyMTAyNiA2NTMyMjEwMzk1NWEwNGQwOTBmMDg3ZTkwMTdkOGU4Y2ZjZDAyMTAzIGRlc2NyLWJyYW5jaAorMjEwMjcgMGQ0NmI3YzcxMDVlMmUzZWUxMTRiZmUyZTlmMmUxYzY1MTQ4YTEwOCBkZXNjci1icmFuY2gKKzIxMDI4IGE3ODI2ODQyNDg2OGExOTFhYmI0YWI0YzMwYzUzY2RjZjU1ZGQyYWQgZGVzY3ItYnJhbmNoCisyMTAyOSAwZTUxOGE1M2VjNWJlYWQ5YWRiZmNiOGQ5MWI4Njk1MmM0ZmM0ZmQ5IGxlZ2FjeS10cnVuaworMjEwMzAgZGNiMWMzYmQ4ZTBlODk3NjZkZmVjZTQ3MzE4ZWQ4OTk4YWY2OTc2ZiBsZWdhY3ktdHJ1bmsKKzIxMDMxIDk2ZDExMjE1MDEzYWIyMzMwZTk5ZWRjYzBmY2U5Y2Y4MjNmM2EwMDQgcmVsZWFzZTIxLW1haW50CisyMTAzMiA5NjMzMGNjYzg3MGE5NDQ0MTMwMTQ0MjczZDBkMmFhNzM0OTkyYzE1IHJlbGVhc2UyMS1tYWludAorMjEwMzMgZWE4MzA4ZmQwNmYyM2Q5YTM5ODg1NGNlM2NjZDBkYWI0NmUzN2JhOCBkZXNjci1icmFuY2gKKzIxMDM0IDg1OTNiN2UwYjY0NTQxNjNmZTMwODJjNDM2ZDhjOTg0M2Q1NzJlOTQgZGVzY3ItYnJhbmNoCisyMTAzNSA2NTY5Yzg0OTliMTcwZmE3YjUxZDBiNjY2NWRmMTljNzJhMGJiYmQyIGRlc2NyLWJyYW5jaAorMjEwMzYgZTc5YmI1YjhhNWQwZTlhYTUyNGZkMTFhNjIxYjdlNzRmMGMyNjY0NCBsZWdhY3ktdHJ1bmsKKzIxMDM3IDFiOTI3MDFhMGVkMmRkNWZiNDcyM2ZhOWMyODNjNDE5MzJlZjdhOGMgZGVzY3ItYnJhbmNoCisyMTAzOCBiNzNjMjgxN2NjMWFjMDIxY2M3MjBmNmY4NDkyYmE4MmRhMzBmNDk3IGRlc2NyLWJyYW5jaAorMjEwMzkgMTRkYzc1YTU2MDBhYzVhYmEyOGJlNjYwMWQxZDhkYmIzYTdiM2M2MCBsZWdhY3ktdHJ1bmsKKzIxMDQwIDgxYThkMTgzMGI2M2FiYzk4MWRiZDI2M2NjNmM5MTk5MTRjOGQzOTEgbGVnYWN5LXRydW5rCisyMTA0MSA2NWEyZTNlOGJmNTZkMTA5N2Y0MzA1ZTY4MmMwZThiZTU3OTJiM2E3IGxlZ2FjeS10cnVuaworMjEwNDIgNTg2ZmQ3OWVmNGQ5N2M4ZDc0OTE3ZDJjYjRmMGQxNmM4NmRkOGIwMiBkZXNjci1icmFuY2gKKzIxMDQzIDEzYThkY2E0YjA0MGFmODgwOWRiMDhmNjU0MTYyZDU4YTEwYTcxNzEgZGVzY3ItYnJhbmNoCisyMTA0NCBiMGZjODM2ZjJjZWFkMGIyMGE4MGRkOGRkMmZlNzI4MDNkZmYwZWFjIGRlc2NyLWJyYW5jaAorMjEwNDUgZTg5NzU1MGI0NzQ4NDBmNzYxNmI1MDNlMWFmYjExYTJmNDMxNDFjNyBsZWdhY3ktdHJ1bmsKKzIxMDQ2IGY4NDc1ZmE2YmEzNmRhNWM1YmE4ZWU4MTcwYjM3ZGU1NWVjYTQ3YTIgZGVzY3ItYnJhbmNoCisyMTA0NyBjNDAxNmFiZDZiN2YzZWExZGQ1MDVkNTZmODcxOWM5NzFmOTYyMTQxIGxlZ2FjeS10cnVuaworMjEwNDggYTNjMzI5ZjY5ZTNhNjBiZTQzYTYyYTgzMDAxMTZjYWY5ODQ4NGY2ZSBkZXNjci1icmFuY2gKKzIxMDQ5IDJiMDE3YjJjOGY3Y2I1MmZhNmE4NTQ2OGE0MGVmODUyYjY2NjI5YjQgbGVnYWN5LXRydW5rCisyMTA1MCBlNjZjZjlkNmFkNDNlZDA1NWZjOTMxNjcwN2RmNTVmYmZiMjg3NmI1IGxlZ2FjeS10cnVuaworMjEwNTEgOWEyNjgzMmRhMGY5ZTY1Nzc1OTg3MjNmY2MyZTI4NGE0MTg4OGE4ZSBkZXNjci1icmFuY2gKKzIxMDUyIGExZjM1NzY5NjI2NGIzY2JlZmFmODUzYTQ3ZDY1Mzg3MWViMDdjYTQgZGVzY3ItYnJhbmNoCisyMTA1MyA4Y2FmMjE5NzFmMzc4NzllY2UyOGY1MDg3MjZhYmIwNjc0MWRkZDY0IGRlc2NyLWJyYW5jaAorMjEwNTQgN2RlN2QwNjk0YmE4N2E0ZmZiNGMzM2U0YjUyZjRmNjBkYjU1ZTI2OCBsZWdhY3ktdHJ1bmsKKzIxMDU1IGEyMzJhNmMzZmM4YzdkZmE4M2UxMmY2NzM5M2FkMGI4ZWFmMjdiYzMgbGVnYWN5LXRydW5rCisyMTA1NiAxNWY0MzgxY2ZmMGYwYzY4YmY0ZTM3YjQ0MGEwYWNlNTA5ZWNiZTAwIGxlZ2FjeS10cnVuaworMjEwNTcgZDkzYjQ5Mjk4YWZkNmYxMjFmOTJhOWM3ZTdkYWNiZTIyNzMyMWFmYyBsZWdhY3ktdHJ1bmsKKzIxMDU4IDJlYzA4ZDZjN2QxMjA0Njk1NDdhMTA4Nzc4MmI1MTA4NjJlMjE4ZGMgbGVnYWN5LXRydW5rCisyMTA1OSA5OTliMTNkZTM5YTQyZGM3N2I3ODQ5NTNjNjk1MTlkMjY0OTRmMDVkIGxlZ2FjeS10cnVuaworMjEwNjAgMWMxODNhZTVjOTM0OTJiYzhmMmEzZGVlZmYxZWZlMWNkNTY5ZTc5MyBsZWdhY3ktdHJ1bmsKKzIxMDYxIDVhNmI4M2Y0MTUyN2I3ODBiMDZmNDI4YzdlNjkxYWQwOTQ5OWJmODYgbGVnYWN5LXRydW5rCisyMTA2MiBiYmFjMmE2YTVkMTZmYzI3MmIxYTdjYTYwN2FkMDY3MzdmMWExZTkzIGxlZ2FjeS10cnVuaworMjEwNjMgYWM1NDg5YTI1NDhkZTQ2MzU3YjBmZDc3NTFmMDljMTEyZTdhOTE4YSBsZWdhY3ktdHJ1bmsKKzIxMDY0IDg4OWRiNmQ1NTUwNjAxYzUzMmIzZWFiNDBjNzRhMzJhMTI2MThkMDMgbGVnYWN5LXRydW5rCisyMTA2NSBiZGUxY2Y1NzQwZWM2OWY4Yjc0NjhjZGVjYWYwZDI1MDAxOWQ1ZjE4IGxlZ2FjeS10cnVuaworMjEwNjYgMTA5OTIxOThjOWQ2N2FhNWRlZDI0Njc5ZTEwZTMxZjhlM2RkNWIxNCBsZWdhY3ktdHJ1bmsKKzIxMDY3IDYyNDcyNjU2ODA3ZWE5OGU0ZTZhMGE4NzUzNjY4MGMzZTg1ZDk1ODggbGVnYWN5LXRydW5rCisyMTA2OCA4ZTE4Nzc0MGFhOTZhNjgzMTNjZTVjNWEzYzMzMDg4ZGY4ZDY1ZjdjIGxlZ2FjeS10cnVuaworMjEwNjkgZjkwMWE3ZGM1ZmI0Y2I4ZjE2N2UxNzZiMGIyMTFmMWExN2QwNmZmNSBsZWdhY3ktdHJ1bmsKKzIxMDcwIDFmODNlNDE1NWZjZDE3MmI0NzM5NzgxOTQ0NDlhYjJhNTU4NmIwYzEgbGVnYWN5LXRydW5rCisyMTA3MSA3ZGU1ZDM3ODU3OGNkZTFkMDA3NmIwYTBlYmM3MmJjZDJlMTk0ZDM0IHJlbGVhc2UyMS1tYWludAorMjEwNzIgZTg0OTQ4ODY3NGRhMjY2MThkNTRhN2EyYzQ4MTJmZWU3NzBhNDI4YSByZWxlYXNlMjEtbWFpbnQKKzIxMDczIDQxMGJiZjVkOThmOTdhYTIzNTgxZjgwMjUzZTEzYjlhOGY4ZjAxYmQgbGVnYWN5LXRydW5rCisyMTA3NCA3MmIxNTczMWE4NzY5YTNkZTQ2ZTlkZjcwN2U5ZmU4NTkwOTNiMzc2IHJlbGVhc2UyMS1tYWludAorMjEwNzUgOTAxOTM3NTBjYzgzNzZiZjNjODAxZDU5MGFmZTVlOTBmZmIyMDY2ZSBsZWdhY3ktdHJ1bmsKKzIxMDc2IGYzYmFiOTI5ZDcwZWUwNzcwZjVkNjhmYzQ3ZDNhMmI2YTQ2M2RhZmIgZGVzY3ItYnJhbmNoCisyMTA3NyA2MjI4NjdlNGQ4MzJmYjAzYTFhMWQyNDA0ODFjNmYyZjI0YzViYTM5IGxlZ2FjeS10cnVuaworMjEwNzggYWRkMDk1NjM5ODUzMGRlNDllMzU2NTczODk4NzZjNjU5ZjllMTAwMCBsZWdhY3ktdHJ1bmsKKzIxMDc5IGJjMDViMGI1ZTA1NzgxMzJkYWI2NTI3NGI4YmM4YWQ5MTk4ZTZiNTkgbGVnYWN5LXRydW5rCisyMTA4MCBmZjJkN2MxODM3MTUyYjY5ZTE5NjgyZTBiZDMzNmUxYjU1ZmM1OTQzIGxlZ2FjeS10cnVuaworMjEwODEgNGNjYmI4ZTVmYjI0Y2JjNzM5NWZmZTE4OTRhYWQyMjcyYWNhMmViMiByZWxlYXNlMjEtbWFpbnQKKzIxMDgyIGI4ZmJmYTU2OWMzNDgwM2I2YzUwZTEyNTc3NjA1MTQzNDdkYTYyN2EgZGVzY3ItYnJhbmNoCisyMTA4MyA2YjZlMGIwZGI0Zjc1NTExYzdmNmYxZWZlMGI2MjFjNjYwZjZlOWVkIGRlc2NyLWJyYW5jaAorMjEwODQgYzkwYmRlOGI2N2I4ZGM4NzU3YmI5NjdmNGZiZGZkYzA5YmM4YmY1OSBkZXNjci1icmFuY2gKKzIxMDg1IGRhYmU3MTAwYjIxZjMwN2Q5YzE3MGU3NDFmNDhhNTFiZTRmNDMzY2YgZGVzY3ItYnJhbmNoCisyMTA4NiA0Y2MyYWY4YTJmNGU2NjMwZDFkYWQ2NWMwOTJlYWEwOTQ1MGI0NjcxIGRlc2NyLWJyYW5jaAorMjEwODcgNmZlNTZhOWIzMDIxOGY5MjA0ZDk0OGNlZDI1OWQ1N2NmMmQ5MmRiZSBkZXNjci1icmFuY2gKKzIxMDg4IGRkMDlmMTFmYTQwZGM5NWRmODVmMGI2OWIwMTk3YTFjN2UyNWZkZDEgbGVnYWN5LXRydW5rCisyMTA4OSA1ZmM2ZDAyN2U4NjExOGVlYzcxMWRjZTljYWEzNzQ1ZjdjZDVmMGUwIGxlZ2FjeS10cnVuaworMjEwOTAgYmJjZGJkOGY0NDY5OTUxYWMwNWUwMDkyYTkzOTJmNTg3YjY5YTA4ZiBsZWdhY3ktdHJ1bmsKKzIxMDkxIDdlNDU5ZmIzYzMzMjliZTJlZWViOTMxM2M5MzdkNDI3N2JhOWU4NjEgbGVnYWN5LXRydW5rCisyMTA5MiA1OTIxMDlmMmE2ZmQ2OTYwNjlmZWQ2M2QyY2QwYzdmOGNlNWRiZTU3IGxlZ2FjeS10cnVuaworMjEwOTMgNjI1NDczN2NiNjI5NjgwMTMzOTk2NWQzNGJhMjg4MDc3YWQyODlmZiBsZWdhY3ktdHJ1bmsKKzIxMDk0IDg2Y2NmOTNjYzk1MjI4MjJkNDQxZTdkN2Y5ODQyMjY2ZTE5NmQ2YTMgbGVnYWN5LXRydW5rCisyMTA5NSAxOGExZTA5Mzk3ZGFjOTVjNmVmZThjNzM1NDc4NTMxNTdlZjIyMzhiIHJlbGVhc2UyMS1tYWludAorMjEwOTYgNDEwMTY2NzUwMDJmZTRkOTlmMjQwZDkzOGE2NzkyNzExYWIyMDQzMyBsZWdhY3ktdHJ1bmsKKzIxMDk3IGEwMDFmY2I3NjE3NzlkZTQ1OWNkYTgyMzZmZDU3Y2ZjMWYxYTk3NzEgbGVnYWN5LXRydW5rCisyMTA5OCBiZDAwNTZlZTFhNmU0OTA1ZjM5MmQzM2NmYTBlZWYyZmI5MDJhZDQ0IGxlZ2FjeS10cnVuaworMjEwOTkgNmVhMzY2YTJiMmE2MzRmNGMxNTE2OTU2ZTFjMmRhNGFhMjA0ZDMwZCBsZWdhY3ktdHJ1bmsKKzIxMTAwIDIzNjdiN2EwMDFhN2U3ZTY5YTlmNGFmNjg3Y2Q4NDA4ZWQyZDdlMzggbGVnYWN5LXRydW5rCisyMTEwMSA3YTlhNjkyNzI5YjQwMzljZjc0MDMxZmUxNmIzYWQ5ZjY2Mjk0ZTE1IGxlZ2FjeS10cnVuaworMjExMDIgYzJmY2E3N2JiZjNhYjhkNmZjMjdiMWQyZWRlOTM1M2JiMTQzN2YyNCBsZWdhY3ktdHJ1bmsKKzIxMTAzIGRlN2Y5YWEwYTYzYTUyM2JmMjcxNjRiODQzYTU1OGVmZTUxNzYwYmYgcmVsZWFzZTIwLW1haW50CisyMTEwNCBmNzRlOTJjOGVhYzFhNjllOThmMTcxZTgyOGI3MmI0MzA3NjhkMDlmIHJlbGVhc2UyMC1tYWludAorMjExMDUgMDM3Mzg2YTJiMjQ3Y2JlOTMyMGYwMzg3YzZkZDgyYzYyMTI5NzliMSByZWxlYXNlMjAtbWFpbnQKKzIxMTA2IDE0MjEyOWU5YTk4NTY0OTA2MDc2ZDUwODJhNDMwY2MxY2FiY2RmYjEgcmVsZWFzZTIwLW1haW50CisyMTEwNyA5ZGRhMGMxMWUwMDY5OWE5NDQwMjhmYzFjMDE3ZjZkY2MyNmVhNWIzIGxlZ2FjeS10cnVuaworMjExMDggYTNjOWI0MTQwY2M1ZWM1YmZmN2EzYjNlMWQxNGE3ZmNkMDgwOTA0NiByZWxlYXNlMjAtbWFpbnQKKzIxMTA5IDAyMjQ4NzNjMGFjNzRiMDFiMDEzN2RjZDE1NTgxNjRmODRlOTYxZDkgbGVnYWN5LXRydW5rCisyMTExMCA1ZDZmYzE4YzQwMDk4NWRhZDc0OTE2YmFkNDk4MDY4NDMyNDg1ZDc3IHJlbGVhc2UyMC1tYWludAorMjExMTEgMTVjMDRmZTI0ZDg1ODY2MmRmNTMyZmUyMGM1NzIxYjNhM2JmMzI0MSByZWxlYXNlMjAtbWFpbnQKKzIxMTExIDgzNDU5Y2MxOTFjMWM5YzhjYzZiMDhhZGE5OWMwMmYwYWY2YWQ1NGYgcmVsZWFzZTIwLW1haW50CisyMTExMyBjNTc4Yjc1YWQ2MmZkZWQ3MGI2NGFiNzM1MWZkNGEyODg2OTU5N2RhIGxlZ2FjeS10cnVuaworMjExMTQgOGNmNzJiMTg3YjNhYjk4NjZlOGQ4NDFkZjkyZjE4NGE3NjBlNTI4MiBsZWdhY3ktdHJ1bmsKKzIxMTE1IGJlMmRkYjI1YjY5OGIzOWE4NzljNDY0NTE2MTZhZWNhOWJiMmIxZmIgbGVnYWN5LXRydW5rCisyMTExNiBlMjFjZDQxMzVmM2RiMWFmMjNiM2U1ZjcxMGIwN2Q2MzgwMzNkYmE0IGxlZ2FjeS10cnVuaworMjExMTcgMDk5YWU0OTE4MDY5YTViYjk1MDgzNjQ0ODc2OGMxYzUwY2I0ZDIyMSBsZWdhY3ktdHJ1bmsKKzIxMTE4IDdmNWQ4MDQ0Zjk5NGMxZjUxNDA2OTUzZDU4NzkzZTJjMDcxNTlhYjIgZGVzY3ItYnJhbmNoCisyMTExOSBiMTQwYjc4ZjE3ODVjYmE4ODRkNWJhNWNiMTFmYzhlMDNlOWRjOGJlIGRlc2NyLWJyYW5jaAorMjExMjAgYTYyMzFmMjRkYmI2ZTBhNDc0ZTQ4M2ZlZTE1ZDAwODU5NzM4OGJkMyBkZXNjci1icmFuY2gKKzIxMTIxIDllYjQ2OWE0MzE0NDE3NjhkZTgxMTEyMTA1YTM2ZjFmNjFiZDI4YjMgbGVnYWN5LXRydW5rCisyMTEyMiBlNjRjNzAzMWQ5NGZjYjcyYTQ0NTJjMzIwYzFiOTFhZTUyNzZiNjhlIGRlc2NyLWJyYW5jaAorMjExMjMgYTQ3NjNiZmVkOWYwZTkzMDc1NTNiOGMyNWNiZWY1MzNmOWY5YTBkNyBsZWdhY3ktdHJ1bmsKKzIxMTI0IDMxY2QwZGIwZjA5ZmNkOTk1ZDE5ODU4MTQ5MDkyMWY5YzY0YjFjNWIgbGVnYWN5LXRydW5rCisyMTEyNSAyZWNhZjllMjFhMDQ2ZDZmZTkxODQ5YjhlY2Q2NTFhYjdhMGMyOWU5IGxlZ2FjeS10cnVuaworMjExMjYgNzUxN2ZjYTMyMjYyY2JhZmQzODljOWMwMjI0MjIyN2ZlODVjODZlNiByZWxlYXNlMjAtbWFpbnQKKzIxMTI3IDY5OTEwMTk0OTU5OTQ0ODQwMTM4ZmMyMGNjOTQ5ZWM1Yzc3ZThjNTAgbGVnYWN5LXRydW5rCisyMTEyOCBjMDYxNmUwOTY0MzBmMjBkNzExYzQ0OWY2Mzg0MzVkNGVhYjRlNjA0IHJlbGVhc2UyMS1tYWludAorMjExMjkgZTQwNjgxNTc4MmFmZDQ3MWI4YTRhNzU4ODdjNDQxOTg2NjhiZGU0OSByZWxlYXNlMjAtbWFpbnQKKzIxMTMwIDQwZDc5NGI1MDQxZGYwNDE0NzA1MWExNjc0YzJmODExZDRkMjIyNDggZGVzY3ItYnJhbmNoCisyMTEzMSAwMjUzMDc3N2I1MjE4ZDQxYjk2OTYwZmM5Zjk2ZWFlZmQ4MTBhZDlhIGRlc2NyLWJyYW5jaAorMjExMzIgMDUwNTRiZDc5NTliNjQ1MTU4OWQ3ZGMwM2YwNGFiMDQ0ZjhhNDM4ZCBkZXNjci1icmFuY2gKKzIxMTMzIGM2MTY2NTU3ODJmMWFmYzE5MDg3OTA1ZjYxNDFiNmEyMTdiNjNiNjggZGVzY3ItYnJhbmNoCisyMTEzNCBjMjlmMzEzNWEyMGNiMDQ0NDk1NmNiMTU0ZWM1N2VjNDlkNTc5YWU1IGxlZ2FjeS10cnVuaworMjExMzUgMzMzYTJjNmViNzQzOGE1MTcxNWU1YWM4MzJhMjg4YmE4ODRlY2Q2NiBkZXNjci1icmFuY2gKKzIxMTM2IDE2NmI3YjM2NTg1MTkzY2E3ODZkM2Y3ZDc0ZGUxNWJiNTA3NGMyNWQgbGVnYWN5LXRydW5rCisyMTEzNyA5NTIyOTc2ZDFlOTk2Y2NjYjM1NDEzOWY3ZjAzZDEzNDQyZTg5ZTY2IGxlZ2FjeS10cnVuaworMjExMzggYWM3ZGNmMGU1MTA0YWZhMTQwZjQzN2JlMDVhMTY1NGJjM2QyMWMyMCByZWxlYXNlMjEtbWFpbnQKKzIxMTM5IDFmMTM2NDgwNjU5OWNhMzFlZThiZDUwYjFlZjI1OTg4NzhjNDdiZDIgbGVnYWN5LXRydW5rCisyMTE0MCA5ZTllZGRhYzI1Yjg1OGY2ZmMwYTFlZDlkYzAxMTM1NmExZGI3NGVjIGdlbi1icmFuY2gKKzIxMTQxIDI3ZGQ5ZWMzMTYyY2Q4Y2FiOTRiZDczNDA5NGUyMDQ1NzAzNTFlYjMgbGVnYWN5LXRydW5rCisyMTE0MiAwYWY2ZWFmOWY4OWVlZjRhOWRhZWQxNGQzZjM1OTJlZGM5YjgzMjZhIHJlbGVhc2UyMC1tYWludAorMjExNDMgMzY0MjQ0MjY5NTA2M2E5ODEwOTJlYTRlOTc3NmI5ZTVkZjIyMTY5YSBnZW4tYnJhbmNoCisyMTE0NCA2YWNiYTllNDc1OGNiMDE4OTBiZTA2OTE3MWY4ZGVmYmZjYTE2NjM3IGdlbi1icmFuY2gKKzIxMTQ1IGUzMjgyMTg1NDZiNTk4YmZlNDZmNjg5NDUyYWEzYmYyOGZhODYxY2MgbGVnYWN5LXRydW5rCisyMTE0NiBiN2YyZTIzMTI2MTBlYzRmYjM1MWQ3ZGVmNDNjMTA4M2M4MmIwMDFjIGxlZ2FjeS10cnVuaworMjExNDcgOWQ1MzNhZTU3NGQyMGQxNGMzZGNhZDJiNmJjMDQzNmI2NDcwMGY2MyBsZWdhY3ktdHJ1bmsKKzIxMTQ4IDhlZWEyZWZiMzRjZDFmMTZlNmNiZjcxMjcyNzVjOWU1MTcxYTI5NjggbGVnYWN5LXRydW5rCisyMTE0OSA4NWUzZmExZWI4MzZjODgyMjBlZmY0YTBiNzVhYTk3MTc3ZDJjYzI3IGxlZ2FjeS10cnVuaworMjExNTAgZTg4N2Q2ODYyZjc3YjQwODMwZDc0N2YxYTA1YTE2YjQ2OTBhY2EzZSBsZWdhY3ktdHJ1bmsKKzIxMTUxIGI0OTk0NWU4MDQ0YTgwNmZiMmJhMjhjNTAxNjg4ZDVmZmJmY2RjYmYgbGVnYWN5LXRydW5rCisyMTE1MiBlZmY4ZGE3YzNkY2I5YmViMGU4NWJiZmY4MDg1NzI5MmM3ODUwOTQ3IGxlZ2FjeS10cnVuaworMjExNTMgY2FjMjA3YjNhNDNmZDhhODk0NjRkZDJjZTBjYWU0YzNkMjNmZDg5OSBkZXNjci1icmFuY2gKKzIxMTU0IDdhMzM4ZjUzN2U0MmJiMmEzZDFhYjRjNjBkMTBhNDAwYTM2NTE5MWQgZGVzY3ItYnJhbmNoCisyMTE1NSBhNDQ3ZmM5NDcyOTk5YTE2Mzg4MDI2NGYzNTQxOGM5ODlhODVkOTg3IGRlc2NyLWJyYW5jaAorMjExNTYgMjhjNGI2NmVjYmM1OGRhYjRhMzkxNmE3OWNhZDU5ZmNkNWY5ODM0MyBkZXNjci1icmFuY2gKKzIxMTU3IGE3YzJmZmViYmQyNjZmYWZiMDE0ZTgxMjQ5MWRmNTExZjM5NjA1NjIgcmVsZWFzZTIxLW1haW50CisyMTE1OCA0Y2IzNDMxNGJkOTcwOWMwMDU2ZjczM2VhNzMyNDk5Mjk4ZjZkMTU2IGxlZ2FjeS10cnVuaworMjExNTkgNTQxZTA5NWE2ZWQ2NTE2OTI1ZTY2MWY4YjliYzhjN2Y3MWVlNzZjMCBsZWdhY3ktdHJ1bmsKKzIxMTYwIDQxOGNhYmNiNzYzZjBhYzJkNTViMGZhNWQ3NmM4MTgzZTJkOThlZGYgbGVnYWN5LXRydW5rCisyMTE2MSAzNTRhNGRmMDllMzg1Yjg0OTNlMDJkODMwZTk1YTdhNWM3YTlmMDA1IGxlZ2FjeS10cnVuaworMjExNjIgMzFjYjVkMTczMTFhYjUyODkwOTExZjcyNWVhYTUxZGUyYzIyMWIzZCBsZWdhY3ktdHJ1bmsKKzIxMTYzIDAxMTZlNDU5ZGFkMmNiZGU2ZTkyMjY0ZGYxNzdkYzA2NTZmMWQ4MjEgZGVzY3ItYnJhbmNoCisyMTE2NCA0ZTMwMTlkYTkxYTkzNjVlYmE1MTU3MjJiMjhkMGU4MTQyMGJhMWQ2IGRlc2NyLWJyYW5jaAorMjExNjUgMjJmZWJhOTY1OWNlNzkyMGRkNjEyY2Q4NTM2MmVjOTQyZjM0MWE5OSBkZXNjci1icmFuY2gKKzIxMTY2IDExYWMwMmMwMzY5MGQ0MTQ0YTBiZmVmNTI1YTdkNDRmNWMzNGQ0NTkgZGVzY3ItYnJhbmNoCisyMTE2NyA5N2EyMDgyOTFjZDhiYjA4NDliZDU1Zjg5NTcxYTY5NDgzYzY1NDU2IGxlZ2FjeS10cnVuaworMjExNjggNDdjOWQwY2I2ZTMxNGRiYjc5NmQ5ODEzYjM0NzEwODBiNjA2N2EyNCBsZWdhY3ktdHJ1bmsKKzIxMTY5IDc2N2M0YjI4MjEwYWRlYjRlZTI4YzNkYWI2ZmE2YmViYzBhNTBjNTEgcmVsZWFzZTIxLW1haW50CisyMTE3MCBkYmU4MmE5YzZmN2Q3M2Y1OTkzYzQ1MTA2MzY4OWNiNzk5MjNjOWI2IGRlc2NyLWJyYW5jaAorMjExNzEgODA2NDdiODJlMWIyZDg3NDZjN2NmYjcxYWNiMGUxZWQ1NTJjMTEyMCBkZXNjci1icmFuY2gKKzIxMTcyIDBlN2NhZDUxY2Y2NjUzMGU4YTRhZDdhNzcxZmI0YzgyMWVhOWY1YzkgbGVnYWN5LXRydW5rCisyMTE3MyBhNzFmZWU4NGI0ZTQ5MDFiOTU3MjQ0MjBiNWUxODhiZjU3MjMxYTQ5IGRlc2NyLWJyYW5jaAorMjExNzQgOGNkNGEzZjAxOTUyMWQ5YTdkNDc1NjA2NDEyNjIxYTJjMGY5ZmI3YSBsZWdhY3ktdHJ1bmsKKzIxMTc1IGI1MWI0YzJiZjVmOWVhZmE4OThmMDBlODNjMTkyODJiOGYzYjJkOGUgbGVnYWN5LXRydW5rCisyMTE3NiAxN2IzZWU5Y2M0M2ZhMmY5MTM1OThjM2ZiZGUxM2RiMDM3MGZkNGM4IGRlc2NyLWJyYW5jaAorMjExNzcgZTFiMzA2MjVhNDY3NDA4OTMzZDQ4YjA2NTRkOGJlY2Q0NjdkNjIwNyBkZXNjci1icmFuY2gKKzIxMTc4IDJjZTcwYTg4M2FmNmE3YzA2MGUzZTc1NzliOTAwYjNjZWVlMDBhNmEgcmVsZWFzZTIxLW1haW50CisyMTE3OSAzMWMxMWFiMWEzZTg1NzRlYTQyYjJlZDY0ZmY1YzUyMWZiNTNiNDY5IGRlc2NyLWJyYW5jaAorMjExODAgMDQ2M2I5ZTU3MDRlYjI4Nzg1N2U4Y2MzMjZkM2VkN2ZlOWE3MTA5ZiBkZXNjci1icmFuY2gKKzIxMTgxIDdiYzQ3M2IyYzY1NDI0MzA0Mjc4NGI4YWNhMjY0Y2MwMjVjY2RjODkgbGVnYWN5LXRydW5rCisyMTE4MiAxYmNlOGJiNDFkYmQzZjA5ZDcwZTAyZjkwY2Q4MjMxNmYwOTliOTZiIGRlc2NyLWJyYW5jaAorMjExODMgMmU0YzZiYTdkMDljMTRkMTBiODE0ODc3YzQ4ZWU5YTBhNmFiZGYxZSBsZWdhY3ktdHJ1bmsKKzIxMTg0IDljZThhOTk1YmYxMmU1ODNkNDc0NGE0MzNlMmE4ZWViNmJmYjNlZjEgbGVnYWN5LXRydW5rCisyMTE4NSAwNjc2ZWEyZmY4NjdhOThkYTQyZDllNWQ4ZmRjZDRhYWZkOTkwYWQ1IGxlZ2FjeS10cnVuaworMjExODYgNTRmNzYyOTNkOTI2OTg1MTVkNTAzMzdjODkyNWQzNDc4YTkyNWE3NCBsZWdhY3ktdHJ1bmsKKzIxMTg3IDhlZjg0YjgzZWMxZmE0MzU1MTRjYjE1ZTBmOGUwYjdhYjU1OTE2OWMgbGVnYWN5LXRydW5rCisyMTE4OCAxMjZhNjZiMzQxM2NkMmJiZmY0MmE2N2ViNmY4MjJiOGYyMTZkZTljIGRlc2NyLWJyYW5jaAorMjExODkgYjFmNjMyODBiMmMyOThlYzkxMTUxOGZlYzg1ODFlOGFmY2M4YWQ2NiBkZXNjci1icmFuY2gKKzIxMTkwIDY1MWM2NjQwNmJmODIxMWMwYzEwYmQwYzVlOGU0ZjJhZWI0YjgzMTMgZGVzY3ItYnJhbmNoCisyMTE5MSBkNjM5YTFlMWYxZjQ4Zjg4ZmU0M2MwNzFmMTUwN2ZjMTY2MDdmYWI5IGxlZ2FjeS10cnVuaworMjExOTIgN2MzNDg5OWFkNTA2MjNlMmMzYjUxZDcxMGMzYjU2ZDk4YmI5NjcyNCBsZWdhY3ktdHJ1bmsKKzIxMTkzIDBlYzAzZTFiZTU1ODhlYjdlYWNmMmMwZDg4YmRjNTY4N2FhNDk1N2EgbGVnYWN5LXRydW5rCisyMTE5NCA0ZDFjNzg0OTMyMjFhYmFhMzIxYTZkOTAzNGYxNDJhODcyMjdhOTQzIGxlZ2FjeS10cnVuaworMjExOTUgZTViMjczZTk1Zjc0Yjg0OThjODNjOGFjMzc5YmZhOTViYTM0NDM0NCBsZWdhY3ktdHJ1bmsKKzIxMTk2IDMxYmQyNWEyZDhjNWI4ZDdhZjcxODk1NWQxNmMyYWZiZjA0ZmI3MzEgbGVnYWN5LXRydW5rCisyMTE5NyA2ZmJjNWYyMDFhMWY4NzYwY2U3YTE1MWU3M2U5ZTU4Y2Q3MDk2ZWUxIGxlZ2FjeS10cnVuaworMjExOTggYTY2NTcyYWM3MWU3ZGM3ODRiOTUxYTc5MjcxNzc2Y2ZjODdhMTI3MCBsZWdhY3ktdHJ1bmsKKzIxMTk5IDAyYWExMzNkZWI1MzhlNGU4N2YyZjQxMGQyZjk5Y2Y5Y2M5YTFkNzEgbGVnYWN5LXRydW5rCisyMTIwMCBmOTI2ZWIxZjU3NzAxYzIzMDEwNzJkMTA3YjlhZWZkYzM5YmFkMGZjIGxlZ2FjeS10cnVuaworMjEyMDEgZWZiNTA2OWNjNzRmZTcwOGMzOGJmNTYxZDM3YWQwYzJkOWU5NDhkZCBsZWdhY3ktdHJ1bmsKKzIxMjAyIDBiYWQ0MmU1NjMyMDQxNWMyZDEyNzUyYjFiNjdkYzA0YWM4MTA3YzggbGVnYWN5LXRydW5rCisyMTIwMyBjZjZhODY0Mzg3ZDM3ODgxYWQ3Mjg1ODY0M2Y2ZmFmYTk3ZjRlZTg4IGxlZ2FjeS10cnVuaworMjEyMDQgYzVhYzZmMDU1YzYyMzVjMjQ3YTA0ZGIzNDg5MTZjYmQyY2QwMTdhOCBsZWdhY3ktdHJ1bmsKKzIxMjA1IGQzZTQzOTlmZTJmOTQzMTYxNWFkYmFiZjZhNDNiN2RmNjRlYjhlNzYgbGVnYWN5LXRydW5rCisyMTIwNiBjNjM4YTdhMmZlNzdiOTMyMjJmMDdmYzBkZmIyODBkNmYxZDUyOWZhIGxlZ2FjeS10cnVuaworMjEyMDcgNjc3MWRhYjFmZTMyZmYzOTA4MGM2YmU0NDg1N2VmZGY4YTNmMWIyYyBsZWdhY3ktdHJ1bmsKKzIxMjA4IDM0MGU5MzAxZTg1YjMyNGZjNWMxNTU4MTFiYjBmYzk3Yzg0NWEyM2YgbGVnYWN5LXRydW5rCisyMTIwOSAxMmQ3ZDRkYjY5ZjJmNmYwNTE2YWZlMGIyZDUxYjEwZDY5MzViOThhIGxlZ2FjeS10cnVuaworMjEyMTAgMDlhMDhhMWU0N2Q2OGFhNzZmY2ZmNmIwNGYxMDdhYTE1YzU5N2IyOCByZWxlYXNlMjAtbWFpbnQKKzIxMjExIGU3ZjdlZWYxOGM5ODYzY2MzYTc2Y2MxODY2OTViOTRjNDAyZWNlMGMgcmVsZWFzZTIwLW1haW50CisyMTIxMiBiNzMyNDFlNTA1NTY3MGVlNGY0OTI4YmU0NjMxOGIxNzliMDNmOGU1IGxlZ2FjeS10cnVuaworMjEyMTMgY2M3NjMxZmJmN2Y5MmUxM2Q0ZDRhNGFlN2JiOTY5YTk1Mjc4YzlhOSBsZWdhY3ktdHJ1bmsKKzIxMjE0IDgyNjAwMGE0MDg2NjUyMjhjNjc1MDBkZGQ3MGI3MzAwZGQ1MDY5ZjQgbGVnYWN5LXRydW5rCisyMTIxNSAyZjIxZmViZjZkNDYyYjdmNzRiNWQ2NzliZWMzOTY0OGM2MzY3ODAzIGxlZ2FjeS10cnVuaworMjEyMTYgZjVhYjM0NzlhY2Q0ZDUzMmE4MmZlZDhjODIzNDAyNzVmNTNmNGIyNCBsZWdhY3ktdHJ1bmsKKzIxMjE3IGMyNTg3NmE1MWYxYjU5NjMwZmRjMGYwOTk4N2RhYWFkOGNhYjEyZDEgbGVnYWN5LXRydW5rCisyMTIxOCBhMmU2ZmZmNDcxYjAyNTMyMDA5NjdkYWRjYTE0ODk5YThhOGVmOWUyIGxlZ2FjeS10cnVuaworMjEyMTkgMTVhMjRlMGJmOTRmMjJkMTJhNWY4NThiZDE1YjU1OTNjZDljNjM3MiBsZWdhY3ktdHJ1bmsKKzIxMjIwIGQxMjIxZmJkZDg1ZDhjZGY5NGNkYTU2ZDI4NTgwNWRmN2Q5ZDhjOGEgbGVnYWN5LXRydW5rCisyMTIyMSBiZDM5OTNjNDk0YTFiZWVhMWE3YjZlYjQzNTE0MjE2MWEyNzkyNjFhIGxlZ2FjeS10cnVuaworMjEyMjIgZDNiMTk1NmUzZGUwYzEzZWMwNGQ2YTg1N2FiODllZWZjYWU2ODliMSBsZWdhY3ktdHJ1bmsKKzIxMjIzIGFlMGYwOWM3YzFlOTExNjA0OGM3YzdjYzE1MmI5ZWJmYjM4OTIzYzYgbGVnYWN5LXRydW5rCisyMTIyNCAzYTU4MDI3Y2FlNGU3ZGRmN2Q0NjM5Mzg2YTZhNDgwOTg4OGI4N2IwIGxlZ2FjeS10cnVuaworMjEyMjUgYTc4MjU0NDFjYWE0YTc3N2E3ZWMwMzRjODRjNTBhZDZjMDcyODhjYSBsZWdhY3ktdHJ1bmsKKzIxMjI2IGE0MzhhYmEyZDEzN2I3YTU5MTMyNzM2YjU5N2E1NDNjMGQ0ZWVkNmIgbGVnYWN5LXRydW5rCisyMTIyNyBhZWRjM2U5MjBkZWJjYWRhOGQyZjhlMTNmYzhmY2UzMjFjZDIzYjM2IHJlbGVhc2UyMC1tYWludAorMjEyMjggOGU1YjUzN2Y4N2ExOTE4Y2MyNzUzYTg2MjFkMzlhOWRkOTExNjU0MCBsZWdhY3ktdHJ1bmsKKzIxMjI5IDE5YmM2M2E4NDQzOTBlNGE4MmI3OTFiZTUyNGEwMGI2OTMxMDdiYmYgbGVnYWN5LXRydW5rCisyMTIzMCA1OTY1MzM5NDI5YzljZDIyZmU1YjA1MzAwYTY0NmMzMTAzY2FjYjJhIGxlZ2FjeS10cnVuaworMjEyMzEgOTkwYjczZmEwNzRjZGE0Y2FiMzEyZWI4NGU2NjU5ZTgwNmU3NzY3OCBsZWdhY3ktdHJ1bmsKKzIxMjMyIDM2ZTgyNTY2MGEyNDUxYWNjOGI2ZTU1MWU1YzhiZGQ5NTkwZjVjMGUgbGVnYWN5LXRydW5rCisyMTIzMyA5YTRjYWMyYjhiOGZjOTg2NzAzMTJjOGFkNmQ4MzUzZWU2NDE1YzEwIGxlZ2FjeS10cnVuaworMjEyMzQgMWE2YjhmNjlmZWQ2MjE4NGZhMTc1NmE3NzdkOGY0MTBjMDMyNDY5ZiBsZWdhY3ktdHJ1bmsKKzIxMjM1IDVlNDM1NzNmMGRmMWYxOWE3Mzg5NjQ3ZDEwMTZjNGNiMWVkNzA2M2UgbGVnYWN5LXRydW5rCisyMTIzNiBlZDM3NDVkYTc0MTkyODA4NmM3NGI5NjQ2ZDI2MGIwM2EwZWRjZjI0IHJlbGVhc2UyMC1tYWludAorMjEyMzcgYmU0MmNlMjk1ZWRiNTNhMzU5NDg3ZTA0ZGFiY2U1MDg2YzEzOTFkNiByZWxlYXNlMjAtbWFpbnQKKzIxMjM4IDU4NzM2Y2E5MTQzYzBmNmY3NWZjZDNiODkwMDMzYzg4YjUyZGE2NGQgcmVsZWFzZTIxLW1haW50CisyMTIzOSA5MDA1OTQzYzc1NGVlOTIwYTBiNjgyZjU2Njc2YWU5Y2IwNDE0MWVhIHJlbGVhc2UyMS1tYWludAorMjEyNDAgNGE4NzI2Nzc5YmJhZjczYTM2ZjJhYzFhMzE4NmY0YmEyOWY5N2RhMSByZWxlYXNlMjEtbWFpbnQKKzIxMjQxIDI1NjQwNmI1Y2YwYzRmNGI4ZmQxMzhiYjNiZGZkNDQyZmZkMWZiMTEgcmVsZWFzZTIxLW1haW50CisyMTI0MiA3NmMzZmY1N2ViNmQwNjZmMjE0OTA0MDRhZDhjNzU0YzgwYjE4Zjc0IHJlbGVhc2UyMC1tYWludAorMjEyNDMgNjI1M2QxMjhhNzhiZjkyYzc2N2Y1MGQ3MzM5ZThkNGNiOTM5NDNkNiBsZWdhY3ktdHJ1bmsKKzIxMjQ0IGUzNzA4Y2IxZTBkMDdjYjljNWNjYzFkMDEwYjIxZTIwNzA4NDJjM2EgcmVsZWFzZTIwLW1haW50CisyMTI0NSA4MjY5OTQ5OWIzOGVjMWQzMDQyOWM4ZDI5OGMxMWExYzJhMzhlZTdhIGxlZ2FjeS10cnVuaworMjEyNDYgNTQ2Yzc4NTJiYWM1NWNkOTIyNjc3YTM3NWQzYjlhOWQxMWRiM2EwZCByZWxlYXNlMjAtbWFpbnQKKzIxMjQ3IDBkNGFkODllZDMyZDg3ZWNhZWRiM2U4YTVkYzEzYjIwOTkwMWQ3MjcgcmVsZWFzZTIwLW1haW50CisyMTI0NyA3M2RlOTRhNzIyZDIwNmE0NWMwYjQ5ZDMwMTFjNjI5ZWFkNGQ2MmIxIHJlbGVhc2UyMC1tYWludAorMjEyNDkgMDc1N2I2Yzk5MzA0MTQzN2QxZmIzMDA4NDQ2YWJkNTQ4NDNhMGViMSBsZWdhY3ktdHJ1bmsKKzIxMjUwIGY5ZDEyN2FiMzJlYzlhYWQzMzcyODgwNjA2NGVlM2EwMzY1YWE2OGMgcmVsZWFzZTIxLW1haW50CisyMTI1MSBiNjY0YjAyYzNlOTFjZjQ5ZTJlMTJlZWYwZWM4NzM5MGEwNjJlMzFhIHJlbGVhc2UyMS1tYWludAorMjEyNTIgNDA5YWJmMjI1MTg1ZDIxZDM3MDRiOTMxM2JmMDRlMGI0NjEwOWI3ZCByZWxlYXNlMjEtbWFpbnQKKzIxMjUzIDA4NjE5YmYxODI5OTA0MjM3ZTdhMGNjOWRhOGE3ZjkyZWNjODkzNTYgcmVsZWFzZTIxLW1haW50CisyMTI1NCBlMWRkNDYzMGVmM2I5MWJhZDdmMjFkNTgxZDM5YWU2OTQ4NzlkMTdmIGxlZ2FjeS10cnVuaworMjEyNTUgNjk5MWRkYWZlMzgyOGEyZGMxOGZlZDVkMmY4YTNhZDNhOGRjZmUxMyBsZWdhY3ktdHJ1bmsKKzIxMjU2IDZlZWYyMWU1MjNiNjQ1Njk0OTE0Mjc4MmIxZjhjNTNmMWUzNjU2OWUgbGVnYWN5LXRydW5rCisyMTI1NyAzYTg3MzJjNjc4OThjNmRhYTRjZmEwYWE1ZDQ5ZTA0M2RiNWFjNzQ5IGxlZ2FjeS10cnVuaworMjEyNTggYWNkM2RhNWQ1NjNjYzgyY2ZiMDc0MGE1NWM4NDRjNmViNmEwMjg0MyByZWxlYXNlMjEtbWFpbnQKKzIxMjU5IDQ5NzUxNzNlMWEwMmQ4MmFlZDg4OWMwNzMzZjZhNWU2Y2M3Njg5N2EgcmVsZWFzZTIxLW1haW50CisyMTI2MCAyMjA0MDVjMDcyMzI1OTNhNGNkOWE3MTI3NGMzMjhkYjJlZmJmZjBhIGxlZ2FjeS10cnVuaworMjEyNjEgODNjNDc0OGI5MzkwZThjZTQyNDQwZmEwNThmMDMxOGM5YTc0YzVmZCBsZWdhY3ktdHJ1bmsKKzIxMjYyIGFhOGUyMzhhYjBhZDc2MzRlN2RkZDY3ZGE5ZjFjYTc4YWEzMzQxYWEgbGVnYWN5LXRydW5rCisyMTI2MyBhNGRjMjFiNDc3NGRjOTk3ZTA3MDM5ZTFiZWJhZDc5MTExYWIzOGU1IHJlbGVhc2UyMS1tYWludAorMjEyNjQgN2QyZTZlMWQ2MGNlNThiYTRmOWRmZjA5ZWFkMWU2YjcwYzgzNWNjMSBsZWdhY3ktdHJ1bmsKKzIxMjY1IDRlYmQyOTJjOTc1ZjgwOThmMWY1YWI0YTljYjI3NTljODcyYTY4ZmMgbGVnYWN5LXRydW5rCisyMTI2NiBmMDM2MTgzNzMyM2Q2ZDZhNDgyNzQzMTJjNGJhMWQ4M2ViMjU2ZDE1IGxlZ2FjeS10cnVuaworMjEyNjcgYjg5M2QxMjA0NWNiNDYwOWVhMjIxMzVmNTdjMmRiNjVlYmYxODU4YyBsZWdhY3ktdHJ1bmsKKzIxMjY4IGY5MjYxOTA0Y2ViYmM1NTlhNGNlMDRlYWM2MjI3MTY2ZjY0Y2EzYjIgbGVnYWN5LXRydW5rCisyMTI2OSBkOTIzYjNjOGIxNTI2OWFjZjI3YzdkMTAwMTg4ZWJjNzkyNDliNjUzIGxlZ2FjeS10cnVuaworMjEyNzAgZWFlNjZiZjI0ODc4ODhiZDQ2OTE2NjI4Y2NmM2QzNTcwYWU1MjcyNiBsZWdhY3ktdHJ1bmsKKzIxMjcxIGZlNDA3MWJlZmY0MTg2OGY4YzBmNDY5MDRjZGUzNDMxYzg3YmViNTkgbGVnYWN5LXRydW5rCisyMTI3MiBlYjUyNDMyMmExYzMxYzYzNTI5NzlkMjU1YTUyMTUyMzI2N2FhZTYzIGxlZ2FjeS10cnVuaworMjEyNzMgZjgyODdkODRiNzU1MTcxNmY1YWM4YzIxZTM1YWQ1NTJkOGNkZWVkNiBsZWdhY3ktdHJ1bmsKKzIxMjc0IGYwMjYwNWI4ZmRjMWU1OTcxNTYyMWY4ODFmNWRiOWUwODFlOGNjNWIgbGVnYWN5LXRydW5rCisyMTI3NSAwMzdjOGJlNTA1ZTA1OWQ3NzRjODczNDVmNTExNWYxNThjYmQyM2ZiIGxlZ2FjeS10cnVuaworMjEyNzYgYTFlZjQzYTZkNmUxMzEzZjQ5YTkxN2RhNjYxZjliYmJjZjBiODRlNCBsZWdhY3ktdHJ1bmsKKzIxMjc3IDA0MzljODJhOGZmNDc1NjEzMDY1YWJmNjQ0ZmQ2OWM1NGVhNjdiOTcgbGVnYWN5LXRydW5rCisyMTI3OCA0NTE3MDkzZWI5OWVhY2JhOGFkMDhiMTJlZjNmMGYwYTk1MWY0YjMwIGxlZ2FjeS10cnVuaworMjEyNzkgZTRkNjU1YWU5MTQwZTMxM2Y5OTUzMzkzZDliZjk3NGQ5YjRlMjZjMyBsZWdhY3ktdHJ1bmsKKzIxMjgwIDQ3NzE3ZTU2NjdlYjE1ZjE4NGUwYTc3MmQzMmI1ZDdjOGFmNWZmNTggbGVnYWN5LXRydW5rCisyMTI4MSAyNGMyOWIzNzE1MTAyY2RiMzU2OWYwYjZhNDhjMGMyYzJiMGVlMTYxIGxlZ2FjeS10cnVuaworMjEyODIgOWZhNTRiZDdhN2NiNTZlYzhlOTRkZDQ0MDMwOGRmMjIzNDE3NDE2YyBsZWdhY3ktdHJ1bmsKKzIxMjgzIGM0ZGIwOWI4NzQyNDIzMGQyMmU5ZmZlZWZkZjNlNWM0YmI3YjMwOTkgbGVnYWN5LXRydW5rCisyMTI4NCBlM2NmMzM0OGZlY2E1MzBhZjQ4M2RlZGM3NGE3NDU4ZDFmODhhMmMxIGxlZ2FjeS10cnVuaworMjEyODUgZjFiNWZiZWVjYzBlOTkyMTcxNDcyZDllOGVmZTEyN2JkZjVmOGQyZCBsZWdhY3ktdHJ1bmsKKzIxMjg2IDQ4MjZhNmNkYWZjNDBkZTIyYWNiZWNlNDM3ZDAwZjM4ZmY2NmYxNjYgbGVnYWN5LXRydW5rCisyMTI4NyA0NWRlMWFjMmEzNzY3YjY4NWNhMGJhMTA4ZDU4ZTRhOGY3NTk1MzEyIGxlZ2FjeS10cnVuaworMjEyODggNWQzZTdmOTljZjUyY2Y0NmRmYzlhNTgxYmZkNzhhZDRiYzliZmY2NCBsZWdhY3ktdHJ1bmsKKzIxMjg5IDA2NWIxN2ZjMGQyZWUwNmY2NTEyOGI1YWJlYjI2MjFjZDNlZWYxNzAgbGVnYWN5LXRydW5rCisyMTI5MCA5ZjFkZmE3ODZiYTY1NWVkYTEyN2YxZmU1YzYyODg5ZjZhNDhkZTkyIGxlZ2FjeS10cnVuaworMjEyOTEgMDUxNGIxNmMxYTY4M2YzYmQ1NDdhY2Q5ZmEwZDQ2NjNjMWJlYjcxMSBsZWdhY3ktdHJ1bmsKKzIxMjkyIGZiN2M0NGFlNGE2Mjc3ZDQyYjY2MzFmZTYwZjZhYWI2NmE3ZjQ0YjkgbGVnYWN5LXRydW5rCisyMTI5MyBkNTBkNGY4MWFhNGM1YTdjMDBlZGY5MDQ1MzNjNTg5NWRhZjAwMTRmIGxlZ2FjeS10cnVuaworMjEyOTQgMzU4Y2I3NGMwODY0ZjlhOGI3OTNhNjcxZGYyYTM2YWE0MWQ2ZTNhNSBsZWdhY3ktdHJ1bmsKKzIxMjk1IDU3ZGQxM2I2YzgwMzEwZDQ0M2IyMGZmNTVjY2ZkNjNmMjhiMzhmNDAgbGVnYWN5LXRydW5rCisyMTI5NiAzMDlmYjAyNmM4NGVjZDU3ZmQyNTcwOTVlN2M4MzVkYjAyMjk3MzhmIGxlZ2FjeS10cnVuaworMjEyOTcgMWEyYTkxNGIyNDZjMjJjNmYxMzFlYmNhMDRmNGU4ZDE5MjE1OGIyYyBsZWdhY3ktdHJ1bmsKKzIxMjk4IGM4OGY0MTQ4NjA1ZmQ1MmNlMGViMjA2MjYzNGQ3OTg5NDFmNjI5YTkgbGVnYWN5LXRydW5rCisyMTI5OSA2YjBhODE1N2JlM2I2ODA2ZjEzZTBhMzJiMDRmZWVhYzBiN2Q3YWI2IGxlZ2FjeS10cnVuaworMjEzMDAgNDE0OTFkMTk2NzQ4Y2Q0ZGZmOTAzMjI5ZjBkNjUxMWQyNTc2ZTQ3YSBsZWdhY3ktdHJ1bmsKKzIxMzAxIDNkOTE2NGQ5NWU3ODlmNzE4ZDY3OWQ4MjYxODExNzgyN2Y1ZjM0NjYgbGVnYWN5LXRydW5rCisyMTMwMiBhNDZlMzVhY2Y5YzFjNjRiYTkwMTYzYmFjMGVkNGVjZDliNmYxODU3IGxlZ2FjeS10cnVuaworMjEzMDMgMTZlNGViNDI3Nzk3OGY2NmJlOGI0NjZjZWU1NDhjZTk1M2U3NTM4MiBsZWdhY3ktdHJ1bmsKKzIxMzA0IDc4YmZiZTJlNzE5Y2IzYmQ5MDM1NGQ0ODQ5NzY2ZDEwZTk0NzJhOTcgbGVnYWN5LXRydW5rCisyMTMwNSA0MjZlMGM3MjFiYmY2ZWIyMGE1Mjk3Y2JlMDc0Y2QxODE5NDFkMGY5IGxlZ2FjeS10cnVuaworMjEzMDYgZWJmNjFiNWI1YWViYmNhNzExY2M2Y2E3NTRmZGEyMTE1MGM0YWVjNiB1bmxhYmVsZWQtMS4xLjEKKzIxMzA4IGZkODMyMTJlYjhmMjRlZmQ2NDk0Yzg5YTQzMjYyNWM1ODU3ZWY0MDUgbGVnYWN5LXRydW5rCisyMTMwOSBkZWU0OTg5NjFiZmUzYzkwZmM3NTllMDJhYjRjNGE4ZGQ4ZDNkN2YyIGxlZ2FjeS10cnVuaworMjEzMTAgNGFkODQyZjlkNDMxNDdhODAxOGJjMGY4YjFkN2Q5YTMxOWVlN2M3NyByZWxlYXNlMjEtbWFpbnQKKzIxMzExIDQ0MTIyZTdiNDljZjJjOTQ3M2U2OGRhMjEzZGNhODkyNWZjNDljMDIgbGVnYWN5LXRydW5rCisyMTMxMiA5ZTMyNmM5ZTZiZTU5NDIxMDFjMTAzZDZhOGM2N2Q1NTQ1NmRmYTI1IGxlZ2FjeS10cnVuaworMjEzMTMgODZkYWIwZDQzYjczMTJmMGI4ODdlNTc2OTFjNGZlNzhkNTg3ZTczOCBsZWdhY3ktdHJ1bmsKKzIxMzE0IDk3MzRmODk1ZjRmYmVkOThiNDdmYTYyZGQxMjY2OThmMGY0N2Q5MmEgbGVnYWN5LXRydW5rCisyMTMxNSBkMmM5NTAwMzIzOTMwMDFmN2JkMjMyZmM4YThmZTQ1ZDFiMjY1NjU0IGxlZ2FjeS10cnVuaworMjEzMTYgN2M4ZGFkNWYyZDk2NmRjMjFkYmRkZDcwZGRiOTBmOTFlMjliN2QwNiBsZWdhY3ktdHJ1bmsKKzIxMzE3IGI1NjU4YTIzMGUxYTUyNzYwNDVlMjdiZDQ2YTNlOWFjMTNmZjhmMzUgbGVnYWN5LXRydW5rCisyMTMxOCA4YjdmZjQ0YjQ2Njk1OTdhNjQ3ZjQ4MDYyM2QzNWRhOGY2ODdhYzkwIGxlZ2FjeS10cnVuaworMjEzMTkgMDYzMmRjZDY5ZWEzYWYxOWE2OTgzNTY3NGI0ZDY0NWE3MTQ2YjY0MiBsZWdhY3ktdHJ1bmsKKzIxMzIwIGUzYmEzNzM5ODU1YWQxZmY3N2Q4ODRiZDdmNTdiZGMwODlmYzNlNDkgbGVnYWN5LXRydW5rCisyMTMyMSBmMzg5MjNjZTNjNmIwZjRhZGJhMzE2N2JmMjQ5MjU4NDY3ZjdmODViIGxlZ2FjeS10cnVuaworMjEzMjIgMWYxZDJjNTBiM2M3ODQ4MTFjNzRhMTNhNGM2NmNkNjU4ODgzNDg5OCBsZWdhY3ktdHJ1bmsKKzIxMzIzIGY3YzAxYjkzOGExNzM4YWQ3NTI1ZjE0MTEyNWEwZjE4NmFhMDk0MDkgbGVnYWN5LXRydW5rCisyMTMyNCAwNDNlMjAwMTc0ZjFiN2U5YzM0ZjRlZDYxZjFkMmM4ZWVjNjk4MmM5IGxlZ2FjeS10cnVuaworMjEzMjUgZTMxYTM0OTE2NmY0ZTBjZDFlMjVlMTk5ODBlZmEyN2MzMDEzYjQyZCBkZXNjci1icmFuY2gKKzIxMzI2IGJjMDVhOTUyNDJhMzc4MDNhNTFiZGU1MjkyYTFkOWJkYmQxOTMyNWQgbGVnYWN5LXRydW5rCisyMTMyNyBmNjA3OGEzMGY3MGEyODBlYTZlYjU4NGUyMzNiOWVjODM2YTY4NzZkIGxlZ2FjeS10cnVuaworMjEzMjggNjgwMGJjY2UwNDU1NWI5ZmEzZmUyNGYzNDA1MDk1YWU2NTI3NmFjNSBsZWdhY3ktdHJ1bmsKKzIxMzI5IDRmYTMxZWNhM2JlNGE1NGQ4ZTkxN2QzNTA4MGI0MWNjZDMxMzZkMDkgbGVnYWN5LXRydW5rCisyMTMzMCAyOTVhY2MwNzU1ZjBjN2ZlYzhhMWQ5YWRlYzUwMmExZmVhMzllMWJiIGxlZ2FjeS10cnVuaworMjEzMzEgNTVmM2EwNGUwNjQxMWVjZmYyNzY1ZDA3ZjAzY2Q5YTcwNDM5YWQ4MSBsZWdhY3ktdHJ1bmsKKzIxMzMyIGZmYmI5YzkxOGFjMDQ2YjBjZTZjNWJiNmI3YjE0NDBiMzQ4NjZmNzAgbGVnYWN5LXRydW5rCisyMTMzMyAwMzQ0ZTRhYzcwYjBjOGY5NTVlMjE1ZjAzZDY2NGQ1MmRjOWQ2ZGI1IGxlZ2FjeS10cnVuaworMjEzMzQgYjE0NTIxZmQ4ZTM5MTYyMWEzMWQwZmJmY2IxMzVmZWQxZTExYzgwYSBsZWdhY3ktdHJ1bmsKKzIxMzM1IDIwZTNhNmUxMGMyNDhmZTAzY2NiY2RmNDUyY2Q3ZDcwN2FmNzA1YzUgbGVnYWN5LXRydW5rCisyMTMzNiAyMmY4NWM2YTY1MjBhNjk1OGIzYTkxMTg1YzhjZDk1ZTViMDIzOWViIGxlZ2FjeS10cnVuaworMjEzMzcgOTMyOTAzYzdkMDU0YjAyYmI4OTcwY2UyZjIyMTRmOTcxMjYwMThlZCBsZWdhY3ktdHJ1bmsKKzIxMzM4IDk4MjE2M2M0ZTlkMmJlMGEwMzJmNmU2MTg1MWM4Mzg5ZTAyMmIzMDkgbGVnYWN5LXRydW5rCisyMTMzOSA2OGMxMmQ1NTU2ZGY3MTZiZDA0NmNkZjg4MzE1MDA3MzQ2MmZhZDdhIGxlZ2FjeS10cnVuaworMjEzNDAgMGZmNzZkNzgxZDJjNjExOGQ2OTgyMTk4OWM0ZGU0OTQ5YjI2ZjFkMiByZWxlYXNlMjEtbWFpbnQKKzIxMzQxIGZmOGUxODNhZTU4Zjk0MWVlMjY5NjY1MjYxMjRlNDRmY2UyNGE5NWEgcmVsZWFzZTIxLW1haW50CisyMTM0MiA3Y2Q2ZTUxNWZkMzBhNjkxNjE3OTQxYWM2ZTExZjRhNmJhNjRjY2I1IHJlbGVhc2UyMS1tYWludAorMjEzNDMgMzE0ODQyZGNkNTJlOTRlNzQxZWM3OWNlOTIyZWEyYTZhZmU3Mzg3MiByZWxlYXNlMjEtbWFpbnQKKzIxMzQ0IDg5M2JhMWYwMzc4YTFmNjQ0YmMwNWFkNGM0OGI2MGI0OGYzZGQ3MTQgcmVsZWFzZTIxLW1haW50CisyMTM0NSA2N2M4NDFkODIxZTA3NGE5YjdmNGNlNzE0MDFiNTVkMTM1MjJkMDU3IHJlbGVhc2UyMS1tYWludAorMjEzNDYgOTA5ODQxNTk3MWQwMTcwMWJjM2YyYTk5Y2MyNzI0MWQyMmI5Yzc4OCByZWxlYXNlMjEtbWFpbnQKKzIxMzQ3IGJlOTY3MWU2MWY0YTYwODY3YTRmZjExZDAxYThiZWVjMmFmN2QzMGYgcmVsZWFzZTIxLW1haW50CisyMTM0OCAzYTZhMmU1OWRlMDNjMzcxZmYzOWY4MDI2MzgyMjlhYWRmMTE2OWI1IHJlbGVhc2UyMS1tYWludAorMjEzNDkgYWMwMDI3ZTJiM2I3YTRmZDNmMmIwMDRmNTVlZTc2ZTNjZTQ5NWIyNSByZWxlYXNlMjEtbWFpbnQKKzIxMzUwIGU4NjUwZDc1ZTVhNDU0Yzg4YzUwNmRiMjY1NjJiOTVlNGYwYjUzMDUgcmVsZWFzZTIxLW1haW50CisyMTM1MSA3NWMxZjljM2YwZDFmN2I4MzA2YTg2NzM1ZmNjYTEwMDk2M2NjYjI3IGxlZ2FjeS10cnVuaworMjEzNTIgOWMyYmMzZTRkZjczODM3MWZhOTc0MGY4N2RlNTkyMzY0MmNhMzg3YiByZWxlYXNlMjEtbWFpbnQKKzIxMzUzIGQ1MmU2MzVlMjA1Zjg3NjM0MzRhYmU3NTg4MmU0NTNlMTkwM2JhMTcgcmVsZWFzZTIxLW1haW50CisyMTM1NCA2Y2VjNzYxZGYyYzM0YWUxOThhNTk0MzVmMjMyMjNkYWJiNTY5ZDlhIHJlbGVhc2UyMS1tYWludAorMjEzNTUgZmE0YTc3ZTQyNGRkYjM1ZTg5MzExMzc0NWZlZjJiMzg1NDIwM2UwNCByZWxlYXNlMjEtbWFpbnQKKzIxMzU2IDA3MWM5NTcyMjFlY2M1OWQ4NTU0NWEyMDk2MGMyZTdkNTAxNmUwOTUgcmVsZWFzZTIxLW1haW50CisyMTM1NyBjODIzZWM0N2RmNDk1ZTU4Y2YxNzM4NTEzZjAzMDQ1N2FkNzdlNDA1IHJlbGVhc2UyMS1tYWludAorMjEzNTggMWFhNTkxZTQxODE1NDVjM2JkYzg1MDk4MzQxZTU0N2MyNDQzNTk2ZiByZWxlYXNlMjEtbWFpbnQKKzIxMzU5IDE0MGNiMjQ2Yjg2NGFlYTAzZjVhYjY3ZTFlYTA2ODcwNzQ1OGU3MjcgcmVsZWFzZTIxLW1haW50CisyMTM2MCAxNTlhYmZjOGIxYmM1MWJmYzkyZDE2YTBiZGQ2OGEwNTc2NTA5NGNlIHJlbGVhc2UyMS1tYWludAorMjEzNjEgMGM5Nzg3MjhlYmFmZWM4NzMyZDg4OWM0M2YwZWRhN2Y1YzlmYTEwMyByZWxlYXNlMjEtbWFpbnQKKzIxMzYyIDBkMjg3NDM0MTQ0YjU5YzJjMWU3NmY0Y2JkMmM0MDU5MTc3OTA3ODAgcmVsZWFzZTIxLW1haW50CisyMTM2MyBjZGE2Y2E5ZGZkNTkwZDQ5ZjgxOWUxZmE3Y2UzNzQ2YThhYTk5NWVkIGxlZ2FjeS10cnVuaworMjEzNjQgM2JhN2EzNThjZTAyODg1YWY0ZDVhM2I1YjJlZDY1ODI0OGQzZTQ5MyBsZWdhY3ktdHJ1bmsKKzIxMzY1IGZiMzViM2EyMjYwNDYyMjFmN2I3ZDM0YTJiNjY1YjQzYmEzNjI5MWEgbGVnYWN5LXRydW5rCisyMTM2NiBlNDI3YWZiNTYzN2YwOGMxYzI0MGVmZWFlMTk1MmIzMjkwOWEwZmRlIGxlZ2FjeS10cnVuaworMjEzNjcgOTNiZGM1ZWNlMWJmNjk4N2I2MTdiODljYWI0Y2YyNTlhNmFkNzdiMCBsZWdhY3ktdHJ1bmsKKzIxMzY4IGU0NTI3ZDQ1ZTk0MmQxYzk1ZjYyMGVlMTk2MWJkMzViMmJhZjgzNjYgbGVnYWN5LXRydW5rCisyMTM2OSBmOTk1YzRmMjUxMjAwOGIzYTVhNjRjOTljOWQ0ZTNjYjMyY2ZmZDg2IGxlZ2FjeS10cnVuaworMjEzNzAgZDAxNGI1MjI2OTAwZDczMzIxMTliNjhmYTM4N2NiZWFhYzdhMjM1MiBsZWdhY3ktdHJ1bmsKKzIxMzcxIGJmOTM2YzUyOTYzNTNjMjY5NGNhM2VmYzVjZGM3MDIwMzgzNGZjOWQgbGVnYWN5LXRydW5rCisyMTM3MiA0OWFjYzhhYzYwYzIzMjQxNWQ5YmQ1N2RiY2JlYjQ2MjIxYjg3YmY3IGxlZ2FjeS10cnVuaworMjEzNzMgNDEyNDNjYjRlYTA1ZDc3NzEyYTU0NmM4OTY0NTE4MDU0NTQ4NGM1NiBsZWdhY3ktdHJ1bmsKKzIxMzc0IDk3NmIwYWU0ZjUyN2MxYTFlNzVjNWI1YWM0MzUxMjMxZGFlYmVlMTIgZGVzY3ItYnJhbmNoCisyMTM3NSAzZjBiZGQ0YWU2ODQwMGY2NDg4N2MwODY2YzMzYjY1YTAxOGRiNWE5IGRlc2NyLWJyYW5jaAorMjEzNzYgNzU0ZGViODY4MjBlNWY1Y2E4Y2ZiYTYwZjI0ZjJhMzk5NTBjMDZiZCBkZXNjci1icmFuY2gKKzIxMzc3IDZjYTNkZDgyY2IwN2VkNDM1NWFiNWIyMzIyZGFhZDU4YjRkM2YwMzcgZGVzY3ItYnJhbmNoCisyMTM3OCAwNGE2NGQyZDhiMmQyMDU3ODkwNWM1N2RjZWM0NjMwYWQ0NTJiMzU4IGRlc2NyLWJyYW5jaAorMjEzNzkgMDIyNmQwNmUzZWZmNTkyNzQ5MGVhN2NlNjc1OGMwNDZiOWQ1NzhmZiBkZXNjci1icmFuY2gKKzIxMzgwIDdlZjY2MmFlZDlkZTRlMGE2N2E1OWNjMjQzOGM2MWE3NzU3MzU4NzAgZGVzY3ItYnJhbmNoCisyMTM4MSBmNzMwMjljNzFiMGRmMDllZTA3OTU1OTIxMWI0YTQwNmE5NGVmNzc5IGRlc2NyLWJyYW5jaAorMjEzODIgMmQwYjY5YTY3ZjY5NGM2NWIzOWI1ZjM3ZTJlMGYwOWIyMDgxNDMwNiBkZXNjci1icmFuY2gKKzIxMzgzIDQwNWVhYmEzNmIyZmM4NjJlYzJiYTdhNGQ3ZWFmOWViMjhjY2EyMmYgZGVzY3ItYnJhbmNoCisyMTM4NCAyNzgzOWJhN2VjMjJlZDQ5ZTJjMzE0ZjkxNjNhYmQ2OWE1OTRiYzUzIGRlc2NyLWJyYW5jaAorMjEzODUgODVkYjk4OWY2YTczYzZjY2M1NmFjNDM5ZGI2OGI0ZThmNWE5MzJhMiBsZWdhY3ktdHJ1bmsKKzIxMzg2IDZhMTYzMDExNzgwNTE2N2VhYjljMDhkNDZjZDNhOWY5NzQ1MDg4ZjcgbGVnYWN5LXRydW5rCisyMTM4NyA3OTQ1ODJmYzA2MjNlM2I5NTg3N2FkOGZkNWRlYWYxNTM1MjFjYjMwIGxlZ2FjeS10cnVuaworMjEzODggYzJhNjBkZTkxZDJjNzEzODEzZjNjZDIyMTI3NWVlOGUwMjRlYjA1NyBsZWdhY3ktdHJ1bmsKKzIxMzg5IGVkYWRmYTI4MzU5Zjg1MjUzMDBkYWNiNDMwNDQwMWEwZmQyODk0MTcgZGVzY3ItYnJhbmNoCisyMTM5MCA1ODQ2OTIwMmVlOGQ4YjFiNWM5N2QxZDVkODViYWU2ZjQwMTJhYmNmIGRlc2NyLWJyYW5jaAorMjEzOTEgZmU2MzM1MzRmNDQ3ODYzNzU0N2EyNzQ3OGI5YzM2OTY2NjM1MjEzMCBkZXNjci1icmFuY2gKKzIxMzkyIGExMmVjODg3NjUxNWMzN2U3NjM5NmI2YWM1N2FjNTc2ZDdmNDJmOTkgZGVzY3ItYnJhbmNoCisyMTM5MyA1NjY4YTg1NTBiZTQ1NDViNGJlNGQyMTUzY2Q4OWUyOTczYmU2OTgwIGxlZ2FjeS10cnVuaworMjEzOTQgZTkwZmMzNGQ3M2QwMGZhMjJhMWI1MmFhZjU5NWFkMzM5OWEyNjg2MiByZWxlYXNlMjEtbWFpbnQKKzIxMzk1IGU4ZGM3MzM4NjcwNjJhMTQ5YWExMjc3MzI4MGY5NTdhYjc3NGJiMzkgcmVsZWFzZTIxLW1haW50CisyMTM5NiAwZmRjMjc3OWU4ZDQzYzRjZDdlZmMyYjI2YjZhY2ZlMzI5OWY3MGIyIGRlc2NyLWJyYW5jaAorMjEzOTcgOGRiOTQzNjdmYWUxYzgwODA3MGIxYzFmYzIxMTlmNTQwMDdiNTk4NSBkZXNjci1icmFuY2gKKzIxMzk4IGIzYmEwZjQ4YWRjNGNlODA1YjUxNmUzZGZjZGY4N2ZiY2IxNDQ3ZGQgZGVzY3ItYnJhbmNoCisyMTM5OSAxMTY2MDExYTljZmNhOTgyZTAzMDI4M2Q1MmY2MjMyZmU5Y2JiZTAxIGRlc2NyLWJyYW5jaAorMjE0MDAgZjcwYjJkNjNmMzA5YThlMjYxMWY2NTFhYjgyN2RiNjQ4YTM3NjQxMCBsZWdhY3ktdHJ1bmsKKzIxNDAxIGQzMmZlNDhmYmI5NjhkNzBjMTAwZTZkZWI3YzJlZjM4NzUyOTJiMjAgcmVsZWFzZTIxLW1haW50CisyMTQwMiAyNjRlZDU1ZGVjNmUxYWQzNTQxOWNmOWRkMGJiMTM2NDZiMzQwNWE3IHJlbGVhc2UyMS1tYWludAorMjE0MDMgNDQ5ZGE4NTdkY2U1OTQ0MWE5MWZkMjdlMjBmN2UzM2ZkZGY2NTZmOSBsZWdhY3ktdHJ1bmsKKzIxNDA0IGMwMjliNzQzMzJkMmFhZmNiYmMwY2Q4MDcxZDU0MmZiNmIxMTVjNTUgZGVzY3ItYnJhbmNoCisyMTQwNSBkMmM5OTYzZTQyOTE1NTU2ODE3YzFiZGM2YjZlYjU5ZDdhOWRhNmNhIGRlc2NyLWJyYW5jaAorMjE0MDYgMWRhNzI0Y2VlMjJkM2Y2NTU5Y2RiYTAxZDEyN2VkZTkxYzBkM2I3OCBkZXNjci1icmFuY2gKKzIxNDA3IDVhNzg0MTM0MGRjN2MxYzkzMGQxZDU5ODQzNWYyMjljYjgyOWU4NDQgZGVzY3ItYnJhbmNoCisyMTQwOCAwOGEyYzJlNzk0ZWZkZTZjOTQxYzhhNjE1M2YxOWZmOTExY2IzNmVmIGRlc2NyLWJyYW5jaAorMjE0MDkgMDIwMGNkMjI0OTJlYzI2MDljZjE0ZmQ0MDYzMDQyMzk4Y2QxMmZmMiBsZWdhY3ktdHJ1bmsKKzIxNDEwIDRiYWI5ZWNmM2UwNWUyZjY2OGZmMGJmZmIwZmVmMTA2YTdhOWZjNTYgcmVsZWFzZTIxLW1haW50CisyMTQxMSAxNzMzMDQyOWNkZmViNTgwOGIwODFiODNjZWViOTc3ZjJjMmY0MzUxIHJlbGVhc2UyMS1tYWludAorMjE0MTIgNzk4YjVlNmI0OTE1ZjBkZTk0ZWE2MjgzMTk5MzEzYWFiNjNhNDJiZCBsZWdhY3ktdHJ1bmsKKzIxNDEzIDU1OTY1MDRhZDQ5YWZiMGE1Y2ZhMDM3NTY3YzllZjY5YTQ1YWNmMjYgZGVzY3ItYnJhbmNoCisyMTQxNCBlNTg3OTllZWZhMzk3ODFjMDFiODhkYmNhYjkyMDQxMDc5ZWI5MWE3IGRlc2NyLWJyYW5jaAorMjE0MTUgMjdiODY2NTE0YzllYmRjZmQyYTA2ODA4NTA3ZTg0MzQwMDQyNDIwMiBsZWdhY3ktdHJ1bmsKKzIxNDE2IDI1MTNiYzFkYjEyZmVkYWE0MzA5ODJjMjhmMWI1MThlNTUwNWY5NGUgcmVsZWFzZTIxLW1haW50CisyMTQxNyA1MjBlMWY0MDEwMWFhMDFkMzgxYjQyMDgwNmE0MTMzMzU5NWZkMWI2IGRlc2NyLWJyYW5jaAorMjE0MTggODkzN2QyMzRiMmE4ZDY1MmZjOTViNjAzZTNhNTNmMjU1MDg0ZDFjOSBkZXNjci1icmFuY2gKKzIxNDE5IGM2NzIzY2Q1NTQ1OGIyNDhkYTc4MGM1MWMxMmM3MTNhMDRmNzhjYWMgZGVzY3ItYnJhbmNoCisyMTQyMCA2NTBmNzAwNGU2ZDM5YWEzMzYyNzQ2ZDNmYTZkNDA0NTQxMjcxZmZjIGRlc2NyLWJyYW5jaAorMjE0MjEgMjNiYjNmNDljYjk0MjQ5ODNiZGJhYWZjMzliYTlhM2ZmODgzYmQwNiBkZXNjci1icmFuY2gKKzIxNDIyIDQ0YTg3YzMwMGYyYmE0ZjNhMGY4NGNiNDNhMTgyMjEzNjYzN2I2ODEgbGVnYWN5LXRydW5rCisyMTQyMyAzZWRhNjIzMWUxYzI1ODQ5MDhhNDgxNDFhMGUxN2UyZmM4ODIyZDM0IGxlZ2FjeS10cnVuaworMjE0MjQgZDIzZjk5MzFiMDMzNTlhODVmY2YyYzI5N2M4ZTMzZmY4MjA4NDQ2NyBkZXNjci1icmFuY2gKKzIxNDI1IDRlMjZiNDFkMmYzZGJjYjZlNzRjNDQ4ODBjNzI0NWFjMmVlYzdiMWIgZGVzY3ItYnJhbmNoCisyMTQyNiA5ZGU2NTYwMDQyMGI2MDcxODM0MWZiYjljYWMzNGU3MzYyZjY3ZDZhIGRlc2NyLWJyYW5jaAorMjE0MjcgOWM1OGRkYzQ3MTk1YWQ4MzMxMTgxZTllOTcyNGQ2MzBmYjZhNjBiYyBsZWdhY3ktdHJ1bmsKKzIxNDI4IGJlMDk2YmI0ZTNmMjI3YTc0NDQzM2EzNDJiMmQzNWRkNjc0NTNlOWYgbGVnYWN5LXRydW5rCisyMTQyOSA5ODU1NmNkZmU3MTY5NGViNWMwZWE4YjcwMzA2ZWNjYjAwOWMxMDI1IGxlZ2FjeS10cnVuaworMjE0MzAgYTgwZTBkMzlmMTBiMjdmYThhZDRlOTUxYzYwZGEzZDAyOTJhYjQ0NCBsZWdhY3ktdHJ1bmsKKzIxNDMxIGZhM2E0MjA3ZDk1NzA4NDc1MmNkNWFkM2QzY2Y5MmM1MTAwNTk4MTMgcmVsZWFzZTIxLW1haW50CisyMTQzMiA1NjY1MmU2ODQ3MzdiOWRiMmZjNTJlMGRlMGRmNTNmYmMyZmFjYzVjIGxlZ2FjeS10cnVuaworMjE0MzMgOTAzMjEyNjEyNzcxMjkwYTQ5ZjYwN2I2NjI0YjI1YTRmMmNkOTc3YSBsZWdhY3ktdHJ1bmsKKzIxNDM0IDExNzM3MWFmNTQ0YjA5MGE1NDA4YjMwMDJiNWE3MjliZmU0YmVkZDcgcmVsZWFzZTIxLW1haW50CisyMTQzNSBjYWE4ZmZjM2NkMWM3MGUwN2I3NjdmNDQyZTUxNmUxMDIzYmY1N2U1IHJlbGVhc2UyMS1tYWludAorMjE0MzYgNzdmNDE2Mzg3OTIyZWE3ODE4YjI2NDVmYTgzM2JhMmZkMTg0M2M0ZiBsZWdhY3ktdHJ1bmsKKzIxNDM3IGMwMjg4NjcwMjMwZTkzMjViZjQ2M2U0NmUyOTM3OGViMDA3OWMzYmUgbGVnYWN5LXRydW5rCisyMTQzOCAyZTFhZGJlODllNGE1ODQ0MWViN2UxMjliYmFjODI1MGVmNjI2NWNjIGxlZ2FjeS10cnVuaworMjE0MzkgODExODQyZGFjZDM5ZTFlOWM3OTkxZTFiOWY0MDU3ZGJjZjMwZjY1OCByZWxlYXNlMjEtbWFpbnQKKzIxNDQwIDQ1MWMwYWJiZjhhOWY1NDUyOGUxYzBiZDk1ZjExNWQ1NGNjMzdhYzcgbGVnYWN5LXRydW5rCisyMTQ0MSBlYWFiY2ExMzE3NGUwM2ZjNGRmNjllYTJiMmM5Y2I1YTkzMjAxY2I0IGxlZ2FjeS10cnVuaworMjE0NDIgM2ZkZTFkMjAzMzFlYWY2MWRmMTBkMDMyNDJhZjU3M2IxNmZkMTJlZSBkZXNjci1icmFuY2gKKzIxNDQzIDQ3MmVmNjgzMThhOGJmOGZkMjcxOTIwM2FjOTMyM2VkOWE4MTU0MWMgbGVnYWN5LXRydW5rCisyMTQ0NCA0ZDM3YjcyYWUyZDI2MDQwMDU2NmM2YzEyMTA1NTg0NDE0M2RmNDA1IGRlc2NyLWJyYW5jaAorMjE0NDUgZjI0ZWMyM2NkNDdlZGZmNzZiNDJkMmI2OGFmMjY5YzgwODFkZTM0NiBsZWdhY3ktdHJ1bmsKKzIxNDQ2IGM3NmRhZDA2NDYxYjg4ODQwMjA3MTAzYWZiM2RkODdhNzJlYTUyOTAgbGVnYWN5LXRydW5rCisyMTQ0NyBmYmUwZGVkNWU0YzFiZjAyOTFlNDdkYjM5YzI0YzI1M2NkNDdiMTlhIHJlbGVhc2UyMS1tYWludAorMjE0NDggZmI5NmE3OGU3MmFjNmY1NDg3ZDI4M2M2NTNiNDU3MzI3YjhlZDk1NCBkZXNjci1icmFuY2gKKzIxNDQ5IDc2NDQ5MmE4ZjZhNzU5MzczZTZhYmUxMzRjNWM5ZTE1NWEyMDc4N2MgZGVzY3ItYnJhbmNoCisyMTQ1MCBlM2VhYzIxZTFkMzA0YmMzNzZjMzcxZDQ5ZmU2ZTMxMTY4YjY3NWRlIGRlc2NyLWJyYW5jaAorMjE0NTEgOWQ2ZDExMTZiZjJjY2U4YzQzMjlkOTA5YWU1ODY2YmQ0YWJmMTdhYiBkZXNjci1icmFuY2gKKzIxNDUyIDE2OTRhYjg3ZjFkN2MzMzM5NWU5OTNhYmRiYWViMjYyYjg0NzIxNWMgZGVzY3ItYnJhbmNoCisyMTQ1MyBmMzk5ZTZiYzUwYWZkNWYzZGU0MjI0ZTE4MWQ1M2Q3NGY0YTQ1NjEwIGRlc2NyLWJyYW5jaAorMjE0NTQgMDFiOTIwZWE1MmYxNmZkZWQ0NTc5MDc1YjU5Yzc2Zjg3NmZhMTdmOSBkZXNjci1icmFuY2gKKzIxNDU1IDJlMzE2NjViYmRjMjU1MzE0ODllMDYzYjU1YzliMmE2OWNjOTAwNDAgZGVzY3ItYnJhbmNoCisyMTQ1NiBiZmVkMjEyM2IxNGQ3YzQ1MDY3OTZlMGNiMjk4MzEyZWZkODczOTkwIGRlc2NyLWJyYW5jaAorMjE0NTcgMGJkNjdjOGE5NjllMDUxOGRhOTg5NGMyN2ZhMGRjMGYyOGI2MzkwMyBsZWdhY3ktdHJ1bmsKKzIxNDU4IGI2MWYzYjZjZTFmZjkwZDI0M2M4NmViMTNmNzI0ZGQ0NjQ1NDIwMzcgbGVnYWN5LXRydW5rCisyMTQ1OSAzYjI5NWNlMjcwNWY2N2FjNmYxMmI1NGFjMmRkNjEyZWMxYTY3OTExIGxlZ2FjeS10cnVuaworMjE0NjAgZTEwMGMwNWQ0NDRlZTkwMTY1Y2M5ZDNjZjA5YmFlZDNlOTBmZTE0NCBkZXNjci1icmFuY2gKKzIxNDYxIDI0YTBmODRhZDc0NjVlN2IyMTMwY2VmMzI0YjQwZGRiNTdiMTIwNWEgZGVzY3ItYnJhbmNoCisyMTQ2MiAzMzhhYWExNGM0ZTVhZWViZTMxYTdmYWY4ODM2ZmExNDljMGU4ZGFlIGRlc2NyLWJyYW5jaAorMjE0NjMgYjIxZTcwYzZkMDlkNGEzMDM3ZjU5MjU4ZGZlNTA4YTgxOWVmZmVlMSBkZXNjci1icmFuY2gKKzIxNDY0IDYzMGM4NmQzMzMwYmQ0OTdjYTYyZTQ3ZWI1ZjA3OTdmNjJmOTcxNzkgbGVnYWN5LXRydW5rCisyMTQ2NSBiYWYwNGNkZjY1YTMwMGRlNmE0NDYzZTJlMmRiYTAxMTYxMWIxZWI3IGxlZ2FjeS10cnVuaworMjE0NjcgZmRjM2IxNjIxNWM3NWYzMmRhMmQwNzNkZTJiMjlmYTdiMWI1Yjc3OCByZWxlYXNlMjEtbWFpbnQKKzIxNDY4IGY2OTI1YWQyZDE5MTFiMzhlODcyN2U5MjNiMGQ0MzViNzI0ZTE3MzIgbGVnYWN5LXRydW5rCisyMTQ2OSA0MGQxOWY5MDdlMTIwMTU0NjAwOGU5NTk5ZDIyMjUzMDg2ZjA1YTUxIGxlZ2FjeS10cnVuaworMjE0NzAgZDFjNjBiMDcyMTdmOGM2MmRmNjQ4YTVkYTYxZmNkYzMxNTY2ZjhhMiBsZWdhY3ktdHJ1bmsKKzIxNDcxIGRjNzQ4MjNiNDllYTU3MGRlYzRkOTlhZmQ2YTI3YTFkMjJmODM5YzcgbGVnYWN5LXRydW5rCisyMTQ3MiBmNmIzYTdhOTBkODNmYzBiYTAyNGUwM2EwYzFiM2Q1M2ZiOWJhMjBlIGxlZ2FjeS10cnVuaworMjE0NzMgMDgwMTAwNjQ3Mzk2YzhkMDM0ZmM2ZTMwNmQ3N2Y0OGUwY2I1NTFiZCBsZWdhY3ktdHJ1bmsKKzIxNDc0IDk1ZTM5NDdjYTNjZWExOTQ1MDg3OGZkOGI1ZDc1ZDg2NmQ0NDE1ZGMgbGVnYWN5LXRydW5rCisyMTQ3NSA4MzQ3OTI1MjMwOTQ4OTEyMmY4ZTg5MDI5OTVmNGU5YTZjZGViNWQzIGxlZ2FjeS10cnVuaworMjE0NzYgOGNkZmY1NDVjYmRlNTBlMjk1NmZmMGUxZjY2ZDM1NmRhMzE1ZTE4NiBsZWdhY3ktdHJ1bmsKKzIxNDc3IDljNmE4ZGNkNzIyZDU1NTMxMDZhYWFjOWY1NzdjNzllOWJlMmQyYTAgbGVnYWN5LXRydW5rCisyMTQ3OCAwNjMzMmIzYzQzMzVkNDMzMDBiMmQ0NDJlMmU3MTcyMGEzZmNjZmYzIGxlZ2FjeS10cnVuaworMjE0NzkgNjEzNWMxMmU4NDQ4NjcyYjEzZGM0YmM4ZjRiOGIwZmUzZDMzNTZiNSBsZWdhY3ktdHJ1bmsKKzIxNDgwIDFlMDJlMjAxNGUzNmE0MDlkNDY1NmNjYmNlN2RjNWVkNWVhZjhkMGQgbGVnYWN5LXRydW5rCisyMTQ4MSBhYWRkOTk4MzA1MzFhZjUwNjUzOGExZDllMDk4YTUzODUwYTkzMDgwIGxlZ2FjeS10cnVuaworMjE0ODIgNzRiM2M0ZTNmNDg2MTEwYTQ4YWEzYTFhODdiMzJjMzFhNzUwMTg3NiBsZWdhY3ktdHJ1bmsKKzIxNDgzIGY4MGY2ZTkyMjhkZTZkZTQzZjAwYTlkZDZlNjhjNjRjNjY1MjM2ZDEgbGVnYWN5LXRydW5rCisyMTQ4NCAxMTY1MzIxNDFhZGVlMzgwNDM4NDM4ODA0ODE1NzVmZjFmZGY5MzAyIGxlZ2FjeS10cnVuaworMjE0ODUgMWQwZDNlNmEzMjAxYTAxMzY3NWY1ZDRjMmQ0MTdmMWUzZTgxNTZjMyBsZWdhY3ktdHJ1bmsKKzIxNDg2IDcyNmU1ZjJjZDM2ZWQwZDdkZWJhODM5MGU4ZTk0NjlkOGM0NzhjZjcgZGVzY3ItYnJhbmNoCisyMTQ4NyA3ZGU1YzM3NjIzMmNiNGEzODA2NjE5N2NjNTAzOWVjMzFjNWNiNjc1IGxlZ2FjeS10cnVuaworMjE0ODggODI0ZDYxMTEzYTcxMjIwY2M5MzNjZjJmODVlODQzZDU1ODNlODM3MyBsZWdhY3ktdHJ1bmsKKzIxNDg5IGM4NjYyNTQzY2E2YTY4NWQ0MTY3ZThkYzdjZGMzZDAwMmRmZWMzNjEgcmVsZWFzZTIxLW1haW50CisyMTQ5MCBjYWRjMTg5NDJhMzQ0NTc5MTFmZWQ2M2JmODgzNjk5YjYzNzhhYTc3IGxlZ2FjeS10cnVuaworMjE0OTEgN2Y4M2VlMzc5N2EyNjQ2NmRmZjRjOTkzZjU1ZjA3ODUzYzEwODlmOSBsZWdhY3ktdHJ1bmsKKzIxNDkyIDdiMDNjMTUwNzU0YTA5ZDQyZmM5Y2E1Zjg2MDNkMWNmNDIxNGEzMWYgbGVnYWN5LXRydW5rCisyMTQ5NCBhZmRhNWZmZjUwMjcxYmQ0MmM0YzA2Y2YxOWFkNTViMjNjMmE1OTMyIHJlbGVhc2UyMS1tYWludAorMjE0OTUgODJmOTUyNGNjODQ0MTJhYWI0MTMyNDA3ODc1NjA1OWMyMDAxODVjOCBkZXNjci1icmFuY2gKKzIxNDk2IGI0YWYwOTFlMzFjNGE0NjE3M2Y0Y2Y0NzIyOTQzZjU5ZTk3YjBkOTYgZGVzY3ItYnJhbmNoCisyMTQ5NyAyZTZmYjZlNjQyOGZhMDk3ZGNmNWUyYjY4YjU5OTk5YzA5OGIwN2E0IGRlc2NyLWJyYW5jaAorMjE0OTggZDk0ZjhiMzIxM2U4Y2RmZWRlNTk1MDUzMGZiMDY0MTFkYzRmN2NmOSBkZXNjci1icmFuY2gKKzIxNDk5IGE0NTc3NjI3MGM4ZTExYWNjODI4YTg2NGQ5OWVjOTIzMGNkZmJhYjMgZGVzY3ItYnJhbmNoCisyMTUwMCAyMzIwOGYzMDI3ZjY4MzFhM2NiOTQ4M2VhZDE4ODFiOWE4OGQzNmEyIGRlc2NyLWJyYW5jaAorMjE1MDEgYTMxODkxY2JhZDQ0MjdiNDg3MmM4MmFjYzExNjI0YWUwMDAwYTRiOCBkZXNjci1icmFuY2gKKzIxNTAyIDY5Yjg4ZDM0ZTcyMmRlOWYyODY3ODAxYTE3NmM3ZTI0MmY2NjM2OTAgZGVzY3ItYnJhbmNoCisyMTUwMyA0N2JiMDYwMjNlODA1OTNhOTQ3ODhjZDJjNzI0NWM1NjFlYjY1MjFlIGxlZ2FjeS10cnVuaworMjE1MDQgZjQwMzJiZWQ0NzBmMzhmMmRmZjA4MjIwYzAzZTFiZDY4YmRmODVlNyBkZXNjci1icmFuY2gKKzIxNTA1IGM1ZTQ2NjM0YzdkOTc4ZTQ3MWJlODdlNGE4NTJiMTZjZTE2YjBjZDYgZGVzY3ItYnJhbmNoCisyMTUwNiA1M2Q0ZTcyYmI0NDNiMGIzNThiODEwNmM1MjRiODdmNTIzNjY3ZTA5IGRlc2NyLWJyYW5jaAorMjE1MDcgZmY4MWU3MzVlMTg0ZmUzNTFlZGY5ZjczZGZhZGQyNjI0NWY5MmViNyBkZXNjci1icmFuY2gKKzIxNTA4IDIzOTI3NjY0YzcyOTVlODZlZjYzYWEzZTMzNzhjYWQwMjJjNWIyYTcgZGVzY3ItYnJhbmNoCisyMTUwOSBlYjgwYjQ5YzdiMTVmZmM2ZDZkYTVmODcxMTRhZmEyYjBkMDBlMjM4IGRlc2NyLWJyYW5jaAorMjE1MTAgZTZkZWZlMjRjZTg1NTY1ZDhkMDA4ZjE5ZTAxMTA3NGEzNDY3MDkwZSBsZWdhY3ktdHJ1bmsKKzIxNTExIGI2ODk0MGNmMjAxNzIxMDRiOGEzY2IwNmMyNTdiMDZhNjU5M2I3YTAgcmVsZWFzZTIxLW1haW50CisyMTUxMiAxMTY1ZDNmN2VhZjNjYTVmZDA0ZTdkZGEyNjhmZjFjZWRlZTM1MzBkIGxlZ2FjeS10cnVuaworMjE1MTMgOTUxMjc0N2FmZTllOTQyYTc5YzQ0OWNjYzcxNmE5ODJmNjQwZjhiNyByZWxlYXNlMjEtbWFpbnQKKzIxNTE0IDU2ODJmOTZmMjVkZTI0Mzg5YTFhOWRlODBmNmE0YWM3ZGJmZDZkNDEgbGVnYWN5LXRydW5rCisyMTUxNSAyODM2YjI2ODYxODA2YzY5NTU1NGEwYTk0MGQyYWVlMzk4YjcyNDkwIGxlZ2FjeS10cnVuaworMjE1MTYgZmMxNjgwZmM5ZDIzNjg5Y2MyNDEzZWVkNzhlM2E3ZjljY2FhZTg5OSByZWxlYXNlMjEtbWFpbnQKKzIxNTE4IGJjYmJjNTFmMGJiM2Q5NmNiYTNjNjVjNTQ1ZmEyYzNkYWFmNWZkMjkgZGVzY3ItYnJhbmNoCisyMTUxOSBiMGY5ODQ3NTkxN2Q0ZTVlMTAwNGFiNWMyNWI0OWIxNTdiODZmMDA1IGRlc2NyLWJyYW5jaAorMjE1MjAgMzdkOWQyYTdjYTUwZGZhYmM5YzBiMjgyNTlhMWU3ODM0MGFlMTFiYyBkZXNjci1icmFuY2gKKzIxNTIxIGVlYjJlNzdjNWJhZDJhYTJkNmM5ZDBhZTAxNWQ5OTU2MzY2YTM2MTQgbGVnYWN5LXRydW5rCisyMTUyMiA3YWIwOWZiYjg2OWEwZTVjNzlmZjM4ZDRkZTQ3OGVjNjE2YTExYzVmIGRlc2NyLWJyYW5jaAorMjE1MjMgYTI5YmVmNDU3ZWQ4ZjAyYmNjYzUwNTQ2NTA4ODQwODdlMmE5YjBmMSBsZWdhY3ktdHJ1bmsKKzIxNTI0IGMxZTQxM2VmOTgxNzc2NTE0Y2Q3NmQ2ZWZmMmE4ZTQwMzkxN2YwOTIgbGVnYWN5LXRydW5rCisyMTUyNSBkZmNjMDM4YzJkNGNhNjk5OGZlMTRjNDM4YjA3MDkxZThkZTFlNmM1IGxlZ2FjeS10cnVuaworMjE1MjYgZDg0MTRmNTFkNGY1OGVmNzljMzZiZGNjMzQxNzY2Y2E5M2Q3NjYzNCBsZWdhY3ktdHJ1bmsKKzIxNTI3IDMzYjQzNTdhZWJiOGMzYjFiMmJiMzNjOTYzN2ZkYzMyMGZjMjQ5NmEgbGVnYWN5LXRydW5rCisyMTUyOCA0ZTVlOTc3YmQzZTJhNzQwZjI1NDMxOTZmY2Y0ZWJiNGQ3Y2M3OTEzIGxlZ2FjeS10cnVuaworMjE1MjkgMDkyMzViZTc0NjQ5Mzc1MTg2MTExYjYzMDA4NGNhNmZlM2YwMzk5ZCBsZWdhY3ktdHJ1bmsKKzIxNTMwIGQ1NmVjYWU1N2UwYzI1MjkzZDllNjY3OTZkMWQ5YWJjZDk1OTEyMGIgbGVnYWN5LXRydW5rCisyMTUzMSBiNmNlYmJlYjA3ZDFiMjkyMjRlYTZiZTQwNmUyZWRmNjgzYTRhZGJhIGxlZ2FjeS10cnVuaworMjE1MzIgZjgzYmRkMDc1MzYxYjFmOThhMjUzNDEyMGY0NDI4MDYzNTgzMDQ1YSBkZXNjci1icmFuY2gKKzIxNTMzIDlmMDEzZDEzYTI4YjFkYWYxODVmMjllYzVjMWI1YTliZmJkZWZlZGIgZGVzY3ItYnJhbmNoCisyMTUzNCBiNDQxMWRlMDE2NjJmN2Y5MjQ1OGYzZjQ4YmQ0NTI5OTYwMWY4ZWFkIGxlZ2FjeS10cnVuaworMjE1MzUgNzYzNjBhZmRiOTcwMjdmMDNmYWY2Njk3MmUzNTY5MDZjODI2MGIyYSBkZXNjci1icmFuY2gKKzIxNTM2IGZhMWU4OGViMTk5NGE2YmRkMmIwMWQwYmQ5MWNjNTIxN2VhNmI0NDggZGVzY3ItYnJhbmNoCisyMTUzNyAxNDE3Y2Y0NzBhZTllNWRmNDcxODllNTY2OGUyYTdiODFlMjAwMThlIGRlc2NyLWJyYW5jaAorMjE1MzggZDJlYjIzNjM2Y2M2MjdlYzk5NTUyZGY0ODBlZDkzZDYzN2QzYmY2NSBkZXNjci1icmFuY2gKKzIxNTM5IDQ2ODI1ZWQyMzUyOGEyYzNiYTAwYmZkZTkyMmVjNzk4Y2Q1YTExMjAgbGVnYWN5LXRydW5rCisyMTU0MCBmMzE1ZjU2NzRiOTVmNjJiYTYzMjkyNmE4OTJkMGVmMWEyNzk1MWQ2IGxlZ2FjeS10cnVuaworMjE1NDEgYTk3MzM0OTcxYTgxODZiNGE3OWM0NDgwODZkMTYwYWUxODNiZmE4ZSBsZWdhY3ktdHJ1bmsKKzIxNTQyIDJmZDEzNzdlYzQ4YzBkMmIxYTZiM2MxMzBiNzkzNThhYzk3MzdmMTEgbGVnYWN5LXRydW5rCisyMTU0MyBhODNmZjc3Mzk5OTI5ZjVjZmZjZGFiMTNlZjBiZDlmZjc3MWU2ODAxIGxlZ2FjeS10cnVuaworMjE1NDQgNmE1ZWYxOTk0MTUzNmUxYmQ0ZDI5NTU5ZTNkYzVlNGU0YjFiOTJlMiBsZWdhY3ktdHJ1bmsKKzIxNTQ1IDk5YzhiNWIwYzg5NjM4NDU4YWI3YmI2NTg4MzM1ZmNmYzg3NjlhYTUgbGVnYWN5LXRydW5rCisyMTU0NiA5YzM1NGU2OWE0ODllODU5MWJiYzZlNTIxYWEwOGZmMjNkOWU0OWMwIGxlZ2FjeS10cnVuaworMjE1NDcgMGI0MDYxZWVjNjhlMDM5OGMwYmJjM2Y1YmRiNWY3YzE4YzhlY2Q1NSBsZWdhY3ktdHJ1bmsKKzIxNTQ4IDQ1OTE3MzIzNzkxNTAzZDhjYTc2OTcwNmFhMDRlNTVkOGQ0ZjQ5MTcgbGVnYWN5LXRydW5rCisyMTU0OSA3MWYxNjFlOGExZDcxNjg2N2U4ZDgxMWUyN2QxYTFjODY1YWVmNjkwIGxlZ2FjeS10cnVuaworMjE1NTAgNDBlMGY1YTMzMmU5MGE2NmFlMDQwZGRhY2JkYjRmMWM0OGI5MzJlZCBkZXNjci1icmFuY2gKKzIxNTUxIGQ5MDUyY2Q5ZTBhNzYzZTFjMTk3NDZhOTM4YWFlZWNiYjNkMTFiNTUgZGVzY3ItYnJhbmNoCisyMTU1MiBmMDRhMWRkZDc0MWEzNDg2NTRlYjcwMzk3MmNiZTFlOTczZmUzY2UwIGRlc2NyLWJyYW5jaAorMjE1NTMgYmE4YTU2MmJlMzgzNThjZjVkNGU5MTIzMDRjZGUwYjlkODY2YjQxNiBkZXNjci1icmFuY2gKKzIxNTU0IDZhNWZlMWE5NDNjY2Q1YzE1ZDU1ZGVlMDBmNmU3NzVlZGFiZjcxMDQgZGVzY3ItYnJhbmNoCisyMTU1NSBlYWNiNzhkOWNiOGVkYjBjY2Y3YWJmZTQ1OWE5MDk0MjMyNjJiYzVmIGRlc2NyLWJyYW5jaAorMjE1NTYgNjYzNzAxNmRmNmUyOGY2NmY5NDI2ZjFlYWMyMDdmZTUyMjNjOTI0MCBkZXNjci1icmFuY2gKKzIxNTU3IDE3M2JjNzI0ZDExMGUyOTgwMzYxZjNkZjgxOThjNjQ0MDhlZDI2OWEgZGVzY3ItYnJhbmNoCisyMTU1OCAzZGFlMjUxYjVkZjVhMzI3NWRjYWY3NjE1OTliYTExZDJhOGQyMzQ5IGRlc2NyLWJyYW5jaAorMjE1NTkgNWM5NzY5MDE2NzNlNWQwNmY0MmQ1NDlhZDYxNDIwNDFmMTYzYzZlMyBsZWdhY3ktdHJ1bmsKKzIxNTYwIGY3ZGU5ZTA0ODdjZjE0YzJlMTQ0NjI0NTRlMWRiNGIwMWYwNmI2YjAgZGVzY3ItYnJhbmNoCisyMTU2MSA4OGVlOTY2NWRlMDU0M2RiZmY2M2ViMzA2NWNlMTY1MzcwNGE3YWI5IGRlc2NyLWJyYW5jaAorMjE1NjIgZjdmMDc2YmZjYWU5YzhjMmQyOGUzOWY2ZDcyMGVjYjkxMjc5NTJiZSBsZWdhY3ktdHJ1bmsKKzIxNTYzIGI2NmE2NTJlM2MzZmU3YjhhNzFmMDNlZDQ3MmE1MTIzY2RjMWZkZWIgZGVzY3ItYnJhbmNoCisyMTU2NCBhYTc2YzE3YTVmMDhjZDk5OWY4ODkxODhhYjg3YzdkYTEwNjBjZGJkIGRlc2NyLWJyYW5jaAorMjE1NjUgZGU4NTYwYzY4YzZmZGNkNjY3MWE1NjQ4ZmQ5ZWM5ZTBiOWZiNTQ0ZCBkZXNjci1icmFuY2gKKzIxNTY2IGU4YzY2MWRmMzAzODE0YWVkOWNjZjY4Mzc1MTZjYzhiYWU1NjU3M2EgZGVzY3ItYnJhbmNoCisyMTU2NyBjMTVhY2YyZTAxMTA4Y2FkM2JmMjM2M2ZhNTJjM2Q1M2M2NmQ1ZTJkIGRlc2NyLWJyYW5jaAorMjE1NjggZWIwNGEwNTY0YTgxODYwN2IxMDlkNzRiMDhmNDc0NGEyMzY4YzJkZiBsZWdhY3ktdHJ1bmsKKzIxNTY5IDk2NTMyNzJmMDM2ZjQwYTMzNjgxZWVlMTc1MjY0ZGQ4MTFhZDVmZDkgbGVnYWN5LXRydW5rCisyMTU3MCA2ODRiMDA5OTAzMmQ0NjJjOGEyYTNhZTliNjMzMzU2MGVhMDE1OWFjIHJlbGVhc2UyMS1tYWludAorMjE1NzEgMDVjNDkzNDZiNjhiOGRmNmU5MDYyYWIyOWRlMTQyYmNhNGVmODcyYiBsZWdhY3ktdHJ1bmsKKzIxNTcyIDMxMTE5ZDBhMThlNmZjMjkzZjA5OGQ5ZmYxMzg3ZDY4ZGIwZWMwOTQgbGVnYWN5LXRydW5rCisyMTU3MyAxMDMwMjg3MjUyNTNiMzg3ZDczZWViNGUyOTUwZWVkMjY5YTZhMmFmIGxlZ2FjeS10cnVuaworMjE1NzQgNTFjNTAxYzY4NjA4YzUzYWYwNjdkOWJiMWVjNmMzYWRiYzMxZTlkNSBkZXNjci1icmFuY2gKKzIxNTc1IDY1YzkyODdhYmY4NWJhODhlMDA5N2U2ZjI4ZGZlYWI4ZjA5YjhiMzQgbGVnYWN5LXRydW5rCisyMTU3NiBlZTdhODZmODczODM1ZmM1N2I2YmQxMzcyMTYwMjNkNDE3YWI4OWZkIGRlc2NyLWJyYW5jaAorMjE1NzcgYTRmYmMyZjAxMzlhODJkN2VkN2IyZDU2OGU2YThhYTNkNjYxOTRiNCBsZWdhY3ktdHJ1bmsKKzIxNTc4IDljMDRlMjNmOGQ0M2IzOTE4NmUyMzQ0YTVkZDI3ZDYxNjBlNDViZWIgbGVnYWN5LXRydW5rCisyMTU3OSBkNDVhYjcxNDZiMzdjZjg3NjhkNDBmZDU5N2VkYjY5ZDkxYmQ1N2RlIGxlZ2FjeS10cnVuaworMjE1ODAgNmRhODYyMzM5YTBlOTlkYjVkOTdlNWQzNjE0M2FiOGUzNWM2Nzc5MyByZWxlYXNlMjEtbWFpbnQKKzIxNTgxIDI5MzNhZTQ5MjE2ZjI2MzgyYzJhZjUwMjdiOWRiZjZkNGU2MjQ5MmYgbGVnYWN5LXRydW5rCisyMTU4MiBjYTJlYTc1ZGYzZjI1MmIwNzI4ODYxMzZhMzNiZmI4ODY1NzliMzYyIGxlZ2FjeS10cnVuaworMjE1ODMgOTQ2YjgxNmFkNWNiOGZkZjgzZDcyNWJjYmM2YzI4N2QyZDZmMzk5YiByZWxlYXNlMjEtbWFpbnQKKzIxNTg0IDlhZDRkYjk3ZTJkOWI2ZWQyOTEwOTM3OTFlY2JjYzk0Mjc4Mjc2OWMgbGVnYWN5LXRydW5rCisyMTU4NSBkNGZiOTQxNTNiMzA4MjA5ZTVmOWIwYzcxODk4NmZjZWY1NGZjNmQ0IHJlbGVhc2UyMS1tYWludAorMjE1ODYgZmJjY2YxOGFhNTdiZmViMGMzZDdmZTBhMTdlNDg0OWMzMDU3YTJmNSByZWxlYXNlMjEtbWFpbnQKKzIxNTg3IGE3OGY0YmQ1OWUxMGEwYjNlZjNkM2RlMzBkZWVjODQwNDAzNjliMzQgZGVzY3ItYnJhbmNoCisyMTU4OCBhYmM0YTNiN2QxOGUwMWM3OTFiMThhZmYwMWQwMDdiOTA0NGEyY2RmIGRlc2NyLWJyYW5jaAorMjE1ODkgMmYxYjRjZGNiYjA2YzQ0MjIyOWJiNjJmZWRhNzM0Njg1OTVhNThlOSBsZWdhY3ktdHJ1bmsKKzIxNTkwIGU3OGE1MTI2OGM4MWRmYzc1NzA3ZmJiNzA0YTI0OTkyNzA3N2M4ZDYgbGVnYWN5LXRydW5rCisyMTU5MSA4YzM4NDQ5ZGY3NDYwOTQxMWMxMzRhNGJkYmJiNDA3NWMzYmVjYTA5IGRlc2NyLWJyYW5jaAorMjE1OTIgZmVlNWI1NzE3ZGJiYjg5MGQ0Zjk0YWQ3ZGIwZGMzZWQ5YmYzY2I1MiBsZWdhY3ktdHJ1bmsKKzIxNTkzIGM2ZDg2NDVkNGM4ODVmZmY5OWEwMzI4OWI2YjhlNGZlOGRhYzU2MTkgbGVnYWN5LXRydW5rCisyMTU5NCA3MGFmNGExNzNhOTU2NGYwODgwOWU2OTY3MjcwMmZkNmUzYTdmOWNiIGxlZ2FjeS10cnVuaworMjE1OTUgY2IyZWFmNDU3Mzg2Yjc4NjkwMTQ0NDc4N2U0NTI3ZDYwOTIwYjU4NyBsZWdhY3ktdHJ1bmsKKzIxNTk2IDZiOTMxYmY2YmRmNjdmOWI3ZTg4NjkzODdjMGY0ZTk2NmQ5MGE4NjIgbGVnYWN5LXRydW5rCisyMTU5NyBjZjgxNDljZWRjY2QyMWFmMmVmNmM0MjYxMjg2YzZlNGRjYmRlY2ZiIGxlZ2FjeS10cnVuaworMjE1OTggMDA5MzRkNjJlNzgxNjcyMzJkYzM1YThiNjk1MTJmZGU2ZjU1ZGVlYSBsZWdhY3ktdHJ1bmsKKzIxNTk5IDNkYjkyMWYzZWRlMGJhNTVjOGI2MTk2ZDUyNzRmNDljYmIxN2YwYWUgbGVnYWN5LXRydW5rCisyMTYwMCBlZDBmMGQ5Njc1MGNkZTY1NjY0OTRlNTZhYzgxODQ0NTAxYjdhZDAxIGxlZ2FjeS10cnVuaworMjE2MDEgOTM5YmJjNTFjZDIxOTNkMmRjMjFkMzQ1NDU2Nzg4OTMyMjc3MzRlMiBsZWdhY3ktdHJ1bmsKKzIxNjAyIGMxYTVlNTE3NTkwN2IxMjYxZDY0Yjk2YTVjMmJjZDNhMzZlMDhkNDMgbGVnYWN5LXRydW5rCisyMTYwMyBjZGExNjM4M2JjNmJhYTJlYmQ3NWU0ZTk0YmU1Yzc1Njk3OGNjN2MyIGRlc2NyLWJyYW5jaAorMjE2MDQgM2IxM2IyNjk1YjdhNmI3NjAzYTJiYTRkZDdmZGU4YWNjY2FmZjNlNyBkZXNjci1icmFuY2gKKzIxNjA1IGI3M2UxZjQyMmVhOGJmYWEzYjI0YzYyN2NhZGU3NjAyYjdkZDIzYzMgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjA2IDQwNGM2MGUwMDM0NDcwNjczYjkxMmNlMTJjY2MwZDEwYjBiZjJmOWYgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjA4IDhkNmI0YWMwNDQwYjRjMGMyMTc3ZWFmYzJkYjBhZGE0YzIzMWY4ODkgbGVnYWN5LXRydW5rCisyMTYwOSBmZWVhM2QyZjM1NjNmMGJmYWY1ODZlMWI3YWYxYWM0MDAzYTAyOGUzIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYxMCAxMWQ5ZTQ2ZjE0NzA1MTcxOWYzODhhN2JjMmMyMmNiNmFiM2IxYTkwIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYxMiA4YjkzZDA0ZmE3YTliOWY1MGE1ODZmMGE4Y2FhYmE3YTA5ZjcwOGM5IGxlZ2FjeS10cnVuaworMjE2MTMgOWY3NDk2NWUwZjM1ODU1Yzg2MGM4ZjE4NGVjYjBiZWU4ZDA1MjYyNSBsZWdhY3ktdHJ1bmsKKzIxNjE0IDM0ZDVlNDhjMWVkMjYyNTdjNWFkZjU3OThiNWQ2OGE2YTk4NjBjYTYgbGVnYWN5LXRydW5rCisyMTYxNSA2YzUwMWQ4OTIwMDMwYTkyYWRkOTZhNGNmNzIxNGI4YTE4MDNjZDU4IHJlbGVhc2UyMS1tYWludAorMjE2MTYgNDk4ZDdkZDk5ZGE0MWU5MjY2Mzg5ZjFlMzE4NjEzMjUyZDlhMDVjYiByZWxlYXNlMjEtbWFpbnQKKzIxNjE3IDk5YWQ2ZmQyNzllOWJmNWE2MDlhMTBlNTRhOGYxNDM4YzE0NjMwNGYgcmVsZWFzZTIxLW1haW50CisyMTYxOCBiMWExZGUxOGY5MWZiY2QwNzQ2NDU4MTk4MzY4MTkzZWMxOTJlNWFjIHJlbGVhc2UyMS1tYWludAorMjE2MTkgODdlZTFjM2ZkMGM4MjI3NTU4NWU3YjA3YTdhNGY4YWQ2ZmIzOWMzYyByZWxlYXNlMjEtbWFpbnQKKzIxNjIwIDgyYTM0OTMyZWEyMmQ2MjlkMTRjZTJmODdmMzg3MjY2YTYyMWNiODUgcmVsZWFzZTIxLW1haW50CisyMTYyMSBjOTkxMjlhMGE0N2Q5MDdiYjdkNGYzMjVmMDA4ZGNmY2Y3NDZiNjhiIHJlbGVhc2UyMS1tYWludAorMjE2MjIgMDRlMjVjMDE4NDliNDRiYjQ0ZmUyOTQ3NGI0Njc5NTkwY2NjODU5ZSBsZWdhY3ktdHJ1bmsKKzIxNjIzIGMzOTdkNGNkODM3ZDIwNmY1YTEwYTMxZDljMmQzYmFjZTAwNWE1OGUgbGVnYWN5LXRydW5rCisyMTYyNCBhNGQzNTA4YWVmYzBmOTU4YTk5MDA4Y2MwOTQ0MWEwOTEzM2RjZmQyIGxlZ2FjeS10cnVuaworMjE2MjUgZGZiNzc0MjJjNjA3NDI5NjcwMjA3NDFiMmQzMDEyNDczMmZiNTI2ZCByZWxlYXNlMjEtbWFpbnQKKzIxNjI2IDEwNmM5OTk1ZGI2OGFlNWM4Zjc2OTgzMGM3MjYxYjA0ODcxNDc5YTkgbGVnYWN5LXRydW5rCisyMTYyNyA3OTVhYTQ1OTAyMTEwYTk5ODYxZDczZmI4NzM2YWJmYTIwNmFlYmQwIGxlZ2FjeS10cnVuaworMjE2MjggMmUyZWY0NzExNGY3NzI0MGQwNjhiMWMzNzNlMzY4MmE2NWYzN2Y0OCByZWxlYXNlMjEtbWFpbnQKKzIxNjI5IDJmYmIyNWMzMDcyZWI2ZDQ3ZTY2ODExMzQ5NjAxN2VkODE0NzNlNWMgbGVnYWN5LXRydW5rCisyMTYzMCBlMDYxMTU1Zjk5ZThlYjA3NzA0M2YyMDQwOWNkMGE5YzliMzgwY2Y4IGxlZ2FjeS10cnVuaworMjE2MzEgOThiZGU2ZTVlNzQzMmRjN2Q3NzY3ZWY3NGNlOWIyNzk4OTk0YTUxYSByZWxlYXNlMjEtbWFpbnQKKzIxNjMyIDI2ZmM5MDVkZGMxMmU1NWI3Yjc4MWNkYjQzZjYwNDMzMTkxY2ZmZGYgbGVnYWN5LXRydW5rCisyMTYzMyA2ZjhhMjQwMmY2ZmE0YjNmOTFlNTBkZWMzMWY0NDc3NTYxZDRhMDljIGxlZ2FjeS10cnVuaworMjE2MzQgOTk3N2NmMjA2NTMyYjE0NmYzMTkyNzJhYTgyMzBiYjljZGQ0YjhmMSBsZWdhY3ktdHJ1bmsKKzIxNjM1IDRjMzNkYzM0NTkwMmE5MTU3ZmYwMzk0MTg2YTdiNTZlNWUzY2ZkNzQgbGVnYWN5LXRydW5rCisyMTYzNiBjN2EyNGQzYjM1OTczOTY5NzI5N2JmMGQ1MWU5M2NkMTM0M2U0ZmFhIGxlZ2FjeS10cnVuaworMjE2MzcgNGI3ZmQzYWUxZDkzMGI5MjI1OGU0Zjk3Y2YwNmU4OTIxYmIxZmU0NSBsZWdhY3ktdHJ1bmsKKzIxNjM4IGY0MDkyYTVmN2JiYzcxNDBiMWQ0MDk3MTYzZDIwODZjOThjZTg2MmEgbGVnYWN5LXRydW5rCisyMTYzOSAwNjliODE1MTliZTc4NTBiYjQwYWEzY2U2NGRiNDNiMzJkZTQxNmNhIGxlZ2FjeS10cnVuaworMjE2NDAgNTg0NmMyNThiODg5NjM2OTZkOGU1NWVjOGZiYWI4MzQ3OTdkYzZkYyBsZWdhY3ktdHJ1bmsKKzIxNjQxIGM0Zjc1ODU3NTAyYTZkM2Y2NzE4ZjA3NmFiZjYzOWQwNWE2ODdmYWUgbGVnYWN5LXRydW5rCisyMTY0MiBiYTFmM2RlMTAwODU0MzRmMTFlZjk3MTE3MzVmMWUwNWI1Yzg4ZTQ1IGxlZ2FjeS10cnVuaworMjE2NDMgNDI3NDFlNjc3MzM4NDFmMjkzZDhiZGE0ODkxMGI4ZmRiZTIyODEwZSBsZWdhY3ktdHJ1bmsKKzIxNjQ0IGVhN2M3N2ZlNTBhZTk5ZGFhNGQwNWU5MDE5YmZmYTg3MmM2OTM4NzUgbGVnYWN5LXRydW5rCisyMTY0NSAyYmI3NWExZjMxODQxOTI4NWNkOGMyODc4OWQ5ZDRlNzA5NjcwMjQ4IGxlZ2FjeS10cnVuaworMjE2NDYgZTZlY2Q4YTA3ZWE4OGYyN2JmNTUwNDhhZTZiYzI5NTA4ODU1MTRhOSBsZWdhY3ktdHJ1bmsKKzIxNjQ3IDQ2ZGQ4NzNkMjZmNjQ0ZjQ5ODMxYzZmODRmNGNiNWE3YTg2YTMyYTkgbGVnYWN5LXRydW5rCisyMTY0OCAyMDJkZGRiN2M5NzQ3NGNhNzA2ZjY3NjY0Y2YxOGM0YjdkMmE1NWVkIGxlZ2FjeS10cnVuaworMjE2NDkgODYyNjE3MWIyYzcyNTI4NTUyYzE2MGFlNmM2MzU5NTBjNTY5NWQyMSByZWxlYXNlMjEtbWFpbnQKKzIxNjUwIGNjMjQ4Njc1N2M4YmYzZTIyYmI5NGM2YjMzNTJiYzAyN2ZmNjNiZGMgcmVsZWFzZTIxLW1haW50CisyMTY1MSBjNWI1MDU1MmQ1NmQxZjYyNzNjMzFjNjNjNmJiMTNkNTA4YTZiMjU5IHJlbGVhc2UyMS1tYWludAorMjE2NTIgMzJjYjI5NWQwODYyYzIyYTFiMDdlODE0NTkxNzZlYTBmN2U5NzI1OCBsZWdhY3ktdHJ1bmsKKzIxNjUzIDg2YjFjODIxNjBlYTk4ZDU3YTBmOWY0MWEyZDBiYjg5ZThiYjIxNmMgbGVnYWN5LXRydW5rCisyMTY1NCA4ZGU5MTA0MjE3M2Y3ZjRlMTAxZmE0ODI3ZGMwOTJhZjhhYjc0ZWViIGxlZ2FjeS10cnVuaworMjE2NTUgMjU0YTRhOWFmMGZiYzZlODU4MGU0OWJhMmM1YjcyMWI1ZGFkMTMzYyBsZWdhY3ktdHJ1bmsKKzIxNjU2IGY0ZWEyMWEwZjk1NDJkMzdmZDM4YTRhYzU2NjM3NjM0ZjNkMGQ1NzEgbGVnYWN5LXRydW5rCisyMTY1NyBkMjExNzA5ZjI1ZjFlZWNiNDE3YWM1MjE5MTBlZTE4MGJjMjM4NjRjIGxlZ2FjeS10cnVuaworMjE2NTggYjJiZjg4ZTA2ZmM1OTk3YjVmZGRmNjJkNDEwOWMzYTRjMWZmODEzOCBsZWdhY3ktdHJ1bmsKKzIxNjU5IDY1YWZhYzg0ZDRmNzMyMzZlY2ExM2U3ODM2NDA0ZTg3MTc2OGM0YmMgbGVnYWN5LXRydW5rCisyMTY2MCA3MzI4YzhjZDkxN2Q5ZWY2MGVlYjE4NmQwYWMzYWZjMDhhZjkyOTBhIHJlbGVhc2UyMS1tYWludAorMjE2NjEgYTU5Y2E4NDQ2ZjkyYjZlZGI3N2ExOWMzMWIzOTkyOTRhNzk2Yzk4MCBsZWdhY3ktdHJ1bmsKKzIxNjYyIDQ4NjEzNzM5NTkxNzZjNThjZDI2N2ExMWI0MTM3NDljNGQ3NmQ0MDMgcmVsZWFzZTIxLW1haW50CisyMTY2MyBmNzJiY2VjZGQxZjdlMmZjYjFkMWExYzIyYjkxMjA0ZGNjZWQxYzhhIHJlbGVhc2UyMS1tYWludAorMjE2NjQgZDk3YzgyY2JkNzY2OTFjY2MwMzZiYjE1ZGJhOTVjZDRlNmNmNjc1MyBsZWdhY3ktdHJ1bmsKKzIxNjY1IGQ1MDI2NmI1ZGM0OGM1YWUxY2YwNjQ0ZDU3OWI5OTBhNDQ1MGVhMzcgbGVnYWN5LXRydW5rCisyMTY2NiBlYWU5MjcyOTAzNTcxYTI3N2NiMDhkZDRiOWE0Nzg4NzlkNmFmYTMwIGxlZ2FjeS10cnVuaworMjE2NjcgYjFkNmFlMzI5ZGQwNThmZDVhNTY1NWI0ZWIzMzM5MmM2MTRmNmMzNyBsZWdhY3ktdHJ1bmsKKzIxNjY4IGZkOTQ2MTM3M2NhYjMwMDhiODI5MmE1NTEzOWNhNWJmNDMwNzE2ODggbGVnYWN5LXRydW5rCisyMTY2OSAyMWI1YjJlYWViM2Q0MWU2MjgyM2ExMzNlODRhNjE2ZTkxNWEzYjNhIGxlZ2FjeS10cnVuaworMjE2NzAgMWZiY2Y1NDljMWM0NTM1ZjNiZTgwM2ExODQ0ZDgwNjg0MGM3MjI0ZiBsZWdhY3ktdHJ1bmsKKzIxNjcxIDY0ZmE3MmE4NDM0NzQ5MDAzOTA1ZjgwZDVhY2U0YmYwYThhODc2MDEgbGVnYWN5LXRydW5rCisyMTY3MiAyM2Q4ZWIyOWU0ZmEwZmZlNjgzZjJjMDFjOGE5MTdlNDE4Mjk1ZDE2IGxlZ2FjeS10cnVuaworMjE2NzMgZTRkNmE3Mzk5OTdkOTYxZDJkNDgyMDZkMzAyZDYwYzdkMWY2ZmQwZiBsZWdhY3ktdHJ1bmsKKzIxNjc0IDM3ZWU5Y2Q1NGExMTNmY2IyNTI1MmJjMzE3NWE0NDc5MmMyNzI0M2MgbGVnYWN5LXRydW5rCisyMTY3NSBlMDY0ZjUyNmE2ZWZlODE5MmEyYWNjM2E5ZjlkYWM1MjZhMTZkZTc3IGxlZ2FjeS10cnVuaworMjE2NzYgZmM1YTNlYzA3NDVlMWQ2Yjg3ZjU5MGEwNTcxZmNiOTcwNTU5ZGU5NSBsZWdhY3ktdHJ1bmsKKzIxNjc3IGVjOWFhMGRjOGI3MzYwNmE3MTZlYjFlYTBmOWMzMjcwMDQ1MjYxYmUgbGVnYWN5LXRydW5rCisyMTY3OCBiZjU2MjQxOGRmYjgxZTBmNjZhM2E0YmFiMDU0Y2EyNGJjYmRlZWViIGxlZ2FjeS10cnVuaworMjE2NzkgY2QzYjRkZDNlNGNhMTkxNzk0ZWZlYjMwMzUyYWExNGJmNjA4NTc2ZiBsZWdhY3ktdHJ1bmsKKzIxNjgwIGVhMjZjOWI2NmZiZDlkMmVhYjM1M2ZkY2MzN2RjY2FkMGZiZTNhZjYgbGVnYWN5LXRydW5rCisyMTY4MSAwYzcwMTM1Mzg5OTgzY2M0NWM1NDJhMTM3MjNhYWVlZWY3ZmYxNDEzIGxlZ2FjeS10cnVuaworMjE2ODIgYjI4N2YyOTI3ZGIzOGEzZTUxZDBkYzA1Yzg5MTE0ZWExMTQ5NTg5NCBsZWdhY3ktdHJ1bmsKKzIxNjgzIDNmY2Y5OGNhNmM0YTE0NmY1YWY3YzhmYTMwOWQ0YWNhMmYxNzZlMmIgbGVnYWN5LXRydW5rCisyMTY4NCA5MDYwYzA2YmVkYmM0MzE4NDQ0YWIyMGE4YTkxOTM3Y2ViNmFmYTljIGxlZ2FjeS10cnVuaworMjE2ODUgYzQ5MzAxMzFmNWUzYWM3Mjc1YTY3YzRkMzUyNjE5Y2Y4YTNmNmM0NCBsZWdhY3ktdHJ1bmsKKzIxNjg2IGMxZWM4N2YxMDQ0YTQ5Y2QxNzg2ZTgwZTllYWIwZGI1MGRhN2JiZjYgbGVnYWN5LXRydW5rCisyMTY4NyA3MDQ2MWYyZDIxMDk4ZDFjNTI5Mjg0MzAyNjBkOWUyZjMxOTQ2ZDU0IGxlZ2FjeS10cnVuaworMjE2ODggZTY3NWZmNTc0OGYwNWYyNzlhYzQ2OWY0NDNlYzE2MmQwMDNmM2Q0ZSByZWxlYXNlMjEtbWFpbnQKKzIxNjg4IDIyYmVkMmRkMWIyODY1NjRkZWE0ZDlhNjdkNGVkODBkYzMyMjUxOTMgcmVsZWFzZTIxLW1haW50CisyMTY5MCAxMzc4M2UwYTM0MjM3ZDUwZDUyYWE5MjBkMDc1NTlkMGVhMTI1MGMxIHJlbGVhc2UyMS1tYWludAorMjE2OTEgNmQ0YzhhMjliZTcwODdmOTA2ZWUyZjQ2OWM4OTRhNjVhY2Q1NGIxZSBsZWdhY3ktdHJ1bmsKKzIxNjkyIDA0N2Q3YzQ4MDY4YWRkN2EzNTA0ZDQxMmQ2NzJmNTRiMzNmNWM0MjAgbGVnYWN5LXRydW5rCisyMTY5MyBmNTNkOGM1MmM4MWY4ZDllMzRkMmYxOGMwNjliNGJlNzk5ZDkwMWJkIGxlZ2FjeS10cnVuaworMjE2OTQgZjYwZTg1Mzg0Yjc5ODFhNmVmOGU4YTExZWJlMTU5YmMxMmIyY2MxMiBsZWdhY3ktdHJ1bmsKKzIxNjk1IDAwMjNhNzhjMWM4MmM3MTUyMGQ0NTM1N2FhN2NhZjdiZTBkMzIxOTUgbGVnYWN5LXRydW5rCisyMTY5NiAwOWE1ZmUyYTc0MjY3Mzg4OWMxOWIxMjM0OGEwMzVhMjRiNTZhNDUyIGxlZ2FjeS10cnVuaworMjE2OTcgNzI5MzlhMjIzMGQzYmYxNzA4OWEzZDI1MmNmZmYzOGYyMjI1MzU2MSBsZWdhY3ktdHJ1bmsKKzIxNjk4IGJmYWE5N2ExOWIzMDgzZjM0Zjg3YWNiNDllZTFjOWFkZDFkMDAwMmIgbGVnYWN5LXRydW5rCisyMTY5OSAyOWJlODcxYmQ4NzY4NTY2M2RiODUyMjdhOTY1OGVkMmE1MTE3NWE5IGxlZ2FjeS10cnVuaworMjE3MDAgNjQxN2Q1ODgxNmNmZGQ1Yjk2NTQwOTA2MTdiOTJjOTZhZjQzYzRjNSBsZWdhY3ktdHJ1bmsKKzIxNzAxIGEwNjgzMWIzNTQwNzYxYjA4NWJkY2RjOTMxNWE1MzAyYzA2OWJhZDEgbGVnYWN5LXRydW5rCisyMTcwMiBmZDg5NmI3Y2FiYjc0MjI1MzJjMmVlNDUwNmY0M2I3ZjdiN2I1ZDkzIGxlZ2FjeS10cnVuaworMjE3MDMgNzQ2MTM0OGQ5OWRhNDQzNmZmZDI4NjZjOTg2Njk0NzkxMGFjNzA3MSBsZWdhY3ktdHJ1bmsKKzIxNzA0IGVhZTE3YzU3NjcyNzQyNTk3YTA2Y2ZhNzQ2ZGUzY2RlYWZhOWE0ZTUgZGVzY3ItYnJhbmNoCisyMTcwNSBjZmU1M2E2MjBjZmZlODEyNzM2OGU2OWIwMGFiZGFkMmYzYjBlNzY1IGRlc2NyLWJyYW5jaAorMjE3MDYgNDljMDdhY2M2ZTgzZTdiN2I2NzFiZjcxOWU1YzY2ZjVjYTI5ODI3NSBkZXNjci1icmFuY2gKKzIxNzA3IGM5NDAyODdkYmE3OWJkZjU2MzkwYWFkOTNlNWZhNjM4Njg2YWIyYzUgZGVzY3ItYnJhbmNoCisyMTcwOCA2NDZlMDUyZTA1YmVkNTFlZjJkNDMwMWVhNDVjMTdjN2JhZjJlMDVmIGxlZ2FjeS10cnVuaworMjE3MDkgNThlYjUwNTI4NjkyYzhlNmM0MzgxNzJiOGVjZWNiZDAxZjE5N2U3MyBsZWdhY3ktdHJ1bmsKKzIxNzExIDEyZTdhZDEwODIyOTE2MDVkZTU1NGI3ZjQ5MjA5ZDRiNjc2MTY0ZjcgbGVnYWN5LXRydW5rCisyMTcxMiA5YjQyZGY0Yjc0ZDQ1NjNlYTRmOWIzZmFlZmMzMzUyMGEzZTBmNzVkIGxlZ2FjeS10cnVuaworMjE3MTMgZjQwMTQwNTg4YjFlODNhNzVmYWE1NWUzYmIzOWM0ZWQ2ZDUyYjY3MiBsZWdhY3ktdHJ1bmsKKzIxNzE0IGU3NjBlZWQ1ZjY4ODJjZDQ3NjBjNTA3MDgxNTAyNTVlN2M0MjI2MTYgbGVnYWN5LXRydW5rCisyMTcxNSBhYTM0NDM2MTQ1ZDAzM2RiYjAyNDE0MGM2YzI3M2FkZWUyZTA4YmJiIGxlZ2FjeS10cnVuaworMjE3MTYgNWQzOTY0ZTYyMmE4NTJjYzNiOWU5Njc0NGZiNjFhNjhhMzUyMmMxMCBkZXNjci1icmFuY2gKKzIxNzE3IDYzOGQ5MDQ0ZmJlMjFlYjhmYTYzOGQ1YjBlYzg3NzQ5NDU3MTc2NmEgbGVnYWN5LXRydW5rCisyMTcxOCBhNzVjYTIxN2Y3Mzc3N2Q0ZGZmNjY1ZjZlNTAwMDcwY2VlOTcwZjVkIGxlZ2FjeS10cnVuaworMjE3MjAgYWNlNzBlMzI3OTI5Y2FiYmRlNWQ5MTlhNWQ1MmQxMDU4MGY1OTBiNyBsZWdhY3ktdHJ1bmsKKzIxNzIxIDU1NTExY2FhMjRlZWI1OTZlYzZmNzgyNjMxYjVjNWMxMDg0MmE3MTcgbGVnYWN5LXRydW5rCisyMTcyMiA1ZTFhMTRkOTkzYjM1YjkyMzU2Mjk4YjUzYWFhOWRiMmU3NTEwMDBlIGxlZ2FjeS10cnVuaworMjE3MjMgOTliNWQzMzRkZTFlNDMxZmRiNmYwMGQwNWVjZWUxMTkyOTNkN2Y5MiBsZWdhY3ktdHJ1bmsKKzIxNzI0IDE0NGEzMDA1YjViYWUzZGE1MWMyYTRmM2VjODc2NWE2Nzc1ZTk1NGEgbGVnYWN5LXRydW5rCisyMTcyNSA5Yjg1NjRmNmUzNGQ1MWNhZTI5NTgyZGJhMmNhZDhmZjAwYmI2OTI5IGxlZ2FjeS10cnVuaworMjE3MjYgYzQwNDEwNzJkMTAxMDEwZGIyZDNjODU0OWY5Nzc4NWYyNTkzYzBjNSBsZWdhY3ktdHJ1bmsKKzIxNzI3IDM0NmRjYWZjODc4YjQ2NmU2ZTA4MWYyOTdjZTdiMWU5M2RjNzQ5ZWMgbGVnYWN5LXRydW5rCisyMTcyOCA2NzA0NjRjOTRiOTJhNjgyMzIwZDE3OTQ5MzEzNWM5YjBjM2E4YTNiIGxlZ2FjeS10cnVuaworMjE3MjkgN2Q3NzYxNGZkMGI3ZmQ3MDFjNzg2MTgzYmFhNjkzZjMyMDc4OTA0ZSBsZWdhY3ktdHJ1bmsKKzIxNzMwIGM2YzMwZTQ1YWI1YmE2NjJiNTg1ZjM0OTMzY2Q2OWM2NDM4N2U5MDAgcmVsZWFzZTIxLW1haW50CisyMTczMSA0Mzg0ZjkxOWI0NDg1NDFmZjEyOGNlOGMzMDBjYjk2MjY0NjhiM2Y1IGxlZ2FjeS10cnVuaworMjE3MzIgOGQ2MmRkZTc2MjdjZWY3Y2YwZTRmODhjMDNmYzNjNjQxZjFlYmExZCBsZWdhY3ktdHJ1bmsKKzIxNzMzIDEzMmEwNmFkOTZlZWMxYTVlODlkOWI2ZjMyMmFkMGVmMjRiNTU3YzkgbGVnYWN5LXRydW5rCisyMTczNCBhODYxOTVlNmM3ZTMzMmE1N2I2OGJhYjBjM2VkMmY4MTRkZWYxMjY3IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTczNiA2YjYwZDBkOTc0YzMxZDViOWRjOTZlOTdiOWU4MjUxMzFkN2M4YTdjIHJlbGVhc2UyMS1tYWludAorMjE3MzcgMjg4MTg3NjZhNjRjYTVmOTViYmQxZjY4ZTZkM2E4ZTJlMjA3ZmM2MCBsZWdhY3ktdHJ1bmsKKzIxNzM4IDYxZTUwZDBhYTU5YTFkODk2OWQ5ZDg5N2U3MzQxZWI5YzI5ODVkOTYgbGVnYWN5LXRydW5rCisyMTczOSA0MDUzNTJlYTUwYTA3ZDMxZjY1ZDdiMWJkMDUzMTI4MGMxYWQyMmMyIGxlZ2FjeS10cnVuaworMjE3NDAgNDI0N2I0YjJjNDhlNjkxNDdhOThiMWUxYTM3MjJhZTg4MjNhZWEzNSBsZWdhY3ktdHJ1bmsKKzIxNzQxIGZlNDQ0MjhmOTc3NGRmODQ1YmJmMzczNWNmYThhYTVhMzk2ZDE2MjUgbGVnYWN5LXRydW5rCisyMTc0MiAzMDQxNGI0MWZhYzk3ODRiNmYxMzViYTc1YjFlYTI5NDEzMDNiM2ExIGxlZ2FjeS10cnVuaworMjE3NDMgZTk5NTQ1NjdjNTRiMDJmNzA0YTljZmQwYTEyNWRkNWRmMGRkNzRiOCBsZWdhY3ktdHJ1bmsKKzIxNzQ0IDIxYTA0ZDE1ZTM4YzI2ZDgzM2QxZTAxYjk2OWRmZTNiYTJlNzg0MTMgbGVnYWN5LXRydW5rCisyMTc0NSA1YjgyMGQ3YTNlN2MxM2UyOWYzZjM0MmNjOTQ2NmQ4YWI0Y2ZmOTExIGxlZ2FjeS10cnVuaworMjE3NDcgMjc4MzE4MzA0MzU3OTE5MmRmNTAzNDk3Y2I4OTIyMDQyMjczNjQ4MCBsZWdhY3ktdHJ1bmsKKzIxNzQ4IGM3YmVmNmFhNmY5MjY3MjdkMTE5OWZiYWNhN2E1ZTU2YWMwNzJkN2EgbGVnYWN5LXRydW5rCisyMTc0OSAyMWM1NDliNjY3MDI0MTFjOGU2Mjg3MTUzMTM3YzRmMjU5MTI5MTJlIGRlc2NyLWJyYW5jaAorMjE3NTAgMTE1Mzg4MDU5N2NjNzJhOGNlY2JkMWViM2U4MzUyMDMxOWU3MDQ2NiBkZXNjci1icmFuY2gKKzIxNzUxIDlhMzczYTE0M2ExMzBmMmFiYzg2MzQwMGI4MjMxYTAzZTIzMWY5ZGEgbGVnYWN5LXRydW5rCisyMTc1MiAxOTI1MGY5MTgxZGM0NGUxYTk1NmE5Mzk1N2Y2ZGI2Yjg0MmM4MjA4IGxlZ2FjeS10cnVuaworMjE3NTMgMjNlNmJiYTg4ZDZhN2ZjN2Y1YjljOTg2MjEwNjk2YjYzZjYwNTk4NyBsZWdhY3ktdHJ1bmsKKzIxNzU0IDI4YjYyOTFlMmE1Y2Y3ZjU1MmQzZGI5OWZiN2U5MDA2Y2I3NmQ1MWEgbGVnYWN5LXRydW5rCisyMTc1NSAzZjI4M2M5OGU4MTUwNzliNTRjZGZkM2EwNzNkMDYzOWNjZDNjYjEzIGxlZ2FjeS10cnVuaworMjE3NTYgMTE1MWFiOGEyY2RmZTU4ZTI1MGI1MDU2MWRkYmQxYjVlOTExYzg3MCBsZWdhY3ktdHJ1bmsKKzIxNzU3IDdmZGI0MTYwM2U5YTNjM2MzMTBjYTk3YTc0ZTAwNDQ3ODQ4Njg0ZTIgbGVnYWN5LXRydW5rCisyMTc1OCA4NTk1MDUyMjQ4NTAyMGVmYjAxZjhiMjM4ZmNlODVkZjM1YTJhZTk5IGxlZ2FjeS10cnVuaworMjE3NTkgNzIxZjFhODkzZmJiYzI0OGNjMDcxZmUzMjNmNThjYzNlZTI1NWU0ZiBsZWdhY3ktdHJ1bmsKKzIxNzYwIDlmNDNlM2E5YmI2ZWUyNTI2ZTI4OWM5MjZkNTliYTgyNjc0NDk1ZDYgbGVnYWN5LXRydW5rCisyMTc2MSBiOWQ0N2QwODNkMmNhZjM0Mjg3YjVkODk3N2Y0MzI3OWY1OGU3NDdhIGxlZ2FjeS10cnVuaworMjE3NjIgMjc1YWZiNWE3NjdlMmJkOTExMTBiOTc5NTYwM2VjMGJjOTdkOGI1OCBsZWdhY3ktdHJ1bmsKKzIxNzYzIGY4NGFjYzlkZmQwYjVjZGNiYWQ5Y2YzMTQwMmU3MDA1ZWQyZjUyOWIgZGVzY3ItYnJhbmNoCisyMTc2NCAwODU3ZmI0ODlmYTNhNjMxMDc3YTk3MzFkOGU2MTVmNzAzOTM5ZTZmIGxlZ2FjeS10cnVuaworMjE3NjUgNzMwYWIwYmVkNmFiNDZmMGExNzA4NzhjZjFiNDhjOTc1NDcyYWU1MyBsZWdhY3ktdHJ1bmsKKzIxNzY2IGZhZjdmMTcxYTlmMzIyNDA5YjUxOGUwMTZmYzM1NWU4ZGEwZTdlNDQgbGVnYWN5LXRydW5rCisyMTc2NyBkY2QxYTBhYWFlY2I0OWNhNzk3Y2E2Y2VhN2U1Yjg2ZmQ3ZTc2MzMyIGxlZ2FjeS10cnVuaworMjE3NjkgMjFkN2JhZTlkYzJkYjZjMmNiM2Q3MmQ5ZTNmNzNkOTJhOTNhODA4NSBkZXNjci1icmFuY2gKKzIxNzcwIDU5NDQ2ZDBmODM0MWRkMTczMGYxNjFlMDNlMWQ3Mjk2MjE1NzQwOWMgbGVnYWN5LXRydW5rCisyMTc3MSAxZjljN2I0Y2VlNzdhZmU5ZmE4YTRhNWU0ZGVlMTEwMDA3NzZiNTJjIGxlZ2FjeS10cnVuaworMjE3NzIgZmRiMzZhMGM3ZTZlOThlNjIwYmZmMWZhMDY0ODg2NTYxMGU2ODEzNSBsZWdhY3ktdHJ1bmsKKzIxNzczIDRhYzk4ZmU3YWJkMmI1MTY3NjI2OTg2NzQ2ZGU0MmM0NjQ1MzE0NDMgbGVnYWN5LXRydW5rCisyMTc3NCA2MjM4YTIyMmI3Y2Q2NThhYjQzMzllYTZjM2E2YmE0Nzc1Y2E4ODljIGxlZ2FjeS10cnVuaworMjE3NzUgMzg0YTYxZmE2ZjVhMjA0N2RjNGYzOWVmNmZiMzU5ZDY3NzdjYjE0MyBsZWdhY3ktdHJ1bmsKKzIxNzc2IDBhOTBlNWVjNjFiNjk4MWU2NTZlN2VjOGQ0OWEyOTY0ZjgzNzU4NzcgbGVnYWN5LXRydW5rCisyMTc3NyAwMWZjOThiYTM5OWYxYThhZjFmMzlkNGY3NDM0NGJlNDBmMjE0ZTM0IGxlZ2FjeS10cnVuaworMjE3NzggMTlkY2ZiOTM1ZjYwZTRlMGY4YWNmODYxMjhiYzMwNDI4ZDRjYzc3MSBsZWdhY3ktdHJ1bmsKKzIxNzc5IDI3MTA2NGRhMWQ1MmNjZWM5OGZlMTg1MzEwMGI4NTgzNGM4Y2Y1ZGYgbGVnYWN5LXRydW5rCisyMTc4MCAxZjNkNzY2ZGFkOTFlNWVlMjY5MjhlNTkyNTk0YzIxY2Q1Y2ZkYmIxIGxlZ2FjeS10cnVuaworMjE3ODEgOTE1OTIyMmU2NDYzZmQ1OTQ1MDQ4YjY3ZDNjOWQ3NjJiYjZhNWFkOSBsZWdhY3ktdHJ1bmsKKzIxNzgyIDEwNzE3ZjhhNmQ5Njg0YzI5N2UxNTA5YmFjZmU0ODVhZjRiMDNkMmUgbGVnYWN5LXRydW5rCisyMTc4MyA5OGQ4MWNiZThiYmQ3ZmRiMzk2MTc0MDVhMmEwZWE3MzIzYWFjNzM0IGxlZ2FjeS10cnVuaworMjE3ODQgMzVmZWM0ODdiY2VmNzc3MzhkNWZiM2ZmYTlkODM4YzcyZDE0YWEwMyBsZWdhY3ktdHJ1bmsKKzIxNzg1IGU1ZTViYjU0ODJkM2I3MmM2NzExMjZhODk3MTM4Y2I0MTg3ZTdhMDAgcmVsZWFzZTIxLW1haW50CisyMTc4NiA5MjBlZTdmMmE1OTIyZTY4NWVhOGM1NDMyMDdkOTNlYzY1YzYxN2VmIHJlbGVhc2UyMS1tYWludAorMjE3ODcgMmI1ZTczODNjNzdhMTZmMzRlZGU0ODc2ZTNmZjgxZjhkN2Y1ZjRiMCBsZWdhY3ktdHJ1bmsKKzIxNzg4IDI5NTUxOGU2ZmNlYWJlMTkwNzYyNWQ4NTRiZWQ5OTAyMmFmZTBmZWUgcmVsZWFzZTIxLW1haW50CisyMTc4OSBjMDZkODE3OWU5ZTNiMzM2ODk2YTU2ZDlkMjA4ZDM4NmQxNzg1OTg3IHJlbGVhc2UyMS1tYWludAorMjE3OTAgOTE0OTQwOTQ2ZTJlYTFmY2NhZTAwM2ZjMDEwM2RiYzgwOTBlY2I4MyByZWxlYXNlMjEtbWFpbnQKKzIxNzkxIGM5YjRjOGFlNjE3OTIzMDUxYTYxZmYyNjMyN2I4YzgxZWFmODExNjMgbGVnYWN5LXRydW5rCisyMTc5MiA0MDMwYzkwMTkwNjdjNWMyMDY3ZTg4MzBhMzJmMDFiMGM2ODRlMjU0IGxlZ2FjeS10cnVuaworMjE3OTMgZmRkZTlmYWNiYjZlYTdkMTU1ZDBkNGRlMjhhYzZjYzFlZDZlMDg2ZSBsZWdhY3ktdHJ1bmsKKzIxNzk0IDc3YzgyODI0ZGY0MTI5ZjM3YmRhNjExOTc3YWIxOGQzODgxNDQwZmYgbGVnYWN5LXRydW5rCisyMTc5NSBkNTlhODQ3NmFmYWI5ZGY1NGFhMDQxOGVkNWNlMDQzYzdhMzcyZTIxIGxlZ2FjeS10cnVuaworMjE3OTYgYzhlNDcyOGQyYWIwZjNjYThhMGQyYjIxNjlkZmZhNGMwNWNlZjU1NSBsZWdhY3ktdHJ1bmsKKzIxNzk3IDFkM2M1N2NjOGQwODVjODY4N2I3OGQ4OWU2OThhZDBjMzM2ZGQyNTggbGVnYWN5LXRydW5rCisyMTc5OSA5ODNhY2FjNTY0NjZiM2JjZmNkZGQyYzQzMTgyOTBlYTdjOTUzNmRjIGRlc2NyLWJyYW5jaAorMjE4MDAgMDVjZjZiM2U2M2RlNTU0ZTE3YjkzNTY2NTM0NDBkNmJjNTNkYmE0MyBsZWdhY3ktdHJ1bmsKKzIxODAxIGU1M2JjYmMzMTY1ZTM5Njc5YWY2Mzg5OTNlZTI1YmI0NTA3NTZjY2YgbGVnYWN5LXRydW5rCisyMTgwMiBkM2MyNWIwNmI3ZTViNDRkYzUzMDFmZGZjYzI2NDg4MDA5NjY1ZGYyIGxlZ2FjeS10cnVuaworMjE4MDMgNTdlNTk1MjVkMjE3ZGZjZTM1ZDE4YTQ2ZWI4ZDI0OGViYWI4Y2VlZCBsZWdhY3ktdHJ1bmsKKzIxODA0IGZkZjhkMDgzMTI3ODk1M2EyODU3OWMxZGNhMDMyYjcwZDcwNWQ1MzQgbGVnYWN5LXRydW5rCisyMTgwNSBmNzE5NjQ4NmY0MmQxODA5ZDVlOGE0YTZlZGQ3YzFjY2FmZDUzNTJhIGxlZ2FjeS10cnVuaworMjE4MDYgNmE1MDkxMGNhMzAzYWQwNGEzN2NmOWQ4YWVmZTk5YzNlYTZjOGNmZSBkZXNjci1icmFuY2gKKzIxODA3IDU1NzE3ZGMyMjdmNGRlMTBiNDkwYzhmNWY2MzNiNWQ2NWNiYzFlYTIgZGVzY3ItYnJhbmNoCisyMTgwOCA5NGZiY2YxOTY1NDk1NTdiOGUyNzFmYjZkOWVhZjY3ZThkOWRhNTdmIGRlc2NyLWJyYW5jaAorMjE4MDkgMDc3MmVhYTE3NjMxOWFiNGZmYzU5NDhlNjgwMzhmZWUwNDUwNzc4NSBsZWdhY3ktdHJ1bmsKKzIxODEwIDczMzVhYzdjNTMxNTdmYzAwZDljMWRlMzhhNTIwYWEzODhmYmEwN2QgbGVnYWN5LXRydW5rCisyMTgxMSBjYjVlYTRkOGU4YmY5ODExZDY2NmRmNDRjM2I0MGEwYzc2OTQ0M2E5IGxlZ2FjeS10cnVuaworMjE4MTIgZTVhMmU4OTE2ZTBiNGU2NGMzZjI3ODBiYmUyNTA0NjYxZTM3YjE3YSBkZXNjci1icmFuY2gKKzIxODEzIGM0M2ZlMjEzZWUxMDhmNTM1MzM5YjliMjkzYjU1NzljZTZiNGJhZTQgbGVnYWN5LXRydW5rCisyMTgxNCBhZDgyY2FmZTQ1YWNmNDkxZjg5ODYxNWRhZjkyYTNjMmQyNzQzOTQzIGxlZ2FjeS10cnVuaworMjE4MTUgMzM4MThlYzYzOTViYWQ5MGE4ZGNjMzI4ZmRiYTVmMzIxNDc1ZmRmMyBsZWdhY3ktdHJ1bmsKKzIxODE3IDFmMWM3OGJhNTdmZjQ1N2Y2MDBhMjRjNTQ2MzU2MjkzODY0NWQ2MTEgZGVzY3ItYnJhbmNoCisyMTgxOCBkNjIzM2Y3Yjc0YzE4ZmU1Y2FmNjQ0NTc1NjE1N2YxNzYyM2VmMzZhIGRlc2NyLWJyYW5jaAorMjE4MTkgOGFhNjNhZWE3MjY5NTk4YTcxM2JlNDQ3NDg2YWM1NmU4OGE4MjAxNyBsZWdhY3ktdHJ1bmsKKzIxODIwIGNiNjZhOTgzMDk2ZjdjZjM5NTE1YjRjMzNhZTRhZWUxNTY2YzUwYzUgbGVnYWN5LXRydW5rCisyMTgyMSAzYjg4ODg1OWQ1MmIzYTYwN2JjODViNTlkNmE4Yzg5NDBkZWFlMGMzIGxlZ2FjeS10cnVuaworMjE4MjIgY2E4YTQ4YWJhMjJlY2UyOWJkNjc3MDlkNTVlYWI5ZDU4ZGZlMWNlNSBsZWdhY3ktdHJ1bmsKKzIxODIzIDVlYmVlNWMwNjBkMGU3ZGIyMThjN2MxYmZlMjEwOGRhNWE3YjY0ZDIgbGVnYWN5LXRydW5rCisyMTgyNCA3NDhmNmIzYThiZjYyNzQ4MWYyOTc2MmRlYjIyNTQzOGMyY2M5ZjA2IGxlZ2FjeS10cnVuaworMjE4MjUgYWMxMWFmN2Q4NjBhMzVmNWNlNzY2OTQ3NjE0ZGUzZmM1Mzg1NTEyZiBsZWdhY3ktdHJ1bmsKKzIxODI2IGZjZGI4Yzk0YjVkOGYzM2RlYjhiNDY3MGI2ZjI3Y2VmY2M3YjllOTggZGVzY3ItYnJhbmNoCisyMTgyNyBjZDYzOWE5NDcxYjhmNzkwNWVmNTgxZWM5NDZhOTBhYzBmYzEzN2VhIGxlZ2FjeS10cnVuaworMjE4MjggZTYzOGYxMjA2ZWUwYmQ5OWE5YTkxZjI0NTJkODkzOGQwYTUzYTJhNCBsZWdhY3ktdHJ1bmsKKzIxODI5IDcwMjc1MDM3ZjEyZDhkZWQ2YWQyMmJjYWY5M2FkNzQzMjNjMGZiOGUgbGVnYWN5LXRydW5rCisyMTgzMCA3NDYyM2IwNzZkMWJlOWUzM2QwOGZjZGY2NWUxMWQ3ZWZiNmVjOTY1IGxlZ2FjeS10cnVuaworMjE4MzEgOTVkZGNkNDQ0ZDM5MmZiYjEzNmM3NjdiMWEzYTIzN2FhMTQ4MmExNiBkZXNjci1icmFuY2gKKzIxODMyIGQ4OWU5MzZlMWIxMDY1YzVmNTcwYzAyNTllNzMzMDJkZDY0M2M1ZGEgZGVzY3ItYnJhbmNoCisyMTgzMyA3MDcxMWE5OGQ5ODk3Yzg5Mzc5YmFkMDRhZmU0MzljMzE1ZGM5ZjhiIGRlc2NyLWJyYW5jaAorMjE4MzQgZTA5YmVlOWI1NzI5MmQ3NjEzZWU3NjI0NGJlODQyNGE1Njc0N2FlMiBsZWdhY3ktdHJ1bmsKKzIxODM1IDU4NGJlMGJiZDk0MmI2NDU1YzM5OTJmYWI0ODZjZjE2MTZjOTBlOWMgbGVnYWN5LXRydW5rCisyMTgzNiBmNjVjZTU5OTA1NDdkNTEwNGNhZGFmYTAwOTY1MmM2ZWY4YjYwMTE4IGxlZ2FjeS10cnVuaworMjE4MzcgYjc3NzVlYmJmNDQ5MDk5YTRlMWIwNTQ5ODI1ODUxNWNmMGU2M2Y1YiBsZWdhY3ktdHJ1bmsKKzIxODM4IGYxNDgwMDIyOTY3N2RlYTBhYWI2ZThmNWE3ZGIyZjRmYjk1OGZkODggbGVnYWN5LXRydW5rCisyMTgzOSA5MjYyNmY0MmUwNDMzY2VmNjZmNWRlNjYwZGVlOGE0OGI2NTI4NTZmIGxlZ2FjeS10cnVuaworMjE4NDAgNWZjMmJhMWMzZjI0MjNlZTkzOTMwMzMyOGJkYTY2YTU4MWUwNmJlMyBsZWdhY3ktdHJ1bmsKKzIxODQxIGEwMjc3OWZkOWI5MjBlYjdmYTk1Yjc5YzVjNDEzMmI5ZTU5Mjg3ZWYgbGVnYWN5LXRydW5rCisyMTg0MiAxZjk3NDNhMWVkN2IwYjA4YWE5NDE4YjhlNzNkNzJiMjJjMTU1MjJmIGxlZ2FjeS10cnVuaworMjE4NDMgNmQ0YTUzMGZlN2MxNjIyMTExNjg5ODBkNmUwYTkxMTlkNGZhYjE5NCBsZWdhY3ktdHJ1bmsKKzIxODQ0IDM4NGI5MTEzYTJlMGM2OWFkZmI0MmQ1YTcxZDkyMDMyYTFkMmE3ZDAgbGVnYWN5LXRydW5rCisyMTg0NSA3OTI3ZThjZjQ2MTUwYWM0ZDEyYWUwODcyMmM3Zjc1YTkzOGM5ZWU4IGRlc2NyLWJyYW5jaAorMjE4NDYgMzgyMDZmMjliMGZjMWM1NDc1ZDc3MTg1YWFiYTUzZjIyMmNmMWJiOSBsZWdhY3ktdHJ1bmsKKzIxODQ3IGNmYjU3ZGI0YzM4OGU3NTVmOWRlMWEwNWQ3MmVhY2NlNjBiNjM4ODEgbGVnYWN5LXRydW5rCisyMTg0OCA0OTJhMWJkNGQwYzVmZTFhMmRmYzZkYmMxMjE1N2Y1YWU1YjNkOWJmIGxlZ2FjeS10cnVuaworMjE4NDkgOWVlOGYxNmIwZTI3MmY2OWVhNDQwYWY1OGYyODk1N2I4NTA2NTg0NiBsZWdhY3ktdHJ1bmsKKzIxODUwIGY3YmU3ZTlhNmYyMDI4MWNiYmU1NjgzYTBkMTgwNTg1MWJiOTJhYmMgbGVnYWN5LXRydW5rCisyMTg1MSBkM2JjODJkMWM1YTkyODU1YzA0MDg3NDQzY2QxZTkyYzliNzg0NmY0IGxlZ2FjeS10cnVuaworMjE4NTIgZTQyMWFhNDUwNDBjZDA4NjkxY2EzODIyNDk1NWYyNTczYjJhYzBjNiBsZWdhY3ktdHJ1bmsKKzIxODUzIGE3YmMzMzllZTJmMzUwODk3Y2E1NzUxY2EzYzExNjMxY2YyZmExZTggbGVnYWN5LXRydW5rCisyMTg1NCAyYmExZDlkOTk2YTM4M2VlMjEyNGRjM2I3NzE2MWU3Zjg2MzZhNWZjIGxlZ2FjeS10cnVuaworMjE4NTUgMDUwNWQ5ZGM4MzNkNzQwMzU5NTI4MzUzMzFkYTJjZDRjZTZhZjZlZSBsZWdhY3ktdHJ1bmsKKzIxODU2IGM2NTlkNGMwMDljYmZiMzdmMTQ0Y2Q4ZjA2ZDg2OTk5ZWQ3MTE3M2EgbGVnYWN5LXRydW5rCisyMTg1NyBhZDJmNTI2ZjAwMTlkNDE5ODFlOTkyMDgwNDI3NTI3ZWFiZTQwOTkxIGxlZ2FjeS10cnVuaworMjE4NTggOGNhNzBjOWMxOTcxMzc2ZTU0YjU1NTU5NjRiOTgwZmExZWJmYmJmNSBsZWdhY3ktdHJ1bmsKKzIxODU5IDQ3OTMyZDgyYjhlYjFmZjYwMThhZDFjOGFiZDMxZTZkNzAxYzQ2NTYgbGVnYWN5LXRydW5rCisyMTg2MCBhMzhlNzcyNDBhNjczOTgwZWU4ZDk4MTgxNDYxNWYzMTI3MmQyNDQyIGxlZ2FjeS10cnVuaworMjE4NjEgNTRkMDQ1OWM4ZTBmZGJkNjNjMjRiZWEzYjQ1YTU4NzY1MDE1NzhkOSBsZWdhY3ktdHJ1bmsKKzIxODYyIGZkNzRjYjViOTU3MzJjODlmNGY5MGY2ODNhMmE1NTAxNjQ4YmQ4MWYgbGVnYWN5LXRydW5rCisyMTg2NCAwOWM2ZmU3ZGJiMWM1M2NkN2FlMWU4NWJkNDEyNTYxODVlNmIxZTM5IGRlc2NyLWJyYW5jaAorMjE4NjUgNDVmNTNmZTQ0YzBlNmQ1Y2E2YzUyZjQ3NGI0NDI0YjFmNjVlYjE4NiBkZXNjci1icmFuY2gKKzIxODY2IDYyZTI0YmM0N2I2MjA3MmQzMTU3NDEzZTQyNDIwMmRkMzlhMmNhNWQgZGVzY3ItYnJhbmNoCisyMTg2NyBiMjFkZjA5MWZiYmZkNmQ3YzdmZmU4NjgxNmM4NGJlNDFlNDEyYmMxIGRlc2NyLWJyYW5jaAorMjE4NjcgZDI1MDk1OTEzM2I1YTk5NmIxZWRmOGE0NzcyZmEwMmU1OGEzYTk3MiBkZXNjci1icmFuY2gKKzIxODY5IDRjNTllOTM0ZTc2NWRlNTAzYmU5MzY5ODk4ZTY5MTE2NjlmZjdlOTIgbGVnYWN5LXRydW5rCisyMTg3MCAwNjRkZTg0Mzg1Y2FlYTBkMjdkN2U1OWQwNGU2YTljZmEyMzg5MzdjIGxlZ2FjeS10cnVuaworMjE4NzEgNTFjMzgyZDU4NTFiOTE5MmY4NmQxYzQ1YzYxODJlNzk0YTViOGFkNCBsZWdhY3ktdHJ1bmsKKzIxODcyIDA3OTE3ZjE0MzQ4ODYyMTYwM2VjNTY3MTlkNzk5Yjc0MGQyMTNmMjIgbGVnYWN5LXRydW5rCisyMTg3MyAwMDY5NTU1MWQ3MjEyMTE3MDVkZDczYTIyNTE2MzJmMjFkODZiZDk1IGxlZ2FjeS10cnVuaworMjE4NzQgNDM4MTQ2MWNjZTVkZjkyY2UxMzVkNWE0ZDRiYzNmMGYyNmU3ZjE1ZiBsZWdhY3ktdHJ1bmsKKzIxODc1IDkyMThmYTY1MjM5MWYzYTg5MWM3MjRjNGI5OGQzN2Y4NmI3Y2M0NzUgbGVnYWN5LXRydW5rCisyMTg3NiAyNTI0NGJkYjE2M2Q5MjFlMjEzMGNlNmFlMGUwMmUyYWYzZjYxYTQ3IGxlZ2FjeS10cnVuaworMjE4NzcgMWMyZGE3OGI4MzliOWIwNThkNjZiNjczNWEyOGU1MGYwNjUwY2IyOSBsZWdhY3ktdHJ1bmsKKzIxODc4IDY3OTRkY2FlNWQwY2Q5ODRlMGQwZDc0ODNhYTVhZTgyNDhkMGJiMzYgbGVnYWN5LXRydW5rCisyMTg3OSBjNzY2NzU2ZDg0ZDMzNzU4MzM4ZTk0OWY0YWU3ZWJkMmQ3YzVmNzAwIHJlbGVhc2UyMS1tYWludAorMjE4ODAgZGFlYTk0ZjA2NDI5NjA5ZjRiZmJkZDliZmI2NDBjZTc5MzYxYjgzOCByZWxlYXNlMjEtbWFpbnQKKzIxODgxIGExZjE5ZWUwMWFhZTBkNWVlM2MzMmI5N2VmYmMzYzNmMWI1MzFmNTQgcmVsZWFzZTIxLW1haW50CisyMTg4MiA1MzU0NWMzNzFmZTM4NDBkMTIwOTQ3YzU5MWM0MGMzZDgyZTE2OWQwIHJlbGVhc2UyMS1tYWludAorMjE4ODMgM2NkMzA4MWRmNjAxYzIwYTkyZjgxYWY0MjUxODhhYjE3YzA3MjNiMSBsZWdhY3ktdHJ1bmsKKzIxODg0IDk1ZWE2MTBmM2Y1NGQ3MmFjODY2ZTM0OTdiODE2YjgxMjVlN2RkNjEgcmVsZWFzZTIxLW1haW50CisyMTg4NSAzNmM1NjFlZTk2YjUzMjlmNTBiMDMwY2RiOTNmNWE5YmJlZjAzM2ZlIGxlZ2FjeS10cnVuaworMjE4ODYgOGRmNzc0MTVhNjFkNTY0Yzg2Mzk1NjgyMzU5YjRjYzFiOGNmNmZhYSBsZWdhY3ktdHJ1bmsKKzIxODg3IDAzYzIwZTdjY2U2YWNkNGQyODA0NDgwZGI0YjdiY2JlMWRkOTM1ZjYgbGVnYWN5LXRydW5rCisyMTg4OCA3MGUxODU4YWQ3MDMyMjFhNjI2MDgzN2VjYWI5Mjk4ZmM4Zjg4ZDUyIGxlZ2FjeS10cnVuaworMjE4ODkgMjM3MzY4NjQ0YzEzZDUzN2M3YzJjYzg3M2E1OTMzMTVmNDQzMjUwOSBsZWdhY3ktdHJ1bmsKKzIxODkwIDcyNmY0ZDA2YmQ0YmQzODgwMjkxZWNhMTYzN2NhOWUyMDU1MWIxNTIgcmVsZWFzZTIxLW1haW50CisyMTg5MSAyNGQwMDU1N2ZiYzk1YWE3ZmQxZmRhMzM4MTJmOGI3ZTEwMGMyOWFkIHJlbGVhc2UyMS1tYWludAorMjE4OTIgYjA5NDk2NTk2MGFmOTFkMGE5MzE2N2EyODlmZDE0NTllZWI0ZDM1MyByZWxlYXNlMjEtbWFpbnQKKzIxODkzIDRjMGFkYjhhNWJjNjUzOTM0MjhmNjQ1MWE0MDQ3YzhiNDczMzIxMzEgcmVsZWFzZTIxLW1haW50CisyMTg5NCA4Y2Y1M2QwZjg1Yzg3NGU3YTFlN2Y3YzAxNWZlMmEyNGQzYjVkZWRmIHJlbGVhc2UyMS1tYWludAorMjE4OTUgNWM3MzYyMWM5NTU5YjU4ZmJmY2MwNTY5Y2Y3ZDgzZTA3YTU5NzE5YyByZWxlYXNlMjEtbWFpbnQKKzIxODk2IDViMDc0NzAyMzlkYjg5MjRiODczNjQzYmY0NjczMzM0ZTk3OWI2MTAgbGVnYWN5LXRydW5rCisyMTg5NyA0Y2E5YWNlZDU1MDM3Y2YzMTY1NzE5OTcxYzg0MzYyY2FlZWEyNDcxIGxlZ2FjeS10cnVuaworMjE4OTggNTUzMjBkNjI5MWM5ZjVhYjhlOGQ2MWVlNDUwYmViYTYxZjc0YjcyMiBsZWdhY3ktdHJ1bmsKKzIxODk5IDNjMDUwZDFlMzViMTAyYTk2Y2QxMzEwNWRkMWI4MzhmZmRkZjliNjcgbGVnYWN5LXRydW5rCisyMTkwMCAxMWY0Y2Q0NWE4MGMwNzgzN2QwODQ5NWRjZGVkOGQwNGZkZmY4Njg3IGxlZ2FjeS10cnVuaworMjE5MDEgYmFhYWM5NGZlYzU0NzUyMGFmZTcxNjY0NmRmNTI0ZTQ2ZTY4YjU3NSByZWxlYXNlMjEtbWFpbnQKKzIxOTAyIGVlOWI0NTgwNDMzNzcwYjQyN2RlNmYyZWUxZDI3MzI5ZjZjNWYwYTkgbGVnYWN5LXRydW5rCisyMTkwMyBjYTlkN2E2Mzc5NGYwMTViOGI4Yzc4NWU1ZDEzOWU1N2E0YWM4OGExIHJlbGVhc2UyMS1tYWludAorMjE5MDQgOTE3MTY4ZmJmZDk0YjNkZjdmZTZhM2U4ZWIzMWRlODIwOWZiMjE4NCBsZWdhY3ktdHJ1bmsKKzIxOTA1IGE1NTdlOTViOTJmMGJkZjJlZTFlNTcxOWIyOGRiZjYyOWIzZmVkYjggcmVsZWFzZTIxLW1haW50CisyMTkwNiBhZTY3NmNmMTQ5NWQ0ZmNmZjM3ZTc4OGNjZGE1Mjg4ODc1MmE5NDczIGxlZ2FjeS10cnVuaworMjE5MDcgYzc4MGM2MWIzNWNlYzk4ZGI5MmU5M2I0ZjViZmUyODdhODMyNGYwOCByZWxlYXNlMjEtbWFpbnQKKzIxOTA4IGFkNmM1YzI3ZWNiZTYzZTg2MTZhMjNmMzY4ZWExOWUwOWRjODE3Y2EgcmVsZWFzZTIxLW1haW50CisyMTkwOSBmOGUyODY5OTc2YjBlNTA3NTA5MTQ1MjIwYWE2Yjg1MjI0OGE1ZDgyIHJlbGVhc2UyMS1tYWludAorMjE5MTAgZDUxYjJkOTMzODE0Nzg2MTljMjdjZmE0ZDMwYmRmNWU5MDRlMTJkYSBsZWdhY3ktdHJ1bmsKKzIxOTExIDMzNWU3NWJjYjUxYWQ4NmUwMGJiNzU4ZTQyNWU1MjQyNjhjMDljNjEgbGVnYWN5LXRydW5rCisyMTkxMiAyY2U2YTliMGE1MWQ2ODQ3NzkyMDc1MDRhOWM5MjI0NmExZjQyMDBhIHJlbGVhc2UyMS1tYWludAorMjE5MTMgMTQwYjcyOTEzMGQwYzVmMGJlMzI4ZGRmNTcyM2JmMzQ0NDQ4OTg3OCByZWxlYXNlMjEtbWFpbnQKKzIxOTE0IGIwMzI5NjQ5YjhjZmNmYTViYTM2MWZhMTYyYWU5NDc2ZmVkNWQ2NjEgbGVnYWN5LXRydW5rCisyMTkxNSBjMjVmMmMxM2QzODA2ZjRjMzg3NjU3ZWNhYjM5ZTU2Njg5MjRkMTQwIGRlc2NyLWJyYW5jaAorMjE5MTYgZGY0YjZiNWVhOWI4NWM1Yzc4YjhkZmU4NzBlOTRhNDU3Yjk1YTQ4NiByZWxlYXNlMjEtbWFpbnQKKzIxOTE3IDU5ZDE0Yzg4NjUxY2I0NDRjYTBlOTI1NzVhYmExMjViNDExNzVjZjAgbGVnYWN5LXRydW5rCisyMTkxOCBmZWM4ZjQwMzVmYjI4NjZhZTQ1ZTgxNDgyM2RlNjkxYzlhYWU3NjU1IGxlZ2FjeS10cnVuaworMjE5MTkgZGU2ZjE1ODk2ODYxOTgwY2E4ZDcyZjNmODFkM2E3N2Y5MGMwMDUyZCBsZWdhY3ktdHJ1bmsKKzIxOTIwIGIyNmZmMTY0MzIxMWYxNGMyYzYwZDRhMzhlOTExYzljZDIxMWUyZGUgbGVnYWN5LXRydW5rCisyMTkyMSA3MDQ0ODY2NDIwNzlmZTYzMTM3YzNhMTM4NWU2MWI2MmQxZDkzMzg0IGxlZ2FjeS10cnVuaworMjE5MjIgMWFhN2UyMTlmNTJkYzgyYTlkNTZjNjgwNDgyZWNjOTZkM2E1OTlkYSBsZWdhY3ktdHJ1bmsKKzIxOTIzIGM3Y2IxYzllOWQ5YzU3ZGI1MjYxNzViN2YzZmZjZDI4NTJiNTkyNGUgZGVzY3ItYnJhbmNoCisyMTkyNCBjNzEyYjE2ZmZhY2Q2M2I1ZDYyODJiMTMzOWQwMTI2ZGJiYTQyNmFhIGRlc2NyLWJyYW5jaAorMjE5MjUgYjE0MmI1MTczMDljNzUyZDExMWE1NDU1MjQwZWVhODQxMWExZTA4NiByZWxlYXNlMjEtbWFpbnQKKzIxOTI2IDkyMGUwMzYxZGQ2ZTNlNzQyY2Q1MDMyYzRjZTcwNDU2ZWM4NDEwZjggbGVnYWN5LXRydW5rCisyMTkyNyAxMzNlNTcwMTUxMDE0ZjlkZjA3YTIyMDZkYzIyNjE0NjMxYjZmZDY4IGxlZ2FjeS10cnVuaworMjE5MjggOGNhMmVmNjYzYWQyMGNiZDllODIwM2I4MmRmODlmNjk2ZDM1NDJjOCBsZWdhY3ktdHJ1bmsKKzIxOTI5IDI3NmJmNTk2ZThkMTgwODYxNThlMGViODYyMWM4OGJlODdkYzJiNzAgbGVnYWN5LXRydW5rCisyMTkzMCBkZjljNGM1NGVmM2VmOWQ2MzQyNTg1NzNlYmEyZmY1ZmM2NThhNDdmIGxlZ2FjeS10cnVuaworMjE5MzEgNzRiN2I4YTk2MjhiNjYyMDBmMDE0MjI3MDAzOWQzNGIyNmQ2ZGI1NSBsZWdhY3ktdHJ1bmsKKzIxOTMyIGU1YmFmZGRkMWRhMDQyZTljNDBmMGE0MWQwZGExY2I5NGJjZmRjYmUgbGVnYWN5LXRydW5rCisyMTkzMyBkMDkzOGJjMTJhMTFlNjdiM2JlMDhlMWViYzYwMzU1MzE1MDQ0N2E0IGRlc2NyLWJyYW5jaAorMjE5MzQgYzZlZjcxZTk0M2RkNjQwYjRmZDIxZWUzYmI5MmZkNjNmYWVhODM2MyBsZWdhY3ktdHJ1bmsKKzIxOTM1IGFhYzYyYWFhODQ2ZGVmYWQwYmM0NTU0OWNhMzM0NWZlZjI3ZDRmMmQgbGVnYWN5LXRydW5rCisyMTkzNiBkYjY0N2Y3YzgzMWJjNThhMjMwMjZkYWZiYWU3NDM4ZWYwNjJjMTNhIHJlbGVhc2UyMS1tYWludAorMjE5MzcgOTJmODE0NDllMTZjMjFlN2Y4Zjk0YTQ1YzRhMThhMTExMjE4ZmY4OCBsZWdhY3ktdHJ1bmsKKzIxOTM4IDAxNjkyYmYwMmY5Nzg1MDU1N2E2ZTQ0Yzg4NjYyZTMxOWJkZjEzZjcgbGVnYWN5LXRydW5rCisyMTkzOSAzY2QwM2E2NGMzMzhjMDAzNDM5OGEzMjQ2MjFkOGJlMTYzMWZkZTc5IGxlZ2FjeS10cnVuaworMjE5NDAgZjhiZDE0YWVmNGQ2ZmI1ZGRmNGU5ZDdjNzI2ZjJmZDg2ODljNDk3YyBsZWdhY3ktdHJ1bmsKKzIxOTQxIGFmOWFkOTBhNDQ0NThiNmUyZDQ4Y2NkOGRkZTFjMzE0MzgyZDY1ZjcgbGVnYWN5LXRydW5rCisyMTk0MiA0ZDQ2YTFiMzNjNjIxM2JlMDBlN2U3Yzk0NTllNGNkM2QwZTMzODRmIGxlZ2FjeS10cnVuaworMjE5NDMgZTcwOTI5ZTEwNjYzY2VkZGE4MGI2YjQwYzRhNzQzYjhlNTU3OGI4ZiBsZWdhY3ktdHJ1bmsKKzIxOTQ0IDgwMmE4NGU4NGVhOTQyZjYwNjQwOGQxZDQ2NjcyMzRiYjU2MWYzNjEgbGVnYWN5LXRydW5rCisyMTk0NSAyOWUwOWI5NmVkMzYzNWE5M2MzOWNkZWRjZjdmNTVkNjEzODUxMzM0IGxlZ2FjeS10cnVuaworMjE5NDYgNzRkZmUzMjAwNDIzZGQzNmMzY2FhMGRmYmZiYzRjNjIwODg0NzM0MyByZWxlYXNlMjEtbWFpbnQKKzIxOTQ3IDFkNTA4M2U2ZDE3ZTZjY2U1N2U2YTlhMDBjMmI4M2JmODM4MmQxMTEgbGVnYWN5LXRydW5rCisyMTk0OCA2YmVmMDlkYTliOTMyNGYyODJkOWFkNmIzM2YzNjQyOTc1ZjdhZjU4IGxlZ2FjeS10cnVuaworMjE5NDkgMGViZmIyNTllY2M2NWU4Y2MyNzE1ZTZhNGU5NTk4NDBlMDk3OWZkMyBsZWdhY3ktdHJ1bmsKKzIxOTUwIGNiZDIyYzkwMjdiMmIzZDNmMzQ5NjY2NWY5YTAxZTQ2NDJjYWJhZDIgbGVnYWN5LXRydW5rCisyMTk1MSBmZjhlMGNlMWQ5ODY5ODA2ZmM2OGQ2NTI2YWQ1YjAwNmNhNWFiNjExIHJlbGVhc2UyMS1tYWludAorMjE5NTIgMTQxYmQ3MGUwYjcyMzA1OWM2ZGQ1NDhmYmM3OTdkNGVjNDBhZTY4NCBsZWdhY3ktdHJ1bmsKKzIxOTUzIDJlMTczZGExMWQyZDE0NmM4YmI4MjNhNzJmZmM1OWYzZDY4NzFiZmYgbGVnYWN5LXRydW5rCisyMTk1NCA4MjQyOTA3Yzg5NTczZjhlZWIzNmFjZTIxYjRjMDkyOTE1Mzc3ZmY3IHJlbGVhc2UyMS1tYWludAorMjE5NTQgNTcyNTMzYTMwMzhkMTgzMmM4YTIwMGZiODcxODExMmRkODM3NThlOSByZWxlYXNlMjEtbWFpbnQKKzIxOTU2IDc5ZDMwNGUzYmEyNTdjOTBjYTkxNGE5ODUyZmYxNGI1MWQ1YjVkMWIgbGVnYWN5LXRydW5rCisyMTk1NyBiMTBmZjMzNzg5NmJlNTc3ZWQ3YzNlZjQwMWIzZDlhYjYzZGI1NmQwIGxlZ2FjeS10cnVuaworMjE5NTggNWRlMjNhNjM4YWQ2NGU5ZjU5NWRjYWQ5Nzc0Y2QwMmYzN2E5YTliMyBkZXNjci1icmFuY2gKKzIxOTU5IDc0M2Y4ZTFkOTUzY2JjMWJlZjY4OTRhZWMwNmUwOGFiMmE4ZWE3YTEgbGVnYWN5LXRydW5rCisyMTk2MCA1NzY4NGQzY2VmY2U5MWMwMzkxOWIxYzUxZGI0M2Q4ZGM1ZjU0Y2FjIGxlZ2FjeS10cnVuaworMjE5NjEgMmQ2ODYyNjE0M2E3OWM5ZmFmNzFiMDllN2JjNGM1Y2MwNDEwOTliYiBsZWdhY3ktdHJ1bmsKKzIxOTYyIDIyYjJmNGI0MzZhZmY4MzkwMjVhNTM3N2M5NmQzMTMwY2ZiODk1Y2YgbGVnYWN5LXRydW5rCisyMTk2MyA0ZDMzYWNiZGM1MDhmNGJkNzk2YmYxYjhmMmNiYjA0ZDgzNzY1ZWEyIGxlZ2FjeS10cnVuaworMjE5NjQgMjNhZTQ3ZTAwMTE5ZjNjNjk2MmViNzQ4ODYxOTA1MzgxNjRjMzdiOCBsZWdhY3ktdHJ1bmsKKzIxOTY1IDQ0MTU1MTIxZjAyYjFlMjgzNzQxZjU2MmIyMjQzYWI2YjUwZmNhNTAgbGVnYWN5LXRydW5rCisyMTk2NiA1ZWI0NjBhNjVmZjcwYTM0ZTVmNDU4ODVlOWMwNzljNjQ1ZDU5NjA3IGxlZ2FjeS10cnVuaworMjE5NjcgMDFhZTk2MmRmODg1ZTRlNmU3YmNjYzhmMjU1NDYxMDIzOGNjMzE3NCBsZWdhY3ktdHJ1bmsKKzIxOTY4IDk4NDg0ZWYyMjVmOTI4OWY2MjE4MTU5Y2E3ZjNiODRmNzE2YzgwMDcgbGVnYWN5LXRydW5rCisyMTk2OSBhYzEzYTZjZTEzZTI0Y2QwZGFhMThjZjQwMmM4OGMzNzQ1OTRmYzU2IGxlZ2FjeS10cnVuaworMjE5NzAgMDFjNjM5OTcxYmZmMTNiZmQ1NGY4NDQ5NmU4MmJlYzk2MDUwMjE5OCBsZWdhY3ktdHJ1bmsKKzIxOTcxIGI0NjVjZDUwY2YzNjRhOTYyMzVhYjIzN2M0NTRkOTk2OTdhZWYxNzkgbGVnYWN5LXRydW5rCisyMTk3MiAwZTIyMzEyYzQ3MzM0YmJkODljYjlkZTMyMWI1M2NkNTVkZTA2YzdjIGxlZ2FjeS10cnVuaworMjE5NzMgZjk5OWQzNjA5Zjc0NjZkYzY0NTI3MzJmYjdhNWJkNTczZjAxNTgwNCBsZWdhY3ktdHJ1bmsKKzIxOTc0IDI0MDIwNzBlZTAyNGMzMmUyMWJhNWMwNzc4ZjAyNzU2NGNmMDdlOWIgbGVnYWN5LXRydW5rCisyMTk3NSAxOGRmMDk3OGRlNWQyZTExMjI4NzZkZmRjOWQyMDU2YWUyODY2MDI2IGxlZ2FjeS10cnVuaworMjE5NzcgYjMwN2U1YThiNGQ4ZDU5MWY5ZmU5NDYxODkyYzJlM2Q2MWRjYTYxNyBkZXNjci1icmFuY2gKKzIxOTc4IDAxNDYzOWRjNjVmOGM3NjRkOTE2NGJhNGI0ODRmYzIzODVmZDc3OWYgZGVzY3ItYnJhbmNoCisyMTk3OSA3Y2QyMmJmNTZkN2JjMjE4MWM0MzJkZTY3N2Y1MDlhN2NhYThiMjEyIGxlZ2FjeS10cnVuaworMjE5ODAgZDExMTk2MzNhNzNlOWNkZGE2YjdkMWRmYzQxY2Q1YzU5MGFkNWFiMiBsZWdhY3ktdHJ1bmsKKzIxOTgxIDAyYjgxZGYwNDhiYzU5ZjY3ZmM2OWE1YzEwNmYyM2U0MmVlNjY4NjYgbGVnYWN5LXRydW5rCisyMTk4MyBjMmZiYjU5NDFlZTU2ZmI4YTk4NTZlOTNiMzAzZDQ0N2YwOWMyZmRmIGxlZ2FjeS10cnVuaworMjE5ODQgNGQwZWE0YzIzODZkNWQ4OGM0MzM3MTkxZjBiMTc3MGE5Yjc3ODBmMiBsZWdhY3ktdHJ1bmsKKzIxOTg1IDNkNTNiNTlmNDhlNjZjODM1ZDAyODYzOWM4Njg4ZTYzYmE5MTBhNGUgbGVnYWN5LXRydW5rCisyMTk4NiA2MDQ3OTBkNDkzZmE3MzU5ZDY2ZTgyZjlkMDhmOTI4ZmNkYjJmYThjIGxlZ2FjeS10cnVuaworMjE5ODcgMThhM2UwZDg4MDhlMGY3NTU2NGIxM2M5MWU4YmMxMzBjYTdkYmY5OSByZWxlYXNlMjEtbWFpbnQKKzIxOTg4IGQ1OTFhOTZhZWQwNjQzZDU5ZWU2NzU0YmJlZmE2Y2NjYmNkNTFiZjUgbGVnYWN5LXRydW5rCisyMTk4OSA5NjQ1NWY0YWJhZGQzM2U3YmE0MTEwNGYwYjQyMjJlOTY3Njc1MTliIGxlZ2FjeS10cnVuaworMjE5OTAgNGE0MzE5NTI2NzZiNTdiMDJlYmIxN2IyMjgzNzkwNTc1ODViNzZjZCBsZWdhY3ktdHJ1bmsKKzIxOTkxIDZkOTg3NGJiOTc4ZmJmNWM1ZmQ5ZjYyZWU4ZTM3YWQzNWQ2YTZkZjggbGVnYWN5LXRydW5rCisyMTk5MiA5OThmODA1MTRhMTMxMjk4OGIzNTQ0OTU4MGQ0NDRjN2IwNWZkNjQ2IGxlZ2FjeS10cnVuaworMjE5OTMgNzYzYmI2ZmFlMjgwZmY3MDI3ZWQ3NGZlMDBlN2U0NTY2ZGVjMjk3MyBsZWdhY3ktdHJ1bmsKKzIxOTk0IDcwYjliNmY0ZTc5YzJhODI5NjRjZjk3ZTg4ZTdjMjQyZDQxMmZjMzUgbGVnYWN5LXRydW5rCisyMTk5NSA0NDYyYzU3ZjZjOTQ4ZGRkOGQwMjZiY2U2Y2U1ZDE2ZGZjYTcwNmNiIGxlZ2FjeS10cnVuaworMjE5OTYgNzRmMDUwZjdjMzY0ZGVmYjU4YzE5YTU3OGI2Zjc0NWYyNmM1M2Q4NCBsZWdhY3ktdHJ1bmsKKzIxOTk3IDFiNjg2OGU4OWEyM2U4ZjBhMGUwN2NhYjFkOGNlZWMyNzk0MmIyZjggbGVnYWN5LXRydW5rCisyMTk5OCBhOGIxYWNjN2EyMWY1NGQzZDUyZDRlZmVmNGUwNzNiODY0YzVkZWYwIGxlZ2FjeS10cnVuaworMjE5OTkgODEzMTViNmY5NDY5NTEwMjA3NGY0YjFjMDQ3N2YzMmMzM2E4ZTBkYSBsZWdhY3ktdHJ1bmsKKzIyMDAwIDQxMDA3ZDUwY2NiNzNkMjc1NjAzZGNlNjQwNjNmOWJmMTg4NGNiYjMgbGVnYWN5LXRydW5rCisyMjAwMSAyOWU2NjFjNTJjMGI1NWU5YjU4YmJiMTdmMDI1NmE3ZWI0ZmVlOWY2IGxlZ2FjeS10cnVuaworMjIwMDIgMGMzYWQ1MDNhZDZjNDkyMDI4MWUzNmNmOWUzOTg1MzlmOWYxOTQyYiBsZWdhY3ktdHJ1bmsKKzIyMDAzIGMzMDcxYmQ2YTcxMzMxOGNiMGFiNzllZjk2OWZjMzNmZDVjMzAwNjEgbGVnYWN5LXRydW5rCisyMjAwNCAxMDczMjY1MTU0MjVkYjc5YTkyOTQyYjA1NjkwNWI4MTZhODRlNzVhIGxlZ2FjeS10cnVuaworMjIwMDUgNjkzYjM5ODMxZjcxODEwNzI1NTc0NmUyMDE0NWI1NDY0NGNkOTE5NyBsZWdhY3ktdHJ1bmsKKzIyMDA2IDUwMDA0YmVkNGU2NWE5MTZiM2I1MTUyMzRhN2FmOWI5NTMzY2FlY2IgbGVnYWN5LXRydW5rCisyMjAwNyAzMTViM2NiMTI3YzA2MjIxZDg0MmVlYWVkYjViMDAwMTg0MjExMGMwIGxlZ2FjeS10cnVuaworMjIwMDggY2ViYjRlMTg3NDQ5OWQ0ODMwNTc3MDExNTUwMmI4NjIyYzY0YWUzYyBsZWdhY3ktdHJ1bmsKKzIyMDA5IGRjOWJhZjgwYzQ1YWZkOTI2NzY3OWE2NTY2M2Q5ZTFhYTQ3ZGRiMTAgbGVnYWN5LXRydW5rCisyMjAxMCA0Njc3ZDJmZjMxNTA4ZjVmYTZhYWI2NDBjNTgzNGY1NTkwNjMzZjQ5IGxlZ2FjeS10cnVuaworMjIwMTEgYTYzNjFjMmU1MDQ0YWNkNDQ3MWFhODU0OWMzYWQwNGNlMTBlOTk3OCBsZWdhY3ktdHJ1bmsKKzIyMDEyIDMzZjgyMDgwNTU5ZTE2OThkNDA3OTIzOTIyYzQwYzE3YWU2YWE2OTYgbGVnYWN5LXRydW5rCisyMjAxMyAzYWE4N2YzNGNhYjAxYjY0NGQyNjIyYTAzOTBmMTI2MWQzYzk0OTlmIGxlZ2FjeS10cnVuaworMjIwMTQgNmY5MjQyZDg3MDU5ZTg0ZmE4YThhYTY3ZWFlNDliY2ZkZWQ2MjY2NyBsZWdhY3ktdHJ1bmsKKzIyMDE1IDQwOTAwNjIwMjkzZTZkNmRjYzAxY2Q1ZGFjZmUyMjk2MDM5ZjExZjMgbGVnYWN5LXRydW5rCisyMjAxNiBiODBhYzhlMzFhODAyZWZlNzQ5NjBkMzM4NzUyODEyNDMzMDM3NTczIGxlZ2FjeS10cnVuaworMjIwMTcgN2M5MjgxMTZiYWEwMGRlMGYzZDFjMjQ2NTA1ZWI0YTNlZjg5ZThhZSBsZWdhY3ktdHJ1bmsKKzIyMDE4IDA4MWQ5NmZiY2Y0MzJjYmI3NTE4ZGZlNzYwZDU3YzBmMWI2NWU4MGQgbGVnYWN5LXRydW5rCisyMjAxOSAxYmMxZmRmMTQ4MmIwNmM3N2ZhY2E1NjBhNWMyYzZiNmNiNmM1YWE1IGxlZ2FjeS10cnVuaworMjIwMjAgZmRiMzg4ZjJkZjRlYWE3MzE5MGI0MjUwMTg0NTRlMGU5MWQ0ZmViNiBsZWdhY3ktdHJ1bmsKKzIyMDIxIDEzMmM0YmZkYmE3NDgwMThjZDA2NjBlMGM5MjM0OWMyNzg5MzlmMjggbGVnYWN5LXRydW5rCisyMjAyMiAxMzFhOWY3NWUyNTgyZGQ1NGVmNmMxM2RhOTY1NjU3MGNlNWYyZDQ4IHJlbGVhc2UyMS1tYWludAorMjIwMjMgM2NjNjY3NTA2ODdkNWNlODM0ZTY1MThkZDZmM2Y1MWEwZDk1ZGJmZSBsZWdhY3ktdHJ1bmsKKzIyMDI0IDdlNTJiZjUyYWUzMzQ4N2RjNDc1ZjIwMzQ2MzhmYzViYzkwNzljNmUgbGVnYWN5LXRydW5rCisyMjAyNSAyZGVhNDBlNDBkOWQ1NzNlNTA2N2E1Yzc2MGU5OTBhMzc1MjRkMGM3IGxlZ2FjeS10cnVuaworMjIwMjYgMDMzMDU2MDJiYTliODViM2JmYTgxYTMzN2IyNmQ0NWU0Y2I4YTQ0OCBsZWdhY3ktdHJ1bmsKKzIyMDI3IDVlMGE0MGNjYjlkYTRjZmM5NWE3MjdlNTQwYTBiM2VkYzQ5ZjA2ZmQgbGVnYWN5LXRydW5rCisyMjAyOCBhODU3NWYzNThiOWZkZjdkNzBhNTRjMTM1NGU5YWFlODBmMGFkN2FkIGxlZ2FjeS10cnVuaworMjIwMjkgYWI4YWE0MzAyMTA5OTEzMjI2ZTMxN2YwN2E3OTE2NWRlMzNlYzdiYSBsZWdhY3ktdHJ1bmsKKzIyMDMwIGMwMzJhYWY2YzgxMjMyMGRmMjEyMTg1MDhkZmQzOTY4MDc5OTcwNDAgcmVsZWFzZTIxLW1haW50CisyMjAzMSBhMWY2ZmQwMTIwNWYwMjJjY2VlMzAyNmRmMGU1YmE4ZjBkYzAxYTZiIHJlbGVhc2UyMS1tYWludAorMjIwMzIgZTY2ZDY0N2I3MzJmMjNmNzViNDFhN2ViZWU4NTc5NjdiMWI2NjljYSByZWxlYXNlMjEtbWFpbnQKKzIyMDMzIDFjNWQyNTZiMTI1YTRjNDhhMDk4M2NkMjg4MGVkYWZiZGU0Y2JlZjcgcmVsZWFzZTIxLW1haW50CisyMjAzNCAwNDVmNTUxMzVhZDAwNGE0Y2JiMWZlZDdlNTUzNThkYWM1Y2RjMDVkIGxlZ2FjeS10cnVuaworMjIwMzUgODc2YWVjZWY2NDgzZjM0ZTM5NTIzY2M4OTJhODMyYzA3OTMzMmM1YiBsZWdhY3ktdHJ1bmsKKzIyMDM2IDNlNWNlOTk0NTk4NjJhMjIyNzY5Njg0MmY1MWVlYjdkYzg1ZmRlMWMgbGVnYWN5LXRydW5rCisyMjAzNyBlMTQ2NDE0M2M0NjMzMDYyNDQ2NGJkZWY5YWMxNDQ3ODIwNzRmOThmIGxlZ2FjeS10cnVuaworMjIwMzggMTJjYmM5NDJmNTQ5ZDUzOGVmZmYwNWQ5NzZjZmE2NzA3MDA5NjgxNiBsZWdhY3ktdHJ1bmsKKzIyMDM5IDc3ZmQyMGJjYzc2NjFhNzBiODRiNWIxNGQ0M2JhY2Y4YTJhOWI0MmEgbGVnYWN5LXRydW5rCisyMjA0MCA0M2FjMTgwNGQyYWFjYmRkY2I1YzkzOThiODk4ZTUxMzBkNDc2YzA0IHJlbGVhc2UyMS1tYWludAorMjIwNDEgZWYyMDMxYzU0ODc1NzYzMjRkNjdmMzY3MWI5ZDUxYjg0M2YwNTg2ZSBsZWdhY3ktdHJ1bmsKKzIyMDQyIDUzMzFmNDcwNThhMTk5MTIzMjAxYTIxZmZkYzI3NDcyYmVmYmM0MmQgbGVnYWN5LXRydW5rCisyMjA0NCAyYjE2NTI2YTM1YTRkZTEyMWViN2YxYTJmNmU1ZjZjNjhjNTExYzI1IGRlc2NyLWJyYW5jaAorMjIwNDUgZjUyYzA4M2I1NTg4MTZlMTNiNjM1OWZmOGU3NDc0NDcwN2JmMjMxZSBkZXNjci1icmFuY2gKKzIyMDQ2IDMxNDdlZmUzMWViODk4MjE1MzY5Y2I3MWQxYTgxMGI2OWFlYmM1MjYgZGVzY3ItYnJhbmNoCisyMjA0NyBkOTcyY2ViNGRjMDY0MGNmMDUxOWI1ZDM4MjY3NWNjOTM0OGMyZDc1IGxlZ2FjeS10cnVuaworMjIwNDggZDY0NjI4Y2M4ZmZjOGE4NmRmZjczZmMxM2I2NzVmM2Q1M2FjYTQ2MiBsZWdhY3ktdHJ1bmsKKzIyMDQ5IDZmMzAxYjNjZjMyM2VjOTM1NDljNjg4NmYwMWIwNWI4MjllNzU4NzQgbGVnYWN5LXRydW5rCisyMjA1MCA0ZWUxZmVlMWQ0YWRiNzQzMDQwYmU1YzljNjRjOGQ0NTdkNzFiMWVlIGxlZ2FjeS10cnVuaworMjIwNTEgZDE2NjlhZjlkMGVjNTJkMzdiNzQ5NWUxM2MzNTMwZDYxM2VlNTFlYiBsZWdhY3ktdHJ1bmsKKzIyMDUyIDczNDM2MjJmMmI4NWQxNDEyNGE0YzNiNzhlOTgwZTYwYzViOWI4ZTUgbGVnYWN5LXRydW5rCisyMjA1MyBkM2Q5Y2VhMjMxNTY2OWEyMWU3NGU0ZThjYTIyYTZkYzAxZjA1MTQzIGxlZ2FjeS10cnVuaworMjIwNTQgYWUxOWM2OTkwNzQ5NjIwYjBhZTkxOGE3ODdlNzIwNDYyYzM2ZGFiZSBsZWdhY3ktdHJ1bmsKKzIyMDU1IDlhYzFkMzVmODEzNjZjZTJiMjU0ZTgyMmI1YWY4OGViYmMyZTFhMTYgbGVnYWN5LXRydW5rCisyMjA1NiBlYThlOTYzZDllNjcyNDQ2OWRjZjYzNjE2MDFiYTZmMWMyNzk5ZGExIGxlZ2FjeS10cnVuaworMjIwNTcgNmY1OTAzMmFmMTU4ZjE4NTYxNDYwNWU5M2EwZTk2MzUzMDljN2VjMyBsZWdhY3ktdHJ1bmsKKzIyMDU4IDgxMzM3ZmJhN2RkYmUwNTliMDkxODJmMTVmOGRmMTUyNzk5OWQ0NDMgbGVnYWN5LXRydW5rCisyMjA1OSBjMDc2NTVmNzI2NDdiMGRmZDk0NDJkZjYwMmRjMmIyZWFiOWIxODAxIGxlZ2FjeS10cnVuaworMjIwNjAgYTVhYWY2OGZmY2RhYWFiYzkxODdkZGFhYWU0YTI3ODY5M2NiMmQzZCBsZWdhY3ktdHJ1bmsKKzIyMDYxIDllY2NmNzhmZWExYWMwM2ViNTg5YmM3OTA2MWZiOGE2M2M0YjlmMGQgbGVnYWN5LXRydW5rCisyMjA2MiA0MzI0NTdmMDIyODc4NDEwOTZiYmZmNDFkNWFkYWRiZDczMmEyZjY1IGxlZ2FjeS10cnVuaworMjIwNjMgY2I3NjExN2MxYjRiYjgwMDliMzllNGQ4MTgxMTZmYjFlZTc0NzM5NSByZWxlYXNlMjEtbWFpbnQKKzIyMDY0IDI3NjM2YzkxY2IyN2M1YTEwNTQ0ODc0YTY1MWFlMjM2ZWUwMzdiZjEgbGVnYWN5LXRydW5rCisyMjA2NSAxYjA5YTljYjA2ZDU5ZjUwMDBlMzI3ZGQzN2FkYTI3YWVkNmEzYjUwIGxlZ2FjeS10cnVuaworMjIwNjYgM2MxMmVlZTdiYmQ0MjM2NDc2YmFjNDQxYTdjNzRhMzVhMDE4YjIxMiByZWxlYXNlMjEtbWFpbnQKKzIyMDY3IGEzNTY2ZWU1YjFmOTQ4NDQ0ZDlmNGI2YTA0MDUzNzUxNjRmNDg3YzIgcmVsZWFzZTIxLW1haW50CisyMjA2OCAxMTExMmI3MzZjN2I1YWMwZTI3YWFlN2U0MDQxZDFjNzRiNzdlOGM4IGxlZ2FjeS10cnVuaworMjIwNzAgMTJiNGJjNGE4MDQ4OGU1ODNhMzAwMTY3ZWNkYTQwM2Q1NGJkMmQ2ZiBkZXNjci1icmFuY2gKKzIyMDcxIDQwODFiNTZmMjBmZjU5YmZiMTEzNTY0NGE4YmEyZWVhMTA2NDJkMmMgbGVnYWN5LXRydW5rCisyMjA3MiAyZGZmYTNkM2Q5NGZmMWFkYTJiN2RmMDBjNTA1ZDg4M2NmMTU3OTk3IHJlbGVhc2UyMS1tYWludAorMjIwNzMgMGUyMTJlODhkMzNkMDkyZDlkNDcxNjdlZTZhNzQxNjIyYjA0NTQ1OSBsZWdhY3ktdHJ1bmsKKzIyMDc0IDRkOWViZWVkYmQwNDVmZTE4YTk3ZGM0NmE1MWQwZWIyNmNhZWY4MWIgbGVnYWN5LXRydW5rCisyMjA3NSA4YzQwMmFkZWVjY2JiNWIwM2FhZTZkZTZmM2ZjYzAwMGM2N2MyOTJlIGxlZ2FjeS10cnVuaworMjIwNzYgMGI5Y2VhNjNiY2ZjZGNjMzNjOTg0Mjk5NDM3NDZlYzY5OTBmNWY1OSByZWxlYXNlMjEtbWFpbnQKKzIyMDc3IGY1ZTI1ZmU0NjZhNDE5MWRkNWQwZDYyMzE3Nzk5MjQ0NmVlZjcxZWYgcmVsZWFzZTIxLW1haW50CisyMjA3OCA5MmVmMzhiMDEzNDYzYjI2M2UzNzliNTUwZTBmNWM0OWMwZDMwZTBiIHJlbGVhc2UyMS1tYWludAorMjIwNzkgMGNlMzVlN2Q2ZTMzNjYzNTM2Y2NjYjk5YTA0ZWRkNTQ3ZWRjZWM0OSBsZWdhY3ktdHJ1bmsKKzIyMDgwIDY0MzQzYTEyNzIwODNjMDUwY2MyZWM2YjY4YTVmNjVhYzE5NGMyODggbGVnYWN5LXRydW5rCisyMjA4MSAyMjQ1NmQwZWU3Mzc5OGM0NzIyNjYzZjY3NzRmMWI5ZGQ4NjA0NDhlIGxlZ2FjeS10cnVuaworMjIwODIgYzdiYjk1NjNiMTQ5ODAzN2MzYTAyYmZlZWViNzMzMzNhNTIzYTAxMiBsZWdhY3ktdHJ1bmsKKzIyMDgzIDliMjkxY2E2NTQ2YzRiNGY5MjRmZTZmYzFiMmVjOWZmMjUzNmRjYzYgbGVnYWN5LXRydW5rCisyMjA4NCBmMTJlMWE3NjZhMTQyZDU0NzU1NDdkZDQzNTdkNzIxNjI1Mjk2YTM3IGxlZ2FjeS10cnVuaworMjIwODUgYWFhZmM4NTJjMmQ1M2Y4ZDI5MjUyZjc3ZTg5Mzg4NDdhNTIzMDY5MiBsZWdhY3ktdHJ1bmsKKzIyMDg2IGZiODM3YzVhZTVkM2YzNmIxODY5ZWYzMDkwYTU1OTA4NTBjNWQwODAgbGVnYWN5LXRydW5rCisyMjA4NyA1YmRiZTYxYTBjMjhiYjJjM2Y5NjA1ODUwZmRiZDEwZDJjMjcyNDhhIGxlZ2FjeS10cnVuaworMjIwODggNTliN2U4ZWNmYjk2NjczMjFkMjlmNGEzMzc2YmNiNjUxNDRhMjc1ZiBsZWdhY3ktdHJ1bmsKKzIyMDg5IDcxZmVhZTdiZjU2MDk0YmYzNDAxNzE5NGNmMGE2Yzk5OTFhMjFjMDIgbGVnYWN5LXRydW5rCisyMjA5MCBiZGJiN2M0ZGM2M2FkYzU3NzY3NTBhMTVkMmRkNmI2MzEwMWRlNmYzIGxlZ2FjeS10cnVuaworMjIwOTEgMjIxNTVhNzE4MjU0MTVlNzNiZjg1YWE5ZTJlMTQ3NzYwODA1NjJmMyBsZWdhY3ktdHJ1bmsKKzIyMDkyIGRlYWQ5ZmFiYmVmYjdiNTdhMDE5ZWNlYzRlOTU1NDBmMDFhMGM1ZjUgbGVnYWN5LXRydW5rCisyMjA5MyAwYjE2MjVhOWU4OWE3MmNmZWM2N2NmN2NlYTI4MmNmNzBlNWUxMzRhIGxlZ2FjeS10cnVuaworMjIwOTQgZDIwYTRjYTA3MDVjMWVhZDkzMDlkMzZhMjY0YTJhYTk0ZTEwYmE4NSBsZWdhY3ktdHJ1bmsKKzIyMDk1IDAxMzJhZjYzNTA2YjljZGUwZDdkNzZjNzFkOTI0ZmFhZDdmMmZmZGEgbGVnYWN5LXRydW5rCisyMjA5NiA4NTg0MjE3ZGRjOGQ2ZDIwODIxZmEyNzk4NzdjM2M5MWM4NzcwMzRjIGxlZ2FjeS10cnVuaworMjIwOTcgY2JhYmU1MjJiOGYxNjc2ZTVmN2E4MWUyNzFhYTgyM2QxMjExNTRiYyBsZWdhY3ktdHJ1bmsKKzIyMDk4IDIyZTgyMzE0NjNiYTZiMjNlMTVlNGRkYTE0NWM2ZGM5YWJjNmNmNjUgZGVzY3ItYnJhbmNoCisyMjA5OSBlZGYwNThiMTZkZGYzZmFkM2YyMjU1MGQ0NWQ1NmJiMjRhNDNjZjM4IGxlZ2FjeS10cnVuaworMjIxMDAgY2JmZGY2MjNjMjY2ZjY5M2ZkYTI5ZTU1MWNjZWIxNGI4N2U1YjQ2MyBsZWdhY3ktdHJ1bmsKKzIyMTAxIDVhZjFlZTQyMjU3NTI3YjUyNGFkNmFkOWMzZWY3MWEwYWMzOWQ0NjEgbGVnYWN5LXRydW5rCisyMjEwMiA3NjI4YWE4MTZhZGE5ZGE5NjhhMjRjMzUzNGQxMGJlOWIzMjNmYmYwIGxlZ2FjeS10cnVuaworMjIxMDMgMjkxMDQxNzNhMDcyZWJkNjNjMWNkZmU2NzJjZGZjYWEzMDg3NTAxZCBsZWdhY3ktdHJ1bmsKKzIyMTA0IDQ0M2E4NjIyZTg1MWFiY2Y2MmUyODY1ZmFjYzI1OTE3ZmEwMjg3NjQgbGVnYWN5LXRydW5rCisyMjEwNSA3OWM2NzZmOWIzNGE5MTQwYjk4NDdlNzljMDU4MTlhMDUwYjFkYjgzIGxlZ2FjeS10cnVuaworMjIxMDYgOTc1M2IwMjY5ZjNhYzBkZDY4NDBlYzhhMjE5NDNmZjJlYmY0OTZjMiBsZWdhY3ktdHJ1bmsKKzIyMTA3IDM0ZjAxYzZjYzgxODYxMzcyZWY5ODk4MGFhY2QzODM3OTZiYmQ4Y2YgbGVnYWN5LXRydW5rCisyMjEwOCA1NWI0NWI0N2ZjNDg3OGZiZjQ1NDQ4ZGM3Mzc5Mzg2ODljMmI0YzUyIGxlZ2FjeS10cnVuaworMjIxMDkgMzZlN2QxZWFiZDkyMWFiMDQzNGU3NTIwZGFmYWMxZDMxOTdiNGM0OCBsZWdhY3ktdHJ1bmsKKzIyMTEwIDkxNDEyMmZiZWFkMmRjMmRkYmE5OThiM2RkMWFjNDUzNGUwYzM4OWIgbGVnYWN5LXRydW5rCisyMjExMSBmNjFkZjhmMGNiNDM4YTY3NTM5NGU3MDk5YWE5NDNkZTI1OTBkZDY1IGxlZ2FjeS10cnVuaworMjIxMTIgZGVhZjdiMTM5YmM4ZjRiYmMwYzZjZDNlYTE4NTJmNzNhZTdkZjQ4ZSBkZXNjci1icmFuY2gKKzIyMTEzIGYwODIxODlhNDQ0Mjk0YjQ2ODk4ZjY1ZTVhOWQ2ZGQ1YjUzNjE4MzkgZGVzY3ItYnJhbmNoCisyMjExNCA1MTBmN2Y2YTg3N2VjZjc0YjU2M2ZlZmQ4NmU0OWM0MGIxNDZlZDRmIGxlZ2FjeS10cnVuaworMjIxMTUgMmJjNjQ4OTMyZDQ0ZmIxNTMzZGM0NjZiODcwYWY0MGQ0NDk4NDc3ZSBsZWdhY3ktdHJ1bmsKKzIyMTE2IGI3MzI2OTBmNTYxYzZlNzY1YjUwMzc1OGEwZTBlOTU2ZDNiYzU5OWQgbGVnYWN5LXRydW5rCisyMjExNyBlN2MzYzliZjUyYjI3ZDU4ZWFiNmM5YmJmMWExNTUwZGIzZjc0MWRjIGxlZ2FjeS10cnVuaworMjIxMTggNDJkZDYyNTFjYzNjYzRmMDFiZDQxMWViMDkxMzE5YzMzNzQyODQ1MiBsZWdhY3ktdHJ1bmsKKzIyMTE5IDcyYTM2OTFmMTA3MWZhZjJlMjYxMWJlOWJjMWQ3YmEyYjRiZmU0N2EgbGVnYWN5LXRydW5rCisyMjEyMCA1MmJkOWUxZGIzZDkwYTUyMTY5ZWUxYTI3ZTA2YWQ3YmZmMDMyNGY3IGRlc2NyLWJyYW5jaAorMjIxMjEgNTJlOTJjZmFiMjM3NmEzZDQ1MGEwOGQ5ODQ4ODFhYTFkZDIzNDI3NCBsZWdhY3ktdHJ1bmsKKzIyMTIyIDJmMjc4MzhkOGZjNTk0Mjc1ODYyNDg2ZjAzMzUwNTAxMzhlMDU3NDggbGVnYWN5LXRydW5rCisyMjEyMyAyZTQ5ZjBlOTJiYzVhYTVjOGI4NmZkZTliY2YyZWQzYmUzMmViMGU3IGxlZ2FjeS10cnVuaworMjIxMjQgMWVmZDY5YmYxODRjMzkwODUyM2IzOTE4NTc3NWE1YjEyZGNiMGIyZCBsZWdhY3ktdHJ1bmsKKzIyMTI1IGZhMDJmNzliYjQ5MWNjNzExMGY4NzRhNTA1YWIyMjhiYjYzNmFhMzEgbGVnYWN5LXRydW5rCisyMjEyNiAwYWExOTE2Y2YxMDM0OTFkYzdiNmQ0ZWNkODliYmFmNWQ2ZjM1ODdjIGxlZ2FjeS10cnVuaworMjIxMjcgOGUyZjYyOTZmZDdiNGE2NzVkNWMwYmE2YWMwMGFlMmY2YWNjZmVhZiBsZWdhY3ktdHJ1bmsKKzIyMTI4IGY0OWExMmU3ZTI0YTQwYTBmNDc0NTM0NzgyNDI5MThmZmIyNDY4ZDIgbGVnYWN5LXRydW5rCisyMjEyOSA0YmZkOGE1ZGEwYjFkZjFiN2Y3Nzg5ZDY0MTQ0YWQxM2E1ZDZlZmY0IGRlc2NyLWJyYW5jaAorMjIxMzAgMjNmNTViOWY0YmM3NDRiMTEwZjViNTU1ZjQ0MTRkOTQ1Mjg3MGJmMiBsZWdhY3ktdHJ1bmsKKzIyMTMxIDRhOGRlZDA4NzI2MmYyYzU2NmUwN2FkZDMwYjYxYzEwZDQ1YzU2YTMgbGVnYWN5LXRydW5rCisyMjEzMiAwZGVkYWU3YmUzYWExMDQ3MWJhYzBlZTk3Yzk2ZTZkZTA2NjU5YTMzIGRlc2NyLWJyYW5jaAorMjIxMzMgMGZkYzVlZWJlNDJkMWM1MTg3Yjk2NGM2YjUxMGI3NjExOWUwYzlhMSBkZXNjci1icmFuY2gKKzIyMTM0IDZjMDE4NWRmNzE0N2MzOTgzMDQ1MmY2YzVmYzM0OTY2YjhhNDA2YWMgbGVnYWN5LXRydW5rCisyMjEzNSBkYWI5NWNhOGFjZmMyYTRhNzA2NTIwNDVjNzU5YWFmOTMzNDMxNGViIGxlZ2FjeS10cnVuaworMjIxMzcgNDE5MDg2OTM3NzQ2NzVhYjZhMDFlODc4YmVhOWYzYmIyYzY1NDgyOCBkZXNjci1icmFuY2gKKzIyMTM4IDY1MDk3M2UyOTI2Y2ExZjQwNzgyZDFhNzMxMmJkMDgxY2I0MTc2ZDIgZGVzY3ItYnJhbmNoCisyMjEzOSAwOWRmMzI1NGI0OWQ3YzkzMDY1ODUzMDJmZTgxNWFiMGJkYjUzNDM5IGxlZ2FjeS10cnVuaworMjIxNDEgMTU0MWQ1YzZhOGYxODEyMDhhYTczNzZlNTc4YjA3YTA3MmM5ZWVkYiBsZWdhY3ktdHJ1bmsKKzIyMTQyIDkwMGUzODUyNGJmMjkxYjFjZDZhZWUyZTEzYjA5ODU5NmRmMzY0N2IgbGVnYWN5LXRydW5rCisyMjE0MyA3MTQ5MTczZThlZGNkYWM2YmZiMjZhZTU1M2MwZDAzYmE5OTIyNDYzIGxlZ2FjeS10cnVuaworMjIxNDQgZjg1OGY5ODdlNzcyYTI5MjAwNmU4ZjQ2MmNmZDA0NWM5NTRhYzZhOSBsZWdhY3ktdHJ1bmsKKzIyMTQ1IDZjMjFlOTM5NGI0NGY0ZmUxZWQ4OGQ2OGI3YzlhMmE3YzEzNmRiNjcgbGVnYWN5LXRydW5rCisyMjE0NiBmZTNiYzRhNGFkODQzNmU5YWUxZDhjNTMwOTA3YzMzMDA0ZmIzYzZiIGxlZ2FjeS10cnVuaworMjIxNDcgYTVlNGQ0YTMwYzk4Mzg1MzY3Njk5YzFkMmMzNzMwZTE0YWE2MjBlNyBsZWdhY3ktdHJ1bmsKKzIyMTQ4IDAxM2NmZmNmZDhhM2I0MDE5YWE2MzJkMGM1MjUyMWQxNDljYThhY2IgbGVnYWN5LXRydW5rCisyMjE0OSA5MGQwNmNiY2UyNmE0YjAxNDU3ODk1M2NkYzIxMjcyODBlMWQ0Njg1IGxlZ2FjeS10cnVuaworMjIxNTAgZTAxZDI5NjM5ZDhlNWQzYzdhNTdlMzdjMjdmNWY1NTE5NGI0NjdkYyBsZWdhY3ktdHJ1bmsKKzIyMTUxIGEwODE5NzA4ZmU5YzcyZDU4YjRmZTYxNzUwOGFmNTEwMzFhNGIyNWMgbGVnYWN5LXRydW5rCisyMjE1MiBmOGZkZDUwODNhZjM2NTkzODBmZDU1OTE0ZjA1YjUyMDk2YzY4ZjZlIGxlZ2FjeS10cnVuaworMjIxNTMgMmIxNGYxMzA4Mjc1NTI3ZDJiNGQ0ZWEyZTY2YTIzYjdmMjYyMjBjNiBsZWdhY3ktdHJ1bmsKKzIyMTU0IDEzNDZlY2YzMThmMjc3ZDBiZTUyY2FjMDk3NWM0M2VhMzA5ZGY2MWUgbGVnYWN5LXRydW5rCisyMjE1NSA5MzA2ZGFkZGMyNmZkYWI3ODU4MGNlMDY4Yzg5MWRmZWQ2MWM0YjNkIGxlZ2FjeS10cnVuaworMjIxNTYgMzg4ZGY0OWMxYzM4MjI4MjhjMzUzYWIxOTE0ZTZkOTY5NDQ2ZWIzMCByZWxlYXNlMjEtbWFpbnQKKzIyMTU3IDRkZGM1YWI5YmVjNDE5ZjYzMGMzYjRlNzQ4NGFjNzgzYmJkNDRjMmQgcmVsZWFzZTIxLW1haW50CisyMjE1OCBmNzJkNjFiMTI0NmVlMDFjMTMxODY4YTI5ZWU4OTE3MmJmOWUyYmNjIGxlZ2FjeS10cnVuaworMjIxNTkgZTkwYTY1OGE1OGQ0ZjYzM2FmYTE2MzhiOWMwYzA3M2NhZjVhMTVkNyBsZWdhY3ktdHJ1bmsKKzIyMTYwIDQ4ZTBmYjA1NWMzM2NhYmEyNDllMzc1ZTRiNzI5NmM5NWU4ODc0OWQgbGVnYWN5LXRydW5rCisyMjE2MSBmZWZjYzFlODBjZWUzNTYwYWI1YTcxMjRjZGMxNjcyYzcwZDk0MDFiIGxlZ2FjeS10cnVuaworMjIxNjIgMWRiNjkwMGEwNzgzNWEzZjVjM2U5ZWE4OTQ5NTI3NzQyN2RmZjdhOCBsZWdhY3ktdHJ1bmsKKzIyMTYzIGI3NjIyMjBhNjE1OWZjMzNjYzJlNzcyMTlmZDI0YTg3ZGEzZGZlNWYgbGVnYWN5LXRydW5rCisyMjE2NCBmMjg4NWIwZGRiYWViNjBhY2IwNjA4ZWJiNGFhMTgyOTMzYmM2NDM0IGxlZ2FjeS10cnVuaworMjIxNjUgNDc4OWMxMmE4OWYxYmY0NDMyM2JiMDdmM2Q4OWI4ZGFmY2FmNDZlOSBsZWdhY3ktdHJ1bmsKKzIyMTY2IGNmOTI1NDIxMDAxNWRiNmY5NjY0MWZiYmM5YmEyZTQ2OWExZGJjOWYgbGVnYWN5LXRydW5rCisyMjE2NyA5YWE1ZDY2Y2QxM2RjZmEzZDIyZTVkYjZkODA4ODBiMjI2M2E0YWQ0IGxlZ2FjeS10cnVuaworMjIxNjggZWVkOGE4YThmNjIyYzhkOTlkMzljYzg4MjZhMDE0YzYxNDBiOWYxNyBsZWdhY3ktdHJ1bmsKKzIyMTY5IGQ3NTkwMTIyZjlhMjYxMzczMTEzM2EzYjYyZTZkNGY2ZDA5YzQ4YjUgbGVnYWN5LXRydW5rCisyMjE3MCA5MzEzYjQ4ZjExYzNmOGM2N2JkMjcyODVmOTA1MTEwN2Y4NTU1MjY5IGxlZ2FjeS10cnVuaworMjIxNzEgOTE5ZTYwZDc3MzM0MmNhNGFhYmEzOTFhNDk5ZTU1YzYyOTJjMjFmOCBsZWdhY3ktdHJ1bmsKKzIyMTcyIGY5NDZiN2Y3ZDgzMThlZjMwNGQzZjU2NWU1MmQ5ZGIyOTg3YzBiOWIgbGVnYWN5LXRydW5rCisyMjE3MyBlZDYyYWQzMDgzNGViMGI1MzU1OGRhNzExYWRmNTIxNzY2MjkxNjMyIGxlZ2FjeS10cnVuaworMjIxNzQgMWFlNzE4OTc2YWM2ZGMxMThlYjI0YmYzNDc3ZGU0YWIyYWQyODViNSBsZWdhY3ktdHJ1bmsKKzIyMTc1IDBjMzA3ZmEzNDRiNWNhNjM1NjMxOTFhNDY4Njg3ZGIyMzcyY2RmZTEgbGVnYWN5LXRydW5rCisyMjE3NiBiMDBlN2IzOGY3N2YyNzUxZjRkNzUwYTcyNmM5ZDhkY2ViM2NhOTMxIGxlZ2FjeS10cnVuaworMjIxNzcgYmQ5NzJmYTg0MWM1ZmViNmFjZDQ3NDA1YTY4NjQ0OTQ1NDgzZGYwMCBsZWdhY3ktdHJ1bmsKKzIyMTc4IDljM2Q1Mzk1ZTNmZDkzMDkzOTJiYzZmZDNiM2YyZWIxZDNhMzk0MjUgbGVnYWN5LXRydW5rCisyMjE3OSBkMTQ0YzgxZWFmNDQ2ODBmOTUwNzZjODI1MzA1ZGNlMmFjMTllYjk1IGxlZ2FjeS10cnVuaworMjIxODAgZGM0YmU3YmQ2NzQ2MTA0MWUwMDE2OGMyNTQyNjIzNTRlNGY5ZTE5YSBsZWdhY3ktdHJ1bmsKKzIyMTgxIDY1MWU2Mzk0MjA4YzhkOTFkODMyYmNiNWVhODhjZmI4ZThhZWYxM2IgbGVnYWN5LXRydW5rCisyMjE4MiAxZTY4NmIwODk4YTJmNjg3M2VmM2UxYmI5ZmU2MzEwZTMzMzc2OWViIGxlZ2FjeS10cnVuaworMjIxODMgNDcxYTkwMTgxMjljM2ZkMTkxOTFkNjc3ZWY3NTA5NTA3ZDkzODZmMCBsZWdhY3ktdHJ1bmsKKzIyMTg0IGYxY2YyYTQ0NDE3NDlmYjIwMDIzMjllYWRmYzcxYmEwMjhkYzk0NGMgbGVnYWN5LXRydW5rCisyMjE4NSAzNDI4NDIxNjIwMWJlYTk5MzViNDE4MjNjMWU5ZDE5MzVlYWI2YzBjIGxlZ2FjeS10cnVuaworMjIxODYgM2RkOGU2NGY1MTJlODRhZmM0YzM4OGJmNDY1NGI4N2I0Y2ZiNzcxOSBsZWdhY3ktdHJ1bmsKKzIyMTg3IDllNGMxMjY3M2ZhYjQ0ZmJlNTI2ZWRiYzZiYmNlMDkyZDRjOWJlMDMgbGVnYWN5LXRydW5rCisyMjE4OCBkYWM5Y2NhNDkwMTIxYzFhYjYwYTUxYmFmY2FmNzJiMGQ3ZDgwOWRkIGxlZ2FjeS10cnVuaworMjIxODkgOGI5ZDg3YWY2MWViZGJmNjk1M2JmYTBhOGFlNWVjNDM0NTJhOTNiZiBsZWdhY3ktdHJ1bmsKKzIyMTkwIDExM2YwYjU3NDRjNDBjOTFmMDkwNTEwNDVmNDExMmE2MGY0OWQyMTcgbGVnYWN5LXRydW5rCisyMjE5MSAwMDkzNTAzMWIzNzNjNTQ5MDg2ZTJkMDM2ZGM3NjM3ZGZkNDhjZjg1IGxlZ2FjeS10cnVuaworMjIxOTIgYmE5ZTRmNTUxMzNmOTNiZTM2NDEyYjFjMzk2YWJkZGMyZWZjYzlmNyBsZWdhY3ktdHJ1bmsKKzIyMTkzIDlmNzg3NTlhNTFiMGY3M2M4MzhmODZjNTM1MDkwYjJmODBmYWRkMjggbGVnYWN5LXRydW5rCisyMjE5NCA0ZjRkODMwM2RlNjBjZjZjMDZmZGU0Zjg5ODJkN2I1ZTJlYTMyMWIxIGxlZ2FjeS10cnVuaworMjIxOTUgMDhjZDgxY2RmZmE5ZGQyZjRkNjY5MzkyOGUzNjdmNzZkMDhjMzg1YSBsZWdhY3ktdHJ1bmsKKzIyMTk2IGFjY2YxOTI1NDMxYzc3MGU4MzFmMTZiNTc0ZDVkZGU3YmIxZWNiNWIgbGVnYWN5LXRydW5rCisyMjE5NyAyYjExZDE2NmIwN2I3MWEwYzUwNzQ1NjM5ZjllOWVmMmZkODczMjkxIGxlZ2FjeS10cnVuaworMjIxOTggMzYwY2VjZTc2MTIzNTVlM2ZhZTRiZjRhYzI4YmI2ZDExYTIyMGVhYiBsZWdhY3ktdHJ1bmsKKzIyMTk5IDdmYTFmODdjYTZiMmQzZjYyYWI4YTg3OGNmZDFkNDIwMGFkODE2NjMgbGVnYWN5LXRydW5rCisyMjIwMCBiMGFhZjc4MGJjYTY2YzdkZjQxYzhlZDc5MjMzOTIyYWJhODY1NzZjIGxlZ2FjeS10cnVuaworMjIyMDEgMTE0YTkwYTQzZGI3ZTllODA3YmZkNDE1MjQ4MWZjZjg2NGIzMTZjZSBsZWdhY3ktdHJ1bmsKKzIyMjAyIDgwNTA5MGNlMzI4YTAwMTdjOGVlMDkyOTcwYzc5MWFlMjRmYTJjYTQgbGVnYWN5LXRydW5rCisyMjIwMyA5MDU5ZTdjMWQ4YjAxOGI3ZDE3MTVmN2U1ZDgyMWY1NjYxZWRiNGM1IGxlZ2FjeS10cnVuaworMjIyMDQgOWZjNGE1YWJiMzY5NDNhZmYzZTMzNGZjN2JjOWM3YzQ3N2QxZThiYiBsZWdhY3ktdHJ1bmsKKzIyMjA1IGFlNDNmOTliNDdlMWUyNzY2YmQyOTg4Njc1M2NlZWNhZjJmNjZkMjQgbGVnYWN5LXRydW5rCisyMjIwNiBhMmIzNTg3ZjU5MmE4ZjVkZGU5ZGU3YzY0ZDFiYzE3M2Q1OTBjNDljIGxlZ2FjeS10cnVuaworMjIyMDcgOGVhNjBlMmIwZjIxOWU0MjMzYmZiYTViZWExNjgxNDBlMTA4NTdkOCBsZWdhY3ktdHJ1bmsKKzIyMjA4IDI4ZjBlYThkNjI3ODFiNGFjMmM1NGU4ZmJhYWNlNDlmMDA3N2JiMzAgbGVnYWN5LXRydW5rCisyMjIwOSAyYWUzN2NmYjE4OWY5ZTlhYjQ4YjIyNTNmNWVkOTRjNjkyNjRjODIwIGxlZ2FjeS10cnVuaworMjIyMTAgMTlhM2M2YWY0Mzc0NDY0ZTAxNzJjMTZkNjQ5NWE0ZWRhYzZjOThiYSBsZWdhY3ktdHJ1bmsKKzIyMjExIGIxNmY4ZDAxYzUxZTNhMzNhODM1ODE2NWU1ZmFlNDJkZDU2YzQ4ZDQgbGVnYWN5LXRydW5rCisyMjIxMiBjOTQyYTk4MjFkMDk5NzM4NmI0ZTRhNWM2OWQ5ZmRkZmZlZTM0MDAyIGxlZ2FjeS10cnVuaworMjIyMTMgODExMTQyMDllZThlZWU4OWE2Mzk2MjhkZDU5MTU5NjczYTg4Yzc1MiBsZWdhY3ktdHJ1bmsKKzIyMjE0IGNlZmRjZDYwYThiMmIwMTY0NGNlYzdkZjYyZTRlMTQxM2RkYmUxOWUgbGVnYWN5LXRydW5rCisyMjIxNSBmNWI3YTFlYzRiOWYyYjFkNDY3ZDUxNjQ5YTgxOWFjNTA5NWYyZTZiIGxlZ2FjeS10cnVuaworMjIyMTYgMWJjNjdjZjU3ZDBhYjZhNmI3MzE2Mzg4MDZkNmQ5M2IwNmExNWFkOCBsZWdhY3ktdHJ1bmsKKzIyMjE3IGZlMjBkMWNmZWMzZDlhM2MzOWUxZmIxZTA4ZDZiZmNjZTU0ZjczYTYgbGVnYWN5LXRydW5rCisyMjIxOCBjMWRhYTk0YzIxZDgzMGUzMmU4YWMxODVmNTlkYTNjYTM4YzUzMWM4IGxlZ2FjeS10cnVuaworMjIyMTkgYmI4NWNjYmQ0ZmVlNTU0M2RlOTJlZjhhZWJkOWY5ZjQ3NGM3MWMwNyBsZWdhY3ktdHJ1bmsKKzIyMjIwIDdkMjdlMzg4ZWM2YzllZDAyMzUxNTk4NmE4YTE4NmQ1MmQzNmNhODIgbGVnYWN5LXRydW5rCisyMjIyMSBlYzY3NmUxNDA3M2Q3ZmNmYTUyMWNkODgxYmZkNDU4ZTc3MTY5ZTI3IGxlZ2FjeS10cnVuaworMjIyMjIgNTBkYTYzNzM0MWFlNTIyZmJhMmFjYjUyNWFlYzAxZjBkNTNlZWUzNiBsZWdhY3ktdHJ1bmsKKzIyMjIzIDAzODQ5OTQ2NjcyNzI4ZjFhN2MyYWIwN2RhMmYwMmU1YmQ2MWU5YTUgbGVnYWN5LXRydW5rCisyMjIyNCAwNzhjMTk2MWUxNzUxNDYwMGQ2NWZhOGM1MjEyYzY0YWIxODRkMGE1IGxlZ2FjeS10cnVuaworMjIyMjUgODIxZTM1NzA2YzA3MTU5ZjViMTEyMjMxYmU4YjM3NDdkMWM2Yjc3MSBsZWdhY3ktdHJ1bmsKKzIyMjI2IDMwYWUzYWZmMDNiZDk4NDg5OWY1YTcxMDI5NWU0M2M5ZDUxZmI3OGUgbGVnYWN5LXRydW5rCisyMjIyNyA2MDBhYzVkYmM2NjY0ZjU0YjYzMTU2MzI3MjA0Yjk2NDZmZWUwMDA2IGxlZ2FjeS10cnVuaworMjIyMjggZTU3NTRmMDQ4ZjBiYzM1ZmJjMDBlNDVmZjUxNDJmMmQzMzNiNGQ0NyBsZWdhY3ktdHJ1bmsKKzIyMjI5IGJhZDQwOGM3ZDlkNzg1NDA2Y2Q1YTliNjgzMjZiZjkyM2QzODA3MDYgbGVnYWN5LXRydW5rCisyMjIzMCA3YjFhMDgwNDE2MWVlZDg3MjQ1ZGJlZWZiY2IxODE4Nzc4MzY5MDAzIGxlZ2FjeS10cnVuaworMjIyMzEgMGFiOGY5MzdmZjY2NWI4NThkYWRiYjk3Mjk5NzEzNDliNGRkOWE4OSBsZWdhY3ktdHJ1bmsKKzIyMjMyIDIzODc2ZTJkODRiNmYxZTUxMjI1MDEwZWU1ZjM1NjVjMzI5YjEyYzkgbGVnYWN5LXRydW5rCisyMjIzMyA2MGE3NTAwMmE3NGNmZDAyYjU3Yjc5ZGIxYmQzMWZiZGVjYWY4ZDBiIGxlZ2FjeS10cnVuaworMjIyMzQgOTgzMTVmMGUxZDI2ZDc0MjdmNjdiNjAxZTY1ZTQ4ZDJlZTJhMTliMCBsZWdhY3ktdHJ1bmsKKzIyMjM1IDZiOGI2NWZjY2IwM2Q5ZjFmYzgzNmIxZmExODE5NmY1OGU5ZTY5OWEgbGVnYWN5LXRydW5rCisyMjIzNiAyNjNkY2FmMDBlZWRjZTBjZjJiNmNiNGQxOTI1ZGRjYzA4MTkzN2JmIGxlZ2FjeS10cnVuaworMjIyMzcgZTRiNjcwNWRjODRmOTBkZDE4NTAwNTI1ODdhZjg0M2U2OTU3ZDU2YyBsZWdhY3ktdHJ1bmsKKzIyMjM4IDllNTc4ZmNiOGRkYWI3M2ZkMTMwY2MyYWUyMDk3NjdiNzlhZDlkMGIgbGVnYWN5LXRydW5rCisyMjIzOSBkMzI2OGQ2MmU0NjIyMWQyNmRkZjhkOTc3YzgxMmE5ZDEwMDU0YzU4IGxlZ2FjeS10cnVuaworMjIyNDAgZDkxNWEwZWRiMmVhMzExMWQ3MzZhZDIwZGFhN2MzMjFkMTM4OGVhZSBsZWdhY3ktdHJ1bmsKKzIyMjQxIGIxNTMwN2QyOWJlN2JjNGZkZWM4ODM2NDJiMWJlNGZmMzI2MDA1ZTMgbGVnYWN5LXRydW5rCisyMjI0MiBjMTcyOWNkYzA3MzQwY2U2MjBkNGJlOGRlNzJkMjgwZmE3YWZiZDM4IGxlZ2FjeS10cnVuaworMjIyNDMgM2E3ZDY3ZWUxMDExM2U4ZmIyNTZkYzQ3MTkxZDRlYjI3Mjc4NDNjOSBsZWdhY3ktdHJ1bmsKKzIyMjQ0IDgwM2E3YTE0NDhiMmQxZmFmYTE1NDAwNzkzMmRlODUwNzY3MGE3M2YgbGVnYWN5LXRydW5rCisyMjI0NSAyZDBhMDRlMjc1ODFlOGFkYmRjZjFhMDQ5ZTUwM2MwYWY0NTkyOGM1IGxlZ2FjeS10cnVuaworMjIyNDYgZjY2Y2NmMmM2M2ViM2E5M2UwMmFkZmM5MGJiYzQ0OGU4NzcyY2RlNSBsZWdhY3ktdHJ1bmsKKzIyMjQ3IDRkZjcyZWE3OGFlODA2MjgwYzJlN2M3NjkyNGZmYzRkMjExZDNjZGMgbGVnYWN5LXRydW5rCisyMjI0OCA5YTg4ZTUwYmYxMTQ1NmUxOGU1ZTAwNDBkZGJjMGRjYmIwOWRhMjBjIGxlZ2FjeS10cnVuaworMjIyNDkgYWQyYjgwNzU1ZDJkNGM2YmRiZTQ3MGJmOTg3ZDJhNmEyYTdiNWJmYSBsZWdhY3ktdHJ1bmsKKzIyMjUwIDhkNDdhMjFkOTVlMDQyMDdjYzc0Yjk1NDhlZjIwODM5ZWYzM2UzN2QgbGVnYWN5LXRydW5rCisyMjI1MSA4ZTYwZjMwMDM3YTFmY2Y5OGQ4NTZhMjNhNWUxOGZiMjgxZTY0ZDQxIGxlZ2FjeS10cnVuaworMjIyNTIgNzQ1Nzc0ZGJlZDU4ZTc1ZjhiYWQ2MjJhZmZiODQ2N2NiZjU4NzhlNCBsZWdhY3ktdHJ1bmsKKzIyMjUzIDdkYjViNTQyM2NjZjk5MDNkYzFiMmZkM2Y1YzgzMTY3NmZiMzdkY2MgbGVnYWN5LXRydW5rCisyMjI1NCAzNTA1MGQxODhhNmFjMWMxYzQ5ZmQ3ZjljNDc5NTRjN2ZmZTk5NDRlIGxlZ2FjeS10cnVuaworMjIyNTUgZTI4MmQ2YjJiNzU4ZTY0ZjM0ZDI1MjI3Y2M1NDk1MWQ3YzJlYjg5NSBsZWdhY3ktdHJ1bmsKKzIyMjU2IDI4YjY0M2JhZDc0ZDJiNjg1MDdlYzNlYTY2YjJjZjM3NDM4MjIzYzEgbGVnYWN5LXRydW5rCisyMjI1NyAwYzVlNTE2OTRiMGY3ZWY0ZGZmNjQwN2EzMTZkNWEyOWVjNTgzNjhkIGxlZ2FjeS10cnVuaworMjIyNTggZjIwNzI3Y2MzZDBmMmYzYmYxMjRkYWUxODhmMGI5YWM1ZjIzOTE3OCBsZWdhY3ktdHJ1bmsKKzIyMjU5IDM5NjlmY2JmOTUwMDg2ZjRlNjcyZTA4ZjdhNTE2ZmJlNWE2NGJmZmEgbGVnYWN5LXRydW5rCisyMjI2MCAyYmIyNDJkYzY5ZDhlNDlhNzZkYmMwMTRhMGFkYjI3ZWZkNjJjMTY1IGxlZ2FjeS10cnVuaworMjIyNjEgMTFiYmEzMGU5YzI4NDBlMDQzMWU0NWY3NmIzZDdiMWI1M2YwODZhNCBsZWdhY3ktdHJ1bmsKKzIyMjYyIGM5MGYwMDM2MTA5ZDRiYWE3MWFjNjIxZjBiN2UxMDgxMDQyYThhNTMgbGVnYWN5LXRydW5rCisyMjI2MyBhMzA3N2Y5NmQ0Nzg5NTlmMmQxNGU1Y2ZjOTFjMGJiYjI4MTdjNjQ4IGxlZ2FjeS10cnVuaworMjIyNjQgNjVmZTZiMDcyNDdiMDA3MDdiNWM4OTRhNDdhODcyOThkMjgzMGEwNyBsZWdhY3ktdHJ1bmsKKzIyMjY1IGY5NDk0MTM1YjU3OTA5NWQwYmNiZDJlZDdiODY2YWQxYzk3ZTQzNTkgbGVnYWN5LXRydW5rCisyMjI2NiBjOTc5NjI1ZmViNDk2ODkxZTU0Mjk3ZmY2Njk5NzI0MDUxYmM1MzYxIGxlZ2FjeS10cnVuaworMjIyNjcgOGJkMDZlMzI0OWJiNWUwYzFiOThhMDg0YWViOGIxOGY0NDI2Njc2ZCBsZWdhY3ktdHJ1bmsKKzIyMjY4IGY1MWIxM2JmNWQ1NGY5ZjJhOGUwZGFhNDBlYTRlMGQ5YmE0M2ZjYmUgbGVnYWN5LXRydW5rCisyMjI2OSBlNDI2MjMwZWE1NzMxYzlmMTYxMTU2MmEyZTlmOWYxZWVkZGJjZDVjIGxlZ2FjeS10cnVuaworMjIyNzAgOWNjNjdhYWZlYzZjMTg4MDAyYmY5NGRhZGU5ODg3OTNlN2RhMzYxYyBsZWdhY3ktdHJ1bmsKKzIyMjcxIGU1N2E0NjE0NDY5ZTZmNGNiMDM3YmNjOTk3YzE5NDg2MjY1NjhjN2IgbGVnYWN5LXRydW5rCisyMjI3MiBhYjJmODA5NWM0ZmNjNmQwMmI4M2E0OWE5YmI1NTFjOTJjZWM0OTg1IGxlZ2FjeS10cnVuaworMjIyNzMgYTFiNGYzYTFlZTA3OTY1NWNiZWI1Y2JhOTM4NGNiZTA1ODQxNjI3OSBsZWdhY3ktdHJ1bmsKKzIyMjc0IGQ3OTg2NWMwZjgwNDU4OWQ4YjdiYTFjY2ZkMzI1ZTBlMGI4YTNjOTkgbGVnYWN5LXRydW5rCisyMjI3NSBkMDA4MDJjNzRiYTRkYzQxOTAyNDFlMzA0NGZkMDViOTgyOTUzNWUxIGxlZ2FjeS10cnVuaworMjIyNzYgYjYyYzgwZDU4ZDFlYzNiZTVkMDc3NzdiNDVlM2U4NmFlZjc3YTg5NCBsZWdhY3ktdHJ1bmsKKzIyMjc3IDM5YTczYzY3NzNmMTJlZDk5YmJiMGRiNmU5MThjODE5ZjdiNzBlN2IgbGVnYWN5LXRydW5rCisyMjI3OCA3NjQ5MjNkOTg1YTc2ODE0ZTRhN2M5MmJlOTRkN2ZjZDNlM2Q0ZmYzIGxlZ2FjeS10cnVuaworMjIyNzkgMzEwYTkxNzBhYWQ0NzZkYWUxMmQ2YzQ5OGYwM2RlNWVhNDZkNDM0ZSBsZWdhY3ktdHJ1bmsKKzIyMjgwIGVmZGRjZjcxOWZmMmVmYzcyYTI1ZmQ3MTRkN2Q1MzE4YzFhZjkwNzQgbGVnYWN5LXRydW5rCisyMjI4MSA5NGNhOGViYTdlNGYwOTdiYTE2MjBkMjQ1ZWU2ODhmMzYyZDAwNzQ0IGxlZ2FjeS10cnVuaworMjIyODIgZTJlNTg5ZmVhZDMwZjFhZDhmZTc0YzIxN2QwMzViZDc5NmRjNjA4NSBsZWdhY3ktdHJ1bmsKKzIyMjgzIGY3NTEyNWVhZDBhMjNiOTYzNDgwNmFhYzFlODZiYzViNjBjOTA1YzAgbGVnYWN5LXRydW5rCisyMjI4NCBjM2U4ZjQ3ZmU3Yzg0ZGY1NWM2YzczMzI3MzM1ZTA4NWNkMzQ0NmMwIGxlZ2FjeS10cnVuaworMjIyODUgMGE5Y2U4MWRlMzk5OTE2YTcxY2FjYzRiOTljMzM2ZDBhZTVhNWZjNSBsZWdhY3ktdHJ1bmsKKzIyMjg2IGNiOGZkY2U5ZTY1YTZkMjljOTk5YTU2YjNlMThlYjhkM2IxZDNiZWMgbGVnYWN5LXRydW5rCisyMjI4NyAyN2I0ZGJkNDI4ZmU3ZDViMDA2NmU5YmNjZjhlN2ZjMTk1ZWMzMjBiIGxlZ2FjeS10cnVuaworMjIyODggMzZjYTM3NmU1ODY0NjVlZGUwODhmODc2MTE1Y2QwNDFjZGExZGFjYyBsZWdhY3ktdHJ1bmsKKzIyMjg5IDg4ZDEyNGM3NDc2NjA2ZjZkMmMzMjIwZmJjNTE4MGVhY2M2OTM5OWYgbGVnYWN5LXRydW5rCisyMjI5MCA1YzI3ZjBlNGY1MGY3MzZlZjg1ZTYxNjdhN2U3MWMwMDllZTRiMTRjIGxlZ2FjeS10cnVuaworMjIyOTEgOWY3ODUwNzNlNDhiZGYzYzQ5ZGY0M2EyYmNkYTc0NmEwMzRlZWE1MCBsZWdhY3ktdHJ1bmsKKzIyMjkyIDZlOTU4ZDVlOTg4YmQwNWMzNDZjNzM1MmQ1MzA3ZDkzOGQwMDhhZTkgbGVnYWN5LXRydW5rCisyMjI5MyBmM2UyNzhiYzQzOWUyNzA4YTFhZDA3NDIyYzljMjBjNjAyZTRlOWYwIGxlZ2FjeS10cnVuaworMjIyOTQgOTZlYmYyYjg4NmY3NjgyOWI0Zjk3OWE5NzYzYTgxY2NhYmFiYzM0MiBsZWdhY3ktdHJ1bmsKKzIyMjk1IDE5NjBjZWVjMWEwMGJhNTYyMzkxNGEwYWY0MzBjZTIzYzBmODg2ZDYgbGVnYWN5LXRydW5rCisyMjI5NiBjNGIzMWJlN2UwODBiOTViYzk2ZWUxYjE5YTlhMGVkODU0OGU0NzRkIGxlZ2FjeS10cnVuaworMjIyOTcgZTQxMWJmYjlkYjU3NjRhYmI0NWUzNzVlYTgzNTc3NGZiNDMyZGVlZiBsZWdhY3ktdHJ1bmsKKzIyMjk4IDZmYWVkNjE1YjA1OGRmYzAyYTI5YTY1YjMwYmUxYWQ0ZWRiOGQ3MzYgbGVnYWN5LXRydW5rCisyMjI5OSBlNzlmZDM5MzRmNjEwMjdmZjA0NDkzYWVhOWQ1ZDc1YjhmYTZhYmNhIGxlZ2FjeS10cnVuaworMjIzMDAgOTdkZTg2OGFkMGY0MDI4NDNjNTZjMTE1Njc4OWZiMWYwNmU0ZDM5NCBsZWdhY3ktdHJ1bmsKKzIyMzAxIDhlYmY3MWUxZWQyOThlYTkyMWI2ODIxY2FiNjVlOTgyYzI2Yzk4MzIgbGVnYWN5LXRydW5rCisyMjMwMiAxMWE5NzY3ZTVkOGE1M2YyNWU0YzE1NTdiYzhhMzE3NzY4ZjBiMzI1IGxlZ2FjeS10cnVuaworMjIzMDMgNDVjY2YzYjg4OWI1MDM2OGRkMDE1ZmE5MGFhYzc3NzkwM2IyMGQ0OSBsZWdhY3ktdHJ1bmsKKzIyMzA0IDllNmY3ODA0ZWYxNDVkZDhjMzc1NjNmNTdiMzNhNjI4MTQ3OWMyNjYgbGVnYWN5LXRydW5rCisyMjMwNSBjOTVmMGExMmI1MWE1OWQwNmE3NTFiZjc2MDlkMGEwN2UwZjc2YzQxIGxlZ2FjeS10cnVuaworMjIzMDYgZGU1ZDdhOTQyOGVmOTBjYjdmMzk0YWE1MTY2NTMxYjFiMzQ4ZTE4ZiBsZWdhY3ktdHJ1bmsKKzIyMzA3IGMyMzg3NDVlMGFhZTZjMDY2Y2UyMjA4Mzk1MjI5ZmE3N2Y4MjdjNjkgbGVnYWN5LXRydW5rCisyMjMwOCA2MzUwYmJhYTYzMmE3NTVkODM5YzNkNjZjYTBkODQ0ZmYxMDVkZjllIGxlZ2FjeS10cnVuaworMjIzMDkgOWVjNTYxMWNmZTljMDMzMDM0MzJiYTc1OTBjOWExM2QxZmZkMmUwNSBsZWdhY3ktdHJ1bmsKKzIyMzEwIDM0MjBjOWU2YWYxMTI5ZTViYTY0NTgwZjdjZDcxOWIxNjQ2NGEwOWEgbGVnYWN5LXRydW5rCisyMjMxMSA4NzVhYzhlOTM1NDI0YmQ2YjAzNTMyODQxNGIxNzJkY2JiZjg4MWE4IGxlZ2FjeS10cnVuaworMjIzMTIgZWVhOGRmYmJlZTg2MDI5MGY3ODMxZmI5ZTJhN2U3ZTZiNDA3Njg0MCBsZWdhY3ktdHJ1bmsKKzIyMzEzIDEwZWMzOTY4NDI4ZGM4M2M4NWMyMTFkZjYwMDNhZGM4NGE4MjgxYzYgbGVnYWN5LXRydW5rCisyMjMxNCAxMzFhMDFiNmY2YzcxNGU1OTE4YmVlZTVkNTBhODhjMDZkNzI2ODY0IGxlZ2FjeS10cnVuaworMjIzMTUgYjc5ODRjOWJiZjJjZGUwMzhiNDNhMDA2YTVjNTcwYmMwYWE3NTdhYSBsZWdhY3ktdHJ1bmsKKzIyMzE2IDM3M2NjNTk0MTU5MDBiNDRiNTliZTI3MzZjYTA3NDUzZjBjZTM0MWIgbGVnYWN5LXRydW5rCisyMjMxNyAwMjAxYmI1ZTNiODM2YjM3YjZmYTVjYzRiN2NmY2NjZmFiY2EyOGRmIGxlZ2FjeS10cnVuaworMjIzMTggNmJhNDQxNTA3MjIwNGE2MWJjMjdiMThlMjljY2ViNzAwYjk0NGNiOSBsZWdhY3ktdHJ1bmsKKzIyMzE5IGI1NTQ3OGJkOTE2NWM0ZmUzOWY0MjY2MmY3Zjg0MjhlYTE5ZWE0OGMgbGVnYWN5LXRydW5rCisyMjMyMCBiMzU1Mzc2ZDA3MzEyNzhhZWM1ZmFkMWU5Mzk5MmJhODc4OTdkOTMyIGxlZ2FjeS10cnVuaworMjIzMjEgNzgyNmNjMzdhMjM0YjhiMTBiZmE1ZTVhZDg1OTc4ZjYzYzM5OTE2YSBsZWdhY3ktdHJ1bmsKKzIyMzIyIDE3NTI1YjZjNTMyYzU5MjRlNjFmODJjMWMzNzE0YzU5NzFiZTk3OGEgbGVnYWN5LXRydW5rCisyMjMyMyAxM2QwZjM0YjZhMTYwOTk5ZmVjMTFiZjc1MTlmODk2NDAwNzc3MDQyIGxlZ2FjeS10cnVuaworMjIzMjQgOGNiZjk4NGM5YzEzZjQ3NWE2YzA4ZjBhNzk2NGY4MDRjNTg5NDViZiBsZWdhY3ktdHJ1bmsKKzIyMzI1IDkxMjk5NDE4YjcyZGM5YThiZmNiMmU2MTI2MTJiMmU3MDUxNTI5OWMgbGVnYWN5LXRydW5rCisyMjMyNiA2MDBhOWEyYjdhMTgzMTMwZjBiNjRmZGUyYzBmMTJlY2NhYmU4ZDZjIGxlZ2FjeS10cnVuaworMjIzMjcgOTU1MTVjNmI2OTRhYjVjZmFkZGM2NWU0ZTUzMjI4N2MyODAwZGQ1OCByZWxlYXNlMjEtbWFpbnQKKzIyMzI4IDc3ZTQwNWYzYTk0MmE5MTdmZjFlNDU4YzYxMDczYWIxZjhlOTgxZjkgbGVnYWN5LXRydW5rCisyMjMyOSA2NzI5YmYzMGQzYWU1YjE4ZGY2NTY1MjZlNTE0MDM0ZTgyNDRhN2ZmIGxlZ2FjeS10cnVuaworMjIzMzAgZTA4NDdiYTFkNmY0ZWIwNmEzZTg2ODE0NzRmNGFhODFkOGM0MzQ4ZiBsZWdhY3ktdHJ1bmsKKzIyMzMxIGFmNDgyMDU1ZDVjZTQ5MGEwZGNjYmRmNmJjZDUzMTAwYzY2MGU0NzMgbGVnYWN5LXRydW5rCisyMjMzMiBmOGI1MWM4Y2EwODI2MzE4YzZmMjg3YTAzYWVlYmFlNTg0ZGM5Nzg5IGxlZ2FjeS10cnVuaworMjIzMzMgNjdiZTNhNjhmZGU0OTI0MTRiYTIyMzcyZWY0MzM1MDhlYTkzOTQ1ZiBsZWdhY3ktdHJ1bmsKKzIyMzM0IDc4NzUyZWFlMTMyZTFiMmNhOWQxNzMxYWFmOWM3NWUzMjAxZjFhMGMgbGVnYWN5LXRydW5rCisyMjMzNSA0OTAxYTkzNTQ5MGRkODZiYjQwNzJlYWZkMTQ5NjFhNTYxNzE2NzZmIGxlZ2FjeS10cnVuaworMjIzMzYgYzM5NTlmNmU0MDQ0NzhiZDU2MzM5YTNlMTZjMDMxYTYyYTAyMTZmZCBsZWdhY3ktdHJ1bmsKKzIyMzM3IDk1N2RkNjQ2YjViNzQzNGZkODlhMzA2MTc0MDc3YjMxMmI2NTIyYmQgbGVnYWN5LXRydW5rCisyMjMzOCA2NzY5OGQ2ODkyMDMyMGZhOGUyMWFlZTNlZmVmYjAxNGE2YjgyYTNmIGxlZ2FjeS10cnVuaworMjIzMzkgNDBhMTdkOTUwMGE4YjZlZTdmMjk0ZjYzYjI0NmNkMzJiYWE3YzUyOCBsZWdhY3ktdHJ1bmsKKzIyMzQwIDk4YmJhOTgzYmZkMzdjZmY5OTA5MmRiNzAyNDlmNDg5NGE1YzNiYTYgbGVnYWN5LXRydW5rCisyMjM0MSBkOTgxMjE5MzBlNzA2MWY0Y2JmNzI1MmYwN2Y3YzQwYWQ1YTQ3MjhkIGxlZ2FjeS10cnVuaworMjIzNDIgM2Y4YTU2ZjUyY2Q2MWJiYTU1Yzk4MGViZDk0YzVlOTE0NzliYjAzMCBsZWdhY3ktdHJ1bmsKKzIyMzQzIDY0NjNjZDlkYjJmY2VlY2Y1OGMyZTY4ZDQzOTU5MzIwOGQ1ZGUwMTUgbGVnYWN5LXRydW5rCisyMjM0NCBmYjEyZWE5MjkwYjJkMjE3MjkxNmFhMzVjMzJhNzMxYzFmOTAyZTA1IGxlZ2FjeS10cnVuaworMjIzNDUgODE1ZTc4MTI1MzU3YWY3OThkNTgyODU1NWU1MTkwZTU2ZTIyMjUwYyBsZWdhY3ktdHJ1bmsKKzIyMzQ2IDRhOGFiNjc3NzNhOWM2YzUzYTUzMDVjZGQ2MThiNzA2YjUwZTYzYjggbGVnYWN5LXRydW5rCisyMjM0NyA4YzM3OGY5MDg2Y2Q3M2I1NGJmYmIyMWJiZGUwNjY4MDJjMDNjZDNjIGxlZ2FjeS10cnVuaworMjIzNDggZTAwMWE5Y2RlNmJhZjZjOGFjZGI2ZTVhMmRlOTM3ZGVkOWQ4YmY2NSBsZWdhY3ktdHJ1bmsKKzIyMzQ5IDJkNjdkMjM4ZDRlOTE4YmFiZWMxYjM0YTI2MGVjMTE1YWMyZDNkMzUgbGVnYWN5LXRydW5rCisyMjM1MCA4NTI5MmQ5NTllMWI4NzdlOTU3ODM5ZWI1MTY1ZmVjMzNiNzNkZDBhIGxlZ2FjeS10cnVuaworMjIzNTEgMDhjZmQ4ZTk5ODA2NjI4NDE5OTIzY2JkYmJlMGQ4NzkzZGEwMTM0YSBsZWdhY3ktdHJ1bmsKKzIyMzUyIGYwZDUyYThmZGU1ZmU4ZDk5Mzg5ZDE1YjFmNTFlNTViYjQ1YTJmMWYgbGVnYWN5LXRydW5rCisyMjM1MyBlZGY4ZDJkMWE5MGI2OTg5M2Q1YWU2YjU4ZTA0M2Y4YmFhOGMzOWRlIGxlZ2FjeS10cnVuaworMjIzNTQgMmYzYjE4MzA5Y2NlNjc4YzQ2ZmNkZWNiNjY4NDU0YzU2NGYwMmIxMyBsZWdhY3ktdHJ1bmsKKzIyMzU1IDgwOWFlYzY0YTc4ZWJhMmY4MTAyOWMyYWI0ZTkyOWE3OGFjYjFkODAgbGVnYWN5LXRydW5rCisyMjM1NiA0ODFiODFkMzAwZGY4MmU5NGU5ODBmNDViYzExMzk2ZGZjNTU4YzliIGxlZ2FjeS10cnVuaworMjIzNTcgM2YzNGY3MjRmMDE0ODliY2JkNjE5M2U4OGFkMDY2NWEwM2NkYWY4MyBsZWdhY3ktdHJ1bmsKKzIyMzU4IGNkNDQyNTQzNjBiNmVhOTRjN2Y0ZDE3ZGMyMjI2ZWNlZjFiZjVlNTEgbGVnYWN5LXRydW5rCisyMjM1OSAxZTZmNGJiNjUwNjlkMjNlMjRjNjAwM2JkNjBhZjZiOTZiNmI5MWUxIGxlZ2FjeS10cnVuaworMjIzNjAgNjRkNGFkNzNhODg3NWUwZTgxODIxMzBkNDBhZDA5Y2NiZTc5NmJjZiBsZWdhY3ktdHJ1bmsKKzIyMzYxIDdhMWVmNjc1ZDhhY2YwNDRhZDAxY2E0MDhiYzc3YmFhMDVjZTQwOTMgbGVnYWN5LXRydW5rCisyMjM2MiAyZjQxYzk1MmJlYjA1OGVkMzhmNjkzM2ZlYmY1YTAxM2QwNDcwYTQyIGxlZ2FjeS10cnVuaworMjIzNjMgNzc2NjI4ZWVhOGY3MzY3NDYwZmFkMDlkNTNhZGQ0YzY5NWY3ODU1NiBsZWdhY3ktdHJ1bmsKKzIyMzY0IGI3NjU4ZTY2NWQyZWM3YTM5ODc0ZDhmZmM3N2JhMTNhMTg5MWYwYTMgbGVnYWN5LXRydW5rCisyMjM2NSA5N2EzZDNkNzAyOWY4ZmIyNmIyNDQ1MGRlZGM1NDdmYWUxOWU0NTcyIGxlZ2FjeS10cnVuaworMjIzNjYgMzUzNzA2MmIzZGMxYmUwODFkNGI4ZTQ2ODI3MTRlNGQ1YzFmYThmZiBsZWdhY3ktdHJ1bmsKKzIyMzY3IDlkMDI0YWUwNTgzN2M5NGJlODY1M2VjZDEyM2U4NjljNjRiOGE1NGMgbGVnYWN5LXRydW5rCisyMjM2OCBkNjRlMDU5Y2QxOTlkYTM4ZWExMmY2NDM3YTRjMjBkY2E4YjE1MWRkIGxlZ2FjeS10cnVuaworMjIzNjkgYjA2ZDlkYmRhZjhmYmU3NWJiMzEzMThjYjUzNDBhZjk5MDQxYmFjOCBsZWdhY3ktdHJ1bmsKKzIyMzcwIGIxNjBmYTYzZjQwYzU3YTQ0MTM2ODQwNGY1MWI1ZWQxYjAzYjlhMTEgbGVnYWN5LXRydW5rCisyMjM3MSA1ZDZiMmMxN2VhMmNkN2E4NzE4MTIwMDY4ZjM2NWM2OTljZGM4NTEzIGxlZ2FjeS10cnVuaworMjIzNzIgMDM5ZTNkMjZlYTM1Y2E2MTMzOGFhMjUxMDk2OWRlODYzOWZlNjcwOSBsZWdhY3ktdHJ1bmsKKzIyMzczIDY3ZjM1NGQ0MzQ3ZDU4MjI4MjM2YjZhYThkZjVmNWViYWMwODhlOTggbGVnYWN5LXRydW5rCisyMjM3NCAzMDg2MGJlM2FlN2JlOWY0ZGRmNWYxN2M2MGI3ZGFlNTJiNDc1NGIxIGxlZ2FjeS10cnVuaworMjIzNzUgODAyYzRmOTQwYTRlYTMxYTA5OTM2MWIzYTZjMDAzYzI0OWExYTIzZSBsZWdhY3ktdHJ1bmsKKzIyMzc2IDk2NjEwOTNkM2UyYWZmYzNmNzY5MzAzNzBmZWM1MjkxZGE3Nzk1NTAgbGVnYWN5LXRydW5rCisyMjM3NyA4MWY0Y2RmODY4NTU3MjI2MmIyYjk4MWU5ZDVjNTU1OWFkOTc3ZWZjIGxlZ2FjeS10cnVuaworMjIzNzggMmY2NTkzYmY1OGFmYmY5M2ZkYTQ2ZDZiNTA0NWEwNjc0MGQ3ODM2NCBsZWdhY3ktdHJ1bmsKKzIyMzc5IGNiMzQ2YmFlZGFkNmM0YTQxOGJjYmNkODA2MjE0MGE1YjFhNWU5NGUgbGVnYWN5LXRydW5rCisyMjM4MCBmMGRiMzQ1NjIxYmE3ZWZjYWYyZDAyNzUzYzExNDRiODI5NWI3YjY4IGxlZ2FjeS10cnVuaworMjIzODEgNzA0YWQ4MzRkZTI3Njk2YmU1YTUwZTkxZWRkYmU2ODczMDViOWI1NCByZWxlYXNlMjEtbWFpbnQKKzIyMzgyIGIwMDAyZDdjMjJiMWYwY2RjYTk2ZWE1NTExODI1ZmIwMDNkYmQxMjIgbGVnYWN5LXRydW5rCisyMjM4MyBmZmY2YzY2Mjg1OWQ5YzBhMDliODgxYTdkYmMwM2IxNjE1ZWIyOTRmIGxlZ2FjeS10cnVuaworMjIzODQgNTBmODhlZTcxZDQ1YTNkN2YyODA3MjA2OWJiNDE4ZDM3MzZkYTI4ZSBsZWdhY3ktdHJ1bmsKKzIyMzg1IGNhMTJlMWUzMzNlYTEwNDAzNjAyODkxMzllZTM3Yjg4NWM0OGQyNDYgbGVnYWN5LXRydW5rCisyMjM4NiA2MzcwYTBmOTg4ZjBkM2Y2NWEyMTc5YzlhZjY5ZjZlOTE2YWJjMjM5IGxlZ2FjeS10cnVuaworMjIzODcgZmRlM2IwZjcyZTM4OTAyZWVjZTU3OGNkOGE0MzU1ZTEzZTQ3NTYwZCBsZWdhY3ktdHJ1bmsKKzIyMzg4IDFkNDYyYjczNzgxMGRjODIwZDk5N2YyZTgxMzQ2M2IxNWViYmM1NTIgbGVnYWN5LXRydW5rCisyMjM4OSBmYzM5YzIyYjVhN2FkMTViNDc0OGVjNWUxMDA3OGVkYTRkOTZjYzdjIGxlZ2FjeS10cnVuaworMjIzOTAgYjE0OTUxY2QyNTY3M2E2MDE2NmM3MGU4YTQ5MTQ3NTZlMWExNmMxZCBsZWdhY3ktdHJ1bmsKKzIyMzkyIDI5NjdjYTk2ZDA3ZWU3ZWUwOTk3YmI2ODA4MzkxNTU3NDZjNWM5ZjQgbGVnYWN5LXRydW5rCisyMjM5MyA3OGQwMGY3MDIzYTIxNmYxYjc3NTgyMTM2OGJmZTFmMGExZjZkYWEwIGxlZ2FjeS10cnVuaworMjIzOTQgY2RkMGM3YTQ1NTc1YTI5MTFmOTViOTBjY2YzOWI0ZmZmOWRlYzljMiBsZWdhY3ktdHJ1bmsKKzIyMzk1IDMwZjhiNjU0YzJlNWJmZjNjZGFmMTJhOWIxODEwMWNkNWRmNWMwMTYgbGVnYWN5LXRydW5rCisyMjM5NiBiY2ZlMzBjZDFmMGRlMTZjOWVkOTU4MmM0Yzg3MDdkYjg0ZTg4NGVmIGxlZ2FjeS10cnVuaworMjIzOTcgMTE1ZTQwOTlmM2Q5NzlmYjBkZWI0NGM5YjZiM2IzOTZmZmYyMTBkNyBsZWdhY3ktdHJ1bmsKKzIyMzk4IGJlZTc1NTcyMTNiMjI5OTMyOTY0NjNkODg5MDMyMzllMmM5NmM3ZjkgbGVnYWN5LXRydW5rCisyMjM5OSBhOTdjODA2NGM5ZDgzYTQxNThhN2FlNjkyZWQ5ODhiMWYzNzEzNTNiIGxlZ2FjeS10cnVuaworMjI0MDAgNjgwMjMyZmI2MWYzMDIwN2YxZGM3ZmZkMjc0ZjhkNDY5YWE1OWZjZiBsZWdhY3ktdHJ1bmsKKzIyNDAxIDA5NWM4OWE4MjVhOTBhMWJmOTdkODgxMTViMDU1NjYwODEzYjdhYzUgbGVnYWN5LXRydW5rCisyMjQwMiA3ZTlmNWM1OWU5ZjI3ZjAyNjRkYTI2NTcwNDc0ZjlhZDM1YWY0ZWVlIGxlZ2FjeS10cnVuaworMjI0MDMgN2U0NDg3M2RhZjdiZGMzN2JhMWVmYzkzYjFmMjIzMTg5ZGJkYzFkNyBsZWdhY3ktdHJ1bmsKKzIyNDA0IDMwMWJjYjAxYjUwMzQ1ZjFhZDYwMzc0OWRmODZiNzhhZDk0ZmNhMmUgbGVnYWN5LXRydW5rCisyMjQwNSAwMWE5Yjc4MDcxNjBiMTgxMDhhMzg5NDJiN2YzMTIwM2ZiNjhmN2NjIGxlZ2FjeS10cnVuaworMjI0MDYgM2MxYzk5NDhmZjY1NTdjZWRjMGNjNDJmNGNiMjg4YjVkYzkwNmJmNiBsZWdhY3ktdHJ1bmsKKzIyNDA3IDM4MzdkY2NkMTFjYWQzNTI3NTAwZGExMjRhZmYzODBhODQ3NTdjODUgbGVnYWN5LXRydW5rCisyMjQwOCA1MGZiNDY4M2E0NjE4NjM3OWZkNTdiMzE4ZGNjZTc0MzNkMzEwZWZiIGxlZ2FjeS10cnVuaworMjI0MDkgMmM0YzJjYWFiY2ZjZDkzYjM0YmYyMzljZDJlYjczZmRlMzQxOGU4ZiBsZWdhY3ktdHJ1bmsKKzIyNDEwIDQ3YTQ1ZGEwM2IwOWFjODEyNWZjNTA3NWNlMjc5OTUzMDkyNzdhNDIgbGVnYWN5LXRydW5rCisyMjQxMSBjZDEzMTBlODdmZTIxNTVmMzQzYzVhNTc4OTM4YmFhODg1ZjY3OGNmIGxlZ2FjeS10cnVuaworMjI0MTIgNjdkY2YwNGZhNzU0MTg1NGM1YWFhZTgxOGY5NmRmNjY2Nzc3MDhmYyBsZWdhY3ktdHJ1bmsKKzIyNDEzIGFjYzBmZmFiMDc3MWM5MDM3NDM4ZGZiZTk1NDc5ODNkNWQwNzQ1ODkgbGVnYWN5LXRydW5rCisyMjQxNCBkZTFjMmQ0ZDcyYmExNzdhMmE4ZmUzYTA2ZGZmNDkzMjEzNGRhMDQzIGxlZ2FjeS10cnVuaworMjI0MTUgZmIxNTNlMzA2MTUyODg2ZTM0MGQ1YmQxZGFhNDc1ZTQ0NWVjMzcwOSBsZWdhY3ktdHJ1bmsKKzIyNDE2IDdiNTNmYjNiYTAxMTkyYmVhMDQ5MzExMzU2YTQwY2RmYTAwNmI3NGIgbGVnYWN5LXRydW5rCisyMjQxNyA4NjkxNDg0YzViZWY1MzNkZGEwNGNhZGJmZDU1NTIyZDIxODFmM2VkIGxlZ2FjeS10cnVuaworMjI0MTggYjQ4NGIyMDdlOTY0MTllODBjNWIzYzQ2MmRiMTY0OTUzMDU0MzZjMCBsZWdhY3ktdHJ1bmsKKzIyNDE5IDRkZDM4ZDkzMDE1NzNjOTBjY2Q5NGU4ODUyZmIyZjhkMDNjNTYzZjMgbGVnYWN5LXRydW5rCisyMjQyMCBjOWE0ZTZkMWJjMzBiMTk4ZWJmZmFmMTEwNDdiMjcyNGUzYzg1M2U0IGxlZ2FjeS10cnVuaworMjI0MjEgYzBhMTZiNGM5ZWRiN2UxYTA5YmI2YTMzMWE1NmRjYjZhOGVlNzE5OSBsZWdhY3ktdHJ1bmsKKzIyNDIyIGQzN2UxNzY1ODA0OGRhYjhlZDNlOTgwZTA4YzBiOGI3OTA2ZDAyNWUgbGVnYWN5LXRydW5rCisyMjQyMyBmNTEzYzZjN2QxNjcwYmNjZWQ1OTYzYTEyNWJjOGExNzMwYzExNTc5IGxlZ2FjeS10cnVuaworMjI0MjQgZThiZTQwYzc1YTNmNzE3YzdlNTVjNGM4MWRjZmE4Y2NlMzkyMDBiOSBsZWdhY3ktdHJ1bmsKKzIyNDI1IDc3NjQwYzM4ODQ3YmEyNTdiMzlhOThiYzAxNWM4YjVhMWEyOWNjMzAgbGVnYWN5LXRydW5rCisyMjQyNiBkMTZhM2E1YzhhODZiMTMwYjI5ZDJjYTEwYTJlZGYxZDdmY2I1N2E4IGxlZ2FjeS10cnVuaworMjI0MjcgMzczYjZhYmFkYzUwMGZjYzhjZmNjNjYxMzZmNjI0ZmIxMTg4MmM3ZSBsZWdhY3ktdHJ1bmsKKzIyNDI4IDI0MmFjNDI3ZjBkMGYwZDNkNmY5MTdiYmUwOTUzZmQ4MWEzYTc3NTMgbGVnYWN5LXRydW5rCisyMjQyOSAzYzdhZDUwMzdhYjFiYzVhMjIzYTk0NmM5ZDM5MTExZTI1MjRiMzhhIGxlZ2FjeS10cnVuaworMjI0MzAgNDE3ODU3OTNhOGEzNzVlMGJlMWZmOGFmYzAwZjQzOWZiZDlmODNjYSBsZWdhY3ktdHJ1bmsKKzIyNDMxIGNkMWMyNzg3ZWJiNGE5MzAxOTRiMmE0YzNkYWM4YTYwMDIzNzM3NTggbGVnYWN5LXRydW5rCisyMjQzMiA2ZTQ2YzdjZDM3NDkwZTE0MTQ0OTBkMzBhNDIwYWQ4ODU3MDI1ZTU1IGxlZ2FjeS10cnVuaworMjI0MzMgNzFmMDVmZDMwZTczZDVjYjc4Mjc1NDM2NWNjNGVlOTQ2MzRkZDc4YSBsZWdhY3ktdHJ1bmsKKzIyNDM0IDI1NTkyNjY5ODY5MmQ0NmM5MWExMGZhNDBkNzBkMWMwNThmNWE1YzcgbGVnYWN5LXRydW5rCisyMjQzNSA4NGI2MDIxMzE1OWIwMjIzNjgwOTI1YWQzYTkzNjkxMWRmZjA4ZmU2IGxlZ2FjeS10cnVuaworMjI0MzYgMGY2MTJkNjg3ZWJjZDc3NDc0ZWQ5MTMyMWI3OWJjMTcxYmEwMWU1ZCBsZWdhY3ktdHJ1bmsKKzIyNDM3IDUzZjM5OTU5ODc5OTllYzNmNjEyNmE0NTljN2IyMjI2ZDJlOGMxNDYgbGVnYWN5LXRydW5rCisyMjQzOCBhY2IxOGM5ZmIyMGY2YTUxOTA4YWIxZGUzY2NkMTU2MTE1YjUyMjMxIGxlZ2FjeS10cnVuaworMjI0MzkgZTI5YmE4ZjFlN2Y4MGEyZTYyMjVlYzUyODMzNDdmNTM0MDM1OWE4YSBsZWdhY3ktdHJ1bmsKKzIyNDQwIDY1ODg1ZWE3NmMzNzcxNjQxOGRkMTJkNmNhZGRlOTBlMWY5NDFkYTEgbGVnYWN5LXRydW5rCisyMjQ0MSBjYjdmYjU2NWM4OWI5NGZjODMxZjQ5ZDMzYWQzZTgwMDJjYjM1N2RjIGxlZ2FjeS10cnVuaworMjI0NDIgYzMzNjNlNGQ2ZDFkNjBhZDRhZWVhMmFjYmZlNjM2MjM5NWE3YWQyZCBsZWdhY3ktdHJ1bmsKKzIyNDQzIGM2MTI5NDI4ZTA1M2NjYWQwMWJkN2U2MWNkZmJmY2Q1YzhmZmRiNDMgbGVnYWN5LXRydW5rCisyMjQ0NCAzOGI1OTA2ZmYwMzFkM2NmOTNjMTI2OGQ1ZDA5NTExMjRkMDgxYmQ4IGxlZ2FjeS10cnVuaworMjI0NDUgZTExMGNkNGZjM2M2MjUwZDE2MGRmMzYyNjUzZTc1OThkODcyNjI5NCBsZWdhY3ktdHJ1bmsKKzIyNDQ2IDViODdlZTQ0MDAwYmFhMDZiODViNDkzYjM4ZWQ5NTU3YjYyYzQ2ZGUgbGVnYWN5LXRydW5rCisyMjQ0NyBhMDhkMGU1ODYxY2NmMjU4YWIzZDQ4Zjk1NTYzNjNkM2YwOTU1ZDMxIGxlZ2FjeS10cnVuaworMjI0NDggYWM2ZDljNzQyODY0MzI1MzE2ZDhmNjhmODBkZGViODNmZTVhYzYwMCBsZWdhY3ktdHJ1bmsKKzIyNDQ5IGQzZGQwZjJmYjFmNDQxYTg2NTRmYmM3Zjk0MzFhNGVhMWQ4NDNjYjAgbGVnYWN5LXRydW5rCisyMjQ1MCBkOTljMTI0MGQwYWMzZWU5OWI0ZWM0MzZkMGY1Yzg2ZmM2NWUxNmY5IGxlZ2FjeS10cnVuaworMjI0NTEgNzg4YTE2MzUxZTE4OTQzODg2OTUyZjZmZTU4ZWY0YjUxNjg0MTQ5OCBsZWdhY3ktdHJ1bmsKKzIyNDUyIGZiZTIwNzRjNWZhNWEyMTkxNDIzZTk0ODkxYmQ1MzhiNDQyYzRlYTcgbGVnYWN5LXRydW5rCisyMjQ1MyAzYjk4Y2YxNjkyZDQxNTVjZjkyZmNkMTU5NGE1YjQzOTYzZjVlNWZjIGxlZ2FjeS10cnVuaworMjI0NTQgYmUwMjRjMjc0ZTAyY2Y5YTI3YzQzZmY0ODVhODY4NmFmYzg0Y2ZhYyBsZWdhY3ktdHJ1bmsKKzIyNDU1IDM4OGJjZGVlNTEyOWEzZGZhZGM1ZDA1NjAxNTQ2OTU5NDI4ZmFkNzcgbGVnYWN5LXRydW5rCisyMjQ1NiA5ZjgwYzcwYTdhNTFlYmY3MDEyMzI2NThmYmVkOTU1M2I5YTZmMWJmIGxlZ2FjeS10cnVuaworMjI0NTcgMDZmOTAyNzE0MWZmOWFiOTIyODBkYjIzMzkzYWUyZjc0NDdhNDBhOSBsZWdhY3ktdHJ1bmsKKzIyNDU4IDJmZjU3MDJhZGI1NmRhYjg0MjljMDMwYzY0MDNmYjM3MjVkOGIzZDkgbGVnYWN5LXRydW5rCisyMjQ1OSAzOTU2YjIyZDVlMjkzNGY2MmViZDcxZTM0ZDQ0MWE3NTcwMmZmNWQ4IGxlZ2FjeS10cnVuaworMjI0NjAgZmJmMWFlNzY5MzA2NjAxNWNmZmQ1MzliYjk2OWI0OGNmZjZmZGVlMCBsZWdhY3ktdHJ1bmsKKzIyNDYxIDk2OGQxNjk1MDFmMjc2NmFiZDBiMmU1MTM2YWEyY2NkYTdjYzFiNjUgbGVnYWN5LXRydW5rCisyMjQ2MiA2NjE3MDMwYzUxZTNhZDg1MDMwYzdkZTFkNTMyNzU0NGM1ZGY2N2NlIGxlZ2FjeS10cnVuaworMjI0NjMgYWYxYzY4OTMyNGY1MzE2YWY2NWUxNTA1N2FhYzVkZmVjZTY1NmFkMSBsZWdhY3ktdHJ1bmsKKzIyNDY0IGZlZGJhODY4NjVlMjk0Yzk0YjBmYzljZTVjODY0MGUwZDRhYTE4NTYgbGVnYWN5LXRydW5rCisyMjQ2NSAxYzM5Yjk2ZDI5YzMyNWZhZDExNTI5NTc4ZDUwY2RhZDkyMTNlMmRhIGxlZ2FjeS10cnVuaworMjI0NjYgMTRmNzgyYmE0MGY5MTJmNzU4OGM2MDhlNjNiZDkyNWNlZTc5NTAxMCBsZWdhY3ktdHJ1bmsKKzIyNDY3IDA0NjQzYTE4NDU0NmExMTY3ZjlmYmZjZmU5NDZkZDIwMGU4ZGMyMmMgbGVnYWN5LXRydW5rCisyMjQ2OCA0OWZkNzI0MzUxZjRhODU0YjdiMjJiMmYyNWUyNWE4YzE1Y2NlMjE0IGxlZ2FjeS10cnVuaworMjI0NjkgY2E3ZGJhY2JiZTE4NjZiNmRhNzRkNzA3YmQ1OTBjN2I3YjUxMzU1MiBsZWdhY3ktdHJ1bmsKKzIyNDcwIGMzYzg3Y2U0YWZkY2E2YjM3OGJlYjNkMWJmYzQwODQ4ZGYwMGU3OGYgbGVnYWN5LXRydW5rCisyMjQ3MSA3ODYxZWU5NTFhOTFjNGU5ZjVmZjcxNDAyYzI0YzJlZTRkY2QyNDQ2IGxlZ2FjeS10cnVuaworMjI0NzIgZWI1ZTJiNjgzNTRmNWRlYmYyM2QzMDIwZjhhZWMyNDM0ZTcwZGQ5MiBsZWdhY3ktdHJ1bmsKKzIyNDczIGJkOGNiNjY1YjVlMTA4YjJmOTRjZjA0ZDQ4YzVlZjZmMjczNDMwNGMgbGVnYWN5LXRydW5rCisyMjQ3NCBlOWE5N2IwMjg4OWIwODBmODNjOWRmNDkzOWU3NGNlOTljODFkYjRkIGxlZ2FjeS10cnVuaworMjI0NzUgYTlmZjBmNmZmMjYwZWE0MTM2MTE5OWFiOGQ2OTJiNjRlYzgzNGI3NiBsZWdhY3ktdHJ1bmsKKzIyNDc2IGRkODJjZDQ4NmQ4YTFkMTlhMjQ3OGNmMDFjMGRjNzBhODU3ZjE2OWMgbGVnYWN5LXRydW5rCisyMjQ3NyAzNWM2NWQ5YWE4NmEyNmY4NzliYmVmNjBmOGQ3YzlkOTE4NmZjMTMxIGxlZ2FjeS10cnVuaworMjI0NzggYjY1MzEyMjM4YzBiNjY0YWFkMzJkZWM4ZWFmODdlZmIyNzUyYTJlOSBsZWdhY3ktdHJ1bmsKKzIyNDc5IDFjZTVhOTBmYjE5MmI4NDY5ODJjZmFmMjc0NTgyMDlhYjg4Y2VhZDEgbGVnYWN5LXRydW5rCisyMjQ4MCBkODk5YmZiZmZiYmExNzk0NzU3Y2YwMTc2ZjNkNTUyM2Y2MzEzODdkIGxlZ2FjeS10cnVuaworMjI0ODEgYzM0YmJmMTczODVlNGQ0ZDBjODVjNDY0Mzc2M2FjYzM0ZDI4ZjdmYSBsZWdhY3ktdHJ1bmsKKzIyNDgyIDU1MDE5NThlZGMzNjFkMTRjODFlMGRkNzIwMzI4ZTViNGVkNjZkZjYgbGVnYWN5LXRydW5rCisyMjQ4MyA0YzhkNzg2OGE4ZTc2MTAwMzUzYzRhNjczMGQ1Y2Q1MjAzYzUzZjEyIGxlZ2FjeS10cnVuaworMjI0ODQgOWZiNDljZTI0MGQxOWViZTRlY2Q5MWNhMGVlMGQ2MTJlMmM2YTMyYyBsZWdhY3ktdHJ1bmsKKzIyNDg1IGI5NTAyZDFhMjdhN2E1OTc4YThiYWNmNzFjYWRlZGUyZTM5ZTQ4ZWQgbGVnYWN5LXRydW5rCisyMjQ4NiAxYWZjMzExNmM2MDIzNWJhMzBkZTkyZmZkZGU0MjZmM2Q1ZGZkOGU0IGxlZ2FjeS10cnVuaworMjI0ODcgMWJhOWUzNjg0ZDM1NDgyYjczYTM3NGZmNTc0MmI1NjRjZTM2ZGRmYiBsZWdhY3ktdHJ1bmsKKzIyNDg4IGYxMGI2OGVjZWVmYzFhYWZlMjk0NWVlYjlmMzFlMzNjNTM4YTY4OWEgbGVnYWN5LXRydW5rCisyMjQ4OSBiZTg1ZjY4NmFkOTdiYmJlMjBmYzRlMDVlYmNmM2IyNmU2MDNlMGQ0IGxlZ2FjeS10cnVuaworMjI0OTAgNmY2YWNiZjc4OTM5NDNmODM0YjVjNDIzYzllMzkwODFiMjBmNzkxNyBsZWdhY3ktdHJ1bmsKKzIyNDkxIGI4NjVjZDVjMTkyNTAzNmRhZWFiM2Q4YjJhZGZjM2I2YTM1ZTUwYzYgbGVnYWN5LXRydW5rCisyMjQ5MiBhNWE5MzJjMjE1ODMwZTA5NTA1N2Q2YzI2NjU5ZWNmMjI3M2U1MWRmIGxlZ2FjeS10cnVuaworMjI0OTMgYmE4YzYyZTVmOTJkNjlkZmEzMWNiZWIwMmQ4ZmZjNWQ2YjY0YWM5MCBsZWdhY3ktdHJ1bmsKKzIyNDk0IDE0ZTYwNTFkNWYxZjA3YThiNDQwYTI3Y2MwNTNjZTgzNGFjMGE0YmMgbGVnYWN5LXRydW5rCisyMjQ5NSAzYWEwNjA2NDQ5MDMxNjZlOTFkNzVhYzdhMTI0M2FhNDFmOGU4OTQ5IGxlZ2FjeS10cnVuaworMjI0OTYgNWFkNzFmZGIyMDViMzU2N2FiMmIwYjA3NzRjY2E2YmZmMTlhMjJmOSBsZWdhY3ktdHJ1bmsKKzIyNDk3IDVjMmJmNmNkZTEyMzAzYjFjMmFjMjIzYTliMjdhMjdmMDYyYThkZDcgbGVnYWN5LXRydW5rCisyMjQ5OCBmN2EyMTMwYTI1NjM2Nzc0NGRlNzM4NDNkZGY2OTI4ZDdmOTU4NzA4IGxlZ2FjeS10cnVuaworMjI0OTkgMzc1NThlODY1ZWFkNTRjMjc5Yzk2MTU3ZGRhNTU3YjI1NmM0N2JhYSBsZWdhY3ktdHJ1bmsKKzIyNTAwIGMzZDUzZDM0YWI0NGRlYmM2OTRiMzBiMzZkZTNlYjk2ZDA1ZGQ4YzIgbGVnYWN5LXRydW5rCisyMjUwMSAxZTg3ZGIwY2EyNDgyZTFjOGU1MzEzNmM3YzY5NzIyZTg3MDQyMWJjIGxlZ2FjeS10cnVuaworMjI1MDIgMTQ1NmVjNzM1MDg3MmQ2N2E5NTJiOTUyZjBlNTk0ZDI2NzY5NWRjMiBsZWdhY3ktdHJ1bmsKKzIyNTAzIDE1N2JiYjg5NjE5OGI5OGMxZmY5YzlhMzUzMWNiNTY4MzA0NjRhNzkgbGVnYWN5LXRydW5rCisyMjUwNCAxMDY5MDkwYjEyNGVmODdmM2U1Y2QzZjM3ZTg3OTljNTc2OThmMDU1IGxlZ2FjeS10cnVuaworMjI1MDUgM2RkYjIxMDkzMmNhNmRkMWM4YzM0ZjY1MjNhZTIyZTFjNzgwMDlmMiBsZWdhY3ktdHJ1bmsKKzIyNTA2IDZjNGE4NzMwNjYzYWRlMGU4ZTM4NDdlOTg5OTVlZDAxOTkzMmExYzUgbGVnYWN5LXRydW5rCisyMjUwNyA2MzAzMDI2NjY0NjYyYjlmZDBiOTQzZTdmNWU4NzgzYzg3NjdiMTkxIGxlZ2FjeS10cnVuaworMjI1MDggODE0NDBkZDMyNmJiZTE3NTJlYWZkMTA2ODVkZTg1ZjIyOWViOTA5ZCBsZWdhY3ktdHJ1bmsKKzIyNTA5IGI5NzAxNTM4ZjgyNzZhNjk0YzVmYWI1YTdjNWY2Y2Q5ZGY1ODQyNzYgbGVnYWN5LXRydW5rCisyMjUxMCBlZDlhYmFiOTcxMDc4Y2RhZmIxMWQ4YmNlOGZiNzEyYzQ2OWFhNzJiIGxlZ2FjeS10cnVuaworMjI1MTEgY2VhOTQ1NzY0ZGIyMTlmZDk0YjY2OTliYzg2MmQ3YTI2ZTMyNDYwOCBsZWdhY3ktdHJ1bmsKKzIyNTEyIDExOTAzZWIwMDlmNjcwMjFjOWJkNjQzOWY1YTU0NjZlMWM4NmRlYWMgbGVnYWN5LXRydW5rCisyMjUxMyBmYTc4NmY4YTc1NzBhNWIzYzI2Mjg5YjAyM2U4YWFmNTJiMTgwY2FjIGxlZ2FjeS10cnVuaworMjI1MTQgYTdiYmFjNjljOGVmMjI2NjA2N2U2OTE4Y2VlYzFmZTJiZTVjMjZmNSBsZWdhY3ktdHJ1bmsKKzIyNTE1IGIwZDJkZThjZTI0ZjRjMjU3MzM0Y2JkNjZjMjY1NzI0MTE4M2RlODcgbGVnYWN5LXRydW5rCisyMjUxNiBhZjAwMThiYjhjZmMzMTllY2JiOTYxMzIzMjc3NWFhMTdhNmIyMDI2IGxlZ2FjeS10cnVuaworMjI1MTcgMGMyYjQzOTFkZjdkZDBjNGU1YWRlZmI0N2E1YjM2MDk3NjgwOTExMSBsZWdhY3ktdHJ1bmsKKzIyNTE4IDZjYjlmNTM4ZGNlNDk4N2QwZjJiZGFkMzM2ZGNmYjg5ZDMzNDYxZDkgbGVnYWN5LXRydW5rCisyMjUxOSBmYzc2MTczMTIxODI4M2Y3YjFiNmUxNzY1ODkyN2M4MDliNjYxNzVlIGxlZ2FjeS10cnVuaworMjI1MjAgYTYzYTY5MzM1NTRmOTUwZDgyZTM5MTRiZjJmYmI0OTZlNGQwMDhkMCBsZWdhY3ktdHJ1bmsKKzIyNTIxIDZmNjJmNWE2MmEyYzZiZDA2YTkxZWQ3NGFhOTM5MDkwZGRiYmYwMjIgbGVnYWN5LXRydW5rCisyMjUyMiAyZDg4ZGVhNDY0MTc3Y2E1N2MyNzJkZGVmM2M2NGExMDY4ZGJjM2UzIGxlZ2FjeS10cnVuaworMjI1MjMgMWY0ZWI4YzkyNWQ1MThlNTliY2E4MDI2YTQyNDJiYTQxZWU0NGE1NCBsZWdhY3ktdHJ1bmsKKzIyNTI0IGY3ZGMyMWNiMTY2MWRjMzc4YjIzOTM0NWQ4ZDIxYmM0NWIzODMzMTAgbGVnYWN5LXRydW5rCisyMjUyNSAzZWEyOTA5ZTA1MWZmYjY2NzcxOGQ1MTQ3NmUzYzdiODM5ODU5ZTMzIGxlZ2FjeS10cnVuaworMjI1MjYgY2JhYTU0NWM3ODhkYWE5NzkyMTA0NjA2ODE1NGYyYjdmYmI4MTg3YSBsZWdhY3ktdHJ1bmsKKzIyNTI3IGQzNzBhNThmYjdmZDhmM2RkMDU5MmZhZGE0YWQzNDYwMzNhN2U3OGQgbGVnYWN5LXRydW5rCisyMjUyOCA3OTU3YjNmNWQ0NjJkN2RkMDE1YTMwYWNmZTM1NzM0NmI2YWM5N2JiIGxlZ2FjeS10cnVuaworMjI1MjkgNDIyNDZiOGM1OGJiYTg5NjBiM2NiNzQ0MmQwNzJkODA0NTY3ZDg2MSBsZWdhY3ktdHJ1bmsKKzIyNTMwIDFmZWMwMzAxMjM0Njc4OTU0YzAzYzJkNjgzNWY3YTYyZGE2MmU5N2MgbGVnYWN5LXRydW5rCisyMjUzMSAyNjFlMjhlN2ZhMDFmYWExMjVlMzRiYjJiNDdjMGQyOWY5ZDY0MGYwIGxlZ2FjeS10cnVuaworMjI1MzIgYjUyNWU2MDJmNmMyYTQyODU5NjQ5Y2RjOTc0MThmM2YyZjZlZTI0YiBsZWdhY3ktdHJ1bmsKKzIyNTMzIGRiNDg4Y2M5ZjI1OTg4NmU2NmU3MWQ4NTFlZTYzYzM5ODI3NjBiOWYgbGVnYWN5LXRydW5rCisyMjUzNCBlZmRjZjQyZjg4NTI3MmViZGQ4YTkxYTJiZmIwNzg1NzI4ODZiOTU1IGxlZ2FjeS10cnVuaworMjI1MzUgNzNmNjg1ZGI4YzBjNzkyOTdmOGI3NWYyY2EyNDJjNjUyOWZmZGIyMiBsZWdhY3ktdHJ1bmsKKzIyNTM2IGI0MTYzOGExMWU0ZTQzOWVmZGJlZmIwMDVhYWNmNWQyOGVlMjg3YTggbGVnYWN5LXRydW5rCisyMjUzNyBmOTNjMTZjMTBhNTVjMGU5ZGRhMzczMGJkY2EzYWEwNmEyY2I4MTMxIGxlZ2FjeS10cnVuaworMjI1MzggZWE5Y2ZjMzhlMTFiZDgwZTE4N2NkOTEzMjZhZDMxMzQ5MTBhNzBmMiBsZWdhY3ktdHJ1bmsKKzIyNTM5IGJhODdjMjQ0ZmI1OWJlNjU0YjdmYmFkZWQ3MTY2N2ExYzA3OWVhMzMgbGVnYWN5LXRydW5rCisyMjU0MCAwNjEzZmE1N2FlNmQ5YzczNTRmZWY4NGI1ZTI1NjgwMDJjZjA2YWNhIGxlZ2FjeS10cnVuaworMjI1NDEgMDVjOWEzNWYyMTRmMjhiNDlmNTc1ZmVkN2NlMGQ3MzAyMzRiNjBjMSBsZWdhY3ktdHJ1bmsKKzIyNTQyIDYwMjY0ZDFlMTAwZTlkNjRlOTIxZjQ0YjkyNmVkZmZjNDQzMDQ5NTggbGVnYWN5LXRydW5rCisyMjU0MyBkNmIwODRjMjViYThiZDExNzRmMGY0MmI5ZTI5MDhlOTJlNTJiYmU3IGxlZ2FjeS10cnVuaworMjI1NDQgZWJmYjc0Y2U3ZTU2ODEzNDc3NDkyMTJiMjc1ODAwYjE4NzdjZDQ2MyBsZWdhY3ktdHJ1bmsKKzIyNTQ1IGIxMTEyYTJjMzU0ZmYzYjRkNWY0OTAzNjhhM2RkYTk0YWU0NzM4NDYgbGVnYWN5LXRydW5rCisyMjU0NiA3ODZhY2VkOTM3YzUzODliMWM1ZjkxODUxMTdjMWVmMWE5ZWY5MGFiIGxlZ2FjeS10cnVuaworMjI1NDcgNjEzMGRlZWI0Y2M2MTViNGMwMmMwZTY1MWU0YjA4ZmMzZjZlMDVlZiBsZWdhY3ktdHJ1bmsKKzIyNTQ4IDg2Y2Q1N2Y5ZGI5Yjk2ZjBlZDZjZjk1OTk2M2ZiM2QwZTEzZTI4NGQgbGVnYWN5LXRydW5rCisyMjU0OSBkNDY2ODJiZGE4MmZmNWNkODAyYTYxYWRmNDkzMjE4YjEzZGUyN2FjIGxlZ2FjeS10cnVuaworMjI1NTAgODE0NDcyMmRjMDc2NWVmOTJhM2YwN2ZlZTc2YmI5NGNiNjBjMjY3ZCBsZWdhY3ktdHJ1bmsKKzIyNTUxIDcyNTdlODdlMDcyMDE2YTM3ODAwZTE2Y2M3Njk3NjE3MDJhZDAyOWYgbGVnYWN5LXRydW5rCisyMjU1MiBkYjk3NjI1MjlmNDU0NjY2NjQyYjBlMDQ5NzQxZmVkY2FmMDBkYTNkIGxlZ2FjeS10cnVuaworMjI1NTMgMzhiZTE3N2JkNDkzYTA4ZjEyNTc0YzIwOWVhYjUxYzJiZGExZWQ0MCBsZWdhY3ktdHJ1bmsKKzIyNTU0IGE0OGEzZDc1NDc1ZWNmMmYwMzVkNWM0MDQ5OWEyODVlNDU1MzQ2MmUgbGVnYWN5LXRydW5rCisyMjU1NSAzZDk3YTRiNWM2YWE1ZTQ3M2E5MDg4ZDg2YWZkOTNjMjE4NWU5NThhIGxlZ2FjeS10cnVuaworMjI1NTYgMTNmNGJhMDU1Njg3ZjQ3ZTcxODkyNTQyODcyMmNkZDZkYWM3NzY2YyBsZWdhY3ktdHJ1bmsKKzIyNTU3IDliNWEyYzFhMDJmM2MwYjlkNTc4NjQ2ZTIxMWM1ZWUyYjgxNWYyYWQgbGVnYWN5LXRydW5rCisyMjU1OCA1YjZhNmQ3ZDQ0YWVkMmIyMDFiN2U0MjU0YTZjMDFjMjBiODg3YTVkIGxlZ2FjeS10cnVuaworMjI1NTkgZjkyMGRkYjc3ZDhiM2Y4NDA3YTlhOWQ5ZDhiMzY2YTFjZDU4NzQzNiBsZWdhY3ktdHJ1bmsKKzIyNTYwIDk0OTA1ZWI3MmY0ZmNiNWIyMzU4OTkxZGY3YmIyOTdlMmRkMThmZGEgbGVnYWN5LXRydW5rCisyMjU2MSAwNTFkOGUzODBmMzgyZmVkMWE0NmZkYzFlZDJhYTc0ZWU0ZjcxZWEzIGxlZ2FjeS10cnVuaworMjI1NjIgZTkzZjVjMzg1ZmY0NDM0YzM0YjEwODg3YTMwOGYzYjI1Yjg5YjE4YSBsZWdhY3ktdHJ1bmsKKzIyNTYzIGQ1YWNmZjE3OGFkNWU2NjQzZmVlMmUyMTY3NmE3NmU3ZjMxMWZjZDEgbGVnYWN5LXRydW5rCisyMjU2NCBjMGVlMTBlMGUxM2UzNWU1NDI4MjhmMDRiZDUwODdkMjA2MGY2NDU2IGxlZ2FjeS10cnVuaworMjI1NjUgYmU5YjUwNzA0ZTRjMGE4MDMxNDljNTgwYzQxZTBmZmI3ODdmNDgwYiBsZWdhY3ktdHJ1bmsKKzIyNTY2IDBkYWQwZGM3MTQ5YjJiN2MxZGIwN2QyZGU3ZDNjMzNmY2QzYmFkN2MgbGVnYWN5LXRydW5rCisyMjU2NyBlZmY4Y2E2NzliZjZhZWNhNjczZDBhZTQ1Y2NkOGI2YTIyZjk5Mjc2IGxlZ2FjeS10cnVuaworMjI1NjggZWExMzFmZjFkOGNkODJmOTk5MDg5ODMxZGVmMWJhZjA4NTgyMzA2YSBsZWdhY3ktdHJ1bmsKKzIyNTY5IDkyMjJiNmUzYjM2ODdlZjAyOTI1YzIyNjhhYjg1NDI3NmMxZGUxZDcgbGVnYWN5LXRydW5rCisyMjU3MCA3OGRhY2I1NDM4ODdlZmI4MWI1ZWRjZDk0NjdiYTQyZjM1ODEwNTMxIGxlZ2FjeS10cnVuaworMjI1NzEgZjE5OWQwYWE5ZjgxMGY3Y2E1ZWE0MWIyOWEzODliYjM5ZTE3YmU5ZiBsZWdhY3ktdHJ1bmsKKzIyNTcyIGI3Mzg0MjgyMzhmMTk1MDBjYjEwYWQ1MGMwZmUzMWQ5ZDMyNTVmMzcgbGVnYWN5LXRydW5rCisyMjU3MyBhMWFkYmYwNzU2NTc3M2M5NzEwZjVmZWU3Y2M1NDliOWRjNzhkNDgzIGxlZ2FjeS10cnVuaworMjI1NzQgNjNiOWIxNzdlMzUwZmQ2NmQ1MzY0MDc0OWUyNmRjMWU1YTQ3NGM2NyBsZWdhY3ktdHJ1bmsKKzIyNTc1IDE3ODAyMDc3ZTc3Y2Y1OWZkMTQ3YzkyYjQwYTVmN2IzYTQ0MDQ1YTggbGVnYWN5LXRydW5rCisyMjU3NiAzYjMwNzliODU3Mjc0MzUyMGE3N2E3MDk3ZjQ1NDZmODdkNDkxMjJiIGxlZ2FjeS10cnVuaworMjI1NzcgOGMyYTI5Yjc1NDhlZDYyNDJlMTVkMzUwMjBjZTI5NTFlMjEzZmE3OCBsZWdhY3ktdHJ1bmsKKzIyNTc4IGJhZmJlNWNjOTQxZmYxYWM3MjA3ZDU3YTVmZjE5ZGJhNjEyNDQyNjMgbGVnYWN5LXRydW5rCisyMjU3OSAyYmYyNjkwOTY2ZmZkMzIxYWM2NTNhMWUxZjY2N2Q2M2NlOWE0NTdhIGxlZ2FjeS10cnVuaworMjI1ODAgMzZmYThlOWJjMmRhOWU4MjU0MzkwYTk0ZDI1YjBlNjQ2NjNkOTk2NCBsZWdhY3ktdHJ1bmsKKzIyNTgxIDAzMzQ2MmRmMTdiZjU4YjdiN2RiNzc5ZDZlM2MxNWI1MDYxYzk1ZjMgbGVnYWN5LXRydW5rCisyMjU4MiBjNGIyYTZiMDRkMGI5MGMxMDQzMDRhNGRlMWZlMGJiOTkxNTg0MDRiIGxlZ2FjeS10cnVuaworMjI1ODQgZmNhYjM2YzkzMzI3Y2E1YTU2ZmMwYTA2NzBiYWZmNDU0YTIyMmJiNSByMjJhMi1icmFuY2gKKzIyNTg1IDQ4NGMwNWRjNDk5ODQxNzdkMTVmZWRkYjk2MjFmM2U3MmQzNWQ3OWMgcjIyYTItYnJhbmNoCisyMjU4NiAyOTRhNTZiZjczMTVmMDAwNGJmZDVhMWQ3ODhjYmNhYzU1MjQ2NmY5IHIyMmEyLWJyYW5jaAorMjI1ODcgZmQxMTk4OTkwNDVjODM4NGNjZWVkODYzNjBlZTQwZTIyMWQ2MmI1NiBsZWdhY3ktdHJ1bmsKKzIyNTg4IDllNGY3MzllOWE4NDg2OGVhMDVmNjBlNGUxZmY4MTFhYmViMzkzMTQgbGVnYWN5LXRydW5rCisyMjU4OSA2Mzg2ZjAxZjI0MDE2MmQ5N2EwOGI5ZWUyYjg2NzYzOWU0ZjgyZDY0IGxlZ2FjeS10cnVuaworMjI1OTAgNWYxZTc1NzFiMTI5Y2IwN2I5MmE1NTFlM2FjODYwNzgwY2Q3YWIzYiByMjJhMi1icmFuY2gKKzIyNTkxIDhhNmNkYTE3NTVlYjk5MWQyNDM0NjdkN2Q5MDYxYjk0NDMyNGU1MzkgcjIyYTItYnJhbmNoCisyMjU5MiA3MzQwNjZmMjE2NGYzNmU0MmIyNjUxYzAxNzAxOWYxMTNiYmFkZTFjIHIyMmEyLWJyYW5jaAorMjI1OTMgNWM4ZGU2OGIzY2RjYmM0NjNkYWE1MzM1OTRiN2UyNDJiNzNmYmY5YyByMjJhMi1icmFuY2gKKzIyNTk0IGFmMDU4ZDY5ZWFlZGQ3OTIyYmYxMmJkNmViNTEyOTczZmViYzRlNTUgbGVnYWN5LXRydW5rCisyMjU5NSBkNzY0ZDU1NjkyYTE0ZjQxYzY1M2ZmOWQ3YTYxMGRmMWM0M2RiZjRlIHIyMmEyLWJyYW5jaAorMjI1OTYgNDc5YjU2MGRlY2E3MDE3MTdhYTlmMjIwOTUzNGZhOTgzMzc4MWEzZCByMjJhMi1icmFuY2gKKzIyNTk3IDkzNWFhMDc0Y2RiODZhYmM5MTUzMmJiNTZiZDY0YjA3MzY1NWVlMGEgcjIyYTItYnJhbmNoCisyMjU5OCAyYTA4M2UwNTA2MTdiNTkyMWQyMjJiY2JhNjhjMjI4YjVhNzQxMTUwIGxlZ2FjeS10cnVuaworMjI1OTkgNTBkM2IzNjZlOGM4YTkwZDZmMzBkYzcyZTE0MTk4MThhODY0MzdhNyByMjJhMi1icmFuY2gKKzIyNjAwIDg4NDIyMDgxMDk1YWY0MDhlY2I4ODY4ZGEzYzhhNTczODZhMTgzNWYgcjIyYTItYnJhbmNoCisyMjYwMSBlOWI3OTVkNGMwNjBjZDcyMjA0M2Q3MjI5Mzc3NDYyOTY1ODdjMzY5IHIyMmEyLWJyYW5jaAorMjI2MDIgN2I1NTNiMWMzZThiZDE0ZDBjOGI0MTY5YzRiYzIzNmFhMzRhZDlhZiBsZWdhY3ktdHJ1bmsKKzIyNjAzIDYwZDVjYmJlYWRjM2I4NjhmNmVlZjVlZmM2YmVmZGExNWRjNmI0MTEgbGVnYWN5LXRydW5rCisyMjYwNCBmYjQ3ZGI4NTQxMGU0OWY4NTU4MzAwODdmMWRjZmQ1ZmJmZjY1ZTNmIGxlZ2FjeS10cnVuaworMjI2MDUgYzJkYjE4YzA3MGZlY2RhMTZjNGRmNDUxNTIwODRkZGVmOGYwYjM5YiBsZWdhY3ktdHJ1bmsKKzIyNjA2IDVlYmRjM2FkODg3NzlmZThhZGVlOWQyZWE3ZTRhZGU3NjJkMDliY2EgbGVnYWN5LXRydW5rCisyMjYwNyBjZTZlYTQ0NDllOTdjYjFlYTI5OTAzNmJiYjg2MDFlMmMxNGE5NjE5IGxlZ2FjeS10cnVuaworMjI2MDggYjljYWY4Y2IxMmEyZWMzOGY2MWYzYTFiOGJkYzI1MzA1MTMzNzcwZCBsZWdhY3ktdHJ1bmsKKzIyNjA5IGI0NTA4NDczMDkxNmQ5OWUwMTIwMjc0Y2FlMDEyNWNkZTBkYTcyM2MgbGVnYWN5LXRydW5rCisyMjYxMCA3N2Y0OTVlODIyYzE1ODIwMWFmOWVhYmU1MzgwZmJhNDIxY2U2Y2UyIGxlZ2FjeS10cnVuaworMjI2MTEgMGU3YWVkNTNiNTgzMzMyYmRiYjY3OWFjN2VkZGRiNGZlNTgyZDI5ZCBsZWdhY3ktdHJ1bmsKKzIyNjEyIDNhMmZlNzQ1YTBiYmZhZmY3NTU5YzgyODFmNDU0ODBiMjI1YWRhMTIgbGVnYWN5LXRydW5rCisyMjYxMyBiMjI2NThhNDY4Y2ZhYWQ0MzY1NDJjMDFjNzIyOTc2Mzg2YTU3YzBjIGxlZ2FjeS10cnVuaworMjI2MTQgNjIxODQ5OWFlYmRhMmI5OTkyNjI0MTYwMzAwNjU4OTdjOGUwZDg5NCBsZWdhY3ktdHJ1bmsKKzIyNjE1IDBmODczZDA2YWMxM2ZiZTE1MzE3MzgyNTJmY2JjN2M2YmUwNmU1YTUgbGVnYWN5LXRydW5rCisyMjYxNiBmYjMxOWU5Y2MyYWRmZWQzZmE1ODdjMjAxZjFlYWFiNDY1ZmEwYTdhIGxlZ2FjeS10cnVuaworMjI2MTcgNzc2MWFjOGJlYjgxOWUyY2FiY2NlOWJhMWIzNjQ3NjAyYjdmZjAxYSBsZWdhY3ktdHJ1bmsKKzIyNjE4IDBjNmM2ZTg3ODM4OGI5YWM0OWNhZGJiYzUzNDgxNjZmNzBjYTY4NjIgcjIyYTItYnJhbmNoCisyMjYxOSA4OGIxZWNkMDQ4ZmJjMjNjNTA3ZTkwOTJlODQxNDY3OWEyOWFmOWRjIHIyMmEyLWJyYW5jaAorMjI2MjAgOGJjN2JjYTMyYTk1NjhjNmFjMmQ2MzgzMTI4MTc1MjgyMDVhNTljMiBsZWdhY3ktdHJ1bmsKKzIyNjIxIDJmYzEwMmI4MzhlZDgyMGY3NjgxNmE0NWZmY2M5MTkxYmI0NzNmMDUgbGVnYWN5LXRydW5rCisyMjYyMiA5NjI2M2NmYjJjOTY2Mjk5OWJjNmFhN2EyNDM1ODJkN2VlZGY0MDU0IGxlZ2FjeS10cnVuaworMjI2MjMgZTg1MWU2MTQ4YWQ4ZDllNTY1ZmYzOGZmODM1NDhmZTg2MjMxMDc3ZiBsZWdhY3ktdHJ1bmsKKzIyNjI0IDEwMGRjYzllNmYyZjNhYWQ5MDAyOTFkNjYzMDc3MjkyNDY4ZWQwZjIgcjIyYTItYnJhbmNoCisyMjYyNSBiOTRjZTdkNzBjZmNhOTA2NTVkYmU2ZGY4YjY3NzBjMjFkOGVlNmZmIHIyMmEyLWJyYW5jaAorMjI2MjYgNjBjMGNmZjVkNTdlY2JlMGU5Y2YxYjc1ZGNjZGZkMzhlYTRkYzJiMyByMjJhMi1icmFuY2gKKzIyNjI3IDg1M2RiZTEyYmJlNjhhNjYyYWVjNzZiNTI0YzBiMjljMTMwZTRiOTcgcjIyYTItYnJhbmNoCisyMjYyOCBiZTViZTk4OWNhZmZlYTA0NmJhMGUzMzBjZmM3ZTU4NTZmMmExNmRmIGxlZ2FjeS10cnVuaworMjI2MjkgODYwN2JjODkwYjFmMDI1ZDJkZGVmYzhmMGNjMWYzMTRiMTUzMWM3YyBsZWdhY3ktdHJ1bmsKKzIyNjMwIGEwMzg5OTM4OTBiMjNlNmMzMmNkZTk0NTgwMTQ5NjUxZmZiYzc3OTYgcjIyYTItYnJhbmNoCisyMjYzMSA1NTQ0NTA0MDlhNzM4ZTIxZjk4MDA5MzcwYTBmODA1NzNlNjk3NTRmIGxlZ2FjeS10cnVuaworMjI2MzIgZDllYTk5YTZmNmI0NDY2ODZlN2M4N2VkNjEwYzgzYzBmNjdiYTYyZCByMjJhMi1icmFuY2gKKzIyNjMzIDViY2JjNTkwZjRhNzExNjBjZTg2MTExMTYwNDYzODAyN2UzMDdjYzYgcjIyYTItYnJhbmNoCisyMjYzNCA4OTk2ZGM1MjBiNTdiYjcyNGE5M2ZiYzZhMWY3NWM2NTM0YzZhNWZjIHIyMmEyLWJyYW5jaAorMjI2MzUgYWM2YmZhNTVmY2ViZjRiODAxMDZiNTE2Mzc5MjU2MWM4Zjg4N2RiMSBsZWdhY3ktdHJ1bmsKKzIyNjM2IDYxMjVkOWY5MjQ0MWRjMzJhNTNkNjExNWM4ODI5MWM0NmVjN2UzNzggbGVnYWN5LXRydW5rCisyMjYzNyA5ZGU4M2RkYTlmMDlhM2QxNmJhZTI5YTljYTQzMTU1OTU3YzViOTU0IGxlZ2FjeS10cnVuaworMjI2MzggOTMwNmY4MjhmYmI3NzM0ZmIxMmQ1NzdmNGYwOTVmNzYxMDk1ZjM2OSBsZWdhY3ktdHJ1bmsKKzIyNjM5IDAxZTY2NzgwYWY2MTYzMWJlYjc2ODE2NmRhNWU4MzNjZmYxYjQ5YjYgcjIyYTItYnJhbmNoCisyMjY0MCA4MWM3NTY1YTU2YWNjZTg1OGU2ZWRmY2VhZTg2MzM1Yzc3NmFiMzRlIGxlZ2FjeS10cnVuaworMjI2NDEgN2U1ZTk3NGIzZDM3NmQ0YmI1ZWZhMTMxOThhYmYyYWM5ZGI3NDU3NyBsZWdhY3ktdHJ1bmsKKzIyNjQyIGJjOWM4Y2ViYzJlZmM4MDc4NjA1MTRhOWVlZjBjOGNlNWQwM2JmMjUgbGVnYWN5LXRydW5rCisyMjY0MyBjNDAzYWYwMDM4ODRlNmFkYjVmNTIzZDkxZjc2ZmRmODRlOWMxYWQ5IGxlZ2FjeS10cnVuaworMjI2NDQgMGQxYmJlNjVhMWQ4NzdiODU3NTA0ZTgzMmIzNGE1NGZmMzE1NzcyOSBsZWdhY3ktdHJ1bmsKKzIyNjQ1IGQ0YmE2ZTJhYWFlMzRhYzNlMGJiMDM5MTE3OWY0N2JmMWRlZDUzODAgbGVnYWN5LXRydW5rCisyMjY0NyBjY2M0YWY2ODdjYWM2Y2QyMThlYzAxMzk1YmExYWI5ZGFhZDg5Nzg0IGxlZ2FjeS10cnVuaworMjI2NDggNWY3MzExMTVlMzUyNmJkYTc4YTMxYWNmOWE5NzAzZjAzNjBiZmViMiBsZWdhY3ktdHJ1bmsKKzIyNjQ5IDQ3NjMzYjc5ZWMxOWYzYWU2NmVkZGRmYjYxY2Y2Njk3NzYwMzI4MjUgcjIyYTItYnJhbmNoCisyMjY1MCBiMmRhZDRkMTdjYTlhZTFkZmYzZmI1YzIzOGYwNWRlNzM5OGNmYTJiIHIyMmEyLWJyYW5jaAorMjI2NTEgMDkyOGNkNjJkZGVhNWQyMGMxYWM4MDI0MDc4MzJjZmI2M2Q4MzMzNCBsZWdhY3ktdHJ1bmsKKzIyNjUyIGE2Y2UyZDE2ZDczOWY3MmIyNGI3MTlkOGZhMDk1MjllMWY3MWY3N2IgbGVnYWN5LXRydW5rCisyMjY1MyAwYjExZjA5Y2YxZTQwZDNjYzA1MTdjOGY3NjA0OTJmZmJlMmYwNGE0IGxlZ2FjeS10cnVuaworMjI2NTQgMjkzYTQxMmM5ZmQ5N2Q5NTI0YmU1OWVjNjYxMTc4YzE2ZDE3M2M4OSBsZWdhY3ktdHJ1bmsKKzIyNjU1IDEyNTc4NWYxZTEyZmU3YjgyYTUxODgyZTUwYjY1OWFkNzE3ODZkMWQgbGVnYWN5LXRydW5rCisyMjY1NiA4MTFmMjg5NjM3YWQyNGVmMWUyZjI0Y2NkZjFkYzg5OTMxYmZmNzUwIHIyMmEyLWJyYW5jaAorMjI2NTcgYjE1OWNlMzMxNWNiOGRhNjhjMGJlZDUwYjhjNzU1ZGQyMzViODFhYyByMjJhMi1icmFuY2gKKzIyNjU4IDM0YTc0YjgxYzliMmZhNjg1NjQwMDgyYjIxODNjMGQ0ZWY4MjNmYjMgcjIyYTItYnJhbmNoCisyMjY1OSA3MzBkY2Q2ZDU5MGIyYmJlMWNhOGVhZDJhYTdiZDllYmIxODZjMTgwIHIyMmEyLWJyYW5jaAorMjI2NjAgZjUyZmEyYjcwM2Q3MmM2ZGQwMTlmMjVkZGY2NzRjMTVlZTJmNzMzYyBsZWdhY3ktdHJ1bmsKKzIyNjYxIGU3NmY3YzgzZWIwZDU2MDk3OTdhNjQ4YmM1MGRhNTc2ODFjMzdhYjIgbGVnYWN5LXRydW5rCisyMjY2MiA1YzAzNTg0Y2YzY2MxYzY1ZGRiMTk2YTUzOGQ3MDA2OThmZjYxYTFmIGxlZ2FjeS10cnVuaworMjI2NjMgMmI3YzBiZWRmZmRiZDM5NDI5NDYzMDVjZjAxNjQ1ZjU1NjVlOGUxNyBsZWdhY3ktdHJ1bmsKKzIyNjY0IDg1ODYyOGNmNmUyNTY5NDU0NzJhY2M5NjlkZWI2Yzc3Mjk3N2Y1MzMgcjIyYTItYnJhbmNoCisyMjY2NSAxN2U3YjFhMzMxZjM1ZGZlZjAyZGI4OWRmNDg5YjAxZTQxYmMyNGU2IHIyMmEyLWJyYW5jaAorMjI2NjYgZmEzOWYwMGRkNWMzMzNiZGFjY2FkOGQ3ZWEwMGViMTdlOTQ4Y2UxYSByMjJhMi1icmFuY2gKKzIyNjY3IGZmZWY0ZTQxZjA2ZWRjNDFmZDgyYWRjMWM1NDUyNGYzNGJjYWVhYzkgbGVnYWN5LXRydW5rCisyMjY2OCBjNjM3ZjI5YzgxOThhZTAzNzJjNTgyZDAyNjY5MmM0ZGViMWU3MGJhIHIyMmEyLWJyYW5jaAorMjI2NjggZDdmNDJjOWRlOTQ0MGQ3YTZhMjUyYzUwZjNkY2IwNWM5N2ViZWNjNCByMjJhMi1icmFuY2gKKzIyNjcwIGRlMmZiYzUyYzFlYjlmNGQ4MTliMjdkMjE2N2JmZDFkMTMyNzdlMTcgbGVnYWN5LXRydW5rCisyMjY3MSA3NTI2OWFiMjZkMDMxMzc3YjE3MDI2MTRjOWYyZTRjZDA5MjU5ZTljIGxlZ2FjeS10cnVuaworMjI2NzIgOGQ2NDA0NDUzNDQ4NTdlNDhkNWEzNDk3MmFlZmJjNDMxNjYyZDc2ZCBsZWdhY3ktdHJ1bmsKKzIyNjczIGM3MjYxNmQ2MTQzYzJjODk3MjcyYWYxMDgwYTQyMjc0NDE2ZWM5OTMgbGVnYWN5LXRydW5rCisyMjY3NCA5Y2Y2Njk1ODExMTAzNGJlNjMyODEwN2ZhYjQ5MzVkZTBlNWY1ODc0IGxlZ2FjeS10cnVuaworMjI2NzUgNTAwYzM1OTAzOGM3YjIzNWY5OTE3ZmEwOGQyMzk4MmVhYzFhMmEzYiBsZWdhY3ktdHJ1bmsKKzIyNjc2IGIxMzliZGI2ZDQ4YTRiY2Q1MDk5Y2M4ZmUzN2Y4NDJhYWQwMWU5MTEgbGVnYWN5LXRydW5rCisyMjY3NyA5OTlkZTU0YWM2YTYyMWU2ZTdmYmYyZjk4OTU5YmY4YTgxYTA5ODZkIGxlZ2FjeS10cnVuaworMjI2NzggNWQ4MWM2YmZmMzA2ZTVhZjBhNjU4MDE2MmY5ZWZmNmI1YTJjYTRmYyBsZWdhY3ktdHJ1bmsKKzIyNjc5IGMxNDBiZDdkM2JkY2ZmY2VmZWUwZTg5OWI0Zjk5NjczZDYzYWY1ZGYgbGVnYWN5LXRydW5rCisyMjY4MCBkYWQzMjA5Y2U5NzMzMmE5ZGEyNTU5ZTZiOWY1ZTkxMDliYzg4OWJjIGxlZ2FjeS10cnVuaworMjI2ODEgZTE2YWQ1ZjdmMzg3MjIxYmY3ZWUwYmU3Y2JlM2ZjYjc2NjdjNTBhZCBsZWdhY3ktdHJ1bmsKKzIyNjgyIDVmZWMxYzlhMjFlYWRmNGU5NTVlMDJiNGM2OGRjOGIxZGY1ODgxZTMgbGVnYWN5LXRydW5rCisyMjY4MyA3YmU0YzczYmFjNTNlMTQ5MzdhNGI4OGI4ZDA4M2VlYjIzZDk1NGQwIGxlZ2FjeS10cnVuaworMjI2ODQgZGU3NDgzNDdhNDA0ODBmZjQyNDAyOWZjNzhkZTdiMmE4ZTg2NjY1NiBsZWdhY3ktdHJ1bmsKKzIyNjg1IGNhMWI4Y2MxYmEyYmQ2NWJkZWVjMDI2ZmRjMDU2MmU3MDE4NTAzZTAgbGVnYWN5LXRydW5rCisyMjY4NiAwNzU3MDk4MzUwYzI4NTdkNTA2ZjRmMDMwYzk3NDg4OGZkZTY1MDNkIGxlZ2FjeS10cnVuaworMjI2ODcgNGQ2OWQ3NDJkYjJmNDRiZDg2NGUwOGE1YWNhM2ZmNzMxMzk1YjY3MiBsZWdhY3ktdHJ1bmsKKzIyNjg4IDA5MjJkNjA5YWNkMTI1MmE3N2VhMDk1ZDljNzZiZDI0N2I1ZGY2YjQgbGVnYWN5LXRydW5rCisyMjY4OSA3MTM3MmEwZjUwZTFiNGQ1MGQ4MDQxMWE3YzEzNjI1N2JjMTFjM2ZkIGxlZ2FjeS10cnVuaworMjI2OTAgMmFlYTM5NGY0N2RkNDBlMWYyYzY0Yzc0MWEwNmJhMWM2MmUxZDk1OSBsZWdhY3ktdHJ1bmsKKzIyNjkxIGY1ZDg3YzQxZjY1YjIwMjdiNjA5MGFhZTU3ZmU2MTMwODY2OTMzYjIgbGVnYWN5LXRydW5rCisyMjY5MiAzYmZjZGNhYmE3MDM0MjU0NGNiNWM1MTk4NmMzZWVhNWVmYzcxZmEwIGxlZ2FjeS10cnVuaworMjI2OTMgMjVkMmY2NDgzMzg0MTlmYjVhMGE5M2QyM2RjYTY5OTk4ZjNhN2Q3MyBsZWdhY3ktdHJ1bmsKKzIyNjk0IGY5NGM0YmI3ODg4YjJjNzgyNzlhMzFiNDVjZTZlY2QyNzJkOGU4NDcgbGVnYWN5LXRydW5rCisyMjY5NSBjZWUxZGVjYzRmZjIwOWEzZjQyZWYzN2U1YzQzZjRjNGFlNmJiNzgwIGxlZ2FjeS10cnVuaworMjI2OTYgMjgxN2YxZDNhZGJlMzAzZjBhYTA1NGExYzg3OTRhNTdlNmI5NTFkOSBsZWdhY3ktdHJ1bmsKKzIyNjk3IDEwYjQ0ZTNiMzkwNTQ3YTE3NmZhNDBhYzU0NDM2ODQxMDEyYmJlZWIgbGVnYWN5LXRydW5rCisyMjY5OCA3ZmI1ZjE1Njg1ZGQwNmE5MjY4YWI5NGVkNWM1ZTA5MTNkZWY0MjdiIGxlZ2FjeS10cnVuaworMjI2OTkgOWFmZDlkNWZiOTdhMGI2MGU2YzE0MDYyMDkzNjk0NzgzNWFiYWVkMSBsZWdhY3ktdHJ1bmsKKzIyNzAwIDI1YjliNjM0ZDllM2QxZWFmZjU3MDUzMTE5NWM3MTdkMzkxMDFiZWIgbGVnYWN5LXRydW5rCisyMjcwMSAzYjVmMzRjNWJjNmM5M2ExNzAwODBkNWI0NzU1YjI0ODljNDU0M2FiIGxlZ2FjeS10cnVuaworMjI3MDIgNmMyYjdiNjI0ZWYyM2YyMmQyODQ3ODU4Nzk4YzdmYjUwNjUyMzhiMSBsZWdhY3ktdHJ1bmsKKzIyNzAzIDhmOTBlMWY1MGMxMTgzOGZjYWQwM2JmODAyZmVlMWI4ZmMzNDc3NDEgbGVnYWN5LXRydW5rCisyMjcwNCA1MDAxOWNiNzg0ZTBkY2VlYjNkZGExNTRmNmFiOTAyMzk3MDc3OGI4IGxlZ2FjeS10cnVuaworMjI3MDUgNzUzMzQxMmRjNThjZDZhOWZjZWJmYjY5OTNkOWE3NGRmYzg0ZWNmMiBsZWdhY3ktdHJ1bmsKKzIyNzA2IGY3YWFmNzIxYTgxYjNjZmI3NWM4NWJjNTZmOWQ5NTk4NzZlMDQ2MzUgbGVnYWN5LXRydW5rCisyMjcwNyAxMzRlMTMzZDhjNDQ1Y2M2ZGFmYzY1OTFkN2I1N2IzZGEzZWY4MDdkIGxlZ2FjeS10cnVuaworMjI3MDggMGI2NDJkMjIwYjAyZTJkMGRmODkzYWMyMzg4ZGQ3NjlhNTFmYjZhZSBsZWdhY3ktdHJ1bmsKKzIyNzA5IDQ1ZDBlMTE0MjEyZTk4MDUxNjQ4YmMxYzY4ZTk3ODA2ZWQ3M2Q3ZmQgbGVnYWN5LXRydW5rCisyMjcxMCA0YTMwZWM3OThlNmMyZWI4NThhMDcwYjg1MjQ2YTY4NDQ0MTZmYzMxIGxlZ2FjeS10cnVuaworMjI3MTEgNjFkNTNjMDUzZTQzNGU5ZWEwNjYyYzUxM2MyMGQxZjIzYzRiZGVmYSBsZWdhY3ktdHJ1bmsKKzIyNzEyIDZlNmZjN2I2YTM2MDFiZGU2ZWY0ODM3MzhhZGZiNjI0YzI2MDhkMjkgbGVnYWN5LXRydW5rCisyMjcxMyAwZGNlZTliY2Q4MTNlODYxNjA1Mjc4ZWQ5NmVjMTc0MTY3YTA4M2YxIGxlZ2FjeS10cnVuaworMjI3MTQgYjNjOTJmMDEzODY5ZjA2ODllZmZkNTJjYjVhMDE5OWFhNzlkNWM5ZiBsZWdhY3ktdHJ1bmsKKzIyNzE1IDQ1ZWEzYjVmY2JlNTc4N2IwNWNiZWM2NTc2MWY2NWQ4YWZiZWE2MDcgbGVnYWN5LXRydW5rCisyMjcxNiA4ZDJiMmNiMmZlYmNmMDRlOTUxMjFkOGE2OGViYThjM2Y0MDNmMzkwIGxlZ2FjeS10cnVuaworMjI3MTcgNTUzZDY4ODQzOGM0MzQ1NmVhNzQ1ZTU0OGNmYTIzNDgxMzI1OTE0NSBsZWdhY3ktdHJ1bmsKKzIyNzE4IGMzOTJjM2U0OWRkNTZlZDE0MmZlYzZlYmFjYWEzMTUwMWQyMjZmZmUgbGVnYWN5LXRydW5rCisyMjcxOSBmOWY0YmRjYmMyNWFhZTNiODUyZGI0YzEyYzQ4OWEyODdhMDIxN2ExIGxlZ2FjeS10cnVuaworMjI3MjAgYmM2M2FmYzcwMWVmNzBkYTY1ZTBmN2Q2OTg2ZmMzMjg2YjljZGVkYSBsZWdhY3ktdHJ1bmsKKzIyNzIxIDBlNzBkZjk4NDI0ZWRjYzM2Yjg4ODFmY2IwZGEyZmY0MzNiN2IxYTQgbGVnYWN5LXRydW5rCisyMjcyMiBlMWM5MWFjNTVjY2E4MDRjZTdkMTI5MjNiNDU4MzY3ZTQyM2U0NGQ2IGxlZ2FjeS10cnVuaworMjI3MjMgNjdiMzI1Y2UwMjI2ZDQwYWYxMDEyNGRiYTM5NTZmZmUxZDIzMDcyNyBsZWdhY3ktdHJ1bmsKKzIyNzI0IDQ3OTZhNjdhOTk4Yjk5MGNiODIzMzc4YjhkN2UxZTFjZGNmMWVkMzUgbGVnYWN5LXRydW5rCisyMjcyNSA5ODRmZmExMjQ2MDYwOWI5OTI3YzFiOTc3MTUzMjI0Mzc4NjM3MjI1IGxlZ2FjeS10cnVuaworMjI3MjYgNzdmZWE4ZmExZjE2NDMxYzM5ZmVlNzJkZmM0N2JkYWNjMWVmYWNiOSBsZWdhY3ktdHJ1bmsKKzIyNzI3IDkzY2I1ZWM0NDAxNzk4ZDUyM2E2ODFmMmFiZDY1MGZmMDMxYTI3NjggbGVnYWN5LXRydW5rCisyMjcyOCBjMTcxYjA3YmY2YTllOGRlZWZjZDk3YWNmYTZjOTk2YWFhOGMwMGU3IGxlZ2FjeS10cnVuaworMjI3MjkgZGU5NzdkNzYyN2ViZmZjMTkxNzEyMDZjYTQxNTAyZWVjNjUxYmNmMiBsZWdhY3ktdHJ1bmsKKzIyNzMwIDAwM2EwZmU5YzM1MDNlZWQwNmFlNTg5YTQ3NTM0YTZhZWJjOGNmYmMgbGVnYWN5LXRydW5rCisyMjczMSA1Yzg1OWQyY2IzN2JkYzUwNjk2NTJjYTgzNDBiMzNiMGE0ODdjZmFlIGxlZ2FjeS10cnVuaworMjI3MzIgM2U2OGUxYTAyYWQyMDhhZGQ4ZjMzYmFjYzJkNzAyMGJmNGM2MjAxOCBsZWdhY3ktdHJ1bmsKKzIyNzMzIDQyYjJmMTkzNjI1NDZlZDNiODE1MTdmYmRiNzM4MWQyNjA2ZWIyMGUgbGVnYWN5LXRydW5rCisyMjczNCAzZTc0MzE4YTFiNzYzYmRiNGIxNGIzODgyNjYwMTM2YjdkYjA5OGZmIGxlZ2FjeS10cnVuaworMjI3MzUgYzYzODUwMzhkZTM5YWZlNWM3MTI2MjZiZDE4MTRiNzA2ZTgxZTU4YSBsZWdhY3ktdHJ1bmsKKzIyNzM2IGMxYWM1ZjgyN2JjMjYzMDAzYzZjMmY1OGU0Y2FiMzM2YmFjMGIwMzMgbGVnYWN5LXRydW5rCisyMjczNyBkNzliNTE4NjdjZGI1MTkwMWE1ZWQxMjRmOTNlY2ZjMDNlNTQ2NGEwIGxlZ2FjeS10cnVuaworMjI3MzggNTZiNTBlNGQ2ODdlYmE1MTIzZGQ5MDE0OWI4NDA5ZmE2ZTE0NDAzMiBsZWdhY3ktdHJ1bmsKKzIyNzM5IDY3MzRjODA2NTExNDhmNWEwODU1YWY2OGQ3ZTdkZGQ4MzZiNTFjMTUgbGVnYWN5LXRydW5rCisyMjc0MCA0MzU0YmE0NzM1YTA5Njc3NjE0NGM4Njc5MjFiZTI3NWFkYmU5ODQ1IGxlZ2FjeS10cnVuaworMjI3NDEgNjE3NTU1NTc5NjExZmEzYmIyNTc2OTkwZmU3MzJhMTg5YjQyM2EzZiBsZWdhY3ktdHJ1bmsKKzIyNzQyIDU0N2I2ZWYxMTA4Yzg0OTQ3OWQ5MDZhMzRiYWRmYjFlY2ZhYTQxNTAgbGVnYWN5LXRydW5rCisyMjc0MyBmYzVjNzU4MDdlMTk1MmNiNmRlOTYyMjJiMDI3Y2Q5Zjg1OTYxNWNkIGxlZ2FjeS10cnVuaworMjI3NDQgMDc4MjkyYmY5NGNjNzIxMGE3NWFlZWQwNGQ0Mjg0MDhiNWJmYTUwYSBsZWdhY3ktdHJ1bmsKKzIyNzQ1IGQwY2UwNDYwZjRhN2M2MWFkZDQ4NGJiNWViYTdiYTBhYTc5ZDhkMjYgbGVnYWN5LXRydW5rCisyMjc0NiBjZTRmMWU5OGJhN2U0MzY5YjNlYzkwNmU5M2E3ODNmOGFjNjYzN2NjIGxlZ2FjeS10cnVuaworMjI3NDcgNjJiZjk0MDFhMWFjZmRkZmI5ZWM5ZTRlNTMzYzgwYmJkMWY1ZmYxOCBsZWdhY3ktdHJ1bmsKKzIyNzQ4IDE3YjJhZmJhN2E2ZmIwNGEzMTIxZTI0MTZjOTk5ZTcwZWJkOTRhYzQgbGVnYWN5LXRydW5rCisyMjc0OSA1OTkzMWRiNTcyYjI0NDlhODgyNzM1NGIwZmQxYmJkYzNiOWFhN2ExIGxlZ2FjeS10cnVuaworMjI3NTAgZmVmZTk1MzE5ZjI0YjBkMjIyMjBmMDIzYzg0NWIyMjBjYjM2OTczNiBsZWdhY3ktdHJ1bmsKKzIyNzUxIDg3NjI4MDMwYWQ3NWQ2ODdiZmRlNDk2ODViNTlkOTc5ODM1YTBjNzcgbGVnYWN5LXRydW5rCisyMjc1MiAwNzZhYjhjYjQ1MWVhMDIzNzY5Y2MwYTYzMWVmOGM2ZmU2MTk4YTY5IGxlZ2FjeS10cnVuaworMjI3NTMgZGJiYTJjYTdkYzFlNWQ0ZDM2ZWRiOTlkYWNkNWVhYzQwNTU2MDA0YSBsZWdhY3ktdHJ1bmsKKzIyNzU0IDMzNGY0MTc4NDc3YWE3NzcyMTY5MWM0NGMzMDJjN2RlYTczMjY3NTQgbGVnYWN5LXRydW5rCisyMjc1NSBjZTMxOWI4MmE4ZTRkZDlkMzJmYzI2NTI2ZWVlN2Q5YTdkMDliZDhhIGxlZ2FjeS10cnVuaworMjI3NTYgNWNmOTI0MWQzNWIwOWE5YjBkZGZjM2Q5MjllZGU3YzczYTJkY2I4ZiBsZWdhY3ktdHJ1bmsKKzIyNzU3IGNjMDIzNDFkZWRlNDdlMDU4ZDVkNjQ3NzE0MmRlN2ZmYjcwYWZhNGEgbGVnYWN5LXRydW5rCisyMjc1OCAyNDQ4MGE2ZDI3YzRkNDc5MzVjOTQ0Y2QxMDljMzVjNzAwZmVkNzUzIGxlZ2FjeS10cnVuaworMjI3NTkgYjFhY2JjZjdkNTg2ODQyNmNlY2ZiNDBmODk2OGU1MTY5NDc1NWU2OSBsZWdhY3ktdHJ1bmsKKzIyNzYwIDU0NmVmMzE4YmE1ZGNkNGE3M2I5ZDc3YThiODUzNmNiYjQwOTYwZWIgbGVnYWN5LXRydW5rCisyMjc2MSA0YWVjOWNiN2ZlNWQ5ZDU4MzMyMDA1Y2I1NTgwOWU0N2Q3NWViYzY2IGxlZ2FjeS10cnVuaworMjI3NjIgMWE2Y2YzMjUxNDFlMGQ5NTVmMjBmZmVlMjI1YjQ4MWM1OTExNDM0ZCBsZWdhY3ktdHJ1bmsKKzIyNzYzIGZiYjM1MjY4ZmVkNGY4NzhiMWVjYTgyMzRjNzlkMDVhNmE3YmUwYzggbGVnYWN5LXRydW5rCisyMjc2NCA5OWU5NTNjNjcwOWNlZWY0NzE4YjNlMjE3Mjc1NDc1M2VjODYwZjdmIGxlZ2FjeS10cnVuaworMjI3NjUgYzBjNWZlNzkwMmNmMjcxYzI2MTRjNzQ0ZWI5MjBlZDlkZDBmNzRlZSBsZWdhY3ktdHJ1bmsKKzIyNzY2IDQxMmQwZWI1ZDRiYTUyMTQyNmQ4MjRhNGUxOWI5NGE0NzhkZjMxMTQgbGVnYWN5LXRydW5rCisyMjc2NyBhMDg0N2I3YTg5MDI4Yzc2NjE1ZjgwYjFiMjllN2M2NjMyNWQ4NjBlIGxlZ2FjeS10cnVuaworMjI3NjggM2E5MDIxMWEwMjk1OGZlYWU0ODdlMzAzZTk1ZGFkOWUyNmI1MWRiMiBsZWdhY3ktdHJ1bmsKKzIyNzY5IGFiMTk0ZjFmMDUzYjY2ZmRmODZjZmNiYWZmODNjYjc5ZTFlM2JmYjEgbGVnYWN5LXRydW5rCisyMjc3MCBmM2VjNTQ4ODkwOGIzYzQ5OWQ4NjAwMjAzNzIyZGJiZGJhODBmMGQ5IGxlZ2FjeS10cnVuaworMjI3NzEgNDQzM2ViYTczOWU3ZjE2YTdjMGRmMDEyMzAyOWY5ZDU1Y2E0ODAzZiBsZWdhY3ktdHJ1bmsKKzIyNzcyIGVjNTFlMTBhNjIyOWM2ZWMxNjI5N2RlMmY1ZWQ1MTgyZTU4MzIyZjkgbGVnYWN5LXRydW5rCisyMjc3MyA5NmEwYmIzYTg1MjFhMWI2YjU5ODIzN2U0ODdkMDk3MDZhZWQ0YTgxIGxlZ2FjeS10cnVuaworMjI3NzQgZGQ4ZDYxNTNhOGM2NWRiOGUxYzQ3NWM1NDQ5ODhmZDgxYzcxYzFmYSBsZWdhY3ktdHJ1bmsKKzIyNzc1IGVkZTdmY2I4YjBiMjM3NzFmNzE4MGZhOGNkMzhiOTc2YmRhZWYyOTcgbGVnYWN5LXRydW5rCisyMjc3NiBkZWFjZDYwMjcyYmUzMjQ3YmYwODZkN2QwNWYyYjI3ZGJjNWZmNGQwIGxlZ2FjeS10cnVuaworMjI3NzcgMjAyZDhkZDY1ZWI1YjJmZjRmNzBjOTdmMzBlNGE0NzdhOTY1NDdkNyBsZWdhY3ktdHJ1bmsKKzIyNzc4IDNlNzg5NzgyMjQ1OTdmNDE2MTMwOTg2MTU1ZjVhYTI4M2VkZGUzMTkgbGVnYWN5LXRydW5rCisyMjc3OSBkZTEwMTUxYTdmNjNlZGJkMTlmNDg1YWE1YWYwZjNhNDQ1MzNiMTNkIGxlZ2FjeS10cnVuaworMjI3ODAgOTc1MzYwOGUyZDU3YTNkM2M4MDcyYzFjNDMwNWJhM2FjZGNkZTE5NSBsZWdhY3ktdHJ1bmsKKzIyNzgxIGNmOWUzNDE4ODc2M2MwMjE0NTIzYzc5MDg5ZmJlMjMzODMyMGUwNWQgbGVnYWN5LXRydW5rCisyMjc4MiA0N2ZhNGFjMDQyZDdmMGUzMmU4MTI5NmNhZTYxZDNkZGE4NGU3ZjljIGxlZ2FjeS10cnVuaworMjI3ODMgYjRhM2ZjMTQ3OTI5NGI0MzkzYzQxYTVlMTVhYjU4MTc3OTQyMTU3NyBsZWdhY3ktdHJ1bmsKKzIyNzg0IDcyZDliN2MwZDIxMWRiNzY5NWIzNzdiN2I3MzI2MzYxODg2NjFlOGEgbGVnYWN5LXRydW5rCisyMjc4NSBlMTQxYjM5MmI2MWRkMmI0M2U1NjU3ZjdmZDJiODE5MTk4NDk5NzYyIGxlZ2FjeS10cnVuaworMjI3ODYgM2UxMGMwODc0MDFjZmNjZWI1ZDBlMDBjZWYxMDA3MjA1M2QzZjE0NiBsZWdhY3ktdHJ1bmsKKzIyNzg3IDJkMjUxNmUzNzI5OTMxMmNhNzQ2NGNmZDk1YzBmOWEyN2RmMGIxM2EgbGVnYWN5LXRydW5rCisyMjc4OCAxY2Q4NzY0MjM1OWNhNTk1MjlmODkzNWYxOTRiMzliZGI4MmFkOTI0IGxlZ2FjeS10cnVuaworMjI3ODkgZDcxMWU4MmVjZTIzMzJmMTAxOTk1ZWY3YzA4NzkxOWE4MjQ0NDY4YiBsZWdhY3ktdHJ1bmsKKzIyNzkwIDg1NjA1YzkzNjUyYjVhNGUwM2FiMjBlZjA0Y2RlMjUzZWQwZjhlNjEgbGVnYWN5LXRydW5rCisyMjc5MSA0NzdiNmRkZDQyNDI1ZjYyZDA4MzZlNjY3ZDQ0NmI5MTE3M2UwOTFmIGxlZ2FjeS10cnVuaworMjI3OTIgN2U2MjhmNjAyNDVlOWIyZDNiMGVmZGM0NzYwMjJmZjI3MGI5NDNkOCBsZWdhY3ktdHJ1bmsKKzIyNzkzIGRhNWVlYmJmZTQxZGE1Zjc1OGJmZDRkM2VlZmNkOTM4NTAyNjUxM2YgbGVnYWN5LXRydW5rCisyMjc5NCAxMWE3NThjNTYwMjc5MGY2OTM0YTMwMjdmYTBmYTU1MzQyMTU1MGU5IGxlZ2FjeS10cnVuaworMjI3OTUgMTlkMjcxZjI5N2RjNzU4Y2UzN2U3NTA2NmVmMDkyZDVlMTYyODdjZCBsZWdhY3ktdHJ1bmsKKzIyNzk2IDAxYTY5MDFjZDMwNWUyOWVhYzcyZTUyZTJhNzc2MWFhM2U5N2JkZDkgbGVnYWN5LXRydW5rCisyMjc5NyA2YzMwZDIwZDI3ZjJjY2E4YWFhNWU5MjViYThlNTIxOWM5NjcyYThiIGxlZ2FjeS10cnVuaworMjI3OTggN2IzOWQ5MTQyNGEyYWYwYzlmMTJmNjUwNzBmODFlMzg5ZWJjZjg0NCBsZWdhY3ktdHJ1bmsKKzIyNzk5IGRkYzRjMmY1ZWZiYzk1OThjNWE4MWQ4N2VmMDJiNjEyZWI2NWEzYzEgbGVnYWN5LXRydW5rCisyMjgwMCBlYTc2ZGVhNjQ0MGY5Nzg1NzY5YmM0NDNlMTNhNzI4NzJmZDU3OTg0IGxlZ2FjeS10cnVuaworMjI4MDEgMzdlMGIwZmNjYTU0MGY2N2IzODE2OWU1YWQ1NGVhYTc4OWVlNTNiYSBsZWdhY3ktdHJ1bmsKKzIyODAyIDJjMmNjMzFiZGYxNTNhYzY3MDVjMmNlNDQ1OWMyYWMzNTEwOWVmZWUgbGVnYWN5LXRydW5rCisyMjgwMyAwMjI1MWIwNDhiYmJmMTkyY2IwNjYwN2U0NDA0ZDg3ZTc2ODA4NTAxIGxlZ2FjeS10cnVuaworMjI4MDQgMTg0OWY0OWFhNmY4NjY1ZmI5OGU3ZjEwMjg4ZmRjNDQwMjJhYzFjYiBsZWdhY3ktdHJ1bmsKKzIyODA1IDA3Mzg4YTZhNTUyNmI5NWE0NDIzZmEwM2RkNzMzNDk0NDY3Y2I5NDAgbGVnYWN5LXRydW5rCisyMjgwNiA4MTE2OGVmNGNiNjU4YmY1Y2ZmNDc5YjEzNGUwYjY5YWU5ZTQ5MGQ5IGxlZ2FjeS10cnVuaworMjI4MDcgNDliYjQxYTY5ZGZjMzhlYmM2YzRhNzgwOTAzMDAwOTNjZDczMmUzYiBsZWdhY3ktdHJ1bmsKKzIyODA4IGQ5ZWNiMjE3MDM1NGY1NjJkZmE2YmNiZGU4ZTkyMzY2ZWIxZjJmYTkgbGVnYWN5LXRydW5rCisyMjgwOSAzODExNTgwZmRjMzczY2NkNzJkOGVjZmM5NGY0NGVmNTE3ZTY5Mjg0IGxlZ2FjeS10cnVuaworMjI4MTAgM2ZhMjljZjczMTlkNDg0NTA1NjhkZDlmNWMyOWJmMzAxYjY5OGI2NSBsZWdhY3ktdHJ1bmsKKzIyODExIDg1NmUzZmExNGNiYTY4ZmY4NDNkMDZkOTgzOWNlYTAyOWJkNjdlMzggbGVnYWN5LXRydW5rCisyMjgxMiBiOThlNDM0NjI1N2JmYmMzN2MxOGY4MzEwOWIwYTljNzY3NTA2ZDk4IGxlZ2FjeS10cnVuaworMjI4MTMgYjBmNTI3OGEyYWI0MzdmMmQxMTY3OWZlNTE4NGJjMzI1NjdmMWI2MSBsZWdhY3ktdHJ1bmsKKzIyODE0IGNlYTdmZWExNzQyYjQwMzg0MTYzNTRiMDJmMzRiNzE2MTJmMTk2NzIgbGVnYWN5LXRydW5rCisyMjgxNSA5ZGE2OGMwMzc5YWJiOWJiZWI1YjFmZGI5MWFlNTJkMDE3NDE1MzNiIGxlZ2FjeS10cnVuaworMjI4MTYgYzQ4NWQ3NzM3NmZhNDA3NTA2MDhmMzUzYzU3N2YzNDU4MmVhZTcxMyBsZWdhY3ktdHJ1bmsKKzIyODE3IDQ3NmViN2RjZWVlYzI0OTdkNGIxN2YyYjBlMGI3MjYyNGMzOGIxMTAgbGVnYWN5LXRydW5rCisyMjgxOCA3MjU3NjJjYTI3NzQ5YWQ2ZWE5N2MzNzU5YTg0OTJhZDk3YWYxZGZkIGxlZ2FjeS10cnVuaworMjI4MTkgMjY1ODhkNzAzNTMwOGYxMGMzOTU0MGY0MzI4YzZhOGQ1NjFlNTY2ZCBsZWdhY3ktdHJ1bmsKKzIyODIwIDdlZGMyZmNlMWY4ODE1NzQ4MjhlZDhkZWFhZmQ0YmQ0ZmNkYzliMmMgbGVnYWN5LXRydW5rCisyMjgyMSBiNjczMDk0MDdjZmM4ODU0YzEzNDBmMDBjMjQ1OGQxNmY3Y2ZmZmNmIGxlZ2FjeS10cnVuaworMjI4MjIgZmJkNDlkMTcxN2M0YzI4MzhhZGNlYWEzNWFmZmNmYzlmYWU2MWFiZiBsZWdhY3ktdHJ1bmsKKzIyODIzIGY2ZjkzNDE5YmZiNjgwMjNjYzI0YjgwZmVlMGYwZmUzNDA3NzM4OGYgbGVnYWN5LXRydW5rCisyMjgyNCA0M2RkYzQ2YzVhOTk2NzhjNzkwMmUyNmU4M2RkYTUyNjk2MzcwY2VkIGxlZ2FjeS10cnVuaworMjI4MjUgZGMyNzgzOWMwYjgwZmFiMWVmMGEzMDc4YWZmNzJlNTQzODBkODg0OSBsZWdhY3ktdHJ1bmsKKzIyODI2IGZkNDhhNTVhYzM2NGZlMzA3ZmFjMjZhNzg2YmE4NDEzYjQxYmRkOTcgbGVnYWN5LXRydW5rCisyMjgyNyAxM2E5M2E1ZGNiMWRlNjdlNzJiNjJiNDJhYmNmZjRkZDgwOWFiZDgwIGxlZ2FjeS10cnVuaworMjI4MjggNDRhNjJlM2I3MDZmOTI3ZjJhYjMwMTZiNDliMjRlZWQyZGM3ZmI2OCBsZWdhY3ktdHJ1bmsKKzIyODI5IGMwY2YxYTI0ZmMxM2RkOWQ5MzE0NDdlMzIyYmYyNmZkNWMyYjhiMzYgbGVnYWN5LXRydW5rCisyMjgzMCBjNDNkN2E4ZjAwYTQ1OTVhYTAwMmZlNjJjZTRlYjZkMzRiYWU2OTA0IGxlZ2FjeS10cnVuaworMjI4MzEgYzU5ZjA2ZjM4YTQ2OGY5ODAzZTBlN2ExZGRlMzY0OWI3M2QxNjgyNCBsZWdhY3ktdHJ1bmsKKzIyODMyIDUwMDlmYTZkZGZlYjMyMjg2NzViNTYxYjU1ODdmMTc5YTFiNTAyZTggbGVnYWN5LXRydW5rCisyMjgzMyAyZmUwODkxOGZhYzY2N2M5ZjBlMGExMWY2ZDdjNzI2ZjE0ZDhkNzFmIGxlZ2FjeS10cnVuaworMjI4MzQgODQ0NTUzNDczZmE0NjY4ZjAzNGE5ZDgxMmRjYTRlMjkyNzVjZWMwMiBsZWdhY3ktdHJ1bmsKKzIyODM1IGJmMmM3Nzg0MGYxY2M2ZmZiMDg3MmExOTU4OGE2NzE2MmYxNzRhOTEgbGVnYWN5LXRydW5rCisyMjgzNiA0N2UwYzBmZGQ0YzhhMDA3OTdiYzdhN2ZlNWZlMjVjOWEyMjJiZDA2IGxlZ2FjeS10cnVuaworMjI4MzcgODU3NjVlNjFkZWIwYzMxZDgzZDQwZGQ1OTAyMmMwYTIyN2E3MDY3ZSBsZWdhY3ktdHJ1bmsKKzIyODM4IGE4MGI0YjAwNmViN2NmMzNmODM4MmIyMWIzYjM2OTE1MWI3YjEwNjAgbGVnYWN5LXRydW5rCisyMjgzOSBjNDg2NTQ5NTlkYzQ2ZmQwMTQ5ZTkxM2JkYmUwZWMwYjIxYmRkNTE4IGxlZ2FjeS10cnVuaworMjI4NDAgZGIzNmUzOTZmMDQzMTcyMmFhNmIwMDMyYWU5ZTI3MDY2MzZlOWQ3OSBsZWdhY3ktdHJ1bmsKKzIyODQxIDFiZTE4ZWY4NjlhNDc4ODkzNzNkYTMyMTk5YjQ0Y2ZjNzk3MTc1OGEgbGVnYWN5LXRydW5rCisyMjg0MiBiYmRmODZmMzU4ZTk1NTg4OGI0MDRkN2Q1MWQ1NDBjNzkxOWUwZTRiIGxlZ2FjeS10cnVuaworMjI4NDMgMDY2MzE1NDQ3OTQxNmIwOTdiNGZkNTJhZGQyNmFkMmRiODMwNmUyOSBsZWdhY3ktdHJ1bmsKKzIyODQ0IDAwZGU3MTlhZTgzMTk3Nzk0YjU1ZmI5YzVhZjAyNDhkMTUzYmMyZWMgbGVnYWN5LXRydW5rCisyMjg0NSAxY2VjZTc0M2E3MDg0M2FjMzMxZmJiYjZkYWRjNWZlZGQ3ZTJjODNmIGxlZ2FjeS10cnVuaworMjI4NDYgMDRmZDM4NjljNmJiZWIyMDVkMTE5MWQ3MTFkZDk2Yzc1YmYyZTJjMSBsZWdhY3ktdHJ1bmsKKzIyODQ3IDkwNGIyZjk4MTFhMjkxMmVkZDVhZjU1NmExOTEzNTU0NGNkMGRlOGYgbGVnYWN5LXRydW5rCisyMjg0OCA1ZDk3MzQ0OGU2OTFkZjMzODU0ZWI0NmNmMjFlN2FlMjFlYTVlMWNmIGxlZ2FjeS10cnVuaworMjI4NDkgNGFjOWE0NGM3ZTQ3OGM5ZjliOGYxZmFhOTYyYTkwMzcwZjNhOTE3MSBsZWdhY3ktdHJ1bmsKKzIyODUwIDEwYmY0YmVkNTA5NmY4NGIxNzMxNGRlMDUwYTdhZTk2NmI5NWM5NjYgbGVnYWN5LXRydW5rCisyMjg1MSA2ZDVhYzNjNDM0MTYzNGY2MTQ2ZDJhYjlkMjJiN2ZjNzEzNjU3MjNmIGxlZ2FjeS10cnVuaworMjI4NTIgNDNmZTkzNzdlMmNmNjAzNjU2ZDUxNGIzOWMyYjI4OWM2Y2UxZjgxOSBsZWdhY3ktdHJ1bmsKKzIyODUzIDZiZWJhOGI2ZjYwYWRkOTZiMGE2ZWQ4OTUzZDBhMDNhODQ2MWU5ZWEgbGVnYWN5LXRydW5rCisyMjg1NCBiNGU5MTg2MTJkYzk3NTBiZWUzOGQxYTE3OTc2YTc2NzQ0MWU3MjJiIGxlZ2FjeS10cnVuaworMjI4NTUgYzc3M2RhYTQ0ODQwNmU4Yzk0ZGQ5ZGI0YWY2NmRmZjMyOWYzMjgxYSBsZWdhY3ktdHJ1bmsKKzIyODU2IDhmMDM1ODAwYTM3M2Q3NmM5OTY2ZmQ3MmZmMDc2YzNjNjhiZmMyY2QgbGVnYWN5LXRydW5rCisyMjg1NyBjMzk2YWZlZjFhYTkyMzI5YTQxZTcwODMxZDRlOWQyMzM1ZTI0NTBlIGxlZ2FjeS10cnVuaworMjI4NTggZjdjZjg5NjFjNjY3OGU0MGUzZDU0ZTMwZDRmNmM2OTI3MTZiNzY1NCBsZWdhY3ktdHJ1bmsKKzIyODU5IGY0YTg5OWU3ZWM5M2FmMDU2OGI2YjI2MjdhN2U2YTc3NmNlMTU4MjggbGVnYWN5LXRydW5rCisyMjg2MCAyNTNhYWExZWRjYmQxODA1M2IyYWIxNGNiMmMwYjhkNjhmY2E5ZGRlIGxlZ2FjeS10cnVuaworMjI4NjEgMzM3YjUzNjc5YzczNDg5ZDk1MjhlMTE0YTE2ZDY4OGU2MjQ4MzJlZSBsZWdhY3ktdHJ1bmsKKzIyODYyIGI3MzAxMDdkYmQxMzc1MmEwZmM5NzczMDE1MGZkMDA1MDhjMjk4MTIgbGVnYWN5LXRydW5rCisyMjg2MyBhODg1ZDg3NjFiZDI5MDUwMGY0YWFmZDQ3ZDdhZDlkODhiNTQzODljIGxlZ2FjeS10cnVuaworMjI4NjQgNTY2M2I4ODNlYTVkOTk5YjYxODQ3NmU4YjgwYjdhMDNjYTgzZTE5NyBsZWdhY3ktdHJ1bmsKKzIyODY1IGI3MDZjMDI3YzNjMGNhMTQyNWQ0OTE2MjEwOTNjZDM4M2QwYjBkMjkgbGVnYWN5LXRydW5rCisyMjg2NiAwYmVjNjk5NzgzZDAwOWJkYzJhMzRmODJiNjYxYWY1NTU5ZmQ4NzVhIGxlZ2FjeS10cnVuaworMjI4NjcgMWFjMTEwZTkwNWMyZjI1ZTRhNDk1YTljYmEwMGIwYjQwM2JiNjJkNyBsZWdhY3ktdHJ1bmsKKzIyODY4IDM4YTZkZGZmODY2ZjE3ODZlNTY0NGUyMDU1MzhjMDRiYzBmMDM2YWUgbGVnYWN5LXRydW5rCisyMjg2OSAwZjUxNDY1ZjlmMzM0MGM2OWQxMjY0MzM1MTM1NTQyNjA3ZTBmOTJlIGxlZ2FjeS10cnVuaworMjI4NzAgZDEwNjUzZTcxY2ZlMDQyMjA1YzM2ODBiYjI4N2JjZWRhZDBiZDYzMiBsZWdhY3ktdHJ1bmsKKzIyODcxIGYwOWJlNjQxYzdhM2ExYjE5MmRkZDJhY2U3Y2YwMWJjNmZmOTU4ODYgbGVnYWN5LXRydW5rCisyMjg3MiA1NDUwODBlMzA2MjdjZGNiMGVjZWMwNDAxMzgwMjI4MmYyOTFiNzhiIGxlZ2FjeS10cnVuaworMjI4NzMgZWYyY2Y5OTQzYWNkYTdlZWQyYzQyYzdkMGJjNzkyNzA1MWYyNDg3NyBsZWdhY3ktdHJ1bmsKKzIyODc0IDQzY2QwYjRlNzI2MWZkODEwZjhmM2I5OTFkMzZlMjRhMDgzZjI3YzYgbGVnYWN5LXRydW5rCisyMjg3NSBhZTA1NmYxMTQ5NzQ5NjU1M2U4ODk3ZDNiYjIyOThmZDQwMjIzMDAwIGxlZ2FjeS10cnVuaworMjI4NzYgYWQwY2NlNGE1ZGUxZjc4YTIwOTNmYWJjY2JmM2UxOTM2ZmFmYTM2ZCBsZWdhY3ktdHJ1bmsKKzIyODc3IDIwZmI3NTkxZjg4NTU5YzBhNjk2NTUyMDIwNDkyNjI0OWVkZTVhYzEgbGVnYWN5LXRydW5rCisyMjg3OCBjMGE0NDgyOWJjZDVmZjI2MTE1ZjFiOTVhNzc3Y2I0MDFkN2UyZjMwIGxlZ2FjeS10cnVuaworMjI4NzkgY2YxOTE5ZWE5NGMyOGEyZjFkM2Q5ODQwYzg2YjY0N2M4NzNjMTI2OCBsZWdhY3ktdHJ1bmsKKzIyODgwIGY1Y2RlN2VlYjZkNzdkYTY5ZmJmNTg3M2M1NjAwM2NjYjgwYjUwMzkgbGVnYWN5LXRydW5rCisyMjg4MSA3MWQ0NWYzMTRkOTBhZTM1MmVmMTZlMzgyOWIzM2E4ZDMwOTU0YTIxIGxlZ2FjeS10cnVuaworMjI4ODIgMDhhYmVlMmEzOThlZmE1NGVmNDZhOThkNDYxOTU1OTY1NWQwYzE0NCBsZWdhY3ktdHJ1bmsKKzIyODgzIDQwZmVhZWRiNzg2N2UzNGM3NzhmNmY3YmNiZjBkOGJmMjJiZGM0YmQgbGVnYWN5LXRydW5rCisyMjg4NCA2MGYyOTBhN2VhZThjMTQ4OWIzZjdkODI2YTk2ODEyZTJjZWE1Yzk2IGxlZ2FjeS10cnVuaworMjI4ODUgZjRhZjI3Y2IyNjMyNDBhMGEyMWUyZTI3NDc1ZWQ4NDdlMWNhY2MyMyBsZWdhY3ktdHJ1bmsKKzIyODg2IGM5NjQ3ZmE3OGYwNTJmM2VmMGI1M2JhZWVmMzUwMWYwNTYxMDEyMzYgbGVnYWN5LXRydW5rCisyMjg4NyBlMDNjZTJkNjU1ODU1N2EyOTQyZGFlMjYyODA4NjljZTJkZTFkYzljIGxlZ2FjeS10cnVuaworMjI4ODggYjFiMDQ3OWM5MTA2ZDVlZDczYWZmZmM1MWJlNmExNTk0YzJjYzliNiBsZWdhY3ktdHJ1bmsKKzIyODg5IDkyZGY2ODQ1MTIwZDY0NjE4Mzc5ZWZjOWQ2Nzc1NGRmYThkNTQ0YTEgbGVnYWN5LXRydW5rCisyMjg5MCBkNTViNzVhYzJmYjQ4ODMxNjVmNDg1MDAxOTc1ZmNmNThlZGE0ZGRkIGxlZ2FjeS10cnVuaworMjI4OTEgNzk3NDA5ZDk3MDIyNDVhMzliMzdjNDE1YTg4YWRlZmM2NzU2MGIxMSBsZWdhY3ktdHJ1bmsKKzIyODkyIDAxZGFlOGEwM2Y4NjM3NjIwNmM4NGZkNmJlYWRhNmZhZjExMzc4ZDIgbGVnYWN5LXRydW5rCisyMjg5MyBhM2MwNDVmYTQ5ZjUwY2E5NTdlMzg1OWFiMDc3NWQ5YjA3OGQ5Y2MyIGxlZ2FjeS10cnVuaworMjI4OTQgYTRmZWVmY2UwY2U4NDk2OWFjNDk1NzRmMWU3MjEwNzIzM2ZmNjFlYSBsZWdhY3ktdHJ1bmsKKzIyODk1IGQ0YjNiOGUyMzU0NGI4ZjRkZWY4MmI3NmE5Yjg5MGM0ZjQ2YTA4ZGMgbGVnYWN5LXRydW5rCisyMjg5NiBiMzllNTZkZmUzNWQyYjk5NDRlNDIxZmYxZGY2OGU4YjEyY2ViNjIxIGxlZ2FjeS10cnVuaworMjI4OTcgZGUwZjAzNTIwNWVmOWEzNDdjM2I0Njc2Yzg4NTc4ZGUyY2FjNTkzOCBsZWdhY3ktdHJ1bmsKKzIyODk4IDc5ZTIzMjdlNTFkNjEzNmQ4ZDIyZjZlZjM1ZGVmYTI4Yzk1Y2ZlMGEgbGVnYWN5LXRydW5rCisyMjg5OSA2YjgxZjllOWQ4NjAwYTI4NGZlYTNjMmU4MzhlMWVlZDNmMDNiYWQ4IGxlZ2FjeS10cnVuaworMjI5MDAgOTJkMGZhYzhhMTY5MzRmNTllMjIyNTg3YzUxYjMzMjZlNjhjMjE0ZSBsZWdhY3ktdHJ1bmsKKzIyOTAxIDU3NWY1MGNlY2ViYTE4MzFhOTg5MjBmNDIzN2ZjODAxZDI0NTQ5ZGQgbGVnYWN5LXRydW5rCisyMjkwMiA5Mzc5NjU1MTZiNTQ3MmYyOWY0ZjQ1NjhiOTgyZDliZDBlNDU1NTg4IGxlZ2FjeS10cnVuaworMjI5MDMgMmZhNjE1ZGZjNDY0YzgwZTI2MzQwYTY0YmE4OGI2MGQ2ZGMxZGQzOCBsZWdhY3ktdHJ1bmsKKzIyOTA0IDgwYmViYzUzODlmZDBkMThiZjU3MTVjMTFiYzRiNjQ3M2EwMjk4NmQgbGVnYWN5LXRydW5rCisyMjkwNSBiNGVkY2U5ZDZlOTkwZWM0ZTkxNTYzZmRhNmY2MThhOWQ1NzYzOTZmIGxlZ2FjeS10cnVuaworMjI5MDYgODRiZTBjYWI2M2E4ODRiNDZiMGEyNzZmZTdjYWRkZjI4NTVmZGZlZSBsZWdhY3ktdHJ1bmsKKzIyOTA3IDc4MGU3NDE1ODVlMTBlMjZjNTZkMTFmOGJmYzFiYjM2N2FmODY4MzEgbGVnYWN5LXRydW5rCisyMjkwOCA4ZjhlOTcxMTMyYjg2NzM4NDY1NDI3MTQzMGE0NzI2NGVlMjlkMTkxIGxlZ2FjeS10cnVuaworMjI5MDkgZWM3YTJhNmNkYmU5YzQ4NmE3YTY4OTE0YjgzMGY2NWIwZjAwMzU3YSBsZWdhY3ktdHJ1bmsKKzIyOTEwIDA4YzNjOWVkZDk5YmIwYmExZTQ4MDgxYWJjNDBmZThjMDc0N2YyYWYgbGVnYWN5LXRydW5rCisyMjkxMSBjZjY1ZWJmODc1NjA5MTMxZThjOTNlNjMyYzY1ZDEzOGE4NWQ1NWQ5IGxlZ2FjeS10cnVuaworMjI5MTIgOGQzNThjMjRkY2ZiYjEwNDNhOTcwYThmYTExYjdkZGMxNmVmYjk4MyBsZWdhY3ktdHJ1bmsKKzIyOTEzIGNjNjA0YjcxMDM2YzRmZjhjMmQyMTNiNDhlYmNjODYyNzU5MDljNzggbGVnYWN5LXRydW5rCisyMjkxNCA4N2U4ZmMwYTk4NjJiNTUzOWM3ZjJhNmYyN2IxNjEzYzRmNDk2Nzc5IGxlZ2FjeS10cnVuaworMjI5MTUgNzhjZmI5OTNmMjc0MTkwNmQ3NDE4N2YwZjM2NTI4NGQ5MTdjNjkyZCBsZWdhY3ktdHJ1bmsKKzIyOTE2IDdkZjMwMGQyODRjNmFhMDIzZjNiM2ZmMjUwODMwODVjZTA2ODhhZjYgbGVnYWN5LXRydW5rCisyMjkxNyAzNTg0NTUwYTYyMmFkNTlhNjkyZWFlODI5MmFlMTljYmJjN2ZkNDBhIGxlZ2FjeS10cnVuaworMjI5MTggYjMyNzEyOTdiOTg0ZWE0OWI2OTM2MTRkZWFjYjg0YjU3NzhjYmJjNyBsZWdhY3ktdHJ1bmsKKzIyOTE5IDcxNTI0NDEwOGZhYTBmNzcxOGJlOWI1ODYwZmNiMmRlZjJiNWM2OWUgbGVnYWN5LXRydW5rCisyMjkyMCA2ODVkY2FlNWMxMjM3MDI5ODM2YjllYjM5ZTEzNjc0NTdhMjA5Mjg5IGxlZ2FjeS10cnVuaworMjI5MjEgYzc2OGQzMTkxZGYxYzFlYmVhNWI5ZDE4NzZhZmYxNjhkMWJlNmZmNiBsZWdhY3ktdHJ1bmsKKzIyOTIyIDkxNTMzNjc1ZDZjYmYwYWQ1ZjI3NTE3NTFkMTU3MDA1NTQ1ZTU0NjcgbGVnYWN5LXRydW5rCisyMjkyMyA4MmRiOWE5MDA2YWM1ZWUzY2ViZjM3M2FhYWZhNWQ2NGFlNzhkZDJjIGxlZ2FjeS10cnVuaworMjI5MjQgNjk1ODc4NGIxY2VmMDE1Y2RkZmUyMzJiODg1NmE4OGZiOTk1YzQ0YSBsZWdhY3ktdHJ1bmsKKzIyOTI1IDNmODRiMjAwMGY2MmI0MTQ4ZmY3YTRmZjYyMjc0MDY4MDEzYTE0YzcgbGVnYWN5LXRydW5rCisyMjkyNiA3ZGU0ZTZiOGQxOTljMGU0YTQ1MmRjZWRkMTgzZGRhOTBkNzMzNDBkIGxlZ2FjeS10cnVuaworMjI5MjcgOGRmYjEzYTRlMTc1YzBmMzUxNTYxMzZkYTFkM2M1ODRlMGRlNTc3MCBsZWdhY3ktdHJ1bmsKKzIyOTI4IDhjYmM3NGY1NTg2YjUwNzY3ZDMwZDYyZWYzZWQ2ZTcyNWViMTk4NWYgbGVnYWN5LXRydW5rCisyMjkyOSA3MTRhZWVjYzIzMTYyZjc0N2JhZDFhZmY3ZTJlZWRjYzlmNjNkZWZkIGxlZ2FjeS10cnVuaworMjI5MzAgNmViYzI2MzMzZTZkN2NjMWVhZWUzOGFlNTZkYTRhOTY1NmY2ZjQyNSBsZWdhY3ktdHJ1bmsKKzIyOTMxIDc0OWU0OWM5NDdjMDcxYmU5MDMwYThkODUwYmZkMDM4Y2UzMDU5ZmQgbGVnYWN5LXRydW5rCisyMjkzMiAzNzMxYWQxZDkwMzMzZWQxMWIzODM4NzM1OGIzNzdlN2YxY2UwMmVkIGxlZ2FjeS10cnVuaworMjI5MzMgMzFhNjZjMGM3ZDMwMWU2YTNhZTI1N2FmMTA3ODc1OGQ1ZDQ4NzlmYiBsZWdhY3ktdHJ1bmsKKzIyOTM0IGNmYzVlNTE2MGNmNWRmODI2NTAyMWI3MzkyNDI2NWRmYmI3NDkxNGEgbGVnYWN5LXRydW5rCisyMjkzNSA2YjgyODUzZGYyZWRiNzg2Nzc3ZmIyZGNmMzVmOTdiNmZkNDA1NDk0IGxlZ2FjeS10cnVuaworMjI5MzYgOTMzZTgxMjk3NGMzZWE5MGQ5M2UyZTAyMDQ1NzY2NzE2NGNjMGMxMCBsZWdhY3ktdHJ1bmsKKzIyOTM3IDA0MjE4ZTg1YjE1NmZkNjU4ZjQ3MDBjMDEwMDQzMDBmNGI3MGVkYzAgbGVnYWN5LXRydW5rCisyMjkzOCA2MTdmNWU3MmIwZWM4MzMyZDkyZmQ5NWExNjRjMjQzMWEyMjhiYjg2IGxlZ2FjeS10cnVuaworMjI5MzkgMzcxNmIxMTZmYjMxMzIyNTViNDU3NGNiMTU5MDlmZWFlMzFkNGQxZSBsZWdhY3ktdHJ1bmsKKzIyOTQwIDk4MzBkMDBiODg3ZGZhNDI2ZDBkOTkyMDZiZmRhNDg4ZTdkYjQyNzkgbGVnYWN5LXRydW5rCisyMjk0MSA4NDNkYTk3OTUzODEzMDdmMDE1MjQ3YjFmYzE5ZmNiZTlkNzM0NjQ5IGxlZ2FjeS10cnVuaworMjI5NDIgYmM2YmQzNWY1OTk4ZGY0OWY1ZGM0ZjIyMTAxOTQxNmM2YmU3NzNmYiBsZWdhY3ktdHJ1bmsKKzIyOTQzIDM3MmQ4YzFkMmI2NGUyODhkNjEwMjA3MGNlNjFlOGY1NTYxZDFkYjQgbGVnYWN5LXRydW5rCisyMjk0NCAyYTRlM2M5Mjg1YjU0ZmJlODZiYzg3YzEyYmExZTY3NDIxOTA5ZDZkIGxlZ2FjeS10cnVuaworMjI5NDUgZmJhZjRlNTUyNjNmOTEwMzkzZjlmODdhM2YwZGNlODMxNDkyZGJmMyBsZWdhY3ktdHJ1bmsKKzIyOTQ2IDQ1NjU3Mzc2YjliOGNjOTM0NjM1YmZmNjhmMjNjYTYzYTJlZjc3MzYgbGVnYWN5LXRydW5rCisyMjk0NyBkNmUxYjEwOTE2MDk3MWIzNzI0OGFjMWRjNjJlM2MwNzM0NjNlMmM4IGxlZ2FjeS10cnVuaworMjI5NDggZTIwMmE3NWQ4ODFlMTQ3OTk1YmI0MzY1NTZmNmU3ODY5ZDZlZGE2OSBsZWdhY3ktdHJ1bmsKKzIyOTQ5IDE5MDFmODc1YjdkM2QxZDhkNGYzMDJkMTI3OThiNjJiMWRiODNmYmEgbGVnYWN5LXRydW5rCisyMjk1MCBiN2Y2ZmJjMDg3YTc3ZWFhNzA3NjcxYjI2YmEwZWUxMzNiYmU4NDNhIGxlZ2FjeS10cnVuaworMjI5NTEgNTAwNTU0NWI2NDg3ZjA2YTdlZDY5YWZmYjNkMzIwNDUxYWYyNDQ3OSBsZWdhY3ktdHJ1bmsKKzIyOTUyIDExYjM3M2IwMGYyYWZlMWFlZjA1N2U4Y2YyMzBmODA5NDc0ZDlmN2EgbGVnYWN5LXRydW5rCisyMjk1MyA2ZWFmYzRhNjM1OWE4MGE4ZWUxNTQxZTA3ODY1YWU0NjhiODExMWUxIGxlZ2FjeS10cnVuaworMjI5NTQgMGIwYzg0MDc4ZjkxNjBkYTI2MTVlZDgwZjcwYzNiNDc5YzkwYzQ0YSBsZWdhY3ktdHJ1bmsKKzIyOTU1IDFjOGE5NTBkNjk3MDBlNzViMTQ0M2U4MThiNDc4ZWYwMTEwZDIyMDkgbGVnYWN5LXRydW5rCisyMjk1NiBiZDI1MmIxODMyYTJkYmExODkwODAyZWEwYzM2MTZjNTY1ZDAwOTAyIGxlZ2FjeS10cnVuaworMjI5NTcgYjQ1MjE0MzZlOGY4Zjk5ZDI4MTcyN2EzNzc2NzgzYTU3ZGJhNTNmYiBsZWdhY3ktdHJ1bmsKKzIyOTU4IDk0MzNkZDNjMTk3ZWY0YjFmNmEzZDVhNTk5MmI2NDFiNTA5NjA1ZjUgbGVnYWN5LXRydW5rCisyMjk1OSA0NTBlNWEwZTkyNmI5NDBkYjg5MzlhMTQ3MmI4NzU3ODRjNzI0MDZiIGxlZ2FjeS10cnVuaworMjI5NjAgMGQ5NjE0NWM0NGI4OWY2YTBmZDNiODFkNzI4NjM1ZTYxOTJiNjIwYyBsZWdhY3ktdHJ1bmsKKzIyOTYxIGZiMmQ4M2FhZmY2ODY0NWZlN2Y2ZjJhMTBmNmMxODU0YmIxOTY2NTAgbGVnYWN5LXRydW5rCisyMjk2MiAwMWRlMGE3MDMwNjk4Yzc0YzMyOGU1MTRmNTNiZjJiYTJlNjU2NjY2IGxlZ2FjeS10cnVuaworMjI5NjMgZDE5NjQ4Y2E4NzQ5Y2NjMWE0MjQ5YjE0NTc1MjU5ZGIyNWI4YjVlYyBsZWdhY3ktdHJ1bmsKKzIyOTY0IGNkZmRkNTM1OTQxMWEwOTc0MjkwYjQwNDI5NzdiNzJlZWY0N2EwOGUgbGVnYWN5LXRydW5rCisyMjk2NSBhNjg0YjRjMTAxMjg0M2U5MzFiZTMwMjI3YTY0YWI0NTc5NzEzNTU5IGxlZ2FjeS10cnVuaworMjI5NjYgNzc2NmVhNzI0MzIwOTRmNzlmM2FiZjM0OTM4ZDk2MjhmNDQyNGY1NSBsZWdhY3ktdHJ1bmsKKzIyOTY3IDIxZDJiOWVlZGMyZGUxNzk5NjA0M2M0NTllZjVhMjA0NmVhMzI2NjAgbGVnYWN5LXRydW5rCisyMjk2OCAyYTliYmRiZWZiYjFjOTRmMWQyZmUyMDk2MzE2ZTc5NzE2NjEyYzY2IGxlZ2FjeS10cnVuaworMjI5NjkgYmE5YWFiY2Q4OWUzZGVjZWEyZWU5MmUxZWNkNTc3Nzk5NmQyZmI0MSBsZWdhY3ktdHJ1bmsKKzIyOTcwIDIyNmQ1ZWVmYTQ0YWZkNmI1Y2JjNTZiODY2ODg3YTYwMGQ5OTYzYWMgbGVnYWN5LXRydW5rCisyMjk3MSA1NDg3ZDlkNTNhMGUxZTU1MjEyMWJjOTAwZGI3MzMzMzc1MDk2M2ZmIGxlZ2FjeS10cnVuaworMjI5NzIgZjMwMzZkNGUzYzIyYWY4MTJmMDg5YWFlMTQxMzVmZTFmNzkwY2YyOSBsZWdhY3ktdHJ1bmsKKzIyOTczIDRkMmNiNmVhYTQxMTM4YzlhMDA0MmIyNTNlYjhkMWQ1ZWI1YzA1Y2QgbGVnYWN5LXRydW5rCisyMjk3NCBkZWIwOGFmODlhMzVkNjk4ODQ2MTJkMzJlZjExNDI4OWQwNjYzMDliIGxlZ2FjeS10cnVuaworMjI5NzUgMmU2ZGEyZGQyYWI4MjA3MGI0MTExZjU5YWI0NGZhZjUzNTQ3N2E0OCBsZWdhY3ktdHJ1bmsKKzIyOTc2IDg1ZWIxYzkxMWFlNWMwYzc2NmMwZjc4OGViZjVjZTM4ZjgwMmNkMTkgbGVnYWN5LXRydW5rCisyMjk3NyBiN2RjNTE1OTQ0OGY0OGE3NzMyMmI5MmRlZmRiZDlhMzQyODNiNTYyIGxlZ2FjeS10cnVuaworMjI5NzggMmMxYTk4MzA5OGEwNjRiNDhkOTI1YTI5MzhmNGZjZmIyYzRmOWU1NiBsZWdhY3ktdHJ1bmsKKzIyOTc5IGQ5ZGFhNGE2N2JlMjYyMzg5YTEwYzRmNjIyMTEwZDRhYTE0MzQ2MzIgbGVnYWN5LXRydW5rCisyMjk4MCBmNTZjOTE4MjBmYWUyZDJjYTgzYmQzZmE4MjFkNTZiMGE4NjI3Y2ZhIGxlZ2FjeS10cnVuaworMjI5ODEgMGU0NjQ2YmY4MDQxMTBlMzM3ZWUzODQ5NGE3ZTFlNDlhOTgxMmE0NyBsZWdhY3ktdHJ1bmsKKzIyOTgyIDU2YzU0OWEyNTNhNmU5NGM2ZmM5YTZhMTFhNDc5M2E4ZTliMjkzMjYgbGVnYWN5LXRydW5rCisyMjk4MyA1ZGQyOGFhMmJlNmJmZDAwNDA0MzEyYzBjNjY0MjE1OTIwMDlkNTFlIGxlZ2FjeS10cnVuaworMjI5ODQgOGQyYzc0MzZiOWQyN2Y3ZjMyNWNlNjQ5YjQzMjcwMmNkMzg0ZWEwOSBsZWdhY3ktdHJ1bmsKKzIyOTg1IDhlNmUyNDhkZmRkODY1YmI4YjZjMzIwMjhiNWI0MjYxNzI2ODlhMTMgbGVnYWN5LXRydW5rCisyMjk4NiBhNWVlYjFlNzBmNDFmMmZlODZkZDg1Mjc2MTI4Mjg2N2ZkOTljM2JlIGxlZ2FjeS10cnVuaworMjI5ODcgMmE0NjViMGViNTRlNDIwYWEzZGYyNDc5NmRiZjJlM2YwZWVhMjAwNCBsZWdhY3ktdHJ1bmsKKzIyOTg4IDg1NDE4NzhjZjJlMTNkMjU2MDRmYTk1MDM4YjRiZjhmNGMzYjg3MGEgbGVnYWN5LXRydW5rCisyMjk4OSBmMTQzMGUzMzgyYmJlNGJhZjgyNDJiOGI1ODU5OTgxNjkzYzE3NTljIGxlZ2FjeS10cnVuaworMjI5OTAgZGMwNTliZmI1M2IyMmVjZDY1MTIyODdlOWYwYmJkMjI1NTc4ZTIyZSBsZWdhY3ktdHJ1bmsKKzIyOTkxIDk4ODU2YTRhZWQxMDE3MjZhZTZkMjRiNWFkMDY3ZDAxZDg3MTJjYzEgbGVnYWN5LXRydW5rCisyMjk5MiA3ZmE0MDU5N2RhN2U3ZjkyZTM0ODBmYzY3YmEyMGM1NzU1NDNiMmQwIGxlZ2FjeS10cnVuaworMjI5OTMgYzkzZDdkMDg1N2EyNzZkYmNiMWExMjQzMWQxMTUyY2U0MzRiNWMxOCBsZWdhY3ktdHJ1bmsKKzIyOTk0IGZhMDYyMWU0YWQ4YWM3ZjdmOGQ1NzRjNGZhZTM0YzUzMWFlMzY5YzYgbGVnYWN5LXRydW5rCisyMjk5NSAzNWI2YTFkMGIxZTA1NGI0ZDY0ZTIwNTg5YWY4ZDI0ZmQ4Y2ExNTZjIGxlZ2FjeS10cnVuaworMjI5OTYgM2Q3NmRmYzM0YzU3ZTYzNzU1MjhkODE3NmUwMWJmOGQ1NDIxYmM4MiBsZWdhY3ktdHJ1bmsKKzIyOTk3IGRiYjlkODJjN2NlMzdmZjQyODU3MzA0OWE0ZjI4YWNiYjc5MzQ4MDMgbGVnYWN5LXRydW5rCisyMjk5OCBjMDU4MGQ4YzE5M2UzZTMzZmNiNzhjNTc5NGIzYWE2NDhkMjQ1NThmIGxlZ2FjeS10cnVuaworMjI5OTkgZTFmMWU5ZWJmMDUwMTNhNzA2ZTZmMDc5MTNjNjMyMTU0Y2M5ZmRiMSBsZWdhY3ktdHJ1bmsKKzIzMDAwIDVhN2FjOGMwNjNjY2NmYzBjNmVjMjdhMzA0Y2RkOWY1ZTM0YzBmYzQgbGVnYWN5LXRydW5rCisyMzAwMSBhMWQzOTcwODg1YmRiZWJiZTcwNmFkYjY0OWYxZThhMmI3MDcwMDU2IGxlZ2FjeS10cnVuaworMjMwMDIgY2E3Zjc1NzZkODIzZThjNzBiODZkMDJhNWY4ODgyZGVmMDUxNzI1ZSBsZWdhY3ktdHJ1bmsKKzIzMDAzIDY0YmNlZjE3MDJhZDk3YWUwMTdmZWY2YzA3OWZiNzE4YTFiNmNlOWEgbGVnYWN5LXRydW5rCisyMzAwNCA4ZTg3Y2RkZWQ5NmZiZmU3ZjVhNmU1YzJjNGUzMzQ5ZDVlNzYxNmIzIGxlZ2FjeS10cnVuaworMjMwMDUgOTZkYTk4NWNkZTk4NDI2YWFjNGQzYTFiNWQ0ZGE0OTNhOTA2YWMyMCBsZWdhY3ktdHJ1bmsKKzIzMDA2IDQ0MTc1YmIwYjdiZmM4MDdlZWM2ZGRhOTI5NjBkYmE5ODBkNGExNGQgbGVnYWN5LXRydW5rCisyMzAwNyBkMDkyNjhkMGVhNTI5YjY0OTEzY2UwNGI5YmJiZmJjNTNiMGE3MmI5IGxlZ2FjeS10cnVuaworMjMwMDggOTRkMGYyZWVhMDQ3ZTJlOGIxMjNlMzE5NzUxZGY0ZjEwNzBmNTZkNSBsZWdhY3ktdHJ1bmsKKzIzMDA5IDU3OGVmMzZmOGZkZTBhNDJiNmNiZGQ0YTRiYmU4ZTk4ZDg0YzMyODcgbGVnYWN5LXRydW5rCisyMzAxMCA1ZmNkMGQ0MWE0NDZiZDY1MjUwNzA5NGUwMGY0YThhZTQxNDdkN2JiIGxlZ2FjeS10cnVuaworMjMwMTEgMmJjY2U4YmFiOGJiZThkYmQzNzgyM2M4MjY1NzdhNDBlYTMzMGVjOSBsZWdhY3ktdHJ1bmsKKzIzMDEyIGQ1NDM3OGQzMzM0ZmQ0MjhlMGFhZWM5MTk0MjI4MGNjNGY1MGQxMDkgbGVnYWN5LXRydW5rCisyMzAxMyBkNGY1M2IxZmI0MjQwZGZjMmIzODdjZGVlMGQyNmNjZmRlOTViNTc5IGxlZ2FjeS10cnVuaworMjMwMTQgYTVlYWVmNDdhOWIzMzYwZmY0MjJjN2QzYTZhNDI4MzAyYzkwNDNkOSBsZWdhY3ktdHJ1bmsKKzIzMDE1IDQyZDBiZGU3MzUzM2UxMjQ1YzYzNTMxNDI2YzZmY2IyNWYxZWY0NDAgbGVnYWN5LXRydW5rCisyMzAxNiA0MzI1OTEzMjg0MTAyNDViZDhiNTA2NjE3ZjE0MWIwMThiYTZjZGRlIGxlZ2FjeS10cnVuaworMjMwMTcgMzM1YmYzZWFiOWYxYWRkOWQ5YTVmMDNhODk2NzM3NDg5MDE2ZjVmYiBsZWdhY3ktdHJ1bmsKKzIzMDE4IDZjN2RkOWIzZTUwYjVmMzM2OGQ0MTMyY2IyMzMwMDM5MzMyOGNjZmEgbGVnYWN5LXRydW5rCisyMzAxOSBjNTUyM2IwZjg5ZDU4M2RlZGVkMWVhNzBlMmUwMWIzODczMjI2ZGRkIGxlZ2FjeS10cnVuaworMjMwMjAgZWUxMmMzOGU0NmE2ZmMwMzVjODdhYzAyM2U0OWZlOTQxNjA2Nzc5MSBsZWdhY3ktdHJ1bmsKKzIzMDIxIGIyMzIzODY0NmQxNTZiMmQxNzA5NTQxZGFhYWFmZWI4NzVjOThjNzcgbGVnYWN5LXRydW5rCisyMzAyMiBlNzE0NzE1NmVmMzNlNzRhNDc3YmMwNzEzYTFiYTQwOTkwMjdmZjJlIGxlZ2FjeS10cnVuaworMjMwMjMgMWM2MmI0YTU5N2Y2ZTcyYjA1YzczZGYyZmMxMmZiNWYzN2M1ZWU4MSBsZWdhY3ktdHJ1bmsKKzIzMDI0IDA3YmIwOWRmMzMyNGYxMDIwMWM4ODI5Mjk5Nzk4ZGQ2YTQ2NzM3ODggbGVnYWN5LXRydW5rCisyMzAyNSAxY2M4NGRmY2Q2YmQyNzRmM2I1N2Y0YjM0NjZlZjg5YzBjYWMyNWQyIGxlZ2FjeS10cnVuaworMjMwMjYgN2I3MjJiNmNjNzdiMzFjMjg5ZjI2NTgwMWFlN2FiMzAyM2JjNzg2MiBsZWdhY3ktdHJ1bmsKKzIzMDI3IDlkZTJmN2UxYjZlOGI5YmUzODFiYTEwYWYxMDY5NTM2Mzk3YmM5OGMgbGVnYWN5LXRydW5rCisyMzAyOCAxM2I2NTRjZTYzYTQ3N2JmNmQ2ODVhNWExOGRjYmIxZDIzZGE0OTA5IGxlZ2FjeS10cnVuaworMjMwMjkgMTczMTIyZTVlZGU0MTcyYzQxMWExZThiNjgwYWQ3MDZiNDY4MDk1YyBsZWdhY3ktdHJ1bmsKKzIzMDMwIGM3MzdkMTNkYTkyZDJhZTBhMDYwMzBhNmE5MDhiMjE4OTE1NTU3ZTMgbGVnYWN5LXRydW5rCisyMzAzMiA0YWJmYzE3NjY4NWMzMDJhMjFjMTYwM2M1N2U0YzdiY2M0MzA5NmY0IGxlZ2FjeS10cnVuaworMjMwMzMgZjgxNGVhNmJiNjY3NmI4MjQxOTVjNTEyMDhkZDY2M2E3YzlmZWFlMiBsZWdhY3ktdHJ1bmsKKzIzMDM0IGNhZDkzM2E0NTRmZTYxZDRkZjE4MGFhMmJlMjkzOGYyN2U4ZGM2NmIgbGVnYWN5LXRydW5rCisyMzAzNSA5NGUxNDFlMjBkNjE4ZThlMTMxZjkwYmY3Y2RhYzI2MTFiYWE4OGNhIGxlZ2FjeS10cnVuaworMjMwMzYgMGI1NzcyOTI4NGRmYjRlNmMyMzlmMTZhYjM0OTQxZTE5NDI2ZTA5OCBsZWdhY3ktdHJ1bmsKKzIzMDM3IDkwNzk3MTBlYzIxNjk2ZTM5ODQ2Nzk4MmNiYzYxYzhjOTFiNjk2YzYgcjIyYTMtYnJhbmNoCisyMzAzOSA5NjA0NzRkMTI5YWVkNzM2NWVjNzlhYWViMGEyNmJjYTRkZmU4NjQzIHIyMmEzLWJyYW5jaAorMjMwNDAgYzk3ZGRhMjM4YjM2MjY2MWJhYjc3YmJhOWQwYWMzYTc5YzUyYTIxOSBsZWdhY3ktdHJ1bmsKKzIzMDQxIDNmNjIxNDg5YmU3MjFkYTZlNGFlNTJiY2U0NDY3MjlkZDcwNWI3MjcgcjIyYTMtYnJhbmNoCisyMzA0MiBiMzVhMmJmMGM5ODBhYjQ1M2I0ZGFhNDMxZGQxYTRhOWRjMjdkZjM3IGxlZ2FjeS10cnVuaworMjMwNDMgZTJlOWYxNzIyYzRmYTI5ZjBjZmNlMGZjZGQ4Mzk0MTk1ODcyZTAwZCBsZWdhY3ktdHJ1bmsKKzIzMDQ0IDk1ZWE2NjEyMjMyNTY4OGUyNGI3ZWIxNzE0YWYzMjIzODVmZjU3M2EgbGVnYWN5LXRydW5rCisyMzA0NSA5YzU0YTE2YWM4YjllZGM1MzRkYThhNmQzMjE1ZjQ2YzI4NmUwMmExIGxlZ2FjeS10cnVuaworMjMwNDYgNzAwZmVmZGMwM2QyODVmMzI0ZmFjZTMzYjNhODc4NWZhMmI4MmNmYiBsZWdhY3ktdHJ1bmsKKzIzMDQ3IGMwZjk0YmM1ZmZlODA2ZTc3ODYxZjY5MmJiZDE2MTQ0YTEzOGQ4NzkgcjIyYTMtYnJhbmNoCisyMzA0OCA3NzA5N2E1NWU5NzMxZjA1ZTA0Zjc4ZDVhNTMyNTY5ZDM5ZTliZmU5IHIyMmEzLWJyYW5jaAorMjMwNDkgMDMwODBlMzk1YzllZDBmZWE4NTgzNTZmZTkwMzc1YWViZWZlN2E4ZiByMjJhMy1icmFuY2gKKzIzMDUwIDc4ZTczYjg1MWFhOWRiYTM2NGZlOTFmZmI2MzdkMzQ3OTY4YWM4OTkgcjIyYTMtYnJhbmNoCisyMzA1MSAyODViNzQwYjg0NDE5MmM2N2Y4NDM4MjBjNjI2ZDY0ZWRhY2M2NmEzIHIyMmEzLWJyYW5jaAorMjMwNTIgNDNkYzgyN2RkNzE3Y2FmYmFkNWI0YTQ0NWE3ZjI2NTNmNTFlODEzNSBsZWdhY3ktdHJ1bmsKKzIzMDUzIDA5MWMwMWQwN2Q5ODE0MjdjYTE0YzEyMDg0ZDIyZjk5OGY5ZWM5ZGQgbGVnYWN5LXRydW5rCisyMzA1NCBkNDgwMTRkYmI4NWY2YTlhNWI2ZDJlYzA0NDBjZjVjMzA2MjkyYzA5IGxlZ2FjeS10cnVuaworMjMwNTUgZWQ1NDk0M2NlMjRlMGZlNDQ2ODg4Zjk1ZjgwNmQxOGQ5NmNjNDc2MSBsZWdhY3ktdHJ1bmsKKzIzMDU2IGZlMjI5NzI3YTQwY2ZkNDlkYjQxOTYzYmM1MWFhZTMyY2Y2Mzc3YTkgbGVnYWN5LXRydW5rCisyMzA1NyBiNDdkMjk2OTljZDI5OGIxYjJiNDMyNmY4NDU1M2JlNjk1ZGEzOTE4IGxlZ2FjeS10cnVuaworMjMwNTggMzJjZmNlNGQ4M2RjMDYwNDgwYjkxZmI0OGE0N2JjNDhiZWEzZTg0MiBsZWdhY3ktdHJ1bmsKKzIzMDU5IDkwMzFhYWIyN2VhZWRkMmE1MGI0YjNmNDM1MWUwM2QwZjc4OGM1YzkgbGVnYWN5LXRydW5rCisyMzA2MCA1NjAxNTVlNzUwODc4YzJkZjAwMGQ5YWY1NzUwNjkxZWVlMDJhM2ZlIGxlZ2FjeS10cnVuaworMjMwNjEgOGNhYzVlYjcwM2ZkODQ2NWRjMjQwOWVmY2E5NjZlNDU1NWE1YzI4ZiBsZWdhY3ktdHJ1bmsKKzIzMDYyIDA4NmZmYWZhZWQ1NTI1OTkwZjU0ODc1YTBhZGEzZTA0N2EyMDA1MDkgbGVnYWN5LXRydW5rCisyMzA2MyAwNTg0YzkxMzI1MjVhNTg4ZTA1NDQ2MmM3NGZkOGE2ZWIwMmY5ODlhIGxlZ2FjeS10cnVuaworMjMwNjQgNzlhMzFiYTg3M2EzNDNkZDk3NTM4YWUwNGUyYmY0MmJjY2NjMWQ1YyBsZWdhY3ktdHJ1bmsKKzIzMDY1IGNlNTdmZmY5Mzk2MjlkMGNhYmU4MTMxZWExMzA4NTA4OWVkYzMzNmMgbGVnYWN5LXRydW5rCisyMzA2NiAzOGMxMmZhZjYxMmFhNTg5YzgwOTkwNGVlNDA3ODc1MTExNTYxODUzIGxlZ2FjeS10cnVuaworMjMwNjYgMDg3OTZhMTM3ZjFhZGEyNDYyZjdhMzE3NzMwNmRmNWY2N2E3NjdlMSBsZWdhY3ktdHJ1bmsKKzIzMDY4IDcwNDExZWJhMjI1YjFhNTFmN2NjM2E3ZjI2OGVlOTZmNWY3NTNiZWMgbGVnYWN5LXRydW5rCisyMzA2OSBkYzg3ZDkxZDBkZmQ2ODVlODU0NGUxZTYyZTQ3ZGRiNDc0N2I3ZTg1IGxlZ2FjeS10cnVuaworMjMwNzAgOGQ1ODVkODIyZjlkMGRiMWNjOTEwYTgyZDU1YTJjMDMwZjQ4ZTczZSBsZWdhY3ktdHJ1bmsKKzIzMDcxIDBjYmIwNjBkYTJjMzRiY2QwOTRlZjVhMWJiMTkyZDA5OThjMzVhZmYgbGVnYWN5LXRydW5rCisyMzA3MiBiNzM5NjI4N2NmNjViOTcyNmMyNDg1MTk3OTI3OWY1ZDc3MGEwMWFjIGxlZ2FjeS10cnVuaworMjMwNzMgNmIxYmUxNGQ3NjUwMzI0OTAzNzVkMjAwZTg0NDRlYzFjMWRhMzkwMiBsZWdhY3ktdHJ1bmsKKzIzMDc0IDUzZTBjYWUzY2Y2Y2QwOTMxYjZlN2Q3ZThiNzgyNjYxY2U2NDViMGIgbGVnYWN5LXRydW5rCisyMzA3NSBmZTVlYzFhM2E3ZTBmNzMwYjA3YTFkNjU5Y2MyYmE0ZWQyY2Y5ZTYwIGxlZ2FjeS10cnVuaworMjMwNzYgM2Y3M2E4YmY3NmY3Yzk5YmE5NmYxNjhlNDZjYWIxZTI3Zjk1NDI5MyBsZWdhY3ktdHJ1bmsKKzIzMDc3IDNkYzMxNTQwOTk2ODE0MmMwZDZkNTZkNTExYmUzZGRhYjU0M2MzNzYgbGVnYWN5LXRydW5rCisyMzA3OCA2ZTU3ZGMzMDU1NTEwOGE2ZmMxODMzNGExYTJkODAxNmNkYzAyZTg2IGxlZ2FjeS10cnVuaworMjMwNzkgMzcyMTQ5Nzc5MjQwNjY5Zjg0NzUzMTJiYmI4ODlkM2Q5ZDViZTMxNyBsZWdhY3ktdHJ1bmsKKzIzMDgwIDkxOTUzMmM1MGExNzU5Yjg5NGRiOTVmMDEwNTUzNGI0MWQxYjVhMDEgbGVnYWN5LXRydW5rCisyMzA4MSA4ZWY0NTY5NDliNzYyNDZhZWU4NGM2ODU1MmQ5NWU0MzVjM2UxN2I4IGxlZ2FjeS10cnVuaworMjMwODIgMzllZWFiNjg5ZDA2N2IwOWNhNWZkYjM4MDliMWRhNzMxOTRjMTc1OCBsZWdhY3ktdHJ1bmsKKzIzMDgzIDViMjhkN2RjMzAwNjI1YjU4M2YyZGYxNjJkODgzMzE4ZGYzODU3YjEgbGVnYWN5LXRydW5rCisyMzA4NCBiYmFlYTUzYWMwODdmNTg2NTc4MmQ1MDU4MGY1OTJmOTRiZGNmOWM4IGxlZ2FjeS10cnVuaworMjMwODUgZTQxOTA2MGUxM2M4ZDQ0MTNmMGQ3YTZkYTRjMmNmYWY1OWEwMzkwNCBsZWdhY3ktdHJ1bmsKKzIzMDg2IDEzNTlmYWM2MTdmMWJiNDdiODY2ZjA2YTU5NTRjZjA5NWNhNTRjZGQgbGVnYWN5LXRydW5rCisyMzA4NyAwMGQ4MDk0N2Q4MTc5Zjg4OWEwYzc4MmE4YjYzMTAyMzVhZjAwOThlIGxlZ2FjeS10cnVuaworMjMwODggZjQ0NjA2YjI0MmM1OTExMTQwNzkxNjE0MjY5ODk2YTg1ZjJlMTk4NSBsZWdhY3ktdHJ1bmsKKzIzMDg5IDUzMjUwY2IxMDZlYjQ3MWI3NDQ4M2FiNjgxZTY2ZDgyMjVmMTM0OTEgbGVnYWN5LXRydW5rCisyMzA5MCA5Y2YxMzM4ZmQ4ZDk4NTAwMjIyOWRiZWIxNGIzNjE5YmMzNWQ5M2MzIGxlZ2FjeS10cnVuaworMjMwOTEgNTQyMGU3ZDM0OGE0NGM2MzFiOGMzNWVjOWJiNTU2NDM0MDFmYmRkMiBsZWdhY3ktdHJ1bmsKKzIzMDkyIDUxNThlNDc4OTQ1OTIxODEwZTBkNjY5MzZjZjEyNjk5Y2IwNmE3OWEgbGVnYWN5LXRydW5rCisyMzA5MyBjMTU5MjBjMmNmNmNjYjlmZTk4ODQ0ODRkNDAyM2Y2ZDQyYzhlZDEzIGxlZ2FjeS10cnVuaworMjMwOTQgMTBmNTkyN2RiZjA1ZDA4OWRjNmI2YjMwMjYwNmY1YzU1ZTQ0MTNlNyBsZWdhY3ktdHJ1bmsKKzIzMDk1IDM3Nzc0NmEzODk3MjE5OThjNDFiOWRiNDk0Nzk4NzE4ZmM5OTZmYTAgbGVnYWN5LXRydW5rCisyMzA5NiBkOGRkNzVlM2IzMDQ2NWZiMWU1NzNiNjkwOGJkZmZhOGIwNTVmZTZjIGxlZ2FjeS10cnVuaworMjMwOTcgMjA5MjRhNzBmYTFiYmM2NDczYTgyYTc3MjQ2NzYwYmQ4YTY0ODQ5NiBsZWdhY3ktdHJ1bmsKKzIzMDk4IDZmZjdlZTg0ZDVhMTU4MzVkOWM2MTRiYzdlMGE5N2RiMTg2YjNmNmMgbGVnYWN5LXRydW5rCisyMzA5OSA5ZTRkMWE2MzA3ZjYzODU1NTI1YjMwYjcwOWUzMGY4ZjBjM2UzZDc0IGxlZ2FjeS10cnVuaworMjMxMDAgN2E5ODBjOThjOGFlZmZkM2YyMmUzYzkwMTdjODQyYzdiNDBmZDk3NSBsZWdhY3ktdHJ1bmsKKzIzMTAxIDY2MmUyMmY5OTYzOWY1MDc0ZTJjODRlODQ0Y2UyOWNhZmE4MGQzMTIgbGVnYWN5LXRydW5rCisyMzEwMiBjNWMyNDFiZWY4OGQzYjA2NmY0YjhmYTFmYTA5N2MyYzJkMDg5NWI0IGxlZ2FjeS10cnVuaworMjMxMDMgOGFmNzRmMDM1OGFjMzlhOWJjZDA5NWIwMWI0YTYyZTQyOTQ2ZTUyNyBsZWdhY3ktdHJ1bmsKKzIzMTA0IGJmMDIwMmRhYzQ0MTcxNjBiZWI3NTUxZmU3ZWZkMjQ5ZGYyNGI2YzggbGVnYWN5LXRydW5rCisyMzEwNSAyYjU4MWY0YzY5YjRmMjA5NGUzZjEwZTIzOGYzMTcyNGUyM2JmOTAwIGxlZ2FjeS10cnVuaworMjMxMDYgZjNmNjk0MTExZWEwODE2MGI0N2EzNjEyNGQ5MWU4YjA4ZDkzOWQzMCBsZWdhY3ktdHJ1bmsKKzIzMTA3IDVlNzliZWQzNDI2ZjkzZGYzMzZmZDZhNzdlZTBkMTlhOTA3OTFhOTAgbGVnYWN5LXRydW5rCisyMzEwOCA5ODMwMzIzZjVmOGViMmU1OGJhNmVhNWE2NzhiZDYzMzkzMjczM2EwIGxlZ2FjeS10cnVuaworMjMxMDkgNDNlZDhhMzQ1ZjRkODMzOTFkMzg1ZTVjZDdmMjhmMzcwNGM5YzcwYyBsZWdhY3ktdHJ1bmsKKzIzMTEwIDU1NjhiMzIwOTE0ZjZkYjk1NzQyMzA3ZjgzNzIxMzNiZTQxMGUzZTcgbGVnYWN5LXRydW5rCisyMzExMSA0MTQxM2M3ODM4MzY3OTM3Mzk2MjBlNmQ4ZmFlYWQzNDJiYTBlNzc5IGxlZ2FjeS10cnVuaworMjMxMTIgOWE1YmJmODQ1YzYzM2VjN2ExZTY1YzU4Y2VmMTYxYTEwYzQ0NzhjZCBsZWdhY3ktdHJ1bmsKKzIzMTEzIDg3M2JlOGUzNDYyYmVlNjdiYWI1M2M3ZjhiZjgyOWVjMTU4Y2E1NmUgbGVnYWN5LXRydW5rCisyMzExNCA1ODcxZTBhYTAyMWI4NTBjY2Q5ZWM5ZGNjYTE5YjEyMzYxMGE2ZTYwIGxlZ2FjeS10cnVuaworMjMxMTUgMmE4MDliM2QwM2U5NGJmZjYwNjZkM2QyYTZlZTdjOWNiYTEzOTgzOSBsZWdhY3ktdHJ1bmsKKzIzMTE2IGQ5OTcwZDYzMTg3ODBiOTg4ZjUzNTRlMzkwYWFmOTBkMjA3MGM3ZTggbGVnYWN5LXRydW5rCisyMzExNyAzNmNhMTZkYzM1YjlkOTk5ZGYwNGFjZWEzMDE1NzgwYjUzMTYyNDBmIGxlZ2FjeS10cnVuaworMjMxMTggNjc2Mjk4YzBjNzYyOTYzNDg4NzhjMGZlMDcyZmQ0Y2QxNTA4YzEzYyBsZWdhY3ktdHJ1bmsKKzIzMTE5IDMwNDY1MmZmYzZhYzYwMzU0ZjlkYzczYTEzM2U0ODA4MDQxYzU4MTUgbGVnYWN5LXRydW5rCisyMzEyMCBmMmEzMDA5YjUyOGU5M2U1YzA2M2NhNTQ2ZTJlNzVhM2JiODhkZTYyIGxlZ2FjeS10cnVuaworMjMxMjEgYTM0OTkxYjkxMDA4NjE5Y2JjN2UwNWYwNWJiOGVmMGJiZjgyMDRjMCBsZWdhY3ktdHJ1bmsKKzIzMTIyIDU3ODA3MjQ0NzBlZWI0ZTdhMGJkNzdlMWUwM2Y2YmIwMWU0MjFlNmQgbGVnYWN5LXRydW5rCisyMzEyMyBhZjk4MjgyZTkyNzdiN2NkY2E4NjE5Yjc2OWNiOWU2ZjRhNDg5NGI2IGxlZ2FjeS10cnVuaworMjMxMjQgZGY0OTM2NDZlYzRkY2Q5ZTg2YjEzM2UyM2E5ODZhMGY3MDg2NWI1MyBsZWdhY3ktdHJ1bmsKKzIzMTI1IGU5MWI5OTEzODk4NWFlOTUxNThmYjhhNDEzMWVmZjg0MGViNjk2NTggbGVnYWN5LXRydW5rCisyMzEyNiAxODA4NmM5MTNlZDVjNTEzMWIyNGFlMDkzMjZlZmM5NGJkOGU0OGViIGxlZ2FjeS10cnVuaworMjMxMjcgNTEzNjMzNDhkY2ZhYjdiMDJmN2QwZjQ0YmI3MzU1NTBkODU2MGJmZSBsZWdhY3ktdHJ1bmsKKzIzMTI4IGExOWVlYTQxNjY4ZmNmZmEwMGVmMTJiYjQwODA1Y2I3YmIxOTExM2MgbGVnYWN5LXRydW5rCisyMzEyOSBlZDNlNTI5ZmJlNDc5MWM4YWJlOWQ0MmY4MDY1NmI4ODUzODNjNDU0IGxlZ2FjeS10cnVuaworMjMxMzAgNzBiZGY4NDg2MmFkMWNiMzM0M2Y4ZjUzYTQ0NGViODY3YmZjZjYyZiBsZWdhY3ktdHJ1bmsKKzIzMTMxIGI4N2MwNTg2MjgxNTU5NjcyZWM0ZGI4OTdlYTg1NWYyNjQ4YWUwOGQgbGVnYWN5LXRydW5rCisyMzEzMiA2MmQzMWVjNDNkZjY2MzQ5N2Q0MmM4ZDczYjFmMWYxZTI2YjA5NDlmIGxlZ2FjeS10cnVuaworMjMxMzMgY2MxNDZlZTUyODk3NWI1MjczYWNkODZjMWY1N2YwODU1ZDVhYzA0YiBsZWdhY3ktdHJ1bmsKKzIzMTM0IGJjNTA1ODFiM2Q3Y2RlMjc4ZmRjYzA1MGNiYmJiYWZhMWVmNmYzOTYgbGVnYWN5LXRydW5rCisyMzEzNSBkMWNkNGNkNzIyNzFlMDdhNzU3ZmY5MDA0ZDQ4MDBkZjRhM2ViZDJhIGxlZ2FjeS10cnVuaworMjMxMzYgMTZlNGQwOTZmNzg3ZDFhOTUyNDg5MmJiOTFmMTQ3YTM0ZGNjNTQxYSBsZWdhY3ktdHJ1bmsKKzIzMTM3IDk2ZjUzZjg4MzFlZWU0ZDI5MDlmNjhmOGI4NjcyMzViYzZhNWE5NmUgbGVnYWN5LXRydW5rCisyMzEzOCBjOGZlY2UzN2YwMjBiMGU5NjI2MjNmMjg5MDFkZTljMzYxOWY5NDEzIGxlZ2FjeS10cnVuaworMjMxMzkgZGY2NmI0ZGQwYjBkYmI0NDg4YmFjZjZhM2Y2YmE3N2EwZDdmNmM4NSBsZWdhY3ktdHJ1bmsKKzIzMTQwIDcyZTZlYjY1MzMxMjA3YjgxNmUzZWJhNWIwODJiNDQ5MTQ0MmFmNTIgbGVnYWN5LXRydW5rCisyMzE0MSAzYjBkYTEzYWNlNDg1NzIyZWQyZTQ2ODkxNTBhMDIyYzZhZDQ3ZTIxIGxlZ2FjeS10cnVuaworMjMxNDIgYjI4ZmM4YzM2ZTNkZTc4ZjdlMTUxMTkzYzg5MDQ0NGIzYmVkMWMzNSBsZWdhY3ktdHJ1bmsKKzIzMTQzIDJkYTY2Y2U3ZWUyMjk1MTc0NzIwOTM0MTMxMmM5NjRlMTVkOWJiYzQgbGVnYWN5LXRydW5rCisyMzE0NCA3MzMzMTRmY2ZkYWEwYTk1ZWY2YmI3OGQ3ZmVlZDI0ODJjMmVmZjc5IGxlZ2FjeS10cnVuaworMjMxNDUgMzFmZThiM2UyNzZiYWFkZTQ1MDFmNzVkNThmMDdiODRjZDgxMGFhNCBsZWdhY3ktdHJ1bmsKKzIzMTQ2IGMzM2E4NTVjMTI3NDVmODJhOWM4ZDUyZGNmOGQ5YmYyNzJkZTI4MDAgbGVnYWN5LXRydW5rCisyMzE0NyBlOTEzZDc1NzEzZTY0MzI1MTczOWFkNjIxYjg2NjQ1NWEwZmVhMGNiIGxlZ2FjeS10cnVuaworMjMxNDggM2FmMDA2NTAzNjc4YTdjNGVhNjI1NWFiMDVmNWVlMjM0NTY5MGYwOSBsZWdhY3ktdHJ1bmsKKzIzMTQ5IDUxY2M4MjYwNWQzMmRiN2IxNDJmNTUzNjZlOTFkZTZiMWRhNDFmZWYgbGVnYWN5LXRydW5rCisyMzE1MCAxYzQxZmJkMDlkOTNhNjg2MTFjMjBlY2E3YjA4ZDQ3OGNjMDA2N2MwIGxlZ2FjeS10cnVuaworMjMxNTEgMDQ5MWVhNjExYmM0Yjc3M2MxYmI5ZmNhNWI1MGNmYzYwM2ZkYTVlNyBsZWdhY3ktdHJ1bmsKKzIzMTUyIDg0Mzc2MzU2ZmY4OTBlOTAyNzkyMGRkMjI0NmYwZDZkZGE0ZWFlMGUgbGVnYWN5LXRydW5rCisyMzE1MyBmYzQwZDBiNTQwNDM3ZTk4ODczNDI4MzZlMWMzMzlhMmNmZmQ2NGRkIGxlZ2FjeS10cnVuaworMjMxNTQgMWY2MTUyNjMwN2MwMGI2Nzg4YTFhNjk4YmM4OWY0NzA4NTY5NjgxNSBsZWdhY3ktdHJ1bmsKKzIzMTU1IGZmMzc3NDcyZWFjOTQwYjI1ZGExMzEyNDQ2OWUyNzRjNjgyODBmMWQgbGVnYWN5LXRydW5rCisyMzE1NiAwNzgxOGNiY2QzMDI2ODhjYTEyNDE3NTZmYzk5ZWY3YzE5ZWVlNmNhIGxlZ2FjeS10cnVuaworMjMxNTcgZGUzOTk1NmI1NDU4MDQzNjVmMTYyNGE1MmU1MmQyN2I0OWQxMjhkMSBsZWdhY3ktdHJ1bmsKKzIzMTU4IGMwODI5NzE4MjNjZTkxMzA4OGExOThkZjlhOGViYzE5ZDVjZDY4YTQgbGVnYWN5LXRydW5rCisyMzE1OSA1OGQ1MDA5NGJmODA4NDc0MDExZjhiNzRkZDM4MTlhODYzOWFhNzkxIGxlZ2FjeS10cnVuaworMjMxNjAgYTdiYTAwZTNiMGRlMmZkNGJkYzcyOWQzMDM1M2VkYmVjN2YxNWJiZiBsZWdhY3ktdHJ1bmsKKzIzMTYxIGYzOWE5YmU3YzlhZjc0Njg1YzQxMWVhNTc4MzI5MjNhMGNhN2ZiY2QgbGVnYWN5LXRydW5rCisyMzE2MiBkNjhjZmQ4NWU2ZGI5YjVmYmJjODMyZjZkMmM1MzFhMGM5NzMzYmIxIGxlZ2FjeS10cnVuaworMjMxNjMgZDU3YTZjODEzNjU4Y2MwMzAwZjVmNGQzNjlhZWU3MDNkM2NlZDViNiBsZWdhY3ktdHJ1bmsKKzIzMTY0IGEyODhhNTVmOTI5MTUxYmJhZDVlYTJlNmE4ZjQ2NDMwZTZhNzc4MDMgbGVnYWN5LXRydW5rCisyMzE2NSA0OWI3ZTM5ODA4NTNiYzJkNTUzNDdjMWJjZDdlNmRhMmFjMWI4NTQzIGxlZ2FjeS10cnVuaworMjMxNjYgY2JhNDQ5YWI1OTE1NzljOTRmY2QyZDdjMGI1ZmE3N2Y1OTZkMzY4MiBsZWdhY3ktdHJ1bmsKKzIzMTY3IDcxYzg1M2RlZGIwNzI5MWRlZjBiY2U4YzQ2MGFmYzI0Njg4NzcyM2MgbGVnYWN5LXRydW5rCisyMzE2OCBjYTBmNTRkYWNkZDhjNDVmZTVmYmQwYzYwMDg0ZWUwYjA0ZWVkOTM3IGxlZ2FjeS10cnVuaworMjMxNjkgMjAyN2RjMTI0ZWRkYWRiYzllODA0ZWM2Y2YwYTJmNjQyNmNmMmU5ZiBsZWdhY3ktdHJ1bmsKKzIzMTcwIDIyNjNjYjQzZWFhYmJlYTBjZmQ1ZWIxY2UzMTI1NDdiYjZlMjI2MTMgbGVnYWN5LXRydW5rCisyMzE3MSAxYjU1ZDc5YzY5ZDVmZTA0OWQzNTNhNzUzMDMzYWRhYzFhNmY0NjFhIGxlZ2FjeS10cnVuaworMjMxNzIgMjk0YTM4YTE5YjVhOTdlZTVhYWRlMWI4NGNlZGJmMDk1NDViOTY3YSBsZWdhY3ktdHJ1bmsKKzIzMTczIGQ5NmNkYmI0ZDI3YmMxZTE1YzdiNWZkZjhiZWY5NjdkODNkYmFhMTAgbGVnYWN5LXRydW5rCisyMzE3NCA4ZTRkMzViYzY3M2ZmYWQ5ZGIzYzJiOTc0Yjg3ODNkOWUxZTFkZmJmIGxlZ2FjeS10cnVuaworMjMxNzUgNjM5MzAxNTljYTNjNzJhOGI4ZjQ0M2YzNDM5NzNmYWE4YzIyMDA1NyBsZWdhY3ktdHJ1bmsKKzIzMTc2IDE2ZjY0ZDdkYThlMzIxYzIxZGEwNzU2ZmJkN2QxMDY1ZTMyOTQ1MGQgbGVnYWN5LXRydW5rCisyMzE3NyA5N2NmNmRjZDBhZWQyN2E2YmRmYmVhMmFlZmVhMTg4NDYzYmQ0M2M3IGxlZ2FjeS10cnVuaworMjMxNzggY2IzNWQwZjcwNGRlMGI3MGIwNmIxYmJmZTEwMTJiMDNjYzYxY2UyNiBsZWdhY3ktdHJ1bmsKKzIzMTc5IDAxZjY2ZjVkYjMyNjE4NTMxODJkYzRmOThlOTgyZTcyNDZiYmQ4MjggbGVnYWN5LXRydW5rCisyMzE4MCBkZjQwOTg0NGI2NTk3OTNmMzY5ZmFhZGI4NWFjYTk2OGU2OTNkZDQxIGxlZ2FjeS10cnVuaworMjMxODEgY2U0MTRhNmQzMGI0NmU4MzZlY2U2NjFkMjk3MzAwYjQ4MGY0NzQ3MiBsZWdhY3ktdHJ1bmsKKzIzMTgyIDI4OTQ0NTg4NzdjODI5OTM3MTI5MDkxYTJiNTQ2MzA3N2NiYzUzZGEgbGVnYWN5LXRydW5rCisyMzE4MyA2MDQ2ZTk1NDZhNzAyYjYxNTMyMzYxYTkxYzZmY2M5NzRjMDQ5NmQ1IGxlZ2FjeS10cnVuaworMjMxODQgOWJjNzZlMzZiYTU3ZWM4ZjVhM2ZiY2MzMTQ4ZGZlM2I4NTIyZjFiMSBsZWdhY3ktdHJ1bmsKKzIzMTg1IDM2YzA3YTE3MThlOTg5Mjk4ZTYwZDhmMGY0NTdlOGFhYjU3ZTM3OWIgbGVnYWN5LXRydW5rCisyMzE4NiBjMzI3YThhYzlmMmI1ZmQxMDBmMDVmYTQyNjBhZTdkODI4NWRhYmVkIGxlZ2FjeS10cnVuaworMjMxODcgNjIxZWQxMzQ0NWRlNTVmNzlhN2ExMDE3OTZiOWQyM2E1OWVhZGFkMCBsZWdhY3ktdHJ1bmsKKzIzMTg4IGI2Y2YyZjI3ZTQ0ZmFhNTNkYWVkMjUzMzlkMjQzMDdkN2JkNDc5MDUgbGVnYWN5LXRydW5rCisyMzE4OSBmMmYyNWE3MzhmN2YwOTNiNDRjNTI5MmQ1NzY5NjZkY2U4YmNjOTcxIGxlZ2FjeS10cnVuaworMjMxOTAgNjE5YTJkNmI1ZWE5MjE5ZDE3NjQxNTJlM2M1NmExZTk5ZjYwNTI4ZiBsZWdhY3ktdHJ1bmsKKzIzMTkxIDY5NDRmNWI5ZGUwM2RiOWU4NjBhOGI5MWM4ZDQ3ZGE5MTNkN2RkZWYgbGVnYWN5LXRydW5rCisyMzE5MiA4OTZmMmQxZTJmNDZkNzZjMTczNDMzMzQxOWQ5OTQzYTljZmYyNDFjIGxlZ2FjeS10cnVuaworMjMxOTMgZmQ3YTdmODMyMjU4ZDdhOTcyMzhhOWMzMzgyZDRlMTZiYzVkMDg5YyBsZWdhY3ktdHJ1bmsKKzIzMTk0IGFhY2E0ZDNjZjYyYjY3NWJlMDcwYzY3N2EyMzBmODQxNDM4M2Y4ZGUgbGVnYWN5LXRydW5rCisyMzE5NSAzYmY2MjJiYzI3OTIxODE5M2RmMTg4MTcxNTU0NTY5M2EwMjBlNTYwIGxlZ2FjeS10cnVuaworMjMxOTYgMGQ1MzVjODZiZTVmNTJmMGE4NDExYzhkYzFhOWExOTIyZmE0ZWNjMyBsZWdhY3ktdHJ1bmsKKzIzMTk3IDg1MjJiMDIyZjgwYTI5MzVmNjYwMmFjMGU4NDYzYmM1NTJlZGI5ZWQgbGVnYWN5LXRydW5rCisyMzE5OCA2NzczZGNmZTM0YTM2OTFmNTgwZjE5ZTI2MjUyMmM0ZWZjMWI2YTUyIGxlZ2FjeS10cnVuaworMjMxOTkgZDk0MGFmNTI1ODQwOGVkNDhkMGJkOWZjMjQzYTMzMDNjOWFmNzNhMSBsZWdhY3ktdHJ1bmsKKzIzMjAwIGJlNGJhYWZhNGM1MjhkMDYyMzU2NGUzZWE3NTQ1OTBlMWZmOWI2ZTcgbGVnYWN5LXRydW5rCisyMzIwMSA0MTc5OWI3MGE5NmMxZTNjYzExOWVhOTMzYzYyZjlhNTA4ZDkxYjU5IGxlZ2FjeS10cnVuaworMjMyMDIgM2YxOTIyOTkwOTAzNDkyNDBjYTMyZGEwOWNjZmFjNDU4N2MxNTcwMCBsZWdhY3ktdHJ1bmsKKzIzMjAzIGVhZjEyMDNiODVjZmQwODRlMDI3YmI0ZTRhOWE3ZjhiOTNlNmY0YTQgbGVnYWN5LXRydW5rCisyMzIwNCAwNGNlMmE0OGMwYTgzMWE4NGIxYTIyYjU2MDk5ZTg0YjA2YWQxYjg2IGxlZ2FjeS10cnVuaworMjMyMDUgNzYxMzNhNDY1ZTAzOTZmNDhjZGYzY2M5NWQyYzU0NjI2NzVmYjI1YyBsZWdhY3ktdHJ1bmsKKzIzMjA2IDc4OTQ2YTc4NDM1MTIwMmQwNTJkMmZhYjM5YmY0ZmNhOGQ1MmM2MzIgbGVnYWN5LXRydW5rCisyMzIwNyA5NmM0YTNmMDhkY2UyNGRiZGY1ZjcwNTFlMTk5MDBjYmZlZTk4YmYxIGxlZ2FjeS10cnVuaworMjMyMDggMGY5ZGY1NjNiNjVkZTRlMTQ4MjIzMWEzZTRkNDg0YmIxN2UyMTYxZSBsZWdhY3ktdHJ1bmsKKzIzMjA5IDg0YWYxZGQwMTFlZTMzZjdhY2RmOWRlNjY2NWVkZDA4NzJiNzc5MTcgbGVnYWN5LXRydW5rCisyMzIxMCBmMzZhMmQ0MGExZGY2OGFmMzQyMjMzMTcxMTA0NmE3Yzg0ZmYyMzMyIGxlZ2FjeS10cnVuaworMjMyMTEgMzM2NjljODkxNGI0YWUxMjNjM2M5NTg0MjdhOTBkOWNiZjU0MTQ1MSBsZWdhY3ktdHJ1bmsKKzIzMjEyIDkwOThhMzA4YTU3YjA3OGNhMDI2NzQzYTU3MGI3Mjk5YjhhNWJjMDggbGVnYWN5LXRydW5rCisyMzIxMyA2MDgxZDczNjE2N2IwZTY5M2YwNWIzNzllZmMwNzVmNmQwMTU1MTFiIGxlZ2FjeS10cnVuaworMjMyMTQgMDNmM2FiMGM3Mjg2ZGNhMWFlYmQxMzZhZGE3YjY0ZDE3ZDQyOGI2NSBsZWdhY3ktdHJ1bmsKKzIzMjE1IGNhZTNmZjMxYmQ5MTJjMTQzN2RhYjQ2YzgyMTNhOGMzYjU5ZjgzZmMgbGVnYWN5LXRydW5rCisyMzIxNiAwODM3NGE4NTI2ZTIxMDNmZDZjMGI2Y2Q0MjBiMjBkMjFkYzA3YTJlIGxlZ2FjeS10cnVuaworMjMyMTcgY2M1MmIwNWFjOTc5NTQ0MmE3NDc3ZGY4MWNkZjgxMWMzNWE4YzE3ZSBsZWdhY3ktdHJ1bmsKKzIzMjE4IDk2OWUzMDZiNjJmZGU5YmRhNjc4NDg2MzcwYjkzYzc1MTgyMGFmZjQgbGVnYWN5LXRydW5rCisyMzIxOSA0M2U1ZmQ1NGY4Yzk4ZDlhN2RmNWYyOWU1ZDZkOTNkZDhjZjg2OGVlIGxlZ2FjeS10cnVuaworMjMyMjAgODE3NzQ1ZTVhZGZiMzc2ZDE2NTcxOGNkNGI4YzI0MWRlMTk4ODZlMSBsZWdhY3ktdHJ1bmsKKzIzMjIxIDQ4Njg5MzQ2ZThiYmQ2NjcwMmI0YjE3NGM2ZTE0YzM1YTUyZTMwMjEgbGVnYWN5LXRydW5rCisyMzIyMiAwYjUxZTYwN2YzMzM3Zjk0NTcwMjQ0ZDk2OWFkNTU1ZjgzZjE0MzE0IGxlZ2FjeS10cnVuaworMjMyMjMgZTkxMjhlYTQ1Y2RhODIzZTc3OGU1OTAyMDUxNjA5NDA1ZTRmMWNkNyBsZWdhY3ktdHJ1bmsKKzIzMjI0IGIxNDA4YTI4ZDhiZTJiNmYxNjc4OWUzMWM1MTk0MmI0NWNmMzZiNTIgbGVnYWN5LXRydW5rCisyMzIyNSBmNzYxY2FiMjhjMWMxMGY0OTVlOWQxMzI2ZmZhYjliM2JmOGVmYTcwIGxlZ2FjeS10cnVuaworMjMyMjYgZDRjOTY1MzE2NjEwNGY2OWRmZTRiMzcxYzE0MTgyY2E0MjAwZWE4NiBsZWdhY3ktdHJ1bmsKKzIzMjI3IDIwYWRmZWM2MTQ2N2Q1YmM0ZGMyYTIzZjcyMzc4NWFhMDIxYTFjMjcgbGVnYWN5LXRydW5rCisyMzIyOCAwNWY2YjA5ODk5NTMyYTY2MTdiNTZjYzI5YjlkZDBkMmFlYjliOThjIGxlZ2FjeS10cnVuaworMjMyMjkgOGVkYzQ0YmQwYWM3ZjE0M2EzOTA3ZTUzZjg1OGQwMDJiNjYzYzhiNCBsZWdhY3ktdHJ1bmsKKzIzMjMwIDRlNDQ1YTNlMDdjNmI1MzU4YjlmZTFmZjhlYmY0MmYyYjI0NGEyM2YgbGVnYWN5LXRydW5rCisyMzIzMSBkYTAwMTg4ZDUyNzA5YWY2ODlhMzUzZDkwOWZlYzEzMjI4OTU0ZTllIGxlZ2FjeS10cnVuaworMjMyMzIgNjMxM2ZhMzhlOTBlYWRhMzRkNjQwOTIyOTc4MGE5NzFlYmFkZmJmZSBsZWdhY3ktdHJ1bmsKKzIzMjMzIGE5NjBlNjczMDc3ZmM1YjI4MzU1ZTMxZjFmNTQyYWY3MmFmYmM4ZjcgbGVnYWN5LXRydW5rCisyMzIzNCA4ZGNmYWYwZTY1NTliYjZkY2I0MWJhNjk0Y2I4MmIyYWJlYzYwODk0IGxlZ2FjeS10cnVuaworMjMyMzUgOWFiNmFmNjgxNWFmY2I2ZGEwNjA1Y2ZlYmM4YzhiMDkyZDllMTM4ZCBsZWdhY3ktdHJ1bmsKKzIzMjM2IDBmZDk1MjAwYWI2ZWM0ZDdhMDQ5MTYyZjUzMjk0NDJmMWQwNWQyODIgbGVnYWN5LXRydW5rCisyMzIzNyBiZjRiMWIwOGEyYzZmMjI5YTk4ZmRjYjgzNzJkMjgzYmNiOTk4N2RjIGxlZ2FjeS10cnVuaworMjMyMzggZDU2NDZjMGM1MTMwY2MyZjkyZGUwNzFhYzEzOGI4YmU4NzgzNjlhYyBsZWdhY3ktdHJ1bmsKKzIzMjM5IDk4ODEyZDIyMTA3NTE4MDZjZTcyZjYzNjI4MzEyMTA0YmJlMTRhYjEgbGVnYWN5LXRydW5rCisyMzI0MCA3MTJhZmRhZTExMjM5NGMwYTk4OWYwZjE0YTVjYzk1OGM5MDhkMjc4IGxlZ2FjeS10cnVuaworMjMyNDEgZjQyZjg5YjViOGY5YmI0NmEyYzQ1YjE1MGYzZmEzOTJiNGMyYjhiZSBsZWdhY3ktdHJ1bmsKKzIzMjQyIGRiMTZlMjZhMDcxYjgzNDNjMzliOTA0YzllOTFjMGUyNjE5MWEyNDQgbGVnYWN5LXRydW5rCisyMzI0MyBmY2I4NzcwNjlmYWE3MTE3MzJjMDliZjIwODM4MGUyNzg0ZjJmNTgyIGxlZ2FjeS10cnVuaworMjMyNDQgY2VjOWUyNWFmMTIxYjE2NTcxZjgxMDdiMTIyM2Q3MjJjYjFjMWRlNiBsZWdhY3ktdHJ1bmsKKzIzMjQ1IGZmYTFhODdhYzQzYTg4NmVmMjU0ODIyMDIzNTg2YTk1YjhkMDExMWYgbGVnYWN5LXRydW5rCisyMzI0NiA4NzEzNGM3ZjJiYzc3YjgzNjQ1NGI2ZDZhOTczOTE3OTIxMzU3MWVkIGxlZ2FjeS10cnVuaworMjMyNDcgOWQ3Y2E1OTE0ZDFjZWI1NjNiNTBiODNkZWY3ODQ3OGU1MjY1YTgxMyBsZWdhY3ktdHJ1bmsKKzIzMjQ4IDI4ZWYyMmEyNTk4ZTVhYTMxYjE3ZWJlNWEyZTQ3YmQwYjZlNmJkZjMgbGVnYWN5LXRydW5rCisyMzI0OSBhYjZjMTQ4MjJkZTFiZjY1ZWMxMGRjMGU3NjZiZWM3ZmExNjEyODcxIGxlZ2FjeS10cnVuaworMjMyNTAgYjA3Y2I1MWQ3MzFjODcxMTVhMTYyMTU3MGYzYzlmODFjY2M2ODJmZCBsZWdhY3ktdHJ1bmsKKzIzMjUxIDY0NmUyNDcyODg1MjNiOGVjOTBhMGE3NGUyOWYyMjdjMmIxZGYwNGEgbGVnYWN5LXRydW5rCisyMzI1MiA5NDFjMjg2ODYwMzk2ODRmMDIxOGM3OTA0N2I0ZmIwM2E4NmJhM2M5IGxlZ2FjeS10cnVuaworMjMyNTMgOGEwYzk3NDUzZGY0ODM1ZDJmYmNmYmEzMjRkOTIyODI2OTdlMTFhMSBsZWdhY3ktdHJ1bmsKKzIzMjU0IDFmNGUyNjI3YjYyNzAxMWQ0M2IxMDI0M2ZjYTFmNjcwNmQ0NDU4NTkgbGVnYWN5LXRydW5rCisyMzI1NSAzNGFmMTlkY2VmNTkzZjFjYWQwZTY3ZTk5MzNlOTM0ZjgxMzI1NmMyIGxlZ2FjeS10cnVuaworMjMyNTYgN2ZmZTI3NmE2ODU0YzgzMjI3ZDI0ZDU4MDNiZjFkMWJmNjJhNjMwMiBsZWdhY3ktdHJ1bmsKKzIzMjU3IGIwYWZiNjkxMzQwMWFhNzRhZWJjOTYyYWNiYTVmMDg3NWJmMWM1NjYgbGVnYWN5LXRydW5rCisyMzI1OCBjN2NhZjc5ZjUxNDMzZDg2YmM0Yjk1MThiZWQwZmZkNDRlNjRhZjJkIGxlZ2FjeS10cnVuaworMjMyNTkgMzgxNWM4YWQwMmQwMzM0MDkxZTIwN2E4NmQwOTlkNmJiZmEyNzEyMSBsZWdhY3ktdHJ1bmsKKzIzMjYwIDljOGIxOTYxNTAzNDEzNDM1NjA0ZmFjMmU0Njc2ZTdmYzg0ZGZlODQgbGVnYWN5LXRydW5rCisyMzI2MSAyYTdiNGQ0NDYwZDNlYmU4NmIyZDkzZWQxZjk3NzgwMGEzZjU0ZjZlIGxlZ2FjeS10cnVuaworMjMyNjIgNTZmZmVlMWVlZWVjNGY5OTBkYTEyZmVhNGJmMTM5YjdiOTA3MjBmYSBsZWdhY3ktdHJ1bmsKKzIzMjYzIGVkMThkNDQzOWYwODRmMjllZDk2MmE4YjkwMjFhNjlkNTk4NThkN2YgbGVnYWN5LXRydW5rCisyMzI2NCAwZmUzMThhNzg5OTA0MTQ5ZmMwMjg1NWEyYzkyMzc4NGI2M2FkOTgwIGxlZ2FjeS10cnVuaworMjMyNjUgZDAzYzE5ZGIzMDk0NzdiZWI0NGU5M2U1ZDcyNzVkZWQwY2UyMGFhZCBsZWdhY3ktdHJ1bmsKKzIzMjY2IDc1YjdlOGJkYjIxZWY2MDU0NWM5NmVhODFjMDMxZjlmNjE5OTM1ZTEgbGVnYWN5LXRydW5rCisyMzI2NyAzZmFhYmY1NGI4YjgzZDEyNWRmY2VjZDViYTk3NTI0MDZjMDRiZjMzIGxlZ2FjeS10cnVuaworMjMyNjggZTMxODRlNDYzMDNiNTQ5ODI5ZGU2ODBhNTU2MjFkYzgwOGQwM2RiNSBsZWdhY3ktdHJ1bmsKKzIzMjY5IGYwMjBkYTc4MWI5MTVjYzZhYmEzZGE2NzMwNDJjYmY2YjNmMWMwNWIgbGVnYWN5LXRydW5rCisyMzI3MCBjYTdhZjJhNWQ5MTViOWM2NGYzYTMzOGU1OTQyOTQ4ZjNmYTE1NTkzIGxlZ2FjeS10cnVuaworMjMyNzEgNzE4OTVkZDI2OGUyZDA2Mzg0Nzg2MTVmYjc5NmJiNjBjODk3ZGZmMSBsZWdhY3ktdHJ1bmsKKzIzMjcyIDA4NDQ2YTk4NmE1NjJkMmFhOTBlZjM1OWUxOTc1MGQ1N2E0YWE0ZjAgbGVnYWN5LXRydW5rCisyMzI3MyA4YWExYWRhMzNmNjRlMjAyN2JjNGM5OTMwZjI2NGNmYWYxZDU2ZmIxIGxlZ2FjeS10cnVuaworMjMyNzQgMGZkMTJmOTJjZThmMGM2MGM2NTcyY2VmMDIwNzQ1OGMwNzc2YzI0MyBsZWdhY3ktdHJ1bmsKKzIzMjc1IGI3MGMwODgxM2JhOTdjMjRhYTA3MzBhM2QwZTY5NjRhMTUxMzIxMTIgbGVnYWN5LXRydW5rCisyMzI3NiA0MGNjNjYyMWVkZGNhMDcyMWJkMTk5ZTdlNzlkZTJmNGZjYTg0YmU1IGxlZ2FjeS10cnVuaworMjMyNzcgMTA5ZGVmNGE1ZjZlOTg1MmE2MjIxYjIzZDVhOTY1OGVjNzZiYzc5YSBsZWdhY3ktdHJ1bmsKKzIzMjc4IDcyOWZkZjA0NTQ5NDFlOTYwYjkyM2Q5YjdlYWZiODA1OGYxOTU1YzMgbGVnYWN5LXRydW5rCisyMzI3OSA0Zjc0NzE0MmU4NGM4Mzk5MjYwYTMzOWNkODUzOTAxOGMwMzNjNzg0IGxlZ2FjeS10cnVuaworMjMyODAgYjdlYzk4NWQ4NWM2MTk2ZTIyMGI1MjA0M2ZmZTZjZDEzMWZhZjkzYSBsZWdhY3ktdHJ1bmsKKzIzMjgxIDdjNWNkNjg1YzFkZTAyZDk3NWYzOWUwY2U3NGFjZDdhMWFlYjI0ZjcgbGVnYWN5LXRydW5rCisyMzI4MiBlNjNmOTc1NjJhNjI5MTQxNmZlYmI0ZDRjMDhhYzAwYWRlOTc3NGU4IGxlZ2FjeS10cnVuaworMjMyODMgZGYxYjgzZmQwZWJiZGJiN2FkYWY3ZDA5Y2UyZTZiZjlhMGJkODNhOSBsZWdhY3ktdHJ1bmsKKzIzMjg0IDRiYmI0ZDliNGQ3NzY0MWQwZDU5YTkyY2NjYTI4YWZmY2U3ZjFlZWEgbGVnYWN5LXRydW5rCisyMzI4NSA2Mzc4Y2IxMTdiNzNiYjMyYWU5ZDUwZDljNDUwNGQyOTJiYTUwNWYxIGxlZ2FjeS10cnVuaworMjMyODYgZTVhM2Y5ZDc3NjZiN2QwZjRiOTQwMWVjNmM3ODhhZjVjM2JhZGUyZSBsZWdhY3ktdHJ1bmsKKzIzMjg3IDVjOWE5NTVlZjE3Y2RhMTE3MzAxMmNkZTYyOWUxNzFhM2YxNGE5MmIgbGVnYWN5LXRydW5rCisyMzI4OCAxMDRiNWM5Yjg4ZWFlOTdkZGI4YzU5MTYyMzk0ZTIxNjk5OGU4YzVmIGxlZ2FjeS10cnVuaworMjMyODkgMDYyYWM5YWFmZTQ3YjgzMGIzNDlhNGJjYzU4MTk3ODgyYWI3YTJhMiBsZWdhY3ktdHJ1bmsKKzIzMjkwIDA5OTZmMDdkMDRhM2FjZjBkNjBjMTRlMDVmYjc4NDFiMTE4YjgwZWUgbGVnYWN5LXRydW5rCisyMzI5MSBhYjYyZDE0N2JhOTBmMzU5NzUzODg4ZDM1NzUzZjJlMTZmMmMzMmRmIGxlZ2FjeS10cnVuaworMjMyOTIgZTUyMWZjMzcwYmUyMDUwZjQ1M2E2YTFlOTgwYmQ0NDcwZTAwZGY0YSBsZWdhY3ktdHJ1bmsKKzIzMjkzIDhhNmYyZWU2ZWFiYTMxYTRjYTQ2OGFkN2Y0YTJhMWE3MmFiNGU5YTMgbGVnYWN5LXRydW5rCisyMzI5NCAzYTRhMDAzOWVkZjMyYmY2OTI1OGQ5ZDBmOTlkZDUyOWQyZWQ3MjY3IGxlZ2FjeS10cnVuaworMjMyOTUgNTk4ODJlN2FhYjg5YzkxMjQ0MGRkN2IxNTA5ZDM3MmM3NGFlZDEzYiBsZWdhY3ktdHJ1bmsKKzIzMjk2IGNkNzJiNjRhZWM5Nzg5Y2VkZmU3ZjA3MjllZTQxMjQ0ZjFmZWQyZDIgbGVnYWN5LXRydW5rCisyMzI5NyBlMDhmNDIzZjkxNjVjMDVjZWVkMzQwMzE2OTFhNGQxYmM2NTY5ZGFhIGxlZ2FjeS10cnVuaworMjMyOTggNjZiYjEwZWU0OTYxMmI5MTYwZGI3ZDlhYWIyNWFlNTcyODVlYWY2NCBsZWdhY3ktdHJ1bmsKKzIzMjk5IDE5MjlmYzY5NmEwNDg0MWMzZDYxZGVmOTlmOTA3NWRiNmFmZWM1ZWQgbGVnYWN5LXRydW5rCisyMzMwMCA3YjhjMTE3Mzk3MTRkMjcwMDY0NmY2M2NiMmI3YzAxYWVlZjAzMzExIGxlZ2FjeS10cnVuaworMjMzMDEgOWI4MThhZjBkNzMwZTliYzBhNTc2OGJiZThjYWM1YzI0ZWE4NjY2NCBsZWdhY3ktdHJ1bmsKKzIzMzAyIDRjNWNkM2QxY2Y0YjViYzNjODFkMjdjYmU5YThmZTg1NzU3ZWFkMzIgbGVnYWN5LXRydW5rCisyMzMwMyA2MzEwODM3Y2E1MzQzOTE3N2FhNDY3ZmY5MDRiZWFiNDdjOTMzYTNiIGxlZ2FjeS10cnVuaworMjMzMDQgMWE1OGM3NDY2MmU5M2Q2NGQ4NjY5ZTY3ZTNiMjYzMmIzNTJkZTgwNCBsZWdhY3ktdHJ1bmsKKzIzMzA1IDZlOTNhMTU4NjgwMGE3OWE1ZWY2YjBmZDRiN2I5OGI4YWI5MDAwYjMgbGVnYWN5LXRydW5rCisyMzMwNiA0OTY2Y2Y3OTNiNDRjMDYyMzk2ZjljYjIzMWNmOWM2Mjc4ZTYyNWNkIGxlZ2FjeS10cnVuaworMjMzMDcgMGVlODkwM2QzZmVkMDE3MTI3Y2QxNDJiODYyMGExZjg0YmJhZDJlOCBsZWdhY3ktdHJ1bmsKKzIzMzA4IGJmZDRlMDNhZDIxMmQyNDlkZjQ5N2ZkZjVmODFmZTFlY2Y1ZWFmZDMgbGVnYWN5LXRydW5rCisyMzMwOSA5MjBjNjNjZmNhMGNkZTMyODJhZDVmZGJlYzU2ZGVjNDBjNDhjNmUxIGxlZ2FjeS10cnVuaworMjMzMTAgODhhMDNlYTU3NzE0ZjhmMTU1ZGZhN2U2MjQxZTJlYTBlMjMxYjA5ZiBsZWdhY3ktdHJ1bmsKKzIzMzExIDMzZWRjOTk4NjFiOTBkNGQzZjVhNDEwNGE4ZjMxZWZiMzdhYzdiMmMgbGVnYWN5LXRydW5rCisyMzMxMiA1YjFhZDdhY2FiYjViYzU0Y2VkZDk0NGY4Mjg2NWVlNzQyZmNmYjU1IGxlZ2FjeS10cnVuaworMjMzMTMgYzJiZjBiMTMzODBlMzA0ZjBkNjYwOTc2OWU5NDY4M2Y1MmE0OTNmMyBsZWdhY3ktdHJ1bmsKKzIzMzE0IGQyZDgzNWIzNWQ0NzVlNWI3NWQyZjRhMzEwNmRmMGM0ZDFjNTUzZWQgbGVnYWN5LXRydW5rCisyMzMxNSBjY2VjMDJiZmU5YTA1OGY2NDQ5NjhlYWRhYzU4NjZhNTYwYmU2MGIwIGxlZ2FjeS10cnVuaworMjMzMTYgMmNhZGRiODJmZmVhMmY1M2JiOThhZjM1NDc0ZWE2ZDVmNTA1ZTQ5ZCBsZWdhY3ktdHJ1bmsKKzIzMzE3IDYzOTAxMzlhZDA4MjVkY2IxZGFkYjcyZWNiYzEzNTJiNjk0YTJlYWMgbGVnYWN5LXRydW5rCisyMzMxOCA5YTU5OWIxZDlkMWM4NGE3Nzc4Y2VkZTU3MzJkMTRjOWJjMTg5MmE0IGxlZ2FjeS10cnVuaworMjMzMTkgZWYzMDM0YTYwYTNlYzJlZjI5ZGJiMjBlNDMwM2E0MjVmYmVhZWExMyBsZWdhY3ktdHJ1bmsKKzIzMzIwIGY4NDY5MWIxMTQwMjdhOWE5OTE5NzJiZDczYjk4ZDJiNDE0NzczMWUgbGVnYWN5LXRydW5rCisyMzMyMSAxNGM4M2NmN2YzMzgyZTJmYzBmMGIxOTUwZTU2OWI1Y2M4OWJkNzU0IGxlZ2FjeS10cnVuaworMjMzMjIgMjk5ZjVmY2IwYmE4MGVjZGQ2ZDBiYTZlZGNjNjY5MGFhZTZiMzNjMCBsZWdhY3ktdHJ1bmsKKzIzMzIzIDY5ZTgyMDYyNGNiYzMxNmEzOWUxODk1ZTBlZDBhM2Q5ZDlkYTM4MTMgbGVnYWN5LXRydW5rCisyMzMyNCA5MGE0ZjIzYWJkYTdkY2YwNjJkMWUzNWNhNDEyMmUzY2FlNTRjODAwIGxlZ2FjeS10cnVuaworMjMzMjUgOTM5NzdmMTc1NTJkNThlODM5M2NlYzAwMzY3ZWQ5NDBjYzBmNmQ2NCBsZWdhY3ktdHJ1bmsKKzIzMzI2IGUwMWRlOGJjNTgxMzc3OGFmOGM1NzZjOWZmMmEzMjBhYTBiN2E2NzAgbGVnYWN5LXRydW5rCisyMzMyNyAzOTlkNzc3YWYwNDg1MTI2N2RkMDcwNDRlMjBhMWIzOWFiOTVmMGMxIGxlZ2FjeS10cnVuaworMjMzMjggZDhhYmY5Y2UzMjI1MzI1Njc5Y2MzODQ3YWRlYzljY2QyMWQzOGVmOSBsZWdhY3ktdHJ1bmsKKzIzMzI5IDUxMTc3NmQ2ZDdkODY4NWE4NmE0Mjk3MTUwYmUzMDZhYTk0YTBmYjAgbGVnYWN5LXRydW5rCisyMzMzMCBhYWU1Y2Y3ZTU4NjE1YzQ3Y2IxNWZjODU4ZDcxYmQ0YTNkNzMyNzcyIGxlZ2FjeS10cnVuaworMjMzMzEgZDkyNTBkNWI3OWE3NTkyNmNiMWI2NTIyNmJjM2RjODYxMGE1NjMyYiBsZWdhY3ktdHJ1bmsKKzIzMzMyIDhmMTliMmE4YzYzYzY3Nzk3MGQyNzQ5NjdjMGQyMTUyZDgyYjM0NGMgbGVnYWN5LXRydW5rCisyMzMzMyAwMDRjZGVmYjcwZDFmOWRiY2YyZDI5NTdkMjQ5ZTZjZjIzYTU3ZTQ2IGxlZ2FjeS10cnVuaworMjMzMzQgOTI5OGZlZTQ0NmI3NzQwYWQzZmM2Y2FmMzQ4MDkwZWRjZDQ4ZjFhNyBsZWdhY3ktdHJ1bmsKKzIzMzM1IGY0OGE0MWM5NzAyMTU2OTQyMjVhMjk2NWE0OWJlMWNlYjVjY2NkMmMgbGVnYWN5LXRydW5rCisyMzMzNiA0Mzk3ZmE1MTUyZmE0MTY2ODFiNjUyNmUxYWZjMjMzNTZmNjVmNmQwIGxlZ2FjeS10cnVuaworMjMzMzcgMThkZjMyZjZjZWExM2UzZTI3ZmRmNGRhMTRjZjAwMjI2ZTRlYTdmYyBsZWdhY3ktdHJ1bmsKKzIzMzM4IGZkZmMxOGQ1NTYxNTMwODlkMTFlNTA5ZGJhMzc4YjczZmIxZmZiOTIgbGVnYWN5LXRydW5rCisyMzMzOSA0OGU5M2VmM2M1YjcwYjhlNDQzYjdkMGNlNjE2ZDA3YjE4NTE1MDU3IGxlZ2FjeS10cnVuaworMjMzNDAgMzE5MmEzMmZkNDhmNmM0Yzk4OWJkMTcwYTQyMGNlNWZlOTAzMTgyMCBsZWdhY3ktdHJ1bmsKKzIzMzQxIGRhZDk0Y2E0N2UyMTM5MTRlNDExYWQ0NTI5OWNmYzdlN2ZmNTI3OGYgbGVnYWN5LXRydW5rCisyMzM0MiBiNDE2MWNlNTg1ZTY0Y2ExYzlkMjFlZDFhYjlhYTRkODJmZWVjZTg0IGxlZ2FjeS10cnVuaworMjMzNDMgMzg2ZmIyNmUwODc0N2ViZjU1ZWYyMGJlYjhkYWY0MmU1ZWNjMjcxOCBsZWdhY3ktdHJ1bmsKKzIzMzQ0IDM3MTliYTVlZTg0NDZhNmRkMjMxZGVhN2U0ZWY1M2FhYzBjMTc0NGMgbGVnYWN5LXRydW5rCisyMzM0NSA5MzNiZjY4ZTI2NTAzYThjMmIzNmMxODIzYzFjNzdlYzJkN2E3ZmZhIGxlZ2FjeS10cnVuaworMjMzNDYgNDBkNGQxY2Q2Yzg0YTQxNjE2NmY2Y2UyOTk4ZDRlNGEzZTM2NDBmYyBsZWdhY3ktdHJ1bmsKKzIzMzQ3IGI1MmE2MzA1MjMwNjg2OWIyZjVmNTY5ZDQ5MjVhNTUxNjNmMzI4ZGYgbGVnYWN5LXRydW5rCisyMzM0OCBiMjhjMDdhMWI0MGRmOTllNTEzMzIzYzJlMmJlY2Y3NzhhNzRhMGZiIGxlZ2FjeS10cnVuaworMjMzNDkgZDY1OGExNWE5MGFkOTU5Mjg2YTYyNzJlZjgwNWQ2MGFlMWNiZjM5NyBsZWdhY3ktdHJ1bmsKKzIzMzUwIDI4OWMxYTcwMDI4NjRiOTVjM2Y1OWVjYTM0NjBmMjE1MzQ5NmI3NDkgbGVnYWN5LXRydW5rCisyMzM1MSAxOWFiYzMzOWQzZmNmMmYxYmE5MmRhMzAyNzM5NmM3NzAxNzllYzE5IGxlZ2FjeS10cnVuaworMjMzNTIgYTM4MWFiMGY5ZDI4M2JiYWIyNjZjODg4NGNhMWEzMzYxMzk1YTJiOSBsZWdhY3ktdHJ1bmsKKzIzMzUzIDU2YmRkOTBjOWZkNmRkODY2NmY3NDI3M2E4YjAwMjViYjQxMzk3YzIgbGVnYWN5LXRydW5rCisyMzM1NCA4MTliNmZmN2U1NmE2YjVmYzYwMTg0NmZhYTJlNTM3ZGM3ZjM4YTc4IGxlZ2FjeS10cnVuaworMjMzNTUgMmE2OGM2ZTFmOWM1NGE5ZGFhYzI2N2Q3ZGM5NzE1ZDY2OTFiZjQ3NyBsZWdhY3ktdHJ1bmsKKzIzMzU2IGFiMWFmMWNhMDMwYzVjNWJjNDBkYTRiMGJiY2YwYjRlMWZhYjczOWUgbGVnYWN5LXRydW5rCisyMzM1NyA2MDA5ZDg1OWZiNTczZWNiMGJhZjJjMGQ4ZmZmNmUyMzkzNjU0YTc2IGxlZ2FjeS10cnVuaworMjMzNTggZDE5MTAyMjNiMjQ3ZGYzZDMwMWUzMzhjZWMxZGM2ZTdhNDhmZDBhZSBsZWdhY3ktdHJ1bmsKKzIzMzU5IDhhMTYxNGNlYjM3NzdlYzBiYWUwYzVhMTk0YmRiN2E5YWY2ZjI1NjMgbGVnYWN5LXRydW5rCisyMzM2MCAzZGY0YjhjZGI4YzY4NzljMGJlYmQwMDdhODEzMDI4N2RlMGFkMjJlIGxlZ2FjeS10cnVuaworMjMzNjEgOGYyNWVjMDEwMThiNWE4NjVkNjU3NDk0NWUyNmI1ZmQ1ZjQ2MTdjNyBsZWdhY3ktdHJ1bmsKKzIzMzYyIDgzMjE2Y2E2N2ViZWExYjM0MGVmNjM3NzQyNGZjZDBkMzlmZTUwM2IgbGVnYWN5LXRydW5rCisyMzM2MyAzMzRiZjBiYWVlYjdlYjkxYTBlNTk1NjQzMWY2ZjNkZTg0M2UxYTU4IGxlZ2FjeS10cnVuaworMjMzNjQgZDdkODRlYWU5MmJhMGExMjliMTY3MTEzNDk4NjE0ZjdlOTRhMTNkNSBsZWdhY3ktdHJ1bmsKKzIzMzY1IGJlZmE3MjU4YzIwMGYzOGU4OWUxNWEzZWU2ZjU1Y2IwYzhjNjQ0NzYgbGVnYWN5LXRydW5rCisyMzM2NiA4MGUzNmRhYjIxMTE3YTQ0MGIxZmQ3YTkzODQyZjM1MjY5OGQyYzdlIGxlZ2FjeS10cnVuaworMjMzNjcgZThhMjlkMjNjNzBhOGQzY2JjZmIwMDMyM2NhZDJlN2Q2MGZlZWU2NyBsZWdhY3ktdHJ1bmsKKzIzMzY4IDEyYTc4N2ZiNzFkZjM1MjZlMDE4N2VmZGJjMzc4MzlkMjIyMTVhNTggbGVnYWN5LXRydW5rCisyMzM2OSAyMzNmOTYwNmJhOGUyNGUwMzIxNzRmMTc4MGI5M2QxMWE1MThkNWI2IGxlZ2FjeS10cnVuaworMjMzNzAgOGVjOTVjZTc4NzM1ODM2NmFiYmZlZGJjNmI3NmQyZDQyNDNhZTcwYSBsZWdhY3ktdHJ1bmsKKzIzMzcxIDU1ODc0ZDhlMGRmYmE4YTBkNmNhNThhMmY1YzY2MGMxM2I5MWZkMWEgbGVnYWN5LXRydW5rCisyMzM3MiBlMDI2ZjUxN2Y2NTViNDUwOTYwMmRkMDA3MjgyODVlNjIzNDI3MTU5IGxlZ2FjeS10cnVuaworMjMzNzMgOGMzNzE0MzVmNjkzYzBmYmU2ZDhmYTg3NDdkYjllYzk3M2VkMGU5NCBsZWdhY3ktdHJ1bmsKKzIzMzc0IGI5ZjYwYjgyNTI2MWEwZjk1ZDYzMDg0MDYzM2ZlYTJiYjRjYTA1M2IgbGVnYWN5LXRydW5rCisyMzM3NSAwMTc2ZjYxYWY4NDVkNGM4Y2YyYmQyYTUwZjQ5NDcwZGNkZDA1NGNlIGxlZ2FjeS10cnVuaworMjMzNzYgZjgyMmIzNTZjM2Q5ZGZhODBhNWI2ZGI0OTQ2YTc3M2YzM2M1ZTAyMiBsZWdhY3ktdHJ1bmsKKzIzMzc3IDA5ODE4NjYxM2IwNTdkODFjYWEwZWY4NDNmNTFkODI4OTRmNjEwYjUgbGVnYWN5LXRydW5rCisyMzM3OCBhZWQ2MjExOGQ2MzJlODhkMzViYmY2ZDI3NzZjNDRjNzQ5MTE0ZmUzIGxlZ2FjeS10cnVuaworMjMzNzkgOWMyYjliNzZhMDhlM2VjZDk5NjgyNmNmNGZkOGU3ZDVhZDFjMTcwYyBsZWdhY3ktdHJ1bmsKKzIzMzgwIDNiY2RiNTE5YWJmODgxMTI5MjlkMjBmNjI2NDc4NzliMGZlNGJiYjkgbGVnYWN5LXRydW5rCisyMzM4MSAzZmIyOTNmYTE3YzU0Njg0ODlmZWFjYjNiNjI3OTBiM2EwMzdiZTk4IGxlZ2FjeS10cnVuaworMjMzODIgNjk3MjA2ZTc0NzYzOWIxOGFhOTRhNzhkZWU4MGI1MDY4NTA1NmJjYSBsZWdhY3ktdHJ1bmsKKzIzMzgzIGZkZmNmZmMyMTUyYzYwZWFiNjIzN2VlZWJhZmE1ZWUxM2ExOTk5ZmIgbGVnYWN5LXRydW5rCisyMzM4NCBlM2EyZTYwNzZiYzUyNjUwYTAyYjdhYWQxODAyYmY3MTY4NzNjNWViIGxlZ2FjeS10cnVuaworMjMzODUgNzNmYmNjOTU4Mjk1ZjM5NTY5ZTNiNTA1M2IwOTU2MTBmZTNkNDEwZiBsZWdhY3ktdHJ1bmsKKzIzMzg2IGEyNzZhZTVmZThjMzAyOWIyZDI5OGU3OTExNjcwOGY4ZjQxNmNmYmIgbGVnYWN5LXRydW5rCisyMzM4NyBiYTM3MTQxOTFhN2EyZjNlZWJkYTJiN2EwNDFhNGE0ZGMwNWNkNTY3IGxlZ2FjeS10cnVuaworMjMzODggNDQxYjJlMTU1ODI2YzE4ZWY3MjY5MDNhNDZlNmI0Y2E2M2EwYWM3OCBsZWdhY3ktdHJ1bmsKKzIzMzkwIGNlMjdkOWMwYzM1ODIzMTU0YWVlOWFkNmNhZmI3MTY3NTVlYWI3NDEgcjIyYTQtYnJhbmNoCisyMzM5MSBjMjc4MmMzNWU3MmQ3NDViMzVmYzNmMGM5YmI4OWI2NzczNmE4NjFiIHIyMmE0LWJyYW5jaAorMjMzOTIgM2FhYzkxNmMxNTA1YzdkYjc2ZjhkYjA2YTE1OTA4MzFjM2ExZTlmNyBsZWdhY3ktdHJ1bmsKKzIzMzkzIGE5N2ZiYzViMThiNmZjMTFjOTgwYzQ4ZDI3NmJjMGJiODJhMTVhM2UgbGVnYWN5LXRydW5rCisyMzM5NCBmY2MyMTZjNThjODdmYTJjNjIwMTVhYzM2MjgwMjIwN2NhZDA5NjE3IGxlZ2FjeS10cnVuaworMjMzOTUgNzI3Yjk1ZGQ4Njg4NjExNWExNWNiOTUyOWY2NTdkYTNjMWNiNDU4NyByMjJhNC1icmFuY2gKKzIzMzk2IDFjNTI5MTI4MDU0YzhjMjBjZTFhNTljZDI5MmE5OWMwOGUzYjk3ODEgbGVnYWN5LXRydW5rCisyMzM5NyA4MzI1NmJlZjBkNzVlMzEzNWU0ODcxNGE2OWQ2NjdmZTVmMDIxYWQ2IGxlZ2FjeS10cnVuaworMjMzOTggNzBlNTdmNzU5NDAyN2QyOGY4ZmNkNDRhYjE1MThlYTY2OTMzZGI1YyBsZWdhY3ktdHJ1bmsKKzIzMzk5IGVjMmQ0Zjk5YmFkYzRiNzEzY2QxZWIyMWM2YmUxMDg4YzRmMmIyNmYgcjIyYTQtYnJhbmNoCisyMzQwMCA2ODkwMDcxODc3ZGM4NjBjZGQ5NjNhNGRhNzQ1ZTFhZThmOTlhYThmIHIyMmE0LWJyYW5jaAorMjM0MDEgMjI1ZjE3ZWM4OTMyM2E4YjE3Yjg5NTBjZTk5MWM0NGI5ZWFjNWVhMCBsZWdhY3ktdHJ1bmsKKzIzNDAyIDk1NjBmODZjNGZhNGE3ZjMwZDM0OTM3YzY2MzcxYmM0N2QyNDlhYzUgcjIyYTQtYnJhbmNoCisyMzQwMyBjYTk1YmNlNWEzM2VmZmY3YjhiM2NhOGFmNTM1NjE4MmExODgyMDczIGxlZ2FjeS10cnVuaworMjM0MDQgYmRlOWRlYjU5ZDFiYzA5NTczMWViN2JkNmI3OWVjNTk3OTQxMDNjYSByMjJhNC1icmFuY2gKKzIzNDA0IDJhYzZjMzJmYzIwNmRmOTE0ZGMyZjlkNDU2ZTc5YzU5NjUzNzI4YjYgcjIyYTQtYnJhbmNoCisyMzQwNiA4OWU1ZjEwYzlmOTk0MDBmMjg3MGVkODcwYjg2YjkzYTQzZjVjYjcwIGxlZ2FjeS10cnVuaworMjM0MDcgYjk0YmM3ZWM3YmU4NTFlYmVmNGRmMzQ0NGZjMjllZjU2NzY0ZmZlMyBsZWdhY3ktdHJ1bmsKKzIzNDA4IGU3OGM4ZjRlMmI4Yzk0MzU1MzMwNGUyYmYyYjFkYmM3YTM1ZDBhMTIgbGVnYWN5LXRydW5rCisyMzQwOSBjNmZjODc4MTA1NTE0M2MwNDNlZDNmOWVjZjNkZDUwM2RhNTkzMjZmIGxlZ2FjeS10cnVuaworMjM0MTAgYjVjYzU4NmFjMjVhZWQwZDgyZjA2MDFkNWM5YTBhMjJjYjI1M2ZhNyBsZWdhY3ktdHJ1bmsKKzIzNDExIDg4ZGEzOGE1ZjBiZjVhODUyNjJmNjRmZmFmY2M3MmQwYzRhNjc0MmMgbGVnYWN5LXRydW5rCisyMzQxMiAyMDZiMjVmZWJkZTNjZWEwMDA0NDQ1ZTI2ZWJjNTVmYjA3Mzc4NWM2IGxlZ2FjeS10cnVuaworMjM0MTMgMWY0ZDk5ZTdiMWU3NTQ5OWNjMzUzYmU1YThkYzcxZjllYmFkYTM5NCBsZWdhY3ktdHJ1bmsKKzIzNDE0IDU3MDdkYTkwMDkzNjI5YmZmNmIxYmZmZmZmNTE3MzBhMzExNTM3MmQgbGVnYWN5LXRydW5rCisyMzQxNSBjOGZiMDBmNWViNWU1ZGE4ZTliNDA5ZDk1MGM0Y2U3ZmRkOGZmMGM5IGxlZ2FjeS10cnVuaworMjM0MTYgNzJhNTM0N2QyZjlhZDk5ZThkOTA0ZDA0ODg1NjNmM2NkODFhNDUzYiBsZWdhY3ktdHJ1bmsKKzIzNDE3IGM2OGVmNDdiMTcwOWRhZTY2ZGEzYWNmZGM3NTNlMjU2ZWNjYWQ5OWEgbGVnYWN5LXRydW5rCisyMzQxOCBkNWQwMDA4NjJhNjY5YTk4NDY0NjBjN2UxMjAzNzFkNTExNzkyYjExIGxlZ2FjeS10cnVuaworMjM0MTkgYmJiMzUzZDMxZTI1NDI1YzhlY2Q2YTM0YzRiMGRhYWEwYWExMjAxYiBsZWdhY3ktdHJ1bmsKKzIzNDIwIDQxNmYwYmMyMjhlOGI5NDU5NzlkODk0MTViNjg2OTdkMWExZWQ0YzggbGVnYWN5LXRydW5rCisyMzQyMSA4YmEzMjg3MTgzZTA1YmUxYWQ2MTg5YjkyOWMwMGZmYjg3NWY2ZDhkIGxlZ2FjeS10cnVuaworMjM0MjIgMmM4YTVhMTcyZjQ3YmIzNWE4NWExMGQ0NWRhODJhZDRhYWU1MjNkMiBsZWdhY3ktdHJ1bmsKKzIzNDIzIDZmZjUzMTQzNWIzNGRjNzE5ODRmYWRlMDIxNzU4ZDIyMmM3MTZkYzYgbGVnYWN5LXRydW5rCisyMzQyNCBiZWE2ODY0NDk1OTU2MzU0ODJiMDRiYmViOGZhNDY4Y2IzMjQ0NzE2IGxlZ2FjeS10cnVuaworMjM0MjUgZWRiMGI4MDVlNTQ5ODg5MGFiMDBhYTUyZjQwYWE5ZTkzZDllOWZlYSBsZWdhY3ktdHJ1bmsKKzIzNDI2IDNiMzU2Zjc3OTIyZDhkYjVkMTMzODNlNzNkMDFmNjk2MDY2Mzg4YTkgbGVnYWN5LXRydW5rCisyMzQyNyA0NzBjMWM3MmEwYTdhNWYwYjliYTA0OTBhNGJhNDQ3YzM2MzYxNGIxIGxlZ2FjeS10cnVuaworMjM0MjggNWI0ZjczMjFkOWNiZjgxYjZiZDQ1MWE2NWFhY2FlOTRlNjQyZTM4YSBsZWdhY3ktdHJ1bmsKKzIzNDI5IGRiODJjMGI0MGRmYzQwZmVlMWJlZGRiNWZkZTM2ZjYxMjZmODI4ZDkgbGVnYWN5LXRydW5rCisyMzQzMCA2NTA4YWRiZDBiYjFiYjI2NjM3NGQ3YjQ5NzIzODdjN2U1ZDI2MTI3IGxlZ2FjeS10cnVuaworMjM0MzEgMDA2Y2ZhYWMwMjlhNzY4NGJjN2JiMTg5MzQ2NDFkOWVmMjZmNTYwZiBsZWdhY3ktdHJ1bmsKKzIzNDMyIDA5MWU5ZTNjZWVhZjA3YjQyOWZiMTUxMWM0ZWVjYTUwNTEzNDRjZjMgbGVnYWN5LXRydW5rCisyMzQzMyBhYmQ2YTA4YjJjMzI3MWFmZDhmMDQ0YjIxOTI3MmQzNDIwYTc3MGZlIGxlZ2FjeS10cnVuaworMjM0MzQgNWZiMDY5MWZiNjkwMzkxZTM3YzIxN2MxOWE5YjEyNDIwMzBkMDY0ZSBsZWdhY3ktdHJ1bmsKKzIzNDM1IDgzMTA2NjMzZjkzMzM0ZjU3Mjg2NzRhN2UzOGQyYmY5MjE0MzI5YzQgbGVnYWN5LXRydW5rCisyMzQzNiBkZTNlODUxODE4YTQzMjdmYjk5Y2QwYzVmM2I3ZjkxMTcwM2Q1ZDI2IGxlZ2FjeS10cnVuaworMjM0MzcgZjEwMDc5M2NhOWFmYzcwZmMzZmI5ODBiODFiOTI4NjQxZWQ0M2M1ZiBsZWdhY3ktdHJ1bmsKKzIzNDM4IDhmNzlmYTUzN2JkMjRiMzBhMzhjMTk3NWNhNjkwNWQ2MzY2NjZmOTcgbGVnYWN5LXRydW5rCisyMzQzOSBmZWYyODlkNjZlOGUxNTgyMzEyOWE3Yzc3NWU0NTVmYmViM2YzNTI2IGxlZ2FjeS10cnVuaworMjM0NDAgNzU0YjgxNjI4NGQxMzhlZWNmNjc4N2NjYmFmODNkNzk0NjE1ZjQxZCBsZWdhY3ktdHJ1bmsKKzIzNDQxIDg3OTlkZmEwZjc2YWM0N2M1MTJhZjljMmU1ZGJmYzAyZGQ1OTZjZjIgbGVnYWN5LXRydW5rCisyMzQ0MiAwMWE1YzQzZjE4OTRjZGYxYzEzNmY5Nzc2NTc5MzMwOTdlYmRhNWQ5IGxlZ2FjeS10cnVuaworMjM0NDMgNWVjYzAyYzFlZGFjM2FjNjc5NjBkYjljMDZlZTNkZmU2MzdlNDMwMyBsZWdhY3ktdHJ1bmsKKzIzNDQ0IDc4NGUyMWJkZDlhMmY5ZGRhMzRmZTZjMzYyMTIwNjM1M2Y3YTJlN2YgbGVnYWN5LXRydW5rCisyMzQ0NSA5ZGUyOTE2OTRiMWUxYmQxY2ZjY2RlYTdiMmNlZTYwMGU4Yzg4ZTMxIGxlZ2FjeS10cnVuaworMjM0NDYgNmQ3M2I1NGQ5MjA1MjAxNGUyMzFiYTk3OWNiMzliNjUzNTUwNzM5OCBsZWdhY3ktdHJ1bmsKKzIzNDQ3IGM2YjYxODlhODM5NzYwOGM2NDI0ZGM4NDllYjBjNWRmYjljNDVlNTMgbGVnYWN5LXRydW5rCisyMzQ0OCA0YzY5MjJmMjY2ZjA3OTRmYTgwMTU1MmI5NDBmNzVkMzVmNmI0MWQ5IGxlZ2FjeS10cnVuaworMjM0NDkgOGQ3OWRiMDFiMmJhMjVkYjhlZTFiOTIzZDlhOGE0NTA3MDUwZDg5MCBsZWdhY3ktdHJ1bmsKKzIzNDUwIGM3ODE3YjYwNzRiNTgwNDRjYTY4YjdjOTNjMWIwMjI0ZmUxOTM3OWYgbGVnYWN5LXRydW5rCisyMzQ1MSA4ZTRlNDkxMDU1OTU0YmJmNjdiMDQ4YTdiNzQ1ODNkN2UzMTVmMDM3IGxlZ2FjeS10cnVuaworMjM0NTIgNmRkYTQ5OGNjY2M0ODU1YTIyZGYwMzI1MmIzMWU1ZjY1OTQ4NTk2ZCBsZWdhY3ktdHJ1bmsKKzIzNDUzIDU4YjRjZmE1NDg3MTkxYzFmYjJmODJmMGU4YmEwMTk5OTNkNmI4NDUgbGVnYWN5LXRydW5rCisyMzQ1NCA1NjQyZDM3ZjFiMTYxZDU1NTM1ODQ3YzkxMzI5NTMxMDQ5NDE3YTg4IGxlZ2FjeS10cnVuaworMjM0NTUgZTk0NmM1ZDJmZTE1MWY1YjFiMjc1MWQ4M2IwYTkwZmY5ZjNkZmRjNCBsZWdhY3ktdHJ1bmsKKzIzNDU2IDQ5YTEzZTZlOTM1ZGIyOTY2YTI1ZWQxMDM0NDE3ZTBjNjcxNDgxYWUgbGVnYWN5LXRydW5rCisyMzQ1NyBiZTU0OGQ0YmU4ODhmNDdlZWM4NjU5MGM4YmM4MjE5MjJjY2ZmZTI4IGxlZ2FjeS10cnVuaworMjM0NTggMjEwNjAzMThmNTM5YWYwOTlhYTRjNzE3NjE4Mjk4MzU1Y2Y1N2ViNiBsZWdhY3ktdHJ1bmsKKzIzNDU5IDM0MDhkOTI5YmI5NDBhZDYxMGQyYjY5NGQ2NmM3OTM5MDM1MDE1MzUgbGVnYWN5LXRydW5rCisyMzQ2MCA2ZGU0ZWU0Nzc5NDlmOGQ3ODYzNzQxZjM5NDE4NTJjMjAzMTMwNGQ2IGxlZ2FjeS10cnVuaworMjM0NjEgYjRmMGYxMGE2YzVmNGQzNzIxMjUxOGM2MmYyYWE0MjUzZDhkYWQzYSBsZWdhY3ktdHJ1bmsKKzIzNDYyIDU3OGMxYmI3MjgzOTkyNTY1OTY0YTA4YjFlNGM4OTYyZjg1NzM3OTQgbGVnYWN5LXRydW5rCisyMzQ2MyA3MmVlNTczNDdhZWE2NTMzNDFhYzZmNzVjNzNhMTJlMWI5ZTllNzhjIGxlZ2FjeS10cnVuaworMjM0NjQgZjVkNzkxYzJhY2M5NTBlZWI4ZWZlYzg1NWZmMjMxNTRiNzMyZTEwMSBsZWdhY3ktdHJ1bmsKKzIzNDY1IDdkNWFlN2Q3YzdhOTYzNmVhYzdjMmJkZDBlZTRhYzQyMmRjM2Q1MTggbGVnYWN5LXRydW5rCisyMzQ2NiBlNWMzY2E3YjUwOTkyNGI1YzQ1ODIxNzIwMTJmZTMzYmY1MWNkMTNlIGxlZ2FjeS10cnVuaworMjM0NjcgOTg3M2M5OWM0M2Y3NTM2Nzg3NDNjNGMzMzlmZjZlZDhiNjk3NDIxNCBsZWdhY3ktdHJ1bmsKKzIzNDY4IDhlNmY2MDRiMDc5OTM3YmE4NzRjMTdlNzUyZGMyZDhhMjI2ZDY5MzUgbGVnYWN5LXRydW5rCisyMzQ2OSAwMDE1MmU2ODc0NWE1MThkZmUyZTUyZjY1ODljMTM0ZjRhNzVmMTI1IGxlZ2FjeS10cnVuaworMjM0NzAgMjBiYTQyY2NiMzZmNjc2NTQ5MmI4ODY4MDJlMjQ1YWIzMzY5YjQxNyBsZWdhY3ktdHJ1bmsKKzIzNDcxIGUyZGE5YTkyOWFjYWI1NTI5MGU5ZTc2ODI1YmRjMmQ2ZmM4NmY4MzUgbGVnYWN5LXRydW5rCisyMzQ3MiBiYTVhYWE2YmMxZTU2YjViZDc2MTFmZGUwMWU5NTY4ZDgzNjdjM2ViIGxlZ2FjeS10cnVuaworMjM0NzMgZTdlZjg4MTM4OTQxOWE2ODY3NzA4OTIwMjE5YjE3YjRhZjU4ZjUwZiBsZWdhY3ktdHJ1bmsKKzIzNDc0IDY5Yjk0MWQxMzE3Njc1MzVmODkxYjEwYzlhMDNhZmJjNzdlMTJkYmYgbGVnYWN5LXRydW5rCisyMzQ3NSBiMmY5NTdmOWM2ZjQxM2JjZjM5NzlmMDIxMWNiYTdlYWU3ZDY3ODhkIGxlZ2FjeS10cnVuaworMjM0NzYgZTNkNzU3Nzg2MTllM2RjNmI3ZWY2MjlhNWY2NTk3YTczZjVlNmJmNyBsZWdhY3ktdHJ1bmsKKzIzNDc3IGQwNTM3MjZmYjAxYmRjNjRhYTU4YmE3NDMwMmQ5NmY5M2MxZDgzYzcgbGVnYWN5LXRydW5rCisyMzQ3OCA5Njk4YjcxYjAwMzE1YWI5YWI3Mzg5NWJjNGQ2NzQzNDJkYjljYjE1IGxlZ2FjeS10cnVuaworMjM0NzkgZmFjZTFlYWE2OGNhOWI1YWVlZWZlNjgyNjk1ODAxNmNkYTYwMWM0NSBsZWdhY3ktdHJ1bmsKKzIzNDgwIGE1YTMzMDY0NmMxMzJhYzJmNDNkZTUwZWFjOGFjM2EzZWYwZWViOGYgbGVnYWN5LXRydW5rCisyMzQ4MSBjMGE2ZjUzNzczZTM1M2NlOTJhMmZhODExMzQyNmE2ZjM1MGZlYjE5IGxlZ2FjeS10cnVuaworMjM0ODIgYmY1NTc0ZjRmNDFmNzZmZDY0ZTBhYjNjMWY3NGNjYjBhMTkyZjBjZCBsZWdhY3ktdHJ1bmsKKzIzNDgzIDVhY2QyYTgxZDZmYTcxNDY3N2E4N2UwMjA1NGYxMzFjMTg1ZDVjNzMgbGVnYWN5LXRydW5rCisyMzQ4NCAwYjk5MTc0ZDZiMTc4NDU4NzZiZTc4OTM1NWE3NmNmNTQyMzRjMmE3IGxlZ2FjeS10cnVuaworMjM0ODUgYWJhZjllYTJlNTYwNzI5OTUwOTYyYzdlMTczN2Q0ZGNmZWM1NWRhYiBsZWdhY3ktdHJ1bmsKKzIzNDg2IGE0ZWYwM2I1YTkyODZkOWRjOTFiNTExYjAwZDE5ZjA4NzMwZjg1NTAgbGVnYWN5LXRydW5rCisyMzQ4NyBhODFkYjEyOTVhOWUyMjc4ZWNmZWEyMGI5NzdkNWNlZGZmYmIwZDQ1IGxlZ2FjeS10cnVuaworMjM0ODggZDZlYWU2NGZkYjVhYzE4NjBmN2FmOWI1MTM4YWYwNjJiMmM3YjJjNCBsZWdhY3ktdHJ1bmsKKzIzNDg5IGFhMThjMGVjYzRmYjY3ODQ3ZWU0NTQ3MzlhYzVkOWQxYjZlOGNiYzQgbGVnYWN5LXRydW5rCisyMzQ5MCBhYjUwNDIwNThiNmYxZWZlYTQwZTY5NTJkMzdkZDY3NjVlZDkwOGI0IGxlZ2FjeS10cnVuaworMjM0OTEgOTJmODY0MzZiNmJlNjMzZGEzMGEzODg4NjBlZDRiMWY2MjI0YzAxZCBsZWdhY3ktdHJ1bmsKKzIzNDkyIDFiZWU0OWJjOGQ5YzU1ZWQ5ZTYxNzVjOTYwYmNmN2RmOWM5YmNiNjEgbGVnYWN5LXRydW5rCisyMzQ5MyA4YmFkNTVlZGZkZjM5MzgxYTY2YWZmYTdiNzg0ZTMzODU0NDNjYmYyIGxlZ2FjeS10cnVuaworMjM0OTQgNWEyZTdjNzhkNDMzNDVlYjZjODI3YzlmNmRhNzkxNjY2ZWQ4ODc2ZCBsZWdhY3ktdHJ1bmsKKzIzNDk1IDQ2NGY5YTA5YTkxMDM4YTlkY2M4NDEwOTE4MWNkMDg0MmFjNWMxYjIgbGVnYWN5LXRydW5rCisyMzQ5NiBkNDc4MjQ5NGExZTNjMjllZDMyNGVlNTQ2MjljNTQ2ZDk4YjZlYmYyIGxlZ2FjeS10cnVuaworMjM0OTcgODEzODZhNzFlY2NlODY1Yzg4MmM3ZDdhNzUwM2M3YzlhZWRjNGYwZSBsZWdhY3ktdHJ1bmsKKzIzNDk4IDdlYTYxZGE4NzhhZjEwNzNlMWU4MjU4ZDE5ODQ5NGU3NmEzOTIwMTUgbGVnYWN5LXRydW5rCisyMzQ5OSBhY2ZiMjc4NjYyYzYyYzMyMDIyNTk1MDU3ZTgyMGU5NDVmMWUzNjI2IGxlZ2FjeS10cnVuaworMjM1MDAgOWVlNmE5OGYwMzJjMzEzZThmMDg5ZmE0ZWU1NTJjZjdiOGVmMGM5YSBsZWdhY3ktdHJ1bmsKKzIzNTAxIGQxNjcxZGRlYWNlMGI2NDQxNjY0ZmNkYTA4OGU5NTFlMWMxNGM0MTIgbGVnYWN5LXRydW5rCisyMzUwMiBlN2FjYTJhMzAyY2Q3MTM0ODQ0Zjk5MWMzYWQ1NGJjMGRmYTAzYjU5IGxlZ2FjeS10cnVuaworMjM1MDMgMjc0NWMzZGMyNGFmMjljZTQzMDk2ZDA0MmI3YmVkZThkMGI4MGUxZSBsZWdhY3ktdHJ1bmsKKzIzNTA0IDVjNDI2MWU3NDQ3ODBjZjAwMzExY2E2ODIxZGVlOThlNmVkNDIzZWUgbGVnYWN5LXRydW5rCisyMzUwNSBhZmY2ZmNkMjZjMTVjNDcxMzAxYjZkYTljMTFhYWE1ZGNkOTdkMWY5IGxlZ2FjeS10cnVuaworMjM1MDYgN2NlZGJhYWExMmU0NzRmYzU2ODI3OTMwYTMwYWJiMjYzZDFkOWFjMyBsZWdhY3ktdHJ1bmsKKzIzNTA3IDBlOTQwZGE4NDViZjgzNzkwODJiMjQzNjM1NjdjNWM3ZjkzMGI5NTQgbGVnYWN5LXRydW5rCisyMzUwOCAxNjY1OGRmODQ1NmE2NjI4MWI1ZmMwZjU3MDcxMmJmNmM4YTk1ODZiIGxlZ2FjeS10cnVuaworMjM1MDkgNzE2MGQ3OTU0NzNlOTE4M2U3NGRkYzFiMjgzZjljZWVkOTE5MGI0OSBsZWdhY3ktdHJ1bmsKKzIzNTEwIGYzYjNmZDVhYmZhNjE2ZGZhM2M3MGUwMzczYzI4OGVjNzM3NWFkMjEgbGVnYWN5LXRydW5rCisyMzUxMSBhNGQzMjhkNTA4OTc1OWJjZDgxODVlZjJlNTE5ZTA3N2Q4ZjQ2ODJjIGxlZ2FjeS10cnVuaworMjM1MTIgMTBiOTdhZTY5MDI1YzY1NGE3MzVjNjNjMzY4MDBlOTk3M2M2NTQ5YiBsZWdhY3ktdHJ1bmsKKzIzNTEzIDFhY2VjYzkwOGVlODZiNGYzZDEwN2MxOWViN2RjNWY4OTQwNDZiNGYgbGVnYWN5LXRydW5rCisyMzUxNCAxZGI1YWE2NzY1YzAxYjE0NWQxYTNjNjlhYTQzMDI0YzNiZDMwZWZlIGxlZ2FjeS10cnVuaworMjM1MTUgYjBjZTkyNTYxZTA3NWJkNWFiMzczODU0MDQ3ZGFlM2JlZGIyYzNmYiBsZWdhY3ktdHJ1bmsKKzIzNTE2IGI4NWNkMTYzY2Q1Y2QwZTdkMTU2NWYxNjgwNGMzZWQ3OGE0NDZmMGMgbGVnYWN5LXRydW5rCisyMzUxNyBkOTZjZDM4YTNmZWM3Mjk0MjYwN2RhYzE0MjFjZmY4ZDkxMjUxMzJkIGxlZ2FjeS10cnVuaworMjM1MTggYzY4ZjM2NDFiYWNkODI3MjNkMzBhNTE1YTc0YjllNzZjZjU2MGE4ZiBsZWdhY3ktdHJ1bmsKKzIzNTE5IDY2OTI4NTU5MjI4ODRiNTFjODhhYmViMmUyOWE5ZGU1YjY3NDc5MGIgbGVnYWN5LXRydW5rCisyMzUyMCA2ZjAyNTY5Y2M0NmZkYTUyMTdmY2I3NzRkMzcwNDQzMzZkYmZlOTVmIGxlZ2FjeS10cnVuaworMjM1MjEgZTNmNjNhOTU0NTVmN2MwMjQ4MmY5OGJkNWZmZmNmM2ZjYmU4MDc5OCBsZWdhY3ktdHJ1bmsKKzIzNTIyIDMxODU4OTQwNGI5NTcyNzgzMGJlYjUzOTJhMDJlNzk0MWM5M2NmN2UgbGVnYWN5LXRydW5rCisyMzUyMyA2MTUyZjgyZWE4MjM4MDMwZGM1N2FjOTBlNDU3MjA3NGU0NDgyMjlhIGxlZ2FjeS10cnVuaworMjM1MjQgMWVhNWJiYmFiN2Q3NzFkY2E5ODljNjdhMjNmYjgwNjZlYWFhMzkxMSBsZWdhY3ktdHJ1bmsKKzIzNTI1IDU2ZjE3ODEwNTM0YzJkM2I1NThkOThiODIwY2I2MDNjOWM4NjUxYTEgbGVnYWN5LXRydW5rCisyMzUyNiBkZTI5YzhlNGRlOWIzMTRhODc1NjQ5ZjYxYmYzNjJiNWE5MmQxMmQ4IGxlZ2FjeS10cnVuaworMjM1MjcgODczZDU4NGMxMjIxMzkwYjk5ZjE1YzZiNDUwMzcwODQ4NWE1ZTFiYyBsZWdhY3ktdHJ1bmsKKzIzNTI4IGQwOTJhYmNmOWM0Yjc2ZWYyODJjYmRiNWJhYzc5ZWVhNDUwMDFlOTkgbGVnYWN5LXRydW5rCisyMzUyOSBlNGU3NDljNDJmNDYxN2ZlNjQwZWQxNDY5MmYxNDAwMzc2ZTZhN2YxIGxlZ2FjeS10cnVuaworMjM1MzAgMjQxZWY4YTkyM2M3NjM5YTNmMTg3YTU5ZWFlOGY5NGY4MzQ5MThiMiBsZWdhY3ktdHJ1bmsKKzIzNTMxIDU5MzRhZWViMzk3ZjBlZmU1ZTliYmRmMGIyYmQxZTcwMjJhYWQyYWEgbGVnYWN5LXRydW5rCisyMzUzMiAwNTI1MDQ3NjE1OGE2NTVhNTkwMjQ5OWEyY2Q0NTgyZmRkMmZkZTU4IGxlZ2FjeS10cnVuaworMjM1MzMgN2VhMDQwMjlkMWFlYWQ3YTI5MzIxOTNjODdiZmIyYjcyMzI2ZGNmOCBsZWdhY3ktdHJ1bmsKKzIzNTM0IGNlNGE3ZTRhZDZjNDhjOWYwMTZmNGJlYjIyNWJhOTgzMjE1YjdmZWMgbGVnYWN5LXRydW5rCisyMzUzNSA2MTJlODZhNGNkOWY2ZWMzYTUxNDAyNjFlYTQwZGNiNDBlMmUzZjEyIGxlZ2FjeS10cnVuaworMjM1MzYgZjA5MTZhNmRjZWYyNzVmZmUyY2E0OTA1NzJmZGYxNmRjYzY1NzQ5YiBsZWdhY3ktdHJ1bmsKKzIzNTM3IDIyNjljYjM3MWUwNWZjMGNiNWNmNGY1NDgwZGEzZDdhYjY4OTk3Y2EgbGVnYWN5LXRydW5rCisyMzUzOCBkN2Q5NTZiNDdkMjQyZTJiN2U2MGQ0OTVmOWJiMjMxYmMzMWFhODBiIGxlZ2FjeS10cnVuaworMjM1MzkgMTY3ZTdmOThiNTFmYjM3ZDAxNjQwNTA4NzAzNTk5N2YwYTEwZjE3NyBsZWdhY3ktdHJ1bmsKKzIzNTQwIDY2YTU2YTIwY2ZhM2Y2Y2UyMjY5NTA1NTg3Y2VkZTM1NjQ1MGZiM2QgbGVnYWN5LXRydW5rCisyMzU0MSAyOTgzYjU0MjU2YzcyMjVlNjFkZWNiYjJiZDVlNTlkZDI3NGY1ODk5IGxlZ2FjeS10cnVuaworMjM1NDIgYTI2NWQ4YmQyZjI3NzdjMWU1OTZkMzNiNmQ5OTQyNDYxOWU1NmJjOCBsZWdhY3ktdHJ1bmsKKzIzNTQzIDhiM2VhNzMzNWMxYmRjNjUzMjAzZDMxYzAyNTI0ODliODFjNDIyYWYgbGVnYWN5LXRydW5rCisyMzU0NCA5N2NmYTQ2MWQ3OTNkMzVkZTc5ZjViYTVlZDQ2MDBkNDZlZTQ2NWY4IGxlZ2FjeS10cnVuaworMjM1NDUgMzgwZDRiNGVlNjAyNDNjMjIzYWUwNWEyMDdlMWMzNmI1YTU5NGI5YSBsZWdhY3ktdHJ1bmsKKzIzNTQ2IGUzNzUxYWYwZjFkZDE3OGMyNDA1ODYyZDFlZjlhOTNjNzE2ZjhmMzUgbGVnYWN5LXRydW5rCisyMzU0NyAwNGYyOTZmNzExZGYwMjNhZmQxZjIxYzkxOTE4ZmY5MDQwN2RkNjhjIGxlZ2FjeS10cnVuaworMjM1NDggZmI1ZjEyMTE3MDM2MDM1MDk2MjVhZGMzMmZlZDU1YWZlNjA4NTkwMiBsZWdhY3ktdHJ1bmsKKzIzNTQ5IGNjYjdhYmM3MTRlZGRhN2U5NDlkODEyN2I4MmZlN2FhMDRkZDJjMzggbGVnYWN5LXRydW5rCisyMzU1MCBjODUzZDI0NmYzYzhmNzAwNDEwNjU0NzE5ZDVhMjUxYWMxZjJkOGIxIGxlZ2FjeS10cnVuaworMjM1NTEgZjQ4NzgyMjM3Zjg1MzI4ODAyN2IyODg2NjdmZTVmOGU2YjI0NDVkZSBsZWdhY3ktdHJ1bmsKKzIzNTUyIDVjY2ZlMDQ0OTJhYzliNzM0NmJmYjRmMzViYzAxZmVjZWJkOGExZWYgbGVnYWN5LXRydW5rCisyMzU1MyA2ZTdkNWFlMjgwMGZjOTQ3NDE0MGVjOGJjODE2MzJjOWJjYTliYmQ1IGxlZ2FjeS10cnVuaworMjM1NTQgYWNkODM3ODIxNmMzMWYxY2MyYjY2MDdiYjdjYWEyOGUxOGY4MDc3YSBsZWdhY3ktdHJ1bmsKKzIzNTU1IDE3OGJhMzNmNjdlNGU4ZDFlNDY3ZGVkNGI3MDM1Mzk2ZmEzNDk5MDcgbGVnYWN5LXRydW5rCisyMzU1NiBhNDNjYjZjNTkwNzBmODBlNTBjNjdiN2Q5NmZhYWE1OGQxMDc1Y2E4IGxlZ2FjeS10cnVuaworMjM1NTcgYjI4NWRlY2YwNDIxZWM2Njk5MTQwMDM0OTBmNTY0MTBjMjM0ZTJiMCBsZWdhY3ktdHJ1bmsKKzIzNTU4IDQyNmIzNzlhMTM4YjQxYjcxYWI3NmE3NWQ5ZjQxODNjZDA4Nzc1YzQgbGVnYWN5LXRydW5rCisyMzU1OSA1ZDJkMWUyZWM0NzNiMTAyNTBiMTg5NDUwNGM5NWRiMzE5YjBmMTZhIGxlZ2FjeS10cnVuaworMjM1NjAgNmNjMGI0ODA0OWVjNGI1OWViZDc1ZWVmNmM1YmQ2NDY3YTU0Yjk5MyBsZWdhY3ktdHJ1bmsKKzIzNTYxIDc5MzkyYWIyYzAyYTllMmRkOWJmOTMxZmNhMjE2MTBmNjU5YWZkYzQgbGVnYWN5LXRydW5rCisyMzU2MiA2MjExNjg0ZWQ5ZGRmMDc3MzYwMTI2YWM5NTQzZWNkNzgyNDk2NGI4IGxlZ2FjeS10cnVuaworMjM1NjMgNDJiNTI3OTM3NDBjMGRmMTcwNWExZmMyOWRiMzc4MjEyNDc5MTVjYiBsZWdhY3ktdHJ1bmsKKzIzNTY0IDg3NGJiMTcwNzRiMGQ0ZGY4ZjMwY2E2OWFlMjU3MDI1N2Y3NWVhMWYgbGVnYWN5LXRydW5rCisyMzU2NSAzYjNlZTk3NjMzYzExZGIwNDllN2EyZmY5YWRhMTcyNGZmMDU0NGYyIGxlZ2FjeS10cnVuaworMjM1NjYgYzUzNDVjMGFiZDcwNjE5MzA2NDA1OWE3NmQyN2RmOGI2MzJjNGM1YyBsZWdhY3ktdHJ1bmsKKzIzNTY3IGZhZWM2OWMxMTY0MDM2MWExYWU4YzE5Zjc5OGU1NDZlZDgwZWI0MDMgbGVnYWN5LXRydW5rCisyMzU2OCBlNDRjZGVmNzkxZWU4NDA1NWE4MmU1YjFjY2RiM2RkN2MwYmM4ZjQ1IGxlZ2FjeS10cnVuaworMjM1NjkgMDgyOTVlYzU4ZWE5N2RkZTE2NWJkZTliZGRlOTNiNWFlODllMmI3ZCBsZWdhY3ktdHJ1bmsKKzIzNTcwIDFjYTIyOGUyMWE5ODdhNzIyZjE0NDZjODJlYzc5Y2ZhNmE0YTQ1NWQgbGVnYWN5LXRydW5rCisyMzU3MSBhYTY4MTM0NWJmYWIxMzM3M2QyYWYyOWE1YWI0MTU1ODY0M2IzNzgzIGxlZ2FjeS10cnVuaworMjM1NzIgY2EyYmM1Y2RhYThlOWVkMjFkNDYyZTMzZGNiOGVmNWViMWFhODk5ZCBsZWdhY3ktdHJ1bmsKKzIzNTczIDMyNmU1YTcyYzY2MDI4ZTJiYTdkMGIyNjJjNTk0YjY0NTJhOTI0YTAgbGVnYWN5LXRydW5rCisyMzU3NCBiNDQ0N2JiNWFhMGVhZGVjOTU2YTk1Yjc5MDNkNmEzZjA3ZTY5ZTQ1IGxlZ2FjeS10cnVuaworMjM1NzUgMTIzNTNiMTMxMjI0YzZhY2M4NTk5NjY5Y2M0ZTJlOGI3MmIwNzg3OCBsZWdhY3ktdHJ1bmsKKzIzNTc2IDMzOTNkNmY4MDdmNWQ3YjViYTMxZWExZDljZTI5YjlmNmExZTQ2MmUgbGVnYWN5LXRydW5rCisyMzU3NyBlYTE5MTBkMmM3ODFkZDBhOWRkYjgwYjQzMGZiYTI3MzllZWQzZjVlIGxlZ2FjeS10cnVuaworMjM1NzggMjg0ZWFiZTNiNTUyY2RhM2ZjZGQwNjhhNTY2OGYyODE2MGU5ODhmMSBsZWdhY3ktdHJ1bmsKKzIzNTc5IDdiNDFmN2EyZTUyODU0ZjI5YmNjYTA3OGQ4MjYzYzI4ZmYxNTBiOTYgbGVnYWN5LXRydW5rCisyMzU4MCAyZTA3M2JjNzI2ODY5NTFhMmFhOTM2MDllNmQ1ODYyMzM2MGRhYzZjIGxlZ2FjeS10cnVuaworMjM1ODEgNGVmN2ViOTBiNjlhYzc0ZGM3ZjQ2MDE5MTFlZWZkNjhiMTQ4NTZlMiBsZWdhY3ktdHJ1bmsKKzIzNTgyIGY5YTY2YjI0YmZmZmJhMmUyZjYwOTY5NDA4YTQwZTUyNjQ2NTAxN2EgbGVnYWN5LXRydW5rCisyMzU4MyAxMjUzNTUzZmMzY2M4ZWMyYjMxOTBmNGY0MzgzZGUyNzg3YzMyZTMwIGxlZ2FjeS10cnVuaworMjM1ODQgZjI5YjhlYTBiNjk1NDQ5Y2I4YjJjNDkwNmI4NTAyNTgzYmEzMjJhZiBsZWdhY3ktdHJ1bmsKKzIzNTg1IDI2N2M2ZmUwYWJjMmVlYjhiN2RiMTI4ZGZlMzU4YzRkYzA2NmM4MzcgbGVnYWN5LXRydW5rCisyMzU4NiA1YTk4ODAxNTZkNzEyNTM3ZTU0YWY2NGZjYmJiMWFjOTZlMmJhM2ZlIGxlZ2FjeS10cnVuaworMjM1ODcgYmRhMjc0ZGRlMjdlMTAyNjRiMTBlNTM4ZTIwMmE1YWQxNWZjMTYwMSBsZWdhY3ktdHJ1bmsKKzIzNTg4IDQyOWEwOGUyZmM3ODJjM2M2YjZjZTg5MDJkMTlhZjVmOGYyN2M0ODQgbGVnYWN5LXRydW5rCisyMzU4OSA4NTg1NTM1ZTQwNGJjYWI5ZGI0ZDE0ODM1ZDE5ODQ0MDM3OWNiYmU2IGxlZ2FjeS10cnVuaworMjM1OTAgYjMyZDY2YTRiNWU2YWQ0MmI4YjU2Y2NmYTdlZDZiNzkyZmNhOTNiNyBsZWdhY3ktdHJ1bmsKKzIzNTkxIDU0ZjA1YjliMWZjNGJiYmE5MmY2Y2ZlOTUwYzdlODc4MjdmMGQ2ODcgbGVnYWN5LXRydW5rCisyMzU5MiAyNmI1ZjhiOTQ4NzJiN2FmZjcyYWQ3NDcxYTE1YTlmZDA3N2UyZDY4IGxlZ2FjeS10cnVuaworMjM1OTMgYTk3NjM2NzViNzRjN2E1ZmJkMmI1NDQ3ZjA1MzVkMmExNDE1MDNlNyBsZWdhY3ktdHJ1bmsKKzIzNTk0IDc5ZmJjZmZmNTc5NzBiZTE2YTljM2JjMDhiYzRjYWJlMTgwNTVhMjcgbGVnYWN5LXRydW5rCisyMzU5NSBjNTI0N2EzNjZmZjU3YmVkODg4ZGQ0OTRkMmRjZWQ4N2IyOGU2MzU5IGxlZ2FjeS10cnVuaworMjM1OTYgMDRmZWU3MGZlZDhmZWFiOTRjMjM5ZDVhNGYzN2ZlMDIzOWZiYmJiNSBsZWdhY3ktdHJ1bmsKKzIzNTk3IDg2ODk2YjVmMWViYzJmODFiMjEzOGFiNGIwZmFmOTc0N2NjN2QwZmIgbGVnYWN5LXRydW5rCisyMzU5OCBjNzBhMmI1N2E0ZGQyNTFlYWMyNDVmMWE1YTY4OTYzMjcxMDdlMDhlIGxlZ2FjeS10cnVuaworMjM1OTkgODM4MzdhYzViYjQwZjRkNWE1MTQwODc4NzY1MTNlNGU3M2VjNWI2OSBsZWdhY3ktdHJ1bmsKKzIzNjAwIDFiM2ZmZGYxMjE1MDliZjY0NDE0MWRmYjkwMWQ0NzhlZGRhYmIxNWIgbGVnYWN5LXRydW5rCisyMzYwMSA0YmYzZmNlM2Y2Y2VkZjVlYmZlNzkzMjJhNmI2ZjJlNmFjNDFiYjIxIGxlZ2FjeS10cnVuaworMjM2MDIgNzA5NmU0NGNkMWJkMjllZTEwZjljNWVlOGE2YmZiOTNjNmRjZThjZiBsZWdhY3ktdHJ1bmsKKzIzNjAzIDg1MjI2ZGY5YTViZTkxZTE3OGE4M2M4YjQxYmNiYjI2MTUxMDc2ODQgbGVnYWN5LXRydW5rCisyMzYwNCA1M2E5NTcyYjYyMzc3N2UwMWE3OWJmZjYwN2Q4Yzc1MWQxZWY2ZmI5IGxlZ2FjeS10cnVuaworMjM2MDUgMTRlMGZlMTUyNzExZmEyNDY3ZGQ5MGYwNzM3ZjAwNDFhZjk1YzgzMCBsZWdhY3ktdHJ1bmsKKzIzNjA2IDQ0YmVkMjU0ZDgzNzNjZWNmY2ZiYzBkODk5NzQ3M2RhODM1Y2FiYTAgbGVnYWN5LXRydW5rCisyMzYwNyA3YmQxMjI3MGRjM2U3N2NkYzlmNGY4YjIzYjIyNWU0MjZkMjA1MzI3IGxlZ2FjeS10cnVuaworMjM2MDggMzZkMTQ4MjE0ZDhlMjdkZmY0MjU4OTM2MTYzZDQyYjExYTFjNWUwZCBsZWdhY3ktdHJ1bmsKKzIzNjA5IDY3YTdhOTlmMmQ1YWMzOGM2MzZkYmMwMzJiZDQxNWQ3OTc5MTQ0ODUgbGVnYWN5LXRydW5rCisyMzYxMCAzMmUxMmY4ZDc1ZDgzMjZiMzQ2NzQ5MDQ5NmQyODljNjE4YTIwY2U5IGxlZ2FjeS10cnVuaworMjM2MTEgYjc5ZmZkM2ZjYTI4YzhmZjVhOWRhOGJlZWRlNGU0ZTM3Yjg3MTVhZCBsZWdhY3ktdHJ1bmsKKzIzNjEyIDQyNWM2YzU1OGZhYzFhYTk5YzQ1OTU0OGIwNGNkNTlkM2UwZmNiZjUgbGVnYWN5LXRydW5rCisyMzYxMyAzM2RhYzYxODFiZTU3YzhlOTI4ZjAxM2IxZWE4NWY1MTBkYjBiMjIzIGxlZ2FjeS10cnVuaworMjM2MTQgMGE5MTViMjJlMDA2YWExY2JiMDBlZWZlYzkxZDQxNDEyZGFhNjFmMyBsZWdhY3ktdHJ1bmsKKzIzNjE1IDY2ZTc3NTg1YjRiZDk1OTQzNzUyMzkwZTliOTVlNTBkNjY2M2QyMTUgbGVnYWN5LXRydW5rCisyMzYxNiA5ZTdhMGFmNGMwYTNiNmE3MWM0Nzc0ZDhiNTYyOWUzYTNiNjE5YTlhIGxlZ2FjeS10cnVuaworMjM2MTcgZDFjN2IzZWRlNDgxNTkyNjIwMjRkNmRmMmY4YjA1NWYyMGZkNTc5ZCBsZWdhY3ktdHJ1bmsKKzIzNjE4IGZkYzE5MTQ0MDZlMjZlMjcyZmZiNDY5ZDhjMjM1NmM1OWQyNmY3NzggbGVnYWN5LXRydW5rCisyMzYxOSA0ZGJiNTA1ODFkOTAzYTQ0MjhiNDE1OGNlNzgxOTJhZWRmNjA5ZWQyIGxlZ2FjeS10cnVuaworMjM2MjAgYzBkNjYyOTY2MjcyNzQ2NDdjOWNlYjIxZjUxYzcyZGYzZTQ5YWNmNSBsZWdhY3ktdHJ1bmsKKzIzNjIxIDkyZDU2YWU2M2VkM2Y3ZDBkYzUzMGZiYTQwNmFmYzVjZTQ0MmNmOTAgbGVnYWN5LXRydW5rCisyMzYyMiA5OGY1OTdhMTdjOTA3Zjk2MmQ4MzJiY2ExMDI0ZTVkZTQwMDYwOWM1IGxlZ2FjeS10cnVuaworMjM2MjMgZTE5MWNlZWU2NzJmZmUxNTVmNWM0ODkxODYyZDZkNzZlY2IwZTgyNyBsZWdhY3ktdHJ1bmsKKzIzNjI0IDhhMDljODU1Zjk1NzMwNDEwNWRiOGI2MTJkYTZjMDJjNDFhNWExMDIgbGVnYWN5LXRydW5rCisyMzYyNSBjNDA4MzMzZDM3ZjA2MTU1NjAyZWI1NzMwMjUyMTViMzEyZmEzYmIxIGxlZ2FjeS10cnVuaworMjM2MjYgYjk5N2FjNzBlNDQ1ZWRiYTNmYjUxNzYzZmQzMTJmODQ5MTBjY2E1MSBsZWdhY3ktdHJ1bmsKKzIzNjI3IDZiMWQ4Y2I5OTA0YWMwMWQ0MTI2ZjJkMjBmODg0YWUxM2MyOWQwM2IgbGVnYWN5LXRydW5rCisyMzYyOCBiMGQ4MzA2YzA5YzUxYjBiNjlkY2E4NmMzNjBkNjQ1MDU4MGJlNzJkIGxlZ2FjeS10cnVuaworMjM2MjkgZTQ2ZjY5ZjU3OThiNjg4YzFiMDJjYmM4MDk2ZWVlYjRkZTY0YjM2ZSBsZWdhY3ktdHJ1bmsKKzIzNjMwIDdiY2FjYTY1MzM4ODI0ZDY0NjI3MzJkYmZiYzg4ODFjMDNiYmEyOTUgbGVnYWN5LXRydW5rCisyMzYzMSAzMDBiMWQ4YmZhNGRlMWQzNTEzMWRlYTg2NWI2OTc4MjlmNmM4YTk1IGxlZ2FjeS10cnVuaworMjM2MzIgOWU3MmJjZWI1NDBiNTQ3NDBmNGRlYTE0NGRiMmFkOWI5OTQ1NjQxYiBsZWdhY3ktdHJ1bmsKKzIzNjMzIDg4MzBiZTMyMDlhMmFkMWJmZDNhNDE2NzAxNTY2YjlhZTJmYjI1N2EgbGVnYWN5LXRydW5rCisyMzYzNCBhYmZkMTcwMDFlOGY1ZWZlMWE3MzljYmYzZjI2M2E3ZWEwOGQ4ZjZiIGxlZ2FjeS10cnVuaworMjM2MzUgOGVmM2U5NTE4MmMzNmRjMTNkNWI1MmZjMTVkNTRmODA1NGQ4OTRiYiBsZWdhY3ktdHJ1bmsKKzIzNjM2IGRiZWM4NjNkMzNkN2VhMzUwMTVjNDBlMDVmZWY5ZTk0ODkxY2JiY2QgbGVnYWN5LXRydW5rCisyMzYzNyA0YmNjMjMxYzFhNDFhNGUyOTNkM2U2ZTIyYjRkNDY5YjRjMWU4MmViIGxlZ2FjeS10cnVuaworMjM2MzggOTQ5ODM5NDJjOTRiOWI3ZWFiZTMxZTkyOWE3YmNjYjhjOGI3OGE1MiBsZWdhY3ktdHJ1bmsKKzIzNjM5IDNhYjNiNTM1ZGFmMjQ5NWY2ZWEwOWQyZGNjNmZjYzkwNzkwNTJjOTEgbGVnYWN5LXRydW5rCisyMzY0MCAwNjFkYTIyZjQyMDM5Y2NhZGFiZDFkMzRlYzU3ZTdkN2FkNjNmYWFhIGxlZ2FjeS10cnVuaworMjM2NDEgOWMyZDQ0NDY3NGQwOTAxZjU5NGY1ZTI4MzZjZjRjODU4ODlkYThmNyBsZWdhY3ktdHJ1bmsKKzIzNjQyIDJmODliMzQ0ZmRiM2RkNWM4NGMyN2RjNTlmYjhhYmY2NWM2ZjE3ZGYgbGVnYWN5LXRydW5rCisyMzY0MyBhZmY4ZDE0YjI4YWRhM2Q3OWVmMGI2NWE1MmFmODk1ZTNhNDI1ODg3IGxlZ2FjeS10cnVuaworMjM2NDQgM2FkYzNhMTRjZGU0MTI3YWMxZjRhZTRkZjliNDBkN2RiZmEyNzYxOCBsZWdhY3ktdHJ1bmsKKzIzNjQ1IGI0ZjgyOTk0MWYzZGY0MTFlMTE0M2ExMWNkYzdkZDE4MDgyZTY3MDUgbGVnYWN5LXRydW5rCisyMzY0NiBiZTA4NzM0YjBhZmQyMTAxNjkyYWQ4OWEyMjQ1ZDkxMTZhODZjNTk3IGxlZ2FjeS10cnVuaworMjM2NDcgM2I0NWMwNGE0ODMzYmU5MGNlN2M0ZDU0YjhjODMwYzg3MjBlZTYxNSBsZWdhY3ktdHJ1bmsKKzIzNjQ4IDJiYTQwMThkZTJlMzEwNjQ4MDliNWM2ZDUzZTI0YjlmNzc0NDU3N2UgbGVnYWN5LXRydW5rCisyMzY0OSBiZTU4ZWVlNjlhOTQ5NDQzYjBhOWVlZjg4OTQ2OGZiYjUyMDJiNDlkIGxlZ2FjeS10cnVuaworMjM2NTAgM2MwMWMzNGQwN2Y2OGVjMTZjYTRjOTUyYzcyYTg4N2E4ZDVhZDViNyBsZWdhY3ktdHJ1bmsKKzIzNjUxIGY5MDhiMDYzZjI4Yjc5NzVlNWVmODg1YmQ2ZTk2MmM3MmQ4MWRjOGYgbGVnYWN5LXRydW5rCisyMzY1MiBiZThjYmE1YTNiN2JlODc5OTMwY2RhM2RlMzc2MmNhMDBkOTZmY2JiIGxlZ2FjeS10cnVuaworMjM2NTMgYjQ3MTY4MTc4ZDg3OWNiZTMyOTM4MGQ3ZDcwYjcxNzI3NGRmOTdhOCBsZWdhY3ktdHJ1bmsKKzIzNjU0IDk0NmJlYmQwMDEzMmMzYmJkNDAzNzgyMGJjYWJhMDBkZTdhMjEyOGYgbGVnYWN5LXRydW5rCisyMzY1NSA3NzNhMTMwYjMzMGViZWFjZWM5M2IxNDQ3MDRmYWNmNjJjNjM4OTk3IGxlZ2FjeS10cnVuaworMjM2NTYgODUzYzI2OGJmMjQ3OTVlN2EyNWJlYWNiNzQzYWEzMTU0NmMxMDhiMyBsZWdhY3ktdHJ1bmsKKzIzNjU3IGMyN2NmOTEzYjFkNjkxMDMwZDdlMmQzM2U3MTQwMmZkODhkMjIzMjMgbGVnYWN5LXRydW5rCisyMzY1OCBhZDFmMDgxMjgwYWEwMDlmNWUzMmZhYzUzOWU4OTFkODdiODhlZmQyIGxlZ2FjeS10cnVuaworMjM2NTkgMjA1MDg3N2MwYzM2M2FjMTgxMWFiNWNhMzEwNTUxN2Y2MTQwNWYzNiBsZWdhY3ktdHJ1bmsKKzIzNjYwIDcyOTQ5MzJkNzRlY2FlZjVjNTNjOTU2ZDU4YTQ2YzJhZWU2ZmE0ODEgbGVnYWN5LXRydW5rCisyMzY2MSA5ZmU5NzU0OGQ5NTIxZmQ4ZWE4NDk3YjI4YmJmNGM2OTQ3MzdiYTM4IGxlZ2FjeS10cnVuaworMjM2NjIgYzlhMjEyMzI5ZGE2ZjBjYTFiYzdlMWYzOGFhMmVlNjg2NGZhYWVlMCBsZWdhY3ktdHJ1bmsKKzIzNjYzIDY1ZjYwZDNmY2RkNzdlMDJlNzMwMjVhNDRmZjIyMGM3YzIzMDA0NTIgbGVnYWN5LXRydW5rCisyMzY2NCA2NTc5MDU2MjAzM2MxM2NiYzgyYjBmZDRjMThlZTdhYzI3YTc4YzQ2IGxlZ2FjeS10cnVuaworMjM2NjUgYjc0NjEwYzkyZDhiODI2ZDBiM2JkZWJlYjI3ZWMyMTBmMjQxMzM2MCBsZWdhY3ktdHJ1bmsKKzIzNjY2IGY1N2YxN2NiNDEwODY1NDJiY2FiMGEyMjA4YzhmOTIwM2EzZGNkNjYgbGVnYWN5LXRydW5rCisyMzY2NyBlZDJlZWFiODAyZDJjNDliZDE1NDk0MDI3MzhmMDVmZDk2NzE3ZjAyIGxlZ2FjeS10cnVuaworMjM2NjggOWFlNzhlZjg1OGUyY2E5YmJlYTZmYjAyYjA5YjYzMmUxZjFiYzY3NCBsZWdhY3ktdHJ1bmsKKzIzNjY5IGI2YTVmZWNiZWMzY2JlYTZmOGNjY2MwYzA5NjI4ZmJmMTg1ZDZhMzkgbGVnYWN5LXRydW5rCisyMzY3MCBjM2E5MzdjZjYwYTVmNWNkYTdkNjViYjMxNTE0MWFhYmFiMjM5ODQxIGxlZ2FjeS10cnVuaworMjM2NzEgNmIxMDQwODNmNWYzM2E5MGI4ZTdjZjE3YjZhODEwMmU1NTQ5MDUzYyBsZWdhY3ktdHJ1bmsKKzIzNjcyIDQ2OWE4ZTFmN2VkZjUxMzdmMGMzMjIxNGNiODI0ODM3MGMyN2FlYzUgbGVnYWN5LXRydW5rCisyMzY3MyBiOTgxODVjODgyZTRlNzZmYTE5MjlhOGMxYTU4NWRkZjRhOWJmNjkwIGxlZ2FjeS10cnVuaworMjM2NzQgMmE0YmI3ZDE5YjYwM2ZlODU2ZDQ4NWZmYzNjNTU0MzQ1ODYwNjRkNiBsZWdhY3ktdHJ1bmsKKzIzNjc1IDRkYWI2MWY0ODQ1ODE3MjFmYjA5ZGNiZTYyNzc5N2I2ZDVmZGM5ZmQgbGVnYWN5LXRydW5rCisyMzY3NiA2OThiZjdjMjJiZmViYTYyY2VlY2U3OWM0YWU5ODc4NDhhNTI4ODVkIGxlZ2FjeS10cnVuaworMjM2NzcgMWNhNjI3YzRjMTA1ZjIxZmJkMmMyN2U5NTVkMzk3ODgzNWNmNWIxOCBsZWdhY3ktdHJ1bmsKKzIzNjc4IGU0ZDBiMWY5NGVjYThkNmIyMzI0NTcyNTQ2M2RiOGVjMzFhYzdiYTYgbGVnYWN5LXRydW5rCisyMzY3OSA2MjFjNzcwM2U4Yjc1MjhlOWRmOWJhMzczOGJlYmFjYWE2ODY2M2JiIGxlZ2FjeS10cnVuaworMjM2ODAgNTkwMGE5ZDgwODQ4MDkyNjljNTViYmJiYzg5NGQwYmUxNTU5NWI3ZiBsZWdhY3ktdHJ1bmsKKzIzNjgxIGMxNjhlZGE3MzZlNDRhN2M4YjRjZGFlMzRiMjE2YzcxMTQxODZiODUgbGVnYWN5LXRydW5rCisyMzY4MiA5MDMyMjE4NTJjM2E1OWMzMTcwNzM2ZWEyNDNhZTJhMTM4ZGU2MDNhIGxlZ2FjeS10cnVuaworMjM2ODMgNGYzZDEyNDA4MzBlNmY1MzAzOGE4MDJlZGRhMDQwODA0ZDViNWExZiBsZWdhY3ktdHJ1bmsKKzIzNjg0IDNhMTgxMzNmOTkwNjQzNTA0YjQ4ZTAwMDRiYzU5MTg0ZDJiMmYyMzQgbGVnYWN5LXRydW5rCisyMzY4NSBlZTg5NTY3YmNhYjQ0NTBhNTFhZGU4ODQxMWE3OGE1MjgxMTJjOGE0IGxlZ2FjeS10cnVuaworMjM2ODYgZjYxODYwN2U4Zjk4NDIwZDY4ODhjNGU0Nzc3MmJlODIyOGE5YTgwMCBsZWdhY3ktdHJ1bmsKKzIzNjg3IDQ2OThhM2VjNWZhOGNmYWQ5YjRkNzk1MTM5ZTRkYWRiYjY0NmY1OTYgbGVnYWN5LXRydW5rCisyMzY4OCA2ZGEwMzcxOGMxMzMwYzNjMjIxMTg3ODczYWE5Yzk3ODgxOWUyYTBiIGxlZ2FjeS10cnVuaworMjM2ODkgN2QxZjQ5MGI2Y2IxNzI4MjRmOWRkZWIwNzNlYTRkZjUxNTI0OWYwOCBsZWdhY3ktdHJ1bmsKKzIzNjkwIDUxOGUzMGY5MGQxZjdkODg0NGUyNzE4OGRhYTU5Y2NhNTZjNDY4MmYgbGVnYWN5LXRydW5rCisyMzY5MSA0NzEyYmI2MmNjMjVkMDViMmQwYzc2YTkzY2IzYmY1OGFlZTg4OTFhIGxlZ2FjeS10cnVuaworMjM2OTIgNjMyYjlkM2E4ZDFhN2IyOTA2ZjdjODJiMTc0MWZjZDZiMTk2NDJhYSBsZWdhY3ktdHJ1bmsKKzIzNjkzIGIwMjk4NmU5YTZiZTQ3MjI2NjQyYjdlNWVkNjU3ZGUxOGJhZDhlNTQgbGVnYWN5LXRydW5rCisyMzY5NCA1ZDVhZDk1MWE2ZDZlMTcwZDRmMzNiNjQyOWE2OGVjY2E4YmE5MDk2IGxlZ2FjeS10cnVuaworMjM2OTUgY2VlMGZlNWZjZTExNWRhNTk1OThhODRmYTllOGMyN2IzY2UwNWYzYyBsZWdhY3ktdHJ1bmsKKzIzNjk2IDU2MTQxYjg2YTdmMmM5NWExMmY2NmRlZWE0OTgyZjc0YTUzNTljYjMgbGVnYWN5LXRydW5rCisyMzY5NyA3ZjUxYTRiN2RlYjQ0MGVlMmZkNWQ2YzQ3M2M0Y2YxMDFkMTYzZDVhIGxlZ2FjeS10cnVuaworMjM2OTggYmEyODUwNDA4ZjBhMjYwZDU4ZDk0MzZjYTI0MzRhNGVmNGJkNDdkMiBsZWdhY3ktdHJ1bmsKKzIzNjk5IDUwMDBiNWQ0YzMyNjVmNTQxMGU3NzhiMzNhZDdjMmUyNTM4N2JkNGEgbGVnYWN5LXRydW5rCisyMzcwMCAyMDExOGY0MTI5ZGVmZGZlMzE5ZmUwODc5NzgxMDc3ZmRjZDUwYmI1IGxlZ2FjeS10cnVuaworMjM3MDEgMzU4Mzk3YjkwNzBmNmE3ZWU5NWZlMzkzNDA5N2EwZmRmMWI5NzljNCBsZWdhY3ktdHJ1bmsKKzIzNzAyIDA4ZDdhNjc1NmJmZWQ5MmE4ODhhODBiM2FmNGVjOTdjNDU2Njc5MWEgbGVnYWN5LXRydW5rCisyMzcwMyA4NTU3MWQ1ZjY1NDViNjdiYTZlYmY4MDg3YWY3YTY0MGVhZjgwZTFkIGxlZ2FjeS10cnVuaworMjM3MDQgOWJlMmNjNmI5OTU5ZDgzMWM1MWFiMDZlMDRiMDEzNGM2OTlmMjI0NiBsZWdhY3ktdHJ1bmsKKzIzNzA1IDU2MjgzNGVkOGJhYmRmN2FlMzFjYjZiOTMxODE4OWY0ZjkxNDQxYWQgbGVnYWN5LXRydW5rCisyMzcwNiA0NjdhYzQ1M2NjYzMyYzdlYjYzZDJiOWRlZGE1ZjI4NDdhY2JmN2IyIGxlZ2FjeS10cnVuaworMjM3MDcgMDM2MjRkNzQ4NGZhMDYwMGUwYzQ4ZmRlY2E3NGExODQyMTdlNzVlOSBsZWdhY3ktdHJ1bmsKKzIzNzA4IGJjOTA1YTExYzE0OGE0OGJjYjVmZDQwYjEzMzVhNTJkOWQ2NDlmMzAgbGVnYWN5LXRydW5rCisyMzcwOSAyN2FiMDMyN2IyZmMzYTllN2E3YmQwM2E4ZTg2M2MzMzQ1ZmY0OTEyIGxlZ2FjeS10cnVuaworMjM3MTAgODU1MjQ1YmI0ZDQyNzZjZWY3OGEyY2NlZGQ5ZWY2ZTYzYjU0NjY2NyBsZWdhY3ktdHJ1bmsKKzIzNzExIDM1M2EzZTlmODUxNmMxNTk5Yjc4ZmRhYTNlMzY4MzQ4Y2U1MGNhNWIgbGVnYWN5LXRydW5rCisyMzcxMiBiMWE4NjE2ZjEzZTRjZDcyNmJlNTU4MDM5OGY3NDRlMDRhZTlkMzhlIGxlZ2FjeS10cnVuaworMjM3MTMgNjllNjVlNzM5MWI4MTdiYzA0ODQ2YjdlOGExYmY3MDk4NWY0MDI3MCBsZWdhY3ktdHJ1bmsKKzIzNzE0IGI3MjU2OGEyYzE3Y2VjMjMwODkxMTRjYTFkMjU0ZDNkYWQ0NWU2YmYgbGVnYWN5LXRydW5rCisyMzcxNSA5OWIyYmQyNWJiMTJkNDdhMDFmYzE0MzE0NDU5NTU1YWU2MTZlZjI0IGxlZ2FjeS10cnVuaworMjM3MTYgNDFiZWQxZjZkMjZjZWIzYTc1N2IzZWEyMTMzOThjMmY4MTU2ZjJiYiBsZWdhY3ktdHJ1bmsKKzIzNzE3IDY0ZjRhYzYwNmFlNTMxM2Q0MjVlZDhhM2MwMDg2Y2ZhY2IxMmFjYzQgbGVnYWN5LXRydW5rCisyMzcxOCA1OThjMDJhYjA2MmQ0M2ZmY2M2NmYxZGU5NGI0N2MwYzE2M2I1YmQ0IGxlZ2FjeS10cnVuaworMjM3MTkgZWM5NTk2Njg3MjkyOTYzZTM2ZTRiYWQ0Yjc5ZDE4ODQyODVmNzVlNiBsZWdhY3ktdHJ1bmsKKzIzNzIwIGJmZjZjMmQ3NmYzMzZjNTJkNmRlYjQ4YzY3OTE0MzNlYTdhMDNmYmEgbGVnYWN5LXRydW5rCisyMzcyMSA0ZjcxZGNmZDBhOTM3MGVmN2JlNDI2YjQzOTg3Mjc2ODE4MjdjNzJlIGxlZ2FjeS10cnVuaworMjM3MjIgYTk2MjM1YjJjYTYyNWIzMGE2ODY0NmE2Mzg0ZWFlYWMzYzY4ZDk3ZiBsZWdhY3ktdHJ1bmsKKzIzNzIzIGM2OGQxODU1ZGFhOWVhMjQ4NTFhYWJjMWYzMDljODc1Yjk3OTQ4N2IgbGVnYWN5LXRydW5rCisyMzcyNCBmZmJmOTRmZDljZWY4ZTJmNmU4NTMxZGFjZTAzZTMxZWUyYWIwMDYzIGxlZ2FjeS10cnVuaworMjM3MjUgN2U3MWVlYmFiNGVhMzllOTlkNjI2ZDcyY2JiMzk1YWE1ZTk3NmE1YSBsZWdhY3ktdHJ1bmsKKzIzNzI2IDJmMGM1YWY0ZDVlYTA3ZmI1NmEwNWI2ZTZkMTViYTRiZGIxZGQ0ZTQgbGVnYWN5LXRydW5rCisyMzcyNyBjZTEyYmIxMDk3YTQxNjc1MzRlNDNjNDY0ZjdmMWU3NjUxYzUzZmNlIGxlZ2FjeS10cnVuaworMjM3MjggOThkZjAxMTVlY2Y5MDEyYzQ2Y2VjOTk5YWE5NmMzN2MxZDY1MzI1YiBsZWdhY3ktdHJ1bmsKKzIzNzI5IGM3MjkxNWQ4YWFjNzI4OWY4NmNkYzhiMzI0MDE0YTRmYTZlNWY0M2EgbGVnYWN5LXRydW5rCisyMzczMCA2MGUxMmY4M2QyZDIyNWUzYjFhODkyZWYwNGYxYjk2YTg2NDZkM2ViIGxlZ2FjeS10cnVuaworMjM3MzEgNWI1YzE1YTA5NWNjN2FiYjUxNWY0ODcxNTRlNDQ0YjllOTYyMzIxMCBsZWdhY3ktdHJ1bmsKKzIzNzMyIGViZmQ4N2U4Nzg4NGUwNmY4MDJlMTBkYWFiMmU5MzE4OWVjZGJmNzMgbGVnYWN5LXRydW5rCisyMzczMyBjNDZlOTRmZDY5ODZiNmUwZWE2NmY3OGMwNDQzNTFlMTM4MzdmYmU0IGxlZ2FjeS10cnVuaworMjM3MzQgODk2NGVmODRjOTJmNGQyMTc4YmIzOGZlNDFkMWY5ZmEzNGM1OGU0YiBsZWdhY3ktdHJ1bmsKKzIzNzM1IGJiZGMwYWJmYmIxMzk3ZmY1MWJhOTczNDc3MmJjY2U1ZWYyZDk5YWUgbGVnYWN5LXRydW5rCisyMzczNiBkYzcyMDRkZDI2ODZlYTNlY2ZiOTI4YWQ4ZWYwNjk1NDNkMjUyMDg5IGxlZ2FjeS10cnVuaworMjM3MzcgOGQ1YzAwMGUwZTViNDQzODhmNTMzMzkyYmUyNjA5N2NhMzg1ZjNhZiBsZWdhY3ktdHJ1bmsKKzIzNzM4IGE1YTMwYmEyODk5ZjU3ZTlkZWY2MWZjNzliM2M1YzI0YzQ2YmI2MTEgbGVnYWN5LXRydW5rCisyMzczOSAyZjA5NWMzZTAwN2RkNzc2ZDQ3NDQ5Y2Q4MWE1YmM2NmZjZDA5YjY5IGxlZ2FjeS10cnVuaworMjM3NDAgMGNiMjg3Y2Q3NTQ3YTg0N2M2MjQzZWVkNjU2MTQ1NWYyMjI1MDViNiBsZWdhY3ktdHJ1bmsKKzIzNzQxIGMyMzk4OWUyMmZmYTUwMTE0ZmIxNWZmODgyZGYzODUwZmI2MzJjNGMgbGVnYWN5LXRydW5rCisyMzc0MiAwNzFjZmVlOGQ4ZWI5YWMyOTY4M2FhZjgwMDQzN2U0NmE4MDQxNTE0IGxlZ2FjeS10cnVuaworMjM3NDMgNzY5ZGY4NWQ3MGJjMTNmZjBkYzQyNWU0M2Y0NmQ0Y2U3NGU3MWM0ZiBsZWdhY3ktdHJ1bmsKKzIzNzQ0IGRkMGNkZDNkZWZkODM5Zjg4YzZiZmVmYTFiYjAwYjRlMDhmMTc1ZDAgbGVnYWN5LXRydW5rCisyMzc0NSBjZDk2YzRiMDFmZjBmMGE4MzEzZWMwMzFmYmQzNjA0YTY4MmIwMWEwIGxlZ2FjeS10cnVuaworMjM3NDYgOGY0NzMxNzliMDczMDA5NGYyYTU4MDg4ZjRjMGMyZTdiZWI0ZTQ3OSBsZWdhY3ktdHJ1bmsKKzIzNzQ3IDVkNjc4MzU2Yzg5NDI5YjJlNGI5M2NhOWZjNGFmMTBjNDQ2M2VmY2QgbGVnYWN5LXRydW5rCisyMzc0OCAxYTk0OTRmOWVkYjI3MDIxN2Q2ODAwODQ4ODIwOWEyMjVmZGQ5YjllIGxlZ2FjeS10cnVuaworMjM3NDkgNGFmOGQyNGZhNjkxZWVhMWEwZTZhMWY1MDAxNWVkM2VhOWFlNDRkMCBsZWdhY3ktdHJ1bmsKKzIzNzUwIDRiZmRiYzgyMzEwZjFiYzM1YTZkMGI2ZTRhZDJhNTIwNDBmNDlhNjcgbGVnYWN5LXRydW5rCisyMzc1MSBiNjkyNzNiZWUwOTUwY2Q3YzkwYjIyMzIwNWVlM2M2ZTZlZmJkZDc2IGxlZ2FjeS10cnVuaworMjM3NTIgYmU2N2I2NmU1ZmVkMGY3MjY2Y2VlNzkzZDE2ZjlkYWIwYjg0Y2MyNSBsZWdhY3ktdHJ1bmsKKzIzNzUzIGUwOWZiNDg0ODc2NTM1MjhmZTY0MTJjM2MzMzQ2MWE4NWIyNDQ4ZGQgbGVnYWN5LXRydW5rCisyMzc1NCA3Y2JkNDA3YmU2ZTdkM2QxNmQ3Nzg2NDJlZjEyMmE3MDA2MDIxYjI1IGxlZ2FjeS10cnVuaworMjM3NTUgMTQ5YTY1ZmE0MjdjMzQ5NTliNjIxZGZmYWQ3MjU4NmY3ZWRjYTgwYyBsZWdhY3ktdHJ1bmsKKzIzNzU2IGJmNGZmMDVlYWI1MjA3YWQwNjZlZWIyMDUzMTQxMmE5OTU5ZDVkZTAgbGVnYWN5LXRydW5rCisyMzc1NyAxZDllNjlmY2YwZjhkNGY1MTYyN2VlZjIxZTllZGNkZDFiYWQzNjg3IGxlZ2FjeS10cnVuaworMjM3NTggYzhiMGU5OTQ1MTU5OWY1Yzc3MTc4YjE2MmVhZDYzNDUyM2MxZTVkMCBsZWdhY3ktdHJ1bmsKKzIzNzU5IDY4ZmVmYTk4MmM1YzI5MWU5NzljN2MyNjI2NTZhNWM1MWQwYjBkZjMgbGVnYWN5LXRydW5rCisyMzc2MCA3Y2JkMjg4N2Y2MGZjZTNlNGE5NDY5MmEwOTA1NGZlM2ZiMTQ4OTE3IGxlZ2FjeS10cnVuaworMjM3NjEgYTliMTlkYjE4MGEyNjAwYjAyMWIzYzY4MWU2YmZjOWQ0MzUzNjlkMyBsZWdhY3ktdHJ1bmsKKzIzNzYyIDJiYzQxODNmYjU3ZTY5ZmExNjBkYzI0MWQ0OGVjODk0YTUwM2Y0OTYgbGVnYWN5LXRydW5rCisyMzc2MyBhMGM4YzJlNWE0NGQwODcyYWM1MjNmOGQ4Yjk4Zjc1Njc0MTRmM2VjIGxlZ2FjeS10cnVuaworMjM3NjQgZmRkYWNlZmVlYjM2ZGZhMjZiMTUxMmE1NzFlZGExNjg4ODNmZWNjOSBsZWdhY3ktdHJ1bmsKKzIzNzY1IDczM2NiMjY4YWQyZmIwYjc0MDdjY2NmNWQ4NWEyNzlmZTM3NGI4MGMgbGVnYWN5LXRydW5rCisyMzc2NiA2NDI2YTVhZGJmNzc1M2JmMDZjN2M3NWRkNDBhMTZkZWNkZTQ3N2YwIGxlZ2FjeS10cnVuaworMjM3NjcgODQzMzFjOGQ5OGE0MWFkZDkwZDdiNjcxNGZmNDNmOThmOWZlNWJjNSBsZWdhY3ktdHJ1bmsKKzIzNzY4IGUwODY0YWFjOWI2YjI1ZDI3ZmMxNWRhZjljNjg5YWVhOTczNTUwZmQgbGVnYWN5LXRydW5rCisyMzc2OSA5Mzg0MWM1ZjQ3NWIxMDBhOGMyNTRmZGZkYTYzOTdkMDc0YzI0NTUxIGxlZ2FjeS10cnVuaworMjM3NzAgOTdjNzVmOTgxYTllNjI3M2Q3M2M2ZjJkYzE3YjIyMzBiZmYxMDc1YiBsZWdhY3ktdHJ1bmsKKzIzNzcxIDM2NGMyMzhhNjg3MTBmZDk0NjMyYmQ1MDg2MGUxZDhmYjUzYTRiNTAgbGVnYWN5LXRydW5rCisyMzc3MiA4ZTBjMzE4NDljNjQ4ZTdkMzZlZmJiZDFjZTc1ODFiYzVkNDE5YjYxIGxlZ2FjeS10cnVuaworMjM3NzMgZGZjOWYyM2M4NjU1MzQ1MzMyMzE1ZGQ3MjRiM2FlYTU3MDc0ZDM3MyBsZWdhY3ktdHJ1bmsKKzIzNzc0IGJkYzQ4NmM2NmRmMDRiYTBkNzQ0OTE5MWE3NmVjOTc2ZThhYjM3ZGIgbGVnYWN5LXRydW5rCisyMzc3NSBjMTNhNDczY2UxYjdlZGRiYjA4ZGYwOGI2M2NkMDRmODg5NTAwNTQyIGxlZ2FjeS10cnVuaworMjM3NzYgZGZiMmVmYTU1OTY3MmI4N2VlYTBmNTdiNWU1OTY4NTA2NmI1NTAxYSBsZWdhY3ktdHJ1bmsKKzIzNzc3IDYyYjIwNzU4ODg2NmNjNmY1MGU1NTA4ZjNhYWYzMWJlOTVjOWNjMDkgbGVnYWN5LXRydW5rCisyMzc3OCBmOTM4Y2QxYmE5NGVjNGUzMjczMDA1NDA0ZTA5YWFhODUwMDA2YjlmIGxlZ2FjeS10cnVuaworMjM3NzkgMDZmMTI1NGQyMjgwOGVhZDE4MjAyM2FhNWM2NjQ5ZDAwODFiN2U2YiBsZWdhY3ktdHJ1bmsKKzIzNzgwIGQyMTE2MGE5MjE3OTEzODljMTI4NTZmYjEzZTUwZjM0OWI1YzNmZTQgbGVnYWN5LXRydW5rCisyMzc4MSBkNTFmZTUyMGU1ZmRjMDIwYzMyNzVkYmE0MDAyMTAyYmIyODc2ZTE4IGxlZ2FjeS10cnVuaworMjM3ODIgMjNkYzdiYjBiZTRmYjc3ODY4ZTA1Mzk2ZjE1MTAxYzk1ZTBlOTQ4OSBsZWdhY3ktdHJ1bmsKKzIzNzgzIGQwMWM1ZjI5OTE1YTI4YzgzOGE0NzI1Mjc1M2UyM2Y4NWY3ODViMTkgbGVnYWN5LXRydW5rCisyMzc4NCBiYzNjODQxOTg3NGM2ZTFmMzg5Y2Y1Yzg3OTdmMjAxODAwNzdhYWQwIGxlZ2FjeS10cnVuaworMjM3ODUgY2I4N2JkOTdmNzQwZjE3NTFhZmZlNDgwMWUyNTFiMjlkMDkzMWY3ZiBsZWdhY3ktdHJ1bmsKKzIzNzg2IDNkMTM0MTdhNjNlMGZkNzM1YTg1ZTJkMWIwNmM4ZWUwNzE3YzhmMDEgbGVnYWN5LXRydW5rCisyMzc4NyA1NGE4Mzk2MDQ1NDAzYzBlMjg3ZjJlY2ZkMWIzOGE3MGZkMGUyODE2IGxlZ2FjeS10cnVuaworMjM3ODggZmQ1NjE0NGE5NmU4ZmE2NDRjNWUyOTE4OWI2NTM5MWU2YTVlNTkzZiBsZWdhY3ktdHJ1bmsKKzIzNzg5IGM5NDhiY2IwNDE1ZTBjMzJlYTQxMzg2YmY4NDQzZmRkMDRjYzkxOTIgbGVnYWN5LXRydW5rCisyMzc5MCAxZjNjMWU4MzFmMjE2YTQ5YmU2YzA4MzIzYTczMDYyOWNmN2UwOTU3IGxlZ2FjeS10cnVuaworMjM3OTEgM2QzYjZiNGNiNzlmMzk5YjIyZTIxNDlhNzcwNzJhOTI2MTczZjIxNSBsZWdhY3ktdHJ1bmsKKzIzNzkyIGNiMzM0YThjOGRkMjNhNTY2ZmRhZDBiZjdiMDQ0NWMxMjlkYWUyYzcgbGVnYWN5LXRydW5rCisyMzc5MyBkYmZlZDNiZjE2MGVlZGEwM2QzYTMyMDE3OTlhMzFhMzUzNWU4NDM2IGxlZ2FjeS10cnVuaworMjM3OTQgZjBlMzNjNTdlNDZlODAxMDE0ZDk3OGQxMGJjYWNjYjQ1NmQ5ZjkyYiBsZWdhY3ktdHJ1bmsKKzIzNzk1IDliODRlZmJmNmIwZDBiNzc2NzMzMmQyMzRjM2U3ZTQ2ZGY0MTI2MzEgbGVnYWN5LXRydW5rCisyMzc5NiBiYzEzOGJjNzNjZGQxYzM1NGY3MTllNzYzMzY3YTc5NmMwMWFkMzExIGxlZ2FjeS10cnVuaworMjM3OTcgNGY3YmVmZWMzNWIwMTk3ZjRiNzkwNzJhNThhMTg5YWU0Mjg3NmJmMiBsZWdhY3ktdHJ1bmsKKzIzNzk4IGMyMDA1YmI4NzliNDY3ZDU0NzlmZjMyYWNjMjdmNTg2NDRjYzczNTggbGVnYWN5LXRydW5rCisyMzc5OSA4MGI4YmZhMDQ0MDZiZjNmNDkxNWY3YmFhMmJjNmM0MGY3MTM0ODE0IGxlZ2FjeS10cnVuaworMjM4MDAgNGIxNjE1YmY2ZWIwOWQzMWM3NjIxYzY1YTllZjkxMzQxM2U5MzliOCBsZWdhY3ktdHJ1bmsKKzIzODAyIDAxYWY5MWFlY2NkNDQ3MjU0MjQxNzllMjdhZjY4MzFmMzkzNjg5NTkgbGVnYWN5LXRydW5rCisyMzgwMyBmZTFiNmNlNGViOTM2MzU5ODkyYzQ3MGZjNzk1MjI5NzZhOTQ0MGViIGxlZ2FjeS10cnVuaworMjM4MDQgMmQ1OTlhMzZiNjdhOGMzMGNiOThhNDNkZWY0OWM3ZWRmMzdlZDlhYSBsZWdhY3ktdHJ1bmsKKzIzODA1IGFkMjY2MjA5NWQ3NzI0NjkxZDBjNDg0YWZmNDZjMmJkMjk2ZDQ4ODAgbGVnYWN5LXRydW5rCisyMzgwNiBmNTY3YjQ1NzM3YzBlMzQ4MGUyOGQxMmYxMTAyODgzZTA1MjE2Y2I4IGxlZ2FjeS10cnVuaworMjM4MDcgMjk0OTAxYWI4NjMwYjVkYzA5NzAzY2ZjMDc3MDhhMjQ2ZmFlNGFlMCBsZWdhY3ktdHJ1bmsKKzIzODA4IGE4OTk1YTZkZThkMDA1ZTY2MzY2ZTczMTVjNjBmODMwOThhYWQ0MDIgbGVnYWN5LXRydW5rCisyMzgwOSA0YmE0NTQ4YmE5NDE3OTQwZGUyYmI4MzM5N2MxMmYzYzlhNjMxMzk2IGxlZ2FjeS10cnVuaworMjM4MTAgMzY3MTRiOThmZTUxMjBlNjUyNzFkODAzMWU3ZGFlYzlmZTU5OGNjOCBsZWdhY3ktdHJ1bmsKKzIzODExIDczYTEzOTVhMjM1MTY0OTA5NjlhMDQzMWY2ZDMzOWRmMTgxNGY0MzIgbGVnYWN5LXRydW5rCisyMzgxMiBhMTJjY2RiY2U4ZGE5M2ViYTY1YjhmYTRlNDI5YzUxNDY3ODk3YzY4IGxlZ2FjeS10cnVuaworMjM4MTMgYTU2NDI3ZTVjNWUxNzI4NGMyMmY5MjdlZjFjYjM0MmUzZTIxN2VlNCBsZWdhY3ktdHJ1bmsKKzIzODE0IGQ4ODI1NDc1YjgwMDcyZThlYTliOTg3ZmU4NmNiODMwYjk3ZTAzODIgbGVnYWN5LXRydW5rCisyMzgxNSA2YTVhMTBhNWI1MjY1ZGQxM2U2NjUwOGJmYTAxZmExYWNmZTVlZTE4IGxlZ2FjeS10cnVuaworMjM4MTYgYzk2MDhjNzkwZjZmNWZhODUxMzkxNGEzNDllNGVlYTVjN2U5NzEzNCBsZWdhY3ktdHJ1bmsKKzIzODE3IDY1ZGQ2MTU3Zjk5OTM0YmE0MTA3MGY4NmM4ZjYzZWFjOTBkMjAzNGMgbGVnYWN5LXRydW5rCisyMzgxOCA3MjJiYjFmZDMxZWEwOTZmY2ViZjBjYzAxZDFmODZlOWRhM2JiNWYxIGxlZ2FjeS10cnVuaworMjM4MTkgMDMzNmVlNWI0NmQ0MjIyZWMzMDdhNGJkZTZmN2ZiNWMyZDlhZWJkNCBsZWdhY3ktdHJ1bmsKKzIzODIwIDk0OWJhNDdlOGYzMGNhN2YzZDYzODIxOWM1MzlmZDE3Y2Q3ZWUwZGYgbGVnYWN5LXRydW5rCisyMzgyMSA4N2U1ZmUwNTZkMjk5ZjVlYTJhYWM1MmQ4YTc4OTBkNjE0MmVhNzcxIGxlZ2FjeS10cnVuaworMjM4MjIgYWU1MDdjZjY3ZmJmYzQzZDJmMTkxODk5MjAwODFmYzQ3MGQyN2Q3OSBsZWdhY3ktdHJ1bmsKKzIzODIzIDRhMjU3YTU4YmU4YmZiNzMzMWFmNzZhNmI5MDI5NDhkMWY4ZDQzNTkgbGVnYWN5LXRydW5rCisyMzgyNCBkYTgxMTI1YjJhZjhlYWYxMGJkMTMyZmFiMzBhZTc2NTcyYmQ2MzZhIGxlZ2FjeS10cnVuaworMjM4MjUgNDczYWRiZjUyMTcxODQ4ZDIxNzMzMTYxNDgzYTMwZTU1NjAyODcyNCBsZWdhY3ktdHJ1bmsKKzIzODI2IGVjNzJiNjNkMjY5YWViOWEzMjkyODRiMDBkN2U2YWI1ZWNjN2E2NGMgbGVnYWN5LXRydW5rCisyMzgyNyBkMDYyMWE2NjljNTY5MGQwNmJkZTI4NTBlNmIzNmQ2OTVkMzM0YzRhIHIyMmIxLWJyYW5jaAorMjM4MjkgZWMwNWFmYWZlMTNiOTVkN2Y2NGFhNTEyYWFiNzZlN2UwN2M3ODBmNSByMjJiMS1icmFuY2gKKzIzODMwIDM3N2IwOWFjNzI2ZTdlYTJlMjY1ODQyNzFiN2EzZGE4ZDZmZmZhZDMgcmVsZWFzZTIxLW1haW50CisyMzgzMSA5MDU4ZTQ5YzZjNTdkMjM3YjkwYmFjNjQwZThjNTA0ZTgwY2MwMmI0IGxlZ2FjeS10cnVuaworMjM4MzIgY2UyYTNmMTU2MTVmNmJhM2FmNzI3M2VjMTM1MzIyNGNiZWI5OWFiYiByMjJiMS1icmFuY2gKKzIzODMzIDhkZGRmZmZiOWYyYmI3ZTRjOGY3YzFjOTJlNWJmMjc2ZTIxNTM2MWYgbGVnYWN5LXRydW5rCisyMzgzNCA2Zjk5MDJhY2UxOGQ4ZWI2ZjBiODAyYmU2OTI2YTNlMzY4OGJmYzY2IGxlZ2FjeS10cnVuaworMjM4MzUgMDhmMTY1ZjEzNWE4YTY0MzYwZTRkODIzNTlmODQ0MjVkYjg2NTNkZiByZWxlYXNlMjEtbWFpbnQKKzIzODM2IGNiOGU4YjQyY2RmYmViNWUxNzQzMDRjNDFmOWE0ZjljYjg0NzhlNjEgcjIyYjEtYnJhbmNoCisyMzgzNiBlOWZhZDU1ZWY3MDRkYmViY2RlNWUxNGNiOGRiOTZhZjg0YzIyZTU1IHIyMmIxLWJyYW5jaAorMjM4MzggNjE4MDljNTE0YWQ4MDY5ZWYyNDMyMzYyMGQ2M2M0ZWQyY2Q0ZWMwZiByZWxlYXNlMjEtbWFpbnQKKzIzODM5IDgwNWYxODRiNmRlMDlhNTI5Y2EyMDM3YzE2M2RlYTU3NjRmZmYyYmYgcmVsZWFzZTIxLW1haW50CisyMzg0MCBkMDY0NDZkNGU3OGRhMjM0MDhiZjU4NTViMjMwOGNmOTM4YmE2NWIyIHJlbGVhc2UyMS1tYWludAorMjM4NDEgNzExMTM1Y2UxZTU0ZjVlNzY5MTE1MDEyZDFjOWQzZmRkYzM3ZDMxOSByZWxlYXNlMjEtbWFpbnQKKzIzODQyIDU0MWY4MjVjN2Q2MzdjZWM5ZGNmZWNkMjRiYzY4NTZhOTE2NTQ3ZWQgbGVnYWN5LXRydW5rCisyMzg0MyBhOWJhYmExNmViZjM5ZDFjOTk4NzAwMGQ3N2M4ZmRmZWUzZWIxYWI2IHJlbGVhc2UyMS1tYWludAorMjM4NDQgNWY0OTUwZGQzN2M4YTliNzNjNDIxNmJhNzc4ZTQyYTEzMTVkZmE3NSBsZWdhY3ktdHJ1bmsKKzIzODQ1IDVhZjZjODljOGNiNzVmMzM3ZDMwNWU5NzY4NzkyOTAwMzliM2Y0ZDkgbGVnYWN5LXRydW5rCisyMzg0NiAxNTFlNDVlOThjMTFkMzU2MzAxOTU3YTMwMGU1MjNmODFhMjNkMzhjIGxlZ2FjeS10cnVuaworMjM4NDcgMmNiMzJmN2Y3OGMyZDFlNGZkNmVmODFiMjZjYjI0N2VhODNkYzBhMiBsZWdhY3ktdHJ1bmsKKzIzODQ4IGNlODhlYjQ2NWNlNzZjMTNhZDA5ZDkxMWIwYWIxZGQ5MWE3ZjM4YmEgbGVnYWN5LXRydW5rCisyMzg0OSA5MDU4YmNjZTY5ZTMxOGM4MGQ0NGZhMDNhZjIyZWE1YzJiMDI2ZjYwIGxlZ2FjeS10cnVuaworMjM4NTAgODRhNTg2YWNkYzAyMzczM2FhZTNmZTFkYThlZTMxMzNiMzdjYTUzZSBsZWdhY3ktdHJ1bmsKKzIzODUxIDM3NmVlMTc0ZWNkMDc3NDIxMTY5Yjg5MDMzYzA0Nzc0ZTRiNDU3YmIgbGVnYWN5LXRydW5rCisyMzg1MiBiZjAzYjhlM2VmOTNhZjExNTA5MDlkOGM5NWNjMzMzY2I0NjAzN2U4IGxlZ2FjeS10cnVuaworMjM4NTMgODBiY2M4YjdkNjE5MGViNzNlMGExMWY0MWY2NDA0ZTNlYWM0N2E1ZCBsZWdhY3ktdHJ1bmsKKzIzODU0IGI1Y2EwNjg3YmE2YTgwOTZiMTFiYmY4ZDZlNmU5NWUwYmFjYmZhYWUgbGVnYWN5LXRydW5rCisyMzg1NSA4ODdhOTNmOWQ1ZDVkOWNiZmEzOGM0YmViZDIzMjUwOWNmMzRmZTBhIGxlZ2FjeS10cnVuaworMjM4NTYgN2QxMjU3NDg1YWVmMmU3YjgwZjcxZDdmZWZiOGIxMGUwMWJhMjhhNCBsZWdhY3ktdHJ1bmsKKzIzODU3IDliZDYwM2Q0MzRmNTUyYWI4MzNiMDMzMTU1NTc1NTA4MWY3YWFlYzIgbGVnYWN5LXRydW5rCisyMzg1OCAzMjVkNTEzYTUwYmJhOGU5MDBiYjZmYTQyZWFiMjYwNGNhZGUyMmU0IHJlbGVhc2UyMS1tYWludAorMjM4NTkgYWFkNzYyNTAzZDExZThjMjQ0MzI2NWZhOTU0MzJlMzAwM2M3M2ZiYiBsZWdhY3ktdHJ1bmsKKzIzODYwIGQzMjk4NDM1ZDg1YjU4NGI2NTA5ZmIwOGJiY2MyNzczZWNkYWY3NjMgbGVnYWN5LXRydW5rCisyMzg2MSAwNTBlZDhhMjFjZGU1ZGRmM2VmYjVhZDVmMzMyZThkZWI2MTRlMDIyIGxlZ2FjeS10cnVuaworMjM4NjIgOTI0NmI2YzdlNzQyMmJjNmU5MjM1NzNjMDJhMjMzNzU2MTk2OTY4MCBsZWdhY3ktdHJ1bmsKKzIzODYzIDgyYmNmYWM4OTY0MjVjYzhhZmZkNWM3MzZkMTZlODEyZWMyNWM4NjcgbGVnYWN5LXRydW5rCisyMzg2NCAyNWQ3NjRkODgxNDkxYzczZDEwMTk4ZTQ4Mjg0ZTFlZTIwYTRmNTVjIGxlZ2FjeS10cnVuaworMjM4NjUgMGQ1ZTZmYzA0ODFkNjE0YWNmYzkwMjRlZDM3ZGJjMTVjMDMwYTUwNSBsZWdhY3ktdHJ1bmsKKzIzODY2IGM0ZDlkODY3NDUwNjJlYTFlMzI0YjE5NDdiMTc3OWE4MWE0YTk5MGYgbGVnYWN5LXRydW5rCisyMzg2NyBjYTVmMmZmODM5NzkyYWM4MmU5NWI5OWEzZThlNTFiOGQwMjNlMjJhIGxlZ2FjeS10cnVuaworMjM4NjggYjQ3ZTE1ZmE0M2U4NTFjMzYwNzJiOGY2ODg4ZmYwNTE3Y2IyZWQ2MSBsZWdhY3ktdHJ1bmsKKzIzODY5IGViNmI5NTNlY2Y3Y2E3ZWYzNTNjODIyOTUzMWMyYTdiOTAxODgyNmQgbGVnYWN5LXRydW5rCisyMzg3MCBmZjU3YTFhMzcwYjM1MDFmMjUyMjZlMmFkMjZiNmM3MmRjNGNhNDIwIGxlZ2FjeS10cnVuaworMjM4NzEgZWViZGRkM2I5NGE1MzBjYTkxNTAzYTQ1YThlNmIyNWYwMmVkZjAwOSBsZWdhY3ktdHJ1bmsKKzIzODcyIDVjMWRmZDkyODc3ZDQ1N2Q3NTExYTVjZjdmNDhhOTI2MWU3MTRkYjMgbGVnYWN5LXRydW5rCisyMzg3MyA5MDA5YzI1Njk0ZDFmYzFiYmNlNTVhMGRhMGQ2MGE3OTEwYmI4NzRhIGxlZ2FjeS10cnVuaworMjM4NzQgNGI3OWQ3ZDkxYjRmOWEyYTNlOTNlZTI5MzhkOTU0ZWRjYjdlYTY4ZiBsZWdhY3ktdHJ1bmsKKzIzODc1IDc5NDU2MzlkZjI2NTAwY2FjZGRkMDQxNjhhYThlYzQ0YjdjMjFiNzUgbGVnYWN5LXRydW5rCisyMzg3NiA3MzcwMmQ3ZjEzYjFiMTU5YTM4ZWVlOWU3MGZlZWI5N2ZmZDk2MWE3IGxlZ2FjeS10cnVuaworMjM4NzcgMmQ4ZGJlYmY4MWUwNmExN2NlZjRiYzhmZGZmNDNmMzZkODU3MTFjYSBsZWdhY3ktdHJ1bmsKKzIzODc4IDdmM2QwY2MyMTg4OTk2ZmYwMzFkYjdhM2JmNzJhOTk4OTk5YWY3Y2QgbGVnYWN5LXRydW5rCisyMzg3OSA2ODlkMGJiYzkxYjEzOTI1OTI3M2Y0YWNhYmJhYzEwMTM2NzlkNmFlIHJlbGVhc2UyMS1tYWludAorMjM4ODAgODI4Y2IwYzJjNDgwNWRlMzE0ZGIzMjA0NDU0M2Q1MzliNThkMjRiMyBsZWdhY3ktdHJ1bmsKKzIzODgxIDdkY2M4YTI4MTMzYTIyYjA5NDNlODUxYjU4YmFiN2Y5N2FlZTQyY2MgbGVnYWN5LXRydW5rCisyMzg4MiA3MTZhNDA2ZTliNGZiM2Q1YTc0NzA5NWYwZGU0ZWJkOGU4ZmM5ZDVjIGxlZ2FjeS10cnVuaworMjM4ODMgYmVhOTQwNGNlNjJjZDI0ODNhY2JkN2YzODE1ZWIxYmUwMTJlM2RhMCBsZWdhY3ktdHJ1bmsKKzIzODg0IGJmNGIzNzUxOGMxNDc3MmVhMjNlYWFjYmYzMDAyNzMzMzQ5NzFhNjIgbGVnYWN5LXRydW5rCisyMzg4NSA0MDNkZDU5Y2E3ZDVkZjAxMjAzOGRlYzdiMzQ5NTA4ZWNhZGFhZDQxIGxlZ2FjeS10cnVuaworMjM4ODYgMzAyYTFjMDI1ZGM3OTJlYTg4MmI5NDA3MDM0Zjg0NjgzNDRhZjg3YSBsZWdhY3ktdHJ1bmsKKzIzODg3IGEzZDZiMzFlOGJiOWZkY2RlYzQwZDgyNDUwMGVkYjU5MGE1NGJjNmUgbGVnYWN5LXRydW5rCisyMzg4OCBiOTc0NTIyOWJkMTMyYzcyNDlhOWFlZGQyMjk5NzBmZDYzYWNkYTNhIGxlZ2FjeS10cnVuaworMjM4ODkgNTdiNTE5NjZhNGYxZjA2ZjMwNzJlNjkxZDk4Yzc4YzcwNDI2NTE5NSBsZWdhY3ktdHJ1bmsKKzIzODkwIDBiMWMxMzk0YmVjNjExOTNhMDJkYTliMDU2N2Y4NGE1ZjMzNjJhYzggbGVnYWN5LXRydW5rCisyMzg5MSBlNGY1MTM4MjkyZTY1OWJlMjY1ZmQ3MDBiNGEwOTZhMjg1ZGRlOWY5IGxlZ2FjeS10cnVuaworMjM4OTIgYjZmODE5N2Y0ZGY3ODRhYWFiYTY4ZTI4ZmVhM2I0MDRkNjljYzBiMyBsZWdhY3ktdHJ1bmsKKzIzODkzIGFhNTY0NzU2OWVlMmFiMzQxNWZiMmQwODM2ZGEzMzFhMzAzNmU5ZGIgbGVnYWN5LXRydW5rCisyMzg5NCA0ZmI3NzI3ZTRmNDc1YmVhYzA4NDBlZjVhNDFkYTZkYTVlMzcyZTA2IGxlZ2FjeS10cnVuaworMjM4OTUgN2MzODFkZDA3NzljYTc2YzlmYjA2MTU2NTJlODc5NjliNTY0MmNkYSBsZWdhY3ktdHJ1bmsKKzIzODk2IDJjMWE0NTg0YTcwNDMzNWUwNTY5ZTk5MDUwNjg2NDRjZTA5ZmUxZTcgbGVnYWN5LXRydW5rCisyMzg5NyAzZDI5OWIxNTY1MTExOGNjOThmZWYyOTM2ODViM2M5NjI1OWI4NTJjIGxlZ2FjeS10cnVuaworMjM4OTggOTdiMThjMDlkMjJhMmEzNDY0MTdhMWMxMDdmMjVkODU3ZGU3NzVmZSBsZWdhY3ktdHJ1bmsKKzIzODk5IDE1OTg1ODhlZjFhZGI3ZTRmOGQ5NDE2Y2Q2MjUxZTlhNmU1ZjcyYTcgbGVnYWN5LXRydW5rCisyMzkwMCBhY2M3ZTNiNGQwNDJmZWU1YTc3NDIzMzk4MTRjZTg3YmEyYzllNTZmIGxlZ2FjeS10cnVuaworMjM5MDEgZTQ5NmI4NTIyOWM3OWJkMDJhOWM3NmM5MjM3ODg3N2NhMWJjNjhjNyBsZWdhY3ktdHJ1bmsKKzIzOTAyIGQ1YjMxZWYyM2NlYmUzMWYzNmI3MTBlZTQ1MDNmNGUyN2E3NjU1ZTIgbGVnYWN5LXRydW5rCisyMzkwMyA2Yzg0ZDU1YWJiNThhMTM1N2E3MGM4OGFlY2MzOWFmMDc1NzY1NWQwIGxlZ2FjeS10cnVuaworMjM5MDQgZmVkOGExODg5NGY1ZjliYmQ0Yzg1ZjUwZTMwNTE1N2JkNDFlZGMxYiBsZWdhY3ktdHJ1bmsKKzIzOTA1IDg5OWJlYmM4OTA0N2U1MDgwYjMyMDliNDJkMjA4OTZkNWY1MTM2ZTAgbGVnYWN5LXRydW5rCisyMzkwNiAwNGYyODAxZDk5NzcwZjU5MzQ3Y2E1ZWU1ZTFkOWZjZTcxYTkzOWM4IGxlZ2FjeS10cnVuaworMjM5MDcgM2Y4MGM5MWI1YzNjZmRiNTRlOGEwZjdiZTZlYWZmMWQ3ZDRiOGRmNCBsZWdhY3ktdHJ1bmsKKzIzOTA4IDhiOWUyZmJjYWUxZmZjZmJjYzI0ZDc1OTYwMWJiNWY4YWFiOTA0MDIgbGVnYWN5LXRydW5rCisyMzkwOSA2ZjJjYjE4MDY4ZGRmOTA2NTJlNzQ5OTc2NzgzY2M5MjIyZmQ0MTM0IGxlZ2FjeS10cnVuaworMjM5MTAgYWE0NmM2NjE4OGQzNmM5NTUwMjNkMTJiZDBkY2I5NTI1ZmM3MWMyYiBsZWdhY3ktdHJ1bmsKKzIzOTExIDcxYTliMDUzYWI0MmIyY2QyYmI1MDc5ODRjZDA5YjQ1YjNhN2RiZGUgbGVnYWN5LXRydW5rCisyMzkxMiBjODBkYWZjZTFiNzRhNmFkZjk0MzIzMjdhY2UwOWY1MGI1M2JjYzZhIGxlZ2FjeS10cnVuaworMjM5MTMgYWI4MzNkOWEwOWI5ODBhZjBkZmI5NzcxNzAwNjg1OWYxYjI1OWVmOSBsZWdhY3ktdHJ1bmsKKzIzOTE0IGVmNzhlYzYwMmE0MDYzODA3ZDA5Y2Y0ZmUwOTFiZDY0YWUzNmU3MTYgbGVnYWN5LXRydW5rCisyMzkxNSA3YzQxYzRmYmY5YzczYzJhNzVmNDMxZTM3ODU1NzUyZjc4NmJhOWZmIGxlZ2FjeS10cnVuaworMjM5MTYgYjA3ODk5MWNiNTZhM2QwM2YwNGM1ZDI0MGEyNWU0NzFhYjAzNTc4ZiBsZWdhY3ktdHJ1bmsKKzIzOTE3IGNhYmI1NjhhNTU4YjFlNjM0Y2U1ZTNmNTAxMTJiNTk3NDgyODZlNTEgbGVnYWN5LXRydW5rCisyMzkxOCBkZDc4YjFhNzFmM2VhZjczMTIxNWQyNDgzZWU1YWE0NGU3MDRlOWQ5IGxlZ2FjeS10cnVuaworMjM5MTkgZmVjOTUwZDhjMjVkN2I0ZmFiMmM5MzE0OGIyNDY0OGNlYTMzMWU5NSBsZWdhY3ktdHJ1bmsKKzIzOTIwIDUyOTU3YTJkZmFmZTY5MDQ1OTg5NjMyNDIwM2I0YmZiZWQxYzMwYzUgbGVnYWN5LXRydW5rCisyMzkyMSBlYjAwNGNjMDA4ZDI3NzZjOGE4MTAxNzBhMTM3YjUzNTRlYjExZjMxIHJlbGVhc2UyMS1tYWludAorMjM5MjIgOGRlYjNiNWZkN2MxNzg5ZmI2ZDI5Yzk4M2E0OGY4NDUyOWVjODM1MiBsZWdhY3ktdHJ1bmsKKzIzOTIzIDJkM2NlZTlmMTYzMzIwYWMzNDYwNzg1ZDAzMWVkYTM4MTY1NGViYTMgbGVnYWN5LXRydW5rCisyMzkyNCA3NTdiY2ZhMjAxZGMxOThhNDYyNzgyMjdiMzlkNDMyMDI4ZGE3MDA4IGxlZ2FjeS10cnVuaworMjM5MjUgZWRkOWQwYjNjNDdlZmFlN2ZiMjAxMGUxMzMyOTBiNTZlYWFmMGI3ZiBsZWdhY3ktdHJ1bmsKKzIzOTI2IDczNDQ2ODdiZjJjMGFiOGZkZDlkNTBkNzE3MTk4ZjdmMTc0ZDdlY2MgbGVnYWN5LXRydW5rCisyMzkyNyBkMGViMjAzNmVjY2FmMjY0ZTk1ZmE1YWE4N2FmNGZkOTJkNGY3ZDRlIGxlZ2FjeS10cnVuaworMjM5MjggMzkzNTU2YWRiMjk1MGEzNzcyYjQxYTY1ZmNkODZlYWJmMWJkYzlhOCBsZWdhY3ktdHJ1bmsKKzIzOTI5IGRjYWEyYzg5NDMwZTc4ZmVjMTFhN2ZhZmI4M2I5N2E3YTkyMGNlYTIgbGVnYWN5LXRydW5rCisyMzkzMCBjZTEzYWEzMWUxODlhMDk4MWRjNDVjMmYyNTY2YzA3YjE0NWFkMjFlIGxlZ2FjeS10cnVuaworMjM5MzEgYzA1ZDQ4OTUyMzRjMTBlYjlkZjFlMzFhOTI4MDEyYzY5ZGU3OGE0NiBsZWdhY3ktdHJ1bmsKKzIzOTMyIGY3MDA5MTY3ZGQ2N2MzOGRkMDRhZDI1NjMwOTc3MzZkODA4YTgxMTkgbGVnYWN5LXRydW5rCisyMzkzMyBjNDc4YTUwOTFmM2ZmZmJkNWE5ODkyM2NmOThiYWFjMjE4YmQ3Mzc2IGxlZ2FjeS10cnVuaworMjM5MzQgNWNkOGM4N2E4OGFlZDgxYjQ3NGEwZWFmMjcwMTgzYjUxMzY0ZjAzZiBsZWdhY3ktdHJ1bmsKKzIzOTM1IDAzOTdhNzVhNWJmZGQ1ZmNmZDJiMTRiZGJhNWE4YTRmZjVjZDU5ZGUgbGVnYWN5LXRydW5rCisyMzkzNiAzY2UwM2UyZjAxZWY3ZjAxNmYyNDE4ZjJlMjc3NDkxZDc4ZTM4ZDE1IGxlZ2FjeS10cnVuaworMjM5MzcgODhhMjQyYmZiMjNhYjBhMTVkOTRhYjgwMGQxNzYyMWU5ZmNlMDAxNiBsZWdhY3ktdHJ1bmsKKzIzOTM4IDk4ZTVkOTAxYmZkZmQ5MjA4ODM0NDMzZmVmOWQyODA1YTg3ZDgxMDkgbGVnYWN5LXRydW5rCisyMzkzOSAzZTliODVkZTQ0N2I5YTYwN2M2Y2UyOTc0YWZjZGQ5OWIwOTFmOTg0IGxlZ2FjeS10cnVuaworMjM5NDAgNTM1ZGMzNjUwYmVjZjUzZGVhZWM4Y2YwMGZjY2Q0NmZlNGMxZWEzNyBsZWdhY3ktdHJ1bmsKKzIzOTQxIDNjZmQ1NzhmNjQ4YjI0OGVkZjIwNzhiZGMxZDI0ZWIwYjI5MDRkNjcgcmVsZWFzZTIxLW1haW50CisyMzk0MiAzZmI0MDNlYWVkZTFlNjI3YWUyZjNjNjdhMTk3MDZkZDcxMGFiNDk5IGxlZ2FjeS10cnVuaworMjM5NDMgZDk1MWMyZGUwOTVjYWVjNDk2ZWI4OGRmNTFkMjUwZDkyZTRhNTkzOSBsZWdhY3ktdHJ1bmsKKzIzOTQ0IGFmOWYyOTAyNjRhZmRkNzkzYjQ3YzM3MGE2OWUzOTc1N2NkMjdiOGYgbGVnYWN5LXRydW5rCisyMzk0NSBhYmE3YTQ4OTVlNGRhZTQ5MWNlYjA0MTgxNjJjOTJjZmIxMjhkYmJhIGxlZ2FjeS10cnVuaworMjM5NDYgNzQxOGUwZDVmYzAxMGZhMTg3OWQwNjYwNzk1NjhhYWY1ODZiMTZmMyBsZWdhY3ktdHJ1bmsKKzIzOTQ3IGFlOTRiNWY3ZGQzMGY1NTQxMDE5Y2IxYzg1OGI0OTI1YmUzZTIzNDcgbGVnYWN5LXRydW5rCisyMzk0OCBmNjE0ODI1ZDMyNmFjMjc4YjNiNzk2ZDIxMTRjMDAzMzJhM2Y1YTMwIGxlZ2FjeS10cnVuaworMjM5NDkgNjFlOGYwMWRlODIxMjU4NTYzZTQ0N2Q5Y2JiMTJlN2JhYmNhNDI2ZiBsZWdhY3ktdHJ1bmsKKzIzOTUwIGU4OWMyNWNhNmIyOWY2MDUwNjc2ZTFmNmI3Y2VjYTUzYjU4MzllMGMgbGVnYWN5LXRydW5rCisyMzk1MSBlM2MyNGZjMjBhOGRiYzA2YzQ0OTQyODQ4ZDBjZWU2OTFkNTY0Yjc3IGxlZ2FjeS10cnVuaworMjM5NTIgYTBmMWMyZDJhYzllNGEyMzAzMzIzNDljNDdkNzI1NTBjNTNjNWM0ZCBsZWdhY3ktdHJ1bmsKKzIzOTUzIGYzMWIxMmE0Mjk1MWNkNzU3ZjIyYjIwMTAyNWY1Y2M1M2JhYjM3M2UgbGVnYWN5LXRydW5rCisyMzk1NCA1MDVkZDM0ZTBlZWJmOWY4Mjg5MzZiNTk1MmFmN2ZmODVmODlhZjJmIGxlZ2FjeS10cnVuaworMjM5NTUgNDMzYWU0ODM4NzAzNWYxOTY3M2YxZGM3MWQ1NzBkNDUzY2U0Y2Q5NiBsZWdhY3ktdHJ1bmsKKzIzOTU2IDk5YWQyYTlkMjBlMWMxMjc4ZjBhY2ZhODY5NjIwNjFhOTJiYTE5NmEgbGVnYWN5LXRydW5rCisyMzk1NyAzMTFhMmFiZWE4YTQ3YWMzMmEzNTM0YjFlNTlmM2JjNzlhN2M1NDA3IGxlZ2FjeS10cnVuaworMjM5NTggMzY3Y2Q4ZTVkZjQ3OTQ5NGU3Y2UwNzViYzFmNWE0NTQzZjEwNzI0ZSBsZWdhY3ktdHJ1bmsKKzIzOTU5IDk5ZWU3MTkxOTdiYTdlYzBhNDBkMzU3MWY4ZGQ5ZDE5YTA5MTc2NDQgbGVnYWN5LXRydW5rCisyMzk2MCBhMDMzMmFlODQ4ZTI2ZmI5NmFjNjAzNzllYjYzMWRiM2ZiYTJjMGE5IGxlZ2FjeS10cnVuaworMjM5NjEgODZmYjE4ZmEzNDZmOGE4YTY5Nzg3NDRmMjc2YjVkNDhlNWZiMTc2NiBsZWdhY3ktdHJ1bmsKKzIzOTYyIGMzZTBiZDIwNzc1Y2M0OWY0MzQ0YjU2YzJhNTJiYTQxM2ZjZTJiNDMgbGVnYWN5LXRydW5rCisyMzk2MyAzODM4MGQ1ZjI3ZDQwYjJjYjQ2ZGMxNWI4MDRiZTc0NDMyODY1YWIyIGxlZ2FjeS10cnVuaworMjM5NjQgNjkwMzQyMGYwYTgyNWFjY2VlZjQ5OGFjOWM4YWM1YjkwNzVlMzA0MSBsZWdhY3ktdHJ1bmsKKzIzOTY1IGQwMjA2OGQxNjNjZmNlZGVjMTA2Mjc5ZWFkMjdiOWZiMGEzOGRiMzAgbGVnYWN5LXRydW5rCisyMzk2NiBhZGY1NjVmMGY4YWU2MDg1ZWU4MGNiYmU2MGE3ZmEwYWM4YTg3MGM5IGxlZ2FjeS10cnVuaworMjM5NjcgMzk4MTM1ZTQwMGM3ZjgzYjUyZDk3NmE3YjY0ZjdmM2Y5ZTFhYjViMSBsZWdhY3ktdHJ1bmsKKzIzOTY4IDY0OGJjNzRjNDdhYjcyNjJlM2Y4MWRkM2E5NDYxMGFlY2QyMmRlNDIgbGVnYWN5LXRydW5rCisyMzk2OSBiMjI5MjA4YTJhNzI3MzhiOThlZmRkMDkxMjQ5NmRiYzJiNmI1OGY5IGxlZ2FjeS10cnVuaworMjM5NzAgZmEwYmY2Yzc5ZTA0MmEwMmFmMzNkODI4YzA4OWEzNDcwOTI4YTM0NiBsZWdhY3ktdHJ1bmsKKzIzOTcxIDVkZTNhNTk0NzI1N2JiYjE0NDY0OGQxMzYzZjRhM2MwMjYwYmFhMGQgbGVnYWN5LXRydW5rCisyMzk3MiA1ZjY4NTBkMWY5ZTg1MjM5MjFkZGExYTQ4YjkwOTY0NjZkYzM3N2VhIGxlZ2FjeS10cnVuaworMjM5NzMgNGIzZWZjNzUwMTM5NmZjMjAxZDYzODY0NWQ0ODhkZmVjN2RiZGI5YiBsZWdhY3ktdHJ1bmsKKzIzOTc0IGIzYTAwZDMxNjViZWUyMzA4ZTEyNTkzNTJlYjRjOWNlZGJhN2FiMmIgbGVnYWN5LXRydW5rCisyMzk3NSAyOTI1ZTI3YTI4MWM1MjFhM2JmMWFhMTQzMWI2M2RjOTlhYTM5ODcxIGxlZ2FjeS10cnVuaworMjM5NzYgNzk4ZjYxOTk3YzA4ZDVkMmQwNDFlZGJmZDE3NGJhNTFlODFmMjIzMCBsZWdhY3ktdHJ1bmsKKzIzOTc3IDQxMzNhYmVmNWFiYmQxYTBmYzlhZDgzMmU0NTIxNWMxNGUyNTkyZDYgbGVnYWN5LXRydW5rCisyMzk3OSAxODRiOGI5YTI2NTRjYmRmY2ZjZjU3YzQ2YjczNjkyMDZjNzIyNDE0IGxlZ2FjeS10cnVuaworMjM5ODAgZTkxMmI2ODNlZDNlMTUzNmYwYjRjOWY1ZTZlMWQzYjU2YTIwZjU0NCBsZWdhY3ktdHJ1bmsKKzIzOTgxIDMxMDQ1MGU3NGYyZjU3ZGRmZGJhYjJhZTY4YTkyYmIzNWU0Nzc0NjUgbGVnYWN5LXRydW5rCisyMzk4MiBhNDRjYzBjMjFjZmUzMTU0MjVlMzgwZTY0NmMwMWFkMmQxZTMzMzM3IGxlZ2FjeS10cnVuaworMjM5ODMgMjg5MDc2OWIxZTY5NjYyNGY2ZjkzZDBhOTgxZGM0MWJiYmM0ZGUzNSBsZWdhY3ktdHJ1bmsKKzIzOTg0IGE2YTRiZDJmMDZkMGY5ZmUyODQ3MTA4NDQ5NzhmNDU2YTNmYmY0YWEgbGVnYWN5LXRydW5rCisyMzk4NSA3ZjQwODk1MTk5MjZlNWM1YTE0MzMxNzI0NGNiNGFkYmRmM2MxNTI0IGxlZ2FjeS10cnVuaworMjM5ODYgMDkxZjk2NTZkNzliMzU5MThmOTA0MmNhYjY3OGVhYTIxODI1MWNhNyBsZWdhY3ktdHJ1bmsKKzIzOTg3IDVlNmY4MTg3YmQ0ODkzZjM5NTQ1MGIyZjFjMzg0ODVlZjc4MzA3YzcgbGVnYWN5LXRydW5rCisyMzk4OCBkY2Y3NjljMTJkOGI0MTJmYmRiNzE1Nzk1MjI5NDU0NGJkZWNlYjUwIGxlZ2FjeS10cnVuaworMjM5ODkgODQ3MTVkNTJkOTU0ZTlkNTA3OTQ3YjU2NWJkMDAwZDBiOTM0ZWJmNiBsZWdhY3ktdHJ1bmsKKzIzOTkwIGM2Mzg0NTkxZDg0NmNlNmExYjNkNjZjNzI0YTE3MzdlMzUyMzY0ZDkgbGVnYWN5LXRydW5rCisyMzk5MSA1ZTM0N2U0ZTA1YmY1ZWNjOGIwZGE0MjNmZDQ5MzRkNWE2OGRjZWU3IGxlZ2FjeS10cnVuaworMjM5OTIgYWFlZmMyZjIxYmFlZjFjZTM5ZTgyZDBiMzQ5NGZjYWFkNjFmMWZiMiBsZWdhY3ktdHJ1bmsKKzIzOTkzIGFjYjg1NGI4OTdiYjYxNTRmODQ5YTM5MGE2ODQyZWEzZGNiOTcyNDAgbGVnYWN5LXRydW5rCisyMzk5NCA2NzZmMTA2YTUwMDIzZDQxMGYyNWEwMDM2MWI3ZDQxMjM4ZjEwMmZmIGxlZ2FjeS10cnVuaworMjM5OTUgNmFjNDUyNDRjNDFlMGFlN2NkNTc3MGM1ODQ0MjUzM2ZjZDNjMGJmOSBsZWdhY3ktdHJ1bmsKKzIzOTk2IGYyMjQ2MzJkMDI2MDNmMWI2ODQzNmVmNDI2N2I5NDY1YjQ1ZGNiOGYgbGVnYWN5LXRydW5rCisyMzk5NyA3MTMwNzUwYTYyMjIyZTQ0ZmM0YjFlYzFjNDg0ZGUyNDY3MWE5OWNhIGxlZ2FjeS10cnVuaworMjM5OTggNTg3Yjc0ODU0ZjhjMDUwNDkyYmUzYTlmZWU2MDkxMThiMmNkMWExMiBsZWdhY3ktdHJ1bmsKKzIzOTk5IGFiZDcxZTg5ODQwZjc3ODQxZjA1NDhmNmMyZGFlOWExOGYyNzA0NGYgbGVnYWN5LXRydW5rCisyNDAwMCBjZDgzNWNhYTUwNmMwOTJiMTA0YTFmMjY2ZmY1ODYxNjRlYWI3ZTMyIGxlZ2FjeS10cnVuaworMjQwMDEgY2Q2MDAwMzlhMTIzZTBmN2I1NTczYWVhMGIyZWRhZjVlYzlhMzBlNiBsZWdhY3ktdHJ1bmsKKzI0MDAyIDczY2FiZTY2NGMxMWViNmJhN2JiMmI0MjE3ZjRjNzBjNmQ1MTVmOWIgbGVnYWN5LXRydW5rCisyNDAwMyA4MzU5YzExODlmNzMwMjUwNDlkZjkxZTBkZDBjNjJlYWI1NWQ2MmNjIGxlZ2FjeS10cnVuaworMjQwMDQgYjNiMmZhNzZhMzkyOWVjZWYwNmMxYjc5MzgwMWUzYTdlMjg2Njk4YSBsZWdhY3ktdHJ1bmsKKzI0MDA1IDYzNWZhMTRlZGE1MDlhODFlYjM1NDJjOTQwZTA0OWY1MTkwNWM0MzMgbGVnYWN5LXRydW5rCisyNDAwNiBiMDYyODA0M2U1MzdkYWQ3ODRhNTAxYmYyZjYyNjkwZDlmNGRkODdmIGxlZ2FjeS10cnVuaworMjQwMDcgZmFhMjcyNmRlYTM3MTU3ODM3YzhiOTI5NjJiMjA2Y2MyMTM2MDE4ZiBsZWdhY3ktdHJ1bmsKKzI0MDA4IGE3ODg0ZTdlZWNjOWIyNTg5Mzk5MTcxYzkxNTg3Y2IyZWIxMWNkYzUgbGVnYWN5LXRydW5rCisyNDAwOSAwMGE1ODFiZGVkZWJhZjAyNDJmNTFjOWRhYjc4ODAxZTk1ZmY1NDQ4IGxlZ2FjeS10cnVuaworMjQwMTAgYzdhYWM3OGUyM2I0OWMzMWJlMTk0NzNkZGI5ZGNhNDFmODgxMTNjMyBsZWdhY3ktdHJ1bmsKKzI0MDExIDNiODc3NDBkMWJiYzg1YTYyODg0NDU2ZGQ5ZTA0NjgyNzJiYmI5YjYgbGVnYWN5LXRydW5rCisyNDAxMiBhZDQ1ZDIyYjE5NWQxM2E4MjlmNTJhNDE0NzI5MzM0MWRhYzM3NmVhIGxlZ2FjeS10cnVuaworMjQwMTMgM2U0NjI1ODE4ZjVmZjU5NjRjYThlOWMwYWY4ZTkyMmRmZWZjMTA2YyBsZWdhY3ktdHJ1bmsKKzI0MDE0IGQ1ZjZiNGQ1ODM4MGVhYTVkNjRiN2VkOTJiYTc5MDE1YzI5OWZhMmYgbGVnYWN5LXRydW5rCisyNDAxNSA3ZGE0MTc5OTk1MTExMzA4ZjY1OTdmZjEzYmI3NzdlNmE2ZWY5NGYwIGxlZ2FjeS10cnVuaworMjQwMTYgMjNkMjMwZWY0MTViYTU2YTMyYjIzZTJmZjY3MjM1ODhkMGNjZDRlMCBsZWdhY3ktdHJ1bmsKKzI0MDE3IDgzNjBkNjQzMjcwN2M1Yjg3NDQzZTAzZDEzMjU3M2NlNjM5ODM4N2QgbGVnYWN5LXRydW5rCisyNDAxOCA0NjE3ZDNkNzcwYzU5OTBmYmIzMGQwNjhjY2UxM2U4MWU1MzA4M2VmIGxlZ2FjeS10cnVuaworMjQwMjAgOWY2Mjk1NWRlNGMzYTFlNzJiMGQyMTI0MmQwODQ5Y2QwMTI4ZDAxZiBsZWdhY3ktdHJ1bmsKKzI0MDIxIDA4ZGZkM2MyMmY0MWRjZTNhMTQ4YjZjMGEyYjgyMjdmNWNiNTRhZjAgbGVnYWN5LXRydW5rCisyNDAyMiA3NzU5MjZiY2YwNjkyNWY3MWViNzgxODY4ZThmZTUwZjBiYzE2ZGJhIGxlZ2FjeS10cnVuaworMjQwMjMgYzhiYTJkYjFjM2MyNGJjYWYwMWQ3NTQ5ODczZjdiYmU2NmFhZTE4ZCBsZWdhY3ktdHJ1bmsKKzI0MDI0IDg1MTA5YTYwOTliNWUxZjI3YjQzMzc2NmIzZDAyYjYyOWMwYzA5YmQgbGVnYWN5LXRydW5rCisyNDAyNSBmMmFmNDJjZjgyN2FiN2UzOTYxMWRiNmQ3Njc0MzMwYWQyN2Q1NzU2IGxlZ2FjeS10cnVuaworMjQwMjYgZWNkNjQ5MzE0ODJjOWYyZTc1NTE2Yzk3NmViNzE1OGZlNDYzODFiMCBsZWdhY3ktdHJ1bmsKKzI0MDI3IDI3MjMzNjY0OGQxZmYxZTJjYTFlMWRmNzU3ZTE4Y2I0MTRkNzJhNWEgbGVnYWN5LXRydW5rCisyNDAyOCAxN2Y3YzljMWQ2NmE1MTRhYmQ4ODIzMmQ3NzE5YzRhMTc1NDhmZmFmIGxlZ2FjeS10cnVuaworMjQwMjkgODI4YmYzMTc4ODBhMjA1ZTllNzQzMjA1N2FhY2MzN2ZkYmY0ZWVjYyBsZWdhY3ktdHJ1bmsKKzI0MDMwIDA1MGZjNTJhYjNkNDE1MjcyMGExNmRhOGM2NDlmMjFkYzBmZDA2ZTQgbGVnYWN5LXRydW5rCisyNDAzMSBhNGJmM2M1Y2M0NWEyYmEyM2M0N2E4ODk5OTQ5YWVlMGEwYjE5MTQyIGxlZ2FjeS10cnVuaworMjQwMzIgNWIyMzZmMzc3YTI1ODg3MWZkZTYwNmYyNzAzNTdmOGQzNWUxMTZlMiBsZWdhY3ktdHJ1bmsKKzI0MDMzIDZhZWFiMzgwMjkyZWQ0Njk5YzgyZmY5YWIwZmMxZTY2MTU5YjQ0YjAgbGVnYWN5LXRydW5rCisyNDAzNCAwODM0MTM2MjI1OTU5N2JhNGZmM2MxMjlmZmNmMWY4OWI1YjM0OGYwIGxlZ2FjeS10cnVuaworMjQwMzUgNmIxNGQyOWU1MzA4OTcwMmYwYjEzNThhNzk4Zjg1YmFmYTk1YThlNiBsZWdhY3ktdHJ1bmsKKzI0MDM2IDc4MWFlMTc2YmFjMmMyNTIwMDhmNGU1MWNlMmU3YTkzMjk4YTc5NDcgbGVnYWN5LXRydW5rCisyNDAzNyAzN2I4ZDkyZTEyZjUxOGRjNzBmYTE4YmRjZGM3ZTY0Y2FmNGIzYWFmIGxlZ2FjeS10cnVuaworMjQwMzggM2EwN2JkMmIwMzg2ZTFmM2IwZmZlODQ0ZmI4MWMxZTk4M2EyZjU0NCBsZWdhY3ktdHJ1bmsKKzI0MDM5IGE2YWYwMDkzNDdlMTMxMjg4NjljNWVmNWQ0ODcwOTI3YzhlYjk5MDIgbGVnYWN5LXRydW5rCisyNDA0MCBiM2Y0OGM1ZDZlMTY3NDgyNmIzYTM1OTk1Y2ZjMzY0MTU1NjI2ZTgzIGxlZ2FjeS10cnVuaworMjQwNDEgN2IwNTQ2ZWU0Nzg5ZWRkNjU3MDVhMGJmOWE5NDJjMDYwMDhkYzE1ZCBsZWdhY3ktdHJ1bmsKKzI0MDQyIDUyM2VjNzAyMThlNDkwYTZlOGI4MmU3Y2EwZTIyYmNkMmI3ZTI3NzYgbGVnYWN5LXRydW5rCisyNDA0MyBlYmE2M2RkMGMyZjVhOTJkZmU1MDQ2Yzg5OTU0NWM2ODJiZTAwNzNkIGxlZ2FjeS10cnVuaworMjQwNDQgMTI0NGVlMThiYWVjMzNmNDZmNmEwZGVkZTA5NGVmMjhhOWQ4Y2Q3NCBsZWdhY3ktdHJ1bmsKKzI0MDQ1IDc0NDEyZTU5YmZmODI2MTAwMGI1ZjY4NDU1NGFmOTNmNmE4OWM4YzIgbGVnYWN5LXRydW5rCisyNDA0NiA3NmE4NTc1MmQ0NTI0YzI0NDgwYjFlNzM1N2IwMzJlYTkwZWMwNzIxIGxlZ2FjeS10cnVuaworMjQwNDcgMTA0M2UxMGJlNzgwMDkxMjEwNDExMjE5ODMwMWE3NDdlM2M2MjBiNyBsZWdhY3ktdHJ1bmsKKzI0MDQ4IDc0NGExOTIyMGEzY2I3NmZlMzMwZGYyMmFlMDVhZjcxNTE4OTE2OWUgbGVnYWN5LXRydW5rCisyNDA0OSBhNmJiYTMxYjNjZDc3NTgxNDIxZGUwYzE0MTMxNTI0YmM4ZjRhMmQyIGxlZ2FjeS10cnVuaworMjQwNTAgNTdjNjFjNjIyNGEyZjRiNjBjNzI3OGU2YTNhYTM1YTUwN2ExNDg0NSBsZWdhY3ktdHJ1bmsKKzI0MDUyIDRiYjY3NTNlN2Q1M2VlNTdkNmQ1Njk1MzVlMWRmYTFkYjIyYWU1MDUgbGVnYWN5LXRydW5rCisyNDA1MyA2MTEyM2I4NjBiNDU1NmE0YWE3ZDZjZWQzOTI5NmEyODJmM2VlMWExIGxlZ2FjeS10cnVuaworMjQwNTUgYWIyZTMxNTg0OWE3YjZjN2FhMzE1YmZjODUxZmNmMjU1MzkxYTAyNyBsZWdhY3ktdHJ1bmsKKzI0MDU2IDYxMjI2ZGRhZGM5NzU3MjM2ODRjNTNjZmQzNzE0NTZiZjFmZmM4MTAgbGVnYWN5LXRydW5rCisyNDA1NyBiMWQ5MDI5ZTA5ZDE0ZDUxNzc1OGJkMDA3YWNiMDI2N2Q1ZDcyODViIGxlZ2FjeS10cnVuaworMjQwNTggYTJiMTFkMDBiNjk3NDY2YzI3NmI5MDNlODlkOTllODAyM2E1MzBhOCBsZWdhY3ktdHJ1bmsKKzI0MDU5IGE5MDAyZmIwYTdkNzlkM2I0Y2RjYzEzMTRhMTNhNjZlMzljMTBiM2MgbGVnYWN5LXRydW5rCisyNDA2MCA0ZGY2NTI3Yjc4ODIyMDc4ODg4ZjcwYjc1NDEyNTg3ZGQyNTg2NGNkIGxlZ2FjeS10cnVuaworMjQwNjEgZmViODA1MDlmYjIxNTA2MTgzNmRhOGNlMmM2ZWFkNTAwODUwMjZmNSBsZWdhY3ktdHJ1bmsKKzI0MDYyIDI1ZmVkMWQwOTYwNTM1ZTMxMDg1NTVlYTdkOTc5MTMxY2MxYmM3ZGIgbGVnYWN5LXRydW5rCisyNDA2MyA0MGRlODRiYzYyYWQwMjE0OGYwMmFjMjYxN2MxODI1MmMzOWQwYmY1IGxlZ2FjeS10cnVuaworMjQwNjQgOTYxYjI0ZjhlMWQ4Mjk4ZjdmMzVkODVhOTZlNjY3YTQ3NzUzOGNkMiBsZWdhY3ktdHJ1bmsKKzI0MDY1IGM5MWYxN2E0ZGM3YmYyMmU5N2FiMDJiOGJjNmRlMTY1NTEyNjZlNWUgbGVnYWN5LXRydW5rCisyNDA2NiAyZjdiNjkyNmUzOGRkMTI1NTY0OGU5NjliODY3YjA5MjFhYjI3YWRlIGxlZ2FjeS10cnVuaworMjQwNjcgZTBhZjI4MmY1ZGZhYzRhYjljM2M1YmY2ZWFiNWQ2ZDVjYzI3Yzc2NyBsZWdhY3ktdHJ1bmsKKzI0MDY5IDc5ZmNiYzMxYTAzZWM5ZGU0Mzk1ZWE0MDNhNDRiN2I2MTk5ZDdhNTggbGVnYWN5LXRydW5rCisyNDA3MCA4M2EzZTIxYTdjYzNmNDdhYjNiM2RjNmNiMWNhZjU3ZjYyYzlmY2JiIGxlZ2FjeS10cnVuaworMjQwNzEgNzNhYmUwYWY3ZTA3MGVhYzE3ODc2ODcxMmJkNDFhNDhmOTlkYWE3NyBsZWdhY3ktdHJ1bmsKKzI0MDcyIDljMjNhYmFiOTYyZGE1MGFmMDYyMTdkNTFlM2NiMzhmOWY0Zjk4MmIgbGVnYWN5LXRydW5rCisyNDA3MyBmYTk3Yzk5NzJkMWIzOGViNzkxYzQzNTJjMGZlZWFkNjAwZjIzYWRmIGxlZ2FjeS10cnVuaworMjQwNzQgNjEwYTY0NGZkNGMzYWJmNDJhZTJkM2ZjNTMwYzkzNzE1OTQ0MzIyNCByZWxlYXNlMjEtbWFpbnQKKzI0MDc1IGVmOGJkOGJlOThiZWIwYjVhMjQxM2RhNjA1ZGRkYzE5NzE5MDM0NTYgcmVsZWFzZTIxLW1haW50CisyNDA3NiBlZTcwZmFjOTUzNWI0NTA5YjU3YjdmMzI5Y2YwNDNiYWVjODM0MjZkIHJlbGVhc2UyMS1tYWludAorMjQwNzcgNzU2YjllZGYyNTRmYzIxM2Q0ZjIzMWEwOWVjZjhhOTM5Y2ZkZjdkYSByZWxlYXNlMjEtbWFpbnQKKzI0MDc4IDUxZWFjYWRjODE1YTI5NjA1ZmU4ZDgzNDMyZTkzYjAyMzNlOTU4MDUgcmVsZWFzZTIxLW1haW50CisyNDA3OSAxMDQyMjNiMzIyNmE0MGFiM2I3MWQ0ZjRlYjE0MDg1N2E0YmIwMjhmIHJlbGVhc2UyMS1tYWludAorMjQwODAgMDYyOTY2NmU2NWM1M2Y4ZDRjYjQ0ODM4MWQxOTkwZTk4MzFmZDU0MiByZWxlYXNlMjEtbWFpbnQKKzI0MDgxIDA3NmU1ZTQ5ZTI3ZDM5NDYyN2E2ZTFhZjBmNDAxM2QwNmE3ZjcwNGMgcmVsZWFzZTIxLW1haW50CisyNDA4MiA0MmYyMmVhNmEwZjEzNjEzNzNlZWJhZDY1MzkxY2E1MDZmYTYxYjlhIGxlZ2FjeS10cnVuaworMjQwODMgMDI2YmYwYWI2OGE1MTViNGQ3OWEzOWY3NzkzZjQwMGZjN2NmYjNiZiByZWxlYXNlMjEtbWFpbnQKKzI0MDg0IDQ2NGQyMTNkYTg4OGM3ZjJmMTE2MmMyMWVlOTY2Mjc1Mjc5ZTM4OWIgcmVsZWFzZTIxLW1haW50CisyNDA4NSA4MjFlMTQyZTE5ZmE0Y2Q4MWIwYTNlZjU0ZDNmNGE1YWU2YTRmMDk5IHJlbGVhc2UyMS1tYWludAorMjQwODYgNmQzOGZiYTA1ZjM1NzRlODI3MDFjNzRjZmFmNjQ4YTVmZWRiMjFjMyBsZWdhY3ktdHJ1bmsKKzI0MDg3IDhkNGI2NjQyYTYwNGEwMDFiN2MyYzU5ZmRlNzQ2N2Y0YzNkZGU3NTggcmVsZWFzZTIxLW1haW50CisyNDA4OCAxOTY1MTE2ZDFhZWNhOTQ0YjFlYjViNWYxMDI2MTRjNTZkZDg3NjQwIHJlbGVhc2UyMS1tYWludAorMjQwODkgZjRlZmYzMjQ3YzY2YWM5ZjgwOTg0MGY4ZTI3OGQ2NTcxN2QyYWQyYiByZWxlYXNlMjEtbWFpbnQKKzI0MDkwIGVmMWU5YzhhYTNkZGZkYjY4MDQ5MTYyNmI1MTM5OTczZmEzOWY3Y2UgcmVsZWFzZTIxLW1haW50CisyNDA5MSA1N2FiNjVjMmYxNzA3OTFkNmUwYWM0MWJkOWY4NTdlNmUwMDkxODZiIGxlZ2FjeS10cnVuaworMjQwOTIgM2UwOThhOTYzNTYxZDc3MDM3OTIwODY5ZGRmMTZlNGQ0MzZkMTU2MyByZWxlYXNlMjEtbWFpbnQKKzI0MDkzIDNhNzQ4Y2FhMDNiOTFhMTUwYzVhZmIwODIxYWNjMTc0OGUzMmYyODkgcmVsZWFzZTIxLW1haW50CisyNDA5NCA5YWRlZDYyMzVkODkwZTkwYTIzNzM4ZGZkOWQ4NWIwMjk1ODc5YWRkIGxlZ2FjeS10cnVuaworMjQwOTUgMjYxYTcwYzBhYTc5MmMzYjY4NmU3NDZiZTIwOWQ2NzQ2NTEyM2Y4YyBsZWdhY3ktdHJ1bmsKKzI0MDk2IDUzNDZiNjkwNmQxYWY4NWU5MWEzZjcyMDNkYmMzODliOWNlOTdhODggbGVnYWN5LXRydW5rCisyNDA5NyBjYTQxOGE1ZmE0NzFjYjhkMjU5NzNlYWM5YmIwODNhNGRlMTdhMGQ1IGxlZ2FjeS10cnVuaworMjQwOTggNjU2YzNjODRkZWJlZjRlZjdiOWM0NzdkMDU4OWUyOTQ1YTUwMTkzZCByZWxlYXNlMjEtbWFpbnQKKzI0MDk5IGM3YWEzMzJhMmZmYWZiNzM0MDRkNTdjNGQyMmUyNzVlMTg3YWUwMGMgbGVnYWN5LXRydW5rCisyNDEwMCBiM2Q4ZDI2MTViMjNiZjRmMGRiM2IwOGY3YTg0ZDI4YTQzODU0ZWM0IGxlZ2FjeS10cnVuaworMjQxMDEgZGVmMmExMTlkNWNkYTMxYTQ2YmViYjZlZGM1ZmI2NWNjNWNhMjRlZSBsZWdhY3ktdHJ1bmsKKzI0MTAyIDM3NTEzNjZjMmYzOTMxY2E5ZGIyODExM2Q2N2VkNTVhZWZlZTdkNzEgbGVnYWN5LXRydW5rCisyNDEwMyA5NTIwMTE1MzI1MWNiYjBiZjkzNDVmYzRmYjc5ZDc3ZmZlYzUwNTgxIGxlZ2FjeS10cnVuaworMjQxMDQgNmYyNTlmN2JiZWQ4MGU0YTVjYTlmMzJkNjJmMGEwYmVkYWExM2M3YiBsZWdhY3ktdHJ1bmsKKzI0MTA1IDE0ZGM2OTNhZjUzMjE5NTY5OWE4MDM1ODI0ZjE5YWExM2RmNmMyNGUgbGVnYWN5LXRydW5rCisyNDEwNiA1ZjI0YjIwZTEwM2QyMzJkOTg0Nzk1YzRiZWMxNDM3NTkwZGU2ZTgxIGxlZ2FjeS10cnVuaworMjQxMDcgZGFiNTJkYmQxMmFhMTQ0NGJlOTc3MzhkYjg0ZTkyMTllYWIzMjBmMiBsZWdhY3ktdHJ1bmsKKzI0MTA4IGQxMzllYzQ5ZDIwNGQ3MDc4OWY4NDJmZTcxZDcyMTNlZjhkY2NlNTkgbGVnYWN5LXRydW5rCisyNDEwOSA4NjA0NzI4NzdkZGExNTExMWI4MTFiNGRhNDMwZGM5OGNiNjg2ODIxIGxlZ2FjeS10cnVuaworMjQxMTAgYjBjMzEwY2RiOTg2OWFmNjkzZTBiYjJmYjY3Y2I2NzM5YjNkYzBlZiBsZWdhY3ktdHJ1bmsKKzI0MTExIDNmYmQyNTNkZWE1ZDRhOWM2Zjg1M2YyYjRiZGE0Mzc5ODgzOGUxNjAgbGVnYWN5LXRydW5rCisyNDExMiBjMWViYzAyODVhNWU3ZDFiMTljODA3OTA4MGI2YmJjNzM2NDJiYTMzIGxlZ2FjeS10cnVuaworMjQxMTMgOTgxZTU0NjhjOWI1MzFmZWQ0OWQwMDIzMzViYjU2YzI5OWU0NTA4OCBsZWdhY3ktdHJ1bmsKKzI0MTE0IGYxODdkMjQwNTZmNDhkODU2ZmFjNDdhNDI5OGMyYTYyMWNhNTBkOWUgcmVsZWFzZTIxLW1haW50CisyNDExNSBmNmM3NDYwY2NhZjg5OWYxMjM4OGZmOGQ0OGIwMjhlZGQ2NjIwYTdmIGxlZ2FjeS10cnVuaworMjQxMTYgMzgwM2FmOWQ4Nzk2M2Y4YzI5N2I0NzI0NmY2MWZiMGFmODUwMWY5NiBsZWdhY3ktdHJ1bmsKKzI0MTE3IGVhY2Y4MWRmNmM0Mjc1NmRmYmMxZDczNjI5NzkxZTQ4ZDIwNWFiN2MgbGVnYWN5LXRydW5rCisyNDExOCA5MTZmMTkxZmNmZjQzZjA1YjY0OTVkNDA0NThjZWRjYmIzZmNkZjhjIGxlZ2FjeS10cnVuaworMjQxMTkgOGQxNGY1MzRhNWMyNzZmNjljNWZiOTAzYTVkOTZlMjQzMzRkMTA2YiBsZWdhY3ktdHJ1bmsKKzI0MTIwIDY5OTBmZTljNDBmNmE3YTI4YjBlOTBhMjQ5OTEzYzJjZmMwNjMwMDEgbGVnYWN5LXRydW5rCisyNDEyMSA0YWRlNzZhNmIyNDViYTc4ZGJlZTg1OGJlOTAzN2YzYjJhNWRhMjA4IGxlZ2FjeS10cnVuaworMjQxMjIgZTEwZDkwNzBlMTA3MzJjMTFlYzNhYjUzYzRlZmFkYzQ3MTY5ZjM1MiBsZWdhY3ktdHJ1bmsKKzI0MTIzIGVjNjMyYTQxZWUzNWQ5YjY0NjEzNGRjYWExOGE1OTUyZWI4OTMwY2EgbGVnYWN5LXRydW5rCisyNDEyNCBkOWE5ZDkyNjI0ZGI5NzQyOGEzNGMyYWVkYmRkZTRkMGY5NTZmOTdhIGxlZ2FjeS10cnVuaworMjQxMjUgNDA0YWVlY2E1MWU5YzQ1MWExMGJjYzNhMWFmZmIwNTQ0NzAwOTI1OCBsZWdhY3ktdHJ1bmsKKzI0MTI2IDI5NjJmMDE5MjRjOTk3YTM1Y2Y5MmVlZjRjYWU2NDBkZDZkMGRkZTkgbGVnYWN5LXRydW5rCisyNDEyNyBmMzRhOGRmOGJiYTQ2MDA4OGIxZWU5MzQxYzQzNWE4ZTc1NDk4ZmY3IGxlZ2FjeS10cnVuaworMjQxMjggMDUzZGJkOWI1OGRmMDNjMDAyMzE5N2Q4MzA5NWJiZjA4NmViYzUxZiBsZWdhY3ktdHJ1bmsKKzI0MTI5IDc3YmIyYWUwNjdjMjU4Y2Q0YTdkNjZjYWE5M2QxYTI3MWNkNzNiYmYgbGVnYWN5LXRydW5rCisyNDEzMCAwNDQ0ZjU3NmM5MmIxOWU4MWMyNDU1ZGM2MjA1YjEwNDNjNzU0Njg0IGxlZ2FjeS10cnVuaworMjQxMzEgNjM5OGQxMDU1ZmNmYjlkZTJjZGQ4NjVjOGE3NDIwOWE4MmUwYzY5NSBsZWdhY3ktdHJ1bmsKKzI0MTMyIDhjZjFkOTI2NjkxMTMyOGU4M2Q2ZTQ4Njk5MmRhZGNlMDBmOTY3MWYgbGVnYWN5LXRydW5rCisyNDEzMyBkMWIzY2E4OWQ3OGI0OWRiZGNmY2I1YjA5MmRlOGUzZjJmNDk5N2UzIGxlZ2FjeS10cnVuaworMjQxMzQgMjQxMDVlOTg5ZjE3OGYyZjYwOGU1MWQxZGYwYTdkYmY5OTAyZjJkNCBsZWdhY3ktdHJ1bmsKKzI0MTM1IDE1YzkyNGExMWFlY2M0ZGU0YTY3OGQ5NDM5ODcxY2U4NGU4MDgwYzcgbGVnYWN5LXRydW5rCisyNDEzNiAwY2FlYTVmZWZhNWMxYzdkZGU2OGIxNzI1OTgzYWVhZmM0NzhmNzEwIGxlZ2FjeS10cnVuaworMjQxMzcgNWE0N2I1OGE0NGJiNGU0YWIxM2MxYTU1YjYzODM5NzJkOWViZDY1MCBsZWdhY3ktdHJ1bmsKKzI0MTM4IGQ5YjliNWI0ODE1YjYyMWRjZjMyYjBjNDY2YTkzYjlhOGVkZmM3OGIgbGVnYWN5LXRydW5rCisyNDEzOSBkNmZmMWRhYWUzOTgxNzY0NmU3OGE4NGI0MDdjZTk4MTY4MTRlMTU3IGxlZ2FjeS10cnVuaworMjQxNDAgODk1NzM0MWY5OGY4NDdkNmY0ZDYzZGUwZDQ2MDdlNmY1ZGVlOGE1YSBsZWdhY3ktdHJ1bmsKKzI0MTQxIGY1NDgyOGViOGUwNzY4OWExZjVkZDU5NjBiMDEwZjk3ODNlODFhODggbGVnYWN5LXRydW5rCisyNDE0MiBlYmJkYzM4ZWIxMWM4YThiZjlmMTY1ZTk1NjhlZWEwMWM5YjdjODZkIGxlZ2FjeS10cnVuaworMjQxNDMgNDBhODg5ODlkNmNiYTQ0ZTg1M2FlMmVhMDk1MDg2NGFhYzI1NzQ3MyBsZWdhY3ktdHJ1bmsKKzI0MTQ0IDJkOWU0MWE3MmE2OGIzOTI0YTVlYTc3OTg2Y2M5YjFlMGZlMTBkNzUgbGVnYWN5LXRydW5rCisyNDE0NSA3YmIzMWZiNDgzYmM4NjdiNDQ3OTJhMzk1OThjNTg2OTMzMjg4ODBiIGxlZ2FjeS10cnVuaworMjQxNDYgYThhNjYxMjBiYWRlZGJhZGJmOGJjMThiOTM1OTYyZmU3ZTdhZTJmZiBsZWdhY3ktdHJ1bmsKKzI0MTQ3IGY1NzZmZmQ1Nzk2NmI1N2RhYmQ2NWQ2NTJiNzEyMzlhNjIyOWI1NjUgbGVnYWN5LXRydW5rCisyNDE0OCA3ZThjZGU0NjRkYjQwZTk5MjhmYzhjYjQzMjViNjQwY2RiZTY1N2IzIGxlZ2FjeS10cnVuaworMjQxNDkgN2UyNDdmMDgzN2UyNjk1NDRkMmJhODU4NmY4NTU0Y2RhNmY2NmI3YSBsZWdhY3ktdHJ1bmsKKzI0MTUwIDgxMWFjZTNjNDBkMDFjMmFlZWIwZTQzYmU4ZjZiM2ViYjExOTBmYzYgbGVnYWN5LXRydW5rCisyNDE1MSAxNzljZDM3MGI2MjFmYTI0ZmMzNmM4M2NmMjY3ZTQ3ZDlkMmJiODJjIGxlZ2FjeS10cnVuaworMjQxNTIgMjc4NzRjODYwMjY4MzczMTE5MThkYzY0MWNjNGNiNTAyZGI4NGM5NSBsZWdhY3ktdHJ1bmsKKzI0MTUzIGQ1NGUyOTQ0ODRiMmJmZGIzYjI3MWEwNGM4YjA4NjFjZjIzY2YxMDEgbGVnYWN5LXRydW5rCisyNDE1NCA3MzJlYTIyZWI1MTgyZmQzMGEwZWIyN2YzYzA4ZGZkYjYxNmQ1N2JkIGxlZ2FjeS10cnVuaworMjQxNTUgOGE3MmVmNmI4MTE4ZDdjNWFjNzdhNDFlOGU1NjkxMTk2NTAyYjcwZSBsZWdhY3ktdHJ1bmsKKzI0MTU2IGVlZjliZDg3ZmNjMDc4ZDg4OTYxMWRmMjU5Yjc4ZTBmOTYzMDkwODIgbGVnYWN5LXRydW5rCisyNDE1NyAxOTgxN2E0ZmEyYjZjZmJiYjU1MGFmN2RkYTA4NmEwYTdmNzBkMTk3IGxlZ2FjeS10cnVuaworMjQxNTggODlkMTcxZjZiYzdkNjMwNTgyNTcwNDg3MTg2YmQ1MTQ5NDAzMzc5OSBsZWdhY3ktdHJ1bmsKKzI0MTU5IDZlZTE5YzE5YjJjMzczYTgzNjNiN2M1ZjBmMGNhMTQwN2ViODhjMTYgbGVnYWN5LXRydW5rCisyNDE2MCA1YzQzNWI1YjU5ZGY5MGVmMTUyZmNiOTljNzY0MzRjMGU3NjVmOTllIGxlZ2FjeS10cnVuaworMjQxNjEgYTYwYzFlOGIwYmJiZWJhOGYwODI1ZjA4ZDFhNjlmZTk1MWFkY2FmZCBsZWdhY3ktdHJ1bmsKKzI0MTYyIDdmNTYxZmU5ZWRmYzIyODNjNDkyZjJhOWI4NWY3N2E1NjgwYTE2YWEgbGVnYWN5LXRydW5rCisyNDE2MyAwYzE3NTE1YjA1ZGI4YjdhMmU0NmNmNmFiMjE3MTVhOWM2NzJkZWE5IGxlZ2FjeS10cnVuaworMjQxNjQgMmNkMmFlNGRlMzBkOTIxYWIyZjRmNGMyNDRlYzVmYmE0NWZhNjcwZSBsZWdhY3ktdHJ1bmsKKzI0MTY1IDY0MGYwMjg0ZTMwYWIyOTRjY2FjNTgzNTI0NjgyYmE3NGE4MzdmY2YgbGVnYWN5LXRydW5rCisyNDE2NiBlMjMxNDBmNmZiOTAzOTZlMzM0NzZhOTIzYTg0OWQwNjExM2RiMWNlIGxlZ2FjeS10cnVuaworMjQxNjcgNDFkMmQwMGEzMWYxNWQ5MTU4ZGU1NmRlY2NkZjFiYzQ4ZGEwMDNjZCBsZWdhY3ktdHJ1bmsKKzI0MTY4IGY0Njc5ZjZhOTU4Zjk1NGU5NmNkZmRmOTU2MDQwZmNiODg1NzQ0OTAgbGVnYWN5LXRydW5rCisyNDE2OSBkZTRmNmIxNGQzODBhY2QxMzVmZDE3ZjJiMzg5Mzc2MGZhZmNhOTZhIGxlZ2FjeS10cnVuaworMjQxNzAgNWI2MWEyZmY2OTZkMGY1YTg2NGE0NjQ4ZTIyZGY3YWE3YTMwMmVmYSBsZWdhY3ktdHJ1bmsKKzI0MTcxIGI1ZmU5YTk0MTRmY2E2NmI5NmY1NzIzYmY3OWI4MGI2MzA0OTZlZTcgbGVnYWN5LXRydW5rCisyNDE3MiBhZjM2NzM4MTJlMzM2MTJhMWFiYmY1Zjg4NGMxY2ZkMGFiNGE4YWE2IGxlZ2FjeS10cnVuaworMjQxNzMgZTE4NGJiZDcxNjdjM2YwNDdmOWJkMjQxY2YxMDRiM2Q4YmNkMjliMSBsZWdhY3ktdHJ1bmsKKzI0MTc0IGMzZDNkYzgyNzY0YzlmNGExOWUxMTExYmNmMzU0N2JhNjljYTkxOGQgbGVnYWN5LXRydW5rCisyNDE3NSA4NzIyYjBhYmVhYzYyNzhlZmZjOGU3NjFmOTY3YzdjMjliZjQxZTNkIGxlZ2FjeS10cnVuaworMjQxNzYgMGI2MzMyYzJhYmEwMWNhY2U2NzZjNDM2ZTViMTllODg3N2FkMDUwOCBsZWdhY3ktdHJ1bmsKKzI0MTc3IDM1ODY0ODg3M2FkZWEyZGJlMGJkNmY5MWMyMGE0NzdlMDM2YTdhN2MgbGVnYWN5LXRydW5rCisyNDE3OCBkM2YzZDIxYWMwNGJjOTM2MzI4ZDkwNzYwODBjZWE1NjljYzdjZDBmIGxlZ2FjeS10cnVuaworMjQxNzkgYmZjYzJlZDljYWJhMjdlZDQwMWYzMDNjNWY5YjVjODZiZTk3ZmNjYSBsZWdhY3ktdHJ1bmsKKzI0MTgwIGYyYzc4OGFkYmRiYmFmM2I0NTgxNGYwODIyYWE1ZTc0MWEyNmE5ZjYgbGVnYWN5LXRydW5rCisyNDE4MSBiMGE2ZGJjOTAwNDcwNjM5ODc0Y2YyZDg0ZjYyMDhkZmI2MjA1ZjNjIGxlZ2FjeS10cnVuaworMjQxODIgNjAyN2ZkZjFlYmRhM2FjMDk5YWVlNTNlZDQwNTEwNGM1NDlhMzFkOSBsZWdhY3ktdHJ1bmsKKzI0MTgzIDMxNmZmZmQ4MGIxNjFjOGQyM2Y0OTFhMzE3NGNiMzhhN2ZhZGE5MWUgbGVnYWN5LXRydW5rCisyNDE4NCA4MGJhYTI3YmYwZWMzMTY1Mjc5ZjQ1ODE2MjUwNjg5NDFkNDQ0NWIwIGxlZ2FjeS10cnVuaworMjQxODUgNjY5ZWRkZjQ3MGJhZGQ2ZTc3ODczYjJjY2U2NWYzMzE3YWFlNjBhZCBsZWdhY3ktdHJ1bmsKKzI0MTg2IDgzNDYyNTVjY2E3YzdhOTEyZjhkZmY2OTQwZDU0ZDVkM2Q0Y2YxY2QgbGVnYWN5LXRydW5rCisyNDE4NyA1NWEwNjBmNDE3M2Y3MjA2NmQ2OWM4MDQ0NzliZDIxMDkyMGU3NGQ3IGxlZ2FjeS10cnVuaworMjQxODggMDZkOTViNjg3N2M0NWFhZjk5MGRjYzliODAzZGZhMjY2YTY0NTU4OSBsZWdhY3ktdHJ1bmsKKzI0MTg5IGQ4OGRkNWMyYjI4MmI5NTA2MTQ1ZmE2ZTU2ZTUzMDI0NTRkNTNiNmIgbGVnYWN5LXRydW5rCisyNDE5MCA5MzI1M2M2NWQ4NjMxMTVjZWY1NTUwMGZiM2E0OTI5ZjJmNWQ1MzFkIGxlZ2FjeS10cnVuaworMjQxOTEgMjNhMjA5NDg0ZjAyOGU2NjFlODRlMzgyOTE2OGM5ODc4NjEzN2FkNSBsZWdhY3ktdHJ1bmsKKzI0MTkyIGI5ODUwYzQ0NzU2YjNjNzhjMGI5YWVlZDU3ZTVmM2M0Y2E3MTk4ZmEgbGVnYWN5LXRydW5rCisyNDE5MyAyMDAxNDcxNjU1NmI2YmJiYWE2ODIzMThjN2U0MjkzMTQ2OGI2NjU4IGxlZ2FjeS10cnVuaworMjQxOTQgN2I1ODY0OTQ3YmFmNmNjOTM0ODk1MzY0MWFlYzdjNTUwMTJjYjMwOCBsZWdhY3ktdHJ1bmsKKzI0MTk1IGIyMWI0MjMzMGU0MDIxOTg5OGI3NzE0NGIxODNkYjM5NTkxMDJiZmEgbGVnYWN5LXRydW5rCisyNDE5NiA5MDg3MWZhNDNmNGUwYWUwMTE0N2I0MTdlOTg2MmFhMDJhNGNmZjE0IGxlZ2FjeS10cnVuaworMjQxOTcgOWU4ODg1YmJkYmM5NTMzMWJjNGRkODcwZjEyNjA3MDc2MjU2ZjBhMSBsZWdhY3ktdHJ1bmsKKzI0MTk4IDdhOTkxZDAxMmNkNjMxY2ExMjA0MDFmOTliYmNiMzU1MDI5YWY2NzggbGVnYWN5LXRydW5rCisyNDE5OSA5OGRiYjA3OWM1ZDQ4YzFjOWM3YzlhOGQ0MjNmNDc0NWE4NGQ1NTE1IGxlZ2FjeS10cnVuaworMjQyMDAgMjFmYTc1NzkwODIyMjNjNzY1MTRiMjlmYTAyZGUyYmNjMGU2N2UzNiBsZWdhY3ktdHJ1bmsKKzI0MjAxIGVlMTQzN2Y1ZGUwMzMyODg5ZDVlODM0ZWU3ZjQwNWYwZTg2NDE1YTYgbGVnYWN5LXRydW5rCisyNDIwMiA3Y2VkYmZhYzc0NmI5NzczZDI0OTlkNTc0N2JhMjczZjVmMTkxZDYzIGxlZ2FjeS10cnVuaworMjQyMDMgNWMwMmQyMTVhMzhkYjkwMjY4NDFjYWUxNTMwMDllYzk0MjM3ZWFmZiBsZWdhY3ktdHJ1bmsKKzI0MjA0IDJiNWQzMzI5ZDdlMmE0YmU5M2M5MjI3ZTY2N2VjNGY0OTBiOTNjOGEgbGVnYWN5LXRydW5rCisyNDIwNSA5YWVkNzQ1Mjg2NjFmNzI1Mzc2YWM0MDI2M2QwYmJmMzA3NDllMjk1IGxlZ2FjeS10cnVuaworMjQyMDYgZmE3ZTBkMDBjODI4ZTQ1ZTQ2ZTlhNzU5ODBlY2MxMDUzYjZkZjE4NSBsZWdhY3ktdHJ1bmsKKzI0MjA3IGNkNjA2YTU4NDkwM2U0ODE1ZWZiZGI1MDUyOTMxZDdlMjhlYjA2NDcgbGVnYWN5LXRydW5rCisyNDIwOCAxOTc1MDVlNjc1MmEyNTRkYThiNTQzMDBmNWZjOWZiZTNlMTJhODQ4IGxlZ2FjeS10cnVuaworMjQyMDkgZWNjZTVkN2RhNjA3ZGU0YWYyOTNjZTRlMzk1ZjEyMTZjMGU5ZmUyYiBsZWdhY3ktdHJ1bmsKKzI0MjEwIGJhOTQ1NWZjNGM4YjBlMjViMmRhNjQ5NTMzNjhkODI2ODAzMTkyZmEgbGVnYWN5LXRydW5rCisyNDIxMSAwYjY0NTIwYzIwMGM4OGM3ZDRlNDVjMDM5OTBkZDY2ZTVmODdhOGNiIGxlZ2FjeS10cnVuaworMjQyMTIgZTA1M2U0NGY5NjY2ZmY4ZGE0NjdkOTk0MzlkMmNlMTQ5YzU5MjdmOCBsZWdhY3ktdHJ1bmsKKzI0MjEzIDEzYTE4Y2JmZmQ5YzcwYmNiZGMxZDIwM2QwMWYxYmUxMzY3ZTBiODQgbGVnYWN5LXRydW5rCisyNDIxNCA1NDBlNTMyNWZjNmIwOGRiMjIwNDMxNDVlMmM2YWIwZThjNjFmMjU5IGxlZ2FjeS10cnVuaworMjQyMTUgMTNkZjhiNmMyYjgwYzc1MjgxNjIyZGJjYzAzMzNmNjlmMTE0OTkxZCBsZWdhY3ktdHJ1bmsKKzI0MjE2IDQ1Yzk1MmQyYTYxMTM1MjMzZjIxNzRkYjBjODZmMzNkMmY5NGJiNDAgbGVnYWN5LXRydW5rCisyNDIxNyA1ZTczNWYxOTdjYTY3ZGJmODZjNzgzOTU3MDYzYzU1MjUzMmMzNDc5IGxlZ2FjeS10cnVuaworMjQyMTggZDNkZDBjMmExNzcxZDg1ZmVmYWI2ZDkyZTM5MWU2NzgxMzkwZGRiYiBsZWdhY3ktdHJ1bmsKKzI0MjE5IGU0ZDM4MGY1ZjI5NzY2NDFiNmI2MmY0ODY2OGUwNjMzZTQ2MWY4MGEgbGVnYWN5LXRydW5rCisyNDIyMCBjM2IzM2VhZDM1NDZlZjQxYjk3NDFmYzdmMzNiNGViNmUzZDgwOWUwIGxlZ2FjeS10cnVuaworMjQyMjEgM2M1ZDBlZWExYWUyYjIyOGNhN2E4YzhjZjY5ZDE0Mzc0ZDRlMjExNyBsZWdhY3ktdHJ1bmsKKzI0MjIyIGVmMTJjOWRkZWZhNzA1NjAzYjkwMzRlNWE2NzM2MjdjNzdkNzJiMWUgbGVnYWN5LXRydW5rCisyNDIyMyBjNTU1ZjFlN2M0YmU0ZDkzZDM5ODZhMjlkMjdjNzNlMTI4MTRlNDA3IGxlZ2FjeS10cnVuaworMjQyMjQgOWJmYzMxY2E4MGYzNDJmYTI0NjdlYTE2YTNkNjY5MjY1NWMzZDVhNCBsZWdhY3ktdHJ1bmsKKzI0MjI1IGQyN2NlOGZlNDNmODM5OTFmMzE0NzJlNGU3MzNlOGJlOTNiMzdlOTAgbGVnYWN5LXRydW5rCisyNDIyNiBjM2IwODMxOTk1OWM0Y2EwOWQyZDM1MGM1OThjYjk5ZTM2NWJmNDE4IGxlZ2FjeS10cnVuaworMjQyMjcgMGQxNzY3ODQ0YzRiNzA3YTI0YjBhZjhmZjE0MWQ4ZDIwYmQxNjVlNSBsZWdhY3ktdHJ1bmsKKzI0MjI4IDc3MWIwMjliZGI4YTE4MzZjY2YwZTVjMDJiZjhiNGU4YzQ4YmI0MjAgbGVnYWN5LXRydW5rCisyNDIyOSA5ZWRlNGQ2Y2M5ZGU4ZDVlZGYyMDA5Zjg1MmFjZWYxNDEzN2MzNjhjIGxlZ2FjeS10cnVuaworMjQyMzAgYzNiM2UyZTQwMDM1ZWEwZTdlMjlmYWU3YjNkNWIxMDIyZjkzMGZlNSBsZWdhY3ktdHJ1bmsKKzI0MjMxIDYxNWE0ZjU2MDI2ODUxMDY4NzMyYzE2NDE3ZWZmOGEzN2EzNDNhNzEgbGVnYWN5LXRydW5rCisyNDIzMiBmNzljZmQwNTRmMjFiODFjOWUyMzdlNWVkMDViYjlmMjY0MzU3NDcyIGxlZ2FjeS10cnVuaworMjQyMzMgY2E4YmVjNGIzMzgzNzQyY2YzYWJlMzhiMTEzNzhmYTU0N2U5MjFlNCBsZWdhY3ktdHJ1bmsKKzI0MjM0IGExM2Q3Y2QwZWY3ZjI3NTExZDE0Y2Y2YjMyMzI4ZTE0ZDUwYWMxOTYgbGVnYWN5LXRydW5rCisyNDIzNSBkYTVmYmMxZWIxZDA1ZmY5MWM2MTY0YTI0MzQ5ZDQ2MmEyYTQxNDZhIGxlZ2FjeS10cnVuaworMjQyMzYgM2Q1MjJjYmI3YTgxZjE5NjViMjc3Yjc1NDhlMzVjNmFlNTEwY2VlYyBsZWdhY3ktdHJ1bmsKKzI0MjM3IDMwMGI2OGQ2M2I5ZjRjMjViYjViMDYyM2E3MjM1NWM2ODhkOGI3OWIgbGVnYWN5LXRydW5rCisyNDIzOCBhM2M1N2U1OWI1YTgxM2JmZGZiNGNhNzE3MTUzNWNmNmRlYTMyOTliIGxlZ2FjeS10cnVuaworMjQyMzkgM2U5ZDZlOWZiZTU4ZjZhNjM2ZGNlOTQ3MDY2YzkyMDI1MTE4NGZhZSBsZWdhY3ktdHJ1bmsKKzI0MjQwIDljYTdlNDZmYWEyNGJjMjk4NGE4ZGZkZGQxNTE2NmM2ODY4ZDcyODYgbGVnYWN5LXRydW5rCisyNDI0MSA1NTQ1ODE4ZjU4MWE4MmY2ZDYzM2IxYzZlN2Q5ZWMyZDM2MWU4MzcxIGxlZ2FjeS10cnVuaworMjQyNDIgOTBhMGYwOTUxOGM4ZjZlZjJiNTFmYTQ5ZGY4NTY3OWFjMTRjZGNjZSBsZWdhY3ktdHJ1bmsKKzI0MjQzIGJiODcxNjA5NWE4MWE1Y2Q1NTY1MmFjYmM2MWZlYzBlY2E1ZGUwYzIgbGVnYWN5LXRydW5rCisyNDI0NCBmMWNmZGNhNzNmODY5NTg3N2M4YmU5ZWY4ZWIwZWI0OWExOGYxNGY1IGxlZ2FjeS10cnVuaworMjQyNDUgYzFlY2FmZDE1NTYwYjUxOWIxZTY0NDE5ZTUxZWNlYzRhNjFjMjZmMiBsZWdhY3ktdHJ1bmsKKzI0MjQ2IGUxNjdiODJjNjQ0NDBkODBjMGRjYTdmN2I3ODI0NmI0MDVlNTQ5NTcgbGVnYWN5LXRydW5rCisyNDI0NyBlYmE4Yzc3MWRiNjRjYjUwOThhMmE3YjFmNWU4YTYxYzcwNTgwZTBkIGxlZ2FjeS10cnVuaworMjQyNDggY2U2OWQ0ZWUyZmEwMGUxN2FmNjVjYzg1NzI4OTljNDY5Zjc2Njg4MCBsZWdhY3ktdHJ1bmsKKzI0MjQ5IGFjNTE5MTZiZmRhMDdlMmQ4OTBjMDkyOTMxYmUyZjQ1NDM0ODVlYTYgbGVnYWN5LXRydW5rCisyNDI1MCBmMTY3MWE2MTAwNzk5Mzk2MGFlM2RlNDcwMDZiY2U3MjRmZTNlMzc1IGxlZ2FjeS10cnVuaworMjQyNTEgZTcxY2NmYmYzNmJiOGRlZDYyODQ2MmRhZjU0NzQ5YzkzNTY3ZjExOCBsZWdhY3ktdHJ1bmsKKzI0MjUyIDA3ZjFkMmM1ZGQwNDFjOGQ4NDExOGY0YjZhNjZjYTQwYmQ4ZGEwZmUgbGVnYWN5LXRydW5rCisyNDI1MyA5NWUzNTg0YWJlNDU3NmUxZGM0ODJiNjI3NDdkMWI3NTYyZjc3YjBiIGxlZ2FjeS10cnVuaworMjQyNTQgNDRmM2Y1YTViZmUyNDVkNzRhYTdkMDg2ZGQ1NTlhYTI3YTZmMDMzZCBsZWdhY3ktdHJ1bmsKKzI0MjU1IDYzYzE0NjY5NTI3ZTQ5N2Q5MDQxYTJmMTliMTJmMThmZGI4ZTI0YzIgbGVnYWN5LXRydW5rCisyNDI1NiA0YjllNjNjZjAyYTZmODI4YzlkMGM5MDMxYzJkYzU2NTdjZGQzZDA1IGxlZ2FjeS10cnVuaworMjQyNTcgYjBkZjFmZDgxOGZjMWY1NjViMWEyNDVlMThhY2I5MGFhNTc0MTc4MiBsZWdhY3ktdHJ1bmsKKzI0MjU4IGIxNjNlNzg2YWM3NGU0YTU2N2U0MTA4YjkwNTE4N2M0MGI3NDlhMmIgbGVnYWN5LXRydW5rCisyNDI1OSBmNzExY2Y0NTg1MjVlZWQ3Y2JmOGEyYzBkMTZkNDVhYjhmZjhlY2E1IGxlZ2FjeS10cnVuaworMjQyNjAgYWFjZTRmYWZmMTdkZDkyNDVlZGZiN2ZiNTE0ZjJmZWYzMjQ0MGEyMyBsZWdhY3ktdHJ1bmsKKzI0MjYxIGY5NmU4OTFjZjBlNGVlNTJkYjliNDRkMGFlZjE3OGE5ODQ2OWFlZGMgbGVnYWN5LXRydW5rCisyNDI2MiBhYzJiYzA3ZTg2OTdmNzY1ZWE1OTQ5YTYzOTQ4MWNiMDM5YWZmNGNhIGxlZ2FjeS10cnVuaworMjQyNjMgYTg1YTNjMTBiYTRkYTRhZDkwY2IzODEwOTQ3MTdjZTFhNDU0MTk2MiBsZWdhY3ktdHJ1bmsKKzI0MjY0IDAxZTQ3Y2U5NjIwMTBmNmMxNGFhZTBiYWExMmJlYjFkZDBjMjQ1YzMgbGVnYWN5LXRydW5rCisyNDI2NSA4MTYyNjRiZGExMzZjZTYyMTdmODU5ZjBmMGM4N2FlMWZkN2VjNGZlIGxlZ2FjeS10cnVuaworMjQyNjYgMGQxZGViNDAyMTlmOWZjMDI4N2ZjZGZhMTcxNWYyNTVkYjFjNjcwYSBsZWdhY3ktdHJ1bmsKKzI0MjY3IDViNTc4ZDRkODkwMmI5NWI1MjFkZGJlMGI0ODhhMGNhNGNjZTgwMTEgbGVnYWN5LXRydW5rCisyNDI2OCBkOWI3ODUzYTA0MzFiMzY4NDg4NjNlZWEyZDE1ZjAzODllNWMyOGJlIGxlZ2FjeS10cnVuaworMjQyNjkgM2E1NDNhZjE5Yzc5NWZhMTkzZjQ4NTJhMjYyMWJkMWVjMDBkMjM0YiBsZWdhY3ktdHJ1bmsKKzI0MjcwIDIyZGYzZWQxMWUyMTk2ZGMyYjM4ZjQwZTg3ZTJjNGVhYjJlMWYzMjEgcjIyYjItYnJhbmNoCisyNDI3MiAwOTI0NGM0NjgzMGY3Yjg5MDg2YmI4YzJmNzRkMjYyOTQ4Yzc4YWMyIGxlZ2FjeS10cnVuaworMjQyNzMgMTc0Y2NiMDM1YjNkODU4OTNiYjgwYmFmODg1MWFmMDljZjgyNjVjOCBsZWdhY3ktdHJ1bmsKKzI0Mjc0IDU3MGE1NGJiMWE1OTg4ODJjMTA1YjdlMWMyZGRiNGIyNjljMTFmODUgcjIyYjItYnJhbmNoCisyNDI3NSBjMzI5YjgxMWVlNTQ5NmJkNTljNDg0OTI0MDQ3MDRhZTM4YTM2ODJhIHIyMmIyLWJyYW5jaAorMjQyNzYgZjBiNTc1ZDZmZWFhNzBkZjQzMzllNDA0N2NhNzczMDdlOWIyYzI4YyBsZWdhY3ktdHJ1bmsKKzI0Mjc3IDU1NWE5ZTAwMTlhNzc5OTZiOTM5YmQ5ZTc3Yzk2YzllYmEwN2I0NTAgcjIyYjItYnJhbmNoCisyNDI3OCA2YmZmZDJlMjMyNmEzMTQxODA2OWZkMjU4MDc3YThhODllYTU4ZGJiIHIyMmIyLWJyYW5jaAorMjQyNzkgODRiY2ExZWYxMTY4YmM5N2E4MmU1NGY3ZDQ3NzQ0ZGRkNThkNWRkZSBsZWdhY3ktdHJ1bmsKKzI0MjgwIDNlMGNjY2NjNGRjYjFlNzdhYWIxZTk1ZDVkMTg3Mzk3NTZkYmJiOTkgcjIyYjItYnJhbmNoCisyNDI4MSA0NjViYWIwN2QyYTg4NDgwOGY2MDA1ZDQ4Y2Q2MzUyMjU5NjE1MzJkIHIyMmIyLWJyYW5jaAorMjQyODEgZjcxNTgxY2U3YTNjZWQ2OWMxYmJlNWFiOTEzOTkwYTVjOGM0MTY5NCByMjJiMi1icmFuY2gKKzI0MjgzIDkyZDZmNmY5N2M3MGM5NGY2ODg3YTVjMzIzNGM4MWRjNGVmNDVlZTUgbGVnYWN5LXRydW5rCisyNDI4NCAzMGUxM2YwZWE3NmIyMWM3YTI1MmNlNDIzNDZiYTAyMzIyYWM4YjNkIGxlZ2FjeS10cnVuaworMjQyODUgNDM2NTMxYjBhY2Y4MWExNDdiYTA3ZTYyNzA0NGVlZThlYTEzNDVhMyBsZWdhY3ktdHJ1bmsKKzI0Mjg2IGY3YjYxMDA1OTNkY2YxNzY5NWMzZGMzMzM3NWQxMjg4ZGE3OWUwMGMgbGVnYWN5LXRydW5rCisyNDI4NyBiZWE5MmMzZDc3YTMyYTQxNmU2M2IwZWNiNjA3ODk4MTNkZDI4YzgyIGxlZ2FjeS10cnVuaworMjQyODggMzk0ZGE0ZWZmYmVjNjg4Mjg0YzI4ZjMxM2Y3NGFkOWMwODcyYmIxZCBsZWdhY3ktdHJ1bmsKKzI0Mjg5IGQ5MTRlMGYzOWY4Mzc4ZTMxOTM3NjMwYTU1NjZjYWJjYTFmZTBkNGQgbGVnYWN5LXRydW5rCisyNDI5MCAxYjRlMmE3OTc1OTYxYTA4OWRhOTQwYWIwOTEwN2UwZmYyZDNiOWYxIGxlZ2FjeS10cnVuaworMjQyOTEgNmUxMGExNDk5ZTI0MjNkMmI0N2Q0ZjRjZDI0YjZlYzc5ZmQ2ZDQzNCBsZWdhY3ktdHJ1bmsKKzI0MjkyIDk0ZmUxN2M2NzcxNTQwODAyNzkwNjJlN2I0NTE1YTRkNmI1YjBhMzYgbGVnYWN5LXRydW5rCisyNDI5MyA2MWEyZGY1Njc0NmVlZTNmZGExZjk4Zjg2OWNkMjE3ODNkMzQ2ZDYyIGxlZ2FjeS10cnVuaworMjQyOTQgMjJjZWRlZGEyYTczY2M1OTZjNmZhN2E4MzMwMTI4YjM3YWFiN2U4MyByMjJiMi1icmFuY2gKKzI0Mjk1IGI1YzJmNzk0ZDgwNTkzNzE3ZTJlODc3ZjYxODA0OTc0ZDk0NzQ3MGUgcjIyYjItYnJhbmNoCisyNDI5NiAxZmRiODlhOGI2MjE5OWJhOGU2Mjg4MTc5ZDNlNDU0YmU5N2NhMGM2IHIyMmIyLWJyYW5jaAorMjQyOTcgNDRjNzc4MWQzZjBjY2Q0OGMxMTk3YzQ5YmE4YTU2OTZlYzlkNGJjYiByMjJiMi1icmFuY2gKKzI0Mjk4IDQxZWY5ODJhNjRiMWIxZDE5ZDdhYTk5M2VmZGMwZDYzZmExNTY4ZjUgcjIyYjItYnJhbmNoCisyNDI5OSAxMjY4OTVhMzkyYmE3M2ZiOTc4MzU3YzNiZGVlZjFjZWEyZjk1YjNmIHIyMmIyLWJyYW5jaAorMjQzMDAgMTQ1ZmFmMjk4Y2RjYzEzMjRjZWNiZWJkNWRiMjM2MTVjZjZiNDdkOCByMjJiMi1icmFuY2gKKzI0MzAxIDk0Yzg1OGZlYWU3Zjg4NjEwY2YzZTMyN2MwNzI2NDFhODdiMzE3NDEgcjIyYjItYnJhbmNoCisyNDMwMiBjNTJiYjg2MmQwZjc3MzU0ZGE3YzRkYWY0N2M5MzgwNmZhNTA5OTBiIHIyMmIyLWJyYW5jaAorMjQzMDMgMzBhNDA4MGJjMzBiNTkxZGNjYmE4MzEzZGJhZGFhZjc0NzAzYmNiNiBsZWdhY3ktdHJ1bmsKKzI0MzA0IDRhOWE5Y2MwNDFkZWNlNmExOWUxZDA4YjAwYzhjZjA3NDFlZmNmYzkgbGVnYWN5LXRydW5rCisyNDMwNSBmZTI5MzI3ZTQ3MWNlMmU2ZjRmMWM1NGQxZjE1MWU3YTg2NzFkNzczIGxlZ2FjeS10cnVuaworMjQzMDYgOGMzMjE5YTRkY2Q2ZGViNjE5YTg1YzZiNzA3NDcxODU4YzY4YmUxMiBsZWdhY3ktdHJ1bmsKKzI0MzA3IDQxYjhkNjY3MzBkNjFmNGExYTYwZWE5OTViNDQxOTAxMmNmYmU4M2EgbGVnYWN5LXRydW5rCisyNDMwOCAzM2ViNjNiODZhMTkzNmVlNDc0OGNlYTJmYzcyMTViNTI1YjA0NzBhIGxlZ2FjeS10cnVuaworMjQzMDkgNDlkYzE0NGExNTU1N2MxN2U2YTkxNTczYzk0ZGIxNmZmNjcwMzFhMyBsZWdhY3ktdHJ1bmsKKzI0MzEwIDU3Yzc5MWE1ZjgxYzc1ODcyYmVkYmU0YmQwMzE5ZjcxZWYzMDU2NzcgbGVnYWN5LXRydW5rCisyNDMxMSAyYjY1MGMyMWE1NjM4ZDU4ZmFkZTg3MDRiNjcyNzhlY2M1NWNjY2IzIGxlZ2FjeS10cnVuaworMjQzMTIgNDIzNjViNzBlOWQ4YjhlNGViNTA0YjMwNTBmNDA2NzQ2MjBkOWJmNCBsZWdhY3ktdHJ1bmsKKzI0MzEzIGY0ZDlmYTIwN2U0MGU1YjBlYmFkZWU3MjY0OGEwZDM1MWU1OTU4NzQgcjIyYjItYnJhbmNoCisyNDMxNCA2MmM2M2JhOTBkZjIxMGJhMzYwYThmOTc1ZjY2MTgxNWU4M2U5NzdmIHJlbGVhc2UyMS1tYWludAorMjQzMTUgMGY0MDgyNjFiM2M4YjdhYWJhYzFkMzliMjU1ZDY5ZDU5ZjBkMjg5ZiBsZWdhY3ktdHJ1bmsKKzI0MzE2IGE5NjUzODExNzMxYTAwM2JhNDgwMWNjYTJkNzAzYmM5MTMwZGVjMjAgbGVnYWN5LXRydW5rCisyNDMxNyA5ZjY2YWFkZGY4ZDQwYmYxYTM4MjFmMmFkMTkxZjlkYzM4N2Y4ZTZjIGxlZ2FjeS10cnVuaworMjQzMTggN2ViYzNlMjk4M2QxMWIyZDVmYTNjYzU2NTQ5ZDlmYTk4MGM1OThlMyBsZWdhY3ktdHJ1bmsKKzI0MzE5IDFkYWViZmYxNzdlZjEzNzdlMWNiOTkwZTMyZmJkMDFmOWZjZTk1ODggbGVnYWN5LXRydW5rCisyNDMyMCBmOTU3ZDM5NmM4NGU3MWRmMjI3YmVmNzMwYzYyMTI4ZTJhYWU1OGVlIGxlZ2FjeS10cnVuaworMjQzMjEgZTc5ZmMyNTdiY2EwZTZlZDEwNzgxYjA3YmE4Mzc3NjYxNmNhNjRlYSBsZWdhY3ktdHJ1bmsKKzI0MzIyIGRlZTBlODY2NjUzZTZlNDFiNWY2NTFhMjA5MjIzOTBlYmRkOThiMGQgbGVnYWN5LXRydW5rCisyNDMyMyAzZGZiYmY0MmJmMTZhZTk3ZmJiZDJhNDZlZjEzYjE5YjBmZjBjNWViIGxlZ2FjeS10cnVuaworMjQzMjQgMWVlNzViZDRlZTM0NjhkNTE3YmM1MTc1YmM3ZGY2MTU4OGY3YTgzNiByMjJiMi1icmFuY2gKKzI0MzI1IDEwOWVkNjk2NDgzMmFkZjg3YzliMDRkYzQ1NjA2MmY3MWUwMWM0ZWMgcjIyYjItYnJhbmNoCisyNDMyNiBiZDJlODlkNzdkNDVhZGYxN2JlMDdmOGQ1MTI4MTJmMzdhZTRiNjE1IHIyMmIyLWJyYW5jaAorMjQzMjcgNGM4MzI4NzhkZTc0ZWI3MjFhNWY2Y2VmZGMxNmI5YWI0ZDQyNWQwYiByMjJiMi1icmFuY2gKKzI0MzI4IGUzZTNjZDQ3YmFkNWZkMzgzYmM1OGJiMjI1ODkyNTgyOGFmNzQxMjggcjIyYjItYnJhbmNoCisyNDMyOSBkMjEwMjhkNWNjODUyOGM0NjVkNzhkNjZlMjZlY2Y0NGIxMDE4NzMxIHIyMmIyLWJyYW5jaAorMjQzMzAgNDgyNjBiMGI1MjZmNjlhMTVhMWQ0NzBkN2RjNzZkMWVmZWE1NzdiNCByMjJiMi1icmFuY2gKKzI0MzMxIGVlMjRiZDBjYWQyOTAzYjEwODRhZjBiMTgzMzY5NDQzZjczOWU2N2YgcmVsZWFzZTIxLW1haW50CisyNDMzMiBjN2U4MzNiM2NkOWM1YWFhMmZlZjVkZDJjYjUyM2IzNmQ4OWZmMTc4IHJlbGVhc2UyMS1tYWludAorMjQzMzMgOTc0NjIxOTgxM2Y5OTc5MjdlZWRjMjdhZGVlYzU1MGU2NTg5MmMxZSByZWxlYXNlMjEtbWFpbnQKKzI0MzM0IDExY2IzZGUwODIzZGE4ZWMyOGI4ZTI1NjQyZDU3MTU5NTg3OWQyMjIgcmVsZWFzZTIxLW1haW50CisyNDMzNSAyMjM5NTMwNjlhMWEwOWYwMjk2YWYyYTlkYWYxMGVkMzY5MTA0MDI5IHJlbGVhc2UyMS1tYWludAorMjQzMzYgM2ZjMDZjMTE0OWE0M2RiMmY4NjZhNzUzOWVlN2FmOWNiMGI5M2FjMyByZWxlYXNlMjEtbWFpbnQKKzI0MzM3IGM0NDk5NTk2YjFhNDBmZDhiY2YxZDg5Njc4ODcwODgyNzRiOGRiNjEgbGVnYWN5LXRydW5rCisyNDMzOCAxY2Y3N2RmOTVmNDUyNTM4OTc2NTkzZTRmOWI3ZWU4MWMzMjdkYzhhIGxlZ2FjeS10cnVuaworMjQzMzkgNTk4MWRmZGRhODU3MGI2MTcyM2VkODhmOTkxOTg5MzIzMDliYzY3ZiByZWxlYXNlMjEtbWFpbnQKKzI0MzQwIGFmYjc4OWFhZGExNmZkOGRhNmZkNDJkOTNlNGJkNmVhZTgxY2Y2MTMgbGVnYWN5LXRydW5rCisyNDM0MSA3NzhlNmE4MGZjZWU0ZjU1ZmY0MzY2ZDg4YWRjZmRjMzI5NTZiNDE2IGxlZ2FjeS10cnVuaworMjQzNDIgYzNlNmU2M2Q5YmEyZDgyOWYwMWNjNjg2Mzk0YTE4YmI4ZmY2OTE2NSBsZWdhY3ktdHJ1bmsKKzI0MzQzIGU1Y2Y3NGY3OTE2NzliYWUxNWVhMzQzNDI2N2UxNGRkMzE0ODM0ZTYgbGVnYWN5LXRydW5rCisyNDM0NCAwODQ2YjRlMjUxN2RmMDI4YmNhMmE0YjZkMmEwMDJlOGZlMTE5MjU2IGxlZ2FjeS10cnVuaworMjQzNDUgNzBiNDMwNmY0ODhkYjE0NjBlYTEwMDk3YWY3ODFlNGY1YjFmMmRiOSBsZWdhY3ktdHJ1bmsKKzI0MzQ2IGIzZDYyN2VlMmI3M2ZlMWMwNWY3MDYxYTMyYjk2NWE4ZmQ3NmY2MzIgbGVnYWN5LXRydW5rCisyNDM0NyBlNmVhZjk1N2VhMjZmNzE2NGRmYjZkMGFkMDRjMDYyNDZlODg4Yjc0IGxlZ2FjeS10cnVuaworMjQzNDggYjExNGIxMDA3NDE4ZWUyZTEwZDE0MTZjMGYxYTIwZDc2M2NlNGI5NSBsZWdhY3ktdHJ1bmsKKzI0MzQ5IDg4MWY0OWJlZmNhM2MwMWEwNGJhOThjYzZkMDdhMWQyYTQ1MjAyOGQgbGVnYWN5LXRydW5rCisyNDM1MCBjZDBiNzViMTlkZjdkODI2Mjc4MmFhNTU3MTU4Y2FiMDM1MWYwMDQxIGxlZ2FjeS10cnVuaworMjQzNTEgZmVkNTA3MWRhOTU3NWQ0ZDY5NDQ1ZjQ4YzMwMjFlNDExZTZhZjI0NiBsZWdhY3ktdHJ1bmsKKzI0MzUyIDdjYTVhNDgxYzBkMTc5NTU2OTYzY2QyZGVjNTU2ZWY1N2FjODQ3YTkgbGVnYWN5LXRydW5rCisyNDM1MyAxYWUyYWZlNjc1ZmRhN2JjYzUxMGNkOTZjY2Y5ZWM1MDRjNzYzMTY0IGxlZ2FjeS10cnVuaworMjQzNTQgZGEzODhlMWQ0MDRiZmI4M2Y1OTEwM2JmMjhjNjYyZWRjYzM3NzBiOSBsZWdhY3ktdHJ1bmsKKzI0MzU1IGI3ZjM4ZTc2NTE0NzkzMzkzNWFhZGVjNmEwNWFlY2RhZGFmNzQyZDYgbGVnYWN5LXRydW5rCisyNDM1NiBiY2JkYTYwNmQ4Yzc1NzE4YjQwMjgzYzdjNWY5ODFjMTYwZGNjYjZhIGxlZ2FjeS10cnVuaworMjQzNTcgZDQ1NjkxYTY5ODdmZTk2N2EwNWZiYmNmMWI3ZjA5N2M0OTBjZjMzOCBsZWdhY3ktdHJ1bmsKKzI0MzU4IGJhYzk0MmU2ODVmYWQyZGJiZDIwZDlmNjNhZTgxOWIwNDJjODM3ZGEgcjIyYjItYnJhbmNoCisyNDM1OSAzNmM4OTdiY2Y0ZDdlNjk0MjQwMTEzODYyM2VmM2MzOWY5OTEyZWJhIHIyMmIyLWJyYW5jaAorMjQzNjAgZjhmZGJmYThkNWYzYjgyZmVhOTlmOTVlYjc5OWY4N2Q4NzJkODYzNiBsZWdhY3ktdHJ1bmsKKzI0MzYxIDJjMGE5YTUwODZlMTBiOTlmMDQxZDBiMGFjYTJkYjZjYzFkZGQ0NzMgbGVnYWN5LXRydW5rCisyNDM2MiA5ZGY4MmMxM2M2NzVmMDc0MDAyZDAyODMyYmZhZDk5MTM1OTc2NmRlIGxlZ2FjeS10cnVuaworMjQzNjMgZTc2MzA2ZWVhMzcwOTc1MGRiNTc2ODM1ZWFjNWI2N2QyMWM0MmZmYiBsZWdhY3ktdHJ1bmsKKzI0MzY0IDU5N2QxMGNmNzkzOGU5YmIyNjU5N2UzMzZmNWFlZjI2ZDNkNmUxNjggbGVnYWN5LXRydW5rCisyNDM2NSAxODAyYTllZGI0ZWVmNGQ4ZTYwZWZkOGUxNzU5Yzk0MDBhZWIwNzI3IGxlZ2FjeS10cnVuaworMjQzNjYgYmMwMmMzYjA5NjI2YTA0NWY2NmI0NzkwZDJjOWY3N2M2NmRlNDk5ZSBsZWdhY3ktdHJ1bmsKKzI0MzY3IGYxODc0OTZmZmFlZjlkMjFmYzI2Mzg5MGU5YTU5N2U4OTNlOWM3OTMgbGVnYWN5LXRydW5rCisyNDM2OCBhMmQ3OGUyMWE3ODU3ZTE2ZWMwN2U0MDY5NzEwMTA0MjVjMDJiYjYxIGxlZ2FjeS10cnVuaworMjQzNjkgNTBjZmJkZGM2MDM3ZTk3NTFlOGUxOTdlYTQ3OWE3YzE2MmRkMzMwYyBsZWdhY3ktdHJ1bmsKKzI0MzcwIDIyNWM3ZGQxN2UzNzI2Nzk0M2QzZDczYWNlNDQwMjdiYzNhOWE4MGEgbGVnYWN5LXRydW5rCisyNDM3MSBjOWM0YzUyM2RjYmYxMjhkN2E2NWFiNzlhYmQ3MmIyZDE0ZTdjYzhkIGxlZ2FjeS10cnVuaworMjQzNzIgOWIwNTlmMWIyYTFmMDU2OTk4Zjk5ODY1MTI3YzMxMDJkYzAxYTJkNCBsZWdhY3ktdHJ1bmsKKzI0MzczIDdkM2EyMTFlZjIzMzY5OWZlZGFmNDlhZDkwOTcyNGQ4ODYyYWExOWMgbGVnYWN5LXRydW5rCisyNDM3NCBiYTY3YjljOTdiNjk2YmY2MjU1ZDViMzliMGMyZjVhMDc1YTU5YWU1IGxlZ2FjeS10cnVuaworMjQzNzUgNjM5MmYwMzIyMmUwMTBlODAzMzg2NzI4YTc5ZmRhODY4ZjM3NTgyZSBsZWdhY3ktdHJ1bmsKKzI0Mzc2IDYzOWMwYTNhZThkY2I0NWRhMTYxZjJkODBlY2Q4ZDI3OTEwMTZkNmIgbGVnYWN5LXRydW5rCisyNDM3NyAzMDRiMzQwMjM4NzY5MjBmNTcwNDY1YzI4NjJiZWQ0MDZmNDJjNmMwIGxlZ2FjeS10cnVuaworMjQzNzggNDdlYTczZmQ3ZTZiYTMwY2I5ODZiMDEzNzkxNGQ3Mzc5MDJhNjAzYSBsZWdhY3ktdHJ1bmsKKzI0Mzc5IGRjNjQxZTEyNTZmOWM0ZGU4MDcyN2VmNmQyNWRjMzAwMjA5ZTgwZjkgbGVnYWN5LXRydW5rCisyNDM4MCBjNWZiZTkyZTAyZDNhMTU3MDBjOWY0OWM0ZWQ4YTI5YjM2ZGY4YTRlIGxlZ2FjeS10cnVuaworMjQzODEgMzc5ZmM2NmY0Yzk2ZDBhMWY3YzE3NmY5YmVkZDEwY2Q3MzViNmQyZiBsZWdhY3ktdHJ1bmsKKzI0MzgyIDAyNWFkMjdkNDIyNGY0NTcyNDUxMzRmY2M5YmFlZTBiMzg2Y2U2YTUgbGVnYWN5LXRydW5rCisyNDM4MyA4Y2VmNzVjYWNiMDE2MDRjZGYwMDAwYWRmZWI2NjhjNjcxZDQ5ODVhIGxlZ2FjeS10cnVuaworMjQzODQgNWI0NTk2NzdmYzQ0NGZjOWIwYzAzYmJiOTZkZDUwYWIxOGEwZDE5OSBsZWdhY3ktdHJ1bmsKKzI0Mzg1IDk0ZjVhOWZhMzU4MzQ3NTA4MTRkMTYyOWQ2N2Q0M2RhZWJkOTQwYjMgbGVnYWN5LXRydW5rCisyNDM4NiBjOGQ3NzViOWZmOTJhOWJiOTM5NWQ1MGI2YWY2ZmEyMTY4NmRhNDMwIGxlZ2FjeS10cnVuaworMjQzODcgZDNiNjQwMWNhMjczYjVlNGM4ZWNkYTNhYTkzNzc1ODlmYjgwNDMzMSBsZWdhY3ktdHJ1bmsKKzI0Mzg4IDUyY2U4ODdkYjNjOTMxYTYzOGUxYWY1ZmNhNWMyM2U4Zjc5NzhmM2QgbGVnYWN5LXRydW5rCisyNDM4OSAzZWIyNGY0Yzg4ZDViMTljZmVhNGY4ZGVlYzliZjE0NDRhZWZiM2I1IGxlZ2FjeS10cnVuaworMjQzOTAgZWE1YjBmMGI3MTZmMjU0ODQzMjY4YTkyN2EyODRjNzQ3NjQ0ZDFiOCBsZWdhY3ktdHJ1bmsKKzI0MzkxIDQxZWEyYWJiNzRmYjM5YzFiYzc3N2I2ZWY3YThhYjE5NjhlNTdkOTIgbGVnYWN5LXRydW5rCisyNDM5MiAzNDdlYTY5MzAwMmQ1MmI4OWUzMTBkMGI0NTg2MGYzYjEzZmI0YjUzIGxlZ2FjeS10cnVuaworMjQzOTMgZDk1YTRlYzY4NWUwZTM4YTM5NzRlZWNiYTY5ZDUwNWEyMTZhNDk5MSBsZWdhY3ktdHJ1bmsKKzI0Mzk0IDVlMjVjNjY5NzQxY2Y5MTFhMWRhYTkxMTYxYjU1N2I0ZjM3YzJhOTMgbGVnYWN5LXRydW5rCisyNDM5NSA0N2Y2NTMzNjc0ZmRhMmRiNjI2YmRmYjYzNzQzMzczNTg1YTkzY2JiIGxlZ2FjeS10cnVuaworMjQzOTYgNTMyNzBkMjgxYmYwODNiZDhkMTY0ZTI4NzZkNDQ2NGZhNjA5YWU1YiBsZWdhY3ktdHJ1bmsKKzI0Mzk3IDdkZTEzM2NiYmFmMThlODY4M2EwNDgxMzI5MTEyYTQ1NjRiNDVjODAgbGVnYWN5LXRydW5rCisyNDM5OCBjMjE1MDMxM2Q5ZDEzZTZiNTI2ZWVjYjFmNTJhNDBlNDlkM2IxODY1IGxlZ2FjeS10cnVuaworMjQzOTkgYjEyODBjYmE3OWI1OWFjM2Y2YjljZDRkZjFmYzQzNGI0N2QwOTNlNyBsZWdhY3ktdHJ1bmsKKzI0NDAwIGNkYjcwYmY4OGRiMWE4ZDBiYTYwMGY0MDI0NjJkYTEzM2JhMDYwMGQgbGVnYWN5LXRydW5rCisyNDQwMSA5YmEzYzgyOTQ2Yjg5NjFjMTc2NzllNmUwM2ViNjk3ZWNmODdlNGQwIGxlZ2FjeS10cnVuaworMjQ0MDIgODJkODQxMzYzNmU3NzkwZDU1ZjlmOGZiODNiNDQ3NWZlM2ZiOGVlMCBsZWdhY3ktdHJ1bmsKKzI0NDAzIDgzZmM4ODM1MGY4MGEyMmI5ZWNhYzU3NWJkZDExMTE3NzQ2OTVkYjcgbGVnYWN5LXRydW5rCisyNDQwNCAwZmVhYzQ1ZWU2NjJlZmQwOWU3MzBjNjQ4MDBjM2ZlNTJlNTI3NGZmIGxlZ2FjeS10cnVuaworMjQ0MDUgMTgzZjI4NTk5NzM2NjMxZDUwOTIzMDM5OGZiMjcxMDI1MjFmOTExOSBsZWdhY3ktdHJ1bmsKKzI0NDA2IGQ2YzE4M2NhMDkzYzgwM2I0NmVlODZiNzA0YTk2M2I5YTFhMmJmZjYgbGVnYWN5LXRydW5rCisyNDQwNyBjZWM4MDA5MzFhMzcwZDI1Yzk0YTlmYWUzM2E4ZmYzNGY2ZTI5MTI1IGxlZ2FjeS10cnVuaworMjQ0MDggZTQyMjAzMWI4ZmQ3MDg2MmUwNTc3NGEwMzY5ODk1NDY1N2I4ZWRkYSBsZWdhY3ktdHJ1bmsKKzI0NDA5IDY3NDcxMDcwYjk2NjgzYzFmMmU1ZjBmM2ZiNWZlMDdlYzIyOTQ4NzkgcjIyYjItYnJhbmNoCisyNDQxMCAxMTQ3NWRkNDZmYTc2MTMyNzA0NzIzZTMzZTg4MmIxNjRmNDU0M2IzIHIyMmIyLWJyYW5jaAorMjQ0MTEgMzRmYzUyMzgzMTBkMzNjNDA4NTM0ZWVmYThmNzIwMjE5ZGM3NGU5ZiByMjJiMi1icmFuY2gKKzI0NDEyIGU5YTAxZTI0YTRhOTc0ZjU0YzBiNGI4ZGMxYjM1NDY5OGRjYTc5Y2IgcjIyYjItYnJhbmNoCisyNDQxMyA2MTg1YTY3YjMwMTI4NDA5ZTk1MzgxN2NkOWRlMThkNTJkMDViNTMzIHIyMmIyLWJyYW5jaAorMjQ0MTQgMDNhZWE3NTc1YWZiYTZiZjk4MjBkMWJjNDMyMzA5MDkwMDgyYWRiMCByMjJiMi1icmFuY2gKKzI0NDE1IGE3MThiYTk5MmYxMDRhZjNkOWFiZTdhOWVhOTQ1YjZiOTRkNTUxZDAgcjIyYjItYnJhbmNoCisyNDQxNiBiZTM5ZmE1NTU4YzU0NWRhMzNlOWM4MzNlNDU3NWUxYWM5N2RmMDUwIHIyMmIyLWJyYW5jaAorMjQ0MTggZDE5NTEzZTI4OTNjOTllZmU1ZWJjYmYxNWU1MTc2YzUwNGJjMGJjMSBsZWdhY3ktdHJ1bmsKKzI0NDE5IDM4MjdmMTM2ZTBkNmU2YTBhMTk1NGFhMzkyNWJlOTgyOWJiYWIyZmEgbGVnYWN5LXRydW5rCisyNDQyMCAyNzExZjhkYjE2NGNmYWI1ZTdkOTRkZGVmNGNlMjNjOWVlM2EzZTMyIGxlZ2FjeS10cnVuaworMjQ0MjEgMTI2NjhkMGFmOGY3ZjU0Zjc5MjdlODY5YTJjZDAyODk5NTAzZmUyYyBsZWdhY3ktdHJ1bmsKKzI0NDIyIDA1MDk1Mzk4ZjkzOTJlMmU4NzRhM2FlYzY5YjlkYjU1NzI2M2I2MGQgbGVnYWN5LXRydW5rCisyNDQyMyBhZjFjNWZiNmE3MDM5MmIzMGVjNjFhMWYxYTYzMTMxYWM0Y2UxOTBlIGxlZ2FjeS10cnVuaworMjQ0MjQgOGQwYzEwNmQ5MDk5MjY4MTFlMzNhMDM3ZWIzM2YxMTZiMzRiMDYyMSBsZWdhY3ktdHJ1bmsKKzI0NDI1IDM4ZDBiZDBmYTdmMmU3YjcwYmI1M2U5YzllOTQ1MzM5NWE1OWQ2NDIgbGVnYWN5LXRydW5rCisyNDQyNiBlZDNkY2UxN2ZjNzliN2E2YzZmZmNjYzZhMjlkY2M1NTUxYmUwNmM2IGxlZ2FjeS10cnVuaworMjQ0MjcgZjdkYjJjMGEzMGZjZThkNTk3M2MyMGU4YjE4NGRkOWUwYzcxMzdiNyBsZWdhY3ktdHJ1bmsKKzI0NDI4IDBlZDZmYzdjMWMwOTNkMDZjZDA4ZDU4ZjQ0M2E4OWZiNmIzMzIyN2UgbGVnYWN5LXRydW5rCisyNDQyOSAwYTY3NDYzZjhiN2QyMjU5YzhmZjJmZTFlNjE2ZTRlNWU4OGNhNWE5IGxlZ2FjeS10cnVuaworMjQ0MzAgY2Y3OTcwMzM0MDQxOGZkNzRkOTQzYzdkODBmMzM2YWI5NjdmNmEzMyBsZWdhY3ktdHJ1bmsKKzI0NDMxIDJlNmNlM2E1NjI4NGJmZWNhNWI4ZjdhNWE2MDBjMzQ0ZDg3OGIyMTYgbGVnYWN5LXRydW5rCisyNDQzMiA0OTNmOTMyZDU4MjliMWRjOGMxODAyYzExODI0MGZmYzZjZWVmYjJmIGxlZ2FjeS10cnVuaworMjQ0MzMgNDY4NTMwNzM4NGViMGQ3ZmQzMWEwODYwYThjNjVkMDE2ODA1ZGMwMyBsZWdhY3ktdHJ1bmsKKzI0NDM0IDY3MWE4NDg2NmFjOTk5NjM4ZWNmMGViZDhhNjYyZTg3ODZhYTJlMDMgbGVnYWN5LXRydW5rCisyNDQzNSA2ODdiOGM3MTkyYTFhMTY2YzA2ZDQ3YWI3MGVjOWZlMWNiMGI5NTAxIGxlZ2FjeS10cnVuaworMjQ0MzYgMjE4MjA3MzJhMTE3MWJmYzY3NDZiNzJhZDNmOWZmNDA3MTc4MmU0ZCBsZWdhY3ktdHJ1bmsKKzI0NDM3IDIxYmI0YzRiN2UyNmY1MDg3MDZlYjc4YjRmZTU0OGNkNWFhOWFhMzQgbGVnYWN5LXRydW5rCisyNDQzOCAxN2U4N2FhMzc3OTYyYzU4NjRkNmFkMDlmNzI0MGZiODEwMTVmNzM0IGxlZ2FjeS10cnVuaworMjQ0MzkgNmI2YTljYWUyNTZlZTMxYzM0Y2Q4NjVkZWIzMDIxODA4ZGMyNGFhMiBsZWdhY3ktdHJ1bmsKKzI0NDQwIGRkMjhhNGVjYjM3ZjYwOTM5NDk1MTBlOWJlNGUzODlmNmRjMmFhYTcgbGVnYWN5LXRydW5rCisyNDQ0MSAxNWZmNTA0NjMyZWQ2YThlODFkNzdmOTAxZTNhOWRlZDU0MWUzMTM3IGxlZ2FjeS10cnVuaworMjQ0NDIgYTEzYTQzOTNmNDVjMDFlYWViMGMwMjUxMzZmMTRjNTA3ZGFiMzIzZSBsZWdhY3ktdHJ1bmsKKzI0NDQzIDZlMzQxNTFhZWZlNjYzMDUzZjFiY2QyOGZkZTAxYWMzZmQ5NzcyMjMgbGVnYWN5LXRydW5rCisyNDQ0NCA2MGUzNmQ1MTg3NThmMWUyOTRmYzE3MmI5Y2QyYTY2ZmMwZTU2MTMzIGxlZ2FjeS10cnVuaworMjQ0NDUgYTlhODczNDFhOWU3YjA2ZWNkMDQ4ZmQ0MDcwNGQ1ZGQ1NTk0N2ZjZCBsZWdhY3ktdHJ1bmsKKzI0NDQ2IGVjODhmYzQzMDEyNzYxMWU2YTg4MGViY2E5ZjYwZTVmNzU0MWRmNjQgbGVnYWN5LXRydW5rCisyNDQ0NyBhYmUxNGFjNjIwMjQyMTM3NTUzODdkNjJjMWQwOTA5NjQ4NjVjYWMzIGxlZ2FjeS10cnVuaworMjQ0NDggOTQzNjM5Yjk0NGFiNGVlMzJiMzNkOTRmYjE1ZTBiN2Q4ZDg4MzI4NCBsZWdhY3ktdHJ1bmsKKzI0NDQ5IDE5N2E5MDQ4OWJlZWQ5YzVkYWQ1NDcwZmYxNWM1ZjBjOGFmMDFhNjUgbGVnYWN5LXRydW5rCisyNDQ1MCA1YjhmMDdlNjM5OWMxZTY3MDJlOWRhNDIzNTE1OWYxNjhiYWE5NzdkIGxlZ2FjeS10cnVuaworMjQ0NTEgYTJkMDNjZWJhODBlYmZhNjI1Y2MyYTQ1N2U4ZjEwNDUwN2YzZWIwNSBsZWdhY3ktdHJ1bmsKKzI0NDUyIDY3NTA4YTM1MWFhMmJmYmI2Mjc5MDQwYmYwNzhmOTdkMTFiMjA5MmEgbGVnYWN5LXRydW5rCisyNDQ1MyAxYzZjMDI3ZmQxMTBiZjliNWUzZjRmNDlhMjkyZWY0OGJjNjUwZThmIGxlZ2FjeS10cnVuaworMjQ0NTQgNTFiNDU3MmNmMDEzZDFhNmM4Yzc5NmIxOGUyMGY1NmI4NTllNzM1MCBsZWdhY3ktdHJ1bmsKKzI0NDU1IDg0MmIyODA0MjFiYTYxZWNkNGExOWFkYmZjMDkxYjcwNmQyZTc2NDAgbGVnYWN5LXRydW5rCisyNDQ1NiA3Mjk2NmM5ZGY5YTk5ODdlY2M2MzE0M2IyMjk4YTQ1OTU5N2Y0YjAxIGxlZ2FjeS10cnVuaworMjQ0NTcgOTZhMDhmZDM4ZWY4MTI1OThkNDU4ZmY4YTM3NDE4NGYzNWJiOTE5YyBsZWdhY3ktdHJ1bmsKKzI0NDU4IDg3ZmE2ZTliZDc3ZWMzYzdiZDYxODEzZGQ2YzUzMmM3YjI1NmNjMDEgbGVnYWN5LXRydW5rCisyNDQ1OSAzNGZlNzQzMzUyNmJhNDc4NWJhNmUyMDZmMDI4NDhmYWI3MjgxZTQxIGxlZ2FjeS10cnVuaworMjQ0NjAgOTBhMGQ4MDAzM2I0ZjcwMzQ2YmZmOTYwZmU3N2IwZWI5OTY5ZWM4NSBsZWdhY3ktdHJ1bmsKKzI0NDYxIGQ0NTA5Y2Y5M2Y1MGY5MmMwYTY3MmIzMTg3ZDNjZjhhNDE4OGVmZTQgbGVnYWN5LXRydW5rCisyNDQ2MiA4ZTcyNDU0NjBkMzBiZmY0OWU4ZDc1MWUxNmE1ZmEyNGZkZWNlNTA0IGxlZ2FjeS10cnVuaworMjQ0NjMgMGRkMTZmZDM2ZWU4ZTVjNGI5MTU1NWM3NmY0NTcwY2NlZDBiYmRkNSBsZWdhY3ktdHJ1bmsKKzI0NDY0IDkxOGI1NzM1NGQ4NzQ4Yjk3MzRkMTNjMmE0NDI4NTRhMmQwZTk5NDYgbGVnYWN5LXRydW5rCisyNDQ2NSBiZTVmNTI5NjJhZGIzNGQyZDUzY2ExYTBiMjdkYmU2ZTBiNzZiOTYxIGxlZ2FjeS10cnVuaworMjQ0NjYgMTFhOTY5ZTJmYTUwNTM1NmIwZjA2ZDNkMGRjZmQwYjRjYTM5MzE2MSBsZWdhY3ktdHJ1bmsKKzI0NDY3IGEyMGIzNzJmYjkzOWMyMjA4NDEwOGVhNWEwMjFjYzliNDMwY2Y1MmEgbGVnYWN5LXRydW5rCisyNDQ2OCBiY2E1M2EzN2E4YTVhZmUyNDk5ODZlMDkyOTY2MGQyNmU3ZTkyNTFlIGxlZ2FjeS10cnVuaworMjQ0NjkgOWZlY2JhNTI2OTM2N2FlYjkzY2E3NTVhZjgxYTg1YzkwNDUxNGViNyBsZWdhY3ktdHJ1bmsKKzI0NDcwIGU1OTI0NzJkNTVhMzhmMGJkZDQ4OGRhMWVkMzk1ZTkzNDFjMDUyMTggbGVnYWN5LXRydW5rCisyNDQ3MSAxYWNjNGJhNzNiOWQxNjE3N2MzNmQ3MTc1ZWNjMGY3Y2VkOTA4ZDk0IGxlZ2FjeS10cnVuaworMjQ0NzIgNmZhOTZiMzI5ZTE1ZWUxYzA1ZGY3OTNiNmRlZWMwNDA3Mzc3ZDNkYSBsZWdhY3ktdHJ1bmsKKzI0NDczIDczMzg0ZTEzYmQyYWUxMTJiZTQ2ZGNhNWE4YjExZmU4OWMwODA0ODcgbGVnYWN5LXRydW5rCisyNDQ3NCA5NDNjYTgxYWQxZGYzZjUzOTk3MzMzZjhiNWRhM2MwODU5NTZhMzBkIGxlZ2FjeS10cnVuaworMjQ0NzUgZTFhNjdiZTZjNmU0MGEzZTBiNjVmMjRiY2YzYTFkNGE2MjE0YzMwMSBsZWdhY3ktdHJ1bmsKKzI0NDc2IDdiNjg3OTcxNGI3NDY2ZTQ0OWYxN2EyNzMzNmViY2NkYmY0N2VmNGUgbGVnYWN5LXRydW5rCisyNDQ3NyAyMWFjNTVmYjJkZDhjODJhZDIwZmNmNmMxY2E4Y2Q5M2Q4NDgxNzBlIGxlZ2FjeS10cnVuaworMjQ0NzggY2ZlNDA3ZTRkOGMwMTVkYTY0YjE4NzhlYTZiMjliYzk0ZThkZjJhNiBsZWdhY3ktdHJ1bmsKKzI0NDc5IDBiNGFlYjQxM2Q3ZGY3MzBhODgxNmVlODM2MGIwYTE4MDJmMWFlZjkgbGVnYWN5LXRydW5rCisyNDQ4MCBmZDQyZWFjZTUwZWE1ZGFiNDY3NjM0YmYxZjc4NWY1YWVhODcyNzdjIGxlZ2FjeS10cnVuaworMjQ0ODEgNDc1YzgyNzFlMDU3ZTlmZThhNjY4NGU0ZTdlMGQ4MjA5MzA2YTlkYiBsZWdhY3ktdHJ1bmsKKzI0NDgyIDg5MDVlNjcyNWNhMWIzYTgzMDgxN2JmMDViMzc5MDhlZDFjNzQ3NDggbGVnYWN5LXRydW5rCisyNDQ4MyAyZGZjNjAwZjk5Y2VlNmQ2MjFhNzlkZmYyMWExNWYxYWY3ZjMxMWE4IGxlZ2FjeS10cnVuaworMjQ0ODQgMjQ1OGNiY2MxZGQzNzY1ZTZmNmNlNWI4MzJjOWE3MmQ2ZmRiNGM3MCBsZWdhY3ktdHJ1bmsKKzI0NDg1IGRmMmZmYjBjZDZiYmE2MGIyMmNiOGI4NTA1Yzg5MzA0NGYxYWQ3NjIgbGVnYWN5LXRydW5rCisyNDQ4NiAwYjZhMThjNmU1OWVjNDUwODU2YWM2ZDFiYjU5ZjhlYzY5MTVjOTE1IGxlZ2FjeS10cnVuaworMjQ0ODcgNzg5MjkyY2YwOTE0YzQzNjNkNDE0NmU0YzZiMTA5NzIxNWYyZjU2YyBsZWdhY3ktdHJ1bmsKKzI0NDg4IGM5YTc5NjQwMGE1MWM1MTQ4N2MyNzFlMzM1NDE5NTZjN2U4ZjFhNzkgbGVnYWN5LXRydW5rCisyNDQ4OSBkNGNjMDVmNmUxODM5ZDMwZjRkYjBiYTk4MTliNTE3NzBhOWQyODhlIGxlZ2FjeS10cnVuaworMjQ0OTAgN2QxZWFjNDFjZTNlY2ZlMGFlMmNmZDQ5MjcxMmM4ZjhmNTRhNzM2YiBsZWdhY3ktdHJ1bmsKKzI0NDkxIGJjNTFkZTY0M2I1ZTU4Y2FjZjNlYjE2N2NjZTk0NzE0ZWNmYWM4MGMgbGVnYWN5LXRydW5rCisyNDQ5MiA0ODU0MjI5MDBlZjA3OWMyMTdmYzc1ZGZiM2ZiNzE3ZjU5OWU2MTYwIGxlZ2FjeS10cnVuaworMjQ0OTMgMGZiYzkyODlhNGM3Y2U0MDM5YmM0ZjEyY2Q0ODBjOGM3ZjUyYWU0ZCBsZWdhY3ktdHJ1bmsKKzI0NDk0IDk0NGQ2ZTAyZjM1OTE3NzgzYjRjYjhiMzY1NWQ2YzBlMzQ3OWNhMzggbGVnYWN5LXRydW5rCisyNDQ5NSA0NzNmMjk0MTFmM2IyZWQyMzg3MzU2ZDcxNjI5NDk4M2ZlYTgzYTdmIGxlZ2FjeS10cnVuaworMjQ0OTYgYWMxMzU3ZmQxYWVhMWY4YTEyNGNkODIyNjVlY2U3YWZlOTRiZDE2OSBsZWdhY3ktdHJ1bmsKKzI0NDk3IGMyYmZmYTY3MmI3NTliZjlhZjM3NTMzMzFmN2RlZTZlOTgxMmI5NmIgbGVnYWN5LXRydW5rCisyNDQ5OCBhZWJjZTQ4NWI1NmI5Y2I1MDU5YWE2OGFiYzFhNzE4OWUwZmVhMmQ3IGxlZ2FjeS10cnVuaworMjQ0OTkgMDE4OTE4NmY0ZWQ5MTgyMjkxZmU3NDA3N2Q3OGNkYjkxMTU5MGMxZCBsZWdhY3ktdHJ1bmsKKzI0NTAwIGVmNmY2OTJjNzZlMjJhOWJlZjFlNzgzZDNhOWE5MDRkMTk2OGJhYjYgbGVnYWN5LXRydW5rCisyNDUwMSAwOGYyMWE1Mzc0ZDlhOWZiOWM5YWIyNGViY2I5NGMzYWUyM2Q2MmQ1IGxlZ2FjeS10cnVuaworMjQ1MDIgYTYyM2Y5Y2Y5NTM1NDIzMWEyZGNiYmMyNWIwYzBkMjczYWM4NGQ5ZiBsZWdhY3ktdHJ1bmsKKzI0NTAzIDZhNzNkNThlMTc0NzIyZjI5ZjhlMTRhYzhiZTNkMDBmMmE5OTdlNjggbGVnYWN5LXRydW5rCisyNDUwNCAzM2M4ZDMzNWEyYzQzNzc2MmU4YTdjMWEwNzFiNGJlZWIzMzM3YTUwIGxlZ2FjeS10cnVuaworMjQ1MDUgYzE4YWQ1MmRlY2UzNWMzODFjZGM4ZGFjNDhjMDM5YmMxYTZlN2MzMCBsZWdhY3ktdHJ1bmsKKzI0NTA2IDQyNmMwZDI0ZGViZDhhNThlZTdiNjE2ZDA1MTdkM2Y3MmIyNmVhNWMgbGVnYWN5LXRydW5rCisyNDUwNyAxNTE5ZDZmYWFiMTU5NDA0NWVkYTU3ZTM3YzU3MDE5NWYzNGI0MjYwIGxlZ2FjeS10cnVuaworMjQ1MDggNWIzYjI5MjQ3NTczNWE5OGZkY2YxOGU3MGZmNjQwYmMwOWFmNTAzZCBsZWdhY3ktdHJ1bmsKKzI0NTA5IDkyMDkwMmY1YTg4NGMwOWY0NWE4ZDAxMmY0OWU1ZGZmYTE2MDQ4ZDEgbGVnYWN5LXRydW5rCisyNDUxMCBhZDdiNDQyNGFhYjZmM2IzM2I0YTM0ODc0YjdkNjQxNTRhN2I3MWE3IGxlZ2FjeS10cnVuaworMjQ1MTEgZjE3YTM3ZGU2Mjg1YWE1MWRkZWFhOTNhYzU4YjY4YzEwNDhkNzY0ZSBsZWdhY3ktdHJ1bmsKKzI0NTEyIDYwNDE1YmY1ZjhmMmE0NjYxZTA5ZjlmYTViYzU4NGUwNzlhY2U3YzIgbGVnYWN5LXRydW5rCisyNDUxMyA5NDc5MzEzOTI2OTRlZDM5YTMyYTlmYjM1ZjM3ZTJlMWQ5MGUyZTcwIGxlZ2FjeS10cnVuaworMjQ1MTQgZGI5YjU5NzY4MjllNDQ3YzNhMzZmM2ZhOTdhMmVkYzNlMzY1NmQ1NyBsZWdhY3ktdHJ1bmsKKzI0NTE1IGM4NGRmODQ4NjE2MzY2ZjdhZmI4NzY0MTA4OGViOGI3NjFjMjU3ZDcgbGVnYWN5LXRydW5rCisyNDUxNiBkOTVlYjdlYzQ1NTM1NDJiNThlYWEyYzE1MjVjYzRmN2NlOGU1ZmE4IGxlZ2FjeS10cnVuaworMjQ1MTcgZjc5ZTQ3MTlkYjk2NDVmNWMzODA4NTk2ZWU0OGEyY2ExOTk5Nzg2MCBsZWdhY3ktdHJ1bmsKKzI0NTE4IDg2NGNjNTkzYmRkYTI3N2RmOTc5OWY0MDE5MzJlNzgzZTcwZTZlZjIgbGVnYWN5LXRydW5rCisyNDUxOSA4MTkyOGM5ZDcwMTE3ZWVkNmQzYTJjNDIwMmEzZjdhMzMxZDRkYzRmIGxlZ2FjeS10cnVuaworMjQ1MjAgYmNmNjY2ZTg4MzEyMWQyYjdlMzdlNzE1M2RjMGMwZTE3NjYxM2Y3YSBsZWdhY3ktdHJ1bmsKKzI0NTIxIGVhZDFmYTI2OTUwMmExY2U2ZmI0ZmQzYjU4ZDE4ZDU3ZThmMGE4YTUgcmVsZWFzZTIxLW1haW50CisyNDUyMiBkODI2NWEwYzNjZjAyODhhNmQyMWU5ZWRiOWM1MDU1NWYzN2NkNTc5IHJlbGVhc2UyMS1tYWludAorMjQ1MjMgMmQyMTY1MGY0NmY4OWQyZWEwZmM1YmRhNjZiN2JhZDU3MWQ0NTE1ZCByZWxlYXNlMjEtbWFpbnQKKzI0NTI0IDE1MWI2OTY3YmQyMTBiMmMxMmNlNWIxZDdmOGQ5ZjI4MWQ2ODViMDEgcmVsZWFzZTIxLW1haW50CisyNDUyNSA2NzA5YWQ0ZmU3NWVjOGU1NThjNmVlYTlmMWJjZjk1MzQ0NzU4ZGRlIHJlbGVhc2UyMS1tYWludAorMjQ1MjYgM2IwOWVhNzIzZWNlNzIyZTkxYzgwMzkyOWRlMWQ2NTFmMDJmNzBlOSBsZWdhY3ktdHJ1bmsKKzI0NTI3IGQyNmU2NTk1MDc0MDJjMzc2ZDI4YzVlM2FjNzRkNTA0M2RmNTgxNTAgcmVsZWFzZTIxLW1haW50CisyNDUyOCAxOThhZWJlMTIzOTk4ZDk2NWQ3YWFhZmI1MTYyMThlZDE3ZTRmMjM0IGxlZ2FjeS10cnVuaworMjQ1MjkgYTM5YWY4MDBiOWEzZWQ5ZjQ3ZTUxNGY2MGQwYmRmOWMyYzgzOWM5OCByZWxlYXNlMjEtbWFpbnQKKzI0NTMwIDE0OGZmZDk1NzYxOGQzMmVhZTA5NGJkOTk4ZGQ0MzU2YWIwOWFiMjMgcmVsZWFzZTIxLW1haW50CisyNDUzMSA2NTZjNGNmNTE2NWZhODBkYzM1YTY3Njc4NGNiY2U3NDkwOGRmM2NiIGxlZ2FjeS10cnVuaworMjQ1MzIgOTIwNWNmYjc3MDk0NjY1MDA0MTgwODJkOWIwMWE3ZmJjZTQ1MWJhYiByZWxlYXNlMjEtbWFpbnQKKzI0NTMzIGQyMjkwZTk3ZGUxODdkM2RkOTY0ZDNiYWJhYTM1MzZjNjk4NDIxNDYgcmVsZWFzZTIxLW1haW50CisyNDUzNCAzNDMyN2NmNDUyOTk0YThmMDViMzg2YWQ5OGQyNDY0MjQ0OWY0NjRiIHJlbGVhc2UyMS1tYWludAorMjQ1MzUgMjJkODIxNjczZTUyNjdhMTMzNWQ4OGUyM2NhMjg4MjE1M2EwOTZmNiByZWxlYXNlMjEtbWFpbnQKKzI0NTM2IDAyZDAxNzAzOTc4ODVjNmRlNzY1NzhkNzU0MDAwYjhhMjFiMzQ4YWEgcmVsZWFzZTIxLW1haW50CisyNDUzNyA0YWYzMTg2ZTY2MzE1MTg4MTcwYjA3YjBiZjJiOTcxZWUyNDUzZThiIGxlZ2FjeS10cnVuaworMjQ1MzggNWFiMGRjN2YyZWIwNDYyZmZlMzQ1MWU3ODBmMTg5NjZjMDRjOTBlNiByZWxlYXNlMjEtbWFpbnQKKzI0NTM5IDk1YjQyZjEwNTVjMjRlNzBjMTk0YmZhYjBhYzY3MjUzNzM3OTA2MzYgcmVsZWFzZTIxLW1haW50CisyNDU0MCAwYmM4ODM4NDA3YmI1Nzk2ZTg5YWJhZmFkNmViMTM4NmJkZjBkYmY5IGxlZ2FjeS10cnVuaworMjQ1NDEgYWNjYmU1Njg0YWM2MTRkNWViMzNkOTljMzlmODBmMTFiMmEyMTdmZSByZWxlYXNlMjEtbWFpbnQKKzI0NTQyIDAwZWNmZTE5YThkMjlmZWE0NGVkZDI5Mzg2YzlhYTgzMDE3YWU5YTEgcmVsZWFzZTIxLW1haW50CisyNDU0MyAwNjBjMzc1ODc5NTFiMWE4NDFjNTFhNDJhYjlhYWE4MGQ2NGU2ODQwIHJlbGVhc2UyMS1tYWludAorMjQ1NDQgYTNkMDFhMjI1MzI5NzNkYjYxMzFjYmUxNTdmY2FhYWEwNmIwODQ1OSByZWxlYXNlMjEtbWFpbnQKKzI0NTQ1IDQ5MzAxOThmOTJkYmYzNjM0MWMwMjAyNzhkYWU2ZDJkZDk5NTAyNTkgbGVnYWN5LXRydW5rCisyNDU0NiA4MDNjY2JlM2VlN2NhYjVjMjE4MjhhMGNkYjU4Y2U0NzNlOGNhMWIzIGxlZ2FjeS10cnVuaworMjQ1NDcgOWRjODdlNjFiNWEyZTIyZWUyMjllMDJjYzk5ZjcxY2I5YmRlNmI3NSBsZWdhY3ktdHJ1bmsKKzI0NTQ4IGI3ODI0OTBkYTdmMDgyMTg0MjYxNDBlMGIyNWMwODE4ZWM3MzRjMGQgbGVnYWN5LXRydW5rCisyNDU0OSA4OWE1YzExMDZiODJmMTgwODcyMGZiNzk1OGNkZTUzOWQ5ZmRjMmI2IGxlZ2FjeS10cnVuaworMjQ1NTAgNDJkMDgxOTU0NmQ2MDlmYjgyYjliYzI2MzU4NTg0YzdiM2ZlZDlkNCBsZWdhY3ktdHJ1bmsKKzI0NTUxIDNlODQ2MGZiMmZiZTQ5ZjgwNzZmZTUzMThlNzA1NzQ1ZWUwYTU3N2MgbGVnYWN5LXRydW5rCisyNDU1MiA5ZDZmYmNiOTUwZjliMzRhNGRjMWRiYzFlNDU1ODcxMTYzYmVkNmFlIGxlZ2FjeS10cnVuaworMjQ1NTMgNTRkZGMzNzlkNGZjMjg5ODAyODljMDAwNDBiZmY5NDkwNTRiN2JkYSBsZWdhY3ktdHJ1bmsKKzI0NTU0IGFkODc2NzRkZTNhMWIzYzRlZmVlMjU2M2FkMjU3NDJlZWVmZDZkZWUgbGVnYWN5LXRydW5rCisyNDU1NSA1YzBiYTZlYmM2MmQwY2RiOTMyNTM2MzQ1MGI2MWMxYTBhMmIwMDA3IGxlZ2FjeS10cnVuaworMjQ1NTYgMjAzNDkwMmIwZjFhYzg0YWZiYjVlZTk3YzE5ZjgyZGFkYjFlYzdjNSBsZWdhY3ktdHJ1bmsKKzI0NTU3IDEyODlhMDU1OWU1YTQ0ZGQxZDBjN2UwN2E1NGJjNzVhNDE2NTRiOGYgbGVnYWN5LXRydW5rCisyNDU1OCBiYTZhN2E1YzMyZTg3MTczMWJmYzdkNTYzMGJhZWM2ZDkwMDgxODc2IGxlZ2FjeS10cnVuaworMjQ1NTkgY2I5MjFkNDgzZTAwOTQyZTQ0ZmMxMjYzYzE5OWJjNGM4ZDViYWUxNyBsZWdhY3ktdHJ1bmsKKzI0NTYwIGJhMTY4NTZiZmJhYmQ4ZDRkZWEwMTIwZjZkOTAwZTlkMDZlZDcyMmQgbGVnYWN5LXRydW5rCisyNDU2MSAwNjJjNmY0NzEwNmZiZTFhY2Y0YzgwOGZjMzE0MDJkYTRiNjJhZjAzIGxlZ2FjeS10cnVuaworMjQ1NjIgMjI0ZWRiYWY2MzAxOTE1NDQyNTFiYTI4NzUwNzFlNzhlMzNiMzI5NiBsZWdhY3ktdHJ1bmsKKzI0NTYzIGIyNmQ1OGI5ODEwY2FkN2U4MzE2YzIwNjE4NzM4ZjAzN2Y2OGRlNTEgbGVnYWN5LXRydW5rCisyNDU2NCA0NWUxMTc3NDI0ZTFjNzk5Njg3MmY1YmJlZTEwYjczZWU3NWQ3ZmVhIGxlZ2FjeS10cnVuaworMjQ1NjUgZTM4NmY2ZTI2YTQyZTM4MWY3ODRlOWUxOTE1ZjUwYmMzMGZhYmNhZCBsZWdhY3ktdHJ1bmsKKzI0NTY2IGQwMjRhNWM3MmNiNTYzYzRiNDM0NDY5YzQ4M2RjOThiYWY4MmRkODYgbGVnYWN5LXRydW5rCisyNDU2NyAxOTE4NmIxN2QyNWFhMzkwMGQ3YmFhMGE4ODNmMGUwOTM1NjA3MmZkIGxlZ2FjeS10cnVuaworMjQ1NjggMTQ1MDc2NzFjMDJjYzk5ODlkMjk5YWMxMzJkYTZhZmY4YjY0MjY4MiBsZWdhY3ktdHJ1bmsKKzI0NTY5IGZiZjY4YzU5ZDY2Y2NkMjYwNzFhNzRhODdhZDM3NTMwZDdhYWQ3MzkgbGVnYWN5LXRydW5rCisyNDU3MCAwOGRiZjZiM2MzMTY0MzE4ZWJiMjU3MGRiYTg3YWYxNDc1YTViMDY3IGxlZ2FjeS10cnVuaworMjQ1NzEgZTVkMjk1NTQyYzdmYjk2NjExNjljMTdhODgwMTVkYmJmOTAwNzExMSBsZWdhY3ktdHJ1bmsKKzI0NTcyIDEwMmQxOGVhMDJjZmFjMzlhMjEzOGVhYjcyOWVhMjU5MWM4OGIwM2QgbGVnYWN5LXRydW5rCisyNDU3MyBjNTA2YmY3YjI2YjhhMGYxZjk4ZjJjZTlhZjBjY2QzOTZiN2M4NjUyIGxlZ2FjeS10cnVuaworMjQ1NzQgNDI3MWRhNzBlZDllMTM2MjFmM2U1NzU1YmMwZWIyNDY0YjkyZDNlMyBsZWdhY3ktdHJ1bmsKKzI0NTc1IGU4ZmVhOTVhODJhNDAzNjA3ODBhZGIzMDBiYWI0ZjQ3Mjc0YWI1MzUgbGVnYWN5LXRydW5rCisyNDU3NiAyZjJhYmVlZWZkODc4YmVmMzM3YzcxNmJlODllMDIyNTlkNTMyNWFkIGxlZ2FjeS10cnVuaworMjQ1NzcgMjY1NjdmMjg2NzdlMTRhZmI0NWVkOWQ1ZWYzYTgzOGY2ODVhMDZiYyBsZWdhY3ktdHJ1bmsKKzI0NTc3IGFiZWM0ZTNiMDgxZjJmODAyYzBmMjdiYzFlYTcwZWQ3NTJhYmQ4NGMgcmVsZWFzZTIxLW1haW50CisyNDU3OCA0ZGFlODQyYWE3YzU4ZmZkZTRiNDdiZjk1MDI4M2Y3MDdkMzc5MzQ1IGxlZ2FjeS10cnVuaworMjQ1NzkgN2E3ZjU1N2I0ZDU0MThlYjM3MDJkYTUyZTk1ZGM5YzgzZGU5NmUyYiBsZWdhY3ktdHJ1bmsKKzI0NTgwIGQyOTZlNmJiMTdlNTRjZjA3Y2YwMWUxYWFmY2ZiYWZiNzQ5MGM5ZGUgbGVnYWN5LXRydW5rCisyNDU4MSAyYjVkYzZjNzdjM2RlNmRmYjVmMzE1Zjk1OWI5YTNjNzQ1N2U1YTA3IGxlZ2FjeS10cnVuaworMjQ1ODIgOTc3MDlmZDhmZGEwMjZiZWU4YWEzZDdlOGVhYjUzYjNiMzE4NmY5NyBsZWdhY3ktdHJ1bmsKKzI0NTgzIGFjM2ZkZDE0MTJkOWVhYTgzYzdjYzAxNTkxNDk1NmQ2NTA2NjMwNjkgbGVnYWN5LXRydW5rCisyNDU4NCBkNjRkZmJkYzVmOGM0NDgwNmMwMjQzYzI2MDJiMzJjMjAxMDYxYzRiIGxlZ2FjeS10cnVuaworMjQ1ODUgZWNiYmVjY2RlMDdkZDNiOTYwNWU0Y2IwODVhNzkyOTNlODYzYzBlZiBsZWdhY3ktdHJ1bmsKKzI0NTg2IGNmYmUzOGEwM2U4YzE5MDdjMGNiMmU2OTlhMzMzNjZmODQwMmE3OTYgbGVnYWN5LXRydW5rCisyNDU4NyBiMDEzMjNiZmNmNmNlOTMyOWY0OTJmZTJhODg0MDJiYjhlNjY5NmZjIGxlZ2FjeS10cnVuaworMjQ1ODggMjhmNGNlYTIwOWQ3OGVhODZhNTI3OWRmODY3ZjkwNTE5YzBlMjYwNSBsZWdhY3ktdHJ1bmsKKzI0NTg5IGY3MDJmZjM5MGU0ZGM3NzNkMmMxZjI1NmE1OGE1YTEyOGMzY2IyNWQgbGVnYWN5LXRydW5rCisyNDU5MCAwM2YzMTU1Y2I2ZWJlMTdmYzY3ZDZlNThhYWZjNzc4NWI4ZjY2NjZiIGxlZ2FjeS10cnVuaworMjQ1OTEgNjQzMjQ0ZjdmNDY3MDhkMWU3MTk0ZDEzODFjOTdiMjMyMGI3ZDJjOCBsZWdhY3ktdHJ1bmsKKzI0NTkyIDM2NTdiZWZhYmE0ZjBhODFkYTFiZTFlZWJiZWY0MjIyOTU1YzUwODQgbGVnYWN5LXRydW5rCisyNDU5MyA5OTFiMTcwY2Y0Mzg1ZDEwMjU3MWRhM2E5MjZlYjAyM2YwMzVhNDU0IGxlZ2FjeS10cnVuaworMjQ1OTQgZDM1YTU3NzFjNGM2OWY0ZTNiNzg2MzA3MjE3ODE4MDA1NGQ1YzgzZSBsZWdhY3ktdHJ1bmsKKzI0NTk1IGQ0OTA3Y2RjYzI5OTQ1NDM2NjYzNDVmOGMwYmQ4ZDBiOGM2ZTQ1MDIgbGVnYWN5LXRydW5rCisyNDU5NyA0M2I4YTk2MmEzMmFlZWNlZTIzZDJiNmI0ZjIwOTk0ZTlhZDcwOGFjIGxlZ2FjeS10cnVuaworMjQ1OTggNTBmMjhlZDgwNDRmZmMxYzQ0NWZjNzNjMGZkMWE4ZDE3NzlhMTk2NiBsZWdhY3ktdHJ1bmsKKzI0NTk5IDFlN2MwYjg0OTU4NGQ3ZmY3ZmZiZDczZmEyMGZmNjBhMTU4MjZjODQgbGVnYWN5LXRydW5rCisyNDYwMCBkNTFmMjE1OGZhNzkwNzBhNGFkMTUzNTgxODAwYTUwYmY0YWEzZjBkIGxlZ2FjeS10cnVuaworMjQ2MDEgZDBjMjA0MGZlZGU3ZDRmYWQ4NWYzYTkxMDBkOTc5MmE0NGUxZDY4MSBsZWdhY3ktdHJ1bmsKKzI0NjAyIDc3NmRkMmU3Njc4ZTA0M2Q2NWU4NGMxZDQwODkxY2FhMjNkYmFlMzggbGVnYWN5LXRydW5rCisyNDYwMyA5ODM1YmFiMjg3NmU0MmY4M2Q2YmVjNTRhMGI3ODJhNjA4MDhlMzE0IGxlZ2FjeS10cnVuaworMjQ2MDQgMjM3NWQyZGZiNWIzYTYyYjg2Y2RhOGYzYmJjMjk0NGJkYWU4ZmIzOSBsZWdhY3ktdHJ1bmsKKzI0NjA1IGU4ZGRhYjEzNzMyYWJhZDBiMjk0OWM4YjljYmM2M2FkZWQ3MGUzNjIgbGVnYWN5LXRydW5rCisyNDYwNiBiODEwYzMwYjRhYTFhN2FkOTBlMDdkYmE5NmQwNDc1YzRmN2Y1YmMxIGxlZ2FjeS10cnVuaworMjQ2MDcgMjRhNmMzZmQwZTU4YmMwYTE5NDM2ZDBhZTdjZjU1NDVjODAyZWE4NCBsZWdhY3ktdHJ1bmsKKzI0NjA4IDU5ODk0NDk2YjVjNzM2MmRkNGVjOWNmYTY1NjQzMWY0MTlkNWEzMTIgbGVnYWN5LXRydW5rCisyNDYwOSBiYjc4YTUyYjhmZmNlMjcwNWRlODNhOTUxMDYwMjZlNTJjMTZjYmY0IGxlZ2FjeS10cnVuaworMjQ2MTAgMTE5NDIyNDMwZThmY2JlMWYyMGM5MDg5OGE3NWYxNWU0YTE5OTM3YiBsZWdhY3ktdHJ1bmsKKzI0NjExIDlhMjQzZWUzNTRhMTM0Y2M1ZDNmYWI3NzM2YjU3ZDU3MzQ2MTY2NWMgbGVnYWN5LXRydW5rCisyNDYxMiA2MmVhMzE3ZGZjN2Y0YTBhNThlNWYwMjZlZjZkNWI2ZDU1ZjAyNTYxIHJlbGVhc2UyMS1tYWludAorMjQ2MTMgZjU1MzJjYzE1MTRiN2RiNjM1YjA2NjRlNzg2NjBlOTQ4MTgyN2Y1MiBsZWdhY3ktdHJ1bmsKKzI0NjE0IDEyYzA5NGEyMzI3MzQ2ZTZiOWIzYTQ5MTNhM2Y5YzhkNDBjZmJlY2QgbGVnYWN5LXRydW5rCisyNDYxNSBkZTc2NDY2M2MzMjVjMDQ2N2E0NDAyZjZhNmUxM2FhODgyYzNkOWYwIGxlZ2FjeS10cnVuaworMjQ2MTYgYjZmNTkyZWVjMjQxZDZlY2NjYjI2ZDljOThiM2I3MjJmMzRjM2RlNSByZWxlYXNlMjEtbWFpbnQKKzI0NjE3IGQ5ODBlYmNjNjk2YTI4ODI5NWE4NDQ3Y2NjY2M1ZDM2OGJkYTYwZGYgbGVnYWN5LXRydW5rCisyNDYxOCBkODZkNmUwZDE1OGM1YzgyNDA3NDEyY2MxMjNlMDdjNzRjMzg2OGY1IGxlZ2FjeS10cnVuaworMjQ2MTkgMGQyZWVmNjM2ZDEyOWM1NzVkOTJkOTg1ODVhYTY3NjYyZTg5MGJkYSBsZWdhY3ktdHJ1bmsKKzI0NjIwIDg5OGM4MjVlMDhhY2NjZDY0NTA1ZjNkMmU2Mjc5ZmFlNTVkNzg3YjUgbGVnYWN5LXRydW5rCisyNDYyMSBjYjYyMDNmZjI5ZTVhMWUzYjU4ODAwNzA2ZmM1MjY0NGE1NGZjYzQ5IGxlZ2FjeS10cnVuaworMjQ2MjIgMjYwNzQzM2IxM2U5ZTgxZWNhMjgyZDMyYTM2MDJhNDI2ODM4OTlhMSBsZWdhY3ktdHJ1bmsKKzI0NjIzIDkwODA0YTM0ODkyM2RjN2YyNzY4YmQwMzc5MzYwNjI1MWM3ZTRlZmEgbGVnYWN5LXRydW5rCisyNDYyNCBiZmE1ZjdiNGU3ODg1OThiZWZmMWYyMGZjODU3ZWMwM2Q1YmJmZDBmIGxlZ2FjeS10cnVuaworMjQ2MjUgMDEwMjY5MjQxN2FmMGZlM2UxMmUxYjIxN2VjMWY5NTVhMzBjZTZhOCBsZWdhY3ktdHJ1bmsKKzI0NjI2IDkxZGQyMjM4MjljNmUwMzU2MDExYmUyYzZjMWY0YmI0NzliMTY1YTggbGVnYWN5LXRydW5rCisyNDYyOCA0ZDUwOThjZmE3ODFiZmUzYTdiZjMzZWE2NjRiYjJhMTU5YzJmMWFlIGxlZ2FjeS10cnVuaworMjQ2MjkgOWIyZDFmOGY0YmUzNDk4M2I4NDA5ZjI5MTAzZjA5MGU1OGFjNWVmZCBsZWdhY3ktdHJ1bmsKKzI0NjMwIDBjMmVhMjMzYWQyNDkzYjUwNDliMGMyZDgyZWViYzEwZmU4YTU1YjQgbGVnYWN5LXRydW5rCisyNDYzMSBiNTgzY2FmMWJlODgyYjMyOTgwOWIxOTAzZjk5ZTYwMGVlY2NiODIwIGxlZ2FjeS10cnVuaworMjQ2MzIgYmI1NjZmNTI1ZjEyY2Y4OGVkY2JhMDA3Yjk4N2NmODMyODU1MzUyMyBsZWdhY3ktdHJ1bmsKKzI0NjMzIDRiY2ZiOWRjNTdlMDNkY2IzNTA4ODJlNzYwNzQ2ZDczMTBhZmE2ODEgbGVnYWN5LXRydW5rCisyNDYzNCA2MGRmMmJmODU0YWNlNDE3YjcxMDA4YTU0NjAxOGFkMTJjMjM5NWE3IGxlZ2FjeS10cnVuaworMjQ2MzUgM2EyY2Y1ZTQ1NjU2YTk4YTc1NzI5NDM1YTM2M2Q2YzljMGFmMGE5YiBsZWdhY3ktdHJ1bmsKKzI0NjM2IDE4NTJjYWJhNzAxNGI0MTU0OTdiMzk4YjJmYjIwOTVmMWQ3ZmQ0NjUgbGVnYWN5LXRydW5rCisyNDYzNyA2NDQ4ODUxMThmZTc3OTg3NmM3Mzk5YmFhYjM0YmY1NmRkZTczYTcwIGxlZ2FjeS10cnVuaworMjQ2MzggNzUyZmE0ODVjNGFiYTVmNDcyYTExMjVhZjc2OTFhZWQ5MmY1OTk1MCBsZWdhY3ktdHJ1bmsKKzI0NjM5IDhhMjZiYjM2OWY1Mzc3ZDY4YTM5NzEwZmNhNDU0ZWY3NmQ5YTJjY2IgbGVnYWN5LXRydW5rCisyNDY0MCBjOWFkYWNlM2M4MjNlZmRmNTdkNGFmZDk5YTNlNjAyMjQxNWY3MGQwIGxlZ2FjeS10cnVuaworMjQ2NDEgMzRhMWE1MGU2YWI2ZjgxOTFhMTZjNmUyZmYzYmY2NGJkOGRlZWQwMyBsZWdhY3ktdHJ1bmsKKzI0NjQyIDc4NGM4YmMwYjMwMzRhNTQ4NWEzZmQ3OWE4MmEzNmZlMDI2ODI1ZmEgbGVnYWN5LXRydW5rCisyNDY0MyA4NDhmNjk4ODgyOWYxYTJlNTQwZDRmZmY3N2Y4YTc1MjA2NWMzMWVjIGxlZ2FjeS10cnVuaworMjQ2NDQgNDQyMGE0YmQ5NmE0NGMxYTMwYzVhMDljYjc2NDI2ZGVlYzc5MWM2MSBsZWdhY3ktdHJ1bmsKKzI0NjQ1IDJhN2Q1ZmZlY2UxYzliODdiZjQ0M2I4YTVjODM2MTc5Mzk4ZDU2YWMgbGVnYWN5LXRydW5rCisyNDY0NiBmYmJkOGE0Y2E3YTZmY2M1Yjk4OThhOWI3ZWM2ZDA0N2I4NDJjYmY1IGxlZ2FjeS10cnVuaworMjQ2NDcgNmQ4NzRhOTFiNThiODFiODgzYTBjOWUzZmEzYzZkZjQ1MWM4MmI1NiBsZWdhY3ktdHJ1bmsKKzI0NjQ4IGNmMmZiMjBhNmNlN2ViM2IwMmVkMjllYmFhNjNiYWQ2MTAxNzE0ZTMgbGVnYWN5LXRydW5rCisyNDY0OSAxOGY2MDgxMGI5NGEzZjAxMGZlNGQ4MTQ1ZTNkZTM1N2ZmN2JlZjdkIGxlZ2FjeS10cnVuaworMjQ2NTAgN2M2ZGY5NjRiMDRiYjQxNGFiNDViOWJhNTYyYjIwYjVjNWMxYjFlMCBsZWdhY3ktdHJ1bmsKKzI0NjUxIDkzZjU0MDU4ZWY0OGY1ZGNiZmQ5Y2EwNTIyYzU2MzkyMzQyYzQ0NTAgbGVnYWN5LXRydW5rCisyNDY1MiA2ODA0MGRiMDg0YjZhYTU3YWNkNWU2ZjIyNjdlNWY5MDI5MDY3NTMxIGxlZ2FjeS10cnVuaworMjQ2NTMgNTI1Yzc3MzY4Y2QwNTdkZjM1OTc2Y2U3YmE4ODQ4N2UyZmEzZTMwZCBsZWdhY3ktdHJ1bmsKKzI0NjU0IDNkNjhlMzExMGUxZmU1OGVlNmU2ZTUzMjFjYmU0N2NkMzQxMzc1NzcgbGVnYWN5LXRydW5rCisyNDY1NSAwYjFmYWYxMTZmNjNlYThjNTZkMTdmMjQ3OTUwMTJhYTlkNDE3MGFmIGxlZ2FjeS10cnVuaworMjQ2NTYgYTM5MmUxZmFlNjFkZDIyZmU5MTIyODE0NWVlZTNjZTA5OWQyMjIwYSBsZWdhY3ktdHJ1bmsKKzI0NjU3IDdhNThjZDMzN2NmNDQwYTFjMTEwZDEyYzllMTI1MDUzNWQ4MjNmODkgbGVnYWN5LXRydW5rCisyNDY1OCBmN2VhZWVhYzljNjVlN2JlNGI4MWM4NzM2ZDg1YjJjM2U2ZTlhYjI0IGxlZ2FjeS10cnVuaworMjQ2NjAgZDFmOTM4ZWVlNzAwYTI2MjkxNzc4YWQ5MDg1MTlmNzMwZTc4MGY3OCBsZWdhY3ktdHJ1bmsKKzI0NjYxIDhhOGY1N2RjZjlmZTczNjM5N2Y0OTliMzI1MzM4N2E2MzVkYTQ0NjQgbGVnYWN5LXRydW5rCisyNDY2MiBmNTljNmI1ZGQxMjIyYjJmY2IyMmQ1NGZhZmU2ZTcyMjhkNzQ5ZWQ1IGxlZ2FjeS10cnVuaworMjQ2NjMgMTIzMTBkNjQzZDhkNzI5NzY1ZDExMzJjNDE5NmUzMmJiMDkyY2NiYyBsZWdhY3ktdHJ1bmsKKzI0NjY0IDkzOGI1YmY3NGZiOTRmNWJmODU1Zjc4MzJkMGEyMzNkNmE0ODYxOTYgbGVnYWN5LXRydW5rCisyNDY2NSBhNTE0NmY4NDMwMTAwNjI3NTBiMzQxZTY3Yjk3MzMxZjc3NTQ5Yjc5IGxlZ2FjeS10cnVuaworMjQ2NjYgYmU5OTBlNzAzZDBmMTQ3MmNmZGM3NDI0ZjkxMThlZjY0NmIyNmMwMiBsZWdhY3ktdHJ1bmsKKzI0NjY3IGJlMzI4M2VkOGY5NzU4ODQzOTMwNGM4NTk0MDBlMjc2NzE2ZGFiOGUgbGVnYWN5LXRydW5rCisyNDY2OCAyNTdjOTM4OTAwYTZlNWUzZDRlNzgwMWZlOGE4ZjlkMDExOWRkOThlIGxlZ2FjeS10cnVuaworMjQ2NjkgZmJkZGI2NGQyMWMyY2IzZDk4ZWNiZmIwYzk1MTUyMTY2ZmI4Mzg3NSBsZWdhY3ktdHJ1bmsKKzI0NjcwIDAwM2RjNTczYjI5NTBjZWI0ZTc4MzE1MjYyNjFkNDU4ZTVhNTZlN2EgbGVnYWN5LXRydW5rCisyNDY3MSBjNjcwNDZlZjUzODU2N2JjZDRhYzk1NzI5YzI3MGU1MGI1MzU0ODJlIGxlZ2FjeS10cnVuaworMjQ2NzIgZGUzYzg4YjVmODg5NjJiZDdmZTFhM2Y2NDU0YTkwOTZhMGMxYTY3MyBsZWdhY3ktdHJ1bmsKKzI0NjczIDJlYjI1ZWYzNDM4NmMzOTc1ZGQyZGNmMmViM2Q3MGE3YWUzOThkMmMgbGVnYWN5LXRydW5rCisyNDY3NCAyYzIwOGRiZjBjYjAzODc1NzA3YmQxMDdjZDcxZTVjYTNiZjU4NzU5IGxlZ2FjeS10cnVuaworMjQ2NzUgMjkwNzJlOGU4ZDk4MmIxYWZiYTQyNjc5MWFiM2U3MTk5N2VjY2NhZiBsZWdhY3ktdHJ1bmsKKzI0Njc2IGU4YjA5OGZlM2RmODc4ZjhjNDFiZGRhMzgzZTAzY2VhZTg4NzcxZTUgbGVnYWN5LXRydW5rCisyNDY3NyAzMDEyZjYyNmRmN2NiMzVlMTMwY2VkYTA5YjYwMmY3M2M4MDRiMzJhIGxlZ2FjeS10cnVuaworMjQ2NzggNzFlNWVlY2Q1ODllNTVjMzM1NmVjYmNjZjBhZDJjODAyZjdmOGY1ZSBsZWdhY3ktdHJ1bmsKKzI0Njc5IDA0MDIzMGMxNTg5MDQ3YTdlMmNjMmY1ZWE5Mzg3ZmJiNTU5YTdmMTAgbGVnYWN5LXRydW5rCisyNDY4MCA1YWI5YTY1ZTIzNDY2MTQ2MTUzNWIxYTQ0NzFmYzZmMDdhYzZmZWJjIGxlZ2FjeS10cnVuaworMjQ2ODEgZjU3NzY3ZDc2ZGU2ZGI3ZjRmNGRmNTBhNDM5YTM3MzQ1ZGI3NGMzMSBsZWdhY3ktdHJ1bmsKKzI0NjgyIDhhODlmZjFlMDY2MmRiNGRhMDRlNTllNmI3ZWE4ZTNmYzg2ZmJmYTEgbGVnYWN5LXRydW5rCisyNDY4MyBkODdjYTkzMmU3MGZjZDBiYTUwMGFhODcwOGVjY2E1MTM2NDc5NDVhIGxlZ2FjeS10cnVuaworMjQ2ODQgYWY1MTYwNGQwMGRiMjcxNDQ5Yjc3ZjEzYjY4MTZhNTA2N2I3ZmJjMiBsZWdhY3ktdHJ1bmsKKzI0Njg1IDhhMDM1MDg3ZWI3Mjk3NzZiMjdkZWQyZGFlYmYxOTRmZTcwNTFlMDYgbGVnYWN5LXRydW5rCisyNDY4NiA3MzQ2NmE3NmYyNWUyZTcxNzI1MjkwNDg3YWRjN2VhMmZlMTQ0MzFlIGxlZ2FjeS10cnVuaworMjQ2ODcgYzI5NjZhN2JkMTEzNTE0OTgzOWQ0M2UwYjFmZGNlMGQ2OTgxMmZhMiBsZWdhY3ktdHJ1bmsKKzI0Njg4IGM1OTM5ZDBjNzQ3YTQ5MmMyNTJlZmM0NzI4YzNjZWJjMzYxYWUxNjkgbGVnYWN5LXRydW5rCisyNDY4OSA0OTc3MmQzMTg0NDBiOGI0OTU2YmFhZDMwNjRjYTlmNTA2NjAwNTdiIGxlZ2FjeS10cnVuaworMjQ2OTAgN2UwZDJkNTliYmNlOWI3ZWM0ODc1OTFiZDc2NjYyNWRlOWNhNjg5MCBsZWdhY3ktdHJ1bmsKKzI0NjkxIDUwZDAzNjZlOGYwNTgyMmY5Y2ViODEzNGNkMTM0ODkxMWQwNzBmZTcgbGVnYWN5LXRydW5rCisyNDY5MiA1ZjU3MTM0NGM4OWNjZjAzMjY3MGIwZGQ3MTg2MmViNzliMzJiM2VkIGxlZ2FjeS10cnVuaworMjQ2OTMgMTE2YWYyZjAxNDQyYTkwMGIwODhkZTdlNjE3OTBhMjU0YmQwZGE1YSBsZWdhY3ktdHJ1bmsKKzI0Njk0IDc0M2Y2N2JlZmI1N2U5NTMyNjhjNzI3ZTVmY2ExM2MyYTU4M2JiOTkgbGVnYWN5LXRydW5rCisyNDY5NSA0NGViZWFiMjY5YzVhNzdlZmUyMDgwMDJmYzhjOTc4Y2ZlZTdiNWQyIGxlZ2FjeS10cnVuaworMjQ2OTYgOTEzNDU4ZWFlZjkwMGI5YzE2OWZhNGI3NTZmODRjN2U4YWNkMmU1MSBsZWdhY3ktdHJ1bmsKKzI0Njk3IGQxNmIzMjcxODFhOGQ2YjE2MTNkMjI2NzUxYmU1NmVmZDJjYzMzMGEgbGVnYWN5LXRydW5rCisyNDY5OCBhYmNkMmY1MmYzMTZkYTA3ZjMyNGQ1YTRjMTkxNGE0MTMxMDk4ZmVmIGxlZ2FjeS10cnVuaworMjQ2OTkgYzQ0YzkxMTYwNmE0NGNmNzEzYTAyMGZlMDRhODBhM2E2ZjFkYTg4ZiBsZWdhY3ktdHJ1bmsKKzI0NzAwIGViNzhmMDNkY2RlYzY4MzAyODNmM2ExZTcwOWU0NjBhYmUwZTMyYTIgbGVnYWN5LXRydW5rCisyNDcwMSA4MWE1NzhlYjczNDYzOTVjZmQ3NzJlZmI2ZWE5MDdmMTZlZGRmOTRmIGxlZ2FjeS10cnVuaworMjQ3MDIgNDJjZDUwNTk0ZDBkOTc4MmQxYzdiNjAzYWJiMjEwZjczMmFkODUxMyBsZWdhY3ktdHJ1bmsKKzI0NzAzIGRmYWNjNzMzY2JmNGI1Yzk0NTZjMjdkMmZlNWQzZjEzMDRjODU1NDcgbGVnYWN5LXRydW5rCisyNDcwNCA3NTAzN2Q4NmIxMTM2MzE4MTcwZjhlYzdlOWVkMDJjMjlmYzMyNDUxIGxlZ2FjeS10cnVuaworMjQ3MDUgOTZiYmIzZDBjNmEwNDRmMDE2MjVlMWFiZTdlYzQ1N2Y0NWUxZWU2ZCBsZWdhY3ktdHJ1bmsKKzI0NzA2IDJjMzJmYzVmMjNjMDM3MDQzZjJlNWUxYmViNzMxZGIzMzdiNmU3MWYgbGVnYWN5LXRydW5rCisyNDcwNyA2NTc4YzdkYzMyOGIxZTcyNzY5Zjk5YmU0ZDYyNDVkOTJhOWMxNjY5IGxlZ2FjeS10cnVuaworMjQ3MDggM2YzZWYwNzQzNTM3YjI3YTQwODcwZWJlN2Q5ZmYzODBhMDIyMWEwZiBsZWdhY3ktdHJ1bmsKKzI0NzA5IDgyYWY1NGI0MzgxNzc1MWNlM2U0ZjQxMDRiZDQ0NTAyNzA1ZDA1YzUgbGVnYWN5LXRydW5rCisyNDcxMCA1NjAyMjJlOWQ0NzEwYjBhNGY2Mjc1ZjJiZDc1M2FhMjY1ZDRmZjMwIGxlZ2FjeS10cnVuaworMjQ3MTEgZWMzMmU1OWRmNDAwYmI3NjdkNDA3MmRlNmMyZWZiMmY5NDAwMTMwNCBsZWdhY3ktdHJ1bmsKKzI0NzEyIDVjOWJhMjQxODM5MDFiZjU5MjQzNzhjOTFlOTJlZjIyNzg4ODgyZjMgbGVnYWN5LXRydW5rCisyNDcxNCBkZTEyNTc5MmJmYWFkZGQwODJhNzkwNmI5MjU2YzAyNGZjYWI1YWQzIGxlZ2FjeS10cnVuaworMjQ3MTUgMzNkNTllMThiNjhkNDQ0YTM1ZDU3N2M2ZmZhOTA1NDFiZjhkZmI4YiBsZWdhY3ktdHJ1bmsKKzI0NzE2IGNiMDhiYzY5ODY4NTllNzRkNjVhNjlhYzA0Nzk0NzViZDA4M2FjMjEgbGVnYWN5LXRydW5rCisyNDcxNyA2ZGE2MDkxYTMxZWVmMjA5YTYxMTQ3YzE5YmQzZTg4YmYxNDE0ZTVkIGxlZ2FjeS10cnVuaworMjQ3MTggMDViYzU5MDUyMjQ5MzRlZmE0MzY0MDgwMzMyYjMzYzYxMWJjNDAwYyByMjJyYzEtYnJhbmNoCisyNDcxOSAyMmM5ODhjYzE1MmQxMjJiMjQ3MTdlNzZkYzY0MDgzN2U5NTJkOTJhIHIyMnJjMS1icmFuY2gKKzI0NzIwIDNkOTdhMDU0ZjlkNGFmZTVhNmE3ODZkM2I2ZTgxN2NkZjBhMTM3YTYgbGVnYWN5LXRydW5rCisyNDcyMSA2OThiNmVlYjlhODZkODkzODFiYjMzNTlhODI0OGMxYjM5YTNlNzQ5IHIyMnJjMS1icmFuY2gKKzI0NzIyIGViZjhhMDM2MTUxZDQ2NWMyNTk2ZWE4MmNmMGEyMTFhOTBmM2RlN2EgcjIycmMxLWJyYW5jaAorMjQ3MjMgMjA0ZDFkNWIwOGQ2OGE4Yzc4ZjU3MDgzODVkYmJhMjZlOTUxYzZlOCByMjJyYzEtYnJhbmNoCisyNDcyNCBmYmQ1N2VlNWI3N2Q3ODI1MDA5MjkxY2U3NWExZDVkODZhMjIwOTM2IGxlZ2FjeS10cnVuaworMjQ3MjUgM2NlODcxYTA0NTViNTJkNWRiNDQyMWFiOTBmZDU2YTliZmUxMzFjNiByMjJyYzEtYnJhbmNoCisyNDcyNiAzNjNiMmY3NTI5MzUxZWRjYWJiMDVlOWJiZDM5ZjEyNjM1MTc4MjFhIHIyMnJjMS1icmFuY2gKKzI0NzI3IDZlYTcxOTNiZGMyZWFmZDE5NDNlNWFkODM1N2E5MjI4MDZiNmZlZTIgcjIycmMxLWJyYW5jaAorMjQ3MjggMDY0MzExMTQ5Y2I0ZDNkZmM0OGJlZTJmYzRlYzkxN2MwN2VjNmFjMSBsZWdhY3ktdHJ1bmsKKzI0NzI5IDJhZmU0MmYyNDU1OTA4ZjBkMDBlNDNkYmZhYWYyY2U4MjNmMDRkMDMgbGVnYWN5LXRydW5rCisyNDczMCA5YzgwYjVhZjgxMjFhNzRiZGEyNzA4ZWZhM2FmOGMxZjYwZWI1MTc0IGxlZ2FjeS10cnVuaworMjQ3MzEgZmUxOGViMDU1MTA3NDA4MjY5YjUyOTZiZGNlMDAyMDM1ZDdiZDc4ZCByMjJyYzEtYnJhbmNoCisyNDczMiBjZWRiNTAzOTE1NWE2NTUzMzE0YTJmNzQzZmY2Mzk3YzQ4NzY2NDNhIGxlZ2FjeS10cnVuaworMjQ3MzMgMzFhMjQ5YTM0MGY4MTdhZDI5MWI3YmJiN2I3NWM3YzVlOGJjYWQxZiBsZWdhY3ktdHJ1bmsKKzI0NzM0IDg1MDg2ZjNlNzBmMzQ3ODg5M2Y0YzZjZWRkNzJhOTRiZTgyMDJlMWMgcjIycmMxLWJyYW5jaAorMjQ3MzUgZmRjMGNmNTZiYTljZmQ1ZjAyNGVlNDJlN2E5MGQ1YjE2MGRmZmRiYyBsZWdhY3ktdHJ1bmsKKzI0NzM2IDI3NjY4ZGFiNzdmODhhY2YyZWVhMDVmN2YwZDU4ZDYxOWMxY2JkMTMgbGVnYWN5LXRydW5rCisyNDczNyAwNDA3Mjk0MDIxYTBhNmEwMThhMTY4MjM0NTFmZmZkZDQ1ZDkyNWQwIGxlZ2FjeS10cnVuaworMjQ3MzggMWQ4OWRhODI1Zjk1Nzg4NmViZGIyY2ExMzE4ZmY1MjYxM2FiZDVjMyByMjJyYzEtYnJhbmNoCisyNDczOSAwYTk0OGNlNDdlN2EwNmEzNTI2NzU3ZjdiM2ZhZmU5MzUzZWMxZGRjIHIyMnJjMS1icmFuY2gKKzI0NzQwIGU2M2Y0NjY4Yzk1ZDA4NzA5M2ViNjY0YTdlMjQxZjU1OTIxNjhmNzQgcjIycmMxLWJyYW5jaAorMjQ3NDEgZmYxYjU3MWFjYTcxMGY0MDM5MTk5OGQ2OWM1YjA0OWUwYTNkY2MzMSByMjJyYzEtYnJhbmNoCisyNDc0MiA4ZmIwYzI0ZjRkNDUwZDk0MGI0ZTVjZjYzMzNjNjFjYTYzYzVjODJhIHIyMnJjMS1icmFuY2gKKzI0NzQzIGIxMTc3NGNjZDEwMWY3MzBlOTI3MTMwY2VmMTBjODE4NjFiMDM4YzIgcjIycmMxLWJyYW5jaAorMjQ3NDMgN2Y0Njc4ZWVmYWZiMTQzOTM1YzM5YzAzNjRlMGI1M2IzM2QyODgyMCByMjJyYzEtYnJhbmNoCisyNDc0NSA0MjE2ZWYxOTYyMGJiZGVkZTRjYjNiMWYzMDVmNTk2YThlMzdlZTYzIGxlZ2FjeS10cnVuaworMjQ3NDYgOGIyYmQwNzgwOTI1ZjlkNWYxYzZiNzc3MGVjYTg4MmQzMTI0NDQ2NyBsZWdhY3ktdHJ1bmsKKzI0NzQ3IGY1MzZmODUyOTViODYzN2NiZjE1YTc1ZTNhNTcyNzFmZjIyMmI0NmQgbGVnYWN5LXRydW5rCisyNDc0OCAzZmNiMjI0OGJiZThkOTA3ZThlNmNjZTE4ODVjNmIxMTgyYmY4ZTIyIGxlZ2FjeS10cnVuaworMjQ3NDkgNmIzMGMzZjQzNzhkNDMwNGNlMWU3ZjY4NjQyNjc1MWFkYzVlYTNlNCBsZWdhY3ktdHJ1bmsKKzI0NzUwIGMzOTIwYzQzNTMzMzE4ODRmMmYyMjhkYWZlNTJjYWZmN2JlOTY3ZTQgbGVnYWN5LXRydW5rCisyNDc1MSA1NzFkNWI3Yjc0NmM4MmFkODExOGQ0MmMzYjZhMmFmZWNlYWUwNmVkIGxlZ2FjeS10cnVuaworMjQ3NTIgODEzNDllNTE2NTliNTFjNWZjZGUyYWVhMmNkMWJhNDk5NmU3MGNmZSBsZWdhY3ktdHJ1bmsKKzI0NzUzIDRjYjIyM2VmODY5YmEwNTM3YzdjOTFiY2I3MDM4ZGE3NTM4NTg2NjAgbGVnYWN5LXRydW5rCisyNDc1NCBhYTQ3NTNmOTQ1NzIyMTQxNjIxNjA5Yjk5N2QxZjBiYTgzN2IyYWMyIGxlZ2FjeS10cnVuaworMjQ3NTUgNTU5MjEyNTVlYzkzZDIzNDM4NGFmMWE2NzZlNDc4MTQxMDM1NjRlMCBsZWdhY3ktdHJ1bmsKKzI0NzU2IDI3NGFhOTFiNDE3YzEzZjUwOTkwMjJmMjBmZDk2MzI3YTMzYjdkODMgbGVnYWN5LXRydW5rCisyNDc1NyBlMGUyYjYxNjFjN2ZkNmJkZWFlN2FhOGMxNDI0NmNjNTUwMjYzNTAxIGxlZ2FjeS10cnVuaworMjQ3NTggYTk2NTZjZTAxNWIwZDhmMTI5ZDc5YTg3NzBjYTQwNDc1ZmEyZTc5YiBsZWdhY3ktdHJ1bmsKKzI0NzU5IDA2M2Y4YTMxYjZiOGI3MjllMmM4Zjg3ZTE5MzQ5ZjYyMjdhYjY0ZWMgbGVnYWN5LXRydW5rCisyNDc2MCBhNjIwZWY4NGIwZmIyNjIzMTg1MTgyODQzZGZjZmNmNTM1MGI3YzcxIGxlZ2FjeS10cnVuaworMjQ3NjEgM2ZjYzJlMjk5MmQ0ZDVlNTdiNDc3Yjk0NTVlMDA4ZjE3ZjE0YjhkOCBsZWdhY3ktdHJ1bmsKKzI0NzYyIGIyZDMzOTEzNjRiYmI3MzE2Y2YwMzA0ODI4OTZiYmQ3OTA3MzQyMTkgbGVnYWN5LXRydW5rCisyNDc2MyBkYmQ2YTc2MTIxNTk2YmUwM2IzY2NhYTczZGNjNGZiZjRjMjk0MTQzIHIyMnJjMS1icmFuY2gKKzI0NzY0IGEwMjllMzQ4MzA0YzhlN2NhNTkxMzhmMDk0NjVlYmYyYThiOTMyMTEgbGVnYWN5LXRydW5rCisyNDc2NSBmZDlkN2FlM2Y5NGE3MDI1ZGU2NWQ1MjE4ZjM0YjM4OGRkNzY1MTJjIGxlZ2FjeS10cnVuaworMjQ3NjYgM2QyY2M4NTc3MTI3ZTU2M2U4ZmIyY2NiNGEwNGEyYTUwYjU5OGYyNSBsZWdhY3ktdHJ1bmsKKzI0NzY3IDE0NTBlZTZiOGI5ZWNkN2RhOTdhZDYwMjY2MjQzOTBkYmUyZTAzN2QgbGVnYWN5LXRydW5rCisyNDc2OCBjNjVmYWM3YzI4NDMzZTZlODYxNGY1Y2Y4NmU4OTM0MmY1OTNkZjhiIHJlbGVhc2UyMS1tYWludAorMjQ3NjkgOTdkODU3ODgxYzgyYWYzZDJkZTk3Yjg3ZWVkYjY0ZWNiMjA5YmM1MSByZWxlYXNlMjEtbWFpbnQKKzI0NzcwIGY1NDY2MjNlZjBjNjU2NWRjZmI0ZTkxNGFlMzhjOWRkN2VmYzU0MzAgbGVnYWN5LXRydW5rCisyNDc3MSA1YTU5MGYxOTZlYzU4M2E3MTgwYWU3Y2E1NThkZDJkNmIxZDliNDlhIGxlZ2FjeS10cnVuaworMjQ3NzIgOWE2MzRkNjA1NDJhZTcxNjQ0NjI3MzBjNTU0NjdlYzAzOTY1MWIzNiBsZWdhY3ktdHJ1bmsKKzI0NzczIGQ3YTllYmE3NGZlMjYxMWNmYTBlYjBmMTA3MjFlMTBkYjNjOTM1MDUgbGVnYWN5LXRydW5rCisyNDc3NCAzMGVmZTQ2ZjhlM2NhYTVhYjFmZTQ0MGExOGIzMTczOWZiN2VhNDY0IGxlZ2FjeS10cnVuaworMjQ3NzUgMDVhZDdhNjlkOTMzMTFjN2RmMWE5ZDNhYzViMzU0OTA4NmU1MjUyZiBsZWdhY3ktdHJ1bmsKKzI0Nzc2IGQ3ZDI1ZWMwMmQ0MTI5YmVjZTNlZjBlYzZjZWIwMmI0YjcyODQzNjcgbGVnYWN5LXRydW5rCisyNDc3NyA0ZjYyMWJhYzc1MjY1ZGEyN2VkNDJiMzNhOGYyMTFjOTRlODEwMWRkIGxlZ2FjeS10cnVuaworMjQ3NzggNTE5MzI5MGFlZjBhNWI0YzFlMzM4NjgyZTc1NDE4ODBhZjNmZGRiMiBsZWdhY3ktdHJ1bmsKKzI0Nzc5IDQwYzU2ZmVmYTE3NzJiNjI5NDA2OWFhMjUzYWQ1MzFiNTE1MWM2NjkgbGVnYWN5LXRydW5rCisyNDc4MCA3N2M3NDc2ZjQxYmRlNzY3NDEyODNhMDU5MDdjN2Q5YzIyZjJiNjk4IGxlZ2FjeS10cnVuaworMjQ3ODEgN2U3NDU1ODkwZmQ2ZWIxYTU5YzZmYjU1NDQxNmIyZWEwMzM0MTBhZiBsZWdhY3ktdHJ1bmsKKzI0NzgyIDk3ZjA5OTY3MWJiY2RkZThmMDJiOGRlMDNjNmJiMzE1M2M4M2Y2MTMgbGVnYWN5LXRydW5rCisyNDc4MyAzYWJmMDAyMTVjMWNjZTA2MzAzYjUyMDJkN2UyOWYxNTBlNWQ1ZmZkIGxlZ2FjeS10cnVuaworMjQ3ODQgZmEwYmRlM2M4NmIyNzhiOTVkMGRlZGFkYmQ3ZjRkZDBhZDljOTJkZSBsZWdhY3ktdHJ1bmsKKzI0Nzg1IGJlNWNhMGIyNWJmZGM3YmRiMjYzMTgzMGE1ZDJlMWFhZDA4MGYzOTUgbGVnYWN5LXRydW5rCisyNDc4NiBmYjZiM2ZjNGUwYzFhYWIxMzQ2ODBjOWViZjBmODc0NjczNzBhMmFmIGxlZ2FjeS10cnVuaworMjQ3ODcgYmQxMmI1OTczZGFhOTk2NTI0ZTE5NWE2NDZmNzY3Yjk2OWY4NTJmNCBsZWdhY3ktdHJ1bmsKKzI0Nzg4IDdhZjQ1YWZmZDM1MzJhMGIwOGNmN2JhODRjNmI3NWI1ZDY4YjBkN2QgbGVnYWN5LXRydW5rCisyNDc4OSA5ODQ2NDM5NGNjZTMzNjgzYmFlZTE2ZmZiOGIyY2E4NDYzYzUwNDViIHJlbGVhc2UyMS1tYWludAorMjQ3OTAgZTNjMmZkMTc3YTZlNGUyZWU3ODk4OTM2YTgwYzVjZWU1MjhlYzRmMSByZWxlYXNlMjEtbWFpbnQKKzI0NzkxIGM1Nzk3YTAwODNkOGZhMmEwZDUzNmU2ZDg0ZDU5ZmE5MWZhZjllYTAgcmVsZWFzZTIxLW1haW50CisyNDc5MiA0NjVjOTMyNWFmNjlmNDE4NjRkMjZjZTg3NzBlZGM2OWI1MmU5ZjNkIHJlbGVhc2UyMS1tYWludAorMjQ3OTMgZjY4NWYwNzA0YmJkM2E5ODVjZDJjZTdlYjc3YjhmZTAxMDA4NDdmZiByZWxlYXNlMjEtbWFpbnQKKzI0Nzk0IDBmNzRkYjc0YThmNDA4MDMwN2JjNDhhN2JkZDBiNWRlYzk2YzYyOGEgbGVnYWN5LXRydW5rCisyNDc5NSAzMzAzZjJkOTJjZWY5YzhkMzQ4OTJlY2M3NDA0NzllNzAxZDlhMzc4IGxlZ2FjeS10cnVuaworMjQ3OTYgNjY0YWM4MjI3Y2M1M2YzZTM0YWM5ZGZlOTA2YjliYWUyZGRkODY2YSBsZWdhY3ktdHJ1bmsKKzI0Nzk3IGRmNzcwZGQwYmVjNGE3NmZlZmJhNGIxN2UyMTdiYmU4MThiYmY4YTEgcmVsZWFzZTIxLW1haW50CisyNDc5OCBiMjc1OTlhYmNjNDlhMTE3ZTgxZGRlNTc5OTdmYWRmNDlhMmNmOTZhIGxlZ2FjeS10cnVuaworMjQ3OTkgOTQyMzI0NTUxNGE4ODVlYzllNzdiZDliN2NmYThhMWNlZGE3MDU1NCBsZWdhY3ktdHJ1bmsKKzI0ODAwIDNhOTMxNDViNmE5NjMyZGIyNjk0NmRhOWI5N2FmMjNhZTcwNWJmOGQgbGVnYWN5LXRydW5rCisyNDgwMSA0ZTM1ZmE1ZDU3MDhkYzU1NzBjYmVhMzE3OTJkNmE3NGMzYjFjMmZkIGxlZ2FjeS10cnVuaworMjQ4MDIgODM0OGU4NDQxZWFmNzViZTg4ZWJiZTk3NzkyYzMwODIxYjQyYjU3MSBsZWdhY3ktdHJ1bmsKKzI0ODAzIGYxOGNmZGUyZTgwNDllOGUwZDI5NmZjZGRkNGYzY2JjYTZkOGUzMWMgbGVnYWN5LXRydW5rCisyNDgwNCA5NTlhMmVkNTczNWNkMDg1OWJkYmU5ZGQ2ZmMxOWJhNWY5MTFjNzFlIGxlZ2FjeS10cnVuaworMjQ4MDUgODAzYWEwYzJiMTMwZjkyZDVkNDI1Nzk2YzQ4ZjM1Yzg2ZjRkMWM4NiBsZWdhY3ktdHJ1bmsKKzI0ODA2IDY3M2JiZjExNTUwODkyMjVmNGU5YmFiMjYwZjgzNDk4NjZlNmQ0MjYgbGVnYWN5LXRydW5rCisyNDgwNyBlMWYzZmU1Njc3ZGEzZDhlZTVlZThhNGEwOGJkOGZlNTMyZDQzOTg4IGxlZ2FjeS10cnVuaworMjQ4MDggYTNiMDY3M2JhMmNhNWZhNDNjMzk4NTU2NzdmNGU0NWQ0NTdhMTI2ZiBsZWdhY3ktdHJ1bmsKKzI0ODA5IGFhYzIzMzMxYTI1ZDc4MzBlZmNmYjYzYTlkMzBjNzNjMzVmMDJjYzUgbGVnYWN5LXRydW5rCisyNDgxMCBhZjI2MjNiYjVkMGJjM2Q4ZGE0YjJlZDFkZWQ5MDdmMTI0ZDhlNjJiIGxlZ2FjeS10cnVuaworMjQ4MTEgY2NiMjZhMTE4ODY3ZTgyMDRjNzRhNzZkZTg4MGE3NDYyNTA3MzQ4NCBsZWdhY3ktdHJ1bmsKKzI0ODEyIGI0ODkxMGE5NTc5NzFhNzllOWEzOTc0ZWNiNzkzYTg4NmVmNDUwM2YgbGVnYWN5LXRydW5rCisyNDgxMyA0YzgyYzhlZDZkZjRkNGM0N2Q0NzU1YTk5NDNlMGNmMmE3MDQ4MjAyIGxlZ2FjeS10cnVuaworMjQ4MTQgMjFjN2Q3NTY1OTc3Y2VhNjk2NjdmZDg0NjM0MzkzZTY4ZDEzZTcyZiBsZWdhY3ktdHJ1bmsKKzI0ODE1IDAwYjNhZDFjZTQwNGQ2ZmZkMzNhYjY0ZWVmYzM1NmQwYTEwOGJjOWQgcjIycmMxLWJyYW5jaAorMjQ4MTcgMDAzYTk4NWNhYjk1YmJiNmE5OWI2MzYxOGIwYWZkMjNhNDNjNjJjMiBsZWdhY3ktdHJ1bmsKKzI0ODE4IDc2MjI1NDM0YTZmZWQ3NDRhMWMyZDRlOWRlZGVlMDE0N2ViZTg3ZjYgbGVnYWN5LXRydW5rCisyNDgxOSA4NzMyOTFhNDg4OWVjOTJlNmViMDhmNDc2MDVjNjM4MzQxY2M0ZmRkIGxlZ2FjeS10cnVuaworMjQ4MjAgMmQzNzZkOTI2ZGE4MmE5MDIxZmE4MTQyYjRkNWVmNDYwMjA4MTM4YSBsZWdhY3ktdHJ1bmsKKzI0ODIxIDlkOTVjMWE4OWNmY2IwYTMzOTdhOTY4YmU3NGEzMGZlMzZjMjQ4YzMgbGVnYWN5LXRydW5rCisyNDgyMiA1ZTA2ZjhmZTM4ZWU0YWZmODM3ZTExNmQxYTQzZGI4MzhhNjhkZDQ3IGxlZ2FjeS10cnVuaworMjQ4MjMgYTE5OTI2OTRjODI0MjVlMGM0MjVjNGUzMTMxMTIzZjRhZWQ3ZDU5MSBsZWdhY3ktdHJ1bmsKKzI0ODI0IGJiMTY4ZGU1MGEwMzJiNzM5OGM4ZTQ1MGYxYWIzNjI2MTliZGQzZGYgbGVnYWN5LXRydW5rCisyNDgyNSAxZDFjNDY4MjRmYzNlN2VkNTAwYWE3NGE1NGJmNDdlMmIxYTViZjRkIGxlZ2FjeS10cnVuaworMjQ4MjYgYmY2NDQ4ZjAyMjczNzRlZGE5MTg5ZWVlNWJkYWM1ODI3NmNiZDE2MyByZWxlYXNlMjEtbWFpbnQKKzI0ODI3IGNhNDUwZTRkZmY5YTYyNjQ4NDA1MjE3YzRlNDQwN2RlZmQ4YzhlZDYgbGVnYWN5LXRydW5rCisyNDgyOCAwNDQ2MzAxNjEwOTNjOTE3NDRjNTM5ZTZmNTBiOWVkNDBiNjNhZGE2IHJlbGVhc2UyMS1tYWludAorMjQ4MjkgMTYyMTA2YjE2ZTQ0NGMxYTQ3NWI2MDg0ZDBkZmZhNDRiMzE0ZGZiMiBsZWdhY3ktdHJ1bmsKKzI0ODMwIDQ0YzQ3OWY4NGUzNjhjMGI1ZjNkODUzNTg0YmM4ODlhZjMyNjgxMjggbGVnYWN5LXRydW5rCisyNDgzMSAyNDc0NDE0ZDQzNDI5MjRiMDZmYmI5ZGMxOGJiMDY0NDZmYWY4NGYxIGxlZ2FjeS10cnVuaworMjQ4MzIgN2MyZjk1ZGVjY2FkNWUyNDg0ODVjMDUwMTczODcwMTcwMzZiN2E4MSByMjJyYzEtYnJhbmNoCisyNDgzNCA2NWY0MDk0ZjQzZjQ2ZmQ1MjlhNjg0ZmUyOWE3OGMxNTIyMDIxM2JmIHJlbGVhc2UyMS1tYWludAorMjQ4MzUgODE0Y2UwOTI5NTNlYzIzZjM5ODE0ZmM4ZGMwZDQwYmZkNzg1ZTc1YSBsZWdhY3ktdHJ1bmsKKzI0ODM2IGU5MjAyZmUzMmYwYjhmZjZlYWI4NTk5ZDJjMzRmNzY4YmM4YmQ2ZmQgbGVnYWN5LXRydW5rCisyNDgzNyA4OGJhYTRjNGVlZTEwNWI2ZTQ3OWFmNGU1YmQxMzc2NjkzMGE4YzdmIGxlZ2FjeS10cnVuaworMjQ4MzggY2NhNTZhOTc2Y2IyNWNiMDYwMjQ4NTFlODFmYTEyZjIwYjJhNmI0NiBsZWdhY3ktdHJ1bmsKKzI0ODM5IDRhMzQ4NjJhMzk5NDIzZjQ3MDI1OTM5ZDM0NGZjMzhmMGFkODM1NzAgbGVnYWN5LXRydW5rCisyNDg0MCA2NTJlMTgyNzk1ODNjMTQ2YTkyOTY0ODVkMTdjZGQ5ZTRhYWZmMTRiIGxlZ2FjeS10cnVuaworMjQ4NDEgNWE1MDQxMDJhMDljNTAyNDdhMTIzYTc3ZDkxZDJhY2YzMzE5ZGJhYyBsZWdhY3ktdHJ1bmsKKzI0ODQyIGEwM2IxM2JlMmY2OGY5NWJkNDZkYmRlMWIyY2E4NjFiZmNmYTQ5OWEgbGVnYWN5LXRydW5rCisyNDg0MyAzODE1YTk1OTgxOWM0NjkzODNiNWU3ZjEzZmY4ODExY2FhNGM0NDFhIGxlZ2FjeS10cnVuaworMjQ4NDQgM2M5ZjM5MWQ3ZTAzMzg0MjBjYzJiZjg5NTlhZmViMDUwZDliMmNiZCByZWxlYXNlMjItYnJhbmNoCisyNDg0NiAzMjQ4ZWFkNzE5Mjg3OWQ4Y2JkMGM0MDQ3NGYxMzM0MDdmZWMxZDY5IHJlbGVhc2UyMi1icmFuY2gKKzI0ODQ3IGQ2YTQ0ZmQxZjRjMTQzNzA5MDY3OTI3NjIxOWY0ZDY3NjY2MWZjODkgbGVnYWN5LXRydW5rCisyNDg0OCBlM2RlMzhhYTY0NjIzMTQ4MWFkMDM2NGU0OWQwMDdjODQ0MDY3ZGFmIGxlZ2FjeS10cnVuaworMjQ4NDkgMDk3ZGQ5NTNlMTE5NjI0ZjAxOWY4OTA1ZWMzOGJmNzU1MzM2ZDZmZiByZWxlYXNlMjEtbWFpbnQKKzI0ODUwIDU2OGM3NWRkNTA3ODJhOWI0MDMxMTcxNmMyM2I5OGNiMGZlM2IwY2YgcmVsZWFzZTIxLW1haW50CisyNDg1MSA4NWU2OTRlOWI5ZmMxNDY0NGQyNTUxYjAzNDFkMmQwYWZkZWRlOTk3IHJlbGVhc2UyMS1tYWludAorMjQ4NTIgZTNhYTVhYWIyODc2ZGZiZTFkOWFkMWFmOWVlNWJkZmQwN2FjZWQxMiByZWxlYXNlMjItYnJhbmNoCisyNDg1MyA4MmFjODM0NzQ0NjI5MTEyNWFlMWNlY2ZjZmE4M2M2OGI3NjBmZGI2IHJlbGVhc2UyMS1tYWludAorMjQ4NTQgMjViYWJkNDMyYjI0ZjRiYjEyNWRhZTFlMmNiZWU4ZjE3NjAwNmZmZiByZWxlYXNlMjItYnJhbmNoCisyNDg1NSAzMjZkOTk3MmY2ZjYxMDAzNmY5YTRlOGJiZWUyMWExYTZhN2Y2NDA3IGxlZ2FjeS10cnVuaworMjQ4NTYgZThkMzZjMTgzMTM3NTczNzRmYmMyODY1YmQyMDBlNDcyNDVlOWRiNiByZWxlYXNlMjItYnJhbmNoCisyNDg1NyAwNDYxMmRjMzIzZGYzMDgyMGM0OGU4ZThlOGQyMTcwNTRkYzczY2ZmIGxlZ2FjeS10cnVuaworMjQ4NTggNzY3ZDI0NWZkOGRjZmI2OWVmNmI0ZjMzYjRiOWIyODFmMGYzN2VlNSByZWxlYXNlMjItYnJhbmNoCisyNDg1OSAwOTUxOGM0YzY4NTA4YjQyZDA4ZjcwODlhNDRiODlhZDkwMGEyNTY0IGxlZ2FjeS10cnVuaworMjQ4NjAgNDhmMzIxOThjZWI5MWY0OWRkOGEwMGE0MGQ5MmRkNGE1NWZlMDU3ZCByZWxlYXNlMjEtbWFpbnQKKzI0ODYxIDA4MjVlYjFkYmViODFjYWI3NjAxN2Y1ZjRlYTM3ZmJhMDA4YWQ4MjcgbGVnYWN5LXRydW5rCisyNDg2MiAxNzk5NzgyMDk3MWQwYzI5YmU1N2RjYzVhMWQ5Zjk4YTkyM2QxNGUzIHJlbGVhc2UyMi1icmFuY2gKKzI0ODYzIGZjOWUyNzExNzE0ZGVlOTk1OTZhZDM2NDEzZDAyYTJiY2ZmZTg3YmQgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjQgNmMyM2EzZmIwYjA0OTg3MmE1Mzc3NGFlYjE3NTA2NzI1MDZiM2EyZSByZWxlYXNlMjItYnJhbmNoCisyNDg2NSA2MDYzNTQ0MDEzOTZmNTQwNmJmYTAxOTlkNzJmYTRhYjFmNzA2M2ZmIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY2IDNmZmVlZGEwMjBkY2FlMTBkNjgyMjMyZTdjNWFiM2E4YjQwMGU0ZGIgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjcgNDc5Y2Y4ODJiZGI1ZTY2MmNiNzE4ZmQzYmUzM2EwNTA3MmI0NWQwMiByZWxlYXNlMjItYnJhbmNoCisyNDg2OCAxMTAwM2I2NjU1NDVkNjFmMTQ4YmU3YzA4NTAwOWMyZWM1MDdkNTBlIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY5IDMyNDY4NGFkYjQ4MzUyNDEwNTMwMTNjZTg3MDBhNTY0MDYwODAwNWMgbGVnYWN5LXRydW5rCisyNDg3MCA3NGM1ZGNjMTViNzM1NTY1NDkyNjg4YTViZTYwYWU4NjVhNzE2ODUzIHJlbGVhc2UyMi1icmFuY2gKKzI0ODcxIGU5M2YxNDQ4NjJkZTk3MmIxYjExN2U0NmExZmNhMzJmZmUyMDQ0NjcgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzIgOGFmODZhOTUyYjJjYTNmYTIwYjc4M2ZlOGQ4ZGUwMzQxZDcyY2U3ZSBsZWdhY3ktdHJ1bmsKKzI0ODczIDRmODkzMjEzNGRjYTNiM2ZkN2E0ODEwMjEyM2JiNjc0OGVhNDQxMDkgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzMgZGNhOGI1ODc0NjQzOWE5ZjdkZjIxMmY2NDNlZTRkNDBlYjhkZjI0YiByZWxlYXNlMjItYnJhbmNoCisyNDg3NSA5MzViODYwMmNhZDk4MzY3MDRhM2FhMTdjYmJkOGU0ZWM5ODI0MDkyIGxlZ2FjeS10cnVuaworMjQ4NzYgOTAyNTE5N2E4ZWEwYzRiYmM3NmEwZDA4YjI0NGU0YTdkZDhiMDIzMiByZWxlYXNlMjEtbWFpbnQKKzI0ODc3IGUwYTVkMTZhOWNiOTUxOTZjYTE4NjE0NDIzMDkzYmViMjIxZTM5ZDAgbGVnYWN5LXRydW5rCisyNDg3OCBjYjU1ZjE1YjI3MzAxMDVmZDliNTkzZTIxYTk5MDcyNGM5Yjk0NWE3IGxlZ2FjeS10cnVuaworMjQ4NzkgYjQ4NGFhNjFjYWI0YTZhZWU2ZmYwN2YxODkyZjk1YTQ1YTliN2VhMSBsZWdhY3ktdHJ1bmsKKzI0ODgwIDlkNDgwZDBmZTY5MDU3MWNmYmFlNTIwYjJkNzFkNjViYzFlYWUwMjIgbGVnYWN5LXRydW5rCisyNDg4MSAyNjhiNTdkOWRhZWQxOGEzYzhlNzZiNWQ0M2IwZmE4YTVkOTBjOTM0IGxlZ2FjeS10cnVuaworMjQ4ODIgZmM4MTMxNjRjZTlmOTgxM2U2NzIwMGI0NjdiYzhlOWY4NThiZGRjYiByZWxlYXNlMjItYnJhbmNoCisyNDg4NCAzNDlkNjZjZDg3NGMzMzVkYzQ2NTYwOTRiZDNiYzQ3NmYxYWI5NTJkIGxlZ2FjeS10cnVuaworMjQ4ODUgN2MyOGU5NTZmOWIwYmFkNmJjNmExNDllM2VlZWNiZTAxZjI3ZWMwNiBsZWdhY3ktdHJ1bmsKKzI0ODg2IGFjM2NlMWZhZWM2OGVhM2M3MTE0YTFjZjBkZTRjZmMyNjYwZjdhMzQgbGVnYWN5LXRydW5rCisyNDg4NyA0MjMyZDI1N2U0ZmYyMmViODdmN2IzMzUwMTg3NDdhOWQ3NmIzMGE3IHJlbGVhc2UyMS1tYWludAorMjQ4ODggNDFmZjQ3Nzc5MjZlYjUxOTE5OWE1ZGI5NzFlZTU1ZDllYWNkZmNhNSByZWxlYXNlMjEtbWFpbnQKKzI0ODg5IDEzMzliNmQzMmU5NTNkYjhiOGI2YjQwNjc2ODc5OTQ3ODIyMzQ0ZGUgcmVsZWFzZTIxLW1haW50CisyNDg5MCBlNjliMjFmMjUyOWVlNmM0NTlhYTJmYjcyNjhmZTk0ODNmYTM1NWRhIHJlbGVhc2UyMS1tYWludAorMjQ4OTEgNGEyYzNhZTA5ZTBjNGVmZGVhMmE1NjNjYzgzNzA2Y2IxZTNkZGMwMiByZWxlYXNlMjEtbWFpbnQKKzI0ODkyIDJhNzg1YjY2OGExNjA5MjU0ZWRjN2Y2MGIzZDY4NjNmYjBhNzJjZGUgcmVsZWFzZTIxLW1haW50CisyNDg5MyAwMDZjNTViZGY3ZTE1NmZjMmU1NzU2ZWRkYzQwZjUyN2VmNjk5MmJhIHJlbGVhc2UyMS1tYWludAorMjQ4OTQgYzQ4ZDhiMzYyYWNlZTFjZGUyYjA3NDA2YmFjMTNjMDhkNDI2YmM0OSBsZWdhY3ktdHJ1bmsKKzI0ODk1IGNhMjdkODJhYzg5YjQ2ZTNkM2U5ZWEzZTA3YTMzNDg5MmM5ZDc3MDggbGVnYWN5LXRydW5rCisyNDg5NiBlOGNiMjM2YWFkMjc5NjI2ZmFhZjdlYmE2YzRmODZiNTgxNTNjNjFiIGxlZ2FjeS10cnVuaworMjQ4OTcgN2JkZTljYTkwNTU0OTM0ZTEyZWRhNmQ0ZDZkOTFiY2RhNDhkZTcxOSBsZWdhY3ktdHJ1bmsKKzI0ODk4IDBhZjlhYzg3ZmZiYzFkOWUzMjU2NmY4MjE1MzExMTY1MDFhMGJlOGYgbGVnYWN5LXRydW5rCisyNDg5OSBiZjUxOTMyMWU3OTY3ZTJkMjA2YzE5MGI4MmNiNzgwMTVkYWRjN2I0IGxlZ2FjeS10cnVuaworMjQ5MDAgNWQ0MTM1NjA5ZWZjMWE4NDA4M2RmZWIxZjFjZmQ1MjE5OWYwY2E5ZCBsZWdhY3ktdHJ1bmsKKzI0OTAxIDljMzJlOTIwMGFiZWU5MWUyMTcwOTI3Mjc1YzkxY2RjMGE0Mzc2OGMgcmVsZWFzZTIxLW1haW50CisyNDkwMiA1ZjMyMTM2NTVkOTU1ZjQxN2I1MTAxYjg3YzRhZDM1NTg2ZjY4MjFjIHJlbGVhc2UyMS1tYWludAorMjQ5MDMgMTE0YTZiY2ZlODZiYjg0ZjFmY2E2N2JjZWM1MWIxYTFjMDI4ZmI4YSBsZWdhY3ktdHJ1bmsKKzI0OTA0IGY3MjI0NGNmODVhOWI3NjIyYjQ3YmFkNmQ3NGViMDhkNjlhNmUxNmQgbGVnYWN5LXRydW5rCisyNDkwNSBhZDEyNmMwNjM2NTQ4ZDM1YmU0NzVhMTFkNjE2Y2U2ZTc3YmNiNjMzIHJlbGVhc2UyMi1icmFuY2gKKzI0OTA2IGE2MGZjZGM3NTM0NmIzZTM2OGE0NDg0MDk5ZmUxZTU3YmM3YTczNDQgcmVsZWFzZTIyLWJyYW5jaAorMjQ5MDggZDU5ODY4YmFmZWIxMGIyY2VkOGMyYWIyNmJkNDYzOGIwNjY4OWU5MCByZWxlYXNlMjEtbWFpbnQKKzI0OTA5IDU4YTgyYTRiZThiMTczZTUyZTlmY2NlMWZlZTMzYjZmZGM1YTNiMDAgbGVnYWN5LXRydW5rCisyNDkxMCA2ODg0MmQyOTVkMmNjY2RmODZiOTBjY2I5YzFjODQ2NDU1NmE3MTU4IGxlZ2FjeS10cnVuaworMjQ5MTEgODJjYjE3NDk4ZmMxZmI3ZGViNzNiMmYzYjk5MjYzOGRjNTQ4MzQ2YiBsZWdhY3ktdHJ1bmsKKzI0OTEyIDNiMzliYTJiODAwZWRkN2Q5YTI0NTQ3ZjA1ZjMwZDU5ZjM4M2ZjNmMgbGVnYWN5LXRydW5rCisyNDkxMyAxODk0Nzk2ZTkzMGMxNDU3NGJkMzM0ZGJkZTUyODZlNTE4NTRlOTg5IGxlZ2FjeS10cnVuaworMjQ5MTQgNDU1NDA3MmU3NmI0ZjA5YWI2ZmVjOTkzYjhjZTkwODA0ZWExYTI0MSBsZWdhY3ktdHJ1bmsKKzI0OTE1IGIyZTc5Y2FhNjhlMGIxYzliYzg1Y2UzOWRjYjMzYmExMWFiNGYyYzEgbGVnYWN5LXRydW5rCisyNDkxNiBlNmE3YWQ2YzM2NTJkYTNhMzhkNGJmYTI2NTk3YzhkYjVmY2QwNzc2IHJlbGVhc2UyMS1tYWludAorMjQ5MTcgNThiNzdlZjQ3MmQ0YzJhMzMyMGY2NWM0OThiNzZlNzRiMGE4ZGIwOSBsZWdhY3ktdHJ1bmsKKzI0OTE4IDUyMDUzYWZjYWQzMjVjNjM4NjdhOWM1NmUwODE1MGJjY2M5OTg2MTMgcmVsZWFzZTIxLW1haW50CisyNDkxOSAxZWMzNGEwZDAyYTc3Y2U0M2FiMjliZWRiNTUzZDg4ZWNhOGE5MzU1IHJlbGVhc2UyMS1tYWludAorMjQ5MjAgNDNiNjQyNDVmMWFhN2I5ZTEzYzc3ZTc5NjljYTk5OTc4OWI5ZDFmZiByZWxlYXNlMjEtbWFpbnQKKzI0OTIxIGFiOTJlYWExNDBlZjk0ZTc1Y2QyZjYzOWI5NWU0ZjZlZWFkNmJhZTkgbGVnYWN5LXRydW5rCisyNDkyMiA4NDc0MjVkNWJjYTgwNzkzOWI3NmQ5MTg2OTEwODFmNjg0MzdiM2U5IGxlZ2FjeS10cnVuaworMjQ5MjMgZjg0NzUxMzVhYzEzNDM2ZjA2MmMzNWVlMTlmOGM2YzdjODhmMjVlOCBsZWdhY3ktdHJ1bmsKKzI0OTI0IGZjYjY0OWIxMDA0ZGUzN2U5OGQxZjI3N2Q0ZmIxN2EzODA0MWRhYmMgcmVsZWFzZTIyLW1haW50CisyNDkyNSA1ZDc3ODI1YmJjMTA2NThmMjExNTEzMzU1ZTg3YmFjZmJhZGYwZjk5IHJlbGVhc2UyMi1tYWludAorMjQ5MjYgOWUwMjMzYzBlMDAzYzkxOGM3NTI0Mzk4ZDBmMDIwODY2N2IxMGZiNyByZWxlYXNlMjItbWFpbnQKKzI0OTI3IGFjOGQ4NWRhNmQwZGJiZTQ4NzM3YzBlMTA3MWU1YzJmYzZmNzgyOGQgcmVsZWFzZTIyLW1haW50CisyNDkyOCBlMjA0N2FmMGIyZTZlNmZkMmI1MjVlYzE5MGFkMTZkMjRkNWY2NWUzIHJlbGVhc2UyMi1tYWludAorMjQ5MjkgMTJlMGQ1OGU0NGJkYmExNGNhNDY2YTNkNzdkNDM4YTI2ZTQ1ZWEwZSByZWxlYXNlMjItbWFpbnQKKzI0OTMwIDE4ZGI5MWMwYTc4ZjFjZTdmMjBiNDI4MjdlYTEyZDg1NzQxYzU3MzYgcmVsZWFzZTIyLW1haW50CisyNDkzMSBlZmQwNGQxZjMwODVlMWZhNjE0MmRmMjIzODJkNmMyMWVjNmE3YzUwIHJlbGVhc2UyMi1tYWludAorMjQ5MzIgY2Q3N2FhMTFlZGRjMTlmNmM4YTNmNWYyNTFmMmNhNWZkOWZlYzY5YyByZWxlYXNlMjItbWFpbnQKKzI0OTMzIDgxMmQxNTQzYmEwODlhYTEwM2Y0NjU2YjNiODlmN2U4MTJmYjUzYjMgcmVsZWFzZTIyLW1haW50CisyNDkzNCBkMDg5ZDFlODQxMWNjYzQzNDliNTFjNTM0NWNkOTc5ODIxMmE0YmZlIHJlbGVhc2UyMi1tYWludAorMjQ5MzUgZjc3NzU4Yzg3MmZiNTExZjYzYjAwMWJkYTBjNzFhMjA4ZjdlOWVhNiByZWxlYXNlMjItbWFpbnQKKzI0OTM2IDhkNTFjNzUzOTcxOWIxOWM1NDE1Yjg2MjVkODFmNjkyM2NkNGU1NDYgcmVsZWFzZTIyLW1haW50CisyNDkzNyA5Y2NlYWQ1ZmQyOTcxMTc4YTZkMTY0Yjc4ZTYwZDUxZWRhNzU5ZmZmIHJlbGVhc2UyMi1tYWludAorMjQ5MzggMzk3N2FkM2IwODI1N2Q1MGE2NDdhYjg2NjJkOGFlNDg5OGEwNTY3NCByZWxlYXNlMjItbWFpbnQKKzI0OTM5IGI5MzcxZjMyNDFiODUwMDdlMmI4YTVmNmQ1MDU1ZmI5YmUyODFhYTAgcmVsZWFzZTIyLW1haW50CisyNDk0MCBhYzRiMWM0YzNiMTJmMjg0ZGYzNzFhMGZlYzdmZDRmYmU0MGEwODc3IHJlbGVhc2UyMi1tYWludAorMjQ5NDEgN2IyZDcwMWVjNDA0ZDczOWE4ODA2NjJjMjJlYTMwMTY4Njc3Mjc0MiByZWxlYXNlMjItbWFpbnQKKzI0OTQyIGE5NGU0ODIxMzk4ZGEyOWM1ODIwMTdkOTAyM2QxY2IzZTkxNzM1N2QgcmVsZWFzZTIyLW1haW50CisyNDk0MyBhMmVhYjRkZTU1MDUzOTliMjAxNDU3M2FiOThjY2YwZmZiMTY1YWE2IGxlZ2FjeS10cnVuaworMjQ5NDQgZWM2MjMwNDcwNzNhMmJlNDE3Mjg0NDk5NWZjMGNkNWRkNjRjNGNmOCBsZWdhY3ktdHJ1bmsKKzI0OTQ1IDE2YTgyNDIzYjg2MDIwNDU3YTRmNGU4MTljODA0YjRiZmYyMjdlOWMgbGVnYWN5LXRydW5rCisyNDk0NiBmZGMzOWUyN2E0OTRlOGI2YTc0YjJlNTAzNzIxNzE2Y2M5OGEyOGVkIGxlZ2FjeS10cnVuaworMjQ5NDcgMjljMWE1OGRkYTUzZmFmMzU5OWVjZTZmOGExYWQ5NDQyMjUzMDM1YyByZWxlYXNlMjItbWFpbnQKKzI0OTQ4IDA5N2FlMGFkZjQ3ZmJjNDE2Y2NkZmQ0MDBhZWE3OTExMzgxNzQ3MGMgbGVnYWN5LXRydW5rCisyNDk0OSA2ZTlhNGY5YTU1YTQxYjM0YTZmOWM2ZjNiM2RiODdjMTVhNTQ3ZjY5IGxlZ2FjeS10cnVuaworMjQ5NTAgZDA0ZWI4ZDY2NGUyZGYzMGM2ZmJlMDRhZGVlMGRjZTNlZGZjZjgyOSBsZWdhY3ktdHJ1bmsKKzI0OTUxIDkyZGE3NGM4ZTVlOGMwMmI3ZDdhMTk1NTc5MGNlYTVmYzU4MzQzOTAgbGVnYWN5LXRydW5rCisyNDk1MiA1YjdiMzg2Y2IwZDQ1MzU3NmE3Yjg1MTk2OGI4ZDFmYjc5MTc0Y2ZmIGxlZ2FjeS10cnVuaworMjQ5NTMgN2RkMzk1OTg4Mjc1ODFjYjE1Y2Y2ZjZlOWZiNzZmNDdlYmU3YjZlZSBsZWdhY3ktdHJ1bmsKKzI0OTU0IGZmNzBlNTYzNGFlOTEyN2E3OTFmYjFiMzdlYmVkYTk0NjJmNzYyMGIgbGVnYWN5LXRydW5rCisyNDk1NSAxOGE3MGE4MmFmMTU5Nzg4NjE0NjJmN2I5NmZlZGJiNjk0NTlkOThjIGxlZ2FjeS10cnVuaworMjQ5NTYgZTU2MDQ3ZGI2NTM4NDcyMzUzMjJiNDUwMjAyMjJjYTNiMzRhM2U4MCBsZWdhY3ktdHJ1bmsKKzI0OTU3IDVmZjhiYjI1MDMxYzgyMzA4YzgxYTFhMTlhZmIyYmU4MmFkNmEyZmUgbGVnYWN5LXRydW5rCisyNDk1OCA4NTc4MzU1ZDIzZDM0OTVhMDRhMzA4Yzc5YzU5MmUwMDUyM2VjNjkyIGxlZ2FjeS10cnVuaworMjQ5NTkgY2FjOTMxYWQzY2M1YTY3MmQwZTI2NjM1OTE2YmRkOTAwMWVmNjBiNCBsZWdhY3ktdHJ1bmsKKzI0OTYwIDY5NzA1MWY2N2U5NzZhNTAzYTY4MzYxMmY4ZmI4MDc3ODg4YzVmZjMgbGVnYWN5LXRydW5rCisyNDk2MSBmZTU0ZThkOTNjYjQ4YzIwZDFmODUwMDZlMDcxNDc0ZmJhNWI5YmYyIGxlZ2FjeS10cnVuaworMjQ5NjIgNTJiM2I4NDZmMTFmNTRkY2I1ZDY3YTAzNjJmYzIyZjAwNzMwYTI2MCBsZWdhY3ktdHJ1bmsKKzI0OTYzIGE1MGRmNjVhY2E3YTliODE1MDA0Y2NjYmM0M2E2OTMxMWE1NDc1ZTQgbGVnYWN5LXRydW5rCisyNDk2NCAyZjQwNzMyNjlkYWZkMzM4N2JhMTgxYWFkZjk5ZDNiZDJlMGZmNzhiIGxlZ2FjeS10cnVuaworMjQ5NjUgNjRkMGM5NDlmMzNlMmZlYmRhN2JjMWU0NjNmYThkNjc2NDBiNTYzOCBsZWdhY3ktdHJ1bmsKKzI0OTY2IDAzNWQ5Yzk2YWFlY2ZjODg0MGQ1ODI0NDBiNWYxZDdiY2I3MzYzNjkgbGVnYWN5LXRydW5rCisyNDk2NyA2N2RhMTEyOTM0MDZjZDRmNzQ0ZmMzMTg2Nzc1MjU1MDMwNTgyMjY2IGxlZ2FjeS10cnVuaworMjQ5NjggYmUyMTNmMWNkNDYyZTFiNThhYWZjYWYxZDI0MDJlZmI0N2ZmYjA4NSBsZWdhY3ktdHJ1bmsKKzI0OTY5IGZiMzRmNTVhMDNmYWJmNDAyMTdmMjE3NGRlYTFjMjMzMDQ5MDdiNjMgbGVnYWN5LXRydW5rCisyNDk3MCAzYmEwZjFiMjAzMjBjOTc0ZmIwYmMwOTVjNDExYjM5ODEyM2IyMjEzIGxlZ2FjeS10cnVuaworMjQ5NzEgYTllMDZmZmFmN2ZiZTlkOGM3OWE5ODhlNjg0ZTY4MTRiZmFiZGQ3NiBsZWdhY3ktdHJ1bmsKKzI0OTcyIDkzN2NjMTBjZDM5ZGYwMTc3YzFlMmNmOTcxODc4ODFlYjVhMGFlZjMgbGVnYWN5LXRydW5rCisyNDk3MyBkYThiOTk3NDY5ZTdkYzBmYjU4MTgxYjE1YTczYzM2NjgzYzQ0Y2Y1IGxlZ2FjeS10cnVuaworMjQ5NzQgOGRmYmZiYzkzMWI0YTY3Yjg5MWY0MjFkODg0ZmI5YzU4YWMxNzcyMCBsZWdhY3ktdHJ1bmsKKzI0OTc1IDA5NWNmZjIxOTU2Y2JmOTE0ZTU3MWU5ZWJlMmUyMGY0ZDU2YTIxMTYgbGVnYWN5LXRydW5rCisyNDk3NiBlYTg1ZWVhNmIyYjk0OWZkYTYyYjU2NTBhYmM5NTZkYjQ1MTU3MGFkIGxlZ2FjeS10cnVuaworMjQ5NzcgM2I0M2Y0MGFmMjdhOTg0YTFhNjYwOTEwZmQzMDAwZmM2N2JmYjBjYSBsZWdhY3ktdHJ1bmsKKzI0OTc4IGNjZWE4NzgyYjg0NzIzMWUwY2U4NGNjM2FiNzg0ZDRjMmJiODExZDUgbGVnYWN5LXRydW5rCisyNDk3OSAzYzhhOWVmM2I5NTQzOTYyZWI3ZGIwYjg1YzI0ZTQxMTZhMGQ5NTcxIGxlZ2FjeS10cnVuaworMjQ5ODAgNWQwMDllNWUxM2Y3OTllZWQ4NTQ0ODBjMGJjZDlmZDg2NWU4NWYxMSBsZWdhY3ktdHJ1bmsKKzI0OTgxIDcyNDZmZTVlNWEyODI3ZTJkNGU5OTBiOGM2YTkwZTE4NWJlMDQ3MzAgbGVnYWN5LXRydW5rCisyNDk4MiBkNTk0YTU4YjQ0NmQ1ZjNjZTRiYmVjZGRmMThlZjFkMDAxZDhlOGRkIGxlZ2FjeS10cnVuaworMjQ5ODMgMTQ5MWYxMTM3ZTBlYTU3MGU1OGFiNDljMjE4NzA0YzQxNWFmMzdkOSBsZWdhY3ktdHJ1bmsKKzI0OTg0IGJlODY5N2M3MGU3YzJlNTU0NDlhNTYyMTNiOWJiMTA5OTJiNTQwYjIgbGVnYWN5LXRydW5rCisyNDk4NSBhMzNiYjczMjQ2ODM5ZGI4Y2Q5M2M0NzEwNjRlN2JjYjM0NjIyMDQ3IGxlZ2FjeS10cnVuaworMjQ5ODYgNzU4MzM5ZGJkYWVhNzgyZDVmZTAxNTg4MzExNzAwNjI5NGM0NTEwNCBsZWdhY3ktdHJ1bmsKKzI0OTg3IGRlMWViY2VmN2QzMTA3ZTRiMzA4MjJmOTJkZWE1Mzc3MzE3MDVhMDIgbGVnYWN5LXRydW5rCisyNDk4OCAwNTFmM2I2NWRkYWI4NDk1YmNmMWIwNjY2ODJjYTI0ZWM0OGQ1NjM5IGxlZ2FjeS10cnVuaworMjQ5ODkgNmQ0Mjg4ZTg5MThiMjY3NGI4N2NmNDM4YjJkMzcxNzcwZTFiNTdiNiByZWxlYXNlMjItbWFpbnQKKzI0OTkwIGRjY2NiOWNlYTA1OTMxYTI1NDI0NzJjZDU0OWM1NjhmYzliMjA0YmQgcmVsZWFzZTIyLW1haW50CisyNDk5MSBkZmM5NzA0MDlmN2VkMDIzNDFmN2UyMmI2NzBmZmM1MjZmNzYzMzZiIGxlZ2FjeS10cnVuaworMjQ5OTIgNjZlMDA4MGM2ZGNjOTAxYjBiODRjYzg4MDNiNGE3YTg4NzQyNGE4YSBsZWdhY3ktdHJ1bmsKKzI0OTkzIDU4NjE4ODU1NzdlOTk3MDUxYTI5MjM1NTdkODAxYjJlNTg0MTU0MmEgbGVnYWN5LXRydW5rCisyNDk5NCA2ZjZmMGUxMDM1NjZkYzljOTUxZjZmMzI5OTA2ZmNiYjYyNGM2MDZjIGxlZ2FjeS10cnVuaworMjQ5OTUgNjNhMmZhYzIxMDRjOWE3YTJkYzUxMGIzZmU0YWI2MjVkMWRiNWUzMiBsZWdhY3ktdHJ1bmsKKzI0OTk2IDZhZTg1ZDgzODQ2NmEyNTdjZjUzYzNlNjFmMDNhN2Q5OGJjMGM2MTcgbGVnYWN5LXRydW5rCisyNDk5NyA5YzdkYTI3MmM5Yjk0ZTg4MTYyN2M3YjhhNjBmZWExZWZkM2JmNGE5IHJlbGVhc2UyMS1tYWludAorMjQ5OTggY2QwN2U4NDIzNWU2ZGIwMzUzZTFhY2ZjMDM5ZmQ4NjcwMWJhZjczMiByZWxlYXNlMjItbWFpbnQKKzI0OTk5IDJiNzQ2NTQzYWIzZDcyOGRlNDc2ODNlMmE0MThmN2Q1NTllNjU3Y2EgbGVnYWN5LXRydW5rCisyNTAwMCA2MjIxOWVkMjE1OTliY2U0ZDkzMGJkYjUxZGJmODJjOThjNzk3YzVlIGxlZ2FjeS10cnVuaworMjUwMDEgODUxZTRiZjMwMzU4ZWY4ZDAzZTA0NmNkMDkzYzE3ZDMzNmVlNGUxYSByZWxlYXNlMjItbWFpbnQKKzI1MDAyIGI3MmRhMDc4MGU3YTU5MmEyZTVjNDA5ZWJmYWYyYzM1ZGZhNjI4ZTIgbGVnYWN5LXRydW5rCisyNTAwMyAzYTRhMzRmZGZhODFhMDk2YmNhOGIxZGQ2OGFiYWEyMWE1OTZmNzQzIHJlbGVhc2UyMi1tYWludAorMjUwMDQgMzVlM2YyNDE4YjJkYTlmNmYyOThjNmM0MTQxMjZmYWViNGQzMjhkOSByZWxlYXNlMjEtbWFpbnQKKzI1MDA1IDNjMGJkMmYzN2E3ODhhMWZmMDRiZjlkNDUxN2Q5MmFlNWFhNTc2YzMgbGVnYWN5LXRydW5rCisyNTAwNiBhM2E2MmU0NDBmMmE2OTJkMGZmNzUzODBiMzEwOTRhOGQzZTg0MjBkIHJlbGVhc2UyMi1tYWludAorMjUwMDcgN2UyYTNhMmJhYzMzZmM5ODhmZTYxNDY2YmNmMjEyM2ZiOWVlZGM1YiBsZWdhY3ktdHJ1bmsKKzI1MDA4IGE1YmUwNzY1YzU3MTM2MTE5ZjU0ZTRhZTI1OGRlODQ1M2ViODRmMWMgcmVsZWFzZTIyLW1haW50CisyNTAwOSA5OTEyYTk2YzFmYjM5NGYwYzExNzcwY2Y3MGU2YWFlYzUzNzYyYTU1IGxlZ2FjeS10cnVuaworMjUwMTAgMTk1OTE3YjdhNjAyNDJmYjRkMDZlZjEzMDY1YjBkNzdjMTc2ZDU1NiBsZWdhY3ktdHJ1bmsKKzI1MDExIGViMDUxOWE0NjdhYmEyNGZkMDczZDhkZmFhNTZjMWYyNTY4NjRmY2YgcmVsZWFzZTIyLW1haW50CisyNTAxMiBlYzQ4Zjk2YzkyOTVkZGUwODBlZjI3ZWY0OWY1NGIxY2IzOTQwYWY0IGxlZ2FjeS10cnVuaworMjUwMTMgYzNjNmRlMTQ1MzA5OTZhNjZiYWNhMjc2ODk3YmM3YWZjMmZlN2MzNCByZWxlYXNlMjItbWFpbnQKKzI1MDE0IDY4ODM0YTY5NzQ2YTg1ZjdjYmJjMGQzZWYzODViMWYzMjgyMTJiMjUgbGVnYWN5LXRydW5rCisyNTAxNSAyOWIzZGM5MGJlOTVjYjQ4YWE1ZTViYjhkOTZjOTViNDUxMGI2ZGMwIGxlZ2FjeS10cnVuaworMjUwMTYgOWEyNjgyOTgyNmU5NzkyYjgxNzRmMzdiM2YxOWQ3OWM5MTA0MWFmYSBsZWdhY3ktdHJ1bmsKKzI1MDE3IDZiMGUxNmNiNjVkNTkyOWVkYzhkZjc3ODEyN2Y2MjRlZWE5ZGZiM2QgbGVnYWN5LXRydW5rCisyNTAxOCAzNGVkZGNhMWZkYTc5YTU1NDBjMjc5ZTQ3ZTBjYjYwZjdhN2MxZmVkIGxlZ2FjeS10cnVuaworMjUwMTkgN2M1ODJkMWI5Y2Y4MWUxYTRhYmIzNmYxYmE0MTUwODE2YTg0YTI3NyBsZWdhY3ktdHJ1bmsKKzI1MDIwIDIyZGFkOWZlMDljYTEzZGNmOTlhZDExZTI5OGYwMzE2YzI3MDlkMTUgcmVsZWFzZTIxLW1haW50CisyNTAyMSAzNjI5MTViMzg3MjQ0NGNjOTk0MDc4MzAyNTc5OTZjNmM4ZmZmNjliIGxlZ2FjeS10cnVuaworMjUwMjIgOWRlMzUwYTY1NDJlZGYxYTg3MTkzNDc0YjNlNjRiMmZjYWMzNjcyOSBsZWdhY3ktdHJ1bmsKKzI1MDIzIGI1Njg0M2MxNTI0OWIzOTg5ZWU0NTZkMzE4MzhiOTQ0ZTZmYzQxOTEgcmVsZWFzZTIyLW1haW50CisyNTAyNCBhOTExOTM0MTI2ZmQ4NjZkYzEwZmM5YTUwZjFmMTUwMmIyMzY3N2U0IHJlbGVhc2UyMS1tYWludAorMjUwMjUgNzI0OGMzNzUxM2YzNzVkZDMwMzA1NmI4ZDk1MjUxNjRjZWVkZDVjNiBsZWdhY3ktdHJ1bmsKKzI1MDI2IDgyMzkxMjllNzVkMGEwYWE1MjVjMjI3Zjk1ZjBiNTlkYTZjNGFhZjYgbGVnYWN5LXRydW5rCisyNTAyNyA3MmJiNzBlOTY0MGU0ODA0YjEyNmNiZDc1MWU0ZDU5NDkwZGQ1ZTY2IGxlZ2FjeS10cnVuaworMjUwMjggMGQzYmI2OGUzYTI4YTMyZTEyNjA2YWVmNGUzZGI1M2M2ZjhkYWU4OCBsZWdhY3ktdHJ1bmsKKzI1MDI5IDU0NGUyNjIwNjFhMzYyY2NkMjA1ODFjZjFlNzIxOTBiMjJlNTVhYjcgbGVnYWN5LXRydW5rCisyNTAzMCA2NDZmOGMwODhmNWQ4NDdlYjg3MGRmYWM5OGZlOTk0ZDdkOWMxOTlhIGxlZ2FjeS10cnVuaworMjUwMzEgODk3MGU3NDY2ODExMzNhODQyYTVhMDk3YTA4YzRlMjRjNWIyYmU3OCBsZWdhY3ktdHJ1bmsKKzI1MDMyIGZmYWJhYzUwOTczZGZjNjE5Mzk0ZDBhOGM2M2VhZWU2YjVjYWQ2YTMgcmVsZWFzZTIxLW1haW50CisyNTAzMyBhMWMzMjgzMzdjOGU4NDg4NjIyMDdjMGI1YWZlM2MyMjFmMGYwMWYyIHJlbGVhc2UyMS1tYWludAorMjUwMzQgODhjNDYzZjg3OWVmMjc1NWJiMzE0YjUyZTQwMzUzYjljNTcwYTUwMCByZWxlYXNlMjEtbWFpbnQKKzI1MDM1IDA2OGU4NzNmMDkzMmFhYmFiMzc4NDZkZDM4M2U0YzI2NTgwMzEyNGMgcmVsZWFzZTIxLW1haW50CisyNTAzNiAwOGEzYWE5NTEyZTk4MmIyMGFiODQwY2M2ZGI0OGEwMzE1ZjQ1NGUwIHJlbGVhc2UyMS1tYWludAorMjUwMzcgMjk5OTY4YzI3OWI5ODBkNzMxMDZkMWM5MjE4ZjU0Y2I3OTAyYTA4NCByZWxlYXNlMjEtbWFpbnQKKzI1MDM4IDNhNTUxNTA1MGI0MzZiYzUyM2Y2OTNjMTcxNTE2YzhhZGRjZmM2N2UgcmVsZWFzZTIxLW1haW50CisyNTAzOSBhMWQ2Y2Q5N2UzMTk2M2NlMmVmNmFiOTMxMjBhNzAwZTI2OGY4MmM0IHJlbGVhc2UyMS1tYWludAorMjUwNDAgZWRjMzUzMmZiMmI4ZmQwZmZkNjEwNjE5ZTQ4NmZkYWEwYzBhODNhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDQxIGM0ZmU5NWZlYTNlNmZmYWZmMDJkMmM5Yzc5ZjJiN2IxYzg4YmVmNDMgbGVnYWN5LXRydW5rCisyNTA0MiBkMDVlYmJkOTY1YTM3MTI1Zjc0NzE1ODQ2Zjg2NmViOWI4ZjAzY2MxIHJlbGVhc2UyMi1tYWludAorMjUwNDMgMTE2ZTMyMThhN2NhNjA3YThlMjc3Yzc3MWFlMDRlYWJmODQzZTNjZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ0IDhiMjQ1Mjk3YzE2NmU2Y2MyNTZjYzJmMDNlMzhkY2E4ODIxMDg2YzMgcmVsZWFzZTIxLW1haW50CisyNTA0NSA1OTE1ZDQ1YjgwOTg0MTZmOThlMWZiNzI0OTA0MzU5MjFiOWQxNTFlIHJlbGVhc2UyMS1tYWludAorMjUwNDYgYTQ5YTY1YTk1ZTM1Y2QzNjljYzhlNmEzZGZhMjkwZmUxMWQyNTNiZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ3IDFlZGY1ZWQxYWYwODFhMDI1NWQwZTgxZjViOTNjYTg4MDM5MjI2MWMgcmVsZWFzZTIxLW1haW50CisyNTA0NyBmNzZhNDI1YjE0ZTRlZThhZGU1ZTkyMzk1OTg1Mzg1MzRiM2E5MGE0IHJlbGVhc2UyMS1tYWludAorMjUwNDkgM2U3OGJmMGUyYmU4ZDJkZGYxOTI2YmRkYzNjMjM4NDVmZmJiY2YxMSBsZWdhY3ktdHJ1bmsKKzI1MDUwIGRiMmMxMjgxMjVmNDU2OWFiOWJkZGJmMGFiYThhZDhmMmJiOWM1NmYgcmVsZWFzZTIxLW1haW50CisyNTA1MSAxMGQxZDdkNjM1ZDQyMmVmNzRhNGQ2M2JlOTU5MjcyMTc1YzNlMWFiIHJlbGVhc2UyMS1tYWludAorMjUwNTIgMmYzNjQ4NjAwZTYwMWZkZDk5NTljN2E0NTM5YjY0ZmVjYTY4YTA4NSByZWxlYXNlMjEtbWFpbnQKKzI1MDUzIDdmZTNlNjFhYmNlM2VhODJjMmQzYjQ5YWFmMjZlMWFhMTg1ZjhhOTAgcmVsZWFzZTIxLW1haW50CisyNTA1NCA1YzYyZWZiY2U0ZmEwNjFkZGRjODg2MTkzYzJlNjY2OTU3ODJiMTBlIHJlbGVhc2UyMS1tYWludAorMjUwNTUgZDc0ZGM0MDY2NDE2ODkyNDkwMjdlYzdhYWM3M2MyMjBlMTQ4ZTFjNCByZWxlYXNlMjEtbWFpbnQKKzI1MDU2IGFlZGQ4NTE4NzQ5NjQ4N2ViOTFjNzRiMWExNzI0YjI1NDBkMDYyYjkgcmVsZWFzZTIxLW1haW50CisyNTA1NyBjZTM1ZTU3MGZmYTIxZWJkYjA3NDdjNmM0OWZiMTM5ZGE3NjE3NDc1IHJlbGVhc2UyMS1tYWludAorMjUwNTggYTBiMzUyZTc2ODYyZGYwYzg5OTViZGI5ZTU3NWU4MGEyN2VkMzFmOCByZWxlYXNlMjEtbWFpbnQKKzI1MDU5IGVhMTc1NWQ3M2U5MjFhYzkwYTYwM2ZjMmUyZjZjNzgwODNiYTM1OTkgcmVsZWFzZTIxLW1haW50CisyNTA2MCAyZTIyODQ2MWEzOTFiMThkNzk2NWM1OTNjNGM5YzZhODJhNDNmNDFjIHJlbGVhc2UyMS1tYWludAorMjUwNjEgMzJjMWMwYWZjZjk4ZGM0YzdkNzg1NjQxYjZhMGYxY2M4NzdiMWRhNSByZWxlYXNlMjEtbWFpbnQKKzI1MDYyIDNiNTRjNDQ1MjRlYjYyNDM0Mzk2NjMzOWE1N2VmMjU3YmI3YWQ2NTggcmVsZWFzZTIxLW1haW50CisyNTA2MyA0OGVjZDYwNjFlODhkMGRiZTkwMmNlNjczYzcxNDNkOTFiNTM0NTNlIGxlZ2FjeS10cnVuaworMjUwNjQgNDAyNzM2MWU3OTU2YTIxZWZmOWYwNGIxMDgwODQ1NDhmMTg2NTQzNiByZWxlYXNlMjItbWFpbnQKKzI1MDY1IDc1MzFjYzU5MmU0NjNhMWY4NDBlZGQ1NzY0OGEwZTNhNjc4ZTI5ZGYgbGVnYWN5LXRydW5rCisyNTA2NiA0YTVhMDEwYzhmNDQ0Mjk5Nzk2YWRlNWRlMDVkYmE3Mjk4NGI3MjY1IHJlbGVhc2UyMS1tYWludAorMjUwNjcgYWE4M2ZlNmU5YzRmNWRkYzRmZTQxYjczYTExOGFjZTQ2YTU0OTJkNCBsZWdhY3ktdHJ1bmsKKzI1MDY4IDNiNzMzMjViMzJlNTk0M2ZiNDE3ZDU2ODY2MWRhODc3ZDQxZGJmOWIgbGVnYWN5LXRydW5rCisyNTA2OSBhNmEzMWM1NWExNmQwNTAwODhkMzdjNzU1NGFiYWFjNjkzMzhjYjhmIGxlZ2FjeS10cnVuaworMjUwNzAgODY2NjE1ZjBhZTJhNzI1OGQ2YjA0NTFmZWZkNGNiODFhOTdkZmY0ZSBsZWdhY3ktdHJ1bmsKKzI1MDcxIDNiZTQwZDNhZmY5NDVmNmE5MDM4YTM2ZjYzYWRjYmEzODE2YmUzZDYgbGVnYWN5LXRydW5rCisyNTA3MiA0MzczOTNlNzgwY2JmZjNkMzJlYTk0NDAyNDFjNDBhOGVjNDdmMDcyIGxlZ2FjeS10cnVuaworMjUwNzMgYzY0ZmM1NmY2MDcyNWY4OTI4MjgxZmNkMjRmZmEwYjk5YzBjY2YyOCBsZWdhY3ktdHJ1bmsKKzI1MDc0IGUyMjMzOTdiMjZmYTVhMjY1ZmRmMzQ5MmZmYWNjZWY4MGNlYTQxNTIgcmVsZWFzZTIyLW1haW50CisyNTA3NSA2MzAyOTNiZTEwMzU2ZTFiMDYyNzM1NmE0ZTc2MjM2OTc2Y2QyZmFlIGxlZ2FjeS10cnVuaworMjUwNzYgNGM2YzEzYWE4YTk5NzUyOWY3MDYyOGM1ZmY2YmNhNzU1MDFmZDY1NCBsZWdhY3ktdHJ1bmsKKzI1MDc3IDRlYWU2NmJlMWQyOTFiYTI3NDU5YWI2MTg3NmQyOGFiYzlhMzk0OTUgbGVnYWN5LXRydW5rCisyNTA3OCAxZDkxODIwMTI4YTFjOTljYTA4NDQ4ZTE5Njg5MjAwNjZkMDMzN2E2IGxlZ2FjeS10cnVuaworMjUwNzkgODFhODNhNjUyNDZkMzAwNmM5NjdhNGM1MjQ3Y2RkZTc4ZTM4ZjUzOCBsZWdhY3ktdHJ1bmsKKzI1MDgwIGVjNmI2N2QyODAzZDJmYTIyZGMxYzJlNWY4YjczNDA0MzAxNzJjZjkgbGVnYWN5LXRydW5rCisyNTA4MSBlOTkxOTgyMzRkOTZkMjRkNTRiNDkzMGNmOTA3MTFiMzhjY2RhNGRjIGxlZ2FjeS10cnVuaworMjUwODIgMjVlNDRhMDEyNWU0NTdjNmFmNjZkNzQ1NDZmNWI2NmU0N2ZlNjRhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDgzIDllMTczY2IzNWI2ZGZkZDczZWQzNWIwZDFkZDYzNDJlNGI5M2Q5NTAgcmVsZWFzZTIyLW1haW50CisyNTA4NCBlYmU2YmQ1NzZmNjVkOWI4YWVlMDhjMjg5MTQzZTNjZDI4ODY2NWFkIGxlZ2FjeS10cnVuaworMjUwODUgODg0ZTU3YmYzYWRhNDEwNzNiNmU2ZDc5MThhYjhhZTIzMjA4OTNlMyBsZWdhY3ktdHJ1bmsKKzI1MDg2IDVkMmJmYmQ0N2YxYmUyYTAyYWZiMDIwNTI3ZDJjYWNhMTlkNmJhMjggbGVnYWN5LXRydW5rCisyNTA4NyA2Nzc2MWQ1YjRhZTZhMmVmMTU3MWRmN2Q0NjlhNTJkMGZlNTQyYzJjIHJlbGVhc2UyMS1tYWludAorMjUwODggNWEzMjlhMjU3MTk3Zjk1MmM2ZGRmNmRhN2M0NmRjYTg2NWUzYjA2MSBsZWdhY3ktdHJ1bmsKKzI1MDg5IDU0ZWNjYzVkMjJkZDI3NDFlZjg5ZjgwZTAwNTY4NTNlOWE4ZTYyMjYgcmVsZWFzZTIxLW1haW50CisyNTA5MCBlNjU0NzViNGYzY2Y4YjU4ZTY5OTRhNGMwYTlhYWFmNjc5ZTc4MjM3IHJlbGVhc2UyMS1tYWludAorMjUwOTEgM2UyNmY1ZGFjYmJlNjYyZjEwYjU5Y2Y4Y2M2MWY0M2YyNmM2M2E5YiByZWxlYXNlMjEtbWFpbnQKKzI1MDkyIGQ5NjMxODQzODExODcyODhkZjg5Nzg0MWYwNjZmZjY3NTlhNmFmNTMgcmVsZWFzZTIxLW1haW50CisyNTA5MyAzMWIyNTAxNDE3NGJkNmM4NDgyNDNjZmFkY2U5NDY2OTQ1ZTJkNzc5IHJlbGVhc2UyMS1tYWludAorMjUwOTQgZGNjYmQ3YmI1YmQ1Yzg1MTUzMzNlY2Q5Njk3NGY4ZjA5Y2VlOTI5NyBsZWdhY3ktdHJ1bmsKKzI1MDk1IGMzYTg2NDhiZjA5N2FiNzAxMjhiNGZiMWZlYTk2M2RjN2Y3NWIwNDcgcmVsZWFzZTIxLW1haW50CisyNTA5NSBjZjMxYjEwZTQ1YjQ4NjE1MDk0Y2FlOTBlM2M1YmQwNzI1ODdkOGU2IHJlbGVhc2UyMS1tYWludAorMjUwOTcgYmE4ZGI5MGVlZjRlY2FhOGExZmNiZTQwM2E2ZTNhNDhiMDg0NWRkYiBsZWdhY3ktdHJ1bmsKKzI1MDk4IDMwYTgxNzAzOGFmMGY0YmQ2ZGI2ODlkZDMwZDY2NTIzOWQyODg0MTkgbGVnYWN5LXRydW5rCisyNTA5OSBjYTFiNjdmNWEzZWNkOGY0N2I2M2E0NzdjYzVjZTAyZTlkZTRkNDZlIGxlZ2FjeS10cnVuaworMjUxMDAgMmI1NmFmNjlmNjdkZWQ5ZjY4NGZhMzM2ZGI2ZGY2MzgzZGI4ZTg3YSBsZWdhY3ktdHJ1bmsKKzI1MTAxIDhmNGNjODIxYWZhYTcyODNhNWU4ZTgxM2ZiMjU3NWQ5NTNmNDNmMjggbGVnYWN5LXRydW5rCisyNTEwMiBlYThjODQwMGE0YzhkMDBlNzRlNzRhYjRlMTgzZTFjZjYwZGY1YWI5IGxlZ2FjeS10cnVuaworMjUxMDMgOWQ1YWRmZjg3ZjMwMDIwYWEyYmQ4YzM0YjM3NTQ3YWM4NTBjM2EwYSBsZWdhY3ktdHJ1bmsKKzI1MTA0IDM0Zjg1YTBhN2ZhYWRjYjdkY2ZkOGRkOGVjNmFmMjBhYmM2OWUwYzUgbGVnYWN5LXRydW5rCisyNTEwNSA1M2ZjNmVjOGE4Mzc2MDViMzFmYzgwOTg3MzdlNzNlYjEwNTBjOTM3IGxlZ2FjeS10cnVuaworMjUxMDYgMWI3ZWMzOTVkMzkyNGY4ZjI5ZjU0ZGU0N2EzNzEwMmNmYjNkOTI5YiBsZWdhY3ktdHJ1bmsKKzI1MTA3IDQ0MmVmZjI5YjQ5ZjdiMzM2MzhmODMwNWIxZThlNzllMzZiMWNlNzggcmVsZWFzZTIxLW1haW50CisyNTEwNyBkODIzZmMxMzVlOTBlN2JiODQ1OTE1Y2VjOTAyNzdlYmZjZDJjOGQzIHJlbGVhc2UyMi1tYWludAorMjUxMDggNzQyNDZhMmQ5OTYyMjNlYzFlZTFkZWM5YTc0NmE4N2M5NzFlOTI1MyBsZWdhY3ktdHJ1bmsKKzI1MTA5IDY2MDVmMDc2Zjk1YTJkMDU2YzIzYzBjOGVkMTFlODc3NTJhZGFkN2MgbGVnYWN5LXRydW5rCisyNTExMCBjNGY3MmI0NzIyZGE2MzRkMGM1MTdlMDRkZTQzNGJiMmRlNmMzYTkyIGxlZ2FjeS10cnVuaworMjUxMTEgOWMwYTBjODk3NzNmMTgyYjAwNjU5N2VlOWY0OGFkY2ZlMTBkNmViYSByZWxlYXNlMjItbWFpbnQKKzI1MTEyIDlkNzcwOGRkY2ZiOTk4ZTI5NDkwMjU0MmViYzA1ZTM0MzZjZjY5NzggcmVsZWFzZTIxLW1haW50CisyNTExMyAxOWQ2Njg3NTFiMWVhZjAzNDMwMDgwNjZjNWUzY2I4Mzk1OWU0ZjQ0IHJlbGVhc2UyMS1tYWludAorMjUxMTQgY2ZiZGU4NTE5ZTUwMGUxMjMwYTNlNjc0YjNkMDNlYWUzMTkzMmU1MSByZWxlYXNlMjItbWFpbnQKKzI1MTE1IDBlZmY5NjFhMTViNTM4OGVlYjUzMWU0N2I5ZDM5M2RkZmUyYTk4NmEgbGVnYWN5LXRydW5rCisyNTExNiBkNjAzNTBkNzFiNjA1ODI4ZTViNjA0NGZmNzE4YjFhYzk5NzNhYTgzIGxlZ2FjeS10cnVuaworMjUxMTcgNDA2MzFhZTc0YjE3YmJhMjA1MWM4NzRiOTU5MmRlZTdmNWM0MzMwYiBsZWdhY3ktdHJ1bmsKKzI1MTE4IGNiNDBhY2E0MTg4OWNlNzczODVmNmY0NjhlYjkzOWVmMGQyMWZhYWYgbGVnYWN5LXRydW5rCisyNTExOSA3MjMzYjg2YmU2NTZlMzlmOTRlYTkyZjYwYjAzYTE0MjdiMWI1OWY5IGxlZ2FjeS10cnVuaworMjUxMjAgZGJiNzAzZWI2YjNkOWI0ZTBhM2VmYzhkMTdkYTk2MjFiMmUwZmI0MSBsZWdhY3ktdHJ1bmsKKzI1MTIxIDFhMjZkY2RmYjZjYzlkZWUzZDhkMzA5NTc1OWVjMmJlOTA0MzlhMzMgbGVnYWN5LXRydW5rCisyNTEyMiBhMWIwNjU4MjkzYTcwOTkxM2I4MTM5NGQ5NjUyMjVjYmJlOTMyMDVhIGxlZ2FjeS10cnVuaworMjUxMjMgNjUyZGM1MWI1ZjgzMjE4N2NiYWQwNzM0ZmY4NDBhZTE2NTFjODJjYiBsZWdhY3ktdHJ1bmsKKzI1MTI0IDAxMTBhMDk4M2U2MTkzMGNjMTA1ZDFjNDYxNzg0ZGY2ZjdiNDg1MTEgbGVnYWN5LXRydW5rCisyNTEyNSAzNjg1NjE1ZDIxYjMyN2Y1ODExZTY4ZDEyM2YwMjk3ZWMxNGEzNjY0IGxlZ2FjeS10cnVuaworMjUxMjYgOGIxMTZhODQ0OWJkNWVlZGZjODJjZmU3NjNkMmEyZDMyN2M3MjI5YyBsZWdhY3ktdHJ1bmsKKzI1MTI3IDhhMmNkMWMwYzEzNTRlYzhmYWQ2YjM4ZjIzMzVjMDBiODhmYTA0NmYgbGVnYWN5LXRydW5rCisyNTEyOCBlMjI3YzhkMDNkNmQ4YzI0ZDQ1NGM1M2E3MTYzMWRhNGZjZDA5NzI3IGxlZ2FjeS10cnVuaworMjUxMjkgZTZkNWM0Yzc0NWJjMDEzYzRmYzYzMTA4OGM1M2ZiMzE3NDQ1YTdiOSByZWxlYXNlMjItbWFpbnQKKzI1MTMwIDU3ODdmYzQ4YzJiNTVhNTA3MThhYTQwNmRmNGEzOTFiNjE4ZTA3ZjIgcmVsZWFzZTIxLW1haW50CisyNTEzMSA4ZTY3ZDkwMzViNjk5YWJiYTIxMTgxMmM1NTNiNjVlMmQ5ZGExOTViIGxlZ2FjeS10cnVuaworMjUxMzIgZWM3NTBlMzc2NzFiZTNlYjUyNWVkODhlZDE3ZTlkNGE5ZDU4MjAxZSBsZWdhY3ktdHJ1bmsKKzI1MTMzIGQ1YTM4YTMyZjc4YjUwY2M4NTg4ZWNjMjQ0NWE0MjM2N2M0ZTU1ZmEgbGVnYWN5LXRydW5rCisyNTEzNCAxZWQyNjhlYTJkMjYzMDM5MzM2NTFjNmYxYzEwMjFlNWU2OThjMTRlIGxlZ2FjeS10cnVuaworMjUxMzUgMTZjYzUzODQwMWIzZjA4MmRkZDhmZDU2N2U3ZDVhMjNkMWY5ZGIxYiBsZWdhY3ktdHJ1bmsKKzI1MTM2IDliZWMxODNmZWZmZjYxY2VkM2NjYWQxYzA1ZDZkM2YxNjBiMzk5ZWUgbGVnYWN5LXRydW5rCisyNTEzNyA2MzNlNjQ1NjRlZGZhMWFiYzVjYTJhNjU2ODYwOGZlYjE3OWI5ZjBhIGxlZ2FjeS10cnVuaworMjUxMzggZjg4NzM2MjVkOGY2MDRiNmZiZjU4M2QxZTMzMzM5Y2YwZTE5YzViMyBsZWdhY3ktdHJ1bmsKKzI1MTM5IDZmOTU4ZjQ5OWI0Mjk1NzA1MzY0ZTVjZWZiZjVjMTRmMGVkY2EyMDAgbGVnYWN5LXRydW5rCisyNTE0MCAwZmU4NzU4NjZkNGVmNTY4NjI1NTM4MWQ2YmJhNTg2NDNhNThmYzgyIGxlZ2FjeS10cnVuaworMjUxNDEgZGExN2ExMGUyZjIzMWM5MjA3NjU5NDJlYjViMjdhMTA2MWE0Y2IyNSBsZWdhY3ktdHJ1bmsKKzI1MTQyIDNlMGRiOTg0YmQzZTMwNGM3N2FlMTliM2EyY2RmOGZlYzg3YmVkNDIgbGVnYWN5LXRydW5rCisyNTE0MyAyYzY2MTdmMjcwZTJjOTJkYmJjZjAxZjBkMjFjN2RiNjQyMmNlZjZiIGxlZ2FjeS10cnVuaworMjUxNDQgNWE1ZDk0YzQ5OTc1MGUzZDNjYThjNTk0MzY4ZjVkZWI0NmIxNmYxYSBsZWdhY3ktdHJ1bmsKKzI1MTQ1IDZjNWMxMTJkNDUzMzliZDc3Mjg1M2JmODk5OTljZDFkODlmYTYxMjYgbGVnYWN5LXRydW5rCisyNTE0NiAxMzgzZTZmN2IxMWY5OWQ3NDM2OWVlY2I5MDNiMjkzYjUwMmJmNmMwIGxlZ2FjeS10cnVuaworMjUxNDcgM2VmN2JlZDAwN2Y2ZWQzN2MyOTY5OWY2NGNlYzAzZDg2NzdkYTQwMCBsZWdhY3ktdHJ1bmsKKzI1MTQ4IDA1ZmFiZDhmNGU3ZjhkNjVmM2QxYjBhYTUzMTVhZjk0MmE0ZTIwNjIgbGVnYWN5LXRydW5rCisyNTE0OSAxOWUwYTkyZTMyNzc3ZWQ2ZmE1ZGMyN2NmYmY5ZTg4NzFhNzVlZGZiIGxlZ2FjeS10cnVuaworMjUxNTAgNmE4YzQ2ZDgyMTJiYzY3YjI5MmU2OTgyZTc1NDE0NjcxMWYyOWFiMSBsZWdhY3ktdHJ1bmsKKzI1MTUxIDk1NzYwYWIxMTg3NTVmNTcxZmIxZGM5ZTQyM2I5NzhjOGFhZDQ1OTcgcmVsZWFzZTIyLW1haW50CisyNTE1MiBhNjhiYTc1NWQ3MDBlNWUzMWFjZmVmNDE4ZmYyM2ZlNTNjMjhkZTJiIGxlZ2FjeS10cnVuaworMjUxNTMgY2UxMGE3Zjk2N2U1YTdiZGI2MjRlYzczZDY0MDhhNWQxMzU1OWI0ZCBsZWdhY3ktdHJ1bmsKKzI1MTU0IDQ4M2Y1ZjI3MmRlZmM2ZjQ3ZTQ5OWMzZjY5Yjc2NmJjMWUxNzQ2MDMgbGVnYWN5LXRydW5rCisyNTE1NSBjODg4NjIwZTgwNjJjN2M3ZDBmNTA4YjAyMThiMzM5YTM3Y2E3MGJhIGxlZ2FjeS10cnVuaworMjUxNTYgMjZhNTRkM2Y1NWU0N2ZmMzU0NzM0ZmEwNjVjNTljM2VmY2E3YzU3MCBsZWdhY3ktdHJ1bmsKKzI1MTU3IGU3ZDhhOWRhM2IxODA0MGI3ZjMxMmRiMzZkODhmZDRkZjIzYTM4MzUgbGVnYWN5LXRydW5rCisyNTE1OCAwM2EyYmE3NDE3OWI5ZjE1ZjBkYWM3M2JiNzRhMGIxYTUyYTA4MjFjIGxlZ2FjeS10cnVuaworMjUxNTkgYWRjYzE0MTQyNDMyZTgxNGUyMDc1NWFjOGQzYWVmMDU0YzNkZDJjNSBsZWdhY3ktdHJ1bmsKKzI1MTYwIDI0MDk4ZjRmNjgyZWQxNmZlZjE2ZGZhMjI5NTJiZmU3NWQ3ZmFhMGIgbGVnYWN5LXRydW5rCisyNTE2MSBmYTMwNTFlMGZkOTMyMTIwOWY3ZWE0NjdjNTc0OTgwODI4Y2FiMTQ4IGxlZ2FjeS10cnVuaworMjUxNjIgMmM4YjAzZWQzOTA2M2E0ZTMwZmUwNTU0ZmU3Njg0M2FhNDU3ZjY4YSByZWxlYXNlMjItbWFpbnQKKzI1MTYzIGUwZGJkMTc1NGFhOTA4YzE3YzE1ZjhlMzc1YjhiNmFhMTJjOWMwNjcgcmVsZWFzZTIyLW1haW50CisyNTE2NCBhYWU5NzdjYTU4YTNhN2IxZTEzZTE0MDIzNzZiOGJiN2UyNDMwM2IxIHJlbGVhc2UyMS1tYWludAorMjUxNjUgMzQ1YjkyZWQyYTNmYjdhYTJmYzlhNTQxZDRkYzk0NTZmYjU4MzVlMyByZWxlYXNlMjEtbWFpbnQKKzI1MTY2IDkyNjBmNjk0MzJhOTNjOWE3ZDRhZmQyMmU0YjE5NWMzMjRjNjEzNDggbGVnYWN5LXRydW5rCisyNTE2NyA1OWQwOWJhMWY3ODJjOGY4ZWFmM2FlMTdiNjA0NWZmYjg3MTU2MWExIGxlZ2FjeS10cnVuaworMjUxNjggNjNjYmE0MjNmYTA0MGJmMTA1ZjJjODhjOGIxOGU1MzA3MmQxOWRjNSBsZWdhY3ktdHJ1bmsKKzI1MTY5IDc0NDE1MzNhY2EzYmI5YmY2MDUzZmU4YmY5MWQ5MzZjNTE3ODk0MmIgbGVnYWN5LXRydW5rCisyNTE3MCA3YTExYmZjNjYyMTQzMTcxMzdmMzU2MThlZTBkNjQ1NTlmMWNjM2ZmIGxlZ2FjeS10cnVuaworMjUxNzEgNDQ0NTkxYWZmZDBlMDNjYzMwNmM2YzY2MzQ5YzY3ZjRmYzViZDM4OCBsZWdhY3ktdHJ1bmsKKzI1MTcyIGZmYzQxMTZlYzExOWY4YWJjZDliZjllZmI2YjcwYzAzYWQ0MTc4NWYgbGVnYWN5LXRydW5rCisyNTE3MyBmM2IwZTNjYjM0MGIzMDIxODkxMDkzM2M5YjljYTE4MDYyYWM4YjkxIGxlZ2FjeS10cnVuaworMjUxNzQgMDVlNjMxMTFjMzEwNmUwZDliYTNiOTg1ODhmMzYzMzYxNTQxNzQyOCBsZWdhY3ktdHJ1bmsKKzI1MTc1IDkwNTIxM2UyODY3NzU3MTNjZmYzZTZiYWE1Y2VkODMxMjVmYjI4MDMgbGVnYWN5LXRydW5rCisyNTE3NiA5NjljZTAxN2JkM2ExNzViNTUwNTQ1NjIxOTk1ZWJhYjM2YTQ0MzczIGxlZ2FjeS10cnVuaworMjUxNzcgM2E3MDc1MjBkZTMwOTNlN2Y4MWE5ZjgwMDBjZDNiYzFjMDA0YzU3YyBsZWdhY3ktdHJ1bmsKKzI1MTc4IDkwYzFmM2YzN2RhZTQ2YTg1ZmU3MmY2YjEwYmZmNjE3MWRmNmI4MjkgcmVsZWFzZTIyLW1haW50CisyNTE3OSBiMTJkY2QyNzZkYjBmZDIzZTllZTlhMDc5ODEzYTBiMjFkZTI0ZmIzIHJlbGVhc2UyMi1tYWludAorMjUxODAgYTRlNDczNjc5OWIxOGYzNjlmN2ZjYjIzZWJlMDllNTRmMTJjM2ZlZCByZWxlYXNlMjItbWFpbnQKKzI1MTgxIDFkODZjZGIxNzI5MTYwOWVkMGVkYzMxMTBmNTMyMzI1YzRmZDdkOTAgcmVsZWFzZTIyLW1haW50CisyNTE4MiAxNGRhN2RkMzdjOTRlNmE2NDhiMjgzNzkxYmVmNmVmZjI0OTEzNDVhIHJlbGVhc2UyMi1tYWludAorMjUxODMgZGZmMjI4YWQxN2I5ODM1MjVhMzc2NThkZmNlODEyOWVjYWUxYjQyMSByZWxlYXNlMjItbWFpbnQKKzI1MTg0IDZmNDU1ZDQ5MTg3MTVmMzcxOWVmN2Q4M2Q2MjE5YzAxMTViNzlkMTUgcmVsZWFzZTIyLW1haW50CisyNTE4NSAwNmY4YTgyMWI2ODNjZDEzNTU1YzhlNThiYzFmODBhOWZkYzMzNzMyIHJlbGVhc2UyMi1tYWludAorMjUxODYgN2U3OTY0YzY4MmI1NjIzOGZjYmQzMzM4OTc3ZDYyNTJlZDE2MWRhNyByZWxlYXNlMjItbWFpbnQKKzI1MTg3IDdiYTJhOGMxNjJmYTI2N2E3NzNhMTUxYjMxMjA1NWM5MDUzNGY4MDQgcmVsZWFzZTIyLW1haW50CisyNTE4OCA5YjQxNGRmNDhlMTQ3ZTk1NzQ0NDIxYzYxODY1NmM1ZWNmOGM3NzNlIHJlbGVhc2UyMi1tYWludAorMjUxODkgNzMxYmViNjdmZWM5MDE3YTkyNmIyNmY5YTZmMmI1OTA0Mzc0OGUwZiByZWxlYXNlMjItbWFpbnQKKzI1MTkwIDVjYWVhMmIxMzJjYTE4NWUwN2UwYmZmNTBkOTNhNzM2YWY5MTk2MjUgcmVsZWFzZTIyLW1haW50CisyNTE5MSA0ZjU0ZTlhMjk3NmU2YzIyMWNkNjA2YmZhOTZjNzAxMGE4ZmMzZjk1IHJlbGVhc2UyMi1tYWludAorMjUxOTIgYWE3MTNjNGM0OThkZWRmM2RiMjBmYTU3MTdkMDI3ZGFhNTlmOTc2NCBsZWdhY3ktdHJ1bmsKKzI1MTkzIDA3MGQzOTIwNDJlM2VlZjY3MDJjNTE4NzhiY2VmMzM3MmVkYjhhMjUgbGVnYWN5LXRydW5rCisyNTE5NCBjMWQ1NWE2Mjc4OTc3NDAzNzdjZjFlN2YwYzA5ZWExNGNjZGQ3YjM3IGxlZ2FjeS10cnVuaworMjUxOTUgZjM3OWJjMGM1ZTNmYzk3MjQ3M2M2M2UyOWIxZTVjMWQ0OTY4YzQ0ZSBsZWdhY3ktdHJ1bmsKKzI1MTk2IDZhMWU3NGFkZjhkNmNlYzRkMmMxMTI2Njc5NjY1ODE5ODdhOTAwOGMgbGVnYWN5LXRydW5rCisyNTE5NyAxMWNjMDU5ODU3NGQ4MTg0NWYxOGMyZGJmY2VhMDMyM2ZmZmY1M2FiIGxlZ2FjeS10cnVuaworMjUxOTggZmMxMGU3MDIxOGQzYmUzYzI1ZmNhMzM4OWUzNzQ0YzVhZDkxZjYzMCByZWxlYXNlMjItbWFpbnQKKzI1MTk5IDVlNjdhZDc2YzcyZmRhZGJjOGE3MTQ4MDk5OTQ0YWY3YmM3NjY1N2YgbGVnYWN5LXRydW5rCisyNTIwMCBmZDQxODRkYTA5ODMwZjZkY2IwYjUxZjZhMTQzMjYyMWVlYjE2MTllIGxlZ2FjeS10cnVuaworMjUyMDEgNGIzYjA2ZGUwMmEzMTE1YmMwNDA4ZTVhZjU1YzM2NzY0OGVkMzE5NSBsZWdhY3ktdHJ1bmsKKzI1MjAyIGZlMmI2NGZjNTdhMGEwZTQwZmNhZTg2MGU0YTJiOGMwMzdkYjQ1NjUgbGVnYWN5LXRydW5rCisyNTIwMyA0M2Q5YzJmOWEyZjZiYzAyMTczNWQ5MDYyM2JiYWU4ZTc0NjM4NjVjIGxlZ2FjeS10cnVuaworMjUyMDQgNDhiNTlmYTZmNjQ3MjJkNWVjZmM3NThhMWM0ZmM1MTQxMWYyNjg4MyBsZWdhY3ktdHJ1bmsKKzI1MjA1IGE5M2E3YmNiYzM4NmZkNjg3OGFkYTQwYmIyNmQ5YTVkNTY3MGNlYzggbGVnYWN5LXRydW5rCisyNTIwNiAyNmI3NThjMDBmYjYwNjQ1MzExMTZjMTEyY2I4MWRlZjQ4N2NmOTUyIGxlZ2FjeS10cnVuaworMjUyMDcgNDU3MzFmMTM2MGVlY2UyNjViOTJmZjM1OTY4NWQ1ZmM4ZWQxNDMwMSBsZWdhY3ktdHJ1bmsKKzI1MjA4IGZkNDI0ZjUxOWE4ZWJlODNlODYwMzgzZTE0OTVmZDU3NTA1NWU0YTEgcmVsZWFzZTIyLW1haW50CisyNTIwOSBmYWFhZWI1MzVkMzkyZTdlMGRiYWZiZTM2ZDQ2YTVjODY4NzZiMjEwIHJlbGVhc2UyMS1tYWludAorMjUyMTAgMGQwOGNiODQ5NTExODA4YTM5ZGViZmRlZGU3N2Y4ZDM2NGZiNjRiMCBsZWdhY3ktdHJ1bmsKKzI1MjExIGUwZmMyODZkNTdhNDZjZDZhNzg3YWE1YjkxZTE5ZmZiMmE2NGFlZjYgbGVnYWN5LXRydW5rCisyNTIxMiA5ZTM4NGYxMDMwNDcyMTA4N2VmNzViMWQxZjk1NjgzMmI2OTI1YTlmIGxlZ2FjeS10cnVuaworMjUyMTMgNjU4M2M5NWNmNjkyMjQyZGIxMzlmY2QwZGFiZDliMDhiODU5MGQzYiBsZWdhY3ktdHJ1bmsKKzI1MjE0IGM0MzNkZTE3YzE1ODNhYWE3ODI4ZWM4ZDZhMDU4Yzk2ODQ3NjFiNzYgbGVnYWN5LXRydW5rCisyNTIxNSAxZjJlOTI4NTAxODg3Mzg4ODlhYzNiMGQ5MDVlZmEwMjZjMmU4MzVmIGxlZ2FjeS10cnVuaworMjUyMTYgMmY2MTY0NzRlYWVjN2RmNWFiMThjNTczMzYyOWNjMmQwODlmNmNjZCBsZWdhY3ktdHJ1bmsKKzI1MjE3IDljZmY4OTBiNGZiMDc2YTgzNTFmM2RjYWYwY2U2NzA2ODRkNmUzMzAgbGVnYWN5LXRydW5rCisyNTIxOCBkNTIxY2YwODk5YzgwM2I1MmIwZGFlZDQ5YjdlOWQ4NTg3YjcyMTU1IGxlZ2FjeS10cnVuaworMjUyMTkgNzY2MDdhMGM2OTU2MDhmNTc2MzA0NDMzODZjNDY4NDFkMzRlYTFhNSBsZWdhY3ktdHJ1bmsKKzI1MjIwIDIwYmM0ZmYxMjE1YzBmZTcwYzg3NDAxNDBiY2ZiNDc0Mjk0ZGQwNjcgbGVnYWN5LXRydW5rCisyNTIyMSBmNWFhYjhlYjgxMjQxNTdiMmRmYzk4YTUyYWFjYWI2ZDAyMTQwYmNlIGxlZ2FjeS10cnVuaworMjUyMjIgNTNhYzgyODQyMTdhZmQxZmE3MzNjZjIyOTVlMzM1MTcxMTgxMTMyNyBsZWdhY3ktdHJ1bmsKKzI1MjIzIGNiZjQxOTI1ZGQzZTkzMTcxYjBkZDkxNjFhM2ZmNjBkYmFiODZmN2MgbGVnYWN5LXRydW5rCisyNTIyNCBmNzA4YTkwN2RjNjkxYTdhY2IzODc0NDE2NDBkMzRhNmFjMzZhZjE0IGxlZ2FjeS10cnVuaworMjUyMjUgNTNmZWNjOGRkNGM5MDVjY2M3NzVhZTM0YmRhYzU4MzcyNDcwOWVlNCBsZWdhY3ktdHJ1bmsKKzI1MjI2IDZmNjJkNTFjOWMxMjgxOWFkMzM4ODg2ODliMzliYTBjOTNmZGY5MjQgbGVnYWN5LXRydW5rCisyNTIyNyBkYTAwOGI1YzUwMzVlYzA1ZGI1Mjg5MTEzYTQzMjVkYzdlY2JjOGVkIGxlZ2FjeS10cnVuaworMjUyMjggM2NkMGI0YmI1ZTM0ZDI0OWFhYzM4MTc5MzU3MzE5YzRjMTlkNzlhYSBsZWdhY3ktdHJ1bmsKKzI1MjI5IGI1ZDAwMmU5MDgyN2UwNmZlN2RiMWJiNTA5MzIwMDkxNjg4OGI2MWMgbGVnYWN5LXRydW5rCisyNTIzMCAwNDJkYjAzODJjZDNiODMyZjVlY2VhY2VkZTZjMzYzMzE1ODZkZDliIGxlZ2FjeS10cnVuaworMjUyMzEgNTA0M2I3MzhiMDcyMGMzZjBlMDRjMjc1MjY4MGU3ZjI0NDllYmM3MiBsZWdhY3ktdHJ1bmsKKzI1MjMyIGVkODYxZTBkNGE3MWQ0ODY2Y2U2MTUwMzA4YTQxYjczNDBmYzc2OGQgbGVnYWN5LXRydW5rCisyNTIzMyA4NDRmZTcyNWIxY2Q0MzEyOGZmNWZmZmZlYmIyZjU0NjlmMzY1NjhmIHJlbGVhc2UyMi1tYWludAorMjUyMzQgNGQ3MjEzNTdiZGRiNWE4YWY1Njk5ZTZjZDk0MmVlNmYzNTYxYWE1NiByZWxlYXNlMjEtbWFpbnQKKzI1MjM1IDdmYWYwZmRkZjdlNjhhYWZjOWQyYzYyNzYyNTNhN2U1MjZmMmE1MTcgbGVnYWN5LXRydW5rCisyNTIzNiA3OGUzNmYwNTIzYThjODU4YTNiZDczMTcwODFkNTZmZDJhOWY4NTU5IGxlZ2FjeS10cnVuaworMjUyMzcgZTQ4ODQ2NzE3YzI2ZjNjMzY4YmM3OTdhNjFiNTNkNDdkNmJkY2VkYyBsZWdhY3ktdHJ1bmsKKzI1MjM4IDQ5ZDkzNjg5NDAyYjU0ZTAxMDRiYzMwZjY0NDJkNzM3Y2UyZGY4M2IgbGVnYWN5LXRydW5rCisyNTIzOSA4ZGFmZTRhNzhjYWM0NjUxNWE2M2Y1NDAzNDM3MDQ2NDhmYWQzMTcyIHJlbGVhc2UyMi1tYWludAorMjUyNDAgMzVmODQ4OTNhY2Y3NjljOGQyZjAwYTA5MTA5YWE1YjFiYzQxYjA5NyByZWxlYXNlMjItbWFpbnQKKzI1MjQxIDFjNzY5MjE3YzEwNTlmM2ZlMzM1N2UwY2U4OTU2NTQzNjc1MzYwZjEgcmVsZWFzZTIyLW1haW50CisyNTI0MiA5NGJhYzg4ZjE1MGYwMDEwMmY1NDAyNmJhNGYyMWFhOTQ2ODYzYjQ0IGxlZ2FjeS10cnVuaworMjUyNDMgMGE4MTNhM2RkYjkyZGQ5Y2FmOWE1YjFjMmIyM2U4YjJlYTU4YjY1NyBsZWdhY3ktdHJ1bmsKKzI1MjQ0IDA0Y2Y0ZTEzZTVjOWZiMzRlZDc0MTMwZDVkMTlhYmY5MmMxNWU2MGUgbGVnYWN5LXRydW5rCisyNTI0NSBjODI4NmNjNzAyYzk5MjRmMWUyYjIxM2NmZWVhZTIyMDJmZGQwNDAyIGxlZ2FjeS10cnVuaworMjUyNDYgYWJlZGIyNDE4ZjYyMzFhZGYyNDIwNTA5MmE1OTk5NmYxZjFlNGMwMiBsZWdhY3ktdHJ1bmsKKzI1MjQ3IGUxMDg2OTcyNmNkNDFiNzJhOGIxZjkxZGMwYWYzYjMzZjRmYzc0NTUgbGVnYWN5LXRydW5rCisyNTI0OCA4MzZjMWRiZjIzYTBlYTk4MWNkZjYzYjNmNzFkMzU0MjY0YmNiZjFlIGxlZ2FjeS10cnVuaworMjUyNDkgMTk4MzRjZDEwMWQ5MWI1ZjMyNmU0NTFkOTE0MmU5MTE0YWFlZmQwNyBsZWdhY3ktdHJ1bmsKKzI1MjUwIDY0ZTVhMzlmMWZmMDk2MTU4MmY2MWEzOTU2MjdhNWJiNWQ0MjVmNGUgbGVnYWN5LXRydW5rCisyNTI1MSAxN2E1NmUxYzZmZjhlMjdkMmQzZGQ5NjUzZTRiMWQwNmMxZjg5MjVhIGxlZ2FjeS10cnVuaworMjUyNTIgOGVkN2M2MWI1ZjFiYTM1YjE1YTFhNGI1MTkzMTEyNjYyMWJjYmU1NCByZWxlYXNlMjItbWFpbnQKKzI1MjUzIDg2MTNkZjE3ZjE5YmJkMzhlNTkxNDE4Yzg0ZGQxZjIzYWMxMTgwMDcgcmVsZWFzZTIyLW1haW50CisyNTI1NCBmMjQ1OTU1YjNmYmU3ZjRhMmMxYWFhYjIyNTBhNWRiNmZiNTc4ZDFiIGxlZ2FjeS10cnVuaworMjUyNTUgMjFmNTlkOWVkMTY5ZjRkYjA3NjNiODNjZTAwNDdjMGRkODFlYTUwMyBsZWdhY3ktdHJ1bmsKKzI1MjU2IDkzNzM0OGVmMThiODU2MDQyM2E4OWU2OTI1ODE0MGI0NjlhMjE3M2YgbGVnYWN5LXRydW5rCisyNTI1NyA5OGU5MmE2NGU3M2MyZmY3NTFlYmFiMjU1YzFmOGQxNDUxYzNlNmUxIHJlbGVhc2UyMi1tYWludAorMjUyNTggODZmY2Q5NDM4Y2JlYmQ3MTgzNzhlNTRlNjRiMjJiOWVjMjI1ZWE5YSByZWxlYXNlMjItbWFpbnQKKzI1MjU5IDRiNWMyOGE2MmQxNmU0YTRmNzhjM2I0ZDNhMTI3ZjBiYTM3MTE4NTQgcmVsZWFzZTIxLW1haW50CisyNTI2MCA1N2VhYTVkNjlhYzM1ZjUwZDgwYTdkYzBkMGZjNDgzMGYxZmI5ZTViIGxlZ2FjeS10cnVuaworMjUyNjEgNGMxY2NmMzYwMjVjZDk3YWFkZDBlYTEzMTY3ZmFmY2Q0MDFjOTAwNCBsZWdhY3ktdHJ1bmsKKzI1MjYyIDFmNmJjNDk4ZTZlNTZlMmZjNTVlNWVmM2QwNDQwYmZhMjdhN2Q4M2UgbGVnYWN5LXRydW5rCisyNTI2MyBjMDUxOGFkNzJiOTJlMGFhOWNhZGE1MTA2NzA1NmI3ZjcwZWUwMDEwIGxlZ2FjeS10cnVuaworMjUyNjQgZjAwNzgxZDY2NGE5YTRiNDMxZWJiMDdlNDNmYTE2OGQ2ZDc0NzViOCBsZWdhY3ktdHJ1bmsKKzI1MjY1IGRjYzA3NzhlYjdkM2I0MWMxNzgyYWNiZDM2N2QxMDEyMzY1NTE1ZWIgbGVnYWN5LXRydW5rCisyNTI2NiBmODgxZTA2MThkZjBhZjY2NTBkMTFkNjc2NWE0ZjMxNGVhNzdjNDU5IGxlZ2FjeS10cnVuaworMjUyNjcgN2Y2NTIzYjMyMTc5MjYyM2E2MWMyNmYwYjMyNTI3NmQ0MmUxOWYxMSBsZWdhY3ktdHJ1bmsKKzI1MjY4IDE2ZmFmNjg3NTAwNDUyZjlkMmIzMzExODNjNGVhNmFlYmUxNmNiZDUgbGVnYWN5LXRydW5rCisyNTI2OSA3YzMwY2IxN2MyZjY1NmQ3YTA1MzZlYjllY2MzMjdlZjIwOGRjZjJjIGxlZ2FjeS10cnVuaworMjUyNzAgMTZjMmFlMzY5ZDcxNWUyZTlmNjdmMDZmMjE1MjhmM2U5Y2JlMzIwMCBsZWdhY3ktdHJ1bmsKKzI1MjcxIDc5NGZlMzdjYTVmNGU4YjU5OTYzYjE4ZDc3YTZhZjNiZjhjNjM2MDMgbGVnYWN5LXRydW5rCisyNTI3MiAxNTE3YjQ1NDdiODc2NmNhMzg3NTA1M2Y1OTBkODE5NTk2MjFiNDAzIGxlZ2FjeS10cnVuaworMjUyNzMgOWQyYWU4NTMxOTQ0MDQ1ODgwNmU0ZmQ5YWExMDM4YTQ4OTE4ZjI4YSBsZWdhY3ktdHJ1bmsKKzI1Mjc0IDBjNjk5OTJjY2UwOTk0NmQzODk3NWYyMzQxM2Q2MDFmNDc3MGE4ZjEgbGVnYWN5LXRydW5rCisyNTI3NSBlMTYzNzEzYjQ3Y2YyMWIxM2NkOWI4NTkxYTZkYzE1YWY2ODJlZjJjIGxlZ2FjeS10cnVuaworMjUyNzYgMTVjMGU3YWVmNjY2ZDE4ODNjMmQ3ZTVmNzJjOWI4YTQwZGZkY2NlOSBsZWdhY3ktdHJ1bmsKKzI1Mjc3IGI5ODE1ZjRkOGJlMzU4NTQ5NTZmZjJmNzdhOGU2NjJjYzgxOWEzZDIgbGVnYWN5LXRydW5rCisyNTI3OCAwNzZlOWRjNzdhYWRiMzg1NzAyMzY1NWY1ZWY1MTBkODg5ODliN2M3IGxlZ2FjeS10cnVuaworMjUyNzkgYzM3NjM5NzYxMTJkNWFmZmJiOWU0NTU5ZjkwMTAyMTg1ZDk1MzZiNyBsZWdhY3ktdHJ1bmsKKzI1MjgwIDU5YmI0M2I2ZWIxMWYyNWZjOWM0MjBkZjIzZTI5ODY5N2Q4NmE5MTYgbGVnYWN5LXRydW5rCisyNTI4MSAwZjVkZmEzM2Y5ZWU4NGUwZDZjMDc4NzY1NGNhZWMwZTJiYWI0MTE2IGxlZ2FjeS10cnVuaworMjUyODIgZjdhYTMyN2ZmMGZlYjkyNzFlM2VmZmEyYTY0OWU2OWUxZjhmOGQwMCBsZWdhY3ktdHJ1bmsKKzI1MjgzIGVmYjZlNjE3YWVhMzlkZDFhYWE3ZjFjYzhjOTBlYTQyMTU2YWM5MGYgbGVnYWN5LXRydW5rCisyNTI4NCA4N2FmZjY0OGQ5OTRlMjM3ZGMyNmVmNjZkNDQ4MmE1YWZkNTJhOGRhIGxlZ2FjeS10cnVuaworMjUyODUgMTA5N2Y3MzAyOTRiMmM5MGE5YzdhYmY2MjU1M2NiY2Q3NWJlYTUzYiBsZWdhY3ktdHJ1bmsKKzI1Mjg2IDlmNmUwY2YxYWIzMDk3YTE1NWU3NWZmMmYxM2Y4ODdjMTA5MjU2ZGYgbGVnYWN5LXRydW5rCisyNTI4NyAyNDQ4MjkyMWE3OGE5YjkyZDRhNTk1ZDk1NjY1NGRmNDdiNjRiMzFjIGxlZ2FjeS10cnVuaworMjUyODggYTEzYmYyZjcyNjI5YWI2OGE3MTMwNzU0YzdhNWNkMTY2MDhkNzQxNSBsZWdhY3ktdHJ1bmsKKzI1Mjg5IDdlNzE1OWMwMjgzMDkxZjhmZWI3YjBlZWJmNjBkNWNmMTJlYjIyYjQgbGVnYWN5LXRydW5rCisyNTI5MCA4OGUyMTdlNTA1M2ZlNDQ3ZGZkZDA3OGY1MGIwZTRhZjQ3ZGUyZjI4IGxlZ2FjeS10cnVuaworMjUyOTEgNzc4MjQxNTgxZDRhMzU2YzYwMzgzZWVkNmRiNjA3NjAzZGQwZjI5YyBTb3VyY2VGb3JnZQorMjUyOTMgN2YzNWJiOTJmYmY3NTM0ODAyYjg5ZDdlZTk3ODc4OWM2MDM2YmRkMCBTb3VyY2VGb3JnZQorMjUyOTQgN2Q1YjJjNjc5ZjNiY2QxM2Q2ZjY4YTA3ZmVhZjdjMTEwZDdiNjA1NSBsZWdhY3ktdHJ1bmsKKzI1Mjk1IGFiNjhhZDQzZDUxNDM1ZDYxMDNhNTU1NGI0ZTMyODg0MDliMGIxZjggbGVnYWN5LXRydW5rCisyNTI5NiBiMzg2MjliOTE1NDUxMmJhY2QzMWQxNDM0ZjUxYjc2NWUxMTkwODY3IGxlZ2FjeS10cnVuaworMjUyOTcgNzFmZmM5ZmI1OTg2ZjU5NTMxYTA4NTljZTAwMmJjOGU5OWY5ODZhNCBsZWdhY3ktdHJ1bmsKKzI1Mjk4IGUyMGQxMmI1ZGFkMWMwZmM2MjNhZWZlNjA4NTBmZDRiMDgwNmNmMGYgbGVnYWN5LXRydW5rCisyNTI5OSBkNzQyNzk4Y2Q0YjRhNDZiOGM0N2E3MTlkY2Y4MDEzYmE5YjY2NmQ3IGxlZ2FjeS10cnVuaworMjUzMDAgODI5OGU5YzUzNWRhODRmMTkzNWZiNTJmMjYzZWUxNWUwNjJmOGVkYiBsZWdhY3ktdHJ1bmsKKzI1MzAxIDRhYjI5YjA2YTc2Y2JhMGUyMmM0OGEyM2ExNTMyNWZiNjYyNGE0ZTAgbGVnYWN5LXRydW5rCisyNTMwMiA2YmRmYzlmNmYwNTkwMzJkNWVmZmM4MDhiNGIxYWU2MTAxNGYzNjIxIGxlZ2FjeS10cnVuaworMjUzMDMgMzJkMGVmNmYxOTU1NzA2MmMyYjAzMGE2MDgzYmRmOWMwMDFmMjExNyBsZWdhY3ktdHJ1bmsKKzI1MzA0IGY3NDU3ZmFiNzZmMGRiYmM3MGIyNzlkMTg3NGNjM2EwOTEwMDY1MDUgbGVnYWN5LXRydW5rCisyNTMwNSA5ZDQ0ZTc1MmQ2MTdlYzU0MDliNGFkZmY4ZjVmNTliZmRkMzIxOTdkIGxlZ2FjeS10cnVuaworMjUzMDYgOWM4MzIzYWJmMWRiZDI3ZDljYTBjZDdkNzI1NDk5ZTlhNTk2OTE3NiBsZWdhY3ktdHJ1bmsKKzI1MzA3IGYzOTIxMzQwNWUwNWM0OGI2MzlmM2M3Y2EyY2JlMGU2ODJiZDQzYzAgbGVnYWN5LXRydW5rCisyNTMwOCBjYmYxZGJjYTFmNjMwY2MzNzAyZmNiZGUwYjcxYmQ2MjhhNDZjZGRkIGxlZ2FjeS10cnVuaworMjUzMDkgNzY2YzU5MzdhNjFlYzY3N2E5ZDgyNzY2MTIzOWFmZmYxMDJlNjEyOSBsZWdhY3ktdHJ1bmsKKzI1MzEwIDkxYTZkYjZlZmExNDlhMjUxNWNlZGFjZDllNDZlYjUzNjUxOTAxZTMgcmVsZWFzZTIyLW1haW50CisyNTMxMSBkMjQ0MTEwNWE5YmZmMTA4Y2VjOTAzMmQyMzVjZGUzMGQ4NzcxOWFjIHJlbGVhc2UyMS1tYWludAorMjUzMTIgMTdmODQ2OWYwOWQyMDdhZWIzNTIwYjk0NjE3ZjI2YTMzY2MzZGEwMyBsZWdhY3ktdHJ1bmsKKzI1MzEzIDgxYzJiZGE1ZDM3Nzg4ODY0ZDIzOGVkMWViYjZlYzhjOWU2NzJlMzkgcmVsZWFzZTIyLW1haW50CisyNTMxNCA0ODY0NDQ0NTIwZDkyYmNhMGRjZjA3ODZjMWUyNTBiNDk0YWNhMzJiIGxlZ2FjeS10cnVuaworMjUzMTUgNjc2ZGIwMzAwZjA2Nzc4NWZiZDkyODRiMDFlNDY3YTM3MTliOGIxYiByZWxlYXNlMjItbWFpbnQKKzI1MzE2IDBjOWViY2YxN2ViZmQ1OTI5NmUxNjlhNGE5OTUyYTVhZWViODQwN2MgbGVnYWN5LXRydW5rCisyNTMxNyA5N2Y0OWVkY2JkZTcyMGEwNzM0OGI0NTFiZjhjNzZhNjg2MGQzNDFlIGxlZ2FjeS10cnVuaworMjUzMTggYjU1ZjJmZjhiMjVmNjE3ZTQ0ZjM5NzliOTY3MWQxMTdjODA1YzBhNSByZWxlYXNlMjItbWFpbnQKKzI1MzE5IDJlOWUxYjAyYjdkN2I2MmIyODIyZDgwNzQ1Y2JiMTUzYjNjNzdlYzUgcmVsZWFzZTIxLW1haW50CisyNTMyMCA5ZmE1ZDQwY2M3MjIyZDZmMTdkNTkxOTRmMDhmYjA0MzAwM2Q3YjBiIGxlZ2FjeS10cnVuaworMjUzMjEgNWVkNzgyYmRiYjJhYTAwNzlhNmQxYzM1NTBiMzhjNWFkNDg5ZDc1OCBsZWdhY3ktdHJ1bmsKKzI1MzIyIDM5NTdkMTU1ZjhjNTUwMTk0YThlNWQzOGVhNjM5MzlmNTY4YTQwOTQgbGVnYWN5LXRydW5rCisyNTMyMyA3YTkxN2FkOGY0NDI0ZjUyZmQ0OTZiMTBhYzlmN2VmZDVjNzMxNTFiIGxlZ2FjeS10cnVuaworMjUzMjQgZWEyM2U2ZTQ5MjkwM2QxMDNlNjM2NjM1YjM5N2M1OTBkYWY1MjE0MCBsZWdhY3ktdHJ1bmsKKzI1MzI1IGQzYjFmMmMwZWJjZmMzZTNmOTkwNTVkYzQ2NDhmMGFiNjg0MzdmNjMgbGVnYWN5LXRydW5rCisyNTMyNiAyZmFhMjNmYWNlZjcyZGYyNGVmOGIzNmEyZWEzOThhZTVkMTYyYjVhIHJlbGVhc2UyMi1tYWludAorMjUzMjcgOTRiOTBjZGQ2ZTBmZTVlM2Y3YTI5MzliYjVhNzRhNzg4NzBkZGE3OCBsZWdhY3ktdHJ1bmsKKzI1MzI4IGM1ZDNlNDU4NzQ5ZTc4MWU4Y2QzMDZlZDI0ZmNjNGQ3Y2ZjMTU4NmQgbGVnYWN5LXRydW5rCisyNTMyOSA5YzQwMjUyM2Y4ZjVhYjU3ZDQ1ODg3OGE0YjQ1YjcyMzQ3YmNmMjAxIGxlZ2FjeS10cnVuaworMjUzMzAgNGQ1NTQ3MDBjNGQxNzIzMjY4YTk4NjQzZjhiMzI3ZWU3ZWEwOTRiNCBsZWdhY3ktdHJ1bmsKKzI1MzMxIDYyNzQxYjI1ZWQ2NTE3ODY0ODUyNTU5M2VmZmM2NzU1MTg4YzEyZWMgcmVsZWFzZTIyLW1haW50CisyNTMzMiA3MmM5NTQ0OGVlNGIzYzBiNWM0ZDgyZjhlZmNkZmY3YzMxN2FkYWZjIGxlZ2FjeS10cnVuaworMjUzMzMgYjFhODcxZGM1MTk2MmQ1YjgxMzdmM2YyODY0ZGZjM2Y3ZGNiZTU5ZCBsZWdhY3ktdHJ1bmsKKzI1MzM0IGZjZTcyNzhkNDZiMGE4NDkwZTQ2OWI1ZmMzOWQwMDY3MjI4Y2ZjMjUgbGVnYWN5LXRydW5rCisyNTMzNSA0YTEzMzc5MDY2MDhmYjc2YTNlOTQwMTE2ODJmYjM3OWY3ZDhiOTIxIGxlZ2FjeS10cnVuaworMjUzMzYgZWE4ZGI2ZjVkMWM1NzkyNmNlNTcxM2RjOGRiNDY3MTQ4OGQxNzIwZiBsZWdhY3ktdHJ1bmsKKzI1MzM3IDA1MmVmYzA2NTIwYTIxZGJmNjhjMWM4NmNiYmVhYTEwNzY2MzI5OTYgbGVnYWN5LXRydW5rCisyNTMzOCA4ZTBjM2I3NWVmZjU4YjE1YTk4NjZiZjgwY2M0ZTliNDk5ZWI4MTBlIGxlZ2FjeS10cnVuaworMjUzMzkgZTk2NGUwZmM0YmZlNzFiYjNkMDMyN2UwOGE2MDUwZDFlNWJjYWI4OSBsZWdhY3ktdHJ1bmsKKzI1MzQwIGEwYWQ2OWMwYmMzNjdmMzQxM2Q1ODdlNGQ4MDk1Mjk3OTcyYmNkZDcgbGVnYWN5LXRydW5rCisyNTM0MSAxOWUzZjg2NTllZWNlMmM1MGMzZjM2YzdhYmM1MjQ1NWExNDBlYmRjIHJlbGVhc2UyMi1tYWludAorMjUzNDIgODhhOGZjYWQwMmQwZGNjYmM0ZmY3OTdhNjc4ZjI0YzZmYzNhMDdlOCBsZWdhY3ktdHJ1bmsKKzI1MzQzIGM4MGY1NjAxMGIyODVjODNiZWVkZTMxZjY5ODRiNjFhMzgzMzEyYmIgbGVnYWN5LXRydW5rCisyNTM0NCA0ZTljYzI2ZTAzZmRlOTAzOGM5ZmIxYTYxOTFhZjJkMjZkMWY0MzcwIHJlbGVhc2UyMi1tYWludAorMjUzNDUgZTA4YWIzNDdkMTJlOGIzZmFmZTJhYWUzYTQ5YjgwMGNiMzM1M2E0MCBsZWdhY3ktdHJ1bmsKKzI1MzQ2IDRjMzM4N2JhMTE5ZDAxODdiMjJhMTU4ZTRiNDIxZmQxOTgzMDIwNDYgcmVsZWFzZTIyLW1haW50CisyNTM0NyAxOGI1YzdmNjRjODA1YzE1ZTRmNmNkYTNjYTUxYjYwNDUxODJiNDJmIHJlbGVhc2UyMi1tYWludAorMjUzNDggOWI0NWE1ODc0YzA5OTE5YWMwYzRhZTZjNjA1OGZhZWZhYTQyMzdkMiBsZWdhY3ktdHJ1bmsKKzI1MzQ5IDM1ZDlmNTY5MzYxYWZlNmNhM2QwOTY1NDE5MGFhMGMxZDFiZTZjYWUgcmVsZWFzZTIyLW1haW50CisyNTM1MCAwZjYzMTExYmY0YzVkNzc1ZjkyNjY5N2QzZGE4ODQzYWM2ZGFiODEwIGxlZ2FjeS10cnVuaworMjUzNTEgZjkyZTg2OGViNDQwYjc2MDk5NDhhNTU3NjJkY2JjOWFlZjZjOWNlNyBsZWdhY3ktdHJ1bmsKKzI1MzUyIGM4NDNiZTVkNThhOWRjOGM3ZGMyYmY1NGE1YTc2Yzk5MzkxMzkxOTUgbGVnYWN5LXRydW5rCisyNTM1MyAwOWFiOWNlMWY1MmE2MDI0ZWViNTJlNzE1MmVjYzM4MGY4MmE3ZDVhIHJlbGVhc2UyMi1tYWludAorMjUzNTQgMDhjNWIwYzdkOWQ4MThlN2NhZWM5Yzc1MTM3ZjcxMjliNWJjYWQ4NSByZWxlYXNlMjItbWFpbnQKKzI1MzU1IGE3ZmJkZTZlMzRhNTBmNDU4ZmRiZWUxYzM0YTZhZWFiNjNhNDk2OWMgcmVsZWFzZTIyLW1haW50CisyNTM1NiA0ZTk5NjMxNGY4ZmI0NDEzOWQzODFiODYyNmQzYTFlNzU0NzYwOTEyIHJlbGVhc2UyMi1tYWludAorMjUzNTcgMWFhMGNlNjBmNmE4NTI3MGMxNTI0NjhiMjE5ZDYxYzg4YjY1ZThlOSByZWxlYXNlMjItbWFpbnQKKzI1MzU4IDI3MTQ3MzlkNDgzYjYyN2Q3MTI4OTBjOWJkYWFmNjExNGE0YjQ1YTcgcmVsZWFzZTIyLW1haW50CisyNTM1OSAwYjE1Y2YxMTQzMWU0ZDE3NmUwZmZjMWE4Njc1NDdiOGQ0OTk5Y2QxIHJlbGVhc2UyMi1tYWludAorMjUzNjAgY2I1YjRhNTRmZjEyYTRjZDgzMDFmNjI0NmFiMzg5OTgzZTJhMzY3MCByZWxlYXNlMjItbWFpbnQKKzI1MzYxIGRlZmQyYjFhODQyNjg4YmYxNjM5MDk2M2UxY2I3MTViNTRlYTBkYTQgcmVsZWFzZTIyLW1haW50CisyNTM2MiA3YWVlMGY4YWZhYzUwOGNlNmZjMThlMGQ3MWYzNGE1Zjk3MTE5ZTgxIHJlbGVhc2UyMi1tYWludAorMjUzNjMgYmM1YmY3MmZiNWQ0NWQ0YzBkNmFlZjZhMzUyNGZiMGRlNmM3ZTQ4NiByZWxlYXNlMjItbWFpbnQKKzI1MzY0IDk2NTg3NDI3OWVlMmQyNjY1OTYxMDVlM2U2ZmQ1M2RmMjFjMGQ5MzQgbGVnYWN5LXRydW5rCisyNTM2NSA1ZTk1ZjNlZTc3ZWMxNDNjN2UyM2YwZTY2NWM1NzE2ZjNhNDhiNjFiIHJlbGVhc2UyMi1tYWludAorMjUzNjYgYTZhNWIxZmNjMmE3ZThmNTRlYTAwY2IyMmM0MmU2ZTgyZDc4ZDFiNiByZWxlYXNlMjEtbWFpbnQKKzI1MzY3IDUxMjY2YjJiNDM2MGQ0ZTZkMDk5Njk5MzUwZDhiOWViNTE1NmYxYjMgbGVnYWN5LXRydW5rCisyNTM2OCA1MmFhM2UzZTU3N2YxMjBjNTkyYzhmZWMwYTc3Mzc5YjIwZTFiNTQwIHJlbGVhc2UyMi1tYWludAorMjUzNjkgNGNkYWZmYzllMThjYzBmMGJlNTM4MjAzZTQ2NTg2NjhhYmZjYzgyMSBsZWdhY3ktdHJ1bmsKKzI1MzcwIDhhNzkxMzMwZmMyMDNiNmMyNTA3NDUzNTc3NTIxZTk5NjQyMGJjYjQgcmVsZWFzZTIyLW1haW50CisyNTM3MSBkMjRhYWRmZTNjMDZhOWE4YmMxNzM3ZDA5ZjQzM2VjMTFkYjFkYWI4IHJlbGVhc2UyMi1tYWludAorMjUzNzIgOGNlMTdkYTk4ZThjYmFmY2I5OGUwYjE4MjE4NzQ5MDQ1YWZmMDI5YiBsZWdhY3ktdHJ1bmsKKzI1MzczIDgyZmIwZjk5ZTJkYWQzMThkZTQwM2E0ZGQ5OGJiYzVjMDI5ZTFmNzYgbGVnYWN5LXRydW5rCisyNTM3NCA5NjM2NzVmZTk3ZTc4OTFlMjM4ZmJmZDliNzcyYWJkODhhODEyNjkwIGxlZ2FjeS10cnVuaworMjUzNzUgZTc5OTQ5ODgzNmI5NGVjOWZkNDVmYjBjNjFkNTQ3YTFiMWE4ZDYwNiBsZWdhY3ktdHJ1bmsKKzI1Mzc2IDk4ODVkYTNmZWVlY2QxYjEzMGFjM2U0MGU5YzA4Njg2OGJmODEzMzYgbGVnYWN5LXRydW5rCisyNTM3NyBlM2ZiOGQxNmE1MWFjYTU3ZDNmOWFmMmE4ZmQzODhjMDRhMDQ4YTAwIGxlZ2FjeS10cnVuaworMjUzNzggNGViODE4NjlmNjE5N2I1YjI1YWVkZDAzNzJkOWRkY2Y4OTc1OTZkMSBsZWdhY3ktdHJ1bmsKKzI1Mzc5IDQ4MWU5YTQ2ZDY4MDExYjMyMzc4YmVmZjBhNmZiOWJhZjM2NzU1ZWYgbGVnYWN5LXRydW5rCisyNTM4MCA4MGEwNGNiY2QwYzgwMTFhNjAyZWMxMDY2NjEzZTQ2OTE3NDRmZjkzIHJlbGVhc2UyMi1tYWludAorMjUzODEgNDRlZGJlMGYyMTc0OGU4ZTJlM2NkNTAwMTJiYWE4NzUwZGQ1MTg3YSByZWxlYXNlMjItbWFpbnQKKzI1MzgyIDMyZDI0ZjhkNjRmN2IzNmRhNzQ0MjkxNjQ0NmJjNjAxMWUxNDc1YjUgcmVsZWFzZTIyLW1haW50CisyNTM4MyA5ZjVlMzU3ODY3NTI1MjdiZGJlOTY2MGFkYWJkM2ViOWViMTQ3NzEyIHJlbGVhc2UyMi1tYWludAorMjUzODQgNzFmMjVmOTVlOTAyNTlkNTIxMDZkNzRlNWQyY2JkNWU2NDhlNmMyMSByZWxlYXNlMjItbWFpbnQKKzI1Mzg1IGI4NjkxNjAxZDJhMDI4ODI5N2E1NmQxOTllMTlmMDA2NDRmNWZkMmMgcmVsZWFzZTIyLW1haW50CisyNTM4NiBlMDY4NDQwZTExNmY5Mzk2ZTg1ZmVmMTQyODEyZmFhNzE2M2Y0NmIyIHJlbGVhc2UyMi1tYWludAorMjUzODcgOTVkYzMwMjQ5MjdjOTg4ZWJmMTYyZGE2NTc1ZGIxZGQ4YTU0MDg5NyByZWxlYXNlMjItbWFpbnQKKzI1Mzg4IDAyYTdjNjRlMzMzMWY5OTdkYzUwMzIwNzg3YjI0NzY4MWIzMDY3YTQgcmVsZWFzZTIyLW1haW50CisyNTM4OSBmYmU4MjBlMGM2MDFkNjY1NzlmMWIwMTMwY2I2NmRmYWY4MDE5Njc5IHJlbGVhc2UyMi1tYWludAorMjUzOTAgN2ZiZWZlM2UzZGVlMmQ3MjJhNWRjZGM1ZjVlZTMyYmFhYTMyYzBhZiByZWxlYXNlMjItbWFpbnQKKzI1MzkxIDU1NmZiN2YxYjYwNjc0M2UxODY1NGRlM2JmNTQ5ZjFjZDdiNmM5MDggcmVsZWFzZTIyLW1haW50CisyNTM5MiBhNWIyNWE4MTZhNmQ2OGMyZTkzY2M4NjRkYzI1OWZhODY3NWM4NmRlIHJlbGVhc2UyMi1tYWludAorMjUzOTMgOTkzNDFlODUwMTdlYTQ2YmRlODBjZGRjZDM0NTY1NmY5ODc5Y2I0MyByZWxlYXNlMjItbWFpbnQKKzI1Mzk0IDc2MTA3NTI4MGE5NWU2MGJlMWE1NmRmNTQ2MjU3OGFlN2MzOTI5MzkgcmVsZWFzZTIyLW1haW50CisyNTM5NSBiMTJlOTcxNDM2NjhkODdkOGI2ZGIzYTU4MmQ0MDU1N2Q5ZGJjZWJiIHJlbGVhc2UyMi1tYWludAorMjUzOTYgZmRhYWZhYTg5NTg3ZDc5OTBjNGVjZWVhYTBkMDg4M2E3M2EyNTZhOSByZWxlYXNlMjItbWFpbnQKKzI1Mzk3IGFlNDhkNTQxZjY1YWMzOWFhNjVlYmE4ZDEyZjQ2YTUwYmIxZDgyZmEgcmVsZWFzZTIyLW1haW50CisyNTM5OCAyMjkzZTBkN2I1YzQ1MDZmZTEzNTgzZTc2ZGY5ZjA1YWViMGYxY2U2IHJlbGVhc2UyMi1tYWludAorMjUzOTkgMjI5YjYyNGM2YjU0YzkxNjBiMzkyMzQzYmJhNjRhNTY1ZTMyNzQ2YyByZWxlYXNlMjItbWFpbnQKKzI1NDAwIDcyMjNjNTRiMDcyNzZkOTgwZGRlODkzM2E1ZGIwMjk5MDIzYTViYWIgcmVsZWFzZTIyLW1haW50CisyNTQwMSBlNmQ0NGNmMjlkYmY5NzZhNTFlNGY1YWNkY2JhYmYwNDg1NmVmMDAzIHJlbGVhc2UyMi1tYWludAorMjU0MDIgMTMzOWNiZTk0Y2VlNTU0NWEzMmJiMmZlZTQxYzRkMzU5OGRhNzg3ZCByZWxlYXNlMjItbWFpbnQKKzI1NDAzIDg3NWZiNWI3MjkxMGMzNTFmOGEyNDNkMDMwM2JjMWZhZGJlNTY3ODkgcmVsZWFzZTIyLW1haW50CisyNTQwNCBlMGEyODhkYjAyMmRlMWIxMWNjYmZjYTY0YWJmNTU5NjJmMTg5ZTg2IGxlZ2FjeS10cnVuaworMjU0MDUgZjM4NjMzMDNhOWY0ZmE1NWYwYmVhYzc3OTBhZGY3MGNiYjZmZTdmZSByZWxlYXNlMjItbWFpbnQKKzI1NDA2IDQ3YWExMDgxYWYyODA5ODAwN2UxZGZmODg1OWZhNjRhYjRkNTMwNTMgbGVnYWN5LXRydW5rCisyNTQwNyAxNDk4YzZlNGI0M2ExZjZkYjkxMGViZmVmY2Q0YmUzOWUwN2FkZDhmIHJlbGVhc2UyMi1tYWludAorMjU0MDggY2EyY2JhMTBiNDQ4N2FhZjBmZmYyOTVlZjBlNTZjZjAwODNkY2I1NyBsZWdhY3ktdHJ1bmsKKzI1NDA5IDI3NjJkMjI1MWU4NWRjNjRhNzYyMTBhMTFhNWYwZTRkM2NlZjE1ZDkgbGVnYWN5LXRydW5rCisyNTQxMCBlZmEyM2QyNmZhMzVkNDZlNGZlY2M0NzQ0ZjUxMWI4MWQxN2Y4ZWEzIHJlbGVhc2UyMS1tYWludAorMjU0MTEgNmJlNjU5MjNjMDJkNmRjNDY1NTFmOTliNzg3MDRkYzlmYTdiZjcxYiByZWxlYXNlMjItbWFpbnQKKzI1NDEyIDliMWNjOTlmNTkzMmE4NDk3OGMyMzhlMzU0NDlhY2E2YjMyZTYyMzEgbGVnYWN5LXRydW5rCisyNTQxMyBlY2ZmNDA0NjE5N2RhMTgwOGI3YTIxZDgwYTMzMjFjZWU3MGE4ZmYzIGxlZ2FjeS10cnVuaworMjU0MTQgZTMxYWQ0ZGQzMGQ5OTg4MzMzOGRiNzUzMzc3OWIwY2M0Yjc4NWVhYyBsZWdhY3ktdHJ1bmsKKzI1NDE1IDA4ZDVjZjU5NmIwMTA3MWMwZGM2M2M0MDc0ZWM2MTAzNzEyNzFkNjkgbGVnYWN5LXRydW5rCisyNTQxNiA0OTE5N2ZkNzYzNjJiMmY3NGZlZWJiMzVjYmIyMTgwZmFlYTRjZTUxIGxlZ2FjeS10cnVuaworMjU0MTcgNWNiY2ZkZTNhZDU1MDc2N2RmODhhMTk1MTQ1NDY3YTNlZDZlM2RlNyBsZWdhY3ktdHJ1bmsKKzI1NDE4IDg2ZDBmN2Y4NjU1MDU4N2ExOTE0NTdmZjg1ZDQ1YTc2ZDkwZDJkOTggcmVsZWFzZTIyLW1haW50CisyNTQxOSA5ZjFlYjhmZjE3OTU2YWQ4ZTI4MTc2NTUyNGZkZGVhNTlmMmRlYzQ0IGxlZ2FjeS10cnVuaworMjU0MjAgNDM4NTQzMTE2NGRhNTlmYzY1Yzc2OTZiN2M5MjliOWVjYTkxZjU3NSBsZWdhY3ktdHJ1bmsKKzI1NDIxIGNhOGEyODQ5ZGQ1NmVjMTM3YzVlZjZmMWI1MTVlMzg0MDVmMGVlZGMgcmVsZWFzZTIyLW1haW50CisyNTQyMiA0NmJjZWUxMWI0ODA1MGQxMTU5NWYyZDAzYWEzNDVjMzUzN2RlNjQzIGxlZ2FjeS10cnVuaworMjU0MjMgNTFlZTNiZGRiNzJjZTZlNDEzNGM3MTJkYjQzYTFiZWM2MzA4OGE5YyByZWxlYXNlMjItbWFpbnQKKzI1NDI0IDVjYjZjYzQ2Y2Q0MmNlNGQ2NDg1ODBlNWZhN2NkNjIzM2M1NTUzNTggcmVsZWFzZTIyLW1haW50CisyNTQyNSAxMDg3Y2E1MTllYjlhZTdmMjVlMzYzZjNhODgzY2FhOWJhYWE2MTQ3IHJlbGVhc2UyMi1tYWludAorMjU0MjYgYTUwYmFhMTI2Yzc1ZTZlOGQ2Y2Y4ZGQ1NGJkMDUzMmYwODZhYzhjOCByZWxlYXNlMjItbWFpbnQKKzI1NDI3IGI4Mzc0ZGU4NGUyYWU3MzUxNTFjYmE0NjFjMzU3MjdkMDQ2OTNmYTMgcmVsZWFzZTIyLW1haW50CisyNTQyOCA5NzIyNGE5Y2M4M2M2NTEyYTcwZGZiNmE5ODdjZTc3NzZhYWZlZWMyIHJlbGVhc2UyMi1tYWludAorMjU0MjkgZjU3NmQ5MDAwMjZmMzZiOTU5OTNmNjQ5NWVmNTgwNDg5Mzk3ZjU1YSByZWxlYXNlMjItbWFpbnQKKzI1NDMwIDVjMTQ4ZjVlMWMxMTQyMDAyNTliYmM3ODRlNWI0NzBlMzAxNjk3YTMgcmVsZWFzZTIyLW1haW50CisyNTQzMSAzYzNhY2FjODY3MzQ1NDlmYTI1MDMzMjhhOWUzYzJlYzIxZDBmZmRhIHJlbGVhc2UyMi1tYWludAorMjU0MzIgNTAzMmVjODkxZTc0NTYzZThkMmIxMzYzN2JmMzNkODI2ZWRjMWZmMiByZWxlYXNlMjItbWFpbnQKKzI1NDMzIDRiYmFjYWVkYzZlMmQ3NDE1YmIwMjVjNDZhNWMwZTg1ZWZhNzQxM2MgcmVsZWFzZTIyLW1haW50CisyNTQzNCBjMmY5MGNlNTk3NTUzOTgzMTM3YWIwNzcyODdiZjVmYzY0MGUxZDc2IHJlbGVhc2UyMi1tYWludAorMjU0MzUgNTIxMDYyOTBkMzkyYzk0YWU0ZWQ0YjQyZTVhNWM4OTg5YmNkZDYzMCByZWxlYXNlMjItbWFpbnQKKzI1NDM2IGVjZTQzMTVjMTIwNmY3ZDQyYjQ0MWI5ODI3MzVlZGRjM2E4ZjhmNDggcmVsZWFzZTIyLW1haW50CisyNTQzNyA2NTkyNmE5NzBhMTcxYzgxZTMyZDAzODM2MDZkZGVhYzJkNDBiNmRjIHJlbGVhc2UyMi1tYWludAorMjU0MzggNWQxYjIyMDNiNmVjZjdjZDI1NmIzZjc4NjNmOTMwNzg2MjMyNTMyZCByZWxlYXNlMjItbWFpbnQKKzI1NDM5IGIzODNjM2ZmM2IxZWNiZTI2ZjE2MzRjYTMzOGZlNjI5MGM3YmM1NjIgcmVsZWFzZTIyLW1haW50CisyNTQ0MCAyODUyYjRjYjdmNmFiZjA4NjQ1ZDU1NzAwYWIyOTljODRhOTFjNWVmIHJlbGVhc2UyMi1tYWludAorMjU0NDEgYjcwMjExYzFkMjU2NzllNGU0YTNjY2MxMTZhNTgwNzM5NmM2N2FmYiByZWxlYXNlMjItbWFpbnQKKzI1NDQyIGI1Yjc3MzUwYTAwNDQwM2Q3MDRlN2UwNzQwMTI4NDA2YWE3NDQ1ZTggbGVnYWN5LXRydW5rCisyNTQ0MyA4ZDVkYzFhN2VlMTg3YmNhMTAyZTAwZTU3MzhmNjQ1OTFlNjY1YjY4IGxlZ2FjeS10cnVuaworMjU0NDQgNjA3MmZhNDEwZGNjOTRhNGMzYzljMDNjZTllYjNiMWE4ZTY0YmU5MyByZWxlYXNlMjItbWFpbnQKKzI1NDQ1IDU1YzRkMDgzYzMwOWEwZWE3NzJhNzBjNTEwOTQ5ODg4YjQ4ODE2MDAgbGVnYWN5LXRydW5rCisyNTQ0NiBkZmVhYzAzMzQ1NzRmNzllMDZiOTM0YzNmMDk1OGQ0NWQwZWIwMTQ5IHJlbGVhc2UyMi1tYWludAorMjU0NDcgYWQzZDU5NjEyMzQ1YTI0MTI4Yjg2Yzg5OWEyZDNhOWZjZjA4YjAxZSByZWxlYXNlMjItbWFpbnQKKzI1NDQ4IDY4YTZhOWRkNDJmODAxMWNmZmM1MWI2NWY3ZTJkMzA5MmQwYTI2MjkgcmVsZWFzZTIyLW1haW50CisyNTQ0OSBhOWFmODk4Njg2ODlhMDU4ZmYwZmJjM2VlYjI5ZjM1NmEyYThiOGQ5IHJlbGVhc2UyMi1tYWludAorMjU0NTAgNWIyNGE2YWUyZGM0ZjBkOGRmZWViMmFhODQ3Y2UzZmU0ZGU3MzE5YyBsZWdhY3ktdHJ1bmsKKzI1NDUxIDczNmZiNWFlYzliM2I3YzFlNTc3NmZkYTgyODhhMDM5OWY2Y2VkNTIgbGVnYWN5LXRydW5rCisyNTQ1MiA0MDA5YzA4NDAyYjE0NTYwNTUyMGU2NzQ4Y2Q0NTQyYzhlMmUwZDk2IGxlZ2FjeS10cnVuaworMjU0NTMgOTBkM2NlM2ViMTljYjU5YWM5MTY2MjdkMGU5Yjc1Y2U2MjNiYjJkMyBsZWdhY3ktdHJ1bmsKKzI1NDU0IDcwNjUxMzVmOTIwMmYzOGNlODhkYTFhNGNkNzVhMjkwNTBjMzk0N2IgbGVnYWN5LXRydW5rCisyNTQ1NSA3YTNlMDNiNTQxZmZiMTI3ODEyYWVlYzczNDhkMGYyNDU2NDA0MWUzIGxlZ2FjeS10cnVuaworMjU0NTYgY2M4YjdmNzExMjdkODRkMGZhNTM4ZDhiODAxNzM5YzRjZDZjYzcwZCByZWxlYXNlMjItbWFpbnQKKzI1NDU3IDY2Yzc0NWE3YWJiMWZlODIxZWFiNTRjNTI2YWE0NTEzZTdmYmIxNDggbGVnYWN5LXRydW5rCisyNTQ1OCA1OTU1ZTBlMjk3NmQzZTkxNTE0NzZmN2Y2YjFhYmI3ZDM4MzhkYzQzIGxlZ2FjeS10cnVuaworMjU0NTkgOWU1ZmY2NzQ3NDM3ZjlmZTQzOTZhOWExOTI3ZDAyNDNlNjNhY2ZhMiBsZWdhY3ktdHJ1bmsKKzI1NDYwIDJlZmQ0M2NhMDMzZjY0OWRlMTM1MjU3OTFkMWU4ZWI4NjlmN2U5M2QgcmVsZWFzZTIyLW1haW50CisyNTQ2MSA5NjY3MjUwOTU4NTQ2ZGYyY2VkOTliZDk3MTI4OGU5M2EwMGM2NWJkIGxlZ2FjeS10cnVuaworMjU0NjIgZDBhY2IzY2IwMTFkYTU1ZWI3NTYzMTE3NGQ0Zjc5YjBlOWZlNTY3YSBsZWdhY3ktdHJ1bmsKKzI1NDYzIDQyM2JjOWI1MWE3ZTQxMzNjNWRiNDU1ZDlmN2JhNDg4YjQ2NWE1YzQgbGVnYWN5LXRydW5rCisyNTQ2NCBjODFlOGVhMGM0YmE3YzczNjU3OTY0OGJjYjk0MmQ4YThjNTJiY2IzIGxlZ2FjeS10cnVuaworMjU0NjUgZmNmMGMyNDRlMjg3ZTkyZDZjNjAwNmFiZGNkYWIwZGYzYzBhYTQ1OSByZWxlYXNlMjItbWFpbnQKKzI1NDY2IDY0NDJmYmU1ZGQwNDI0MGExNjU3NTBlY2M5MDU1NDlkNGVlZTBkN2QgbGVnYWN5LXRydW5rCisyNTQ2NyBjZDBjZTQ3MGMxNTNjOTQ4YWFhZjhmYzRjNTM5ZDI5MWFjNzY0ZDA5IGxlZ2FjeS10cnVuaworMjU0NjggZDM4NDU4MDUyNDQyZmYxNTJjZGE0OWFiOTg3ZDA3NzFlNDRlYjg2ZiBsZWdhY3ktdHJ1bmsKKzI1NDY5IDkzZWI0YjYxZjY4N2JiZGI0MDY0MjQ0Y2M1ZmQ5MTIwNWFkNzBmODUgbGVnYWN5LXRydW5rCisyNTQ3MCAxM2FjMjdmYTA3MDQ4Mzk0MTBmZDViZWRjZWJiMzQ0N2M3ZWJkNGZhIGxlZ2FjeS10cnVuaworMjU0NzEgMzU0Y2RlN2Y5MGExNTI3YWFmYjY4ZjgxOTczMjhmYmJlMDYxOWI3YiBsZWdhY3ktdHJ1bmsKKzI1NDcyIDU4ZjJjMjk5YjY1NDQzMzhiMDc2NzJlYmI5ODk0MjkxNjlkODg0MmEgbGVnYWN5LXRydW5rCisyNTQ3MyBhZDc5NjllOGY1OGRmYWMzOTUxOTg2NDI5NDViYmNlNjVhMGNkNjBkIGxlZ2FjeS10cnVuaworMjU0NzQgYzQ5NDA4NGRjNmQ4ODkwODMxZDMyZGVjM2ZmYjg5NWViNTA4MWU3OCBsZWdhY3ktdHJ1bmsKKzI1NDc1IDhiMTA0YTg1Yjk5YzdhMjc3Nzc0YTFmZTYwOTJjOTExYTgyYTkwYWIgbGVnYWN5LXRydW5rCisyNTQ3NiA3OWYyOTJkYmFiY2VhMjk1ZGI2YTYxMGM5NDJiNTMxMTU5MWFlZjAyIGxlZ2FjeS10cnVuaworMjU0NzcgYzQ1NGI3NmQ1MWU3YjkwMDcxNWNmZTQyMjlkMGVjNTVjNDgyMDIzYSBsZWdhY3ktdHJ1bmsKKzI1NDc4IGQxMDRiYjUwYTE5NGQzMmFlY2Q1MDE1NWVlZGNiMTNkYWMwNzZiYjMgbGVnYWN5LXRydW5rCisyNTQ3OSAwYzQyMzAyNjllZDNlZmI5OGM5N2U0YjY4NDAyYjBiNDM1OWI1N2Y1IGxlZ2FjeS10cnVuaworMjU0ODAgMTA0Njk2NDg5NmExYTRlMzk2NjQ2NTg1MmRhYzRiNDlmYjlkZjg2NyBsZWdhY3ktdHJ1bmsKKzI1NDgxIGNiYzA4YjE3MmQxZmQ2MTc1YmVkOWI2NDA2MzQ5NTExNjIyNGQ3MzIgbGVnYWN5LXRydW5rCisyNTQ4MiAwODU5ZTc2NDUwOWU2YTk2MjYxNDQyNzU0MjRiM2EyZDEwYzRlZWVjIHJlbGVhc2UyMi1tYWludAorMjU0ODMgYjJhMmNjMGMyYTYzNzMwYjg1MzBjYzM1ZDk3M2E2YWIwZTAwOTE2OSBsZWdhY3ktdHJ1bmsKKzI1NDg0IGQ0NDA2ZmJmY2I0ZTU0ZTliNDE1MzRlOTA5Nzg0NDQ1YzgyZjIyMDggcmVsZWFzZTIyLW1haW50CisyNTQ4NSAwNzRiN2UzZTU0OGQ4ZTczMTExZTlhZDkyZmVhOGEwY2RkYzE2MGI2IGxlZ2FjeS10cnVuaworMjU0ODYgM2EwNmUxOWRmNDZiOTAzYjI5N2FlZTM4MzRhZGYxNGU2ODQ4Y2FiYiBsZWdhY3ktdHJ1bmsKKzI1NDg3IGVkZjA1YzY5YmJmM2JiYmU1MDM1ZmJmYzQ2ODBjMDY5MGQxODViNWEgbGVnYWN5LXRydW5rCisyNTQ4OCA3NGYxNmY3YTYzNjk2Njk3YzYxOWU2ZGUxMmYyMDNhMGJmOTkxN2Y4IGxlZ2FjeS10cnVuaworMjU0ODkgOTg2ZWIxZDRlYmVmNTNhZjQ1NjgzNmEzMGI5OTlkZjU2MzExMDNjZSBsZWdhY3ktdHJ1bmsKKzI1NDkwIDU5OTQ0NDBlNWRkNTJiODZjNTM3ZGEzMGIwNzBhNWJmZTRmZTU5MmIgbGVnYWN5LXRydW5rCisyNTQ5MSAyYmZkMTM3YTk3NmY1OTgzZTRlN2MxNjkxZDI3ZGM5NTMwMTNhOTc4IGxlZ2FjeS10cnVuaworMjU0OTIgZTEzYWE0YzY3MmE5NDliYTg3MGM4ZDhjODY1NzI2NzllZGUzN2U1YiBsZWdhY3ktdHJ1bmsKKzI1NDkzIGU4MWIzMDc2YTZjMzBkOWNhNDI3YzY1ZGI5MjFkYzk2NWE4MmFhZjIgbGVnYWN5LXRydW5rCisyNTQ5NCBjY2E5ODhmM2Y2NGYyMDQ3YTNmNGYzZTE0MmM2YmFkNDMyN2MxOGM3IGxlZ2FjeS10cnVuaworMjU0OTUgOTllNjA4MTdjZTZlY2UyNTMxOTZmMTk0MjM0YWMzZDE4ZjdmNjU1ZSByZWxlYXNlMjItbWFpbnQKKzI1NDk2IDU0OTMyMDU0ZjZhOTQxZTVlYmE4YzhiMjc1YmQ4MzgwMjk2ZWJlY2YgcmVsZWFzZTIyLW1haW50CisyNTQ5NyBlNTk5ZTdiOGFiZjcwMjUzYmRlNWJkNGRlYjRlN2VmYjY0MjVmYTE1IHJlbGVhc2UyMi1tYWludAorMjU0OTggOWZkZGU4Y2NkY2E2NWU0NGI4NjczZjBhMjMzMTRlZDIxOTg5ZjExOCByZWxlYXNlMjItbWFpbnQKKzI1NDk5IDdlMTg4MTQwYjYxODFjMjc5MzA5ZWFlMjM5ODVhNmM5ZGQwNTNkZTEgcmVsZWFzZTIyLW1haW50CisyNTUwMCAxYTUxMTBiNGJkNzJhMmUwNmI5NjIzNjMzOWY1YmUxMDcwZTYyZWU0IHJlbGVhc2UyMi1tYWludAorMjU1MDEgZWQyYTE3YTM3NmQwYzZiZWU2ZTM0YmMxYmIwZGJlMjg4NGNmNjJkZiByZWxlYXNlMjItbWFpbnQKKzI1NTAyIDM0NzcwMzAzMjdhNjBlMzBmYWFkMjhjOGNiNmQwMjIzN2FkMzRmMjEgcmVsZWFzZTIyLW1haW50CisyNTUwMyAxZThiZTc0YTM3NGJiYWRkNjIyNjU2NGUxYmQ2ZjZiZTRiNWM5N2EzIHJlbGVhc2UyMi1tYWludAorMjU1MDQgNGZmOWY4YTc0YzgyN2VmM2VhMmIzMTI1ZGU4ZTVjOWIwZGY1YjkwYyByZWxlYXNlMjItbWFpbnQKKzI1NTA1IGMyNWQ2ZDc4MGIxYjQ3MmQ4YjVhNjM1Mjc1YjM2ZTNlZTlhZjA5MmQgcmVsZWFzZTIyLW1haW50CisyNTUwNiBmZDBlZTBhMDcwNDdkMTdlYzcxOGYxNDI0ODk5ZWRkYjYxNDQ3Y2M1IHJlbGVhc2UyMi1tYWludAorMjU1MDcgOGViNTkxZGQ3NjgyNjhkMGZhYjkxNmJiOWMzNGMwMzQzZWY4MGJjZCByZWxlYXNlMjItbWFpbnQKKzI1NTA4IGJlZjQ0ZDEwOGU1NzYxMzgwZjIwZGIzZDczYjA5ZmRhNzEwNzRiYjcgcmVsZWFzZTIyLW1haW50CisyNTUwOSBkYjA0MDkzOGRjNjYzYjNkNmVlZGQ2MTU1ZTFlZjcyZTUwY2JkOTIzIHJlbGVhc2UyMi1tYWludAorMjU1MTAgMWQxYTAxZDk1NmEyZWYwZTg0OWYwOGQ2OGU2NWMxNjYwOTZiMDg2NiByZWxlYXNlMjItbWFpbnQKKzI1NTExIGVhOWJlMmU1ZDk1NDQ1NDQxYmY3M2YwMjJkMWM1MWRmY2EzZGUzZGQgbGVnYWN5LXRydW5rCisyNTUxMiAxZTYwYjFlMTgxNDVkZGUyODJjYTk0Y2IxMmI4OTE5YmQxZjExYmY5IHJlbGVhc2UyMi1tYWludAorMjU1MTMgZTRkN2U1MTI5ZTRjMTY3ZDBjYmY5YTI2ZDlmNGQ4MTJjZjk4ZmUxNSBsZWdhY3ktdHJ1bmsKKzI1NTE0IDRiMzQ1OTUxYTVjNTFjZmRmZDUzNWE3OTZkNDIyYzFjN2IxNjFmYTEgbGVnYWN5LXRydW5rCisyNTUxNSBhNTM3MzBjZDI5YzE0NzRhNWQ3Y2M4YmUzYzg5MjliN2ZhNzg2ZDkxIHJlbGVhc2UyMi1tYWludAorMjU1MTYgNTEzMTAzMjQ5NDYyZDdjNWIzZjdiYTBiMGI4ZmI0MjhkZGZkODllNiBsZWdhY3ktdHJ1bmsKKzI1NTE3IGU4MWE0ZTk5ZWNmYTNjNmIxMjEzNWIzOWFjNWRmYmNkNTAwNWM4NjcgbGVnYWN5LXRydW5rCisyNTUxOCAzNDVkZWYzN2IwZDdhNTg3ZTc1MGE0NmI2ZmUwMzgyZjllNjYzZWIxIGxlZ2FjeS10cnVuaworMjU1MTkgZTMwMTYyYjFiMzA0NjhkYmZjNjE5NGY2NzcyZjA1ZmNiM2U4MTE1NCByZWxlYXNlMjItbWFpbnQKKzI1NTIwIDJiM2Y0MzgwNjczZjgxNjJmZjEyOGQyY2NiODkyYjFiZmIwMGYzOTggcmVsZWFzZTIyLW1haW50CisyNTUyMSBiMWQ1NzNhMmE3NzQ1YjM3OTNmZGFkZTQ2ODQzZmNhODczNDdhNGExIHJlbGVhc2UyMi1tYWludAorMjU1MjIgNzE5MDJlMWNmYmVmMzBiMTc2YjhiNmU4OWZkOWNlYTQ4ZGNiNDVkMSBsZWdhY3ktdHJ1bmsKKzI1NTIzIGQ2OTdkODhkMjViNDBjYWVhY2M1MGE0MWY3OThkZjEwYjM4YmRkZjMgbGVnYWN5LXRydW5rCisyNTUyNCBhZjUyYmY4ZTJiODlmNDM1NWEwYWFkMjYxZTQxYTk2Njg2YmZlZThkIHJlbGVhc2UyMi1tYWludAorMjU1MjUgODFkZmEyZGI0YzYxYjMwZWNiODgzZWY1Zjg0YTg3NTExNWE0MjFjYiByZWxlYXNlMjItbWFpbnQKKzI1NTI2IDQyODYyMTY5NTQxZmI5ZDUwMzBhNTlhMDU1ZjAwODA3MWU2YTIwMjMgcmVsZWFzZTIyLW1haW50CisyNTUyNyBhZjYxMjJkZjI4ZTA3ZTQyY2E1Njk4MDg1ZjIyYTU1NGZhOGIyNmM2IHJlbGVhc2UyMi1tYWludAorMjU1MjggMjJjNjY1ODdjNDUyZTI0OTk4Y2MyMzlmYzFkN2VmZjkzOTVhMWQwMyByZWxlYXNlMjItbWFpbnQKKzI1NTI5IDgzNzk1MWVjZGNlOTU3NTRjOTk5ZTg1NWQxZGE5ZjZmZDVlZTRmZWIgcmVsZWFzZTIyLW1haW50CisyNTUzMCA4NTc5ZDNkMzAxZDQ4ZDQ4NTBhZWQ2NDQ0ZDA2MzJkZTFiNGNlYTc0IGxlZ2FjeS10cnVuaworMjU1MzEgNjg4MzFhYzU0OTViYjAxM2ZkMDNmODkwNDIwZjRlODJkNGQwMDNmOSByZWxlYXNlMjItbWFpbnQKKzI1NTMyIDRkNWJlY2M2OTAyYmNjZjNmNmNiZjRjNzgzNjkwMDA0MGJhOWEzZWUgbGVnYWN5LXRydW5rCisyNTUzMyAzMmExYjQ4NGEyZjNhNTJhOGM0ZThlMDlmM2Y3N2EzYWNhNmFjNWVhIGxlZ2FjeS10cnVuaworMjU1MzQgMTAzYzRjNGNjY2ZiN2I3OTRiZTM1MzdmMGU5Y2M1YWUyZDAyMTczMiByZWxlYXNlMjItbWFpbnQKKzI1NTM1IGNhOGJkOTk3ZTQxOWQ0MTg5NjljODZiOTExZmJjNjMyYzNjMDg0ZDUgcmVsZWFzZTIxLW1haW50CisyNTUzNiBjNWM5ZTM2YzM5MDk5ZjkzOTM3MWU4NDlkNzhkMWQyOTVlODJhMjJlIGxlZ2FjeS10cnVuaworMjU1MzcgMGUzZTY5ZTAxZWNkNjQ3ZDliZjM1N2IwNWNiMmI4OWYxNjY1Yzc0ZCBsZWdhY3ktdHJ1bmsKKzI1NTM4IGNkYTMwNmIyMzIxZjZkNjJiNTViNjQzNGFlMTFiZDljZTkyMjZmNjUgbGVnYWN5LXRydW5rCisyNTUzOSBlMjE5NmJhMzQzMzBmY2ZkOWE2ODY1MjdhMjhjNzJkZWYxMTI4ZGI1IGxlZ2FjeS10cnVuaworMjU1NDAgZWUzM2JiYWYzMzgxOTM0ZjZiN2ZhYjc4MTJhZGM2N2E5NThkOTNkYiBsZWdhY3ktdHJ1bmsKKzI1NTQxIDZmYTU2YzQzYTFiYWU0OGM4YTAxOWM5NWE4ZjAxOGZhNzgwMTU2YzUgbGVnYWN5LXRydW5rCisyNTU0MiBkYWYwNGRiMWE2OTk4ZDc5MmMwNDVkNmJlOWMwZjlhYTc3YWIyNjZmIHJlbGVhc2UyMi1tYWludAorMjU1NDMgMjY2MzM0YTVjNGNhMjZjNjVlNjMyM2Y5NmRjZGEyNmUyMTQzM2JhZSByZWxlYXNlMjItbWFpbnQKKzI1NTQ0IGQyYTc2ZjdkZDY1MTA2NmQ2NzdiZDRlNTAwM2M1MjJmZDFlMDgzN2IgcmVsZWFzZTIyLW1haW50CisyNTU0NSBmOGE5ZGI2N2ZhNWI0NWU5ZGViYmIxNTNiNzAyNzMzNjEzNjczZTg3IHJlbGVhc2UyMi1tYWludAorMjU1NDYgNTM0ZTc5MDU5YmUxMDA4NzY4NGRmOTA2NjAxZWU4MjU4YjY0NjlmMiBsZWdhY3ktdHJ1bmsKKzI1NTQ3IDgxYThkYjE1ZmI5ODhiZWE0MDkzNGRlZDRmYWUyMTNmOTMxNzk0ZWQgcmVsZWFzZTIyLW1haW50CisyNTU0OCBhYzExMzFmNzNkMWZkNzA5ZGI3Njg4M2FmOTM0MzZiYThlMTVmNGY5IGxlZ2FjeS10cnVuaworMjU1NDkgYzYyODllYzhkYTBhNzljYzE4ZGVkZWNkOWQ4N2ViNmNkZTc4Zjg1NiBsZWdhY3ktdHJ1bmsKKzI1NTUwIDJjNWY4MDM3MTI2MWVkZmE5ZGZmM2EyNGViYWNkZDkzMzAxMjBkZmEgbGVnYWN5LXRydW5rCisyNTU1MSBjNmE2NjBmODlmZmU4NTY4ZWZkOWQwYjIxOGRmNTgwMDQ4NDFmODg3IGxlZ2FjeS10cnVuaworMjU1NTIgMWNhMmViNjUwZTEzNzdiNTVmN2M5YTc0MGY0MjBhOWM1YTUwMjBkNiBsZWdhY3ktdHJ1bmsKKzI1NTUzIDk1ZTg2NDMwOTgyYmU3ZDkyMDA2N2YyMzlkMGMyMWNlMGY1Nzk4NzEgbGVnYWN5LXRydW5rCisyNTU1NCBjYjRlZGQxMDg3N2Q5MTdjOGVkZjdhZjM0N2RkNTRlYzVmNzU0ZTFjIGxlZ2FjeS10cnVuaworMjU1NTUgMDQ0ZjllNzEzMjBmNjJjZWM2MDIyZDM1ZjljM2I5MGU2YTAzNTIwYSBsZWdhY3ktdHJ1bmsKKzI1NTU2IDk4YTNmYTVmNjg3Y2FhZWZjMTU5ZmQxZTU2YTYxYmQ5ZDkwMmU0ZDEgbGVnYWN5LXRydW5rCisyNTU1NyBmYzZkYzJlYTI1Y2Y3N2I4YzA3MDNmNjYyMWI4ODZhNjA0MDFiMmRlIGxlZ2FjeS10cnVuaworMjU1NTggMjRiYTY5M2U5YzczOWU2NzZlZjIyNDUwMDgzYTkxZGI5NjAxZGE4ZiBsZWdhY3ktdHJ1bmsKKzI1NTU5IDAxZDQ1ODI2OTc1MDJkNjUwMWFiYmU3NjA5NDU4YTFmMTk4MDM4MjcgbGVnYWN5LXRydW5rCisyNTU2MCBkN2YzZjgzYjk2NTg4YzJjMGU1MGZkNWI3MmE0YTlkOGM0ODQ5ZjIzIGxlZ2FjeS10cnVuaworMjU1NjEgMjZlM2I1NjNlMjYxMzJkYWI4YjE0ZmU3NDkxYzE4NmVjZTIxYzIwOCByZWxlYXNlMjItbWFpbnQKKzI1NTYyIDRlYmFjYWVlMzAwOWUyNjdkZGZkYjU5ZTcwZTBiMjE1NWJmNjdlOTkgcmVsZWFzZTIxLW1haW50CisyNTU2MyBkYWIwNWFiMDM0N2I5M2I3MTdlMDYwMmI2YTkyOTE4NTFhYWEyY2NiIGxlZ2FjeS10cnVuaworMjU1NjQgYWQ4MWY4ZmI0ZWU0NzUxNDM4YTc1MTJlZDBjZjgzNjBiYTM1OGIwMiBsZWdhY3ktdHJ1bmsKKzI1NTY1IDVmMmMwZjZmMGFmNzM0OWM3NTFkMGQ4MzUyMTBkYTYzZWQ2Zjg2MjcgbGVnYWN5LXRydW5rCisyNTU2NiA0MDlhYzBmNjg5OGY0MWIyZDcyNDZhNzA0OGExYTY2Nzk5YmM3MzIwIGxlZ2FjeS10cnVuaworMjU1NjcgOTI4YzEyODJlNWUyYjVjZmM4YmY3YTMzZDZjYTQ4ZjcxMmI0MjU5OSBsZWdhY3ktdHJ1bmsKKzI1NTY4IGY0NDg3MzUwYzUzNzg3YThmNGJjNDllMjkyYWFkYTNjM2QyNDIzMTAgbGVnYWN5LXRydW5rCisyNTU2OSBiODk4YzBmZWI3NTRlNDg5ZmM0MzUzZmQ5ZmEyOWVmYzZlNzE1ZWM1IGxlZ2FjeS10cnVuaworMjU1NzAgZjBhZTM3NjI1MTg5NWM4MGJiMTljYjA5ZDYzM2FlNjU5ZjQ0MWRkMiBsZWdhY3ktdHJ1bmsKKzI1NTcxIDdmZWYzNTZkYWQ3NWY5MWJiN2MyNDZiNjM1ZmZlYjYzZjg3NzQ5ODcgbGVnYWN5LXRydW5rCisyNTU3MiAwYjA4ZWVmYjZmYzA3N2VkZGU2ZDc1NzhlMmVkZWU0NTI3Zjc1MDljIGxlZ2FjeS10cnVuaworMjU1NzMgMGRjMTBkNTU3MDYyMzhkNDc3ZjljYTFmZWE4YzYzZTY5ZmE5ZDk5YSBsZWdhY3ktdHJ1bmsKKzI1NTc0IDIzOTI2OWM5NjUxNDQzZGQyZGFiYjI1OGIwNjgwNjU5MzRhYjFkNmMgcmVsZWFzZTIyLW1haW50CisyNTU3NSAyMzYwNmI0OWFmNzQzMDQ2NDNhOTA3YWUwNmQ1MGU1NTdlOTgzMjliIHJlbGVhc2UyMi1tYWludAorMjU1NzYgMjZiZWJmMjA4OTFlNzU5YmIyMGEwNDFkYTNmYzRjOWNjY2RjNzFjNSBsZWdhY3ktdHJ1bmsKKzI1NTc3IGUyNGJhMDRkMDFiMDhlNzFjZmU2NmYzYTJhOWM4M2E2NWEzNDU5OGYgbGVnYWN5LXRydW5rCisyNTU3OCA5MDc4MzJlZTcxNzM3MTM5NDNjMDMyYzhjOGIyMGM4Nzk0OTYyY2Q2IGxlZ2FjeS10cnVuaworMjU1NzkgNjRjNzMxZDE4MGU5MWUxZGQyNjc4NDE5OWUyNmZkMDZiN2Q4OGM0YyBsZWdhY3ktdHJ1bmsKKzI1NTgwIGRhNTE4ZmM3ODA2Njc0MzI2ODQ3YzZmOTg4NTgzNDZjYmI5NzkzYzUgbGVnYWN5LXRydW5rCisyNTU4MSA1NDQwZTRiMTdhZmZiMmVlM2EyYTIzNzg0YTI4ZDA0ZmY2ZTM2NTZiIHJlbGVhc2UyMi1tYWludAorMjU1ODIgNzhiZGZiYjZlNTllMTM1ZGU5YmExMWI3NWFhMmFjMDJiNjQwMjg3YiByZWxlYXNlMjItbWFpbnQKKzI1NTgzIDgxMjU1YjViZTIxOWZhMzYxZjM5N2U1NWIwZGNlMDRjNzBhZjM5NTkgcmVsZWFzZTIyLW1haW50CisyNTU4NCBkNmQxMmUyMWQ0NGY1MjcwYjZkNWEyOTlhZDI4OGY5N2ZmOWUwMjdiIHJlbGVhc2UyMi1tYWludAorMjU1ODUgZTYxZDI5ODJmYzEzNWQ0MTVjN2UzN2Q4NGVhYjE0Mzc2ZGJiNzBmZSByZWxlYXNlMjItbWFpbnQKKzI1NTg2IDAxYTU1YzNkNTA1YzBkN2FhZDc5NWI3ODg1ZDhjMTUyMGUxMzI3MDYgcmVsZWFzZTIyLW1haW50CisyNTU4NyBhNzYyZWRiMDQ2MWE3YmVjNDcwYTBjY2FhYTY3OTQwODY3YWExNTU1IHJlbGVhc2UyMi1tYWludAorMjU1ODggNjdhNWUyNWRjODhiYzc0ZWIxYzkwZjEwZmRlMDFjOGQ4ZDAyZGMxYSByZWxlYXNlMjItbWFpbnQKKzI1NTg5IDdmNGQxNWQ4NzhjY2Q2MDUyYzEyY2YwODExZWU1YTcyODYxMjVhNTQgcmVsZWFzZTIyLW1haW50CisyNTU5MCAyZjQ4YWU1YzhhOTQ3MGQxOWQyNGJjYmFjMDFjYjQ2ZjRhODA1MTVmIHJlbGVhc2UyMi1tYWludAorMjU1OTEgNGI2ZWRhN2QwYzhmNTRjZWNkMWE4ZDgwZGEzOTYwZDM2MjZmNzQyOCByZWxlYXNlMjItbWFpbnQKKzI1NTkyIDk5NjhkOGRkZGQ1M2RkNjI5NmNjYzFlNzAxYzk1ZDI2MzRjYWVhN2EgcmVsZWFzZTIyLW1haW50CisyNTU5MyBmYzQwNTZiOWNmMThjMTcxNjhhNzZlMDk1ZGUzNjAzOGFhZDEyZjg4IHJlbGVhc2UyMi1tYWludAorMjU1OTQgNDUyY2MwZjNhZTNjYThmNzlmM2ExMDU3MTg3NGY3MDZkY2IwOWQ1MSByZWxlYXNlMjItbWFpbnQKKzI1NTk1IDY0MWYyNjNmNGY0NGJiOGU0OTRkZWRiMDQwODQ4ZDRhMDIyOGZlZTkgcmVsZWFzZTIyLW1haW50CisyNTU5NiAxODJmMDE3M2E4ZWVmNWJjMTU1MmE4ODY2MDk0N2U1NzdkM2ZiNDQ0IGxlZ2FjeS10cnVuaworMjU1OTcgMjJmYzhiODIyZDQwZDJiMDYxMWUxMzkwZTc4NDgyMmUwYjkwYjA5OCBsZWdhY3ktdHJ1bmsKKzI1NTk4IDI5ODg3OWE5ZjlmNGJiNDViZjAwZmQ1Yjg3YjUzYWRlMjdhY2NjODMgbGVnYWN5LXRydW5rCisyNTU5OSA1MGM2NjY2ZmM0NTY3MDM5YTY4MDhmMzgwMDRjNmYzYjcwNzJhM2U0IGxlZ2FjeS10cnVuaworMjU2MDAgNDI3ZTMzMWI0MWEyZTFjZTQyOTRjMmRjN2ZlYzc3Mzg4NDI5MzIxZSByZWxlYXNlMjItbWFpbnQKKzI1NjAxIGFlNTc4YzhjNmNlZDM4MDc4NjU0Y2UxZWIzMzBlMzJkZGZiNzdmMWUgbGVnYWN5LXRydW5rCisyNTYwMiBlNTRmNWM1MGVmMDliOWRhZWFmMTZlZmQzY2ZiMGMwYjhjOTZiNmRjIGxlZ2FjeS10cnVuaworMjU2MDMgMjM2YWU1M2Q2NDY2MjI0NjMxMTdiZTk3NTA0ZTdkN2FjNjA0MzFiMSBsZWdhY3ktdHJ1bmsKKzI1NjA0IDc1ODRiNmYxYWZkZTQyNGRkNDA1MmU3ZTZhMTY1ZTBmYTdmY2YxY2EgbGVnYWN5LXRydW5rCisyNTYwNSAxNjNkZTcxZjE5NDI5MzhhYzJhNWNmOTFjOTAwZDE2ZWJlOWI0NDFiIGxlZ2FjeS10cnVuaworMjU2MDYgNmEyNzllMTcyZDIyM2U2ZmYyOWRlMWIwMzI0ODkwZTlmZmMyOWExMSByZWxlYXNlMjItbWFpbnQKKzI1NjA3IDcyZmRhNjRiMmEyZThjZGI0Y2MzODBjMzdhY2YyNGE4YmFjN2M3MDYgbGVnYWN5LXRydW5rCisyNTYwOCBlOGU0NjVlNmQ0NWY5ZjA5MzFhMTMzNjdiYTFhZGM4YjQ2Nzk5YmUzIGxlZ2FjeS10cnVuaworMjU2MDkgMjdhMGZiMDE5NTk5MTI0YmEzNjE5NTQ2NTYzNzRlYzE0OTE4ZDRkMCBsZWdhY3ktdHJ1bmsKKzI1NjEwIGFiY2VkNTU4MWMxODUwYTRhYzIzMTFmOTk4YjcyMzViNDhjNGM4MjQgbGVnYWN5LXRydW5rCisyNTYxMSAxZTdjYzhlNGJhYWI5NWE0YWI2NzZjMmQwOTBiNGJjZTRlNjkwODhmIHJlbGVhc2UyMi1tYWludAorMjU2MTIgMjcyZjk2NTM4NWM3MTNjNzhjMzBmYThmZDI1ZGY5ZWExNWNjYzFmMyByZWxlYXNlMjEtbWFpbnQKKzI1NjEzIGVkYWJhZDAyNWVmMWE1YjVlNTE3MmE1OTMwNTFhNzAwZmZhOTlkYjUgbGVnYWN5LXRydW5rCisyNTYxNCA5ZjExOTEzMmZmYmM0NjNlOTc5MGRhNWY5YjRmZTQ0NWNmNTJiZDM1IHJlbGVhc2UyMS1tYWludAorMjU2MTQgNzBlZGQyOTJjNzU3YWY2OGNhMjI1OTBjZWU4YzdkMTMxOWM5OWVlNCByZWxlYXNlMjItbWFpbnQKKzI1NjE1IDM3YjY5ODE1YWYyMmZkNTZmNjNkZmY0Zjg0YjU4MjNhZWNmODkzNTYgbGVnYWN5LXRydW5rCisyNTYxNiA5M2RiNzIzZDVlNDc4OTEyMGExODMyMjc0MWIzZmMxOTFlNjAyOWJkIGxlZ2FjeS10cnVuaworMjU2MTcgMDkzOTQyYmFlMWE2MzlhZjAzODExYTU0OGI1MGE1YTUwYzkxYjc2YiByZWxlYXNlMjItbWFpbnQKKzI1NjE4IDU0YjYzNjE2MGFjZGZlNjQ2ZDUyMmFjYWJmMmExMGM4ZmNiNTNmOGIgbGVnYWN5LXRydW5rCisyNTYxOSBhYTNiZjUyNWY0ODJjYjk4ZDU3NzI3YTQwZDUyZTA0MzEyYTE5NGNkIGxlZ2FjeS10cnVuaworMjU2MjAgMjE2Y2NkYTI4NGQ4NTg1ZTViZmRjMjZlNWI0NjIzMTczODUzN2IzNiBsZWdhY3ktdHJ1bmsKKzI1NjIxIDA3NTA1YTQ1MTAxNzZiZjM4MDRiZDMzMWU4NGNhODdjOTY5ZjE5YzAgbGVnYWN5LXRydW5rCisyNTYyMiBkMzA3OTdlNWNjMWFiODU1MzU5Mzg5NzE0MmUxMjBkMzc3ZGRjMDNjIHJlbGVhc2UyMi1tYWludAorMjU2MjMgNmMzNGNkM2E5OGE5M2UwMjhmZWU3ZWQ5ZDJjYjI1YWRkNjNkOTIzOSByZWxlYXNlMjEtbWFpbnQKKzI1NjI0IGFmZjIxNDUzYmVmZmYxYTMzMWEyNWY4NjA1ODE4M2NiOGEwMWY3NzEgbGVnYWN5LXRydW5rCisyNTYyNSAxN2U4YTNjOTMxMGNjMzkwMmY0YzdhNmU4ZWQ1MGJhNjYyYTllYjhiIGxlZ2FjeS10cnVuaworMjU2MjYgOGU5OWQ1NjgxOTg0NmVmNDA4NWY1Mzg1OGNmMjRkZDFmODc0ZDI3NSByZWxlYXNlMjItbWFpbnQKKzI1NjI3IDE1MGEyYTljNTViODdjYWVmMjQ3MzE2NjhlYWRkNWE3YTk2ZTI3YWIgbGVnYWN5LXRydW5rCisyNTYyOCA2NDg1ZDFiYTczNWNjNWVjNWE2ODMwMDM0ZjZlOWU4ZjE4NDhjNjNlIHJlbGVhc2UyMi1tYWludAorMjU2MjkgZjlhNWE4ZmMzMTc3OTZlMDFjNjBjOGQzM2YzZmJiMzZhZjM2MDM1NSByZWxlYXNlMjEtbWFpbnQKKzI1NjMwIDJhOGJmM2QwYmQ4NjVlYjcwYzE5ZTUyYzg2YTEyOTRhNmQzNmE3MTcgcmVsZWFzZTIxLW1haW50CisyNTYzMSAxMDAwN2FhNzhhNWU5NTQ2MjhkOTU3MmIzZTAwZjlmYmFlMmQzNWU5IGxlZ2FjeS10cnVuaworMjU2MzIgNjlhZDJhMWFkNjg5ZTE0NjBmMDE5ZTdlNzQwM2RlNDc1NTgwNzI1MSByZWxlYXNlMjItbWFpbnQKKzI1NjMzIDBiYjE3ZDNiNTE5N2QxNmIwMmQ2YzhjMTljMDU4NTk2NDIxZTQwYmUgcmVsZWFzZTIyLW1haW50CisyNTYzNCAyODM4MTY1MjllNzI1MGZmZWM1NDQyNzg5YTJiNjQzNjQ0NzBmZTk3IHJlbGVhc2UyMi1tYWludAorMjU2MzUgNzYzZDVhZTg5ZTllZDg3YzA0ZDA5YWZkMTgzZTJmZmI2MGI1MmNlYyBsZWdhY3ktdHJ1bmsKKzI1NjM2IDE3Y2EyOTA3ZDEzNTlkMTMyMmU4OTNlMDM3MjVkYjZlYWVmZTAyOTEgbGVnYWN5LXRydW5rCisyNTYzNyAzYzY4NWMwMzc3OTRmYTgyZGQ4MTg0ZjMwYWRjY2M4NzdjOGZkMzg5IHJlbGVhc2UyMi1tYWludAorMjU2MzggZjJkYTI1OGFhYzIwOTY4NTY2YmU0YTY0OGI2NzU2NTRmNzQ2MGZhYSByZWxlYXNlMjItbWFpbnQKKzI1NjM5IDk4OTE5NThmYzRiMjk2YjcxMTQyY2ZkYTMyMWQ4NmRhZmUwZTBjMTcgcmVsZWFzZTIyLW1haW50CisyNTY0MCBhYTQ0ZDM3OTliNDdiYmIzNTJhYzZjMTJlOGNjODE5MzljZTFjNWE3IHJlbGVhc2UyMi1tYWludAorMjU2NDEgNmQ0ZTA1ZDI1NzU5NmY0ZTYzNThlMTA2YjllMDNhYmI1MmYxNDRiMSBsZWdhY3ktdHJ1bmsKKzI1NjQyIDIyZTBkYWRhNTZkN2I4NjRiYjNlZDUyNDhmYTdjNWY2MDdiYTY5MTQgcmVsZWFzZTIyLW1haW50CisyNTY0MyA2YTM0OGEzOTAwY2RmODM2MDUwMGJmMjU1NGZlNTMyODI0M2MxYzZiIGxlZ2FjeS10cnVuaworMjU2NDQgZjAzNDZkOTMwNzcwMTZlMmM2YTEzMTdiMDIyYmU4NjA3ZWNhOGIzOCBsZWdhY3ktdHJ1bmsKKzI1NjQ1IDVhZGU3ZTgyMDRlNTIwMmY2MTE1MTQ3NWVlYTFkOTM0YzQ3ZTNiZmUgbGVnYWN5LXRydW5rCisyNTY0NiAxNjBlMzM1ZmJlNmZkZDJiNDFkZWQxNjM2MjljNWYzYWUzNjA2OTczIGxlZ2FjeS10cnVuaworMjU2NDcgNTZmNGRmY2NhOWQ4MWZjMTUyYjUyNGRmODlhODc2ODVmOWZlMTQ2MyBsZWdhY3ktdHJ1bmsKKzI1NjQ4IGNiNmM4NWQ4MzkxZjVlZDUxNzI1MjdjNGM4MDIwYzkyYjIwODU1ODEgcmVsZWFzZTIyLW1haW50CisyNTY0OSBlNGU1NGZjNWZiM2QzOTUyODhhYTFkMDRkNjY2ZDBmZDhmZDJmYjM4IGxlZ2FjeS10cnVuaworMjU2NTAgOTA3OGYyOTc2YmNjYTNjMDQ0ZTg4ZGRhNWY2NjNhMTRlMjQzNGUyNSBsZWdhY3ktdHJ1bmsKKzI1NjUxIDE4NzM4MzNjNjE2ZGY0MzNiMTdkYWMxZjk3NmIzMzk5YjI3OGViM2IgbGVnYWN5LXRydW5rCisyNTY1MiBhNzk1ODk3MWRlMWM3MmRjM2NlZWE4YzQ5NGY2MTgzNzE2NDdlZTk5IGxlZ2FjeS10cnVuaworMjU2NTMgMTI1NzdhZTk1OTU2MjMyNjZjYzk5ZmVlODhjMjgyMGQ0NTAwMTgyOSBsZWdhY3ktdHJ1bmsKKzI1NjU0IDQ5ZWRiZWU5ZGFlMjIyNDhjNWQzMWM4NjQ3YTMyMDllMjc0NjdmZTQgbGVnYWN5LXRydW5rCisyNTY1NSAyNGFmODQyMDMwYTBiNDc4Nzg2M2E0OTlmYWNiOThmZDViNGMwNmU2IHJlbGVhc2UyMi1tYWludAorMjU2NTYgYzZjMWE1ZmJiNmMxZjNlZGVlZjlmNzdjZGY2OWFhNTMwYjQyYmQxYSByZWxlYXNlMjItbWFpbnQKKzI1NjU3IDNjNzRhMWIxMjg3YWZhY2NlMmI4N2E3YTg5MDY4MzE4ODBkZjFhNzkgcmVsZWFzZTIyLW1haW50CisyNTY1OCA5YTA5MWQ3MjEzNmFjMDVmMTVlODQ3NjJiNjgxOTc3NzdhZjdkNzE5IHJlbGVhc2UyMi1tYWludAorMjU2NTkgNTQzYjJhNDg0NjdiNjRjZGJlMzY0NjY5MjUwMjE4OGFjMjkyZTc0NSByZWxlYXNlMjItbWFpbnQKKzI1NjYwIDYzM2E5NmE2NTAwOTE0OGVjZTkzZWM4YWY4NDMzOTcyY2Y1ZjA2YTcgcmVsZWFzZTIyLW1haW50CisyNTY2MSA0MWI1MTUzZDcwNWU1ZjdjMGE2ODFiZjU1MWViMjMwYzM2MThjMWIxIHJlbGVhc2UyMi1tYWludAorMjU2NjIgNTRiY2M1ZWMzYTUxMjU1NzJkMDkwMTViYTM5MDUzMjJkZTQxYWMzNyByZWxlYXNlMjItbWFpbnQKKzI1NjYzIGEzNDYwY2IyM2YxOTQ1MTU0ODdlZDI4OTQyMmMyNTliZjBiNTkxNGMgcmVsZWFzZTIyLW1haW50CisyNTY2NCBhMGNjNTI3MzVlNmU0NjhkOTRmZjIwZWY2NDQ2MTk0Y2MyNzkzYWY1IGxlZ2FjeS10cnVuaworMjU2NjUgYzQwMzYzMzM1NTg1NTE5NjY2OGFmNTczNzA2ZGIyY2ZmZDhhYjdhOCBsZWdhY3ktdHJ1bmsKKzI1NjY2IDljNDM1YjFiNTlhNTZjMDQ0YWZjOWYwN2MwMjQ2OWE3ZWI0MzY3YWQgbGVnYWN5LXRydW5rCisyNTY2NyBlYTNiMTg3NzQ2ZjdkNTM5ZTdjMjIzODMxM2I4NjE1ODdlOWZhNGJiIGxlZ2FjeS10cnVuaworMjU2NjggMDg5YWI1YmE5NDY2YjQ2ZWRhNjAzMjM5MmUyNjYxZDlhNGNmZWVkZCBsZWdhY3ktdHJ1bmsKKzI1NjY5IDk5ZTFmZWMyNmI0MDVhYmI0NGI2MjEwZGEzZGNiMDUxYzBhZWU0OTIgbGVnYWN5LXRydW5rCisyNTY3MCBiNTVkN2JjMDVlYzg4Njc2YjJmMTA4ZjQ4OTY1ZTMzNjA0YjI3MjIzIHJlbGVhc2UyMi1tYWludAorMjU2NzEgMTM0Y2I0MTg2OTQ2NmFiY2Y0MmY4MDhlYjViYTFhZGM3ZGZlMGY0YyBsZWdhY3ktdHJ1bmsKKzI1NjcyIDA0OTczOWNhMGMxMzVkMWE1MWMxZTUxMjkyODliYTk5NWRmNDkyNmIgcmVsZWFzZTIyLW1haW50CisyNTY3MyAzNWM5YmU2OTM4ODhlMDBiZGFmODUwYWEwZmQ4YjBkOTg1NjA5N2FmIGxlZ2FjeS10cnVuaworMjU2NzQgMTlkMWQzNTAyMGJkNDM3ZDNiZGI0NjEyNDBjZWYwZDIwNmE0ZDM4YSBsZWdhY3ktdHJ1bmsKKzI1Njc1IDNmNmRkZWFjNDg1NmI1Mjg4ZmUwNzAzZjJjNTRmMWEwOTdkN2RiYmIgcmVsZWFzZTIyLW1haW50CisyNTY3NiBhNDE1Y2EzZTg5MDM4NjAxNGI3ODAxMmU1ZTJlODRiODZjZjllNjdlIHJlbGVhc2UyMi1tYWludAorMjU2NzcgMDQwOGVjZDg0YWEyYTI2MDQ5ZjJlOTFkZDRmNmJlNjZmZTVjMzI1MyBsZWdhY3ktdHJ1bmsKKzI1Njc4IGNjNzg4YjNiMjFiNjIyNGIzNmQ3Njk5NWIzOGVjZWRkZmRmZjcyNDQgcmVsZWFzZTIyLW1haW50CisyNTY3OSBkYzgwY2UxMWZhZTM5MDlhMzE0MTc1NTgwYjRiMzI0YTBiNGEzMWY4IGxlZ2FjeS10cnVuaworMjU2ODAgNWY0ZmZiZmU2YmU2ODFiNWY5NjBiNmIxOWY0MzkwZmYwM2FiYTZiOSBsZWdhY3ktdHJ1bmsKKzI1NjgxIGFiNzRmZjgwZjlkMGFjNTNiMjMyMmNmNWZiZTYzODk2OWU1NDBlNmUgbGVnYWN5LXRydW5rCisyNTY4MiBkYzYwNTRlNWI2NDJjZDNjM2YxZjYxN2Q3ZDQzMjkwZTI0YzJkMGYwIHJlbGVhc2UyMi1tYWludAorMjU2ODMgMDk2Yjc1MTIwZTcyYjQ0ZmU0YTMyZGUyOTNjZjhjYjIwMGVhNmIyMSByZWxlYXNlMjItbWFpbnQKKzI1Njg0IDVhNzc4YWUxODUxMjM4OTFjZWVhYTBkNjE5YWM0YTJmYTVmODdjYjMgbGVnYWN5LXRydW5rCisyNTY4NSBhYzk3NmQzNjcwOGQzZDc4MWMwZjdhNjA2NjhjNzE0ZWY0ODA2YmJiIHJlbGVhc2UyMS1tYWludAorMjU2ODYgMzFkOWQxMWEyOTRjYTk3ZDViY2ZiOTFjZmY5ZWM2MGIyNDNjMWRkZCByZWxlYXNlMjItbWFpbnQKKzI1Njg3IGRmZjBhNDRiMjM2OGU0MTRhNDQ1NjhlYWY3MmExMzVmZjk2MGI0YjIgbGVnYWN5LXRydW5rCisyNTY4OCAxNmYwZGVmYTQ1YzIwZGYyNjA0MTYwYWYzODEzY2MyOTEwMjJhYTY5IHJlbGVhc2UyMi1tYWludAorMjU2ODkgMzk5MjU0NGRjMTQ1ZmJlYmZiMTM3MzUwMjg2NmNjNDk0ODgwOWM2YiByZWxlYXNlMjEtbWFpbnQKKzI1NjkwIDZkMDhhMjk1NWJiNjI1MTg3Mjc5MjFmMTQwODgxMmVlNzVkODMwNzAgbGVnYWN5LXRydW5rCisyNTY5MSBhNjE5M2E4N2Y1MDBlMjc3N2IzZjE5NjgzOGU2MDJiNmJmN2ZiODU0IHJlbGVhc2UyMi1tYWludAorMjU2OTIgMWE3NTBmYjkzYjE2OTM2MWNiYjBlZjhkMDQ2MWY1MDYwZjJlOTZmZSByZWxlYXNlMjItbWFpbnQKKzI1NjkzIGYyZWI5NWZiNDUyOWUyNzY5NTZmMDZhZGVhYTdiMzIyYjE1NDA4NWYgcmVsZWFzZTIyLW1haW50CisyNTY5NCAyOGUzNzkwNWJlZTQ1ODI5MzQ4NTk3M2JiMGMxNzRjZDI4OThlMzhkIHJlbGVhc2UyMi1tYWludAorMjU2OTUgNzk4NTZhZDc0OWFiN2RjNzM5ODZhOTMxMjMyMDZiNTFjYzc1ZDNmMiByZWxlYXNlMjItbWFpbnQKKzI1Njk2IGRlYmIwMDVmMTY3M2EwMzkyZjczZDA3ODk5MGViODAxYTFkMjEzNjAgcmVsZWFzZTIyLW1haW50CisyNTY5NyAwZmQzODMxY2YyYTA3NTdhM2Y2MzcwNzVkYTYyNGY4YzI5ZmYwMmRlIHJlbGVhc2UyMi1tYWludAorMjU2OTggMDI5ZTRjYmQyMzEyOTliMWJkMWNjYTJhYWY2ZmRkNDRlZTEzNGNlMiByZWxlYXNlMjItbWFpbnQKKzI1Njk5IGM5MDFkMTU4YWQ2ODkzNmU5YzExNTE2ZjIzYWQyODhhMTNiMDZiZDkgcmVsZWFzZTIyLW1haW50CisyNTcwMCBhMzRmOTE5NWY2MTFlNzNmNjMyNWZlZjRkYTNiMDExODA3MjA4MDk1IHJlbGVhc2UyMi1tYWludAorMjU3MDEgNmMzZTMyMzU3ZDkxMDhjMzI3NjE2YWJhYTJlMWJiZGFmMzZhYmM5YSBsZWdhY3ktdHJ1bmsKKzI1NzAyIDdlY2M0OTExN2Q3ZTg4YjY3MjUwZjRjMzQzN2YyNjNiN2Y3ZDk5YjEgcmVsZWFzZTIyLW1haW50CisyNTcwMyAyNTQ4ZTJmMzIzZmE3ZTljZTNmMDg2NGIzNzI0Y2UwNDkwZDczY2JmIGxlZ2FjeS10cnVuaworMjU3MDQgMTJkMjA0ZDkzYWYzNjUzNDUyZmNmMWMxNjgyY2M2YTQ1Mjk3NDY1ZiByZWxlYXNlMjItbWFpbnQKKzI1NzA1IDY0MWZiNGI0NzIwZTc2OWNlYjgxZmNkNDYyMWE1NzViODMwMTJjNzggcmVsZWFzZTIyLW1haW50CisyNTcwNiBmOTc2ZmFhMzMwZWExNjdkODJhZDVlZmJhZGQ4NDU0OGZhMmUxOTgyIHJlbGVhc2UyMi1tYWludAorMjU3MDcgMWY3MzI1MWM2MjVhYzYyMjA5ZGY2NmM2Mjk4YWYxODY4YmIzNGNhYyBsZWdhY3ktdHJ1bmsKKzI1NzA4IDI3ZjM2ZjRiZjUyNThiZWM0NTAzMzMxNGZiZmQ1MDgyODIzNGUwZTQgbGVnYWN5LXRydW5rCisyNTcwOSBiODc5ZTY4NTFiZTNiOThmMWIxYzBhNTEwYzkyYTI1Y2IyNzZlYjQ4IGxlZ2FjeS10cnVuaworMjU3MTAgNTFhYTllYjI0ZDgxZjYyN2IwZDljZjI3YjdmNTNjM2JlZWM2MmY3NSByZWxlYXNlMjItbWFpbnQKKzI1NzExIGZiOWEwMDgyMWMwZDUwZDMzZjgwZGM2ZGMxMmJjZjRiNzQzOGQ0NmEgcmVsZWFzZTIyLW1haW50CisyNTcxMiA0Y2U1MTdiM2UzMDFmNmNjNTJkNjRkYTg4ZDExY2ExYzliYzE4ZTk2IHJlbGVhc2UyMi1tYWludAorMjU3MTMgYTI3MzNmZWZmYjM2Njk3YTFjMTRkYmI1YWY4NjQ5YzkwNzI5NWI3OCByZWxlYXNlMjItbWFpbnQKKzI1NzE0IDFiYjRkMmJhYmMxNDVjNmYyYjVlN2FjMzBjMGYyOGJjMjM3MTU5MjggcmVsZWFzZTIyLW1haW50CisyNTcxNSA1YTlkYWRhN2NiYWMzN2Q1NWQ3MjQyNjg5MGE1NWIwYzAzYWI0MzFhIHJlbGVhc2UyMi1tYWludAorMjU3MTYgZGNhNGE3YzM2ZWI5OWNjOWE1YjQzZThiYTYzOWMwMzhiYTEwN2RlZSByZWxlYXNlMjItbWFpbnQKKzI1NzE3IDM1MTNhOWQwOTBhOWE5NWUzZmU0Y2QyMTVjZTM2Mjg2MGY3YmFhMDMgcmVsZWFzZTIyLW1haW50CisyNTcxOCA5MmViZTQ5ZDIyYzUzYmQxNThhOWNmNjE0ODg4ZTBlOWFjYzMzYjViIHJlbGVhc2UyMi1tYWludAorMjU3MTkgODRmMmM3NzgzZDMxMDE2NWI3YmZkODRmODA4NjE1ZGI1NzYyOGQyYSByZWxlYXNlMjItbWFpbnQKKzI1NzIwIGRkMTdhYWRlM2JlYjhhNTUyNDVlZmJhNjdlOGJiYjM3ZjQxMDE1N2YgbGVnYWN5LXRydW5rCisyNTcyMSBkZjk3OWJkZDZhZWZkMmJlZGIyNDUzNzAwODgwNDIyMmVmYzg1NGZjIGxlZ2FjeS10cnVuaworMjU3MjIgYzhhNmVhMDBhOWUxYWRjYmIxOWE2MmMwMWVjZWQwNDI1MWJmMGIyNyBsZWdhY3ktdHJ1bmsKKzI1NzIzIDE3ZDU2MTI0M2ZmODEyZGQxMmFmNmVkODA1NzViYWFjZGQ1NjJlZjcgbGVnYWN5LXRydW5rCisyNTcyNCA4ZWQ2NDdkMzFmNDRlZjRmYTk1YjE1YzZmZTEyMzU4NDJiZTAwYzE0IGxlZ2FjeS10cnVuaworMjU3MjUgNmFjNDE1MGM0ZTg4NDFhMjliMjFiNmNhMjY2ZjNiZWY4OTE5YTI5NyBsZWdhY3ktdHJ1bmsKKzI1NzI2IDM0Y2JlZmQyYzNmZTk2Njc2NTU4NTcwMDUxN2U0MThmN2M4YzU5NDMgbGVnYWN5LXRydW5rCisyNTcyNyBjODU0YjZkMGIyYzA0YmI3MTk3N2ZjMWM0ZjI0ODk3M2Q0NDhhYmU2IHJlbGVhc2UyMi1tYWludAorMjU3MjggMTIxZTE5OGY2ZGRhOWU4Yjk1M2Q3NDZmMDE0MmU4MjQ0MTJhMDRkMyBsZWdhY3ktdHJ1bmsKKzI1NzI5IGYyYjZjY2MwMDgwODUxNGNhMzRjMWJiZWQzNTM4OTQyMGI3NTdmMjggbGVnYWN5LXRydW5rCisyNTczMCA3MTVkNjMxZWVhMmY0MjYyM2FjZmNjOGFmZmI1MTQxMmQzYTA2ODU0IGxlZ2FjeS10cnVuaworMjU3MzEgN2YwZDM5MDE0ZTJlMTVlYTlmYjNkYWExMDBhOTI2YzkyNDJkODI3MSBsZWdhY3ktdHJ1bmsKKzI1NzMyIGMyMTA1NjJlMTU1ODBjNjI2NTE3Y2YyYjkyZmM2NTc1YzZhMzM0YmYgbGVnYWN5LXRydW5rCisyNTczMyBiMzU3ZGYzMDFmNWYyNTZmMmYzNGFkMjlmMzM4N2FiNTMwNGI3NTNjIGxlZ2FjeS10cnVuaworMjU3MzQgMDcxZjUwM2U1ZjRmNGFlYzM1M2I0ZjlkMjk5MmFjYTNhMDZiYjRhNCByZWxlYXNlMjItbWFpbnQKKzI1NzM1IDBhOTZkYWI3MGExNTc0ZWI4YTBiZDVjNDFmYjdkMDg3ZTU3N2ZkNDUgcmVsZWFzZTIyLW1haW50CisyNTczNiAyNDE3Njk0MzI0ZWYwOGQxMzBmZjNmZmJlZTliZWM4ZjFiOWM4NDI1IGxlZ2FjeS10cnVuaworMjU3MzcgODYwMGRiYTRmNTlkM2QyNTIxNzIyY2Q3ZGFhMTIzNzczODllNWIwOSByZWxlYXNlMjItbWFpbnQKKzI1NzM4IGNmOWYxYjZkYmEzYjQ3ODdkZWI5ZmI1ZTljMTlkOWJjZWJiY2ViYTMgcmVsZWFzZTIyLW1haW50CisyNTczOSA3NzVkYTYxNzhlODY1NTdmMDFjMjdhZGI2MTYyYzE4ZTY5ZWQ3ZDk5IHJlbGVhc2UyMi1tYWludAorMjU3NDAgNDY2OGQxYzkyNmNkZjA0OWNmNThjZjlhN2FhOTNhMmRhMDgzNzA3YyByZWxlYXNlMjItbWFpbnQKKzI1NzQxIDU1NTEyZmUxZDZmMTRhNDE3MmU1NGU3NTE5Mzc4ZWQ5NGYzYWFjN2YgbGVnYWN5LXRydW5rCisyNTc0MiBiOTAwNGI4MzY5OTRkOTQzYzk0Y2EwZDRmYzM2MzhjYmEzNDQyMzgwIHJlbGVhc2UyMi1tYWludAorMjU3NDMgNjhlN2U4ZGZjNWY1MDJiZDYzZTQ3MmYwZDRhODY0OWM2YjllMWE4MSByZWxlYXNlMjItbWFpbnQKKzI1NzQ0IDE2NWUyMGFjMGFiMTJhN2MyOTQzOTM1OTQ0NWQ5ZmVhMDcwNjI3YjEgcmVsZWFzZTIyLW1haW50CisyNTc0NSBkNWY2M2U3Y2FiMzFiZDRiNjUzZWQ2MWJmZjJjMTBmYzc4MzFiYzYyIGxlZ2FjeS10cnVuaworMjU3NDYgNDJlNmMzY2RjMDk1ODI3NmM2MjI2MDE5ODgwNWI1MTcwYTVlZTMxZCBsZWdhY3ktdHJ1bmsKKzI1NzQ3IDhmYzlhNTc2ZmJmZmM0MWRhNTEwYzBmY2YyMTE3YzNjZDU3ZDQxMjMgcmVsZWFzZTIyLW1haW50CisyNTc0OCAwOTI5ODk0Y2RmOTVmYzA1NjFhZjIwYjE5Mzg3ZDA1NjliOGNhZWE0IGxlZ2FjeS10cnVuaworMjU3NDkgYjU5ZThhOGRmNTdlODY3YjJiNTU4ZDliYzEzMmUxNzY0MTA5ODRlMiByZWxlYXNlMjItbWFpbnQKKzI1NzUwIGM3M2M2YTViNmE4MDQ0YmUzNzk1ZmUwMDUwNGNjNTZiYWNlOTc2OWEgcmVsZWFzZTIyLW1haW50CisyNTc1MSBmZDA1MGFjMWUwY2U1YjI4ZGY3ZWFlZGJhMDlkYmUzOWMwN2EyZTUwIGxlZ2FjeS10cnVuaworMjU3NTIgYWY4ODQxYWMyOTg5ZGJhYmUyZmRjYzQ2NjQ0ODZlZTA1NTI2ZTg2MCBsZWdhY3ktdHJ1bmsKKzI1NzUzIDExZjZmOGMxY2U3MzRmOTg1NzdhYWVhOThhNWVlNTkxZDZjYTg1NjMgcmVsZWFzZTIyLW1haW50CisyNTc1MyA3NjU0MzRlN2FhMDE5YzFiYjgyZjk4MTNiODAyNTgzMDg2N2NiZGMwIHJlbGVhc2UyMi1tYWludAorMjU3NTUgZTg4ZDVlMjY4N2VlNDczMDY2ZWZiODAzNmNkNzkzOGI5NGQ5MGVkMCBsZWdhY3ktdHJ1bmsKKzI1NzU2IGFiNjYxNmU2Y2ViZmQxZmI5Yzc4ZTJjNDlhZjA4YTYwODk0ZmNjYmYgbGVnYWN5LXRydW5rCisyNTc1NyAwYzhhMzg1ZmM4YTAxMzBhMTBjM2M4MGZjODdjNTljNjg0ZmMyMzc4IGxlZ2FjeS10cnVuaworMjU3NTggNjcwNmI4M2QxYmQxNWMzOWFiOTVkZjQzNzlmNGMzNzlkZmM4NWJiYSBsZWdhY3ktdHJ1bmsKKzI1NzU5IDEzMmEwNjRkYTY1NmU1MjNlNmYwNWNlODVmMTMyN2MyNGRiODAwMGYgbGVnYWN5LXRydW5rCisyNTc2MCA5NjNlODE0ZTY5Y2NmNWZlNjAyYzRiYzBjMjY0YTA1OWYzMTc0OGM5IGxlZ2FjeS10cnVuaworMjU3NjEgOTg0ZWI5OTVmYjllZGMzYzVjYzFlODgyMzBkYjI2NzIxY2M4ZGU2ZCBsZWdhY3ktdHJ1bmsKKzI1NzYyIDcxODU3ZjE2MjIzMTE1NTYzMWJmMTZiMjE1NDk1YjU1M2E4MGIxNjMgbGVnYWN5LXRydW5rCisyNTc2MyA4YmZjZjY4MjcyNDgyYmFiNzMxMDQ3NGIyMTMyNzlmNTE5OWZhODAxIGxlZ2FjeS10cnVuaworMjU3NjQgYTZiYjgwMDI4YWNmMmRjYmI2NDJjZWQ3OGJiNjM0MWNiZmY4Nzg0ZCByZWxlYXNlMjItbWFpbnQKKzI1NzY1IDM1MWY5YjRkODBjNWQyNzBjNWJkM2VmNGM1YWY5MzExZTUwYTc0ZDAgbGVnYWN5LXRydW5rCisyNTc2NiBjZWNkYTRlY2MwOTBjYTY5ODhkYjhkZDYyNzcyYmU5MTgxN2IyZjZkIGxlZ2FjeS10cnVuaworMjU3NjcgZTE1MDEwOWQyYjljNjBjOWFkODM4ZTI3NGIwMDU0OGM5MDVjMDhiZSByZWxlYXNlMjItbWFpbnQKKzI1NzY4IDA3M2RiNjhhMmMyYmJlZmZhMWI3YzE0NjdmZTlmOGUzYjEwOWFhYTAgcmVsZWFzZTIyLW1haW50CisyNTc2OSAwYzhlZDM4NDFhNjRmOGY4MjZiZmQ1Nzg4YmI3OTAzMDE3NGEwY2JiIGxlZ2FjeS10cnVuaworMjU3NzAgYTNlZTcxMzIwMzZhZjA1ZDExZWM2MjJhYjFlNjg4YzZkNjMxNzhlZSByZWxlYXNlMjItbWFpbnQKKzI1NzcxIDRlODIzYmYyNTEyY2VlODdmOTY5MTc2MzRjMDllMmU2YjBiMWU0ZGEgcmVsZWFzZTIyLW1haW50CisyNTc3MiA0NTdiZjE4NGU3YmE4YjU3OGUyYWU0YTBhYTc3ZjZlY2U3MGVmOWUzIHJlbGVhc2UyMi1tYWludAorMjU3NzMgNGE0NTk3YmM0ZWEyMjI3ODQwMTRlMGNjNGEzOGFmNmVkZDJkNTNhZSByZWxlYXNlMjItbWFpbnQKKzI1Nzc0IDM2YzUyY2ZiZDBiNzVlNjA1NGQyZTBmZWU4ODY4NTI2OTQzYjdmMjEgbGVnYWN5LXRydW5rCisyNTc3NSA5MjdiZDRmNmUzNWIyZWU4ZTYyNTJhNzA0NGNiYTZkYjQ1M2QzMDQ5IGxlZ2FjeS10cnVuaworMjU3NzYgNTNhMWYyMWIwNDUxNDg5M2M1ZDdkZWM1NTE4YTlhMTJlYWViZDMzOSBsZWdhY3ktdHJ1bmsKKzI1Nzc3IDcwMTM0MGM4NzcyMzE5YmM2ZTRlNDA5YjQ4OGE3ZmFmYzg3ZWJmMTAgbGVnYWN5LXRydW5rCisyNTc3OCBjNzhmZmJmYzM2ZDkzNjYwZGRmYThjN2QwMTEzZjAzZWIzYmQ0YzE1IGxlZ2FjeS10cnVuaworMjU3NzkgZGYzNTY1NmU3ZDk5NzE4ZmY3YTdkZGVjZmFkZDU4MmRhNDhjYTYzYSBsZWdhY3ktdHJ1bmsKKzI1NzgwIGU2MjE3NGM3ZDhlNTE3Njg2Zjg4NGVmZDAwYjdjOWFjYzkyMDAzZDUgcmVsZWFzZTIyLW1haW50CisyNTc4MSBiMTQ4ZTE4YWU3N2FiMDM5MWIyNzI5YjNhODVjYTRkYzgzODA1N2IxIGxlZ2FjeS10cnVuaworMjU3ODIgN2FmYmJlMjg4YWYzZGE2Y2Q5YzhiOWRmYTljZTFhNmZiYjU1Y2FhYiBsZWdhY3ktdHJ1bmsKKzI1NzgzIGY2NGExMTk3YTUyYTQ3ODE2NWJhYTM5ODU2NGQ3NDQ4YmNjNzc5ZTEgbGVnYWN5LXRydW5rCisyNTc4NCA5ODk1ZTJlMzM2YzNhMTBmNmJkYzFjNzViODNjMGFlYzVmZWYwZDcyIGxlZ2FjeS10cnVuaworMjU3ODUgYjUyM2E0NzBhMGNlOThiZTk0Y2EwYWE2NDRkNGY3YjRiMzBhOGEyMCBsZWdhY3ktdHJ1bmsKKzI1Nzg2IDVjM2EyNTkyMzhjZmY1M2M0Njc3YjBjYmE1NTdiMTgzYjdiNjA4NDkgbGVnYWN5LXRydW5rCisyNTc4NyBiZTQ5MmRmODNkMDMwMDhiYTU3Y2FlMTI2ZGI5MTU0NDI5NWY5MjVjIGxlZ2FjeS10cnVuaworMjU3ODggZjUyZDZhNjc1ZjVmNzg3NjMxNDZjOGNhMWJjOTgwODRjYWJlYzVhNyByZWxlYXNlMjItbWFpbnQKKzI1Nzg5IGVhYzU2MGNjMDM5OWQ3ZjMzOGIwMzdhZGZlYWE4YWI2MDY4ZDhjZGQgbGVnYWN5LXRydW5rCisyNTc5MCBjMTA2OGIwOTI4NzlmY2U2MWI5NjliYWE3MTI1OWM5ODYxZjA0YzRkIGxlZ2FjeS10cnVuaworMjU3OTEgZjRlMjRhYjBkMTI0YWVkYjU4OTQ5OTQ5NTAzYzEyYjU2NWVlMTBkZiByZWxlYXNlMjItbWFpbnQKKzI1NzkyIDcwMDJmMjRmODE4ZmIyYzdlMDlhN2M4ZmRiYzA4NWUxZDZmYzhiMDAgbGVnYWN5LXRydW5rCisyNTc5MyA1MDNiOTJlNjZhOGM3NjVlZWNmNTljMGYwY2FiZWIzM2FhMzM2YjM1IGxlZ2FjeS10cnVuaworMjU3OTQgODMyMDU4ZjIxYWEyNzQ0NTVlMjNmNWE4OGUzY2NjZDgzMThlZjljYiBsZWdhY3ktdHJ1bmsKKzI1Nzk1IDIzN2FkNDNmODlhOGY5NDUwMmZkZDA0MDNmNjQ2NDNjMDVmMDI0MDMgbGVnYWN5LXRydW5rCisyNTc5NiBjMGFlNmY0NmYyMzE1NzQzMjJlY2FiMDZlZjJhMDAwNWFlNGM5ODgzIGxlZ2FjeS10cnVuaworMjU3OTcgZDhkOTgxZDBhNDdlNWYyYTllZGY1OTIwOTk2ZTBkZWQ4MjMwYzE5YyBsZWdhY3ktdHJ1bmsKKzI1Nzk4IDg4OGZjZDliODU4ZGNlMzMxNzM4MGM5OGJmN2IzNTIxNGFjNTdkMWIgbGVnYWN5LXRydW5rCisyNTc5OSBkMmU0NTdjNDRiZjI3NTc1MjlmYjVhYzFlZjFlNzE2NjdkYjI2Mjg5IGxlZ2FjeS10cnVuaworMjU4MDAgMDhmNzQyZGY5OTM3YTJjY2IzYzlkYzU3MmMzMTgzOTMzMjhjNGMxNiBsZWdhY3ktdHJ1bmsKKzI1ODAxIDI3M2VlZTM4NzEyY2ZmZWExYjNhN2Y1YjE4NGQzZDY5Njk1YzFmNzMgbGVnYWN5LXRydW5rCisyNTgwMiAxMDg0NmYxZTE1OTJmOTlhYmJkMGI3MGYxYWUzZDQ5NTI5OTU2NDQ0IGxlZ2FjeS10cnVuaworMjU4MDMgYjE4MzZjY2M5NTFjOTdmNTAxNWM2ZmM1MjQwZTZiOWViYTliMzZmZCByZWxlYXNlMjItbWFpbnQKKzI1ODA0IDlhZmVhZjk5NzlhMGEyYmExZjg1NzdiZWI1MzQ3YWQ5ZjE1NDg4NTcgbGVnYWN5LXRydW5rCisyNTgwNSBkMWFlY2Y2NjMxNjc5MGU1ZTgxZjg2N2JlNTYwYWM1YTlkMDk4MzhkIGxlZ2FjeS10cnVuaworMjU4MDYgNzJmZDg0MTY5ODRiODA4NTA4ZDQ2YWJhNmUyMmJhMWFlMTg2ZGMyNiBsZWdhY3ktdHJ1bmsKKzI1ODA3IGVjMWE1YTAyOWY3NGM1N2ZlMjgyOTM2YzUwN2Y3ZWI3MTEyZWI4OTQgbGVnYWN5LXRydW5rCisyNTgwOCBkNWFhZDZjNTgxYzlhZTQ3M2U5MmM1ZDJjNzQ5NjEwOTBjMmQ2ZDNkIGxlZ2FjeS10cnVuaworMjU4MDkgZWY2ZTJmZWY4MWQyYThiOGJhOGUxMjA1YmIwOWMzNTk3ZTdlOTc3MSBsZWdhY3ktdHJ1bmsKKzI1ODEwIDllOGFhMjk1MjNmMDk3OTc2MmJmZGUwZWI1YTUxMzNmZDk4NjZjNTQgbGVnYWN5LXRydW5rCisyNTgxMSA4ODFiNjQ4NGYwZGZhYTYxYjI3ZTM4MjdmMGVmMGY2YmU1MTE4M2YxIGxlZ2FjeS10cnVuaworMjU4MTIgNTIyMDhmZTRhYzQ3MTE0OGNjNzFmNzQ4YjRjNWQwOWFjMzFiMzhiMSByZWxlYXNlMjItbWFpbnQKKzI1ODEzIGQ4NjRlMmJkOTFhNmUxMTQzZmU5ZGZiODFjZmQ2MjNhMWVmNGNlMDIgcmVsZWFzZTIyLW1haW50CisyNTgxNCAyMzkyNWRmNGUzNzEzMDY4ZmVkODllNTBiODhiZjQyMjEzYmY2MWM4IHJlbGVhc2UyMi1tYWludAorMjU4MTUgN2I1ZDZmMWYxYzZlYzc2NTNiMzk4MjIyMWVlZmY2Yjk0ZGEwMzJkZiByZWxlYXNlMjItbWFpbnQKKzI1ODE2IDJhN2Y3MWE5YmQyZTMwY2VhZmNhZGRiNWUzZTVkNzhiOTVjODY3ZDggcmVsZWFzZTIyLW1haW50CisyNTgxNyAxZmUzODAyMzM2YTM1NmNhZGU4N2VmNjBjNmYzYWM0OWZiZDhjZTc5IGxlZ2FjeS10cnVuaworMjU4MTggYTM2N2JjNjFkNWI2MDdlOWYxZWQ5YjI4MDcxMzEyMDRjNjA3NzJkYyBsZWdhY3ktdHJ1bmsKKzI1ODE5IGY2ZTZmZGI5MzVkMjE0MjE5MzRhNTM0ZjA1ZTlhNzQzYjYzNDFmNGQgcmVsZWFzZTIyLW1haW50CisyNTgyMCA2OGZlMmIzOTExNTk0NzJlYTBmNDYwMDM1NTA1OTdhNjEwNjJiYmQxIGxlZ2FjeS10cnVuaworMjU4MjEgYmVhMDFkYzJmMDBlMmJmM2UyZTdiODRlNTg5ODExOGM3NWE5ZTRmNyBsZWdhY3ktdHJ1bmsKKzI1ODIyIGMzZTBlYTA5NzM3MzY2ZGI5OTRjMmM5YzYwYjQ2ODFlNzJlNDViZGMgbGVnYWN5LXRydW5rCisyNTgyMyA5YmE5ZDEyMzg4MDRmNDU4NzA4ZWY0ZGU5NTEzNDA0ZDYzZDQwNDhlIGxlZ2FjeS10cnVuaworMjU4MjQgODViZDUzNGNiZDE5ZjY5MzMxNTg4NDU4MDIwNGQzZDMxZWVhNjg4NCBsZWdhY3ktdHJ1bmsKKzI1ODI1IGY1NTFhZjkyNjYwZWIyMmYwNmI1NDFlOTUwMWM3N2YyOGE0MGM4NjggbGVnYWN5LXRydW5rCisyNTgyNiBhYjk4YTBkZWY5ZDc2MzMzN2YwMWI2NjU1NzJiMWJlZjJmZTBiNmJiIGxlZ2FjeS10cnVuaworMjU4MjcgYWIyNGVmMmM5MzIzODlhZmQ3NTU3MzllNGM4NzY2MDY1ODQxNDczYyBsZWdhY3ktdHJ1bmsKKzI1ODI4IDFkYjE1MTBhYmUyMTg3YjY1NmViMjQ3ZDlkOTZjNTQ2MmM0ZGI0YzggbGVnYWN5LXRydW5rCisyNTgyOSBhYWY1ZWUzYjhmOTM1NTY0OGU1ZmU2NTE0NzM3MTdmNGY2NGRjNTIwIGxlZ2FjeS10cnVuaworMjU4MzAgZWViYWU0ZjYwZDA1Y2EzNDQyNzczZDc4NGQ1OWM2MzZhMGRhMDVjNCBsZWdhY3ktdHJ1bmsKKzI1ODMxIDhkMDA2MTQ5M2M1N2QyMjdiZWM5YzliOWJlNTVkNzUxMTliMWIxYzUgbGVnYWN5LXRydW5rCisyNTgzMiAwZTQ3NThjY2ZlMmJlNjkwZWMzZmZjOGY1YzJjYjE1YzEzNGUxM2FjIGxlZ2FjeS10cnVuaworMjU4MzMgYWNmNWVjZDgwNmFmYzc5ZmE1MTg3ZjRlNzVjODk2YmE0NjdiZjYyMiBsZWdhY3ktdHJ1bmsKKzI1ODM0IGFkMzgyNWQwNGRlY2Q2MjI2NDg5MWQxYjAzYjJmZDU3ODc1M2ZmZGEgbGVnYWN5LXRydW5rCisyNTgzNSBiYzg4ZjFiNDc2NDhkZTZlNmU1N2IxZmFhZTMxY2MwNWZkZmI2M2ZjIGxlZ2FjeS10cnVuaworMjU4MzYgN2FkZWQ2ZDA2OTZlMzQ1ODRjYjk5ZTI4YWRhYjFhZGEzYjdiZGNkYSBsZWdhY3ktdHJ1bmsKKzI1ODM3IGU0ZDEwYmQzOTczZjE2NDgzZTM2NjhjOWNjYjJkODQyYTVhZTBlMzAgbGVnYWN5LXRydW5rCisyNTgzOCBkNzdlNzQ4ODY1ZmY5Yjg5YmE5M2M4YzM5ZTJjYzg5OWRiZGYyMTQ1IGxlZ2FjeS10cnVuaworMjU4MzkgODA1YmU3YzBlMjZjNTMwOWYzNWVjOTY4ZWZmN2VkOTFhMWU1MjBiYyBsZWdhY3ktdHJ1bmsKKzI1ODQwIDY0MDgzODRjODEzN2IyNDhiNTcxNTg0YzFjNDNlNTliYTgxMDdjZDkgbGVnYWN5LXRydW5rCisyNTg0MSBmYjQ1NzkxMTUwZDE5Nzc3NzM5NmI5OTM1OGFlMjE4YTNhMmNjYzg1IGxlZ2FjeS10cnVuaworMjU4NDIgMTU3MDJlMWI5NjFlYmI2Y2ZlYWE0YWE2NjAzMzgyZWYwN2E3ZjY0NiBsZWdhY3ktdHJ1bmsKKzI1ODQzIDdkZTNjOWI1OGRiOGZlZmVmNDg3NDc1MzQ4NGE4YzdmYTZhYjA2YzcgbGVnYWN5LXRydW5rCisyNTg0NCAyM2I5YWU2YjNmN2FmZWI1YTA0YjM0NjExNTE2NzVlZTVmOWQ5MTg2IGxlZ2FjeS10cnVuaworMjU4NDUgMGYxYWUzN2NkOGViMDI3ZTkzNzU3YTgyMDBkYjY0YjhlYjRmZTgzOSBsZWdhY3ktdHJ1bmsKKzI1ODQ2IGZmY2IyZmQyOTQ3ZTEyOGE3ODEyYWU2OTY1NzM0Zjc2MTAxNTdhODkgbGVnYWN5LXRydW5rCisyNTg0NyBiMzYwYTY1MGEwZGJlNDllZDMxOWI1YjM0MmZjM2Y3OTkyMGQxODg1IGxlZ2FjeS10cnVuaworMjU4NDggOGVjZDFiYWQyNDA4MWI1Yzk1MjE4NDA1YTFlZTc3YWNiZWZkNzk5YyBsZWdhY3ktdHJ1bmsKKzI1ODQ5IGYwMmNkYjJiYzE3YTczZmI5ZDQxMjk2ZjhmYzJlMGMwNDZkMDczZDcgbGVnYWN5LXRydW5rCisyNTg1MCAxMzYxZjdiYjNmMTk5MzcxNmJkNDkwMmExNjBmYTVhNmQyYmRmN2RjIGxlZ2FjeS10cnVuaworMjU4NTEgNjAzOTI1NGFhYWRjNDg3Mjc5NzhiZTk0NzdkYWE0OTBjNmY0MTk0ZCBsZWdhY3ktdHJ1bmsKKzI1ODUyIGQ0ZjU0MTQ2N2I2ZDUyZTU4OGZmMGM0MjMyNjQ1OTllMWE2MTY4MTggbGVnYWN5LXRydW5rCisyNTg1MyBmZjlhYjdkMzBiYmZiZDIxYjZiNzE2MWQ0ZGJjMzU1MmQzN2E1NzBmIGxlZ2FjeS10cnVuaworMjU4NTQgNDIyNTEzZjQyMGNmMzlmYzI3MWI0NTZhYjE0Y2I1NzM2MDAyZDExNCBsZWdhY3ktdHJ1bmsKKzI1ODU1IDY2YWRiNTUxY2QzOGYzZDJiMGZhNThjNjA3MTI3OWY4MTdhZjI0ZjMgbGVnYWN5LXRydW5rCisyNTg1NiA3MjI0YTFkZjQ4MDlmYjQ3MWFmMzRiMmRkMGYzMmE5MzdjOTJlYjVlIGxlZ2FjeS10cnVuaworMjU4NTcgOTFmOWEyNDg4N2NiNWU1ODA4ZWUwNTNhN2FmMGNiZTMzMjE2OWM3YiBsZWdhY3ktdHJ1bmsKKzI1ODU4IGVjZDE4MWIwMmE4YTk2NmFlMWQ3YWI5MWYxMGZkMjFlMWRiYjc4YzcgbGVnYWN5LXRydW5rCisyNTg1OSAzOTNiMGMzZDk3NzMyNDdhNmZmMzEzZWQwZjkzY2Y4Y2MyYzdjM2Y1IGxlZ2FjeS10cnVuaworMjU4NjAgNTRiY2UzY2FiY2NkNTdjN2MzOGY2ZTQzMGE2Y2E2OTg4NTgzZmYzOSBsZWdhY3ktdHJ1bmsKKzI1ODYxIDNhM2RlNjU2N2YxYTVkMjE1OTcyZTY1NmFmYjY5OTU1MTM3NzI0OTUgbGVnYWN5LXRydW5rCisyNTg2MiA4MmJkYmNhMDJjMDc1MWFjYTM5MzdhM2U5ZWMzNWVhZWU1NGY3NTdjIGxlZ2FjeS10cnVuaworMjU4NjMgOWUzZDZiNWNlZTA3NjJkNjYwNTM5NjJhMGJlYWM4YjkwN2M4MDFjZCBsZWdhY3ktdHJ1bmsKKzI1ODY0IDViOGJlODYxMWQ4Y2Q4OTFkMTIyYzg5OGQzYWU1ZjVkZDM3MDg1NDAgbGVnYWN5LXRydW5rCisyNTg2NSBjODE2NTc1OGE2ZGU3YzJhMDVhY2M5NTc5NWE2ZGVkNTdlMjc1ZDNiIGxlZ2FjeS10cnVuaworMjU4NjYgMjVlMmI1ODBiMmNmYmJjYjFiYTE1NDgyMmQwZTc2NjcxMTkyNDM1ZCBsZWdhY3ktdHJ1bmsKKzI1ODY3IGEzMmM3YjNmMWYxMTA2YzljODhkODAyZWM0MWFkMWQwZTlkNTYxNTYgbGVnYWN5LXRydW5rCisyNTg2OCBlOTRlZGRlY2YzMzBhMDQwNDI5NDk4ZmE3ZmQ5MmE4ZWQyNTcxMGRmIGxlZ2FjeS10cnVuaworMjU4NjkgZTc3NzQ1MjY0ODMwNmVlNjIxNGE1Y2U4YWEzNzAwOTA2NDlkMGQzNiBsZWdhY3ktdHJ1bmsKKzI1ODcwIDNiZDIyYmQxODdjMzJiNTNjMmZkNmI4OWIxNjNiNjhiMjZkNTE3ZDQgbGVnYWN5LXRydW5rCisyNTg3MSA1NGMwNWE5NDdiY2JjNThkODk1MDE3MTQ1N2MzMzkyNGU2M2E4OWFhIGxlZ2FjeS10cnVuaworMjU4NzIgMGVkYTNmODJiNmYzZjQyODE0Zjc5OGYxYTQ4ZWYzOGJmZTQzMmFiYyBsZWdhY3ktdHJ1bmsKKzI1ODczIDIwNWMxMDYzMmYwODdmMzllMThiNDFlNTIwZGMzZTcyN2JjZjUyMWEgcmVsZWFzZTIyLW1haW50CisyNTg3NCA2NThlYTAyNjYzNGM0YzIyMDEzZGM4MWRhOTUzOGQ5ZTk1NjA5ODFkIHJlbGVhc2UyMi1tYWludAorMjU4NzUgMGRkMmY5YjU3Y2ZmNWFjOTE4ZTg3NWIyN2Y2NDY1MmFmYWQxOTJjYyByZWxlYXNlMjItbWFpbnQKKzI1ODc2IGE0MDU0M2IzZTNiZjMyNjQzYmIzNWQ5Y2RkNTJkODBhMWJjZGYxOGEgcmVsZWFzZTIyLW1haW50CisyNTg3NyA4MTQzMjlhNjQyNmNkNzdkOTYwNmYxM2M4YjAzNWUyZTFjYTMwYzA2IHJlbGVhc2UyMi1tYWludAorMjU4NzggNGVmMzY5M2YxYTI2YWFkOTAzN2RlZTk1MTNkMmVmMTk4MjNiOWNjMCByZWxlYXNlMjItbWFpbnQKKzI1ODc5IDY2NTc5MWQ1M2M0MzU2YTIyNjY1N2I5OGMxNTZhZjUyYjU5YzE4MjQgcmVsZWFzZTIyLW1haW50CisyNTg4MCAxNjI0NWE5Y2JmYTFkZjM3MGRhN2YxNDJmYmNmZDlmMjgxZWYwN2EyIHJlbGVhc2UyMi1tYWludAorMjU4ODEgN2M3YzkwZmM3MDA1YTdlZmM3OWY3MDg0YWYzMGVhMDdiMzkzMzRjOSByZWxlYXNlMjItbWFpbnQKKzI1ODgyIGMzZGY5YjdhNmFjYWIxODljNGNhZjQ1ZGYzMzI5MzFkNzczYmY0MjQgcmVsZWFzZTIyLW1haW50CisyNTg4MyA3OTViZGQ2OTIxNzYwMjVhNGE5MWFjNmNlZjg1MjgxMjAyZjBjNGRjIGxlZ2FjeS10cnVuaworMjU4ODQgOGJmYzkxODQ5MjQyYzMwODk4ZGNhZGQ5OTg5NDc0NDVmMmU4YzJhZiByZWxlYXNlMjItbWFpbnQKKzI1ODg1IDY0YTY4MzYxODQ4Y2Q0MDI2ZmRmZGExYjcxNDVlYTY5M2IwZGVjMzYgcmVsZWFzZTIyLW1haW50CisyNTg4NiAwYWFlMDk5ODZmYzk4ZjU2ZDc5YzMyYmUwNDFjYWQxZGFiNDMyMzVlIHJlbGVhc2UyMi1tYWludAorMjU4ODcgNGZmMzdjNThhYjg5MzkzYWQ5MjdhMjE2MDMyODg5MjU2MWRjZWFkMyByZWxlYXNlMjItbWFpbnQKKzI1ODg4IDBjMTkxMmY5ZDFjZTgzZGVmZTQ3MWY3ZDBmOWY2YjBlNTdhZWZhNTQgcmVsZWFzZTIyLW1haW50CisyNTg4OSBhMmZlMGVjZDBjZTJhYmQwY2RhNjY5OWY1ZjhjZDI1ZmYyZjY3MjYwIHJlbGVhc2UyMi1tYWludAorMjU4OTAgMmY5YzZjYmVhYTYyOGQ1ZTNkZGJkNWM2NTVlMDQ1YjAyM2ZjODFhZCByZWxlYXNlMjItbWFpbnQKKzI1ODkxIGQ2NmU0ZTdjOWU5YTcwYzU2MDNlNDU5OGZkOTIxM2U3MDA2Mjc5MTIgcmVsZWFzZTIyLW1haW50CisyNTg5MiA0NTcyMWMwMjE2MDY2NGZjYjVkYzU3ZjYyMmEwZjA2YzJhZDhlZTNhIHJlbGVhc2UyMi1tYWludAorMjU4OTMgZWYzMTRiMzdlMjYwY2VkYmJjNTcxYjZmYzUyMDM3MTgwMTVlOWJiOSByZWxlYXNlMjItbWFpbnQKKzI1ODk0IDkxOThmYjA0MzVmYmFhY2VhOTA3MTg4NWNjMWNkYzg1NWNkZDQwM2QgcmVsZWFzZTIyLW1haW50CisyNTg5NSAyOTEyMDE1YTFlN2I3NmI4NWU1ZTNjMmE3NDZhYTRiYWE5MDZjNWEzIHJlbGVhc2UyMi1tYWludAorMjU4OTYgODA5MGQwZDYzZWUxYTU5MTdlMGRjYjk1ZTg4Mjg5NDhmOGY2MmY5YSByZWxlYXNlMjItbWFpbnQKKzI1ODk3IGY2YTdmZGJkMzBkNGYyMTZmNjFkYTYwNmU5ODg5Y2VkNTFlM2QzZGQgcmVsZWFzZTIyLW1haW50CisyNTg5OCAyMWU4OTcyZDM3ZTQ2ODFlY2I0ZTk5YTQzZDg4NzBmMTQwZTdhZjYzIHJlbGVhc2UyMi1tYWludAorMjU4OTkgMWFmYmM1NjE4OGIwMDc0OGNiOWExMDc3OGYxNDliMGExZTA4YzQ4YSByZWxlYXNlMjItbWFpbnQKKzI1OTAwIGRhOWFkZWM2NmUyYjIxOWExNDcxNThiODlkNDk1NjYyMzhhZTY1YzAgcmVsZWFzZTIyLW1haW50CisyNTkwMSBlMmNiZTljMzM0MTFhMGIwYjU3ODRlYTU1OGYzNDBmMDhkMjFiZmU1IHJlbGVhc2UyMi1tYWludAorMjU5MDIgNzVlZjFmMTY3MjVlZjRlY2FiZGNlZDk2MDJiMzE0NTQ0OGNiNmVmZiByZWxlYXNlMjItbWFpbnQKKzI1OTAzIGI3MjZlNmIzYTg1MjNjYTQ1MjI0Mjk3NzVhMzM1NzAzNTQ2OTA2NDggcmVsZWFzZTIyLW1haW50CisyNTkwNCAxNmU1NDJhZjJjNDViYzA3OTAzYWEzMGNiZWQxYmE2Y2E1Njg4ODc4IHJlbGVhc2UyMi1tYWludAorMjU5MDUgYzVjMTMyNjE2NmI5MjFhNDc5NjRjMGQ5NTk4OWQ4MTY2Njg2NjdlOCByZWxlYXNlMjItbWFpbnQKKzI1OTA2IDc1NjYxODdhMjAxY2YyMTQ1OTg2ZjczODliMjVhYjU5ZjU5YTVkZDAgcmVsZWFzZTIyLW1haW50CisyNTkwNyAxNDJmZDNlMTA3M2QxZTA3NTg0MjAyZGYzOGI2MTY3Y2QyNWNhYTg3IGxlZ2FjeS10cnVuaworMjU5MDggNmIzZTk5YjJmZjkxYzQ1NzFhMGQ2YjI2OWIyY2JkNTM5ZTJhMWZkNCByZWxlYXNlMjItbWFpbnQKKzI1OTA5IDA5MjJjOTE5Y2VkYmUzN2MwZDU5NzBmMjM5MDA4NGE1NjkxYjhmZWIgbGVnYWN5LXRydW5rCisyNTkxMCA2M2ZiY2E4OThlYWMyNmFjNDQ4NDg1ZDM4MGNmNzdkZjVkZmM0NzFkIGxlZ2FjeS10cnVuaworMjU5MTEgZmFkMDcxZmI0MTQxZmU2MDliYTY3NmZmNzU4NWE0NWE5ZjRlN2ZmMyByZWxlYXNlMjItbWFpbnQKKzI1OTEyIGFkMTViMzlhZDhmNzEyNDA0MDExYTI5MzUzMzM0NDBlZjlhOThiYTIgbGVnYWN5LXRydW5rCisyNTkxMyA4YjYzNmZjYjg2MTVlYTI5MjBlY2RiOTc3ZjVkMjYxYTQyYTQ4Mzc4IHJlbGVhc2UyMi1tYWludAorMjU5MTQgOWViNGU2MjMwOWIwZTIzMmUwN2NlZmQ0MDdjZmU3MzFhYjZiMWExOCBsZWdhY3ktdHJ1bmsKKzI1OTE1IDI1YjU5OWYzNjBiYzIxZDE4MzU3NGZiYjk5YzNkYTQ0ZmVmYWQ2MGMgbGVnYWN5LXRydW5rCisyNTkxNiA2ZGUxYTE5ZjQ3YTQyNWZlMTFmMjkxYmFjNmJhNDIwYTJiMmI0YjBmIHJlbGVhc2UyMi1tYWludAorMjU5MTcgZjlkOTZkZWRkMWY0NjZiNDdkMTA0N2E2MzNhZTkwMjMyMmYyNWNjMSByZWxlYXNlMjItbWFpbnQKKzI1OTE4IGYyYTNhZjRmYTRmZmVlZjM0YjdlYzcwZThhMTQ2NWI5NWJlZDUzMDEgbGVnYWN5LXRydW5rCisyNTkxOSBiNjhhZjRhODAwMGJhMTJhNjFhZGZmOGNkNTYyOWEyNDQ0ZGVmZDI1IHJlbGVhc2UyMi1tYWludAorMjU5MjAgM2Y0MjE2MzRjMzdjYzZjNWUyZjU1MDI4NTdiNTdiYjg2NGFmNzBmMyByZWxlYXNlMjItbWFpbnQKKzI1OTIxIGI1OWFkNGI5N2E0MjZlMTRmYjVmMDM0MjljOGY4ZjVhZThiOWEwYjUgcmVsZWFzZTIyLW1haW50CisyNTkyMiA3YTRjYjRlOTc5NzY2YWE2MGVkNTc0MzU1NjllNzcyNjg3YWJjZjlkIGxlZ2FjeS10cnVuaworMjU5MjMgMDQzYWQ3YWRjODk2ZjRhNDhmZTMzNDUyYzVlZjAyZjllYzkyZmVkMiBsZWdhY3ktdHJ1bmsKKzI1OTI0IDMwM2I2YWQxM2EzMmQ5OTUxMTJjOWEzMTNmMDdkYmM1NjdjN2Q4ZWMgbGVnYWN5LXRydW5rCisyNTkyNSAzYmYyYjVhY2E2MWVjMTg1MGQ1MDI2OTgyMjQyNmQxOGU2YmJjZjA4IGxlZ2FjeS10cnVuaworMjU5MjYgOWJiNDUwMzY1ZGY3ODcxYzBlNDljM2UyNDgyODM4NTczOTczNmY5MyBsZWdhY3ktdHJ1bmsKKzI1OTI3IDkwNmFkMzZjYjdiY2NlNzVkNWM4ODUxMDhjZGZhYWNlMDA3NWYzZjMgbGVnYWN5LXRydW5rCisyNTkyOCAzOWU0MmQ2ZjVkYTJkMDcwNGE1MjYyYmIzYjlkZmIwYmZhM2JjZWQ0IGxlZ2FjeS10cnVuaworMjU5MjkgYWVkZGEwYWJkMzEzZTAwZWFhNDdjZDI1ODdkOGZlYWQ1YTM5MzMwZSBsZWdhY3ktdHJ1bmsKKzI1OTMwIDZhMWM4NzUyYTY1ZmIwNzFmZGQ0NTEyYTk1M2RhZTE2MGZlM2MyMDYgbGVnYWN5LXRydW5rCisyNTkzMSBlZTRiNTliNWZlYjcyZjdiZWIwMmQyNzA5YTQwYjFkOTk4NTNhOGE0IGxlZ2FjeS10cnVuaworMjU5MzIgNDcwZTlkYTIxYzRhZTRmZjUxZjM2Mjc4MjUwNzNhZGY3MzE0ZWYwYSByZWxlYXNlMjItbWFpbnQKKzI1OTMzIGQxOTBiMmQzMDNjMjgxZDdiZDJjMTk2ZDQ4MTQyMGFiYmUwNGJlYjYgcmVsZWFzZTIyLW1haW50CisyNTkzNCA1YTMwZDRiM2RhMzdhMTBjNjAxNGE3ODE0NjAyZTk2MWUyNDBkMWM5IHJlbGVhc2UyMi1tYWludAorMjU5MzUgMjk4ODAyYWJkMzhkZmZmYTc5YjQ3MmMyZjVkZGMzMzcwZWIyNGZmYyBsZWdhY3ktdHJ1bmsKKzI1OTM2IDA2YTgxNTZlM2JjZjczYmZjYjY0NTdkMDg2YmIyNWNjZDYyMjRmNmIgcmVsZWFzZTIyLW1haW50CisyNTkzNyBiYzIwYmFhYWUzZWUxMTllMzlhOWYyZTJhMmY2YTI0M2QxOWRiMDQ4IGxlZ2FjeS10cnVuaworMjU5MzggZDcxZDNiNzE1YjEzZWEyOTRhZDgzZjUyZmRmYmYxZGJiYjAzMWExNCByZWxlYXNlMjItbWFpbnQKKzI1OTM5IGU2YzZiYWJjZWVlNTM2MGYzZGI3Mzg0ZDdhNDhjYWMxYTk1OWUyNzggcmVsZWFzZTIyLW1haW50CisyNTk0MCAzYTIxZGJlMWI2ZmU0Njg5YThlODVkNjBkYzUxYmMxNzczNGRhZjE5IHJlbGVhc2UyMi1tYWludAorMjU5NDEgNjRhMTA0OWZlNTNiOTYxYTUxYjg5OTBkNTQ5MGE5YmQxNDAyYjdkYyByZWxlYXNlMjItbWFpbnQKKzI1OTQyIGYwZWY4YjQyNmQ4ZDliMDdjYWIzZmFjN2JiYTM0YzliZjI4ODRkODcgcmVsZWFzZTIyLW1haW50CisyNTk0MyAyZDMzY2ZkNmMxN2YwNzc5YmY3Y2QzZDQwMjQxYjAwYjg4YTY5NTcwIHJlbGVhc2UyMi1tYWludAorMjU5NDQgOWExN2IzYTNhZjA5ODljMGQ0MWY0YWQzMTRhZTNkYTFmZjQxM2UxOCByZWxlYXNlMjItbWFpbnQKKzI1OTQ0IDExYzk1MmM3ZDRiZTY2MzgwNDA3NjQ5MTBiZTgwYmQ5YzNjMTdkZTYgcmVsZWFzZTIyLW1haW50CisyNTk0NiBiY2QxZmRmMTNhY2ZlMzY3MWFmNjg2NjQxMjBhNGZlODhjZmQ0YmM1IGxlZ2FjeS10cnVuaworMjU5NDcgOTNkYWE0ZmRlMDg3ZWRkYWM4M2Q1MTI1YTE5OWI0YTE3ODliNjZhZCBsZWdhY3ktdHJ1bmsKKzI1OTQ4IDNkNjgwODVmNDk1ZjllNThlMzY1MjQ3ZGUzMjE0OTY4NmJiMGUxOTUgbGVnYWN5LXRydW5rCisyNTk0OSA5MWVhYjc0NTgxMGYxMTNjNDA1ZmU2ZjI0NzZhNTI2YWU0ZDYxOWMwIGxlZ2FjeS10cnVuaworMjU5NTAgZjFkYmVjYjdlNDE2MGQyNzRlMmZhZDQyYjQ0ZDgwZDkzZTM2NzkzZiBsZWdhY3ktdHJ1bmsKKzI1OTUxIDY2ZTg1YTczMmRkZGUxOTI1ODZjYTRhMDJiNDAyOTVmNDFiNGE4ZGEgbGVnYWN5LXRydW5rCisyNTk1MiBjMThmZTQ4NzI1NzE2MGZkNjgzNzNiMDQwMmIyNzU5NWY5YTIxYmM2IGxlZ2FjeS10cnVuaworMjU5NTMgN2JjZTQ3NTFiZmIzNDBmMmYxODI4ZWQxZjM3N2Y2Y2YyMmUwN2Y1NyBsZWdhY3ktdHJ1bmsKKzI1OTU0IDdkMGYwYmI5NDQ4YjAxMDA2MjZkODM4YWE3Mjc2ZjE3YzE3ZmQ5YTQgbGVnYWN5LXRydW5rCisyNTk1NSBhNzU4ZDRjNDAxZTA4ZWFhZGM4MjA1YWNmMzZjNzcwODAzNjZjNTgxIGxlZ2FjeS10cnVuaworMjU5NTYgOWI1MzEwY2ZhMmUwZGRiMTYwYzczZjdiN2RiNWJiYTc2NWFjN2NmYiBsZWdhY3ktdHJ1bmsKKzI1OTU3IDIwNGQ0NmZjNTRmNjhlMDMzNGZkNzE2OTM2MGRkODA5YTI5MGMxYTUgbGVnYWN5LXRydW5rCisyNTk1OCAwYTNiZjIyYWVjYTRhMmU0Yjg1ZjRlZTcyMWExN2JkNTU0MWUzNGMyIGxlZ2FjeS10cnVuaworMjU5NTkgMWM3MjA3YWQ1ZGI4MTU3ODIzMzhlZGNlNTdmNWNhMTRmOWIyNjhmNSByZWxlYXNlMjItbWFpbnQKKzI1OTYwIDgwODIxYTY1ZmQ0OTgxODE4ZDRlNzI4YjljOGU3NDM3YTVmZGZkMDAgcmVsZWFzZTIyLW1haW50CisyNTk2MSAxOTRlZDVlMGRjOGZmMGRlMTMwZTliMjVlNjg5MzIwNDE2YjM2ZjhiIGxlZ2FjeS10cnVuaworMjU5NjIgMGM1YzY0Yjc1ZDVkMGExODEyZGU5ZWIzYTA3NTU1MWI2YzQ5NzQwNCBsZWdhY3ktdHJ1bmsKKzI1OTYzIGEzMzFjNjE2YmIwYWQ1Y2M1NGVhOWY3OTNlZGZmZDY2OGNjYzM0ZjYgbGVnYWN5LXRydW5rCisyNTk2NCBmM2E5MTNlNjRlYjhlZDRkYjkyNmIxMDA5MGE5ZGQxYWU4MDJhY2ZlIGxlZ2FjeS10cnVuaworMjU5NjUgMjg2OGU5YTllMjgwYjY4YTM5NjUyZTI2OTdlNTJiN2E1NDQyYTY4NCBsZWdhY3ktdHJ1bmsKKzI1OTY2IDNmNGIyZjkzZThiNWI1NDI2ZTg4OGM0OWI0NDliN2M1ZjgzZGRhOTkgbGVnYWN5LXRydW5rCisyNTk2NyBkYTE2NDVmZDljMjQzOGFmZWJlNzRjMDkzMjA3ZGI4YmY2NWE5OWM0IGxlZ2FjeS10cnVuaworMjU5NjggMWM4MzhiZTZkMDA0YmI4ODYwNjJmM2VkYzk4YTYwNDhmMDkzZTYwMiByZWxlYXNlMjItbWFpbnQKKzI1OTY5IGFjMjRjMmM5YmNhZjgzZDhjZGY1ZWNkZmRhYjgwMTY2ZTZiZmZhNTMgbGVnYWN5LXRydW5rCisyNTk3MCA4Mzc3NmJhNTgwZWYyMGE1YzQzNWRlNDJiN2Q2Yzg3NTJjYjg4NDAxIGxlZ2FjeS10cnVuaworMjU5NzEgNGM3YmIwYjRkMzU0YmQyNDc2MTNiZmZiYTEzYjk2ZTQ2NmMwZDMxNyBsZWdhY3ktdHJ1bmsKKzI1OTcyIGM5YjczMjYyOGU2YzYwNjNmMThmMGIyZDA1ZmM2OTVlNDVkZWY3MzcgbGVnYWN5LXRydW5rCisyNTk3MyAyNjc4NWZlNjNjYmJlMmQ0YzY1OTFhZGI4Njk4ZDYzMjZiMzQ3OTZjIGxlZ2FjeS10cnVuaworMjU5NzQgZjYyYmZiMGIwOTQ2Y2Q2YzEzNzI3NTkzNzFjYTBmYTUxNTc4N2VkZSBsZWdhY3ktdHJ1bmsKKzI1OTc1IGRkYzk1NDNjNzZhMDMxYzljYjJkMjM3OGQzYjEyNTMyOTIwMjE1YjkgbGVnYWN5LXRydW5rCisyNTk3NiBmMjk0ZmRkMThiNWIwOGE0YzA3MzFmYTkwNWE0ZWNiMDc2NzI3NjFhIGxlZ2FjeS10cnVuaworMjU5NzcgZDZmNTA2NGYyNjczNzEzZmE2NWU5M2ZlMTQ4NzJjMGVmNGNmOTA2YiBsZWdhY3ktdHJ1bmsKKzI1OTc4IDMyOTliN2FiYThlYmU3MDMyOWMxZWMxYzA0ZmVjZWE5NDU5MTRmMGUgbGVnYWN5LXRydW5rCisyNTk3OSA2Nzk2ZGQzMGE2MDI0Nzk0YmQwYTEwYjdkNGE2OTZlNjBiYTI5YmQ2IGxlZ2FjeS10cnVuaworMjU5ODAgMTlkNGU4MzZiZDA3NWVlZGVhMjExNTIwYzI2YWRiMTAwYmQ2OTUzZiBsZWdhY3ktdHJ1bmsKKzI1OTgxIGVjNmVjYmIzNGIwNmI5ZTA0NWI4OGU2NjJkNWRkODcwMWJlMjMxZDMgbGVnYWN5LXRydW5rCisyNTk4MiA2YTg1MDQ0OGZjOGU4ZTNhYzliMzZlYTk3MDc1NDk0M2ZmMTE4Mjc3IHJlbGVhc2UyMi1tYWludAorMjU5ODMgODMwYzgyOWE3ZWIyYWVkNTUyMmE3YTQ3OTc4OTY5ZGE4NmY0ZWNmZiBsZWdhY3ktdHJ1bmsKKzI1OTg0IGE2YmIzY2M5MTliOTY1NmQ2N2U3N2Q4ODU5Y2M0MGIyMmJjNjRhMWMgcmVsZWFzZTIyLW1haW50CisyNTk4NSBkOWYzMDMwM2M4NjBkMDIxOGMxZDU4MDQyNjNmMTQyZTE3OGQwYjQ3IGxlZ2FjeS10cnVuaworMjU5ODYgODgwZDMxMDY0OTliYWI1YmVmNGI5NzZhMzdkZDJiZWFjYTEyNWU3ZCByZWxlYXNlMjEtbWFpbnQKKzI1OTg3IDg5OGMzOTI0NzdkOTFkMTI4NjUyYzU3NDE4NTE4NGU3MjY1MmI5OTAgbGVnYWN5LXRydW5rCisyNTk4OCAwNDQ2ZWViNzg3YjdmOTJkYWQyMWE1NmRhYmQyYWM3MzE0ZWJkYzU0IHJlbGVhc2UyMi1tYWludAorMjU5ODkgNTFiMWM1ZWEwZmJiNDU2MTc0ZTU0MGI4OGY3M2E0NWEzN2FlMDAxMyByZWxlYXNlMjEtbWFpbnQKKzI1OTkwIDg0Njg0ZmMwMmRhMDA0ZjQ4YzNlYzk1ZjBhNWM1Nzg2NmUxNmU5N2EgbGVnYWN5LXRydW5rCisyNTk5MSA3MjMwZTAxYzNjNDk0ZWQ0YzMzMjA1OGE5MjRmOGMwNDI5Mzg2ODBlIGxlZ2FjeS10cnVuaworMjU5OTIgZTZmY2NkZTYxMDg2NmQxYjJmYTI2N2I0ZDcxMTU3ZjE4NTI1M2Q5OCBsZWdhY3ktdHJ1bmsKKzI1OTkzIDc4NzBmYWMwNDlmNzIxM2E3Nzg2MWU1MDk3NDQxMzJiMTFlNDczNzMgbGVnYWN5LXRydW5rCisyNTk5NCAzNDk0MDQ0MjZmYWFjMzdlMjQ1YzVkNzJkNTg5MTJjNTgyNDUxYjliIGxlZ2FjeS10cnVuaworMjU5OTUgZjhjNjU5ODQ4YWQ2Zjc4MmI3OGIwYWQzYTBiYWE3MjhjNmNmNDBmNSBsZWdhY3ktdHJ1bmsKKzI1OTk2IGI5Y2U5NjkyODFjYjczODIxMzUxZjY5ZTk4YzU2NGQwZGZjMDBkNTQgbGVnYWN5LXRydW5rCisyNTk5NyA3MjZjOTYxZjNkYjUxYTc1MGZlZWVjMTVmOTlkOWQ2NmM2ZGU2ZmI1IGxlZ2FjeS10cnVuaworMjU5OTggMGY4MDE2MjZjMmQzNzljOGM4YjRhNDkyMzA3MDQ4ODUwYTFlNmY3MiBsZWdhY3ktdHJ1bmsKKzI1OTk5IGQ3NzhlYTlkZTc4MGZhYzBmODc4NjMzMTU0NjIxOTQ2Yzc0NWY4YjggbGVnYWN5LXRydW5rCisyNjAwMCBjMTY2NjEwNGI1NTRmOWE2Y2VjZTNiNGExZjM0NjFkMDE1ODMzYjk3IGxlZ2FjeS10cnVuaworMjYwMDEgOWMyY2EzN2JkZWVjNTgxNTZlNGFhMjhkZWZhNWY0NGIyMDFiN2ExMyBsZWdhY3ktdHJ1bmsKKzI2MDAyIGVjMTA0M2Y2ZDA1ZWZjZTc3NzhhNmNmYjg2ZTRiMzI3Mjg1NmM4ZTcgbGVnYWN5LXRydW5rCisyNjAwMyBjZWNmMzFkYjhiMGRiNTczNDM4MGMyOGFjMzVjNjQ2ZWNiODM0MDJhIHJlbGVhc2UyMi1tYWludAorMjYwMDQgOTZiMTM2YjYxMTc4NDU0OGViYTA3MzIzMTlkZTYxZTU1ODIxZGY1OSBsZWdhY3ktdHJ1bmsKKzI2MDA1IGQyOTExOWQyNDNlOWUzN2E0YTQwNWRlZTE3ZmQ1MTVlN2MwZWEyZGMgbGVnYWN5LXRydW5rCisyNjAwNiBiMTcyZWU5M2MxM2M2YzkzMmRkYjBmZTZmYjY5YTAwYTk2NWI4NDY5IGxlZ2FjeS10cnVuaworMjYwMDcgMTUwZjAzNDA3ZDBkMjY5NzI0M2QxNmFhM2JmYmZmMjVkZTg0YmM3MCByZWxlYXNlMjItbWFpbnQKKzI2MDA4IDg2YTI3YmExYmVlNzVmMDIyYmRlMjJkZTEyYTA5NmQ4ZDlmNmVkNWMgcmVsZWFzZTIxLW1haW50CisyNjAwOSA1NjU1YmZiNjA3Y2E3MjI0YWQ5N2NjOTViYmMzNzFmMzlmYjFkZDE4IGxlZ2FjeS10cnVuaworMjYwMTAgOGE4MzZkMGI1OTc0MTY1ZmYwYjg0N2ZjMzFiNGIyMWNiMDUxZTQ0MiBsZWdhY3ktdHJ1bmsKKzI2MDExIDE2MTZiZDhiMzFiYzA0ODA4NzM1NDA5Nzk4Njc0YTViNDE4ZDFkZDkgbGVnYWN5LXRydW5rCisyNjAxMiAyMjg4YzcyNGZlMmJhZDAxNDBmYTY5OWM2NGMyMDBkMDRjZmZkYTk1IGxlZ2FjeS10cnVuaworMjYwMTMgZjNhNDE2YjE3OGM0MjNjZjA5YzQwZjQxZGVkOTZmMDExMGNkNWZlYiBsZWdhY3ktdHJ1bmsKKzI2MDE0IGU5NzE0NzVjMDQ3MTkzMWNlZWI2M2U3YmVhNmNkMWJmYmRmZjhmM2UgbGVnYWN5LXRydW5rCisyNjAxNSAyZGExMTM3NjAwYWU3ZTllYWExZDUzODk5ZGFlMmQwYjA1Mzk5OTIxIGxlZ2FjeS10cnVuaworMjYwMTYgYTgyY2UxOThmZTY5OGMyZTU3NmQ0MmUyZjk1ZjliN2ExZGJiYTFiMiBsZWdhY3ktdHJ1bmsKKzI2MDE3IDEwNzAyM2MwYzQ1NmRmM2MyYzgzMjQ5NDU1OThmYTA3ZWZmNmRlMjYgbGVnYWN5LXRydW5rCisyNjAxOCAzYWFkZTE1MGU3MTcyNDdiMzlhZWUwNDY4N2Q2ZDg5ZjEzMTBmYWE5IGxlZ2FjeS10cnVuaworMjYwMTkgYWY3MTkxNGQ4YmRmMGRmZTVkYjQ3ZDk5NWZkMGEwMGFiYjgzN2RiYyBsZWdhY3ktdHJ1bmsKKzI2MDIwIDQwOTMxMWM3ODM4MzY1M2Q2ODEwOTkzMTRjMDRkOTllMWI3N2FlY2MgcmVsZWFzZTIyLW1haW50CisyNjAyMSBiY2NkNDYxM2M0OTZhMzBiYjFiYWQ2NDE5Y2E3ODQ5YmY1OWVmNmQ5IGxlZ2FjeS10cnVuaworMjYwMjIgNDY0MDdkMGE2MDAwZjVlZTI4OGI1YWQ5NDhlNDMyMGNjYTZhZTczMSBsZWdhY3ktdHJ1bmsKKzI2MDIzIGMxNmJlYTc5ZjRkYjNiNGU3YzUxYTUxMzNlNzMzOTc1YWUyNDNjYzggbGVnYWN5LXRydW5rCisyNjAyNCAxYWVhN2FmMDkyNjBlN2YyMTRmM2ZjZTU0ZDIyZjIwMWMyZjFmOTExIGxlZ2FjeS10cnVuaworMjYwMjUgOWQyYThmNmIwNmI2ZmI5YzQ1ZDc3NmRkZGY0MThiNzc3ZGU1MjVkMiBsZWdhY3ktdHJ1bmsKKzI2MDI2IGY2M2YyYmM4YmRiYTZmMGQ1ZDhlNDJhM2VkZTdiNTAzNGIzNTcyODcgbGVnYWN5LXRydW5rCisyNjAyNyA0NWRiZmNmMGZhMTlmYmNiODA3YTU2YjE5ZWU3MTU1Y2MxY2UwNTVkIGxlZ2FjeS10cnVuaworMjYwMjggNTMyYzI3YTczNWI3YjkyNWI2NjhkZDk4MTNhYTljYzk0ZTlmMzQ5NCBsZWdhY3ktdHJ1bmsKKzI2MDI5IGQ5NzFkMWViNzJmNmUyNGZmYWQ5YjlhOWY2YTkwMjRkYmZhN2JlMjkgbGVnYWN5LXRydW5rCisyNjAzMCAzZTBkYTg0OTM5ZDBiMzM0MDZiY2VhMDgzNjJjNjBkZGE3YTJlNGY5IGxlZ2FjeS10cnVuaworMjYwMzEgYmYzYjA3YzYyY2Y3YmUyNGU0NjllM2M0MThiYTY1NDc0ZjY4YmE2MCBsZWdhY3ktdHJ1bmsKKzI2MDMyIGZjMmU3ZTM5N2JjNjZiZjk3YTg2MDkwMTdkZWI0M2QzYjkyMjA1YzAgcmVsZWFzZTIyLW1haW50CisyNjAzMiA0MDQ1ZTZlOTJmYWZhYmFkNDJmNmM5OTg5YjY3MDc2ZmJhZDQ1MmNhIHJlbGVhc2UyMi1tYWludAorMjYwMzQgODZjZTllZTE0MDQ1MGUxNmE1YmFiZmUxNGQwM2E1N2I1NmM0MDBiNiBsZWdhY3ktdHJ1bmsKKzI2MDM1IGI5Njc0MGM0MmU4MDcwYjcyZDQzMTU2NDU2MDg5NDU5MTI4MzY1NWYgbGVnYWN5LXRydW5rCisyNjAzNiA5MTFmZTA3OTMwNTA0NjgxMzFhYTdkOTJjN2Q4NjZhY2Q3NzlmNzRkIHJlbGVhc2UyMi1tYWludAorMjYwMzcgNTc4MTFjMzU1ZjNhYmNlZTU3YjMzMzA3MThlNjQyYzllMTFiZjUyMSBsZWdhY3ktdHJ1bmsKKzI2MDM4IDBiNThlYTA3NDk1Y2IwN2ViOGZmY2Q4ZmFlNGU4NzgyZWUzYzZiOGYgbGVnYWN5LXRydW5rCisyNjAzOSA4ODFhNmMyZDVkYjJiOGNkNmZhYmU4ZmNiYmIxOTM1NmI5N2M5YTBmIGxlZ2FjeS10cnVuaworMjYwNDAgMThjZmVmMDExYWJlN2U2OGFmNWUwZmJkZmNjY2Q4ZjgxY2M5MzRjYyBsZWdhY3ktdHJ1bmsKKzI2MDQxIDQ4OGI5YjNmNTk5YWQ0MTBkYjFjMTI2NzU5N2M4NWZhOWJlNDBjOTAgbGVnYWN5LXRydW5rCisyNjA0MiA3YzBjY2FjOTdmOGVmZDdkODU2ODEzY2U0Yzg1NGQzZWYzM2YxODYxIGxlZ2FjeS10cnVuaworMjYwNDMgMTIwZTRiYTA1NTBiZDcwOTc5NzkyOTFiODk3MTk1ZGQ5ZGUyZjhkNyBsZWdhY3ktdHJ1bmsKKzI2MDQ0IDQ0YmU1ZTc0ZjE3MjdiZTQ1NTkwY2YyMjFkYmViODhiZjk0Y2RiMjggbGVnYWN5LXRydW5rCisyNjA0NSA2ZjJmMWIwNGU4MmUwZGM5NmQ3MDUxODk3NzNjNDg4YmNjM2Q0ODhmIGxlZ2FjeS10cnVuaworMjYwNDYgZmQxYjhlYmU0ZWFlNDhiNmQ0N2ExODgwMzI1MzljMjBmNjIwYmViYSBsZWdhY3ktdHJ1bmsKKzI2MDQ3IGI0NTc2MzY1MzllODBkNTExMTFiMGQ4ZjU1NjYwMmM5NWIwNWU3YzIgbGVnYWN5LXRydW5rCisyNjA0OCBmOGJkOTMwNjQ0YWEzNDRlNTk2OWVmZWI5NGNjNjM2YzczMTQ2MGY2IGxlZ2FjeS10cnVuaworMjYwNDkgZWVlMzM3MmMyZjk2MmQ0ODU1MjkyYWE1NGQ0NzE1OGZlODAwNWE4ZCBsZWdhY3ktdHJ1bmsKKzI2MDUwIGMwNTk2Zjg0YThmYjE0OWIzNzgzNzA5ZDk1MTYyOGNkNmViMTUwYjYgbGVnYWN5LXRydW5rCisyNjA1MSA2MTQxNjdkZjIwOTYwYTYyYmNkY2ZjZjYwZmFkOWRlOTZmMzQxZTVkIGxlZ2FjeS10cnVuaworMjYwNTIgMDBiMjk3MmFiNGE0YjFhMWIzZTk4YTY5NWYyZjA5NTU1YmViYmQ5YyBsZWdhY3ktdHJ1bmsKKzI2MDUzIDVhZTNjMzE2NzNlNGRkNjYyMWE3ZmY3MDM4YmRmNmVhYjFjMjkxYzIgbGVnYWN5LXRydW5rCisyNjA1NCAyYzAyY2YyNzhmMDI4MmYxN2VjOTU5YWQ2ZDlmYzEzMDY1NGRkNzFmIGxlZ2FjeS10cnVuaworMjYwNTUgNTk2MTY3NjQ3YmNmNTdkYTQ2MjU5YWY2M2NiMzUwNTQzOTA1OTBkYyBsZWdhY3ktdHJ1bmsKKzI2MDU2IDE3Mzg3MTI5MzAzNDRhYTI0YzQzMTM5Y2QyOTUzM2JlNWYzZTA1MWIgbGVnYWN5LXRydW5rCisyNjA1NyBmMDU4M2IxZTkzYWIwZjhhNTI2M2Y0ZDYzOWFjMmM0Mjg2N2FiMzdjIGxlZ2FjeS10cnVuaworMjYwNTggZmEwZjM1Zjk0NGI1NjMwMGQ0YWZhOTgzMGYzYjNhYmQ1ZjA2N2EwMiBsZWdhY3ktdHJ1bmsKKzI2MDU5IDZiYjQzODZiMTExMTAzMzQ0Y2U4ODMzYjM3MjFjZjI3M2JiZWRhYzEgbGVnYWN5LXRydW5rCisyNjA2MCBhNGExZTZmNTU1MzE4YWUwMjM2MzMzNTc4OTIyMDczMWQwZDg1ZmJmIGxlZ2FjeS10cnVuaworMjYwNjEgMzVmNThjMjk3ODk5NjQ0Y2MzNzkxNmI2MWU2OTM3ZTRhOTEzNjVmNCBsZWdhY3ktdHJ1bmsKKzI2MDYyIDBlZWNlNzNjMTNjMDhkZWFkNzRhMDk1ZTRmODJkMWJlMWZlMGNiMjggbGVnYWN5LXRydW5rCisyNjA2MyBjZjFhMDVjODY1OTVjMTBjYjIwYTRmYjE1MzA2Y2VhOWFkYTY3NTRmIGxlZ2FjeS10cnVuaworMjYwNjQgZjA3Y2E5OTcyMzA0MDg5MjlkMjQzMWQ1NGM5YzY4YWM2MjMzOGFkZSBsZWdhY3ktdHJ1bmsKKzI2MDY1IGUwZWUwMDk0MTdkZjA3M2VkMWU0MGM3OWVjMGViOWNkMDNjY2VjMzUgbGVnYWN5LXRydW5rCisyNjA2NiAxOGRjY2RmMmM0NmQ4MDI3NGViYmRkOWMzYjllMzU2NWU0NTcxZjYzIGxlZ2FjeS10cnVuaworMjYwNjcgODcwM2QyMDUyMzM5OTg2NmYyOTE3YzU3ZWMyNTBmMjFkYzdjY2NhNiBsZWdhY3ktdHJ1bmsKKzI2MDY4IDE0ZWJkNzYxMDkwMjZjYWNjN2YzZDM0NzcyYTUyYTk2MDRkMzc4ZTAgbGVnYWN5LXRydW5rCisyNjA2OSBkYzJmNzQ1ZmNjNjdlODJjN2RlNDRjZWRmZDQyZmNmNWNhYjkyODVlIGxlZ2FjeS10cnVuaworMjYwNzAgYWVhNmRmZWFhYWI4NDE2OTJjMDI4OGQwMGY1Y2IzMTNkNzMyZTcxMCBsZWdhY3ktdHJ1bmsKKzI2MDcxIDNhYTRiZjdhYzMxZTk4NWYzNTEzYTg2N2E0NzE3MTUwNTljNTdhMWYgbGVnYWN5LXRydW5rCisyNjA3MiA4YTIyNWJkODc2M2FkMGZkNjBiZGQzNzg5YWVmOWVhNGVkOGM5MThkIGxlZ2FjeS10cnVuaworMjYwNzMgY2E0NjVlNGQ4OGJjMWY3MmJjMzY5MzRlYTM5NWY5NzM0NTExOTFmMyBsZWdhY3ktdHJ1bmsKKzI2MDc0IGIzODNkZmUzNmVlZTdkZWEzNmZiMzJhNjIzZTk1YjFhODBmMjEwNDQgbGVnYWN5LXRydW5rCisyNjA3NSBjYzhiNzMwNDBlODM3ZDZiZWUzMDcxMTg3ZTJlODZkNjk1NGEwMzAxIGxlZ2FjeS10cnVuaworMjYwNzYgY2VjYTZjYzQ0NDIwOGMxMDhjZDY5ODdlMjg0MjgyZDUwMTgyNmVhZiBsZWdhY3ktdHJ1bmsKKzI2MDc3IGUwZWRmZWVhNTE4M2I0NjMwMTczNzI2ODNhZjkwODI3NTNiNjE3NmIgbGVnYWN5LXRydW5rCisyNjA3OCAyMmZkYjQxNmJhMmYxYjQyOWZlYTc2MjAzZDZiZmMxMTIyYmVjOTE1IGxlZ2FjeS10cnVuaworMjYwNzkgMGJkZDQxM2EzNDE2OWI0Njk0OTYxYjA5MzkyMmE2MTk4ZGY1NDJjMyBsZWdhY3ktdHJ1bmsKKzI2MDgwIGMzZDYzNzMwODk1NGEzMTIzZGNhODdhZmEzOWE1MzJlNzA5NWFjNmUgbGVnYWN5LXRydW5rCisyNjA4MSBmYTBhYzg0NTkyOWIyMWUwZWNlNjVhMGE2YjczMzA5ZmI2YTk1ZWJmIGxlZ2FjeS10cnVuaworMjYwODIgNmM0YjE5MzAxNmM2NzVjMWM1MDMwYzMxNzY3OWRhYTkwNGQ0ODBhZiBsZWdhY3ktdHJ1bmsKKzI2MDgzIDI1M2RlNTg4ZjJmYjY1ZTJmMTc0Y2RkZDkyM2FlZjgyNTZiNjdiNzkgbGVnYWN5LXRydW5rCisyNjA4NCBiYTY4ZGRhMTVkZjA2ODdlY2NhMTIyZTc2YjEwM2RhNmJmMGZlMjQzIGxlZ2FjeS10cnVuaworMjYwODUgMWUzMDYyZTY5ZjJjYzExMDM1OWQxNTRlNjJjMmVhN2Q0MTY5NGJjNyBsZWdhY3ktdHJ1bmsKKzI2MDg2IDliYWE4YzlhMWU4NDNhOTgxMzliZWNiNjk1OTA4NWQ5MzhiYWM2YWMgbGVnYWN5LXRydW5rCisyNjA4NyBmYTk1NTljNWIxMDM3MTUzMjY0MzZiYTBmNTQ2NzYyZDVjZjliMmRlIGxlZ2FjeS10cnVuaworMjYwODggYzg0MTEwZjA1ZGMzNmM0NzE5NzYwMWY2OWVlNjIzYzljYjVmNWIzZSBsZWdhY3ktdHJ1bmsKKzI2MDg5IDA5NzM2OTNlNGFkMjFkNjg4YjNhNDc3NzE5YjZhZjU3ZTUwZWExMTcgbGVnYWN5LXRydW5rCisyNjA5MCAxNGI3OTg2YTkyZTEwMzhmYTkwMmM0MDY5MTYzZTcwYWRhNmNiYTE0IGxlZ2FjeS10cnVuaworMjYwOTEgY2RmZjNjN2MxYTc2NDM3OTEwZjQxOWNlMDQzNWNiOWFmMWNmNzgyYyBsZWdhY3ktdHJ1bmsKKzI2MDkyIDY5MzFkYmQyZWRiNDIxZGI1MjNlMmI5Y2U2YjA3OTNkZmQ5ZGFhYjQgcmVsZWFzZTIyLW1haW50CisyNjA5MyAwYjY0NTUwYTc0NjExNWM0N2ViNmU4MzQyZmYyYzNhYjg4NGIwYTc1IHJlbGVhc2UyMS1tYWludAorMjYwOTQgMDAxNTRhMGZkZTYxNzVhNGM4NTRkZjZiNzU3YjM0ODA3YzU2NGMyYSBsZWdhY3ktdHJ1bmsKKzI2MDk1IGQyNDY3MDM4NGMzOWNkMjYwYzQwZWZmZmJjMzY3Y2EzM2VkNWQ0ZjAgbGVnYWN5LXRydW5rCisyNjA5NiAxYWU0MjMyNjJmYzk4NjgxNWVkOTY4YWMxOWM2Nzg5MDRiZGM2NDhkIGxlZ2FjeS10cnVuaworMjYwOTcgZjAyZWE4ZTgyNGIwYzEzNzg4ZTFlMTQzYmQ3NjEyMjg1M2MzZDdmMCBsZWdhY3ktdHJ1bmsKKzI2MDk4IDczZTgyNzIyYjAzYzM5MmYxNTZhMWFiMDU5N2Q2M2I1OWRkNGI3ZTkgbGVnYWN5LXRydW5rCisyNjA5OSA4MTBjMTRmMjQzNzM2ZDkyMmI3MjAzM2FkMWQ5OGViMDBkZDA3NGNjIHJlbGVhc2UyMi1tYWludAorMjYxMDAgODI2YmMxNTIyZDIyMTJjM2Y0ZWIzMDAwNzkxYmE0NmQ0MGRhNzRiMSBsZWdhY3ktdHJ1bmsKKzI2MTAxIGU0NDljODFjMWMwMWY0ZTAyYzUwZThiYzE1NmMxZTEzZTM5Y2JiZDAgbGVnYWN5LXRydW5rCisyNjEwMiAyNzFkNjIxZjBlOWZkZjIyZGE4M2E4MjhjYzE5NTUxYmRlNDg2MDBhIGxlZ2FjeS10cnVuaworMjYxMDMgNzcxYjJhOGQ0NDVkYzMyMWFkNTczZjc5YjNjZDhkYjdkMjJhZWZmOSBsZWdhY3ktdHJ1bmsKKzI2MTA0IGY1MWI3Nzg4NDAxMjg3ZWZlM2VmNmU2N2Q2Y2VjNzk0ZjZjZDRlYWMgbGVnYWN5LXRydW5rCisyNjEwNSA3MzYxZWM4ODE4OGE5MWUxYTFlOGM0YmQ0ZmUzZDVkZGJlNTVjOTZmIGxlZ2FjeS10cnVuaworMjYxMDYgMjgwZTdhMjBlMzFhNWM4NjgzNGFiZTRhYTljMjMwOWIxZjk0YzlkNyByZWxlYXNlMjEtbWFpbnQKKzI2MTA3IGMxMThkMDk1YmRkZWI1ZGIxNzM2Y2RhZmZkMjJkNWM3OGMzZmM3NWMgcmVsZWFzZTIyLW1haW50CisyNjEwOCBmZWUyZjY2ZjNjMTY1ZWYwYzE2MTkxNGZjMmJhZTM5ZWY2NTMwMjY5IGxlZ2FjeS10cnVuaworMjYxMDkgMWJkZjIxN2JhZDkzMDliNzY2OTE2YTQ4ZmEwZTdkZmZjYmMxMGVjZCBsZWdhY3ktdHJ1bmsKKzI2MTEwIDIyMjRhZmM2M2E1YmI5NjNmZjM1MTQ0NGRkMjQ0ZDEwMDY5N2I0NGQgbGVnYWN5LXRydW5rCisyNjExMSA1M2VkOWRkNmJjZDVkNDkwOWU3OTk0MzYwZjFkODEwN2I1NGIzOTY3IGxlZ2FjeS10cnVuaworMjYxMTIgNTIyNDA1YWIzNWMxYWQyYzYyMjhjMDU2MjZkNmZjOGZiZmFhOGNhYSBsZWdhY3ktdHJ1bmsKKzI2MTEzIDRjMTBmMTY5MjUyMzI2NDU3OWQxNjBiZmI2N2Q0OWU0MjM4YTY2ZjAgbGVnYWN5LXRydW5rCisyNjExNCA0MDgxZWZmOTMyZmUyODc5MjZiM2NjOTIxMjI1OTY1ZGVjMjk1OWQ4IGxlZ2FjeS10cnVuaworMjYxMTUgMmFhOTQ5ZDAyZDQwNTMyOGQzMTA0YzQyNTcyMzg2OTkwMTg5MWQ2MCBsZWdhY3ktdHJ1bmsKKzI2MTE2IGNiNWZjYTNjZTc5YTlmYTc4YzZhNzJhNzkwODhmMDdkNWExY2RmZDUgbGVnYWN5LXRydW5rCisyNjExNyBmZDQ0OTk5ZTdlYWQ0MjE3ZmQ1MTNmNTA4NWRhZGY1OTA2MjE1NGRmIGxlZ2FjeS10cnVuaworMjYxMTggNjg3MWU2NzQ1YWE1NDIxMGE5YjEwMmNlOGNhM2M0NzU0OGJlM2YyOCBsZWdhY3ktdHJ1bmsKKzI2MTE5IDZmYTQ2YzIxNzY2ZDkyMzFkZGFhOGRjN2NhYWZkYTc0MWJmNjE0ODkgcmVsZWFzZTIyLW1haW50CisyNjEyMCBlNzBjOWI3YWFmM2Q2ODk2NGUxZmMzYzk2MmUyNTQ3NTRlNWE0ZGYyIHJlbGVhc2UyMi1tYWludAorMjYxMjEgODcxOTg2NjAxNGFiMzZhOTA5Zjc1NjBiMjhlNDY0MmFhNjIxMGM2MyBsZWdhY3ktdHJ1bmsKKzI2MTIyIDk5MzFmMTU0YmU5ODhmNWQ4OGQ0ZTllZDBhODY1ZGU5ZDcxNzJhOWYgbGVnYWN5LXRydW5rCisyNjEyMyA4MTdiNDk0YzliNWU0OTdiNGZkMDAzNzk3MGFjMGE0ZTJhMmFiN2E0IHJlbGVhc2UyMS1tYWludAorMjYxMjMgNWI1NDY0MGU3MmI2NmI4YzA4NTc5NWUyOGVmNzU2ZDU4Yjk1NWM2YyByZWxlYXNlMjItbWFpbnQKKzI2MTI0IGE3ODg0ZDdkMmQ0ODkwMGY5NWQyZDBkNDZhZjkzNGQ0NDkzMTkxMjggcmVsZWFzZTIyLW1haW50CisyNjEyNSAzNDI4MjI5ZjEyYmIxOWEyODY5YzMzZmI0MmUwOWU4NTM0MmM3NDVlIGxlZ2FjeS10cnVuaworMjYxMjYgYWQzY2U3MzAxNmJmYWExYmM2Y2M1ZTY2NzdjOWU3NjczNjNhZDFjMCBsZWdhY3ktdHJ1bmsKKzI2MTI3IGQyNmQ4NTc1YWM2MjFjZjJmYzhlZDZiOTgyZWFiMzI5YmU0ZThmODQgbGVnYWN5LXRydW5rCisyNjEyOCA1NGVhOGE5M2VjZDdlNjIxOTdiM2I2ZjMzMmRlY2FmOGVjMjNiMzZhIGxlZ2FjeS10cnVuaworMjYxMjkgM2E1MDY1MDA1ZmNmZDEyMTEyYWEyYjMyY2QzNjVhNTg4YTU1OTUxNCBsZWdhY3ktdHJ1bmsKKzI2MTMwIDlmNTA5ZTQ5MGZjYzc5Y2ZmZWRkYjJkNGY1ZjNkNjFlYjZiZjMwOGUgbGVnYWN5LXRydW5rCisyNjEzMSAzMTRlMTQxNmFhNWQ1ZjVkY2NlNjAxYjRhNTY2ZTE5YTY0MmM1OGI5IGxlZ2FjeS10cnVuaworMjYxMzIgMjYwYTE3MjBmNjI5YzRmZjM3MDFhYjRhNGQ2NjIzNjZkNjVhZTE1OCBsZWdhY3ktdHJ1bmsKKzI2MTMzIDU5ZDM5MTNhMjljNDQzOTMyM2M3NDEwYTdiYjY0OGM5ZWVjMjRmYzkgbGVnYWN5LXRydW5rCisyNjEzNCBhNmY4ZTEyODZiMTU1NmVkZWViZDUxMjNhZTA0ZDY2ZDc3MmEzYjY4IGxlZ2FjeS10cnVuaworMjYxMzUgMDJmZGRmN2MyNWMyZGUzZTMyYmYwNzgxODMzMjdiMzUwM2EwZjNiOSBsZWdhY3ktdHJ1bmsKKzI2MTM2IDc0ZGU4NjQxODI4NDEwZTI1NjJkYjU3ZjcyNjQ2Y2Y1ZDJiMTZjMTggcmVsZWFzZTIyLW1haW50CisyNjEzNyBkNmVmOTU3YmYyOTBmYzZlNjVmNzFmZDcyMzQyYzY5NDE2MWNhMmVhIGxlZ2FjeS10cnVuaworMjYxMzggYTZhOGM2OWVjMGU3YzU4ZTEzYjkwY2I1YmFlZWNlZmE2M2NjNTM2NyBsZWdhY3ktdHJ1bmsKKzI2MTM5IDM2MTg2YWYzYzEyNTE2NGE3MGVhMWZhZDJhNTdhOTcyNzBlNmI4Y2EgcmVsZWFzZTIxLW1haW50CisyNjE0MCAxNDlmYmJiMDM5MTU3NWI1Zjg4NWI3YzkyZTA3MjlkOTZhY2VmYTg1IHJlbGVhc2UyMi1tYWludAorMjYxNDEgNWY3ZDcwYWI3NGVlZmZkZmNkZGU3MjFjZGE1ZmFlYjcxNWM0YWVlOCBsZWdhY3ktdHJ1bmsKKzI2MTQyIGVjNjdmY2UzZmEzY2VkNGEzYzhkOGNjNDhiOTY1NzBmZjJmY2RmYmYgbGVnYWN5LXRydW5rCisyNjE0MyBkOTlhMWRkZjk1MTgwNTE3OGQ4ZjE4NWE3ZjMyNmE4MmIzZmExYmUxIGxlZ2FjeS10cnVuaworMjYxNDQgMDFjNWFlNmZjNWJiYmEzYTdlMWFhMTU3YzY2ZDFlNTVlOTNmMzBkZSBsZWdhY3ktdHJ1bmsKKzI2MTQ1IDBiMmMwODc1NDJiY2JmZjM3MDQ2MjIzNDlhYmI5ZDljNWI1YjA2YmMgbGVnYWN5LXRydW5rCisyNjE0NiBhYThkNTk4MjNhZGQxYThlN2Y3ZThhN2ZlOGM3ZjcxMGE5N2UzYzhiIGxlZ2FjeS10cnVuaworMjYxNDcgYThjNzVjZjc0ZGMxNDExMmMwZWM4MGMyYzJkYmY2NWFmYzczOWRhOCBsZWdhY3ktdHJ1bmsKKzI2MTQ4IDAyOGViYzhmYjM5MDhhOGNkYjdhOTQwYmUxYTFjNDVjNDQxNzI4NjggbGVnYWN5LXRydW5rCisyNjE0OSAyMjM5NmY3N2MzNTZhYTMwOWZiOGYwMjBhNjg5ZDg0MzlhNDMzYjkxIGxlZ2FjeS10cnVuaworMjYxNTAgOTdhMzQ2NDNlNTQ0YTk3MDVkZGRkNDg3ODFkODIxODMyMTA1MTEyZiBsZWdhY3ktdHJ1bmsKKzI2MTUxIDA2NjY4ZDhkOTM0M2Y0NjRkOTEwOGQzZDJjYWJhZTRmNThiMzliNjUgcmVsZWFzZTIyLW1haW50CisyNjE1MiA5YWNhYjc2YjAwMTc4ZDY0ODdkNjRjYjAwZDJlYTg1MDAzYTNhMzRhIGxlZ2FjeS10cnVuaworMjYxNTMgMTkyMjkxNWNiNzNkN2E4YWNjYzUxZmY5NWQ1NDg4MDgxOWVmNmY2MiByZWxlYXNlMjItbWFpbnQKKzI2MTU0IDNjODc4MTQ5MmQxZmRiOGJhMzk1MGUyZTk0YTRmNzVlZWIyZTRhN2IgcmVsZWFzZTIxLW1haW50CisyNjE1NSBmNjYzZmZiZTllNWM0MGQ0YTJhYzU5ZThhODhkNWYwOGVhOTJiOGFkIGxlZ2FjeS10cnVuaworMjYxNTYgNGVkMDZmOGFhZGQzNzg2MzI4OGUzNmRhYTZlZTMxNmU0YmU5YmFmMiBsZWdhY3ktdHJ1bmsKKzI2MTU3IGFjNWUxZDkwMjliNzk0NTI2YzdkMzIwODJjN2UzMDgwZDlhZThlMTEgbGVnYWN5LXRydW5rCisyNjE1OCA2OTNlMDAxNjQwODFhZWRjY2M4Y2Y0NzUwMmY4ODQ4ZThjYjZmMTU1IHJlbGVhc2UyMi1tYWludAorMjYxNTkgMGViODNhYWNlMDcxNjY3ZGE5NWE4MzJmZGVhYWE4NmYzNmFmMzhlYyBsZWdhY3ktdHJ1bmsKKzI2MTYwIDU4YjJmNDYyNmI2NGQ3OGExZjE4NDU4NzYyNDcxZjg0NTVkZDE4OWEgbGVnYWN5LXRydW5rCisyNjE2MSAyMTAwODg3YjQ3Y2JiOWJlMmNmZWMxZjNjOGI2YWNkZGY4MWYwODVmIGxlZ2FjeS10cnVuaworMjYxNjIgZjAyNzcxNDZhYTE2ZGI2NDlmN2QzZjlhNzJmOWI1YWE0NDg4NWY5MyBsZWdhY3ktdHJ1bmsKKzI2MTYzIDE3YTE3NTFhZDFkOTAyMWZlYTg0YTE5NjA1YzM4OTliN2RmZGY3N2QgcmVsZWFzZTIxLW1haW50CisyNjE2NCAyMWYzNTMxMjQxNDVjNDNhMzkyMWM4MjI1ZTllNTU3MzA1Y2Y5YWZmIGxlZ2FjeS10cnVuaworMjYxNjUgNzczNDNhYTAzZTJmMzYzYzdiNDEwNDE2MTBmNzhjODMzNGNiNjFmNSBsZWdhY3ktdHJ1bmsKKzI2MTY2IGYxYWY4YWQxMTAwMGEwODliZTBmOWZkYjViYTM3MmMxOTgyYzE3YTMgbGVnYWN5LXRydW5rCisyNjE2NyBjODE1ZTAwM2RiY2Q4YmQ1YzBjZTQ1ODQ0MTE0ZjYxN2Y2NTZiZTRjIGxlZ2FjeS10cnVuaworMjYxNjggODgyZWE1Y2M3Njg3YWJiZThmNGM3MGMwMjRkODhhOGUzYWQ0MzI5NyByZWxlYXNlMjItbWFpbnQKKzI2MTY5IDMzMzdjNDFjMTMyYjExNGE5NGM1MmI1MGMxODRmZDlmMmM4MDI0MmEgcmVsZWFzZTIxLW1haW50CisyNjE3MCAyYjcwMjVhMjMyZTFmN2Y0OTRjYzk5YjMzY2ZiNTg5MzJhNmQzZTI0IHJlbGVhc2UyMS1tYWludAorMjYxNzEgYTNiZjJjOTdlODA4ZTQxNjQ4ZDY0YjFhNWZhNjkzZjExYjg4ZjcxMyByZWxlYXNlMjItbWFpbnQKKzI2MTcyIGRkODk4OGNhNGIxNDY2ZDM2N2ExOGZjYzBmZWE4NjA1NjE0NTA2ZGEgbGVnYWN5LXRydW5rCisyNjE3MyAxMmIwMDNiZTVkOTZjNTM4OTc3MDQ3YTMyZjZlNWExZmFlN2MyY2QxIGxlZ2FjeS10cnVuaworMjYxNzQgNTMzY2Q1MTk3NTc1ZGE3N2MwN2YxMWE2NmE1ZDM2MjNiMDU5ZmU3MCByZWxlYXNlMjItbWFpbnQKKzI2MTc1IDQzZWU3MzdhMWI3ZjEwYWFhMGE5YmQ1OTIyOGYzN2I2ODlkZjNjZDcgcmVsZWFzZTIxLW1haW50CisyNjE3NiAzNTE1NzY3MTIzZDhjOGNlNTM4ZmEyZTM1MWY2ZDg2ZWZhYTE3YjMwIHJlbGVhc2UyMi1tYWludAorMjYxNzcgMzViNzk4NDM4NTI3ZWI2MmZkNzYyYjZiNDVmNWI5ODYwN2E0YWRmYiBsZWdhY3ktdHJ1bmsKKzI2MTc4IDZhZmZmZmYxZmZmMWVlYTU3ZmVkMDMyMjZhNDU5NTE0NmUwZmE3ODUgcmVsZWFzZTIyLW1haW50CisyNjE3OSA0M2NlZTE4MTgyNDIwYTFjYzY4NTNjNjAzMjliOTU0NGY1NGZlNjA4IHJlbGVhc2UyMS1tYWludAorMjYxODAgYzFhZWM2MzI0YWQ1NGUwYThlNTI2MmZlM2NlM2IxYTZhMjc0ODYxYSBsZWdhY3ktdHJ1bmsKKzI2MTgxIDBhY2Y2ODIwZDllMzUxMDMzNTczYjY0ODhlYTc2ZTYzYTNlMDczMjAgbGVnYWN5LXRydW5rCisyNjE4MiA0MmNjODdjNDAxMDM2YjFmMzA2N2I5NWY1NThmYmFhZGFhNWNjZjlhIGxlZ2FjeS10cnVuaworMjYxODMgYzU2ZWFhZDNhMGIzOWYyYWUwZjUzODI2NTA0MmU2MmJiZTVmNDEzYSBsZWdhY3ktdHJ1bmsKKzI2MTg0IGY4OWYyMDEwODdlYTY3NWE1MTFiODliMmFiMjZjNzc1ZmFmYjJjMjIgbGVnYWN5LXRydW5rCisyNjE4NSBmNjhkZGY3ZjIxZjg0YTViNWUwZTI0MmVkNzNhNzQ3NWM4ZjA4MTYyIGxlZ2FjeS10cnVuaworMjYxODYgOGJhNDk5ZWNjNmM5MTI0YzYwNDNhZWI2ZmUzMjUzOTQyZDk5YWIxOCBsZWdhY3ktdHJ1bmsKKzI2MTg3IDI5NTUxZjc0N2MwZWQ5ZDQ2NzE4ZDg0NGI4ZWNjOWFhYWM5NmY3NjkgcmVsZWFzZTIyLW1haW50CisyNjE4OCAzYjZmNDhiNTQ2NjZlY2ZhMTIxZWExNjk2NmE0YjczNDBmNzMyZDkzIGxlZ2FjeS10cnVuaworMjYxODkgYWFmNTcyZTMzNGMzYzhiYTM5NDlkYWExMzZhY2IzYjRmYmYyMzVjNiByZWxlYXNlMjItbWFpbnQKKzI2MTkwIGQzY2YzODNkZjA5NmMyYzhjZTY1NDVjMDg0MzcyMzBlMzU3MzM5ZmYgcmVsZWFzZTIyLW1haW50CisyNjE5MSBhOWRkNWU2ZDY4MDU2M2UwNzg2M2Q3NGY3ZDU4YzI4MDMxMTc1ZjAzIGxlZ2FjeS10cnVuaworMjYxOTIgM2FmOGFiMWIwNWZjN2YxMjkwMjM2NmYxM2I3ZWE1ODYxN2E3M2JjNSBsZWdhY3ktdHJ1bmsKKzI2MTkzIDVlZGE3ZGIwMDdkNmQ3OGU2ODExOTE2ZTMwNWM4MzZjMDU1YzRhZTEgbGVnYWN5LXRydW5rCisyNjE5NCBjODY1Y2Y4YmVlNDBkNjk1MWIwMzIxZDI2MGNmMTMyODdkMzNmZGQwIGxlZ2FjeS10cnVuaworMjYxOTUgMDkwODcyOWU5NGUwZjE1ZjFkNmQ4NzAwMTU5NzhlNjlmMzlhYjZmZiBsZWdhY3ktdHJ1bmsKKzI2MTk2IDczZDE0NWJmZDhlNDVlMGIwY2MxODk5NmY0ZjQxZjg4ZjViZGEyZjQgbGVnYWN5LXRydW5rCisyNjE5NyBmMWY1N2JmMDkwOTJlYmU2YzI2OTkzM2M4NzU5NTBlMTg3OTMyOWIxIGxlZ2FjeS10cnVuaworMjYxOTggZWYyZmJjZTcxNzM2OWRmY2UwODA3NTBjZWUyM2Y0ZTg4ODFiNjdmMiBsZWdhY3ktdHJ1bmsKKzI2MTk5IGQ3NTMxMzA3NDM1NTUxYTBkYjVmNTg3MjBhNzBiNDlmMDFkYWFhMGEgbGVnYWN5LXRydW5rCisyNjIwMCAyZWRkY2U0NGIzYmVkYmM3MTIwNTEyODViZmRjZTk4ODU5NWMzOWQzIGxlZ2FjeS10cnVuaworMjYyMDEgMTg2OTZmYzM1MDYyZjYyYWE0MGMxMzg0OTA0MWRkYzA3MjQ1ZjEwOSBsZWdhY3ktdHJ1bmsKKzI2MjAyIDM5ZWEwOWZmNTczNGVjY2RmMWM2MjcyZTVmMTUyYjNmZGRhYzhmZmIgcmVsZWFzZTIyLW1haW50CisyNjIwMyAwNzlhYmUwNWU4YmM4MWMzZDhiOTI2ZWE1YmFlYzExOTA3N2QzMWZjIHJlbGVhc2UyMi1tYWludAorMjYyMDQgMzgyNzkxZGRjZTFjMTgzMmYwNTBmNWU2ZGJjZmY5MDZiZTE3NjZhMiByZWxlYXNlMjItbWFpbnQKKzI2MjA1IDIxNmRhZDcyMDliYzcwMTMyY2EyMjliOTIwZDk0YWIyNDQ4ZWI3MjAgcmVsZWFzZTIyLW1haW50CisyNjIwNiBkNzAyOTY3OTQzNWY3ZWMyOTA2MGNlMTgwNTdlMTQzZTk0NTViZGUwIHJlbGVhc2UyMi1tYWludAorMjYyMDcgNjgwNzFhNzI2OTcwNmI4MWJhNTc5NTE2NjQ0YzAzMWFkYjRhY2VkMiByZWxlYXNlMjItbWFpbnQKKzI2MjA4IGY2MDkzYmFjOWZiNjRmZTM0ZjI1YjY4NGY3NWU2NGFmNzc2NGU4NzUgbGVnYWN5LXRydW5rCisyNjIwOSBlNTg5ZTQ3M2YyMzJmYmY3N2Y4OWU4NDE5NzgwMWRkNzk5NWQ0MGJjIGxlZ2FjeS10cnVuaworMjYyMTAgZDZkNjQyMzlhYTA1MTU4YTJmNzgzNjJiNmM4YjYyNjgzMGQxNjk4YiBsZWdhY3ktdHJ1bmsKKzI2MjExIGY2NjAwYjBkYjY4OGE3NzY4MGMwMDFmZjBmN2U1MGY3NDc3NDhjYzggbGVnYWN5LXRydW5rCisyNjIxMiBlZDAzODA2ZDg4Y2RjOTcyOWVmMDA1YjkwZDRjYTFmMjgwYjYzNGU2IGxlZ2FjeS10cnVuaworMjYyMTMgNmU5YzBkOWJkZDdmZDRhNjI0MTc4N2Y0NGNlZmU0YTdmZTVjMmExYyBsZWdhY3ktdHJ1bmsKKzI2MjE0IDE4OGIwZmEyODAwN2U4NmE5OGU1MTM1YzFmMDI1YmI0NDkyNjMyNmUgbGVnYWN5LXRydW5rCisyNjIxNSAzMmVlYzZkNzljOTNmMmFiNTEyNjI4MTUwZDQzNmViODlmZGJiMzI3IGxlZ2FjeS10cnVuaworMjYyMTYgNDE2ZGI4ZDk2MjE2YjkxMWVjOGE5NTU0Zjc1ZWMzM2FhNDI1YWMzMSByZWxlYXNlMjItbWFpbnQKKzI2MjE3IDI3M2Y1MWY1MjAwMDE5MTc4NDZkNDVkMmVjODJmMWJlMTA1MGEzM2QgcmVsZWFzZTIyLW1haW50CisyNjIxOCBlMjRiOGQwYjY0NzA0YjEwY2UzYjE1MDQwOGIyMTRlM2RkYmY3MTc3IGxlZ2FjeS10cnVuaworMjYyMTkgMjJmN2VmN2JhNzJiYTQ1Y2U1NjkxNTlkZWY3N2QzZDQ1NjE4MmY2OCBsZWdhY3ktdHJ1bmsKKzI2MjIwIGJiZjA1YWYzYzE5MTM4ZDM1NzE3MjUyOTRjZjZkMjNkYTVkYTY3NDQgbGVnYWN5LXRydW5rCisyNjIyMSAwNDM2N2NmZjg2ODk1ZjZjY2I1ODBmNzJlMjAxY2E5NzFiOTA5ODVmIGxlZ2FjeS10cnVuaworMjYyMjIgYTY1MjdkMWVlNDc0MjhhYjYyMjU2OWYxNzdhYmVkMjU4NmVkNDk3MSBsZWdhY3ktdHJ1bmsKKzI2MjIzIGY5MjM2Y2FkNjllNjI4MGZhODc3MjRiN2M0Y2ZmNDQ2NTg1ODg0ZjQgbGVnYWN5LXRydW5rCisyNjIyNCA2ZjhhNWFkMzllNmZlNzJlMWYwZTEwODVkMGMyZTVhN2Q0MTU4NGM3IGxlZ2FjeS10cnVuaworMjYyMjUgNjgwNGU0OGEwMDMzYjQ2NjQ1Yjg3OGNkMWE0OTFlYzY2MTc0NWYwNCBsZWdhY3ktdHJ1bmsKKzI2MjI2IDcwMTQ5MjE4MjBhNTFjZDFhZWVhZDNkMWRhNDM4MjQ1YWQyMzhmNTEgbGVnYWN5LXRydW5rCisyNjIyNyBhNTYxZmYxYjRmZmExZmJhOTc5ZTMzMTJkMTdjZDdkNTlhYmRiYTVlIGxlZ2FjeS10cnVuaworMjYyMjggZTJmMjE4N2MzZDJjMWNhNzk4ZWFmOTY4YWI5NTEzNjI1MjUwNGRkOSBsZWdhY3ktdHJ1bmsKKzI2MjI5IDAwZTY0MGU2ODBiZDI5OGRjNzcwOTdjOGVlN2Q3NzQxMGM5MDM2NTYgbGVnYWN5LXRydW5rCisyNjIzMCBiMWZhOTBmOGI2YzIxMjAzZDBiZjAzNmRiNjJhNzRmMGVlOTljZjYyIHJlbGVhc2UyMi1tYWludAorMjYyMzEgYzkxNjI2ZDFmNDExZjBjYmZhMjc0YWZhMTViMGMxYzc0NWQzMDM3MCByZWxlYXNlMjItbWFpbnQKKzI2MjMyIDI1MjQzOGJiMDVkOTdhODRhZDFkODgxY2E1MmJiYWQ2ODU2OWRmMTAgbGVnYWN5LXRydW5rCisyNjIzMyBkNDYyYzc5MGNjNWJkNzY5Nzg3ZjliODFiNzQzY2IzM2U3YmI3N2YzIHJlbGVhc2UyMi1tYWludAorMjYyMzQgOGQzMzdiM2I2NTVhM2FhNjE3OGEyNjViOTFlYWNkOTQ4YTc2ZTkwZCBsZWdhY3ktdHJ1bmsKKzI2MjM1IGMzZTlhMDUyZTI2OGEwMDcwZGE3YjJhNjI5YjdjYTlkNTc3ZTE0MTEgcmVsZWFzZTIyLW1haW50CisyNjIzNiBlM2RlOWQxOWZhYWFmYzZjZjhhMTg0NjIxNjYyZWM2ZGZjMjIwNGM2IHJlbGVhc2UyMS1tYWludAorMjYyMzcgMWEzYjA4NjYzZWJlMDFlN2JmNzlhMTY2MDVjMjcyYTRiMTk0OGFiMSByZWxlYXNlMjEtbWFpbnQKKzI2MjM4IGE0MWExZTAwNTFjNWQ2ZTIwMmRmMjlkOTU0YWU5MWQ3MWQ0ZjAyOWQgcmVsZWFzZTIxLW1haW50CisyNjIzOSAzYTY3MThiOWI2NWE4MzhiMjg3NmQ2OWQxMTExZmQ5YjY4M2ZmYWFiIGxlZ2FjeS10cnVuaworMjYyNDAgZTE0MjNlYzllNmVjMzYyZDA5NjdhNzU0NDc3YzRiN2ViYjYxZDlmYyByZWxlYXNlMjItbWFpbnQKKzI2MjQxIDM4OWQ0MjlhZGE3MmM2ZDQ3ZTIzZmYzNzMyYWY5YmY2MjFhNjY3YTggcmVsZWFzZTIxLW1haW50CisyNjI0MiA3OTI4NzUxYmZkZWU1MTg3YWIzOWI2Yjg4YTRiYjM4NTBhMjA5YjgzIHJlbGVhc2UyMS1tYWludAorMjYyNDMgNWJlMDY3N2Q4MTBkMDI2YTc5NTU2ZDFhZDM5NzgyZDc2OTZmZDhiMiByZWxlYXNlMjEtbWFpbnQKKzI2MjQ0IGQ4YmM2OGNiMTdlMDM3MDEyOGI5ZGU0ZjM1MGY0MTRhMjAyMDA4MDkgbGVnYWN5LXRydW5rCisyNjI0NSA1ZDM4MzAwNmQzNmI5ZDM2NGE1MjQyYzA2OTQyZTI2NDlmNTJlM2Q5IHJlbGVhc2UyMi1tYWludAorMjYyNDYgMjg5ZWExZDVjNWFjY2NkYzE5ZGZhNmU3NzY3NzYyNGFhOGE2MGJhNCBsZWdhY3ktdHJ1bmsKKzI2MjQ3IGMwZGQ4YmJkZGU2MDQwODM0Nzk1ZDY1YTJlYTZhNDAzYTI5MTY5NmMgcmVsZWFzZTIyLW1haW50CisyNjI0OCBmOTc0NzNiMzQwYTU4MDNjYjBkY2NmNzY0ZTQzNTA3NDJlYmNkN2MyIHJlbGVhc2UyMS1tYWludAorMjYyNDkgMmIzYTZhODQ0YmZmZGJiOWU4ZGU4NTNmZWU1MzU4NjQ2NDkxMTE4NCBsZWdhY3ktdHJ1bmsKKzI2MjUwIDE3MGZiNWI5NDczZjhhMzQyNGQyYTYwYmQ2NzI0NDMxNzFjMDBjZjYgcmVsZWFzZTIxLW1haW50CisyNjI1MSBhZjcyZDJjZjJjNTVlYjg4NDkwMDZkMGUwMDA2NWE4MTBhYzUxZDA4IHJlbGVhc2UyMS1tYWludAorMjYyNTIgYjgxZDBlODkwNDEyY2MxYWYyYzQ1MjAyYTI4OTEzZjg0MzcxYWQwYiByZWxlYXNlMjEtbWFpbnQKKzI2MjUzIDMzYjJhODliZjRhNmE1YjI2N2I1ZDE4M2UyNTg1MzY1NzA4NmZkYTMgcmVsZWFzZTIxLW1haW50CisyNjI1NCAxYTM3NTY2MWNjOTczMjk1MDEwNGQyMDVlNGM3ODgxYmEwYzRmNzk3IHJlbGVhc2UyMS1tYWludAorMjYyNTUgNTcwYTc4MDI3OWQxYTQ2MWJlNjQyZTNiNzRhMTFjYmExOGY5ZWU5YSByZWxlYXNlMjEtbWFpbnQKKzI2MjU2IGI1YWFkZTk3ZDcyM2ZhOGE2M2U3YjE5YmIxNjMwZGM2MWZlMmM3MGYgcmVsZWFzZTIxLW1haW50CisyNjI1NyA3ZDQwYjY5MWRiYTc2MzdjY2JmNzdhMTI5M2RkMjM4ZTM3MmU5YmE0IGxlZ2FjeS10cnVuaworMjYyNTggOGJhY2E0ZWNlNjQ1NTM1MjcwN2FiNmZhZjExMTNkMGFkNTI2OWQwYSByZWxlYXNlMjEtbWFpbnQKKzI2MjU5IGVhNDM1MjNiNWJlNzYyN2Y0YmE2MjJiNzhhOTg3OGFlZjM1Y2MyZDggcmVsZWFzZTIxLW1haW50CisyNjI2MCBjMGQ3YjU3ODhjYmU2M2JhYWMwMjQ0OTUyMTA3MzlkMDY3N2Q4OTc0IGxlZ2FjeS10cnVuaworMjYyNjEgODkxM2RmYTExMDI3ZWRhYTdhYTExNWNjZWI3MDE2Y2VhOWJlOWYxMyBsZWdhY3ktdHJ1bmsKKzI2MjYyIDExY2ZlODM4M2NmODg3NTFmYWQzZDc5ZTFlNmIyYmQzMTIyZDAwNjYgcmVsZWFzZTIyLW1haW50CisyNjI2MyBmYmRkNDBiOTJiODcwYjdmZjdiZDRlZGQ2MjM2YjA2N2I4YjRhZGE5IHJlbGVhc2UyMi1tYWludAorMjYyNjQgN2U4NGRhOWM5OGViYTZiODA4MWZjM2MzY2MxYTY3ZWIyM2FlZTU3YyBsZWdhY3ktdHJ1bmsKKzI2MjY1IDlkMjZkNTY4ZGJiMzA3NjNjNWVlMmFiMzA0YjNhMmNhYWFkOTFiMWQgcmVsZWFzZTIxLW1haW50CisyNjI2NiBiNjA4NDQ1YjI1ZjAyOWIyZGFkYzg1ZmYwYWYzMWNlYjcyM2YzY2EwIHJlbGVhc2UyMS1tYWludAorMjYyNjcgYWM5OWJlZDI0YjdkMTA2Y2E1MWI2MDQ0YzUwZDdjYTE2OTU4NjBmZCByZWxlYXNlMjEtbWFpbnQKKzI2MjY3IDdkMTUwNGM4MGZhMDcyYjRiYTg2ZWRkYTEzYTEzYjBhMDVhZThlYWIgcmVsZWFzZTIxLW1haW50CisyNjI2OSA1YWIzZThmMTRkNDY2MzlkNmM0MGM5Y2I2MmQwZDdjZjhiODc2ODczIHJlbGVhc2UyMi1tYWludAorMjYyNjkgMzk0NzkwMzE2YWEzODBkMjJlNGQ2NzBiYzY5YTYzOWU3MjVmMDMwMCByZWxlYXNlMjItbWFpbnQKKzI2MjcxIDk5MDAxZmQ5NWU0OGRiODE1YThmZDAxYjNkZDAxNzc5ZTFlZTc4ZTUgbGVnYWN5LXRydW5rCisyNjI3MiAwNzczZDIzMjI0ZDJhYTZiNTUwNTFjZmQwNzY5YWVmM2FjNmZkZjdmIGxlZ2FjeS10cnVuaworMjYyNzMgYzI2YWYxYWJjMmM2MjEzMDEyYWQ1OTBmOTQxZDlhODllYWRmYTE5MCBsZWdhY3ktdHJ1bmsKKzI2Mjc0IDEyMTMzYzhiODNjZjVmNGVlMzI0Y2U3NDNiNDBiZmRhYjQ5NWVjZWUgcmVsZWFzZTIyLW1haW50CisyNjI3NSA3MjgxYTA2ZTNiNTdmM2JlYmM1NzUyMTQxZWIwM2FjZjViYjY1MmZhIHJlbGVhc2UyMi1tYWludAorMjYyNzYgZmViNmQxYmNkZDFkNjJlMTg5ZGUyMzA1ZGM1OGUyY2I1NzczYzEwYSBsZWdhY3ktdHJ1bmsKKzI2Mjc3IDkwODFjOTJhMGNjODVlNDRmYzY3ZWMzZmNhNzM0NDliZmZlODc4MWQgcmVsZWFzZTIyLW1haW50CisyNjI3OCA4YTAyYzMzZWQyYzE4YmIzODQwYjA5YjFlMGY1ZTQ3ZmM2NWIwMWUwIGxlZ2FjeS10cnVuaworMjYyNzkgMTVjMThiYzlkNzE1NjVmZTc4Nzk0OGZkZTZhMDFmMGVhMzA2OWNhZSBsZWdhY3ktdHJ1bmsKKzI2MjgwIDU0MjI5YzM1MTMyZTc3NTFmMWJkMDY3NDBhMmY5NDBhOGJkZTU2YjMgbGVnYWN5LXRydW5rCisyNjI4MSAyMzkyYWYwNWYwNTI2YjU2MDMwMDBiNzhjZTViOGY2MWI5YWYyYTY2IGxlZ2FjeS10cnVuaworMjYyODIgM2M4NzZmZjI5YTgzZWQ5ZWZkZTQ5MjVhMTg3NzZhYjU1YmJhMGI2NyBsZWdhY3ktdHJ1bmsKKzI2MjgzIDNmMjFlNGUzOTI2ODEwM2YyMTU0MzUwOTIyOWI5NWVmY2NjNWUwODEgbGVnYWN5LXRydW5rCisyNjI4NCBhNWVlYjI4OGUwMjBmNzMwYzkwZDY4NDk4MTE5YTQyZWY1YTNkNDA4IGxlZ2FjeS10cnVuaworMjYyODUgMDc3Y2U4YjVkODNiNTliNzNlNzNjN2FhNWQxMDNiNDUzZjJiZWRhOSBsZWdhY3ktdHJ1bmsKKzI2Mjg2IDRjNDk5NDQ3Y2M0OWY4ODczZWUxODVkYTg4OWE4ZTk0NWRiMjAzODAgcmVsZWFzZTIyLW1haW50CisyNjI4NyAzMzIzZjNmNDIyZGIwOWExMjI0Y2UwYjkzZmVkNzlmNDMzZGU0NDRiIGxlZ2FjeS10cnVuaworMjYyODggZTIzMzgxZmE0NzUwMzgwMmNkMTQzYmYyYWZhOTNjOWU0NDY4ZmFmZCBsZWdhY3ktdHJ1bmsKKzI2Mjg5IGUyZGVjM2NkZjNjMjY4MGZmZDdlODYyZGJjODJiZmExYWNhNjcxNjkgbGVnYWN5LXRydW5rCisyNjI5MCBlMzA3YTk0ZGQ3N2JmZGNkNWI3ZGU3ZGIyNDA1YWFhNTNlODc2OTc2IGxlZ2FjeS10cnVuaworMjYyOTEgMjY3Yjk3MzJiZjQ2NTUwMGIyYTA0ODY5OTA0ZjZmNmYxMTdiZjUxZCBsZWdhY3ktdHJ1bmsKKzI2MjkyIGE5NmU3ZTVmMzQwNzcxNWE3MDIzMmYyYTVmYzc4Y2Y4NmExMTUyYjQgbGVnYWN5LXRydW5rCisyNjI5MyBmNzZjYTlmYmM3YTQ3NjJjNDhkNjMwNzhiYzQ3MzA0MzM2MTQ0NDEzIGxlZ2FjeS10cnVuaworMjYyOTQgMzJhOWIxOWRiYTFkZDY3MDBhZTNiN2U5YmJiYjJhMjZlMjIzMjViZCBsZWdhY3ktdHJ1bmsKKzI2Mjk1IDQ0ZWU2OGFjNWU3Zjk2MWI2ZmMzOTkxNDdmMGMxN2MyNDJlODZiMmUgbGVnYWN5LXRydW5rCisyNjI5NiBkNGY5ZTE5YjhjMGI0Mjc2MGEzODdhN2Y0ODBkNTg5ZjQ3NGQ3MjllIGxlZ2FjeS10cnVuaworMjYyOTcgZjE0ZTQ1NTBiMmYzY2VhOGM5M2I3N2E0NGRjZDdlYmI0MTYwNmNhMSByZWxlYXNlMjItbWFpbnQKKzI2Mjk4IGE1NGIyM2IyZjE3MjBjMzM3MjcxYjg4N2Y5MGRlY2FiZDA1YmViYmUgcmVsZWFzZTIxLW1haW50CisyNjI5OSA1YzU1Mzc3MmNhNTRjM2ZkNGRlOWYwYmI0ZTlhODRjMDg2YTkxNmM3IGxlZ2FjeS10cnVuaworMjYzMDAgNTM0YWFiNWJjY2VhNDViM2M2ZWJmMDY0NDk4MjJlMmQ2NjFkNjMwZiBsZWdhY3ktdHJ1bmsKKzI2MzAxIGFiNjc5OTMxYWUwZDE3MTcwZmJmYTA5MDJhODM4Y2NkZWNjOTY5ZmQgcmVsZWFzZTIyLW1haW50CisyNjMwMiAwNTdjNWQ3OWM5ODhhZGRiNzc5NzZkZDdjOThmNTgzZTdiMzc2YzlkIHJlbGVhc2UyMi1tYWludAorMjYzMDMgOTc5Mzk4MzRhNjczNTIyMDFhNGQyYzVhNTg1OGM3NmE0ODAwZDgwOSBsZWdhY3ktdHJ1bmsKKzI2MzA0IGM4NzUwZDYzZGMzNTU4NDI2NGQzY2Y3MWMxM2RhOGQwMWUwNGQwMzEgbGVnYWN5LXRydW5rCisyNjMwNSA1MGM5YzI0MTQ2M2QyMWFlYWYxNmJlMDgyMDhkYjM2ZmI2YTQyOGUzIGxlZ2FjeS10cnVuaworMjYzMDYgYzA0OTA2ZmExNzhjODhiYjAyNGY0N2E2NDA2N2RmNGM3YTAwN2ZiNiBsZWdhY3ktdHJ1bmsKKzI2MzA3IGNjNTBhMDkxZjU3M2FmZmMzMTEyZGNjZWNmM2RiODQ0ODY0OGJmOTkgbGVnYWN5LXRydW5rCisyNjMwOCAxYThhNzQ5OGIwYmIzNzFhY2UyMmRkZmMyZDNhNTQ0MzU0NmY0MjE0IGxlZ2FjeS10cnVuaworMjYzMDkgNmNiNTI4MjlkYTFhMmFhYzY3Njk2YzBiNDM4YzdjMjBhOTZlZWNiZiBsZWdhY3ktdHJ1bmsKKzI2MzEwIDVmNTQ1NGE0OGI1YWI5NmZlMzkzMzRkMGZkNzY1ZGJjNzJkOGNmNmQgbGVnYWN5LXRydW5rCisyNjMxMSAyMWYzMTkzOWRjMmY3NDhmMmZmOTBlODM4YmYzOWMyNDY4OTlhODA5IGxlZ2FjeS10cnVuaworMjYzMTIgNmEzNjExMmEzZGNlMDY3NWJiMmJhNTY3ZGY1NjRkOWY2OWE5ZjljNCBsZWdhY3ktdHJ1bmsKKzI2MzEzIGM4YzFkYzA3MjdjZDUwY2RlN2RjYzZiM2ExZmY1YjNmZmE0ZTFmNmYgbGVnYWN5LXRydW5rCisyNjMxNCBiZmEzMzBiODUyMDUwN2Q5OTEyN2RmYzgyYjhjYTA3MGYyMzg3NmMzIGxlZ2FjeS10cnVuaworMjYzMTUgOWE1OGU5N2RiNDQ3YzNmNDk2YTk2ODU0MTg5YzlmMDY3MDE2ODc0ZSBsZWdhY3ktdHJ1bmsKKzI2MzE2IGNlYTg1MmY4YWE0NzYzMDM3ZjAxNWUyMzA3OTc5NWM4NmQ2ZDdiYWQgbGVnYWN5LXRydW5rCisyNjMxNyAwM2E4MzM0MGM5MTRhOTJjNmZiNzgzNzFkZThmNTg5NTc2YjBjYTAwIGxlZ2FjeS10cnVuaworMjYzMTggNGY5ZDVlYTRmMzdkOWMxMjFiODBhODU3ZjA2MDBlZGI0OGZjYzlmMSBsZWdhY3ktdHJ1bmsKKzI2MzE5IDVmMmRjZGQwOTMyOTM2YzVkMmJmNGJhNDdmNDEwZmVhYTg5NTk1OWQgbGVnYWN5LXRydW5rCisyNjMyMCBmODE3MDFiNzEyMTY0ZjY2MjJlYThhMDU0YzA2M2NhMDQwMGZhOGNhIGxlZ2FjeS10cnVuaworMjYzMjEgYTBiYjVmYTFhYjJkY2RlMGVmMGMzMzk3ZDI0MTM1NTZjODVmZjE3ZSBsZWdhY3ktdHJ1bmsKKzI2MzIyIDNmMjNkNzJlZjQxMGY2NjZlMDRlOGIyOTAxYWZkZWJiMGIzYTExMjYgbGVnYWN5LXRydW5rCisyNjMyMyA2ZDczMWI2NDY3MGI2OTBkMjRiMzg4NWJlNGVmOWE3ODVlODhkMjljIGxlZ2FjeS10cnVuaworMjYzMjQgOTU2M2M5NjY0YTBiYjhhMmVjZTY4OWYzNWI0YTIwNDAyMjVkYzEwNyBsZWdhY3ktdHJ1bmsKKzI2MzI1IGEwMDQ3M2YzMzE3YjkzZjc1NDg0NWIxNjk0Yzc4NTMzYzUyMzQyMmQgbGVnYWN5LXRydW5rCisyNjMyNiBiMzczMTRmY2JjYzlmNzUyMDc0N2UyZDBhNDg5ZjhlMTFhYWQyODRjIGxlZ2FjeS10cnVuaworMjYzMjcgMDg0YWI3Mzc3N2EzNDE3NGRlN2Q4OTgzMDllNDA3MWNiZmIxYmJjOCBsZWdhY3ktdHJ1bmsKKzI2MzI4IDU0OTViNmRmMGM2NWQzMGY3ZGIzZDUxYzQ4Yzg4MDcyZmU0MDIxNTIgbGVnYWN5LXRydW5rCisyNjMyOSBiYTAyMzZmODQzMThjMjM5ZWQ4M2E4YmY1NmVhOGZkNTNhZDA4YjAxIGxlZ2FjeS10cnVuaworMjYzMzAgMzEwMGJhMjY5MTNjN2Q1YmFhMTEzMWZkYTc0ZjUwYzEzNmQ0MjRlYiBsZWdhY3ktdHJ1bmsKKzI2MzMxIGY5M2EyNmQxYmZhMGU5ZGQ4MzE4MTE4MDZjNDI3NWM3YzFlZTcxOTggbGVnYWN5LXRydW5rCisyNjMzMiA5MGI4MzRjZTU3MDc3ZmVkYTVmYzE5YTA1YzMyODQzMmE3ZDJmOTMwIGxlZ2FjeS10cnVuaworMjYzMzMgOTU4MTlmN2YwYmNkMmNkYzhmZTVjYTI5YjA0MDE1ODU5NjRkZjgyMCBsZWdhY3ktdHJ1bmsKKzI2MzM0IDY5OWNjMTM5ZDJkMjQ4NjZhMTBiYTFhZGM5NjMyY2JlY2UwMzFhNzQgbGVnYWN5LXRydW5rCisyNjMzNSA3Mjc3OGVjOTRkZWM2Njc2MzgyNzMzMTEwMGJiOGYxOGEwM2JjYTU1IGxlZ2FjeS10cnVuaworMjYzMzYgMjllNmNiODMyNDk3YjVmZThhZDJlNzMzNjhiYmRmMDNiOTRiMGJkOSBsZWdhY3ktdHJ1bmsKKzI2MzM3IGE5ZTQwMjRkOGEzNzcwMTk1NjA1MjliYWRlMDU4NzEyZGI1MGJmZTUgbGVnYWN5LXRydW5rCisyNjMzOCA0YmEwOTFjYzcwYjg5YjE2NjQ0YWE3NWUxNzM3ZGZkZDI0ZDQwMGQ2IGxlZ2FjeS10cnVuaworMjYzMzkgMzYzYzdmYzE3NGFjOGJkYjdiODMxOTgxYjg5YzYzYzMyMTM0NzFhMiBsZWdhY3ktdHJ1bmsKKzI2MzQwIDlmZTk0YzAxZWFmMWZmZjUwMDdjMDM4NDI1NWU0MTgxYmQwZGNkNzUgbGVnYWN5LXRydW5rCisyNjM0MSA5Zjk0OTAyN2Q3YmExOTNiZDYxNDNmMmFhNjQ0YjkwMzcwNDY3ZDI4IGxlZ2FjeS10cnVuaworMjYzNDIgZGMxZmIxOWQ5OTBkNjkyZjE3Y2QxZTBjZTc3MTA1Y2MzMmM1NDU4MCBsZWdhY3ktdHJ1bmsKKzI2MzQzIGQwOTc0MGIyZTAzZGUxZjg1Y2EwODQzNTZhNDVkMDFhYzAyZWNjYTQgbGVnYWN5LXRydW5rCisyNjM0NCAxYzI2YTMxMDY2NTMxMGY2M2ZlNTc1Nzg3NzNmZDAzMzFhMmJlMzUyIGxlZ2FjeS10cnVuaworMjYzNDUgYzVhNjdmNTA1MzJlOTE0NzExZDBjZmY1OTdiYTNlYzk0NmI0ZTQwMSBsZWdhY3ktdHJ1bmsKKzI2MzQ2IGQ5ZDgyYzFlZjg2NDUwZGYyMzM1NTAwZTliZTNiYjczYmFiN2M2ZmIgbGVnYWN5LXRydW5rCisyNjM0NyAyOThhN2M1MWQyYzAxZGVkZDVhMDgwYzQ2OWU2YzA3MTRjZWUyMGQ1IGxlZ2FjeS10cnVuaworMjYzNDggYzhkNjFmZjFjMGQ2Yjc0OTU0OTBhYTk5ZDQwM2YyZmQ4ZTMzNDc4ZSBsZWdhY3ktdHJ1bmsKKzI2MzQ5IGJlNTQ0NjVhMzljNDU0YTU4YjJiMTdjMzRlYTliOTVhYjBlNzJkMTcgbGVnYWN5LXRydW5rCisyNjM1MCA2MTY2MTU4M2ExMmZhYjJhZjBjZmQwYzUwODNjM2IzMmFlMTMxYTFlIGxlZ2FjeS10cnVuaworMjYzNTEgMjQ2NjNiODZiOTc1MDVlY2E2MDcyMTkxN2Q0NzNlMmIyMzM5ZDc5YyBsZWdhY3ktdHJ1bmsKKzI2MzUyIDFlMWM3MjE0MzNkOGU0YTNiMDg3NTNjZTQ4MWFlZTViYmY3OTVkMDIgbGVnYWN5LXRydW5rCisyNjM1MyBiZWIzMjE4OTA1YTJmZTliMTRiNjM0ZTIwYjJkOWY5NGEyNDNhMTVhIGxlZ2FjeS10cnVuaworMjYzNTQgMGExOWYwMTZhOTk0NjQ3ZWExMjg5Y2I0MTMyMGMyYmQzYTEwYTU0YSBsZWdhY3ktdHJ1bmsKKzI2MzU1IDE5NmRmYTdlZDM0OGRiZmU5NjE1NzYyNjgxOTQ1ZGIyMTA4NmI5NDEgbGVnYWN5LXRydW5rCisyNjM1NiA2OTBkNzEyZTI4MDdjM2UxYzhjYzUxMjBiN2E1OWIzNDQ3MmJmMjJhIGxlZ2FjeS10cnVuaworMjYzNTcgYjlhZDFlOWY1OWE4NWVhMDc5ZTg3MGU4ZTE2NTY0N2VlNjYxMDA1YSBsZWdhY3ktdHJ1bmsKKzI2MzU4IDJkZDBmODRhZjA3MTY5MjkwMTYxZWEzNTMzNWE0ZjhhMmRjYTU2MGIgbGVnYWN5LXRydW5rCisyNjM1OSBhOWNiOTE5ZTQ5ZTMzMWJiZThiZTkxMWQ2Zjc5Yzc3MGZhNjdjYTdiIGxlZ2FjeS10cnVuaworMjYzNjAgMjVhNmUzOWMzMWEyMDcwZTE1MWZlOGY2YWZlNmRhYjA2NDQxMjY1NSBsZWdhY3ktdHJ1bmsKKzI2MzYxIDBiMWUyMGMzNGM4ZWE2YzE5ZTRjNTMxNTU3NTk5MGI5ZDJkZDhmMTIgbGVnYWN5LXRydW5rCisyNjM2MiBhMDU2MWNmNDkxNjM0ZGIxNGM3NmUzMjM5YWRmNjZhZjBjYzBiNDQxIGxlZ2FjeS10cnVuaworMjYzNjMgOGY5OGNiM2EwZjM2OGNhNDNmMWY1MDMzMGMwNDEwY2E4YTRhMTRhMiBsZWdhY3ktdHJ1bmsKKzI2MzY0IDRmMDYzYjgwMzA4ZDk5MjNkMDVhNjcxZTQ3YTQ5MmQwOTkyYWZlOGUgbGVnYWN5LXRydW5rCisyNjM2NSAxZjdhZjRmYjNhNTE1MmNhMTQ4ZTFlMGFjMmY2NjNlNDg1NmVhMTI4IGxlZ2FjeS10cnVuaworMjYzNjYgZTU0YjljMzg0OGI3YTM0OTIwODBhNDg5ZjM0NWQ3MTczMDQxM2VkZSBsZWdhY3ktdHJ1bmsKKzI2MzY3IDFjZWFmN2Y4MDU1ZDZmMzBhZmE3ZGFmYTVkNzgyYWE3ZWZlOWI0MjYgbGVnYWN5LXRydW5rCisyNjM2OCBkYjAwM2I4YTliYjk1NDYwMDkwOTViMDMwYTc3ZGQxN2ZjNTc5Yzc4IGxlZ2FjeS10cnVuaworMjYzNjkgZDUwNDhmOWI4YjgyNTdiMWMxYmRkY2FiOTE5Y2I1NGFkZjdjMjhiYSBsZWdhY3ktdHJ1bmsKKzI2MzcwIDhiZTYyMzg3NDhjNGQwYWYzY2M3MGEwYmI2NjNhZDcxN2E4NDljNzUgbGVnYWN5LXRydW5rCisyNjM3MSA5MzFkNDQ4ODIwYWVlZjM4ZGI2MjIwM2JiMDliZGVjMTIzNWFmMDA3IGxlZ2FjeS10cnVuaworMjYzNzIgOTg5Mzc3Y2RmMDUzMmQ3Nzc2Y2I2NjdjNmM1NjM3ZmQzYzdhOGU2YiBsZWdhY3ktdHJ1bmsKKzI2MzczIDA4YWIwYTZiZjFlYmIxNGE5MGY0Y2I5MzI4Y2QwZjZkYmI5YTNhM2MgbGVnYWN5LXRydW5rCisyNjM3NCBkNjMyMjk4MzA2OWUwNmFhMjRjOTNkZTk4ZmVjOTU5ODViZTcyYjg2IGxlZ2FjeS10cnVuaworMjYzNzUgM2IwODNiMjYyOTZhOGU4MTI3NjRkMjhlMTM2YjI3YmEyMjU4NjgxNiBsZWdhY3ktdHJ1bmsKKzI2Mzc2IDIwMmFlNWI3NWNjYTI0MzgyNzI0ODczYmZmOTk4ZmEwMjM0NjE0M2QgbGVnYWN5LXRydW5rCisyNjM3NyBiNWY5ZjdhOGY1NjY2ZTQ4OWZiYjU1ZDJiMDM5MmFkMWY5MzZiMzY4IGxlZ2FjeS10cnVuaworMjYzNzggNDQ2MzdiZDdmNTliNjQyOThjMmQyYzI0OTJiNGIzYjU4NWZjMDAxNyBsZWdhY3ktdHJ1bmsKKzI2Mzc5IGIxYWI0YmM1MjI0M2QwMGQ5MDc0MGM4ODIzMmYzMzljNjg0NjFkZWMgbGVnYWN5LXRydW5rCisyNjM4MCBjNjAwM2RlNzM5NzU1N2I5Yzg0ZDM1ZWIzNzBjZjY4Mjc5NzJhYTUzIHJlbGVhc2UyMi1tYWludAorMjYzODEgZTI4NDg2MThiZDE5NTlhZDE0NmE5YjFhMWVmOWU1YThjZWQwOTE0YiBsZWdhY3ktdHJ1bmsKKzI2MzgyIDI0NzE4MzI3MDA5NThmNzRjOTIzNmFhYjM4NjE4ODY4MTViM2Q4ZDYgbGVnYWN5LXRydW5rCisyNjM4MyBlYmUzY2U2Y2JmZDc4NjE1MjI4YmVjY2Y5MGUzYjdlMWM3ODVmN2MwIGxlZ2FjeS10cnVuaworMjYzODQgODk5MDAyYTg4MmEwOGE1MDlmZjZiMmVjMjQzYTFmZTQ3ZDdkMjNlZCBsZWdhY3ktdHJ1bmsKKzI2Mzg1IDRlNThhMzhlM2MwNjFhYWMxZDdkZTdkNGVhZWU4ZWU3ZGJlY2VjMjYgbGVnYWN5LXRydW5rCisyNjM4NiAzZTg5MjU4MmE4NTBiYzhiNjExOGZkN2U3MDgyYmVhNDNjODk3OWQ1IGxlZ2FjeS10cnVuaworMjYzODcgZjNmYzk3ZGE2OGE5ODU4YzNmOWE4ZjkwMzA0ZThlZGZlMTViODRiMyBsZWdhY3ktdHJ1bmsKKzI2Mzg4IDAzYzM5NjQwZDgxYTg5NDJkY2ZjNDVhMTNlYTlhZTdjM2ExZjRkNWEgbGVnYWN5LXRydW5rCisyNjM4OSBhOWE2YzExOGRmYmE3NTQzYjJmNjFlZWY4NzVmYWY3NGM2MTMwMmI3IGxlZ2FjeS10cnVuaworMjYzOTAgODI5MTQ3M2ZkZTNlYjMyYzUxN2MwNzUxNmRmOGE5OWNiMjk2MGRlMyBsZWdhY3ktdHJ1bmsKKzI2MzkxIDE4NjIzNzRhYjI1Mzk5ZDU1Zjg2OTg3NzljNTI3N2JhMzI0Njg3YWIgbGVnYWN5LXRydW5rCisyNjM5MiA1YmRhNTQ2ZWJlMjRhY2Y5ZWFiMTcwYmYyMWM2YzgwNzUxNmFlNWM5IGxlZ2FjeS10cnVuaworMjYzOTMgMWRiM2EwMjk2NWU2NTVlZjRlZjg1MWE1OGZkOGE5NzU5ZDJlODNhZCBsZWdhY3ktdHJ1bmsKKzI2Mzk0IDhiOTI2MGU5MjAxMGI1NGU4YWI1ZThlMzRmZDZlOGI1NDY5YjJmOTQgbGVnYWN5LXRydW5rCisyNjM5NSA1M2JhOTExMGExZjE3Nzk3Yzc1M2VjM2Q3MTE3ZTZiZDQ0MGUzNzQ5IGxlZ2FjeS10cnVuaworMjYzOTYgYjFlZTQzMjFhNTBhN2IyYzU5YmFkMTMwMTQ2OGEzYjI3MDJkNDIzNSBsZWdhY3ktdHJ1bmsKKzI2Mzk3IDhmNjQ1MTgwNTM0ZDUzZjZiZjYzNzM1NTE1OWVhYTM2YWFmNjk1ODQgbGVnYWN5LXRydW5rCisyNjM5OCA4OWRiOWUzZjM1YTc0OGIxOWQ5NWIzNGE5NjUyNWU4ZDUyMDY0YzNhIGxlZ2FjeS10cnVuaworMjYzOTkgOWQzNTI2NjdkNzE1ZWVjMDc4MzQ4YzhkOTU0ZjYwMGE3YWEwYmFkZiBsZWdhY3ktdHJ1bmsKKzI2NDAwIDQ1NDM1MWVmNTBmMWQxOTcwY2U0YjljM2JkMzBjYTU4ODEyM2Q2NTYgbGVnYWN5LXRydW5rCisyNjQwMSBjZDIwMmVmNjcyNmUzNDU3ZjUzYjY1Y2Q1NDcwMzcyYTNhNjFlZjVmIGxlZ2FjeS10cnVuaworMjY0MDIgZjFhYTE4YzhjOTZiODIxYzk1YjIwYjU0ZjIxMDE1N2ZmZDczZTExOCBsZWdhY3ktdHJ1bmsKKzI2NDAzIGUxZjhlMjk1NDc0OTlmNDk3M2ZmOWJhYmRiMzNmM2I4ZmEwYjliMzMgbGVnYWN5LXRydW5rCisyNjQwNCA3ZmVjZDZkNThmMzhlZjE3NGQzYWIzNDI0YmZlOWVjNDM0MmNkNTBlIGxlZ2FjeS10cnVuaworMjY0MDUgMGYzN2NiNWE3ZTllOGNkNWIwODJkN2Y1MTY5NTUwMGQ0MWYzNGU2NyBsZWdhY3ktdHJ1bmsKKzI2NDA2IDhiMTI2OGJjMzcxYTY0ZmY1YmJjZjM3NzljY2MxMGY0MTU5MjUxYzYgbGVnYWN5LXRydW5rCisyNjQwNyA3NjllMGE1MzhlNTQzZDE1Y2Q4Nzg2YmI3YWZjNGZiZmEzNmJhYzc4IGxlZ2FjeS10cnVuaworMjY0MDggNzUxMjg5Y2QxYWI3MTJkOWU3NjJhMTg0OWU4MjUwYjkyZGVmZTU1OSBsZWdhY3ktdHJ1bmsKKzI2NDA5IGMxNjY4YTgxOTI0MmM1MTNhMmFlYzE5M2M0NWRkMmYwODg4ZGEyYjcgbGVnYWN5LXRydW5rCisyNjQxMCA5ZTZmZjc4NzI4MGE5NWRkNGMwOGZkMGFkNTE0ODAwMTZjOWY3NGI3IGxlZ2FjeS10cnVuaworMjY0MTEgOGE4YWZmY2NmNDYzYmI1YzU3ODBkZTcwZjk4OTk5NzM5NzdmOTUyMSBsZWdhY3ktdHJ1bmsKKzI2NDEyIDE5ZWEwMGZlZGEzMzZjZDExZDk5NDY5MTgwMGQ1NWZkYmUwODJkZDMgbGVnYWN5LXRydW5rCisyNjQxMyA4ZWI2ZGQzZDgzMjJlZmJkNGY4YmM0MjJjODgxMjNhMTA5YTA5ZWIxIGxlZ2FjeS10cnVuaworMjY0MTQgMDRmYmY2NWM3M2VmNmZjNmE3ODhmYzQ4OGM3NjVlNzA1NTlhNjEzYSBsZWdhY3ktdHJ1bmsKKzI2NDE1IDcxYmU1YmE4OGFhN2E3MmM3YWMwMGU2MjgyOGUzOGE4NzQ5M2VjNDUgbGVnYWN5LXRydW5rCisyNjQxNiAzYWYyY2FkY2NkNmFjNjUyM2U5YjBlOWM2MjM1NmJjN2I2NDY2OWExIGxlZ2FjeS10cnVuaworMjY0MTcgYTEzNTk4MGRkNGU5YjZiOWJmMTJlYmUzZDE5MjcwN2ExODhjNjBkOCBsZWdhY3ktdHJ1bmsKKzI2NDE4IDZiZTI4M2QxNDhmN2UzODgyNTU5NDk0NDE1OTRkMzBmOTFhNmQ0ZGMgbGVnYWN5LXRydW5rCisyNjQxOSA4MDA1ZmMxYWVmMzljOGYwNjI0ZTQxNWM2OTEyZjcwZWFmNWIyOWQ2IGxlZ2FjeS10cnVuaworMjY0MjAgNGMwYWI1ZDZhNjNjNDFlYWMyOWNhMjg3YzdkN2M2MTUyNjI2NWU2MiBsZWdhY3ktdHJ1bmsKKzI2NDIxIGMzMjhkNzI1MGU5MjY2MDAzNmM5YmE4YWQ1Y2M0ZGYwMmEzNGI2YjkgcmVsZWFzZTIyLW1haW50CisyNjQyMiBkYmQwZWU3ZjYwZTA1Njk3MGE2YTA3MzFiNGQ1OTBhMjM3OGZiNTgzIGxlZ2FjeS10cnVuaworMjY0MjMgYzM3MWJiM2U4NTI5MWI5ZTMzNGZjNTM0NzVjNGY2ZDI0MjlhZGVlZCBsZWdhY3ktdHJ1bmsKKzI2NDI0IDUzMGFiYTMxMTZhNDBkMDg1ZTRhMTA4OTc5ZjYwM2UyOWJlYmYzZjggbGVnYWN5LXRydW5rCisyNjQyNSBkYzBjMTIxM2M3OWFiZGRhMDkzNWIzODA2NGEzZmYyMGFmM2MyYmI4IGxlZ2FjeS10cnVuaworMjY0MjYgOTM4ZmYzY2I1MWMyNmJmZTQxOWViNjVjZWI3YWVjZTM3YjlkNjE4ZiBsZWdhY3ktdHJ1bmsKKzI2NDI3IDAzZmYzNTY5YmEwNGNhZjZjNTY4MWQyODBlZTZhZGRkM2YwYzE2OWQgbGVnYWN5LXRydW5rCisyNjQyOCBmMzY3NzQxNGJjM2RlZjZhMDkwNTVmYzZlYTc0OTRkMmI2MzM2ZWJkIGxlZ2FjeS10cnVuaworMjY0MjkgNDJjOTk3MjhiNmNjYTJmOWVjMmI3ODNlNTNmMTRjYzc2NzI5NDgxMCByZWxlYXNlMjItbWFpbnQKKzI2NDMwIGJiYWIzYTE3YjRjZjRlM2M3Y2QzZjRmNGM1YjcxMmZhNTUwMDkxN2EgbGVnYWN5LXRydW5rCisyNjQzMSA5N2I5NDgwYmJlZWM3NWU2MTU5YzU0MDk3MTM3NzA3MzQ1ZGUzODlhIGxlZ2FjeS10cnVuaworMjY0MzIgZmRhNzNiZmYyMWZmYTU2ZDVhOWVjZTJmMjQ5Y2YxYzhjYmM4Y2IzMiBsZWdhY3ktdHJ1bmsKKzI2NDMzIGQ4OWU1NTczZGQyMzdlMTNiMDYyNDdhZDIwNTNkYjlmM2RkMmMxZTAgbGVnYWN5LXRydW5rCisyNjQzNCAyMWQyNTIwMjg0MDRjODBkZDgyMjllZjkyYzY4ZWQ5YTgyZTAxNGQyIGxlZ2FjeS10cnVuaworMjY0MzUgNGZmOTBjOTljMzAyYWE2YmQ0M2M0ZDIyODFlYzNmZTFmZWZiNzcyMiBsZWdhY3ktdHJ1bmsKKzI2NDM2IGI3ZTg3NzMyZjZhYjk0MTNkNTRmZGNkYWE5ZWM5OWZmMzRiNmUxNjkgbGVnYWN5LXRydW5rCisyNjQzNyAwZmNlNTU2NzVjYmNiMzgwYzI0MmYzOWRlZjczYjhlMzg4MzE0OGE0IGxlZ2FjeS10cnVuaworMjY0MzggM2JkMzM2YjZjYjAzYTY3ZjczZTcxMGVmMTY2NDBhZDMxN2Y1YTNjZSBsZWdhY3ktdHJ1bmsKKzI2NDM5IDRhZGRmNGNlYWZjNTQ3ZjQ3YmZlMDQ4YzU3YjJlYzY4MWVhMjQ1MDQgbGVnYWN5LXRydW5rCisyNjQ0MCA5NjljMWQxMThjOTdkZWJmZDNmYTZhOGZmNmExMmNhYjQ5MmU1MjRhIHJlbGVhc2UyMi1tYWludAorMjY0NDEgMTBlMDEyMmI1ZmVkNWY4OGQ3MjFkYTlkZDlhZDdmNTk1NTc4ZjgxZCByZWxlYXNlMjEtbWFpbnQKKzI2NDQyIDNiZjc2MmUwZTA2ZWQwOWE5MWUzZTI2NjQ0MTQyZmExYjllZWJhM2YgbGVnYWN5LXRydW5rCisyNjQ0MyAzOTNlOWEyMTZhODhiNTAwMTA5ZjAzMTgzNmVhNmNmZjJjZDBkMDdkIGxlZ2FjeS10cnVuaworMjY0NDQgZTQ4NGYzMGRhYzc3YTYxNzFhMjdiOTdlZTM2NTYwMWFhZThjODc5ZiBsZWdhY3ktdHJ1bmsKKzI2NDQ1IDhjM2RkMWMyZWY0NzllZTZlYzRlNjBlMTliYWE4ZWQzNTdlMjcyZGUgbGVnYWN5LXRydW5rCisyNjQ0NiA0MjNhMzY3OGJjN2M3MTc2ZWE2MGFiMWUyMTc3YTliNmZhMTllYWRkIGxlZ2FjeS10cnVuaworMjY0NDcgNGU4MjUyMjg0N2QwZGU4MWUwMDM3NzUwNjNjNWVhYjU5MmQ5NGIxMiBsZWdhY3ktdHJ1bmsKKzI2NDQ4IDA5ZGIzZjVkMGJkMGVhMGJmM2JiMmE1ZjU5YTE2NGQzZGIzZGFmMjIgbGVnYWN5LXRydW5rCisyNjQ0OSA4YzdhMzlkMGZlZmQ4MDFmNmRkYzg5Y2UwZmRmYWExMjZmMzkwY2U3IGxlZ2FjeS10cnVuaworMjY0NTAgMzE0ZjkyYTI0MjkzYjJhYmJjZjA3Y2VhM2U3ZDU3YzQwMTY0NWMxOSBsZWdhY3ktdHJ1bmsKKzI2NDUxIGIzOTU0NzdkODRkMGQ3Njk5NzMwN2Q0ZGE2ODhhMDM3ODNhZTdiZTcgbGVnYWN5LXRydW5rCisyNjQ1MiA5OTc1NzU2MmJmYjk1N2ZkNGI1OTQ5NzlmMzA5ZWNlOTI5NzcyYjhlIGxlZ2FjeS10cnVuaworMjY0NTMgOWViYTYwYWNlMmRhZTBjMjVjNDg5ZWM2ZjVhMDU5ZGMyNmE3NTk1YiBsZWdhY3ktdHJ1bmsKKzI2NDU0IDkxMWY5ZjE0ZTJkNTdlOWI2MjQyYzZhMmFlYzI5NDU2ZDVhZGI3YmMgbGVnYWN5LXRydW5rCisyNjQ1NSAyYTU0Mjc4NDA2MmY1YTkzZDVjM2MwOTA1YzYyOGY5OTMxZTI1NmRmIGxlZ2FjeS10cnVuaworMjY0NTYgYjVhYWUyYTY1ZjZkMTIyYTBmNzM1ZmEyZTVlOWI4NDYyNjNkNzJmMSBsZWdhY3ktdHJ1bmsKKzI2NDU3IGY4Njc5ZjY3OThiZjY3YjkxNGYzNzFlMTc0YzFjYjc2NzE4MDg0ODcgbGVnYWN5LXRydW5rCisyNjQ1OCAwM2FiZmE3ZGI0NDk4YzVjYjljZWRiMGY5ZDU4OWMyZWFlODljMGVkIHJlbGVhc2UyMi1tYWludAorMjY0NTkgNzE3MmNlZjIzYjA1NDllYmZlNjkzZjhiYjlmODZjOWMzNmU1MTdhYyByZWxlYXNlMjEtbWFpbnQKKzI2NDYwIDczODk1Yzk5ZmNjNWJiZWVjNzVlMWM3M2IyYTg1YTk5MDE4NzliZmYgcmVsZWFzZTIxLW1haW50CisyNjQ2MSBiNmY0MzJiMzIxNDM4Y2FjYjU0Y2I4ODc1ZGJjMDNiMGEwYjZmOWNmIHJlbGVhc2UyMi1tYWludAorMjY0NjIgNTY5ZTM4M2JlMGRhOWE2ZDZjN2UzZmM2YzY5ZmZhMzcwNjhhZWQxNSBsZWdhY3ktdHJ1bmsKKzI2NDYzIGQ0NDU0NWM0YTQ3YTgyZjMyMGU1MDViMDIyNmFjYjE4YzQ2OTdjNjkgbGVnYWN5LXRydW5rCisyNjQ2NCBkMjdlOTdiOGE4NjZlNmRjNGZiY2NjMjhjNTA2YzZjNTQ1NjFkNzk1IHJlbGVhc2UyMi1tYWludAorMjY0NjUgMjZlM2ZlOGE4OGY1N2I3MWNjYWZiYzJkYTIzOGU3MWQ4ZmQzNmRmZiBsZWdhY3ktdHJ1bmsKKzI2NDY2IDAxZjczZmQ2NjMxMDlmYjEyMjQzZDhiZTU1OWVjZjMxNjAxODNjNGEgcmVsZWFzZTIyLW1haW50CisyNjQ2NyA5NzgzNmY2MTkzZGMzMDcxNWI4MjBmYzExMGI4ZjBkYmM2YjE0Mzc1IHJlbGVhc2UyMS1tYWludAorMjY0NjggZjVlZGY3MDI1MjY3Njg1ZTMxNzI5NTJlYmI2Y2VmYWYxZjc2NGVjNyByZWxlYXNlMjEtbWFpbnQKKzI2NDY5IGRmNDVhZGY3N2QzNmRmZGU0ZDhiNjE0ZmMyY2M3MzQ2MmZlZDc4NTIgcmVsZWFzZTIyLW1haW50CisyNjQ3MCA3YjAwZGFiOTg4Y2Y0NDA3ODZlMzljYTU4OTk1Nzg1MGVjMGE3N2UzIGxlZ2FjeS10cnVuaworMjY0NzEgMmQzYTJiZWIzZDRkNzAyOWYzZWU5OGQ1N2VkNWI3MzljNDQ2YjY2ZSByZWxlYXNlMjItbWFpbnQKKzI2NDcyIDQwNzllOWMyM2ZjMTcyNzYzYmViNmQ4ZjlmNGJmOWExN2RhYzgzMzAgbGVnYWN5LXRydW5rCisyNjQ3MyBhM2M5ODJkNDEyYjQ2ZTFjZjk0Y2Y0NGM3MjMzMzhkNzBmOWRlNGZhIGxlZ2FjeS10cnVuaworMjY0NzQgZTc1MTNlMTQyYzcwZWRmYmM5MjM0MTA2OWZiMjQ4Njc1YzY3MDFlYSBsZWdhY3ktdHJ1bmsKKzI2NDc1IDFkYTAyYmJhNjI3NjczYWNmYzQzYjAzY2I0MWUwMmNkYjM3ZjI1MTggbGVnYWN5LXRydW5rCisyNjQ3NiA3MTIxZDdkNTcyZDAxYWYzMGI2MjI2ZDg1MGZhNzcxZTVjYmJlMTFhIGxlZ2FjeS10cnVuaworMjY0NzcgZmRlODc4YmMwZTNiZTVlNDk4MTc4ZjE1YzJkYWZkMGVkMmQ3ZDU5NSBsZWdhY3ktdHJ1bmsKKzI2NDc4IDBmZmI1NGIxYzNlYTVjYTFlODg3OTRjZjE5ZWQzMTJiYzg1ODI3NTIgbGVnYWN5LXRydW5rCisyNjQ3OSBmOTE3ZTdhNmU5MTFiNzcxZTFkNjE0NThkZGYzN2JhZmEyZTUwZmEzIGxlZ2FjeS10cnVuaworMjY0ODAgZmE0MWYyNDEwNjg4NzMxMmI1ZjYyMmNiMTI5OTRmMTYzNWRlY2FkYiBsZWdhY3ktdHJ1bmsKKzI2NDgxIDczN2Y0NDU4ZTVkZTAxMWUwM2MzMTllMDhlMzk1MzY4ZmU3OTY3YjggcmVsZWFzZTIyLW1haW50CisyNjQ4MiBiMGU1OWYxZTQ5NWFjNmRiOTU2NmY4ODdkYzgyMmEzNzI1N2ZmNDRiIHJlbGVhc2UyMi1tYWludAorMjY0ODMgNjI3YjdjYTUyMjFhYzBjOTFlYTE5MzkxYTcyM2ZlZThiYzUwY2VhYiBsZWdhY3ktdHJ1bmsKKzI2NDg0IDIyZGEyNjA4Mjg1Y2ZlNzdhNGVhYmM2NjVmY2U3YjUyMzU2NTAzYTUgcmVsZWFzZTIyLW1haW50CisyNjQ4NSAwYmEyMzM0MWU1Y2ZmNGU4ZTVlZDFiNzY3NmZlNTc2OWY3YWFlNzg1IHJlbGVhc2UyMi1tYWludAorMjY0ODYgOTA4MDVmY2M2YzcwMjU3M2YxMThlYjk5ZGJjN2RhMjZkZDM3NTFmNCByZWxlYXNlMjItbWFpbnQKKzI2NDg3IDM2OGU4MDgxZTczYzRkYmQyODA0M2ViZTFjOGJhYTNlNjc4ZGYxY2IgcmVsZWFzZTIyLW1haW50CisyNjQ4OCA3MDY1MGFlMWEyY2YwMDIzZjE3MzgxYmUyOGRlZmI3ODQxMDQyMGU4IGxlZ2FjeS10cnVuaworMjY0ODkgNWFhZjNkN2I4ZDhjMDg5M2IxNTBlZjBkYjc3OWVkMGZiZTQ0ODZkZiBsZWdhY3ktdHJ1bmsKKzI2NDkwIGFkNDRiZjExNzllYjI1NGI1Y2E5N2M3NTVmY2NiZmUyYmM1NTlhY2QgcmVsZWFzZTIyLW1haW50CisyNjQ5MSBkZTA5Yjg3NGYwN2E2ODhjY2M2NjI3MGI3ODNlN2FiMDVkMjg4MTNjIHJlbGVhc2UyMi1tYWludAorMjY0OTIgOTBhZGJjZjYyMDEzNjFjN2RiYjhjYzgzNTM5YWQ5Nzc1MDJjNDQ1MyByZWxlYXNlMjItbWFpbnQKKzI2NDkzIDY3NTc4YTgzMGQ4MWNhMzkyNmViZTY5NmM5MTllMDM5YjVmMDM1MjggcmVsZWFzZTIyLW1haW50CisyNjQ5NCA2ZGExZjk5MTdlOWIzZTUzMzVmYjU1YWIzODFiZDQyYTU5N2Y3ZjQ4IHJlbGVhc2UyMi1tYWludAorMjY0OTUgNDY5NGEwZGYxNzRlNDhiOTUxYmFlZTdiOWJjNWNjZWQxY2YzMDYzYyByZWxlYXNlMjEtbWFpbnQKKzI2NDk2IGEwNDdmMTZmYjhiM2U3MjIwYzkyMTViNDhkMjc1MjRlNjgxOWU4MDcgcmVsZWFzZTIyLW1haW50CisyNjQ5NyBkOWI3MWY2MjgxNGY4ZDFhNWZlNmQ5NTE5ZjQxYjg5Y2M1Y2EyOWM4IHJlbGVhc2UyMi1tYWludAorMjY0OTggOTFhMjIyOGYzMDIxYjc5MmQwZGQ4ZDIyM2U5NjE0OTViODQyYjA2MiByZWxlYXNlMjItbWFpbnQKKzI2NDk5IGFiNTEyMzI3NGNjZmYzZjZmMGViOTQ3OGUxY2RiY2ZmMjZhYWI4OTUgcmVsZWFzZTIxLW1haW50CisyNjUwMCAyYTExMTQ0ZjhmMGMwNzc4MzY2MTk5OGE0YjY3ZmNjY2MxN2MwNWQ1IHJlbGVhc2UyMi1tYWludAorMjY1MDEgNDZmZmIxNDllYTczYTQ0MTQ0MjY1YjJlZGFhYWY5OTY3ODJjMzE3MSByZWxlYXNlMjItbWFpbnQKKzI2NTAyIDhiYTMwZTJkOGFlNjU2ZDJlMjc2ZDUxYzhjYTc1ZGQ0YzE4ZTI3Y2MgcmVsZWFzZTIxLW1haW50CisyNjUwMyBiN2Y5NTA2ZTYwYzk0ZmUwMWZmNmZkOTZiYjk3MzY1ZTM4ODI3NmZiIHJlbGVhc2UyMi1tYWludAorMjY1MDQgYTU3NWU2ZWU4NWQ5OTY5NTUxNGQxYTkwNTU2NzQwYmEwY2ViYzEzZiByZWxlYXNlMjItbWFpbnQKKzI2NTA1IGEzNmY5ZmIyYzQwNDJhZjI2NDUyODY0NjZlMjc2YTIzNjAyN2UzNTQgcmVsZWFzZTIyLW1haW50CisyNjUwNiAwZWNlZjhiZmJkNGIwMjAwMjU5Nzc0NmNhNGE0OTgxZTdmYzBiYTM1IHJlbGVhc2UyMi1tYWludAorMjY1MDcgNjFjYzA4NzQ1ZDMxNTkzNjBhYjM0YThhZTBjOWZjNmIwODNiZGU2YyByZWxlYXNlMjItbWFpbnQKKzI2NTA4IGRiZjAxM2NjM2RlZWUwYTQ1ZmVjOTQ2ZGYxMzAxYzRkNzYyNGUwODMgcmVsZWFzZTIyLW1haW50CisyNjUwOSBjNDYwOWNhMTdlM2VhMGQwNzg1M2JmYjNjZGYwMjI5NWYxMThjY2QxIHJlbGVhc2UyMi1tYWludAorMjY1MTAgNjJmYWJiZDQ1N2JlNmI0YjQ5Y2JlZGFkZTA4OTEyMTQ5NTQ5YjkxZiByZWxlYXNlMjItbWFpbnQKKzI2NTExIDUyMjU3YWZmZTBjOWVhM2FhNTMyNzc4MDY3OGNmMjIwOTAyYWU5ZjUgcmVsZWFzZTIyLW1haW50CisyNjUxMiBmNzY5YjQ5NThlNjY2MzlmYmY2YzIzN2I2ZTdiYzQzOTFlMDVhNTUwIGxlZ2FjeS10cnVuaworMjY1MTMgOTUwNTI3MTU2NTFiNjAwZDYwNGVmNTk3NGI5NmEwNTliNTFiNTU4YyByZWxlYXNlMjItbWFpbnQKKzI2NTE0IDkzNjg1NjdhMTA0N2NlNzhiOThiOTJlN2FkODY5OTNhZWM5YzVmNTAgcmVsZWFzZTIxLW1haW50CisyNjUxNSAxZWI0MmZjNjhiNWY4NWU4ZjI5Y2FiNmFmMzAzMGZlODYzZmQ4NzhlIGxlZ2FjeS10cnVuaworMjY1MTYgNjFlYjcxODI1MzVlZjA4NTA5Y2UwNmY4ZjhhODkyMjU5ODMzZGM2OCBsZWdhY3ktdHJ1bmsKKzI2NTE3IGFhZTgxNGY5NGJhZGRmYWQwODg5NzJiZTJhZjQxN2U2OWU2Mzc0YjYgbGVnYWN5LXRydW5rCisyNjUxOCA1NGFmNDQ5Njc2MDQ1NWY1NWQxOWVkZGM0NzBmMDk5MDM0ZmJlZTgwIGxlZ2FjeS10cnVuaworMjY1MTkgNGFiMjFlMzU0NDAzZTA1YmZhMWNjNWVkZDU2Nzg0NmJlZWExZmJhOCBsZWdhY3ktdHJ1bmsKKzI2NTIwIGZjYTM3OWMzMDkwNmUxZDZmYWM5YmNiNGE4NWViZDkzMTRiZTJlMDcgbGVnYWN5LXRydW5rCisyNjUyMSBjNTQ4ZTcyNmIzYmM4YmU2YzdkYTBiZWNkNmVhYTg1MjE4NzVhOWRkIGxlZ2FjeS10cnVuaworMjY1MjIgMzYyYzFiODFlZTljNzllYjZlNmFmM2UxNzcwOGJjOWRkY2QzZTc1YiByZWxlYXNlMjEtbWFpbnQKKzI2NTIzIGRkNDE2Mzc0YWIzODYyZTJlYWQ5MGQzY2E2ZmExZmY2NTg4MjEzNjcgcmVsZWFzZTIyLW1haW50CisyNjUyNCA4YzE0NDI0NWIzMTVjZjQ0NGNhZTM3M2EyNWJjOTUyZmU1YmM5OTAxIGxlZ2FjeS10cnVuaworMjY1MjUgODgzZDY5ZGU1NjBiZmY5MTFmNzMyZmI5MDQyODg3YzZiYjQ0NWY2MSByZWxlYXNlMjItbWFpbnQKKzI2NTI2IDE5NWZlNWZmNTBhYjkwMGIxYzI1MmQ0YzM4OGZmZGM4MmFiNzM2OWUgbGVnYWN5LXRydW5rCisyNjUyNyBmMGRjOTdiYjljMGRmYTU3MjZlZWJlMjc5MjUxNmIzNjNmZDBlMDYzIGxlZ2FjeS10cnVuaworMjY1MjggMGFiMjQ1ZGU3ZGRhNzRjZGM0NGQ1MzJjZjZiYjk4YzE4ZmZjMjliZCBsZWdhY3ktdHJ1bmsKKzI2NTI5IGI2M2Y0YTE5ZWJkZDI3Zjg3MjY0YTBjOWU1ZGE1ZTE0ZGNmMTE2NWMgbGVnYWN5LXRydW5rCisyNjUzMCA3MTNmZjg4OWQwOTQ4NTlkNDEzZjRlMWIyMTk0N2NmYzBkZjJlMDYyIGxlZ2FjeS10cnVuaworMjY1MzEgM2EwYTJmMDc3YjhmMDEwOWQ0YjBhMDFiZTQ3MjQ0ODRhMjA2MjE3YSBsZWdhY3ktdHJ1bmsKKzI2NTMyIGQ1Y2U3ZmY1MzFiZDE2YmVkMDE2MWM3YTUzMjZkMTQ4MGY4YTUzZWUgcmVsZWFzZTIyLW1haW50CisyNjUzMyBmMDM1NzIwODQ4NTFiNDllZjhmYTBkOWEwM2QzNGUwZDdjODRiNTBkIGxlZ2FjeS10cnVuaworMjY1MzQgMmZjOTRiYTVkYmZmMTMyOTI3ZGNlN2Y1NTk1NGRhN2RlZGExMzkyYiBsZWdhY3ktdHJ1bmsKKzI2NTM1IGUxZDBkN2M2OTk5YTUxNjczOGQ3NmQ1OTA0NDJlY2RiMzMxMzFiMzYgbGVnYWN5LXRydW5rCisyNjUzNiAxNjMyODc2MWVhYmY1OTRjZDIzYTNiOTQ5NDc2MTUyY2Y1MTljNzYyIGxlZ2FjeS10cnVuaworMjY1MzcgNjhkNzBiNDEwMDllZDk2NDEwY2Y4NDJkZDQ5M2Q2Y2IzZTJmZDE4MiBsZWdhY3ktdHJ1bmsKKzI2NTM4IGVmNzNmZjdhOTg5ZTdmMGU1OTY0OWRlYjgxZjQ0NTJmNGI2OTQ3NzkgbGVnYWN5LXRydW5rCisyNjUzOSA4Y2YxZWY4MTRlZTQzYThiOGNjOGQ1NjE4YWQxMGJmZDA1MGI4NjAyIHJlbGVhc2UyMi1tYWludAorMjY1NDAgNjIxODgyOGIwYTExMmJkZWE4NjZjYjBlNGVhYjI0MWEyYjYyMDA4MyBsZWdhY3ktdHJ1bmsKKzI2NTQxIDFhNjE4MTk2ZTE1YTljNTczMDM1ZGI5NjMzZTliYjQxMWRkMjEwYWYgcmVsZWFzZTIyLW1haW50CisyNjU0MiAxZGY5MzE4YjJiOGUwNmUzZjAxYTlhMjYzY2VkYTViYjI0NTgzYmY4IGxlZ2FjeS10cnVuaworMjY1NDMgMWE3N2FmNjExMTA1OWZiZDc0ZDcyYWE5MmEzMGFhMGI5NjUwNzY1YiBsZWdhY3ktdHJ1bmsKKzI2NTQ0IDk5OGNjNDg0NjRmZWZhYjdmMDJmZjE0NmJhODNiMDBlYzllNjY3YmQgbGVnYWN5LXRydW5rCisyNjU0NSBjMjc3ZWJjM2NlMGYxOTEzYmEyZWMxNTliOGIyODRjNGI1MDFlMmQzIGxlZ2FjeS10cnVuaworMjY1NDYgZTc3OTk5MTY1OTZkMzllNTk2NWNhMTlkMjFmNTBkZGZjNGMyZTQxMCBsZWdhY3ktdHJ1bmsKKzI2NTQ3IGI0MzUyZjVhMzQ1MjIxMjQ2OGQ1OGFiOTZiMzE3ZjZmMjQ3NWNiNmEgbGVnYWN5LXRydW5rCisyNjU0OCA3YzBlOGRiY2Y1N2E1OTRlZWRmYTQxNjhkZjQ1YzQ5MTg0NGJmZTUyIGxlZ2FjeS10cnVuaworMjY1NDkgMmZkNjNkNzVlOTJmOTUyODU0Y2Y5N2VmNGYzOGEyZDI4YzQ4ZjU4YiByZWxlYXNlMjItbWFpbnQKKzI2NTUwIDM3NDM1ZjlmMDRkNjQ1NTJmYTAwNDg2ZWM4MWIzOTJkNzQ3YzNhM2UgcmVsZWFzZTIyLW1haW50CisyNjU1MSAwYmMzYTQxZDRlNDBhMjZiNjcxNzc1ZDExZWI4MzEyMTg0M2JiNWIzIGxlZ2FjeS10cnVuaworMjY1NTIgZDQ3OGY4YWZjMzZkZDUxODRjOGRkNzNmYWI4ZmQ4NGZiN2Q5NDIwNCBsZWdhY3ktdHJ1bmsKKzI2NTUzIGYxZDYxNDIxMjhkM2U0OTM5OTI3YTk5YjgwZmYxYWI3ZDA2OWI4NTggbGVnYWN5LXRydW5rCisyNjU1NCA1MDhmZDk1MmM5ZTlmMjNlNDNlOTA0MDI1Y2U4OTgxYWQ2YTI3MTZkIGxlZ2FjeS10cnVuaworMjY1NTUgMGM4ZTc2MmE2NzdjNDgxY2JlMjkxNThlYzk5NmU3Zjc0N2FiODcyYSByZWxlYXNlMjEtbWFpbnQKKzI2NTU2IGYzYmUwNWU2MmFkMWE4ZDY4ZDA4OGE0ZjcyM2IyZmE2NzJkZTJkODUgbGVnYWN5LXRydW5rCisyNjU1NyA2MGYyNDI1ODljMzI3YTkzOTUwMTFkMTcyZjlkNGRkMjljMjZmMGVjIGxlZ2FjeS10cnVuaworMjY1NTggNjc1OWJlMDg4ZDY4YmRlNjdjYjM0MThmNjg2ZTZlODM3OTAzMzQxZiBsZWdhY3ktdHJ1bmsKKzI2NTU5IDk1MGEyMmViOGNjOGFkZWY1YWQ2OTIyYjY4ZjQ3ZWNmZjE4OGY0MTUgbGVnYWN5LXRydW5rCisyNjU2MCAyMTdlZWE5ZDY2MTU5NTgxMjRiN2ZmNTg5YzRkZjEwNjQ2NjMxZWI1IGxlZ2FjeS10cnVuaworMjY1NjEgZDA3OGY4NDhhYzNiODgwZjVjMWM4NzU5OWU1NDMxNGM5NTU4YjQzMiBsZWdhY3ktdHJ1bmsKKzI2NTYyIGM0MDhlOGIyNjc1YWEyZWFlNzIxMThhYzQxZWMyN2U4OTE0YTkyOGEgbGVnYWN5LXRydW5rCisyNjU2MyA0OWJmNWE4ZmExNTE3ZTFiZjkxYTA1N2E5YWY0NDJmMDhhMjMyOTE0IGxlZ2FjeS10cnVuaworMjY1NjQgNTgzYzIyNmFmZGU2Y2IyMDRhMmJkY2I3YjI2M2Y5MjFjMGFkYTA4OCBsZWdhY3ktdHJ1bmsKKzI2NTY1IDZlNTY4ZWUzMWE5Y2VjMDgzMGE1ZDliMGIwODlmOTAzMDNjZTI3MmUgbGVnYWN5LXRydW5rCisyNjU2NiA4ZjlhZDJjMDVkYWRlYTllNWMzZTQxNGIwNzAwOTdiY2Y5ZTNiMDZkIGxlZ2FjeS10cnVuaworMjY1NjcgZmQ2MDlkMmMxNjY5MWYwMjEwMmY4Nzk1NWY4NWI5ZTgxZTE0MTFlNyBsZWdhY3ktdHJ1bmsKKzI2NTY4IDVjMzAxNzc1NjY1ZDljZmFkODVmOWRmN2MzOTMzZTUxNjE0MTY2YjAgbGVnYWN5LXRydW5rCisyNjU2OSAzODJlMzdhYzM3NGRhMmNhNzU0ZDc2NmJmOWVjYTg4MjViMTIxNTMyIGxlZ2FjeS10cnVuaworMjY1NzAgNmIyYWY2ZGFmZTdjNzNmNTY4YTJmNGMwZGU1OWE1ZTE0NGJjOGRjZCBsZWdhY3ktdHJ1bmsKKzI2NTcxIDBlNDQ5N2ZiMmRlOGQ0YTEwOTQ4MWZmZDIxZmZmYzc3Mzg0MjcwMDEgbGVnYWN5LXRydW5rCisyNjU3MiBlMTZkYmY4NzUzMDM3MzgzYmU4NWMxNjljMWUyNGUxODI0ZTdkMzM0IGxlZ2FjeS10cnVuaworMjY1NzMgZWY5MTlkMjk1YTEyMGQ2NTg1YThiMDQ4OThiMGU3Nzk3YzUwNTYzZSBsZWdhY3ktdHJ1bmsKKzI2NTc0IDE5ZjUzYWE0ZTFlNTE0NzczMjg5NDNiZjk4NWYwODc4YTAxZDYzMjEgbGVnYWN5LXRydW5rCisyNjU3NSBkOGU5ZjZmNTdmMTMzNjUzMzlmYjQ4YzlkNGExMjhmMmM5ZDg0YTVhIHJlbGVhc2UyMi1tYWludAorMjY1NzYgYjE5YTVhZGI2OTkwMDQ5M2E2YjZiYzMwM2YzNzU5ZjA1Nzg3MmExOSByZWxlYXNlMjItbWFpbnQKKzI2NTc3IGJhODg5OTg5YTdlYjAxZmFkZjBhNmRiMTM2OTI5OTExNzRiMzU4YWMgbGVnYWN5LXRydW5rCisyNjU3OCBkNjE0YWU5NDhiYzNhZTNiNWJlYjFmN2YyNmJhNGFjMWY4MjU2MmQxIGxlZ2FjeS10cnVuaworMjY1NzkgYjIzNmQyMDgzMGZlNTNkNThmMjRiZWFjNzliZDUzOGIxZTNhNzQ4YiBsZWdhY3ktdHJ1bmsKKzI2NTgwIGIwOGI1MWRjZTI2NGUzZjY0MTg4ZTc0ZGQ5ZDBiOTViNjg2OTdjYTIgcmVsZWFzZTIyLW1haW50CisyNjU4MSBiZDA4YzY5NTVlOWJkZDE2NDQ1MDlmOGJlYzVkNDUzZWY4MGU1ZTBiIGxlZ2FjeS10cnVuaworMjY1ODIgNTU0ZjIxOTdhN2E3NmM4ZjczOTEzMzVhNGU3YmMxYWMzNDc4YmViNyBsZWdhY3ktdHJ1bmsKKzI2NTgzIGFiNGZhNzhhZmRkZjYxOWEyNmM3ZmNjYmZlZGU2OTI5ZTdkZjM5ZDMgbGVnYWN5LXRydW5rCisyNjU4NCBmNWFlZWFhZjAzOTc0ZTFlN2U1ZWY3YTBiYTYyMjNiODc1ZGViZDFlIGxlZ2FjeS10cnVuaworMjY1ODUgZWQ1ZDc1OTEyZDYwZGE5MWQ1YjkzZjIzNjYxMDE3NGQzZmFhNGRhYSBsZWdhY3ktdHJ1bmsKKzI2NTg2IGU2MzllMzRlZjkwMTFlOGYzYWYzOGI3YzVjMWFlZDExYmRhMDk1NTcgbGVnYWN5LXRydW5rCisyNjU4NyBkZDM1MGI2MzkzMDk5OTQ2OGQzOGQwY2NjMjdlMjFjNmRiZTgxYmM5IHJlbGVhc2UyMi1tYWludAorMjY1ODggYTQzMTg5MjNjN2FhMzM0ODY0ZDFiNmM4YjM1NmNhNTE5NDQzNTczNSBsZWdhY3ktdHJ1bmsKKzI2NTg5IDZkYjZlM2RjODM2NmJlYzY2NjQyNWU2N2NlMDJiN2EzNGQxNDgxNTQgbGVnYWN5LXRydW5rCisyNjU5MCAyYjQ3ZDBkY2ZhNjY2YThkNTgxYzM0YjBhNmFiYjczOGQ1MTU5NWVlIGxlZ2FjeS10cnVuaworMjY1OTEgODYzMTI1NTQ1MzAxNTkzMDZiNGZkYzg0NGVmZDQ2MGNhZGE1MTYzNSBsZWdhY3ktdHJ1bmsKKzI2NTkyIDhiYjkwZThiZjM2M2QzZDBmNGRlZmIxNzMyNzNlNTNlNzZlZDExOGEgcmVsZWFzZTIxLW1haW50CisyNjU5MyBkMzI1NDMzMzdhMjE3NWU1YmRlNzM4OTkzOTBkMWIyMTA0MmExYzg0IHJlbGVhc2UyMS1tYWludAorMjY1OTQgNDBhMTg4MDU1MzY5MWZjYzk5YjNlNWFjYjg0NWMyNTY5MmFhZjI3YiBsZWdhY3ktdHJ1bmsKKzI2NTk1IGFlZjI0OGMxNjQ1YTI0MmJiYzcxNWUwNjMxY2U5MDZhNGUxMGJhZTAgcmVsZWFzZTIxLW1haW50CisyNjU5NiA3NzBjMmQyZjU0NzI5OWJkNTEyMzA2MDE1ZWRjNTEyMjRhNDIwNGQ1IGxlZ2FjeS10cnVuaworMjY1OTcgZjUxZDFhMmQ0YTRhMWZhZDFhYTNiYTQ2ZGU0YjRkYjVjMDQyYTA2NiByZWxlYXNlMjItbWFpbnQKKzI2NTk4IDVkMTM1ZTQxNGM3NjQzMmRkM2UyMTQyMTk5MWMyZjI5ZTE0ZGJkNzkgbGVnYWN5LXRydW5rCisyNjU5OSBkMzI4ZTViYjhhODgwZjY0ODI1OGIyOGIxNTExYTg3ZTU5NDM4YTZiIHJlbGVhc2UyMi1tYWludAorMjY2MDAgZGFiYjBhM2Y0N2E1NTQyMDIwNTFmYjhkNWQ2NzhiZGRiMmIyZDZkYyBsZWdhY3ktdHJ1bmsKKzI2NjAxIDc2YzQ1MDM3MTEzZmRhMzYzYzIwOTVmMmIyZTQ1YzhlZjUwNGRiNzUgbGVnYWN5LXRydW5rCisyNjYwMiAzMDQ1OGExMWI1ZTA5M2FkNTMwYWZmOWU4NDU0M2FlZjg3NzIwMWNkIGxlZ2FjeS10cnVuaworMjY2MDMgNGUyMzRiODcxNzBiMDhlZTI2YTVkYWQ5YTliN2M4YjQ2ZDhiMzIyZSBsZWdhY3ktdHJ1bmsKKzI2NjA0IDI0YjNlYWQ4OWNhZTg3ODM2MGU0M2I5ZTNlMmNlZjNhZTFlZGU2NTIgbGVnYWN5LXRydW5rCisyNjYwNSA4ZmVjMTEwZTlkMDIwODQ5MGRjOTBhZDJmNmZhNzYwNmY3ZjgxYjk5IGxlZ2FjeS10cnVuaworMjY2MDYgZTA0NzBmMmRkNDEwZThiYjc1MjFmNDM4M2VlOGMwMDViZTMxZmY2OCBsZWdhY3ktdHJ1bmsKKzI2NjA3IDVmZGFkYzk0MjY2NTAyZDcyNjczZGQyZjNmZjEyNTQzNDg4MDU3ODMgbGVnYWN5LXRydW5rCisyNjYwOCBiMGI2MzIxMDZmZDc2NWQxY2FiZDljZjgxOGM1NGU2ZTczZDM4NjA3IGxlZ2FjeS10cnVuaworMjY2MDkgOTc2NTBlZGY1OGJiMTdkYjM5NjAyMjVlOGVkMWFmMWJlNjkwZTVmZCBsZWdhY3ktdHJ1bmsKKzI2NjEwIDVlODBhZDM2ZDhmZmJjNDRiMTQyYjdmYjQ4ZjVmMTVhMmU5OWQ2MTkgbGVnYWN5LXRydW5rCisyNjYxMSAyODRjZmNhNzRkZjQwZDYxMzU2ZDQxZmJhMGNiNmYxMDllZjBhY2NiIGxlZ2FjeS10cnVuaworMjY2MTIgNDA1YjI5MWMzMjFkYTBlOTFjMTEzYWZiMDQ5Yzc0YWJjNmZmYjQ0MCBsZWdhY3ktdHJ1bmsKKzI2NjEzIDRmMzM1Y2EzZjExY2MxODQ0MTgxYzMyNmQwMTljNTViZTI2MzRlNDQgbGVnYWN5LXRydW5rCisyNjYxNCA3MmNhMGZkNGRjYTZiZjU2NThhMjBlZjY1MzNjMWRkM2RlMGE0MjlmIGxlZ2FjeS10cnVuaworMjY2MTUgOWIxNzUwMThmZGVmNzg1Y2EyYzlmN2U5NTIwY2I1NjYyMTFlYzQ1MyBsZWdhY3ktdHJ1bmsKKzI2NjE2IDI5MjIxMTMyMTc2OTdjMWIwNzFjYjc5MzRkOGRiNWVmNGQwYjI3MDIgcmVsZWFzZTIxLW1haW50CisyNjYxNyBhODM5YTZiZTg1Nzg4ZDUwMzcwNGFmNGY0NmM3ZjI5NjM1MzRlY2NjIHJlbGVhc2UyMi1tYWludAorMjY2MTggNjY3YjAyNmE4OWQ5MGUyZTQ4YzFmMjAxODkyNjBlM2MwMjY0YWRjNyBsZWdhY3ktdHJ1bmsKKzI2NjE5IDlhOWJlYzEwYWE4YzZjZDI4YjcyOWVjMDAwMGY0ZTYxNjY3MWY3MzggbGVnYWN5LXRydW5rCisyNjYyMCAxY2Y4ODU5MzE2NjkzOTA3MjhiZjc5YjdjMzk2ZGU3MDY3MGJhNTM5IGxlZ2FjeS10cnVuaworMjY2MjEgOWUzNTMyYjc1NDcxZTY4ZjZjY2Y2OTg5NmQ5MTNiZjg3ODVlOTU4ZiBsZWdhY3ktdHJ1bmsKKzI2NjIyIGU1MjQ5YTZjYzFkODdmZTZjM2UzMjk0Njg4NDQ5NzYwM2EwOThjNDAgbGVnYWN5LXRydW5rCisyNjYyMyA3MzUzOTc3ZDZiNjRhY2YyMGJmMjU1ZjdiY2YxZGFjMTQ3MzNlMjVjIGxlZ2FjeS10cnVuaworMjY2MjQgMzc4MTJmMmJhMWFhYmViNThhYjQxODNjZTFlNGUxNzRiNTYwY2EwOCBsZWdhY3ktdHJ1bmsKKzI2NjI1IGI1NzJmN2EwYmI1NjM1YzU2ZjRkZjdkYjk1NGI5ODA3YjM3YmUwMjggbGVnYWN5LXRydW5rCisyNjYyNiA4ZDRiMjVjZWVlZmU5ZjkxOGVjZjVlZjE1N2NhMGVlZDFlYmJmODIwIGxlZ2FjeS10cnVuaworMjY2MjcgN2I2NmNkMTVkY2U5OTAzMWE5N2E0MDZjMTQ0YTdjMjMzNzkzMzZiYSBsZWdhY3ktdHJ1bmsKKzI2NjI4IDIxY2U1ZDVlMGVjNzE0YTk2Y2I2NzI3NTAwMzE3MTdiZjc4Mzg3OTYgbGVnYWN5LXRydW5rCisyNjYyOSA0OTMyMDZiNzAxZGI1MTc0MTljZDJmODdlMzQxNzUwZjRjNmIzNzNmIHJlbGVhc2UyMi1tYWludAorMjY2MzAgZWMyYTU1NTllNzY5NWJiZDZlNzU2ZmU1ZmI2MWViMmVmYWQ2MzY2NCByZWxlYXNlMjItbWFpbnQKKzI2NjMxIGY5NzA1ODhlODliMTBkMzJlZWMwOWQ3MmY5MDdlMTMxY2NjNTNhYjIgbGVnYWN5LXRydW5rCisyNjYzMiA4MDNlNmE2OTUzMDY0YzM5OWUzMzc4YjNhNWEzZmEyYjcyZjU5OWI2IGxlZ2FjeS10cnVuaworMjY2MzMgNTgyODU1ZjZkMzViZWRmYjBiMTY3Y2FjYjJjZGIxZmRhNmFkN2Q5MSBsZWdhY3ktdHJ1bmsKKzI2NjM0IDcwYTA4OTcyMjM5MzViZjIxY2EyZjA0NDA0ODA2ODQ0YzE3ZmEzYjMgbGVnYWN5LXRydW5rCisyNjYzNSAyOWNhOWUxMmJmMTAxOWEyYzliN2U5ZWQwNWE2MTk4YTI3YTVhMDNlIGxlZ2FjeS10cnVuaworMjY2MzYgZDQ3MjkwZGQyZDU3ZTY1MTY1NjE0ZGY0YjFmOWVlOGM4ZTBhNmVkZCBsZWdhY3ktdHJ1bmsKKzI2NjM3IDQ2NDUwZjE3YTA3MDU2MWM2ZjVhYzg3MjEyMGYyNzY0NWZkODhkOTEgbGVnYWN5LXRydW5rCisyNjYzOCAzMTRlMDhlODA5MGZiNGQ5MGE2ZmI0YzViMTE5NTJhMjRmMjVhZjNhIGxlZ2FjeS10cnVuaworMjY2MzkgNWY1Y2VhMjcyYjQ2MjMxYzA4ZTEwZTYyY2MyZTMyN2ZhZGI5NDNmYyBsZWdhY3ktdHJ1bmsKKzI2NjQwIDIwMDU1OWZjYzY2NGY3YjY2YjkzODI4MjUxZTJjZDgxYjIzYTVhN2IgbGVnYWN5LXRydW5rCisyNjY0MSA5ZTIyYTg3MDJkZTJkODRkNDhjZWRhODcwZGRiMGY3MThhNjAzMGQyIGxlZ2FjeS10cnVuaworMjY2NDIgZjVmZDdlMjk1ODk3NTk1Y2YxMjc2ZDM1YmZlMzUyNzMyYjY2YTk2ZSBsZWdhY3ktdHJ1bmsKKzI2NjQzIGE0ZTc1ZDUzZDMyYjRmNTc3YjU2MWFkNWZhMDRhNDZhZWQ5MjZkOTcgbGVnYWN5LXRydW5rCisyNjY0NCAzZWRkZDlkNjhhZjdkYmMwNDVmMWQ2OWE4ZjMwMmI3ZDEyMmIyNWJhIHJlbGVhc2UyMi1tYWludAorMjY2NDUgMDBmNjYzNjBiZTE5ODYwNjUyMzQzYmFiNzllYTE2MjExMjBiZTY2MyBsZWdhY3ktdHJ1bmsKKzI2NjQ2IGFmZTI2MzY3MmZkODRiYWJiZDM1Mzg1YTQyOGNmZDUyMTQxMWZlNzQgbGVnYWN5LXRydW5rCisyNjY0NyBlMTE0NzFhMDYyNmMxMjJkNDVhOTE4ODc0ODI5MWRlYjM3Y2M2MmU5IGxlZ2FjeS10cnVuaworMjY2NDggYjYwYjczZDQxZWI0YTgzZGU0ZjFhZDYxODk4ZjY4ZDE2OWY1YTU1MCBsZWdhY3ktdHJ1bmsKKzI2NjQ5IDQ3MjhiZWRmNGI3ODlhNzA1MThlODEyZmViMzY4MWIxNzEzNmNkNmIgcmVsZWFzZTIyLW1haW50CisyNjY1MCA3YzYwOTRiMThkMTYxMDBhZTlkNDJkNDc4YjQ3M2EzNjFhMTg3YjA4IGxlZ2FjeS10cnVuaworMjY2NTEgNWRkNTJhOWIwNDM4YTg2OTVmYzI4NDM3NGNhNWZhNTJlMGVjZjgwNyByZWxlYXNlMjEtbWFpbnQKKzI2NjUyIDY1NjEwYmM0ZTZhNTczZjA0N2M1NGQyZGQ5OTUwOTExM2Q0NGE4ZDggbGVnYWN5LXRydW5rCisyNjY1MyBiOTNlZDFhNGU0OWYxYTg2OTJlMDE4YTA5ZGE1MTY0M2NkYjE0YWUzIHJlbGVhc2UyMi1tYWludAorMjY2NTQgOGYxYjM3MWZmYmFmNjFkN2FiMjkzZGI0NzA3Mjg1ZDg1Mjk5OTMwZiBsZWdhY3ktdHJ1bmsKKzI2NjU1IGI3MzVlODljY2RhNzRmODBkNzAyZjMzYjJmNmMyN2RhNGRjMWM1NDYgbGVnYWN5LXRydW5rCisyNjY1NiA2ZmE3NmI0ZTU5ZmVmZTgxYzUxMTE5OGM3Zjg5NjVkMDJhMjc5Mzc0IGxlZ2FjeS10cnVuaworMjY2NTcgMTdjYWZlODA1ZjA0NWY2NTJhNjUyMzQ5ZDlmODUzYzg4MDRmY2Y5MCBsZWdhY3ktdHJ1bmsKKzI2NjU4IDA4ZTZmOTRmM2FiMDA3OTg0NjIyNWNjM2M2ZTg4NDMyMDUyOTY0ZjYgbGVnYWN5LXRydW5rCisyNjY1OSA1YTZiZThmYThkZTI0ZTZjN2FmYTM3OTdkNTM3MTU5MGYyZmI0ZGQ4IGxlZ2FjeS10cnVuaworMjY2NjAgMDE0NzhhMTMyOTA4OWI4MDI5Y2UxY2VhODM3YmMzMzRlZjMwOTUwNCBsZWdhY3ktdHJ1bmsKKzI2NjYxIGI1ZjZlOWY2ZTdmNGI3OThkZTA4NjA3NmI1MjAyZTNhOGMwYzY5ZTYgbGVnYWN5LXRydW5rCisyNjY2MiA1NzMyYTljYzkxYzdhOTQyYjBiZmZhMzc4OGQwNmFlYmI3YjliZTgwIGxlZ2FjeS10cnVuaworMjY2NjMgNTNlYmFlNzgyM2Q5NzQyZjM1MTRiY2RkMTg1OThlYWEzNzIwNzFjMCBsZWdhY3ktdHJ1bmsKKzI2NjY0IGEyMTUzMjg1NjUyNDYwMDk2OTYyZDNmYzRmYjFmYjJlNDE3NTE2NzkgbGVnYWN5LXRydW5rCisyNjY2NSAyMGE3YjJjZjNjMWZlMzk1ZTdlNWI3M2E5Y2QyOTE0ZjExNzUwNjM0IGxlZ2FjeS10cnVuaworMjY2NjYgZWY2ZTMxZjBjZWUxMjc2MTZiN2I3MGFlYTQxYmI0Mjc3OTA0ZDA0YiBsZWdhY3ktdHJ1bmsKKzI2NjY3IGNmOTY0MGJlNmY4YTk1MjBlM2YyMWNkMWM2YWFlYzBhZDBjMjc1ZDAgbGVnYWN5LXRydW5rCisyNjY2OCA4YWU3YjQwYWM2ZDA3ZWJlZDY1NzBkNDA1ZGFkNzFlMGVhZWU3NjhmIHJlbGVhc2UyMi1tYWludAorMjY2NjkgZDA1MzJhZTA1ZWQ3MmFjMmM3MWE5M2QyYjA5NDI0OTM1NDE3NzdlZCByZWxlYXNlMjItbWFpbnQKKzI2NjcwIDRjZTYxMTY1MGQwY2U4N2UyMzcwMzAyYjk2YjNlOTU0MWQxYWI4NzggcmVsZWFzZTIyLW1haW50CisyNjY3MSAwMTc2NWQzMDUzMmUyOWQ0NmZiYjk0NGRhYzg0OGVjMDkwMWQwODY5IHJlbGVhc2UyMi1tYWludAorMjY2NzIgYmE2NzIxYWU0YjgwOTMzY2I1YjgyZTAzNWQ3MGI3ODFjNDNkMmY5OSByZWxlYXNlMjEtbWFpbnQKKzI2NjczIDVkYmM3OWVlMDg4NWJkNTYzYzM0ZmIzYWRhMDE0ZTAxMjdlYWUwZWUgcmVsZWFzZTIxLW1haW50CisyNjY3NCAwYjA4OWM4YWMwNzczMDEyZWM2MGY2OTNlY2ZkZjAzNTdlMTU0MjViIHJlbGVhc2UyMi1tYWludAorMjY2NzUgYWFiNDI3M2E3Y2Y3MTY3MzlhZDZhZTY2ZmU2Yjg0NjhjMTdlY2I5NiByZWxlYXNlMjItbWFpbnQKKzI2Njc2IDRjOGY1YTg5MGY5OGJlZWVmMzc2YmFhYmIzYTFiNmZiMTQwOGNjYTAgbGVnYWN5LXRydW5rCisyNjY3NyAxMzM3NjMzMzI3NjczNDAzYWY4YzBjMmYzZjNlN2NhYjdmMjE0ZGRmIGxlZ2FjeS10cnVuaworMjY2NzggYWYxZmY0MWJlNDdiODQ1MzA2YzZlYmY3ZDJmZDQ2NzQxODE0OGFiNCBsZWdhY3ktdHJ1bmsKKzI2Njc5IDQ2Y2ZiODVmMGFhZTc2MDQwN2UzNGIzYjRiNzUyODg0MGY1ZjMyZDYgcmVsZWFzZTIxLW1haW50CisyNjY4MCBhNDQzZTVlNWVjZTdmNjFjMmNhYmNhYTJlNmM3MGI1NDMwNmQ0ODI5IHJlbGVhc2UyMi1tYWludAorMjY2ODEgMjNiZjY4Nzc4YTJhODVjMjkxYWJhZjFmZDE3ZGVjMjk2ZjJhMTliYyBsZWdhY3ktdHJ1bmsKKzI2NjgyIDM4ODQ0OTM3MDk0NjI0N2YwN2U3N2E4N2UzYzliNTI0YjEyN2I5NDAgbGVnYWN5LXRydW5rCisyNjY4MyAxNzRiYTAzYzg5ZmI0ODEzYTRhOGZhY2I0YzhlYWZkMWVmN2NiMzEwIGxlZ2FjeS10cnVuaworMjY2ODQgYWY0OTliNTBhMDk0NjQzYzc3ZjdiNmQxMjc3NzEzMmZlN2M3OGQzNCBsZWdhY3ktdHJ1bmsKKzI2Njg1IDNjN2IyMmQxMTJkMzVlM2NmMjNlZTczYzNlMjk1OTZlZDZiOTNlN2EgcmVsZWFzZTIxLW1haW50CisyNjY4NiAxODA2ZDAyYzA4YzQ0N2E1MmZhYzE5NDY4NTUwOWM0MTUzMDdkYjlhIHJlbGVhc2UyMi1tYWludAorMjY2ODcgNjg5MjZkMGFhZDQwM2JmOGE0ZGFiZGYwMzFjM2I5NGY5MDc1NTdhMyBsZWdhY3ktdHJ1bmsKKzI2Njg4IGJhMjkwMTI4N2NiN2NhODZiZmNkMzE5MTkxMmY4NmIxODE4Y2E0OTMgbGVnYWN5LXRydW5rCisyNjY4OSA4YjU5MjYwMzJiNTZhMjA1YTRjYWVmM2VlMTNmNjNiZjZjZTFkNTJiIHJlbGVhc2UyMi1tYWludAorMjY2OTAgZmZkNWQ4NmU5NmNlYjBmOTI0MTFmYWRjMzc2NWMwZmNlOGVlMzgxYSByZWxlYXNlMjEtbWFpbnQKKzI2NjkxIGMzMzA3N2RjMGM4M2I5YzE5ZGE2Mjc5NDFjMDUwYTllZWNhM2RhZWIgbGVnYWN5LXRydW5rCisyNjY5MiBhYWU2ZGM2YjJhNTg5OGUzMmMxMDBjN2Y0NTgxMDYyYzVmZGNjZmE1IGxlZ2FjeS10cnVuaworMjY2OTMgYzFkMWFlMTVkZTkyYzlhZjU0NjY5ZjJkOTc0YjMwMGU4ZmEzODg2ZSBsZWdhY3ktdHJ1bmsKKzI2Njk0IGNkMDJhMzY3MDRmZWYyM2FiYTUzOTExMTg3OTVmNjU5YzIyMzA3YWQgbGVnYWN5LXRydW5rCisyNjY5NSBjOTE3ZmU5YmM2NTRmZTk2NjA2MTc3MGRjNDBkNGRiNWRjNDg1OWM5IGxlZ2FjeS10cnVuaworMjY2OTYgM2RlYmM4YzM0Y2M5MTBjODIzNzA4ZGRiYzVhZTJiNTBlOThhMGNiZSBsZWdhY3ktdHJ1bmsKKzI2Njk3IDg3Yzk4YWY2MWZjNGFiOTVjZjAzNGZmYmNmZjk2ZGZlZjg5NTkwNjYgcmVsZWFzZTIyLW1haW50CisyNjY5OCA4Mzg0MjdmMGFmMjMyZDE0ZGE0NjllMWUxYTMwMjJmYWY4MzQwNDc5IHJlbGVhc2UyMi1tYWludAorMjY2OTkgOTdlMGI1MDRjMDAwOTg4MWFlYjk0ZWFiYjk1Njg1MjAxMDU3OWU4NSByZWxlYXNlMjEtbWFpbnQKKzI2NzAwIDAyZDUyODNiMWUyMWZjNjJlNmU5YWMxOWI4NmY4NTZhOTA2MWRmYTYgcmVsZWFzZTIxLW1haW50CisyNjcwMSAzNjk3YTMzNjQwMGZhYmMyNjE0MDY0NjZhNjcwMTdlYmEwZjMxYTM4IGxlZ2FjeS10cnVuaworMjY3MDIgNTU0MjNjMWFiY2QxNDlkZTg4MzBlNWZhNjhmN2IzZGJkN2VkMGRlZCByZWxlYXNlMjItbWFpbnQKKzI2NzAzIDEzMDU2YjYyNjdhMjVmMTZlY2EwZWFiZjljNjZhN2M3NmZlZWNhMGYgcmVsZWFzZTIxLW1haW50CisyNjcwNCAwM2IxZTk4OWIxZDk3NzQ1OGQ3N2JjNmQzOTY1MTZiMGRkMDVjZGEwIGxlZ2FjeS10cnVuaworMjY3MDUgYmZmYzcyMzZjNGJhMjg5MTQ3ZGU4ZGQ4YWFiN2EzNzA5YzgxNTRkYiBsZWdhY3ktdHJ1bmsKKzI2NzA2IGQ5M2Y1MzdhNzUyYjg4NmVkZWE2NGFkZmJlMThjZDljODhiNTRkNzMgbGVnYWN5LXRydW5rCisyNjcwNyA4N2M3MTZiMjhhM2VjZjBiMGZiNzBkZjRmN2EyYjE1ODUxMDUyOTFhIGxlZ2FjeS10cnVuaworMjY3MDggMmQyZmFhNTFkY2ZkYWU4Y2UzZTAxMjkwNDQ0ZTI2ODhjNDQwNjIyMiBsZWdhY3ktdHJ1bmsKKzI2NzA5IGFhMDg1NTRkMWE5YjQxYWI5YTIzMjQ3NmMwZDBjYjQ2NjY5YmJjOTcgbGVnYWN5LXRydW5rCisyNjcxMCAxYzljZTM0ZDUyOWRjMzhmMjk2MDdjNGRjYTY3NTkzMGRhNDg5NTgyIHJlbGVhc2UyMi1tYWludAorMjY3MTEgYjQ5MWFiNzg3N2QyZDJhMjVhOTc5MzRiYmIwZjI5MDIwMjQ4NjljOCBsZWdhY3ktdHJ1bmsKKzI2NzEyIDIzOGRmZWM5Yzg5OWU4ZTMzZGM0NzgxMGI1N2M5MTU3OWZjZGEzN2EgcmVsZWFzZTIyLW1haW50CisyNjcxMyA5ODFjNmI2ZmYyZjE3MjAxOWE5ZDQwMDliZWIzYmFjMjlhMjA4ZjNkIHJlbGVhc2UyMS1tYWludAorMjY3MTQgOWM5ZTA3MzU5ZDZlNjQwNDdhOWNmYWVlZTc3NmIyNWNkMDE4MjYyNSByZWxlYXNlMjEtbWFpbnQKKzI2NzE1IGQ0NjZiYzE5ZjczMTJhZTU3NzBiZWExNDIyNWE4NGFlOThmNDJjMGEgbGVnYWN5LXRydW5rCisyNjcxNiA2N2JjYjRmNTIzN2YyNDUyNjA3OWNlNWVmMzIwYWMwZGJmNjI1ZWUzIHJlbGVhc2UyMi1tYWludAorMjY3MTcgMGE0ZDZiMjQwYWIyNDg3N2JkZWU4NDFmMTdiZmNmZWVjYmM5YjYyZiBsZWdhY3ktdHJ1bmsKKzI2NzE4IDA2NmQ4Mjc1YWQ2NDNhYmViZjgzYmQxYWY4M2FjZTg0NGFkMDMyYmYgbGVnYWN5LXRydW5rCisyNjcxOSBmZDY5ZjNlZTc3ZWFjMWY2MmEyNjc0MjEzNDZkZDgzYjgyYmI3ZDYxIHJlbGVhc2UyMi1tYWludAorMjY3MjAgZWNmMDcwYzM0OTk5ZTY1NjM3YWM5YWQzODFlZmNjODA3ZmZiZjBlYyByZWxlYXNlMjItbWFpbnQKKzI2NzIxIDdiZjdjZjNhMzViOTA0NGNkYWMzMGQzZTI4ZGUwY2ZlY2E1YWRjNGQgbGVnYWN5LXRydW5rCisyNjcyMiBhZWU4ZjE2ZjI3NzQxZDE2ODIwODU0MTI4YWFjYzk1YzkwMDQzMTEzIGxlZ2FjeS10cnVuaworMjY3MjMgMThmOGE3YjU2Zjg5MDAyM2ViMGVhZTA5NmJhNjVhOTZkNjhjZTcyNyBsZWdhY3ktdHJ1bmsKKzI2NzI0IDM2ODQwYTk4OTcyMmQ3ZTg0NDNlODZlODlhMmRlMWM4YTJmZDg5ZGIgbGVnYWN5LXRydW5rCisyNjcyNSBiZWMxNTdkYmVlMmUwOGE2YjI1NjYzZGI5OTQ0ZDRjMmEyYzI3Y2U4IGxlZ2FjeS10cnVuaworMjY3MjYgM2VmZDM0ZmU2NjY4MDY0YWE0M2YzYTExOWRiZTdkZGZhZjMxOGZmZCBsZWdhY3ktdHJ1bmsKKzI2NzI3IDNiMzIzZGY5NDViYjZiZjE5Y2ZhZTM2NWJkZDlkZjllNjRkNjM2Y2UgbGVnYWN5LXRydW5rCisyNjcyOCBiMjdmMzZjZjNkM2UwMjNkY2VhYTZlNzcwYWE3Nzg5YzgyZDBjZTdlIGxlZ2FjeS10cnVuaworMjY3MjkgZDNkODU3YTg4MmYwZjgzOWI3NzFiNWM3Y2NkYjBjZjdhZmJiOWM3OSBsZWdhY3ktdHJ1bmsKKzI2NzMwIDdlZDQ5YWYwNDhiYTA5M2U0NzM4NGU3NDY0Zjc2NGY4Y2JjMjk4MGMgbGVnYWN5LXRydW5rCisyNjczMSAxMDViZTkzNmI1YzM2ZDYzNzhlNzE3YTUzMjgwNmNkY2Q4NzFmODllIGxlZ2FjeS10cnVuaworMjY3MzIgYWQ5N2ZjZTlkY2ZlMjVlYzY4YTY0NjNmMGIwZjExNDUyNWIxNGZmZSBsZWdhY3ktdHJ1bmsKKzI2NzMzIGM1Njg4OGQxNzA5ODRlMTMyZjNmZWM4OGJkZjgxODQ5MmJhNzIxYzQgcmVsZWFzZTIxLW1haW50CisyNjczNCA0YWY2NjlmOWM0MmUwODJiMWFlN2VmNTk5YWQyY2Q2NTQzNDJhODIyIGxlZ2FjeS10cnVuaworMjY3MzUgNjc1MWU4YmNmZDI5M2ZjYWIwNzY0MGQzZmUyNDY5MDBhNTNkNzJiNCByZWxlYXNlMjItbWFpbnQKKzI2NzM2IDNiODI1Njc1ZDExOTQ0NzI0YWZhYjg3ZDRiYWIxM2I0MmI2M2Y4MjcgcmVsZWFzZTIyLW1haW50CisyNjczNyBjYmJlMjg5ZTdjMmU5Mjg1ZjM4Y2U0ZmE3MGFjM2ViZDY3MWRiMDg0IGxlZ2FjeS10cnVuaworMjY3MzggMmY3ZDg2OWRhZDRkZjdiYmRmNjcxMTkxZmU2ZGVlYWMwMWFkOTBmZSBsZWdhY3ktdHJ1bmsKKzI2NzM5IDRkNmJlYWI3NjZlMjc0ZDlmOWZlMzIxNjlkYmQyZDEzNTMwMDQ0NTcgbGVnYWN5LXRydW5rCisyNjc0MCBlNWRmMDg2ZWQ0NTUxODUwZWFiOWE5Njk1MjY2OTA3ODRmNjg4MzI1IGxlZ2FjeS10cnVuaworMjY3NDEgOWJlMDFiN2I2YzgwYWJkYzlkMzFkYzAwNjk0M2UyZThmZDM2ZjRiOCBsZWdhY3ktdHJ1bmsKKzI2NzQyIDgyYTg1MGRiN2VjNTc3ZTgyNzAwODA3YTg1N2Y1Y2RlNWM5ZWQwYWMgbGVnYWN5LXRydW5rCisyNjc0MyAxMzAzZGMwNzIzZmNjMTIzYzljZjA1ODY5NDYxZmI3YTU0YWU0ZTc4IGxlZ2FjeS10cnVuaworMjY3NDQgY2E5MDdmMjhlMmQ1NTgyYWNlMTYyY2M3NTg0Mjc1ZmFmNGVjNTUxNyBsZWdhY3ktdHJ1bmsKKzI2NzQ1IDA3MTlhMzc3YTYxNmMxMzlmYmQwZDg3ZjRjMzBjODFhODViZjJiMTYgcmVsZWFzZTIyLW1haW50CisyNjc0NiA0MjI3ODQ3MDkzODBhYTRlYTdmYjRkMzY0YjZmMGI0NWExYzllZTEzIHJlbGVhc2UyMS1tYWludAorMjY3NDcgZjhmZjlmYWI5MmNlZTQ1NGZjOTMxYmFhOWMxNjY3MjEwZWQwYjFmMSBsZWdhY3ktdHJ1bmsKKzI2NzQ4IGE5Yzk4MTgzZmY4N2ZlNjY1OGRkN2Q5ZGMzZDAzNmU5MmM2MTdiMjUgbGVnYWN5LXRydW5rCisyNjc0OSA2YTdiMjZiZGUwZThiOWM4NjFkNGRkY2E0NGNjOTZiNTg0OTIxZmJjIHJlbGVhc2UyMi1tYWludAorMjY3NTAgYzc4YjUyZGFjOTYzMGMwNDNjNmFlZTMzY2UxYmI4YjZhNDdhNDZkNCBsZWdhY3ktdHJ1bmsKKzI2NzUxIDQwZmUxODNhODkyMjAyZDVjNjQ3N2Q0ZWNjMmE5ZTg5NjE2Yjk0ZjYgbGVnYWN5LXRydW5rCisyNjc1MiBmYTczMjBjYjM3ZDk1ZWM0ZmY4NTkwMDc1MDc4YzBhMGZjOWIyZWZhIGxlZ2FjeS10cnVuaworMjY3NTMgMjMwMDczNDE0NTA0MGJjYTgxYWViYmQ4Y2I2ZDgwZTVlNDYzZjY2YyBsZWdhY3ktdHJ1bmsKKzI2NzU0IGRmZDk4ZTk1MjFiMzdlZjkwOWEwN2ViMzIxYzk2ZDRmNDU0NmNiMWEgbGVnYWN5LXRydW5rCisyNjc1NSA0NGZlY2MzMzg4OWQ4YzAwZGQxMWRmZjg4YjRiNGYyOWMxMDAwMmMwIGxlZ2FjeS10cnVuaworMjY3NTYgYmZlOTFlMWUzMWIyMDA2Mjc2OTNjM2YwZDI1OThkNDkxY2E0ODNiOSBsZWdhY3ktdHJ1bmsKKzI2NzU3IDM4ODQxYmVhMjRmZGRkZTk1M2NjYTg3NTBkNzNhOWEzNzJiZGMxZjIgbGVnYWN5LXRydW5rCisyNjc1OCAwZDg3NDAwOTRiZWNhMjZkNzBlZTY1ZGU0MjNjYTEzYTc0NzBhMTVlIGxlZ2FjeS10cnVuaworMjY3NTkgOTU2ZDAzOGIxZGQyNmY1NmMxNTdjNjQwMjczZGYzMDc3YzQzOWFmNiBsZWdhY3ktdHJ1bmsKKzI2NzYwIGE4NjhiYWViZTk1NjQ2NTZlMzU4YmRmYjI1ZDRkYTdjNjdiNWRlMDcgbGVnYWN5LXRydW5rCisyNjc2MSA5MzU0MmVmYWMwNjY2OWJhYWE4NGE3OTA1M2IyOGQzMTdkNDI0MGEzIGxlZ2FjeS10cnVuaworMjY3NjIgNGU3ODE1Yzk1ZDNlYWE5NGQzMDMxZTRiNTk2ZDFkMzNmYTE5ZDU0MSBsZWdhY3ktdHJ1bmsKKzI2NzYzIGI5NzI2YmE3MWFhM2Y1ZTdiMmM3NWI3NDJhZGJiZWFmMzBlZmQwNTEgbGVnYWN5LXRydW5rCisyNjc2NCBjNWMyYjI0ZGI4YTcxMTk1MDg5OWFmMzRkMGM2MTIzMWUyNDU4MmUxIGxlZ2FjeS10cnVuaworMjY3NjUgYjJhYTI2NDhkZjI3YjBhZTZkNjlmYTA2YWRiODU4MTcyMjUwZWZmNSBsZWdhY3ktdHJ1bmsKKzI2NzY2IDk3N2U1MzRmYzZjNzc0MjIwY2QyNThiYmVkNmZhM2UwZjNjYmRjMWMgbGVnYWN5LXRydW5rCisyNjc2NyBlMGVkNjhhZGJhMzMyNzU2ZjQyM2EzMmU2MmRiOGMyNjE1MGZjMWUzIGxlZ2FjeS10cnVuaworMjY3NjggZWUyOTJhNTNlNWZjZTg5NGYwNWE1ZDBhNjRiYzE5Njc4ODIxNTUzMiByZWxlYXNlMjItbWFpbnQKKzI2NzY5IGM1YzRjMTEyMTA4Nzc5N2RlYTEwZjNiNDIxMjk5OTE2N2E3MDdlNTkgbGVnYWN5LXRydW5rCisyNjc3MCAxMGFlMmQ2MTFhZTk0MTdkNjhiYTJlMTgxYzA0ZTZmNDQ4ZWIyMWI3IGxlZ2FjeS10cnVuaworMjY3NzEgNDczMzg1ZmNhMjk5Mjg4M2ZiZTk0NjQ4NWUyOTMxYjEzMjYwODY1ZSBsZWdhY3ktdHJ1bmsKKzI2NzcyIDk0YmY2YWNlZmY3ODhiZWZhZGZiNTg0NDk4OTAxNjBlODJiZjBhODIgbGVnYWN5LXRydW5rCisyNjc3MyAyMzM5ZGRlNmJhYmVjZjhmMTI5MmU0ODRlN2RmMzAyMTVlN2MwZWVlIGxlZ2FjeS10cnVuaworMjY3NzQgNjBkODZiMmVhYjBmYWZhMjI4OTJlNDA4NDNjNWFlMGQ4ZDczNDRjNiBsZWdhY3ktdHJ1bmsKKzI2Nzc1IGU1ZWYxNjZmYzIyZjYyM2U4YzYwZmZjMTZlZTgxNThjMjQzNjMyYjggbGVnYWN5LXRydW5rCisyNjc3NiAyMTFiMTZhYzA2NmE3MDQ4MzQ3MjExMjg3NGI3OGM5N2M2ZWE1N2M5IGxlZ2FjeS10cnVuaworMjY3NzcgNThjYWM3MDYwMmFhNjk5MzU5MDk0NjliN2Q2YjdmOTRmNzg0YTE5YSByZWxlYXNlMjItbWFpbnQKKzI2Nzc4IDM5ZTVjMGQ2YzE4MjJhODBlN2JmOWM4OGI2ZWVhZGVlMDFlN2JjNjMgcmVsZWFzZTIxLW1haW50CisyNjc3OSA4MWQwNjcyMDViODZmMmI3ZDA1MWVlZWIzMDE1YTllZjVmYTdlOGZhIGxlZ2FjeS10cnVuaworMjY3ODAgNGY2N2U1NjY4NmU1OGQ5YWVkY2U2OThjMDg4MTk1YWExNzE3ZmM2NyBsZWdhY3ktdHJ1bmsKKzI2NzgxIDkwZWZhMWNhYjNiYzJjNzU2MWQ4ZDg3MWI5Yzc0YjY0ZGZiZjkyNTIgbGVnYWN5LXRydW5rCisyNjc4MiA2NDJhNDUzZTdhMmU5MjNlMDU5MDBlNjI1OTIxZTg3YzIwZjg3NDY3IGxlZ2FjeS10cnVuaworMjY3ODMgZjM4YmRiMmZjYWUwMmQwNTU3YzdlMmYwMWNlYjg5OTJhNDQ0MTc3NiByZWxlYXNlMjItbWFpbnQKKzI2Nzg0IGMzNzVjNWIyNjYzMTJlMTMwMzU5ODQ0MjI1OTk3OGRjMTRiZTYxOTYgbGVnYWN5LXRydW5rCisyNjc4NSA2Mzg5MGJjMjlhN2NiZjRmODk2NmIyMDgwMTYyOWJhYTdmODdhZTJhIGxlZ2FjeS10cnVuaworMjY3ODYgNjI0MDNiOTNmNDcwYjIyZTA5ODI4YTI4OWY3ZjFjZWQwNGQ2YzFmZSBsZWdhY3ktdHJ1bmsKKzI2Nzg3IDExNTcyODFmMDBhMDJiMTM3N2Y4ZjdkMWViMTgxZDVhZGEyYmNjOTQgbGVnYWN5LXRydW5rCisyNjc4OCBhNGQ2NzViOGI1M2MwMjQwNzkzYmU5MjUyNDU4YjEwMzBhY2U5ZTQxIGxlZ2FjeS10cnVuaworMjY3ODkgOGViYTRjOTJkZjJiNGU0ZTU2MTdlNWRmNDkyOWQ2NWFlYmU2NzNiMiBsZWdhY3ktdHJ1bmsKKzI2NzkwIGUxMWU5NTBhY2MyMzUxNjEwNTFmYmZiODcxOTA3ZGE1MjVjY2QzMjAgcmVsZWFzZTIyLW1haW50CisyNjc5MSAxYmU2ZTc5YjFkNDYwNTA4Mzk2YTUzYjMxNzE0NzIxZmY0ZDAyMmZiIGxlZ2FjeS10cnVuaworMjY3OTIgYWI1MjMxMmY4MmM3OTE4ODY0MGJjMWE5MTg1MjM1NTVjNmYzMmYwOSByZWxlYXNlMjItbWFpbnQKKzI2NzkzIDU2MjQwYmNkYTg4YzkxZjBiMTMxYzlmYzYzNmQ1YzgwYjVjYzNkZjkgbGVnYWN5LXRydW5rCisyNjc5NCBmYjY0ZjIxMTc2YWZhZWFkZTM1NDk5ZDhmNDBhZTI2YmYwNGZkOTQxIGxlZ2FjeS10cnVuaworMjY3OTUgOTkzYzc3NTg3ZGNhMjM5MjMyY2Q3YjFmZmY2NzU1ODRjYzVmNDE0NiBsZWdhY3ktdHJ1bmsKKzI2Nzk2IDI1ZmQ0YThmOWUwOTIyNzRjZDNlMzIzZTliMTJhYWUxNzNhZjhjMjkgbGVnYWN5LXRydW5rCisyNjc5NyBmOWQ1ZTFmYjJhYTY5NzNjYWE0MmY3ZWVkYmI0OWZjZTQ0YTAwYmVkIGxlZ2FjeS10cnVuaworMjY3OTggODI0NjBmZGE0Zjc2NzEwYjYzYTIxMmNhZWE1MDhkZDZlNGJmMjQxOSByZWxlYXNlMjItbWFpbnQKKzI2Nzk5IDA4ZDZjOGI3ODBkOTY5OWQyOThkNjllOGNkYjRjYjViNmVjMzBkZjQgbGVnYWN5LXRydW5rCisyNjgwMCBkZTBhYzAzZTVlNzJkOGM4NTZmZmY4YWNmYzJlMGZlZDRjN2U4YjMzIGxlZ2FjeS10cnVuaworMjY4MDEgMjhmNzFjNGJkMTZiYjU5M2FkNTA0MTQxNTE2MWJmOGI4NTlhYzI0YyByZWxlYXNlMjItbWFpbnQKKzI2ODAyIDZiMmJhM2I3ZWQzMjZiZTRhYTQ4NzkzMGQ4MmVhZjRiMzRmYThiNDkgbGVnYWN5LXRydW5rCisyNjgwMyBiMTU4OTYwNTM5MzMzNGEzMDQwNzBhOWYxNjQyNzFhNmQ4OWQyMzBlIGxlZ2FjeS10cnVuaworMjY4MDQgMDNkZmU3ZDM0M2RiYWMzZjgwYjU4YTk0MTZkYzI5Y2JmODVlZjFiNyByZWxlYXNlMjItbWFpbnQKKzI2ODA1IGYxMjE5MzA1OTIzOWRiMmE0OTQxODgyNWRhNmJkNmZjMWRjMjQwM2YgcmVsZWFzZTIyLW1haW50CisyNjgwNiBkM2YyNzViZDJjNjBhMWQwZjg2MTBkYTNiZDEwMDU4YjM1NjVjZDliIGxlZ2FjeS10cnVuaworMjY4MDcgMTlhOTQ5MjUzNzgxMmZhMjExODIwYzU2ODcxZGI1NDhmMDk4ZWJiZSBsZWdhY3ktdHJ1bmsKKzI2ODA4IDA4Y2NiMGYzZTJkNDk2YzdiZTc2YWIzYjNkMzE2MjZlZWFmNGRkYjIgbGVnYWN5LXRydW5rCisyNjgwOSA0NTNlNTlhNDcyYjIxYTI4ZjliMTQ3MGJjMzIwM2VlMzQ0MzVhNDdmIHJlbGVhc2UyMi1tYWludAorMjY4MTAgNzJmMGMxYTI0NWY4ZGY5NGYwZjE2N2EyZjM5ZDBiMjIzYTJkZjY2OCBsZWdhY3ktdHJ1bmsKKzI2ODExIDFjYzkzZDUwMWI0NWYwNmI4NGJiZWM3Y2ZiNDcwZWFiZGRhYjUxYWUgcmVsZWFzZTIyLW1haW50CisyNjgxMiAyNzNkZDI1MDhjNTdlMWI2NTdkNjZiOGYyYzQ3ODE2NWY5NTM3OTc0IGxlZ2FjeS10cnVuaworMjY4MTMgNmJhZTBjMzFiYmZiMjYxMDRmYTBmZjg4NGNhYmFkNzU3ZjhhMjRkNyBsZWdhY3ktdHJ1bmsKKzI2ODE0IDI0ZTIzMzRlN2JiMmY4YWZiNmYxODViZjdmMzFmODY5YTgxOGZlZTggbGVnYWN5LXRydW5rCisyNjgxNSAyNmI5MjRhZDI2NmNmYjU2YWY3YWE3N2ZiNDEyMTZjOWYzNTBiMjJhIGxlZ2FjeS10cnVuaworMjY4MTYgZjk4YTI3Y2I5MjgyMzk0MmU1MmM2NTQ5YWQ1MTIwMTk2NjRiODAwYiBEU19SUENfQlJBTkNICisyNjgxOCA2OGM3NzZiYTVlYTVhZDFjNWRmYmVkNWM0OWIxODE4YWM1MjA3Y2QyIGxlZ2FjeS10cnVuaworMjY4MTkgNjRlYjExOWI4MTZkNWFkNWY1MTgyYmU5NmI5MDA3ZGYwODkyZDA3ZiByZWxlYXNlMjItbWFpbnQKKzI2ODIwIGRkYjQxZTg3ZDY1MTRmNzYwZTI3ODZlM2Q5ZDY2YThlYzI1NWRjYWQgbGVnYWN5LXRydW5rCisyNjgyMSA4YTQ1YmZkNmI0NzE3YzFiNDI1YTVjOGE0NTgzODM1N2UyMzM5ZTlkIGxlZ2FjeS10cnVuaworMjY4MjIgN2U1MTQxYjY4YzVmMWQwNGRjMGI3NzQxMDdkZjdlOTlmYWRhYzJlZSBsZWdhY3ktdHJ1bmsKKzI2ODIzIGQ5YmI0ZWMzZTc1YjMyNzg4MmIwMDIwMzk3YzJiZTNmZjZlNWYxNzAgbGVnYWN5LXRydW5rCisyNjgyNCBlNDNhYWZmZmIwM2M2NzZmMWE2MWE5ZWE0OGRlZmI3NTk2ZWVmOWJhIHJlbGVhc2UyMi1tYWludAorMjY4MjUgNjEzNDhhYTJmZjk4NmQ1YmZkNmNmN2Q5OTg3N2M5ZWI5YmMzNmZkZiBsZWdhY3ktdHJ1bmsKKzI2ODI2IDgxODM4NTlkY2ZjZDIxNTE1NWNmZTgxMmQxMGNkOTUyZGQzZjMxYTEgcmVsZWFzZTIyLW1haW50CisyNjgyNyBiZTU0YmE0YjJjNDQwZThlYzk3MjMxMzZiYmRjYzk3YThhNTAzYjVkIGxlZ2FjeS10cnVuaworMjY4MjggYzI1NTZlMzBmY2I0ODJhZGQwZWEyMDFkYzRiMDdjYzkxOTUwNTExMCByZWxlYXNlMjItbWFpbnQKKzI2ODI5IGFiMjM0MTA3ZTI2NzMyN2M1MzE2OWJkZmU2OTJhYzczZTkyYjY2M2MgbGVnYWN5LXRydW5rCisyNjgzMCAzYWJmZjExZjgyYjM1Mzc1NjliODBkMmNhMTc1N2ZkZmE3MWE4MDI5IHJlbGVhc2UyMi1tYWludAorMjY4MzEgMTBjODIwMDgzYzJkYzE2NDRjODJkMGM4ODE0MzExNWQwMjYyZDhkZiByZWxlYXNlMjItbWFpbnQKKzI2ODMyIDEyYjQ2NTc1ODcyOWRhMjkwMDQ0YzdkOTRkYWUyZDY4MTZkZGUwNTkgbGVnYWN5LXRydW5rCisyNjgzMyBiZDFjNGI2NWRiNzkxMDRkNDVlZmM3ZmIxZmJmODI0NzkyMTZiYzZkIGxlZ2FjeS10cnVuaworMjY4MzQgYTIxOThmNzJkNWViZWEwMDdmM2RmNWYxZWY1YTdkM2UyNDhjNWYzMiBsZWdhY3ktdHJ1bmsKKzI2ODM1IGJlMGJjNTVlY2Y0YTBmNjE4ZmIwODViODNmNDcxNDQ3NDVjNmZmZmYgbGVnYWN5LXRydW5rCisyNjgzNiAwNzdkNDRiMDQwNWJlNmIyMGNjODUzM2VmY2M2NWMxMjE2YzY3MDFjIGxlZ2FjeS10cnVuaworMjY4MzcgMzQ0YWU1MzFlNmE3M2UyMjcxMTcxNzliZWEwNGFlMzNkNWEyYzliNCBsZWdhY3ktdHJ1bmsKKzI2ODM4IDdjZTAxODgzNzhlZjNhOGQ4Njc2MWE4YmYxNjUxNTBkNzk4OGU2OTAgbGVnYWN5LXRydW5rCisyNjgzOSA1MGE5N2E5NjI5OTg3YTAyY2I3MTM2OTk5ZjMyMDFjNjUzZWJhZjEyIGxlZ2FjeS10cnVuaworMjY4NDAgZDNlMDI1ZWYxZmIyZGY5OGMwODYxYTE5NzlkZDQwMDQ2YzIwZDdkYiBsZWdhY3ktdHJ1bmsKKzI2ODQxIGQzNWI5ZmZmODFlMDliMjVmZTM3YjVkNTllOTNlOWNjZDgzZTM2MjUgbGVnYWN5LXRydW5rCisyNjg0MiA3MzI0OWFiZWQ2ODM3NjBkYjIxOGI2ZDYyZGYyNmZhOGE1ODA5YzA1IGxlZ2FjeS10cnVuaworMjY4NDMgNWQ3M2EyYzdmYWU2M2ZlNjEzMjY2NmJhY2M2YzliNWJlMzNkOTFlNyBsZWdhY3ktdHJ1bmsKKzI2ODQ0IGQ5MTc4NTdmZDMzNGVhOWU4ZDUzOTkwNTRhNWE0MWJjYjcwMTJhZmMgbGVnYWN5LXRydW5rCisyNjg0NSA1YmQzMGEzNjg5N2IxZTQ3NjBkYzQ3OWQwZjExMWIxOTM4ODVlMmIyIGxlZ2FjeS10cnVuaworMjY4NDYgMTc1NjIxMDZjMmEwNDY2ODJkNzI2ODdiYWYzMjA1MjNiMzBjZGQ3YSBsZWdhY3ktdHJ1bmsKKzI2ODQ3IGNkZDVjNzUxODIzY2Q5Mjg4NWU1YTE3NmZhMTE1ZWY5MTQyNmZkYTkgbGVnYWN5LXRydW5rCisyNjg0OCBjNzZlNWMxYzZlNDU0NWI1NzQwYjQ0M2I2YzkxYWZmODU3MmRiYjk4IGxlZ2FjeS10cnVuaworMjY4NDkgYmI1NzkwYzZjZGFhMTQ3Mzc0NWViYWUyNjUxYWI5YzBjMDA5OTAyNyBsZWdhY3ktdHJ1bmsKKzI2ODUwIDliMWUzYjdiZDdmMTI0MjY5YmMzNjhiOTNjMjk2NDM3NzFlYWE4N2QgbGVnYWN5LXRydW5rCisyNjg1MSBiZTY1MzZmMmViZWZiMTYzMzIyNWJiYTY2YjM2MzAxMzdmYTE4NjMzIHJlbGVhc2UyMi1tYWludAorMjY4NTIgMjY3YWU1OWVkZGI0YzRiNWU1NmIxNTY4ZThjNWQ4YTRlZGYwZGVjOCBsZWdhY3ktdHJ1bmsKKzI2ODUzIDY4NGVkZDE2YmJkODFmYzQ4N2IyY2YzODA2YjQwZTJmNWE5MTYxYzYgbGVnYWN5LXRydW5rCisyNjg1NCA4NjczYzJlZGYyMWNiZTQwNGE1NzFjZGI0MzJlMDJhZjMwYTBmY2I0IGxlZ2FjeS10cnVuaworMjY4NTUgYmRhOThiYWM2OTU2MDFjMmJiZGM0N2UyNmUzNWIzOTQzYTY0YjlhNSByZWxlYXNlMjItbWFpbnQKKzI2ODU2IDBjNDJjZWU0NzVkZmYzNWQ2MmIxMTNjNGY0NWJmY2NhZTRhZmI0YzYgcmVsZWFzZTIxLW1haW50CisyNjg1NyA3NmYzNzZiZWE1ZTVhOWE5MTg4NTM2ZDExZDVjNzUxNmM4YzA5ZWU5IGxlZ2FjeS10cnVuaworMjY4NTggNjhlM2YzZGQ0ZDQ4ODQ5MTlkOTVkYzA4ZDQyOTJiZjEzYjU5OWJmMCBsZWdhY3ktdHJ1bmsKKzI2ODU5IGY0MzE4ODg1Y2U5YTYzMjg4YjEwMDllYTA5N2M5YzFmMGNkNjkyOGMgbGVnYWN5LXRydW5rCisyNjg2MCA5ODlhN2FkZjg0ZWZiMzU3YzUxNzVkY2NjMTg0NGRmZjRjZGIxNmI1IGxlZ2FjeS10cnVuaworMjY4NjEgODU2MTVlYTY1YjFiZjgwYWY5NjVjNjc4Njg3NDA2NGQ2ZTViODdmMyBsZWdhY3ktdHJ1bmsKKzI2ODYyIGRiYTRmNTE3NjQ5MmY0NTQxZTU2YjRjZDMwYTMxMjVlYzRiNzI4ZGQgbGVnYWN5LXRydW5rCisyNjg2MyBhZDkwNGRiNzM0NGE5Zjk0MWVhMGZmYTJhMzg1MWNmOWQ2OGJjOGY3IGxlZ2FjeS10cnVuaworMjY4NjQgNjI2ODhkNmFjMzg3OWMwY2Q3ZTVlNGMzM2IwNGVhMzYyZDRlNjcxYiBsZWdhY3ktdHJ1bmsKKzI2ODY1IGRjM2E3Zjk4ZDRlZDEyZjNlODYyYmI1MjJiYWEwMjRhYzExZTdjMjkgbGVnYWN5LXRydW5rCisyNjg2NiA2MzFmOTI4NjY3MzI5YmI2YzZkMjhhZGQxYWZmOWIzMDg2MTRjM2M1IGxlZ2FjeS10cnVuaworMjY4NjcgMTcyYjYyNTBkNTI2MDNiZjc3NThlMzM0YzI3ZGZiMmU2NzY4NWQ0NiBsZWdhY3ktdHJ1bmsKKzI2ODY4IDc2ZWY0Yjk0MmIxMzFiZDg4M2NlMWI1N2M2ZjZiMzAzYjc4M2RmZDkgbGVnYWN5LXRydW5rCisyNjg3MCA3YWI4YzM4MTE3MjM5NzE0ZWU2NWQ5NzI5ODJiY2JkNTI3MDNkOTk2IHJlbGVhc2UyMi1tYWludAorMjY4NzEgYzQ0YjIxZmNkMzhhZDMyZTY3ODUzNGI5YmFmNGY1ZTcyNTFkNjMzMSBsZWdhY3ktdHJ1bmsKKzI2ODcyIGIxZDg2ODM1MjFlYzRmMzc0ZmE5MmE3NzRhYzI5ZWFlODRjNWJlZTAgbGVnYWN5LXRydW5rCisyNjg3MyBmYmEwNTM0N2JiMzBhZDdhYTI2Y2E2YmVhYWI1YmIwYzliYjhmNTBhIGxlZ2FjeS10cnVuaworMjY4NzQgODIzMDljNzMyNWVmZTM2ODZjODFhMDg5NjZmYmQ4YmExNzE4NDU5MSBsZWdhY3ktdHJ1bmsKKzI2ODc1IDdiYzMxYWQ5NDc3Y2Y1ZjY1ZTAyNjY3NDQ2YThmOGU2M2UzNzBmN2QgbGVnYWN5LXRydW5rCisyNjg3NiAyNjc1YjE1OGJmNjc3ZGZkOTMwOWU5ZmI0MjZjNDJlZDViM2U5MjI3IGxlZ2FjeS10cnVuaworMjY4NzcgMzVmMDFiZjM0ZDYwNDM3NmU5MzQyNGVkZTdlODZiNTVlNzhhZjg5OSBsZWdhY3ktdHJ1bmsKKzI2ODc4IDllZWE1ZWRkODU3ZjZhZTRlM2MxMzliMDNjN2Q1NjVlNjdiMTAxNzggbGVnYWN5LXRydW5rCisyNjg3OSBiMzg5OGQzMjY1MTllZTIzOTA2NDZiODU2ODRlN2ZhNjczYjNmNjg5IGxlZ2FjeS10cnVuaworMjY4ODAgYmZlYTE0ZjhmZjM1M2M1ZmYyODAxNWNiMDFiYmM0ZTQ1YWMzNmI2NyBsZWdhY3ktdHJ1bmsKKzI2ODgxIDczYzAxYjFjYmRiMmMwMTYxZTMxZDNkMjRjNWMwNjkxYjRlOGMxMTUgbGVnYWN5LXRydW5rCisyNjg4MiBjMDNlODg5OWQ0YjE5MDQ0MmZkNzcxNzZhZjY5OGM5ZjE2NWFiZjFhIGxlZ2FjeS10cnVuaworMjY4ODMgMDAxNDM4N2ZkNjA0NGQxMTI1NDAzYmZlMjU3ZDA0MmQ5Y2FjMGM0OCBsZWdhY3ktdHJ1bmsKKzI2ODg0IGI4NzI4ZDU4ZTljMzMzZWIwZTg1Njg2MjBiZGViNDMwMzJiZGZkYzUgcmVsZWFzZTIyLW1haW50CisyNjg4NSBhOTBmYWE1Zjk0MTcxYzcwNzExNTNhNzEzOWZjMDNhNjY5YzRhYWI1IGxlZ2FjeS10cnVuaworMjY4ODYgMmFmZjEyZTJhOTRmNWM5ZGUzNTY5NzExN2FmYzEyZjExNzg0MGQwZiBsZWdhY3ktdHJ1bmsKKzI2ODg3IGI2MDJmMjI5MWI1ZmQzZmU0ODdlODViNzAwYWEwYmE1YjAyZTRmYmUgbGVnYWN5LXRydW5rCisyNjg4OCAwZTE3NzFmYzAxMmYyNmRkNzNjNDhhNGY1Zjc4M2YxZWQyYTIyYjY3IGxlZ2FjeS10cnVuaworMjY4ODkgYzc5YjFlNTU1MmU4NDk1OWFmMjRlYWM4OTEwNTFjYjc4YTRlODY1NSBsZWdhY3ktdHJ1bmsKKzI2ODkwIDk4ODI3YTlkNjJjMzJlYWM2Yjk2MThlYjgzNDhmZjM1NGY4NzNlN2YgbGVnYWN5LXRydW5rCisyNjg5MSBiMjFiNjk2NTg2NjI4OWIwZDMzOTEwZmMxNjQ4NTJmN2E0YmE3OTAzIGxlZ2FjeS10cnVuaworMjY4OTIgOGE0OWExM2ZiMjhkZjcwZTMzNDdiNzNiNzdlZTBjOGY1NGM5YWM1YSBsZWdhY3ktdHJ1bmsKKzI2ODkzIGNlY2EyODE2NzgwMDhhM2QxMzRkZDEzNWVmYjYwNWZjMmJiZDJiODcgcmVsZWFzZTIyLW1haW50CisyNjg5NCBlY2VmNjVlNTdjYzZiZDk5YjRmY2UwMmY5MWRhOGYwYjgyNzcxMDFhIGxlZ2FjeS10cnVuaworMjY4OTUgYTk4ZTkzZWFmZWY3ZTAzZWUwYzMzYTNmMGYzNTZiOTRlMmMyOWJjMyBsZWdhY3ktdHJ1bmsKKzI2ODk2IDI2MDBjZjdkMzNhZjgyM2NiNmI5NDNjMmY1NmNkZDVjY2NiMzllNWUgbGVnYWN5LXRydW5rCisyNjg5NyBhNGVmYjU5Zjg3NjcxODMyNTQwZDM2M2QzZGNkNjFmOGJiN2E1ODBlIGxlZ2FjeS10cnVuaworMjY4OTggNzBiNWUxMTFjY2IwOTAyZjcyMGI2MTllMGMxNzRlNzJkMjlhY2UzNyBsZWdhY3ktdHJ1bmsKKzI2ODk5IDhkOTQ2YzkzMzllODIxMDFlYmFiN2VhNzE4MzkyZWExYTNkMTZjOGEgbGVnYWN5LXRydW5rCisyNjkwMCAwYTRjOTI1NTlhMGI0MTY2NGYyMWFjMDRlNzJjNTExZGQzNDQyNTdjIGxlZ2FjeS10cnVuaworMjY5MDEgZmE4ZmUyZTk4MDYyNWFlNjhiYjVkM2Y0M2M0N2U5Y2YwNWEyNjY4ZiBsZWdhY3ktdHJ1bmsKKzI2OTAyIDllNjdhMGQ1NzA1ZmJhYjlmYjZhYWYzYWMyNjk2YmNmODcxNzI0MDMgbGVnYWN5LXRydW5rCisyNjkwMyBiNDkwZmYxNzA2ZDk2NDYyZjMyOWQ5MTRmMTE3M2EyNTkxYTRmZGFlIGxlZ2FjeS10cnVuaworMjY5MDQgYmQ1ODk0NmFhNTIxYjJlY2Y3ZWU0ZjU1ZDM5ODEyMmY3MWEzZTQ2NiBsZWdhY3ktdHJ1bmsKKzI2OTA1IGY2ZGVkNmVmYWJjZjMwOTAyNjBiM2VkOTIxNzBlNzJjMjM5MGNkNTQgbGVnYWN5LXRydW5rCisyNjkwNiAyMjBiOThmMDY0MTU2NGEwNTk3YjQ2ODRjM2I3YjJkMTEyNTA1Yjg5IGxlZ2FjeS10cnVuaworMjY5MDcgNDBhMDMxMTU1ODk3ZjliZWI3MmZmN2QwYThmM2UyNjkxY2ZiYzFlNSBsZWdhY3ktdHJ1bmsKKzI2OTA4IDFiZjM0ZjQzOTRjNTE3ZTQzNDQ2MDEzMjU4NzM0YTBiZjY0OTkwMDMgbGVnYWN5LXRydW5rCisyNjkwOSBjZTFkYTJmOTc4MDc2ZTRjNjliMjljNDE4NzFhOGRmYTExNWIzZmVjIHJlbGVhc2UyMi1tYWludAorMjY5MTAgODg5MDM4NTNmMTgwZWU2YmIyZTBjMWU4MDg3Y2JkMjg4YjAyNDI0ZiBsZWdhY3ktdHJ1bmsKKzI2OTExIGI3NGFmZGQwNzJlYjBhMTg5OWZjZDRmMTY2NWY4YTgyMGZhOGI5YTEgbGVnYWN5LXRydW5rCisyNjkxMiAzMDNkODFlMTVlNzBjM2EyNDI3YTcyYWU2ODJlZjA3Njk1YmMyOGY3IGxlZ2FjeS10cnVuaworMjY5MTMgNDQ2YjJmMmMwMWQ4YWFjYTMyNTdhYjNjMWMyYzEzODUzZjQ4YWY0YyBsZWdhY3ktdHJ1bmsKKzI2OTE0IGIzYzUwZjY5ZjM4YmYyMzhiZGQ1NjBmN2QxYWU1ODhlNThhM2QyNTAgbGVnYWN5LXRydW5rCisyNjkxNSBhNjcyNDhmZDIzNzAxMGY4MmE1NzM0ZjllN2YxODkxMTI1YjlkZmQwIGxlZ2FjeS10cnVuaworMjY5MTYgM2IyYTdlZTA4NjY3NjFkZDg0MDNkZTg3ZThkNTU0NmI4MjA1NzQ4YyBsZWdhY3ktdHJ1bmsKKzI2OTE3IDNhZWNkYmE0NTUyODVhMGU2ZGI0NzQ0ZmM0YjQ3YWEzYjg3ZGJiNzcgbGVnYWN5LXRydW5rCisyNjkxOCBlNTI0MmY1OGE1YjZmOTBkODZkY2RhNzMwMjQxMDE0ZDQzYzliYzExIGxlZ2FjeS10cnVuaworMjY5MTkgYzRmYTM3Zjg5NzgzOTkzMjFlNDg2NjJhOTk0NjBlM2I3N2E3NDM1ZiBsZWdhY3ktdHJ1bmsKKzI2OTIwIGZlY2NlMDE3MzI1NGY3ZWEyZGNlYTJhYTgzNzUwMjBmOTFmNzNkYzcgbGVnYWN5LXRydW5rCisyNjkyMSBhMzk5ZDhiMTNjMmY0NThiNDk1MTBhZDgwNTQ2ZjdlMmZhNTViNzBhIGxlZ2FjeS10cnVuaworMjY5MjIgNWQwOTU4OThkYWU2NTliZmQxYWZjN2RmYWJkNTQyOGQ0Mjk1OTliNSByZWxlYXNlMjItbWFpbnQKKzI2OTIzIDUzYzYxNDI4OGVhYjk0ZjZiMGVkZjhhNDU3MDg0YzRhZmE1NDE3MGEgcmVsZWFzZTIxLW1haW50CisyNjkyNCAzYTQ3OTM1NzVlY2Q3ZWY2OGNlZGFlZTI1N2UwOWViOTY2OTk5NjBjIGxlZ2FjeS10cnVuaworMjY5MjUgYzVlOGY4OWZkMzU4NjhkNTFmYzI2NWM0OWE1NDAxZTA0MWE2NmY2MCBsZWdhY3ktdHJ1bmsKKzI2OTI2IGVhY2E2MjdmMmE1NDZjZThlOGZjNTQyZTZmOWI3MjJlZGFjZGYzNDggbGVnYWN5LXRydW5rCisyNjkyNyA1MDg5NjVjZTVlNDcyZjk2ZDkyNmFjNzEyZTBiMjdhYmE0NThjZjFhIGxlZ2FjeS10cnVuaworMjY5MjggM2YyNDJjZGQwOTA0ZWUxMTVjNWY0NjVlNTBiY2ZjZmExMDFhOGMxYiBsZWdhY3ktdHJ1bmsKKzI2OTI5IDFhNjdmYmM3YTA2NjgyMzFiOThlNDkyOTlkNDRkYWIxYThkNzdkM2QgbGVnYWN5LXRydW5rCisyNjkzMCBjYWY2MmVlZjc3MjNlNGM4Nzg0NGZkN2E2MGE1ZDNkNDNiN2EzOGRjIGxlZ2FjeS10cnVuaworMjY5MzEgM2Q4M2ZhYmVmMGE0MGVlNWQxZjBkY2M0OWI3NmEzM2VjMTJlZGVmYSBsZWdhY3ktdHJ1bmsKKzI2OTMyIGFlMGEzYjE0ZDJlOGJlNzgwMTRmZWQ1M2M4ZGUyZGRiYmMwZjRlMzIgbGVnYWN5LXRydW5rCisyNjkzMyBkYzI2MjNlMDI0M2UyOGJmNzdmYWU5Y2VmNTA4MjViMmUxNjE2YzBmIHJlbGVhc2UyMi1tYWludAorMjY5MzQgYjZjMzJiZWI0ZGJjYzljODAyOTA5ZjM3Y2IyNWZhODQ4YTBmMjkwOSBsZWdhY3ktdHJ1bmsKKzI2OTM1IGQ1YWU2ZjcxNGNkNTFjYzdkMmFmOTcyNDYwZmNiZjAwYjFlYzBhNDAgbGVnYWN5LXRydW5rCisyNjkzNiA0ZDg4NGFkODBkZGE1NTRlOTllODc4ODUxMDJjMzQ0ZTEyY2RjNWViIGxlZ2FjeS10cnVuaworMjY5MzcgMGFjNjUzZjQ2OWYwNzBkNDRiYTVhYmI5YmI2NTY2NTQwZmE3MDJhNSByZWxlYXNlMjItbWFpbnQKKzI2OTM4IDY2OGM1Y2E0ZTBkNDhjNjE3MmE1Y2FjMTJhNjkyMWQxNmExNDEzNWQgcmVsZWFzZTIyLW1haW50CisyNjkzOSA5OWRmMjU3MTQyZjY0MzhkYTdlMWM1MTI0YTFlMjM1ZTliMjljZDcwIHJlbGVhc2UyMi1tYWludAorMjY5NDAgN2Q0YzVlNGEwY2NjMjZmOTk4NTBhZTYzY2MyNDc3ZjdhODJhNDMxYyByZWxlYXNlMjItbWFpbnQKKzI2OTQxIDhmN2I3OWNkYTBkMzIxZDdlODNlYWQ2MzUxNjBjZjdmYjBjMzY2YjAgcmVsZWFzZTIyLW1haW50CisyNjk0MiBjMzY3NjA3YmI1ZjdkMjA0ODk4NjViMGE0ODBlMWQ2ZTEyZTQ5YjdiIGxlZ2FjeS10cnVuaworMjY5NDMgNGUzZWE1NWY3ZTExOGNhNmUyN2I4ZTg1YTdkZTIyMzc4MDhhNGIyNyBsZWdhY3ktdHJ1bmsKKzI2OTQ0IDdkYmE4MGQ1OGZmZDY2NDQzNjg5MDljNmYzODY2YzhjMDM4ZGI1YmYgbGVnYWN5LXRydW5rCisyNjk0NSBiZWI1MjcxNThjYmNkZTcyYzE5ODU3ZjQzODA3MmQzMzUxNzMyMDY4IGxlZ2FjeS10cnVuaworMjY5NDYgMTkwYjZiYzE5MTJhNWQ1ZDYyZDc5YmM5OGU1YTYyZjE3NjYwMGE4ZCBsZWdhY3ktdHJ1bmsKKzI2OTQ3IDA2MDJjN2U2Yjk0ZDcyMTNhNGVkMjc3NmFlMGNjOTA2MmMxYTJhMTYgbGVnYWN5LXRydW5rCisyNjk0OCBjNmFmNTc0YmRhMjkyOGYxY2RkMThmMzYzZDkzYzk4N2RmNTMwMGI0IGxlZ2FjeS10cnVuaworMjY5NDkgMGU4MzcwZTcwODg4NjNjZDNkMTU1YTAyNzY3YTZlOGRkMzY1MTJhNSBsZWdhY3ktdHJ1bmsKKzI2OTUwIGZiYTU3ZTQwZjU0N2QwYmQ2Mzk4MWRlYWY1MTkwNDkyYWQ5NGFmM2YgbGVnYWN5LXRydW5rCisyNjk1MSBmMTI0OTExNzE2Mzg2MDM4MjFiOGI4MjZiYzUzYzAxZjMzOGViYWM1IGxlZ2FjeS10cnVuaworMjY5NTIgYWI5NGVjNGFmOThhOTM0ZjZkOWM3ZmU2NGIwMThlMzA4MzUwMTM3ZCBsZWdhY3ktdHJ1bmsKKzI2OTUzIGIwNjU4ZmVlZjkzOWUxNmMyNGExNjViMjI2NjAzNmVlNjFhZGY4ZjggbGVnYWN5LXRydW5rCisyNjk1NCBhNGJiMTgyMTJiNDgwZWI5M2QxYmI3NThhODNkNTJkYjUyOTAzODQyIGxlZ2FjeS10cnVuaworMjY5NTUgYWNiZThlN2Y5OWQ5M2I3ZmYzNGRjMmRmYmU4MjA2NjU0ZmUxYWFhZSBsZWdhY3ktdHJ1bmsKKzI2OTU2IGQ2N2YxZTNhOWYxYWJmNThmMmIzYWUyZGQzM2IzYmEyZThlYzFjMzQgbGVnYWN5LXRydW5rCisyNjk1NyBjODQ0ZmNjM2M5NTIzZmZhN2M3YjM2ODMxNmQwYTFiYjgzYmZkMGZiIGxlZ2FjeS10cnVuaworMjY5NTggYzNhNjdjZTU4MjQ1ZjQyNTRhMDk0Yzg3ZjVmNzQ1OGYyNDczZmMyNCBsZWdhY3ktdHJ1bmsKKzI2OTU5IDQzODBhN2FhMThkYzZjZGVjOGQ4ODk0NThjNWYzZWI5OTdkMWFjYmQgbGVnYWN5LXRydW5rCisyNjk2MCBjMmJjMmVkMTQ1ZjcyN2M1YzFiNDM2YjA5NDQxY2YzZDdmZDg1MjBjIHJlbGVhc2UyMi1tYWludAorMjY5NjEgZWQwMDdlNDdiM2ExMzk5ODkwYjIyYWIxYWYwZTc0ZjI5NzMyYWM1MyBsZWdhY3ktdHJ1bmsKKzI2OTYyIDJiMWQ2MTc4MWQ2Mzc0ODk3MTMyN2I2ZGUwOTFkOWVlMmE2OGQ5ZjAgbGVnYWN5LXRydW5rCisyNjk2MyAxOTdmYjMwNWZjNWNjY2ZjODIzNDJjZDQ3MjEwMzAzYjI5YmMwYzcwIGxlZ2FjeS10cnVuaworMjY5NjQgOTBlZTU1YjlkNzJhZDFjMzdjNzkwYzI5YjAxNWYyYTUwYTZjODM1NyBsZWdhY3ktdHJ1bmsKKzI2OTY1IDdlNDAwNTgzNzU1ZmY0ODA2Y2RkY2UwZDQ1YzMyZjhiZWE3ODM0YjQgbGVnYWN5LXRydW5rCisyNjk2NiBkYmFiYjFmN2VkM2E0NGNiNzhkYjdkNWFhODg3NWE2N2QyODM2OTBkIGxlZ2FjeS10cnVuaworMjY5NjcgY2ZmZDA5MWY1NmQwZWYwNWFhYWFmOGU1ZjdkZGQ1ZWExOTUwMjJiNCBsZWdhY3ktdHJ1bmsKKzI2OTY4IGVmOGQ0NTYwNjdmZDI4Yzc2Mjg1YTI3OWI1MTE3MjYxMTM3NDU1ZDkgcmVsZWFzZTIyLW1haW50CisyNjk2OSA3MTIwNjIwZjQzMmJkMDkwYTYxZWY4MDhhYTAxZGQwYjUyMzY2MGU4IHJlbGVhc2UyMS1tYWludAorMjY5NzAgNWVkZWE3NTJhNDIxOWRjMmFkOTU4ZDZiZThkZGI4NWQwMDUzM2E2NiBsZWdhY3ktdHJ1bmsKKzI2OTcxIGE2OGZhYTI2ODUzY2U3MzlhZWVhMWMwMDc4MDY1MzUzYzYxZjdmZTUgbGVnYWN5LXRydW5rCisyNjk3MiBlYzI3YWMxOWY5ZTNjMWM5ZjA5ODNjMGI1NGYxNzhiYjI3MTE5ODQyIGxlZ2FjeS10cnVuaworMjY5NzMgNDU2ZDU4NDUxZmVlYTc0N2NlMTFlODdiMTkwODVjY2UyMWYzNjg4YSBsZWdhY3ktdHJ1bmsKKzI2OTc0IDBhMjgxOGNjMzQyY2U0ZDQyMTZjZjY5MWU2Mzc0MjJhN2ZkNWVmMGMgbGVnYWN5LXRydW5rCisyNjk3NSAyMWIxZDc0MmU0YTcwMDljZGEwNjUxZGQ2ZjhmYTZhNmEzMjA0MWZhIGxlZ2FjeS10cnVuaworMjY5NzYgM2NhZWUyOTU4Mzg3Y2Q5MmYzZGU0NjBiM2IyZGY5YTYxY2FkZjE1YSBsZWdhY3ktdHJ1bmsKKzI2OTc3IDRhMWY1YmQ0ODZmZjlmODBlYmJlZmIxMTcxZDE1YWY4YzEzNDQyZTggbGVnYWN5LXRydW5rCisyNjk3OCBmNGVhYjI2OGU2MTdlOTA0OTI2MWZiNDhkZTEzMWJmNmI2MzkxYjE3IGxlZ2FjeS10cnVuaworMjY5NzkgYTY3MTVhZDQxNmU1ZGEyZWVmMGQwZmFiM2UxOGE4MjlmN2E2MmUwOSBsZWdhY3ktdHJ1bmsKKzI2OTgwIDlkYTg1ODM3ZmYyNTA4NGIzZTM4OGEyM2Q3MDhmNmJlMDQxNGM3MzMgbGVnYWN5LXRydW5rCisyNjk4MSAzZTNiM2MxNzcwYWMxMWI1OWZjY2Q1OTMxNzFlNmI5MDA1MWY2MWEzIGxlZ2FjeS10cnVuaworMjY5ODIgNTQ0ODNiYzIxODcxZWY4NWJjN2EzMmM4ZDMzZDc2MWZiOWQ5NzQ2YSBsZWdhY3ktdHJ1bmsKKzI2OTgzIDkyNjI2ZTVhYjA2NzM1NGRkMWI5ZGIxMmE3M2RlOWUxZTg2Y2FlZmYgbGVnYWN5LXRydW5rCisyNjk4NCBhMWRlMGJhYjU0NzUwOTNmOTA1YTIyNWY2YTI2MzMwMDQ1Y2MxYmZjIGxlZ2FjeS10cnVuaworMjY5ODUgODdmNDAzNzdjZjU0MzhiNTEwNjE5ZGJjNzgzZDQ5MTgxMWUzMzIyZSBsZWdhY3ktdHJ1bmsKKzI2OTg2IDVlZGQ4MDcyNmQ5NjZmZGEyZTkwZGQ1YmZlNGIyN2M0YjNiMmU1YTUgbGVnYWN5LXRydW5rCisyNjk4NyBjMDBmZWJiZTA5Mjk1ZTMwMGQxODE2NzY2NTA1NzgyMzUwZGNkY2QxIHJlbGVhc2UyMi1tYWludAorMjY5ODggYWVkMzljYWY5ODYwZGQ2MDhiYjJjODRmODFlMzU3N2NmYjU1MjJmOSByZWxlYXNlMjEtbWFpbnQKKzI2OTg5IDY1Y2Y0Nzg5NTBmZjVjM2E4ODFhNWViZGRhODc1MzM5NmFiZTU3ZWEgbGVnYWN5LXRydW5rCisyNjk5MCA2M2QxNDE0MWRkMTBkMDI1NWNjZmI2YzBjNGM3Nzc2YTIzY2FlODNkIGxlZ2FjeS10cnVuaworMjY5OTEgYTZhNzY1YzdkMzNiNGQ3MWE3NjNiOTZhMGQ2ZmFmZDMxZWIwNmE4NiBsZWdhY3ktdHJ1bmsKKzI2OTkyIGVhOTc5YzUyMDZiN2U2Yjg3NTVkOTA3MTQxZDM3OTQzNGE3YmViNjQgbGVnYWN5LXRydW5rCisyNjk5MyA0YTRkMTIwYjJiMGUwOWE4ZjU2YjA1MzJjODgzMjU3YjU5ZDViY2ZmIHJlbGVhc2UyMi1tYWludAorMjY5OTQgYWZlOTQ2OTE4MjY3YTFjNTA2M2QxMjE2NzMxMDBmNTJlZGY2MzY4NCBsZWdhY3ktdHJ1bmsKKzI2OTk1IDFhNTIxNjIzNTYwMjhkNGYzZjRiYzc5ZWZjOTA0ZjQyZTg5Zjg1OTIgbGVnYWN5LXRydW5rCisyNjk5NiAxMTY2MDEzZmFiNzc5NTM2ZjY1NTMzYTZhNDE4OTE1MGVmMzE1ODRlIGxlZ2FjeS10cnVuaworMjY5OTcgMGVlOGVmN2NhMDljNjMyZTM3MjJhNGRhNmZlNmQwOWYyYTE1YmViYSByZWxlYXNlMjItbWFpbnQKKzI2OTk4IGRiZWUyZjYyOGE5MDY3MjJmYzQzMGUwZTM0MmM4Mjk1YzhhMWFkMGUgbGVnYWN5LXRydW5rCisyNjk5OSAxZTYwYjVkNDE0MTdiMTM4NGEwOTc4ZTQ4YmViN2UzN2Y1MjUwZGEyIGxlZ2FjeS10cnVuaworMjcwMDAgODU1MWU2NDI3MjdjMjM1ZTE1NzMyOWMzYjlkY2VkNjcyMzdiZWRmOCBsZWdhY3ktdHJ1bmsKKzI3MDAxIDBiN2ZlMGZhOWRjNmIxYzNhOWU4MmZkNDAxMWNkNGExMDc1ZDMyNzQgbGVnYWN5LXRydW5rCisyNzAwMiA4YzIxNWRkZmQzZDFhMTg1Y2ZjYjVmYmRiMWIxOWM3NjNiMjE4NDhhIGxlZ2FjeS10cnVuaworMjcwMDMgOTQwZmVmMzI0ZWJjYjVmOGMzMTM0NjFlN2MzODE1MDNmMjEyZDFlZSBsZWdhY3ktdHJ1bmsKKzI3MDA0IGEyNTA4MGY2OTAxZmU2YzhlOTMzYjZjNDM4ZDhjMGYwYmNlMzJiNWEgbGVnYWN5LXRydW5rCisyNzAwNSAwNGE0YTBlNzFhOGRjZjcwMWM4ODc0ZjA5MzU1OGNiMjhlOTU2MDMwIGxlZ2FjeS10cnVuaworMjcwMDYgYzY0NjNhZmQ5ZjA4NjBiODQzYmFlZjAxZTIwYzk1M2JiODJhZWFmZSBsZWdhY3ktdHJ1bmsKKzI3MDA3IDcwZDc2ODMzNTUwYjBkOTM1OTU4OTQ1ODA4ZmQ5NjRhNmQyNDVkZmIgbGVnYWN5LXRydW5rCisyNzAwOSAzZWJkMzc2YWE0Y2I2Yjc5NzUyNTFhOTFmMDlkYTM3YjM1ZmQzM2I0IGxlZ2FjeS10cnVuaworMjcwMTAgZTFlOTBiMGYxZjQ1MDBiYjU1Y2JlMzAyOTg4NjAzYzFjZWJjODYzOCBsZWdhY3ktdHJ1bmsKKzI3MDExIDIyMGVkN2ZlYmIwMDE5Y2E2ZmE2NzZlZmY5ZmNmYTU3NDJiZWU3N2IgbGVnYWN5LXRydW5rCisyNzAxMiBlYzg5NDllNGU0NmQ3ODI0NjI1ZDA2ZmVlYjJmMzBiZTNjYWNlYjk4IGxlZ2FjeS10cnVuaworMjcwMTMgYjk0YWNjMTg3NDBlN2U2ODYyZWE3NGYyM2NmN2VlOWVjYTNmNDc3MSBsZWdhY3ktdHJ1bmsKKzI3MDE0IGI5MjE4ZWZhZThmNTVjOGZiYmFhZTI2MjBmOTg2YzllNTI2OWY2ZTAgbGVnYWN5LXRydW5rCisyNzAxNSBhMzQ1MjMxMjFjZjQ0MTRlOTFjMWNkYWM1ZTQzZjdlZmE2NDhkNTI3IHJlbGVhc2UyMi1tYWludAorMjcwMTYgZjBjYTM5MzVkMDExZGRhNzJmMzhkZTA0YTE0OGYwYzYxZTI1ZDlkOCBsZWdhY3ktdHJ1bmsKKzI3MDE3IGI0MDE2NWE0ZWZlOWFkMmJkYjM2YmIzNmQxMGVjZmQyODViY2NhZjkgbGVnYWN5LXRydW5rCisyNzAxOCBlYjZhMTY1MWNjZGEwMzcyZjY3YzJlZDljYTNhNjA5MzM3YmE1YzM4IGxlZ2FjeS10cnVuaworMjcwMTkgYjg2ZWFlYjBkN2RkNDJhNzdlOWNlYjU2ZmYzYTM2NmZlNWM5ZjNiZCBsZWdhY3ktdHJ1bmsKKzI3MDIwIGVlNzcyZjZlODgxYmIyMzQyMGEzNzdjNmI5MWIxYTZlYWRkMTE0NjkgbGVnYWN5LXRydW5rCisyNzAyMSBiZmRiZTI1YTQ1YjA2ODY4ZjE3N2UwOGU4ZDdlZGM4NDZmMzY3ZDc0IGxlZ2FjeS10cnVuaworMjcwMjIgNWY5NzgxOTZmZDNkMDJmZjE3ZGI4ZDc2MWFmMmY3MDZiOWNjOTVkMiBsZWdhY3ktdHJ1bmsKKzI3MDIzIDk0YWE0ZWI5YmI3ZDk0MmQwNWY0MjJiYzBjYmFhNGE1YzEyZDI3NzAgbGVnYWN5LXRydW5rCisyNzAyNCA1YzVmZmY1ZGUyNTBkNzNiNzBlZjNlMmY1ZWJjMDEwYjJkMjJkMTgwIGxlZ2FjeS10cnVuaworMjcwMjUgMThkNThkZTIwM2Q2ZThkZTMwZGYzY2IzODFiMmFkZGIyNDY0YTM3NyBsZWdhY3ktdHJ1bmsKKzI3MDI2IGI1YzNmMTBjZTYzOTc5ZDY3NjdmMjhhYjIxMmYyMDNkYzRkNDQwMzkgcmVsZWFzZTIyLW1haW50CisyNzAyNyAyN2UyMTIwY2I0NzYzMTNmOTI3YjdmYWY5NGQyNmFkYWE4MTgxYzhiIGxlZ2FjeS10cnVuaworMjcwMjggZTQxOTA2NmY0MDhmMmQ0MmU3YTcwNTcwMmQwMzRhMTZjNTYzNDYzNyBsZWdhY3ktdHJ1bmsKKzI3MDI5IDgxMGRjZjlkODFjOThkY2NmYzZjMTE3ZTBjYjYxZjgwYjAxMGYwODkgbGVnYWN5LXRydW5rCisyNzAzMCA2ZGNkNGI2ZWU1ZGE5ZTk0ZDk1OGM5NzBjODU4MjhlN2M3OGFiYWEzIGxlZ2FjeS10cnVuaworMjcwMzEgMmJlY2I1NzkzYWNkMWM5ODZmZDFmNDI4YjdkMzlhZDhjNDg0ZDZiOCBsZWdhY3ktdHJ1bmsKKzI3MDMyIGRjN2Q1YzJkNTg0NWE5YzE2ZDg3YzI1MWUxYTI0MDUyMDVmZmY3ODggbGVnYWN5LXRydW5rCisyNzAzMyBjYTg3MTE5MjU1ZWIxNzdmZTdkNmU0ZGU1ZGI1YTJkMDZjYjMyMDI4IGxlZ2FjeS10cnVuaworMjcwMzQgZTMyMTUyYWZkZTRhYmNjYTg5MjZkN2EzN2ZjNzU4NGE2NzhlYzY5ZSBsZWdhY3ktdHJ1bmsKKzI3MDM1IGMzZGJhOTFhZmE2ZDE0MmUzOWY5YWRmZTNiYWE4M2IyZjFhZjdkOTkgbGVnYWN5LXRydW5rCisyNzAzNiA4ZWZhNTJlMGE4NDQ4NTkzOWEyNGE1NDA5Njc4ZGE5OTEwZjA5NTZiIGxlZ2FjeS10cnVuaworMjcwMzcgZWRjNDIzOTQwY2Q2NjM5ZTQ0YzFmMWI1YThkYzZkYTUxZmE1MzEyYSBsZWdhY3ktdHJ1bmsKKzI3MDM4IGI5MmY4MTkzODg0M2Y5YjZmOTdjZjc1MGRhNTU5YWY2ZTBhM2JjMGMgbGVnYWN5LXRydW5rCisyNzAzOSAyZmNjNmQ0ZTRjZDI2MWYyNjU4NjRhNmI2ZDkxMmY2YWFlZGVkODBlIGxlZ2FjeS10cnVuaworMjcwNDAgZjM1ZTc1MWY1ZmYyNTg0NjYxMzRjNTljMDM1ZTFhNmIzOTBlMGQwOCBsZWdhY3ktdHJ1bmsKKzI3MDQxIDNhMWFjMTFlYmU1MGMzZTIwNmYxNThjZDZkNzZmZjU0MGMxMjg0ZWQgbGVnYWN5LXRydW5rCisyNzA0MiA3MzJiNjkzMTgxNjhjMmM4MTE5MzQwZTM3ZmY1MDcyNGQ1YzEzZjhiIGxlZ2FjeS10cnVuaworMjcwNDMgNWM1OTAyZGU1YTU0MjE0ZjJiZTUwNWQwOTFlYjdmYjA2MTcwMDI5OCBsZWdhY3ktdHJ1bmsKKzI3MDQ0IGIxODM0OGJkY2EwODNlMzNlNWY2M2MzMTA5M2U5Y2E0NWY4OTZlMWYgbGVnYWN5LXRydW5rCisyNzA0NSBmMTU5ZWE5NTVlODBlYTJiZTRhMzJmZWI0MGE3YjUxZjFmZDE2YTQ2IGxlZ2FjeS10cnVuaworMjcwNDYgZTNhODQwZmE1ODRjYjhiZTljNjdjYWYyYjQ5OTk0MjkyMjkwNDcyNyBsZWdhY3ktdHJ1bmsKKzI3MDQ3IGQ1MDdhZDg2MjM0MjMyMzc2Njc5ZDJlNmNiZjg3YWE5ZTAwYjNmMTggbGVnYWN5LXRydW5rCisyNzA0OCA2MTM1OGY4MDBiNjE2OTAyNzlhZDE0Zjg0ZTUxZWRmNGM4MGJiOTZjIGxlZ2FjeS10cnVuaworMjcwNDkgMzI1YmJiNDkzN2M1ZGM5ZjNmNDcyYTUwOTcyNTA1ODNjMGMzOTRkZiBsZWdhY3ktdHJ1bmsKKzI3MDUwIDhhOWEzYWZmMzJmYzU4ZDQxZDg5YTljNTczN2ZmMjlmMjVjYTI2N2YgbGVnYWN5LXRydW5rCisyNzA1MSAxNDkzOGU3NjI3NmExYTY5NjYwYzk5MzcyOWUxNGE3MTg4NTk4Y2UxIGxlZ2FjeS10cnVuaworMjcwNTIgYzRkMmQzMDVmZDk4MmE3ZGNlOTAwZmZiOTdkZTE0NDJkZjRkYjM4YSByZWxlYXNlMjItbWFpbnQKKzI3MDUzIGQ3YmQ3YjczMjlhN2VjZDczOTU4YjcyNDUzODc3MzQxNDcyYTc1NWMgbGVnYWN5LXRydW5rCisyNzA1NCBkNmZhYTEzNzk0OGRlZmNkM2Y0MGM2NDA3OGZkYzRhMDVkZDM4MDUzIGxlZ2FjeS10cnVuaworMjcwNTUgMzk5YWZjZTg2ZWIwZDgwODI2NzBlZjIwMWY3Y2I3MDJlNTc4Njg5ZiBsZWdhY3ktdHJ1bmsKKzI3MDU2IDNiZGZjNDVkOTA5NjhjOWM5OWUzNmE3YjdkNDVjYTdjMzhkNTJjODEgbGVnYWN5LXRydW5rCisyNzA1NyAzYTJhNmFmOTA5OTI4M2JkOTlmNjFlZWNhMDIxODgxZDIyZWZjMmRlIHJlbGVhc2UyMi1tYWludAorMjcwNTggODk4MzE1OGU5ZjExMzQ2ZWNlZmRkMjBlYzE1ZjdkYzE3NWM3YWViMyBsZWdhY3ktdHJ1bmsKKzI3MDU5IDA4MDU3YTk4NzkxMGIzZjk0YTFhNTdiNmIxOTQxZWRiNjdmMmYwMDYgRFNfUlBDX0JSQU5DSAorMjcwNjAgYTU2ZjhjMzBhZjcxYzg5NWFkY2M4ODZhMGY1NjFhZWU4MjdlNWUwNCBEU19SUENfQlJBTkNICisyNzA2MSA4YjlkOTEzMDgyMGVmN2VkODRkMzY0YzI5ODIwZTE2YWIyNmE4NDdiIGxlZ2FjeS10cnVuaworMjcwNjIgNjI2NmYxYmQxYWI5M2VmZGYxNjhiNDRkMjgzNDliM2E3MjBjNGY5ZCBsZWdhY3ktdHJ1bmsKKzI3MDYzIDAxOTlhYTI3NGM3YmZmZGU4NjM0YjdmY2Q5ZTZhMWQxY2Q1ZjEyY2QgbGVnYWN5LXRydW5rCisyNzA2NCBjY2VhZjc4Yjg1ZGM3MmUwMWMxMGVmYzNjNWE0ZDc2ZWViZWMwZjliIERTX1JQQ19CUkFOQ0gKKzI3MDY1IDBmNTcwYmU2NzM2ZWJlMmVmNGNiNmU1OTIwMjg4OGVmYWZkMDkyZTUgRFNfUlBDX0JSQU5DSAorMjcwNjYgYzBlOGMwN2FlMWQ2Y2I1NWUxOGMyZTkzOWU2ZTJlODNkMWE2OWRkYSBsZWdhY3ktdHJ1bmsKKzI3MDY3IDc3MThiMjc0YWQ4YjEyY2QwMmEwZTQ4ZDM5OWNlYTE3ZGFkYmVlYWUgbGVnYWN5LXRydW5rCisyNzA2OCAxOGRkYzAyY2UzNmYzNTgyZTkyMDk0MWE2MWFjMmEwMTUwZTgzM2YzIGxlZ2FjeS10cnVuaworMjcwNjkgNjdiOWY1M2E3ODAxNGNhZGM1MTcwYzE0ZDFjZjFhZjY5NDFlNTE3ZSBsZWdhY3ktdHJ1bmsKKzI3MDcwIDlhNWM0ODU3OTYzMzllZDZhMGYwZTczOWNlY2ZiYjlhN2MzMzBmNGEgbGVnYWN5LXRydW5rCisyNzA3MSBkNGY2ZTJhZGRlNDg0NmMyMDdlMjkxYTE2MmQ4NzMwNGM4M2ZlYzIzIGxlZ2FjeS10cnVuaworMjcwNzIgYWJlMWJiNzZlZTQ0NzQ0OTRiNjYwOWYwYjJjMTRkNzJkMTRmMjMzMyBsZWdhY3ktdHJ1bmsKKzI3MDczIGU0YWRkN2JiNWYxNDhkYjUxY2Q3MGJjYjNhMWRlOWE0NmNjN2NhODkgbGVnYWN5LXRydW5rCisyNzA3NCBmODVmNDUzMWMzYzE2NDQ4OTI2NjAxNzI3ZGJiZGRjOGVmZjAxMDI0IGxlZ2FjeS10cnVuaworMjcwNzUgZTM3ZjFjMGY5YTFlOTM2ZmE3NjM4ZWU3MDFkZmNmZjhlOTAzZjQzYiBsZWdhY3ktdHJ1bmsKKzI3MDc2IDA1OGJkMmQ1MGUzMzM5ZjYxNGRlMGM3OWNjYmRmMDMxOWEwZDFmYWMgcmVsZWFzZTIyLW1haW50CisyNzA3NyA1NmE0ZDNhNTBiNzZiODZkYmQ1MmQ2NWVkMTU5NDkxOThkNWY3NjkxIGxlZ2FjeS10cnVuaworMjcwNzggM2IzNzlhZTM1NjlkOTMxMGM0ZjM1ZDEzNTAxZWI5ODUyM2UyNWRmNCBsZWdhY3ktdHJ1bmsKKzI3MDc5IDQ0Yjk5NzdkNDg0ODdkZWRhNTUyNTEwMjQ5YjZhMTZjMGY2YjE5MzIgbGVnYWN5LXRydW5rCisyNzA4MCA1NjUwMzJiNDhmNTA5YzUzMzM4ZWIyOTJlNTEzMDViNmExM2Q4OGI5IGxlZ2FjeS10cnVuaworMjcwODEgMjhiOTk3MWYwNjhmN2NkNGI0YzRkOTQ4Mzc1NGM4MzhkYzk4NWFiNyByZWxlYXNlMjItbWFpbnQKKzI3MDgyIDJiMTIxOWE3MmVmY2E2ZWM3NjZmYWYxNzg3YmIwNGM3ZjRlODE4OTcgcmVsZWFzZTIyLW1haW50CisyNzA4MyA5NjliZDU5N2Y5MjM4Yzc5NjY2ZWNhMmRlNmMzMDVkMjVmZWNjNDlhIGxlZ2FjeS10cnVuaworMjcwODQgYzI3MzNlOGY2NjEyYjliMjVlYThjNzQ2YjA3NjIyN2NhMTg0MTE3MSBsZWdhY3ktdHJ1bmsKKzI3MDg1IGZjNTM2MWUwMjhmM2Q3ZDZmNzBlNWUwNjY0ODVjZWQwODRmNmQwYzAgbGVnYWN5LXRydW5rCisyNzA4NiA3NzE1NGNlZjI5ZDE5ZjQwZjM1YzhhNjJkMTUyOTFmNTAyYWQ2NDk3IGxlZ2FjeS10cnVuaworMjcwODcgNDQ0OTU0YzU0MzRjMWVmN2Q4MTRmOGYyOGZhZWI0YTZhMjZmY2RhMSBsZWdhY3ktdHJ1bmsKKzI3MDg4IDIzN2NiZDJhOTFlOWJiZmNiMjZlNjMxNTQ4NTliMDk1MDA1YjkyZGQgbGVnYWN5LXRydW5rCisyNzA4OSBiMDYyMDg1YzFmZjJiODBhNjU3MmIzNTMxYmJiNjc3ZjNlZTdmNzNiIGxlZ2FjeS10cnVuaworMjcwOTAgNDhlOTM3ZTFiM2ZlM2QxMGMyNmFhMGQzOTUxOWYzMzZjZTA4ZTQ5YiBsZWdhY3ktdHJ1bmsKKzI3MDkxIDc1YzUxOTk5YzhkNTRmOTVhZDFiNTg4MDEzMWU0YmJkZDg2NDUwZjUgbGVnYWN5LXRydW5rCisyNzA5MiAyZjZmODcwOGUzZTk0NWE3MTY5MmJjOWI3Njk2NGU3NjBjOTcwZjUzIGxlZ2FjeS10cnVuaworMjcwOTMgZGIyMzllYzMwN2UwNzQ3MWMyZThiYTFmMzAwMmVmZTJlMjcwOGVlZCBsZWdhY3ktdHJ1bmsKKzI3MDk0IDEyMzVhOTVmZWRjZDZjYWYyZjRmOTRkNjY3NjBjYjFhMWNlY2NiMDkgbGVnYWN5LXRydW5rCisyNzA5NSAyY2Q2ZWQxYzFiNTgzYmEyNzg3NTA5ODAwMGE2YmFjZmU4MDM2MDk3IGxlZ2FjeS10cnVuaworMjcwOTYgOWQxMWY1MTg2MGRkM2UxZmQzZjNmZmMyYmZkOTVjODgwZmQ4ZWRlOSBsZWdhY3ktdHJ1bmsKKzI3MDk3IDU1NjJhNDk5ZmI3Zjg0NTFjZmU5Y2RkMTU1ZmY1YzVhZjJkOGZmMzAgbGVnYWN5LXRydW5rCisyNzA5OCA1Zjg1Y2FlMjVlMTg1NTQxOWYyZWIzNDIzZTg5NmZhNDBlODIwNDg3IGxlZ2FjeS10cnVuaworMjcwOTkgYWY4ZDQwZTRjMzc3NzMyMDcxYWEyODY5MzQ1NzcwZmQxZTI0OTRmNCBsZWdhY3ktdHJ1bmsKKzI3MTAwIGUwYTkxYzY3Mzg4ZjRmZDBhYTUwZDc2MmI1NjYyMzU0ODNhZDkyYWYgbGVnYWN5LXRydW5rCisyNzEwMSBiZDI2YzEyMDU5MWE1NzhlOWIxNDBjYjUxNmJiMjYzMjliYTljNDI0IGxlZ2FjeS10cnVuaworMjcxMDIgN2VhYWJlNzdkNWNiZDlmN2ZiM2U2YTMwYzQzOGM2ZDJiYmVlOTYxMSBsZWdhY3ktdHJ1bmsKKzI3MTAzIDMwODEyMmI2OTk2ZTQ0ZGMxOGVlOTU4M2M1NGU0NzMzNWEzNjNmNTIgbGVnYWN5LXRydW5rCisyNzEwNCA2NTVmNDg2Mjg0MzY5Y2Q0YzgzNzUzMjkxZTI1NTg3ZGEwZDY2ODllIGxlZ2FjeS10cnVuaworMjcxMDUgMTg0MmRiNmExMzk0ODU0NmMxZDZhYmQ0Y2RmM2Q5ZGQzODlmNTIzZSBsZWdhY3ktdHJ1bmsKKzI3MTA2IGRmMWEyNzVmZjRmMjViNTRhMzU0MmRiOTM1YWZkZDk0ZmJkMzA4MDUgbGVnYWN5LXRydW5rCisyNzEwNyBhNjhkMjQ2NmQ5NGJmNTU0OTIwOGJmYWU0ZGRjZjZmNDA5MDNkNWY4IGxlZ2FjeS10cnVuaworMjcxMDggMjdmNDgzMTRiYTlkMGUxZWMzMzY0ZjY0YTExNjA1YTk0NTI4YTgxMCBsZWdhY3ktdHJ1bmsKKzI3MTA5IGEyMTM2YWU5ZDRmNzZlNzI1MDkwNzQzMjMzYjcyMjYwOGRhOGM1ZmYgbGVnYWN5LXRydW5rCisyNzExMCA2ODk1MjAwZDYyYjE5Y2U5ZDhiNGMxZmUzN2VmYmM2OGQxMzNkN2NiIGxlZ2FjeS10cnVuaworMjcxMTEgZmU3NjliMDcxNTAzNTNmZTIxYzQ3NjM5ZTI3Yzc3OWI1NDQwODM0NCBsZWdhY3ktdHJ1bmsKKzI3MTEyIDJlMWRlZjQxN2VjYjg5N2M5NGVmNzZmMTE4NDAyZjUyNTY0OGRkMmUgbGVnYWN5LXRydW5rCisyNzExMyBlYTAzNTQ5MGY2MjQ1YzI4OTE0ODIxZGJjNDM5MWI0ODI0ZDMyZDU5IGxlZ2FjeS10cnVuaworMjcxMTQgMzg4MzIwMDBmN2U5NDViZTVjNDRhNjc2NjA0ZTUwN2Y2NjRlMjUwYyBsZWdhY3ktdHJ1bmsKKzI3MTE1IDQzZGRjZGNkM2M3MWZlNGVmNzQxMmM2OTQwZDJlNmM2NGI4ZDI1MmQgbGVnYWN5LXRydW5rCisyNzExNiA0ZDU5MzI1NGJhOTM5MjVkZWVkZDAwYWFjZTk3NTYxNGY5ODkxNjMwIGxlZ2FjeS10cnVuaworMjcxMTcgMmQ2N2EwYmE5MDIwZDI4ZTg5MmQ4ZDY1YzNhNGIyMzE3M2UzNDBlNSBsZWdhY3ktdHJ1bmsKKzI3MTE4IDM2Njg3N2VkZDQ4NzYzY2NhOGExNzQ2ZDUzMzM3MGQ5MjMxZDQ3NzUgbGVnYWN5LXRydW5rCisyNzExOSA3YmM0ODAyOWVhYTljYjNkOTBiYmU4MjdkZGY3NjcyZTliNDdlYTQxIGxlZ2FjeS10cnVuaworMjcxMjAgYTE2OGIyZjZkN2RhYWQ2ZjU4MjZlZjllZTk1NjM3OTY3MTg5MGZhZiBsZWdhY3ktdHJ1bmsKKzI3MTIxIDQ3MWE1N2JmMmRhZTE4NWQ0ODBhZTNkOGNiYTA0OTZhMzE1MTlkNGUgbGVnYWN5LXRydW5rCisyNzEyMiA0MTA5N2U5MmY1NjBmOTk5MzRiYjJhY2ZjZDI4MTY0OGNiMWY5MTFlIGxlZ2FjeS10cnVuaworMjcxMjMgMmM4ZWE3ZjlhM2NlZGMzN2ZmMWE2NTM5ZmZiNWQzOTI5MWMwN2E5MCByZWxlYXNlMjItbWFpbnQKKzI3MTI0IDAyNzkwNDBhZTAzY2JhNGQ4OWJlMTBhZDU0MjYzNjUxMzBmNjc3MTggbGVnYWN5LXRydW5rCisyNzEyNSA4ZTVmMjY3OTY2MjAwYjAzMzcyMjczZjc5Y2E0Y2RiMjcyMGZlMjAwIGxlZ2FjeS10cnVuaworMjcxMjYgMDc3MWY5MzgyZDFlMzJkZTg5NTYwYmZlZTUyZmIzMTFlM2ZjNDgyZiBsZWdhY3ktdHJ1bmsKKzI3MTI3IGM3ZTgwNzgxNzE1OTFjY2Q3Y2ViZDdlZjU0NWUxZTE3ZjdhMmJlMWYgcmVsZWFzZTIyLW1haW50CisyNzEyOCA5MTMxNzMwMWRkMDk4Y2EzM2I3ZjIxMDIxYjc1NjY4Zjc1MTFhMzljIGxlZ2FjeS10cnVuaworMjcxMjkgZTY0MGQ4OWI0OTA3NDE1YTA4NDA4NjIwZmYzMjJlZmRjMmY5YTg0NiBsZWdhY3ktdHJ1bmsKKzI3MTMwIDk0ZDBkYzlkNmU0NGVmMTA3NDIzYmU2YjkzMGVmOGJlZDY2YTgwNzQgbGVnYWN5LXRydW5rCisyNzEzMSBiYWRiYzUzMzQ0ODg2MTIyYWE4OTgyNTMxZGNiYWJlZTBhNGViZTBlIGxlZ2FjeS10cnVuaworMjcxMzIgZjE2ZjZkYTRmNWZmZGI2ZDVkZGM3MGEyMTBkY2Q4Mjk2NmEwYzY0YSBsZWdhY3ktdHJ1bmsKKzI3MTMzIGQ1OGZiNTQ0NTExODg4ZTZmYjU5MTg2M2VjODU5ZTY2NjY3YWE5MzggbGVnYWN5LXRydW5rCisyNzEzNCBhN2NlYWRiMDNlZGM5MTc0NTQ0YTU5MmI1NjExNjRmODI2ODFkMjc1IGxlZ2FjeS10cnVuaworMjcxMzUgMWNiY2RkY2EzM2IwMjgzYzM4NDZlODAyYzM5YTNjYmNiY2JkZWNiZCBsZWdhY3ktdHJ1bmsKKzI3MTM2IDVmYjA4ZDgzMmVhYzljOTA4MzdkNGYyM2NmOGZlOWQ1ZGI3MjFlZWQgbGVnYWN5LXRydW5rCisyNzEzNyA0NjgwZWY0ZmU5MGFkNDUzM2QzNGJiNjQ2MDc0OTUzZTJhNzA0OTk2IGxlZ2FjeS10cnVuaworMjcxMzggMzViNjI5MDg1NWZjMWU4NzQzODgzNWZjYTkxNTM3YWE5MDNiYTJkYyByZWxlYXNlMjItbWFpbnQKKzI3MTM5IGY2YjI3MTlmYmYxMTk4OTdlYWQyNTA3MWNmZGMyYWQ1OWQzNWEwYTYgbGVnYWN5LXRydW5rCisyNzE0MCAwNmRiZDA4OThiMzllMjQzZGEzMWQ0N2U3MWFmZDZmMDM4ZDFmMThmIGxlZ2FjeS10cnVuaworMjcxNDEgYTU1MzRmYWU1MTEwMTY4Njc3MjI5MTE3MDAzYzE4MzdjMmRhMGIzMCByZWxlYXNlMjItbWFpbnQKKzI3MTQyIDBjNjVmNDFmZDkyMTllZDhmZDIzYmRjNDZiOTFjNWQzOWI1ZjlmOGUgbGVnYWN5LXRydW5rCisyNzE0MyA1MDA2MzAxNmQwNDY5OWQxMTg2ZmUyOGQxN2VjYTdjNjgxZTE3YzRkIHJlbGVhc2UyMi1tYWludAorMjcxNDQgNWY4NmMyMWJkOWZjODkwNTY1NmEyYTQ0ZjdiN2JmZjQ0OWQzMmMwYSByZWxlYXNlMjEtbWFpbnQKKzI3MTQ1IDcxZGI0MjhmNmUwOGE0NTlhZTRjNDJiMWU4NmU0NWJjOTY3M2EzMzYgbGVnYWN5LXRydW5rCisyNzE0NiBiZWMxYjk0MmUwYmMzY2Q3MWU3NjlhMDE3MjMxMWY1NjkyMzBiYmI4IGxlZ2FjeS10cnVuaworMjcxNDcgMjQ1MjI0ZDFiOGM5MjAxYTJhZTg0M2VlMTIxN2UzYmUzZTc1MTY0NCBsZWdhY3ktdHJ1bmsKKzI3MTQ4IDU1YzkyMjY2OTkxMzEzNDFlMjdmNDhhNGVlODM3YjlmYWM1MTFjNzAgbGVnYWN5LXRydW5rCisyNzE0OSBjN2NkYTYzYTAwN2U0NGY2MTZkMDVhNGIwOTZiZGQ2MzdmOGI1OWE4IGxlZ2FjeS10cnVuaworMjcxNTAgNzMwNDkwZmYyNWVhMzliZDY1MDIxYTllNGVlMGE4ODM2MjhhYzdiZCBsZWdhY3ktdHJ1bmsKKzI3MTUxIDU0ZjZmODkxMzlkYjUzZDkxOGU1NTYxYzc1NTk3M2YyMzA1YTUyNmMgbGVnYWN5LXRydW5rCisyNzE1MiAwZGFiOGJhMWQyOTgwNzlmOWMwNDU5ZTZlMTVlZTVkNmViMmM2YzNiIGxlZ2FjeS10cnVuaworMjcxNTMgMjRiMGY2ZDY5M2UzNGIzN2M1MmRmMDU5MDhlMmI3YzVkZDgzZDZlYSBsZWdhY3ktdHJ1bmsKKzI3MTU0IDdhMzJjMjM1NmU1NjdjZjg5OWEyNjg0NjIzZjU0ZjAwYTViMjE0OTcgbGVnYWN5LXRydW5rCisyNzE1NSBlMGZiZjljNGQ0NmMyZDJiZThkNzg1MzdkZDJmYjRlYjc3NTczYWVkIHJlbGVhc2UyMi1tYWludAorMjcxNTYgOTMyOTc3MDYzN2E4NTg1MjE5NGY2ZWI2OTRkMTQ3NTM5MDJkMjU3NSBsZWdhY3ktdHJ1bmsKKzI3MTU3IDlkYTJkOGMxMzIwOTA5NDgzNThiODYzYjVhMGI3ZTNhMzEwYTBmN2EgcmVsZWFzZTIyLW1haW50CisyNzE1OCBjMDFjMWI0YTgxNzE2ZDFlMjM3ZDQxMGJjM2JlMTk5NjhjNGRjNjQwIGxlZ2FjeS10cnVuaworMjcxNTkgNDg2ZjQwNDVkMTNkZjYwODk2YWVmOWJjMjFkOTYxNmYzNWNmZTk0NyBsZWdhY3ktdHJ1bmsKKzI3MTYwIGNkZTY2MDg3MzljNDJkNDVhMWY2YjA4NTA3Zjc1NTdjNDg5YzQ1MTAgbGVnYWN5LXRydW5rCisyNzE2MSA3ZGQ0MzJlMWRlMjY2NjQwMmVmNmI1OTBmZjMyMDA1OWUyYWM2ZjIwIGxlZ2FjeS10cnVuaworMjcxNjIgN2NkYzUzMWU2YTUwNGEwOWQ3ODM3ZjdmYmJiYTUzYzI5MDYzMGVhZSBsZWdhY3ktdHJ1bmsKKzI3MTYzIDFmMWE2ZjdkZDYwMDE0ZGIwNmNkOGJhZWVkODg5ZTE0NzlhM2Y5NTIgbGVnYWN5LXRydW5rCisyNzE2NCA4MGQ0NTBlNTUyZjY5OWNlNjdhMGY3ODFlN2JhMWM3OGNmOTI2MDhiIGxlZ2FjeS10cnVuaworMjcxNjUgZmNjMzZlZTE5MjRiMzE2ZGE5NzY0NmU4ZTkyMjQ3MzQ1OTdlMGNiZiBsZWdhY3ktdHJ1bmsKKzI3MTY2IGJhMjk0ODVkMDcyMGJlZWE4ZjAxNjU3ZTQyYTJkNWUzY2YyZTg5ODQgbGVnYWN5LXRydW5rCisyNzE2NyAxZGE2ZDY3ZjRhMDVjNWUzMGYzZjU0MmY2YmRhNTJhY2Q0NjE1NTAyIGxlZ2FjeS10cnVuaworMjcxNjggMmFkMTNlZTZkODUwNWMyYzI0MTAwODZjMTk2MDUxZjg1MTg4MzA1NyBsZWdhY3ktdHJ1bmsKKzI3MTY5IGJmMTU1NWE5MjcxMTdkYjE4ZDNlYzYyOTNkYTg5NGFmYThmYzQ2MTcgbGVnYWN5LXRydW5rCisyNzE3MCBiMmIxZjFmZjVjNzFjZGE3YzJkZjc0NThmYzlkZjlmZWJhNmI1NTU1IGxlZ2FjeS10cnVuaworMjcxNzEgNGVjNThjMjcwZjNlYzBjMGM5ZWVmODk4OTUxMzc2NjYzMWJkNDJjYSByZWxlYXNlMjItbWFpbnQKKzI3MTcyIDdlYWQyZDlkZjdmOTY4Y2Q1NGNjY2Y2YjFiNzA2NTdhNzA0NzNmNDQgcmVsZWFzZTIxLW1haW50CisyNzE3MyAwYjEyYWZjNDAxMmE4MDZjYmE0NWU2MzU0NGIwYjc5NWFjODc3ZDczIGxlZ2FjeS10cnVuaworMjcxNzQgMDYwMWVjYzdmNGJmNzM5ZGQzOTc4MjE3YzJjM2YzNDcwY2UwNzdjZiBsZWdhY3ktdHJ1bmsKKzI3MTc1IGM3NGQ4NmRjNDAxNzc0ZGM5OGVlNDA1MTRmYzZjZWQ2Nzk4MmRlYWIgbGVnYWN5LXRydW5rCisyNzE3NiBjYzY1YjViY2ZjMzgzNjliOGQ5YjY1NzZhNDc5YWY2MWMxNjk2NTdjIGxlZ2FjeS10cnVuaworMjcxNzcgNzlkY2Q1N2YyNzJkZWM0OTMzMzM1NmM5MDQ1Yzc2NGY5Njc2NjIwNiByZWxlYXNlMjEtbWFpbnQKKzI3MTc3IGJiNWIzNzA0OTJkNmEzNzY5ZTdlM2FhNTBiZjQ1NzA2YzJkMzQyZmEgcmVsZWFzZTIyLW1haW50CisyNzE3OCAwMWU0YjY5OGZmN2VmZTBiMWYzMjk3YTFiNjljYjdkZGIyNGFjNmE5IGxlZ2FjeS10cnVuaworMjcxNzkgZTNlMDE5YmM0ZTFlY2U0MTQ1ZWUxNzU3NTFjZDZjNmI4NDcwMWM1NSBsZWdhY3ktdHJ1bmsKKzI3MTgwIDg5YTdmYTkxOGMzYjdmNjg5YWY0MzRiZjU3OGIzNmYzNjdiYTRmOWMgbGVnYWN5LXRydW5rCisyNzE4MSBmNmMyNmQwODNiZjZjOGRmMzA4OTNlZTZkYWJmNGZjOTg2MTg2ZjVhIGxlZ2FjeS10cnVuaworMjcxODIgYzdkN2QyMzE5YjNhMWM3YmI1M2IxZGVmMWE2ODdjMTczMGI4MWQzMyBsZWdhY3ktdHJ1bmsKKzI3MTgzIDIwM2QxNDEyYTdlODI2ZDNjMDQyOTYyZWY1ZmIyNTE5ZjUxZjM2Y2MgbGVnYWN5LXRydW5rCisyNzE4NCBlNGQ1NTdkNDZiOTZmZDY1NDIyZGJlMzc2NjVhNDczZGY3MzAzYWQ0IGxlZ2FjeS10cnVuaworMjcxODUgMmQ5N2JjMmJhNTBkMjc4ZDBiZWI2MmY2M2RmNDNlZDA2NjZiNzViMCBsZWdhY3ktdHJ1bmsKKzI3MTg2IDhhMGExNGUzNzI1ZTM3NjNmMTU2Nzc3NmZhYTBiOTcxZTFkZjI5MjAgbGVnYWN5LXRydW5rCisyNzE4NyA0M2Q2NThkYzhkZDM2ZTQ0NzM2ZDNiNTE2YmNlY2M5M2ZkZWYzMTI4IGxlZ2FjeS10cnVuaworMjcxODggMTMwZmZmNDg2ZmE2NGVmODIwMDZkMjcwNTVkMjQ3NjFlNDUwM2I4NSBsZWdhY3ktdHJ1bmsKKzI3MTg5IDMxMjZjNDI2Mjk2MjliNzk1YWMzZGMwNGM2NDdjMTdhZTM3MDk3ZTYgbGVnYWN5LXRydW5rCisyNzE5MCA5OWQyMjcyMzI1MmY1OTA4OTk1ZGQ4NmEzNjU3NmIyNzUyODBiZWUwIGxlZ2FjeS10cnVuaworMjcxOTEgYzQ4YmY1ZGY2MTRhYzA0YTdkMjU1Njg3YTliMGQ3NTUwODY1MjIxYSBsZWdhY3ktdHJ1bmsKKzI3MTkyIDhmZjY5MWRjN2YyOTFkZGQwYzdiNTI2ODdhZGJiNThmZmExN2RjODYgbGVnYWN5LXRydW5rCisyNzE5MyA5ZjAwMDljYTk3YjlhNWMyZDdjODdlZDhkYThkM2MwNTExMmNlZmMwIGxlZ2FjeS10cnVuaworMjcxOTQgYWJjZmE0OTk1MmM0MzI2MjdlNmQxMTRjNmYwMGM4ZjgxOGRjZGVkMyBsZWdhY3ktdHJ1bmsKKzI3MTk1IGQ1ZTg4YzBjOWUwOWVlNTVhYjM4MTU5MDAzZTMzZGE5ZWEyMWY4OTkgcmVsZWFzZTIyLW1haW50CisyNzE5NiA0MWM0ZGRhYjM2ZjJlMjFlMmMxMzc0MjE4ZTJhZTBkZGY2YTUxNjY4IHJlbGVhc2UyMS1tYWludAorMjcxOTcgZTQyNzJhZDFhNjM2OTRhMjBkMWIxNTMyY2ViZTQ0OWFmNzczZjM4MCBsZWdhY3ktdHJ1bmsKKzI3MTk4IGFkZTFkNTYxMDlhODJmOTUwYjU5ODkyMDMwMWQ3NmEzMmIzYmRjOTAgbGVnYWN5LXRydW5rCisyNzE5OSBmNzMwNmFlODY2MmRiNTg4MjBjZmVkYjI4NDY1ZjlkNDk3ZWFkYjUxIGxlZ2FjeS10cnVuaworMjcyMDAgZWQxYmEzN2E0NmI3M2YwYzViMjcxMjQ1NTU0YzJkYzdiZTQ3YTMyZiBsZWdhY3ktdHJ1bmsKKzI3MjAxIDlmMGFkMGViNjFmMDg2Y2NkN2E3ZjJhNjYyZWJlMDhkMzQzZjQwNzkgbGVnYWN5LXRydW5rCisyNzIwMiA4YWUyNmQ5YmUxYjRmYzEzZjRkZjU5MTFiYzE0YThjNTlkNWMxYWFlIGxlZ2FjeS10cnVuaworMjcyMDMgMWNmMWY5ODEyMjE5Nzk4OTQzMzE0ZjEzYWYyNWEwMDgzYmZiYTVhMCBsZWdhY3ktdHJ1bmsKKzI3MjA0IDA2NWE3ZjIzYmUyZmQ0NGFjN2FiMDllNmUzYzc1NDdmODU1NDk0ODcgbGVnYWN5LXRydW5rCisyNzIwNSAzNTlhNTdlOTZkNWViNjNiZGM1NzdlMjJlOGQ2NzBhMzcwM2FkMWJjIGxlZ2FjeS10cnVuaworMjcyMDYgOTUyNjNjY2VjODE5Y2NjNTJmYzFkZWI1ODI0OGNhMzY4ZmRjNWNjMiBsZWdhY3ktdHJ1bmsKKzI3MjA3IGM4ODE1YmQwMWZmNTc4ZTU5YTU2NTQ2MmJhMGQ1NWFhMDkyOTIxMGEgbGVnYWN5LXRydW5rCisyNzIwOCA5MDMxMTJjMWM4ODc2MDg4Yjk3ZmYxMTc3OTM2MjNhZjRhZDRmMTRiIHJlbGVhc2UyMi1tYWludAorMjcyMDkgM2YxOTZiNGRjNGMxMDZlYzM2NjhiN2Y2OWViZmE5MTI3YjJjZjEyYiByZWxlYXNlMjItbWFpbnQKKzI3MjEwIDZjNjE5YzE2MWI4N2Y4ZGZkODExMjY1NmIwNzYwZjcyZDYwOTZkMWUgbGVnYWN5LXRydW5rCisyNzIxMSA4NWE0ZTcyN2IxNmJhMWU3M2FjYTRkNWIxMjhiMWQzYjE5ZTVjYmZhIGxlZ2FjeS10cnVuaworMjcyMTIgYmQzN2ViNGRhZjNiNjc0ODI4ZDYwYzQ5Y2E0ODdlOWQyMTlmMDcxNyBsZWdhY3ktdHJ1bmsKKzI3MjEzIGI0ODFiYTk2N2FkODM3MTBkMzY5YWFhNTk2ZjE0M2U1MDkyOWNkNzAgbGVnYWN5LXRydW5rCisyNzIxNCBiZWI2OTllMTBiMjljZTIyNGUwMTBlNTk4OTQwZWM4Mjk4MmIwNmQ4IGxlZ2FjeS10cnVuaworMjcyMTUgZjZjMmMwODlmZGYyYWUwM2UzNzliNjk5YzQ2MzIzZGMzMTNlODdjNiBsZWdhY3ktdHJ1bmsKKzI3MjE2IDcyNTJiODY3ZDgxZTI4ZWZjZjYyOWUxMDlhNDk2ZmNlNDhlOGE0ZDUgbGVnYWN5LXRydW5rCisyNzIxNyBjOWM4ZjUyM2ZmMWI1NjY3ZmZkZGQ2YzI4MThmOTM2Y2NlY2ZkNjg2IHJlbGVhc2UyMi1tYWludAorMjcyMTggODU0NTgzY2Q2M2M3Y2U1NzNiN2I4NzI5MmQwYmU0MGNhYWQ0MTlmZCBsZWdhY3ktdHJ1bmsKKzI3MjE5IGQ2YWU1NDRhY2QyNGExZjcyY2UwMDUzNGZlZDQ2NGZkZTkxZWU1MDQgbGVnYWN5LXRydW5rCisyNzIyMCA0NjI3NWY5ZTc0MDcxMGQ5YjBlNWEwYWYyNjRiZDQyZDk2NzE3Yjc3IGxlZ2FjeS10cnVuaworMjcyMjEgOGE0NzY5MjRlY2ZlYTE5NGY0N2MwYzI2NjBjZDA2ZGIxZDgwYTM1YSBsZWdhY3ktdHJ1bmsKKzI3MjIyIDhiYzRlNWJhMWY2NTE3YTc4ODdlODkyYThiYzcyZjMxNTVhODAyNjEgcmVsZWFzZTIyLW1haW50CisyNzIyMyAyYjA3MTMzNzIwNWMwMWMyNjg1YjFiYmYyMmFmZjNhNWYwNTRmNTJkIGxlZ2FjeS10cnVuaworMjcyMjQgODY4Y2ZiZGNhOTA5Njk5YjBjNTY5MzAwYTFlMDI3NGQyNzVhOGRhZSBsZWdhY3ktdHJ1bmsKKzI3MjI1IDUwMjdlN2MxMmExNjAwM2EwNmZiMDNhMGE0NDFmZmNiZWQ4ZGM5NTEgcmVsZWFzZTIyLW1haW50CisyNzIyNiA1OTg2ZGJkMDA5NGZjM2IzZjQzMjQxZTAxYTllOGJjY2NhYmVkYmFmIGxlZ2FjeS10cnVuaworMjcyMjcgNmQwMDhhNGUyNjMzMzVlZmY3ZWUzNmQ3NTE0YjQ3ZTlkMGFlMmNhZiByZWxlYXNlMjItbWFpbnQKKzI3MjI4IDYzZWUzMWJiMjVmMzI1NjAyOTM3N2Y2Yjc0MDM2N2M4YThlMDUyZDcgbGVnYWN5LXRydW5rCisyNzIyOSBkN2IzMDdjMzc5YzhkYzFkZDVkMDM2ZmZjNDc5ZGE3MzQzYjk5MzcwIGxlZ2FjeS10cnVuaworMjcyMzAgYjc5ZDQzMzA1YzcyZDk0NzNmNTg1MzZjZWExOTMxZmY5M2E3M2U2NCBsZWdhY3ktdHJ1bmsKKzI3MjMxIGRmYTY4NjY4ZDAwZWNkYjU2YWZiZmRiZTQ1ZDg2YzUzNjMwNWI2NzUgbGVnYWN5LXRydW5rCisyNzIzMiA2YzFhMGRjODUxYjZjMWNjMzk1Yzg2ZjE3YWY2NzI5YWUxOGMyMzZkIGxlZ2FjeS10cnVuaworMjcyMzMgMWE3NmUzYzQ1MDhmMzYzNTNiMmUzZGI2NWNlMmZlN2Q2ZmNjYmI0MyBsZWdhY3ktdHJ1bmsKKzI3MjM0IDQ4N2E2Yjk5Zjc4MTFiMGU4MTA2YzAzZGRmMjFlMWE0ZWIzN2QyZjQgcmVsZWFzZTIyLW1haW50CisyNzIzNSA0NWQ2NzY5MzM4ODI4ZjdmMWJkYTMwOGUxN2FlNDE3NTg2YzIzZWYyIGxlZ2FjeS10cnVuaworMjcyMzYgOGU2NzYwYmYxODg0ZTdjYjQwMDg3YTFiZjZlNDkzNTQ0ZGI1YjUxMiBsZWdhY3ktdHJ1bmsKKzI3MjM3IDhhZDgxYjM3OTU1MjAwNThhZTFjNzg0M2YwMTAzMGQ2MmVmNTJhYTcgbGVnYWN5LXRydW5rCisyNzIzOCA2M2QxZTMyNjNmNDU2MmYzOTU0NTkyNjEzNjQxNmJlMTQyNGY5NGVhIGxlZ2FjeS10cnVuaworMjcyMzkgOTVlN2JiYmQwOTU0OTQ1ZWRhOTg3Y2U3MDFlYTM3MzY1MTVlNDE3OSBsZWdhY3ktdHJ1bmsKKzI3MjQwIGMwMmQxYzlhNjYyZTY2NWE0MDdkNTA5OTRhNDQ0ZjIyMTQzMTUzM2EgbGVnYWN5LXRydW5rCisyNzI0MSA0NTg4YjY4MjBhMTFlNTRiYmQ0MDlmYmVmY2M1NzE5MGJhNWJjNTQyIGxlZ2FjeS10cnVuaworMjcyNDIgMTVhYjI5MzkzNzc5ZjE5YWE4M2EyYWJmNGM5ZGYzYjdiNzUwMTFkNiBsZWdhY3ktdHJ1bmsKKzI3MjQzIDVhZmQxNGEyYThiYzZjODc2MDE0ODFhNjUyZDg4MWY5MTZjZTQ3OWQgbGVnYWN5LXRydW5rCisyNzI0NCA4MzJmMDUwMTE0OGJiNzhlY2YyZWU0M2UyOWQzYjI2OTVjNGVkMTdmIGxlZ2FjeS10cnVuaworMjcyNDUgMDQ5OWRmNTg4NGQyZjU0ZmZjNDNmMDRmNjczMWU0NjY3MjY4NTFkOCBsZWdhY3ktdHJ1bmsKKzI3MjQ2IDRmNmQzMWRhY2Q1ZTY3ZTQ5YzUyYzU3NzM5YmUyY2QwMGVmODkzMTQgbGVnYWN5LXRydW5rCisyNzI0NyAwODQ3NWM4N2QyNGY1MGQyN2I4NDNlMTJlOGUxMDc2NTlmZDc3N2NjIGxlZ2FjeS10cnVuaworMjcyNDggYmJhZWFmMjcxOWM0YmJlNjU2MmU4N2NlMGEwY2U5MTg2NTc2YTdiYiBsZWdhY3ktdHJ1bmsKKzI3MjQ5IDhiN2Q4N2VhNDg5NGUxZDYwOTYwYmIwODZmZDI4NTNiN2Y3NmFhZDYgbGVnYWN5LXRydW5rCisyNzI1MCAzZGJhODY2ZTg2MmU5ZmZhNjFiYTQ1MWI0YjZmOTcxZDUwMzAwMjM2IGxlZ2FjeS10cnVuaworMjcyNTEgMDAwYWI1ODRlNzdhNjFiNDI4OGFlYjFiNjNiY2QwZTc1Y2NhNTdmMCBsZWdhY3ktdHJ1bmsKKzI3MjUyIGVhN2U3MTdkZWUyNzIzYjQxNjQ5OTc2MGQ1NTU0N2YwOTgwODYwMjIgbGVnYWN5LXRydW5rCisyNzI1MyA0YzY3ZGQ0MmExZDllYTM4YzU5OWM5NzM0OGZlY2NjY2M3ZDQxYmQ5IHJlbGVhc2UyMi1tYWludAorMjcyNTQgYWI1MzU1ZDg3M2RkNTg3YzFiZWU0NzAwZGQyMDNmM2U4YWFkN2NjOSByZWxlYXNlMjEtbWFpbnQKKzI3MjU1IDFjZWY2MWQ1OTQ3ODY3MWUwNWJiMzI1NGExNmQ4Y2IyZTYyZTVjZmMgcmVsZWFzZTIyLW1haW50CisyNzI1NiA3YjY2ZjAwMzQyMzNhNzY2NzQxYzMzNmU0OTYwMWJmM2I2N2RiYzEyIGxlZ2FjeS10cnVuaworMjcyNTcgNDFhYjUzMmQ0ZjYwMWNjYTQ0Y2M2OTk1YjAwMzdiNWE5YjM4ZGNlMSBsZWdhY3ktdHJ1bmsKKzI3MjU4IGMxNDVmZGRlYTM0MDg0ZmY2M2ExOTBiYTM2MTIzNGZjMDA4MGYzN2UgcmVsZWFzZTIyLW1haW50CisyNzI1OSBlYTlkMzMzZjkwMzRlMWQ1MjM3NDYyYmI4MzAwMzI4ODNmZWVhZTQwIGxlZ2FjeS10cnVuaworMjcyNjAgYTQ0ZjM4NzdhMzg2YmYyNzM4NzU0ZTE5YzUzMTc4YmRkODgwZDQ3NyBsZWdhY3ktdHJ1bmsKKzI3MjYxIDgzZTQ1OGE2M2MzZmJhYzQzNzZlNDJkOTRiMjJkZDYzODEzMzNmZDAgcmVsZWFzZTIyLW1haW50CisyNzI2MiAzMjRjNzI2NzVjOGQwNGI0YjIyNTNjMGNhNDI4YjY4ZDQ0ZGIyZWZjIHJlbGVhc2UyMS1tYWludAorMjcyNjMgMDJjNTA0NWQ1YjRlMGEzMjdmOGZlODg5Mjc3MGI4NmVjYTgzMjQ4MSBsZWdhY3ktdHJ1bmsKKzI3MjY0IGFkMWQ4NjJmYjYzMjY0ZGYwYTNmODIyY2M0ODZhODU2NGUxMTc5NDcgbGVnYWN5LXRydW5rCisyNzI2NSA4MzA1YTE5NTg0YmM4OGFlMTZlNjhhOGVjZjU1ZWFkMTIwNjY2MDI4IGxlZ2FjeS10cnVuaworMjcyNjYgZjUwMzBhMjk5MzVkY2FiM2EzMmNkYTBhODZiMTAxMGFmZjhlYTc2MSByZWxlYXNlMjItbWFpbnQKKzI3MjY3IDI4NTcwMmYwODI0YTYzN2U3M2M4ZTVmMWJhNWY0YmFmYzQyNTJkMTIgcmVsZWFzZTIxLW1haW50CisyNzI2OCAwODk5NDA5YTBjYjZkMWUxZTNhODYzNjk4N2NjMzljNmZlYTU2NDI5IGxlZ2FjeS10cnVuaworMjcyNjkgMDFjZGQzOGQzNWZhMGQwYzIwYjFlM2YzM2ZhOWYxYTM4YWRkZDU3MyByZWxlYXNlMjItbWFpbnQKKzI3MjcwIGEwN2JjMzAzYTYwZDhhZTNiNzRlNTk1YzE2MGMzYzg4ZmFmNTUxNjggcmVsZWFzZTIxLW1haW50CisyNzI3MSAwNjZmODkzODA3MWE1NTA4OGRkZjdkZmNjYjY5MjI4MWFmYmMzYTkwIGxlZ2FjeS10cnVuaworMjcyNzIgNGYwNjA2Y2VlZWY4Yzk0Mzk0ZWIyYmNmMjkzZTFkZTUwNWUzNTcwMiByZWxlYXNlMjItbWFpbnQKKzI3MjczIGU4YmFlMjUzNzg0YjNlZGNiY2UxMzI2NDI3NGNiZTQ3MzcyMmI3N2QgbGVnYWN5LXRydW5rCisyNzI3NCA5Y2U3MWIxY2MxN2Y3MThlOWNiOTI1MGNiMjBkZjI3YzFlZDNlYTcxIHJlbGVhc2UyMS1tYWludAorMjcyNzUgNzNjZjRkODQ3NTcwZWNhYWI1NDg1MjQzZGE4N2JlYTQxNTkxMDk3YyBsZWdhY3ktdHJ1bmsKKzI3Mjc2IDkyZjI4OWMyZjdjNjNkOTc3YjE1OTE5ZThiMzhkYWZlNDlkMzU5YmIgbGVnYWN5LXRydW5rCisyNzI3NyBiMTZkNGJlNmEyMzJlZTE4MTExODQ3NWUzMGQwYWI5MWU0ZTQ1MWFiIGxlZ2FjeS10cnVuaworMjcyNzggOTIxMDY0YzI2Mjk3YjI1ZWIyM2JhOTZkNGNjMWJlYjE3NDNhNThjZiBsZWdhY3ktdHJ1bmsKKzI3Mjc5IDY4OTNjZWVjODYxMGU5YzU0ODQzNDYxZDQ5MzhkNzk1ZjJmYTRiYTcgbGVnYWN5LXRydW5rCisyNzI4MCAwNzVmNzU1YTY1ZGExNmJkZWZmZjM3MDkwMGE4MzkyMmEwNTQxNjM0IGxlZ2FjeS10cnVuaworMjcyODEgMTI5OGU5N2ZiMzQzYWRiMTZiMmRkMWVkYmQzYzQ2Y2U2Yzc1ZGJhMSBsZWdhY3ktdHJ1bmsKKzI3MjgyIDdlM2VhYzVkMzI5OTc5Y2Q5NjIwZjhlMGIxZmUzNGE1ODQ3Y2EwZGUgbGVnYWN5LXRydW5rCisyNzI4MyA2MjBiNjk5Njg1ZmYwNDI4ZDI5NTYwYzk5NzlhYzMyZDNlM2RmYTFkIHJlbGVhc2UyMi1tYWludAorMjcyODQgZmYwY2Q2ODc4YmRkZTVmYmYyMzY1NzU3MTFhMDg1ZDM0YjU3MDc2ZiByZWxlYXNlMjEtbWFpbnQKKzI3Mjg1IGNlMTYzZjM0MGNkZmY1YzM2MjJmOTYyMjhlYjgxYmUzMTQyYTZlOTAgbGVnYWN5LXRydW5rCisyNzI4NiAwYmNlZjNjYTIxYzA2YTM3MjM4N2QxOTE4ZTk3NThlZDdhMzljNzE3IGxlZ2FjeS10cnVuaworMjcyODcgNWY2OWQ2ZjE3YWEzMTA5MmQ3MDc3YWYyZjhjZGI4NzU4YzJhMzBjNyByZWxlYXNlMjItbWFpbnQKKzI3Mjg4IDgxNWQwMjgwMGQ5ODBiZjAyMTIwODQ0OTU1ZmZkMDgyODE0NWM4ZjYgcmVsZWFzZTIxLW1haW50CisyNzI4OSBiYWU5OTZiYjdkODJjZTJkZWU5MjQxNzcxZjRhMmFlNWNjMjU5NzY2IGxlZ2FjeS10cnVuaworMjcyOTAgMzc1NjBmNDM0ZjZhMmJlYWUwZGE2ZDJhNzVjYjE0MWMxODdjZGY2ZiByZWxlYXNlMjItbWFpbnQKKzI3MjkxIDEyZjQ5ZmE4ZjQ3ZjJhYmEyNDY2YmYyMDRjMWM0MTllMThlYjA3ZjMgcmVsZWFzZTIxLW1haW50CisyNzI5MiA5MjExYmM3MjQ5YTA3ZWIzNDQyZDRjY2QwNTIyNjNhZTU5NTcwNTE2IGxlZ2FjeS10cnVuaworMjcyOTMgZmJhN2QxMDM1ZmVkNWVmYzFhYTQwMzMxYTEwYzQ3YjVjM2ZjZTQ4OCByZWxlYXNlMjItbWFpbnQKKzI3Mjk0IDU1ODZmMjA4NTgxNTg2YjVmOTFiOGQ5MzA3YzM0NDNlZWViYjczNDIgcmVsZWFzZTIxLW1haW50CisyNzI5NSA5NzBhYTk3MTI4MTMxYWU0OTc3ZTc5OTI3MDYxZDA0ZDhlMjkyYWJhIGxlZ2FjeS10cnVuaworMjcyOTYgN2RmZTQ4YzdhYTY1ZTBjNmNlY2QxNWU5ODFhZmMwYWE4NGIwODZhNyBsZWdhY3ktdHJ1bmsKKzI3Mjk3IDI2YmExN2I3NThiOWVkZDk5YmJkY2NlOTQ1ODY1NTU5NmY1ZGE0N2YgbGVnYWN5LXRydW5rCisyNzI5OCA4ZWIyZjMxZWVhOWViM2VhZTJhYTJjNjQzODZmMjg5YzA0MWEwNWIzIGxlZ2FjeS10cnVuaworMjcyOTkgZTU1OGE0MGI2YjUyMzExNjEwZDhiMDkxZTRmMzhjMDhiMmFhMzFiYSBsZWdhY3ktdHJ1bmsKKzI3MzAwIGVhYjhlY2E5ZWM1MWQyYjkyZjcyOWRhMjNhNTAzZmQyOThkY2E0ZTggbGVnYWN5LXRydW5rCisyNzMwMSA1YTIzMDJmNzk3MjQ5ZTlhMTY2YzA2OTEwODliOWFkNDViOTVhOTU1IGxlZ2FjeS10cnVuaworMjczMDIgMzA0MmRhZDE0OWFlNzNlNzNjZDJjNTQ5MjU3YjE4OWYwZWZmNDBhYiByZWxlYXNlMjItbWFpbnQKKzI3MzAzIGI1YmRlNzdkYTIwZTA3Y2Y5MTdkYThmZmNiMjgyYjgyMTkwODYyMTYgbGVnYWN5LXRydW5rCisyNzMwNCBkM2I1ZmFmZWNiMjlkZjhmYWUxZjZjNjY5MmIxYjc5ZmJkZjFjMGRjIGxlZ2FjeS10cnVuaworMjczMDUgMzUwMGRhNjY2YzBjM2Q2OTZlMTc3OWU4ZDMxYWViYjQxZWZhY2JjYSBsZWdhY3ktdHJ1bmsKKzI3MzA2IGQ2MmU2ODQ1NDJiOWJiZjUzNjZjZWJlZDNkYWMzMTFlYTdlYzliMGEgbGVnYWN5LXRydW5rCisyNzMwNyA4NGYwOTJiMTA2ZWZiOTBmZGE2MDI5MTExNmQ2NjE4MDMyNWE3ZDAxIGxlZ2FjeS10cnVuaworMjczMDggODMzNTRjMmNhMzkwM2QxNmI0MTU5ZDhkM2ViMjA4NTNmYmM5YzViMSBsZWdhY3ktdHJ1bmsKKzI3MzA5IGE2MGEzZDljNmZkOWE2ZTg2M2E4MzhlMzIwODFiY2UwNTczYzIyZDYgbGVnYWN5LXRydW5rCisyNzMxMCA2ZTJhM2M1NzAwYWM5YzdhMTFkYmE2NzViNDA1NmRmMzg2NjQ5NGVmIGxlZ2FjeS10cnVuaworMjczMTEgZGU2MjU1MTdhZGU4MDJkNGQzM2Y4NGY4Y2JkN2Q1ODExOGJkNTViZSByZWxlYXNlMjItbWFpbnQKKzI3MzEyIGFlYThmYjNlM2YzZDdkYjgzNWRlN2EzMTM4ODg4OGU5ZWMzN2EyN2MgcmVsZWFzZTIxLW1haW50CisyNzMxMyA4NWUxMjA0YjY2MTcxYmNmN2E5ODJhMGMwZDcwZGUxMWJiNGRiMTMzIGxlZ2FjeS10cnVuaworMjczMTQgNjUyZjFiMzE4ZTVhMDgxZTdkNWNkMTQ2MjgzOWVkZTMzNjRjNzMwYiByZWxlYXNlMjItbWFpbnQKKzI3MzE1IDM3MTE4YjZlNWY0NjEyNGNhNDQ2MGI3MmIwMjUxN2I2MGJlNTk3MzkgbGVnYWN5LXRydW5rCisyNzMxNiA4M2FhOTlkZWRhNzRkZTE1OGI1ZDk5MjQwNTcyOTA4OTEyMGU2NmI3IGxlZ2FjeS10cnVuaworMjczMTcgZWQ2MmMwNGIxOWY1MjBlMzU5YjY4MTVjMGUzYmZkYjIyZjk3ZGU4YSByZWxlYXNlMjItbWFpbnQKKzI3MzE4IGY3Y2U2OTY5NzllMThiMDExYTdlNDA3Nzk1ZjFkOThhYTIzMjRjNDMgbGVnYWN5LXRydW5rCisyNzMxOSBkNGJkNjYwMTcwMWQzNWRjOTc5ZmQ3YTk5NTY4NWU5ZjdmNzQ4MWNiIGxlZ2FjeS10cnVuaworMjczMjEgMzgzNGNiMGU3YmU2NWM1Y2NjODUwMzA5ZDE2ZWJhNTY0OWQ2MTdiYyBsZWdhY3ktdHJ1bmsKKzI3MzIyIGNiMDhjYTU3ZTJhOTY2Mjg4NzE4MDdkZGVhMjRmNDRiYTNiNTEzOTIgbGVnYWN5LXRydW5rCisyNzMyMyAxMWE2ZDliNWY5OTA2NTk2YTExYThlM2EyYWU5MjgyODE4ZWFlYzE2IGxlZ2FjeS10cnVuaworMjczMjQgYWEyMzg3NzBkODA4ZjUzZWVlNjYxZWY1OGZkMzM1M2Y5ZmE3YjYzYiBsZWdhY3ktdHJ1bmsKKzI3MzI1IDFhMmI1MzQ0ZDFjY2YzZTYxNDhkMDYxZTk5NjRlZDA4YjczODcwYmEgcmVsZWFzZTIyLW1haW50CisyNzMyNiAwM2JiYTcyODI4NTJjYmQyYWM0YTFjOGQ4NDYzZGJiNDA3M2ZiY2ZiIGxlZ2FjeS10cnVuaworMjczMjcgMzEzODE2NzIwMWFhY2Q3OGNjM2VlMmY1Njk5MDU3ZGJiNDE1NjIwZSBsZWdhY3ktdHJ1bmsKKzI3MzI4IDRlZWQ1MWFkNDkzZDRlZjNhNWYzYzkxZTQzOGYwZDIzYzEwOTkyODQgcmVsZWFzZTIyLW1haW50CisyNzMyOSAwOTZiNDc1ZTFiZWYwMjU4MzczOTBjYzU5ZjhmOGY0NGMyMmU4NzUzIGxlZ2FjeS10cnVuaworMjczMzAgN2Q4YzZiODg5YjU0ZTMwMWRkZmE4YzYwNzQyZjQ0NjM0NTQ4NWQyNiBsZWdhY3ktdHJ1bmsKKzI3MzMxIDExMWMxZTU5YWQ3MmVhMDI2NTE1M2IwMjI0MjFiZWFkY2QyNzIwMGEgbGVnYWN5LXRydW5rCisyNzMzMiBmNTQwNWM2ZWM0YWNkMzY5ZDNlMjkzNjZmZTFhMDkzNTk4NzdmZTU0IGxlZ2FjeS10cnVuaworMjczMzMgZjdlMTkxYzhkYjIzZjMyNjZmYTA1OTFjMTEzMDBlZTM3YTE0YzU4NyBsZWdhY3ktdHJ1bmsKKzI3MzM0IDFmZTAwNWM0MjgzNjg3YmM1YTVkNjFlMTYzYzI0NTg2ZWE4YzliMjQgcmVsZWFzZTIyLW1haW50CisyNzMzNSAyNWIwYWYyN2RkYzg1NzJkMTAwMWNlNmQwMDU1ZmMwMjVjMWVhYmQxIHJlbGVhc2UyMS1tYWludAorMjczMzYgMWE4MDk2YmI0YzQ4MjgwYzQ4YzI0MmY4YTAzNmJkOTU1ODE1NzAzZCBsZWdhY3ktdHJ1bmsKKzI3MzM3IGUyZmE3NDFjNTQ3ZjUxNTEwZGFmNmQ1N2FhNDg3ZGMwNWNhOTUyY2MgcmVsZWFzZTIyLW1haW50CisyNzMzOCBlZGQ3YzAxNDZhYzgyNGY1YjRlNGM5Y2M1NWYyYWRiOTNkM2FmYmU5IGxlZ2FjeS10cnVuaworMjczMzkgYTcyOTk3ZjdkYjRjNzAxOGY1Yjk1NDRkNzA3NjFjNWYzODhhYTA4OSBsZWdhY3ktdHJ1bmsKKzI3MzQwIDdlYmQyY2QzYWVmMDFiNzM5NmI4MTM2MzhmZmM5MDg5N2U2ZmYwNjkgbGVnYWN5LXRydW5rCisyNzM0MSA4MTQ5ZDk3OGIwMDZmNzcwYTkxYTc5OTg2OTZiNjA0MWVmZmQyNDJmIGxlZ2FjeS10cnVuaworMjczNDIgZmU5YzcxMzJhODY3ZThlN2EyYTg1NDQ2MmRkODk5YmJlMDNhNTg5YyBsZWdhY3ktdHJ1bmsKKzI3MzQzIGM2OWRjNDNiNzAwYTk3Zjk1Zjg1ZmM1MDVhMTJiNDI2Y2JlODM5NDMgbGVnYWN5LXRydW5rCisyNzM0NCA0ODFlNGE0YjhkZTA2OWMxNTdkMGQ3MzljYzZhZGU0YzBhZmZlNGE1IHJlbGVhc2UyMi1tYWludAorMjczNDUgMzYwMGQ4ZDA3MzU4MzI5ZDc3ZWU0NmU5Y2ZmZjE0MmRmY2QxZWNmMiBsZWdhY3ktdHJ1bmsKKzI3MzQ2IGE3YjE2OWVmODNlYWNjMWNmODMyMjJhODBiOTMwY2Q2MTkyZTJmZmYgbGVnYWN5LXRydW5rCisyNzM0NyAyNmEwZDBkYTEzMTJjM2MwY2ZjNjY4MGYyMmRhZWU4ZmI5NGMxYWYyIHJlbGVhc2UyMi1tYWludAorMjczNDggMDgyNWJkN2I1YjU1OGUwMWU5YTQ0NGEwZTNiNDhkOGNkNDAxNDgyYiBsZWdhY3ktdHJ1bmsKKzI3MzQ5IDM1Yzk4OTRmMDZiOTYwY2UxMDVjMzYyOWFjN2QyZTdmOTRhMWE5YWEgbGVnYWN5LXRydW5rCisyNzM1MCAzMjQ2M2U4ZTVlMWFlNmNkOTgzNGMxMTY3YzU3NzkzN2Y1Nzg1ZmUxIHJlbGVhc2UyMi1tYWludAorMjczNTEgYTE4MWNjY2ExMzEyODMyZGMyYjNhMDMyZWVjZmYyZWM5YTViMzQxYyByZWxlYXNlMjItbWFpbnQKKzI3MzUyIGQ3YTYyMDQyZTdlZmE1OTUwZDBmNWIyNTc2ZWY5MDRhZmE4YmRiMDkgbGVnYWN5LXRydW5rCisyNzM1MyAyMTJlZTYzNjViZmY5ODNkOTFkODUxOTg0MmUzNGNjNjIwODYzZDY2IHJlbGVhc2UyMi1tYWludAorMjczNTQgN2Q4YTE1MDQ5NmE4ZjA2ZDA2YTM3MDI1ODhlZDI5NjJmOGVjMzI4NiByZWxlYXNlMjItbWFpbnQKKzI3MzU1IGQ3Zjg1MTJkYTQyMzZjOWZjMWQ1OTczMGZhNmM5MTc2MTFkNjBmMjUgbGVnYWN5LXRydW5rCisyNzM1NiBhNTYyOTI3MzI1NjZkZDQ3ODI0YTBlYTJhN2IyZmJkYTliMWM1ZTA4IGxlZ2FjeS10cnVuaworMjczNTcgODg2MzA3NmUyZGY5MzA3Nzc4NjI1YzRkOTlkOTI1NmVjMmVkMTU4YiBsZWdhY3ktdHJ1bmsKKzI3MzU4IDMzZWE1MjJkZDNkMjJlYTk5MTNjZTI3ZmNkZmYwNDcwNWI1NTcwMTkgbGVnYWN5LXRydW5rCisyNzM1OSBiNzcxODU3ZWQ3ODg4ZGUzM2I5NjhhYmVhYTM4NzM4YmQ5YWU2ZWFkIHJlbGVhc2UyMi1tYWludAorMjczNjAgNGFiOWRmMjQxNmY5MzZkYzJhZjM3ZmIwNDcxZTM0MzAxM2MyMzk5OCBsZWdhY3ktdHJ1bmsKKzI3MzYxIDk1ZGE5OTE4N2M1NzU0MjA5MzdkN2U1ZjIxMTRhNTA2OWFkNDZkMzQgbGVnYWN5LXRydW5rCisyNzM2MiBhZDZmYTFjMDRlNDc0NzcwOGRkYWIyMjNlNWYyYWNlN2ViZTAxODc5IGxlZ2FjeS10cnVuaworMjczNjMgNDhhZDQ3MGMxZjhlMTZhNDJhZDE5Mzk1YTI4NmJmZGQxZGNlMmRlYiBsZWdhY3ktdHJ1bmsKKzI3MzY0IDQxNDY4ZjkzNTNjZTlhODkzMzMzYzE3MjAzMjg2MTU1ZjA0NjRiNGIgbGVnYWN5LXRydW5rCisyNzM2NSA3MDNlNjNhZTBmMDFmYzRkZjAwY2ViYzI0OGQ4MjY0MmJiNDM5MzAxIGxlZ2FjeS10cnVuaworMjczNjYgMWY2NTEwMDUxYzhhZTg2MmQ5MmE0ZTRhMjdmZTI4MjNkN2JkNTMzMSBsZWdhY3ktdHJ1bmsKKzI3MzY3IGRhYjg3MDFiZDNmYTI0YjQxNWU4YzNjZmNmMWE1MDNhOGVjZWNhZjcgbGVnYWN5LXRydW5rCisyNzM2OCA0ZTYzZTk3NzFmMzBjNTA5ODQ5NjE2ZDhlZTc5ZGZiMmY3YTUxNjU2IGxlZ2FjeS10cnVuaworMjczNjkgYjg4NzVmMTZhNGJlNTQ1ZjJiNzkwNDRmZjQ4MTcyMDdiNTBlZTEyOSByZWxlYXNlMjItbWFpbnQKKzI3MzcwIDQ1YjllMTIyYzMzYTdhMWVkZjE4MjJhMzdkYjNlZDZlZGZlMjhmNDcgbGVnYWN5LXRydW5rCisyNzM3MSBiNzFlMGY5NmRlMjMzNTdhZjMyMDgzM2YyYWJhZTA3YTEwZmI4MGUwIGxlZ2FjeS10cnVuaworMjczNzIgZWExODc3OGRmNmMzNzAwOGMyMTlhZDY5MmJiM2U1MmM4NmE3Y2FjYyBsZWdhY3ktdHJ1bmsKKzI3MzczIDE0ZTJlYjllNWVmMmJlYTYwYWJkOGIxNDlhNWZjMzFjOTRkNGM0NmYgbGVnYWN5LXRydW5rCisyNzM3NCAxOWE2MDk1MTdhYjhhNmJmNTJiM2M5ZTQzZjkzNThjODA3NGIyZmFhIGxlZ2FjeS10cnVuaworMjczNzUgMTRkOGVlMWU4ZGU1Y2NkMTRjNTEwODAyNDc0ZjBmYTY0YmI2YzE4YSBsZWdhY3ktdHJ1bmsKKzI3Mzc2IDAwZTU3OGY3OGNhYWEyYTg3NjNlZDBjNTI3ZTU4M2YzMmRmNDgwODUgbGVnYWN5LXRydW5rCisyNzM3NyA0NGY3ZmMzMDc2NzM2ODM4NDA0OGUyMDc1NTlkOThlNGVjNTNlN2QwIGxlZ2FjeS10cnVuaworMjczNzggYzg4MjkwNDYwNzkxOWNhMzFkYTc0ZGFiMWM3Mzk1OTA5ZGU3M2E3NCBsZWdhY3ktdHJ1bmsKKzI3Mzc5IGRjODcyYTJmNTEzYjQ0MjFhYzBlOTRjZjEzOWRlNDkzMThjZjkxMDMgbGVnYWN5LXRydW5rCisyNzM4MCA5ZDg5YTlhMDU0ZTA0MDllZjEzN2U1ZWYyNTg2YTU2YjQ3ZTY5NWJiIGxlZ2FjeS10cnVuaworMjczODEgZThhMjYzZGIxYmUwMzNhYjU5Y2JmNGZmMzM4OTkxYzE2OThkM2I3NiBsZWdhY3ktdHJ1bmsKKzI3MzgyIDcxZjEzY2Y0ZjllMmQ5MzJiNWQ5ODkwNGY0NjdiNmI4MTQwNjUzZjQgbGVnYWN5LXRydW5rCisyNzM4MyAyZTVhMWU4YzBiNDgxZDY0YTM4ZmZkZTVkZWY1YjdjMDU5MGVjNGE5IGxlZ2FjeS10cnVuaworMjczODQgZWRmOTUwYmY0MjMyNThjNmZhNjI2NDM5Y2U0ZjQ4NzEzNGY0ZGIzYyBsZWdhY3ktdHJ1bmsKKzI3Mzg1IDU4NDMzYjY2ZjU4Mzg5ODA2ZDcxNzc4NTlmOTBiNWVhOTgzZGI1NDYgbGVnYWN5LXRydW5rCisyNzM4NiA3ZjgzYjIxMjRiNGVkMzkzNmVjZTk5NWIzYjg2ZjdmNzZlZGVhNTFlIGxlZ2FjeS10cnVuaworMjczODcgZDhkZTliNWY1NjFlZWU4ZWYyNDQ2NTYxNDY1YTRhNDcyM2RhNGEyZSByZWxlYXNlMjItbWFpbnQKKzI3Mzg4IDM4NDhhYTNlZGFmYzZjNzczNDc5OWI3NzA4NjhiNWJjMmM3MGMyMDIgbGVnYWN5LXRydW5rCisyNzM4OCA3NGQ1Y2Q2OThiYmY3MWNkOWI0Yjk2NDE5ZDkwYzA5MDg4MzVjNGFkIHJlbGVhc2UyMi1tYWludAorMjczODkgZmNmMmUwMWM2MTZhNjA0ZWFmMGY1MzVhNWU4OGZlMjc0MzBiOGNmZCBsZWdhY3ktdHJ1bmsKKzI3MzkwIDkxMzU3MGFiMDczNzQzMzc3OTM2MmU4MTYyMzhkM2E3NGJhNzRlNTMgbGVnYWN5LXRydW5rCisyNzM5MSA5YTlkNmNlNWVkNGUyMjVmYzVjZjNmNzZmYTBmMzk3MWQzYjVlYTZjIGxlZ2FjeS10cnVuaworMjczOTIgYmJmZWY5NDhjNDNlODAwNDFjNTFmZmY4OGMzYWI3MmRkYzE4ZTJiNSByZWxlYXNlMjItbWFpbnQKKzI3MzkzIDc0MzY4OTg3ZjdmMGEwM2RlMTk0NWU4ZjdjZGJmYjFiMDViYzdlNDYgbGVnYWN5LXRydW5rCisyNzM5NCBiYmNlZTc0NzhmY2I4NDA0ODk3NWRkNDRhMWE3OThmMWE3NDRlM2IyIGxlZ2FjeS10cnVuaworMjczOTUgMzRiOGNkYmJkOGZlMzM5NGU1NGViNTg3YzhmYWFlYmNiOGVlNjRjMCBsZWdhY3ktdHJ1bmsKKzI3Mzk2IDliNmQyNTljMjVlYjdlYTYwMWVlNGZjYjkxYTZkZDVjY2IxZDBiNTIgbGVnYWN5LXRydW5rCisyNzM5NyA1YjUwOGNlMDQ5ZjVkMDg1YjM2MTlkZTY1Y2JhNzgzYTFiZDAxNWUyIGxlZ2FjeS10cnVuaworMjczOTggYzRkNjhmODJhNmRkYjgxNjhiODkwZTMzYzczMGI4MDVkNTA3YzZlYiBsZWdhY3ktdHJ1bmsKKzI3Mzk5IGQxMGYxYzZkOWVlOTQzMDY4Mjk1ZTAxYTVmNTAwYTIwNTkxYTE4NjUgbGVnYWN5LXRydW5rCisyNzQwMCBjMTBjMDkxOTJjMTJiY2ExZTFjOTA4NTMxZWJmNjQ4OTQ0NGE2OTRlIGxlZ2FjeS10cnVuaworMjc0MDEgMDdlNzQ5OTM1NzNjNWI1ZWQ1Y2E2NWNhZTJhZGNkMTZlOTNlZGZmNiBsZWdhY3ktdHJ1bmsKKzI3NDAyIDI3NWQwNGEzNTU0MjI2NGJkMjJiM2NkODVhY2Q2OGQyMGNmYjAwODggbGVnYWN5LXRydW5rCisyNzQwMyA3N2E5NmFjNGRkZTRjMDgwNWFhNjE2ZmE5YmQ3MTMzMTAyNzY4NzBlIGxlZ2FjeS10cnVuaworMjc0MDQgZWFlNDk2ZWZhNDYwMTMyNzQ2YzUxM2UxZDhhYzI2NTE5NmYxYmRiYiBsZWdhY3ktdHJ1bmsKKzI3NDA1IDJjMjI0NWFhY2VmODhmYzg1ZTk1ZDBhNDk4ZTE5MTgyNmY2NDEwNmMgbGVnYWN5LXRydW5rCisyNzQwNiA5Mzc3MTU4NjUyZGQwZDRiODZhMWVjMmIyZmMwYjUxYWQ1MGY4ZjRmIGxlZ2FjeS10cnVuaworMjc0MDcgYTNkNjEyOGFmYjJlNTUzMWM5MmQwMTUwNzYzZjZkZDdjMzI5ODc1OSBsZWdhY3ktdHJ1bmsKKzI3NDA4IGE3OGQ0MWVlOTQ3NGY3NjE3NGExY2MyYzE0NWUyNTAyOTZkYjMzMmUgbGVnYWN5LXRydW5rCisyNzQwOSBhZjA1MzJmMjNhYjNmZmZmOWU3MDA0MTc2YWQ1MzllYjBiN2FlNDVjIGxlZ2FjeS10cnVuaworMjc0MTAgNjNmYmJlZDEwNzE0YWE1NDY4MGRiOGY2NTY1YmYwNWQ0MzRmN2UzNiBsZWdhY3ktdHJ1bmsKKzI3NDExIGZlZjM5N2IxYjg1YzNkODlmN2FkNGNjZTJkNjE2MGI1YWNlOWFlOWIgbGVnYWN5LXRydW5rCisyNzQxMiA5MGNjYTg1N2QyMDMyMmExYjI3ZTdmYTllNjhhMmI0ZDYxMmI5MTY3IGxlZ2FjeS10cnVuaworMjc0MTMgNDA0NjI4MmNiMzM4Y2Y3ZTUzNmFhMTI0NmJmY2YyNTM2OGYwZDkzOSBsZWdhY3ktdHJ1bmsKKzI3NDE0IDhlYTg2NTY0ZmIzMjY0MzlmZWVmNmMwYTc5YmE5M2VmNmQ0NDU3NDcgbGVnYWN5LXRydW5rCisyNzQxNSBiYzZhYWU3NGRkZmU1YzQwYjNlNzUzNjYxZTkzNGYxNGU2N2ViZGE4IGxlZ2FjeS10cnVuaworMjc0MTYgMmM3OWIxYThkNjE2NTM5MTUxZjZmZjllYTgyMzJmOTViYmM5NzAwYyBsZWdhY3ktdHJ1bmsKKzI3NDE3IGQ5M2YzNDIwMTUwMzhhNzk4ZjY3OTU4ZDNkYWIwNzc1ZTJlYThjOTIgbGVnYWN5LXRydW5rCisyNzQxOCA3MTg0MGExYmQ4MmZjN2M0NjQ3YjQzYjExYjQyNjgxOWEzZTJkYzNlIGxlZ2FjeS10cnVuaworMjc0MTkgYTkyMjExMmQ3ODBjNTg5N2ZmNDQ1NzBjODM0YTA0Zjk4Yzg3NjJhNyBsZWdhY3ktdHJ1bmsKKzI3NDIwIGNiMTY5OTVhYTdlODA5ZWUyNGU3M2ZhZGY2ZGRlNDQ3MzNjYmQyNjEgbGVnYWN5LXRydW5rCisyNzQyMSA5OTEzY2Y3YzQwODYxZmY0OTQ0Yzk4Y2ZlZmNhMmMyNDhjOGQ4ZjhmIGxlZ2FjeS10cnVuaworMjc0MjIgNjdmMmI0MGJhYjcwNzBhMmRhMDU1YzAxZWIzY2ZlNWU2ZWJhY2VjYyBsZWdhY3ktdHJ1bmsKKzI3NDIzIGU5YTZhMGM0YjMzZjNjOGRmZGRlMTdmZjE0ZTlhMmEwZGYwODBhNmYgbGVnYWN5LXRydW5rCisyNzQyNCBkY2MyYjc1ZDdhNzhjMGY0ZDA0MWI5ZDMyMzZkNjBiY2VhYTY4MzUxIGxlZ2FjeS10cnVuaworMjc0MjUgMTg3MTczMzUyNDM1NDk2NWNmZTliMmRlN2NkNjlmMzYxZDUwNThiNiByZWxlYXNlMjItbWFpbnQKKzI3NDI2IDM3ZmZjZTJkOWMzY2UwNTM2ZjBmNTliOTRiYTY5MTJiZmE2ZjNhZmIgbGVnYWN5LXRydW5rCisyNzQyNyBkMjRjOGM5NDY3NDFiZmI3OTczMzFjOTE2NzdhYTBmZTEyMWEzOTM3IGxlZ2FjeS10cnVuaworMjc0MjggZGQ5ZDJlYzk2ZWFkMGNlNzI0YTM1OGZmNjY2YmU4ODYxZmUwNzUxMyByZWxlYXNlMjItbWFpbnQKKzI3NDI5IGI5ZTBjNTc1MzIzODA4NGI2NWNiODFlZWMyNjEzNWNlZmFkOGVlMDAgbGVnYWN5LXRydW5rCisyNzQzMCAzZTg2M2E2NWIxYTQ0MmNkYzQ2YjM2MTQ2YjAxNGU5OWIzM2I4NmU0IHJlbGVhc2UyMi1tYWludAorMjc0MzEgZTg3ODk3NTFhNWNjYzM2NjUxNDhiZjFiOTkzZTA3MjkxMTcxMzNmYyBsZWdhY3ktdHJ1bmsKKzI3NDMyIDkyODM0YTI0OGMxNWNiZjdlZjNmYzE0ZDg0MThiOGE4MDMyYWU0OGUgbGVnYWN5LXRydW5rCisyNzQzMyA2MGU0MWE1NGU3YjEwOWIyMGJmMDEzMDM5NWUwOWFhOTMxMzI3MjdjIGxlZ2FjeS10cnVuaworMjc0MzQgMmM2ZjkzMWQ4ZGQyNTE0MWJiYTYwZTdiNDM2NzlmY2MzOGI3YzlmYSBsZWdhY3ktdHJ1bmsKKzI3NDM1IGM3OTQzMmZlYjg2MjE1NGFhODZmZjc4MjgwZjQ3NGJlZDYxZjE5Y2MgbGVnYWN5LXRydW5rCisyNzQzNiA1YWY5MDgxYTZjZDQwOWU0YWViMTA4YTMxMWYyYmFiYzZkMzAwMzg1IGxlZ2FjeS10cnVuaworMjc0MzcgMGQ5NzE2YzNiOGVjZjM1Yzk5MjRmZmUzMDQ4NGEzNjZmMmM2ZTBhZiBsZWdhY3ktdHJ1bmsKKzI3NDM4IGIxMjgyNTVjMmJlYTcwNzdkYjMyODllZGEyOGU0NDQ5M2E4NDUwNjggbGVnYWN5LXRydW5rCisyNzQzOSA4MTQyZjhkNjY4YTBmNGFiN2FhZmVlOTBiZWM5YmJiMzE3MjdjZTA3IGxlZ2FjeS10cnVuaworMjc0NDAgODZiMzc2MGQyODVkNjBmNmRjOTIyNmRhN2M4ZGJlMjdmNWVmMDNjNiBsZWdhY3ktdHJ1bmsKKzI3NDQxIDEzMTQ2NDJjYTA5NzZiYmYwZWJjNTYzYmJjYTg0NmNmNTJhODlhODUgcmVsZWFzZTIyLW1haW50CisyNzQ0MiBhMTgwNWE1NDY2NmZiYmZkOTFhMGM2ZjMyOGI1OGUyMTMyZGYwNzcyIGxlZ2FjeS10cnVuaworMjc0NDMgMzJkYjA3NWRlZjNmNTY0YjViNmIxZDAxMjdhZDRjNWQ1MDIxZjgzYSBsZWdhY3ktdHJ1bmsKKzI3NDQ0IDk1Y2NkNWJiZGM4NmQ0ZjI1Y2Q4ZjllOWQ0OTZiMzg3NGYwNTQ5NjcgbGVnYWN5LXRydW5rCisyNzQ0NSBhNTE2MmZkNjVjM2Q1YmIwZDk4NjJiODMzOTU5ZjRhYTliNjYyNDEzIGxlZ2FjeS10cnVuaworMjc0NDYgNzAyYTU5MDBkZjdkNjVmOWQ0MDY4YjI1MTAwODk4NzVjNjhjNjk2MyBsZWdhY3ktdHJ1bmsKKzI3NDQ3IDE4M2ViYTJkMjIxNDBjMWUxZWJhNWM2M2MxZTJkZmRiNmU1OTdhNDQgbGVnYWN5LXRydW5rCisyNzQ0OCAxNTQ0N2E1NTczYmQxMTQ4OTI3M2U1MTQxZTMwMGRlMjMwMDIxNDFjIGxlZ2FjeS10cnVuaworMjc0NDkgODAwOTEyZjdkZjJlMzkyYTA0OGQxNmZiYmQ5ZGNhMzIyNTRjODdiZiBsZWdhY3ktdHJ1bmsKKzI3NDUwIGU2NmNlZDQ4MWM3N2E0YmNiMjU1NDlkOWUzMDlhYWU4NWVjMmIwMGIgbGVnYWN5LXRydW5rCisyNzQ1MSBkNzEyNmMzNDEyOGE5ZDliZDEzMzY2ZjA5MTYwZmI4NGYxOWVmNTdlIHJlbGVhc2UyMi1tYWludAorMjc0NTIgNmZlZDEzNDIyYmIxYWFmZDEyMzk2MTljZmMzNWUxZjczYjFlZjFiNSBsZWdhY3ktdHJ1bmsKKzI3NDUzIDIyZDJmMDM3YWY5ZDNjNGNlYjQzYzZlYzUzNGZkNTBiYjJmYzUyZmQgbGVnYWN5LXRydW5rCisyNzQ1NCA4NmRmYjk2YTE4MzFmZDI3ZWFhM2EwYzMzNDVkMmYwY2YxNTI5Y2MwIGxlZ2FjeS10cnVuaworMjc0NTUgMzU1ZTQ2Y2MxMjRmZjExMTZlNDVjZjAzM2UyZjE0YmNlYTgwOTQ5MyByZWxlYXNlMjEtbWFpbnQKKzI3NDU2IGI3NGQ0YTU5NzkzYWFkNDQ3YjUxNWMyMWM5ZDcwOTZlYjcwZGIyNTMgbGVnYWN5LXRydW5rCisyNzQ1NyBiMTg1Yzg1OTUyZmU4MzhkNzA5YTM2MDVjYjdkNmJmMmFmM2I4YzBiIGxlZ2FjeS10cnVuaworMjc0NTggYmMwMGVlZWYwYWM3YmFjYzA0MzAxNTM2YTAyZWNiYzc2NzE4NjBlZSBsZWdhY3ktdHJ1bmsKKzI3NDU5IDQyOThlMjY5YmQ2NzIwMTA0MzhjYTNjZjg5NTVjMjI3YTlkNjgxYmEgbGVnYWN5LXRydW5rCisyNzQ2MCA0MDI2NTY1ZmE3ZWJkZmYxOTBiMmM1MjkxODFlNTVlODg5ODAzZjA0IHJlbGVhc2UyMi1tYWludAorMjc0NjEgYTJiNjc3YWY3YjI4OWQ2NWEwYzExNTA5MTI4ODRiNzY0NzM2ZGNlZiByZWxlYXNlMjEtbWFpbnQKKzI3NDYyIDY4OTk1ZTg1NGE4OGUzZDVkN2Y3YmRhNzc3NjQzZTE3MDYwZGY4YjMgbGVnYWN5LXRydW5rCisyNzQ2MyBkYmIxNGY4NWFlN2I2MGRkMzI4ZmYxYTZlM2E0ZGE4OWIzNzc3YzkyIGxlZ2FjeS10cnVuaworMjc0NjQgMmEyMDU3NDQwMGFmYjYwODgwYTQ1YTk4Yzg2MmE4YzQ2YTNmNTA3YyBsZWdhY3ktdHJ1bmsKKzI3NDY1IGY3YWJiZDE1YjRmNDgxOWIxN2QwYzg0YjIyMDA3NzlhYzkwNTdiMDAgbGVnYWN5LXRydW5rCisyNzQ2NiBjZmNmYjVkZjZlNjFjYzRiNTBmZTNjNTJiMDc1ODQ5ZDg2NjRiYjhlIGxlZ2FjeS10cnVuaworMjc0NjcgNTE0ODFiMzljZDg2NWMxZTdlZTRiMzIxZWE4MDI4ZmI2OTU0M2FlYSBsZWdhY3ktdHJ1bmsKKzI3NDY4IDBhMThlZjVjYjNlN2VkNzcxOThjNzMwZjJlOWY0MGMyNjM2MmNmMDggcmVsZWFzZTIyLW1haW50CisyNzQ2OSBmOGQ0MWUyNjQ5YjdlNWRlNzdiNjY5MTI3MTdlYjY4ODgyZGVkZDc1IGxlZ2FjeS10cnVuaworMjc0NzAgMjhmMmJhZTEwMzFiZjNmMDg1NTZhMzllMjhmNzEwOTIxZTlmOGZiYyByZWxlYXNlMjItbWFpbnQKKzI3NDcxIDQ2YTg0ZDJmZjRlMmFjN2EwMjhkYzRjMzFkZjFhNDM4MjJhZmZjMTAgbGVnYWN5LXRydW5rCisyNzQ3MiA2Njc2NjIzYjNiNzQyMTkxNmU3OTU0OWZlNzRiZDQzM2EwYTg3MGMxIGxlZ2FjeS10cnVuaworMjc0NzMgOGNlZWU2NjMwMzIyYzU3NTQ1NDM2YzM3NmIwNjEwZjRhODVmYzM2ZSBsZWdhY3ktdHJ1bmsKKzI3NDc0IGY3YzBkNjg3MWIwN2YwMzExZmQ2OTY5NjQwYTkzMjAwYTgxNWRlMTcgbGVnYWN5LXRydW5rCisyNzQ3NSA3MzM2ZjUxZmFhNDZjYjdlMWI1MjIwMzQzYTk1NWU0MjgwOTdkZjUyIGxlZ2FjeS10cnVuaworMjc0NzYgNmNkOTMyZmYwZjA5ZDhjZmU3M2Q2ZGQwZjE1YjczOGY5OTgxMjg4NCBsZWdhY3ktdHJ1bmsKKzI3NDc3IDgwMTYyZGJkNDdmMDEzMmZhNTljOGZkZjIwYzZjYWIzZGViNmU4NDkgbGVnYWN5LXRydW5rCisyNzQ3OCA4MDVjMjI4Y2Y3N2I2ZmZmOTIwYjk4N2E0ZTY0NTMyMjg3NmI0N2M0IGxlZ2FjeS10cnVuaworMjc0NzkgMzRkNzEzNzA5OGE3NTE5NDc4NTgxZTRjMWIwNThkMmNlMTI5NjFmMyBsZWdhY3ktdHJ1bmsKKzI3NDgwIGNiZGJiOTJlZmQzNjlmODQ5N2VhOGE4MjM0MTJmZDliNjE1ZTg3YjAgbGVnYWN5LXRydW5rCisyNzQ4MSBmMzVlMjlhYTBkOTI0YzQyNDViZTQxYjE1Y2FkMjIzOWQzMjg3NjdmIGxlZ2FjeS10cnVuaworMjc0ODIgZmY2ODczZDI4YTE0NjgzZTVjMGZiODQ2N2M5NjY5MGNmODdiMTgxZSBsZWdhY3ktdHJ1bmsKKzI3NDgzIGZhNmJlOWVlNmM5YzRlYjdmZGIzOTVlYzQyMjFjMjJkNjhkNmZmYTEgbGVnYWN5LXRydW5rCisyNzQ4NCAxMzI0MGI4ZjhjYTAxNDFhMmVhZmQ4OTAyNjJmNzc1NzdiOGViZjk3IGxlZ2FjeS10cnVuaworMjc0ODUgMWUwYWNiNDVjYThmMGZjZTFjNWY2NWFkMjFlYTViZDIwZmQwYzNlZiBsZWdhY3ktdHJ1bmsKKzI3NDg2IGYzNmZhMTBlYmZhMGMyNjA1N2VjZTNmN2U3MTI5OGFjZTAyZmI1MzYgbGVnYWN5LXRydW5rCisyNzQ4NyBmMzNiYjljMTMxZjhjY2U1NjQ0ODQ5ZGUxNWQwZDAxNmJiN2FjZTBmIGxlZ2FjeS10cnVuaworMjc0ODggYjUxYTU3OGY1NzY5YjVmMTk5OTk5OGFjZjUwMWI2MWQyYzk3NWYyMSBsZWdhY3ktdHJ1bmsKKzI3NDg5IGJmMzQyMWEyODc0NDZjZDIxNjgyOTgyZjNiZjI3YjBjNjA2NWVlNjUgbGVnYWN5LXRydW5rCisyNzQ5MCBkMzMyNDg0ZTM5NGE4MGI0NmYwZmYwZjY0YjUwYjdjNjRhMDYxMTUxIGxlZ2FjeS10cnVuaworMjc0OTEgYWE2MjE3YmY5Nzc2NDNhYzQ3OGRkMTA4Y2UxYTgzMGU0NDMxNTJmNiBsZWdhY3ktdHJ1bmsKKzI3NDkyIDVkYTYwNWQyYjU0NzdhNDExOTc0ZmVlMjZkODQwZGRiZGFhYWJmYWMgbGVnYWN5LXRydW5rCisyNzQ5MyBmMzgxMTJiODgzODhlNzhmYjM4YjY4ZDk0ZGJkOTRlZDlkOGYzYWJmIGxlZ2FjeS10cnVuaworMjc0OTQgN2RjZWYyZjg3MDY4MjI2ZGM3ZGJhOWIyY2JkYWEwYzI4OTQxOTFhNiBhc3QtYnJhbmNoCisyNzQ5NSBlMzMzOTNjZTRjNTEzYWQ3YzJlYzA3NDVhZmJhMTQyOGZhZTRjMTkxIGFzdC1icmFuY2gKKzI3NDk2IDMwYzdjYzVmMjU4NzNlZjg3M2JhZmYwYTA5YzU2Mjc5NGFhNTExYTIgYXN0LWJyYW5jaAorMjc0OTcgMzNmMjFlYWJjMTU1MDZkZDViZDkxYjYwMTU3YWI3NjUwNWY0NjcwNyBhc3QtYnJhbmNoCisyNzQ5OCBjOTZlNTg0MzhhOWYxNjUzMzhmNzJkNGYyZGQ2ZGViNjYwMGFmMGQ3IGFzdC1icmFuY2gKKzI3NDk5IGY3NGYzYzMxOTA5OTNkYTI0OTZmNjRjYTIxNGNkODlhM2MwZWM0YjAgYXN0LWJyYW5jaAorMjc1MDAgYzQyNjM2MzA2ZTk2YjZkMDg3ZDA2OThjZjVlOTIzOWI5MmQ5M2Q3YyBhc3QtYnJhbmNoCisyNzUwMSAyYTZlYzk5MjIyOGJhN2EzNWYwNGYyMTRmZGYyNWZlMGVmZDM2MjhlIGFzdC1icmFuY2gKKzI3NTAyIDg0NGYxMjlmYTEyODUyODU1NzdjZTQ1NTkwMzkxMWQ4ZDA0NmI1YzAgYXN0LWJyYW5jaAorMjc1MDMgZmRmODBlMDRlNGJiZDEyYTFjMTZiMzNkYjA3NzM5MzI1MWFmOTg5ZSBsZWdhY3ktdHJ1bmsKKzI3NTA0IDMxMTM3NTQ2NGZhYzMzMmFjYzMyMjQ3YzhmMDE4NDc0NDY4NmIwMjEgYXN0LWJyYW5jaAorMjc1MDUgOWU2M2IwZjQwOWQ0YjM2MDY3YjdjMzYxNzU2ZTMxZmQ2ZmE0MTJlZiBsZWdhY3ktdHJ1bmsKKzI3NTA2IDc2ZTlhMTRmYjdjNWEwYWYzYjk2NzlmZTg4ZjRlYjIzNzcwZGRjZDUgbGVnYWN5LXRydW5rCisyNzUwNyAzOTliMDlhMjdhZjMxNGI0NzBiMzE2Mzc5NWYyOWJiM2U5ZmU2NzNiIGxlZ2FjeS10cnVuaworMjc1MDggNzA3YzZmMDI2MTQyYTQwZDZiNWQ4NmQxNmQyZmQ5NGEwOTllOWFjNyBsZWdhY3ktdHJ1bmsKKzI3NTA5IGU1ZWNlZjVhMTIzYWQ4OTBmMzUxMjE2YWM3MmZhYzdmNTQyODExYTMgbGVnYWN5LXRydW5rCisyNzUxMCAxMmYyYmU4NWRhMjU5YTUyNjMwMTliOTRmM2VhNGYxN2Y1Y2M0MmVkIGxlZ2FjeS10cnVuaworMjc1MTEgOGRmYWNiMDZjM2QxYTRmMTAyYWIxYzY4MjIwYmY1ZjEwNjllOTlmYiBsZWdhY3ktdHJ1bmsKKzI3NTEyIDg2NWE3N2NlNDBhOWY4NjNkNzQ0MzJiNmEwMTk5MTNkM2VjNWYxM2UgbGVnYWN5LXRydW5rCisyNzUxMyA3YzFhNzZiNzg3MTIyMmMyYTE5YmQyYWU4ODQxYjA4ZmY0MmVlZDdhIGxlZ2FjeS10cnVuaworMjc1MTQgYTQ4M2M1ZGRiN2YxYjVlNzExMGZiZDliMGVmMTk0NzYyNDFlM2Y1YyByZWxlYXNlMjItbWFpbnQKKzI3NTE1IDE3NmFkNzA2YWZiYzU2YmI3MzdkMzczMmUxZWYyNGFhYWE0MjY2ZDUgbGVnYWN5LXRydW5rCisyNzUxNiBjMzZiZTc5ZmRiZWExNzE2MDNjNDUxOWE3OTFmOTZhNjBjZGVlMGYzIHJlbGVhc2UyMi1tYWludAorMjc1MTcgYWJlZGM1Y2VjYzY0OWQ3M2M5NGZkMTAxOGIwOTAzNDY4NmMwZWM0NSByZWxlYXNlMjItbWFpbnQKKzI3NTE4IDM5YzBiZjIwMWRiOWM0MzFlYTlkODQyM2JhNzc2NjgwOWVhMThiMjQgbGVnYWN5LXRydW5rCisyNzUxOSA0MGJkYTNlMDkwZjY3YmE2ODRiM2Y2Zjc2ZDQzNjUwYTIzMmMxMDc3IGxlZ2FjeS10cnVuaworMjc1MjAgMjFiZDg2ZTAwYmNlYzFiMzM0NjM1ODA1M2IxNDkyYWIxYjkwZGU1MCByZWxlYXNlMjItbWFpbnQKKzI3NTIxIGU5ZTYxMTFiZWVjMTcxOWU4ZmRkNTk0ZDRlMTIzMTMxODQ5OWI0YWMgbGVnYWN5LXRydW5rCisyNzUyMiBkN2Q4MTZlMWY1MjI2NGFhODQ5ODJiMTFmM2ExODMwNDBlNTA5MTlhIGxlZ2FjeS10cnVuaworMjc1MjMgNzE4OTA5MTIxNzM3MWJmNGJkNzg4MjIyYzllZGJhMzQ1NmU3ODZiMyByZWxlYXNlMjItbWFpbnQKKzI3NTI0IDY5ZmQ4MjY1OGJmYjMyNzQ4MTk1NjczNjRhZTZjMDFlZmMxMTQ4YmYgbGVnYWN5LXRydW5rCisyNzUyNSBiZTAyZDUxNGI5YTY2OTZjMjBjN2JmYjNlMTdjOWUxNWE4NjQ5MWQyIGxlZ2FjeS10cnVuaworMjc1MjYgNDgxMDgwZjcxNDM5YWIzMmJlY2I5MDZiYTBiOGNmMGQwZTllZmQxMiBsZWdhY3ktdHJ1bmsKKzI3NTI3IDdiY2Q4MTc3NjI4ZjM1YWE2YTM5NjhhODNkMDE4NmM2OTkyMzE5MWIgbGVnYWN5LXRydW5rCisyNzUyOCBlYTAzODQzNzU0YzAwMjRlNzQzZWQ5MjUyODQwNjY3N2UyNzNiZjg3IGxlZ2FjeS10cnVuaworMjc1MjkgNTYyZDdmOGE4MmExOWJiMzJlMWRhODNmMTQ0MzI1NTBjNGNiYTJkMCBsZWdhY3ktdHJ1bmsKKzI3NTMwIGJiN2MzOTZkZTNhYmE3ODBhMTBhMjM5NjhkYjU3NjM2ZDM0YWIwODUgbGVnYWN5LXRydW5rCisyNzUzMSBhNTlkZjJmYTRlYzhhZmY0NjY4MzkwMzhhNjU3Mjk4ZTdkMzIwYzVjIGxlZ2FjeS10cnVuaworMjc1MzIgMjA4ZmIxZDYxMTQ4NGU3MTFjMDRmZjI1YzdkZmEwMDBhZjQxMDk4NyBsZWdhY3ktdHJ1bmsKKzI3NTMzIDk0NTZhMmNjZGE2MTBhMWRhNGRjZWZkYTQ3Mjk3NjJmN2FmNWZkYWQgbGVnYWN5LXRydW5rCisyNzUzNCA0NGMxOTY5OWZhN2VmOWRkM2YzMjkyYzlkNjhkMDkyNDA3MjQ1OTkyIGxlZ2FjeS10cnVuaworMjc1MzUgOWRkZWQ2ZjE4ODE5MWQwODc0NDQzMmQ0ZDg0MzQ4YjJjN2I0Y2ZkYiBsZWdhY3ktdHJ1bmsKKzI3NTM2IDIzM2E1MGUxMGU2NmJhNGNmMDM1ZGZkZjc5NjJlODMyMGJhMWNiNDUgcmVsZWFzZTIyLW1haW50CisyNzUzNyBjYjcyODE0MWFlMTJhMjUzY2Q2ZTViNDEzYzUxMGYxZGM1MGM0ZGFiIGxlZ2FjeS10cnVuaworMjc1MzggNjM3ZGZjZDk2M2I5ODMyYTRiODUxZGQ3ODA1MGQ2NjIzNTQ3N2ExMSBhc3QtYnJhbmNoCisyNzUzOSBkNGQ1YzM0MGUwNTQzODJiMDc4ZWQyOGJlNzAwM2YzNzJiYjg0MzcyIGFzdC1icmFuY2gKKzI3NTQwIDIyYjIxMmRkODZjMWRhM2M1ZGJkNjY4ZmRiYWYxNTkwYWExMTkyNWMgYXN0LWJyYW5jaAorMjc1NDEgZmQxNzM5NGY2ZGNlZTFiOGYyNzgwZTA0NDBhNTY0NWM2MGEwNjhmNCBsZWdhY3ktdHJ1bmsKKzI3NTQyIGU2ODVmMzJkODA2ODhkMThhOWFkM2MzMGVhOTM2OGJhNDAyNTg1NDMgbGVnYWN5LXRydW5rCisyNzU0NCA4ZWUyYWI0ZjJhMmQ0OThlMmEyMDdiZTQ4NjIxOTM1ZGFkNDVlZWEwIGxlZ2FjeS10cnVuaworMjc1NDUgYTM4N2Q0ZTUzOWMyZDgyZTdkYmFlM2JhNzk1YmQ0MDJkZGI5ZmU3NCBsZWdhY3ktdHJ1bmsKKzI3NTQ2IDc4YWIwODZhMzU0ODQ2ZmNhODg1NDdkODZiZTlkNjU3NjY0YTcyODkgbGVnYWN5LXRydW5rCisyNzU0NyAwOTU0MjZhZjRhNDI0MDY2NDY5MjIzNTI3MmYzZmEwZDgwYTlhODI2IGxlZ2FjeS10cnVuaworMjc1NDggODBkYTk1MWM4OWZiZTE0MWUxNzQyMDE5MzUyMTAyNzljYWRhMzZiNiBsZWdhY3ktdHJ1bmsKKzI3NTQ5IGQzZTQ5MGE1MTQwOGI4OGZiODg5YTQ1ZjNkYTNjYTQwODk3ZmI3ZDYgbGVnYWN5LXRydW5rCisyNzU1MCBmZGQ4MzY1NzUyNDhmODY5ZGY4M2MzOGJjZGNhYjM1YzIwZDFlM2NkIGxlZ2FjeS10cnVuaworMjc1NTEgYzMxYWZlYTg4OTM0ZTA2NDY4MjEzOTJiZDI2N2IyZDUxNWNkZTI4MyBsZWdhY3ktdHJ1bmsKKzI3NTUyIDBjYWI0ZTRmZGNmMzgwYzYxYTFkOTkyZDRkMDdiYTRmNzBlMTJiMzUgbGVnYWN5LXRydW5rCisyNzU1MyA1ZTRiOGQxZTlmZDZiMmI5N2QwYmU0MGY1NzM0MzNhM2FmNmI2ZjM2IGxlZ2FjeS10cnVuaworMjc1NTQgMzcxOTU0Nzg1NzM5ZjU3NDYzZDg2M2M3Zjk5OGI4NTQ5YzBmZDBiMiBsZWdhY3ktdHJ1bmsKKzI3NTU1IDJhYmY5ZTk0MDI3NGYwOGZjNDVlYThlMTFhZTZkMWYzMjljMmZkZGYgbGVnYWN5LXRydW5rCisyNzU1NiA0M2ZiYzY3Mzc0YTU3YjZlZjY2MDM3NDdlNWJhN2E0ZGRmMmYwM2IyIHJlbGVhc2UyMi1tYWludAorMjc1NTcgMjVmZTNhMGE4MGZiODYyMzhjYWRhYzcwMjk4NWUyMjdlY2U4YTgxZiBsZWdhY3ktdHJ1bmsKKzI3NTU4IDk4YWQ3NzJkZWZhYWJiYzIwNmMzOGViOWQ2YjhhZmYwNmYzYjRiNGUgcmVsZWFzZTIyLW1haW50CisyNzU1OSBhMDM4YWJkMDhlNGFiNTJiMGJiNGIyYWIwYzg2NGY1YTQ4YjVhYjU0IGxlZ2FjeS10cnVuaworMjc1NjAgYzg5ZDMzM2ZlMGZlMzQ2NzE2NTc1ZDgwYTQ3MjI5MmMzYjY1ZGY2YSBsZWdhY3ktdHJ1bmsKKzI3NTYxIGI5OTNlNjUxZWI3NDVmNzg0NmEwMmJjMjc4MDU0ZjA3NWU5YzUyZTAgbGVnYWN5LXRydW5rCisyNzU2MiBjYjczZTg5MWQzZWUzZjYwYjI5NTZhOTBiYjllMTBkMDhkM2YwMDQ2IGxlZ2FjeS10cnVuaworMjc1NjMgNjNhODg3ZDhhMWUzYTUxOTNhMjdmOTczMjEwMjc2NTg0Y2U0ZDViOSBsZWdhY3ktdHJ1bmsKKzI3NTY0IDVjMTUxZDk1OGZjMTQ0MjExM2M1MjFkMjI0ZDZhNmQzYWIzMDYwY2EgbGVnYWN5LXRydW5rCisyNzU2NSAxNzIzYmNkYzFlODU0ZTg5MWI3OWQ1NzE1MTU3NTdkZDUxMGE0YmYwIGxlZ2FjeS10cnVuaworMjc1NjYgYzRkY2I4MGY0OGVhMTU4ZWUwNTU0NGE0OTE3NDU3NmY5ZjY3OTEzZiBsZWdhY3ktdHJ1bmsKKzI3NTY3IGEzM2YyZGQ0NjQ0NGI2N2QwOWNhZDUyMTZhMWJiOGE0OGI2YjdlNjYgbGVnYWN5LXRydW5rCisyNzU2OCBiZWM1YjY2MTA2MjI5YzcwYTg5NTA2OWZhMzRkODE2NjcwMjI2Y2Y3IHJlbGVhc2UyMi1tYWludAorMjc1NjkgOTgyYTkwYTRkNjdiODNlMzhiYTJiY2UzNzczNDgyNzVkY2FmZjZhYiBsZWdhY3ktdHJ1bmsKKzI3NTcwIGRjMjBjN2ViNDM0ZjUyMWFlNjdhYzlmZDhiYmI5Zjc3Mjc3MjRjNWUgcmVsZWFzZTIyLW1haW50CisyNzU3MSBjY2U5MzE2YTYyZjg4Njc4YzUwMWUzZTBmMTUzYWViZTFmNTBhODIzIGxlZ2FjeS10cnVuaworMjc1NzIgYTJiY2IwMGRjYmQ1OTViMTE0OTVjMTM3Zjg2ZjQzYTkyNTA3ZmIzMiBsZWdhY3ktdHJ1bmsKKzI3NTczIDdiNWU2MTM3M2Y2ZWRjOWJkNTAwNTk4YjM0NTc1YzUyMDBiYmU2ZGYgbGVnYWN5LXRydW5rCisyNzU3NCBiOWYyM2UyMjUzZjg4N2MyODg1MDQ2Mjk4YjFiN2RlZTVjMzNhY2JiIHJlbGVhc2UyMi1tYWludAorMjc1NzUgNmViNzRlODNhNmYxMWE0ODM5NTA5ODM2MDU3NDY0ODEwMjJjMzk2NCBsZWdhY3ktdHJ1bmsKKzI3NTc2IDA3ODA5ZjZhNzk2OGIyN2RhZmY1MDY3NDVmZGI2ZTYxM2Y2ZTQ4ZmYgbGVnYWN5LXRydW5rCisyNzU3NyBiZjY0MDE4YTY0ZmY0Yzc1NGNlMTAzZjBhYmI1ODQyN2E0OTg3N2E4IHJlbGVhc2UyMi1tYWludAorMjc1NzggNWNjYWFhZDRmMzNiMWJhZmM4ZDYzMWZmYjk1ZWNhYmMzZmQ3NDllMCBsZWdhY3ktdHJ1bmsKKzI3NTc5IDNkMWYzYjdhZGUwNzM0MzM5NjM3NWFkNmY0MWVmYjA1Nzg3MTI1ODggbGVnYWN5LXRydW5rCisyNzU4MCBmMDI1OTllYzVjYjkzMTA2ZjNjMzIyN2EzMGEyYTdkNzBiMDQ3ZTk2IGxlZ2FjeS10cnVuaworMjc1ODEgOTkwZmMwNGNmMGQ0MDAxNDE1NTE1ZTlhNTY2NGEzNjhiZGVkNmI1NyBsZWdhY3ktdHJ1bmsKKzI3NTgyIDBiNmEyYWU3MDZlMjFhODc2MWE2NGQzZjU0NzQ5MjRmNzI0ODk0YjEgbGVnYWN5LXRydW5rCisyNzU4MyA3NzRkYzA3ZjFjMTZlMjM5NmUwOTQzMzFkYzZjMTAxYTMzZDc5YTAxIGxlZ2FjeS10cnVuaworMjc1ODQgOWRlYmEzNWU2MjRjYmY5NTIyYjY2N2FmM2Y0YTE0ODM3NTc1NzZlYyBsZWdhY3ktdHJ1bmsKKzI3NTg1IDA4MjAyM2MyMGNlZjIyNTA1OGUwYTVhN2ZmODMxZmNjMDhkNDNjMmIgbGVnYWN5LXRydW5rCisyNzU4NiBlNDhhNGIwYmRiYjU1ZGE0OTZkZDVmNGEwMzJiNmU4NWU3MjRjZTc1IGxlZ2FjeS10cnVuaworMjc1ODcgZjIwMTJkYjE2MTZjM2U1NjkyNDcyMTU0ZWI4YWM4ZTM4NzA1MzU4ZSBsZWdhY3ktdHJ1bmsKKzI3NTg4IGZhOWFmMjQ1Y2ViNGVhZDI1NjVlM2ZlOWQ0MWNkYTJhYmY3YzA2NmUgbGVnYWN5LXRydW5rCisyNzU4OSA1NjFlMzNhNmEzMTM4NDE3YzZkOTgxN2E4YTM2MGVlZWMyYzA4Yjc3IGxlZ2FjeS10cnVuaworMjc1OTAgZWZhYmMxNTExZGMyNzFlYzA5N2I0NjlkY2ZkY2Q3MTA2ODI4YjZjNCBsZWdhY3ktdHJ1bmsKKzI3NTkxIGE1NDY1OTM5NjhkNjRkZjQ2NTlkNzYyNzUzOGM0NzliYWY4YTZmZGYgbGVnYWN5LXRydW5rCisyNzU5MiAyNTM2N2M3YzQwYTRjNmRlNTQwODE5MDg5MmFkYzIzNDQ1ZDIxNGRkIGxlZ2FjeS10cnVuaworMjc1OTMgMDZlZTg2MmQ5ODE1NDM0NDk1Mjk2MzQ4NjcwODg3Yzc5ZmIzNWRhMiBsZWdhY3ktdHJ1bmsKKzI3NTk0IDI5NmRkMzI0MjVkNmE3M2Y0ODlkNDllNDc5M2VkNWVkN2ZlMGMwMDggbGVnYWN5LXRydW5rCisyNzU5NSAwODY3ZGE1ZTg1NDg5YWM4NTVmOTcxN2FlMWQ5Mjc0ZjcxMmMxMTI1IGxlZ2FjeS10cnVuaworMjc1OTYgZjBhMmVjNzhiZDA1YzM3NTdhZTA0M2NhYzUxM2E4MjllZTRjNzA2NiByZWxlYXNlMjItbWFpbnQKKzI3NTk3IDE2MzE0ZmY1OGVmNDgwNTJjNWMzMmU2OTBhMWE1NGRjNTdlMzliMjQgbGVnYWN5LXRydW5rCisyNzU5OCBjOGExOWE0MjgzNTg0YmI5YmNlYWVhMGUyNzE4NmJiMjY3ZmIzNTdjIGxlZ2FjeS10cnVuaworMjc1OTkgNDk0YThiZWI0NTgyNjVhMWRiYTU1MGFhZTJhYzJjYjg0YTk3ZmQwMiByZWxlYXNlMjItbWFpbnQKKzI3NjAwIGRmZDg1ZTkwMjNmY2JjNDk2YjliZTRlZTRkOTVlMGU0YjBkM2RlYzIgbGVnYWN5LXRydW5rCisyNzYwMSBkYWE1YjE0NDkyZWU5MDlkYTJlZDFhMjkyMjg3ZWU3NTQ3NmZlODYwIGxlZ2FjeS10cnVuaworMjc2MDIgNzZhZjhiMzA4OTRhN2NmOWYwNTM0ZTUxMTc0OTkwZGM3ODIwOTNlZCByZWxlYXNlMjEtbWFpbnQKKzI3NjAzIGFkNWYzYTA1MjZkMWY0M2U3ODE0MGZiMGMwOGRkMGMzZjRjNGQ2YTcgbGVnYWN5LXRydW5rCisyNzYwNCA1NjU3ODFlYTEzN2JlMmJkYzUyOGMzNmI1Yjk1YmNiYmY3NWIzODU1IHJlbGVhc2UyMi1tYWludAorMjc2MDUgNDJlZDAyYWZhNjNiZjc2YjZmYjRkZDU1NmI3OGMxYTJkYjc5Mzc2YyBsZWdhY3ktdHJ1bmsKKzI3NjA2IGIzNDcyMzM3ODNlZTM5M2JjZWM1YmJlODc2M2ZhYTY0NzY1MjY3NGIgcmVsZWFzZTIyLW1haW50CisyNzYwNyA5YmVhMmMwYzgzOGU2YzY3Nzg0NjRjOGFhM2NiMGZlZDJjYzAwYzUzIHJlbGVhc2UyMS1tYWludAorMjc2MDggNjJkOGY5NzQ4MTFmMWE0NjI2ZTk3ODFlNzk0YmUxZmIyMzMyNmQwNyBsZWdhY3ktdHJ1bmsKKzI3NjA5IDhhNjdmMjhhNDJhNWRjMThjZjUwMTZiOWYyZTJmNzUzNmYzY2JlYzIgbGVnYWN5LXRydW5rCisyNzYxMCA1YjY2ZTYzZDdhYmI3MGQ0ODRmMzhjZTkwNTRiMGI1MDY4NTQyNTBhIHJlbGVhc2UyMi1tYWludAorMjc2MTEgNDBkOTY0OTNhNDI5NTFiZjliMjY2NWYxYTc0MmJmMmQxYzM3YWM0NCBsZWdhY3ktdHJ1bmsKKzI3NjEyIDI4NjBiZTI0NDI2M2U0MDQ5NzRjN2Q3OTQ5OWRmNDMwMzM1YTkwMGIgbGVnYWN5LXRydW5rCisyNzYxMyBiNjIxMzg0M2Q4YmVkMDBlZDAyNjMxYzIxM2ExZWRmZGI1ZTI1ZWI2IGxlZ2FjeS10cnVuaworMjc2MTQgZTA2YjFhYjBiZGI4MGMzNDg0YzFmODQ4MWYwZTRkMDI0YjQ4MmZhMiBsZWdhY3ktdHJ1bmsKKzI3NjE1IDExYzQyNTM2OThkYzczZGNhNGY1MDg2YzhlZjEwNWNiN2Y3NmZmZDQgbGVnYWN5LXRydW5rCisyNzYxNiBjODkxN2I1OWMwNjU5YWEzOGY1M2Q4NjI3MDc3NzgzMDgwMDFkZTYyIGxlZ2FjeS10cnVuaworMjc2MTcgNzNhODg0NDg3YTc2NjgwYWIzYTI2YTg2YmQwM2I5YWE5OTRjMjA4OSBsZWdhY3ktdHJ1bmsKKzI3NjE4IDJiZTYzZTIwYTQ5ODJkNWFiNzQ5MWU4ZjJjZWZiZTZmYjU0MjVjY2UgbGVnYWN5LXRydW5rCisyNzYxOSAwNTk3N2M1Zjg4MGNmOGExY2NjOTBmNDYwMzc0YWM0OGEzODUxOTI3IGxlZ2FjeS10cnVuaworMjc2MjAgMzg5NWI3OGQzZWUwY2VjZjVkODJlODY0ZGMyOGEzMWMyNzUxMGMyOSBsZWdhY3ktdHJ1bmsKKzI3NjIxIDUxY2RhNmU4NzY0YTZlMjJkNTczMmM2YzBiMmRhYjQ4MTM2MzE1M2QgbGVnYWN5LXRydW5rCisyNzYyMiA5ZWFmYjRjZWE0N2E1YzkwMDNmNmJiMDhkYWJjOGExODExNTM3NWYyIGxlZ2FjeS10cnVuaworMjc2MjMgZmMyN2ZmZTIwMzZhYTEwZmU3MmViYzY2ZWVkODUyY2NjMjI1YzZmNSBsZWdhY3ktdHJ1bmsKKzI3NjI0IGEzZmMxZDhlMGFlODFlNGEzZmQyMGVmOGJmZGQwMWIwMzczNzI0YjYgbGVnYWN5LXRydW5rCisyNzYyNSBjNDIzYTg4YjIyY2VkMzQ2YThjNGMzNzhmZjdhMmRkZmU4MjllMTI0IGxlZ2FjeS10cnVuaworMjc2MjYgZGE0YzcxMjAxNDNmMDhkOTMzODUxMjQzOWZlYThlZmIyZDQzM2VkYSBsZWdhY3ktdHJ1bmsKKzI3NjI3IDUwNDQzMTI3YjIxZGM0OTcxODIzNGMyNGFkYjg1NTUyZWJmYzgxYzkgbGVnYWN5LXRydW5rCisyNzYyOCA5YTU4ZDY0ZjhmYzNmZDUyNjRjNjgwYWEwMGNiMzcxYjEyOTUxYzQ5IGxlZ2FjeS10cnVuaworMjc2MjkgNWQzZWMyOGU5YTdhZDNlODBjYTI0MjZmZTA2OTIxZmU4YmM3YWZkMyBsZWdhY3ktdHJ1bmsKKzI3NjMwIDMwNTQyMmQ2OWQzMTMzMmRhOTkzMWQ1NGEyY2UzYjIxMzUyNTExZjUgbGVnYWN5LXRydW5rCisyNzYzMSA0YTdiM2JhYzM4MTI4N2IyNDE2Y2Y2MTM3NDY0ZTlhMjI2NjMzNjcxIGxlZ2FjeS10cnVuaworMjc2MzIgODA0ZWE1MWNmY2U2ZTJjMDMyMTJiNTNmOGU4NDcyNGE0NTYzODNkNyBsZWdhY3ktdHJ1bmsKKzI3NjMzIDdkMDk4MjA1NmY3MmI1N2Q4N2E5MzVhY2I1N2MzZGZmMmM4MzdiZTQgcmVsZWFzZTIyLW1haW50CisyNzYzNCA1NTQyYmYwYmJjZTIzY2I4YmEyZDIzMWQzOGVlMGY0ZTNkYjFmNWZjIGxlZ2FjeS10cnVuaworMjc2MzUgNjJmNGI0NWIwNWZkZGExM2I5NDQwMTk0ZDc2YTE2YzIwZjFiMDhjNSBsZWdhY3ktdHJ1bmsKKzI3NjM2IDgzMTIwZjVhNDhjMjEzOWVlZGJlYzgxNDVjZWI5ZWU1OTNjZWFiYTUgcmVsZWFzZTIyLW1haW50CisyNzYzNyA0MWM1NGIzN2UwMzA4ODQ3MmFiN2FmMDE1ODQzNzMxOTcyNTI5MzE3IGxlZ2FjeS10cnVuaworMjc2MzggODhjZDI3ZGI3OWI5M2YyODU1ZjBlZmViODU4MzY4MTI2MmVlYjNjNiByZWxlYXNlMjItbWFpbnQKKzI3NjM5IGE2NzE3Mjc1MTk1YzkyOTAzYmNlNjBjOGY2ZWMyOGVhMWVkNmYwZGEgbGVnYWN5LXRydW5rCisyNzY0MCBlYWM1NGE4MzI3MmY0MjAwZTlkYWUxZjJhNTVkN2EwMWQzZWRmNDA3IGxlZ2FjeS10cnVuaworMjc2NDEgMmY2MGY5MGNlMzA5M2RiYjE1OTcxMzc2NDY0YWE3MDkzYmRkZGYxMiBsZWdhY3ktdHJ1bmsKKzI3NjQyIDZhYTJkMDllMzJjMTNmYjU2Yzk2ODFiZWYyMTYwNDc0MmRiYTgzZDAgbGVnYWN5LXRydW5rCisyNzY0MyAyN2U5NGNhY2I0M2JkNmMzNGZhZjU2MDBjZjA3NTBlMTNhNWI3NzBjIGxlZ2FjeS10cnVuaworMjc2NDQgM2I1NzFlMzJhNmU0NWZiODI1YmJiNjlhOTYxZmIyMGQyZTUxMGFlYyBsZWdhY3ktdHJ1bmsKKzI3NjQ1IGU2MDMzMjU0ZGYyMTQ1NWI4ZmM0MTQ1ODUyOTNlNTI2ZTQ2M2NmMGYgbGVnYWN5LXRydW5rCisyNzY0NiAxOGMxYjI5MGU0ODQyOTc0NzIzZjMxMjZjZDRmY2VmZjI1YTIyMjdhIGxlZ2FjeS10cnVuaworMjc2NDcgNGE1YzZmNjk0NDdkNmI5ZmY3Nzc4YjIwYTVjZTAyY2NjNTkwMmQ4NiBsZWdhY3ktdHJ1bmsKKzI3NjQ4IGQ5OGIwY2RmN2U1MWI2YTE5MGZhNDAzNDNiM2E4Yjc5YzEyMjRjOTAgbGVnYWN5LXRydW5rCisyNzY0OSA3NmNkMjg2ZTdkZTVlNzc5NWI5MTkzMDVkOWJiNmYzZWQ5NzRlYWFkIGxlZ2FjeS10cnVuaworMjc2NTAgM2EzZTA3MWQ4NGY5ODVmZGMyMzk5NTYwN2Q3OWNhZTZhMGZlNGZhOCByZWxlYXNlMjItbWFpbnQKKzI3NjUxIGQ3MjM3MDM3ZjM3OTRkOTI0NzQxZmY5OGUzODQ4ZjczMDFkOGFlNTkgbGVnYWN5LXRydW5rCisyNzY1MiBhNGY0Y2U1ZThhYTk5MTRlMzIzMDdmNTg4Zjc4MDVlYjBjYzUyOTUyIGxlZ2FjeS10cnVuaworMjc2NTMgZDFiMmJmZDkzYTI3MDg5NTBjYTBjZTZkNmIzZjczNWIzOWRmYjcwMCByZWxlYXNlMjItbWFpbnQKKzI3NjU0IGMzY2YyMjMzOGUxY2U5NDcyOGZmZDdjNDg5NGFlNTQxNjYxODM4ZGEgbGVnYWN5LXRydW5rCisyNzY1NSBjMzIwYTA3ZjAxNDY3MWEzZTMwYThkM2MwMTMyODlhMGNjNjM0Nzc2IGxlZ2FjeS10cnVuaworMjc2NTYgMWNlYmNlNTBmZTcxMjI0ZDEwOTRjNjVkYTBhMzQ5NTk3ZWJmODliMiBsZWdhY3ktdHJ1bmsKKzI3NjU3IDk5ZGE5MzY4M2VhNWIyNTQ4NjBlMTYxM2YxOTBhMDQ5NGQwZTM2YzkgbGVnYWN5LXRydW5rCisyNzY1OCAzNTI5YWQyMTM5NTU5NDNkMzQ1OGExMDI5MjI3NmI2NWFlN2Y1MTUxIGxlZ2FjeS10cnVuaworMjc2NTkgZWIwNGYxN2NjMDA4Y2E3NTMzZDc0OGQzN2E1M2RiMGY5N2U5OGE2MCBsZWdhY3ktdHJ1bmsKKzI3NjYwIDcxZjFmMzVjMDM1NzM0NzZlYTM5ODMxMzU0NjdmMDQwN2RmMGQwMWYgbGVnYWN5LXRydW5rCisyNzY2MSAxYTcwM2Y5YmJkYzBmZWRjYWNlNDc5Zjc1NGZhMzE5Mjg3NmRmMzI1IGxlZ2FjeS10cnVuaworMjc2NjIgMTU5OGExZTQ3M2UyNDc5OGZkNTlhY2RiMTQzYmM2MTY3NjgzMTQ1OSBsZWdhY3ktdHJ1bmsKKzI3NjYzIDgxOWM4MDMzNzA1Yjk1NGY1NTZlNzJmZWFjMjM1ZjdhMTBkOGMyNjUgbGVnYWN5LXRydW5rCisyNzY2NCA5NzA3ODZkMDJlODA1ZGYxN2Q0ZDliNjQ3MDc3YzRjYTFkYmY2NGU5IGxlZ2FjeS10cnVuaworMjc2NjUgYzBhNjdhMWNhYjA5Yzk3MzdjMjFlN2EwNzQzMzRlNWZlMGU0MDhiNyBsZWdhY3ktdHJ1bmsKKzI3NjY2IGQ4OTA5NzkyMDA1YWI4MmVkMWJjMmIxMzEwZmRkYWY2Y2QxODRiMmIgbGVnYWN5LXRydW5rCisyNzY2NyA0NDUyMmE3NWRlZWNlYTk0NGM4MzJlZmU0ZDM5ZDY3MTExYjIxOTAyIGxlZ2FjeS10cnVuaworMjc2NjggNGU4NTMwNmE5YmJmYTgxZWM1YmU1ZjM4NmIxNDMyODFkMmVjODYyOSBsZWdhY3ktdHJ1bmsKKzI3NjY5IDE1NzZhMmRmZjAxZjhlOThhMjU1YTFlODdmNTYyNTNmNGQ1NTM0N2UgbGVnYWN5LXRydW5rCisyNzY3MCBkODE0YTczMTkyNGEzMTVlYTU5N2VlMmRjNGRmNGQzOWNhYWIxODE3IGxlZ2FjeS10cnVuaworMjc2NzEgYjU5NjJiNTg3Y2MwOTI5ZWExY2ZmNGQ1ZWVhZGMwMjdiMTZkMDE3ZSBsZWdhY3ktdHJ1bmsKKzI3NjcyIDA5ZTRkZTVkY2IzYmFiMWVjZDQ4ZWM1NDhiNDc5MzhjZjZmNWZiNjUgbGVnYWN5LXRydW5rCisyNzY3MyAzY2FjZWYyNDllYjU1MGIyNjMwMjZjOWFkZjY3MTU2ODMzOGYyNGI1IGxlZ2FjeS10cnVuaworMjc2NzQgMmQ0MDc0ODRhNGU2MzM4ZWZmNTQ2YzFkZWM0ZjA1YjkwNGRmZmNjOCBsZWdhY3ktdHJ1bmsKKzI3Njc1IDY0MDM3MGYwOGUyYWYyOTk2N2JhYjg4YWZjNDE0YTZhNGQ1Y2FiY2MgbGVnYWN5LXRydW5rCisyNzY3NiAwYTA4ZWQwNWJkNDI1YzBhMTZhZjcyNTFjM2JjMTgwYTNkNjFkYmRjIGxlZ2FjeS10cnVuaworMjc2NzcgYTI2Y2E4YWIyN2YyYjIwMTUxMmE5ODUxNGYyZWRkYWEzZmZlNzc2ZCBsZWdhY3ktdHJ1bmsKKzI3Njc4IDg3ZTI1MzRlOWQ2NGIzNzA1MGMyNzA3Zjg4MjlkYzU1Zjg3ZjRlYjIgbGVnYWN5LXRydW5rCisyNzY3OSBlNjYyMjI2MjExZTUzOWNhZWRmZDE0YzljZTIzYmZiODQyYzg3ZjAxIGxlZ2FjeS10cnVuaworMjc2ODAgMzc5YjAxZTA3NDIyMTk5MDY5NjNiODJmOWRkMGZiM2MwMzk2MzkyMCBsZWdhY3ktdHJ1bmsKKzI3NjgxIGEwMzI5OGEzYWNhZDE0MzkwOTJlMGY0OTgzMGUwYWM4ZmJlMjI5MmMgbGVnYWN5LXRydW5rCisyNzY4MiA1MmIwOTc2ZTQ4YTFkNmU0OWQ0MDUzYjk4MzdkOWRiNGE3NzhhMjBhIGxlZ2FjeS10cnVuaworMjc2ODMgOWMwMTc4NGNlN2NhYjUxNDMxZDhiOWQ0NTBlYWVmY2JjYzczMGI2MiBsZWdhY3ktdHJ1bmsKKzI3Njg0IGM0YmY0NWNhNGQ1NTY3NjlmMDEyN2NmZTY2OTY4ZDAxMTllN2M1NTggbGVnYWN5LXRydW5rCisyNzY4NSA5MzQzNGJjMDg5OWQ5ZmQ1NGE3OWI4ZTc1MTE5NWI0NDJlNGQwN2MwIGxlZ2FjeS10cnVuaworMjc2ODYgYzkxYjdmMzQ2MjZiOWNkM2U1ODczY2QyYjU0Yzc5MzQ3OWY1NGRlMyBsZWdhY3ktdHJ1bmsKKzI3Njg3IDQyOGNiYmYwNTYzOTA2OTg1MzA4OWM5MDZjN2FmNGYxN2RkYTdhNmQgbGVnYWN5LXRydW5rCisyNzY4OCAxMzI1NzdmNjkzYjFjYzE1OTczMTgxOTRiMWU4MjQ1Mzc3ODFkNWEyIGxlZ2FjeS10cnVuaworMjc2ODkgNDE2NjU0ZTI3ZDg4OTMzNTYzZjJiYjQyNTRkNzRjMDI0OTI0Y2RmOCBsZWdhY3ktdHJ1bmsKKzI3NjkwIDY5MTM0YzYxZjg3YzA2YmMxYWQzODExNDMzYmMyMDBlMjYxNTllNmMgbGVnYWN5LXRydW5rCisyNzY5MSAwOGQzMDdjYmNjZDk1MTIwYWVkOWM2N2I4M2VjYjY1MGFmZDYzNjRkIGxlZ2FjeS10cnVuaworMjc2OTIgNWVkZTliY2M2NTFlYjJmMDE5YTRjYTZlM2U2MjlkZTc2NTVhYzNiZCBsZWdhY3ktdHJ1bmsKKzI3NjkzIGEzNTNkNmE0NTI3NjllYTAyYmIyOTFiODdkNTEwZWMwMGFkY2EyMTAgbGVnYWN5LXRydW5rCisyNzY5NCBjNGIzYTJiMjQ3YWMzN2EzNzEyNWY5N2UyODVmN2UwZDE3MWViMjRhIGxlZ2FjeS10cnVuaworMjc2OTUgNjU4ZTEyY2MwMzM2MmQ1YTY0Mjc3NzdjOGMxNmMzZGJiMzVhYmZlZSBsZWdhY3ktdHJ1bmsKKzI3Njk2IDc0ZjlhMjA2ZDRmMDhkZTEzMjNlMjQ1M2FhYTRiYmQyNzMzNmIwNjMgbGVnYWN5LXRydW5rCisyNzY5NyBhOGRmMGMwYmUyNDIzYWViNmQ2MWZlYWIzNmU0MmM4Zjk2MmI2ZDEwIGxlZ2FjeS10cnVuaworMjc2OTggZGQzODI5MWI4OWZiNTQwMDc1YjlkYzFiYTViMWQ1MjQ3OTJlODliMSBsZWdhY3ktdHJ1bmsKKzI3Njk5IDI5YWU4ZTg5MTUzYmQ2ZTU1N2JkZDk5YmQwZTI3ZDYzZjg4ZDQ5MDIgbGVnYWN5LXRydW5rCisyNzcwMCAxMjgxNWQwNTA4MGNmNjljMmM5YTk5M2U0ZWVjMTk2MDcwNDAyMzk4IGxlZ2FjeS10cnVuaworMjc3MDEgYzQzNDY2ZjdkYWU4NDE2NDU3ZTcwODFhNmI0MjkyYjY0Yjg0MDRkMSBsZWdhY3ktdHJ1bmsKKzI3NzAyIDQ3OGEyZDY0YWM1ODMwOGZhYmY0ZTRjZDc1N2E3MjY0ZmU5NzNjN2MgbGVnYWN5LXRydW5rCisyNzcwMyAzMTIyNzM1M2NiYmNjMDEwYjVkODI2OTYwZTMwNjc0NmQ5ODE3NTFmIGxlZ2FjeS10cnVuaworMjc3MDQgYWZlNDc5YTYyMzVlYzA4NDE1ZTc0NjUzYmJiMDMzNjJkMDI0NGNlNCBsZWdhY3ktdHJ1bmsKKzI3NzA1IGFiMTg3N2E3YjI2MjViZDZjNDZlZmIzMTQ5MGM1NmE1ZWZlMzkyOWEgbGVnYWN5LXRydW5rCisyNzcwNiBkOWFkZDQwZjkyZmYzMmYxOTg0N2RlMzI1YjViZjNlZmEwZGEzYmEzIGxlZ2FjeS10cnVuaworMjc3MDcgMTdkNTI2Mjk3NzU1N2Y3ZTYxODBjZTdhYjE3OWVlYzE2YWU1MGFiZCBsZWdhY3ktdHJ1bmsKKzI3NzA4IGFhNGI5YTdiMzgxN2ExOWU1ZmE1ODQ5MWE5YTAzYWNjMjE2ZTk4NjEgbGVnYWN5LXRydW5rCisyNzcwOSBlYjM5YmE2MGRhZTBjZmMyOTViYzgzY2U4ZDBkNGRhNjVkMGQxZTg3IGxlZ2FjeS10cnVuaworMjc3MTAgZDQ5N2Y1MjNiODJlZDc0YWNhMTI2Mzk5NTE2ZTMzYTFjZmQ4MDhhYSBsZWdhY3ktdHJ1bmsKKzI3NzExIGUzNzUxZmMwM2U2Yzg3ODJlOTc2YmNmNTBlYTNmYjFmOTZmYzFmYmQgbGVnYWN5LXRydW5rCisyNzcxMiA1M2IzMjI3MWU4ZTFmMTZkZjRkOTM4Y2JjYmQ3NDdmMzZmZDhiYTIzIGxlZ2FjeS10cnVuaworMjc3MTMgNjk3Nzc3Y2M4M2NjMGZmMDYzNTg1MTJmYTRmZmU2ZmZkNzFjYzc1NyBsZWdhY3ktdHJ1bmsKKzI3NzE0IDhiNGExNjViYWFlZWRmNjk4NGU0YWMwZWJmMDE1YTcxNzUzNTg2ZTIgbGVnYWN5LXRydW5rCisyNzcxNSBkZGY2NzE2MzM0NjVlNTA2ZjViN2M5NjdhZTFjMWY2Zjk2MjA3YWQxIGxlZ2FjeS10cnVuaworMjc3MTYgMjEzMWJiNzkwYWY5NThjNjUxMzQxNzg1NzUwNGI2MDBhMTQ4NGVkOCBsZWdhY3ktdHJ1bmsKKzI3NzE3IDA2YjlhOGRhZDcyMWIxOTA2ZTBmOWJkYzBmMWYyMTcxMzU4NTgwN2QgbGVnYWN5LXRydW5rCisyNzcxOCAyZjYwMzQ0YTQ5ZTg4Y2U0ZWQ5OTc0MzUxMDkzMTk1MTNmMDU0OTNiIGxlZ2FjeS10cnVuaworMjc3MTkgNDlhM2U4MzM0N2RkZWQwYjA5OTc4NDljZTcwNThiOTBhYTg3NmM5MSBsZWdhY3ktdHJ1bmsKKzI3NzIwIDY3ZWFhYmIwMTdlMGUwZDAxYjg5YWQwZTFlNmI3ZDE0OGYwOTIxMWQgbGVnYWN5LXRydW5rCisyNzcyMSBhOWI4MDljOGI5ZGJhYTNlNDE1ZTE2NWQ2MTZiMzQzOTcxODg2ZDI3IGxlZ2FjeS10cnVuaworMjc3MjIgMTM5ODU5MDE2YjQ0YmI5ZDA2NzI0YjEwZTg4ZTY0MjYzZDZkNWU5YiBsZWdhY3ktdHJ1bmsKKzI3NzIzIDNlZjAxOWNhYWQxZTUxNTA4ZDQ5YjY4ZjA5ZmNhOGNjMTllODhlZDcgbGVnYWN5LXRydW5rCisyNzcyNCAyYWUwMTQ1OTMxZjFmMzA4ZDNkZGIyOTI4ZWVkOGU4MmVhMzNjMDQ2IGxlZ2FjeS10cnVuaworMjc3MjUgZjA5Y2Y4ZWJhN2UyMzc5MGZkMzY1NTY1OGZiZmU5NmVmMjYzMjUyYSBsZWdhY3ktdHJ1bmsKKzI3NzI2IGJiMDY5MmUzMGZjNmIwMWQzYTE1MGNlMGIxY2QzNTFiY2NmYzNlY2YgbGVnYWN5LXRydW5rCisyNzcyNyAyMzJhYjBkNjYzNzUyYmEyZWE2YTExZTEzNDZlMTRmODcxNGYyNWU2IGxlZ2FjeS10cnVuaworMjc3MjggMmRjMjNmMGYzNDIxNWQ2ZjQ2YTM3OTQzNTkwNDIyMmEwZTEwYmEzNiBsZWdhY3ktdHJ1bmsKKzI3NzI5IDQ4OTMwYjAwNDNiNzcyYjhhNjAyOTEzNGM0ZTFkZTZmZDJmMzc4MzQgRFNfUlBDX0JSQU5DSAorMjc3MzAgMTg3YzRmYWRlM2RiM2ViNWY5MTFhNWQ1NjU5OWQxOTE3NTY2NDA2NSBEU19SUENfQlJBTkNICisyNzczMSAzMGQwZDhkYmYyNDQ1OGViMTY4NGQ4YjA2ZTlmMjMyODYxODQ1YTE5IERTX1JQQ19CUkFOQ0gKKzI3NzMyIDdmZWQzNTEzYWJmYTcxM2RlYzE2NmRlOThiY2FkNmM1MTMzNDY4MmYgRFNfUlBDX0JSQU5DSAorMjc3MzMgM2EzYmM3ZDlmMWY1ZTYxNjFjMjA4ZjA5ODM4ZjY5OWJjYTk2MDQ5NyBEU19SUENfQlJBTkNICisyNzczNCA0ZjZlNTZjNDQ3MzlmZTZiOTRmYmM3ZGYzYmU4NTdkMGRhZDg3MDFiIERTX1JQQ19CUkFOQ0gKKzI3NzM1IGQyZDgxZDUzZDRhMTJkZjMwYWNkNjFlZDAzZGJkYTVlNGE1YTU5YzcgbGVnYWN5LXRydW5rCisyNzczNiA4MDhiNGZlNTE4NGZjYWQ3NjVmMWViOWFmYTM5NDk3MDIyODdlMGYwIGxlZ2FjeS10cnVuaworMjc3MzcgYWE1Yzk5YjYxZGY3Nzc0MWFkNjliMmU2OWZkMzFlM2UwZjJiZDc5MiBsZWdhY3ktdHJ1bmsKKzI3NzM4IDEzN2ZkZGU3MDAwNjAxMDJmMjRjNDI5M2Q5YTFlNGZmYjM4ZWQ4NTcgbGVnYWN5LXRydW5rCisyNzczOSAxNTdiYmZiMTdmNDRjZTkyZGJmNmI1OGY3ODIyYmJiNGJjNWRjNWUwIGxlZ2FjeS10cnVuaworMjc3NDAgNTVlYWIxMGU0NzJkMzlmMzg0NjIyYmY3ZGE1YmNmNTExYmNkNzg4YyBsZWdhY3ktdHJ1bmsKKzI3NzQxIGZkYTUxM2I2NzFiNmM5ZjYyYmU2Nzk5NzQ0YTAwOTNjNmVjYzdhNGYgbGVnYWN5LXRydW5rCisyNzc0MiA0ZWFkZjdkZmNkYjRhOGVlZDRkYTNhMTllNzVmNDBhYWYwM2RkMjczIGxlZ2FjeS10cnVuaworMjc3NDMgMTk0MTQwYzgzMjc2MDQ5ZGY1NTU2MmZhNDY1N2QzODk3NGI0MzQ1YyBsZWdhY3ktdHJ1bmsKKzI3NzQ0IGEzNTcxNDM2ODM3YzFhMjQ1ZDIzMDkyYzhlNWNiMTNhMzY4ODNkYjkgbGVnYWN5LXRydW5rCisyNzc0NSAxN2U5NGU2MjM1M2M3MzhkMzc1ZTc2NWZlNzdjMWE5ZDIxZTg0ZjE1IGxlZ2FjeS10cnVuaworMjc3NDYgMzMwOGE5NmI5NzZmNmU4OTUwZDdmNzZlZjI0NjU5OGRhNmZhZjdmMCByZWxlYXNlMjItbWFpbnQKKzI3NzQ3IGYzYzhlM2FmN2I2YmY2MjY3OGIyYTZmNzA1MjNiNGQxNTM3NWUyM2UgbGVnYWN5LXRydW5rCisyNzc0OCAwMjBkOTY2MjUzNTc4NjdjZjYwZjU3MTc5NTI5MDhlOWI4YmMxOWE1IGxlZ2FjeS10cnVuaworMjc3NDkgZThmZDVjYWIwZGIzZWE3MjYwNzVkNDk4YWU5ZWIyMDdlOTRlNTg2YyBsZWdhY3ktdHJ1bmsKKzI3NzUwIDcxM2FkN2UwNDA2YWE2MmFlMzEwZWZjYjA5NmMwYzgzMzM2OWRmMWMgbGVnYWN5LXRydW5rCisyNzc1MSA5NzlmZjVkMGFlMDdhZjU0M2E3NzM3MzY0N2VkZmQ1ZTA5ZjkzOWMzIGxlZ2FjeS10cnVuaworMjc3NTIgYWEwZDJkNTFmYmRlYzExMmFmMzA0MzMyMTY3MTdkY2RkZTVmZDE2OSBsZWdhY3ktdHJ1bmsKKzI3NzUzIGE3MTg2YmI5MTQyYzkyOWVlMWQwMDVhOGFlNmQzZThiMjE3ZjlkNDYgbGVnYWN5LXRydW5rCisyNzc1NCAxMDEyOTA2ZThhZGYwZmM1MTAxYTY0NjVjMGE5ZTUxMDA2YjEzYTk2IGxlZ2FjeS10cnVuaworMjc3NTUgOGQyM2JmYTIwY2RiY2RiMGFhY2EwNDhlNGMyZDdhN2Q3MjkzNDA5ZSBsZWdhY3ktdHJ1bmsKKzI3NzU2IDRhYjRkYWM0NjJmZmRjOTk1ZjNkOTI2NjlkOGNhNzViMDIyNWYyOGIgbGVnYWN5LXRydW5rCisyNzc1NyBlMzYwNWViMmY4NjZiM2I1MzNmOWM1ZDFmN2IxYjdiOTcwMDAyODRkIGxlZ2FjeS10cnVuaworMjc3NTkgZjZlYWE5ZDk5NmVjMjQyYzY1YjZkODY3YzFlZjA3MzA5ZGNmNGMxNSBsZWdhY3ktdHJ1bmsKKzI3NzYwIDQwZTAxNDAxODFjZjg1MDAwYzA1YTExNDU2YTYwMGQ1YTM0NzczNmMgbGVnYWN5LXRydW5rCisyNzc2MSA0M2VlMWMwNzUwYTIzNTU0YmRlNTU0ZmY3M2E3MzMwM2RiOTM5OGMyIGxlZ2FjeS10cnVuaworMjc3NjIgZGZlNTRhZjI5YTQ3M2ZmZThlMzc5ODIzZDMwYjM1NzZhZjU3NmQ0NCBEU19SUENfQlJBTkNICisyNzc2MyA5ZDY0MWNlNjZhZjM1ODIxY2E4MmM1ZjA4ODZhYThlY2U4OGRjM2M3IERTX1JQQ19CUkFOQ0gKKzI3NzY0IGY3OWM3YWFlNjYyMGQ4YjJiM2Y3ODc5OTMwMDYxN2YyZmE0ZGM0NTEgbGVnYWN5LXRydW5rCisyNzc2NSAzMDcwYjcxN2ZjM2Q4MzMyNjZiOGZlOGEzNWVhNGE5NjY3NDUwMWRjIGxlZ2FjeS10cnVuaworMjc3NjYgODljZTYyMTI2NjY0ZjI0YjY0MGJmOWM5NDYyYjgyYWNmMTg0Yzk1MiBsZWdhY3ktdHJ1bmsKKzI3NzY3IGFhOWUwNTQyNzBhMmE5ZmVmYTY2YjllZWFiMjc5ZGYzZDUzNTc3N2IgbGVnYWN5LXRydW5rCisyNzc2OCBlYzJjODU0YmQxOTZkM2FjYWM0NzRjMzMwNWNkNmJlMTE1N2VlYzJiIGxlZ2FjeS10cnVuaworMjc3NjkgYzlkZTU1ZmJiMmIxZGVhN2NlZmQxM2VkNmRjYzQyZTI3NjFiZjJmYyBsZWdhY3ktdHJ1bmsKKzI3NzcwIGUyZDQ2MWJlZmM3YThjNWIyMTc0YWY3NzBlMzlkMWY1YmI0MDQ2OTIgbGVnYWN5LXRydW5rCisyNzc3MSA2NzI4NDNlZTRiNjFmYjM5MWEwOGYzYWE1ZWM1ZTY5NzlkOWE4NWEyIGxlZ2FjeS10cnVuaworMjc3NzIgZDhhNjgyZDRjNjkyNDA0NzAwNmM5YjI0OGNiMzNlZDIzYjIzNmY3NyBsZWdhY3ktdHJ1bmsKKzI3NzczIDQxNTZiZjliMDA0M2MwYjc4YjlmYTA0NDNkZjA2Y2M1YmY3OGZiNGMgbGVnYWN5LXRydW5rCisyNzc3NCAzYzQ1ZGNkMDEwMWRlZWJlZTk0ZTBmODhjMDQxNDIxYjNiZWQ1NWQ3IGxlZ2FjeS10cnVuaworMjc3NzUgNjY3MzE3MWZjMzdlYmYxYmUxODU4YjhkMGVjMmY1ZjYxZTM5NmQzZSBsZWdhY3ktdHJ1bmsKKzI3Nzc2IGRiZGFkYTk2Njg1ODJkZjE0ZGNjZTczNTU3NDU4MzIzN2FiYWVhY2UgcmVsZWFzZTIyLW1haW50CisyNzc3NyAwZTI3YjY3MjQ3ZGFhNGIwZjBlYTQ4NGM0NDI5ZTBhY2Y1YmU0YjcyIGxlZ2FjeS10cnVuaworMjc3NzggYjQ1ZDFiMzA0MGFlZjAwZjc1Yzk2MjU3NTMzNGQ0NjhjYWZhYjYyZiBsZWdhY3ktdHJ1bmsKKzI3Nzc5IDNhYWFkOWRmNzExZTQzZTRmZTkyNGVhMzlmZTI3ODU3OTVhOTNjNzYgbGVnYWN5LXRydW5rCisyNzc4MCBlYjc1OWRhMDY0YWE4NWRiODYzYjY5MzM1MzdhYTMwYzIyMzZkODdkIGxlZ2FjeS10cnVuaworMjc3ODEgYWM0OWIyODA3Yjc1MGQ0Nzk3OGYwODkyNDU5OTBkNmY0YmZkZjIxNSByZWxlYXNlMjItbWFpbnQKKzI3NzgyIGI4ZTM1OTZjZWJkN2QzNDRjMDc5MjBjMmU1MTFjZGIxYzQzOTExZmUgcmVsZWFzZTIyLW1haW50CisyNzc4MyAwYTMyN2I3Njg4Njg3NGFiZGJmMTk3MDE4OTI4MzQzOWVkYzM0OWQ2IGxlZ2FjeS10cnVuaworMjc3ODQgMDdkZDJmYzZhYzliNzdhYmNhMzg1YmI3YzAyMjdhYzQ5ZmRiMzgwOSBsZWdhY3ktdHJ1bmsKKzI3Nzg1IGJiNjRhODYxNGY2NjgxNzRlNDNjMDM4OWI3MjMyOWVhY2Y3MGQ0OWUgbGVnYWN5LXRydW5rCisyNzc4NiA0NzdjNzRkMDA2NmYwNjI3NjgwZWM5MmU2ZTY4Y2JmZThhMzkyMzQ5IGxlZ2FjeS10cnVuaworMjc3ODcgZWQ5OGM4OGIyMzUzYmU0MDkzYjA3MDUzYTk5NjJkN2E1YzUzMGY5NyBsZWdhY3ktdHJ1bmsKKzI3Nzg4IGY2MDUyYWViMTM0ZmNhMWU4MTZmZjIyYmZmZjA4MDljZjBlMDBhMjMgbGVnYWN5LXRydW5rCisyNzc4OSBjN2VkOTI1Yzc1YjMxMGE5YWViOGZhMzMxOGYyMDk2Yjg4MDZmOGNjIGxlZ2FjeS10cnVuaworMjc3OTAgNjA4NzM1ZGQyZWJjN2Q2ZTUxYzgyMDZkZDE4YTIwZTZjYjUxNzI2MiByZWxlYXNlMjItbWFpbnQKKzI3NzkxIDgxY2E2Y2E1YzMwNzRiMzQzY2ViYTdmOWYxYTUwNjc5YTMxNmYxYTAgbGVnYWN5LXRydW5rCisyNzc5MiBiZDM2NjViZDJmNzgzMzI0MDk2ZTkzODNhNjMxMWZlZjc4MDJjYmJmIGxlZ2FjeS10cnVuaworMjc3OTMgOGM2YTk5MjI0NTU3OWYzODEyYTk1OWNjOWFhM2I1MTE1NDBmMmQ0NCBsZWdhY3ktdHJ1bmsKKzI3Nzk0IGViNTU0YWEzNjFlOWNlODIwNmU3Y2ViM2M0ZDc3NDI1MjU1ZGM3ODAgbGVnYWN5LXRydW5rCisyNzc5NSBjYTVhYzk2N2M3YzRjY2NhMTNkY2I5ZDg1YzcwMmQ4ZTA1YzBlN2U1IHJlbGVhc2UyMi1tYWludAorMjc3OTYgODAxMjlkNGE4Y2VjMTc1MzFlM2U2M2VhN2U4OWQyNjNiMDRmMDJlNCBsZWdhY3ktdHJ1bmsKKzI3Nzk3IDMwNDQwODcxYzZlNTY0MGM2ZDU2ZTUwMWYzOTQ3YjQzNWVkMGVmZTIgbGVnYWN5LXRydW5rCisyNzc5OCBkMDQ5ZmQ1OGU0ZGRjNGRkZWVjNzQ4MmRlMjRjOWJlZTg4MTRmMWJiIHJlbGVhc2UyMi1tYWludAorMjc3OTkgNGRlNWM3ZTYyMzFlNWQzNjkwNWY3NGM3ZGExZjRiNzRjZTBhYmI4YiBsZWdhY3ktdHJ1bmsKKzI3ODAwIGQ2ZWM0ZGFiOTI3ZTY3ZDIyODU3NGE1ZjkzYzdhYWQ2N2VjZjM1NzMgbGVnYWN5LXRydW5rCisyNzgwMSAzMWE3MTE5YmQ4ZDRkZWY3MTM3NDIxMTk2MWUzYmVkYmFlYzAzZTI1IGxlZ2FjeS10cnVuaworMjc4MDIgOGUyNjZkMGFjZDEwYTA4MjFkNTEyNmZmZDcxOGQ3ODYzMDA4MTJkNiBsZWdhY3ktdHJ1bmsKKzI3ODAzIDQ3MDhjMDlmMDM1MGY5NTQ2NDA2MzRhMDgwMDk5YzE2YzVhZWZkODUgcmVsZWFzZTIyLW1haW50CisyNzgwNCAwODkyNmNjNWYyYWZkMDQxNmYwYTczZmIxOTMwY2E0MDNjZDNjMTM3IGxlZ2FjeS10cnVuaworMjc4MDUgYTA4OGNkMDhkYWRlNzY2MjUwZDE4NjYwNjlkNzlkN2M0NzkwN2I2ZCBsZWdhY3ktdHJ1bmsKKzI3ODA2IGY1Y2ZhMGVlMDJjZjNmNjZhMmFiNzNiNGUyYTZkODFkNjZjMGJmNDIgbGVnYWN5LXRydW5rCisyNzgwNyBkZDZhOTcxMWI0M2NkOTA2ZjBlNDIxYjY5MjNmOGZhY2ZlNDM1MDA1IGxlZ2FjeS10cnVuaworMjc4MDggYTBhNTllNTJiYWVjNWRkMGM4ZWE2MDVjODBiNzBmNjNkY2JlZDhhMSBsZWdhY3ktdHJ1bmsKKzI3ODA5IDUxNWU4NzIzY2FlZmY2NTk2MzRmMDkzOTRmOWFjYzYwYmIyYzc4YjUgbGVnYWN5LXRydW5rCisyNzgxMCAyNzU2OTNiY2VlNzQwMmIzMGI2YzgzNzdiNjEyOTBkMDg3MDcxMTVmIGxlZ2FjeS10cnVuaworMjc4MTEgMzZlMmZkM2YwOGY3NTgwZGVlNDZhZDhiMDY5ZTkzODk3ZTczYmM4NSBsZWdhY3ktdHJ1bmsKKzI3ODEyIDViZTk2MWE4ZTlkYjNlMTgwZjg2M2RmNDIyZWJiYTk4ZjBmMGZiZDEgcmVsZWFzZTIyLW1haW50CisyNzgxMyBiZDYyNjhiMTdiNzU3N2M5MTdhYmQyZGI5OTc2ZGJjZTQyZTQ0NjM2IGxlZ2FjeS10cnVuaworMjc4MTQgM2RiMjYxYTkzYTViOWY3M2EzN2U2MzUyOTgzZWE4OTc5ZWY2YTdjMyBsZWdhY3ktdHJ1bmsKKzI3ODE1IGY0Y2Q3OGIzYjc3NGNmYjk0YTcyYWE2ZmY1YTQ1NjQ4MDcxYWVkMDkgbGVnYWN5LXRydW5rCisyNzgxNiBlZDg5MjQxMWVlMGQwMGI1ZWE4NGU0OGJiOTIwZDBkYmMzMTFmYmI0IGxlZ2FjeS10cnVuaworMjc4MTcgOWFmYWMwZGQ2YjZlNGVhMGU2MzJlMDUwOGRjMjk1OGU5YTk5MmYzNSBsZWdhY3ktdHJ1bmsKKzI3ODE4IGVhNDgyMTk2NDA0MzI0YzNiMGY5OWQ0MmM1MTRjYzliYzZjMGIzMzcgbGVnYWN5LXRydW5rCisyNzgxOSAxNWVlNDQ1YWYwN2Y3YTg1MjY5OTFjZDFjODIwNjNmODJmNTYxOTljIHJlbGVhc2UyMi1tYWludAorMjc4MjAgZjU1ZDU4ZWU0ZWEzZmNjMDBlMjYwNDRkN2JkZmFhMzA4ZTc5MjYyZiBsZWdhY3ktdHJ1bmsKKzI3ODIxIDE0YmQ1YWIwY2RiNjZjNjVmNTc1OGNlYTM3Mjg2MWJiZGExOWI1MTMgbGVnYWN5LXRydW5rCisyNzgyMiBmNDQzNmUxYjE4NjhmZWYyZjEyZGM3MjY5OWU1MmNlNTgzNDhiOWUwIHJlbGVhc2UyMi1tYWludAorMjc4MjMgNzM4M2U2NzRmY2Q1MWI5MzAwZTc1OTg1OTc3ZTNiNWVlN2I5Y2M3MCBsZWdhY3ktdHJ1bmsKKzI3ODI0IGZlMjI1MGY0NWFjMDg0NTMwYjkxYzczNDg4NjFjM2RmZjk2OGJkOWQgbGVnYWN5LXRydW5rCisyNzgyNSA5ZWY4MjM3NzY2OWQ1M2E5YmI1YzFiODIyZjlkN2U2YTdjODJjNzUxIGxlZ2FjeS10cnVuaworMjc4MjYgN2RjM2Y0MDc3ZTU5NTUzZWM3Zjk1OTNkZjI0M2YzYTA1NmQ2ZGFkNCBsZWdhY3ktdHJ1bmsKKzI3ODI3IGQ5OGY4ZTAzZmEzMTJhM2I0NjA1MjIzNWFiMzQ0NDViNTAwZGNiMzEgbGVnYWN5LXRydW5rCisyNzgyOCAzMDFkZDU0NjViOGUyYjI4NjBkOGZiZjUwMDI1ZDQwNTU2Y2NmMWU5IGxlZ2FjeS10cnVuaworMjc4MjkgNjY5ODk2NjgzOGM4ZTQ5MDJhYzM1NjJjNzg5ZGM2ZDkyOTQ2NTM5MSBsZWdhY3ktdHJ1bmsKKzI3ODMwIGZlMDNhYjU4MGY5NTViOTJiNjg0ODE4Njk5MzkxMWIwNWRkMzk5YzkgcmVsZWFzZTIyLW1haW50CisyNzgzMSAyY2Q1MWIwNTJkZGY3N2I5MzViNzE0MDVjYWMzMjkzMTJlZTY0ODY4IGxlZ2FjeS10cnVuaworMjc4MzIgNmQ2MTEyNmFjZTY5NWIzODc1OTJlYmE0MjIyNjY3NTNjNjkwMmUzNCBsZWdhY3ktdHJ1bmsKKzI3ODMzIDIyNmJhMzRiZDk5OGI1ZWUzZmQwYWFjOWVhNmUwZTgyOWEzNDFmZWEgbGVnYWN5LXRydW5rCisyNzgzNCA5ZDQ3M2Q0ZDExYTY5M2U3ZGNjMDY5NThhNGE0YTNkYzM4YTNkYmMwIGxlZ2FjeS10cnVuaworMjc4MzUgMzJkZGUzN2M4ZDk1OTc0MGZlYjFmNTNmOGZkMGNkNmYxZWYzMmI2YSBsZWdhY3ktdHJ1bmsKKzI3ODM2IGMzZDllMDFjNjEyNDA5N2ViM2JjMjc0OGNhYWE4ZjViNWIzMWM3MjkgbGVnYWN5LXRydW5rCisyNzgzNyA2ZjgyNGQ2ZjEyODYyOTEyNGI3MTE5NDEzNDk5NGNjN2VmNmE4YmQ4IHJlbGVhc2UyMi1tYWludAorMjc4MzggZGRkNmZmMDY5M2M0ZjAwZGQ3YjFlZjczYmFjNjMxMjdjZTE4M2MyMyBsZWdhY3ktdHJ1bmsKKzI3ODM5IDM1NDMyMzM3MWUzODQ4ZDViYTNiNTE4ZmI1ZjdiZDM4MTJjOTIzMjIgbGVnYWN5LXRydW5rCisyNzg0MCAyYWRkMjdiNTU4NjRhYjAwZDliNmQ3YzkwNDZiZTIyMjM5MjdkNzJmIGxlZ2FjeS10cnVuaworMjc4NDEgNzQ3ZmE2NWE5YjQ3NWE5MmU0MGM0YzljMTJhZThjMjU2OWJmMzZhZSBsZWdhY3ktdHJ1bmsKKzI3ODQyIDIyNTcwZTc2Y2NhMTYyMWU2ZGMzZjA5NmY1OTI4ZDhmY2RlZWI1MWEgbGVnYWN5LXRydW5rCisyNzg0MyBhNWVhNGRkMTc4ODNhN2FhYTYxMjllZWYwOGNmOTM1YmZiZTIwYjE5IGxlZ2FjeS10cnVuaworMjc4NDQgZjBkMTM5OWEyNDQ1ZDBkYzliNTQ4Yjc5MTFiMjAxMmM2ZTZmMzZhYiBsZWdhY3ktdHJ1bmsKKzI3ODQ1IGY4MjhmMzIyMDZiYTUyYjRlMzQ0YjdkYzBkZTE0N2I0MGExMzhmMjcgbGVnYWN5LXRydW5rCisyNzg0NiBkOTcxYjg3MDM1MDgxMjFjYmZhZmU0Y2I1ZWU0YzBiYzU0MmI1OTM4IGxlZ2FjeS10cnVuaworMjc4NDcgZDIxNmU2N2FjMjIxYzIyMGEwOTlmNzY5ZGFkMmMzNDRlZDJhNWQ4ZCBsZWdhY3ktdHJ1bmsKKzI3ODQ4IDI3ODI1ZDI2ODMxN2ExMTE2MDQ0Y2IxOGIzN2ZhNDAwYmZhMWQ3NjUgbGVnYWN5LXRydW5rCisyNzg0OSA1ZjE0OWFkZTlhZjE5MTYxNmI3MWFjOTQ1Y2U5OGUyYTdhMGI2MTNkIGxlZ2FjeS10cnVuaworMjc4NTAgMTg5ZWI2ZmE5ZGVkODUzMWZmYWQyYjFiMTBlMDBhNWQ3YTIzOWUwMyBsZWdhY3ktdHJ1bmsKKzI3ODUxIDJkNzdiZTQxZWU1ZmIwN2U1OGE5ZDI0OWZlZDM1NjE0NzNjN2EwMDIgbGVnYWN5LXRydW5rCisyNzg1MiA3ZmMyY2VjNGRjODI4ZDQ5ZWM5YjJkNDMwYjFlZjNjNWZhYmY4YzMzIGxlZ2FjeS10cnVuaworMjc4NTMgYTFiZGRmNmEzMmNhYmY2ZGExMzM4OTdmYzZiNDJiMDEyMmJkZmRlZiBsZWdhY3ktdHJ1bmsKKzI3ODU0IGViYzg2NjdmMzI1YWRiYmM3MGI4YmQ3MjA1NTY2NDFmM2ZjOGVlMjAgcmVsZWFzZTIyLW1haW50CisyNzg1NSBlMzM0ZGQ0ZTUxMGZmMTcyN2Y5M2U1NDBhYzAwN2ZjMmRiMGM4NGU3IHJlbGVhc2UyMi1tYWludAorMjc4NTYgNGE2NmJlZjE1YzNiYjY3ZGEwMzc0NTIwZDNlMWEzMGUwMGQ5NDdiMiBsZWdhY3ktdHJ1bmsKKzI3ODU3IDE2MWE1ZWYwMjMwZTM5MDY5ZWFjYzBlOGMxMmNmOTMxYjIxYTUwZGMgbGVnYWN5LXRydW5rCisyNzg1OCA5YjI0OTdlMjk3OTUzYTk5ZjhlMWQ4ZGNlYzY2ZGUzOTE2NWRiNGY1IGxlZ2FjeS10cnVuaworMjc4NTkgZTU2Mjk4ZGMwZjhhZTgyMTQ0MmU0MTljYmRmZWJkZDUzMjg0MWM1ZCByZWxlYXNlMjItbWFpbnQKKzI3ODYwIDc5ZjEyOWIwNzNkZWJlM2JkYzBhODJjNTFjOTU5MzU0MGRmYzg1NjkgbGVnYWN5LXRydW5rCisyNzg2MSBiNmE4MmY4MTg1NDA2YzRjZWNlZjM3OTkyNDMzZDA1ZWVjYWFhYjNlIGxlZ2FjeS10cnVuaworMjc4NjIgZjY2YjNhMzUwOWM3MGNhMDZiMzY1ODcyMDBmY2U1MjY0ZDI1MjJmMyBsZWdhY3ktdHJ1bmsKKzI3ODYzIDQ1YjRmYzYzYmY2NzE5MzY1NGIwZWY0NzcyODYwZThhMjhiZjQyZDIgbGVnYWN5LXRydW5rCisyNzg2NCA5MGI0OTY2OGQwYWMzZjk4YTk2YmY2MjVjNTI5MzZiNjZjZGQ0OTYyIGxlZ2FjeS10cnVuaworMjc4NjUgNWRiY2NlMjFkZmVlYTY3MjIwNDE2ZGMyYTlkZjdmZWZhMzQwOTJhZiBsZWdhY3ktdHJ1bmsKKzI3ODY2IGUxNDA5YWIwZmU2OTg3MzVkMmNmZWFkZDkwNjM3YTNmZjc2MDExNzEgbGVnYWN5LXRydW5rCisyNzg2NyBhZDRkMjNmMWJmNmU2YTJiYzczODZkNDY4NTY3YzlkMGQ0MDY1ZjdlIGxlZ2FjeS10cnVuaworMjc4NjggYjM4NzU0ZjFjYjYxMTIyZWFlY2IyZGFkM2Q3NWI3MmZlOTlmNzEyMyBsZWdhY3ktdHJ1bmsKKzI3ODY5IGI2ZTUxYjA4NmNmNGQ2Y2M1YTllMzY3OTM3ZDNmYzdiZDcwMWJjZmQgbGVnYWN5LXRydW5rCisyNzg3MCA1NjQ2MjlkMWYxYWM0YTIwZmUxMGZlZjg3NjIwNWJjNzVjNDlhNTdhIGxlZ2FjeS10cnVuaworMjc4NzEgMDNkODVkMTk3MDUyYTkxMmM2ZWZmOTE5NTRjZGQ3YjMzNmRlMzAyMCBsZWdhY3ktdHJ1bmsKKzI3ODcyIDg2OTFlZGE0YzA1NzMzNDc5YTM1NjkxZDU2MWE4NDY2NzkwNjdkODEgbGVnYWN5LXRydW5rCisyNzg3MyA3ODk5ZmQyYWY5MTI1Zjg2NTE1MzkzZjc2NjZlZWFiYzc5ZjAzZGVmIGxlZ2FjeS10cnVuaworMjc4NzQgNzFiYTJlOTY5YzExNDE1ZDQwZDE3NmM3NGYzMzgwNTM3N2I5YWM2NCBsZWdhY3ktdHJ1bmsKKzI3ODc1IGUwMTI4ZDYxNmY4Nzk1OWY4NmFkZWE3ZDc5ZjEyMzc4NmRmMWViN2MgbGVnYWN5LXRydW5rCisyNzg3NiBmMDVhMzExZDc5ODg2MjU3ZTI3YjI5NDE5MmU3YTUzMWQzMzIwYTU4IGxlZ2FjeS10cnVuaworMjc4NzcgMTJhYWY4ZDVhZDJiZTcwNzU3Mjg2MjYwNjYwNzkwNTZlZTQ0YjI1MiBsZWdhY3ktdHJ1bmsKKzI3ODc4IDRlNjI3ZDhjZjlmNGQyYTg0OTZmNGEzNzlmZGFmZTg1ZjIwN2ZkMTAgbGVnYWN5LXRydW5rCisyNzg3OSBkZjA2Mjg2NjJiNDgxZTM4NTQ5NDUzOTZhNjZhZjYwMWY5NDhlZDdhIGxlZ2FjeS10cnVuaworMjc4ODAgYmNjMzVhMGYxYTc4ZThjZmIxOWUwZmY4MzljYjk5MDM4NjgwNDkzMiBsZWdhY3ktdHJ1bmsKKzI3ODgxIDA4NTQ1MjRlY2UwMDg0MGRhNTQyMzI2ZDQyYjZmNzFlOGQzYzQ4NzIgbGVnYWN5LXRydW5rCisyNzg4MiA0YmZjOGM1MTliNmRkNTRhOTVkOWJkYjZlYzkxN2M1MzFjZDliMDJlIGxlZ2FjeS10cnVuaworMjc4ODMgZmIwNjkxZjEwZDkxMmI0OWY0M2I4N2U1YzUwYmFkZjgzZjUxMDg4ZiBhc3QtYnJhbmNoCisyNzg4NCAzZGRhY2UxZDEyYTlmZTUwYzZjZWY0YzkwOGMzY2EwNGIxM2EzN2ViIGxlZ2FjeS10cnVuaworMjc4ODUgODA5MWE0YTNiOGFlYzJlZjMyZTE3ZjhiMjhlYWRmOTUzMGJiZGYzNSBsZWdhY3ktdHJ1bmsKKzI3ODg2IGVjMWEyZDdhYzAyYmMwNDkyMzk5MmQ2MzU5ODk1MWJiNzY5MWJlZTIgbGVnYWN5LXRydW5rCisyNzg4NyAzMDMzNWM2OGI3ODdmOTFmZTA2MThmY2NkNmYxYzgwY2M4M2E3ODg3IGxlZ2FjeS10cnVuaworMjc4ODggMjY3MGE1ZGI2ODQzMTVjZmU0NTczZGMxMzNiYTc1YWY0OWEzOWU4YiBsZWdhY3ktdHJ1bmsKKzI3ODg5IGRhZjc1NzljMjI0ODIxOTJjY2U5ODU0NWJkZTdmNWVlNDY2NGQ1ZGIgbGVnYWN5LXRydW5rCisyNzg5MCA2ZGNmMTI4ZDdlMDMwOGFjZjg1ZjZjMDY2MGRjZmM0YThjMzUyYzc2IGxlZ2FjeS10cnVuaworMjc4OTEgYWM3NjI4NzY5YmE1M2UxYmM1NjRhOGZiNWRmMzkzMzFkMjliNGI4YyBsZWdhY3ktdHJ1bmsKKzI3ODkyIDE3YThiNzRiYmU1Y2YwNGM2OGMwZTk0NDYwMjQ3ODU1OThkOGJhYmUgbGVnYWN5LXRydW5rCisyNzg5MyBkZmU2ODg0YjU5ZTBlN2U0MGJlZjY2YjdkMzA1ODFhNmNmYTJhNjRiIGxlZ2FjeS10cnVuaworMjc4OTQgZmUyY2ZjZTRlNjU4NjNlZDMxNzJiNWIxMzQ1NGI5Y2U0MGU3YjE5NiByZWxlYXNlMjItbWFpbnQKKzI3ODk1IDQ4OTdlMjllMTljYzA2N2M2YjkzMGYwZmUyMzAzY2UwYzQwNzViNDMgbGVnYWN5LXRydW5rCisyNzg5NiA4N2Y4Mjg3MjZmZTZlYWI2MTk1OThmZWQ2MThhMTFjYjk3OGNlMzM2IGxlZ2FjeS10cnVuaworMjc4OTcgMzI0YjJlN2FmNjgzNTdhMGI3M2Y5MzI4MDE4ZTM1ZjA1ZTBiZDMzMyBsZWdhY3ktdHJ1bmsKKzI3ODk4IGZhMzJlN2E2NWE3ZThmOGJlYTMzYzlhNWMyODM3N2M0MGQ4MmNhOWYgbGVnYWN5LXRydW5rCisyNzg5OSBkZmU1YTY4OTk3OWJhODIzY2ZiZWQ3NTBlYTIxNTFlMDViZGZmNTI2IGxlZ2FjeS10cnVuaworMjc5MDAgYWJiNTJkNTZiYTVhYWJjNWYyMDk3YzJhOTcwMWY4Y2U0ZTYxMmU4YyBsZWdhY3ktdHJ1bmsKKzI3OTAxIDEyZDg1Yjc4NTI2MzYzNGU3YTI2OWRhNzExODMxZGRhNTFiZjU2ZGUgbGVnYWN5LXRydW5rCisyNzkwMiA3ZWNiNmViMWZlNzczOTc0NTczNjU2ZTJiYjRmMTA3YTI4ZjNiNjBmIGxlZ2FjeS10cnVuaworMjc5MDMgN2ZhYzEzM2Q1MzlmZmFjYjBhMjU3YThiNWM0NTQyNjc0YWU4MDIzZiBsZWdhY3ktdHJ1bmsKKzI3OTA0IDU2Y2U0YzhmNGYxNjlmMjFjOWMxNzhkNTFhMDBiOWM5ZWJkYzU4MGYgbGVnYWN5LXRydW5rCisyNzkwNSA3MDJlMTEzZDM5YjBkNTViZGI4ZDhlYjVjMTY5YWE5OWUwYTc5NTc4IGxlZ2FjeS10cnVuaworMjc5MDYgZDhiYTM3M2JmMmIzYzcyN2I0MTYzM2IzNDNlNzAxNzI1NTVhMzA2ZiBsZWdhY3ktdHJ1bmsKKzI3OTA3IDk0ZmYwNzQzODM3N2I4N2Q0OGI2NThiNDYwN2IyMGM1MDk0YmIzNzAgbGVnYWN5LXRydW5rCisyNzkwOCBhZTJmYjhkYTM4NjNlOTk2NDI1OWRlNDgxN2FlNzFiNmIwNmRlNzcxIGxlZ2FjeS10cnVuaworMjc5MDkgNzVmZDg2MjkwMWQ4M2U3ZjAzMzY1YWMyZjRmZGIzODdkNjY0MmRmNCBsZWdhY3ktdHJ1bmsKKzI3OTEwIDhhMTBhNzIxYjg0YmNlZWNjYmViZWFiMzY3YTBiZGQ3ZDAyNDc1NGEgbGVnYWN5LXRydW5rCisyNzkxMSAwY2Y0ZTA1MzljYzFmNTgwYzNmNmJkNmE2NDgxNzQyNTMyODMzMThhIGxlZ2FjeS10cnVuaworMjc5MTIgMTc1Y2QwZTA4OGFhY2NmOTNkNGEwMDA1NmIzOTQ1NDM2OWM1MzZmNiBsZWdhY3ktdHJ1bmsKKzI3OTEzIGFkZjBiMjE1YTUyYWUyNTkwNGZkMjhkMGI3NmU5NzM5ZWIzODdiYWIgbGVnYWN5LXRydW5rCisyNzkxNCA1YmQwZjI0MWVjNWFkYmI5MjhhNWYxNTcyZTJjOWNkMzliMTQwNzEzIGxlZ2FjeS10cnVuaworMjc5MTUgYTczYTU4OThiZjQ5MmE1NjEyYmExZWFlYWNhZTllNGFjYTBmNWM5NyBsZWdhY3ktdHJ1bmsKKzI3OTE2IGE1MzI0YjA5NDk0MmUzMjg1Njc0NGMwMDVjZGQzZDFhMTUzZTY3ZmYgbGVnYWN5LXRydW5rCisyNzkxNyAzY2IwNTVhYWU3Mzk1N2Q4MDIyMzUzN2I4YjJjNjY1NWUxZjA2MDZjIGxlZ2FjeS10cnVuaworMjc5MTggMWYwMTc4NzA1NTJlNjUzYmI4ZGExNDE5YmEzYmI4MTM0OTFmNjkxOCBsZWdhY3ktdHJ1bmsKKzI3OTE5IDMyZjkyZDc2NmI4MTM2YWFiNDNiNjJiNzE1NjhkNjE5NmZjZTA5YzggbGVnYWN5LXRydW5rCisyNzkyMCA2MmY2YmFiZWNlMWZjMzI0NTc0ZGMyYmU1MjY2ZTlhMDM0NTFiYzNkIGxlZ2FjeS10cnVuaworMjc5MjEgMzQ0NDAwNWI2NTI3MDNkMmZiNDFkYmM5MWE3YTliNWQ2ZWVmMTc5ZSBsZWdhY3ktdHJ1bmsKKzI3OTIyIDk1ZGY4N2Q0NDkyM2JmZDRjZWZhYTBkOWE0YjU4NTQ4NmZmZGFmZjAgbGVnYWN5LXRydW5rCisyNzkyMyA5NTBjNWEwOWFkOTk4OTQxOWRmYWFmZjRhZjM5MDFjMzRkYTYyYTQ2IGxlZ2FjeS10cnVuaworMjc5MjQgODJjNDg2NTM4NjFiNTZlOGJjMGMzODZhYTBjZTQ3OGYxZTdjZTU0YyBsZWdhY3ktdHJ1bmsKKzI3OTI1IDFjMjZlYjc2ODI5MzZkMDE5MDc2MmE4MTRlNWZjYjFmODRmM2QyOGQgbGVnYWN5LXRydW5rCisyNzkyNiBhZjFmYjRmZWMyYjQ0ZDQyNjBmNDA2OWE3NjE1OWVhOTgyYjNhMzYzIHJlbGVhc2UyMi1tYWludAorMjc5MjcgNDE4OTU2MDlkMDg0Y2RhNzUwODNhYzk2NWI2YmY2MDAxM2Q2YTMwMyBsZWdhY3ktdHJ1bmsKKzI3OTI4IGU5NjFjZDJmMjJlNDI4YTQxZTI1Yzc1MTE5OTc0NjYyNmI5OWJiMGUgbGVnYWN5LXRydW5rCisyNzkyOSAyOGE1YzhhZmEwNTZlNTJjZWI3MGRlMGEyZGIxY2IxMmMwMWZiMmQwIGxlZ2FjeS10cnVuaworMjc5MzAgOGQ1ZTBlM2Y2NDQ1MDBmMjZlZjhiMjk0N2RhMTYzZDZkNDdhZDI1NyBsZWdhY3ktdHJ1bmsKKzI3OTMxIDA2ZjFlMmZkMDViY2FhZTE2ZjNjZDgzZmQzMTZjOTRhYzI5Zjc0YzggbGVnYWN5LXRydW5rCisyNzkzMiA2MTQzNThlM2M0ZjZhZWZmMmIwZDk4ODZjZGY5MWZmZGU5YjM2MzFhIGxlZ2FjeS10cnVuaworMjc5MzMgZmY5ZWZhNjkyNTk0ZmJiODNmZWI4NWY3NTU2MTc5NDBkMmRmOTRiMCBsZWdhY3ktdHJ1bmsKKzI3OTM0IGQwZDNmNzYwZDA2NzVkZTM3NzA2NTQxOTFmMjcyZDBhNjNhNjFlNWUgbGVnYWN5LXRydW5rCisyNzkzNSBjMDBkZjIzZTg1NmU1ZTJiZDFkYmIxNDk0NDIzM2Q5YzczNGE5NWFjIGxlZ2FjeS10cnVuaworMjc5MzYgMGJkNTIxZWI3MTRlYWNhODZmOGNhMjQ1M2FlNGZiNTM2NGJlMWJlMyBsZWdhY3ktdHJ1bmsKKzI3OTM3IGRkOTkzZDAxZTc0MDQxMTg4Mzg0NDNjZDVjMzFkM2FhNDgzOTQxZDAgYXN0LWJyYW5jaAorMjc5MzggYjViOWIwMzM0NDY5YzQ3NmZlZmYwZmJmNmQyYzc2OWMyMDI1Mjk0NyBhc3QtYnJhbmNoCisyNzkzOSBkMmY0MWM4YTgxZjBkOTUzOGNhNTJhMzIwY2RhMmUzMzg4ZWM2MTY4IGxlZ2FjeS10cnVuaworMjc5NDAgOTZmZGU5ODA4ZTE1YzdhMDMzZGE3M2ZlYTRjYWViMzViZTNjYzUyYiBhc3QtYnJhbmNoCisyNzk0MSA0MjI4NmQyZTRkMmZmNzVhNjE4MjhkMDFjNGJhYzVhMDlhMmE4MmI2IGFzdC1icmFuY2gKKzI3OTQyIDUzZjIxZjQzNDk1NjY1NmFjOTc5NzlmZDQ4OWQyNTNlN2JkZmQ2MTEgbGVnYWN5LXRydW5rCisyNzk0MyA0ZjAwMTM0YjU2MWRiNTM0YTMyZjVmZDQzYmZhZTIwNzU2ZDk3ZWJhIGxlZ2FjeS10cnVuaworMjc5NDQgZjIwMjVjNjc2ZTI0MTU3MjVmNmQzZmNjM2Y0MzBlOTVmYmM3YWE1YyBsZWdhY3ktdHJ1bmsKKzI3OTQ1IGQ4NzUwODk3Yzg5N2NhYWIxMTQzNmY5ZmQ1MDM3MzAyMjEwOTQxODUgbGVnYWN5LXRydW5rCisyNzk0NiBhNmE0YTk1MWM2MTZjZTdhOTNmY2Y1N2QyNDU1MTM1MDhkN2FmYzg0IGxlZ2FjeS10cnVuaworMjc5NDcgZTIxMzgxZmQ4NzU2NDEwYWRkM2U3OWRkNmFhYTZkMDk0NjIxY2JmYyBsZWdhY3ktdHJ1bmsKKzI3OTQ4IGM5ODA4ZjUyMTIwYWZiOWUyNmQ0ZDhkZjYzODNjM2Q5OGQ5ODU1Y2EgbGVnYWN5LXRydW5rCisyNzk0OSBkNWYxN2Q4NWY2YTA2NTgzYjZiZjdhYzY2YWIyM2I3OTI2YWMxYWFiIGxlZ2FjeS10cnVuaworMjc5NTAgZGY0YTlkM2FiYzU2YTEyYTdhYjA4ZDg0ODRlZTJmOTgyOTIwNzlhNCBsZWdhY3ktdHJ1bmsKKzI3OTUxIDVkNmU0NzBjZTA1Y2Q1YjE4MGUyMWZiNDE5NGZmMjM4Yzk5ZjY2YzMgbGVnYWN5LXRydW5rCisyNzk1MiBiYmFjNGUzY2NiNjI1MjM2NmI5Y2JkOTMwZDRmMzNjNjZiMWU0ODIxIGxlZ2FjeS10cnVuaworMjc5NTMgNGJmOTQxNDlkMjFjN2U0NjNiYThkYWJhMWRiMTkxNDlmMzBjNjc4NSBsZWdhY3ktdHJ1bmsKKzI3OTU0IGQyNmI2MmYwYzZkYmMzNTJmMGMyNTBmNWI3NDUwNzRjOTNiYzgyZTkgbGVnYWN5LXRydW5rCisyNzk1NSBmMDU5ZDU0MzVkNjUzMmVkZTcwNTgzODQzZTkyMjM4MTcxOTg3M2IyIGxlZ2FjeS10cnVuaworMjc5NTYgYjQyNjlmYTY3YzNlOWNjNGEwZTFmNDczOWYzNDJmYWY2NTk5NzUzYiBsZWdhY3ktdHJ1bmsKKzI3OTU3IGIyNWMzMWUwMDhjOGM3ZDIxNDk3ZTNmNTZiYWE2NjFkN2VlZDk4ZDUgbGVnYWN5LXRydW5rCisyNzk1OCA5MzQ4ZmEyMGYyMTQ5MjBkMWFlY2JkM2ZiZTMwYmMyYWM3ZmMyZjY5IHJlbGVhc2UyMi1tYWludAorMjc5NTkgNDc5ZjhmNGVlNGFkNDU1YWMzNTFlMmM3MjM1YmEyNTQ0ZWRkZjkwZiBsZWdhY3ktdHJ1bmsKKzI3OTYwIDBiYjM5ODZjZjY1M2E2MDVlZGVkODZiOWE1MWNhNTk5MzhjMmMzOTggbGVnYWN5LXRydW5rCisyNzk2MSBjOGQ2OTRiNjQxZjE5MjQ5ZDljZGJjOTk0YWNlNWUxZTA5YjBlMjk4IGxlZ2FjeS10cnVuaworMjc5NjIgYWFiYzk3OTAyZTEwNDZhYmNiZTUyMzQ1NTA5OWQ3NTlhNzJhNmVlZSBsZWdhY3ktdHJ1bmsKKzI3OTYzIDdjYTQ2ZTA4MjAwZGZlZTUzZTIxNmIxN2JlMzE4NDZhNjJmMjU5ZjUgcmVsZWFzZTIyLW1haW50CisyNzk2NCA0NTdhMDQ3ODMxODNmNTZmNzAxNjE4YWU0ZDU4YmFkNWZiYWI3MGRhIGxlZ2FjeS10cnVuaworMjc5NjUgOGMzOGVhMDkyZjIwN2ViZjQ3MDljMGJlY2I1NzliMTJmODUyNjBlYyBsZWdhY3ktdHJ1bmsKKzI3OTY2IDEwZGJkZTY5ODc2NjkyNGRmY2QzNzdhMjg3OWRkMmU4ZGE5ZDg2NjUgbGVnYWN5LXRydW5rCisyNzk2NyA4MWM1NmNiYzFkNWZmNDg1ZTY0MmE3Y2FkODU1YjRkNTcwM2EwMzJlIGxlZ2FjeS10cnVuaworMjc5NjggMDA0ODhjYTllMDRmNzU0Yjg2NzEyMTMyMWRjYTM1ODIxN2RlNTVhZSBsZWdhY3ktdHJ1bmsKKzI3OTY5IDg1MTEyMWVjYzExMTE3YTQ3ODI1ODkzYzUwOTVjMzdlM2YwMDU2NzIgbGVnYWN5LXRydW5rCisyNzk3MCA4MGZkMGQzNjFlMTdmNjA0YWRhZjZmMWE3NjAzMGZhYjMwZGY1NmNkIGxlZ2FjeS10cnVuaworMjc5NzEgOTIwYWQwOTkzMGRjNTA5Yzk3ZGQyZDY0ZGE4YzFhNmRjZDJjZTcyMyBsZWdhY3ktdHJ1bmsKKzI3OTcyIDNlNzE4YzNkNTFlZmFiZDEzOGExZDE3MmIwMTFhNzRlZDQwMjM1YTcgbGVnYWN5LXRydW5rCisyNzk3MyBhMzJjZmYwYzc1ZGNjN2VmYjVkYmUyZGE5ZjdhYTM3M2M4YjFmOGNjIGxlZ2FjeS10cnVuaworMjc5NzQgY2NjYmMyYzc4YzA5OGIzNzlmYTEyOGM2ZTczYTM1YTFlNWFhZTcwMiBsZWdhY3ktdHJ1bmsKKzI3OTc1IDI0NDExN2FlYmJkNTg1YmVlOWVlYWY1Y2EwMDQzNzVmNmU5MzZlZjIgbGVnYWN5LXRydW5rCisyNzk3NiBjYTIwYmUyNDM4MWZiMzA1ZjMyOTEyZjc5NGNjYmUyZGM4Nzk2YzVhIGxlZ2FjeS10cnVuaworMjc5NzcgNDM4MmIyMzc0MzkwMWRlNzI0ZWM1ODhiYTljN2RlZDU1NDBhZmI3OSBsZWdhY3ktdHJ1bmsKKzI3OTc4IDliMWIyYjU4Yzg2NjYyMzY3MGNhNjQwYjUxOTllZGE4NTNkNzNjMmMgbGVnYWN5LXRydW5rCisyNzk3OSAwMGY4ZGRhMTdlZTJiNTJhZmFkZTk1MTQ4YzEwNzllMGVmZjE0ZGYyIGxlZ2FjeS10cnVuaworMjc5ODAgZWMyZTI4MzAwYjc2NTljNjc5NzMzYjBlNzFhOGRhNzA0OGIzZjQ1NSBsZWdhY3ktdHJ1bmsKKzI3OTgxIDI1ZDY3Yzk0YTZkMWEwYzczMzVjOWZkNjg3NTdkM2ZiOTkxMGY4NWEgbGVnYWN5LXRydW5rCisyNzk4MiBjMzlhZWQ0NWRiZTk5ZGM5YTM0NzhhM2Q1OTc0MGQxOTA4MmNhOTE5IGxlZ2FjeS10cnVuaworMjc5ODMgOWRiYTEyMTY3ZGI2ZjdkMjI2ZmE5NDUyZWYzOWY1ZWE2NmQ5M2M2YiBsZWdhY3ktdHJ1bmsKKzI3OTg0IGNiMzA4YTEzYTFmZDIwNDY4N2ViYzQ2ZjNkYmNiZWFlYTE1YjVhZGUgbGVnYWN5LXRydW5rCisyNzk4NSBmZDA1YzJkMzVmZTcxOTFmMmRhZWQ4ZWRiZWE4MGZjOGE3OTUzMDU0IHJlbGVhc2UyMi1tYWludAorMjc5ODYgODM5MzE1ZGUwY2ExMGUyY2I0OTg1MTMxNjI3NmMyMGQyOGYwYTQ3MyBEU19SUENfQlJBTkNICisyNzk4NyAxZWE1NjllYTUxZmQ5ZGU4MDA4NzQxOTUyNjhjYTliMjE4ZGZlYjlhIERTX1JQQ19CUkFOQ0gKKzI3OTg4IGU3YjZiYzJiMzVlMmU0MmJlODc3YTRkMzE2YjE3YTM0OTQ0Njk0YWMgRFNfUlBDX0JSQU5DSAorMjc5ODkgMzA3MzMyZjM3YjdkOTM3ZDRmZTNiNTE2NTQ5ZjIyNjhjMmU2OTIyMSBEU19SUENfQlJBTkNICisyNzk5MCAzMjU3ZWZkYTQ1MTMzMWU3YmNkM2I2MGQwMTc0MDY1NzM1YzgyYjM2IGxlZ2FjeS10cnVuaworMjc5OTEgZTRhOGUzZTQyMTBkOTc3ZTdlNzk3NjZjNGM2NzM1NzQxMTg0NDAxYiBsZWdhY3ktdHJ1bmsKKzI3OTkyIGRhODhlOTkwZjkyY2NkMmU3MTgzZDYzNzcxYjM2NGM5OWExODg3ZDMgbGVnYWN5LXRydW5rCisyNzk5MyA2ZTBkZWVlYjk3ODdkM2IzZDdmYjcyOTcxNTYzZWM0YWI3MWUxN2Q0IGxlZ2FjeS10cnVuaworMjc5OTQgZjkyOGY3ZWVhMmQ2OTg1ODZkMzA0ZmQ1NGI3OGFkOWZmMDBkOTlhYyBsZWdhY3ktdHJ1bmsKKzI3OTk1IGE1MDZhYjliYjRhNDE0NzA0OWVkN2Q3NDA1ZTU5MzJiMThlMTdhNGEgbGVnYWN5LXRydW5rCisyNzk5NiBhMDJhYmE3MmNiYjI0OTllNWEzMDE3NzY2ZDg3MmYzYjJkYzQyOWRmIGxlZ2FjeS10cnVuaworMjc5OTcgMDAxNjdiMmVjYWNjNWViYzM3OWI2ZmZiNTA3YWM1MDU1YzY0NzkwYSBsZWdhY3ktdHJ1bmsKKzI3OTk4IDEyZTE0NjE3MWYzZGM5MDZiOTFiYWUwYzZjOWY0ZDFmYmU0YWE2OWIgbGVnYWN5LXRydW5rCisyNzk5OSBkN2NhMGEyY2UwNzQ2Yjg2YjMxMjI3NTY1NzliYTgyZDhkNTE2NTJkIGxlZ2FjeS10cnVuaworMjgwMDAgNTlkNTMzNTgwZTcyZDYxNTNjOGNlNGQ2MzE3ZGEwNTljM2ViZTE1MCBsZWdhY3ktdHJ1bmsKKzI4MDAxIDI2MmFkMTZiNGRlMDlhMzJiMWMxMzRiYzI1MDAxZjdhMDE3OTU3NDEgbGVnYWN5LXRydW5rCisyODAwMiBmNWUyOWM3MzM2ZGQ4OGViZTE2MGU0M2U1MmExNmRlNDIzOWUyZDIxIGxlZ2FjeS10cnVuaworMjgwMDMgNzNiMzA5Y2YwMjEzNTUyOWM5OWQ4NGJjYzNmMzRmOTg2M2JkMTUxMyBsZWdhY3ktdHJ1bmsKKzI4MDA0IDJiMDc2NmFmYWEyMjJkMGFiMDcxZWIwN2NhOGY4MjRiM2NiMGEzYzcgbGVnYWN5LXRydW5rCisyODAwNSBmZDQ1NzViNTZhNGRlMDE4ZTY3OGNlNDczNjZlMjRlODg0Zjk4YWFmIGxlZ2FjeS10cnVuaworMjgwMDYgOTQwYzRmNTQ2ZTdmMTdlNzQ4M2NlOWQ0NDc5NjU3YzE2NDhmNjIzZSBsZWdhY3ktdHJ1bmsKKzI4MDA3IDNlNGQ0MzI4NzJlYTc5MThmMzczMmQyODUxZWE4ZmQzNTE4YTM0MTYgbGVnYWN5LXRydW5rCisyODAwOCBiNjcwN2UxNTk5MDlhNjVmODhjOGM3ZmRjMjYzOTg1ZWYwNmU2OGI4IGxlZ2FjeS10cnVuaworMjgwMDkgNDM0ZWM1MjNmMzJjN2Q2MDZkZjI4NjMwYTgwNDY3NDA2NjViYjhlMyBsZWdhY3ktdHJ1bmsKKzI4MDEwIDEzZGUyZjZmMDdkZGRjOTgxOTAzYjM1NjhjNDg2YjQ4NGUzZjFjOTQgcmVsZWFzZTIyLW1haW50CisyODAxMSA2NTQyZGZhNDBlNzdjNzYxZDAxNDgwOTY4NmEyMjdhNjkwMWJhYzNiIGxlZ2FjeS10cnVuaworMjgwMTIgOGE3NGYzMzVjZmJhYjllMTI3NzU0MTdiOTcyNmUzOTg1YTM3NDg1MyBsZWdhY3ktdHJ1bmsKKzI4MDEzIDc5MWJiZWRiYmJlOWUzNzZjZjhiZDQ5NGIyNGI4MmU3M2FjNzY3YzMgbGVnYWN5LXRydW5rCisyODAxNCA0MGViODBkYzQyNTAwZTk4MGUxOGNhY2QzZjY4MzliMzEwZjQ4NDJjIGxlZ2FjeS10cnVuaworMjgwMTUgOGExYzA4NmFkMjEzYTc2NWQ0MWVlNjA5ODBmNTIyYTMwZmFlMTVhYyBsZWdhY3ktdHJ1bmsKKzI4MDE2IDM1ZGJhNjAwN2FjMzdkMmY0ZDRkOGMyNmVkZDk0OWY3YWY1OTE5NjEgbGVnYWN5LXRydW5rCisyODAxNyBkYmMwZjJmMTE0MTQyMGNkZjI5NzhiNTQyNmUwNDVmMmM2ZGUzYWQ1IGxlZ2FjeS10cnVuaworMjgwMTggNjQyZGRjZmU4NjRhNGZlYWZhODhlZjZiY2YwMTJiNTVlYTdiNDk0OCBsZWdhY3ktdHJ1bmsKKzI4MDE5IGI2NGRiNTUwOTcyYzE0MGY0NGExZmZkYTllZTljZjY1Nzk1Y2Q4NmEgbGVnYWN5LXRydW5rCisyODAyMCA3MzU0NDFmZGFiN2U0NzRmZTQ1MGExNmQ4YTY2YjQ0NTc5NWUwN2E3IGxlZ2FjeS10cnVuaworMjgwMjEgODBiMTI5NDRhNDJiMGFmNzE1MDU3NTIyODZiODg4ODkwMWJjZTkzZiByZWxlYXNlMjItbWFpbnQKKzI4MDIyIGM5ZDI0MjhhNmE4NWVlODg1ZWVlNGE4Mjg5YTIxYTY4OTBkZjI4NDcgbGVnYWN5LXRydW5rCisyODAyMyAxMWIyNjJmZWQ1ODA5Y2NjNDU0ODUyZjdkNTRiYzZlZjcwYTkwYjg0IERTX1JQQ19CUkFOQ0gKKzI4MDI0IGZiNDU5MWMwNDcwZTI4MDBmYzg4NzU3NGUxZGZlNTA1YWJlZjM1ZjEgRFNfUlBDX0JSQU5DSAorMjgwMjUgZDZlNWU5YTFiY2EwOGQ1YzQyNzIyZmZjMzU4NThiYTI3MjdmMTM0ZCBEU19SUENfQlJBTkNICisyODAyNiBiNDdhNmEyYTFlNTYwYzI5MTFlNjBkNzgyNmI3NTg2OWMxZDY2ZmU0IERTX1JQQ19CUkFOQ0gKKzI4MDI3IDE4NjljZWNkMzkzMzQ5MjEwNGRmYzM4MzMxNzY3MmMyZGQzZTc4ZTIgRFNfUlBDX0JSQU5DSAorMjgwMjggZjczMjU5NzY4NDI2N2E5YmJiNGY5MGQwMzZiODIzMWI4Y2ZiOWM3ZCBsZWdhY3ktdHJ1bmsKKzI4MDI5IDY0NDVlNDRmY2I3ODM2MGQ3MjVlOWM4MGE1ZjNkNDBiZjUyYTBlZTYgbGVnYWN5LXRydW5rCisyODAzMCA0ODJjOTQxZDU5M2Y4NjFjNGZmNTFhYTU5YTRlMjkzZTNmNzdmNjUwIGxlZ2FjeS10cnVuaworMjgwMzEgZjNlNjliOWFjYzQwNmIzZTFkZjBkMTQzMjA0MjMyMTIyMDIzYTUyNCBsZWdhY3ktdHJ1bmsKKzI4MDMyIGRkY2I5Y2UwNDU0NjQ5NjMyZGIyOGZiNjY0NjQzMzQ3YTc2YWM1YmUgbGVnYWN5LXRydW5rCisyODAzMyAwZGY5YTljMDhjMTM5ZTk2MWQzZjIyMDhkMmUxMzE2MDg0MDk2ODk4IGxlZ2FjeS10cnVuaworMjgwMzQgN2Y4OTY3ZjU5Y2Y4MmYwZjIyMGQ3ZGUzZGNjZTc4YzdhZjExMWE3MCBsZWdhY3ktdHJ1bmsKKzI4MDM1IDQzY2FhMjEyYjk1OWNmN2IwYTlhODU3MDRjY2JmYjMyNDUxNTkyMTAgbGVnYWN5LXRydW5rCisyODAzNiAxMTBjNmVkYWY2MmYzODU4ZTRkNjExYTZlODJhOTQ0ODk0N2VlN2RhIGxlZ2FjeS10cnVuaworMjgwMzcgZjZhOTdjZDNiYTI0YjQ1NTdlMDczZWUwYmEwZTBiNjllYmU5ZWMyZSByZWxlYXNlMjItbWFpbnQKKzI4MDM4IDFlYmMxMjhlNDg0MmMyODRhMmM0YzRiNGY3NzdjYjY0YjM2NWNhNTcgbGVnYWN5LXRydW5rCisyODAzOSA3NzgwOTM1MzNhNDYzOTlhYmIzYjEwN2Y4YjQ5MTQwNmE3OWE0ZjY4IGxlZ2FjeS10cnVuaworMjgwNDAgN2FlM2Q3NDg2ODAxZTdmYmVmY2NkNzc0YmI4MzQ2MGQ2MWMzOTYzNyBsZWdhY3ktdHJ1bmsKKzI4MDQxIGRhOTA2NTNmYzJjNmViY2ViMGMyZDRlZjg3MGI2YmM0Y2NmZTNkMDcgcmVsZWFzZTIyLW1haW50CisyODA0MiBmMzNjMDFjYzQxNGM4OTc1NDU2NDIwOTRlOWJkNDZlZWMwN2I5ZTkxIGxlZ2FjeS10cnVuaworMjgwNDMgYTlmMjU2N2MyZjgzNzY1ODIxN2U2ZGNhMzI3NTdlYjFhZjk5NjFiYyBsZWdhY3ktdHJ1bmsKKzI4MDQ0IGZiMWQwZTU1YjE1MjFkNmJhYmRjNjk4YjE4YjIzOTZlMGFkZmM1NTYgbGVnYWN5LXRydW5rCisyODA0NSBiZWVkMWMxZTdjNmRmNjc3MTczM2ZmMmUyNDlhMjhjMDIyYzVlODA1IHJlbGVhc2UyMi1tYWludAorMjgwNDYgMGQ5ODY2MGUzNjUzOTVkZGQ5NDVjYjE3NjNhOWRlZWRiZmVjNjdlMCBsZWdhY3ktdHJ1bmsKKzI4MDQ3IGEwZWI4ZTM4MmQ3NGNiMTIyYjdiMWNhNDcwMDJjM2NiNTgyYWI3OTkgbGVnYWN5LXRydW5rCisyODA0OCAyN2RhMmI4MWE0OTZhOTI1ZTExMWI0NWI4ZTdmMzY3OGU4ZjdjMDJhIHJlbGVhc2UyMi1tYWludAorMjgwNDkgN2JhM2U1ZmJhYWQ4MGMzMzBhZGRjN2M1ZjY2ODdmNDNkYjQ1YzJhZCBsZWdhY3ktdHJ1bmsKKzI4MDUwIDhjZjAwMzM4YjcyOGQzODdkY2NjMTA5ZTEzNGZjODFkZTkzNzNiYjEgbGVnYWN5LXRydW5rCisyODA1MSA0YjM0MmVkMzA5ZTAyY2Y5YjZiYjIyYTc3ZDM2ZTkwODNmYTZkNTUwIGxlZ2FjeS10cnVuaworMjgwNTIgNjk3ZDIyM2EyZjc2NjYwMzY2ZDMyNTJkN2ZjNmY1ZDcyODg2M2RjMSBsZWdhY3ktdHJ1bmsKKzI4MDUzIGVkZjc1NzIxM2E5MmRiMDNjZjg4ZTcxMDlhZmUwYzliZGVkN2E1NGYgbGVnYWN5LXRydW5rCisyODA1NCAyMjRjNTE2YmMxMWYxZTE0NDZlYzczZDRiOTMzOGIyMDBkZjNmMDhlIGxlZ2FjeS10cnVuaworMjgwNTUgOWQ4NGE1YmQ3NjdmYThkMDY1ODYxZjI0OGU0MDllNDUyODE3YjM5NyBsZWdhY3ktdHJ1bmsKKzI4MDU2IGFiNWVlYTJkZDNjMDBjMDhkMTQxNGRiYWYxOGNiMGQyZGZkODRkNDcgbGVnYWN5LXRydW5rCisyODA1NyBmZDFiNWVmYTBjZTNlYWNjODkzMmM4NTA3MjFkNDRkMTEyMGUyNmRhIHJlbGVhc2UyMi1tYWludAorMjgwNTggMWFiMjdjMTc3MGRmNWI4NjliN2RlN2NhMDUwYjAxMDExYjU5ZjBmYiBsZWdhY3ktdHJ1bmsKKzI4MDU5IGY2NzJlMWRiYWQ5MjI0MTFiNDMyYzgyODIxMTM2YTFjODU1ZmVkMzMgbGVnYWN5LXRydW5rCisyODA2MCAxOGNhNGU3ODNmOTg3YmQzM2E2YzUyZGQyZWY1N2RjYjYwYTFmZmE4IGxlZ2FjeS10cnVuaworMjgwNjEgZTYxYjExOGU5Y2FiMjkyNmNiNTRlYmZlMjBhNGRkOWMyOTRiOTJhNCBsZWdhY3ktdHJ1bmsKKzI4MDYyIDk1NTkxNGIwYTRkNjQ2ZTc4YjFhYjgwZDdjZDA2ZTIyNjA1Y2Q0NTYgbGVnYWN5LXRydW5rCisyODA2MyA4YmMyNjViMDg0ZDk3YzFmN2NmZjNiZmU0YjIxMThmMWVhNDliMzcwIGxlZ2FjeS10cnVuaworMjgwNjQgNTlkOTIyODc3OGFkNjNlOGJkNzY4ZjAyYTY1ZDdmYjFjYzQ1MDY2NiBsZWdhY3ktdHJ1bmsKKzI4MDY1IDcyOTI4N2Y3ZmMyZTVmYWIwMDQxNTI5ZDk1YmQ0MGRjMDU3ODYwNmYgcmVsZWFzZTIyLW1haW50CisyODA2NiAyZjQxMWYyZDc5MWFkZTc2OTY1MDBkZmE3OTY0YzFhOGUyNzQ2MDU5IGxlZ2FjeS10cnVuaworMjgwNjcgYTYxODkzZDdjZWYyNTBjZDM0ZGMyMTQ4YzBmZjg4OTE4ZDhlMDVjNSBsZWdhY3ktdHJ1bmsKKzI4MDY4IGIyNjVlNzZiYWI4ODMyOTM0MWJhODQ0N2E1MmU5Yzk4M2I4NzY1M2UgbGVnYWN5LXRydW5rCisyODA2OSA2YTZkMDJiZTMyMWNjZDEwMTgyMzczYzUwYjkyZTA1MmI2YTdjNjI4IGxlZ2FjeS10cnVuaworMjgwNzAgZDI1Y2Y5NGQyMGIxZWFlZWIwODg4ZGM2MjFjMjI3MDk0YzEzOGY0ZiBsZWdhY3ktdHJ1bmsKKzI4MDcxIDRmYmY1MzQyMTFiOTdjODgyYzA5ODQ0YmMwMDRiMTY4MGFmMTFlYzkgbGVnYWN5LXRydW5rCisyODA3MiA1NzlmMDljMGZkYmNkOTJhZGQ4NjYzYzQyYjc2MDMxYzYwMzJmNTUyIHJlbGVhc2UyMi1tYWludAorMjgwNzMgYmRiYTcyZmZkMjFiZjlkNjI2NzRiYjEwNjNiYjdkN2Y2MWQ2NmE0YiByZWxlYXNlMjEtbWFpbnQKKzI4MDc0IDk1YzQ2MjNmODE4NTA4ZjJmYjk0NGYwYTcyZjMwYTUwZDJhNzQwMmUgbGVnYWN5LXRydW5rCisyODA3NSA3MGI2NzUzMTE3Y2MwMWJkN2Y3NzQyNDc2YTM4YmUwY2Q5YmEwNGI4IHJlbGVhc2UyMS1tYWludAorMjgwNzYgNjQ3ZjkzNjc3NTBlODc0MDEzMWM0NGQxY2FlZDZhOThkODVmNzg3ZSByZWxlYXNlMjItbWFpbnQKKzI4MDc3IDY4OGVlZmJhMDg2OWJiNWQzZjJjODE2YTUwMGVhYzIwMzUyMDA1MGQgcmVsZWFzZTIxLW1haW50CisyODA3OCAzNzk2ZDM5ZjBiODBjODFjODVlZGM5N2M2ZDRiMGE5YjlmYzk1N2U0IGxlZ2FjeS10cnVuaworMjgwNzkgMzI2OWJkZDY1OTg4ZWZmODk3NjM3MDg0YTgzMWFjZWI1YmU0M2E5OSBsZWdhY3ktdHJ1bmsKKzI4MDgwIGZlYzBiMGFlZjE0YmE0ODdlMDY2ODY0YTg2ZjRlYjM5NWY4MzgxMDMgbGVnYWN5LXRydW5rCisyODA4MSA5ODA3NjdjNmNkOTc1YjYxN2UzYTA3Y2YxYjZmZDhmYTNhMDVkOWMyIGxlZ2FjeS10cnVuaworMjgwODIgNDc5Y2I1ZmYyZTYwOWM1YTIxN2E4Mjk0MGJmZjkzOTNhYjdjMjMxOSBsZWdhY3ktdHJ1bmsKKzI4MDgzIDcxZGNhN2M3NmZhMjI3OTJiZTkzZmI5MGM0YzRiZTdlOTA5MjVjMWMgbGVnYWN5LXRydW5rCisyODA4NCA3YjEwZTdmZjc5NGRjNTAwMGZhZWNhMWYzMDYwMmZlMWVkODFiMjcwIGxlZ2FjeS10cnVuaworMjgwODUgNmQyNmQ0YjljNWEzNmMxOGU1NTA3MzkzYjBlODc4MmVkYjUyNjNhYSBsZWdhY3ktdHJ1bmsKKzI4MDg2IGFlZTE4ZWEzZDI4NDc2NTM1MDdmMmIxYWIxNjllNDE4YTNkZjQxMWEgbGVnYWN5LXRydW5rCisyODA4NyAwNDkyYWQxYWM2MjM1ZDFmYWYzYTg0MzkyODA1Y2NjMmFlZTUxODUzIGxlZ2FjeS10cnVuaworMjgwODggNTY3NzA0YmZhNTk1YTVhYjdiNGNlNzFhOTZjNDE2MmIyNDAxNzQyMyBsZWdhY3ktdHJ1bmsKKzI4MDg5IDI3NGU0MmE2OTFlMGM4NDM2NTNmZjhiMmEyNGM5YzZiMmM5NDljZDAgbGVnYWN5LXRydW5rCisyODA5MCAzNjQ5M2E3YzYyNTM5YmNhOTk1YTkzYjEzNjcxZjRjNGNmOTMwNTM2IGxlZ2FjeS10cnVuaworMjgwOTEgYmU0N2RiMzgzMDdlMTgzMWE2YjRmNDdjNmFlNjI4MWU1YmE4MTExMSBsZWdhY3ktdHJ1bmsKKzI4MDkyIDhiNDcwMjgxNjQ1ZTYwMWRmMzJkZDBkZDg2NWU3ZDAxYzIwMGJmNGQgbGVnYWN5LXRydW5rCisyODA5MyA3MzRmODljMTk0ZGQ5ZjEwM2VjMzA0YmFjZDllZjg4YzQzNWVmOWNlIHJlbGVhc2UyMi1tYWludAorMjgwOTQgZGViY2Y3MjA2N2YwNTk2N2I1ZDc1NjQ3ZDYzNDRkMWYwOTgwYmYwNiBsZWdhY3ktdHJ1bmsKKzI4MDk1IDljNmYwZTE5OTkwMzVhNGYxNDc1NTI2MjcyMTVkNzVkZmE3NGQ2OGEgbGVnYWN5LXRydW5rCisyODA5NiAwY2RiNmU5YmNiNTIxNGRiMzg3MGU1YjhhNmExNDUyZWQwOGMzN2FlIGxlZ2FjeS10cnVuaworMjgwOTcgYTI4YzljMzM2YWI3MTE5MTcxZGI3ZTVkNmNjMzQ1OTAzNWM5ZDVhOCBsZWdhY3ktdHJ1bmsKKzI4MDk4IGU3MWJiYmEwYTBiOTc2NjhjNzY4NDBmNGQ2YTMwZGU5YmRiM2Q0YTYgbGVnYWN5LXRydW5rCisyODA5OSA4MmUzZmRiMjgxNjQ1MGMyY2I1ZWRlZDBmYzY4MGM4ZDUyOTljMDEwIGxlZ2FjeS10cnVuaworMjgxMDAgYTk4OWEyZWFhMmFjMTA5MjU1ODRiMGQyM2ZmNzgzN2RjMTQwNzIxOSBsZWdhY3ktdHJ1bmsKKzI4MTAxIGJhMzAzOGEyN2MxZTM5Yjc1NWY0OGFkZWJhNmMxNTYzMmJkZTk1MWEgbGVnYWN5LXRydW5rCisyODEwMiBlZWY3M2U4ODIzZDVhZWY5MWQ0OWI3ZWMxYzcwMWY5Nzg3M2Q5MzI3IGxlZ2FjeS10cnVuaworMjgxMDMgMzFiOWQzNjk4NjFkODQ5OTdkOTViZDFiYTQ1NDAyYjc1MWJlM2MxZiBsZWdhY3ktdHJ1bmsKKzI4MTA0IDgwYzdhODJkNjE0NDg5ZTk0NTA0ZjE2OGJhZDY4ZmZmMTgwZDYwM2YgbGVnYWN5LXRydW5rCisyODEwNSAzNDEyOGNjZjJlZTYxOTNiMmZmNDdlYWI4ZmE0ZWYzZTcxMjFlOWVmIGxlZ2FjeS10cnVuaworMjgxMDYgYTJmOWJiNTQyMzFiMTNhOWJjNzM3ZjVhMTA2MDVlODllMjUyYTAxNSBsZWdhY3ktdHJ1bmsKKzI4MTA3IDZlYjk1ODcxNmQ5N2M4NDBjZWQyYmVjZDQ5MzQzMzUyODEwN2RiM2YgbGVnYWN5LXRydW5rCisyODEwOCA0MTgxZTNhNDJkMGEyM2RhYmRhMGY3Y2Y4OWEwOWQxNDEyYjA1MGM2IGxlZ2FjeS10cnVuaworMjgxMDkgNTY0YWJiOThkZWI4OWM0ZTI5ZDlhN2M2OWZhYjU1YjI4M2I3YjgzNSByZWxlYXNlMjItbWFpbnQKKzI4MTEwIGU1YmM0NzBkMWQxZTFmZTA3NjY2ODZjMjQ0OTVhMGE2NmNhZjRhOWUgbGVnYWN5LXRydW5rCisyODExMSAwZDQ2ZTRiODljYWU3YTRlYTFlM2VkNGIyYWM5ZWQwNmQ1MTZhZDQ1IHJlbGVhc2UyMi1tYWludAorMjgxMTIgMmRjZDRkOTI4MTQ3MDNmOTkxZGY0ZWE2OGZmMmIxZDhkZDdlMTQzOCBsZWdhY3ktdHJ1bmsKKzI4MTEzIGFhOGJkMGRjNGY4YTEwNmYwNjg0MGEzN2FlOWE1OTQyN2U0ZjdjMDggbGVnYWN5LXRydW5rCisyODExNCA2Yzk2NTg3YTE5N2Y5Y2RhNDMyYjhmNTI1NGJmZWUwYmE1YjRkOWY1IGxlZ2FjeS10cnVuaworMjgxMTUgMTFjNzAxMDM4ODA1NjUxOTNlYTRjNWYwNzllN2IyMzY2ZGQyZjFlOSBsZWdhY3ktdHJ1bmsKKzI4MTE2IDQwNjc4OGNhZWY2ZjI2ZWNmMGQ1MDcxYmY5OWZlYmVjMTY0NzRhODQgbGVnYWN5LXRydW5rCisyODExNyA5NDI5YzNjZjQyYTcxMmJmNDBhMGI4ZjE2OGZhZDBlODVmMTg3ZmZjIGxlZ2FjeS10cnVuaworMjgxMTggZGIyN2E0MmNjZjQ4YWMzMGVhYTE3MmIxNDJkZjI2ODgyOTkyYWU1ZiBsZWdhY3ktdHJ1bmsKKzI4MTE5IDc0MTQzZGI2YWUyZjk3ZmI2YTU0MGFmNzU4ZWE2MDU3ZGRlMjY0ZGMgbGVnYWN5LXRydW5rCisyODEyMCA0Yzc0NmJhMjRkZTIxYzgxMGI1MGE3OWFiZjA1N2NlMzE2ODRlZWU5IGxlZ2FjeS10cnVuaworMjgxMjEgMzQzZTY0YzkyZWIyOGUwOWI1ZTBjNzQ5NDM5NjIyMzliZjBjZmM0NCBsZWdhY3ktdHJ1bmsKKzI4MTIyIDFkM2Q5ODBhMzE4NjA0MWMwNjIzOTZiOWNkNTdmOTkyNmFhN2I5ZGUgbGVnYWN5LXRydW5rCisyODEyMyAxMjlkOGQyZTE5MDRjNzI2OTQ0YzFkNTljNzFjYzJlNmUwN2E1Yzc2IGxlZ2FjeS10cnVuaworMjgxMjQgNWM3NzMxNmIyMWY3MGQ3NThjZGI2NWM1ZDg4YTIwZmYyM2M4NWQxOCBsZWdhY3ktdHJ1bmsKKzI4MTI1IDM3NGY4NzljNWQ4YmQ5N2YwYWM0YmJmOWNjNzUxYmE0NDZhMTQ2ZDUgbGVnYWN5LXRydW5rCisyODEyNiAyZDNjNGE3YWVjMGE3MDZkZjUyNTJiNjQ1NDgzYjRiMzg5YzEyMTk5IGxlZ2FjeS10cnVuaworMjgxMjcgNTEwZTczYWUzZTllOWQxMjNlYTMzNjAyZWVmMTQ5Mzc2MTNmZTYxOCBsZWdhY3ktdHJ1bmsKKzI4MTI4IDllMmY1Mzk2MzRlODBhMWVkNjNjYzg2MWUwOTEyYTA4MGQ0ZWUwYmIgcmVsZWFzZTIyLW1haW50CisyODEyOSAxMTI1ZDk0ODlkZmE0MDA3YmU2N2FiZjc3OTg4ODg1YWU3NTNlOGJiIGxlZ2FjeS10cnVuaworMjgxMzAgNjkwNzlhYzdjNTEyZTU2MGE4MWNlNDA3MmFiNjNlYjZjYjMwNGIzNSBsZWdhY3ktdHJ1bmsKKzI4MTMxIGJiZDVmOGFmNTg4YWMxMGNmMTRkMzBhZjcwOTY5NDBmYTVkOTY3M2QgbGVnYWN5LXRydW5rCisyODEzMiBiNTY0MGU3NGFhNWMyOGJlZmMxOWJjZmZjYmI0NDZhODkxNTI3NTdlIGxlZ2FjeS10cnVuaworMjgxMzMgM2I4YTcwN2I0MWM0NjJmMGQ5MGU2ZmUwOWIwZDNkZWM3ZDA2OTVjYiBsZWdhY3ktdHJ1bmsKKzI4MTM0IGIyZjdkZjQ2NzcyMjFjY2FkYWRjNTkzNjVhZWFjZGYwZTg1ZGY0NzIgbGVnYWN5LXRydW5rCisyODEzNSA4ZDg1MGQ1OGYxMDljN2Y1N2VkNDdhYzJjODcwMTU4Y2MwYzVkZTk1IGxlZ2FjeS10cnVuaworMjgxMzYgZDcxNWNhOWRiM2FhYTJkMTRjMDg2YTI5NTFmZjJhYzgzM2M4ZGY2MSBsZWdhY3ktdHJ1bmsKKzI4MTM3IDA5ZmYwZWQzM2VmY2I5MTk3ZWE4NGI3ZTRjZmQ5YjI4MmU2NzBmNjEgbGVnYWN5LXRydW5rCisyODEzOCBiMDI3M2YzOTdjZjEyMmRiYTIzMmE5YzMyOWZlZDBhMzFlMjEwNDVmIGxlZ2FjeS10cnVuaworMjgxMzkgNDkyMzE2MGUwNzA3ZjdjM2U0ZmUwMWM1OTZkNWU1NGYzYjAxYzAxYyBsZWdhY3ktdHJ1bmsKKzI4MTQwIGIwZDVmYjU3N2FiNjAxY2RhMzhiYWVmNDI0ZmFhZjk4OTRlMjViMzYgbGVnYWN5LXRydW5rCisyODE0MSBmZjA1ZWVmM2E2ZDFlYjBkMGFjNTAzOGQxZThmMTA2MTMzNjRhODIzIGxlZ2FjeS10cnVuaworMjgxNDIgZWFhODc2MzJiMWU4ZWRmOGUyYmU4M2YzM2U5MDJkMjQyZGRlNmRjNyBsZWdhY3ktdHJ1bmsKKzI4MTQzIDU2NTYwOWJiOGQ4OThkM2MzNzViNjFlNTgzODk4NDM5ZWNmMzA2MzggbGVnYWN5LXRydW5rCisyODE0NCBlZWM2ODMyODE4YTM3MDA5ZThkNzBiM2JiOTNiNGEwNGY1NTNhMjllIGxlZ2FjeS10cnVuaworMjgxNDUgMTAzOTFkNThkMTg0MTFlMzc2NDAyNDI2ODBjZjBkYjhlZjAyYzAzYyBsZWdhY3ktdHJ1bmsKKzI4MTQ2IGU3NTY4NjdhY2U4MTBjOGZiY2Y1OTk1OTBjMjc3ZTI2YzFlYTAxZjMgcmVsZWFzZTIyLW1haW50CisyODE0NyBjNjU5ZjA0ZWU0OTkzNjhkNTQ2MzYwMTVkMGNlZGEzZWI1NDMxZmIwIGxlZ2FjeS10cnVuaworMjgxNDggNmQ5OTc0YjQ1ZmVhMTMzMzk0OWRhZDY2NmY1NjljZWJjNjE4OWVkZSBsZWdhY3ktdHJ1bmsKKzI4MTQ5IDFhMzI3MGUyNmMxNjJmNDk5YTBmMTY0MzUzZjg2OTIyZjFmOTIyYTYgcmVsZWFzZTIyLW1haW50CisyODE1MCBiYTAzNWY0YjQ3YzE1NjAyZjExNTQwN2M0NjUzNzY3OGNhYWEwYzNlIGxlZ2FjeS10cnVuaworMjgxNTEgNDkxNjlkMDBhYjE4MjI0M2M5NGVjOWY3ZDBiZWYyNmRiYTQ4ZjE2NyBsZWdhY3ktdHJ1bmsKKzI4MTUyIDE5ZTAxMGY3OTJhMzgzZTJlY2I3MzU5ZGUwMTgxODk4YmY3NzIxMzMgbGVnYWN5LXRydW5rCisyODE1MyAxOGMzNWJiNWZlMDc0M2ZmNTcxYzgwMjZkNGU3YjlhNzE5OWFhODU0IGxlZ2FjeS10cnVuaworMjgxNTQgYTQzNTE5ODg3YjE3OTRkNzAxN2UxYTcxNzhiY2FlNzlhYmI5MDQ4NiBsZWdhY3ktdHJ1bmsKKzI4MTU1IGMyNDhiZWU1MmRjNmE3OGU5ZDhhYTA2MTM5OTVjZTRkYjM5ZTNlN2QgbGVnYWN5LXRydW5rCisyODE1NiBkYmY2ZTU2MzAyM2I5ZDRmNjc1NWI3ZWZlYzZkZDJhNTY1MDQ2ZTUyIGxlZ2FjeS10cnVuaworMjgxNTcgYzFlYjY2ODUyNWUxMWNlNDdmYTk0N2IxMDA5OTBkMzRiMDNjNDg5YSBsZWdhY3ktdHJ1bmsKKzI4MTU4IDI3YWU5NzhiZWU1ODU3MzQyOWE5NzY2MjEwZDBkNTM4OWMwZTk4MDIgbGVnYWN5LXRydW5rCisyODE1OSA4YWIzMDMzNzViMzA1ZTgzODg1NDdlMWQ0YzdlY2E4NDY4N2RlNzU0IGxlZ2FjeS10cnVuaworMjgxNjAgYzg4ZDA4NDhjNWM5MzBjMjZjMDBkYmIxMWY1ODMxMTgyMGM5ZjdjMSBsZWdhY3ktdHJ1bmsKKzI4MTYxIDljMjVhYTEzYzM2ZTFjOTJiOTA0ZWYwMzBiNzhiZDY1NzdjODcwNmUgbGVnYWN5LXRydW5rCisyODE2MiBiNTA0ODM1Njg1YzM0ZWE3M2U3MjBlNjY4MDAzOGE4ZGI4OTJkODJkIGxlZ2FjeS10cnVuaworMjgxNjMgMjdlY2E0NzY2OTM3YWVmNGNiZTJmYjllZGQ5OWI1NjIzNDg5ZDA0YiBsZWdhY3ktdHJ1bmsKKzI4MTY0IDNkMjMzNTA5NGI4OGMxN2ZhNmI1ZjZkMDg1NDlkY2M0MmIyNWZiOGQgbGVnYWN5LXRydW5rCisyODE2NSBkY2ZhYmU2NWMyMmU1YjJiNjhjZTE1NTNhZTA3MjQ5ZTVlOWY4YmMzIGxlZ2FjeS10cnVuaworMjgxNjYgZTA0MzFkOWM0NDc0MjAyN2Y3MjhiNWMzMjYwZWJiOWI4NDk0YzViMiBsZWdhY3ktdHJ1bmsKKzI4MTY3IGNjZjY2YTFhYTBiODQ0MjlkNTU0OGQyYjUzZjYwMTlkNTE3MmFkODAgbGVnYWN5LXRydW5rCisyODE2OCA1ZWQ3Yzk3N2QyYTk2ZGI2ZDQwMGNmOWZhNWQ2ZTQ4N2QxZWUzYzIyIGxlZ2FjeS10cnVuaworMjgxNjkgZjBiZDVjZDRiMTcwNmIzMzlmMGExMzdlNGFlZjI5ZTZjNjA5MGMxYiBsZWdhY3ktdHJ1bmsKKzI4MTcwIDRjYWZkOWRiYzhiNDc5MTZlOTIzNTY0MjM4YWE5MzZlYmEzMDkwOWUgbGVnYWN5LXRydW5rCisyODE3MSA1OGVhNDIwZGRjNWVlYWRlMGUyZmZiY2JhMDRiYzI0YTBmMzNmNDU3IGxlZ2FjeS10cnVuaworMjgxNzIgMjcyMjA1N2ZmZTg2MDEwOTk3NDYxMGFjNjE2YzZiNDM2MjYyYjllYSBsZWdhY3ktdHJ1bmsKKzI4MTczIGFjYjI1ODU0NWE1YzEyNTQ2YjQ1MTljMDM0NTQ0MzY5Mjk2N2FkNDMgcmVsZWFzZTIyLW1haW50CisyODE3NCAwYWZhY2Y1ZGM0MmVhYmY4YjBjMjk5ZDAxN2UyMDhhOTIzMDNlNjVlIGxlZ2FjeS10cnVuaworMjgxNzUgZDc1YmQ5ZTVjNGQ5YzNkODRkNTMxODUwMThkOGNlNGExNjg1MTUxNCBsZWdhY3ktdHJ1bmsKKzI4MTc2IDE4MjQ5ODNmZDk0YTc0NDg0OGEzMmQ0MmM5YTBhM2Y1MzNlNTFmZWUgbGVnYWN5LXRydW5rCisyODE3NyBjNjBlODk1ZDExMjViMzRkYjI4MTMzNGM4NWMxZTlkZGVkMTE2OTg5IGxlZ2FjeS10cnVuaworMjgxNzggODAxYTQ0YWIyYWFlNjcyMTg5ZGM3OGU0M2UzZTNjNjVjOWFmYjFiZiBsZWdhY3ktdHJ1bmsKKzI4MTc5IDllN2VjMmY1YTFiZDM3M2ViYjgxYmNiODJiMGUxNTYxMGJmYjRiNjMgbGVnYWN5LXRydW5rCisyODE4MCA2YzZkZjY5MjM2YjFkMjk1YTg2NmNjOWUyN2VkYmEwNjMzYjM4N2ZmIGxlZ2FjeS10cnVuaworMjgxODEgZmUzNDcyZjJmOGViNzIyZDVlZTEzODkxZjBmZjhkOWQ4OWQ3M2ZkMiBsZWdhY3ktdHJ1bmsKKzI4MTgyIDY5NmEyODQ1NjllNjRjYjhhMTBmNmQzN2Y5YTM2NzdjNWVhZGUxOTEgbGVnYWN5LXRydW5rCisyODE4MyBmMWQxOGZjZDU2ZTY5NjI4NTk5MmRkMjYxZGQyNzYyYzFiNTBkMjM0IGxlZ2FjeS10cnVuaworMjgxODQgNTNjYjcxNjM4ODQxZTZkZDg4Mzk1MjZkNzVlODI1ODlkZjUyOTI1ZSBsZWdhY3ktdHJ1bmsKKzI4MTg1IDFmZTA2NjU1YzUwYzk1OWUzZWVhZDQ4MTQzZWI2ODVlMWNiZTFlZWQgbGVnYWN5LXRydW5rCisyODE4NiBmYWUzODZkNWUzNTQ1NmU1YWIxOWUxOWQzMThmOWIxYTE1ZDZhYTRlIHJlbGVhc2UyMi1tYWludAorMjgxODcgYzIzODUzZjdlYmViOWUwNWNlYjM1OGNiZWExMWFhMDBjMWE2ZTA2ZCBsZWdhY3ktdHJ1bmsKKzI4MTg4IDAxZDZjNTE0NmZmOWFlY2EyZmYzMTA3NGNkZGVmMGViNWJlODAzNzIgbGVnYWN5LXRydW5rCisyODE4OSBjZWM0MWUzNzYxYWMzZTQzNDhjNWNmZDgzNzFkNjUyYWQ2M2ExYTMwIGxlZ2FjeS10cnVuaworMjgxOTAgNGRlOWFjMGU0MTczNjYxYmUxZjFkZTMyMTE0NjljYjBmZmUxYTM0NiBsZWdhY3ktdHJ1bmsKKzI4MTkxIGYwZDYzYWExZGZjN2U5MDlhMmQwM2FhMjZhNzA4ZGYzZTRiNjNkYmYgbGVnYWN5LXRydW5rCisyODE5MiAwZjYxZTA3NDE0N2ZiMWFhZmNhMjQ3ODM1YTc3MGQyMDBkYTY2NDEyIHJlbGVhc2UyMi1tYWludAorMjgxOTMgMWZkMzg5MDBmNTNiODYxMGVlOWYyMGZmYjM2YWE0MDFmOGM1OGQzNSBsZWdhY3ktdHJ1bmsKKzI4MTk0IGZjYmRlMjI2NTQ1Y2MzOGMyNjNiNWMzNzU0MTUwMzM2NWM0NDdmNWMgbGVnYWN5LXRydW5rCisyODE5NSA4MjU5NDhjMjFmMGRjMTM4ODVjYjgxMGViMzIxNDM2NTY1NDNiNjNiIGxlZ2FjeS10cnVuaworMjgxOTYgZGJmNGNjNTYwODk4ODNlMDc5YzcwOGUzZTY4ZDY3N2RmMmUzNjI3OSBsZWdhY3ktdHJ1bmsKKzI4MTk3IDRjNDZiM2VkYWE1ODdjMGUxZjc1MGIzOTRiOTAxMmQ5ODMzZDlkNzAgbGVnYWN5LXRydW5rCisyODE5OCAxOTUxYjJjNjYwNDQzOGIxMzJmYjE4Mzc4ZjhmMjAyZjBlODM5ZmYzIGxlZ2FjeS10cnVuaworMjgxOTkgMWM2M2QzMDgyNjU2OWVhMTc0NjViOTA1ZTE4ODY5Y2I3YjEyZDFhMCBsZWdhY3ktdHJ1bmsKKzI4MjAwIDQ1MmQ2YTkxNjE5NjI0NjNmNTY1ZWNkOTFhNGM2MjdmODVjZThjYjcgbGVnYWN5LXRydW5rCisyODIwMSBkZTcxZTZmZTY0YjA1MjU5NDlkMzI5NTk5YzJiZmRjZTY3MmUyZjQwIGxlZ2FjeS10cnVuaworMjgyMDIgNmE5ZWEwYzIyY2VhMWY5YWIxMDg5YWE4NTA5NTNkM2VlMTRiNDZjMyBsZWdhY3ktdHJ1bmsKKzI4MjAzIDQ2MWFmZGI1Y2I5ZWRmNjMwNmQzZWU4N2FlMzI3ODA2ZGQ2ZDRjMzYgbGVnYWN5LXRydW5rCisyODIwNCBkOWZmOTdjZTc1YmJlZDFlNzY3Mzk3OGExMzcwZmM3YWQxNDY2MzcxIGxlZ2FjeS10cnVuaworMjgyMDUgOTMxZmIzNzAwZDBiYTkxYjkwNWVjZDEyOGE3OGUxNzBhOTU2NzhhMCBsZWdhY3ktdHJ1bmsKKzI4MjA2IDg2MjY5NWI5MjBmZGQ4OGY4YTZiMzc3ZTAyM2I4ZDczMThmOWQ0ZjEgbGVnYWN5LXRydW5rCisyODIwNyBhNjJjZWU0ZWVkOTY2ZjFmYzJkM2Q5MmM5ZGM0ZTUxNDRjZGYwMDE2IGxlZ2FjeS10cnVuaworMjgyMDggMThjYmFkZDgwNzEyNWFlZDQyYjE4YTFlN2JiYTYwM2JjZDUzNWJlZiBsZWdhY3ktdHJ1bmsKKzI4MjA5IDMwY2ZmOWMxYmY2OTNjMDhjZWEyYTk2ZWQzZTE5MTdmNDcyMTY2ODMgbGVnYWN5LXRydW5rCisyODIxMCBmMTQ3YjU5NDQyNDQ2N2YxNDI3OTM5NDg1N2E0OGVlNTg0ZTM4MzEzIGxlZ2FjeS10cnVuaworMjgyMTEgOWIwNmY0NGJkNGEzNGQ4NzNkNmQ1YzM1NDg2NDE4ZjcyZjc5OWM3OCBsZWdhY3ktdHJ1bmsKKzI4MjEyIDY4NWNkNTJjNGM0MzhjM2ZmNTU0NzA3MDI1NzUwYWExYmNiMGU0OWEgbGVnYWN5LXRydW5rCisyODIxMyBhYjYzYWYzZWMzNDk1Y2JjN2M4OTAzYTMxYzc0YjgwYzNkNjJhMmM1IGxlZ2FjeS10cnVuaworMjgyMTQgYzc1Y2RjNDcxYjIyNDRhOGIzYTdjNWUxY2U5NGExYWEzZTVmMGI5YyBsZWdhY3ktdHJ1bmsKKzI4MjE1IDdjZTgyZTlkMDhjNzhhNTA1OTBiZjgwZmEyMjE5YWE0OTRiNjc1OTMgbGVnYWN5LXRydW5rCisyODIxNiA1ODYyM2NlOTRkNDA2YzQ5MTRkNTlkZTUwNWU3ODljYWNhOTZhNTY5IGxlZ2FjeS10cnVuaworMjgyMTcgNzRlZDQ1NzIwOGMxYTBmNTM0ODk3Y2NmODYzYTU0MzRhY2ZmMGFmZSBsZWdhY3ktdHJ1bmsKKzI4MjE4IDdiN2Q4ODIwYWUzODBmMDllNjBiYjZhY2VlMTkzZGMxZjZkMzE5NzggbGVnYWN5LXRydW5rCisyODIxOSA2NDIwYjk3ZWI1OWYxN2MxMWFiY2E0YjQ3OTdhOGMyODM3NDI0OTFkIGxlZ2FjeS10cnVuaworMjgyMjAgNTBmYWE2ODM1ZGRjNDE3OTk0MjEwMjIxOTdiODFhZTg3Njg4ZTVlZCByZWxlYXNlMjItbWFpbnQKKzI4MjIxIGM0NTY0MmUxZGNhOTNjNTM1ZjJmNTY3MGUzMjljNTFlNDNjZGM3YzEgbGVnYWN5LXRydW5rCisyODIyMiAzYWU4ZTNmZjdlM2YzNDM3Y2M2ZTkxY2I4YmIyZGVmODI0YjFlMWE5IGxlZ2FjeS10cnVuaworMjgyMjMgMzFkMjg2MDA4OWU2MDBiNmY0YjIxZDU4OTYxMjlkODNiNDU0ZWMxYyBsZWdhY3ktdHJ1bmsKKzI4MjI0IDRlNDRmYWJlMGZhMDE3YmI4NWIyNTAxYzQyMTY4MjEwZDhiM2VkZjIgbGVnYWN5LXRydW5rCisyODIyNSAwMTExMzhiNWYzODlhMjg0OGUyNWViNjIxM2NlNTdmZDM0YmU4OWRkIGxlZ2FjeS10cnVuaworMjgyMjYgYWU5YzlmOTBiNGIwMWJmYTBiMTkxMWI1OTc3ZDI1ZDZjOThjODczYSBsZWdhY3ktdHJ1bmsKKzI4MjI3IGQzZDdkZTcwM2EyMmRhYWM4ZDlkOTcyN2Q2NmY5YWVhYTI4NmQxOWIgbGVnYWN5LXRydW5rCisyODIyOCA1ODhkMTQ1YzQ0ZGQ5ZTZjOTYxN2Q5ZTcyMDM2Zjc5MzFmZjQ2MDY0IGxlZ2FjeS10cnVuaworMjgyMjkgN2M5MWQzMDNjNTYzZWJlODZhODFkOTVlYTZlNmY0Y2U4NWE4YWM5NCBsZWdhY3ktdHJ1bmsKKzI4MjMwIGMwMDFlNWExNTM2OWYzN2E3YmExMjFlMjA5N2Y2YWU4NjI4MDgyOTUgbGVnYWN5LXRydW5rCisyODIzMSBhN2RiZTRlN2Y1ZGVkY2MyZjBmYzM4NTNjMDcwZWVmNDI2M2JlOGZjIHJlbGVhc2UyMi1tYWludAorMjgyMzIgZTVhMDdjYzgxNTU5MDU4NGM1YWNhM2YxYWJmZDRiZTkyZjVmZGNmOSBsZWdhY3ktdHJ1bmsKKzI4MjMzIDRjZjUwMjcxNmQxNWQ1M2ZlZmU1Y2RhYWFiMmM4MGNlMzFjZjgwNDQgbGVnYWN5LXRydW5rCisyODIzNCAzMWVlMzJjMjNkMjljNTlmOWYzMTAzM2ZiN2UzNWI1MTE0MjNkNmRhIGxlZ2FjeS10cnVuaworMjgyMzUgOGUzZTBlMTFmMTRjYWNhMzMzNTQ3YWJlZDNmYmE0ZDM2ZTc5YmUxNCBsZWdhY3ktdHJ1bmsKKzI4MjM2IGE2MDJlNDg3OGI0ZWNkMGNhYWIzOTQ1OWM0MmRmNDlkYmNmYTlmZmUgbGVnYWN5LXRydW5rCisyODIzNyA0NTNjODhmOTYzZWMzMjYzODhlODVmMzVkNWZiMzhmMGVlYTE4YmZkIGxlZ2FjeS10cnVuaworMjgyMzggY2E1OGY1YTQ1NThiOGZhOTI4YzNkMmUwYmEzNjkxNGI3NDNmYWQxZiBsZWdhY3ktdHJ1bmsKKzI4MjM5IDY0ZjRkZDc3MGM2N2RhNjUwOWE5MjE4NDE4Zjg0Y2UyNzRmZDViY2QgbGVnYWN5LXRydW5rCisyODI0MCBlMzk5ZDBhODc1YjdlMWZmMzg5MjRjZGRkOGU0NzNiODg4MzZhNjQyIGxlZ2FjeS10cnVuaworMjgyNDEgYzAwNGIyYmNkNTQyMWM0NDQ3ZTM0NWVmOWVlNDlkZjFlZWVjOTAzYiBsZWdhY3ktdHJ1bmsKKzI4MjQyIDE5ZjI1YmNmNWEwMDJlZDFiZTdiZmVjMTk0MTMxZmQ1NWZjMzRiMDQgbGVnYWN5LXRydW5rCisyODI0MyBhZWE2OGNiMzY4NTk2MTM0Y2MyYTUxYTIzMWVlNjViYTliMTdhYTAxIGxlZ2FjeS10cnVuaworMjgyNDQgMTdlOTVjYzA2ZjY5M2IwNmM4ZGNmODEyYzFmNjRjMWQ3ZmNmMjhiYiBsZWdhY3ktdHJ1bmsKKzI4MjQ1IDJmZjQyNjhmMjVkYzczOGE5ODk2MDIwNTY2ZWVmMWIyYWI0NDcxMzIgbGVnYWN5LXRydW5rCisyODI0NiAzYWY4ZDgxZDdmODZlNDhhZjljODNkMTU5MzIxY2I2ODNlMTZiNDIwIGxlZ2FjeS10cnVuaworMjgyNDcgYzlhZjg3NTA0OGU3Mjk2YjUwZjRiNzFiN2ZhZDcyMGI1MmJjMzA2MSBsZWdhY3ktdHJ1bmsKKzI4MjQ4IDExYzFjYzk3Yjg3YTMxZjZmNjM1ZGZhNTEzZWEyODJlMjkwNzViN2QgbGVnYWN5LXRydW5rCisyODI0OSBjZjU5MjhmYWIxMDhkZTlmYmUwMjYzMmQwNzE3NmM3MTdjMmIzYWE3IGxlZ2FjeS10cnVuaworMjgyNTAgNjkzOWQ3MjE4MmU2YzQ5OTFjYzc0ZTU0Yzc0Y2U1MDM0OTczOGI1ZSBsZWdhY3ktdHJ1bmsKKzI4MjUxIDEwYTRlYzQ1NTQ5ZDBkODk0OTEwZGRhOTgxOGI5Nzg4MTkzNTQ1ZTIgbGVnYWN5LXRydW5rCisyODI1MiA4NzNmMTJmNjhlM2IxMDE0OWJjZDdmM2Q5OGQyOTVmNmZmYjk5Y2U3IGxlZ2FjeS10cnVuaworMjgyNTMgZGFjZDEwZDQ2ZTUyOTQwNWI4Y2Y4NGU5Y2RkZmUwOTAyZjQ2Y2Y5ZSBsZWdhY3ktdHJ1bmsKKzI4MjU0IDNjOWM1NmQ5N2U1NWU3MjNiNmU3M2I4M2IxN2RmYWNlNWFiMmI4ZGYgbGVnYWN5LXRydW5rCisyODI1NSA4YWI0NmRmMzE4MmU3OTQzM2NmYjI5ZTcxMDgyYTFlY2Y3YzFhZDBkIGxlZ2FjeS10cnVuaworMjgyNTYgMzRjYzk4ODkyZTg5MmU2NzM3ZWUxYjMxNDM4ODAyZTQyYzcxZTFmNSBsZWdhY3ktdHJ1bmsKKzI4MjU3IGFkMzYxZTFkNTRiYmEzZTJmNGIxMjUwM2E2ZGZkYzRhNDAxNGRmYTcgcmVsZWFzZTIyLW1haW50CisyODI1OCBlOWRkM2U5MWU2NTMxMGI3MDc4OWYwOWFmODA3NWMzYTcxNjI4ZDg3IHJlbGVhc2UyMi1tYWludAorMjgyNTkgMTM2Yjg1MzYyMmNjOTIzNDc2OTYwNzdhZTMyZDk0NzBkODlmZTE4ZiBsZWdhY3ktdHJ1bmsKKzI4MjYwIGJlZDVkNWU1MzZiYzBjZWMyYmFlYzQxYzNmN2M0ZGZkZTg1MWYxNGEgbGVnYWN5LXRydW5rCisyODI2MSA4NzQ0OGEyMjhjY2EyYmVjYjI3MmIzODU2NjkzY2Y3ZWI5YTIyM2M2IGxlZ2FjeS10cnVuaworMjgyNjIgMGVmNmMyYWQwNzZiMTMzOTBkNjliODVmMThhYWIwMzhiNmZmYjZlMyBsZWdhY3ktdHJ1bmsKKzI4MjYzIDU5MjQwNmUwYzliMDE5YjY2NDJhYzRiMDJkNmQ5OGJiOWJhM2VmOTUgbGVnYWN5LXRydW5rCisyODI2NCBmMjQ0NzY4NmVjNWViZTdmMTk5ZDdlZTA5NjBjZjhjZjdiY2Q1ZTQzIGxlZ2FjeS10cnVuaworMjgyNjUgZTQ1ZDE2MTFlODY5ZDY0MGRkNTEzN2U5MmQzOGFmYWUzMTMyOWFiOCBsZWdhY3ktdHJ1bmsKKzI4MjY2IDRlNzk1ZmU5ZjU0YjIxYjhmZTQwM2UzMWZkOWE1MGVmMmZkODNlMGMgbGVnYWN5LXRydW5rCisyODI2NyA1YjY1NmMzZTEzMmI4Njc0MWNlNmM1YTIzMzI2Y2M3YTUxMjc3MWI3IGxlZ2FjeS10cnVuaworMjgyNjggYTNlYmQxMjMzYzAwZWFiZjkwOWJlODIyMjNmZmJkNWYxOGZhOTI1ZSBsZWdhY3ktdHJ1bmsKKzI4MjY5IGU1MDE0YWM5N2JhMTg3OWE2ZTQ5NDY1OTgzNDQ2NTQ1YmViOTRiYmYgbGVnYWN5LXRydW5rCisyODI3MCBiNTRjZmE5OGI2NmI5YjM0YzYzNDcyNWI4ZmYzNTAwOWEwMjQwMGY3IGxlZ2FjeS10cnVuaworMjgyNzEgZjBkYmQ1YjQ5ZDhhMDFmNTE5N2QxMDZjNDFkZWQ4Yzk3MzQwZDQyMCBsZWdhY3ktdHJ1bmsKKzI4MjcyIDI1NWQxZDNlNjZhM2FkOWIyZDNiYjFhMTYwNmRiZjFhYWM0OWQ0ZTEgbGVnYWN5LXRydW5rCisyODI3MyAyMzA2MDAxZjZlYWEzNTBmYTA1OTcyMzFiNjhiZGU0MGM0ZDhjNDIxIGxlZ2FjeS10cnVuaworMjgyNzQgOWNhODk2NDIzMzc0MzJjZDM4YWMzYzdiNmVjNmVhZjJiYTk4NDAwNCBsZWdhY3ktdHJ1bmsKKzI4Mjc1IGRmMjMyNmE0ODk0ZGVlNzQzYWFiOTRhN2VhZjkwNTUwOTE4NDQwZWIgbGVnYWN5LXRydW5rCisyODI3NiAyNThlMGIxMzQ3YzJhZDg2OGQzYjY3ODQzOGY4N2Y5NDUzMjIxMjg5IGxlZ2FjeS10cnVuaworMjgyNzcgOWJlY2ZlZjZlMzFhNmJkNzA3ZWVlYmM3NjY3M2Y2Y2M1NDhjZmY4MiBhc3QtYnJhbmNoCisyODI3OCA0ZjEzZTU5ZmQwYTAzZjk2NTBhZjdmNmQ5ZDIzMmE5N2QyZWNhZTBjIGFzdC1icmFuY2gKKzI4Mjc5IGNmNTYxZTYxMjM3OGMxYTNhZmM5ZGQyNGVjMWRkZmVkYTg2MzYyYzQgbGVnYWN5LXRydW5rCisyODI4MCA5OWY1ZDE4YmU1ODgwMzg2ZGE2NDI3NTMwYjlkOGI3NTE1ODI3MTczIGxlZ2FjeS10cnVuaworMjgyODEgYjUxN2Q5MjkyY2U3YzBmMWYyNjMyYTIzZDljYTE3MjU4NjY0Yjc1YiBsZWdhY3ktdHJ1bmsKKzI4MjgyIDgwODliYTM5NzQ4MGU0MGNjZGJiNjU1MjU4ZTY0ZGY4MDk5ZjE2ZTQgbGVnYWN5LXRydW5rCisyODI4MyA3MjUzMzdiNjhjYTAyYjNjMWE4MDc5OWY4MzhlODFjZjQyYWVlMzU2IGxlZ2FjeS10cnVuaworMjgyODQgZmM3NDAzZTExODc4MzMwYzNhZDRmODU3ZGZhYTVlY2EzY2FjZDFkYyBsZWdhY3ktdHJ1bmsKKzI4Mjg1IGY0ODUxMDRlNGVlODUyYjRjMjkxZWM5ZGQ2NGQyM2Y5OTM1YmI4NzQgbGVnYWN5LXRydW5rCisyODI4NiAyMzliZGFiYjYzYWY5ZDcxN2ZkZDljNzJmNDg1MzljNWRlNDNiM2U1IGxlZ2FjeS10cnVuaworMjgyODcgNzEwYmViZTIxODJjYjE0NGExOTlkMmQ5ZjAxN2MzZGNkZTJiNDlkZiBsZWdhY3ktdHJ1bmsKKzI4Mjg4IGQzNTQxZDkwZDVlMDZlNWJkYjA2NDE3ZjdmNjY4NTdkMjJmMGZhZmIgcmVsZWFzZTIyLW1haW50CisyODI4OSBhYWFlNjkzMjE3NzE3MTgzOGJkZjkzNzczMDk1NWFjYjI4Y2ZiNTY5IGxlZ2FjeS10cnVuaworMjgyOTAgNWZmM2Q4YWFhOGY4YTA2YjE4MjlhMDM0M2M3Yzc2YTBjYjMyOTRmMSBsZWdhY3ktdHJ1bmsKKzI4MjkxIGM0ZTU1MDcwMmEyOWEzNDU5ZGVkMTI2ZmU0MDhjMmRjZjk2ZGI4MGQgbGVnYWN5LXRydW5rCisyODI5MiA4NzkxMTkzYjA5ZDY0MTdiZTRmZDYwZWJlMjhiMmY4YzM4YTM1MmQ0IHJlbGVhc2UyMi1tYWludAorMjgyOTMgMDJiMmYwODg1YzUyMTAyNDBkYzJmYjEzOTE0MGIyNTc2MDIwNjQxYSByZWxlYXNlMjItbWFpbnQKKzI4Mjk0IGQ3OTdjZmE4Y2EwZDA0NWQ1ZDNhYTBlMGIxOTA5ODAxZTBmMjJhMzQgbGVnYWN5LXRydW5rCisyODI5NSAyNGYxZDg0NWNkYjU3MzMxYWFmNWE0ZDcxNWU2NTU2ZjBkODU3NmY0IGxlZ2FjeS10cnVuaworMjgyOTYgNDkyYWRkYjgxMmVmMTE3ODA4MWE5ZjMyZGZkMWQ0NGM2YTVhYjUxYSBsZWdhY3ktdHJ1bmsKKzI4Mjk3IGQ3ZWYyYmExYjZmNWVmMGFjMWY1OTYyOGRmZTU1NmRhOTkzZDY2ZjQgbGVnYWN5LXRydW5rCisyODI5OCBhZWJmOGM1MmE4NDJkNDFkOTJhOGU2MzAwNGNlYjAwYWMzNWQ3OWZiIGxlZ2FjeS10cnVuaworMjgyOTkgNGU0YTM0NGM5YjZjZTdiMGM3MWNiNTI4MDBlNjA0MDhmOGYxNDhhYSBsZWdhY3ktdHJ1bmsKKzI4MzAwIDQ0ZDFkMGI2MjNhOWFmNzk0MmZmN2IxNTg2MjE1OGRmZWMxNDM4YTcgbGVnYWN5LXRydW5rCisyODMwMSA4ODYyYmM1OTY4NWFjZDYzN2Y1YWY0NjY0Y2JmNmJmYjBkZDdkOWRmIGxlZ2FjeS10cnVuaworMjgzMDIgYzhkOTU5MmM5ZTc0OTdhMjE3YTIwMjAwNDg3MTQ4ZWM0YjRkOGRhZSBsZWdhY3ktdHJ1bmsKKzI4MzAzIDI3ZjBkZWViZjI2NDhhZmE1NTdkNmE1NGQxMzY0OWViYTkyNGJhYzIgbGVnYWN5LXRydW5rCisyODMwNCA2MzEwYTRhMjFlYjg5MmNlM2ZiOGFiNzQxOTI4MTcxNGE2NWVhOTE1IGxlZ2FjeS10cnVuaworMjgzMDUgYTg2OWQyZGU1MzZmOGQzMGNjNmU3YzZmZDM1MDFmNGIyNmU5ZDc3YiBsZWdhY3ktdHJ1bmsKKzI4MzA2IDhmOGZlOTkwZTgyYzMzNGY1MGNjNmE1ZmU5ZGVlMTJjNDJiOGI2Y2UgbGVnYWN5LXRydW5rCisyODMwNyAyY2RmM2QwZGZhYmQ1MDEwYTY5YTdkYmQ2MTc4Yjc5MGZlMjZhYjdlIGxlZ2FjeS10cnVuaworMjgzMDggYmM2NjBmNzM3OTVjZDdjZTA3MDljZGM4OGE3NmFjZmFmMTM5ODA2OSBsZWdhY3ktdHJ1bmsKKzI4MzA5IGY1N2Q2ZGI0MjNmMmRiZGI0NzNiOGM1ZTc1MTlhNDk4MzkwOWMxYzIgbGVnYWN5LXRydW5rCisyODMxMCBlY2Q0YWRhMjUyYmMwOWFkOWE4NWY0ODkxZDBhY2QzOTM5NmYxZTIyIHJlbGVhc2UyMi1tYWludAorMjgzMTEgNjQxNzg2YmVhMTNlMmI1YTYxYTdmOGVhNDI5YjIwZDk2NWQ3NTQ2YiBsZWdhY3ktdHJ1bmsKKzI4MzEyIGFhYjdkZWJjNzNhODhlMjEzNWRjNzE4ZWNkNzIyN2Y3MWZmN2QwNjEgbGVnYWN5LXRydW5rCisyODMxMyAzMTE0NWQ2NjdiMTRhNWU2NjRkNzQxZWNmMzg1ZmUzODYyNzY3ZTRkIGxlZ2FjeS10cnVuaworMjgzMTQgYjNlZmJkY2NmN2M2NGMwYmQ1N2Y0NmMyYjUwNDRmYzYxMDk4OTM2MyBsZWdhY3ktdHJ1bmsKKzI4MzE1IGM2YWQ2MDNiZDI2NDVhZWM4YmU2NTA5ZjJkZjgyOGVkNmMwYjM3MDYgbGVnYWN5LXRydW5rCisyODMxNiA1YWNhZTcxOWNiOGFiYTVjNDRlYTgzNTMzYTYxOTQ0N2U5NTVmODgwIHJlbGVhc2UyMi1tYWludAorMjgzMTcgNWMzODQ1N2Y2YjNiODViNmMxYjc0MTQ4MzA0NmQ5ZDQwNjIxNmNiOCBsZWdhY3ktdHJ1bmsKKzI4MzE4IDM1ZmU1ZTNjZjg4NWY2NDZhNjllMTBjMDkyNGY3YzExYTE3MzA0NmUgbGVnYWN5LXRydW5rCisyODMxOSAwZWU0OGFlZmE0NzQ5ZTczZDkxNzNiYjk5ZTdlNjJmNjBhYjc0ODRkIGxlZ2FjeS10cnVuaworMjgzMjAgNTlhY2Q1MDI4ODA0NDdmNDBlMmRkMGQzOGJmYzQ4Yzc2N2E2ZGE4MyBsZWdhY3ktdHJ1bmsKKzI4MzIxIDY4NGFiMDY0MGUwNGZhMGZmYTg5M2M4NWRhM2MxM2I2Mjk0YjNhYjEgbGVnYWN5LXRydW5rCisyODMyMiAwMWUxZDZhYmM1MDEyMmYyOGViYzE0NTNlNThkYTgyOWI1MTg2ZGQ2IGxlZ2FjeS10cnVuaworMjgzMjMgZTNkOTZlMDBkYzZjMWMzMzM5ZjM5ZWZlMzRmNWQ2ZGEzNzM0NWM4YyBsZWdhY3ktdHJ1bmsKKzI4MzI0IDg4NjY4NmZjOTJhOTljZmQxZDMxNDA5MDRlN2ZhYjIwZDQyNzNhMDQgcmVsZWFzZTIyLW1haW50CisyODMyNSAwZDVkOGUxY2RjMjJjYTE2NzA2ZGMxY2U1MDJkMjk0ZGJlNjUxMjhiIGxlZ2FjeS10cnVuaworMjgzMjYgNGNiMjUzYzU1NmIxMGEzZDRiOWY0MWY3MzFmY2I1OTJlYmZmODc4NyBsZWdhY3ktdHJ1bmsKKzI4MzI3IDcxNDc5NzE1NmM1MTJiOTRkZWU0MmY0MWJjMDE2YzI0YWViNmY5ZDUgbGVnYWN5LXRydW5rCisyODMyOCA4ZWVmMDM4NTBmNTc3NjdmYWM3MDA0MWQ1ZGQ4Mzc2OTFlOGU3ZTU3IGxlZ2FjeS10cnVuaworMjgzMjkgNWZjNDYwOTgxNTg5MjA1NzVjZGE2Yjc0OTY2NmQwNzY2OGVlMWUxOCBsZWdhY3ktdHJ1bmsKKzI4MzMwIDUxYzI2OTk0ZDhlYzY5YTczMDc5ODkyMzBmMzc1OTI2ODZkMDAyMjMgbGVnYWN5LXRydW5rCisyODMzMSBhMTE0MzIyNGVlMGQwZjc2OTRhOTQ2OGFhMTU2YjFkYzYxYTUwYWJlIGxlZ2FjeS10cnVuaworMjgzMzIgOTQwNjA1ZDQxNTVmZGM2NzkzYzEwNDQzZWU4NDk0OGRhZTFkZWRmMiBsZWdhY3ktdHJ1bmsKKzI4MzMzIGQyZWIwMDc0NDhhM2U2NThhZDY3MjQwYTRmZGY2OTkzYzI1YjYxOTYgcmVsZWFzZTIyLW1haW50CisyODMzNCBjNGE0Yjc0MmFkNmM2NWRiM2UxN2UzYzZmY2MwMGE4N2IyZjMzMzQyIGxlZ2FjeS10cnVuaworMjgzMzUgMGRkNWJjYzFlZTBiZDNlOTk4OGYxZjdmNjI5YjY0ZTQ1YjAwZTBkMiBsZWdhY3ktdHJ1bmsKKzI4MzM2IDQxOWQ0N2M3NzE0MzQyOGVmZDZlYzA1NWI2ZjlkMDhhMzAzMWZlNGEgbGVnYWN5LXRydW5rCisyODMzNyBlOGY3NzMwN2Q5YzZhMjhkMDE3ZjdmNTE1ZmMzNzgwZTE2NzQ1MGU5IGxlZ2FjeS10cnVuaworMjgzMzggYzBlOTgwYWI1NGRiM2JkOTUwYTYzZDI1ZWYxMTE5NWQ3ZDAxNzAzNyBsZWdhY3ktdHJ1bmsKKzI4MzM5IDYxN2JkNTViNGE2ZWRiYzI0ZjRjZTVlN2ViMjM3ODkzZDQwY2QzZmQgbGVnYWN5LXRydW5rCisyODM0MCA5ZWU0ZjRjYjk3NzA2OTk4MWE0MWI0OWU1OTgxM2NiNmI3NWUzMjg4IGxlZ2FjeS10cnVuaworMjgzNDEgNjA2MGNmNjY4MmMwMjU2OTgzNDJiOTU0NjM3ZjU1MWY3NWE2YjlhYiBsZWdhY3ktdHJ1bmsKKzI4MzQyIDY0NTA4YTM3YThkNWI1MGM4MWMxZTE4ZThiZTM1OGJkN2MxYjY1MDUgbGVnYWN5LXRydW5rCisyODM0MyAyOTRmN2JlMjYxOWE2MDMxZWQ5Y2YzNzhhNmEwYWM1ZDU1ZjRlZWY0IHJlbGVhc2UyMi1tYWludAorMjgzNDQgMjE5ZTcwMzg5MDcyNjc5OTdjZGE3MzkxOTc3YmQwMmZlZDA1NGM5ZCBsZWdhY3ktdHJ1bmsKKzI4MzQ1IGU5NTAwNzA5ZDQ5Yzk4YTg2ZDA1YzJmNmZkM2NmNWJhM2M3MDc0YWIgbGVnYWN5LXRydW5rCisyODM0NiAyYjY2YWRkZTAyMzA2NjkyNDI2YTNjNDdkNGQwNmI5MDhjZTlkY2I1IGxlZ2FjeS10cnVuaworMjgzNDcgYmI2YTcxZDNmZGNiNzU1Zjg3NDdiYzE0MWVjZTg5NDg0NjQ5Y2VlMyByZWxlYXNlMjItbWFpbnQKKzI4MzQ4IDY3MDQ4NDU0YWExZTc0Njc5MzlkNzJjYzA4NjVhODljMzA1YmE2MzIgbGVnYWN5LXRydW5rCisyODM0OSBkMTM1NTFjZDY2M2U1NzcyZThlMzI5YmNhOWY5NDg4YjQxOWIzMjY5IGxlZ2FjeS10cnVuaworMjgzNTAgNTMwNjQwODY1N2ZjNjY0YWFjMDI5OWVlZWE1MDFkOTNjODQxMWJlMCBsZWdhY3ktdHJ1bmsKKzI4MzUxIDU0YjYwMWQzYjJhNmRkOTFmMjY1ZTQ2M2MyMmViZjM2N2YxMjJlODQgbGVnYWN5LXRydW5rCisyODM1MiA3NDE3YTZkYzczNjY2MmQzYTFiYWQ3YTkxMTVhZjVlNDM4YzIyNDg5IGxlZ2FjeS10cnVuaworMjgzNTMgMGMyMDE1NDhkM2Q0ZmU1Mzk1YzI2MmEwNWUxODgzMzM2MjRmNzljMyBsZWdhY3ktdHJ1bmsKKzI4MzU0IDU0NGEzMjZiYWY3ZjI5ZjEyNjNiMGNlNTMwMWZkY2ZkMTAxOWFmZjkgbGVnYWN5LXRydW5rCisyODM1NSA4YWRjYTVmOWJmZmQ4NmZlYzYzMmY0ZWViOTg5ZjllMjA0MjFkMDRkIGxlZ2FjeS10cnVuaworMjgzNTYgOWYyNmUwYzBjNjkyNzEwNGJjZmI2MmQwYjAzMzgxOWJkMzQyZmM2YiBsZWdhY3ktdHJ1bmsKKzI4MzU3IDEzMzg4Y2FmYzE2ZTk2MzNiM2YxZDUyMzBiMDA2ZTEzMzBkNTM5OTQgbGVnYWN5LXRydW5rCisyODM1OCAxYmNhZmJjNjljOTY3Mjc1ZGQ3YzQ3MGFlNWM2ZDk4ODJmOGI4NTJjIGxlZ2FjeS10cnVuaworMjgzNTkgNmExOGI0ZTgzOGVhZjNmOWM3NTMyMjkyM2UwYjcxMWFkMmVhNDc0ZiBsZWdhY3ktdHJ1bmsKKzI4MzYwIDMzMGY2ZTQyMjc0ZjgzODdjMDhkNTcyNGI3OGYyZWIyMjEyOGQwYWUgbGVnYWN5LXRydW5rCisyODM2MSAwNWRhOTViY2Q3MjRkZmY3ZTc4ZTQ3ZTQ3MzgxMTQzNjg1N2M4ZTQyIGxlZ2FjeS10cnVuaworMjgzNjIgYzU1ZThkNmMwOTFmMDMzY2Y3ZWViNjM2ZGU0MzdiNThkY2UyMWYxYiBsZWdhY3ktdHJ1bmsKKzI4MzYzIDYyODEwYmViOWFmNDc3NzMwYmNmMDdmZGM3ODZlYzY2NGEyMDY2ZjAgbGVnYWN5LXRydW5rCisyODM2NCBkYzY2ZWI0Y2QxN2FjMmEwMDBmZjE5MDYwZThhMzg0NDFhOTJhNjljIGxlZ2FjeS10cnVuaworMjgzNjUgNmU3OGE1NGJhYzNjODQwNDFiYWZlM2MwMDMwM2Y1NDVkOGVmMDg5ZiBsZWdhY3ktdHJ1bmsKKzI4MzY2IDhiNmJmNWJjNTEyMjZiNzIyOGZhMzE2YzY3N2Y4ZDUwYmQyMmZjYTEgbGVnYWN5LXRydW5rCisyODM2NyBiOTMzZDE5YWU4NTEyY2JhMDFlNzI2NGNhNDVkMWVhMDAwMTgxMzY3IGxlZ2FjeS10cnVuaworMjgzNjggMDQzZWJhNTE4YzY4OWNiZGRiMzcxZTViNzBmZmU5OTA0YzVkOTIwNSBsZWdhY3ktdHJ1bmsKKzI4MzY5IGMxZjY4MmJlZWJlYTFjZjFlMWU4ZWFlNzI3OTk3MjNjZDNjZmNjMzMgbGVnYWN5LXRydW5rCisyODM3MCA3M2ZiY2YyMWIyYzBmYmFjYzlmNzJkNDQ3ODk2ZGQwOTM0YTNhNDQ5IGxlZ2FjeS10cnVuaworMjgzNzEgZDkwYTZhZGQ3Y2EzOTgyODdjMGY5NDY4ZmE4OGRhZGE2N2UzZjExYiBsZWdhY3ktdHJ1bmsKKzI4MzcyIDFiNGVmOWNkMTg5NzQyYmM4MGFlYmFmYmU1ZjRkZGRkNjQzMjA2ODkgbGVnYWN5LXRydW5rCisyODM3MyBjNDViMjg2NTg4MDVmYTY2OTRlMzkzNjUyZWIwMTkyOTM1OGIyYWUzIGxlZ2FjeS10cnVuaworMjgzNzQgODBmNjVjNjNlODYwYzI2ZGQ1YjI3MzJhODYzNTcyYTFhNjRmOGM0MCBsZWdhY3ktdHJ1bmsKKzI4Mzc1IDk1MTg2NTkxY2JjZmVlZTE0NjcwNmVmZjA4ZTNjNTczODdjMmJkYjcgbGVnYWN5LXRydW5rCisyODM3NiA4MTY3OWViZWMwN2Q3MTliYTZjY2E1OWUyZDViNzY4MDYyNWY0YTYzIGxlZ2FjeS10cnVuaworMjgzNzcgZjY1ODEyOTliYzAzYjUxOGJhN2RjYzE1MTk4Zjg3NjdhNzk2OWRjMSBsZWdhY3ktdHJ1bmsKKzI4Mzc4IDQyNjM2MzhhNDY5ZjhkYjg2N2RiMDk4Y2EzMGNmZmJhYzcyYTAyM2IgbGVnYWN5LXRydW5rCisyODM3OSA4ZWExMTdlYmIyZjM0OWRlNWU4ZTNkNDQxOWY3OGFhOGU0MTdmZmFhIGxlZ2FjeS10cnVuaworMjgzODAgNjY4ZWVhZDEzYTdjNTdlZTY1ZGI2MGZmMThjZTkzNzU0ODQ4YjZiZCBsZWdhY3ktdHJ1bmsKKzI4MzgxIDcxOTAzNDhkNDY2ZGZmNWQ2NjA1NmNhYTIyNzNhMjg5MDY0MGYxYmQgbGVnYWN5LXRydW5rCisyODM4MiA3YmViMTY5MjNiNzFiYjcwZmU5NWFmMzZhNjU4ZTY5ODZmOTI4ZGRjIGxlZ2FjeS10cnVuaworMjgzODMgMDYzZjIwMzE2NjBjM2UyNThmMzY4ODBmNWQwOGQ0MzE4OWIzMjc3YSBsZWdhY3ktdHJ1bmsKKzI4Mzg0IDI1ZjY5NTRmZWYzNDIzZDA3YjhmM2FmOGU3NzU4NWQ3Mzg2NmUyNGQgbGVnYWN5LXRydW5rCisyODM4NSBiMWFiNGU4ZDdkOWM1YTBiMjg5ZjNkNDM2OGM4OWMyYjQ0YzdjZGJlIGxlZ2FjeS10cnVuaworMjgzODYgODBhYzg2MTk0YTEyYmI5NGFkNjIxZTdjMjFlMzZkNWVmNjllOWJmMSBsZWdhY3ktdHJ1bmsKKzI4Mzg3IDllMTFiYjgzZDk1M2JhM2FiNjFlM2I5NjNlNTQ3YzU3Y2VkZjE1NTYgbGVnYWN5LXRydW5rCisyODM4OCBlZTk5ZDIyMjU3MGE5NDYwMGRmMDcwMDM4ZWY3M2Q0NGZjZmE4ZWQ2IHJlbGVhc2UyMi1tYWludAorMjgzODkgMjJiNzBjMzk4M2I1MzhjYWU1NzRhYzhjZDdiZjk0MTA5ODgyMTM1MSBsZWdhY3ktdHJ1bmsKKzI4MzkwIDRiYjc3NmEwMmU2ZTg0ZjhhN2EwODJjNWMyMGU5NjQwNjFlOWE5NTEgcmVsZWFzZTIyLW1haW50CisyODM5MSA4MGQwMzVjNDUxNDkzZGRlYzc0ZmNiMGIyNDRlNDliNGViYjE3MzRmIHJlbGVhc2UyMi1tYWludAorMjgzOTIgMTQ2MWI5NDYwNmM1NDE0ZWIyOWIxNjU3YWNhNzdkMWQzNGQ4MmJkNyByZWxlYXNlMjItbWFpbnQKKzI4MzkzIDAwZjExZWVkZDYwMzM0NWNiYTk5MjNhMzZkYmFmMDU2NTM0NTE2Y2QgcmVsZWFzZTIyLW1haW50CisyODM5NCA5MTMwZWE2NjkzZGE3ZWU5OWEzYzRlM2I3ZDUzYmQwNWVjN2FjMWM5IHJlbGVhc2UyMi1tYWludAorMjgzOTUgMGQ2NjE3YTljYjYxMGQyNzIyYWEyNTIzNzBkNTEzMmEzZWYzNGM0MCByZWxlYXNlMjItbWFpbnQKKzI4Mzk2IGY0YmIwZmYzMTBkMzQ4OWMyM2Y3NDg2NDIwNTNlM2RlZDZjYmYzOTkgcmVsZWFzZTIyLW1haW50CisyODM5NyBiYzgxZWUyMDYyOGYzY2M5ZDUwMTBjZDQxODk3OGY1YWUyZGQ2YTRiIHJlbGVhc2UyMi1tYWludAorMjgzOTggNjQ2MWFjZGViNThjOTA4MmFmZWU4ZTU2NGYwYmNlYWJjZGVlNjEwNCByZWxlYXNlMjItbWFpbnQKKzI4Mzk5IGM1NDE3ZjBlZTVmMDgwMmIxODczODliNzE4YjEyZDMxYjk0NTU0NzEgcmVsZWFzZTIyLW1haW50CisyODQwMCBmZDA2NmQxOTRjZmY0MWMyYmJmN2E0YTVhM2E3ZmRlZDU2YzQ1Y2RjIHJlbGVhc2UyMi1tYWludAorMjg0MDEgNWU0ZWFkZjE5MDNhMDI4ZTY1NWFiNTgyOWZmNTEwMGU5MDJlNTg2YiByZWxlYXNlMjItbWFpbnQKKzI4NDAyIDg2YWEyYzJkYTQwZTRiNTJjYzZkZWUxMDNmNTMzN2M2ZTY2YmY3YjEgcmVsZWFzZTIyLW1haW50CisyODQwMyBjNTEyYTk0MzNlYWYzYjNmMTYwYmJhNjkwNWRjNTU1MzVhZTczODQxIHJlbGVhc2UyMi1tYWludAorMjg0MDQgYTBkYzZmNTA0OTcyODVhMTQ2YjEyMGY5M2ExZTU4ZGM0NjU1ZjgzZSByZWxlYXNlMjItbWFpbnQKKzI4NDA1IGFjNDY4ZTIwYjRjZWQ4YmNhMDZlYTRiOGViMDU5ZTVjZTQ2ZDQ5OGMgbGVnYWN5LXRydW5rCisyODQwNiAzYTc0OTk0MzFkY2NmM2NmZmQxZmY0OGRjMjdmMzJiY2I5MDBmMmJlIGxlZ2FjeS10cnVuaworMjg0MDcgZjk1YzBiODk0ZjI3NjZlOTJkZTgxNWY5NDhlODE5YTlhYThiYjYwZCBsZWdhY3ktdHJ1bmsKKzI4NDA4IDJjY2NmODI0MjAwOWJhYzU1OThiMjYyYjM5M2NkMTFhNmE0YTU5ZDYgYXN0LWJyYW5jaAorMjg0MDkgZmNiNTIwMWM2OWVkODY3NTJhNTg0NjYzYTQ1NmEzYTUzZGEwNTkxNSBsZWdhY3ktdHJ1bmsKKzI4NDEwIDQ4MTM4MzczNzA5YjQ3MDA0MDQzYzQzOTBiMGFmMDQyYTQwOGFmZGQgYXN0LWJyYW5jaAorMjg0MTEgYmJhZWJlNmI3YzFhZGZlYmU3ZGE1OWM1YmFlYWYzMDI3MjYwZDYxMSBhc3QtYnJhbmNoCisyODQxMiAwYjcyNjQ5NmNmNDRmMTdhZGZlM2I3Y2JmYTQ2Mjc2ZTRjY2U0MTM3IGxlZ2FjeS10cnVuaworMjg0MTMgNTliN2Y0ZTlmZDYxNDcwZGJkZGFkMGE2ZTUwNWFlNzA4YTUwNDQ5MCBhc3QtYnJhbmNoCisyODQxNCBjNzQ0MTQ0YzQwNDlkZjY3MzdhZGRlN2JiMGQ2MDk2Y2ViOGUwNTJhIGxlZ2FjeS10cnVuaworMjg0MTUgOTRhZGY2OTk2MThmZWQ1YWQ0N2M3MDIwMTk4Yzc4OGQwYmNiOGRhMiBhc3QtYnJhbmNoCisyODQxNiA4ZmRiMDg3N2QzNTIzODM4NzBhYjA5YjQ5YTkwNzBmOTA4NjE2ZTYwIGFzdC1icmFuY2gKKzI4NDE3IDc2MmRkMDllZGI4MzQyZmIwNDg0MzlmYWI2ZWE4MWQ2MmMxMzFkNjQgbGVnYWN5LXRydW5rCisyODQxOCBiNDM5ODZmNzNmYzlmOGEyOGFkOWRmNjcwMzMwNzhkZDA3ZTYxNzJjIGFzdC1icmFuY2gKKzI4NDE5IGY4MjQ3NWQ3ODQxNTI1Yzg2ZjU4ZWJkODJhYTUwNDQyNDE2MmZmZmUgYXN0LWJyYW5jaAorMjg0MjAgMTJiYjZmMGM2MGY4YzYzOGMxMmNiZGI4YTRmNDY5MmY0YjcxZWUxNCBsZWdhY3ktdHJ1bmsKKzI4NDIxIDA4NTdhYWRjNjEyYTMzNThlYTI0Y2IxNDRjYmJlNGZiZjA0ZjA2YzUgbGVnYWN5LXRydW5rCisyODQyMiBiNWI3MGU0MTBmMTI0ZjhlYjk1OTM2ZWM3MzE2NDc1MDY4ZWMyMTYxIGxlZ2FjeS10cnVuaworMjg0MjMgYWNlY2RjNGY3MzMzNjNjNGU3ZTE0NTJhYmRlZDY5Mzc3MTNhNWJhNCBsZWdhY3ktdHJ1bmsKKzI4NDI0IGM2ODMxMWVmZDM0NmVkOWY0MDY3Nzg5MjMzNDY0YTAxZDVhMjI5ZDYgcmVsZWFzZTIyLW1haW50CisyODQyNSBkNDIxYmJjOTk2MWM4Y2ZlMGFhMjY1OWIyMGM4MGM2ODc0ZTE5YWY4IGFzdC1icmFuY2gKKzI4NDI2IDM1NzQ5ZGIxMDgwOTMwNTYxMDA1MGZiZjYxYjVkODU1Y2QyYjRlMWQgbGVnYWN5LXRydW5rCisyODQyNyBmMzZlMTZjYThmNTA1ODBmNTI4NWVkODNlMzIxMmYwNjBlZDFjNTYxIGxlZ2FjeS10cnVuaworMjg0MjggZjJkNzU3NDllNjFjNWUzMjI0OTJhMWUyOGNmZGNkYzA3OWQzMDMxOCBsZWdhY3ktdHJ1bmsKKzI4NDI5IDY4NjI3ZTBhY2QxNWJhYjg1YmFlZmIzZGEyYWRhOWVkYjZiYWUzOGEgbGVnYWN5LXRydW5rCisyODQzMCBmZWViMGIwMmI4ZjI1MjllNWU0MGM5N2FhM2ZkYzU2OGU5YTg3ZWI4IGxlZ2FjeS10cnVuaworMjg0MzEgMjRlODBkOTZiZDBiNmU5MjZhYjk4NTE0YTA0NDRlZjY4ZWI1N2Y1NSBsZWdhY3ktdHJ1bmsKKzI4NDMyIDBlYmVjODNlYjNkZGZjMWM1YjVhMmFmZDEyZGU3NjJhZGUzYWFiMzQgbGVnYWN5LXRydW5rCisyODQzMyBhYTQ1MDM1NTYzMzllZGNlMDM3NDkzMmFiYjI1ZDlhNDRhN2U4OWIyIGxlZ2FjeS10cnVuaworMjg0MzQgODFiZTYxMDU2NzE3Zjg4MTM2MDYyZmI3Mjg4OWY3Njc4YjUxMmZhOCBsZWdhY3ktdHJ1bmsKKzI4NDM1IGJiMjhiYmMyOGMzMjNhYjI5ZDUwNjU1ZTI2Nzg4ODkwYzQ2YzZjNzYgbGVnYWN5LXRydW5rCisyODQzNiBlNDEwNTg4NDViNzkyZWQ2NjI3ZTk4NGYwY2NiMTJkNGMwMWQyNmY2IGxlZ2FjeS10cnVuaworMjg0MzcgOTBiMTNkOTk5ODI3MTBmZjZjMzllMDkyYmVjYTY3YTczOTFkMzJkZSBsZWdhY3ktdHJ1bmsKKzI4NDM4IDgxYWNiZTE2ODBhMzMwOGJiODE4YWUwNjMyZjc3ZjkxNWMxYjBjNTAgcmVsZWFzZTIyLW1haW50CisyODQzOSBhNmRlNTBjMGQ0NTdlYjYxY2ZlYjU5OTJkNzUxMWMwY2M4MWQ3M2ZkIGxlZ2FjeS10cnVuaworMjg0NDAgMDQ5MDk2ZWZhMmMzY2E4NzZiMTljMzdiMjQ2OGQ3Mzg0NWZkOTYwYSBsZWdhY3ktdHJ1bmsKKzI4NDQxIDhmYTc1M2E5NzA3N2JhMDlhZDVjNDIxYzAwNzA3Y2FkYzA5MDM2ZjcgbGVnYWN5LXRydW5rCisyODQ0MiAyYzJiODRiZGExNDFiN2E0YzhjNTkzMWVhZjdhMGY2YTJiMjcyYmQ1IGxlZ2FjeS10cnVuaworMjg0NDMgMzQ4NDMwOTU3M2YyMWM4MzljNzc1MzkyYjVjYmVkZWMxMTIzZjE4MCBsZWdhY3ktdHJ1bmsKKzI4NDQ0IGFkMjg5ZmJiNmI0OGQ3MmI3ODM4ZTgzZmUwZjMwYjdmODdmMzZmYTkgbGVnYWN5LXRydW5rCisyODQ0NSBhZmYwNjdiYThkMDc4OGYwYTkzN2U5YmUzZGVmNjI1MGI3MzhhNTg3IGxlZ2FjeS10cnVuaworMjg0NDYgOGM2MWM5MjAyNWI2Yzc3YjgzZTkyYmM3ODkzMDc0YjA0N2MxZGM2NCBsZWdhY3ktdHJ1bmsKKzI4NDQ3IDQwZTljZmRlMWM1MDg4MGExZjE4ZTBhNGJlZTEzMTNjZGY0OTE4N2UgbGVnYWN5LXRydW5rCisyODQ0OCA3ZmIzNzU5ZDM4NjZkNTA4NGU0YTIyMjU5MmYwZGM3Njc5NWU4NDhiIGxlZ2FjeS10cnVuaworMjg0NDkgOGM4MDUyMzc4MDE3Y2I0NTNiMGYyMzE1NTBlZDczYWU1NzYwNTI5OCBsZWdhY3ktdHJ1bmsKKzI4NDUwIDRlOTk2ZTk1OWVjMTg3YzcxMzc4MTc3NzdlNzFjMTA0ZWQwMWQyODcgbGVnYWN5LXRydW5rCisyODQ1MSBkNWViZDYxNmEzZTZmNGJjZDU4MDkzYmM1NWMzOGEzNjU5NmMxMTgzIGxlZ2FjeS10cnVuaworMjg0NTIgMGUwMWI4NWFkZDgxMjZlNmFjNzM3ODU3Y2U5OWViNmYwM2IxZGIzMyBsZWdhY3ktdHJ1bmsKKzI4NDUzIDdkM2Y4MzA2YTAxZWQ1YWU1NDNlYjg0OGFmYzU5ZmRmODRkYjcwYzYgbGVnYWN5LXRydW5rCisyODQ1NCAwYjk3OTJjYmU5MDA0MmIxNzcwMWVkMzI0MzkzYzE2ZTY2N2QzOGFmIGxlZ2FjeS10cnVuaworMjg0NTUgMzY0N2IzMGFhOWRlMDlhYzU2YjJkYjcyZjc0YTE2ZTRlZTI2NDk4MyBsZWdhY3ktdHJ1bmsKKzI4NDU2IGRiNDllZTc2YjdkMGUzZjc2ZGNmMDViYTJiMzI0YzgzOTEwNzAzZWMgbGVnYWN5LXRydW5rCisyODQ1NyBlZDBiMDI2NzJmMDkwNWRkMGE5YTNmYTYwZjJmYjA1YjhmMjAxYWIwIGxlZ2FjeS10cnVuaworMjg0NTggMTE4OWY3N2NkZjg0NWQyY2U3OWU5Y2VkMDJmODZlMjEwNzAzMmZjNCBsZWdhY3ktdHJ1bmsKKzI4NDU5IDhjZjIwNTg5MmY2NjI4OTYwNmNjMjZhMzg4YjUzZWNkMzM0NTFhYmMgcmVsZWFzZTIxLW1haW50CisyODQ2MCBiZDJhYTAyNDdhZGFhZDhjNDZhOTdkOTc0NzI0NDBjOTllZjY3NjVlIHJlbGVhc2UyMi1tYWludAorMjg0NjEgNzZjZjg4ZTg5Mzc2ZGMyNTRhZDdmZjYxMjBlNmY4MzFjMDk0NmNlMyBsZWdhY3ktdHJ1bmsKKzI4NDYyIDQzNGJjMWRlYTRmOGJhN2U3N2Q2NTg2YjMzZWQ0ZWY3YmQxMWYwM2MgbGVnYWN5LXRydW5rCisyODQ2MyBlYzM3MzY5NmMxN2JjMzc4NjI2NWM5NzIxYzdmOTlmZTFlNjRiZTc3IHJlbGVhc2UyMS1tYWludAorMjg0NjQgZDA0MTNkZTE0M2VjMjQ1YWIwZTEyNWZjZTNkMzMwODVmMTM4NGI5OSByZWxlYXNlMjEtbWFpbnQKKzI4NDY1IGQ4M2MxNGFlNjQ3ZGQwMzEwYzFhYTBmZTA1ZjBmZWM0NmQzYjVlYTIgbGVnYWN5LXRydW5rCisyODQ2NiA0MDI5ZDY3Y2RiZDVmZGJkNDIyNWZkNzdiODg0N2UwYjAzODNkZDUxIGxlZ2FjeS10cnVuaworMjg0NjcgY2JlZTJlZDZjZDc1NWE3NzI3YjNiOGVhMDI2Yzg2Y2FkYTUzNDQ2NCBsZWdhY3ktdHJ1bmsKKzI4NDY4IGE3YTYwYjE0MWQxZGE2ODM4ZGM5ZTFlMWMzMzQ5OTk5NWU2Yjc1MzEgcmVsZWFzZTIyLW1haW50CisyODQ2OSA2M2NhMTJhYmEwNzkzNGE1OWE1ZjQ1YzczN2VlNmY3ZjhjYjZkZGFlIGxlZ2FjeS10cnVuaworMjg0NzAgOGU4ZDNlNGFmNGY0Njg5NGI3ODJjOWE3ZDIwOTczYjEyZTIyZjZjYyByZWxlYXNlMjItbWFpbnQKKzI4NDcxIDFhYTA4MTVmYWQ0YjExNjcxYzU4MTM1MjQ5YTlmOWVmY2QwNDFmYjQgbGVnYWN5LXRydW5rCisyODQ3MiBlMGI4NTVhYWQyMzAyMDkyZTMzNmRhZDAxNjdiMGUzZjMxYThhNTE2IGxlZ2FjeS10cnVuaworMjg0NzMgZTIwNDJjNzZhZjA2NTYwY2NhMmJlNmE0MzFkYTk1ZDhlYjZiYTM5OSBsZWdhY3ktdHJ1bmsKKzI4NDc0IGI4MDY3ZGRjMTFmODdhOTdkNDVmM2ZlNzI3NTliM2FlMWNiYzM0ZTMgbGVnYWN5LXRydW5rCisyODQ3NSBhZDNiZTQ3MWIzOTkyMTkzMzA2ODVkNDFmYjliMmY1ZGY4MjEyYmZlIGxlZ2FjeS10cnVuaworMjg0NzYgMGQ0OTI5MDI4OTRhNTU4ODcwZTc1M2M0NmVhYzQ5MDgyZDVjMzlhMSBsZWdhY3ktdHJ1bmsKKzI4NDc3IDdjNzZjMGZjMmU5MmEwOTdiZjhlOTAwNTgzYjFkNWEyNGUwYTVlNjQgbGVnYWN5LXRydW5rCisyODQ3OCAxMDBmMTU0OTgyYzhiYmUwOWNhNTE4YWQwZjkzZGNkNGI0OWY4YzZjIGxlZ2FjeS10cnVuaworMjg0NzkgN2RjN2FiNWRiOTA5OWU4NDY0OWI0YzM1NGIxZDRkMTE4MDE2OWYyMCBsZWdhY3ktdHJ1bmsKKzI4NDgwIDgxYTM2ZDJhMmQxMzdkMTIwOWI1NDE4MjNmZWRlNGQzN2FhODIzMjAgbGVnYWN5LXRydW5rCisyODQ4MSA1YTg4ZjE3NGI2ODRjYmJmODBjMWM3YjcxNjRlZDgwMjMwOGMzOGVjIGxlZ2FjeS10cnVuaworMjg0ODIgYWIxNzZlMTY0ZWFiNjk0OGIyNzkyNWU0ZjIxYWRlNmYyZDBhYzJmOCBsZWdhY3ktdHJ1bmsKKzI4NDgzIDQ2YjA1MDQ1NTUzMzY4M2JkOGRkMjI3MDZlZmMxNmM3MDAyODUyZTQgbGVnYWN5LXRydW5rCisyODQ4NCAwM2VhZGM1N2Q0Mjk5YzQxNGExZGU5OTEyZDYzYTkyNjcyODdiM2I1IGxlZ2FjeS10cnVuaworMjg0ODUgODIzMWY4NmM4NjI4YTQ2MzljMTkwMTQwY2E3OWZmNDkwOWNlNWExMiBsZWdhY3ktdHJ1bmsKKzI4NDg2IDI3NGZhMGIzNGNhN2U2YjNkNDRhMTE1ZGQ3MjY4YWEyMTUxNGRhMTAgbGVnYWN5LXRydW5rCisyODQ4NyAwNWIxNWNlMjhlMzFmYTRmOTRhODUyOTQ4YzQwZDNjODIxNDVlMGNiIGxlZ2FjeS10cnVuaworMjg0ODggNWZiNmY1YmI3Njk4ZmI4Zjk5MTFlMmY5OGYwZjIwMjBlNmQ0NzYyNiByZWxlYXNlMjEtbWFpbnQKKzI4NDg5IGVmYzEyOGEzMzRhNTVmMjc0YTNiZDFjMzFjOTYyM2YyMTI3MmVlYzAgbGVnYWN5LXRydW5rCisyODQ5MCA4MjVmYzg1NTIzMjU3ZDllOTBjNjcyMjhhOWNjODAzYzNiNWU0NTc4IGxlZ2FjeS10cnVuaworMjg0OTEgMzFhNzc0YTZmNjA0YjU3MGY5MTcxNmU1NThlN2RhZjRhNDFkMzI0NCBsZWdhY3ktdHJ1bmsKKzI4NDkyIDZhMjIxODM0ZWQ3ZGY0MmU4MGMyMDFhMTE0MjYwNzdkZDRlNjI5MDAgbGVnYWN5LXRydW5rCisyODQ5MyBhNTRjNWNmYTNmOGZiMjE0Y2QzNWY0MWI5YTFmOGNjNDczZTUyNmQ2IGxlZ2FjeS10cnVuaworMjg0OTQgYmUyODY4YTYzZWQ1M2QxZjI0ZTRjMDcxZjQ4OTA2ZTVhMTM5MjhjMiBsZWdhY3ktdHJ1bmsKKzI4NDk1IDAwNGRlMWFjMjNjNDQyMzNkOWFiNDIwMWZlYWMzYTYxODFlYWYzNTQgbGVnYWN5LXRydW5rCisyODQ5NiA0YWVhY2Y5Zjk4NThlNDVmZDAyMDA0MTRiZTgzMjAxZDE2NjAwMzk2IGFzdC1icmFuY2gKKzI4NDk3IDI2YzUwZjMyMjYyMjAwMjI4MGJkZjMyYzhlYTc5OWJkMmE3NjZkYjkgYXN0LWJyYW5jaAorMjg0OTggMDJlMGU2ZDM4MTNlOWViMzQyZjVkMzZhODRmNDJjNjAxOTIwNDljMCBhc3QtYnJhbmNoCisyODQ5OSA4ZTQ3MzYxYzRiNWIwMzk0OWJlOTI3MWZjMTRlNmY1NDQ1YjdjOTAxIGFzdC1icmFuY2gKKzI4NTAwIDEzZTkwZTNjNGM5OTMxYmZmNWIwNTdiODBhN2I5ZmE3YjJjYmIwYjYgYXN0LWJyYW5jaAorMjg1MDEgYzU1NjkwNjQ3OTYxMzAxMjkzNjk0MmM5NzJiMzMyNGNhNjRkMGMzNSBhc3QtYnJhbmNoCisyODUwMiA4OTQyMTUwNWRiNTkwMzI5M2RiZWEwYWVhMDIyNWUzYjNkOGIxOTY4IGFzdC1icmFuY2gKKzI4NTAzIDBjNTQ0ODhhNzQ4MjE5ZmZkYThiZTZmZjhjODU0NmQ1ZjNmNjJmZGIgYXN0LWJyYW5jaAorMjg1MDQgZWQyYThjNTQ4YzQ0NGQ4YjlmOTVjYmQzNjVlMDE1NGM0NDZiYWM5OSBhc3QtYnJhbmNoCisyODUwNSA1YTEwMTZiMmM0NDBjZGMxYTQyZTg0MmU4YWIzYmQ2ZjQ0ZTVhMDU1IGFzdC1icmFuY2gKKzI4NTA2IDVhNDFhNzBiYzVkMTdjZTE0M2VmNjliMTFiZGMxYzQ4MTA2YWE2MDIgYXN0LWJyYW5jaAorMjg1MDcgMmJlOTY5ZDI5NTEwYmE5YzRjYWZiZWRmZWQyYzAzOGE0NjQ5MWIwOSBsZWdhY3ktdHJ1bmsKKzI4NTA4IDlhMmRlMzllOGRhNzVmYmJmZWVlNGIyNjBkZDRhN2Y3YTQzMzIwMjQgbGVnYWN5LXRydW5rCisyODUwOSA3MDYwM2Y0ODQwMjk0NmEyMzg3ZTBlMzVjMzg4MjEyOTlmZmI4NzkxIGxlZ2FjeS10cnVuaworMjg1MTAgNGM0ZjkyYjBhZjkwMzY5NTQzMjBmYjUyZTJiN2JmNmMxMWZmNDdjNSBsZWdhY3ktdHJ1bmsKKzI4NTExIGIzMzdlZjE2YzBkMmQ4YmMzMTMwZDczNTQ0Yzc3NTczMWE2NjFhMzcgbGVnYWN5LXRydW5rCisyODUxMiA1ZmU0ZDkzZGY0MjkxMzRlZjg2OTVjMTJlNTlmZjk2MmZmOGI3M2QyIGxlZ2FjeS10cnVuaworMjg1MTMgODRiZmI4YTgwNWZjOWZmNjZiMzgxZWUxZTE2NDZjMWQzMjEyYTM0NiBsZWdhY3ktdHJ1bmsKKzI4NTE0IDlhMTc4YWRiNGUyZGIwMDg3MmRjYzVmYzU3OTMwMWRjZWFjNGJmNTYgbGVnYWN5LXRydW5rCisyODUxNSAxOTk4MmM1ZWI0OTNhZjA5YTIyZjUwN2E1YmU1MDJhZDU3ZTIxZGE0IGxlZ2FjeS10cnVuaworMjg1MTYgODc3MTk4NzA1YzkyYWRiMDI4ZGFhMmUwNmFlYzk5NGVhYjJjMTRlNCBsZWdhY3ktdHJ1bmsKKzI4NTE3IGMxNDlkMzkzMTQzNDQ3NDBmNDY5NmM5NTA2NWFkYWZjZDRiNGVhODQgbGVnYWN5LXRydW5rCisyODUxOCAwMzM3ZGFkODQwM2UxMGE3MzU4YmU1Njc1ZjMyNjYzOTQwZWYzZDAzIGxlZ2FjeS10cnVuaworMjg1MTkgNDI3ZWZjMzViNWJlYjZkZWI5YmQyOWYwMjMxYmU1NzY4M2QzMjA1OCBsZWdhY3ktdHJ1bmsKKzI4NTIwIGFlMTQ2OWU0NjhhMDQ5MDg5NmJiMWFiOTFmZWNiOWNlMDk0OTQyMDcgbGVnYWN5LXRydW5rCisyODUyMSA2YTg1YTFjOWQzM2Q4ZjNhZjMyZTc0NDYxZjAzN2EwMzc1MmQ0ZTQ3IGxlZ2FjeS10cnVuaworMjg1MjIgMWI4MGUwZmQ1YTQ4MTQ1OThmNDRhNTU3MDY4ZTZiYzhhMDVlZmMwMyBsZWdhY3ktdHJ1bmsKKzI4NTIzIDk4ZGRjNDI5N2YzNjFkZTVkYmU5YmNiMzM0NTJmNjM1NzUwM2U2YzQgbGVnYWN5LXRydW5rCisyODUyNSA1NjcyYjE1NzM4NTVhNTE1YWEzNjNmZDdmOGU3ZGFlMmI0MjcwYjlkIGxlZ2FjeS10cnVuaworMjg1MjYgNzNiMmNiYWU5ZDkwMTc4MDQzNzBjZTViZWI1ZmE5OWM3MGIyNjY1YSBEU19SUENfQlJBTkNICisyODUyNyBjMDJhNjY4NDg4ZDA4MmM0ZDBkYjhiMzg3Mjc3N2U2OGMxYTJjMmQ2IGxlZ2FjeS10cnVuaworMjg1MjggYTY5YTEyNDg0ZDY5YWE4NjZlNjcyNjhmN2E3NjE0NTJkMDNhMjc1MiBsZWdhY3ktdHJ1bmsKKzI4NTI5IGJjNTkwYmVhZGYwYmQxNzYzNGJiMGUxZjY0MmRiNjY3N2FkN2QzOGIgbGVnYWN5LXRydW5rCisyODUzMCAzMjMzMWQyNmQ3Y2YxOTExNGYxZjgwYjNlZWI1OWE1NTc5ZjQ4ZTk1IGxlZ2FjeS10cnVuaworMjg1MzEgOGExNmRlMGJlMTExNzgwOTJiYmVhMDUwNjUwMTRjN2FkNGI0N2VmZSBsZWdhY3ktdHJ1bmsKKzI4NTMyIGY5ZTQyNDNmZjc5MmU3OTQxMWMxODhhNTExNmRlMjVjNjg2ZjE2ZjggcmVsZWFzZTIyLW1haW50CisyODUzMyA0YjU4MGE0NjI1MDgwY2RiZWIyMmRiOGYxNDBhNWEwNWVjNWI0Yjc4IGxlZ2FjeS10cnVuaworMjg1MzQgMzllMDlmMzBmN2VmMjg0NmE3ZjFhYjU5NjIzMGUxZjQ0YzRlNmQzYiBsZWdhY3ktdHJ1bmsKKzI4NTM1IGMwZDVmZjg1NTVhZGVhNDcwNWQ0NTU2ZmZiMDk5NTQ3YWM4YmJiNjUgbGVnYWN5LXRydW5rCisyODUzNiAwZWNiM2NhYmY0MGI5YTg2ZTYzNmNiOTk3ODc2YjVkNjcxZmYzMzU3IGxlZ2FjeS10cnVuaworMjg1MzcgM2EyNmUzNTJmMGE2ZDI3NWZmMWUwNzdjODBhYWE4Y2FkMjEyOWRlMSBsZWdhY3ktdHJ1bmsKKzI4NTM4IDAwYjZkZDQxNGI4MDQ2MWZiNzgwMWE0ZThjMWQ2ZDNlMWMxYjg3MWIgbGVnYWN5LXRydW5rCisyODUzOSAwNDAxYTBlYWQxZWIzMzQ3ZDEyMGQyYTA4MTRkY2E1MjJmMTJiODEzIGxlZ2FjeS10cnVuaworMjg1NDAgYjQ3MGI0MTc4MzlkOGNiNDZkZjMxYTM0NTI3MGI3ZTMyZTM2ZWZlMSBsZWdhY3ktdHJ1bmsKKzI4NTQxIGYwZmYwNjBjZDE5NGU1MTc4NzI1ZTVjOTI4MjE3NjY5NDAzODJjMzQgbGVnYWN5LXRydW5rCisyODU0MiBmYjMzNGIxYTU2YTY1YzA3MTA4YWIzOGJlODE5MzA3MDcxOTMzZTVlIGxlZ2FjeS10cnVuaworMjg1NDMgYTJiMWYzYzExMzg3YTY0NzA4Yzg1ZWRlMDg4Y2IxZDFkMGI1MGRiNyBsZWdhY3ktdHJ1bmsKKzI4NTQ0IDg4MzQzODVmMjliZjU0MTBkOWY3MjhhYTBkMzdhNmQ3NmM1Nzg4OTQgYXN0LWJyYW5jaAorMjg1NDUgNzU5NjFjYjM3NDdmOWRiOWJmNDAxY2ZkMWE5NGZkYjE0MDMxMTI3YyBhc3QtYnJhbmNoCisyODU0NiA2OTI5M2I4NDlkODU4MDdiNGQ2ZTE4MWJiMjQ2YjU1MGFhMmZjYWU4IGFzdC1icmFuY2gKKzI4NTQ3IDdjNzMzMzgwMjcxNDliMjBjODY5YTlmNDBkYTUyMzNlYjY4N2MzNWUgYXN0LWJyYW5jaAorMjg1NDggNGVhMDgxMTAwMzA1MjliOGI4YjI4ZGY5NWIwOWM4MjUwNTI1N2RiMCBsZWdhY3ktdHJ1bmsKKzI4NTQ5IGVmYzBlZGMzMGZlYTQzNTBmZWMwYzA1YmRmOWUzM2M1NjMyZjNlMGIgcmVsZWFzZTIxLW1haW50CisyODU1MCAzMDE1YzY3OGY4MWRkZjg1MGRmMTAwZTVhODZlMzEzZGMwNzUwMDA2IHJlbGVhc2UyMi1tYWludAorMjg1NTEgMGNlMjcyMmEzZTE1NGQwOTM0YmJiOWI1NTI2ZWRjNWU5MzhmODI4NCBsZWdhY3ktdHJ1bmsKKzI4NTUyIDRjODE2M2EyNzY0MDI5N2E2YjFjYmM5OWY1ZDQ1ZGY1ZDJkODk5OGMgcmVsZWFzZTIyLW1haW50CisyODU1MyA5NTNlYmUwYzBjMjVlZWFhZTNiM2VmNzhlNTRhMThiZTA5ODA4ZjhlIGxlZ2FjeS10cnVuaworMjg1NTQgYzczMTBmMzQ4Yzc4ZTJhZmNhZmI2YWNiMWJlYWFhOTYzZTFmOThhMyBsZWdhY3ktdHJ1bmsKKzI4NTU1IGU1MDBmMThmMzEzMTI4MmE5N2U3YzZmYzNmNWE0NmVjMzE1YmJhMmUgbGVnYWN5LXRydW5rCisyODU1NiA2YjY3ZDI2MDc5ZjI1NTY5MGVjZmNjMjJkZTJiMjA3NTc2NjJiZWY1IGxlZ2FjeS10cnVuaworMjg1NTcgMjdjNzE4YzgyZWZkZTE0NmM0Zjg5YzE3NDQ2OGZiNjExNGQ2Y2I2ZCBEU19SUENfQlJBTkNICisyODU1OCA0OGQxMDhlNWI4ODQxYTBlODkzODlmMDFmOGMwM2UwZTk4NGM1OTgxIGxlZ2FjeS10cnVuaworMjg1NTkgMTcyODQ1YzA5YWZlY2Y1NDI1M2E0Zjg0M2NhNGFlN2VlMzVkMTA0ZSBsZWdhY3ktdHJ1bmsKKzI4NTYwIDU2ZjlmNWFiNmVjMTFmOGE5ZmMzYjY4YTRhMWY4YzJkZmIyYjAyMWMgbGVnYWN5LXRydW5rCisyODU2MSA1MTY1YTBlZTg0YzYyMGE2ZjZlY2QwM2Q1M2FkY2RkOTQyYzY3YTQ3IGxlZ2FjeS10cnVuaworMjg1NjIgZjFjNjljMzJjNDJiMmJlYWU2NDkzM2NmM2JhMzU2YjM2Mzg1NTBhNiBsZWdhY3ktdHJ1bmsKKzI4NTYzIDk2NGQ2ODg4YTIzNjhlOWUxYzBjMTJlNGM0MzQ2YTIzMGJlODU1YjQgbGVnYWN5LXRydW5rCisyODU2NCAzNjhiYzNhNDkxOWUzMDVjNWM4MzcyZmIzNTA2ZmZlYjkwYjA4NjdiIGxlZ2FjeS10cnVuaworMjg1NjUgODUyOWU1NThmNzFkNzQyZmU1YmY3NjgzZjkxMjA2ZGQxNzcxYTRjMCByZWxlYXNlMjItbWFpbnQKKzI4NTY2IGI4OWViZDU3Y2ViNGE5NWYyY2IzODA0YWQzNGZmZDE5NjNjMzVkYTcgbGVnYWN5LXRydW5rCisyODU2NyAzOGZhNzRhMjA1ZWE1NmQ4NTY2ZjQ2OWY1ZDQwNGE0NzA0NDUwOTYxIGxlZ2FjeS10cnVuaworMjg1NjggY2M1M2RkYjY0MjRmM2I0MTUyNWY5MDhlNzNkN2NlNmQ0ZTk1N2I0NiBsZWdhY3ktdHJ1bmsKKzI4NTY5IDBmMDAxNjYzMmJlNDlmOWYwOWEwNTAyOTBkNGFiY2Y4MTdiZjViMzYgbGVnYWN5LXRydW5rCisyODU3MCAwZDkyZWI2M2RiODlhZTg5NGI4YjA0ODhhYTdiMWNlOGIxYjg4YTdkIGxlZ2FjeS10cnVuaworMjg1NzEgZGRhZDM2N2I4MGMzZDQ2ODEyZGEyZGM1YjhlMzg5ZDE2YWE0N2I0MCBsZWdhY3ktdHJ1bmsKKzI4NTcyIDgwNjM0Y2EwMmRiZjkzNjRjMjEyMjE5MmY5MWMzMGQ0YzA5YWNjZDEgbGVnYWN5LXRydW5rCisyODU3MyBkNDQ2YjUxNTEzMTZlYTgyZTc4MDUzYTAxNWZlY2NiZDRlYWVkM2JkIGxlZ2FjeS10cnVuaworMjg1NzQgYWY2OTQ1ZjMzYjA4NjBmZjEwYzA2MDAyNDczNWViYjFiOWUyZWY1MSBsZWdhY3ktdHJ1bmsKKzI4NTc1IGJlMjVkMjM2ZjI4NmRkNGU3MWFhMTFkOWE3MmEwYTAwM2ZhNTQ4ZjggcmVsZWFzZTIyLW1haW50CisyODU3NiBkZWI2NGRmYzg0MTY2Y2E1MTU2NzUyMzNiMTM2MGM4NmRjN2UyNDczIHJlbGVhc2UyMi1tYWludAorMjg1NzcgNjVlMGYyZTM5NWFjODM3NjYwMjZiZGZlZmE2YWIyZTAyM2ViZmFiNyBsZWdhY3ktdHJ1bmsKKzI4NTc4IGFkYWJkYjk5ZWNjNGVlNzQ2ZDI4Y2M1MzJmMTJhYTk4NTA3OWIyYzIgbGVnYWN5LXRydW5rCisyODU3OSA0YjE1NGYxOWQxYWYyZjRmMGVkYzNkM2Y0Yzk5MDNlNWY4YmJlYjA3IGxlZ2FjeS10cnVuaworMjg1ODAgMGUyMzY2ODc5Mjg5ZTIyNjBjYTI5MzBiZjg1NWQ5ZjcxMmZkMzA3NCBsZWdhY3ktdHJ1bmsKKzI4NTgxIDRiMjA1ZTBmYjQ2YmMxZjg2MTIyZjY3Y2FiNmYzOGViYTk0MDk5ODIgbGVnYWN5LXRydW5rCisyODU4MiA1YzI0MzM4ZjNhZTVmNDIyYjY5YjQzOWY3MzFiMWU2MTk0ODZjYzdmIGxlZ2FjeS10cnVuaworMjg1ODMgMTBmOTg4ODg1M2NjNjA0MTJiY2ZiZWU3NmMxYTg0Zjk3YmY5ODQyMiBsZWdhY3ktdHJ1bmsKKzI4NTg0IGFjNzQxNTg3ZTY2YjkyMzQ3NDhkNmRlYjRkMWM5OGQ5MjYxNjExMDYgbGVnYWN5LXRydW5rCisyODU4NSA1Y2I4ZDU3MmI0ZGVmMDFhYzNjMjJkNTFjMmJmNGVlNjYxYjA3ZTY0IGxlZ2FjeS10cnVuaworMjg1ODYgMGM5ZGZkNWEwNmQ0NDcwYzAwMDQyOTlhYzQ1YjA2YTQxMWJiNjc4YSBsZWdhY3ktdHJ1bmsKKzI4NTg3IDc0MWVkZDFjYTIzYThiZTliZjRkNjE4N2Y1ZDExZjYxYThmZjJjMmUgbGVnYWN5LXRydW5rCisyODU4OCBlNTY2YWY5NDY0OGJhNjYzMjA5NDUyMWM4YzQwN2FiZjA0M2RlNGU3IGxlZ2FjeS10cnVuaworMjg1ODkgNjQ1ZGMzM2NkNDgxMjQwZjA4NTk3YjVkMzZmZGRlY2Y3YWU2MWEyNyBsZWdhY3ktdHJ1bmsKKzI4NTkwIGJmOTBmYjcxYWE3NmQ5M2EzNjEzMTI2Y2Q1YzkzOTJjYTM1OTkwZGUgbGVnYWN5LXRydW5rCisyODU5MSBjMWNhMDNlZTUxNmUxM2RjNmJkYjA4OGNlYjZmN2JlMTEzYjNhZDZjIGxlZ2FjeS10cnVuaworMjg1OTIgMGYwZDM0NzRmM2Y2ODlkZmUyMTM3ZDUzZjhhYWM0MWM2OWUyZjI2NCBsZWdhY3ktdHJ1bmsKKzI4NTkzIDEzYTVmMzI2MjgzMjEyNTdiZWM3ZDAzYmMwNjhkMzE2ZWJmNzgyZjkgbGVnYWN5LXRydW5rCisyODU5NCBlMTYxNzE1NmY5M2ZkYzlhNzM4YmY0YjJmNjliYTAyMDYzYWU2NWQyIGxlZ2FjeS10cnVuaworMjg1OTUgYzIxM2U5YjgwMDI2Mjk5NzllNTkxOTFmYjA3YWIzYTFkZGZhYWJkZSBsZWdhY3ktdHJ1bmsKKzI4NTk2IGEzN2NmYzFjOTcxNmM3YTY1ODM0ZjkzYWEzOTYwYmRhZmE1MWNmYjEgcmVsZWFzZTIyLW1haW50CisyODU5NyAyYWMxMGQ5MzJkN2Y1NTkxNzJiMzZiOTg5ZjQ0Y2NkZjhiYjUyZDBlIGxlZ2FjeS10cnVuaworMjg1OTggNjEwNDhhZGEwNWJjYzk1NDkzMjdkOGE1YjYxMjYzYWE3ZTQ4ZWQzZCByZWxlYXNlMjItbWFpbnQKKzI4NTk5IGI2YmZhYTZjYTg0ZDA1NGE4MTg5ZGNiNWY3MDBkNDk3NDI0MWQyM2EgbGVnYWN5LXRydW5rCisyODYwMCBiOGI5MmIzZjViMTdjNmVjZjliNzkwZTk5YmMxNzdhMTVjZTE1ZjMzIGxlZ2FjeS10cnVuaworMjg2MDEgOThkOGJiMmVlNGMzMzg0ODFjYTFhN2ExYWUyYjFiZDYyZGIyMTc1ZiBsZWdhY3ktdHJ1bmsKKzI4NjAyIDQwYzM1MTkxMzlkZThiNmMwMjAzY2U5MjZiNDIxYjY1MjFjZDBjMzkgbGVnYWN5LXRydW5rCisyODYwMyA5ZWUyZmIyN2QzM2E3MjE4NGM4N2IyMzJkYzFlOWIyMGJiNGQzZGYxIHJlbGVhc2UyMi1tYWludAorMjg2MDQgMTNkMDZlNWM4YTVjM2VmNGI5NTUwZGU2MjVmNDc4ZDc0ODUxZTI4NSBsZWdhY3ktdHJ1bmsKKzI4NjA1IDFjMDE5N2Y0OWM1OWMwMzc3NjVkNThhMjIxMzEyMDE2ODM0ODQ5ZDggbGVnYWN5LXRydW5rCisyODYwNiA1YTE3ZjA5NzgzMjYwMDljMDZhMTA2YmZmOTY4NWVmOTk3ZGEwY2QyIGxlZ2FjeS10cnVuaworMjg2MDcgZjRlOWYwOWRmNGYyMzk4M2M2MzhiMDE4NjUyMmE3YmNiMzkxOTBkZiBsZWdhY3ktdHJ1bmsKKzI4NjA4IDI5ZWZjMmQ4M2FkZTYxOWEwYTM2YzZhMjc2MmEyNDUxOTY3ZTBjNTcgbGVnYWN5LXRydW5rCisyODYwOSA0ZjQwMDMwNDNiNTAxMzFlZDdkYWJjZDAwMGQxYTg5NTNmYzcyNzllIGxlZ2FjeS10cnVuaworMjg2MTAgMDM4NzExYWUxM2UwZTE4MzQ4YTUzMTAxOGI0MDhjNGE4MzE3MGI1ZSBsZWdhY3ktdHJ1bmsKKzI4NjExIGJjZGI2MGRmNGUzZWZiMzMwOGI5ZTg1MTViOWU0MTA1ZDZjZTZiOWUgbGVnYWN5LXRydW5rCisyODYxMiAzZWZiZDE5NDNiOGMxZTg4OGNkY2NmNmUzZDNhMmU2NWU3OWUwZjBkIGxlZ2FjeS10cnVuaworMjg2MTMgMTE1MDU2MGMxMDAzMTA4ZjI2NjFkY2M2OTE0NjJhNGYyOWMwNjJhYiByZWxlYXNlMjItbWFpbnQKKzI4NjE0IDI0ZmUyYWM1YWRjYzE5Yzk4OTI0ODA5ZDk2MDhjOWNhMGM4MDE2ZTMgbGVnYWN5LXRydW5rCisyODYxNSA4YTZmNTRiNzYzNDM0MDc2YzkyZTZmZjQ1ZTQ1NmM3MTcwOTgwY2RhIGxlZ2FjeS10cnVuaworMjg2MTYgNGI5ODQ0MTg4ZDA0ZTcwZDI3ZTBmNTY5NTAyYTk4Y2M3NGM1Mzg2MyBsZWdhY3ktdHJ1bmsKKzI4NjE3IDE4MTYwY2I2MzY1MDljZmU0ZGNmNjI1NjljYzlhMjE2YzljYWRkN2EgbGVnYWN5LXRydW5rCisyODYxOCBhMGJlMTgyNjMxY2MzYmFiZDJiNzQ0NGNhZDZmNTJkODZjMjgzYTJhIGxlZ2FjeS10cnVuaworMjg2MTkgNDZhYzM2NTM5NmE0OTc4NGNiMjAxZDlkMTUyZmM4MGUwYzhlYTc4MyBsZWdhY3ktdHJ1bmsKKzI4NjIwIDJiZjA5ODkyNGJhNDA5NTJkMzQ2YmRlZmYwMTkwMjQ2ZjZiNDg4ZGMgbGVnYWN5LXRydW5rCisyODYyMSBmMTg4NWI5OWEzOWNkYWM2N2M2YWZlMGYwOGI1ZmEzZmExNzZkYzYxIGxlZ2FjeS10cnVuaworMjg2MjIgYjNjNDU4ZTNjMjgwZjhmZDYxZDI0OWEyZTIwNGQxOGI3NzNlNDhiOCBsZWdhY3ktdHJ1bmsKKzI4NjIzIDQ2ZTcyYTcwODg1Nzg0NGI4MmZhMDVhMDE4YmM0NDcxZjkwMjBhYTYgbGVnYWN5LXRydW5rCisyODYyNCA5MDk2MGY3ZjRmMzE0NGRlMWE3YjcwMDhiZmU4NTZiZmFiNzBmZWM2IGxlZ2FjeS10cnVuaworMjg2MjUgNDVkZjJkZTM0Y2QzOWJmN2NiZTI2NGU3MDkyYTFjMDQ2MzUyOGUwZiBsZWdhY3ktdHJ1bmsKKzI4NjI2IDVkMjA3ZTU3ZDA0MDE0MGNlM2I1MmE3NmVlMjYwMWQ3MjNkZjlkOTUgbGVnYWN5LXRydW5rCisyODYyNyA1NTA4ZTA0ZDQ5N2M2ODUxNmZhZGVlYjkwODM2NGNmNjFlYjUwNThlIGxlZ2FjeS10cnVuaworMjg2MjggOTZkZDk5MjdlMDExZDhiMTVhNWE0M2NlZTk5Mjc4MWU0NzNhNmY5MSBsZWdhY3ktdHJ1bmsKKzI4NjI5IDRiMzJiZTY2MTc3ODVkMzUwMDU0YjVkNGVmOThlNGNkYTg4YTUzZjQgbGVnYWN5LXRydW5rCisyODYzMCA0NzA4MWE3NTNlY2M0ODI2NGM2ZDkyOGIxN2E3OGUxZGMzNzdiMmU0IGxlZ2FjeS10cnVuaworMjg2MzEgNjRkMTA1ZGQwODIzYmE5Yjg4NGEwZGIyZDBkODliNTMyYTMxOGE3YSByZWxlYXNlMjItbWFpbnQKKzI4NjMyIDhkZDZmNTVmZDRiN2U3ZWQ5YzVhN2ZhMDg2OGU4NDgzNzMyMmIyNzQgbGVnYWN5LXRydW5rCisyODYzMyBjMTg0ZTQxNjhkMTRjOGU5NzljZjU4NWEzZmIxOTBlMDZmNmM4MzQ3IGxlZ2FjeS10cnVuaworMjg2MzQgY2JiNmNjNzlkMzM2NTA3NTQ1MDA5YzZiN2JmNzdjNWU1ZjJmZjUwMyBsZWdhY3ktdHJ1bmsKKzI4NjM1IDI3ZjgzNTRmNDFiNmU3MjQ2OGVmOTI3OGEyYzEyMzlmZjI3NzQ4NWYgbGVnYWN5LXRydW5rCisyODYzNiBhZmQwMDMwZTRjMzhjNjBmZDlhNjY1OGRiZGYyNjI2YzZkZmRmNGYyIGxlZ2FjeS10cnVuaworMjg2MzcgYWJkNjI1NDE3YTUzNTlhMDUzOTBiOGMyZmU1MGRjMDNiMjg3NDY5ZiBsZWdhY3ktdHJ1bmsKKzI4NjM5IDJlN2ZlNTVjMGUxMWFjZTc2NzU1YzU5ZDVmZDcyYTliYzU2NjA0YTcgbGVnYWN5LXRydW5rCisyODY0MCAyZDEzZjlkOTgxMzU3N2RmNWU3Zjg2ZGE5MDUxMWM4MDgwZWM0YTQzIGxlZ2FjeS10cnVuaworMjg2NDEgYmY3NWYzYTQ1OTI3ZmZiMzBhMzUzMGI0MGY5OGFlZDVhOTYwODU1ZSBsZWdhY3ktdHJ1bmsKKzI4NjQyIDFlNDZkYTFlNjUyMjZkMDdlYTUxMDNmMjRiZWYxMzRhODcyMTdlZjIgbGVnYWN5LXRydW5rCisyODY0MyAyNDkwY2Y3ZTY4YTQ0YWUxZWE1NDdlYzJiZDFkZjkxNWYzMTQ1MTYwIGxlZ2FjeS10cnVuaworMjg2NDQgOWYzZWEzN2RjNDNjYjc4NThmNDA3ZTQ4Njc5ODI4NzJiODBkNjM4YiBsZWdhY3ktdHJ1bmsKKzI4NjQ1IDc2NzY4YWRiNmYyMzI4YjJlMWUxMTgwOGM2ODgzMGY2OTM1NzViZmEgbGVnYWN5LXRydW5rCisyODY0NiBjYmNkNzNmNTg3YWQ3YTQ5ODgwYmFkOTA3OTM1ZDc3ZDdhM2Y0YjY5IHJlbGVhc2UyMi1tYWludAorMjg2NDcgMTI5NDllY2VkNTVmZjdkOWM0NGY5Y2FmZTM3ZGVhYTU0NmJiYTI0NCBsZWdhY3ktdHJ1bmsKKzI4NjQ4IDc1Y2Q0YzIwM2Q4ZjNiZGYzNDc1YmY0NDA0M2I2ZWVjMWRlZjg3MWUgbGVnYWN5LXRydW5rCisyODY0OSA1MzMwYzA2MjA4MTBlNWRhYWE4YTdiYzM4ZWY3YmY1YzE3YzIwZmMzIGxlZ2FjeS10cnVuaworMjg2NTAgMDIyMGIwMDc1YTM1ZDQ5ODVhODJjMTVjYmJhOTYyZTgwZjg3N2E0OSBsZWdhY3ktdHJ1bmsKKzI4NjUxIDk1MWY1ZjI4ZjJmZWIzM2EzOTRiZmExMTY3YTAzMWNmOTY5ZjJiNjQgbGVnYWN5LXRydW5rCisyODY1MiBjZGFkNmIwOTIxZDU3ODI1MzExNTk5MGNhYmJjYjhjNDI3MTdjODE1IGxlZ2FjeS10cnVuaworMjg2NTMgNGZkMGI3NmM3NDllZWI2MWM3Yjc1ZDkzNDY4NmIwOTQxYmU2NWU3ZSBsZWdhY3ktdHJ1bmsKKzI4NjU0IDhhN2EyZjFmODhmMDY1MzRjNmJkMzkwMmM4MWI3OTM3YzVkNDNhYjYgbGVnYWN5LXRydW5rCisyODY1NSBhYzBlMWU5MzFmMzkwMGM5ZWQ2MGE2MjFiNjY1NGYxOTliYTkxN2M4IGxlZ2FjeS10cnVuaworMjg2NTYgNDBlNWIyZGE5ZjI4NDNjYjJiYzM4ZjU4NzJhYWM1NTRmNmY0NWUwYSBsZWdhY3ktdHJ1bmsKKzI4NjU3IDVmNWYxYzgyNTc4NDQwMDBjNWZmYzQxYzcxMjgwZmY2MmU4ZGJkY2UgcmVsZWFzZTIyLW1haW50CisyODY1OCAyYjE3MDFjZDQ1NjYyMTRmNjZhNGRjNDM2ZWZiYTY1YzNjMmVkMmU0IGxlZ2FjeS10cnVuaworMjg2NTkgZTcwOWEzYzhiZmVjYzVkZmRjYmYxODAyMzFjYmJmOGMxMDYxYjJlYyBsZWdhY3ktdHJ1bmsKKzI4NjYwIDIzYTJiYWQ4ZDgyY2U2NDE3ZWJmZjBiYzM4NjA5YmNkY2NjODEyYWEgRFNfUlBDX0JSQU5DSAorMjg2NjEgZmQ4YWE3YWVkNGQ1MWU2Y2Y3ODZlYWIzOWEyMjVlY2EyZjE3NzNkMyBsZWdhY3ktdHJ1bmsKKzI4NjYzIDE5OTA0NzUwYzM2NTdjNzU3MzYzMzA2MGY4ZjNlNzNmYjI1NzkxNDEgbGVnYWN5LXRydW5rCisyODY2NCA4MDljMTRmMTEwMWE5NWI5MDYzYmE3MzYxMTk4ZGE0MTI3NGM0MGUwIGxlZ2FjeS10cnVuaworMjg2NjUgMWE3ODk1Zjk3YjMwZDEzODczYWRlOTc3Mjk1MDUwNTU3YzNhMDY3MiBsZWdhY3ktdHJ1bmsKKzI4NjY2IDg3NzVkZWU2MGQ4OWE1NTlhYWM5Yjc5MDk1OTdmZDIwZWI5ZTc1NWYgbGVnYWN5LXRydW5rCisyODY2NyAyOTcwZTVlNzYwMWZmMjZiZTQyNzk2NWQ2YTYwYTE0ZGI4MzYyNTc3IHJlbGVhc2UyMi1tYWludAorMjg2NjggOGZkNGUyMmU3OGYwMWM1Yzg3Mjk0NGJjOWMxZjVlZTY5NDQyYjI1NSBsZWdhY3ktdHJ1bmsKKzI4NjY5IGFhYzFlZTk2NmY1NmE0ZDYwYTI5MjQ5OWExZTZjNjhlYTczM2E4MTAgbGVnYWN5LXRydW5rCisyODY3MCA4ZDc1MWI2MmVjYzQyNWI0ZTA3ZmY0MzQ1NzQwMDk0MzVmZmFhNWRlIGxlZ2FjeS10cnVuaworMjg2NzEgOTZiMmZmYjc3YjAxNzQzN2U1MGQ0OTEzYWQxZjMzYWY2ZjQzZDUyMyBsZWdhY3ktdHJ1bmsKKzI4NjcyIDI5MzBmYWYxMjVjYTlmM2ZkNDVjMTUzYjM2ZGRhNzI3YWVkYjU4ZDYgbGVnYWN5LXRydW5rCisyODY3MyA3MDA4ZTUzNTc5ZWJkNzU4ZmY3OGY5N2VhZDQ3YjJmNWQ1YzY4ZmU0IGxlZ2FjeS10cnVuaworMjg2NzQgYTBmNjQxOWNiMTNmZTZhY2RjNWNlZDBhMTAyNzVlMTQzZTVhOWY4NiBsZWdhY3ktdHJ1bmsKKzI4Njc1IDc3OGY3MjIxZjk1NTExNTUyMTI0NzIzZWQ0YzhiYmI1OGI1NTczZWQgbGVnYWN5LXRydW5rCisyODY3NiBjYzM1ZDdiODc4NTJmNDE4OGFiOWM2YTA5MDEyYTgwNDdkYWY2YjQ1IGxlZ2FjeS10cnVuaworMjg2NzcgYzgwNDQxMjNkMTEwYjZkYWFhMTk3YjE5YjUxYzM3MmMyMzQwYTljNiBsZWdhY3ktdHJ1bmsKKzI4Njc4IDBiZjk2OGVlMTVjNzY1NGVmNzc3NTNmZDZkMTM5MWEzYTFhMGUyZjMgbGVnYWN5LXRydW5rCisyODY3OSAxYmJlZGY1NDgxYzhiYjlkOGM4MDRjZjRhYjNmZjc1MDgzZWEzZTM0IGxlZ2FjeS10cnVuaworMjg2ODAgZTFiYTQxZGM5Nzg0MjgxNjgyY2UyNDE2N2YzMzM4MWU0NzhiYmRlMSBsZWdhY3ktdHJ1bmsKKzI4NjgxIGRiZjNjYzFmNDczM2M1ZWE5YmM0NWU0MDdmZTA0NTdkNTQyN2MzNGYgbGVnYWN5LXRydW5rCisyODY4MyAxMzg1ZDE3OWExN2FkYTQyMTE0MWVkOGUwZTdhYmYwMGU2NDVjYTE3IGxlZ2FjeS10cnVuaworMjg2ODQgYjEyOGU4YTExZTI5NWFlMjNlOTk4NjY1YTFjM2ZiOGRjMGY1NTk5ZCBsZWdhY3ktdHJ1bmsKKzI4Njg1IDQ4MGNhZjdjMGExNGUwNDVlYzI4YzAxZWZjOWQ3N2YzNjg0YTg1MWUgbGVnYWN5LXRydW5rCisyODY4NiBmYzJiNzM4MDJmN2I5ZDk3MWQ4NWQ0NmU2ZmRiZDVjMTc2MTVkM2YyIGxlZ2FjeS10cnVuaworMjg2ODcgMWRkN2U1MWZlMGJlN2NhYjZjOWI4YTQ2MGI5MTZlNzAzYjBhODBmYiBsZWdhY3ktdHJ1bmsKKzI4Njg4IDQ2OTBjYTc1NWJlYzYzOWZiYmJjYjZmMWJlMjQzZGIzZGYzYzBjNGIgYXN0LWJyYW5jaAorMjg2ODkgNmIwZTg0NmI4ZDM3ZTU0MTU3YWU3NmZlZWI5YjEwYTQyNmU4NjIzNyBsZWdhY3ktdHJ1bmsKKzI4NjkwIDlmY2I3N2IwNGY5N2ZiMzA5NzBhY2U1MjdlODQ0Mjc1MWJlNDhmZWQgcmVsZWFzZTIyLW1haW50CisyODY5MSA2ZWI4ZGI1M2Y3ZmNhYzQ4MGEwNDE1MzA1ZTE5ZDE3NDFlNjQ5MzUxIGFzdC1icmFuY2gKKzI4NjkyIGUyMDVjN2RlNWE1YTQ1NGEzYzM3MTEyZDM5NzViOTZmZTkwODEzMWMgRFNfUlBDX0JSQU5DSAorMjg2OTQgMjk1NTllMjFjZDUzMDQ5M2ZiNDVjZGFkZmE5MDVhYjI3NWUxNzcyNyBsZWdhY3ktdHJ1bmsKKzI4Njk1IDFiZDA4OWIxZGI3ZmRhYWM5NWI2MGFkNzZkMzY5NjZhODIwOGMxN2EgbGVnYWN5LXRydW5rCisyODY5NiAzZGIwM2MwZDE1MzEwYWE0YzE3OTcxYzMyNjg5NjQ3YjM2ODhhM2U5IGxlZ2FjeS10cnVuaworMjg2OTcgZTU3ZTRiYjUzMmJhYjQ4OTAyMTZmNWY5NmY0NTlhYTE5Yjg5ZjA4OSBsZWdhY3ktdHJ1bmsKKzI4Njk4IDA0YTU0MWU2ODk2NDQyYTYxNjY2ZmY4ZWNlODQ3YWZkNDhlYzRjMDMgbGVnYWN5LXRydW5rCisyODY5OSBhZDY1Mjg2OTFjMzA5YWE4NzkyZWFkYjY0ZWYwYTZlMjE3NTlmNzRjIGxlZ2FjeS10cnVuaworMjg3MDAgMGVjNDc1M2NjYjBmYjYyZTE1NDM0Yjg0NjA3ZWJlZjg0YThlYWUwNSBsZWdhY3ktdHJ1bmsKKzI4NzAxIDUyNzJiNzYzYzI5YzliYTdmNGZjMmIwMDliYjZmYTU5NzBhNzc0MzIgbGVnYWN5LXRydW5rCisyODcwMiA2MTU4ZmNhNWJjYmYyMmE5ZjYxODE1YTJjMDMyZjY3ZGNhNjQ5OGVlIGxlZ2FjeS10cnVuaworMjg3MDMgNGI2MTg1MTI4ODE0YzE0M2NjOTE4YjA4YjE5OGVmNmFhOWRkNmM5YiBsZWdhY3ktdHJ1bmsKKzI4NzA0IGZkYTQ4ZGQ5NGIwNzA0OTMxZTUyYWUyZGQ3YTg2YzNhYTI2NGMzZWQgbGVnYWN5LXRydW5rCisyODcwNSA3MzQyOWNhNzQ4Y2ViYmFlMmU0OWQ5ZmUwOGY5ZTI5NGRhZGFjZGVlIGxlZ2FjeS10cnVuaworMjg3MDYgZTlhNjNlNDgzMTA5Y2U4YzliNTk1MGVjYTRjYWUxNmQyMTZmNjQ5ZSBsZWdhY3ktdHJ1bmsKKzI4NzA3IDg1ZDgxZTA5ZTJmN2Q3OTU0YTJhNDY4NjVkNjU0YzE0NTRlZDUwYjQgbGVnYWN5LXRydW5rCisyODcwOCA2ZWMxNTQ2ODQwYWU2NjJmZjg1YWY4YTM2OTlkMTAwZDk5Y2M2MWE2IGxlZ2FjeS10cnVuaworMjg3MDkgYTAzZjc3ODY5YjJmNTQ5NjAyZjFkYWY1ZjI5OTc4ZWYyMzBiYjE5ZCBsZWdhY3ktdHJ1bmsKKzI4NzExIDk3M2Y1ZmYyMDdjYzU4YTViOTUyZDgxOTc5M2M1N2QzMjA2MWQ5MzkgbGVnYWN5LXRydW5rCisyODcxMiA1ZWE4MmNiNTU2ODIzZDViYzhhMTAxNzVhNmI2MDc0OWFlODI2YjhhIGxlZ2FjeS10cnVuaworMjg3MTMgODU0ZGQ3Njk2ZWIyYmVhY2EyN2NmNTc0ODNhZmJlODhjNDc1OTIyNCBsZWdhY3ktdHJ1bmsKKzI4NzE0IDU3ZDNiOTY2NTFiNmVjODYzNTA4NDc5ZDc5OGJjNzk2OGZlODBjYzYgbGVnYWN5LXRydW5rCisyODcxNSA4Y2U0YmE4NTM5NjkxOWQxZjI0ZjI5OGVkNTM0YTAwYjFjNWY5MWNmIGxlZ2FjeS10cnVuaworMjg3MTYgYzZkZTY4Y2M4ZTJiYmNlOTcwYzNkMzdlZDQ5NDQ5OGRjMjRkYjQzOCBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjg3MTcgOTNlMjU0NTc3Y2ZhNTMxYjk4OGQ4ZmEyODNiYTc5YTIwYjA0MGRmNyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjg3MTkgOThlMTJhYThjNTQ3NWY1N2I0MzI3OTIxZDBkNGE5NjVlNjk3MjBlZCBsZWdhY3ktdHJ1bmsKKzI4NzIwIGZiMDBmZDkzMTg4YTc2NTlmODNkYWZjZWRmOGUxZWI3MmQ4MzExYTggcmVsZWFzZTIyLW1haW50CisyODcyMSBjNzcyNjQwZDUzNWUwNDQxOGE3NGZlZDIzOTI0YmY0MWUyNDgxNDQ2IHJlbGVhc2UyMS1tYWludAorMjg3MjIgNmMyMWU5NWE0ODgxNzc1NmQ2YWQwZTE3MTlhOWQ5ZDA5YmVlZTA2MSBsZWdhY3ktdHJ1bmsKKzI4NzIzIDliODkyNGJkNWI1Y2NkZGQxNGE2NmNlMTM3MGRjYjRiYjQyZDU5MTIgbGVnYWN5LXRydW5rCisyODcyNCBmM2Q4OGVlMDU5MjhkNTA2MWMwZGY0MTQ3YWY0NzZlNjIwMjg4MDQ3IGxlZ2FjeS10cnVuaworMjg3MjUgNDY5MmM0ODdlZTkxMWVhYzU4ZGNhYzVlYjUwYjYyMzc5MzU1MmVkZCBsZWdhY3ktdHJ1bmsKKzI4NzI2IDFiYmY4ZTU1YThiYjliMGVlNDQ1Yzk0OWNhNmE3MDg1NmVjYTA1MGYgbGVnYWN5LXRydW5rCisyODcyNyBhZWMwZjk0NGY2YTAxNzYxZjMwM2E0NDAzMWRiNzRjZTU1Y2VkNTdiIGxlZ2FjeS10cnVuaworMjg3MjggNjA5ZjNkMzFkMWMyNGE3MzA4OGY1YzM1ZjQ3ZWMwZjdmYmM0YmVmOSBsZWdhY3ktdHJ1bmsKKzI4NzI5IGNkNzBjODgwM2ViNWMwZDBhNGFiYWI0ZDJiZmZjYWZhNWJhZWExMWQgbGVnYWN5LXRydW5rCisyODczMCBjOTdhNGNlM2M1OGVkYWJlNjg3MTg3OGQ3MDllYzA2MGE1ZGY5NGY5IGxlZ2FjeS10cnVuaworMjg3MzEgNGQ2ZjgyMDQyMzRhOGQ2OWNlZDJhMzVjMzBlYmM5Y2Y0MTNmZWZhZCBsZWdhY3ktdHJ1bmsKKzI4NzMyIGI2NGZjNmExMDQ5ZTliNzE1N2Y5ZmM3MWQzOTY0MGE0YjY5MmIxMjEgbGVnYWN5LXRydW5rCisyODczMyBjNDU1NjQ3NjhmNTI2ZWRmOWE2YmUxOTI4Y2RkZGY5Yjg4YzNmMjIwIGxlZ2FjeS10cnVuaworMjg3MzQgMDU1ZjdmYWU4MTUwOTEzNGZlMzllYzFhYzZiNDFhZjBmYjc2MjhjNiBsZWdhY3ktdHJ1bmsKKzI4NzM1IDc1MmY2ODk1Y2M2MzBhOGZmNGRiN2FmYjA4Mzg3Y2M5NThkMzFhMzggbGVnYWN5LXRydW5rCisyODczNiBmNWVjMDhkNDU4NTkyODc0YzQ5ZGVjMjgzMWI3NWM2MzkzMWM5YTg3IGxlZ2FjeS10cnVuaworMjg3MzcgZGE0ZTVlNDZhZTNmYjllZDY5ODFiYjA4YWJlNWQxYzNhNjYxZTMxZiBsZWdhY3ktdHJ1bmsKKzI4NzM4IDY3Nzc4MTE5NjE1MjYwNzdmYThkYmU3OTk0MjU3YTJjMmZjMDcwOTYgbGVnYWN5LXRydW5rCisyODczOSA2MWMyNTA2ZWMyZThlYTRkMGNmOWQ1MzU1NGEyNGMyZmM0YWE4M2Y1IGxlZ2FjeS10cnVuaworMjg3NDAgZGJmOTJjNTVmYmI4Yjc4OTIyYzY0MWI2ZTNlNWUyMTBkNTQ5ODA0OCBsZWdhY3ktdHJ1bmsKKzI4NzQxIDQwMTQ5YjUwMDIwY2JiNjg2ZWM3Nzg0NTU4ZjczZmY1MmY2OGMwZTggbGVnYWN5LXRydW5rCisyODc0MiAxYjBlYTQ3Mjc5YzY4YWQ4ZjQwZDQwZmEyMzUxMzVhNWUyYjFhMTg3IGxlZ2FjeS10cnVuaworMjg3NDMgN2JlMjY1NDRiZTRlMzVlNGZlNWJjN2U3ZDU0MWRiNjAzZTZmNDY3YSBsZWdhY3ktdHJ1bmsKKzI4NzQ0IGM2NzA5NDVjODY5NTIyODg5YzIwNTg5OGMzNjBiZjAxNmViOGI1N2QgbGVnYWN5LXRydW5rCisyODc0NSAyMmQxOTg5MTBiMjA4YTYwNjc0MjY2Y2MyMTI2NzVhYjEwMDY0NDQ3IGxlZ2FjeS10cnVuaworMjg3NDYgMWM3ZWUyM2RjNDllMTY5OGFlNzk1MDVjNzYwYzVkMzkyYzliZTJiNiBsZWdhY3ktdHJ1bmsKKzI4NzQ3IGVmZTYzOTE1MWJmZWM1YmUyMWFmNTIxMDYyOTEwMzkzOTUxMDFjYzIgbGVnYWN5LXRydW5rCisyODc0OCBlYjI4ZGNkZGQzNGRiYmMyNmU3ZTIwZjk2NTFiYmFhMDQ1NWNjZjUxIGxlZ2FjeS10cnVuaworMjg3NDkgZGYwM2ZjYzY2MTA0MzYxODM4NzM1MzUzMDE0YzMxMTZiYjMyZGM3YyBsZWdhY3ktdHJ1bmsKKzI4NzUwIDcxNzc5YjgzOWUwOTg3NGQ5YmE0OTM5Nzc1YTAwMzE1YWY1ZWIyYTcgbGVnYWN5LXRydW5rCisyODc1MSAwMzk5YzhhZWE3YjI4NjFkMTdkODJmMWI5OWNmNzliMzc5NjkzMTkxIGxlZ2FjeS10cnVuaworMjg3NTIgYmQ2NTEwYzVjYWJjNDdkOTVmNWY2ZmYwOTQzY2NiNzE1MzBmMmI5NCBsZWdhY3ktdHJ1bmsKKzI4NzUzIDQ2OGMzYmU2YzNlMmNkMTI0ODlhZWJkMTI2NzdhNTMzMDAwNTk3NTIgbGVnYWN5LXRydW5rCisyODc1NCBhYmI3NjhiNDE3YTEzMzBkNmY0M2VkZDY4NDY3YjhmNWNiZDk1NDMwIGxlZ2FjeS10cnVuaworMjg3NTUgODZmZjk1YjFjNjM2ZDVlMTU5ZTBiNDU4ZjlmYTZjMzAwYjZhZTFiMSBsZWdhY3ktdHJ1bmsKKzI4NzU2IGViN2I3YjcxOWVlNTY0OWRlOTM2NDRlNTIyYzM1ZDg3ZDM3MWYzODMgbGVnYWN5LXRydW5rCisyODc1NyBiZDNiOTJkYzk0MGE2NDllYzdlZjBkMmQxYTE2NmI3NjU4NGNmM2NiIGxlZ2FjeS10cnVuaworMjg3NTggOGVkYTE2NmIxMDRlY2E5MDRkYTJkODYxMTM5YTc5ZTc2MDE4YWM3ZSBsZWdhY3ktdHJ1bmsKKzI4NzU5IDkyYTNkODk3ZTgxOTNlZDIzOGQzNGYxNjY3MDAyMThiNjRmNTM0ZTAgbGVnYWN5LXRydW5rCisyODc2MCA1M2UyYzQ0OGIxNjlhMzI3NTI0MDFhYTZkODFiMTMzZTRhYjNjNjhlIGxlZ2FjeS10cnVuaworMjg3NjEgYjk2OGYwMzgyMzVlYTFhNTUxMzRlODE3N2NjY2ExZTk0M2E2YmE3YSBsZWdhY3ktdHJ1bmsKKzI4NzYyIGRmMGZmNWIxN2UxYWExNWRkYjlkODA3NmEwMzA1ZGQzMTJkMmJkZTMgbGVnYWN5LXRydW5rCisyODc2MyBlOWU3NGNjNTU0MGFkOGJhMGYxYjNkZTI4YWMyODU5ZjhhYmYxODAzIGxlZ2FjeS10cnVuaworMjg3NjQgYmRjM2RlZjNkMDg1ZGRhZDFmYjhhOWUzYjk4MmNjNWU4OGVlMGRmMiBsZWdhY3ktdHJ1bmsKKzI4NzY1IDgyM2YwMmEyMjIxMGQ4YTZhNGFkYTc0MjcwNDBlZWY3M2RlMTJjY2UgbGVnYWN5LXRydW5rCisyODc2NiAxNGFkNTYwZjRhOTdmODFiNjlmNWZkNmE5ZDY2NzVjYmExOWJiZTAxIGxlZ2FjeS10cnVuaworMjg3NjcgZjE3NTgyNzI3NjRjNzBjNTI5MzA1MDAyMGQwYmMwOTFjNGI4ZDkzOSBsZWdhY3ktdHJ1bmsKKzI4NzY4IDdkZTg4Y2YwNzgzZTJjYzNjMjJkNTZjN2RhOGViYWIxZGIxMWRmNmQgbGVnYWN5LXRydW5rCisyODc3MCA5YzdhMDZhYzhiMjc3MmU5NDFjZDQyZjBmMDUwM2JkNDM5YWE4MDdkIGxlZ2FjeS10cnVuaworMjg3NzEgMjRlNzg5YjZjY2I2NDE2ZDA0M2Y2NGM5YWYyZTI0OTgyYzU1NTc4MyBsZWdhY3ktdHJ1bmsKKzI4NzcyIDZiNjJhYjg0ODVlYjgxOTY0N2NjNDcxNmI1YjU0MTllNzZmZTY0ZWIgbGVnYWN5LXRydW5rCisyODc3MyAwNzM5MDQ2YTBjM2E1MTQ4MzRkZmIyYWI5MjdiNTM0YjU5MjI0M2UwIGxlZ2FjeS10cnVuaworMjg3NzQgMzM3ZmNjMjQ5ODViMzQ0YWI2Yjg4MzhjMzdkZTU4OGRhZTQzNmQxOSBsZWdhY3ktdHJ1bmsKKzI4Nzc1IGEzYjI5NTkxOGM1ZmQ1YTUzY2YxMGFjNjI0ZDZiMjBhYTdiZDIxNzkgbGVnYWN5LXRydW5rCisyODc3NiAzM2IyNDlhZjQzNjRkYzg0YjhhZTIxY2Y1NDQ0ZTZlN2ZlNGFkZTMwIGxlZ2FjeS10cnVuaworMjg3NzcgOWM5NTRlNjRkMTdhOTRhMGIxNDMwZWRhYTU2OGNiMGQ5YmE1N2RiNiBsZWdhY3ktdHJ1bmsKKzI4Nzc4IGEzMDIzMDg4MTlmMDVkYTg3OTE3NzM1OWZjZGZmZmRkN2U4MTcxOTMgbGVnYWN5LXRydW5rCisyODc3OSAyZjQ0YTkwZmZmMDc3ZWVhZmI3YzJjOTYyOWEyZjQ2OGY4MDM2OTFhIGxlZ2FjeS10cnVuaworMjg3ODAgMmFlMmEyMDNmNDdhYzJhNmVhNTlmNTIwYmE5ODc4OGQ0N2MxODk4ZiBsZWdhY3ktdHJ1bmsKKzI4NzgxIDlmNjE3MTA2MjhjNGYyOTViYjUxNmQ1MzNjMWRlZDQ5MGEyNGE5YWUgbGVnYWN5LXRydW5rCisyODc4MiAyYzNiNTM5N2MzZjllYzExNjg5NmFiOGYwYmUyZWVmNDdlZDcwNTEyIGxlZ2FjeS10cnVuaworMjg3ODMgYmQyNGMyNTk4YTQyOWQ3NmYxNTEwYjg3OTBlY2NjMDc3ZmI3OWJkOCByZWxlYXNlMjItbWFpbnQKKzI4Nzg0IGI1MjlhYzJmOWFiNjRiOTBiZDAxNTNhZGI5MzI4NGU5MWI3ZTVmOWMgbGVnYWN5LXRydW5rCisyODc4NSA0OWEzZWJlOWRmMTQ3NjY1NTNhMTExZTdmNDVkYTMxYTNlOTc1YWJmIHJlbGVhc2UyMi1tYWludAorMjg3ODYgNmVhODk4N2M3NDZmYjU1ZTc2OTQwZTkxZTBjNzM3NTJkZTE3NjNkNSByZWxlYXNlMjItbWFpbnQKKzI4Nzg3IDI3ZmY2OTRjOGMwNTBiNDVmMWE5N2M5OTQwMzdiZDg1Y2NmYTgxNzggbGVnYWN5LXRydW5rCisyODc4OCAzYWVjYTZjNTBmMzgwMGNhZThiNTI5ZWJmZjhhY2VmZTZjMzE4NDA3IHJlbGVhc2UyMi1tYWludAorMjg3ODkgODAyNTgzZjg4YWUwZDgyNTkyOWZmZDFhNWEwMWNiZmIzZjM4Y2EyOSBsZWdhY3ktdHJ1bmsKKzI4NzkwIGM4Y2I4OTc5MDYyY2U3ZDYxNmI0NjFhMDUxYmQ5MjVjY2FjOTUzZWIgbGVnYWN5LXRydW5rCisyODc5MSAwZWI4ODIwNjhhN2NlZTM2YmYxYzkyOWIyMDM2OTY5NGY5YTBhMDNmIGxlZ2FjeS10cnVuaworMjg3OTIgODY2MjBhZmIyMjEyNGJkYjE1ZDg4YTBhNGI2NDFjYTAzZGI4MmY5NSBsZWdhY3ktdHJ1bmsKKzI4NzkzIDZkZWM3NGY0NDI0MjA5ZGYzYTg5NTlhOTBkODAxZmYyZGU5NTE0NGUgbGVnYWN5LXRydW5rCisyODc5NCAzN2ZjNmE4M2ExMzRlYTcyZDk1ZDYwNGE2NDBmNDg0ODFjZDQwYzA4IHJlbGVhc2UyMi1tYWludAorMjg3OTUgNTg2ZmEyNDQ1OTgyNDczMmI0NWNkY2FkNDk4NDFiNDNiZTVmNjExZCByZWxlYXNlMjItbWFpbnQKKzI4Nzk2IGM0M2M0MjgzOTAxMThlMTU0MzhjZDIwYzEyOTM3YWNhNWM0ZmY3MTcgcmVsZWFzZTIyLW1haW50CisyODc5NyBlN2RiMWM5YTEwZmNiODcxMTIyODZmOGVhYTg2MDAzMWUwMTY4YjhkIHJlbGVhc2UyMi1tYWludAorMjg3OTggMDMzYWRjYmI0Y2IyYTc0NGE5YjM0MjU3NGFhNWZhNWNkNjVlOTUzOSBsZWdhY3ktdHJ1bmsKKzI4Nzk5IDJiYTgwYTQzMTJmZjUwMjA3YjUyM2I3NzY1NTlmYjc1MzNiZWUzOGUgcmVsZWFzZTIyLW1haW50CisyODgwMCA4NWFiNDY1MGRmYWE2YTQzMTJmYzdjNTk2ODliZmZiMjFiODM1NWQ4IHJlbGVhc2UyMi1tYWludAorMjg4MDEgOTZlMmVmZmVjOTRkMWJlYTU5MGE2MzcwNDQ3NjlmN2U1ZDk3ZjYyYSByZWxlYXNlMjItbWFpbnQKKzI4ODAyIDk4OGY0MjVkMTc2NjVlN2RjY2U1MDIwZmI5NDIxNTgxN2Q0Mzk5ODEgcmVsZWFzZTIyLW1haW50CisyODgwMyA0NjE3MGU1NjBlMDFlMThjN2QyYTgzOTM0ZDAxNWY4NzkxZDZhMjQ5IHJlbGVhc2UyMi1tYWludAorMjg4MDQgMWY5ZTk3OTgzMDJiZmZjMGIxNzFiOGFhYjg0MDEyODc3YWNiMWRjYSByZWxlYXNlMjItbWFpbnQKKzI4ODA1IDBmYmI3NmI1MDc0YjdlOTFmZjRjY2RiMmI0ZDM1MGViZmUxNTJhOWEgcmVsZWFzZTIyLW1haW50CisyODgwNiAzZjUwNDEyOTU0NDhjODZiZTViOWIwNjc4Yzg4OTgzM2Y1MmViN2FiIHJlbGVhc2UyMi1tYWludAorMjg4MDcgNTI1NWI0NWZkZGMyNTlhYjc4YjFkODJkOWRmZmY5MjNkYWYyNzNmZiBsZWdhY3ktdHJ1bmsKKzI4ODA4IGYzYzNlNzMyZDEyZTY5NGJlMWNjZjQ1MDJiZTNjMzc3N2RlY2ZiZTEgbGVnYWN5LXRydW5rCisyODgwOSA1MjQyMGZlNjdjOTY5MDA0N2RhM2M4MDk3OTExODI1ZWUzNDVhZTNmIGxlZ2FjeS10cnVuaworMjg4MTAgYzYzMTIzNjBjODYxNzFmZGNhOWVkMjI3ZDBlZjA3MzYxNzdmODk2YyByZWxlYXNlMjItbWFpbnQKKzI4ODExIDM3ZDg4YjQyZWQxMWE4YTA5MjM3OWRjOGMzMmY2ZTI3ZjE2YTI2MWYgcmVsZWFzZTIyLW1haW50CisyODgxMiA2NTEzNDY2YmI3NzQ3YTA3MzRmOWZmYzdhMjc1Y2IyYjg2NjdlYWFiIHJlbGVhc2UyMi1tYWludAorMjg4MTMgMGI2OGQ4MTBhOGJlY2YyYjg3Nzk4YzQyMDE0NDYzZDkzY2FkNzMyYiByZWxlYXNlMjItbWFpbnQKKzI4ODE0IDlkZDIxYzFmYWQ5YTQwMDcwMzAwOTExNGQwOTc4ZDk4YTI2N2RmOWQgcmVsZWFzZTIyLW1haW50CisyODgxNSA3ODZlMGU5YTVmN2Y5MjgyN2UyZDU3ZGNlMWVlYjBjMWFhODU3OTAwIHJlbGVhc2UyMi1tYWludAorMjg4MTYgMTE2YjA4NThkNGIwYmRiMDI0NGRmNGRhMzJhMTEzMzgzYTIxZmQ3ZCByZWxlYXNlMjItbWFpbnQKKzI4ODE3IDY1MWFiY2Y2M2ZlMTNkM2UyNmYwODgzODg3MGNjMTYwODIwODYwYTIgcmVsZWFzZTIyLW1haW50CisyODgxOCAyYmZlNDRjNGRhY2JmMzc4ZDQyODU5NjZlMDAyZmM3OGRmMmQ5YTIyIHJlbGVhc2UyMi1tYWludAorMjg4MTkgY2FhM2EyZmM2YTIwODY1OWRiMTU4MjAzODE0MTg0YTdlYjY1NmFjZSBsZWdhY3ktdHJ1bmsKKzI4ODIwIGMwNjZkYzNlYTE1MjE2OThlNmMwY2JiYTQzNWRhY2NlNWRhNjkzNDUgcmVsZWFzZTIyLW1haW50CisyODgyMSBlODRkMzI0YWM2NmE0ODg2NWM0OGZjMjJmODc4Yjg5NzllNDFiYmIxIHJlbGVhc2UyMi1tYWludAorMjg4MjIgNGRmMGU2OTFmNGRhZTg2YjA3Y2VlZDI1MzM4ZmZmMWY1OGNiZGQxMyBsZWdhY3ktdHJ1bmsKKzI4ODIzIDJkY2JiYmIwMDdjMmFiNzdjMGRlZTk5YWQ1OWY2YzBjYmE0OTE0YjEgcmVsZWFzZTIyLW1haW50CisyODgyNCA0ZDEwYzMxNzllYWQwZjU2MjgxMzYwNWVjM2IzMjhhN2YzNzYzYmRmIHJlbGVhc2UyMi1tYWludAorMjg4MjUgZmJjODIwZDcwMWJjYTk4Y2JjNDA0ZmZmYWE1MDQ5M2I4MzMxNzVkOCByZWxlYXNlMjItbWFpbnQKKzI4ODI2IDVlNGU4YzFhYjcwNDAwMTMxMmUwNzkyMWEwYTBmNDEzN2IyNjAxMzYgcmVsZWFzZTIyLW1haW50CisyODgyNyA0ZGY4MDdhZGZmODczZDUwYjEzYWEzYzliZTM3YjQ4MGJhNWM2MWM5IHJlbGVhc2UyMi1tYWludAorMjg4MjggMTA3NjdhOGMyZTJkNjVjZDllMzViMjFiMDI0MTlmYTMxZTE1NTA5NCByZWxlYXNlMjItbWFpbnQKKzI4ODI5IDBjNDRmYTA0ZjUzMzVlZmRkOGUzMzAyZjhmZDFlYTNiNDJhZDI0MzAgcmVsZWFzZTIyLW1haW50CisyODgzMCBlNTM3ODdiMWFkODU4MTgwNmMyNWVhNmFjNGFiODk4YTEwMDgyODgwIHJlbGVhc2UyMi1tYWludAorMjg4MzEgNzI1Zjg3NTk3YWQ5ZTI3Y2M0NzhiMWVlMjUxZDY4YTM0MGQ3Zjg1YyByZWxlYXNlMjItbWFpbnQKKzI4ODMyIGU4ODkxZTY5NTJlYjYwMTVjYzA2MDA4ZmRjN2I3MDdlN2ZjNjg2YjcgcmVsZWFzZTIyLW1haW50CisyODgzMyA0NjJjMzViOWFjMWZhNGE0NjI1YzAxZTdhOTNjODY2YTQzYTA0MzYyIHJlbGVhc2UyMi1tYWludAorMjg4MzQgODBjZTM4NGQ0MDhhNmY5ZTk0NmUzOWIyOTE1ZWExMzdkNWNhY2E3OSByZWxlYXNlMjItbWFpbnQKKzI4ODM1IDkxMTEwNzgyOTkwM2I4YWUzMGI3MjMwN2Q1OTM4NDE3YTVkYTk2MjcgbGVnYWN5LXRydW5rCisyODgzNiBlNWUwNTdhNmQyODFmMzE1ZmQyYTcwOTQ2MWQyZTFhNmYwZmNjMDNkIHJlbGVhc2UyMi1tYWludAorMjg4MzcgZGUyMWU5M2JhZGY2MzY1ODMzYzZmNzkzZWE0ZTZiYTgwMjZjZjFmOSByZWxlYXNlMjItbWFpbnQKKzI4ODM4IDc5MjlkNzU2NmE5NDI4OTE5NzgwMTQ5YTliZjQ4YTY1NjcyOWJjZmEgcmVsZWFzZTIyLW1haW50CisyODgzOSBiYjIwMzNjOGI5MmZkZGM0MTllM2YxOWIyN2QwODZkN2M0Y2VjNjRlIHJlbGVhc2UyMi1tYWludAorMjg4NDAgZjU1OWU5N2E0MWJlNGQwYjQ2ZDk3YWYxZTc1OGVjZjQ2NmNkOTRlMiBsZWdhY3ktdHJ1bmsKKzI4ODQxIDMwYmY1NTQ5MWU3OWVkZDk2OThhZDM4YzlhNDNiMjVmMTU4MjcxNmMgcmVsZWFzZTIyLW1haW50CisyODg0MiA5Y2E2MDlmOGJkZjIyNjE3YzQ3ODZjZGU3MzMwNjNjMGJhN2I2YjE5IGxlZ2FjeS10cnVuaworMjg4NDMgODhkMGY2ZDZiMDNlYzFiYTU5ZjBiMjAzMTQzY2E0ZDUyZTFlZTFkYSByZWxlYXNlMjItbWFpbnQKKzI4ODQ0IGI0NmM3ZGEwNjQxMGU3MWY5N2M0OTc3M2EyZGU3ZjMzNzcwN2Y0NTQgcmVsZWFzZTIyLW1haW50CisyODg0NSBkYzMxNjY4YTdjMDlkY2JiMTU3Mjc5M2RlM2NjYWYwZTkyN2IzZGZjIGxlZ2FjeS10cnVuaworMjg4NDYgOTc0MjRiOTlkZjkxYzU4ZjIxNTE2MzUwMTcxMjMyNTIxMjBjMTcyOSBsZWdhY3ktdHJ1bmsKKzI4ODQ3IGQ0ZmY5ODQxNDE3YWUwNmYyNTJmMzllZTMyNmNmZjM4Y2IzOTg3NWYgbGVnYWN5LXRydW5rCisyODg0OCAwMjI2ZjE2NTZkODE1MWY3OGFmZDkzNDhiOGZmNjcyMjRhOGYzZDFjIHJlbGVhc2UyMi1tYWludAorMjg4NDkgNzEwMzU0ODMzYmQxOTgwOThmNTY2YWU0NTBmZTRkODUxOTlmMDBiMyByZWxlYXNlMjItbWFpbnQKKzI4ODUwIDUxY2RmNDcwZjk3NDQwOWY1YjAxN2JiZjFlNmFkM2I0MmNjMjBmMmUgcmVsZWFzZTIyLW1haW50CisyODg1MSA3NWM0YTY3ZGNiOGMzNjAzMjFhYmI1MWZjNmI0Mjg1MGM5OWY2Mjg4IGxlZ2FjeS10cnVuaworMjg4NTIgNDEwZjZlYWJiYzBiODg0NGEwYTFmMjBmZjRjMWNjYWFhOGQ4NzkwNiByZWxlYXNlMjItbWFpbnQKKzI4ODUzIDZmYzBiNzE2YzAzODlhMDhkMzcxZTI0MmYwOTQ0N2M0YjE5MmQ2NjYgcmVsZWFzZTIyLW1haW50CisyODg1NCA0MDgwMWRmODU5MTIxYTRlNjBhMDk3OGY2NDE4MjQ3NDZkYzg4YmVlIHJlbGVhc2UyMi1tYWludAorMjg4NTUgYjQ4YTIzNmI4YzdiNzdkODEwYmE4MDViNDY0YjM0YmI0OTNjMjBjZiBsZWdhY3ktdHJ1bmsKKzI4ODU2IGQ5MzVhMWQ3MDIzMGI5MThmZTYyZTlmMDg4ODg1MjI1MTkxYmRiNDEgbGVnYWN5LXRydW5rCisyODg1NyA0ZDdlOWU0MGQzZTRhYzk4MjcxZmQyZjRmZTZkMjMwYzI2ZGUyYjViIHJlbGVhc2UyMi1tYWludAorMjg4NTggZDJkYmVhMTdmYzZmZThjMGQwNjk4M2Y5ZDE5NTY0MDRiMTE2MjgwNyBsZWdhY3ktdHJ1bmsKKzI4ODU5IDk0MzE1YTk3YjM5ZTY2ZWNjNWMxNTAyZTUzNDE4ZDJkZWVlYzc2MWEgcmVsZWFzZTIyLW1haW50CisyODg2MCA3ZDBjNGQ3ZTBhOGM3MTkxZDJiODk4ZTY2ZGM3MGNlYTcyZjE0YzY2IHJlbGVhc2UyMi1tYWludAorMjg4NjEgNDVhMjE0ZjFiZjBiNDU0YWZmOTNjODc3MDlhYTIxMDVjOTk2ZGMzNyByZWxlYXNlMjItbWFpbnQKKzI4ODYyIDgzMjA4NGEzMDI4MDk2YzM3ZTBlZWY3OGY1ZjJhOWE1OTFmYzg3ZjUgbGVnYWN5LXRydW5rCisyODg2MyAwNDg5NjhjYTI2NjhkNDIzNTIyNTA1MjBiNWQ3ZDU3N2E3YmNjMmZjIHJlbGVhc2UyMi1tYWludAorMjg4NjQgMjUzZTM5N2RmNjdiMWUzNzQzZjkxY2U2OTNmNDA3ZWEzMDQ4ZGViMiBsZWdhY3ktdHJ1bmsKKzI4ODY1IDBhMDk1YTI1NzQyNDUwMDM5MmRjZGNhZjc0ZTNmNzZmZmM4MDAyMTEgcmVsZWFzZTIyLW1haW50CisyODg2NiAxODQ5ZTIzNTUyZGZiYzFlMTZhOWMzOGZlZWY5NGMwZGZlNDZkYTZiIGxlZ2FjeS10cnVuaworMjg4NjcgNTZjYjkyZGJiYWFmYzA1YmRlZWMxMDM0MzUzZGIzNmU2MTg5NGJkMCBsZWdhY3ktdHJ1bmsKKzI4ODY4IGFhMzA0OGViZDE5YTBhNWE2ZDg0OTA4ZjNhMTg0NDMzNmJhYzhmNjcgcmVsZWFzZTIyLW1haW50CisyODg2OSBmNzQ5ZDUwZGNjZGM1ZWJmZTUwNDlhOTJhNDEzYjVjMzdlZmJmMGYwIHJlbGVhc2UyMi1tYWludAorMjg4NzAgOTFiNGY3YWJlYmE4ZDU1MmNiMjJiOWIwZmUwYWViNGRlZTViNWRhYSByZWxlYXNlMjItbWFpbnQKKzI4ODcxIGZiMGY3Y2M1YTY5ZjZiZjRhNTZmYTg5N2NkODNhMmJhMDM4MGZjMDIgbGVnYWN5LXRydW5rCisyODg3MiA2MjM3YmUyN2E1OTczNWJmNmU3MDIxNmUwZTk0ZmJjYWM3NDY3YjE0IGxlZ2FjeS10cnVuaworMjg4NzMgNTU0Zjk3NTA3M2EwMzgwZWY3MTg5NWM2YmE4YjhkN2QzMjAyYjU5YyByZWxlYXNlMjItbWFpbnQKKzI4ODc0IDI5ZjYxNjBlYzBiZDkzYzgwOWE0MzRlYzIyNGJkM2YxM2M0MjBiZmMgbGVnYWN5LXRydW5rCisyODg3NSBmZTYyMTFiZjkwYmI4ZjU0OThkNjk2ZTI3MjAxZmQ5ZGJiNGQ4NTYwIHJlbGVhc2UyMi1tYWludAorMjg4NzYgYzZmMzA3MmQ1OTVkNTRmNTEzMTI3NmFjZDY4NmE5MzYwOWVlZjU4ZCBsZWdhY3ktdHJ1bmsKKzI4ODc3IGViMjUyYjM3NGVjZmM4NWU2Yjc3MmVkZWIyNTg5MTgyYmJmN2ZmYTAgcmVsZWFzZTIyLW1haW50CisyODg3OCAxZjliM2NiNjZlMDk4ZTAzYzRkYWEyMmZlYmY4N2U1ZTlhZDNjN2NjIGxlZ2FjeS10cnVuaworMjg4NzkgMTEwODhjNTM0NjdhMTc2OGQ2YWI5YjQ0NmQyMjg4M2VhYTk3OTVjMSByZWxlYXNlMjItbWFpbnQKKzI4ODgwIDcyZDU2YjQ0NjBjYjlkZjNjYTUxOWQ3NTEzMTAwYWNjYjRiZWU0YWYgbGVnYWN5LXRydW5rCisyODg4MSBiNjI1MTRjMjE3NjI5ZTIwM2U0M2E2Y2U2ZmIzZTJiZTNiZWRmM2ViIGxlZ2FjeS10cnVuaworMjg4ODIgM2MzYjg5NDZkYzYzYzVkYjY5MjhhNWNjNzY3MTA1YjcwYjkyMjQ4MyBsZWdhY3ktdHJ1bmsKKzI4ODgzIDBjNzc5NDkyY2Q4MDc3ODg5ZjkzNTcxZjJkZTlkYzZhN2NmZDY0MDAgcmVsZWFzZTIyLW1haW50CisyODg4NCA4NTQ1MzRjNjA3YTE2Y2Q0ZGZhOTQwNWI1MzYwMzMwMTY5YWY3ZGYyIGxlZ2FjeS10cnVuaworMjg4ODUgZGZiNzRkNjExODNkNzM3ODkwMjA5ZmMzZGFjMDU2ZDU5MTU4NGQzZSByZWxlYXNlMjItbWFpbnQKKzI4ODg2IGNkODM3ZWNiMWQ3MDk1M2U1YTVhYTg2OGFlY2IyOThkZTlhMGZmNGYgcmVsZWFzZTIyLW1haW50CisyODg4NyBiZGUwZDI2MjZiMjA1ZGNiMzg2NTFhNDhmZTI5OTJmOTk2OGJmNmQzIHJlbGVhc2UyMi1tYWludAorMjg4ODggZDMyNTg4Yzg4NjMzMjk0NjhjYzRmNmQ5OTc1OGNiZDVlOTkwM2M0NCBsZWdhY3ktdHJ1bmsKKzI4ODg5IDg5ODMwNGY2ZGEyM2I1Yzk3MTVjNWMwZmJjYTY3YTAwNTE1MWY4OWIgcmVsZWFzZTIyLW1haW50CisyODg5MCBiNjExMjMyNzEyNGI0NmEyNzQxZWUwNWVmNWQ0NjY5NGZlNzFiOGI0IGxlZ2FjeS10cnVuaworMjg4OTEgYWEzMWM2OGRhODRkZjZmMjhkNzdlZGVmOGIyZTdkNjc0ZDU2N2M2ZCByZWxlYXNlMjItbWFpbnQKKzI4ODkyIGRiNWYxZGI3YjM0ZTE4YzRiYTZiNTdmN2UzMDVmNjcyN2VmMjRjZDggbGVnYWN5LXRydW5rCisyODg5MyA5YmEwMTExMzg4MzE4YTRjM2JmMGJlZjY4NGY2NTVhYzA0ODUwNWE4IHJlbGVhc2UyMi1tYWludAorMjg4OTQgZThjZGVhNDRmN2FiY2VjNmExNTgzNjU4ZDQyMTU4ODJiMWM3NGUyZiBsZWdhY3ktdHJ1bmsKKzI4ODk1IDZhMmRmNDRiOGJmZDQ5NmZhZTA3NTFlOWIwZjAzYjljNDcyY2FlYzAgbGVnYWN5LXRydW5rCisyODg5NiA3Y2Q2ZjU0OTA3NThjNjNiNjE2ODMwNzY5ZjVkNjFjN2IzMzlmYjIzIGxlZ2FjeS10cnVuaworMjg4OTcgZjgxODBhNzRiMGZhNWM2ZWM3NWI1ZDYzNDAyZjhkNzc1ODdmZjJiZCByZWxlYXNlMjItbWFpbnQKKzI4ODk4IDA1ZmZlMjAxZTkwMmQ4MGY4ODcwM2EwM2E3YjMyMjc3Y2IzNjgyOTMgcmVsZWFzZTIyLW1haW50CisyODg5OSAyZWI0ZWVkNTM4YzZkM2VmZDVkYTJjNWY1MDFkZmMxYjNlODJlOGRjIGxlZ2FjeS10cnVuaworMjg5MDAgZDBhYWQ1MTllNzEzMGRhM2QwMTIyYmMyM2QyYjJiN2M0MTkyNTFkNiByZWxlYXNlMjItbWFpbnQKKzI4OTAxIDRkMzY3ODcyZmNjNjY1YmZjMjRmZTZhYzE5ZTk1M2ZmZjk5ZGNiNmEgbGVnYWN5LXRydW5rCisyODkwMiA3NmNjZDViZjlmZjI2MjlmZTQzYjE1NDQ1MmQ2M2NlMDVlYzY1MGQ2IHJlbGVhc2UyMi1tYWludAorMjg5MDMgNDFlYjI0Yjc0N2MwMmNkY2Y1YTkwMmIwZWM2MDI4ZmU1NDg2ZDBkNCBsZWdhY3ktdHJ1bmsKKzI4OTA0IGRjYWZkOTljODViNjhhODgzMDczOTEyOTQ1MTBhODI4YWI1NWU4YWQgbGVnYWN5LXRydW5rCisyODkwNSBhNzcyNTRjYmQ0ZjA2YjFlODI1Yjk1YTVhYmI5NjA2ZGM1NzI1ZjRkIHJlbGVhc2UyMi1tYWludAorMjg5MDYgZDA3ZjhkYjNkYjQxZTRiOTQ5NzgyYTYwY2JkMzczMzM4MTUzNWQ2NiBsZWdhY3ktdHJ1bmsKKzI4OTA3IGI1YTlhYWM0YjEwZmZmNzgzYzk0NGU4OGU4MjNlMDRlYzc4NzE4MjMgbGVnYWN5LXRydW5rCisyODkwOCAwOTU1MWM2ZGEyOTlmODE4Y2I5ZmRmZjcxZDJiODZiYzE4NGJlMmE2IGxlZ2FjeS10cnVuaworMjg5MDkgMTZlNjYxOTcwOTMwNzBjODg3NmI2ZWU3OTU5NjBmNTA4NTAyNjdhMCBsZWdhY3ktdHJ1bmsKKzI4OTEwIDFkOTFlZGZkNzVmMmI0NWQ2ZTRlODljM2FlN2RmYWU2NGYxMjcxNTUgcmVsZWFzZTIyLW1haW50CisyODkxMSA0ZGE4YTRkZTA3YzIzM2QwN2IzZGMwN2YwMDQ1NjE5NGEyZDM2MWQ1IGFzdC1icmFuY2gKKzI4OTEyIDI4MzBmOTYxNDI5NDA1ZmNjYWU3ODE1NzVlNzA5MDgwMTY0Yzg1ZGIgYXN0LWJyYW5jaAorMjg5MTMgZDhmNDk4MGI5NjVjZWJhMDFhOTI0ODlhMzJkOWEyMDI1Zjk4YjhiYiBhc3QtYnJhbmNoCisyODkxNCBkZmY0OGM0MTc5ODAyMTRkZTViNjEyODNkYWI2ZGY5NDJjN2RhMGU5IGxlZ2FjeS10cnVuaworMjg5MTUgOTY5NjBkNjczOWUwOTcyYzllZjBmZTlhOWMyM2M5MTUxMzg3ZDFjMyBsZWdhY3ktdHJ1bmsKKzI4OTE2IDFmMmIxZTY4NDg1MDM2YjgzNDNkODg2NGM3OTE1YmRiMDhhZTRiNGMgbGVnYWN5LXRydW5rCisyODkxNyA3ODQzYjUzMDA5ZDA2OTIyOWVjOGU2MzdhZGU3OGE1Mzk0OGE4ODQ0IGxlZ2FjeS10cnVuaworMjg5MTggYjY4NmRkYjI1YzY5YjRiNjYxZWUzMGRkNDdiZmQ5OTYyYmQyNGE2ZSBsZWdhY3ktdHJ1bmsKKzI4OTE5IDU1ZjA5MGIzOGI4OGQzOGYzMzgzZjZkYTdmOWRmOWE1OTBmMzVkMGMgbGVnYWN5LXRydW5rCisyODkyMCAwZmJiZTc5YjRlZGI1YjBhNGViZDU5MTNjZGY0OGMyMjQ1ZTJlZGY0IGxlZ2FjeS10cnVuaworMjg5MjEgMThlNjc5YmUyMTE5MzY4OWE3ZDYzMmY2MmM0MjQ5Nzk2ZWZhODliMiBsZWdhY3ktdHJ1bmsKKzI4OTIyIDhhNmVlYjBjNzkzNDE0NGU2ZTZiZWU3NDE3ZjY4NzE4MDhmYTc5ZmMgbGVnYWN5LXRydW5rCisyODkyMyAyYTc2M2U3YjdkZWJkMDdkY2M1YmRhYzQ3NTY1MTNjNDdlMzM0OGNmIGxlZ2FjeS10cnVuaworMjg5MjQgMjU2NTRiODExNjE2YjBmMDU3YWU5MGVmMWM2M2JmNjc3MjVlZDkwOCBsZWdhY3ktdHJ1bmsKKzI4OTI1IDU3ZWMxNjQzMTg4YzkwMzFmY2E2NWNlZWI4YWE1M2E4MzdiOWRmOWYgbGVnYWN5LXRydW5rCisyODkyNiBlMmY2NWE0OWNhMzQzZTE5MTVlNmY2NzI4NzVmMTRlMzYzMWMzMjExIGxlZ2FjeS10cnVuaworMjg5MjcgN2QyNjliYzEyNTg3ZGQ1NzM3MzFlMTI2NWE2Yzk5MDczNmVjZDcxYiBsZWdhY3ktdHJ1bmsKKzI4OTI4IDhjOTU0ODYzMDFiM2Y3NDljNmNjNThjODlhNTBmZjZjNmEyY2E1MTIgbGVnYWN5LXRydW5rCisyODkyOSBiYmY4Y2Y1ZWU5Zjk0MjI4NGViNjkzZGMzOTEwNjdlOWRiMGYxNzY2IGxlZ2FjeS10cnVuaworMjg5MzAgOWQ1MGJjODMxYmNhMDRjNmI2YjkxNmNmNGMzYzM0ODRhZDI0MWRkMiBsZWdhY3ktdHJ1bmsKKzI4OTMxIDIxNDQ0YmRjYjA5YzA0ODkxZDA2ODdlZmU2OWMxOTczN2Q2NzkyNGUgbGVnYWN5LXRydW5rCisyODkzMiA4MGY2NzM4NWY1OTlkYzE3MzNhMTc5ZDkxODViMjA5OTExYWNiMmNiIHJlbGVhc2UyMi1tYWludAorMjg5MzMgZmM1MzRkMWM5YzI4Mzk2N2ExYTkxODc1YzJkYzVjMDU3MWQ5YWQxMSByZWxlYXNlMjItbWFpbnQKKzI4OTM0IGNhYzFiMDM0YjkwMzc2YmE5ZGJjZjM4ZWVhMDY4MWQzMjM2MGE0ZjEgcmVsZWFzZTIyLW1haW50CisyODkzNSBlNDc1MmYzMTYwNTNmYTM2OGJmYTBjOThlMDM2MGVmMGM5MjhjM2FhIHJlbGVhc2UyMi1tYWludAorMjg5MzYgY2U3YmJmM2Q5NDkzNTIxMzI4NjIwMTQwMzYxYjFlODVkM2I2ODQ5MSBsZWdhY3ktdHJ1bmsKKzI4OTM3IDg3N2EzOTE0ZGYyMjQzODRjNjk0MDdkMGNhY2I3MDczYjU2YjFhYTggcmVsZWFzZTIyLW1haW50CisyODkzOCA3NjZiZmM5M2VjYmE2NmI2ZDY2ZDI2NDM4MDgzZjk2NzY0Y2EzYjdiIHJlbGVhc2UyMi1tYWludAorMjg5MzkgNzViMDhlNmU5N2M2MGQ2ZWIxZWRlNzlmZTEzMjdhMjk5NDliZjBkNiByZWxlYXNlMjItbWFpbnQKKzI4OTQwIDIwZDdhNTQ1NTkwNzgzYjQ3NzYzN2Q5YjViYTczMjAyNGU4ZDQ4YzggbGVnYWN5LXRydW5rCisyODk0MSA2ZDU4NzE1NDMwYTdiYjgwNDRkNWZiY2FkNmUzOWRhMjUzNGY1M2JjIGxlZ2FjeS10cnVuaworMjg5NDIgMmFjN2IwOTY0YzdiYTk3NjczMzlhYzFhMjBhYmVlMjE0ZTc3YjMzZCBsZWdhY3ktdHJ1bmsKKzI4OTQzIDRlMDVhYWI2MGJkZmFhNWZjN2M0YTE5MTMzZjNlYjQ1NmZjOTJhNDEgbGVnYWN5LXRydW5rCisyODk0NCBjM2VlYWFmZTYyNjVlM2I0NWI0OGM4MDM5N2Y3OGI5MTBmZjM1MTA2IGxlZ2FjeS10cnVuaworMjg5NDUgNWY1ZmQyYzRmY2YyMjdlOGEzNzBhYzEwYjEwYWFlODczMWQ4MjlmOSByZWxlYXNlMjItbWFpbnQKKzI4OTQ2IGQwZTU3NDMyNmQxOGIzYjM4YmFjMmYyMzRhYTI0NDhiZjM5N2M4YmUgcmVsZWFzZTIyLW1haW50CisyODk0NyBiNTI2ZTEyYjk0MWI3ZmRiNmVhMTFlM2VhMGRmMDRlMmIwMDIxMGY3IGxlZ2FjeS10cnVuaworMjg5NDggYzU3Mzg0OGM3NWMzMzJhYmE5YjdjMjAxMzlmMmY2ZmU5ZTFkMDNjZiBsZWdhY3ktdHJ1bmsKKzI4OTQ5IDBhYTY0ZWViZDQ5MzJjZjljNjUzMTZkMWFhNzFkYjIzOTRlMjg4MzUgbGVnYWN5LXRydW5rCisyODk1MCBkZWE2MTliNTg4MmQwYzk2NDVlY2Y3ZmZiMzUzNDcwNGZhZjcwODgxIGFzdC1icmFuY2gKKzI4OTUxIDE5NTgzM2EzZjEwZGFmMGQyYjcyM2QxYTk3MjBmODY4Mzg1MzI4MjIgYXN0LWJyYW5jaAorMjg5NTIgYzQ2MjhkOWFjYzlhMTU3MGQ1MDRkYWQ4ZTkxMDQ2MmI1Y2NkM2JjYyBsZWdhY3ktdHJ1bmsKKzI4OTUzIGRiOWZlZTM3M2IzMDNiMDBkYjhlYzk5YWFiZjQ2ODRjMGIxZDJhMGEgbGVnYWN5LXRydW5rCisyODk1NCA3NDI5ZjIyNDczY2M3YzA0YzQzZDk2Mzg2M2ZjODdmYmFlZTkzM2Q5IGFzdC1icmFuY2gKKzI4OTU1IDU2ZGQ4NmI0Y2I4Nzc3ZTE3ZjM1NWIzOTJhYzhhMjQ0ZGRiZTJiY2MgbGVnYWN5LXRydW5rCisyODk1NiAyYzk4ZWIxYzMxNjJkOGZkZGQ1NzFhODQ5Y2ExNTBkNDI5ZjJhNTFhIGFzdC1icmFuY2gKKzI4OTU3IDI3ZjgzNTUxOWE1ZTdkZWJlODdlMzc5NjE5ZjVhZTc1ZWFhMjlkNzUgbGVnYWN5LXRydW5rCisyODk1OCA5MTY3NDkwYjBkZTk0YmMyMzBjNWRhZGY5ZDZlNWU4NzZiMGU4OThkIGxlZ2FjeS10cnVuaworMjg5NTkgMmJjMmUwMmZkNmRkMTJkYjQ1ZWUyNDRiZjI2ZDBkOTU4NzJiZjVjOSBhc3QtYnJhbmNoCisyODk2MCA0NTU3N2UxODU2ZDBlOTM4NjQ5Y2ZkNDI0YWFmYTZkYTRiNmIwMzQ0IGFzdC1icmFuY2gKKzI4OTYxIDdmZDJkYTIwMTgyM2QxY2U3ZGRjNTYwOTNkMDMwYjNiZmViOGUxYjQgYXN0LWJyYW5jaAorMjg5NjIgMjRjNWExYzg3ZjNiZjEyMjllNTA2Zjg3NTkzZDRjMWIxMzg1NTk1NyBsZWdhY3ktdHJ1bmsKKzI4OTYzIDY2OTRmMGNjZjhlYTRiZTc1Njc0ZjE1NzIwYmMzNDYyZTYwMDRmNmEgbGVnYWN5LXRydW5rCisyODk2NCBiYzA5Nzg0NTlmZmI3ODBjZjM4MzZkNDdkNzQ0YTVmNWY2MzczZjhhIGxlZ2FjeS10cnVuaworMjg5NjUgYjNhOThlZWEzNGM4NDFjMjNmOGM3MzY0ZWFjYmYwYjA0YWNkNTIyMyBsZWdhY3ktdHJ1bmsKKzI4OTY2IDJkODBiZjY1Y2QwOTc5ZDkwMmE0MzdjYTQyYTg3YTNmYmI1NGRjZmUgbGVnYWN5LXRydW5rCisyODk2NyBlMWE3MzI4ODViZTA5NjE1OGU2ZjRmNTBmZDg5MGUyNGQ1YTliYzg2IGxlZ2FjeS10cnVuaworMjg5NjggZDFiNmIyY2E5ZDliODUxZDIzNjQ5MjJjYzAwYzM4YmQ0OGM2YmU0ZCBsZWdhY3ktdHJ1bmsKKzI4OTY5IGQxMjRmYjA4Nzc3ODU1ZGZmMmE3NTc4ZDI5MWM4ODY2YmQ3Njc0ZTkgbGVnYWN5LXRydW5rCisyODk3MCBiZDA0ZTJiZDQzN2ZjNWQzOWRkMmU2Mjc0MGEzOGU5NzFlYmJkODEwIGxlZ2FjeS10cnVuaworMjg5NzEgNTlmODJkOTY2ODJlOWE4MDg1ZGM0ZGQ3ZTEwZGY4MzE1NmYxYmY1YyBsZWdhY3ktdHJ1bmsKKzI4OTcyIDM3N2Q2NGNiNTM0NzBiMDY2MjliZWRkYTEzODA5NDM1N2IzMTRiMzEgbGVnYWN5LXRydW5rCisyODk3MyBkNzIyYmI1MjA1YWQ3MDI5ZGRiMTZmNTA1MmMwYzgxNWZhMWJjY2I3IGxlZ2FjeS10cnVuaworMjg5NzQgNDA1OTRlZjM0YjMwOWM0ZWRlMzExNGM4NzBkYmU0MmExMDk5ODc4ZSBsZWdhY3ktdHJ1bmsKKzI4OTc1IGFlMmYyMzQ4ODJiMjE2ODYzZTI0NzkxMTUyMDQ4NGVkZmFjYjAxYjUgbGVnYWN5LXRydW5rCisyODk3NiBhMzY0N2QxMWNiNzEzNDc5MDlhOTVlZDEwZWUyNGVjYTQ2MDg0ZTQ4IGxlZ2FjeS10cnVuaworMjg5NzcgNThiZmE3ZGRjOTk5YWM5NjQyZWY4ZmE2NjgyYjI2ODE2ZGQ0MzhhMCBsZWdhY3ktdHJ1bmsKKzI4OTc4IGI1ZDA1ZjEwZDBhNWJjMmMzNDg5MTNmMmZlYWJjMTJkMGU1NTVlMGIgbGVnYWN5LXRydW5rCisyODk3OSAxZWE2ZTM1NDc2MTAzODBmODgwNjBlMWM5MDMwZWI4Y2IzZjYxYzlhIGxlZ2FjeS10cnVuaworMjg5ODAgMzBlZTk5YThiMGFlMzVhOWI4Y2IxZjczMjJlMGJlYmJhZGY2MWMzZiBsZWdhY3ktdHJ1bmsKKzI4OTgxIGMxMmE0ZjdhMDBiNzRhZjE5ZjUxMGI1NmU3YWM1NGE2NzBlZDY0YjQgbGVnYWN5LXRydW5rCisyODk4MiAyZTE0MDcwMGZiNmMwYzUzYmFmNDAxMWNlYjZjOTUxYWMzNjUyNTU1IGxlZ2FjeS10cnVuaworMjg5ODMgZDdiYmE3ZWIwZWFkMGM3MTNmMTI3NGQ1ZDhlNWVkYWUwMTgzNWY2MiBsZWdhY3ktdHJ1bmsKKzI4OTg1IDU0MjA5NjlkZGQ3MGJhODViYjJhYTQ1MWU4ZTczMThlMjgzODg1NWUgbGVnYWN5LXRydW5rCisyODk4NiA2MzZjMGY4YjM5ODc5MzY4OTQ0YjI3YWQ0NDM5ODkyOGQyMDI5YTExIGxlZ2FjeS10cnVuaworMjg5ODcgMTk1ZDJmMjU3NmU0MmNhNDg2ZGEzZWM2ZmMxNGYxNTc4YWRiZDRjMiBsZWdhY3ktdHJ1bmsKKzI4OTg4IDExNTczNmRkZWQ3ZDA4Y2U0OGE2YWY1ZTU2OWE1YzdmOWExM2NiODEgYXN0LWJyYW5jaAorMjg5ODkgYjkyMzNlY2Q5ZDQxOTQ3MzIzZjcwMWJjMTBmZDE3NzJlOWViN2I1ZiBhc3QtYnJhbmNoCisyODk5MCA3MGQ5M2I2MjM3MGI3YmJhOTQ5NTJhZDExYjU2ZmRhNDhkMTNkOGE2IGxlZ2FjeS10cnVuaworMjg5OTEgYjk2YjgyNjRkNmFkMmZmZDllMjE4M2U4YWQ0NTA3OTkzMTk2NjYyMCBhc3QtYnJhbmNoCisyODk5MiA5ZTgxNWYyYzBlODRmMDM3NDlmOTIxNDYzODgyZTNiYzZiOWExOGRiIGFzdC1icmFuY2gKKzI4OTkzIDEwOTRjNmUwMzY1ZTViMDU3MGNhODUyYzIyOTJlNWNhNzJmZGVmMjggYXN0LWJyYW5jaAorMjg5OTQgZmU5NWNmYzZlYmE3ZGMzNGQ1NTk1Yzg3MDNjNjQ4MTVjNmZiMjUwMSBhc3QtYnJhbmNoCisyODk5NSA4ZTRjYWJiMmUwMDNkMjliOWE5ZGM2NGE4ZTMyZTJkNmE5ODcxOTQ2IHJlbGVhc2UyMi1tYWludAorMjg5OTYgY2EwMWY0Yjg1ODUzZTQ0YjM2ZjQyNGMxM2E0MzY5NDVkYzY4ODk0ZCBsZWdhY3ktdHJ1bmsKKzI4OTk3IDc1ZTVhMmE3MTcyOTVhYzIwOWQ0NTI2YjdlOTA3Mzc5MGRkMjFhMjkgcmVsZWFzZTIyLW1haW50CisyODk5OCAwODE0OGU5MTZkMzg1MWYyOGI3ZTc5OWY3ZWZlYTVmMjc3YjJlNWNkIGxlZ2FjeS10cnVuaworMjg5OTkgODYxMDY1MjU2NDg3MGE4MzBiOTdjYjRkYzgwZTQwZGVhZWI4NmM5NiBsZWdhY3ktdHJ1bmsKKzI5MDAwIDkzZWY3NDU1NTVkN2MwYjUyMjQ1YzMyYTBmNDcxNjcyYjhjNDQxYTcgbGVnYWN5LXRydW5rCisyOTAwMSA2MWQ2MjRmNWMxMDdhN2U4NzczNWMwNzk2MzZiMGU4MDNlOGVhZGU3IGxlZ2FjeS10cnVuaworMjkwMDIgMmMwZTBmMGRjYTZmNTEyZjQ1ZGYyMmJiNjIyOGE5YTdjZTI1MTVhYiBsZWdhY3ktdHJ1bmsKKzI5MDAzIDVmZTA3Y2Q0YjJiZmQ3MTE0NTIxNDg2NzIyNzRjNDc1MDQyNTFkZWIgbGVnYWN5LXRydW5rCisyOTAwNCAyZGMwZGE1MzcyYjQ3MDJiZTU1ZjI1NDA4ODdkZDI4YjBkMWUxZGNiIHJlbGVhc2UyMi1tYWludAorMjkwMDUgNDdhYTlmYzc0ZGE4Y2Y1MzBmYTBjNGRhZjNhOGU4NTI2YTI1NWI2MSByZWxlYXNlMjItbWFpbnQKKzI5MDA2IDk4ZTU4ZDNjNWZjZmE0ODlmZGNiNDA3Njg4ZDM3YzgzNmUyZmY2YjggbGVnYWN5LXRydW5rCisyOTAwNyBkZmVlYzNiMzRmYWVjMjQ1NWQ0MDU5Y2VmYzRkM2U0MTdkNmUyMjY0IGxlZ2FjeS10cnVuaworMjkwMDggMmZhNTU5ZmI2ZWM1MjI5OWI4NzE3MWU5YjhmMWUxNGRjZDgzYjgyOCBsZWdhY3ktdHJ1bmsKKzI5MDA5IDM3MzFiZTI4ZTFhMzI2NGM4OTRkMmI1YWRjYWJjZWZmOGEyN2VhM2UgbGVnYWN5LXRydW5rCisyOTAxMCBjN2I5ZGE4NTliNTVmODM2NTE4Y2I0YTQxMDdiMzFlZTM3YmY0ODM3IGxlZ2FjeS10cnVuaworMjkwMTEgNjE4MjJkMmI1ZTg4NmE3NWU0NzU2NjU0ZTA5N2U0Mjg1NDFlMmJkMSByZWxlYXNlMjItbWFpbnQKKzI5MDEyIDBlZDgyOTQ3NTcxNzQ4ZDAwNmM3YTlkYWZmMGJmMjc2MDQ0MzBmNjEgbGVnYWN5LXRydW5rCisyOTAxMyAwZTkyODgwNzUzNmMxNmEyMTMzOGQwNDg3NzMzYTQxZTYzN2UyZTFiIGxlZ2FjeS10cnVuaworMjkwMTQgMWRhNWUxN2JmZTYzYTIwODEzNGRkZDM4MDU1ZTU3ZWQ1NTY2NjA2MSBsZWdhY3ktdHJ1bmsKKzI5MDE1IDQxZTFkOGMyMjRkZjJlM2FhZTc4MTU4MjhlMTkyN2Y5MDk5OThlNzEgbGVnYWN5LXRydW5rCisyOTAxNiA1NTUyMzRkNGYwZDAwOTE0YzY4Y2ZhNTg1N2U4MGZkYWFmODY0N2MwIGxlZ2FjeS10cnVuaworMjkwMTcgZjYxZDFkMmI5Y2UzYjIyZGE0YTYyYjJkYTRlOTViOTNlNmY3ZDgyOSByZWxlYXNlMjItbWFpbnQKKzI5MDE4IDM2MTI0MTU3YjMxN2FkYmFiODM1ZmI2Mzk4MTg4ZDZhODhlZWUwYTQgbGVnYWN5LXRydW5rCisyOTAxOSA0ODgyOTVkMWJhMTFlYjIxNjc0NDRjZWFhZTU0OTEyYzFlYjY2N2M5IHJlbGVhc2UyMi1tYWludAorMjkwMjAgOGNiMDc0MGRhMWZkNTk5MmViZWEwNzU3YjVmOGNjYzRkNWM4NzRhOCBsZWdhY3ktdHJ1bmsKKzI5MDIxIGZjNzAyOTA4MTA5MzA2OGY0NzNmYjJhZWY2NDA2NjAxYjYwMWY0YWIgbGVnYWN5LXRydW5rCisyOTAyMiAxNGM0YzgzM2NkYTljYTRlNGVkZDcxZjFiN2JiNjc3OWY5YTk5YzFlIHJlbGVhc2UyMi1tYWludAorMjkwMjMgMTNmYjRkMTZmNjA0MmJhZTAyMzBlMDE3OTY3ODIzZjdkM2MxMDZkNSByZWxlYXNlMjItbWFpbnQKKzI5MDI0IGZiMGNlNzdhMzE4YWJkMzg0MGU1NDA4NmEyY2NmOGMyOTM3NTc4OGUgcmVsZWFzZTIyLW1haW50CisyOTAyNSAwNzA1Y2EyOWFiOTY2ZmQxMzJjNzAyMDY5MDg4MTMwM2U3NzE3MWFhIHJlbGVhc2UyMi1tYWludAorMjkwMjYgNDQ0NDdmMzE1YWU5MTE1ZDlkNGQxZGNhMzU2NTgzMGMzNTljNzA4ZiByZWxlYXNlMjItbWFpbnQKKzI5MDI3IDc3OWJiNmRkZGU0YjhiMjQyNDYwZjc1NjllY2Y2MjQ3ODczNWQxMmUgbGVnYWN5LXRydW5rCisyOTAyOCA2ZGNkMDY2NGIwOWUyY2Q5MjQ1NmMyNGRkNTJlYjE0MWNjOTA3NmZmIHJlbGVhc2UyMi1tYWludAorMjkwMjkgZDA3MjhiNGIwN2MzM2IxN2Q2ZjQwZWMyNzVlMTU4NjUwYjViMDkwZCByZWxlYXNlMjItbWFpbnQKKzI5MDMwIGIxOTkwMmFkMTg1ZmJkOGIzOGRiMjQ0NWUzMjFmODQxYTY0ZGQ4NzUgbGVnYWN5LXRydW5rCisyOTAzMSBiMTFiYzIxNGU0ZjJmNzZkOTlmYjkwYjE0NzUzMzFlOGRmYjc0NzEyIGxlZ2FjeS10cnVuaworMjkwMzIgYzQyYzk4OGIyYjk5Y2E5MGEyZmFjNDA4NGU2ODdkZjc4OTU4ZmY5OSByZWxlYXNlMjItbWFpbnQKKzI5MDMzIGFhZThiOTQzODVkNmI1OGE5YmE1MmRiZjIwYjQyODNlZTA5NDJlNzEgbGVnYWN5LXRydW5rCisyOTAzNCBkZTM3MGU2NTAzZGY2OGEyM2VhODNjMjdhYjEwMWQwMWNmYTdkYWM2IGxlZ2FjeS10cnVuaworMjkwMzUgYzg1ZDdjZGQ5ODNmMzI4NTZiMmE5MDFmNDc0NmEzM2Y0YjA5OTFlNyBsZWdhY3ktdHJ1bmsKKzI5MDM2IDQzNjcxZTAxMTZkNTJmMDUzODEyY2YwMWU2YzY2YTVmYzQ1MjhkZDkgbGVnYWN5LXRydW5rCisyOTAzNyAwMjMxY2M1NGY4N2VhYzQ4NDRhYTY3ZmI4ZGY3ZTZkMjQwODkyNjdmIGxlZ2FjeS10cnVuaworMjkwMzggODI0MTYyZWI3OTc3MzcwZmYwMzg1ODBkYjFiNWE5YzU0YTI1MmY4MiByZWxlYXNlMjItbWFpbnQKKzI5MDM5IGM1YTgxYzNiZGFkYWJjNTc4NjFlZDBkNzdiZDRjNmVlMDE5OGRmZDQgcmVsZWFzZTIyLW1haW50CisyOTA0MCA0MDVhNWI0ZjQ1M2JlYzQ3MDVlMjFiYzk2NTIyMWMyMWIxMTgyZWM1IHJlbGVhc2UyMi1tYWludAorMjkwNDEgNmNjYTYxNGI1ZTAzM2E3OTZmZWNjYzgzZGZmMzI1YWIyMzg5ZDQ2YyByZWxlYXNlMjItbWFpbnQKKzI5MDQyIDEwMGRhYTM2MTk4ZGQ4NThlMzg4YmY1NDMyM2U0MjEzYjI4NTQ4NGMgcmVsZWFzZTIyLW1haW50CisyOTA0MyA4M2Y2NGMwNGYwMDI2OTBmMjdjMmMyNGQyYjAyYmYzYmE4NzU3ZGM5IHJlbGVhc2UyMi1tYWludAorMjkwNDQgMzY3OWM0ZmM2OGJjMDQ4NjZlOWE2MWVjYzRmY2EzOTdkYzUxMWIzMSBsZWdhY3ktdHJ1bmsKKzI5MDQ1IDI3NmI2YzQ1Mjk5OTRjZTM1YWI2NmRiNWNhNzIyM2MwYmI4NjJmMGEgcmVsZWFzZTIyLW1haW50CisyOTA0NiBkNDlmMTY0ZTZhOTc0ZDc0ZjBlZmQxNjQzNTE1NDJmYzgzOTM5NTRmIHJlbGVhc2UyMi1tYWludAorMjkwNDcgYzFhNmY0NGUyNTM0ZDgzYjhmYzRkOGY2OWQ5MWI1MTA5YTBmMjFjMyByZWxlYXNlMjItbWFpbnQKKzI5MDQ4IGE1MjY5NWI3MWU3ZGFiNWNiZmM3NTM3MzUzNjJhYTgxMGQ1ZjE1NGIgcmVsZWFzZTIyLW1haW50CisyOTA0OSBkYWUyMjgyYmM3NmI0MjcyN2QxY2Q4ZmIzMGI5Y2Q2NWFhNjVkY2JiIHJlbGVhc2UyMi1tYWludAorMjkwNTAgYjI4N2JkYWNkZTM5ZmFmMzZjMDI0Y2I4M2ZlNTc2MzY2MjczNTVmZSByZWxlYXNlMjItbWFpbnQKKzI5MDUxIDYwMDM5OTE3MzFhOTkwNmM4Y2NjOTI4NGUzNTZiNThhODU4MDI0YzkgcmVsZWFzZTIyLW1haW50CisyOTA1MiAyMzQ3ZjkwMTg0MzE1M2Q5MzRlYmZlNDNiMzg4ZmI5ODNiZTQ1ZmZmIHJlbGVhc2UyMi1tYWludAorMjkwNTMgNDQ5MmQ3NzMyN2M1ZWUwOWY3M2MwN2FjZjNhNjM1ZjQ0OTBmYmQwNCBsZWdhY3ktdHJ1bmsKKzI5MDU0IDI5MTFlYjM3NzI2NmQ5NzVhOTg4OTAxNGEzMjU3NTAxOTA1M2ViZTkgcmVsZWFzZTIyLW1haW50CisyOTA1NSBiMzI1NjQ4N2FlZTg4ODYzNjRkZmFmMmY5ZTc5Y2Y4ZjliMGViMzk4IHJlbGVhc2UyMi1tYWludAorMjkwNTYgNzc0NzcxYzUwYjE4N2NmNjMxMGZmNmNhNTY1MTU4M2E2OWU0YmViYyBsZWdhY3ktdHJ1bmsKKzI5MDU3IDJhOTQyYTFjNDJlODQ5ZmRjNTRiN2Y5YWZmZjcxY2I4YjEzY2VjMzMgcmVsZWFzZTIyLW1haW50CisyOTA1OCBmZWQ3YzQxY2FhYWVmNTUzMjFlYzJhNjZhMjQyZmFhNGM0M2VmNThiIHJlbGVhc2UyMi1tYWludAorMjkwNTkgYzYyZmI2M2RjZmQxYjUzZDE3OTJkNzA5MTRiZDAyZDczNmYxNDgzMSByZWxlYXNlMjItbWFpbnQKKzI5MDYwIDZiMWQ0NjQzYTBmZDUwZTgwODQ5NmVjYzVkOWMzNzNmZmI2YzUwMDcgcmVsZWFzZTIyLW1haW50CisyOTA2MSBlODRlMDgzNzJlZmExZWM1MDUzYWExYWE4MGU2MzI2MDM0NGI5NjIzIHJlbGVhc2UyMi1tYWludAorMjkwNjIgNTIzZmQ4OTAzNTk4NzhhZGViZDVmYTdlNDI0NDExZDQ5MjdhY2Y0YSByZWxlYXNlMjItbWFpbnQKKzI5MDYzIDFlMzU5ZGNiNGZiM2I3MjI0NGY4N2NlNTA1OTkyYjJjYzI3YWJmNTggcmVsZWFzZTIyLW1haW50CisyOTA2NCAzOTM4ZTlhMDk2ODk0YzZjODY2YWU0NGM4ZDUyNmExOWY2ZDFlZDc3IHJlbGVhc2UyMi1tYWludAorMjkwNjUgODZmNjYwNjEwMDNjMDZjYjk3NDM3ZTA0ZmUzMTNmN2FkZjBjZjkxZSByZWxlYXNlMjItbWFpbnQKKzI5MDY2IGFkMzdiOTNlN2EyZTZmMTM0MTI0ZGUwMWQwMzcwZDg4ZmQ0YTc3MDEgcmVsZWFzZTIyLW1haW50CisyOTA2NyBhNjdiOWExOTUyNjViNWViMGU0MWRkNDU0NmY0ZDUxZTIzYTQ5ODA0IHJlbGVhc2UyMi1tYWludAorMjkwNjggYTZlZGMxYjNmZDU2NjE2YzQ2YjMzZjA1NGEzMWYwNDA4MzAwNGJmOCByZWxlYXNlMjItbWFpbnQKKzI5MDY5IGMxZjdhZjQyYTdmMTc2NzkzNGM3YTY5YTk5Njc1MzEzMDMyYmM5YzEgcmVsZWFzZTIyLW1haW50CisyOTA3MCAxYjg2OTdkNjA1NjhjNDdiNzRiNDQwNzk1ODAzNGZjZWViNGQyZmI1IHJlbGVhc2UyMi1tYWludAorMjkwNzEgMWRhZWFiYjM2MjQ0MzBlZTIyYzcyNDFmODg3MDhiY2I0NTVhYjE2MiBsZWdhY3ktdHJ1bmsKKzI5MDcyIDk3N2ZhMTM1OTA2ZDFhMTRiODQ1YjhlZmI4ZjQwNDcwODM5NDVhMDcgcmVsZWFzZTIyLW1haW50CisyOTA3MyAyODhjMWZmZDYwNmVhYmJmNWI0ZDVjOTBmM2M5NTMwMjQ1ZjkzY2I3IHJlbGVhc2UyMi1tYWludAorMjkwNzQgZjM3YTM0YzI1NmM0YjA0M2UzMWEyY2FlNTMxMjllYTYwZmIwNDgxMSByZWxlYXNlMjItbWFpbnQKKzI5MDc1IGY5OTA2ZTYyNjFjNWYwZDQ3MThkZDFmN2NkNjFiNGQwMTE4ZDEzODQgbGVnYWN5LXRydW5rCisyOTA3NiAzZWVlNzI5MzFkMTc4M2U1MGVhOTkwZTMzOGYxYjEzZDkzZmE2MjgyIGxlZ2FjeS10cnVuaworMjkwNzcgZjNlNzBjYzI2NDIyZDBkMTM5NTEwOTgwYjM1ZTU4MDAxNWYzNWNiZCByZWxlYXNlMjItbWFpbnQKKzI5MDc4IGM0YzA5M2UyM2M2ZGQxYzgwNTg3OTUwZmU3OWY2NjIxMjBmZTA4ZDAgcmVsZWFzZTIyLW1haW50CisyOTA3OSAzOGExZTU2YjliZjM1MjQ5NWFhMzRlMTZjOWEwOTgwMGUwZDZlZGM0IGxlZ2FjeS10cnVuaworMjkwODAgNjM3OWE1NTE0MDY1Yzk1NmMxMjVkYTU3MzA3YjZhMmY5MDdjYWE5MSByZWxlYXNlMjItbWFpbnQKKzI5MDgxIDVmMmM2YWMyMTVjNzk5NWVkZDc5NGIxNmNmMjhkZmNmODdjNGM5ODAgbGVnYWN5LXRydW5rCisyOTA4MiBiNWRlYzBhNTU0YjM4MGZmYzI3ZDQ1YzE0ZjcyM2E2Mzk4NDRiNmJiIHJlbGVhc2UyMi1tYWludAorMjkwODMgZGYyNzZiNzNmZTRiNTc5NDgwY2RkMjJiZTJmNDU0MTZlMmMyZDhlMCByZWxlYXNlMjItbWFpbnQKKzI5MDg0IDJkY2RlOTAzOTFhYWUzNDc1OGFlZDAyZTE5ZDU2Y2I5Yzc0MzczOTYgcmVsZWFzZTIyLW1haW50CisyOTA4NSA4N2RhYTU2NTQ0MmRiODAxOGE4ZGZiYTkyMDBmYzhiMWZjZGEwZGMxIHJlbGVhc2UyMi1tYWludAorMjkwODYgYTAwMDVkMjY3NzNkMDJjMTA1M2VmYTczMTg1NmZiZjdjZDUzZWQ5NiByZWxlYXNlMjItbWFpbnQKKzI5MDg3IGI5OGY4NWRjMmQ4ODE1NThiMTEzNDYzZTVlZmUxOGZhZDY5MTJlNDEgcmVsZWFzZTIyLW1haW50CisyOTA4OCA4YTc1OTczMzY3NmZiYTlhYWU2YjYzM2RkZWNkYWY2MmNlOWMyOGFiIHJlbGVhc2UyMi1tYWludAorMjkwODkgNGJiOTE4ZWE2NGQxZTJiYzVkYmIwYzlhZmEwMWU1MTVmNDY4YjkxYyByZWxlYXNlMjItbWFpbnQKKzI5MDkwIGY4NjdjYTZjN2Q2OThlNWViZjIxZTY5NWQzZDU5YzQ2YTQ3NGM5MjMgcmVsZWFzZTIyLW1haW50CisyOTA5MSAzYjYwOTUyMDQzY2QwNTA5M2Q1NTM3OGVmY2QxNmUxMzZlYTIyM2Q5IGxlZ2FjeS10cnVuaworMjkwOTIgNWJiMmMwNTdmZDQwYjg4YTJkZDZjN2M3MzVmZDA2MTI3ZWQ4NTAyMiBsZWdhY3ktdHJ1bmsKKzI5MDkzIDQ0NmI4MzVmYzE5YjJjZmVkNzkzODBiN2U4ZmU4M2NkNDhhNWNhMWYgcmVsZWFzZTIyLW1haW50CisyOTA5NCAyNWQxZjRmOTE0ODdlMGRhYmM3NzIzNzg2NjY4YjE3YzgxMjA3ZmVkIGxlZ2FjeS10cnVuaworMjkwOTUgODUwNjJhMTJjMjRmOGZiNDU0NDc5NmEzMzhiNzhmYzg1YTkwZDg4YiByZWxlYXNlMjItbWFpbnQKKzI5MDk2IDRjYTMyZTRmNzgzOTNhMjdhZTgwNmU2NDdiYjA5ZTdlYTc0MzYwNTEgcmVsZWFzZTIyLW1haW50CisyOTA5NyBlZmE5YTg2NDY0ZDM0MmNmMWU2M2EwZDU4ODA5MTAyNDgwNmVjMWE5IHJlbGVhc2UyMi1tYWludAorMjkwOTggODU1MzkyNzkwOTRkMTVlNzExNTg1ZmUyODkzYzI0YzQwZDRjODQwOCByZWxlYXNlMjItbWFpbnQKKzI5MDk5IGE5NGYyNzJlNjAwZDkwOTk0YzI0NWU0NGNkNWZkN2QwZGQxYzUyMTggcmVsZWFzZTIyLW1haW50CisyOTEwMCBlYjg0OTk3M2I5NDE4ZGUzNjhlMDUzMmEzYWNhYzVhNGJmZTljMDcxIHJlbGVhc2UyMi1tYWludAorMjkxMDEgNDIxMzlhYmZkYmU1YmViNWQ2M2UxMWYzYzNlYzA2YWNjMDA4OTA4OSByZWxlYXNlMjItbWFpbnQKKzI5MTAyIDI5ZDQwZWFlODczNmIzZjNiY2ZmYmE3Mzk2YjdlMTNmYjg4Y2NjZmYgcmVsZWFzZTIyLW1haW50CisyOTEwMyAwZTZmMGEyMmM2YTkyM2M4NWYzN2YwMWE3ZDAwMzkwNzBmZDcxNzc1IHJlbGVhc2UyMi1tYWludAorMjkxMDQgNWNmMzNkYjU1MGQ3NWNlYmM4ZjlhOWQyMzYyNjY2MWQ1ZTU3OGZiNSByZWxlYXNlMjItbWFpbnQKKzI5MTA1IDEzNDM4NTg2ZGFhNjM3M2NkYjRjMTY0ZTk2ZjBmN2IxNTg5ZjAyYjQgbGVnYWN5LXRydW5rCisyOTEwNiBiZjI4ZDBmNzhiZDViMjliNDM2YTNjNjc2ZDgwNzM2NGI2ZTRhOTU1IHJlbGVhc2UyMi1tYWludAorMjkxMDcgNWM2ZmFjOTVhOTRiNGZjYzk2NWExZDMzNjRkNDkzMGFhZjFiYmM5YSBsZWdhY3ktdHJ1bmsKKzI5MTA4IDE5OWYwZjZhOGEzNjMyMDZkNzQ5MzU0Nzg3N2I3ZjRkZDY1ZmYyYTMgcmVsZWFzZTIyLW1haW50CisyOTEwOSA4OGMxYzRkNzg5MTY2ZGNlMzNkZDYyOGZjMDJjODRhNTM3M2QzYzVjIHJlbGVhc2UyMi1tYWludAorMjkxMTAgMzNiZDY0NDViN2U5Mzk0YzM2N2RkN2ExNzNmYjA2OWM4MjQ4ZGJkYyBsZWdhY3ktdHJ1bmsKKzI5MTExIGUyMTg0NzUzMTY3NDM4NGM0NDIwM2MxNGNmYzdlYzgwZTM2NTk0Y2QgcmVsZWFzZTIyLW1haW50CisyOTExMiAxNWVlMjk5ZDM5ZTY3MWQ5MjBjODE4YWY1YWRmZWE4YzRiMjQyMDM2IHJlbGVhc2UyMi1tYWludAorMjkxMTMgNWQ4YmIwMGZlZTE4OTljNzZhOWU1Njk1M2NiYzU0YjZlMDU2MjIyZCByZWxlYXNlMjItbWFpbnQKKzI5MTE0IDQ5OTI3YjZiNWY0MGZhNDNlNWExYTM0MWY5MmI0NzY2ZDE3MzhhMDUgcmVsZWFzZTIyLW1haW50CisyOTExNSAzZmE1NDRhM2M1ZWRhYWVkN2VmNjA5MWRkMGU5MmIyZTg2OGRkZmI2IHJlbGVhc2UyMi1tYWludAorMjkxMTYgMTE1N2M0MDAzMTZiMWU2Yzk2YzQzNTIwMTkzOTIxMWZlOWJhYTgyYSBsZWdhY3ktdHJ1bmsKKzI5MTE3IDIxMDM4NDZlZWY3M2FmNTQ4OWY3ODY1MzliYjQ1YmRjMmMyMTg2MTUgbGVnYWN5LXRydW5rCisyOTExOCBjNTgwNDFlNmE3OTk3NGU0YzhjYjQ4YmYzODllNTc3ZjFiZDA5NDFmIGxlZ2FjeS10cnVuaworMjkxMTkgMGExYzFjNWUxYWI0ZjI5ZTBmOTdlYjAwMGNiMTc4N2YzNTM0MzNhMSBsZWdhY3ktdHJ1bmsKKzI5MTIxIDRiZTk3ZWRhNDM2YmI2MzMwOWVhMjQ4ODMxNDEzNmEyZjY1MzQxOWEgbGVnYWN5LXRydW5rCisyOTEyMiAwNjkwZWE2ZDExNTM1NzJiMzJjOWU3N2FkMTBmODdlMmEwMjQ0N2RkIHJlbGVhc2UyMi1tYWludAorMjkxMjMgZjUwOTlhNTMwZDY3YWY4MGFlZjAyMzUxYjczMGNkY2JiNTNkZTI2NiByZWxlYXNlMjItbWFpbnQKKzI5MTI0IGNiOWMxZjk0MjIwYjk5ZWFhZWVhNWM4NjhhNzk0NGY0OWQ3NDMwNWYgbGVnYWN5LXRydW5rCisyOTEyNSAwMDBkMTU1ODFhNzY4NmQ5NWVlMDBhMTUyOTVkY2U4YmNhNzMwZTg4IHJlbGVhc2UyMi1tYWludAorMjkxMjYgOTAyNzRiYTA0NDI0ZDc2MTA1ZTI2YTExMjFkMWE3OWVjMGU3NjM4ZiBsZWdhY3ktdHJ1bmsKKzI5MTI3IDE0YjY4ZjU5Mjk1ZTM5NTZiN2YxMzViZWQ3ZjhkYThjMDIwYmRhNzMgbGVnYWN5LXRydW5rCisyOTEyOCAzN2MwNDQ1YmRjOTBkOTdkNTRiOGRmNGY3YmJmNzZiMGZhNDFjOTFiIHJlbGVhc2UyMi1tYWludAorMjkxMjggMDEyODMxM2MyODU1ZDcxNzUzZjAwZmNjYzYwYmIzOWVkOTJhMGM1NCByZWxlYXNlMjItbWFpbnQKKzI5MTMwIGRkYmY2OWFiYjk1Y2M4ODZhYzFiY2QyYTFiMjA0ZTcyMDlmNzVlYTIgcmVsZWFzZTIyLW1haW50CisyOTEzMSA0YTgyNWI5MDIzMTBlOGRjZjQ4OGM0MzBmOGRkODNhNDRkZDBjOGY4IGxlZ2FjeS10cnVuaworMjkxMzIgYjY1OWFiNDk0NTcxZWE3ZTdiMjhjYTcwZmEzNTczMTAzOGMzMDczYSByZWxlYXNlMjItbWFpbnQKKzI5MTMzIDYzYzZmNDVlOTQ3ZGU0OTI5NGRmMTY5NDRlODY2ZWMxNzc2YmE4NTQgcmVsZWFzZTIyLW1haW50CisyOTEzNCBjZjkyNjYwZTFlM2NlM2Y0ZWU5OGQ5YWJjYzIwMjYzYTAzY2Q5ZjU0IHJlbGVhc2UyMi1tYWludAorMjkxMzYgYzVkOTE3OTFlNTdiMjk2MzRkNmE5NWI0NDM1NjAxMzY5NzkwOGZjMCByZWxlYXNlMjItbWFpbnQKKzI5MTM3IDg4OTdhMGIxY2IwNzU0MThhMGQyNWQxYTg5MTI4YWE0MDgzNmI1NDcgcmVsZWFzZTIyLW1haW50CisyOTEzOCAxYTc5YjllMzllNzI1MmI2MDgxYWM5MTc4ZDZmMTNkZjExYmVjYWJmIGxlZ2FjeS10cnVuaworMjkxMzkgOWNkNmVkOTU0MDY1ZGI2MjBlZmMyMzc4ZWUxZmQ4MjdmNjRhMjAxNCByZWxlYXNlMjItbWFpbnQKKzI5MTQwIDYyODUzMTk1YmU2OGQxZmQyNTI2Yjg5NTE0N2QxZjU2MzU3Y2Y3MTMgbGVnYWN5LXRydW5rCisyOTE0MSA0MWU4MjgwYTM2ODVhNzAyN2UwODY1NGIwZGY4MTg3YTAxNzdkYjA2IHJlbGVhc2UyMi1tYWludAorMjkxNDIgYmFjNWE0OTMyOTA1OTlhOGNhOTM0M2YwYzI5NmE1MjJkNzNjM2JiNCBsZWdhY3ktdHJ1bmsKKzI5MTQzIDY4OTZjZWVkNDZhNmIyZDJlZDM3NTJkMTI5MWZmZjE0YWMwYjg2NGQgbGVnYWN5LXRydW5rCisyOTE0NCBjNTIxNjVmMmNkZjQzOTFmYmI2NGMzYzQwMTUyMmY3ZTc2MTg3MTJiIGxlZ2FjeS10cnVuaworMjkxNDUgMzg2ZTZmZTJjOGQyYzlhMDZjMDUzOGViNDlmM2Q3ODg2OWJiOTZhYiByZWxlYXNlMjItbWFpbnQKKzI5MTQ2IDY1ZGZmYzljMGExNjllN2JlYmEzZDc0YjMyODMyNzU4NjliOTZjMTUgbGVnYWN5LXRydW5rCisyOTE0NyBiYTUyMmM3NGE5MzEwMWM0MzVhZWZmZTdlZWFlZjI5YjBlNjA3YmI0IGxlZ2FjeS10cnVuaworMjkxNDggY2U0OWYxMmExNzY5ZTZhOTdjOWRjNjRkN2U3N2Y3OTEyNGNhZjA3NSBsZWdhY3ktdHJ1bmsKKzI5MTQ5IDM4ODQzZDM1YjY0NjYwMmE0NmJiNTZhNWVkMTI2N2Q2ZWI5NzEwZjggbGVnYWN5LXRydW5rCisyOTE1MCBjN2Q1ODAxYmJhZThiY2RjNTg5NTVjZGRjODFlY2FiZWY0NzMzYzg2IGxlZ2FjeS10cnVuaworMjkxNTEgNjk1YWQ4Zjg3NzA5NTExMzM5ZmFjMmQ4OGNiZWY2YWNmYTFkYjk1MSBsZWdhY3ktdHJ1bmsKKzI5MTUyIDA4MDlkYzU5OGZlMjNhMmIzMmM3MDE4ZTE5OTdiNTljMTVmZjdlMTAgbGVnYWN5LXRydW5rCisyOTE1MyBmNGFhNjU2NzEwZjAzOWYzNzdmNGEwZTcwZWEwY2I3ZjJjMGViNWRhIGxlZ2FjeS10cnVuaworMjkxNTQgNTZjMGJhMjAzMjliNGRlZDQyNWYxZDc3N2JmZTFlN2NjOTMzZDYzYyByZWxlYXNlMjItbWFpbnQKKzI5MTU1IGIyZTgzN2YyZDE0MWM2ZmJmOWQ3MWZmMmYyNzE3ODAyZjBmMGU1OTUgbGVnYWN5LXRydW5rCisyOTE1NiBkOGVjOThiNzRmYTc4YjU1NGJhOWMxZjE0ZjdmYmU5Y2ZmZGMxZDM5IHJlbGVhc2UyMi1tYWludAorMjkxNTcgYjM5YmQwM2E4ZGFiNjY5MjM4OGQ5YzE2ODQ0ZGNlNWM4NWNhMGFkMiBsZWdhY3ktdHJ1bmsKKzI5MTU4IDEzZDYzOWE0YWZkN2I4M2E5OGMzYWYwMzE0NmE1YTdmMjMwZDU4N2UgbGVnYWN5LXRydW5rCisyOTE1OSBhOTYyMWJhN2UzZGJkMTM0MGIwZDA4N2E3NmNlNDRjMzQ4NDI3NTVjIGxlZ2FjeS10cnVuaworMjkxNjAgZTllN2YxNjBhYWM5OTBlMjE1YmFmZGZhMGZkOGIzZmRkZDE5NDI5ZiBsZWdhY3ktdHJ1bmsKKzI5MTYxIDUwMDEzZDFjNmE0M2VhMWJlZWY1MjZmMTNjMDY3YjUzZWJhMjY4NDkgbGVnYWN5LXRydW5rCisyOTE2MiBiNzhmNWM3ZTU3OTAyMTkwODM1M2E2MjA4NzAyYWU5NzBhY2JiYmRmIGxlZ2FjeS10cnVuaworMjkxNjMgMmZiOTEwYjEzOWMyZTI1ZDU2Y2ViMTQ0NzU0N2JiNGRjOGMzNWRmNCBsZWdhY3ktdHJ1bmsKKzI5MTY0IGZlYjg4NjNiNmZjNDY3NGJkN2I5ZDQ3OTFkYjU5MDU3Njc3Y2I2MmIgbGVnYWN5LXRydW5rCisyOTE2NSA2YWU2ZjIwNjBlMjhkMzY0MzVhOTI5OWExODRmZWNjN2RhZWU2ZDc5IGxlZ2FjeS10cnVuaworMjkxNjYgYzYyMWY3MWJjNzAyNTYwOWYwOWI4ZDE4OGNmNTUxNDBlOGE0MGQ3YiBsZWdhY3ktdHJ1bmsKKzI5MTY4IDgxMjA0ZTIwY2ZlNTllMzcyYTdhNjAxMWZhNmJmNTY1MDQ1YTc3ZjAgbGVnYWN5LXRydW5rCisyOTE2OSAwYTdhYTg3NGM0NTBiZGRhNTk5OWEzMmMwYjJkYTVlMmMyNGYzNTZkIGxlZ2FjeS10cnVuaworMjkxNzAgZTk1OTE3MmNhZjQ5MzIxODgwZjgzYzk4ZGZjMzZlM2E5MzhjYjg0MiByZWxlYXNlMjItbWFpbnQKKzI5MTcxIDQ0Nzc2MmViYjExZDJkNzJhMTUxODg5YjliMmU0NjE4NWE4NzcyYjAgbGVnYWN5LXRydW5rCisyOTE3MiBlZTc1NmFiNmExM2UwZGY3MzhmYjc5YmVjMThkMWU3M2QxMTZiOWQ0IGxlZ2FjeS10cnVuaworMjkxNzMgMGY1MDUzNmExMGJiNzc2NGU3ZDc3MjJmYzBmMDY3ZDRiZjA0MjFkNiByZWxlYXNlMjItbWFpbnQKKzI5MTc0IDFmZTFhNTdkOGViMWIyN2I4ZTM4N2JkYWRkNzllNzBkYzk5YmFmZjggbGVnYWN5LXRydW5rCisyOTE3NSA3MzNkZjJkMWViYTk3MWJmNTBhNDcxMGQ1ODA2YTc3OGJkMDYzNjU2IGxlZ2FjeS10cnVuaworMjkxNzYgMWE5ZjQ3ODg1MjYwNGE3ZDBjY2MzODAxYmEzNmFmY2Q3MzYyMzY2MSBsZWdhY3ktdHJ1bmsKKzI5MTc3IGJhZDk2OTk1NzZkOWQ5YmQ1NjBkODJkNGIyNzhkMDhlOGRlYmQ3Y2QgcmVsZWFzZTIyLW1haW50CisyOTE3OCBhZTY4NjNlODc3MjQzN2JjMWM3MjU2Y2QxM2U0MDk0Y2FkYjZjOTNjIHJlbGVhc2UyMi1tYWludAorMjkxNzkgMDZmNjE3M2I4MGZiNDE3MWQwNzk3YjY5NDlhMDZmYTM3ZTY2ZWM0OCByZWxlYXNlMjItbWFpbnQKKzI5MTgwIGUwNjc0M2ZhYjQ3NzVjYTg0MzM5YjNjNWMwYzc4ZTdkN2I2ZDAzYjcgcmVsZWFzZTIyLW1haW50CisyOTE4MSA0MWM1OTIxMjJmNjI5ZmQ1ZDlkNjA5YTQ3YmQ2ZGY3ZjkzMTE2YzVjIHJlbGVhc2UyMi1tYWludAorMjkxODIgMmFkYWRjMTk5MjNjZTEyZjMwOTMxMjM4OTUzMzZmMmUzN2Y1ODdkOCBsZWdhY3ktdHJ1bmsKKzI5MTgzIDI5MGVhMGM2ZGU2YTVhMWFjZjJhM2MwNmIyMjE2NzE2MjFkMzIwYzUgbGVnYWN5LXRydW5rCisyOTE4NCA1NWIxODM5NDEyM2I3YWM2MjU3NThkZWM3N2Q0Yzg1OWNlOWIyZjU1IHJlbGVhc2UyMi1tYWludAorMjkxODUgZTM3NGVhN2FjNGNlNDhhMDQ0OTI5NTQ4MjgwYWRlMTlmY2NhZmRlMCByZWxlYXNlMjItbWFpbnQKKzI5MTg2IGY1MzJlOWI2OTU1MWMyZTdlNzg0YWJiMWU1Y2YwMmVjOTg4MjQwM2MgbGVnYWN5LXRydW5rCisyOTE4NyAzYzI2YWU2MWU5NTIzZWJkZjM1MDVjMWRiZGU5Nzg1YzAwMmU0NGNhIHJlbGVhc2UyMi1tYWludAorMjkxODggOGIyMGIyNmYxMTg2OTk4MDIzOWNiMTA2NzhkNzE1ZDhkMjJjOTRhOCBsZWdhY3ktdHJ1bmsKKzI5MTg5IGY2ZWRiMWVmMmUzZjgwMGY2NWM2ZTA2NWZlYmY0ZmNhZDFiNDRlN2MgbGVnYWN5LXRydW5rCisyOTE5MCA2MWU2YjU3ZWJiZTFkODBlZWEyODIwYmM3MjBkNzM1YjcyZGM1YTJlIGxlZ2FjeS10cnVuaworMjkxOTEgZDYzNGZiZDVlNDIzMmRkN2MwOTE3MDdlNDI4ZWUyOWUxOWQyNWRiYSBsZWdhY3ktdHJ1bmsKKzI5MTkyIDhlOTJiZTY1ZGVkMzY2OGZlNmFhYWE4ZDRmMTc1NDUyM2UwN2I4NmIgcmVsZWFzZTIyLW1haW50CisyOTE5MyA2NWZhMTkzZWExMDkwY2U3ZDljZjk2NGY0MWFmN2ZlZjgzZWFiNWFjIGxlZ2FjeS10cnVuaworMjkxOTQgZjQ2MTgyN2RjN2RlNmMzZjNmMzVmOTFjZTkwM2Y3MDQyNmViMzQ1ZiBsZWdhY3ktdHJ1bmsKKzI5MTk1IGZhMTczNzE5YWM4YzBlYTYxMWI4YTY2YWU0ZGE2Mzc5MGY4Y2JjMjYgbGVnYWN5LXRydW5rCisyOTE5NiBiNTlkMWExMTkzOTMyZGIzNmQzM2Y2MWM5YjQzNmUzNzk3ZTA1YjAyIGxlZ2FjeS10cnVuaworMjkxOTcgYWNlODJkYTNiNDUwZTRhMjlhYmYxY2YzMGNkZjFjZTEyOGNlYjZmOSBsZWdhY3ktdHJ1bmsKKzI5MTk4IDc4N2ZlY2QwYWExYmIxMDc2ODY5ZjUxMzAwNmNhYjk5OWZlNWRkNjkgbGVnYWN5LXRydW5rCisyOTE5OSBjNTljZTUxM2RlZjYyNWJlYTZhMDU4MDkzODcxNmU2YWZjYTc2ZTMxIGxlZ2FjeS10cnVuaworMjkyMDAgM2EzZDVhZWM3YTZhZmYxZGZlZTRmNTM4ZDc5ZmJjZjY1N2JhYjc0ZiBsZWdhY3ktdHJ1bmsKKzI5MjAxIDcwMDVmNGI2Y2MxMjJjY2Q5ZmZiOTExYmE4OWE2ZTJlNWRiZWEyNGYgcmVsZWFzZTIyLW1haW50CisyOTIwMiA2ZDIxMzgzODk2NjcyNTYyMDU3ZjNiNzVjYWZhOTRjYmYwOTk0NjE1IHJlbGVhc2UyMi1tYWludAorMjkyMDMgOTJhOGEzNTJlMDI0MzA2MzNhOGVjZmRmNjE0YzA1MjcwNjBkZWY2NCByZWxlYXNlMjItbWFpbnQKKzI5MjA0IGIwZmE1ZjZhOGJiOTdkZTdhNTU3ODlmMzQ4MzA5NDhmZGZlZWRjYTQgbGVnYWN5LXRydW5rCisyOTIwNSBlZWVkN2M4YjIzMWFlZDE2NzY3ZTM3MGU3N2YyYzEyM2UwNTY4YjYwIHJlbGVhc2UyMi1tYWludAorMjkyMDYgOTcwMDJiMjUwNDI1Njc5ZDE4NjI2YTY3Yzc4MmVjZTdhNjg5MWM2NyByZWxlYXNlMjItbWFpbnQKKzI5MjA3IDcwZjkwMjZhMmIxNmZkMzhkODdjMjcyNGQ1NmYwM2IzOGMxYzkxZjcgbGVnYWN5LXRydW5rCisyOTIwOCAyMWFiMmE2NzRjMGExNDY0ZWEwNmJkZDJjOWViMGI0NGU0ZDdkNGMxIGxlZ2FjeS10cnVuaworMjkyMDkgMzk2YzhhMjQ4ODBjODI1ZDU0MjRmMGU2Y2YyYzRiZjljZTE3ZjE5NyByZWxlYXNlMjItbWFpbnQKKzI5MjEwIDg2YmY4NDBjMmExY2E4YmU0ZmRkNDAyNTc3MDJlMzAxNTdiY2U4MzUgbGVnYWN5LXRydW5rCisyOTIxMSA1NGViZjA4NWQyNmZhOTY0Y2FmNjJkZjY3YzZhNzQxYzgxZmIzMTVhIHJlbGVhc2UyMi1tYWludAorMjkyMTIgZjdjY2Y0OTkxNTY1YzNmYjMzMjAyOGExZDNjMmE2YWMzZmYxYTZkNSBsZWdhY3ktdHJ1bmsKKzI5MjEzIDczNDBiNjRhNDkwODIyM2ViYmYzZTAyYWU3ZThkZGExZDQ2M2ZkODMgcmVsZWFzZTIyLW1haW50CisyOTIxNCA0ODkwZjFiZGVhYTY0MmUyMGM3ZTRmODc2OTFjYzI1NDM3OTY2ZjM3IGxlZ2FjeS10cnVuaworMjkyMTUgZjdhNDZiMGQzYzA3YWEzMGU2NWFlMWMyNjMzM2FlZmIxNjc1ZDE2NyBsZWdhY3ktdHJ1bmsKKzI5MjE2IGQ0M2U4MmI4ZDc5ZDU2ODllOGJjOWJiNzY2ZGI4NGMzYzQ5NjhkMmMgcmVsZWFzZTIyLW1haW50CisyOTIxNyBlYzBhNDhhZThlYjQ3ZWExNmY3Mzc4NDgxNjVlY2U4ZDQ5OWZiOWVjIGxlZ2FjeS10cnVuaworMjkyMTggOWJkMmY5NzkyZWZiYTY3ZmY1NGZkYWZhY2M5ODJmYzA4YTNhMzE5MCByZWxlYXNlMjItbWFpbnQKKzI5MjE5IDNjOTVlMDk3Njg0NDhlY2EzNDIzZGMwMmUwYWJmNjA1MDA0MTk2MDYgbGVnYWN5LXRydW5rCisyOTIyMCAyZDE3ZTNjYjc3NGU4MzYzZDkxNTQ0NGM0ZTFjZDI1NTYzYWUzNDEyIGxlZ2FjeS10cnVuaworMjkyMjEgNzVjYmVjNDBkYjdkNWZjNTQxY2ZkMGZkYmUzYmJlNTAzZTYyY2NlNiBsZWdhY3ktdHJ1bmsKKzI5MjIyIDZkMzVkNDI5MmRlYzQ2ZDIxODM5MjYyYzVmYWViMjNhMWQxMmUzNzkgbGVnYWN5LXRydW5rCisyOTIyMyA2MzIyNTgxMTQ5OGQ1MTFkMzFiMWMzYjA0MmFkZmE2ZGY0OWRlYjBmIGxlZ2FjeS10cnVuaworMjkyMjQgMDgzOGM0MjQ3OTE3ODNmZWM4YTVlM2RkYjZkMWQ0MGQwNDViMTgxOCBsZWdhY3ktdHJ1bmsKKzI5MjI1IGY0NDlmYjViYmFiOGFkNjlhNTNiMjU0MmM0ZDE5NjM0YzI5MzJkNTAgcmVsZWFzZTIyLW1haW50CisyOTIyNiA1NjMyODQxYTMyYTQwNTllYmVhMzc1N2Y1YzM2YmY3ZjEwNTE5ZDQzIGxlZ2FjeS10cnVuaworMjkyMjcgNmVkMGJiZGFiZGM4MTllYzBhMjVhMWEwN2QwNTBhMWYyMjA3MmZhNCByZWxlYXNlMjItbWFpbnQKKzI5MjI4IDY5YWE2MGQ3NzFkMWYzMTk5Y2NkMzYzMTRkNTBhNmM0MmMzNDhiYTcgcmVsZWFzZTIyLW1haW50CisyOTIyOSBiNGVkOWY5MzE5Y2RlNDExNWRhMWYxNTk0ZThlYzA3MDQwMmEwNmEzIHJlbGVhc2UyMi1tYWludAorMjkyMzAgZjQ0N2I2OTYwMWI5MTU2ZTFkNWFhMjBmMTA1OTU3NWEzYmU1ZGUyOCBsZWdhY3ktdHJ1bmsKKzI5MjMxIGNhOTg5YTcxYjZjN2RkN2RjZDExNWZiZjFmOWUyNzA2MzFmYmEzYTAgcmVsZWFzZTIyLW1haW50CisyOTIzMiA3MWUzYThlOWQ4ODQwNjFjMWQ1N2Y5NmI5OWEyNDFmODE0OWUzOTU0IHJlbGVhc2UyMi1tYWludAorMjkyMzMgNDQ3MjlmYmIzZDViYmMxYWZjNmM3ZWE3MGVjYzM2ZGMyMmExMjBkNCBsZWdhY3ktdHJ1bmsKKzI5MjM0IDhhZTljMGIwYWEwZjE1NGRjYzQ4ZGYxNWExZDNjY2JiYjQ2NWYzMTQgbGVnYWN5LXRydW5rCisyOTIzNSA3YTU3ZGRmNzI3OTRlZjlmMTM5YTY0ZjBjMGU4YmU5NDhjM2RkZmE2IHJlbGVhc2UyMi1tYWludAorMjkyMzYgMDM3ZGZiYTA3MGFjNzhjMzhhNjAyZDJkYTk5Zjc5NDNjNzVkNDVmMiByZWxlYXNlMjItbWFpbnQKKzI5MjM3IDU2OThmMGZlMmVhMDA5MDA2MDhlYjc0YmIzM2FkZTYzMGYzNzE2ZmEgbGVnYWN5LXRydW5rCisyOTIzOCA5NTFlM2ZlN2VkM2FkM2E1NmU0YjZjYjc3YzgxZDdkM2E4YzIwOTE4IGxlZ2FjeS10cnVuaworMjkyMzkgM2E4NzlmMmZjYTA2NmFkMjY4MjQ4NjBlNDE5NmVlNWJhYzhmODE4MCBsZWdhY3ktdHJ1bmsKKzI5MjQwIGQ1ODcxZDZlNzM1ZDc0ZGZjNzE1YWVhYTY4OTEzYmIwZGY3MjhkYzggbGVnYWN5LXRydW5rCisyOTI0MSAzNjIzMDFhOGMzZTQyODk4NmQ0MDUyM2MyNGU5Y2QzZTM1MTk1MjdkIHJlbGVhc2UyMi1tYWludAorMjkyNDIgOTFlYmY0ODhiNWExODdiYjNjYjMxMjM5ZTEzNjBhNGU1NDhmOTFiZSBsZWdhY3ktdHJ1bmsKKzI5MjQzIGMzNTVmZDM3ZDY0MDdiMTQyZmMyZGYxNzhjZmQ4NTQyMDgzNzk5ZjEgcmVsZWFzZTIyLW1haW50CisyOTI0NCA4NGVlNWE0OTk3NDMwMTA2ODg2ZjlkNjg5ZTM0ZjZlNzI2ODJiYjFjIGxlZ2FjeS10cnVuaworMjkyNDYgZWRmNWU3ZTU1ZDE0MGE3NzE3NWU3MDJhZjU2ZGVjNzExYWQ5NmVmZCByZWxlYXNlMjItbWFpbnQKKzI5MjQ3IGFkZThhZjFhYTNjNjhmNDMzYjY3MmY4ZDE3OTFlZTlkNjNhM2I4MGQgcmVsZWFzZTIyLW1haW50CisyOTI0OCAxZGFjYjZhYzM4ZTljZWU1MzBhN2Y5NTBiNDc4Yjg5YmFkMWU1Y2Y4IHJlbGVhc2UyMi1tYWludAorMjkyNDkgY2M0MWI5Y2FjYWU4NDdlNTEzZjZmYzUxMzQ4NGJlMmE0NTc4NjM4OSBsZWdhY3ktdHJ1bmsKKzI5MjUwIGYwYTc0YWUwOWFkNzNlNDhhMzUxOTU1ZDYwOWE4ODVjNzAwZjkyOGEgcmVsZWFzZTIyLW1haW50CisyOTI1MSAyZWY3MWYzNTFjNzRhMmUxZjUwZjEzNmUyNmRhZmRhYTBlYjRiMjVjIGxlZ2FjeS10cnVuaworMjkyNTIgNDIzYWE1ZWY5MjQ3YmQ0ZjVkZmViZmM0ODFiOTAwNzUyNDAxOTcxZiByZWxlYXNlMjItbWFpbnQKKzI5MjUzIGNmMThjYTBlZWE4OTJkNTViNDkzOTQ4YmYxMmZjZmYxNDhhMmQ4NGIgbGVnYWN5LXRydW5rCisyOTI1NCBhZjIwYWVhYWE5ODIwNGEwNDYyN2QyN2JmYzljZjI2Yzc2YjhkZjljIGxlZ2FjeS10cnVuaworMjkyNTUgYmYzODQxMTFiM2IzOGY3ZjgyMTdlMWRiMDI4NmVmYjUyMTE5NDU2ZiByZWxlYXNlMjItbWFpbnQKKzI5MjU2IGVhMWE0Y2ViYzUzMGE1YjNkZTdlYmRlOGZlODhhNDMwYWRhZDYyNmQgcmVsZWFzZTIyLW1haW50CisyOTI1NiA2MWQ1MzE1MzNhODYyMjRhMWMyNjkxN2MxODAxM2Q5MWY1OTJmYmZiIHJlbGVhc2UyMi1tYWludAorMjkyNTggODM4Mjg1ODNkOTE3MzhmNmJhODZlNTY4ODg4ZmM1Zjc1MDY2MWYzOSBsZWdhY3ktdHJ1bmsKKzI5MjU5IDMxYjJmYjQ0ODUxNDYzMmE1NTE5ZGI3NjdmOWU3ZjcyZmFkMzUzYzMgbGVnYWN5LXRydW5rCisyOTI2MCBhM2Q2MTJmMDU2M2YxNjQzNmRiN2UwY2E2NTRkOTEyMmZkZjc2NTQzIGxlZ2FjeS10cnVuaworMjkyNjEgYjg1OGY0Yzg4M2RkZGU0ZDA4NGM5YjhlNGJkNGJlYjM4YmY5ZGYzNyBsZWdhY3ktdHJ1bmsKKzI5MjYyIDAwMWI3ODlmMWY4NGMwMDc4Y2NjNTFmOWQ2ZGVjYjBmYzEyMmM5MzMgbGVnYWN5LXRydW5rCisyOTI2MyBhYzE0MzE3YTlhZThiMzE2ZTRiYTUyN2M3MDc0OTJjZjc3NGY2ZGY1IGxlZ2FjeS10cnVuaworMjkyNjQgM2VhZmJkZTU2YjIxOWYxZGFhNWUyYzg1MmVhZTA5YWMxYmZjNWRjMSBsZWdhY3ktdHJ1bmsKKzI5MjY1IDY2ZTNlNWYwOTNjYTExMzc0ODdkYzgwODY5M2ZiY2YzYmQ0MjZlOGEgbGVnYWN5LXRydW5rCisyOTI2NiA4NWM4N2IzYWM5NmJjMjZlNTc0Zjk1NGUzMWI3NmJmOTRhNWNiODc1IGxlZ2FjeS10cnVuaworMjkyNjcgNmM5MzBlMjU2YTE2ZDI0ODk4NmFlZDc5MDNkNzQ1M2VjZjA5MGY1ZCBsZWdhY3ktdHJ1bmsKKzI5MjY4IGJjODFkNTMxYzYyOTMyMjUyYTcyNThlMzZiODIxMWY3ZGZhOWJjNWMgbGVnYWN5LXRydW5rCisyOTI2OSAzNDI4NDgyNWQ5Y2Q4MWMyOTMzM2ZlZDg5YTNmMTk0ZGVkNWZmYTFkIGxlZ2FjeS10cnVuaworMjkyNzAgYzc3ZDgzNTcwYjNmY2FmZjZhMzZiNzgyMDQ4NDZlNWY5ZTA0Yzg2YSBsZWdhY3ktdHJ1bmsKKzI5MjcxIGFiOWQ0MDE2YjU4N2Q1YWU5YTdkNWU5NDJmMjE0YWRlYmEzYTg5OGEgbGVnYWN5LXRydW5rCisyOTI3MiA2MDAxMjY1ZWM2ODYxNTZjN2E3YTRkMTkyZTMwNWFjYWEzMDA1ZjJmIGxlZ2FjeS10cnVuaworMjkyNzMgYjk3NjlmNzEzM2M2MGFjMmI0MjZhMjQxZjdlZDNjMjE0ZWMyMjZkYSBsZWdhY3ktdHJ1bmsKKzI5Mjc0IDBiYmVhNGRjZDliZWQ2ZDgxYzkyNzQ1Y2Y2OGU4ODhiMTZmYmNmOTYgbGVnYWN5LXRydW5rCisyOTI3NSAzN2JkMmE5MDFjMTAwYTlmY2ZjMGJiYzU1NDRiZTdhMTk4ZDdlMTI5IGxlZ2FjeS10cnVuaworMjkyNzYgZmRjYTg3YzQyMzRlYTQ2YTU0MmFmYzE3OGI3MjAwZTVlNzQxNDFlNCBsZWdhY3ktdHJ1bmsKKzI5Mjc3IGNkY2IxMDJmOGU1NmMyY2Y0YTkwYTg3M2Y0M2Y1YmI1YmE3ZGRiYWUgbGVnYWN5LXRydW5rCisyOTI3OCA5MTUxMTI2NzExNTJmNDNmYTlkN2RjYjZlZmEzMDY2NWE4NjFkOTE3IGxlZ2FjeS10cnVuaworMjkyNzkgNTQ4MzQzNjNjY2YwZGE2OWYzNDBkMGZiNzQxN2RlYTJlNTZlNmQwMCBsZWdhY3ktdHJ1bmsKKzI5MjgwIDVkMzUyZGU5NDQxNTgwYzgzYzJkYzAyYTZlYzQwNjkxNDY4MTdiNzMgbGVnYWN5LXRydW5rCisyOTI4MSA3Nzc5OThhMjI3Yjc0ZDE3ZjRkY2IyNzE5MmViZTdiOWU5YWU2OWMyIGxlZ2FjeS10cnVuaworMjkyODIgYjhjYmRiNzM1Y2YyYjE5OWU1NjRmOTRlOTE4OWI0YWY0MjBiNTY5OSByZWxlYXNlMjItbWFpbnQKKzI5MjgzIDRhOTJjN2Q5ZDQxNTRiMDVmYmQyNDVmZmUwNmRhZDhhNGUwZDcwNjAgcmVsZWFzZTIyLW1haW50CisyOTI4NCA3NmFjMTYyOTNlNGI2Yzc0MDdlYTk1MTRmOTM3MmI3ZDgxYTBmODFjIGxlZ2FjeS10cnVuaworMjkyODUgZmY2N2Q1ZmYxMjNlNTY5Y2IwYjU1NWNjNGU0OTg3ZTc0MzQ0YzNhZCBsZWdhY3ktdHJ1bmsKKzI5Mjg2IDc5NDE5ODk3YTM2ZmU3OTc3NTU2Yjc0ZDYwMDhiNTY2Y2YxMjIzNDAgbGVnYWN5LXRydW5rCisyOTI4NyBjNDQwM2EzZWZhNWQ1ZjhiOGQ4NGU0NmNkMmI4OThkYzZiZmQxNTAzIGxlZ2FjeS10cnVuaworMjkyODggMTIyMjdkNzlmNmJhNGM3NmRmMDVmYzY3MWYxNWM2Yjc1MTg2ZmVjMCBsZWdhY3ktdHJ1bmsKKzI5Mjg5IDBmNGU5OThlM2ViYjYzMzRjYjFiYTdhNTIxMzY1YjZkZTAzMGVmNzEgbGVnYWN5LXRydW5rCisyOTI5MCAwMzJmMTk2MDU5YWEwYjRmNzFlMGM4MGU0ZmNjMGZlOTdhNmFiZTEzIGxlZ2FjeS10cnVuaworMjkyOTEgOTkwYjI3NTE0OTM4MmI0ZTdkN2Q5NGI0YWY0OGFmOTFkYmE2YzQyOSBsZWdhY3ktdHJ1bmsKKzI5MjkyIDFhZmIyMjhlNDI2NWI1YTg2ZjA4YzBjODRkYjQwNjA2OTQzMTUwMTYgbGVnYWN5LXRydW5rCisyOTI5MyBjZWJlZTJhOWUzY2Y5OTYwYzAwNTU1MzVmMzlhMDRiNWVhZmU1NmI5IGxlZ2FjeS10cnVuaworMjkyOTQgYzJkZDQxMzAxODQxMDhiZTUzYjUxZjdlMzlhODU4OWYxZmFjNTMxMCBsZWdhY3ktdHJ1bmsKKzI5Mjk1IDA5M2ZlNWI5ZjZmOTQ5YWE1YmJkMTE0ZjAzNWM5MjhjMDFkNTVjOTUgbGVnYWN5LXRydW5rCisyOTI5NiA3ZWE2NzRhYzU5MGVmNTc0OGQzYzRhMWRiNzQxNzYwNzc0YzE1NzEzIGxlZ2FjeS10cnVuaworMjkyOTcgZGM0MjBkZTE3YTZlZTYzY2VlMDIwYjUxOTY0N2ExM2YyYTM0NTYzMSBsZWdhY3ktdHJ1bmsKKzI5Mjk4IGRlYWJkMDUzYjZkZTFmNGVkNjU2YWZkMzk3OTVmZmU5ODU3ZDdhYzkgbGVnYWN5LXRydW5rCisyOTI5OSA4MDUwMTU3YTQ0MzBiYjdiZDg3MjEzNTk4Yjc0Mzg0YmIwMDAzYTk4IGxlZ2FjeS10cnVuaworMjkzMDAgMDkwYjcyYzBkMmViNzMwMjU5YTlhNzYyOTVkZTI1MTI2ZDFmYTg2YSBsZWdhY3ktdHJ1bmsKKzI5MzAxIDQ0Y2M3YzYyZDk4ZGIzNzc2MWM0MzE3YzU0ZWM1MmYyZTUwMjdjZmYgcmVsZWFzZTIyLW1haW50CisyOTMwMiAwMzViOGRlYjUyYzFlZjRkMGViNTMwMTdjYTdhNDAyYzE4ZWU3Mzk2IHJlbGVhc2UyMi1tYWludAorMjkzMDMgNDcwMjkyMTI5N2QxMjU1YTEwY2M5YzczYmQxMjg3YjM1YTA3MTA3MSBsZWdhY3ktdHJ1bmsKKzI5MzA0IGE4OWQwMTQ1NTllMDU3ZjAxNjIzMjljYzRkOGU0NWI5NzA5ZWM2NGQgbGVnYWN5LXRydW5rCisyOTMwNSAyZjM2NDdiMjFiMDc2MzM5MGYyZDE3ODc1MTQxZDgzNTU0ZjQ5ZmY4IGxlZ2FjeS10cnVuaworMjkzMDYgODU0MDg4N2JjZWM2YzliOTBhMmFhYWI0MTAyMjc5NTIyZDFmN2M1OSByZWxlYXNlMjItbWFpbnQKKzI5MzA3IDI0MzUwMzkyNmM4MWQ4MGVjNTNlMWFiMDRiMDM1ZDMzNWJlZGQwNDIgbGVnYWN5LXRydW5rCisyOTMwOCBlZWE0MGM0MTcyMDUzOWZiZjdiMzQzMGQwZDBiYTMzMTk5YjEyNzcyIHJlbGVhc2UyMi1tYWludAorMjkzMDkgMDllM2YwZDhiZTEwYmViNWFiMGVmZTg0ODRhZGE0N2I0YTdiMjJjOSByZWxlYXNlMjItbWFpbnQKKzI5MzEwIGVhYjc5NDAyNzdmYmIzYzEzNGJkYzQ0MTE4NzZkMmU5MmMzNGI3YzkgbGVnYWN5LXRydW5rCisyOTMxMSA3YjdiOTY1NTU4NDJhOTRkNDY3NTczYzQ2YzI1YzQ3MDViMzNjZDFhIHJlbGVhc2UyMi1tYWludAorMjkzMTIgMzFiZGM2NmZiMzA3ZjAxNWNmMGU4YzA3MDhhNTg1OTlkNGFkMzYxYyBsZWdhY3ktdHJ1bmsKKzI5MzEzIDRhY2I1NTAxYjQ5MDBjNzEzZDAyMmYwM2RlNzgxNGM0ZWI5ZjVjZjMgbGVnYWN5LXRydW5rCisyOTMxNCA4ZmIxMmFjNzljOTM3YWE0Mzc4NTk2NTZmYjFhZDYxM2FiNjE1YjQ3IHJlbGVhc2UyMi1tYWludAorMjkzMTUgZWVkMGZjZjg1YjYyMjkwNDI5YzIxMTljNWRmZDdmMGNlMDY3MzA4ZCBsZWdhY3ktdHJ1bmsKKzI5MzE2IGE1ZGIyNDZkOTRhMGI5MWFkOTQ0MzRiMmM5NzZmOTUzMDNmZTI5MzcgcmVsZWFzZTIyLW1haW50CisyOTMxNyAwNTdkZTQxZGFmNDg5MmQwMWZmZGU5OWUzODZmYjM0NDZiNjdlNzk2IGxlZ2FjeS10cnVuaworMjkzMTggNjczODFlYmQ1ZjRmNzI2MDgzYWI4NTVkN2EyNWU0Zjc0ODAxOGNkYyBsZWdhY3ktdHJ1bmsKKzI5MzE5IDc4ODU4OTlmYjQzZWI1MGNkMjk5NDJhZmY3MTA0NGFiYjdiMDgyMWEgbGVnYWN5LXRydW5rCisyOTMyMCAxZjVmNjQ4MTg4NmQ5YWIzNDgxMWRlNmU0NWY5MzA2MjVmNTJmN2Q1IGxlZ2FjeS10cnVuaworMjkzMjEgNjgwYmZjYzljYTA2NmM2YzZkZTI3ZGMwM2U0M2JhYzdkZDBiNzJjNSBsZWdhY3ktdHJ1bmsKKzI5MzIyIDJmOWIwYTM1ZTIwNTc4OGY3ZTIzYTFiZjQ3N2QwODgwNDJhMjQ4MWEgbGVnYWN5LXRydW5rCisyOTMyMyBhMTFjZmFlNzFkZWIwNzg2ZTYyMjMwMDcwNDk4OTQwMGNhOTY1NDBmIHJlbGVhc2UyMi1tYWludAorMjkzMjQgODRhM2RkOTk0Y2QxODgwNGY2MzNiNmM4M2Y1ZjI5NmQwYmQxMzUzNSBsZWdhY3ktdHJ1bmsKKzI5MzI1IDU0ZjMyYmE3MDQ3Y2IzZmIxODkyMDcxM2U3YmI0ZTRiZTU4YzVlY2YgcmVsZWFzZTIyLW1haW50CisyOTMyNiA5ZGQ5YzUzMWNhNzhjNGYxMGRjMTE2NGM2MTI5OTgwMzVkNjcwNWM0IGxlZ2FjeS10cnVuaworMjkzMjcgNGM4YThjNzRmNGJkYTk0ZmYzODVmNjVjMTVlNGJmMjM3ZjBjZmYwYiByZWxlYXNlMjItbWFpbnQKKzI5MzI4IDgyM2U5NDdlMjQ1MDI1N2ZmYzU3Yzk4MWQyNWNkYTFiZmFlZWE2Y2YgbGVnYWN5LXRydW5rCisyOTMyOSAzNWY0NzZkNjQ4MWVmNDI5ZGVkYWMwZTYyOTQyZjM2MjkwOTNhOGZiIGxlZ2FjeS10cnVuaworMjkzMzAgNDFlMDM2MWEyMTkxMjJmYWU3MzNjMGY2ZDJkNTMyZjEwYTM0YTU2MiByZWxlYXNlMjItbWFpbnQKKzI5MzMxIGU1NmI1MmU3OGJjOTc5MGI1M2I2Nzg4NTBhM2YzN2QyZjI4MWRjOTggbGVnYWN5LXRydW5rCisyOTMzMiAxNTFhYTM0MzRhYTY3MDIzOTcyY2E3M2FkZGNjZmMzNzg5NDE3YTk3IGxlZ2FjeS10cnVuaworMjkzMzMgZDE3ZmZhMDUyMmI3NTllZTk4YTczY2Q1MWQ2N2I4ZGQ2OTllZWFhZSBsZWdhY3ktdHJ1bmsKKzI5MzM0IGI5YWE4NzFmODQ0YmZjZmZjZWM2MjU2ZTcyMTI2NTJiY2MyZmI4YTYgbGVnYWN5LXRydW5rCisyOTMzNSBiN2IwMTJlNzhkYTM1ZTNiYzU1MTdjNTIwMTFkNWExYTk2YjliMzkwIGxlZ2FjeS10cnVuaworMjkzMzYgMmIxNTgyNjdiMDBlNGMwOWMwMTEzMDdiMDljMjhhMjYyZTcyZWVhNCBsZWdhY3ktdHJ1bmsKKzI5MzM3IDJiY2I0MTYxMWZhZTkxOTM1MmI0MDcyYjA5YTdmYmVhOWEyMGIxOTIgbGVnYWN5LXRydW5rCisyOTMzOCA0ZWI5NGM1NmM0NmE0NzFhNDZkM2Q5YTdkMGQ3YTA4MDEyZjc5MTgxIGxlZ2FjeS10cnVuaworMjkzMzkgY2I5MTBjMzk0OTI3MTQ5NTM3NTAxNDAyMTNlYTI1ZTU2OTBhMzYyNCBsZWdhY3ktdHJ1bmsKKzI5MzQwIGE5Y2ZlYjQyZTI0MDk5ODY0YTNmYzA2NmNjZDMxN2Q5ZGJmMzdkNzcgbGVnYWN5LXRydW5rCisyOTM0MSA1N2ZiM2Q1ZTNkZDM3NjAxZWZmODI3OWViMDY1YjdhZGRhMTVmYmQ1IGxlZ2FjeS10cnVuaworMjkzNDIgNzkzMDVhMmVmYThjODc4ZWMzN2IxYmM5MGZmOWE5YjExNjg5YmVhOCBsZWdhY3ktdHJ1bmsKKzI5MzQzIDkyNTNmZTg2YjkyMmZhMWExZDEyYjIwZTAxZTE2MWMzM2E5YjNmMGIgbGVnYWN5LXRydW5rCisyOTM0NCA1ZjdhMzM0YzA5MjUxMDk5NDNiNWZlZGJmNWVlODgwNDdhZmE1YjdkIGxlZ2FjeS10cnVuaworMjkzNDUgMTU2MDdlYzQ5ZmFmMTA4MTg0N2JkYjkwNDgyOTcxY2ZkN2Q4Mzg3YyBsZWdhY3ktdHJ1bmsKKzI5MzQ2IGQ0Y2ZhNDA0M2MwOTRkN2JhMGJmMDVjNmM0MTIxNDk5OTNjYTYyYzIgbGVnYWN5LXRydW5rCisyOTM0NyBjYTAyNWU5ZmU1YmMyZTkwNGI0MjNlZjdhYWVhZWEwNmJmN2Y4N2RlIGFzdC1icmFuY2gKKzI5MzQ4IDgzYTMyYzU0N2I0OTkzYjYwZjVhNDgzYTQ4MmRkYTdiZThmZWJmZjAgYXN0LWJyYW5jaAorMjkzNDkgMDk4Y2RiYWQ1NWNmMmU3NjA0MmY2NzI0NDZlMDE4M2I0ODEyNDNkYSBhc3QtYnJhbmNoCisyOTM1MCAyZDdmNDI3NzA3MzMyNWNhODhkYTM4N2YxYThjZGY4MTdlNTQ3M2M5IGFzdC1icmFuY2gKKzI5MzUxIDQ1ODdkMWFmMmM0MTQzZTVhNDkwYWZkNjNhOWQzMTBlYmIwYjU0YWEgYXN0LWJyYW5jaAorMjkzNTIgYWEyZWE1ZmY1ZjQyNzA5ZDc0OGQ2OGQ5N2RjODNjMTU5ZTI5ZTdiNCBhc3QtYnJhbmNoCisyOTM1MyAwN2M2ZDNiOTI5M2MyNzVkYzk1MTk5ZTQzNmJiNmMwM2JkNGNhOTQ0IGFzdC1icmFuY2gKKzI5MzU0IDQ2YjU2NzNjYTM4MGRhYjg0NWE1ZmQ5OWFkMmJiOGRlZGI5MDEyMWQgYXN0LWJyYW5jaAorMjkzNTUgZTM2NWU2YmY0MWJiMDFmNjgzMmJkZjIzYmUxMTZkNzk0ZTU4Nzc0NCBsZWdhY3ktdHJ1bmsKKzI5MzU2IDRkNTAzMThiM2ViMTgxZGI3ZDYyODhmZDU1YTAzNTAxZWI5NmNlNjIgcmVsZWFzZTIyLW1haW50CisyOTM1NyA4ZDQ0ZDYxNDk0MWQ0NzdhNjZiYzMxN2YwNDU2MzNjZGEyMjBiNjA5IGxlZ2FjeS10cnVuaworMjkzNTggNmYxODUwOGJlZDNkMjc4ODVjYmRmZmFlOWEzZGQxOGVkN2VmZGYxNiBsZWdhY3ktdHJ1bmsKKzI5MzU5IDdlODBlN2QwNWExNmM4MzliN2RhMjc1YTY5NDY4MzJjNGM4NjZjOGMgbGVnYWN5LXRydW5rCisyOTM2MCAzNGYxN2ZiNDljNTEzMTEwMzk4NmNlOWIyMTVkMTFiNGIwZTYyYmM1IGxlZ2FjeS10cnVuaworMjkzNjEgZmVjMTViYWQzODZkOWYwZDMwNzA1YzRkNmMzNDUwNDIzMTRiYjAzNyBsZWdhY3ktdHJ1bmsKKzI5MzYyIGE3MGZjYzVkYmJhNTA1ZGRiNTU4Njk3ZjE3NmEzZWQwOGE4NGNkZjMgcmVsZWFzZTIyLW1haW50CisyOTM2MyA1MjlkYTUwNWVhYmM3MzEwMzg5MzBiZjg3MTFiZGQ5YmY0MTJmMDkyIGxlZ2FjeS10cnVuaworMjkzNjQgMTc1MDQxZTM0NTg3YTc2MWVhYmY2ZTg3MGFhOTA0YThkYzk4NDFmMyBsZWdhY3ktdHJ1bmsKKzI5MzY1IDdmMDMwYjhmOTE3ZDkwYjAyYzRmMzllMGIwMmUxMWViZWYxYzhlYWEgcmVsZWFzZTIyLW1haW50CisyOTM2NiBmYmVhNzBhNDAyOTE1NDIxODMxZmE1Y2IyYTE0ODBhNzFmOTIyY2JhIHJlbGVhc2UyMi1tYWludAorMjkzNjcgYWMyMzllZTBjOWU4Yjg3MWRhMDg2ZDA0YTRjM2Q2N2Y3ZjY2NmQ0MSByZWxlYXNlMjItbWFpbnQKKzI5MzY4IGNmODc5MjAzNTFhY2U5Mjc3YTY3YjkxNGMzNTg1NmYzYTIwM2NiYzQgbGVnYWN5LXRydW5rCisyOTM2OSA0MDJmZGFlNjdlNDQwZjRkODZhNTczOTEzNzY0NGJmNThjZDRiMWZlIHJlbGVhc2UyMi1tYWludAorMjkzNzAgMTk1MDBjOWI1OGMxNjFiZmM1M2E2ZTdjNjAwNmY2NTllYzNlNjk5ZiBsZWdhY3ktdHJ1bmsKKzI5MzcxIDUwOWJiMGI2ZGZhM2NiY2M5MGI3MzcyMGZiODY4ZTc2NDA3ODJjNzkgbGVnYWN5LXRydW5rCisyOTM3MiAxMjQ5MjQ1MjEyZTQ0NjE2MWM0ZjVhN2VmN2IwY2RhNGZmYmFhYzhmIHJlbGVhc2UyMi1tYWludAorMjkzNzMgMzdkODdkYzgwM2Q3YTRiZDYyZGU3NWYxMTIyYWVlMTdkYzM2ODhjOSBsZWdhY3ktdHJ1bmsKKzI5Mzc0IGQzYjczNzdjOGFmYWRlMTIwOWRmODkwMDA0ODcyMzMyMmU3NTc4NjQgbGVnYWN5LXRydW5rCisyOTM3NSBjMzM5OGMyNWRmZWY3ZDkwNjU2ZWQzY2RhMTM3MWEzMGMyYzY5MTk1IGxlZ2FjeS10cnVuaworMjkzNzYgZmI3YzUyY2E5ODQwNTEwZTZmZjFiNmIzNzkwMTM5Mzc0ZGNkNzZiNCByZWxlYXNlMjItbWFpbnQKKzI5Mzc3IDA5NWRiYmViYTljMDRmZDY0NDM1M2QzOTUxZDQwODNjZGY0YWE5ZjUgbGVnYWN5LXRydW5rCisyOTM3OCA0ODdkM2MyNDkwYmMwMzU4ODEyMGVhZDI1YWQ5MDdmYTk4NWYxMGE1IHJlbGVhc2UyMi1tYWludAorMjkzNzkgMDNjM2Y2MTBlMDU0MTMwOGI0YjU4NGU2ZjJlODNkMTViMTJlMmVkYyBsZWdhY3ktdHJ1bmsKKzI5MzgwIDUxODI4ZWE1MGI1OWMwZTgxZTRjNzdjZTUwYTQxYzlmNDAyNjA4NTMgbGVnYWN5LXRydW5rCisyOTM4MSAxNzk0ODI4NzVjZmJhNWM0MGY3Zjg4NzJmNzE4OWVlNWZhYzg5ODY5IHJlbGVhc2UyMi1tYWludAorMjkzODIgNTA5MDVkYjM1ZGE1YjBmMDY5ZmRjNGYyNWQ1OWIwMTZmYzhjMThiNyBsZWdhY3ktdHJ1bmsKKzI5MzgzIDZlYTllZWY5OTEwODQ3ODYzMDhmOTg3OGVhNjAyM2NmYTg5ZjcyZmMgcmVsZWFzZTIyLW1haW50CisyOTM4NCBkZjA1NWE5ZWZmOWNmOTA3NzhjMGRiZTZkYzMwYTkxMGIyMGQ3YzEyIGxlZ2FjeS10cnVuaworMjkzODUgMGJhYzY2ZTFiMzU2OTA0ZWFlNDJkNzg4MGNlN2IzZmE0NjU1YjY3MiBsZWdhY3ktdHJ1bmsKKzI5Mzg2IGFjY2QyZjU0ZTE4NDdhYzQ1YTllZDg5MDM5NDE4NGUyYWYxZWJhOGIgbGVnYWN5LXRydW5rCisyOTM4NyBkMzJjNDVkMjc4YjI0OTBkZjU1ZTlmNzA4MjNmMjExYWE4NDhlYWM1IGxlZ2FjeS10cnVuaworMjkzODggZjdkYTMzYmNlMWQ5Mzk5NmM4ZTdiY2YyNDQ2MDE2Mzk4MmY4Mjc2MiBsZWdhY3ktdHJ1bmsKKzI5Mzg5IGZiYTE2YjliYzk1MTdmNGJkOWY1NDNhMmZjMzg2MTVmZjFlNWU4MzcgbGVnYWN5LXRydW5rCisyOTM5MCBiMDYzODMyOWUzYjlhMWE5YjY1YmExYjcwYmU1YzMxMGZiYmU2ZWJkIHJlbGVhc2UyMi1tYWludAorMjkzOTEgZjJkYWUzZDlhNzViZDNjM2U1ODZkZTIyYTI5YzE2Yzk0MTI0MDdmOSByZWxlYXNlMjItbWFpbnQKKzI5MzkyIDhiYjYwMDNmN2Y1NGM1OTY2ZWFlZWU0OGU2ZDkwYmZkNTBiZjIwMGIgbGVnYWN5LXRydW5rCisyOTM5MyA1YjZkNTViNDUyODdjNDM0ZjYyZDEwYzc3ZWE0MmZiNzA3N2JlYWQ1IGxlZ2FjeS10cnVuaworMjkzOTQgOTkwMWZkYTdjMzY2NGE3Zjc1MzIzMmU5ZWE4ZGU4ZWZlMDFjZWI1OSBsZWdhY3ktdHJ1bmsKKzI5Mzk1IDRlZjc2ODZjNGM4ODlmNjcxNjY4NjJiMjNlYjQxNmQ5OTFiNjcwZjMgbGVnYWN5LXRydW5rCisyOTM5NiA0ZjRlMDI2MGI3NzEzMjM4MTNmMzdjZDk1YTBiZmYxNWMxMWRmYjViIHJlbGVhc2UyMi1tYWludAorMjkzOTcgZThmYzQ1OWVjMDE1NTg1YmZiMTAxMjk3MTliZjE1MTlmYzM2MTk1YyBsZWdhY3ktdHJ1bmsKKzI5Mzk4IDZlNDE0ZmJhNDZmNjhjMjlhMDg2NWNjYzVjZTRkYTlkZGQ1MWU1YTMgbGVnYWN5LXRydW5rCisyOTM5OSA4MzRiMGUwMzg5YzVhOWIzYTkyODk1NDI1Yzc0ZDY5NzA0YTM5NzVjIGxlZ2FjeS10cnVuaworMjk0MDAgZGM0YTAzMzZhMmEzM2NjMWM2YTg0OWY0MzFkNTM4MzYyNzIyNjZkZSBsZWdhY3ktdHJ1bmsKKzI5NDAxIDZkNTU0MmNhMjc3YTM5YTg5NzY0YzY3YTM3MDc4MjUyYWYzOTU2NGQgbGVnYWN5LXRydW5rCisyOTQwMiA1ODk0MWZjYjZmNWJjMTU2YTFiMWViOGNkNDUyNDdkNzQ2MjUyODUyIGxlZ2FjeS10cnVuaworMjk0MDMgNzA0OTI2OGYyNTJkMjcyNWU3OGQ5NTU2YWRjOWQ3Yzg0M2FlZGNkYyBsZWdhY3ktdHJ1bmsKKzI5NDA0IDc1NzU2Yzg1NThiZDkxMTcxY2M1ODQwNzM3MzY1ZGNlOWVkNWY1NDUgbGVnYWN5LXRydW5rCisyOTQwNSBkZWY5NjA5ZDkzNjljYThhZTZlZTI5ZDdhM2E1ZjM0YWY5ZWJlNDkyIGxlZ2FjeS10cnVuaworMjk0MDYgMzA2NWI1NGUzYWI3MWJmMTdkZjI2YTFiZDNiMGIwN2Q3Y2M5N2VmYyBsZWdhY3ktdHJ1bmsKKzI5NDA3IDExZmNjY2NkMzYwMDQ3OTE2NzRhNDVmYmYyNGNiZTAyZGQ5MjI2NmYgbGVnYWN5LXRydW5rCisyOTQwOCA3OTA3Mjk0Nzc2MTBlYTc3YjgxNjc3M2JkNzM2MDI2ZmRkNWU5OWFmIGxlZ2FjeS10cnVuaworMjk0MDkgMDRjYzEyYmRjZWRlYWE3NWJkNTRiMGU2MjlmZWIwMzE0YzU4OGRhZSBsZWdhY3ktdHJ1bmsKKzI5NDEwIGJlODgxNjE0ODQ4YjI4ODYzZmYyM2Q1N2ZlMDEwN2U4OTY2ZmVhMDMgbGVnYWN5LXRydW5rCisyOTQxMSA5NDI0MGFkNTBkYmUyZTcxYjhjYjNkNjhmZWE5NTEzZWM3ZmVkNzc1IGxlZ2FjeS10cnVuaworMjk0MTIgYjZlZTgwNDdiMjUwZDRhOTRkZmNjOTZmOGE5ZTVlYzJiMDI3NjNiMiBsZWdhY3ktdHJ1bmsKKzI5NDEzIGZiNTdkNTc3N2EyNDkyYjcyNzNmMDRmNWM4YTI0MDkzYTZiNDA2MjcgbGVnYWN5LXRydW5rCisyOTQxNCA0OGU0NjEyZjg3Y2Q5MjhiOWVmN2FjOTdjM2VjNmFmMzk4MDg3YTEzIGxlZ2FjeS10cnVuaworMjk0MTUgNDNmNzAxMDljZGE1YzU1OGJlMjk2NjljNWY0OTI4OTE2ZmE0ODA4OSByZWxlYXNlMjItbWFpbnQKKzI5NDE2IGUxZGIxZjkwZTE3ZjlkMzcwZjEyNzdmYWU5NGQ3NjYwYTE1NGFjOGYgbGVnYWN5LXRydW5rCisyOTQxNyA3Yjc3M2ExMjcxYzNkZjM4MjRmNzA5ZTA0Yzg1ZWY2YjdhOTQ4YjNmIGxlZ2FjeS10cnVuaworMjk0MTggM2RiNzcyZDQ1Zjk4ODZjOWJjMjMwMTY0MmIwYzkzNzhkZmUyNjQ0ZCBsZWdhY3ktdHJ1bmsKKzI5NDE5IDI2YjQ0MGMzN2M5NGM4OTI2MWNjZjk5MzNjNmNjZTNmNTZhMmNlMzcgcmVsZWFzZTIyLW1haW50CisyOTQyMCAyNTNlOWVkZmRmYzA2MGZmNzdiNDg5NmY0YWUyYjc3MWNmMDk4OWJlIHJlbGVhc2UyMi1tYWludAorMjk0MjEgYWFlMzc2NGM0ZDU4ZDQ5MWY0YzY1ZjFhYTJlMDA0Y2UxMDIxYjZlMSByZWxlYXNlMjItbWFpbnQKKzI5NDIyIGI5MjQ2ZjhmYjhmZDMwNGNlYzczNmVlYmFhMWQyMjlhOTg3MGU4YWQgcmVsZWFzZTIyLW1haW50CisyOTQyMyA4MDhlNTEzYTJmNWMyZmM0ODg5NmY4N2E3NjIxM2FhMGRlNjA5Y2ZkIHJlbGVhc2UyMi1tYWludAorMjk0MjUgODU4NWZkOWFlY2VmOTVhZGU2NTg1ZjgxZDhmNzlhMTJkNjQ0OWYyMSBsZWdhY3ktdHJ1bmsKKzI5NDI2IDM2ZDQxOGJlYTU1MjE4ZjBmMGY2MTA0ODNmMjU2YTQ4YjYzOThhNTcgbGVnYWN5LXRydW5rCisyOTQyNyA0NDVmZWIyNmFkZmI5YWE1MjAxZjI2NDU1ZWJiMzA4MDRlOWRhNjFmIGxlZ2FjeS10cnVuaworMjk0MjggZjRmMTc2NzhmZGQ4NjU4ZGJhNGJmZmQ5ZTkyMDIwMWQxMGZmMzA3YyByZWxlYXNlMjItbWFpbnQKKzI5NDI5IDk0OWVkODM2NWQ1OGQzNTFiYzcyMDU1NmEzMWVkMGZlMmJiNTRhYTIgbGVnYWN5LXRydW5rCisyOTQzMCAxOGVkZjIzYmY0OTkzZDcxMDI5NDdlMzQ0Nzg5ZTNjMTM1YTA0M2VmIGxlZ2FjeS10cnVuaworMjk0MzEgZGJhNjBkMDI0ZTQ4NDM2M2EyZjhlOWNkMzk3NGVlY2E3YjQ0YWIxOSBsZWdhY3ktdHJ1bmsKKzI5NDMyIDA5NjY0MmQ3ZWNhMjViYjdkMmNiMjI2MzI1ODhjNTIxODBkYzcyZTAgbGVnYWN5LXRydW5rCisyOTQzMyBmYzZhMTlmNjlhYzdlMmI2MGVlNzljZWZhMmZmYzE2M2UyZDA5ZjM3IHJlbGVhc2UyMi1tYWludAorMjk0MzQgMDFiZjljODhkOTYwMzZiNjY2MmExNTkyN2FkZDI2YzI0YzQ1NmNlMyBsZWdhY3ktdHJ1bmsKKzI5NDM1IDcyNzM0YjM5ZjhhYTBhY2Y1MjZhZDIzYTY3OWFlZmE0NmFhMDI4YWUgbGVnYWN5LXRydW5rCisyOTQzNiBkOTBlZjQ2ZDA4MzgyOGJjOTVjMGJkNDZiOTExZWZlYmM5MmJlNzMxIGxlZ2FjeS10cnVuaworMjk0MzcgNGEyNGM2YTY0MjlhNjY3MzUwN2UzYTZiNzk1MzA2ZjU5OGQ2NzcxOSBsZWdhY3ktdHJ1bmsKKzI5NDM4IDkxZDNkNDQ1MmM0ODIyMGI0Njc5NWMwMzNjYzRjYmU0ZjMwNTdiMTYgbGVnYWN5LXRydW5rCisyOTQzOSBlMzQ5ZmUwOTNiMzRhOTE4NDlkMTg5OWFkYTU1YmEzYjI5OWI3ZDM0IGxlZ2FjeS10cnVuaworMjk0NDAgMzIzZTRjMTE0NmQwYzYwMjVmNmJmZGU0OGMyZjEwNjQzMGU3MjIwZiBsZWdhY3ktdHJ1bmsKKzI5NDQxIDU1MTdjMzZhYzQ5N2RjMzY0MGIwNmJjZGI5MWVkOTQzOTdhODlhNzQgcmVsZWFzZTIyLW1haW50CisyOTQ0MiA2ODc1YmQ3Y2I1NzA1NzNlZWMzM2NiZTY3NDM1ZWIxOTBjY2FhYmViIGxlZ2FjeS10cnVuaworMjk0NDMgNWI4MjhmZmUxYjM1ZjAxZWU2Y2JlMzcwMjE1ZTdiM2M3ZDlkOWI3NSBsZWdhY3ktdHJ1bmsKKzI5NDQ0IDQyNTJiMDRmM2VlZDYzNGNlMjNjY2QyMDdmOGU1NTY0NDJmMTk0ODYgbGVnYWN5LXRydW5rCisyOTQ0NSA4ZTczMzgzNDc0ZWFlYjdlZTI5MmY2ZDM5YjYzOWRjNTY5NTNiNTBmIGxlZ2FjeS10cnVuaworMjk0NDYgZDdkYTA4MGQ3NzYzMDRjOGJjMzllZDc1N2RlYjE3ZWFkYWEwOWZmMSBsZWdhY3ktdHJ1bmsKKzI5NDQ3IDQ3MmE0MmUyMDI0NDA5YWRjNTk2MGE2MzAxMmQyMjk1ZjhiMDM5MGUgbGVnYWN5LXRydW5rCisyOTQ0OCBjYjgyOThhNmVkNDdjNDRkZGYxMDY1MWE2ZTcwMmFlNDE5NjkxNzE4IGxlZ2FjeS10cnVuaworMjk0NDkgNjY2MmY5ZDQyMjBiNWNkYTA2NDVlMTZiNjM5YjNhYTk4NGYwODE2YSBsZWdhY3ktdHJ1bmsKKzI5NDUwIGE2OGM2ZDYyZmU3ODhkZjQwMDQ5MWQ4ZjY4OGFlZjM5NzI5YzRmZDIgbGVnYWN5LXRydW5rCisyOTQ1MSAwNDBhZjljNzM2YmIxOThiZTg1MzYzMjdmYmYxMjc1M2RlNWVjN2MwIGxlZ2FjeS10cnVuaworMjk0NTIgYjY0NzhkNDYzNTU1NGJlMTUyOWFlOTVkYTg5MTI0ZWNkNWJkMzE2ZSBsZWdhY3ktdHJ1bmsKKzI5NDUzIDJkODM3ZTIwODNmYWYzNTA5NDJkNmM0NmY2ZDhiOGU2NmE3ZThlNDUgbGVnYWN5LXRydW5rCisyOTQ1NCAxZDAyYjQwNWUzMWZiMjE5YzA3NTJkNDAyMjk4ZjU5ZDIwMDU5NTZlIGxlZ2FjeS10cnVuaworMjk0NTUgNGYxYjczOTZhM2M1NDI2ODk0NDc3ZTczMWViYjgwOTMzMTYzY2JhMyBsZWdhY3ktdHJ1bmsKKzI5NDU2IGQ4MTJiOGFhZWZiMzFiNDY2MmZiNmI1NmNkOTY5OWM3Yzc0NGJkYTcgbGVnYWN5LXRydW5rCisyOTQ1NyAwMTQ3ZWJlZjk0NTNjMzYxZjQzODQyYTllMzM3YTViYzQxYmJlMWNmIGxlZ2FjeS10cnVuaworMjk0NTggMDZlMDA1NjY2YzQyMjkxZjhmZGQwYjU2NTJkNWQ0NjI0YTJhODI0MCBsZWdhY3ktdHJ1bmsKKzI5NDU5IGUxYmY0NjA0YzBhNTg0YjFiYjE4MDQ4MjM5MDY1NTc3ZTgyNmUyYTkgbGVnYWN5LXRydW5rCisyOTQ2MCBkMzA4ZGY4MjRlMmQxNWJjMDEyZjljMTdkYjI1NzNjZjE5MDFkYjI4IHJlbGVhc2UyMi1tYWludAorMjk0NjEgMTUyMjE5ODA3MTQ0NzJkMTIzNGEwNmJhNGIxOThjNzNiMTVhYzI3NCBsZWdhY3ktdHJ1bmsKKzI5NDYyIDE0MjViZWEyZWE2NmExMGM4ZGIzOGJiYTAzYTVkODc0MDFkNzg3NDYgcmVsZWFzZTIyLW1haW50CisyOTQ2MyA5Y2VkM2U1MTg3ZWUxZDY2NThlZDQwZTMxZmRiMTA3NDRlNWZkNjc0IGxlZ2FjeS10cnVuaworMjk0NjQgNmUxMWFlMDRhZjEwOTQ5YTYwZTVkYmNhZjcwOGI3ZWEzMDJiNzAyNSBsZWdhY3ktdHJ1bmsKKzI5NDY1IDkwZjRlZWVmYzUxNmY5ZjNkM2UwN2MxMDVjMzFhZGYzN2YxMDBiODIgbGVnYWN5LXRydW5rCisyOTQ2NiA2MTFhZjc5YzBlODkyYjRlYzM0M2JhMGQ5ZjI5Yzk1MmJkOTFmZGVlIGxlZ2FjeS10cnVuaworMjk0NjcgMjczY2FkN2Y3ZGY3MjE5NjdkYWJiNGM0NGUxZWQ3M2E3NDJlNDFjNCBsZWdhY3ktdHJ1bmsKKzI5NDY4IDE5NzYyYTQ5MzZmYzg0YjRjMDljZTA1ZjQ2ZTE5MWEyNjIwZTJkZmEgbGVnYWN5LXRydW5rCisyOTQ2OSAwZmRmY2NkZmVjMDZmMmVlYzI0NWIzYWNiYzkxNzNlMjM3YzYyZTk2IGxlZ2FjeS10cnVuaworMjk0NzAgOTBhMDljZDE1MzA1OTMxZGY1ZDAxNzY0MzI4YjYwOTdlODNhYjlhOSBsZWdhY3ktdHJ1bmsKKzI5NDcxIGJiODEzMzQ2YjIyN2VlMWM5NjQ2MWYyYzNlNWEzOTg5NGZlNWU3YTEgbGVnYWN5LXRydW5rCisyOTQ3MiAxYWFhMTJjMDhiMzU5NDlmOTRkNTI5NjRhNmFkNjY5N2UwODZlYTJhIGxlZ2FjeS10cnVuaworMjk0NzMgYTc1MzZjZWIwNmY2M2NiZmVmYzIwOTJhZWFjY2I2ZDI3OGE2MzQ4MCBsZWdhY3ktdHJ1bmsKKzI5NDc0IDU0OGU2ZmZiZmY3NTdhYjg5NmFjZTA4OTI1MDY5NzYyOGYyYWZjYjcgbGVnYWN5LXRydW5rCisyOTQ3NSAzZjNiN2E2MDg2YjczYjNiZWIwYzg3N2I4MzZlN2JiNTlkYTljMmQ4IGxlZ2FjeS10cnVuaworMjk0NzYgOGE4OGU5NzdhNzFiYmU2M2VjMGI3YzY3MmZhNzJkM2YwZjQxMmYwNSByZWxlYXNlMjItbWFpbnQKKzI5NDc3IDgzZDIxZWE5NDU3ZGIyZWNmYzZkMTkxNDYzZDlmMmJkZjlhZTI5YmUgbGVnYWN5LXRydW5rCisyOTQ3OCBiZGUzNjYwNTQyY2QzZTE5MGFjOThmNmJkNWVhYmQ3NGIzYjk4ZmUxIHJlbGVhc2UyMi1tYWludAorMjk0NzkgNDFlY2FlYzViNGY4MWVmODNkYjdlY2MzNTIwMjBhM2RjZWJlYjZiZSBsZWdhY3ktdHJ1bmsKKzI5NDgwIDcyMDU3ZWY5MDJhYWVlMDcwZDExZmNkMzNmMzQ0MWJkZjc1NjYxMmMgcmVsZWFzZTIyLW1haW50CisyOTQ4MSAyOGNmZjYwYTYwOTcwMmRlNzk5MTcxOTY0MGU5NjA1OTFkNjc2ZDAxIGxlZ2FjeS10cnVuaworMjk0ODIgNDk0NmQ0ZjM3ZDg0ZTJhYTQ4ODhkYzBlMWFhYzU1ZWY4ODk4YTlmMSByZWxlYXNlMjItbWFpbnQKKzI5NDgzIDNkNjI3ZTNkOTU2MTM2NTIxYWE3Yjc0NDMzZDMzNzEzNTIzOWE1MTQgbGVnYWN5LXRydW5rCisyOTQ4NCAzMWI1ODQ5Y2FjNDJmYjU4MTM0MTUyYmYyZDEwNDE5NGQ5NTJjMjI0IHJlbGVhc2UyMi1tYWludAorMjk0ODUgYjI4ZTliZjBmMDQ2YWU5YTNjYzlkMTA4YTM0MzA5NmY0MTVmNzZiNyBsZWdhY3ktdHJ1bmsKKzI5NDg2IDAyOWU3NWZmZTc1MGQzNGMzYWRlMDUyMjEyZTIzMGNkZmQ2OTZjZmMgbGVnYWN5LXRydW5rCisyOTQ4NyAzNmVhMzFiYzkwNzY1MGUxMDRmODg2N2VmMzUxOGQ5OWUyOTEyZjUxIGxlZ2FjeS10cnVuaworMjk0ODggMDNiMDI3MGUxMTZiMzcyYTVjODEzZDhmMDQxZDllMmZmYjMwMWQxYiBsZWdhY3ktdHJ1bmsKKzI5NDg5IGM2Y2EzOWIxNThjZGY5YjM2MDNlZjgzMTk1ODhjNmUxMDFlNzUzMjcgcmVsZWFzZTIyLW1haW50CisyOTQ5MCAzMjYzYWQ0ZmNmODExYTE1N2VhOTkwZWNlOGI5MzhjOGRhODJlOWY4IGxlZ2FjeS10cnVuaworMjk0OTEgZDQyNDU1OGQyNGY5MDMyYTlhYTBkNzU1NGIzMTRhNjJhM2RmZGM1NCBsZWdhY3ktdHJ1bmsKKzI5NDkyIDViZTVjODRkZWEyM2ZmNzAyNDhkNjQyOWEyYTM4MmViNjI1NmM4ZjUgbGVnYWN5LXRydW5rCisyOTQ5MyBiZDY3N2M4ZTQwNjcwMjQ5NDZhY2Q2ZjBiOTYwMzk0MjZkNmI1N2ZiIGxlZ2FjeS10cnVuaworMjk0OTQgMzZkZTVhNzMxMjU3ZWJhYjE0ZWMxMWZkZmMyOGVmNDY2NGFlOTFiMSBsZWdhY3ktdHJ1bmsKKzI5NDk1IDliZmQ0N2E5YzhiMzUwMTk0YmZkNTk4NWMyMzI4ZWM0MzIxOWFjMzcgbGVnYWN5LXRydW5rCisyOTQ5NiA2ZmE1Yzk1NDA4ZWJkODQ0MThmODAzZjFhM2YwYTE3MDg3YjVhNTYxIGxlZ2FjeS10cnVuaworMjk0OTcgOGUzMjQ2ODQyNzczNGM5YWExNmI1NDIxMDY0YmViYjE3OWE2ODNjZiBsZWdhY3ktdHJ1bmsKKzI5NDk4IDc1ODMwMWVlMGJiNzY1YzhhZGU3OWJmNjQyYTFiZDZlMTYzYjcxZmIgbGVnYWN5LXRydW5rCisyOTQ5OSBmNTRlODkyNzJhZGVkMjk1M2IxOWEyNjcxNjMwOWM0ZmIyYTE4OGExIGxlZ2FjeS10cnVuaworMjk1MDAgOWI0NzM4NmJhNWI4MDU0Yzc3ZmU3Nzk5ZTdlZmVjZmJkODU0ZjQxNiBsZWdhY3ktdHJ1bmsKKzI5NTAxIDEyNDRmNGMzODM0ZjQ5MDIyZmJlODJiYjRhMTk1YzZkNDVjNmNhMjUgcmVsZWFzZTIyLW1haW50CisyOTUwMiAxOGUwOTcyMDczOGY2ZmY1MzFkNzc0NjU1NGI5ZjA0YWFmMDE0Y2I4IGxlZ2FjeS10cnVuaworMjk1MDMgMGJkYTIwYWZlNjIzM2ZiMzdkMjk5MTQzZjRlNDZkNjVmMGE0MmFhZSBsZWdhY3ktdHJ1bmsKKzI5NTA0IGQ2OGZjNDlhNzA5NjAxYmMwMDliMzJiOTZhNWNkNGI4MmI4ODkxYzMgbGVnYWN5LXRydW5rCisyOTUwNSA2NGE5NmI5N2UxZTk3Y2ViN2NkNWM2M2ViNzNiZDBmZWZkNmY2NjFiIGxlZ2FjeS10cnVuaworMjk1MDYgMmRmOThmZjJjZGRhMWE2NTI3NjQxMWNlMTNiNGRiYWQ0ZTY5NDE0MSByZWxlYXNlMjItbWFpbnQKKzI5NTA3IGEyZjM2OTM0NjM5MzA3ZWJmZTA2OGM5NDc2MDc5YTY5NTUwM2MwOWUgbGVnYWN5LXRydW5rCisyOTUwOCBmNTQzOWY4MTMzZjg1N2IzODlmNjlhNGFlYTVhMTFkZDMxNThlOGI4IGxlZ2FjeS10cnVuaworMjk1MDkgMjI1ZWExZjUyZGU5NWE5MTk2MDU1ZWI5OGZkMWE2YTVlMGYwNjNjOSBsZWdhY3ktdHJ1bmsKKzI5NTEwIDFkZTdhYzcyOWJmYTkyM2EyZTAwZDYyNTg4MjYzYTM4YTEzYmE4NTYgcmVsZWFzZTIyLW1haW50CisyOTUxMSAxODNmYzIxZmI4NjYyMzIzZGNiMzI5ODAzZjMzZWVjYTYyY2UwMGVhIGxlZ2FjeS10cnVuaworMjk1MTIgNmVkMmUyM2FhZTQ1NjUyMzgwNmUyZmQ3MTJmNDY3OTdlZGZkNDg0YiBsZWdhY3ktdHJ1bmsKKzI5NTEzIDc3MWI2ZjUyMWI5NTYxZDhlNDJlOTI0ZDFhMTU0MzNlNGM2OTM5MjMgbGVnYWN5LXRydW5rCisyOTUxNCA1MjFlODljNGZmNDQ3ODIwOTE3M2E0NTg5ODhmMzAwNjFiMTJhNjNiIGxlZ2FjeS10cnVuaworMjk1MTUgM2E3NjA2YTIyMzdiYjY5NTcyMWNkMDYzOTE1YjM1YTUwMmRkNjlhNiBsZWdhY3ktdHJ1bmsKKzI5NTE2IDUyNWNkZGI3NjgyYWNlZTdlZDhiOTM4NjRhNTc4ZDIxZTg3MjAxYWIgcmVsZWFzZTIyLW1haW50CisyOTUxNyBlOWFhMzk0YzcxOTE3MjdmYmFjNWY1ZTg1ZDgzZWQyOWM4ZjZjOTc2IGxlZ2FjeS10cnVuaworMjk1MTggY2UzNjljZDU2MjZiZTcxNDFiM2I4MmE2ZjhkMmQ5NmIwODhiY2NhYyBsZWdhY3ktdHJ1bmsKKzI5NTE5IDRiODA0NGQxZjFhYzMyODE5YTZjMGI2MDExOWM3MDZmNTdkOTFiMGYgbGVnYWN5LXRydW5rCisyOTUyMCA5ZGEwMjY5MzdmYTUyODA5NTBjNTg3OWIwZDY4ZjU4MDQzYzc5YTU0IGxlZ2FjeS10cnVuaworMjk1MjEgMWM5OWE1YTBiODdiZGU2MDJkZGEwZmJlZGNmZTQzNWExNGU0ODU0YiBsZWdhY3ktdHJ1bmsKKzI5NTIyIDZlZTJmOWI0YmY1YzRiNzJmYzEwNzc0NTU2M2JlOThmMWM5MmYzNjIgbGVnYWN5LXRydW5rCisyOTUyMyAxZGJhYmM1YmVmZjdmNTVhOWJiYzQwMmI1YmE4M2U3ODNhNjAzOGJmIGxlZ2FjeS10cnVuaworMjk1MjQgYTU1OTk3NDBhNmU4MGY5MDgyMWE2ZTgxN2Q5NTliZGE4Y2U2ZmNlMyBsZWdhY3ktdHJ1bmsKKzI5NTI1IGI0YTYyODNiOTE1YmM2MWQ1YjY2OTllYzNmNDk1YTJlOGJlOTA3ZTkgbGVnYWN5LXRydW5rCisyOTUyNiA1ODE5YzQ0MzliYTI0NjRlOWEzNDRlNDdkNDc5ZjFmNjI0MTAyMzRmIGxlZ2FjeS10cnVuaworMjk1MjcgYzU0NzE2YWVkMjZhMDZkZWFhNmE5ZDUxZTI0ODhhZTM5ZjIzMWI2ZCBsZWdhY3ktdHJ1bmsKKzI5NTI4IDFiNGM1ZTY2YTRiNGFkMTdjYTEwNWJjNDhmYzllZTZkMDcwNDllOGIgbGVnYWN5LXRydW5rCisyOTUyOSA4MTIxMzU4ZTMyMTcwM2E1NzRlODlmMDdkNDYzNTcwMWZiNjM4YWIyIGxlZ2FjeS10cnVuaworMjk1MzAgNjk2ODY0YWEwNWQzMzQzMTAyNTA3MDI1NjBmYzlhZDYxNjA3MDE2MSBsZWdhY3ktdHJ1bmsKKzI5NTMxIDZhNDI1MzZmYjllZWJiOTkwMGU0ZWJiYWYzOWE5MTc2NTkxYWQ4MzEgbGVnYWN5LXRydW5rCisyOTUzMiBiYTIxOTRhZDNiNDIzYzNlYjgzYzhkNDM4MDgwYjQyNjA5OTk5MGQ1IGxlZ2FjeS10cnVuaworMjk1MzMgMWEzMGVkMTlmNjRhZmY5MGMwZTFlNjEwNWEyZjMxMDM1MGU4OWQzMiBsZWdhY3ktdHJ1bmsKKzI5NTM0IDEzYjJlYzUzNmUwNzA1ZTk4MTNjM2RjYTU2Yzc0MzZiYjRkYTQzODQgbGVnYWN5LXRydW5rCisyOTUzNSA5ZGQ5Mzc5YWM2ZDY3OTNiNzc2OGIxYjlhM2M1Y2Q0YjgzODlhMGNjIHJlbGVhc2UyMi1tYWludAorMjk1MzYgM2MyM2U0YzNkYTAyMDg2ZjVhNmZjYjcyZTM0NzZhZjI4ODdkNjliZCBsZWdhY3ktdHJ1bmsKKzI5NTM3IDk1MWRhY2MyMTg0N2Q3MDUwZjIxODc5NDhhZjhjZWQ1MWYwMDI3MTYgbGVnYWN5LXRydW5rCisyOTUzOCA5YjViN2RhMzYyYTVjNmZhNWRlZjMyMDFiYjU1NDcwYzc3ZDYyYzQ4IGxlZ2FjeS10cnVuaworMjk1MzkgMGRiZDZiNzNhYmQyMzFmMTM4OWY5NmU2M2RkZDZjZjE0NzlkNTRlMiBsZWdhY3ktdHJ1bmsKKzI5NTQwIGZlNmU5ODk0YzJkNDJhNGJhZWNiZDA2YzhkOTVhYjkyOWI3ZTBmNWIgbGVnYWN5LXRydW5rCisyOTU0MSA5NTE0MDc5MzIwMDE5ZDY5ZDAxNzdkZDgxMmUzMWE4ZTg3OWE0MDc4IGxlZ2FjeS10cnVuaworMjk1NDIgZDI3ZTVjYWQzOGQ3ODI0ZTRlODgwOWYxZWMxZGJmMTFhMzMyOWJjZSBsZWdhY3ktdHJ1bmsKKzI5NTQzIGVmNTg5M2JiNzllZjM5Yzk5Yzc1NjQ4MTc0MTFlZGE1OTE5NjE5NTIgbGVnYWN5LXRydW5rCisyOTU0NCA4N2I3ZmFlMTBhMTkzMDc3N2I5M2ExNzJmMWE3MGIyZGEwZTcyZWVmIGxlZ2FjeS10cnVuaworMjk1NDUgODY4ZmYwZGZhYmQyY2JiMDY0OTQwYTIwOWJjMzA4MGFlYWY0NWU4YSBsZWdhY3ktdHJ1bmsKKzI5NTQ2IGYyZWQ3MjJmZjAwMzUwYzI2MDgxYTZiY2M4ZTg0ZDkxYTMxZWQ5YjcgbGVnYWN5LXRydW5rCisyOTU0NyA4OGJiYzMwYjA4NDc4ZDEzMjY3MzJhZjk1YzQ3MWU3YmNlZWEyYTAyIHJlbGVhc2UyMi1tYWludAorMjk1NDggYjA2M2M0M2Y0ZGYwMzJjZTg4MWQxMWM1NzgxMmQwODZlNmExNjBkOCBsZWdhY3ktdHJ1bmsKKzI5NTQ5IGRhYjJjMTJiNjgyZTc4NzU1ODcxYzM3YmFlOTRlOTlhYjJjZjU3NTcgcmVsZWFzZTIyLW1haW50CisyOTU1MCA3ZmE5M2I1ZGRmYmQ0OTI1N2U0MzIyNGE4MDkzODgxNTU5NjgwZjA1IGxlZ2FjeS10cnVuaworMjk1NTEgZDJiZTc5NmM0YjgxZDdiOWE3MzcyYmE2MWE0YTFjYmViMDVkNjkwZiBsZWdhY3ktdHJ1bmsKKzI5NTUyIDFhZmNhMzc1ZjJhOWUzNmYyODk5MTViMDYyMzUyMjhhZDU0MDk2YWYgbGVnYWN5LXRydW5rCisyOTU1MyBmM2Q0NDkyNmExYmVmZGVmZDdlMGZhODg0YjRkZjE3YWNkMjA1MWE0IGxlZ2FjeS10cnVuaworMjk1NTQgOTgzMjJjMDc1ZjRkOTUzODg2MjVjN2IwYmNlMWQ1MTc3ZDY0MzdlMCBsZWdhY3ktdHJ1bmsKKzI5NTU1IDUzYTM4MjM0NDhkOTNhZjIzZjdlOWM0Mjk0YWEyZDg1ZTFkZjg2MzkgbGVnYWN5LXRydW5rCisyOTU1NiBjYWIxNjc2MTNlNDNiNzM3YmY5NTRjODJkNDNkY2Y1YTI5OThjNTdmIGxlZ2FjeS10cnVuaworMjk1NTcgMTNhZjgwZjAyMDgwMDhmMTJhMDAwZmE5YTQ2OTNmNTcwYmNhY2ZjZCBsZWdhY3ktdHJ1bmsKKzI5NTU4IDk5OWFjY2ZhOTFjNTZkYTdhYThlYjIzMjYzODRjNjgzMzI3ZjJlY2UgbGVnYWN5LXRydW5rCisyOTU1OSBmM2E2NDAzNWJhOGJmMTk2MzI5NTM0ZTI3ODBiZGZjOTliMTdkM2FhIGxlZ2FjeS10cnVuaworMjk1NjAgMmMxYmJmYzEyMmMxYTY2ZmVkMjY2NDBkMmVjZTEyMDdkMjEzYThiMiBsZWdhY3ktdHJ1bmsKKzI5NTYxIDRhMjg4YjQ5NGNiMmM5YTgwYWQzZTNkNDE5MjczNGEwY2YxZTU5ZGEgbGVnYWN5LXRydW5rCisyOTU2MiBkNjllOGE5ZmVkMTFmY2YzNTk4MjQ1MDlkYzFjMmZmOWYzZTFhODZlIGxlZ2FjeS10cnVuaworMjk1NjMgMzRlNzBiODliYmI3MjMyNDNhNjkyMGQwZTJlYmYzOTFiNzZhYzQxMCBsZWdhY3ktdHJ1bmsKKzI5NTY0IGI1NjRlYzRiN2U1YjMzMTllNDJjMzcyNjkwZjY3MzA0NTljOThkOTkgcmVsZWFzZTIyLW1haW50CisyOTU2NSBmMzUzNzMxN2IxYjI1YTZmMWUwNDRiZjU1MDgyNmMzMTQ3ODkzMWJkIHJlbGVhc2UyMi1tYWludAorMjk1NjYgMzUxNThmZDYwYjNiYTIyYjcyZDhhZjM5YzkxNzc5NGNkZjg3NWI4YyByZWxlYXNlMjItbWFpbnQKKzI5NTY3IDYyZjg4YzAyYzk4NzI4ZjMwNmViNmJkMWUyN2FjN2I4MDU5YmUzNWUgbGVnYWN5LXRydW5rCisyOTU2OCBkOTQ3NGMwNDQ1YmFiZjU1NmFlNDE3MjhiMjU2NWQwNDJkOTI5NzFjIGxlZ2FjeS10cnVuaworMjk1NjkgNTI2NTJmYjg2NDlkNzMxYWQ5ZDcwOWFhM2FmODY3NjYyODY3ZWIwMCBsZWdhY3ktdHJ1bmsKKzI5NTcwIGZmMWM2MDQ2ZjEwYjk0N2Y2MWE2ZjhhODcwNjQ2NzAwZDNlM2U3MDMgbGVnYWN5LXRydW5rCisyOTU3MSBmNjJmNzczYmM5ZmRkMmEyZDlhMGY2YTMzYWM4YjA0YTJiMzQxYTI0IGxlZ2FjeS10cnVuaworMjk1NzIgZjQ2NzQyN2UwM2ZhOWQ1Y2JjMWQzMjMyYmNhNzg3NWY1MzQ1YTE1YyBsZWdhY3ktdHJ1bmsKKzI5NTczIGNiYmY3ZjI0MjVkOWUxMDhhMjY0OTMxYTlhZjA0ZTIzNWRmZjFkNWEgbGVnYWN5LXRydW5rCisyOTU3NCBlNTI2MzY1ZGRjY2RmZDBlZGQwMDk5OWIwYzk0ZTU2Y2QwNGUwN2VjIGxlZ2FjeS10cnVuaworMjk1NzUgOTMzYzZkNjA4ZDAxYjNjZDQzMDk3YTMyMjYxZmM5MTliM2NlZDFiOCBsZWdhY3ktdHJ1bmsKKzI5NTc2IDEzNWYwOGI3M2JkNWQ4YjFlNzEwYTFjZjk1YjBiZjM5NTY2ZjFjYTEgbGVnYWN5LXRydW5rCisyOTU3NyA3NTYzMTlhMTM3YjgzMjZkZjBhMGM4MmU1ZGY1NTEyNTU2YjZhZjY3IGxlZ2FjeS10cnVuaworMjk1NzggMDgyMGFkNDk4MjlkODBiOTg3NTgzNGJjMzI3YmJhZDM4YmEyNmYxZSBsZWdhY3ktdHJ1bmsKKzI5NTc5IDFmMzY1Yjk4ZjExY2M1NDVhYjFjNmU5NzFiZWFmNDc2NGQ1ZWM3MTkgbGVnYWN5LXRydW5rCisyOTU4MCAwODExOTA0ODRhZjYxNjE2YWExYzdlYzk1NDA2YWFiMjA3NWNmZDhiIGxlZ2FjeS10cnVuaworMjk1ODEgMDA4NDgzNDJkNDk4NGFlNDc1YzNkMDk4YzgzN2JhOWViNDZlZmFhMCByZWxlYXNlMjItbWFpbnQKKzI5NTgyIDUzZTkwNDFlZmJlM2ZkNmE0OTE5OGY2NmNiMGY0N2Y0ZDgzMjAzZjUgbGVnYWN5LXRydW5rCisyOTU4MyA1NDA4ODFlZTJkNGFjYzRjNTg4NjczOTBhOTY3YTc3YjVhNTI5YzI4IHJlbGVhc2UyMi1tYWludAorMjk1ODQgZWYzZjY5MjlmYzBlMTk1OTU0YmQ1YTdkNTY0MWNjZjgyYjhiNDdkZCBsZWdhY3ktdHJ1bmsKKzI5NTg1IDI4MzI2MjhlZThjYzg0MDhhMzY2YWFkOWI4NGRhMWRiNzAyZTQwZjQgcmVsZWFzZTIyLW1haW50CisyOTU4NiBlNjFiOTQ2NDc0ZGZjNjkyODJjZDkxN2ViNmEwZmMzYzI4OTg2MjkyIGxlZ2FjeS10cnVuaworMjk1ODcgOTY0ZDZiNzljMjJlMmU5YzNkZmFhNTM4MzExYjcwZDdmY2I0YmFiNiBsZWdhY3ktdHJ1bmsKKzI5NTg4IDI2NzM3MzJhZDVmMTkxYjY2OWFkOTQ2MzQ4NzZkYTNkZTA2NTU4ODQgbGVnYWN5LXRydW5rCisyOTU4OSBhZGFhNDUwZTdkNzBkYzAyMWEyMTc0YWU5ZDQyNjhhY2VlOTQ3NGU3IGxlZ2FjeS10cnVuaworMjk1OTAgOWZmZWE1MGU4MzMwMTc3OWE4ZDBiMDRlYjIzYTk0MGI2M2MyNWFmNCBsZWdhY3ktdHJ1bmsKKzI5NTkxIDJmMmEyZmQ4NDRiZDc0YmE4ZjY0MGI0NDliNjcxZWFmZGNjNGJmMjUgbGVnYWN5LXRydW5rCisyOTU5MiA5MDQ4MjA3OTkyZjAwYmI1M2NhMmRlMTU1N2RiYWQ0MGI3MWI1ODg5IGxlZ2FjeS10cnVuaworMjk1OTMgODk2NWEyYjgwNGI1MDQ5NWJjZjcxMzc5ZDJjZmExY2QxMWNhNzdlYSBsZWdhY3ktdHJ1bmsKKzI5NTk0IGU5YWViZDRjZjU2Y2Y0ZjgyNjhiMmFmMGYzZGU1MmQxZWY0YzYwMmEgbGVnYWN5LXRydW5rCisyOTU5NSA5YzRiYmIzYmJkMGRlNzIzNmVlNTUyNDM4N2FlOWI5MzFhYzUzYmY1IGxlZ2FjeS10cnVuaworMjk1OTYgMDA0MjE2ZDdhMWRhYmMwMDlmMmYwOWYxOGQ0ZTllZmJjODc0MGQ4ZCBsZWdhY3ktdHJ1bmsKKzI5NTk3IDFlYmI1ZGM3ZjY5NmVmNzUyNzc2NjA3Nzg5NTVlNDlkZGRkY2NiYzcgbGVnYWN5LXRydW5rCisyOTU5OCA2NDE2Nzc2MDk5OGM0MzE0MzliZGViODYxYmUxMjkyYTg3NTFkOTBmIGxlZ2FjeS10cnVuaworMjk1OTkgM2FkNGZhZTllZDNhZDBjNmM4NDQ1NTA2Y2U3ZTFkYzQ4NmZkYTEyNSBsZWdhY3ktdHJ1bmsKKzI5NjAwIGNmYjMxN2U0YTc3MDFkMmJmZDRkMmU0NzRiNzUxOWZlZmNlZDY3MDggbGVnYWN5LXRydW5rCisyOTYwMSBhNmQxNmU4NGZlYzA1NGU5NDIxZDFkNWQwNmNkN2ViNjE3ODVmMjI3IGxlZ2FjeS10cnVuaworMjk2MDIgMDk5ZDM2Y2JiYjYxMWFiNWZiMzI0YmIyZjQyNTYzYTA0MTMwNGM4YSBsZWdhY3ktdHJ1bmsKKzI5NjAzIDk4ZjNmZDFlZDQyZjA1NzY2NTUyMmQ5NDFmMGU2ODc3MTRhODMzNmYgbGVnYWN5LXRydW5rCisyOTYwNCBlMjIyNmQ0N2ViZjAxMjk3Yzk4YTFhOTA3YjRhYzU5MTBiZDQ0ZGI2IGxlZ2FjeS10cnVuaworMjk2MDUgMjNlZjdjMTYzYTEyNTAyOWY1MTA5Yzk4NTU3MTViMzk4YzdlNTVlYSBsZWdhY3ktdHJ1bmsKKzI5NjA2IDQyMDMwNDdlMjAyMjM3ZTRjOTFhOGRlNDI1YjA1MDBjYTc1ZjlmZGEgbGVnYWN5LXRydW5rCisyOTYwNyBhNTZjOTBjZmMwMGMwZGJhNzUwNzEwOTE3OGU4MzliYTcxYTJlMDRiIGxlZ2FjeS10cnVuaworMjk2MDggNDJjZjFiNWU2MzkyNmY2ZGRhMzY5ZWQ5ODZhZTE0ZDE0MzE4MzBiOSBsZWdhY3ktdHJ1bmsKKzI5NjA5IGU5OGEyMTMxMDFiMzhhOWI4ZDUzYjhjMWMyMTJhNTI4MDE0NzEzY2EgbGVnYWN5LXRydW5rCisyOTYxMCA0YjkwNWUxOTgzYjYxMGIyNWEzNTM1Yjk1OTIwNzJhNjk4N2ViN2E0IGxlZ2FjeS10cnVuaworMjk2MTEgMDc2NTEyYTBjNmMyMmM5MmI3MjgzMjE0Y2Q4OWI0MDBiMmZhNmI2OSBsZWdhY3ktdHJ1bmsKKzI5NjEyIGY0Mjc4YWY4ZWVmYTAyYmFmYTc5Njg2ZmQ5ZWM0YmIyMzhjYjQ5YjQgbGVnYWN5LXRydW5rCisyOTYxMyA2ZTQxY2ZkMjViZGYwZmUyODZhMWQ2ZDczM2RjNTcwZjk5ZGE5YWRmIHJlbGVhc2UyMi1tYWludAorMjk2MTQgYTJhZTYzNWU0M2I2MTg3MTEyNTg1NzIxZDk3NjljZDEzNTZmZmUwYiBsZWdhY3ktdHJ1bmsKKzI5NjE1IDRhYjZiN2MzZjMxMTdkMjc2MzAyNjI3ZTZiOWViMGQwMDQ3ZTMyZGQgbGVnYWN5LXRydW5rCisyOTYxNiAxNDRkOWQ0OGI5NmNmZWE4MzdhMDBjOWUzZTRlMWMyYzM2ODFlMzkzIGxlZ2FjeS10cnVuaworMjk2MTcgMDBiNGNmZjkzNjE4ZTgwMDJkOWIzN2FiZTliZGY5MTliYjVhODZjYyBsZWdhY3ktdHJ1bmsKKzI5NjE4IDZjZTkyMjhhM2RhMjAwYTJjZDExMzViZTE5MzdjMTE3OWUwN2JmNGUgbGVnYWN5LXRydW5rCisyOTYxOSBjMmVjNzg5ZGVlNTY3NmJlZDAyYzZhNmZlNzI1OTkwYmRhYTQ5OWZlIGxlZ2FjeS10cnVuaworMjk2MjAgYmRkZTk0ZTAyOTE4MGI1NGUzNTMwMDFjOTA3ZjQ2NzA2ZjlhNTFhMCBsZWdhY3ktdHJ1bmsKKzI5NjIxIGE0OGFjYjViNDBlZmM0NTU2ODVkNTdiMTRmYjllNWM0YWI5ODdmN2IgbGVnYWN5LXRydW5rCisyOTYyMiA5MTM5MjdkMzI2MWVkYjIxM2RkNjI2NzU4NWMzNTU4OWQ5YzFkM2NjIGxlZ2FjeS10cnVuaworMjk2MjMgOWJiNGFkZmJmY2M4MzEzOTc0ODUyOGRhZTEzNmQ3OTAxMzdlNTE2OSBsZWdhY3ktdHJ1bmsKKzI5NjI0IDY1ZDZmMGJmYTQ2MTUwNDBkNGFiOGIxMWNhYzEyYzM0MGM5OWY3YjEgbGVnYWN5LXRydW5rCisyOTYyNSAwYjYxMWU1MGM1ZmMzYzRkY2RlN2UwNzQwYmRlYWNiOGU2ZGY3OWFkIGxlZ2FjeS10cnVuaworMjk2MjYgNTgwODNkOGVhOWE1YWQzZTYwMWIzYTAwYzM2Y2I4MzVmMzRlZjM0NyBsZWdhY3ktdHJ1bmsKKzI5NjI3IDNlMWU5NjE2ZjhjODY1YTAyNDI4YzViYzIwM2ZmNjAxMjMzZWIxNGMgbGVnYWN5LXRydW5rCisyOTYyOCA5NzQ5NzMyYTBmNmI5ZmZlODBmOWZkMjMwM2YyNzM1Y2M2ZmE5ZDk0IGxlZ2FjeS10cnVuaworMjk2MjkgZWMzNDE0YzU4ODcyNjI5ODQ2MTU5MzU0OTM4ZDExZDQ4ODVjYjNjNCBsZWdhY3ktdHJ1bmsKKzI5NjMwIDYwNzhhYmM2OTAzNmZjNzZmYmUwZTljNDgzNWM0ZDliNTY2OTQ2N2MgbGVnYWN5LXRydW5rCisyOTYzMSBiYjcxODc4MmU3MzY5YzVjMjViN2ZmZDVlMjQyODA2Yzc5MzdmYzkzIGxlZ2FjeS10cnVuaworMjk2MzIgOGNlYjQ1NWY1NTQxMTJjYzdmNWUwMjU4OTk4Y2RhMDgyMjUxMThhNSBsZWdhY3ktdHJ1bmsKKzI5NjMzIGY0OTI5MjYyMWIxNzNhYWY3ZDk4YWFjMTBhYjAwN2MwYmY4YmJkNDcgbGVnYWN5LXRydW5rCisyOTYzNCAyNGE1NTIyZDA3ODRiMzU5ZDIwOWQ0ODliZTcxYTZiMDMyMDk5OTRmIGxlZ2FjeS10cnVuaworMjk2MzUgZjBlZTM3ZTg5MzJmYWM4ZDA1M2U3MDYzMTlhZDVmMTk3MTY2ZTk4ZSByZWxlYXNlMjItbWFpbnQKKzI5NjM2IDI3ZjY0MzE0ZjBkZTdlZmFiNmI2ZTliNzVkYmY5MDg4YmY4MTVlNGUgbGVnYWN5LXRydW5rCisyOTYzNyBlNjI3NzRiNDQ3YzEwN2E4ODhjNDRkZjM2MzAzMDJkNTRhNzhlZTU2IHJlbGVhc2UyMi1tYWludAorMjk2MzggZGQxMGQ5N2QzMjlhNjBlNzBlMTJhNDI2N2Y5MTZiZTVmNjgwNGI1NiBsZWdhY3ktdHJ1bmsKKzI5NjM5IDNjMDgzZjg4MTY1NWQzNGY2Y2MzMDA4NWM2NzgxNzQxZjMxMDgzNGUgbGVnYWN5LXRydW5rCisyOTY0MCBhZjViNDE3NmY0ZWY2ODZkYTFlZWNkODRmYzdjNzIwMGFiNTk2ZTMyIHJlbGVhc2UyMi1tYWludAorMjk2NDEgNjNhMDg2MzlkYWUyYTNlYzBlMjNmNzAzNzE0MzhlNTQ5Zjk5MWRhMSBsZWdhY3ktdHJ1bmsKKzI5NjQyIDI5ZjdkMWQ1ZTZkNjI0OWZmZWE2MjRmODYxNDA5Yzg2YWNkNDM4ZTAgbGVnYWN5LXRydW5rCisyOTY0MyBlM2QyNjkxZmI2YjhjMmZhMGNjN2RjNDU1NTUyOGJiYTkxMzgyMjU2IHJlbGVhc2UyMi1tYWludAorMjk2NDQgMjNkZjQ2NTZlOGEyYWE0NzdjMDdhZGY0YjNjNTk3NzdkZTUyZDhiYSBsZWdhY3ktdHJ1bmsKKzI5NjQ1IDFhYjY1N2UwMDc2Mjc1ODRjOWY4YTdkZDU4YmQ4YmIxOWM3YmI0Y2IgcmVsZWFzZTIyLW1haW50CisyOTY0NiA5NWM5YzU2NmJkZDZkOGNlY2NlYWE3OTUwY2JiYzM2MzFiYTkzNmQ3IGxlZ2FjeS10cnVuaworMjk2NDcgNGI2ZDhmNTE2Njk4MTdmMTM3MDhlNmNhMzNhMmFjNWZmZDA4NDk5OSBsZWdhY3ktdHJ1bmsKKzI5NjQ4IDI1MWU1NTJjODM1MjEwZTY3YmEwM2RhOGJjNzZmNmIxNGRmNWUyNDYgbGVnYWN5LXRydW5rCisyOTY0OSA1YjYyYjllYTQ2MGIyMzllMzJmYjYyYzM2YjNiODBjM2FlN2Q5ODVhIGxlZ2FjeS10cnVuaworMjk2NTAgZTcxNzcwYTdmNTQ5ZmE4ZDNmYmM2NDIzYTRkYTdmYTQxNzlmYzNmMyBsZWdhY3ktdHJ1bmsKKzI5NjUxIDA0ZDNmOTVjZmQ4OWYwYzBiNDgwZmRiMDg1MzYwMzBmZDMzZDc4YzQgbGVnYWN5LXRydW5rCisyOTY1MiAwODI5MzBkZmJlYmRkYmU5NmZkMjdhZjEyMjQ2NzM2OWY2ZjExNmQ4IGxlZ2FjeS10cnVuaworMjk2NTMgMWMwNTUxNzFiODcxMWZiYjk5ODY0YzNkOWM3Y2Y0ZDhkN2VhZDU0YSBsZWdhY3ktdHJ1bmsKKzI5NjU0IGY5NmZhM2E2ZGRhNDE4YzI0NGMxZWQ4ZmQ1Y2E4YWJhNTc2MDcxN2IgcmVsZWFzZTIyLW1haW50CisyOTY1NSA4M2FlNGE5MDJkZjA4ZjczOTkzMjIyNmJiNmY4NzhkOWVhMjJhOWQ0IGxlZ2FjeS10cnVuaworMjk2NTYgZGJlMjU2ODdiZTZlNWMzNjkxNzNkNzk0MDg2NGZiZGY4N2MzNGYxYSBsZWdhY3ktdHJ1bmsKKzI5NjU3IDBiMjNjZGEwMDQxNzBkOWE2MmMyMGE0OTBiODUzMGQ0ZDAxN2Y2MWQgcmVsZWFzZTIyLW1haW50CisyOTY1OCA0NmQwYjQ2YTc1NGZlMWI1N2FmYjliYWQ5Yjk3ZTE0OWQ2MDM2YzMyIHJlbGVhc2UyMi1tYWludAorMjk2NTkgMWFmNDEwZTMzYmVjZjU4MWQ3NGI3ZjQyOTlhNDU0MWI5MWQwNjlmYyBsZWdhY3ktdHJ1bmsKKzI5NjYwIGY3MmIxZjg2ODRhMmI5ODI2ZDQ0MDhjZDMwMjdhNjY1MjIwOGE3OGEgbGVnYWN5LXRydW5rCisyOTY2MSAzZTU5ZDY3NGI4YzM2NDMzZWNlMGM1YTA5ZmM4NmQ3NmJjYmY4YzQ0IGxlZ2FjeS10cnVuaworMjk2NjIgNGMyNTMyYzFjYjJkZTI0ZDNkNTAxMzMzZDRlNGUwYTlkOGZkNjdiMyBsZWdhY3ktdHJ1bmsKKzI5NjYzIGFmMzk2NDY3OWUyZmJkOWJmOTY5NmFmY2EwZDQxYjgzNmZhNmIxMjIgbGVnYWN5LXRydW5rCisyOTY2NCBhZTE2OWY1Yjk0ZTA0ODEzNjQ4OTQ4NTg4OWIzMzg3M2Q3YTkzMWM0IGxlZ2FjeS10cnVuaworMjk2NjUgMGUwYjNkY2Y3ODc4OTg5NDMxZDk4ODc1NjY3MjAzY2ZlYTE4ZTZlMCBsZWdhY3ktdHJ1bmsKKzI5NjY2IDM4ZDFmODNkNTc3MTA4YTZlMzA5ZTA2MDBiODAxOThhNzE4NzcxNDQgcmVsZWFzZTIyLW1haW50CisyOTY2NyBkNmRjNDZiOWFmM2MwZTI2OGVhNDcwZTI3YzcyNjBjZGM4NTAxNTUwIGxlZ2FjeS10cnVuaworMjk2NjggMzkwYmY1ZDJkOGU3ZGY2NjAwMTkxOWRhMmNiZjA1MGNlMTEzOGNkZiBsZWdhY3ktdHJ1bmsKKzI5NjY5IDljN2FhNDNiMjFhOWE5YjBlZmVjZTBjODNjZmYzNzY5MzFhNWU5MDIgcmVsZWFzZTIyLW1haW50CisyOTY3MCBkNTYzM2U5M2Y3MDdmMzQyYjU0MjAwM2RjOWVkZjMxMGM5YzRmZDVlIGxlZ2FjeS10cnVuaworMjk2NzEgOTM3MzU3ODgyMmI1OTBlMDdhMDEwZDY1Y2U3NjRjYzJlM2U0ZGM1OSByZWxlYXNlMjItbWFpbnQKKzI5NjcyIGE0MmY2M2E4MGNjODczNmE3YTY1MGZjNGExNmUxY2FjZjQ1Zjk1NjcgbGVnYWN5LXRydW5rCisyOTY3MyA3ODVhZDA3NDAyN2JmMGUzM2ZjYmE1NDU5NmEwOTYxMGNhNTMzNTkzIGxlZ2FjeS10cnVuaworMjk2NzQgY2I3MWU3YzYyMGUyZjUwYTk3YWVmMjRjMDNlZDcyZTAzZGY3NTQ0OSBsZWdhY3ktdHJ1bmsKKzI5Njc1IDFkZjk4ZjY4ZDYwNzUzMGVhYWM4OThhYTU0N2FlMTY3NmUwODliYTggbGVnYWN5LXRydW5rCisyOTY3NiBkMzdmMTM3OGQ4YjhiZjlhZDM2OWFiZDA2MzJiYmIyZTI0NzcyODljIGxlZ2FjeS10cnVuaworMjk2NzcgZTAyMzNjNDQyNTAyNmVhOGIwOWNjYTNkODg5YmUzNDlkM2UxNzdjOCBsZWdhY3ktdHJ1bmsKKzI5Njc4IDdlNThhMTUwNDg3MjZmMmJiMDRlZTljOWE3ZjViOTU2MzBmMWY5NjIgbGVnYWN5LXRydW5rCisyOTY3OSAxY2Q4MTA2YmNkMjA3MWM5ZGY1NmExMTk0YTUyNGJkOWJjOGVjNTQyIGxlZ2FjeS10cnVuaworMjk2ODAgYmFmODdkMjZiYTAzZDUzN2JlYjkzZjYwODVkOWE1ZDAzYzUyNDQyZiBsZWdhY3ktdHJ1bmsKKzI5NjgxIDNmNTc3M2E4ODg4ZWZkNjY1YmE3NjM2YWE2ZmNjNDE4YmY2MWQzMGUgbGVnYWN5LXRydW5rCisyOTY4MiBkMzMwMDVmODM4OGU3NGUxOTU3ZGJhZmViMzdjYmVlYmYxMGE0OTE5IGxlZ2FjeS10cnVuaworMjk2ODMgZmY5MmNjMjdmZDFmZjMwZDU0MTViOGQwZTExOTBiYTcxNmUxMzRhZCBsZWdhY3ktdHJ1bmsKKzI5Njg0IGZmZWM2NzQwOTE0MDU5YmRlYTkxMjJjMzNiZGM3MTEwZjE5ZmRiNzggbGVnYWN5LXRydW5rCisyOTY4NSA1OGZiYTU5NTcyNmVhZGFmZWY2MWRjZDAyM2E3NWU2ZWFkZmY3NDFiIGxlZ2FjeS10cnVuaworMjk2ODYgMzgzNTg3MDI3Yzc0ZDFjMWI4MzczZGYwNzg4MTIwNTJkN2M5NGRhOCByZWxlYXNlMjItbWFpbnQKKzI5Njg3IGY0NjVkNjY5MmJkZTMzNTAzMzE0YzA1MzRmZDA5MWM0ODc5NThmYmIgbGVnYWN5LXRydW5rCisyOTY4OCA3Zjg3MDQ2N2MxODJhNzVlMGQ0NDg1NGY0YTc4ZDUyYWFkYjdmMjYwIGxlZ2FjeS10cnVuaworMjk2ODkgYjgzMDM0MTNhNTdlNWExNWRjMTdjNDljNzQ2OGU2NDZhZTZhNTIwOCBsZWdhY3ktdHJ1bmsKKzI5NjkwIGE1ZDFlMDgxNDA2MWM1MmFiMmJjMzdmNjFkNDFlNTFlZTA2MjgwOTYgbGVnYWN5LXRydW5rCisyOTY5MSBlODkwNTY3MTgyMzVkY2E4N2ExMjZlNTIyZGI1MzdlOTZmZDdmNWQwIHJlbGVhc2UyMi1tYWludAorMjk2OTIgN2NmYjUyZjk4MTM5NmZlZWU4OWU3MWIzZjIwNzZiNjk5Zjg3ZDU4YiBsZWdhY3ktdHJ1bmsKKzI5NjkzIDEyN2U0YmZhY2JiNzUwNDljMzE0ZTViMTA3ZDkyODJjYTc2MzA1NDggbGVnYWN5LXRydW5rCisyOTY5NCA3NmYzMmZiZTAzY2M1NGU1NTRmMjA0OWZhYTAxZWViNDMwMTEyZjQ0IGxlZ2FjeS10cnVuaworMjk2OTUgNTdmY2FjYmRjODg1YTU1N2MyMjMzZTIxYmEyNGU1ZGMzZTFkZjA1MyBsZWdhY3ktdHJ1bmsKKzI5Njk2IDIwZmE2MzI5YjU4ZmY4MDQwNjJhYTg5Zjk1MzJmOWI3YjRjNThlMTAgbGVnYWN5LXRydW5rCisyOTY5NyBlYjBjMGM4M2I5MmEwOWZmNmFkYzQ4NDZlZDZkMzVkYzllOTIwMTJjIGxlZ2FjeS10cnVuaworMjk2OTggZmZiZWFkMzQ4NGUxMDMzYjJjMzBjMzg2MGNkYWFkNmJiNDQyZmZkZiBsZWdhY3ktdHJ1bmsKKzI5Njk5IGM5NTE5MDUzMmMwY2I2ZDllMWUwNDQ4NzA2MzIxMThhYzQ2MWZhMTMgbGVnYWN5LXRydW5rCisyOTcwMCA1MmY2MTMzZTIwZDIwZWI2MDNiYmViMzg2ODQyM2Y5MWQyYjFjYzBhIGxlZ2FjeS10cnVuaworMjk3MDEgYWRiOTNmNGU5NzgwNTFlNDZmYWEwMGE3ZDhkZGUyYTk4MjY0ODAzNCBsZWdhY3ktdHJ1bmsKKzI5NzAyIDE5MDM4OWZkODE1OWM3YzQ2ZGRmOTk4YWUyOTc0MWIyYjNhM2RhYTcgcmVsZWFzZTIyLW1haW50CisyOTcwMyBlY2RmZjQ2MjAyYzBmZjM1Y2JlZjA1OWZiMTQ2OGRlZTE2YTE2MzRjIGxlZ2FjeS10cnVuaworMjk3MDQgNTI5NzE5YTUzNTBlNzVlZTMxZjFkNDM5NDM1NGRkNTI4ZmFiOGY4MSBsZWdhY3ktdHJ1bmsKKzI5NzA1IGNiMjQ4NzA0Yjc4NGUzYzcyNzQ1OTE5OWQ2N2Q2MTljNTRjMmEyYjggbGVnYWN5LXRydW5rCisyOTcwNiA3OTQyMGZhMjIyYjg1MDU5NWFjNTdkNDg4ZDNjMmE2Mjc4Yjk5ZjM2IGxlZ2FjeS10cnVuaworMjk3MDcgZTI2ZmY3NWRjZjY5MTFjMDFiMjMxZDJiZWExNjVlM2RhMzdkMGE5ZiBsZWdhY3ktdHJ1bmsKKzI5NzA4IGM0MmI2MzdiOTUxNDZkNzM4NmQ0ODVhMDFiMTkzNDRmMTk5N2Y5Y2UgbGVnYWN5LXRydW5rCisyOTcwOSBjODU0ODA2OTJjYWU5Y2Q5MDBhNTBhNjFkZmNiNGU5ZWQwOWViMmU3IGxlZ2FjeS10cnVuaworMjk3MTAgODdlNjliYWRhMTk1ZWVmNWY2Y2E1ZWY4YmM3NmQ1YjI1YTI0NzJmMiBsZWdhY3ktdHJ1bmsKKzI5NzExIDkzZjMwYzM4ODlhYTRiN2E4MmIzNDExZjE3ZjJjM2EzNTAxYjA2ZmIgbGVnYWN5LXRydW5rCisyOTcxMiAzZWU5NTE5ZWFhNGM0NzY3OGY2MGU1OTBlNTUzN2UxNmVkYjFhNWQ1IGxlZ2FjeS10cnVuaworMjk3MTMgZTlmODlkYmE1MDkzYjBhMzgzZDliNzIxZDAxOGIxODBlZWJiNDlhYiBsZWdhY3ktdHJ1bmsKKzI5NzE0IDQ0OWIyYjVjYWY1ODJmZGRjODkxMWVlN2QzMmQ2MGNjN2QyNzg1MGYgbGVnYWN5LXRydW5rCisyOTcxNSBlZGQyZWI4OGZkNmNhMGVjYjRkNjQ3YmM5NzlkYmM0OTdmZDk5NGY0IGxlZ2FjeS10cnVuaworMjk3MTYgYTBlZmE0Yzk1NjllMzE5NmRkYmJlNGUwZDUyNmRmMzUzYjFhMjU5YiByZWxlYXNlMjItbWFpbnQKKzI5NzE3IGU0Mjk5N2FjYzdmMWU3NTQ2ODY2ZjdlN2RjZGRkYmU2YTRkZjZlYTcgbGVnYWN5LXRydW5rCisyOTcxOCBhNGUzMDIxZWFhN2Q0MGI5ZWRiNjE0MzE1Nzg4MGFmMGU3OTM2OTU1IGxlZ2FjeS10cnVuaworMjk3MTkgYjEzODhmNThiZGI1ZDEwZTE2MDMzMmIwYzU5ZDFkOGJiYTA2NmFiNiBsZWdhY3ktdHJ1bmsKKzI5NzIwIDRjMDZiZGQ3ZDA1YzJmMzJiN2Y0MTJmZTM5MTQzOTlkNDZiZThkZmQgbGVnYWN5LXRydW5rCisyOTcyMSA4ZWQ2NmVkZmYzODdjNmQ0ODI0NDc0NzFiOGY0YjU5YzEwYjRlMWM5IGxlZ2FjeS10cnVuaworMjk3MjIgZmY3NjM5ZGRjYWYyMWNiNmM2ZmZjMzQxNjY1YTJkNTlhZTAwMzZkNyBsZWdhY3ktdHJ1bmsKKzI5NzIzIDYxYTBlZjU0MmI2ZjVlMWI1ODViMGE0OTg4NzBlYTdiMDk2MWIwNjggbGVnYWN5LXRydW5rCisyOTcyNCBkNjJjMWJhMzM5NjQwNjg2NGRhNWQwNjJkZTMzNWU3ZDBhMTZiZmNhIGxlZ2FjeS10cnVuaworMjk3MjUgM2JlMWJkYzc3OWUwNmYwNDk2MGFkOTFkYjJlMWYyOGM0ZmM2ZGNkZiBsZWdhY3ktdHJ1bmsKKzI5NzI2IDBlODk5MGU4OTJiNmQ2YTJjOGNjMzRjZDE1NWZiZTdiNDM2MDFjMzkgbGVnYWN5LXRydW5rCisyOTcyNyAwMmQ0OGVkNDQ3YTgzYjM0Y2FlODhiMzdmNzIxOGMzM2EyOGM1YTA4IGxlZ2FjeS10cnVuaworMjk3MjggMTQ5MTY1Y2RmZjdjZGM0OTM3MTk1MTNhMTQ2MzRmY2UwY2UwOTQzYiBsZWdhY3ktdHJ1bmsKKzI5NzI5IGNkZDI4OWEwNjYxNGEzYzM0OTcyNGZiOTlmMzQyMDVlOGQ0YjAwZDEgbGVnYWN5LXRydW5rCisyOTczMCA2NzliMmI4MjU0YWU2NjZkNzhmNmY1MzgzM2RkY2FmNWJiODhiYzg5IGxlZ2FjeS10cnVuaworMjk3MzEgNGJlMzRiZDczZGZmNDFlNjdhOWNlZTE3ZjY0OTIzYTU3MjQ3Yjc3YSBsZWdhY3ktdHJ1bmsKKzI5NzMyIDIyZDczMjViYTdhYzQ5Njk4MjNjZThjZWU2ZDU0ZDljOGU0NDlkNzkgbGVnYWN5LXRydW5rCisyOTczMyBhOGQxMzBhNmE3NGQ2OGU5YmEwNWE3OTUzZWE4ZjU4ZWYyYWQ4MjYwIHJlbGVhc2UyMi1tYWludAorMjk3MzQgZjIzYzM1ZjgxMDMzOTk5Yzg1Mzk4NzVjMDU0Y2FlMTQ2ODk5ZWMwMiBsZWdhY3ktdHJ1bmsKKzI5NzM1IGIxOTQ0M2JkZjQ0N2U3ZDgxYTA5Yzk3M2Y3NmExMTVlZDQ3OTE5MWUgbGVnYWN5LXRydW5rCisyOTczNiA2MGQ4MDlhMjViYWVjODEzOTA5MGE3NzRlYjQ4ZmM4MzQ2MzVkM2FlIGxlZ2FjeS10cnVuaworMjk3MzcgYjMyN2ZmY2ZlOWI3Yjk2MTRhYTAyODYzZDFmZTcxZTQ2MTQxMzU5MCBsZWdhY3ktdHJ1bmsKKzI5NzM4IDIwNWZiZjFiZDA3NTYyZjI0MjU2MDZhZGY4ZjkxMmZkNTk2YjgwOTUgcmVsZWFzZTIyLW1haW50CisyOTczOSA3NjYwMWZiMDc4ZDQwMTdjODA1Nzk0MmIyNzYxNDU4MTIzNzQ5NzkwIGxlZ2FjeS10cnVuaworMjk3NDAgMjQ0ZThmYmU0ZTIwNDU0MGQzZjQ0ZWFkYzM1YTgxNWY3OTQ3Mjk0OSBsZWdhY3ktdHJ1bmsKKzI5NzQxIDUzM2ViNTNhN2ZiZGQwM2VmNTQ2ZTdiMjBmNTY1NzIwM2UwYjcyYTEgbGVnYWN5LXRydW5rCisyOTc0MiBlMzhkNTAzMzdlOGNkODMwMjRmZGQzYWE0ZGRiNzk0MWIyZjUwMGQyIGxlZ2FjeS10cnVuaworMjk3NDMgNDIyNzlmN2QyNDRkZjc0YjI3NmIzMDk1MDE1ZTBmNWYzZmQ3YTA1MyBsZWdhY3ktdHJ1bmsKKzI5NzQ0IDM0ZmJiY2IxMDVhNDNiNjY1NjAyYjVlYjRmYjc4OWZjNGM4ZGM4NGEgbGVnYWN5LXRydW5rCisyOTc0NSA4M2NjYWFhYjNlNWU0NzdkNjJmOTc2NTA0ODVhMjkwOWY0NWJiNWJjIGxlZ2FjeS10cnVuaworMjk3NDYgNmI1NTZjNTQ1ZmZiMzhhZGJiNzBkYzQwOTJjMGJiODBiZDFkYTU5NCBsZWdhY3ktdHJ1bmsKKzI5NzQ3IGUyNzBjMGQ0MWEwNTA1N2EzMTE2NDdjNjI0YmQyYzljOGRhM2JkY2YgbGVnYWN5LXRydW5rCisyOTc0OCBjNDE5ZmNlMTUyOWU1N2JlNGFmMDJmN2JmYzFiMGFmNTg5N2Y2MWQwIGxlZ2FjeS10cnVuaworMjk3NDkgZmJjY2VmOGIzMTUzMzFiMTQyNzc4MmZjNDgyZmI0NGI5YWViZGM4MiBsZWdhY3ktdHJ1bmsKKzI5NzUwIDU3YzZlODRmNzFjZWM2NmEwZDdiODE1NjZiYzY5ZDA5NmQ1OTEyMmMgbGVnYWN5LXRydW5rCisyOTc1MSA5NThkMDcwODVkY2Y0YWU4MDhjNmRiOTZlZDNmMzVjZmZhMjA1NzFlIGxlZ2FjeS10cnVuaworMjk3NTIgNTBjOTU4ZjcwM2UzMDI4OWUyNmE2YzA2OGYwMDk4NjdiNzQ4YjU2NyBsZWdhY3ktdHJ1bmsKKzI5NzUzIGQ2NjEyOWI1NTFkYjRmYWUyMDhmMjdhYzU5YzQ3NjZmYjZjNTVhMzAgbGVnYWN5LXRydW5rCisyOTc1NCAzYWM0NjRjMzczNzRjNDM4NGZlZjE4MTUwNGRjYzM4MTk4NzVlYTljIGxlZ2FjeS10cnVuaworMjk3NTUgN2MwOGY2Y2I5MGU0Zjk2ZTEyYzkzMWVkNDI4NTA0NWZlZjVhZDZmMiBsZWdhY3ktdHJ1bmsKKzI5NzU2IGQ0NDExZDk1MGQ0ODMyNTUwMzQ1OTYwNWRhMTA1ZDkyN2U1MmVmMDkgbGVnYWN5LXRydW5rCisyOTc1NyA4NzUxNDBkMzBlMTc2NTYwYWRmNDI2ZGRmNTM0OWMwYjhjMTVmN2RjIGxlZ2FjeS10cnVuaworMjk3NTggZWVjOTk3ODM3MTZjM2FjZGM0YmQ1NDJmYTYwMGZjYTM5NGI2ZTU3MSBsZWdhY3ktdHJ1bmsKKzI5NzU5IGNlNjQwZGFiMTBlNDMyYzg3OTg5YjgwZTRjNTVlNzE0ODdkMjA4Y2QgbGVnYWN5LXRydW5rCisyOTc2MCBlZmU1OGMxMGNjZjE2ZDAwNjZiZGEyMTI0MTg0ZDlhM2I2OGY2ZjdhIGxlZ2FjeS10cnVuaworMjk3NjEgNGVkMjMwYTBjOTMxZWIwZjFjYTUzZGE1ZDlmYjE0ZjRlMzQxYWU3ZiBsZWdhY3ktdHJ1bmsKKzI5NzYyIDQyYmZjOThkMjk1Yjc4NTFlMTcwMTc3ZGVmNzEwZmYyNDkyODM0NGEgbGVnYWN5LXRydW5rCisyOTc2MyA5NmJkYjQ0NzYzYzM2ZGYxOTY1NDE5Mjg5OWY0YTg1YmJiMjE3YTg4IGxlZ2FjeS10cnVuaworMjk3NjQgYTI0YmM2YTJlMmNkZmE2NjYzY2EyNTA3MmRmNGM2OWI4YzUxM2QzOCBsZWdhY3ktdHJ1bmsKKzI5NzY1IGIwYjYwODU5ODE3MDIwNWZkMTc0MGE0MzM0NWJlNzQ0NTcyZTc4MWEgbGVnYWN5LXRydW5rCisyOTc2NiAwOTM0YThhMGJhMGQ4NTRmYWQzNDJkYjI1OGQyMzY5NzdmZWFmNGE0IGxlZ2FjeS10cnVuaworMjk3NjcgZTk2NTc1ZjdlOTZhN2VjMmYwMDRhZTcxY2RlMDUyYjhhMmUzMjhmZiByZWxlYXNlMjItbWFpbnQKKzI5NzY4IGQzMWRkYzY2YjFiNTUxZjk5Y2ZmZTRmODZmYmYzYTQzOWJjYTBiOTUgbGVnYWN5LXRydW5rCisyOTc2OSAzMTZmZGRiYzFlMDdlZWViZGE4MDZlMTM2MDI4MWQ2Yzg1NDcwNmQ5IGxlZ2FjeS10cnVuaworMjk3NzAgZmY1YjUxMGViYTZiNjc5NDViZjgzMTI0NjZkMDdjMDllZDM4OTU1ZiBsZWdhY3ktdHJ1bmsKKzI5NzcxIDZkMGNkODBlMjgwNDMwZDg4Y2IwMDIxOTg4NTg3Y2UyODBiZDlhMmYgbGVnYWN5LXRydW5rCisyOTc3MiAxYmQ5ZDlmMDJhZDFiNDU2MmM4YjAzOGI1ZDA2NGE2OGM3YTM5NGVkIGxlZ2FjeS10cnVuaworMjk3NzMgYmVhOTkxZTY1ZmZkMzljODllODEwOGNmZDU4MGRlZGEzNDk4M2E1NiBsZWdhY3ktdHJ1bmsKKzI5Nzc0IGJhY2Q2NzhiM2M0Y2VkMjM0YzJjNmQ5NDM0YWUyN2NjMTYyODMwNDMgbGVnYWN5LXRydW5rCisyOTc3NSBmNmU0NjU4NWI2YjM0YzBkYzZiZTk5NGMzZTMxNDQwMTEwOGQyNzg2IHJlbGVhc2UyMi1tYWludAorMjk3NzYgYzc3NDM1ZDg3YzJlOTIwZGM0MDU2MDVjOGIzODM0Mzk5OTc0MzNiNyBsZWdhY3ktdHJ1bmsKKzI5Nzc3IGRjZGUyNTM0N2U5Mzg5MDFkNTFhM2ZlZDczMDIyYTgyOTEyYzAyMWYgbGVnYWN5LXRydW5rCisyOTc3OCBlM2I4Zjc3YTY5ODAwYjJjYjJiMDhkZDA5NWVkNjRkZjBjYmNiNWI1IGxlZ2FjeS10cnVuaworMjk3NzkgZmY3YWQzMmM5NTU0ZWRmMjhiOWRkNzJkZjY0YTYwYjkzMDlmNjI3ZSBsZWdhY3ktdHJ1bmsKKzI5NzgwIDBjODk5MzdjZWJlZDM3NmU0MGRlNjlmODYxNDFmODA5NTI5ZTNiZjcgbGVnYWN5LXRydW5rCisyOTc4MSAwODA4MzhlMzhlN2M0YWU4NGQyMjgxMWUxODZiZmE3NmIwMmIyODZlIHJlbGVhc2UyMi1tYWludAorMjk3ODIgMzJkZjhkNTk2MGQxODJmZDdjNGExMWQyYWYyZTJiYzNmYThkZTI0MCBsZWdhY3ktdHJ1bmsKKzI5NzgzIDI1MWRkMTM2YmFjM2JiMDMxNTdjNzkzZDA3MTMyZDUwMGRiZWQwNjIgcmVsZWFzZTIyLW1haW50CisyOTc4NCBlZjFlMzgzMmE5ZWEyMDIzNTI3MGMyYjUzYmJlNzI0NGIzNDU5YmRmIGxlZ2FjeS10cnVuaworMjk3ODUgNDAzZGNiYzkwNDNmNjg3NGQwZmZhZGI0Y2QxMTQwZjM5NzcyOTNjZSBsZWdhY3ktdHJ1bmsKKzI5Nzg2IDdmYzcwNGNjYTE4MTNiYjNjMDdmYzUxM2ViY2EzYWYxNTQxOWNhOTMgcmVsZWFzZTIyLW1haW50CisyOTc4NyBiYWE0N2Q3ZTg0ZTI1ODM2MDkyNjI2YWIxMjg1OTM3NjkxOWI2ZjdjIGxlZ2FjeS10cnVuaworMjk3ODggZjJmYzM4ZjhjYTlkZTJlOGI1MWQwMzY3NDYwZDdlYWUzYjMyNmZhYSBsZWdhY3ktdHJ1bmsKKzI5Nzg5IDhiNjM4YmU3NmNiZTI0MGI1NjRkNDE0NmJmNzQ3NjA5NmM0MmQwZTQgbGVnYWN5LXRydW5rCisyOTc5MCA0MWZmNTBiNGQwOTc0MjNiMGYyYTUzYzZkOWJlYTQ0NmJiZDU0OTc5IGxlZ2FjeS10cnVuaworMjk3OTEgOGU2MDEzYmJlN2E3YzNjNGZlOTlkMGE1NDcyYWQ5NTUwZjdkOGI0MCBsZWdhY3ktdHJ1bmsKKzI5NzkyIDNmZDhjMmFmZjMwNTI5NzM5OWZmMWZiZjI1Nzg4N2ViZWMxNGFiOWIgbGVnYWN5LXRydW5rCisyOTc5MyBhMjdhYzlkMzJmMjMzOGZhYWM0Zjg5NTA5ZTllMjBmMzBhYWY5YWEwIGxlZ2FjeS10cnVuaworMjk3OTQgYTRkYmEwNThmNzBlYWZmYzNmOGIzNmNlMzE4NWQ5YjdkNzA0YjczZSBsZWdhY3ktdHJ1bmsKKzI5Nzk1IDkxMGZhNzM5ZjRhNGU3YzM0ODUwOWMxZjkzZTVkMWExYjUzZjNmZmMgbGVnYWN5LXRydW5rCisyOTc5NiA5MGU5YTNlY2RhNDQ5ZGM2YmIxYTZhNWQ5YWI4Nzg4ODhkZmNlODlhIGxlZ2FjeS10cnVuaworMjk3OTcgZDQxYzRiOTVlNzE0ZGUxOGZmODMyNDc0OWExMWEzZTI3MjdiMzgyNyBsZWdhY3ktdHJ1bmsKKzI5Nzk4IDY4MDM2MGU2OGEwNjNhNjc4YTg4YTUwNTI1M2E3OTAyNGJhYzNhYzIgbGVnYWN5LXRydW5rCisyOTc5OSBmYWRjYWI2NWFhODc0YjY0OTIxNjk4YzMyZmI4MTQxZTI1ZWM3MjJhIGxlZ2FjeS10cnVuaworMjk4MDAgMDY3NTRkNzNjNjNlNDY4N2JlNjhlMDdiYjQzNjI3MDdjYjQ5YjZmZiBsZWdhY3ktdHJ1bmsKKzI5ODAxIDA1ZDZhZGUzZTkyYjRiMWM1ODE1ZDk5ZTI4NzA3MDUzMWFmZmI0YTYgbGVnYWN5LXRydW5rCisyOTgwMiA4MjM4OTZjZTJlNWQwNTY4Y2I5YzM0MzdmZTVlMDEyOGMzZDIxNTJhIGxlZ2FjeS10cnVuaworMjk4MDMgMmIwZTgxNWMwYjMwN2ZmZTNjNWRjMjEzMGYwNWU0NDEzZDc5MjgyNyBsZWdhY3ktdHJ1bmsKKzI5ODA0IGVhMWQyMDUwZDdkYWFlY2Y1NjJhZGY1MGY5MDVjNjk3Zjg4Y2FkYzIgbGVnYWN5LXRydW5rCisyOTgwNSBmM2E2OTAzN2ZkZjBmYWQzYTU5ZjAzNzU3ZTcwZGY0YmJjNDNkZDYyIGxlZ2FjeS10cnVuaworMjk4MDYgNDRkN2VhYWUwZDhkMzhiMjI2MmQzMmNjYmVlZTBhNjc2NWM0ZWE1OCBsZWdhY3ktdHJ1bmsKKzI5ODA3IDMwODZlMTExNzgzYTc5MTA0MWI4Y2Q4ZGQ1MDNlZjlkMzAzYjY3YjkgbGVnYWN5LXRydW5rCisyOTgwOCA2MGJkN2FmMDMyNGU4MGNhMzc3Yzk0NDU0NDgzNDNiOThhYzJmZWQ2IGxlZ2FjeS10cnVuaworMjk4MDkgNjAxYjhmYzEyZmI5NTNhMTg3MGM3ODkyNzdiYmRmYzIzYTM5NjhjNCBsZWdhY3ktdHJ1bmsKKzI5ODEwIGYzNDAwZWYwMmE0NTljNDdiMjAxOTkyNWViZTgwZDUyNGFhMjgxOTIgbGVnYWN5LXRydW5rCisyOTgxMSBjNzY3NjJkNjZmNDIxYzE3MmU1MmMwMGEyNDU0YmMyMDk0NzNhOGZlIGxlZ2FjeS10cnVuaworMjk4MTIgOTU3Y2EyYzUxNzkwNDlhMzU4M2U1NDgyODk4NzBhMTZhNGI2ZTA5YSBsZWdhY3ktdHJ1bmsKKzI5ODEzIDEwODcxZjQ0ZTdkYjI5ZDZjZGY2MzhlNzllYTQxZjhjNmQwYTE0YWUgbGVnYWN5LXRydW5rCisyOTgxNCA3MzNlNGI5ZDU5MmViY2ViMDk0YzI5OWQwOThmZGQ1OGFmMTFlMzk2IGxlZ2FjeS10cnVuaworMjk4MTUgYWM3ODcyZTU1NDA1OWJkOTg5NDAzNDdhYWVhYTE2ZTcyY2NhNWExMiBsZWdhY3ktdHJ1bmsKKzI5ODE2IDY1ODljMzdjMGRkZDcyYjNmM2M4ZTdmODQ4OWU3NGI1MzZmMDUxYzggbGVnYWN5LXRydW5rCisyOTgxNyA0ZWMxOTAyZWU2Yjc3Y2E4ZDk1YzU3NDAxYzk5NzQyNjBmZTgxMTA3IGxlZ2FjeS10cnVuaworMjk4MTggNTYxMTg1ZDEzZDVjYzQxZjc2MTJkNjY4NGVjYjYzOTdkZmUxMTE3ZCBsZWdhY3ktdHJ1bmsKKzI5ODE5IGY3ODUyNzBjZWUxOTdkMTcxNGM4NTlkMzhkM2RhNjE1NWIwMmNmYmMgbGVnYWN5LXRydW5rCisyOTgyMCAzYzY0ZWY4N2Q1Zjg5ZjU0NjgwNDRiMjg3NDQ1ZGJjY2ZiMTJmYzZhIGxlZ2FjeS10cnVuaworMjk4MjEgMDY3YTJlZjZkOGE5ZjE2ZjNiOGJiNDg3ODBlZWQzODAyYjI2YzAzNiBsZWdhY3ktdHJ1bmsKKzI5ODIyIDlmNDY5ZGE1OTFhOWU3ZmFmMWM1NjA4OTgyYjU1Mjc1MWEyMjRkZDAgbGVnYWN5LXRydW5rCisyOTgyMyA1NDdkZTQwN2MxMzM0NzNlZDNmMjM5Y2I2NDI1NDg5MGI0MmNjMDBhIGxlZ2FjeS10cnVuaworMjk4MjQgM2UwMmVhZDhkZTA1ODAwNzk3OWYwYjc0M2I2MmZiN2ZhNTY3ZjI1MiBsZWdhY3ktdHJ1bmsKKzI5ODI1IDQ2YmI5YWQ4MzE4ZjE4ZmE0ZDU0Y2U5ZmNmZDczNDA2NmJlMGRmMWEgbGVnYWN5LXRydW5rCisyOTgyNiA3YjkwOTY1MDFlYTgwZDgwNTllZWNiOTg2MGM4MTYzZjg5MGUxMDM2IGxlZ2FjeS10cnVuaworMjk4MjcgYWJmNTY1Y2Y1YjU0NzRjODJlNGU5MDFjZTI5MjcxOTU1MTIzZThhMiBsZWdhY3ktdHJ1bmsKKzI5ODI4IDEzYzFhYTE1ZTBmYjVkYTk0ODM3NTEzZDYyNGVlMjA4MzI0ZWEwYTAgbGVnYWN5LXRydW5rCisyOTgyOSBkYzM5OWU5Y2FiODk4NmU5MjcyYTM4M2NmNWRmMjk5MmVkZGJmYjBkIGxlZ2FjeS10cnVuaworMjk4MzAgMzIyYjY2NGEyMDIyZDg3ODRhOTYzMzg0Nzc1MjZiY2Q5MjY1YmZhZSBsZWdhY3ktdHJ1bmsKKzI5ODMxIDM1ZjEyNWQ1MmNmNWE4MWIxMmMwMTBiM2VhM2EwYjUxNmJiZGM2NTEgbGVnYWN5LXRydW5rCisyOTgzMiA4ZmUyOTZhZDU5MzZiMzcwMjhiZWQ2ZjI1ZGJmZmNiMWRlYjBkYmU2IGxlZ2FjeS10cnVuaworMjk4MzMgNzcwOTNkNTdjY2E5OTdiZTY0ODVjODJiMGE2OTViMDA3M2UxMTk5ZSBsZWdhY3ktdHJ1bmsKKzI5ODM0IDNmN2FlYTViOTNhMTg2NzkyODAzMmEzN2IzNTNhMTVkZDc4NDc3YmMgbGVnYWN5LXRydW5rCisyOTgzNSA3OTExODYzMmUzN2U0MDFlMDc5Y2JlMDA4ZmI1MmI3NjllZDEzMGFmIGxlZ2FjeS10cnVuaworMjk4MzYgNTRhNzRiMGRmZTI2Y2ZhNjJkOTY5YjIyZTUzNGNjZjMzNWUxYzBkYyBsZWdhY3ktdHJ1bmsKKzI5ODM3IDgyMzZkNTI4ODQxMjU2YmMxZWQ3NzhiYzAwNjA5NDcwNzY1YTAzZmIgbGVnYWN5LXRydW5rCisyOTgzOCA4NzhmZWRjNmM3ZTdjNGU1NTE0MzBjMzJiZWRkNjQxNGUzMDhkNmNjIHJlbGVhc2UyMi1tYWludAorMjk4MzkgNmUyMjhlMWFmZjM4NTg3ZTAxZTMzMTgzN2E0YjI2MTE5MTFjNjczMiBsZWdhY3ktdHJ1bmsKKzI5ODQwIGI4MjQyOGIxNzk3OGZiMGRiNmUwYmY5MDUyZWE2ZDhhOWIwMjRmNTEgbGVnYWN5LXRydW5rCisyOTg0MSA0ZjJkNTE3NGJkNGFjNWI4ZWViYTgwZjBjMjNiNGEwZTU3NzhmYTU5IGxlZ2FjeS10cnVuaworMjk4NDIgZDFkODk1OWIxMzhhY2ZlZDlmNjQ1MzAyODNhZGY3NDAyM2FlZDIxMyBsZWdhY3ktdHJ1bmsKKzI5ODQzIDA4YjcyMGNkMzg3ZTMzNTk1Y2I2YTY1ZDFmMmMwZDU2Njk4NDNjMjQgbGVnYWN5LXRydW5rCisyOTg0NCAwYzdjYjI3NDZkODY0MzQ1OGVkYTJkZWYxNzBkNGRhODU5ODQwYmZjIGxlZ2FjeS10cnVuaworMjk4NDUgYzFjYWE1YmZmMjkyYWY1MmUwZjAyNjg0YmFkMWIyOTU3ZDFkMTYwOCBsZWdhY3ktdHJ1bmsKKzI5ODQ2IGMyNjA0ZDY5YWE1ZDUyYmMyZDY4M2NiYzNhMjc4MGRiYjU4ZjNiMTEgbGVnYWN5LXRydW5rCisyOTg0NyA5ZTQ4OWEwZGY3YjVhZjlkNjY4ZDY1MzkwYzhiNjIwYTliYWJlYWM1IGxlZ2FjeS10cnVuaworMjk4NDggM2QwZTAyOTc2YmMzMzY2NDdhNzk1OTViZGU1MmNhNjA0ODllN2M4NyBsZWdhY3ktdHJ1bmsKKzI5ODQ5IGUxNjg3NjNlODYxYTJjNDkxMjdmY2M4NDdmYmM1YzFiYzRhNmQ3ZWQgbGVnYWN5LXRydW5rCisyOTg1MCBkNGNjOTcxZDE4YTYzZTEwZmRmZGM5ZmJkZjkwMTYyMmM5MzJhMTk5IGxlZ2FjeS10cnVuaworMjk4NTEgMTM1YmIxMTIxNWEwOTRiZTg2MmFiNjk5MjRiODU3MzhlOGJlZTYzNCBsZWdhY3ktdHJ1bmsKKzI5ODUyIGQwZjJkMWYzZmM4NTQyYTYzMDljMDA5YTNiMDcwYzM3ZThiZDdiN2IgbGVnYWN5LXRydW5rCisyOTg1MyAwZjI3NjYzMDJiYTBhOWYzNjhlNzhiNTQ0NWRiN2UwZGQ0Y2IxMGZiIGxlZ2FjeS10cnVuaworMjk4NTQgZDJmYjQyZWM4YmI0MjJlMzE2ZGEzMzM2MjdmOTQ4OGYxYTIwNzFjMCBsZWdhY3ktdHJ1bmsKKzI5ODU1IGFiMzc2M2Q0NzdjYzQwOGE2NzhjZDEzZjFiMWM0NjljNTQ1MjViMzIgbGVnYWN5LXRydW5rCisyOTg1NiAxODg1YjJkNjM5M2E4YWNkNzA0YzI4Mzk4YzFhOTNjYTY3YWUxMGNkIGxlZ2FjeS10cnVuaworMjk4NTcgZjhhMWJhNDQ2MTU4NDY5Y2VjNjg3YmMyOTE3ZDMyM2YzODdmNTFmNyBsZWdhY3ktdHJ1bmsKKzI5ODU4IDExOTE5N2ZhNjE0MDhlZDVhYjgxMDMxYmZmYmFiZTRiYzFhZDMwMmMgbGVnYWN5LXRydW5rCisyOTg1OSAzZDUyM2RiYzk5YmVlYTRhNzk0NThiMGQxM2NiNGU1MzZmNTIzMDBmIGxlZ2FjeS10cnVuaworMjk4NjAgZTc0ODZmM2VmNzU5YThiMmU1NDI3ZjQwMGUyZDk3YTJkZjgzMWMzZCBsZWdhY3ktdHJ1bmsKKzI5ODYxIGRmNTU2ZmRlYzY5ZDA1ZjM1NDc4ZTFkYmM1YzZlOGI0OGJjYjRiNDkgbGVnYWN5LXRydW5rCisyOTg2MiAxZjgwMDA1N2I2MzcyOGY1MjU3YTFhNjczNDc2ODI2NjQ1NDYxZWMwIGxlZ2FjeS10cnVuaworMjk4NjMgZGY3MTk3MzZlMTUxYjU3NjQ2OGMzYzBmOWNiOTZmZTYwZmM0ZGNjYSBsZWdhY3ktdHJ1bmsKKzI5ODY0IGZjZjk3MzRlMTAyMTRiZTNjNGYzNzcwNzVhM2NhYzIzMmFiNmI1YzMgbGVnYWN5LXRydW5rCisyOTg2NSAxYmFmMWNkZGMwZWNkOTY5YzY3NGM3YmNmNzRjOWI2YTNlMjA0NzYyIGxlZ2FjeS10cnVuaworMjk4NjYgOGEwMTBjMjdkNmNiOWEzNmNmZTVjYTlmNTU0NjZkNDYwYWI5ZTQzNSBsZWdhY3ktdHJ1bmsKKzI5ODY3IGE4Y2FkZmIwZmY4MzJmNmJjYmNmMGRhZDdmMzJlZDkwNjZhNTgwOTQgbGVnYWN5LXRydW5rCisyOTg2OCBkMjA3ZDFkNzhjNWQ1YTFmYmRkNDI5Yjc1NWIyNDE2ZmJmMWM3MjAzIGxlZ2FjeS10cnVuaworMjk4NjkgNDgyYWUwNTViYmQ0ZmEwYWM1YzRjYWU1ZDU3NjgzYWQyMGNmNzI4ZSBsZWdhY3ktdHJ1bmsKKzI5ODcwIGJiMzhkN2FiYzNmY2RjZjc4YTk3M2ZjYzcyZDFiNGQ0MjI2NGUzMDggbGVnYWN5LXRydW5rCisyOTg3MSA0OTFiZmM0YTBmNWJiNjIyOTdhN2NjN2FhYmE0ZGUzYzk3NTRlNWI0IGxlZ2FjeS10cnVuaworMjk4NzIgYjA1NWU3ODgzYzgzZmM1Mjc0NjZiZDExMzkxZTU1YWY2YmU0YWYwZiBsZWdhY3ktdHJ1bmsKKzI5ODczIGUzZmFlN2I2YzIwNzhmNGQ4YWM1NmUxMWY3NmUyY2YwOGNmZDdlYjYgbGVnYWN5LXRydW5rCisyOTg3NCBiMjdjMWNhZDc3ZWE3MDc1MGVjNGY5NmZmZjgzZDEwYjRhODBmNzM5IGxlZ2FjeS10cnVuaworMjk4NzUgYTBkNzUyYmU1NTc3MzBiZTMxOTAyYTk0ZDliMzk4ZTM5MjY5NTE1NyBsZWdhY3ktdHJ1bmsKKzI5ODc2IDI4MTJjYWNlMzAxYWNkN2ZlNTkyNTNjNDJjZTYxY2QwNWYxZGNlYzQgbGVnYWN5LXRydW5rCisyOTg3NyBjYzYyODU0ZjYzNmNmMjEwN2E3ODM2MTA1ODRjOTFhMmQ2ZmZiN2VlIGxlZ2FjeS10cnVuaworMjk4NzggNDM4MDQzNWZlZjY2NTA0ZjRjMWQ0ODU4MGE4MzcyNDc4M2ZmMWViYSBsZWdhY3ktdHJ1bmsKKzI5ODc5IGNiZDgxZDA4YzQzMDFjNGI4MGNjZjkzZGJiOGI0MmIwZDgzZTk4MWIgbGVnYWN5LXRydW5rCisyOTg4MCA0ODgxNjAyMWY1ODgyOTIxNWZjNWU5ZWEwOGE1N2NhMGZmZmNlZmRlIGxlZ2FjeS10cnVuaworMjk4ODEgMWI0N2I1NzZlMGQ0YTYxZDE1ZjhmMGQwOTlkMTBiYjBlOTQzYWJiYyBsZWdhY3ktdHJ1bmsKKzI5ODgyIGIzODUzM2UwMWQ2NWZjOWZhOGJmOWQ3YmZkZWE0ZmUzODdmYmY0ODEgbGVnYWN5LXRydW5rCisyOTg4MyA3MDBlMTgyYjI5MDE5MzQyNzdjM2FjMjcwMmFhOTZlYjg4MjdkNzJjIGxlZ2FjeS10cnVuaworMjk4ODQgZjcxMDE3MDIyZmNlY2M2MmVmYzc1NjdjYjkyNzQ2M2E5ZDZmY2M2NCBsZWdhY3ktdHJ1bmsKKzI5ODg1IDNmYTZkZWQwYTFlOTQ4MGZlM2JkODM3YjVlZDVhNjljYmE3NDcyOGQgbGVnYWN5LXRydW5rCisyOTg4NiA1NDQ3MjdkNDFmNTY4N2ZlYzk1NzllZWFkYTIzNTI4NWEyM2JiMjQ4IGxlZ2FjeS10cnVuaworMjk4ODcgMjY5MThlMmVmZDE3N2FhN2I4ZDE5MmZlOTIyM2I5NGNhNmI1Y2QxMCBsZWdhY3ktdHJ1bmsKKzI5ODg4IDFhMDk0ZWYwZmM4NjJjNDRiZjBhMWE4NjY2MzI0NjAxMGMwMzMzYTIgbGVnYWN5LXRydW5rCisyOTg4OSBkZGU5YzYyYTcyZmUwM2FiMzBjNjRhOTBiMmVmMjQzMDFmNGEzNWE4IGxlZ2FjeS10cnVuaworMjk4OTAgNTY5ZTE5M2JmNTlmY2E3MDM1MTkyMjJmNzFiMTlkMzE3MmI0Y2NjOSBsZWdhY3ktdHJ1bmsKKzI5ODkxIGYyODM1NTMxMDg2NzA1NWI1MTgzYWJjMTdkMzk3Zjg4ZTZjZDVlY2QgbGVnYWN5LXRydW5rCisyOTg5MiBkNTg4MjRjZWIzNWQ1ODY3OWQzMjEwN2NiNDQ2YzRlNzFkZjFlNTg3IGxlZ2FjeS10cnVuaworMjk4OTMgYmQwOWUzYTJkNTM2NDBlODNkY2FiMmY0OGMyZTU4MTE5MzY3NjU5MyBsZWdhY3ktdHJ1bmsKKzI5ODk0IDAzMDM1NTIzYjM4NWVlOTYzYmIyMzA3ZDgyYzFhOTJmNzE5ZWExMjYgcmVsZWFzZTIyLW1haW50CisyOTg5NSAzNWY0NDRjYTVlMDVjMzczNzAxNjc3YTAzMzM0OTk3MzljOWZkOGY5IGxlZ2FjeS10cnVuaworMjk4OTYgMWU1MTRlMzc3NjEzZTE3NjgyNjAxOTFiYmM5YWYzYjZlYmQxOTM1MyBsZWdhY3ktdHJ1bmsKKzI5ODk3IGFiNmM3YjI3YTRjYjkxNGNkOThiZjZmNmM3YzZhNTE5OGVmZDUxYzMgbGVnYWN5LXRydW5rCisyOTg5OCA5ZDZhZWQyZTYwZTI4ZjY3NzdkNjVlNmVjMDhjYTZmNzRiMDMyMTJlIGxlZ2FjeS10cnVuaworMjk4OTkgNGQ0NzE1MjZhY2UxMjRiOTlkNGJkMTJjM2E3NDA3ZDE5YTVjYzlkNiBsZWdhY3ktdHJ1bmsKKzI5OTAwIDNkMjg2OWRlMjMzNmNiMTI5M2ExMjkwMTIxY2MzMmZiNTU1ODcxYzQgbGVnYWN5LXRydW5rCisyOTkwMSA1MWQwMDU3ODFjODY5MTRmNmExN2RkNmFkZTE0OTYzZjNmNjk3ZjExIGxlZ2FjeS10cnVuaworMjk5MDIgNjA5YjVmMzdmMTRmZTJiZDkxZjRkOWM2MTY4ZGQzOTI1ZDZkZDk2OCBsZWdhY3ktdHJ1bmsKKzI5OTAzIDQ1NzRiNjU5ZWMzN2FiZDg4N2IyOWU0N2I2YTQ4OWMxNWJhZTFlM2UgbGVnYWN5LXRydW5rCisyOTkwNCA2NTExYjE2ZmZlODlmZmJlZmI5ZjdjMWM0NTg2ZmJlOTI1YjQ5Y2VhIGxlZ2FjeS10cnVuaworMjk5MDUgMDEwM2YwYjc1ZmUyNjM0N2U4ODYwOGVkZWU4YzY1NGMxMzU5YmYxYSBsZWdhY3ktdHJ1bmsKKzI5OTA2IDRiZWUzMzc5MDk0MGNjZGRmMjMwYTBkNDlmZjM3YjQzYTNhNGQ2ZDcgbGVnYWN5LXRydW5rCisyOTkwNyBiMDQ4OWE2MDU5N2Y3NDE0MWM4YzgxMmJlYjc0ZjFjY2ZlNGU4ZTRhIGxlZ2FjeS10cnVuaworMjk5MDggYWQ3NWVmZTJmMGE2NmM3ZmRkMWYwNmE4ODBhZGQyNDlhOGRlNGM3OCBsZWdhY3ktdHJ1bmsKKzI5OTA5IGM1MjJjOGM3MWNhYjBjMTBlODU2YzU3M2MwMTg2MWIzMmE2ZmU5YjkgbGVnYWN5LXRydW5rCisyOTkxMCBjNmZmZDhlNjFjY2U2ZGJjYzBmMGExMzhmNmU2NTliMWM3M2U2OTcxIHJlbGVhc2UyMi1tYWludAorMjk5MTEgNmQ1OTA2ODUzYTdkOTA3ZTY4MzU1MDFhZjQ5NTNkMDZlMWJjN2E5ZiBsZWdhY3ktdHJ1bmsKKzI5OTEyIGMyYmU0ZGMyNTQwNTU0MzU4NzA4OTdlOTcyOWYzNjA3YzczNThhM2QgcmVsZWFzZTIyLW1haW50CisyOTkxMyA0YTAxMjA5OTI2OTE2ZDlhYjUzZTAwODYwYTRlOWIzNDc4ZWY3NTQzIGxlZ2FjeS10cnVuaworMjk5MTQgNTdkMDMzNzVhZWFkNzdhODU5OTUwMjQ5YWI2ZmQ4NmFlMjJiZmRhNCBsZWdhY3ktdHJ1bmsKKzI5OTE1IGQ0NDk0NWI4MWZmYWUwMDc3NWYxMmZiYTg1ZjE3YjczZDQ4NDU0NjEgbGVnYWN5LXRydW5rCisyOTkxNiBjNWIxMzA1MDgxZGZkMTI5OWZjYTljNTk1YTNiYjUxNTY1MTYwNTFmIGxlZ2FjeS10cnVuaworMjk5MTcgYWEwZTE5YjZlMWU3NWEwYzU3NGFiNzczZjE1OGE0Y2NjM2E5NmFkZCBsZWdhY3ktdHJ1bmsKKzI5OTE4IGEzNTBhNDg3ZWFjMTFiMzY1NTljOTU0NmQ1MGExZWUzMTk3MWQ2ZTggbGVnYWN5LXRydW5rCisyOTkxOSAzNjcyNTIyMTRkYWYwZjI3NTI5YzBmYjRhNGFjN2Y1NmVlYjI2OGE1IGxlZ2FjeS10cnVuaworMjk5MjAgYzEyNThiMWEzNmM2ZjY4ZGY2YzAxOWVhZDk1MzVmYmE2OTUzYTFlZCBsZWdhY3ktdHJ1bmsKKzI5OTIxIDRhYzM4ZjI4Y2QxMGExNWNjYzkyNGM5NGMzY2RiMzI3MDFlMmYzZjIgbGVnYWN5LXRydW5rCisyOTkyMiA3NDIxMzY3Mjc0YjQ1NDgxZWYyNzFkYTYyN2RmYzZhN2Y1MmY2YjQ0IGxlZ2FjeS10cnVuaworMjk5MjMgNzc3N2RjZWI2NmVlMTQ0Y2NjNTY1ZmMzYjU2NjdjMDQ3ODU1M2I2NSBsZWdhY3ktdHJ1bmsKKzI5OTI0IDdhMDliMzZjYTM3OWMyYzA3ZDZkNzkxOGMwZmY0ZTA4N2YyNDQxMTAgbGVnYWN5LXRydW5rCisyOTkyNSBiZGRjNDEzMTUzMzY1MGQ4YmRkZDg1NjE1MGZmMmIzY2MwNzI4YWFlIGxlZ2FjeS10cnVuaworMjk5MjYgOGVhMmUzNTk5N2EwNGIyMDU0MzBlODE0NGMyZTljMDM1NTEzYWY1OSBsZWdhY3ktdHJ1bmsKKzI5OTI3IDhiOTg4YTA5ZGU5NmRkYTY2OWFjOTc1MGFmZTM2OTJlZTE3MGRjZGQgcmVsZWFzZTIyLW1haW50CisyOTkyOCBjYTAxZjNkZTY2NGU4YjYwOTMxMjkxOTVkNjQ0ZjU5N2QwMjU3OTQ1IGxlZ2FjeS10cnVuaworMjk5MjkgY2I4NWFhZTc4OTgwMmFkNjdhNjU1ZWM3NGJkN2M4ZTAxMzkwMGMyNSBsZWdhY3ktdHJ1bmsKKzI5OTMwIDYwZTU3Nzk3YjhlNjFhMzExY2FhMjllYTY0Y2I1NjhiZWM2MGNmODggbGVnYWN5LXRydW5rCisyOTkzMSAyNzIwNGYwNzEyYTI2ZWU4YzQ1OGNmOTIxZjU1Yjk2OGIzZjkzMDY0IGxlZ2FjeS10cnVuaworMjk5MzIgNWM3YTNhMTczMTBkMWEyYThkMzZmNzNlMzAzOWFjZWQ2NmQxM2IzYyBsZWdhY3ktdHJ1bmsKKzI5OTM0IDQ5ZjQ5YWViZjVjMjBiZTMyZDhlNGNjNjJiOTEwZmY2Nzc4NzI5MTkgbGVnYWN5LXRydW5rCisyOTkzNSBlNTFjYmRjYTIwODViYTk3MmE3N2VmZmJjODBjYmI2ZmMzMjM2OTJkIGxlZ2FjeS10cnVuaworMjk5MzYgMDNhZmRhOWFkMDkwOGEzZmMxMjhlODNlM2JiMjM2MDk2M2VjZTAzNyBsZWdhY3ktdHJ1bmsKKzI5OTM3IGRkODE3YmIzNjQ2YmNiOTJkZGQ5NGRkYzA0M2RhNjQ0ZmFjZGM2NjEgbGVnYWN5LXRydW5rCisyOTkzOCAzN2ExNzhjMGZkNTlmMmYyNDMyZTk4YzU1N2JlODkwMzBmZmZhNzNiIGxlZ2FjeS10cnVuaworMjk5MzkgZGRiYjA1N2U1YWIzMTViY2U5NDYxZDFjMDYyNjkwZDQzOGExZjRhMSBsZWdhY3ktdHJ1bmsKKzI5OTQwIDE1OTU3YjdlNDI0NzllMjk5OWZkODBlNDlkZjM3NTNhNWJlZTNhMGIgbGVnYWN5LXRydW5rCisyOTk0MSBjODhmNmZmZjFjM2YxYzc4MTczNjRkMzM5ZDliYThlMTMyMWI4NmE2IGxlZ2FjeS10cnVuaworMjk5NDIgMTRmYzE4NzMzNGM1ODE1YTk4ZTM4MWQwYmQxZTdhMThhNGY1Yzg0OSBsZWdhY3ktdHJ1bmsKKzI5OTQzIGUxYTMzMTM2YjRlMjY3YmJmNDk4OWJjMzMzMzM2MjY2NjdiODViMTIgbGVnYWN5LXRydW5rCisyOTk0NCA0MThhN2VjOTI1OTkzMGZmZjg3MzU3MzQ1NTM1NWQzZGE3NDZjZGQ3IGxlZ2FjeS10cnVuaworMjk5NDUgYTU3M2FmNWRiODA3NDUyZWFjNzRjNzE2ZWEyZjllYTdkOWYwMjdmZCBsZWdhY3ktdHJ1bmsKKzI5OTQ2IGZiYjI0Y2Q1NDc2NmNlNzdiOTBlMzA1YmFlNTBjNjliYzNiMDk0ZDkgbGVnYWN5LXRydW5rCisyOTk0NyBmNzllYmJhYTQ4MzM0ZDU4MmVkZGNkZDVhYjgyZDI3YWRkY2ExNDM1IGxlZ2FjeS10cnVuaworMjk5NDggOTVlZGI0OGRiZmExNmY2M2U2ODJiZThiMGQzYjE4MDU3MDc4M2I2MSBsZWdhY3ktdHJ1bmsKKzI5OTQ5IDk5Yzc4Y2Y5NTYxMDUxYTlhMDMwYTVjZWFkYzA0YzY2MTZlZmVjODkgbGVnYWN5LXRydW5rCisyOTk1MCBiOGZmZmJiZDY4MzI2NjM2ZGRkNjYxYjRlM2U4YzFjOGRhMTM0YjZhIGxlZ2FjeS10cnVuaworMjk5NTEgMDY5MGY4MWNjZTc4YmU3NGExMDgyMGMwOTljZWQxNWRiNjNlNzMwZiBsZWdhY3ktdHJ1bmsKKzI5OTUyIDEzODM4NTMwZjYxOTU3NDQ3ZjlkOTlhMDQwMDg0OGQ1MjZkMGFlNWEgbGVnYWN5LXRydW5rCisyOTk1MyA2YzQ1OTg1YThmZGJmZjNhYTE0ZDc2MzQ1N2JiODY2NDZlM2ZiMjJmIGxlZ2FjeS10cnVuaworMjk5NTQgZjI1NWIzZjVlOTEzNjFjNDRlYWMzMmUxZmZlYWMyMjY2MDc4NmE4OCBsZWdhY3ktdHJ1bmsKKzI5OTU1IGUwNzk0OGQ1Y2Y2N2M0NWRjN2Y4ODE5OGIyOTEwNGJiOGM0Yzg1YjkgbGVnYWN5LXRydW5rCisyOTk1NiA3NDY4YjY4ZTk4Mjg2ZjRlYzFhYzE3ZGUzYmZjY2I0MGY5Y2MwYmRkIGxlZ2FjeS10cnVuaworMjk5NTcgZDFiNGU3MDE2ZDg4YTUyZWI4YjYyY2Q1NDdjOThhYWFmNzExZDYyYyBsZWdhY3ktdHJ1bmsKKzI5OTU4IDdiYTA3MmRiMzgyOGY3ZDNhZDk2MjYwYzZiNGEzODYzYWNmZTgxZDcgbGVnYWN5LXRydW5rCisyOTk1OSBiMjY4YTZlODU5Y2I3YjI4NjQ5Y2VmOThhYThkZDNiZDljNjJkODkxIGxlZ2FjeS10cnVuaworMjk5NjAgMjhlZmUxNmE4YjdkZjdhZDBlOTY0ZGMyODM0NmM1NGE1ZWJkNDZhMiBsZWdhY3ktdHJ1bmsKKzI5OTYxIGUyNmEyMDhlYTcxYjgzNTcxNmZhMDNiNWU1ZjJkNzQ4MWViNDQ3NTMgbGVnYWN5LXRydW5rCisyOTk2MiAwZjg0OGIwNjE0NmYwYzk3NTQ2N2RhMDE0OGU1NTQ0ZGQ4MDBjZThkIGxlZ2FjeS10cnVuaworMjk5NjMgYjRjZTZhYzE3ZjYwNzllNjZmMzQyMWE4ZjA2NWIwN2QwODJlNDIzZCBsZWdhY3ktdHJ1bmsKKzI5OTY0IDJmNDBmYTc5YjU5YTVmMjc5YzAzZDcxYWNjMGQxZmQ5ZGQ4YTQzZDAgbGVnYWN5LXRydW5rCisyOTk2NSBiOGE3YzRjZjNlNmQyNjAwNTk3MjBlY2NiNTgyMDc5YWFhZjM1Y2ZiIGxlZ2FjeS10cnVuaworMjk5NjYgYzEzNWZiMmJiODI1YWU4MDg1YjI4MWZjNjkyOTZmMmQzM2FiZTc3NSBsZWdhY3ktdHJ1bmsKKzI5OTY3IGE1NmUwYjI1MTdiZDgzNTY0YTgyM2Q2OWI3MjBmNmIxYWQxMzBmZjUgcmVsZWFzZTIyLW1haW50CisyOTk2OCBhZjQ2OThlNTkxZWNjOGUyOTg1YjNlOTEzYzIwZDJmZDQwZWVhZDJhIHJlbGVhc2UyMi1tYWludAorMjk5NjkgZTBiNTk2MDYwMzEzZTYzNzA4ZjdhMjk0ZTViMDBmZWZhNDQxNjE0YSBsZWdhY3ktdHJ1bmsKKzI5OTcwIDIzOGNhYzk3ZDE2NTg0YmUzMTU1YjdhNGVkNDQ0YzRlNjZhZjU0MTkgbGVnYWN5LXRydW5rCisyOTk3MSBiMzFiZDAwNGY0MzBjNzMzODhhMDljNzNiMGE4MjNlNzFiNjA4ZDE4IGxlZ2FjeS10cnVuaworMjk5NzIgM2Y4MDE5MjczNTQ5ZWNmMmE4OWU5NmViZGM2ZmRmY2YwMzliYjAwZSBsZWdhY3ktdHJ1bmsKKzI5OTczIDU0NjdjNmUxZjU0MWIwNGZlYjUwMTczOTg3NGU3ZmMwMDZmODc2NjQgbGVnYWN5LXRydW5rCisyOTk3NCAyNzc1ZGUzNWRkMjlkNDljZWQ1MDZkNmI3MmQwYWM3MTVhNzZmZDFjIGxlZ2FjeS10cnVuaworMjk5NzUgZjA3NzJiZDdjYzQwMTJjMjBmODc0ZjgxM2Q4OTMwYzg0ODg0NmZhZCBsZWdhY3ktdHJ1bmsKKzI5OTc2IGY4ZDFjNjgyMGJmYWVjNTM4OWQ3NzE5NjYxNzUyNDNlZGVlNGE0NmQgbGVnYWN5LXRydW5rCisyOTk3NyA3NmY3OWJiMzZmYzc3M2RjOTFhZTQxMzk3ZmQ1ZTdlYzNjYWQ1NDE5IGxlZ2FjeS10cnVuaworMjk5NzggY2QxZmU0YjVmN2ZmY2MyM2VlOWM5MmI5NjI0NjVhOTI1ZTFkYjQ4YSBsZWdhY3ktdHJ1bmsKKzI5OTc5IGY4NjEzMGY0NWJmNzUwZDhmOWJkODhkNWUyNGRiZDY5ZDYzOTFlZTkgbGVnYWN5LXRydW5rCisyOTk4MCA2NzEzMjcxOTVkYzMwZWE1ZDJjNDdlYjI5NDk1NzI2MDYzNjA2NzIyIGxlZ2FjeS10cnVuaworMjk5ODEgODI1NDQ1ZjlkNmI4YjAyYzhlYmNhMjIyNzVhODFjZjFkZjRiMDUwZiBsZWdhY3ktdHJ1bmsKKzI5OTgyIDAwMTVkM2YxODllMTQ5YTI5YjY2YTUyMTc1YTY4NDA0ZDJkY2M3MzcgbGVnYWN5LXRydW5rCisyOTk4MyBlZGE4ZTY4OThkZDNlZTdjMTFlMzJkMGU5NDhkN2E1ZjNhYWRkN2NkIGxlZ2FjeS10cnVuaworMjk5ODQgYTliNGI2YWExMjIwMjc3NGNlNDgzM2UzZDJlYjA1ZGMwMDQ5MGE1MCBsZWdhY3ktdHJ1bmsKKzI5OTg1IGZhNDUzMmVmOTljOWE5ZjA4ODNhMmIxMWJlYjFhOWI0ODg2MzdiZjIgbGVnYWN5LXRydW5rCisyOTk4NiBlOTIzZjZkM2I0YTMzMDkxNzcxN2ZkYjY5NzNjZTAwMjhlNTdhMDhhIGxlZ2FjeS10cnVuaworMjk5ODcgOWU0YzgwMzQwZmExZDk3NTVlZjJjZDgzZmI1OGZiMjMzMzlkNjExZSBsZWdhY3ktdHJ1bmsKKzI5OTg4IGY0MGEyZDNhMmFiNTUzNzJhNWNmNmYyZDEyNGQwZjg3MDA1OWJjZDUgbGVnYWN5LXRydW5rCisyOTk4OSAyZDQ0YWJlNTdiNDI2Mzg0MGRjZjgwNTg5NDMyY2NlMzNjZDYxZGM3IGxlZ2FjeS10cnVuaworMjk5OTAgMzc2YmQzNTdjNGQ1YWU2ZDE2N2EyZmFkN2E3ZDYyNmU1NGVmMDY5NCBsZWdhY3ktdHJ1bmsKKzI5OTkxIDVhOWU3MDY0YzkyMzRkMTI3ZDIwODQ3YjAzOTllYzMxZDA5YjA0NGUgbGVnYWN5LXRydW5rCisyOTk5MiA2NDMxMDAxNzBiZGU5MWY4NjVlOGVjM2U4MDQ1NjBlNDQ2YmNkYzZhIGxlZ2FjeS10cnVuaworMjk5OTMgNTBjNjMzYTg3ZTM1NTQ3ZjFiM2Q5Y2EwYTJjOWM3YjhiMzgxYjUwMCBsZWdhY3ktdHJ1bmsKKzI5OTk0IGZkNmZiNzNmYjIwZmRhMWZjOTg4ZTllOGNjZjQwOWU3ZGY2NzNjNzggcmVsZWFzZTIyLW1haW50CisyOTk5NSA4NTA0NTkxZTRjNjMxYjQ0NzdhYTAxYzVhMGE1NjNmOTAwZDEzZjlkIGxlZ2FjeS10cnVuaworMjk5OTYgOTRjNTUzZWI4OGMzYTU3NzkyY2Q5ZTlmN2VhNjQyNDgxMjUyN2Q1MiBsZWdhY3ktdHJ1bmsKKzI5OTk3IDBiNjZkNGU5ZjRmNDg1OTY3OWI1YjQwNTgwZGUzMDQyMjJkOGQyZmYgbGVnYWN5LXRydW5rCisyOTk5OCAxN2QxMjNmMzM2MTEwNjAwNThhYTU0ZGZmMDM2NTJjNjdkM2Y4OGRhIGxlZ2FjeS10cnVuaworMjk5OTkgNzlmOTA2M2ZiNThlY2IyOGRhYjk4NGIwOGYwNzhjN2ZmMTYyNDQ3NCByZWxlYXNlMjItbWFpbnQKKzMwMDAwIDRjMTY0MjhmYmNkODNjNWYxNzAzOTAyNjY4ZGJlMDlhYzcyMzJiNDAgbGVnYWN5LXRydW5rCiszMDAwMSBhNWE4NzM1NzExZTgxNmY4NTFkNDJiZGRlODQwYjI5MGU3NWFkYzRhIGxlZ2FjeS10cnVuaworMzAwMDIgN2FiYTg1OWNlZTU0NTMyN2M4OGU1NTRlNWFlMzFiMzEzNWJlMDQ4YyBsZWdhY3ktdHJ1bmsKKzMwMDAzIGQyZDc4MTdmY2NiYmJhZTEzZDhlOTE3ZTUyMmE3ZTljNjMwN2EzMTEgbGVnYWN5LXRydW5rCiszMDAwNCA5ZmI4YWFkZTg4N2Y4NTVjZmQyNWIxNzA4YzgwNzAzMTA3OWVjODNlIGxlZ2FjeS10cnVuaworMzAwMDUgMThkY2Y4MGU2ZjhkZWRkNGUxYzA5ZmNkYWY1ZTI2NzI1ODFiMmM5YiBsZWdhY3ktdHJ1bmsKKzMwMDA2IDM4ZmU1ZWI2YWMyNTY3MjEyNjE3OWVlMmUwMjc5M2Y5ZTQ1ZTU5MjMgbGVnYWN5LXRydW5rCiszMDAwNyAzOTgxY2YyYTU3MzA1MzRkODk2ZGM3NGRjM2ZiYmJjZTU5MzlkMDU4IGxlZ2FjeS10cnVuaworMzAwMDggYjU4MzdiOGYzYjJjNGMyYjZiMDA1ZWZmMjc2N2NhMTNmNTFlYmJjNCBsZWdhY3ktdHJ1bmsKKzMwMDA5IDhlMTU2N2RiY2JhODkzZmU2NmIzYzA5MzA3OWQzZDY5Y2NjNzBjMGEgbGVnYWN5LXRydW5rCiszMDAxMCA2MTc3YTEzZTRjMTQ1YTQwZDE4ZjJjYmEwZWZlNGM0ZWZmZWQwYWFkIGxlZ2FjeS10cnVuaworMzAwMTEgZDZkNTIyMmI3ZTU1NTJhOTJlN2EyMGFiNTQzYWFkZTc5MjdmNjdmYyBsZWdhY3ktdHJ1bmsKKzMwMDEyIGNhNmZhNjk3MTFiYjVlMGUyZGY5NjlmM2YwMmE3YTlkODI5NzIzNzkgbGVnYWN5LXRydW5rCiszMDAxMyA2MWUyYjhjZWZkODY3MDBiZjFkY2YxZDA3M2JlMDNjZTdiYmYzYWUwIGxlZ2FjeS10cnVuaworMzAwMTQgNmVhNzg2NTI4Mzk1YWI3NDQwNzk3YTkyM2Q0N2IyYjBhM2Q3YWM2OSBsZWdhY3ktdHJ1bmsKKzMwMDE1IDk5N2ZhMDIyNDRiYWMyYzJhZDA2NWE2OWQ4M2IxYjI3NjczNmViZDIgbGVnYWN5LXRydW5rCiszMDAxNiAyNjIxOTY4MzE5ZjAzNDRhMmZjMTc5ZTJlNzI5OGFjNDY1NTFmYjlmIGxlZ2FjeS10cnVuaworMzAwMTcgMGU2ZTM5ZmI5Y2Q3MzJhZDZkZDAxYzg4NDAyMWQ0MDI1ZTY1ZDNmOSBsZWdhY3ktdHJ1bmsKKzMwMDE4IDkxMGZiNjZjM2I4MWNiY2UzYjY1OGNhMmZiMmI2MTk1MWJkOThhNWQgbGVnYWN5LXRydW5rCiszMDAxOSBlNDI3MzJlMjg5YjlhNDE2ZGNjNjY2ZjRkM2U2ZDljOGEzNGM3ZDg0IGxlZ2FjeS10cnVuaworMzAwMjAgNTg0NDBkMGI5YjRlYTZjN2M2YmNjODJkOWQyZWNiNTUyYWUyOWYwNiBsZWdhY3ktdHJ1bmsKKzMwMDIxIDk3NTQ4MmQ1ZWI1Y2U3OTRkNTIxM2U0ODI4Yjk1MDY4ZTU3ZWYzYTggbGVnYWN5LXRydW5rCiszMDAyMiA5OTcwZDc3OTgwYTBlMmZiOTM5YzkwOTlhYjczNDA1NDM5YmM0NDQzIGxlZ2FjeS10cnVuaworMzAwMjMgOGE3NWM2NmJmYTE0ZGU0YmE3MmFjYzVhMDQ0OWVmOWZhNDYwMGMyOCBsZWdhY3ktdHJ1bmsKKzMwMDI0IDA5YzdlZDFiN2E4NzM5ZDgyNzk2NzIyOGM2MDE0ZGQ3OGRjNzYxNDMgbGVnYWN5LXRydW5rCiszMDAyNSA2ODdiNGIxNjUyNjhjNzU5ZmQ0NzdlMjg4ZWI4NTUwYmI2MjIwYTk2IHJlbGVhc2UyMi1tYWludAorMzAwMjYgNjc5MTJkODM3OTlmNzNjMGNlOTU3MTY0YjkwMWQyNGQwNmRiZDhhYiBsZWdhY3ktdHJ1bmsKKzMwMDI3IDhiMzYwMWE2MjMzNjMzMmRlMjRiMDZiMzRiZmY0NTdlOTU4NjZlMjcgbGVnYWN5LXRydW5rCiszMDAyOCBiOWM5MTJlMmMzYzAwNjNkYzkwYjU0NTU0MDUxYmNjYWE4ODE4NGQ3IGxlZ2FjeS10cnVuaworMzAwMjkgMGM5OTVjZDA3MDI2NzcxOTYwM2ZhNzEzZDk1Y2VhNDkzY2ZmMmMxZiBsZWdhY3ktdHJ1bmsKKzMwMDMwIDRlNmFjMmZlNjhmMGJjYThlM2YxOTA2MDlhYThmMDM3OTFmODZiN2QgcmVsZWFzZTIyLW1haW50CiszMDAzMSBjODg0YTZjNDdlMDYwZThiMWZmMDMwMzllZTU0Yjk1NjBjZGYzOWMyIHJlbGVhc2UyMi1tYWludAorMzAwMzIgNGJlYmYxYTE5MzE5YzQxNWNlOTNjM2RkN2MwMTQzOGU0MGY2ZDc3ZSBsZWdhY3ktdHJ1bmsKKzMwMDMzIGEzNmRmZmQ3NTMwMDliOGVmM2VlOTJhM2Q4MTI3MGE1OTdlMmY4ODYgcmVsZWFzZTIyLW1haW50CiszMDAzNCAyNDJhZDVjNTkyY2MyYWZkYTg1ZGEwYmMyOTNhMWVhZDQyYjlkYjg0IGxlZ2FjeS10cnVuaworMzAwMzUgNGJlNjJkYzlhM2U3ZDc0OTI2MGM0MzE0OGM3MjdkZjU3NWQwNzhhZSBsZWdhY3ktdHJ1bmsKKzMwMDM2IDcwMWI3OTdiYmRjOGZiNDQ2MGQwZTM1MzJjYzBjMTQzMTIyYTU2NjkgbGVnYWN5LXRydW5rCiszMDAzNyAwZGJmOThlZTExOGUyNjk1M2I2MTcxYzRkZGI5YTg0YmE0NWViYzg5IGxlZ2FjeS10cnVuaworMzAwMzggOGY3NDNlYmU2YzY2MzJiMDBhM2NiMmVmMTM3Y2M2NzQyZmRlZDZhOCByZWxlYXNlMjItbWFpbnQKKzMwMDM5IDEyYmM0YTNlNDVhZjhhMjRjMWI4ZWNmZWI4NmRiODVkZDcyYjczNDggbGVnYWN5LXRydW5rCiszMDA0MCA4NTFjNjI5MjA1ZDJmM2ZhZTMyYTg0NDQ5ODkzNDhkNmUwOTg5ODU5IGxlZ2FjeS10cnVuaworMzAwNDEgYjU2NmJlOGJmYzIzYzc5MDI2NGRlMGM4YmQyNTFkMzU3MWRhNDRjNiBsZWdhY3ktdHJ1bmsKKzMwMDQyIGZhNjVmOTRkYzRjZGJjNzQ1OTBmNTgwODc1MDFiZDQxYmQxZTE1NGMgbGVnYWN5LXRydW5rCiszMDA0MyBhOWY2YzAwNmFhNDU4ODY5MDk2YzQzOGY1MzFmZWZjY2U0YjU4OGQ3IGxlZ2FjeS10cnVuaworMzAwNDQgNzE1ZTI4ODhmMzc3ZmI5MmVkMjEzZmM0NTljYWRiY2FkMDY0ODc2OCByZWxlYXNlMjItbWFpbnQKKzMwMDQ1IDA2MDFhOTA1NThmZGJhZjM5ZWNiZDc4NmVhYjY5Zjg2YjUxNTYzNDkgbGVnYWN5LXRydW5rCiszMDA0NiAzNDJjMzRjNDM4YTI2MDhhMTU1NDY1ZmEyYWU0ODM2MDRjNmVhNWU4IHJlbGVhc2UyMi1tYWludAorMzAwNDcgODJiOWY1YzdkMDFhMTQ2NjI3ZmVlNjhmNGFiYTRmNWFiYWRmODFhNSBsZWdhY3ktdHJ1bmsKKzMwMDQ4IDJhYmExYWM0NzQ0Yzk2NzkzOTU1MmZlZThkYmRiNTdmMDAyNWRlODAgbGVnYWN5LXRydW5rCiszMDA0OSBjYjhjZmFkZjc1YTI3YmY4YjUzZTNhMDY4YjA3OThhMWU5NThhNTkyIGxlZ2FjeS10cnVuaworMzAwNTAgZDc1NWQ0MjkyZjNmZmIxMmZiODE3YzcwM2UyMjY3ZmM3OWQ2ZTM1MCBsZWdhY3ktdHJ1bmsKKzMwMDUxIDI5ZThkZTU5NzU2YTQ1YjYyZWRmY2I4ODI2OGI1MGQ5MTBmN2FjNDkgcmVsZWFzZTIyLW1haW50CiszMDA1MiAxZDllMzBjMDVjZGU0Y2IyNjlhYzE1ZGRlYzYxN2FkZTA0YmQ3YjdlIGxlZ2FjeS10cnVuaworMzAwNTMgOTNiNWNhOTQyM2ViMjc5NWJkN2EzMTgxMzMxMTNiOTU3ZmQ3MGE1MiBsZWdhY3ktdHJ1bmsKKzMwMDU0IDdhZTljMzZjYmNiNjZhNzE5YmVjYTgwMzQ5MGYwYjgyNzJlYTNmZTIgbGVnYWN5LXRydW5rCiszMDA1NSA0MDUyMzlhN2UwZDhiYzk0ODhjN2I4NmJjMWFjMmJlYjE2NTUxYTVjIGxlZ2FjeS10cnVuaworMzAwNTYgOGNhODA4NDNhNjcxNjE3NTk5NzI5MGU5NmFkYTAyY2FkOTc0MzFjYiBsZWdhY3ktdHJ1bmsKKzMwMDU3IGU4OTQwZDRjZDhjYWU3YWUzNmZjZmJmZmU2NjQ3M2UzZGVhOGIxNmUgbGVnYWN5LXRydW5rCiszMDA1OCBkNGI3NjgxN2M5ZTYzYzY1MTAzZjdjNDMzZTkzNzE1NzNmYWIyNjBhIGxlZ2FjeS10cnVuaworMzAwNTkgOTIwNmIwMDRmMTUyYzQzZDVhMWVkZmMyZDIzYjJmMGY1NGFiYWQ1NCBsZWdhY3ktdHJ1bmsKKzMwMDYwIDk1MjY4N2VhOWNiMTJkOThkNjYwMWU0YzgwMmNkNzM1YzRhMTY5YTcgbGVnYWN5LXRydW5rCiszMDA2MSA4OTkxZjc4ODE3Yzc5MDA0YTBjODE3M2ZjOTRjYjE2MmQ2MzE5YzE5IGxlZ2FjeS10cnVuaworMzAwNjIgNGU5NGFhMDcyNzY4NjIwNTVmNDU0OWIyYjk2NmM5ZDE2ZTg2NGQwZiBsZWdhY3ktdHJ1bmsKKzMwMDYzIDNmNDM4M2EwNGI2MjU0YjM2YTJlMzMwMmY3N2Q4YmQ3NzkwMzUzZWUgbGVnYWN5LXRydW5rCiszMDA2NCBlNjQ0MjViYjk0ZDg5YTMyMGM5MDNiYjdmMTEyOTI3NzMzYjJlZDViIGxlZ2FjeS10cnVuaworMzAwNjUgODEwMzJlOTdiYTNjYTIwMDIxZDVhZjk3OTlmMWIxMDIwZDkyODEwOCBsZWdhY3ktdHJ1bmsKKzMwMDY2IGY1YjRlMTc3NDk2MTdhOTYwMTA1Nzc4NTI0MWNlZTRhNmJkODAwN2MgbGVnYWN5LXRydW5rCiszMDA2NyBmOWQ1MTZjNjFlN2I5MzJjZjY1ZjdlYThmNzA1OTgxNDk1MTk1MTM4IGxlZ2FjeS10cnVuaworMzAwNjggNjE1YTI1YTZlYjViYWFjNjY2ZmI1NDY1NGJhNTNlOWJhNTA1MWMyNyBsZWdhY3ktdHJ1bmsKKzMwMDY5IGMyMzRmNDhkZTEzOGY0OTliMGQ0ZDlmMzc0Y2U3NTFiZTNiNGE1MjkgbGVnYWN5LXRydW5rCiszMDA3MCAwYzY0NmJhZWVjNTgyMzI1YmIxZDk0MGQzZDYwOTEwYjE2ZWQzMjVkIGxlZ2FjeS10cnVuaworMzAwNzEgMjExMDM4NTA1ZTU2YzRlYjk3M2FiYjU2YTAyZTEyM2E5YjM3NzJjNCBsZWdhY3ktdHJ1bmsKKzMwMDcyIDA1NjM4Nzc2NzgzMjU1OTgwMWFiNTAzOThmY2RiM2FhNWIzMzU2Y2EgbGVnYWN5LXRydW5rCiszMDA3MyBjMzU3NjhkNzg4M2U0ODQ3ZTllYzYwYmQ5YjBiNjJmMjhhMjVhMjM0IGxlZ2FjeS10cnVuaworMzAwNzQgMzA4NGJmOGJkMTFjMGFhNjBhM2YzNjE4ZjEwNGM4YzA3ZGVkMjQzNCBsZWdhY3ktdHJ1bmsKKzMwMDc1IDdkZGVhNGRmYTUxOWQzYWQ4ZTYwMmE5ODRiMWVmNzMyMjc1NzFhNjYgbGVnYWN5LXRydW5rCiszMDA3NiA1NmRiZDkwNzlhMTNlZDZlZjc0MWFmNTY0N2FiYjIzNDYyMDFhZGIwIGxlZ2FjeS10cnVuaworMzAwNzcgZWNlYTg0MTAxNzhlMDY1YjEyNzQwZmUzMTcxZjYxZjdkNWQyZjEwOSBsZWdhY3ktdHJ1bmsKKzMwMDc4IDc1YmZjMjRmZDc0ODUwZDE3ZTk1MjMyNWFiNTVkZDVjYzc1NmE2MDAgbGVnYWN5LXRydW5rCiszMDA3OSBjYzA1YzJjODY2MGUwYzY4YWNjYmM1NmJkOGU2ODg3MmRlNTVmMTY5IGxlZ2FjeS10cnVuaworMzAwODAgYzE2M2VkMTdmOGJhMzg1YWE4N2MwMzQ5MmM1NGNkN2EwZTUxNmRjZiBsZWdhY3ktdHJ1bmsKKzMwMDgxIGJmYjI2NjRjZGIxYmU4N2MwMWQ2MWRkNDhiMDg1MjIxYWNmNjEwMzcgbGVnYWN5LXRydW5rCiszMDA4MiBhZjUxMTliZTIyMWY0Mzk5OTNmM2NkNDJiYzgyYzM1ZWE4MmUxNDE5IGxlZ2FjeS10cnVuaworMzAwODMgMzc4Y2UwMjBkOWU2OGM2NzVmNDY2ZTEyZWIyYTRlNTVjZDBlMjhiYiBsZWdhY3ktdHJ1bmsKKzMwMDg0IDlkYjM5NmJjZTRlNzVmMjA1Yjc0MzAyZWYzOGRmYzQxNjQxYTE2MjMgbGVnYWN5LXRydW5rCiszMDA4NSBlMzllNzRhZWEyZmI4YTczNDE0ZDlmZGM1ZDY0ZTBlN2U1OWNlODFiIGxlZ2FjeS10cnVuaworMzAwODYgMTRmNTNiNmQ3ZjU4YjIwNGI2ZGMzOGJlNThmOWJlM2IzYTY1NGMzYiBsZWdhY3ktdHJ1bmsKKzMwMDg3IDJmYWIwYjY0ODhiNTEwYWM5MzYzMjk4ZjUyY2UxMDUwNTRiMjVhMzUgbGVnYWN5LXRydW5rCiszMDA4OCA3NGQxYWQ2MWY4NDNjYjJmZTRlOGUyYmMwMzhjYjg3NWZmNmI0YTNhIGxlZ2FjeS10cnVuaworMzAwODkgODc3MTk5M2M5YWFjYWRhNDBmYjgxMjJjNDAzNTkyYzY4YTUyZGI0YyBsZWdhY3ktdHJ1bmsKKzMwMDkwIDk3ZjgzNTQyZjhlZWZhYWUxZGY0MWJjNGU5NTc5ZGI5MWQ0YWYwMTMgbGVnYWN5LXRydW5rCiszMDA5MSAyOGJjMmQzYWY5MWRiNjg5ZDQwODAxODI3NWM4ZjYyMzI1NjZiODE0IGxlZ2FjeS10cnVuaworMzAwOTIgMmM3YmRiYjUwZTc2MjhjYTUwMzEzZGJkMWEwNWRlZWQwMDhmMjkwYSBsZWdhY3ktdHJ1bmsKKzMwMDkzIDAyNzg1MjQ4ZTAwYTZmNDRjN2YxNTZiMGVkMjk4MTFkMmMxNDIxN2QgbGVnYWN5LXRydW5rCiszMDA5NCAyMGUwNzU1ZjM1NTQxZDY5ZWU2NDk3NzE5MTNlOTYwN2IwOTE4Y2UxIGxlZ2FjeS10cnVuaworMzAwOTUgM2JlNGY1ZDM3N2Q4YjJjNTRhNzY1ODk4YmU4NTRiOGIwOGM5NWQ4NCBsZWdhY3ktdHJ1bmsKKzMwMDk2IDllNzUxZWVlODFmNTA0ZTQ1MjVlNjQ0YjgyMDE0YTg0OTUxZWJhYzcgbGVnYWN5LXRydW5rCiszMDA5NyBiNjI5OThmOTg5NzNlMzMxZDgxYWNhYjcxMmY0MTNlMjFmMTJmMjE2IGxlZ2FjeS10cnVuaworMzAwOTggY2I5M2Q5Mjg3YjRlYWVjNGRmMzBlODY0ZjQxMjkzOTkwYTNkMDRlOCBsZWdhY3ktdHJ1bmsKKzMwMDk5IDdkMTkyODc1YTEyZjc5OTAyYWJmMzYxOWUwYmRhZTg1NjVkMjY0ZGEgbGVnYWN5LXRydW5rCiszMDEwMCAxOTUwN2ExZDAyNTQ4ZWJhOTJkNGQ5YTRjZTFlOTNiNzQxMGJjNmJhIGxlZ2FjeS10cnVuaworMzAxMDEgODA5NmRjYzdhZjY1YmJiNjEwM2NmNmRmNDdiMTYyZGUxYzA2NGNmNSBsZWdhY3ktdHJ1bmsKKzMwMTAyIDYzN2IxMGI1MmUwMmU2N2YzNDM2MWRjYjBhYTE0MGNhZjc5NDAyNmUgbGVnYWN5LXRydW5rCiszMDEwMyBiYTE1NzhiZTU3MDZlZDVlOTVkYjE3MzRjOGFjMDBjOGI3ZTVkZTU2IGxlZ2FjeS10cnVuaworMzAxMDQgZTQxZWUyYjhlNzNkZWFjZWY2Y2YxZTYxNzc0YWU2NWI2ZTMyMmE4YiBsZWdhY3ktdHJ1bmsKKzMwMTA1IDdiYWJkYWVhN2QxOWQ3ZjNhMWIyYTFkOGI5ZTI5NTEwZTAyNTNlYjcgbGVnYWN5LXRydW5rCiszMDEwNiA4ZGZjMGZjNGMxNGI1MTAwMTAyMjBiNTFlZjgyNDViNTlhNzE2YjRiIGxlZ2FjeS10cnVuaworMzAxMDcgOTgxNjQ2NjZkMmE4OTcyYTQ3NWYyOTMxZTM3YjYyYTlhYTA0NTZiYyBsZWdhY3ktdHJ1bmsKKzMwMTA4IDU5ZGQ5MjU3YmMwMzE2ZjZhYzc2NWM1ZTIwODFhNGNlMjc3OWU4ZjIgbGVnYWN5LXRydW5rCiszMDEwOSBkN2Q1MjVlMzBjYzAyMGY2MTU4ZGYwNWZiZGU4N2FmNmM1ZGZjZGQxIGxlZ2FjeS10cnVuaworMzAxMTAgODkwYWE5M2RkOWMzOGU3MzI2OGM0MTgzNDlkNWJiZTYwMjFkZmFlMCBsZWdhY3ktdHJ1bmsKKzMwMTExIGIwYmYzNjA0MjQ0ZmQ1OWNkM2RjYzdhNzZkYjAzMDhkOTNlYjcyZDggbGVnYWN5LXRydW5rCiszMDExMiBmZDQ1NWRmNTViMTM1YmI1MzNkYjhiOGExNmQyYTFlMTFiNWQ3MzNlIGxlZ2FjeS10cnVuaworMzAxMTMgOTZiOGM4YWU3MjYyZWRkNjhlZThmYjhiZTM4YzgwMzcyMmVlMDJkNyBsZWdhY3ktdHJ1bmsKKzMwMTE0IGM2OWI4ZTYxZTY5NWJkMWU4OWQ4ZjQwNDQzZTk0ZjhiYzk3NjMyMWIgbGVnYWN5LXRydW5rCiszMDExNSAzNDI5OTU1NzI0YjI3OTIyZDZhN2FlZTU0ZWEyYmI4NDc1YjAxOTUzIGxlZ2FjeS10cnVuaworMzAxMTYgZmQ2YmU4N2U1YzI5N2U1OGJiNzAzZjQwNjAzMGU5OGFmODExOGQ2YyBsZWdhY3ktdHJ1bmsKKzMwMTE3IDBmZjQ3MzYyYmI4MTE0YTA0NmU3OTBhNDBmODk4MjUwZDFlOWYzOGQgbGVnYWN5LXRydW5rCiszMDExOCBiYjZlYTA3OTA5NDc5YTYzZDY3M2M3MGNjYmU0ODljMjc5NDM4NTU3IGxlZ2FjeS10cnVuaworMzAxMTkgZTc4M2NkZmEwYjQxOWExYjQwNGIwZWZiYTM4YTVhNmVlNmIyZjA5NyBsZWdhY3ktdHJ1bmsKKzMwMTIwIGQyMzAyMzM5YThhZDc4NDIzNGNjNjVhNmU4OWE4ODEwZDUzN2I5YTkgbGVnYWN5LXRydW5rCiszMDEyMSAwMmJhNDY2M2NhZDIxMjdhNjBhZTZiMGEyZmY4ZmEyYzZkMjY4ZjQwIGxlZ2FjeS10cnVuaworMzAxMjIgNDExODhlMzg5YzYxNDRmMmMxZTkzODhhMzA5M2VkYThjNDljNTYyZiBsZWdhY3ktdHJ1bmsKKzMwMTIzIGQxNzZjYmZkMzc2NTYwMGVhYTM5NTc3NTlmNDUxODFkOWY2ZWJiMWEgbGVnYWN5LXRydW5rCiszMDEyNCA5MjY3ZGZmZmYzMmQzMWQzZTE2NzBmYjJjZDU2ZmU5ZjliYWYxZjc3IGxlZ2FjeS10cnVuaworMzAxMjUgZjg4M2VkN2I5M2M4NjhkYjEyZWU3NDQ0Mzg4NWZjMTM4NWY1NGY0YiBsZWdhY3ktdHJ1bmsKKzMwMTI2IDZlZmE4MjE2ZGI2YTg5MjgyN2E2MWZhZDYyNzNiNzhlMjM0MDBjMWEgbGVnYWN5LXRydW5rCiszMDEyNyA3YjFkMTA3ZTYzYWU2Zjc2YTVlNTIwMDZlN2EzOGZkNzE1MzhhNGVjIGxlZ2FjeS10cnVuaworMzAxMjggY2FhMjQ1YWY3Nzg2NDE4ZDUzYWY4MDViNDMwNjAwOTA1ZDdiZWVhZiBsZWdhY3ktdHJ1bmsKKzMwMTI5IDZlMmMyZjEyMjFlNTM1MjhiNmNiYzllNDQ3Y2IxYTBmZGQwZGJiNmQgbGVnYWN5LXRydW5rCiszMDEzMCA0ODM0ZjgzNjgwMzYzODZkN2NmMmQwM2E0OGZmOTE0NmM5YzkxZWZlIGxlZ2FjeS10cnVuaworMzAxMzEgYTgwMDAxNWU3Y2YyYTZkYjA4YjY3NjMzZjZkMGMwMjA1MTdjODk3NyBsZWdhY3ktdHJ1bmsKKzMwMTMyIDYxYjNkMTc5Zjg2OGU3NDE1NjljMjk2NGFjMWMxYjZhNDA0MTAxYzAgbGVnYWN5LXRydW5rCiszMDEzMyBmMzU2ZmNiNzBlYWU1NWQzNzM3MWZlZmYwNTkyMzMzZGE3OGY5Nzc5IGxlZ2FjeS10cnVuaworMzAxMzQgYjdiZjM4ZDQ0NTk4ZjU1ODljMDk0M2U4NWFiZDdiY2JlZjRjNzU0NyBsZWdhY3ktdHJ1bmsKKzMwMTM1IDYzZDdiNWUzOTZmYjg5ZDFlZThjZmQ3Njg3NjBkYWI2NzEyZGRiZDggbGVnYWN5LXRydW5rCiszMDEzNiA0MGY4YjY0OGU3NjU5Yjc5MTU0MDcxZDI2NDAyYTIzM2Q3OTc3MmZiIGxlZ2FjeS10cnVuaworMzAxMzcgZDk5ZTM4YmI2ZGNkMzViYmFhYmUyN2ExYjdlZjRmM2FjYmYyNmJmZCBsZWdhY3ktdHJ1bmsKKzMwMTM4IGY4MzhiYzkwNTZjYzM3OWQ1OWMyYjJmZmVlNWMwMzBlMTMxODYwNjEgbGVnYWN5LXRydW5rCiszMDEzOSBiMTJlMzI2YjRlYTI0N2Y0YzU3NTE3YzgxNjdhMTBmMWRiYjI4NzJiIGxlZ2FjeS10cnVuaworMzAxNDAgZThkYzFhMGQ2ZjRkNGQxMGE0MGRmNzU0Yjk1ZDI5MDJhYTQyZDdjZCBsZWdhY3ktdHJ1bmsKKzMwMTQxIDMzOGUwMjVmZGU4YjUxNmU4ZWM5YmJlZDUyMjJkZWQzOWE1ZTllOTEgbGVnYWN5LXRydW5rCiszMDE0MiBmZTJkNDIyMzg1YjFmZWU2NmY5OTg3YWI2ZTBhOTkyMjFiYzAxNmU1IGxlZ2FjeS10cnVuaworMzAxNDMgY2IwNmJmYzg4NzdiMjQ5YjJjZjlmZmQ5NTZlYzYzZDBmZTFmZWU5ZSBsZWdhY3ktdHJ1bmsKKzMwMTQ0IDk4ZDExODU1YjQ2Y2NlZWY4MzQzYmQ3ZjRmMTU0YjMzMjk4NjhiMjMgbGVnYWN5LXRydW5rCiszMDE0NSBmNzY3MTc3MDdhNmQ3YTA5MmMyZjQwMmIwZmVjNmJiYjE5MjNhNmRlIGxlZ2FjeS10cnVuaworMzAxNDYgMzczZDBhOGVkNmJlNjRhNWQxZjFmZGY0ZWUwOWVjODdhM2EyOTQ1YiBsZWdhY3ktdHJ1bmsKKzMwMTQ3IGVkMjhiOTc1MmY4ZDJhYmY4ZGU1NGY3NzRiMmRhYmZjNWEwMzdkMGUgbGVnYWN5LXRydW5rCiszMDE0OCAxMzEyMjk3ODg3YTNmN2UwNmVhOWIzY2U4Y2QxZGM3YTI1ZDQ3YzM4IGxlZ2FjeS10cnVuaworMzAxNDkgMzAwZjkyNmYyYjNlYjU4ZmQ0OWYwNDFlM2M0ZDIzYjAxYTc5NmJhZiBsZWdhY3ktdHJ1bmsKKzMwMTUwIDhkZDI1YTZmNTkxMzkwNGM3ZGE4MzIzNmY3YTE3NGQ2ZTQ0NGY5YjEgbGVnYWN5LXRydW5rCiszMDE1MSA1YjcxNWNhZDM0ZDA4MjVkYzE4MzE4ZWExZGJkNGU5MWZmNzcwOGQ3IGxlZ2FjeS10cnVuaworMzAxNTIgYzdlYzhhZDAyMzRmYWY0ZDIxOTc1MTUwN2I1NTNkZDFmMWVlYmMzNiBsZWdhY3ktdHJ1bmsKKzMwMTUzIGJjOTA1NmQ4NDdlZjdkNDZmYWU1OTU0ZGJhNWVmN2UyOTYwYjRmZGMgbGVnYWN5LXRydW5rCiszMDE1NCBmN2Q4ZDQ5ZThmNWRlMjdjYjNjMWU3OTAxNjI4YzBlNjZlNTIzODE5IGxlZ2FjeS10cnVuaworMzAxNTUgNDNiNTRjMmJjNGU2MDIwNWRlMDVhYWQ3NzAyNTMwZjBiMmQ0ODhjYyBsZWdhY3ktdHJ1bmsKKzMwMTU2IDc4ZDg3MmNkMDY0YzJlZGM0OTBjZDljNjkwYTg3YzU1ZTM0M2YyOTAgbGVnYWN5LXRydW5rCiszMDE1NyBhYjUwYTIxYjg3YWVhMTJkZjE4MTFhMGFlNGY1YWJkODExZTM0NWRhIHJlbGVhc2UyMi1tYWludAorMzAxNTggYmM2NjYyYmEzYTc3NTViYmE1NjhmYTIyY2ZmZGQzZTE3ZTI5YWJhZiByZWxlYXNlMjItbWFpbnQKKzMwMTU5IDU3OTEwMTliNmU0ZThlMmJlZWFjNGQ0ZmFjMTZlYjA1NGQ5YzhiZGUgbGVnYWN5LXRydW5rCiszMDE2MCBjMTFhNmUxY2VkZTBkZTE4ZTE1YzQxYmE5NjVkNGY5YjI2MTNkZjJmIGxlZ2FjeS10cnVuaworMzAxNjEgNjA1OWU0MWJkNzdhM2U1NzkzYTg1Yzc2MzRjZGZjZjU3ZDc5NmE4YiBsZWdhY3ktdHJ1bmsKKzMwMTYyIGE5OTc0YTQ4YTRkNmNmOWFjYzBmNTIyYTNhNzRiZjY1YjM2ZGRhYjIgbGVnYWN5LXRydW5rCiszMDE2MyBhMjBjYjVhYmFiNmI3OGY1YTVjY2ZiM2FjYWQ4ZTA3MjE2NDc4NzQzIGxlZ2FjeS10cnVuaworMzAxNjQgYWQzZjY2ZTdmYjEwNDIwMTNhOTQxYTFmMGZlYzQ1ZmYyZTQwZjc0MyBsZWdhY3ktdHJ1bmsKKzMwMTY1IDZiMzkwNTQ4YzY5ODAwNDBiODAyMWZkY2UwZTNlODQ4MWIzMDA3ZGQgbGVnYWN5LXRydW5rCiszMDE2NiBjNzRiNjlhYjQ3NDJhYjg0ODQ3NGZjZjU3OGVjZGNhOTI2ODBiM2VlIGxlZ2FjeS10cnVuaworMzAxNjcgMjMxOGY0YmIwYmM1Y2Q4NWJlZTc0ZGIwZTI1YzIwZTgyMWJjZGIyOCBsZWdhY3ktdHJ1bmsKKzMwMTY4IDJlMGRjOWUwODIyMjg5NmEzNDI1ODQzMGE5YWMwMDNlMmU4MTVlYjkgbGVnYWN5LXRydW5rCiszMDE2OSAzNmNkMjY0MWU4MjY3NGNmYzQyYTllMDg3YjBmMGE4NjM3Y2ExNTJjIGxlZ2FjeS10cnVuaworMzAxNzAgNDE3M2U0M2VmNDBjY2U2NmY2M2RkZGFjZjFkYzA3MjNkMDg1ZWY0YiBsZWdhY3ktdHJ1bmsKKzMwMTcxIDk3NTMzM2Q0MGJmODMyYTQwMmEwNmJmYTk2NjJhNjZhYmEwOTgwMTUgbGVnYWN5LXRydW5rCiszMDE3MiBjNDI4NmE2YWIwMGM5ZTM1YjljNmFjMjRjZWE5N2EyZGFkYTgyMWFkIGxlZ2FjeS10cnVuaworMzAxNzMgNDljZWVlMDI2ZDY2M2UyMDg5YTQ0N2QxYTI0MzMzMDljNTQ5NTk1MSBsZWdhY3ktdHJ1bmsKKzMwMTc0IDUxZTc0MzIxYWQzZDYwNzNkYjM5ZjQwMDk3Y2ZiYzI4NzJmNmU4OTggbGVnYWN5LXRydW5rCiszMDE3NSBhMjIzZTI1NTQxOTAxY2U3NzY4YzZjZWY1ZWQ0MzE5Yzk2OWE3MjE4IGxlZ2FjeS10cnVuaworMzAxNzYgYWY2NjBjYWIxY2JlOTExZGU5Y2VmZWRhMGI0N2RkOTFhNzY5MmM0MCBsZWdhY3ktdHJ1bmsKKzMwMTc3IGU0MDRiYmVmZjA4MzcxYjM1Y2M2MWY1NTE3ZmI2NDY0ZmVmMWIzNDMgbGVnYWN5LXRydW5rCiszMDE3OCAzZWQ0N2IwNzg1MDgxOWQxZGFmNTMzYzdmYmUxNjAwOTZkNDU0NjNmIGxlZ2FjeS10cnVuaworMzAxNzkgNDVhYjMxMTI3YmY5MjJiOTlhNTQyOWU5Y2Q4MTYzMTU2NDkzNGQxOCBsZWdhY3ktdHJ1bmsKKzMwMTgwIDEwMWZlMzJmNTZmZmVhNTQwOGE4MDI4ZjcyMmRkMjY1M2Q1NzFmZDkgbGVnYWN5LXRydW5rCiszMDE4MSBiZmUzODk2MWNhNDJjODg2ZDUxZDM3MThhZjk4ZTk1MTFjMTAxNzUzIGxlZ2FjeS10cnVuaworMzAxODIgZjkxZDc4ZTE5Yzg2NmY5ZTY4ZGE1ZWQ4ZmFmZDFiMTg5MjFmZTQ5NiBsZWdhY3ktdHJ1bmsKKzMwMTgzIDJlZDM0ZjAxYzgxY2ExMmE3ZTNmNzAwYjFjM2E4OTAwNzljNDYyMDYgbGVnYWN5LXRydW5rCiszMDE4NCBkNjQyMTQ2OTQwODNiZWJkNGQyODRkYzljMGQ3YmQ0YjYzNTVmYjI4IGxlZ2FjeS10cnVuaworMzAxODUgMWUxNzBhOTViNjRmZGVmYjhmZTE2MWE5YjAxMDQxYmZhMTg0NWJhOCBsZWdhY3ktdHJ1bmsKKzMwMTg2IDM1OTNmMmI5MWQ3ZDYwNWU1YzQ1ODA4ZTgzNDhlODJjMWI2ZGI1OTIgbGVnYWN5LXRydW5rCiszMDE4NyA4OTMxN2Q5M2Y2Mzk3MzllMTY2MmM2MmZjZjI2NDRiZTQ3NTFkMTZkIGxlZ2FjeS10cnVuaworMzAxODggZDM0OGIxN2NlYWFkNjkzNjNmOTg2Y2MwZjYyN2FhYjcxOGQyY2JkNSBsZWdhY3ktdHJ1bmsKKzMwMTg5IGQ5MzlhZGJjYTc3NGYwMGRiOWY0YjIwYzgzZDExYTI0NDc1YzcyNWIgbGVnYWN5LXRydW5rCiszMDE5MCAwNGIzYTlmNmJlNDFmNGU0MmU3MDE0OGIyNTcwOTMwY2ZjYzRhNmIzIGxlZ2FjeS10cnVuaworMzAxOTEgZWFiNmQ3YzgwMzQxOTE3OWQyMDIxOTBiOWNhM2I5YTY0YzNhODZiYiBsZWdhY3ktdHJ1bmsKKzMwMTkyIDJmNTIzYWU5MGUwNjBjODdiM2U1NmEyYjM0MjRjNGY2MmMyYzMwOTAgbGVnYWN5LXRydW5rCiszMDE5MyBlODIzMjY5OTY0ODFiMjEwNDAzOGE2MDkzNjQyYjAzODZlMGFmNzdlIGxlZ2FjeS10cnVuaworMzAxOTQgYTM2MDBjNGVjYzhiZjJjMjJhYmU0OWM2YzE0NTAzMzlkZTc0YTQ3NCBsZWdhY3ktdHJ1bmsKKzMwMTk1IGY1NWY1ZTFlMzBiYzkyNTc1OTdhMzA0NTA5OWJmMTNjYWI1MDU2NmYgbGVnYWN5LXRydW5rCiszMDE5NiBkZmNjMjA1N2E3NTVhZTdjNmY5ZGNiODA4MGRlYWUzZGUwNTFlNWQyIGxlZ2FjeS10cnVuaworMzAxOTcgNTM4NDQ3YzlkNTQzZGIyYjQwNTM0ZjJhNGJkNTM5NTc1NzRmMmE5NSBsZWdhY3ktdHJ1bmsKKzMwMTk4IGExMmUxNzI3ODUwYWY5YjA2MTVmY2Q5ZmQ0NGNkMzU0MDI3OTE1MzcgbGVnYWN5LXRydW5rCiszMDE5OSBjZmQ1YTY4MjkzN2UwYzQzNjQ5ODRhZTZhYjU4MzVhYmYwYjNlYjRlIGxlZ2FjeS10cnVuaworMzAyMDAgOTI0YzRmMjJiYWM3OTQ5MWNjOWE5ZjgyMTZhZDFhNzdjNjljZDJiMyBsZWdhY3ktdHJ1bmsKKzMwMjAxIGE1NDM2M2VhNjk0NjA1NjkxYTMzMDc0YjJhMWFlOTExN2M0OWQ4ZGQgbGVnYWN5LXRydW5rCiszMDIwMiA5MDFlNDdjYzhjYWNjODIwZjM1NTIzZTVjMTYxMGRlOTVlZjcwMGQ3IGxlZ2FjeS10cnVuaworMzAyMDMgOTY2YjgyNzlkMWZhZDgxNDRiZTM3YjFjOTUwMzU3ZmM4OGJkZTEyYiBsZWdhY3ktdHJ1bmsKKzMwMjA0IDQ5Njc3OTA0NzJkYmQzZWM1ZmE4YmMwMmUwMmVhOGNkMzc5ZjU3ZjMgbGVnYWN5LXRydW5rCiszMDIwNSBjN2MyYjIyMmJiOGFlOGQ0YzZmZjVjMjgyNGM4ZjJjNDMwZmFlYTNlIGxlZ2FjeS10cnVuaworMzAyMDYgNWZiYTUxZjM3MjliMmRkZjU4NWYzYTk5MmU5MTJiODRhYjk4OGE2YSBsZWdhY3ktdHJ1bmsKKzMwMjA3IDQxYmQzN2JlZjNjNzczYmViNTIzZGMwOTc3ZTcxMmQ3YjhjMzk3MzYgbGVnYWN5LXRydW5rCiszMDIwOCA5YjRjMDE0YjNhMjE4ZTc2YTlkOTc2MGM3ZDQ1NWY0NDZhN2ZhNDQ2IGxlZ2FjeS10cnVuaworMzAyMDkgNTczZTQ4MmVkZWMxYTU4MzY5MTZjMmVjMWEwYmU5NDRjNWQxYzhlZCBsZWdhY3ktdHJ1bmsKKzMwMjEwIGEwM2NlNWQ4ZjI5NzU0Zjc2YzZmZDY4YzY1ZTMyYzM4MjYxNTk1YzIgbGVnYWN5LXRydW5rCiszMDIxMSA3MDlmOTA1NDE1ODUyMTg3NDgwN2Y2YTdlMDEyZWJiOTEyMTcyZDUzIGxlZ2FjeS10cnVuaworMzAyMTIgZDhmZGE0ODE4YmZkNWY1NmFhNTIwNTdiZWJlZjUwMTYwYWVkYjI5MCBsZWdhY3ktdHJ1bmsKKzMwMjEzIDE2YWZmNzA3N2U0YmVlNGFjMDk3MGFhYWQxNDRjNTg0MDEyMWFlZDkgbGVnYWN5LXRydW5rCiszMDIxNCAyYjQ2ZDcyOTJmMjc3NDMwY2ZmYzM4YzRiMzZhYTk2OWQ1ZWNjNWNjIGxlZ2FjeS10cnVuaworMzAyMTUgNmYxZjg0MjAzZWNmMGIxYTU2NTUwN2JkZDAzYzhkYTg1YWJjYWNlZSBsZWdhY3ktdHJ1bmsKKzMwMjE2IDc4ZTg1N2U5ZGQ0NzY5MDU1ZjQ4ODFkM2U4ZmI5OTEzMWM0ODZkMjYgbGVnYWN5LXRydW5rCiszMDIxNyBjNjVlOGNiOTFmNGMzNmQ5ZGY4YjlkZmQ3YWE4YzdiNGY2M2I2YjhmIGxlZ2FjeS10cnVuaworMzAyMTggNzJjZjA4OWQ2MzRhMTk4NDM0OTEyNzMzNjIyNWMxYmJmNGU5OTAwOSBsZWdhY3ktdHJ1bmsKKzMwMjE5IGNhZGZjZTY2ZDg2MTlhNmJjMzU3OWQ2YTIyYWY4YjdhNTZjMjQ2ZjggbGVnYWN5LXRydW5rCiszMDIyMCAyZjNkNmI3OWYxMWJkM2M0ZGJkMTBjYWRjYjM4MWZiZDQ1ZjFjOTkzIGxlZ2FjeS10cnVuaworMzAyMjEgZDA1MjExMjczMWE4ZTI1YmYxNzIxYjFmNTFjMWZlNjlhODU5NDhmMCBsZWdhY3ktdHJ1bmsKKzMwMjIyIGIwYWNmNWRlMzQyMWNlMGY2Y2E5MDQxYmQ3OGUyY2NhYzM5M2U1MTggbGVnYWN5LXRydW5rCiszMDIyMyBjMWM4YmRjNGUzZGJkY2YwYjliZDAyMmE4Zjg0ODg4ZmU1MTFiMDdkIGxlZ2FjeS10cnVuaworMzAyMjQgMDY1ODY0MDRlYzRjZGEzMDIwZDI2OWU1YzdiMjEzZTc5Zjc2NmViOCBsZWdhY3ktdHJ1bmsKKzMwMjI1IDMzNjk2ODgyMWRjYmNlMWFhOGQwNmQwMWQ0ZDg3NzdkYTU5ZTEyNGYgbGVnYWN5LXRydW5rCiszMDIyNiBkYjlmY2ExNDUwNTg0YjUzYTNlOTAwMDU5M2RkOTQyNzEwOWQ4NDI5IGxlZ2FjeS10cnVuaworMzAyMjcgNjBiMzg5YTRkYzA4NTUwMWFlNDU1NjczYmY5MTlmMzY1MWVjYWNmMiBsZWdhY3ktdHJ1bmsKKzMwMjI4IGI5ZTQ1YjgyOGFlMTFhMGU1NWNlYmVkZTZiNTAyYTliNWI4ZDM0YTUgbGVnYWN5LXRydW5rCiszMDIyOSA2NWFjZWM5Y2JlNjkyMjdlNTJmZDZjMzcwMDU1MDhjNjE1NTRhZGM2IGxlZ2FjeS10cnVuaworMzAyMzAgMTYyODhiMDU0ZmMzZjEzMzBkYjc4YTc3YjI1NTdlOGM1MzBlMzMwOCByZWxlYXNlMjItbWFpbnQKKzMwMjMxIDdjMTViZjc3MjZiMjRlNTIyNTAwZTQ2ZTAwMmVjZTI1N2NhZTY2MDggbGVnYWN5LXRydW5rCiszMDIzMiA4YzNlZjUyNGZhYTA2N2ZkYjg2MzdhYzE1OTVjMTFmMjU1ZmFjOWJlIGxlZ2FjeS10cnVuaworMzAyMzMgOTViYzBjMDUyMDM0NTA4N2QzMDUyMTM4MzZjMjQ4YTRmNGU0NDI1NCBsZWdhY3ktdHJ1bmsKKzMwMjM0IGNjZjBiMDI3YjU4NTZkNTdiZjM2YjhkMzYxN2UzMWQzOTA2N2QzYjQgbGVnYWN5LXRydW5rCiszMDIzNSA3ZmQxYmYyMGEwYzBlOWNiYTUxN2YyZmNkMzY5MGRiMDVhYmMwZDBiIGxlZ2FjeS10cnVuaworMzAyMzYgYzEyNzJmM2YyOGY1MTc5YjIzM2QzYzZlMzdjMDAzNjRlNjE2Y2MxYyBsZWdhY3ktdHJ1bmsKKzMwMjM3IGVjYzI3YTFjMzNjYTc5ODk1MmUxMmRlYzMzODAwYzJhMWVmZGNiMzQgbGVnYWN5LXRydW5rCiszMDIzOCA2MjAwOTZmZDU1NjRjMzZkMDM3NjYzZWRiZjk3NGRjYjQwYzk4NWUwIGxlZ2FjeS10cnVuaworMzAyMzkgYzYwOWNkNDkwNmZiNGFlZGFjM2NhYTU0NGEyODI3MTIyZmUyM2UwOCBsZWdhY3ktdHJ1bmsKKzMwMjQwIDQ5ZDAyMmI1ZmQ2NDA1MTkwZjk1NjZmNmFiYzVjNmRkNmVhMzNjODEgbGVnYWN5LXRydW5rCiszMDI0MSA0YzlmZTQ5MDVlOGZhMDZiMjdkNTkyNTdlNzkzZDY0ZmUyMjA0OGM1IGxlZ2FjeS10cnVuaworMzAyNDIgNmIzMWIyNmU0MThkZGM4NDU5ZTI2ZTRhNzc1ZThhYTk4NTBkMGI1ZiBsZWdhY3ktdHJ1bmsKKzMwMjQzIDA5NTQ0MGI5NzVhMWM4NzA1OGZmOTczZjYxNmQ5NTZhNDcxMWQzOWIgbGVnYWN5LXRydW5rCiszMDI0NCBhZjIxN2NjYTNiZmM3YzEzNDhkODQ4NjliZDMyOTE4ZDQyNTg0ZmQzIGxlZ2FjeS10cnVuaworMzAyNDUgYWQyNjNkMjY4MjU1NDgwMjQ4MDllODYyYzFjMmQxZDgxM2JjYTUyNyBsZWdhY3ktdHJ1bmsKKzMwMjQ2IDM0NmEwNzI3MGU4N2RkNjQ5YzhiM2MyMDhhNjIwOWJhM2ZhZmMwOGIgbGVnYWN5LXRydW5rCiszMDI0NyBhZWYzYTAzYTc5ZjEwZTE3N2FlMGQ3Y2I1NmQxZWM2NGFmNWUzMDU3IGxlZ2FjeS10cnVuaworMzAyNDggOGFhNzU2ZTVhY2NjODVmY2NjOWIxNTZmYTdkOGM3NGFmMjQ2N2RjZiBsZWdhY3ktdHJ1bmsKKzMwMjQ5IGZjN2ZkZWMzZmI4NjNkMmM5MTI5M2JhYWQ2Mzk4MmFlMGJjY2U0MDEgbGVnYWN5LXRydW5rCiszMDI1MCAyNDBmZGJlZjhjNjBjMzZhMGI4OGE4ZDE2NGRmYjZjYjdiOWFkZGI3IGxlZ2FjeS10cnVuaworMzAyNTEgMGYxNDA1YWNlNDM3ZTkyNmM5Yjg0NTIyZWYyZGFkNThjYzJiMjE5NiBsZWdhY3ktdHJ1bmsKKzMwMjUyIDg5ZGQ3NGY3YWUzMjZjMGVlMzJlNDIwNGJlYmFlMGEzYTFhNzk2YjcgbGVnYWN5LXRydW5rCiszMDI1MyBkMTYwODE2YjkxZTU4M2QyMzBkYmM4ZDA0ODRjNTI0NTllZDk2ODM5IGxlZ2FjeS10cnVuaworMzAyNTQgZjg1Y2IwODk1NTM1ZGU3NjhhNjBkOWJjZWUyZjMzNzk4Zjk0YjFkMCBsZWdhY3ktdHJ1bmsKKzMwMjU1IGJiNGRmMDAwMGI2ZDFhYzRlNzcxZjM3YTU1MTIxNTVhNjE5ZDJiMzEgbGVnYWN5LXRydW5rCiszMDI1NiA0NGQ3NDY4ZDZkYjZlMjMzOTE4YmVkZjgwOTBmMTg5ODMzN2QyNjA1IGxlZ2FjeS10cnVuaworMzAyNTcgOTJhNDA2MTE1ZTdjZDM0MTY2NmJhMjUwNjVmMGVlMjJkODhiZWM0YyByZWxlYXNlMjItbWFpbnQKKzMwMjU4IDVlZmU2YjBhYzBlNmJjYzIwYTU2MGFiOGYzMDBkZjUwYjI1ODI3YWMgcmVsZWFzZTIyLW1haW50CiszMDI1OSBjNTVlNmU2MDFiOTk4ZDcyYjg5YTU2YjgwZGRiM2JlYmU5NjNlNjE4IGxlZ2FjeS10cnVuaworMzAyNjAgYmM3Zjg5MTNmNWNhODY2Y2FlOGEyMWRiZjcxZjJmOWNhZWU0ZjQ3MSByZWxlYXNlMjItbWFpbnQKKzMwMjYxIDMwMDEzNDI5YmI4NDU5ZTNiODA2NDA3MzY5YmNiYjE0MDBlYjNmYmYgbGVnYWN5LXRydW5rCiszMDI2MiA4ZTI3NTEyY2MxN2RkY2I3ZDQ3YjcxN2M1YmM3NGEzZjY2MzFkZDlkIHJlbGVhc2UyMi1tYWludAorMzAyNjMgMGIzNGY1MWVhYjRlYTQ4N2JhMWMwMWNlOTk0MTM0NmQ2YTcwZWVhMSBsZWdhY3ktdHJ1bmsKKzMwMjY0IDdjNTE5NmYwMTUyNGI5ZTk3YzE4MjI2OGM2NmQ2YTdlZTk3NDcxMzAgbGVnYWN5LXRydW5rCiszMDI2NSAyZjI4NDM2MDYwYzQ1NjU0YmI4NTgxZmNjMDc1MTRjYTJjNTllMGE1IGxlZ2FjeS10cnVuaworMzAyNjYgMTQzOTIyYTQwZmFjNmY3ZGQ1MDA0NTQ1ODY5NTBhODVlMmMzMTlkZCBsZWdhY3ktdHJ1bmsKKzMwMjY3IGZiYzg1YWFhMjYwYmExYWM0ZDU4OWE3YTU0YjI2OTc1NTE1YjcwMDggbGVnYWN5LXRydW5rCiszMDI2OCA4OWM5YzZjNDA1ZWY4YzQxNWRlODdmMDEzNjYwNmQwNDU2MGI2NmU5IGxlZ2FjeS10cnVuaworMzAyNjkgNThiZDcxMDBlZTE1N2YxN2I4NWQ5NDQ4MDFhYzFlYzJmZTU0ZmNjMSBsZWdhY3ktdHJ1bmsKKzMwMjcwIDgxNmI4ZGRjY2ZlMTY1MTYxNGQxNjQwMTg5OTljZDY4M2FjOTM5MWUgbGVnYWN5LXRydW5rCiszMDI3MSBkYjkzODhmMzdkOGM0NzFmMWZkNTRkOGMwNzY3NzY4NjE5NWFmNzg3IGxlZ2FjeS10cnVuaworMzAyNzIgMDY4NjgzNzZhYTI4ZDM5ZmM2ZTllYTI4OWQ5MTU1NmU5Nzk3YWNiNCBsZWdhY3ktdHJ1bmsKKzMwMjczIGEyZDQwMmU3Y2Q4YWRkMzJhNzhiZmFkMjViMjJhZTczZGY0ZThmZDggbGVnYWN5LXRydW5rCiszMDI3NCBjZjczNjYzY2ZmNTllYTQxNjNkOGYxMjk1MTMzY2U4ODA2MjFkY2UwIGxlZ2FjeS10cnVuaworMzAyNzUgNDdlN2M3MGU4NDFmZTMzMDI3YzRlYjlhOTZjNjlkZWRhZGNjNmZmNSBsZWdhY3ktdHJ1bmsKKzMwMjc2IDBmMDYxNTZjOGUwMzc2NmY5ZmY0ZmQxODk3NTg4N2VlY2YzZTFkM2IgbGVnYWN5LXRydW5rCiszMDI3NyA1MDdhYTk2YTEyOGZmZGFkOTQxN2JhNTRlOWVlZWJjNWUyNTRhZWNhIGxlZ2FjeS10cnVuaworMzAyNzggYjJiNDc5NzA1MmM2ZmRjZGNiZmVmYzYxYjk0MzNhOTRjYzMyMWI1YSBsZWdhY3ktdHJ1bmsKKzMwMjc5IDI5OTYyMWVjYTlhZDUzMTJlZTQyZjAzYWY3NTI5NTdmZmQwMTU2ZWQgbGVnYWN5LXRydW5rCiszMDI4MCAzMGE3NzM4OTQzODE4YjdhZDUwMjI2YzBiYjBkZThhNjg0NzEyNmM4IGxlZ2FjeS10cnVuaworMzAyODEgODJkOGI1YzZhYzRhN2ZjMmVlN2Q5ZWUwYzgyOTA5NjZhMGE0MmVkMyBsZWdhY3ktdHJ1bmsKKzMwMjgyIDI1ODVkNDU5NmQ5MDNiMGExMDgwZThhYjVhNDNmNjY2ZDQzODE0YzUgbGVnYWN5LXRydW5rCiszMDI4MyBmZmMxZTllNWZmOWE3MjQ3Y2VhNmI1NjdhNTJiZjg5YWFlYTU4Mzc1IGxlZ2FjeS10cnVuaworMzAyODQgYjIwNGI0YTcyYjRlZThiYWYwNDUwYzlhNWIzMmZiMzhjMTRjYjA5YSBsZWdhY3ktdHJ1bmsKKzMwMjg1IDIzMTlkMTNkNTRmNTc1MTU1MDU4ZjU3MTAzMjA3MzBjYzI3NTk4MDQgbGVnYWN5LXRydW5rCiszMDI4NiA3ZjgxZDE2ZTJjNWQ3YWEzODRjZWMxOWYxZTM3MjQ4ZDJhMTIwMGIyIGxlZ2FjeS10cnVuaworMzAyODcgODU4ZWUxMTcxNGE2MzI0MjdlMzNjODdiYzZmODFhMjkxNmE1ODBmOSBsZWdhY3ktdHJ1bmsKKzMwMjg4IDlkMGU2MmM5YTEyOGQ3YTE0NzE2MmIzYjU2N2E2ZmMxYTZlNmMyYjggbGVnYWN5LXRydW5rCiszMDI4OSBlZGYzMDRlNjBjYzYxZWQ5YjZlNDExZTkyOGRiODA5NWI1MTFlOTFjIGxlZ2FjeS10cnVuaworMzAyOTAgMTc4ODQ0OTg4ODEyZjJkZjA2MjhjMjNmMjA1YmJkYzY5ZDUzYzk1YiBsZWdhY3ktdHJ1bmsKKzMwMjkxIDIyNTExOTVhM2RkMWZjZTcxNGY1MWJmOGRiZTE3YzU4YWVkNzMwYmYgbGVnYWN5LXRydW5rCiszMDI5MiA3YzhhZjE5NzllNzg4NWI3Nzg5OTVlNzM4NDUwMjk0ZDc3ZDI2ZTY3IGxlZ2FjeS10cnVuaworMzAyOTMgOGVjY2ZhZTA0YmI0ZjZmZTY2MTk0MWM4Mjc4NGI1ODFjMjA3ODg2ZCBsZWdhY3ktdHJ1bmsKKzMwMjk0IDY5MzI3OTQ4MTdjMmQxZGYxMTZhOTRlZjYzMzdjMjRmM2Q1NjQxN2MgbGVnYWN5LXRydW5rCiszMDI5NSAwYzg1YTk0N2UyYzAwMGQ2NjdiOTM0YjMyYjJiY2YwZWEyNDY0ZWE2IHJlbGVhc2UyMi1tYWludAorMzAyOTYgZTA5NGEwM2E4MGZmNDVlZjZjZjM0YzFjMmM4YjU4Y2JmOGYwNzYwMyBsZWdhY3ktdHJ1bmsKKzMwMjk3IDU3YTAwZGI3MzFmY2YxZjJjY2QzNGQ4MjcyMTdiYTkxNGExNzE1ZTMgbGVnYWN5LXRydW5rCiszMDI5OCA2YmJiZTY3ZDFlYWY3MTczMTlkZjdlZWM2Yjk3OTZiYmVkODk3YWNjIGxlZ2FjeS10cnVuaworMzAyOTkgZDZmNDgzZmM5ZTAyZTNkZWQ3YmZlOGZkZDAzYTgyYzgwZDMwMjdjNiBsZWdhY3ktdHJ1bmsKKzMwMzAwIGZlYTkyZTdlYzY3YWUzNTA1NTkwOTcyNjA5ZDFkZmI2ODA1MTNlMjQgbGVnYWN5LXRydW5rCiszMDMwMSAyZTIxOTVmZTZjMjhhNzk0ZmZlOWM1NmQzNmVjMWM3NTE5MzMzMGVkIGxlZ2FjeS10cnVuaworMzAzMDIgZmIzNmQ5YjUwZGY1OGM4NzFmOTRhZWExYjliN2ZjYjJhOGQ5NjQyNyBsZWdhY3ktdHJ1bmsKKzMwMzAzIGUxNTM5NjFmOTYxZjJmNmJhNzE3NzdkMjIxMDI5NDU2YWUxNWQ5NWEgbGVnYWN5LXRydW5rCiszMDMwNCAzYzMyYTk0YjBiMTc2MjYyOWFiOWIxYmMwYWYyZGE2ZGQ4ODgxODQ4IGxlZ2FjeS10cnVuaworMzAzMDUgMTNkNTlkYmZiOGQ0NGFlNjRiYmFkZWJiNDAxMTY1YmI1ZDJhNDQ0ZSBsZWdhY3ktdHJ1bmsKKzMwMzA2IDdkN2EwMWJmY2FhZmI4Njk3NWRiZTY3ZDBkNTI4OTA4ZDI5Zjk0OTQgbGVnYWN5LXRydW5rCiszMDMwNyBmNjRjOTY5MjI3MDhhNTEwNGJmYjA2ZThkZTdhNGY2ZGU3MzliM2FhIGxlZ2FjeS10cnVuaworMzAzMDggZjRiMWJlZWQ2NDA1MmQwYjNjNTFiNzZkMjVhZDg1NGEzMzY5MWQ0ZCBsZWdhY3ktdHJ1bmsKKzMwMzA5IDllNDA5MTA3YWVlYWExZjNjMzFiODMwYWE3ZmJiYTQ3ODg3NjhkMjMgbGVnYWN5LXRydW5rCiszMDMxMCBiYjE1NDZiNDYwMWJkMGQyZmJlMTdkMTEwNzc4YmExYzcxNzc0NTRmIGxlZ2FjeS10cnVuaworMzAzMTEgNThkNzVhM2M4YWZlYTdlYTRkZjMxMzE3NzNmN2U0NjFmM2JiMDdjMSBsZWdhY3ktdHJ1bmsKKzMwMzEyIDNlMWJkMTM3ZDNjMmI4OGE1ODI0ZTFmNWRhNjNiNzEzYjIxYWRiMmQgbGVnYWN5LXRydW5rCiszMDMxMyA1Y2NkZThhMTUyNmE0MGQ5MmRjNTRjOGRiNzliNjdlYzNmMTA5OWM1IGxlZ2FjeS10cnVuaworMzAzMTQgNzljOWEwN2IyODk2NTkyODZmMTQzNTFmZGEzODI0MTg5ZGE5NmE4NCBsZWdhY3ktdHJ1bmsKKzMwMzE1IDE1YmI2NzZmMmU4YzBmMmMyZjhkODQ4ZTU3MTIzZTEzMWRiZDVhYTUgbGVnYWN5LXRydW5rCiszMDMxNiAwMDA3NWYxZWY4NjZiZjQ0YWM3ZDgyNDBmNGUxYjkwY2I5NTNjMzM2IGxlZ2FjeS10cnVuaworMzAzMTcgYzQ0ZDk5NGIzOWU1NDI2OTYyNDRjNTg2ZWFhYWQwNWFiYmExYWE3YyBsZWdhY3ktdHJ1bmsKKzMwMzE4IDc4Njc5OGU4NjQ2OWNiODA4YzMwMDhjYzVlNDYxOWRhMTM3MmVmOGEgbGVnYWN5LXRydW5rCiszMDMxOSAzN2VmMDE3NjQ2YzQ2MThhM2ZjMGJjYWZhMDAzMjhjZGViOTYxYmM0IGxlZ2FjeS10cnVuaworMzAzMjAgZDJiMDM2MjgxNDAzMTNiODhhMWQwMjM0NmY2NjkxMzM0MjQwNTJlOSBsZWdhY3ktdHJ1bmsKKzMwMzIxIGE5YjUyMmU1NDVjZjZmMDgzZTA5Y2ZiNzlhOWM4NWRlZDYxMmViYzAgbGVnYWN5LXRydW5rCiszMDMyMiA1NDE5ZWY0YTRkNzBiMGM1ZmRhMjlhODQ4YWUxYWQ3MjFkYTk4NzNiIGxlZ2FjeS10cnVuaworMzAzMjMgNjczZGNiOWI1MWNlMmJkZjEyZGRhMzUxMmVkYzIyYmY0ZmNiOWUwMyBsZWdhY3ktdHJ1bmsKKzMwMzI0IGZjNTE2OWFhNDFjZWY4NWI5Njk3YzM5NDJmZGY5NTUzMjViNjU1MDEgbGVnYWN5LXRydW5rCiszMDMyNSBlYTc1OTE5Yzc2OWRiNjVkYjJmNDliNTk4ZTA0MzE3ZjVlMjZhODgzIGxlZ2FjeS10cnVuaworMzAzMjYgODY1YzU5YjViZmQ3MTI4MjhmMzRjYWQ1YTM3N2Q4Y2UwMDkzZjU4NSBsZWdhY3ktdHJ1bmsKKzMwMzI3IGJjYTU0MDliNzZlY2ZiOTM0MmQyNGJhYTEyMzIxZDk1Yzg2OWViMzkgbGVnYWN5LXRydW5rCiszMDMyOCA4MDMzMDI1NzMxNTI3YmU0YWIzNDA5ODhlOGFmYjJkNjlhNDBkNjYwIGxlZ2FjeS10cnVuaworMzAzMjkgNWY3NGUwNDAwMTJkNjllZjgzNWUyYzY2ZWY1YTdhNzNhNjZjZmQ1MCBsZWdhY3ktdHJ1bmsKKzMwMzMwIDNlZTU0ZmJmZTg0NmQ4OWVkZjBlNWFkZDNhOWU0YjAxOTI1OWVlZjcgbGVnYWN5LXRydW5rCiszMDMzMSAyY2U4Y2YyODRiMTUwYzA4MTgxNDU0MjA4ZjQ1ZjUyM2NiYmFhNDYwIGxlZ2FjeS10cnVuaworMzAzMzIgZGFhNDU4YjI4Mzg1MWJmZDNjOTRmZWUxOWE5NDhiMWVhNzQ5NGFjMyBsZWdhY3ktdHJ1bmsKKzMwMzMzIDY2MDk5NmEyOGVlOGM0ZTZiMTY2OTVmMWUxNzlhOGRjMzY1N2I0YjggbGVnYWN5LXRydW5rCiszMDMzNCA3MDQ4NDJmMDViMDkxZTU4ZDNlOTNmNGJlMzU2OWZiMDkxZjE5ZWNlIGxlZ2FjeS10cnVuaworMzAzMzUgNmNmNjM3NzY3Y2UyNGQyYzNhODExY2NkNmIyMGYwNjE4MjgwYTNmZSBsZWdhY3ktdHJ1bmsKKzMwMzM2IGI0Y2E1YjliYTkzMzU1MjhhYTY4YmNjYWFjMDk4MjlkNDExMTZjYTQgbGVnYWN5LXRydW5rCiszMDMzNyAyNzUyZTlhYWU5N2JlZDYwMWRhZThmY2ZjZWI1YjUxNjE1MjUyMWQ0IGxlZ2FjeS10cnVuaworMzAzMzggM2NmNWE3ODUyYTJmM2ZkNGYwYjBhNmRlZTI2NmVmOTkwNjliYjk4YiBsZWdhY3ktdHJ1bmsKKzMwMzM5IDNhMTMwMDQ3MjkwMTYzYTA1OTY2ZDNhZGFjMjQwMTQxNzc5M2ZhYjkgbGVnYWN5LXRydW5rCiszMDM0MCAwMzY5MTk5YTI2NWFmODQxZmZhMTYxNGFiMzE1OTE5N2VmNWQ0YmM4IGxlZ2FjeS10cnVuaworMzAzNDEgMDI5ZWRhOTM3YmI0NzQzZjBlMTcxNjAzZGE2MzBmYTQ4ZTdmMjU4NiBsZWdhY3ktdHJ1bmsKKzMwMzQyIDgzZjhiZDZhZTgxMTcyMjBkMmIxMmZkMDc4NzE2MzljYjVkZGZiMWEgbGVnYWN5LXRydW5rCiszMDM0MyBhYWNhOGEzYjIzY2QwNWQyMjI4MzA5OGYwMTk3NmY2Y2ZmMzFlYzUwIGxlZ2FjeS10cnVuaworMzAzNDQgYTZmMGJjNmU4YjM4ZGU1Zjc3MDYzNGM0MDQ5YmU1NjFiYWZlMmU2NiBsZWdhY3ktdHJ1bmsKKzMwMzQ1IGYzMDVhNTc4YjM5NDBlYzgzY2I4NmY3N2ViZWJmNzlmOTdiOGVlYTQgbGVnYWN5LXRydW5rCiszMDM0NiA0OGFmYjhlMTQyMGJiODZmOWM5YWVmZDhmYWM0YWVjYmE4YmJhOTRiIGxlZ2FjeS10cnVuaworMzAzNDcgNDIyNzlhMDIxMjVlMjg0NjFlYTQ3NGQ2MDY0ZmMwMDQ0MzBhYWNkOCBsZWdhY3ktdHJ1bmsKKzMwMzQ4IDIzYTk4MGViOGFmYmIzNWEyOTMzZTJlOGJlZTM2ZGJhNjkyNTFkNDcgbGVnYWN5LXRydW5rCiszMDM0OSAxZWFiMjZmNzE3MTk5ZDdjYTI4MzY4ZDdhYzRmYTI0NDM4YzY2YzBlIGxlZ2FjeS10cnVuaworMzAzNTAgZjQ4M2VmY2EyMjRjNmNmZGIzNTdlMGY1N2Q0OGNlNzU2MzNmYTMyYyBsZWdhY3ktdHJ1bmsKKzMwMzUxIDNkMTA2MGRiODA2MjhiYzVlOTQ5ZmQzNzNlMjg2Y2U5ZTBjMzc0ZTIgbGVnYWN5LXRydW5rCiszMDM1MiAyNmRmNjAxM2IzMDNkNGFiZGU0ZGYzMWQ1ZmEwZWU2NGQ1MDZhNzkwIGxlZ2FjeS10cnVuaworMzAzNTMgZDE3N2RkMGNhOGY3MGU0MWJlMDFjN2ZmYTBlMzM0NWQ5ZTg1MDA5NCBsZWdhY3ktdHJ1bmsKKzMwMzU0IDM1NDY4YWQ1MDIyYTc3NDU2OTFkNTA5NTIzZWM0MTk5ZTZlMzgwMWYgbGVnYWN5LXRydW5rCiszMDM1NSAxMjBhZmJhMmRiZjY0MDdjZDc3YjU2YzE1ZDI5Njg1ZTgxMTczOTBlIGxlZ2FjeS10cnVuaworMzAzNTYgYzI0OTYwN2VmNTM1ZjExMjg0ZjdkMzA1NzdiZmUxOGE0NTIwOWIyOCBsZWdhY3ktdHJ1bmsKKzMwMzU3IDMxYjFiMDQ2MDMwM2Q4NWQ3NDcwZGE4MDE5ZjI0N2E3YTY1ZGVjYmIgbGVnYWN5LXRydW5rCiszMDM1OCA5MDkzNGU0YzkxYmE0YmNkMjg2NmUyZWZmN2IzYTY0ZThlYzJkN2ZmIGxlZ2FjeS10cnVuaworMzAzNTkgNmVjMzg2YjQ1ZTFmYWVlMTY5Y2JiZWQ3YTMzMjQ2ZDgyYjYxZThiNyBsZWdhY3ktdHJ1bmsKKzMwMzYwIGQyMTk5ZmMxNGQwNjI0YWQ4MGQ4NjEyNTMzZmEzNGUxYWM3YzU4MWIgbGVnYWN5LXRydW5rCiszMDM2MSAyMTMzY2YzNTViZmM4YTJjOTI1MDk3N2FiMDIzYWMwZTEwZTUyNWE1IGxlZ2FjeS10cnVuaworMzAzNjIgZjBmOWFjY2E0MTY0YWJkNzhiNWUxZDYwNGE2ZDhlMjljM2M2NjMxNyBsZWdhY3ktdHJ1bmsKKzMwMzYzIDU0YWFjYjg3YmVkYTMwMzdkZmFiZmUzYmYzZTY3ZjkwMjgwMDZmZWQgbGVnYWN5LXRydW5rCiszMDM2NCBiNjI1ZjFiZjcyZjkwZDA0YzQ5NTA5M2I0MWQzOWM0ZTM2OGUxMTVlIGxlZ2FjeS10cnVuaworMzAzNjUgNDVmYzBlNGI1MDg0NTIyNzViNDZiYWQ5MmIyZTVlNzFjMjQ1YTQ4ZSBsZWdhY3ktdHJ1bmsKKzMwMzY2IGI5YzE1OTdkODEwMmU0NWNhNDVkOGIzZTZlYjZmMjI2YmZmNDRiYTkgbGVnYWN5LXRydW5rCiszMDM2NyAxMjc1M2U3YjE1ZjdlODZiZTE0MzU2ZTU0ZDEwOWNmMzY1Nzk3MWQ2IGxlZ2FjeS10cnVuaworMzAzNjggODA1M2JjMGI4YmI1ODFiNGI4NjcwY2E1ZmRjYzZiNjY0ODdmMWI1MSBsZWdhY3ktdHJ1bmsKKzMwMzY5IGJjMjBlOGI0NmRlMGQwYWU3YWVmMjY4ZTQ0ODhkNzg2ZTI2MmZjMGIgbGVnYWN5LXRydW5rCiszMDM3MCA5NTUxMGYwYTA2MjQ1ODRiNDFiYjdiNzVmYWY4ODY1Yzg5ZmNmNTFjIGxlZ2FjeS10cnVuaworMzAzNzEgMmE5NWI3ZDVmYmRlMGQ0Y2U3MDc0MzEzMDJiNzY2MzFiMGQwMDBiMSBsZWdhY3ktdHJ1bmsKKzMwMzcyIDE0MDY0NGYyMmY2NDhjZGYwYjNkM2NjNGNiNWQwZTk4ZDllNjA5ZmMgbGVnYWN5LXRydW5rCiszMDM3MyAwYTBjNzU5ZWQxNjc5OWFhMmUwNmNlOWYzYzk4YmY4NGE0MWIyZDRiIGxlZ2FjeS10cnVuaworMzAzNzQgNGNiZGJiMGJkZDVkNGFlYzEwMjVhNmE2ODg2NmM4NDU5YWJlYTMwMiBsZWdhY3ktdHJ1bmsKKzMwMzc1IDNiYzJhZjQxYzAxNjU3OWE4ZTFjMmFmNGMzYTdhNDFjNzIzNTkzNGIgbGVnYWN5LXRydW5rCiszMDM3NiAwOTZkMTJkYjI2MzY1MjNjZTViNzU1ZmRjM2NjMzhjNWI3MDhmYzc3IGxlZ2FjeS10cnVuaworMzAzNzcgYTQ0NzRlMTRmYWM5N2I0YTYyMjlhMDVmNzc2MjMwMzlhZmUxMjFlOCBsZWdhY3ktdHJ1bmsKKzMwMzc4IDE4ZDRmNzFmNWVkNmE5MzZhNGIwNzNiODQ2ZDBkYzkwNjkyZGNiNGIgbGVnYWN5LXRydW5rCiszMDM3OSBkNWFkMjlhNDczZTFkOTkwYTMwMTE0MTBkZGJlZTNjNjJiM2VmMGUxIGxlZ2FjeS10cnVuaworMzAzODAgMmM1MmFiZWU3ZDEwNjJjNTAwZWMyOGNhZGE3MTUwNDFhMmY0ZDUyYyBsZWdhY3ktdHJ1bmsKKzMwMzgxIDk3YzVhYTgyYjNlOWMxNTI0YmJhZmRkNzQ5Y2E2NWE3MmEzMjI2MjAgbGVnYWN5LXRydW5rCiszMDM4MiA0MGRiNzgxNTkxNzc2MjBkZTEzYWU5YmUwMWRiZDcxNjBlNzNjMThhIGxlZ2FjeS10cnVuaworMzAzODMgN2VhNzYzNzM0MWQwYTE0N2E0YzM0NmViNThiNWIzZDI2MzNhMWEyYiBsZWdhY3ktdHJ1bmsKKzMwMzg0IDQ3ZTZhYjhkNTc1MWQ0YTA3ZjhjNjY2OTg1NmQ4ODlmM2MzMTE5MzggbGVnYWN5LXRydW5rCiszMDM4NSBjY2JhM2I2NmQ2NzY2NjFmNmUxNjNlMzEwOTkxOGRlZDA0YTM5NzNhIGxlZ2FjeS10cnVuaworMzAzODYgYmNhY2EzNmE1ODNjYzQ1OTNiNWRlZDkxYjc3ZjEwYjkzOTRmOTA5ZSBsZWdhY3ktdHJ1bmsKKzMwMzg3IDA3NDkxOTcxNTM1NWFjODZlMzczYzgwYTUzM2Q3ZWU3ZjViNzFhOTcgbGVnYWN5LXRydW5rCiszMDM4OCA2ODhmYTZjZGFiOTQzYzU4MDA0MDUyNjk3OGRlODM2M2E2NWRjMmIyIGxlZ2FjeS10cnVuaworMzAzODkgODk5OWQ3MmMyZTZjZGViMWE2MDBmZDE1ZDE5N2NhYWRjNDdiYWEyMSBsZWdhY3ktdHJ1bmsKKzMwMzkwIDAwMzJkYmVlYzM5MWMxNTcwMjJmOGQ0ZTQ3ZjdkZGYzZDdlNGI1MWYgbGVnYWN5LXRydW5rCiszMDM5MSA3Y2RhMzYwMzU2N2Y5NjdhYWIyZGE3MWUzYWM2YjU5OWM0NGUwMjBkIGxlZ2FjeS10cnVuaworMzAzOTIgYzI1ZDdkMmMxNzEwNDI2Yzc2NjE2OTMzMzQxZjFhMzAxOTM2OTUwMyBsZWdhY3ktdHJ1bmsKKzMwMzkzIGZiY2YzYzRiNDI3MmUyMTVmYzJkNzVmNWQzMTU3YmQyYTgzMjdlMTUgbGVnYWN5LXRydW5rCiszMDM5NCBmNTE2MWNhNGRkNjgwZDRmYmUzM2ExOWFhYzc5YjYzNDBhNjU0MjdlIGxlZ2FjeS10cnVuaworMzAzOTUgYTQzYTJiMThiNWM0OGJmZTZjZDdhZTNhMjExYTBkMmExMjNkYzhhMCBsZWdhY3ktdHJ1bmsKKzMwMzk2IDA1MDE2YmI5MTc2NmZlOWQxYjE5YjE2YjcxNzUyN2MyODY4YmMzZmYgbGVnYWN5LXRydW5rCiszMDM5NyBiOTM4NDUyMjZkYjY4ZDgzMmMyYWExODQ2ZDVhMzE1YjljNWNkOTEwIGxlZ2FjeS10cnVuaworMzAzOTggNDJmMTlhNmM2NTcwMWNkZjM2NTAwZTQ3MGU5YjBlZTBkYjE0YTI0YSBsZWdhY3ktdHJ1bmsKKzMwMzk5IGZhZjk2NWQ3MzgyNGJmMjQ0ZWI2NGYxZmVhMDI4ZWUyNjlhMGJkN2MgbGVnYWN5LXRydW5rCiszMDQwMCA5ZDA1ODBhY2I0NWZmNDVlYTc1NzFkNDMzMGM5ZmE2Y2JlNjE1N2UwIGxlZ2FjeS10cnVuaworMzA0MDEgZGJmYzNlZjdkMDAzNTBlMDllOTU1M2U5NTY0OTczNjRiNWIzZGU5MCBsZWdhY3ktdHJ1bmsKKzMwNDAyIDMxYWRlYTQ5YTU1OGY3MjhjZTkzMzk5YmVmZWE4ZjViY2ViMjE2MWUgbGVnYWN5LXRydW5rCiszMDQwMyA5NjQ2ODg3MGQyMDZkOTRmMWE4YTRkOWNkMDQzMDE4MTk0YTdkMjgwIGxlZ2FjeS10cnVuaworMzA0MDQgM2RiMTY1ZjAyMTA3NDM2M2IxNjA4YWFhYjE1YzM1NzA0ZWY2NmE2NiBsZWdhY3ktdHJ1bmsKKzMwNDA1IDMzZGNmNGZkMGZmOTAzZmJkZmUzMDc2Y2U4NGI4MmJkOGI2OTU0ZDggbGVnYWN5LXRydW5rCiszMDQwNiAyNGNiNjIyMjUwNDBjZWJiMjgyYWJiMjRhYzFjM2FkYzI5YjhlMDBkIGxlZ2FjeS10cnVuaworMzA0MDcgZmZhNGFiMzcwMzZmMDE1ZmU5OTY0MGQyMTRhOWIwOGM4ZjE0YTEwZSBsZWdhY3ktdHJ1bmsKKzMwNDA4IDMyZTRjNzc1MzQxNjJjNWY3YWZjZGE0ZDQxZDAxYjhiMDI3NzBjZTIgbGVnYWN5LXRydW5rCiszMDQwOSA2YzUzNWRjZWRhZDMwM2MxM2U0MzQ3MmI5ZDBmNzhkMjc4MzE5NzNkIGxlZ2FjeS10cnVuaworMzA0MTAgNzk0NjZmMDRmMWM1NGI1MmI3MmVkMjFjOWRhNTI3MDkxNTU1ZjY1YiBsZWdhY3ktdHJ1bmsKKzMwNDExIGI5MWQ5NWU5YjI0OWE3OTMzNWE2YTY2MDljMTFlNmFhZmZhZGFmOGIgbGVnYWN5LXRydW5rCiszMDQxMiBhMDg1Y2MwNDc2ODEwOTU5ZGFjZDBjMDc3Nzg4ZmUwZjU2ZmQxN2MxIGxlZ2FjeS10cnVuaworMzA0MTMgODQ2OGUzZmMzYTJiYzcxY2MyYjcwODg2ZDk2MTRjMWNjMDQzNjMxOCBsZWdhY3ktdHJ1bmsKKzMwNDE0IDNkNWFiZDNkOWU0YmE4MDUxOTQzZjg1NWM0NWJmMGI1MmIxMjQ1YjUgbGVnYWN5LXRydW5rCiszMDQxNSBiYzMwNTg0OTUyMmRmNzg3Mjk4MmU3MjBiODBkMzY1M2I4ZWY1YmI5IGxlZ2FjeS10cnVuaworMzA0MTYgYTgyZDkyZjc4NDcyYzcwN2U2ZTdlMTFjNTBmZWVkNDNkNWFhZGE5NyBsZWdhY3ktdHJ1bmsKKzMwNDE3IGJkMGM0MDcxOTU4MzZiZDBmMTk5ZmJkNmJjZTI3Yzk2ZDM4OWMwZTggbGVnYWN5LXRydW5rCiszMDQxOCA2ZTU0MWE3MmFmMWFlNjU0Mzc3NDJkMjg0NTZlN2I5MjQ1MzMwN2I2IGxlZ2FjeS10cnVuaworMzA0MTkgNWNhNzA3MjM2MWJkOTVhMDBkNGFlZTEwOThhZDIzNmIxOTI1NDY5YyBsZWdhY3ktdHJ1bmsKKzMwNDIwIDcyMzcyMWVhNDAyNTk2YzQzNWVlNjZmYzc3NTZmMjE1NTYyNzYxN2UgbGVnYWN5LXRydW5rCiszMDQyMSA1NTE0MTE0NGRhYjVlNTA5MTJiMTA3NDQ0MGM1YmU3YTQ1NGNlMWU1IGxlZ2FjeS10cnVuaworMzA0MjIgYmVlYTQyMTUyNzg3NDNkYTExZWFkYjUzOWJjYmVlYmE0OGE3MDM4MSBsZWdhY3ktdHJ1bmsKKzMwNDIzIDUyNjc0MmE3NGQwNjViM2IzZmY0MzI2ZDZkMzNjNzViOTE0MGYwNzcgbGVnYWN5LXRydW5rCiszMDQyNCBhY2RiMzliNzE0YjFlZWU0OGQ0ZGJlYzIzMzgxYjgzNGUwYTAyMzU1IGxlZ2FjeS10cnVuaworMzA0MjUgMDJjNmZkNWNmNzViY2Y1NmZiNGJlYzc3NmJmZTAxODkxMTBjZTA4NyBsZWdhY3ktdHJ1bmsKKzMwNDI2IGJlNzMyZTIxOWVkMTAyNjdkOTAyNzgzYmVlNzMxNGRiMTRhMjUyZGQgbGVnYWN5LXRydW5rCiszMDQyNyBhNThjZWNmNTliMDYzZjU1NTFjOGI0YTEzYzQ1NGMwN2IwNDcwYTJlIGxlZ2FjeS10cnVuaworMzA0MjggN2I1YTdjZmMxN2E5ZTUwMTdmNzUwM2QwMzJhZTVhYmM4NWUwNzRkYyBsZWdhY3ktdHJ1bmsKKzMwNDI5IDk0YmM4MTJhM2M1Mjg1MTU4ZTYwZmUxMjQ1ZTQxNzlkMjFlYjhmNzUgbGVnYWN5LXRydW5rCiszMDQzMCAzNWZjYWJlZmM5ZDJmZDM1Njk1NzI5ZWE5YWQ2YjRjZjJiNGEyMzVlIGxlZ2FjeS10cnVuaworMzA0MzEgZjE1NTk0NjBiOTUyNjI2OTMyYzQ2NTFmNzExYzg1NGE3MWJiMjdhZCBsZWdhY3ktdHJ1bmsKKzMwNDMyIDE2MzU2M2NjYjdkNjBhZGY4NGU4YjUwNjA0YTliNjU2M2NlZjEwMTkgbGVnYWN5LXRydW5rCiszMDQzMyAyNDBhMjQwMWM0MDRkZTZhZjk5ODNjMjRjZDAwOTYzNDNjNDVkYzA4IGxlZ2FjeS10cnVuaworMzA0MzQgMzg5MjdmZDU2N2I0ZTRmMmY5Mjg4ZjhmZGM3MzRkMzE3OTkzNWI0YiBsZWdhY3ktdHJ1bmsKKzMwNDM1IGI4MjM2NmJjNTQzODQyOGE5ZDk1ZDZjMjRjOGU3NmRhNWU2OWJjZGMgbGVnYWN5LXRydW5rCiszMDQzNiAzYzA0MWIxOWYxZDM2NzdhM2MzOTFhYmJmNTViOGM5NDIzNDVlMzdjIGxlZ2FjeS10cnVuaworMzA0MzcgYjhjNzJlODZhMTJkNDA3MDBiMWJlMDc0NjczMjk0NWViOWZiZTEwMyBsZWdhY3ktdHJ1bmsKKzMwNDM4IDFjNThmZTVjNzY5ZjNjMDZlNzFiZTNiMDAwMGM4Nzg5MDljYTA1MmYgbGVnYWN5LXRydW5rCiszMDQzOSBhNWM4Nzk3MjZiM2EzMjMzNzUxNmJmNWIxMGIxZDFiZDI5NDJhZjVlIGxlZ2FjeS10cnVuaworMzA0NDAgYjljNDYyZDIzZjNjNjUyMTRkNDdkMTZhNWNiNTRjZjcyYjY0NDJjZiBsZWdhY3ktdHJ1bmsKKzMwNDQxIGE1NzNmZWRlODhlMmIxOGU0ZTdkMWYwNzhiZmZhZjk5YmZmMDkwZDcgbGVnYWN5LXRydW5rCiszMDQ0MiA1ZGY3YTI4NGVhZjRlZDc3MWYxNzc0YzJiM2I0NjVjYTdkZDVmOTk3IGxlZ2FjeS10cnVuaworMzA0NDMgYjc5MGRhMDY3MWY3YTcxZTkwMjBlNDEyODM0MWI1MGE3YjllMzY0NCBsZWdhY3ktdHJ1bmsKKzMwNDQ0IDRiNGNlMjQ5MGZlMmVkN2VlYzUxOWI2YTJjY2ZkODY0OTk5MjgyYTQgbGVnYWN5LXRydW5rCiszMDQ0NSAxMDM4OTljZTg4YjJmY2EzZTdmMWU3OTY0YmFhMTllZDFiNjkzNzMwIGxlZ2FjeS10cnVuaworMzA0NDYgYmY5ZTA0MjQyMzdmNTE1NjIyZDgwNTBlMWFjYTBmYmI2NDFiOWQyZCBsZWdhY3ktdHJ1bmsKKzMwNDQ3IDc3NmYyNzBhNmVhOWM3MGJmZTY3ZTQ0ZTQxMzU0YTEzOGViMzkyYTUgbGVnYWN5LXRydW5rCiszMDQ0OCA0NDQ4ZmY4YjMyMzkwYmZkOTI1ZjY5MzUzZDVkZGExNzE1YmUxMDI3IGxlZ2FjeS10cnVuaworMzA0NDkgNGMwM2E0ZmFkNzJlZjI2MTcwN2I4ODJlY2U0MzEwZTJlMGU4NDFlNyBsZWdhY3ktdHJ1bmsKKzMwNDUwIDg0ODc5ZTE4Mzc3Mzg0OTQ5ZmEyOWJjYTYyMWVhYjU1MGNjMzk5ZjMgbGVnYWN5LXRydW5rCiszMDQ1MSA5MDk5ODA3OWExYTIzODkzMjU0ZGJiZjU5MmQyYTQ4ZTZlYmQ3OGVmIGxlZ2FjeS10cnVuaworMzA0NTIgNjdkZjI4OTNhNTBlZTgxNzdjMTAyNjk3YzQ5NDA5YjRiYWRmODY5YyBsZWdhY3ktdHJ1bmsKKzMwNDUzIDcwMWIxMDI5YWY0MDc5MDU1MGVlN2Q0OTkxYjFmYjFjMmIyNzhjOGUgbGVnYWN5LXRydW5rCiszMDQ1NCA3MGYwZjI1YjEzNGU0MjhjMWQxN2ZiODJiNTM3N2UxMjM3Y2ExM2RlIGxlZ2FjeS10cnVuaworMzA0NTUgNzc0Zjc1NGZkMWZmMTUwMzhmYmU5MTA3YWNhZGU5MTU1MmYyMjdmMCBsZWdhY3ktdHJ1bmsKKzMwNDU2IDM1ZTViMDIxYjc3NDQ0NzIwM2VlNzM0MTZiOWIxOWRjMmYwOWM4NWIgbGVnYWN5LXRydW5rCiszMDQ1NyA3ODRlN2ZkZjhjNTI0MzQ2ZmUwM2Y1M2RiYWIwNWYxZDE0MzZmNTgzIGxlZ2FjeS10cnVuaworMzA0NTggNjk4OTYwZDU2MWY4ZGE1ODk4ZTBmZGFhMmZjMDNhZWVlMTcyMTgyMyBsZWdhY3ktdHJ1bmsKKzMwNDU5IDViMTU3NTk2OGY3ZmFmODBlNzAyODM0MWIxY2I5MjZiZjI0ZGM2ODcgbGVnYWN5LXRydW5rCiszMDQ2MCA1Njc3ZTk4MGUwNDdlNDI0OGZmZmEwMDUwYjc3MmY3MWQwYTkzYjQ0IGxlZ2FjeS10cnVuaworMzA0NjIgMmM2NzE2OWY2ZTEzZmJkZDE3YjQ3NzZkYzc5YmM1MmFlZTI1YWU0OSBsZWdhY3ktdHJ1bmsKKzMwNDYzIGUwMmRhZjYzMDdmYzhhOGViNWUwMDI2ZThjNzBkZWU5ZWMwNzM4NmMgbGVnYWN5LXRydW5rCiszMDQ2NCA1NDlkMDdkMGFlZDdlY2ExOTAyN2M5NjVjYjcwOTExYWQzYWNmMWQ1IGxlZ2FjeS10cnVuaworMzA0NjUgZjcyMmE4MzAxNDBmYjQxNWU1ZTI4NzNkNGUxMTE0ZjRkMWVlNzhlNCByMjNhMS1icmFuY2gKKzMwNDY3IDdlMjM1MWJjNmU3YTY5YmY2OGRmNzEyNTM1MTg2YmM1YjA2YWMyNzEgbGVnYWN5LXRydW5rCiszMDQ2OCAxYzY1ZmE1ZTUyYzNkODFhYjAxYmE4ZWYzYTBiZGVkNGFmM2Y2YmRlIHIyM2ExLWJyYW5jaAorMzA0NjkgMTUwMTdhNzliYWNkZGFkMjdiYmFhZDRmMzkyYmI0YjA5MTE3NzMxOCByMjNhMS1icmFuY2gKKzMwNDcwIGQ2ZGNmZjRiMzU3NDIzNDgwZTQ3YTU1NWVhMDBiZjMyZjJjZThmMzIgcjIzYTEtYnJhbmNoCiszMDQ3MSAyYjgwMTE2ODE1YjUzNWRkOTgwMmQ2YzM1OTFhNmQ5Y2JkNjRhYjk3IHIyM2ExLWJyYW5jaAorMzA0NzIgOTJlNTcyZTNjYTlmOGM4MzM5ZjdlOTZhOTU2YmE5Yjc4MmI4ODI2ZCBsZWdhY3ktdHJ1bmsKKzMwNDczIDhhOGRmZjI1MGJlNDM2MmZhMWE2N2QzMWFkNDg4NzBiNjAzZjI2ZmMgbGVnYWN5LXRydW5rCiszMDQ3NCBiY2JkOTRjNjEwZTgyM2YyOTVkMWI3NDM5OWViYjY4Yjg3OGZhYzUyIGxlZ2FjeS10cnVuaworMzA0NzUgN2NiNzNhNzMyZjc3MWVhYTIzNmYyZGY0MmI5OGY4NTI0MmViOTBhYiByMjNhMS1icmFuY2gKKzMwNDc1IDAxODMwNzc2NWQzNGRjZjYyZDZkMmFkNjZiZDdmN2JkZTUzMWVmYTIgcjIzYTEtYnJhbmNoCiszMDQ3NyBjZmExM2NlOTgzYmEyYjc4OTY2YzBlYzc4NzExY2RmN2M4MjIzNjNmIGxlZ2FjeS10cnVuaworMzA0NzggNjk5MDUwNTljN2JkMTg4NTliM2Y4YTI2M2NlODdlZWViMWVhMjdlMyBsZWdhY3ktdHJ1bmsKKzMwNDc5IDc0MDc5YmU2ZjNmMTE0ZTE5MjI4MzM1MmY5MDI3MWE3NmQxMDAzZjUgbGVnYWN5LXRydW5rCiszMDQ4MCBjZjgxZjgyNWRhYWM5MjZjZDU0N2EyNDJhMGU1NWNiZWM0MTUxOWJjIGxlZ2FjeS10cnVuaworMzA0ODIgNGUwOTMyYTExMmY0MmI1NTliNzMxYzllZDhmODdkZDliNjMxNmNlZCBsZWdhY3ktdHJ1bmsKKzMwNDgzIDk2ZTFhYjhkZjg4Mzg0YWRhNzgzMDIyYjg3NWNiOTc0MmZkNWFiYTQgbGVnYWN5LXRydW5rCiszMDQ4NCAyYTg3ZDk0ODkxMTJmYTJlMzRhYTNlODc1YjZmMjM2MGVjZmRjMmJlIGxlZ2FjeS10cnVuaworMzA0ODUgMDBjZDFkNzE1OWMyYjQ1MTMxMTIxMWVjMGVmOWM5Zjk1ZjQ0MmFiYyBsZWdhY3ktdHJ1bmsKKzMwNDg2IDZjYTFjMGQzZWYxOTMxMjI0NDE0MjUwYTEyMTczZWNkM2U2OTUxMTYgbGVnYWN5LXRydW5rCiszMDQ4NyA4ZWQ0NzJlNWJjZDQ0ZGQzMjFiNDM1ZjliZDE5OTA1NWEwNzljZWQxIGxlZ2FjeS10cnVuaworMzA0ODggODhkZjI2N2RiODU5ZTNmNGI4OWZkNjg2NGQ5MWJlNDQzMDE0MTk0NyBsZWdhY3ktdHJ1bmsKKzMwNDg5IGJkYTQxODU2NzBjY2I3NDhlODM5OWFmNjE5MGM3NzlmYWYxOWI3ZWUgbGVnYWN5LXRydW5rCiszMDQ5MCAyOTNlZGEzZTY5ZjVmNTgyMTRhYWIyOTljYTAzODk2ZGIxNGVkYzAyIGxlZ2FjeS10cnVuaworMzA0OTEgZjU3MDgzYTM0MTk2NjRhYjQ4ZTA5NGMwYjRlN2EzZTE4N2UwZDE1NCBsZWdhY3ktdHJ1bmsKKzMwNDkyIDFjNDA2MGQ5ZTY4NzRjMzVmYzJiN2ZjM2QwYWFlMGI2YjhmNTE0YTAgbGVnYWN5LXRydW5rCiszMDQ5MyBlYTY3Y2VhNjc2ZTk5MzQ1YjBkZmVhMjQ1YmM5NDFhYWQ5ZWU0OGFiIGxlZ2FjeS10cnVuaworMzA0OTQgZDg1ZWFmNDc4NTU2ZWZjNjEzZjZmNGY4OTA5YjBiNjI3OTNhZDA1ZSBsZWdhY3ktdHJ1bmsKKzMwNDk1IDgxMjA5YzBmMDhhMDU5MjZmN2JkMGU5ZjkwNTVhY2NlYWRiMDJkMDUgbGVnYWN5LXRydW5rCiszMDQ5NiA0NTc5ZTgzYzY2M2I3MDJlYTIwYmFiMWE2MjMyYTExMWI1YjRhYTc0IGxlZ2FjeS10cnVuaworMzA0OTcgNzJjM2Y3MzQ3ZTg4Yzg5NDQwNmRlZGRhNzg3YTE2ZmFjYzVhOWM2MSBsZWdhY3ktdHJ1bmsKKzMwNDk4IDI2ODdhOTA4NTQxMWU3ODU3ZjY1NjJlMDIyNzA4NjE1MzYwYmQ3YWMgbGVnYWN5LXRydW5rCiszMDQ5OSA1YzRmYTA0YzlmNjI4ZDg5OTJjMjUwNjZhYmI0ZmM5YmVjNDZiZTY2IGxlZ2FjeS10cnVuaworMzA1MDAgNmE1Y2ZmYzYyMzg3ZGRhYTA5MGJhYzUzM2VjNTBhODdjOWY3YjdmZCBsZWdhY3ktdHJ1bmsKKzMwNTAxIGMwYjNiYjQ4NWJjZjgwMDE2Y2U4NjBhZGVmNWRhYWRlZGU0ZjkwYmEgcmVsZWFzZTIyLW1haW50CiszMDUwMiA5N2RjNTMwZDkwZWI3ODUyNjJkMTU5Zjk1OTNkY2FmOTNlNzgwOTY5IGxlZ2FjeS10cnVuaworMzA1MDMgNDc5MzEwMTQ5YjJlZGUxZTcwOTcyMTk3YTRlYTlmNTgyMmVlYjJmYyBsZWdhY3ktdHJ1bmsKKzMwNTA0IGZkOWYyMGNlM2JiYTFmYzljMzhiYjMzYzgzMDcwNGY0YjUyMTIzZTQgbGVnYWN5LXRydW5rCiszMDUwNSA3NDFhYTlkNmQ4YmVkNzQwNWZjMzMxZjM3YmIyMzAwZWQyNjNiZjI3IGxlZ2FjeS10cnVuaworMzA1MDYgMGIzZmNjZmJlMmEyODc2MWVlNGM1Nzg2MWIxMjUwMjBjNmFiNDBlNCBsZWdhY3ktdHJ1bmsKKzMwNTA3IDllZTRmZDA1ZDNjYmNkNWFkN2RhYjM4MzNiYmNmOTBiMmRjMGY4YzMgbGVnYWN5LXRydW5rCiszMDUwOCBiZmEzMjYxM2RlYzhlY2EwZTgxNzYyNmY5ODRkZmRmZjVjNThiZDU4IGxlZ2FjeS10cnVuaworMzA1MDkgNzI3YmNiODExYzUwZjk1ZmQ5NDViMmYwZWY0Mzg5Mjg5NTZhMmE1MSBsZWdhY3ktdHJ1bmsKKzMwNTEwIGUyYzg4YzQ1MWMxOWE1NDQ0Yzk1YmM3MDlmMzJiZjUwYjU5MzM0MTggbGVnYWN5LXRydW5rCiszMDUxMSBmNDQxYzRlNWIyMzQ2NTY1NDVjODhmZTU0NjMxOWI3ZDliYjRhNzM2IGxlZ2FjeS10cnVuaworMzA1MTIgMTA5OGNjYzg0ZDYzZjg5MmY2MmZhY2U4MjM5NTFkNWI3YmZhYjQ3NiBsZWdhY3ktdHJ1bmsKKzMwNTEzIDgwNmQzNmU1NmJmYTNlMDgwMTFmNDliYjBiM2JlNzcwZjNkNGI4MGYgcjIzYTEtYnJhbmNoCiszMDUxNCBhZDEyZWE5YzdlZmRmNDZiNjM4OWJmM2NmNjVlNTVkZTlmZGU1YzE3IHIyM2ExLWJyYW5jaAorMzA1MTUgNDQxNDcwN2Q5Mzc2MTZjNmFkNGI2MGMyNjBhMzMxYTlhZjg0OTU5MiBsZWdhY3ktdHJ1bmsKKzMwNTE2IGUzMjcxZThiMTRkZWUwZmJlMDdkMWE4NTJjMDBmODIxM2Y3ZjdmZmUgbGVnYWN5LXRydW5rCiszMDUxNyBjNDI5ZmU1ZGU0MTczNTYyZDUzMDMxYzBmMzg1MTZhNGNkY2E2OGM2IGxlZ2FjeS10cnVuaworMzA1MTggMzM4YWM4NmY0NDJkOTlhYzFhYmE3NTQ0YzRmMWZmOGU0Y2Y5YzE0YSBsZWdhY3ktdHJ1bmsKKzMwNTE5IGQyNzlkNzYzZjQ2MjU0ZWM1ZGMxZmE2ZDI1ZTIyNjdlYTcyNzIxYTkgbGVnYWN5LXRydW5rCiszMDUyMCBkNTliN2NiY2VhYzFjNmM5NjU3ZDFiMzkxYzQ2OWFhZTIyYjZiYjFjIGxlZ2FjeS10cnVuaworMzA1MjEgYjFlMjNjMzU3MDdiZTRjMDEwMmI3NTk4YjU0OTU3ZGM5YmJiNzUyMyBsZWdhY3ktdHJ1bmsKKzMwNTIyIGI2MWE2NjAyMmQ1YTQwMWY0ZjYzMjUxMDcxMzAzNTM5ZjE0ZjM1NTggbGVnYWN5LXRydW5rCiszMDUyMyA4ZWNkZGY0YWQ4YjAyODFkNjk0NjZkYjg1NmNmZTI2NmNiMmE4NDlhIGxlZ2FjeS10cnVuaworMzA1MjQgZGMzM2QwMjc2NDVhNGYzZDkwZGE2ZDMzZmZhMmI5MmJiOWI1NzI5OCBsZWdhY3ktdHJ1bmsKKzMwNTI1IDkzYjZhM2Y2MTMyZGM4Mjg3MzIzMzE3MDJlYzYwZGQzOTg4MWQ4NzcgbGVnYWN5LXRydW5rCiszMDUyNiA0MWY3NzI2ZTNlNTExN2E5MTQ0NGRkNDM4MDkxOTE5M2QxNTU4MDMyIGxlZ2FjeS10cnVuaworMzA1MjcgYTk4NjczYmUyMGMyODAyZWZhNDVjNzRmNWQxNzQyMjYyNzA4YTUyOCByMjNhMS1icmFuY2gKKzMwNTI4IDQyZjMzYmQ2OWM3MjRjZjRmNWZhNGYxODUwMjViNWQyOWEyNTUxZWQgcjIzYTEtYnJhbmNoCiszMDUyOSBmMGJkZjRjNTkwZWM0MGY5ODFmZWE0YTIzOTIwNWEzN2MwMzI0M2E2IHIyM2ExLWJyYW5jaAorMzA1MzAgYmU1MTEyMDMxMTZmMDZmMzA4YzY3NTZmYzgyOTdjNDFkOGE5ZDNiYiByMjNhMS1icmFuY2gKKzMwNTMxIDEzYzkwMzhmYTkzNzY5OTM4YzYxZDdlZDYyYzYwYjEyZjA1NDU5NzAgcjIzYTEtYnJhbmNoCiszMDUzMiBkZDZmMWRmNTI0ZGRjNzQwMjQ5MWM0YWJmODRiMTM4NGQ1NTYxYWMyIHIyM2ExLWJyYW5jaAorMzA1MzMgNjhkYWZlMWJjMDE2OWE4NjY3OWFjZjMwMmY1MDQ3NWQxOGM2NzJkNCByMjNhMS1icmFuY2gKKzMwNTM0IDAyNTk4NTZjMWU0NzYxMDgyN2M1MGQ1ZTk1ZTUwZGIzOWNhMjdhZjkgcjIzYTEtYnJhbmNoCiszMDUzNSA5OWRmMGU1MmY2MzQzMzI2NWU1NjdmMjgwNWJiYzQ5MWU0ZDU2ZDBjIGxlZ2FjeS10cnVuaworMzA1MzYgMWFlNzgyNDkzMTMyYjlhNDBlOTA4YWZiYTQ1MmMyYjIxNjkyNzNhZCBsZWdhY3ktdHJ1bmsKKzMwNTM3IGIzMGZlNGRjYzY5Nzk4NjNiZTY3NmVjMDljNjJmYzRkZGRlN2FiZGEgcmVsZWFzZTIyLW1haW50CiszMDUzOCA2ZTFhNzQzNWRmMjVkMzUzMTczZDM2MGRmMjJjNmRhNDEwY2JjOWM1IGxlZ2FjeS10cnVuaworMzA1MzkgZTY1ZmZjYjQzNjk1MThkNzJhMTVkYzgxZjRjYzEwZDEwODE5N2IyZSByMjNhMS1icmFuY2gKKzMwNTQwIGFlOWQ4ZjUwZTc2YTM2MDNjMmY1NWJlMjZmMTdhNTY1NzgzNTc1YTYgcjIzYTEtYnJhbmNoCiszMDU0MSBmOWE1NTU3Yzk0NDdhY2ExNmRkNjM4MjUyM2I1YmJlZjE3MzExOWRhIHIyM2ExLWJyYW5jaAorMzA1NDIgMDQxYzUyZjQ5ZGYyMjc4ZGYzYjkyZTdmMmY0MDc1NzQ5NWRmMzQ1MiBsZWdhY3ktdHJ1bmsKKzMwNTQzIDE4ODQxNmZiN2FjNTJkMmVhYTUxOGI5NDY5ZTA2YzQyYmZmZjU4MTUgbGVnYWN5LXRydW5rCiszMDU0NCBlYmY3MjY1YWFlNGVhOTJmY2NlZjMwNWUwZTY4ZDJkMTNjN2JkMzA5IGxlZ2FjeS10cnVuaworMzA1NDUgMjMyODBhNjQyODhlM2VhMTdhNDQwYjc4OGQ1ZDBhZjAyMjVhMDRlYyBsZWdhY3ktdHJ1bmsKKzMwNTQ2IDVkOTk3MjYzYjg1OWI5MmYyNzVmN2VlYzExZmYzODM3OGJhNDM0ZDMgbGVnYWN5LXRydW5rCiszMDU0NyAyMzdhMTQ2MjA3ODU5YjVkNjc1Zjc3M2E4ZmY4MzMzZmZjYzUxNTkwIGxlZ2FjeS10cnVuaworMzA1NDggNzM3YTU0NzYzOTZiNjQxNjg0MWYyMDJhMzAxMWQ3YmRhOGM5ZjhiNCBsZWdhY3ktdHJ1bmsKKzMwNTQ5IDI2N2Y0NWJlOWMwMmNkNDBiZWVkMzcwNDQ4ZmY3YzBlY2ZjZTY2M2UgcjIzYTEtYnJhbmNoCiszMDU1MCA1NTQxMjFmY2JiOWRjYmZkNjAzNGI2OWQyYTgwMGRjYTA3OGFmOGQ3IGxlZ2FjeS10cnVuaworMzA1NTEgMWNkOWM4NTY0ODc1Yjg1YjUyMDdhNGQwNTk1OGMzOGM0ZDYwOTJiNyBsZWdhY3ktdHJ1bmsKKzMwNTUyIDcwZDJjYjM2ZmExN2EzMWZlN2E1ZDZkY2RhNjUyN2VkMjBhZDI4ZjYgbGVnYWN5LXRydW5rCiszMDU1MyA3ODIyNzcwOWNhMDQ0Zjc5ZTRmZTFiZDY1OTYwNDdmYTM0Njk4OThhIGxlZ2FjeS10cnVuaworMzA1NTQgYWYzNTc5NTExZjg0NjhmZDIxMDJkNjJjOTNkZGM0NTU1ZDdjOWZlZCBsZWdhY3ktdHJ1bmsKKzMwNTU1IDlkMDgyOTFjZDQxMTY2MjE5ZWJkMWI1MmZkMGQ1ODkwY2MzYjgwOTQgbGVnYWN5LXRydW5rCiszMDU1NiA3MTRjZGYwODA2YzE2ZjdhNDI2MzYwNGIwY2E5NTM3OGQxNjFlNjNkIGxlZ2FjeS10cnVuaworMzA1NTcgZTM4MmQzOTMzMzFkNWMxMjFlYzdmYWZlZDg5OWIzZjQ4M2FlNzVmNiBsZWdhY3ktdHJ1bmsKKzMwNTU4IDk0YjljZjQyNzRkZTFlMDVmOWYxNjBhMmJkYWY5M2IzMTYzNzAyOWMgbGVnYWN5LXRydW5rCiszMDU1OSBlZTM0YjY0OTUyYzBmOGE2NzJiMDdlYmE5NzU2ODBlMjM4YWUzNmFiIGxlZ2FjeS10cnVuaworMzA1NjAgY2QzYzRkZjE5YjAzNWI2YWVhYTBkMTRmYTIyZTQyNDZhMjAyNDUwYyBsZWdhY3ktdHJ1bmsKKzMwNTYxIGFmZWI3MGM4NzZhYTM1MTQyMTdiOTE0ZDFmOGI0YWRlYjU1OWM2NmMgbGVnYWN5LXRydW5rCiszMDU2MiBjZjkwMzA5ZWZlZWU2MjJkZjY0MWE5NjkwNTAwYjA4MzlhZDc1M2JmIGxlZ2FjeS10cnVuaworMzA1NjMgNjk3N2UzMjBhNzU2YzQ2ODVlYmNiYjIxOWRhZTNmOGRkMzc5MDEzNSBsZWdhY3ktdHJ1bmsKKzMwNTY0IGQzYmE3ZjRhOWY4OGFmZTVkODI2MGQ5MDBlMzA1ZTZjOTg1OTg0NDggbGVnYWN5LXRydW5rCiszMDU2NSBhYWU5NDk1MDZkMmE3ZDMyODM5MzE2YzU4ZTYzOGEyNWIyZGUxYjZhIGxlZ2FjeS10cnVuaworMzA1NjYgMTU3YTk1ZjQxN2YzZDdiY2NkMDNmMzBmYTFmM2EwNGEyYTczYjI3ZiBsZWdhY3ktdHJ1bmsKKzMwNTY3IDc5MDFmZDk1MDE3ZjA5NDc4M2YyMjFjZWE3M2MwZjZiMWM2OGU0ZjcgbGVnYWN5LXRydW5rCiszMDU2OCBjYmRmNjBjY2Y1NGY1ZGZjN2JlZDAwY2FkYzcwMjQ0YzE1ZGJkZDM5IGxlZ2FjeS10cnVuaworMzA1NjkgZWIzMjJlZjY3YzlmZWM1MDE5NDJmM2EyMGE1MDE2MGRlNTliMTA0YiBsZWdhY3ktdHJ1bmsKKzMwNTcwIGNjNWIyZDBhNGFkMWQ4NmZlMjY5NzhkYzlmNGU4YTdmYjZmN2U2MzYgbGVnYWN5LXRydW5rCiszMDU3MSAwNmIzZmEyNWQ5ZjFkZTNmYTc1M2UxNzJmNjc5ZmI4Y2JmOTczOWQ5IHIyM2ExLWJyYW5jaAorMzA1NzIgMTcxMmUyMDRhYTkyZjEyMDdmMmUxNmQ3ZjhiYWIxZGVhMTYzNTFkNSByMjNhMS1icmFuY2gKKzMwNTczIGVmNTMxNDgyYmIzN2IwZmIzOGJmMDE2MmE4NjI3Y2RlMjFmZjNkMzEgbGVnYWN5LXRydW5rCiszMDU3NCBlOTIwNDRjMGI4ZWNlZTgxNzVhYTQ2NmVlNTNhMzNjYmE0NTM1ZTI3IGxlZ2FjeS10cnVuaworMzA1NzUgYzMwZjk3Mjg3NjAyOTRmMmY4OGVmZTM1ZDllYjMzZWIyYzJkMjBlMCBsZWdhY3ktdHJ1bmsKKzMwNTc2IDE1NjRjNjgzOWU2YjBlYjgwNTlhZTRjODFjZDAyMTU5ZGMwOWRiMjUgbGVnYWN5LXRydW5rCiszMDU3NyAwYmE0NjYwNmYwZjkxMThkZWNiYTQwZDNmZjA4MjgwZTI1OGU3N2FhIGxlZ2FjeS10cnVuaworMzA1NzggYjg2NTkyNWVmNjhhYjYzZjc0OGVlZmQ2OGNkNDA5ZDIyNmI5OGNjYyBsZWdhY3ktdHJ1bmsKKzMwNTc5IGMyOWFkYTZjMWM5MDRhMjc0NWRhNWEwNTE4NmE4YTI4YjAwYTMyZTEgbGVnYWN5LXRydW5rCiszMDU4MCA3NTMzMDZmOWIwYTBlMzM4YzliMTM2MjJiNGRlZjU0NTg2MDFlMjA3IGxlZ2FjeS10cnVuaworMzA1ODEgYzFmNGU1M2M0MmRkMGNlMDVhNDgzMWRhMWRhNTQwMDQzMmI2NDU3NiBsZWdhY3ktdHJ1bmsKKzMwNTgyIDk3MmZlYzIxZjIyM2I3MTM4YmM5YmQwNzU1YmFjMWM3MDk3YTdjNTkgbGVnYWN5LXRydW5rCiszMDU4MyBhNzRjODg4MzhhNTViNDIxZjhiYmU5OTI0OWU3MmZlMDc0M2FmZDJmIGxlZ2FjeS10cnVuaworMzA1ODQgMmFlMWQxNzU3MmRhNmE4ZTc0ZmNmNWY3MDExNmNiZTU1ZmE2YzQ1MSBsZWdhY3ktdHJ1bmsKKzMwNTg1IDMxOTllOTc0ZjU1YWEzZjZkZTUyZjY5MjRlMjA4ZGFiYTkxNjE1NzAgbGVnYWN5LXRydW5rCiszMDU4NiA2NGU4YzY5ODY2MTBjMmIzNzg2NDgwNjRiZGZmZDE0ZGRjNzFmMmEzIGxlZ2FjeS10cnVuaworMzA1ODcgZDVlMDlkNDEyYjUzODgwNjdlYjkzZGM4ZmUxODdkMGEyZjVhZWYyYSBsZWdhY3ktdHJ1bmsKKzMwNTg4IGY3MjI2NDIyYzFkMGE0YjcxNDE2YmEzMDUyNTJiMzgwZjEzOGFlNGIgbGVnYWN5LXRydW5rCiszMDU4OSA5MDM1MGI1ZDMzOTdjNGZkNjhjYTNlYzQ2Y2RjZDk5OGM5YWMxZWU2IGxlZ2FjeS10cnVuaworMzA1OTAgMzgzMTk0MDllODk1NjdlMjQyOGExNmQwNWM5ZTAxYmRjNzk5MTA1NiByZWxlYXNlMjItbWFpbnQKKzMwNTkxIDkzZjMyMmY1NjJmMzk5OGNmZjI2NTEyNjAwMmMyZDFiNzgzZDI2ODIgbGVnYWN5LXRydW5rCiszMDU5MiBhYmI1YTY5ZDYwY2JmZjk5NDYzOWJmMzQwODZmOGIyMTU1M2EyM2MwIGxlZ2FjeS10cnVuaworMzA1OTMgYTEyMzc5M2NhMTkzYmU3ZDQ5MDVkNTNjMGI0ZmJjZGYxMDNmZTI2YSBsZWdhY3ktdHJ1bmsKKzMwNTk0IDNhMjk1Y2ViYTQwMWY1N2FkNmRhNjY2NmVkN2IwNTVjM2UzNzljMDkgbGVnYWN5LXRydW5rCiszMDU5NSAzODhlNTQ3NDc3NDAwZjQ1MmYzYjAxY2U0ZmY3ZTliZDc2OGU0MDg1IGxlZ2FjeS10cnVuaworMzA1OTYgNTRlZjdkNTI5NmYxMDQwYWEzOGQ4MWFlYjM1NjE5MGQzZDUzZDE1NCByMjNhMS1icmFuY2gKKzMwNTk3IDFhYzk5OTRkYzZjMjU4MTMwMmFjOThhNTM1NjM0ZWQwOTM0MjFmNjEgcjIzYTEtYnJhbmNoCiszMDU5OCAxYTBlYWJiZGE2NTRhYTU1MWVkYzZlNjdjNDZiYjYxM2YwYjJmYzczIHIyM2ExLWJyYW5jaAorMzA1OTkgOTdiNWFiNjdiOWYyOTA5ZDg0ZDI0Mjk1MDYwYzNkY2I2ZDYxMjdhOCByMjNhMS1icmFuY2gKKzMwNjAwIDUyY2U3MTM1OGUzMmExMTY5ZGNmMDNjYTc0YzFmNGRmYWIzMWI4NmUgcjIzYTEtYnJhbmNoCiszMDYwMSA3ZGFiMjc3MzFiZTgxOGQwNGIyMjhmZTUyN2M1MTYxZmU1NWZmNzFlIGxlZ2FjeS10cnVuaworMzA2MDIgYmQ3NTAzNzhkNWMxZmZjMmQzMzA3YzUwMTYwMjE5N2NjMWM1MTJhYyBsZWdhY3ktdHJ1bmsKKzMwNjAzIGU4NDFjODczYTkzNzAzY2Y0NmEzNTQ0M2MzNDRhYTUzYzlhYzhiMTMgbGVnYWN5LXRydW5rCiszMDYwNCAyN2U5YzNjZDU4YWZkMzMyZjM5M2E0ZmNhNWJhMjQyYjBkYWE5NDEyIGxlZ2FjeS10cnVuaworMzA2MDUgNmM0YmQ0ODdmZDI2MGJkOTNkYTBhYTk0MjZlNmZmZTIyYTM1YzAwOSBsZWdhY3ktdHJ1bmsKKzMwNjA2IGExNjY0YjdkYTc2Zjc5YzIyYTc4ZDIxMGRiMjVjZWNmZjkxNDVhN2MgbGVnYWN5LXRydW5rCiszMDYwNyAzZTIzZGU4MDJhNWRhY2ZmMjZjNmE2OTMwMzFhNTQzZDg2ZDNiMmE5IHIyM2ExLWJyYW5jaAorMzA2MDggYjQyMjU1YzgyMmIxZTU3MWQ1YzRlMDNkOTZhMDZmODViZDU1ZTBhNCByMjNhMS1icmFuY2gKKzMwNjA5IDhkN2RkYmIzMzBkMzFjYmNmYTU1OTBkMTUwZTVlNWI4YWE0NDg3M2EgcjIzYTEtYnJhbmNoCiszMDYxMCA1YWI0YjY0OGE0Y2Y0N2RmYzMyYTE5MGI2ODViNGQ0ZmViOGYzM2NkIHIyM2ExLWJyYW5jaAorMzA2MTEgOTZhOGVmZDkxOTQ4YzFlYWMzNThkNzNmNjdmMDI4MjNlOTBjOWFjZSByMjNhMS1icmFuY2gKKzMwNjEyIDMzYjQ2MTBhODkyMjUzYzNiNmVhNGM2ZjAzNTdiYmQ5YzFjOTAyMGYgcjIzYTEtYnJhbmNoCiszMDYxMyBmOWE1ZWQwOTI2NjAwNjEwMDhjZGRkM2U5MWY0YWEwMWQzNTY1MmM5IGxlZ2FjeS10cnVuaworMzA2MTQgYTE2YmM2NGYxMTQ1YjQ0OGY1ZTIyOWEwNzZjYjMyZjA1M2RmYzMxMCBsZWdhY3ktdHJ1bmsKKzMwNjE1IDgyMjY2NThhNjNiYjJlM2M1MDYxZDgzMzMyMWYyYTBmMWI5ZDg3MTkgbGVnYWN5LXRydW5rCiszMDYxNiA2ZDdkYWE1MzI5YzZhY2FlYzk1NjNiZDZkYjk1YjFiZjEzZWRjZTE3IGxlZ2FjeS10cnVuaworMzA2MTcgNjkzMzFmYWM0ZWYyNWIwZDEwODAxNzAwNjgzMDExNzNjZGRlOTlhYSBsZWdhY3ktdHJ1bmsKKzMwNjE4IDQzMDZjNjY1Zjg1N2NjZTg5NjA2MjMwODQwNzVkYjExYzE3Nzg5MWEgbGVnYWN5LXRydW5rCiszMDYxOSAyNDQzYzU1N2NiYzNkM2M5MDA0MDhlOGQzMGI1M2U1NWQ0YWM2MmEyIGxlZ2FjeS10cnVuaworMzA2MjAgODJlYWMzMWU2ZTJkYzk5NzZkMzVkNTY5MjRmOTk2YjE4ZDZiOTcyYSBsZWdhY3ktdHJ1bmsKKzMwNjIxIGFlZTQzYTRmMzU3MGQ3MjM4NDEwYTYwYTE4NDQxMjc0ZTllZmQ5YWUgbGVnYWN5LXRydW5rCiszMDYyMiBhMGE2ZjRkZDczMjg2ODU2ODVjZmY3OWZiM2QwYTM5NDdiZDRkZTFmIGxlZ2FjeS10cnVuaworMzA2MjMgZmFiYTZlNmM4MjRkZjllNDhiYmY0ZjI4YWFjMTAxZGMwYzE1YmE3ZiBsZWdhY3ktdHJ1bmsKKzMwNjI0IDA0NjRhY2I1YjNlNDZiMWU1N2IzYjhmYjVmNzZlMmZiNjYzNDY3ODcgbGVnYWN5LXRydW5rCiszMDYyNSA1NWRlMmI5NTE4MWU5MzlmMmJkMjdlZjQwM2Q1N2RiZDM1MDNlMTYyIGxlZ2FjeS10cnVuaworMzA2MjYgMDM2NGFhZTVhNWE0MGJhZjgwN2M5M2NlZjVjNDc0MDdmODNjZWI1NiBsZWdhY3ktdHJ1bmsKKzMwNjI3IGU3MTlhYjQ2YWRhYmZjYjFhODdkNTc3YzE4YjE2MzlkYjc2ZTUzZmIgbGVnYWN5LXRydW5rCiszMDYyOCBkMmZhMWRkY2RmNmRhNmVkZjJhMTQzNjgxZTFlMjk4NzllNDcwZDM3IGxlZ2FjeS10cnVuaworMzA2MjkgYjJmYzQ5NDk2M2IyZWM5NDI1NTI2ZTZmMDc3NjZhYjRjMDdiZjg1MiBsZWdhY3ktdHJ1bmsKKzMwNjMwIDlkYjQ4ODI2MTBlNWI4M2JiMDZkZGE4ZjQ4MjJiNDVkOWUzZTE5YTcgcmVsZWFzZTIyLW1haW50CiszMDYzMSBhMmYxN2Y0YTZhMjJjZmI5YjNjNGE1OGI0ZDU0YzBjYTI4ZWIwYzI0IGxlZ2FjeS10cnVuaworMzA2MzIgMzdiZWI0ZDYwOTI5ODNiYzgzYjhiYjY1NWRhOTUxNDhmN2E2NDdjZSBsZWdhY3ktdHJ1bmsKKzMwNjMzIGViOTM1M2I0M2NkMTJjMTc5MmUzOTE5YzliODYwYzJlZDE1ZWYwYjUgbGVnYWN5LXRydW5rCiszMDYzNCBiM2M4ZDljNDcyZGM5MjZiYmNlMzYwYjQ5MDQ0ZDkzYWFkNGRiN2M4IGxlZ2FjeS10cnVuaworMzA2MzUgODZlN2ExZjdmMjY1Mjc3MDY2NTVkOGJkMWZjM2QwMGI2MGFiNWJhNCBsZWdhY3ktdHJ1bmsKKzMwNjM2IDdlYzc3MTg5MzQxMDJhOTliYjY2MzNlNWY2ZmQwNTE4OTM5OGUyYmQgbGVnYWN5LXRydW5rCiszMDYzNyBjMGQ1ZmU5YTBmMWMzZTQyMzc2MzM3MTA3MGQ2Yjc4NTZkYzNlYzUyIGxlZ2FjeS10cnVuaworMzA2MzggMWI4ODFkNWU0YTkwM2U1YzQ2N2JlYzUzMDcxZDI4NGFlZjJlNDYzMyBsZWdhY3ktdHJ1bmsKKzMwNjM5IGQxODUwYTM2YWU0MWZkOWRmOTNiZmFhYjkwNDczOGQ3MWRkODkxNDggbGVnYWN5LXRydW5rCiszMDY0MCBlNTQ4NTUyNTdhNGY5MzBmMzFkNDIyZGFhOWRkNjBiZTU3NTQwZmY2IGxlZ2FjeS10cnVuaworMzA2NDEgYWNjODBlYWNlNGRjMTM0ZTFlMzMxNzk0Mjk1ZmQ3NmY2YThkN2E0YSBsZWdhY3ktdHJ1bmsKKzMwNjQyIDQ2YTZlZDdjYzRmZTk1ZWI4MTQxMmFkYzI2MjU2OWMyMDc0NmMxOWQgbGVnYWN5LXRydW5rCiszMDY0MyA0NWYxZTZiMTJhODEzYjQzYjM5NTMzMDRlNWYzZWY4MTQxYzMzZDdlIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzA2NDQgMDQ3YjZlMTZhYjJlNGQ5ZjhmMWQxYTlmYmFhYzQxNzEzMWU4Mjg4ZCBsZWdhY3ktdHJ1bmsKKzMwNjQ1IDZkZmRiMWMwMzA4YWQxZmU4NjRhZWNmNjg2NzgzMmYxNWY0N2FmMjggbGVnYWN5LXRydW5rCiszMDY0NiA4NjE3YzI1MDZiOGU0NTQ5YjJkZWMzYmYwMDIwYTc0M2IzM2M0YWJhIGxlZ2FjeS10cnVuaworMzA2NDcgZTg3ZDU5MGE1ZGUxODc0N2M3NWZiMTBjZTZjMWQwNGY0ZDkzYzhiZiBsZWdhY3ktdHJ1bmsKKzMwNjQ4IDIyZDY2MDQ5NGYyOWM0ZDc5MWM0NjQ5OGU1NTcwN2VhYjgxNGY2NmUgbGVnYWN5LXRydW5rCiszMDY0OSA0OWJjZmVjYjI5NjI3MjU2YWUyODgzZGYwY2MyMjY1MTcxZDJlNzZmIGxlZ2FjeS10cnVuaworMzA2NTAgNjU3YWVhZmJiYzlhMGM4NGZkNjk4OTgzMzFlNmQ5ZGVlNjNlNzRhNSBsZWdhY3ktdHJ1bmsKKzMwNjUxIGMyNjYzY2EzMWQ3ZDBlMzhkYWIzOGVkNzc4YzRhMDAzMjUzNDE0MTUgbGVnYWN5LXRydW5rCiszMDY1MiAzZDI5NjJiMDI0OWU1NDUxYWUxYmY1ODEzMmU2N2E2MDM3NzgzZjhkIGxlZ2FjeS10cnVuaworMzA2NTMgMzMzMGE1MDlkMmJkODM1Y2ZlZGM0MDE4MDBjYWU4NDE0YjdjZWY4OCByZWxlYXNlMjItbWFpbnQKKzMwNjU0IGFmOGEzMGRlNjY3MjVhMDFhYWEwMzMwMzA5ODYxZjE1N2ExY2M4YzYgbGVnYWN5LXRydW5rCiszMDY1NSA3YmJiMGRkOGQyMzA2ODk3YTQ5YTRmNTVhYzZmNTQ5NWZiNWZlMzBmIGxlZ2FjeS10cnVuaworMzA2NTYgOGUyMWJjZjIxNThhYzkxMDQ3YzE2MzY5YTU2MjcxMTgxZjNlMDY2OCByZWxlYXNlMjItbWFpbnQKKzMwNjU3IDVkNGYzMTZkODcxYzBlNmMxNWJmODEyY2RlMDFhMGEyNjE0ZGJhMzYgcmVsZWFzZTIyLW1haW50CiszMDY1OCA4MWNkYWJiZDYzZDdjZDk5ODQ0Mjg5MjZkNmQzNDFhODQ1ZDdlMjI4IGxlZ2FjeS10cnVuaworMzA2NTkgYWNmMWI1MTIxMmM1OWE5YjdkZGU5Y2VlOWQxMmMwMGY2YjE5Yjk1YiBsZWdhY3ktdHJ1bmsKKzMwNjYwIGUyMDRkZmYzZmNiZjllMDRkMTBjYjMwNzA5NTNmOGU1MWExYzMyYmMgbGVnYWN5LXRydW5rCiszMDY2MSA5MmU5MjJlNzMyN2FlMzI3MzkzNjFkOWQ3ZDRjYjhhYjlkZDEwZTM3IHJlbGVhc2UyMi1tYWludAorMzA2NjIgNTc2ZTJiNWQ4Y2Y4ODI1YTg1NjdmMjc2YjM0Mjc4OTI1MThkYTQxYSBsZWdhY3ktdHJ1bmsKKzMwNjYzIDEzNzViZmNiNjc3ZTYyMGVlMTM1ZDU1N2VjMjg1YjAxZDVjMWJlYjIgcmVsZWFzZTIyLW1haW50CiszMDY2NCA0Nzc5OWMyNzY0NjExN2U5NmIxNTEyYjBmOGVkNzAzZWVmMjJiYzUyIHIyM2ExLWJyYW5jaAorMzA2NjUgNTZiOGY5MDg4MTNjYjBjYmM0ZGIyOGIzNmNlMTk5MGMzMjYzYTY3NyByMjNhMS1icmFuY2gKKzMwNjY2IDVjZjQxMGU0NzI1MTY2MzA1YWIyNTQ5ZGU0YjU0MWQ1ZjFiYzM1YzMgcjIzYTEtYnJhbmNoCiszMDY2NyBlMjY1ZWZjYmNiZDE2NTIwNzE5ZGEzNDNhZDQ1N2U0NDkzZTBhN2Q4IHIyM2ExLWJyYW5jaAorMzA2NjggMjIyN2FkODZkMzNjNTIzODIzMzEzMjI3MThjMzQwNTM0OGQxZjM1ZSBsZWdhY3ktdHJ1bmsKKzMwNjY5IDVlZDgyMDY3MGFmMzVjOWRlNzQ5MWY4MDRiMmFiZjhlZmVkMTE0MjAgbGVnYWN5LXRydW5rCiszMDY3MCBiOTQzNTYwZTVmN2I1MjU2NzA4NGU1YTA0NGNhOWVjYzU3ZjZiYWIyIGxlZ2FjeS10cnVuaworMzA2NzEgMjlmODljNzI1N2JkMGM5ODA2ZTdiNzU2MjQ2MjM1NWViNTY2ZGJmNiBsZWdhY3ktdHJ1bmsKKzMwNjcyIGUxODAwOGI3MTFiMDIyZmNiNWYzNzc0YTFhZjA3NjYyODdjMmY5YWEgbGVnYWN5LXRydW5rCiszMDY3MyBhZTgzOGY3NzRmNmMxZTFkMWY3ZmQ4OWJhYWY1YmQyODAxNjNjNWYyIGxlZ2FjeS10cnVuaworMzA2NzQgODBmY2VhYjA2ODM1ZTYxOTI4YmU5YmE0ZDdiNTkwNDAzN2MxNzRiOCBsZWdhY3ktdHJ1bmsKKzMwNjc1IDNmNGU4MGViZGNhODM1NGIwYjFmNTgzMDQyNWU0MjljZGI1YWNjYTEgbGVnYWN5LXRydW5rCiszMDY3NiA1ODVhNjQ2MGY1Nzc2ZmViOGZlYmZmY2FiNDdjODRiNzFkY2Q1OGVmIGxlZ2FjeS10cnVuaworMzA2NzcgYjFmNWZkYmU2Mzk3MmY3OTNiZTY3MjJjNDQ4ZjlmNWM0YzcyNmFmMiBsZWdhY3ktdHJ1bmsKKzMwNjc4IGViNmIzNmIyNmU4ZDJiNmEyZmUwM2YzMjJhYjZkMWFiZWNkYjEzMzEgbGVnYWN5LXRydW5rCiszMDY3OSAyMzI2MDE5ODg4NWFjZjNiMWY4ZDY1YWRmNjU2NTcwYzZkYWU5NDE5IGxlZ2FjeS10cnVuaworMzA2ODAgYzVkMDJkNTM3MGQ5MzdiZjAwNmM0NmE3Y2RlOGVlOTQzMDQyNGNjMSBsZWdhY3ktdHJ1bmsKKzMwNjgxIGI0OWE0MGRiN2I0NzJhMjQ1ZjQwZDBlODM1NzVjNzFjYjQ3NTZkOTkgbGVnYWN5LXRydW5rCiszMDY4MiA5MTBlNzZkZDA0ZGFmNjVlYWMxNjZlOTZkYzM4YTdlODI3ZGRkZjk3IGxlZ2FjeS10cnVuaworMzA2ODMgNzM0ZWJkNDdiYzJhOWQ0MzAzNjEzZjJhZWVmZTkwNzc4OGQ2OWFmMCBsZWdhY3ktdHJ1bmsKKzMwNjg0IDJmOTNjMjMxZWFlMGVhOGNjY2M5MTgyMGIyZjJkOGUxOTczMjM4MWMgbGVnYWN5LXRydW5rCiszMDY4NSBlZjQzZGU1NjJmZDFiMjUxYmIxNTdjMmJiNjRjNmUzMmM4ZjY4ODYwIGxlZ2FjeS10cnVuaworMzA2ODYgMGNhZGMyOTE4MGU2MTVjZjBkMTdlZTA2M2M2NzE1NzgwMGY5ZGRiZiBsZWdhY3ktdHJ1bmsKKzMwNjg3IDdmMDliMTk5MmNlOWZjMzVlYWJlOTJhMWIzOGFmMDg1MzM2YThjOTEgbGVnYWN5LXRydW5rCiszMDY4OCBjY2Y1OWYxYWI0MzEyODY0ZjMwYjI5YWVkMGI4MmVhMDY2YTZhZTlmIGxlZ2FjeS10cnVuaworMzA2ODkgMGJkMDczOTFkOTIxYmNjMTUwNjQxNmRhMzQyYjhmMjIzMWMwODNmYyBsZWdhY3ktdHJ1bmsKKzMwNjkwIGFkZjRhYjNlYWE2MjFjNDQxZmE3N2IyYjJkNTdmYTNjN2E1NzMyMWUgbGVnYWN5LXRydW5rCiszMDY5MSA0Yjg5ZDc2ZmIyMDVhYzBkZDMzNDI2NmI3NDE0NDIwNTIwY2NmYjgzIGxlZ2FjeS10cnVuaworMzA2OTIgZDVkMTJlYTNhNTgwOWZlYTIzYzhkZDc1Y2VlMWQ0Yjc1OTIxNzFmYSBsZWdhY3ktdHJ1bmsKKzMwNjkzIGI5ZjViZWU4ZWMxOGU4ZmYwNGM5ODIwZDM5ZTc0YzA0MjY3YzRiOGIgcmVsZWFzZTIyLW1haW50CiszMDY5NCAwYTk3OTZhNjQ2OGVmMTNmMjMxNTY2YzMxYmI4YWMyNDhiNjgwNWQ5IGxlZ2FjeS10cnVuaworMzA2OTUgNDdiMTM0YmI1MWMzMDJkOGVhMmVkMDE0NmQ2NGM3MjczMjg0NzM0MSBsZWdhY3ktdHJ1bmsKKzMwNjk2IDMxOGFiYTk0YzFlN2IxZWNlZDk0Y2ZkMzg0NDZjM2Q1MGJmYTJlNjQgbGVnYWN5LXRydW5rCiszMDY5NyA5MjVhN2IxZjkzZWUwMGY4ZTA0ZTIxZmY4Y2FkMjYyZGZiNDEyMmMyIGxlZ2FjeS10cnVuaworMzA2OTggMDdjNmMyZTk4YTFjZGUxY2I1MWVmZjE2YmI1ZmMzOWZhMDc0MzVhZSBsZWdhY3ktdHJ1bmsKKzMwNjk5IDZmZTQ5ZGJmMDNmZDQ2ZmJmNjM2NmU4ZWQ1ZGViZDUwYmU4MjQwNzEgcmVsZWFzZTIxLW1haW50CiszMDcwMCBhMGUwY2FiNWM5MjdmYzFhZjkyZWYwYzFiNTE2YmZjYTY5YmNmZTRiIHJlbGVhc2UyMS1tYWludAorMzA3MDEgY2RmMWJhMmFiNzE1Mjk0MjI2YjhlMTViNmFjODI1YmUwODYzN2Q1MSByZWxlYXNlMjEtbWFpbnQKKzMwNzAyIDc3MDZhMDZmNWU2OTI2OTRmNWJhZTdiZmFmMjM0MWViMDk2NTcwOGQgbGVnYWN5LXRydW5rCiszMDcwMyAwMWQ5ZmQ1OTUzNzVmZTU1ZGJkMDRmOGRiNWI0OWFiZjEyZjM2N2Q0IGxlZ2FjeS10cnVuaworMzA3MDQgNzI4MzgzZGM3MzllZjAwZjI1M2VmODJiOTFlMTgzZTAyYjVmNzJhZCBsZWdhY3ktdHJ1bmsKKzMwNzA1IGM3OTg2MTNhODc2NTViYTI2MzU3ODI3NTNmMDM0Njc3MjJlM2M1YjEgbGVnYWN5LXRydW5rCiszMDcwNiAwNGFhODZkNDlkOTNlNTU2NDkwYmNkODkyZDc5NTlhYTg3MGFiODdlIGxlZ2FjeS10cnVuaworMzA3MDcgZmM0YmIzODIwNDQ5ZTNmMGZhZGU5YmJkZTU2NTQ0ZGQxYzA0OWI3MCBsZWdhY3ktdHJ1bmsKKzMwNzA4IGJjYWUyYTcwZTFlYzdjOWY4NDQwMzEzODA1MjdhMTMwYjg4ZWM4NjQgbGVnYWN5LXRydW5rCiszMDcwOSA3ZWE0NDMwNTIyZGY0OTNhMDg0ZGQ3Y2JhODlmMWU3YzM3MjViOTBmIGxlZ2FjeS10cnVuaworMzA3MTAgZDAzYzEzMDM0NTYwYTM2MmU0ZDhkMTkyOWQ4ZGNmYWRhOTZkZWM3OCBsZWdhY3ktdHJ1bmsKKzMwNzExIGIyOWNmYWQ0NDA5N2I1OGMyYjE2MmFhZGIxZDhlNzU4NGU1YmU3NDIgbGVnYWN5LXRydW5rCiszMDcxMiBiMzQ2MjcyNTQ0YTE4MmMxNmJkM2VkMDFkNGZhYWQzNWJiZDBjZjQ5IGxlZ2FjeS10cnVuaworMzA3MTMgOTM0NzMyNzg3NDE5NGJmOGFlNDY0YmE5YjQ5NGNjOTkwY2QxYWU2ZCBsZWdhY3ktdHJ1bmsKKzMwNzE0IDU5MzA5ZDRiZjg0MWI2OTI5NjE3Nzc3MGJmZWE2ZGY5MTliNzhkNDQgbGVnYWN5LXRydW5rCiszMDcxNSA2NWRjMDExMGE3MzVjMTAxMjhlZWYyMDljMGQxNGY2OTU4YjllZmFjIGxlZ2FjeS10cnVuaworMzA3MTYgZDRjOGFmOTExOWQxOTE4ZmY2NmY3OTU3YjAyNjdiZGQzZmJiMDBhNSBsZWdhY3ktdHJ1bmsKKzMwNzE3IGE1MWU1YWUyOTg4MmJjYjFiZjVlMzQyYTJjM2JkZTJjZjhiZDA2MzYgbGVnYWN5LXRydW5rCiszMDcxOCBiODcyNDM0MWJiMWFiYzMyZjlmZjYxNWQ4ZjAxZDNmODdlZmQ1ZjIzIGxlZ2FjeS10cnVuaworMzA3MTkgNzdiNzBhODg4NGNiMjNiODZmZDAxMmU0MWEwMTI4ZDI3ZGEzYjU3NiBsZWdhY3ktdHJ1bmsKKzMwNzIwIDkyODEyZjZjZDYzYjViMmMyYmJkODU1ZWM3YmYwNzBkMjUwZmRlMjkgbGVnYWN5LXRydW5rCiszMDcyMSBkYzZmYjhhNmFmM2RlZjI3ODBlZmY1ZTY5NDgwMzgyNjU2NDM0MDBiIGxlZ2FjeS10cnVuaworMzA3MjIgYWUxMjI2NzVkZjFlOTBjZTk2NDE0MzY1NjQyYWY3YjQ0N2U5NDkyZiBsZWdhY3ktdHJ1bmsKKzMwNzIzIDgxZGE3M2I5M2MzYzYyZjNjMjI2NzY4ZDdhMmVlMmM2NzNkYzE0YjEgbGVnYWN5LXRydW5rCiszMDcyNCAwYTAzNWY5Mjk5YTk3OWY3ODljMWJlMTE2ZjU3OWIwNTZlMTI2N2E2IGxlZ2FjeS10cnVuaworMzA3MjUgM2M4ZDkxZjNmNGM2N2RlNzgzMTdhNTc0ZjM5MWFlNmRiMjY0NzhkYyBsZWdhY3ktdHJ1bmsKKzMwNzI2IDRmMTljODUyNGYxYWM3ZTRlN2FjYjQ0MTY5ZDc4OTFkMTQ3MTllNTAgbGVnYWN5LXRydW5rCiszMDcyNyA2YWUzNjFkZjg3MGVlYTMxOGY3YmIwMGRiYTRkNDlmYTI4MjFmMzJiIHJlbGVhc2UyMi1tYWludAorMzA3MjggYjBkNTI4MzI3YzRjMWE2Y2Y2Y2M1MzllOWNmZTQ2NmU4YzY1YTc3MCBsZWdhY3ktdHJ1bmsKKzMwNzI5IDgwZWEwNDhmYzBkNzM1ZjFmZGFhOTBhZWZjN2EwMDZiNjQyZTBkYmQgbGVnYWN5LXRydW5rCiszMDczMCA0MjhlZWNkZmQ1N2ZjYWNlMmU3ZDE5MWVhODY5MGU2MzAxOGMzNDk0IGxlZ2FjeS10cnVuaworMzA3MzEgYTQ5NGY1YTg2MzlmMjkwNDVmYjc5NzA3NWMwNGI2YzEyNTVjNGVlZSBsZWdhY3ktdHJ1bmsKKzMwNzMyIDRhNjJhOTQxZjNiMTJhMzAzNWFjYjcxOWJjNWQ4ZDA5ZGM1NDk5NWYgbGVnYWN5LXRydW5rCiszMDczMyBkZTJjOTVkODE5ODQxNjBmNTllZjAwMWFiNWNhYTAwYWMzZTEwMDk0IHJlbGVhc2UyMi1tYWludAorMzA3MzQgZjk2NzcyZTMxZTIzM2Y3NzdlZDIxZWJiNzM4YjhjZDVkMzk5NDA0OSByZWxlYXNlMjItbWFpbnQKKzMwNzM1IDNiM2NlOTY0YWRjOWMxM2YyZmE1Njk4YTJhN2Y2NzRmMmUxNWMzZGUgcmVsZWFzZTIyLW1haW50CiszMDczNiA3YTRkNzgyNzE1ZjRjNzY2MjQ5NGNlNmNjZmQ4ZDIyM2UxYjQyMzVkIHJlbGVhc2UyMi1tYWludAorMzA3MzcgMTBiN2U2MDI0NWI1Njk0MDFiOTYzNjI3ZWI1ZjhkMDcyYjg0NzY2MyBsZWdhY3ktdHJ1bmsKKzMwNzM4IDM4ZDIyMzhjNzk1ZTQ2ZTliMTZlN2FiMzk5MmYyNGM0MDE1NDUyNDIgbGVnYWN5LXRydW5rCiszMDczOSAyZWQ1MThhYjJmZDIwYTJkMjIyOTQwNDQ2NDlhMzE2ZjFkMjI1MGUxIGxlZ2FjeS10cnVuaworMzA3NDAgMTc4NzhkNDU4Y2YxMmYzZGZkMTNlMmExMDQ5MGFmZjc3OGFlZDdhNCByZWxlYXNlMjItbWFpbnQKKzMwNzQxIDExMTlkNTgyNjA5YTE0ZjI0ZTBmNGE3ZTZmMjIwNTUwMzhjNTJjMmYgbGVnYWN5LXRydW5rCiszMDc0MiAyMDlkNjcyMTI4ODNkMDEwYzM2YzZlNTZmMWQyNzMxYTA2YzkwY2NlIHJlbGVhc2UyMi1tYWludAorMzA3NDMgMjAxY2RlYjMwNWY2NGEwOTQwM2YyZmVkNDZjOTI5ZTZlMTE2YzQwNCBsZWdhY3ktdHJ1bmsKKzMwNzQ0IDQyMGVhMjA1ZjAyNDFlZTQ1MTk1NDAyNmM4MmE0ZjVlYWE1MDdmNTUgbGVnYWN5LXRydW5rCiszMDc0NSA1ZDQyZGJhNDlmZTUwNzI3NWI5ODBiNGQxZGM1OWQ0MDI4Mjc2NjcyIGxlZ2FjeS10cnVuaworMzA3NDYgZWJlYjAwYjhkNTAyYTBjOTk1M2I0MWFkOTBjZjg4MmViZWE3N2UwZSByZWxlYXNlMjItbWFpbnQKKzMwNzQ3IDExYjM0NTY0YTBmZDA1ODIxZGE0MjIwNTZjOTgwMTkyYjM0OGRlYmMgbGVnYWN5LXRydW5rCiszMDc0OCAzYTMzYmQwZjljNGJmZGM3NTRlYzhmZTFlMTM1MjNjOWM4MDhkYWI1IGxlZ2FjeS10cnVuaworMzA3NDkgZjM0YzI4NjUwZjE0ZTE4ZTVmZjI1MzVjYzg0MTE1ZTJkOTk1ZDMxYSBsZWdhY3ktdHJ1bmsKKzMwNzUwIDdmMzdlZDU0MjkyMDAzZWE4ZjBjYzQ4ZmRkZTNhYzM0NTVjZmNjNjEgbGVnYWN5LXRydW5rCiszMDc1MSAxOGYwNzJkMTQwYTljN2ZlNzVlZTRiMTQ1MTRjNmM3MTk5MmYyZDdjIHJlbGVhc2UyMi1tYWludAorMzA3NTIgZmQzYjA3MTFiMjVmYjA1NWZhZjBiYmQ4MzgyNzc1Y2Q4MmM1ZjQxYSByZWxlYXNlMjItbWFpbnQKKzMwNzUzIGVlYmM0ZmRhYzU5NGU2OTJjZjFmMDgwMGUzYTFkNDg4YWE1ODdiM2IgcmVsZWFzZTIyLW1haW50CiszMDc1NCBlOWY0NWI4ZWZkNmI0ZDdjODc2YjQwZTViZjI0YTY2YzY1ZmEzODJkIGxlZ2FjeS10cnVuaworMzA3NTUgOGJkNmIyYWUyODc0YjA3OWZiMGU1YWY3YmM5NTFmNTEwMWJlZjVmYyByZWxlYXNlMjItbWFpbnQKKzMwNzU2IDNlZGU5MGQ2ZTFjZjEyNWEwMjAzYjQ5ZWYzYzc0OTg0OGQ4ZjE3NWEgbGVnYWN5LXRydW5rCiszMDc1NyA4NGE4ZTdkMWRhYTk3Njk4MTVkOTlkNmQzZWU3OTU4NTI5Yjc2NWM2IHJlbGVhc2UyMi1tYWludAorMzA3NTggM2JmZGJjM2RmYmNlOTI4YzkxNzFkYzQ4YTg3MTc4ZjU0ZjE5MmI0MSBsZWdhY3ktdHJ1bmsKKzMwNzU5IDBhNmI4ODE5MGI4YjFkM2JlZjUyYTljZTQ3MzUyN2VjZTVhOGE5ZTIgcmVsZWFzZTIyLW1haW50CiszMDc2MCBmNTlkODBjN2UxYmI0ZDE4ZjkwMDBkNTAxZDAzMWZiYzlkZmNmNGU4IGxlZ2FjeS10cnVuaworMzA3NjEgZjk1ZTlmM2M5ZmVhNzhkNGQ3MTdlZGEwM2QxZjUwZDg2NDg3NDYxMCBsZWdhY3ktdHJ1bmsKKzMwNzYyIGE3NzA2ZDRjNjkwYzIwYWU2MWVlODE2ZDJkOTNkNDVhNGZkMDhiZjEgbGVnYWN5LXRydW5rCiszMDc2MyAzYWZiZDU1ZmIxOGZhNGFiMTNhMzhjZjFiMTRkMjE1MTYzZTc3NDRhIGxlZ2FjeS10cnVuaworMzA3NjQgYjNmMTA1Mzk5ZDIyODExZGJhNWQxOTlhOTU2NjBjNDY2MWY0NDcyNCBsZWdhY3ktdHJ1bmsKKzMwNzY1IGQzYWI1MzJiM2I2ZDZlYmIyMGE3MWY2YTI1ZjJjYzk1ZjE2NzVmMWUgbGVnYWN5LXRydW5rCiszMDc2NiBhNTZjM2M1NjI4OGI5ZmViMjdkYjViYTkwOWRkNDUyYjU3MGQ4ZDg4IGxlZ2FjeS10cnVuaworMzA3NjcgNWRkYjkwZjgxNjlhNTg5MzlhZTQ0M2IwNzcyNGI3YmRhYjAyYjgyYyBsZWdhY3ktdHJ1bmsKKzMwNzY4IGM0MTUwZjdmNmE2OTYxNTI0YWU4ODg3MjA3NzAyZTJiNzc1N2I0ZjEgbGVnYWN5LXRydW5rCiszMDc2OSA3YzM0ZTViZjJlMjJiMWY4NTg5ZjgyNzVlZmVlZWNlZTMyYzEzZjJiIGxlZ2FjeS10cnVuaworMzA3NzAgMTZhODc2NzQ2Mjg1MGM3NDZkMDI1YzM4ZmFiZGQ4YWMwZjQ3ODJmZCBsZWdhY3ktdHJ1bmsKKzMwNzcxIGM5OTQ5M2FiYTA5OGQyNTNjMmRiNzhkMTk2YTE2NDU5MWVhN2Y2ZTAgbGVnYWN5LXRydW5rCiszMDc3MiA0MGNkNzQ3ODI2MDA4MTFhZDAyODdlNzhjNGQ4MzcyN2Y2NWQxN2JiIGxlZ2FjeS10cnVuaworMzA3NzMgMWNhN2IyZDY5MjQyNWRjNjdiODQwOTMzNmNhYTVkMzhiYTRmNDRmZiBsZWdhY3ktdHJ1bmsKKzMwNzc0IDI2MTU0NzcwMzQ0M2RhYjQ1NDA5N2I1MGQ1MTU1MWMwNTI3NGQ2ZTMgbGVnYWN5LXRydW5rCiszMDc3NSBiYWZmNTZhZGZiYzMzODI0OGY5NWViYTc5ZjU3NzVhNDFlYzVkY2Y2IGxlZ2FjeS10cnVuaworMzA3NzYgYWU4OWI1NTYwNTBhZTA1NzJmNGM2ZGViZDU3MjkwMDQ5ODczY2E5MSBsZWdhY3ktdHJ1bmsKKzMwNzc3IDNmYmZmZDczNmQ5ZDA0YzIyMDg4OTZlZDQ3NjkyM2Q2ZDNmOWJjNmEgbGVnYWN5LXRydW5rCiszMDc3OCBlOGMxYTk1NDJmNjZhNjY4ZDc4ZjdkMmZmYmU3OGNlYjNmODg3NTFiIGxlZ2FjeS10cnVuaworMzA3NzkgZmFmMjU2YTU5ZWNlYjI5Mzc3N2YyNzY0NzI0NWU1NGJlMzQ0MDNlYSBsZWdhY3ktdHJ1bmsKKzMwNzgwIDRjZGI1MDFhYjZhMjE3N2FmM2JkYTA4ODIyNzY4NTZkOGQ1N2Y0NWMgbGVnYWN5LXRydW5rCiszMDc4MSBmMDU3NjRkNzA4MmNjMWEwYTFhMmM3ZmI2MTcyZjkxM2I5NWIyOTMwIGxlZ2FjeS10cnVuaworMzA3ODIgNzc0MjhlODM1ZDY3ZWQ4MDYzNDA4YTRmMTllY2I1MWQ4Zjk3Y2UzNiBsZWdhY3ktdHJ1bmsKKzMwNzgzIDdhY2Y1NzQ0MGY0ZTA5ZmU1YmVmY2NhMDg1NTljOWRjM2Q1ZTQ4ZTQgbGVnYWN5LXRydW5rCiszMDc4NCA4ZDBlMDdjMjcwZWY5YjMxMTQ3NzRjYWJlZjM3ZTA1NTg4YmQ5OTQ3IGxlZ2FjeS10cnVuaworMzA3ODUgYWY4MTExNzI3MTdkMGEzMTAxNGVlZGZhZTU0NGQ0N2FiNjU2NGEyMSBsZWdhY3ktdHJ1bmsKKzMwNzg2IGE5ZGRhZGY3ODllYWI4ZjY5OGRhMzczZTdjNzI5YTczZTYyNGYzNGQgbGVnYWN5LXRydW5rCiszMDc4NyBiNzQ0NTA4ZDViMTI2NDZhZjIwYmNlYzI1MTRhYzNiMTEzZWU5YjdhIGxlZ2FjeS10cnVuaworMzA3ODggYmUzZDFiN2U2MmRjMjY5Y2JiODQ3YmRiNDFjZTEyODdiNDE0YjliNyBsZWdhY3ktdHJ1bmsKKzMwNzg5IGRiZTRmNTdlOGJiMjk1NmNjOThhZTlmMjE5NzMxMjI5MDM1YzRmNDIgbGVnYWN5LXRydW5rCiszMDc5MCAzOTJmZWVjZDJmMWM3MWVkOGI3M2NjOTI3MWUwODE2ZWRlZTI4ZDNiIGxlZ2FjeS10cnVuaworMzA3OTEgOTFkNjc4YTk0YzczNjNmNTBkZTlkOWY2NzMwMmRjMDA0ZjJjYjFjOCBsZWdhY3ktdHJ1bmsKKzMwNzkyIDY0ZDNmZTkwNGEwYWY4ZDY3NGIyNGVhZTA0NWRkNWRmMzkzN2FjYmEgbGVnYWN5LXRydW5rCiszMDc5MyBjZGE1YWI2MjU3NzRmYWRkNTIwMjk3OTQ1ZDk0ZTIyYTY2MjY1Y2VjIGxlZ2FjeS10cnVuaworMzA3OTQgZDJhZTVhZmZkZTE0ZTc5NjQwMTJhNDYxNzkwZjY3YmNhNmZjYTk2ZiBsZWdhY3ktdHJ1bmsKKzMwNzk1IGJlZGI3NWQ5MGUwM2MzOTlmMmUwMTZmNjE4MmVhMzdhZGFjMDMxMzcgbGVnYWN5LXRydW5rCiszMDc5NiA3ZmRkNWQ2MmM2MTVhZjIwYWY2NGI5ODEwMmE1YzE5ODhmZWJlODVkIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMDc5NyA5ZGE0M2NkZThhMTY2MWU2OGM0NTVmYWFlOGU0NzZmZTViNDJhYzg4IGxlZ2FjeS10cnVuaworMzA3OTggY2JmMzU1ZjI4Y2E5ZjY4OTI4Nzg5OTE0OWM5YTMzNDEwYzdlNWUwZSBsZWdhY3ktdHJ1bmsKKzMwNzk5IGM4MjM0ZTI2MTE1YzY2ZDRhYzliNDhhMmJlYzZlNjE2NGUyYjZiYWYgbGVnYWN5LXRydW5rCiszMDgwMCA5ZGUwNjRjN2EyNDdmMTFmYzM4ZTA0YmNmOWE3NDIxMDAyZWU1MTgxIGxlZ2FjeS10cnVuaworMzA4MDEgODdiNjZiNmZmNWU3NmY3NzAyZWEzZWI3NDU1MDczZTNlNTQ0ZGY3NCBsZWdhY3ktdHJ1bmsKKzMwODAyIDVhMDUwMjAwZjczNjU4NmM1ZjhkNTBjZGRkNzdmZmJmN2M5ZTg4NjUgbGVnYWN5LXRydW5rCiszMDgwMyBjNmY0OWI3OTc5NjNlY2JmZjk4NWFhNGJlOGM3ZGFhZWQ2YzQzN2ViIGxlZ2FjeS10cnVuaworMzA4MDQgODY2NzU2ZjY3MGZmZDU4NDUzZDE1YWNlMDBhN2I0YTg3NWQ4ZjE1OCBsZWdhY3ktdHJ1bmsKKzMwODA1IGRmMjc1NGFjYTcxNzA0ZjRiYTQ3ZTg0NDNhYWNlNDVjNWZjZTYyZGYgbGVnYWN5LXRydW5rCiszMDgwNiA0MGU1ZWI5ZTA0ZTBlODM1YWI1Y2U1ZjY1ZWM1YzIxMDllYjkwMWEwIGxlZ2FjeS10cnVuaworMzA4MDcgMDRlNTYxMGM1ZWZlOTdhZjQ1OGZjZGQ0NjYxZWM3ZDc0NjVmYTVlYiBsZWdhY3ktdHJ1bmsKKzMwODA4IDg4ZmFhOTg1ZDk4YzNmMzY2M2EwNzM2NzZkNTAzY2ZiYzA5YmU4MjUgbGVnYWN5LXRydW5rCiszMDgwOSA5N2Y0OTRiZjczMTkwYWQ5YmQwNmIyYmJhZTViZDg2NzFiN2E3NTY0IGxlZ2FjeS10cnVuaworMzA4MTAgNzVkYTQ5OTc3NTcxYTRlYWI5YTE5MmIwMmE2YTJhYjhmMTMxM2ViNiBsZWdhY3ktdHJ1bmsKKzMwODExIGU4M2E0MmE5MGRmMTYzOTZhN2FmYmY4NzVlZDQwZThhNWZkN2U4ZTMgbGVnYWN5LXRydW5rCiszMDgxMiA3MDM5Mzc1MjI2YTdmMjYyN2FmMGI1NTQ1OGRhYmEwMTI1MmU3NGI5IGxlZ2FjeS10cnVuaworMzA4MTMgZDdmODAwMjgzMDFkZWI3NGEwMWY1ODU1MTI3M2ZkZDQxMWQ1OTNlNyBsZWdhY3ktdHJ1bmsKKzMwODE0IGJmYzE0MGM3ZTNkMDY1MWYwM2EzOTM5YWViMTJkZWQ5ZjQ5ZjM4YTcgbGVnYWN5LXRydW5rCiszMDgxNSA3MDU1ZjRjMWVkY2MzNDFlN2Q0YzQ1NGQ2YTE5NGM2ODUwMDdjMjhiIGxlZ2FjeS10cnVuaworMzA4MTYgYjgzODc3MzBkZDhmZjQxNWU3OTI3ZjZmYTJkNDQzODNhODgwNzYwOSBsZWdhY3ktdHJ1bmsKKzMwODE3IGMxYzQ1NDc1ZjE3MGU0MGU3ZTkyY2RmNTIzOWYwNjg3ZTgzM2RjMjMgbGVnYWN5LXRydW5rCiszMDgxOCA4MTU1MWFkZjEyZjZkMWVjZjI0NWM4OTk4NmRkNzdhNzM0NmNlOGFlIGxlZ2FjeS10cnVuaworMzA4MTkgMDVmZjkwNGVlNGUwN2I2YzY2Y2Y3MmE1OGUyMDhkY2U3NDQ3YmNmYSByZWxlYXNlMjItbWFpbnQKKzMwODIwIDRmYTlhZDg1YzNiMTVkYzJkZjhiZTg2NTQ1YWI3YzlmNzU1YjgwM2QgcmVsZWFzZTIyLW1haW50CiszMDgyMSAxMzY5ZDI0YmM4NjFkY2EyNjg3MTU4ZGU5ZDAwMTQwNWUzNjgyYjkwIGxlZ2FjeS10cnVuaworMzA4MjIgNWE5NzVlODJkNzBmYjViYzA0OWNkNDQ2MjBkOGVkN2FhZDU5NDFmMiBsZWdhY3ktdHJ1bmsKKzMwODIzIGRlODAxNzMzZWMxODg3NWJjMmNiNmQ4ZDM2MjY3ZDE1MjU4OTEwNTggcmVsZWFzZTIyLW1haW50CiszMDgyNCAwZjhkMTg5MzEwYjQ1YTlmZGI2NDU0M2Y1NGU4Y2VlOTI4MGFmM2ZlIGxlZ2FjeS10cnVuaworMzA4MjUgYTU1NTIzMGJlM2NiMDA3M2IzZTgyZGFjYWIwYmI3ODU3ZmI1ODlhOCBsZWdhY3ktdHJ1bmsKKzMwODI2IDcwNDYzOWQyMGE2Y2Q2MjViYzBhMzEyYjY3ZjVlYjRlNDE0ODg3OGIgbGVnYWN5LXRydW5rCiszMDgyNyBlYTc2ODBlYWY5MzdkZjczODI2NDI1MmQ1NTYwNzM2ZDAwZjBiZjc1IGxlZ2FjeS10cnVuaworMzA4MjggZGFkZDE3OGI2NWZhNTY4YWUwZGE2Yzg1ZTA3OGEwZDI5ODU4YWUzMSBsZWdhY3ktdHJ1bmsKKzMwODI5IGZmMTc5YmFkZTNmMGRjMzllNGJkMGE5OWNlNWMzMmQ5ZGEzODdmZTggbGVnYWN5LXRydW5rCiszMDgzMCAxODU4NDcxNDBjYTVkYmRkYTExZmY4ZjJiMWUzMjYzZDhjMWFlY2MyIHJlbGVhc2UyMi1tYWludAorMzA4MzEgYTJmODRkMjgzNWZhZjgyNWQ4ZTAzZTRjNjFkNDJhNDcyYjQ5ZTAxMiBsZWdhY3ktdHJ1bmsKKzMwODMyIGVhYTYxMmE0MWRkMGQ2OWViMGQ5ZjA5NTcyYmEzMGFkNWJkNDY0ZTAgbGVnYWN5LXRydW5rCiszMDgzMyA5MjIwMDk4ZjAzMjdlOWIyYzAxMzBjNDgwZTg3ZWYzNjhmNTM4OTdjIGxlZ2FjeS10cnVuaworMzA4MzQgYzY4MjkwNzkwZDUzZDZlMDFkYzMyMjcwZGQ0MDk0YzgxMTJmYzZjYSBsZWdhY3ktdHJ1bmsKKzMwODM1IGNkYWIyYjc0ZjMwN2VhZDYzNzk3NTY4ZTU5NTQzZjYzYjM5MWQ1ODAgbGVnYWN5LXRydW5rCiszMDgzNiBlZmEyZjhhYmIwMmM5YTYxNWIwMDRiODkxZjM0ZTk0MzI5Y2Y4Y2RhIGxlZ2FjeS10cnVuaworMzA4MzcgM2M3MDIzYzllOGUyNjcxYmRjZGQ3NjRiZDk1Njg5M2M2YmNlNzczZiBsZWdhY3ktdHJ1bmsKKzMwODM4IGQ5NjZiYjU0YjNkZTBkOGU1ZDc1MDQxZjgxMTVmMmY0MDk5MmY0ODUgbGVnYWN5LXRydW5rCiszMDgzOSA3MDY3ZDM2YzNjZjQ3MDE5NTYxMDc1Y2NiNTU3MDkzMWE1NWRmODVhIGxlZ2FjeS10cnVuaworMzA4NDAgNzVmMzhjNDE1ZTdkNGQwN2M4NjRiYjAwMTJiZmVhYWQ4YjljMjhkYyBsZWdhY3ktdHJ1bmsKKzMwODQxIDE1NjJjMWUxMGI0OTdkYTk3MTQ4Y2VmOTZjMjBkNmNhYzkzMDY5ZDkgbGVnYWN5LXRydW5rCiszMDg0MiAyOTllZjJkYWJiNTJjNjYyNGMwMzdmYjM2MzM3ZjljZmQyMTU2NjEyIGxlZ2FjeS10cnVuaworMzA4NDMgODhiZjEwMzEzNTg0ZGU0MTY3ZjM4Njc0MDU4Zjk1NzQ2OGU1MDI4MiBsZWdhY3ktdHJ1bmsKKzMwODQ0IDFiNjIyOWFkYjNkZjlkZjAyYzQ0YTY5ZjFlYzQyOWFlMzViYzQxMGMgbGVnYWN5LXRydW5rCiszMDg0NSBkNWEzMzg2Yzc2ZjQ5NDU2Y2I1MDViMWY5ODI3MjA4MDdlMjU2Yjg0IGxlZ2FjeS10cnVuaworMzA4NDYgYzQwNDg3OWNmOTk5YjAzMzA1ZTExYjE5YWQ0NTBmNWQ1Nzc0MjQwYSBsZWdhY3ktdHJ1bmsKKzMwODQ3IDQ0ZTM1MmQ3ZDUyZmZiYjQ0ZmFkMTBkNzIxYWYyNTAxNzZjNTViZmQgbGVnYWN5LXRydW5rCiszMDg0OCBlMmRhMGRmMzYxM2QxY2EzYWM0YWIzODg3MmEyMDM4NjFkNTU5OWJkIGxlZ2FjeS10cnVuaworMzA4NDkgNjgzMzM5Yjg1MmFiZDQ5YjliZGE2YjY1YmZhNWRiMDcyNGJmMjdiYyBsZWdhY3ktdHJ1bmsKKzMwODUwIDg3MDQ1YThlYzU0NzE3OTE2MDMwNzE3NWU5OWE4ZjA0OTFjNTMwNTUgbGVnYWN5LXRydW5rCiszMDg1MSA2Y2RhN2M2MTIxNTRhNzY4Njg1NzhjOWRkYTk1MmM1NmY1NDJjMjA0IGxlZ2FjeS10cnVuaworMzA4NTIgYTBhOTE0NzIzYzQ4MGI3MTI2YzE5OWQ2YzQyY2IyODBhMzZlZDdkMyBsZWdhY3ktdHJ1bmsKKzMwODUzIDU5N2FhOTk2NmVjNmJiMzMzMDc3YTg3NjRjZjA4ZTFmNzIxNWM0ODQgbGVnYWN5LXRydW5rCiszMDg1NCBmNGM2OTRhMDE0MjU2ODM1YjdjY2EwYWM2ZWQ1ZjQ1NGNmNjYxNzY0IGxlZ2FjeS10cnVuaworMzA4NTUgMjJmYjc2YzUzOTI2NzUxNmRkNjFjNjVhZTcyOGNmNWNiNWZhZmEzYyBsZWdhY3ktdHJ1bmsKKzMwODU2IDJjNjQ5YzdhZThmM2YyYmY3YzRhZTFkMDBhYzZhMTEyODc4NjJkMGMgbGVnYWN5LXRydW5rCiszMDg1NyBjYmNhMGJjZjFjMzFlOWVhY2Q5MWQ3MTlkMDhiNzc0YWIzN2E3ZGE1IGxlZ2FjeS10cnVuaworMzA4NTggYjQ3MGNhODRmZDJiNWVjOTllYTY5ZDZhZjFlOWJlNTNjMjI4ODJhMyBsZWdhY3ktdHJ1bmsKKzMwODU5IGU4MDQ1NmFkMTk1YjY4ZDgwNmViNjYwNmJiNjFkMjEyNDEwN2ZjMmEgbGVnYWN5LXRydW5rCiszMDg2MCBkMzRlZjAwZDlkYThhMDg2MDg2NDQzZjcyNWY4YTg2M2Q3YzRkMWE5IGxlZ2FjeS10cnVuaworMzA4NjEgOGI1M2IwY2UwNmQ0NThlN2Y0MWFlNjAxYWEyNzI0YzRkYmNhZjJjYiBsZWdhY3ktdHJ1bmsKKzMwODYyIGJhNjNkNzE3Yzc1ZjAwMDRjMGJjZWFjNzEyNGU1YjlhM2IzY2EyMjEgbGVnYWN5LXRydW5rCiszMDg2MyA5ZmUzNmFlMmE0YTJiMmE4NWY0YmJkYWQ4YTQ5NTNiYzE0YzYwMjAyIGxlZ2FjeS10cnVuaworMzA4NjUgOWJlMzE0OWZiZWU3MTdiNDYzYTg4YWQ0NzI5MGFhZjk3ZWJkZGZjNSBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMwODY2IDQxMmU2NmUzNTMwZWU3ZjBiNjcxMjc0OGZkZDgwYmJiOWZmNGI1YzIgbGVnYWN5LXRydW5rCiszMDg2NyA0ZjU5OTgxZjc4MTdkYWMxMTU5MDg5MDQyOWIzNjQ5N2VhZjQ1MjcwIGxlZ2FjeS10cnVuaworMzA4NjggMTgwMDY3YzI4ODBmZWU1YzRkNDZjYzgyMjRkYzM0ZTk4ZDllMTcxNiBsZWdhY3ktdHJ1bmsKKzMwODY5IDIwNTVkMDM3Mjk1Y2YwOTk4YzBjOTBjM2NhZGJmYjEwZTNmNzIxY2IgbGVnYWN5LXRydW5rCiszMDg3MCAzMGRhOGM5NmZkMjllZjM2NWI4OGZjOTZhZTI5NTA0YzA4YmJhNzNlIGxlZ2FjeS10cnVuaworMzA4NzEgNWFjZjY5NjdkNmRkMzcxNDg2MGRjM2RjOTZmMTkwYzAzOWY4YWU5OSBsZWdhY3ktdHJ1bmsKKzMwODcyIGRkYjUyZjU2NzNkYjVhODUzZTcyNWZlYjY1Zjc4ZWMxYjE4OWRlODQgbGVnYWN5LXRydW5rCiszMDg3MyAyMjk5MmZhNTE4MzEwZmVmMThhODVjMTg5OTQwODE2MmQzMTI2OGI5IGxlZ2FjeS10cnVuaworMzA4NzQgYmJmMTQxODViZjFlN2U2YjZkMjkxZTExODRhYzU4OGJlNDEzMjExNiBsZWdhY3ktdHJ1bmsKKzMwODc1IDQwNjc3ZmU4NTAzZDMwZTBlMWMxYjhlZWU1MmUxYWQwZGViOTE3YzUgbGVnYWN5LXRydW5rCiszMDg3NiAyN2FlZGNmNDZiY2M5MmZmM2YxNzk0ZGRjYjgxMTc5OGViMDMyNzNmIGxlZ2FjeS10cnVuaworMzA4NzcgNDI4YzhhNDIzMDQzZWFkZDM2NWI2YTg2MzNhNjliM2E0ZTM1NjIwMSBsZWdhY3ktdHJ1bmsKKzMwODc4IGRjNjExNjI3ODI1OTNkOGM3NDBkZmUxZDg4MGI1MzEzOGNhMmVhMjggbGVnYWN5LXRydW5rCiszMDg3OSA4ZGIyZTc0ZGRiMGU1YWE0ZjRmMGVjZmNlZWM4YzhmMjQ3N2I3MDkzIGxlZ2FjeS10cnVuaworMzA4ODAgYWZkMWRjNjJlMzU0ZGVlMzNhYTM5Y2M0MzhhZTJkOGY1NjI4YmFmYiBsZWdhY3ktdHJ1bmsKKzMwODgxIDU4YmFkNzY5Nzc2ZTU5OTllNGFkMzMxM2Y3ZTNhMjAzNjI4ZDk4NjQgbGVnYWN5LXRydW5rCiszMDg4MiAwNGU0NTY1ODMyYmRkMzljOGI0YjYzYTRkZjFmZmQ0MWU5MmFjZjBkIGxlZ2FjeS10cnVuaworMzA4ODMgMjczYjJiNDliZmQ4Njg5OTg2MDRjNGZlMmI0ZjZmMWNjODZkNGEyYiBsZWdhY3ktdHJ1bmsKKzMwODg0IDg5MWVjNGQyNjZkMTc4NjdlYjBjMzNjMTg0ODk2NDFhOTUwZThhMjAgbGVnYWN5LXRydW5rCiszMDg4NSA0YTQ5YjVhYTVkMjEyNzE4YzQxNGY1ZTJmOTE3ZGNhNjIxNGYzMjc5IGxlZ2FjeS10cnVuaworMzA4ODYgZWIxZTUyOWZkZmRmMGQ0YjljMmQyMjkyNTg4NmQzYmZkOTNhMDhjMSBsZWdhY3ktdHJ1bmsKKzMwODg3IGZkZTc4ZDgwZTA5ODlkMmEzNDAzYWYzYzk1ZDVkM2RhZDkzZGI3ZmUgbGVnYWN5LXRydW5rCiszMDg4OCAwMGYyOTRiZjgyOTlmNjE3NjIzMWU5ZjY1MTA5MmNlM2QyYWRjYmQzIGxlZ2FjeS10cnVuaworMzA4ODkgNjE0N2JjMTRkMjc3YjZkYmQ1NmFjZWRkNzA3MWMwZGQ1Yzc0ODk0OSBsZWdhY3ktdHJ1bmsKKzMwODkwIGZmMGUxZWQ5OThkZWRhYjNjZjcxNmU1ZTBhMDk1OGEwZmYzZTYzMjkgbGVnYWN5LXRydW5rCiszMDg5MSBjMWRjNTBkZjU3OGNkY2ViYTVmMjVkMjQ2MWFlZDcyMGQxMzM5N2I2IHJlbGVhc2UyMi1tYWludAorMzA4OTIgMTNiZWVhMmQyZDI2YWExYTFmNTFhMWFjODRmYzQ5NDM0NDAzOWY3MiBsZWdhY3ktdHJ1bmsKKzMwODkzIDljNGI0MjA3ZTk3OWRjM2JmYzA0NjA5YTg0MWYxZTFmZDI5NGZhYTAgbGVnYWN5LXRydW5rCiszMDg5NCA1YjNmYmZmMDVmZmRhOWIzZmNlMjA5YmU3MGQ5ZjJiMTEwNDU2ODUzIGxlZ2FjeS10cnVuaworMzA4OTUgYjcyNTY0OTZjOWIwMWM3NDYzZmExZDFiOTg0OTJmM2ZiOTRlZGJjOCBsZWdhY3ktdHJ1bmsKKzMwODk2IGQyOWM3OGQyN2M1ZTNiODhhZDhmMTllMTc4NjliMzE5MzU4YWI0MjkgbGVnYWN5LXRydW5rCiszMDg5NyBiZTE3OGFmZDQxODE0NTExZmVhODhlNDQ2NzU0NDgwZmQyMTdhNjJkIGxlZ2FjeS10cnVuaworMzA4OTggZTJkNzlmZmEyOTI4YzQwZWFkNGUxNWRkYjc4MWU1MTYwYzU4OGM4YSBsZWdhY3ktdHJ1bmsKKzMwODk5IDg0MGU5ZmVkOTA4YTFmYjg1ZGZlZDVlMjE1NTZmOWNlNDVlNDRjNjcgbGVnYWN5LXRydW5rCiszMDkwMCBmM2JhYmFlZGUxODlhMGI2YTNhMmNmZDdmMjdhOTJkYWMxMjk5Yzg0IGxlZ2FjeS10cnVuaworMzA5MDEgODE1NjljY2RlNWJkZjAwZGY2NWVmNzVmZGRlMTRiYzg4NGU3M2E5NCBsZWdhY3ktdHJ1bmsKKzMwOTAyIGE0NTc1MzFjMGZkNDk1MTA3MjE3Njk1MGUwNGYxYzE3N2YwZjc3MzQgbGVnYWN5LXRydW5rCiszMDkwMyA2Mjk2MDNmNjQ0MTI2Y2EzNTJjMTE5OTcwY2RkMTczYmMzN2Q4MDA4IGxlZ2FjeS10cnVuaworMzA5MDQgOGQ4NjlmOTIxZjIyNjQyMTI3Zjk5ZjAyODM2MDRmMmIxMTllMzYwZiBsZWdhY3ktdHJ1bmsKKzMwOTA1IDliY2Y4NWQwMTM1YzJlNzRhZmU4YzgxNzIwMzRhZDA2YzllYTdkOTggbGVnYWN5LXRydW5rCiszMDkwNiA1MTc0YjRhNzFlNmU0Yjc3NGZhOTVmZjY4ZjI3ZTU2Y2JiOGNlODY3IGxlZ2FjeS10cnVuaworMzA5MDcgZDM2M2Y4M2MyODQ2YTUyZjU3MjNlMTU1Y2QyYTY4ZTEzYjAzMGY3YyBsZWdhY3ktdHJ1bmsKKzMwOTA4IDkxYTU3MzI0M2Q1ZDc5ZWFhNTA4Mjc4Y2FiYWRhNTU4ZTk2OTEzMDAgbGVnYWN5LXRydW5rCiszMDkwOSAwMTU2NDdjN2UxODQzMzY0YTY2YTNhMGY5YTk2NWEwN2YzNjg2N2E5IGxlZ2FjeS10cnVuaworMzA5MTAgZjljNDhlZDY3YTkzYWQ2ZWE3OTA5NTA0NTBkMjZjODg0ZmVlYWY3NiBsZWdhY3ktdHJ1bmsKKzMwOTExIGU3Y2RiNTAzZDFlMDViYWU5MTg0YjM3NGQ5M2NiY2JmN2NlYjJmZjcgbGVnYWN5LXRydW5rCiszMDkxMiBhYTk0YzgyMGIzZWQwMmRjZDliNDYyZTRiNzk1YWZlNjBiNTBjMjE1IGxlZ2FjeS10cnVuaworMzA5MTMgODgyZTNlZWFjM2RkN2EzMDYwNWEwNmExNmY0ODlhYTc1YWE5N2UxNyBsZWdhY3ktdHJ1bmsKKzMwOTE0IGU3Y2QzY2MxMTJkMzAwMTA5MjQzNTM3Nzk3ODkyY2FjNTMzYTYyMDMgbGVnYWN5LXRydW5rCiszMDkxNSAyOGIzZDlhOGVlMWEzMzZhYTk2YjAyNTVjOGJkODY1ZTU1OTEzZWU0IGxlZ2FjeS10cnVuaworMzA5MTYgZTdiZTY4NjgwMzMyNmU0ODA4MWYxYzRhZDE5NmM3ZDFmMDljNDMyNCBsZWdhY3ktdHJ1bmsKKzMwOTE3IDEyMzU5ZTUzNzUxMmMzMjhjZDIzZjgyMWRkZjFkOTkxNmY3ODI0YTggbGVnYWN5LXRydW5rCiszMDkxOCAwMDY0MDcxNGE1OWE1ZDg4ZDhjM2Q3MTYyMzg5MjVmNjA1YTIzOTU4IGxlZ2FjeS10cnVuaworMzA5MTkgZjFkZDkwMzU3ZGNiYTE3Y2Q4MjljYTBkNDI0YjhlYjk3N2JiNDgxNCBsZWdhY3ktdHJ1bmsKKzMwOTIwIGVhZjNmODA3MDBiM2Q1ZDE5Yjg5YmZhYjg5OTc5ZTIxNjZhMGY4MzQgbGVnYWN5LXRydW5rCiszMDkyMSA0Nzk1OGM5OTQ1MmRlMzZlMmY4ZTAzYzNjY2FlMjhlZjc3OGE5YjdmIGxlZ2FjeS10cnVuaworMzA5MjIgZDE2YTk3Nzc0NmEyMzdjNjI0ZTQ5NTM5MGYzODRlMjU0ZTYyYjdiMSBsZWdhY3ktdHJ1bmsKKzMwOTIzIGRhMGM5OTEyNTVjMmVmNjQ4NDMxZDA0ZmQwMWVhZGY4ODZjNzYyMDYgbGVnYWN5LXRydW5rCiszMDkyNCA0MTcyYjI4NmQ2NThjN2ExYjhhNWUxNjViMDc1ZWVlYjNhMWNiZTdlIGxlZ2FjeS10cnVuaworMzA5MjUgZTk0NWEwM2VlNTZjNjllZjU3ZDg2OWRhYTBmOGZiZTY1ZmI1MWYxMSBsZWdhY3ktdHJ1bmsKKzMwOTI2IGFlZDJlZjk2ZWQ1NGQ3OTU5YmM1MzFiYjIwNWJjMmIxYmYyZmMxYzIgbGVnYWN5LXRydW5rCiszMDkyNyA2ZWI1ZTFhMDliOTVkNWU2YTkxYTczZDA2NjFlMTJiODEzMjkwOGVlIGxlZ2FjeS10cnVuaworMzA5MjggYWNlZGVjZDIwMTI2YWRmYjMzN2Q0MTFjMmU5NDcwYWJiODAxZjdmYSBsZWdhY3ktdHJ1bmsKKzMwOTI5IGNhYTZkZjllMDg4MDVkY2M3NTRhNzNmNDBjMDk3ZmRlOGEzNjU1ZDcgbGVnYWN5LXRydW5rCiszMDkzMCBkMTliYzNiMTgxM2NiNTE4Yzc2YmRlYTIyNWY2MDIxMTEzOThmYmZmIGxlZ2FjeS10cnVuaworMzA5MzEgZWE1ZWUzZTdiZmIxMGE3OGZhODg3MTk5NzcyNmQ0ZGYwMWE5YmM0ZiBsZWdhY3ktdHJ1bmsKKzMwOTMyIDFmZDA0YzM3NDA5YWIzZWI1NDdlMDBkNWYxZDlkMDg1MTI2MDlkM2YgbGVnYWN5LXRydW5rCiszMDkzMyBhMjRmZDQ1YWNlYjE4YmZiMjE0YTQ5Nzk3YzAzYzBkNzcxYjY2ZDZjIGxlZ2FjeS10cnVuaworMzA5MzUgNTZkODNkMGM1NWI2MGZjMTdmOWJkNjc0NDE0ZWMwYWZhZTJkODNiZiBsZWdhY3ktdHJ1bmsKKzMwOTM2IDU1MGMxNWM0OTE5YjE2MjgzY2M4MGJlYjRhNGFkODUyMGIyNWEwMmMgbGVnYWN5LXRydW5rCiszMDkzNyA1YzEzM2QxM2YzMjU2MmNjNDJmNzYxODI0MWI2NjBkODRiZTQ2NzUyIGxlZ2FjeS10cnVuaworMzA5MzggOTkyNGYyMmQ2NjA0ZTQyOTRiMzBiNmY5NmZhYjkwNmUxMzYyZDMyZSBsZWdhY3ktdHJ1bmsKKzMwOTM5IDI3NDJlYTkzYWIyMzNhNDg4Mjc2MTQ5ZmQzZDYxOTQ3NTZlY2MzOGMgbGVnYWN5LXRydW5rCiszMDk0MCAyMGRmMjRhMTMzNDkwMjllNmEyNTk1ZGYyNmM1OWZhYTBmZWRjMDE1IGxlZ2FjeS10cnVuaworMzA5NDEgOWU0MzBhY2NjZGI4ZjVjMDFlMDYzYjhhOWQyN2VlYTJlZWExZTI5MSBsZWdhY3ktdHJ1bmsKKzMwOTQyIDAwOWYzYWJiZjcyNjJhMjVhZmU4Y2ExZDAwMzIyYWUwMWZhNWNjZTggbGVnYWN5LXRydW5rCiszMDk0MyBjNzRjZWEyNDM3MmU4ZjVmMzIxY2ExM2E2MGU2MzlmZWFmMTkyOTQ3IGxlZ2FjeS10cnVuaworMzA5NDQgN2QzYzZhZDRlM2VkYzljMmNhZjI5YTgyM2Q0NGIzMzgwOGNlNjQxNyBsZWdhY3ktdHJ1bmsKKzMwOTQ1IDBhZWFhM2QxZTBmZjc5NDJjMTdhNzZlZjQwYjc2N2M4ODBlMjRiMzMgbGVnYWN5LXRydW5rCiszMDk0NiAyNGM4ZmJlYzc2MWYyMzFkN2YzOGYyMjg0OWI3ZWQwNDBiMDRjMzk3IGxlZ2FjeS10cnVuaworMzA5NDcgM2MzZTRjOGM0YTlkZmYwMjZiMmNjMTZjM2NiMDdjMjczMDkxN2MzMSBsZWdhY3ktdHJ1bmsKKzMwOTQ4IDkzYmE0MmNmNGU1M2FjZjhiMTEyYmVjY2E5ZDViNWMxOGUyZjM1Y2EgbGVnYWN5LXRydW5rCiszMDk0OSBmYTI0NTM4Zjg2NTBhNTYyYzU1MDE0ZTBhMjJkYmJhMGExZDZkYTk3IGxlZ2FjeS10cnVuaworMzA5NTAgZTI2YTJmN2YyMjRiNTlhNDIyMzg2MzlkNzQ0ZTMxYTdhYjQ4ODMxNiBsZWdhY3ktdHJ1bmsKKzMwOTUxIGJmMGJjODQ4MTUwMjE0M2IxYzdkYjIxMGViY2ZjOTgxODAzM2E4NWQgbGVnYWN5LXRydW5rCiszMDk1MiAzY2Q5ZGRkNTU2MmVhMDk5YmEyYWI2YjU4Y2JjYWNkMmFkMmFiZDg3IGxlZ2FjeS10cnVuaworMzA5NTMgYjQ2NWM5ZDIxOTZhM2NiYTg3OTNiZmUzYWIzYTFiNzhhMDMzMTgwNSBsZWdhY3ktdHJ1bmsKKzMwOTU0IDFhZTBiMTQyMzcwZTQwODRlZGE0Y2IyMjA0OTJlM2Y2YmNjYTAzOWUgbGVnYWN5LXRydW5rCiszMDk1NSBmOGE5MDA4NWFjYzQxZTlhMDYxMmJhYjc4YzhiYWJkNjMyNDRmZmY1IGxlZ2FjeS10cnVuaworMzA5NTYgNDA0NzgyMTQxOWI1N2E4ODU5MGMxOWQ4YjdlMTBiNGI4NjM2YzMzMSBsZWdhY3ktdHJ1bmsKKzMwOTU3IDM1NzM2NTkxZGMxZTdhNTMxZWMzMmQzYzk5OWQ3NGIwMzdhZDZiN2MgbGVnYWN5LXRydW5rCiszMDk1OCA3MTE2Y2I1YmFjNTA4M2Q0OWIyMmZiNWNlMmY1OWNjZGVjZWY2MjFjIGxlZ2FjeS10cnVuaworMzA5NTkgNDMwZWQxYzhlMDcxZGFiMDExNTQwZjNkYTljMjhjOWQyN2Y2MGU4NCBsZWdhY3ktdHJ1bmsKKzMwOTYwIDYwZmYxYmE0MjhjM2ZhMGIwNjRkZTc4MjkyYjkwMDUwZGQwNzZmNDIgbGVnYWN5LXRydW5rCiszMDk2MSA5MWFlMjkyYzNhOTdmMGNkMzhhMDJiYzNiMjlmYmI1YjE5NzgyMmE0IGxlZ2FjeS10cnVuaworMzA5NjIgMThlOGVkODBlOGQxNzQ4ZGZmNWYzZmI3NDBhM2IzMGNkNDVlYmYyYiBsZWdhY3ktdHJ1bmsKKzMwOTYzIGQ5ZDI0Y2UxY2JmNjU4ZDA3MzNhYWJkODMyOTA2NmRjMDc0MzU3NWQgbGVnYWN5LXRydW5rCiszMDk2NCBlNGE1Zjc1MzUwOGJjNTBiMDE1NDQ3YTE0ZGI1NmJkOTI4OGE2MGE2IGxlZ2FjeS10cnVuaworMzA5NjUgNWRiMmNmM2U3N2RiMzNjOTgwZmQwZTE0OWM4MGY2NzY2YjQ3ZDkxYiBsZWdhY3ktdHJ1bmsKKzMwOTY2IDZiMGRiZGUwZmVkNzE1YTI5OGNiNzQyMTFhZWQxZGZmNTljMjJlZjUgbGVnYWN5LXRydW5rCiszMDk2NyA4ZjEzNzI5YTk0YTk2NmExYTE4Y2E0N2Q4MTFkYzQ2NTk4NDRjMzUwIGxlZ2FjeS10cnVuaworMzA5NjggMWY2MzI3MTQwZmMyM2NmYjgwN2Q5ZjkxNmUxMzVlZmI5MTU5NGNmNyBsZWdhY3ktdHJ1bmsKKzMwOTY5IGExNjI2MmJjNjA5OGRkMDgwMTdjMzYxNjhmODRkNDNlMmJlMmRiZDAgbGVnYWN5LXRydW5rCiszMDk3MCA5MjVlZGY4ZTAwMGNhN2RmYWEyMTBmNzg4NmEzMTM0ZmMyOWRhYTE4IGxlZ2FjeS10cnVuaworMzA5NzEgZDhjMmM0MGIzODZiMTlhMGQ2Nzg2ZWViODcxOTExZjQ3MWJhNTU1OSBsZWdhY3ktdHJ1bmsKKzMwOTcyIGIzY2JlN2EwMTQyYTc4ZDk2NzU2OWU2YmQ3MzJjMmFiNjM0ZmU4OTAgbGVnYWN5LXRydW5rCiszMDk3MyAwYTQ3ZDgzMmE2NGI1YjRmMTNhMjBhYzg4NDI5Y2RiYTY1YmYzNjE5IGxlZ2FjeS10cnVuaworMzA5NzQgNDAxNWEyN2ExZDEzZjJjNzRkNjNjMjJjZjFlYmExOTQ2OTZhZWMyYSBsZWdhY3ktdHJ1bmsKKzMwOTc1IGEyMzBkMTIwMGJjMzViM2QyNjY1YWZkM2E5OWNiMTY4ZDA1Yjc0ZTYgbGVnYWN5LXRydW5rCiszMDk3NiA3ZmI1ZThhNTQxYWI4ZmNlNzNhZDY1OWY0ZTY4MjExYzBlODY5NTI2IGxlZ2FjeS10cnVuaworMzA5NzcgMzUwOWFkMDdkMTU2YWNiNmU1NjgyYjNhMWM0NGYxYjFmYTMwOTE2OSBsZWdhY3ktdHJ1bmsKKzMwOTc4IDlmZTMyMTU0ZDI4OTAyZWU2NWY3ZjkwMDlmNDQ1NGMwZmZjMzA4ZTggbGVnYWN5LXRydW5rCiszMDk3OSBiMmNlOWM2MzdhMmJjNjAyYzgyOTA0NzI1OTY2NWUxNWFlYzc0MTJlIGxlZ2FjeS10cnVuaworMzA5ODAgMTE1ZWU0MDUxOGE4NGRjYWRlYmIxYjhlZTA4Y2NhY2Q0YWE3ZmUyNyBsZWdhY3ktdHJ1bmsKKzMwOTgxIDYyYzY2ODkzYzJkYmEyYTQ1MDNkNDY0YTFhOTNhZjhlYjZhNjgwMWIgbGVnYWN5LXRydW5rCiszMDk4MiA0YzAzZWYwNmMzZmY3MDRmYTFkMGI4YzI4YjM2YWQ3NTAyMDUxZjUxIGxlZ2FjeS10cnVuaworMzA5ODMgZWE0ODA0MDZjYzY1NjIxY2YwZWU2MmQ1NDdlNjQzOGIzNWNkNmFmYSBsZWdhY3ktdHJ1bmsKKzMwOTg0IDA1NTRiN2M1ZjZkN2QyNjkyMDM5YzAwZjI1MmYxMWJhNDJiMmYyZGYgbGVnYWN5LXRydW5rCiszMDk4NSA4ODNhZjI4YjlhMGQwNjYwZWZiYjJmOTg3MTFjOWFiOWM5NDM5ODgzIGxlZ2FjeS10cnVuaworMzA5ODYgMjZhNzkyMDA3NjY1MjViOTUyZTZhZmJiNDdkODBkZjQ0OTkyNjExZCBsZWdhY3ktdHJ1bmsKKzMwOTg3IDJlZTk3NDJhYWRkODkyMTQ3ZTU1NDMwMjJjMDJiZTI2ZjEzM2I0Y2MgbGVnYWN5LXRydW5rCiszMDk4OCBlZDBkNGFlNmM2Y2U0MDkxODhjMDVmMWI2YzJiZDg5MTIxOGMyYjM4IGxlZ2FjeS10cnVuaworMzA5ODkgOGRjZTdhNWU1ZmNjZDI3ZWM1MGRiMjAxNWQ0MjQ4MmNmMTM5ODc2MCBsZWdhY3ktdHJ1bmsKKzMwOTkwIDc2NGRmMmZkYzljNjM2NzVlYzUwYTZkMmUwNzJjMWVlODc3MDU4YjAgbGVnYWN5LXRydW5rCiszMDk5MSBmNDkxMWY3YWFkMDI1Mzg1MjQwNmJjZjAyMGYzNDBiNDJjZTQwOTFhIGxlZ2FjeS10cnVuaworMzA5OTIgNmZmYWZjZWY5OGZiMzdmZDVmNDIxNTc5NmU2ZThjYTIyNjIwNzVlZSBsZWdhY3ktdHJ1bmsKKzMwOTkzIDVjNzU0OGJmMzc3YjIyODhjNmYzODU4ZWQwMGI4M2VhMDg0ZDJiMjkgbGVnYWN5LXRydW5rCiszMDk5NCAxN2Q4N2M1YmE2ZTRiNzE1MjAwNzJlM2Q3NTYyNmNhYzgxOGQyYjA0IGxlZ2FjeS10cnVuaworMzA5OTUgMDVmN2UxYzY1ZDdlODM4M2I2MzE3ZDkyNWMxODg1MDExNGZmY2I2NiBsZWdhY3ktdHJ1bmsKKzMwOTk2IGY0ZThhNmQ0YWE3YzM3ZTFiZjY0NGQ1MGI5OWJiYmVkYjhjMmNhNTMgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwOTk3IGY4ZDI4ZTgyYzRjYzk5YTNiZTEwMmE1NGFlOWU2ODhkMTY2ODljYWIgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwOTk4IGRlNDA2MTU4NGM4MzkxNTcyMjVmZDhjOTQxM2U2N2VlZjE0MzJkOTcgbGVnYWN5LXRydW5rCiszMDk5OSBmY2NkOWU5NDMyMTFhZDYzYjNlNjY2NzEzZTFiZTBiNjQ2NWI5YWI1IGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMCBiNzljMWFmZmYxMTI4MzUxYTg4MjMwMjg3OGMzZDMzNzQ1YmNiZjFkIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMSAxNTRiYWMwYjI2YTU0ZWMxOTA5MjZjN2M4YmI1NTRiNmE2ZjNiNzNiIGxlZ2FjeS10cnVuaworMzEwMDIgMzEwMTRmYmUyMGRiYjA4ODMwMTQxZTZhNzRkNzQ0NTY3MDJkOTllNCBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzEwMDMgMzhjN2MyZDRjZDVhY2Y0MzVlM2E1NjQ0MDMxOWJkODJjMjU5NDZkNyBsZWdhY3ktdHJ1bmsKKzMxMDA0IDkyNGFkZTgwMTA0YjE3Mzk2NjZhZDUxNzE0M2MwOWM5MDQ2MzVkMTcgbGVnYWN5LXRydW5rCiszMTAwNSBiYTkzMTBmZWY0OWRkODI5MzhkZWY4NzhhZDViMTBjYzdhMjcxNTQ4IGxlZ2FjeS10cnVuaworMzEwMDYgNmU4OWU4MGU2YTI2N2M1MTY0NjdkYjJhZjViODAxYWQwZTJjYjU3MSBsZWdhY3ktdHJ1bmsKKzMxMDA3IDcxMmIwMWQ1MmU4Y2QyYjNmOTViYThlZTk0NGEzYjI0ZmFjZDg5NDMgbGVnYWN5LXRydW5rCiszMTAwOCAxNGIxNzU4ZGZkZGVkYWNkYTA1Yjg1NmYyODU0OTE0ZjAyODBlMDZiIGxlZ2FjeS10cnVuaworMzEwMDkgMjlmZDlmZGFmNTJhOTA1YTc1NzQ3OWY4NzllMTE3NWJiOThlMTQ4NiBsZWdhY3ktdHJ1bmsKKzMxMDEwIGVlMGU1MTU0MDdmZDk3OWRlMzE4YjFmNWE5N2YyNGJjMDIyNjU1MTggbGVnYWN5LXRydW5rCiszMTAxMSA3YzhkZmQzZjRhZTkwNmUzYWExMDc3ZTI3MGMwZDMwMWM3MmI0ZTliIGxlZ2FjeS10cnVuaworMzEwMTIgZjkyODRiNTdiNDIyOWFlZDg2YzkxZjQ2ZmNiY2JiOTVmOGY5NmVhMSBsZWdhY3ktdHJ1bmsKKzMxMDEzIDViYTc5MzRhN2JhMDIxODRjNTJlM2Q1MDU3YTJhZTUzMTk3Yjg4NGYgbGVnYWN5LXRydW5rCiszMTAxNCAzNmY3MWZlZjViMTA4ZmM4MDMyMzBiZmEzMTBmZWZkYmRkMTU4OWZlIHJlbGVhc2UyMi1tYWludAorMzEwMTUgZTk1Nzg3NDdmNDNkZmU2NmI3MDY1NDQ5YmZlNmQyZThhN2YxNmNmOSBsZWdhY3ktdHJ1bmsKKzMxMDE2IDA5MDRkODc4YjhmMTg3NzdkYWY3NjU3OTE3ZDY0YjZjNGFmNjJmNTEgbGVnYWN5LXRydW5rCiszMTAxNyBlOWNkMjI4MTA0YTEzMGJmZDYxMTg0ZTIzYTIxZmZiMjkzODMwNzU2IGxlZ2FjeS10cnVuaworMzEwMTggM2JjNzFkMjM0YTI5ZTk4OTkyOThlOWI2YjNiYjUyMmM0NWNiMGVjZiBsZWdhY3ktdHJ1bmsKKzMxMDE5IGI4M2ZhOGZhMTIxZTg0ZDgzM2U2MGE1OWZmZmJkYmVlOGI2ZTVkZWMgbGVnYWN5LXRydW5rCiszMTAyMCA0MjQ3ZTY0MGUyYTZlYjJhNThjNzlkMDBiYWJiNTg4NTkxZGUxYTZlIGxlZ2FjeS10cnVuaworMzEwMjEgYTg5YzA3N2U2NDhhMThmY2QyZTQ2YjQyZTg0NzZhZmYwM2ViMTkwMSBsZWdhY3ktdHJ1bmsKKzMxMDIyIDdiN2QzYjkwNjM2MzBlNGFmZmQxNGY0MDc1NDkzMTAxOGVmNjBkOGUgbGVnYWN5LXRydW5rCiszMTAyMyAxZjE2YWJmYWY2M2U5ZjBlZTQ4OGE4OWVjZTY5M2I3ZmJlMGI5MDhiIGxlZ2FjeS10cnVuaworMzEwMjQgYWRiYzNmZThjODFjYzNhM2EwYTk1MWJlOGE0OWZlM2M5ODJkMTlkMSBsZWdhY3ktdHJ1bmsKKzMxMDI1IDVlNDM1NWQ4MGRkMTU5NzM0MGZhNzZiMTcwMzFmOGVkMGQ1MzA5YTkgbGVnYWN5LXRydW5rCiszMTAyNiBlOTA1YjIyZTM5MmJhNThmZWY5MzVlYjY3YmIzZTYxYWIwOTg5YWQ1IGxlZ2FjeS10cnVuaworMzEwMjcgZDg3NTBlMGQzZmI4ODg4MzZhYjc4MzhhODA2NWVkN2QyYTBjNjI5YSBsZWdhY3ktdHJ1bmsKKzMxMDI4IDRjMzVhNjZmY2U0ZGYwZWQ5NWViOTM5MDQ0N2FmYmRiMjUzYTllMTMgbGVnYWN5LXRydW5rCiszMTAyOSBhZTMxZmNiN2I1OGU0Y2NkODgxMTIxZjA5ZjI5YjAzMDRmNGZkMjcxIGxlZ2FjeS10cnVuaworMzEwMzAgMDkwYTUwY2IyNjkwMGUwODllNDUyN2YzNDFhYzZiYTNhYmQzZGYzMSBsZWdhY3ktdHJ1bmsKKzMxMDMxIGU0MmUzMDI1YmFlM2I0OWE1ODc3MjU5ZDlmNzRhODQxMTZmY2E0ZGUgbGVnYWN5LXRydW5rCiszMTAzMiA2MjA1MzkxNjVlNTMwOGFjOWE4NDgwYTJlZTdkZTEwODgzNjRhZjMzIGxlZ2FjeS10cnVuaworMzEwMzMgMGRkOGQ4YTc2MDE1ZWYwZGJiOTZiZWZkOTJlZDdmZmJkZjU4NjI2MCBsZWdhY3ktdHJ1bmsKKzMxMDM0IGZlNDBmY2Y0OWVlNTY2ZGZiNWZjMjkxODkxNzBkMTU2NmMwMTZlMjkgbGVnYWN5LXRydW5rCiszMTAzNSBiNDgwYTRmNzA3ZjYxNzhiMjA2MjY4MDFmZWQwNTZhMzRlM2YxNzM0IGxlZ2FjeS10cnVuaworMzEwMzYgZDlkNTdmNWY5OGNkYTcyMmI3ODRhZmY5ZGU4OGMwZWZjYWYzMjg1NyBsZWdhY3ktdHJ1bmsKKzMxMDM3IDE0Mjc2ZTQzZWNlNjA0NzlkYWM2NjcyMTQwMmU0MWQ5YzlmODU1MDcgbGVnYWN5LXRydW5rCiszMTAzOCA0NGY0NjU2ODM5MjdiM2NmYzZkYzNjM2E2ZjAzNGE0MGQ5OTYwZTViIGxlZ2FjeS10cnVuaworMzEwMzkgMjBjNTgxYzIzYmNlMzMzNjg2NTI0MzQ3NDkwZDQ5MmRhNTRjZjkxZCBsZWdhY3ktdHJ1bmsKKzMxMDQwIDBkZTE0MjUyZDI2Y2U2ZGQzYzE0MTFmYTdhY2EyMDFlNWM4MTQ2OTkgbGVnYWN5LXRydW5rCiszMTA0MSBhMmQ5NmU3ZDkxYTFhOWY5ZWIwOTE0NzM3NzU4ZjQzNWU0MzkxZmY5IGxlZ2FjeS10cnVuaworMzEwNDIgYjFkMWZlN2ZiNTE0YjE3M2E4MDhjYTVkYjk2OWY1YjQwZWQyNjUwOCBsZWdhY3ktdHJ1bmsKKzMxMDQzIGQ2MmJkMjQwNzI5MTlhYjA0NTNlNDdmZmNhYzIyY2U0M2QyOTMzNDYgbGVnYWN5LXRydW5rCiszMTA0NCAwZTZkY2UxZWMyMzFjZDQ3YzQzMGQyZjFmNWIyOWM0YWYyZTdlZDI2IGxlZ2FjeS10cnVuaworMzEwNDUgNWYzMjk0MmEyMjVhZGE5ZWE1Yjk1YWRmODBiZmRiNzViMDA5OWE4YyBsZWdhY3ktdHJ1bmsKKzMxMDQ2IDUxYWJiNWU4NjIyNjI1NTVmY2U1MjhkM2E0MjllYTc0NDMwN2I3YzYgbGVnYWN5LXRydW5rCiszMTA0NyBiMmI1NzQxMThmZmRhM2ZkZjc0ZDZhMmZiZTJhOWZjODc2OTk4YWFhIGxlZ2FjeS10cnVuaworMzEwNDggODFhMmQxODhlYTFmOWY2YTMzZmE4YjQ5NWVlMDc5Y2NlNTBiMGZlZiBsZWdhY3ktdHJ1bmsKKzMxMDQ5IDY3ODZlODZiOGZmMGFkMGJhMjU3MzgyYmQzZmFhYTVjOGJmMmNlNGMgbGVnYWN5LXRydW5rCiszMTA1MCAxN2JmZDVkYmMwZjE2ZGM4NWMxNmIyMDg4YWNjNDI4MDdkNjkzMjM1IGxlZ2FjeS10cnVuaworMzEwNTEgMGY5ZWI4NDEzYjYxYjRlNjI1MWU0OWYwNzc2MjU5NDdiY2IyMmEyYSBsZWdhY3ktdHJ1bmsKKzMxMDUyIGIxNzNhMmEyMzA4MjVhNDFmYWIxZGFmOGQwYzU0OGUzYjRmMmI5NzcgbGVnYWN5LXRydW5rCiszMTA1MyBkNWY0N2UxNDY1ZDY2ZGU1MDMyODI5YWJiZTI0ZTM1MGU3NzJkMDE4IGxlZ2FjeS10cnVuaworMzEwNTQgMGJiMTU0ZmE4MDQ3YzhmMGZjODAzYmVjYWY2YTM5NWQxNDFiZTZmZiBsZWdhY3ktdHJ1bmsKKzMxMDU1IGRkZWU4YzE1ODMwMWM2ODNjZmI5OGU1N2Y5NmZkMjY5ZWZjOTA1NTIgbGVnYWN5LXRydW5rCiszMTA1NiAyZTE4ZGJjZDllMDRjYWJkNjQ3ZWRjMzJiOWEwY2E3ODhjM2MyYjRlIGxlZ2FjeS10cnVuaworMzEwNTcgNjg5MjU3Y2E0ZDA5MmI2ZDc5ZDg1MjAzNDliNzBkNWRmMTIxOWQ0YSBsZWdhY3ktdHJ1bmsKKzMxMDU4IDY5NmM0MmRhNzg3NTMzMTgyMTEzMGUwODllYjQ1MTQyYmM3ZjYwNzMgbGVnYWN5LXRydW5rCiszMTA1OSA1NzY1ZDUyNGRlNzFlMmFjZGI5ZWRiYjBhM2U1MDJmZWQ0NTU2ZGJiIGxlZ2FjeS10cnVuaworMzEwNjAgZDExMjIzZGFhZjYxZDNjNTEzYmVjYWEwYWYxOWY5MzI5ZDczYTZiZSBsZWdhY3ktdHJ1bmsKKzMxMDYxIDAyZjEzOGM2MzlhMDgzYTEzNzRlMDc0NDY2ZmQ3ZDcyMDg4Y2Y2NmUgbGVnYWN5LXRydW5rCiszMTA2MiA4NDJkNmEyNDQ5N2FlODNhNTM2OTI4MWI1ZWJhZDNhYjBiYWM3YWQyIGxlZ2FjeS10cnVuaworMzEwNjMgOTkwOTlkZWI2MDI2NDBiYjk1NmY0MzEyNjkyZTM5MzZkYzViYWIzNyBsZWdhY3ktdHJ1bmsKKzMxMDY0IDcyYjM4ZDVmZTYxZjlhZmVlZDJhMmM2ZmQ0ZDE2MGU1YTg1NGNhYTggbGVnYWN5LXRydW5rCiszMTA2NSBjYmM4NjAyOGQ5ZjNiYWI3MGFkODI0OTc1YjMxYWNjMDA4OWNmYWQ5IGxlZ2FjeS10cnVuaworMzEwNjYgZmRjNTJiMTE5NzA5MGUxMzI5MGY5ODQzOGU1NTgzNTYyYTY0ODIyMSBsZWdhY3ktdHJ1bmsKKzMxMDY3IDg3OTQzZmFmNGZkMjE2YTYxMDJlMDdkNDk5NTQxYzhhYmM1MTE4ZTYgbGVnYWN5LXRydW5rCiszMTA2OCA5N2IyODE3MDYzNGNjZjE5MmM5YWVmNTZiNTgwODliOTg2NDYxMjc0IGxlZ2FjeS10cnVuaworMzEwNjkgMmFkZDAwOGIxYjdkMDc1ZDMzMDI3NzRiYTk5ZjU1ZmUyZmIyMjY5ZCBsZWdhY3ktdHJ1bmsKKzMxMDcwIDg4Y2VlZWVkNzBiZDE1MWQ1ZWMwOTAxMTEzOWJiZWM5YWMzODRjOWEgbGVnYWN5LXRydW5rCiszMTA3MSAwYzg4MTAzNzNhMWE3NzI4NjQ5MGM5NjFiYjU0NWNmNDAxNDFkNWRkIGxlZ2FjeS10cnVuaworMzEwNzIgZWQyZDIzZDJmZDQxMmI5ZjdlNzY1ZjI2NmExNzA5ZTA1ZDBjOTJlZSBsZWdhY3ktdHJ1bmsKKzMxMDczIGM0N2RlODhhZTg1ZDdlNTQ3YTJmZDkxNmM1MzlkYjVmZjIzOTEzYzIgbGVnYWN5LXRydW5rCiszMTA3NCBmOTgyMmIxOGNmOTE5YzU2Y2JjOWZlYTY1Y2I1ODMzOTkxY2Q5YjM5IGxlZ2FjeS10cnVuaworMzEwNzUgYmQ2M2YyOGNlN2E4YmZkYTEwMDA1YzMwNzQ3ODFiYmI5ZmI0NTE2YSBsZWdhY3ktdHJ1bmsKKzMxMDc2IGNlNzQ4YWZiZDZlZmQyZDRhNzM0MTRiNjIxOTI3N2ZkNWIzZGRlZDMgbGVnYWN5LXRydW5rCiszMTA3NyBjNDI1ZjY2ZGI0NTgyMjUwM2Q5ZWM5ZDQ0ZTI0NTc3Nzk2YjFiZTRjIHJlbGVhc2UyMi1tYWludAorMzEwNzggN2ZjZGVlYjE2ZWMwZDY0ZWJjMmZjODljZGFiNjA3N2Q0ZDYxMDJlZSBsZWdhY3ktdHJ1bmsKKzMxMDc5IDMxODA3ODgwZjU5OTY1OTE0Y2MwMWIxZmNmNTUyZmVhODFjYWEwMGYgbGVnYWN5LXRydW5rCiszMTA4MCBkM2FmMWU3OTMyNDM4OTJiZGJjMmEyMGE1YjNhMWY0NTg3NTFiNmZhIGxlZ2FjeS10cnVuaworMzEwODEgNTBjNzM0MjUwZTA1MjliNjZiNTVkYzI5N2UwYzRhZmViNWYyODU4NSBsZWdhY3ktdHJ1bmsKKzMxMDgyIDY1OTdjMDliMWU2ZGM5ZDAwZDFmMzUyOGUyNzY5OGMzMTY4MDA5NWEgbGVnYWN5LXRydW5rCiszMTA4MyAzYWUwYTJmODdhYTA2Yzc0ZDY5YWI3MGY3OWYwODQyYWVkNjMzMzFlIGxlZ2FjeS10cnVuaworMzEwODQgYzI2N2YyODcyNGRkY2NkZWJjNTMxODhlZGE1ZGE5ZTBjYTcyMDViOSBsZWdhY3ktdHJ1bmsKKzMxMDg1IDI0ZTM0YWJjNjI5NTAwOTczMDY1MGE1MGUxNjdjNTY5MjA2NTBhNDAgbGVnYWN5LXRydW5rCiszMTA4NiA1ZWVmZWM5NGE3ODQ4NTQyYjlhMDZlOGM1ZjIxYzFlOGRkYjhiNzAxIGxlZ2FjeS10cnVuaworMzEwODcgOGQ4MzU3OGRiYTgxNDFkNDZmZmZlMTAyNmFhZDM1ZTE0Njg1YTg0NCBsZWdhY3ktdHJ1bmsKKzMxMDg4IGZhYWJkOTg2N2ZiOGRjNDk5NDBkMzhjMjI5NmRhN2E2YzBhYmJiZWIgbGVnYWN5LXRydW5rCiszMTA4OSA0YWE0ZTZiM2VjYTcyM2Y0MzQ5ZTc0NmY3YjY2MzBkNTYxNzFhM2UyIGxlZ2FjeS10cnVuaworMzEwOTAgM2M4OTA0OWZlNjI4ZDM0ZGExZWFhMWU0OWFhNjUwODEyZTVkYzViMiBsZWdhY3ktdHJ1bmsKKzMxMDkxIGQ0MmQ4M2U1Njg2YzNiOTZiZWRlZTRkM2JjODVkYzg4MTQ5ZDU4N2UgbGVnYWN5LXRydW5rCiszMTA5MiBhYjE0M2FlZDQ5YjkwNmZiODMzNjAwMDNkMmU2ZDc2ZTlhNDg4ZjgyIGxlZ2FjeS10cnVuaworMzEwOTMgMjU2Nzg5YWFhY2Q2NWMwMzIzMmFjMmYxZTE0NDAzOGRhYzI5YzdmNSBsZWdhY3ktdHJ1bmsKKzMxMDk0IDYyMGJiMzU1MWJiNjc0N2E2NjBiNGRlZmFkZGUzZjIwNDU1MjcxNGUgbGVnYWN5LXRydW5rCiszMTA5NSA4NzYzYThmNmMwZDViZWYyZTgwMDI1YzAwNDkxMmFiN2M1NmI0ODIwIGxlZ2FjeS10cnVuaworMzEwOTYgYzA3NWJhMmFiZjdhYmE2ZjZmZGQzMzgwZjdjZjUyM2U1MjYxZDRkZiBsZWdhY3ktdHJ1bmsKKzMxMDk3IGYzM2U2NDQ4NDYyMDgxYzc0Y2JkZTFiYjE4NjliY2NiYjhiYmM0NDUgbGVnYWN5LXRydW5rCiszMTA5OCA3NmZhOGM3OWE4OWQwYTY5MGJjMzVkZTllOWRiNzkyOTJkYjdlNDA4IGxlZ2FjeS10cnVuaworMzEwOTkgYmE1N2MzZGFmNmU5YTM5ZDZlYjAyZDI2MjA1NjlmMzNiMzI5ZWYwMyBsZWdhY3ktdHJ1bmsKKzMxMTAwIGJkOGU2MjIyZTE2YTMyYTNhZjQzMjZiMDEwOTMwMzdhMmNjZDZhZWIgbGVnYWN5LXRydW5rCiszMTEwMSBmMjM1ZjEzNWYzZjhhMjc4NjI5M2E3NjkzOTAxYmEwNDljZjdlMDc3IGxlZ2FjeS10cnVuaworMzExMDIgNjc0ZjNlZWNmZmM1MDY5ZTcxY2M3YWFhYjJmODM2ZGMyYjE1ODY4YiBsZWdhY3ktdHJ1bmsKKzMxMTAzIDAxOTA4NzJlYmNmM2Q3NzQ4NDAxNjNmYzY2NDllMDY0MGQ1M2I4NjcgbGVnYWN5LXRydW5rCiszMTEwNCAzYjlmYjU3ZmFjMzRhMjVkNDk4YTRkNTViMTNjYzRjMjMzYTQ0ZDNhIGxlZ2FjeS10cnVuaworMzExMDUgMTYwODUwN2JjYzNmZjg0N2FmNTYxYjk2YmI2MmYyMTNmNDE5NDk5NSBsZWdhY3ktdHJ1bmsKKzMxMTA2IDliYzFjODRiMjNlNjYyMzY5MzI4MzI2Njk5Y2Q2MGY3OGIxZTg5N2EgbGVnYWN5LXRydW5rCiszMTEwNyAyZjIyN2ZmMTFmNWUzYWVjMTY0YTk1OWIzNDRhZDRjNWM3YmUyODIzIGxlZ2FjeS10cnVuaworMzExMDggNmZmYjVjOGU2NTM4ZWU4NWI4YTJlNDIyNDBhM2I3OWJkYzI1OWZlZSBsZWdhY3ktdHJ1bmsKKzMxMTA5IGY0N2FmMmNkYjk4M2I0MWY1ZWFjYmJlYmYzMTM3MjY2ODUzOTY2NTcgbGVnYWN5LXRydW5rCiszMTExMCAyZDdjMGNiYzgzY2YzZjQ5YjlhMDBhYTExNTNiNDMzY2EzNzgyMDkxIGxlZ2FjeS10cnVuaworMzExMTEgZDFlZGFhYTkzOGZiZTc0ODUyZmY1NTUyYWY0NTNjOWNhNGRlNmUxNyBsZWdhY3ktdHJ1bmsKKzMxMTEyIGEyZGI0MzdkMzE0YjQ4OTM3YmEwYmNlNzg5ZjA1NTU1YzI3MTY0MjAgbGVnYWN5LXRydW5rCiszMTExMyA2NTYzNWM3MjEzNWUxYWNjOWM2NzMzNWJkZmU1Yzc3NmI3ZDMxNDBmIGxlZ2FjeS10cnVuaworMzExMTQgYTA1ODE0MTg0ZThjNmU1MDYxY2YwYmYzMmUwMjE0ZDg1N2FkOWMxMiBsZWdhY3ktdHJ1bmsKKzMxMTE1IDk4MTk3ZWJlNWNjYjdkZWY3OGU3YjQ0Nzc5YmZmOTE2MjY0YzMxMDIgbGVnYWN5LXRydW5rCiszMTExNiA3MjgzMTQwZDQzMTk4NmIyNDNkYWE3MDJhOGYzYjk4YThmY2YzMzI2IGxlZ2FjeS10cnVuaworMzExMTcgM2ViMTBhMTRiYTAwZDk2YjM0MDQ2NGMyZWRjZmIzYjg5ZDE1NWYwOSBsZWdhY3ktdHJ1bmsKKzMxMTE4IGUzZmE4Mzc3ZjMwYzU4MGE1MGI0YjlhZWVkYzY2ZmQwNWFjYjkzY2MgbGVnYWN5LXRydW5rCiszMTExOSA5MzIxMDU2NGJiNDYwNzlmMGQ2MmUxNTQ2MzVmNGU0YmU3YzBkYTVlIGxlZ2FjeS10cnVuaworMzExMjAgZDZiNjVlMzg1NWEyNTAwZDhkMTU5ZTNiNGQ0MzZlZmJmODIxMmQ5NSBsZWdhY3ktdHJ1bmsKKzMxMTIxIDc4ZTQzYjM2ZTc4NDRlYjhkNDU5ZThiOTQyYzZjMzljOWIwNDRlNTQgbGVnYWN5LXRydW5rCiszMTEyMiA1N2JkZjRiYWM0MzVhN2U2NmVjZDVmY2MxN2Y5ZTY2OTA3ZjRiOTI3IGxlZ2FjeS10cnVuaworMzExMjMgZTVkMTgxMTIwMzAzNDkxMTVlYjI2ZGQ3MzEwYjQ0M2M1MDY2YzQ2NiBsZWdhY3ktdHJ1bmsKKzMxMTI0IDkxNWQzMjdhMjE0YTlhZmE5YjZlODQwMWY5ZTE2ZWVjZWNkNmU0ZTMgbGVnYWN5LXRydW5rCiszMTEyNSA3MjIyOGEyNWRhYWEyNTkyMzQ5MDkxMWU2MDg5NjNhNzI2OTY5ZTljIGxlZ2FjeS10cnVuaworMzExMjYgOGU2MGVjODhlY2I4NGQ5MjUzMGQ4MzQ2NDJhMzg5Njk1ZmVlOGI2ZSBsZWdhY3ktdHJ1bmsKKzMxMTI3IGEzNWRmY2E5MzMxOGQxZjllODNjMTc4NmM1YzU5M2ZkOTdhMmZhMmMgbGVnYWN5LXRydW5rCiszMTEyOCBkMTU4ZDEwZWY0YWViMDI3Yjc0NGY1NmFhZTVkM2RhYWFlYTQ5YTNiIGxlZ2FjeS10cnVuaworMzExMjkgMzEzZTk0NGEyYzg4NjIzNmE2ZTE5N2FmYjFjNWE3NWM2M2Y5NDcwOSBsZWdhY3ktdHJ1bmsKKzMxMTMwIDlhM2I4NDQzZDVhNjE2MTVmZmQ5ZGUzZjVmMzg3MDUzOTMxODk0NzkgbGVnYWN5LXRydW5rCiszMTEzMSBjNDIxNGMyMGIyMWRjMDIwYTgwN2Y2MGIxMjNkNDI0OTk0MDhlMWYzIGxlZ2FjeS10cnVuaworMzExMzIgODJhOGNhM2M5MjhjMGFkZTMzZDk3YjIxMWIwMGQzMGViODU5NmUyYyByZWxlYXNlMjItbWFpbnQKKzMxMTMzIDFmYTQ0NDE0OTg1ODlkNTAxODU3M2YyYTUwMjdkMmVjNDRjNjA3NDggcmVsZWFzZTIyLW1haW50CiszMTEzNCA0MmI2MTdmZDljNjkyM2Q3NTcyMjgyYjljMTdkYjE2OGVmZGMxZWNjIHJlbGVhc2UyMi1tYWludAorMzExMzUgMjI1NTFlMWQyYzZlNzBlZDRkNDhiZDNiZTg1OTFlYmRlNjQyYTAyOCByZWxlYXNlMjItbWFpbnQKKzMxMTM2IGNjZmFjYWVjMDk2ODkxOWViYmZlOGJkOTk5M2IwNjYwZTFiZGM3NzYgcmVsZWFzZTIyLW1haW50CiszMTEzNyBiZWIyMDA4YTNjMzI5NWQ3ZTViZjBhMmFhNDg5NWMyYTU1NWY4N2VjIHJlbGVhc2UyMi1tYWludAorMzExMzggYzljY2M5ZDBiYTk5YTg4ZGJlOWVhNDVkOTExYWM0ZmM1OTQ2NTg0YiByZWxlYXNlMjItbWFpbnQKKzMxMTM5IDFkOGM4NjIzNGQ5YzJiZGYwNjQxMDI4ODA4ZmI1OTQzZjBiNDk4NmQgcmVsZWFzZTIyLW1haW50CiszMTE0MCAwNjAyMDc4YmRjZTEyM2IwMmIwMjlmZTQ4YzZjYWU0M2U4NGUyOTRhIHJlbGVhc2UyMi1tYWludAorMzExNDEgMDcyOWY4MzkzYjE2MDNmN2U3ZTI0NWQ0MzhmZTgxYmJmZjFjM2Q5MiByZWxlYXNlMjItbWFpbnQKKzMxMTQyIDY0N2MyOTE0N2Q1ZDI3ZWU4NGJiNDNhMWY2NzQ4ZjhiNjNlYjEwZTggcmVsZWFzZTIyLW1haW50CiszMTE0MyA4MzcwMWZhYjMyZmUxMTc1ODk1OGY1ZDc3YTdhMjFhMjU5NTVlOWUyIHJlbGVhc2UyMi1tYWludAorMzExNDQgNDVhZDc3YTQzZDg3ZjY5YmFmNDAyYjAwNWE5MjgzY2Y4ZTA4MGM1NiBsZWdhY3ktdHJ1bmsKKzMxMTQ1IDJhODFjMWE4ODNjYmI1YzNlY2EyMDExZjQ3YjEzZDNmMjBkYjA2ZjQgbGVnYWN5LXRydW5rCiszMTE0NiA5Y2RjMjMzYjcyMjRiMDM3YmRjZDc2NzRiNjA4MGI5YjE5NGNmOGNjIGxlZ2FjeS10cnVuaworMzExNDcgNzRkOTYwNGU5MzUzMTZkN2ExNjdkM2Y1NzkzMjIxZWVlMTRhNzU5NCBsZWdhY3ktdHJ1bmsKKzMxMTQ4IDU1OGQwZjNiNjI1NDhiZjQzNjBmODM1Y2NiMjhiMDg1M2M0NDdlMTQgbGVnYWN5LXRydW5rCiszMTE0OSBiYmQ4YWJhYTBmMzM1MTI4MjNmNmNjYjViMmRmZWU5MzllYzEzNzNiIGxlZ2FjeS10cnVuaworMzExNTAgMTlkMGM5OTk1NTVlOTFjYmY3NzExM2E2NzhlMzg2MmJmODk3NjYxMyBsZWdhY3ktdHJ1bmsKKzMxMTUxIDY1ZmRiZDc4MWNhOTlhZjE5OWQ4ZTVlOTEyNTk5ODU4MDg1MTJiYmYgbGVnYWN5LXRydW5rCiszMTE1MiBhMjQ1MjgzMThiZTk2Y2JhM2ZiMjAyMTU0NDRmZWYxMmYxOWExZmRiIGxlZ2FjeS10cnVuaworMzExNTMgODIwMTAzOGJiZjMwYmQ1YmQxZTQxMmVjNGI3MGY4ZmE5NThkYjVlNSBsZWdhY3ktdHJ1bmsKKzMxMTU0IGVhYWVmNTE2YTY4NTNkZTcyNDg0NzJjNmZlNmI0MWFjZmIwOTFmZDYgbGVnYWN5LXRydW5rCiszMTE1NSA0NTkwNjIyM2VmYjIzNmExMWQwYzJmMzY0MjdmMDEyNzhiZmE0ZmY1IGxlZ2FjeS10cnVuaworMzExNTYgNGM5ZDAyYzU2NTdiMzVhYmU4NzA5ZGEwNTBkMWNhYmUzODI0MDExYyBsZWdhY3ktdHJ1bmsKKzMxMTU3IGFmYzlhMDk1YTJkNTZmOGY3ODllODRiZjAzMzRhNGUyY2U3MDMzNGMgbGVnYWN5LXRydW5rCiszMTE1OCBmN2IzODI2ZDAxM2ExZGVkYjIxM2IzMDJkZDU5NTg3ZWJlOWU4MzA3IGxlZ2FjeS10cnVuaworMzExNTkgNjU2N2Y0ODI5ZTdlYzRmZjFhNWJmZDNmMGE2YjYzZTZkN2JkZjAwZSBsZWdhY3ktdHJ1bmsKKzMxMTYwIDdiZjdkYWM0ZGM0OTYxNGI5MjAzNmRlMjczMjJhMTY4YmQxNGQwYzUgbGVnYWN5LXRydW5rCiszMTE2MSA2NDBlNTJkZWUxYTAzZDJhMjI1ODcxYjA2NTE0NmVhNDg2Mjk3M2M4IGxlZ2FjeS10cnVuaworMzExNjIgNDgwMzMwMTdjNzhmMjAxOGNhZDIyNTRiYmZmNDMyOGM2NjdhYzRhZSBsZWdhY3ktdHJ1bmsKKzMxMTYzIGM0MGNiOWJmYzhlN2MzZGYxNjU4OWJkZTJiZWJmYzllN2I3MTlmMGIgbGVnYWN5LXRydW5rCiszMTE2NCBlNGUyNmZlMjg2YzBiODljMmJhNjFiOTEyZWMyZTRlZWFjNGQwYWVmIGxlZ2FjeS10cnVuaworMzExNjUgOTc0ZjE5NmFiYjg3YmVjY2ViODZlNGQ0YjM5YWFlYjAzNzczOWJlOCBsZWdhY3ktdHJ1bmsKKzMxMTY2IDYwMTU0OWM2NDAzOWM4NGJiZTgxZTQ2MDQ5N2JiOTdlMWYzNThhNmIgbGVnYWN5LXRydW5rCiszMTE2NyAyY2Q0ZTBkZmYzYTQzMjc2MGFlOTQyMWFmODIwZWUxOWZhYmUyOWM3IGxlZ2FjeS10cnVuaworMzExNjggNjIwNWRhMzgzZTRjYjQxYjY4NTA2OTk4YjNhMjMwMThkZTM0Y2RjZiBsZWdhY3ktdHJ1bmsKKzMxMTY5IDAwNDI2YzdmMTQ3ZDIwMWE0MzI1NmRhZWY4N2QzMzQ3MzQwNDkxZjggbGVnYWN5LXRydW5rCiszMTE3MCBkZDczYTEyMThmNjlhODk2NGEwZDJiYTU0Y2Y1NWE4M2NiYzVmODgyIGxlZ2FjeS10cnVuaworMzExNzEgNGQwNGY0NWZmOGExZTZjNThlNzA1ZWM5YjVkZGMxNWVjMzFlZmFiZSBsZWdhY3ktdHJ1bmsKKzMxMTcyIDkzNGEyYjQ5N2QxZGQyYWRlNTMzMDhlOTQ4MjI2MTA5NTY5OGQ1MzAgbGVnYWN5LXRydW5rCiszMTE3MyA4YTE0N2E0MWMzZjdmYWUwYmNmNTMzMmUyNmU3Y2Y2ZmI4YzBkNjUwIGxlZ2FjeS10cnVuaworMzExNzQgYjY2YWNiZTI5NTc1YzQ1ZDVhZWZhNjlhYjM3MDU5ZDk5YmFmYTQ3NyBsZWdhY3ktdHJ1bmsKKzMxMTc1IGU5OTYxNWRlNzY0NzYzYzkwZTIzZTQwYjFiMDY4OTA4NDE2ODgyODcgbGVnYWN5LXRydW5rCiszMTE3NiA1MmNlNTdiNzhjNzFhODYwMTJmODJlMWZhZWU4MjY5YzFhYmU0Mzc0IGxlZ2FjeS10cnVuaworMzExNzcgZGI3ODRkMjlmNDgxZTA1YmI3ZTIzYmM1NWU4Yjk2NmQ0MmE1ZjIyNiBsZWdhY3ktdHJ1bmsKKzMxMTc4IGY2MTk4NjE0MDUwMzBhYWE4MmVlNTRmYTRmMGJlNzgxZTM2Yjk4OGYgbGVnYWN5LXRydW5rCiszMTE3OSBmMjYwMzQzZWNjZjEzMjJjYjkzMDRhZDQ0YmQyMjIwYzFjZGIxODdiIGxlZ2FjeS10cnVuaworMzExODAgNTliNGViYzI5ZDUzMTdhNmI3ZmMxYjYwZDM5YzNjYTM3MWIwZGI3YSBsZWdhY3ktdHJ1bmsKKzMxMTgxIGVkOTFiZjYwMWIyZGU5OGFmMDg0ZGM5NzcyYzZlZjU4OTk0ZDc3MjQgbGVnYWN5LXRydW5rCiszMTE4MiAxMDZhNDRhNGI5NzVkYjRmMWIwODZhZjQ1Y2Q0N2NlNTJiNmFhNWQ0IGxlZ2FjeS10cnVuaworMzExODMgYTlkZDIxN2E5YmIxMDFlMDhiMTIzMjRkODMyMzY2NTk2NGJkMDI4NCBsZWdhY3ktdHJ1bmsKKzMxMTg0IGUxMWU5NzZmZWU3ODEyYWI0MTE4YzViZmJhZDMyZTM0ODA3ZDU5MjAgbGVnYWN5LXRydW5rCiszMTE4NSBiYTNlYWZmNDliN2FlMDg5YTg4ZmMwMTI4NmYxZGE0MWU2NTE2ZmYwIGxlZ2FjeS10cnVuaworMzExODYgNjczMTUwMjZkNmQzNTk5YjY2Y2E1OTE0NzMxZWJhYzg1MjM2NGFmMyBsZWdhY3ktdHJ1bmsKKzMxMTg3IGI1OTVjNDczNWZjY2M2ZmQwMDNiM2E4NzhlODhhNDE1MDU5NjlkNDEgbGVnYWN5LXRydW5rCiszMTE4OCAwYmJiY2FjYzA1ZmI5ZTdlOGVlODQ3MGRkYzYzMzVkY2NkOThmNjdiIGxlZ2FjeS10cnVuaworMzExODkgNmExMzk0NjYwMjcwNzQxNzAyNTY2ZWQ4NzZjNTJhMjdlZGQ2OGFiZSBsZWdhY3ktdHJ1bmsKKzMxMTkwIDM1Mjc4YWFhZTc3NWNmOTcxYzIwZWFmMmM1NTA0MDc2M2I1NTdhMTIgbGVnYWN5LXRydW5rCiszMTE5MSAzYTUyOGFhMjIyYjZjOWQ2ZGZlMjEzYmJlNmM3MWI1ODU4ZDg4ZTgxIGxlZ2FjeS10cnVuaworMzExOTIgZGYzNjNkMWIzODQyODg1NmZiNGI1NDkyMzgyZmYzZGQ2OWM4N2E1OSBsZWdhY3ktdHJ1bmsKKzMxMTkzIDY1MmRmNDU0OTcwODU1MmEzMDZmZjcyYmU3NGJiNTg2NjdlMTdiNzAgbGVnYWN5LXRydW5rCiszMTE5NCBkNWViMTJiY2NkMWU5ZjU1NDVhMGQ0NjQwMGQzYjRkOTg0NDExODg2IGxlZ2FjeS10cnVuaworMzExOTUgNWQ3ODg4ZmJlYTAwNDg0Yjc1MDAxYzVlNTNkODVlMzQyMmM0MjljNSBsZWdhY3ktdHJ1bmsKKzMxMTk2IGY2MmVjMjQwNWU5ZmNiNTVlZjFkZGQyMDhjNTRmNTQ5MzliNzU4NGEgbGVnYWN5LXRydW5rCiszMTE5NyA4ZTVkZTQzNTI5Yjc1NzNjZmI0NTBiZTg0MjNiY2JjZTQxNjIzODkyIGxlZ2FjeS10cnVuaworMzExOTggM2U5OGQyZTJkODQ3ZjE2YzQzYzIxNTNlMDdjMjBjMjY0ZDUxMDc3MiBsZWdhY3ktdHJ1bmsKKzMxMTk5IDIwMzMwZTEzMjExZWFkZmZlN2I1YjQ2NzE1ZGIxNzJmZGQ0YTJkNTYgbGVnYWN5LXRydW5rCiszMTIwMCAzYjBiMzZjZGQ5Y2Q5OWU3NGFlMDUzYTYzYWY1NmVmNWZiNmE0ZjYzIHJlbGVhc2UyMi1tYWludAorMzEyMDEgYzg5NDNmODdjNjhiOTlmMmYxNjVmZmJlMjA3ZDE2YzEzOGJmMmUwNSBsZWdhY3ktdHJ1bmsKKzMxMjAyIDk2MDgwM2Y5ZjY5ODk5NGZhM2QwYWFmNDcwODkzNjcxZDdiYjlmYTQgbGVnYWN5LXRydW5rCiszMTIwMyBjZTNmYWFiMDZkZTc1M2E2YTkxNDM5NTU3Zjc3ODEwMTg4YjEwMGQ0IGxlZ2FjeS10cnVuaworMzEyMDQgOGY4NDQ4ZmI1OGQ2Zjg5NjA3NTJhMzUzOTZlZjdhNjg5YjU3ZGRhOCBsZWdhY3ktdHJ1bmsKKzMxMjA1IDk1ZjNhMWNkMDBlMTYwZDg1ZjRlODczODhlZjc0M2RlYTFhMDVlMjUgbGVnYWN5LXRydW5rCiszMTIwNiA1MTk5ZjdlYTY3NDZmMzk4MzM1YTc5M2U5OThiOTA4Njg5NzFmZmU5IGxlZ2FjeS10cnVuaworMzEyMDcgMjYxOTE1YTZjNjg1MmM5ODRmYmNmM2I3MDcwM2E2MmUwM2E2ZDM4NCBsZWdhY3ktdHJ1bmsKKzMxMjA4IGQ2OThjNTYyM2RhMDZmNTFlYzU5N2RkYzcwMGQ4MzVlNjJiMjZiYjIgbGVnYWN5LXRydW5rCiszMTIwOSBiMTlhYWFlYjZkNjQyMDMxNjNhZDljZjkwZGU2M2YwYmQ0ZjAxODUxIGxlZ2FjeS10cnVuaworMzEyMTAgZTU0NTRmZTFhYWZkMGRjZjlmMmVhNjhiYWVmOTZhM2I4ZGJkYmQ0YSBsZWdhY3ktdHJ1bmsKKzMxMjExIDc0YWFiZDQ0MTlkNDBkNjViYzdmZmJlZWQ0ZDQzOWEyNmFhNjdjYTQgbGVnYWN5LXRydW5rCiszMTIxMiBlZDFkNGU3OTcxMDk1YmZjYzRhMWVjOTMxMzQyNjNjYWFlYzc2MTRmIGxlZ2FjeS10cnVuaworMzEyMTMgOTZmZDAwNGE1OGIwZDMyZmVlYWQ4ZjYyNTljMDliNjQ5MzRjM2Q5YSBsZWdhY3ktdHJ1bmsKKzMxMjE0IDllNDdmOWVkNDlmNjQ2MjJjYjc4N2ZmMTlmNDcyNmNkZDJkNDZhNGYgbGVnYWN5LXRydW5rCiszMTIxNSAzNTk5ZjY1OTNmZTkwYzBjOTlhYWQ2ODNmNjA5YzQ5MGUxZmIzYTUwIGxlZ2FjeS10cnVuaworMzEyMTYgMjBiODAzY2YyMTlkMDk4NGZlOGE2YTkxM2UzYjVmNzA2ZTYwNmE0ZSBsZWdhY3ktdHJ1bmsKKzMxMjE3IDRjN2IxYjdkN2YzMTExNjc4NjY5MGUxODdjNmJkM2IwMzQ2ZmVkNGYgbGVnYWN5LXRydW5rCiszMTIxOCAwZWMzODk2ODg2ZTY5NmE3ODlmMGZmYjkzMzBkMzYyYTFlZTRkY2JiIGxlZ2FjeS10cnVuaworMzEyMTkgOGYzNzgzNWNmNGE0MTFiNDJmMDFjZGViYzJmZmIzMjRkMDg5MjM0NyBsZWdhY3ktdHJ1bmsKKzMxMjIwIDlhYjk3MWNkMTk2NTcyNGFmMGNhODgzMzU2ZTg0OGFhZWQ5MDU3NDEgbGVnYWN5LXRydW5rCiszMTIyMSA2M2Q2MzRlZDk0NWNjMDFlODg3MDRlZWVkNjdkMjVmYWYwYjEyYWI3IGxlZ2FjeS10cnVuaworMzEyMjIgYWM0NTNiYjM3MGEyZTljNzFiYTg4MzA0OWZlN2JiZDQxODQ1YWZhNCBsZWdhY3ktdHJ1bmsKKzMxMjIzIDdjNGRkYTBjMTQ1ZjA0MDFiNTVlMGExYTZjNDcxNmQ3ZmI4ZDEyY2UgbGVnYWN5LXRydW5rCiszMTIyNCAxYTMwMGY0NzUzMzIwNWMwODY2NWQ4NDEwMGI3M2EwYTRmYzZkM2NlIGxlZ2FjeS10cnVuaworMzEyMjUgZWIyODc4OTQwOTA1ODYwNGU0N2NiYjZlMWJkNjJmYzc5ZDhiYzE0MiBsZWdhY3ktdHJ1bmsKKzMxMjI2IDQzMTQzZDRkZDZiMWQ1MTNiMTJlODhhYjJjYmEwYTEyOTEyODVlYzMgbGVnYWN5LXRydW5rCiszMTIyNyAxODYxMzM1ZTc4YWExMTZjN2QzOTgwMjRmZDRjZjYwZTNkNzQ0OGQ0IGxlZ2FjeS10cnVuaworMzEyMjggMGZjYTY1YTA5ZjA2MjgyOGM1ZTU5YTgxNjg5MzM5NjE4YmM3N2NlMiBsZWdhY3ktdHJ1bmsKKzMxMjI5IDYxNGFiYmE1Yjc2MjRmYzM1N2Y4ODU3NjYwOWRjOTJiMTJiNGE4ZmIgbGVnYWN5LXRydW5rCiszMTIzMCAzNzk5OWY2OTI0YjRlNTUzMjg4MmZlYjllMGNkZWFjMzZjZjFlYjNkIGxlZ2FjeS10cnVuaworMzEyMzEgODRmMmM0MzhjM2Y1MmJhMThlZjMyZjkzZjhiZWY0YWViM2U2NGEwOCBsZWdhY3ktdHJ1bmsKKzMxMjMyIDA0MjhkNTkwNjlhOTg0MTI3ZGY2N2IyZTc5MWYwYTk2MDQ5MzNjNTQgbGVnYWN5LXRydW5rCiszMTIzMyBjOGM3ODE2ZDNhMmRhNmUzMDk2NDRjYmUwMWY3NDNiNTliZDk5ZTg4IGxlZ2FjeS10cnVuaworMzEyMzQgMGY2NzMxZDEyNmRlYjE4YzM3ZWQ3NjlhZjA1YzQ2MzVhNGY5NWI3NyBsZWdhY3ktdHJ1bmsKKzMxMjM1IDUzN2JmY2UyYjczMDNmMWFmMWQ2MDg3YTUxMjZjN2NmYTg2ZmY2YzAgbGVnYWN5LXRydW5rCiszMTIzNiBlMGZhNTIwNjdkYmVmYjgyNzNmN2IyYjhmMTljY2FlNDNmNjM2MjkxIGxlZ2FjeS10cnVuaworMzEyMzcgZjg3YjZkMTZiYWU4NWE3OWZmZTE1MGFjMTYyYmZmY2QxMzdiMGY0ZSBsZWdhY3ktdHJ1bmsKKzMxMjM4IDljM2M5OTNlOWI5Y2YyMzM0YWQyM2RlYTczM2RmMTA5OTg0MGUxNjUgbGVnYWN5LXRydW5rCiszMTIzOSBlNGZlMTY4ZTM1ZjE0M2ZiY2E1MmVlMGM5NDFlMDJlZDk5YWE2MzIxIGxlZ2FjeS10cnVuaworMzEyNDAgMDAxY2Y3NGRhYzUwMWE5ZTY1M2QzMzU3MjBjN2JhYjM4N2RlYmFlYiBsZWdhY3ktdHJ1bmsKKzMxMjQxIDE2ODU2Yzk1MTRlMDVhODg0NmQ0ZGQ2NTQ1NmVhOTdjYWE3ZTU4YzcgbGVnYWN5LXRydW5rCiszMTI0MiBhYWRlNGJjMTI1ZjhmZjI5MjRlNGYzNTU5YjFjNjg0MmMyZmVkYTliIGxlZ2FjeS10cnVuaworMzEyNDMgNzYzNzZlNWFmMzg4ZDAxOTJlYTk0YmEwZDM2YjNiN2M4MmY0M2FkNyBsZWdhY3ktdHJ1bmsKKzMxMjQ0IGUzYjVmMzIxZWViYjAzZjRiZWU1MDUyZTg1MTE2NmEyZWI2N2MxODYgbGVnYWN5LXRydW5rCiszMTI0NSA1OTM1YjgyNDNkNzRlNGZmMThkZDI1NDc5ZjBhOWFmNDc2YjcxMDA1IGxlZ2FjeS10cnVuaworMzEyNDYgNDEzMTNkMjBkMWRkZTI2OGFiZTM4Y2YzZWQzNTIzOTcxMThkYWU2MSBsZWdhY3ktdHJ1bmsKKzMxMjQ3IDUyMmVkZDU5MWQyY2YxMzc1YmE0Mjc1ZDBlMzk1MTk5M2Y4ZTIyMGYgbGVnYWN5LXRydW5rCiszMTI0OCA0NzRjYmJkZjAwY2U3ZDY0NDc4ZTgwNTA5YWVhNzBhODczYTU4Yjc4IGxlZ2FjeS10cnVuaworMzEyNDkgMjEyODNiNmVhN2YxYTZkZmI3MDg2NWYyYjFmZjEyNmEwOWU0ODIxOCBsZWdhY3ktdHJ1bmsKKzMxMjUwIDA0Mzg0ZjQyOTBiYWY2ZWZiYzhlMTkxZGMyYzE5ZDI0MmMwNzQyNDcgbGVnYWN5LXRydW5rCiszMTI1MSBjYWQxMTg1ZWVlZjdjMTY4YWVhMWEyOWM1MGI3N2Q4MTdhOTExY2U5IGxlZ2FjeS10cnVuaworMzEyNTIgNzI2NzIxNGYwNzg1NmJjZTc0NzE4NjJjNWY3ZjA4MGVmMTIzNmJjYiBsZWdhY3ktdHJ1bmsKKzMxMjUzIDM5ODJmMTE3Njc5ZWZiODM2OGI5ODJlNjJiNzc3OTU2MzllODFiNzAgbGVnYWN5LXRydW5rCiszMTI1NCBmMmYwNmI2ZWNkZDcxYmQ3NWY0NGEyNGVjMmY4ZTkyYzE5NDRiYmJjIGxlZ2FjeS10cnVuaworMzEyNTUgNWUzMTUyOWZkZDRmYWY5ODYxZmQyZjEzOWY0ZGFjNTcwOGMwNmVmNyBsZWdhY3ktdHJ1bmsKKzMxMjU2IGQ1MDIxODdiMmIwNmUwMGE3ZjViN2IzZWEwNmIxODc1OWU3MWM5YWIgbGVnYWN5LXRydW5rCiszMTI1NyA4ZDkyYWYxNDRjMTZlYzc4NzcwMzdhYTM4Y2FlNDIxMjQ2YTczN2NiIGxlZ2FjeS10cnVuaworMzEyNTggMDNjZmM2MzdjMzkzNTg4MmYyM2M4ODdmZjAzNDFlYmMwMTU4Zjg5NiBsZWdhY3ktdHJ1bmsKKzMxMjU5IGI0NjZjNWZiNGQ4ZWFiY2EzYWVlMDNjM2IwMGRmN2NiMDlkNmM4ZGEgbGVnYWN5LXRydW5rCiszMTI2MCBjMWVjZGRlMzJmODYzYzQ4ZGM4MDQzYzVmNzE2MzBhMWMxN2MwY2UwIGxlZ2FjeS10cnVuaworMzEyNjEgZmE5ZjllNTdlOThmODYwOGMyNGFlZTkzNmU0MzlkN2E4YzQwYWNlNSBsZWdhY3ktdHJ1bmsKKzMxMjYyIGU1ZTI0MmNmNDZiMWM0Yzc3YTUyNzA0MmJhMjBlNDBjNzdiMTkyNGEgbGVnYWN5LXRydW5rCiszMTI2MyA3YjJjZDgwMGMyMjk2ZDQyZWNhNDJmNGQ1NDFjN2NhNjEyMGQyMzEwIGxlZ2FjeS10cnVuaworMzEyNjQgMzJmYjk0YTZhNGZlOWJlY2NlMzJlZDkxNmEyMTk5NTA1ZWJhYTAwYyBsZWdhY3ktdHJ1bmsKKzMxMjY1IGRiNDE2YmQxOGQ0Zjc5ZjJmOGVmMDAxMWMzNTI4ZDYyYWVlZWM4NTAgbGVnYWN5LXRydW5rCiszMTI2NiA0MzY3ZjgwNWRiMDljM2Y2NjA2NmMwMjdiNWU5NjhlMDk4NDA4OTMyIGxlZ2FjeS10cnVuaworMzEyNjcgZDhjNzY1YzA5ZDhjMWE4ZWE2NmI5OGM0ZTNhMTc2YTdlNThhNjVmMSBsZWdhY3ktdHJ1bmsKKzMxMjY4IGNlMzQwZmI0YjYxNDk1MTJiN2ZkYmJjZWYyNWMzOWJhNzNkNGEwYzIgbGVnYWN5LXRydW5rCiszMTI2OSA0YjliOGRmNTRkZTlhZDg1NTQyMjRlYWNmNjQ2N2NhM2U4MWM1MmE2IGxlZ2FjeS10cnVuaworMzEyNzAgZGY3NDEyN2UyYzlmZDE1MjE1ODkyOTQ1MmNjYTM4OGFhMmJhODkwZCBsZWdhY3ktdHJ1bmsKKzMxMjcxIDk1MDM2ODVmYjRlODgwODkyNTI2MWU4ZWU2ZDYyNzAzOGFiZmZmYjkgbGVnYWN5LXRydW5rCiszMTI3MiBiMzMxZTVlNWNjNGFiZjM1NWRlZWU3ZGUwOTc1MDA5MzU0OTcxZWY3IGxlZ2FjeS10cnVuaworMzEyNzMgYWJmOWE5MTJjZmNlOWM1YmI4MGE3OTQ4MGZiZjBlZDFhYTJiYjkyYyBsZWdhY3ktdHJ1bmsKKzMxMjc0IGM0OTYzODMwNWEyOGIwZDI4MDZmMmE0NzRhOTFiZDJkZjlmNGJjODcgbGVnYWN5LXRydW5rCiszMTI3NSA4NTM1OTIxNzA5MWNhYWMyYmZiNGJhNDJiYWE3NjYwOTYxZDgxMjcxIHJlbGVhc2UyMi1tYWludAorMzEyNzYgOTQxZGU3OTFiMTdhZWIzMjdkZjBkMmMzYTY4NjQ0ZDU2NWQ4Y2QyMCBsZWdhY3ktdHJ1bmsKKzMxMjc3IDU5YWU0MWUwNGZmYmU3ZmM3Yjg1NjRlNDA3ODVkMjJhMjdmM2U2NDUgbGVnYWN5LXRydW5rCiszMTI3OCA5Zjk0MDA5YjFhZTBjZTc4YWUyNGIxNmQyNGEyZmI2YWE3ZDg3MGQ5IGxlZ2FjeS10cnVuaworMzEyNzkgNDdhNjkxNWQxYzM2YjRiMzk2M2ZjOTM0N2ZkOTMzNmQ2N2QzZGY3YyBsZWdhY3ktdHJ1bmsKKzMxMjgwIGM3Y2YxYjVkNDcxYjdlN2YzZTJlZmU0NDQ3MGEzZGUxYjU2OThlODMgbGVnYWN5LXRydW5rCiszMTI4MSA3ODUwZmE3ZmI2ZjFhMTQ5YTg5NzFiMzJmZjc0ZGQ1ZDkwNTgwZTNkIHJlbGVhc2UyMi1tYWludAorMzEyODIgMzI5YTAwNzc3ZTMyMGNhZTdlYTg4YTM0MGJmNDY4NmM0YzE3YjFjMCByZWxlYXNlMjItbWFpbnQKKzMxMjgzIDZiMTc4OWFjMmY5NTgxM2UxMjg1OTM0MmU5OTNiYzE4YjZjYzRkMDggbGVnYWN5LXRydW5rCiszMTI4NCA5OGMzNGNjMWNmNDAwYjY0ZTQ4YWYyY2I0NDQ5ZTIyZmNjM2JiNjljIGxlZ2FjeS10cnVuaworMzEyODUgMDM5NTUxMmNlMWI1YWI4OWMxYzY2NzY3MDBjZDI0NWYwNWZlZDQxNSBsZWdhY3ktdHJ1bmsKKzMxMjg2IDM4ZDA1MDU2MTk1YzljMTg3ZTc4NmQwN2VkOTZmMGRkZWQ3ZDY5NjkgcmVsZWFzZTIyLW1haW50CiszMTI4NyBhNGJkZTkxNTExOGM2MDU5MzRlY2FiMGFhNTBkM2FhYTI0NmUxYzg1IGxlZ2FjeS10cnVuaworMzEyODggNTk0ODIzMTcxNjZlNmE3NzMyNDczYWZlMjFjNmM5MzFiYWYxYTExNiBsZWdhY3ktdHJ1bmsKKzMxMjg5IGM4MTQ4ZDdmMGM5ODZlMGYwZGU4ZjYyZDA5NjA3MTNlMzU3ZGM4YjggcmVsZWFzZTIyLW1haW50CiszMTI5MCBhOGE2NDdlMTkyN2I1NmU5ZDY3NzI0NmM1ZmJlNWJlNTQyM2JjNTRhIGxlZ2FjeS10cnVuaworMzEyOTEgZjRjZGJhODNiZTU2MDI4ZTY1Y2ZhYzkzNzBkYWE5M2VmYWZjYWQ5ZiBsZWdhY3ktdHJ1bmsKKzMxMjkyIGZjODgxNzRjMGMwYWRkZTM2Y2E2Mzg2MTk0MWFjYjRjZGZiMjE4NmEgbGVnYWN5LXRydW5rCiszMTI5MyBhMDM2YTUxOTc2MTBjN2M5MjlkMGM5MDRmOGUyMGMyZDlmMzczMzc5IGxlZ2FjeS10cnVuaworMzEyOTQgN2I1MDQzYzBmZjQ3Njg2Nzg2MDJlYzkyZjM5ZDZmNzM3Y2Y4ZDRmMyBsZWdhY3ktdHJ1bmsKKzMxMjk1IGM1YWQwYTI0ODliODI3NWQwYTJkNGQwMzgzMTNjM2RhM2U1YmU2YmEgbGVnYWN5LXRydW5rCiszMTI5NiA4MmNiZjExNzhlNGY0ZjJhNjYwMGZkNDllMjlkYmUyOWYwZmFjYWM1IGxlZ2FjeS10cnVuaworMzEyOTcgMmQ1NWJlM2E4ZWMzNGVjYjE5MTMyZDRiYWJmMTAxNjE0ZmJiZjc2ZCBsZWdhY3ktdHJ1bmsKKzMxMjk4IGRjNWUxZDkxODA1NTgxMzRkMjg2ZmI3NDg4MmQ4NGUyMTlmYTY1MTcgbGVnYWN5LXRydW5rCiszMTI5OSAyYzM4OWEwNDQ4YTRmYjA4YzY0NTI2YzdjYTNiOGVhZDQ3NzUyZWExIGxlZ2FjeS10cnVuaworMzEzMDAgOWY3MTNjN2I3ZmQ5MTAwZTU2NTM4NWMwNjNmZTcxMmY5NjNiNWI5OSBsZWdhY3ktdHJ1bmsKKzMxMzAxIDM1NjZiODRlNjZiOWU3NTZiMjMwNmFkZTYyNjAyYjFjMDIzODIyNzggbGVnYWN5LXRydW5rCiszMTMwMiAyNGU4YzdlNTIxZjU5OGU1ZDBlZDY3MDFhNDljMjA0NThiMTFkZjI4IGxlZ2FjeS10cnVuaworMzEzMDMgYmZjNTI0Mzc5MzA3MTE4NDE2NDVlZjcyZDAzOGFlODFhMzE1NDc5NiBsZWdhY3ktdHJ1bmsKKzMxMzA0IGMxODQyMjcxNmZmMjZiODgxMDUyNzJlOWVhODkyODVlMDEyMjM2ZWMgbGVnYWN5LXRydW5rCiszMTMwNSA4YmZmM2QwOTQ0YmE3NjlmYmYyN2I0Y2FlYWRmOGI4NDE3ZmZlMzhmIGxlZ2FjeS10cnVuaworMzEzMDYgNWY2OTMxYjgzNTJlNDFmMGUxYmIzNTViZmJmYTQ3NmZhMjRhOTUzOSBsZWdhY3ktdHJ1bmsKKzMxMzA3IDFkYzYzNjY1NDNkNDg1ZTc2NGFmNTlhNTAzYWYzMDE5ODRjNDJmNzQgcmVsZWFzZTIyLW1haW50CiszMTMwOCBmYzVhNjBhNjFlMzJmNTNlZGMwODg4MzIyMDViOWRlN2FlZDgwNjUyIGxlZ2FjeS10cnVuaworMzEzMDkgZGQxMTMwMjUzZjEwM2I5NmQ2YWJkZmFkZDFlMjI4N2U0MzU2MDJjNSBsZWdhY3ktdHJ1bmsKKzMxMzEwIGNjMDFmYjY1NGNlM2Y1NWNiNmRlM2UxOTRjOTM5MGRjNTdiZTk4MmQgbGVnYWN5LXRydW5rCiszMTMxMSA5MDRmMGU3Njk4MjA5MDVlYmM3NjVjMjA0YTdmNTJmYjIzODIwNGVmIGxlZ2FjeS10cnVuaworMzEzMTIgZWJjYWVkNzk0OGU4MGUxY2M5N2Y2YmY1MmFiMGM1ZTg3ZGY2MGNkMSBsZWdhY3ktdHJ1bmsKKzMxMzEzIDIxMDAxODJmNzRlMzhhYzU1ZjQwYjQ0MzM3ZmZkZjc3MTczNmM5OWUgbGVnYWN5LXRydW5rCiszMTMxNCBjMjBmZWNiNWNjOWM1NmUzN2ZlNjdmODg5NzhmOTM1MmExZjdiY2FjIGxlZ2FjeS10cnVuaworMzEzMTUgZjM0NDQ2ZmEyMTZlNWZjYzEzNzJhNDVhY2Y1OTI2MDVkYjVkOGY3YyBsZWdhY3ktdHJ1bmsKKzMxMzE2IDBiZGZkNjViYjEyMjU5MzEwOWM5NzZiMTBhNmEzMDI2YTkxNzlhZWYgbGVnYWN5LXRydW5rCiszMTMxNyAzOWIxYmFjODkzNjVmODIwY2QzOTM4MmY0Yjk3NzMzZGE4NDQyMzMxIGxlZ2FjeS10cnVuaworMzEzMTggZjJiNDMxMzY0ZjZmY2JmMGZhNDIyMzJjZDE5NGRlMjQyODMwOWZkMiBsZWdhY3ktdHJ1bmsKKzMxMzE5IGI2NTBhNTRhNzZmZGFkYWViN2UxNTMxZTRmMmUyZjI4ZTYxNDRiYzMgbGVnYWN5LXRydW5rCiszMTMyMCA5YTYwNTRjNmQ0NmZhYjZkYjNiZmYyZjk5ZGE3OGU2MTc3N2FiMTM4IGxlZ2FjeS10cnVuaworMzEzMjEgYjU2ZjAwZWM4MDgzMTI3ODdiZTIyZTJmOGFjNTA0NzM1NTk0OWVlNCBsZWdhY3ktdHJ1bmsKKzMxMzIyIGYwNDA5ZDc1NGI5Mzc3ZWZiY2I5ZmU1ZGMxNmU4MTU0NGVjYTAzN2EgbGVnYWN5LXRydW5rCiszMTMyMyBkMmIwMWM5ZGZmMTY4MzViOWVhZjgxOTliZGZhMGVmYzliZjgwOTAyIGxlZ2FjeS10cnVuaworMzEzMjQgMjA0MmUyMDUxZDk3ODQ3NTYzNzU3OTllN2E2Y2RiM2UxNTJhMjhkOCBsZWdhY3ktdHJ1bmsKKzMxMzI1IDA0MDBiYTc4YTg5NzlhNGY4ODk4MDk2ZWQ0MzhhNzZhYjM5MzgxZTYgbGVnYWN5LXRydW5rCiszMTMyNiA2MTk3M2Q1ZjZlMjUzYzg5N2I4OTc2MTA1MGQ3NzVkYjRjYjFlOWFkIGxlZ2FjeS10cnVuaworMzEzMjcgZTYyMDk5YzY1YTNjM2MxZTM0OTQwMTdiZTFlYWYyYWI4NWYwYjI2NyBsZWdhY3ktdHJ1bmsKKzMxMzI4IGIwNTM5YTQ1MDkxNzI1MGNjNmY1ZTFmYjJiNWY2Mjc3NmU5NzcyZjMgbGVnYWN5LXRydW5rCiszMTMyOSAzNjExOTc2Y2IxNzRhNWY5NTM0OWRiNWE3NmMxOWZmZGQ2MzcyNjcwIGxlZ2FjeS10cnVuaworMzEzMzAgMGM3ZThjM2Y2NDJmNjE1YTU3MmE2Y2E0NDU2MjEwOGJkM2JlZGI4MCBsZWdhY3ktdHJ1bmsKKzMxMzMxIDM3MmUzNDgzZDMyNzU0MjgxYzYxNzUwYWIwZWM2ZmY5NzAyOGQ5ZWYgbGVnYWN5LXRydW5rCiszMTMzMiBjN2RmMjI1ZTRlNGE1NzUxOGQzZjA2NzEzNzkzMGM4MDAzYTgyNTYyIGxlZ2FjeS10cnVuaworMzEzMzMgOGQxYjI3MmM5ZTcxYzI0Mjk0ZGJjNzZlNzc4Mzk3Yzg5OTkwNjZlNSBsZWdhY3ktdHJ1bmsKKzMxMzM0IDllYzQ3ZTY1MTE3ZDM5ZGFhMzQzNGY2OWI2YjdmYjA1ZDVkODBlNjkgcmVsZWFzZTIyLW1haW50CiszMTMzNSBlODg3OGM4ZjU0ZGY1ZDVlMTFiYTdiZDUwN2Q2M2M3MDgyMDYwNDM2IGxlZ2FjeS10cnVuaworMzEzMzYgYjk1YjlhYmI5YmYzOWU1NzFlNzM2ZTMxNmUwNTVmODU5ZGNhZTk0NCBsZWdhY3ktdHJ1bmsKKzMxMzM3IGQyZTdmNDY4ZjIyNGU4MTJlZDUzZmVmOTdkZWJhMjcxMjg2NjQ2NTMgbGVnYWN5LXRydW5rCiszMTMzOCA4ZDZlZTE1ODY2YjIxNmQ0MWFiOWYwMGI3NjE4MmJlOGM0MTkxZjgyIGxlZ2FjeS10cnVuaworMzEzMzkgNTY2M2UwYzgxODYwMmYxODQwZmJlNTA1NmZjOTRkMGMxZmY5ZDhhZSBsZWdhY3ktdHJ1bmsKKzMxMzQwIDQyMzk2YTc4NmY1OTMzMmRjMjRkZDQ3NjU2YmI5M2ZiOWQxMWU2ZTQgbGVnYWN5LXRydW5rCiszMTM0MSBjZDA1YWY3MDFlNWQ2NWJiNzAyMWRiZmNiNWUyNWY5YmNiZTBlZTA4IGxlZ2FjeS10cnVuaworMzEzNDIgZjZjOTVmOTEzOGFkMzcyZDkxMjg2MzA0N2I5OWJlMWYyMWNjOWRmNyBsZWdhY3ktdHJ1bmsKKzMxMzQzIDQ4ZGM0YTU5YTUwZWY4NmUxYTAzMGQ0MzY1OTJmNTNiODM5YzYzMzkgbGVnYWN5LXRydW5rCiszMTM0NCBjYjFlZWFlYjc0YTA2NjA3ODkzYWVlZThkNDYzOGQ3MzBhNTdmMzAzIGxlZ2FjeS10cnVuaworMzEzNDUgZmFmZmIxMWY1NGU4ZDBhNGY4Nzk1YzQyOWQ2MTEyYjU4ZDA0MDRkZSByZWxlYXNlMjItbWFpbnQKKzMxMzQ2IGJmMDgzZTM1MTg1ZjU0MzBjYzFiZTVkZWUzMjdiOTYxNDM5Mjc4MGIgbGVnYWN5LXRydW5rCiszMTM0NyA1OWZiYWUzM2EwZjlkN2U1ZGU3YjIwYmMyOTVlZjkzOGZhYzhmZGVjIGxlZ2FjeS10cnVuaworMzEzNDggZWUxMGQ3ZTdmODE4Y2M0M2JmZDdiYzdjYjQzNDdiZmNmNTNiOWRmOCBsZWdhY3ktdHJ1bmsKKzMxMzQ5IGZiYzQ1YmVhZjAzNDRjZmRkY2QzM2U1N2MxYTg2MWI1NDNjOTgxOWYgbGVnYWN5LXRydW5rCiszMTM1MCBiODA0ZWU1YmViNDkyMzlkZTgwMzMyYTkzMTFmMWIyNmYxNDAzZGQ1IGxlZ2FjeS10cnVuaworMzEzNTEgMTlhYzEyYWM4MDQxNTM1M2M4ZmMyZmRiMGI4M2FiMjExYTBiY2NjOCBsZWdhY3ktdHJ1bmsKKzMxMzUyIDY1MWQxMTIzZWQ2ZTM3MjJhM2FhZmYwMmE5ZTljMjQwMWM5NjE3ZDEgbGVnYWN5LXRydW5rCiszMTM1MyBiZGVhY2Y3YjE1Yzk2NmJiNTE0MTc1YjE4MDA3MWEwZjRlZTlmNzRiIGxlZ2FjeS10cnVuaworMzEzNTQgMDExZjczNDI1OGRiOWJiZWI0NzIwYzE1YzRhZWJiNzZkYzJmODYxZCBsZWdhY3ktdHJ1bmsKKzMxMzU1IDdkZmZjYzQ5OGM0NTgzMWI2Y2JiNDM3MDRhNmZlOGI5M2U2OGY3ZTEgbGVnYWN5LXRydW5rCiszMTM1NiBjMzc3YzU2ZWRmYzhkMzZiMDc3Y2QzNTBiNzNlYWVjMTc5NjdiM2Y1IGxlZ2FjeS10cnVuaworMzEzNTcgNmJhOTQwY2Q5OWVmOTgzMWM2MjA1YTg2NjcxNjkyMzNiNTZlODA2YSByZWxlYXNlMjItbWFpbnQKKzMxMzU4IDRhMDJjYTZiZGI2ZjRmN2NjYzljN2EyNDc3MzljZTk3ZGFlNmIwNGQgbGVnYWN5LXRydW5rCiszMTM1OSBiZjljYTA4NmI4YWE2MjcwNDJhMjc4ZGJhNzU0M2I0OWJlY2EwN2Q4IGxlZ2FjeS10cnVuaworMzEzNjAgNmI1Njk2NTQxYmE0ZWY0YTkzZTU4Mjg0ZjhiMDM2MTk3YzkwZjQ3MiBsZWdhY3ktdHJ1bmsKKzMxMzYxIDdmMTcxZjlkYjhhZmU0ODQwNWYwOGM0MmFkMDM1NzVhOTkyMzE1YmEgbGVnYWN5LXRydW5rCiszMTM2MiA1MjNlZmQ3NzMyNjFhNjcyYWE5ZmJiYWJlYmY1YzgzZjZlODUzNmE1IGxlZ2FjeS10cnVuaworMzEzNjMgOTRiZDExYjExZGY3ZDVmZGIwNzUxOGFhNjkyOTc3YTEwOTk1MmRkMiBsZWdhY3ktdHJ1bmsKKzMxMzY0IDVkMmQyNGE3MzgyNTkyZDAxM2ZkOWZhMjU3M2FmMDViZWNkYTI2ODMgbGVnYWN5LXRydW5rCiszMTM2NSAyMjFlYWY3ODE0ZjQ0YjYyOTA2MGJiMmJkYjFhMzJiY2E0OGU2MDM0IGxlZ2FjeS10cnVuaworMzEzNjYgMTAyNTkxMjJiZjVmMmQxMzlhZTY3NzQ5N2M5NzUxOTYwZGYyYjkzYyBsZWdhY3ktdHJ1bmsKKzMxMzY3IGI1MTk3MGJhMjE4MDYzMzA5NDUyOTYyYmQ2YWFjNWM1YTlkY2EwMWMgbGVnYWN5LXRydW5rCiszMTM2OCA1MDE3M2VhMWZkNDQwNzE2YTkwMDI4NTZkOTkxNGQ0NzdmMGRkNzQ2IGxlZ2FjeS10cnVuaworMzEzNjkgMTViMDMxNzQ4MTE2YzM2OGM1YmRiMzBjMzY3YzE3MGM5YzhlMjgwMiBsZWdhY3ktdHJ1bmsKKzMxMzcwIDMxNjBkMzA0MTUyMTk0Y2UwODdkOGMyMTI5NjllYjQwMzkwZjI1OTIgbGVnYWN5LXRydW5rCiszMTM3MSAxYzEyOTliYzMzZDYwNzI3NmNiMzI0OWY2NDgxYmYxY2M0ODg5NzY5IGxlZ2FjeS10cnVuaworMzEzNzIgMjNmNmIwZDAxYmM2YWQ0MzRjYjYwOThkOWU1ZGUzMmE2ZGNhNmVhYSBsZWdhY3ktdHJ1bmsKKzMxMzczIGU0ZGJmMGYwMDk1YmU4NmNmMzUxZjc0YmExZGQ2NGU3NjY5Y2EzMmMgbGVnYWN5LXRydW5rCiszMTM3NCBkYWE0NDk1Y2Y2MWFiMTRjNDU4NjNjYWM4MmY5NDY4MjMwYjlmZjE5IGxlZ2FjeS10cnVuaworMzEzNzUgZTlkNzEwMmY4Mjc4MGZmYmUwMjI5NGExYzQ4OTYyYjFjNjE5YTgxMCBsZWdhY3ktdHJ1bmsKKzMxMzc2IGUwZGE0NTc3YWFhNjI0MTU5NjdiNTZkMjQ4Mzg0YThjMzZmZWU2ZTUgbGVnYWN5LXRydW5rCiszMTM3NyBjYjJjM2ZiYmE3MmVlNzZiZmVlMTZjNTA1Y2RjOWJiOGY3OWU2ODFkIGxlZ2FjeS10cnVuaworMzEzNzggM2ViMDM3NmU5M2U4NDIwNjUwYjQzMzBjYjQzNGRlOTVmMWQyYjJjOSByZWxlYXNlMjItbWFpbnQKKzMxMzc5IGM1ZGQwNzdkZTBmYzY0NmE3ZTE3ZGQzMjcxOTMyOTg2OTdhMjMyNGYgbGVnYWN5LXRydW5rCiszMTM4MCA3YTIwYmJkYmZmMzY4MmY3ZjY2NTNkNWI5NzAyNzUxMzg1NDE5MzI1IGxlZ2FjeS10cnVuaworMzEzODEgNGI3NWEwYjc2ODU3MTliZjhiM2UxMzI0NGY5N2RhNTljOTAyNmY4MSBsZWdhY3ktdHJ1bmsKKzMxMzgyIDU2MjBiMDc4NjI3MTE5YjY5YjZkMDM0Zjg3NWM1MmY5NWVjMzJjZDIgbGVnYWN5LXRydW5rCiszMTM4MyA4MWFmY2E3NDdjYWE1YzE4NmVkMDE4NzllNjIwNzliODIzNWY5NjkyIGxlZ2FjeS10cnVuaworMzEzODQgMDE2MGZmY2IxOWUzMzdiZjEzYjgyOWM1MjcxMWJlZmQyYWQzMmZlYyBsZWdhY3ktdHJ1bmsKKzMxMzg1IGNkMTBmYTcyMWE1MTJhYzhiMzgyZTBiN2UzYzMzNzc0ZTZiNDBlNDQgbGVnYWN5LXRydW5rCiszMTM4NiBhODc4MDQ3OWQ0ZTA5NzdjMjI4ZWI3ZjhjNzgyNjk1NjllOGVlYWRmIGxlZ2FjeS10cnVuaworMzEzODcgOTQ1M2Q4Y2RkMDFlOGY3YzA4YjUwNTM2YWNiMDg5ZmNiNmQzZjE4MiBsZWdhY3ktdHJ1bmsKKzMxMzg4IGU3Y2QwODYxYzI3M2I1NjI2NGNiN2NhMjVlN2VjYzNkNjMyY2RjNGUgbGVnYWN5LXRydW5rCiszMTM4OSAzODc0NjMzN2FlNmUwOGUxNTM4NmM1NDYzMmZmOWIzODM2ZWEzZDIwIGxlZ2FjeS10cnVuaworMzEzOTAgZjg0NDBiYjhlZGU1ZDE5ZjQ5ZmMyZjZmZWFjNWVhZmY5MjNiNzgyZCBsZWdhY3ktdHJ1bmsKKzMxMzkxIDgzYmI2YzlkZDc4YzBjNjNiYzUxMWQ5NDA5MDZkYWVhMTNmOWY1MDUgbGVnYWN5LXRydW5rCiszMTM5MiBkMTk2NjFlMTk4Zjc0NzJiNjAzNjBlZGViNDVmZThiZTczNzkyZTNkIGxlZ2FjeS10cnVuaworMzEzOTMgYjRlYjM0MzcyYmRiNWU3MTJjN2I2NDhmMDM4Y2FkMjBmZWQ2Yjc0YSBsZWdhY3ktdHJ1bmsKKzMxMzk0IDY1NDk0NDY5YWQzZWVmZGUyNGRiYzYyY2ZkMjIyYjc1ZjY1NzQ1NjkgbGVnYWN5LXRydW5rCiszMTM5NSBiYmJiYTBlZTYxZmI2ZjJmNjA4NDY2Mzg0YWE5YmFlODM5OWZkNmMwIGxlZ2FjeS10cnVuaworMzEzOTYgZTZjZjk1NTdkZTQyYTg5OWM5ZjlhYjU0NzZkZjM3MzJmYzBkZTg5YSByZWxlYXNlMjItbWFpbnQKKzMxMzk3IGE1MjEzN2I4OGViM2NmNjRkOWI2NWZkMTBjYjVjY2Q5YzNlN2FhNTUgbGVnYWN5LXRydW5rCiszMTM5OCA4NzBjZjE0YWRkMmFkYmM3MDZhNDlkNDdiMzU3YWVmZTBkOWE3ZmNmIGxlZ2FjeS10cnVuaworMzEzOTkgYTljOTZiYjQ2OTUzYmRlOGIxNGQ3ZDMyOGM1NjJlZDkwYTkwZWM5MCBsZWdhY3ktdHJ1bmsKKzMxNDAwIDEwMGZiNjg0Y2YzZTVmNTM0M2NhMGIwNGI2NDFjY2Y1MzBlZTZlMmYgbGVnYWN5LXRydW5rCiszMTQwMSAxMWU2MTIzZGU2ZmVkNmZmOTA2NWZhZWQ5YjcwYTQ4OWFjZmZmYWEyIGxlZ2FjeS10cnVuaworMzE0MDIgODhhNDJhN2MyMzhhNjRlNzkwMjVlY2NkZjRlNThhMTgxOGVjNDdhZSBsZWdhY3ktdHJ1bmsKKzMxNDAzIDZhZjc4MGUwODYyZDAwOWM2ODBhZTA4OTQwNDVkNjk5YzU5MTMyMDcgbGVnYWN5LXRydW5rCiszMTQwNCBhYmRlZWI4MThhOWEwN2M0MTM1NjBlMTUzOWM0NjM4ZjZiOWIzYmFjIGxlZ2FjeS10cnVuaworMzE0MDUgODc4OWU5ODIyYWE0Yzk3MWRmMWY4ZWFjNjNhMTI3ZjQzNjExOWFjZiBsZWdhY3ktdHJ1bmsKKzMxNDA2IDhhNmM0NTkxMGVjOTA4ZDU3ODM2NDk2YmQxM2E3Yzg4ZThlN2NjZTYgcmVsZWFzZTIxLW1haW50CiszMTQwNyBiZTc2ODNhNmY1MjFjNWE2ZDAyODNjNWY3NGYxMzY0NTdhMmViNGExIGxlZ2FjeS10cnVuaworMzE0MDggODg0ZmI1NThmMmI5MWQwYmQwMjE2N2ZhM2FhZGI2NmNhY2M4NzcwZSBsZWdhY3ktdHJ1bmsKKzMxNDA5IDVmZWQxMTQyZmQzNGI5MDY2YTQ2ZjEzNzc5OTE2NzgxNDFmNGI5YmMgbGVnYWN5LXRydW5rCiszMTQxMCAxNDhkOGMwYjk2NDcyMzM5YTViMjg3OTFhZjQ4ZGVjODZiODIzMDYxIGxlZ2FjeS10cnVuaworMzE0MTEgNDY2NTk2NzVkN2Y3OTIwOWNmZGU0NjBmNTVhYTkxMjJlYzAyYzVhZCBsZWdhY3ktdHJ1bmsKKzMxNDEyIDUyMGE4YzBjOWEyNWVjOGI3MWQzN2E0NWNkMDkwMmZkNjY0MWVmNjEgbGVnYWN5LXRydW5rCiszMTQxMyAyMDk0ZTE5OWZkNTU2MzFmMGM2MmYxMDA3YzUxODY0MzRlNTIzZDllIGxlZ2FjeS10cnVuaworMzE0MTQgZWFjZjk3NzU5MDM4YzM1OTJkODBjZThjZGIwMzM0MGZhNTY2N2VjMiBsZWdhY3ktdHJ1bmsKKzMxNDE1IDIwNmM1ZTNiNWJlNzViMTljZWVjZmZlZGE2OWJmZDJkOWJiNDFjZTIgbGVnYWN5LXRydW5rCiszMTQxNiBjZWRmOWVmYTY4ZjgxNGYzOGEzMTI3OTU1YTM3MjlkMzA5NTQxNDczIGxlZ2FjeS10cnVuaworMzE0MTcgMzFlODU4MWJjZjI1OTM3OGU5NWFmMjY4OWY0MDUyZTc0OThjYzgyNyBsZWdhY3ktdHJ1bmsKKzMxNDE4IDU3ZDBiYWQ3M2M4ZTVhMjRiY2YxNTQxZWEwZjI2MGIyMmUxZjA0MjQgcmVsZWFzZTIyLW1haW50CiszMTQxOSBlN2Q1OWRiNjgzOWE3MTlhYTVmNzRhZWI0OWFkOWZlNDIwMmM4NGNkIGxlZ2FjeS10cnVuaworMzE0MjAgNWFlZTFjMjcyOTM4ZDUwNTAzYjA4NGVjNGQzODJlZDUzMzA0YjhjMSByZWxlYXNlMjItbWFpbnQKKzMxNDIxIGQ4YjA2MDEyYjM4MTVmMmE5Y2YwYjRlODc3NDA0ZDlkZTg5YmY0MDUgbGVnYWN5LXRydW5rCiszMTQyMiBhNzU5MDU3ZWNmMWIzMjA1NzA1MDhjNmY5OWJhN2U1ZTkxYmZjYmI3IGxlZ2FjeS10cnVuaworMzE0MjMgNjZmYTI0Nzc3ZjBhZWZkOGM0ZDc4Y2U5MDQzYTNlY2IxMWJiNWQ4MCBsZWdhY3ktdHJ1bmsKKzMxNDI0IDc0MjhjMTJmNTAzZjZkOTY5Y2ZkMWMyOGIzOWUzOThkMTQzZjJhMzYgbGVnYWN5LXRydW5rCiszMTQyNSA0ZTMxZTQwODY4NDk4YThiYWI5YzRhOGU4MTVlODkzOGM4ZTk3OGQzIGxlZ2FjeS10cnVuaworMzE0MjYgY2YxZWZjYTgyYjE4MzdmYjBjM2I1OTc4MDFlM2NjZTAwM2Y1MmZkNCBsZWdhY3ktdHJ1bmsKKzMxNDI3IGMxNjNmOTViMzAwYzY0OWY5MDU3MThhYWI4Njg5NmNhN2NhNjY1ZDQgbGVnYWN5LXRydW5rCiszMTQyOCBkMGY0ZjNjZDRmZTQxYzg1NzUyZWE5ZjAyODU5ODc0YWIzZjQ1MWUwIGxlZ2FjeS10cnVuaworMzE0MjkgMTk3ZDY0ZGMwNGRjMjQ2ZjQ4NzBhNDg0ZmY0MTk3NTFhMjc1Y2ZjNyBsZWdhY3ktdHJ1bmsKKzMxNDMwIDU1YWRmMDhhMjEzYTJkODQ2MWYxN2Y3YTJiZmJkYzExNjM3NzUyMjggbGVnYWN5LXRydW5rCiszMTQzMSA4MWIyYmNiZmUzOWJiNjAwODNiZGQ4N2YxODQ5MjE5NmNlYTI1MTVlIGxlZ2FjeS10cnVuaworMzE0MzIgZTU4MjBhMTUwZDg3ZmU4NDM0ZWM4MGVkZDQwYjgzNGZjNDcwNWZkYyBsZWdhY3ktdHJ1bmsKKzMxNDMzIDliZGFjY2Q4YTkwOGMyMzAyMTUwMDYwMjJjOTY4OTQzNzIzZDgzZjEgbGVnYWN5LXRydW5rCiszMTQzNCAyMzNlZDZjYzhlMTRhNzI0ZWM2Zjk3YzdjOGU5ZDc4ZTMwMTVhZGE4IGxlZ2FjeS10cnVuaworMzE0MzUgYTY4MmNlYzZiODgwYTQ5NzQ3OTFjZDAwZmUwZjEyYTZmYTcxZDc0MyBsZWdhY3ktdHJ1bmsKKzMxNDM2IDNlMTY5ZDI5NDM5NWI4MWQ0YTgwOGYwNzMwZWY5NmYyNTkzMjMyYzYgbGVnYWN5LXRydW5rCiszMTQzNyAxNzQ3NDlmNWIzMmZhYTE4NjMzYjY2NDc4ODJkZTNkMmRjZDc0YWM1IGFzdC1icmFuY2gKKzMxNDM4IDQ3YjhjYWJhYjdiMTAzZmVjYjU5NGQ4Y2M3ZDNiZjk3YTNlOTIxMzMgbGVnYWN5LXRydW5rCiszMTQzOSA5YjQyMzIwZjFlMGZiMDQ4NzlhYzBmYzU2ODY4ODZmM2I4ZTMwODNkIGxlZ2FjeS10cnVuaworMzE0NDAgYjBkY2E5MmMyOTlhNWU5NjNlNGExZWIzMGJhNGQ1MmNiMDk2Y2UzZCBsZWdhY3ktdHJ1bmsKKzMxNDQxIDk1Yjc1MDQ0NmJiOTlkNGFkMWEwM2ZjMzExMzEyMDFkZmMyZmYwMmYgbGVnYWN5LXRydW5rCiszMTQ0MiBjNWViYWNiYmEwYmVjMDU5MzFhODc2N2E4NmVmM2I5MjIwZjM5YjVlIGxlZ2FjeS10cnVuaworMzE0NDMgY2RiMWFiYzFiNDA5MjliODAxYTE5MDQ5MmJkZmFjNjhjMmY1NmVmMyBsZWdhY3ktdHJ1bmsKKzMxNDQ0IGM3ZDdmMzUwZTk2YzQ1YTk2OGE1ZjRhODcwOTkxYjU4NDc3NWY3YTYgbGVnYWN5LXRydW5rCiszMTQ0NSBhNmRmYWJmM2I5MmJkN2EzNTVlODVhMTA3MDgwZjIwNjg3YWM5OGYwIGxlZ2FjeS10cnVuaworMzE0NDYgOTNkNDQ4NzBlOGI1OGExZWNkMTIzZDZhYTliZDljOTRjZTkxOGQyMCBsZWdhY3ktdHJ1bmsKKzMxNDQ3IGMzNDZkMDk1NzkxZDc4ODg1N2Q2MGY0YTVkODE5ZjBmMjk0ZjMyYTkgbGVnYWN5LXRydW5rCiszMTQ0OCBiZTM3MWZmYzRjZDA3YTFhZTUxMTNhN2VjNTUwNWQ4ZmI5ZGIwZTk2IGxlZ2FjeS10cnVuaworMzE0NDkgNGI1YzJlMDI1YzVlZjVmODkyZGY3ZWQ4ZGJiNGE0MzJhZjQ0N2I1OSBsZWdhY3ktdHJ1bmsKKzMxNDUwIDhlNzQzMmNkZjdkOGZjNjU0YWNiYzlhNDE2MGY4MTE2MDc2MTUxNzAgbGVnYWN5LXRydW5rCiszMTQ1MSAyNzU5YjA0OGRhOWI2ZjQwOWRjMTljMDQzYzNmZDg0M2JiNTkwMzU0IHJlbGVhc2UyMi1tYWludAorMzE0NTIgZWZjNDY1ODEwZTFlZGFjOWZmMTFhYTgyOWM5ZTJiYzJlNTgzMDk5ZSBsZWdhY3ktdHJ1bmsKKzMxNDUzIGVjMTA1MmVmNzNiYTg5YzQ3M2E0N2FkMzI5MzZiOWZjMDRhZDdiZDIgbGVnYWN5LXRydW5rCiszMTQ1NCAzMDE4ZjMxZjY4MzA5MjNiOTA4Y2ZjY2VmMTg1MzY2NjU1YzM1NWUzIGxlZ2FjeS10cnVuaworMzE0NTUgMmM0YWIxZGE2ZWI0N2VhMThjYTY0ZjZkYjg4MTYyNzExYWM5OTBmMCBsZWdhY3ktdHJ1bmsKKzMxNDU2IGJlZGFjYTk4NTNmOTA0Y2IzYjliNDgxMzc4ZmQ0NmNjOTM0YjQwYmQgbGVnYWN5LXRydW5rCiszMTQ1NyA4NGQzMDliNjc2ZmE3Yjc3MTI4YjQ5YTJjYTAwM2QxZTFkMjAyNzQ1IGxlZ2FjeS10cnVuaworMzE0NTggZTMxYjM5OTMwYTMxMjgzNGVjZGJjODczNWZkNTA0MmY3MWZkNmI0YSBsZWdhY3ktdHJ1bmsKKzMxNDU5IDNkYTMxNzc4ZWNkNzI0ZjhhMTQwZmU3NzQ2ZDQ0M2QxZjVhM2EyMjIgbGVnYWN5LXRydW5rCiszMTQ2MCA4NTBjMGRhMTAxYjYzZWJiZWJjNDZhMmNlODc0ZDRlODcxZWUzZmJiIGxlZ2FjeS10cnVuaworMzE0NjEgMmQ1MDA0OWJkMjFkZjdjYWExMWVjMmIxZDUwNTM5ZDc5OTZlOWNjYyBsZWdhY3ktdHJ1bmsKKzMxNDYyIDcwZTI5ZWY5ZmE2MmYwMWQ0ZjNiM2Y3OTJlNzVjNDBlYjU3OTliMTcgYXN0LWJyYW5jaAorMzE0NjMgYWM2ODNhYzY3NTlhZmNmZjU0Mzg0YTQ3MTc5MmNmYTAzMDczZjBhMSBsZWdhY3ktdHJ1bmsKKzMxNDY0IDQ0ZjNlMzE1OTI5YjllNGQ5ZmRmMzNkZjlhYTlmYzM3ZDIyZGZhZDIgbGVnYWN5LXRydW5rCiszMTQ2NSBmNjdhYjZiNjY0NTQwYjQyZDcwYWFkMGY0ZmVhMTcwMWJmYWQyNjBkIGxlZ2FjeS10cnVuaworMzE0NjYgODZiNTA2ZGJlYTE4MDMyZmYxY2MxMGU1OGNmODBhNTA4ODUwNGJjYSBsZWdhY3ktdHJ1bmsKKzMxNDY3IDFhZmFmZWQ5ZmE3NzU1YmMzODY1NDNkZTcwOGVmODI5N2RmMzNhMWEgbGVnYWN5LXRydW5rCiszMTQ2OCA4YzIxMWNjZGUyYjRiNGQ4YzU1YmUzNjRhNGY2MGFmZDdmYTk3MjJkIGxlZ2FjeS10cnVuaworMzE0NjkgYzk0MDFhMzZiYWU3MTRmMGNkNWYxNDFjZDE3ZjQ2NzMyNmVhNTg3ZSBsZWdhY3ktdHJ1bmsKKzMxNDcwIDhjNmM3OTc3MjdhOTM1ZmIwNTc5NTMxY2VjMzkwZGZmNWM5NWFhOWIgbGVnYWN5LXRydW5rCiszMTQ3MSAxYmQ0ODU3MTc1NjQ2MjYwYjlhNDUxN2E3NzI2MTAxNmIwNDM1OGUwIGxlZ2FjeS10cnVuaworMzE0NzIgMTQ0NTFkZDNhY2IwNGQxYWRkODExYWMxNmQ0YzA2NmJkYWYyY2ZmNiBsZWdhY3ktdHJ1bmsKKzMxNDczIDkyNTVmYmRlNDNmMzYyZDFjMDRmMzRkZTQ2M2ViN2E3MmYwZjEwOTQgbGVnYWN5LXRydW5rCiszMTQ3NCAzYjMwZjY2MzYyYmUwMDU4Nzk0NGFlOTY5YzY5MmIwZmFjMWUyNjU0IGxlZ2FjeS10cnVuaworMzE0NzUgYTY5NjJmNTJmMjM5ODFhNGMxODljOTQzYjM4Zjg0MGI5OGEwMTc4ZSBsZWdhY3ktdHJ1bmsKKzMxNDc2IGI1NTYwYWU0ZDk3MWRlMDU1MzMyZWI3NGNmMGZjZTBiNmY5MTRkOGUgbGVnYWN5LXRydW5rCiszMTQ3NyBkYWU3OWQ3ODMyMDU3OTYwNmM1ZmRjYzNiMjNjMjU5YTRjNWMyMjc2IGxlZ2FjeS10cnVuaworMzE0NzggMGYwMThkZjk3NGRiYjljODExMzk4ODVmZjFlMDE1YzViY2RiYTc2OCBsZWdhY3ktdHJ1bmsKKzMxNDc5IGRiMWQ0NTg0YTVlMWMxMTVjYjA4MmEyNWZjOTE3Y2U0ODY3ZDc5NTcgbGVnYWN5LXRydW5rCiszMTQ4MCBiNGVlYjBiYmRkNDhiOGNiNDViN2QxNDNmMWQyN2M3ZGUzZmFhNzNhIGxlZ2FjeS10cnVuaworMzE0ODEgNDdhNzY0ZTQzZTkwMTg1M2JmZThmMzQ2MDQ2YjNhNThiZGUwZGVlOCBsZWdhY3ktdHJ1bmsKKzMxNDgyIGI1NDBlNjA4YmI4YTZiY2IxODQ2MGNlNjE1ZDY2NDc2YWY3YTEyMjQgbGVnYWN5LXRydW5rCiszMTQ4MyBhYTg4YWVmM2FiMGVlYTg0MDM3MzMxY2FkOGI3MjY3MzdiZWE4ZDQwIGxlZ2FjeS10cnVuaworMzE0ODQgMWU3NmFlM2MxMTU0ZDZlZjFhZmJjYTI2ODcyYTFiMzBlZjY5ODFhNSBsZWdhY3ktdHJ1bmsKKzMxNDg1IGYzMTA4OTQxMDdjYjE5NTNhMWJkNWE3NzliZWU2ZGI1MjdiZmE5NmIgbGVnYWN5LXRydW5rCiszMTQ4NiBmMzMxMGRjZWYzZjhiNWUwODlmNjdjNDNmYTc0NzFlNzAyYmFkYjE2IGxlZ2FjeS10cnVuaworMzE0ODcgNzBlMTk2YWY0NzZkNDhlZWMzNTFmZjYxMGIwMzVmMmI5MGY5NDU5ZCBsZWdhY3ktdHJ1bmsKKzMxNDg4IDkxZmM5NjM3ZTU2YTA5YzIwMzBkNTUxY2ZmZWVmMDM2MjExMDEwYmUgbGVnYWN5LXRydW5rCiszMTQ4OSBlMDdiMjFlYTNjNDVkZGY0NDkzMGVmZTkxYTA4MTYyOGQ3MzYwMWQ0IGxlZ2FjeS10cnVuaworMzE0OTAgY2M0YWQ5YWZhMjFkMzM4ODBlZTJkMjIzMmNjZWY1YmIxNmVkNGI1YyBsZWdhY3ktdHJ1bmsKKzMxNDkxIGNiM2YxODkwOGNlYmVlMDViOWM5MTg0MjAwZjkwZWU1NjQxYTVmMTAgbGVnYWN5LXRydW5rCiszMTQ5MiBhYzEwNzI5ZjA5MzJkMDlhYjk3OGI5M2QzMzc4MDFmZWVkNTMwY2E3IGxlZ2FjeS10cnVuaworMzE0OTMgZTI3MzQyYTY0MTczN2Y3ZTAwNDY4MTdmMWU3MmRjOTRhZDBiZjk4YyBsZWdhY3ktdHJ1bmsKKzMxNDk0IDIyNjQ2MzQ0NTY5NzIwM2EyNzUwMzViZDA2YjMyOTZlOGNjMDg4NmUgbGVnYWN5LXRydW5rCiszMTQ5NSAzYmFhYmQwMjdjYzRkNDEyMGU4ZTEyNzBiNzUwMDMyZmU2MzNhNzhlIGxlZ2FjeS10cnVuaworMzE0OTYgOGRjYzUyMGQzYTI5NjdhMmJiYzU2MTYxZjZiMmM2ZDI1YzhkY2E5MSBsZWdhY3ktdHJ1bmsKKzMxNDk3IGIyOGQ0ZmRlOWU5ZmI4ZjNjOGI5MGNlOTNkODg3OTM1NGJmMmUwYzggbGVnYWN5LXRydW5rCiszMTQ5OCA0MzM3YTg5OWZkMTMyNDdmMzI0MjFlNDEzOTEyYjU2ZDFhNWUzYzJmIHJlbGVhc2UyMi1tYWludAorMzE0OTkgNDdjOTQyMTM1OGRkMDQ3ZDI5YzMzMjA3NTM4YjBjODY2NTFmMTQ1YSByZWxlYXNlMjItbWFpbnQKKzMxNTAwIDRjODVkZTI0N2VlZGI5N2Y0NGM5NDlmZjhkMzg2YzY0ZTIwZWMwYWMgbGVnYWN5LXRydW5rCiszMTUwMSBlMGE4YzMxMTUwMDVlMWMzMzllOTM2YTY5MDBhMjdhY2Q3NWRlM2ViIGxlZ2FjeS10cnVuaworMzE1MDIgMmUwYWE2OGQ0MzRmY2M0MDZhZGE5ZmY1YTM5OGE3ODY1MmFkYjBhOCBsZWdhY3ktdHJ1bmsKKzMxNTAzIDUzYzgwMjkyNzIwMmU4NDI3NTM4NDQ2YTQ1NzkzMWVlNTNkNTAyNDAgbGVnYWN5LXRydW5rCiszMTUwNCA4ZmM5MWY1MGI4NjE1MDY1ZDZmY2NlZThmZTgzMThkZmI3ZDg5OTM4IGxlZ2FjeS10cnVuaworMzE1MDUgZDBkMjlkZjJiNjM5MDA1M2Q1YjNkYjQ5NTk5NzAzNTI1MjRlYTVhZSBsZWdhY3ktdHJ1bmsKKzMxNTA2IGNjOTViYjc4NzBkYzU0N2MwY2M4ZTgzNWZkNzQxOGU2N2Y3OTFhMzUgbGVnYWN5LXRydW5rCiszMTUwNyBkNWVhMmI2N2I1ZjQ0M2YzYzY1NzVmY2JkZmM4YTYwMjc0NzRlYmExIGxlZ2FjeS10cnVuaworMzE1MDggMGZlMzIxZTc4YWQzMWExYmFhYmQ5NjVkNTU3OTE2MTcyODdhNjM0MCBsZWdhY3ktdHJ1bmsKKzMxNTA5IDRiOTlhNzAxZGVmZTBlYjcwYjYzMTk4ODEwYTc2MDQyNTFiY2IwYzQgbGVnYWN5LXRydW5rCiszMTUxMCA5NjMyN2VjNzZkOWUwMmI4NDMxMTU4ZDI0NjFjMThjYzNlNGZkOGFmIGxlZ2FjeS10cnVuaworMzE1MTEgZTAxZDVkYmI2NmE0NTkwMTFlMTRjZmM4MmI0NzAzMGMzOTI3NjA5ZSBsZWdhY3ktdHJ1bmsKKzMxNTEyIGViMmE5ODRkMzc0NzNlY2RlNzM1ZDI1YmJlOTY2OGFiNjMyNGExYmEgbGVnYWN5LXRydW5rCiszMTUxMyAzODdhNDEyMmNiZDFlNjZjMmRiY2M1Y2U1MzE5ZWI2ZTNiNmJjMjRjIGxlZ2FjeS10cnVuaworMzE1MTQgOWUwZjIyNDIyNzdiZmMxZmM0MDJmMTQ2MDJiNGE2NzdhZGYxMTBhZSByMjNhMi1icmFuY2gKKzMxNTE2IGNlZjdjOTVlNzQ4YzFjYzY4ZTk0YjlhY2IzMjU0OWRmYTkzOTJmY2EgcjIzYTItYnJhbmNoCiszMTUxNyA3NjUwMTk3NThlOTUxMDJhMmJhYTFjYjIyYTAyYmM0ZDg5Yjk5MTY0IHIyM2EyLWJyYW5jaAorMzE1MTcgNzIxYjZmMTgxZmNiOWE5NDIwYmNhODhkN2MwZjVmODU0NzQ4MjNjMSByMjNhMi1icmFuY2gKKzMxNTE5IGM0YjkxOWZhMGJlM2ViOTRmNzNjNzQ4YjY4ZGFhNWJkZGY5NmY1OWYgbGVnYWN5LXRydW5rCiszMTUyMCA0ODA5ZmIwZTg2NjAxODg0ZjhmM2UwY2M3NTg2Yzg0YmQ1N2UwYmQyIGxlZ2FjeS10cnVuaworMzE1MjEgZjU5ODcwOTc2MTQ2ODYwYmFiYzVkMzY0ODY1ZTZkN2RjZmJmMTQ0OCBsZWdhY3ktdHJ1bmsKKzMxNTIyIDY1ODYwMjEyNGRmNTI4MjNhNjU5MmE2ZDY1OGRhZWY1MDZhMWFiN2UgbGVnYWN5LXRydW5rCiszMTUyMyAyYzc1MTkzNmY2OTc2N2E3YWY0MzQ5ZDFkY2ZmNzI1M2RhZTllZTdmIGxlZ2FjeS10cnVuaworMzE1MjQgYjI2ZjU3NTg0MTRhMGYxMzUwOGYwYmE0OWFlYjNlNzI5YjU3MzI5MCBsZWdhY3ktdHJ1bmsKKzMxNTI1IGU3YjI2YzNmMzU2ZjU3ZDM1OWM1NTA5M2Y2OTJmOGE0Njc3NDI2MWUgbGVnYWN5LXRydW5rCiszMTUyNiAwYjNkYjBlZGIxNTFlYzAwN2ZjZDNmYjUyNGJmZDc2NGNmNDgyMjZhIGxlZ2FjeS10cnVuaworMzE1MjcgNTM2N2NkMGVlYzQ3N2M3NTkwYTMwZDIwZWUxNjlhZTQwM2Y5NzdhZCBsZWdhY3ktdHJ1bmsKKzMxNTI4IDQ0ODk5MThhNGNjZGI5MDM2MDI0Y2M4M2IyNzZiOGE5OTliMDVjOGUgbGVnYWN5LXRydW5rCiszMTUyOSBiZWVhNGYyMWM5ZjA1N2MzYjEzOWZmOTY4MGY1ODE2MjYxYjBlODM4IGxlZ2FjeS10cnVuaworMzE1MzAgZTI2N2VkMTAwZDg1ZmNhYWM5NTZjMDkwMjk4ZjExYjgxMzE5YzczYiBsZWdhY3ktdHJ1bmsKKzMxNTMxIGUxMWExNzhiYjQ1M2ZhNDQ3NmQxNGE1ZGRiMTY2NjY0MWRjN2NkNzQgbGVnYWN5LXRydW5rCiszMTUzMiAxMDdkOTg4OTAxYTBmOTNjNDY4YWM5MTA1MDc2NjAxMDEyMjg3MDNjIGxlZ2FjeS10cnVuaworMzE1MzMgOWUzOGY4MTcwOTJmZWYwOTJhZGY3YWM0NzM0ZGE2YzA3MTE4ZmQ2OSBsZWdhY3ktdHJ1bmsKKzMxNTM0IGUyN2Y1OGE1MDczNzA0ODI5YzdkOWIxMjdhNzlhNTNhN2EyMjliNmQgbGVnYWN5LXRydW5rCiszMTUzNSA4ZjcwNjAyZmJlYmIzYzNjZTE3NzFhMDRmOTBkMDIwNDYzODY5YzBjIGxlZ2FjeS10cnVuaworMzE1MzYgMWQ5MmMxNWJkMGU3MjU4OTEzN2RjZDY0ZGUwNGI0OTM4OWY2MWU2OSByZWxlYXNlMjItbWFpbnQKKzMxNTM3IDczOWVjZmI1ZjE1ZTg4OWMwZmYxMThjOGUyZWEwNGIxODRmMzI5NTIgcmVsZWFzZTIyLW1haW50CiszMTUzOCA3N2JlZjZhYTQ4ZTU1ZmIwZDg2YThiMThkNDMzNjIyMjAzMWFjYTNmIHJlbGVhc2UyMi1tYWludAorMzE1MzkgMTZiMjUwMzIyMTdmZjUxMDEzNmE5Y2ZmYmM3MjkxYzMyZGI1Y2Q0MiBsZWdhY3ktdHJ1bmsKKzMxNTQwIGQ5MmQ5YjZhOGE3ZDNjMjY4N2JiNTFlZjAyN2I0YjVjOTk1YTQwN2QgcmVsZWFzZTIyLW1haW50CiszMTU0MSBlYjVlMjk2MTczMTA5ZDBjY2YwOThmZmFiOWYxNWI1MDY5ZGFlNTU2IHJlbGVhc2UyMi1tYWludAorMzE1NDIgNWNmMDkyMWY0Yjk2MjYyNWU5ZGFlMmYxYTFjYWZjOTVjYzRiNTU1YSByZWxlYXNlMjItbWFpbnQKKzMxNTQzIDJkZjkyMDQ5ZDkyNTAxN2JiYjg2MDE1MmFjZjdhYjc2ODQ0YzZiMTYgcmVsZWFzZTIyLW1haW50CiszMTU0NCBhNGY5ZDkxYTMyMWE3OWRmNDhiNzU3OTU1ZDI2ZDIxNDMwZjZhYTJkIHJlbGVhc2UyMi1tYWludAorMzE1NDUgZmUxMGVjZThiYTY4YzRhZWZhNDhkMTMzNzM1NzYwN2UzYWY5ZTE3ZCBsZWdhY3ktdHJ1bmsKKzMxNTQ2IDdhYTIxNjM4ODlhY2Y4N2YwNjU0OTFhZGE4MTUwMzk0M2U1ZTJhNDkgbGVnYWN5LXRydW5rCiszMTU0NyAwZWI5NDgzNjQ5OTBmYjk5MTUyNGRiNDY3Zjk1MWQwNjRiMzRlMGY0IGxlZ2FjeS10cnVuaworMzE1NDggZmFjZmY1MjJlNzQ0MmNlMDFmYThjYjM4MGI2NTJjNWZkMTM4Y2QzNyBsZWdhY3ktdHJ1bmsKKzMxNTQ5IDcyOWExYzJlYzRlOGUwZmRhMmRlNTNhM2ZkN2JhMTQyYWRlZGY1Y2UgbGVnYWN5LXRydW5rCiszMTU1MCA2MTI4ODNlYWY1MGM2ZTcxY2ExODcwMDhlNmY1MWU5OWY4ZWI3MTVlIGxlZ2FjeS10cnVuaworMzE1NTEgNzlhZDYxNTZkNmM0MjQ0NjU4MTdjNWJiZTZmNDk2OGY0YjFhNDYzNSBsZWdhY3ktdHJ1bmsKKzMxNTUyIDA1NmZmYTU1NDUxN2E3ODg3NzdkZWViZDE3YjIyNDMzN2U1ZWI5MWUgcjIzYTItYnJhbmNoCiszMTU1MyBhOGMwYWY4MjI4ODg0NmU4YTk1ZWFmZTY4YjAwMmY0NmUzMmYxYTc5IHIyM2EyLWJyYW5jaAorMzE1NTQgYTJlOTcwNTg4ZTViYjY4ODAyZWFjZjk5MjgwMDI5MDhiM2FlNTFkYyByMjNhMi1icmFuY2gKKzMxNTU1IGJjZTNkZjA3NWYzNzgwOTNiMjgwZjRmMGYzMmI1ODQxZTAzMjhlMWUgcjIzYTItYnJhbmNoCiszMTU1NiAzYmJjYzNiYmE1NjBjOGI0NjczZjMxZjhhZmQxZjg2YmYyY2RhNTY0IHIyM2EyLWJyYW5jaAorMzE1NTcgYjg0OTQ4MmM3MGM2ZDlmMGI1NTAyY2MyYWVhMDI5OTViYTkzY2YyNCBsZWdhY3ktdHJ1bmsKKzMxNTU4IGZhYzc2MjI4M2FiY2NhZjEwMjZmZmNjMDBjZDBiYjc1N2YwOTg2ODIgcjIzYTItYnJhbmNoCiszMTU1OSAxZTkwNzQ2MmU4M2FkYmNmNTRkYmE3NTRlZjQ0MDEwZTYwZThmOWZjIGxlZ2FjeS10cnVuaworMzE1NjAgNzhjOWM0YTAxOGNkMWEwMzhiN2ZhZTU5NDM0ZGMxMmFmMmExYWIzMiBsZWdhY3ktdHJ1bmsKKzMxNTYxIDMyYTBjMmY0MjJmMThkZTkxNjRlMDMwMTFlNjEzNzk4YTA4YTNmM2MgbGVnYWN5LXRydW5rCiszMTU2MiAyMWE1MGMzMDhkYjQ1OTJlZDBmOGZkNWZhMDk0NGNhZTQ0YmYzNzM4IGxlZ2FjeS10cnVuaworMzE1NjMgNWRmYWZmOTgwOTEwMDFkZDZmMjVhYjIwY2M3MzQxZjUwZGViMTk0NiBsZWdhY3ktdHJ1bmsKKzMxNTY0IDg3MmM2ZjIwMjhmYzRiN2YzNmZmZmY1YzM1Y2Q1ZWQ2ZjU4ZDRiMzIgbGVnYWN5LXRydW5rCiszMTU2NSA4MDg0MzdiODNiMTUxODY2YWQyM2IwOThlNWI1ZDU5MzBjNTA0MzZjIGxlZ2FjeS10cnVuaworMzE1NjYgNjFmYTZiNTVjMWRlMmQ2NWE0ZTYzMzJkMWE4OThlZTA1Y2NhMWNhNSBsZWdhY3ktdHJ1bmsKKzMxNTY3IGU2M2YxZWNjZDI1MGRhZDM5YTVlYjkxODhhOTBiODNhNWVkM2RkYTEgbGVnYWN5LXRydW5rCiszMTU2OCA5MDY0NTk2MTRiNWU3MTJiNTE4YzkxNjI5ZTg1M2ZlMWQwZmJjOWYwIGxlZ2FjeS10cnVuaworMzE1NjkgNDNhOWVjYmQ5NjA3Y2EzM2QxODcyNzkxNmE4M2E5MzVkMDVmNGQ0YiBsZWdhY3ktdHJ1bmsKKzMxNTcwIGFiZDU3YzUzNThiZDdhMGVhMDMxMDJlOTgwMjkwMzAwNGE3MzllMjEgbGVnYWN5LXRydW5rCiszMTU3MSA2ZTIwYjA0OWVkNmY2YzQ1YzgxOTU4M2IxMThlZTA3MDNmZDEyZTU3IGxlZ2FjeS10cnVuaworMzE1NzIgMjVmZDI4YzhiYjZiYWU5YTgxZTMzNmYyZWI1MmQ1MjU3YzBhNGJkZCBsZWdhY3ktdHJ1bmsKKzMxNTczIDkwNGE4YjgyMmRhZmJmYmM2ZWZhMjQ1ODU2OWYzNmZlMTRiZjc3MTMgbGVnYWN5LXRydW5rCiszMTU3NCA1M2JlZjIwZjg0Y2NkMmU5MjM5OTNiY2Y1Y2ExZjJhMmZkYTVmZGQyIGxlZ2FjeS10cnVuaworMzE1NzUgMWMyYzk3ZDM0NTYzODRlNzJiOWYxYjE0MGQ5ZTUwZmUzZWE5ZGFjYiBsZWdhY3ktdHJ1bmsKKzMxNTc2IDkxNjI0YTQ3NTM3YzcwMWQ1OGU4NGZjYzg3OTMwMmEwMGIxNGVmMDAgbGVnYWN5LXRydW5rCiszMTU3NyBmMzRmY2Q2M2FlMjhlMDgzNTc3MjZjZjhmZTdmZjI5MWNiNTA4YzAzIGxlZ2FjeS10cnVuaworMzE1NzggNTNmZmFiNWRiMDE1ZGQ3YWM2YWI4YThhZDY1N2Y3ZGM1N2QwYmNiMCByZWxlYXNlMjItbWFpbnQKKzMxNTc5IGJlMDlkMzI2ODdkOGM1ZWY1NzlkNTlkMGMxMmM0NGNiZDgwYTRiMGEgcmVsZWFzZTIyLW1haW50CiszMTU4MCAzZGRiMDkyYWNlYThiOGFlNTMzZTI4YmEyZDU2ZTM3NDcxY2QyM2NhIGxlZ2FjeS10cnVuaworMzE1ODEgNGY2YzYzMzA4MDYzMzdkNTBiMjg0Y2YzOGJjZDhlNjFiN2QxNDJhYyBsZWdhY3ktdHJ1bmsKKzMxNTgyIGQ4YjlkN2MwNDE0NjU0M2U3MWFiZDVmY2IwZmRhYzc4YjMxNTRjM2QgbGVnYWN5LXRydW5rCiszMTU4MyAxYjY1MzhhYTA5NTkxZTFlOWI0MjYwOGI3ZWE2YTZkZTBkOTQwODQxIGxlZ2FjeS10cnVuaworMzE1ODQgNGVhMzc4YTcxZjk2NmE4YmQ4ZjAyZDY2YzM1ODI4Y2M4YmQ1YjBhZCByZWxlYXNlMjItbWFpbnQKKzMxNTg1IGRiOTJjNzdiMDVlMjZiNWNlMzkwNWM3YjIyM2I1NmE0OTJhMDYwNGQgbGVnYWN5LXRydW5rCiszMTU4NiA0ODZhMGY1MTZkYjAzZDE3YzcwODdmYTQ1YjllYTQzODRjMmU2ODkzIGxlZ2FjeS10cnVuaworMzE1ODcgNzg0ZWQ2MDViNTEzMGJhYTZmNDNmYjBiYTJhZjQ0YWEyY2Q0MzdmYiBsZWdhY3ktdHJ1bmsKKzMxNTg4IDc4MDJkOGMxYWRhYzg0MGIyMDQyODI4NzFlNTdlMzI4Y2U4ZGUyOGIgbGVnYWN5LXRydW5rCiszMTU4OSAyZThmMDUzMTkxOWJiMmYxNDQxYzJlYTc3ZDVjNDgzMWVmNTE3ODIwIGxlZ2FjeS10cnVuaworMzE1OTAgMTkyYmQ2ZTEzNWFhZGE1OGY1NzVjMzczNzg1ZDdlNGUyOGU0YmM4OSBsZWdhY3ktdHJ1bmsKKzMxNTkxIGIzOGNlYmM3NmQ4MjUxZjVhMjlkYmMzMDE5YTJlYmVjMGRlYzM1ZWQgbGVnYWN5LXRydW5rCiszMTU5MiA1YWJjNWQwODgxNGY5NjhhM2FjZGI0YzNlMzc1NWE1MGU4OGNiYzRmIGxlZ2FjeS10cnVuaworMzE1OTMgODIzZDViMWYzMmUxMmViNTk5NTUzM2FhNTZlMDQ3ZjJlOGI5Y2M0MSBsZWdhY3ktdHJ1bmsKKzMxNTk0IDBhODliNDA2YzczMmYxZjZhMjM4YzJhMTk4NTliYThiZTQ1ZGNhNzQgbGVnYWN5LXRydW5rCiszMTU5NSA0OThkYjFiY2Q2NjQ4OTRjYWQzYWJjYzM3Y2M4MzQ1NTUzNWJmYmQ3IGxlZ2FjeS10cnVuaworMzE1OTYgY2E1YjBjZDdhNTI1MDQ5NWNkYjBhZGNkNDM2ZTE4NmY2YWZjOTMzNCBsZWdhY3ktdHJ1bmsKKzMxNTk3IDQwMTM0MDcwZTZhNmEwZGRiYjFmN2VhNzg4NDlmOGZlN2FlM2Y3YWEgbGVnYWN5LXRydW5rCiszMTU5OCBhOGM4N2EwYmViOTgwMzYxMDkxNWNkMDY2MTNiMDMwNzZiMGY4MzFmIGxlZ2FjeS10cnVuaworMzE1OTkgMWEwYzIzMWM2YjBjYWU4MDQyOTQyNmYxODk5YTBjMTg2ZjZmNzk5MyBsZWdhY3ktdHJ1bmsKKzMxNjAwIDcyM2M1NDU3MzA3ZDkzODVhYjJhYWJlZTE5MGU5NDAxNjdmZjkyMjIgbGVnYWN5LXRydW5rCiszMTYwMSA3ZjkwYjViNzAwMWVkMWZkODhmOTgzZGI1ZjAzNWI4MTVmMmNjMGJhIHJlbGVhc2UyMi1tYWludAorMzE2MDIgZmI3OWNjMjYzMGMxZWU0MjQyYmI3MjE5YzA1OGQ3YjhiZjI0ZDE4NiByZWxlYXNlMjItbWFpbnQKKzMxNjAzIGY4ZmM1ZTE0YmZlODdhNWNmNWRkNzVjMmQxNjMxZTRjNzA0ODg1MmIgbGVnYWN5LXRydW5rCiszMTYwNCBjNzU2NjE0NDQ2NTUzODgzMjVkMjAxMzVjZGJkNzYyNWU2MmZiMTEwIGxlZ2FjeS10cnVuaworMzE2MDUgYzM2NjVkZjY2ZDZkNWIyYzhkYTliOTY1YmIxY2MwMjkxMmUxYzkxOSBsZWdhY3ktdHJ1bmsKKzMxNjA2IDMyNDg5NmI3ZjRlMWUyNTkxOGFmMWE4ZTk5MzUzNDQ2MWVjY2E5NzggbGVnYWN5LXRydW5rCiszMTYwNyBjNjFlZjE4M2NlMmYxNTY0NWM0YTQwMGFjMDFmYTY1YTlhOWM4NjIyIGxlZ2FjeS10cnVuaworMzE2MDggZDY3MzA1OTA1MjZjMzE0YzVhZTBmNmY4YmE2YTcxZTM2NDdhMTEzZiBsZWdhY3ktdHJ1bmsKKzMxNjA5IDlkMjk3ZDNkZTM2ZjU4NjFhNWRiNzY3ZTljYTc0MGViYmUxNTdkNzUgbGVnYWN5LXRydW5rCiszMTYxMCBmNzJjMzgzYmNjNDVkNGY4ODQ0ZjMwM2M0NDYxOTQ2NWFhMTVlY2ZjIGxlZ2FjeS10cnVuaworMzE2MTEgODZkODM4NGQ4ODEwMmZlMjg4NzIzMDE3NTY0YjEzNzZhMmI2YzVlNiBsZWdhY3ktdHJ1bmsKKzMxNjEyIDg2Njk2NGM4NWI4ZTI2ZDgzOTVjNDE3NzY5ZWE0ZTUyNWNjZjM4MzIgbGVnYWN5LXRydW5rCiszMTYxMyA1YjNkNTliOTc4YTJkNjlmMTY2ZTNkOTcyYWFiMzIxZDJkZGM5YmM1IGxlZ2FjeS10cnVuaworMzE2MTQgYThhNjQzNjRhNzExZDQxOWQ2YThiYTVmNmJlODVkZWRlYTFiZmY5NSBsZWdhY3ktdHJ1bmsKKzMxNjE1IDA0NTVjZjg5YjEyMzk4YTBlNjhjM2U2NTNkYzQwODkxMDliZmY1OTUgbGVnYWN5LXRydW5rCiszMTYxNiBiMDQ2MjVjZWEwNjEzYWFkNmRhNjgwYTNmZjdiOGRmMDkyYTYxZThiIGxlZ2FjeS10cnVuaworMzE2MTcgN2ZkY2M0Y2ZjNzU5MTc1NTRlOWFkNzczMTE2N2RmYzJlYzc4YjlmMyBsZWdhY3ktdHJ1bmsKKzMxNjE4IDAwZGVkNjJkMjY3OGE0MzVmZDQwZDZiY2QwMDQxYjhiZDA5NmE2OGIgbGVnYWN5LXRydW5rCiszMTYxOSBmY2IzOWIwYTZlMzA2YzgwNThjZmU3NDVmYTAxZmRlZGRkYjlkZjcyIGxlZ2FjeS10cnVuaworMzE2MjAgYmI2YmQ1NDlmOTJhNzk2NGViOTY5YWZlMDRjYWE1MDlmZTAyNDU3YiBsZWdhY3ktdHJ1bmsKKzMxNjIxIGI4Y2I5MGZjMzUyM2QzNjg0OWE0YTA5ODgwYmQ5NjkxNTU3ZjhlNmQgbGVnYWN5LXRydW5rCiszMTYyMiAwYzg5ZGM2MjU0YmU4ZDg3NGVmMTBiM2M5ZmYxOGU0OGNjNjQxNjdlIGxlZ2FjeS10cnVuaworMzE2MjMgY2Y5ZDkxMjgzNDVjM2YxYjQ5YWRmY2RmNmVlOWNiMjdlODI5NzVmZSBsZWdhY3ktdHJ1bmsKKzMxNjI0IGE1ODc0NDUzYmYxN2M2NjA4ZTU5MmQ3ZmJhODJmN2IzZDk0NDg3MWMgcmVsZWFzZTIyLW1haW50CiszMTYyNSAyOTk2NWQwZDQ2NTA1OWQzMDg3NGU2Zjc4MGM1NDg0YWUxMjZjYzQzIGxlZ2FjeS10cnVuaworMzE2MjYgNDRiYTE1NzI1MThmNzAyOWRhNTRiMGNhMzYzYjkxNjdjN2VlYzExNyBsZWdhY3ktdHJ1bmsKKzMxNjI3IGY0MmZiYzdjN2Q4ZTlhYzJlMDVmZDQyZTc0MjAwMjFiZDA2YWZjMDUgbGVnYWN5LXRydW5rCiszMTYyOCAyNDc0MzgxNTI3YmJjOWM0MmEyMGQ1ZTk0OWQ3NTIyM2Q0YTA3NzA3IGxlZ2FjeS10cnVuaworMzE2MjkgNDY1NDA1YTE1OWMxZjQyNzdmNmE0ZTZkNDY3NGM4MTEzNzk1ODMxOSBsZWdhY3ktdHJ1bmsKKzMxNjMwIGQ5ZTljOTY0YjZhNDZlNTBkYWZmMzQ5MzZhNWI5ZTA3M2ViMjM3NmYgbGVnYWN5LXRydW5rCiszMTYzMSAxNGY2NWQ2NjEwODQ4ZTViYzk1NmI0NzY4ZDQ5YzhjODhkY2Q1NjYzIGxlZ2FjeS10cnVuaworMzE2MzIgM2M1YTg4MTQ0NzBjOWM0YmZhYjc1ZWM3MGQzNTYwMjNmNGQ4NGRlMyBsZWdhY3ktdHJ1bmsKKzMxNjMzIDA0YTkzYjdiZGNlNDk2MTE1YjEwNzhiOTdmMjkyY2MzZDk0ZTc0MWMgbGVnYWN5LXRydW5rCiszMTYzNCAxMmJhYjg3YTNkZDIzNDVjZTlhNDNhMDIzNDBmYjliOTMzYTUwODUyIGxlZ2FjeS10cnVuaworMzE2MzUgODk5ZjJkMjEwYTM0ZDg1NDBlNmEzZmY0ZGM2ZTQ2ZDRlOTY1MTM5NSBsZWdhY3ktdHJ1bmsKKzMxNjM2IGQ1YWFhNjdjMDk2YWYzNTY5MmUzYmRjOTQyYWVmZWJhODBhZThiYzMgbGVnYWN5LXRydW5rCiszMTYzNyA3NDhmMmU1YjgyOTM4ODJmN2ZjYmIyMTg5YTI4OWZjMmJjOTQyYjIzIGxlZ2FjeS10cnVuaworMzE2MzggMzEwMDg0MzNjNzRmYWRmOGJmYTliOWQxNmVjYjYwNGU1N2IyYzU1OSBsZWdhY3ktdHJ1bmsKKzMxNjM5IGQ1MGQxZmY0MmI1YWNlOGQ1NTYxNmYxMjA5YWE2NTFlNzNlZGI5ZWEgbGVnYWN5LXRydW5rCiszMTY0MCAyZDU5Y2EyOWYzODRkNzkyYjNhODE2YjllNWE1ZTIyMmNmYjZlZDc1IGxlZ2FjeS10cnVuaworMzE2NDEgN2U2NDkxMzgzMTJiM2ZmNGRkODJkYjFjZDRmNWRmNjVjNzQzNGRhYiBsZWdhY3ktdHJ1bmsKKzMxNjQyIDU0YjM1ZGE5ODc5ZTk4ODA1Y2ZlMTNiNTRkYzM2M2JhYjZjYTIwYmYgbGVnYWN5LXRydW5rCiszMTY0MyBhYjI3MTgzYzg5MjdmNjUwOTY1MTQ5OWI1NGYzOWJiNDcyN2IzNGMxIGxlZ2FjeS10cnVuaworMzE2NDQgZjRlNzJhMWE5ZjEzZTg2YzI2MmVmNDUzYzU1MjAyNzU1MTU3YTFlMiBsZWdhY3ktdHJ1bmsKKzMxNjQ1IDVlNWVlZmEyNWYzYWQxYmY1OTY4ZDBjNDI3MjFiODcwZjgyYWY1ZjkgbGVnYWN5LXRydW5rCiszMTY0NiBiZjg2NmFiMzlkZmYyYTU3ODc0NmI3MTM4ODQ1YmY0MTI3ZjQ1OTIyIGxlZ2FjeS10cnVuaworMzE2NDcgMmYzY2QzZjU0MGFkMWFhNTBkOGNlZTMxYjBiMTg5ZjIwZTZmZTg0MiBsZWdhY3ktdHJ1bmsKKzMxNjQ4IGQ5YjQ4N2I5MDM0YTQ5M2Y2NzQ5YzdjYTI4NjQyNjk2MjhkMmNhODggbGVnYWN5LXRydW5rCiszMTY0OSAxNTc3M2U3NThmYzczYWJjNDk1NzRjOWQ4ZGQ5ZTQwY2Y1NzQzODQxIGxlZ2FjeS10cnVuaworMzE2NTAgOThkMTA3MTM2MmYwNDBkNDM4ZTU3YWI1YThlNzNmYmUzOTAxZWZkNSBsZWdhY3ktdHJ1bmsKKzMxNjUxIGRkNmE2MjU3OGJjODY0MDY0NGY5YmExNDcxYmM0MWE2YjFmYTNkNzIgbGVnYWN5LXRydW5rCiszMTY1MiBkMzZkZDQxZTg5MGYyYmExOTZjMzgwZTE3NmVlNDZmODFkZjI0YmY4IGxlZ2FjeS10cnVuaworMzE2NTMgN2EyZjY4MzM5NWU3MjgyYzhiMzNkZmUyNzZhODYwZGRkOTQwZDk2OCBsZWdhY3ktdHJ1bmsKKzMxNjU0IDJjOGMyYzZiMmFiNzliMWU0ZjI2MjA4OTc5YTBmNTNjYjhhZDI3MWEgbGVnYWN5LXRydW5rCiszMTY1NSA2Mjg4OGE3ZWRmMGI1NTRmM2NkZDIwNTE4NmQ5NzZlYmE4ZDdhNWFkIGxlZ2FjeS10cnVuaworMzE2NTYgMTQ0NjNmNDc4MjQwMjI2OGFhZDM2NmIzZTkxNzQ1OTAwMjM4ZGFjMSBsZWdhY3ktdHJ1bmsKKzMxNjU3IDJmYzUyYmU3Nzk5OTEzNGQ3MGYyNTZmNTI3ZjgyZmY1ZDRkN2QyYzMgbGVnYWN5LXRydW5rCiszMTY1OCA5Mzc4ZjZlNTUxYWU3MjE2YTFkMGJmNTBlMmE4MGU1MmMyMzJiNjFmIGxlZ2FjeS10cnVuaworMzE2NTkgOWI0ZWVkNGJiM2UyZTRhMTgzMzljNTI5ODg3ZTYxNzYxYzRhNDQyMiBsZWdhY3ktdHJ1bmsKKzMxNjYwIDRmNGYyYTE1NDQ3ODQ5NTVhZTMxOGEyZmNiY2I1NmU3M2ViZDhmMTEgcmVsZWFzZTIyLW1haW50CiszMTY2MSA4Njk2OTVjYmEyY2QzN2U2M2FkNWQ0Y2I5MmNhNTVhYWU1OGI0NWRmIGxlZ2FjeS10cnVuaworMzE2NjIgZDI0NTY0ZTdlOTk5Y2RkY2M5YWEzZDI1NzQ4NGVjMDU1ODY1N2NmYiBsZWdhY3ktdHJ1bmsKKzMxNjYzIGMyNGEyM2IxZjE5OGFmMGI1MzU3MTljYmE3YTY4NjgyZmY2Y2U1N2QgbGVnYWN5LXRydW5rCiszMTY2NCAzOWNiOTE3YjVmN2FiNGJhZTkyNDJiNjBhZTE4ODEyZmNiMTZjOTBiIGxlZ2FjeS10cnVuaworMzE2NjUgZjE5ODFlZTk4MjIzY2U1YWIyNTBlNzAwNjNhODA0OGQwZDMwZjAzNSByZWxlYXNlMjItbWFpbnQKKzMxNjY2IDg4ZTU4ZTNkNTgwNzczZTcwNGUxNjE5NWRiNjFmZGI5NjJhM2U0OTEgbGVnYWN5LXRydW5rCiszMTY2NyBmNDY5YTZkMDc3ZjFlOTUwOGU3YjQ0ZWRkZDVhNGJkYTc1ZDg4ZjUxIGxlZ2FjeS10cnVuaworMzE2NjggNGNjY2VmOWI0ZDU0NTc1N2JlMmEzMTQzNTZmOGM1OTdlZWE5MGQyNyBsZWdhY3ktdHJ1bmsKKzMxNjY5IDVmOTIzMTY1MzE5ZDVjYjY4Yzk1OWI4NjM2OGZlYmZkZmQ3Mzc2MWQgbGVnYWN5LXRydW5rCiszMTY3MCA4NzkxMzUyOWYyNDgwOThmOWU1NDdkMmI2YjU5Mzc3MjhlYTBiOWVkIGxlZ2FjeS10cnVuaworMzE2NzEgYTI0YWFiY2Y1ZWEyODE4NmI4NWQ2YTNjMTYwODkzZTNhNmIyNjU3NCBsZWdhY3ktdHJ1bmsKKzMxNjcyIGIwMDljM2VmMjdiNTFjNTM3OWIwM2I3MzkzODFhYTM3ZjAwOTM3NDkgbGVnYWN5LXRydW5rCiszMTY3MyA1MGVhOGRlZDI5ZDAxN2YzNzI1MzlkOGM1MzkwNzUzNDczYTU1M2FhIGxlZ2FjeS10cnVuaworMzE2NzQgMDQ3YjVkMDAwYWFhNTE2NGRkNzhiZTVkMTE2MDY3Nzc4NjVhZmU4NCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc1IDFkNjYyMzQyZTE5YTY0YjM2OTljNGJkNzdlMDlhOGE3NzExMmM3OWEgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY3NiA5N2I5N2U1NzE5MGNmZjczOTk4ZmQxOWUyM2E5ZjQ4NDY2ZWE5NThhIGxlZ2FjeS10cnVuaworMzE2NzcgZjlmMzAxMGZjODZmNzZhOTFiYzJmNTQwMTk5ODRiYTNjNWQxZTVkNCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc4IDljYTRhNjdiOTk3MzZmYmVhMDdkOGEwOTYyNDQwZjA5M2IzNTg4YmEgbGVnYWN5LXRydW5rCiszMTY3OSBjZGU0NDQxODQzMzZmYmRjN2I2NTZhNTBjYzMyOTdmNzQ3ZTNmYzc2IGxlZ2FjeS10cnVuaworMzE2ODAgYjUzNDU1YTUxYjc4MDk1ZjUzZDA3NjZlNmNmMDA2NjgwZDlkMDM4OCBsZWdhY3ktdHJ1bmsKKzMxNjgxIDY1NWEwODU1N2E0M2VjMTYyNGFiNjViMjIyNjZjMTcwOGI2NDYzOGUgbGVnYWN5LXRydW5rCiszMTY4MiA3ODliMjRkNjVkNDIwNDU3Nzg2NzhiYmY4N2Y0NDYzZjRlMjY4ZWU3IGxlZ2FjeS10cnVuaworMzE2ODMgZWIxNWRlNmE0YTRjZDA2ZDIwZWJhMDhmYTczMDIwYTQxODkxNzcxNyBsZWdhY3ktdHJ1bmsKKzMxNjg0IGIyMGEzNjg1ZDIzZTFkMWE2ZTM1Y2Y0MWVmNWJiY2ZjNThhMjQyNWQgbGVnYWN5LXRydW5rCiszMTY4NSBmOWRiOWRjNDU2YWI1NzAzODE3Y2U3NGQ0YTMyMjk3YjA2N2Y3Y2JiIGxlZ2FjeS10cnVuaworMzE2ODYgN2QwNGJkODk3NjYxODc0NWEwMWM4ZmY0ZjQzMjczZDNhMDVkMDRjNSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjg3IDQxYTlhMDcyYzY4MTc2YWY2Y2M4ZDUyMGVkZDk3Nzk3OWE5YTU5MjEgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY4OCAyY2MxOWEzMjVkNjY3NjQwZTkzMjljZmQ0YTczOGM3MmJiZGJiNDYwIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2ODkgZGJmM2ViZWNhN2IxZGE2MmU2MjI5NTZlNTUyOTIwNmU2MjM4NjYyMyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjkwIDM3Nzk2MWQ3NjYxMDVmZWUzN2Y0MDgyMTI3ODBlMmRkZDg3ZDFmYjcgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY5MSAzOTkyY2E3MDBlNjU4MDMxMzRmNjYxYzY4NzI3YmE5NjcyMWQ1OTY2IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2OTIgYTNjZjA3YmFjMzczNjlmMmE2NWQ1MjY1NTg2ODIwM2NjMzVmOTQyMSBsZWdhY3ktdHJ1bmsKKzMxNjkzIDUyNGU1ZjlmODVlNmFmMDMzN2NhM2I4OTU2YzU4ZjBkMzZjYjRmN2YgbGVnYWN5LXRydW5rCiszMTY5NCA4ODg5NjU0YzBkZDVkMDk5ZjA1ODU4ZjA1ZDg5YjFjNTg4NjA5NGEwIGxlZ2FjeS10cnVuaworMzE2OTUgODQzZDVjNzg5NTJhODIyZWEwMTkyN2YwMmI1YWIwMDQzZmM1ZTVlNiBsZWdhY3ktdHJ1bmsKKzMxNjk2IDg5OGNlNGU5NmY1OTJiMGM1YjA2NWMxNTY0YzA5ZDQ1MWI3MTUzMGYgbGVnYWN5LXRydW5rCiszMTY5NyBmOWI3MDJjNTJkYWVhMjk5NjJjZTAzOTJhMzc1YTA2ZTA1ZDE0M2IzIGxlZ2FjeS10cnVuaworMzE2OTggMjgxNWMxYTlmNzM1ODM0YmU3NjEyYjA2YmMyNjlhMWNjNDBlNzlkNSBsZWdhY3ktdHJ1bmsKKzMxNjk5IDllNzM3ZDYzZjM4MDFlNzRkYmVkZjMwYzI1MmRmYWNjMzUwNmNjMzAgbGVnYWN5LXRydW5rCiszMTcwMCA0NGMzMTIzNjc0M2EwNzgxNTIxMGQwNGFlMTA1OTdhNTdiZjRiM2FkIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDEgMjk0NzQ1OWIwNzg5MjMyOTNkNzY4YmFkMDcwOWJhZWIyZjM4YmY0NiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzAyIDkwMmZjZmQ1ZDY1ZDA5OGFlOGFiMDExMDk3YTM5OTBlZWE3NTA4M2IgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwMyA3NmQwNjE4ZjNmZTBkODc5MmI4NDJlNzU1NDMyMzYxMTJlNmUxNDNmIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDQgYTgzNjFiY2ExYzVjYzc3ZTQ2YTExMWRiNGNkMGQ4Yzc4MmM5OGVjNyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzA1IDVjMGRiNDFkMzhmOTM2MDliODMyNmZhZGVhMTJiYzRiYjkwZTYyZmMgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwNiA5NWFiZjNmYzJiMmQzMzQ0YzQ3MTVmNjdkNjhiMGM4MzY0MDA5OGM3IGxlZ2FjeS10cnVuaworMzE3MDcgMTJkNGRmNzFiZGFhMzVkZjQyZWU2NDQ3MWVkYjU2ZjZiMWJhODFhMSBsZWdhY3ktdHJ1bmsKKzMxNzA4IGJkYTQ5MGZjMjY5MWViOTg3NzRkYmY5NGQ4ZGJkNTU2MTM2ZjAxNGQgbGVnYWN5LXRydW5rCiszMTcwOSAwZDg1NTI0MDhmY2RlMThhNzVkYmIwNjJjZDI3M2U2ODQ4Y2FlOTU1IGxlZ2FjeS10cnVuaworMzE3MTAgZTlmYzJjMTQxNjA4OWViODcwMTlmNzkzMDdiNjFmMTc3ZTNiYzYxMiBsZWdhY3ktdHJ1bmsKKzMxNzExIDZkNzhjNmJmMzFmN2QyYzhmY2ZhYzE3NzI2NGY1OWQyMzBjYzI2NmYgbGVnYWN5LXRydW5rCiszMTcxMiAxNzhkMTljZmYxNjM4MTMyZmM3MzAzZmRiM2FmN2IzN2Q0MTIyODQzIGxlZ2FjeS10cnVuaworMzE3MTMgM2ZlNzJhOTk0MTAzYjM1Y2QzZDNlMTllOTM2ZTU5M2I2MTQxYjMzMyBsZWdhY3ktdHJ1bmsKKzMxNzE0IDhhNzEzMDFhZmMyZGE2MDJiNjc5NGNjYzE4YWRmZjg0ODlkYjBlYWQgbGVnYWN5LXRydW5rCiszMTcxNSA0M2M3ZDhhMDg0ZmJjMzlkOWUyZTVlYzc1YWEwMzk5YTI4NmVmZjExIHJlbGVhc2UyMi1tYWludAorMzE3MTYgZTQwNTkyOWMyMjNlNTdjYjJkOGE0YjNmZDJjNjdlMDJiY2I4ZDYwZSBsZWdhY3ktdHJ1bmsKKzMxNzE3IDI5ZDgwMzQwZmQ0MTRmODQzMzYzMGM3MGVkNWI4MGI5NjkyM2ExZTIgbGVnYWN5LXRydW5rCiszMTcxOCAwMWFlZDcyZTMwOWU1MmMxZGJlNjBiYzBkZDdjYzQ3MjRjOThhODIwIGxlZ2FjeS10cnVuaworMzE3MTkgYmExYmQ2ZjZlNmVkYzU2MDhkYzY2MTI1NWU4NzRlYWRkNjI3ODk5YiBsZWdhY3ktdHJ1bmsKKzMxNzIwIGFjOTY1YTUwMmQxYjc3YzVkYTZiOTgxZGRkMGFlMmY0MTYzZDA1YjkgbGVnYWN5LXRydW5rCiszMTcyMSBhYjg1Yzc1NmM1ZGYzYzYxYmM2MzM0NDgwNGUyYWYyM2IwN2RkYWVjIGxlZ2FjeS10cnVuaworMzE3MjIgODkxMzdiZTI1ZTdhZDdlZTRmYTBkMGM4OGMwYTRkYjkwNjc3Nzk0MCByZWxlYXNlMjItbWFpbnQKKzMxNzIzIDg3NzA0Zjg5ZWEzZjVjZjM5YTE1YTgzOTQ5Y2QxZDVjM2NiOGIyZTMgbGVnYWN5LXRydW5rCiszMTcyNCAzN2NkZTA3OGI5MzMyYmQyOTI4ZmRlOTRmOTYxOGIwNTIzNzNkYzU4IGxlZ2FjeS10cnVuaworMzE3MjUgMzAzMGQ2N2ZiNGE1NjY5N2Q1NDQzZjg0MTdhZGY0NGU1ZTNlYTY4ZSBsZWdhY3ktdHJ1bmsKKzMxNzI2IGJjMmQwNzIzMDkzNGQ0Y2VlZWZmMWJhMWRmM2ZmOGFmMzg1YTQzMzMgbGVnYWN5LXRydW5rCiszMTcyNyBjZTM3NjBlOGU2NDA2YTc3NWIyNDA0ZmEyMmYwZjM1MzA4OTU1YTY5IGxlZ2FjeS10cnVuaworMzE3MjggMjRmZTAyMzkwMWIwN2I1YmJjMmE0MmUwOTlmYzc2NWUzOTk1MWM3MyBsZWdhY3ktdHJ1bmsKKzMxNzI5IGE2Y2Q5ZDZkNWNhM2E0OTBjM2QwMTc2MzRjNWVhNjNlOWMyZmU5NGUgbGVnYWN5LXRydW5rCiszMTczMCA1Nzc2ZmQxODhmMjA1NDU4NjgyYzNlMTY2YTcyYWI3ZDYwNmUzMTI3IGxlZ2FjeS10cnVuaworMzE3MzEgM2Y5MGQyMWRlYmU5NmUxODIyNTk0MjQwYTJjM2Y5ZTFmMzI1MmQzMiBsZWdhY3ktdHJ1bmsKKzMxNzMyIDM5NWViNTYxZWNlMTM2NzZjMGYyZWQwOGZmYWQ2OTQ5ODQ1YTkzN2IgbGVnYWN5LXRydW5rCiszMTczMyA0OGE1MTEzZGZlZjk4MTJiNjJlZDVmNzcwZmZmNTcyMDM4MzcwNDBjIGxlZ2FjeS10cnVuaworMzE3MzQgNTljYTMyMDBiNmU1MDM0ZTIzZTBhZjI0MTIyOTExYTc0MmQ2OGZiMCBsZWdhY3ktdHJ1bmsKKzMxNzM1IDBhOGU4NjMyYzYzMThiOGM1ZjBmNDM4NTk5MzI4MGZkNzg1NzQ3YjQgbGVnYWN5LXRydW5rCiszMTczNiAwNGRmOTY1ZDY3NWI3ZDdkM2NiMDczN2I1ZWViZjI3OGY4NmM0OGUyIGxlZ2FjeS10cnVuaworMzE3MzcgNTg1MjM1MmQ5NTIyMmJhZTY5MGE3YzBmNTA4YmUyMjgxYzYwNzgwNiBsZWdhY3ktdHJ1bmsKKzMxNzM4IGNkMjFiZTgyZjUwYmJjYmJlNzhmZTYzNTYzNmQ0MGRkZGQ5MDFhMWEgbGVnYWN5LXRydW5rCiszMTczOSBhMWI4ZTY1NGQ1ZmUxNWY5OWYzYzk5MmY0NzI1OTg2MGIxZDAzNDE3IGxlZ2FjeS10cnVuaworMzE3NDAgOTJmMWQwMmUyOGYwYTlhNGY1OWM3NTIzYzA3NTQ1OWYwNjc3MWE1OSBsZWdhY3ktdHJ1bmsKKzMxNzQxIDczNmFkNzNkZjViNDhlZmZjNjdlMDYwODYxNmI4MjY4MTI1ZWFmYjAgbGVnYWN5LXRydW5rCiszMTc0MiA0NmE4MWJkOGNhMGNkMDMxMTRkNmM3ODdmYWJmNmRhMmY0NmI2ODUyIGxlZ2FjeS10cnVuaworMzE3NDMgMjlkZGRjMDFiNWVjMzc2OWRmMzRjOTUzZmMxODdiYjdlODA3MWQwYyBsZWdhY3ktdHJ1bmsKKzMxNzQ0IDhlNjA3MTg1Njg5YTRkNmFhYTJlMDBkMjc2NjBmYWRjMGI0MzYzYzUgbGVnYWN5LXRydW5rCiszMTc0NSAxN2U2ZTgxNGQwOTRlOWRiM2ZiN2E3ZWJhNDM0YmNlMTk2ZmFiZjdmIGxlZ2FjeS10cnVuaworMzE3NDYgZTQ4ZmI1ZmJmZGY0ZGE3YmFlMmVmYmE4NmE4YmI5MThhZTA4MmZiZSBsZWdhY3ktdHJ1bmsKKzMxNzQ3IDE0OWE1NzcyZGQwYzQ2MmI2NDRkNDg0NjY1ODYwZmMxZDc0ZjJhNDMgbGVnYWN5LXRydW5rCiszMTc0OCBmY2JjODI0YjZlMzgwOTRjN2ZkNTRiNGI3NWUzZWMyOTUyYmYyNTQ2IGxlZ2FjeS10cnVuaworMzE3NDkgMDI3ZGMyMTNjNTdlNzJkYWUzYzZhNDJiOThjMDBlNmIxNWJlZWI3MyBsZWdhY3ktdHJ1bmsKKzMxNzUwIDVjYTY1MGE5MDA1ZmE0YjJjODcwNGM3M2ZiZDUyODFlN2M3NTI4ZDYgbGVnYWN5LXRydW5rCiszMTc1MSA4ZjAwOGI3Y2I5N2IzYzQyNDkzNDhlY2Y2ZmY0N2U3YWQ4NTg4YTRlIGxlZ2FjeS10cnVuaworMzE3NTIgMmFiZDhhNWFmNmRkYjExOGJhODZmNDhhZTI2NzgzY2NlMDA2MThhNyBsZWdhY3ktdHJ1bmsKKzMxNzUzIGI3YzI5ZGM4YWZhMGYzMDViOTE2MDIxYjRmNTJmZGE0ZWU2ZTI5NmQgbGVnYWN5LXRydW5rCiszMTc1NCBlZmUyNDlkMDY5YmE0MWI4MDU3OWM2YWEwOTIwOWJmODQ1OWY0NWE2IGxlZ2FjeS10cnVuaworMzE3NTUgODE0MTUwNDhiMmFlZjAwMTA0NTFmNGUzYWIyMDc1NjRiODY3MGMzNyBsZWdhY3ktdHJ1bmsKKzMxNzU2IDhiN2Q5ZWI0OTc1OGM1NjEyYjgzYTQ1MTJhNjc5YjE5ZjMyZjc3MmMgbGVnYWN5LXRydW5rCiszMTc1NyAwNzQ5Nzg3OTk0ZGJmMzgzZmY3NGM1NjZmNjAxNTY1NWJlNDBkNGE4IGxlZ2FjeS10cnVuaworMzE3NTggZjU3ZDMwZDUwNjQ4ZWQ4MDBmYjc5MzFiYzdhODA2NDVhNzk4ZjIzOCByZWxlYXNlMjItbWFpbnQKKzMxNzU5IGE3ZjAxMzAyYjE2ZDJiMTQ3ZTU1NDQ4YTdkNTQ4Zjk1ZTNjMzhkZGMgbGVnYWN5LXRydW5rCiszMTc2MCAwYWI0NTQ1OTNiNTNhMTVmNWFjYzczMzcxZWEyM2ZlZjExZmIyZWFjIGxlZ2FjeS10cnVuaworMzE3NjEgMDU1NzViN2U2NzE0MDg0M2ViMGUxNTIwNTA3OGY0MTI0ZjliOWMyNyBsZWdhY3ktdHJ1bmsKKzMxNzYyIGEzODIyNjNkZjAxZDVhMjdmMzBkNjdjNDQxNDcyMzQ0NWZkOGM3ZDggbGVnYWN5LXRydW5rCiszMTc2MyBiYWQ5MTU2NDVmYTIyZGZlOTY1ZmQxYzM3Mzg0MWE2MmE0YzYxNDUzIGxlZ2FjeS10cnVuaworMzE3NjQgNzcxOTYxZTQ1MzE0ZjAyYzFjMTBkNDRmYjg0OTk2ODRiMTY5ZWI2YiBsZWdhY3ktdHJ1bmsKKzMxNzY1IDQzOTEwMWQ0NzA1YmIwNWViYzFmN2MxNDdlYjEwYzRmYmVkZjc4ODMgbGVnYWN5LXRydW5rCiszMTc2NiAyYzNlZjQ2MzU5ZWY0NjA1Y2I1NzhiOTNhYTg1MmI4ZDZkZWY3YzYxIGxlZ2FjeS10cnVuaworMzE3NjcgZmI4Zjc2ZGY2NGZmNDA1NTVkM2RhNTUyYjVmMzFlNTUzNjYxZjUxNiBsZWdhY3ktdHJ1bmsKKzMxNzY4IDkyZTNiNjExZGM5ZjkyMDcyMGI3MmI2MGFkY2Q4NzQwMTc0MGNiMzEgbGVnYWN5LXRydW5rCiszMTc2OSAwMDhhMjZjMzUzYWY5NzA5NGNjYzgxZjZiN2FmODE5OGRmZjY5MmE4IGxlZ2FjeS10cnVuaworMzE3NzAgYzAzYmUyMmZkZDI0YzFlNTdkMjMxNDQ1MTY1NTM1ZTRhYjg3ZDMxNyBsZWdhY3ktdHJ1bmsKKzMxNzcxIGQ0YjI2MmZiZDA0YTIwN2U2NWZjZTZkYWJjZjBiODBhZDBhMTc0ODMgbGVnYWN5LXRydW5rCiszMTc3MiBmMmJkMGY0ZDg1NzUwYjhjZWU0M2M2OTU4NDRiYmJmYTY1ZmMwZDc1IGxlZ2FjeS10cnVuaworMzE3NzMgYjNjMTU4N2IyYjhlMzIyY2Q3MjcxNGMyZGU4MDFkNjUyMGZmNGRiMyBsZWdhY3ktdHJ1bmsKKzMxNzc0IDczYjBkYzI4YzkxYTdhZThjMDU0YTczNWJmNGJiMzk0MTAzMDVkNTIgbGVnYWN5LXRydW5rCiszMTc3NSA5MDcwNDA0ZjI0ZmFkNTg3NGZlZTBjZjZkMTY2ZWNmYzgyNjA5MjE2IGxlZ2FjeS10cnVuaworMzE3NzYgN2M4ZTg4MDdhZWQyOWM2ZjJkZmVkOTNjMmE0Y2QyZmNmYjgxYjVlZCBsZWdhY3ktdHJ1bmsKKzMxNzc3IDk5N2Q0ODFlYTQwOTEwYTE0YzRjZDJmYTM5NWQ1ZDIwOWUwMWY5YTkgbGVnYWN5LXRydW5rCiszMTc3OCBkYzk0NzVlYzc5ODU1Y2M5MDg4OTZjYzZjZjlkNjM5Mjg3YzhiNWU3IGxlZ2FjeS10cnVuaworMzE3NzkgZWNhNjk3ZTA2YTA3Y2MyOTRiMTZlNWE3NWI3YmIzOWFiYWQ1ZGY3YSBsZWdhY3ktdHJ1bmsKKzMxNzgwIDczM2FlYmI1N2ZiMDA5YzBjYTMwNDM3M2U1MmVlMmNmYThkOTNlN2QgbGVnYWN5LXRydW5rCiszMTc4MSBhMmQ3OWI5M2I1MGEwYTkzZWJiN2RlYTA0MzNiYmI1OWRkMTUyODk1IGxlZ2FjeS10cnVuaworMzE3ODIgMjdhZGRlYTMzZTBjYWQ0OGFhNzFhNDk0MzIyOTFmZmY2OTBhMGEyOSBsZWdhY3ktdHJ1bmsKKzMxNzgzIGNkZWE1YjFiODI4MGNmOWVmOTE2MTZkNzcyM2FiOWU3ODA3MDI2ODIgbGVnYWN5LXRydW5rCiszMTc4NCA0MzA2NmY2N2M1ZGJhNzQxNzAwOGY1OTM4ZjIzNmJjNDQ4OTY4NDRlIGxlZ2FjeS10cnVuaworMzE3ODUgYjg0ZTZiNGUxOGM4NTk5Y2ZkMzk3NTE4NGZmZTgxYjI5YWNjMDQ0ZCBsZWdhY3ktdHJ1bmsKKzMxNzg2IDZlNDliYTNmNjBiZTU1NjAwOWU1NmUzYzg1YTExNjdkNjdjM2YwZjEgbGVnYWN5LXRydW5rCiszMTc4NyBhMmU2OGFkZGU4YjBmNGNhMDk0OGIwNDljZjNlM2U4NjgwZmY3M2MzIGxlZ2FjeS10cnVuaworMzE3ODggNGNhZmE1MTQxMDEyNTJkNTkxN2Q5MTYwNjQwYzgzZmU0NWIyMTY2NSBsZWdhY3ktdHJ1bmsKKzMxNzg5IDQ3Y2I4NWNkZDVmMzFkZThiNWZmN2UxZTNhOTdiNTI4NzhhMGNjNDggbGVnYWN5LXRydW5rCiszMTc5MCBkNDRmOWNjMjcyOTA1NTU1MzJlMWZlZWU4MjNjYmExMmUzZjljNWQ4IGxlZ2FjeS10cnVuaworMzE3OTEgMjcxYmFhODg0MjRiZTI5YTg4M2E1MjE5ZGRiNzkzMzFhYWFjYWE3MSBsZWdhY3ktdHJ1bmsKKzMxNzkyIDYyNzNhMTU4ZmIwYWNkNzFjNzViNzgxOGUyZTgxMjZmNjIzMTEwOWIgbGVnYWN5LXRydW5rCiszMTc5MyBiNWQ2YzM4ZWIxNjM2ZmU2MzkwODAzMmM3MWFkY2M3ZmMzY2JiNjBmIGxlZ2FjeS10cnVuaworMzE3OTQgNDhhNjFhNGI3M2ExMGJlMTU4MDAwYmE5YzRmYTA2NzMxZmQ5OGFkMiBsZWdhY3ktdHJ1bmsKKzMxNzk1IDMwZmExZjYxYjIzMWE3ZWQ2YjgzYjRhODBhZWI2Y2UyZWIzNjEzNjIgbGVnYWN5LXRydW5rCiszMTc5NiA4ZjIzZDM5YTlhMzM4N2E2Mjg3ZGJjODg2YjM0NjExYmY0ODY4YWEwIGxlZ2FjeS10cnVuaworMzE3OTcgZWE3MDAzMmEyNGIxMDI0MjFmZGMzMzI0YWIzMzFhZmNmMjA2NDQ1OCBsZWdhY3ktdHJ1bmsKKzMxNzk4IDAwODkyYWZmYjYwYWU4NGY2MGQ4Y2Q5Zjc0NTMzNmQ3MWEzNjg0ZjcgbGVnYWN5LXRydW5rCiszMTc5OSBmZTFkNTcxYzNmODAzZTM3M2YwOTlkNmVkY2UwMzBlZTZkNDAzNWMwIGxlZ2FjeS10cnVuaworMzE4MDAgZjEzYWRjMDBjMTY1MjAzNDdhOTBkMGE4YjYyYzk2NTJmNTI4OGY1NyBsZWdhY3ktdHJ1bmsKKzMxODAxIDA1NzQzMjZjNzhiYmFlNDZiN2VmZDg3NmVjNzc1NDI2M2EzMGEwZmIgbGVnYWN5LXRydW5rCiszMTgwMiA1ODU1OTE1YjAwZjVlNTE0NzEzMGRiMTkwN2Q4ZjRmOTJiYTQzZTMxIGxlZ2FjeS10cnVuaworMzE4MDMgNWMzYWNiZjIyYTI2ZjY3MmZiMGQ4MTQ3NjliMWYzYTliNjBiOWY5NyBsZWdhY3ktdHJ1bmsKKzMxODA0IDYyNjllYWFkZDQxZWY0YmIzYjhiMzAzOTM2ZmMzM2QxNDM0OTk5YTEgbGVnYWN5LXRydW5rCiszMTgwNSBmOTVkZmIzM2Q3NjI5M2M4MDg5MTE0ZTlhNjcxOGY3M2IzZmE2MmNlIGxlZ2FjeS10cnVuaworMzE4MDYgYTU5ZDhlNGNiOTAzODY3YmYxZTcwMjAwMjAxZWNlMzlmNWI4YWQ2OSBsZWdhY3ktdHJ1bmsKKzMxODA3IDRmNjc5YWE2MjNjMmY2YzI1NjNkNGZkZGYwNzg5NzQxNTA1NjFlYmUgbGVnYWN5LXRydW5rCiszMTgwOCA0YjZkN2M3NTY5OGFjN2JmMzFmNjc0YzA0NjgwNTg0Y2MyYTEzYTljIGxlZ2FjeS10cnVuaworMzE4MDkgNmVlOGQ1YTMwY2JjMjIyNGExZDQxMmJjNThkYmQ3MjYzN2JiZTVhNSBsZWdhY3ktdHJ1bmsKKzMxODEwIDM2NTVlOTFiM2RlYWNmZjJjZmMxYTVlNDU3NjMzMTQxNDdkZmQ4ZjkgbGVnYWN5LXRydW5rCiszMTgxMSA0YjFmZWYzN2FjN2JkN2FhOGMxYjc1ZmY2ODlkZmIxNzFmOWVlZjhhIGxlZ2FjeS10cnVuaworMzE4MTIgZDc2MzAxODU4OTQxYzkwYjhlNzZkOThlODJhYjIyMmQ3YzcxZWRjNSBsZWdhY3ktdHJ1bmsKKzMxODEzIGIyNDZjYTAzM2UzZWU3ZDg0MjVkYWYzYzYxNjRmZDVkYWRkOTg1Y2IgbGVnYWN5LXRydW5rCiszMTgxNCAwM2QzZmEzZTFkNGU1Y2E0ZmM1NzU1ZWJhMmEyNWIwMmU0MTM3NTIzIGxlZ2FjeS10cnVuaworMzE4MTUgZmExOGRmNzQ2ZWM1MjVkNzcyNmE1YmNiNWFlNWUwMTVjNWNiYWY3OSBsZWdhY3ktdHJ1bmsKKzMxODE2IDVjNDZjOTU4N2EyZmEzMTc4ZWYxYzBiZWY3MzYwY2Q4OTNmM2U0OTcgbGVnYWN5LXRydW5rCiszMTgxNyA5MjdhOTgzM2Y4M2I3OWFlMWJhOTg3MmJmY2E4ZmEzYWUxMmExOTI2IGxlZ2FjeS10cnVuaworMzE4MTggNmMwNjY3YWM5MzllZGQzZjVjMDZmYzdhMmM5YzIzZmEwN2Q5YjFmOCBsZWdhY3ktdHJ1bmsKKzMxODE5IDkyYjkzMDEzMDBjMzk2ODA1ZWExZmQ0Mjk2MWJhN2RmMmMxMTkyOTQgbGVnYWN5LXRydW5rCiszMTgyMCAyNzUxYzVlZjk4YmU2Y2M5NzkzM2QwODRhZDhmZWVlN2Q0ZWI2ZDE5IGxlZ2FjeS10cnVuaworMzE4MjEgYTRlN2VkYzY5MDU0ZDUwM2JmMjMwYWJlNjg1NDcwYmUwOTkxYmI4NCBsZWdhY3ktdHJ1bmsKKzMxODIyIDE1NjkxMWRiYTMwNmMxMjc4MzJjN2Q3OWM0ZmU3MmY4YmU4ZjU4ZWUgbGVnYWN5LXRydW5rCiszMTgyMyBiZWEzZDFmZGEzZGNiMDIxMTIxZjdiZjZiZGRjZWVlZDc1YmFhNDQ5IGxlZ2FjeS10cnVuaworMzE4MjQgYjc4ZDhiYjVlYmQ3MTQ3NGRhNzk5ZDA4NTdiNmVmZGUwMDcyMjgxNCBsZWdhY3ktdHJ1bmsKKzMxODI1IGUyOGI0OGZjOTAwYmZkYWFkMzMxMjFmMWJlOGJlODRmOGQ3M2U5YjMgbGVnYWN5LXRydW5rCiszMTgyNiBmYzkyOWQ3MWE0NTBmNDM4ZDg4MjNjM2MxNGU4NGFkMzlkOGMwZDI0IGxlZ2FjeS10cnVuaworMzE4MjcgNjViNzIyNjczODI5MDk3MzdkYjNmNTYzMDk4ZmQ3ZjhmZGQ2ZWViZCBsZWdhY3ktdHJ1bmsKKzMxODI4IGZkOWI4ODJiZTA3OTc1YmZmZDViYjI3NDk4ZTQ0N2YwMTIzY2RkZDMgbGVnYWN5LXRydW5rCiszMTgyOSA3ZjBiZmJlYzk4N2ZhMGRmMjdlZWQwNmEwYTBjZmRkOWExY2YxNWU5IGxlZ2FjeS10cnVuaworMzE4MzAgMzM2NTY2NGI4Mjk0MmJhYzY2NWM5NzMxMjAzZTFiZGM5ZDZlMDFhOCBsZWdhY3ktdHJ1bmsKKzMxODMxIDRjNjQ0YTYwYzMwZDkzODU1ZGYxYThiZDQwM2RjMWZlYzdmYTc5YmEgbGVnYWN5LXRydW5rCiszMTgzMiBiMTM1NmRiYWFiOWEyYjk2ZWZiNmE4MTE4MjgxNmM4ZDAxYzM2ZTU1IGxlZ2FjeS10cnVuaworMzE4MzMgZmJhZTIwYTJlMTE2ZGVlZjdhZjA5NDRkNGU0ZTVkNjExZjgwMzZiNyBsZWdhY3ktdHJ1bmsKKzMxODM0IDEwMjhkYzY4MDdhNWY5ODA1Y2JhOWI2MjcwYzEzYWIwMWQ5YzJiZGMgbGVnYWN5LXRydW5rCiszMTgzNSA0NTljNDI5MWY3NTk2MzBkN2ExNWU5MzM3NDZlY2Y4NTAxYjU3NWNlIGxlZ2FjeS10cnVuaworMzE4MzYgNmEyZDlhZTQzMGJlYTZjMWYzNTIwODE4NjVhNjI0YjIwNmE2ZjY5NCBsZWdhY3ktdHJ1bmsKKzMxODM3IGEyOTU3ZmZjYjU5ODY1ZDJmNjA3NzRlMGQ0ZjhiZTZlNWUxYjA4NjMgbGVnYWN5LXRydW5rCiszMTgzOCBlZjUyNWM5OWI0ZWVkNjY4NTBjZDNjNmQ0ODQyYTM0ZmJlNzQ2OGFhIGxlZ2FjeS10cnVuaworMzE4MzkgNTFjNzRiNzk1ZTllOTQ5NGMwOWZkNzcxNmZkMDA2ZDNjYWRjNjU5ZiBsZWdhY3ktdHJ1bmsKKzMxODQwIDE2MmVkMmE5Y2MwYzhhMjdlNjgzNjMxM2U5ZmE1ZmMxMDBlMDE1ZmMgbGVnYWN5LXRydW5rCiszMTg0MSA3ZmMzZTY0ZDE0MjQxNTMyY2U2M2QyODNkZmQ2MzM4YTExY2FjM2Q0IGxlZ2FjeS10cnVuaworMzE4NDIgNzM4MTRjYjU4MjdmOGM1ZDIzNGIzNzk0MjhmZTc4OTI4ZTI4YWFiZCBsZWdhY3ktdHJ1bmsKKzMxODQzIDhkMTBmNjhkN2MzYjBhZjI5MWMxNWI4MWU1MjY2NjhkMDZjNjhmMmEgbGVnYWN5LXRydW5rCiszMTg0NSBhOGQyNGI5N2M4MTNiMjBkZGM0YTYzNjRmY2JkNmRmYzIyOGVjYzI2IGxlZ2FjeS10cnVuaworMzE4NDYgYjk3MmJlODA2NDc3ZjEzMWFlY2FkMWE5NjZlZWQ1YjcxMTVkMjdmNSBsZWdhY3ktdHJ1bmsKKzMxODQ3IGM5ZmMzNWQwYTNlYmFiZjBkNGMwMTQ4NWFiNGEyNzUyM2IyMjE2OWQgbGVnYWN5LXRydW5rCiszMTg0OCAyMjg5N2NhMTAyODhkZDFjMmQ1NjZhMTU5N2VhOTk1NjViNTU3NGEwIGxlZ2FjeS10cnVuaworMzE4NDkgNWE0YzdlNmYwMDhlMjEyZjNmMDYwY2M1NDhiN2UxZWUwNGM4ZTY0NiByZWxlYXNlMjItbWFpbnQKKzMxODUwIGU0MDUyNzc2OTg2NGNiMjlkNjkxYmIxY2UzOWIyNzgwM2NkZDkxYmIgcmVsZWFzZTIyLW1haW50CiszMTg1MSAxNzFmMTg2MmRlYTk1NzM1NGU0MWMxZjY4OTNjOTQ4MGI4MmY0ZWQ3IHJlbGVhc2UyMi1tYWludAorMzE4NTIgNjVkZDk2MTJhNzQ4MDgwMTYxMTA3YjY0NDdiZmQ1NWNkOTM4MjMzZCBsZWdhY3ktdHJ1bmsKKzMxODU0IDBiYTE3ZTkzZjEzOWY1NzRmZTNhNWIzMDIzMmQ3NTM4NWNlYTg2ZDYgbGVnYWN5LXRydW5rCiszMTg1NSA3NjU0YzI0ZGVjYzRlZGI5YzQ0MmJlNzlkYzE4OTkwMTVhNDY4ZGVhIGxlZ2FjeS10cnVuaworMzE4NTYgMmMyMmI1YzA5YTU4ZGM2MTkzZTJhNzRlN2EwM2Q3MTNjNWJlYzg5MiBsZWdhY3ktdHJ1bmsKKzMxODU3IGFiZmU0YjM4MDMwNWVkOGMyYTkxN2JlMDkzY2EyMzNiOWIyMjRlZDUgbGVnYWN5LXRydW5rCiszMTg1OCAxNDMxNmRmMWMyOThiNzE2NTNkYzc1NGI1MWQwODQwMjZiMjcyY2UwIGxlZ2FjeS10cnVuaworMzE4NTkgOTYwMmM2NjRlZDdhMmNiZTY4MWYyMDE5ZWRhZGI2NzU5Nzc2MTJhMSBsZWdhY3ktdHJ1bmsKKzMxODYwIDczNDM0ZmE5ZDI4NTJiNzljOTk5ZDI3ODdjNGNlMWEzOWJiZjZmYzAgbGVnYWN5LXRydW5rCiszMTg2MSA4YzA4MjkzNmRhYWZkYWVlMzIzOTU3YWNkOWRlYzVmNmNhZGE4YjM4IGxlZ2FjeS10cnVuaworMzE4NjIgNDcwNTA0ZWY1NzhiMjA1MzY2ODU4YWE0N2EwMjA5ZDlhYTY0YTFmZiBsZWdhY3ktdHJ1bmsKKzMxODYzIGIxNGQ2NzQxZjQ5NjUxYjg2ZjYyMDAwMWVkM2I2NjAwZmI5MzU5YzMgbGVnYWN5LXRydW5rCiszMTg2NCA3MDJlNTQ3ZjMxZTBkNTI1ZGY1NTRjYjNlYTA0NTg3ZjA4MDE5NzBiIGxlZ2FjeS10cnVuaworMzE4NjUgMjI2YzViZGQxNjBiOTVhZTdjNzBmZGI4MWFmYTk4NjM0NTIwNjhjYSBsZWdhY3ktdHJ1bmsKKzMxODY2IDAwYmRhNTZmNTQzMzA2M2NmYmVjMWE1NTcxMjAzZjNiYTcyYjhkMzMgbGVnYWN5LXRydW5rCiszMTg2NyA5YzM1NzJhNTU3NWY5OTczMjI0ZDkwNTFiYTg3NDRmZmNiMmQyZWVkIGxlZ2FjeS10cnVuaworMzE4NjggNWM5ZGNkYzdmZThkNjliM2IyZjRjM2U3YTFkYTE4YWY3YmQzODQ0YyBsZWdhY3ktdHJ1bmsKKzMxODY5IDRmNDdkZjIwNDE1YzcxZWI5OTA5NjFkY2U2MTRmZjMzNmYzNjgzMjEgbGVnYWN5LXRydW5rCiszMTg3MCAyNDg5ZDIyMjI4ZGJiYzk3ZGQxMDFhMThkYjZjN2IxZjA2YTliODFmIGxlZ2FjeS10cnVuaworMzE4NzEgZWY1NWYyMjMyYTEwZDczMWJkZWFlMDdlZmRjNDhjODYwZmZhYmFjMCBsZWdhY3ktdHJ1bmsKKzMxODcyIDkwZjdmYmNiMzcwNjk1N2VmNzY5OGQ4NjQ4MGI0YzAyM2RhYjJmMDMgcmVsZWFzZTIyLW1haW50CiszMTg3MyA5MTg4Y2I4ZTE5MWI0ODhjYTUzMGJkZmM1MGUzMGU1N2Y3OTU0MDllIGxlZ2FjeS10cnVuaworMzE4NzQgOTI3OGIxYzgwYTY3ZjBjZmNlYWQyOTVkNGNiNDk1NzIyNjUzOGVmYyBsZWdhY3ktdHJ1bmsKKzMxODc1IDNlMTllM2I3MmQ5YjFiOTc2ZGNjNDcxNjU1MzAwMjk1MGNlYTE4YmYgbGVnYWN5LXRydW5rCiszMTg3NiAwMjNkM2I1MGU1OTc5NzRlYjNkNDFjMmE3YmFkM2Q0Y2U2MzMyYjdmIGxlZ2FjeS10cnVuaworMzE4NzcgYmMzNzBiODc1M2YxMjYwYTBmNGQ2NjliMTZiYjRkZjVjMTNiZjE2NCByZWxlYXNlMjItbWFpbnQKKzMxODc4IDM2MGE1NzgwNTY3NmRkMjNhYjlhNjQwZWFmODQ4ODRkZjI4ZDEwZjkgbGVnYWN5LXRydW5rCiszMTg3OSBmZDVlZjcwMDM0NjlhNjMxODY0NThjYTE3ZTFhYmEyY2FjNGJlZWY2IGxlZ2FjeS10cnVuaworMzE4ODAgOTJkYWY4YjA2YWJjMTg2MmY1ZWZlNjhjNTEwNzhlMDQ2ZjJlOWE5YiBsZWdhY3ktdHJ1bmsKKzMxODgxIDllYmM2MWI5ZThiZGJhNjVhMzkxNTJlYzUyNTU1MjE1MDMxZTc3ZDIgbGVnYWN5LXRydW5rCiszMTg4MiA2N2IyMmZhNGE4ZmU1ZjQ2NGVmYmZjYmJjZDkzNGJlZmNkYTZmZTA0IGxlZ2FjeS10cnVuaworMzE4ODMgNGUyMjEzNjhhZjcwN2I0YjE1M2FiZjdhODZmZTc5ZmQwNDBmMDViMCBsZWdhY3ktdHJ1bmsKKzMxODg0IDg1MDYyNmQ0NzU3NDlkNDZkZWViNzQ2NThiYTJmYzg5NGM0ZDdmNjkgbGVnYWN5LXRydW5rCiszMTg4NSAzMzU4ZGZiMWIxOGI0MjJlMGE5YmVjODQwMTZkNzBiZGNjMjY2MjJlIGxlZ2FjeS10cnVuaworMzE4ODYgMTg1OGJjYjYxNzA2ODJjM2I3N2UzYjRlOGI4NzEyYmI5OTdhNTI4NiBsZWdhY3ktdHJ1bmsKKzMxODg3IGNkZDVkMGNmYTZkY2UzNThkOTI2YjllZTgzNjFjMGViMWJlNzRjYTcgbGVnYWN5LXRydW5rCiszMTg4OCA2MmRmMTdlNTAxZGM2ODNhMzYyNDg4OWYwZTVkNTI4MDY3OWUwMDcwIHJlbGVhc2UyMi1tYWludAorMzE4ODkgMDJjZTIyODMwYWI5NjA5NzlhMDI2ODVkMDIwYzZlODlmZWJjYjY3MSBsZWdhY3ktdHJ1bmsKKzMxODkwIGI5MWE4MWQ2ODA2ODBlMDFmZDYxNDE3M2FiMTU1ZmY2YzY3OTIxNzIgbGVnYWN5LXRydW5rCiszMTg5MSAyOTFiOWQ4NjZlY2YyYTljOGQ3ZjNlZmRkYjc5ODU5Y2I4MWQwYmMyIHJlbGVhc2UyMi1tYWludAorMzE4OTIgZWVjM2ZkMTY0YTdkYjhkZDRjN2ZlODhjMTllMjI0MGRmZTc0MzFkMCByZWxlYXNlMjItbWFpbnQKKzMxODkzIDlmMjg3ZTVlYjAzNzc1MjQ5ZWUxZDQ4YTIzOTk3YjQxMjNkZWRkODkgbGVnYWN5LXRydW5rCiszMTg5NCA3MDAwM2IwY2I4Mzc5NTIwZDY4MDI0MWNmZTgwNjk1MTQ5ZjNlNjJlIGxlZ2FjeS10cnVuaworMzE4OTUgYjU2ZDEwZWQzM2M1ZTg1YWYyZWVkZjNjYTVhMDBiYTE5NTJiNDE2OSBsZWdhY3ktdHJ1bmsKKzMxODk2IDkwZjE3YzM3NGY1OTI3MjhlODllNDk5YTA2NjQ3YzMyNGQ0MjBlOWIgbGVnYWN5LXRydW5rCiszMTg5NyAzNDM0ZDFiOTIwNmE1YmQ4ZGU5NzRjMWE1MDBiYTdmOTU4NDQ3ZDgzIHJlbGVhc2UyMi1tYWludAorMzE4OTggY2MzNWVkMmIyNmE4YjJiNTA0MzM1NDRjMzBkMzI2YzUyZmU1NTIzMSBsZWdhY3ktdHJ1bmsKKzMxODk5IDVjZjFmMmYzMGRiZDZjYzQwNjViMzRkNWU1OWM2ZmRjNWJiNmY3YWYgbGVnYWN5LXRydW5rCiszMTkwMCA3OTc5MDk0OTJjMzg2NzIwNDQzN2QxYmU1YWIxYzlmY2M0ZGY2MzhkIGxlZ2FjeS10cnVuaworMzE5MDEgMjY4MDhhYzdlZTUxYWU5OTJhOWEwYTdlZjdiZGU3NDAzMzZmMzVkMCBsZWdhY3ktdHJ1bmsKKzMxOTAyIDk4MGQ2ZTAxMTJjZTFlNDY0M2Q0ZGQxYWMyYzk3ZmNmYzViN2Y4NGUgbGVnYWN5LXRydW5rCiszMTkwMyA2MWIwZmY5OGQ5NWRkMzgxZTFjZDczZGE5ZjMwNDkyYmM0ZDZlNjg3IGxlZ2FjeS10cnVuaworMzE5MDQgMTQzOTE1Nzc2Y2JjMmZmMzE3NjJlM2E1NzkyNGEwMTMyNWY1NDc5ZSBsZWdhY3ktdHJ1bmsKKzMxOTA1IGY1Yzk3YjY1ZjllODU2ODU3OWNiOTMyNTliNzQ0MTdhZTE3OGM0NWQgbGVnYWN5LXRydW5rCiszMTkwNiAxZmMxYTMwNWUzOTk5YTQ0MTA4MzBjZDQ3ZTIwNWE2Y2I0OTFiMzRiIGxlZ2FjeS10cnVuaworMzE5MDcgYjczNDBiMDk1NTVkMzBiZThiZDM0ZGY1ZWVlZTgyMGI1MDZiOTQyOSBsZWdhY3ktdHJ1bmsKKzMxOTA4IDMwOTY4OTlmNzc0ZmVhYzkyODNhYTliNjU4YzNlMzk3ZjFiMTExZDQgbGVnYWN5LXRydW5rCiszMTkwOSBlMzZmZjQ5MmNiYjE2MjNjMGRkN2MxNjMwOGJkMjc1NGRmM2E4ZWNiIGxlZ2FjeS10cnVuaworMzE5MTAgZDU3NDIxNjIzNDQ5YjdhYjA5MmE5ZWYxMGJjMjRhOWIzMjcxNzVmMSBsZWdhY3ktdHJ1bmsKKzMxOTExIDQ1MDU0YmY1OTJlNWUwM2VkNjE3MTNmNWJjZDIzMzY0Y2E1MWVlNWUgbGVnYWN5LXRydW5rCiszMTkxMiBkZDgzYTlhNTNkYmZiOTFmODk1MzkxNTFlODZlOWJiMjQ0MjQxOGYxIGxlZ2FjeS10cnVuaworMzE5MTMgZDM0YmNiM2NiMjE2ZWE5Njk2OTNhZmI3YzZlMWM4OGIzNWRkOWYzZSBsZWdhY3ktdHJ1bmsKKzMxOTE0IGVkZGY1OWY1Y2M1ODQxNDc3ZGU2MjIyZThlNzFiNDVkMmRhMGU3MDMgbGVnYWN5LXRydW5rCiszMTkxNSAzZmZiYmI0ZjQ4ZGE2MzNmMmVhNDM3MjNhYjI1ZTEzM2Y1NDkwODIxIGxlZ2FjeS10cnVuaworMzE5MTYgOGQ3ZmZlNGNhYWQ5YWNhYzg0MWM1OGU4ZDJkMzFhYWRkNTQ5YTJhMCBsZWdhY3ktdHJ1bmsKKzMxOTE3IDM0ZTIyY2RmYWFkMjQ2Mzg1MzgwNDgxNzY4MTIzYTkyODM4MWE5ZjEgbGVnYWN5LXRydW5rCiszMTkxOCBjN2NlYjk1NjBlYjBlMWJhYTE5N2ZlYzAwY2IyMmY4OTU5YTAzODI2IGxlZ2FjeS10cnVuaworMzE5MTkgNzIyNDdlZTIyNjUzNzRjYzU1YjkwYzg4MjVmOTE5MGNjNmNiZGU2NiBsZWdhY3ktdHJ1bmsKKzMxOTIwIDZmZGRjZGQxMWY0OWZhZGMwYzc4YWU0OTAyZjU4ZjFhODBiY2JiNTcgbGVnYWN5LXRydW5rCiszMTkyMSAzMWE1MTFmNzRiMjgxNmIxMGJjYjgxZjkzZDNiMjgxNjhiNGU0ZWUzIGxlZ2FjeS10cnVuaworMzE5MjIgYmFiMmIyODYzYTZlMDRjMDM4ZjQzM2RmYjUzMDUxZmI1Y2M3MTY1ZiBsZWdhY3ktdHJ1bmsKKzMxOTIzIDhlMjQ3M2FkN2MwY2JhYjNmNmNiMDBkOWJmNjEzYWQ3YjE0ZmQ0NjMgbGVnYWN5LXRydW5rCiszMTkyNCBjOTdjMTA0YzJkMjQ5NmM4YjFkMTVkNWM3MzNmOTZiYzg5MzBjOTFiIGxlZ2FjeS10cnVuaworMzE5MjUgOWFhYzg3MGYwM2EyOTkwMmMxZjgzYmIxNWQ4NzA2MmRmYTAwYTdhZCBsZWdhY3ktdHJ1bmsKKzMxOTI2IGRlMDEzMjc2NTg0YWViZWU0OWM2NzBjNzdiZDQwMDVlNWY0YWM2NTMgbGVnYWN5LXRydW5rCiszMTkyNyBmZjc4YzNjM2ViYzQ2NmQwMjkwZjkxYWE5YTk1ZDA1NjEyYjhiOGI1IGxlZ2FjeS10cnVuaworMzE5MjggZWI0ODI3OGMyZTEwMjVjYjA4NjczNWI3YjY2Y2Q0MDI4MTg5NzBhZCBsZWdhY3ktdHJ1bmsKKzMxOTI5IDdmOTgxZGQ3ZmE4ZDJkY2E0NWM5OTU3MzgzZmRiZDljMDMzMzM4NjEgbGVnYWN5LXRydW5rCiszMTkzMCBmYmFlNjQ1NTEzZDc0NzM0ZjFiYmI1N2I4MjgwNTlkNTNiNGE0ZThiIGxlZ2FjeS10cnVuaworMzE5MzEgNzcwODkyZDc4ZjJiYjc5ODZhMWUyNzU3MTQzNDM3MWFhM2YwNTZjNyBsZWdhY3ktdHJ1bmsKKzMxOTMzIDQ1ODU0ZmM3MDdkNjQ5OTQyYjY4MTAyMGIxYWQ0ZmJkNDhiM2NkMTQgcmVsZWFzZTIyLW1haW50CiszMTkzNCAzMDc0OGMxNWE0ODFhZjc3MTYzMWZmYzNiNDVhMDc4MzE1OWYwYmYwIGxlZ2FjeS10cnVuaworMzE5MzUgZTMzM2Q3NjVmNDFlZTFmMzk1YWEzOTk3MWJhYzQ0MzBkMGFkODg0MyByZWxlYXNlMjItbWFpbnQKKzMxOTM2IGQ4NzdmZmE0ZjdmMjJhYzVmZTZlZTQ5YTE0NTVhMzQyYzY1MDA3MjkgbGVnYWN5LXRydW5rCiszMTkzNyBjZTRiOTI4YzgzNDBhMTIyOGFhOTA0Nzk2ZTdkNWQ1NWM1OGQ3YWVlIGxlZ2FjeS10cnVuaworMzE5MzggNzk1ZDYxNDRkMmVlNGNkODQzMDM5ZjU1MGU3YjExYmE3ZTMwYjY5NSBsZWdhY3ktdHJ1bmsKKzMxOTM5IDdkYTJlZTNhOWM0M2IzYjlmMjQzODJhZGNjMjJkMzRiOWI0YTU5NWEgbGVnYWN5LXRydW5rCiszMTk0MCBjYTQzYWJiMDc2Mzg2ODc5MzBkN2YwZjgxNDUwZWVjNzJkYzZlODg5IGxlZ2FjeS10cnVuaworMzE5NDEgZTBlYmZhMmZiOTM2OWRiYzhjNzQ2NDIxZjFmYWIzMzQzNmYyZjlmMiByZWxlYXNlMjItbWFpbnQKKzMxOTQyIGY2YmY3ODE3MzFkNDI1NjRkYjhlNmNkNzM3ZWY4M2Q5ZWEwNTFjNTggbGVnYWN5LXRydW5rCiszMTk0MyBmOTljZjliZmJiYWY1YmVlZmYzYzYyOWE3MWMzODlkNDE5MmU2OGE1IGxlZ2FjeS10cnVuaworMzE5NDQgYjg3MjI5NzQwNmFhOWM5ZmI4NmVjMTY0YzZjZmQ4ZTdiNTczNzEyOSBsZWdhY3ktdHJ1bmsKKzMxOTQ1IGIyMzQzNDIxMWQwMWRkODAwZjIxZmQ5MTYzZWI5ZjYxOTdlZGU5ZDcgbGVnYWN5LXRydW5rCiszMTk0NiA5NDYwMWQ4ZmE1MWRiNjhkOGI0MmY5YWIyNDg0NWQ1N2RlMGU3N2EwIGxlZ2FjeS10cnVuaworMzE5NDcgOTgzZTkyOTFhN2I0NjFlMmFkNjZhNDA3NTc2MTBkOGNjZmNjYzRkNyBsZWdhY3ktdHJ1bmsKKzMxOTQ4IGY4MTIzOWMxMmM2MGY4MDYyMjMxOWU2YWU1ODU4ZTZiMTZlYzVlZTQgbGVnYWN5LXRydW5rCiszMTk0OSA0ZWRlNTdhNDJjNjIwYjJkMWUwMGU1NGJmNjMyOWQzNTE5YzczMjU1IGxlZ2FjeS10cnVuaworMzE5NTAgMzMzMTk0NThmZTk5NWJlZGJlNWYyODZlNzkzOTJjOTA2Njg3MmQ2OSBsZWdhY3ktdHJ1bmsKKzMxOTUxIDA3NjE3ZDA5MDRhNjNmMzYxN2ViMTlhYjRlZDRhNWJlYmZmODdiNjkgbGVnYWN5LXRydW5rCiszMTk1MiA1ZWUyOWYxMzY0ZjMzNTc4MTVmMjhjMjRiYTFkNjg5ZTU3YWMwNzkyIGxlZ2FjeS10cnVuaworMzE5NTMgMTZhYTcyYThjMjgxZWYyMGE1MWRiN2E4Y2IzZjA0ZDI4YzMxN2Q2MSBsZWdhY3ktdHJ1bmsKKzMxOTU0IGJjOTA3NmIwMTY5NDk4YWE1M2IzNzQ0NzZmMDg1NTRjNzQwZmNlZmYgcmVsZWFzZTIyLW1haW50CiszMTk1NSAxZTBlNjc5NDcxNzU4YjU5ZjA2NTdlNGY2NWY0YWNjNWZjMjdmOThjIHJlbGVhc2UyMi1tYWludAorMzE5NTYgZDU2MjgyYzI4YTFlZmNkZjVlY2NkMDExOTM0NTQwYTEwMmQ0NGRkYyBsZWdhY3ktdHJ1bmsKKzMxOTU3IDRmMDM4ZDNhODg3OGNiZjc0OTViNzI0YTUxZGVhYmIyNTc0MDUyMjYgbGVnYWN5LXRydW5rCiszMTk1OCBhMjExMGNiMTY1ZjExMWJmZmU5NDViNDRjMzE3MmY1MTcwMDdjOGYwIGxlZ2FjeS10cnVuaworMzE5NTkgNjY0MjEyYTZlMjgzZTJhMmJiODEzNGExMjVkNWJjN2I5Y2YzOGQ1MyBsZWdhY3ktdHJ1bmsKKzMxOTYwIGVlOTRhOThjZjM5NmMwNDQ1YTM4YmE5NzZmNmFhZTcyMDlhNGM1ZmQgbGVnYWN5LXRydW5rCiszMTk2MSBjNmMyZjI2ZGY2NWIwNGVjZGRmNzE3MjJmZTdmNThlNTZjZmU2MjE1IGxlZ2FjeS10cnVuaworMzE5NjIgNWY1MzY0YWM0YWRiYzQ3YzBkYzgxNDk0ZmQyZmE2YmRmYzU1NTQ3ZCBsZWdhY3ktdHJ1bmsKKzMxOTYzIGYwMGNkNjkzZDRlMDJkMzI3YTE2YTQ3NTA2ZTUzY2NiYjVmNDJiNjcgYXN0LWJyYW5jaAorMzE5NjQgZTUzMDQzYmRiOGYyM2FkNGQ5MThkOGFkMzM4ZWFhZTBhMTI2Yjk5OCBhc3QtYnJhbmNoCiszMTk2NSBjYjhkNDI3YWZkMjExNTcyY2Q2YzgxN2NmYzRhZDA1ZmRjMjM2OTcyIGFzdC1icmFuY2gKKzMxOTY2IGZhMzVjOGI0NWIyNDU2ZDUzMmE0ZjAwYjE5NmJjYzRmMDY0OGQ4MGMgYXN0LWJyYW5jaAorMzE5NjcgZDFkNjBjMmUwYWU5OTNhNmMxOGEwOWU2MTRkMzc5MzJjN2EyOTcxYSBhc3QtYnJhbmNoCiszMTk2OCAzMDVjMTc1MTFhODY5Yzk2ZTcyM2IwOTQ4MTZjOGQ2MzllNWQ1N2QwIGFzdC1icmFuY2gKKzMxOTY5IDU1ZDBlOTk4YmM0NmM0NzUwZWJlNjhiODg3ZTg0YmY0ZDI4YjNjMmIgYXN0LWJyYW5jaAorMzE5NzAgNzM2NWYxMzBmMTU4M2RhNmZjNGI3OTgwMTcyY2Q4MmQ4NjUxMzc3YSBhc3QtYnJhbmNoCiszMTk3MSA5MDczZjhmZjcyNTYyYWM3OTcxYTgzMWU5ODhmZDRjZTAyNGM2M2M3IGFzdC1icmFuY2gKKzMxOTcyIDYzZWQ4NTI5MDQxMzM2MDk4ODk4MGVmMzM2ZjdiYjA0ZWUzODIzNDEgbGVnYWN5LXRydW5rCiszMTk3MyA1ZWY2MTMyZjNjYWJjOWRkZTFhODBjMjA1ZjQ0NzFmNGI0MGJhNTFjIGNhY2hlLWF0dHItYnJhbmNoCiszMTk3NSBlYzgwM2NjNTcxODUxN2UyNjU5OGU1M2FlMGYxYTdhOGU3ZGU5NDM3IGFzdC1icmFuY2gKKzMxOTc2IDViMTUyYWFjODEzZDdkYjBiZTBlZmE1ZjkyY2Q1NDBhNTBmNmFlZDEgYXN0LWJyYW5jaAorMzE5NzcgOGZmZmE2ZDE1NDRhODQzNWU0MDBhMThjYjM1MTllOTIxMTJjODdkYyBhc3QtYnJhbmNoCiszMTk3OCBkY2RjNDUxNzQwZmFiNGI5NTQyMjk5ZDFiMjlmYTc5MTllZmUyODAzIGxlZ2FjeS10cnVuaworMzE5NzkgZjM2MmM5YWVkZjEzNGE1YWE0NTY5OTYyODI1OGQ5ZDM1NTE1YTA1MCBhc3QtYnJhbmNoCiszMTk4MCA3MzY3YTM4NGE3NDU1NThhNzA3MDAyNjE2OTA5N2EwZThmYTYyZWFkIGFzdC1icmFuY2gKKzMxOTgxIDExZDgyN2Q5MzkwNDI5YjhiMTY2ZjRiNzllNDJkY2EwNjU0ZGQ0ZTkgYXN0LWJyYW5jaAorMzE5ODIgNjMzYTRiYmQ3OTdlMTdlZTg5ZTY0MWNmYmE4ZDUwMjZjZjk1YjdhMyBhc3QtYnJhbmNoCiszMTk4MyA3NTZmOTg3YzM1OTAxM2I5NjYxYzM3YjMwOTY5MTM1ZDdkNWJkZjU0IGFzdC1icmFuY2gKKzMxOTg0IDM1MGVhMjZlN2ZkOTVlOWU4MTNhMmI0OWU2ZDZhNzk2NDI2NzM0MjEgYXN0LWJyYW5jaAorMzE5ODUgMjMwY2NiOWU1MDAwZWEzMmE4OGY0YzE4MjM2YjJiYTI4YTFiNGRlYiBhc3QtYnJhbmNoCiszMTk4NiAwN2YzZmE2MzlkOGVjNmQ1ZTY0ZTNkOTFlODRmYzY1MjdkOTgxYjdlIGFzdC1icmFuY2gKKzMxOTg3IGIwOWRiMGI5NmE3NmJjMjhiZTY1ZDBlY2Q4YzQ1ZjcyYjc0Zjg3N2QgbGVnYWN5LXRydW5rCiszMTk4OCAyZGExNGZjOWU3MmJjYWM4Yjg3ZDZjZWQ2ZWE5NjA0NjhlNDMxNjc5IGFzdC1icmFuY2gKKzMxOTg5IGMyNWJiOTEzYTIzNjNiZjY5NzJlMjdlZWFkM2NjNTkyMjExYWQxZDIgYXN0LWJyYW5jaAorMzE5OTAgOGU2N2JlZjQyOWE0MDhkZDA4OWFiOTQzYmUwMGJlY2YyMDgxOTViMSBhc3QtYnJhbmNoCiszMTk5MSAyNWEzY2MzNzY1NzJhNjc5MGJmZTNlMGVkMzFmMjI5NWYwODc3M2VkIGFzdC1icmFuY2gKKzMxOTkyIDkwOWZiZTI0M2Y5MDI2NjdjOTQzMGJhZjUxMzhkODY2ZDQyNWZmMDYgYXN0LWJyYW5jaAorMzE5OTMgNmVhMjBiODZhYzhkY2Y2NDhiN2Q5YzQyY2RiM2ZmOGEzOTYxMjkxMCBhc3QtYnJhbmNoCiszMTk5NCBmNmExMTkyMDE0NmViNTgzY2FmZjE5NmIxMGNjZTUzMjk0NDgyNTYwIGFzdC1icmFuY2gKKzMxOTk1IDRiY2RhNjNlMTA1NDFjNTc2MWNjZmI0OTE1MWUxN2YxYWFmOWE5NGQgY2FjaGUtYXR0ci1icmFuY2gKKzMxOTk2IGY4NGUxZjRkNDM4ZWIwOGU3NTdlMGEzZGVlYjE3Y2ExNjVkYjFkZjUgYXN0LWJyYW5jaAorMzE5OTcgNDQ5NjIwMjE5NTlmMjhkMTIzNDY2M2ZmNzNhM2U2YjEzZjhiMDA1NCBhc3QtYnJhbmNoCiszMTk5OCA2M2FjM2Q2M2I5ZmU3YWRhOTQwY2M0ZjYxODBkODdjNDg5YWExZjU2IGFzdC1icmFuY2gKKzMxOTk5IDEzZTU2N2FmOTRkOGE5YzIzMzcyNGNkMTI3MTZiY2QwY2JkMmQyNjEgY2FjaGUtYXR0ci1icmFuY2gKKzMyMDAwIGJjNzY1N2FjNDZiYmU3ZWFmOGE4YTQyZmU2MjdmM2QxYjU2N2Q3ZGMgYXN0LWJyYW5jaAorMzIwMDEgNDFiMWYyMmZjYjAxNzU2ZTMwMWM2MDg1NzFiY2ZmMDNiNzM0MmJiMyBhc3QtYnJhbmNoCiszMjAwMiAxNDU2NjIxODAwZDQ1OTY1NTRhMGM1MjcwYWRkYjg1MDAwZDA4MmY5IGFzdC1icmFuY2gKKzMyMDAzIDhlOGE5MTEzZmEyZDg1ZDI3NDBhNjBlY2QxZjk2ZDUzOGU2ZjdkYmEgYXN0LWJyYW5jaAorMzIwMDQgMzY0YmZlNzk0NzhmNGNiNTZkNzZlYzVlMjRiZGQzNmE1YTQ3NGEwNCBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDUgYWYxNzY0ODg3YWEyM2M1OWNlMGY5MGRlNjBkYzEwOGRjOGI0OTNjNSBhc3QtYnJhbmNoCiszMjAwNiAzZWZkODM0ZDBmYzUyYmYxYWUxODBjNmE3MTA1NGIyNWM3N2NjYjBjIGNhY2hlLWF0dHItYnJhbmNoCiszMjAwNyA3MzM3MjkyNjFjNDFhMjI2NjA1NDEwYWUyM2ExNWM3ZDliNzkwMDcxIGxlZ2FjeS10cnVuaworMzIwMDggYjBjY2M1YjVmN2UyZjJlODRmN2E0NDQ1YWZlNDlmYmQ2MGVkN2NjOCBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDkgNjMyYTZjYWUwYmU2ZjE2NGNlMDhkYjlmZGIxZjJjOWU4MjMxZGFmYiBsZWdhY3ktdHJ1bmsKKzMyMDEwIGFjNzIxZWQ2MTkxNDRmYmNiZGNiOWYxZmRiNTFmYWZjODYwYjYzMDYgbGVnYWN5LXRydW5rCiszMjAxMSBlMDZjNTQwZGMyZTJmMTNhYTc1YmI5ZTc3MjAyZjE3YTcyZDcwNzg5IGxlZ2FjeS10cnVuaworMzIwMTIgZmVhMjkyOTJiOTMxYjY3Njk3NzdhNzM4M2ZjYzBlZjBhMTMwYzQyMCBsZWdhY3ktdHJ1bmsKKzMyMDEzIGYzZDRjYzI5OTZkMmM4NjE4M2JmMzA1NTg5MjczN2M3YmZkZjYzNWQgbGVnYWN5LXRydW5rCiszMjAxNCBmNTI5ZGVjZDgyMWZlZmY0OGI0YmQzNzI3YjE4MzYwNTQ3MDczY2VmIGxlZ2FjeS10cnVuaworMzIwMTUgZWQzYzcwMDhmOTBlOGM1ZTQ0ZjI3MWI5YmE2MjA5OTdmM2Q2ZjUyZSBsZWdhY3ktdHJ1bmsKKzMyMDE2IDBjZjRlMzI0MDM4MDdlMGM5ZjA2NTc4NjA1ZjUxMWM0MGFkNjhkZDAgbGVnYWN5LXRydW5rCiszMjAxNyA1NDk2Yjg2MWM4OWFiOTI3NjczMTUwNWViNjhjMWYzMDkzYTMyODJkIGxlZ2FjeS10cnVuaworMzIwMTggNzBiZDhkOGM4NzdiYzNkMzA1MjI0MjBkYTg5NzYyN2Y0Mzc0YzM3YyBsZWdhY3ktdHJ1bmsKKzMyMDE5IDBjODAyZWVhNTYxNTc4YTkyOGM2NTUxNTEyMWQ0MjUwMDk4YWE5ZDMgYXN0LWJyYW5jaAorMzIwMjAgYjZlNjJjYmJkZjNkZWQyOGE1M2YwNDFhMzdkYjYyMDA3NmY1OTA3OCBhc3QtYnJhbmNoCiszMjAyMSBiNDUxYTllNmQ5NDA5MGZhZjQwMTY1NjlkNTRkOWQ1OTY1ZTczMDNlIGFzdC1icmFuY2gKKzMyMDIyIDMzOTI4YTUxZjJmMTEyYmYzOGIzY2ZkMmMyNDU3NjM1NmUxMWJiZTggYXN0LWJyYW5jaAorMzIwMjMgMWEyZmQxMDlmNmI2OTYxOTQ3MTFjMWU4NDI5YzUyYTE0MTFmZDI1MSBsZWdhY3ktdHJ1bmsKKzMyMDI0IGI1NzU0NmIzM2NiMTM2N2YwNTQ2MzFhMTRkMTNhNDJmMDk4NzkwMjEgYXN0LWJyYW5jaAorMzIwMjUgZWM2MjIxZTliNzlhY2M0NmYyYTJmYzNiMzdjOWNhZGJmY2ZkMjkxMSBsZWdhY3ktdHJ1bmsKKzMyMDI2IGE5MzUxMjcwMzg1YWEwNGExYzAyNjdhMmVhMzA4ZGVjYjkzZTcyYjEgbGVnYWN5LXRydW5rCiszMjAyNyAzMGQxYzg0OGQyYjAxNjg1OGZmMDhkMjZlM2ExNGMyZDBjMTFmZjA0IGxlZ2FjeS10cnVuaworMzIwMjggZDY1NTNkMDgyN2FiOTY4Yzc5MDhkMzViMWRkMzFlYmZlZTI1N2E0MyBhc3QtYnJhbmNoCiszMjAyOSA4NGIxNjM1MjNjZDRkYTFjZDg3MjlhMGEyMDI0NTNlOTBkZjBkOTgwIGFzdC1icmFuY2gKKzMyMDMwIDE1MmJhZjRlMzU1NTUxZTcxYWJjNTQ5MmE1ODBkNDc5MjgwMDk5MmQgbGVnYWN5LXRydW5rCiszMjAzMSA3MjFlOWU0ZWVjMWVmMDhlMTEyNzBkZGUwMWFlMTI5MzhhNjFmNzhmIGxlZ2FjeS10cnVuaworMzIwMzIgZmE3OTVmNGU2ZGM3NzRiZDYzNDljZWUxYmRmZmM1MjdhODIzYTZkYSBhc3QtYnJhbmNoCiszMjAzMyBlNWMwMDg5NTUzODExMTI2Y2Q1MjQzMTRmMDQ3Y2VlZmNlMzAxYWU5IGxlZ2FjeS10cnVuaworMzIwMzQgYThlYzczZDEzZDAzM2M1YWZkYWYxZmRhZWU1MDkyN2Y1OGViYTg0ZiBhc3QtYnJhbmNoCiszMjAzNSBiYjg1YmU4Mzc2YjhlYmI5MDdjOTYzYjkzNGRkMTI4OTY5OWY1MzJlIGFzdC1icmFuY2gKKzMyMDM2IDhhZGU5MGFmNjE0YzM4YzJkZWVkMzgwOWRmMzI0MWVmZmU3ZDA1ZjMgbGVnYWN5LXRydW5rCiszMjAzNyAyZWQ3YzFjNDU3YjkzZmZmN2JiNDc4YWI2MTAxYmYwZmE4NTQ5NmM0IGxlZ2FjeS10cnVuaworMzIwMzggNmM2NDYxNmQxN2VkYmM5YmY2NzYzY2EyMWNhMjdlZjQ5MGJjY2NmYiBsZWdhY3ktdHJ1bmsKKzMyMDM5IDlkM2EyNWU5OTA3NWIwMzMxNGE1MmM5OTdmZmNjNTlkNWNiZGU1MWYgbGVnYWN5LXRydW5rCiszMjA0MCAxYjFkOTlkZGEyYTFkNjQxYWQxZmVhZDUyYjgzZDBjNjExNTE3ZDE4IHJlbGVhc2UyMi1tYWludAorMzIwNDEgNDQ1OWNkY2JmNTM4NDI3ZWJiYTU5MGUyYTZiYjcyYTU5ZTk5N2FlZiBsZWdhY3ktdHJ1bmsKKzMyMDQyIGNiMzMyZDQ0OTE3MTZlMjM4NzA2ZmIwYjNjMmZlNzE1ZGQxZDcwNWUgbGVnYWN5LXRydW5rCiszMjA0MyBjZDU1ODg3NjI0YjMyNWY5MWU0ZDNhZTU2MmM0Zjk0M2M2MThiYzQzIGxlZ2FjeS10cnVuaworMzIwNDQgMjExNDM0ODZjZTQwYjM3Nzc3Njg0YjkxMDAxMGY3NDMwMTJhYTljOCBsZWdhY3ktdHJ1bmsKKzMyMDQ1IDA0MTgyZTVhNjBiMTEyMmMyMDc2M2Y0M2I2NTI3MWU1ZDc0ODk3MWMgbGVnYWN5LXRydW5rCiszMjA0NiAyZTIwNjkyZGQyODY4MTM2ZmU5NTMxNDQxMTY1MWNhNjMwYWNjYTM4IGxlZ2FjeS10cnVuaworMzIwNDcgZWUxYzcwOTA1MGIyNDk0NjA1N2IwYmVmZGQzOTVhN2QxZWJjOTEwZSBsZWdhY3ktdHJ1bmsKKzMyMDQ4IDYzMDQwOWY0MWNjM2Y1OWFmYmVhODMzYmU2MThiNjIwNTgxZTIwNjUgcmVsZWFzZTIyLW1haW50CiszMjA0OSA4NzFkYTcwM2U0YzBhNWMyN2MxYTJkY2YxMWI4NGY4YjM3OWIyNjA2IGxlZ2FjeS10cnVuaworMzIwNTAgNWRkYmM5NzljNjU1OTUxODMwOGE2MzVjMzY3MDU1MWE4ZGE2OTRkOSBhc3QtYnJhbmNoCiszMjA1MSBkNzAwMWZhZGZlZmMzNzc1ZWI0MjVkODRhMDBiZGYwOWUxOTU2MTZiIGxlZ2FjeS10cnVuaworMzIwNTIgZDkzYTg0NWNlNWMwOTAzZmRkMWMxZjJlMTliZTEwMmEzMWM0YTliMyBsZWdhY3ktdHJ1bmsKKzMyMDUzIDkzNGRiZWI0MGIzMTcxNTc1ZjdkYTFkMzFhZGFiZTJjYmM4YjZmN2EgcmVsZWFzZTIyLW1haW50CiszMjA1NCBmMjU4MGMyZTc0ZGQ3OTY2OGUzYTdiMzlhZDYxYzFkZDc0ZDUzOTA3IGxlZ2FjeS10cnVuaworMzIwNTUgMDA5MmI2OWY3Zjk5YWE0YWRhNGVmMDEwYzhiZjM4ZTEzNjNhMTEzZCBsZWdhY3ktdHJ1bmsKKzMyMDU2IDE2MWI4YmQ4YTIyNmZjZjlkYTU4ZTkwYThmM2VjNTUyNDg3OTcyODYgbGVnYWN5LXRydW5rCiszMjA1NyAyNDA1MzcxYmUzNGM5NjY4ZTUyMGVmMzBkYTVmYzBiODI4YzFhN2I3IGxlZ2FjeS10cnVuaworMzIwNTggM2ZjNTc2NDI3M2Q5NmYwYWEzOGY0NDFlYTM3NzU3NWMyNmY1NzNiZSBsZWdhY3ktdHJ1bmsKKzMyMDU5IDUwMGY1NDVhMjRmMDdmN2YxNzJiNjRiYjNkM2YwMDRkNzdhZWRlODIgbGVnYWN5LXRydW5rCiszMjA2MCBmMGFkOGZhODhkN2NjZWYyZDQ0YzMwNmI0ZjkxYTYzNDBjYzZlNjY5IGxlZ2FjeS10cnVuaworMzIwNjEgMGEzY2UzMDZiMTFhNWQ0YTlmODFjN2ZjYmQ0MDJhOWQ2YmFhNDFkYyBsZWdhY3ktdHJ1bmsKKzMyMDYyIDE1N2M4NzJlNjg5MmI5YjNkNmU1NjVmMGY5ZDYyY2UxOTYwNGNhMTkgbGVnYWN5LXRydW5rCiszMjA2MyAzN2ViODkyOWYwY2I0MDMwZjJhMjJjODVlNmJhNTU4MDY5NWU1ZDEzIGxlZ2FjeS10cnVuaworMzIwNjQgNTZkOWJiYmFlNmY4MTBjZTAxMTk5ODA5MjY2OWI4MGMwZDFjMDBhNyBsZWdhY3ktdHJ1bmsKKzMyMDY1IDA1NDQzNDMwZDdlZDNkZDRkNmZhNmMyMzEwNTIwNjBjYzZjMzg3MTQgcmVsZWFzZTIyLW1haW50CiszMjA2NiBkZjliN2NlZTEzMzk1MTZiYjg1N2ZlY2JiMDY5YzlhOTRlYjE3NWQ0IGxlZ2FjeS10cnVuaworMzIwNjcgZjMwNzg2NTRhNWMwMmZkZjg5YjVkYTYxYTk4ZjllOGY0MDNmM2NhOCBsZWdhY3ktdHJ1bmsKKzMyMDY4IDIzNWQ1NDNlMGI4NDk3MTEzNWY0ZTEzOTRmYzA3MWVjMjY0MDQyMzUgcmVsZWFzZTIyLW1haW50CiszMjA2OSA3YTNmNzI5ODNhN2VkNTc3ZWZjMmMxMDQ4NzRlOTIzMmVmZjc2ZDY5IGxlZ2FjeS10cnVuaworMzIwNzAgODA0NDczY2Y3MTIxNTQ0MDUwNGYwMWQwOGNiMDE4MjM0NWExNDkxMSByZWxlYXNlMjItbWFpbnQKKzMyMDcxIGQ4Zjk4ZGM2ZTdlMDRhMTdlZWRjMGJjZDdlNWUxNTdmY2ViOTJmMDkgbGVnYWN5LXRydW5rCiszMjA3MiAwNzZjODY3YjkxNmUyMzA2YTQzYTJmMzQxNDE4ODRlMjVmYWVmOTg2IGxlZ2FjeS10cnVuaworMzIwNzMgZGY2NWIwMjE3ZGQ3ZjA4ZTY4MWVkOWYyOTM2N2I3ZjAwNGQ5MDg3MCBsZWdhY3ktdHJ1bmsKKzMyMDc1IGFmMDVmODhiOTY0MTM1OTY1YWVmNGM0NDRlZDljMGJiZDMwMzNhN2QgbGVnYWN5LXRydW5rCiszMjA3NiBhOGQ2NTc2Yjk1YWZhY2IxZDE1MzJhNmU0MTUxOWU5MDBjYmIzMGRiIHJlbGVhc2UyMi1tYWludAorMzIwNzcgOWM2MjA5MjUzNjE1ZmY0MGJhY2U0MzlhNDc4ZDQ2Y2RhYjhmNzFlOSBhc3QtYnJhbmNoCiszMjA3OCA1ZmJkODgwMWZhMjYyNWViMmE4OTQyOTI5NzM5OGEzM2QyYjNjZmIyIGxlZ2FjeS10cnVuaworMzIwNzkgMTU5MmVhMzZhNzAyMzI3ZTViNmI2MzU2ZDI1MjZiYTk3YTM2NjE3MSBsZWdhY3ktdHJ1bmsKKzMyMDgwIGFkNDJjYmVhMjI1OGE3NzIyOTRhNWZiODFjZjliZWU2YThiNmI3YzAgbGVnYWN5LXRydW5rCiszMjA4MSBjN2YxMGE5MDBkNjMyODg4M2E5MmFlNWFlODk0NzVmMGM2OWU1NjFjIGFzdC1icmFuY2gKKzMyMDgyIGI4NzA5NWZiYjA1MTY4ZDFjZTJlMTcwNjI5OGFkNTZkZTBhNWNmZDIgbGVnYWN5LXRydW5rCiszMjA4MyBmYzg0MTUzNTE4MGM5ODRiY2Q4NmU1MWJkMTgwYzUyZGUyOTdmMmExIGxlZ2FjeS10cnVuaworMzIwODQgNzE0MGE2MjM2YzNhODhjOTgyYTQyYjFmZjVlMWZlNDQwZDYxZGVlMCBsZWdhY3ktdHJ1bmsKKzMyMDg1IDc1MWQ3Y2U5YjRiMjNhODRjOGQ3YzE0YmY0YjhhZjk2MTY5N2M0YWEgbGVnYWN5LXRydW5rCiszMjA4NiBiNjZhMmU0MWRhM2VlOTkxNWZmNWRmNjQ1YjRjNzM4MTU1Y2ViMTllIHJlbGVhc2UyMi1tYWludAorMzIwODcgMDRjMWJhNTFlZmRiY2JiYzk5ZjUzMmIyODhkNDljZjhlN2JhY2YwOSBsZWdhY3ktdHJ1bmsKKzMyMDg4IDg1MmFhZTg0Yzk4MTM3M2UwMmFjNGVmNWQ4NzBiYWJiOGJjYjc3ZTYgbGVnYWN5LXRydW5rCiszMjA4OSAwZjU1OGVlZGU2YzU3N2E1OGNjMTM5YjViY2ZkM2UyZmRlMTRmZmJjIGxlZ2FjeS10cnVuaworMzIwOTAgNTA1ZThjMGZhOTJmZTJjYTJjMmI3NjQ4NzhiMjU4MmUzMDRmNDY3NyBsZWdhY3ktdHJ1bmsKKzMyMDkxIGJiYjc0OGY2ODE0ZDY0MGE2NDlkZjM1NDQxYWUzYWJlYjIzMTVlYmQgbGVnYWN5LXRydW5rCiszMjA5MiBmM2FkZDQxNjYyOGRjNzQxNDM2ZmE1Y2Y0NzQxOWVkODBhODVlMDdhIHJlbGVhc2UyMi1tYWludAorMzIwOTMgYjFmYmI4M2U1MTM5MTQ5ZTliNzY1OTUyYWM0NTk1NWZlNWQ4Njc0NCByZWxlYXNlMjItbWFpbnQKKzMyMDk0IDg4MDJkZTBkYTUzMzkxMTYwZmQzZTM1ZDdiOTUyMzc0MjI1MTkxMmQgbGVnYWN5LXRydW5rCiszMjA5NSBlMTNhN2UxZmRiOWU1YjdjMjhjMTJjZjI3ZDJiYmU5Mzk1MTE5NjJhIGxlZ2FjeS10cnVuaworMzIwOTYgODZhNGNlYTcwOTczYWJlYjQ3MzI4NjM1NTVjNDQ4ZTRmNDQ2MGVkNyBsZWdhY3ktdHJ1bmsKKzMyMDk3IDEyZGFkMjA4MWUyZTgyM2ZlOTIxOTU2NDQ1ZjgxZTA5OTMzZTdiZTcgYXN0LWJyYW5jaAorMzIwOTggNGFlYmFjYzc4NjdiYjFlMGZhYWNmMjIwMzFjOGU4MzA4YmJhZWQwNyBhc3QtYnJhbmNoCiszMjA5OSBmMTE1NDQ3M2RhYzhhNzBkZjQzNWZhZmVhZjg3MDdmOTdkNDNlZDQzIHJlbGVhc2UyMi1tYWludAorMzIxMDAgYWZkNWMyZTRiNGFmNmRjMWVjZTA4MjA1YzRiNjMxYjI3ZGY4MDYxOCByZWxlYXNlMjItbWFpbnQKKzMyMTAxIDI4N2RhYTZhN2Y0ZjIyMGRlODEwOGY4ZjU2MDc0ZTJlMzgxMmQ0YTAgcmVsZWFzZTIyLW1haW50CiszMjEwMiA4ZWZlOTQ0NTQ5NWIwYjc2ZDQwNmE1YWE1Y2VjOTQ1ZGNkZjdiNjY0IHJlbGVhc2UyMi1tYWludAorMzIxMDMgNTU1MGY1YTlkNzBjYTc2MjAyZWQzMDc3MmFmMGUzZjViMDU5YzE4NyBsZWdhY3ktdHJ1bmsKKzMyMTA0IGE4ZTVlYzA3MDQzM2Y1YWNhMmJiZGU3ODkxZjMzNDVmMzU1ZTE3NWEgbGVnYWN5LXRydW5rCiszMjEwNSAzNjIyMmQzODIzZjEyOTg2MDM0MTA2NjU2NGNmZjExZDdkNjNmOTUyIHJlbGVhc2UyMi1tYWludAorMzIxMDYgOTczZjlkMzVjZjFkMGYxNTI0ZDczNGViNWQ3OWEyNzNhNWMyMDJlZCBsZWdhY3ktdHJ1bmsKKzMyMTA3IGFiMmE1NDNlODU1YmM5ODhlYmJiMmM5M2I1MjNiMzYzNjlmOTA3NDcgbGVnYWN5LXRydW5rCiszMjEwOCBmMzhjYTllMWI2ODNiZjdhOGI2Yjg0Y2I1ZGM1OTkyNDg3NjE3YzI5IGFzdC1icmFuY2gKKzMyMTA5IDBjNDMzNWYxMGM2N2EyZDNhNzgzOWY3YjRiMDJiMjI3YTJlYmU2ZmYgYXN0LWJyYW5jaAorMzIxMTAgNDMwOGU4YTZjNDgwZGUwMGJlMmY2MDg5NWQ4MzMwMjhkYjg4ZjYwYSBhc3QtYnJhbmNoCiszMjExMSBkYzg5MGE0YzA1MjgwNTVlZDMxZmIwMjNiM2MzZDUwNTBkY2NhOGUwIGxlZ2FjeS10cnVuaworMzIxMTIgYjg1YTIwNTYzMWE0NWMwMzhhNWZkYTMzMmY4ZWJkOWU3YTVjYzkwMiBsZWdhY3ktdHJ1bmsKKzMyMTEzIGYzMTFiNWQyMWVmNTY0YjEwZGI4NWEzZGI2OGQ4N2UwY2Q1NzBhYjEgbGVnYWN5LXRydW5rCiszMjExNCA0ZjhmMTdhZjM0ODdiYWIxNGIwMGI0NmI5Nzg3YmJhYzNjNGYzZDUyIGFzdC1icmFuY2gKKzMyMTE1IDczOGUzNzhmYTBjYzE3MThjMTBmYWYxYzY4ZGM0OGE4MjZjMjcxZjMgbGVnYWN5LXRydW5rCiszMjExNiAzMmJlYTQxZmVmNjhkMDQ4YTI2Y2NiYWNhNTk0OTZjM2FiNWFiODRjIGxlZ2FjeS10cnVuaworMzIxMTcgZDdkN2FmNWYzMjMxZjAxMmQ1OGY1M2Q0NzBjNGE2YmFkNmJlOGJjYyBsZWdhY3ktdHJ1bmsKKzMyMTE4IDQ5MjAyOGU0NzI2ZjE1NzU1MDNhZTVhM2M1OGU3OWMxOGE0NWNiYWEgYXN0LWJyYW5jaAorMzIxMTkgODFiY2MwZjU3ZDU3MGZiZGY1ZjBjZGIyMzYwMjcxOTk1OTMzODkyYiBhc3QtYnJhbmNoCiszMjEyMCBjZWI3YmI3OTEzNTMzNjYzMDA1ZmUzZDZlZGI3OThjNGJkZGI3ZmQzIGFzdC1icmFuY2gKKzMyMTIxIGVkMjFkOGIzN2UzM2Q1NWY1ZjhlYTM5MDUyMzQzYWUxNmY2NTM0MzUgbGVnYWN5LXRydW5rCiszMjEyMiAzZDhjMTIxNGExYzc5YmE3ODE0MGIzZjc0YWQ0MjhhMjVlNjZkZDUyIGFzdC1icmFuY2gKKzMyMTIzIGVkNzNkNjU4NzI1YWE3OGRhNmZjZWRmM2QwMGE3Zjk2MTBiZGM5NmIgYXN0LWJyYW5jaAorMzIxMjQgNDBkOTY1OWI1NmM5NDZjNTcxNTFlZDViMjBmYTJjZWIwYjQ0MzI1YSBsZWdhY3ktdHJ1bmsKKzMyMTI1IDNlMzk5YTg2MThkYjM1YjQ3YmQ1MWI4MmFiYzI3ZDEyNDQ4Y2QyMGQgbGVnYWN5LXRydW5rCiszMjEyNiA0MmRmYTA4OTFiMzMyNjYxMTcwOGQyNzM1OTU2Y2FlOTBlMzg1NjY4IHJlbGVhc2UyMi1tYWludAorMzIxMjcgY2JhMGFlZWUwZDY1MTUzMWI5YWE1NTVmNGM4YjAzYTA5Mzg0NTM1NiBsZWdhY3ktdHJ1bmsKKzMyMTI4IDAwYTU2ZmJlYTY5ZmIwYTcwYWI3MGU2MTRkNDQwNDgzODYyMjIxYzQgcmVsZWFzZTIyLW1haW50CiszMjEyOSAwZmNmOWFlMjVjZmViZTczYzEwYjgxMjEwZTg5MjhlOWMzMTRjNWRlIHJlbGVhc2UyMi1tYWludAorMzIxMzAgNGI2ZTIwZjBiYTRjZGE1MzljNjNjOTAwMThlZmZmNzcyYmE2ZDg4YyByZWxlYXNlMjItbWFpbnQKKzMyMTMxIGNiNWRiNTU2MWNkY2E5ZDM0ZDJiMDY2NDYyNzViMDZhM2NkOGU4ZTQgbGVnYWN5LXRydW5rCiszMjEzMiA4NDlkZmVhMTgyY2EzNzczMzlkZGJlYzRkOWIxNDQ2YjQ2MDM1ZTUwIGxlZ2FjeS10cnVuaworMzIxMzMgMTE3YWNlODUyMWExZDI5NjdhZDFlMzZjMjFhYzk4OWFhNmQ3MTE1OCBsZWdhY3ktdHJ1bmsKKzMyMTM0IGEwNTAzYmRiMGMyNDJjZDg4ZGYzZjI2ZTY3YjAzNjAwZWVkMWY3NjMgbGVnYWN5LXRydW5rCiszMjEzNSA4MjMzYTAyOTRjNDFlM2RlMDA1NzQ0YzBkZGExNjEwOGY5YzEwNjgyIGxlZ2FjeS10cnVuaworMzIxMzYgMzc1ZmRiODJhM2NhZTMyOGE1ODI3MjdmNDgzZGVmYmQzMmE3YmU1MSBsZWdhY3ktdHJ1bmsKKzMyMTM3IDBkZTBkZWQxOTk2OGVjNDcyMjE4N2Y2ZDk3MmNjYWMwNjY1YTI0MzEgbGVnYWN5LXRydW5rCiszMjEzOCBhY2YzNTk2ZmNjMjhkNTA0ZmZiODE1N2ExN2VjMDQ4MzY2MDQxMTkyIGxlZ2FjeS10cnVuaworMzIxMzkgMTc0Y2U0Y2RlYzQ3MjZkOTExODRjN2M3ZmQ4OWM0MzAwZTQzNjg0MyBsZWdhY3ktdHJ1bmsKKzMyMTQwIDkwYzc3YjhhZjFhNDk3NDQ2MGYyNmZiMmIzN2Q3NWRjY2Q1NGFiYjIgbGVnYWN5LXRydW5rCiszMjE0MSA5NDAwNTA0Y2IwYjI2MWUwMzNlZGRmMjg4YzI2MTkyY2ZkZDUxYzMxIGxlZ2FjeS10cnVuaworMzIxNDIgNGM1OTZkZDYwYzIyZDMwZDRkZWJmODY3NGUxNDRhOTM0YjRkYTM4OCBsZWdhY3ktdHJ1bmsKKzMyMTQzIDc4Zjg0NmZiNTcwYTA2MzJhNzZlN2JlMjhkNTAyOWJjZmIzOTg0M2UgbGVnYWN5LXRydW5rCiszMjE0NCAzNjhiZWJlMzI3NDMzOTAxYzY2N2VmZWYxYjU4NTU5MzcxYzY3NzIwIGxlZ2FjeS10cnVuaworMzIxNDUgMjVlNzQ2Nzg3MWM1ODcyYjliNzFjZjg0N2M5YzM1MmI1NjU1YTNkOCBsZWdhY3ktdHJ1bmsKKzMyMTQ2IDJhMzA5NWE0MTViMTBiYTEwMzU3MzQ4MWE3MWE0YjA0MzcyNjMyZmYgbGVnYWN5LXRydW5rCiszMjE0NyA2NjUzYTU2MDAyZWY5ZDgzMTZkYjhhM2ZhNGQ2MDQ5MDE0OWJkMGEzIGxlZ2FjeS10cnVuaworMzIxNDggOTY0YmQ5N2FjMWY1YmQzZDk1MzdlYjA0Mzk2MDQxODkyNDIzZDdkNiBsZWdhY3ktdHJ1bmsKKzMyMTQ5IDQ4N2RmMjk0ZDMyODEwYzhlYWYxNTBmMmY1Zjc3YmZlZGQyMjA2NmMgbGVnYWN5LXRydW5rCiszMjE1MCBjMDFmZGMzYTkxODA0MmQ5NDFlZDVlYzcwZDZlYjQ3ZmI4N2RhNDYxIGxlZ2FjeS10cnVuaworMzIxNTEgNGZmNjExYjE2NDg0OTMzZjAyMzRmZDA4YzYxZjlhMjdjMTQ5ZDcwZCBsZWdhY3ktdHJ1bmsKKzMyMTUyIDkyZDAxZjEwMmNhMDk5M2ViMTQ0YjViN2MzNjc3MDE0YzhkM2MxM2MgcmVsZWFzZTIyLW1haW50CiszMjE1MyBiNWIzZTZmM2YzMTdlZDhkNDM5NmE3N2E0NTE4YWQxYzFmMmNlM2VmIGxlZ2FjeS10cnVuaworMzIxNTQgNWI1NDYyYWUzMTRkZGQzNTczZTI3NGIyY2RlZWEwMDk4MzA2ZTZlNCBsZWdhY3ktdHJ1bmsKKzMyMTU1IDVmYTgzNDRkNmU2ZjAxZDUyYWMwOTQ2MmZmOWE5NmU4MzIyNzRmMzYgcmVsZWFzZTIyLW1haW50CiszMjE1NiA4YmYwODRjNGFkOWY3NGI4YTM1MTA0MjJlZjUzZjdiZGM2ZjJjZmE1IHJlbGVhc2UyMi1tYWludAorMzIxNTcgYmE3MTYyMjQ5NzRlOTc2OWY4N2MyOTZiMjIzMDNiMjA0NDcwOWVmZiByZWxlYXNlMjItbWFpbnQKKzMyMTU4IDE2MzlmNjM1ZDk4M2I5ZmM0NzBhNzczNDllZjg5NDllMGY3NjIzMDkgbGVnYWN5LXRydW5rCiszMjE1OSA4NzgzNjZiMGU5N2FjNzE1YTJhYzM1MDhiNWU4Mjc1ZDY3OGMyYjJlIGxlZ2FjeS10cnVuaworMzIxNjAgZjIxM2VlNmNlNTVlZThmYTNjMTRiNjU5MGVmZTg2ZTU4MjI4ZjkyZSBsZWdhY3ktdHJ1bmsKKzMyMTYxIGI5MDY0ZWEwNTkzZWExZDczNDcyYmY2NmZkYWMxMDlkZDg0OWEwZjIgbGVnYWN5LXRydW5rCiszMjE2MiBhZTBhZWIwZDYzMWJjNWM1Y2EzZjBmZTM1MjEzYzUyOWIzNjdjNTA4IGxlZ2FjeS10cnVuaworMzIxNjMgNDY5ZmI2Y2U5NjkzNTFmYjMwNzZmZjgzYTg1OTBiZjFiODk3MzkyMyByZWxlYXNlMjItbWFpbnQKKzMyMTY0IGM3YmIyNTRhYjg5MGUxYjk1MjRjZTRiNzVjOThiZmM4YTU1YzRkNTcgbGVnYWN5LXRydW5rCiszMjE2NSA3MTEwM2RmOWQ2NGIwN2RjM2MxMDc1YzE5OWI1OTY2YTQxN2ZiYmIzIGxlZ2FjeS10cnVuaworMzIxNjYgYmJlZDdlMTJiODQyMmMwOTFlZWUyMTc0OTU3YTM2ZjMzZTdkMGExZCBsZWdhY3ktdHJ1bmsKKzMyMTY3IDg5ODRkZjJkYzI3YjI3MGQ4YzI5MDMzMTU3MzA4NWUyOWFkZmNhODIgbGVnYWN5LXRydW5rCiszMjE2OCBiNjFhOWUyMWE2NmRjYTU5ZmUxOGFjZGZlODg5MmYwNmVjYzBkMGQ1IGxlZ2FjeS10cnVuaworMzIxNjkgMzQ0ODM3NjkwNzhiMzMzNzBhZGZkZjc4MjBkYjczZmUxNzY0MmJlNiBsZWdhY3ktdHJ1bmsKKzMyMTcwIGU5MzBiZWJlYzhjMGY1ZGQzYzQwZjkwY2YzYjM1Yzk2MWI0MDc5MTMgbGVnYWN5LXRydW5rCiszMjE3MSBlZTg4NTNjYzhjYTFmNjlhODk3Mzg2YTljZmI2MWMxOGVmNDZhNzdjIGxlZ2FjeS10cnVuaworMzIxNzIgMDE3ZDJlM2VhMmFlNGJhNmRkNDI3NWY1MjU1MjZlYmU5MTI1YTYyNyBsZWdhY3ktdHJ1bmsKKzMyMTczIGZkNDM0YmViNWY1NjA3OWIzNDlkMzIyZjdjOTA3NjNmM2YwMmM2ZTQgbGVnYWN5LXRydW5rCiszMjE3NCA2YWExYzA4MjZhMzliZTY4MzQ0Mjk5ZjFkZDA3ZmNmZTYyNTI1NDBmIGxlZ2FjeS10cnVuaworMzIxNzUgZDEwZGJiOTRjOWVlMWJmZjljMTRlNmM1ZjA4NzgxNTczMTJmNjU5NCBsZWdhY3ktdHJ1bmsKKzMyMTc2IDJkNGMxZTRlNWIzNmI1NDQ5OTIxNjY1NmI2NWY3MzMwMmJhOTI0MjUgcmVsZWFzZTIyLW1haW50CiszMjE3NyBkYjQ3OTljYTIwMjFiY2Y1NWQ5MjdhZmUzNDgyMzQyM2Q0N2I4ZGQ2IGxlZ2FjeS10cnVuaworMzIxNzggOWFjZGM2YzQ0MTZhYzUyMjg4MjU3OGVmODRmMjNiMTBlZGU1NjVhMCBsZWdhY3ktdHJ1bmsKKzMyMTc5IGIzN2IyOTgyMDg2YmMzMzMxMTg5NjIyMTNhYTE2NjEzOGRkMGIwNDMgbGVnYWN5LXRydW5rCiszMjE4MCA2MmU4ODNlMmQ1MTcxMWYwMDhmMTM5ODNlMGUxNDliYzkyOGY5Y2ZmIGxlZ2FjeS10cnVuaworMzIxODEgZTZiZjA4ZGFkZDVjMjE3NjA1ZWU5ZGZjYjE0MTNmZTExYjA5ZmUzZiByZWxlYXNlMjItbWFpbnQKKzMyMTgyIGI0NDg3YTNiNWYxYTFkMWJmMzQ0MjBmOWFkZDM0YWNmNWVmOTc3NTggcmVsZWFzZTIyLW1haW50CiszMjE4MyA3ODM5NWU1YjQ3ODJjYzM0OTI4ODRmYzNlOWM1NWQwOTc3NWRmMWIzIGxlZ2FjeS10cnVuaworMzIxODQgYmEyZDg5MjFhOGRhMDE5YjhmMjAzMjI3MjJmYjZlZjQ2ZjVjYTgzMSBsZWdhY3ktdHJ1bmsKKzMyMTg1IDg0YWNiYTIyNzk1NDI0Y2ZkZTVjMTQzODNkMzIwOTM1ODRiZWU4M2UgbGVnYWN5LXRydW5rCiszMjE4NiBhZmYwODBmMmVmYjQ4NjhiZjhhYTY3NjNmNjQ5N2JkZjNkMzJmNmZhIGxlZ2FjeS10cnVuaworMzIxODcgZTkyYzI1ZDQyOGI4N2YwMjJiZGRjMWJhMGQzMTc4OGVkNjRkNTRlMiBsZWdhY3ktdHJ1bmsKKzMyMTg4IDIxZjdjZmYxNzkwZmRjOGQ1OWU1MWM3YzNiOGE3OWU3ZTFhYjBhNjAgbGVnYWN5LXRydW5rCiszMjE4OSBjZDUwMTEyMTcxNWIwNjhhMzU4YzJjMDUyZjExN2M5YWE5MDY0ZjUzIGxlZ2FjeS10cnVuaworMzIxOTAgN2E2MjgxNDkzZDJjNjcxMDQ3YzFkZmQ1NTg1MGI0YmM3MDk0MGMxMCBsZWdhY3ktdHJ1bmsKKzMyMTkxIGYyMWNkMDc5ZDEwODM1ZjQxNDE0M2NkZTQxZjg5NWExMDUwYWRiOGIgbGVnYWN5LXRydW5rCiszMjE5MiA2ZTdlZmQ2YzI1MTBhMmIyZDFjZDFiNWZiN2IwZWEzMDY1YzFjODhlIGxlZ2FjeS10cnVuaworMzIxOTMgOWRkYzQ5OGI3MDEzYjg2ZTcxYjg4YWI2MDAzOTJmYjk1MTg4MDNkNSBsZWdhY3ktdHJ1bmsKKzMyMTk0IGJjODkyM2ZkZDgzYjU4OGZiYWNkZjU0ZDJhODNjOTJiOWNlN2I1YjEgbGVnYWN5LXRydW5rCiszMjE5NSBkMDhkN2I0YmU1MzIwMTMyMTJmZmJiMDBhNWU3OTlkYzBiZGRmNTVhIGxlZ2FjeS10cnVuaworMzIxOTYgNzUxMTM3NTkyNTJjNzg4YzE2Mjc3MjlmNzM1NmM1OGEzZTI0NzhmNSBsZWdhY3ktdHJ1bmsKKzMyMTk3IGJmYzdhOWZhMzRkNmRiMjM0ZTg5MTgyMzEwOWNiNDE3MDVkZDExOTkgbGVnYWN5LXRydW5rCiszMjE5OCA1ZmJkY2FlZjlkZGFhMjMyNWE3NDU0ZTU5MzQ2ZWZiMmMyMTIyMjQ5IGxlZ2FjeS10cnVuaworMzIxOTkgZmFlYjcwOGJhY2M0MjE2NjdmNjBhM2E0ZjY3MDVjYjkxMTIwNzI3MiByZWxlYXNlMjItbWFpbnQKKzMyMjAwIGRhNzRiZGQ5MzQ0MWJkNDAyNDZiOWNkOTYxNjRiZDk0MTRiNmVhNDYgbGVnYWN5LXRydW5rCiszMjIwMSBiZTJlY2FmYjE1YWQwZWEwMjZmYTk2YmMyMWFjZjVjMWQ1MzNkNjE5IGxlZ2FjeS10cnVuaworMzIyMDIgMjE1ZjFmNDg1MWE0NjM5YWVjZjY0MjE5N2U3M2RmY2VhZjc3ZTI0MiBsZWdhY3ktdHJ1bmsKKzMyMjAzIDFiZDUwYzI4MjAzZmNmMjdlMzBkYmM1ZDNlMDNhODUzOWI1MmI0NzcgbGVnYWN5LXRydW5rCiszMjIwNCBmMzAxZWFlZGRlODU4YmRhN2QwMDJjODhmZTU2OWNmZGViMmQ4MTMwIGxlZ2FjeS10cnVuaworMzIyMDUgOGI0OTQ0NWMwYTBlMDM5MGJmMDViYjEzNjk5NDE0ZDljMWFkNjA2OSBsZWdhY3ktdHJ1bmsKKzMyMjA2IDk4MTAzMmU2NDczNjJmMDgxYTg5MWQ5MTFjYTQ3NDg2YmMxOTNjYmEgbGVnYWN5LXRydW5rCiszMjIwNyBhNWM1ZGE1NDZjMjkyOGM3ZGYxNTg2ODIzOWNhMGQxZWQxMmM2NzExIGxlZ2FjeS10cnVuaworMzIyMDggYzJhZDYyZjRlYTliMzBiNWFlMDNlN2EzMWM1YTA4YzhiMGMwYmNhMiByZWxlYXNlMjItbWFpbnQKKzMyMjA5IDAzYmIwYzQwOGQ1NzMxOGNhNWJlOGU5Zjk1MmZjOTE1ZTMxYTQyNzIgbGVnYWN5LXRydW5rCiszMjIxMCBhMGMwMDIwNTA1MjY1YThlMzg5N2RkNjI0NGM2MmQ5ZGI1ZjFhMWE5IGxlZ2FjeS10cnVuaworMzIyMTEgYzM2YmQxYzgzNmI4YzgwY2RmNmQ4Nzk5OWFiMjAwNGJiZjY2NGNlNiBsZWdhY3ktdHJ1bmsKKzMyMjEyIDBkMjY4YzZlZjAwYWNkZTZhMDE4MGYwZDhmZTZiMzI0MTMzM2I1ZWMgbGVnYWN5LXRydW5rCiszMjIxMyA5NGE5ODY1YWExYzY0NDE5YzNiYjQ5YzgzYmQwYTE1M2JlYzg1ZTA1IGxlZ2FjeS10cnVuaworMzIyMTQgOGM5MzA3NWI5Y2I1NTEwYmE5M2E5MTgzMjNlMDVjZjQxZDgzODNhYSBsZWdhY3ktdHJ1bmsKKzMyMjE1IDAyYzg3ZjM0OGVkYjIyZjhlNWMxMjNmNDhlMmY5Y2I4MWIzM2U4MWEgbGVnYWN5LXRydW5rCiszMjIxNiBhNTdlZTdiMmE4NzlkZTAyYmI1NTdlZDhkZDVjYTJhMzQzMWJjODVjIGxlZ2FjeS10cnVuaworMzIyMTcgOTViNmRkMDRkYThmZGMxZDhkYWQ4NjU3NjM2YzZhN2JkMmMyMTBiYiBsZWdhY3ktdHJ1bmsKKzMyMjE4IDg4M2E2OTQ3OTVmNTcwM2NiNDFlY2ZiNWNhOTJmNjAwYmJlZGMyNzggbGVnYWN5LXRydW5rCiszMjIxOSBlZjA1Zjk4MWJjNGI4ZGFiMWJiZDg5YmFhNTFjZjQ1MjZlYTg4YzVkIGxlZ2FjeS10cnVuaworMzIyMjAgNmYxM2FkZGUxYjUxYmI0OTI5NDZhYWUwZGEyNmNjMjM0ZjMzNzBhNyBsZWdhY3ktdHJ1bmsKKzMyMjIxIGRlNTA5MzRlMTE0NWJmNmQ5MGI2NTk1OWY2Y2UxODZmMmUwNTI5MGQgbGVnYWN5LXRydW5rCiszMjIyMiAyMmFmZGUyNmIzZDE2NmFjMGYyNmE2YTQ1OWZmZmM2ZjJmM2UyZmMxIGxlZ2FjeS10cnVuaworMzIyMjMgOWZlZGU3MDAzYzY1ZjZmNmUxYjE5NTc4NTg2OTQ3MmVlYjk4NzQwOSBsZWdhY3ktdHJ1bmsKKzMyMjI0IGQyZDIzMmUyNDI3YmY3NGVlZmZkYzU0YjJjN2YxY2VjOTNiYWU5M2EgbGVnYWN5LXRydW5rCiszMjIyNSAzY2YyNmI5Zjk2ZjdlNjQ2NDA4NzIwYjNhZGQ1YzBkZDMzYWFkNmNjIGxlZ2FjeS10cnVuaworMzIyMjYgMTE2NjBmNDM2MWY4YTM2ODk3NTlhY2FhNTYwMWNmZjhjYzA0MzZmOSBsZWdhY3ktdHJ1bmsKKzMyMjI3IDFhZWFkMGM4NDUwNzdlMDgwNzU0NzIyYWYyOTAyODdjZDcyMjNmZDMgbGVnYWN5LXRydW5rCiszMjIyOCA1OGRiNWZiZDljMjgyYTQ5NzVkNzQ1YWVhMGY3MDZlNzhiNjY5MGM3IGxlZ2FjeS10cnVuaworMzIyMjkgMjBlZTY4Y2IwYmM0N2M2NzNkMGU5OTJmMjQ3YjQ1Nzg4MjA3NDZhMCBsZWdhY3ktdHJ1bmsKKzMyMjMwIDdmZTMzYzE1NDFkZmZhZjgxYTkzZjlmMjZkMTBiNzFlYTJmYTAyMmYgbGVnYWN5LXRydW5rCiszMjIzMSBlZWU0OTY5YWRiYWUwZDE2NDJmYTFhMmM0NDZjNTA3M2VkNmI3NmZkIGxlZ2FjeS10cnVuaworMzIyMzIgOTQ0MTY5NGE3MGM3ZWQzOTgzNjYwNzY0MmRmNDMzY2EyZGFlNDc0ZiBsZWdhY3ktdHJ1bmsKKzMyMjMzIDQzNmQ4MTJmMmI5NGI3ZGFiN2FhZDJjOTcwNTMxN2QxZWFiZWZjZTMgbGVnYWN5LXRydW5rCiszMjIzNCBmM2IyNGEyZjZmNGRhODZhOTI3MGU5YWE0YjUxNGEzNTYxMDIyZjUzIGxlZ2FjeS10cnVuaworMzIyMzUgODMyMjA3N2QyMzRjZmFiODBhZTk4NmMzNjYxMDM1MTYzOTdjMzQ4ZSBsZWdhY3ktdHJ1bmsKKzMyMjM2IDY5NTIzNzNlOGZlNWM4NzJlNjM3OTE0ODAyNjIyOThlYzIzOGI1ZmEgbGVnYWN5LXRydW5rCiszMjIzNyA2N2QzNmY0ZGZlYTEyNGFlODVjMGMxMGQyOGI4MzM4MzNhYjcyYjJkIGxlZ2FjeS10cnVuaworMzIyMzggYzcxYjliYTFmMDRjMTQ4MjlmYTk2NTRkOWRkNTNkMGJiMzc5ZDFlYiBsZWdhY3ktdHJ1bmsKKzMyMjM5IDA3OTJjYWE2MzcxYzlkMWQyNWQwNGJiMGM3NTc1ODE2MjQzY2NmZWUgbGVnYWN5LXRydW5rCiszMjI0MCBiMTY3MTU1MGM3ZTFkYzc4MjgxNzJiYjBiNDYyYTY5MWM3Njc4ZWIxIGxlZ2FjeS10cnVuaworMzIyNDEgNGM2NTg1MjUzZTZmMTMyNGQyMTNhZjRiOWZhNDZkMWY4NDllMTRjMCBsZWdhY3ktdHJ1bmsKKzMyMjQyIGI0YjhmZTJhNjMyYzNiY2I0NTJiYzA0MGRhOGQyMzhjYTg3MzhhOWUgbGVnYWN5LXRydW5rCiszMjI0MyA0ZjBiN2FjZmZjN2Q0YzRjN2ViNDJkM2MwYjA4Y2NhMjlmNTdiNTlhIGxlZ2FjeS10cnVuaworMzIyNDQgZDUzNTdhYWRlNGI3MzA2NDcwY2FmODRmYTBmMWViMjkyZjBkZDJhYyBsZWdhY3ktdHJ1bmsKKzMyMjQ1IDlmZGZhNzM2NTc4ZDczNmQ3MDhhNDc0ZTUzYzY1ZGM4ZjA3YWU1OTQgbGVnYWN5LXRydW5rCiszMjI0NiBlYjU1MTg4ZjE2M2FjZWU3YTNjOWFlNzkxMmU5MzMwZTI2NDJkZDM3IGxlZ2FjeS10cnVuaworMzIyNDcgZGRkOTA2ZWZmZDljM2I2NWQwZTEzYzlkODU1ZmM1MzYzYzEzY2UyYiBsZWdhY3ktdHJ1bmsKKzMyMjQ4IDgyNGRjMjhmOTIyZDI5OWMxNzZiYjczNjkyNzI2NDMyM2ZkNzVlZTggbGVnYWN5LXRydW5rCiszMjI0OSA2YzAwMDQ2OTA5NDE4YjcyMWJjYWQ0MTFmOThiOTFlN2E0ZTJjNjEwIGxlZ2FjeS10cnVuaworMzIyNTAgODFlNWJmNjIzZWNmNzU4YmMyNWM2MmNiYjFlYmQ0ZWMxMjBkZWQ5MiBsZWdhY3ktdHJ1bmsKKzMyMjUxIGU4MGYxOGE0OWNjOWFjOGUzMTFmNDFkOGQ2MDcxMzE0ZmIwNDc5OWUgbGVnYWN5LXRydW5rCiszMjI1MiAwN2Q4ZTBlYWIzYWY0OWQ1OGUzMjAyYjllODI2OTRlMTk5ODViZTBjIGxlZ2FjeS10cnVuaworMzIyNTMgMmNmZDkxNmRkMzEyNDlkZjJkNDU1OGFlM2I5YmQzZTkzYmFmY2QxMyBsZWdhY3ktdHJ1bmsKKzMyMjU0IDNjMzkxOTVkYWI5YTQwZWYzMTkwOGY2NGQwZmU4NGRkZTM4YWEzYjAgbGVnYWN5LXRydW5rCiszMjI1NSAzZDkzYzMwMzljODcxY2NlOTE5NzhmZmM3YjQ4ZTY3MzFkYWRkNzdiIGxlZ2FjeS10cnVuaworMzIyNTYgOGFiNzUyZGI0Nzc1ZDU1M2Y3MzFhZmQzZDAzMTIwOWRkYjdmODA1MSBsZWdhY3ktdHJ1bmsKKzMyMjU3IGZhODJmODZlYWEwOTk0MGE2NmNlMzkzNGI4NTY3NTU2NGIzZjU3OTcgbGVnYWN5LXRydW5rCiszMjI1OCAzMzkyZjM4YmQxMTRiOGUxNTlhMjFlMjAyZGYwMGM0ZjRjZWMwZWI0IGxlZ2FjeS10cnVuaworMzIyNTkgOTQ3YzI5MzdjMDllMjIxM2UxNTViMDM1ZmRiOTQzYmFmMDlhMWQyYyBsZWdhY3ktdHJ1bmsKKzMyMjYwIGEyNmI2YjI3NWZiNzJkOTg5N2NlMWM5OTc5YjIxMGU2ZjViZjE4NWUgbGVnYWN5LXRydW5rCiszMjI2MSAzNmU5YmE0MDU0OTI1OWYzZWUxZTc0ZTJmNDU4M2Q4NjhiY2ZkZTUzIGxlZ2FjeS10cnVuaworMzIyNjIgYzYyOWVkOGE5ZGJiM2E4NGNjMzVmZTljM2RhYjI3YTRmZjVjOWVlMiByZWxlYXNlMjItbWFpbnQKKzMyMjYzIDExZjdmMTE4MDcyYjY0ZmYwMWZmMjM2MjQyOTE2OWVkYzQ1YWVlYTEgbGVnYWN5LXRydW5rCiszMjI2NCBhY2ZhMGZmOGM1YTQwMTZiNTllZjA1NjFkMmI5YTRjMTYxZTcyZjQxIGxlZ2FjeS10cnVuaworMzIyNjUgOWJlNDEwMzgwN2Y1Yzc0NWZmOWIyNTA2NGZjNmYyZjc2OGM0ZDFiOSBsZWdhY3ktdHJ1bmsKKzMyMjY2IGJlMGQ0ZWM2YmY1YTliODBlOTFjYTUzZmIzZDI3M2FmYzY2YmMwOGYgbGVnYWN5LXRydW5rCiszMjI2NyA0ODI0YWFiMTI1NDliYjBjMzdjYTgwMmEzM2UxYzcwMDE3ODAxZmU2IGxlZ2FjeS10cnVuaworMzIyNjggYThlNjQwYjQ3N2Y2NmQ1YjYxNTIyYmQ3OWM5YzU4MDcyMGY0YTQwNCBsZWdhY3ktdHJ1bmsKKzMyMjY5IGNmZWNlMTgyMmU5NDIzNzFmN2Y5OWI0YjIzZDJmNjY2NWVkMTIzOGEgbGVnYWN5LXRydW5rCiszMjI3MCBjYTI0ODIwMTJiM2M2MDBmODY1ZDNhZjlmODk0MThlZGViOGYyZmZmIGxlZ2FjeS10cnVuaworMzIyNzEgOGU1NDFiMDc4ZWRiNTA5YjZjZGVmMGMyMDc2MTBkYzQ5ODNjMjliZCBsZWdhY3ktdHJ1bmsKKzMyMjcyIGI5NzQ1Y2Q3OTFiZmRkYTc4MDA2ZjBiZDdiMjNlM2M4NjQ4MzM3OTAgbGVnYWN5LXRydW5rCiszMjI3MyAxOTNiOGFlYzAwY2UxYmUyZjAzYWE5Njk5YTVkNmY2NTE2Y2Y3OTMwIGxlZ2FjeS10cnVuaworMzIyNzQgOWQ0ZTEzODQ5NGZiMzEyY2UyOGE4NTI0ZTkxYjA1ZDI2NGY4ZDM4NyBsZWdhY3ktdHJ1bmsKKzMyMjc1IDBlODQxNmJlMjA4ZTBlYjYwNGNmZmZlN2NiNTcwZjYzNmIzYzAzZDEgbGVnYWN5LXRydW5rCiszMjI3NiAwNGIxNzI4NDMyOTI5ODEyMTQ4Y2IxYzY4ZDg1ZGU4NzZlNTkwODFmIGxlZ2FjeS10cnVuaworMzIyNzcgZDhhOGY3NDRhM2U1MDhiNWUxMzA3Mzc2MjZmYzQ1NjRkOTU2NWFiMiBsZWdhY3ktdHJ1bmsKKzMyMjc4IDdmZGEwOWY3NTFhZDViMWM5YjQ3OGY5M2Q3MGIzNjc2NzcxZDY4M2QgbGVnYWN5LXRydW5rCiszMjI3OSAyOGEyOTc1NTE0Y2Q2MWQ0MzYwMGM4NTNlZmM4ZDc5MmY2ZGEzYmM1IGxlZ2FjeS10cnVuaworMzIyODAgNTYwMDZkOTdiY2VmMGJlNTBjN2JiZjhhMmJiNjVkMzY5MDhkMGVhNCBsZWdhY3ktdHJ1bmsKKzMyMjgxIDFlOTAwNDU1M2UxZDkwNWI0MTA5Y2Q3MzY2OTlmZGJiOGQ1YmQ1MTggbGVnYWN5LXRydW5rCiszMjI4MiAxNmY0N2JkNDMxYzQ4NzkyY2VjZTc1NGIwYzBkNGRhMDkzNGNmMWRhIGxlZ2FjeS10cnVuaworMzIyODMgMmZhZTVmNzYzMWVmNGFhZTdhMGMxYmRhYjZjNDUzNzI1MmJkNmQ5MSBnZXRhcmdzX21hc2tfbW9kcworMzIyODQgNGQyMjU5Y2I3N2EwZTFjZDdkODU0ZGQwZDUwZDU4MmVlNzNmMmI3OCBsZWdhY3ktdHJ1bmsKKzMyMjg1IDdmYTE0ZjIwYWVhNDIyMzJiNjRhNmFlMDY0MjQxNzA1MTJjN2E2NTAgbGVnYWN5LXRydW5rCiszMjI4NiA4ODM2NTI5ZTllNjY3MGE1NWY3NDU3MTdlYzI5YTU2NTVhNDNlNjEyIGxlZ2FjeS10cnVuaworMzIyODcgZWUxNjVmZTFiNDJmNjM0YzZjOTYwYjFmMjZlNTYyMWE5ZjUyNmM1MCBsZWdhY3ktdHJ1bmsKKzMyMjg4IDVmMWVmMTg4MmIyNTE4OGVlMDZlMmE4NGJlY2M4N2FkODg5ZGNiNDIgbGVnYWN5LXRydW5rCiszMjI4OSA3ZTY2NWMxNjA1ODNmYjY2Mzc4ZDNlYzVmOWY4NDQwNjM3NzJlZDlmIGxlZ2FjeS10cnVuaworMzIyOTAgZWU2ZGYyYzY2OGVhY2NkZDljMDNhMmQyNDY3N2FlNzAxNDJlMDY3ZiBsZWdhY3ktdHJ1bmsKKzMyMjkxIDEyZDQ0MDllNTllMzAzYTM5NzhmNWQwYjQzM2E3ZThkNjc1Njc5NDYgcmVsZWFzZTIyLW1haW50CiszMjI5MiBlMzNmZWRiNTgxZjRiMDdhOWY4NDU3ZTgwMTg4OTg5YmMyNjg4ZTFjIGxlZ2FjeS10cnVuaworMzIyOTMgMjM5NDI5ZGMwMjlmYzhkNTU3YWM2ODBjYzgyNDIzYjVjMmNjZDFlYyBsZWdhY3ktdHJ1bmsKKzMyMjk0IGE5MzhiMTNlMDI5MTEyMzgyYWY0MDVmOGRhMmIyMWZjMjA3ZTRiZDUgbGVnYWN5LXRydW5rCiszMjI5NSA1YmZkYmMwZmQxNzIyYTg0MzNjMzkzOGRmZmQ0Mzc1MDRiMjllN2M1IGxlZ2FjeS10cnVuaworMzIyOTYgMDQ2YmM5ZDdmYjBlNDMzYzQ1ZjE3NzcyNjc0NzE2ZmZlMjJhMTQxZiBsZWdhY3ktdHJ1bmsKKzMyMjk3IDBkOGQ0YzhkYzY4YmI4ODliZTRkM2E1Y2VmNmYxNzZlZjI1MzliYTUgbGVnYWN5LXRydW5rCiszMjI5OCBjNTU1Y2QwMmIwZjk2M2NlMDQxZTZkY2MyZmVlNjQ1NDU2NWI3ZjEzIGxlZ2FjeS10cnVuaworMzIyOTkgMTkyNTQxMzQzMWE2ZWMyOGZjODZhOWY2Nzk5Y2Q2ODJhYzMyZTFmYSBnZXRhcmdzX21hc2tfbW9kcworMzIzMDAgZmRhMmY3ZDc4M2MyNGFmM2FhYzM1MzkxNTA4NTJjYjdjZGIxYzcwMiBnZXRhcmdzX21hc2tfbW9kcworMzIzMDEgZDQxZDhkZTk3NjhmMzdmMTcxZTczYTA3YWU1N2I0NjViMTdkYjllZCBsZWdhY3ktdHJ1bmsKKzMyMzAyIDJhMjNmYzgzNzIwZmExMjY0YzNjNWRhNTZhMzI2MzMwMzI1N2U4NTMgbGVnYWN5LXRydW5rCiszMjMwMyBjMWJhNTA3OTBjODM4NDg1YmJkYmQzZTg1ZmIxZjM5NWRjNWEwZTEzIGxlZ2FjeS10cnVuaworMzIzMDQgOWViNjk2NGI0YjZjOTg4ZDg2ZWNlNGFkMTM3N2U2NWMyODMwNGJiYiByZWxlYXNlMjItbWFpbnQKKzMyMzA1IDE1NTZhMzhkNTI3ODE1NDFkOTlhNDA3MGI0MmZiOTQzYzNjODkxZWYgbGVnYWN5LXRydW5rCiszMjMwNiA1ZmYxZjJmOWZjMzQ5M2YzYmFjYTIzNTdkNTQ2N2E5ZmI1MmU5ZGVkIGxlZ2FjeS10cnVuaworMzIzMDcgMTgxNTE2NmU4MDk3ODc1ZTI2YzI2NDNjYTdlOTNhNDYyZDQwZWIxMyBsZWdhY3ktdHJ1bmsKKzMyMzA4IDMxY2I4ZTAyNjBkYjUxMDJiMGFiNTA2YzRhZWUzOWM5ZDEyNDI4YWUgbGVnYWN5LXRydW5rCiszMjMwOSBhYjBjMDY3ZmUyODZmYmQzMDNhY2VjMTY4ODM3NDI3NGI1ODk2NjI3IGxlZ2FjeS10cnVuaworMzIzMTAgMjc2MzUyYmZjYjQyYjQxYWFlOTY2MTRmYWIzZGUzMjE2MWNlM2Y4MiBsZWdhY3ktdHJ1bmsKKzMyMzExIGNhNjRjMWJlMjMwYmFjZTRhM2JlMmIxMDNjOTMwNDA4YjIxMjE4N2MgbGVnYWN5LXRydW5rCiszMjMxMiBjZjQ1YWQzY2E0Yjc1ZGRjZGJjNTEyZDcyYjkzYjNmYzBkNTQxNGIwIGxlZ2FjeS10cnVuaworMzIzMTMgNDYyYTRjMzExOGJiYzA2ODI5Y2FmMWQwYzI4YWZjZjRhMzY3MTRkZCBsZWdhY3ktdHJ1bmsKKzMyMzE0IDhiZDM0ZGQ1OGE5MmFhMzM0NzNmOWY5N2ViMjc0Y2I3Y2IxNjZiMzcgbGVnYWN5LXRydW5rCiszMjMxNSBjNWJkOGE4NDUyMjM5ZjM2YmUyMzE4YTYzNDRjNTZkNzg1OTk3N2EyIGxlZ2FjeS10cnVuaworMzIzMTYgNzBkNmY4YjBmYzY5NDVlNzFmNDQzOGNlMDdiNGE5MWNhMTMwYzMxOCBsZWdhY3ktdHJ1bmsKKzMyMzE3IDQwZDI4N2MzZDkwNjIwYTc3NjUzMDE1ODg5ZGVkNWJiYjg0NjRkNmEgbGVnYWN5LXRydW5rCiszMjMxOCBkMGFlNjIwYWZiZDRkNDFiOGE2NWYxMjUwNTJhYzkwZTI0ZTdkNmY1IHJlbGVhc2UyMi1tYWludAorMzIzMTkgZWQ1ZWNkNjNjMWNmOWI3ZjRmMjk5YzgxMmI4NjhkZTg1YTBlNzMwZCBsZWdhY3ktdHJ1bmsKKzMyMzIwIDk2NDJmYjRjZGEyZmU0YWY1NmUwYjhjOThjOGRmNWM1NTMyMjYyMjMgcmVsZWFzZTIyLW1haW50CiszMjMyMSBjOTkyNWZhMjllYTM3ZTU1ODg0ODZkOTc1MjY1OWRiZGNjZmEzZDQ2IGxlZ2FjeS10cnVuaworMzIzMjIgMDZkMTM3YTQyN2U5NjExZDNmYjI2MGEyMTNkZjQxOGZjYWU5Yzc3ZSBsZWdhY3ktdHJ1bmsKKzMyMzIzIDc5MjJkNWY0Mzg1NDNhNTc2NWRlNjRmODAyMjljZTMxNzFkMjAzNDcgbGVnYWN5LXRydW5rCiszMjMyNCBhNDE1NGRkNTkzOWFhNmJiM2ExMTI4OTM5ZTkwNzRkNmIxMzgzZDE1IGxlZ2FjeS10cnVuaworMzIzMjUgZDZhZmUxOTZlZjgyMDgzZmYyMjI2MjBjOWFhNTk1ZWZjYzUzOWZiMyBsZWdhY3ktdHJ1bmsKKzMyMzI2IDY1OGIxMGM1YmEyYTNkNmJlMTY3ZjJmNGQ3YTExZTNhN2I2MTY2MGQgbGVnYWN5LXRydW5rCiszMjMyNyAwMTgxNzBhNGEyZDdhYzI1MGFlZGYwNzdmYjk2OGU2YWM5NjhjODdlIGxlZ2FjeS10cnVuaworMzIzMjggYWVmMDFhMDc2ZWY5NjdhZTc5M2M0ZDYzYzcyNDQwYjUxMzJkYzEzZCBsZWdhY3ktdHJ1bmsKKzMyMzI5IDk3ODkwMTM0YzljNDQzOTNiYjM2YTM4MjdjMDdiNTU2YWIyMDUzOTYgbGVnYWN5LXRydW5rCiszMjMzMCA0MWY0NThiOGRhMjBhMzM0ZWVjNjc4MThlZGQ5ODY4Mjc5YTVlNDQ2IGxlZ2FjeS10cnVuaworMzIzMzEgNDJkZTUwZTE5MmRmNWI5ZTQ4MDYzM2EyM2M4Njk4ZmZmY2MwMDlmNSBsZWdhY3ktdHJ1bmsKKzMyMzMyIGQ2ZTEzZDEyMTBjNmI1ODUwZmExNTE4MWQ0MGRiOWI4MDg5NWYwNjkgbGVnYWN5LXRydW5rCiszMjMzMyAyY2UzOWE3YmU3OWQ5YTViMTdlOGRjZDdkMDg3MTJiZjc0YWE4MmI1IGxlZ2FjeS10cnVuaworMzIzMzQgZmE3ODc0ZWM2YTcxZWU4Yzk5YzMyMmMyYjg0ZGExMTBjMmE1MDZjMCBsZWdhY3ktdHJ1bmsKKzMyMzM1IGJlMTQ5NzBhOTk1NTIyZmVkYWE4OWZiYzQ3NWZiMTQ3ODI1ZDBiNWQgbGVnYWN5LXRydW5rCiszMjMzNiA1MjkzMGJlOWRmZWE1YTU1YjRjZDgyMWIwNGFlOGE2M2Y3ODZkZGRkIGxlZ2FjeS10cnVuaworMzIzMzcgZGU3NjkwNTI3NTg0M2U3OWE2NGJhNTE1NzJlOTViYTcwYThjYTM3NyBsZWdhY3ktdHJ1bmsKKzMyMzM4IGVkY2ZkYjJhODUyZTlhZjNlZDlmN2FlOTU1MjI0NzU4YTRlOTAwYjQgbGVnYWN5LXRydW5rCiszMjMzOSAyOWYzYjIzNzUwNDllZjA2ODI3ZTUzYjFjMzBkNTc3ZmU2MTMxNTM5IGxlZ2FjeS10cnVuaworMzIzNDAgMTQ5YmQwZWY5NGZiODRkZTliY2EyYTAwMDVkYjZjNzRhN2UyZDZhYiBsZWdhY3ktdHJ1bmsKKzMyMzQxIDgyMGQ5NTcwZWRlYmMzYzJiZDhmZmQwNWQ5NDE0ZDgwZTRhOTFmZTEgbGVnYWN5LXRydW5rCiszMjM0MiBkMzEyN2I2NzFkMzZjMzhkOGQ3YmNkNGJkNThjZWQ1NGY0ZWVjNzcxIGxlZ2FjeS10cnVuaworMzIzNDMgZDA4ZDE1YTcwMjk1MGI1N2FkMmI1ZGNjN2ZkMmFjOTIyNWY2MzBhMSBsZWdhY3ktdHJ1bmsKKzMyMzQ0IGVjMmEwZjE1YzE0Y2QxOWQ0NDk0M2NjZmZhOWI4MmE3OWZkYzY3MWEgbGVnYWN5LXRydW5rCiszMjM0NSAxZDhlODRkOTZkZGVjNmRmMTcwNmQ4OGEzYjU4N2M4YmQ4NzBlYThkIGxlZ2FjeS10cnVuaworMzIzNDYgYWI0ZmJmOGViYWIzYjBiNTgwNmE2YjQxZGRjYzI4OTJhOTRiZmNkZiBsZWdhY3ktdHJ1bmsKKzMyMzQ3IDEzZDBhM2M0ZTQ2NTc1YmM3MmRlZjM4YzQ0OTc0NWM4NTQxNjdmN2QgbGVnYWN5LXRydW5rCiszMjM0OCAxNmVmNWI5YmM3ODljYjlhMzg1NDBkNTEyMWVjMjgyNGQ0MGQ0NzM2IGxlZ2FjeS10cnVuaworMzIzNDkgNWU2ZmZhNjU1NDYyMzRjYjI4YTE1YTY0ZGNkODMxMGIzMzM2ZTQ0MyBsZWdhY3ktdHJ1bmsKKzMyMzUwIDAzYWY0NmQxYWMyODQwNTY3NTUxZGNkOGExMjJkYzMwYjMzNDU5MDEgbGVnYWN5LXRydW5rCiszMjM1MSA0NjQ5ZjMxOGZjYjAyZGFmYmVlMmY2MTk5NDczZjA4MWE2OTU0ZmNhIGxlZ2FjeS10cnVuaworMzIzNTIgODE2MGJjNzhjOTNhYjFhNjIyZWI4NzVmOWEyMDQ3MzRkMjEwYTVkZiBsZWdhY3ktdHJ1bmsKKzMyMzUzIDg5MjA1ZjViYjQ0MGJmY2FiNWRmMGY5YmMyYTQxODA1YzkwMDZjMDAgbGVnYWN5LXRydW5rCiszMjM1NCA5ZWEwY2NkZGJlYWQzNjk0ZmYzMjA4ZDhiNzIxNTI1ZmRkYTFjMmVkIGxlZ2FjeS10cnVuaworMzIzNTUgZGU2ZDFlN2U5ODI1NzI0MmRjZTQ0MjEyZGE1N2VjYWQ2NDFiNDRmZSBsZWdhY3ktdHJ1bmsKKzMyMzU2IGFjOGRiYmU2MjQzMmI5NGYzZDYwMDZlOThiOThjMWEyZWNhMDk1MGIgbGVnYWN5LXRydW5rCiszMjM1NyAwNTFhNGYxMmNjNDYyNTcxNzg1M2Q4MzVjMzEwZmM1MTQ5YjM2YmEzIGxlZ2FjeS10cnVuaworMzIzNTggZjk2OGU5M2UzY2UwMTg3MTc2OThhZDE0YzQyNmNkMTM1ZDA2ODNhYyBsZWdhY3ktdHJ1bmsKKzMyMzU5IDMxY2JkNDZmMGM3ZDY4ZGIwZWMzOTcwNGM4MzNkZmI4Y2RiZDFmNTQgbGVnYWN5LXRydW5rCiszMjM2MCBhYzU4NjA4Y2QyM2NlODZlNWJiYzUzMjVkNjM1MTk5NjMyZTNhYzE5IGxlZ2FjeS10cnVuaworMzIzNjEgODZmNDkzM2ZhNDI5NWUxZWRkM2IwMGY2MDViMzFjYmFjMzM0NTE5NiBsZWdhY3ktdHJ1bmsKKzMyMzYyIGJhOTA5MjM2ZWIxM2IxMDhlMDUyMmY2NmU4MDhhYzJlNDRiZjg4ZmIgbGVnYWN5LXRydW5rCiszMjM2MyA0M2QzMmY0Zjg5MTM4NDc0ODlmMzYwMGVmY2ZjZGUyNWUxYWFiZDRiIGxlZ2FjeS10cnVuaworMzIzNjQgNWM4ODZlMDNiNDNlNDFjYjcxZjY0ZjJkNmNiMDYwYmNlZjQxZmZjYSBsZWdhY3ktdHJ1bmsKKzMyMzY1IDdiYmEzZTJiZTU0ZTdlYWE1MDAyZjY5MDNiZjA3MDQ2MDI2YmJjN2EgbGVnYWN5LXRydW5rCiszMjM2NiBhYTYzNGFkYjQxYTkwMGFkOGM5NzYwMWU0MjBjZjQ5NWFkYjQ5MGVmIGxlZ2FjeS10cnVuaworMzIzNjcgZDc5MjU0NGFiMTExZjQ0MmM5NmVkNGIwYTE3N2JjYzQ5NTUyYjM3MCBsZWdhY3ktdHJ1bmsKKzMyMzY4IDUyZjNkOTBjMTdlODNkZTUzNDU0ZDg4MTUyNjY5YmFhNzdiYzZiNjQgbGVnYWN5LXRydW5rCiszMjM2OSBjZWM5ZDEzYzQzZmY3ZGI4MmFiODBkNjMwYWNiMzZjNTg0ZDI5ZmRkIGxlZ2FjeS10cnVuaworMzIzNzAgZDMyOTdlMjk4MjExYjhjN2JhNTE2ZjY5MzMzYzAwZDI5YzU5ZDNiNiBsZWdhY3ktdHJ1bmsKKzMyMzcxIDY2Y2NlYjc1NjJiNTZhOTM0ZmY2MGVhMWVmMzEyZjNkNGM0MWI1NzcgbGVnYWN5LXRydW5rCiszMjM3MiBiZDY3OGU2NWY3ODQzMjBmNDNiYzNkYzJiZTg4OThjNmY0YWQyOTdlIGxlZ2FjeS10cnVuaworMzIzNzMgNmUyZTU5ODUzNzVjNjI0N2VjNmJlMDVkYTQwMDQ0ZjkzN2QzY2NjOSBsZWdhY3ktdHJ1bmsKKzMyMzc0IDAxNGNmYWE3YTc4NGZiYTBhMjYyZmQzNDNiNDIxM2E5YWUwZTBjOGMgbGVnYWN5LXRydW5rCiszMjM3NSAxZjk2MDQ5YTc5ZDRjZjlmMjkyOTkwMzAzN2Q4YjE3MWU4NDQ5ZTE2IGxlZ2FjeS10cnVuaworMzIzNzYgYzBhMjZjNWE3OTM2NDcwZTE5YzJiNzU0MzczMjM1ODQ5MzhlZDUwMCBsZWdhY3ktdHJ1bmsKKzMyMzc3IDU2M2JhYTNlNDI4ZjY5NDY1YmM0ZDE4OTkxNDMzMDhhM2QyM2I3ZTkgcmVsZWFzZTIyLW1haW50CiszMjM3OCBiNDlmZjA0YzE4ZGU3ZWQwZTRkN2VmNTlkZDNiMjk3ZGI0NDFlN2YzIGxlZ2FjeS10cnVuaworMzIzNzkgODlkYzMyNjc0NTU0ZWVkMDA1NjM2MTMzNDRhMjdlZGVjMmQ2NGFiYiBsZWdhY3ktdHJ1bmsKKzMyMzgwIDc1NjUxMmZiYjUyNzhkMjUxZDQ1YjI5OTcyNDJmOGRkMmMwYjdiMzMgbGVnYWN5LXRydW5rCiszMjM4MSBhMWQ3Y2NkOTVhNWU4M2Q2MTQ4OTgwY2FhOGNiOGEzNGQwM2Q4NmI4IHJlbGVhc2UyMi1tYWludAorMzIzODIgMGFkNzQ1M2E5ZjgyNzc1MDMwNmVmZTczYmQyMGE2ODE4ZWFmNDIzOSBsZWdhY3ktdHJ1bmsKKzMyMzgzIDA4NWY2ODAwOWNhZDgxOGNlYjRkMzMxMzcwZTI1OTc4ZDEyZWQxYWIgbGVnYWN5LXRydW5rCiszMjM4NCA5YzdhZDFlNDU1OTYwY2NlNzQ2MjM3YWJjM2FmZmFiZmU3NzAwOTgxIHJlbGVhc2UyMi1tYWludAorMzIzODUgZGQwMjJkNDIzYjhhMDg4NmRlZjYxMzQ2NzE4YTcwMzllZmRkMjZjZCBsZWdhY3ktdHJ1bmsKKzMyMzg2IDA3MTcyNDIyOTViMTFjYjM3ZmFhMDhhYjFkMmJjYTc2N2NmNjA2YjkgbGVnYWN5LXRydW5rCiszMjM4NyA5OWU4MmRiYWYwY2NkODI5ODc3NjRhZDdhZGNiYzkwNTQxMzExNmM4IGxlZ2FjeS10cnVuaworMzIzODggN2YyMzY2N2QzY2ZjNGFkZGI0MjE3MzcyMjBjODVkNzE4MGJkZWM4MiByZWxlYXNlMjItbWFpbnQKKzMyMzg5IDNkZjBjZjE2ZGVmYzIyOGY3YzM4MmRlY2JiMjcyM2JjODBkMmEwZjEgbGVnYWN5LXRydW5rCiszMjM5MCAyMmQxNzc2ODJhZTE0ZmYxN2ZhMTZmNmY2ZjEyNjU3ZmJmMmUyMzQwIGxlZ2FjeS10cnVuaworMzIzOTEgMTcxZGJkZGYwYTAyMTY3MGI1MzhjZjUzNDU1OTI0NjUyZDI2NTNiYSBsZWdhY3ktdHJ1bmsKKzMyMzkyIDY1MDNhZDhkY2E4ODE3ZGMxMDRhY2U4YmM1ODkxNzA3YjE4NmE5MGMgbGVnYWN5LXRydW5rCiszMjM5MyA2MzQ4Yjg1YmNiOWRlODBiNTg4NmUxYjQ3ZTA2M2VhNDVmNjRkMjEyIGxlZ2FjeS10cnVuaworMzIzOTQgOWMwYWQ2OTRlM2UyMGEzZjI2ZmVmMGEzYzhiNDIyMTM4MDcwODk1ZCBsZWdhY3ktdHJ1bmsKKzMyMzk1IDJjNzQ0N2VmYzJhOGQwZTE2ZTBmZDQ2ZTM4YmRkNTRlZGQ0ZmY5ZDkgbGVnYWN5LXRydW5rCiszMjM5NiA3NTM4MmQxMDI3NDljY2U5NDBkZDMwYjM0MTcwMzM1ZTQzNTg5YzFhIGxlZ2FjeS10cnVuaworMzIzOTcgNjBlYWNiZWE3MTk5MmMxNjcxZTYxMzkxYTg2Y2U4ZDA0ODQ4ZWFmMiBsZWdhY3ktdHJ1bmsKKzMyMzk4IDliNzk2MDUxNzFlYmQ0ZjU1Njg4MjkxNzRhOTNhOGFmNjliZjJmM2YgcmVsZWFzZTIyLW1haW50CiszMjM5OSA5NDY2YjZlMjQ4MzMyZTVhMjZiYTk5OGFkMGRhMDVhYzhmODZiNTRjIGxlZ2FjeS10cnVuaworMzI0MDAgMDBiODk0NzI2MjBkN2U0YmE4ODRlYTk1YzIzZDQxMmM2YjMwN2U0ZCBsZWdhY3ktdHJ1bmsKKzMyNDAxIDI5YjZhNDhmNGM0NTBjZmZhNzc0ODA3YmJhMGVmZjBmZDA1MTI1OGUgbGVnYWN5LXRydW5rCiszMjQwMiAwZWE1OTkxZjZlZGJjNGMyNzNjZTU4ZDY1MTM3YWY0MTc3ZGU2MjgwIGxlZ2FjeS10cnVuaworMzI0MDMgZTA2ZjJiZjU2YjQwNjgzNzRjOTJmYjMyNzg2ZDI2NWMzZjU2OGY4ZiBsZWdhY3ktdHJ1bmsKKzMyNDA0IGM5YmVlMTFlYWE4YjllNWM5YzJiY2IzZDBkMjE1YWQzOWRhZmE4ODAgbGVnYWN5LXRydW5rCiszMjQwNSBiYzQyMzFlYjI3NTg0MTZmNjUzMTQwZWQ5ZGQ2ZjBhZjA2NTk2OGQ2IGxlZ2FjeS10cnVuaworMzI0MDYgMjExYzAyZmI2NTcwYWZlMWMyZWQwNDA5YTk5YWIxMTgyOGQxNzk5NSBsZWdhY3ktdHJ1bmsKKzMyNDA3IDNlYmI0YmNlYmRkN2VkNjQ3MDYxOTYyZDI5MDZmNThjMDkzMDg3ODMgbGVnYWN5LXRydW5rCiszMjQwOCAwZDUzMDI5Yjc5NDk3YTYxZDg3MWRiYWEwNjIxMTMyMjMwMWY4OGI2IHJlbGVhc2UyMi1tYWludAorMzI0MDkgNzA4YWVhODJhZGU4NzBhYjJiM2YyMmZlYTdmMDM0ZjBhYWM0YjU2MCBsZWdhY3ktdHJ1bmsKKzMyNDEwIDUxZWQ5ZjVlMzZhMThjNzcyNDYzZDUwZWEzNmJjMzdkMGNiNWJmMzMgbGVnYWN5LXRydW5rCiszMjQxMSA3ODdkNjY1ZTFjZGM3MzAzY2JhOWUzZTI5MmQ3ODY1ZTY0OWQxMTgyIGxlZ2FjeS10cnVuaworMzI0MTIgMzk1ZjJiOTljNzUyZjkwNmE3YzM1MmYyODRiMTYzZTA5ZTdlYTUxZiBsZWdhY3ktdHJ1bmsKKzMyNDEzIDJjNWJmMDk3ZGFmODU1YTBkYWVlOWUxY2E3ZGEwOGM2MTIxMjgzYWUgbGVnYWN5LXRydW5rCiszMjQxNCA3NDk4MTlmOGIyYWRjYTczZjVkZWNlYmVkZjJhMWM1MmRlZGIxMzBmIGxlZ2FjeS10cnVuaworMzI0MTUgNjNlYjBjOTg3ZGU3ZGI0MDI5MTIxYmM5N2IwYjFhZTM1ZmJkNTFmOSBsZWdhY3ktdHJ1bmsKKzMyNDE2IDhhNmU0YzkyYmQ3ZjJiZDEyN2UyMzE0MTkyODg0NWZlNzYxZWRiMmIgbGVnYWN5LXRydW5rCiszMjQxNyA2ODE2NzE5ZjQzOWM1OWZkNzI2ZTU5MjExZTk0MDVlMTEyZGY5NzMwIGxlZ2FjeS10cnVuaworMzI0MTggNTU4Njg5YjZkN2YwZWI1MmVmMWY2MWFiYjUzNmFkMDg4NjAwZjU4NSBsZWdhY3ktdHJ1bmsKKzMyNDE5IDAxNWQ4OTFmMzg3M2RjMDM0ODQ3MmQ5YjAxMDBjZWJhMDkzNWRjOTggbGVnYWN5LXRydW5rCiszMjQyMCAyNGQyYTA1ZjQxY2NhMTgwMmE3YWY4YWNhYmY4MDI5MTVjYjZlNjU2IGxlZ2FjeS10cnVuaworMzI0MjEgNjRkN2I4NzY3MjJmZDg3OTQ2MTZmMTA3YWZjOWRhNTc1MDQwZDIyYSBsZWdhY3ktdHJ1bmsKKzMyNDIyIDgwOTRjMGRiOTVmOGI2YTk0ODY4MzYwYTJjZjI1OTlmZWRmNGIyMTEgbGVnYWN5LXRydW5rCiszMjQyMyA4MDNiY2EyMjRjOGZhN2QyMTcyMDgwMjI3Mzg0MGMxNTFkY2JkN2Y2IGxlZ2FjeS10cnVuaworMzI0MjUgYTc2YTM2ODMwMTJiYzM3YzQwMDAyZDE1MGIyODBjMTJhZTIwODAzNyBhc3QtYnJhbmNoCiszMjQyNiAwNWU1NzM4OGNiOGZkY2VlOGM4YTk5NzQzMzg0ZGViMzMyMWM2NTZkIGxlZ2FjeS10cnVuaworMzI0MjcgNzI1YjI4MWNjZWFkMzhiZjcxMjE2M2I2MmQxZDRmMjU3OTllNjJiMiBsZWdhY3ktdHJ1bmsKKzMyNDI4IGY4NzRhNGQyOWNhNDE3OGViNTEyOTMwYWU4ZmU4YWMxMDQ5ZDUyYWYgbGVnYWN5LXRydW5rCiszMjQyOSAyMTYzM2U5ZGY4Y2M0NmM4NjQ1MTIxODQyMmQ4NDg4MWYzNGI5MmI4IGxlZ2FjeS10cnVuaworMzI0MzAgMTEyNTQwMTYwYjY1MmU2YWMyMmI3ZTlkYzEwYTEyYjczNjg4N2I4YSBsZWdhY3ktdHJ1bmsKKzMyNDMxIDQ2ZDI2YWZhOGI5NTYzZmQxMjVhZGIzNzIyMDc5ZDgyOGRlMmYxNTkgbGVnYWN5LXRydW5rCiszMjQzMiA3MmRiNzU3NWY5NzAwMGM5N2IyNjlhMWFjNmRmNzA5ZmVkZWUwYjljIGxlZ2FjeS10cnVuaworMzI0MzMgYTliNTZjNzhlMGQ2NGVjZGU0MzRjOWFjMzM4Mzg1ODJjY2FjOWI2MSBsZWdhY3ktdHJ1bmsKKzMyNDM0IDI1YzhjZWU0NDU3ZTZhZDBhZmYyMTI4N2UwMDA3MTMyZWEwZTEyZTUgbGVnYWN5LXRydW5rCiszMjQzNSBjMzRjZjljZTk1MmY5ZmEyODJiYTY2MThhNmZmZmI2MjI4NmY2YWVmIGxlZ2FjeS10cnVuaworMzI0MzYgMGM5NTBlMzMyM2VlNGVlNjM3MDYyYjllYWFmYTUwZWMzY2ZhMDZjMSBsZWdhY3ktdHJ1bmsKKzMyNDM3IGNhNGJkYWY1Yzc1NzU4NTllYWUzZWI0OTljNWI5ZWU2ODM0ZDYwODggbGVnYWN5LXRydW5rCiszMjQzOCAxMDJmOWUzNThmNTIxMzhlY2Y0YzQxNDA2NzQ3NThjZGYxNzAzN2U2IGxlZ2FjeS10cnVuaworMzI0MzkgYzBhMWVmZTEwMjg0NzNjY2JmMWZkMjVkOGM4MjMzZjM5NTEwYjNlYiBsZWdhY3ktdHJ1bmsKKzMyNDQwIDJiYTIwZmM5ZjQ5NTNjMDhiYTk1YWI0Nzc2YjhmZmQ4MDk3MGVkNjggbGVnYWN5LXRydW5rCiszMjQ0MSAyOGEwOTc2N2EyNGZmYTc5MWM2NzEzZTQyMzVlZTI1YmZmYWVhOTNhIGxlZ2FjeS10cnVuaworMzI0NDIgYTVlMWIxNjYyZWMwMTE5MWVkMzk3YjBmOWJjOWU1MjRjNmQ3MDczMyBsZWdhY3ktdHJ1bmsKKzMyNDQzIDJhZjkzZmRmZjYwODg4ZTU0NzZkNThlZjQ5NjVhNTY4ZWE3MmIxY2QgbGVnYWN5LXRydW5rCiszMjQ0NCAxMTNjMzE4ODg3NTU2MTQ2NmQxMWVjMzVlMTE0NzM5YWE3YzdmMGMzIGxlZ2FjeS10cnVuaworMzI0NDUgZWQ3NGFjMjFjMTMzMjIwZmMyYzY0ZTQ2NzUwYTNjMzIwYTJlOTVkYyByZWxlYXNlMjItbWFpbnQKKzMyNDQ2IGIzMTYyOTMzNTYzNTVlZmY3NjU0ZmQ0ZGExZmNhM2JmMmYxN2YwZTEgcmVsZWFzZTIyLW1haW50CiszMjQ0NyA3M2RjZTg5M2ViNGIzODAyOGQzYmViNmIzMjg0MDQ5NDAzNjY5OGYyIHJlbGVhc2UyMi1tYWludAorMzI0NDggNmJkMjhhYmQzMWE3ZjBkM2U2YTkyZDBmNzZhNmE5ZThmODNjNTkzNiByZWxlYXNlMjItbWFpbnQKKzMyNDQ5IDkxMTMwYTRjYzFjZTBlZjQ2ZDI5Y2Y4NDJjM2I2ZjQwOWQzMDY3NDYgcmVsZWFzZTIyLW1haW50CiszMjQ1MCA1N2U2MTU4ODU3MWIyMGIxMmIwMDUyYzZlY2U5Njg0MzBmOWM5YjMxIGxlZ2FjeS10cnVuaworMzI0NTEgMDQ1YmQxNGY3NDY4MjViMjA0OGVkNmVmNDVhNDc3ZmZlMzVhYWQyYSBsZWdhY3ktdHJ1bmsKKzMyNDUyIDYwZTcyMjM4NGQ2MmM2ZjgwNjdkMmRmMjFhNmQwM2FlODE1YzA5M2YgbGVnYWN5LXRydW5rCiszMjQ1MyA2NGNiNjU3YjAzMzg0NDRkMmUzOGVmN2RiOTcxNDI1OWFkZWE4Y2NmIGxlZ2FjeS10cnVuaworMzI0NTQgZGVmMDllYzBiYzMxNzJjNTRmNzViMTI5YTIxNTEzODFmOGQ2OWJlYyBsZWdhY3ktdHJ1bmsKKzMyNDU1IDcyOTZjZDNmNDVjN2Y0NzNkZTdiMmE1ZDk2Y2UyOGE0M2FjNDZmZDkgbGVnYWN5LXRydW5rCiszMjQ1NiAwY2Q4ZDU3MGM1OTExMzliYzRhYzYxZTEzYzBjYjc2ZDI2MDFlOGFjIGxlZ2FjeS10cnVuaworMzI0NTcgMmZhZDU0ODM5MWRlZDZlZDRiZDAxYTYwODc4NzdjOWJkOGI5NTY2YyBsZWdhY3ktdHJ1bmsKKzMyNDU4IDljNzg1YWIxZWZmMDNhMjcxMTg4ZGYzYzljMGM1YjQ3OTI4MDI2MGIgbGVnYWN5LXRydW5rCiszMjQ1OSBkYzRlNDdlNmYwMDIzNWRiYmI2NDAyNDJhNzliMjQ1YjAxZjUyZjE1IGxlZ2FjeS10cnVuaworMzI0NjAgYjM3YWYyMWI3N2JlMzE1YzgyMGQ3ZTFkZTljYTZjYWI5YzA2NGUzMiBsZWdhY3ktdHJ1bmsKKzMyNDYxIGUwNmFhZDkwYzBhZTI0ZDk4ZmRiYjE4YjJmOTI5MjE5YTcxODExZTEgbGVnYWN5LXRydW5rCiszMjQ2MiAxYzVhZDkzNjAzOGVmMjZjMjlkNjBmNTY1M2M5NDQxYmU3YzUxZWY1IGxlZ2FjeS10cnVuaworMzI0NjMgNzAxMmNhNjRiYzc0OTVjNzNiZDA3YTM5YzZkNTIxZTdkOTZhZWIyNSBsZWdhY3ktdHJ1bmsKKzMyNDY0IGU0YTVmMzhmZjAwODliZjBjMmI2ZWZiMDhmZjg3ZTdjNDE2NjFlODYgbGVnYWN5LXRydW5rCiszMjQ2NSBmYTE1OWZlZjI3MzAwNGRmNWFmNmQxMTQ4MWY0MjdiOWFiNGU0ZTg0IGxlZ2FjeS10cnVuaworMzI0NjYgNDVjNGEyZjE1N2IzOGViYmNmNjIyNWE0OTNkYWU2NzRhMTU5ZWJlZiBsZWdhY3ktdHJ1bmsKKzMyNDY3IDk4ZTMxY2ZkMjZkYzI2MWJiNGZmMjAwZTQ1ZjkwYmY2NThlZGRkNzIgbGVnYWN5LXRydW5rCiszMjQ2OCBkODIyMzg4MDgyYmFkNDcxNDk2MmM2NTAwOWFiNjRjOWNlZDVjNzliIGxlZ2FjeS10cnVuaworMzI0NjkgYzJhMDVlMDc4NWYxNDhmYWU5Nzc3OTgyZmM1YTk1Njg5NDdlMGVmNyBsZWdhY3ktdHJ1bmsKKzMyNDcwIDI3YWYzN2RkNWEwYmY1MjE4NDVhODMyYjRjN2IwNTYyMjM1ZTZhOGQgbGVnYWN5LXRydW5rCiszMjQ3MSAzOWQ4MmQwMzg4Nzg5NDFhYzEyODBmMjBmNmY4NWUyNzU3ODU2NzE1IHJlbGVhc2UyMi1tYWludAorMzI0NzIgNDkwYWYwMGZiMTgzMGMzNTRiMzY4ODk3M2Y2OGEzMDRjNGJmYmU0YyBsZWdhY3ktdHJ1bmsKKzMyNDczIGVmMDc5ZGVmZDJjYzExZjVhMjg4OWJmODM3OTQyOGY0ODEzMGM5MGUgbGVnYWN5LXRydW5rCiszMjQ3NCBlZTgxNWE2YjExZTIwMmJlYjI2NTUyODhkZjU4NjNhY2U2OTA2YjdhIGxlZ2FjeS10cnVuaworMzI0NzUgODY1MTFiOTZkOTgwYzdjY2NlNjgwNjFjZTk1ZjVhMTIxMmVhZWQyZiBsZWdhY3ktdHJ1bmsKKzMyNDc2IGNkODIyNTNmMjBiNzBjMzY3OWE3ZmMyYjYyYzBhZWRhNjk1ZThmMTUgbGVnYWN5LXRydW5rCiszMjQ3NyBmZWIzNTk1NGIwMzg2OGQxMmRjMWUxYjVkNTZhZDljODk5M2IzYmJlIGxlZ2FjeS10cnVuaworMzI0NzggNGM1M2I2OTRhZmE2OTgyNDgyZmY2MjY1YzI3YmY4ZDA1NzAzN2VlOCBsZWdhY3ktdHJ1bmsKKzMyNDc5IGYzNTFmYWI3Mzg5N2RkZGI4YjNiODJjNTk1Njg2OGFkNjNjYmRmOWEgbGVnYWN5LXRydW5rCiszMjQ4MCAxYmVmM2VjYTIwY2UwOTkxZjMwMzRmMTdmMmRlNjA1MjZiMmQ1MWMwIGxlZ2FjeS10cnVuaworMzI0ODEgYWUxN2ZjODE5MzA4YjNhYjY2ZjcxYjRmNmU5MzIyMDE2MzY2N2RjOCBsZWdhY3ktdHJ1bmsKKzMyNDgzIDczNmJiZGVjYWExZGY5ZDRiZjhiNjFkZTQ1ZDAzYzkwYTkyNTk4ODcgbGVnYWN5LXRydW5rCiszMjQ4NCA1NDVmYWVjNzkwYzQ3MzI2MGM2NTJiYWEzYmNiYTExMWI5Y2VmMTM0IHIyM2IxLWJyYW5jaAorMzI0ODYgNWNjYjU1MzZmZWZlYmJiNjRhMzI5MTc1NmE1NjM4YmMyNzliMmI2ZSByMjNiMS1icmFuY2gKKzMyNDg3IDVjZGI3MjgwYzMyNjZkOTU0OGNjZDhhNmIzZDQwNmEyMWYzOGM5Y2EgcjIzYjEtYnJhbmNoCiszMjQ4NyA1ZmM2MGUwYjg4MzY4MDIwN2NmYjEwMDg2NWM0MmNhM2EyYjE2NjM3IHIyM2IxLWJyYW5jaAorMzI0ODkgNTc2ZmExN2ZmMDdjYzE3M2QyYjI3N2U0NWU0YTRkZWFiNDZhYmQyYiByZWxlYXNlMjItbWFpbnQKKzMyNDkwIDE3MWVjZmZmMjY1NzliNzU5Zjg4YjllYWM1YTE1ZTM1MzdkYWQ2OWIgbGVnYWN5LXRydW5rCiszMjQ5MSBiZGNmMzdiZTkwNGRiZDJlMzUzZjFjN2ZhZWYzMTYyYmE2MWEwMjgxIGxlZ2FjeS10cnVuaworMzI0OTIgMzAzMGQ5NGE5YzA1OTBiZTQxNzIwYjljN2NhZWQxNTIxNGU3YzgzZSBsZWdhY3ktdHJ1bmsKKzMyNDkzIGI2MmQ4NzgxNjk3Njk1NDEyZDY4NmVkMDA0M2ZmZDcxZWQxYTQxNGYgbGVnYWN5LXRydW5rCiszMjQ5NCA5OGY1YmZiMTljODY4YjM2M2ZkNDAwNGYzMzJmZWI4NDZjNWM5NGVlIHJlbGVhc2UyMi1tYWludAorMzI0OTUgNjhjNjE4NmRjMWExMWJiNDEyZWUwM2FlYjlkMWViYWRkN2MzYmYxNyBsZWdhY3ktdHJ1bmsKKzMyNDk2IGI2N2Y1YzM5NWE2ODhlNTkwNTgzNjgwNDg5MmZkYjM2ZTZjZTYyNDggbGVnYWN5LXRydW5rCiszMjQ5NyAxMDNmYWEwYzJlMWU2ZjZmYjRiNDdiN2VkMjQ1NDI1MGEwMGE3MTIyIGxlZ2FjeS10cnVuaworMzI0OTggZGI5ODQ1OTA3ZThiZWQwMzk2NDY1YTNiZDczYmNlNmUyZWY3ODYxNSByZWxlYXNlMjItbWFpbnQKKzMyNDk5IDY0MjMwZWU4ZWVhNTk1YmUyZTQwNGUzZTMxZGI5YzNjZGI0ZTBmMmEgbGVnYWN5LXRydW5rCiszMjUwMCBmNTBkMGQwZjI5YTJkMGI1MjdhNWEyOGYxMzdhYjRkM2JiN2UxZjQxIGxlZ2FjeS10cnVuaworMzI1MDEgNmQ4NTJlYmZmMzZmZjYzYjc5ODZlNjhlMjNhNmIwNjk5YzVhOTYxMCBsZWdhY3ktdHJ1bmsKKzMyNTAyIDE2Mzc0MDUyY2I1ZGIzYzhjNmMyNDI0YjY1M2I3NWIzMzJhYjJlYTQgbGVnYWN5LXRydW5rCiszMjUwMyA1M2ZmMjNiYjMyNDhmYjg0NzI4MDcwMGJkYTY3Y2NlNTQ4MDc3MjE5IGxlZ2FjeS10cnVuaworMzI1MDQgNzQzYWU5Y2IzYTgzZGJmZjIzMTAxYzQ2OGE1ZTExZDkxYjhiYjUyYiBsZWdhY3ktdHJ1bmsKKzMyNTA1IDFhMGI3ZmM0NjI1Yjg4MDNlMzM4M2JkMzA5YTZmMzY3MDlmNDI0ZjEgbGVnYWN5LXRydW5rCiszMjUwNiAzYThiOGFlZGUxMDBkOGM4ZWRhOWQ2NThhOGVjMTI4OWNmNmJjNDY3IGxlZ2FjeS10cnVuaworMzI1MDcgYTUzNTI5MDk1ZTk1NDA5NDM4NGY3M2E3Y2U2ZjU5NzQzODk2YTE4YiBsZWdhY3ktdHJ1bmsKKzMyNTA4IDVmM2U4YmNjOGM3ZWJjYTY0YmNmMDE2ZTZkM2I3YjczOWMwZWUyMDkgYXN0LWJyYW5jaAorMzI1MDkgYjFiYzllMTcxYzYyZTgyOWFlY2NhZjgwMDk4YWM4OTcxOTkzN2Y4MCByMjNiMS1icmFuY2gKKzMyNTEwIDFkOTdmNTJiYzg0ZmIwZGJiOTUzM2QzYTE0NDdlZTAwNTRjMzY1ZGUgYXN0LWJyYW5jaAorMzI1MTEgNzFlMTkxYjgzZDA0NjViY2QxNzE0Njc3Yzc4Y2RlOTAxN2U5ODRkNyBhc3QtYnJhbmNoCiszMjUxMiBiODQ2MTIxODI5YmRiMDA3Y2Y1NDc3OTI5ZjdmZTM5ZGZkYzdjZTQ3IGFzdC1icmFuY2gKKzMyNTEzIGE2MTMzMGEzZDU5YzIxY2Q2MjQ5NTc3ZjE2NGYxZDBlNDA5ODEzMWEgbGVnYWN5LXRydW5rCiszMjUxNCBmNTViNTUzYTBiMzQ5OTlmNjA1MDZhODg4MDE0YjUxYmMxNmU4YjA4IGxlZ2FjeS10cnVuaworMzI1MTUgNjM5MmU4NDM3NTg4ODEzMTIwNzM1NThiNmEzZTJlOTY2YjlkMGRiMiBsZWdhY3ktdHJ1bmsKKzMyNTE2IGM2ZDZhZDg2MmE4YzMzMTEzZWU3NGIyYzNhNDBiMDU4OTkyMTEyNzIgYXN0LWJyYW5jaAorMzI1MTcgNjVmNzIwZmE2MjAwZmRhZmY0MGFkMjk4MDMxODQzMDNkMjY2MDdiZiBsZWdhY3ktdHJ1bmsKKzMyNTE4IDI0MDA3MWEyYjQ2NmU0ZjJhMzNkODJlOTM0NDliN2MzODA3ODU4NzkgbGVnYWN5LXRydW5rCiszMjUxOSA4NWYwZTYwOTU0Y2E3YjAwMDc2NjY4YzFmYzM0NjY4NWRjNjdkNWUzIHJlbGVhc2UyMi1tYWludAorMzI1MjAgOWViNWJlOTM3OTkwYTg5MmU1YTczYWFiNjE4YTYyMWY1MDc5OGQzOCBsZWdhY3ktdHJ1bmsKKzMyNTIxIDBmMGY2MjM0ZjJmZjRlZmRjYzczZjNjYTYzMTc4MGE5YjM3YzhmN2MgbGVnYWN5LXRydW5rCiszMjUyMSA2N2NlNGVlNGEyOWQxZTdjZTM1N2VmOGQxYzAwYzY5ZDU1N2MxMGIyIGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzI1MjIgZTJkMjk1Njk5OTZkODBkNjA1ZGE2NmUxN2JkNDI5NDFlMDNlMWM5NyBsZWdhY3ktdHJ1bmsKKzMyNTIzIDIzMThhOWUxNmFiMGE5ZGM5ODhkZmZmZTcxNTgzYWEzZmNjZDc0NzMgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMjUyNCA3NWMxY2VkOTNiYjUyYzJhYmNhMDZiZmQxMjExZTQ3NDI4MWUzNDM1IGxlZ2FjeS10cnVuaworMzI1MjUgNmM0MTc1NTJmNDczNWMwOGM4ZGI1NjYxMzQyZWVhYjNiYmNiZGEwMSBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMyNTI2IDZlOTg2MjA2NmUyOTZlYzg0ODY4Y2E3YTAyMDNkMDQ2OTM3ZjVjM2IgcjIzYjEtYnJhbmNoCiszMjUyNyA5OTg4MWI2ZWE5ZjdkOTgwYjE0MTc1OGYyYjBiODY5ZGE2NjM0ODY0IHIyM2IxLWJyYW5jaAorMzI1MjggYTM0MTk3NmZmNDc2ZDhkNGNkMTFkYTNiYjQyMTA3NTM4NWRlZjAwZSByMjNiMS1icmFuY2gKKzMyNTI5IGIxOGQyZjJkYjE4ZDA5MGM2MTkwYjMzMzJlMDE1MGExYTdkNDNkZDMgcmVsZWFzZTIyLW1haW50CiszMjUzMCA4OWUzNWNkYmVjY2MwY2YxOTJjY2Y5YjJjOGQwYWVkYzY0MDcxMWZlIGxlZ2FjeS10cnVuaworMzI1MzEgNjg3MzM3OWI4ZDhjNWEwNzE1MjVhYzVlMzVjODgzMjI3MjNmMGQyZiByZWxlYXNlMjItbWFpbnQKKzMyNTMyIGVhNzc3MjczMmRhMTljMzE0N2ZiZTBlODkxZGFhY2YxZGVjM2VkODMgbGVnYWN5LXRydW5rCiszMjUzMyA0OTQ4NmM1NDRhY2RkNTYxNzJhZGQ0NmU4Y2QyN2IyMDk0ZTZiMGQyIGxlZ2FjeS10cnVuaworMzI1MzQgNjcxZTRlMmVlYzRiYTczZTg0YTg1ODdjODgyY2QwZTE2OGJhY2EzMCBsZWdhY3ktdHJ1bmsKKzMyNTM1IGFmNTM3MjlkM2NkZDY0MTE5NTIyNTQ3MDYzOTcwMDMyZmM1YWU5MGMgbGVnYWN5LXRydW5rCiszMjUzNiBlNGVhYmU1YjNkYTEzZDRmYWEzZDI3MWMzYTAzOGU1YWI5ZGU3ZjI2IGxlZ2FjeS10cnVuaworMzI1MzcgZDMxNjRhMzA0NTk4YjE0ZjE0ZGE5M2JhMWRhNGFmZTgwZjdlNTY1NSBsZWdhY3ktdHJ1bmsKKzMyNTM4IDk2YjZjYzVkNDA4Yjg0ZDI1ZjFlZjI2MDFhZDRmZmUyMDFhZjc0NDcgbGVnYWN5LXRydW5rCiszMjUzOSAzOWY0Yjk3Y2U4MjgxOWRjMmYxMTAzYTA1YTQ3ZGQyZDQzZGY4ODE2IGxlZ2FjeS10cnVuaworMzI1NDAgZDVlMjkxZjBhZTM5NTVjYWE3ZDcwMDFiNzMwMThlZTY5ODJmNTVjMyBsZWdhY3ktdHJ1bmsKKzMyNTQxIDM1YzkwZDljYzMxMzU3NTA2YThkODY3NjI3NmE3ZGM3ODRiYjQwOWUgbGVnYWN5LXRydW5rCiszMjU0MiBkMzBhNmE1NzQ5NzljOGI2ZjE2NWFjZDJjNThhYWRlOWEyMzVlNGRmIHIyM2IxLWJyYW5jaAorMzI1NDMgYmMxMzVkN2I3ZGYxNmZiN2FjMWRhMDYwNWIwZmU4ZjNiMTc0MjM5NyByMjNiMS1icmFuY2gKKzMyNTQ0IGVkZGNiNzkwZWQ4ZDhiZDUxZjE5MDc2NjY5YzBjNjM0MjM2NjU2ZDggbGVnYWN5LXRydW5rCiszMjU0NSAyZDA2OWMxNmM4YjJkMTkxMjg1Nzc3Njk0MTA0YzQ1YjUzZDk3YTM1IHIyM2IxLWJyYW5jaAorMzI1NDcgZDFjZGUzZGFmOWE5ZTYxNjY3ZWY3NmZjOTg0ZDg4ZjQyMzM5NTc0NiBsZWdhY3ktdHJ1bmsKKzMyNTQ4IGY0MjM4MDM2MDAwYzQ1NTZjNDM5YmRjMTg5NDcyNjI4MTA3NjI1OGQgbGVnYWN5LXRydW5rCiszMjU0OSBiOWEzMDczZjkzOTI4YzFiODAxMTI0YmY0N2I2ZTgzNTU4NDBlM2U1IGxlZ2FjeS10cnVuaworMzI1NTAgODFkMzczZTU4OTgzOGMzMzllMDMyZTZlYzE3MTFkOGVjMTY3NzY4NSBsZWdhY3ktdHJ1bmsKKzMyNTUxIDIzN2Y5N2M3MTY5MWJmM2Y4NDBmNmZjZDI0Y2VlNWU0ZWI4Njg2NWEgbGVnYWN5LXRydW5rCiszMjU1MiAwODFlZjdiNmJlMDQzNzY4MzdmYjI0NWEyNzIyZTdkYjg3NDFhYjk2IGxlZ2FjeS10cnVuaworMzI1NTMgMGUzNWMxNTk3NDFiNTcxZGU1MzEwNmI1ZGY1YWU3MDg3NjM2Y2U4YyBsZWdhY3ktdHJ1bmsKKzMyNTU0IGFhYjBkYmUzYzAwODFmYmQ4NGE5ZGZlZGQ2Y2IyODFiYTY4MDYyN2IgbGVnYWN5LXRydW5rCiszMjU1NSAwMzlhYjMxZTEwMzQ3Nzk2YjRiODA2OGNhYWM0ZjIyMDJjNGFjYTgxIGxlZ2FjeS10cnVuaworMzI1NTYgNDUyOGNjMGVkYjZkYTU0Zjk2MzAzMzFmODdmOWU4NGZlNWUzMTJkOCBsZWdhY3ktdHJ1bmsKKzMyNTU3IDFkMWE4NWYwZTVlOTk5ODU3YzEwM2Y3Mjg5ZjNkYzQ5OWQxMjM3MjMgbGVnYWN5LXRydW5rCiszMjU1OCBmYTU5NTBmYmU3MzY3NGQ2ZTAwYzVmYTE5N2VlM2I3NjA2NjE1M2U4IGxlZ2FjeS10cnVuaworMzI1NTkgMWVhYzFhMzViMzcwNDI5ZTZiZjZhNmExZDM3ZWQyZmViNDI3ZTQwMyBsZWdhY3ktdHJ1bmsKKzMyNTYwIGU0ZTcyZmE0YzkxNDEyZjM2MjY4MjZlMzBlMWRkODc1ZTNhNzQ3NjggbGVnYWN5LXRydW5rCiszMjU2MSBjZTllMmFlOGQ1OWQ2NjQxNmFlZTlhM2U1MjZiZjNkNzRiZTk5ZTlmIHJlbGVhc2UyMi1tYWludAorMzI1NjIgMDZhYmZjOWM2OGU3NzI3ZWZjMGM3OGU2NzdiZjUxZmVhOWE3ZmQyOCBsZWdhY3ktdHJ1bmsKKzMyNTYzIDZhNTFkMTFmYjFlOTE1Zjc2YWQ0OGE0MjRjOWMzZjdlM2EzMTI3MTUgcmVsZWFzZTIyLW1haW50CiszMjU2NCA5NmVlZTdkMDRkODg0MDdkNzM5NjY2ZTg0ZDljYTNjYjFlZDNhZDA2IGxlZ2FjeS10cnVuaworMzI1NjUgNGVmMTA4ZjgxODFmMzBjNTRlNTkyODY5ZjMzYzc4ZTg2NWRhMjE4MiBsZWdhY3ktdHJ1bmsKKzMyNTY2IGIwNGMwNzQ1ODZhYTQyNjYzNGFlNGMzMWRhNGI5MzQyNGY5YTIzZTQgbGVnYWN5LXRydW5rCiszMjU2NyAzMzQ3NTY2MTgyM2QzNzNkNjVjYTkzNTE3YzI3YTU3ZDYyZmRiYWNjIGxlZ2FjeS10cnVuaworMzI1NjggZmEwMDYzOTI4NTE4MTdjMzA4ZmEyNjJmN2Y2MTY0MTE5MjM1OTRmZSBsZWdhY3ktdHJ1bmsKKzMyNTY5IDM5YWQ3NjE0MzI4OGJhMmFhZGMyOWMzNTRjY2VjYjJiZDQxNjU4NjcgbGVnYWN5LXRydW5rCiszMjU3MCAxNzQxYWY0OGZkOWYzZTY5ZmEzNTU5MjgzY2RlNjdlNmNhOTIxYTdhIGxlZ2FjeS10cnVuaworMzI1NzEgOTI4NzI3ODkxNmUzYzVmMWYxZTdkOGQzZWEyZjRlNWM1NTcxOThmOCBsZWdhY3ktdHJ1bmsKKzMyNTcyIGYyYzc0Y2ZlYTA1MTI0NzRhZGIyMzYzOGY4OGU1MmU0NTM3Y2U0NzkgbGVnYWN5LXRydW5rCiszMjU3MyAwMGZjMTM4ZDg1NTY1ODc3NDliYjdhNTI2NTgxZjk0YmI3ZjQ3OTA1IGxlZ2FjeS10cnVuaworMzI1NzQgODg4YTMxMThlMGQ0MjI4OGFlYjE3MzJkNWYzZjE3YjJmZDRmOWU5ZCBsZWdhY3ktdHJ1bmsKKzMyNTc1IDExNDk1MGVlOWFhNzMzZWUyYzAxZmZjM2VjODgwYjQ1OTg2M2Q5MTYgbGVnYWN5LXRydW5rCiszMjU3NiA4MzUzMzAxNmMyODk3MTY1Y2I0ZjdhNjZhY2MwZDY2MjZiMWI0YTQ5IGxlZ2FjeS10cnVuaworMzI1NzcgYjNiMjg0NDM2YzI0YTIwYTM4MjlmOTcwYjY2N2QzNDQwZjU1MzdiYyBsZWdhY3ktdHJ1bmsKKzMyNTc4IGE3NjllMDc5YmIxMmZmODNlYzk3ZWYzODA3MTMxMTczNjc3ZWRkY2IgbGVnYWN5LXRydW5rCiszMjU3OSA3ODNkZGRlMzc5MmI2Njk0ODY0ZTk0NGFlNmRiMTg0ZWU5M2Y1NjQyIGxlZ2FjeS10cnVuaworMzI1ODAgMGExODBlZTI0NzNiZDk5ZWM0Y2Q2ZmJlNGFiZjNhNWQ4ZGI2M2M3OSBsZWdhY3ktdHJ1bmsKKzMyNTgxIGM3OThkMjhkZWU0NmIxOWQxNjEyNjBlN2I0MTQzMGE0NjNlNzBmODggbGVnYWN5LXRydW5rCiszMjU4MiA5MmExZTU4NWFiZjc2M2FjMzUxNjQyYWEyZGJjYmM2ZjUyYzVhNzU3IGxlZ2FjeS10cnVuaworMzI1ODMgMTgwODJiMmQyZWJkZjE1YjNmZDNiOWZiNTQ3ZDgwM2JkODczMzYzNiBsZWdhY3ktdHJ1bmsKKzMyNTg0IGE0MGI1NjcxYTU2MzkyMWQyOWQwNTdkZmI3YTIwZDQ1Y2FmN2ZlMmQgbGVnYWN5LXRydW5rCiszMjU4NSA2YTMxMTdkZjVlMTMxMjU5YWU0MmY5ZTI4MDBhMTExMmI5NjAzM2M2IGxlZ2FjeS10cnVuaworMzI1ODYgZDkxODIxZDlkNDcwOTY3MmMwYmM2OTU1MWNmNDQzNGFlMGIwOTYwZCBsZWdhY3ktdHJ1bmsKKzMyNTg3IDk5Y2YzMzY4ZDY4N2VhODllN2ZhNjczYzg0NTE3NjY0NTAwOWVhNTUgbGVnYWN5LXRydW5rCiszMjU4OCBhMTE0ZWU3NDI2N2M3MzEzMGI1ODcwZDk2MmI1MjY2OWFlY2E2Y2U1IGxlZ2FjeS10cnVuaworMzI1ODkgMmVlZTk2NTVkNzFiMGY4OTZkNmJhYzliZWU3OGIyMDczNjA5NzM4OSBsZWdhY3ktdHJ1bmsKKzMyNTkwIGM1ZjE4ZGIxYzk2NjFkNTgwNzI1MzM2OTk1NzhiMmZiYzRkZmY4NWQgbGVnYWN5LXRydW5rCiszMjU5MSA1ZDRkNGViZmQzMTcxZTc1MzVjOTQxODdjODVjN2E4ODdjN2NhZDBiIGxlZ2FjeS10cnVuaworMzI1OTIgNDc1NmZhNTM4NTYwNmZiMTIyZjVlOWE3ZDE2N2Q5ZGYzZjU1N2YxOSBsZWdhY3ktdHJ1bmsKKzMyNTkzIGZhMDU3ODI0YzliNGI0MjdkMDk0YTM5ZTU0ODE2MGNhNzQ0ZWI0MmEgbGVnYWN5LXRydW5rCiszMjU5NCAwNWRhNzcyNmMwMjdlNDdmMTEwOWIxN2M5YjdlZDU0YzgzOGVlMGI4IGxlZ2FjeS10cnVuaworMzI1OTUgMzkzNDI5YTZmYTE2ZDFkOTA0ODU3ZWI1ZGE2MDk2NGU2MWE0ZWIyMCBsZWdhY3ktdHJ1bmsKKzMyNTk2IGUwNTlhOGIxMWI5ZWNjYjEwMDcyZjc2OTllNGVhNDlkZWEzNWMyNmIgbGVnYWN5LXRydW5rCiszMjU5NyBmYWYyY2I1MDcwYjRjOGQxM2I3YWM1OWE1Zjk4Y2Y3NDE2YmYyZjRjIGxlZ2FjeS10cnVuaworMzI1OTggMDAxYTkwNTU1NzgwOGExNWU4NDM5YjU4M2MxZmVjNjk4OWFlNzJmOSBsZWdhY3ktdHJ1bmsKKzMyNTk5IGRiZGViNzM0ZmY5Nzk5ZGE4MTZjNTkzNmM1YzQzNmM0MzFmZGFjMTEgbGVnYWN5LXRydW5rCiszMjYwMCA4ZGY4OTdmMTRmYjg2MDI2ZjM0NDc5YjJlMDk2OWM4MGY0YmM0ZGJkIGxlZ2FjeS10cnVuaworMzI2MDEgMzM1OThlOGU0OWIyMGJhNGI1YTc5OWQyYTFiYzI4MjAyYjk4Mzg4MiBsZWdhY3ktdHJ1bmsKKzMyNjAyIGFjNDg3YTdmN2YyYzc3MDk3NTc4YmVkMWM4Yjg5ZmNjN2MzYTU0NjAgbGVnYWN5LXRydW5rCiszMjYwMyAzYTlmNWYwYzUxMmViNDk4MGVjMWFjODA5ZmFmNjY3NGFmZWQ1NmIwIGxlZ2FjeS10cnVuaworMzI2MDQgMTk2NDAxMmY2ZmIwZDIzYmY4ZDdiYTM5OWJiNWU4NTc0YTI2MWMyMCBsZWdhY3ktdHJ1bmsKKzMyNjA1IDZjNGEwNGNlOTY1YzI1OGYzYTliYjBmOTRkOTFlYzBjYWQ3Yjk1ZWMgbGVnYWN5LXRydW5rCiszMjYwNiAwOTQyMmMzMDE4MjY1Yjg1YTgwZjAwODkzZTE2YTI3ZDVlMzZjOWE0IGxlZ2FjeS10cnVuaworMzI2MDcgOWQ1YTc1OTE2OTcxMDk1ODBjNThkZWY2MmM5MTdlMDdlNjUxZTE1YyBsZWdhY3ktdHJ1bmsKKzMyNjA4IDE3NjNkOWQzZmQ5ZGZlZWNkNmQ2ZTI3YmRiNTY3ZmExNGM4NmJlOWMgbGVnYWN5LXRydW5rCiszMjYwOSA5YjRmZjRiZjAzM2I4MTY0NzgyNmFlZTlmY2IxN2M3ZTEyNTZjZjVhIHJlbGVhc2UyMi1tYWludAorMzI2MTAgYmFlYTMxOGJlNDk5Y2RmYzQ5YjU1N2FkZDExY2U4Mzk4Yjk0MzJkMSBsZWdhY3ktdHJ1bmsKKzMyNjExIDI1YjIyMThkYTA5YjU5Zjk2Yjg5NmVlNmI0MTBhNjhhMjgwMDExOTcgbGVnYWN5LXRydW5rCiszMjYxMiAzNWE0ZDc0YjViOGVkOTliZDE3MDUxZjA5N2RiMTkyM2M2NjE2YjlkIGxlZ2FjeS10cnVuaworMzI2MTMgNmNhOTRhZWIyOTJhYzQ3NzlhMzBmNzZiYmFkYzM1ZTYwNzkyYTg2OSBsZWdhY3ktdHJ1bmsKKzMyNjE0IGFjMjkwMTVmZjZhODFlZjA0MThkYTE5NmQ4NTlkYjRmOTM4MGM5ZjkgbGVnYWN5LXRydW5rCiszMjYxNSAxODlmZGFlOGY0OTJiZjZjZWQzZDVhZTBiMTRhMzJjMjlmNGE2NTEzIGxlZ2FjeS10cnVuaworMzI2MTYgMjVlNjYwZTcwZGNkMDYxZTk5ODJiMDM3OGFiZjM2ZjAzNjdjMGFhMiBsZWdhY3ktdHJ1bmsKKzMyNjE3IDJlOTk1NmQwMWRlMzMyZjdkMTJmMjE4NGViMGU5MWE2NTQ3MDIzNmMgbGVnYWN5LXRydW5rCiszMjYxOCA0YmE3NjNiYzVhNTYwZGM1N2RkMTgwYjJkNzVkNTZlOTZiNTdiNzgyIGxlZ2FjeS10cnVuaworMzI2MTkgMzUwZWUzMWFhYjBjMDI0MjQ3M2Q1MGFjOTBmZTMzZmFmZTA0YWZlYyBsZWdhY3ktdHJ1bmsKKzMyNjIwIDk5NTlkOGZhNGRkZjBmOGMwNDA5NjBlZjEwYWNjZTZjYzlhYWUwZWQgbGVnYWN5LXRydW5rCiszMjYyMSBiMTc0ZDA5MjdmMGUyNTc5NDljOWMxM2JmZjdmNDM1YzJjMDQ1MzdiIGxlZ2FjeS10cnVuaworMzI2MjIgYzljNmJhNzk1MmE4MjI3YWE4ZDNiMmI5MjU5YmRhYmRlYWVjOTYyZSBsZWdhY3ktdHJ1bmsKKzMyNjIzIDlmOTAyMmMyMTA1NjIzNDlmNDcwMTg3NTE4OTM2NWU2N2I2NDQxZTAgbGVnYWN5LXRydW5rCiszMjYyNCA2NWJmNjlmN2MxNDg5ZDg4NDhhYjI0NmJlM2JjNWFkMjY0ZGFhZWJiIGxlZ2FjeS10cnVuaworMzI2MjUgYzkyNDEyZDYzNGIxMGIzMDAyODg3ZjQyMzUwYzg4NGEzZjJlMDI4NiByZWxlYXNlMjItbWFpbnQKKzMyNjI2IDY4ZjA0MmZhZmI3ZGQwOWJkZmMyNmZiMzQ2ZmU0NjRjYzVlMGUwZDYgbGVnYWN5LXRydW5rCiszMjYyNyBiYjE3NzA5YTM3YTNhYzA3NDllYzEyYTQxMDE3NDAxY2IyMWIxYjJmIHJlbGVhc2UyMi1tYWludAorMzI2MjggM2U4OGNmZjA1ODIyZjJjMWI1OGE1Y2MwNzQ4ZmJjZjk4YjkxZTNmMSBsZWdhY3ktdHJ1bmsKKzMyNjI5IDRiZjg2NTE4ZDlhZTUwMTgyMDcwZjVlY2YwMDg4MDNlNTdjYzU0NDIgbGVnYWN5LXRydW5rCiszMjYzMCA0YzEzOTE2ODY0OGM2YWRlM2MzMDFhYTg4OWMyOTY5NzMzNDMwZTRlIGxlZ2FjeS10cnVuaworMzI2MzEgODNmZTBmNWM5MzU5N2NjNmMxNmE1NmEwMzIxZTgyNmZjNTYxYmQ1MSBsZWdhY3ktdHJ1bmsKKzMyNjMyIGNmY2M0NWYxODUxNWEwZGE3ZWVkYWE5M2JiNjZlN2YwZDUyMmVkNDAgbGVnYWN5LXRydW5rCiszMjYzMyA1ODkyYzFlNTE1YjRkYTllMTA3NDk1Nzk1NDM2NmY0NjQ2NDhhMTA1IGxlZ2FjeS10cnVuaworMzI2MzQgODE1ZmYwYWIyNGU3MjhjMWNiNmRjMDA5M2RiYzEzMzczYzJjOTEwOCBsZWdhY3ktdHJ1bmsKKzMyNjM1IDMxMmYxMTg2YWEzOTQ1ODFiNWIxNDUwMTc0NWEyZDA0MWY4MzUzNTggbGVnYWN5LXRydW5rCiszMjYzNiBhNWRkNTc0N2NkZmUyNjhkNGE1NmM1ZjFiZjYxOTNlOTFlOThlNDk3IGxlZ2FjeS10cnVuaworMzI2MzcgMTdiZmE3ODYwNzVhZGNiMzAxMDg4NmU0YzA0MjgxZTViNDdhODNjYiBsZWdhY3ktdHJ1bmsKKzMyNjM4IGI1NGE4NGQyOWMwMDAxNmRlYThiZmYyMDM1OGM5NTgxYmNkMzA4ZDQgbGVnYWN5LXRydW5rCiszMjYzOSA0MTM4OGU4NDI2MWIyNDJhNjJiZmQwNTA0YTgxMjFkMzMwOWNlYzVjIGxlZ2FjeS10cnVuaworMzI2NDAgMjIyYzNkMmZlNDMxYjEzNzJiYzk3MDA5ZjI3OGQ2M2RhMTA3ODA2NSBsZWdhY3ktdHJ1bmsKKzMyNjQxIDgyZmUzYTlhYzM3MWQ0MzQ2YWNmNmVmZWFmNjQ3ZGJjNzM2NDUyYTIgbGVnYWN5LXRydW5rCiszMjY0MiA2MWQzZjhlNjZkOGZjMDYwMDhkZDc5NTQwZWIyNWEzODRhZWUxMThkIGxlZ2FjeS10cnVuaworMzI2NDMgNDkzZmQ3ZTUyMjA2YTFhZTVhMDQ0MTA3YzE2NDU1MDU0OTg4YWM1ZCBsZWdhY3ktdHJ1bmsKKzMyNjQ0IGNlNmMzY2M0MjJhYjUxNjI4NDZhYmRiNGZmZWIyNjRmMjE3ZTRhOWEgbGVnYWN5LXRydW5rCiszMjY0NSBiMzcwMmI2ODNmMmFkMmJlNmIyMGFjN2NlYTJlMTc2OTdjYzU0ZTE2IGxlZ2FjeS10cnVuaworMzI2NDYgZjFmY2FjNGNhYmFkODZmY2E5MTAwYzA3MzFhMWM5ZTc5MDI3M2Y4NCBsZWdhY3ktdHJ1bmsKKzMyNjQ3IGQ1NDYxMGY0ZjI2MWRjYjllMTY5NDZhZmM5MWI1YTgyODVkMzljMjIgbGVnYWN5LXRydW5rCiszMjY0OCA2YjA3ZjM2OWNmMDNkYWQ4NDI2Y2Y1ZDdiMDIzMzcyMDEwZmYxOTY1IGxlZ2FjeS10cnVuaworMzI2NDkgMzgwYTlhNWFmYWEwYmRiMmY1ZjY4Y2FkOTk3MDJhNGQ2YTE0OGMwMiBsZWdhY3ktdHJ1bmsKKzMyNjUwIGVkNGIwOThjN2JjYTFkOThhZjViZjY2YTRhOTVkYmYwNjRjZGZkNGYgbGVnYWN5LXRydW5rCiszMjY1MSA2ZmNhNmUwN2MyZmE5YTZmNWE2YTMzOTFiODhhOWI1NjM5NGIwN2NjIGxlZ2FjeS10cnVuaworMzI2NTIgZTEwN2M5MjFiOGYzMzExNjIxYWY2NWQ3MzFkYTJhNWM4YWIzMDBmMyBsZWdhY3ktdHJ1bmsKKzMyNjUzIDUwOTUzNzgzOTQyNDZhZmZiMDI3NGE3ZjI3YmRjMGY3OWM2MzRlNDYgbGVnYWN5LXRydW5rCiszMjY1NCA2YzQwYjczYzcwNDU3ZWZiY2UxNjhmOWNkNTczMDgxOGY3NTAxOGM4IGxlZ2FjeS10cnVuaworMzI2NTUgNTA4NDE4OThjYzE5YzBhYzM1N2Q1MDFmMjA2MTQ3NDdlZGRhMWI5YiBsZWdhY3ktdHJ1bmsKKzMyNjU2IDAxM2Q5NWMzNDZkMjM1NTQzMmU4ZDE3YzZmNTYzYzA2MzZhMzU1M2EgbGVnYWN5LXRydW5rCiszMjY1NyBhMDdkZWYwZGM3ODUxZWE0OGM1YjE2ZDRhOTJmY2U4Nzc3ZTQ5Y2I4IGxlZ2FjeS10cnVuaworMzI2NTggMzA1NWM5YmRmZjVmNTExOWE2MDI4ZGRjNmNkYjc2MzA2Y2UyMmRmOCBsZWdhY3ktdHJ1bmsKKzMyNjU5IGY5ZTZmOWZiOGRmMGM1ZjIwNTI0MGRkYWJjMTdkN2E3ZDhkMmYxM2QgbGVnYWN5LXRydW5rCiszMjY2MCBhM2IyNjEwYjUwNDFhOTJhYWU3ZDI1MWNkNWZhZmVjZGE4YjBjYzQ3IGxlZ2FjeS10cnVuaworMzI2NjEgYzI3YTY0YjM4NzYyN2YxYmJkZGE0MzJmZDVlNjE0Y2YxMzFmNDNjNSBsZWdhY3ktdHJ1bmsKKzMyNjYyIGQyYWZhMDBjMjBlM2M0ZmU3MjUyMGZhNGY3YTk4NzE2NzQ3YTBmNGQgbGVnYWN5LXRydW5rCiszMjY2MyA5YjcxNjRjYzBjOTI2NmVkNmUyMWM1ZDM3ZjExMjJlNWUyODljNjIxIGxlZ2FjeS10cnVuaworMzI2NjQgMDQ2MTMxNjFhMzJiNmJhZmZhYzA2ZjE3M2VkMDY2Yzc4YzFhZTlmMSBsZWdhY3ktdHJ1bmsKKzMyNjY1IGU2OTY4ODg2YTk3ZGExOTBmODVkMTI5YjFmY2JhOTBlOTQ2ODk5NjIgcmVsZWFzZTIyLW1haW50CiszMjY2NiAxNTdhMjllMTllYjllYzc4YzI1YTMwOWQzNWU1YzZiMzA2YzAzN2M0IGxlZ2FjeS10cnVuaworMzI2NjcgMDY3YTk4MjMyOWFjYzMzODZhODA3YjM2MDcyZGExMjM2NzcyZjEzMCBsZWdhY3ktdHJ1bmsKKzMyNjY4IGVlZWRhYzQ5ZTg2YjM4OGZiMjNjMTUxMzU3MTcxNmQ3NGE1NzU3ZTIgcmVsZWFzZTIyLW1haW50CiszMjY2OSAxMDk4MTBhMWFkYTg2MDZmMjgwMzBiM2NkNzQzOWQzY2Q3ODdlYWUwIGxlZ2FjeS10cnVuaworMzI2NzAgZDRmNjU0NGY3OWFjZTQ0MWRhN2ViNzQ3ZGM2N2EzMzFjOWIzODY1MiBsZWdhY3ktdHJ1bmsKKzMyNjcxIDEzZDhmMjk3MzdlNWRlMjY4Mjc2NmJkYmVmYTVmZjIxN2M1NDJjODYgbGVnYWN5LXRydW5rCiszMjY3MiBkYzNmM2YzMDM4YThjZmE5NGYxOGFlMmFmYTUyNzcxMzlkYmUxZWU0IGxlZ2FjeS10cnVuaworMzI2NzMgMDg5ZjI0MjFlYjE4YTBiYWE4MjRlODk3MjhiMGZhY2E0ZjAxMzU1ZiBsZWdhY3ktdHJ1bmsKKzMyNjc0IDJmNjUyYTU5ZWJiMDFmODJkZjMxZWU3NzUyMWMxY2E5NTE0NzIyZWIgbGVnYWN5LXRydW5rCiszMjY3NSAyZjc0M2RlOGM1ZTJhMmJmNzNjN2QxNDBhMjY4MWQ4Y2E3ODZjMzNhIGxlZ2FjeS10cnVuaworMzI2NzYgY2I4MzJjMmNkNTRkNGFhNzk3NzM2YTVhYjU4NjIzMWNiNjdmOTkyYiBsZWdhY3ktdHJ1bmsKKzMyNjc3IDNmNzBkNzVjZDI4ZGFjYmM0YzYzNDg0Njg5MTlmZTcyZWEzZTNkZmUgbGVnYWN5LXRydW5rCiszMjY3OCA0ZGUwMmYxOGE0MWI0MmViYWVjYjc2NGZlNDIwMjA1YmExNzY0NzgwIGxlZ2FjeS10cnVuaworMzI2NzkgNTc0Yjk1NTFjZmM5ZTYxOWZiZTE1MzM0NDAyZmVhZTAwMzczYmVlZiBsZWdhY3ktdHJ1bmsKKzMyNjgwIDZiYmE0OGQxY2UzYmIwNjk3YjhlZDdkMGU4YzM2OGYxY2NhZDYzYzYgbGVnYWN5LXRydW5rCiszMjY4MSAxYzJlNjAzZmVlMDIzMGVkNzVmNjhiNzg3NmFjYmUyZDUzYjdkNjI5IGxlZ2FjeS10cnVuaworMzI2ODIgNGFlYWNhZGU2NjAwOWIxODZmYjcxOWIzYjBmYmU0MzBiNWE1NWU1NiBsZWdhY3ktdHJ1bmsKKzMyNjg0IGQ1ZTQ4NzM2MmQzYWRkNDk2NTA1NmRkZjIyYzA2ZmRkNjk1NWNiMjggcmVsZWFzZTIyLW1haW50CiszMjY4NSBmYjExN2Q3ZjU5NTBjNjRiNGVjYzAyNTc4ZWY1NzAwOThkZmYxZTdhIGxlZ2FjeS10cnVuaworMzI2ODYgM2YyMTRjMjY0ZjYzZDViYzQwMDY0NzIzZjU0MTZhNWZmYWUwYjcyMSBsZWdhY3ktdHJ1bmsKKzMyNjg3IDEzZGI1YjdkZTBkZGU3NTIzZWExNWE0MDY3NzNmNTY4Y2UwMWFmNjggbGVnYWN5LXRydW5rCiszMjY4OCA2NTY0OTM1MzRjYzc3NjZhYTYxZjY5NzIzNjQyNmM3M2ZhYmJiYTczIGxlZ2FjeS10cnVuaworMzI2ODkgZTFkNWNhOGFiN2RjODJjNzI2Mzk4MjExOTM4YTI3YjcyYjVlYjZmNCBsZWdhY3ktdHJ1bmsKKzMyNjkwIGNjZjdlMTM4YTEyNmRkMzBmY2YyYzYwZjYyYTM3ZmE2MDA3NTFiYmEgbGVnYWN5LXRydW5rCiszMjY5MSBkYjkwODQzYjAwZmNkYjgzNDI4ZDk0OWUzN2IwYjNhNDBkZDQ5MzExIGxlZ2FjeS10cnVuaworMzI2OTIgZDNjMWEwM2E1MTMwODkwNGYzNTM4OWIyYjdjNGY3MGYxM2JjMzY2OSBsZWdhY3ktdHJ1bmsKKzMyNjkzIDU5YjFiM2UyYTIzYjVlOTRjMDI3YWQ5OGY3MjE0ZWQ1MzI3NzAyMWIgbGVnYWN5LXRydW5rCiszMjY5NCBlZmY4NmNmOGYzYmIzZTdlZGJlMGI0OGNiOTIzMjkwYzgzMjE2NGVhIGxlZ2FjeS10cnVuaworMzI2OTUgODEwODhkZjBiMWRmMzY0MGU4OWI0ZDVjZDk2NDVmM2JkODJmOWZkMSBsZWdhY3ktdHJ1bmsKKzMyNjk2IDA1NTk4NzdhZGE1Y2YzMDlhNjAzZGNkOTQ2NTg1ZjI4YzM5ZjEwMjQgbGVnYWN5LXRydW5rCiszMjY5NyA4ZTc5ZGMzNzMxYmZmYzI2YjljYThkYTM2YTAzMzUzNTNmOWZhOWEyIGxlZ2FjeS10cnVuaworMzI2OTggNDMwMDIyMzNjYzJjZGEwMTQzZDk0YTYzMTg3ZmJjMTk0YTYyNjNhNCBsZWdhY3ktdHJ1bmsKKzMyNjk5IGRlNTY0YTg3MzNkMjI3NTNmZTgzMDkyZDJiZWRkN2Q0NGUyZmQ0NDIgbGVnYWN5LXRydW5rCiszMjcwMCA1OGM4ZTI4NDUxYTk3N2UwZmE0YTY3MTBjM2EzNTJiNGMyOWY0YTgwIGxlZ2FjeS10cnVuaworMzI3MDEgZDA2YWRiNWEzY2M5NmRmZmUzYmI5MGE5OTY3OWJiYTRkN2ZkNzU2YiBsZWdhY3ktdHJ1bmsKKzMyNzAyIDU0ZjFmZmEzNzQyOWVhYzdhNTAxOThjMTU5ZmNhZTlkOTc3ZDdiY2UgbGVnYWN5LXRydW5rCiszMjcwMyAwNjQ0MTk3NzM5NTZiNzA5OGJkNGMzOTczMThjMjdkYWE3YWVhYjYxIGxlZ2FjeS10cnVuaworMzI3MDQgZjI3OGIyN2VmMTA1ZDM0ZWY0NDZhNDBkZmEwYmFjZDYzNTE4MjRlOSBsZWdhY3ktdHJ1bmsKKzMyNzA1IDc3NTBiODQ2MmE4ZmM0MDg2ZjdmOTdlM2Y4ZDU0ZTU3MDc3YTEyZGYgbGVnYWN5LXRydW5rCiszMjcwNiAxNDNmZmY4ZDIxODk5ZDA5M2ZmYzg2MmUyOGJhYTcyMTJiZGRmNzFhIGxlZ2FjeS10cnVuaworMzI3MDcgY2ZmYjUxN2Y0ZTE1ZjlkNmM4NTBjN2NlNGRmNjY4NWZiMjQ4Mzk4YyBsZWdhY3ktdHJ1bmsKKzMyNzA4IDJiMGMwYmRhNWNjYTdiNmVhNzM1MzE1ZWRmMGVkZmUzZWVjYjZjNzAgbGVnYWN5LXRydW5rCiszMjcwOSA2ZGM4MmRjZjU1ODkyNjAyZDI0ZmI4M2Q3N2FiZGQzZTUzYjU3MmJmIGxlZ2FjeS10cnVuaworMzI3MTAgNDViZmE2ZDU5MWY3Y2E0YTUyYWQ0OTcwMGIwMjY5YzE2N2MxOGM5MiBsZWdhY3ktdHJ1bmsKKzMyNzExIGJhZTY3ZTQxNGExM2E0MmYwOWRlZmM2NzUzY2ZhMGUwM2MzMzA0YjAgcmVsZWFzZTIyLW1haW50CiszMjcxMiBlMDkzOTllM2IyYzA5MGRmNDllYzNiZGE2NGM0NTAxNGRhYmM3ZDk2IGxlZ2FjeS10cnVuaworMzI3MTMgOTJlYmQzZGFmNTA3MmVmMzFhYjVkYjVmZDY3OTZkOTg4ZTM4YzMyOCBsZWdhY3ktdHJ1bmsKKzMyNzE0IDk4MzViNDExMzNhYzA2ZTY5NjhhZTI1ZDhhZTRmZGJlOTQxZjZiMmMgbGVnYWN5LXRydW5rCiszMjcxNSAxYmFiYmI0OTE5YTdmMTdkMmZkYmU5YWY3MDNhYTY0NTAyNjk4ZmMzIGxlZ2FjeS10cnVuaworMzI3MTYgYzAxOWFhODI3Zjg2MDU2OTc2ZDI5MTAwZWUwMDI4MWY3ZjJkOTM4MyBsZWdhY3ktdHJ1bmsKKzMyNzE3IGFiN2RjNTM4ZjZmNzJkMjhhMjFiOTJlZWMwNDZjNTU4NzNiMGIxYTQgbGVnYWN5LXRydW5rCiszMjcxOCA4ZTkyZjJlMmJkYTlmNWIwYzBmYjBiOGUwNTBlYTMyOTU2OThlZDhjIGxlZ2FjeS10cnVuaworMzI3MTkgYmYxNjM0YjAyM2Q1YWVjZWI4NDhkOWE3MTdhMjM4ZThiYTlhYjg0NyBsZWdhY3ktdHJ1bmsKKzMyNzIwIDkwMzQyZjM5NTcyMWRmNjRlMTkwYzZlZDgxZjk1NmY1Y2Q0ZjUxOTkgbGVnYWN5LXRydW5rCiszMjcyMSAwNDA2NWM0YTFjNmI1YWZlNTM5OGEwOWE5MTNlMDM2N2JlZTk3MDQ5IGxlZ2FjeS10cnVuaworMzI3MjIgMWM4NDhlOWY2MTY2MjMxYzA3ZWNkYWY4NTE0MGNjMzI4MDNmOTY3YSBsZWdhY3ktdHJ1bmsKKzMyNzIzIDU2NDg5NzBjNjY1ZjE3ZjM4ZDg4ZWUyOGI1MzJlYjNmZDdjOTljZDQgbGVnYWN5LXRydW5rCiszMjcyNCBiMTBhN2ZhY2MxZTg4NmRlODQyMzI5YzFiYzNhNjNmZTE0ZmJjYWQ3IGxlZ2FjeS10cnVuaworMzI3MjUgODVmMWE5NGFmMzc0MjI2ZjQ5NDQwOTQwZTYwZjVjY2JiNGI3ZTZhNyBsZWdhY3ktdHJ1bmsKKzMyNzI2IGNkNDg5MDNlNDFiZWZjZGUxNjE2NjdmNmFiM2YxNzA4M2NkNmRiNTYgbGVnYWN5LXRydW5rCiszMjcyNyBjNGU4YzY3MjFlNDU2NjUzYWQxN2NiOGFkNmJiZWQwMGRiMGVmMTJlIGxlZ2FjeS10cnVuaworMzI3MjggOTg4YjNlODA3MDQzNmRlMjNiNTY3NjY5Y2Y4NDg3MDY1MmNkY2U4NiBsZWdhY3ktdHJ1bmsKKzMyNzI5IDM1YTA5ZGM4MDg0YzlkMGFlZjkyMjkxNGE1MzExMjBiZjAzOTkzMzEgbGVnYWN5LXRydW5rCiszMjczMCBhZDg0ZmU1OGVjMmY4YWQ3N2I2NDRhOTE4YzkzYTRhOTY1MmRkOWMzIGxlZ2FjeS10cnVuaworMzI3MzEgNzU0YzQxYmNjODFhMmM4MTNhY2U1ODBhMmVjYWUyY2VlZDQ4ODU4YiBsZWdhY3ktdHJ1bmsKKzMyNzMyIDc4ZWZiYWQ1M2RkODZiNzdiYTM5Zjc4YTk3OGFkNWI1M2U5MjMwMzIgbGVnYWN5LXRydW5rCiszMjczMyBmNTc3NTFmZmQ2ZTc4YWJlY2NmZGEzZTY1YTA1NThjMjA0NjQyMTViIGxlZ2FjeS10cnVuaworMzI3MzQgNDM3YmNkNTJjYzA0NWNmNjM2NjBjYmRhOGYwOTU3MDY1M2JjZjM4NiBsZWdhY3ktdHJ1bmsKKzMyNzM1IGZmMTM2ZmVmNzIzMWM0N2Y0NGYwMjFlNWQwYjZjNWUyMTM5ZDRiYmQgbGVnYWN5LXRydW5rCiszMjczNiA1NDBhNzcyMDI4ZDI2YTUzOWM0Y2JjM2QwZTM3YWRkYTVmOTIyYzRhIHJlbGVhc2UyMi1tYWludAorMzI3MzcgNzA3ZTVmODljMjExYjBkNWVmMWVmYWI2YWE1ZmJiZmQ2MjUyMmE0NyBsZWdhY3ktdHJ1bmsKKzMyNzM4IGNlMWQ3ZTEwZjQ5ZTlkMGNhNjYzMmFlMmZjYjJhMzBjNDhmOTBiOWYgbGVnYWN5LXRydW5rCiszMjczOSA1YTBiYjZlYWE3NzYxODgwYTlkMTFhNDk4NjUxNDZiMTZhNTA5ODhjIGxlZ2FjeS10cnVuaworMzI3NDAgNDMyYWRkODRlMDYyZGNhOTdiY2JlNzAxYjlhZTllNWZhZWM4MWFiYyBsZWdhY3ktdHJ1bmsKKzMyNzQxIDUyNmYzN2ZiMzgwZDg2NDcwNGY0NWEyOGZiMGU4MTY0YWMyOGVjNTEgbGVnYWN5LXRydW5rCiszMjc0MiA0YjJlMDVjMTc1NGU2ZDMzNGI3MGIyMWIxNjkzNzg1OGExMWQ0ZDY1IHJlbGVhc2UyMi1tYWludAorMzI3NDMgYTU3MWE5ZDYyNTdhMmFkMWFkMDU3ZTEzNTRiZjMxZTM2MmI2ZjJjZiBsZWdhY3ktdHJ1bmsKKzMyNzQ0IDViZjk2MTg2ZGIzMWM1Mzk4MmU0MjgyOTQyYTllOTIxZTFkNTU2NjMgbGVnYWN5LXRydW5rCiszMjc0NSAyMjA2MDAwNGI5NGFlZWZhMDhhNTk1OTZlMTFmMjBhY2RhZDFjYTEzIGxlZ2FjeS10cnVuaworMzI3NDYgNGFlM2MyZDk4ODkwYmQ4OTc0NjFkY2I4N2I1OGZhMDBjODY3Njk0NCBsZWdhY3ktdHJ1bmsKKzMyNzQ3IGExZDU2MzE5ZWYwZWIzODQwNzMxM2UzNDA4YjIyOGExNjdlNmM0ODggbGVnYWN5LXRydW5rCiszMjc0OCAyMmI4OTBkMTU3ZjdkYjFiNjZmYzNiNWI3OWY4Zjc3NzViM2E2MDNiIGxlZ2FjeS10cnVuaworMzI3NDkgYzVlOTY1NWViZWQ3MmI5MGVkNTJmYjdkNGJiNjg4Mjg5YzNkYzk5ZSBsZWdhY3ktdHJ1bmsKKzMyNzUwIDNjZDVhZWM1OWVkMjNkYTVlYzY0ZDQwMTc2MThmZWE3OGFiMmJlNmQgbGVnYWN5LXRydW5rCiszMjc1MSBlOGI1NzA5MDUyZTI1YTJkMDEwZmJlZDUwNWIzOWRhZjJlYzUxMDdkIGxlZ2FjeS10cnVuaworMzI3NTIgMjQ4MDk2YTQ1NzMyYzFhMDUxNTM1NzMwZjQ0ZTEwOTE1NGE4NDNiYSBsZWdhY3ktdHJ1bmsKKzMyNzUzIDVjZTYyOTY0MjE1NTllMWQ2MmIwZWFjOGRiYjJiZGE5YTA2YTg2ZWYgbGVnYWN5LXRydW5rCiszMjc1NCAzNGQ2M2I4YzI3NWJiOWMzMDQwN2Q1NWZkYjljN2I5YTAzZmViYTZjIGxlZ2FjeS10cnVuaworMzI3NTUgMzJlNzBhZDc5ZjY2ZDBjZjg3YjQ4ZmIyMzU1MDViYjIxZjY1ZDdkNSBsZWdhY3ktdHJ1bmsKKzMyNzU2IDdhMWFlNDc1ZTBkYWQ1ZmZhOWI4ZTZkNGY5OTRmYWJkNjRjYjdiNDggbGVnYWN5LXRydW5rCiszMjc1NyA2NGE5ZTFiZTMyNTEzZDU4OWZhNDAxOGQ1NDYzZjExMzQxNjg4NTViIGxlZ2FjeS10cnVuaworMzI3NTggYTVlOTllN2U3ZmYwMzNkYjg1YzVlY2NiNWNjODEyNGEyZDEzNmY0NCBsZWdhY3ktdHJ1bmsKKzMyNzU5IDE5YzQxNDE4NmI5ZTUwNWIxNzI1ZjgwN2ExMWUwZmFhNzE0ZjkxZTggbGVnYWN5LXRydW5rCiszMjc2MCA5MWRlM2EwOTI0YTI5OGFkOTUyOGI0ZjM1NGFkMjg5Njg1ZTAxY2Y1IGxlZ2FjeS10cnVuaworMzI3NjEgOTNjOTJmMjBiNmJmYjZkZDAyNTYzMDVmYzMyY2U4MDg3OTUwZTY1YSBsZWdhY3ktdHJ1bmsKKzMyNzYyIGNiMDAyNTQ1MTQ4MmJjMzY3YmFlM2E5ZTAwZTgwOGU0MTUxZjlmMTggbGVnYWN5LXRydW5rCiszMjc2MyBjMDZiZjZiMmIxOWQ5MDJjZjhhYjllZmFlZTFjMmJhZTkxYWI3ODc3IGxlZ2FjeS10cnVuaworMzI3NjQgZDZiYTgxOWEyZjkwMTNiNThhZWI4NTFmZTdjMWE5OTI0YjQ0ZmUwZiBsZWdhY3ktdHJ1bmsKKzMyNzY1IGY0ZDQwNmFjZjFjYTBiZDU0ZGI4ZDc4ZjNiZWNjYTc0M2E4ZWQ2MTkgbGVnYWN5LXRydW5rCiszMjc2NiA4NTQwNjA0NWYwMTRkZDlkZGUyODVlNTg3MjJjMjM2ODdmYTQwN2Q5IGxlZ2FjeS10cnVuaworMzI3NjcgNTIzNzJkYzE5MGZjZmJmYTA3NWU3NTQ1MmNhYzNjMGU2NTg4OGM2YyBsZWdhY3ktdHJ1bmsKKzMyNzY4IDRiMDIyMDI2MGY2MmUxZjRiNjQ5NDBhOWNlZTVjMjg2NDUxOTQ0ZmYgbGVnYWN5LXRydW5rCiszMjc2OSA0Zjg3YTg0ZTliZWJiMjlmYjBkZDg3NmZkNzljNTRiYzAwM2UwN2NjIGxlZ2FjeS10cnVuaworMzI3NzAgMjQ3ODZjMzEzMGNhODc2ZGM0YTU5Y2VkY2E4OTY5ODNmNTk4NWFiNyBsZWdhY3ktdHJ1bmsKKzMyNzcxIDZhYzBhNjcyYjA4MjEzZmVlNzA4NTg5NzQwYjYxOGZmZmU5NDFkODYgbGVnYWN5LXRydW5rCiszMjc3MiBkN2FjMWE2NDBkOGY5YzAwY2E2MjIyNGRmYmVhODYzNWNjMDE3ZWU4IGxlZ2FjeS10cnVuaworMzI3NzMgNzg3NWZjYWFlN2EzNzEyZjFlNGJmZjhlMzc4ZWJkZjcxZjE4YjljZSBsZWdhY3ktdHJ1bmsKKzMyNzc0IGFkZGQ0MzdiZTc0OTIxNjI3ZGNhOTg5MzY1YTY3MjM2MzE2MDE5OGMgbGVnYWN5LXRydW5rCiszMjc3NSAyOWYxOTQ2MGYwNjc4NTVjNmRhZDc0YTUyZTgwZDkyODQ5ZWYwOGQ2IGxlZ2FjeS10cnVuaworMzI3NzYgYzdkZmRhOTkzYjJmYWVkYTMyYzA3OWViMTY5MmVhYzQ0Yjc0OWU1ZSBsZWdhY3ktdHJ1bmsKKzMyNzc3IGNmZjZiOGY0MjJkMTdhNjYwY2EyMTc1ZDE3MWRiOGE5MmZjOTE5YjkgbGVnYWN5LXRydW5rCiszMjc3OCA3ZjU5ZGNlOGY4YzBkNDI0OTEzMWEwMjhkYjk3ZGJmMjQzNGJjZmU0IGxlZ2FjeS10cnVuaworMzI3NzkgOTJlNTNjOGU3YTcyNDNiMjE0M2ZhODdhY2RlZTMxNzBiYTNhYWM3OSBsZWdhY3ktdHJ1bmsKKzMyNzgwIDZkOTMzMzA3NzYxYzAxNTU5ZjljMGE0MjBiNmI4YTA2ZTFkMjE4N2YgbGVnYWN5LXRydW5rCiszMjc4MSBlNjY5MWNlOTFiOWZkOWU1OTg5N2Y0ZGVkMjVhZjFjMDRkZDAwNjA1IHJlbGVhc2UyMi1tYWludAorMzI3ODIgNTJhZWJjMTQwMDY4N2QzNDY2OGFmZmU5YzQ3NjU4OTVkODgyNjE0YyBsZWdhY3ktdHJ1bmsKKzMyNzgzIGNmMzM4NjMzYjA3NDZjMGFlYmNmYTAxNTZiMGE3ODdkMDk5NjFhODMgbGVnYWN5LXRydW5rCiszMjc4NCA0Y2JmNzdlZGVlZDUyNzkyYjExNzMzMWIzM2QwNWY0ZGMwNTVmOGQ0IGxlZ2FjeS10cnVuaworMzI3ODUgOTg3NmIxOGVkY2FiNDA2MDhhYWFlNjdiM2MyNDM5NWRkYTljNWY3OCBsZWdhY3ktdHJ1bmsKKzMyNzg2IDY2YWExMDVjOGQxNzk4YjE5N2IzYzc2MjJkNmE5YWM5ZTdkMmJlMjQgbGVnYWN5LXRydW5rCiszMjc4NyA2MGU3M2M1MDVjZjJjMWMyOWI2MTdlNTZjMmUxODRmNzk2N2QwMTE3IGxlZ2FjeS10cnVuaworMzI3ODggNTNkZDhjNDI2M2ZkMzFkZmE5OWUyZTZhNTUxZDc1OTgxMjU0MGRiYiBsZWdhY3ktdHJ1bmsKKzMyNzg5IDJjMzU5MmQxMmQ2OTRlM2FiODM1MTk2YTIxNWQyMTIxZWQzMzI2YmQgbGVnYWN5LXRydW5rCiszMjc5MCBjMWU4M2I4ZDViNzBmZWRlNTJiNTczMjFiOTk4MzJkZjk2NTVhZmQ5IGxlZ2FjeS10cnVuaworMzI3OTEgZTlmOWExOTZmZGVmZTRmNzJlODc2MGJhYjA0MTk2MGY0NjI0N2RlNiByZWxlYXNlMjItbWFpbnQKKzMyNzkyIGMzMTBmOWRkZmRjYmRiMWE3YjU1M2IxZjI4MDkzZTVjMjlhMzk0MzggbGVnYWN5LXRydW5rCiszMjc5MyBhZTA0YTczYmY4ZmMxYmU3MTMwNTk3MDBjMDE0ZjFkODYwNjhiZTExIGxlZ2FjeS10cnVuaworMzI3OTQgZTU3ZTIyYWE1NmE0ODY3NzAzNWQ0YzA1ODIyNDViNGEzNGFkODZhMSBsZWdhY3ktdHJ1bmsKKzMyNzk1IGY5MzUxMmYxZTIwZmYxNmU1NWM0MzhiYTU5MGM2YTM4ZjhiMjQ5OWQgbGVnYWN5LXRydW5rCiszMjc5NiA1ZGExOTg0ODBiNmE3NmZlMzhhMWE2NmE2MWEzZDAyNzk1ZGViYmU1IGxlZ2FjeS10cnVuaworMzI3OTcgNDMzMmYyMDUzM2ZjZGYzZWE5NGYyNjBjN2IzYzgwMDQzNzlhY2RhMiBsZWdhY3ktdHJ1bmsKKzMyNzk4IDY5MzE1NWNkYWUwM2Y4MjEwYjQ5ODVkODkzYTQ3MTIwNWQ4MDlhNTQgcmVsZWFzZTIyLW1haW50CiszMjc5OSBlNmUxMDBlZmJjN2QzMWVhNDFhNDFiNDA3YmJmZGExM2YxY2Y2YjZjIGxlZ2FjeS10cnVuaworMzI4MDAgMmJmMjg5MDRhOGVjYWE1MzBhMTU3MzJjMmYxMzJkMzk2ZjQzNmFiYyBsZWdhY3ktdHJ1bmsKKzMyODAxIGI2MTkxY2E4ZWQ4MDcxNTkyYmJjOGUzMmUwNDFkNzcxYmYyYmVlMjMgbGVnYWN5LXRydW5rCiszMjgwMiBiYzUyMTY4OTYzYjMyMWQwY2U4YWJlMTM1NWI3OWUwNTVlNjRlOGZmIGxlZ2FjeS10cnVuaworMzI4MDMgZWYzZWY4OGUzNjE0ZjZhMTI3MGJjM2MwODQ5Mjc2ZDdkZDFkYmUwYyBsZWdhY3ktdHJ1bmsKKzMyODA0IDZjMzBiYjNlMzMyNTc3YzQzZTg1ZGFjNWRiZTE2NjY0NmYwMzgyMTcgcmVsZWFzZTIyLW1haW50CiszMjgwNSA4YmU5YTMxNmViOWRlMTY1YzU0MjhmN2MxYWFkNjU2OTI3OTk4Yzk2IGxlZ2FjeS10cnVuaworMzI4MDYgMjk4MmU2MTgyNTY2MWVmMWI5Yjk2YzEwYjkyY2ExZGE2ZjUwZDBlZiBsZWdhY3ktdHJ1bmsKKzMyODA3IDE2NzIxZDczYWQyOTNiZDkyNzFmZTZiYTY4NjE1NzAyMTE2YTU1YTkgbGVnYWN5LXRydW5rCiszMjgwOCA1ZTZkMGRjZjE1NWY4NzM0ZThlMGYyNGEyN2VhNjEyMTMyYmU0ZTRmIGxlZ2FjeS10cnVuaworMzI4MDkgNDZmYzNmOGU5ZWVlMzM5YzVmYzgyMzczZjAyZmY1OTE3YzIwMGNkMyBsZWdhY3ktdHJ1bmsKKzMyODEwIDlkOGRlNTY1ZTVkZWFjZGM3YzUzNTlhZWU5MTJjOTBiNDJiN2MxYTEgbGVnYWN5LXRydW5rCiszMjgxMSA3ZjAwNzRlZThhYjk5NTMyOTc4MTc5MmY5Y2Y0OTMyOGNmNDJhZjAxIGxlZ2FjeS10cnVuaworMzI4MTIgMDAxZDNjN2U5NjM3MGM2NWNhODNkZGFhN2NmMDFhYWZhY2IzZDVhNCBsZWdhY3ktdHJ1bmsKKzMyODEzIDUzMmRlMTkzMzJhNDc5MzEwNzc5YjM5ODhmYjlmNWU0OWRmMGMwOTkgbGVnYWN5LXRydW5rCiszMjgxNCA0YzFkMWIzNTlmMDY2OWM4YTVmYzUxODBiZDkyMTBkNDQxMDdlYjNhIGxlZ2FjeS10cnVuaworMzI4MTUgMWQ0ZWM1MmIzMTZjMGI4MGQyYTcyNWZhM2Y4ZTBlYWY2OGEyYjY1MyBsZWdhY3ktdHJ1bmsKKzMyODE2IDM4NGJkYTM0MzcyNWEwZGVkMGRjZGYyODAxN2Q0NmRhY2Y4Y2ZlYjQgbGVnYWN5LXRydW5rCiszMjgxNyAyYmI1Y2VlZjlhYzNjMmQyMjE0N2ZiYmIwN2JiMWM2ODQyYTZjMDlmIGxlZ2FjeS10cnVuaworMzI4MTggNGQ5MDE3ZWY3YjVmMzExMDg5OWM5ZDQ0YTNiNGYxNjNmMTA2ZGU3MiBsZWdhY3ktdHJ1bmsKKzMyODE5IDNmOWFhNmYxYWVmMDhjNGQyMmU2MjE4MmY2NTk5ODg4OWM3ZTZmNGYgbGVnYWN5LXRydW5rCiszMjgyMCA4OWI0ZThlMmMyMzBjYmU4NWYwNjQ0MWQ0YmQwYTZiMDdkNDUxY2YzIHJlbGVhc2UyMi1tYWludAorMzI4MjEgNjQzZjNhYzQzMGJlODdkYzRlMTBiOTQ0NzM5OGZhYzM2YTE1NjU4MyByZWxlYXNlMjItbWFpbnQKKzMyODIyIDY1NDVlNzQ5ODYzNWVjMjE5ZGIwYjBmNjhlMDdhZmM2ZGEyZTU4MWQgbGVnYWN5LXRydW5rCiszMjgyMyA0MzRlZjE3NGY0Nzg2MjM4MjliNjk5M2EwNTdhODc3NTAxMDQ0MjcwIGxlZ2FjeS10cnVuaworMzI4MjQgZjBiNjc3MzFlNTQ1YjViOTQ0NzNjNGFkMzdjM2IyZDI0YmExODBjNyBsZWdhY3ktdHJ1bmsKKzMyODI1IDljZjA5ZjkyYjE5OGJlZGNlZjg0MjdhYTA4ZmM3YzcxMTAwM2RmMzMgbGVnYWN5LXRydW5rCiszMjgyNiA5YWUxN2IzNzc5YmJiMDJkMGYyNGE5YjRiOTNmMmZiZTBjNDIxMzRhIGxlZ2FjeS10cnVuaworMzI4MjcgNDIxZmZkN2M1N2FmZWVhNzM4MDIzYWRjMTUyYWUxMjhmYzI3MjcwMCBsZWdhY3ktdHJ1bmsKKzMyODI4IGVmZTVkZDYwY2VlODhhYmY3Y2Y1ODZkY2EyYjQxZWEwOGQ5YTIwZTkgcmVsZWFzZTIyLW1haW50CiszMjgyOSA0NWY3ZGU3ZjEwNTJjOGIwMWNmNmFkY2UzNDAyMDJkODYxZjczNjBjIHJlbGVhc2UyMi1tYWludAorMzI4MzAgNTcwYTdiOGFhMTU0MjE2NTY1YzcyZWYzNTc5YjUxODI2YzY0YTFhYyByZWxlYXNlMjItbWFpbnQKKzMyODMxIDRmNTMxY2RmMjQyZThhYzJmOTFlY2I5ZTczZGFmMDgzNDM2YWRjNTIgbGVnYWN5LXRydW5rCiszMjgzMiAxZGM3YzBhMDIwZDNkN2UzNWI3MmExMWIwNDhlZGZhNDc0ODc0YmZkIGxlZ2FjeS10cnVuaworMzI4MzMgNmU5NWFkZDkyYzk5YmFiOGYzYzBmZDcyMTE4NzQwZDAyYmU3M2MxYSBsZWdhY3ktdHJ1bmsKKzMyODM0IDQ2MzAwYjlhZjAyYjk0ZGFkY2U1MjE0YmQ5ZTZkMjdhZDRkMmY2ZjggbGVnYWN5LXRydW5rCiszMjgzNSBmNDc1YmVjMzE2OTU1MTQ0NWM3ZWI1ZDhlNDA5NjQzYmJlYjAzOWQ1IHJlbGVhc2UyMi1tYWludAorMzI4MzYgMDU0ZDliYzBkODYwOGFiNzM0NGQwNmFkNjAxYWQ3MTZjMGRhOTVlOCByZWxlYXNlMjItbWFpbnQKKzMyODM3IGYzOWMyNzFhOWE4ZTZjMjI4YTQxMDk0MDQyZDQ0YzRkYmIxYWRlYjggbGVnYWN5LXRydW5rCiszMjgzOCA5YWEwNmNiZDljYzFhMzA3YzRjOWM5MmRjOWYzMDE2OGM2NTY1N2RjIGxlZ2FjeS10cnVuaworMzI4MzkgYzdmNmY3Mzc0M2IwOGI0OGIzM2ZhNDdjNGE4NzlkYWIwMjc1OWFjZCByZWxlYXNlMjItbWFpbnQKKzMyODQwIDJhYWEzOWVkYzUxMWU3ZDMwMGJhMjEzNDYzNzdkYzE4OGQzZTE3YmYgbGVnYWN5LXRydW5rCiszMjg0MSA4OTZiYmQwODA2ZThmM2YyMGJiZDU3ODFiNzJmZjJhZmYzOWRhMjNjIGxlZ2FjeS10cnVuaworMzI4NDIgYmVlM2QxYTFiOWE5YTNjYjE1NWI3NjYxNTgyOGNiNTFlNjhiZjgyMyBsZWdhY3ktdHJ1bmsKKzMyODQzIDRiMWMxNTBkMDdkOGM1YjA0MWJiMzVkNWFkYjcxMDNhZjhhNDZjMTEgbGVnYWN5LXRydW5rCiszMjg0NCAyMjdjNjY0NmNjNmJiNWIxYTJiNGJlYjE1YjFlYjhkNmIxZTdiZTMzIGxlZ2FjeS10cnVuaworMzI4NDUgMTI5N2Q0MDUxNTViZDM2ZDE1N2U2YTFkY2NhN2I5NzExOTNkZTVmMiBsZWdhY3ktdHJ1bmsKKzMyODQ2IDliMjQyNTA2ZDZkYzdkNDdmM2RiOGQ2NzViZTczMjc2MzQzMmRkOWEgbGVnYWN5LXRydW5rCiszMjg0NyBkNjY1YzZiOThjZDI0MWJhNjdkYWFhNjJhZmE1YjUzN2Q3NTkxNzM5IHJlbGVhc2UyMi1tYWludAorMzI4NDggODEyOTZhODBhMTVmMmUyMDViN2M5ZDM3YjdiNGUwZTM0MzcxNTA5NyByZWxlYXNlMjItbWFpbnQKKzMyODQ5IDZkNmJkYTI1NDliNmJkNDYwZDViMzRmMGU0ZWZiMjViODk0NjkwMDIgcmVsZWFzZTIyLW1haW50CiszMjg1MCBhOTIxMGJlYzNiNWFmOTI3NDkxNjY3MjRmY2MxMzA4OTNhY2JmNDU4IHJlbGVhc2UyMi1tYWludAorMzI4NTEgMGE5N2FkYzZhNDdlYjI0NWNjOWE3ZWMyMmI0ZTI5NDc3M2ZhZmEzMiByZWxlYXNlMjItbWFpbnQKKzMyODUyIGI5NzYyZjAwM2YzMDhkMTc1MjczMWFlM2ZiYmVmMzBmMWNmMWY5N2YgbGVnYWN5LXRydW5rCiszMjg1MyBjZDFjODI2Yzk4YTJiZmJjZTRhYWVkYjViMWYwMDljYjNiZGIwNzVkIGxlZ2FjeS10cnVuaworMzI4NTQgMzYxZmFkNjMzMzJkZDI0OTA1ZDIyODM5ZjBmYjY2MmNkZGRkOWY2OSByZWxlYXNlMjItbWFpbnQKKzMyODU1IDc1NGZkMzRhZDk3ODRlMmM3N2U3MTY3OWI1YzQ2NmZlM2Y5MjBhNmMgbGVnYWN5LXRydW5rCiszMjg1NiBmNmU5MWNhNTZhNDk4YzdmNjBiNTlmZDc4MjBjMjFjZGNiODgxNzFiIGxlZ2FjeS10cnVuaworMzI4NTcgMzE1YTc0NzI3N2JmZTc2ZDU4Mzk1Mzc4ZTllMTA0YjU5YWEwYjQ3NiBsZWdhY3ktdHJ1bmsKKzMyODU4IGIxZjY0MzY5MGE4ODdjZTIxZWRlNjhiMmYyZTljMTc0YmJhZmYxNTYgbGVnYWN5LXRydW5rCiszMjg1OSA1NmZmY2EwMmM4MjQzYjM1MWZlNzQyNDMyZjE5NWQ2OGZlZTY3Mzk2IGxlZ2FjeS10cnVuaworMzI4NjAgZTcwOTQzOTMzNzM5ZWZjYTY5MDY0ZTFlZDJiMDA4MjUwZDlmYjQ2YiByZWxlYXNlMjItbWFpbnQKKzMyODYxIDVlY2M0OGFkNjYzNDAwMGU3ZWQ2M2M0MDViMWY1YjZmYzAzNjNlNjEgcmVsZWFzZTIyLW1haW50CiszMjg2MiBmZjliYTNkMWUyODBjYzYyMTczYzQ4YWUyZTZiYmVkYzQxYWRkNjc2IGxlZ2FjeS10cnVuaworMzI4NjMgZGEyYzVkOWRkNjBlMDdlMzMzNDM4MjgzMmVhNzcxYzYyMTgwYzBkMSByZWxlYXNlMjItbWFpbnQKKzMyODY0IDM1YjI3NjliMDJiNjM0MDk5ODY1MjE3MjIxNDliYjAyNDkzYzk4NGYgcmVsZWFzZTIyLW1haW50CiszMjg2NSBlNWFmZjA2MDM3Yjc5NGU2ZWVhODY3YjFhZDNlZDE3OGQ5NTljMDY1IHJlbGVhc2UyMi1tYWludAorMzI4NjYgZDljZjUzNmM1MzQwY2VkZGU3ZjU3ZTdmZWY0MmFkYWVjZWFmMjU4OSBsZWdhY3ktdHJ1bmsKKzMyODY3IDU4NGRjNDZjYTA2NmRhMDM4M2MyZGRlNjQ4ODBlMjAxODA1OGE4YmYgbGVnYWN5LXRydW5rCiszMjg2OCA2NDYyMjE2ZmUzYTg3YWJjMGFkNTk1MTk2YWUyYmM5M2RlMTY4MzZlIHJlbGVhc2UyMi1tYWludAorMzI4NjkgNGJhYzRkMGQzZTNlZDFiMjg4NzdiNzk1MzZjYzBmNTNjN2RiZjhjZCByZWxlYXNlMjItbWFpbnQKKzMyODcwIDY5OTc0NjYzMzI0NmM3Mjk2ZTUyMmQ2ZWRjMDQ0MzJmYjdlM2MyNjUgbGVnYWN5LXRydW5rCiszMjg3MSBmMDViYWU0MTJiNzFiMjQ1NzA3ZjAzNzEyMWUxYTcxYzlhMWM2MmE3IHJlbGVhc2UyMi1tYWludAorMzI4NzIgOTg1NjcwNjUwNjRiN2JiNTk3YjIzMTA4ZDA4YzIwYzY2ZmU2ZTI0OSByZWxlYXNlMjItbWFpbnQKKzMyODczIDA1MjNmMDliYjM0ODY3NTZiN2VlOWUzMjBiNDgyMTU2NTY2OWJlZWMgbGVnYWN5LXRydW5rCiszMjg3NCA4NTYwYjE0NmY0MWYxZDA3YzI2NzI0MjM0OTkxYjY1NTIwZjE4NzlhIHJlbGVhc2UyMi1tYWludAorMzI4NzUgZjE1NjI2Yzc2NDE4NjczOWU3MTRkYjlkMTFhZjYyZWQzMWQ5Njg5OSBsZWdhY3ktdHJ1bmsKKzMyODc2IDI3ZWMxNDcxZGNiNmE5MmYyYTExOTExNWE1ODYwNjVmYWM2MzZmMmMgcmVsZWFzZTIyLW1haW50CiszMjg3NyBlYTI5NThiZDQyNzFmZjE2NjM2MmZlYTlkNWY4ZDYwYzczNWFhODAxIGxlZ2FjeS10cnVuaworMzI4NzggODU4ZDU2OGViZjc2MzExMDdhMWVkMThiNDBiM2IxMGJmYTViZTFkYSBsZWdhY3ktdHJ1bmsKKzMyODc5IGYzZjMwNjQ1N2I0MzBlYTE5ZDdkZTc5NDZiN2I3YmI4NTE0NTBmMDkgbGVnYWN5LXRydW5rCiszMjg4MCAzYWFmMjRiOTQ5ZGZiNjIwOTE1YzY5MDUzYzhkNjdjYzdkYzUxMzU4IHJlbGVhc2UyMi1tYWludAorMzI4ODEgMDUyYzYyNjNkZjI2OWEyNjRjMjE4NGZkODM4Y2I2ZGE0M2UyNjM5MSBsZWdhY3ktdHJ1bmsKKzMyODgyIDEwOGExMDA2YTkwNTNhNGZjMzZjMTEyMDViZTY4MTUzNjE3MDVkYWMgcmVsZWFzZTIyLW1haW50CiszMjg4MyBmN2RmYWVhYTRhYjk4OGE1NDZhZWUyYThkYjFhZmVlYjM3Zjk2N2QwIHJlbGVhc2UyMi1tYWludAorMzI4ODQgYmQ4MjE2MWI2MWU1NTY5NDZiMjQ4YTIwOTM2Y2E3NTljNmNlNmU3MSBsZWdhY3ktdHJ1bmsKKzMyODg1IDY3ZDU2MGQ2MDhjZWQ3NmFmZTFlMWI0NTcyZGJlMjM2ZDk2YTZhMmQgcmVsZWFzZTIyLW1haW50CiszMjg4NiA4NTZjODFmNzEyMTNkYTIzZTk2MDRmYmM4ZWY5ZmFlOTFkOWI3MDIwIHJlbGVhc2UyMi1tYWludAorMzI4ODcgZWFmOTBlODUwZDEyZTlmZjEwN2I1ZmIyZDQ1NDM0Zjc5ZjdmYmUyMCByZWxlYXNlMjItbWFpbnQKKzMyODg4IDM3N2EyOWY2ZDY4NzkzZDY4N2IxOTdlZjdlMzJiZDE4MzY0NzAyM2YgcmVsZWFzZTIyLW1haW50CiszMjg4OSBmM2QxZWQxNDExODgyZDU4ZTFjOTkyOTE1NzIwMDk1ODc2ODE2YWQxIHJlbGVhc2UyMi1tYWludAorMzI4ODkgYWM3N2I5MTM0MjUzNGQwOWIxZTQzMmUxZGMzYjcwZGJiZWMzYTkxOSByZWxlYXNlMjItbWFpbnQKKzMyODkxIDA2ODUyOWE5MDk5MjZkNGY2MDNjZjBiNmQ2YTBkNGEzMzQ0YWRkZmYgbGVnYWN5LXRydW5rCiszMjg5MiA3NTJmYzVlYTE2YjliZDEzZmIxNjQwMWQyNjIwYWY1NTk5MDkzNWJjIGxlZ2FjeS10cnVuaworMzI4OTMgMzVkNzAwZDkwMTVlMDU4ODhjYjBjZDliNjc2Yjg0YWJiNmU1ZjZmOSBsZWdhY3ktdHJ1bmsKKzMyODk0IGU3MjEwMjVjY2EwOTM5ZmE2NWUyYzM2ZGMyNjQwNGZmNDBkZmU2OWYgbGVnYWN5LXRydW5rCiszMjg5NSAzODdkN2MyMjE2YTE2OWI2YzY2ZDg0ZjhlNDFiMjM0OGNmYTYzMGNhIHJlbGVhc2UyMi1tYWludAorMzI4OTYgZDcyYWQwN2M3MzllYTJjOGUzNTYwMWY5NzYyZjkzMmM1ZTk3NjUyYiBsZWdhY3ktdHJ1bmsKKzMyODk3IDY0MjI3ZjhkZTdkYWMxMDU4NDA0NDU2Y2RmZTRjZTExM2Y0NTE2ZjIgbGVnYWN5LXRydW5rCiszMjg5OCAyM2FkOGI1ZDdiNGEwZWYzNjg5NzRkMzA2ZTE2ZTllNGYwNWI0OGQ2IGxlZ2FjeS10cnVuaworMzI4OTkgY2EwYzgxMzdkZTg0NDU1ZWFmZTE5MjQ4NTMyMTY2N2Q3MWIwY2RkYSBsZWdhY3ktdHJ1bmsKKzMyOTAwIDM5Yjg3MTY3ODQ2NzUzZDIyNTUwMzEwZThlNWI5ODdkZGUyNmMwMDYgbGVnYWN5LXRydW5rCiszMjkwMSAxYzMyZDQyMDc0MDRhODY0NDVmMTkwZTA0NGYxNzFiNzU5ZjU2Yjg1IHJlbGVhc2UyMi1tYWludAorMzI5MDIgMmY0Mjg3NWQ5MzdmMjRkNTRkNzk5YWY3NzMyOWQzMTdlMWFjZGNjZCBsZWdhY3ktdHJ1bmsKKzMyOTAzIDg5M2FlNTI2Njc3NjUzZjMwYTM1ZWRhZWI1NzM0NDU4YmUwMTUzOGMgbGVnYWN5LXRydW5rCiszMjkwNCAzNDYwOWZhMzViMTFjMTdmYjUzYTUzNDlmMjIwZTA0MDlmYmY3ODk4IGxlZ2FjeS10cnVuaworMzI5MDUgM2E4YjFkMTZiN2M2Y2RjZGI1NTJhZDE0ZGNmZWFjNzA4NjVlYjNmMSBsZWdhY3ktdHJ1bmsKKzMyOTA2IDBiNzY2NzliZjNmOThiNzc0MWNmYThlODY1MmQ2OTU3NTY2MzQyZjggbGVnYWN5LXRydW5rCiszMjkwNyBiNGM5MmU5ODAzYTYyMTIzNGRiNmViNDljNmYyNGRjNzNmNmIyMDZhIGxlZ2FjeS10cnVuaworMzI5MDggYmU3MGI4NDc3ZjQzZDA4YTY4Mjc5ODE4YWY4YTBiNjhmNGZlNmVlNiBsZWdhY3ktdHJ1bmsKKzMyOTA5IDM2ODliMDA1NWMyZGIyMjk2YTllOWE5OTdhYzJhNTA1MTkyZGNmZjMgbGVnYWN5LXRydW5rCiszMjkxMCBiOTA5ZmRmMGVkZjhkZGUwYzY3ODI4NTc3MDlhMmMwMzI3ZjFkNWVhIGxlZ2FjeS10cnVuaworMzI5MTEgZGVhMzgxMTZjMzczNTI2ZGM0NjZlMWM3Mjk4NjE1MDcxZGI3Y2E2NiBsZWdhY3ktdHJ1bmsKKzMyOTEyIDE4YzAyMDQ2Mzk2NWQwMjlkZjdjMTAzZmUzMGQ0YzhkZjQ5ZDY5NzYgbGVnYWN5LXRydW5rCiszMjkxMyBmMWU1Njc0ODUxOTQ0OGJjOWMwNGMyMDJhNGYzYmNmNjYyOWNmYWNmIGxlZ2FjeS10cnVuaworMzI5MTQgMTYxZjA1ZjQ2ODBkOWQzZDgyNzc1ZmM5YzkxYTEyZjA0NjdlOGY2NyBsZWdhY3ktdHJ1bmsKKzMyOTE1IDM0ZjQyZTM0NTBiNGQ2MmMzOTUyZTk2OGVlZmI4OGZhZTkyYjJiNmIgbGVnYWN5LXRydW5rCiszMjkxNiA3ZWE1NTBlY2Y0M2Q3NGVkNDMzYjUyOThkYWQ1MmJjYzAyZmQ1YjViIGxlZ2FjeS10cnVuaworMzI5MTcgNDVjNmJlMzU3MzNmZGQ2YWY4YmNhZDVjNzY5OWU3MGExMzhhYTdiYyBsZWdhY3ktdHJ1bmsKKzMyOTE4IGE5ZDc3OGJkOTY1MzY4ODMzZjI5N2NkY2ZkOGFhYzY5ZjEwN2M2NDkgbGVnYWN5LXRydW5rCiszMjkxOSA3NGRhNGQyZWFhZDM2NzliZWU3NWE0NzY1YjE0MDAwYjExMjlkZWZkIGxlZ2FjeS10cnVuaworMzI5MjAgZDIzZTkzMjBkMzUwMDJkNjhhOTg1YWYxMTMyMTgwMGU0NTE1YjQ4NiBsZWdhY3ktdHJ1bmsKKzMyOTIxIDNjNGQ5NWE0Y2UxNzdlN2JiZDlkODAwNmQ4NTc1N2E2M2Q3ZWUwNGYgbGVnYWN5LXRydW5rCiszMjkyMiA3ODg3ZmUzYTlhOGZmNmE5YTdhZDgyMTk0MGY1NmY1NjVlM2JkNjQ4IGxlZ2FjeS10cnVuaworMzI5MjMgYzU2MzM4ZTA4N2NhY2FmOGMwNDFmNmJkMGIwMWUyYTIwZTM1NDQxMSBsZWdhY3ktdHJ1bmsKKzMyOTI0IDA4NjMwOTE5YmY1MmIyZWM5MzRjMTA5NmVlMTE4NGI2YjFiNDA5N2IgbGVnYWN5LXRydW5rCiszMjkyNSA4ZjczZGYwOTk5NjczNDAyYTNiYzAwYzFlOGViODYzN2Q2YzBmZDVkIGxlZ2FjeS10cnVuaworMzI5MjYgYjdjZDFmZjAwMTliOWFkZWRjMzI5NmEyNjU4OGYzZTYzMmU5ZjQ2NiBsZWdhY3ktdHJ1bmsKKzMyOTI3IDg5NzgxMjMxOGZmNDFkNDk3MDJkODU3OGMwMDg4N2QyZDczN2QzMDMgbGVnYWN5LXRydW5rCiszMjkyOCBkZjgwYTViNjk1N2I1ZWU1YTcyNjNjYmNmNjhiMzQxMjI3MjJhMTIzIGxlZ2FjeS10cnVuaworMzI5MjkgYTA0M2FmNjA4ZTk0Y2M3MzExMjc5ODU5NWEzYTM5Y2ZjZjgwMTkyZCBsZWdhY3ktdHJ1bmsKKzMyOTMwIGZlYzdmMzNiNjk3YzE4NWE2OGU4NDIxY2ZiMmY3YjViNWVhODMxZmYgbGVnYWN5LXRydW5rCiszMjkzMSA2NjczMDUzZWRhZDNmM2Q5OGViMzEyOTBhMDg0M2JhNDBjZjY5ODBhIHJlbGVhc2UyMi1tYWludAorMzI5MzIgY2ZiYTc2Zjc3NjQzNThmZjI0OTFkNTEzNTU3MmJkNTBkM2I0YjM1YyBsZWdhY3ktdHJ1bmsKKzMyOTMzIGIzNzJiOTAzZDEwZTdhZGQzMjkzYTk3N2MwZTkxODczNTQ4NGRmM2EgbGVnYWN5LXRydW5rCiszMjkzNCA4ZjJjNWNmNjE3NjM5MDZjMzJmYzhkNjhkZWVhNmJkNzBkNTE5YmRhIGxlZ2FjeS10cnVuaworMzI5MzUgNDk5MmM2MGQ0MjJiMjhkMWZlYjZiMzNhYmI4ZjVhY2QxNjY1NTRhNSBsZWdhY3ktdHJ1bmsKKzMyOTM2IGMzMjVlOGYyMGQ2ZTk0MDk1ZjMwZTA3YTUwODBlYTUyMzE0YmM3YzkgbGVnYWN5LXRydW5rCiszMjkzNyA3ZjEzMGE0MzcwYzllMzRjNjVmZTllMTZhZWQzZWZmZDFhOGM5ZDFhIGxlZ2FjeS10cnVuaworMzI5MzggOGVlYjFkZjY5ZjM1NzUxNzQzYWUwN2ExNGU4NzA2ODI5NjQ4MGQ2NyBsZWdhY3ktdHJ1bmsKKzMyOTM5IDk0OWY0MTgyOWYzNmY0ZjdkM2ZhZjdkOTRjNTMyNmZhNDg4ODI0MjIgbGVnYWN5LXRydW5rCiszMjk0MCBhNWM4ZWNhNTRhZWIwMWYzMzA2ZTliZGVkODIxNzVmYTU4MjdkOGJkIGxlZ2FjeS10cnVuaworMzI5NDEgZGU0MWYzY2Q2NDc0NDUyMTRmY2YzZmJiNzk5MmMzMWI5NmZhMzhkMyBsZWdhY3ktdHJ1bmsKKzMyOTQyIDA0MzdjZjRiOWVlYzFlMmYwMjMzNDJjOWFlNmU3YjNjYjRlZDFhN2UgbGVnYWN5LXRydW5rCiszMjk0MyA4MTFhZDVmMmY3MDE0YzExZmVjYTU3YjJjOTczOTA1YzI3ZGJjNzQwIGxlZ2FjeS10cnVuaworMzI5NDQgYjViYWRkM2E4ZDRmMzkxOGZjOGFjNWUwMzA2ODk1MmY4YmE3OTg3YiBsZWdhY3ktdHJ1bmsKKzMyOTQ1IDcwNjI2YzU3M2VkNzFkZDliNmMxY2UyNWRmN2Y0NDVmZTMwZDE1MTggbGVnYWN5LXRydW5rCiszMjk0NiAyMTQ1MWY3NjA1OTYzMWNjYTk1ZjJlNWY3YWQ5ZDlhN2I4NTg3MjNkIGxlZ2FjeS10cnVuaworMzI5NDcgZThjNGMxNWY0NTllMzVlYzBjODhjNTViNjUyZjRjZTcxNDMyZGEyOSBsZWdhY3ktdHJ1bmsKKzMyOTQ4IGJkMzQ5OTk5Y2IwODI4ODk4ZDgwZWIxZGNiNWRkZWViOGEwZDYyNWQgcmVsZWFzZTIyLW1haW50CiszMjk0OSBkNDY0NTlkODJhNzkyNzhlNTkzODQ2YWY5MjIwNjdkMmNmMWU3MjY2IGxlZ2FjeS10cnVuaworMzI5NTAgN2Y3YTA3ODA0NmZiNWMxMGJmMzE3NzI3NTM0NzQ5MDQ3MmQxNjNiNSBsZWdhY3ktdHJ1bmsKKzMyOTUxIGMxZTgwZjJmMWM0NzFhMjNjZDc2NmI2MTYzZTc3OTNmYzU4NjJlM2MgbGVnYWN5LXRydW5rCiszMjk1MiBiNTQ3OGQxZGQ2N2VkZDlkNjZlOGFkMGU5ZDlmNjRjYmRjMmI3MDJlIGxlZ2FjeS10cnVuaworMzI5NTMgMGJlYjFhNjUxNDQzNTgwMmQwMzEzNGNhMDdiNTBhYjA5MzI3MDU3ZSBsZWdhY3ktdHJ1bmsKKzMyOTU0IDczMjgzNjY2NjAwMDMyM2ZlZjUyMzc3NTIxYTY2ZGUxNjkyNWJiMTQgbGVnYWN5LXRydW5rCiszMjk1NSA5OGFmZmRiYzQxNmM0MTA5OTRkNTU4ZDUwNjY3NzFiN2U1YzBkNWMzIGxlZ2FjeS10cnVuaworMzI5NTYgMDhhMWNiZGQwMzY3ZmQwMWIyNzM4Y2UzZWM1YmU1YTA3Njg4NzJmMSBsZWdhY3ktdHJ1bmsKKzMyOTU3IGUzYWVmZWJhNDExNjA5YTIyYzc1ZjkzNzAxNWE0YjFlYWNjOGVlY2MgbGVnYWN5LXRydW5rCiszMjk1OCA5OGQ4MTU5OWVjYTc0ZWMzM2ViZmRhYmZlZDk3ZTMwZWZiMjg3NDE1IGxlZ2FjeS10cnVuaworMzI5NTkgYzNhMDIwNzRjYmVlOWI2YWU4Mzg3OTgwNjI5NWIwODYwNzdmN2JjYSByZWxlYXNlMjItbWFpbnQKKzMyOTYwIGU2ZjhlMjY4N2M2ZmQ1NzUyNGVhNmQ1ZDhiYTY5YzExNTMyOTNhMjAgbGVnYWN5LXRydW5rCiszMjk2MSA2NDY4ZjBlMWY0YTg1YmJlZGJmNGM1Mzk1MmNiZmU3YjJhZWIxZmZiIHJlbGVhc2UyMi1tYWludAorMzI5NjIgYWQxZTY3YWM1NjdiODcyOTk0Y2JhOWU2YzhjNGEwZGE5MzUxMmMzNiBsZWdhY3ktdHJ1bmsKKzMyOTYzIDQ2Mjk0ZWRkYmE1NTEzYmJiNTQxNWIzMmFlODc4MTU1M2I4YjQxNDAgbGVnYWN5LXRydW5rCiszMjk2NCA2NzFlOWMzYWY0ZjM4NWZiODhlZGU3ZTY2N2NlMWJkNjRlNzU1ZTcyIHJlbGVhc2UyMi1tYWludAorMzI5NjUgZWQ3MDc3OWY2NDAyMWM5MGVmYmZjMDM4NzUyMmE1Y2UyMjI1MWNkYiBsZWdhY3ktdHJ1bmsKKzMyOTY2IGIxNzkyYTYxOGU2ZGJjYmUxMWU0MDc2M2RhZWQyZWJkOGVmMDExMzkgcmVsZWFzZTIyLW1haW50CiszMjk2NyBkYmNlNTU2Y2ZjOTZlOTA3MDlmNDQ2MzQwNzQ0NjI4MDEzOGRiMmU1IHJlbGVhc2UyMi1tYWludAorMzI5NjggNTFjZTY5YmRmNDE4NmU4MjAxNDc5NDFkZTQ3MTI5MjVhNTA0Y2M0MyByZWxlYXNlMjItbWFpbnQKKzMyOTY5IGMyOTFjYTI5NDllOTI2NDFlNmNmYWUyYzVkNjhmMDdjZmNiZTgwZmQgcmVsZWFzZTIyLW1haW50CiszMjk3MCAyNzJjNzViMWQyMmViYjA1ZmM3YmUyYjA1NzdlYTA4OTQ2ZWRiZDcwIHJlbGVhc2UyMi1tYWludAorMzI5NzEgZjQ0ZmJmNzRlYjYxZGMyOGMxN2ZmODQ1MDMzNTI2OWFmYjg4NmQwNyByZWxlYXNlMjItbWFpbnQKKzMyOTcyIGY3ZjQ2ZDY3M2M2MWM3MmNjOGNkMDkzYzAxN2ZlMGZmZDc0ZjJlMjAgcmVsZWFzZTIyLW1haW50CiszMjk3MyA2NWY3ZWZkMzVmMTE5MDFjNzBmNWM5N2IyYTlmZGQ3M2YzYTAwM2E1IHJlbGVhc2UyMi1tYWludAorMzI5NzQgYjMxYzg0YmExZjMxNDRmNTA0NzU2NWFmNDM3MTFiZDNhMGE2YzQyYyByZWxlYXNlMjItbWFpbnQKKzMyOTc1IDc3NDYyNjliOTUxY2RkNjJjZjY5MDhiY2E0YjEyNzU4MDVmN2UxMDMgbGVnYWN5LXRydW5rCiszMjk3NyBiZjJkYzBkMTcxNDg4MjdkNjBhNmZkMmM2OWZmNWJiZGY0ODM2YmNmIGxlZ2FjeS10cnVuaworMzI5NzggMTJmOWVhMzJmMjNhNTI5NzBiYjQ1OWVmMjY2OTlhNzNiZGUzMGZlOCByZWxlYXNlMjItbWFpbnQKKzMyOTc5IDAwOGNkMTAxMjY5ZGY2ODI5NjgwNGYzMTc0YmM5NTJjNzBiNGMwMjAgbGVnYWN5LXRydW5rCiszMjk4MCA3YmVjNjI4OTk4ZmU5ZTc1NzI2N2U1NmFiZGUzZGJhNjgwNjVmZThjIGxlZ2FjeS10cnVuaworMzI5ODEgZTk1MGFiYzMyOTIyN2FiNjgwMDU3NDcxMDBkY2VhNjc1MDkwNDI2NCBsZWdhY3ktdHJ1bmsKKzMyOTgyIDM2ODJhYTI3MTQxYjQ0MjJjZTZhZWY5ZWZlOWM5YmY3NDY5ZTQ0YzUgbGVnYWN5LXRydW5rCiszMjk4MyA4NzAwYTFjNzAxNmIxMGYwOTg4ZDliYWYzNjQxYWZiZGRjZDg3NTJlIGxlZ2FjeS10cnVuaworMzI5ODQgNjNhYjUwZWM0YTQ2NjE1YWYwZDQ2OTU3MTZmYzg4YTJhYzQ2NTNkYSByZWxlYXNlMjItbWFpbnQKKzMyOTg1IGU0NTgzZDE2NmNiY2Q3OTg2YmExYjRlMmEyMTA4MTI4ZTE5ZWMwODIgcmVsZWFzZTIyLW1haW50CiszMjk4NiAyOWFiMWM5MjNmNzU3MTBhMmI5NGRmMzgxYTdhMjMwNzRlMGZjMmE3IGxlZ2FjeS10cnVuaworMzI5ODcgNDdjNzI1YTMyYjBlYzEwZjhhYWU3ZTcwN2MxYTY3ZjlhNDNiZDViYSByZWxlYXNlMjItbWFpbnQKKzMyOTg4IGMwMDFiYjAwMDU1ODBkMmE1NjlhYjJlNzJlZGEyMjdhNmQ1ZmMwN2QgcmVsZWFzZTIyLW1haW50CiszMjk4OSA4M2EyZTcxMzNiMDEwNTUzYjU0NzU2MDU3Y2M3ODMxMTgzZGNhNWEyIHJlbGVhc2UyMi1tYWludAorMzI5OTAgODkwY2Q3YTIyMjNlZmI5Njg4NDYyYmVlNGI0Y2Q2OGJmYmY1OWY3NSByZWxlYXNlMjItbWFpbnQKKzMyOTkwIGY0ZjEzNGFkNDZhYmQwYmM5NzNkM2Y2MDk0ZWE1NmU2MmFjNWM0OTIgcmVsZWFzZTIyLW1haW50CiszMjk5MiBmOTQ5NTgxNWMxOGYzMTlkOTYyOWRmNGI3NDU2MjU5ZDY0NmI3ZTAzIGxlZ2FjeS10cnVuaworMzI5OTMgZjQwOWIzM2MyOWNlNDkyMDBlMzE5ODE3M2MzNzUyNTAzNTM0MTcwNCByZWxlYXNlMjItbWFpbnQKKzMyOTk0IGZjMjg2ZTI4NTU2ZjdkODZkZmY4ZmZiYzIwNWZiMzdlZTg1ZTM3MjEgbGVnYWN5LXRydW5rCiszMjk5NSBjNjlhZDkyMjdhZmQ0ZjkzMWI3NGNhNTY2MDJmZWVlZDIxN2RmYzlhIGxlZ2FjeS10cnVuaworMzI5OTYgNmFiY2I2OTBiNDdiNTRhN2E4YjU4NWJiMjE0Yzk0YTA3YzgzNTVmMSBsZWdhY3ktdHJ1bmsKKzMyOTk3IGQ4OWMwODM3ZjhmNDE4MzE1NWQyNTQ1ZmQ1NWQ4MDI2NGVlOGI0YzEgbGVnYWN5LXRydW5rCiszMjk5OCBlNGY3MGU2MDI1OThkNDhiYTJiNDI5ZDU3NWJlZGYyMzAyYjdiN2JiIGxlZ2FjeS10cnVuaworMzI5OTkgOTdmZDFmNDlmMDI2YWE1MDRjNWNhZjdhMDg2NzljZTY2OWUzMTA4ZiBsZWdhY3ktdHJ1bmsKKzMzMDAwIGIzNDU1YzRjMTc5ODg3NzhkNzhjYTViOThjYjhkNmM5NTk0OGVhMTMgbGVnYWN5LXRydW5rCiszMzAwMSA3NTQ5NGFlYTQ3Y2E3MjY1NDkxZWEyNDE3YTNjMDgyOWRhZWI1NDgzIGxlZ2FjeS10cnVuaworMzMwMDIgNDU4NWFiMGRhMDAzNzdiYWYwZTljYTBmZWNlYjBmZTM2ZDU1MDNhZSBsZWdhY3ktdHJ1bmsKKzMzMDAzIGY1ODkxNDU5YjgxM2VlMjQ0ZTVkNTNmYTZiMDg5M2RhNDlhMDRkOGIgbGVnYWN5LXRydW5rCiszMzAwNCAyZjczMWM1N2NkYzY4ZjU5NDBkMDNmOTkwOGM4YmM5NDg2Y2U0YTdhIGxlZ2FjeS10cnVuaworMzMwMDUgMjdiZDRjZDAyYmI4N2UzNzcxNTNiM2VlMjQ3MGNmMDMyMDE5MDRjOCBsZWdhY3ktdHJ1bmsKKzMzMDA2IGZiODRlMGVhYmFkNGU0YjNkMTY4MDM0M2I1YzZkYTI5ODAxN2VjNzAgbGVnYWN5LXRydW5rCiszMzAwNyAxYWU4YjY3NDA5MDY1MjA2NWNkZDhhZWU5MTQwYmNjYTQwNTNjOTY0IGxlZ2FjeS10cnVuaworMzMwMDggYjEzOTUwMTQ3MTRhZDdmMDZjZTJmYWRlNjFkOGVmNGExNTlmZWJhNyBsZWdhY3ktdHJ1bmsKKzMzMDA5IGI1MmUwYWQzMDU4NTg4MGU5MjY2NmEyNDc3MGYzN2RhZDQ2YWJiYjkgbGVnYWN5LXRydW5rCiszMzAxMSA1M2Q5YjRlZWM0Y2UwYTI4NGZiYzUwZmQyNTJlM2FiNTU2MmVjN2EwIGxlZ2FjeS10cnVuaworMzMwMTIgYTM2OTMzNjIyNGRkYTQ5NTM5YTFkY2Q2NDU5N2Q4MTI0YzVkNTZhNyBsZWdhY3ktdHJ1bmsKKzMzMDEzIDIwODk0ZGJjN2Y2YThhNTcxMjQ0MjUzYWVhMTcxNTgxODNmNDZmMjcgbGVnYWN5LXRydW5rCiszMzAxNCBiMWViMmE0NzU2YmNjMzI5M2U5MWJmMjcxY2E5NTk3NTBmYWJiNDRkIGxlZ2FjeS10cnVuaworMzMwMTUgZWQ5NDliODJmOTVkOWM4YTRiMTk3NGE0NDAwY2MxODFlMTAzNjY2NiBsZWdhY3ktdHJ1bmsKKzMzMDE2IDNmMTBhMjllMGU2YTFhZTAwNWM1ZjIwNWYwOTVjMzgzOTJlNTY5ZDcgbGVnYWN5LXRydW5rCiszMzAxNyBmZGFjOWI0ZDM3MTcyNTEzMjk5NzQ4YWZhM2I3OTQzMmY3ZTQzZjNjIGxlZ2FjeS10cnVuaworMzMwMTggZjgyYjZkMmI3M2YxMTEzNzBhOGM4NGQyOTNhODgzZDk5MmMzNjBmYyBsZWdhY3ktdHJ1bmsKKzMzMDE5IGM2NjEwMGMwOWVhMTE2MjdkNDkwMDlmMjUyMTAyOTU3NjUxYTRkYTYgbGVnYWN5LXRydW5rCiszMzAyMCBlMGYwNzFiNDc2ZmQxNmZkZGQ3YWI4NWFiOTNkYTYzODZmZDdhMWE2IGxlZ2FjeS10cnVuaworMzMwMjEgNzJjZTdjYzAzZjI3ZmQyNjIyZWU3MjRmZjE3MGFjMjE1NWZmMjE2NSBsZWdhY3ktdHJ1bmsKKzMzMDIyIDI2MTZmZTVlZWVlMTc4ZDM2M2M0MjUwMjNlZGNkNjFkMWY4MmFkMzYgbGVnYWN5LXRydW5rCiszMzAyMyBjYTIwYzNjYmM5NTZlYTMyM2JiOThkYzkwNzk5Y2NlOTI1NjgzZmNhIGxlZ2FjeS10cnVuaworMzMwMjQgMTIxOTAyMWM0ODY1YWU4MDdmMzMxNDBhMDViNTRhMjY4ZjM1ZmY4NCBsZWdhY3ktdHJ1bmsKKzMzMDI1IDU4YzFhZDQxN2VlN2NhZWQ0MjhhYTIyMjY4NjU0OThmMDhiODE1YjUgbGVnYWN5LXRydW5rCiszMzAyNiBjMDFlZGMzNWZmZDY3NmJhNGE2NmIwZDFkYzBiNWQ5NTJlODFkMDRhIGxlZ2FjeS10cnVuaworMzMwMjcgOGM2ZDRkYTVjY2QzZjg5ZDVlNTdlYjE5MjY5MGJkOGZhZmZiOTlmMCBsZWdhY3ktdHJ1bmsKKzMzMDI4IDIwZTFhZDNhZThiYjBjYTFhMjNmZjA2NTM4ZWZjYTQ2MTkzM2UxYjMgbGVnYWN5LXRydW5rCiszMzAyOSA5ZTdkMjI5MzBkYWExMmYyN2E1N2MyYzBiMDY0ZDJmNTk1MjUyNjc4IHJlbGVhc2UyMi1tYWludAorMzMwMzAgMjNmNjEwMWNjODdlZjE1MTNhOTQyOTc1Y2RiYTFlMzRmYjc4ZWE0ZiBsZWdhY3ktdHJ1bmsKKzMzMDMxIDJlMmRkNjE0Mzk0Mzk3N2VkN2U3MzQwNTA2MDlmOTM4ZmEyZWNhZTQgcmVsZWFzZTIyLW1haW50CiszMzAzMiA0MDgxYjQ5MGQ1NGNhY2YyMTAxZjI3MWVhNzYyZTc5NjE1ODhlYjJjIHJlbGVhc2UyMi1tYWludAorMzMwMzMgYzA1NTk3OTMwMGYxNzgwNTIyNzEwNjZhYzRiZmZlMjNjY2I4YjBkNCBsZWdhY3ktdHJ1bmsKKzMzMDM0IDI0ZTc0ZDY4Nzk4MDBiYmJiMzMzZTA3OWFmNDc1YTc4M2FkYzA2NjAgbGVnYWN5LXRydW5rCiszMzAzNSAzNDdlN2I2ZGZkNTNhZDlkNzE3NzhmZjE0ZjI5OWNkYTI4YzAxMTY1IGxlZ2FjeS10cnVuaworMzMwMzYgMjRmZmYzMmVkMDY1YzMzZGFlMDM5YzU5Zjc5ODE0YmNiMGU2NmM4MiBsZWdhY3ktdHJ1bmsKKzMzMDM3IDE1ZjFkYzViN2RkYzFjZjYxNGI2YjJkNWIwMDRkYjI3Y2YxYmEyY2QgbGVnYWN5LXRydW5rCiszMzAzOCA1ODVlMzAzYTk0OTEzNTBjODA2OTA4Y2E0MmU3NjdlYzI2YTQwYmEyIGxlZ2FjeS10cnVuaworMzMwMzkgMGQ1ODhmYWRjMWY4MmZmYWY1NWU1NTUyNTE1MjM3NDNhNTViMmE3MCBsZWdhY3ktdHJ1bmsKKzMzMDQwIDJkMzllYzBlNTVhYTVmYTRkYmMzYzIzODc2YTg5N2M5ZTYwODEzYWIgbGVnYWN5LXRydW5rCiszMzA0MSBiYWU2Y2U2ZDFlNWEzN2QyNmRjMTBhNjczZWNhNTg5NjAxZmRmZDE2IGxlZ2FjeS10cnVuaworMzMwNDIgY2Q1ZWNjNWIzOGViODU5N2Y2NjM2MTU0MDY3NzczYjZmYTk1ZDAxMyBsZWdhY3ktdHJ1bmsKKzMzMDQzIGVmZjMzMzM0Y2E2NzM3ZDIwNjE3NDE5ZmE1MDAxZDE0ZWYwZDQ4YjAgbGVnYWN5LXRydW5rCiszMzA0NCBkYjQ2Y2VkYWY3Y2UyMGIyMTQ0MDkxM2E0NzU2Yzc4YWMxNDZjNTVmIGxlZ2FjeS10cnVuaworMzMwNDYgODU3NDI4Y2I0MThjN2M4ZTNmYTY5MTk0YTM2Yzc3ZjAyZTE1ODU2ZCBsZWdhY3ktdHJ1bmsKKzMzMDQ3IDY1NDkwODg0N2VlZjhiZjYwZGE2NTZmZGMwZjA0M2RjNzJlN2IwOTAgbGVnYWN5LXRydW5rCiszMzA0OCAzYjJlMmIxNDY4MWMwMmUwYmIyMzM5YzEzN2IzYzYwYTdkMjBiYjliIGxlZ2FjeS10cnVuaworMzMwNDkgOWUxZjhmYzVlNzFkMzM0NzIyYjYxMzc3ZjczMDBkZWI1NDU2Yjc3ZiBsZWdhY3ktdHJ1bmsKKzMzMDUwIDI2ZTA3YTY4NDg5MGNiY2M5NzRiZjY2OGEyZDgxYTI5YmVmZGQxZDggbGVnYWN5LXRydW5rCiszMzA1MSBjZTI1YjRkNzQ2ZWExMDA2N2UwY2EzNWZjNWMxYTdlYTM0NmI3YmMzIGxlZ2FjeS10cnVuaworMzMwNTIgOTJmZmU1MDIxMTI4MTlmMzNjNjcxMWIxY2UzOTFmYmM3ZTMyNjY4ZSBsZWdhY3ktdHJ1bmsKKzMzMDUzIGZhNjA0YWYwY2RiZmI2MzFiZjRiMTRmZmY4NWU2ZTM3MjVjMjVmNWQgbGVnYWN5LXRydW5rCiszMzA1NCA2MWU5NjZjOWVjZThkOTA4ZGFmYzVjMDMyNGVhNTFkMDU2MWRkZThkIGxlZ2FjeS10cnVuaworMzMwNTUgZTZiMGE0MDZkYzMxZWY0MmVmZmQ4NjFlNzVjYmY4ZGZlNWY3Njc4OCBsZWdhY3ktdHJ1bmsKKzMzMDU2IDUyNTc2NjgxN2ViNjhiNjJkYWUxMDBjNGFmNzZiYzUxYzA4YzY1ZmYgbGVnYWN5LXRydW5rCiszMzA1NyBiMGE3ZWFjNmM2NTExMDFiN2ZiNzAzNTk3ZDk3ZGFhZTFhNTU3NjcyIGxlZ2FjeS10cnVuaworMzMwNTggODMyMzZmNThlNjgxMjFlMzY1MmVlOWIxZjVhMmQ4MjUyNGRmYTFlYyBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDYwIGNmMGJhYWYxNmUwZDdmNTIxZGViMDBlMWY5NWNkZGRmYjQ0MDQyMDUgbGVnYWN5LXRydW5rCiszMzA2MSBhMmQ0YzY0ZjViOGIzMTRiNTNlNGFkYTA2N2I5NmE3NWRlZmI3YzZkIGxlZ2FjeS10cnVuaworMzMwNjIgZDFhOGM3MzIzNTllN2Q5NDEyYjIwYWRjYzk0ZjcyMzE0OWZlNzI4MyByZWxlYXNlMjItbWFpbnQKKzMzMDYzIDhjNWE2ODUzYTAyYWRiODFiZDY3ZWE4YTA4ZjRjMjZmNTE3MmI4ZDcgbGVnYWN5LXRydW5rCiszMzA2NCBiZWZmYzczNjY2ZmQyMGNhMzhiNjNkNGEzYjQ2MTI0Y2YzZWNjYjYxIGxlZ2FjeS10cnVuaworMzMwNjUgM2I1NGRmZjEzMzEwMWVlMjliOTQ4YmEwODE3Yzk0NmVkZDRlZWI0MCBsZWdhY3ktdHJ1bmsKKzMzMDY2IDliYjZmM2M1YjA0YTNlZjhjZWMxNGYwZTMwZjc3NGFhMmFlZjhhOGIgbGVnYWN5LXRydW5rCiszMzA2NyAzMWIyY2JhNjRiMzk5YmY1OTMxNzIzZTE2NjM5MWJjYzI3ODMxNTVjIGxlZ2FjeS10cnVuaworMzMwNjggMjk3NjAwNTY4ODRhOWU3MTUyMWVhZTUwZmRjNmEzNmIxYjMyOWUzNSBsZWdhY3ktdHJ1bmsKKzMzMDY5IGYyZGY5YzlmMGZjYjYwOWI2ZTk2ODQ2OTk4MjAyNjBjMGFiNmMzYWIgbGVnYWN5LXRydW5rCiszMzA3MCBiYWMyYzBlN2MyMGExMjIyNTAwMGFlNjk5ZGQ3ZmE4YzJmN2ExY2E3IGxlZ2FjeS10cnVuaworMzMwNzEgMzU2YmI1OWM1NDg2YjJlNWViMmIxZjVhMmEyOWVkZWI2NmI5NTgwYyBsZWdhY3ktdHJ1bmsKKzMzMDcyIDY0Mzg2NDY0ZjcxNjkxMTc3ZTlhNDJkNzFiYTQ0ODlhMWVhY2UxYWEgbGVnYWN5LXRydW5rCiszMzA3MyAwYTQwYzY4N2FmNWVjOTY4MDA4MDMyZTc0ZGUyYjE1NDAzMjZhODAzIGxlZ2FjeS10cnVuaworMzMwNzQgODg5NTFhNWZkMmE5ZWVjMDNmNDcxNTlhYzE3OGI1MGI0NGY2MDg0ZiBsZWdhY3ktdHJ1bmsKKzMzMDc1IGFiMWQ4NWY5ODQ4NTY4NzU1MGIxMjZjNDNmMjViMThiNzcwMTdjMjggbGVnYWN5LXRydW5rCiszMzA3NiA5ZTFkNzgwOWE5OTgxNmFkOWEwNzk1Mjg2NjAwOWE2YmQyMmI4ZTE3IGxlZ2FjeS10cnVuaworMzMwNzcgMTlmNGY0OGJiMDJhN2U2ZTAxNGMzZDNmMjlmYWQ1MTRiMjM2MmYzNiBsZWdhY3ktdHJ1bmsKKzMzMDc4IDVhOGZkNWIzZTRjNDA1MTBiMDU3ODBhY2QzOWY1ZTYxYmE4Nzg1MDcgbGVnYWN5LXRydW5rCiszMzA3OSBmODdmY2QwODcwYmYyYzk4NmRkMWQ4MDUzMDIxZTM0M2QyNDRiNzAwIGxlZ2FjeS10cnVuaworMzMwODAgMmJhNWVjNmIzY2RhMmZiMGU3ZWRhNTQ3OTY0MGJhM2U3MDc2NjU0NSBsZWdhY3ktdHJ1bmsKKzMzMDgxIGNmOGFlM2IwZGNkYzk3MGFhODk0ZTJmZDBkZDAxNjAwNmMxMjY3YWYgbGVnYWN5LXRydW5rCiszMzA4MiA3YzQ5ODMxZDIzYzU5YjA3YjY2MzYwZDc0NzgzMjkwODJkOWQ3ZmNjIGxlZ2FjeS10cnVuaworMzMwODMgZmMzOTJkYWJlMmUzMGYwZWE4ZTkwZWIzYzJkMmE4MDg2NTM4YmQwNiBsZWdhY3ktdHJ1bmsKKzMzMDg0IGI2YzI3MWJhMDNlMTgxNDQzNjVhMzg3MjFmNmYzNmVhMDBjMzk0Y2UgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4NSAwODlmYmUzYTExNGVmOWJlYzY0YWI1OWQ2ZDc3MDUzZDJkYmI2MDBjIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODYgMGQ2MWEyN2MzODk2OWUwNjg0NmFlOWNmYTkxYjJjMTJlN2Y1YjRlYSBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg3IGZmZDAyYmFhYjI1OTMyMGU3MzI2YzA5NzYzNzkxYjdmNjc3Yzk0M2IgbGVnYWN5LXRydW5rCiszMzA4OCA3MGQ2MjVmZjU2MmI1ZDY5YzM1OWI3NGM0YzJkNDZkM2JiMmRlZDNlIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODkgOTIzZTZmYjg1NWZmNGY3YTM3MzJiM2FlNDQwYzFiMzU1YmJjYjE1NSBsZWdhY3ktdHJ1bmsKKzMzMDkwIGVkY2ZlZjk0NGUyZjQwNmM4MjdhYjExNmY4MGZiNGE2NDNiZTk1ZDAgbGVnYWN5LXRydW5rCiszMzA5MSA1YzU2YmYzY2IyMDU1MDg1MjkyOTg0YjJlMjg4NTlhMTE3ZWRmYjczIHJlbGVhc2UyMi1tYWludAorMzMwOTIgYzQ4MWM2ODYyNzVhNzg1YTU5MzA0NWYwZGEwOTk1YzVhODZjNmE2MCBsZWdhY3ktdHJ1bmsKKzMzMDkzIGI4MGEyMjI1MGU0ZjExYTRiNDdiNWEwMWNkMjgwYzg1NWRiNWNjNTQgbGVnYWN5LXRydW5rCiszMzA5NCBlZmVkNjg5NzNhM2JlZjM0MDgyMjczNjA1YjJjZGM3ZGNkYjdjYmEzIGxlZ2FjeS10cnVuaworMzMwOTUgZTJmMjQxMGMwOTZlMDNmM2Q0MjBmN2EwMzA3ZGRhZTVlOGFlYzI2ZCBsZWdhY3ktdHJ1bmsKKzMzMDk2IDE5MzM5N2M0NGFlNTE2NGYyZWMwNzgzZjNlMDQwOTVlZGRkYTM4NDQgbGVnYWN5LXRydW5rCiszMzA5NyBlNjllNTQ1NTJkMTA4ZGI2NzQ0NDdiZGZmODgzOWQ5N2UyYzVhNmMyIGxlZ2FjeS10cnVuaworMzMwOTggMGJhN2MxMDE2NDhhYzgyODM0MGM4ZTRlNzM1NGZiYjg1ODFmZTVkZiBsZWdhY3ktdHJ1bmsKKzMzMDk5IGZhNDhhOTBlZGExMjVhZWIyZTg0OGIxZTA5NmEzZmU2ZjEwZjdjOTQgcmVsZWFzZTIyLW1haW50CiszMzEwMCAxNzlkNTQ1MmJiOWQ5ZjYxMTRhNDMwOGRmYWQ3M2E4MWY4NzJkNjg2IGxlZ2FjeS10cnVuaworMzMxMDEgYjQwOTAyYjQyMjkwZGI2OTRlZmUzM2JjMjM2NjMwNmU2MTA5Y2Y3ZSBsZWdhY3ktdHJ1bmsKKzMzMTAyIDdiNzAwNDM5M2I1YjI2ZjI1M2U2ZjFjMWUxNTdlZWE0NWNiMTdjMDQgbGVnYWN5LXRydW5rCiszMzEwMyA1MmJhYWVjN2U1Y2YwODlmMzUxNjU2OGQ2MTU4YjJhZjhkNjVhZDJkIGxlZ2FjeS10cnVuaworMzMxMDQgMTc0MzFiYThjYzRiZmFkYTMyNjg0YWFlZjQ3MTYyNWNhNTcxNWYxOSBsZWdhY3ktdHJ1bmsKKzMzMTA1IDZmZWNjOTlhZmE2OWZmZDQ4MGEyOTJlNjIwZDUwMWVlNmU3NTQ3M2YgbGVnYWN5LXRydW5rCiszMzEwNiBiYjE5MTM0ZTBhNGQwYjllNDQzMzJiZDg1ZWE5N2MzMGQ0M2RhZWYzIGxlZ2FjeS10cnVuaworMzMxMDcgOGQxNjAwOTVlYjY2ODNlM2MyMmE1ODk3NjM5ZmRkNjc3MzA3ZDg0MiBsZWdhY3ktdHJ1bmsKKzMzMTA4IGU1ZDAzMzYwNTcxZDk3Y2FmZGVkNDIzY2M4NjhhOWU2MmUwNjMzNGEgbGVnYWN5LXRydW5rCiszMzEwOSBlOTk1M2IzOTlkNTUzZDVjYzhkZjBhZTlhNzkwNzQyZjQyYzMyMTM2IGxlZ2FjeS10cnVuaworMzMxMTAgMmNiOTY5ZmZlMWJmMjhlNTRiMDlmY2M2NDc3YTViZWY2NWFiZjkyNiBsZWdhY3ktdHJ1bmsKKzMzMTExIDVjNzYyNzUyNzgyYzI5MzgyOGQwOTEyY2Q1NGZjYzQ3MDUzOWU0YzIgbGVnYWN5LXRydW5rCiszMzExMiAyZDY5YTcwN2M0OTI5ODU0OTJhMzFmM2I1Nzc1M2I5YjJkMjU1YTc1IGxlZ2FjeS10cnVuaworMzMxMTMgNTYzNDM4MTZiNTg5N2Y4YWY3MDJmMjVhMGQxNTgwZTg2OTZkMzI1NSBsZWdhY3ktdHJ1bmsKKzMzMTE0IDA1MDU4ZDgxMzQ0MThkNDg4NTg0NTNlMTE0YmYwOWI0ZGZjYzI4OTYgbGVnYWN5LXRydW5rCiszMzExNSAzMDE2YTE5ZTMyMGU2NDUxNzA2ZjllMGY1N2MyYzQxYjc5NDJkM2QyIGxlZ2FjeS10cnVuaworMzMxMTYgZWZhZDU5ZjM5NTY0YmNkOTQ4MTc5NzE3Y2JkZjg2YjBiNmZkOGQxYyBsZWdhY3ktdHJ1bmsKKzMzMTE3IDliNzI1NThhMWViOWY0MGJiMmMwYTRiZTE3MTk4MWFhNzY1YTMxODggbGVnYWN5LXRydW5rCiszMzExOCA2ZDE2MGVlMzcxOTY1NTllM2RjNjIzN2E3Nzc3NTQ2MTUzMGNlMzhiIHJlbGVhc2UyMi1tYWludAorMzMxMTkgMWYzMzQxOThlNmQ3NjNjNmMwYWI3OGQ4MDgyYWE0NzlkYTY3MWQzMyBsZWdhY3ktdHJ1bmsKKzMzMTIwIGI4MjJjMmE4ZTA4ZjQzMDVmZWE0YTY3ZjJhNWFkZGQ1YmQ1ZWMyOTIgcmVsZWFzZTIyLW1haW50CiszMzEyMSA4YmVkNTUyMDM1NTlmOGRkNWM1YWMzOTFiNzZhYzdmMjQxYjc5ZWQ4IGxlZ2FjeS10cnVuaworMzMxMjIgMjFiZmNiN2M5NzZkYjVlNDNjODc3MGNiNTYxZjUyYWY1ZGEzOWE1ZCByZWxlYXNlMjItbWFpbnQKKzMzMTIzIDk4ODNjZjhmZjIxN2M5ZWQ4ODI1M2RjNGU0MWExMmRiN2JhMjlkYWYgbGVnYWN5LXRydW5rCiszMzEyNCA4YjE3NjZjOGFkM2JhYjRlOWNiMTUwZjI0MGI4MjhkNzZiZjkxOGVmIGxlZ2FjeS10cnVuaworMzMxMjUgMDYyZTM0MmNjZmY1OGI2Mjk1MzU0Y2RiZjEwZjFkNDVhMjQzYjAwMSByZWxlYXNlMjItbWFpbnQKKzMzMTI2IDc0YTI4ZjJlOTRjZjllMjkyZWVlZDgxMDg1Zjk1NjU1NWZiNWY2ZWMgbGVnYWN5LXRydW5rCiszMzEyNyAyY2I4OTMwY2UyMjU5OTI2YWU0YTc5YTdiOWNkM2I5Y2ZkYTk2MjJlIGxlZ2FjeS10cnVuaworMzMxMjggMWUyZTU0ODIxNzg1ZjlhNGViZWQ2ZWY4N2ZiNDRkODVkN2MyYzk3MyBsZWdhY3ktdHJ1bmsKKzMzMTI5IDM1MjNiYTkyNDUwY2U2NDE2MDZjODk3ZDJkOGNlNGQwOWU4MTIzZTYgbGVnYWN5LXRydW5rCiszMzEzMCAwNDE1YWY2MzQxMjI1OGJlMWFhNDVkNjkxZGM2NTYzNmNkOGEyMzVhIHJlbGVhc2UyMi1tYWludAorMzMxMzEgNWM1YjU4NzQ2NDg2NmRkM2Q3MzM3Y2I5NWExM2ZiNGU5YmNhNTI2YyByZWxlYXNlMjEtbWFpbnQKKzMzMTMyIDBjZjFlYzU4ZTIyMGJhNjg2MmExNDk5YjU2NzhhNzRiNTRiZWYwNWUgbGVnYWN5LXRydW5rCiszMzEzMyBhNzIxYjA5NGY3YmMyZGJmZDcxMTI1NTZiZTYwZmU1NDQxYTA1NGQ1IGxlZ2FjeS10cnVuaworMzMxMzQgNGYwNzZmYzAxOTVhYzI2MjRhZWE0NzhmOGJhNTYyZGY0NDNkMzFiZCBsZWdhY3ktdHJ1bmsKKzMzMTM1IDFhYjk5NzgxMjNiZWNlYTE0NWYwOTBmYTFmYTBhMTFiNDE2MmNkM2EgbGVnYWN5LXRydW5rCiszMzEzNiAxNGExNTQ3MTI5ZmJmNWViYjIyOGJjODI5YmYwMGEwZjE5MmYzMmIzIGxlZ2FjeS10cnVuaworMzMxMzcgMzMxYWY0NWRmYTBkYzAxNzhkOGFmM2NhMjUxYTc3ZjkxODkwMTM5MCBsZWdhY3ktdHJ1bmsKKzMzMTM4IDQ4NzQ2MTRjYzdhMzU3MDM5MmQzZWM5ZmFmZDdlNjZjZDJmNjk5NTUgbGVnYWN5LXRydW5rCiszMzEzOSA1MTA2MGIxNjliMzIzN2E0MTc4MDYxZjljYWMxZmUzNzAzMTA4ZDg1IGxlZ2FjeS10cnVuaworMzMxNDAgODkyZGZjOWU3MjU2N2ZkYjc3OWY5NzIyZTBhNDEwNDQwZDg0OGFjZSBsZWdhY3ktdHJ1bmsKKzMzMTQxIGRlYjk3MTViYzhhZTdjMDBlNmM0NjJlOTM5NTI2MGUxMWEzY2U1ZWEgbGVnYWN5LXRydW5rCiszMzE0MiA4MzRjZDEyMThmMWI0ZDI0NTg1ZTgwMDAzOTlkM2JiZWY1NmM5ZmNkIGxlZ2FjeS10cnVuaworMzMxNDMgMDg2YmQ5ZTdkMjQ0MmEwYmE2YzM1ZWFkNDczZDY4NmJkYmUzMThlYiBsZWdhY3ktdHJ1bmsKKzMzMTQ0IDA2ZjI4YWRlYTZkMmMwOTFhYzg4N2YzYjdlZjE5NDZkMmRiNjU2MzAgbGVnYWN5LXRydW5rCiszMzE0NSBiZGZmOTY1ZDI2MDMyOTlhYzY2MWVjMzM0MzI4ZTgwOWFkNzMxN2RiIGxlZ2FjeS10cnVuaworMzMxNDYgMjNlN2IyNTc3YTQ2ODgwNWJmNjI2MGNiMWZhNjU0NjRiMDg5OWUwZCBsZWdhY3ktdHJ1bmsKKzMzMTQ3IDMxMzNiNTBlOTlmMzI2NWY5OTM1OTQxZTQ0ZDI4YjNhNWNiOWNhZWQgbGVnYWN5LXRydW5rCiszMzE0OCA4N2EyNTNhYWEwZDUyMTM3Y2Q3NTEzNmE2NWM0NzYzMzM3NzBjNDRlIGxlZ2FjeS10cnVuaworMzMxNDkgODFlNzBmMTJkNjJmYzg0Nzc5YjUyZDI1NmMzZDg3YmZiNTg5YTExOSBsZWdhY3ktdHJ1bmsKKzMzMTUwIDEzODZmODZjNTA5NWY0NzU5NDYzNGVhZmExNDgxY2I1MDAxZDdmNTYgbGVnYWN5LXRydW5rCiszMzE1MSA1MTQzY2ZlN2NjNzVjYzA0NGYwOWY1MGRmMGMxOGIyZmQ4Mzk5Mjg0IGxlZ2FjeS10cnVuaworMzMxNTIgNjBkYWJhOTM3NzVjNTIzNjAzNjU5ZDU2NWIzM2JjYjQzNWIxYjZmNSBsZWdhY3ktdHJ1bmsKKzMzMTUzIDk3MThkZjg0OWRhOTIxMDJkYjVkMDY4NGU2OTNmMjZlMjI2MWM3NWEgbGVnYWN5LXRydW5rCiszMzE1NCAwODkwNDY2MDEyNzA2NTkyOWU5YjQyYWIzZDI1Yzg2ZDYwYTMzMDA2IGxlZ2FjeS10cnVuaworMzMxNTUgNTIyMDQ3NDY2MGNlODFkMjY4ODQ4Y2I3OGJlNmQxMmYxODQ4ZmI4NyBsZWdhY3ktdHJ1bmsKKzMzMTU2IGFiYzJhMjBkYzNhMzM0YzJjZjRhODVjMmNhZGRiYTJlZDI3MmY1OWUgbGVnYWN5LXRydW5rCiszMzE1NyA0MGM1ZjFjMDhlYzhhYWIwZDFmOGNhZTA1MjBhZjY4MzE5N2QyNDYxIGxlZ2FjeS10cnVuaworMzMxNTggMTAwNzA4ZWI4YzgyZDJjNzg3YjlkNzVlN2QzYjg5OTQ4YTk0ZGY2MCBsZWdhY3ktdHJ1bmsKKzMzMTU5IDk0ZjkxMDdkOWE2M2E5ZDlhMmU5MjI1NzMzMDA1YWI0NzI4NWE3MjcgbGVnYWN5LXRydW5rCiszMzE2MCA2NTMxYzc2YjYwNGRjYWZlMmMyNTRjYjRjNTVmMThiOTNkYmVkZGI3IGxlZ2FjeS10cnVuaworMzMxNjEgMTQwMmYyNjVlNDhmNjEzYmFmOWViMzc0YzUwNDQwZDAxMGJiMTljZSBsZWdhY3ktdHJ1bmsKKzMzMTYyIGQwZDRkNjk2YWIyNGU4ZDYyODNlOTVjMzJhMTQ3Njc2OWUzNWI5ZDcgbGVnYWN5LXRydW5rCiszMzE2MyBhYTg0ZWRlMWMzNjRlYmRjZjUyZWYzNjU2YmVlMTk0MzkyNGQzMDUyIGxlZ2FjeS10cnVuaworMzMxNjQgNmM2YjMyMWQxZDEwZWZkMWYwNDBkNTE1MWFjZjcwMDM4N2U2ZmViYyBsZWdhY3ktdHJ1bmsKKzMzMTY1IDcxYzA2YmM1YTczZWExYjZlNjUzOTI2ZGIxMjY5NTU3NDQxNDM5NDAgbGVnYWN5LXRydW5rCiszMzE2NiA3ZTMzNjNhNzY2MWQyNTUxY2M2NWU2OGQzZDI0MWJjOTQ5NDM4ODA4IGxlZ2FjeS10cnVuaworMzMxNjcgZDcyYjNmMGE1N2E5ZGQyYzc0MDQ4NGJjZWRlMmE4ZmQ4M2RkYzYwOCByZWxlYXNlMjItbWFpbnQKKzMzMTY4IDVmMDFkNTE1OGQxZjg2ZTIzM2NkYjMwNDljZmFmMzNiM2JiZjRjOWMgcmVsZWFzZTIyLW1haW50CiszMzE2OSBkYjQzMTI5NDc0OTQwZDgwNDc5YmYwMWU5MTFiNzk0OWFkYWJhZTIwIGxlZ2FjeS10cnVuaworMzMxNzAgMTE1MThiNmNlNWVjMDNkMzlmNTFiYzg2NmJjYmZlMTY2YWE0MTQ2ZCBsZWdhY3ktdHJ1bmsKKzMzMTcxIDUzNTU0Njg4ZTVhMjJlOGZhMjUwZWFkNTNjYmJkZjIyZmU5NjQzYjQgbGVnYWN5LXRydW5rCiszMzE3MiAyOWVlZTVjMWRkNDJmYzhhNDEwMzgwMWMyODI1MzBmYWJhMzdlYjc5IGxlZ2FjeS10cnVuaworMzMxNzMgMDFlOTI1MzcxZDdjOTQwODhjYTgxODkyM2UxZDFmZGUwMTA2NGZkYyBsZWdhY3ktdHJ1bmsKKzMzMTc0IGQxYWNmODlkMWM0OWE2ZDYwMTE1ZmVmMzRmYTQ4OGI2MDMwZGJmYWMgbGVnYWN5LXRydW5rCiszMzE3NSA2NDQ0ZWEzZGM4M2M0NGUxNTgyMTg0NzI2OWIxMGY0YmY2NDY1ZGJmIGxlZ2FjeS10cnVuaworMzMxNzYgZTU0ZTJkZTQ2YmMzZDU4NzM3ZjRmNzNiYzkyMTg5ZDUwZjI0MmJlYSBsZWdhY3ktdHJ1bmsKKzMzMTc3IGNhOWUzNTk4Y2NmYjVlYzgxYjNmZGJjOWY5ZjI2NGRhNjMyZTUwMTAgbGVnYWN5LXRydW5rCiszMzE3OCAyMzFhMzUxMGUyNDZmZTBjOTQzZTU2YWIwNGNhZTg4NzY1Zjg2N2YxIGxlZ2FjeS10cnVuaworMzMxNzkgZDc2MWZmNTViM2JlZjQxZmU1MmZhM2U5NWE2N2M4YjE5YzE2ZDgwOCBsZWdhY3ktdHJ1bmsKKzMzMTgwIDk0YWMxZDQyYTQyMDRmMmQwYjg2Y2I0OGE0OGNjMDQ4ODFiMzVhMmEgbGVnYWN5LXRydW5rCiszMzE4MSAwNWZiNTFkMDdhZGFmNWJmMzE0YTg3ODVlYzg1MGEyZTA0MjlmOTg4IGxlZ2FjeS10cnVuaworMzMxODIgYzZlYjU2OWU0Yjc5MzA5Yjg1MGE4YzhiMjUyMGJjOTRlMjA4Y2I2YSBsZWdhY3ktdHJ1bmsKKzMzMTgzIDVkMTFmZGZhN2MwMDg0NzUwMDU0MjFiM2MxZDQ1MGMwMDA0YmI3MmMgbGVnYWN5LXRydW5rCiszMzE4NCBiNzRlMGNjMjFjYjA0NGZhYmNhNTVlMmE4ODVlZDliNGZiZjliZDY4IGxlZ2FjeS10cnVuaworMzMxODUgNzBlNjQ5ZmEzZmNkMTM5MTZhOGFiMjU0Y2VhNjA1Y2FlNzcwZWVmZCBsZWdhY3ktdHJ1bmsKKzMzMTg2IDg3ZjMwZmNmYWQ0ODg4MWEyM2EzN2JjNjFiZjc3MTAzOTc5NTJlNDIgbGVnYWN5LXRydW5rCiszMzE4NyBiMWFhMWQ0MzljYmEzNTVlZWQ5MDJlMWUyZjE2N2QwNDU5MWQ1NTViIGxlZ2FjeS10cnVuaworMzMxODggZmIzMzJhMDk0OWI3NGY1NjMxNWY3NDM2NzM2OTNhNjI3YmJiZjA4ZSByZWxlYXNlMjItbWFpbnQKKzMzMTg5IGY2ZDUwM2RlNDViZGUwZjlmMWE0Mzg4Y2IzODUwMmI2NDc1ZTMwMGQgbGVnYWN5LXRydW5rCiszMzE5MCBmNjdlNGM1YWVhOTM3ZGMzODE0NDA4NDQ4YjU3NmU4M2QyZDM2MDU2IGxlZ2FjeS10cnVuaworMzMxOTEgN2FlZTZlZjU5NmRkYmRlNjM4M2E5NjVkNTE4NjNhNTBlNDllZDQ1YyBsZWdhY3ktdHJ1bmsKKzMzMTkyIGY0OGJiOTRmMzI4OTU4MzI4NzI2ZTgzOGRjYzI0Yjg1NGZmZGM5MWUgbGVnYWN5LXRydW5rCiszMzE5MyBmMTc1Zjc3OWJlODkwYjdmOWYxZDBiMDhhNTEwYjc5YzE1YjYwMTc0IGxlZ2FjeS10cnVuaworMzMxOTQgZWE3N2Q0M2UyMDNkMWY1NmY1MGMxNWI5NGVmZTExMjIzN2ZjOTI5YyBsZWdhY3ktdHJ1bmsKKzMzMTk1IDJmYmQyNTZhMWRiMjU2MjZiYmZmNDFkYTZjOTBmODY5ODBjZTBiMTAgbGVnYWN5LXRydW5rCiszMzE5NiAwYjUzMjJiODUzZDJmNzUxYjYwMzEwYmQ2YjIxMDUwZmE0ZGQzOGViIGxlZ2FjeS10cnVuaworMzMxOTcgOGIwMzAwZTdmMWRjYjE5OTAxOWM2OWYzOGIwZjA2ZGJkMTFkZDJlZCByZWxlYXNlMjItbWFpbnQKKzMzMTk4IGM2NDY4N2NkNWIzNzFkMjMyMzgzOTIzZjdiMDhmNTU0NjhhM2Y2ZDcgbGVnYWN5LXRydW5rCiszMzE5OSAzNGMwNDBkZGY5ZThlYWQyNDQ1YTIxZDdiMmJkMGE5MTVmNTdlODRkIGxlZ2FjeS10cnVuaworMzMyMDAgY2Q2MmIzMzU5ZTk1NjBlNWY4NzQ1MTU4NDI2Y2MwZTNkZDQ4M2IzOCBsZWdhY3ktdHJ1bmsKKzMzMjAxIGRjNmMyMWRjODY4NGUwNjM5N2NjMDE2ZDIyYzcwNTdlODQ5YWY4ZjcgbGVnYWN5LXRydW5rCiszMzIwMiBmYWZiNmViMGY5N2U4ZTRjNjk0MjM1MzMwZTNiZGViZjA5N2VhNjM1IGxlZ2FjeS10cnVuaworMzMyMDMgYzNiYzdlZDlkMzE1OTllMGUwZjliZDM4ODRlNmU2NGJkZGVjYTFiNiBsZWdhY3ktdHJ1bmsKKzMzMjA0IDJkNDAyN2VmYmMxMmUyMmZkYTI3ODVlYWMzY2IzZTgwNjBhZjExYWEgbGVnYWN5LXRydW5rCiszMzIwNSA2OWJjN2NhNWNjMWE4ZjUwMWY5MzY4MmEwMGY5MDhjMjFiZTU2OWMxIGxlZ2FjeS10cnVuaworMzMyMDYgZTIyODMzNmFhZjA4ZDdjMzU3YTNkMDY2ZjhhYTJjOTcwYWJmNTZhOCByZWxlYXNlMjItbWFpbnQKKzMzMjA3IDkxOTcyODVhMzkzMzVlMDRiMmU0NDRjZTQ5YjMyOGEzZjNiNDA0ZjAgbGVnYWN5LXRydW5rCiszMzIwOCAzMjU5MmYxYTZmMjJiNDk5YTIxMmM2ODY4ZmMzOTlmODgwNjU0Njg5IGxlZ2FjeS10cnVuaworMzMyMDkgNmZlMDIzNjkwZDdmMTBkM2NjNTA2YmJhNWYxNmJiMzc3MDA4NTllMCBsZWdhY3ktdHJ1bmsKKzMzMjEwIDk0NGY2MDJiNzhmZTQ4ODlhMTI0YzJhZjNiZWMwODlkOWUwMjcyMGMgbGVnYWN5LXRydW5rCiszMzIxMSA4NzgwYTQ5ZDhlZjJjMTQzZmI2NTgxMmM1MTQzMTM1ZmM1MjY1ZDIxIGxlZ2FjeS10cnVuaworMzMyMTIgN2M3ZjQwNDViYTM2NzFhMDIwOTA2NGRmNjllNWZmMjU1ZjRmMjdlZCBsZWdhY3ktdHJ1bmsKKzMzMjEzIDRkMWZhOWM1Y2IyY2YyNWQ5MGNjYTcxNjIzYmZiNzdlOTdjNmEwNjUgbGVnYWN5LXRydW5rCiszMzIxNCBlOTczZGVkOGE5MmE4ODI4NWUwMjkxMDAyYmJmMThiMmM2OGVjNTViIHJlbGVhc2UyMi1tYWludAorMzMyMTUgNTIwMDI4Nzg4OWJkMmE0MTA0ZWUzOGIyN2QxZDUzY2QxMzEyOGViNCBsZWdhY3ktdHJ1bmsKKzMzMjE2IDZhNWU5NWM2N2QzMjFjMTA1ODlkOTNkOWUyZDAyNjQ4NjZlNDI4NTggbGVnYWN5LXRydW5rCiszMzIxNyAxYTQ5ODY5MjIzNTc3MjAzZTI0MzViZGI0ZjBkMDcwMjZhZGMxNjgwIHJlbGVhc2UyMi1tYWludAorMzMyMTggNGI4NmRjYWMyMjAxMDc2ZDYzOTZlZTBmMjBmMWE4MDE0NWI0MzkwMSByZWxlYXNlMjItbWFpbnQKKzMzMjE5IGRlM2Q0OWUwZjY0OTEzYzAzODkxYTBlMWI2N2FiNDFkNTE0ZTIxYTggbGVnYWN5LXRydW5rCiszMzIyMCA0MjcyMzIyYjkyZTVlOWU4MjU2NmQyMjJkYzY2ODU5YTYwMmJjODY3IGxlZ2FjeS10cnVuaworMzMyMjEgZTVkM2IxZDg5YzQwMTgwMGQwNGQ3YWQ0MDVmY2ZhMjlmZjNhYWEyNyBsZWdhY3ktdHJ1bmsKKzMzMjIyIDk1OGI0MGQ4MGIzMzE4MzBkMDMzYmFjYzJhYTAwYTBjZGU4NDM3YzAgbGVnYWN5LXRydW5rCiszMzIyMyBhMjk2MjE0ZDJlYmJhMzE3MGQxOTE4MDhjYTgzZWZjZTExMzM1ZDk3IGxlZ2FjeS10cnVuaworMzMyMjQgNzFkM2RhMTE1ODM4ZjMzMWFlMGY0YjU4ZGM4Yjk3OWY5NzBkY2NiMSBsZWdhY3ktdHJ1bmsKKzMzMjI1IDQ0OGMxNDQxOTY0ZmQ2MGU5YmRjNTdkODg5NGRjMTNkNzE1YjY1YTYgbGVnYWN5LXRydW5rCiszMzIyNiA3NTY0NjgzMDdlNjE3OWZlODRmMWQ4ZDM0NTcwOWQyNWRiNTYxMmZkIGxlZ2FjeS10cnVuaworMzMyMjcgOTEyNTlhZTM1ZTI5OTQ2NzIzOTkxY2E2OTg2YjMzZDgxOTk0NzQyZSBsZWdhY3ktdHJ1bmsKKzMzMjI4IDhlOTJjYzA0YjY0YjAwMDRjMjJhZjc0MDI1YWJiMWQ0ODk4MjJiNzcgbGVnYWN5LXRydW5rCiszMzIyOSBkMTVlMmI3ZDk5MWNjOTBiMTU1NGJjODY0ZGIyN2I3ZjEzZDljZjc4IGxlZ2FjeS10cnVuaworMzMyMzAgZWQ0NWE5OTUxMzEyNjhiMjRjZTBjNzE3Y2QzOTQ3ZGZjYmQ0OGQ0OCBsZWdhY3ktdHJ1bmsKKzMzMjMxIGFkMDJhMzhhOTZlYTllZGVhMWUyNzJmZGQzN2E0NmNlYzczMzcxODYgbGVnYWN5LXRydW5rCiszMzIzMiBmMjZkMTMyMzZjZTg0YTgwOWVjMjdiNjUxY2Y3MTAzYzJjZTE2YzU4IGxlZ2FjeS10cnVuaworMzMyMzMgMWFhOTA1N2MzOGI0ZWQ3YThiNTI1YTFjYWEwMTEzYWNjNzIxNmIxYiBsZWdhY3ktdHJ1bmsKKzMzMjM0IGVlZDc0MzBiN2FmMTRhN2Y1OWUzYzVlNTQ5ODRkN2FiMzgwMTY4YjkgbGVnYWN5LXRydW5rCiszMzIzNSA1Yzg3MzdiZDRjZTZkNGZiYTUyNTEzZGU2ZjVmYjNjZDFhMTI0ZGFiIGxlZ2FjeS10cnVuaworMzMyMzYgZTJmNzgzNDg4MDI0OGQ0YzMyNWZiYzM4OWRlODlkYjhlMjgxOWViMCBsZWdhY3ktdHJ1bmsKKzMzMjM3IGNkYzc1ZGUyZjVjMWE2NGYzYWRmZjBiNDdhM2YwODJkODBiY2Y0NmIgbGVnYWN5LXRydW5rCiszMzIzOCBiOGI1N2JkYmZjZWRmNGM4ZjE0NjA0MDI0MzE1ZjA5OTBjOTQ2NDJjIGxlZ2FjeS10cnVuaworMzMyMzkgZjkzYjkxOWU1NzI5MGVkMjZkNTI3MjFhMmMyZjZlMWRjNDg5YzQyMSBsZWdhY3ktdHJ1bmsKKzMzMjQwIDE2OWUwMWVjMzU5NjU5ZmNlM2E2M2E0MTBlNDQwYTY1ZTM3ZDQ0YmUgcmVsZWFzZTIyLW1haW50CiszMzI0MSA1NjIzZjllMmI1NTVmMGU5NzAwNmNhOGEwYzIxZWNkNDQ2NmUyNjA5IHJlbGVhc2UyMi1tYWludAorMzMyNDIgNjBjZTczZWE5YzkyZjM0MmY1NTJmNjc1NWVjZTE0YWQwZWM2YTFkYiBsZWdhY3ktdHJ1bmsKKzMzMjQzIGE5YTkzZmM1MGI4ZDhhZTc4NzhiNjFjNWRkZjEwNWEyZmZjNDA2MzYgbGVnYWN5LXRydW5rCiszMzI0NCAzMTJmYjc2YjczY2M3Yzc0ZDE5MTZkZmE3MjNlNWUzNjI1NGYyY2YxIGxlZ2FjeS10cnVuaworMzMyNDUgZWUxNGU1YjA2ZWQxMzZiMTIzODNkYWI2MWQxNjI5ZWJiYWM3Nzc5YyBsZWdhY3ktdHJ1bmsKKzMzMjQ2IDdmZTRlOWYxNjYzNDdiNjQxZmE0ZGVkNmQzY2RkNGQ2Y2QyMTQ1ZjggbGVnYWN5LXRydW5rCiszMzI0NyBkYTAyNDhmY2ZjNTI1MWJjZDcxMGNhYjE1MTdkMjA3OGMyMDQ4NTViIGxlZ2FjeS10cnVuaworMzMyNDggOWRmMWYzZDg5ZTYwMGM0MTg3ZTMzZDk1MTRiNjM4YzExNDEyMjMzZiBsZWdhY3ktdHJ1bmsKKzMzMjQ5IDhiMTYzMzcwMzcyZGRhZDBlMDM0MDY0ODhkMDViMGM1OTkxYmE2YzggbGVnYWN5LXRydW5rCiszMzI1MCA3Zjc5ZWFkNzEyZjU4ZDQ3MWRmN2E0NDMwNjczNTA5NzEyMzQzNGY4IGxlZ2FjeS10cnVuaworMzMyNTEgOTk2NWViY2RkMTcyZjkyZjQxMDhmMzUzMGE1YTU5MGY0ZDhhY2E2MCBsZWdhY3ktdHJ1bmsKKzMzMjUyIGI3OGQ2M2RhZTAzMDc2ZTljZGE3ZDVmN2Y2MzRhZDk1M2VkMGNmODIgbGVnYWN5LXRydW5rCiszMzI1MyA4ODA3ZTkwMWM1MjZjYjQ0YmI5YTY2MGUzNjk3OGFjZDJjNzYzMTdhIGxlZ2FjeS10cnVuaworMzMyNTQgNGEzZWYzODA3OGU1NTE1N2QzN2VkNGI5MjgwODU0ODQ5MDdmMTZhNSBsZWdhY3ktdHJ1bmsKKzMzMjU1IDlhMzA0NGU1NzgxZWFhYzU4ODRjNmJjY2JlMThlNjIyYTAzZmE5MzYgbGVnYWN5LXRydW5rCiszMzI1NiBhNDBjZjFkMGE4ODdmZGZiN2M2ZTMyOWIzZDcxMmI3ZmZmYzRiNGZlIGxlZ2FjeS10cnVuaworMzMyNTcgZWFhMDYyZmRkNDZhYjAyNjU2MTZjODQwNTRkODM5YjJhMWVlOGJiNiBsZWdhY3ktdHJ1bmsKKzMzMjU4IDg5MTFjYTg4OTgxYWY4NjJlNjNlNGFhYWU5Y2IyNGNhN2M1YjdhOGUgbGVnYWN5LXRydW5rCiszMzI1OSBiMzVmZjliNTkxNDkzMWMzODg4MGQ5MjcwOWY0ZTY5NTIyZmVjNDNhIGxlZ2FjeS10cnVuaworMzMyNjAgNDY2YjU3OWUwMDg4MjI2MmJmYjEyYTJhZTMxMTU4YTMxOWJhNGU3OCBsZWdhY3ktdHJ1bmsKKzMzMjYxIDIwMWNlYWY5NTk3NTFmNDQyYTNhNjA5Yjc2NWJmZDJmZmMyMDVlODcgbGVnYWN5LXRydW5rCiszMzI2MiAyYjEzYjU4YWUzYThlNzYzN2FmODQzY2NmNzI0ODU1MDkyNjY5ZTU3IGxlZ2FjeS10cnVuaworMzMyNjMgZWEzODRiMWQwZDEzZGJiNjc3Y2MxOTZmNDYyMTRjMDFlMjU4MjM5ZSBsZWdhY3ktdHJ1bmsKKzMzMjY0IDdiNTE5ZWE3NTAxYWFiZjI4YWIzYTkxZTgxNTgxZmU0MjljNTE5NWMgbGVnYWN5LXRydW5rCiszMzI2NSBjYWE4YzEyMGUyY2IyYjI5NmQ2MDdjZmUzZGJkMDljOTkzZGM4OGJjIGxlZ2FjeS10cnVuaworMzMyNjYgZmVhOGRlZTI3MzMyZmZjZjUyZjU5NWUxZmU5ZDg0MTI2MjNiM2I3NiBsZWdhY3ktdHJ1bmsKKzMzMjY3IDhhMjkxNmM0MzNkOTRmZGIyYzk0NzczNjk1ZDVhYTQ5ODYxYTQxMTggbGVnYWN5LXRydW5rCiszMzI2OCBlNDMxMjZjNDcwYTc2ZWE5ZmJkM2I5MmU3ZThiNzhhZjYzMWZmNzk1IGxlZ2FjeS10cnVuaworMzMyNjkgMmQxNmMzZWZlMTQ3ZTdiZDQ0YjdkNzhmNGZmY2QzZjRmNWE5ODZhNyBsZWdhY3ktdHJ1bmsKKzMzMjcwIDYwYjUzZGIxNGFhM2NjNDFhMmNlZWM4NDdjODUwZmJmNWY4YzJkNDcgbGVnYWN5LXRydW5rCiszMzI3MSBiZTYyMDAwN2VjMWY1MjY1MjAxODYwMWJmYmUyZjU4MDU0MTU2YTY1IGxlZ2FjeS10cnVuaworMzMyNzIgMDE2OWFjZGYyYjViYzI2OTdlMTdhZTAyZDI2NTZmY2RjODU2M2FlZCBsZWdhY3ktdHJ1bmsKKzMzMjczIGNkM2Y5YjE3MGMzN2ZjYmMxOTJhN2MwZTUwOThlZWI2MjJkZWEwM2MgcmVsZWFzZTIyLW1haW50CiszMzI3NCBjYWM4NTUzODdiNTY3YjY5NjcwYWM4ZGJlNjg5NzYzYjhmNjMwZWJiIGxlZ2FjeS10cnVuaworMzMyNzUgODYzNDJmYTg5MjBkYWZlMzBiZjFkM2Y5OTViZDYxNDA3OTFkZWU2MSBsZWdhY3ktdHJ1bmsKKzMzMjc2IDBiZGI0YWNlZDZlMjBkODY2Y2MzNWY4N2Y3Y2NjODQ1MTUyMWQ1OWMgbGVnYWN5LXRydW5rCiszMzI3NyBjZDA5M2E5OTIzOGQ3MjM2NDdkOTJlMjRjN2Q1NTlmMjM2YTNiNDhhIHJlbGVhc2UyMi1tYWludAorMzMyNzggNDQ4MWM1YmRhMTk2NmFkODYwYTE2OWUzMDAxY2U2OTcwMDk5YzQ2OSBsZWdhY3ktdHJ1bmsKKzMzMjc5IDFiYTkwZDUxNDk3YmE2ODU3MDBkOGYwMDRkZmVmMDlmNDQxZGIwMWUgcmVsZWFzZTIyLW1haW50CiszMzI4MCBiYWRjZDE1OGQ4MWNhMjNmNjE3OWE0OTZjZDExNzNlMjEyZWRkMWNlIGxlZ2FjeS10cnVuaworMzMyODEgNTgyNTFlMGE4Yjc4N2JjZTNiMzRmNWY1ZmJjMDliYjM4NGRmMDBlYiBsZWdhY3ktdHJ1bmsKKzMzMjgyIGY4MDY5ZjdlZGQ0YTI5YmY2YzUwNGNkZmRjNGE5NTQ5MDE0ZmJiNTUgbGVnYWN5LXRydW5rCiszMzI4MyA3N2VkYTBmYjBlMTQ5ZDQ3MjAwZTJiODQ4MWU5OGJiMmQxYTNmNjg2IGxlZ2FjeS10cnVuaworMzMyODQgZGVkOWFiY2I5MTc0YWE3NzRkMmE3NTUyZDQxZWNkMWU1OTlhMzIwMiBsZWdhY3ktdHJ1bmsKKzMzMjg1IDdkMzA1ODVhNTkzNDA1NTE1ZjUxNGM0ODM1ZTRlZTg2OGRhZDE5MDAgcmVsZWFzZTIyLW1haW50CiszMzI4NiA4NTNlNmEyYjkwNjhlZTY0MzIxNDMxNzExMzA0ZDVmZmFlOWQzYjFhIGxlZ2FjeS10cnVuaworMzMyODcgYTQ2NDAyMGYxNWQ2NzUzODg3ZjYyYTc0YjFjMDk5ZDY3ODk4NDBkZiBsZWdhY3ktdHJ1bmsKKzMzMjg4IDdkNDE3ODVmYjYwYzZlNDgyN2VkNmJhNWNmZTRiNWQ3N2NlNDJiNWMgbGVnYWN5LXRydW5rCiszMzI4OSBiYTEyZDJiNGIzMWRkYmI2YWQ0OTIzMjRmYmExODVlODZiMWZmZThlIGxlZ2FjeS10cnVuaworMzMyOTAgZTFmYTA3YmY4NTQ4ODg1YjA5Mjk5NDRlZTBjZGRkNjk0M2ZkODEzYiBsZWdhY3ktdHJ1bmsKKzMzMjkxIGJjMTIxNWY3ZGJhMzg2YjVkYmY0ZGYxYTIwOTliM2E3NDQxODBiM2UgbGVnYWN5LXRydW5rCiszMzI5MiBhNGQ2YmM3MWYwOTFjMjdjOWU0YWU5MmI3MWJmZjljZWY3MGRlMzhjIGxlZ2FjeS10cnVuaworMzMyOTMgNDEwYjNjMjIyMjExNGM5ODViNzNhYWUxMjYzYmZjMDg3ZGM0NDI4YSBsZWdhY3ktdHJ1bmsKKzMzMjk0IGY4ODNkYjI1ZDM0NDRiZGVhYTMzZWMwMzlkZmIwZTljMDJiMzA3YmIgbGVnYWN5LXRydW5rCiszMzI5NSA2NzZhYTYyODMwZDBlOTk1MmJhZDBlYTcxNTE5OTMwYTMxZTc4NDIyIGxlZ2FjeS10cnVuaworMzMyOTYgNTMwNGJmZjI1ZTE4MzRhNjI3NjlmY2FmNzdjMWJhYzUzYmZjMTEwYSBsZWdhY3ktdHJ1bmsKKzMzMjk3IDZhYTk3MmEyMWFjNGMxNzJkNjUyZDU2ZjhjZWQ5NjQ3Y2IyZjlmYTggbGVnYWN5LXRydW5rCiszMzI5OCAxZWNkYjk0YTE4NTIyZjg5ZWY3Y2ExMDFlNjc4MTE5ZTIyYzI2ZDdhIGxlZ2FjeS10cnVuaworMzMyOTkgOWRlODJkYmMzYmQwMmI3YmJlODdiOTFmMzM4YjEwNmY2NGY1ZGE0NiBsZWdhY3ktdHJ1bmsKKzMzMzAwIDk3M2IxZTJlMjcyNjM4MTVkMjhiZGU4MGVjMDBmOGE4YmEzZDg1NjggbGVnYWN5LXRydW5rCiszMzMwMSA1ZDdlNmU4MjgyMTg3ZjVkMzQxN2EzYzI0YzFkZTg3ZmM0NGUyMzU4IGxlZ2FjeS10cnVuaworMzMzMDIgN2Q1YTljMWEwMTk3MDg0NjBjMWE2ZWZkM2VlNmY0NWFlNTA2MWIzYyBsZWdhY3ktdHJ1bmsKKzMzMzAzIGFkMmRjYTVjZmU4MWE3NzA3ZTg2MDgxMDllOGEzNmMzNzc0ZjQyZDkgbGVnYWN5LXRydW5rCiszMzMwNCA0OTA5YWE2NDQwNWZiMWMyMDZmMGQ3NGU1ZDIyMjcyODYwZmQ1NzAyIGxlZ2FjeS10cnVuaworMzMzMDUgNThmMTQxZDFjY2NhMjk5NWMxMzkyMjE4YmZkZDQ3YjU3NzY5ODgyZiBsZWdhY3ktdHJ1bmsKKzMzMzA2IGZhOTcyOTM1MzNhOTFmNGRjNjkyODZiZGE2OTM1OGRmZWUxN2QzMTkgbGVnYWN5LXRydW5rCiszMzMwNyBhNjNlYTdjNDc1Y2M1ZTI4MDFkMDFmOGRiZTdlZGY4OWRmMWViZTVlIGxlZ2FjeS10cnVuaworMzMzMDggNjFmOThlZDRiNmI1OGQzYmZjYzI2Zjg0ZDg4N2JmMDY1ZjEzNTA5OCBsZWdhY3ktdHJ1bmsKKzMzMzA5IDA1MDlhNzY1MjE2N2Y0OGFmM2ZlYTE1ZGQzZDU4ZmM2NDVjNDFkNjQgbGVnYWN5LXRydW5rCiszMzMxMCBkNjY4YTgzMzY3NzQ3ODFjZDdmYTA2ZmU5ZDkyZDM5Y2NjZDE1NGNjIGxlZ2FjeS10cnVuaworMzMzMTEgNDYyZGU5MzMzMjUxY2E4MDE0MDQ3MTZiZDY0NDEwMjkyZmQ1YzcwYyBsZWdhY3ktdHJ1bmsKKzMzMzEyIDhiZDI1ODBlMDE1NTUyMWRkZTM0NzYzMTNjMTYyOTk4YTJjNWJjOWIgbGVnYWN5LXRydW5rCiszMzMxMyAzODgxODgzYjk0MGVjMGU0MzBiNDg2MzQyMTE1YWRhZjU2NjE0YmIxIGxlZ2FjeS10cnVuaworMzMzMTQgMGEzNzUxZGY0MTk1MmI1NGY5MDY0OWM5MDE2ODZmZDk4YWUyZDljMiBsZWdhY3ktdHJ1bmsKKzMzMzE1IDYwNDU0MmU1OTFmYTY4MWM2NDg4NzliYjZjNzQ2ZjZmZTc3Y2QwZmIgbGVnYWN5LXRydW5rCiszMzMxNiAxNmVlZDJlOThmZDkzNTQ2OGRhZDJjYTYxOGM5ZDAyMjY2MGE1MzM5IGxlZ2FjeS10cnVuaworMzMzMTcgNjZiNmQxY2U0MmZlNjFlMjAzOTQ5MzZiYWVjOWM3YmY5ZGEwZDc2NSBsZWdhY3ktdHJ1bmsKKzMzMzE4IGY5YjhkNGJmMDhmYjlhZDhhOTg2MTgwZTExMDg4MmRiNGYzN2M3ZmQgbGVnYWN5LXRydW5rCiszMzMxOSA1ODI4ODdiYTdhNjhkZDdjZDQyNmZjYzk4ZDg3ZDdiYTlmZWU4NDk4IGxlZ2FjeS10cnVuaworMzMzMjAgNWIxMDVhOTUwMzM0OGZiMmVkYWViNWI0MDIyZDBjNzMyYzk2YWM1MCBsZWdhY3ktdHJ1bmsKKzMzMzIxIDk1NTFjZGFmNmU3ZTFhODg0MjIzYWJkNmZmMzU3ZTE3NmUwMTE5NTEgbGVnYWN5LXRydW5rCiszMzMyMiA2OTYxOTU0MmE5MTZlMzQzZDJiMzcwMTQxZjAyNzAyYzE0Nzk4MWE0IGxlZ2FjeS10cnVuaworMzMzMjMgOWE0YmNmZGRiZmExMmYxNTQ1M2JjMmI3NWY5NmE1Y2M1ZGZmMDZjMSBsZWdhY3ktdHJ1bmsKKzMzMzI0IDc5MzAzZGU5YTA1YTZlZjNjODkzMmU2ZTY1MjExOGRjZDdmYjNjYzAgbGVnYWN5LXRydW5rCiszMzMyNSAxMzA4ZDdlYzk5NTM1MDk5ZTNlYmZmZjVlMDFkNDA2Njg4MGEwOWU2IGxlZ2FjeS10cnVuaworMzMzMjYgY2I5M2I4NjI1MzJmNDkwMzFjMmQyNjI3YTU1MDhhZDMwM2U2NWM3MCBsZWdhY3ktdHJ1bmsKKzMzMzI3IDNjYjE4MjEyNTIxZDM0ODliMDVmYzVkYTg0MTBmYTUyNzA2ZGUwYjAgbGVnYWN5LXRydW5rCiszMzMyOCBkNzYyNmI4MGRlOTUxNjk0YWY2NDRlZWFmZjIxMzhlYjkwYWMyMmFhIGxlZ2FjeS10cnVuaworMzMzMjkgNzEwYzA5ZjRjMDVhMjNmNGUzMjRhNmE3Nzc4YmIyNGY1OTVkM2Q2OCBsZWdhY3ktdHJ1bmsKKzMzMzMwIGJhNzVhZjdhYjEzNmYzMWE5ZDhiYzhkYmRmNmUyYTRmNTMyZjA3ZjEgbGVnYWN5LXRydW5rCiszMzMzMSAzNmExNzkwNGEzZWQwMDYwZTRhMWNjOTdmZDc4YWU4OGY4ZDk1MDc2IGxlZ2FjeS10cnVuaworMzMzMzIgOTZlY2FhYjRjYmE2ODEzOGM1YzU3ODkwNWU5NzU2MWE5ZDFlOGNjMCBsZWdhY3ktdHJ1bmsKKzMzMzMzIGJlOTlmNTk3MDY4ODkwY2JmY2UyN2MwM2U5MmQ3NGNlMGQ0NTYwNDAgcmVsZWFzZTIyLW1haW50CiszMzMzNCA2NmRjMDUwMTA0N2Q0YzI2MDk3YWM2NmJiYzg5NWE1OGUwNGNlZDE5IGxlZ2FjeS10cnVuaworMzMzMzUgNGZmODNjMGI0NWU5MjUyMmIxOGNkNTlmZDUwMjIyMTU3Nzc1ZmQ4OCBsZWdhY3ktdHJ1bmsKKzMzMzM2IDUxMzk3ZWRkMmJkNGQ1ZDM2YTg1NzMyNTk4MjNhYzU1NzhlY2ViMTMgbGVnYWN5LXRydW5rCiszMzMzNyBmMDgxMTQ3YzBjOGFmYWI1NDg0ZGQzOGNlNzdmNTU4YTY4YjI1Y2U1IGxlZ2FjeS10cnVuaworMzMzMzggMjY5MmIxYzkyZThkOTFhMzYyYzUyMDljMmU0MTdmOTMyMzI1MDc0MyBsZWdhY3ktdHJ1bmsKKzMzMzM5IDA1MmJmY2JhYmI3YjlkOTJmMWFjOTZjZTM1ZjJkN2FiN2Y2NGQ3OTUgbGVnYWN5LXRydW5rCiszMzM0MCAzNjQwMjdhODE1YjhjZjI1MzFlMjVjMjkxODc1MTE0ZDlhYWIzMWJiIGxlZ2FjeS10cnVuaworMzMzNDEgMjgwZmJlNWY0ZTE2ZWNjNmNlYjY1M2JlZGE1NWNmZmJiZDI2N2RmNiBsZWdhY3ktdHJ1bmsKKzMzMzQyIGQwZjE1OTc3ZjM3ZjQ3NTJjNWE4NzYxYzQ2OTk2NmIzZDJhOTM4MGIgbGVnYWN5LXRydW5rCiszMzM0MyA0ZTFhNDdmNTIwNGNiZTQxOTg2NTRlMzM1MTU1MmM2OGE5MGFiMzBhIGxlZ2FjeS10cnVuaworMzMzNDQgYzE0OWRkNGNmZDY2ZGYxYWYxYTc5MzMwMTE4ZGJhYWQ5OGI5NTYxOCBsZWdhY3ktdHJ1bmsKKzMzMzQ1IDkyMDc3NzY0MGQyODk4ZDc3MGQ5N2NjN2ZmYWJmMzM4MTNjOGIxMzkgbGVnYWN5LXRydW5rCiszMzM0NiBkMzg4MGMyMzc2MjdmYWM1YzU3ZTRkNTc3NGJhZDgwMWYwYjhlYjllIGxlZ2FjeS10cnVuaworMzMzNDcgNmQ5ZWQ1NGE0ODIxOTBjNzM1MmJjMGQxY2UxOTYwMzNiYmY1M2NhOCBsZWdhY3ktdHJ1bmsKKzMzMzQ4IGViMGI2N2UzYzA0ZWM1NjdhMjlhN2U3NDE1NzE0Nzc4YTNkOWU5YWIgbGVnYWN5LXRydW5rCiszMzM0OSAzNzEwOTJjZTVjMmJjMzNjZDVmODMwOTdiOGM5NGRmM2QyN2ZkNDM0IGxlZ2FjeS10cnVuaworMzMzNTAgYzViYjMxZTQ1YzY2ODc2YjAwODQ1NjMzOGE1YjE3NTIxOTVlNDAxZSBsZWdhY3ktdHJ1bmsKKzMzMzUxIDlmZTY3ZjdmMzQ1OWFiNTY3OThhNWJlYTdlNGI3YTBhMWM3OWQ1ODEgbGVnYWN5LXRydW5rCiszMzM1MiA3YTI3NjZjOWE3YjU4Yzg3NjhmM2I0OTI5Nzc0MTgwMWE3NDE1OTg2IHIyM2IyLWJyYW5jaAorMzMzNTQgZjRlMmU1YTVlYzYyMmIxMTdiOGI2YzhiMTY5NDcwODc3NjZhNzUzYSBsZWdhY3ktdHJ1bmsKKzMzMzU1IDI1YjlmZDZkOGUzMDBiNDA0NTUyOTVhYjFmNmNkODQ5MGMzMWE1YjMgcjIzYjItYnJhbmNoCiszMzM1NiA3MmRjYzYzZjRkZWE2YjZmMGUxZjU1NWQ2ZmIzMmRmMWJhNThjNDk3IGxlZ2FjeS10cnVuaworMzMzNTcgODQyZDllMzBkYjljMzcyNmYwOGM0MzlhMGI3YzQ2NmQ3ZTE1NjZmNiByMjNiMi1icmFuY2gKKzMzMzU4IGVmN2ExZDI4NTc3MTQ5NDdiNjU0M2I2YjI1NWRmZDdiYmJjOGRlNTIgcjIzYjItYnJhbmNoCiszMzM1OSBmNGYxMWVkM2FlNDQwOWU3NmJmZDYyMDRlYWZmMTJiOWUzOTU0ODQ1IHIyM2IyLWJyYW5jaAorMzMzNTkgZGMxYjFjN2E2YjllNjRmN2EyMTFlYTllOGE3ZGE0ODNjMmJiYTE2NyByMjNiMi1icmFuY2gKKzMzMzYxIDUzN2M4YjFhZWY3ZmFjODg2NmU2ZGJiYmU0M2RjYjI3MzM2ZjQyZDIgbGVnYWN5LXRydW5rCiszMzM2MiBjNGY5ZmYyOTEyMjliYzg4NDZiMTVjNjY0MjYzOTRkYjQ1ZDJkMTljIGxlZ2FjeS10cnVuaworMzMzNjMgZDcxNjRmYmVjN2NlMTQwMzkxYmJhNjhlZmMwMjg5NjMyZTA1OTdiZiBsZWdhY3ktdHJ1bmsKKzMzMzY0IDI2YmE3MWFhNWIyMTU1NTZhNzNmNTZiNWFmYzZiZTdhYjhiMWQ4NTkgbGVnYWN5LXRydW5rCiszMzM2NSBkMGRjOTU2NDY3YmYxYjZjYzZmOTRiMGUwOTBhNmE4YjE0NDdlOTMyIGxlZ2FjeS10cnVuaworMzMzNjYgM2VkMmM5YTc2OTY1NjgzMzUyZWVlZDE2NmZlNjBmMTJmOTUzODI5ZCBsZWdhY3ktdHJ1bmsKKzMzMzY3IDFkNzYzODYyZDFhMWQ3MDJkOTAxMzYyZDc5ZDdmMTBjNzcxZWJkYzkgbGVnYWN5LXRydW5rCiszMzM2OCBmMWMyNzlkNzAwYTZkNmYwY2ZlNzYxMzhmMzQ2MDY5OTBjMmVmOGM0IGxlZ2FjeS10cnVuaworMzMzNjkgOGRiYzRlYzU3MjBkYmQ1ZjNkOTljNWE1NjQ2YmFjZmM0Yjc3ZTYwZiBsZWdhY3ktdHJ1bmsKKzMzMzcwIDY0ODNlZWFlYWQ4MmMwZWJjZmUyNmRiNTYyNDhkNzQwMzcwNTQzNTAgbGVnYWN5LXRydW5rCiszMzM3MSA3YjZmYTdiYjI0ZjA2NDY4NGYzODA1MzBkNTQ0NmVjN2JkNDQ1MThhIGxlZ2FjeS10cnVuaworMzMzNzIgOGZmMDQwZTlkNTY2OTUxMmEyYzdlMjk3NzVmMWQ5N2FjNGI1MTAyZiByZWxlYXNlMjItbWFpbnQKKzMzMzczIGQ2Nzc0MjRjOWNhNzEwNTkzMTcyNGEyN2U3NzczZTYwMzcxMDlhNzMgbGVnYWN5LXRydW5rCiszMzM3NCA4OTFlNTUwMmVjOWUzYjExOGRiODIyZWU2ODFiZDM4MGVhMmIzMTE3IGxlZ2FjeS10cnVuaworMzMzNzUgMTUzNjk0MWI1NDdmMDZkM2M4YjI3ZTdkZTg3MWJjNWY5NjhiZjVhNCBsZWdhY3ktdHJ1bmsKKzMzMzc2IGE0ZmVhZDBlMjRmOGFlZmNiYjk0NDdjMWQzZmUxOWNkNzlmZjE4ZGQgbGVnYWN5LXRydW5rCiszMzM3NyA3NjJlMmEyOTdhYjk3YTIxYmQ3ZTViNjBkZWQ3M2MwODUwYzE5NDA0IGxlZ2FjeS10cnVuaworMzMzNzggZTM4MTY0YWE1YmU1MTNiN2RiOGIxOGNiNzMyZWZjMWJiNzM2OTNhMyBsZWdhY3ktdHJ1bmsKKzMzMzc5IDFmMzU0N2Q0OTM5ZmRjODZlNzJhODI4ZTI1M2I2NTFhOWRmYTYzOTYgcmVsZWFzZTIyLW1haW50CiszMzM4MCA0ZDI2NTQ3ZWJmYzM4ODRjNjM0YjJjOTdhNGM1N2RhODlmNTg3YWNhIGxlZ2FjeS10cnVuaworMzMzODEgZDhkMTk3NTUxYTFlZGJlZWZlYWUyZDhlNWE0MzNmMjEzODQ4YjAyMSBhc3QtYnJhbmNoCiszMzM4MiBiNzUyOGRhZTc2NTY3YjFmNWYxMTZmYTY5ZGY2MjEwNjZhMzg0MjAzIGFzdC1icmFuY2gKKzMzMzgzIDU4MTMyYzgxM2Q3YmU5NDVlYTc2ZDhhZjhhN2U4OTIxOGNiNTE4ZjMgbGVnYWN5LXRydW5rCiszMzM4NCA4ZWQyZWQ3Nzg2OTQxNjUyZTI4YzQ3MTU4NWYzOGQ4YjU4OGUzZmUwIGxlZ2FjeS10cnVuaworMzMzODUgMjkyZTg0NDY2ZTc4MTk1ZDRmNTYzN2M3M2ZiMmY1ZTM3NDM1N2ZhNyBsZWdhY3ktdHJ1bmsKKzMzMzg2IGJmMDYzNGNjMGYxNzUwOGZlOGNjN2JlYzc5ZGZhOTg5M2YwYmUzYzUgbGVnYWN5LXRydW5rCiszMzM4NyBlOTUzMWVlNWYxODg5Zjk4ZDE1NDIyOGFiMWJlMmVmY2E4Y2UwNWFhIGxlZ2FjeS10cnVuaworMzMzODggOWQzM2RkMmNjZmU2YTZlOTc2ZmYxMWU0MzY1ZWU1MTQ1N2M1OTRhYiBsZWdhY3ktdHJ1bmsKKzMzMzg5IDJhNWU2Y2UzZjNhMTU3NTIwYTVjNDBiMDUwNjI4NWUzMTJiNDU4OGUgbGVnYWN5LXRydW5rCiszMzM5MCA3MjRmMmVkNzlkYTliM2QzNmRiZTQ2ZTg5MzUxNDNkODg0NmEyMTM3IGxlZ2FjeS10cnVuaworMzMzOTEgZmE0Y2Y4NzhjNTM4NDQ4Yzg4MDY2OWJkMjk1ZmMxOGI5OThkN2M4ZiBsZWdhY3ktdHJ1bmsKKzMzMzkyIDA1MmZlOTY2ODRlYWI2ZDg2ZDk2MmY1NDdkODllOTliMzFkY2IyNGUgbGVnYWN5LXRydW5rCiszMzM5MyAwOWU0MmY3OWY4MzBiZGYyNDlkMjgzODNjNGRjNWFiZDRjYzEyYzk1IHJlbGVhc2UyMi1tYWludAorMzMzOTQgYTQ0ZDI2N2YwMTYyOWZhNGMzMzA5NDM4NjFmMDZkYjQyMDNiNjAxYyBsZWdhY3ktdHJ1bmsKKzMzMzk1IGNkYjIxN2E4ZWIwNDQ1ZGM5ODM3YmRkYzI5ZDJhYzY4YmNmNTNiM2UgbGVnYWN5LXRydW5rCiszMzM5NiAzYjdiNGZkNWY3Y2FkNTZiZTdmMGFhMWFkMWU1MjljMTY0YWZhMzAxIGxlZ2FjeS10cnVuaworMzMzOTcgN2QwYWY0NTYxZWVkMWRlMDZkNTM3NDI3ZTBmOGQ3MTA4MjVmY2M2YiBsZWdhY3ktdHJ1bmsKKzMzMzk4IDg1ZTUyZWM4NTYyOTk3NjcwYzE5YzVhOGQ4ZTY1MTNlMTE1ZjlhYzYgbGVnYWN5LXRydW5rCiszMzM5OSA5NjJmNDQzYWUxZDkxYjM4NDRmN2FjNWM0ZjJkNWZlMjk3YWQwOTg3IGxlZ2FjeS10cnVuaworMzM0MDAgNGM5MGE2MzFkNjMyZWRmZTRlNjEwMDFkODlkMmIzNzU2ODQ4NzgxMCBsZWdhY3ktdHJ1bmsKKzMzNDAxIDM3MjE2ZTFjNjc0NzI0ZTBkMDVmNGFkMDMxYjMwZTg0MjE1MjFjZjYgbGVnYWN5LXRydW5rCiszMzQwMiAwZTEzMWUyOTQ2NjI1ZTc1Y2Y3ODJkMGZjZDYzMTI5YTU0NWFlZDYxIHJlbGVhc2UyMi1tYWludAorMzM0MDMgNDUyZTMzYTA4ZDU1NzBhMDZmOGYzZjhlOGRmOTRkNGU2NjE1OGQ2YiByZWxlYXNlMjItbWFpbnQKKzMzNDA0IDEyNDdmODRhYTZhNmMwM2M5MTU4NWI0MGU1OGExNWYxMzY3MmUxMzggbGVnYWN5LXRydW5rCiszMzQwNSAzOWJlNWIyNjI3OTJjOTgwMGRkZGZjMWY1ODJkYzQ2OWUyN2NiZWFlIHJlbGVhc2UyMi1tYWludAorMzM0MDYgZjQzMjk2Y2JjOTg1MDEzNGU0YWJmYzEwZTQwMDVlNzY2YWYxZTdkOSBsZWdhY3ktdHJ1bmsKKzMzNDA3IGU4NTBjYzUxYzI4ZmQ4OGY3ZjVmOTQ0NmEyZTA4MGEzOTA3ODgwMjYgbGVnYWN5LXRydW5rCiszMzQwOCA2NWU1MmMyNDc1Y2U1MTM1OTRlZDliYjZjYzQ1ZjcyZDc4ZjRhZDVhIGxlZ2FjeS10cnVuaworMzM0MDkgYTVlNzMzNmMwMDhkMzhhZGI4OWUyMTdkZDdiYTE0MjMwZmE5NDQ0ZiBsZWdhY3ktdHJ1bmsKKzMzNDEwIGQ1ZjI3ZTY3ZTFhYWU4Y2NjY2U2MTkxOTE4YmM2ZmFhZWFlMjNiNWQgbGVnYWN5LXRydW5rCiszMzQxMSAzYWQ4OThiOGY4MTNhYzU1ZjE1MzFiODRmMGU4NDcxYzhmYTU0OWZmIGxlZ2FjeS10cnVuaworMzM0MTIgNGM5ZWYyYTYyODY0ZDVhYjg5MWZhNzY0ZjhiN2U2MDMyNzNlZTQ1ZSBsZWdhY3ktdHJ1bmsKKzMzNDEzIDhjYTljZTM2YTIwNmZmZDFhODQzYjc0ZjhkMDgwZGI0ODRmMWUzMDUgbGVnYWN5LXRydW5rCiszMzQxNCA2ODgzNWJmMTAxZWNiMTNjYzk1NzRlZmNkODhkOTk2ZTZkZmMxYjAyIGxlZ2FjeS10cnVuaworMzM0MTUgYjljNDBmZGE2MDlkYmY3NjZiY2JjZWQwOGNjNmQzOTRjZDY5OTEwYSBsZWdhY3ktdHJ1bmsKKzMzNDE2IDRmOTI5M2NhMmRlNjEyYjAzNTFhNTlmYTcyYmE4N2M3YmI3ZjJkNGYgbGVnYWN5LXRydW5rCiszMzQxNyAzMmY5NmJhYzIxMTNjZjFkNjhiZmE0MGM4NTEwM2IzY2RjOGJhMjYwIGxlZ2FjeS10cnVuaworMzM0MTggNjFmYjk5NmViYTZlMGViMDBiNTkzYmEyYjMwZjJlZTM4NWIxMmY4ZCBsZWdhY3ktdHJ1bmsKKzMzNDE5IGViODI4YzY0ZmNjN2JhZWNhMDA3ZWZmZThkZmY5MjQ0YzE2NjgzNjMgbGVnYWN5LXRydW5rCiszMzQyMCA1YWY4OTAzN2NlYmEwODE1ZjcwOWVkM2EzMGE1NzcxMjM1ZmIxZTY0IGxlZ2FjeS10cnVuaworMzM0MjEgYWM5YTFmMGEzM2RjOGVlN2E4MGM5NWY3MzQxNjNhZjg1YzcyNTM5MiBsZWdhY3ktdHJ1bmsKKzMzNDIyIGI4NjQ0NmYwMzUwZmYwMThkODc4MjBiMTEwMjI3MmQ4NDEyODZjMjIgbGVnYWN5LXRydW5rCiszMzQyMyBiNTgyMWUxNzY0NTM4MDEyYjUxMTg5NTZiYzljZDc0Y2U5ZmMxNmRiIGxlZ2FjeS10cnVuaworMzM0MjQgOWE0NDJmNGE2NDQzZGQxZDYxNDUyYjhiOTJlYzMyMmZjNjU2NjUzYSBsZWdhY3ktdHJ1bmsKKzMzNDI1IGI0NGRlZWVjNWM1ZWM4ZmMyYjA3MjNjZWU5N2MzYjA2OGEzNTZjOTQgbGVnYWN5LXRydW5rCiszMzQyNiAwNzViMjlhZDk3YzMyMWQ1N2Q2MzU3YjAyZDcxZjY0MTU2OTI0MjUxIGxlZ2FjeS10cnVuaworMzM0MjcgNTlkYTViNTdjNjFiYWNkMjI5ZWQ3YzUxYzU0OWIyNDZjZWU3NDA2YyBsZWdhY3ktdHJ1bmsKKzMzNDI4IDNjMWY3ODM0MGI2NWU4NjJmMDA2M2ViODJjYjcxNTFiMDNkNjE2ZTUgbGVnYWN5LXRydW5rCiszMzQyOSBiNDkzYTdlNzVkOTc3ZmEyYTJhNDNjYjAxZWRlMzU2ZTkwZTc1MTIyIGxlZ2FjeS10cnVuaworMzM0MzAgMDU5MWZkOTU2YjlkMjg1N2JiMjIxZGY0MGVjNGFmMmNjMzBhZTE4MiBsZWdhY3ktdHJ1bmsKKzMzNDMxIDRlYzg4MGM1M2UyYTMwN2RlMGMxNmRjYjRjZjU1OThkMzY4OWNkYzkgbGVnYWN5LXRydW5rCiszMzQzMiA5ZWI2ZGNlZDE2ZTZiZTA3NzY1ODg1N2MwNDBiMWVkY2NkZDVjYWNhIGxlZ2FjeS10cnVuaworMzM0MzMgNzhjNTEwOWZmYWRhMDYzMTliNzkwOTMzNzIyZmFlNjBlNGZhNTQwZSBsZWdhY3ktdHJ1bmsKKzMzNDM0IDAwNTc2NWE1NmVjMzliMjI2MDJhNjNmMTg4NzI2NDgwZDczYTlmMDEgbGVnYWN5LXRydW5rCiszMzQzNSBiODRjYzNjNzgwOGY4MjM5N2Y5YTdhOTljNGU5OTM1ZTQ0MDk5YmEyIHJlbGVhc2UyMi1tYWludAorMzM0MzYgZmU1ZWIxNzgwMGY5YzMxYjQ3ZDQ1NWJlM2RjZTYyMmMxMDk3NDQ2ZSBsZWdhY3ktdHJ1bmsKKzMzNDM3IGU5ZTU4MzJkNzA2ZmYxYTA5MzA4NTAxZDJjZDExMDMzZmE0ZWRmMmQgbGVnYWN5LXRydW5rCiszMzQzOCA3YTQ3OGQxM2YyN2RhMzM2OWM2ZTliNmY2NmU2NDk3MWM0YjJhN2EzIGxlZ2FjeS10cnVuaworMzM0MzkgNzc3MGI3ODgxMzQ2ZDJlNWZmMjc3NTljZDAxNmIxNjVmOTk4M2ZiMyBsZWdhY3ktdHJ1bmsKKzMzNDQwIGVkYTVkMDE1ZTExYzE4NjM3NzhmMzhjOWQ4MjIzNTJjM2M1MTY2M2MgbGVnYWN5LXRydW5rCiszMzQ0MSAyOGNmYTU0NmYxZWM3NjRkZTIzMTA2NjY3ZWJjOGU1MmFlM2FkZTBiIGxlZ2FjeS10cnVuaworMzM0NDIgMDcwMzQ1YWQ4ZDcxY2NiYWFkMjdlYWI0ZTg4OGI3YzUzNDUyZWYxNSBsZWdhY3ktdHJ1bmsKKzMzNDQzIDMyZWZlNTRkMGU4ZmZkMThmMDM3MWQ0ZjBiMWJhNGQzOGEyMWY5MmUgbGVnYWN5LXRydW5rCiszMzQ0NCBkZGMyNDc0MDRkYWIzZWYwZjk1NjZmMWFjZWEzYzFlNjIxN2JmZGNhIGxlZ2FjeS10cnVuaworMzM0NDUgOGUyN2U1Y2RlNTlhZWQxOTNkNzgxM2IzNzQ2YWQ3N2FjNWY1NTYwNCByZWxlYXNlMjItbWFpbnQKKzMzNDQ2IDkzOTYxMzQ2ODRjZjU5YzkzNDBmYWVlMWZhYjJiMjJjZjM3MmFiMzYgbGVnYWN5LXRydW5rCiszMzQ0NyBlNmY5ZjZiNWQ4ZDdlNzEwMTNiYmU2N2U5MWEzNDUyNWNhYjg2ZmFiIGxlZ2FjeS10cnVuaworMzM0NDggZjczM2JhYzc4Zjg3ZTRlZmU4NTQzMDAxMjM0YjE0ZmJjNjNmZDc5MSByZWxlYXNlMjItbWFpbnQKKzMzNDQ5IDcwNTZjYzVjODE2N2ZjMmU0YTMzM2ZkOGRjNDM2ZmU0MjNjMGRlNmEgbGVnYWN5LXRydW5rCiszMzQ1MCBjZTk4ODM5NGM3NTQ3OGZkZTFhN2I3ZTkzOTViNjNlMTgxNjYzNzc4IGxlZ2FjeS10cnVuaworMzM0NTEgMmZjZGUzMmE4YTU3OTllNTg0Mzg3NmIwZTk3OGQ5ZGNhZjQ3NDdhZCBsZWdhY3ktdHJ1bmsKKzMzNDUyIGRjNmE0NjczMTg2MDZmOTg1ODZkYTk3NzU5ZmMxOTllNmY2OGMwZDYgcmVsZWFzZTIyLW1haW50CiszMzQ1MyBkN2FmY2RjNjllZDQ5MWNjYjU3NWU2YjYxYTc4YWEyOWI4MTM0YWI2IGxlZ2FjeS10cnVuaworMzM0NTQgYzczZmFmNWRlMWJkM2QxNDNiZmFkYWM1MjZjZWJjZTkwYjQ4NWQ3YiBsZWdhY3ktdHJ1bmsKKzMzNDU1IDQ2NmE1NDBjYzIyOWZhYjI5ODRjYTQ3OTlmN2M1N2M4ZTk3NjUwNGQgbGVnYWN5LXRydW5rCiszMzQ1NiA0ZmM1NmNhZTRlYjhjMTY1ZGMyMDI3NDczMWRjYmIxZDhlNzU4MzU3IGxlZ2FjeS10cnVuaworMzM0NTcgMzFkOTIzNTRmNzJmMDlkZWI5YzY3ZjA5ZDE4MTY2NjYzNjg2YjlhZSBsZWdhY3ktdHJ1bmsKKzMzNDU4IGM4ZmI0YWY5NmRlMGU1YmVlMjBkMDljNTAxODgwMjYzYWZhZmFkY2UgbGVnYWN5LXRydW5rCiszMzQ1OSA0YmFmZmUxNGM4ODc0YTEyZDkzYWYyODllMDI5YWNlYWQ3NzM4ODhhIGxlZ2FjeS10cnVuaworMzM0NjAgMmU4NGZkYjRmZTMwZDdiOWZkODRjMzJjOGI1NTQzMGVjNmI3MjlhMiBhc3QtYnJhbmNoCiszMzQ2MSA5MDM1ZmU3Njg2ODlkODllMmEwNWFkMDc3ZjczOGI0N2IxYzFkZWQ3IGxlZ2FjeS10cnVuaworMzM0NjIgZGVmYTFkODI1YjA4Y2Q2MjRiZjBiMWZkOTZhZmRkY2U2MDlmNTQyMyBsZWdhY3ktdHJ1bmsKKzMzNDYzIDEwMzdmZWFjYjU0ZmM5OThhYzg3MjZjYzE4NjExMDg0YWNjMzlmZGYgbGVnYWN5LXRydW5rCiszMzQ2NCBjNzAwNjNjM2FlZWI4ZGY3NDVmYTJlZGY3ODNhZTRiNTRiZWZkNDliIGxlZ2FjeS10cnVuaworMzM0NjUgY2ZhZWRkZTUwYmQ2NDMyNjhlYzdjZjBiYTBmZTU4YzcxZWRiZjJhYSBsZWdhY3ktdHJ1bmsKKzMzNDY3IGU2YTc4ZGQ0MjVjOGUwYWFmOTAzNzMwOTE2NTUyOTNiZDI5ZTBlZDYgbGVnYWN5LXRydW5rCiszMzQ2OCA5NGU1ZDFiOGY2OTY5ODk3NzdkYTVlZTJjZjdlMDgxZmJhNTdhODAzIGxlZ2FjeS10cnVuaworMzM0NjkgZDdlMWExYmQ0ODgwYjc2MWE3MDFiZjU2Zjg3MjVhMjk0YWE0MjkxMyBsZWdhY3ktdHJ1bmsKKzMzNDcwIGM0NDk2NjNmYTI3ZGUzOWJhNzZmYTg5Nzg1YzgxNGVjOTgzYzYyYzggbGVnYWN5LXRydW5rCiszMzQ3MSBiYmMzNmUwZTEwYTE1NzkyOTA4MWQxMzk0NzIxY2Q3YzkzMjdlNzBiIGxlZ2FjeS10cnVuaworMzM0NzIgNTdiOTNjOTQ4MzBhMzRlMjBhYmYxNzBhYWQxYmRmNmNmNjgwYjVjMSBsZWdhY3ktdHJ1bmsKKzMzNDczIGU1Yjk5ZTYwNTkyNjE1ZDJjZDAxMjAwMDdjOTdkNTZmYjRlMjk5ODQgbGVnYWN5LXRydW5rCiszMzQ3NCAxMjcyZjc5NTQ3YmE5MTYxMTlkODZjNjkxNjUyNTYyYWE3MzRlMGFmIGxlZ2FjeS10cnVuaworMzM0NzUgYmFiODllNDA2ZjMwZTI0NWI5ZDdhMjkxNDJkNGY3NzU1NjQ0NWRiOCBsZWdhY3ktdHJ1bmsKKzMzNDc2IGQyODNiMTczM2MwZDdhNTc3Y2Q2ZjJiOWI3YjRjZmIwZjQ3ZDAzYWUgbGVnYWN5LXRydW5rCiszMzQ3NyBhYzBmYzA4OTNhYWNmMzM3NTM5ZGM3OTc2NGY5N2ZmMTZmZTZlYTU1IGxlZ2FjeS10cnVuaworMzM0NzggMGRmMTFiMmJmY2E1MThhYTZhNWZmOWZjYmVkYzEzOTM4OTU3YjcwZCBsZWdhY3ktdHJ1bmsKKzMzNDc5IDMyODAzNTUzMjlkZDM5YmI0OTIwMDQ1Njk3NTUyODAxZWUxYjI1ZTcgbGVnYWN5LXRydW5rCiszMzQ4MCA1YjIxYzcwMDM5NzQ1ZTY0OTIyMzZjYjZkMDBiOTk1OTAyNWNiNWI3IGxlZ2FjeS10cnVuaworMzM0ODEgYzljNmUyYzllYzk3NWM4NWI0OGU0MWYwNjEwZmNmNWQ4MzUzZmQzZSBsZWdhY3ktdHJ1bmsKKzMzNDgyIDJiMTdhZDY2ODY2NmU1ZThjYTYwYTgzMjFjMDA2YzRiOGE1MmMzYzggbGVnYWN5LXRydW5rCiszMzQ4MyA5OTE2YjU5MjYxZDc2MzM1YWRkOGFlODMzNmZjM2UyMTE1MGQ4MTU3IGxlZ2FjeS10cnVuaworMzM0ODQgZTAyYTVkMTg0OWY4ZDg3Y2JiNzgxOTVmZmRmNzhkMDcyODcyOWM0MiBsZWdhY3ktdHJ1bmsKKzMzNDg1IDY0NDNhMGZlZTdlMTAxNDMwM2MyYjAwYWRiMmIyNDBlMzI0MzJlNzAgbGVnYWN5LXRydW5rCiszMzQ4NiAzYjQxYzYzM2Q3Njk2Yjk2ZjU0NmEyODk0ZDE1ZmZmM2ViOWQwYjQ1IGxlZ2FjeS10cnVuaworMzM0ODcgN2JlMjRjYzZjMjhkN2JhNTVjOGIzY2YwY2M0MDEwNTVhMjYyMzY4NCBsZWdhY3ktdHJ1bmsKKzMzNDg4IGNiM2NlN2NlYzI2MTJmMTkzZjZlYmY4YjhjMDQzNzg0ZGQ2ZDM0YzQgbGVnYWN5LXRydW5rCiszMzQ4OSA0ODM3YmYyMTZhZTVmNTBkNzAwZTM5MjkxN2EzYzRkNGE2NzVmODVkIGxlZ2FjeS10cnVuaworMzM0OTAgZWQ0MzE1NWIxZDNjOTA3OTY1NWU4YWRmZTM2NjU4OTQxM2ExMTM1NyBsZWdhY3ktdHJ1bmsKKzMzNDkxIGQ0ZmZiMDQ5MGFjMjdkZDRiMTllMmY0M2UwNGI5N2ZmOTFiM2E5MWUgbGVnYWN5LXRydW5rCiszMzQ5MiAwNzE1MDE4MjRiYmQ4ZDkzMDc0NTVlNzgxY2Y4MTMzNDczZTA0MGU0IHJlbGVhc2UyMi1tYWludAorMzM0OTMgODU5Y2JkN2M5YjQ4MTQwZjI1OTdkODJmNzAwNzZkYTA3YjQyYjZiYSBsZWdhY3ktdHJ1bmsKKzMzNDk0IDFkYzE1ODY1MmU1YjM3M2E0MmZmZTVhNjY2MThlYzgwNzA5OWVmNGIgbGVnYWN5LXRydW5rCiszMzQ5NSBlMWE2YmY0NTY1Y2RlNGU0N2ZjNmIyMTYxZmQ3MDY3NTJmYTIzNmYwIGxlZ2FjeS10cnVuaworMzM0OTYgNDU2OTEyYWRhNjlmZjkxZGZjZDFiZjljNmFmYjUyNWI5ODUwNWM0MCBsZWdhY3ktdHJ1bmsKKzMzNDk3IGJhNWYwYjgwODE5MjdiNDYyMjg5MGY0NDk2YjZkNzFjODljNTQxNTggbGVnYWN5LXRydW5rCiszMzQ5OCAzN2JjMjNjNmNmNmM5MjIxMmU0YmZhNWY0ZDViYmI1ZTYxM2FmNWNlIHJlbGVhc2UyMi1tYWludAorMzM0OTkgYTM3MTA2YWM3YzhjYzAxN2U5MGYwOTFiMjg4OTUzNmM1MzUzMjJlZCBsZWdhY3ktdHJ1bmsKKzMzNTAwIGU2ZWRiMDQwYTc3ZDRhY2U5ODExNjJmMjQ4ODViYTQ2ZWU0MGQyNjQgcmVsZWFzZTIyLW1haW50CiszMzUwMSAyZWMyZjYyMDg3Y2I4ZWJiYzIyNGRiZDdmYjljNzMzNWY4NmUyMDRiIGxlZ2FjeS10cnVuaworMzM1MDIgNWU4MWQ5MmJmNjdkYjAwNmY0YTY2NjdmZDM2NjgwZGNlN2UxNThiZCBsZWdhY3ktdHJ1bmsKKzMzNTAzIDA5ZGE5ZTU2NTU1ZDgwY2MyZTU4YTEzMjc2MDU2YTg3NWQyZDNkMTkgbGVnYWN5LXRydW5rCiszMzUwNCA0MDI5YTcyNmZhYTY1NTAzNjgyZmU4ZmJmMmMyNWRmZTkxZTFlOTE2IGxlZ2FjeS10cnVuaworMzM1MDUgOTJmMWVlYWViNDFkNzUxOTMyNzMxZDFlNTlmZmM0MmVlODc4MDVkZCBsZWdhY3ktdHJ1bmsKKzMzNTA2IGI5ODI3YzA1NDYwZjM4ZjhjMTlhMjI4ZDY0MDJiY2NmMmViNDk4Y2UgbGVnYWN5LXRydW5rCiszMzUwNyBkNDVkMzE3ZmRhMzUxYWRiNTQ2ZTRhZTcxYmJhYWVlMGJiNWRjN2EyIGxlZ2FjeS10cnVuaworMzM1MDggNzc4YjIxNTIwZGI4Yjk0ZWFmMTljMjcxOTFmZjFmYWRhOWZiNWRlZCBsZWdhY3ktdHJ1bmsKKzMzNTA5IDhkNDVhNGNlYTkzNDM3ZTdjNTQxNDRkYjFiYTA4ZDRkMmUxZDdiZjMgbGVnYWN5LXRydW5rCiszMzUxMCBlNTdhOWJiZWVjNWIyNzdjZGYxZDAyNmMxNGNjZTg0MTk4ZWIzM2MyIGxlZ2FjeS10cnVuaworMzM1MTEgNjQxOTRlNzc1YjBiYzI4YzI3NTBlMDY3YWE3ZWY0NGU2MGU2NjI1YSBsZWdhY3ktdHJ1bmsKKzMzNTEyIGZlNzlhNWFiMzkyYjg1OTA1YTgzODRiM2FkOGQwMmJiOWQxNmRkMWYgbGVnYWN5LXRydW5rCiszMzUxMyAyZDViZWNkOTAwZWViNTY2NmEyODcwZjM5ZDFmOTcxNDg0NmRlNGEzIHJlbGVhc2UyMi1tYWludAorMzM1MTQgMDZjY2EzMjdiYWNkZmFiNzU1MmIxMGIzYmQ3MGY5ZTAyY2FjYzc3NyBsZWdhY3ktdHJ1bmsKKzMzNTE1IGRkOGNhMDgzZWE2Njc4ODAyNDE3NTU5ZDE3YTM5YzJmYTNhMTcwNWYgbGVnYWN5LXRydW5rCiszMzUxNiAwMTRjYzM2MmFhOTEyMzYwYWJhNmM5Njk2N2M2MzdkN2RiYTExNGI1IGxlZ2FjeS10cnVuaworMzM1MTcgZTY4Njc2NTIzNjc3NGM1M2M1NmY4ODkwZTI0ZDg1ZjkxODUyM2NkZiBsZWdhY3ktdHJ1bmsKKzMzNTE4IDdmYmEzM2ZmMjEzNThhMzA1YmM4ZmQyMDEwYTZhYTJlOWJjY2VmMTUgcmVsZWFzZTIyLW1haW50CiszMzUxOSBiODVmOGJiNWMzNzU0YzY4YTcxMTZlMWQzYzFkMTYxYWFlNzg0N2RiIHJlbGVhc2UyMi1tYWludAorMzM1MjAgNTdhZGY4MjdkNGM3YWQ2NDc0MWNiNDFmOGJjN2E1ZTQyODg2NzlhMyBsZWdhY3ktdHJ1bmsKKzMzNTIxIDJiYjUyM2FkOWI3NjViODk2YmVlMzZmYzdkZjk4MDIxMzcyOThlMmQgbGVnYWN5LXRydW5rCiszMzUyMiA3MDUyYzNlNWFmMDI2ZmJmYWViZmM3MjUzZGE4OWRkZTUzNjE3NmJiIGxlZ2FjeS10cnVuaworMzM1MjMgNDJlODI2M2QzOWFjNjYxZjc1NWJmOTM4MzNlODhiOGNjY2ZkYzdlYiBsZWdhY3ktdHJ1bmsKKzMzNTI0IDQ1ZGMzMzQzMzMyMzU2ZGQzOThlMTdlOTQ2ZGJhZTFkMTI0MDI4MzcgbGVnYWN5LXRydW5rCiszMzUyNSBjZGFiMjVkMmY4NDI5MmU4YjlmZGZjNTBhMTU3OGMxYzg0Yjk0YzQ5IGxlZ2FjeS10cnVuaworMzM1MjYgODQ4MzU4NDZlZWFiMTE0ZDE5ZDMwODMzY2Y0NDIxZTEyOGIxOTlkZSBsZWdhY3ktdHJ1bmsKKzMzNTI3IDljNTdlYjUzMzdiNzIxODA0ZjQ4NzAxOTk4NWMwMGVjN2U0NTYyMmEgbGVnYWN5LXRydW5rCiszMzUyOCA4ZWIxY2FlMWE3N2JkOTU3YmE2MWZmMDliNDMwMWQ3NDMxYjhjY2E5IGxlZ2FjeS10cnVuaworMzM1MjkgNDIxZDgwNWMxMWYzM2UzMzI0OWI0OTU1ODk4YTkwMTE1ODRhNmMzNyBsZWdhY3ktdHJ1bmsKKzMzNTMwIGJmMDBiNTZjMTRhOTgyZWIxMWQ0MzViNzk4M2FiMWRkZDc3MzE3OWYgbGVnYWN5LXRydW5rCiszMzUzMSA1Nzc3YzgzNGY1NWNlOTJjNGI1N2VmY2IxZjhiODJhZTczMjM0YWNjIHJlbGVhc2UyMi1tYWludAorMzM1MzIgNTZjMDFjNDUwOTJjMDkyODJkNDJlNWVhYTNlYmM1MDI3MmU2OGU2NiBsZWdhY3ktdHJ1bmsKKzMzNTMzIGNkMGJjYWEwYmQ4MWZlNDAxNWI0MTViOWYxODM4ZmYwYzk2ZGM1NzYgbGVnYWN5LXRydW5rCiszMzUzNCAxYmFlNzhjODNiZTk0YmVjMjYxYjg4MzFhZTkxMjBiZjIxNTliMDhlIGxlZ2FjeS10cnVuaworMzM1MzUgMWMzYjgxNTg3NjBjM2QwMjNlMTAxZDJjNzFmMWZjMTA5Yzk3NTE2NyBsZWdhY3ktdHJ1bmsKKzMzNTM2IGYzMzlmMjliMDZjYmI3OTI1MjVkZWZkZjkzNTIxMzdmYWIzZGZkMmQgbGVnYWN5LXRydW5rCiszMzUzNyA5OGM1OWJiZGQ4ZWM0Nzk0MmYyOWZmZTdjYWFkNmQ3ZDNmOTY4MjQ0IGxlZ2FjeS10cnVuaworMzM1MzggODRiY2NiZWFiNWZhYzU4MTJmMTg1ZjNjZTlmN2ZmN2VlZmM3NGFhMyBsZWdhY3ktdHJ1bmsKKzMzNTM5IGI3NjYxNTJjNzkwNDVjNWM5Yjg1MzllMzQ4Y2FkNDY5MjgxOWMxMGMgbGVnYWN5LXRydW5rCiszMzU0MCBiNDRlYjUxOTMxZDBmMTM0NDU5NzRiMDljMWEyYjQzODhhYTk5OWJiIHJlbGVhc2UyMi1tYWludAorMzM1NDEgMTk5Y2Q3OGQ2ZDc4ZDM2YTZlZjBmYmEyMzJjN2JlYTgzZjQxNGFkZiBsZWdhY3ktdHJ1bmsKKzMzNTQyIDYwNGQ5MzgyM2VjMWQwMTI4OTcwMTI1ZWRkODk0ZDg4MTNiZmFmNWUgbGVnYWN5LXRydW5rCiszMzU0MyAzNDQyZTdjZGFjZTg2ZTM5YzY1OWQ3ZGVkOWU0NDc5ZTMyODkyZDA0IGxlZ2FjeS10cnVuaworMzM1NDQgMDMwMjI3ZGU4MDUxOGFhYzdhZWE5ZDU4NTQyYzAzZDVhNzdmMTI4NCBsZWdhY3ktdHJ1bmsKKzMzNTQ1IDk1NDcxN2U2ZmRiNTBiNDVkYjg3ZDFjZWIxZTQzMWY3YzUwNDI4ZjggbGVnYWN5LXRydW5rCiszMzU0NiAxYTQyYjEyOGM1ODE0YThhZjM4OWJlY2Q3MDVkZjVlMjE3ZDg2ZjcwIGxlZ2FjeS10cnVuaworMzM1NDcgZmVlMTc3NmU2MWM3MDU2MTE0YTk3MDMzMzJkYmRlN2Q2YTZhYjU1ZiBsZWdhY3ktdHJ1bmsKKzMzNTQ4IDQ3NTAxMTg0YjU0MzVmN2UwNjAxMmIwYjAxOTc2N2I5NjgwMDJmNDAgbGVnYWN5LXRydW5rCiszMzU0OSA2MmYzMDYzYTFhMGY4NzZiYjc2MmY3OTE5ZDUxNDFiNzYwMDNlZjMzIGxlZ2FjeS10cnVuaworMzM1NTAgYTBhNzIzMWM2ZmUwZTM0ZjRjMzAzMGI0YWNmMWJlNjlmZjg3NTAzNSBsZWdhY3ktdHJ1bmsKKzMzNTUxIDcyY2JjNDFjY2MyZjM4MGUzNjUyYWM3NTBmNzdlZGQxNjFmYjExMjQgbGVnYWN5LXRydW5rCiszMzU1MiAyYzUxOTRiYWE5OTQ0ZjlhYzVlNGIwNGM1ZDdlN2Y5YjY3MmRjZWEwIGxlZ2FjeS10cnVuaworMzM1NTMgZWQ4NzA5YjFhM2VmYjEzYTdjYzRmNjY0NzVmODYyOGU2NzZjNmZjZSBsZWdhY3ktdHJ1bmsKKzMzNTU0IDNmMjE0YjM5YjRkZjk1NDk3ZjQxMTM2MTYwMTAxY2NlYmExM2RkNGEgbGVnYWN5LXRydW5rCiszMzU1NSAxOTUxMWE0OTBlN2MwNTExMzUxNTA5N2QzYmMxZGQyNTI0MGJjN2FhIGxlZ2FjeS10cnVuaworMzM1NTYgOTJhNWZlNTc4MzgwMzhmZGEwZTZmNzlmZjlkYzVkZTMwZmVmN2JjYiBsZWdhY3ktdHJ1bmsKKzMzNTU3IGQzN2QxNTkwZTFhN2QxYTFmOTFkNmYzOGNmYjlkYTI4NWZlMDVjYjggbGVnYWN5LXRydW5rCiszMzU1OCA4OGI5M2UwN2ExZjgwYWY3YzI1OGI5ZmE4OTUwMmEwNzI3Mjc4NWI2IGxlZ2FjeS10cnVuaworMzM1NTkgZjg5ZDU0NTUwNWM3MTU0NTRiYzg1OTViMWZkZmM2OTBmMjkyOTc1NiBsZWdhY3ktdHJ1bmsKKzMzNTYwIGI2OGZiNGE0M2QwZmVjZGI5NGRmZWE0ZjM0ZmQ0YTg0MGE3NDY4NzkgbGVnYWN5LXRydW5rCiszMzU2MSAyMmJjYTI4MjM2ODU2ODYxYjBlOWUyZWFlNzA2Y2ZmZGY4Mjc5NmFiIGxlZ2FjeS10cnVuaworMzM1NjIgNGUwNWM1NTUxNGUxZDYzMTYxZjM1N2UwNDc5MjFlZGVlOTM3NTk3YyBsZWdhY3ktdHJ1bmsKKzMzNTYzIGUyYjQwMzEyNzU3ZWUxMWZmMDJiMjlkYTkxMWIwMmJkYzA2ODhjZjYgbGVnYWN5LXRydW5rCiszMzU2NCBkYTdlYWU0NGY0ODdiNGJjYTI5NWJjNGQ0ZDBiMzdiNTZiNTk4YTFjIGxlZ2FjeS10cnVuaworMzM1NjUgOWNhMjkxODY1ZjljMWYyYTAyN2UyZmQ1NTk1MWVjMzQ2YjU0OGM3OCBsZWdhY3ktdHJ1bmsKKzMzNTY2IDc5ZWM3ZTMwMmQ1MzU3NzZiNjlkMGY1MDZlYjg2OTJkYzE3YjEwNzIgbGVnYWN5LXRydW5rCiszMzU2NyBlOWRkZGZkMmE2MmYwY2VhMjVjYzc5MmU1ZWNkYzMyNWI2YTZkZGI1IGxlZ2FjeS10cnVuaworMzM1NjggYWM4NGYxNzliYjg0MTMzOWM5YTJmODZiNWM1MmJhZjY2Y2RhZTA4ZCBsZWdhY3ktdHJ1bmsKKzMzNTY5IDk5NGI2YmU0OGUyODc5YWY2ODY3ZmQxZjJjYjcyMGQwMzY3ZmY4MWYgbGVnYWN5LXRydW5rCiszMzU3MCBiNDdhNzI3NGNlNWMxNTgzOGE1YzZiMDQ5YmI2NWE3NzY1Y2M2YjE2IGxlZ2FjeS10cnVuaworMzM1NzEgZGJhZTA1YzI5ZTkzODU0NGI5ODYyZGM3MzI2NzMxZTI4ODMxYmVmYyBsZWdhY3ktdHJ1bmsKKzMzNTcyIGQxYWE1NzUxZmJjZmRiYTNjMWZlYWQ5MGNiYjFjZTM5YzBiZjI4MTMgbGVnYWN5LXRydW5rCiszMzU3MyA0MzRiNmNkYTRmYTVhZjcwMTdjYjZjNTA5YTU5ZWY3NmNlYWJiYjk1IGxlZ2FjeS10cnVuaworMzM1NzQgOWRlYWMxYWE0MjFkYjY5ZmE1NWU0Mzg3ZWU2NGVjYWMzZjJlZGZmNiBsZWdhY3ktdHJ1bmsKKzMzNTc1IGEyMzEwNmRmYzk0ZDNlYmY2ZmRjMzdmNmNjNjNlMjg1NDQ1YjcwMGQgbGVnYWN5LXRydW5rCiszMzU3NiA5ZjYwYzNlZTk4NWEyYWUxMGZlZDljYjk3ZGY1YzE0OGEwN2VkZjRmIGxlZ2FjeS10cnVuaworMzM1NzcgODBlZDRkOTdmMWJhZWEwZGU5OTU4ZGY3YTFiOTZmMWRkODhjOTRiOCBsZWdhY3ktdHJ1bmsKKzMzNTc4IDcxNjM5NWMxOTU4NmUyYTEwNjY5MmMyNTkyNzhkYTdkMTFlYjE0NmMgbGVnYWN5LXRydW5rCiszMzU3OSA4YjE1NWU0YTEwYTI1ZDJiODcxNjEwNzBhNzRiMTVlODMyNWNiY2FiIGxlZ2FjeS10cnVuaworMzM1ODAgMWUyZTFjNzkzMTZlMTJmYmQ1ZmFjNDBiZjFhMzdjZjE2NjM2YjU3YiBsZWdhY3ktdHJ1bmsKKzMzNTgxIDVhOTQ0YWM4NTI1YzFmNjFkNWRhYTNmZWVjYzkwNTA5MWJkYjdlOGYgbGVnYWN5LXRydW5rCiszMzU4MiA0NTFiN2U4MzkzZmM0MWViMTQzZmVhMjM0OWYxZDM4NDIyNWM2NTkzIGxlZ2FjeS10cnVuaworMzM1ODMgZDU5ZTU4YmFjMzkyMzc1MGIxNDNkOTI0NTdhOTkwYzkxYjAxOWI0YSBsZWdhY3ktdHJ1bmsKKzMzNTg0IDBlMjIxNWI4MjI2ZDJhZTNhYmE2M2YwN2E4NjJkMTFkYmI5OGQ5ZDUgbGVnYWN5LXRydW5rCiszMzU4NSA0ZTYxM2RkZjJhMWJkMTY1NmM0ZWY3NGRkYmIyYTEwY2QyMzUzMDYxIGxlZ2FjeS10cnVuaworMzM1ODYgNDE2ZDk0NThlZTk3Y2IzZjJlM2ExYzMwNDM2Mzg1NGMzOTU4OWI4YSBsZWdhY3ktdHJ1bmsKKzMzNTg3IDUyNzYwNzUxYzYxZWU3MmNlOTBhMWZlMzhjODliMTFiNjAwYmYzMWIgbGVnYWN5LXRydW5rCiszMzU4OCBmNzczYjU2OGIyZTczZDgyOWVhMTkyYzIxMDM1NTkyN2IyNjJmNmI2IGxlZ2FjeS10cnVuaworMzM1ODkgZmNmNjY4MGI2YTZmYjc3MWM4YjU5OGFjYWM2ODU2NzE5OWYzY2M5OSBsZWdhY3ktdHJ1bmsKKzMzNTkwIGRmOWVhNzQ5NDA5YTNlZTQ1M2M0ZjcxMzQ1MGQzNzM0NTMzZDI1MTEgbGVnYWN5LXRydW5rCiszMzU5MSA1NjRhNDllZWE0MTRlMTAwOTMxNjk0NmFlZmMyOTI0MTRkZGEwZjY4IGxlZ2FjeS10cnVuaworMzM1OTIgZWM5ZjE4NjE1NDg1NmE5MGFmNTkwNDRmYmVjYTI5MDcwOGRjMTM5NyBsZWdhY3ktdHJ1bmsKKzMzNTkzIDdiMTZjZjcwZWJkODllNDI0ZDVhMjQyY2JlOWU4YzM1MmYyODJhYWYgbGVnYWN5LXRydW5rCiszMzU5NCAwYjM0MjJiNjIxMTkxMTk2YzMzZTc2YTc2YmRjMjliOThmNDlhMGMyIGxlZ2FjeS10cnVuaworMzM1OTUgMmE0MGNhMDZhMjJjODhkOTJmNzcxNWJkYzA4MmY5YWY3ODQyMzA4MCBsZWdhY3ktdHJ1bmsKKzMzNTk2IDk2YmFiN2M4MmUyY2ZjOTZjMTAwNjkwMzkwNDQyYjhhMDllNjYyOGEgbGVnYWN5LXRydW5rCiszMzU5NyBjODZiMTM1NGFjNmY2Zjc0ZGEzMDBhYzhkOGM1M2NmMDRlNjhkY2U0IGxlZ2FjeS10cnVuaworMzM1OTggMWJjMjU1OTIyOWRiMWRmZjM3OWU2ODY2MDIwYzFlNjg1M2ZmYmRlMCBsZWdhY3ktdHJ1bmsKKzMzNTk5IDdmZDIwYWU0NDE0MmYwYzlkZjA1YWYwMzJkN2RmMDQ5Y2U3NWJiMGMgbGVnYWN5LXRydW5rCiszMzYwMCA4ZGVjMGZiMTQyODU0ZjM2YjVkMjJjZWMyNjBjZjE3MzQzM2JhODM2IGxlZ2FjeS10cnVuaworMzM2MDEgYTczYzI4ZGVlZjZkZmZlNzM0OTM2MDVmYWYwYjU3NWIyZTM3MWUyZiBsZWdhY3ktdHJ1bmsKKzMzNjAyIDg2YzQ3NmE0MjVhN2RjNTI3MzZiMjg4YjYzZTk4NmZhYzg0MTE3MjIgbGVnYWN5LXRydW5rCiszMzYwMyAwOGQyNjM2YjhlNTg0NDNkMTc1MGY2NzhhOGQxZWI2ODhkNDhhNTQ2IGxlZ2FjeS10cnVuaworMzM2MDQgMjU4MDBhNzI0MDExZmIyNTQ0NTYzYTM1NmE2ZTgxYWNjOGU2YjI0MCBsZWdhY3ktdHJ1bmsKKzMzNjA1IGNmYWQ1NDI4M2UwMDA0NzY0MTI0NDUyZDAxODQxMjA3NmQ2OTUxODMgbGVnYWN5LXRydW5rCiszMzYwNiA3MjJkN2M3YTc3ZTJiNDdmM2FhODk1OWQ2Y2E4Mjc4NmIyOWY1NmYxIGxlZ2FjeS10cnVuaworMzM2MDcgNjBlM2QyOTlmYzg2NzhmNDQyNjE2ODAwNjVlZjJiOWViOTE1ZDVjYSBsZWdhY3ktdHJ1bmsKKzMzNjA4IGJiOGNjNzI5MTVmNTY4OTJjM2I1MzEzM2RhZjA3YWYxOTE1YzZiMjkgbGVnYWN5LXRydW5rCiszMzYwOSBlZTdlMjIzZGJjYWNmMDY5Y2I3N2U1MGE1NmQ4MzkxYWRiZjc2NzE5IGxlZ2FjeS10cnVuaworMzM2MTAgYjg0NjQ1YzMxOTVlNDg0ZDY3MjZjYTViOTc1OTE0NWE2NDdkMTc1NiBsZWdhY3ktdHJ1bmsKKzMzNjExIDRkNDQxN2RmNjNmNGU4MDhiZjMyMDk1M2E4ZDRmMzVmNzY4NjAxYWQgbGVnYWN5LXRydW5rCiszMzYxMiAwMzE1M2ZkMmQzZjIxNGMxYTdhMDJjMjA3OTE0MTIwYmNlNTY0ZmVhIHJlbGVhc2UyMi1tYWludAorMzM2MTMgNjI4ZGNmOTBiZjllMmUyMDFkMjJjMzZkYWJmODU2YTQ5M2FiNDk3MyBsZWdhY3ktdHJ1bmsKKzMzNjE0IDQwN2MwZGVjMmY0YWRjOTJjNjFlYTgyNDQwNzVhOGNiMWU2MDcxNjAgbGVnYWN5LXRydW5rCiszMzYxNSAyOWE2M2M1Y2ZiYWZiOTQ0MTViMmU4YWY4NGQwMTQ5OWFlNDk3ZDY4IGxlZ2FjeS10cnVuaworMzM2MTYgZGEwYzkwYzZhZmQwMWZjYjZmZjhiNzNhZmRhNThkYjg5NGVmMTJlMSBsZWdhY3ktdHJ1bmsKKzMzNjE3IDkwMTNkM2MxZDY1NTA2NGM4MDBhNzk2MzU3ZmRlYzcwYjJkMzY1MDAgbGVnYWN5LXRydW5rCiszMzYxNyBkMDU0YzI5NjQ3ZjkwYmNjYjgzNDViZDc3OWJjYTFlZWNmMmRkN2YyIGxlZ2FjeS10cnVuaworMzM2MjAgOGEyOTM0NDk4MjlkN2JhZDA4MmJlOGIwNWJjNmQ2N2ZkNDFkYWE0NyBsZWdhY3ktdHJ1bmsKKzMzNjIxIGRhMzU5Mjk2MmE3YWYwNzk5NzliYjQwYjI5YWI2YjVkNzhkOWUzNzQgbGVnYWN5LXRydW5rCiszMzYyMiAxMDhhYTk2NDg1NzMyMTA1OGE0MmZmNjYyMjgxMzliOWRiODJmNjVmIGxlZ2FjeS10cnVuaworMzM2MjMgOWE2ZjViMzdlODFkMmQ5YTgyNTFkM2I4M2IyZDIwNzQxM2VhMDQ1YSBsZWdhY3ktdHJ1bmsKKzMzNjI0IGNlOGIxMzhmNDQ3M2FkYWRkMGI2YTE2NGQ1MmE0MDMwNmEyZTUxMzcgcjIzYzEtYnJhbmNoCiszMzYyNSAzMzdkNDQwMTA5MDczNzhlNGZkYjc4YTRiNjU2MTk5ZmQ2NjE5NGY2IHIyM2MxLWJyYW5jaAorMzM2MjYgYWQwOTY4N2FhYWEwYTc1NTI2ODVmMjc0ZmM2MDNkYTBkYmZlN2EyNCBsZWdhY3ktdHJ1bmsKKzMzNjI3IDJiOGE1NjRlMWZkM2QwMjZhMTI0Njg2MDk4NjMyMmJiYmUxMGUxYjggbGVnYWN5LXRydW5rCiszMzYyOCBhOWM4OTk3MzlmNDgyMmJiNmQ4YjlhOWIyNjhkYzM2NGFlNTM5YTY0IGxlZ2FjeS10cnVuaworMzM2MjkgMWNiYzZiNzgzNmRjYjhhNmYxOWUyMmJjYzU5MTFhNDU4Nzc0MTRkNSBsZWdhY3ktdHJ1bmsKKzMzNjMwIDMyMjVmMWQ0Mjg4MzVhMjc1NWE2NTRlODcwNmY1MWJmZGEwMTZkNGQgcjIzYzEtYnJhbmNoCiszMzYzMSAyYzQ4M2Y3YmVhNGJjZjg2NzE1NDcyMzQyODFmNjM4ZmJhZGQ1MTAwIGxlZ2FjeS10cnVuaworMzM2MzIgYmFmMjI0MTA3MGJmZDcxN2EyMzZjMzMxZjdlNDJjZDA4M2Y1YzQ4NyBsZWdhY3ktdHJ1bmsKKzMzNjMzIDA5YzQ1OTg1MTI2NDE0NmViMzI3Yzg2YmE3NGRjNWRjZDQ5OTkyZDIgbGVnYWN5LXRydW5rCiszMzYzNCA1ZmFlZTdjZGM1YWFiMjQ3NjZiOTdjYmViM2ExNzJkYWQwYTFkOTA3IGxlZ2FjeS10cnVuaworMzM2MzUgY2VhN2Y4YWY4ZTBiYjgyZTRkOWE5NGJlMzQyY2EzYTA0OTM2ZTU0NiBsZWdhY3ktdHJ1bmsKKzMzNjM2IDRiZmNmZWQ2NGVjYjk2OGM5ODI4NWRiYWNhODYzMGIzOWIyODc3MGUgbGVnYWN5LXRydW5rCiszMzYzNyA0YzE0M2NlZWY0MTljNjcyZDBjMDI2OGMwM2QzN2IyNjNmNzFkZDI2IGxlZ2FjeS10cnVuaworMzM2MzggYTU1MGFmNzExYWJhNGEyMmI0NmFmMzE3OGZiYjQzYmFmY2ZlOTEwNiBsZWdhY3ktdHJ1bmsKKzMzNjM5IDk1MGIyNTAwYTE0MjIyMTRhY2QzYzA1NTAwNTA2YWY5MTZiNzk2NDcgbGVnYWN5LXRydW5rCiszMzY0MCA2NjhkZDMzNmUzMDZmMTViYjhlMGE4YWJjY2UyZjIwMGI1OGYwYWE2IGxlZ2FjeS10cnVuaworMzM2NDEgYzQyYTczMTdjODg3YWJiN2I5ZjM4NjAxMjMyMTE3MGUzM2Q4ZTlkNCBsZWdhY3ktdHJ1bmsKKzMzNjQyIDMxN2YxZWUyNGYxODQ5Yjc4ZTcwYzc0NDVkYjliOWFkN2ViNDlhYjAgbGVnYWN5LXRydW5rCiszMzY0MyA0Y2YyYmZmZmE1NjQxMGY4ZTgyMTAxMjAyY2JlOWMyZjYzNTRkZWE0IGxlZ2FjeS10cnVuaworMzM2NDQgZmU0OTliYzczODFmYjkwM2JmZGZlZWUzMmFkNjRkZDU5NzAxOTk1NyBsZWdhY3ktdHJ1bmsKKzMzNjQ1IGE0YWJlMTdhNWZlYjkxZjQ2MjI0ZThhOTY4YWQ1MGEzNzQ3YmRkYTggbGVnYWN5LXRydW5rCiszMzY0NiAxM2M3NWZhNzgwYzhjMjIyMjIyNWE1MGQyMjI3NGJmZmFlYjAzNDliIGxlZ2FjeS10cnVuaworMzM2NDcgMzAzZjVmZGExYTI4NDBiYTAyZjg5OTcyZGFiZTJjZTJkMjdkYWRlOCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NDggYTc3YWFhYjAxNDZkZTY5NmU2ZDY2ZTk5M2I1YzY0ZWM1OWE1ZGRmNCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NDkgNWFkZGNjYTNmNDMzMzQ4MmZhZTM0NGZmNDhhZGQ1ZmFiZGQyN2JmOSBsZWdhY3ktdHJ1bmsKKzMzNjUwIGUzMzlhZDI1MGFmMGY0MWZjMzRiOGE2NGNkOWI4MzU2ZTEwMThhMDAgbGVnYWN5LXRydW5rCiszMzY1MSA4MmVlMWZhZTM4MTk0YjgxMDk5MDcyMzcwN2JiZWY1MWFjOTlmMzZlIGxlZ2FjeS10cnVuaworMzM2NTIgYTQwOGFjNTUyN2MzNDU3ODcyOGY1ZjMxMzA4MGM5N2UzMzIxZDJjOCBsZWdhY3ktdHJ1bmsKKzMzNjUzIGI5ZDBhMGVlMjIwNmE3MmE5YTk1NzcwM2Q2ZGZkNjk3MDI5YzdmODggbGVnYWN5LXRydW5rCiszMzY1NCBkMzdmMTMxOTlkOTUyOTdiNDExMTQ2ZDM2NzcyYTI5YWI5MTQ1YWFiIGxlZ2FjeS10cnVuaworMzM2NTUgNjE0OWYwYTBiOGY1ODQyMjI4OTdiNjFkMzViOWQyOThiYzA3ZDE5ZiBhc3QtYnJhbmNoCiszMzY1NiAyMWVkY2UwOTEwNjlmOWFjZDJkY2EyYTg5MTkzYjY0YjA3YWZjNDhjIGxlZ2FjeS10cnVuaworMzM2NTcgMmMxZTczYjJmY2ExMTA3YjcxNzQxMTYwZjllZDE1MmE5YTRlMzEzNiBsZWdhY3ktdHJ1bmsKKzMzNjU4IDExODgwOWIxZWYyMDYxMjliNjIwZGVhMmEzNmM3N2MxYjI2ZTYzNDQgbGVnYWN5LXRydW5rCiszMzY1OSAyNzM5NWM4NDRlMjNiN2FkNDBhYWM1ZmQ4NWI0YTY1NmViZmZiZGZiIGxlZ2FjeS10cnVuaworMzM2NjAgNjU0OWQyZTQwOGYwYzYzYmZjNjZlODQwOTZiMDIwYTU4MjE0OTMwZCBsZWdhY3ktdHJ1bmsKKzMzNjYxIDVhZDQzOTYzMmRlNTRhYzE5ZTNiYmYwYmJmNzM3ZDMxYTA2Y2YzYzIgbGVnYWN5LXRydW5rCiszMzY2MiAxN2NlMTIzNjk0NzdhN2M4NmRjODY3ZmJjMGYyMGI3OTY0NDkyYjAxIGxlZ2FjeS10cnVuaworMzM2NjMgMjExODcwOTc4NTRjOTBlNTIyYjAxNGU4NDk2NTIwYjllZjgxMzQ4MCBsZWdhY3ktdHJ1bmsKKzMzNjY0IDFiZDZlNjJmYjA2Zjc3OTM3Y2RhZjc0ZDZiMjExYzE5ZDhiZWJmYzAgbGVnYWN5LXRydW5rCiszMzY2NSA3YmE0MmM5NjI5NGNjNjkzYzA4NGU5OTYzM2I0YmFhMWM3ZmViYWI0IHJlbGVhc2UyMi1tYWludAorMzM2NjYgZjI3MDhlZjYwMTY5YjE5MmQ5ZTA2NmQzY2Y2YTI2NGZlNGQwMDJlZiBsZWdhY3ktdHJ1bmsKKzMzNjY3IDJkYTA1YjViNWM2NTA1NWEzNjcxNmMzYzcxYTYyNThmOGM3ZDQ1ZTAgbGVnYWN5LXRydW5rCiszMzY2OCAyOWYwN2FkYzMwMTlkMDc1YzliMzJhODUzZGIxNDZkMTRjNmViNGIxIGxlZ2FjeS10cnVuaworMzM2NjkgOGYzMDZkM2Q2ZDU2ZWQ4ZGUzNzQyNmQ0ZDFhYjFkNDM4ODMyYzU2NiByZWxlYXNlMjItbWFpbnQKKzMzNjcwIDAwMDlhMDM4MzIyMjVhNjc1YzkwNTM5MDdhMDEzMzgyOTQyNGZlZTUgcmVsZWFzZTIyLW1haW50CiszMzY3MSBiNTk0OTU5MWQ5ZDU3NGUwNDVlMjFkMDU4MWMyMmNkYWEwMDg0NzA3IHJlbGVhc2UyMi1tYWludAorMzM2NzIgODZlNDcyNWE5ZGJkNGI5NTRkZjhkNDI5ZWY3MjBhOWMyNzFjNWYwOSBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NzMgYjMzYzYwZmNjZTc0ZjlkZjBkMWY2MDE1YjRjZGQ1OTM1ZTEyODMzYyBsZWdhY3ktdHJ1bmsKKzMzNjc0IDM1Y2NmYzE0MGNhYzBjMmYzY2FkOWViNjgxM2FhNDc2OWFiYzhjMWMgbGVnYWN5LXRydW5rCiszMzY3NSA3MzBhYmZjZjI2MTBlOWM3MWNiMDA1NWIyOWJlNjM0MWMyZjU1MWIyIGxlZ2FjeS10cnVuaworMzM2NzYgNjczYmNlZDk5MTgwZmQ1YWM3NTI1NGU5YTI2OWUwYjI2Y2RmODc1NSBsZWdhY3ktdHJ1bmsKKzMzNjc3IGFhNDRlMDY4ODg5NmEwNDUzODUyOThhM2ZhNTgwYzdmOWQxZThkZDEgbGVnYWN5LXRydW5rCiszMzY3OCAwMmU1YjRiNjdhNjYzMDNjNDlhOTdkOTZhZjBhOGM2OTZiZDNiZmE1IGxlZ2FjeS10cnVuaworMzM2NzkgMDk1NDY5YzdhYmU3MjcwMjAwMmNiYzNlYmJmYTQ3OTJlNzVjOTI3YyBsZWdhY3ktdHJ1bmsKKzMzNjc5IGZjZTVjOWU5YWJjNzIyMzk0Y2IyZTkwOWI3ZTJhMzkwODBkNDQ0OGUgbGVnYWN5LXRydW5rCiszMzY4MSBlMWJiMTI2MmYwYmMxNDYyM2Q2NDZiMDBjYjU0NzViZDAxOTg4MTAwIGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY4MiA4M2UwNmZlMTI0YTE5M2E1MzRlNDQ4ODk5YjViNTk3NTU1MDRlNGRkIGxlZ2FjeS10cnVuaworMzM2ODMgNTNiNzYwYjAyN2I3NzEyYjA2N2QyNGViYzAzZDUxN2VkZjgxMGNhZSBhc3QtYnJhbmNoCiszMzY4NCA5NmZhOGYwYjllZWJhN2ZjZDJhZjA1MWM5NGJmN2EyNGU4ODVkY2IwIGFzdC1icmFuY2gKKzMzNjg1IGNmYmI3YjgyNjkyZDcwZjA5NzFlMzdkZjU3NTA3ZTMwMDUyNzNhODkgYXN0LWJyYW5jaAorMzM2ODYgZjgyZWIxNjA0NDBiZGE0OWVjMjI4OTRmZjdjNTkyOTZlODFlYzhlMCBsZWdhY3ktdHJ1bmsKKzMzNjg3IDUyZGQ1NDhkM2JlOWE5N2FkNzc5YmIxNjUxY2JhNGM0MTY2NjQyZDYgbGVnYWN5LXRydW5rCiszMzY4OCAzYWRkYTgxYTBlMGJkMDUyNGE3Y2JiMWE0OTM5OTQ5Yjc4ZGY5NDNmIGxlZ2FjeS10cnVuaworMzM2ODkgMzVkZWExMGRjZGM0NWU4NWMxYWU0OTcyMmY3YjI1NTQ1YTAxN2MwMCBsZWdhY3ktdHJ1bmsKKzMzNjkwIDFmYmFhMDViMzVjMWJmMGVjMTViNTllMTE2NGExZjRjYmZjZDRmNjAgcmVsZWFzZTIyLW1haW50CiszMzY5MSA4Y2Q5NGQxMTdmODc3ODkyN2M0NGIyOWFlZmEwZmUxZGI0NDgyYzlhIGxlZ2FjeS10cnVuaworMzM2OTIgMzdjY2YxYmM1NGUwNDRmYmRjNmIyNDQ1YmU1OTkwMWJiOGQ0YTg2MCBsZWdhY3ktdHJ1bmsKKzMzNjkzIDE1ZmM4M2M1MDVlMzE0OTcwMjZiMGE5ZjU3NmYwNzhhZjQ5Y2RlODcgbGVnYWN5LXRydW5rCiszMzY5NCBjZmE5ZjA0OWMyMDRjNjhhYTJmMjIyNGRjNDg5OTA5OWU3MzE5MDRiIGxlZ2FjeS10cnVuaworMzM2OTUgNGI1NzAyMzA2YzU4MWIzZWY2YmNkYmRjZWVhNWU4OWZmN2JkYWY0MiBsZWdhY3ktdHJ1bmsKKzMzNjk2IGVmYTFiYjY1NmIyYjZlNTE5YTcyM2JjNTYyODQ1ZDEwMTlhNGM5MzggbGVnYWN5LXRydW5rCiszMzY5NyBhMTMxNTJiMjVmZThkZjkzZDBhMTYxZmM1M2RlNjM0M2Q5Y2Q2ZWRjIGxlZ2FjeS10cnVuaworMzM2OTggZGU3ZDlhMmI1ZmFjMzA4MzI0MDZmZWNkODBjZjI2OWEzN2UzODU4YyBsZWdhY3ktdHJ1bmsKKzMzNjk5IGVlOGJhY2M2ZjA2OGQ2MTc0YjNiYzMwNjgzMjRkYTA5ZWIzMjUzZTkgbGVnYWN5LXRydW5rCiszMzcwMCAyOTA5NDAxNjM5N2Q2MjYwZDRlZjk0ZDYxMWQ4Zjc4YWRhZmUwYzI4IGxlZ2FjeS10cnVuaworMzM3MDEgNjc0Y2Y1YTI0MTQ3ZWJiNjgzM2NhMjc1ZDMzMzlmNjNkMGVmMWIzNyBsZWdhY3ktdHJ1bmsKKzMzNzAyIDEyYTdmMjE1NjQ4MTU0MTdjZDhjNjRiMGU4MGE0MWFjNmRjNDBkM2YgcmVsZWFzZTIyLW1haW50CiszMzcwMyA3NGE1Y2U0OWE5MmZjODMyYWQ0NDA1ODA4MzQyYzQwZjk3ZDZkZjBmIHJlbGVhc2UyMi1tYWludAorMzM3MDQgMGQ3OWRjODU0YWM0NjkwZWQ0MTVjODBjNTgyYTE3YWE0ZTM1OTgwMiBsZWdhY3ktdHJ1bmsKKzMzNzA1IGE2MjE1M2Q5YzhkNjUxNzI1MWRkYTdhYTJmYjlhMDU3Njk3NmI0MzIgcmVsZWFzZTIzLWJyYW5jaAorMzM3MDcgMjFiODEzOTliNjI4NDIwYTY4Yzg2Yjk4MDI1YmNiZTY3YzU3NTEwZiByZWxlYXNlMjMtYnJhbmNoCiszMzcwOCBhNTIwMzYxNGNhYTk2ZDZiOWNjMmU0ZTMxZjFlOTUwMjBkZDc1NGQyIHJlbGVhc2UyMy1icmFuY2gKKzMzNzA4IDE4ZWRjN2Q1N2RmZmI1NmJlODM3NGYzNWU0N2YzOTMyOWY1ZTlkMzEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MTAgZWNkODU3MzIwNGNkMjRiMWZmMWY4NGI3N2RhODIxMGI4NWY0NTgxNiByZWxlYXNlMjMtYnJhbmNoCiszMzcxMSA0M2IwYTQwNGQ0YTAxY2MxNzk4ZTQxMzU1ODU1OWZlZTgwYWEyZmUxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzEyIGMzZTY5ZjM3NmYyOWIxOTExNDM0MTRlMmVkMDI5OTA0YjM3OWRlYzYgbGVnYWN5LXRydW5rCiszMzcxMyAzZmU4MmQ1N2QwZDE3ZjFkOGQzOTVlYjUyYjAwNDM4MWEzMzk1NmZmIGxlZ2FjeS10cnVuaworMzM3MTQgMWQ2M2UxNTM5ODlmMDM1NDZhZThiMmFkMGQ3MGIyZDNiN2JiMzI0NyBsZWdhY3ktdHJ1bmsKKzMzNzE1IGI3ZTJkNzM4MGNiMjA5N2M3MWE0YWUyYzA4ZmU2Yzc2MWVhNjMyY2QgbGVnYWN5LXRydW5rCiszMzcxNiA3MDJhYTZlYjExZjliM2QwZDM3ZTRlZjRiOGUxMmEzMzc4MzdlODcyIGxlZ2FjeS10cnVuaworMzM3MTkgYjgyZWEwYjA3YjBhYjhiNWI0MzcyZDQ3ZDkyMzhlZTFmZjhlNTZjMiByZWxlYXNlMjMtYnJhbmNoCiszMzcyMCBjMzQwYjI3ZDczOWIxMTJmYTU2MDc4OWVjNTUxZDRhZDc4MjEzZWJjIHJlbGVhc2UyMy1icmFuY2gKKzMzNzIxIDAyNTI5ZmIxODgxNWEwODhjYjkxNTk2YjljYWIxMTYyYmVjZDhiZWQgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjIgZTU5YTM2YTE4MDVlZDZjYmVhNDA4YzlhNjlmZGM1ZmRhNjZkNDNmNiBsZWdhY3ktdHJ1bmsKKzMzNzIzIGU0ZWU5ODZhZjFhMDdmN2Q0OGUyNWYwYjUzYmUyMzI5NTcyYzRlNjcgbGVnYWN5LXRydW5rCiszMzcyNCBlMTQ4Mjk2ZDhhOTM4OGVmZWQ5MDc5MzI5NWYxNzUyNjFiZTEwODQxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzI1IDE4NzMxZDI0ZTNkMTAzNzcxYjJiNWRjZTBmMjA4MjBlMWNkNWY4OGEgbGVnYWN5LXRydW5rCiszMzcyNiAyZjAzZjgzOTg0YjA3MWM5MDAxM2M4NTQ4ZWJmNzIwN2Y5ZDg4ZTI2IGxlZ2FjeS10cnVuaworMzM3MjcgNjc4NGEyNDE2MzMxNTBhOTg1OTBkOTE3ODVhN2MxMmMxZDg3MWQ4NSBsZWdhY3ktdHJ1bmsKKzMzNzI4IGU2MjFhOTdiZmExNmIxZGRmNWYwZjMwYTIzZmM0OWZkZjVmZTc1ZjkgbGVnYWN5LXRydW5rCiszMzcyOSBlMjEzY2ZlMTdhNjI0ZDNhNjA4MWI4YzI3ZjMyM2UyZDhiN2NjMTJkIGxlZ2FjeS10cnVuaworMzM3MzAgZDcyNTQ3YzkxNWQ1YTY0ZWY1Y2I0ZDA4Y2M2NjBiYWJlZTBjM2NjMCBsZWdhY3ktdHJ1bmsKKzMzNzMxIDY3NzAzODg3M2EyMmI5NGRlZDQ4ZDM2MTY3ZGVlNWVhN2FlNmQ4ZTMgbGVnYWN5LXRydW5rCiszMzczMiAwOGYzOGRhZmM5OGE3MDY0YzRiNmU3MGM1M2I3ZmYyYmE3MDkyY2M3IHJlbGVhc2UyMy1icmFuY2gKKzMzNzMzIDhkOGNkZWUzNDRhZDU2Njc4NmQzMTRkNzQwMGYyMzljNmMyZjlmNWUgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzQgOWUwZDM5YTJkMzdlNDlkZWMzYTFiNjI2MjFlNDI3MjdkZDQwODE3ZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNSAwNDA2ODc1Y2E3ZmQzYjYxM2NlNjE2MTNmNTFhZTNmMzJjZjY3N2JhIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM2IDZmNmRlNzYxZWY5YjdhZGI4Y2I1MWMzNjUwM2YyMzYzMzYyZDgyZWUgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzcgMjRlNzM3OThlZDA0ZTRlZDdhZjFlMDU2ZTMyNjliZDk5ZDJhZjIzYiByZWxlYXNlMjMtYnJhbmNoCiszMzczOCA3MDU4ZGNmNzMzZDQ2NmMwMDJhYmFkMjRhMTRmMGQxYWE4OTAxNWRhIGxlZ2FjeS10cnVuaworMzM3MzkgNDNjOTc3MWUwYmUxMGFhNTBkODY2MmU3MjFjYWE3OGQyMWRlYzgzMiBsZWdhY3ktdHJ1bmsKKzMzNzQwIGNlMTg1MDM0YjM4MDdkZDgzNWZmZDlkMGFkYTA4MDk0ZTY4NjQ2ODEgbGVnYWN5LXRydW5rCiszMzc0MSA2OWM4ZTM5ZjZlZTZjNTZhMjZlY2MyYTUzZGViNmU2MDk5ZDhmYjUyIGxlZ2FjeS10cnVuaworMzM3NDIgMDUwNGJhOGVmYmI2Y2RkMTFmMWE0N2NhZjBiNDI0ZmNhNDMzMjk1YyBsZWdhY3ktdHJ1bmsKKzMzNzQzIDBjNjIxODAxNDA5YWYyODYyYmJhZDFiMTlhYTdiYzgzOWQ5ZTAyMzEgbGVnYWN5LXRydW5rCiszMzc0NCBkOGM4ZmUwYzczZWRlZWQ4M2QzNmRjNmM4YmEyNTRiM2MxMDJiYmQ5IGxlZ2FjeS10cnVuaworMzM3NDUgNjQzZmZiN2RiMThmZDA1ZjlmZTI3OGI3MTIxOTgyMjE1MDVjOGFiZiBsZWdhY3ktdHJ1bmsKKzMzNzQ2IGQwOTk0NGNlZTNhNGZlNGVkMTQxZGVjNDMxY2Y2MTUzMGQ0YzE0MjAgbGVnYWN5LXRydW5rCiszMzc0NyA1MjZjMTJhYjM2YWYzOTgyZjcwNGJmMjUyZTdkOGE2NDYyYjRlNWFiIHJlbGVhc2UyMy1icmFuY2gKKzMzNzQ5IGQ3MzhhMDdhMjkzYTM1ZjQwMzNiYzc5ZGM0OWI5ZTM4MGNiYTc2NWQgcmVsZWFzZTIzLW1haW50CiszMzc1MCBjOWEwMDU5MGI5MDFkZGRiZTY2YWM5MTc2Yjg1MjJiMzRmN2ZjZDczIHJlbGVhc2UyMy1tYWludAorMzM3NTEgODAxNGZiODBkMTQ0NTM5Yjc0ZGYzMjhkY2VhMWQxNmQxODM1YmYyMyByZWxlYXNlMjMtbWFpbnQKKzMzNzUyIGRiOWQ2MzAyMzdhNjU3NjU4MjNjNzVlZTlmNjNhOGViNThlOWVmMWYgcmVsZWFzZTIzLW1haW50CiszMzc1MyBkOGU1MmJjZTJjZjkwM2I0N2FjYWM0NDA0MDFiNzEwZTk1YzQ0NmFiIGxlZ2FjeS10cnVuaworMzM3NTQgNWEyYTkxYjk3ODEwYTFjYjM0M2M5ZTRjZWQyODdhOWM0MGIxZDgyOCBsZWdhY3ktdHJ1bmsKKzMzNzU1IDJjZmFjYTYyYTk5MDczZGFjMDRkMGFmMWRjZThkNTY0ODMyM2I5NDcgbGVnYWN5LXRydW5rCiszMzc1NiBhZTg0ODU4NjdkMzA3MTFhYjk4YTdkNDcwMGQ1ZjVhYjMzN2ZkZDgyIGxlZ2FjeS10cnVuaworMzM3NTcgNDk0YjA3YTVlMmU1N2NiYzIzODgzZDU1YWY4ZDlkMTNjOGFkYzY5MCBsZWdhY3ktdHJ1bmsKKzMzNzU4IDc4MDFiMTNjNTJjOTQ2MTJjNzQyNjI5MGRhNmNiYmVhMTdiNGJkOTYgbGVnYWN5LXRydW5rCiszMzc1OSAwY2ZjNmNhYmNlODg0YTUzMGNjZWI1OGRiODdhMWMzMzJkMWJlYmU4IGxlZ2FjeS10cnVuaworMzM3NjAgYTAzMDBlYTYzOGRkYjQxMzAxOTA5NjdmMjE4MGZhMTZlNzVhMmFmNiByZWxlYXNlMjMtbWFpbnQKKzMzNzYxIGIyNGU5ZDcxZmEzY2RiYzdjOTEwZWU3ODA2N2ExNDA2ZDZhZDJmMGMgbGVnYWN5LXRydW5rCiszMzc2MiAxZDViZTY5ODFkNTdlZGQ4NzJjNGM1MzNlNDk2YTE5ZjgwZDVlNGI0IHJlbGVhc2UyMy1tYWludAorMzM3NjMgZTQ3N2I1OTk5MjRkYTgzZjU1NzM4MGE2NDUwMDE5ODUwOTk3OTgzYSBsZWdhY3ktdHJ1bmsKKzMzNzY0IGFhYjEwODlmMGY4NWRlZWJiZDU0NWY5Y2MyM2Y0ZjRhMjAyOThjNjYgcmVsZWFzZTIzLW1haW50CiszMzc2NSA0YWRmZDc2NDY2YmM2YzA2ZTQ4NGI1MmZlNGEyMzg2YmRiODI3NmVkIHJlbGVhc2UyMy1tYWludAorMzM3NjYgMjAwMTY1ZDExYTk0NjIyYWNlYmIwMjFmOTYzNTg0YTgxNjk0MzQ0NiBsZWdhY3ktdHJ1bmsKKzMzNzY3IGYyNjE5YmQ2ODNkYjNkYjFiYjc4YjBmMDU1NjE2YjdmZjdlZTE0ZWUgcmVsZWFzZTIzLW1haW50CiszMzc2OCAzNTRjN2VlNDM4YmY0ZWEwMTc0ZjkzYTcyOTZjN2VkYTBlMDE3NjcyIGxlZ2FjeS10cnVuaworMzM3NjkgN2FlYTFiNWNkZWJiYTJmNzZmZmM4YjM4Zjg3ZDExNjBkNzc1YjBhZCByZWxlYXNlMjMtbWFpbnQKKzMzNzcwIDU4OWQ1NTQ1YWY0MTE2MzAyNjQ0MDcxYTg3ZDE0MDNjMThiYjdkNzggbGVnYWN5LXRydW5rCiszMzc3MSAwZTY0MjQwODAwZGQxM2M3MWQ5ZDQ3YWM1YTUwMzRkMTMzMWI4ZDU2IHJlbGVhc2UyMi1tYWludAorMzM3NzIgOThlNmFjMWQ4Mzc5NzE5NjNmNDUxOGUyYTM4OWJmNzE5YThiM2Y4YiBsZWdhY3ktdHJ1bmsKKzMzNzczIGFlMDI0MmUzNDU5ZWVhYTk1MjNmM2U3NDY3MzkxYmQwOGQ0MThjNzUgbGVnYWN5LXRydW5rCiszMzc3NCA5YmQ1YzA1MmIzMDhiNzhhNzJlYTI5NzZhZWQwN2NmYmU3M2E0MzdjIGxlZ2FjeS10cnVuaworMzM3NzUgMTcxODE0ZjVkY2M2MzIxMGI2MjFhNDNiNGE3Zjk1ZDNkOTExNDM1ZCBsZWdhY3ktdHJ1bmsKKzMzNzc2IGFiMTBjMGMyNWMwMzA0YWQ0YTM5ODEwMzMwZGE5NzYzNmQ0M2IzMTkgbGVnYWN5LXRydW5rCiszMzc3NyAwNjFkODZmYzExYmIzODM0ZGI1OTdlNzI3NzUzNDRiYWRjYTdhMjc5IGxlZ2FjeS10cnVuaworMzM3NzggNzM1ZWMwODY5NDkyM2ZlYjYwNjFjYWZhMGUxMGU3NzgzZTVhNWRhZSBsZWdhY3ktdHJ1bmsKKzMzNzc5IDdiZDQwMjA1MDk0Y2M0ODIzYmFmM2I5NTQ0YWI4NDAzMDY5ODQ4MzAgcmVsZWFzZTIzLW1haW50CiszMzc4MCAzNmMyNzczODFkNzhiM2JiNjM3NzA1ZGY1MTAzMWFiMzdmZWJkZGQzIHJlbGVhc2UyMy1tYWludAorMzM3ODEgOGNjODAwMDJmYjkwMzcwOGNlNDE1NDBjOGE4ZjgyODkxNDljOTFiZSBsZWdhY3ktdHJ1bmsKKzMzNzgyIDJiMTRjOTgyN2Q5Y2Q3M2JhNjc3ZTM1N2RhMTdlZmQwZDMzMDk1NzMgcmVsZWFzZTIzLW1haW50CiszMzc4MyA1YjFkZGM0YjQ5YjliYjFmOTYyYWMzM2VmZTczYWMxNTAyNmFkZDU1IHJlbGVhc2UyMy1tYWludAorMzM3ODQgOGI3ZTM3YjVmMWVlNDUxZDI0OTE4YTkzYTVlZjBmNmZkY2M0MDA0YiByZWxlYXNlMjMtbWFpbnQKKzMzNzg1IDc2MmUxYjIwODhlNTE4OGRmZWU2MzA2OTk0OWJiNzk4M2FlYjIxYzUgcmVsZWFzZTIzLW1haW50CiszMzc4NiA1OWZmNzdiMGFjNzI0YWIxMmE1NmU2NTZjODg2NzAzN2JkMzRkZTljIHJlbGVhc2UyMy1tYWludAorMzM3ODcgOGY5M2IwOWIyYmI1ZjM0YzI0NTEwY2NmY2VkNzljZjY3ZDg1ODI2NCByZWxlYXNlMjMtbWFpbnQKKzMzNzg4IDdmNTQ4OTE4NGQ5NDMzMGFiZWI0ZjM2MDYzNzdjZWY2NTNiNThiZTMgbGVnYWN5LXRydW5rCiszMzc4OSA2MjE2ZTc0Yjg4ZWZiZTM2ODU5ZDk5YTNhNjQyZjk0Y2Q0NjZjYTg1IHJlbGVhc2UyMy1tYWludAorMzM3OTAgMWM0NTE5NGQxMjRkODk1MjRmNGI2Y2Q4OTAwYTljYzQwZGMwODE2MyBsZWdhY3ktdHJ1bmsKKzMzNzkxIGIwNzZmNjljNWRhYzMxMmM4NmM4YmE1YmJlZWMwMjExN2I4NTk3NTcgcmVsZWFzZTIzLWJyYW5jaAorMzM3OTIgZDA1ZDBlZDQ2NWQ4MDE2NWRlYWQxOGZmOWY5MThlYzJjNTkwOGNlOCBsZWdhY3ktdHJ1bmsKKzMzNzkzIGRiZGUzZGQzMTA2ODUyZWZkMjFmMzhiNzI4OWI0MzM4ZTMxNGZjNzQgcmVsZWFzZTIzLW1haW50CiszMzc5NCA4ZWJiOWIzNTc2ZDEzYzlkMDM0NzRkMjUxYTgyZTExZWFhODliNDk2IHJlbGVhc2UyMy1icmFuY2gKKzMzNzk1IDUzYzJmZjFkODFkMTY5OGFkMDliM2I1ZjM0YTRjNDdhYzg0NmU4OTIgcmVsZWFzZTIzLW1haW50CiszMzc5NiBiZmNjOThkZTdmY2MyNTA0OGI4OTlkNThjMzQ4YTA1MGI1MWJmODYwIHJlbGVhc2UyMy1tYWludAorMzM3OTcgNDBmNWYwYjQ0Y2M0NDdmNzhlNjAyMzAxZWE3Y2EyMzQwMzc0ZTQ3OCByZWxlYXNlMjMtbWFpbnQKKzMzNzk4IGJhNDhlNTcxYTRkNWNlOWY2MzQxZjVjNzlmYmQ4NDExZDcwNmEzNDcgbGVnYWN5LXRydW5rCiszMzc5OSA1YzhiMmE2NjY2YzM2ZmM2MzJkMmZmZTBlNDVkMGFjZWQ4Y2Q2ZmZiIGxlZ2FjeS10cnVuaworMzM4MDAgYWZkZTQwMmUzYTU1YTk5YjI1N2M5ZDJiZmM2OGJmOWNhMDljN2NiNSByZWxlYXNlMjMtbWFpbnQKKzMzODAxIGQ0Y2NlNTUzNDc4YTgxMGQwNGE5MjM1MmNlZDhkYWZlM2M2MDJjMDYgbGVnYWN5LXRydW5rCiszMzgwMiAwYWM0Mzk2YjE4OTRhMGUyOWQ4YzBiMWNkNTkwYTRkMWU2Y2VmYmM0IGxlZ2FjeS10cnVuaworMzM4MDMgNzRlZjhiOGUwMDYxNzRhNTNjMGI1YTY0NWM4OTEzMGQ5NmMxZTJiMiByZWxlYXNlMjMtbWFpbnQKKzMzODA0IGUzYzliNDhkZTYwYWUyNzQwNjhiNjg0OGQwMjNiNmRmZDE0MDQzOGUgbGVnYWN5LXRydW5rCiszMzgwNSAwNjAxNmQ1ZDgxZDdkNGUxZDQ4MGEzODAwYTU3ODc4ZDQ5M2MwMDkyIGxlZ2FjeS10cnVuaworMzM4MDYgMWM0ZDE5YjliYWFjNjUzZmYwYzNhYjlkNzViODU5ODAyMTE1ZDZjYyByZWxlYXNlMjMtbWFpbnQKKzMzODA3IGQ2Mzc5NjIwZmIwOGQxNGE3MDZkMzc1NmU3MjM2YWNhY2NiZmZiMjEgbGVnYWN5LXRydW5rCiszMzgwOCAzZGM4ZjJiNDI0OGMyYjgzZWQzYTQ0Y2ZiOWRiZjU2YWY5YjI5NzdhIHJlbGVhc2UyMy1tYWludAorMzM4MDkgMDlhMmNkZWFiOGMwYWU4M2UyOWEwNjc2ZjdjYjMxNTk1NjAwNjNlZCBsZWdhY3ktdHJ1bmsKKzMzODEwIDUzMGUyM2JmOWUxOTNlZWFjZjg4ZmRjY2M4ZWVjNjU0MDE3NDA3NjMgbGVnYWN5LXRydW5rCiszMzgxMSA5MDAzMjcwOTViMDUxNDAzZmE2YTg4NDAyNGFiNzFlNzk4MTVhN2I1IHJlbGVhc2UyMy1tYWludAorMzM4MTIgNTI4NDM3YTNmNWY3YTc1YzE5MTA4OGE3OTdiY2EyYmVmNDBmMzAzMyBsZWdhY3ktdHJ1bmsKKzMzODEzIDY2NWY4YTZmNDM3ZGI0NmJjZTgzN2Y3NDFkYzY5MjgwMDBkYjg5MWIgcmVsZWFzZTIzLW1haW50CiszMzgxNCA0MzUzZjA0NDIyZTMyMWZkMTI0YjFlYzAyYzJjNmNkODc3Y2E0NDViIGxlZ2FjeS10cnVuaworMzM4MTUgMjY1MDc5ODgzNjY4NzM4ZjZkZjRjNjc1ZjZlZGI1Yjk1ZjQ5NDdiNiBsZWdhY3ktdHJ1bmsKKzMzODE2IDYxNmE4YzBjYzkxNzA2YWJlMDQxNTc3Y2E5NTY3YjI3NGRiNWY1MmIgcmVsZWFzZTIzLW1haW50CiszMzgxNyBhODhlNmRmYmZkNmQzNGYxMDdiZDM2MGZiNWZjZWU3ZWJlNjQ1ZjU0IGxlZ2FjeS10cnVuaworMzM4MTggZmIyYWJjYTJkMmQ1NTljNjFkNmQ4ODJiY2UxN2FlYjVkNDMzODQwMyByZWxlYXNlMjMtbWFpbnQKKzMzODE5IDkyZDY4MDgzYTBmZDY3YmZhYmVmY2U3NDRhOTk0NzU1ZjZiOTY0MWIgbGVnYWN5LXRydW5rCiszMzgxOSA4ZTYzYzVhMzNmNDcwZjdjMzYzZTM4YTdjMTYyZDI0OWVkY2IyYmI2IHJlbGVhc2UyMy1tYWludAorMzM4MjAgNDYxMDMwZTZiZDY3NmM1YjdkOTk3YmM3MTZiNDRhODI5ZmQ5YjM5MSByZWxlYXNlMjMtbWFpbnQKKzMzODIxIDY3YTkxZjc1MGM2MzEyY2M0Zjc4OTMzYWEyMzViMDMwNGVmYmI3YzUgcmVsZWFzZTIzLW1haW50CiszMzgyMiA5ZjZlMmRlZTE4OTJmNzNiOTIwNmVhYTJjNmM1NjUxYTZjYzI5ZDIzIGxlZ2FjeS10cnVuaworMzM4MjMgN2I5MDY1NzFkYzY4YjRmMDNhMDY0MTFhNDI0OTkzMjk0OTM4N2M2ZCByZWxlYXNlMjMtbWFpbnQKKzMzODI0IGZlMDU3YmVhODg1NjY5Y2Q1ZDBlYzlhMDUxY2JmMGI3YTU0MTdhZDMgcmVsZWFzZTIzLW1haW50CiszMzgyNSA0MGFhNGExMGY0OWI2YTViZmYyMDNjYjQxZWMxNDk4OTVlNjFlNzIyIGxlZ2FjeS10cnVuaworMzM4MjYgMzc3OWViNDgzZTZiZDVkYTQzZjIxM2M5YTUyZTM0MzIxYjVlNzc0NyBsZWdhY3ktdHJ1bmsKKzMzODI3IDcyMGY0NGM2ZDExYzJkMTRmMDVkY2VhNTRlZWM2N2Q0NTIyMTllYTEgcmVsZWFzZTIzLW1haW50CiszMzgyOCAxOWMwZjgxN2NiNDc1NzVjMDY1ZTQ3NDU1MzZlMjgxYmY4YzkyNjFjIGxlZ2FjeS10cnVuaworMzM4MjkgOTk4YjA2NzMwYzlmYjBlNTljZDE4NTJhNGI5MmFmMzdkNjE3ZTllNCByZWxlYXNlMjMtbWFpbnQKKzMzODMwIDIxMDY3NmVjOWQ1ZjE3ZWU2NGZmM2FkNzM4ODhlNjVmZmE2NmMwNTUgbGVnYWN5LXRydW5rCiszMzgzMSAxNTk4ZmJlNjkzZjk5Yzg1MjY1MzIwZTEyMjgzYThkYjNjZWRmZTI0IHJlbGVhc2UyMy1tYWludAorMzM4MzIgMjkwMzJmMzdkYzhmODI3ZjM1OTVlMTgyZWM2NjY4YTg5YTczZjQ0MyBsZWdhY3ktdHJ1bmsKKzMzODMzIDRiNDZkNTQ0OWQ0OTk1NzIyYmM0Nzc0M2E0OWVlNDg2ZWVlNTZkYzMgbGVnYWN5LXRydW5rCiszMzgzNCA2ODQyY2ViMzlhMTQ0MTZkNGVjNzcwZDU5MDQ5MjUzYWNhYzgyOGRlIGxlZ2FjeS10cnVuaworMzM4MzUgMmM2ZjkyY2RkYmFkOWE5YTJmYTQ1OGZiNTZmZmI1MjFjODk4Mzc3ZiBsZWdhY3ktdHJ1bmsKKzMzODM2IDUzZjkwNjlmYzY1MGVlYWNmYmQ4ZmY1ZWU2NWZmZjlhM2FiZGIyZTIgbGVnYWN5LXRydW5rCiszMzgzNyBiODYyM2IyYzliY2U2YWI5NmYzMmQ5MGY2YzQ3ZWUxOTA1OWI3ODI4IGxlZ2FjeS10cnVuaworMzM4MzggODJhMWQzZjIxMGFkZjA4YTBiNjYxMGZiNzZkZTczZWM5Yjg4OGIxNCBsZWdhY3ktdHJ1bmsKKzMzODM5IGMzM2QzNjg5ZWQ1YjZjYTBiMDM5MjA1OTA2ZmRmN2MzZGY5MjZhMDIgbGVnYWN5LXRydW5rCiszMzg0MCBkZTI4ZDk5Mjg4NTU1NmRhZTgxNGVmOTNkNmZhNjEyMzU1NGM3ZGIzIGxlZ2FjeS10cnVuaworMzM4NDEgNWQwYzg3Yjk1NzBkM2FjYjdiMTliM2UwNWJhMWI2OTg2Y2E0NWUyOSByZWxlYXNlMjMtbWFpbnQKKzMzODQyIDUyM2MzZDYxZGJkZGU3MzRhMGY1NmRiZGI5NGEwODAzMmIyMzAwMTcgbGVnYWN5LXRydW5rCiszMzg0MiAzMDRiNWEzNjU1NzYxMTQyMThiOGJjM2RhZmY4NmQxM2EyNDkwNmUzIHJlbGVhc2UyMy1tYWludAorMzM4NDMgMThiNjdhZTljZjQ1ODI0MzY3NjNhNThkOGRhNTkwNGU2ZWMzNWZkMiBsZWdhY3ktdHJ1bmsKKzMzODQ0IGRmNjU0ODYxY2NmNmExMDlmNDEzNTJjMzYwNGU2ZjRmODk1YzdlMDIgbGVnYWN5LXRydW5rCiszMzg0NSBmNzQ2ZDU2OTBhZDZkODM5ZGY1YjRhNzczNjFlZDJhMWZiYTgwMWE4IGxlZ2FjeS10cnVuaworMzM4NDYgYWE1Y2I4ZTNiOWVhNWI3ZDRkMDFlNWYxOGQxM2E5ZmZjMGRiMGVhMSByZWxlYXNlMjMtbWFpbnQKKzMzODQ3IGYzNjU0YzVhZGE5NDQ4Y2ExNTE0NTkxM2I1YWNiZGExMWYyNTliMmMgbGVnYWN5LXRydW5rCiszMzg0OCA0NmJjYWIyYjc0ZTkyNDg0OWJlNmMxZTZkMjllMzA4OGNjNjQ2NDQzIGxlZ2FjeS10cnVuaworMzM4NDkgNDUwNWEwYjk3MjRjZjE3ZDA1NDg3ZmJlYzcxNjFhYjE1Y2NkZjdjNCByZWxlYXNlMjMtYnJhbmNoCiszMzg1MCAwNTY3M2IxNmJkYjhjMWU5YTkyOTIzOWMzYmYwNWY3YmU1MDJkNzlmIGxlZ2FjeS10cnVuaworMzM4NTEgZjRiNGJmN2U4N2Q3ZTBiZTVlNGZlNGFlYmZkYTBmYjM4NmY2ZjI2OCByZWxlYXNlMjMtbWFpbnQKKzMzODUyIGQ5ZjAyN2RjNjc2ZGQ5Y2Q1NTFjNmEwYWE0MThmZTYzNDgxZjczNDIgbGVnYWN5LXRydW5rCiszMzg1MyA3Y2MwYTMzOTQ2YTMwNDE2ZjQ4ZTU4MjkyY2VlNjQ2OTUwNGQyZjJmIGxlZ2FjeS10cnVuaworMzM4NTQgZjBkZmJjMTQxNDgzMzZiOGZjNmMwODdkNzRhZmRlZGViMjhmMDI1NiByZWxlYXNlMjMtbWFpbnQKKzMzODU1IDU5MGQ4Y2NhYmFjN2JkMGMwNTI1ZDU4NThhN2NhYTY3M2QxMTQzZDIgbGVnYWN5LXRydW5rCiszMzg1NiA2ZDc0ZjAwNmY4NGFjZTg0YzY5YTkwMTgzNmRmYzVmODU2YjZlNzIyIHJlbGVhc2UyMy1tYWludAorMzM4NTcgNTliYWQ3ZWZmZjAyMTY5NDcwMmM4NGIzMjRiODMxOTljOGM3ZGM3NSBsZWdhY3ktdHJ1bmsKKzMzODU4IDU2ODZjYTI5N2Y1NWY0ZjkyNzljYzdkNDYwM2JlM2Y4YWQ2ZjRhNGIgcmVsZWFzZTIzLW1haW50CiszMzg1OSA5ZjUzZTUzZjM4ODAyM2ExMDQzOGQxMjllZDJhMjYxZDM5YzFmNTM0IGxlZ2FjeS10cnVuaworMzM4NjAgMDgxM2IzMzYxMGNjMzVjMzljODUxM2ZmN2FjODE5MTIyYjRhYjM5YSBsZWdhY3ktdHJ1bmsKKzMzODYxIGUzNzM2MzBiZmVhYjc2NDBlYmYxNTgzNTE5OWI1NmVlMTQ5M2MxNjEgcmVsZWFzZTIzLW1haW50CiszMzg2MiBhNDljMWI3NjEwNmNlNGFjOGFmNTRjZDYyZTBlYTNlYmRhZDMyMjFiIGxlZ2FjeS10cnVuaworMzM4NjMgZTMyODFiMGRmNmE0MWM1OTY1YThiNDE3NWYwNDU3ZjE4ZWQ0YWVhNCBsZWdhY3ktdHJ1bmsKKzMzODY0IGI2OTgyMDliOTgyNzg4MzU0ZDMwZDRhMDBmMjdjNzJjOWUyZDkwZTYgbGVnYWN5LXRydW5rCiszMzg2NSA5Yjg5MTY2MzFlYjY5ZWMzMmU1YzljNDIwNTUyYjZlZjlhOWQ2ZGVhIHJlbGVhc2UyMy1tYWludAorMzM4NjYgNDQ2MDk3OWRlZWJmNWVjNjU1MzI2MmQ3MmJlYWY3ODY4MTU3NDYyYiBsZWdhY3ktdHJ1bmsKKzMzODY3IDk0MWQ0OWE2NWYwNmYxMjFmYzZhMzI2MmY2YjZlYjZmNzhiMjhjMzYgbGVnYWN5LXRydW5rCiszMzg2OCAzMzI5YjA1OGRiMjAxMmVjNmRjOTdiMGQ1ZDVhMjIyYTg4ZDc5YmU2IGxlZ2FjeS10cnVuaworMzM4NjkgNTQ2MTdlZDJkODMwODcwMjI5NjZmZjQxM2MxN2M0ZjJkODZhY2E2YiByZWxlYXNlMjMtbWFpbnQKKzMzODcwIDQ0MzUzM2QwODc4M2RjNzhkNmY3NDg3NjQ1ZTEyMDE5OTJkYjlmMTcgbGVnYWN5LXRydW5rCiszMzg3MSAyOWIxZDA3NjM3OTBhZjcwYzZhNDU3OGQyMWYyYTBkNDlkMjVlN2FlIHJlbGVhc2UyMy1tYWludAorMzM4NzIgN2NiNGFkNTkzMmU2MjZkZmU1ZDc4Y2E0NGI4ZDM2NDU4OWY1NTk2YSBsZWdhY3ktdHJ1bmsKKzMzODczIDQ3MDhmYTA4NjEyMWYyM2QyNzQ3ODhiZThlOTliZGU2ZThlZTJmMGUgcmVsZWFzZTIzLW1haW50CiszMzg3NCBlZjIxNjgxYTljN2ZiNjA5OTI4NzgzZWU4OTk1ODY3NzgxYjQwMDMxIHJlbGVhc2UyMy1tYWludAorMzM4NzUgZGM0MjQ5ZGQ5ZTM1M2E4MjI1ZGVmMTJhZGM3MTEyNDBkZGYzZTQwMiBsZWdhY3ktdHJ1bmsKKzMzODc2IDhlMmVmMjdmNjg4YjUzOTYwNjJmNjkwMjAwMTEzNzY4OTZlYmU0ZGUgcmVsZWFzZTIxLW1haW50CiszMzg3NyAyZDI3NGRhMDkyNzQ3NjlmMGIxMmQzZDE0MjFhYjcyNjE3ZGFkMGY2IGxlZ2FjeS10cnVuaworMzM4NzggOTQyY2VlYmU5NjcxYWY4NjU0M2M4YjU3Y2E5NDYwMWNlMmFlM2QzYiByZWxlYXNlMjMtbWFpbnQKKzMzODc5IDNkZGE1M2MzMTJhNWFhYjIzY2QwOTRlNjM1YzMyYjU5MTU0ZTlkOTMgbGVnYWN5LXRydW5rCiszMzg4MCBhMzMyZGNjNzkwMmI5NjBhYTAyNmE5YmMzODI3YzNjMDRhMjU2YjY4IGxlZ2FjeS10cnVuaworMzM4ODEgOTQxNDg4NmY1YzdhZGM2MTk5NDk5ZTdjOGI1N2Q3YTgwY2U4ZGExMSBsZWdhY3ktdHJ1bmsKKzMzODgyIDJhOTQxZmYwYTEzNjY1ZTAyZmVhMTY4NzQxNDAwYWIxNWJmZmM1NGMgbGVnYWN5LXRydW5rCiszMzg4MyBiNTVkNGEzZjQxZTg2ZTM5ODc1MDQ0YjRhOTRiNWIxZDY1YmU1ZDRiIHJlbGVhc2UyMy1tYWludAorMzM4ODQgM2RiNTBkMzEzNDBkOTNjMThiMzU1NjI0NGQzMzcyOTIwMWQ1OTE3MyBsZWdhY3ktdHJ1bmsKKzMzODg1IDRmZjM4NTcyZDAzNmU0ZmEzZmEyZjRjN2FhNTliNTY4MDhhZWQ2YzAgbGVnYWN5LXRydW5rCiszMzg4NiA3MWRmZDFlMWYyZWNjZDIxOGNiODU2MjE4MWQ4OTY2YTQyMDQ3OWZmIHJlbGVhc2UyMy1tYWludAorMzM4ODcgNjBhYWU4YTFlMjM3MjZhNDUzYTRlZjgxYWY4NTIyNTM5NDMzNzQ0ZCByZWxlYXNlMjMtbWFpbnQKKzMzODg4IDk0NjY1MjkxYWIxYmQzMzFkZDI3M2RkMGY0NWExYjNkOGU0YjA4NWIgbGVnYWN5LXRydW5rCiszMzg4OSBjY2I0MGRhOGM0MTJjNjAxODczNTg4NjAyODA3Zjc1NTk3ZWQ0OTgxIHJlbGVhc2UyMy1tYWludAorMzM4OTAgN2JjNzcyNTI3ZTQ0ZGI4YzkwM2RhYmNmODE4Mzk4ZTczN2I1MjllNCBsZWdhY3ktdHJ1bmsKKzMzODkxIGFmNTUzNWIwZTAwOWU2NjgzMGIwMGE5ZjhkMzQ4YjYyODM1NzY1YWUgcmVsZWFzZTIzLW1haW50CiszMzg5MiAzZWE1MmJjNzRkMTcxZjNiZThjZThkOWMwYTMyOTQxZDVlZDFiMWVlIGxlZ2FjeS10cnVuaworMzM4OTMgZDI3OWM0MGJkN2IzNmJjZTMxMDhlMmE3N2E2N2IzMGY4MTZhMTU3ZCBsZWdhY3ktdHJ1bmsKKzMzODk0IGE1NWZlZWEzZjkyMWRiNWExMGMwNGM4YWUxM2Q3ZWI4NWYyMDAzNGUgbGVnYWN5LXRydW5rCiszMzg5NSBmZDgyNGQ1NzRhOGZkZDEwMDU0NzhhODEyNGNjNjBkM2YyZTM4Mzk1IGxlZ2FjeS10cnVuaworMzM4OTYgMTMxYzU0ZjIwMmZkODQ0NjI0M2I1N2QyZjM1ZmFkMzc4ZjdhN2I1NyBsZWdhY3ktdHJ1bmsKKzMzODk3IDBmYTk5ZDMxZmI0ODEyMGU0NjFjYWE0Y2U0ZTFjNTU1OGYwMTc0NWYgbGVnYWN5LXRydW5rCiszMzg5OCBjMTBhMWNkY2U2MmI1MWI3OWE0ZjRmOTM4NGI2ZWYxMDE3OTNkYmQyIGxlZ2FjeS10cnVuaworMzM4OTkgOWE1ZDZlYjgxY2ZhYWYzNzZiZDA0NTM5ZGM1ZDlmMjRjYjU1YWZkYyByZWxlYXNlMjMtbWFpbnQKKzMzOTAwIDNiOTA3NGFkNzIzZTRiZjJhNTY5N2NmN2YyNTMyYTExYzJmMDk0OWEgcmVsZWFzZTIzLW1haW50CiszMzkwMSAzOWU5MjhkMDBiNjQzOThjNzdiNDg4Nzk4OTZkMGQ4NTIwYTU1NTZkIHJlbGVhc2UyMi1tYWludAorMzM5MDIgZDc4Nzc5MTg3YzdkZjA0OTM3MzhkYWJkM2UwMjYwMGMxYjM1NDI1MyByZWxlYXNlMjMtbWFpbnQKKzMzOTAyIGVmMWYyOTczZmFkODA5MDgyNDMzMTNiZDU2ZmZlOWY1ZjA3YWU4YTAgcmVsZWFzZTIyLW1haW50CiszMzkwMyA1YzU0YTc4ZjFkNTE1MmIxNWRjMTBhNzQzZjdkZTc5ZmNlNGE0YjI3IHJlbGVhc2UyMi1tYWludAorMzM5MDQgYmM2OWUwZGZkMmEwMzQ0OTdiNTZlY2QwMzkwN2ZjYjBmZjhkNWI3MyBsZWdhY3ktdHJ1bmsKKzMzOTA1IDY2OTU2ODg5OTMwOWZkYjg4Yzg4NDVlNmQzMWNiMmVjMGQ5OTdmMTUgbGVnYWN5LXRydW5rCiszMzkwNiAyNTFmYTA3ZmM1ZDFmNWYyYzAwMGY3MmEzMWVmNDYzZjdhZTkzMTcxIHJlbGVhc2UyMy1tYWludAorMzM5MDcgNGMwYWYyMmE4ZjNkMTI2ZGI3YThlZDQ3ZTI2NTlmOTg4NTJlYTk3ZiBsZWdhY3ktdHJ1bmsKKzMzOTA4IDQxYjZhNTM2N2VlNTY0NmI4ZWQ2YWI1NjUwNTY1NmM2NDY3ZjE5NjYgbGVnYWN5LXRydW5rCiszMzkwOSBkYzAxY2UyZjg1NTgyZGMyNDU0OWUxYzU5MDhmZTMxNjIyZmQ2ZTljIHJlbGVhc2UyMy1tYWludAorMzM5MTAgNzU2YjY1Yzc5ZjQwMDI0NWMxZGIzZDlhMmExOTg3OWQ1ODQ2YzQyZSByZWxlYXNlMjMtbWFpbnQKKzMzOTExIDBhYWMwNzY2MzQ0OGUzMDBkNWIwODM4MmFmOTZlMzI4NTZiY2FhYjMgbGVnYWN5LXRydW5rCiszMzkxMiBmOGViYWRlMmU3MjRkYzYxZmMyYjZmNzNiNzg3ODcwODFmNzNjNmY5IHJlbGVhc2UyMy1tYWludAorMzM5MTMgZDJlNGM5NGVmYmFhYjMxMGQwYzQ4NzdlZGE5NTk1NzU2OGY3NWNhNyBsZWdhY3ktdHJ1bmsKKzMzOTE0IGFjODZiMDcxN2FkMTk0NjNkZTM3OTQ3OGRmMjA1MzMxNzgxM2Y0ZmUgbGVnYWN5LXRydW5rCiszMzkxNSAwZmU2MGZhNjE3ZDhkYzcwNDFkNzVmYTk5ODJlZTFhN2VmZDQ4YmM4IHJlbGVhc2UyMy1tYWludAorMzM5MTYgMmRiOGM2M2U2OWNkNjRmMmI5YTJkMGQ3OTUzOWM5NWExNmNhZDQ5NyBsZWdhY3ktdHJ1bmsKKzMzOTE3IDZjMWU0N2Q1NGE3YTMwMWQ4M2UzYjdjZTg5ZTUyOTEzYjNhZTUxNDMgbGVnYWN5LXRydW5rCiszMzkxOCBhMzgwNjEwZWViNWFjNzk1ZGEzOTllMjlhOTYwNGE2N2FiNDBmNjQyIHJlbGVhc2UyMy1tYWludAorMzM5MTkgZDE1ZDQ0ZDlkNmY1Y2RkNWQ4YTFiZjg3YTE4MTYzOWMwMWJiMGM4YiByZWxlYXNlMjMtbWFpbnQKKzMzOTIwIDVlOTNhNGY2ZDlhOTlmYTIzYTI1OTM0NjZiNDkwY2EwMmIzMzI1ZTQgbGVnYWN5LXRydW5rCiszMzkyMSBiNTE5MDM1MDA2YzcxOTgwYzA1MzY1MzEzZmY5NzM5YmZjNTU3ODE3IGFzdC1icmFuY2gKKzMzOTIyIGU0ZmYwZGIzYjA4ODZkMDNkZjQ3ZGI4MWI2NWJlNmYzMTA0M2M1M2EgYXN0LWJyYW5jaAorMzM5MjMgYWMwZGIwMzRkZDE0YmQ3ZjBkNDUwNDczNTYxNDYzY2I5YzEyZWRjMiBsZWdhY3ktdHJ1bmsKKzMzOTI0IDg0ODFjOWJhZjc4NWQ1ZDJkNzAyMjk1ZWYxZjNjZTA3YzkyMmI4YzEgcmVsZWFzZTIzLW1haW50CiszMzkyNSA3YWIxYTQxZjE2ZGFiMTUzMDAzNmMxMjY3YTY0ZTdmMTBmY2MwMmUwIGxlZ2FjeS10cnVuaworMzM5MjYgMjFkM2IwNmRmNzkzY2IxYWM2ODU5MWM2YjY1ZmI2ZGIwNTZhOGRjMiByZWxlYXNlMjMtbWFpbnQKKzMzOTI3IDgyODdmNTIyYmVhMTc4NGNkZDUzMWE2ZjNmMjViMWY1YjdiNjE4NjUgbGVnYWN5LXRydW5rCiszMzkyOCBkZjhjYmRlNWM1ODgyOThiNWZjZTliMDU3M2YwODA5ZWQ5MzJlNDlkIHJlbGVhc2UyMy1tYWludAorMzM5MjkgMDU2ZjE2YTdhYmIwMzQ5Njk5NTY3MjIyM2I2YWUzNGJhNjdjYjBjNSByZWxlYXNlMjItbWFpbnQKKzMzOTMwIDQwMDBjYzZkYTkyNTIyMDdhYjg5ZmRiOWY4NTg0ZjJmYzVkMzUzMDcgcmVsZWFzZTIzLW1haW50CiszMzkzMSBhNWY2MDZmOWNhMDU3MWEyNGVlM2YwODFkZGVjOTAzNjRiMjVjOWYxIGxlZ2FjeS10cnVuaworMzM5MzIgYzA2ZGZmYjZhOTgyMjkxNDFmMzQyMGRlNDFkMzIwYmY0MWQ0NThhYiBsZWdhY3ktdHJ1bmsKKzMzOTMzIGU4MTczNTQyMzkzZmM0NzM1ZTE2MWVmZjI3YTA5NTk0YmI3YTQxYWYgcmVsZWFzZTIzLW1haW50CiszMzkzNCAyNDM0MWNiMjFmZDVjYjE4ZjNmM2U3Y2RlNWEzYWYwM2YwMjJlNmU2IGxlZ2FjeS10cnVuaworMzM5MzUgODA2MTc5NDAwZjM1NGVkYmMxZWMzMzNmOWNlYjY4YzhjNDE0MDlkZSBsZWdhY3ktdHJ1bmsKKzMzOTM2IGMzMGVkMTNkMzU4MjA5YTNiODRiMjEwODIyZjdhNzFmYmI0ZmFhMzYgbGVnYWN5LXRydW5rCiszMzkzNyBhMGY1M2EwNjk0NzAzNTNhYTU4MjQxY2NlNDlkMTEwZmI0ZDI2OWZjIGxlZ2FjeS10cnVuaworMzM5MzggMTA5ZDYzZjcwMzdjOTNhM2ZkZDExYWJhYmIwZDc5OTJkNDFjOWFlYiByZWxlYXNlMjMtbWFpbnQKKzMzOTM5IDQ5Njk2OGYzNjQ5ZThjMTM4NDQ4YmYxMzExN2RhYTk3NTM5N2RjNzEgbGVnYWN5LXRydW5rCiszMzk0MCBkZDQ1MWE2M2Y4OWU1OWExNjE4NzM5MGJiNzNjYTRlZDdlNWEyMjljIGxlZ2FjeS10cnVuaworMzM5NDEgYjk0MGFiOWEyYWJmNDRmM2U5OTg0NTRjZTM3NGZhMDI3MmM1NWIyMyByZWxlYXNlMjMtYnJhbmNoCiszMzk0MiBkZmJkMjgxMTJlMDk3Y2RhNjViYjIyMDA3MGNlMjQ2YjMwYzE4ODJmIGxlZ2FjeS10cnVuaworMzM5NDMgZDhiNzY4NzgwNGIyMzdkODY2MzBhMTQ3YThiY2MzYWQzZDE3Y2U4ZiByZWxlYXNlMjMtYnJhbmNoCiszMzk0NCBjNDdmNWFjOGIwNmRkM2RkZWE2ZGU1NzMxMTA4MDc1YmQ5N2VmZTYyIGxlZ2FjeS10cnVuaworMzM5NDUgM2Q0YTU1MDNlNDZkOTEyYzM4NzNhMDI5OTEzNjcxMmJjMDVhMzYxZCBsZWdhY3ktdHJ1bmsKKzMzOTQ2IDdmMzQ2NTJkNzE2MTJhZWNlYWQ4MzY1YzI4NzI2OGYyZmVjMjlmOTUgbGVnYWN5LXRydW5rCiszMzk0NyBjNDUzNTg5MzVlZDNmZmY4ZmEwOWUxN2FlYTczNDM0YjE4MmUxY2ViIGxlZ2FjeS10cnVuaworMzM5NDggNDIxNDcxNGFiYWNiZjIzOTRmNmJkZjdjMWFmMjhmN2NjNTkwMDVlMiByZWxlYXNlMjMtbWFpbnQKKzMzOTQ5IGE1NzBiYjlmMTMzZjcwOTI4NGZjZjVhYzllM2NkNmU0ODEwMDRmOTggbGVnYWN5LXRydW5rCiszMzk1MCBlODM1NzViYjI5ZGE5MDY4NWYwODhjMWM2NzJjYjdmYzJjNjYwZmUxIHJlbGVhc2UyMy1tYWludAorMzM5NTEgZjFlYTMxMTEyN2NmMTU5NzkwYjk4OWJlMDU4ZTcwNmE1MTdhODllMCBsZWdhY3ktdHJ1bmsKKzMzOTUyIDNmYjM3NDdjZTMwNGMxOTE3M2UwMDE1MDIzNjlmNDk5NTJmZDZjYjUgcmVsZWFzZTIzLW1haW50CiszMzk1MyA3ZjY2MGZhMjg4YWFiZmU5OTMxNGE4MDcyMmFkNmE2N2I3OWQ2ZGY4IHJlbGVhc2UyMy1tYWludAorMzM5NTQgNTNhMzIyYzZkZTUyMmE5MDkwNDljNDRiMDBiMDEyYWMwNTIzYzA3MSBsZWdhY3ktdHJ1bmsKKzMzOTU1IDllM2Q1MWJlYzUzYTI3ZTk2YWQ5ZmFiZWRkYWM4MTg0NzlkY2ZhNWYgbGVnYWN5LXRydW5rCiszMzk1NiA0OTc2NTk0NTA1MzQ4ZWE0OTY0YmNjY2M0NTM2NTk5MDkzYWI5MTNjIHJlbGVhc2UyMy1tYWludAorMzM5NTcgOTdmM2Q2NjU1OGZiOGVhNzE0YTdiYzE3YTIxZDg3N2ZjM2IwMzJkZiByZWxlYXNlMjMtbWFpbnQKKzMzOTU4IDk1Njk1Y2M0NWNkZDJlYWQ1ZGNjNjIyNTgyYjAyZTlkZTIwZGExYjMgbGVnYWN5LXRydW5rCiszMzk1OSA5OTUxYjZlOWEzZWE1N2JlNGI4M2Y1MzNjYjk4MmUxNmE3Y2ZiMWZiIGxlZ2FjeS10cnVuaworMzM5NjAgYmYyYWE3ZGU0MzdkMzQ2YWU5ODYwOWI3MDE2MDQ5MzdhYzNkMjJmMCByZWxlYXNlMjMtbWFpbnQKKzMzOTYxIDgzMGMwY2Q4ZmRiMjIwMjIxZmRlYTBkOTJmNDIwYzdmNzBjNzE5OTEgbGVnYWN5LXRydW5rCiszMzk2MiAwZGZhZmFhMTA0MDFjMTVjOTRiMjY1NjNhMWI3MmQ3MjRiMzBhM2IxIHJlbGVhc2UyMy1tYWludAorMzM5NjMgNjY2NTRhYzY5NjIyZjFiMTk4ZGFhZjQyZmM3ZjY4MTRiNTIzZDA0MCBsZWdhY3ktdHJ1bmsKKzMzOTY0IDNhNTBmODM2OWFkNTY0ZTM2OGMyZTcxODJjODNiMTIyNWY0MTJjNzUgcmVsZWFzZTIzLW1haW50CiszMzk2NSA3MThlMTQ4ODg3MWQ0MDMxNTFjMDU0MGQyYmM3OWNlNmQzMTFmY2E1IGxlZ2FjeS10cnVuaworMzM5NjYgZjk2MjRmOTQwNjFhN2U1MGU2ZTJjYTdhZDUzNDg4ZjBiYmEwNTg4MyByZWxlYXNlMjMtbWFpbnQKKzMzOTY3IGRhMWIxOTFiMGE2YTJkOTUwOTNhNGUyMmUyNjJhMzcwMjkwMDkwZjEgbGVnYWN5LXRydW5rCiszMzk2OCBhNTVlYjU0YTU2ZDBiYzU3Y2RmZTNmNjc4Yjc1NTdhOTc4OWI3MDI0IHJlbGVhc2UyMy1tYWludAorMzM5NjkgMzdhNDUwMmYxNjEwNzRmNmQ2ZjVlYmUxZjhiOWJmNDVkNmM0ZTdkMSBsZWdhY3ktdHJ1bmsKKzMzOTcwIDlkYzVlNzE1OTZmN2ZjMTMyMDI2ZTBiOTFjOWFhOGRmMTZlZjIzMDcgcmVsZWFzZTIzLW1haW50CiszMzk3MSBlYmI4M2YyNjZmYTRmMmQ0OGM3NjIyZGIzYjI3ZjY5YTgxMDM2NTAyIGxlZ2FjeS10cnVuaworMzM5NzIgMjcwMDUyZjZmMGUxZWUwZjBlNzFmZDlmNjRkNGMxMzFkMTI5NDQ3MiByZWxlYXNlMjMtbWFpbnQKKzMzOTczIDdiNTc3Mzc3ZDU0NmZlNjc3M2UyNGY5NjI0YmI3ODEwYjYyNTE1M2IgbGVnYWN5LXRydW5rCiszMzk3NCA5NDhmZDM0ZWIwNTA5NmMwMzgyMDFmM2U0MTdiMjY4ZGJhOTQwYmU0IHJlbGVhc2UyMy1tYWludAorMzM5NzUgMTE0ZDY5M2E1Yjg5M2VmMzU4OWRiM2E0MDZmYzU5MTMyNDkwNTMwMiByZWxlYXNlMjMtbWFpbnQKKzMzOTc2IDUxNzQ0Mjc5NDU4ZmIwMDQ5YTQ1MmU5ZjZiMDUxZTU3YzE0ZjRlMmQgbGVnYWN5LXRydW5rCiszMzk3NyA1Nzk1MWJhNWU5YjEwNzk5ZGQwNDkxMzhjYWQ5YmMyYjJlMjIyNjFkIGxlZ2FjeS10cnVuaworMzM5NzcgMGMxM2JhNTM1OTE4MmYyYTQ2OWFiMWUwMTBmYjhmODY2ZWRiYmI4YiByZWxlYXNlMjMtbWFpbnQKKzMzOTc4IDQzNmQ1NzcyYjg3ZmZmOWU4MjNkODgwMTMxOGVmNDg0OTBlZjg5OGIgbGVnYWN5LXRydW5rCiszMzk3OSAwZjI2YWY3YzNiNTJiMWVjOTYxZjhiY2NmZmI1ZWZkYjM0ZGQyZmViIGxlZ2FjeS10cnVuaworMzM5NzkgNWMwYTcwNGUxYmU0ZDdlZGQyM2UzYzA0N2M0YWFkMTNjMGM1NzAxZiByZWxlYXNlMjMtbWFpbnQKKzMzOTgwIGE0MDUxYWQ3NjY2ZTVkNWYzZWZjNzk2M2U3NDJlOWYxYThkZjA5ZjUgbGVnYWN5LXRydW5rCiszMzk4MSA4OTM3NWExM2ExOGM4YWU5N2NkMTg0ZDRhODRhNzM4ZWFiM2UzNDg4IHJlbGVhc2UyMy1tYWludAorMzM5ODIgMjQ0YjU1YzkwZTBmMzA2NmUyZDMzODkzMmIyMDJhY2ViOWZlYWQwNCBsZWdhY3ktdHJ1bmsKKzMzOTgzIDdkMjMyOTgxZDNlMzhjNDZmMDkzYjc2ODViZjkyMzVlZDFlYmM0NDkgcmVsZWFzZTIzLW1haW50CiszMzk4NCBmZjgwNWExNDdiNmE5MTg5ODhmMzU0MDRlNjM5MzA4NTA5MTY1NzA4IGxlZ2FjeS10cnVuaworMzM5ODUgYjE3N2M5NmVlMzUwM2JhODlhMmNiYThjM2EyZmZjYTcwMjZkZTIzZSByZWxlYXNlMjMtbWFpbnQKKzMzOTg2IDY2YmEwZTBlYzIwMjY5OGUwMzNmY2NkYzE3MThlY2MxNGNjYTYzMGEgbGVnYWN5LXRydW5rCiszMzk4NyBhNzRiNDYzYmY3NmRhN2YzMWM4ZmJmZjk1NDdjMDBlMjExOTVjOTQ5IGxlZ2FjeS10cnVuaworMzM5ODggODQ5ODhlN2JjN2I3YmJhOTU0YzJlZDdmZmY1ODA4NTg3MzI4ZTI4YyByZWxlYXNlMjMtbWFpbnQKKzMzOTg5IDcxN2NjMmM5ZmQ2MGVjNzkwMDlmOWU1N2YyZDIzNjc0ZDU5ZTc1MTEgbGVnYWN5LXRydW5rCiszMzk4OSA1ZWQ0MGYyZjY1ZmI1YWRlZDgyNjc0NTA1MDFiNGZjY2RkYjA5OTkxIHJlbGVhc2UyMy1tYWludAorMzM5OTAgOWEwYWExZGJmMzUxNDcwYzE5MmQ0NWNhNWQwZTMwOTk5ZGRkMDI2OSBsZWdhY3ktdHJ1bmsKKzMzOTkxIDYzMTAwY2MzZjE1YWY0MGFmYTcxMmExZDQ2NDc0NTNiM2NmNWU1Y2QgcmVsZWFzZTIzLW1haW50CiszMzk5MiBjYzJkOWVhNGViZDUwZmM2NDhmZDVhYzRlNWNhNmNkOWEyN2E1ZDQyIHJlbGVhc2UyMy1tYWludAorMzM5OTMgZGYwMDkzYTU5ODVjM2NiMThlMWJmYjhmMjU0NGViN2Q1ZTM0ZmYwOCByZWxlYXNlMjMtbWFpbnQKKzMzOTk0IDIyNTAyZjc5NWI0OWM4Mzc2ZTYxNzE4ODg1Mjg0MGJhZmNlMTg3ZTMgbGVnYWN5LXRydW5rCiszMzk5NSA0YTU5MTIyYTY2NDZhMWNiMDYwYzI3ZDJkYjI2MGM4MjBlNWMxYTVkIHJlbGVhc2UyMy1tYWludAorMzM5OTYgMWQ2ZDZmYjdmMTBiNzdiY2ViMWMyNWEyYzY4Mjc5OTQ3NjE4OGU5MyBsZWdhY3ktdHJ1bmsKKzMzOTk3IDgwOTFiZDkyZWUwMTViYzYwZGM5ZmViMDcwZTQ3NGQ1MDdkNjE3ZDQgcmVsZWFzZTIzLW1haW50CiszMzk5OCA0YjRiNTgxYjNiMmM4MzE0NGRmNzJjODkwYzczODdkMTkzMjkzOTA4IGxlZ2FjeS10cnVuaworMzM5OTkgMjZkM2Y1Yjg3YWQzZGZhZTc4N2RjODg4MjBlNTBlNmYzZTY1ZWIzZSByZWxlYXNlMjMtYnJhbmNoCiszNDAwMCAyOTA1NjQ2YTJhZjM3NTdiMDkxNjNmNmM4MDAxNWUwYzhhNzE2MTJjIGxlZ2FjeS10cnVuaworMzQwMDEgNzliMWE5ZWM1MjIzMTAxMmUyYTRmNjczYWY3NzNmODY2OTUwMDJkNyBsZWdhY3ktdHJ1bmsKKzM0MDAyIDY0NmYwZjExYzUxOWI1NmEzMTM3OGU2MzZhNWRhZWUxMmQzNTI2ZjEgbGVnYWN5LXRydW5rCiszNDAwMyAxMTVmYWM5ZDkwNDU2YjliNTg1OTVmOWRkZWE0ZDJjZDc4Zjk2YWY3IGxlZ2FjeS10cnVuaworMzQwMDQgNTJmNGYyYThjY2U3OWRhMzdjZDhhOGMwOGRmODE0MzNkMzEyYTk1NCByZWxlYXNlMjMtbWFpbnQKKzM0MDA1IDU1YTRhNDE3MjczZWQxMjA3N2MyNDY3MGFmMjc3YjQxMzQyMzI2YjcgcmVsZWFzZTIzLW1haW50CiszNDAwNiBkZGU1OTRmNzBkNmNlNGMxZGE4ZDc3MmE0NDZiZDg2NTIzMDk4ZmIwIGxlZ2FjeS10cnVuaworMzQwMDcgYmZjOTc0ZGVmNDc0MDFjMTMxOTYxNjY4OGMzZWQxZjJjN2Q4MzNhMyBsZWdhY3ktdHJ1bmsKKzM0MDA4IDcwMGMwY2E0MjllZmNkNDk0ZWEzNWJjNjU0ZjFmYjkzOGY4YWY0MDggbGVnYWN5LXRydW5rCiszNDAwOSA2ZGQ5YzdjNWFhMTNkNDNmYjRlMDNkNzBkZjJjMDU4NWRiZDJjN2YwIHJlbGVhc2UyMi1tYWludAorMzQwMTAgZGE0MzRiNTM3NjY0OTI4NGJmYjEzMTE5N2Y4MzhiMTUyOTgyODMwYiByZWxlYXNlMjItbWFpbnQKKzM0MDExIDc3ZGE5Zjg3M2E0ZmU0MTcxN2RjNjg0NzY3ZTgxMDM1ZDRkMDBhODAgcmVsZWFzZTIyLW1haW50CiszNDAxMiBmNDI5NTU1OWVhODM2YWI1NzFiM2Y0ZWQ4ZWM0Mzc4MDg0NmZlMGRkIHJlbGVhc2UyMy1tYWludAorMzQwMTMgY2IyODE1MzgzNzNjYWQxNjIxNmEwNTM0MDYyMmUwMTZiNWMzNDk0OCByZWxlYXNlMjMtbWFpbnQKKzM0MDE0IDI0YzYyZjUzYTFjOTI5MTRhYjA0ODBlYjcwZjhkZjdhOGZhZTRjNTEgcmVsZWFzZTIzLW1haW50CiszNDAxNSA0MWZmMmMxM2VhNGE5OGE3OWU3ODkxNWZiNDYyMTA1ZTgyOWM4YTkyIGxlZ2FjeS10cnVuaworMzQwMTYgMTc5M2I2NWE2MjMwZmU0NmFiYjMzY2IwMTdiOTM2NDE1OTJjNjVjOCByZWxlYXNlMjMtbWFpbnQKKzM0MDE3IGMxNmM1NTM4NjBjMmRlZmI0ODczOTFlYWU1ZDU4NjZmYTMzYWJlZDIgbGVnYWN5LXRydW5rCiszNDAxOCBmZWQ2NTAxMTg4ZGE0MjdkYTZlZmZmMjZjNDllY2FkOTg1ZmEyM2E0IHJlbGVhc2UyMy1tYWludAorMzQwMTkgNzRiYzM0OTNjZTAzNTJiZmI3OGQ2YjAzMWEzMTgwY2NkMzhkODk2MyBsZWdhY3ktdHJ1bmsKKzM0MDIwIGYwMDNlNDhmNTYyZGQ0NWFjY2I0ZDY5NGUxOGJiYWI3YWUzMmY0YTUgbGVnYWN5LXRydW5rCiszNDAyMSA3ZTNhMWQzYzkwZjUzMGFlMDM0M2UxZjllNWE3NDg0M2JmYzY0OWQ4IGxlZ2FjeS10cnVuaworMzQwMjIgNjc5MGNmNzg1ZjhjNWMzZWFiMTM0YzBmNTgxNDExOWYxZTI5NzhlOCByZWxlYXNlMjMtbWFpbnQKKzM0MDIzIDMzZGQxMmIyZWJlNmQ2NjcwNjIwMDA5Y2FhZjZkZjE4YWRlZmI5YzggbGVnYWN5LXRydW5rCiszNDAyNCAxM2E5MTRlMGM1YzE0NGM2Nzk1M2U2YjdhOWJmYmNlNjhhYTFkNmUxIHJlbGVhc2UyMy1tYWludAorMzQwMjUgMTk2MTFkMTAxZDIzMTI5YTFmYjE5NjhiZmUzY2FkNTYxYTM0OGVhYyBsZWdhY3ktdHJ1bmsKKzM0MDI2IGMyNTA3ZmUyZTY5ZTExODgwMjZkNzkwNDc2MDg0YmYxN2ExYTI0ZjcgcmVsZWFzZTIzLW1haW50CiszNDAyNyA3NzBmZTgzYmY4OWY2NTZkOWY2Yjk5Yjk3Y2UxZjZiMGZlZjU3NzY4IGxlZ2FjeS10cnVuaworMzQwMjggMTZjNTkyZDMxNmMyYTk0ZDBjZjEwMjJiYzhiNTVlMDkxN2FhMjU5NCByZWxlYXNlMjMtbWFpbnQKKzM0MDI5IDUyMWQwMjZhODA0OGM5M2VmZDNmNDRkNzg3OWJiZTViOWMwMzhlNjAgbGVnYWN5LXRydW5rCiszNDAzMCAyMTRkZjYyYmNmMTNhOGY5ZjAzNDM5NzMyMGFjZTE4M2IyMWMwOTQ0IHJlbGVhc2UyMy1tYWludAorMzQwMzEgOTYzYzY4MGVkOWIyMGI2MmZkY2NjNThjZmM4NjYyNDQ4ZTVkZTU4NCBsZWdhY3ktdHJ1bmsKKzM0MDMyIDBiZWE5ZDM4OTI5ZGMzOTQ0ODJmM2YwMzgxOWNmOGFmZmM3ZmU4YWIgbGVnYWN5LXRydW5rCiszNDAzMyAwNjA3NWYxYmQ5NDViNjUzNjA1MjBjNWFkNjk2ZDFhZWYzZjkzOTdjIGxlZ2FjeS10cnVuaworMzQwMzQgZDVhNmI2MzY3YmIxYzFmNjQ5NGY1ZGNkZWRlMjU1NWU3ODM4NWMxMCBsZWdhY3ktdHJ1bmsKKzM0MDM1IGE2NDBiZmVlYjliNTYzNTI5N2JmNDY4OTYzYjYxYjRlZTA1MjIwN2YgbGVnYWN5LXRydW5rCiszNDAzNiA3OGJhYjhmYzhlZDVjZmYyMDZjZWJiM2U3MTM3YmIyNDhiNjM3YzJjIGxlZ2FjeS10cnVuaworMzQwMzcgMmE4MjkxNGIwOGM1ZTBlMjZkMDc0ZTEyZTI0NTA0MTY2YmQ4NjliNCBsZWdhY3ktdHJ1bmsKKzM0MDM4IDdkY2M0NTRhNzBjM2IwNzdlNTNiMzI1YjFkN2VjYjQ1MGIxNDcwYTQgbGVnYWN5LXRydW5rCiszNDAzOSAyZWM5MmZlYmNkMWE4ZjZkODQzODE0OGQyNGVhMTIyNGVhMWUyYWFhIGxlZ2FjeS10cnVuaworMzQwNDAgMTZjZTdlOTQ3YTM0NDJiMTUyZDJkYjBjZDZhMGJmMjE2MjQwMzBkYSBsZWdhY3ktdHJ1bmsKKzM0MDQxIDZiODQ4MDJjOTUyNDI0Y2ViMDRmYTNlNzllMGYzZDE3NWM4MmZjMWYgbGVnYWN5LXRydW5rCiszNDA0MiBiNTMzMjI0ZjEzNzNmNzM1NzcwOGNiOTVhNzhmZTNhYmZhNmU3ZGYyIHJlbGVhc2UyMy1tYWludAorMzQwNDMgM2FmYmMzMzk3NTZhNmI3YmU2N2Y5ZGQ3ZjU2NzFiYTlkODlhZTQzYSBsZWdhY3ktdHJ1bmsKKzM0MDQ0IDM4N2E5ZTE4NDA3NGFhZjhiNWYxMWRlZTBjNTM1YTNmMjgxMjAwMTggbGVnYWN5LXRydW5rCiszNDA0NSBjNDI5NDRlYTk3NDNlNjdiZmY0YTIzMGJiZDg2OTZjMGEyYTVmMzcxIGxlZ2FjeS10cnVuaworMzQwNDYgNTYyMDg5YTg2NzhmMjgwMjYzMDlhZjM0M2RhZjMzMDEwYjZhNDk3ZSBsZWdhY3ktdHJ1bmsKKzM0MDQ3IDA1YTg1MDljZmIzY2IxOTVhODAzMmY4NzBkZDFkNTViNzlhYWYwNzggcmVsZWFzZTIzLW1haW50CiszNDA0OCA2M2RmNzQzMDVkN2JmNGI5MzA2YjNmMWE2N2I0MjA1ZmU1M2NjNzY5IHJlbGVhc2UyMy1tYWludAorMzQwNDkgYTExZTFjYjMwNjQ0NTY4M2NkNTI2YTNmMGFmZTZmZTgzODJjYTJhMCBsZWdhY3ktdHJ1bmsKKzM0MDUwIDhlZDBjZTYyYjgyZjE5NWQxMzk5MThjZmFjZTQ1NjA1YmUxZTYwMGQgbGVnYWN5LXRydW5rCiszNDA1MSBkNWRhYmQxNTE3NTNhNTQwMDBiMTZlYWQ0MzZkMmI3YTI2OWRkMjdkIHJlbGVhc2UyMy1tYWludAorMzQwNTIgMjA1Y2M5MThmMWFjYThlZmI1N2U3YmE5YzJiYWU0Yjg2MGIxNTdmNiByZWxlYXNlMjItbWFpbnQKKzM0MDUzIGQ1OWVjYTJlZmE2YTBkNDRlZDdhN2M0NjU5ZmRjNDQ0MjFiY2JkOGQgbGVnYWN5LXRydW5rCiszNDA1NCAwMDQ1M2EwNTA4ZGZlNzY3YjVmNTU2OWI1NmFjMDQ5ZDBjNDg2YzFmIGxlZ2FjeS10cnVuaworMzQwNTUgYWFmNmI2YTg1MTBiZWEwYmU3ODc4NGRkZmUyNzliYjZlMmMxN2VhYSBsZWdhY3ktdHJ1bmsKKzM0MDU2IGY2ZmM2ZDBjZjFlNWFlNzNiODY0NTkxYjM5YTRiNDI0MDY4MmI0NDIgbGVnYWN5LXRydW5rCiszNDA1NyA4MDRkMWNkMWIwNmRlYjQ0YzRhNDliMWE5NDU4YzU4ZGU1MzJhZWQ4IHJlbGVhc2UyMy1tYWludAorMzQwNTggZDYxNTM2MDM0NzJlM2MyZDUyYzE4Y2QwMmEwOThjYjg1OGQ0ODdlZCBsZWdhY3ktdHJ1bmsKKzM0MDU5IGY4NmQ4NjM2ODdjNjA2MzUxNDI2NjQwMjdhOGEzY2UxN2M4YjU2YjQgcmVsZWFzZTIzLW1haW50CiszNDA2MCAwODkxZDIyYWRmNGY0YjhjNTA5N2NjZGUwNWY0MDhmY2JjYzQ5NTdkIGxlZ2FjeS10cnVuaworMzQwNjEgMWRlMWRhM2VlM2U4N2RkMmJiZTA1NjIxY2YyNGMwNjI5YmVlYTQ1MiByZWxlYXNlMjMtbWFpbnQKKzM0MDYyIDhiOWE4YzRkZTI4ZTZiNWI3NDk4MTNiYmUyNjYxYjUzZjM1MzE4ZGMgbGVnYWN5LXRydW5rCiszNDA2MyAwNmVhZWY3ZDAyZjIxZTM0NDFlOGYyNDAxMjNkODY5ZGRhOTFlYWU0IHJlbGVhc2UyMy1tYWludAorMzQwNjQgZTViZDUwYzdlMTkzMzZiNDRhMzAzMzZkNDVjYzYzMjQ5ZTEwM2QwMSBsZWdhY3ktdHJ1bmsKKzM0MDY1IDc1MDQ4MTJmZGI3ZWIxYzllMjI5NGJmZTFkZThiNzE1ODZkYjAxMzYgbGVnYWN5LXRydW5rCiszNDA2NiBmMTRlMjUxMzY5YjJkNWM4OGNlN2QxZTYzZDgyMmMxM2ZhNjgzNWU5IHJlbGVhc2UyMy1tYWludAorMzQwNjcgODVlNjQyNTQzZGRhYTZjMjk5N2I0MTQ2MWIzYmEwYTVmMDM4NzBmZCBsZWdhY3ktdHJ1bmsKKzM0MDY4IDQ0NTQ3MzZjNmE4MmVhNjNiNGMxOWJiNGEyMjUxOGQ5NTAxZWI2OGMgcmVsZWFzZTIzLW1haW50CiszNDA2OSBiZTk1ODI3MzRiNTZhZTFmMWE2MTM0M2U2YmJlMWI3ODMzMGNiMmI4IGxlZ2FjeS10cnVuaworMzQwNzAgMzhlODc1MzUzNGI3OTc0MDAwMzY4YTkwZmM0YTExYzVlMmQ3MzZmOCBsZWdhY3ktdHJ1bmsKKzM0MDcxIDIxYjJhMjE1OTA0NmRiY2ZmZTVlMjJjZjA0NmQyNWExMzE0MDMyYzUgcmVsZWFzZTIzLW1haW50CiszNDA3MiA4ZGM5NGJkOWI4M2FlMDY0NWRjYWY0ZDcyYTNiN2E1N2E0ZGNhM2NlIHJlbGVhc2UyMy1tYWludAorMzQwNzMgODBhNGI4ZjZhZTBlNTJjNDYxMjA5OWQ1Y2YxOGFiM2VhZWY1NWI2MCBsZWdhY3ktdHJ1bmsKKzM0MDc0IDQ2YmRiNjZhZGNkYjc2MjAyOWRiYzY3NTEyOWI1MTZlY2FhZTI3NDYgbGVnYWN5LXRydW5rCiszNDA3NSAwNWU4YjUwM2NkNDE0ZTJiMzZhN2YxNDAxOWYzZDkxYzY4NzY0ZmJjIGxlZ2FjeS10cnVuaworMzQwNzYgNGFlOGI2NWNhYmE4ODg5ZWQ2OWExYTFlY2RhZDIyMjUwNzZhYTM5NiByZWxlYXNlMjMtbWFpbnQKKzM0MDc3IGMzYjJjZDZlZjI3Zjg4ZDk5ZDFiZmUwYTFjYTcxZTg0NjA0OTgxYTcgcmVsZWFzZTIzLW1haW50CiszNDA3OCBlNGNjMjMyZWQ1ODMwZGIyNWUyYmM5ZmQwMWU4MzU5Y2VjZWUyMzBhIGxlZ2FjeS10cnVuaworMzQwNzkgM2I3OTNjZjc0OGM1NjkwNTc4YmUyOThkYzkwNTI3YzJlZWQxMzY1NyByZWxlYXNlMjMtbWFpbnQKKzM0MDgwIGRjNTFhYmMzZjE3NDZkNTE4YjkwMWU1NDc0ZWJlZmJmYjg3MTBmNzcgcmVsZWFzZTIzLW1haW50CiszNDA4MSBkYjMxZDI1YjEzN2E0MzM2ODVkNjJkZGJkNWRmOWNkNjcxYWE4YWU0IHJlbGVhc2UyMy1tYWludAorMzQwODIgY2Y3ZmFkOWQ2ZmNjMzRhODg3NWRiYjM3YWExOWVjMzk1ZmRlODVkNSBsZWdhY3ktdHJ1bmsKKzM0MDgyIGQwNWFmMTU2MmM2NGYxOTgxNmIyNmQ5NThkYjlmNGM4ZjBkNDIyMDcgcmVsZWFzZTIzLW1haW50CiszNDA4MyA0YWE4NGE4YjFmZTQ5N2Q3MjQ1NmNjNjQ5ZmQ2ODEzNDZlNjQ2YWE2IGxlZ2FjeS10cnVuaworMzQwODQgM2VkY2NlMGVmYzU0YjhjMjU0NmE3YjRjMWMyMGY1NTcwYWVjNWNlOSByZWxlYXNlMjMtbWFpbnQKKzM0MDg1IDUxNTViMzg1MDJkNDgzMWEzZWQ1MTZmMTMxZmRjODE1YzU0MDUzZGQgbGVnYWN5LXRydW5rCiszNDA4NiAzNWY5MjQ5NjUwZTZiNWM5ZDc5YjhmMzlkODJiYWYxZTZjMWE2NWNmIHJlbGVhc2UyMy1tYWludAorMzQwODcgMGMzNjhlYzBjY2NiNDRkZTY1Y2Q3Y2M4Y2MyMjcyOWQxNmFhOTI2ZCByZWxlYXNlMjMtbWFpbnQKKzM0MDg4IGFjY2MyNTFjZGM0YTllYzBhYzZmMjgwNTI2MWExNjUzZmQwM2Q0MTkgbGVnYWN5LXRydW5rCiszNDA4OSBhNTJhMDc0ZThhZTVkYjE1NGY5ZWMwMGRhNTM5MWNkYjBiYmU3ZDc0IGxlZ2FjeS10cnVuaworMzQwOTAgMTk4N2I4NTVjZDNhMGMzZTIxNTgyZmU3NGQxNmYxMzhmYmQ0NWQzYiByZWxlYXNlMjMtbWFpbnQKKzM0MDkxIGZlMWNkMzc5NWE3YTkzYWU2ZWFkN2QwMjYyYzRkMTVlNGEwMWU0NjYgbGVnYWN5LXRydW5rCiszNDA5MiA5OTNlM2NhMzQ2NTYwYzFlMWJlMjgzMmMyOTliNWVhOTMwMWQ4OGI0IHJlbGVhc2UyMy1tYWludAorMzQwOTMgZjE1YTExY2Y4NTMxNjNjZWVhMWNiNTRmMjBhYTc0MDJhZmM4OTRkOSBsZWdhY3ktdHJ1bmsKKzM0MDk0IDI4MGIwYTFlMzFlMzY0MWM0OWY0Zjk3NDJhM2Y0MTEyODFhZWQ3ODUgcmVsZWFzZTIzLW1haW50CiszNDA5NSAxZTg2ZjJmNzEyZjIxOTNmODYxMjBkNmYwMjA4ZTYzY2EwMzNmYjkzIGxlZ2FjeS10cnVuaworMzQwOTYgNThmZmI2YjlmNmM1NzJlNTE3Yjk3NDQ0YWQ4ZWM1ZjkyNjcyODhmNiBsZWdhY3ktdHJ1bmsKKzM0MDk3IGM5NzJkOWU0MzE2ODhlNDQ2MzE1NmNmY2M0NDg4Yzg4YjAyODY5MjEgcmVsZWFzZTIzLW1haW50CiszNDA5OCA2YTkxMDE0NzFhZDM3MWI4MTFlN2M3M2EzY2RhMDY1OGZhZDViNjg1IGxlZ2FjeS10cnVuaworMzQwOTkgYWE3ODdlMzYxMmJiYzZmYTVmNzI5NGJmMGEyODg1YjZmZDQ2NzUyNSByZWxlYXNlMjMtbWFpbnQKKzM0MTAwIDAwMzk5MjhhMGY4NDM5YmIzZWIwZDE0MDM3YjY0OWI2MTg1NzgyYTIgbGVnYWN5LXRydW5rCiszNDEwMSBlMzhlYzRjYjg3ZTljMTY0MjdiZjUzZTMzODgyYTgzN2U3ZWU1YzhlIHJlbGVhc2UyMy1tYWludAorMzQxMDIgZDAzOWIxYmIxZWE5N2Y1MjExZDk2MGZkMjY3YTRiZDcwM2Y0MmFkNSBsZWdhY3ktdHJ1bmsKKzM0MTAzIDYyMTUzZTgyNTY0YmEzMTNkN2M2OTM0M2JlNTc1YWQ0M2E0MDFiNDQgcmVsZWFzZTIzLW1haW50CiszNDEwNCBlNDRhMzU5Yzg5OGUwYzE1MDMwNzkxNmE0YjhiN2I5OTRjZTkwNzgxIGxlZ2FjeS10cnVuaworMzQxMDUgMTBiYTY1Njc4NTJmZDA2OGZmNzAwZmM1ZTQzMDBhYWU3OTEyZDIxZiBsZWdhY3ktdHJ1bmsKKzM0MTA2IDk0ZjI1MjgzM2UxMzE0ZjBlOTY1MjU0YzEyMWQ2NWUxMDFmZjUzNjMgcmVsZWFzZTIzLW1haW50CiszNDEwNyBmZDE2MDE4NDA3ZTdlNTM0NDQ3OWQ4NzE5ZGQ2NjNiZTRmZGZiNmQ5IGxlZ2FjeS10cnVuaworMzQxMDggOTY3NTY5NDhkMWM5MjQ5NGI5MDI2ODQ2NWM0MTI0NjA3YWI4MWE2NiByZWxlYXNlMjMtbWFpbnQKKzM0MTA5IDExYzMyMDk1YzMwNTYxYzEwNDFkMzI1MTFhYTUzZjQ5ZmE5N2E1NTEgbGVnYWN5LXRydW5rCiszNDExMCBhNDMwYmU2ODNhN2FkMzNiNWI1ZDIwOTk3YzJhOGJjY2Q3YzJhNGQxIGxlZ2FjeS10cnVuaworMzQxMTEgYTY4NzdmZmQ5NTgyZDhhZTAzMzQ0Nzc1ZjE2YmU0MzAzMzBmMjdjZSBsZWdhY3ktdHJ1bmsKKzM0MTEyIDU0YWIxOTU1ZDI0MmUzNDlkNzgyMTM3NjNkYjdiY2M2NjZiNzJiN2YgbGVnYWN5LXRydW5rCiszNDExMyBkZDk4ZjI5Y2ZjOTg2MzMwZDI5YmEyNzdjZjBmZmU3ODYzNzkzZmNhIGxlZ2FjeS10cnVuaworMzQxMTQgNzc3M2VhN2IxYzY3NDkxZDg1M2VkYTQzYmQzOWMxMjdkZjk0ZWEwNCByZWxlYXNlMjMtbWFpbnQKKzM0MTE1IGI4NzM3YTMxMDUwY2EzY2M1ZDBiYzM3MzRiNjQ1YzBhYTU0NjYwOTYgbGVnYWN5LXRydW5rCiszNDExNiA2MmFlMjE5MTQ0YzRmNjJjZTVhZmJlYzAxMWQ2ZjllNTNlYzE0NjViIGxlZ2FjeS10cnVuaworMzQxMTcgMDQ1MTc0ZjZhNzlkYjMzYmIxMDc0MzRhNjE1ZjNhNzJkNzZhNTcxZSBsZWdhY3ktdHJ1bmsKKzM0MTE4IDQxYmJiYjQ4OTc2NGM4YzZmN2RiMzllMjI4MTdjZTFjZjJmYjY2ZTAgbGVnYWN5LXRydW5rCiszNDExOSAzNGJkNWMxOThjYWY4NzI0OTA2OGRmMjkyOTJkNDg0ODBlOTcxNTQwIGxlZ2FjeS10cnVuaworMzQxMjAgNjhlMWY4NjA1NmJjMzQ5YjdlY2MzYjgyNTQyZWQ4N2NiYWQyZmQ1MSBsZWdhY3ktdHJ1bmsKKzM0MTIxIDUzZjFjMzJlZTY5ZDc1YzI2ZjU0YjMxZWExZTU4YzM2Y2Y4Mzc3MWIgbGVnYWN5LXRydW5rCiszNDEyMiBlMTdjNDRjNzliMDNlNzE5ODc1MTBjMWE1MjE0N2RhZTdkMjNiZjg4IHJlbGVhc2UyMy1tYWludAorMzQxMjMgMzdmMGUwYjE0MDAzODU1YjkwYTBhYmJlN2ZmYTIyNzdjMWNmNzY4NCBsZWdhY3ktdHJ1bmsKKzM0MTI0IDIwZDk3ODg1ZTVjODkzNGQ0OWQwNGNlM2QzZjM4YTIzYWRjMjBjMDIgbGVnYWN5LXRydW5rCiszNDEyNSAyMzkyMWJjODEyNGJiYzVjMDY3OTI0ZTA2YzIwMmFkYzFlNjFjOGYzIHJlbGVhc2UyMy1tYWludAorMzQxMjYgYzY4ZWI0ZDRiNzg3OWUyMDQ4MmQzMzFhY2NkMmJkNDc0MDgyODMzZSBsZWdhY3ktdHJ1bmsKKzM0MTI3IGY0NGQ4YWRkZDNlODZhMWVlMDcyZGNkOWRhZTE4MWRiMzY5NWM4MzIgbGVnYWN5LXRydW5rCiszNDEyOCAxM2VjOGM0NzlmZjEwM2I0OWIzNzAyMTEzNDMxMzFhODliOGQzMTAzIGxlZ2FjeS10cnVuaworMzQxMjkgMzliZTk5YzY3N2Q1ZTI3ODUyNjE1MTM5ZmEyMTQxOWQ3MTcyOTU2OSByZWxlYXNlMjMtbWFpbnQKKzM0MTMwIDRkMjA0ZmMzYWQzMmYwYTM4NGRkNmMyYmM5ZmQxMGU2MzE0NDgyM2IgbGVnYWN5LXRydW5rCiszNDEzMSA3NDMzZTdjOWUyY2E0NTMzNWMxZmI2NTY0MjFiMWY5ZDQ5NmY5YTQ3IGxlZ2FjeS10cnVuaworMzQxMzIgNDYyN2MxNjg0OWFlZGM5YjU1YmUwNWZlZGJmNzAxY2UzNGYwM2QyYiBhc3QtYnJhbmNoCiszNDEzMyBhMjc0YjkwMzVkMWVhZTIzOTBhOGQ3MmY5YjU5ZDQwODkxMzQ3ZTlmIGFzdC1icmFuY2gKKzM0MTM0IDFlZGI1NDczODA5ZTZiOGY0ZTYyMTA1ZGNmYzVlNjZlYzU5MWY0OTcgYXN0LWJyYW5jaAorMzQxMzUgOTVhYjU1ZDE0MjU2ZjY4MDI5MjA2MGE3NThkOTJiMDkzMDUzYmU3ZSBsZWdhY3ktdHJ1bmsKKzM0MTM2IGQ4NjRmMzE2OGNhY2ZjYjVkMGJhNjZhYmY2YzU3NzVmYTQ4OWU3MTUgbGVnYWN5LXRydW5rCiszNDEzNyAyZjU4MjJkMGY4ZTE1YzBiYmE1ZDVjOTAzZjBlNzBjNzYxMzdkNGY5IHJlbGVhc2UyMy1icmFuY2gKKzM0MTM4IDc5OTE5YzU1MGRmZWRkYWU3ODUwOTE3YmRiNTE5Mzg4YWIzNGNjOTggcmVsZWFzZTIzLW1haW50CiszNDEzOSAwYTE1MGVhOGNiZWEyOGY0Y2I4MGMzNWU3ZjRiMjUzYzhhMDJhZmQzIGxlZ2FjeS10cnVuaworMzQxNDAgYzJjMTBmMWViOGUyYjc0YmJjODRjYTQ3NmQxMDBlMTkzNGI3ZmYyNyBsZWdhY3ktdHJ1bmsKKzM0MTQxIGM5Y2MzNTI0OTMyMmQ3OGYxMTMzNTZiMjdkNDQxZjU4ZThlOGRjOTUgbGVnYWN5LXRydW5rCiszNDE0MiBhOGYwNGNiZjY1OWNiMDI2Y2MyYjgxYzNlNGNkMGI0YTJhYzRhZjExIGxlZ2FjeS10cnVuaworMzQxNDMgY2QwYzNmOTE2YjM0Y2NmMjY5ZTU2ZDJlOGM0NmVkMjQxMzc0OGM2MSBsZWdhY3ktdHJ1bmsKKzM0MTQ0IGU4MTQ3Zjg0MWE0YWIyZGEzZTdkYjFjNmUwOThiMTY3MWY2ZWUwNjIgbGVnYWN5LXRydW5rCiszNDE0NSBjOWY5ZWIxM2VhYzkzMDVlYmExMzRkODExZDg0NTYwZWRiNjhmMmYxIHJlbGVhc2UyMy1tYWludAorMzQxNDYgMTcyNTQ3MGQwZDQzY2FiMmM4ZDE3MDBmYTBjZjk4OWZhMTdhMDlhNSBsZWdhY3ktdHJ1bmsKKzM0MTQ3IGVkOGIzYzAyODE3NGIwNTI2YmFhM2JmZGJhM2Y1MmNiNzEzZThkYTIgcmVsZWFzZTIzLW1haW50CiszNDE0OCA2YmZiODJiZmJiNTZjZGRmYzMxYTIyMWQzMThmMTE0ZTEwYmM5MzY0IHJlbGVhc2UyMy1tYWludAorMzQxNDkgNDFjMmUxNzIzY2RkZDdhYzE3YzdkZGFkMDZmMGY0MzY4ODg2MmY1NCBsZWdhY3ktdHJ1bmsKKzM0MTUwIGVmNGE3MWY1YWYyMjM4ZWJiNmFiNDhjYzA5ZDlhNWQyZmIxYzgzMDcgcmVsZWFzZTIzLW1haW50CiszNDE1MSAzMGU0OTVlZmU5MGEzNjVkMjA1MzI0YWZiNjliNDVhNTE1ZDJmYjk1IGxlZ2FjeS10cnVuaworMzQxNTIgNzg0ZTM4YWJlZDgyMDMxNmViMDg2MzE2ZjYzZjBkMmY3MDI1MThmNiByZWxlYXNlMjMtbWFpbnQKKzM0MTUzIDc2ZTk5OGFlZTY0NDY1ODVmMThhMzRmNGI3MGQ4MTc4OTVkYWEwZmMgbGVnYWN5LXRydW5rCiszNDE1NCA1OWIwYTQ4YTU2NDQ1MDdiM2M2OTNhOGJmNzRkOTYwMjk5NmI2OTU4IHJlbGVhc2UyMy1tYWludAorMzQxNTUgZjg5YWI3OTg1M2E3MGMzOWUxOWY1M2YzZTlmNTg4Mzk0ZTI3OTNjNCBsZWdhY3ktdHJ1bmsKKzM0MTU2IDBiMGFkN2QxZGRkNmE5ODUzMGY0YzhhNGM4YzFkZTQ3ZjNjNTg3NWIgbGVnYWN5LXRydW5rCiszNDE1NyA3MmJmYzc4NmE0Zjg5MmQ1MTNmMzA1ZjA3ZjAxNjE4YTQxYzRjYmM5IHJlbGVhc2UyMy1tYWludAorMzQxNTggYThhMWJlZjQwN2ViMjZjYzhiZTRiMzE0YzlmNWM1YTZiNzViNDM5ZSByZWxlYXNlMjMtbWFpbnQKKzM0MTU5IDY2MjIzM2U2NmQyODJlY2EwN2Y3NmJmMTYyZWJhOTcxYjY0MzEwNDggcmVsZWFzZTIyLW1haW50CiszNDE2MCA3Y2I2NzQ1YmU1MjVjMGE4NGVjMGIxOWIxNDQ0NmEwMDM0MjQzYmMzIGxlZ2FjeS10cnVuaworMzQxNjEgMmE0OTcwOWMwZDU2M2U0YmRjMjQ2NTUwODFhMTQxN2U3NjIyODY1MiBsZWdhY3ktdHJ1bmsKKzM0MTYyIDgzNGJiOWExNTQxOWIwZjYxZDkxYjdmNzNlOWRmMWIzM2ZlM2U0YzAgcmVsZWFzZTIzLW1haW50CiszNDE2MyBiMzljYjkyMTJmNWM4OGNjMjNlODQ5YTJlNzViOTEwMDM0YjE2OTNhIGxlZ2FjeS10cnVuaworMzQxNjQgYmExZTAzY2QyZjQwZmExMmMzMTllZmFjNzQ1ZDQ4ZjgyOWMzZGNlYiByZWxlYXNlMjMtbWFpbnQKKzM0MTY1IGE4NWE3MDEyZGRkYTczY2VmNWQwZmQ2ZmYyNTVmY2EzNzcxNTM1MGEgcmVsZWFzZTIzLW1haW50CiszNDE2NiAwY2FkOTA5NGUyM2U5Y2I3MTI3OTBlYWU5MjYyZmU1ODdjNTNlMzIyIHJlbGVhc2UyMy1tYWludAorMzQxNjcgYmJhN2UxZTBmMWM3NTNhODIyMDBkZDAzZTBkNGZiMTJkZjIxZjdlMSBsZWdhY3ktdHJ1bmsKKzM0MTY4IDkxZmY3MjcwM2VkMzVhYWRmNjVkNGRhYTlmNDE3NzBjN2NiMDBhYWEgcmVsZWFzZTIzLW1haW50CiszNDE2OSA5MjMzYWQwZWFhOTg0NmFhYjdlNTg4NjU1ZWMyYjBmZTcwN2FiZTRjIGxlZ2FjeS10cnVuaworMzQxNzAgNjFkYmEwYWE5ZTM3NGRmMjI5NTBmYWQ0OTMxMjdiZWExMzg4ZThiZSBsZWdhY3ktdHJ1bmsKKzM0MTcxIDFkNjMxMDZlN2RmYTQ4ODNjMWMwYTRmODAxYTM1M2I2ZjMxOTYyNzcgcmVsZWFzZTIzLW1haW50CiszNDE3MiBkNWM0NWI4ZGFhNTJiYzE4ZmQwOTVkNzJkYjdlYjk1NzNhZGE1YjQ3IGxlZ2FjeS10cnVuaworMzQxNzMgOGQyMWZiMmUyNmIwNjkzOTczNDliODMwOTE0MjgxNWZhOTYyYjYyOCByZWxlYXNlMjMtbWFpbnQKKzM0MTc0IDY1YmFjNTlhMzkyODA2OGU3ZjkzODViN2RkMjljOWMzZDM2YzM5NzAgbGVnYWN5LXRydW5rCiszNDE3NSBjYjcyMzY5OTIwYWNhYzE2YjE0MzFhZDQyNTljMzA5ODEwMGZjY2U0IHJlbGVhc2UyMy1tYWludAorMzQxNzYgZDdmMTNhNDllNWVmNjhhMmI1NDhhZDM2MDlkZTg1ZDBiYzkyYTdjYyBsZWdhY3ktdHJ1bmsKKzM0MTc3IDVmOTJkNjYwN2I5ZjBiYTI0NTY5OGQ1NmQ2MjVlYWI2MTY2NDhmZTIgcmVsZWFzZTIzLW1haW50CiszNDE3OCAxYTgxNzY5NGVjYmQ3ZTQ5ZmM5MTVhNWViYTlkZDU2YzE5ZjliYjRkIGxlZ2FjeS10cnVuaworMzQxNzkgNTE4Y2NjMDY0Y2I5ZjMyYjZhNjFmNDljNjJkMDBlYjIzYzYyYTcwNCBsZWdhY3ktdHJ1bmsKKzM0MTgwIGEzN2IyMzcxNGQzZGRkYjU5NmUxZWZjMTVlMTkzNTQ0ZGZhZTMyZTcgcmVsZWFzZTIzLW1haW50CiszNDE4MSA1NTg1N2FlYmMyNGYyM2YyZjJlMGU4ODUyZDQ0ZWQyMDQ5ZjZkNzMwIGxlZ2FjeS10cnVuaworMzQxODIgMWUxZTY4NWQ2OWVmNzhiZGI5OTE3NjcwOTgxZWE3ZmZhMmZkZDRiYyBsZWdhY3ktdHJ1bmsKKzM0MTgzIDk0ZDgyOTM2NzQ3MzcwM2IxOGQ5ZGFhNTRiMDNkMDNlYTA1MzFmZjUgbGVnYWN5LXRydW5rCiszNDE4NCAwODQ0MDhmZWU5NjE0ZTU0ODNlZmVmMGU2ZjU5MmU1YzBhMDM3NjgyIGxlZ2FjeS10cnVuaworMzQxODUgNDI1YmYwN2VhNzBiOGMyZDFlNmExYmE5MWZjOWJiM2IyNTEyZTBmOSBsZWdhY3ktdHJ1bmsKKzM0MTg2IDhkZDA3ZjdkMDkzYjdhMDA1MmZhNzNkZDYyNTEzYjcwYzE5Mzg1MGMgbGVnYWN5LXRydW5rCiszNDE4OCAxODVjNWY2YjYxNTc4NDBiMDU0MWFjMDFiMjc4NWU3NmI1YzM5NWU1IGxlZ2FjeS10cnVuaworMzQxOTAgZGJhNmVmMzA0YWE0NDA4ODA2ZjJhZGEzMDhiN2ZkOWIyMjRkOTgyNSBhc3QtYnJhbmNoCiszNDE5MSA3NmQ5ZDE4ZWYzZTQ5NWFiMGIwZjZlMzgyYzIxZDk5NzRkNDQ5YzQwIHJlbGVhc2UyMy1tYWludAorMzQxOTIgMDdlNjQwYzQwMTZkZmUzOGQyMjVhYTQyYmQ4NjhlYzA5MWQ4NjE1ZCByZWxlYXNlMjMtbWFpbnQKKzM0MTkzIGIyOTE5YTRjNTU4YzZmNDA4YTIzY2I2YTNhOWY2ZTU0YjEwNmJiYTEgbGVnYWN5LXRydW5rCiszNDE5NCAyZjNmNTZmMTI4MGZjZWNkYWMwOWZjMTMxNWY4ZDkxZDEwNjdjYjc4IHJlbGVhc2UyMy1tYWludAorMzQxOTUgOWRmOWJkNDMwYzM2ZDJjODM4YzE2Y2E1YTA4MTZmN2JmNmJjZGQ2NyByZWxlYXNlMjMtbWFpbnQKKzM0MTk2IDc3YWM0NTU4MGM0MDhkNTg2MmY0NmZmYjBlMmFlNmM3NjVlNDViNGQgcmVsZWFzZTIzLW1haW50CiszNDE5NyA1MWU4NWU4YmZhNDczMmFjOTgwNjY5YjMxNGRiMjYyN2Q2M2E4OWM3IGxlZ2FjeS10cnVuaworMzQxOTggYzQ4YTJjYzkzNzgwZjQxYTc3YWFmY2ViN2EwYTgxMTYzNDcwMzA3OSBsZWdhY3ktdHJ1bmsKKzM0MTk5IDFhNzkyZjM2YjY5ZTM2YTRjNWJlZmE2MWEyMzdmYmY1YmU4MGI3YTUgcmVsZWFzZTIzLW1haW50CiszNDIwMCAwMjI1N2Y2YTY4MmE3ODMxN2VmNDZmOTVmZjEzYmQ2Y2UxNDVjODg5IGxlZ2FjeS10cnVuaworMzQyMDEgMWJjNmVmMWY2YmRiNDc5MWE5ODQ1MWYzZThiYTI3YTVlMjkzYmI3NSByZWxlYXNlMjMtbWFpbnQKKzM0MjAyIGQ3YmYxMjMyYTg2ZDE0NGQ0YmExNzBiNTA3YjZkMmIwZjgxOTRmZWUgcmVsZWFzZTIzLW1haW50CiszNDIwMyBiMGMzZDk4NmY2M2Y3NTgzNTMxMGQ2N2RiOTMxOTRjM2E4MTM4NGQ3IGxlZ2FjeS10cnVuaworMzQyMDQgYTdjNGFhODFlYjg1YzAxMGE3Yjg1OWQzNzMzMzExMGExNmI1MDdjOCByZWxlYXNlMjMtbWFpbnQKKzM0MjA1IDc2OTc5YWZjNzg1YmQ2M2QwMDY2MWJmZDVkYzEyZWIwM2RiNmU5N2QgcmVsZWFzZTIyLW1haW50CiszNDIwNiBhZDI1M2MwNmJhZjFkNGFmMmEzMjEzOTdjZDY0NzZjZjI0MTNiZmQyIHJlbGVhc2UyMy1tYWludAorMzQyMDcgMDk2N2NiOTA1MzRjYzZhN2VlMTg2M2I4ODBlMGEzMGM0M2UwNDdhMSBsZWdhY3ktdHJ1bmsKKzM0MjA4IGUyYjlkNDM2ZjhmN2FmOWNhYmYxMGRhNjllZTA2NDNkZThiZjRmMDUgcmVsZWFzZTIzLW1haW50CiszNDIwOSAzZjI4OTY0ZjhlY2NjOTQwMTNlODY4ZDIzMGM3MWVlNWNkMjhlMmRiIGxlZ2FjeS10cnVuaworMzQyMTAgODcxNzc2ZDM4MjEzYTkwNjdjNmQ5YmFmODkxOGVhZGJjMTdkMzg5ZiBsZWdhY3ktdHJ1bmsKKzM0MjExIDE3NzY1ODc4NWZlYjhkMjYzMTVhOTFkY2U4OTdjNmI5NThlMjUyMDcgbGVnYWN5LXRydW5rCiszNDIxMiA4MzYwYzc0ZDA1M2JhZDViYmUwMzM5ZmMzY2I5ZTQxYzg4Y2E2NTM2IHJlbGVhc2UyMy1tYWludAorMzQyMTMgNWM1YWRiNTQ0M2NjZTg5ODE0YmRlMGVkNzMwMzgwY2VkMzU2NTEzOCByZWxlYXNlMjMtbWFpbnQKKzM0MjE0IGQ2ZjRkZDVhNTAwNmI5ZjEzNjY3NjU0ZDM5Mzg1NWY3YWQxMjlmYmEgcmVsZWFzZTIzLW1haW50CiszNDIxNSAzMzljODgwNGY4MDRhOGVlNDUxZWI4NWJiMmMzMzM3N2U4MzViM2Q1IGxlZ2FjeS10cnVuaworMzQyMTYgNThmMDFjYzBmMzAwYWIxOGYxNDgxZWM0MDY2Y2YzNzljMjNkNjRlOSBsZWdhY3ktdHJ1bmsKKzM0MjE3IDU4Zjk2YTAwZDM4ZGMwMDJhZGU4MTg4ZTRmNGVlNjQwYWZiZTBmMGMgcmVsZWFzZTIzLW1haW50CiszNDIxOCAyNTRiZDNlODkxZjZkOTU5MWM5MWUwZjhiYjE5ODMxMDRmNjUwMmMyIGxlZ2FjeS10cnVuaworMzQyMTkgMGVkMWVhY2UyYTYwYmFlYTc0ZGNkNWUxNmJkMzlkY2NjZTZjOTkxMiByZWxlYXNlMjMtbWFpbnQKKzM0MjIwIGY0YTAxYzQwNWE0NGI2MTcwNWExM2NmNzU5NmU1ZTliZGYyMjk1NzEgcmVsZWFzZTIzLW1haW50CiszNDIyMSBjZThkMWY5NTFlMTkyZmVjOGY0NjdlMzUwNGFiZDQ2NTU3NDljZDM1IGxlZ2FjeS10cnVuaworMzQyMjIgZDc1NTkyZjZlMmY3Y2ZlMGViZDg3OTMwMTQzMjQyMTUxOTY1NzE4MiBsZWdhY3ktdHJ1bmsKKzM0MjIzIDk1NGI2MDliODRjZDA5OTZmYjRmZDNmYjRlODA3ZGE3NWJmMzcyOTAgcmVsZWFzZTIzLW1haW50CiszNDIyNCA3NzRhOWYyMWVkYjk3ZDQ0OGU2YTU1OWE2MzUyNjcxMWE5ZGE5MDQxIHJlbGVhc2UyMy1tYWludAorMzQyMjUgZTk3MjMwZTVjMWNhOTBmNzdjYTI3NTI2OGNlZmY0OGFmOTI3NDkxYSByZWxlYXNlMjMtbWFpbnQKKzM0MjI2IDkzMWU4ODg5OTFiYWI3NDExMDhiMGY4NmY5OGEwMTZhODE5ZDc4YmUgbGVnYWN5LXRydW5rCiszNDIyNyBmM2NlMTlkOTYxZGRhNmU1M2ZlNDc3YjYwODg1MDUwNjUzYjhhYTI3IHJlbGVhc2UyMy1tYWludAorMzQyMjggNTM4M2Q1NjJhMzhkODFiZTJlOGZiYTQwZTdlNTNkOTkxNDE0MTlkNCBsZWdhY3ktdHJ1bmsKKzM0MjI5IDZlMWY3ZGJlY2Q4NGQ1M2I0OWZkODA0MzdiMDM1MGRjZWQ5NmFkMzEgcmVsZWFzZTIzLW1haW50CiszNDIzMCBjOTcwMDhlZTcxNjYwNzRiMDQ5OTgyZDg5M2Q2MmRkN2RhMDkwYThlIHJlbGVhc2UyMy1tYWludAorMzQyMzEgYjI3MjhjODdkZjlmYmYyMzM0NzhhM2Y3NTY4OTY5MGU2OWNhZGMxZiByZWxlYXNlMjMtbWFpbnQKKzM0MjMyIDI2Y2M1ODY1YTgzNjYzM2JmM2YwZmZjM2Y3YzM1OTQxODlkNjQ1ZWQgcmVsZWFzZTIzLW1haW50CiszNDIzMyBhMWI5NjVlMWJiZTlkOGY0ZDg2YjRlOWQ4YzE3YjM1ODUzNGVjYjEzIHJlbGVhc2UyMy1tYWludAorMzQyMzQgODE2ZDQ4NjdmMjEwNjVlMWIzOTJhOGE5ODY4ZDE3ZjRmZDAwNDQ4NiByZWxlYXNlMjMtbWFpbnQKKzM0MjM1IDdlNjBkODI3MzBmZDhhZDQxNjM3MTljNjI1ZGM5YWRmYmY5NjA4ZjkgbGVnYWN5LXRydW5rCiszNDIzNiAwMTgyY2VjNTA4YWFiNGZmOWU4MTlhMmQ3N2UxNDA1MDZmMTQ4MjU4IGxlZ2FjeS10cnVuaworMzQyMzcgZGI2M2NiMGZjN2RhMTc5YTRhMzJhMjRiYzJhNGU3ZmExMDEwZmI2ZCBsZWdhY3ktdHJ1bmsKKzM0MjM4IDljMmViNDE1MTMwZjM0ZDNmZTVlZDc0N2Y3NTMyZjFkMjI4NTI0NzAgcmVsZWFzZTIzLW1haW50CiszNDIzOSA3Mzg5ZmY1Nzc4NzM5MGIzNDczMjExZDdmZDU2OTBhMThiZTQyMDNkIHJlbGVhc2UyMy1tYWludAorMzQyNDAgYjkyYjM3YjAxZmZiMTYwODMzNGVkOWFlMjZjMzIwMDVjYzU3MDhkMiByZWxlYXNlMjMtbWFpbnQKKzM0MjQxIGU1YmFjYjk1OTdmN2I0NGFhN2RjMGQyZDQyMGE5NThkYjY3NGNjMjUgbGVnYWN5LXRydW5rCiszNDI0MiBmYmFkM2VmYTQwYmJkY2Y2ZDRiOTZhMzllMDUyZDYxNmNhNGFiMDcyIGxlZ2FjeS10cnVuaworMzQyNDMgNjJjNmFmZTM3ZDEyM2FhM2E4NGEwMTdjOTBiZjc3NzlkMjE1M2ZjZSBsZWdhY3ktdHJ1bmsKKzM0MjQ0IDkyOWU1NDgxNzRjNWZhZTkzYmM5MGY1MGI2MjFhMGZhYmFkZTE5N2IgcmVsZWFzZTIzLW1haW50CiszNDI0NSBkYmU4MzkxZWQwNmYyMzliNDM5ZDVjZTEyYjJiYmI5NzA0N2E4MDc4IHJlbGVhc2UyMy1tYWludAorMzQyNDUgZmE2NWY2NTI3ZmUxMzRhYTk3ZTAzZTFiMmFmMzY1ZDQ0M2I2N2RjNyByZWxlYXNlMjMtbWFpbnQKKzM0MjQ3IGRhOWI3NDA3ZTU2YzJhYWU5ZDI0NjZjMGM0YTY1ZDAwYmE5ZTRhZTggbGVnYWN5LXRydW5rCiszNDI0OCBhMTViMWMzYzIzNmE0YjI0Yzk2OTI4NTBlMGE0NTNkNTUzNThlNjExIGxlZ2FjeS10cnVuaworMzQyNDkgNzE3MDI0ZGJiYmFjN2Q4N2NkYzQ4MjNjNjBkOTljYThhNjE3NzQxNCBsZWdhY3ktdHJ1bmsKKzM0MjUwIDJhMTY1ZGRmMjIyZGM0MjliNzU4ZTI3NzEyNTYwNzQ4MjY4ZGU5NjcgbGVnYWN5LXRydW5rCiszNDI1MSA1MjkwYTQ5MzYxNzBkYzg4ZmMzOGY4ZjczNjJhMmE0YzU4M2UwMjAxIGxlZ2FjeS10cnVuaworMzQyNTIgYmI4MjUxMWQxOTA2YTI3OThiMjA1OGQ1OTJmNmI2ZTg4YTAxNTFlZCBsZWdhY3ktdHJ1bmsKKzM0MjUzIDY5M2QxN2RmYjhmZDQ4ZDUyMjY0YWJkOTgwNTY3NDg3ZGI4OTY1YTkgbGVnYWN5LXRydW5rCiszNDI1NCA1NjM5MDg5MWQ5ODhjODc1OWVhMTBjOTA0ZDMxNDU3MWUxODIwYmQ4IGxlZ2FjeS10cnVuaworMzQyNTUgOWNkNGY0YWU3YTRjMmI4Y2RjZTNhYTY0YTdjMTQ3NzBmOWY2NmM2ZSBsZWdhY3ktdHJ1bmsKKzM0MjU2IDVlYzQyMzNlZGNlZGM0NzI1NWE0ZDExYzdmMGQ4NjYyMmVmYmIyMDUgbGVnYWN5LXRydW5rCiszNDI1NyA3MDM3ODJkOTAxNjEzYzYwOGFhNjk1MjNjMmJmNWU1NzA5YjJjODNiIGxlZ2FjeS10cnVuaworMzQyNTggNWQyYmE0MzdlMWJkM2IzNGFkNTc1Y2E3M2U4OWZkYmUzYzFmOTA2YSByZWxlYXNlMjMtbWFpbnQKKzM0MjU5IGUyZjUwYTdjYzQ5NGY5MDc0OTI4MWYzM2IzOGNlYmJkZDZlZjM1ODMgbGVnYWN5LXRydW5rCiszNDI2MCAyY2U5Zjg5YzRiYmM5YjU3YjRmOTdkNzY3MmFhZjkxNGM5OTE4YzAxIHJlbGVhc2UyMi1tYWludAorMzQyNjEgZGRlMjc2YTg4Yzg4YTBkNGJhMjU2OTMxNDc5N2RjZWFiNGM4NmMwYiBsZWdhY3ktdHJ1bmsKKzM0MjYyIDM2MWI1MGEwZDI3ZmFkN2I0Y2ZlY2ZmYjg2ZjIxZWU1NjljNjY5ZjkgcmVsZWFzZTIzLW1haW50CiszNDI2MyAzMzJiZmYyNzViMjE4YzRlOGQxZDc4M2FkMjJmMzczYTQxM2U4ZDhhIHJlbGVhc2UyMy1tYWludAorMzQyNjQgYWQxOGY1YjhkNmY0YzYxYjJhYTc3ODZjNTQ3NWYyMTQ4NWE0M2VmYSByZWxlYXNlMjMtbWFpbnQKKzM0MjY1IDhjOWY0OGJhNTBmYTE2NTEyODZkODZkNzE3MDVhMzY5MzkyYTNkYjQgcmVsZWFzZTIzLW1haW50CiszNDI2NiAwNDU3MDQ5ZjI1ZTBhMGExNzdjM2U1MTYwMDQzZjhjNTc3YmI0MTQ4IGxlZ2FjeS10cnVuaworMzQyNjcgYjdhMjEzNWZjMTU2YWE2MWE3MTAyZTYwNjE5Y2E5NDVjYTdjZGUyYiBsZWdhY3ktdHJ1bmsKKzM0MjY4IDAzMmI5MjU4ODg1YjcxODI5M2U0YzdlYjM5YzQwN2IzNGRlZGIwYzIgcmVsZWFzZTIzLW1haW50CiszNDI2OSBhNTY3MWFlY2YzOTAxM2M2YzY5MDUwNGM3NDg1NmE5NmE2MmEwN2U4IGxlZ2FjeS10cnVuaworMzQyNzAgYTU2NmM0OWI3MGZhZjlmNjc0YjQ3ZjI0ZjEzZDRlNDk4ZjAxODc2YSByZWxlYXNlMjMtbWFpbnQKKzM0MjcxIDg1MjllYWM1MDY1ZDIxNjk3ZmU3Zjc1YTJiMTkxMGIzNGFmYTcxNzggbGVnYWN5LXRydW5rCiszNDI3MiBkOTZlN2Y4MmQzOTk5OTk0YmE4ZTU2YTQ0MDg1NDU2MTAwNDQ2MTkwIHJlbGVhc2UyMy1tYWludAorMzQyNzMgZTFiYWEyNDliM2YyM2Q5MjI0OWU1YmNiNDBkZmVkZjA0MzM4Y2RlNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjc0IDZmMzM0M2RlNjViMjJjNzMxNmE3NmM2NjY4NzZjMGZjOGZmMDM5YjEgcmVsZWFzZTIzLW1haW50CiszNDI3NSAxMmRhMzRlZjg4NTRmYjEzNGRmMWY4ODc2N2FmMzdiYmY4OTYxNTI4IGxlZ2FjeS10cnVuaworMzQyNzYgN2Y0OGU4OTQzOWUwYmVkYzMzY2E2YTkxNzUyZDUzNjQyODZjY2I0ZSBsZWdhY3ktdHJ1bmsKKzM0Mjc3IGRkNDQ4NTk0M2YyM2Y0ODVhYTgwNzBmODljYTdmZDk3MDlhMzhmYjYgcmVsZWFzZTIzLW1haW50CiszNDI3OCA5NGI0ZmNlN2E5OThiMjM4MmJkOTI2YTFjM2JlYTdlZTUyZmNmMWNkIHJlbGVhc2UyMy1tYWludAorMzQyNzkgNmMwNDAyZGFmYjE4Y2M1OGFiN2U5OWJmYjE4NTI0ODc3NjMxZGNhZCByZWxlYXNlMjMtbWFpbnQKKzM0MjgwIDYzYWUxYjkxYTg2ODU1YWRkYzRhZWY0NTkyMjg0MGMyNDkwN2NhOTEgbGVnYWN5LXRydW5rCiszNDI4MSAwMzVjOTc4M2E0ZGRiYWZhMTc0ZTYwN2QyNTRiNzY4Zjc2MGFjOTRhIHJlbGVhc2UyMy1tYWludAorMzQyODIgODU0MDcxMmQ2ZTJkMzE3NWM4MWE5MTFkMDdlNjYyYjlhYWY5ZjIyMSBsZWdhY3ktdHJ1bmsKKzM0MjgzIGUxOGMxMGNhNzQwODI4NjhkYWVmNjJlYWIzMmFjOGI1Y2MzMTMxZGQgcmVsZWFzZTIzLW1haW50CiszNDI4NCA1OWI4NTFiNmFkMzNhNTdmNTEwNTZjNzMxNmI3MGY3MzJlMGQyOTZlIGxlZ2FjeS10cnVuaworMzQyODUgYTUzZWFiZTAyNzI5ODQ3Y2FlNDhiODQ1Y2ZmOGU4MDNlMmU3OGFhNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjg2IDdiYzUxYmU3NWZlYmZkNzIyN2U4MmE5MDc2MzQ0NmIyZjE4OGFhNmEgbGVnYWN5LXRydW5rCiszNDI4NyAzZDFhZTFjODZmZDM5MzY3MTc1NGUzMjhlMGNhNzMwOTNjM2I0NzQ5IHJlbGVhc2UyMy1tYWludAorMzQyODggZTZjZWE3N2FiZWUzNmZmMWVmMTk3MTQ0OGM0ZTE2MTllZTJmOGExNCBsZWdhY3ktdHJ1bmsKKzM0Mjg5IDA2MTY0YzZkYzUwOWYxNGMzZGE5YzQwMTVlYWVmNDA2NzZmODYzMTcgbGVnYWN5LXRydW5rCiszNDI5MCBiZDRjNGI2ZTA5YTE3MjQ0NzZiMWIxOWJlZDFlY2NlNTRhMjQyYTUwIGxlZ2FjeS10cnVuaworMzQyOTEgMGM5YWE3ZTU1NDE1N2M1OGNkODFmNmNkZDI0ZDFlMDU5ZDIyZTkwNCByZWxlYXNlMjMtbWFpbnQKKzM0MjkyIGZjN2VmNGZkZTI3YTFlZGZkZmMwN2Q1NDU2NmRmNTE3NWQ0ZTU5ODcgcmVsZWFzZTIzLW1haW50CiszNDI5MyBiOTU3OTc2Y2Q4ZTdkYjQ2MDVmNWRjMDJmNGY1ZDMwMjgyN2JkYzU4IHJlbGVhc2UyMy1tYWludAorMzQyOTQgNThiOThmOTg4YTA4MTlhMGQzMTU1YmJhN2Q4OGRmODRjYjQyOTZhNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjk1IDNlZjg3YTBiYmJhZDA1MjYyMjQwMjJhYzVkZmE1Mjg3NDA5Y2QyNTYgbGVnYWN5LXRydW5rCiszNDI5NiBhYjNlNzcwYzNhOTliZmI3NzE3MjEwMjc3MjJjM2U4NGM4ZWZmYTExIGxlZ2FjeS10cnVuaworMzQyOTcgOThhNmI2MDE1MjI5OTYzMmU4NDgxZTNiOTNjZjdhYjZkMmU4YjUxOCBsZWdhY3ktdHJ1bmsKKzM0Mjk4IGQzNGI2ZjkyZGQzMjVkNmJkYzZlYjhlZTc2MTBmYmRjMjM5NmRhMjggbGVnYWN5LXRydW5rCiszNDI5OSBkYWY4YzkzMjc4NmQyOTg0ZjVlOTI5NzUyNDQ5YmQ0MWViYTA4NmZkIGxlZ2FjeS10cnVuaworMzQzMDAgMzQxNzVlOTQwODFjYTk2YWVmOGMyMmQ1Y2VhOGY0NDZiNmU5YzU3ZCBsZWdhY3ktdHJ1bmsKKzM0MzAxIGM5NTFmOWMzMDZmMzI0Zjc3Yzg0NDExZjFjNjM1MWIzYWU3NzYyM2QgcmVsZWFzZTIzLW1haW50CiszNDMwMiBjZGRiN2M4ZGIzNjc5MTUxM2U5OTdiYjI3ZTNlYTg5NmI1YzBjZTk0IGxlZ2FjeS10cnVuaworMzQzMDMgNjdjZDNlN2QwZWFjZDg5Yzg1MWQyOWE2NGJiMmJhYmUyZDc1OGVjYiBsZWdhY3ktdHJ1bmsKKzM0MzA0IGI2YzBmOTA4YmViODA5ZjFjN2Q1ZGEwZTIyMDQ3YmE4NzVmZmY2YWMgbGVnYWN5LXRydW5rCiszNDMwNSA3NDFmNzlmMTAxMmEwZWI0MzM0OTVkMmI2YTQyOTRkYzFkOTBmMWUxIHJlbGVhc2UyMy1tYWludAorMzQzMDYgMjA3MTI0ZjZhOGQ3YjJkNGMxNTM1MjZlNWE1NTc5Mjg5NjhhN2EzNyByZWxlYXNlMjMtbWFpbnQKKzM0MzA3IGZkNTQwMjIwZmZjNGYwODAxZWY2OWJkNDQyOGY4NmVmMWRkMjJiZjcgcmVsZWFzZTIzLW1haW50CiszNDMwOCAzZTFiZjc1MTA2NDExMGRlMzE4YWFhZTU1YmYxNTI4YWM4NjE5NjhlIHJlbGVhc2UyMy1tYWludAorMzQzMDkgYzg3NmFjNGQwMzM3MTk1ZjhjYWM3ZDM3ZTRmNGI4N2FlZDI2MDVkNiBsZWdhY3ktdHJ1bmsKKzM0MzEwIDYzYzY0MDg4ZmY0OTgwMDU2NTcyMTRlMWM0NjI2YTViMzRhMjNlNzYgbGVnYWN5LXRydW5rCiszNDMxMSAwMDI4ZWY0NWE1MGVhNTVhY2E3Y2JkM2VhNzdiODkwOGRiOGNlN2MzIHJlbGVhc2UyMy1tYWludAorMzQzMTIgNmQ3NTM4MzI3NDM0MmYwMDM1ZjBlM2Y4ODM0NDk0NTAyYTQ1YmE4OCByZWxlYXNlMjMtbWFpbnQKKzM0MzEyIDdkNzM2MmE3MTI1M2JmZjRmYzFiMGM4MjVjMTQ1Njk3NzhkYjhjMzYgcmVsZWFzZTIzLW1haW50CiszNDMxNCAxYjljM2E4YzQ5ZGI2OGJmZWM4YWE2NTY2MWMwNTQ3MWIwMzZjMzdjIHJlbGVhc2UyMy1tYWludAorMzQzMTUgMGM2ZmU1OGFmN2QxMjQ3OTcyMzg2MzExMWNlYWIxYmJlY2U1MTZkMCBsZWdhY3ktdHJ1bmsKKzM0MzE2IDZmOTc4MmNjMjc1MGQyODZlZTljNjZmMGEwNDhiYThjMDk1YzViYmIgcmVsZWFzZTIzLW1haW50CiszNDMxNyA2Y2ZkOTdkN2ZlOThkNzgyNjIzMzVhYzYyMTYyOGMxNDExYmZiYjBjIHJlbGVhc2UyMy1tYWludAorMzQzMTggZmJmNmVlNTc2OWQ0MmEwZGY4M2U4YTk0NDYzOGRiZjI5OGIyZDYxMyBsZWdhY3ktdHJ1bmsKKzM0MzE5IGQzZmI3NWJjNjM1NmU5Y2Q1NTEwYTNmYzNmYmRmZGYwNzJkYmRmYzUgbGVnYWN5LXRydW5rCiszNDMyMCBkZTg1NTJmMGFjYzU3NjQzZGQ2MWMyODkxZGM0MzJjZDE1MDc2MDIwIGxlZ2FjeS10cnVuaworMzQzMjEgYmJlNjNhODc5NjlmZGJmNjYxN2Y1NzFmNWEzYjNhNjY4NmRkZTI2NyByZWxlYXNlMjMtbWFpbnQKKzM0MzIyIGM5ODMwMjIyNTI5MjBkMzQ5MzBjMGY5ZDllNGQ4N2ZkNDliNDk0ZDQgcmVsZWFzZTIzLW1haW50CiszNDMyMyA4MjcwMGE3ZTlmYTRiNDBkZTIwODVjYTI3NTY0ZDIxMWZkZmY5NTVlIHJlbGVhc2UyMy1tYWludAorMzQzMjQgYTY3M2Q4NWY1YWQwYTU1YTVkOTA4NTNjOWJkNDVmZWVlNjQ1ZGI5YSBsZWdhY3ktdHJ1bmsKKzM0MzI1IDY2ZmQ4MjdmZTFkODRiYTY4MzliZDQ0MTc0OTVmYTA5ZjBhZGJhZTcgcmVsZWFzZTIzLW1haW50CiszNDMyNiA5ZTYxNjQxOThjNDU3MjNiMzU3N2E2YjAzMWRiOWE2YmY4MWUxYzYyIGxlZ2FjeS10cnVuaworMzQzMjcgYzczZjE2MjI1YTcxYWRmMDEwYzIyNjE2MzE3ZGI4Yjk4MmQzMGQ0NyBsZWdhY3ktdHJ1bmsKKzM0MzI4IDdiZDZjNmI1M2Y4NzE3MGFlYWMwM2JkN2IzZGY2ZGUwNDBmODZlYTYgbGVnYWN5LXRydW5rCiszNDMyOSBiMWM1Njk2YWQ0NzU4NTg0NGEyYTg1ZjljMzQ2ZDBiMDk2NWRhNWRiIHJlbGVhc2UyMy1tYWludAorMzQzMzAgMjc5NTlhMDJkMzlkZTljMWEyZThjZThmZTdlZTVhNmVkNDhlZmFmZSByZWxlYXNlMjMtbWFpbnQKKzM0MzMxIDEwNzliZTU4N2JhYTA3OTYyYzM0MTNlMzlkODg5MDA0OGQ2MTY2YzggcmVsZWFzZTIzLW1haW50CiszNDMzMiBkNDdjYzZmNzFmMzJhMzJjMTY3YWM5NjI2YTRlYjc5NTYwZTg1M2I4IGxlZ2FjeS10cnVuaworMzQzMzMgYjdkMDFlZmZlODk5NTBhODM0MmY2ZmZhN2IzOTZjOTJmNzFlNmJkYyBsZWdhY3ktdHJ1bmsKKzM0MzM0IDg0NzMxZWVhNmRiOTBmZTI5Y2Y4ZmRiM2ZjOTljOWNhYjkxNDM5M2UgcmVsZWFzZTIzLW1haW50CiszNDMzNSBmMjlmMTA4YWI0OWVlYjVkYTJmMzUyZGE0NmQzOTZiYmQyNzQ4MjgwIHJlbGVhc2UyMy1tYWludAorMzQzMzYgNWZmMjRkNWQ5ZTkyMmIwMmViODgxMTE1YjkyMTk3YTEyZjk2MGNjZCBsZWdhY3ktdHJ1bmsKKzM0MzM3IGU3M2YzYTAzMjc2MzZhZDhkNjZjODIzNWU5ZTQzYmU2N2VmMGJjNzEgcmVsZWFzZTIzLW1haW50CiszNDMzOCA1NzNhNDBiZWMwNzA0MmE2NjE1NjNmYzJmYWEzZTE5YzRhMDQ4YTI0IGxlZ2FjeS10cnVuaworMzQzMzkgZjRkZWUwMTViZjg0YzJjNmMzMjA3NThiZTQzZjNkNGExZjFmZTRhZSByZWxlYXNlMjMtbWFpbnQKKzM0MzM5IGJlMjUzM2ZiMTBhNTg3YzhkYTg5YjE4YzVmMzgxZjQ3OGQ3MjA1OTMgcmVsZWFzZTIzLW1haW50CiszNDM0MSBlNWU2MDg5MmMzZTM1N2U1ZTc0M2NiNjRlYzcwYzM0NTk2MjVkN2M0IGxlZ2FjeS10cnVuaworMzQzNDIgMThlMjM5ZjIzMDI5ZDgwZTg3MzE0OWExOTEzZWI0OTdlYjMzN2VmNiBsZWdhY3ktdHJ1bmsKKzM0MzQzIGM0ZTNhNmNhY2ZjYWJmYWViYWNkOGVmYTczZWViOGY5ZTk3ZmZhZmQgcmVsZWFzZTIzLW1haW50CiszNDM0NCAyZWY4ZDYyZGNjMDkxMDYxMGRjZmZhOTQyNzM4MzAxNzlmOWQxMzU4IHJlbGVhc2UyMy1tYWludAorMzQzNDUgOTIwMDcxMmQzMWU3OTBlYzE5Yzk2NGM5NjFhODYxZmUzMDVlNjcwYSBsZWdhY3ktdHJ1bmsKKzM0MzQ2IDgxN2I2ZTBmNDhkMWJhODc0MzMzOTNjMzg1ZTY0MzNiOTkxNGM1OGUgbGVnYWN5LXRydW5rCiszNDM0NyBmOWRmZGNiODk3YmI2NjRhNDFhOGYzNzQ3YTVmYmRhNGQzOTRlN2U0IGxlZ2FjeS10cnVuaworMzQzNDggYzFhNjcyZWUxNTMwMzUyZWExNjAwNTlhMzM1ODEyOWVhZmMxOGM2MCBsZWdhY3ktdHJ1bmsKKzM0MzQ5IDdmZDU1M2ZiNDMxNTAzN2M2YTExYWY5MDliYzRlNzdmM2IyMTg1YTcgbGVnYWN5LXRydW5rCiszNDM1MCAwNDcxYzY3ZjYxYmQ3OTc2NTExNThiYWZlMjUyNGZhOGNjODAzZWMwIHJlbGVhc2UyMy1tYWludAorMzQzNTEgMGQ0MDE3ODQ2MjFiNGY0OTg1MjM1MDhiYjU3ODc0ZDdlOTNkN2Y0YiBsZWdhY3ktdHJ1bmsKKzM0MzUyIGEzMDE1YmJhMzk5OWJkYzAzZjMxN2YzZjEyM2Y1NTBjZWE2ZTY5MGEgcmVsZWFzZTIzLW1haW50CiszNDM1MyAzOWU2MzVkYTIzMjZhNTdlZTgwZDRiZmE5MWZhMzgyOGNjOWE4NjU2IGxlZ2FjeS10cnVuaworMzQzNTQgNWVhMGZkMjZiZDM2NDYyZGQ2NWJhNTQ3Zjg3OTE4ZWY4NGQyNWJmMyBsZWdhY3ktdHJ1bmsKKzM0MzU1IDE1NDNhODQwZmM3ZjNhMGFjYzhhOWJlZmI2YTg2MWY3NTc0Y2I2NDAgbGVnYWN5LXRydW5rCiszNDM1NiA3MTc1N2NlYTI1N2YzNjlmMGQxMmEwM2YzNDRiNzhlZDU5ZjgxZjkxIHJlbGVhc2UyMy1tYWludAorMzQzNTcgMDQ0Nzk4ZDhiYmZjN2I0ODQ1Y2EwMzBjYTA1OGU3M2IwMzdlNzAxMSByZWxlYXNlMjMtbWFpbnQKKzM0MzU4IDg2MzBkZDhiNWNiNDY3MzFlZGE3YzdkM2VhYTVmZGUzNDhiNWZjODEgcmVsZWFzZTIzLW1haW50CiszNDM1OSAyMDVhMjkzZjNkZTA4MDJlNzBkY2QyZmQ0ZmZhYzI2NGRkNGM3ZDdiIGxlZ2FjeS10cnVuaworMzQzNjAgZDBiOGM4M2MyYTZiNjlkMjA0ZjMzZDI1NjI5NTU5N2NmYmRhNGE5ZiByZWxlYXNlMjMtbWFpbnQKKzM0MzYxIGE2ZmI2ODIyODE0YWFhZjYxYzY4MDZhODIyZTVmNjQ2ZWE2NmFmMWQgbGVnYWN5LXRydW5rCiszNDM2MiAxZWFkZTc3ZWE5ZWE3OWZhYzFjZjQ1ZTBkYzEyNGJjYjZjNzYzOTRlIHJlbGVhc2UyMy1tYWludAorMzQzNjMgZDc5YmIyOWZmOTZjYzA5NDc2MzlhYTFiZDYwMDZkOTRjZGU5MmRiOSBsZWdhY3ktdHJ1bmsKKzM0MzY0IDg4NDFkMzRhMmMzN2ViOTg5MjlkMzNkNTg2ZWQ0YWRhY2I4NTllYzcgbGVnYWN5LXRydW5rCiszNDM2NSBjYTAzMDMyMDk2M2Y1ZmQ1MDEyNzc0YWI4ZmZmMTE3YWViMGRjNDFjIGxlZ2FjeS10cnVuaworMzQzNjYgNmZkZWUzZjllY2UzYWI3Y2Y5NmJhYjY2NGY1ZGQzNmZjYzI3Y2ZiNCByZWxlYXNlMjMtbWFpbnQKKzM0MzY3IGFkNjMwNmQzNWNlM2ExOTVkNjlmNjE4MTg1MGE3Mjc3YjNjNzE1MjYgcmVsZWFzZTIzLW1haW50CiszNDM2OCAzYjQ3ZDYwNTcxNTE3ZWMyMDdhYzY1YjE3NjczM2QyNzlhNDYyMjdmIGxlZ2FjeS10cnVuaworMzQzNjkgMDU1YTgwODgxZTk2ZDkzNmYxNDQ1MzA0YjIzOWNlZWM4Y2QxMGJmOCBsZWdhY3ktdHJ1bmsKKzM0MzcwIDBlMGJhOTI5NTUwYzAzYzdhMWNmMTQ4OWQwMzAxZWIyNTA1MzNhMDkgcmVsZWFzZTIzLW1haW50CiszNDM3MSA4MTQxZWVhZDE5MDczZjRhYTkxNDE5NzBhYjdiY2JiYTAzNWJlZjZiIGxlZ2FjeS10cnVuaworMzQzNzIgMTQ0YmM4ZmQ5MTFlZTk0Y2QwMDllZmY4ZjJiNzEwNGQ5YTUxMmQxMSBsZWdhY3ktdHJ1bmsKKzM0MzczIGYwMGEzMmVjNDEzOTMwMDRjNTNkZTk1YzRkYjQ4ZjllYmE5ZjlkMTMgcmVsZWFzZTIzLW1haW50CiszNDM3NCBhY2VmNGUxNmNlYWU0ODMwYTZiN2FkMDRhMjhiNmE0ODFmNWU5OTllIGxlZ2FjeS10cnVuaworMzQzNzUgMzY5OTJjYTkxOGEzNDkzM2M3MTM4YjBlYWFhYzhiMGZlOTdiMjkxMSBsZWdhY3ktdHJ1bmsKKzM0Mzc2IGJiM2NlNmFlZTY5M2VjYzRlYmI0MTUyYWJjMWI4ODMwNjcyYjQ2N2EgbGVnYWN5LXRydW5rCiszNDM3NyA2ZWYyNDUxMzYwMzg5YWY5Nzc3MGY4ZTdlMGQzNjdlMmRlZTM4ZmFlIHJlbGVhc2UyMy1tYWludAorMzQzNzggNWMwMTc0ZTJlMTRmNDUxZjVmODYwNzg5ZjEzNWQ5OTkzZGIxYzdkZSBsZWdhY3ktdHJ1bmsKKzM0Mzc5IDI5ODg4OGUzOTVjZTBjMDVmMzc0ZmJjYzRjMTAyYThlMjA1NWViNDIgbGVnYWN5LXRydW5rCiszNDM4MCA0Nzc2YTA1ZTYzMGI1ZmMzOGYwMWU4ZDk4M2MzYjdmM2Q0ODc0NDRkIHJlbGVhc2UyMy1tYWludAorMzQzODEgNThmZTY0ZjdmYjE5M2FlYjhmMjAwYTMxOTY0MWMzZjkxOTE1N2QzNyBsZWdhY3ktdHJ1bmsKKzM0MzgyIDQwMDY3NDk1ODAyNWU5ZTQ4MTY0ODBiZmJjNDYyZDcwOWVhY2QwOGIgbGVnYWN5LXRydW5rCiszNDM4MyAwNjJjMjU1YjU3YThlMjJlOTczNjI1ZjkxZGQ4NzMwNDNlMjk1ZjlhIGxlZ2FjeS10cnVuaworMzQzODQgZDVjMzIzMWJhNWJhYTQxNjMyMDM5YzhjZmE3NDlkOTJiMTQyMjgxNyBsZWdhY3ktdHJ1bmsKKzM0Mzg1IDdmNjEzNGY4YmQwNmZkM2ZjNjgyOGNkZWRlMmVkOTdhYzk0MjdlMzUgbGVnYWN5LXRydW5rCiszNDM4NiBhZGM2MDAxNTY3MGFlOGMyM2RiM2UzZTE4ZTk0MGUzOTU3NTM1MTUxIGxlZ2FjeS10cnVuaworMzQzODcgNDFiN2QxZjA1MDBmMGU0YzE1MDRlMmQ2Zjk5ZTEzMjk3YjAyYzZmNCBsZWdhY3ktdHJ1bmsKKzM0Mzg4IDYwNDgzMGYxY2FhNjU1MjZjYTg5ZDE4YWI4MGNlMmJkOWRiNjQyNTcgcmVsZWFzZTIzLW1haW50CiszNDM4OSBhNzQyODIxZDllNzVkYzdhZWFhZDhmMDY3ZGUzODNmNjc5Y2FmYWRkIGxlZ2FjeS10cnVuaworMzQzOTAgZmNlODBhZDgzNDc3MDlmMWMxYTY3ZGQxYjRhNmNjNjVlM2E5MzBiNyBsZWdhY3ktdHJ1bmsKKzM0MzkxIGZkZjBhOTdiYWI2MDBkNTk1ZGIwYzA5MjYxMDY1YTYwOTk2NDdhZDcgbGVnYWN5LXRydW5rCiszNDM5MiBjZjAyYzE3ZDdmNDQ5YmM1ZjJhOGE0YmY4NTQ5MGQ1OTc2MzllYTY1IGxlZ2FjeS10cnVuaworMzQzOTMgODM3ZWExODYzN2JjMTkwZmU1OTc4NmY3MjY5M2ViZTBlODE3ZDZlZiBsZWdhY3ktdHJ1bmsKKzM0Mzk0IDRhMGM4OWU1ZTA1Njc3YmU3OGQ0M2Y3M2ExZmQ4ODlhOWI4ZWNjZTUgbGVnYWN5LXRydW5rCiszNDM5NSBjMjI2Zjg0ZDdhNjZlMmFhODE2NjVlMzBlYzZkYzAyZjk5MWJjMzJmIGxlZ2FjeS10cnVuaworMzQzOTYgOTY5MWNjNjQ0MTYwMDdiZGRkYzE3N2JkMWJlYTY4MjRkN2Q3MGE2NSBsZWdhY3ktdHJ1bmsKKzM0Mzk3IDQ3M2Y0ZTI5NTlhODA0M2Q5YmNiZDc0NDNlY2JjMzE0YzE5NjViZWEgbGVnYWN5LXRydW5rCiszNDM5OCAzYjU5ZmE1ZDI1YjEzYjVjNjVlMDk2MDc5NDlhYzA2YWY5MDg2ZGQ2IGxlZ2FjeS10cnVuaworMzQzOTkgMGRkZWNhZjhiNzVjYmVjYTAwNjYwMDRkZjFjM2RjMzFlNTFhYmRmMiBsZWdhY3ktdHJ1bmsKKzM0NDAwIDZjMzg0MDZjM2ZhZDg0MTI4ZTVmYmI3NTc1MmE4ZWM4N2E0NWNiMWEgcmVsZWFzZTIzLW1haW50CiszNDQwMSAwMDYwMTU3ODQ0ZDg3YmUyYWNlN2U5NTMyNmQ3NTIwMDdhMGEyOWJlIGxlZ2FjeS10cnVuaworMzQ0MDIgOGVhODMyNjAzZTRmZWIxN2UxOWU4MzgwNWQ3N2FjYWE0NDQ4OTQ3YyByZWxlYXNlMjMtbWFpbnQKKzM0NDAzIGI0OTFiYmYxN2RkZThhMTg0NTZlMzRjYzJiN2ZjNGZmMDI5MjRmMTYgbGVnYWN5LXRydW5rCiszNDQwNCA1MDFhNzkzNDY3ODRhZTYyNmE4YjRmMGNkMDQ5OGRlYTA3Y2ExNThhIHJlbGVhc2UyMy1tYWludAorMzQ0MDUgZmQwNTJjNGY4ODRmNDQzMGMyODM4MDIyZWE1YmNkODk5NWFiMWU1MiBsZWdhY3ktdHJ1bmsKKzM0NDA2IDA0ZjQxOGFmNjgwZDA3ZjRiNDBlNDk2MWFmNDFiMGQ4ZmEzMDZjY2MgcmVsZWFzZTIzLW1haW50CiszNDQwNyBhM2U4NjY2NWYyNDVhYzVkN2U1ZWJmYjcyMmJkZWJmYmRjMTVjOGY2IGxlZ2FjeS10cnVuaworMzQ0MDggNDM4OGJiYWQwYmMzN2FlOTQ4YzIzYTBiYTRlMzFlMjQ3YTY2MjdkMyBsZWdhY3ktdHJ1bmsKKzM0NDA5IDVhMWQzYmM2Y2MxODAyZTAwODM1NTc2YWYwN2Q1NzEyNTBkNWFiZDUgbGVnYWN5LXRydW5rCiszNDQxMCAyY2I0ZjMyMTc5OGNkNmYwNDE4YzQxMTllMTI1OWY3YTY0NjBkZDc5IHJlbGVhc2UyMy1tYWludAorMzQ0MTEgMzQyOWIxZDM4YjQwMGM2MGUwYjg1MGYwMThkNmQxOTM0ZDI0NGEzNiByZWxlYXNlMjMtbWFpbnQKKzM0NDEyIGYxYzMwYmZiMGNjMTI2MTdlMmVlMGEzNDFiOWZiNzQ1ZTllYWY5NjYgYXN0LWJyYW5jaAorMzQ0MTMgNzk4OTdlZDUzZjAzNmYxNzk1MTViNTUzNDBkNGE1NzM2OGE5MzM3ZCBhc3QtYnJhbmNoCiszNDQxNCAxMzQ1YzIzYTA1OTE2MDUwM2JiNTNiYjhmYTk0NjVjNzRkY2VjNmEyIGxlZ2FjeS10cnVuaworMzQ0MTUgM2UzZmQ1NmNlNTk1OGNkNDdlZTYwZTY3YTgyZTIwNjc5ZWZkMzMxNiBsZWdhY3ktdHJ1bmsKKzM0NDE2IGVmZWQ0ODlkZjU0NTlhODAxYjBjYjk5MzUzNGU0ODg3YmRhODBkYTYgbGVnYWN5LXRydW5rCiszNDQxNyA1MjAxZjY2YzkyZWYzY2RlZWIyYTM3OGMzYzUyZGJjZjQyOGUzYTdhIHJlbGVhc2UyMy1tYWludAorMzQ0MTggYzNkZmRiNjBiOTg4ZjgzODljOTZiYTNlMmYwYmIwOTEzMzU2NTgxZiBsZWdhY3ktdHJ1bmsKKzM0NDE5IGM4Yjg4MjFlODcyZDFjOGU5MTc2OThkN2U4ZTMyZGM4OGI4ZTZkOTggcmVsZWFzZTIzLW1haW50CiszNDQyMCA4MjgyYWExZjkzNDM3YzY2NmMzMGQxYzQ2ZmJlOGRmMzQ0NmZmMjYxIGxlZ2FjeS10cnVuaworMzQ0MjEgMDRiY2ZkY2YyOTBhMTUwOWNjNzVjODM2Yjg5YmJiMDZhMThlNjliYiByZWxlYXNlMjMtbWFpbnQKKzM0NDIyIDNmZjAzNDQ2ZjM2MmFlZWZjOWZhOTA3MGU2Yzg4ODAxZDI1YWJkNGIgbGVnYWN5LXRydW5rCiszNDQyMyBiZTBjYTI2YWQ1NzQwZWM2NDM3YTcwNjNiNzUwZDZhZWRjOTdkNzIwIHJlbGVhc2UyMy1tYWludAorMzQ0MjQgOWUyMWU1NmJmNWYzY2UxOGZjMWZkNmM3MTgxYmIzNTYzMGQ3M2MxMyBsZWdhY3ktdHJ1bmsKKzM0NDI1IDNhOTkyOTRjOGU1YjVlMzhkMWExNzQwMTlmZTYwYzFmNTY0MGUxYTYgbGVnYWN5LXRydW5rCiszNDQyNiAxZDVkNzI0MzZmMmE3YzQyYmEzODhjYTY4MjYwNzg3NWZlOWUwOTFlIGxlZ2FjeS10cnVuaworMzQ0MjcgYTIzNGRhZjE5ODEwYWIzYTg3OWM4NmYzNmJkY2U4MGI4YjQ0MjQyZCByZWxlYXNlMjMtbWFpbnQKKzM0NDI4IDY4NzdmNzk3Y2YzNjE1MWExYjQzMmViYzAxMGMzNDY2NGNiNmE0NGMgcmVsZWFzZTIzLW1haW50CiszNDQyOSBhNjYzNDMwOWQ3MGVlNmViYWM5OTM2NDBlOTY5YjRmMzUwNWI4NjMwIGxlZ2FjeS10cnVuaworMzQ0MzAgOWM3ZTAyMjdjODM1NjhmM2Q4MGM1NDMyY2Q2NjMwY2Q2YmQ0YzQxNiBsZWdhY3ktdHJ1bmsKKzM0NDMxIGIxMWQ5NzNhYmVjYWNiYmRjMGNkODUzNzQ5NjJiN2U3YzhkOGIzNDYgcmVsZWFzZTIzLW1haW50CiszNDQzMiBjMTJkNGYxODUzYmMwMDJiM2Q2MzA3OTIyYjM3YmYwOWQxNTFjYTk1IGxlZ2FjeS10cnVuaworMzQ0MzMgMDdhMGEwNzI2NjQ5OTQ2NzEwZTlhYzVkY2QxZmZiYTMxYWYxYWFmZCBsZWdhY3ktdHJ1bmsKKzM0NDM0IDEyZTU0OTI5NWY3ZjVkZmZjMjQxOWM1ODJiODVlMTdlN2Q5ZWY2NWIgcmVsZWFzZTIzLW1haW50CiszNDQzNSBhMjhhODMwMDMxYTlhYjMyMmVmOTVhMWNiYzQ5NDBmMTEzNjQ4NGI0IGxlZ2FjeS10cnVuaworMzQ0MzYgN2RmZGY5ZThkOTVkMzcwMTEwODc3YTZmN2NmYThiM2Q3OTc0M2Q1YiBsZWdhY3ktdHJ1bmsKKzM0NDM3IDJiYzc5YjNhOTUzZGZkODdlYTQ4YTQwODhhZDE3ZjM1MmRkYTQxNzYgbGVnYWN5LXRydW5rCiszNDQzOCBmODBkODM3Nzg0MGYyZWQ1MTMwZTIyOTlkNjZjYjBmNjJmNTZmZWMyIGxlZ2FjeS10cnVuaworMzQ0MzkgNjUxZmM4ZDk4ZDk5YjUwZjdkOWFhZWQ3YjVjYTdiNmNjZWEzYjVjYSBsZWdhY3ktdHJ1bmsKKzM0NDQwIDZmMTVlNzNiNTlmMmUzYTAzZjMxNzg3NDUzNTVjZjdlZDI2OGY1OTQgcmVsZWFzZTIzLW1haW50CiszNDQ0MSA5NWRmNjAwYWI5YmRlYjUxYzEwMTg5YjNhMWZhYTdhMTgwYTU5OGQwIGxlZ2FjeS10cnVuaworMzQ0NDIgZTg3ZDZkNzZlMzY1NzVjMTI5NTBkN2JkN2E2MmRjYjcwOGQ2Yjg3NSByZWxlYXNlMjMtbWFpbnQKKzM0NDQzIDEwMjRjNWJmN2ZlZTkxMjk0MTU5MTkyY2NlM2MxYTdlZjJhOTJjYjIgcmVsZWFzZTIzLW1haW50CiszNDQ0NCBhZDU4MjI5NzcxNTJmZTczNjIwNDVkYjc2OTQzOWQwODNkODQzZGJhIGxlZ2FjeS10cnVuaworMzQ0NDUgOTc3ZWZhYTg2MzRlNjFmNGI5ZTg2MjUxYjk3M2MxODQ4NmQyYmM4YyBsZWdhY3ktdHJ1bmsKKzM0NDQ2IGIxMDhjNDQyYTM3NDQxNTRiMTdkZThjNzYyN2NhZTc5YzI2ZjYyYmQgbGVnYWN5LXRydW5rCiszNDQ0NyAwZWE0MTA0OGIyZDQ3NTI1ODg4MDJlNzk4YTQ2NzBhMWRjODBlMmY4IGxlZ2FjeS10cnVuaworMzQ0NDggZjBkYTBjYWQ1Y2Q1MWY0N2ZmYTNjZmE1MjY2ZjM3M2E4Mzk0OTZmZSBsZWdhY3ktdHJ1bmsKKzM0NDQ5IDQ0Zjk4MDAyMTgxZmIyOTA2OTMyZjg3YmFjZWYxMzVmNGYxODczNDIgbGVnYWN5LXRydW5rCiszNDQ1MCA5NDU1ZGVmZjFjN2MwZWY5ZTAyZWUzNGM3OGU1ZDNiNWUxYzdjYWQ2IGxlZ2FjeS10cnVuaworMzQ0NTEgOTE2Zjc4MmVkNmQ1MGM2YmY5MDI4ZWY4NWUyMzk3Nzk2OWRjNTEwOSByZWxlYXNlMjMtbWFpbnQKKzM0NDUyIDQyNDQ1MTcyOTI4ZjFmYWY1MWFjYTE1YzhhNDQ1ZmU2YzNmZWMyMTUgbGVnYWN5LXRydW5rCiszNDQ1MyAwZTgwNzdjYjNkZDVhMTY3YmY3Mjg1YWYzMjUyZjNhMjkxYzMxZjFlIHJlbGVhc2UyMy1tYWludAorMzQ0NTQgMzhiMGI3ZDQxOTM2YjE3ZmZmMmYwOTRhMDQ1ZTU3ZGQzZTA5YWE4ZSBsZWdhY3ktdHJ1bmsKKzM0NDU1IDkwM2IzMWQ3NzIxYTFkNTZjMDBjNzM5MGMzMTQ3YTE3MjUxNjQxNTQgbGVnYWN5LXRydW5rCiszNDQ1NiAzOGI5NGMwNWI4NWI5MmU3NmMxOWNkNmYxMTYxM2VlNDBlNTkyZTYwIGxlZ2FjeS10cnVuaworMzQ0NTcgNDk0ZDVjZjBiYmUzZTIxMTM2NDIzNTJlM2JkNjViYTlkMjQ1ZTE1ZSBsZWdhY3ktdHJ1bmsKKzM0NDU4IGJjOGYyMmM1MzQyY2EzN2NlNGYyZmRiZjE4OTEzYzA2Mzg1OTEzMzAgbGVnYWN5LXRydW5rCiszNDQ1OSBhODEwYmFiODVmYmM0ZDBhNGFlZGJlMjRjYjYzODYyMDUyMTRlNTU1IGxlZ2FjeS10cnVuaworMzQ0NjAgZjg3NDI0M2VlMzliYTI2ZTcxYzgzMWUyZjVlZDhhZDI5YzE0MDg1MiByZWxlYXNlMjMtbWFpbnQKKzM0NDYxIDAwMTIwOWI4MThhNjdjOTE5MWQwYzg1NjUyMDUwMTI2N2Y3MmMwZDcgbGVnYWN5LXRydW5rCiszNDQ2MiBkYmU3ODgyMjNjZTk2OGVmNWVjOTZmZTNhNjgwMjJkZTlkZDZiNTg5IHJlbGVhc2UyMy1tYWludAorMzQ0NjMgMGM2MmMxYWM5Njg0ZGIzMTc4NTc4YTUzZWU5NDdhZTQ1NmM2MjQ4MyByZWxlYXNlMjMtbWFpbnQKKzM0NDY0IDc3ZDUzMDhiZWRhZTExNDRiNDljN2I5ZWJlZmUwYzdjYTNkZThhNDQgcmVsZWFzZTIzLW1haW50CiszNDQ2NSA2MjQ4ZGQ1ZDE5MmE4MDVkY2I5NjRiNTkyZjM4MDc0MDlkNzdkMWY1IHJlbGVhc2UyMy1tYWludAorMzQ0NjYgZmFlMzQzNTc2MWFmOWY1ODlkZWI5NDgwZTYxNjg5Y2JlOTg3NzJjOSByZWxlYXNlMjMtbWFpbnQKKzM0NDY3IDFkOTJlY2RmMmJiMTRjZDkxNGNjNjBjZjY4Y2FmYjNkZDNjOWI0NjIgbGVnYWN5LXRydW5rCiszNDQ2OCA2ZmRkZTk2YTcyMjI3YTJjNmU1ODA4ZGE3NmQxNDFhNjZkYjk1MTFlIHJlbGVhc2UyMy1tYWludAorMzQ0NjkgZDc3MGRjMjY0MjEyZGU3Y2U1NmI5YTFiYjBiMjJlMGExMWJiZTM4MiBsZWdhY3ktdHJ1bmsKKzM0NDcwIDY5MTRiNWUyMDc2ZjIyNGI3N2RhNWMyYzU5ZjUyNzU2ZGViZGRhZjcgbGVnYWN5LXRydW5rCiszNDQ3MSA4YjJlYWRmYjhmMGNkZGMzMmJkZGE5OTY4N2JlNDY2ZmZmMDBmMmM3IGxlZ2FjeS10cnVuaworMzQ0NzIgNGQ3OWU4NDkwYzc2ZTZlNjk0OGNiOWY3OTQ4YjA2ZTAwMjQ5ZmMyZSBsZWdhY3ktdHJ1bmsKKzM0NDczIGI2OTAyYzBhNzU3ODJlZGJjZTk3NWVkYTIyZjFhMGU5ODhlYjgwM2YgbGVnYWN5LXRydW5rCiszNDQ3NCBlMGVjNjQ0ZjViMzZjNDVlM2E1Y2ZlOWVkMGM5M2E0MWM3ZjQ0YzQ5IGxlZ2FjeS10cnVuaworMzQ0NzUgMjZiYzAxOTQ0YWU4ZWM5ZTQ0MWRlMzNiMjk1YTBmZjg3Yjc1ZjEyZCByZWxlYXNlMjMtbWFpbnQKKzM0NDc2IGY3NzJkMzQwM2NhN2QyNDg0MmYzMjllMGQ0M2JmNGJhNzA2ZmFkNDkgbGVnYWN5LXRydW5rCiszNDQ3NyBhMDU0NWUzMmRhZTc4ODQxM2FhN2RhZmExYWZlODcwNzFiODc3OGE5IHJlbGVhc2UyMy1tYWludAorMzQ0NzggMGZlMzA3MTBkYTgwNjBiMDhmZjYzOWEwNWU0ZjQ5NTE3ODNmNTllNyBsZWdhY3ktdHJ1bmsKKzM0NDc5IDhmYmIwNjIzYjg1NzhkOTY5YmIzODlmN2E2NWY4YzBhYzg0NjZmNjIgbGVnYWN5LXRydW5rCiszNDQ4MCA0OGI5Y2M1MTc0MmI5YmYzZTk3YzQyYjM5ZjY5OTA5MzBjZmQ4MzZmIGxlZ2FjeS10cnVuaworMzQ0ODEgYjk0OGU3NzVhNzllZTBiYzQyNWI2ZmU2NzUxODQ2YjE3MjVmNjIxOCBsZWdhY3ktdHJ1bmsKKzM0NDgyIGZlM2Y1NTkyMzA1ZGNmNGY2MWY0MzBjYTJkYTkyZjBhNzllYmJmMTEgbGVnYWN5LXRydW5rCiszNDQ4MyA5ODJlM2U0MGJmMWU1ODY0OTQ2OTQ3ZmVkNjJkODQ2OWMyMWE0N2YwIHJlbGVhc2UyMy1tYWludAorMzQ0ODQgNzkwZWQ1YzU5OWMzZjQyZmFkYmY0YTIwMTFmMzgxY2U1MDBkY2QyMiBsZWdhY3ktdHJ1bmsKKzM0NDg1IDI3OTczNjk5MGExNGJlMzRlN2VmNzFhNzM0OTBmM2Y2YjM4M2QwZDggbGVnYWN5LXRydW5rCiszNDQ4NiAyYmM5NWQ0OWZjN2E2MGY5OWZmYjJjOWRhYmFjYmMwMmNiOWNhZDBjIHJlbGVhc2UyMy1tYWludAorMzQ0ODcgZTA4NDFiNWNmMmZkMWMxYmU4ZDAyMGI2YjVhNDYxYzRjMmIxZGIwZCBsZWdhY3ktdHJ1bmsKKzM0NDg4IGE2ODc5ZDE3MzNkN2JjMmQzNDcyYjg5MGE4NGMyMjU2NGRhYWJmMzQgbGVnYWN5LXRydW5rCiszNDQ4OSA4OTdhZmNhY2JhMDA3MmQ3YWExNzc5YzQzNTExZTQ1ZTJiYjFjMmUxIGxlZ2FjeS10cnVuaworMzQ0OTAgOTVmZDU1NTQ1Y2FjMjY5ODQxNmU2ZjFmYzFjNGRmMzBmZWJiYjc3YiBsZWdhY3ktdHJ1bmsKKzM0NDkxIDJkOTg3MTBmMjcyZWNlNmJkMDZjNmZiMWMxMThkOTQ1ZGY4YmM1NTkgbGVnYWN5LXRydW5rCiszNDQ5MiAwNjI4NTdmNjkyN2Y3OTNiMWYyNGM4NjQ3YTlmNTgzNWM3NmNkODU2IHJlbGVhc2UyMy1tYWludAorMzQ0OTMgZGY5ZDhmN2U0YzljMzUzMDA4MDcyMDQ3ZDFhNTcyMDhkMWZkYjk1OSBsZWdhY3ktdHJ1bmsKKzM0NDk0IDY1YmJmZGEyNDZjOTMwOGM1ZmE0MTI3NWMyMzY4MTYyOGRhZGMzYzcgcmVsZWFzZTIzLW1haW50CiszNDQ5NSAzZTNkNTM5NjNjODg4MWIwN2M5Mjk3NmY5YmE1ZTQ2ZTdhYmIyMzE4IGxlZ2FjeS10cnVuaworMzQ0OTYgZWVlMDdmMzBlZjA2OGMxMGM5M2JhMzBhYzMxY2YxMWI3OGU2YWI3OSBsZWdhY3ktdHJ1bmsKKzM0NDk3IGYyZTYxZDk5MDk1ZTczMTZmNGYzYjIxMTljZTBmOGIxMWM0YmUyM2YgcmVsZWFzZTIzLW1haW50CiszNDQ5OCA3NDc0N2Y2MmYyODZhODYxYmExZWM1ZDViN2Y3NDk3ZTRmOTg4YTdjIGxlZ2FjeS10cnVuaworMzQ0OTkgZjUxZGM5MDI2ZTRkZjliZWVjZWIwNThlZTViOTg4NzFjNWJkNTgyNSBsZWdhY3ktdHJ1bmsKKzM0NTAwIDQ4MzNhOWNkMzc3ZWYxZmFkMWJhNjA3NjY4NmVlOGQ0NmQ3MDUwYzIgcmVsZWFzZTIzLW1haW50CiszNDUwMSAzNzI4NWEwMzQ2YzE0Y2VhYzI5YTY1MWNjMDU3NTllMzZhNzk1ZTVjIGxlZ2FjeS10cnVuaworMzQ1MDIgZDk5NmUyZGNiZDNhN2U1N2ZlYTdhYjUyZDU1MmE5MDNiYTI0MDNmYyBsZWdhY3ktdHJ1bmsKKzM0NTAzIDIyNWQ4NDhhNWY5NjhjODhkOTZjZjc3NWE4MTBkY2NkOWYwM2VkNGMgbGVnYWN5LXRydW5rCiszNDUwNCBlYTA1ODUwNDEwNGNkNzI2ZDA4YzBlN2E4YWJmZWMxZTgzMTFmOWVlIGxlZ2FjeS10cnVuaworMzQ1MDUgYzJhZTkxYTg3YTQ4YWM2NTk5M2FhNDVkYzk2MmVhYWIxOGMwMTA1ZiBsZWdhY3ktdHJ1bmsKKzM0NTA2IDg0ZmYxM2JjYzc1MDJmMGIwNzFmODZhNWFkYWUyMGFlOGU2ZWY2MzMgbGVnYWN5LXRydW5rCiszNDUwNyBhNjAwOGI3MGM5MzkzNGI3OGU1NzU0ZmNjMmI2YmFkNGM0OTJjNzJmIHJlbGVhc2UyMy1tYWludAorMzQ1MDggNGM5YTY3Y2YyODMzYTlmZWYxNzFkMjc0ZGU3YTE1NmE2ZmU0NzgzMiBsZWdhY3ktdHJ1bmsKKzM0NTA5IDdiYmVlOTk0MjJhMDJlYzc3Zjc1OWIxYzUxNjVlMWUxMGI5MTA1NDggcmVsZWFzZTIzLW1haW50CiszNDUxMCBhYzk4NWQ3NzY2NTAxNzEwOTBlZmM2NjZhOGRlNzJlYzdmMjBjMjU5IGxlZ2FjeS10cnVuaworMzQ1MTEgNDEzOWI0NWFjZmVkMDE3Y2U3NTYxZTdkNjYzNWFiOTljYTM3YzU3ZCBsZWdhY3ktdHJ1bmsKKzM0NTEyIDlkYTUzNzE2N2I3NDk3YmZmM2Y1ZTJkZTA2Mzk3NzI0MjgxZjE3NzMgcmVsZWFzZTIzLW1haW50CiszNDUxMyA4ZWI4OTg4MTRmYjkxNzQ0OWNlZGNiNDc4MTUyM2QxYzE4NDYyMjUwIGxlZ2FjeS10cnVuaworMzQ1MTQgN2U5MzE0OTI2ZGJlMmNjNWI1ODZmNTUyY2ZiMTljMmRjNGY0MDIwNCBsZWdhY3ktdHJ1bmsKKzM0NTE1IDdlZGU3NzJmMDNkM2JjMWI3NDY5NGNhM2U5NzQ2ZGQxYjBiMDI1NzYgbGVnYWN5LXRydW5rCiszNDUxNiAwMzRhZTQ5ZjliN2FlYWY5MTMwZTU3M2U3NmM2Mzc1NzkyMWMwYzRlIHJlbGVhc2UyMy1tYWludAorMzQ1MTcgYWY0NDNkODIwYTUwNjc3MmM3YTkwYzJjYTk0N2M5YzVmNTU1ZjVhNiBsZWdhY3ktdHJ1bmsKKzM0NTE4IGM0MmM0MDAzNDUzNmNjOWMyNmYxMjA1Y2ZlZDQ4ZDY3OTk4NjUzM2EgbGVnYWN5LXRydW5rCiszNDUxOSBiNGI5NDVjNWRhNGQ3NDVhM2U1MTBiYTBiZGZiMGI4YjQ3ODU5YzE4IGxlZ2FjeS10cnVuaworMzQ1MjAgYWVjYmJhMDI5NGJiNTA2Mzc4ZWI0YmU4MGI4ODA0YTFkYWIxZmZmOCBsZWdhY3ktdHJ1bmsKKzM0NTIxIGFjOGM3NzE2YTg1ZGFmYmYyYjY3OGNlZjM2MzgwYmU2MGY4ZGJkNDQgbGVnYWN5LXRydW5rCiszNDUyMiA2YTg3ZWQ2Mzk2N2MyNTlmODQwN2RlYzIwY2JmODExZjlmZThmMWVmIGxlZ2FjeS10cnVuaworMzQ1MjMgNjMxMTE4YjlhZWM2MmFkYzQ2OTZmYzQ3ZWE4ODg2Nzk1ZGY2MmYwMSBsZWdhY3ktdHJ1bmsKKzM0NTI0IDdiYTQzZWZkMGNlYjMyYTQ5ODY3ZWQ2NjhlOGY1ODhkYmE5OWQxNGQgcmVsZWFzZTIzLW1haW50CiszNDUyNSA4MzJmM2E5ODkwNThhNmZjNGY4ODg0N2ViNDQ5NDkwMTYwODFiMmE5IGxlZ2FjeS10cnVuaworMzQ1MjYgOGRiNjRhYmY4NTZmOGM0NGE3NWViNTk5MWE3ZWJlZGQwY2U2ZDZmOSByZWxlYXNlMjMtbWFpbnQKKzM0NTI3IDJjYmEwZGU3MGRmNjJiZWI4NWM2ODcwNmEzMmUzOThlYTk4ZjZmNTIgbGVnYWN5LXRydW5rCiszNDUyOCAxZmJmZTlkYzBiYThiOTJhYzFjZWM4ZjkwYTkyZWZhMWViMmNiOGM2IGxlZ2FjeS10cnVuaworMzQ1MjkgNzg2M2ViY2ZmMTIxZjE1NzYzODljYmFhODg0MDYyNDVhY2UxNzc3NSBsZWdhY3ktdHJ1bmsKKzM0NTMwIGEwZDI5Nzg1NjJkNWUxMmY5NTIzZTFhM2U3M2Y4MzQ2NzU4ZjIyMzggbGVnYWN5LXRydW5rCiszNDUzMSA1NjUyODQ5ZmJlMjk2MDIxMWU0NTMwNjk3YTI1MDBkZDY2YTJhMmExIHJlbGVhc2UyMi1tYWludAorMzQ1MzIgYzgwNDFiMGVlYjNjYjMyYjY1ODc4OWM3ZjgxYjg0MGQ1YjQ0OWJkOSByZWxlYXNlMjMtbWFpbnQKKzM0NTMzIDA3ZTdhMDIwNjFkODdjNTc0ZTQwMTY5NDhlYzBmMGUxNDYwZGI3ZWIgbGVnYWN5LXRydW5rCiszNDUzNCAxNTEwMjQ0YmViNWUwZTY4M2VkZDFkMzk0Zjk5ZjQ2ZWZmOTA3ZTM2IGxlZ2FjeS10cnVuaworMzQ1MzUgNDRlOWFiZDA3ZWIzMWUyNzM2Y2YwOTgwNWYzMTczNWQ1NmRjNTU3NyByZWxlYXNlMjMtbWFpbnQKKzM0NTM2IDlkOGFjZGI1OGY5YzM4ODkyZjAxNzZmZDUyYzllZGMyMGY4ZjRjNTggbGVnYWN5LXRydW5rCiszNDUzNyA1MjhjYzBmZGRhNDFjZDFmM2NiOTA0NTI0NWVmYWIwYmIxMGZhNzU1IHJlbGVhc2UyMy1tYWludAorMzQ1MzggZWMxYTRhMjlkMjVkYTQ1ODhjMTMxMGJmNDIxYTU3ZjYyMzQ2MWI3OCBsZWdhY3ktdHJ1bmsKKzM0NTM5IDhjZDY5MWI3Mzg0NTI3MmNkYTIxMGJmOGFlNmQyMmNkZjZlNWU5YTcgbGVnYWN5LXRydW5rCiszNDU0MCA5OGM4NTc2YjhkYTdkMjQwMDJkODA3NjAwMDVlZmMzMTZlYjAzZGY5IGxlZ2FjeS10cnVuaworMzQ1NDEgNjQyMmEzOTUwMDQwMWJmNzdkOTk4MGUxZDkyYTBjNzAyYTJiMDgzZCByZWxlYXNlMjItbWFpbnQKKzM0NTQyIGQxNTMzY2E3OGQ4Y2NhODVjMWNlZjhmYzhhNzg1MGNlNmE4ZWM3N2YgcmVsZWFzZTIzLW1haW50CiszNDU0MyBmYWM4YzYzYzc4MzgxYWI2ZjA0ZGFmNzNmNmIwZjM3ZmE1YmRiNmFjIGxlZ2FjeS10cnVuaworMzQ1NDQgYjVmNjRiZTViMjFmZGNlZTdkNmU4ODg4YTZiOGE0NjM2NDBmYzRiNiByZWxlYXNlMjMtbWFpbnQKKzM0NTQ1IGU1OWFiNzA4YmJiMGNhOGJjZmI3ZGFkOTQ2Y2U2NzEyN2ZhYThiMzAgbGVnYWN5LXRydW5rCiszNDU0NiA5ODMzYWE1YmRmMzg3YzgzY2JhZTE3NDIyOWIwOGRhYTA3MjIyMmZmIGxlZ2FjeS10cnVuaworMzQ1NDcgY2JiZTNmOGJkZWY2ZjI4M2FlOGIwMzg0MDBmNDgwMWJlYzY1NzY0YSByZWxlYXNlMjMtbWFpbnQKKzM0NTQ4IDgyN2QwMWRmNjFhNzE2YThjMzNkMTBlMzExMTdkMjk3YjY1MzAxMDMgcmVsZWFzZTIzLW1haW50CiszNDU0OSA4OWRjMDY5YWFkMmM3OTM3N2E3YzEwMGVlMTQ0YzRjMTQ3Zjc2ZjI2IHJlbGVhc2UyMy1tYWludAorMzQ1NTAgM2NkOTIwNmRmYjc5MjkwNjQ0NWY5ZDg0NDVhNzNkOGZmMDdlNTY4ZCByZWxlYXNlMjMtbWFpbnQKKzM0NTUxIGQ2YzA5YTlkNzI0MWQ2ZTYwNWRkZDAyM2EzNDhkNGU2ZWYzNDRkMDcgcmVsZWFzZTIzLW1haW50CiszNDU1MiA1NjIxNDNjMWM3YWVkYWRmNTg0MGIwMWFkZDIzMzQ4YTI1NDBiYzNiIGxlZ2FjeS10cnVuaworMzQ1NTMgNTIyYTNkN2UwYTk2MjI5ZGNhYWViMjRhMDdjMjIwMWJhYzJiYTU1YiBsZWdhY3ktdHJ1bmsKKzM0NTU0IGU2NzZjOTVlNDg0NDg3MGU1ZTVhNWU2OGY3OTg1ZDljYmY1Y2QwOTcgbGVnYWN5LXRydW5rCiszNDU1NSAxOWJiMWIyZmIyMzM4ZGYxZDA3NjliOWRhODY1OGE4MDk2ODE4NTEzIGxlZ2FjeS10cnVuaworMzQ1NTYgZmVlYzQ0ZjE5ZWNjNzhkY2I4OTIwYTFjNmY1MGJhODAwODM1OGI2YyBsZWdhY3ktdHJ1bmsKKzM0NTU3IGZlZjZmZGVjNTI5MjUyM2YwYzg4ZDkwMjdiYjk4ODc4ZDlhMGY1MGEgcmVsZWFzZTIzLW1haW50CiszNDU1OCBhOTk3NjE0YjM1ZGM5NzVjMzg1NmNlYjJiNGQ0NjMzNzI2NTc2ZTRkIHJlbGVhc2UyMy1tYWludAorMzQ1NTkgZmU5YTVhMmRkMmMxNTE0ZGU2MjNjZWZlMjI3MDg3M2M1ZGRjNDRkYSByZWxlYXNlMjMtbWFpbnQKKzM0NTYwIDA4YzAyYTI2NWRiZDBkZDlhMTUxMGUwMDYxOGUwNDNlMzY3YjMzZDYgcmVsZWFzZTIzLW1haW50CiszNDU2MSA0ZTU2ZmJhOThmMWU0NTA4YjZmZTI2YjYwMjQzOWRiZjE4YjdjZTIwIHJlbGVhc2UyMy1tYWludAorMzQ1NjIgNTdmNzQzZmEzMjA3ZTA5YTU2MzA4ZmU3YzY3NjJhMGJhYjg5Mzg0ZiByZWxlYXNlMjMtbWFpbnQKKzM0NTYzIDNiZTQzYWY5OTJhNmQ3MmI5YzZkY2ZjYWUxMWI4ZjU2ZGRlYmNkZDAgcmVsZWFzZTIzLW1haW50CiszNDU2NCBlNWQyMjFmOGQ0MTBiMzcxZGRjNjE4MzlkZDk1ZWI0YjQyYzBiZWUwIHJlbGVhc2UyMy1tYWludAorMzQ1NjUgOTMxYTU4ZjI3ZWJiMDg1ZmUzOWU5Mzc3Y2U4NDZiNWRkMWNiNjNiYyBsZWdhY3ktdHJ1bmsKKzM0NTY2IDI2MjgyM2ExMmNhNzUzMzI4MDVlM2Q5NDIwYzU5OTQ1YWQwY2NjYTQgbGVnYWN5LXRydW5rCiszNDU2NyBlZDA1OGJkYWQyYWRmNmUyZDczNjYyYjk4ZjU4MTg4NThhMjNhOGFlIGxlZ2FjeS10cnVuaworMzQ1NjggZGNhZTYyZDM1ODg0OTM0NzJmNTUxYzZlMmE5YTQ5OTFjYmE1ZDQ3MSByZWxlYXNlMjMtYnJhbmNoCiszNDU2OSAwODBkZjBlZGIwYTRiY2FjNDE3ODc4ODY1ODVjOWQ5NDk2ZTQxYmMzIHJlbGVhc2UyMy1tYWludAorMzQ1NzAgYWY3MzE4NDZmZjcyODI3YzMwNWE2OGUxMTVlMTA0NTAwNDllZTVlNCByZWxlYXNlMjMtbWFpbnQKKzM0NTcxIDhhNzVmOWJhOWJhYmIxMDBhOWMwMjZjNmNkZWQyNzE3OGIzYzcwMWIgbGVnYWN5LXRydW5rCiszNDU3MiA0ZTE5YTJmZjM3NmEwNWY5ZDQ0NWJmYjZiNGE2YjA2Y2I5YzVhYTA0IHJlbGVhc2UyMy1tYWludAorMzQ1NzMgYWRlOTdiNjA1MzUyNDVmNzc2ZWYyZWExNTljNDViZThiNjM1MDcyNiByZWxlYXNlMjMtbWFpbnQKKzM0NTc0IDcxMzVjN2NhOTg0MmIwZGNmMGFlMTIwMWQ4ZTFkYTJmNTRkNTI3NDAgcmVsZWFzZTIzLW1haW50CiszNDU3NSA3NzZhNzcxNTA2MjBjMjkzZWU4YmUzY2FkMGNlM2I3NTUzMzU1MGQ0IHJlbGVhc2UyMy1tYWludAorMzQ1NzYgYzMxZWFkYjY5Nzc5MTRlZTQ4OWZhNDA4ZjA3N2E2NDMzM2ExZWNlZiByZWxlYXNlMjMtbWFpbnQKKzM0NTc3IDlmNWRkMzAyYmQ5MTUzMzhmZTg2Njg5NTc3Yjk1OWUxYzJlNzJmMDggcmVsZWFzZTIzLW1haW50CiszNDU3OCA4MjBkMWQwNDNkM2FjY2Y0ZjYyYTEzOGU5MDM3ZmVkN2M1ODFmZmJiIHJlbGVhc2UyMy1tYWludAorMzQ1NzkgYzg5ZmQ3ZWFmODc1NDc2ODgyNTEwODhkY2JlYWMyNzFkMWJjZDg2NyBsZWdhY3ktdHJ1bmsKKzM0NTgwIGQ0NWY4OTgxZmRlYTkxZmM4ZTIyOWU3YTI4MDc0OTIxMjZmNDZkYmEgbGVnYWN5LXRydW5rCiszNDU4MSAwNzBjODllZGE4MGJkYjU0MzVjYzdlMjBkMDVmNWZjNWFlMWIwYTM0IHJlbGVhc2UyMy1tYWludAorMzQ1ODIgNjc2MDZmOWMyZDExM2RkZTE3NzNiODRlNjBhNWM1NDM4ZTNmODA0MiByZWxlYXNlMjMtbWFpbnQKKzM0NTgzIDQxYzRlMTQzZTZlNmUxOGU0MTMxYTFlZDg5NThhYzQ0ODFhNTNlNzEgbGVnYWN5LXRydW5rCiszNDU4NCBmZTVjZWE1MWEzZmZmZmYwMjljMjY1NmM4MmE2ZmQ0ZDdkYTkwNzRhIHJlbGVhc2UyMy1tYWludAorMzQ1ODUgMDRjYTRkMWY3NTFmMmE4YTAyNTJlYjE2YzkyNWUzZDZhNWZiMDc1NCBsZWdhY3ktdHJ1bmsKKzM0NTg2IGRhNTA1NmEzYjE1Mjg0MWNkMTY1OTYwODBkNGQ0NzBjNDNlODdlYjQgcmVsZWFzZTIzLW1haW50CiszNDU4NyAwYWNiOTVhZDE5ZGM4NjdmYmM1OWY1YmVjOTIyMGJlYzVjMDhlM2ZlIGxlZ2FjeS10cnVuaworMzQ1ODggZTQ2OGIyNDUxZDU0YjA1MTMzMjdlM2I0OWY2MTRjNmVjN2ZlZWIyOSBsZWdhY3ktdHJ1bmsKKzM0NTg5IDlkN2I3ZWUwNDQ3MGUxOWUwYWE2MGIyZjcwMzQ1N2Q3OWQwYTIwNGUgbGVnYWN5LXRydW5rCiszNDU5MCBlNzA5MWQ1NzU0YWVjMDE1NGViOGU5NDVhNDI1NDZiMGRiMDI2ODc3IHJlbGVhc2UyMy1tYWludAorMzQ1OTEgMWRiMGRlNGM4NDU0MzIzYmZiMDg3NTU2ZTBjYzM4MjFmZThmN2QyYSByZWxlYXNlMjItbWFpbnQKKzM0NTkyIDY4MmQxYjY3YzdiNTUyNDc4NzI1MTNhZjE5YzY3YjFlMmRjZDdlZDcgbGVnYWN5LXRydW5rCiszNDU5MyAyYWNkMjhiZDRkMGYxZmU2MTRlMzEwZjI2ZjdhYzQzOTEyOGY3Zjg5IGxlZ2FjeS10cnVuaworMzQ1OTQgZTJhOWE3ZmVmMThhMzNmODBkNGFlNzFjOTcxMGUxYTJlYzA4OTZiNiBsZWdhY3ktdHJ1bmsKKzM0NTk1IDNmYTk1MzhhYzQ5NjcyN2QwMjBmMGU5MzMwYjg5MDllMTdjOWQ5MTAgbGVnYWN5LXRydW5rCiszNDU5NiBmMDE2MTMyN2E5MDI2Nzg0MTBkOWY5MTBiMGUyNGFiMTYzZDVmZDkyIHJlbGVhc2UyMy1tYWludAorMzQ1OTcgNGVkNDBiM2Y4ODAyMzVlNzVjYWY5N2EwZTBhZjlkNjU4ZjljZTk3ZCBsZWdhY3ktdHJ1bmsKKzM0NTk4IGQzMzg5ODNkMDcxOTQ3ZDY5MTdjZTliZTQ3YWFmOWNhM2I0NzUzY2IgbGVnYWN5LXRydW5rCiszNDU5OSAyZTQ5Nzg0MGM0NTg4MGQ1ZDAyMjNmMWY0NjczNGNhN2FiNDJkZmYxIGxlZ2FjeS10cnVuaworMzQ2MDAgNzJkNzBkY2M0YWYyYzdmNzMyMDU1N2JhMDYxYjJlMWYwYTg5YTlkOSBsZWdhY3ktdHJ1bmsKKzM0NjAxIDJmMGU2MGQ0MjMzYTY2NWJlMmYwMWZhNTEwNGNiMGQxNGJlN2VmODUgbGVnYWN5LXRydW5rCiszNDYwMiBjYmQ5M2NmMzJlZmZlYWU5ZDc2M2Q0YTY5MmVlNWVlYWE1OWY4OGYwIGxlZ2FjeS10cnVuaworMzQ2MDMgZTYxNDA4M2FiMjBjOGYxZDJjYzM5OWExMTIyOTllNTJjNmQxNTM4NCBsZWdhY3ktdHJ1bmsKKzM0NjA0IGU0OGM2MWZhMmY5ODNlMWUwZDI2NmQyYThhMmUyY2E3YmI1MGI1ZjMgbGVnYWN5LXRydW5rCiszNDYwNSAzYWU4MjkyOGIxMTMxY2JiMTA1YWYzYWU4OTk5MDIzN2FjOTAzMmFiIGxlZ2FjeS10cnVuaworMzQ2MDYgN2RiNzc4Y2I3ZTA4YTQ0OGQzZWFmN2Y4MzQ0NmVjNjgwYjhkMTExZSBsZWdhY3ktdHJ1bmsKKzM0NjA3IGNlZWM2OWQyNDBmMDE5ZWJiNzdiMGFlZTIwZjgxNjA4N2VmOGZkMGIgbGVnYWN5LXRydW5rCiszNDYwOCAxOTk3YTE0ZjZiMDg4ZTFhNjUxZTFmZGI4YzNjYWM3ZjVmMWJmYzM2IGxlZ2FjeS10cnVuaworMzQ2MDkgODllY2ZhMjU0NTI4M2IxN2ZmMTk3MGFiYWFmZDU1ZjJlY2IyNDI5YSBsZWdhY3ktdHJ1bmsKKzM0NjEwIGYwOGE1ZTk1YzM3Y2YzZGI3MjZkOWJkZGE5YjBiYjY3MWU5NjFjMjQgbGVnYWN5LXRydW5rCiszNDYxMSAxZTY4NjNkZGQ4NGI5ZTgzZTdiM2ExNzU3MWNlYjRlNmVlOTljOTNlIGxlZ2FjeS10cnVuaworMzQ2MTIgNTQzNzEzOTE5NDk5ZTY2MTMxZDM0ZDk3NjhlMmZiZGRlNDE2MDFlMiBsZWdhY3ktdHJ1bmsKKzM0NjEzIDJlZDM2ODMzODUzYWFjYmI0ZWY5ZGFjYzQyMmU4YTM5N2U0ZDMxYTkgcmVsZWFzZTIzLW1haW50CiszNDYxNCBhMGE4ZjE1NDAxZGIwZmIxMzc0YzliMmJhMjJlYjc1YmRkODY2Y2Q1IGxlZ2FjeS10cnVuaworMzQ2MTUgYzVlNTIwOGNkYmI3MjBlMDM4MjUxM2ZmNmM3YjZmNWU3NDNhZWJkOCBsZWdhY3ktdHJ1bmsKKzM0NjE2IDM3Yzc3NjNmYTgzZGZhNjQzZjNlN2NjM2EzNzA0MzhiMjIxNGI2MjYgbGVnYWN5LXRydW5rCiszNDYxNyA5NjE3MGY3NWUzZTlmZWZkODJhMzVlZDUwZjU2NmI2MzZiYmI1ZDczIGxlZ2FjeS10cnVuaworMzQ2MTggMzA5NmZhYjJhMTljMDU0YjU5NGJjMmI1Njg5MzMwZDEyZTE5YTU1OCBsZWdhY3ktdHJ1bmsKKzM0NjE5IDg1ZjM4MzY1MThmZTVkMTY2OTdmZDFmM2Y4N2I5NDVmZTZiZTc3ODQgbGVnYWN5LXRydW5rCiszNDYyMCA2MDM3MDQwYTJjY2U0NzEyNGM1NTNkMTNhZmM5Y2RmNzFjMzViZjUwIHJlbGVhc2UyMy1tYWludAorMzQ2MjEgYjEzNjM1M2FkZGU2YTZjZmE1ZjgyNjZhYjBjNjRhNzk1YTc0NDdjOSBsZWdhY3ktdHJ1bmsKKzM0NjIyIDUxMGJkN2VlYTkyNWZlMTBmYzc5MmQ2ZmVkOWJiNWIxZTVlYmQ1MjEgbGVnYWN5LXRydW5rCiszNDYyMyBkMjYxODM5ZWNmODdjZjgzZTIwZTRmOTc2MzE3OWIwYjYxNjM0YTVhIGxlZ2FjeS10cnVuaworMzQ2MjQgMzlmYTdiOGZjYzA3N2FjYTcxNGYyODAzOGIyYmM3ZjU2YWEwNjRiNCBsZWdhY3ktdHJ1bmsKKzM0NjI1IDNkOWIzNmQ2YWI4OThiMmFhMDkxNWRhNTExZTJhZjNmMTAwM2YxYmMgbGVnYWN5LXRydW5rCiszNDYyNiBjZDc2MjRiMDI1YTBmZTgyZTJlMzZiZjJjN2M1NTVjN2ZmZTc3YWViIHJlbGVhc2UyMy1tYWludAorMzQ2MjcgZTNlYmQ3NDBkMWVmYjQ4NjhiZmZkMTgzYzc1M2E0MGM5NzIwZDIxZiByZWxlYXNlMjMtbWFpbnQKKzM0NjI4IGEyOWE1ODViMDNkOTYwZjMxMTRhOWI3ZTQ4MDJhMGYzZDllMmEzNDggbGVnYWN5LXRydW5rCiszNDYyOSA0MzIwY2NhNGVkODQzODM3NzIwOTg0YTljYjZhMWM5NWM0YjliOTdkIGxlZ2FjeS10cnVuaworMzQ2MzAgZDQzMmY4MmI5ODZmYmYxYjQ3ZDE4YjFiYjhmNTM1OTEwOGY2NDA3NiBsZWdhY3ktdHJ1bmsKKzM0NjMxIDU2N2ZhMDY0OWU4MzVlODFjYzRlYjY5Zjk4MzQ2Njk1ZWExOGJlYTMgcmVsZWFzZTIzLW1haW50CiszNDYzMiBmNjQ4YzdmMWU4Yjg1OThiMzAyMmE4MjgwNmU1MTA2YjUwYTAyYWQ1IGxlZ2FjeS10cnVuaworMzQ2MzMgODA4MTY0M2MzNzNmZmJhZTIxNTY4ZTA4YmY2N2M3ODVlZTJiMzM3MSBsZWdhY3ktdHJ1bmsKKzM0NjM0IDgxNzMzYzdhOTVjOGRkZTYxMWYwNzBkMTNiYzZjMjZmZDJkOWJmNDUgcmVsZWFzZTIzLW1haW50CiszNDYzNSAxMmMyMmQ2YjFlYzA2OGIwM2JjYTY3YjczZGJlZjJjMGQ1YWQyNDIzIGxlZ2FjeS10cnVuaworMzQ2MzYgOGFhOTIzN2Y2ZGQ2YWExMDhlNDliYzc4ZWI3ZDZmNTE5MjI5MjdjYiBsZWdhY3ktdHJ1bmsKKzM0NjM3IGExODE5OGY0OTRmNDQ3OGRkZTIxYjgzMzhlN2E5MWI2MTBmNTBjNTQgcmVsZWFzZTIzLW1haW50CiszNDYzOCAzMjEzYWFhODJjN2I3OTZiM2M5ZmIxYzMzNmFjMmViMjE0MTgxYWI5IHJlbGVhc2UyMy1tYWludAorMzQ2MzkgMDQ2OGY5ZGRjMDY5ZDZmZjBmM2ZhNzY5NjM1ZDMxNWU2ZTA0OGQ4OCBsZWdhY3ktdHJ1bmsKKzM0NjQwIGEwZWNhZTMzMzJhOGI2YjFiZDMxMDgxZWEyNTlhMDAzOGEwMmQzNjYgbGVnYWN5LXRydW5rCiszNDY0MSA3YTZiMWM5ZmI4OWU1NDBlZGNlNmM4NDJkYTBkOTNmMzY1MzdjOTgwIHJlbGVhc2UyMy1tYWludAorMzQ2NDIgODdjMDQyMmNkZTcwOGMzNjhlYTI2NjQ5MDY2MzE4N2NlYTQ0ZDMwNSByZWxlYXNlMjMtbWFpbnQKKzM0NjQzIDUyNjY4MjQ1NmE4ZDVhNjkxN2YxMTY0ZDAyMTdhZjk4OWI4NDhjMGQgbGVnYWN5LXRydW5rCiszNDY0NCA5NjU0ZTVmMjQ3M2U0Zjk0OTcwMjEyMGU5Y2I3ZDMwMDc2MzFiODQwIGxlZ2FjeS10cnVuaworMzQ2NDUgNWM0Y2ZmOGZhNmVjZjkxYzRkNDk5MGU3YzYyNmFkZWM3MjAzODU1OSBsZWdhY3ktdHJ1bmsKKzM0NjQ2IGMwMGI1ZjE3OTYzM2NlYmVkZTA4OGEwOTQzYjJlYzQzMjlmOGVjYjMgcmVsZWFzZTIzLW1haW50CiszNDY0NyA1NGZmNjhlOTczZWViYWUwZDk5MGUxYmU1MzA2YjM3NGIwZjQ4NDJmIGxlZ2FjeS10cnVuaworMzQ2NDggMjg3MjAwYWY5NDZmYjdiZDUxNzMzODg5YTg5NThjNmFiMGMxNWJlOCBsZWdhY3ktdHJ1bmsKKzM0NjQ5IGZhNmU4ZDRmODhjNjc4MjgyZTcxNmRlMGQ1OTQzOWY2MjUyMGYyNDUgbGVnYWN5LXRydW5rCiszNDY1MCA3ZjY5NWM1OTgyODczYjkxZWM3ZTVkNGI1YTdiOGQyZDM4NDNjYzNlIGxlZ2FjeS10cnVuaworMzQ2NTEgMTlmZjk3MjQzNGIzZDI2MWJmYzNjMzNjOGQzZmIxYjc5MzJkMDA5YiBsZWdhY3ktdHJ1bmsKKzM0NjUyIDRlZmZjYmY4MGI0NWM2ZTQwZjQ1MTc4MGRlNDFjYTk0NGEyYzAwNjMgbGVnYWN5LXRydW5rCiszNDY1MyA1ZDJiMGU5MDYyZDUzMzdkMDY5NzliMjIxMzIzYjYzMTJkOGM1Mzc2IGxlZ2FjeS10cnVuaworMzQ2NTQgODk0MWYyZWU5MDk0OWYwM2UxMTQ1OTJiNGMxMjljNjNlMTk5NTI0MCByZWxlYXNlMjMtbWFpbnQKKzM0NjU1IDUxZWJmNTQ3NGYzZGM5ODRmMWNjOGNhOWIwOTU5ZmQ5ZDE3YmI2MWQgbGVnYWN5LXRydW5rCiszNDY1NiA4MTNhNmQ5YzU4ODgyOTA3YTg5OTFmNzIwNWNhMzNkZDFiMzljNDE1IHJlbGVhc2UyMy1tYWludAorMzQ2NTcgYjI0OTk1YTk2NjRiZDU0ODQwYWZmMzg5NGNjMWY1Zjg4MzkzMjQ5ZSBsZWdhY3ktdHJ1bmsKKzM0NjU4IGJmMTMxOTU4MWRjNDc5ZjljYmEwYTIwMTdkNmJmZDhmNjJiNzIyZGEgcmVsZWFzZTIzLW1haW50CiszNDY1OSBjYjdkNWUyM2RiYzc3ZjEwNDE0MWY2MGYwNTg2ZDljNTA0YjRkMWQzIGxlZ2FjeS10cnVuaworMzQ2NjAgNzAxODgwZDI2NmVjY2I0ODEzMDRjYmJlNDY3ZDZkNzg0NTVkMmI1YSBsZWdhY3ktdHJ1bmsKKzM0NjYxIDZjYTBkYmQ2Y2NjOThhMTk2ZWViZjdhOWQyNmNiNTMzN2U3MWVhODIgbGVnYWN5LXRydW5rCiszNDY2MiA2MjUxN2NjNGM0ZTc5MjAzMDFmMjg1ZjE5NzFiMDlkMjVjNjk5YzNmIHJlbGVhc2UyMy1tYWludAorMzQ2NjMgN2JlNDVmN2E3MThmMzU2OTQ0MTM0YjMwZWVjN2JjNzAwYTNkZjc4ZSBsZWdhY3ktdHJ1bmsKKzM0NjY0IGY3MjljNGQ1MzA0OGFjMjI0MzI3MjVlZTlkNDNmMTgzOTYxNjk5NzIgcmVsZWFzZTIzLW1haW50CiszNDY2NSA1ZjQ5ZmMyMzFiNGM4ODVmMTA1MDUxMWU2MzYwZWE4OWQ4NWE2NjdlIGxlZ2FjeS10cnVuaworMzQ2NjYgMjMzODJhMTM0ZDVhYjYxYTgwZDU4ZDhiZTk0Y2RhODBkZDExZTEyYSByZWxlYXNlMjMtbWFpbnQKKzM0NjY3IDFkYTM5YTc1ZWQzODRhOGExM2RhNDkzOTk3Mzc1ZGEzNTE0M2UyYmEgcmVsZWFzZTIzLW1haW50CiszNDY2OCAzOGU3MmY0ZjNkZjVlOTgxMGVlZmZlODVmZjNmMmEyNjY4NTlmZTNhIGxlZ2FjeS10cnVuaworMzQ2NjkgMTE2MzZlNzk4N2I2MzdmZWMxYmI2YTE0ZGI5NmUwOTg0OGU0OGI1NiBsZWdhY3ktdHJ1bmsKKzM0NjcwIDQ1ZjcwNzI4ZGJhYzQ4MDgwZTRhZTA1OTgxNGU0OGIyMDhhMWE2ZmUgbGVnYWN5LXRydW5rCiszNDY3MSAzMzEzNTcxYzY1NzQzYTllYzQzY2I5NmIyYzg0ZTExMzUwYzZlNGY4IGxlZ2FjeS10cnVuaworMzQ2NzIgOGZhM2M1ODY5ZjUxYTdiNWVkYjhlZmMxNTNlNjllOGVmY2U4MjUwZCBsZWdhY3ktdHJ1bmsKKzM0NjczIDA3ZDNjODY2OGY4YjQ3MWM4YWFlMWEyZTYwOWI0ZTM0ODY2ZjgzN2MgbGVnYWN5LXRydW5rCiszNDY3NCA1M2QyODEzMzk1ZjRlZjgwNjllNDRkODE4NzQzOGNlMjA3MWYzZDY3IHJlbGVhc2UyMy1tYWludAorMzQ2NzUgN2FhYTQwYmMyYjE3Yzk0ZGYyYzA1N2VkZjM4MTNhMTI3ZGEyMzA0ZiBsZWdhY3ktdHJ1bmsKKzM0Njc2IDQ2YjlmZGQyN2VjMjFmYmZhN2RhYmFkMzBhNzI2YmZiZmM3MDA0NDEgbGVnYWN5LXRydW5rCiszNDY3NyAxOTA0ZDhiMDM4YjY2OGQ5ZTk4ZGI2YmRiZDc0MGRlMTQ2YTBkODI4IGxlZ2FjeS10cnVuaworMzQ2NzggOGFmZWNkMzZmYjhlMzUxNTc3MDNkNDQ5MGMxM2I5ZDQxMzhiMGMyNCBsZWdhY3ktdHJ1bmsKKzM0Njc5IDMxN2ZjYzVhMTg0ZDQ4Yjg5NDk1NWFlZDVlOGRhZWMwMTAyNDFiZDUgbGVnYWN5LXRydW5rCiszNDY4MCAyMjEwN2M1YTE3NmUzMTMzOGRiODcyNjM2NmI1ZDc1OTQzNmY3YjYyIGxlZ2FjeS10cnVuaworMzQ2ODEgZjE5NjI1ZjNjMTk4ZWVmNGEwMjQzMWVkZmVmYzE2MjQ2YzNjYzVhYSBsZWdhY3ktdHJ1bmsKKzM0NjgyIDViY2U5NTg5ZWYwYjAzNmE5NzIxOGI3OGMyNWNjODE0NzBkNmYwYmIgbGVnYWN5LXRydW5rCiszNDY4MyA0ZWRhYmMyOTc2ZjczZmM1MTMyOGIyNTQ3Y2VmMTMyNzAxNzUwMDZjIGxlZ2FjeS10cnVuaworMzQ2ODQgZGQ2YTUxMGFlMGQ5YzA5OTQ0MzQ3MGIxN2MxNGJkNjk0ZDdmYWQ2OCBsZWdhY3ktdHJ1bmsKKzM0Njg1IDNjMWM4MWQ2NDJlMDg3N2VjOTAwNTQ5YTE5ZDBkNzJkNWNlNDgwMTYgbGVnYWN5LXRydW5rCiszNDY4NiBiNmMxMzk1NDRjMTZkNmFiN2EyNDEyNThkYzE1NGFkYjA0NjdmMDhhIGxlZ2FjeS10cnVuaworMzQ2ODcgZTRmOWU3NGJhNTZkYzg1N2NjYWY2ODk0M2Q5MjM1OGI0YWVjYWQwMSBsZWdhY3ktdHJ1bmsKKzM0Njg4IDE2YzY4MmUzZTU3ZjllZjI4MDIzM2MyMTI2ZDIwNGZkNTc4ZmRhMDIgbGVnYWN5LXRydW5rCiszNDY4OSA0YjJjOWUxNGI0NDZiNjQ2ZGU5MGJlOGE2MzNlMGUyOGI5YjRlMzQwIGxlZ2FjeS10cnVuaworMzQ2OTAgY2U5NmJkYzZmYmI4ZDQwOTZjYzJiZGQyMGVlOTc0MWI2NGZiNDA5OSBsZWdhY3ktdHJ1bmsKKzM0NjkxIDUzZTRiN2ZlMDk2OWMxNDY5MzJmZGM5MDNlMjI2N2I3ZWZjZWI3YzYgbGVnYWN5LXRydW5rCiszNDY5MiBkMTJmMDdjMWMzYTA3MDczMDgxMTkwMzk4MjVkODI3MTkyZDU2OTE5IGxlZ2FjeS10cnVuaworMzQ2OTMgNGNlMzBkOWExZTA0MTliZGY5M2Q5YTk2ZWQ3YzcyYzI0MDUzN2JlNyBsZWdhY3ktdHJ1bmsKKzM0Njk0IGVhZDRjNjEyMTlkMGYwYzE3NjFhMjdjNzYyMDc2NTY4Mzk4MjRhODAgbGVnYWN5LXRydW5rCiszNDY5NSA3ZmUyMDE4MDFjMTQ5OWY4ODUxNThkODY5NzU0NGNhMjY5NzNlZTcwIGxlZ2FjeS10cnVuaworMzQ2OTYgNGM4MTYwMDg4YjM0NzU0YWU3MmFhYmEzOTJlM2UzZjQxYzUzZDJjNiBsZWdhY3ktdHJ1bmsKKzM0Njk3IDg2ZmRmOGZlN2YxNzIwZDEwNjE1YjVlYmM1YzUxZGJkMjBhZTcxYzAgbGVnYWN5LXRydW5rCiszNDY5OCA4OTBmM2MyYzExODMwMDU5N2I2YjcyNTY4NGJkNjNiMjdjYTAxNmM5IGxlZ2FjeS10cnVuaworMzQ2OTkgZWIwNDI2NWZiNjViODZiNjY2YTRmZGEyNTQyMmM3NmIyNzUxNmQyZCBsZWdhY3ktdHJ1bmsKKzM0NzAwIGU1NDNiM2YwZDkwNjAyZTI2NWUyYWNjNGJmOGIxYTY1MjMyYWFmNTAgbGVnYWN5LXRydW5rCiszNDcwMSAzMzRlZGNkMWU1YWM2MTI1MmYzMDBlOGQ4MWFlNWQ2MGYwMmNmMjczIGxlZ2FjeS10cnVuaworMzQ3MDIgODMwZTVmZmM2ZDI1YzcwNGY4ZWRhMGI5ODRlY2E1OWQxODYzYmJmNCBsZWdhY3ktdHJ1bmsKKzM0NzAzIGZkYzhhODhhOWE1YTQzNDRlNGFiZjVkMDhlZDkxNjgwNTdkM2Q5YzggcmVsZWFzZTIzLW1haW50CiszNDcwNCA5NjAwMWE3MGM1MDU3ZjBiNmY5MTUxNTg4NTVlYTQyNzUyM2ZhNzBiIGxlZ2FjeS10cnVuaworMzQ3MDUgZDk5ZTAyMjk2NmM5NDM4YzU4OGZjNjgyODYwZDhjY2E0YjZmYTVjOCBsZWdhY3ktdHJ1bmsKKzM0NzA2IGNhYTFhNDhkYTRjY2RmY2YwYjZkMTBmM2U2MzNmYWY5YjZlMWY0NGIgbGVnYWN5LXRydW5rCiszNDcwNyA0ZjYzODJkMjgwOWRmNGFlOGMyMzYzZjcyMzRjMDZhNzJiYjYxOGY3IGxlZ2FjeS10cnVuaworMzQ3MDggODMyNmY2NDI0NGMyNWFiZmM3ZWE1YzEwZmJjMDQ4MzBjOGE4MjE3NSByZWxlYXNlMjMtbWFpbnQKKzM0NzA5IDE0ZDMyMTQ2NmEwNjkyZjE0OWMzYzVhZjM2ZjNlYzAwMWMwM2U2YmQgcmVsZWFzZTIzLW1haW50CiszNDcxMCBkNDAxNzkwMTc2Mzk1ZDU5ZWE1NDA2YjM4ZGQ4YTBhNjI3NDA5ZTg5IGxlZ2FjeS10cnVuaworMzQ3MTEgNTJkZTU4MDg3YjJmM2E0NWVjYmNmZDUzMTUxMTU0OTJiN2ZhZDI4OSBsZWdhY3ktdHJ1bmsKKzM0NzEyIDYzMmIyMjNjYjhlODM4Nzg4YzkzNDEzN2RkNTc5MzkyN2FmYjI0NzAgbGVnYWN5LXRydW5rCiszNDcxMyBkNDgyNmUwOTdhM2ZlYmYyODRiOGYyOWE1YmViZDA5MWJhZDczMjU2IGxlZ2FjeS10cnVuaworMzQ3MTQgOWZjNTM0MWZhNjk1NmE4MzNiY2JhMjc0ODJjODg2NTU2NmQxOTk0ZSByZWxlYXNlMjMtbWFpbnQKKzM0NzE1IGUwYTc1YTc1NzBiNDAyODlmOGM1NGYzODJmMDFiMGE3MzgwNGY4ZDAgbGVnYWN5LXRydW5rCiszNDcxNiAxOGRmMjAzYjhlOTg1NDgyYTRlYjdmMzBlOWM2ZWExOWUzYWFmZjcyIGxlZ2FjeS10cnVuaworMzQ3MTcgNGRhOTlmNzNhMWRmODRkMTIzNjJhOGQyN2ZmZmMwOGEwNjJhMzhlNSByZWxlYXNlMjMtbWFpbnQKKzM0NzE4IDIyYmVkMmZkZmZlYTZiOTY1ODRhMzJkOTY3NDZkZmJjMGU2NzFiMDUgcmVsZWFzZTIzLW1haW50CiszNDcxOSBkOTAxNThkZjM5YzQ1MzEyZmRmZTBhYjUwOGQ3NmU2ZDg3MmU0MTdjIHJlbGVhc2UyMy1tYWludAorMzQ3MjAgNjIyYTc2YmMwMjM3NjkzOWIwYWE3ODc5MWU4NzJiYjk1ZDAyYmNkNCBsZWdhY3ktdHJ1bmsKKzM0NzIxIDI3ODk3NmIxOWRjY2E2Zjg0NzNjODRjZmIzYzUyNDYwZDY4M2E1ODEgbGVnYWN5LXRydW5rCiszNDcyMiA1Yjc3YmM0ZDI1YjFiOWRmNTlmN2Y5MGMwYzc3Yjk1Mzc4OGNhYmJiIGxlZ2FjeS10cnVuaworMzQ3MjMgNDY5NmM0YjdmNzkyYjJhN2FmZjNhMjg2NGQ1MTRhMzdiNjllODljZiByZWxlYXNlMjMtbWFpbnQKKzM0NzI0IDFmZDgxODk0Y2I5NzNmMmZlNDI1YmZiYTRkMDZlZWM4NGIzNzI4M2MgbGVnYWN5LXRydW5rCiszNDcyNSA3NTNkNzJiZDIxNGIyYzVkMmY4ODZiMTY1MjczMTQ0NDc4NTNmYjdjIHJlbGVhc2UyMy1tYWludAorMzQ3MjYgNDIyNGQ4MDc5MTFjNGEwOWYwMmVjYTFhMjRkZGQ5ODc2ZjEzNDliMSBsZWdhY3ktdHJ1bmsKKzM0NzI3IDcwZjMyZjBkOGVjZjA2NTliNWYxZGNhZDk0YTc4NWZlOGM3MWY4NzggbGVnYWN5LXRydW5rCiszNDcyOCAyZGRiMWNiYTE4ZDY0Mzk2ZDI3YTQ4OTU2OTlhODhmM2VkZjFhZTBjIGxlZ2FjeS10cnVuaworMzQ3MjkgOTYyOGJiNTRhOWUwNzRjYTIyYTI4NTY4MjEyZTA3Y2ZlN2E5MzE1MyByZWxlYXNlMjMtbWFpbnQKKzM0NzMwIDQ2ZGUzZGI5YTVkYjUzNDRiMGQxYWIwNTA4MzM4MTNkN2M2NGJkNDkgbGVnYWN5LXRydW5rCiszNDczMSAzMmMyYzc5OWM5MjQ4ZTNhM2Q2MGE1YTFiZDg3OTMwNDBlNjc4ZWQ1IGFzdC1icmFuY2gKKzM0NzMyIDI3MGQ1OWUzNDZlNmFmODk0OTdhYWE4MWExMGVlMjIzN2QxYjQyZTYgbGVnYWN5LXRydW5rCiszNDczMyBjNDExYTc2MmQ1ZGQ2YTJlYTZmNmFlY2RmZThmY2Y0N2MwOWU0Zjk3IGxlZ2FjeS10cnVuaworMzQ3MzQgOGQ0MTM1NzhlYjFhYzBhOGU2Mzk3MWRlOTAyZDYxZjA3YWIyMmFjYyBsZWdhY3ktdHJ1bmsKKzM0NzM1IGE0YjkxM2Y5MzdjZGM5MTdhYzEzZDYyNjlkZjEwOWM5NjBhMTI2NjkgbGVnYWN5LXRydW5rCiszNDczNiAxN2FhNTMwMmUwOGIyMTdkMDc1MWU1NDQ2N2FkY2I1YzY1MTk1NzgxIHJlbGVhc2UyMy1tYWludAorMzQ3MzcgYmNjNzg3M2M3MDdlNTJlYWZlMTVmODZlNWQ2MTAxNzI5MWUyODdkZSBsZWdhY3ktdHJ1bmsKKzM0NzM4IGIyZmQ3YWYxNzE4NjkwNmYzM2U0ZGI4MWY0ZGRiNDYyZmVjMDU2YmEgbGVnYWN5LXRydW5rCiszNDczOSBkMmVhYTUzY2VhYmVlMmEzY2NjYzdkZWQwMWM2OTM3YWRlMDU5M2U2IGxlZ2FjeS10cnVuaworMzQ3NDAgMjFhMTBjMzYwMGI1YzRkNDc5MjRiOThjYTgwZTU2YmRmMzc3ZTllYSBsZWdhY3ktdHJ1bmsKKzM0NzQxIDg0NWYxOWIxNDVhOGZhMGYyY2Q0ZjBmMzU5NGFmNmUxZTdjYzhiYTcgbGVnYWN5LXRydW5rCiszNDc0MiA4NWNhYmU3YjIxNmI3YmQwNTUzMWE3NDcyNDIyOGUyN2RhNmQ4MjFjIGxlZ2FjeS10cnVuaworMzQ3NDMgMGFjNDA5ZGZmMzkwOTE1OWE5NzI2NjIzOTUyMzZmZmY5NmZmNDliMyBsZWdhY3ktdHJ1bmsKKzM0NzQ0IDJiNmExMGUwNjcyNzM4YmVhMmQ2MzRmY2FmZDlmMGFiMmQyNWExYTcgbGVnYWN5LXRydW5rCiszNDc0NSAwMjRiNDc5OWE0MWQ1MjUxNzQ1NWNlODVmZWM4OTI0ZGQ0NjljYjAwIGxlZ2FjeS10cnVuaworMzQ3NDYgYmYwMzg5ODZjYjhmZGYxMjZmYWRmNTM1NmUwODFjN2ZiYzJmMTRhNyBsZWdhY3ktdHJ1bmsKKzM0NzQ3IGY5Njc1ODlkZjc1MTI1YTc4OTg2ZWY5Y2RkNTE0YWJkN2M3NDcwNTUgcmVsZWFzZTIzLW1haW50CiszNDc0OCBjZTA3MTE4ZWU1ZDI3N2RjZDM1ZmRlNjNiMzA5MjBjNDc5Y2E2MTk0IGxlZ2FjeS10cnVuaworMzQ3NDkgN2M1NWViZWM0OGY1NzdhNWRiYmE4MGM1ZDU2YmQ2MGViM2I1NDY3YSByZWxlYXNlMjMtbWFpbnQKKzM0NzUwIGRhMTU3OGNmYWUxODJlNTRiYjI2NmI5MGYyMDVmNTE0NmMzNzJjYmIgcmVsZWFzZTIzLW1haW50CiszNDc1MSA2ZDNlMGU2ZDdiZTYxNTk5ODQxMjVkODViNTZiMTZjZTMzNTJlYzAxIGxlZ2FjeS10cnVuaworMzQ3NTIgNGI2YzdlNWNiODg5YjMzZDgxMWVjNDAzZWU4NDM4ZDAxM2VlOWNkMyBsZWdhY3ktdHJ1bmsKKzM0NzUzIDJjM2E3NWM1NDgzMzQ5Yjg0Y2YzNDA4MzhhYjhjM2ViNjQzYTk4OTIgbGVnYWN5LXRydW5rCiszNDc1NCBmYWRjYTE3MTY0YzA2YzYyMjQzYjMyZThlMDM3YWU2YTg2ZWRiNzliIHJlbGVhc2UyMy1tYWludAorMzQ3NTUgNDRhYjI0MmM5YjhjZjVhZWY1YzgzZDgzNDhkNjk2MDM5NzU0M2VmMSBsZWdhY3ktdHJ1bmsKKzM0NzU2IDJkNjkwYTk1ZTRmZDFlMDFlYTQ4MWE5NmZkOGY2YTlmYjU3MWI1ODcgcmVsZWFzZTIzLW1haW50CiszNDc1NyBmNzFhMjE2Nzk0MzZhNTEwY2NjNDY1Mjk4ODU1YmJmZWQ4Yzk5NzE2IHJlbGVhc2UyMy1tYWludAorMzQ3NTggNmNmMDliZTA0OTFkZTg2YmU4MzM2N2YwM2VmNzU4N2ZmMDljNzgzYyBsZWdhY3ktdHJ1bmsKKzM0NzU5IDQwMDliMzk5MjYxNmEwZDYwYzM1OGEwMjVkNDg1YzgxMDMxMWM0MGUgcmVsZWFzZTIzLW1haW50CiszNDc2MCA2ZjAxNzAwYzE4MDg5OGRlYzNlZDEzN2Q2MDRmMWE3MGNmZGUyYjk1IGxlZ2FjeS10cnVuaworMzQ3NjEgOWM4NDZjM2RmNmYzZTAyNGUwZWFhYjRkZGE1YjlhMzg4YmJlZGY0YSBsZWdhY3ktdHJ1bmsKKzM0NzYyIDczZDUyMTMzMDVkMzc2ZDUwNDljODQ4ZDU4YjM3YzMxMGVmZTFmYjUgbGVnYWN5LXRydW5rCiszNDc2MyA2ZGMxOWU0ODM0N2EwYjc4ZjI2YjQ0NzZiMjZmOTI4YzZkN2JjZjA4IHJlbGVhc2UyMy1tYWludAorMzQ3NjQgZGQ1NzA3ZjcxNTI2YWNlOTRiYTg1NThiYTFhMGJhZjA5YmU4YjVlMiBsZWdhY3ktdHJ1bmsKKzM0NzY1IDBmZjY5MjU5YjAwNWY0NzNmNGY3OTU2YjIwZWQ0MDdjNTE1ZWUyYzEgcmVsZWFzZTIzLW1haW50CiszNDc2NiBmZDg3Y2UxODE5ZmEzNzhiMjI1ZGIxYTE3NmI0MGE5OGZkNGJlMGMyIGxlZ2FjeS10cnVuaworMzQ3NjcgZDUwZTI2ZjIwZjEwODRmOWZkZjFmNTI2YzE5YzFiMDk3MDkxNDE1NSByZWxlYXNlMjMtbWFpbnQKKzM0NzY4IGY1ZWFiNjI4MzI4NjY0ZmE4MzAzNGI3YTYwNTc3YTlkZmYyZmEwZjAgcmVsZWFzZTIzLW1haW50CiszNDc2OSAzNTQ4ZjIzNDgzMWUwOTlmMTkwNTExYjc4Mjg2OWY2MWRkMzkwNjM2IGxlZ2FjeS10cnVuaworMzQ3NzAgZDNhZTMyNGY2Yzg5NWZhMGJmYTkwYmJjMjA0NDgwZTcwOTI0ODNlMyBsZWdhY3ktdHJ1bmsKKzM0NzcxIDQ1NmUyNzRmODYwMjYyNjZjMDYxZmQ2OTQyZmZmNGJjMTg3MmUxODkgbGVnYWN5LXRydW5rCiszNDc3MiA1ZGVhNzNkYzk2OGI4NDI3ZGY5ZTBlN2IxOTJiNmMwNTgzYjRiNjE2IGxlZ2FjeS10cnVuaworMzQ3NzMgM2QxZjBkZjc1YTgwYzZjYjVmZDJiMGYzOGFlMzE0NTk3YTgzYzE5NSBsZWdhY3ktdHJ1bmsKKzM0Nzc0IDM4MzM4Yzk3MGY3ZDA3OTlkMzc5ZWU2MTExYTQ5MjgwMTNmNWIxYjIgcmVsZWFzZTIzLW1haW50CiszNDc3NSAyNTE3MTc1NjZlOTEyZjhiZmFmZTI1YjJhNjMwOTliZjk0M2RhYTJmIGxlZ2FjeS10cnVuaworMzQ3NzYgZjY5NTg5MTc5YzU1OWMwNThmMWVlNTk2ZTUwY2YxNzNiMWY5NDU3MSBsZWdhY3ktdHJ1bmsKKzM0Nzc3IGJmN2RmNDgwMTJjYjJhNjgxM2RlZDQxMzIxMmRhYjEwODFlODJlY2EgcmVsZWFzZTIzLW1haW50CiszNDc3OCA0ZTExMjUwNTY0Y2JkM2YwNjM1YTRjOTQwOTRmZTAxNGI0NzQzMWE2IGFzdC1icmFuY2gKKzM0Nzc5IGQ2YzdlNTU5NjI0N2ViMDg5YjQzMzFmOGZlZjA2Nzg1ZTJhMzE4ZTAgcmVsZWFzZTIzLW1haW50CiszNDc4MCA0YTM2MWJiYjUyNzhjYTU3ZTJiM2M4Yjc3YTFjODQzNmUwYTI3Nzk0IGFzdC1icmFuY2gKKzM0NzgxIGYwYTE5N2RkMjEyZDUzOTQ0MmJjN2E2MDA2YzA2Y2RjZTY4NzA4Y2UgYXN0LWJyYW5jaAorMzQ3ODIgZjE0MzNkM2M2NDQ3ZDc3YzY2OTYzYWU5ZjJlZmFiYjgxNWEzNzU1MiBhc3QtYnJhbmNoCiszNDc4MyBiMGJjY2I5ZmI3MGE4YjNhNWM2M2Y4ZGRmZDExYzUzN2UxMTdjMjMzIGFzdC1icmFuY2gKKzM0Nzg0IDY0ZGRkYTI1NTk1MjRhZDgxM2FjMTM2YjNhMjljNWViZGUwN2I0MDcgbGVnYWN5LXRydW5rCiszNDc4NSA0ZTMxYzI2MWE2Njg5NWM0ZDQwNjZiOTExMDZkMzZhMjhiZDc1ZmY2IGxlZ2FjeS10cnVuaworMzQ3ODYgMGFjOTg4NzhjYzMyYjVjODdjN2EyMjk5NWEwNzI3YjMzMTQ1ZGJiZSBsZWdhY3ktdHJ1bmsKKzM0Nzg3IGUwNWZlMTc3NTUyMDY0ZTMxOTg2MWQwNzg2MDZhNWM2YWM5ODEzN2QgbGVnYWN5LXRydW5rCiszNDc4OCBlYjUwOWZjNDdmMDc1MDg2OGFmOWNkNjExMDU0MmRkMThjYzUxMmQzIGxlZ2FjeS10cnVuaworMzQ3ODkgNDFmNGNlNmM0ZTUwNGUzMjQxZDJjMmRhNjI3MWVlZjllOWFmZTQ4OSBsZWdhY3ktdHJ1bmsKKzM0NzkwIGExMDJkYTkxNjQwZTM0NmE5ZjlkZmM4MmY1OWI3OTAwNDMyZDNjYTQgbGVnYWN5LXRydW5rCiszNDc5MSAwZWM0ZDNlYmQ0MzM3ZjFkOGU3OThmMGU5ZjczNDNhZjkyOTMzYTg1IGxlZ2FjeS10cnVuaworMzQ3OTIgOTMxNGJlMGJiYjY0MDE5YjhkOTdiYzU5NGU2ODEwNmJjZmMwNmNkOCByZWxlYXNlMjMtbWFpbnQKKzM0NzkzIDVhMDY1OGMwMDg3OWFhMzVmMzNjOGE0MTg4YjNkNGM1YTI5MzViM2EgcmVsZWFzZTIzLW1haW50CiszNDc5NCA3ODM2OTRkNGQ0Y2YwY2ZkZGJkMjQ1YmUzMGI4ZDU3YWE4N2I1YWM5IHJlbGVhc2UyMy1tYWludAorMzQ3OTUgZDQ1MTRjZTE0Yjk2N2Y3ZDk2Nzk4YTMxZjU4ZTI1Y2I2NjNhNmUxOSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk2IGRhMTRkODA2ZTg5Yzc1MmY2YTcyOTRhM2U0YTY5YmIwNzRlYzQ2NzAgcmVsZWFzZTIzLW1haW50CiszNDc5NyBkZTI4NTViM2Y0MTM2YmYxY2EwYjc3YjAyODg1YjdkNTRjOGJhMWU5IGxlZ2FjeS10cnVuaworMzQ3OTggNDg2OTVjODM5ZDk4YjNhMjcyYzYwOTMxMDQ5NWVhMTFlNjJhODQ2YSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk5IDViNTE1Y2M5MGI1YTQzZWZlNDJmNDYzMTJiNmJhZTEwZWYwMDkzYzQgbGVnYWN5LXRydW5rCiszNDgwMCBhNTJkNzQ5NDhkZDRmNGUzZmI4ZWYxMTJiYmY1NDJlY2QxZGYyNDliIHJlbGVhc2UyMy1tYWludAorMzQ4MDEgMmE2ZmM0ZDI2MWY4ZTY4ZGFiOTQ4YTdkNjY1ZmRhNTJkNGZhYzg4MSBsZWdhY3ktdHJ1bmsKKzM0ODAyIDJiYTlhODY5NjU2MDJkOGUwNTRlMGYyZDFjODQ0MmZhMmRjMzBiYjIgbGVnYWN5LXRydW5rCiszNDgwMyA2MjI5OTFjYzFlM2M1OGI1MWM1NTIxYTMyYTgxOWNkOWUxYmVhZDg5IGxlZ2FjeS10cnVuaworMzQ4MDQgMzYwNjJkNjQ1ZmJiOTU2MzVlYmViNTAxNTgyN2YyYWU2ZDdjZmQ3YiBsZWdhY3ktdHJ1bmsKKzM0ODA1IDZlYjQ3M2Q2ODA0MjRjNTQ0ODZmOWMxM2ZlMzc4MzRmNmYzNDlkMzkgcmVsZWFzZTIzLW1haW50CiszNDgwNiAxZjA5ODE5ZjUwOGIyNWQ0NTRjYjdmZWZhYTE4MzBiM2RhM2M3MzU3IGxlZ2FjeS10cnVuaworMzQ4MDcgZDAwZjAxMjA3ODM3YjY3MjI1ZjRlOWFiYjgyOTg4ZWE4NDI0Yzg4MiByZWxlYXNlMjMtbWFpbnQKKzM0ODA4IGUzMDI1ZmU3MGQ4YmQwNGY3MjJlNzM3OTJmODhjNGRkNmRlZjc4ZjcgbGVnYWN5LXRydW5rCiszNDgwOSBhMmY2YzZhNjdmMjQxNDA5OWNjNzAxOTNiYjYwMzhmNzViNjA3NmYyIGxlZ2FjeS10cnVuaworMzQ4MTAgYjI0ZDZhNzFiMDFmMTI2NTk4ZjA2ZWYwNDc4MjIxMGI5ZTY2MzNiNSBsZWdhY3ktdHJ1bmsKKzM0ODExIDhkZDE1OTI3OTU3NmE1NzQ3ZTNmMmNlN2Q1N2Q4MWI4ZWQ5OWVhYWEgbGVnYWN5LXRydW5rCiszNDgxMiA4NzA2MTViZmFlZGZiOWU0YjJlOWMzZmQ1OTQ2YmM5YmY4YzhjZTRmIGxlZ2FjeS10cnVuaworMzQ4MTMgMmY3OTZjNzU5NmVjYTIzZjE4YzE5NGQ4YTZjMTA3ZDkzZjZjYWRiYyBsZWdhY3ktdHJ1bmsKKzM0ODE0IDBhN2YxYTUzYzc3M2I0YWMxZjVjOGQ1MmIyMzc1YTFlNTQ0ODg4ZDMgbGVnYWN5LXRydW5rCiszNDgxNSAzODYxZWI0NjdjMjllMDdiYTZiMzY2OTc2MGRkZjcyY2IzM2I0NDhjIGxlZ2FjeS10cnVuaworMzQ4MTYgZGUzOTFlOWQ3MGVhMTY3ZjFlODFiYTU3YTBhYjNjNjg2NzczMWFkMCBsZWdhY3ktdHJ1bmsKKzM0ODE3IGYyZTc2NDZmNzc2MzE2MWJiZGRkZjI3NmQ3NDdmNTZmZjZmNGYzMTAgbGVnYWN5LXRydW5rCiszNDgxOCA5Y2E5ZDMxOGFmNzhiN2Q1ZjgzZjk1NjM3ZWExOWQ5YmIyZGQ2MjI3IGxlZ2FjeS10cnVuaworMzQ4MTkgMzAzODJhYjA2Y2QxYzJjMGI5MDQyNjNkMGY0MDQ0MGM3YTFmODY2OCByZWxlYXNlMjMtbWFpbnQKKzM0ODIwIGQzNWY4Nzk5Y2YxMjIyMDVkZjVmODQ2NmEzZWIzMjA2MmI3ODZjYjYgbGVnYWN5LXRydW5rCiszNDgyMSAwM2Y0M2Q2MTlmZjRiOGE1NTBhNmQxZWMzMzg2YWE1ZjdiOGI4Mjk3IGxlZ2FjeS10cnVuaworMzQ4MjIgYmRmNjBiZWE0MTc3YTc4MDQyYzBmMDkyMzE4MzhjNDRjMmRjN2E5MyByZWxlYXNlMjMtbWFpbnQKKzM0ODIzIDc1OTIxNGYxZWM2OTEwNzE0MWY5YTAwNDI0OTZmYzYyZGViNWM3NTggcmVsZWFzZTIzLW1haW50CiszNDgyNCAxMTNlYWZlODg0OGZmNTg3MTQxYzM3YTJiNWFkZjEwN2M0MmUxZWZmIHJlbGVhc2UyMy1tYWludAorMzQ4MjUgNjFiNzBlYjhkMTYwYjMxOTUxODA0ZjNiNWM2NDY1YzY5NGU5ODA1OCByZWxlYXNlMjMtbWFpbnQKKzM0ODI2IDg2Y2YyYjgxMGYzYTJiZTc3YjQwODhlMWE5NjczYTFmMDZkMWY2YzYgbGVnYWN5LXRydW5rCiszNDgyNyBjMjNhODYyMTVkOWY3ZTE3NTBmOWI1YWU0ZGVkNGU4NjAwN2JlZTIyIHJlbGVhc2UyMy1tYWludAorMzQ4MjggMjAxNGY5YzYzNmZiZTc1NmE5NDRhZTM3ZDgwNGI0MWEwNmE2NDc4YSByZWxlYXNlMjMtbWFpbnQKKzM0ODI5IDBhNjNkNGQwMTVjZjk1MGYxODhmYmNkZjkxYmE1NTQ1N2Q0NjhhY2MgcmVsZWFzZTIzLW1haW50CiszNDgzMCA5MTVhYTBlNjk0ODU5ODllNzdlOTQ2MDg5NGIwYzczN2NkYWQ2ZmU3IHJlbGVhc2UyMy1tYWludAorMzQ4MzEgYTA5NmQ3YjhlYzhhMjllMTIwMzZhNThlNTcyYjY2Yzc3OTRkNGExZCByZWxlYXNlMjMtbWFpbnQKKzM0ODMyIDk3MmU3ZmExZDU5ODZhNWIxNzcxNjZkM2ExNWE4OTFkZTZlOWRhYTkgcmVsZWFzZTIzLW1haW50CiszNDgzMyA0NWNiMjg0Yjg0ZDNhYjI2NWFhNmYyNDQ3YTllN2ZhYzZkNTRiYTIwIHJlbGVhc2UyMy1tYWludAorMzQ4MzQgZDc2MzBjZTdhYTlmZDViMTIzNWE2NTJmMzk5Y2E3ZjkzZjBhNWFkMCBsZWdhY3ktdHJ1bmsKKzM0ODM1IDlkNjI2Njg4Y2E3YmNlYjA2MmJhZjFjNGNhZTFiOWExNGY2NTE2NWUgcmVsZWFzZTIzLW1haW50CiszNDgzNiA3NDAzZTM4YTJmMTA3YzlhOWE4MjRlZTY3N2MwYWE3OTM0NTNjNWNhIHJlbGVhc2UyMy1tYWludAorMzQ4MzYgZDIxZDRiYTJmOTczNDY3ZDMwNzk0YTNkMmFjNDkzNjU4MTgwZTUwMyByZWxlYXNlMjMtbWFpbnQKKzM0ODM4IDU2NjM1MTljZjA2ZmY0M2ZkMjQyZTRjNWY1YjM5NzU0YjY0ZmE3OTIgcmVsZWFzZTIzLW1haW50CiszNDgzOSBlOTZlMzljZDJkMTQyYjFmYzNiNTg5ODE4ODU1YzA5NGRkOGYyNTliIGxlZ2FjeS10cnVuaworMzQ4NDAgYmE4ODZhZTMyMmVjMTY5ZmRmZDNmMWRiZDQ0YzA5YmJlOWQyM2FmMyByZWxlYXNlMjMtbWFpbnQKKzM0ODQxIDYwZTVkOGI3ZTk2NGU2Y2E5MTRiY2ZlNGI4ZWJlMDYwMjdkNzY0ODEgbGVnYWN5LXRydW5rCiszNDg0MiA4MzViNzllYWM4MTJjZTkwOGYzYjYwZmRmYTM0OGI2MTgzODliYmRkIHJlbGVhc2UyMy1tYWludAorMzQ4NDMgOGU4MGY1NTFiMGU5NjgxYzQ1YmNmODVjOGJiOGQ4ODMxYThlMGJhOSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ0IDM4YmVjY2Y0YTBiYmY3NzcwZjBlZDViOGI5ZTQ1OWJjODE3YTNlZWEgcmVsZWFzZTIzLW1haW50CiszNDg0NSBiNzdmZDQ2OWVlMzU0MWZhOGY3YmY5ZDgwYTBjYWI1YjFhMTVjZGM1IHJlbGVhc2UyMy1tYWludAorMzQ4NDYgNjlkZTVhZWUxZmJiNTEwZDFkNTZlNGVhMWZhMGFkMTk1ZjlkM2NiMyBsZWdhY3ktdHJ1bmsKKzM0ODQ3IDdjOGRjNjQwNDIzYTUxNDhlMTdiMzQxMzdhNzY1YzQxMzZkNjhkMzUgcmVsZWFzZTIzLW1haW50CiszNDg0OCA1MzUyYTZlYmFkOWFjNDAwOWMzMGJjOWZlODQ3MWNjMjIxYWFhYjI2IGxlZ2FjeS10cnVuaworMzQ4NDkgMTdlNmU5ODI5YzdlNTBiZjE2MjcyOTllNzgwMzg3MjE0ZDVhMDA0NCByZWxlYXNlMjMtbWFpbnQKKzM0ODUwIGYxMDhkYjU5ZWI3NmEyNmI3YTE1YTk0Mjc2YzEwN2U0MDhlMjliODcgcmVsZWFzZTIzLW1haW50CiszNDg1MSBiMDI4ZmQ1NDE5NDE5OGE5ZTMxMjM0NTNkZmI1ZDIxN2NkYThkYjA2IHJlbGVhc2UyMy1tYWludAorMzQ4NTIgOTM5NWNkOTJkMmNkN2U1YjY5OTZmYzNiYWI2OTQ2ZDQ1Zjc2YjQ1ZCBsZWdhY3ktdHJ1bmsKKzM0ODUzIGJlOWVmOWI5MmQ2MTM4YzBiNzBmYzdkMDE5NDMyZTZjMzljOWQ5ZTkgbGVnYWN5LXRydW5rCiszNDg1NCAyMWFlYjk4MzJjMWQzMjgwNDJjNGZmNmNkMmRhMTE3YzkzZTllNjg4IGxlZ2FjeS10cnVuaworMzQ4NTUgNDE1ZWY1NTIxYThhZmQ4NTI5OGYwMzViYmY2YjE2YzJlMDE1Nzg0MiBsZWdhY3ktdHJ1bmsKKzM0ODU2IGM5NTNmZGI1MWNkZDdlZjg4MTNhYjIwYjk1OGQ1ZWQwYzcwZjA2OTAgbGVnYWN5LXRydW5rCiszNDg1NyBjNmYxNjUwNGM4YzJmNWFkZTk2Mzc5MDk3ZTFhOWM2NTdlODg5NDMwIGxlZ2FjeS10cnVuaworMzQ4NTggNzViNjNlNWYwM2YyMTIxNjI1MWI0MWRkOGM0NzNlNDljMWQ1OGY4ZCBsZWdhY3ktdHJ1bmsKKzM0ODU5IDg5ZDI2ZTAzYzY1MzAyYjAxNWVhMzUxODRiZmIyMzlkOTQ2MWFlNTAgbGVnYWN5LXRydW5rCiszNDg2MCBmZGU3NGZhZGY3ODBjOWE4MTM5YmNjMWZlZWYzYzY4M2MyYjFiZGQ4IGxlZ2FjeS10cnVuaworMzQ4NjEgN2FhZDI0Y2FkZGI1ZDBhOGY5NTk2ZGQyZDkyMzc1Y2FmMjIxNzc0MCBsZWdhY3ktdHJ1bmsKKzM0ODYyIDUwODhhODIzNDExN2VjZGUyYzY0NDMxMmYzYmM3NzI4ZWQxNzYwMmEgbGVnYWN5LXRydW5rCiszNDg2MyBlYjEyN2U0MDFjNjQ0OWQzNzAxMzAxZGRmZTExYTIxNjVhZjc5YjRkIGxlZ2FjeS10cnVuaworMzQ4NjQgOTdlYmQxYjJmNDY4NTU3ZDAzYjNhZGEyNjg0MWU5NDk3ZWQ2NTc3MiBsZWdhY3ktdHJ1bmsKKzM0ODY1IGU5ZjNiODIyY2UwMmVjOTg2Y2RmNTI5NDIyMDQ0Y2ZhNWE1NDI5YzEgcmVsZWFzZTIzLW1haW50CiszNDg2NiA5ZTc1MDc1MzAxMGFkODJjYmJiNmQzMmQwMWViZDdmYTkyMDAxOTM3IHJlbGVhc2UyMy1tYWludAorMzQ4NjcgMDUyZTRjNTcyMjYxNWUxZjQ5OTNmNGI1NDNlN2RkMjUwNmZkNGNhNCByZWxlYXNlMjMtbWFpbnQKKzM0ODY4IDAxNzA0ODU2NTkzNmI4MzJhYjVjNDkxNmJmN2YyY2MxYzQyYzY5OGEgcmVsZWFzZTIzLW1haW50CiszNDg2OSBkMzYyMjczZDQ2OGJkMTNlODEzNWI3Zjk3ZDFmNzkwNmJhOTZkYWYwIGxlZ2FjeS10cnVuaworMzQ4NzAgOWVkNzUyNTU5NDc3N2VlNGZkNTQwM2RmYzQ3YjkyOTY3NzdmOGIyMCBsZWdhY3ktdHJ1bmsKKzM0ODcxIDM4MWFlMzI2ZWU2NTU1ZTc0ZGY3NDQ3ZmIwYjk3Mjk4OTI1ZGIyMmMgcmVsZWFzZTIzLW1haW50CiszNDg3MiBkY2Y1YmUwZjBhMWY5YWEwNTgzNDk1NWZkMTg1YTAyOTY2OWJjNmY2IHJlbGVhc2UyMy1tYWludAorMzQ4NzMgODUxOGM0NjgxNzcxZjcwNDA0MmZiODgzOWQ2NTBhNjI2NjYyNjIxNiBsZWdhY3ktdHJ1bmsKKzM0ODc0IDk0YzFiZDdhNTVhZWY1NDQ4ZmM2OTVmMjhjNTNmMWU1NjgwZDczODQgcmVsZWFzZTIzLW1haW50CiszNDg3NSA2MGJjMTFlMzAwNjgyYmE0YWQwOTFlNGQ0YTQ5MDRjMmIzZTg5MTI0IGxlZ2FjeS10cnVuaworMzQ4NzYgNjE0YWQ1Mzg4YzlkZTAwMDM4YTU0MTczOWExZGRhNTk2MDRmYWYyMCBsZWdhY3ktdHJ1bmsKKzM0ODc3IGQxZDI4Y2NhNDJjMTk3ZjFlYjc3YzkwNTVhZDJhN2MyMzdjMWI3MTIgcmVsZWFzZTIzLW1haW50CiszNDg3OCAxZGRjODZiNTgwNDAwNjJiYzVjZDlmN2NhZGUwYmFhZTFiNGNhOGIyIGxlZ2FjeS10cnVuaworMzQ4NzkgMjZlZmE4YTUzOTI1OTQzYjNmYmJmYmI0MzQwYjljNzkwYmI4YTcwOCBsZWdhY3ktdHJ1bmsKKzM0ODgwIDk0ZGZmNGEwMmNhMzA2NzdiNmNkMDM4ZGY1MzNlYjVkOGYyMWY4ZGYgbGVnYWN5LXRydW5rCiszNDg4MSA5ZjhjMDU1ODcyMTNlMWQ4ODUxNWMwZjVhM2Y1MzAxNWFjMDU1ODIyIHJlbGVhc2UyMy1tYWludAorMzQ4ODIgNGViNWYwY2FiMDllNGFkMWU2NWM5ZDE3MWQ0M2I3NTAzMGFkZjg3OSBsZWdhY3ktdHJ1bmsKKzM0ODgzIGUxZjFmYjc0NDUxYjljMGQwMTY2NjExZWU2ODY1ZDkxNGZmMzQzNDMgbGVnYWN5LXRydW5rCiszNDg4NCAyYTA3ODJjYzE1MWY4NDA0MTdjZjE1OTJiODc2OWI3ZjZlZmU0ODVhIGxlZ2FjeS10cnVuaworMzQ4ODUgNGExMmQ5MWFmOGMzZjk1ZjE0ODc4OTZhYTMwN2IxMTQ0ZjNiMTIxMyBsZWdhY3ktdHJ1bmsKKzM0ODg2IGM3MjdhZDAwM2ZkYmFjZDJiZThmNGRjNDBhMzk2OTYxZGRiNzg3MTggbGVnYWN5LXRydW5rCiszNDg4NyAwMzY3Mzc3MzMwODQ0N2RjOTM2ZGU2OTllNWU4YmJhMjM1OGQ5ZWVlIGxlZ2FjeS10cnVuaworMzQ4ODggYWFiMzYxMmYyYzM1MmIwYTFhNDkwODFlMGIyNmJhMGM5MDNlNjBlOCBsZWdhY3ktdHJ1bmsKKzM0ODg5IDg4NWRiZjE1NzhiY2IwNmJjNWFlMTIzYWQyNmZlMDI2ZTYzMWQ5ZDggbGVnYWN5LXRydW5rCiszNDg5MCAwNjNiN2QyMjVlOGFiODQ3NmI2ZDI3ZjM3ODNhNGJiNTBkNWQzZTk4IGxlZ2FjeS10cnVuaworMzQ4OTEgNDVjYWJlOWNkOWM5MjYxZjI3N2ZiNzg4ZjE4NjBmYzc3NWVlZmIxNyBsZWdhY3ktdHJ1bmsKKzM0ODkyIDQ4NzAyZjE5Y2NmYjNlYjBiZjU0YjdkNmQ5YWUzZGIzMzI5MTNkYTUgbGVnYWN5LXRydW5rCiszNDg5MyA0Y2MxNjYxNWIwNzI0NWZhNDcxNWU4MDY3M2M0N2U3ODk5YjIxNTM5IHJlbGVhc2UyMy1tYWludAorMzQ4OTQgYzIyZWVjODA3MjI0NzQyZDNiMTM4Mzc4Y2NjYzM4YWViYzg0NTBiNCBsZWdhY3ktdHJ1bmsKKzM0ODk1IGNhOGE2OTk2OWYwMzhmNTA2MTYyMDViOWFlNTM4MzIzNTU1OWNkNTQgbGVnYWN5LXRydW5rCiszNDg5NiBlNGZiNjE2NDE1OGM3ODRkOTNkYzc4ZTMyNDUyNjJhNzYyZWJkNTJmIGxlZ2FjeS10cnVuaworMzQ4OTcgYzliYmM5NjdhYzlmNjA5ZjkxZDY4NzU3NmY3YjZhZTMxZWI0NWRlYyBsZWdhY3ktdHJ1bmsKKzM0ODk4IDg4ZTgwYTA0MzI4YTM4NDdjZTBmYTk1ZDViOThjNmU2MjMzMTIyNzYgbGVnYWN5LXRydW5rCiszNDg5OSA1Y2MxYTQwMGEwMmMzMTFhNGYxYzU5ODk3OGNkZjVmM2VhZjM3YzM0IGxlZ2FjeS10cnVuaworMzQ5MDAgMzgxMTQwZTdlOWQ3NzE1Y2ZlNzFmZjdiNDlmNTE3Y2ZiZDdlNDIzNSBsZWdhY3ktdHJ1bmsKKzM0OTAxIGVlYWEzNjYwNjcxY2I2YWQ2OTZjMDNiYmMzOGIyOGMzOTUxZThhNWUgbGVnYWN5LXRydW5rCiszNDkwMiAxYmJjMjA4NWYyMTNiMGJhNjQxMjg1YjlmMWE2YTU1ZDE2ZmEzMGRmIGxlZ2FjeS10cnVuaworMzQ5MDMgMjFhMjdjMjFhMmM1N2FlM2I2NzBmMWY3OTE1NGQ5Njg2YzlkNTA0OSBsZWdhY3ktdHJ1bmsKKzM0OTA0IDQ5NDJhMGI2M2M4Y2NmMWZjNWQxMWU3Y2JjOTdiNmMxN2MwY2U2MjAgbGVnYWN5LXRydW5rCiszNDkwNSBlNWQ5N2FiNzEwYTIyNWQzZTRjZjE2YjhjZmY5ZTNjZGU3MGM5NjVmIGxlZ2FjeS10cnVuaworMzQ5MDYgYzk5NjIwY2Q5YzY1NTI5NTlkZmNkODY0OTU5ZjBjNDg0NTM5NTc1ZiBsZWdhY3ktdHJ1bmsKKzM0OTA3IDEwYzRjYzM1MmQxM2E1YmU0ODI2MDhmM2UxNTlmYmU3Y2QyMmQxMjcgbGVnYWN5LXRydW5rCiszNDkwOCA0N2VhYTM4YjI5Y2JmNjU1NzllMGJjOWU3OTY1MTM5YjUwZWY4YTY4IGxlZ2FjeS10cnVuaworMzQ5MDkgNzRjMTU0NzA4YjBjYTE5Y2FkZjc2NWMwNTExODgzYjY1YmM5YzYwMyBsZWdhY3ktdHJ1bmsKKzM0OTEwIGYyODk4MjA2MGIyMGMwODYzYTA1NDlmZTRmMTVhMmU4Nzk5ODUzYjggbGVnYWN5LXRydW5rCiszNDkxMSBmMmUwZDYzMGNmMzlmZTc0YmI3NWUyZmUyZTRlY2Q2YTEzNmY1MzUwIGxlZ2FjeS10cnVuaworMzQ5MTIgYjJhMGNkMmU5ZDU1MTEyOGQzZGI4YWZiM2Q1NWNhMWMwNmViMmQ4OCBsZWdhY3ktdHJ1bmsKKzM0OTEzIGM4NWE5ZWM1Nzk2Y2QwOWM5NmFiNjFmNTNjYWE1MjE4NjBkYjRkYTMgbGVnYWN5LXRydW5rCiszNDkxNCAyOTJhZDEzNWNlZjE0NjIwYWI0YjhmNTA4Y2MwY2EyNjI2Zjc5Yjc3IGxlZ2FjeS10cnVuaworMzQ5MTUgZTQ2ODJhZjdhZWE5ZWM1MmQzMjI5ODZlMmZmOWY4MzRiZjBhMzY5ZCBsZWdhY3ktdHJ1bmsKKzM0OTE2IDIyZjA5YWIwYmFlOTQ2YmJhZWJiZTkzODkyYzM0ZjYxNmYzYTczYTUgbGVnYWN5LXRydW5rCiszNDkxNyAxYWQwZGY4N2VkNmMyZTUwMDg4MjU0MDUwMzU5Y2FmMjA3Y2QzNDcwIHJlbGVhc2UyMy1tYWludAorMzQ5MTggN2E2ZDA4MTRiNTYxZWQxYWRmZWZlMTk4N2M5Y2QwNGM2N2JmODI4NiByZWxlYXNlMjMtbWFpbnQKKzM0OTE5IDIyOWJiOWYyZTk2ZjNmZTE1YTExYTUxZTNiZTQ1NWFhNTQ3Y2E3MWEgcmVsZWFzZTIzLW1haW50CiszNDkyMCBkNmNlYTIyOGZiMjU5YmE5MjM1MjBiYmYzNDI5M2I2OWRiYmVmZGUxIHJlbGVhc2UyMy1tYWludAorMzQ5MjEgNjg0NTY5NzM1M2EzMTUyNWE4YTAyNTE4MGVlODE2NGYyNTNhYTYxMCByZWxlYXNlMjMtbWFpbnQKKzM0OTIyIGQ5ODExNzU5ZTdkZWJkZTAxYTJhMTg0ZmMxOGI5NmZmNWQ2MWUwNzEgbGVnYWN5LXRydW5rCiszNDkyMyA1MDQ5NDNjODkxOTNkYTBkYzEzZmMwN2Y2NjBkYmRmOTgxZjQ1MjlmIGxlZ2FjeS10cnVuaworMzQ5MjQgNjNjYzlmY2QyODVlNGIzZmE1NDEwOWNmM2I0YTk2YzBjNzI5NTViYSBsZWdhY3ktdHJ1bmsKKzM0OTI1IGU1MDY1OGIzZGYwZTcxMmI0Zjk2Nzk3MTMzOGI4N2Q3ZGM3N2U4MjcgbGVnYWN5LXRydW5rCiszNDkyNiAwMmViZTM0NTY1OTUzMTgxM2NiZDY5NjhkZDJmOGVlMDZlNTkwZTJlIGxlZ2FjeS10cnVuaworMzQ5MjcgYmZhMDM2OWQ2NzYwYjIyOGI0MzlhYTI4MTVjYTVhMzBiYzA1MjlkOCBsZWdhY3ktdHJ1bmsKKzM0OTI4IGRkNzg5MDcyZDk0OTAzMGU1NmQ1MzI3YzU1NmVlZDBjOGJlYmIwZjUgcmVsZWFzZTIzLW1haW50CiszNDkyOSBjYmJmZDQxMjdlMjQ3NTRlNmM1N2ZjMmNmNzY2NWVkYTEwZjZhZDEyIGxlZ2FjeS10cnVuaworMzQ5MzAgMzc3MWZmOTlkNWYyOGFkMDEyYTIyMDJlNzM4N2U5MmQzNGZhZDZkYSBsZWdhY3ktdHJ1bmsKKzM0OTMxIGYzODhlODNmOGU0MzM4ZTE3NWYyNzUzZWM4ZWU1YzkxMDNmZDdkOTIgbGVnYWN5LXRydW5rCiszNDkzMiA5NDkzZGQyMjJmYmI5YjA4NmIwM2U5ODliYmI1YWE2MDU0NzNiMTNmIGxlZ2FjeS10cnVuaworMzQ5MzMgNWU5Nzc1N2Q4N2U3MzAzN2YwNzYyYzNkMWE4Mzg2YjBhOWY2ZWJjMCBsZWdhY3ktdHJ1bmsKKzM0OTM0IGMwNmI1NzBhZGYxMjJiYmU4YzIxMDg1ZTE2MTk5N2NjMzYyNGQxNzMgbGVnYWN5LXRydW5rCiszNDkzNSA0ZDA3NTZhMTNmNmI5ZTRjOGVkYjcxYjYyN2RlYTRhMzk3YTQxZGU1IGxlZ2FjeS10cnVuaworMzQ5MzYgNWIwMzVlNmU0NGRjNjhhZWFjZGQ2ZTFkMDY5ODUyMjg3MWE3MGI3ZSBsZWdhY3ktdHJ1bmsKKzM0OTM3IDM2MDdmMjMzNTJiOTg1OThiNjU4MGJlMGQ2ZDI5NDdiZWU0MTg5YjggbGVnYWN5LXRydW5rCiszNDkzOCBkZWYyNzUyNzcyODA2MWE0MTlkMGU4OThhN2M3OWE4OGM3NDM0ODU0IHJlbGVhc2UyMy1tYWludAorMzQ5MzkgODk3NjdjMThjNjE2MDhiNmViOWRmNGZiYzAyM2Y5MWI5YjA3ZTVlNCByZWxlYXNlMjMtbWFpbnQKKzM0OTQwIDg4ZTAwMDIxYWNmZjZlYjhiY2ZlYmEwODFhYjM2MDYzYmM5MzVhMjAgbGVnYWN5LXRydW5rCiszNDk0MSA5NzA2MmQzNjU4ZmU3YzcwNzkyYmMyNGFmZmJmODdjNjY0NTYxMjg5IGxlZ2FjeS10cnVuaworMzQ5NDIgMGY3MDljZWE0M2M3MTZmMTg5OGU2NWI5MzI5NzYxYmIxYjQ4OTNmMyByZWxlYXNlMjMtbWFpbnQKKzM0OTQzIGVhM2M2ZjZlNDY3OTFjNmZiMmU3OTZkNzJjMGZiMGIxNmUwNmY4NjcgcmVsZWFzZTIzLW1haW50CiszNDk0NCBlZGU1MThiMGI5ZGE3OWY4NTQyZThlZWFhYWZjM2U4MmQxNGZkNGU1IHJlbGVhc2UyMy1tYWludAorMzQ5NDUgYzI5NjdjZTdjMDFlNDUyNjg0NjJhMDVlNzllZjMwNDBmMmU4ZTRjZCByZWxlYXNlMjMtbWFpbnQKKzM0OTQ2IDk1NWNiOTY5Nzc2N2ZlMjk5NTE3ZTVmMTc4NGY1NWY0ZTMzNTQ1NTggbGVnYWN5LXRydW5rCiszNDk0NyAxYTk4OGEwNmJkMzM2Yjc2NTY2ZTA2ZDk0MWY0ODMwZDRjZDVmZmNlIHJlbGVhc2UyMy1tYWludAorMzQ5NDggYjgwYTNiODJkY2Y5ZTJlNDI3ZDVmZDg0MzAzOWRkZDFmZTg2OTY1NiByZWxlYXNlMjMtbWFpbnQKKzM0OTQ5IDM5NTA4MmRjMjE5NDI5ODkxZGQ3MTY0NThmYWQxOGNjODUxZjJjYzEgbGVnYWN5LXRydW5rCiszNDk1MCA2NDE2NmVhZjYyMTI0YjAxMGNjZmU5MjRmYmZjOWU1MDZiY2NhMjMyIHJlbGVhc2UyMy1tYWludAorMzQ5NTEgYTU5MjJiOWQwMzc5YTA3Njg1MDQzYzIxMzkzZjA4ZWUwNGY0YmJiMyBsZWdhY3ktdHJ1bmsKKzM0OTUyIDM4ODU1ZmRhNDI4YTY4ZDYxMjk3NDIyMmJhNDU3YTZkNzFhMjhkOTQgbGVnYWN5LXRydW5rCiszNDk1MyAyYjBjNzg1YWIzMGE2ZTIyN2Q5ZDA1NjBhZjQ5YWQ2YjIzNTlkOTIxIHJlbGVhc2UyMy1tYWludAorMzQ5NTQgNjdiOWRlNjJlY2I4NjkyNzcwMWMxZmMzMzMwNzA5OTc5ZGQ5YTUxZiByZWxlYXNlMjMtbWFpbnQKKzM0OTU1IDlhM2ExNmI4MmRjYmJlNGEwYmE4MjYyYTVlNmVhMGFkM2ZiNWMxMzEgcmVsZWFzZTIzLW1haW50CiszNDk1NiBmYjc1OWUyODFhMmYyMzAwODUyNDFkNGFlYjM2NDdiMzM4Zjg4ZGRhIHJlbGVhc2UyMy1tYWludAorMzQ5NTcgZDA5OWVkOTMyOTkzZjkzZDkxODVhMTY1MmE2MDRhZThlOWQ2OTE1YiByZWxlYXNlMjMtbWFpbnQKKzM0OTU4IDVkYzU3NTdiMTE4YWJmM2NjZjY3YTU3OWJiZWY3YmYwZWVhNWIxYjIgcmVsZWFzZTIzLW1haW50CiszNDk1OSBiMjIwYjU5MGUyZWE4ZWE3NDBjYzdiZjlmMzFjYmE3ZDUyYWIwNWUxIGxlZ2FjeS10cnVuaworMzQ5NjAgYWNiYzc1NjNhOGU3ZWRmNzM1YzZmNDY4MzA4ZjQ3MWM0ZDYwMjY3OCBsZWdhY3ktdHJ1bmsKKzM0OTYxIGE2ZjM0ZmJhOTM3MDY5ODdjN2FhOTBiZTc3YWMwNGEwNDRkNTkxZTMgbGVnYWN5LXRydW5rCiszNDk2MiA0ZWRmMjAwYTgxMTg1YTQ3ZmI3NDYxZjQzZWM5YmM0MzY3YWU3NmJiIGxlZ2FjeS10cnVuaworMzQ5NjMgZjBhZTMxM2EyYWM4NjQ3MmQ0NGIwODY0YjhkMWE1OGE3YTUzYjBmZSByZWxlYXNlMjMtbWFpbnQKKzM0OTY0IDNjNGMwODc0OTRlMGNiODg0MTkwNDI4MjA2OWE4YjJmZTY0ZTE2MzQgcmVsZWFzZTIzLW1haW50CiszNDk2NCBhOGYxMjg2ZjIxNzEyOWNkYjUzZTMyMGVlMTI1ZDJjMmM4MGUxMzc3IHJlbGVhc2UyMy1tYWludAorMzQ5NjYgMjhlYjAwNDZjZThhNzYzYThkM2FkZGVmYjNkYWYzYjRhZmMxNzRmYyBsZWdhY3ktdHJ1bmsKKzM0OTY3IGRmOGU4NzljOGQ3NmQ1MGNlZGRmMTJjYmMxZGU3NzY4YjI5Y2Y0YmQgcmVsZWFzZTIzLW1haW50CiszNDk2OCA5YzZhNTFkODc5MzAyOTQ0NjZmZWE4NjZlYzIzOWNjYjNmMGJkNjg5IHJlbGVhc2UyMy1tYWludAorMzQ5NjkgMWNiODdkYWQyNjNkNzdkZDQwYzJjZTRlOTg2NGNkZDkxOTVkOWNkYyBsZWdhY3ktdHJ1bmsKKzM0OTcwIDhlYTNhODJmOTEzZjZjYTNjMDkyNzViNGI1Zjk0MzU4YTUxMDUzZmEgbGVnYWN5LXRydW5rCiszNDk3MSBjZTE2NWJlOGM2Yjg5ODZiZDFmMTI1ZTFmNGQyOGRiN2VjMWUyZTY5IGxlZ2FjeS10cnVuaworMzQ5NzIgMzUzYTE2MDMzZjZhNGVkNjk1ODkwZTUxOTZlOTVjMjcxYjkxZDI3NyBsZWdhY3ktdHJ1bmsKKzM0OTczIDM1MzkzYTkyYWNkMWQzNzExMzQyMzIxNTUxYWQ3ODQyZWVmYjM2ZDUgbGVnYWN5LXRydW5rCiszNDk3NCBkZmQwMTE0Y2Y5ZWNlN2M2MjBkNDEyZjc2NjM1ZGFkMjczYmZjYjUzIGxlZ2FjeS10cnVuaworMzQ5NzUgZTExOGU0ZThlMjI0OGU0ZDY1YjNkNzNiZTU4YTkxZTU3NDJhNjZlOCBsZWdhY3ktdHJ1bmsKKzM0OTc2IDg5MjExNmE4ODZlMDA1MWE4ZDMyYWZjM2EyMzMyZDZhMDNhNGI5MmMgbGVnYWN5LXRydW5rCiszNDk3NyBjMTQwMjE3NmUxYTY1NWIyMzVmMDVjOWQwMzMxNWZhMDk0MTkzOTU2IGxlZ2FjeS10cnVuaworMzQ5NzggZjYwNjRmOGMxNDYwNGUzY2JmNzgzM2U5MTE1NmM5MzBhMzg1MDFhYyBsZWdhY3ktdHJ1bmsKKzM0OTc5IGE4MDc3MjZkZjRiN2Y5NTRkZGVkYjFmM2FmNjY2ZmI1YTVmNDFjZTQgbGVnYWN5LXRydW5rCiszNDk4MCA1NTJhNTM1NWQ4YThmNjM1ZDE3YTI4NjU3ZWI3MzczZWYxZTZmNTQ3IHJlbGVhc2UyMy1tYWludAorMzQ5ODEgNzA2Yzk2ZTE1MWEwODlmMjQ4ZjBmMjdjZmU2ZGVlYWM5MDMyNDc1OSBsZWdhY3ktdHJ1bmsKKzM0OTgyIDJhOGY1ZWI4ZDgzZTEzMDJkNTRjNWFiZjM2NmEzZmUwMmIxZDBmZjUgbGVnYWN5LXRydW5rCiszNDk4MyBiZTg4MmE5YTNkNWI1MjIwZGRjZTAyM2FiMDExMzA0NzBmZWE1NzVjIGxlZ2FjeS10cnVuaworMzQ5ODQgOTFiNTlmMmZlZTdjMWYxMTZlYTM2NGVjNmQxMmRlNzIyNjM1ZDJlNiBsZWdhY3ktdHJ1bmsKKzM0OTg1IDQ3MTI5MTUyY2I3MDEwYTdjYjY2NzU0NzBlNDkxMTA1MWUxMjc3ZDMgbGVnYWN5LXRydW5rCiszNDk4NiBlZTUzMjgwNTQ2Y2U3ZDMzNDlmOTMxNjg0YmUzMWRjYTQ1OTRkNzM3IGxlZ2FjeS10cnVuaworMzQ5ODcgMWUxNmNiOGIwMjIxOWU2MzY5YWQ4YWNjZmI1MzRjNDc0MjFmYzM1NSByZWxlYXNlMjItbWFpbnQKKzM0OTg4IGNjN2YyOWFjMmU5ODE2NDFmYTY4NzlhMDgxNzRlZjdmOWMwOTQ1MjcgbGVnYWN5LXRydW5rCiszNDk4OSA5MDU2MGE5Y2YzZThiOWExZjcwZjUyM2VjNTM2YWQyODk0NTk5ZDZhIGxlZ2FjeS10cnVuaworMzQ5OTAgMGJlOTI1ZDE2ZTI5M2ZkZmYxZDNiZGIyNjc5ZjY0N2QxNTZhNjliNCBsZWdhY3ktdHJ1bmsKKzM0OTkxIDUzYWUxYzNkNGE3YzE4NTY1YTk4NDQ0NDJkZDI3ZmNlYTQ5OTAwMDMgbGVnYWN5LXRydW5rCiszNDk5MiAwZmZiNjI2ZDc4ODgxZmU0MjQxOTc2OTI1MGZlZWNhOWE5OTQ3YmE0IGxlZ2FjeS10cnVuaworMzQ5OTMgYThlM2JiMjNmNWE4YjdjNjIwYzViN2VhMmIxZmMyYzMyNjE5MTdkZiBsZWdhY3ktdHJ1bmsKKzM0OTk0IGUyNmZkYTlkZTY3ZjI4OTQ0ODQxZjIwNjBmYmQ2MmNiY2RiYjI2YjUgbGVnYWN5LXRydW5rCiszNDk5NSA3YWIwODBiYmQ2MGE2ODVjMzE3ZmY3Zjc5NDFhNTRhNmExYWRkMWRlIGFzdC1icmFuY2gKKzM0OTk2IDU1ZDQyYWFlYjBlZWY4NjYzNTk2OTUwMzU3NWM5ZGNjYmU5YTlhNzAgYXN0LWJyYW5jaAorMzQ5OTcgN2NjMTExMjcyNzNlN2U5NGM3NGJhNzk4YzYxNDg5NWUyNmRkNDVjYSBhc3QtYnJhbmNoCiszNDk5OCBlYTZiMTlhMTBhMDE2NDAyNzg3ZGIwMWEwNGM4MzVmNTUxN2M2ZTgwIGxlZ2FjeS10cnVuaworMzQ5OTkgMjljMWI3YjZmZDdlNTc5MjU3OGViZjkyMjVhYjM4NTgxNzM5ZTQ3YSByZWxlYXNlMjMtbWFpbnQKKzM1MDAwIDI1NTE5ZDZjOTdiODZlNzM2OGY1ODAyZjg1OTU3NDUwMTJhZTYzMWYgbGVnYWN5LXRydW5rCiszNTAwMSA4MDJkOTM3ZjU5NmFiZWIwNGIzMmU5MWZjN2VmYTFlMTU2NmJkYmM4IGFzdC1icmFuY2gKKzM1MDAyIDFhZTI2Nzk5NGZhMDM1MGFhNTg2NWM1MmFmMDE0ZjcxMzc3MmY2ZjMgYXN0LWJyYW5jaAorMzUwMDMgNmExMTY5NWZlNjk4ZWIyYzg0NGEyNjcxYTZiNzdlODIwZTU5YzU2OCBhc3QtYnJhbmNoCiszNTAwNCAwOTA4MTZiZDhiYWMwMDFkNjUyYmM5ZDdhOWM0MzY0YzQzM2ZiOGJkIGFzdC1icmFuY2gKKzM1MDA1IDI0ZDM0YWI0ZWY3NTQ5YzJhN2MxNTI2YTJmMmU1MzFkNThiZWU3NDQgbGVnYWN5LXRydW5rCiszNTAwNiA4YzEzYWI2OWJhNGYxNDdhNWNkZWYwNGQ1ZmRmN2M2MWFlM2JmZmYwIGxlZ2FjeS10cnVuaworMzUwMDcgMWRjMjY1OWVkOWZjMzljY2VlNDllOGI0NThkNjcwMmYzNTk5NjJkOSBsZWdhY3ktdHJ1bmsKKzM1MDA4IDZjM2MzYjc3MWFiY2ZjOWU3YmRmY2Q4ZTI1MTFhY2NkNDFhZjI0NjYgbGVnYWN5LXRydW5rCiszNTAwOSAzMWEyODA5MDI0ZjUyMWI0YTY0MDdkNTFjMDJhMzcxZTViY2I2NjU0IGxlZ2FjeS10cnVuaworMzUwMTAgNTc1NTMxNTdjMTk2NmMyNzliZDIzYTExZDI5ODYxYjc5MTBjMjJjOSBsZWdhY3ktdHJ1bmsKKzM1MDExIDMxNThkYzE1MzJmYTE3M2NlMWEyYzA5ZTQ0NzZjMzU2ZGYyOTgwNmUgbGVnYWN5LXRydW5rCiszNTAxMiBiODdkMTk5OGVmMDAwNGQzZTU0ZDZiNjk1OTIzNGUyZWIwNDQ2NWQyIGxlZ2FjeS10cnVuaworMzUwMTMgOGI2MmY0MTk0YTdlNzkzNjk4OTBiYzU2NWU0Y2Y0ZWVmZDk2OTYyNCBsZWdhY3ktdHJ1bmsKKzM1MDE0IGQ2ZDFlZmRjYzVmZGQ0NGIyNzBhMmQ4NTYzYjBjNjYzOThmNmU2NTkgbGVnYWN5LXRydW5rCiszNTAxNSAxMzlhNmI2YzE1MGE1OWZiODdmNGQzYTEyZmYyYmY3NzdlMzllNDg3IGxlZ2FjeS10cnVuaworMzUwMTYgNzM2Njg3NWEzY2Q3MDdjZmFkZjRmMjFkM2QyMDVlNDhkNDQ3OTliYiBsZWdhY3ktdHJ1bmsKKzM1MDE3IDM4OTQ2NTRiNDg0OGUxNzU2ZTIyMWE4MGE3ZThkNjQ5YTcwZGJhNzQgbGVnYWN5LXRydW5rCiszNTAxOCAxYzBlNGE1MjY3M2FhNTgzOGQyYTcyMTc3YjRkZTk3YTAzMWRmMDQ4IGxlZ2FjeS10cnVuaworMzUwMTkgZmQ0Y2JiZWFjZTc5ZWNjNDFlZGQzMWIzMzE2YjJhNTc5MzU3Nzc4OSBsZWdhY3ktdHJ1bmsKKzM1MDIwIDJjZDk2NjI5ZmU4ZDE0ODBkMjEzODcwMjVmYzdmZjYyOGE4OWI5NGMgbGVnYWN5LXRydW5rCiszNTAyMSBlYzRhOTlkMTRjYTQ2MDRkMjQyZjc1OTY1MzQzNGU3Y2U2YjM4NzQ1IGxlZ2FjeS10cnVuaworMzUwMjIgODY4Y2FjZTIyMTlmZjcyZjhlZTVjYTY2YjlmZWQwMGJhNWQ1NDVkYyBsZWdhY3ktdHJ1bmsKKzM1MDIzIDhlNzA4OTJhOWYyNWNiNzQwYjJjODUyNGNlMjM1MDM2MDNkZjlhNWEgbGVnYWN5LXRydW5rCiszNTAyNCBjODU0YTFmMmQxOWI4MTQyMjc0ZTBkYTc4YTA4MGI2OGI4Y2NlZTVjIGxlZ2FjeS10cnVuaworMzUwMjUgMmMxYmEyNDFiM2MwN2EyOGMwNDU2NTMzNzA3ZjlhZmI4NTc2MzVlMyBsZWdhY3ktdHJ1bmsKKzM1MDI2IDI4ZDAwYjFhODQ0NzYwNjQwZTU4YmRkYjcyMDdiYTI1OTg0ZGExYWMgbGVnYWN5LXRydW5rCiszNTAyNyAyODRkYjJhNWY2MjBiMDg1ZmYxYTQzMThjOGUzMjEyMjFkOTgyZjNhIGxlZ2FjeS10cnVuaworMzUwMjggMjZlY2E3MDhiNmRkNjc1MjQwZjIxODE1OTIxODVhMDE4ZTlmMzcxZiBsZWdhY3ktdHJ1bmsKKzM1MDI5IGFkM2ZhZjUyZTE5ZTQwM2FkZWIxMDAwMmExMGUyM2UwYjI4YTdkNGQgbGVnYWN5LXRydW5rCiszNTAzMCA3ZWEwNjdkNzQ5YTAwNjYwNGI0MzBjZTE5NTgzYjQyYjYyOGU4YzNmIGxlZ2FjeS10cnVuaworMzUwMzEgYmY4NDAyYTU2ZmE0MjdiMjU1MWYzMTNkZTAyMzNjMzYxYmRhMzc2MSBsZWdhY3ktdHJ1bmsKKzM1MDMyIDc0YzA3M2JhNmMzYjJhNDIwMTBhZjlmMjEwNjkzMmEwYTgwNTRhMTEgYXN0LWJyYW5jaAorMzUwMzMgZTQwMWMwZjI5ZjUwZDg4YmU0MGQ0Mjg3ODk3NWZhNGJhMjEwOGFlMiBsZWdhY3ktdHJ1bmsKKzM1MDM0IDM4YjIzZTZkNGM0Yjk2NGZlY2Y2NmY2Mjg5NTJkNTQ5YjgzOTYyNzggYXN0LWJyYW5jaAorMzUwMzUgZTM0NzRlZDgwYTVlZjdhMDA1M2VlYzAwNzFkZDMzNTMwYTM2MzE0MCBsZWdhY3ktdHJ1bmsKKzM1MDM2IDZkNDE4ODAxZjE0MmRmZjE5MzFlZTRhNDUyYWQyNjg2NjNkMjMxYzQgcmVsZWFzZTIzLW1haW50CiszNTAzNyA3NDQzMjNiNzY4ZjBkNGFlOTkxMzVmMDhiOGI1NDY1YjY1YjZkYWY3IGxlZ2FjeS10cnVuaworMzUwMzggYzUzZGFmMzViYmNjYzBhOTVhYzM3YTNkNDcwYmY0OThhNDMwNWNiMCBsZWdhY3ktdHJ1bmsKKzM1MDM5IDg3MzdiYjQ0ZTIyZmE4ZGJmNjNkYzdiNmNjMWE3OGRhNzlmNzU3ZTEgcmVsZWFzZTIzLW1haW50CiszNTA0MCAwNjFlZmZhYmFmY2JkN2Y0NTE0MjVjMzlmMjlhNDMyNmM1ZmIxOTIzIGxlZ2FjeS10cnVuaworMzUwNDEgZGNkNzQzZTc5Y2UzNTZlZDcwOTRiNDE5NTI4MDJlY2FhOWZiZjk5YyBsZWdhY3ktdHJ1bmsKKzM1MDQyIDMzNjhhNGQyNWYxNzdkZWU2MThlNzRjNTgxNTM2ODAyOThjNWY3ZDIgcmVsZWFzZTIzLW1haW50CiszNTA0MyA1ODNkNWFhODEwMWNlM2E4NzUwYjY5NDBjNjY4YzFlYTQ4NTljOWJmIGxlZ2FjeS10cnVuaworMzUwNDQgNWViOWUyNWU2M2ZkNWVkODY0MGFlYzE1OTRhNWJhOWMwYzE3ZjAwMCBsZWdhY3ktdHJ1bmsKKzM1MDQ1IDBlYThlYmViNmFhMmI4YTU4ZTY4ZWQ0MDEzMDg4MmNjMDNjNTI1YWIgbGVnYWN5LXRydW5rCiszNTA0NiA4MDk5NzhjMzA0YmU0Yjk2YzY4NzMxYmI2YmMyYmQ2NjUyODBjNmJjIGxlZ2FjeS10cnVuaworMzUwNDcgZmZmMWU4NWQxOTVjMTc1NTBiM2U1NDE0NGEwZTBjNGM2MDI3ZDY1NyBsZWdhY3ktdHJ1bmsKKzM1MDQ4IGNkN2I3MGE0YzQ0MDIxMGEwNTA2ZWYwNWU2NzcwMTE0NTQ3YmJiZTQgbGVnYWN5LXRydW5rCiszNTA0OSBhNTMxOTBiMzg3MjdiNzcwNjQwMDM4MjYxYWMxMTVmNWVlN2JhNWY3IGxlZ2FjeS10cnVuaworMzUwNTAgYjY3NGFiNTgwOGJhZmZiMjYwN2FiOWNhZWU4OTRlNjFjYzM5ZDcwMiBsZWdhY3ktdHJ1bmsKKzM1MDUxIDA5OWE0YTJmMWY3N2NhZjliZTllYmZiZTU0MWY5MWQzY2NhNjVhNzAgbGVnYWN5LXRydW5rCiszNTA1MiAzMzI5NDIwNmQ1MzlmNTlmMmIxNTY0NjRiMWQ3YjdlOGQxY2EzOGQ0IGxlZ2FjeS10cnVuaworMzUwNTMgY2E0Mzc0NjYyNjMyNDc1YmU3Y2MyYzM5NGVkMDJiZDE0MTQ4Mjg5YyBsZWdhY3ktdHJ1bmsKKzM1MDU0IGVkNjg5ZDBjNjNjMTNiMWI0YWI0MDgxZjgxZjJhM2JhNmU2YzIxZTIgbGVnYWN5LXRydW5rCiszNTA1NSA5NjcyMjM3N2Q0MTJjMjE0NTU2YWI0Zjc3ZDA2OTk0ZGZhN2E4ZWIzIGxlZ2FjeS10cnVuaworMzUwNTYgYzY3MDFkODRhM2ZhMWIzZjdlMGZmNGE0MzRmNjAzNzAzYTdmYzFkYSBsZWdhY3ktdHJ1bmsKKzM1MDU3IGFmOTQ2ZGI2N2FmYzQ0ZDRiYTZhZTI1ZDYwY2ZiMTQzNzJjNjE2N2MgbGVnYWN5LXRydW5rCiszNTA1OCBiNDUzMmMyNDZhM2EwZWM0MTNjY2ZmZjg4ODhmNjNkMzlmODFjNjMyIGxlZ2FjeS10cnVuaworMzUwNTkgM2NjMGQ4ZmQ0ZTJiNjgxYWNjODE4M2Y2MzVjYTI2MDI3ZTQ0NWZjMCBsZWdhY3ktdHJ1bmsKKzM1MDYwIDhjNzA5MDkwOGNlY2ZmNjkwMjRmNWVlNTI4ZjI4ODM1MDZhYjViOTEgbGVnYWN5LXRydW5rCiszNTA2MSA0NzdmMGEyNTIxNTBkNzViM2U1MTdiMWE4YmVkZmRjM2Q4NGY1NmIzIGxlZ2FjeS10cnVuaworMzUwNjIgYTZiYzEzMWFiNjE4OGM4N2M1NjJlOTYyNDYyODVlOTI3ZTVmMTllYSBsZWdhY3ktdHJ1bmsKKzM1MDYzIGI2N2NhM2Y2ODhmNzhiYTIwMjIwMWMyZTYzODE5MDg2ZmU3MTQ0N2EgbGVnYWN5LXRydW5rCiszNTA2NCAzODUxNDg4MmE1YzRjNDVkMGQwNGZlZTE4ZThmZjdkNGEyNjY4OWNhIGxlZ2FjeS10cnVuaworMzUwNjUgZjY2OTM5ZjM4NTIzNWQ2NjRiNjg1OTk4NzZiYzRkNmRmMzkxM2I3YyBsZWdhY3ktdHJ1bmsKKzM1MDY2IDBiYWEyNjYwYTU2OGJmMWY3MGJiOTNiOGExYmViZDY5ZWU3NDQyOWYgbGVnYWN5LXRydW5rCiszNTA2NyA0MTZhNWQyNWNiYTY4ZDJhMTc2N2M2NjY0ODkwZmUwZWMwNjY3NjQyIGxlZ2FjeS10cnVuaworMzUwNjggNzZlZDhhNzg4MzkxODU3MzdhMTQzNDAwZThiNTg1OTcwOTY5MDZmNyBsZWdhY3ktdHJ1bmsKKzM1MDY5IDQ3MjdjODFkYjk0OTkwODdlZmI5NjdmMzBlNmE1ODU2ZmJiZjI3NGUgbGVnYWN5LXRydW5rCiszNTA3MCA2ZWE1Y2NmMDY1YmUwNDJhYzYzZWRmMDY1NjVlOGQwZGE0ZjY3YTRkIGxlZ2FjeS10cnVuaworMzUwNzEgNGFjNmEwMjIxZjdkNGI4N2RjOTc4OTk0NWY3OWJmM2VmNjJkMTIyMyBsZWdhY3ktdHJ1bmsKKzM1MDcyIDA1NDIzYzMyNjFkNDE1ZjU4NjcxNDBjYTE0NjVlOTEzY2FlYmFmNjEgcmVsZWFzZTIzLW1haW50CiszNTA3MyBlOGRmZjExZTkzNTg3OTY1ZGY0OTk0NGM4OGRlNWFiM2I2YTA0MGU3IGxlZ2FjeS10cnVuaworMzUwNzQgNDkxNWZiZWM2MDhmNGYwMzU1ZGMxODY0YWViZThjMDYyOGQwMjdhZiBsZWdhY3ktdHJ1bmsKKzM1MDc1IGZkNjQ5N2NmNzIyOGU4MjY5OGRiNDhkNDdlYTcxODNmMDUwYTI0MjQgbGVnYWN5LXRydW5rCiszNTA3NiAwYzFkMjA2MmRlZTM1MzkxNDRhY2I4N2IyYzJjYTE5YThlYjY5N2YxIGxlZ2FjeS10cnVuaworMzUwNzcgYTBhZTJkOWRlNjkxMTFkMDYwN2ZkY2NhYWNkY2E0ZDExMGM3YmM3NyBsZWdhY3ktdHJ1bmsKKzM1MDc4IGJiM2MzYzk4Y2MxYmFiYTEyOTA2MzM3MzVhYTY2OTZlNTJhM2JkMWIgbGVnYWN5LXRydW5rCiszNTA3OSBmMGUyYTg1MzY3NTlmZGMxMjBlNDM0ZTc2MWU2OWNiZTIyN2Q4MTVjIGxlZ2FjeS10cnVuaworMzUwODAgYTBiMTc3MzI4MzVhMjBiMjQ4YWM4NWVmY2E5NDkxYWE1Nzc5ZjcwNSBsZWdhY3ktdHJ1bmsKKzM1MDgxIGEzNDBjNTBlOTI0YTM3NGNhMTgzMWJiZDkwYWNlNjExNjVkMjIwNDQgbGVnYWN5LXRydW5rCiszNTA4MiA1NTQxMmE0M2QyZDNlMWM0MjEwNmEwZTk3NGMzODI1NzY4MzIyY2I2IGxlZ2FjeS10cnVuaworMzUwODMgZWFhMWE0Yjc0MzI4N2JiY2ZiNmM0OGE3NTJlMjM1ODZkZWU4MWIyMiBsZWdhY3ktdHJ1bmsKKzM1MDg0IGEzMmFhNzkwNjI1MTQ5NWM0MWIyODQyZWU5YTYyY2UwYWVkOTU0NTIgbGVnYWN5LXRydW5rCiszNTA4NSBlZmUwNzUyODk3OTM1MGVmNWEwN2UwNTMwZjIxMGEwNTU4NDdlYTYyIGxlZ2FjeS10cnVuaworMzUwODYgZWQyMDI1OWExZWE1NTdkZGE1MThkNmNkMjkwZTFmZDI1MDNjMWMxMCBsZWdhY3ktdHJ1bmsKKzM1MDg3IDc5NmM5OWYwZmEyYzYyY2M3OTFlYzM0YjBjYThlMWFmMWNmYmY4OTEgbGVnYWN5LXRydW5rCiszNTA4OCBkOGMyZGI3ODJiZGY1ZmYzNTIxMWEwMTU1NzhjODM1MWYzNzhlYjI3IGxlZ2FjeS10cnVuaworMzUwODkgOTE0MGVjZTNkYjAzNjMzOTIzODYyODhlZWM5OTYwYmFhNzU0ZGE4YyBsZWdhY3ktdHJ1bmsKKzM1MDkwIGMwODg1ODRmNTUzMzllOWFhNGE1NGZhYzZiMGZhYzRkMzY2ODVkODYgbGVnYWN5LXRydW5rCiszNTA5MSA1ODZhNDljMmM2NDFlNTM4ZTU0N2YwMjI5YTNhNDgwYjQwNDQwYTMyIHJlbGVhc2UyMy1tYWludAorMzUwOTIgMTdjYTM0NzMwM2QzZjEzZTJjMWNhM2Q1NWZhODIzYzg0NDAyNDc2NiBsZWdhY3ktdHJ1bmsKKzM1MDkzIDBmMzk0ZjQzOWFkNmEwNGY2MzExN2M1NzVkNTYzYTM2OWY2ZGJjOTYgbGVnYWN5LXRydW5rCiszNTA5NCBlYzc1ZmY4Yzc3MjEyMTlkM2M0MmFhZWFkOGZmYThhYmZlNzk5OTBmIHJlbGVhc2UyMy1tYWludAorMzUwOTUgZjE2NjkxMWY3NzhiODU3MWNkMTMxZTBhYWU1ZGFmYjJhODFjNDI0MiByZWxlYXNlMjMtbWFpbnQKKzM1MDk2IGY3YTA1YWI1MGQzYjRlMjI2NzIwYWU2ZGI1MmEwMjhmOWNkMGE2ZmIgbGVnYWN5LXRydW5rCiszNTA5NyBiMmE4MjBlMzI5YTkwYTMzZTU2Yzg3ZTZiNDZlN2VkZmY1N2U0ZGRjIGxlZ2FjeS10cnVuaworMzUwOTggNTdiYWNiMTE5YTk3NjgyNWEyZGFhZDE4YTNkMDgyMjNhOGQxYzVkYyBsZWdhY3ktdHJ1bmsKKzM1MDk5IDk5ODkxYjg4OGNmZDI5ZTlmMGViNTAxODZjMzg4NzdiNzhlOWNlMDEgbGVnYWN5LXRydW5rCiszNTEwMCAxZGY1YjZhMWRiZjZhNTQwMTQyYzFlMzYxMzRlYjBiYjg0Nzg1YmZjIGxlZ2FjeS10cnVuaworMzUxMDEgYjNkNjUzMjZjYTY2YjQ1NmRhOWMwOWY3YjBjMzVhMzIyZDg3ZGY0YyBsZWdhY3ktdHJ1bmsKKzM1MTAyIGJmMzZjMTE2MzMzMDdmZDE5NmNiMjlmOGQ2NmU4MDMwZTM1NzJjZDUgbGVnYWN5LXRydW5rCiszNTEwMyA2YThiMTIyYWViMmZmN2E0NmIyMDE5MjQzOTVkZmFlNTdjNzNkYWEyIHJlbGVhc2UyMy1icmFuY2gKKzM1MTA0IGE2Mjg0ZTlmMzBhMmU2ZWIyOTllMWIxMjE3ZDUwMzA5ZGJhMjE2MjAgbGVnYWN5LXRydW5rCiszNTEwNSBmODRkMmJjNjgzMWQ0ODY2ZjlhZjQ1ZmFjZThkZjc4MDBjYzAwYTAyIGxlZ2FjeS10cnVuaworMzUxMDcgNGU0MGVmZjFhZDE4NmVhMjg5YzhiZDg2ZDkzMTM5NWI0NzVmYzY1NiBsZWdhY3ktdHJ1bmsKKzM1MTA4IGQzMjU4ZjQzZDQ4NGJmMWUyNjRkMmU1NGQ4NTljOGM3YTkzZjU3ODQgbGVnYWN5LXRydW5rCiszNTEwOSA2MzFjZTIzZjg4ZDZhZTU5N2VlZWRiYzdlZjc1YWQyYTFhM2EzMTViIGxlZ2FjeS10cnVuaworMzUxMTAgZjM4YmQzOTNlOTU0NzViMzI5ZTJiNTk3MGU3MWMwNGQwMmFmZjRiMiBsZWdhY3ktdHJ1bmsKKzM1MTExIDlkYTk0ZTU2OWQ0OGJiZjgwOTk5OTVlNWQ2N2UxZDM2YzE1NzUwMDMgbGVnYWN5LXRydW5rCiszNTExMiBmYzU3MjAwZjcwZjI0ZGVlNGExZTlhOTY2Y2EyZDA2YjI2N2U3MTA3IGxlZ2FjeS10cnVuaworMzUxMTMgNjRhZTgzMjEzMWUxNDA3NGNjMWY3NTdiN2QxNDE1NWU3YTZlOGU3NCBsZWdhY3ktdHJ1bmsKKzM1MTE0IDQwNTUzNzVkYzA1ZWEyMTk4ZDJlYWJjNDAyN2Q4MzcyMjM5YTY3ZWUgbGVnYWN5LXRydW5rCiszNTExNSA2N2ExZWVhZDcyYmFiNGJiODdjZDVjZDNiY2E5ZTkwZGNkNjRiY2I0IGxlZ2FjeS10cnVuaworMzUxMTYgZTIwZmMxYjgwMjA1MWEwMjAxMmRjZDRjMGEwZjgxMTFkYzczNDY5ZiBsZWdhY3ktdHJ1bmsKKzM1MTE3IDQ2YWQyMWI1YmQzMzRjNDk2Mzc0ZTM1Yzg3OWY3ZGI5ZGEwYmMxMzYgbGVnYWN5LXRydW5rCiszNTExOCAwYWE2NDQxYzdmZTZkOGJmZTlmZWM0YjZlNjhkOTgwOGZmNTgxODcxIGxlZ2FjeS10cnVuaworMzUxMTkgNWJiZWM4ZjFiZjZkNjUwY2VmZmNkZmM2ZTU0MTAwZTgzNWVjN2VhMSBsZWdhY3ktdHJ1bmsKKzM1MTIwIGNiOTIzMWVmM2JiOTNlYWUzMWRmM2ViNDAwNTAyMDVmODY5MTBlNTMgbGVnYWN5LXRydW5rCiszNTEyMSA4ODdjZTM5Zjk1ZjJhZTk4MThmZGM1OWY5ZGFmN2I5NjNiOTBlM2JiIGxlZ2FjeS10cnVuaworMzUxMjIgNDA2N2JmNDgxNTRkMzc0YjE5MDQ3M2UwZjAwYmM5ZDllODJlZjdkYiBsZWdhY3ktdHJ1bmsKKzM1MTIzIGVjMGM5MDYyMTBiZmEzMjA1Mzk2Y2EzM2UxYWE1ZTg4MDI1ZGM2MjEgbGVnYWN5LXRydW5rCiszNTEyNCBhY2ExY2UxYjRiNjE0NDIwMmQ2Y2NmNTlkNjkxNDhiNmUyZTRjMTgwIGxlZ2FjeS10cnVuaworMzUxMjUgOTE2OWQ3OWVkMzA0OGUwODExNzI4ZWQwMmRhMzE4ZTk0OTU0OWU3MCBsZWdhY3ktdHJ1bmsKKzM1MTI2IGNlZjYxM2Q5MDQ5NTdjZmJlZDhmNDk4YjBkNGJmZTZhNWYwZDk3MmMgbGVnYWN5LXRydW5rCiszNTEyNyBjOWJlZDIwMDUwMGU0Zjc3MDRlYTA0ZDk2ODBlZDMzZGE4NzJjZDBkIGxlZ2FjeS10cnVuaworMzUxMjggYzg3YTdlODEzYTk5ZjYzZGVmZWU3YzdiODc1NGY0YWUxOWMzOGE4MCBsZWdhY3ktdHJ1bmsKKzM1MTI5IDM4ZGNlYzJmN2IwMzQ0NGE1MDMzOGRmOTViMTYzZDkyYWZiNjhlNjYgbGVnYWN5LXRydW5rCiszNTEzMCAzYWEyMGE4MmRlODY3ZjYwNTUxMzRlYjAwNTJjNzkyMzVjMzAzMzViIGxlZ2FjeS10cnVuaworMzUxMzEgNDBkNzI1MDc3ZGNiMGQ0OGY5ZGQxNGI0OTAwNDJjODUxYTc1NDVmMSBsZWdhY3ktdHJ1bmsKKzM1MTMyIGI5MDU3YTY3NjNkN2QwMTNjOGI0NjhlN2VhZDlmNGNjODMyOTk2NTQgbGVnYWN5LXRydW5rCiszNTEzMyBiM2Q3ZWJjMTNkN2Q1ZWVlMGU1OGY3OGUyMjM5NmE0Yjk1YmU0ZjY2IGxlZ2FjeS10cnVuaworMzUxMzQgMGZjZTViMTczYTc0MDJlZWIwZTY2MDNiYmQzNzljOTQxNzQ5NjA4ZSBsZWdhY3ktdHJ1bmsKKzM1MTM1IDI1YTgwMTY0Y2M3YWZlZjRhYWVlNGE0ZDJiY2YyMjc4OWRiYWYyMTMgbGVnYWN5LXRydW5rCiszNTEzNiA4OTdkZTkyMDgxOTliOTZkZDZiMTFjZDMwMTU1ZGI0ODExYTZjZmZiIGxlZ2FjeS10cnVuaworMzUxMzcgMTJjYzMzNjgyOGU5YjI3MTk1NmY1OGJhZWQ5ZTFlMTU2ZTZlNjhjNCBsZWdhY3ktdHJ1bmsKKzM1MTM4IDkwMDVmMjY2MmE3MGVhYjIyY2E1MDkzZDZlZDUwMjk3ZTRmYzJmNmUgbGVnYWN5LXRydW5rCiszNTEzOSA3NDA3YTI0NmRiZTAyZjgwYzkxODZlZjA4MDk0NGJlMWFhODk5OTdlIHJlbGVhc2UyMy1tYWludAorMzUxNDAgZmY5YTU0OTUzYzBiZmVhNzdlNTJkMDQzOTA1MWU0OTUwNTIzYzk5YyByZWxlYXNlMjMtbWFpbnQKKzM1MTQxIDY5YTM2NWU0N2FjMGEyMDk2NWM4MDU3NDdkMmUxZjc4MjI3NWM4ZmIgbGVnYWN5LXRydW5rCiszNTE0MiAxZGM1NDIyNWE0YzIyODk5YTY5NjU5NDI2NDE2NGI1ZTMzZjY3NTQ4IGxlZ2FjeS10cnVuaworMzUxNDMgZTcxMjRlMjY5MjVmNjRiNWRiMzFhYzQ5MmZmOTFlM2RiYzFhNjU3YyBsZWdhY3ktdHJ1bmsKKzM1MTQ0IDY5MDEwNWZlYTU5ZDM4ZmViMzQwMzFhOWJhNjk0ZDRiOThhMWU5MjIgcmVsZWFzZTIzLW1haW50CiszNTE0NSA2ZTM3NThlZDFlZjQxMmE5MmUxNmQxNWZiZmU2MDYwYjI5ZmJhOTlmIGxlZ2FjeS10cnVuaworMzUxNDYgYmJjOTQ0ZTFmZWNjYjYxMWE5NDdiYzg5Y2Q4YmUxZjFlYTA2ODQyNiByZWxlYXNlMjMtbWFpbnQKKzM1MTQ3IDI2NmYyMjZmNDcxZDA0NjUyNTk4NzBiOTM4ZGVjMDgzYmUwMjI2MmUgbGVnYWN5LXRydW5rCiszNTE0OCBlYzhhNDY4NWIzNjA2NjY4NzFlZWVkNzhmNzU4NWViNTYxZDgxZDkyIGxlZ2FjeS10cnVuaworMzUxNDkgMTRkZWE2ZjhiMGMzNDRmZWE1YzkxZTc2N2Y4Njc3YzMyMDAwYTg3MyBsZWdhY3ktdHJ1bmsKKzM1MTUwIGMzODBkYzI5MzA0YWUxYjMxYjg4Mzk1MzljYmNhZjdkYmZiMTdiOTkgbGVnYWN5LXRydW5rCiszNTE1MSBmN2Y0MmYzYzNmYjQ3NTdlYjQ2MTkwZWI1ZTRiN2I1MjkxNzRmOGI5IGFzdC1icmFuY2gKKzM1MTUyIGExNTExNTI5MGUxM2IyOGZjOGE2MzQxODBhYzViZmJhN2QyNGUwMzYgcmVsZWFzZTIzLW1haW50CiszNTE1MyA3ZmNiMzU1NTJkNTNhMzRhMDg3YWMyYzNiMjE1YmU4MzRiNjBiZTNkIGFzdC1icmFuY2gKKzM1MTU0IDAzODA4NzhmM2RiNTQ5MzE0OWFlNGM3MjkxYTVhMTVjNzMzODEwODEgYXN0LWJyYW5jaAorMzUxNTUgNjAzYTllYWE3NGUxNTVkOGRmYTY5YjM1N2UxMGU1MGNlOWRjYzgzMiBsZWdhY3ktdHJ1bmsKKzM1MTU2IGFjNGE3YmE1NDc5MjkwNGFkODI3ZjJlOTg2NzNmOWNmODA5ZmY0MTAgbGVnYWN5LXRydW5rCiszNTE1NyBiMWRjNWUxMTQ4ZWEzNGVmYTVjZjdiN2E4ZmIyZTZlNGVmZDVlY2ZmIGxlZ2FjeS10cnVuaworMzUxNTggYmU1NmZjNDg1ZTI3MGQ2ZTI0NmZlZWQ4MTc5ZmYyMzE4YzVmYzNlMSBsZWdhY3ktdHJ1bmsKKzM1MTU5IDdiZTU1MzgwNTk0OTNlNjNmYThkMTZkNTU5YjdkYmY4ZWE3NjYxZjIgYXN0LWJyYW5jaAorMzUxNjAgNTYxZmU3ZjY2NTE1ZTA5ZjkwMTIxMDI0Y2E2MGU4Yjg3OTBmOTdjNyBhc3QtYnJhbmNoCiszNTE2MSBjNGQzZTdhMWZmODY5ZjBmYTY1ZWJkMGIwY2NhOWNlYWFhMzM2NmVmIGFzdC1icmFuY2gKKzM1MTYyIDYxYTIwZGY0YjBlZjVmZDc5M2ZhOThhMGM5NTAyMTgzMDgzNDYzZDQgYXN0LWJyYW5jaAorMzUxNjMgYjgxNDgwZjdjZmZlNjE5YTk0MTdlN2RmMDhmYjMzZDljZDI4NGYxMyBsZWdhY3ktdHJ1bmsKKzM1MTY0IDE4NjMxOWNmZjRiMjI0ZTQwMzczODVkNWY1ZjZlMDhkZmYwODFjMGQgYXN0LWJyYW5jaAorMzUxNjUgN2M4OGEwNjlhMTQzOWEwOWUzZjVkZWYyNzc4NjQ4OTRlNmI4NjU0YyBhc3QtYnJhbmNoCiszNTE2NiA4YjYwODQ4NDhkYTE4OWEwYzY3OWJmZjQ0MDljNDI0ZjBlNDQ5MGMzIGxlZ2FjeS10cnVuaworMzUxNjcgNjZhNDIzMGY5NDViMTQ4ZWIzYzczNWUwZDRkNzYxYWM5OWI5NTQ2NiBsZWdhY3ktdHJ1bmsKKzM1MTY4IDhmNDcyODFmZWE3YmVhNGM5NTVmODExNDg1YmJmMDNiZDA2YzI5NDAgcmVsZWFzZTIzLW1haW50CiszNTE2OSA0NjIyNDY5MGEzNjU1YTQzZGRiOWFmMzRhZDZhNGY2MjEzMDNjZjE3IGxlZ2FjeS10cnVuaworMzUxNzAgZjJmZDRlNWRkZjE5NWFjMjMzNWQwMjUzODMzZDNhNmVhN2I0NTlkYiBsZWdhY3ktdHJ1bmsKKzM1MTcxIGU0ZDczZWU4ZDRlMTZiYTRjNGE4MTk2NmI2MDNhN2FmNzE5MzI4YTMgbGVnYWN5LXRydW5rCiszNTE3MiA4ZDA2YzE5MmYwZTZkM2VjOWQ3MGJhYTA5ZDBiNDY1ZjEyMzRjOTRlIGxlZ2FjeS10cnVuaworMzUxNzMgYWRiNmRmZmQ4ZGQ1MzE0YjQ1MzE0NjE1ODA3NDU1OWJiNjJjNTI3ZSBsZWdhY3ktdHJ1bmsKKzM1MTc0IDFlYmQwNjI2ZDE3NjEwODMyOWI3MDE1NzI0ZmI4N2ZkMjJlZjg0ZGIgbGVnYWN5LXRydW5rCiszNTE3NSAyODgwY2ViODExOWRjMWI1MjVlMzUwNTNkOTczMThlMzBkZWY1YjdlIGxlZ2FjeS10cnVuaworMzUxNzYgZThiOTZiMmJmYTdiMjBmY2Q4MTc3NDdhMTMyODM3Y2NkYmM4ZGExZCBhc3QtYnJhbmNoCiszNTE3NyA4ZjhiYmEwYTc1YjRjZDA4MjZhNWE1NzgzZTM5MzI2MWU0ZGQ0Y2FhIGxlZ2FjeS10cnVuaworMzUxNzggNGU3Y2M1MGIzMGExNjQzOGY3MTRiNGIzNmRhY2I2ZWZhYjRhNGFiOSBhc3QtYnJhbmNoCiszNTE3OSA1MDFkYWFjY2JmZTBjYjY0Y2JhMGE5NGMzZmNkYTBmMDBjMGM0NGY3IGFzdC1icmFuY2gKKzM1MTgwIGQ2NjdlMzNlMDI1MjNmYjdiMGQ5ZGIzMTIwOGQwNmYxZmI4NWEzZmUgYXN0LWJyYW5jaAorMzUxODEgNjU3NzgzNTIwNjZiZjk0ZjA4ODgwZWFmY2E3NGM4ZjMxODE5ZThiYiBsZWdhY3ktdHJ1bmsKKzM1MTgyIDM3NDY5NzQ3OGI1YWMwMmU2MGFiYjU4M2E4ZWQ2ZjA1MjRmZDg4NzUgbGVnYWN5LXRydW5rCiszNTE4MyBmNzZmZWI3M2EwZTQ3MTY5YTM2MTViOTI4ZDYwZDA2ZDkwOGRkYzY0IGFzdC1icmFuY2gKKzM1MTg0IDYzMDhhZGYxNzJmNDgwMzUwNzI0ZWZhMDc1NmZiMWMzOWRjNGJiMDAgYXN0LWJyYW5jaAorMzUxODUgOTUyNTE3Nzk4Y2I1ZDMwMzY2ZjQ5NTNiMTEyNmYwZWI3NzkwMzZkZiBsZWdhY3ktdHJ1bmsKKzM1MTg2IDYzZmE2MGYyZDYxY2E4MzZiNWUyZDA5NTlkZWQxYzAwMjgxOTRhZWQgbGVnYWN5LXRydW5rCiszNTE4NyA0YTllNTYzNjhjNjkwNGMzOTI1MWM4MmJhNzAxZWI4MDAwM2Y2ZmNlIGxlZ2FjeS10cnVuaworMzUxODggM2M1N2ExYzNhODdhZWYxMzg4NTY0ZjkwNTljYjRhODdmMTYyM2M3OCBsZWdhY3ktdHJ1bmsKKzM1MTg5IDNjMjY3N2M0YTJiZjM2OWU4MWZiNmZhZjhiMTNkYzY0ZDI0NDRmYjIgbGVnYWN5LXRydW5rCiszNTE5MCAxNmIzMTVkZjEzY2U0OGY3YjNhY2JkNWNjZDZlZWJlMGVmODRjNTMyIGxlZ2FjeS10cnVuaworMzUxOTEgNDkzNzA3NjkyNjcxOTRiNzY5MTk5ODU0YTdmNWQ4MTZmMWRhZjhlMiBsZWdhY3ktdHJ1bmsKKzM1MTkyIGEyZmUxYTM1ODAwYTA2ZDQ3N2QyNTBjMjQzNjNkOTgwMGZhYzcxYWQgbGVnYWN5LXRydW5rCiszNTE5MyBhZmI0Yzk3MjZkMWE0NWEyMzFkNGZjZWQ5ZDU3NzNkYjE1ZGZlMjkzIGxlZ2FjeS10cnVuaworMzUxOTQgYTI4MjgwMWIwNmI2NDhkZjBjOGNjNDYwMTIyODVhN2FiZmZiYzY5ZSBsZWdhY3ktdHJ1bmsKKzM1MTk1IDEyMTlmMTE2MmQxZDFhOTU4OTcxMzRmNWU2NDk2NTFkYmZlMmU4ZjAgbGVnYWN5LXRydW5rCiszNTE5NiA5N2JjZjJlODhjZWI4OTE2YWM4YzUwMzg5ODg3MjllY2IzOTA1Y2RlIGxlZ2FjeS10cnVuaworMzUxOTcgMTZkMjY5ODY2YTRkYWY3YmIyYmVhMzFmMjE1ZTFmNmY4OTcxYjYwNCBsZWdhY3ktdHJ1bmsKKzM1MTk4IGRmYzE4MTliNGViNDczMmY5YTE0ODc2NTVhMjgzNDU4ZDFjMzBhMDIgbGVnYWN5LXRydW5rCiszNTE5OSBiNGJjODNmMmZkMDRkOWQyMTFiZjcyYjgxYjAwODJmN2Q3ODU4YjNhIHJlbGVhc2UyMy1tYWludAorMzUyMDAgOTI1NjVjY2NlOTJiODBjYWQ3YTM1ZmM0NzZlMzBmYjk3ODkwZDdhMSByZWxlYXNlMjMtbWFpbnQKKzM1MjAxIDY2YTU1MGU5YjJmYjc1YzJlMjEyMzYxZWUwOTg0ZTk4ZmRjNTBiOGUgcmVsZWFzZTIzLW1haW50CiszNTIwMiBiYjcxNDZkMTE3ZmJkMzkwYmE0OGEyMWFmYzcwNzVmYWUxNzY0ZWU4IGxlZ2FjeS10cnVuaworMzUyMDMgM2NjM2NiNzkwNDNmNzIxODAwYmZiYjEzNzIyZDdhYmMxMTk3YzAxOCByZWxlYXNlMjMtbWFpbnQKKzM1MjA0IGQ0MTY1ZDEyZjczYzE5Zjk2NTFlYjlhZWE4ZmM3OGY1NGI5ZDJkOTUgbGVnYWN5LXRydW5rCiszNTIwNSAzN2Q1MDFiOWUyZDViYjBmODI0YjZhNzVjOGU5ZjNiNjg0YmYxMGJhIGxlZ2FjeS10cnVuaworMzUyMDYgNTY2NzM3YmZhZWM5NTA1NGJkZjQ1ZjIyMDY5Mjc2NDdlNjllODE4MCByZWxlYXNlMjMtbWFpbnQKKzM1MjA3IDhhZTg4ZGI3ODQzYzFmMGMwYTZlMThhMDJiODA4M2VjYjkyZjViMDkgbGVnYWN5LXRydW5rCiszNTIwOCBjNTgyNGM4YzZiYTcyMjc1NzdjYTJlOTU5MTM0MGViYjIzZDQ5NmY1IHJlbGVhc2UyMy1tYWludAorMzUyMDkgMDMyY2IxN2FjMmQ2Y2JmYjdmZmU0ZDM2NTIxOWI3OTVjNGI0MGVhNCBsZWdhY3ktdHJ1bmsKKzM1MjEwIGNjMTBiMDEwZjQwYmExZTRlMjU5NGVmYzQ1ZjVjNWI3N2VhMzcwZGIgbGVnYWN5LXRydW5rCiszNTIxMSA0MjAwM2M4NjAwZjRkM2UzN2QxN2ZmNDg3MDViZjhjMGZhNmNhNWJlIGxlZ2FjeS10cnVuaworMzUyMTIgZDVjMDQ3ODA3YzY5N2IzNDFjY2MzNTE1NzAzZDQ4MTNmN2MwOTYwMiBsZWdhY3ktdHJ1bmsKKzM1MjEzIGE1Nzc0MTBlNWE2MGZkZTcwNDJiZmU3Mjk1MGFkZjYzNDkwYjM0OTcgcmVsZWFzZTIzLW1haW50CiszNTIxNCBhYWJkOWI1NGU0NjllZjg4MTAxYzU1ZTg3MmZhMjRmZGJkOTg5Nzg4IGxlZ2FjeS10cnVuaworMzUyMTUgODVmNDkzMmQ4ZmZkOTk3MDA1NTc0M2JkMTYxZTRhODRlMWVlYzY4NSBsZWdhY3ktdHJ1bmsKKzM1MjE2IGYwNGNjYzI4ODU0MmI2ZGI2MjM4NWY1NjYxYmE2MTY0ODU4MjY4M2EgbGVnYWN5LXRydW5rCiszNTIxNyA0NGQ0NDM4ZWQ1N2E1YTZlOGNlMDM5NGI0NTgxZmRkZGZkNmNlOTU0IGxlZ2FjeS10cnVuaworMzUyMTggZGUyZWQ4MDBmYTUwZmE1NTY3MzNjOWUwMjVkMzMxZmExYjUzZWFiNSBsZWdhY3ktdHJ1bmsKKzM1MjE5IDg0OTViMDI3YmNlMzY2MDk5MjU0YTI3YjFiZDhkMjQ1NTViYjgwYmMgbGVnYWN5LXRydW5rCiszNTIyMCA2NmU0M2YyNTA0NmRhNWU3MDUzYmMwYzY5YjAwYjRmOGQxOTg2NDliIGxlZ2FjeS10cnVuaworMzUyMjEgMWRjOTZkODc5NzRlYjY4OGIyMGUxMmRiYjQxNzk1NzAyNTgyYmIyNiBsZWdhY3ktdHJ1bmsKKzM1MjIyIDE3NGRjZjE3MWRmNTJjM2Y1MzI0MWEwNTNiZjViMGIyYjQ4MWRhNzQgbGVnYWN5LXRydW5rCiszNTIyMyA3YjM0ZDg0OWMyMjkwMDY1ZDA5M2NhZTk4M2Q3YmM3MDI0ZWU5NjgwIGxlZ2FjeS10cnVuaworMzUyMjQgM2NlNGZmYWMyN2FiNDRjMmExOWUwYTVlMzFiYzJkODdlNjA0ZWU5OCBsZWdhY3ktdHJ1bmsKKzM1MjI1IDMwOGMxOTNmNTFlMzE3ODU2Y2IxYmFkNDJiNmVkMGE0ZjQ0ZTE4ZjIgbGVnYWN5LXRydW5rCiszNTIyNiAyNWIzMDQzOWZlMjI5ZjAwMjZlNGQ3ZDYzMjNlNmVmYzEwMTg4MTU2IGxlZ2FjeS10cnVuaworMzUyMjcgYmE5YWFkZGViOTU2ODQ3YWQwNjRlYzM2YzI0NjhkYmQwYWVhM2Q3MSBsZWdhY3ktdHJ1bmsKKzM1MjI4IGYzMGFhYWMwMDE5NWU4NzY1MzJmMzUzYTJlZTFkOTNkOGY1MTQ1MmEgbGVnYWN5LXRydW5rCiszNTIyOSA1NzNiMDg5ZmFiNzFkM2U2MjViZTkxYzgyNjMyMzNkZmUzOGE0Yzg1IGxlZ2FjeS10cnVuaworMzUyMzAgOTFhZjY1YjkzMmQ2MjI4ODdiZGIwZDZhMWQwNDgyODljZWExMzU0YiBsZWdhY3ktdHJ1bmsKKzM1MjMxIGQ1YjRjNDRjNzZjZTA2YTg0Y2Q1MmRjZGMyZTJlMmU3YTQzYTdjYjQgbGVnYWN5LXRydW5rCiszNTIzMiBkOTg0YjNiZDFjZWIxYTBkMmFjYWNiZDBjNzM0MTg4MTU2YzQzNmEyIHJlbGVhc2UyMy1tYWludAorMzUyMzMgNjVkMjhmZmYxMTcyZTE1Zjc3Zjg0NTdmYWE3NGZlY2Q3MWY1NmRhNCBsZWdhY3ktdHJ1bmsKKzM1MjM0IDUzZGZmNjBmNTUwODliYWMzZmRiZGQ3MjdkZDZlYjQ1ODg1NDZhOTIgcmVsZWFzZTIzLW1haW50CiszNTIzNSBlMTc4ZWI0M2VmZGRlZTliOWIzMWQzMmFlMjAyZGUxZjhlN2EyMTE1IGxlZ2FjeS10cnVuaworMzUyMzYgNzI3MTIwZmIwMzY1MmRjMjgxMWE2NWJkYTViZTZkZWJlOWNhMWEwNiByZWxlYXNlMjMtbWFpbnQKKzM1MjM3IGY1N2Y1Y2UyMmM4ZGM4ZDIxMzViOTc5OGQ3OWI3YWZjNGE5ODIyMDQgbGVnYWN5LXRydW5rCiszNTIzOCAwOGVjNGRiNTA2NGViNmEyNWQ0ZTgyYjI1YmQ3NjliYzc4MzM1ODg3IGxlZ2FjeS10cnVuaworMzUyMzkgODlmOTA3MGRjMWJjMGJjMTA5MjkxYjMzNWU2M2MzNjM3NTVhNWFlNyByZWxlYXNlMjMtbWFpbnQKKzM1MjQwIGZkMmQ2NGFmMjY0MGFiNjEzYzgxMGFiMzMxMGQ3M2JkNmJkMjcxMzIgbGVnYWN5LXRydW5rCiszNTI0MSBkYjRkYTkzZjBiYTBlZTRiZTBlMTdhMWIyZWQ1NDg0NDBlNGFlZmQ0IHJlbGVhc2UyMy1tYWludAorMzUyNDIgOGUyMThjYzhlZGFiMmJkZGZlMTkzZDAzYjllYjgxNTI4OTM0M2EwOSBsZWdhY3ktdHJ1bmsKKzM1MjQzIGZlYWJlMmZmMGUxZTA5ZDJhM2QyZWJjNzMwZjM4YjI3MGE3ZTdlNTUgcmVsZWFzZTIzLW1haW50CiszNTI0NCA2YThlOGExM2M3NDU1ZmNmN2E5MDUwMzVjYjU2YzBkYzNiOTNhMTljIHJlbGVhc2UyMy1tYWludAorMzUyNDUgNGMxMmQzYjAxNjZmY2IwMjEzOWNhNzcyNDEzMTJhNWM5MGVlZjAxNSByZWxlYXNlMjMtbWFpbnQKKzM1MjQ2IGZlZjlmMmE0MWMzNGMwMzc2MGY2ZjNkZDM3OWEzZmMwZWNhNzBjZWIgbGVnYWN5LXRydW5rCiszNTI0NyAyYjdlMDhkY2FjYjE0Yzk2NzgzMzFlYjgxZmExNDdhYjZjZDNkMjdjIGxlZ2FjeS10cnVuaworMzUyNDggNTFjM2Q0NTJhZjJmMmNmYjhhNDA0ZDg3MzE4MjQxYTQ3MDhkMjk1YiBsZWdhY3ktdHJ1bmsKKzM1MjQ5IDc1ZGNmMjY2NmQ1NDQ2MDkzOGI1N2QxYTc0ODVhNzIzZDYyNDY5MzUgbGVnYWN5LXRydW5rCiszNTI1MCA1ZDlhM2Q3NmM5NGU2MDM2MmZlNGE1MjAxNGI5MTRjMzY0YjhmMDAyIGFzdC1icmFuY2gKKzM1MjUxIDhmMDYzMjAwOThkZDYwNDEzYTMwYzYxM2E4YTkyYWY3ZDJlY2M0YjkgcmVsZWFzZTIzLW1haW50CiszNTI1MiAxNGY4NjBiMDNiZTI3M2FhOWNhYzI1ZjFhMTI2M2RiY2U2NGYxMDAwIGxlZ2FjeS10cnVuaworMzUyNTMgNTk1MzhkM2I3Y2QyZDVkM2QyZTEzYjUyNjQ2ZjdjYzhlZjliMWYyNCBsZWdhY3ktdHJ1bmsKKzM1MjU0IGViNDhiMjUwM2YyMDFkNDRiNGFkZTY0ZmM2ZDNhMjA4NGViNWE5NjkgbGVnYWN5LXRydW5rCiszNTI1NSAyYWJjNTJjM2Q0YzJmY2VhYzM2NWExZDg5NTZlOGZkZmU4OWJkYTIwIGxlZ2FjeS10cnVuaworMzUyNTYgMWY1ZjZjY2EyZjIxMGQxMDhjN2ZkMTg4MTlhZDhlNGI2ZWE3MzAzZSBsZWdhY3ktdHJ1bmsKKzM1MjU3IGViNjllZWNhYjRjN2I2YzBhMTQ0MTUxYjkwNjIzMDdhZDEzOTViYTcgcmVsZWFzZTIzLW1haW50CiszNTI1OCAzNTQxMjkxNDM4MDk0Y2ZjZWIwY2Q2NzQ4ZDk3NDU4YmUzOWJhNTdhIGxlZ2FjeS10cnVuaworMzUyNTkgNzE4NjQ4MjA0MDJkNjU2OWRlNGVjN2RjNzdkNjIxYTI4M2U4ZTVlZSBsZWdhY3ktdHJ1bmsKKzM1MjYwIGNlNThkMWNjNmY0MDVmMzMxOTE0OGZiNzA2Mzk3NDFkMmRiYmMxYWYgYXN0LWJyYW5jaAorMzUyNjAgY2RjNjYyOTJlNTVkMzY5ZTc0YjRiMzIyNmJjZGQ4MjcxY2U3MDhhMyByZWxlYXNlMjMtbWFpbnQKKzM1MjYxIDIyMTk5ZWY2NGZmYTA0NTJhZmYyYjY5YWY3OTllYWM3OTQ2ZWZiMzQgYXN0LWJyYW5jaAorMzUyNjIgMTA2ZmE5NGI0MmRlMGM5MDVhMGZmYzRiMDA1YmM1YjI4MmIxYTI4MiBsZWdhY3ktdHJ1bmsKKzM1MjYzIDVhNDViNWMyMzcxZTg4NTE1NGNiNzgxOTFjNDQxMzkxOGFiNDQ4ZjEgcmVsZWFzZTIzLW1haW50CiszNTI2NCBlYWVlYTU4N2Y5MGEyOTU1NmZkMzI0MWUwMmI2NDFiZmIwMmNlYmQ2IHJlbGVhc2UyMy1tYWludAorMzUyNjUgNWJlZGJhNTViYTAzN2ZlMmMyZjM4YjVhYmQwNGNkNmE3MmJkNjA4YyBsZWdhY3ktdHJ1bmsKKzM1MjY2IDU0NTIyOWRmZDkwOTg1ODdkNDNiMzQxYTdlY2FhODBhMWIwMjZmZjUgbGVnYWN5LXRydW5rCiszNTI2NyA3MWEyOTRiZDc5NTA5Y2Q0MjA5Nzc5N2UzOWQ2MDI2ZWY5MDMwNTgxIGxlZ2FjeS10cnVuaworMzUyNjggOWIzZGFlY2FhZjI1NDRkOWMxZTBmMGM1ODVjMzU4OTBjNjMxYTY5OSBqaW0tbW9kdWxhdG9yCiszNTI2OSAxNTYwMGEyMzc0OTJhM2ZkZDUxNmEwOTk3MjE1ZjNkNjBjNjU4MGNlIGxlZ2FjeS10cnVuaworMzUyNzAgZWU0NGJlOGUxOWZjYzk0YTI2MmYxNDMxN2E3NmQyMDZjOTYxYjI1MCBsZWdhY3ktdHJ1bmsKKzM1MjcxIDJlNjJmYzk3OGQ4YWU5N2MzZWM1NjI1MGRmZTFmZmRlYWEwMDIzNWEgbGVnYWN5LXRydW5rCiszNTI3MiBiZDBhY2M0MjgyOWVmZTQzOTdhYzgyZGE0N2ZjMjg1MmQ4Y2VhOGU5IGxlZ2FjeS10cnVuaworMzUyNzMgNThkNWVkZTVmNGNlMmQ5Nzg3YzQ1MDUzYzI4NGI1NzFjN2YxZjBhNiBsZWdhY3ktdHJ1bmsKKzM1Mjc0IDZiN2IyYzYyYWIxMjYwODg0MWYyNTkwZWU5ZWIzMTMyMzIwNzJlZDYgbGVnYWN5LXRydW5rCiszNTI3NSAyMzk0NDM5MzMzMjRiMDIzZjdjZTE5ZDZmYzlkYmU0ZTk2OGUwYzViIGxlZ2FjeS10cnVuaworMzUyNzYgNzZjODEzODk0ZWU2ZjMwNTU1ZWVlOWY1YzU2OWI5MDc5MWRjMDU0MSBsZWdhY3ktdHJ1bmsKKzM1Mjc3IDNkOTI3ZTFjNzhjODg0ZDE2N2M2ZjJjMjRhNTUyNGJmNWViYmQ3ZjggbGVnYWN5LXRydW5rCiszNTI3OCA0ZWY1NjhjNjUzZDljNmJjZDhkYWY2MDc0ZWM5Yjk4NmJlMTQwNjQzIGxlZ2FjeS10cnVuaworMzUyNzkgY2UwMTA2ZGY2YTZhNjMyNWUzNGE5ZmQxZThiM2VmMmEyOTU2OTc4NiBsZWdhY3ktdHJ1bmsKKzM1MjgwIDI3YmYwNWIyYTRmOWUzYjY0ZGEyYTIzY2NhNzFjNDBhZjY0M2IxNjcgbGVnYWN5LXRydW5rCiszNTI4MSAxMjMzYmQ5NWRhMWE5M2Y5ZTJmY2VlZGMxZmFmNGE0NWJhZGFkOWY0IGxlZ2FjeS10cnVuaworMzUyODIgYmZiNDBhMDNjYzBjMDFmZGM4MGFlMWE5ZDg3OThmNDU1ZTFlNmIxZSBsZWdhY3ktdHJ1bmsKKzM1MjgzIDk1YTMyYzc4NjcyZGIzZTJjYmY4MDk3MjE2MThmYWEwZTg0ZGY3Y2UgYXN0LWJyYW5jaAorMzUyODQgMzU0OTVkMzZlYzk1N2FjNjQwM2ZhMzAzMGI3MDhhODU1OGZhNzE5NSBhc3QtYnJhbmNoCiszNTI4NSA4ZDQ5YzI5ZTlhYzFlODFhMTE3ZTQ1YjliZDljNjA4MWRmZjcxYjZjIGFzdC1icmFuY2gKKzM1Mjg2IDNiYTRlYThmY2UzZTUwMWYzMTFmYWVmYzAwNjFmMzUxNGZkYWY2MjYgYXN0LWJyYW5jaAorMzUyODcgZmE5ODEzNTA5NzZjYmVlZTVlNmM4ODlhYTA2NTdiMzg4ODdhMmYyMyBhc3QtYnJhbmNoCiszNTI4OCAyNWEzNWQ4ZjQwODM3YzAzYmZmNTExODZkZTEzMTM4NDUwNWVhZTIwIGxlZ2FjeS10cnVuaworMzUyODkgNzgzNjJhYWE0OTFkZmZlN2EyZWNhN2ExZTk3ODdlODJkOGMwN2FkYiBsZWdhY3ktdHJ1bmsKKzM1MjkwIDQyN2U4YmFhNzA1NzRiZTJlMTlhMDJhZmFhNDViMzRlYWJhYzE5YzkgcmVsZWFzZTIzLW1haW50CiszNTI5MSAzNWMwYWM4ZTA4NzEzNWY1YzU1OTZkNjYwOTIzZDI2YmMwYzNiZjhkIHJlbGVhc2UyMy1tYWludAorMzUyOTIgNWVlZWQ1MWU4MmM0ZGIxYzJmYTI1ZWYxYTAzZDY5OTMxMzVlNzMxZiBsZWdhY3ktdHJ1bmsKKzM1MjkzIGY2ZDhjZmU3YzAwMDk5NmQyMjk1ZDQ0ZWRlNmViOGQzMzM2OTcwMmQgcmVsZWFzZTIzLW1haW50CiszNTI5NCA3YzA1MmJlNDAxNjkzYjZlMzcyY2MxNWE4OWIyYzE4YWQ1MDMyY2YxIGxlZ2FjeS10cnVuaworMzUyOTUgNjRjMDhkYjhkY2U0NDYwZWEwYmQ3NDhhZTEzNGM5YTI0Mzc4Njc2NSByZWxlYXNlMjMtbWFpbnQKKzM1Mjk2IDc5YmM1NmJmOTIyMDc0N2Y3ZTk5YjYwY2NjNjRjZDA0OGQxYWYwMmYgbGVnYWN5LXRydW5rCiszNTI5NyBiMGM2ZjdjNWFkZTY1YTRmNDVlNTA3YTgzMjUwOGNjODBkYTJlOTk5IGxlZ2FjeS10cnVuaworMzUyOTggOWY0NWEyZDM2NjZkZTdkZGFkNDFiMGQ3OGNkM2E5Njk4OTZjNmEwNSByZWxlYXNlMjMtbWFpbnQKKzM1Mjk5IDBhMzM0YjIyNmYzYTMxMWQ3YjMxODcyNGMyYjVmOTlmOThiNzNhNGUgYXN0LWJyYW5jaAorMzUzMDAgZWM2MjMyZWQ5MTE1MjViZTQ0NGE3NGVkZGQ1ZDljMDIzYTY4YjFhZiBsZWdhY3ktdHJ1bmsKKzM1MzAxIGQ5OGQwMjU1YmIwZmZkOGU0ZTAzN2M3NTFiY2M3MmY5OTAyYjkzOWYgYXN0LWJyYW5jaAorMzUzMDIgYWIzMzlkODBjOWM5YWY3ZGI5MTZjNmM4Zjg4YzZlZTBiNTZjYzk4MyBsZWdhY3ktdHJ1bmsKKzM1MzAzIGE1NDU3YjYyMDIyNjU4YTllZjhkODkxNmJhYTJhM2FmMWNlM2NmZDcgbGVnYWN5LXRydW5rCiszNTMwNCA3MmU5NzBjMGFjY2MxMjI1ZDg0NTZmMzBjODFhZTFkYmMwZjE4ZDM5IGxlZ2FjeS10cnVuaworMzUzMDUgMzkxMDExODQwYTAzZjc2NzM4NmQwNzQzNWE1NmQ5NTJjNWJhNWJhNSBsZWdhY3ktdHJ1bmsKKzM1MzA2IDJjOGE0MzA2M2Q4MmM4ZGNkYmY1MzEzZWMxNGM2MDNhMjM4Yzc0OWEgbGVnYWN5LXRydW5rCiszNTMwNyA0NzBmOTVhZDY3NTA3ZGI0ZjVjYjRjMzk0MDcyNTJhM2U5ODJjNzQ4IGxlZ2FjeS10cnVuaworMzUzMDggOTdlYmU0MDE0ZWRjOWNlMDlhN2Y5YWUxYTcwOWM0NDQ2NTRmOTk5OCBsZWdhY3ktdHJ1bmsKKzM1MzA5IDNkYTZjMmFkYWQzNDNjYzYwOTBkNTI3ZWIxOTYwMjdlNTgxODUxYmYgbGVnYWN5LXRydW5rCiszNTMxMCBiZGYwMDZkZWU2OTg2YjgwNWVmY2I5YzgwMWI1N2RmZjg4NDg2YjI2IGxlZ2FjeS10cnVuaworMzUzMTEgYTE1N2NjMjBmMWI3ZGI1ZTdmYWFlNmZkZWQ3YjJmMTAwYWI0ODQ5NiBsZWdhY3ktdHJ1bmsKKzM1MzEyIDIyNjMyNTBkN2IyZmQzMDI1NjdhNGQ1MWNmOGJiNDQyZWQyNDI3MmMgcmVsZWFzZTIzLW1haW50CiszNTMxMyBhNmQ4ZDVhY2U2YTc4ZDU1Yzc3OTBjZjg0YmJjYjBkODU4YzM5ZWRlIGxlZ2FjeS10cnVuaworMzUzMTQgMzgyODMzOWFkZjg2N2NhZTZmMWJlMjY4M2M1ZmNiNGFmNDFiZGNiNCBsZWdhY3ktdHJ1bmsKKzM1MzE1IDExOWQwMTgyYmQ1ZTQzMzY0YzA5NDQyZmNkOGJkNDhjMzA2YjQ5MGYgbGVnYWN5LXRydW5rCiszNTMxNiBjMzAzZWMwMTljYjJjOGQxMDQzMDFhNjA3NzM4MjU3MTc0YTA2YTIyIGxlZ2FjeS10cnVuaworMzUzMTcgOWNhYzlkMGIxOWUzMTMxZTg1ODAwNThlZTNlYWU1ZWM2MDkxYzJhMSBsZWdhY3ktdHJ1bmsKKzM1MzE4IGNjNzk0MzE4OWE1YmNhYzEzYzAyN2Q2ZDBjZDBhOTJkMWU5ZTY3NDUgcmVsZWFzZTIzLW1haW50CiszNTMxOSBjNzVhNGVkZDFlNTI3ZjA2ZDRjYjBiOTYyYmZmNjA1YTYwZjA3MjZmIHJlbGVhc2UyMy1tYWludAorMzUzMjAgZjFlMGE3YzQ4ZjM2MDMzOWRiODM3NDNhZWU5ZjlmMWNlMzcyYWQxMCByZWxlYXNlMjMtbWFpbnQKKzM1MzIxIDZkZDM4ZTQ1ODZmZmZkOGE2NzVjMDQ0YzE4MTM1ODczYjNlNjE3ZDggbGVnYWN5LXRydW5rCiszNTMyMiBmNDU3ZjE4ZjU5MjIxMzlmYTcyNTcxYjAwN2ZlYTQzMzE4YTQ5ZmMzIGxlZ2FjeS10cnVuaworMzUzMjMgNDc1YmY0ZTc5MjBlZGZjYzY5ODQzZWI5MDBhNGIzMzQzYWEzNWZmYSBsZWdhY3ktdHJ1bmsKKzM1MzI0IDdhNzYxY2FkNzUxM2QzN2Q5YWEzMDYyYjlmZGJiZmZjOGRlZWM0MDMgbGVnYWN5LXRydW5rCiszNTMyNSA5MTFiMzIxNWQwZGM0NmQwYjA0MzgwNThlZDBkYjNmMWQ5N2I3ZmZiIGxlZ2FjeS10cnVuaworMzUzMjYgMWMwNjYzNzE2ZGIzNTdkYjQyNzlhOGYwMjYyM2JlZjkwYjNlMDdiMSBsZWdhY3ktdHJ1bmsKKzM1MzI3IDhhMzlhOThjODc4MDI0YzNkZjFhZWIzMGNkMDcwN2U2NDE0YmI5MTkgbGVnYWN5LXRydW5rCiszNTMyOCA0NjMyZmNjNTU0NGExNDZjY2Q0M2M4MWNmZjBjYmY2ZWJlZDZmOGViIGxlZ2FjeS10cnVuaworMzUzMjkgODM1MDJlMzFlMDZlMTlkMDVlOGFhYjY5YjAxOTcxZWE0ZDc3YjI5NyBsZWdhY3ktdHJ1bmsKKzM1MzMwIDdlNGUzMTM3YjI1MjdhMjlmZjFkYzcyOWEwNmE2OTRlZmUzYjU5NmQgbGVnYWN5LXRydW5rCiszNTMzMSA3OGY3NThhYmM3OWYyOWUzM2E2NWRiMTNhM2M0MDBhZmExNzBiMjA2IGxlZ2FjeS10cnVuaworMzUzMzIgOGVjM2FhODc5ZWVlYTBmZjkwMzQ3YTBhMzEzMDQ0NmY4N2IwODU5YiByZWxlYXNlMjItbWFpbnQKKzM1MzMzIDNjOWI0ZmMzZWYxNDdjMDk5Y2MyMGQ3MDY0Y2M4MDEzY2MyYmQ5MzUgcmVsZWFzZTIzLW1haW50CiszNTMzNCBjMzdjNDA3ZmFmNTJlZDkyYzEyZmQ3NGQ5Yjc2M2M4ZTFiYjJiNjE4IGxlZ2FjeS10cnVuaworMzUzMzUgMTliNmZlYzJlNTJkMjhiMjQwY2I1ZTQxMGRkNjE4MmY1ZTI4ZWRhNCBsZWdhY3ktdHJ1bmsKKzM1MzM2IDY1MGVmMDA5ZTA4YzE5NmZhNDZiZDcyNzRkMTNlZWM4NTI0ZTVmNDYgbGVnYWN5LXRydW5rCiszNTMzNyA2ODgyMjhhYjA1YWViNTc0MjUxMGMxYmRmNzlmMzJlYzZjN2E4NTI1IGxlZ2FjeS10cnVuaworMzUzMzggODE4M2RkMWE0ZmU2YmJjZjJmZTk2NGU5MDhkNGUyZjI0ZjMxODgzMSBsZWdhY3ktdHJ1bmsKKzM1MzM5IGE5ZmQ0NzY0NGMwZjc5OGNlNWMyM2M4NjQyMDczMTExNDk1NGQ2OTEgcmVsZWFzZTIzLW1haW50CiszNTM0MCBmMmQ5NGZmMTVhYzhmNDI3OWYxOWNmM2E4Y2M0ZjFiOWJkNGIyYmE3IGxlZ2FjeS10cnVuaworMzUzNDEgNWU3NDU1ZmI4ZGI2YjVmZTRhYjVmNWZkYTJmZGJmNGE1NTAwZWIzZiBsZWdhY3ktdHJ1bmsKKzM1MzQyIDIyMjFmOTYwMTgwZGY3MmVhNDhmZmZiNDEwYjIyOGM0MGE5ZWEyNzUgcmVsZWFzZTIzLW1haW50CiszNTM0MyAwYjEzNzYxODIwYjBjMWQ4ODk4ZWU1Y2NiZGIyZTYxOGRmYjk5NmNkIGxlZ2FjeS10cnVuaworMzUzNDQgN2FiZjQyNDc5ODgwZTVmNTk1YWY2ZWEzZDdiNzI1YmI4OTIxNmJhYSBsZWdhY3ktdHJ1bmsKKzM1MzQ1IDJjNjEyM2Q5MjVmZWU5NmZlZDUwMzdjMmZjYzVlMTQxMzUyZmM0OTYgbGVnYWN5LXRydW5rCiszNTM0NiA1NDY4NWQ5ZmZiODc2YmE0YmY5N2EyZjg4ZmE5MTNiMGNkN2FhNDhkIGxlZ2FjeS10cnVuaworMzUzNDcgNGIyZDZkMTMwMDYxOTk5YTk5ZGFkOGZmY2RmMjAzMjJkYjA0OTM5MyBsZWdhY3ktdHJ1bmsKKzM1MzQ4IDY5YWM2NzJiNDliM2VjN2FlZDMzZGI2ZGY1OGU5NjEyNTg4ZjVlNTkgcmVsZWFzZTIzLW1haW50CiszNTM0OSBjYTNjOTk4YWZhNTU1ZmQzM2RkYzU1MWIwZGQ2NGFmZGEwZDgzZDVjIGxlZ2FjeS10cnVuaworMzUzNTAgYzcyM2IwYzFhN2UxZGI0YWVjYTI4ZTUzYzIwMGY0NGJkNTE1NzZlMCBsZWdhY3ktdHJ1bmsKKzM1MzUxIDI2YTgwZjBhZjlmM2FlNzVhMjJkMDYwNzEwNjY1NmRlMWYzMzdjOWIgbGVnYWN5LXRydW5rCiszNTM1MiBjNjc1M2RiOWM2YWY4ZTJlZDA0ZmIwNjkwOTU3NDI0M2E3YmYzNGY0IGxlZ2FjeS10cnVuaworMzUzNTMgNzA2ZDZkMTFlZTM2MzgxOTNlYTZjYjNlMjkzOWFmOTU2NDU3YjAyZCBsZWdhY3ktdHJ1bmsKKzM1MzU0IDEyMzcxOGQwZGMwOWU0ODg1MzdkYzdiMjJiNTUyZWUxMDRlZmVkYzkgbGVnYWN5LXRydW5rCiszNTM1NSA2NWM1MDJiNjBiNGQxOWMxMjI3MThkMDFhNGM0Y2FkZDAzYjc0YjJlIGxlZ2FjeS10cnVuaworMzUzNTYgYWYyNWNjYzc1ZmVhY2I5ZTY0Yjc2ODI2YTE5Yzc4ZGI4NTk2MmZhYiBsZWdhY3ktdHJ1bmsKKzM1MzU3IDA1ZTFjMjdjMGE3NGQ4MWI1MGM0MjZlNTA5MjZjZDMyOWE3OTMwNmYgbGVnYWN5LXRydW5rCiszNTM1OCBjZDg3ZmY2ZWE4MTQwZWYzZTIxZDdmOTg0NzdiY2E2N2FhNGEyMzIyIGxlZ2FjeS10cnVuaworMzUzNTkgZjFkMGZhNjk4YjczN2I4YzM2MjJhZjUwOWI5ZGE0NjI1YjUxYWEwNiBsZWdhY3ktdHJ1bmsKKzM1MzYwIGQ3ZmYwNTEzN2NlYTNkZjU2NTIzM2IyM2ExMTJhYTk1YjRjYzU0YjQgbGVnYWN5LXRydW5rCiszNTM2MSBmM2NiNGNhZDU4NWU2Njk0OThmNzBjZDIwMWZhZDY3MDEzYWEwNTNkIHJlbGVhc2UyMy1tYWludAorMzUzNjIgMDZkODI0ZjVmMmM5OGZmNTVmYmY4ZDIyMDNkYWRlNTZhM2MzNjkyOSByZWxlYXNlMjMtbWFpbnQKKzM1MzYzIDE1NTUzYTFiN2ExN2ExMDI3NDEwMTRjZjc3MjMwYjQ5MjIxZTY3ZDQgbGVnYWN5LXRydW5rCiszNTM2NCAwNzFlZTBmZjc0Njc4OTY4YzJjYzg4NjUzMDNlOTk0ZjMwZDhiY2Q4IGxlZ2FjeS10cnVuaworMzUzNjUgMmZlZDMzMWRlMDE0YTRjMmNmOWU2NzAzZDkwMWQwYjg3NTY0NTM0NSBsZWdhY3ktdHJ1bmsKKzM1MzY2IGZkMjEwM2FlNmYyOWExZTA2YjNmZjhjZjU0OGFkYjY0ZmNhMmQ0YTIgbGVnYWN5LXRydW5rCiszNTM2NyA4ZWNlZThmNDcxMDhjOGI1YTc1Y2RlZGNkYzJkNzY1ZjA2MWNkZWJkIGxlZ2FjeS10cnVuaworMzUzNjggYWU4ZGJmNTAwMTcyYTFhYzFiOTM1NGIxOGUxOTUwY2NlMTcwYzQyYyBsZWdhY3ktdHJ1bmsKKzM1MzY5IDgwYmQyYjg1ZWQ4YTFlOTk3OWE4ZTY5YTQzZTdlZTY4YmJmNWNkNzkgcmVsZWFzZTIzLW1haW50CiszNTM3MCBkZmRiYzAwNThkODU5MGUyMTg1OWNhMDM2NzY1YWE0ZWJmZDdlZjk2IGxlZ2FjeS10cnVuaworMzUzNzEgMDk3OWZhMDYyZGViZmU3ZDZjNWYwNTRjMjg3Y2JiMmZiYWI0M2VmOCBsZWdhY3ktdHJ1bmsKKzM1MzcyIDI0OGJlYjk5YTMwNGM5M2ViYTQ2NDBkZGE4MjhlMDNiMzBlNDYzMGMgbGVnYWN5LXRydW5rCiszNTM3MyA0NmRmMDhlYjA4MzllOWNmNTZhODBmMDg3MGM5YTYxOTEyN2I1MjBjIGxlZ2FjeS10cnVuaworMzUzNzQgYzJkZjhhNWMzNTdlMDBlNjAxZDNiZTBhYzE0NTA2NTM2ZmRmMzEwYyBsZWdhY3ktdHJ1bmsKKzM1Mzc1IDczOWFiOWRlMmExYmFhZDVmZTExYjg3ODBiM2E2ZWFjYTIxMTJjMjAgbGVnYWN5LXRydW5rCiszNTM3NiA1YjM4OThkOWJhNTk3N2FjNjgwNGJjYmI4Y2YxY2FhYWMwMWJhNTllIGxlZ2FjeS10cnVuaworMzUzNzcgZWJiYTU1ODJkYzBkYjUzNjFmNGI0MmMwMzBlZjRlMjUyNjM4YTFkYiBsZWdhY3ktdHJ1bmsKKzM1Mzc4IGJjMDA2NjgyYWNiMjFhMWUxZWRjZTFjMDEyOGY1YzUwNWE4ZDEzZDcgbGVnYWN5LXRydW5rCiszNTM3OSA4ZjYwMjE3YTc1NDc1OTlkYTIwYTVmMjQwZWE3YzNmNWI1MTVjZDhlIGxlZ2FjeS10cnVuaworMzUzODAgNDc4OTBjMzk1ZWJhYTIwZTRiZTFjYjdmNzU0YzRmYjRjYmNiZjQ1YyBsZWdhY3ktdHJ1bmsKKzM1MzgxIDYzNWVlYmM0NzNiMDY1Yzc1NGM4ZmNlNDNkN2EzMjM2YTQzMDExZTUgbGVnYWN5LXRydW5rCiszNTM4MiA3MDgwYTAyMTBjZjE4N2YyMDljMjMzM2IzNmM1ODkzYjNhMDU0MTYxIGxlZ2FjeS10cnVuaworMzUzODMgZDM0ZTdlYWY0Y2Q2YTc0N2U4MzZmZWQ2MWNhOTBhYWU2OGMwM2M1ZiBsZWdhY3ktdHJ1bmsKKzM1Mzg0IGI3OTU0MzNlMGJkOTE5NDFkOGQ3YzBhOTE2YWQxMWI5M2EzZWQ5YzkgbGVnYWN5LXRydW5rCiszNTM4NSAxYjAyYzc3Y2RjZmUxMzVjMGMzMjc4MjRmZjg5ZmNlMjI5YzYxMjhiIGxlZ2FjeS10cnVuaworMzUzODYgMTU0M2FmYWIxYjY3MmIxMjQ3YjFiZTg2MDViMTg3NDdhMTlkOTJjNyBsZWdhY3ktdHJ1bmsKKzM1Mzg3IDdlNGRkOTNmNGIyNzEzMTI2NjA2MTk0MGE0YTg4OGQ0ZDFlYTRkMzYgbGVnYWN5LXRydW5rCiszNTM4OCA3MmUzOGJkOTRlNTY5OGY2ZTMwOWFmMzIwMjA5ZjIzOWQzNzkxMzBjIGxlZ2FjeS10cnVuaworMzUzODkgMzE1NzdjMjgxNWRlNTFkOTdhMjg0NmVmNzQ5MzFkZjU3OGFlNWIzNSBsZWdhY3ktdHJ1bmsKKzM1MzkwIGI0ZTRkYmQyNGZlNzdmYzRlMmViNmE4YTZjZjJjMDk4YzkwZjU3MzQgbGVnYWN5LXRydW5rCiszNTM5MSAyMjhkMjY0YzVmYmJkOWQ4YWIxNTM2NDU3ZmEyODlkYmQyY2Q3NzlhIGxlZ2FjeS10cnVuaworMzUzOTIgZGQ2OWUzZjUyMjViYWZlNTA4OTgxYWMyZGQ2ZGYxYjllZjVmMmFhMSBsZWdhY3ktdHJ1bmsKKzM1MzkzIDViZDQ1NTYzOGM3YThhNDlkNGRmMzI5YThhMmM0YTE3MzkwZjMwYmQgbGVnYWN5LXRydW5rCiszNTM5NCBlYzZiYTAzYmE5NjI3ZGViOGYzNDZhMDY0YzAxY2M0ZmM3ZWY4ZjgyIGxlZ2FjeS10cnVuaworMzUzOTUgMDRlYjJlYmI0NmUyN2ExZjI2ZmI4NzcwNWVmOWE4NDdkOWY5MDI2MiBsZWdhY3ktdHJ1bmsKKzM1Mzk2IDk1YmZiNjUzZmZmYmEwMTIwODlhMjNlZDRhOGYzNTllOTY4OTJjNjcgbGVnYWN5LXRydW5rCiszNTM5NyAxMjUzZjZlMjBjZGVlMDViNGQ2ZDc3ZjUyYzc3ODk0OGI4MWNkYzZhIGxlZ2FjeS10cnVuaworMzUzOTggMGQ1M2VjZjIyZDkxNTIzZGE1MDM2NGZjM2JlMzFlM2E2ZTg2NGZhNiBsZWdhY3ktdHJ1bmsKKzM1Mzk5IDA0NzE0ODA4OWMzNWQ1OWU3YWNiYWZiYzUxYWY3MzI4Yzc3MTljYjggbGVnYWN5LXRydW5rCiszNTQwMCA0MmY4ODIwNjg2YzllYmE3ZDk5YTkwZGI4NDNiMGQxYmEwYTg0MDAwIGxlZ2FjeS10cnVuaworMzU0MDEgZWVhNjc0YmY3YjU5YTg2YWUyMTU5NmY4OTkzMzU5MjNkNGY0ZDRmOCBsZWdhY3ktdHJ1bmsKKzM1NDAyIDMwZTMwNWJmZGRkYmRjNDg4ZDc3NTFiY2U1NjFmOGFkMDY1MmZhNDQgbGVnYWN5LXRydW5rCiszNTQwMyBhMGZiMjdiNDRkNzgzODNhMzhiZmY3YjIyZjIwMzhjNWJjYjU3MzlmIGxlZ2FjeS10cnVuaworMzU0MDQgZGYwNjQ3OWM2ZTdjZDExZDJkNDcxN2Q2ZmM2MGIzYmRhMWQwMzFlNSBsZWdhY3ktdHJ1bmsKKzM1NDA1IDU3NjBiNGRkM2EyMjRlNDc3ZTFmMWFlNTZhNWZmYzU0NjkzYmYwM2EgbGVnYWN5LXRydW5rCiszNTQwNiA4M2IwMzgyZTBkMzYyNWFhOWQ3NGIwNzQ2Mzk3NGJlZWExNWM4MTEyIGxlZ2FjeS10cnVuaworMzU0MDcgZDEwYzc3OGFmMTY3YTBmM2NlZjVmZTA1NGQzNzhhMDIwNzMwNjRhYyBsZWdhY3ktdHJ1bmsKKzM1NDA4IDc2OTQ0MDg0ZTc1NmExNmI4ZDU4MWM5MDRlMTY0ZmY4Zjg2ZTQ1ZjkgbGVnYWN5LXRydW5rCiszNTQwOSAyNDM2NDJiYmQwM2YzNWU0NWUxYzZhOGUzOTc0ZWQzMTM0MDcxMWNiIGxlZ2FjeS10cnVuaworMzU0MTAgYmU3ODJkMDdjNTE4ZDI4YjI1ODE2ZmE4NDA2YWJkZGViNTE5NGUyYSBsZWdhY3ktdHJ1bmsKKzM1NDExIDM1Y2I4MTE0YjQ1YzI1YjBlOTNhMjI0MGM3OTQyZjY0M2FiZjBmNDIgbGVnYWN5LXRydW5rCiszNTQxMiBlZjA2YzIxMjRjYjA2ZTFmNTA5M2Q1M2NkY2QzNzYwZmE3MjVlOWM1IGxlZ2FjeS10cnVuaworMzU0MTMgZjI2MDA0NDhlODVjOTUwNjU3N2M2MDc1YjAwOTIxYThmOTJkYWZkMSByZWxlYXNlMjMtbWFpbnQKKzM1NDE0IDdmZmZkYjk0YTE3MmRhNDVkMjFjMWU2ZDZmOGY1ODI1OTA1YjA2ZGMgbGVnYWN5LXRydW5rCiszNTQxNSBmMjZkODI4NmE0M2U5ZTQ1YzRmZjBhOTIwZmY5NzAzNGFlYmEyZjE1IGxlZ2FjeS10cnVuaworMzU0MTYgMDM2OTNhZjQ2YWZiY2ViZTY2ZTg5OTA5ZjY5MGE2MDQ3ZTNmNTdkMiBsZWdhY3ktdHJ1bmsKKzM1NDE3IDI2Y2YyNTg2ZjJmZDI5OWUyMDc2OWQwODRlMzQ4YWM1NDdhMGExNjYgbGVnYWN5LXRydW5rCiszNTQxOCBiODk5MmU3ODE4NDBhMDg1YTM0MmM1MDUxMzI4ZmE2ODVkZjUwNDdhIGxlZ2FjeS10cnVuaworMzU0MTkgMjA2ZDg1NzVmNjQ0MTlmYTY2ZDM5NmExOGIzOTYxNzU5YmYxYzI0NyBsZWdhY3ktdHJ1bmsKKzM1NDIwIDM1ZjU2ZTA4NzI3Zjk1OTUzM2M5NmI1M2NjYzA1NGY5MDAzMmQyOWMgbGVnYWN5LXRydW5rCiszNTQyMSAxNTJhZGFmNzY1ZWIyZjA1ZjA1MjE4OTAzYWU2ODIxZDRmMzJiOGY1IGxlZ2FjeS10cnVuaworMzU0MjIgODhlOWMwNDQ0ZDRkZGE3ZWM3ODYzYjI3MmM1ODcwOGRiNzZhYjdhYyBsZWdhY3ktdHJ1bmsKKzM1NDIzIDNmNjkzYTc3MjY5NGUyMzExOTcwOGY4NGRlODQyNjg4NzhjYWJmOWEgbGVnYWN5LXRydW5rCiszNTQyNCBiYTk4OTk2YjRkNTBhODFjYmI2MGU1OWVjZWIxNTg0OGQ5ZTViYzdiIGxlZ2FjeS10cnVuaworMzU0MjUgOWE0YzQ5YzVhYzAzY2E4YjBlZDE3MTFlNDE1YjJlM2RiNTE4OTkyZCBsZWdhY3ktdHJ1bmsKKzM1NDI2IGFlNjAzN2EzYWRjZTk5NTU2YzUyMDM1ZWRkZWM4ZWZkOGM3ZWNkYWIgbGVnYWN5LXRydW5rCiszNTQyNyBhMzgzMGFlMjk0YWU2ODNkYjIxYzQxYTQ3ZmU3NDg0ZGM1NGQyNmMwIHJlbGVhc2UyMy1tYWludAorMzU0MjggYWU2ZmRhOTYwZDM5YmMzMDQ5ZGEwNTQwMjliMjlkMWVjZDQ3MDAyZSBsZWdhY3ktdHJ1bmsKKzM1NDI5IDYwNmYwNDczYTk2Njg3ZjQ4OWY1ZmMzYzM4MDIxNDk1MzQ0ZTQxNjMgbGVnYWN5LXRydW5rCiszNTQzMCA2YmNjYTQ3OTE4NDk5YjVkZWYxMDg4NGJjOGMxYWFjZTQxNWJhNDJhIGxlZ2FjeS10cnVuaworMzU0MzEgMDhjM2I0OTA1OTYxZGY2MDMyZGI2NDRkN2E5MTM1ODIzMDc3N2I0OSBsZWdhY3ktdHJ1bmsKKzM1NDMyIGE2YmNmNGRmMWE4NTc2ZGJhOWRkZWQ1N2U1ZTkwMWExNTQ3ZTY5ODUgcmVsZWFzZTIzLW1haW50CiszNTQzMyA1MzBhMGRlMzUxN2FhZjBlOTgzNzgzZTlhNzVhYjU5MTkxNWY0NTI4IGxlZ2FjeS10cnVuaworMzU0MzQgMjgzMGQ4ZTFhZjE4NWE1OWRjOTIzNTg4MWJmNjlhZmEyNDUwMGJkZCBsZWdhY3ktdHJ1bmsKKzM1NDM1IGY3Mzc0ZTNiMjc5YTg4YzczMjIxZjAwZGM5OTQ1ZGIxMGJkYzc3N2UgbGVnYWN5LXRydW5rCiszNTQzNiAyYmZjODg2NmVhOTkzODY4ZWMyMjlmNzE0YjUxNDNiNDQwZWZkMTkzIGxlZ2FjeS10cnVuaworMzU0MzcgN2JiMDMwMDY2ZWE0YjY1MDk3MzExNGVlZGU4YTQ4ZGM2NjY1MzBkMCBsZWdhY3ktdHJ1bmsKKzM1NDM4IGMwYTU0MmExZmMxYzhiOWI3YmNhMGFlNjVkNTA3NzE3NGEyYTljZTggbGVnYWN5LXRydW5rCiszNTQzOSBkYTc4Yjk2YjZhYWJlYjAzZTU4ZjlhYzIzNWY5YWI2MGEzODg3ZTg3IGxlZ2FjeS10cnVuaworMzU0NDAgYmIzYmNjYjNiNzdkNWFhMDAwZjUxMTYyOGMzNmE1MjdhYTcwODIzYiBsZWdhY3ktdHJ1bmsKKzM1NDQxIGNlODNhYjA3ZWEwNzMwODg2NGY2MWQ5ZGMwZjhmM2QzZTNmM2Q5MmIgbGVnYWN5LXRydW5rCiszNTQ0MiA2Yjc1MDYwNDY0ZjQ0NjI3Zjc3ZDk4NTllZTk1NzkzYWNhNjY2YjhkIGxlZ2FjeS10cnVuaworMzU0NDMgYzMyMzgxZjRkYzZmMmU1NDQ3ZDU2ZGIyZDBiMzUzNDdjM2M5ZDk0ZSBsZWdhY3ktdHJ1bmsKKzM1NDQ0IDAxNmYwMDZkNzFjYzNmYmMwZmU0ZWZlMzkzZDY1OTg5YTYxOWUwYzEgbGVnYWN5LXRydW5rCiszNTQ0NSBhYWZlNWZlZjU4YmFiN2MxMjNiM2RkOTc2OTQ3MWJmNzk3NzlkNTMyIGxlZ2FjeS10cnVuaworMzU0NDYgODIzMjc5YWU0M2ViMTBhZjk2ZjA0NDVkOWZkZmRlZTU2MDc3MTBjNiBsZWdhY3ktdHJ1bmsKKzM1NDQ3IGE4ODVlNGQ2NGFkMGI4OTk0NzIwOTIxOWY3YTA0OTlhOTI2Nzk3MjMgbGVnYWN5LXRydW5rCiszNTQ0OCBjZTcwZjE0NDZmMzk5ZTEyZTcyMmI5OGEwMjI3ZTk3M2U3NWEwN2FkIGxlZ2FjeS10cnVuaworMzU0NDkgMGZiNTA2NmZjMmE3ZmQ0NjhmMGU1YjVhOTcwOGVmMTcxMjgwZjQ3ZCBsZWdhY3ktdHJ1bmsKKzM1NDUwIDEyYmYzN2E1ODAxNWFmOTM2OWI4OWE3N2JkY2IzNGUyMjc1NjkyYTYgbGVnYWN5LXRydW5rCiszNTQ1MSA1ZThjNmYzOGUxNWI1YWNlMTVjYTU3OTcwMGQxZjhhYTRhN2ZjZDFhIGxlZ2FjeS10cnVuaworMzU0NTIgZjdiZmQ4ZjkxYzJiOTBjNzQyMzFjZmMyZDM1M2YwYjEyZTRlZTcwMCByZWxlYXNlMjMtbWFpbnQKKzM1NDUzIDZkOGExNDE0ODE1OWIxYmQ2MmEyMjE2M2I3NjIxYjMwMTY1NDM0OTIgbGVnYWN5LXRydW5rCiszNTQ1NCBhZDVjNjA4NTAyM2UyNDkzMTM5ZTE2YzEwMWQ5YTM3YTQ3M2Q4MmJhIGxlZ2FjeS10cnVuaworMzU0NTUgMzMyZDNmZmFkZjI4N2ViMjRhNGVjZmNjZDEwOTIxOGM0N2YwNWQ2MCBsZWdhY3ktdHJ1bmsKKzM1NDU2IDUwNzQyMmVhYTc2MzU5M2U3Yjk1OTkwY2M4ZTM4MGUxZDdjOWMzYjIgbGVnYWN5LXRydW5rCiszNTQ1NyA5MmQ0MDIyMDllOTBmOTc3ZWYzNWI4ZjI3Y2UyOTQ3ZjAzNTJkZTAyIHJlbGVhc2UyMy1tYWludAorMzU0NTggZDA4NzcyNjQxN2VhOGExM2VkNTM5ZTVjNDFhN2YxZTIyMmYxYTYzNCBhc3QtYnJhbmNoCiszNTQ1OSAwM2IwZmQxY2Q3MjI1ODRhYWI3YjZkOTY5ZGY3MjZlNGQzNjBiY2U4IGxlZ2FjeS10cnVuaworMzU0NjAgNmJmODc5ODVhYTFlOThlMGE4NGUxYjc2NWVlZGNlNGNhNjhiMjc0OSBsZWdhY3ktdHJ1bmsKKzM1NDYxIDVlNjNjMmU5Yjc5MjUzMTM3MDIyYWRhZGEyNjgzZTU0YTk3MGY2MTkgYXN0LWJyYW5jaAorMzU0NjIgY2ViNmFhZGRhYmNjNWQ5YTZmNDFkYmM1YjJmMWFjNzY5YjJiOGVkYyBsZWdhY3ktdHJ1bmsKKzM1NDYzIDViMjI0N2I5NTMyM2MzMjdkNTBiM2FhODRmYjc2MmZkOGFlNWNmMTggcmVsZWFzZTIzLW1haW50CiszNTQ2NCAzNmEyZDBlOGE5OTMzNTA0OWQyNjI5NzNhYzMxY2IyYTMyMDQ3ZDUxIGxlZ2FjeS10cnVuaworMzU0NjUgOTNmYjQwODFkMTA3ZmI0ZTk5YjUyNTgyMTgzY2ZiMjYxOWQ3ZDUyZSBhc3QtYnJhbmNoCiszNTQ2NiBmZmFlMmYxZmRkNDZjOGM2ZDE4OTllMTNjNWU5M2I1NzYzNTIyNmVhIGxlZ2FjeS10cnVuaworMzU0NjcgNDkwZWI2NGJjNWM5N2JiNWIwOGE2MmFmZDNiNTU3YjMyZGE4ZmQ1NyBsZWdhY3ktdHJ1bmsKKzM1NDY4IDE3OWUwNDMwN2VjZDNkYThhZjIxZTQxMjIzZjhiMGRiMzFiMmU3MTUgbGVnYWN5LXRydW5rCiszNTQ2OSBjZWFhZGJkN2YxOWE3ZTI2ZjQ1ZWE4NTFiMTdiMmU1NjkxY2VlMzZiIGxlZ2FjeS10cnVuaworMzU0NzAgZDk0OGRlZTZmNGExYmVkOWJlMTk1ODU4OThlMzE5YjFkM2Q2N2UwOCBsZWdhY3ktdHJ1bmsKKzM1NDcxIDBiMDA4NmQ1M2I4ZTg3OTU3NjE2YzQ5YWIwNDY4MTVlZjNmY2NiMjcgbGVnYWN5LXRydW5rCiszNTQ3MiBjNGViZjdjYTFiZGQwMWZkZDZmNTBhNTBmMzQzNWNhMmFiOWUzZTQ3IHJlbGVhc2UyMy1tYWludAorMzU0NzMgNjViMGM3YjU2MWRhZjQyZjY3Y2YxNTQ1OTc2Njg0OTViOTIwZDdmNCByZWxlYXNlMjMtbWFpbnQKKzM1NDc0IDUyYmExYTIyY2MyZTFiMGY4MjIyOWVlNTRkZjhjOGJkY2Y0NTQ4MzkgYXN0LWJyYW5jaAorMzU0NzUgY2Q0NzY2YjA2MzdlYTFkMjJiMmY2YjA1MWY4NjIxNmI5YWJhYzU0MCBsZWdhY3ktdHJ1bmsKKzM1NDc2IGQ2M2M1NjJlYmJlNTc0MmQzOTE2Y2M3ZmExMGRjMTRkZmUyMTc3ZDggbGVnYWN5LXRydW5rCiszNTQ3NyA5MTI2MGZiM2M4MTQ3NjM3NzFlYWZmNDRiYzdmODA5NzIzNzdhMTZkIGxlZ2FjeS10cnVuaworMzU0NzggY2M3YTlmZTgwYjFiNzU2MGY3NzY4ZjVjMzZlMWRlNjY4NDI1ZDRkMyBsZWdhY3ktdHJ1bmsKKzM1NDc5IDgyMGJiODE4ZDY5ODRjNTliNmIyN2MyYjM4NTA3NmFjYmRiNzg2MmIgbGVnYWN5LXRydW5rCiszNTQ4MCA2NjBmYzI0MmE3NjY5YjA2YmNlZWM4Mzg3MWE2YzljYjIwNDRmZTE2IHJlbGVhc2UyMy1tYWludAorMzU0ODEgZmQyNmYyOWU3ZWFiOGYyZmUxYTQxZDU3Yjk2ZWVhMGU5ZjY3ZjBmMSBsZWdhY3ktdHJ1bmsKKzM1NDgyIDA0MjBkM2NmZTRhNGFhZmRjMTNkOGZiYWQzZjUzODlhZTE0YTQ3MmEgbGVnYWN5LXRydW5rCiszNTQ4MyA4ZWE0NWNmZTE3ZmM2MDM4ZmJkMGFmYjI0M2VmZWUxMTcyOGU1ZGJiIHJlbGVhc2UyMy1tYWludAorMzU0ODQgYzgzNzk1MzI0MDQyNzQyYzYzY2ZjZDM4OGM0NjJiZTIwMzI2ZjYxMiBsZWdhY3ktdHJ1bmsKKzM1NDg1IGZhZmZkOTU3MmQ4ZDMyMzlhMDI1MThmNjUzMzU1MjYwZmVlNWMzYjQgcmVsZWFzZTIzLW1haW50CiszNTQ4NiBjNzU4NzY0MzJmYzZiNWFiNmRmMTEzNjA3YWViNjM1ZTI1OWE2ZmVlIGFzdC1icmFuY2gKKzM1NDg3IDI4NDY2OTQwOWJlYjQ2YWJkMWM1YWRiZDM2OTU3MzI4YzgzMzk1OTUgcmVsZWFzZTIzLW1haW50CiszNTQ4OCBkNjlmYjM1ZjFlYWVhNDM4YTc1Y2Q4MmNhOTc4ZWI2ZDk0MGQyMGQ0IGxlZ2FjeS10cnVuaworMzU0ODkgN2E0MzRmNDkzYzNlYThiODllZGM5NGUzY2U2MWJhZmJlZjgwOGYxNCBsZWdhY3ktdHJ1bmsKKzM1NDkwIDYzODY1NjExZWQyZmUzNTI0NTAyY2YwNTdiOGRhZDM2ZjI4MzZiNTcgcmVsZWFzZTIzLW1haW50CiszNTQ5MSAyNmQwZmQwM2Q1YjMwZWRhZjY5MTNhY2ExOTJiOTYxZDZkNDQyMDYxIGxlZ2FjeS10cnVuaworMzU0OTIgYzRkOWE5NmJlMmRkY2E0NTM1YjQzN2U5NzEzZmVlZGQ0MzFhZTUwMiBsZWdhY3ktdHJ1bmsKKzM1NDkzIDY1MDkzNTRlNzg3NjlkYjlhMmE3NmUzMzdlOTY2NGM4N2U3ODFlYTAgbGVnYWN5LXRydW5rCiszNTQ5NCAxZWMzZDY5ODRiMGYxMDg3NzYyOGUyZGE3NjJhNjM4YTgxODkzYTJlIGxlZ2FjeS10cnVuaworMzU0OTUgYjk2NzYyN2EyZjRmZTljOWFkNTRmYmQwNDA2YjAzMzI3OGVhMzAzNyBsZWdhY3ktdHJ1bmsKKzM1NDk2IGNlNjhkN2MwNjI5Y2MzODE2NzBlYWJhMTc2YWZkZWU5ZTVjODhmYmUgbGVnYWN5LXRydW5rCiszNTQ5NyBlODMxMjQwMmM4MTNkOGU4ZDMwODIxNmJlZmE5OTlkODZlNDczYTNjIGxlZ2FjeS10cnVuaworMzU0OTggYzAyMzUwMWMzOGQ3ODNlOWEzNDBlZmIzYTdjOTIwNjE3MTBhNGNmZSBsZWdhY3ktdHJ1bmsKKzM1NDk5IDkyMGFkNDQ2NWFhZWE1YTM1NDE1ZmJhZjlmYjc5ZjkzMmM3ZGYyMGYgYXN0LWJyYW5jaAorMzU1MDAgZDg5ODIzMmRjZGRiYmE4MDU4MjJmYmQzY2QwMTQwODM3N2M4MTZmNCBsZWdhY3ktdHJ1bmsKKzM1NTAxIGVlMGJhMDBiMjc3Y2RkMjM4NTkzNWM2NmFhZjIwZjRkOGM0M2VkNzQgbGVnYWN5LXRydW5rCiszNTUwMiA2ZmNiZjZhYzY5OWE4OTAyOTY4OWExNzhlMGFjZTMzYzUyMjViMGI5IGxlZ2FjeS10cnVuaworMzU1MDMgNTc5NjViMmRiMjBjNmRhZDljOTc5MDYyOGYzZTY5ZTc3NDk4MDM5ZSBsZWdhY3ktdHJ1bmsKKzM1NTA0IDA3YTJiNGM1ZDUwMzQxNzcyZmJjMmFlZTVlM2MyODg2ZjgyOTQxMzIgYXN0LWJyYW5jaAorMzU1MDUgZGJhOGRiNDEyZTM1NDk5NmIxODM4NTBkYzM1ZTY4NDJhYjIxNWU4MCBsZWdhY3ktdHJ1bmsKKzM1NTA2IDQ5ZWMwZDhmMDhlY2QzZjcwNTc0MWUyMTBiZmZmYjEwZWVlN2EzOGMgbGVnYWN5LXRydW5rCiszNTUwNyBhZTAwZDJkMTI3ZDFkMGE3ZDc5NWU2YjQ5Y2UyZDkyOTZlN2YxYzVkIGxlZ2FjeS10cnVuaworMzU1MDggMWY4MDZjYmUyY2UwNDgxYzc3ZWFhMzU4M2I4OGIyN2QzZDQzMWZkOCByZWxlYXNlMjMtYnJhbmNoCiszNTUwOSA0ZWI0NThjMzk0MWQ1ZTg1ZTczMzUwNmZlMTJkMTdlM2I3MTQxMTliIGxlZ2FjeS10cnVuaworMzU1MTAgMzEwMWMwMGY3NTQ3ZjAxZWNlNDlhZDRlMjg4MWFhY2IwOWU3YTQwOSBhc3QtYnJhbmNoCiszNTUxMSBjMDYxZjI1Zjc0ZTBjZGViYTdmMjZlYmY3MDUzNTk5ZWI5YWI3YWIwIGxlZ2FjeS10cnVuaworMzU1MTIgOTA3NDUwZTRiYzY3NTdkYTFhNGE3YmQ4ODQ0NmNmYTYyYWZlYTZjMCBsZWdhY3ktdHJ1bmsKKzM1NTEzIDM0NzVlNDU2ODQ3MTA5NTg4ODdhYjgzNGE2ZTdjZjAxNGRhYTdiMjMgbGVnYWN5LXRydW5rCiszNTUxNCA4YmYxNjNkMDZkMjlhZjhhZWU5Y2ZhZTc1N2ZjZWJmZDJiYjQ0ZWRkIGxlZ2FjeS10cnVuaworMzU1MTUgN2I2YzgyMjk3OTliYWU5YmYxYmJiYTZiYzU1ODViY2NiNjlhZDRhMSBhc3QtYnJhbmNoCiszNTUxNiA2NzFhZGVlNmEzZTNiMTFkZDdlY2EyYjRmODZkM2M5NzkwY2JlMTNkIGxlZ2FjeS10cnVuaworMzU1MTcgZjU0Y2RiMDFhMWFkNWRmNDRmMDlhZDE4OTMzMTNlZmQ2ZmI5ZDFmMyBhc3QtYnJhbmNoCiszNTUxOCAxNGY4YzkzM2Y4OGMwOTljMDA2OTY2MTE4ZjdiOTIyNGExZTJhNGY3IGxlZ2FjeS10cnVuaworMzU1MTkgZmU1NTQxYWFlMmQ4Zjg3NGY3MTNjYjc2MjMzNzgxYTlmNGU2NDM1YyBsZWdhY3ktdHJ1bmsKKzM1NTIwIDFkM2U0OGNjYWQ1NzNhNTQxYzMxZTNkNzliYjQyMzY1YTcwNTc3MmQgbGVnYWN5LXRydW5rCiszNTUyMSA0NTE0NGNkYjc3OTRhNGE2NWM5N2EzNjM4MzFiN2Q4NDQwM2ZlN2RjIHJlbGVhc2UyMy1tYWludAorMzU1MjIgZWYxODA4NTZkZjc2MTkxOGZkOGJkZGYwY2M3Y2Y2MDU3ZTgxNGE0YiBsZWdhY3ktdHJ1bmsKKzM1NTIzIGMyYjAxYWE0OTBlMTQ3YjViNzNjYmNiOGNkMzgyMTY2M2I4ZTQyOGUgbGVnYWN5LXRydW5rCiszNTUyNCAyZWIzMTc1ZmM1OWI3MmYyY2U5YWNjY2U2ZmM4OGU4ZThkYjdjMjk3IGxlZ2FjeS10cnVuaworMzU1MjUgOGE3MTRmZWNkMDU5YmRkODM3ZDg3YTYzODVmOTBkMjMwZjQxZTc1NiBsZWdhY3ktdHJ1bmsKKzM1NTI2IGE1YmQ4YjRmM2U1NWYxMzI5NTM2NjE4YTUwZjY3MTBlNzY5YWJmMDggYXN0LWJyYW5jaAorMzU1MjcgNTU1ZGM4NDYyMjZkZDI4NjEzMjI1NjlkYjY5NGI5YmI0ZWUwY2M5ZiBhc3QtYnJhbmNoCiszNTUyOCBiMzlmZGM5YzgwN2U2NWIzMjg5Mzc0MzcwN2E2ZDkzNDc1ZmFmNzFmIGxlZ2FjeS10cnVuaworMzU1MjkgMTQwNzQ4NDgzNjEyMGI1MzM0ZmY4MWQwMDEyZGNlYzczZDliYWFlNyBhc3QtYnJhbmNoCiszNTUzMCBhNzM3ZjdhMGYyYjhiYWRhNGQzOGYwYjc4MjFkMTY4ZjcwYjI3MGRlIGxlZ2FjeS10cnVuaworMzU1MzEgMTZiZjQ4NGIzODY0OTQ3NDgzMWU2MGRiNmNjZDVhMzMzMTc4NWYyNCBsZWdhY3ktdHJ1bmsKKzM1NTMyIDNlNDllYjMyNDcwYmI3ODdhYWNkNGNiNmFkNWUxNDQxNGM1YzA3NzIgbGVnYWN5LXRydW5rCiszNTUzMyBiZTVkMmEwN2JjMjY5YmFkYjE0YTdjN2Y0NmNiNzUwNTZlZTFiNWE3IGxlZ2FjeS10cnVuaworMzU1MzQgOTUzNmIyOTdkODNjMmQ3OGU4ZDYzMTQ2Mzg3OWIwNGFkNDI3MTAwNCBsZWdhY3ktdHJ1bmsKKzM1NTM1IGY0YTRhYzczMzFlYzkxZTg0ZDhmZDRlOWI2NjNmODU0NzFlMDI1ZmQgbGVnYWN5LXRydW5rCiszNTUzNiA2NDI2YjM3YmIyYTBmZGE4MjMyZTdjNmMxYTRlMDZjYWVlMDFiMWJlIGxlZ2FjeS10cnVuaworMzU1MzcgMzQ3M2RlYTNhYTRjMDUwODc3N2E2NzliMzhhY2M0MzQzZWY5YzI4ZSBsZWdhY3ktdHJ1bmsKKzM1NTM4IDVlOTE2ZDQ2YTNmYjY5MjYyMDNkMmQxZTE5NTA3N2ZkZmE4ZWQ4YjQgbGVnYWN5LXRydW5rCiszNTUzOSAyNGUwNzBlOTViZjhhMWQxNTM3M2U0MmQ0NWUzNmU4ZWZlODU3ZDQ0IGxlZ2FjeS10cnVuaworMzU1NDAgNzVhOTFmZDhiNTBjZmIwNjgxY2Q0ZTNmMDI0OGZmYmU1MTFkMzE5MiBsZWdhY3ktdHJ1bmsKKzM1NTQxIDEyMDE5MjUxNjAzMzkyYzMwM2E4NGFkM2Q0NDM5M2YyZDQ5MWI5YTUgbGVnYWN5LXRydW5rCiszNTU0MiA5ODE3ZGVlNWQ5ZGYwODVjNDJjMWM2YWM2ODAwYzQwOTliZmNmOGM3IGxlZ2FjeS10cnVuaworMzU1NDMgN2Y0NjRkZDY4MGFhYzA4ZTRhZGJiN2VhMmNiZjc1YTczOGQ4ZjI5ZiBsZWdhY3ktdHJ1bmsKKzM1NTQ0IGVmNTkxZTdjMzRmZDhlMDlmNTVmZGRkYWVmZWY2MWU4YjhiMWVhY2MgbGVnYWN5LXRydW5rCiszNTU0NSA3NjA1M2ExZGQ0NTI0NGRjMWFhOGQzNmRlMmM3OGI5M2ZhZjcxYTA5IGxlZ2FjeS10cnVuaworMzU1NDYgZmI1NTdhYzViYjlhMjViMTQ1NWE5OWEwM2Y1MDA2MDkwMDZkMjk5ZSByZWxlYXNlMjMtbWFpbnQKKzM1NTQ3IDlkODRjZWQ2NGQxMGM5YWU2OGVlNTZlZDQ0MzlmM2I4MGIwZjI0YWIgcmVsZWFzZTIzLW1haW50CiszNTU0OCAxNjRjZTFiY2FiNmUxZTMyMGZiYWYwMWNhZDhhNTBkNzI5ZmU5ZjMwIHJlbGVhc2UyMy1tYWludAorMzU1NDkgMzNkNDhkZjlhOTM3ODM0NTQ3NzhhY2Q5ZGU0ZTA2ZTVhMjVmYzM1YiBsZWdhY3ktdHJ1bmsKKzM1NTUwIDI5YmU3MjliMzJjM2ZlOTQxNjc5YWRkZDcyNTNmMjJkMTNkZTZjZDAgbGVnYWN5LXRydW5rCiszNTU1MSBjYzQ3YzFlYWY4MGFiNzIzOTA5ZWY0NmFlMzE3N2EzNTIxZWE3OThhIGxlZ2FjeS10cnVuaworMzU1NTIgYzRiYWUwODliZmM4ZjExNWJhOTNiNTRlNThhNDRiY2IyZjM2NjNmMyBsZWdhY3ktdHJ1bmsKKzM1NTUzIGVjMzdjYjFjMGVkODg4N2NlNGM3YmVhMWY5ODcxOTI2YzdjMjhlZjkgcmVsZWFzZTIzLW1haW50CiszNTU1NCBkNDQ4Y2MyNjFmNjlmNGIwODI3NWVjMGRlNzA5ZWQwZDJlZGYwN2JlIGxlZ2FjeS10cnVuaworMzU1NTUgY2UxZTBiNDk0Y2E3MDI0YzI3Mzg4OWFmMzI2NzUwZDA1YTk5MjZhNyBsZWdhY3ktdHJ1bmsKKzM1NTU2IDZhMTUwNTYxMzM1ODRiZWUzNThkNmEzNTE0NzAxYTRiNzJjZjdlNWEgbGVnYWN5LXRydW5rCiszNTU1NyAyM2U1Y2MzNGE5ODEyZTQzNGNkMDMwM2NjN2I4ZDg4OTQxZWU5YmYxIGxlZ2FjeS10cnVuaworMzU1NTggODM1YjY5MGQ3ZWQzYTUwNzJkOWU0ZjViNTRmMDE0NGUxMTVkYTk4NSBsZWdhY3ktdHJ1bmsKKzM1NTU5IGRjNWJkODQyMmQ1MjZhY2JiZDI3ZWEzODE0MjYyMjE1ZDBmNTNkMjcgbGVnYWN5LXRydW5rCiszNTU2MCBhNGVhZWVkNDA5OGI0ZDgzMDY2MjBhYjg2ZmRhNDZkOTc0ZjhhMWY2IGxlZ2FjeS10cnVuaworMzU1NjEgZmU5NDMzNWYzOGUyNDk3NGQxNzc5YjUyMDM2MGRkMmIwZWYwMzdiZiBsZWdhY3ktdHJ1bmsKKzM1NTYyIDIwMjRiNGU2ZTM4ZGE4MzUyNTkxYjliZTE2ZmE4M2RmNzA2YzMxYjUgbGVnYWN5LXRydW5rCiszNTU2MyBiZWZiMWVhNmM4OGViMmJkODEwMmJiMTk5NTY1MDNkYzE2ODg3YmM1IGxlZ2FjeS10cnVuaworMzU1NjQgMjlkYThiZGZlYjRlMzE5MmIzYjlhNTk1YTQ3NDYxZTE0MzlmNGExMSBsZWdhY3ktdHJ1bmsKKzM1NTY1IDg1ODY5N2RiMWU0YmVkYzdmZjA4ZDYyNDJhNTE0MmIwZTEzMmVhZmUgbGVnYWN5LXRydW5rCiszNTU2NiA1MmMxNzIyODlhZGQxYTNhMzg3MTBkMjQwMTBiZjgyMTI0MjYyNmY2IGxlZ2FjeS10cnVuaworMzU1NjcgNGNlMDk4ZjAwNWYwMDJmN2M0M2JhYjBmZmNhNjJkOWY2YTczNDkwMyByZWxlYXNlMjMtbWFpbnQKKzM1NTY4IGYxZDQ0Mjk1ZWJmN2Q5ZTkxNTU4ZTdiYzlkNTUwOGQxYTY1ZTUzNGQgbGVnYWN5LXRydW5rCiszNTU2OSBiZjM3NDI5ZjZkOWYwNTEzY2IyNWYzZjEwYWM5MzAxOTEwOTllOGNlIGxlZ2FjeS10cnVuaworMzU1NzAgMWMxMTdkYmIyZGVmNGY5M2E2MGI5MzJiNzE1Nzk4NTNlNGU3MTg5YyBsZWdhY3ktdHJ1bmsKKzM1NTcxIDg0NmIzZWU3ZTEwNmYxMjJmOGQ3ZTNjMTc4NjdhYjkzYzg1NDAwZDQgbGVnYWN5LXRydW5rCiszNTU3MiBjNzY2MDZmMzcyZDEzNGI5N2NiZjc1Y2QyOGM4NDA2NTgzMmJmZDdmIGxlZ2FjeS10cnVuaworMzU1NzMgZTYzNzliZGE5MWQ3OTY4YWUyYTk2MGZiMDFhYmEyOTlhMTMzY2U1ZSBsZWdhY3ktdHJ1bmsKKzM1NTc0IDM3ZGM4YzgwY2E3ZWQ5MjFmZTkyODMxNDQyYmFiODRiMjg0ZTYwMTggbGVnYWN5LXRydW5rCiszNTU3NSAyNzdiNWEyZjA4ZjVjOWY0MDkxZGEyMGUyMDY3YThmYzE1MWEyN2NlIHJlbGVhc2UyMy1tYWludAorMzU1NzYgNTlmZTA5ODI0MzYzYjBlNGZhYmZjYTYwY2E0ZDA1ZTVhY2VmZGI5ZCBsZWdhY3ktdHJ1bmsKKzM1NTc3IGMwNTFkYzZhYjM3NDM4N2JhMjYxYmU2ZGYxNWJhZmJjOWIzNDgyYWEgcmVsZWFzZTIzLW1haW50CiszNTU3OCAwMjYxZTM4MDExZjZkZTQyYTQ3Njk1ZGM3ZDk1ZDAzNDNkYzVjZjgzIGxlZ2FjeS10cnVuaworMzU1NzkgY2ViZGEyM2FhYWRiYzY5MTMzNzAyYjBhNTEzMWMwMTBjM2E1M2MyZCBsZWdhY3ktdHJ1bmsKKzM1NTgwIDA3ODAzMjQ0NGVjYzg5YzMwY2FlYjQ2ZWFhZjI2YjIwMzY0YjQ1M2YgbGVnYWN5LXRydW5rCiszNTU4MSBiYzZlYzk1ZjU3OTIzZDdmOTRmNDVkMDVhMTZmYTk1ZjJkZTkwZDYxIGxlZ2FjeS10cnVuaworMzU1ODIgNmM2OTEwZmQwMTNhNjI2NTUxZTg0NTc4ZmU4OGJjZmFmNjExZWY4ZCBsZWdhY3ktdHJ1bmsKKzM1NTgzIGY5ODIxNWRhYTM1ZmMyNTcwNTRkMDVlMTc5NDg5ODE4Nzg3OTYwN2IgbGVnYWN5LXRydW5rCiszNTU4NCA3YTEyMDQwMDg4OGFlZjZhODI3ZTJiYWM1YmUyNjg1ZWU3NDM0OWIwIGxlZ2FjeS10cnVuaworMzU1ODUgMWJlNTQ5OWYzNzhlOTk3MDBiYjE5OGJmNjk1ZDMxYjk2ZTI4NjI5ZCBsZWdhY3ktdHJ1bmsKKzM1NTg2IDRkYjk1ODcyOTE4ZWI5Mjg5ZjEzYzc4YjIxOGMwMzkxOTIwN2Q3OTkgbGVnYWN5LXRydW5rCiszNTU4NyA4MTg0YzY3NzcxM2ZkNjFlMDEwNTUwOTI5MTcyOWZjMTBlZTA1M2RjIGxlZ2FjeS10cnVuaworMzU1ODggOWExMWEyMzYxNTQ3NDVkZjMxYTlhNTgyMTEwODQ0ZTU4NjM2ZWI5YSBsZWdhY3ktdHJ1bmsKKzM1NTg5IDRiMDkzMGI1NjU2NWZkMjBmZTI5ZDc3NjUxNGU1Mjc2OGVjNTU0ZjkgbGVnYWN5LXRydW5rCiszNTU5MCA3NWUyZjc1OGVjNWEwNmI2ZGEzYTBkZjUxMzM3MWFkMjZmMWY5M2MwIGxlZ2FjeS10cnVuaworMzU1OTEgOTQ4OTk2ZjY5OWQyZTI5MmFkM2QyMGFjMzE1OTA0YWI0Y2ZiYzE3NiByZWxlYXNlMjMtbWFpbnQKKzM1NTkyIDZiMTg1OGQxMmY4Y2E5ZWJiMmU1ZjcxODE0YTc1ZDgwYzI4MDhlNTQgbGVnYWN5LXRydW5rCiszNTU5MyAxNjhkYWNmYmVlNjVhYTdjOWZjYmExNTFjN2NmZGZjMDFiMjZhNTY0IGxlZ2FjeS10cnVuaworMzU1OTQgODE3MGFhZGM5ZWNhNzRlZGY4M2U1MjVkYjUzYTA3YWVlOWQyYzg0ZCByZWxlYXNlMjMtbWFpbnQKKzM1NTk1IGIwODJiNGQ0ODFjMjU2MmRkZDMxYzNjODI0MDRiNzg5Mzg5MzUyYzMgbGVnYWN5LXRydW5rCiszNTU5NiBhNGFhN2Q2MWU0YWYxOTZlZjYwYjQwOWY4NmFlY2ExZGQxOWE0Y2UwIGxlZ2FjeS10cnVuaworMzU1OTcgYTJlODBmYTczNTliNTUwMDA4MGQ3NzFjMmJiOTcyZjgyYjk5ZjdjYSBsZWdhY3ktdHJ1bmsKKzM1NTk4IDMzMWRlOGI5ZDFlZDU1YzQ1ZmJhMzllZjU3OTU4YTA3NDgyMDJjODkgbGVnYWN5LXRydW5rCiszNTU5OSAzNGQ1ZWIxZTUwN2RjMjdhZjFiNmM2OTdlNjNkOWQ0MWU2MGY1NzBjIGxlZ2FjeS10cnVuaworMzU2MDAgZDA3ODgzOTFjMTNiY2YyMzA1NzJiNzg4ZjVmZmZiMGVhMTRiOTljNiBhc3QtYnJhbmNoCiszNTYwMSBhYWRhOTFjNWQ2ZDljNzI1NmNhY2I2MzZhYjdkY2YzNDJhNDNmYWM3IGFzdC1icmFuY2gKKzM1NjAyIDIyOTA4NTNhYjQwYTYyZDc5NTA0NTgyZmUzMzI0ZmM0YTIwYmRhMjMgcmVsZWFzZTIzLW1haW50CiszNTYwMyA1OTMyNDY5ZGNiMzU5MzMyNzdjZWFjNzU5YjEwNTlkMzM0ZmU4NzhlIGxlZ2FjeS10cnVuaworMzU2MDQgM2VmNTg4ODRiZGQ1MjFhMTZlZGI1NGM5MmFjYmUyMmVhZTIxNTgxNyBhc3QtYnJhbmNoCiszNTYwNSBmNGU1ZjljMmUyYjNiOTBjN2M5MzAwMzVjZTRhM2NkMzg5MWIyNWVlIGxlZ2FjeS10cnVuaworMzU2MDYgYTc2YWQ4M2E0MTNmMGUxMjE1MGJkNDEzNzRmODJlZjcxZjhiODAxZiBsZWdhY3ktdHJ1bmsKKzM1NjA3IDliMTdmM2NjMjNlZGNlZjZjMjRiYTk0NDQ4OTRhOTg4ZDhhNzYxZmYgbGVnYWN5LXRydW5rCiszNTYwOCBlMjYxZTBjMmM3MmQ3NWZkMzcxM2ZhODRhMWIzOGRlM2RjOWU0NmE1IGxlZ2FjeS10cnVuaworMzU2MDkgNjRlMmY3ZWM1NTc2YjNhNTg0MmZhZjQ1NzlhZTQ2YWVlMTY5Y2E0YiBsZWdhY3ktdHJ1bmsKKzM1NjEwIGE5MTBiODIyYjEyY2IzZmM0ZmNlMTk2Mzc5Mjk1NzhmZTg0NGNiODcgbGVnYWN5LXRydW5rCiszNTYxMSA3MzkxMjhjNjdjMzBlZjhkOTg3ZTc5ZjYxY2U0MWVmYmNkZDgzN2VhIGxlZ2FjeS10cnVuaworMzU2MTIgNDMzNjQyZjkzZDU5ZGJhZDRjOGEyZmJhNGMxNzA0ZGZlNzY0M2I0YiBsZWdhY3ktdHJ1bmsKKzM1NjEzIGU0MmNiYWZmODAyN2Q5MWZhYWI5Y2RmYjUxYjQ0Zjg2NjdiNmFjOTMgbGVnYWN5LXRydW5rCiszNTYxNCA4MTExNzkyM2FlOGYwYzQ1YzFlYTdlMjM2Yjk4MzgwOWU2ZjNjNTU5IGxlZ2FjeS10cnVuaworMzU2MTUgNjc3YzBiZjA1NzM1ZThjMTg2M2ZlZDI0ZDllMTA1ZjNiZjBkMjZjOCByZWxlYXNlMjMtbWFpbnQKKzM1NjE2IDRjMDZmNGZhZWQ4NzdiYWIxOWIzY2RiNTc5NGM2YmRkYzkyNGNkMzAgcmVsZWFzZTIzLW1haW50CiszNTYxNyBkMjBjYjYzNTdmNWVhMTYxYjM1YTEwNDI0YzQyNTExN2EyZTBiZjNkIGxlZ2FjeS10cnVuaworMzU2MTggYjFlYTJmM2Y0NjdlZjc4NTYyZGZkNzZkMTgxZjhlNmIwYjk4MWY0ZiBsZWdhY3ktdHJ1bmsKKzM1NjE5IGZhYTcxNGRkODZkM2YxMDVkM2E4YzBiYWUyYWExNmJmMDI2MWY1YjUgcmVsZWFzZTIzLW1haW50CiszNTYyMCBmNGMxYzNlNjI3ZGY4ZmU4NjYzMWUyNDI5Y2VjMTEzNDk4MDE0MzFmIHJlbGVhc2UyMy1tYWludAorMzU2MjEgODE0Y2M5ZjgzZmFhYjhkZTI1OWU2NTRjZjhhM2Y5ZGQyNDQ0NjFjYiBsZWdhY3ktdHJ1bmsKKzM1NjIyIDY0Y2MxNjNlZWFmMTIxMzUxMzZkNzIyYTBjYTVhNzczN2U4NmU3MjcgbGVnYWN5LXRydW5rCiszNTYyMyA5MjU1MjQ2NzE0NWVhN2Q4ZjI2YjQ4OTdhMDJkYjJmZTZjMjA1NjVhIGxlZ2FjeS10cnVuaworMzU2MjQgYzU3Y2ZhODMyOGQ0M2FhOTljZTY4MDM0MzRjNTMxNDU2ODdiODUzOSByZWxlYXNlMjMtbWFpbnQKKzM1NjI1IGM0YzdmMGYzOWZlOWI4MzcxZTg2NTJjZjEyODY2NTQyNzAxZjA3OTUgcmVsZWFzZTIzLW1haW50CiszNTYyNiA4ZDM4MmFiOTliZGJhOWU5ZDJlYjVjNjc2ZDQxNjg5YzRjZDM1YWQ0IGxlZ2FjeS10cnVuaworMzU2MjcgNjk2ZjRiYTlkZGY3YjE2ZDRkOWVhOGE3OWU0YTcwOTVkYzhjMzhjZiBsZWdhY3ktdHJ1bmsKKzM1NjI4IGFkYjQyYTcxMTY5NjA0ZDM2MDlhYzJmYmRiNjRjZjhjZDFjNzI1MGIgbGVnYWN5LXRydW5rCiszNTYyOSAyY2ZlMTQyNzVhMDQ0MDhiNjNmMGQ2Mjk4ZTBkYzdjODNkODk4N2VmIHJlbGVhc2UyMy1tYWludAorMzU2MzAgM2FkNDJiN2Q0NjYwYWMzYzE5NTIxNTMyNzZkNTczZjRkY2E5ODNmMCByZWxlYXNlMjMtbWFpbnQKKzM1NjMxIGY4YjI4ZTRhYzQzNWE5Nzc4OTRlMDIzN2E0ZmZkZWQ2NGE4YTUyNmQgcmVsZWFzZTIzLW1haW50CiszNTYzMiA1ZjYwYjIyNjAxOWU5ZjNiNDEzYWYwZWY4MGZkYmMyYWE5OGFhMTRjIGxlZ2FjeS10cnVuaworMzU2MzMgOGJjYjEyMWM1NDExMWJmYmExNzM2MzI1ZDUyNTU1MTFiM2VhZjkwMCByZWxlYXNlMjMtbWFpbnQKKzM1NjM0IDA1OTg5YjRkNmNlODE1N2Q2ZjI1MmViYzI0YWJiNjU5ZTc4OTM5ODQgcmVsZWFzZTIzLW1haW50CiszNTYzNSAwZDhlZTI4YmY2ZjAzZmZjY2FhNDBmZWMyOGY1OTMzY2NiYjljNmFiIGxlZ2FjeS10cnVuaworMzU2MzYgNTc2NWQ2NTZlMGVmZDg3ZDFjYzI3ODc2NDY3ODkzM2VkOWYzMjY5MyByZWxlYXNlMjMtbWFpbnQKKzM1NjM3IDUwMTI4ZmYxOTk2NThiMTQ3NjllY2FjMGM0OGVmYmJmOGY4YzFmYmUgbGVnYWN5LXRydW5rCiszNTYzOCBkMDRkNzg2YWI0NTgxMzc5NTEwZGZhNWY2Y2M5NjJhYzU5ZTM0ZmUxIGxlZ2FjeS10cnVuaworMzU2MzkgZGJkM2ZjMjE0YjY2NmEzNjgzYTBjZDlmZTQ4NGM1M2M3N2VhOGY2NiBsZWdhY3ktdHJ1bmsKKzM1NjQwIDAwNzFkNmViODBhMWZhMjA5MzllODY4OTU5NzE1YjA0ODdhZWI1OWMgcmVsZWFzZTIzLW1haW50CiszNTY0MSBhNDBkNzlmZTJhNjllMmFmZWM1MzczMzY5NjFiOGZjNzc2ZThkM2I3IGxlZ2FjeS10cnVuaworMzU2NDIgYjRlYzkyOTk1NjBkODA4OWIyNDA1NTdkNjdmNDA2MTdiNTZlMmZiMCByZWxlYXNlMjMtbWFpbnQKKzM1NjQzIDU1MjA0NGI1MDU4ZDAxOGQyMmQyMDc0M2U2Y2JmMWIxZDczOWRlYjEgbGVnYWN5LXRydW5rCiszNTY0NCA1MWFhY2VlYWFiZTExZWFmZTc0ZDYyY2IzNDI3YzdiODQ2ZjcwYjgwIGxlZ2FjeS10cnVuaworMzU2NDUgMTU2MDM3YmUzNTVkOTg0NjA3NjZkMGYwM2RhZDhiYWFmY2JiYzNhNSByZWxlYXNlMjMtbWFpbnQKKzM1NjQ2IDVhMzZlNGQ1YWE4ZjBkNDA1ODVmNDVkZWI0MDNjZTkwOGFiZTRmZDYgcmVsZWFzZTIzLW1haW50CiszNTY0NyBjN2Y5ZmNhOTQ2ZDE2YjcwNGMyM2I2MDI4NTM2ZWI5MzZmYmRmZDAzIGxlZ2FjeS10cnVuaworMzU2NDggMDIwZGM1ZGZkNWM1ZDg4ZGQwZjQ1NzI2OTVkYzRjZmM4YzQwNTJjZSBsZWdhY3ktdHJ1bmsKKzM1NjQ5IDlmNWZlNmIyM2U1OTIwZTU3OWQzYTZiYWNjM2RkZDAxZWJhN2Q0OGYgbGVnYWN5LXRydW5rCiszNTY1MCAyMjdjYjc0MDJjNmU5YmY2N2EwMGEwMjM1NzU0Njg3MjAxZmU1YWM0IGxlZ2FjeS10cnVuaworMzU2NTEgYzg4ZDQ2MTBmMjgzY2I2ZDE2MmI5NTgzY2Y0N2ZmZDBkMmUxNGNmYyBsZWdhY3ktdHJ1bmsKKzM1NjUyIDFmYjIzMTNhYzNjZWU1OGZlN2QzOTUyZTIxYTdiNjc5ZTczNTI0MmQgbGVnYWN5LXRydW5rCiszNTY1MyBjOTA2YmIyYTE4MjQ1NTFmYzg5ZmMxNGZjODY3ZTExZjQ2ZGYyYjUzIGxlZ2FjeS10cnVuaworMzU2NTQgYTJmYjE2Nzg0MWU4MzhjMjZiZDQ3NzljZmVkOTE2MWM5ZTRlY2M0OCBsZWdhY3ktdHJ1bmsKKzM1NjU1IDI2ZWUxYjNlYjM0NTFhNzBiNDc2NDJjZGYxMmVkZjRmZmU4NDk1MzQgbGVnYWN5LXRydW5rCiszNTY1NiAxYTNhNDhjYmIxNjI4ZDQzNDBhYmQ1YjJlODNhZjYxZTFkN2JmY2QwIGxlZ2FjeS10cnVuaworMzU2NTcgNGM2ZmRlYjhlMmUwMjE3ZjM1NmJmMWFlMGFkOTRjNWNmNzQzNjEwNyBsZWdhY3ktdHJ1bmsKKzM1NjU4IGYzNWI0YWNjNTk0ZjkwYTlmNjI5OGJhNDVkMTgxNWUyZjU3NWYzNzkgbGVnYWN5LXRydW5rCiszNTY1OSA2OTk3MDY1M2VjYmZhYzk0Y2U3NTgxNWVjYWIyMzU3YjhjNTVlNTRlIGxlZ2FjeS10cnVuaworMzU2NjAgZjljZDc5OTI2ZmY3Nzg4MWEyMTNjOTA5NWMwOTBiNGQxYjU5YzIzZiBsZWdhY3ktdHJ1bmsKKzM1NjYxIDk4NjU5NGMzZTRkOWRjMTAzNDYyY2VjNTIzY2ZkNjEzNGIyNjc4MjAgcmVsZWFzZTIzLW1haW50CiszNTY2MiA4YzI2NDIwZDFmMjM1M2EwM2NjY2JlMzM2ZTcyYzhiYWFiNTkwNWRlIHJlbGVhc2UyMy1tYWludAorMzU2NjMgN2I4MTcxMTliYjY2MGI1MzFhMzMzM2I3YmRjNTYyNmU5ZjhmMDMyOSBhc3QtYnJhbmNoCiszNTY2NCBjNjgxZDk1Y2Y3OWVjNTBjNWI4NTkzNDVmZTBjMTFmZjdiYzVhNmJhIGFzdC1icmFuY2gKKzM1NjY1IGMzNzBhYWU5ODIzMjE2MzZkYjljY2VhZGFiNTIyNDZkMDFiNGNjY2UgYXN0LWJyYW5jaAorMzU2NjYgYjQ2ODQyMzRiZjA3MDFmMDhhNzQ5YjFhZDJjMzdjMDE2MzVjYTdjMSBsZWdhY3ktdHJ1bmsKKzM1NjY3IDJlNTJjMjBkZWE0ZjYxZGE4ZGFmMGEyN2ViZGEyODc2ODBlYTVhZDQgbGVnYWN5LXRydW5rCiszNTY2OCBkZDkzYTMyYWMzM2VmZjNjYjg2ZDI3Njc5OTY4NTA0ZGIwNGMyNjEyIGxlZ2FjeS10cnVuaworMzU2NjkgZGZjOGM1ZjY2OTU5NTgyMTQ0ZGFiNmVkOWNjMTZhNTJlOWMzY2E5MiByZWxlYXNlMjMtbWFpbnQKKzM1NjcwIDg0OGJjZTIyMTVkMzViNmRmZmE5ZDg1ZmExMmNhNjY0NzYyODA3YTkgbGVnYWN5LXRydW5rCiszNTY3MSBjNzBiYjMyMjI3Y2IzYmZlNmEwZTgzM2ZkYmU5N2ZmNDEzZTYzZjM2IGxlZ2FjeS10cnVuaworMzU2NzIgMDgxOTcyYWUyZjg0NDIxZmQ2NGEzMjA2YTQ0MjY2NDRlNjkwZDQ3OSBsZWdhY3ktdHJ1bmsKKzM1NjczIDI0MTA4OWU0MzdlMDI5ZTljYTBmMjBlMzk5MDdjZGEwODAyOWVlY2UgbGVnYWN5LXRydW5rCiszNTY3NCAzMTBkZDk4ZWEwNjQ2MTljYjk4ODNkODBlOWMxY2YwYjZkY2M0MTFkIGxlZ2FjeS10cnVuaworMzU2NzUgYzU2ZWE2MGNiM2JmNzc2M2Q5NWIzZGYwYzBhMDI5Yzc5MTFiMzA0MiBsZWdhY3ktdHJ1bmsKKzM1Njc2IGNhMmZiNWNmMmZkNTc1YzcyOWJlMTI1MmE2NDY4MzViYmIzYTYzMGUgbGVnYWN5LXRydW5rCiszNTY3NyAyNzk0ZjYyN2ViYWEwMDE1Zjg4NzQzODk4NWQyNGFlYTBkZjk3NDEzIGxlZ2FjeS10cnVuaworMzU2NzggNjRmY2ZmMTIxZjdiNWRlZGM2NzdlMDc4ZjJjNDVjZGE0NWE3NjYyMSByZWxlYXNlMjMtbWFpbnQKKzM1Njc5IDZlNTRjNTkyODUzYzY0Yzc3ZWE4NWU0NjA2Y2Q1ZDA2Y2YwZDM1Y2UgcmVsZWFzZTIzLW1haW50CiszNTY4MCAwMjY1YmY5OTEyZWEyOTEwZDU4MzFlNzFmYmIxZGUwYjY1MzEzMzI0IGxlZ2FjeS10cnVuaworMzU2ODEgMzU1NDczNTM0YzcwNjgxMGY2NzQ2NjgwOWQyM2IwOGRjNDY5M2NmYSBsZWdhY3ktdHJ1bmsKKzM1NjgyIGM0ODg4YThmY2Y3MDYxYjY0NmExZjY0ZTYyMTAyZGYxNGVmODYzMDYgbGVnYWN5LXRydW5rCiszNTY4MyBlOTc1MThjNjZhY2MwODE1NmQ3MmYzN2U3NTlkM2M2ODgxZmJmNWRkIGxlZ2FjeS10cnVuaworMzU2ODQgODk3NWRlZmJmM2E4YjBhYjRhZWYxMTNkOGYxMmI1ZDg4MDVmNWQ3MSBsZWdhY3ktdHJ1bmsKKzM1Njg1IGU3NjA5MmQ0OTAyY2Q0NGRjZDZmYzc1MTM1YmEyMjBmMjE2YjYxMTkgbGVnYWN5LXRydW5rCiszNTY4NiBmMzljNTZmOGNjYzJiZTQ4NjQ1YWY5ZGU0MDM2MGI2ZmE1NmNkM2IwIGxlZ2FjeS10cnVuaworMzU2ODcgODhkNjI1ZDkyOGFjZGJhMDdlMDVlYmNmZjM3MzU5NzVmMjE2MmQ4ZCBsZWdhY3ktdHJ1bmsKKzM1Njg4IDA1ODgyMWQ4YWVmZGM1MGNkNDdmOWJkYzdkMzM3MTUyZjQ1ZTM5MGMgbGVnYWN5LXRydW5rCiszNTY4OSA2YjIzNjk5NDY4NGFmOTI5YzQ2MDAxM2U2MjFlOGY0MjNmMmM3NTUyIGxlZ2FjeS10cnVuaworMzU2OTAgY2VjNzQwZjkyZmE0MjI1MDAzNTUwNzk2N2Y2ZTE2NjFlNWRlMDVlZCBhc3QtYnJhbmNoCiszNTY5MSBiMzNkZGI0OGI3ZTA0ZTE1NmQ4MjFlNGNhNTExYmI2MTk3OTY5ZjM0IGFzdC1icmFuY2gKKzM1NjkyIGViNmY1OGMzZDk3MjVmMDUwZDNkYWZjMDRhYmViMWM2YzYyMGE0YTUgYXN0LWJyYW5jaAorMzU2OTMgMTZlNzUzZmYzMWIyMjY4Yzg1NTY2M2JiYjYwZjgwM2E4ZmE3NmIwZiBhc3QtYnJhbmNoCiszNTY5NCA0YTU0MzMwNmRmZmExNjhmMGM1YTg0MWZlZTY0NmQ1ZmQwN2RiNTBiIGFzdC1icmFuY2gKKzM1Njk1IGY3ZjQxM2M2NTRmNGZjM2I0ZTc0NzY3N2M0ODUyODBiOTAyZjg3YzMgYXN0LWJyYW5jaAorMzU2OTYgNTVjYTk3ZTdiZDBmYTM2ZDA3YjEyYTdjODI1ZGUzODZmNDE4NWU3YSBhc3QtYnJhbmNoCiszNTY5NyBiMjQyYjRkN2UxNzc0MjhiMDM1MGY0MmMyMmM2ZjBjMDMzODMyNzFkIGFzdC1icmFuY2gKKzM1Njk4IGUxMTQwZTYwMWU3MjI4NGU3ZDcxYWZmYWMwOGNjMzc4YWI4YjgzNzIgYXN0LWJyYW5jaAorMzU2OTkgNzM0ODZmZjZiNTUyZjM4ODdkODg4ODY2N2VhNzc5NGFjMTIwZjM3MiBsZWdhY3ktdHJ1bmsKKzM1NzAwIDlkZjUxODVmYzVjYWJlMWE3NzRjOWYwMmU5MDhiZTU0ZDE3Y2U4NmYgcmVsZWFzZTIzLW1haW50CiszNTcwMSBhNTg2Zjc1MmIyYmRjY2VmNWYyZDEwNTRlMDc5MWYzMTJjZjFmMDI0IHJlbGVhc2UyMy1tYWludAorMzU3MDIgNzAzODk3N2NlYThkZTYxMzIxYWI2OWJmYmM0NWJjNGFkZWRjNmNiYiBsZWdhY3ktdHJ1bmsKKzM1NzAzIDA4YTM5MWZkZTY4ZGFmMzc1Yzg2ZThmM2Q4NzcxNTU2ZWIyMjIwZDAgcmVsZWFzZTIzLW1haW50CiszNTcwNCA1NmZlZDA5ZDAxZjM3ZWQ0MzcyZWVkODJhODFlYzgyZDJmYzRmMDdmIHJlbGVhc2UyMy1tYWludAorMzU3MDUgNGJjNjIwZjQ3ZmI0MmVlZTBmNTlkYjA1ZWM4OWM4MmYwNTliZTY1NiBsZWdhY3ktdHJ1bmsKKzM1NzA2IDgxNjE5ZGNiZmFlN2I1NTY0NjZiYzUyZWFiOGQ2Njc0ODI0ZDE0MWMgbGVnYWN5LXRydW5rCiszNTcwNyAzYzc5NjQxM2YwNWU3MjlkZTM0MDM2NGEwMmVmY2M5ZjMzMTA4OGFiIGxlZ2FjeS10cnVuaworMzU3MDggMzljMzY1MjZkMWIwODIyM2U1OGNlYWNiZTRiNjlhYTIxZGU3MDkyOSBsZWdhY3ktdHJ1bmsKKzM1NzA5IGQwM2I1NGU2MGE2NzZiMWY3ZDJlY2RkY2U0MWQyZjI2YTZhZWU2ZTggcmVsZWFzZTIzLW1haW50CiszNTcxMCA0ZGIwYzg0ZjVjNmEzNTlhY2Y5MDI0YjY3NTA4MmJlOTczODkzZGQyIGxlZ2FjeS10cnVuaworMzU3MTEgM2M2MThjNjkzOWUzMzQyNzcyZTBhNTNlYTcxZDQ4ZDQyZjg2MzNkOCBsZWdhY3ktdHJ1bmsKKzM1NzEyIGZiY2JjZGExNGI5MmVjMzIzNTE5ZWQzNjkzYjUwZmRiMjM3OTM0MzUgbGVnYWN5LXRydW5rCiszNTcxMyAyMmE1NTAyOGE3OGQzZWE4MDY1Mzk0MzlkYjI3ZTIzNmIwNTE3MGQ1IHJlbGVhc2UyMy1tYWludAorMzU3MTQgNTE4NGQ2OWMyNGRjYjljNjIxMDdkNDRhZDJjZTRkZDM0YTIxOGI5NiByZWxlYXNlMjMtbWFpbnQKKzM1NzE1IDA5ODAwYmEyYTY1MzQ4YTMzYmNmMTA3NjEwMDcyYTY0NmVhYzM1ZjcgcmVsZWFzZTIzLW1haW50CiszNTcxNiA5MzkxN2RkOGE4N2MyMTBjZmM0OWQ5ZWQ4MTgxMTkwOWI3ZjY0YjU1IGxlZ2FjeS10cnVuaworMzU3MTcgNjA4MDI4ZjM4OGM1YzQ5Yzc3Nzc4ZWMyYWIzZWZkNzc0YTU0MTA4OCByZWxlYXNlMjMtbWFpbnQKKzM1NzE4IDg4NmQ2NmY1MTEwNWM0NzM2OWQ3Y2I4MDczM2MzOTA4MDRiNmJkNTggcmVsZWFzZTIzLW1haW50CiszNTcxOSBmOGMwYWM1YmVmMDI4Y2MxNWNlY2FhNTM1ZWMzY2Q5ZjkxMzU1ZGU4IGxlZ2FjeS10cnVuaworMzU3MjAgNjNiNjhjYjJiNDQyZjRlNjY0ZmZhNThkNTk4Njk3OTQxYWUyNDg5MyBsZWdhY3ktdHJ1bmsKKzM1NzIxIDFmMjkzNGEzMThiNzgxYmE1OWY0NDE5MmNkZGQyNzAyMzVjOTkzMjUgbGVnYWN5LXRydW5rCiszNTcyMiAxMGJhMjQxNjIzOTExMGU4YWY3YjA0NTRkODA5MGQzOWFmMjk4OWIxIGxlZ2FjeS10cnVuaworMzU3MjMgZmRhYmI2ODA4ZDUyZmJmYTI1NGIwZTE4MjFkYTYyYWY3Mzc5OTkyYiByZWxlYXNlMjMtbWFpbnQKKzM1NzI0IDAxZWEwM2U3YjI2NWY4Yjc4ZjU5NzhlYmM5MGE4YjQzOTQwM2EzMjIgbGVnYWN5LXRydW5rCiszNTcyNSAwMWUzMTY0ODlkNjc5OTIyNDM2NjBkMWQ4MGU3YmNhM2JmNjhiMWViIHJlbGVhc2UyMy1tYWludAorMzU3MjYgNjYzNjgxMThhMTliYzAzNThiM2E5MWZkZDhkMjk4MzdjODM3N2MwNyBhc3QtYnJhbmNoCiszNTcyNyBmMWZkMWFlNDIxMzZhMDIzZTRmMzQ3ZWFiZDU5MzcwZWRiZTg5MjUwIGFzdC1icmFuY2gKKzM1NzI4IGM5MjE0MzgyNjY1ZjRjZjliM2JiN2U2YWNlZjUzM2Q4ZGUwN2JjNjkgYXN0LWJyYW5jaAorMzU3MjkgMDYwMTRmNzFmMTYzNmE5Y2YwNDU0ZTczZWZhNjQ5MDY5NzgwYzc1NiBhc3QtYnJhbmNoCiszNTczMCA3NjczYmZmNzQxMjI4YjgzNDk1ZGQ3NTEyNTNmZjE2MTA5N2RhY2FjIGFzdC1icmFuY2gKKzM1NzMxIDRjMzRhYzlkYTkzZDQyNDY1OTdiZGQxY2UxYmFmODY5OGY0Zjk3ZGEgYXN0LWJyYW5jaAorMzU3MzIgN2M3YTI5ODE0NTVjYThiM2JjYjc1ODg3MjMwYjE0YzdiYjA5MTFhMSBhc3QtYnJhbmNoCiszNTczMyBmZjVhMzFhNzFkOWE2YjBlY2M1NTgzMjBmNzM3NGZiYmM3NGRhMzQzIGxlZ2FjeS10cnVuaworMzU3MzQgZmYyNThjNjcxZDNjY2Q1MTJkMWE5MjI5ZDI5OTAyOTA0Njc1MWEzZCBhc3QtYnJhbmNoCiszNTczNSBkYjhjNDViOWU4MTg2ZWMyZTUyZTM3ZGZlZmY2N2I2ZmE0NzQxOTgyIGxlZ2FjeS10cnVuaworMzU3MzYgOWQxNjMzZTZjNDJlYjlkMzhhYWY1YjkwMTFkZmVlYzFlY2JjYzg5YiBsZWdhY3ktdHJ1bmsKKzM1NzM3IDA1OTc0MGQ1MmFlNWM0ZThmM2Q5YzRkMmVlNjQ1ZmFlMDZkNzIwYzkgbGVnYWN5LXRydW5rCiszNTczOCAzMjAzNTRiNzY2ZTcyZDMwNGRjMzA2MjlkYTNiYjMzNGI3MDg4M2NlIGxlZ2FjeS10cnVuaworMzU3MzkgMTI2ZDgxNTU0NmQzMzc5ZmIzNjJhY2JlNzM4MjU5Yzc0OTk4N2MxOCByZWxlYXNlMjMtbWFpbnQKKzM1NzQwIDIyOGVhNzU3NzBlM2RlODMyYTQxN2Q4ZjYxNDdjNGNkNGQ3MGZiNmIgbGVnYWN5LXRydW5rCiszNTc0MSAzMGVhMGIzNTJmYzAyZmRiMmQzMTA4OGFhZTA3ZWEzYWUyM2I2NzY1IGFzdC1icmFuY2gKKzM1NzQyIDNiNDQwMzM2MDc3NWYwNDIyMzMzMmUxY2VmMzMzOWYyZTRmNmZkNTQgYXN0LWJyYW5jaAorMzU3NDMgYWI0OWU2ZmQ3NzQ2NTAwZTBhMmFkOTdkYTQ4Yjg4ZmEyMDM3NDNhZSBhc3QtYnJhbmNoCiszNTc0NCAyMGI1ZTlhNmVmNmIwYTVhN2FiZTJlMTc0MmUxNDRjYzY0MThjMTRhIGFzdC1icmFuY2gKKzM1NzQ1IDI4MjJlZDk1NjMwOWZlOGQ5NWRmMDhlMzMzYjcxNzU3YWI3MzVkZjggYXN0LWJyYW5jaAorMzU3NDYgYWFiNzc2ZDQxYjRmNTE4NGFjNDVkYzViZGNkZWI2YTc2NzhjZWRmMyBhc3QtYnJhbmNoCiszNTc0NyBiNjFlNWY5M2ViZTBhMTMzNDAwODhmMWVkNjgxNjRiOWJmN2I4NjA4IGFzdC1icmFuY2gKKzM1NzQ4IGNlNzZhOWQ2ZTY1MzA4ZjAwNGEyZTdkYzFjMThmNTNkZDA1MzRkODcgYXN0LWJyYW5jaAorMzU3NDkgMDYxMTA4YTg5NTE2ZjExZjQ1YTVkMmZiZDkyNWExZDhiZjFkYjMxNCBhc3QtYnJhbmNoCiszNTc1MCAyNDQ4ZjY4NGNlOWU5YzRlOWJmNmJhN2UyZDMwNDFmYzA3N2U4YjFhIGFzdC1icmFuY2gKKzM1NzUxIDRmMGExZTdhZDY5Y2ExNTljN2NmZTJmZDhjMzRhNDU2M2UwZjk1YWEgbGVnYWN5LXRydW5rCiszNTc1MiA4ZjFjZTdiMGU0MjNlMzI5NjA5YzBhM2NjYjg0YzgwZTQ4ZjY2YjYxIHJlbGVhc2UyMy1tYWludAorMzU3NTMgNjljMWFiNmIyNjAyMTQxYjBhN2NhNDVhNDEzNmViMWY0NDhhZjc3NCBhc3QtYnJhbmNoCiszNTc1NCA1NGFlOWRlMzhmMGMyZGRjMDAyN2Q0YTRhNjA2ZDYzMTYwYjM0ZjViIGFzdC1icmFuY2gKKzM1NzU1IDAyMDQ0M2ExMGMyMDI1OGQzODA2MWI3ZjI1Mjc5OGQ1NzNkNDg1YzcgYXN0LWJyYW5jaAorMzU3NTYgYmIyNTVmODU1OTk5ZTlmNjBlNTNmZGE3ZWM0MDQ1NjhlYjJjOTVlYiBhc3QtYnJhbmNoCiszNTc1NyAxODIyOTUzODFmMTQ3ZWZkODM1OTUyZTYxNTViNmM1ODQwZjc2ZDVjIGFzdC1icmFuY2gKKzM1NzU4IDU0NjVhMmNiMGFlYTdlNzczYTZkZDU4NmE2MDhhNzY3N2U3MjZlMzAgbGVnYWN5LXRydW5rCiszNTc1OSAwYzY2NzYxMjQzMDg5YTQzYjk4NDUxMjQ2ODM2NWRjOGYxNTVjOTZmIGFzdC1icmFuY2gKKzM1NzYwIDc2NWZlMTZmNjY1Yjg4ZDMxZGQzNDlkMzk0YTJmMGE5ZTI3OGE4MDAgbGVnYWN5LXRydW5rCiszNTc2MSA0YmU4ZTAxMGJkYjllOWMwMmNlMmI3NjU3NzAyMzJhZjdiNTg5OWQ4IGFzdC1icmFuY2gKKzM1NzYyIDIwMGJmNzljMDE1OTYwOWQzYzc1YmFkNTZhNDkxNWQ3OTdkYmJmY2IgYXN0LWJyYW5jaAorMzU3NjMgNTZmOWIzMWFjNjlmYTQwZjkyZTU2M2RjNjQ0MTlhZDE2YmYzMWE2OCBhc3QtYnJhbmNoCiszNTc2NCAzNDBlNDllMDE1NzY2NDdiNzkzOWZiNTA4ZjMwNTU4NzFmY2E2NjAyIGFzdC1icmFuY2gKKzM1NzY1IDBhZWNjMDdlMzVkOWZjNjI1ZWE1ODgwMDcyODBlZjQ3YmZjNzViN2EgYXN0LWJyYW5jaAorMzU3NjcgZjk1MGVmMzA5ZDc1MTJmNWVjYWI0ZTgwOTcxZjM5Yjg0MzhjNWY5NSBsZWdhY3ktdHJ1bmsKKzM1NzY4IDM4MzhjZGVlMWEyMDFiM2MyZTU5YmYyYWI2YzA4N2ExNDE0Nzg3YjMgbGVnYWN5LXRydW5rCiszNTc2OSA2MTY3ZTc4YTE3YTgyNmE4MzhmNTQ0YjlmY2Q4OTYxZTMwMmFjYjdlIGxlZ2FjeS10cnVuaworMzU3NzAgMGU5ZTBjNTM0OWEwZGVlYjBlMTRiOWNlOWVhOGJhMmEzOTRlNzJmMyBsZWdhY3ktdHJ1bmsKKzM1NzcxIDkwZTA4OTRhZWM1YmVkMzhkMzMyYzE4ZTc0OTMwMjNmMjlkNDA4NWQgcmVsZWFzZTIzLW1haW50CiszNTc3MiA1ODMxNzg1MThiZDBjZDMwN2U4MWE2ZGI2MWFkNDM4ODZkNzMxNTI1IGxlZ2FjeS10cnVuaworMzU3NzMgY2ZhZmFlYTkzZDkwOTVkYzRhOWY3YTc1ZTk2YzQ0NWE3NTRiZTE4NCByZWxlYXNlMjMtbWFpbnQKKzM1Nzc0IGVhOWVlOWI3NDY3MjljYjU0NGVjNDY0MTEzNmRjMTRhYzQzMmYwYzQgbGVnYWN5LXRydW5rCiszNTc3NSBmMmNlYTE2YTFmMzgyZDRiOTczM2Q5MGY5ODIwM2QwMWY0NWY4ZDE4IGxlZ2FjeS10cnVuaworMzU3NzYgNDdlZDdiY2RmMDg2NDZiNGNmYmQ5M2QzMjA4N2EyZWJmOGViMmNmNiByZWxlYXNlMjMtbWFpbnQKKzM1Nzc3IDMzODU3N2FmZGFiNmQ4YmQxMjIzODYwOGY1NTdkNWI5ODk5MjA3M2UgbGVnYWN5LXRydW5rCiszNTc3OCAxY2EzYTYyYTAwOWFkNGM1ZGQzZDRjYmUyNjhiY2ExMjViOTNiOGFmIGxlZ2FjeS10cnVuaworMzU3NzkgZjlmYWY1NTcxNzIwMmQzM2M0ZWE4MjQ1M2U5ZmE4MGI1NmJhMDAzZiBsZWdhY3ktdHJ1bmsKKzM1NzgwIGZhYTdlZWIxMThjZjQ3YWRhNWU4YmQ5NDI2MDU2YTMwMGE2ODA2MTggbGVnYWN5LXRydW5rCiszNTc4MSBhNDhlNjA4YmE2MDVmYTFiZTc0NDkzODlkOGJjZWY5ZWRkNmMwYjBlIHJlbGVhc2UyMy1tYWludAorMzU3ODIgNWNhMTAzYzM3ZDVlMGJkZDgwYjZkNjRjNWM3NDUyN2E4OGQzYzI3ZSByZWxlYXNlMjMtbWFpbnQKKzM1NzgzIDVhYjgxMmNkMGRiNzU2MjI2NTQ4MDVkNzI2MzI2NTczZmY4YWRiOTUgbGVnYWN5LXRydW5rCiszNTc4NCBlZjM0ZGVjMDA0Y2RkZjc5Yzc4MjVhYjUxNjdiNDEwM2EzNzA0MWQ2IGxlZ2FjeS10cnVuaworMzU3ODUgMjA0YjdiY2VhZDRjOThlZmJjZWU4ZTE3NjY2MjZlM2QxNzgxOWM4NSBsZWdhY3ktdHJ1bmsKKzM1Nzg2IDNkMDQ2ZDA2M2E4NGE5YmEwMTM0MTY2ODg5MjM3MzM4OWM4Nzc4YzUgbGVnYWN5LXRydW5rCiszNTc4NyAyMjc2ZGU4OTFmZTJlZjRkY2ZkYWRjYjE2YjY0MzRmZGM3OTU3N2NhIHJlbGVhc2UyMy1tYWludAorMzU3ODggMGM3NmE5ZTVjODM4MmMzYmQ2M2EyYTAzZmI5YzE2MzMwZDI5YzUwZCBsZWdhY3ktdHJ1bmsKKzM1Nzg5IDVjMzViM2NhNWJhOTNkOTZhN2I2YTRlMzg1MmRlYmIyMjRiOWM5NWYgbGVnYWN5LXRydW5rCiszNTc5MCAwZTlmZGI3NmFjODU1ZjliM2NiZGE5MDdmYzVkNWNmNGFkMTI5MzdlIGxlZ2FjeS10cnVuaworMzU3OTEgNTFlMWI2ZGNmZjYxZTkyMmM3M2E3YjU5ZjA5NjVkNmM4OGNhOWNlOSByZWxlYXNlMjMtbWFpbnQKKzM1NzkyIDdhNzQ5OWZiYzQ1Mjk5NjYxNDRhNTJlYmM0ZWE2YzFiODIxYzM2ZGIgcmVsZWFzZTIzLW1haW50CiszNTc5MyA2YzEyYTNiYWQ3ZDUzOWFmOTVkZWNkYWIyNzE3Yzk0OGIzZTIzNmQxIGxlZ2FjeS10cnVuaworMzU3OTQgNjMwZTRmYmNkZWEyNjVlN2U4MDJkM2Q0YzMzNjA1NzA2YzU2NzliMSByZWxlYXNlMjMtbWFpbnQKKzM1Nzk1IGM1YTU1MjU3ODM0NGY1Y2E3ZjQ0OWRlZGE3M2M2NTIzOWVlYWUyNTkgbGVnYWN5LXRydW5rCiszNTc5NiA5YjJiN2QzYjQyZjNhNjFkYzkwYjY2ZGIxYTJmN2I2ZDliZGVlNThjIGxlZ2FjeS10cnVuaworMzU3OTcgNjg3YjBjODI1NGZhYTQ1ZDI5ZDY4ZjIxYWMzMzg5NWYxMDQwMjhiNyByZWxlYXNlMjMtbWFpbnQKKzM1Nzk4IDY2NjdhMWQ4YWZiMTA0OGQwYWVhNDRjZDNkOTBkYTBjNjliNzgyNzUgbGVnYWN5LXRydW5rCiszNTc5OSBhNDYyNjRiOTFhNTE4Zjk1NGVlZGNjMWRjZGEyNTFhMTRjYWFhZDM3IGxlZ2FjeS10cnVuaworMzU4MDAgYjYxZmU4MjhiNzM4ODZmMjZmYmZjN2VjNWZhN2VlZDY4ZDNkYmFlNCByZWxlYXNlMjMtbWFpbnQKKzM1ODAxIDUxYTVmYjYwOTM0ZDc1MjM3NWMyN2ZiYWUyZjk3MDQ3MTk3MTU4NjggbGVnYWN5LXRydW5rCiszNTgwMiAyMjI5MDhkZmJmNThiZTk4MDM3NDUzMGFhY2ZkMDUxZmE2NTVmYWZiIGxlZ2FjeS10cnVuaworMzU4MDMgODYxNWYyNzhkYTVmMzU2ODFiZjZiMmU2YjVhNTlmMzcxZWQwOTE5MyBsZWdhY3ktdHJ1bmsKKzM1ODA0IDlmOGJmZDU0MjUxZjc0NDI4OTlhMTEyOWE5MDhhYjA2MTAzODk3OGYgbGVnYWN5LXRydW5rCiszNTgwNSA4YjJhNDI5YWY0MmZmMTY0MTVjZjZhNThhZjMxNzRjMWU1MGU3NzA3IHJlbGVhc2UyMy1tYWludAorMzU4MDYgYWI2ODBjNGFjZDM1YWY4MTNkMDJjZWM2NTc0OTI2M2JhNmQyMWFiOCByZWxlYXNlMjMtbWFpbnQKKzM1ODA3IDVlYjdhOGUyZjM0NTM5ODE2YWJhNDY2MDcxMjhlMzZkNjYyZTQwYzMgbGVnYWN5LXRydW5rCiszNTgwOCBiOWYwOTE5NjUyNmVhYjQwMDQ4MDkwZmM4OGUzZjYwNzk4NjAzYjYxIHJlbGVhc2UyMy1tYWludAorMzU4MDkgY2JiYWNkYTg0NDgwYWUyYmQ4NWQxYzYxMjZiZTc2M2M5ZjcxMTg5OSBsZWdhY3ktdHJ1bmsKKzM1ODEwIGExNDJlNGU5N2YxMzFhMGQ5OGY2NmY3YjgxMjAwYjQ5NjVlYzA4NTIgbGVnYWN5LXRydW5rCiszNTgxMSBlOGEzMWFiN2E4NzQ4ZTYxNDYwZmJhZTc0NjJlZGZhN2Q1MmY3M2EyIHJlbGVhc2UyMy1tYWludAorMzU4MTIgNGRlZTU4MzE1Y2M0MWZiMDRkN2I1NzExZTllZGY3YmU4OThmOGNiOSBsZWdhY3ktdHJ1bmsKKzM1ODEzIDY0NmNiMDE0Njk0MmUxZjU3ZDAzYWJhNzM2ZDU1YzNiZmE1N2ExZjcgcmVsZWFzZTIzLW1haW50CiszNTgxNCA4MmJjNjk5NjEwMjJkYzljYzljMmNiY2VkMzNmOGRmMmNhZmY5NWNiIGxlZ2FjeS10cnVuaworMzU4MTUgZjc5M2EwNDZlZDk4MTQyNmVhMjYzMmQ2MTAwNzc4NjEwNmI2ZmZlZSBsZWdhY3ktdHJ1bmsKKzM1ODE2IGViZmE1Y2Q4Y2JhNGQyM2U1Y2M4NDFiMThmOTc3OWM4NGE2NWY1NTMgbGVnYWN5LXRydW5rCiszNTgxNyAyNjgzOWYzMmU3MGQwNzFiYmZkMGJmNWI5YzJiMDZiMWVhMzBjNjlmIHJlbGVhc2UyMy1tYWludAorMzU4MTggNjQwODRmOWJhYmExZWMwNDZjZjhiOTg2OWI0N2I5NGRmYWU3MWZmYSBsZWdhY3ktdHJ1bmsKKzM1ODE5IDRlYjU3NGIxMjI1ZmFhYjdmNDQ4OWEzN2UxNDQxYjJiNjI4NjBjNTkgcmVsZWFzZTIzLW1haW50CiszNTgyMCAyY2M3MTQ5Nzc0NzkzNDE2ZTA3ZmI5ZDg1YmVlZDRjNjE4MGEyMDc4IGxlZ2FjeS10cnVuaworMzU4MjEgOTg0YjI4OTk5MmMwNjkzYzM1ZDdjMWI0ZjI5MGY1NDgxZTIzYzBkZiByZWxlYXNlMjMtbWFpbnQKKzM1ODIyIGMyNDkzMDViZmNhYzhhNTRlYzM2N2U3MzRjMDhjOTViNjljY2YwNTEgbGVnYWN5LXRydW5rCiszNTgyMyBlNGY1MmUyZTM4MDAwYjQ2NDVjNTE3MDI3ZTY0MGQ3YjkyMDA4NThiIGxlZ2FjeS10cnVuaworMzU4MjQgZWMwOWE3MTg0OWNjNjNhZGIyNmE2ZmI2MTU2ZTA3ZGQzNzQwYWQzNSByZWxlYXNlMjMtbWFpbnQKKzM1ODI1IGUyYTBlZjg3ZDRkNDBkYzQ0ZGRkNDhmYzQ2YzU2ZWQwYjIxMmUxNGIgbGVnYWN5LXRydW5rCiszNTgyNiAxNGY3ZjliODlkYTljNWRkM2ZlZmMwNDA2NDU3OGY3YjRiNjIxNmI3IHJlbGVhc2UyMy1tYWludAorMzU4MjcgNmUwNzhmNzYxM2FkN2FjMTFjMjRmNjg2NTg4OThlZDdlMGMwOTFmNiBsZWdhY3ktdHJ1bmsKKzM1ODI4IDQyZTJiNWFmYTcxNTczNTNjZDcyNmVlOGI0Y2Y1ZmYzMDY1NDY4MWUgbGVnYWN5LXRydW5rCiszNTgyOSA1NDRmMjE3MjM2M2QyMWY3ZTQ4NjI5YjZmNDhkYmU5OTFhNjc0NDY3IGxlZ2FjeS10cnVuaworMzU4MzAgNTA3MDhiOGYwZDI4NzgyZjcxNjlkMTAxMjkyNGI4NDE1ODYxOGUxNiByZWxlYXNlMjMtbWFpbnQKKzM1ODMxIGEyOWJhYzBhZTkwNWI5NGFiZmFiYTAxZDAxNDA0N2E4MWM1NDQyOTYgcmVsZWFzZTIzLW1haW50CiszNTgzMiAyNmUwOTBjY2JiNjRjMzdkMGI3MTliYzIyNDU0OWY4YzNlNzRjOGEzIHJlbGVhc2UyMy1tYWludAorMzU4MzMgNTgyZGNhMDJlNjBmNjU3YTkwNTE4NjM4YjllZGVmNzBmMTJlYjU2ZiBsZWdhY3ktdHJ1bmsKKzM1ODM0IDJkN2IwY2EwYzI2Yzk2MDM2NjM3OTFmMTI4ZTM5MTZiNDEyMWY3Y2UgbGVnYWN5LXRydW5rCiszNTgzNSBlOTAyNjlmYzE5MzY1YjEyYWM3NWRmY2E3Y2QwNGFkMDM2Mzg0ZjNlIGxlZ2FjeS10cnVuaworMzU4MzYgMzcxMjFjOGI2OTFkYTA4YTBiZmVhNWUzNTYzYjk0ZDYxNTRhMWU2YSBsZWdhY3ktdHJ1bmsKKzM1ODM3IDk4YTgwNzg4ODM1YzA2NjBlNmJjNGU4NTUwNzdlNmI5YjE0ODFiNGMgbGVnYWN5LXRydW5rCiszNTgzOCA0YzgyNTU4YjE1ZmIzYjY0MDlmMzE2MjY3ZjhmMjM3MjQyMjIxNDVlIGxlZ2FjeS10cnVuaworMzU4MzkgYTFiMzc0ZmYwMTg0MTY0YTQ5ODU1NTEwOTRjNTA3OTg2YjViNWEyNSBsZWdhY3ktdHJ1bmsKKzM1ODQwIGMxM2JiN2Y0YmNkMTg4YTcwZTNiZmZmNmFkOTlmYzhhZDkxZTVjNjYgbGVnYWN5LXRydW5rCiszNTg0MSA2MzVlZjExMDY1OGVmOGQzYzg5NzUwZDU4NzY0YjZmMDU0YWY0MGIzIGxlZ2FjeS10cnVuaworMzU4NDIgZGI2YTZkMzkxYTk5OGY1MmUzMjVhYThlNWE3NjRkOTY2NTBmNDFlYSBsZWdhY3ktdHJ1bmsKKzM1ODQzIGI1NTk0ZDcyNzlkZjY5ZTM1YmQxYTdlNDQ1NmZiNWJjZTljYzM3ZTYgbGVnYWN5LXRydW5rCiszNTg0NCBmNDM3NmY3Njc0YTIyMmU4NmZlNTk3NTIzYzk1YWJjY2JiYzRlZWQzIGxlZ2FjeS10cnVuaworMzU4NDUgYjljNjU4YWMwZTIwY2Q2YjZiZjU0ZDA3ZmJjZmQwZDE5NzFkODNjZiBsZWdhY3ktdHJ1bmsKKzM1ODQ2IDY5NmQ5MmVmZjAyMmZlNGY4NTk4ZGZmNWEwYTFiMmY5N2E4NjY3YWIgbGVnYWN5LXRydW5rCiszNTg0NyAzM2Y2YTE1ZGJmNmNmMDFkOGEzNzg4NjUzM2VlYTIyZGUzMzFjNTdmIHJlbGVhc2UyMy1tYWludAorMzU4NDggMDBlZWEyODEzNWY4ZmI3MWIxYTgwMGY2OWEzZTBiYzg1MzZkMTExYyByZWxlYXNlMjMtbWFpbnQKKzM1ODQ5IDM4MzEwOTQzM2E5NzI4NGY3MDQxMDY0YzM3YzMzNmJhYjhmMmEyYjAgcmVsZWFzZTIzLW1haW50CiszNTg1MCBiYTMxMjE2ZTM3YzhmMjFhNTcyYzZiYmMwZTI5ZWJjOGJhM2Q0YWU2IGxlZ2FjeS10cnVuaworMzU4NTEgMGIzM2UzNzM3YjRjYmQ3YzM3NjdlOWQ3YzRkM2U3YjU4MGQ4NDA3ZiBsZWdhY3ktdHJ1bmsKKzM1ODUyIGRjYmUwNDJiODkyZGY1YmJhOWY1NTNiMmE3NzY2YzU0ODVhNjY2MzAgcmVsZWFzZTIzLW1haW50CiszNTg1MyAyMmIwODAyYWJhNzQzN2YyNmVhZDYxMDdkYzA1NWRkZmU4MDg2M2YyIGxlZ2FjeS10cnVuaworMzU4NTQgOTFmNzZjZjQwNzNhMmFlOTRlOTU4YTViY2M4ZTk5YzJhYWEwMGIzNyBsZWdhY3ktdHJ1bmsKKzM1ODU1IDM1ODZhNzgwMWJkYWYzNmM0ODViNjQ1Y2RiNjY4ZWYwNzI4ZGZiNjggbGVnYWN5LXRydW5rCiszNTg1NiBjMzZlYTA3OTQ5MjAxZTc1MTcwOGJhYzQwYTg3ZjA5ZTMyMTkwNzQwIGxlZ2FjeS10cnVuaworMzU4NTcgZDgwM2FmY2U4YWM0ZTdmOGYzYTJhY2UxZWI5M2Y2OWMyNTMyOGM0NSByZWxlYXNlMjMtbWFpbnQKKzM1ODU4IDEzNmVmYmIxMTE3ZGViYjNhMDQzODNiOTk4MWU4Nzg2NjU5YjI5M2MgbGVnYWN5LXRydW5rCiszNTg1OSA5NTVlMjA2ZTUzZGMzNWUwNDljNWFkNTA0NTEzYTc1NDdkOTY3YjY5IGxlZ2FjeS10cnVuaworMzU4NjAgNmRiNDhjNWJkYjI3YWJlZWI2YzFmMjRkOTMxZTY2ODMyMzI3Y2E3MCByZWxlYXNlMjMtbWFpbnQKKzM1ODYxIDUwZDhhMjcyMTRlNmY4NTM4YTFkYjJmMzE0OWYxNWQ2ZTE2YTY2ODggbGVnYWN5LXRydW5rCiszNTg2MiA2NmVkZTAzODdmMzY3NDI4NGEzNmM0YTBjNGJmYWJiZDYwNzkxNDNmIHJlbGVhc2UyMy1tYWludAorMzU4NjMgOWY2ZDQ1ZjNjMDIzZDU3MTlmYzY0NDNmMTEwNzBhZDlkZGFhYzVmMiBsZWdhY3ktdHJ1bmsKKzM1ODY0IGMzOGEzOWQzODQ4OWIxMjY0YjIyYTg1YWI3ZjA2N2JhYTgyZmQ1OTEgbGVnYWN5LXRydW5rCiszNTg2NSA1YTIyNDY1ZmRhMjRmOWQ2ZjlhYmRiMDE4NDIwMWNjNWViNjk0NTExIHJlbGVhc2UyMy1tYWludAorMzU4NjYgZTg1MzU1Y2YxNzVhYWUwODUxZDFiMGFmMzgzZmI3Y2U2MDA1NmYzYSBsZWdhY3ktdHJ1bmsKKzM1ODY3IGQwOWJhZmI5NzY5ZjdlNWM3ODMwZjEzYjhjMTRkMDFhOGIyMDY2NTEgcmVsZWFzZTIzLW1haW50CiszNTg2OCA4ZmUxYTI2NjJhYWE1Mzg4MDBmY2M4OTcwNDU2NGFmMWIzNTgxZmViIHJlbGVhc2UyMy1tYWludAorMzU4NjkgYzc5Y2MwNDAzYWNmZWYzOWQ0YjA2ZGY4MTk2OGNhZmRmNGJkNDdiNyBsZWdhY3ktdHJ1bmsKKzM1ODcwIGM2ODAwODBmOTAwYzE2YzYwMjA4MzZiM2FlZTlkMGY1YmMyOWUyMzYgbGVnYWN5LXRydW5rCiszNTg3MSBlOWJjZTgzN2MxYzM4YzlkZGI1ZTY5MGJiMGQ1NWRkZTZlZjExMDc4IHJlbGVhc2UyMy1tYWludAorMzU4NzIgODYwMWM3ODVjNjgzZGVhMjJjNThjYzc4NDhkMzg3YzQyYzUzYjgwMiByZWxlYXNlMjMtbWFpbnQKKzM1ODczIGNmMzkyYjkzNmEyZTQ5NDIyMjBhZTdkYmNlZDIxY2NkMDAxODI5ZGQgbGVnYWN5LXRydW5rCiszNTg3NCAxN2JmOTVlZDc1NjJjOTgxMDZhNjAxY2UwOTNiM2FhMjI4NWVkOGI5IHJlbGVhc2UyMy1tYWludAorMzU4NzUgMTUzOGE4Y2ZiMGRkYTU0YTQyNGYyMzFlNGMxZDUxNDRjOTQxMzY1YiBsZWdhY3ktdHJ1bmsKKzM1ODc2IDUzYWJkOWFkMTkwOThmOTNlNTc3NTMwYzU4ZDE4MTY3OGNjNDFlNmIgcmVsZWFzZTIzLW1haW50CiszNTg3NyBmNjNkZDI5OWE2MGIyNzM1OWFhOWM3MzM2MWUyMGZhZmM4YWU5ZDE5IHJlbGVhc2UyMy1tYWludAorMzU4NzggN2FmZWI4MzZmNjZjNTZmZTc2ZjA5MWFlOTIzY2JjMWY5NDhkZjlmZiBsZWdhY3ktdHJ1bmsKKzM1ODc5IGEzOGNkNjNkMTdhNzRlNGViMzVhMzM3N2Q3YzE4MDlkM2YyODEzNWUgcmVsZWFzZTIzLW1haW50CiszNTg4MCA2NzU4YjYzMGFjYjdlZjg2MTQ0OGUwYjE1MWNlNDZmYjMwMTMzNWI2IGxlZ2FjeS10cnVuaworMzU4ODEgNjk0MzNmYzFjODE2Y2IyMmExNmZlOTYzMWM3YjUxYzkxY2Y0OGRlYSBsZWdhY3ktdHJ1bmsKKzM1ODgyIDQ2OWRjYjBhZDczOGJkNGQwMjA4OWJiNzhjNTQ2MDZmNGRlN2YxOGYgbGVnYWN5LXRydW5rCiszNTg4MyA2MWIyNmI5NWViMzNlY2M0NzQ5MjkwNjNjY2YxZTI4N2Q2MWNmNjZmIGxlZ2FjeS10cnVuaworMzU4ODQgMTIxYWFhNGJhOTIzNThmZWMxOTA1ZTFlNGRmYjFmZGQyZGQzN2VlZSBsZWdhY3ktdHJ1bmsKKzM1ODg1IDFjMjM4MWQ3OTdjMGY3NThkYWM4NWYxYmM5OGU3YTI0Zjg1NGZkNjEgbGVnYWN5LXRydW5rCiszNTg4NiAyN2RhODdjOTMxOGY1MzM0ZDJmNTgzOTMzZDdjYjQ5NmViYWY0ZmQxIGxlZ2FjeS10cnVuaworMzU4ODcgMDJmNzY5ZDdlNGE4ZTE3NGQ1Nzg0ZWY3ZTA5YWI2ZjE4ZTFiMmRmMyBsZWdhY3ktdHJ1bmsKKzM1ODg4IDI0YzQ2MDAxNDE2ZTFhMDUyNDc4YTllZDJiMDQ5YTEwNWRlNDA4ZDkgcmVsZWFzZTIzLW1haW50CiszNTg4OSBiMzE5ZGIzODY5ZDgyMmE2MjJjMmQ5ZDRiODFhZjdmNjk1ZTlmMzlmIGxlZ2FjeS10cnVuaworMzU4OTAgNjMwYTA5MTVhMzEwMWJlYzdhMDg1NDQxYzFhMmQ2YmUzZTJjYTFjYSByZWxlYXNlMjMtbWFpbnQKKzM1ODkxIGM3MDEwNzYwZThhZDE5YWJmZWQwY2VjMDZkNTcyMDk1YjFjNDVjZmIgbGVnYWN5LXRydW5rCiszNTg5MiBhYjBjOGRkYjJjOTI1MjhmNDQxYTA5ZTIzYmE2MDdmMGM3ZmRlOGJiIGxlZ2FjeS10cnVuaworMzU4OTMgZDY1ODljODhkMjNiN2E1Y2M2ODQzZWU0NzUwZTI1MzEzZmY3NjJiNyBsZWdhY3ktdHJ1bmsKKzM1ODk0IDMxOGJmNjk4ZTQyNWI1ZGRkNzkwMzVlNDk4MTdmMjBhNzRlYzZmNjcgcmVsZWFzZTIzLW1haW50CiszNTg5NSA2MDZhYWU5NWYxMjg5MjJmOGVmMTg1ZjVhMmFlNDBjMmE5ZDkwYmRlIHJlbGVhc2UyMy1tYWludAorMzU4OTYgNjU3ZmIyYTUwZThlZDMzNzA0ZWYyZDZlMjc0ZmFiNjI5MWQwYTIzZCBsZWdhY3ktdHJ1bmsKKzM1ODk3IDUyZTE0MGNhMTQ2YzVlY2U1MjdiNTIxOTczOWJmOWIzODRiY2M4MDQgcmVsZWFzZTIzLW1haW50CiszNTg5OCA0NWJhMmM2OWMzMWZkZGI3MmNhY2IwMTliMDY2Y2ZiZTkyOTA3ZWE3IHJlbGVhc2UyMy1tYWludAorMzU4OTkgNWUxN2QwNTMzYWQzNjQxOTdlNzM0YjI0YmQzOGI4YTVkOGJkZGE2NiByZWxlYXNlMjMtbWFpbnQKKzM1OTAwIDAyZjg5ZDEyZjAzNmY2YTgzMjFkZDJhZmY3YmUxZjc4YTkzZGNlNjEgcmVsZWFzZTIzLW1haW50CiszNTkwMSAyMDY1M2M5MDNkMWNhZmRhMmQwMTJhNzUyZTJmMzI4NWUyNjc2MDRiIHJlbGVhc2UyMy1tYWludAorMzU5MDIgZjc4ZDkzOGQ3YmIwODA0YTc2YjhhMDRiNmE5NmY2ZDlmOTE2N2M2ZCBsZWdhY3ktdHJ1bmsKKzM1OTAzIDI0NTgzNWVkOGRlOGRmMzc3MzgzZDFiODY1ZDliM2E5M2E1YjU3ZjYgbGVnYWN5LXRydW5rCiszNTkwNCA3YWZiMTNjMmQ1MjZmNDgzNzNlZGJiOTM2NzE4YjFiMzQxMzM4Y2U1IGxlZ2FjeS10cnVuaworMzU5MDUgMDU5MzE1OGQxNGYyZDVkMTI1M2JjOGJkZjA2MWYyZWY2NThjZWRhMSByZWxlYXNlMjMtbWFpbnQKKzM1OTA2IGFjZTNmMTNjMTgzNmY3OTBiYTZmNTJhNjc3MjFjZjkzMmUwOTk1YjkgcmVsZWFzZTIzLW1haW50CiszNTkwOCA1MmZlOTNiNjU2Y2Y1OTNkNDk5NjYzMDZlMmY2NjU3NTBjODQ3YjYyIGxlZ2FjeS10cnVuaworMzU5MDkgYTRiNTI2YjUwYzEyMjBlOTFmODg0NDE4ZjQ1MjAxYzlkNTQ5ZWRiNCByZWxlYXNlMjMtbWFpbnQKKzM1OTA5IDM2Mzk4NjFkMDI2NDZhZjFkYTMxMjNjMjU1NjBjNGRiM2Q3ZWRiY2UgcmVsZWFzZTIzLW1haW50CiszNTkxMSBlZTdmY2RlNTYzNmVhMTcwZjgwODM0MjQ0OWFhYjdiNTA2M2NlYWExIHJlbGVhc2UyMy1tYWludAorMzU5MTIgOWZlNDU3OTdjMDk3ZjQzODgwNjBmYWMxYzNiNzlmMDRmYzlmOWQwNiBsZWdhY3ktdHJ1bmsKKzM1OTEzIDI4MmRiZDliMWVkNmI3YTY5MjUxNjM5NWVhZjdkYmUyZjBmNzBmMTggcmVsZWFzZTIzLW1haW50CiszNTkxNCA2NzcyMzkxMDgzYzliNzUxZTQzY2Q0NTQ0YmQ3ZDhjZWJkNmU0OGJmIGxlZ2FjeS10cnVuaworMzU5MTUgZDZkZWFlOGJmNzliYjA1MmFiZGIzYWExMzA4MzMyMjEzYmYyMzk1NiBsZWdhY3ktdHJ1bmsKKzM1OTE2IDAwOTQ5YmM2N2U0OWJkZThmYmMxZWE5ZjY2N2U0MzUyODBmZDI2ZDUgbGVnYWN5LXRydW5rCiszNTkxNyA4YmQzMmM1MTU0NWUzZGY4MTRiMTQzNWNlYmZmOWZkYTUzZGRiNTcwIGxlZ2FjeS10cnVuaworMzU5MTggM2VkZjhkYjZmOGJmZDk1OTdmZWQxMDI5MDA5NTA5ZTgzYjFkYWI2NSBsZWdhY3ktdHJ1bmsKKzM1OTE5IDlkNTg0N2I4ZjMwMTFiNmZiMTJlMjUxMmNkNjcyNjMzOWIxOGUwNmMgbGVnYWN5LXRydW5rCiszNTkyMCBkM2NhNmJkY2JmM2M0NjM3NjczZTk4NzQ4ZmFjNDQwYjlkYWZmYmU4IHJlbGVhc2UyMy1tYWludAorMzU5MjEgMTYzODZjYmNhYjk5YzFhYzE3YmZiNTY4YmI5N2E4MGE2ZDc4YWI1MyByZWxlYXNlMjMtbWFpbnQKKzM1OTIyIDJkMzQ1ODVjM2I5OTQ3ZTY0OGRlYTM4MTE4YTMxNzg4MTI5MjA2NzkgcmVsZWFzZTIzLW1haW50CiszNTkyMyAzNzUzOGEzNmI2ZTJiMmFjODBjZTBlNDAzM2Q5ZTc3NmI2YzNmY2YzIHJlbGVhc2UyMy1tYWludAorMzU5MjUgYjUyNTU1NTJhYTZkYTQ5ZmI2M2Y4M2NhZmU0NDc2YWQzZTE0YTM3MyBsZWdhY3ktdHJ1bmsKKzM1OTI2IDk2YjYyNjk5YjIxOGY5ZGY5ZGRlMDA2M2U4ODEyODA4YTE4ODc4NjEgbGVnYWN5LXRydW5rCiszNTkyNyA2NjcyZjczMDkzZGEzMzNjODZjMWY0YTBmYTllZTI2YjliYWU4NTUwIHJlbGVhc2UyMy1tYWludAorMzU5MjggN2UzYTJjMjc0YjM2ODNmZjI2OTk2MGQ2YjM4NzNhNTBjODQwMTMyNSBsZWdhY3ktdHJ1bmsKKzM1OTI5IDRhN2Y3ZTgwMTZmYzI2YjVkNTg0MzVkMzZiZjdiMjAzOTBiNTg1M2YgcmVsZWFzZTIzLW1haW50CiszNTkzMCA5NGI0ODQ1ZTRkYThjNDk2NGU2YTI0NmNhNWQ4Nzk0NTBjZTgxMmJlIGxlZ2FjeS10cnVuaworMzU5MzEgMzAwZDVkNDYyMzg3MjE1ZTIwMjllN2ZhMjdkNjljODRiNWQxMjgzNSBsZWdhY3ktdHJ1bmsKKzM1OTMyIDNhZTAxYTExMDgwMTIyZmE0N2M1NWNlMTYzMmI5MGY0YTAyMzlhMDMgcmVsZWFzZTIzLW1haW50CiszNTkzMyBmYTc1M2MxNmM2MzMzYmYzZjk5MmU0M2ZjMmVlNWE3NTMwMzVhMWE2IGxlZ2FjeS10cnVuaworMzU5MzQgMWQxMzU3NDkwNmVmY2M3MTljMDAxYWFiYTM0YjU5ZGFjYTE4NjM3MCBsZWdhY3ktdHJ1bmsKKzM1OTM1IDcwMDIzYWYyMDg1YWI1MGVjMzIzOWM4NGZmOTY1MjljZjU4ZmRkYWYgbGVnYWN5LXRydW5rCiszNTkzNiA4NGRmYTlhNjdkYTE0NjE4MzIzMWEwOTcwNzA3MjBkYjRlYWM4YmJiIGxlZ2FjeS10cnVuaworMzU5MzcgYjZlNGJmMzM2ZGI4YTI0NzcxNTRhNzBkOTQ3ODkxZWU4ZDI4NzBjOSBsZWdhY3ktdHJ1bmsKKzM1OTM4IDI5YTU5ZjY2MmRkMTA0OTEyZWVlM2UyYTQzZWMwNWMzMmYwMzU5NTcgbGVnYWN5LXRydW5rCiszNTkzOSAwZGE0NGVhMDk5ZjU2OGUxZWU0MThjZDUyYmY5MjIyN2VjYjM0MGFjIGxlZ2FjeS10cnVuaworMzU5NDAgZGQxZTU1ZGVhZjUyZjhkYjNiOWIzMzQzZjkyZGQwMGQzZjNkNDExMSBsZWdhY3ktdHJ1bmsKKzM1OTQxIGMyNWE4YzA0ZGUzZTYxNTA5NDYwZjBjMThlZDVmOTNkNDMxNmY1NGIgcmVsZWFzZTIzLW1haW50CiszNTk0MiAzMDJkMzk5Y2ZkMzdlZWIxYjk3ZGJiYzgxOWU2NjFkMzMxNzgzMmMxIGxlZ2FjeS10cnVuaworMzU5NDMgOTU1NzdiNjM1YmI0MTkyODIyZTM0ODk1Njk3Yjk5NzUyYjFhNDlhNiByZWxlYXNlMjMtbWFpbnQKKzM1OTQ0IDVmNGYyZjUzNmY5NjFhYjIwMGRmZTczMmU0ZDI4ZThjNDIwZDFjODAgbGVnYWN5LXRydW5rCiszNTk0NSBkMWE5ODc0YzA5YjY5NGRhYzBiYzg3ZmIwYWIwNjVlMWY2OTI2NmFmIHJlbGVhc2UyMy1tYWludAorMzU5NDYgYjllZGQzNDE4YTMxZDkxNjQ4ZDNlYWZhNGU3Y2FmNDZmMmMyZTE0ZiBsZWdhY3ktdHJ1bmsKKzM1OTQ3IGIxNjY0YTgwMzQ4YWRhZjhhZDFiMGVmMDBhY2U3ZWExOGEwOTZlYjYgbGVnYWN5LXRydW5rCiszNTk0OCBiZGEwNjZjOTZlNGYxYTIzOGQzYjFmYmRmZWJjYTA2MTczZDM1MjhhIGxlZ2FjeS10cnVuaworMzU5NDkgYjVlNDBmNWQwMDBiNmE3MzBiMGQxMDVmMGVkNDc0MDUyMTQ5OTVmYSBsZWdhY3ktdHJ1bmsKKzM1OTUwIGFmZjY5ZjgwZjk5ODI1NDkzNGZlOTUwYmRkOWI2NWNkNzFhODMyMmMgbGVnYWN5LXRydW5rCiszNTk1MSBiNWExZTM2NzNlNWJlMTU5MTQ2YzUxNTBlOTNkNGZjYTM0ZGE3NWQwIGxlZ2FjeS10cnVuaworMzU5NTIgOWU0ZDE0NWJiNWNjNDY0MTQ0ZjY5NDVkNTEzNWUwMTExMWVkNTJiYSBsZWdhY3ktdHJ1bmsKKzM1OTUzIDI3N2Q0ODNmNTk2ODk2MmRiMWRjYmE2YWRhODRkZWFhOTJiOTdiNDkgbGVnYWN5LXRydW5rCiszNTk1NCBiNThkMzBmMTE2ZTJhODI0Y2UzNzY3MDRhYTczMzY0MzMyMzcxNzIyIGxlZ2FjeS10cnVuaworMzU5NTUgMzFiZGJlYzhmMjgyYzA2YjFmMmIzZDliYmU4ZDE0ODU3ZmQ2YjNlMSBsZWdhY3ktdHJ1bmsKKzM1OTU2IDRlNWI5NzhlNmI3ODAzNmQxMWQ2MTcxZmQ2NWNhNjIzYWEzZTVkOWEgbGVnYWN5LXRydW5rCiszNTk1NyBjMWNmYzVlNDgzNGQxOTNlNzVhMjUwY2IyZGFlOWZmZTY0NDljZmNmIGxlZ2FjeS10cnVuaworMzU5NTggZTA4MDM0MDdlMzc3NGU3M2MxNTZiZTk5NTk0Y2I3MzY1NzM1ZDQxYiBsZWdhY3ktdHJ1bmsKKzM1OTU5IGMzOTUyN2UyODAxMGZjMWVmNzFiODcxMmZmZmYxNWU3MzU3YzA0ZjIgbGVnYWN5LXRydW5rCiszNTk2MCBiMDU2YmJiNGVkZjk5NGRiMDdiMzY2NDZhOGY2YmUzNDllY2UyNWQ4IGxlZ2FjeS10cnVuaworMzU5NjEgODk5YTFmODhjYzVmMjQyZThjYzRjODA5ZTQ0ZjFhMzk3MzkxZjUxYyBsZWdhY3ktdHJ1bmsKKzM1OTYyIDMwNGEzN2MyY2I0MjU3YjZlZDNlMTdiYmQ5MDlmZDMyNzEwZTgxYmEgbGVnYWN5LXRydW5rCiszNTk2MyBhYTIzMzA2YTNmMjY5OTZhMWVhN2MxOTM5ZTlhZTVmMDNhMGUyNDk5IHJlbGVhc2UyMy1tYWludAorMzU5NjQgY2UzYzI3NzdiMjIyZmY1OWFiN2MxMDBkODA2NjExMTZhMjU5OThkMCByZWxlYXNlMjMtbWFpbnQKKzM1OTY1IDM3Y2FjMDY4ZjAzZmQ0NmUwMWRlOWY4NmE3OGYwNWZkNDMwMTllODYgcmVsZWFzZTIzLW1haW50CiszNTk2NiA1OWFhNTM0NThhOTNiNjI0YjBkZDZjNTRjNjFmOTgyYjBjZjliMGNiIHJlbGVhc2UyMy1tYWludAorMzU5NjcgYTEwNGFhNTQ5YTAyMmEwNmUyMzliMjE4N2ZlZGQ3MGQ4NzhhNzFjMyByZWxlYXNlMjMtbWFpbnQKKzM1OTY4IDVjYjI0ZGI4ZmM5NWIzNTljNjIyNWFjZTkxYjBjMjYyY2QzNzQzNGYgbGVnYWN5LXRydW5rCiszNTk2OSBiYWVkZjVmZmIyNmI0ZDJiNTA2MzUxZjI3MGVmMjIwODE1YTk3YjI5IGxlZ2FjeS10cnVuaworMzU5NzAgMDkyYWMxM2E0YzQwYTJmYTJkMTEyNTA3MTU4ODVjMjYwOTEzYWJiOCBsZWdhY3ktdHJ1bmsKKzM1OTcxIDY1ZjlhZDliYzgyOWRjOGI1OGVmZWI4NTVlYTU0Nzk2OTVlOWYyOGIgbGVnYWN5LXRydW5rCiszNTk3MiAwYWZhODFkYjRjYjdkMjRmZjJkOTlhZjkzZWQ1NzkyNzVhOGY5MGIxIHJlbGVhc2UyMy1tYWludAorMzU5NzMgMjY2ODg0YjA0OGJkMTI3Y2QzOTQwYTBhOWZmOGRlZjgzYzUxMzEyYSByZWxlYXNlMjMtbWFpbnQKKzM1OTczIGE3NGY5MDgxYzY5NzA4NzhjYWJlMTUxZjk2OTYxNzU4NzkxNTQwMGMgcmVsZWFzZTIzLW1haW50CiszNTk3NSA4NTM2NTk4Y2YwNGQ2MzY5ZDM1ZDFlNmNkNGQyYzFlMDI4MDFlY2ViIGxlZ2FjeS10cnVuaworMzU5NzYgZWZiODRlZDczNzdkZGQ2YzM5NWQ0ZjBjMDE3NWY3MzUzNWM3NGFiMyBsZWdhY3ktdHJ1bmsKKzM1OTc3IDU2YTRlYzA2NjYyMWRhMzkwNDBjMjc3NzBlYzAxNzk1ZjE4Y2ZhMTcgbGVnYWN5LXRydW5rCiszNTk3OCAyODYyYmY5ZWY5MTNlZjA1YjM5MjM5OGIyNzdkYjU2MWVhNDY0NTU4IGxlZ2FjeS10cnVuaworMzU5NzkgNjc5ZTVjOGVmZmFlMjExMmNhOGE0ODM3NjA4N2JlM2ViMWM2ZWE5YyBsZWdhY3ktdHJ1bmsKKzM1OTgwIDJjMTY5Y2E1ZmE2OWI4NDlhZDNkZmU0NTExYjE2ZmQxNTc0YTg1ZmEgbGVnYWN5LXRydW5rCiszNTk4MSBhZWM5Yzk4YTQ3ZDJlOTUzNjYyNGY4N2UyZDhiZTE3NTRiZjQwNjBlIGxlZ2FjeS10cnVuaworMzU5ODIgYzY1ODU1YzVkNTZiMWQxNDcxYjZmZGNkZjI5Zjk1NDU4ZjFmZDIyMiBsZWdhY3ktdHJ1bmsKKzM1OTgzIGU1MzE2MjI1MmZiZTUzNzhhNTBlNmVlYTVhNzI4NzY0NDc0OGNhMmUgbGVnYWN5LXRydW5rCiszNTk4NCBmYWQ1MmZmZDg4OTI0M2JhMWQwYzVhMWRhMzc0NjljZTFjZmUwZDMyIGxlZ2FjeS10cnVuaworMzU5ODUgMThkNmE4Zjk5ODIzODYxNGFlOGY1ODZmZjBhMjYxMmNjNTBmYzQ3ZSBsZWdhY3ktdHJ1bmsKKzM1OTg2IDQ0ODI4Y2MxMzZlMGMwYmQ1ZGYyZTU0Y2ZlMjUxMDdmMDIxZTkxOTEgbGVnYWN5LXRydW5rCiszNTk4NyBmOWQ1NGU5YjMwYmM4MTlmNjUzMWVlMWQxMTdiODM4MWQ1YzUzMjhkIGxlZ2FjeS10cnVuaworMzU5ODggZDA4N2E5NWU4MDMyMzE5MDJiMjhjMTBlMGUyMGI0YTJlNzNkZGJmNSByZWxlYXNlMjMtbWFpbnQKKzM1OTg5IDYwZWYxZGIxMGNlZmJiMDgyMTE2NjRiODBjMjk0ZDI3NTA2OTU2NjYgbGVnYWN5LXRydW5rCiszNTk5MCBmOGZmYTNlNmM0ZjJkZDhkMDA3NDM3NGVhMzFhNTU4ZjVkMWM5ZDVlIGxlZ2FjeS10cnVuaworMzU5OTEgYWNhNDQ1YTZiZWI3OTFhN2E1MzJmYTZhNmYzMzA3NGM5MWQ0NmY5MyBsZWdhY3ktdHJ1bmsKKzM1OTkyIDk3YjkwOGE5OTcxYTY0ZjBkMWNiMTNkMWVlZWY3MGQxODg5NWMyMzkgbGVnYWN5LXRydW5rCiszNTk5MyA3NDdiMmRjODI0NGZlYTMxZGIzOTE3OTdkNjlhNjZhMTg4NmRjOTY5IGxlZ2FjeS10cnVuaworMzU5OTQgYzc5YmVmYjNjMzE0ZDVmNWFlMWMyN2RhNjMyODEzOGE2MjUyZDZlMiByZWxlYXNlMjMtbWFpbnQKKzM1OTk1IGUyYjgxZjJjOGE3MGRhMjVlNzlhMjMwMTM0OTM4ZjA0ODA3YjQ4NTYgcmVsZWFzZTIzLW1haW50CiszNTk5NiA4ZWU1YTU2YjgwMzEyYmNjYTJkNWJmMWIzNDRhNzI1NDJmZDZiZTU5IGxlZ2FjeS10cnVuaworMzU5OTcgZWJhNmJhZWVhNGVhYWY4OWI5OGE4MmUxNzA0Yjc5MTk0NTIxZmQzNCBsZWdhY3ktdHJ1bmsKKzM1OTk4IGQzNjFjMTM1ZmE3NGU4ZDhmZjUzMGQ1YmFmNDgwYjY0OTk4MGJkMjUgbGVnYWN5LXRydW5rCiszNTk5OSAwNDFmODljOThjMzViZWU5MDFlMzhmYzRlMDZjYjA2YjZmNzc1MWQyIGxlZ2FjeS10cnVuaworMzYwMDAgMjc1YTc3ZjlhNTAwNjY0MzQxNDVjZGQ4ZWI3ZjljZGFmNTYyNmJiZiBsZWdhY3ktdHJ1bmsKKzM2MDAxIDU5YmIzYjFkNjA1OWQzMjYwMzg0ZDU0Y2E1NjY0YmRjZWVhM2ViMTcgbGVnYWN5LXRydW5rCiszNjAwMiBmM2QwNTY4Yzk0MzJmMGJhYWU4ZjRjMWU1NmE4YzkyMGFkN2I1ZjYwIHJlbGVhc2UyMy1tYWludAorMzYwMDMgMjI2NjI1ODljNGUyMDk4OWMyZjAwZDU4M2ZiYmFmZDJkM2FiNDIxNyBsZWdhY3ktdHJ1bmsKKzM2MDA0IGE3OTliMGQxYzU2ODdlODY5OWQ2N2ZmZGUzODRmNDNiM2RiYTVlYmYgbGVnYWN5LXRydW5rCiszNjAwNSBmMTU5YjE1ZjFmNWNiYWZlZjg5OWZjNWI0M2QxYzhkZjEzOTllYzVmIHJlbGVhc2UyMy1tYWludAorMzYwMDYgN2M0NjFhZWU3NDFiZWExYjY1NmM5ZjE1OTIzNWM1ODQxZDhiNDA5MyBsZWdhY3ktdHJ1bmsKKzM2MDA3IGFhMzlmYWMyYTlmZGY5ZmE3YTBlNGY4YzEzZjBhYjM2YjA0MjhmMzYgcmVsZWFzZTIzLW1haW50CiszNjAwOCBkZjliZDEyNzczMGFkYzllODJiNjc4Y2JhOTI2ODAzZTAyY2VlNWIzIGxlZ2FjeS10cnVuaworMzYwMDkgNzMwYTAzZjVkOGI0ZGUyZDIwNGRmNzE0MWJjYTY1NGRjZjMxZTg4ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDEwIGM3ZDliZTczYzdkZGIzMzVhODVmNDkzOTk4YWIwYmJkYTNlY2YzMTIgbGVnYWN5LXRydW5rCiszNjAxMSAxODVmNWQ2YTNhODhhOWExM2E1N2ZiMjIzYzJhYzU1YThlNDQ4YjA3IGxlZ2FjeS10cnVuaworMzYwMTIgMDNjODk1ODM5OTc5YzNkY2ZhMzEyZmQyOTVmZjAyNGQ5Nzc1Y2UxNCByZWxlYXNlMjMtbWFpbnQKKzM2MDEzIGFiNWMwODI1N2FkN2I0ZTc3OWM1ZDIyYTU0OGM2Yzk0MDFjZmJiZDUgbGVnYWN5LXRydW5rCiszNjAxNCBiM2M5ODFlZTlhZTk1NTgxZmE2NjAyZTRmNjNmZDAzZGYzNjNkNzUxIHJlbGVhc2UyMy1tYWludAorMzYwMTUgZDNhYWQzNzdhNWE5MGQ5ZmYwYmE4YzEzNWE5MDQzMWE0ZTJhNGJiYiBsZWdhY3ktdHJ1bmsKKzM2MDE2IDg4MDcxZDIwOGIzNGFhNGVjNDMyYmRhNDNlMjBkZjBjNTNmNDM3NmQgbGVnYWN5LXRydW5rCiszNjAxNyBhYjUxOWRlMTc2YmI5NDhmNDU1YzkxMDJlZDAwZjE3ZGQ3ZDcwNjdmIGxlZ2FjeS10cnVuaworMzYwMTggM2E4NGUyM2IwNDJmNDVlMDVjNzhjODMyYjZhZTJiZGQ1NGQwZGQ1YSBsZWdhY3ktdHJ1bmsKKzM2MDE5IDZmMjY1ZjJjY2IzM2NhYjdlM2YzM2UyNzE2NDRiYWRlNjEzNjRjOTIgbGVnYWN5LXRydW5rCiszNjAyMCA2ODIyMDI2ZDNjM2I0MTlhOGJkZDEzNzY3NjE5NzBhNmQwOGExMDkxIGxlZ2FjeS10cnVuaworMzYwMjEgMjJmZGFlN2JiYTFhZjcwNTExMjJmOTNjYmFjYzQ3MmVlY2FhOTkzNiBsZWdhY3ktdHJ1bmsKKzM2MDIyIGU2MjFlMmExYWIzMTAyZDNkNzMyMDIxMGNjNDQ5MGI1N2JjMWMxYWQgbGVnYWN5LXRydW5rCiszNjAyMyBlNWIwNDc3NjUyODViMzcyODViNzM1Njg4MTE0MzgwZWM4MzQ2N2U2IGxlZ2FjeS10cnVuaworMzYwMjQgYWJkNGI3OTU1MWQyZWE5MWZhOWJhOTE4ZjE0YjZiN2FhZjJkMWQyMCBsZWdhY3ktdHJ1bmsKKzM2MDI1IDlhMzkwMWJmNjIyMmY5OTE5YzIwNmE2Yzk5N2U3ODJlNWMyMDE2YzQgbGVnYWN5LXRydW5rCiszNjAyNiA2ZmZkZGE0Y2MyMjIxNWJjMzZiYTFmOGI4YWZhMTRiMDYwMTVkZTdhIGxlZ2FjeS10cnVuaworMzYwMjcgNWQ5NDJiZWRkMjhmOTNiNmIzYjIyOWYwY2YxZDFkNjc1YjU0NjVmZiBsZWdhY3ktdHJ1bmsKKzM2MDI4IGI5ZDNhYTNjZGU4YTVjMWE0MDM3YmMyNjNiMmVlNjdjZWU4NzM2MGMgcmVsZWFzZTIzLW1haW50CiszNjAyOSAzNzcxZWE5YTkzYWFkYTcyZWQwMDllNGY2ZGE5MmY2MWJlMzNiMDk5IHJlbGVhc2UyMy1tYWludAorMzYwMzAgODRlOGZlOTEyNDQwZDRiMWI5NzRiZjQ0YmJmNzU2NjUzOTc0NGYwYSByZWxlYXNlMjMtbWFpbnQKKzM2MDMxIGViNDFhNDg5Y2MyZjc4ZDFkNDEyMjdjZmRmYTE5ZTJjZWUxYTljZDYgbGVnYWN5LXRydW5rCiszNjAzMiAwMTA1N2U0ZjBhNjJkMGQxZmVkZTZjMmVjMjljZjAxNDlmOGU3YzkxIGxlZ2FjeS10cnVuaworMzYwMzMgZWIwZjg3MjY4ZDcwYWUxYjI4NzY2MDM2NzJhZjI5MTE5YzU2Y2E0OCBsZWdhY3ktdHJ1bmsKKzM2MDM0IDcwZGVlMmIxOTNmN2Q1MzExNjU2NDVhZDZkY2Y0OWNlMjYwYWFiM2UgbGVnYWN5LXRydW5rCiszNjAzNSA2NDc4ZWI2YWUzYzAxZTg0NjkxZDk1NGE5NDExOWNkMjFiNmZlNDc0IGxlZ2FjeS10cnVuaworMzYwMzYgYjAwYjI2Y2JjMzAzYWZlMWExZjcyYWI2OTNmMmM0OWIxMGVhY2FlZiByZWxlYXNlMjMtbWFpbnQKKzM2MDM3IGMwODYzNjY0NzliMWUwMGI2ZDEwZWVjMWZlNTg4OTFjMTg1NjIyZjggbGVnYWN5LXRydW5rCiszNjAzOCA5MWVhZTFlOTI1NzgxYjU0YzIzNWQyZDM0MWQ0NTM5NzhjMjA5MGYyIGxlZ2FjeS10cnVuaworMzYwMzkgZmRmNzVlZWY2YTVjMzNhOGZmMmFjN2JhYWY0ZWIwNGUzNjUyYjA5MCBsZWdhY3ktdHJ1bmsKKzM2MDQwIDJjYzdmZjQyYjlhM2QxMTYyODM5NjlmZDZjNTBlMmZhNThmMTI1YjYgbGVnYWN5LXRydW5rCiszNjA0MSAzYzIxNTg4NzYxOTRhMWFjY2EyYzJkNjI2ZDk1ZGRhN2QxNTlhNGQ0IHJlbGVhc2UyMy1tYWludAorMzYwNDIgZWQyMjhlOGExMzlmYjkwODk3Y2IxZjlkNzhkMzdiNzk5NmRiMzlmNSBsZWdhY3ktdHJ1bmsKKzM2MDQzIGVmY2E1MWVmNzg5ZGFmNWE0Y2EwZGZlZjQxNWMzNDk1YjI5NzBlMzUgbGVnYWN5LXRydW5rCiszNjA0NCBiMTA4N2UxZDQ0Nzk2M2FjZWI5OTczMTQ2ZTg3YWNhYzIwZGU3ZDk3IHJlbGVhc2UyMy1tYWludAorMzYwNDUgZmY2OGQ2YTVhNDQxZjZiZDJmNTk1MzM1N2M0MzM3OTVmMDIzNTM1MiBsZWdhY3ktdHJ1bmsKKzM2MDQ2IDE5NTRiN2VkYmZlNzAwMDM2ZWI2ZjU0M2YxZDEzN2ExYmNjODE4YjkgbGVnYWN5LXRydW5rCiszNjA0NyA5OTQyNDYwNGQzNmEzNzdkMjkxZGQxMTc5ODdiODY2ZTRhOTUyMzBhIGxlZ2FjeS10cnVuaworMzYwNDggYjc5MWY2NTU0ZDI4ZjJlZWFjZDJkMWYwM2Q1MDZlYzllZTljM2M4YiBsZWdhY3ktdHJ1bmsKKzM2MDQ5IDNiZmUyZjQyYjhmOTM4M2Q2MDVhZmE1NGVhODViZWU5OGY3ZjM3MjQgcmVsZWFzZTIzLW1haW50CiszNjA1MCAyNzk2N2ZiYmE0OGYzMWQ0YTgyNTRiODYwMDAyMWRmYWY2NzRlN2RhIGxlZ2FjeS10cnVuaworMzYwNTEgNmZjODgyN2M0MDNjMTYzNDE4YjBlYjQ4ODNjMzIyMWU5OGM5YzE3ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDUyIDUyNWFiYzY2YmNjMjhjMGZiOTQzMmM5YmU4YjM0Nzk3ZjRhNjQ4YjIgbGVnYWN5LXRydW5rCiszNjA1MyAwOTAxMmM2YjIwNjgwNWMzZjM1YzQ3OThkOWFjZmY0MDZjNWFiZjFmIGxlZ2FjeS10cnVuaworMzYwNTQgZWQzNzQ2ZGFkNzA1YTJiOTY2ZTUzYmFlYjFhNzU2Y2ZmMWQ4N2I0MSBsZWdhY3ktdHJ1bmsKKzM2MDU1IDZjMjhhZDgwNDdmMmRmYmE5MThlZTNlNGM1ZWU0NzJlYWRiYmJiM2IgcmVsZWFzZTIzLW1haW50CiszNjA1NiA4YzQwNzkwNjE3MDg1OGM1ZTc1YWRiOTU1ZDFiY2I2MTQwNWU5NGY2IGxlZ2FjeS10cnVuaworMzYwNTcgZDI0NGI1M2VjZmJlYmUwYzVlNmU3MGVjYjlkM2I5Nzc4MGFjMDUzNyByZWxlYXNlMjMtbWFpbnQKKzM2MDU4IDk2ODlkYTAwMTE5N2ZhOWVlZThiNGJjNWQ5N2QxMWExOTZjMWJlNDIgbGVnYWN5LXRydW5rCiszNjA1OSBlOGI0ZjU0ZjdkMTllYzY3Njg4YjgwMjA0N2ZmNzA0Nzc0ZDY3MjA0IGxlZ2FjeS10cnVuaworMzYwNjAgMzAwZGI4MWUyZTRhY2JlYzIyMWNhM2MzODAxMDhkOTdlMWFjMzFmOCBsZWdhY3ktdHJ1bmsKKzM2MDYxIGE2ZTA0ODQ3MjgwYTI2ZGVhNWU2OTg5NDNlODRmOThiYjg5Zjg2OTMgbGVnYWN5LXRydW5rCiszNjA2MiBiOTM0NWMzNTVmMDRiNzE5NzczNGUzMGU5MjZmMTE2ZTQ5ZTcyMDYzIGxlZ2FjeS10cnVuaworMzYwNjMgMGJkYjQ5YTVhOGZhNjMzNjUyYzQwOTRkYjhiNDM3MzAxMjBjZGE1ZSBsZWdhY3ktdHJ1bmsKKzM2MDY0IDY5NDUyOGU4NWEwNGQxZmJhNjNlNWVmZjZhYTFlM2Y1YjM1NzYzNDMgbGVnYWN5LXRydW5rCiszNjA2NSBjOGEyMmI1Y2Y1OGE1OGJhYTJhNjg1NDk3MjU0MmU0ZGZjNjQ3MjA4IGxlZ2FjeS10cnVuaworMzYwNjYgM2Q2NDI0YzAzODg4MmVkNTk2MmUyMTZhODEyYmNkZjA0MWE1YjI3YyByZWxlYXNlMjMtbWFpbnQKKzM2MDY3IDcwY2ZlMDY1ZWFjNTkyNjQ2YTJhZWJiYTMyNWIzZGMyMjg2MDkzYzQgbGVnYWN5LXRydW5rCiszNjA2OCBhOThmNTBlNTBiZWZhMWU1MmIwNTMwMWVmZDM0YTgzYzdkMmZmNzk3IGxlZ2FjeS10cnVuaworMzYwNjkgZGY0OTQzZDI0Y2I2ZGRkZTQ3NzIwNjZjY2YzOGJiZmM5MDhhYTFkNSBsZWdhY3ktdHJ1bmsKKzM2MDcwIDc0MDljMGMzNzBlMjEzMjU4ZGY4M2M2NWQwYWQ4OWVmYzI2OTg2MzIgbGVnYWN5LXRydW5rCiszNjA3MSBlZmNhMzUzZTdmZDY3NWY3MTE3OGFkOGMxMTZhZDJmOTgxOGM3OWE2IHJlbGVhc2UyMy1tYWludAorMzYwNzIgMjlmODc5MzJjN2M3OGJjYTM2N2JiNzU3YTk1NDVhNTk0M2JiNzZjZSByZWxlYXNlMjMtbWFpbnQKKzM2MDczIGE3MmJjNDI1NzMzNjUxZWI2MTQ5NWVlMzVlY2YyNGIyZmY3YmM4ZTAgbGVnYWN5LXRydW5rCiszNjA3NCBlYzZmOWExOTA4MzE5MzFjZmFkZDU1NzM5NjRkODM4MTAwOWQ0NWRhIGxlZ2FjeS10cnVuaworMzYwNzUgMTBhMDFjZTNlYTBhZTAxZGMzNTVmMjdlZmUxMWNmYjI5Mjc2NzFhNyByZWxlYXNlMjMtbWFpbnQKKzM2MDc2IDM2MzQ0MThhODU4ZTgyNzNiNGEwMGFmNzU5ZmQzOGEzOTI0NTdjN2QgbGVnYWN5LXRydW5rCiszNjA3NyAyZjVmMzhmNGJjMmI5MDA4OWI5NTY3MzlhZjE4NmQxMDljNTE2OGQxIGxlZ2FjeS10cnVuaworMzYwNzggOGMwMzk0YWVjNmRjZDQwZmRjM2U4MTNhYThhZWYwNTVkNjY1YzRiNyBsZWdhY3ktdHJ1bmsKKzM2MDc5IDNkZmU4MWFjMGU3Y2QwZGY0ZTIzM2ZiZDE0YjFhNmJiN2MzOWNiYjYgbGVnYWN5LXRydW5rCiszNjA4MCBhODBlZTIwMDRlNmNhNDkyYjBiOWEyZWU4ZTRjOTM5NDk3ZDA5NjUyIGxlZ2FjeS10cnVuaworMzYwODEgY2RhZDAwNWJjMDMwNzc1ZmVmN2JhYzY3M2MzOTJkNjU2OTQzNmNlOCBsZWdhY3ktdHJ1bmsKKzM2MDgyIGNiOTU3ZTY1ZjQ0NDliODY5OGI0OTQwZGVkYjZhNjIwN2IwZTRjMjIgcmVsZWFzZTIzLW1haW50CiszNjA4MyAzNjc5OGYxYzhlOWExYTY2ZmRkNzc4MDVlZjk3NmMxYTE0ODgzMGY4IGxlZ2FjeS10cnVuaworMzYwODQgYjljOWU3ZThiZTdkNTRmYjgxYTIxOTViYTg4MDc1ZjUyY2UyNTczMiBsZWdhY3ktdHJ1bmsKKzM2MDg1IGFjNGQ0MjBjYzc5OWU1ZDI2NmE3ZjQ2YTdkZjVhNzVkNzM3MmZhODIgcmVsZWFzZTIzLW1haW50CiszNjA4NiBiZGYyMzg3OTg5NDk5ZWRmMDY3NDk2ZDkwY2UwZmRjYzgwMDA2YTAxIGxlZ2FjeS10cnVuaworMzYwODcgYTg5Y2M1MzViNGM1NzU1YWFjODZiYjFlYTQ3NTBhNGQ0NGNmMGRkZSBsZWdhY3ktdHJ1bmsKKzM2MDg4IGVlYWE3ZmIyZjE2ZjdhMGVkM2ZhMzJiZWRmNDFhMzNkYmEwYjJkN2YgcmVsZWFzZTIzLW1haW50CiszNjA4OSA4ZTU5NThjOTNjODgyMTVkNDU4NzkyYTZhZjU4ZTJhODNlZmQ0MzAxIGxlZ2FjeS10cnVuaworMzYwOTAgOGVhYjc2NTU2MDFmZWQxMjEwMDBkYzBlYzQ0YWZjNjBiYWJiMTIyNCBsZWdhY3ktdHJ1bmsKKzM2MDkxIDQyYmIxZGNkZjE2ZTQxYmQzMzJlMDFkMDcyNmRmMzYzNTdkNTljMTUgcmVsZWFzZTIzLW1haW50CiszNjA5MiA0N2Q2NGNiMDE4MjA1ZWJlZDQxYmM5YTJjNWYyM2VhOTYwODJhZTdjIGxlZ2FjeS10cnVuaworMzYwOTMgMDE0YjBkODQ0MjJmN2I2MzFlMDAzZjI3OWQwNDAzODllM2NmNmJlZSBsZWdhY3ktdHJ1bmsKKzM2MDk0IDk1Mjg3Y2RkYmMxZWNhNTZjOTZjZTc4MDAxYjJkOTk4ZTc3MzJhMTQgbGVnYWN5LXRydW5rCiszNjA5NSA2MWFmNDcyMTNmZTY2NzRjODM2MjY3MTk4ZGE2ZmU0MzRjMmMwMzUzIGxlZ2FjeS10cnVuaworMzYwOTYgMWVlYWE1MDkzZmMwNDExMTYwNDAyYTdkMDBiNDE1NDBiNTFlNGQ4OCBsZWdhY3ktdHJ1bmsKKzM2MDk3IGFkYjU5ZDg5YjA5OTE2MDU2M2E0ODczZGQ5NWNhOTU5YjA1ZjE2MjYgcmVsZWFzZTIzLW1haW50CiszNjA5OCA3ZTcyNzNjOGQyMWViN2I2NzczNzM2ZGEwM2JkYmQ0OTcwNWJhZmUzIHJlbGVhc2UyMy1tYWludAorMzYwOTkgYzJiYzI0OGQzZTljNzBiNTY1YmY2MzBkMjg2ODk0ODk1MWNlYjM2MyBsZWdhY3ktdHJ1bmsKKzM2MTAwIGMwZDEyNjFkYTg0OGQ2MWVkYzcxZGQ4ODZhZDZmODZiMmM1MjY1MTQgbGVnYWN5LXRydW5rCiszNjEwMSBjYmZhMDQyODU1MjkwYTIzODFjMTAxY2ZiMmZiYjJkMTIzNjBkZjFkIGxlZ2FjeS10cnVuaworMzYxMDIgYjYwZmM1ZWZmMTU1OTRkNzc1MDRkMGZlMzBkNzM5ZWNjNWFiNmYxOSBsZWdhY3ktdHJ1bmsKKzM2MTAzIGZkNTJiNjgwNzkyNDhjYjE5OTA3ODM5ZTYxMjg3N2RiM2IwNTA5ZWMgbGVnYWN5LXRydW5rCiszNjEwNCA2ZGJmZWUyZGVkODk1NmU2Zjc5NTYzZmVkOWJhNjU1Mzk0ZjBlZjg2IGxlZ2FjeS10cnVuaworMzYxMDUgOTRiODQxYWRmNDg1YmM5OGFhZThkYTRmNDRkNmVlM2Y5ODZjN2ViYSBsZWdhY3ktdHJ1bmsKKzM2MTA2IDkxMzg4Yzg0NWIxNjk1ZmU0NjMwYjY1MzgyNTY0YTUzMDdhODE3YmMgbGVnYWN5LXRydW5rCiszNjEwNyA4ODJjZjExMzcyYTNlNGJkZTQ2NjQ1M2U2NTk1ZDE0YTE2ZjM4NTYxIHJlbGVhc2UyMy1tYWludAorMzYxMDggODU0YTI0MTdkMzVlYjUxOGFkYWVjNjZlNTEwNGU0NGZkZDRjYjdkOCBsZWdhY3ktdHJ1bmsKKzM2MTA5IGEwMThhZTM4NmY5OWUxYTQ5ZDE3NGMxNWY2M2JkMWNjMzg2OGM4ZGEgbGVnYWN5LXRydW5rCiszNjExMCA1Yzc5YjRmMTNiMjZmODI5MDBkYTllZjE4MzY3NGY2OWZmZWNlNTc3IGxlZ2FjeS10cnVuaworMzYxMTEgNzFiM2QyYmJlNjNiZmE3ODU0NzY5MmJmZTc4ZDg5ZGVhODM5ZTI1YiBsZWdhY3ktdHJ1bmsKKzM2MTEyIDQwYzUyNGMxYzBmZWZlYTY3ZWRkZmU4ZTRkNTdkNDNkYTBhYTY2MDggbGVnYWN5LXRydW5rCiszNjExMyBlMTM0NWNlMjc1Zjc5ZDgzNDcyODg1ZWJmYTIzOWFkMzU1YjQyNjRiIGxlZ2FjeS10cnVuaworMzYxMTQgNmQ3ZDAwYmYxYWFlNTk2ZWY2Njk1YWIyMDUxZmQyYzc0OGQ3Y2NiZSByZWxlYXNlMjMtbWFpbnQKKzM2MTE1IDgyZmU2ODMyZTUwNWRlYjI0YTc3YjRlYTQ1YmFiN2RlZDI0ZGVkMmIgbGVnYWN5LXRydW5rCiszNjExNiA4YWNmNDI0MWVlOTRmNWNjMTFmMmJmNjYwZGVmN2Q2YzZkNTcyYzUxIGxlZ2FjeS10cnVuaworMzYxMTcgYWEwYzg0ZDFmMDY3Nzg2OGZjN2JkNWRkMTk1ZjI2YzI5NTkzNjA0NyByZWxlYXNlMjMtbWFpbnQKKzM2MTE4IGNmODRkYmM2YTg4MWM3YjMxYzI3YjYyMTc5OTBiMzA3NDAwN2FmMDQgbGVnYWN5LXRydW5rCiszNjExOSAyOWQ3NjFjNTEwM2U3N2I1MTEyYmI4MGY4ZGUxYjM3OTgxZDI5YWUxIGxlZ2FjeS10cnVuaworMzYxMjAgOTJmNTk3YTA1NTgxNWVlM2VhZWMzYTM5ZTI0NDI5ZjI2NjlkODA3NiByZWxlYXNlMjMtbWFpbnQKKzM2MTIxIGM4NGZkNmJlNWExNGY0NDM2MWFkZmE0ZDBjMDNiMzIyNThkMWIwNGYgbGVnYWN5LXRydW5rCiszNjEyMiA0MWM1OWQ4MGJiYzVmNmZiY2JiMmMyYjM4YmM2Y2E1YmE3YzI3MjdhIGxlZ2FjeS10cnVuaworMzYxMjMgZTE5NmI4MjNlNmM1YmFkMWZhYWFlYTA4N2M5OWJmOGVmM2ZjMTM4YSBsZWdhY3ktdHJ1bmsKKzM2MTI0IGEwZDhiMTQ1NjgxOTMxNjZjODZhNGIzNmQ3ODYzOTYzYjYwNDk2OGEgbGVnYWN5LXRydW5rCiszNjEyNSAxNmFjYzYxZDMzYzAyZDZjYzg2MWU2MzcyMTBiMzA5MmU2YmI1ZmM0IGxlZ2FjeS10cnVuaworMzYxMjYgMTM2NTZkNThkNDUwMTQwNTk0Y2Y3ZGE3ODk1OGRiMDg2OWIxMmZlMCBsZWdhY3ktdHJ1bmsKKzM2MTI3IGNlZGM5NTQ1OTYzNmQ1MzJkNzVlMDUxYWVlMDQxZTU5MTBlYTRmMWQgbGVnYWN5LXRydW5rCiszNjEyOCBlYzg4ZjI3OGExYWQ0OTkwOWU4ODZiMTYxZmYwYmM4ZDc2NTg4YTM2IGxlZ2FjeS10cnVuaworMzYxMjkgMzIxOTczNzUxMjhlMjI2NTg4YzIzMmQyN2ZmNWY0MmNlOWQ2NTYxOCBsZWdhY3ktdHJ1bmsKKzM2MTMwIGZjNmE3MzkwNWU2ZjM4YzlkNDdhMjllYTE1ODU4MzE4YzdlNmZlY2UgbGVnYWN5LXRydW5rCiszNjEzMSAxOTE4ODg3ZDM4N2IwMTA0ZTNmM2MzYjNhNzkzNTZlOTQ5NzVhOTVjIHJlbGVhc2UyMy1tYWludAorMzYxMzIgYmNkMjFhYmFhNWI0ZjE1Yjg3OGIxMjk3YzIxNzIwMmE3ZTk0YWQyNCByZWxlYXNlMjMtbWFpbnQKKzM2MTMzIDQzMDFlY2JlYjNhZGZhNDEzNmMwOTgzNGM4ZjQxNzM0YmNmZDcxNjMgcmVsZWFzZTIzLW1haW50CiszNjEzNCBmYzQ3NjJlYmJlMmNmNjczNDcyZDZiYTlhZmQ0MDViNDJiNTM3N2YzIHJlbGVhc2UyMy1tYWludAorMzYxMzUgNDM5ZTcxYTRlNTU0Njg1NGM1NGNmODljYjVkM2FhMmM3NWVhYjg1MCBsZWdhY3ktdHJ1bmsKKzM2MTM2IDQ5ZTc0MTNjZDkxYzBlNTg4NjM5ZjI2Y2U0ODU1ODcwMjVlYzNlMGEgbGVnYWN5LXRydW5rCiszNjEzNyA5ZTVhZjQ1Y2VmY2I1ZjQxMmFjMTY5N2ZjMDE0OGM0MjA3ZDg4MGMzIGxlZ2FjeS10cnVuaworMzYxMzggZDY5YzgwNjhlYWU2MWNlZDhlNzE0YzUwM2E3NzQxNGQwMDk0NGIxMSBsZWdhY3ktdHJ1bmsKKzM2MTM5IDQxOGEwYzZiZGM3ZDRhMGVkZmE0MmQzYjNjZmRhOTViOTg5ZDI1NjcgbGVnYWN5LXRydW5rCiszNjE0MCBiOWRlNmI2NjUyNzM2ZDYwMTVjYjc4YWM3NDAwMThhZGRlNzc1OGZmIGxlZ2FjeS10cnVuaworMzYxNDEgODczMDJhYzA3MjU1MjQzNTE5MmE0OGIwYmY1ZWUzNzQ1ZmI5NDU2MiBsZWdhY3ktdHJ1bmsKKzM2MTQyIGIwZjQ1NGY1NThlNWViMmZhNmRjNmYwODQxZjQ1MDliNWM1MTI2ZGIgbGVnYWN5LXRydW5rCiszNjE0MyA1MGYzYTU1MGI0ZmU2YWVmMzNmZDJhNzdjYzAwZTU3M2VmOTk5NGFiIGxlZ2FjeS10cnVuaworMzYxNDQgYzFmYmJjM2VlZDM5ZTVmZWM2Njk3MzVmYjlmM2UyMGYyZjNjNDhkZCBsZWdhY3ktdHJ1bmsKKzM2MTQ1IGIwNTRjZmY3YmI4NmQ2ZjEyN2MwNmUzNDA4ZDUyMGNjYzI4ODZjOGUgcmVsZWFzZTIzLW1haW50CiszNjE0NiBjZjI4ZjRhNmU2NzYxOGE1YTc3ZmNmM2Y4YzVjNTIzZGZhNjUxNjliIGxlZ2FjeS10cnVuaworMzYxNDcgN2ExOThkOWM5MjYxMmQyNDQzNTYzZDVkMzFiZjU1MjNhYmRlYjk1ZiBsZWdhY3ktdHJ1bmsKKzM2MTQ4IDMxNTJiNzQ3YTJlNDYxMWIzM2ZmZjI1YmQ1MTY1YmJhZWQxN2U3NDEgbGVnYWN5LXRydW5rCiszNjE0OSBmNDk0NzE5NTM2ODlhM2JmOGI0ZjY0NmU4NTE0MzQ0ZDVmYTYzNDA5IGxlZ2FjeS10cnVuaworMzYxNTAgNmZlYWQ1ZWE0YmJhMjM3MjYyZjBiMDg0ZTFmNmZhYTFlMGM4NjcyYyBsZWdhY3ktdHJ1bmsKKzM2MTUxIDU0MTMyN2NiOGY4YmY2YjU1NzE1NGMyOGEyMzc0MjVkMmNkMmNhOGIgbGVnYWN5LXRydW5rCiszNjE1MiAyMjUzYThjMmVhNjJkYzVkM2ZmZTU3NmU4MTc2ZWRlNjBlYmNiODVhIGxlZ2FjeS10cnVuaworMzYxNTMgZjBlYjc3NzhhMTgzMDgzZjBmZWRhOGZmMzI2Y2M2MTU5NzhjNjUwMyBsZWdhY3ktdHJ1bmsKKzM2MTU0IDYzZTllNWEyMTYwYjVkYzliYmFmYjk4Mzc0YTAxNmQ0ODQ0NzBjNTQgbGVnYWN5LXRydW5rCiszNjE1NSA0NDRmYTVkNTBjMTRkMjBlMGE4ZTJiZDdhNmU1NDEyMGM2MTFjNzAzIHJlbGVhc2UyMy1tYWludAorMzYxNTYgYzdkY2IwOTc0NWQzNWI0OWJiZWFiOTE1N2FiYjZkZDU0MGNiYzY0NCBsZWdhY3ktdHJ1bmsKKzM2MTU3IDZlNGZlNTU2MGQ4MWQ0OGFjNDFjM2IwYzhiZDI5MWE4Y2EwMWU0NDAgbGVnYWN5LXRydW5rCiszNjE1OCBiYzlhZTQ0YjJjZTQxZmMzZGI1ZjkyMmVmMjkzYmEzNjNmM2MxN2U2IGxlZ2FjeS10cnVuaworMzYxNTkgYTYyN2Q5NDkzMTQ5NTMzOTk5ZDFmNDVlM2FiYWJjYTE0Yjk0MWUwNSBsZWdhY3ktdHJ1bmsKKzM2MTYwIDQwOGE0MGU2NTI0N2NkMGE3NzJlNGY5OTNiNTU2N2UyZmQ5ODQxZWYgbGVnYWN5LXRydW5rCiszNjE2MSBjN2RhNjk5MGM0ZWQ5Yjg4N2UzNDc5YzMzY2I2ZGYyNjM3YzJhNzhhIGxlZ2FjeS10cnVuaworMzYxNjIgNWQyNzI2OWM5ZTMzYzZhMjhkODMzZmQ2YmIxZjA2NDdmMzc1YjZiNiBsZWdhY3ktdHJ1bmsKKzM2MTYzIGM5ZGI3OTNjYWE4MGEyNTQ5NDhkYTc5YWQ2MTViMDVjOGU4MTMxZWMgbGVnYWN5LXRydW5rCiszNjE2NCA1NGIyNTdlNTVmOTkxNTAxNTU5NDhkZDNkZmZiZDQxZjU4MTBjYzQ2IGxlZ2FjeS10cnVuaworMzYxNjUgNzQ4MTI5ZTZlMTA4MmYzM2RmMWU3OGE1Y2I2MWYxOGMxMzgzY2Y3ZiBsZWdhY3ktdHJ1bmsKKzM2MTY2IDhiMmRmOWEwN2NkNzA0ZGQ2ZmY2Yzc5NTlkZTc5ZDE5NmU5ODg2OWMgbGVnYWN5LXRydW5rCiszNjE2NyAwNDEzMDA1ZmMwYjJjY2JiMWJjZTg5ODY3MTk4ODE0Zjg2MmMyZDVjIGxlZ2FjeS10cnVuaworMzYxNjggZTk1MGJmZTE4NTZlMjBmNDI3MTAzMDI5MWRiNTkwYWE5Njc0ZDI3YiBsZWdhY3ktdHJ1bmsKKzM2MTY5IDlkODY1NWI0NzVkYjQ4ZDA0OGMzZjFhOWU2YWIyYjIwOGQ4YWJkMGYgbGVnYWN5LXRydW5rCiszNjE3MCA0NGU4ZTg0ZjEyODA4MjUyZDRlOWE1MTQ2NmYyOWMzYTc0MGM2ZWFiIGxlZ2FjeS10cnVuaworMzYxNzEgMTFjMzFhOThkZmQ2OTBhODU5NDViOTdmZGU2ODAyM2IwYzk0ZjUyOSBsZWdhY3ktdHJ1bmsKKzM2MTcyIDEzY2U0NDc4NDViY2JkNDdiZmViZWQ4YmQ2ZTAwYWJlMjc5NTc3YTQgbGVnYWN5LXRydW5rCiszNjE3MyAzNDhkYjc3YTA3ZTkxOGM4YzU2YjhmNWIxNzA3ZWE5YTg1OTA4NGQ1IGxlZ2FjeS10cnVuaworMzYxNzQgNDBhY2I2OGFkMjI0NzczYjlmODU3YmEyMGE2YzdhZDIzZWZkZDg3ZCBsZWdhY3ktdHJ1bmsKKzM2MTc1IDU4MWE4YTEyOGUxMWNhMTUzNjlhMWQxNzYyMWI1MDA1ZTkyOWIyMzggbGVnYWN5LXRydW5rCiszNjE3NiAxMmYyNGNiMjczODNjOTcxYjdjMDI2N2YxNWI0MTEyZTcwMDVkNWMyIGxlZ2FjeS10cnVuaworMzYxNzcgNjExODBjMzFkNGJkYjNlYWE1MDU1ZGQ0MTVlMzhlNmFjMzExYjIzZSBsZWdhY3ktdHJ1bmsKKzM2MTc4IGE0NmJkZTllMGM3NGJiNzYxZGNlNjg0NTQ3OThlMjI2ODM5YjVhM2UgbGVnYWN5LXRydW5rCiszNjE3OSA2YWI1ZTA1MjZhMzJhYmQ0MDE3M2U0NTM3OTRhMzhlMzRhYWQwYTQ0IGxlZ2FjeS10cnVuaworMzYxODAgZTViYzk0N2M0NGNhZWJjMDI5MTc0YmM4ZTJjOGNmMDcxYjFlMzk4OSBsZWdhY3ktdHJ1bmsKKzM2MTgxIDg2ZjU5NjJmZDliN2VjNmNiNzg0MDJmYTc2MDc0MzkwYjY5YzBkMzAgbGVnYWN5LXRydW5rCiszNjE4MiA1NWJhNTFiZWYwYTgxYTA0Mjk0ZWUyZTI2MGEwMGYxNzAzZDc0M2I2IGxlZ2FjeS10cnVuaworMzYxODMgYTdkNmZjMTdmMjU3NTUyNzYyOTQ1YmMyNTBlZGZiODcyOGJjMDkzYyBsZWdhY3ktdHJ1bmsKKzM2MTg0IGI4ZmNlMjI1OGMyMDA2YTMzOWJkMmE5MzcyYzJmMWJhZDNiNjZjOGIgbGVnYWN5LXRydW5rCiszNjE4NSBmNGE0ODEwZjk4MmVkNWU4NTRhYzYzZWQ1NjI1MjAzZTU0ZjU0ZTRkIGxlZ2FjeS10cnVuaworMzYxODYgMzMxZTVkOGIyOTZmNzZhM2RkYTg5MWYyZTVhYTFkYjc0MjY2YzBmZSBsZWdhY3ktdHJ1bmsKKzM2MTg3IDUwOTA3MmMzZmEyNmI5MmEyNTFlNWY1NDdiM2IwMjkzMGQyYmYwZmEgbGVnYWN5LXRydW5rCiszNjE4OCAxZmQzYWE0YmMxMjNhZDEzMTllOTc4MzRiNzQ2NDhmM2EwNjFjYTgxIGxlZ2FjeS10cnVuaworMzYxODkgYjk5YTU1MjczOGJmYWUzNzkzMjNhMjg4ZDc5Yzk1NjE1MjdiNWZhYyByZWxlYXNlMjMtbWFpbnQKKzM2MTkwIDM5MTE3M2M2OGJiM2M5MDc3ZGZjYWIyYWE2NDZiZjZkOWM4ZTg1NmIgbGVnYWN5LXRydW5rCiszNjE5MSA5NjNkMjM1NTcwMjBmMjIyOTk1MTQzMWNhNThiNjBlODIwNzE0MjM4IGxlZ2FjeS10cnVuaworMzYxOTIgMTE5ODJkYTk4NzkyYzQ3NjdmMTRlY2NmNjYxMDNmNTE3NjAxZmI1MCBsZWdhY3ktdHJ1bmsKKzM2MTkzIGU0M2RhNGY5OTk0MTU2N2MzYWI5MDUwY2Q4NzlkY2YzMGYwMzllMjQgbGVnYWN5LXRydW5rCiszNjE5NCAwYWY0MTU0M2M5YjY1ZjcxZjBkYWM4Nzg1NmVhOTUzYmU4YWNmYWE0IGxlZ2FjeS10cnVuaworMzYxOTUgZjUzOWE5Yjk0Zjc5NDU3NDQ0Y2I5YmQxZGNiZGQyZGJiMmI1OTk3MCBsZWdhY3ktdHJ1bmsKKzM2MTk2IDYzODQwNzhlN2VkZjk3NmJlZjNiMTRhOWZhNzM1NWFiYmMxZmM0OTYgbGVnYWN5LXRydW5rCiszNjE5NyA0MzRkM2YyY2I4MzI4MjhlMWVhYmZjMThmMTJhNjgzMDAxMTg5NmU2IGxlZ2FjeS10cnVuaworMzYxOTggZjczYTYzZGQzMjg4NTY3NjZlYTEyNmMxNTMzZDY1ODJlZmUwOTI1ZCBsZWdhY3ktdHJ1bmsKKzM2MTk5IGE5YTRiMGRmNTEyYWQ0Zjk0ZGE3ZmRiNjZkYjYwNGFlNjk4NzlkZmMgbGVnYWN5LXRydW5rCiszNjIwMCA1YmZjNzU0M2Q3ZWZhMGZkMDBlMzU2ZTA5Yjg3NGM4YTU3ZWM5ZGZjIGxlZ2FjeS10cnVuaworMzYyMDEgYzZhYjBmODg4OTVhNWM1OGVhNTA2MzZiMGUxMmViODM4ZTJkOTZhOCBsZWdhY3ktdHJ1bmsKKzM2MjAyIDc2MzI3NzM3ODExNGMzZDA1YWZlYTQ1MmY5YmE3OWY4MGU0ZmYzZjYgcmVsZWFzZTIzLW1haW50CiszNjIwMyBjZGUyZmVhYjdmZTBhYjcwZDIxYzhiNTE1NTMwYWU2YzVkNzU4ZjA1IGxlZ2FjeS10cnVuaworMzYyMDQgMjdlNzEyYzhlMWEzNjQ5ZTU1YTdjNzY2OWRlNGI4MDA3NzdmN2Y5MCBsZWdhY3ktdHJ1bmsKKzM2MjA1IGVjNjRhNmJlMzJmNzE3ZGJkZTdmMzIyZTg3M2UxODljY2QzZTMyOTcgbGVnYWN5LXRydW5rCiszNjIwNiBkMGE2Y2ViODQ2NDY0NzA2ZDYzYWUwMWU1MjYyOTU0ZjAzMjBhNTBjIGxlZ2FjeS10cnVuaworMzYyMDcgNjg2ZTVkMzhiZTQyMWFiY2Q4Mjg1NzhhNTQyNzM1ZWJmMjQ1NzRmZiBsZWdhY3ktdHJ1bmsKKzM2MjA4IDA4MTk1MDhhYWUzYWMzZTE1Yzc2NTk2N2EyZDg4M2YyYzg0Mjk3YzcgcmVsZWFzZTIzLW1haW50CiszNjIwOSA1Y2Y1MDdiNjRmMzFhMGQwMjNkY2MxM2NkYTIzZjhjMjJlYzY3Mzg0IGxlZ2FjeS10cnVuaworMzYyMTAgZjk1Njk1MjZlOGQ0MGQxYjE2ODBjNjA2Njg3NGNkZmUxYjE3ZmEyZSBsZWdhY3ktdHJ1bmsKKzM2MjExIDRjNzFiY2ZhY2RlMmYyYTNlMzgxMmMxNmRmMDRlY2JjODUzODYwYjQgbGVnYWN5LXRydW5rCiszNjIxMiA2ZmMwMjkxNWY2MzdiMDI0NGQyMGE2NDVjMWNmNmJkOWY4NjFmNzU1IGxlZ2FjeS10cnVuaworMzYyMTMgOThlNDYzMjcyMTIwMGIwODA3NzdkZGI2ODg2NjM4MmNlZDYwZjJkYyByZWxlYXNlMjMtbWFpbnQKKzM2MjE0IGU1ZGY4YzhmYWEwOTliZDMyNGFiOWYxMzQzZTBiMTc1OGNmZTQ2NDggbGVnYWN5LXRydW5rCiszNjIxNSAxZDU4NGNhNTZiMzA0OTVmMTM5MTY2NjhmOTZlYTAxYzM2NzVmMzdkIGxlZ2FjeS10cnVuaworMzYyMTYgNmJjNmFiYmE4NjU5ZWFhNDlhMjhjODJiZDI1YmE4NTM4YjcwMTdiOSBsZWdhY3ktdHJ1bmsKKzM2MjE3IDJmNzZlNzJhZDE5MGNiNTkzOTRhYjFhZTViNzYwYTIwMTMyODUwYWMgbGVnYWN5LXRydW5rCiszNjIxOCA3NTg2MWQ4YzU4NzE1YTJkYmYwNGU0YjE4YWZiMTVjMjQwMWE2MWUzIGxlZ2FjeS10cnVuaworMzYyMTkgMDE0ZDg3YzczMjEwMmE3ZjExNjY4MTg4ZDFkYzM3ZDY2Y2YwZGQ4ZiBsZWdhY3ktdHJ1bmsKKzM2MjIwIDQ3MjAyM2QwYTEwZDY0Mjg3ZTI2YjljZDYxMjVhMjYyNGQ3M2U1NDAgbGVnYWN5LXRydW5rCiszNjIyMSA2Y2U2N2Y3YjA0MzBhOGZlZGM5MDkwNmZiMTQ2MThjNmIxZDVkYjFjIGxlZ2FjeS10cnVuaworMzYyMjIgY2Q0N2Y2MjIxZDhkMWY1NjE4MjYwZThjOGI2NTkxMDFhZWEwMWJlYSBsZWdhY3ktdHJ1bmsKKzM2MjIzIDFjMmJhYWUxNDgyODIzOTc3OWM2OTI3M2NiMGI2MGU2MTc2ODMyYWQgbGVnYWN5LXRydW5rCiszNjIyNCA4Y2NkOGVjNjNjYzIwYzJiNGEyMGY5ODkwY2IyM2Y5Njg2YTY5MzA0IGxlZ2FjeS10cnVuaworMzYyMjUgNzVlNWQxZThiNjE3MWEyYTlmN2QyYTZkZThjYzdkN2EwOGNkY2ZiNyBsZWdhY3ktdHJ1bmsKKzM2MjI2IDdiNmVkMzVjNTg1MGU2ZjU3MDA1ZTk5NzM0NDdhYzFmZmFjZmNlZDggbGVnYWN5LXRydW5rCiszNjIyNiBkOTliNWJlZDAwNzg4NGIyNWYxMjc2ZTJiYWZiOWFkMDYxZjJhOTU5IHJlbGVhc2UyMy1tYWludAorMzYyMjcgYWFmOTI5NWVkNDViMDA2ZWM3MGNhMWRjMjNmOTU2OTRlYWY3ZjY5NiBsZWdhY3ktdHJ1bmsKKzM2MjI4IGUwYTdjNDYxMzExYjNkY2FmNmZhMzU2Y2E4ZGVhMTM0MTE0ODU0ZjEgbGVnYWN5LXRydW5rCiszNjIyOSA3NzkxM2JlMjk0YjkyMTE0NjdiNDU4MzdlZGFmYzJiZWVhMjYxYTZlIGxlZ2FjeS10cnVuaworMzYyMzAgODQ0NDg0OWM5NDQ4ZWRlYWI2NDRkZjU0NGQ2YWMzYWIzMzUyNzkxMCBsZWdhY3ktdHJ1bmsKKzM2MjMxIDgxMDFlOGQyNGYwNTI4YzQxMTMwMGE2NDU3MzZkNTdiNzBlM2JlZjQgcmVsZWFzZTIzLW1haW50CiszNjIzMiAzOTNjMTVjMGM1YTQ4ZjY1ZWI0YTFjZTQ1NjM3NDllZmUwOTE3ZDE4IGxlZ2FjeS10cnVuaworMzYyMzMgZDcxMTBiYjZjMTNkYzQzOWY0YWYzZWUyZTZhYmY5YjE5ZTI0OTJkMiBsZWdhY3ktdHJ1bmsKKzM2MjM0IGZjZmIyZDQyMjBiMGU1NzNlMzI3ZWQ4NTczMGQwYjY4OTM3MWJmMDkgbGVnYWN5LXRydW5rCiszNjIzNSBiMWU3MWIzOTI3OTlhYTU3MTRkNDdlMDY4MDZmNTY2YmI4YzI2ZTI1IGxlZ2FjeS10cnVuaworMzYyMzYgOTUwY2Y2OWM2OWI2MWRjM2U3ZmIzZDZjYjVlZWFmMDA2MTdkNmNjNyBsZWdhY3ktdHJ1bmsKKzM2MjM3IDI3ZTIyZjZiZDNhZTc3MmZlYTRmZTc5MjQxYjdjZGFhMjkxYzJhYTQgbGVnYWN5LXRydW5rCiszNjIzOCAyNTVhNzFmMmQyMTVhOGY3MGMxZDVkYjdhNzlmYTJiN2MwZmRkOTkwIGxlZ2FjeS10cnVuaworMzYyMzkgODRlNWI1ODVkMjAxYjg4NGE5NWZjMGE0YjJhOWQyMGViZTVkYjAzYyBsZWdhY3ktdHJ1bmsKKzM2MjQwIGE0YmMyZmZkOGU3MTZhOTE0Nzg0ZTdkMWQ4YzUzYWE3YTZjYTI0YjIgbGVnYWN5LXRydW5rCiszNjI0MSA0ODVkMmVmNDM0MTlkMTkwMDE3MGFlYmJlYTlkNmI2ODJjNWNiOTE3IGxlZ2FjeS10cnVuaworMzYyNDIgM2RmMzZlMmU1ZGRjMTE0OWFmOGViNTJlMjBiYzIyNWQ4MDYyMzZkNCBsZWdhY3ktdHJ1bmsKKzM2MjQzIDY0NTM0ZmIzYWZjZDk0MDBiYzMwY2Y3NDIxZmVmODNlMzkyOGRjMzEgbGVnYWN5LXRydW5rCiszNjI0NCAzZGRjN2EyMzE3NmI2MjgzMWQ0MGE4MzY0ZjVmYjc3MmZiNGZhY2U4IGxlZ2FjeS10cnVuaworMzYyNDUgZTM3MTE4M2QwZTE5MGNlN2UwZTcyNGJmMWFkNTg4NzRlZjA1OTE3OCBsZWdhY3ktdHJ1bmsKKzM2MjQ2IGY4ZDYxZWQyZjBkM2EwZTE4MzZlNzY0YTYxNTljNWMyNTM4NThhZGMgbGVnYWN5LXRydW5rCiszNjI0NyA5MTViMGU4MzNiNWJmZDJiYTI1ZjUzOTJlYTVhNDJhNjY2ZDRkYjNkIGxlZ2FjeS10cnVuaworMzYyNDggMWM2OWY5MDljNWE2MTM3OGRhMjdmMDI2MWU0MmJiMDEzNzQ2OWJmOSBsZWdhY3ktdHJ1bmsKKzM2MjQ5IGQ4YWJmNTgyZjg5MzA2ZWFlNzNlNDNmMWFjNDMzOWJmOWRkZjU3NzIgbGVnYWN5LXRydW5rCiszNjI1MCA0OGNhMjdhZGE4MWU2NWZkNzU1ZDA5YWUyNzZjNGE1MDJmM2Q1OWYxIGxlZ2FjeS10cnVuaworMzYyNTEgYzdkMmIyNGVlZmY5OWQ2MDY1MThkYWIyOWE2NzYzOTAxOTQxNWFhMCBsZWdhY3ktdHJ1bmsKKzM2MjUyIDIwYWRiN2NlMWIwODVmNDIxYjJlM2VjYjY5Mzk0YTNiMjQ4YWMyNjggbGVnYWN5LXRydW5rCiszNjI1MyBkYTdjM2M2MWQ0MGUwMDUwZmIwYWRhYjBlZWU0MjNlY2FkOGIyMzM4IGxlZ2FjeS10cnVuaworMzYyNTQgNWVjNzhlMmRjNGJlYzk2ZWRlNzgyMzhiNTY5NTdkZTFlYzAzZDQ0OCBsZWdhY3ktdHJ1bmsKKzM2MjU1IGZmNmI5N2NkZDg2NGY0ZjUwYmZjZDMxZGVjYjBmZTAzY2Q1MjNiMTIgbGVnYWN5LXRydW5rCiszNjI1NiAzYTdlMzRkYzZhZTI2ZGU4YjFmZDhhMWZjYWE2ZmYzNDUzZWZhOTljIHJlbGVhc2UyMy1tYWludAorMzYyNTcgZjQ3Y2UyMzA0Y2JiMjM1OTAzMTUyNGE4Yjc1ZjdhOGE3NzFhNDJjNyBsZWdhY3ktdHJ1bmsKKzM2MjU4IDM4Zjg4MzQwM2U5ZjhjYjc3YWYyNGU5MGQ0NGE1MWViM2Y2MzRjN2QgbGVnYWN5LXRydW5rCiszNjI1OSA3MzMzYmUwOTJlZWMwY2U5MzVkODQwNzIwNWIxNzY1NTk1NWMyMjc2IGxlZ2FjeS10cnVuaworMzYyNjAgZWUzODg5NmUwZDI0MTczZTA1ZGJhYmIwYzU3NWNjOGI2NzFiYzRjNCBsZWdhY3ktdHJ1bmsKKzM2MjYxIDUzZjI3NGYwMmY2OTgwNTlkY2YzYWE4MGZlMjYwZDFkOTgzNzNhMDYgbGVnYWN5LXRydW5rCiszNjI2MiAxZWRjMDY4NzIxM2ZlM2ZkYzQxODM1YjY5ZGY0ZmY1YjBhYzgxNmZhIGxlZ2FjeS10cnVuaworMzYyNjMgYjE4ZjQ4MGMzN2EwNzY4MTNjZGUyNmYxOTZmY2ZjOWQ0MWVhMjBlMyBsZWdhY3ktdHJ1bmsKKzM2MjY0IGM1NjE2OGZhYmY4ZTMzZWQ5YjI5ZWJjNzQxZTA2MzYyY2JjMmQzM2YgbGVnYWN5LXRydW5rCiszNjI2NSA1YWRjYTU4MTQ5ZmY0OWRmMDVlNzNjZDFhZGJmNDVmM2ZhMzVmNGRhIGxlZ2FjeS10cnVuaworMzYyNjYgNDY0YzgwOGQwZGNkYTM4YmI4MmEwNmUyZjZiOTNkYjJiNTY2NmFkOCBsZWdhY3ktdHJ1bmsKKzM2MjY3IDdkYjRjNTg2ZTFkNmNlMjdmNjc3ODRlN2IxNTY5MWM4OWY0ZTBjYTYgbGVnYWN5LXRydW5rCiszNjI2OCAyNTZiNDk2YWY0YzRhMDc1ZDY2ZjhjMTRjMmY0MmRiNDEwNjc4ZDcwIGxlZ2FjeS10cnVuaworMzYyNjkgYmIwMGUxMmU3NzQxNjA1NzdhOWYyZWU4ZDA1MjljYmEyYmVmYjE2MyBsZWdhY3ktdHJ1bmsKKzM2MjcwIDBlMjhmZDZmZWEwMGMyYmZjMzJjMTliMDM0YjA1MTEzODM3NzYyOTEgbGVnYWN5LXRydW5rCiszNjI3MSBkMmMxYzdhZTdjZjQzMjM2NWJjZWNhNzEyOGI0MTg1OWJjYTcxZTE4IGxlZ2FjeS10cnVuaworMzYyNzIgNjdmYmMyM2RjZmRkNGI5MjZmZjIyNDlmZmZiNDE4MjYwZmUzYzY3MSBsZWdhY3ktdHJ1bmsKKzM2MjczIDBmNTZlYWQ5NjgxNzY1NTJiOTgwNzliYzFkNWE1ZDRkYTUyYzE4MjYgbGVnYWN5LXRydW5rCiszNjI3NCA3MzE1NGFiODU2M2E1YzExNjA1NmY4MWJiMWU3ZmZhMWExMjU0MTFiIGxlZ2FjeS10cnVuaworMzYyNzUgZDUwMGY3MmZiMWFjZjFiOTM4YzcyZTQ5MjZjYWZjZmJlZGRiZjVkMyBsZWdhY3ktdHJ1bmsKKzM2Mjc2IDUwMDY4YjE3ZjQxZWFhMWFiNGZjOTk4OGQ5YWJkNGZjOWQ0MTYzNWYgbGVnYWN5LXRydW5rCiszNjI3NyA2YzE2NjEyZmIxMTgzODE1ODBkYWZhMTBmMWUwZjA2MzU4MGVmMWQxIGxlZ2FjeS10cnVuaworMzYyNzggYjczYWIzMDlhZGE3ZmIyYjdhNGYxZTM3YjljNjhmZmY5ZWY5YTg2YiBsZWdhY3ktdHJ1bmsKKzM2Mjc5IDZiMWVhNWMwN2ZmNzNlZWM1ZGJkMzYwYzQ0YmY4MjBhZjQwYzQwYWUgbGVnYWN5LXRydW5rCiszNjI4MCBjNDIzZTAxOGEyOWUwM2VmMjc2NmE3OTM0ZTk4MDVlNmIzMzcyY2I0IGxlZ2FjeS10cnVuaworMzYyODEgZTNmODJkZjU0Yzg4ZTA4MzViY2I3Y2NkZDQ4ZTQ2ZTdmOTFkMTE3NiBsZWdhY3ktdHJ1bmsKKzM2MjgyIDFiOWRhNWZlOTA1Mzk0YmVhMmY1MTdjNWRkNWM2ZDUxMDYyYTgwZGEgbGVnYWN5LXRydW5rCiszNjI4MyBkNGE1OTIzMGU5M2E5NmE3MWFiNTdkMjllNzMxNDIyYmYwODg0MjkzIGxlZ2FjeS10cnVuaworMzYyODQgNzU3YWIyMDBkNDdhNmJhN2RmMGRmMDY0NGMwOWE5ODJjNGEzMzY4ZCByZWxlYXNlMjMtbWFpbnQKKzM2Mjg1IGI1NzQzZTQ0NzMwOTEyMGNjYzFmMGFlZjI0NDQwOGJmOTllNjVkZmIgbGVnYWN5LXRydW5rCiszNjI4NiAzYzUwMzZiM2U4ZTY3NWIzODg3OWIyMjBiMmJjMTM3NTdmOTZkZDk3IHJlbGVhc2UyMy1tYWludAorMzYyODcgZGYxM2ZmYjhmNDk4NjM3ZWQwNmFhMzRhZDI0YTQ3N2M0N2YyZGJmZSByZWxlYXNlMjMtbWFpbnQKKzM2Mjg4IDE4OTE2Y2U0MWMyNjBmMmJlMWE4YzIzZmZiMDQ5MDkzNGFhNDhhMTMgcmVsZWFzZTIzLW1haW50CiszNjI4OSBiODcxMGU2ZDhkNzgwZGY5N2NiM2RiMWYzMGEzZDU0YjNmMjNiZmU5IGxlZ2FjeS10cnVuaworMzYyOTAgMDVmMTJiYzFlNWIzMDIyMzVkZWI4YmUwMDY2ZjNjY2RiMDdhMzE5NSBsZWdhY3ktdHJ1bmsKKzM2MjkxIDJmZmNkODM2ODE3ZWFiYzUwNzk0MTZiNzJkY2ZkNzM3MmY0NDcxZDUgbGVnYWN5LXRydW5rCiszNjI5MiA0MzgzZGI3N2IxOWE5YjgwMjU4ODc0N2FjNjFhY2E3N2YwNjNiYTBkIGxlZ2FjeS10cnVuaworMzYyOTMgMTRiNDE1NWQ4YjBhNDUyMTI0ZmY3Y2ZlNzVlYTE3MmIwMzdiM2JkYyBsZWdhY3ktdHJ1bmsKKzM2Mjk0IDllOGY3ZGY0YTZmZTc2MDExNmRiMThhMjQzZjRiNjQ5OTA3YmViMDYgbGVnYWN5LXRydW5rCiszNjI5NSA3OTZjY2I5MDgyZWYzNTZjMzQ5NzgzNDRhZjY1NjY1YzlhYmI5N2NkIGxlZ2FjeS10cnVuaworMzYyOTYgZmE3OGFjNTY4MzA5OTg0NDhiYWVjZDJlM2Q3NzNjM2NiNjM2MjkyYiBsZWdhY3ktdHJ1bmsKKzM2Mjk3IGJjNTg2ZGI5OTQ1YTBlYzA0ZjQ5YTdjZmVlMmMzZTVhNzQ3NDUwYjkgbGVnYWN5LXRydW5rCiszNjI5OCA1MGU4NDRhNGVlZDkwZjY4ZmZlMGUxZmE0NGM2MjIzNjA2YjQyNTU1IGxlZ2FjeS10cnVuaworMzYyOTkgZmU4MGY3NzJiZmExMjkyMGJhMWY0NmNmOTEyYTIyMTkyN2VmODgyNCBsZWdhY3ktdHJ1bmsKKzM2MzAwIDc3ZGYxY2I0MTUzMzJlMjc2YTk0NzNkMTc3MzcyMmMyYTY3ODg1MDMgbGVnYWN5LXRydW5rCiszNjMwMSBiODM1ZDVjNjFkODY0OWY0NGJmZWFiMTRkYWI0ODI0YTliNWQ2MTQ3IGxlZ2FjeS10cnVuaworMzYzMDIgZWNjZDBmYmUwY2Q1YzI4YzEzOTI0MmNlNWUyY2Q4OGYzNDMyYzM2YiBsZWdhY3ktdHJ1bmsKKzM2MzAzIGM2YWNmMjYxZDYxNDc5ZDE4NjgzYzAxZGE0MzBmYjZjNDM5MjFjNGYgcmVsZWFzZTIzLW1haW50CiszNjMwNCBmM2NiOTVjZDQxM2Y0OWY0NDQ4NTc5MDAyOWM0YjlhZGE5NDc3YWI5IGxlZ2FjeS10cnVuaworMzYzMDUgMDAyYWM2MjU5YzJjYjlkMjJmZWEzZmEwOTgxMjkyNjc4MWMzNDQ0ZiBsZWdhY3ktdHJ1bmsKKzM2MzA2IDkxY2NlN2JiYTM3MjY5NjQ4NTk1Y2QwMjBlODVkMDkxZjBmODM3NWEgbGVnYWN5LXRydW5rCiszNjMwNyBmYTIzYTliMTg5Njc2MTc2YjcwODNhZjM1MWJjYTYwZmRmNTRiOTFkIGxlZ2FjeS10cnVuaworMzYzMDggMzkyM2RjOTBlYjhlYmY3MGEwNTM4M2ExZTQ4ZDk5OGQ4NjRkOTA2MyBsZWdhY3ktdHJ1bmsKKzM2MzA5IGFiMGEyYjc0ZGRmZDk2OWVhMWY4NjQ3ODAwYTJkNGEzMTNkNDdiZmMgbGVnYWN5LXRydW5rCiszNjMxMCA3OWRmNGY4N2Q2N2U3YWFmYTBlMzdmODgzYWE1NGJkMWEyMWYxZGRhIGxlZ2FjeS10cnVuaworMzYzMTEgZGI1MDNhMjYzYjQzM2NiYWI4ZmM0YzdmZTIxMGMwMjRhM2UzMDRlNiBsZWdhY3ktdHJ1bmsKKzM2MzEyIDk5ZmRmODA3MDZhZGFlNmUzYTFiY2EwNzUwNzg2YjI3ZmU3YTE5Y2UgbGVnYWN5LXRydW5rCiszNjMxMyAyMDJhZTA1NzhlYmViMTVjZTk4ZmQyNDhiNDk4NGVmMTU1OGUwM2FjIHJlbGVhc2UyMy1tYWludAorMzYzMTQgZjU2NTAzYThkYmEzYzQxZDA0NmY5YTFjZjIxOGRiZmRmNWMyMDc3NyBsZWdhY3ktdHJ1bmsKKzM2MzE1IDZjYTEyMmYyNzM2YWI4OWUxNTFmYjM3YmJmYmRhZWMwNjllNGYxOWUgbGVnYWN5LXRydW5rCiszNjMxNiA5Yzg3NTE4ZmFmNmI2YzRlNzRhYzU4MDQ1NTViNGM2ZDE5ZTVkNDJiIGxlZ2FjeS10cnVuaworMzYzMTcgMDU0ZWRlMDFlM2QzMDU3ZTA3OTRhYTAxOWE2OWFkMWM3YWNmODQ3YyBsZWdhY3ktdHJ1bmsKKzM2MzE4IDUxZWI2N2E4NTY4ZWExYjVlN2YyMGNkZjQxYjZkYWY0NTEyNWU2MjAgbGVnYWN5LXRydW5rCiszNjMxOSA2ZmUyZDI0MTAwOGE4MjljODY5YWMzNTZhNmFjM2YxNDMwN2E1ZTZlIGxlZ2FjeS10cnVuaworMzYzMjAgZmJiZDY3Mjc0MDFiNjE2MmMzOGIxYWM1YjVlN2YxNTZmOTFkZjJkZCBsZWdhY3ktdHJ1bmsKKzM2MzIxIDBkYjYzYTc2NWE3NzAxZTllYzc4ZjVmZThmMTIxYmMwNTAxMWMwOGIgbGVnYWN5LXRydW5rCiszNjMyMiBmMDRmMDgxZmYyMzExMDllMTE1NGVmNzgyNmU1ZTJiOGE4NWIxMDA2IGxlZ2FjeS10cnVuaworMzYzMjMgODc0MDE2NThlYjQ1NzI5Njk4Y2QwOGM0MTk5ZDk3MzlmNzRiOTcxNCBsZWdhY3ktdHJ1bmsKKzM2MzI0IGM0ZWVmZmVhMTk2MDM4YjE3ZWU2ZTc3NGQxOTMzMzZlODA0OGJmOWUgbGVnYWN5LXRydW5rCiszNjMyNSAxOTE3OTZiN2EwNTQ1NmQ1NDRmYjJmMDVhMjk0MjRmN2Q0Y2IyYWI3IGxlZ2FjeS10cnVuaworMzYzMjYgZjVmMDRjZTI1MTYzNTc2MTY4NDZhZDIwNzJkMjMwZjE3YTkwYjJlYSBsZWdhY3ktdHJ1bmsKKzM2MzI3IDY4MmY3NDA4ODYwMjhmZGVkMWY5M2ZjYzM5ZjA0NTU5MzIwODUzYjIgbGVnYWN5LXRydW5rCiszNjMyOCA4ZTc2OGMzYWYwMTVkNzEyOTU3NDU3YjM0OTAxNGFjMjRkYjM0ZjA2IGxlZ2FjeS10cnVuaworMzYzMjkgM2Q2ODllNzE1ZGIyNDRhOTI1NDYzZjUzNmI0ZTY2NzhkNWE4OWMyZiBsZWdhY3ktdHJ1bmsKKzM2MzMwIDYxZjkwMzRhMTBmNzFmMWRlOWE2MGFiMjg0MzkyMWE5MzcyMzk3ZTUgcmVsZWFzZTIzLW1haW50CiszNjMzMSA4ZTdjOTFkZTk0OTE5NjE3MjEwMzc5ODc1OWYyZTZjZWY3Njc0YTIxIGxlZ2FjeS10cnVuaworMzYzMzIgYzRlZDE0ZmFiMTJhMzZiNzVkNmQyMTI4MzVlNjI2Y2ExMmUxNjVkMiBsZWdhY3ktdHJ1bmsKKzM2MzMzIGVjOTI4ZWQwMWFjYzU1ZTI2OTEwYjE0NmMyN2FmNWNjODdlYjE4YTQgbGVnYWN5LXRydW5rCiszNjMzNCBiNjFjNDFkMTk3Nzg3MDg4ZDU0NjVkOGRiMDE3NzQ3MDVjNDI3NTFhIGxlZ2FjeS10cnVuaworMzYzMzUgMzI5ZWU0ODMwYjA0MTIxNGNhYjk1ZmIwYzRmOGEwZWNkZmFjMzRjOCBsZWdhY3ktdHJ1bmsKKzM2MzM2IDQ1NDllNzVhNjI0MzRlNDgyYjI1MDMxZTY4YWYyNDJlM2JhNDNkYjEgbGVnYWN5LXRydW5rCiszNjMzNyA1ZTQxY2JlYzA0NjUzZmY1MWMxNTM2ZDNmMWM3NmE3Nzc5ZTYzZWU5IGxlZ2FjeS10cnVuaworMzYzMzggZjU4Y2MzMzRkMTVjNDYyYzU2NWQ2YTgzMzU3NTkwOGZlY2ZjNGYzYyBsZWdhY3ktdHJ1bmsKKzM2MzM5IDEwZTc1ZWE1OTYwNTQ4MzNhYTdkOTY2Mzg2ZGIyODkxNDA1ZGQ3MzYgcmVsZWFzZTIzLW1haW50CiszNjM0MCA0YmY4ZmIxMTg5NGY0YjgxZmFmNzRkYjAzNjM1NWRjMzFjODM0ZjZkIGxlZ2FjeS10cnVuaworMzYzNDEgNzM3ZTg5MmEyYzJjZjY4NjA1OGJhMTFhODhlYmQzMWExZjRhZDkyMiBsZWdhY3ktdHJ1bmsKKzM2MzQyIGNhZmQxMzRmYzFjZDQ0YjY5OWNlNDJjODgwNmM0MGQ4M2FhYzdjNTcgbGVnYWN5LXRydW5rCiszNjM0MyBkYTYzZTJkNmViOGEzZDFmMGViMzUyZWI0YTU5YWU5NmYzZmFjYjA0IGxlZ2FjeS10cnVuaworMzYzNDQgOTg3ZTM2YWZiODc5ZDI2Njc3NTFlYmFjMjQ0OGRmN2JjNGRkMjNlYiByZWxlYXNlMjMtbWFpbnQKKzM2MzQ1IGVjNWQwZTg3Mzk2NDE4NTJjODFjMDA3Y2IyZGZjOGU5NzEwZTVlNzggbGVnYWN5LXRydW5rCiszNjM0NiA3OGJkMjViNDJkNDYzMTQyYzg0MGQwMWYwY2NhYzNlYTNhMTZhOWU1IGxlZ2FjeS10cnVuaworMzYzNDcgMGRhNjYwZTA1ZTY5MGRjYTEwOGJmNjgxZGIyY2M5MjY3ZThiNThhYyBsZWdhY3ktdHJ1bmsKKzM2MzQ4IDY3NTM5Y2ZjZjA5ZmU4YjUzNGFlNDBlYmQ5ZmE2ZmQzMDFlNmE0ZjAgbGVnYWN5LXRydW5rCiszNjM0OSAyNDc2YTgzMzQyODZiN2EwYmZlMTBhY2NjYzM5ZTdlMzIxZjMxMTE1IGxlZ2FjeS10cnVuaworMzYzNTAgMjQ1MWM5NTcyZWRmNWMwMDk1MjJjZTcwNzQ2MmZmZmI5M2E4OWRjYiBsZWdhY3ktdHJ1bmsKKzM2MzUxIDg3ZDE5NmUxYzJkMDFkNThmMDg3YmViZGI0NDU0YWQwN2NmNjUxNWQgbGVnYWN5LXRydW5rCiszNjM1MiA5MjgyMGVhNWFlOGNiZTEzZGEwYjAyM2U3YWI2YmQwYWI0N2U3MmZkIGxlZ2FjeS10cnVuaworMzYzNTMgMjAxOTg2ZDZkOWQ2MzUwY2ZiMmE2NThjZGM2YzM5NzJiZGVjN2M2YiBsZWdhY3ktdHJ1bmsKKzM2MzU0IDE2MzRmNjAxMTg4ODU5OTU5YTE3OGFkNzc3ZTU5ZTM2Y2I0Y2U5NTggbGVnYWN5LXRydW5rCiszNjM1NSAzMjQ1NWRiOTcxMzU3NmMyOTdlYjhjZWNlNWJkMzBlNzU1NzhmNTczIGxlZ2FjeS10cnVuaworMzYzNTYgNDNiODA5ODE1YzdkNzU5YzFjZWQ5Yzc2N2NiNGNlNzM3MTNlMmRiNyBsZWdhY3ktdHJ1bmsKKzM2MzU3IDdmZDZmODdlNWQxZmNlYmExNThmZTFkY2Y1NDdiMDk2NWIwMzE0OTUgbGVnYWN5LXRydW5rCiszNjM1OCA0ZmFiNGE1Y2NlMmY1ZDQ0MGU0ZWU1MDVhOTYzZWJiOTI2YzMxNmJmIGxlZ2FjeS10cnVuaworMzYzNjAgN2U0NGYzYThiNTY4N2NmYTYxMmUyYzQ1YzgxODUwYmNkNzQxNTUwOSBsZWdhY3ktdHJ1bmsKKzM2MzYxIDdhZDY4NTg3YzlhY2I2MjUzNDVhZmU3NzgyMGIzOWIxNzMzMDAwMDggbGVnYWN5LXRydW5rCiszNjM2MiA3NzU5NzA0ZTc4NzI5MjUxYTk1NGRmNzBkOWE1MTUwYzUxMTA0YTQ1IGxlZ2FjeS10cnVuaworMzYzNjMgZWM4ZTRlZDJiMTU3Y2M5Y2I3MzI1NzAwMWQ4MTcyMmQyMWM1NGVmZiBsZWdhY3ktdHJ1bmsKKzM2MzY0IGM0ZDU0YzRiYTU1NDNlYTgyY2Y1NzQ0YjE0NTk5ZWE1ZTU4OTY5ZjUgbGVnYWN5LXRydW5rCiszNjM2NSA0NjkzZmExOWUyMmJkY2EyYmE5NjM1NjQwOGNmNWQ4NDcyZGU1ZjQ5IGxlZ2FjeS10cnVuaworMzYzNjYgZDFmYjRiZDQ4OTM2MDczYzI4NDJiMDdlN2U4NmM0NDIyOTkwZjVlMCBsZWdhY3ktdHJ1bmsKKzM2MzY3IGQ0Mjc0OWRiOTMzOTI1MmNhMzcwNzg2MDhkZjY4OGVhYTkyNzM4MDcgbGVnYWN5LXRydW5rCiszNjM2OCA5Mjg4ZDUyNGQ3NTc5OTcyMjVhYmE5NjkzZWE0OTNlNWM4MGFiODBjIGxlZ2FjeS10cnVuaworMzYzNjggOTJjYTY1OGZkNDIwMDk1YjYyODRjOWNlNmU5MDgyYTgwMjg1ZWM5YyBsZWdhY3ktdHJ1bmsKKzM2MzcwIGJlMWExMmQwYjg5NWQyNTE2OTIwMjVhYjM5NDhkN2FhNzliNjQ1NWUgbGVnYWN5LXRydW5rCiszNjM3MSBmM2YxMWQ4NjNhMDJmNjEzYWY3ZDU3M2Y1NmQ0YjEyN2UyYzhjNzY3IGxlZ2FjeS10cnVuaworMzYzNzIgZjQ2ZDQ5ZTJlMGYwYjE4ZmQ5MzI1OWY2NzZiNTVjODU1NGQ5NzIxMSBsZWdhY3ktdHJ1bmsKKzM2MzczIDM3MDZhMzcwNGFlYWMwMmE1MmQ4NjRhMTM1ZTQxM2FkNGMxYmM5ZjggbGVnYWN5LXRydW5rCiszNjM3NCBjMDk5YWE3Njc5NTJkOThhNmQ3YTI2ODFkNTMwMTg3YjM0MzBmMTEzIGxlZ2FjeS10cnVuaworMzYzNzUgNzRjM2I3MTNlMzVhNmFmZDU1ODQ3YTdiZWNjNTU0NzUyZTZlMWQ0NyBsZWdhY3ktdHJ1bmsKKzM2Mzc2IGQ5MDlhMGRkZDE5MzJkZTBmYmJlMjE5NDRiNzlmZjI3YTNjNzkyMjEgbGVnYWN5LXRydW5rCiszNjM3NyBlYzI4NTYzYjA1MmU4ZmQ2YjlmNGE3NDE2NzMyMjQ2M2Q4NDMxZjRlIGxlZ2FjeS10cnVuaworMzYzNzggMDI5ZGZmYjYzZjRiZjFjYWNiNzk3MTEzZWIzMDM0OGVlODhhMzIwNyBsZWdhY3ktdHJ1bmsKKzM2Mzc5IDdmNGI2NmRjNDM3NjJkYThjZWZmNzhmYjY5MTlhNDU5NzczMWI1ZGYgbGVnYWN5LXRydW5rCiszNjM4MCBlYzFiNTZiNDNhZjA0NjVkNGJlMzdhNThmMjZlY2U3MTRmNGExYjRlIGxlZ2FjeS10cnVuaworMzYzODEgZTRiOTZjM2EzZTEyMjlkYWE3ODNjZmNmOWQ5MzBlYTI2MjYwNTFiMCBsZWdhY3ktdHJ1bmsKKzM2MzgyIDZmMzUxYjFiY2Y1MzRjOGNhYWIwMjRhMWE4NDE5ZmUyZmQ1MjhlMTQgbGVnYWN5LXRydW5rCiszNjM4MyBhMTYwYjk2NjlkYjFlMzIwY2UyY2EzZmZkZGE3ZWE3Y2NlNGNlYjk5IGxlZ2FjeS10cnVuaworMzYzODQgNjliYjI0MWIwNTZjOTZmMTUyNDIzYWFjZWJlNDRlNTE5NjNjOTU0NSBsZWdhY3ktdHJ1bmsKKzM2Mzg1IGNmMTM4YzU1ZDQxYmU2YmM2ZWRjZjJjOTc0M2YzNTdmYTczMDFmMzUgbGVnYWN5LXRydW5rCiszNjM4NiAxMTE4NjgzY2Q0ZDFjZjVjMDVmNmM3ZTBkMGExMTQ2M2Y5NmVmOWE3IGxlZ2FjeS10cnVuaworMzYzODcgM2FhZGZjM2ZjNGU2ZmRiODA3ZmM2YWE1YjcwY2Q1M2MzNDlmYWRkNCBsZWdhY3ktdHJ1bmsKKzM2Mzg4IDAwNjRmNTViYWZhN2M5Njg3MzM4OThiMjRkOTNkY2Q0MDBmZGMwMDggbGVnYWN5LXRydW5rCiszNjM4OSA4NDRkOTljODg4YmJhMTRmNjUzMDhiMzE2Y2RlNjViYWM0MTEzZWE3IGxlZ2FjeS10cnVuaworMzYzOTAgNWMyNWNhNmZmYWY5ZTU5NTU2ZWE2NzRhZTZjMzA4NTVlMzM1NTM0MyBsZWdhY3ktdHJ1bmsKKzM2MzkxIDcwYjE1MDRlMTdmZmNmNmEwZDk5NzA5Y2ZkYjNjMzNkOTA2MWYwZDMgbGVnYWN5LXRydW5rCiszNjM5MiBiZWMwYzc2MTg2MjU0MWU1ODk2NWMwNjg2ZjUzYzUzYTMzNDU3YzZiIGxlZ2FjeS10cnVuaworMzYzOTMgOGVhMmNiMWVjNTk4OGQ5YTMxMmMxNjRiYTZiMjIzODJiNGFiNWE0NiBsZWdhY3ktdHJ1bmsKKzM2Mzk0IDE1M2M1MTdiYzZlOTZlNzRmYzIxMzEzMGRkODk5Nzk4NzQ3NDljZjQgbGVnYWN5LXRydW5rCiszNjM5NSAyMjgzMjM4OTUyNzFlMDQ2ZTY3NWMwNDRjMmMzOWVlMmZlOGMwNjA4IGxlZ2FjeS10cnVuaworMzYzOTYgNTExZmZjNjJiMjk4YTdmMTFiMzYxZjE1MzRhYjA5NTYxNTI2YzQ3ZiBsZWdhY3ktdHJ1bmsKKzM2Mzk3IDgzY2JjMDI1YmZjNzRlNGUxOGE4ODcxMTE4MWI4NzZjNDkzNDY2MDEgbGVnYWN5LXRydW5rCiszNjM5OCBmZWY3OTExYTU3MDVjYWVmNzA1OTM4YTM3OWZlMThlMWYzMWRmMjJkIGxlZ2FjeS10cnVuaworMzYzOTkgMjFmZDZlNjJjZDI3NmIyNzI3OTI2MDc0Nzg5MWE5OWM0OGZlYjFlNiBsZWdhY3ktdHJ1bmsKKzM2NDAwIDQ5MmRjOGI4ZTU4ZWMxNWU3MTY3YWEyNjdkZjZjOTQzNDkwZjRlMjAgbGVnYWN5LXRydW5rCiszNjQwMSAyMzAzOTdiYzdlMzIwNDZjYWI1YjA3ZDg1ZjQ1NDFkMDRmYzBjNTZkIGxlZ2FjeS10cnVuaworMzY0MDIgMGRkNDczYThlNTNjMDkyMjdhMWU5ZDkxMTZiYzE5OWVlM2M4NWRkYiBsZWdhY3ktdHJ1bmsKKzM2NDAzIDRkMmY0YTM5ZWM1ZWQyNzQ5MDRjMTcyNzlkMzBmYTlkM2MyNTYxMWIgcmVsZWFzZTIzLWJyYW5jaAorMzY0MDQgNzM2MmUzNzJjODk3MGQxNjMwZjgyY2RhMzU0NmZkMzViYTYzODVjYyBsZWdhY3ktdHJ1bmsKKzM2NDA1IGYyZjBjNWZkOWI2YzlkM2YzMWZjMTdkM2U3YmJlNGIxNzNiODExZmUgbGVnYWN5LXRydW5rCiszNjQwNiBhNjRiYWU1YzMzYjdlNzZhMDg0NjFhZmU4ZDIyODNiNWM4MzgxZTQyIHJlbGVhc2UyMy1icmFuY2gKKzM2NDA3IGRlMzI2ZDdlNzRlOGI4Mzc5OTg1MTEzOGQ3NGExZTY1YWI3MDU4MTYgbGVnYWN5LXRydW5rCiszNjQwOCBhMDNiY2ExNjU0ZDBhMmZmODAzN2NlMjk5MzQyZWRmYzFlMjBmZTVmIGxlZ2FjeS10cnVuaworMzY0MDkgNjdhODRhMzNkMGY4YzM0M2MwZjJlMDA1OTJkNDY5YWZhZGJkNjI2NCBsZWdhY3ktdHJ1bmsKKzM2NDEwIDRiZTRjNjM2NzNlYjE1YzkzMWJkYWMzYWI1MDRhNzE5MWVkNDBiZjkgbGVnYWN5LXRydW5rCiszNjQxMSAzZTkyNTk1OWZhMDFhY2VkYzY4NzczODE2N2RmZWYzN2YwMTBjNDI1IGxlZ2FjeS10cnVuaworMzY0MTIgYzc4ZmNkZDAyNDY0NDZkZjEzMzQ1YzQ4MWQyZjJlZjZjODQ4MzY4NiBsZWdhY3ktdHJ1bmsKKzM2NDEzIGYzZjQ3NjVlZmU2NjgzMzhlMjNkM2MzNTJhNTFjZWNlOTVlOWMyYzAgbGVnYWN5LXRydW5rCiszNjQxNCA1YjI1YzY0NDZhZWIzM2Y3MzY0NGRjOWQ0YzFlMmI0ODQ1ODIyZDBlIGxlZ2FjeS10cnVuaworMzY0MTUgNmQ3YWIwY2FkNzJkZTE2Y2ZjMWQ3OTJmMzI0NDUwZjA1ODg3MmU4OSByZWxlYXNlMjMtbWFpbnQKKzM2NDE2IGZkYjkzNzc1MTNlNDJiMjk5NTU0Y2ZkNDI4ODU0YTg1M2RiNjFjZjUgbGVnYWN5LXRydW5rCiszNjQxNyBmNmI0NWQxY2IwYTJiZjY3YjExYWI2ZjY2MTU2YTYwN2ZmM2RjZDE4IGxlZ2FjeS10cnVuaworMzY0MTggYjUyN2NiMWIyYjllYjRhZDk0NjZjOTg2NjU5MjdlNTBmOTZiZjBhMiBsZWdhY3ktdHJ1bmsKKzM2NDE5IDFjNWVkODFmZmEyMzVkYjg5MGYyNzE4OGMxOTk4Mjk2M2U0YzhjYjMgcmVsZWFzZTIzLW1haW50CiszNjQyMCBjMTZiMDNiYTFjMjJiZTQwNDNmNDA1OWFiZDcxM2RmZDE3NjBjZGJiIHJlbGVhc2UyMy1tYWludAorMzY0MjEgOTBkNWNlZTdlNjZlNDdhOTQ5ODA2ZDJlYWE0OTc4Yjk0YWZiZjUwOCBsZWdhY3ktdHJ1bmsKKzM2NDIyIDU5OGE1Y2U2MzMyMmZhZTNhY2U2YjQ4ZTAxOTc4MjYxYTVhYjUyZTUgbGVnYWN5LXRydW5rCiszNjQyMyA1MDc0NWQ5OWZiZjE2MDg4ZDNkMTJkZmE2ZjI3ODc1MjY5YjQxMTIwIGxlZ2FjeS10cnVuaworMzY0MjQgNWUxZjU1ZWMxN2Q2YzcxMGEyMDM3NmYzNjg1OWEyZjNmNGI5MjAxYyBsZWdhY3ktdHJ1bmsKKzM2NDI1IGFiOTc5ZmY4YjAyYWVjYTU0Nzk4YWNjMTY2YTU5YzQxNDU4YTUxMWIgbGVnYWN5LXRydW5rCiszNjQyNiA3OTliY2RmZjJjZGMwNTYxYjYyODY1NTEyZjM4MjI5M2M1ODcxZDlkIGxlZ2FjeS10cnVuaworMzY0MjcgMDhkOTA0NjBhYjRkNjI0ODcwYmE3YWZhYjBjZjI5NDM4N2ZiZThjMCBsZWdhY3ktdHJ1bmsKKzM2NDI4IDU3ZDIxYzVlMGViOGFmMGIyYmEzNTYyMzI0NGMzZjU2NGUzNzljMDEgbGVnYWN5LXRydW5rCiszNjQyOSBjYzFmNzRkMTlmY2JiN2NiMTkxNmE4ZTQ0ZTYxNWQ0YTdlYzBiN2I4IGxlZ2FjeS10cnVuaworMzY0MzAgYzQzMTZkZjJmZWQ0Njg4NWMyMzNjNWRkMmM4ZWE0MTg5M2NmYmRiMiBsZWdhY3ktdHJ1bmsKKzM2NDMxIDZlOWMxODI5NThmOTE3MGZiMjllYjNlOTcyNzZiZTIyODlhNDk2MzIgcmVsZWFzZTIzLW1haW50CiszNjQzMiAyYjEwZTJiNWU4MWVmMjNlNmE1N2Y3MmY5ZGVmZjUxZWZkZTUwNzViIGxlZ2FjeS10cnVuaworMzY0MzMgNGYyNDgzYWJiNjIzYWY2NDA4ZDg1ZGRlYmE1NjFiOTk2M2M3NmE3MiBsZWdhY3ktdHJ1bmsKKzM2NDM0IDhiMzI4OGY2MDdlMWY4MjQwNzBjZDU3MDg4YjFhM2VkZTYzZWFiYzkgbGVnYWN5LXRydW5rCiszNjQzNSA1NTQ2YzdhZTI0ZjcwZDdmNWNkZDg3NzRjYWIwOTU5Yzk0MGYzMTk5IGxlZ2FjeS10cnVuaworMzY0MzYgMzFiNjVkODM3MWFmOGQyNmFlZjBlMTg0Mjk3ODczNzFmOGNhNzMxOSBsZWdhY3ktdHJ1bmsKKzM2NDM3IGYwODFmM2E1NjhmYTg4N2UxNWJmYWRmYWYzYWQ1OTJlNDMxNWE0YWUgbGVnYWN5LXRydW5rCiszNjQzOCAwOWVhZWU3Mjk3M2M1MGViZWVjOGZmYTA4M2JmYmRmYjM2OTRiYjBkIGxlZ2FjeS10cnVuaworMzY0MzkgYzUzOGE3NjQ0ZmZhNmNiNzhjZWQzY2I2ZTM4NDUwOWIwMjVhOGJlMCBsZWdhY3ktdHJ1bmsKKzM2NDQwIGU2ZjdlZjcwNzNjNjc5NjIwZDk5OGRiZTA0YTY2MWZhZDMzZWMzNjggbGVnYWN5LXRydW5rCiszNjQ0MSBhZmI0MDMzODNmNWQwN2EyZmQ3ZWE2ZjhlNzU1MzgzMDk0Y2U0NTUxIGxlZ2FjeS10cnVuaworMzY0NDIgZjYwM2U1ZTk2YTRmN2M4MDk0Y2RlZmFlNjc5M2EzZmMyZGIxNmU5NiBsZWdhY3ktdHJ1bmsKKzM2NDQzIDJmZDY5MjQwNzI5YWFlNTNmOWQzNGM0OGE3N2ZkMDcxYTg2Y2JjZTIgbGVnYWN5LXRydW5rCiszNjQ0NCA2YWJhNmQwNzU4OTlhNjE4N2Q4M2Y2Nzc0MTMyM2Y1NDUzOGQyMWJkIGxlZ2FjeS10cnVuaworMzY0NDUgMTQ0NjA5NWE5NzFhYjhhMzU2ZjVlNmNjOGViYTYyZmIwYjQxOWJjZCByZWxlYXNlMjMtbWFpbnQKKzM2NDQ2IGY4NmJmYzAzZTc2MzY1NDY2NDJhZWM5ZTI5ZDA2NzM2M2JmMDQyNzggbGVnYWN5LXRydW5rCiszNjQ0NyA3MzAxNmJkMDFhNzE0YWZhYzRjYTkwNDNmZTNkYWI2OGMwYjEzZWQxIGxlZ2FjeS10cnVuaworMzY0NDggZDQyZWZjMmI0NWU5NWM2OGZiNDYxMzFjMzMxZTFmMWQ5NzVlM2EyOCBsZWdhY3ktdHJ1bmsKKzM2NDQ5IGY5YWQ1ZDIwMmU4ZWY0NDIzMTE3NWFlYTA1NzhmZjcxMGI2NWVmZDYgbGVnYWN5LXRydW5rCiszNjQ1MCA0NTdmZDQxYzk2MWQyZmY4YTMxNjdlNzdhZTQ0OTk3YjlkOGYyMWJhIGxlZ2FjeS10cnVuaworMzY0NTEgNTEzOTg5MmFkZTYyMWNkOGM2Nzc2MGFjNGZjZWUwNTBjNTljY2JkYSBsZWdhY3ktdHJ1bmsKKzM2NDUyIDYxNzNkOTdiODI5ZTZlNGMxMmQyOTVlMDQxN2E1NGI2OGRkM2ZkN2EgbGVnYWN5LXRydW5rCiszNjQ1MyAwNTlkYWUwNjU4NWJlZmJlYWVlMjk5M2EzYzk5ZDMyNjAzNTE0NjI0IGxlZ2FjeS10cnVuaworMzY0NTQgY2UzMzk2N2E0YWIwZjMzNjM4ZTUxMWFhNmJlYWM2ZGNmMTIwNjk0OSBsZWdhY3ktdHJ1bmsKKzM2NDU1IGNmMGM5ZTE1ZjZmNGQ2NDg0ZmVkNGE5MTA5ZDczNTE5MmRkZjc4NmUgcmVsZWFzZTIzLW1haW50CiszNjQ1NiBjOTg2OWExOGU2MjEzMmQzZjhhNTNmMzdmYmIxOGY1OTQzM2YxZTM1IGxlZ2FjeS10cnVuaworMzY0NTcgYWIxOGVmODNmNWE2MmFjNGE2MWZkMTg1Yzc5MTliYmRhY2Q3NmU4YiBsZWdhY3ktdHJ1bmsKKzM2NDU4IDliNWM2MzgwMmJmOWUyYWI2ODY0NWMyNWZhMzViMzQ0MjNlZTI3YjggbGVnYWN5LXRydW5rCiszNjQ1OSA2ZjM2ZTAyYjFmNjk3ZDBjYzM0NjZjZDM0ZWJmZTE5NmQ3MjkxZWI3IGxlZ2FjeS10cnVuaworMzY0NjAgOTlhYzUzMGU4YjNmNTdiNDJmODE1YzQ4YzdmZjhlZTExYTAwNjdmOSBsZWdhY3ktdHJ1bmsKKzM2NDYxIGVmMjM5NDAxNGQyNDVlNTFhNDMyMzgzZWZmMDI0N2I5MWM2ZWM1YTcgbGVnYWN5LXRydW5rCiszNjQ2MiAyZGJmNTk2ZTA1MjRlOTU5MTAwZjMzYTgyYWFmOWFjOGYzMzJlZjExIGxlZ2FjeS10cnVuaworMzY0NjMgZmRlNDMyN2NkNDcyNGQ0YTA4Njk5ZGQ2MDZlZDg4N2U3ZDUxOWU5NyBqaW0tbW9kdWxhdG9yCiszNjQ2NCBkYTE4MjEwZTMxMWMyYzIwZTJjMjQ1ODBlZWY4Y2UzMWQ5NmMwMjg4IGxlZ2FjeS10cnVuaworMzY0NjUgZDhmMzE3Y2E4MGJkMzBjYmY2YzdmZDJjNjYwM2M2ZmMwZDc2Y2Q3MSByZWxlYXNlMjMtbWFpbnQKKzM2NDY2IGRiOTk0ODQ5Y2RmM2ZjNDEzNmYxNTZmYTQ2MTYwOTQ5NTI2Yzc4MWYgbGVnYWN5LXRydW5rCiszNjQ2NyBjZjBiYWVmZThkNDAxMzBhMzI4NzhlNmNlYjlhY2Y2MmQ1OTMxMzQ3IGxlZ2FjeS10cnVuaworMzY0NjggZmJiOTAxZDYyOTdiNTVkYzNlM2U3OTM3NjMyZDQzZWZkMjlkZWU3MCBsZWdhY3ktdHJ1bmsKKzM2NDY5IGZmNTlhZDU4NTY4ZTFmNWNhMzU1YzdhOWQzZGNmNDFkZGZjZGNkMzUgbGVnYWN5LXRydW5rCiszNjQ3MCBlODk5MDYwYjFmMDUxZWYxNGJhZDYwOTk5NjIxY2UxYjFhZWI3ZmM4IGxlZ2FjeS10cnVuaworMzY0NzEgZGMzMmUwYThhMGVkYjE1ZjJjZmMyODM1YjY1MDI5ODgwMjViNzNiZCByZWxlYXNlMjMtbWFpbnQKKzM2NDcyIDliYzJlZWMxNDc4YjZiYTU1ZjBiMDdlNjg5MTJlODVmZWU1MzI4MTAgbGVnYWN5LXRydW5rCiszNjQ3MyA5YzM0ODUyNmE2OTk0MDdiY2YzMTEzNDU1OGE4MjkxYWFlOGEzYTM0IGxlZ2FjeS10cnVuaworMzY0NzQgNmMxYzU5NTdmZWQ1ZjllMGZkYzk4MmI2NzM1ZmQwMmM5MWYxZTVmZiByZWxlYXNlMjMtbWFpbnQKKzM2NDc1IDNjMmQ5ZTdhYzVhMWY5OWY4OGNjYTBjNWI4Mjg1NWExYThmYTZhY2QgbGVnYWN5LXRydW5rCiszNjQ3NiA3YmQwNGE0ZDI4YjkzMWYxODlhNjM5NGVkZDkwYzU4NWI0YmI0MzQ1IGxlZ2FjeS10cnVuaworMzY0NzcgOTI5NDQ0Y2EyMmQ4ZjZkZmVjOWVkZWEzOTljOGU3Y2VmZWUyY2JjYSByZWxlYXNlMjMtbWFpbnQKKzM2NDc4IGY3MjVhMTkxMGQwZDA3NzMzYjdkNTE2YjM1NWM3OWZkZGE3NTg5ZjMgbGVnYWN5LXRydW5rCiszNjQ3OSA0NjNiZjVlYmY4YTMzYWI0MzMzZjQ0ZDk3NjY3N2Y2OTNjNGE3MTJmIHJlbGVhc2UyMy1tYWludAorMzY0ODAgMzkxOTM3NTcxMDY1YWUxMjY0YWE1YTQ4Y2JmODc5NjM4NWM3MmQ5OCBsZWdhY3ktdHJ1bmsKKzM2NDgxIGJlMTQyN2NiMDQwNmY2MjlmNzNhMTQ0ZTEyNDMxYjhlMWNhMTg3NTMgbGVnYWN5LXRydW5rCiszNjQ4MiAzY2NhMjhhYjM4NTQ0MjE1OGIwYzkyZGZmNWEyZmFhZjNlMmM1NWI4IHJlbGVhc2UyMy1tYWludAorMzY0ODMgY2EyYWE0M2JhMzhiN2FlZjIzNzMxNGVhNmVlMmNmMTE1YTU5OTExOCByZWxlYXNlMjMtbWFpbnQKKzM2NDg0IDU4ODQzZjE4NmU4MGZkZWZlNDkxYTM0OWFjOTVmNDdjNGI3ZWRiN2MgcmVsZWFzZTIzLW1haW50CiszNjQ4NSBjMTMxYzc4OGEwNmZhYzgxODUzM2RkN2JhYzM2ODFlYmVmY2QyNzhjIHJlbGVhc2UyMy1tYWludAorMzY0ODYgZTRkOWQ4NDBjZTZlNTU5Y2MzZWU1YzNmNWNlMWNmNWRlOGZlZDYwOCBsZWdhY3ktdHJ1bmsKKzM2NDg3IDZjNWYwMWVjMmY3NWI2ZTE0NzlmNDUxNTFhNGIxMTRkOGJiM2RkYjggbGVnYWN5LXRydW5rCiszNjQ4OCA4YmQ2N2JhZDE0M2NkYzU2MmRlNjBkOTY4NWU5N2MxMzFmNTc3OWNjIHJlbGVhc2UyMy1tYWludAorMzY0ODkgM2ViNmQyNTM2MGEzN2EwMjI5YjlmZDUwMTAxYzE0NGVmNjQwMDcxNSBsZWdhY3ktdHJ1bmsKKzM2NDkwIGMxM2Q5MTFhZTA1YmMwZjM2NWE5NzAwMzE4OTYyODBmZThjYzQ2YzAgbGVnYWN5LXRydW5rCiszNjQ5MSA5NDFjMjM5Y2I2ZDI5NjhjMDMyMDhiN2YwNDgwNzU5ZDFjODUyNGE0IGxlZ2FjeS10cnVuaworMzY0OTIgNTk0OTk2Y2FmZjEwZDEzYjY2ZDEyNzJkYmU4NDE2YmE4ZDUzY2M3YSBsZWdhY3ktdHJ1bmsKKzM2NDkzIDI3MmFiNWE1NGI5ZWJjOWM2MWVkMWE3MmZjODUxNTk2MDU0MWM4MmQgbGVnYWN5LXRydW5rCiszNjQ5NCBhMWE5Nzc2ZmFiNTNlYTJmNjQwMjRlYzk2MTBjMDViNGY5MGJkZmFkIGxlZ2FjeS10cnVuaworMzY0OTUgNTJiZWFmZDkzNmM4MGU1OGU1MzNmZTc2YjM0NDYzZjU4YWJhMDUzYiBsZWdhY3ktdHJ1bmsKKzM2NDk2IGQyZTY2ZWFhNWY3NGU4MWU3ODg5YzkxMWJiZGNlOGI5ZjQ0MTJlYzQgbGVnYWN5LXRydW5rCiszNjQ5NyA5Nzc2OGQ4NzM5NGE0NDEwNzI1NzNkYzJjMzU3NmNmYjhkNjcwNzA0IGxlZ2FjeS10cnVuaworMzY0OTggMzQ3OTYxMGZiMjg4ZDk5OTJiYzg0Yjg0OGJjZGQ4YjdmMDI1NjQ4ZiBsZWdhY3ktdHJ1bmsKKzM2NDk5IDk0OTQ3M2ZhNDgyODVlNWM4NmJmMmJjNDJhNzliNzNkNzhiMjFhNjUgbGVnYWN5LXRydW5rCiszNjUwMCA4OGY1NDA1NzYxYWY3NjM0YzcxNDExNGMxNWNhYmVkZGM1MzVmZWQ2IGxlZ2FjeS10cnVuaworMzY1MDEgNjg3ZDJlY2ZhNjQ4NWU4Yjc1OGIyZmExOWVkNTE0OTMwM2JhYjY5OSBsZWdhY3ktdHJ1bmsKKzM2NTAyIGNhZGEyZTliNjg1Yzg5ZTliODcwZjY4N2ViMTlhNjVmNzAxM2YxODggbGVnYWN5LXRydW5rCiszNjUwMyA1NTgxZDY4YjNhZTllNzIzODRkZjUxYWZmNjkyNTAyMmYxZDQwMjdkIGxlZ2FjeS10cnVuaworMzY1MDQgZDNkNDI2NDgzZDcxMDQzYjNiNTk3ZmNhNWYwNzg1MGZmZTYxYTlmNSBsZWdhY3ktdHJ1bmsKKzM2NTA1IDEwNGE3ZmMwNmJkZmEyYTRkZWQ0ZDVlNzk5MGUyOGQ4MDBmODhkMTIgbGVnYWN5LXRydW5rCiszNjUwNiBiYzRkZDMxYzczZmRmNGY4NTY4NWUxNDlkZGM2ODZlZmU4MGVlOTU0IGxlZ2FjeS10cnVuaworMzY1MDcgOGZjZjIwNTJkMTZlMjA2MjI5MmE4N2QwYzhhOTZjNTY3NjNhNzllYyBsZWdhY3ktdHJ1bmsKKzM2NTA4IGQ2NGRjZmI0OTViMmI3MTVmZGQxNmNjM2ZkZWEyMDY1OGM3NmQwYjcgbGVnYWN5LXRydW5rCiszNjUwOSAzNWQ0MGZmNjllYjYyNjRlOWI5MWU4NjIwNjM0N2MzZmJiNjI5NGNmIGxlZ2FjeS10cnVuaworMzY1MTAgOWEzYjQyMTliY2JlZGViYTQ5YzUxYmZmNzk5Y2Y5YmJhMDUzNjZiMCBsZWdhY3ktdHJ1bmsKKzM2NTExIGZhZTQ2MDc5NGQzZDM5ZjYwYTk0MGNkOTc4ZTc1Y2VlNWRkN2IyOGEgbGVnYWN5LXRydW5rCiszNjUxMiAxMzk5ZGM2MTY3MjBmNGIwM2IzY2RjMjJhY2Q2MTkzZmJjZWEzYTA1IHJlbGVhc2UyMy1tYWludAorMzY1MTMgNTc3YTllNGM4MmZiNzFlMjZiZWM5ZTkyMmE0ODhmM2NiZjc5NTljYSBsZWdhY3ktdHJ1bmsKKzM2NTE0IDJiZjg2OWQzMWYwY2U2MTVlN2MzMzg1Y2MwODNkNjE1ZjRhZTAyMzYgbGVnYWN5LXRydW5rCiszNjUxNSA1ZmI3OGEyZDk0ZjBhZGUwZDlhNTJhYTU3M2EyZGNmM2NhZmY2NGIyIGxlZ2FjeS10cnVuaworMzY1MTYgMjExZGI2N2NjZDA5ZWQ5NDM0ZTdmMDkyZWZmMmE2ZDc3N2U5NGM1ZCByZWxlYXNlMjMtbWFpbnQKKzM2NTE3IDc4MGEzMzc4NzQ1OGVjZTIxM2IzNjY3Y2I4N2Q4MTA5ZWVhMTk2YTkgbGVnYWN5LXRydW5rCiszNjUxOCAzYzM4MmQ5MGYzMDJkM2U1NjI4ZmY3NjMxZGY3ZmI5YzRlYjUwM2JiIGxlZ2FjeS10cnVuaworMzY1MTkgZmYyNjcxNGJmODZkYzRjMjJiNGUxNThjMTY3MzViNjYxNGM5ODgwZiBsZWdhY3ktdHJ1bmsKKzM2NTIwIGJlNmYyZTFhNzhiNzYzYzI2YmIxMmQzNWI5NzNjNjk2MmE1NDkzNjcgbGVnYWN5LXRydW5rCiszNjUyMSA0OWJhYWQ3YjAzMmUwYjBjNGRhYmZkZmFlNDQwNjRhYjQ0YTYzMWU4IGxlZ2FjeS10cnVuaworMzY1MjIgNzc0MmY4NWEzNzIzOGUyYzVlYjBiYzA4ZDJjYzQzMGVjMWI2NTE2OSBsZWdhY3ktdHJ1bmsKKzM2NTIzIGRjMmZlNzdkZDE2N2VkYzg2NTFmNTMwMjRhMDUyNjdhZjc4YzQxOGYgbGVnYWN5LXRydW5rCiszNjUyNCAwNzI5ZDFkYjUxMTgzODBkZDA3MDMyMDhjMjZlNjk4ZGY0ZmZjNGRhIGxlZ2FjeS10cnVuaworMzY1MjUgZWQzNjYyMWIxMjZhMWU3OTg1NDRkM2QyYWExNTExMGI0ZGZkMGVlNCBsZWdhY3ktdHJ1bmsKKzM2NTI2IGRmNGU2Y2M2NjYxZDA0NTg4OTk0OWM3MGVlNTdjNzBjNDNkM2VhNTcgcmVsZWFzZTIzLW1haW50CiszNjUyNyA0YmUyODA5M2U0ODBlYWMxNWFjMzQ5NzQyN2I5NzcyZTNhOWE1OTBiIHJlbGVhc2UyMy1tYWludAorMzY1MjggYWIwYjJhNTg4OGY5ZTcwZDExZjZiN2M5ZjBjNzU3YjU5NTg3YzcxNyBsZWdhY3ktdHJ1bmsKKzM2NTI5IDUwNjlmNWJkNjZmM2Y2ZDZiNzBmZDExMzQ2MTlkNmYwYjYxNGQxZGEgcmVsZWFzZTIzLW1haW50CiszNjUzMCBkMWVmODZmODc4NWY5M2RmNDhjZGEwNmZkNDYxMWJiYThmM2ZhZWMwIHJlbGVhc2UyMy1tYWludAorMzY1MzEgZjA4NTI5ODc5ZGIxYWQzZDVjYTQ1N2VmZGM2YmM5NDE4MDdhZDk0YyBsZWdhY3ktdHJ1bmsKKzM2NTMyIGFiZTA0ZTc3YTRiMGZkN2E3ZTg3ODZmZDI0MmY3ZDNmMzNkYzY4ZWUgbGVnYWN5LXRydW5rCiszNjUzMyA4NDZhY2U1NzM4OWM5MmE5ZGQ3ZTRmODgwNmQxMzFlYmEwMzFhMjMxIGxlZ2FjeS10cnVuaworMzY1MzQgZGY4OGZhZGJhMmY1NmNiZmU0NDE5MjJlNzg5NDkzM2MxOWNlMGRmZSBsZWdhY3ktdHJ1bmsKKzM2NTM1IGM3YzliNjhkZGRhMjljNTYxZGM4MjgzNzA3ZmI5YWNjMjI3MjA2YmEgbGVnYWN5LXRydW5rCiszNjUzNiAyNTVhZTIzYzc4ZmI2MTkzYmZjNWY1MzhjNmY2YzIzNzk3OWJlM2U4IGxlZ2FjeS10cnVuaworMzY1MzcgMzhhZDljNmU3MTdjOGIwYjhiYzk3MmY2MWYzMzgyZjJhMDg3NTM3YSBsZWdhY3ktdHJ1bmsKKzM2NTM4IDE3NDA2NTQzZjE1YjI3ZThhYmNiOThlM2YzNzA5YWZiZTBlNmM4M2EgbGVnYWN5LXRydW5rCiszNjUzOSA1YjBjODdkZTZkMDUwOTZlZDQxODEwNGM2YjdjNmRjNzc1NDYwZTEzIGxlZ2FjeS10cnVuaworMzY1NDAgZjc5Y2YxM2E5YTdkMTBhODMyYWJlMDIyNjVkN2UxMTU1NWRjYzRjMiBsZWdhY3ktdHJ1bmsKKzM2NTQxIDBlODkwYWMxYzBmMjY1ZjQ0N2YyN2ZmMzdmY2YwMzJmODM4YmJlOTYgbGVnYWN5LXRydW5rCiszNjU0MiAxYmQzMzgzYmFkOTg1MDM2NDgwMzY1YmVkMzM5MWZmOTY2NzI0NzQwIGxlZ2FjeS10cnVuaworMzY1NDMgMTA5NTUwZjVhODI5NjMwYThlZmYyMTA4MmMwZTBlYmYwZjA4MmUzYSBsZWdhY3ktdHJ1bmsKKzM2NTQ0IGNiYjI1ZmRhOTVhNTgwZjJjNjdmNGFhOWJkNDQwNzg4ODJlNmI0NmMgbGVnYWN5LXRydW5rCiszNjU0NSBkMDlkYTcxNDEzY2EwNGZjYjZjZjMzZmFjZmEyM2M1YTQwYWZlYmRlIGxlZ2FjeS10cnVuaworMzY1NDYgNGQ0M2IwYWJjMjJhOGI2MWZlMmFjNTBjZWFlOTk2ZmNlN2E2MzQ5MiBsZWdhY3ktdHJ1bmsKKzM2NTQ3IGVmY2E1NWJiYmEwYWIxMmEwNGY5NzZkNDY5NjM5YjUwNTAyYzM3MmYgbGVnYWN5LXRydW5rCiszNjU0OCA2YWNkNzA3MGVkNjZmN2FkNjUzMTBkYjAxYTJmOGNiYWE4ZjdjM2E2IGxlZ2FjeS10cnVuaworMzY1NDkgNzU1OWM3ZWI0NzgwMjc0MzQ5ODYyNjk2OGM2M2I4NDQxYTU2MGMxNSBsZWdhY3ktdHJ1bmsKKzM2NTUwIGU0Y2M3ODg4NGZjNDI2YzI2ZDIxOTJiMjE2NTU5ZjQ1YTI2OWUwNTkgbGVnYWN5LXRydW5rCiszNjU1MSA2OWRhZGMyY2ExNGRmY2JmNjJhZTFhMTZiZTI5MDNmYjAzODA1YzJjIGxlZ2FjeS10cnVuaworMzY1NTIgODE3ODRmNjY2Nzg5YjkwMjRmODc2ZTUxY2I5OWZkZDg2YzVjNTU3ZCBsZWdhY3ktdHJ1bmsKKzM2NTUzIGUxMzVlODJjZjZlNDg5MTZmNmI5ZDQ2NWNhOWNhNTdiZmZmYWZlMDggbGVnYWN5LXRydW5rCiszNjU1NCAwN2I0OGVhZjJiMDFlYmM0OGM0ZmE0MDdiNmI2MzcxZTg1MzNjNmM4IGxlZ2FjeS10cnVuaworMzY1NTUgYmViY2I3OWYzN2NiYzk0OTgzOTc2NDEzZDA0NDkyZmFjYTg3MzczMSBsZWdhY3ktdHJ1bmsKKzM2NTU2IGRjM2YwNGFmZWY3NTcwYjY4MzFlMGFjNDUyNDQ0NDNlNTJjOTYyNDggbGVnYWN5LXRydW5rCiszNjU1NyA5NzdmMjY3YjAwZjkzZWM2MjkxOWQ3NmE1MTNiM2YxMzNjNDE5MDU1IGxlZ2FjeS10cnVuaworMzY1NTggYjFkMTQyZDcxNDgyODk5ODcwNDYwNmRhZmZkZjE2NWM3ZDQ3ZTkwZCBsZWdhY3ktdHJ1bmsKKzM2NTU5IDJiYzY2ZjFkZjdjYzdjODIzZmRhM2VlNjRiMmNjZTIwZWE3N2U4OWEgbGVnYWN5LXRydW5rCiszNjU2MCBjM2EwOTZiZmJkNmJlOTM5NTk5MGU3OTA4YzVmODg3YzM1MzdhODY3IGxlZ2FjeS10cnVuaworMzY1NjEgMjgyOTI3ZjdiZGUyNDJkYTdjYzM5NTlhMzNmZThmYjU2NGE4MDMzZSBsZWdhY3ktdHJ1bmsKKzM2NTYyIDhiZGQ3OTRhNDE5N2U4OTcxMTM2MTExYmExZWMxYjkzZmNhNTE0ZjkgbGVnYWN5LXRydW5rCiszNjU2MyBjMWJkMWM4ZTY0YjQ1NzQ4NTljOTFlM2IzN2Y5NzM4YmQ3NjdmN2Q4IGxlZ2FjeS10cnVuaworMzY1NjQgYjZmMTI1MmI2ODFjNTFjYzA4M2M0ZmY3MzY5ZDA0NzVhNzU2MDgyMCBsZWdhY3ktdHJ1bmsKKzM2NTY1IGY5NzA5OWY5ZmYxYzMxZjg0OWZhN2E1ZGY1OTEyNzM2MDgyOTQyMmMgbGVnYWN5LXRydW5rCiszNjU2NiAzMzc3YTcyMzczZmJmODVkNTY1OGM5NjZmYzA2MjA3NTE2MGYxNDA2IGxlZ2FjeS10cnVuaworMzY1NjcgNGUwN2VhY2IxYmRmZDhkNzU0YTM4NTEwODk4YmNkN2ZjODAzM2RhMSBsZWdhY3ktdHJ1bmsKKzM2NTY4IGQxNDM2YzI4ZGNhMzJlZTJlNjc3NzM1MjE5ZWVhNDE0NjZmYWFiYWIgbGVnYWN5LXRydW5rCiszNjU2OSBkYjFhMjdiNmQ3NzUwZWMyNzZiOTczYmQxZDljZDliNjgwNjQzNWM3IGxlZ2FjeS10cnVuaworMzY1NzAgYzE4MjRkNjhkMTBlYWM0M2M5ODNjMTlmODE3ZmJjMTE5MTZmNTQzMCBsZWdhY3ktdHJ1bmsKKzM2NTcxIGU0NTc1NTE5ZWMyNjIzYTBmZDU1OTM5NzdiOWZlMWMxMmRjMzYxNmIgbGVnYWN5LXRydW5rCiszNjU3MiAwNWNhMjIzMmVmY2JkYmQzOTY4OTljNmY4OTczNTkxOGRlYjZhZDVhIHJlbGVhc2UyMy1tYWludAorMzY1NzMgYjc5NTFlMWY1ZGRmMjliMGI0NDAzMDQzYTQzNTk4ZmY2MTYxMDEzMiBsZWdhY3ktdHJ1bmsKKzM2NTc0IDVkOWY3MmQwODQzZWVhOWQ4ZWNlM2NiZGJjZTdiNmUxMDBlNDNmYzMgbGVnYWN5LXRydW5rCiszNjU3NSA5NWViNmUxOGE1NDI3M2QzNWNmODk2OWNiM2FmYWQ1NDY0M2ViMjM3IGxlZ2FjeS10cnVuaworMzY1NzYgZGJkM2EwNGViMGM2NDg5NTg3MzZmNDA4OTZhMzcyNjEwMjVhMzM4MCBsZWdhY3ktdHJ1bmsKKzM2NTc3IGI1NDU5YmY0ODI2MjRiYTFlZjJkNTRiOGJjZmMyZjIzZjIzNmNiNWMgbGVnYWN5LXRydW5rCiszNjU3OCA5MzhkYzMyZGRiYzQxZjE0NThkMmQ2Yjc0NWMzNjYwZjYxY2YxNjQ1IGxlZ2FjeS10cnVuaworMzY1NzkgMjU3NTYzZGNiNDQyMzQ0ZmFhZjk4N2NjODIzYzRhYjllNGU4MDcyMiBsZWdhY3ktdHJ1bmsKKzM2NTgwIGRiMjZiM2RiZTgwMjdjYzliMDUwZWMzNGM2Y2M4YTVlMTc4YjUzZTEgbGVnYWN5LXRydW5rCiszNjU4MSAyNmNiMDU4OTA3ZjIxYjc4MTY0YTliMjI5NDBiZWQyYjc2YTU4ZDk4IGxlZ2FjeS10cnVuaworMzY1ODIgODU5ZWE4NjEyZWIwZGM1MjhiNGExNGQxN2YwYjIzZjBiM2RjMjkzNyBsZWdhY3ktdHJ1bmsKKzM2NTgzIGQxNzc3ZjUxOTIzYmI2MTgxNTQwYWMxZjFlNmI3MjI5YzVkNzlmMzUgbGVnYWN5LXRydW5rCiszNjU4NCBkY2M1YzJkNThmMzI1ZmZiYzgxMWJmMjA3YTIxN2EzNWM1ZjdhYThmIHJlbGVhc2UyMy1tYWludAorMzY1ODUgNjFiZTkwNGExZDRlMzU1M2Q3YTJkNzFkMjkwNWIyOTNiYzVmNzNiMiBsZWdhY3ktdHJ1bmsKKzM2NTg2IDc2YWQ4MTRiYzY3Yzk0ZWVmZmI5NzgwNmU5NTNmOGFhMTYwZDAxYTggbGVnYWN5LXRydW5rCiszNjU4NyA4YWQ1YTE2MjAwOTJlNGQwZWU2MTU0M2VmMzA1OGY3ZTQ3YzExNWEyIGxlZ2FjeS10cnVuaworMzY1ODggZWNiMGM5N2YxZTQyNjBkYWE3MjdhNzExZjNmZjRjZDI4ZTkxNjJlMCBsZWdhY3ktdHJ1bmsKKzM2NTg5IDUwZWNlM2Q0ZmYzNzIyODc4YjIwNmU1MjNhMTJkYTUzNzg5YTIxNzUgbGVnYWN5LXRydW5rCiszNjU5MCBkMTU1MTdmMmFiZThiY2YyOGE1OTA3NGJhNTM5Y2NiZjA1NWMyN2NiIGxlZ2FjeS10cnVuaworMzY1OTEgYTkxZTdhNDVmMTQyNDFmNjk2ZWY5MTUwNGEwZmZhZTVlOGU5ZWJiZSBsZWdhY3ktdHJ1bmsKKzM2NTkyIGZmYThhYjAwODFmMjEzYzQ5NTc0NzhmMWIwMDQwYjgyMTEzOTYwMjQgbGVnYWN5LXRydW5rCiszNjU5MyA5ODNhOTFiNTBmNmU3ODc1MDI1MjA1YjYwYWQ1NDI5NDM5MjMwMTMyIGxlZ2FjeS10cnVuaworMzY1OTQgYTNiMWQ2Yzk5ZTQ2MjFiZTRmN2Q0OTQ3NDEzYjJkZmNjYjU1ZTY4MiBsZWdhY3ktdHJ1bmsKKzM2NTk1IDYyZjg0M2ZjYjgyMzc5N2JjYzlhNTlhYTFjZjYzZjRmOGVkNzk3M2UgbGVnYWN5LXRydW5rCiszNjU5NiAyZWM0NTEyMzBiOGViY2IzMjY1NjVhYTkyNGU4ZmUyZTdlYzcwZWE5IGxlZ2FjeS10cnVuaworMzY1OTcgYjMwMWU1ZGVlOTM4YzIzOGEwMTBkODI0MmIxYmVmNmNkZGI1Mjc5MyBsZWdhY3ktdHJ1bmsKKzM2NTk4IDhhOTFjZDdkN2U4MjU0ZGQ1YzFkMjc1NTJhNzA0NDUwMjk0MDI3MWMgbGVnYWN5LXRydW5rCiszNjU5OSA4MjYwNjliNzI1ZGIyNjllYTFjZGM0NGY0YTY5YWE3MzNiMjU0YWY1IGxlZ2FjeS10cnVuaworMzY2MDAgNjg3NWNmMDg4MmUwMTIzY2I2NDYyYWI3YmUwZGNkMzE0NzA0ZGRmMiByZWxlYXNlMjMtbWFpbnQKKzM2NjAxIDEzZDIwMzIyNzg3ZDVhMzJhYjAxNzcxOGMzZWYzZjFiYjM4YTRiNTkgbGVnYWN5LXRydW5rCiszNjYwMiA3YWY2OTViYzU0ODA5MjY1YWEyOGM4MTRjNTMzNTUwY2IyYjhjNTI5IGxlZ2FjeS10cnVuaworMzY2MDMgMzE5MzhhNDYzZjI4N2U4ZjY3NDY0NDZkZWJiM2YyZDdjYWI4NmE4NSByZWxlYXNlMjMtbWFpbnQKKzM2NjA0IDUxN2UwMGFmMTNhMWE3ODMxMTUyZDE5MTUyMDZkNWY2ODA0MjBjYzIgcmVsZWFzZTIzLW1haW50CiszNjYwNSBjYWFlZjMwMmYxZTMzYzU5NDMzZjk4Zjg0MmQ2MjgwZmFiOTBkMWQ2IGxlZ2FjeS10cnVuaworMzY2MDYgNzkxN2ZkMmM0Mjk4MzgxZjJlMjQxMTM1MTU5NTQ3ZjU5MmQwMmZjOCBsZWdhY3ktdHJ1bmsKKzM2NjA3IGQ2ZTczZTUyODgwZTQ3Nzk3ZWNjYTdmZWQzM2M4YmQyMjViNDMyYTMgbGVnYWN5LXRydW5rCiszNjYwOCBlNmI4NDdiMDc1NTNmM2NlZTY2OGFjYTMzNmNmNmE0M2VhMzY5NjAxIGxlZ2FjeS10cnVuaworMzY2MDkgMDM0YjNiOTJjNWUwMzEzOTA0YzA2YTFlM2ZiNzcyNTJiZGJmNWRkYSByZWxlYXNlMjMtbWFpbnQKKzM2NjEwIDRmNGI3OTU2Mjg3Y2FiNjg5M2E2N2M0OWM0MTUwNTIyMDc2OWFiNmMgbGVnYWN5LXRydW5rCiszNjYxMSA4MDdmYmU4ZDM1ODQwMTNlNjUwNzMwMmJlZDlkODc4N2MzNDg4YzcxIHJlbGVhc2UyMy1tYWludAorMzY2MTIgMDA4OTI0MjBlMGRmNWUwODY1Y2VkYTc2MGYzYTliMzdjZTNiMzdmZiBsZWdhY3ktdHJ1bmsKKzM2NjEzIDZkZjkzMjJkNmFiODIzNzg5ZjhiMzFlYzdlNjI1NGRjZDM0N2NlMzUgbGVnYWN5LXRydW5rCiszNjYxNCBhOTQwYjZjMDdlNTc3NWViYTNiZWQ3NDE5ZjlhMDZhMTA2ZDE1Y2I3IGxlZ2FjeS10cnVuaworMzY2MTUgNTVmNzNjODJlMzA0YmI4OWRjOGU2NDkxZmUwZjU4NDdkMGQ3Njc0NiByZWxlYXNlMjMtbWFpbnQKKzM2NjE2IDczMDQ1MTQzYmU2M2U4Y2ZmYmM2ZmUwZGQ3YzlkMTUxNTU5ZDlmMTcgbGVnYWN5LXRydW5rCiszNjYxNyAxZTIxODdmNTA2MzE3MTU3YzM2MDkzZjM3MWRlZGZmNTI4MmM4ZTk3IGxlZ2FjeS10cnVuaworMzY2MTggMGY5YzM5YjNlNWYwMmY0ODU1NGY5MjdhZDRjNWFmMTA5ZGRlNzA0NyBsZWdhY3ktdHJ1bmsKKzM2NjE5IDQ2ZTA0MzFjOTcwMWNhYzBiYTMwZmY4ZGExOWRhZDQxNjg1ODIxODUgbGVnYWN5LXRydW5rCiszNjYyMCBmYTQ5YzFlMmQyYzEwNzBjZTk2NGMzNGI5OGY1ZjQyOTUyODIwZDgwIGxlZ2FjeS10cnVuaworMzY2MjEgZWE1NGZkYjg2NTMwZWNlNTRkNGFkOTQzMTEzYTZiM2I0YTk1MDU0NCBsZWdhY3ktdHJ1bmsKKzM2NjIyIDkyNjdhZWI3Mjk4NWQwNTI0YmViYWVkOWRjZDEyNTI2MmZjMjUzZGEgbGVnYWN5LXRydW5rCiszNjYyMyBlYWE4YTM3ZTFlODUwY2U2NjZmYjRiNDc1NWJjMzJmNmJlMmFiNTkxIGxlZ2FjeS10cnVuaworMzY2MjQgZmU0MTQ1YmEzOWJmZmJhNjE3ODIzN2FmNWI1ODQ2ZjI2ODkwNjQ4OSByZWxlYXNlMjMtbWFpbnQKKzM2NjI1IDE2ZGU0ZjkwZWY0NDY4Y2I2ZjllNzM5ZjNiNzc2MWQ1MmE0Yzk2MzEgbGVnYWN5LXRydW5rCiszNjYyNiBkMzBkNTFiMmVmZTAxMmE4ZmQ1YzExODZkODcxOTJjYTljZmY0NTEyIGxlZ2FjeS10cnVuaworMzY2MjcgZGFjMjgxMzZkNTliMGFjNTdiOTYxYTQ3NWYxMzhiMzgyMDI3MzdhYSBsZWdhY3ktdHJ1bmsKKzM2NjI4IGNkYWQ2MjUzMzA5NGYwY2ExYjc0NTdiNDc3ODRkZTQ3YzU1YTgyNTYgbGVnYWN5LXRydW5rCiszNjYyOSBiOGJjNTk1NzhhNDc1NjMwODc5YzVkOTA4MTAyMTVkMTVjMGVkN2VjIGxlZ2FjeS10cnVuaworMzY2MzAgM2UwNDIzMzg1MmQ0ZmFkZmRjMDA4MjQwMWIyODk1ZjliMTZkZmIxZiBsZWdhY3ktdHJ1bmsKKzM2NjMxIDRhNTFjZGNmODYxNTMzNjY4YjBlZmNiYjg5ZjYyMzdmODkzODAwOTMgbGVnYWN5LXRydW5rCiszNjYzMiBlZGJhZjYxMDIyN2I5ZjMxNjI0NWU5ZmQyZGM0ZjVjNTliNWM0NjdiIGxlZ2FjeS10cnVuaworMzY2MzMgYjI4NzlhNzJiMzQ2NjFlOTBiMjI3M2Y5MDMxNjk2OTZiZWFhZjk1NiBsZWdhY3ktdHJ1bmsKKzM2NjM0IDYyM2FlMTI5MzBlYTE2YWQ2OTQ4YzFkMzg1N2NkZGIwNDJlYzAyYjcgbGVnYWN5LXRydW5rCiszNjYzNSA2ZTc5ZGVhODUxODlhZmE5NDRmNzIyNTU5ZWY3MTBiZGE1YTI4MzgxIGxlZ2FjeS10cnVuaworMzY2MzYgZDVjOTdkNjlkZmM3YzE3MWM1ZjAyOThjNzA4MWM5ODMyMjgyZjg4OCBsZWdhY3ktdHJ1bmsKKzM2NjM3IDk1ODJmYTJlNWUwZGEyYTA2ZmUxODBlODAzNWE0Zjg5YWMzNjZhMzEgbGVnYWN5LXRydW5rCiszNjYzOCBmNjE2ZDY1MzU5OTMzMDYzYzk0Y2Q4NDk3ZDM1ZWExZGY1MzA4NDdiIHJlbGVhc2UyMy1tYWludAorMzY2MzkgZWU3Yjg0MTAxMTYwNGY0OTlmMTQ4MDYzMmExNDgwNDllNWYzNDI5MyBsZWdhY3ktdHJ1bmsKKzM2NjQwIGQyYWRiYTQ3ODFkNWIwNzk4YWU2ODQxZWJkMjI0ZmQyMmRmN2M4ZWQgcmVsZWFzZTIzLW1haW50CiszNjY0MSBiZjY4NmVmOTJjYjBiZDI0MmU2MjdiOGMzNGNkNDdjYTdmOTM2ZTdjIGxlZ2FjeS10cnVuaworMzY2NDIgYmY2YTIwNjkwODBjNmIxZjZjYjdlMjYzY2I3OTYzMTExODgzZmRiMiBsZWdhY3ktdHJ1bmsKKzM2NjQzIGQxY2NkMmY0NWRhMzQxNzVjODlmZWZkMWI2Yjg0NmM4NjA3ODFhY2EgcmVsZWFzZTIzLW1haW50CiszNjY0NCA4MGFjYWI5YzNjMTc2MTc3ZThjZDU1ZTgxMzcxOTc5NDgwYzEwMGUyIHJlbGVhc2UyMy1tYWludAorMzY2NDUgYjM1OGQyZjQ0YTc0MDJkYzQ3MDliNDQ5ZTMyOWUyZTBiMGU2MGVkOCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ2IDM4MzVkZmYyZWZkYjVhZDAyYjg5ZWE0ZGI4YzNiZGM0MDgzODJjZDkgbGVnYWN5LXRydW5rCiszNjY0NyBmYmIyZDM0Zjc1YTNiZjcwMTI1ZjIxZDc1M2UxNzliMDI2ZjAxYjA0IHJlbGVhc2UyMy1tYWludAorMzY2NDggNzE2MzNkMzdlOThlOTJjZjk2NTliYWE5MDE4YmZlYmE0Njg1YjhkMCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ5IGM2YzU4YjYxZjZiNWE4ZjAzNGE2MDExZGM2ZTkwYTk2NTIyZDkyN2YgbGVnYWN5LXRydW5rCiszNjY1MCBkOTU2ODIwODk1MDUwYjQ5NTljYTI4ZGUyMjAwZjkwMjhmNWU1MjA0IGxlZ2FjeS10cnVuaworMzY2NTEgMzdhNzViMmI0YzI5NDA3MTc1OTY2ODliMTA5ZGU0MzM0YjIyNTU3NSBsZWdhY3ktdHJ1bmsKKzM2NjUyIDA3YTU3ZDg5YjFlMGRmZThjOWU3M2JmYzExYzc1YWYxOWY2NjlkMTYgbGVnYWN5LXRydW5rCiszNjY1MyBjYmQ0YWU3NDg5MGQzYzEwNGVkNmIyMzVjZmMxNzFhMDY2ODYwZWVkIGxlZ2FjeS10cnVuaworMzY2NTQgMDYwZGU1MDRlYmJlYWZjMDc2ODNiYmE4MDRhMTY5MWM5ZjhjMGQ3MSBsZWdhY3ktdHJ1bmsKKzM2NjU1IDQzNTNmZmM0MzdmMTlmZDg4MTQ1ZGRlZDgzNTgwOGNmNzkyMGMzNDEgbGVnYWN5LXRydW5rCiszNjY1NiBmYTRjNzA2M2E3MzZhNWM5ZTM0MjhlOTg4NzUwZjY4MWE0OWZmNTY4IGxlZ2FjeS10cnVuaworMzY2NTcgZGFjOWQwNjY0ZmMzOTMzNDUwODU3NTAyOThjOTQ4OWFhZWQ5YzY0ZCBsZWdhY3ktdHJ1bmsKKzM2NjU4IDcxODMwNTExMmY5ZmQ2MTFjMDkwNDA5MTY1ZGJkYTE2MWMzYjY4ZDggbGVnYWN5LXRydW5rCiszNjY1OSBiNThjZjZiNWZjOTE0MzgwZDUwZDJlYmM2MWUzNGE2M2NiMDJmZGM5IGxlZ2FjeS10cnVuaworMzY2NjAgMWRkM2NjOTI3ZDM3N2Y1ZTkzOWYzZDU1ZThmNzQyMTRhM2MzZmMzMSBsZWdhY3ktdHJ1bmsKKzM2NjYxIDcwZThmNjM0YTU4OTAyOWJmOGRlNjUxYjg5YTBhZmYyN2RkZDcyZmEgbGVnYWN5LXRydW5rCiszNjY2MiAyNGRkMWQwN2FmZGJjMDY4OWYyNDRiMjljMTU4YmE5OWZjZmZiNTJmIGxlZ2FjeS10cnVuaworMzY2NjMgN2I0NGMyNzgyNzkzZTljNjM0OTYzZTQ0YmYyMTA3ZWE3YzM1ZDE2OCBsZWdhY3ktdHJ1bmsKKzM2NjY0IDIxMzE4ZDc2OTVmOWNkM2Y1NjJjNzdmOTgzNGVjNjA2ZTE4M2RjOGYgbGVnYWN5LXRydW5rCiszNjY2NSAwODU2ZDk4ZTJhNjgzZGE2YjNmNzVmMzM2ODg3MWJmMjE4NDI4Y2FiIGxlZ2FjeS10cnVuaworMzY2NjYgZDViNzZhMTY3MzIzYWExNTMwYjlmOTY0YzdkMjg5Mjk5OTVmNjNkZiBsZWdhY3ktdHJ1bmsKKzM2NjY3IGRhYjNmMDg2NjhkZjIzYWUzNTZlZWMwOTMwMTg5NDIxZDIxZGQyMjUgbGVnYWN5LXRydW5rCiszNjY2OCBhNGYxOGM4OTg2NWZiOGQwZDJhYjJiODJlZTlmMTg3YTY2ZmExODEyIGxlZ2FjeS10cnVuaworMzY2NjkgZGIyMTA4MWY1YmMxYjE2MTg4MTIxYmRhOWEwZTBmMzg0ODc0ZDljNiBsZWdhY3ktdHJ1bmsKKzM2NjcwIDg2NTUxMzExMmY3YTBlNzkxOGZjMzMwMTVkMTNmMTc1OTI1OWUyMmUgcmVsZWFzZTIzLW1haW50CiszNjY3MSA1ZTQ4MGE1YzY0N2RhNzM0NDliZjNlOTgyZmEyZjVlMjBmMmFiYTc2IGxlZ2FjeS10cnVuaworMzY2NzIgZTNhMzVmYmNlOGVjMjIxNzZkMzg5MzI4NTYzZTMwNDJkMTFlZmRkYSBsZWdhY3ktdHJ1bmsKKzM2NjczIGU3Y2M3NDE1MmM1NTI5N2MzY2E5ZjhkNmRjZmYxOThlMjA0ZTg0OWYgcmVsZWFzZTIzLW1haW50CiszNjY3NCAwOWU2MzNjNTI3MzA3OWFkOWM0NWFjNTVjMWQyOGNlOGQ1NmExNGUyIGxlZ2FjeS10cnVuaworMzY2NzUgMDUyYTQzYWEzNWVjZjcyZWQyMjg4NTFjYWQyMGJjNWQ3YWYxMzE0MyBsZWdhY3ktdHJ1bmsKKzM2Njc2IDBmOTRmNDg4NmJmNTVhOGE1NTBmMWIwNjk1OGYwMWEwNWI1OGI2NjIgbGVnYWN5LXRydW5rCiszNjY3NyAxNjgyMjAxZjA1YjJhODQ1MGU2NWJiNjkzYjMzZTYzNWRkYzBmZjVkIGxlZ2FjeS10cnVuaworMzY2NzggZGNiMjQxYzg5ZjQyOTcyYzcxMjBhZGIwNTU3NzJhMTU4NjZiMzFmNCBsZWdhY3ktdHJ1bmsKKzM2Njc5IDk2ZDk5MTQ3N2E4MjljYTc3ZDEyZDljODM1Y2UwMjkwMmZhZDdkNWYgbGVnYWN5LXRydW5rCiszNjY4MCAwNmE2M2MzNWRmOWUzYzY1Y2RiMmFlODg2NjA1YWIzNThmMGRmNDVkIGxlZ2FjeS10cnVuaworMzY2ODEgNzI0ZmIyNmVhMDVmMjRjOWEyM2M4N2FjZDNhYzRlYTg2MjYyN2I1OCBsZWdhY3ktdHJ1bmsKKzM2NjgyIGZhMDUyNmMzMGRhODA1ZjgxMGY3ZTg3MDgzNTVlN2VkYmE4YjJkNDcgbGVnYWN5LXRydW5rCiszNjY4MyA0NWYzMjIyYjg0ZWUwZWUzMWYyN2IyYmNkMjYxNjg1YTMxYmM5NTg4IGxlZ2FjeS10cnVuaworMzY2ODQgNDhlYWUyMGQ3MGM1OGI4NmM0ZTNmMDczYzBlZWY5ZDAxZGNiMTgxMSBsZWdhY3ktdHJ1bmsKKzM2Njg1IGZjMzY4N2E2MjdiNDM0M2MwOWU5NTBkNjE5NTM5MmFiYTUzNTdkZGYgbGVnYWN5LXRydW5rCiszNjY4NiA5YTAwYjY1YWVjZGNjODQzN2UyMzA3MDViYmVlNDUwMTkwODAwYmJmIGxlZ2FjeS10cnVuaworMzY2ODcgNmVhMzJiMGU5NTA3ZmEyNmYxZmQ1YzJiOGIyMTU4MDQzYTkzYTliZSBsZWdhY3ktdHJ1bmsKKzM2Njg4IDYwYTcwOGJmMzUxYWUxMWU5NzkyY2IxMTI5NTYwM2Q0NDU5Mzc2N2UgcmVsZWFzZTIzLW1haW50CiszNjY4OSBjNTcwMTBkYjEyM2VlYWMxODdjYjRiZTdjMGUzMGFhNDk5ZTM3MzVhIGxlZ2FjeS10cnVuaworMzY2OTAgYTUzYjVjZWZhNjBkN2QwNTI0Zjg0MDNhMmYxZTYyOWEzYjBiMzNkZCBsZWdhY3ktdHJ1bmsKKzM2NjkxIDhkMjU4MzVmODhhZTQ0NTBlOWQzMjliZDhkMThiMWYwOWYzNjVhYjIgbGVnYWN5LXRydW5rCiszNjY5MiBiZDQ2ZTZmODA2MjNiZjlkMjI5Njg0NTVkYzJkMDk1NDQzOTM1ZTBiIGxlZ2FjeS10cnVuaworMzY2OTMgY2E2ZWZjNTRiMTlmZjcxOWNmMzY4MjAxNGM4ZjdiZGVhMTkyZTM5NiBsZWdhY3ktdHJ1bmsKKzM2Njk0IDE5NTY1NTI5OWVkMzY0ODc0YWQ2MTU2M2QyZjQxY2FkODgzMGMxNmEgbGVnYWN5LXRydW5rCiszNjY5NSA2YmU4OTQwMTRhOGMzYmZkNmY2MTdkOTE2ZTM1NGM2OGRiNGU3NzNmIGxlZ2FjeS10cnVuaworMzY2OTYgZDAxMzM5M2M3ZDk4MmY0YTZjMjRiNjMxMzE0YmMwNDc3OTkwOWNmNSBsZWdhY3ktdHJ1bmsKKzM2Njk3IGVmMDhmNDhiNjNhMWNlNTRlMWIzZjQ3M2QxZTJlNjY2MjA4ZWRiMzYgbGVnYWN5LXRydW5rCiszNjY5OCA2MmM1M2I4ZTRhZWIzMWI2ZjA0MTcxOTY1ZjMxMmUxZWY2ZGVmZGRmIGxlZ2FjeS10cnVuaworMzY2OTkgYjM5MGNkOTFjNzZiMTFmNTg2MmY1NGUzZWMwYTExZGJjNDRmODU4YiBsZWdhY3ktdHJ1bmsKKzM2NzAwIDAxOGM0MzA0NWI1M2U2MzhlYzg5Yzc5OTk1NTVjMDIyMDJiZjc0ODkgbGVnYWN5LXRydW5rCiszNjcwMSAyOTI5ZmM1NGI0OWE1ZDQ3Yjg1YmI0ZmFiNWQ4NDhjZDcyNzJhMmFkIGxlZ2FjeS10cnVuaworMzY3MDIgY2ExYWViOGFiMzgwMmNiMjdjYThjYTJkOThkMmQ0N2YzMzJhNDI5NCBsZWdhY3ktdHJ1bmsKKzM2NzAzIGQzZDYwOWQ2NTdmZDI2OWZkYzc3OTUyZjE2N2E4MmRjZDQwZmFhNWYgbGVnYWN5LXRydW5rCiszNjcwNCA1MTBlOWUyYjA4MTc0NjExMGU5NjJkMGE5NGM2NDdjNDc4NzM2YzQwIGxlZ2FjeS10cnVuaworMzY3MDUgMjZiMzA2ODk0YjllYjQ2MTBjOWY0ODk0MWE4Mzk5Yjc4MGZhNDY1NSBsZWdhY3ktdHJ1bmsKKzM2NzA2IDMzMWU2MGQ4Y2U2ZGExOWIxNjg4NDk0MTg3NzZmZWEwOTQwNzg3ZWMgbGVnYWN5LXRydW5rCiszNjcwNyBlMjhiODczM2E2NmQ3ZGVhZWE1OGM1MGE3NjcwMzE4NDVjYmFlYTg2IGxlZ2FjeS10cnVuaworMzY3MDggODhhMWQ4NmQ0NDJlODExNGI5Nzc0NzEzZWJmNGRiOGRiY2E5MDNhOCBsZWdhY3ktdHJ1bmsKKzM2NzA5IDJhYTdhZWY0ZTQwMzNjMzQwYzlmOTg3ZTAxMjJlYjNjNTM2OTgzODEgbGVnYWN5LXRydW5rCiszNjcxMCBiMzIzYmRiYWM3ZTQ3NzJiOGFjNzZmNjI3MzVmYTU3YjViZDg0ZTMyIGxlZ2FjeS10cnVuaworMzY3MTEgMWJlNDAzM2Y4NDk4MDg5MWQ0ZWIxZTdmYzFjNjQyMzE3MmE4MjY4MSBsZWdhY3ktdHJ1bmsKKzM2NzEyIGM3ZTAzY2Y4MzMzZTVhM2E4Y2NmZTlhMGVlODU5NDY3NjMzMDdlMDEgbGVnYWN5LXRydW5rCiszNjcxMyAyMDk1Y2I1OTgxODgzNGViOWViNDYwMzM3M2JiY2MwYzcxMGFmY2FiIGxlZ2FjeS10cnVuaworMzY3MTQgYjhjMmFhMmJlMTlhMzE0NDFiMjU1NTJmOGVkMmU1MTlmMDkxNjlhNCBsZWdhY3ktdHJ1bmsKKzM2NzE1IGE5YjI1YzIzMDczMjcyOWYyY2ZiYjkzMmJkOTkxNWMzZmE1NGQ4ODQgbGVnYWN5LXRydW5rCiszNjcxNiA2ODVhOTQ4YjNiYzljYjVkNTk0ZDZjZWIyODgyODhjM2VkNTRkOGE0IGxlZ2FjeS10cnVuaworMzY3MTcgNTFkN2ExMjI0NGFmMzEzODFmZWQ3NWQ5NDE0MjgxZjA5MDU5Y2NlMyBsZWdhY3ktdHJ1bmsKKzM2NzE4IGQwNDlhMWZlMjY3NjNmYWQ3MDZhNDQzMTIzZWY3MTQxNjFmZmJlMDAgbGVnYWN5LXRydW5rCiszNjcxOSA2M2FkNmY2OTI1YzU2OGQ0ZmFhZjkzYTllOWQ5YjZiY2YyOTQyNWQzIGxlZ2FjeS10cnVuaworMzY3MjAgYTc1ODE1ZTMxNTQ1MTI2NGFiY2RkOWIyYzM1YzFlNWZhYjg0MWNkZiBsZWdhY3ktdHJ1bmsKKzM2NzIxIDBkYzhmZmFhYzAzNjQ1M2U2OWZlM2IwNWNlZDhhODc1YTFhNzNkZjcgbGVnYWN5LXRydW5rCiszNjcyMiBkYWVjMmQzMTFkZWYzYTAzMzMwMDc4ZGEyYmU5ZTE4YWFiMDBlODE4IGxlZ2FjeS10cnVuaworMzY3MjMgODRlZmEwMDU0MTlhYWUyN2NlODEyNmNiMDU5NDBkZWQzNzRiMjIwMCBsZWdhY3ktdHJ1bmsKKzM2NzI0IGI4ZTEwYWNiNGVmYjYyMjI2MGVkZTc4OWQ4OGQ1MWVjMDkyMzIyNTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjcyNSBhYzczZjY2NjJlMTE3YzJhNDRmZGZmN2Y3Njg5ZjJlNmVmNzk3YmY0IGxlZ2FjeS10cnVuaworMzY3MjYgMzBkODZlMzU2YmYyNGY3MTRiMTBmZGNlM2U2OTUzOTE3YjMxODQyOSBsZWdhY3ktdHJ1bmsKKzM2NzI3IDc5YzRlODJlZTk5N2M4ZjQxMDBkOTNmYjg1ZTQwOTdiMDQ1YTA4MmEgcmVsZWFzZTIzLW1haW50CiszNjcyOCAzM2I4Y2U2NjIwMmVjOTE5N2JjYmZmMGFjZjJkYWUxNzc2NDQ3MTBkIGxlZ2FjeS10cnVuaworMzY3MjkgOTE0NmUyZWEzYmQ1MGNkNTYxZDIyY2UzNTFmOGJjNDhmMGM2NmZhMyBsZWdhY3ktdHJ1bmsKKzM2NzMwIGY0MTJmYTJiM2ZkZWY3YzkzZGRkM2FmNTc4MzJlYTQ1M2ZkZDlmNjUgbGVnYWN5LXRydW5rCiszNjczMSBkNGRkN2I4MmNjNzViYjZiNWI5YTU1OGQzY2E4MzQ2NGM2OTg4ZTBlIGxlZ2FjeS10cnVuaworMzY3MzIgNjVmMTFhOGQ3YzhiMzllNzQxMmUyMmU4MDIwOGRjMGIxMDA4YWNjZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzMzIGUyMjU3NGJlODc2NDlhNDdmNWFlYTY0YWRiZGE2ZTYxN2NmZTUwODcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNCA0Y2NlMDAwNDdmOTc0OTgwNmYzMzVlZGQyMDUzZWZlNGRjY2YyNGZiIGxlZ2FjeS10cnVuaworMzY3MzUgZDY3NGQ3OGQ4ZGE2NjQyZmUxODNkY2I3Nzg3MjIyZjZjZWQ1NGEyMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM2IDZkMTZiMDdhZGRjM2E2ZDNmNDIwMWY4ZTIxNDVlOWM2OWY1ZTA2NTUgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNyA1NDY3MTczNmEyOWU0ZTc0ZDBjZDQwOGFkNDY5MWRhYWY5NzBjOGJjIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzggZjUzYjkwMWM4YWZlOGJmMjE1ZGU0Nzc3NjFmMmJlOTY0ZWNjMmNhNiBsZWdhY3ktdHJ1bmsKKzM2NzM5IDY1MzE5NjA3YmVkOGExODZhYWQyNjk3YTE2ZjJhYWIxYTQ0ZGRmNDUgbGVnYWN5LXRydW5rCiszNjc0MCA2NmM1NTZmMDkxNjM3ZDE5ZWFjYzFmNzIyZTU5MzVhM2JmYTk2NzRlIGxlZ2FjeS10cnVuaworMzY3NDEgMTUzMzcxOWM2MTM4MzllNDJhN2U5NWQ0ODk1Mzc2OTQ5ZGQyNGE5MCBsZWdhY3ktdHJ1bmsKKzM2NzQyIDMyOWQ0OTA2YzMzZmM3ZDM4ODIzOTJmNzE5MGM1NjY2NzUyNmFlOGMgbGVnYWN5LXRydW5rCiszNjc0MyA4OTE1OWExMjY4Y2NkZTVjMWViNmE0ZTI5OWVmZjZiNmJjZGZjNDJmIGxlZ2FjeS10cnVuaworMzY3NDQgY2FjNWM4ZjNlOTkwZjJlNzk2ZmZjNjdlYmVkYTg5ZDUyMGZmZTFiOCByZWxlYXNlMjMtbWFpbnQKKzM2NzQ1IGE5ODU2ZTczZTMyZDQyZDE3ZDQ1ZjY5OTlmZWNmNjBjODlhOWE4NzQgbGVnYWN5LXRydW5rCiszNjc0NiBmZjc3NzI3NTU1YWU1MTA0MjllMDViNmNhNGI5YWQwODljMjRiNjdjIGxlZ2FjeS10cnVuaworMzY3NDcgNDFmYWNjM2NjZGQzMzljOTRjZTJiZTZiOGYxODc1NGJiYTNiNzdlYSBsZWdhY3ktdHJ1bmsKKzM2NzQ4IDdlNzQ1N2E2OWI0ZDgxZGRlZWI4ZDA0MDMyODk4MzRlYWZiNWNiNDUgbGVnYWN5LXRydW5rCiszNjc0OSAyNWI2NjlmNGI1NmNmNjJjM2IwYzNmNjQwYmM2NzNmZGZlMGI0NmQ2IGxlZ2FjeS10cnVuaworMzY3NTAgYmRhOTgzMDRkZWI1ZDk0Zjg1MjUwOWI5ZGQ2OTQ1YzZjOGViYmRiZSBsZWdhY3ktdHJ1bmsKKzM2NzUxIDM4MjRmYTI5YmU0OWNjMWMxYjc4ZGMzMzY1MzczMjkyMWM1NjQ5MDcgbGVnYWN5LXRydW5rCiszNjc1MiA2OTM3MDI1MzExNWJhNzdiZDdlNjQ5MDQ2N2I4YTJlYzQ5ZGY4MmE2IGxlZ2FjeS10cnVuaworMzY3NTMgZjFiYmYxNDc4MTBiMjk0NjM1YTZmMGEzY2U5Y2IwM2ZhNDI0NTMyZCBsZWdhY3ktdHJ1bmsKKzM2NzU0IDkzNjcxMmIzMWJlZGM4YTMyNTUyNTM3OWI0ZDhlYjNhOTM4ZTQ3MWMgbGVnYWN5LXRydW5rCiszNjc1NSA2NjNhZDM0OTUzNGIwMDg0ZDdiZGRjMDhlOWFiYmVmMzM5OTM4NjEyIGxlZ2FjeS10cnVuaworMzY3NTYgNWY1OGZjZDdhY2NmNjIyMTRmMzE0ZGJjZDg1ZTkyMTkxNDEyYmI5NiBsZWdhY3ktdHJ1bmsKKzM2NzU3IGMzMWQ4ZjM4ZmQ3ZjZmMWZkNGFkNGJmMDBkNDRjNjdiODQxMjI4ZTYgcmVsZWFzZTIzLW1haW50CiszNjc1OCBjZTQ4OGFhMDRmMjRlYTM2OGRkZjljMTFhNDAwNmY5ZTMzOGY0MDhmIGxlZ2FjeS10cnVuaworMzY3NTkgOGFjNGZhYTI4MmUwYjljZjI5MTQ0ZjY3N2IyNWFjN2FkMTc1NDIxOCBsZWdhY3ktdHJ1bmsKKzM2NzYwIDVjMjE0OWYzNmMzZWFiNmNhMDU1MWMzZTUxMDkxMGMwMGI2ZDEyYWYgbGVnYWN5LXRydW5rCiszNjc2MSBlYzcxYWUzYmMyZGRhZjVlZTg4M2NjMTk3ZTAyODAzMTJkMDEwY2U1IHJlbGVhc2UyMy1tYWludAorMzY3NjIgYmQzZGQ2YjNmZjk3MjY4ODI4NmZmNTE1ZGQwMzdiMGI4NmQ1OGMxNSBsZWdhY3ktdHJ1bmsKKzM2NzYzIDQ1YTE3MGM0Y2E1NmNlZDI2ZmZjZmE0Nzk3ZDVjNGE1MWQyZDQ0YzUgbGVnYWN5LXRydW5rCiszNjc2NCA5MWZhODBhNjc4MTFiY2RlNTBlYjkwMDZjMWQwNTk5OGIwNGI5MDNlIGxlZ2FjeS10cnVuaworMzY3NjUgMmMyZjVjZmVmYTYwNTY4M2VmN2QxNDZhYWJhODIyZDQ4MmFiYTZlMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzY2IGRmZGUwODUyMjhlZWE1MGI0NmZhZDY1N2Q1ZWI2OGNkZTdmZTQ4MTkgbGVnYWN5LXRydW5rCiszNjc2NyBmMDcxYTU1M2FhZTU4YTQ1M2Y2NjM5NDY5NmQ2MzdmNTBmOGM5M2JjIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NjggNDczY2IwZWY4MmQyNDM0NmZjNTExYzg0OTAxZTIyNmFhZGNkMWZkMCBsZWdhY3ktdHJ1bmsKKzM2NzY5IDI2NjNiNGY1MzViN2NjNThhNWEzY2RiNDE4YWE3MWM1NWJlNTA2MWIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3MCA2NTExODhhNjYzOGRjM2ZjNDdlMWIxMjZmNzBkYjQ5ZTEwNmJlNWRlIGxlZ2FjeS10cnVuaworMzY3NzEgOGNlMzQ0ZjZjOTU0ZWVjOGNmMTEwOGU5ZDVjZGNhMjE1OTY5MTFiMyBsZWdhY3ktdHJ1bmsKKzM2NzcyIDVhYTg1MDk3Y2IyY2RjYzk2YTg0ZjRkNGFlNDFkNDg3ZTEwNjFkNDUgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3MyA1ODJlYjUxYjg0OTIxNDUwNmIwMWZjZDMwYzgxOTU0YWRjZDYyYzE3IGxlZ2FjeS10cnVuaworMzY3NzQgMjJkZWQzMDk2NDhiY2JhMzM5MzI1NDdjOTkyMGIyNzdlOWZjZDNiZCBsZWdhY3ktdHJ1bmsKKzM2Nzc1IDY2ZGMyMTFiZjUwNzIxYWQwMWY3MTNlZmVkYzA1ODliOGFlOGE3NjIgbGVnYWN5LXRydW5rCiszNjc3NiA4NGI0NzU3OTk5MTgyZTBmY2M5YTUxMWUyNDZiZmZjMzM3YTJiY2Q3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NzcgNjNkZjRjYjQ5MmExNmM2YWZhOWZkNTczZDkzM2ZiYjBkMjA4MTk2YiBsZWdhY3ktdHJ1bmsKKzM2Nzc4IDlmYjUxMzhmNThkZDgxYjkxOGQyNmUzMzRjZjNmMmFhNDUzM2FmNzIgbGVnYWN5LXRydW5rCiszNjc3OSBmNjNkNDVmZDNmY2U3NDQ4OTQ5MmZmMjE4MGY2ODUyMGMwNmZmNTVmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODAgZTAyNzkyMTEyMjg4OWFlOGRiZmI4ZjhjODY2YTMwZGQ2ZWVmYTk4YiByZWxlYXNlMjMtbWFpbnQKKzM2NzgxIDlmOGE3YmEyMTA1NWViZTBkYTBkNjAzMzY5OGIzNTA3NTBmNTAzZTQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MiA4YjM5MGRmN2FmODczNzMyZDljZDY1ZjhmYmEwNmY1YmQwOTkzZGNlIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODMgZTRmZWVkYjIwNWYyZDZiOGZkMDA2NGY2MzA4MTA3ZTI5YmZmZjI1NiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg0IDMxNDQyMmEyOGUzZmI4NThiNWY1ZTk2MzhjY2UzMDFkNTE3MmJlNzkgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NSBkNzQxY2IzNzdmODI5NWZmMTA2MzBlZGY4MTI0ZDA5ZjA0NWQ4YTgwIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODYgZmNkNjkwYzhiMmNhNmQ4NDU1ZTMyOTEzNzhjNmM3N2M1NGNlNmJmZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg3IGNhZmQ3ZTRlNzdhZDA3ODJiM2UwMGE4NjQ2ODA4ZWY1YjAzMTlkOTcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4OCBmYmI1NDI4ZWJmNDEwOWU2YWE3OGMyNTA1N2ViMmRjMWYwYTRhYWY0IGxlZ2FjeS10cnVuaworMzY3ODkgZGIzOGMxZTgzOTY1MmQxZWY1OWE1NjFkZjA5NDVlZTEwMzc3ZTg0NCBsZWdhY3ktdHJ1bmsKKzM2NzkwIGI2MzljYjQ1YjE3MzEzZGVmMjBjNzE3MTg1Yzg5Mjg5OTlhYTYxNTMgbGVnYWN5LXRydW5rCiszNjc5MSA5NTNjZTVhZjEwYTMxYjI5MzVkMzM5YTk5NDQ0N2Y4MjAwMzFlOTA0IGxlZ2FjeS10cnVuaworMzY3OTIgOWViZDQwNTY4M2NkODU3MjQxNWY5MmI5OWFiNzVlZWNmMTFjYzIzOSBsZWdhY3ktdHJ1bmsKKzM2NzkzIGFkZmU3ZDM5YTA0OWQ2YTNjOTNiNDJmZjlmYjkyNjk1NzgyZGFlZTcgbGVnYWN5LXRydW5rCiszNjc5NCAwMjRmZjBhYjQ1ODgwMzM1NWEzZDM2NzZjMDc1NDE5YWYzZWExMDQzIGxlZ2FjeS10cnVuaworMzY3OTUgYjU2NDgxYTkwNTE5ZTVhMjBhMThkNTMzYWEzZmEyNTMxNGVkNjI0YiBsZWdhY3ktdHJ1bmsKKzM2Nzk2IDk3MWU1MTQxMzQ0N2MyZThiZDNjNmFjNWIxNjcwZTJmNjRhZGRkZTEgbGVnYWN5LXRydW5rCiszNjc5NyAyYmNiZjNmYjcwMjFlZmI2NDMwNWRhNzRjYWFiY2ZmNzBiNjk0NjM2IGxlZ2FjeS10cnVuaworMzY3OTggZTJmZWEyMmUwYzUxM2Q2MWJjOThhNTY5MTMxOWM0MDIzZGEzZDNhMyBsZWdhY3ktdHJ1bmsKKzM2Nzk5IDA3MWQzMzgxNzUzYjYwZDIyNzY2ZDE3ZmI4NzI4YTU0OTk2MDJmZDYgbGVnYWN5LXRydW5rCiszNjgwMCBhOWQ1OTE5N2IxNjMxZGQ0YTNiZWEwZWUwNjhhYWUwYWI5NzhjYmM4IGxlZ2FjeS10cnVuaworMzY4MDEgMTU2YWM2ZGU5NjI1YzQ3ZGYxNWJiMTEyNGQyMGQ0NGU1ZWUzNjY2NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODAyIDBiZjBmNGJlYTE0NDE2ODliODFhMzQxM2M0YzY4YTA5MDEyM2UwZTIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgwNCBlOWM2NDE0ZGJkYjYxNTM3MzUzOTk4ZTg2NzY3MDU3ZmUxNTRkN2ZkIGxlZ2FjeS10cnVuaworMzY4MDUgMmJjMzMyNjE2Y2Q2ZjlmZTFhYzc0MmYyNTIxYTk4MTA1YTY4N2RjNyBsZWdhY3ktdHJ1bmsKKzM2ODA2IDdhYWE4NTJmYTg1NmZhMzM4NDUyNmM1MzQzZDVlMGZmZDY2YjkwOTAgbGVnYWN5LXRydW5rCiszNjgwNyA1ZThlMzA5YzBiYjA2OTczZDk3YmJhNjE4ZTYwNzA4MWNjNjU0YjBlIGxlZ2FjeS10cnVuaworMzY4MDggMzQxYjdhZGJhOTQ0N2ExOGJjZTM4NTFkZjQzZTJmZDA2ZjBjYTVkYSBsZWdhY3ktdHJ1bmsKKzM2ODA5IDlmNjYyNTlhZWNlMzE2NWNjMmM3MGUwYTMzNTQ0MjNiYzQwZGJlMGUgbGVnYWN5LXRydW5rCiszNjgxMCA5YWM2NDM1NDQ2MjliMDQ5NzdiN2E5YzA4YTg3YmFlOTM3ZWJlN2RmIGxlZ2FjeS10cnVuaworMzY4MTEgZWEzMzhiYWFiODU5OWQ3MTU3ZjAyZjQwZGJmYjBjZDhhZmZiYzU0MSBsZWdhY3ktdHJ1bmsKKzM2ODEyIDk4MjFlMzg4YjU5ZDkzZjM5NmI3Mzc3ZmQ3ZWVmNThlOWY5NDQ4ZWUgbGVnYWN5LXRydW5rCiszNjgxMyBmZmFhMTc1ZDBhYTMzN2Y4ODQyODQ3NDcxYWNiZGE1OWVjZWIyNGE4IGxlZ2FjeS10cnVuaworMzY4MTMgMDU1ZmM2OTU1ZjNjNjUyMmJmZWI3ZWQ0YzY3MWM5N2Q1YmFhYWFjMiBsZWdhY3ktdHJ1bmsKKzM2ODE1IGU2ZDAwOTI3NmM1NDc5NjFhNDMwYjk4YmJhMTM0YmJkNDg4YTE5NjggbGVnYWN5LXRydW5rCiszNjgxNiAzZTkwOWM1NGUzMGM5MWRkMjc3YmU3NWRlMTllOTdjNGYzZTc5Njc2IGxlZ2FjeS10cnVuaworMzY4MTcgY2ViMWMzZjFhYzhhYmI0NjFjNTBlZGQ5OTgxNzE1NGNmZWU1ZjAwOCBsZWdhY3ktdHJ1bmsKKzM2ODE4IDVmNGJmYmUyNmE0ZGM0NjRlZmQ2ZjEzMDFmYmFmYTBmZDY1NDZkMzEgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgxOSA4NDQxMGEwZDZlYTk0MTM0MDFlYTU5NmI0YzNlZmZmZWVlZTVjMTNiIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjAgZWE4NzU1M2UyNTYwOWY4YWZiMDY4MzFhZjYwMzQ2MDA2NGFmZjEyMyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIxIGJkNDEzNjY3YWMxNmI2N2RkMmQzMzk1NTQ3N2U5OGZmY2MzMjYwOTQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMiAyZTY3YzI3MDg2NzA4YjExYmE4OGY2MjEzNzVkY2M4NDA0NzQ4YzgyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjMgYjY4OTBlYTVmZGUwZjZlMDUyOWNmYTcyZDc2MjhiMGE5YjU4Y2M1MSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI0IDc5NjAwNjU4YmU2ODkyYTkwNTczY2ViNzE3Yjk2ZDdmMWZhOTZjYTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyNSBiZTU4NGNkYTU0N2Q2NDJjODliZDljZjVhNTc1MWM0ZThjMjM2YzJmIGxlZ2FjeS10cnVuaworMzY4MjYgZjdkNTBlOTFiZWYzOWVkZDRhMmU2ZTJjNWU0Nzk2NThhOTMzZTlmMSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI3IDE5NzUxN2Q4MDk5ZTQ3ZTAwMDU0M2I1NDlhZWRkZGViNTcwNTVjZmMgbGVnYWN5LXRydW5rCiszNjgyOCA0YzllZmIzYTZiYjNmNjBjNDIwYTg1NTM3YzkzYTk2NTNjOTJkOGQ0IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjkgYzI2YTRmZDY5NzQ0YWRjNGNjZWZlYzcxZGQxOTdhZWUzMGI1ZDgxMCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODMwIGZiNmZmZDI5MGNmYjM5ZDIxYWZmMWQ3MjA4MmRmNmNjM2ZmY2UxZTkgbGVnYWN5LXRydW5rCiszNjgzMSBhYWNkZDBlY2ExZWI1NjJlMzY1ZGE1MjVmYWJmMDRjZTJhZjhiMTAyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzIgOWIxODgxNTgxODFmN2YxMzY3NTQ1ZGQyODU2YWY5NWM1MmExMzNiNyBsZWdhY3ktdHJ1bmsKKzM2ODMzIDRmMDE4OTRhYjQ1OGRjNzdhYmUxNjkzNTQ5NzhmNDFiYjI0MjBlNjIgbGVnYWN5LXRydW5rCiszNjgzNCA0MGMzYTUxY2I3MWNkMzU0NzYxMjE4ZmE1MWQxYzIwZWJjZDFhY2QyIGxlZ2FjeS10cnVuaworMzY4MzUgMzYwMDQwZDNkNGZhZDgyMTdjMTE2NzhmN2ZmODU2ZWExZDljZWE2ZCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODM2IDVjYWIzMzYxODI5MzAwNGI1YzU1MmQ5ZWQwNjg3OWNlOGIxNzkyZjQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzOCA2NzhkNDBmY2UwYjE0YTk5ZTc2MzBmNTExYjhjZTA3Y2EzMDkxN2FlIHJlbGVhc2UyMy1tYWludAorMzY4MzkgNWNjNTVkMzZiYjFkY2Y5YjA4NWQzYzVhOWViMWIwNWI3MDZiMmI3ZiBsZWdhY3ktdHJ1bmsKKzM2ODQwIGU4OWVmMGJmYTFmZjhjZDRiMTBhNDJlODE0MmExYTI3NzBlYmM5ZTcgbGVnYWN5LXRydW5rCiszNjg0MSA1MGMxMjJiYzdhYWNhMzg4MmM3NDdmOGU1NWQ3Mjk4ZWE2MDY4NjY0IGxlZ2FjeS10cnVuaworMzY4NDIgYWU4NzcyZDE1YTVmYTcxNjBhMzY2MDI5ZTdjMGExOTRlNWY1ZDI3ZiBsZWdhY3ktdHJ1bmsKKzM2ODQzIDcyNmRiNTg1NDc0NjE0ZjExNDAwMTRlNDhiNjJmNmNkMzhmODdjZGYgbGVnYWN5LXRydW5rCiszNjg0NCA0YjNmOGRkOTI2OWFlMDcxOTJhOWI3NDZiNTRhMmZiNDIyMjQxNjU3IGxlZ2FjeS10cnVuaworMzY4NDUgZjUxOTg5NmNmNWRjYmRlMzlkNTQzNzYxNzg4OTM4YTdhMTNkMmZiYiBsZWdhY3ktdHJ1bmsKKzM2ODQ2IDYxYzAxNzE1Nzc1NjgzNDQ1ZmFkZGJmYTFlM2RiZWFmYWQyMzY4ZTYgbGVnYWN5LXRydW5rCiszNjg0NyA4Zjg3NDQwYzZlODBjZDEyZWY5YTc4YjM2MTY1YjJmYzEzYzczZjFhIGxlZ2FjeS10cnVuaworMzY4NDggYThhNDg2MzM5ZDgwNjQ2ZjVjNGQzZDJmN2Y1ZDA1OWMxMzcyMDViOSBsZWdhY3ktdHJ1bmsKKzM2ODQ5IDJlYTA5NjYyYTJkNDBiNWNjMTMxMjdiOTdkYTgyOTY2ODlhNjFhYjQgbGVnYWN5LXRydW5rCiszNjg1MCA0NDQ1MDEyOWNlMzU2ZTVmMGU5ZGU5OTYzNWEwNmJmZDQ5ZDcyYWU3IGxlZ2FjeS10cnVuaworMzY4NTEgYzlhZTk1ZDc3YTQyN2Y5OGY0ODFmY2E1YTllOGNmZTg1ZjRjMTQ5NCBsZWdhY3ktdHJ1bmsKKzM2ODUyIGIzNGE4ZGMzY2NhZWNmMmM1ODcxZjQ0YTg5ZjY3MzQ5YTFlMzY5MmUgbGVnYWN5LXRydW5rCiszNjg1MyA0ZTJjNjYwMjFiZjM4MGQyNDMyNjI2MzdhYmQwMjUwMzRiMjcxNGQwIGxlZ2FjeS10cnVuaworMzY4NTQgNDNmYmYyOWRkODNhOTc4YzgxNGJjNGRlMGFhNmZmYjEyNjJlODBiYyByZWxlYXNlMjMtYnJhbmNoCiszNjg1NSAyNTJjNjU0NjkxMTQ2OTVjNmFmZjdmNDlhZmNhMDVjZDViZGQ1ZTUwIGxlZ2FjeS10cnVuaworMzY4NTYgMWFhNDBhMDg5ODJmYTU1ZWZmMjA4YWQ2MmE3OTAwNTkyYzNhODIyMyBsZWdhY3ktdHJ1bmsKKzM2ODU3IDMwMDI1OTY1MzI0YTU4MWUwNzFjMTdlNGVjNWQwY2FkNzE4OTNkMGIgbGVnYWN5LXRydW5rCiszNjg1OCAzMDliZWJlZGZjOTdhMWNjMjMxY2IyN2M4NmZkNmUzZDljNGZjNTY5IGxlZ2FjeS10cnVuaworMzY4NTkgMmMxMTZlN2ZmMTYzNmJlMGNhZjNjMGQ3Zjg3ZWJhYTQyYzljMWJjNiBsZWdhY3ktdHJ1bmsKKzM2ODYwIDQ0MWFiM2FkNmQwMWEwY2I2MmM2Mzg4ODA1ODdkY2M5MzI5ZDA4M2UgbGVnYWN5LXRydW5rCiszNjg2MSA0YmY2ODU0ZGI2NTZlZDk4MGMzMzVmZGZlOGQzNzhmYWE1NjdkMzgxIGxlZ2FjeS10cnVuaworMzY4NjIgNGZkNTk2NTFmZTNmOWE2MjZjOWVhYmUyMTg1NmUyZWM4Nzk1ZTY2NyBsZWdhY3ktdHJ1bmsKKzM2ODYzIDM5NmQwMTFmODM0OGJhNjdhMTJiNTllNTQyZmUxMGFhMGNkYjc5OGQgbGVnYWN5LXRydW5rCiszNjg2NCBiNWRjZmU3YTQxNTk2MGFiMGZiM2MzMmUwNWVmNzk4OTI3YmRlZjk4IGxlZ2FjeS10cnVuaworMzY4NjUgODY3ZmVmMmI1MDYwYWM4MjAxYzkxNmQ4YmI5ZjBlNjMzZGFiYTc2NCBsZWdhY3ktdHJ1bmsKKzM2ODY2IGZhM2QwMWYwZmM0NDIxNTJkNTJiNDA2Zjc5ZWM3ZjE0MGI0NDUyY2UgbGVnYWN5LXRydW5rCiszNjg2NyA4ZDcwN2Q0OWNiOWJjN2Y4YmQ2ZDk3NjBhNDNkY2E3ZWNlOTU0MGIwIGxlZ2FjeS10cnVuaworMzY4NjggOWZiMmUzMGYyNmJlZTVlZTFlODU2MTY2ZmFkYjI4NjM0Y2I4ZTQ4MyBsZWdhY3ktdHJ1bmsKKzM2ODY5IDM2N2NlNTE2YWQwNTRiZDhlZTcyODA0YWIwZjRhODBhNDA2NjRkOTEgbGVnYWN5LXRydW5rCiszNjg3MCA0OGNiNGVkNDk0YTY1ODEwMjEyYTM5NTU3MTlkYzI2ZDM5MzdiMDIyIGxlZ2FjeS10cnVuaworMzY4NzEgOGY2ZDIwNWQ1MzFiYzk3ZWNjYzBkZjJlMWM4MzE5ZTFmYTA5ZDVjYSBsZWdhY3ktdHJ1bmsKKzM2ODcyIGZmMTc2MjRiMjY0MjkyNjE5ZjI0MGQyZjgyMTNiODlhNWNkNzcxMWUgbGVnYWN5LXRydW5rCiszNjg3MyBiMGUwYTUzODcwYjZmOWY4MDk3MDI3ZjQxNGY3MjI2NTVhZmRkMmViIGxlZ2FjeS10cnVuaworMzY4NzQgOGNhOGZlYmMwYTBkNzUwMDkwYzQzYjllMzM2ZWQzYzExN2M0ZWU1NiBsZWdhY3ktdHJ1bmsKKzM2ODc1IDBiZWI3NTY5NjVkZjljZDQ2NTdjZDJlOTNlMGNlMzBhMDkxZDMxNTEgbGVnYWN5LXRydW5rCiszNjg3NiBlNWI5ZTg3MmE3ZDNiYTI4NTQyNjk4MWVkMTFhZDMwYzU2NmE1ZDY0IHJlbGVhc2UyMy1icmFuY2gKKzM2ODc3IDZhYTMxZDc1YzRmOTkwZDk1YjhlNmQ1Y2NlNmNhMmY3ZDQ4YzU3YTcgbGVnYWN5LXRydW5rCiszNjg3OCA1Yzk0MGY5OGU0NjU1OWM5MjJlYjhhMTVlYmJjZGYyMGQxMWRkY2NkIGxlZ2FjeS10cnVuaworMzY4NzkgYWI5M2FmZjRjOTBhODRiZjBjMDE1MzA5OTQ0NWUyZmI0MzAwNDVmOCBsZWdhY3ktdHJ1bmsKKzM2ODgwIDFmMzU4YTZiNGJjMzM2ZTU3MDQ1MTRiMjgyN2VhMTg1OWJiNWQyZjMgcmVsZWFzZTIzLWJyYW5jaAorMzY4ODEgMjA0ZDI5YWNiYTI4MDEwMTBhZmZhN2YzOGJkNjFhM2FkYThmMjE2MyBsZWdhY3ktdHJ1bmsKKzM2ODgyIDUyMThiZmY1NjQ0OTRmNmYxMGE1YjJhZDIzMTYyOTRjNWFkMjQ1MDkgbGVnYWN5LXRydW5rCiszNjg4MyBhZDgxODMzOGY4YzMzMDY1NjljYmM2MzY2OTI0ZmQ2NzE3M2YxYzE3IGxlZ2FjeS10cnVuaworMzY4ODQgNTMwYzAyYjgzZWVhNWFkMTY1YjZjOGM4NDA2NjAyZjFhYzYxM2NiMyBsZWdhY3ktdHJ1bmsKKzM2ODg1IDJjOTNmY2VlZTQyZDEzZGFmMDU0ZTY2Zjc0MGZiMDY2MDg1YzhmYTMgbGVnYWN5LXRydW5rCiszNjg4NiA0ZjU4OGY1N2E5M2IwMzVhZDAzYjhkMDQ2MDgzOWZlZGNiN2ZhNTg3IGxlZ2FjeS10cnVuaworMzY4ODcgODg5N2U3N2NkNzlhODQxYmZlNzc1YzU3MWMxNmQyMGM1NTA4YWZmZiBsZWdhY3ktdHJ1bmsKKzM2ODg4IDk0NjQ0MTVhMWY4OTQ5OTE5OTI1N2Q5MDc5NDA1MzMyNjliYjM3OGUgbGVnYWN5LXRydW5rCiszNjg4OSA0OWI4MDgzMjAzZTZiYmMxZjk3OTYxMWM4MTczNGMzZGZlMTViOGJhIGxlZ2FjeS10cnVuaworMzY4OTAgOWRkZmE3NGNiMjUwZjQ5NmY4MTQzMmFhNzVkOWY0OTU0MDM3MGU0OSBsZWdhY3ktdHJ1bmsKKzM2ODkxIDg1MDAyY2Y0ZTIzYmY1MGQ4YTgxZWQ1N2E5NTZhM2ZlMTU2MzZjYWMgbGVnYWN5LXRydW5rCiszNjg5MiAyZTdiNzgwMzI3MDJjN2I2YmE2ZDU2N2VkMTg3ZWVmNzgxMTkyOGM4IGxlZ2FjeS10cnVuaworMzY4OTMgODYwN2FjMmY4MWM4MzkyMGRkNDJhNDlkMDdjYzIyNGU0ZjNiMzc5NyBsZWdhY3ktdHJ1bmsKKzM2ODk0IDI2NzUyZGY5MzkxMzkwMzNmYWI2YzM4NzNiMGM0OWU1ZjZkYjc1MmMgbGVnYWN5LXRydW5rCiszNjg5NSAxNjYwYTY4ZmE2YTQwN2E3M2RjN2NhYzc5MTZjOWJjMWVlYjNkMmQwIGxlZ2FjeS10cnVuaworMzY4OTYgN2MzZDU2OTUyMmM0OTJhZWY3ZTM5OTNiNTU0OTg1OTE4ZTEyYjY3YiBsZWdhY3ktdHJ1bmsKKzM2ODk3IGI2NjlhNjA5N2JhODljODI2ZDQwYjAzYWM2MWU4MTFiY2E0MzQ4NDcgbGVnYWN5LXRydW5rCiszNjg5OCBlZTNhYWE3OTE4NDI5MmQ4MDJmNWJkZTk3NTExNzZmYzU2MDg2MTNmIGxlZ2FjeS10cnVuaworMzY4OTkgZjZiMmYxOTJlMDNiNTNmYjMzOGIxNTQ2Mjk0Y2EyOTNhMTVjYWYyMCByZWxlYXNlMjMtYnJhbmNoCiszNjkwMCBjZTJhMTk2MjAzYzVlY2U5MjdiZWNmMDRlMjkxOGU4ZTU3NTQ3OWYyIGxlZ2FjeS10cnVuaworMzY5MDEgMjMzYzIyMzg1OGY3N2JiYWM1MmRkYjU4NTkxY2I1NzQ0ZDVmMjU1YSBsZWdhY3ktdHJ1bmsKKzM2OTAyIGZlZTIwMzhiOGZhOWRjODJiMDY2ZDIzZTNiMDMzNDQ3ZjMzM2IyNmYgbGVnYWN5LXRydW5rCiszNjkwMyA0MjA0ODg0MDhlMGUzZDY0MzNjN2QwOTUzNDM0MjgxZTQ1MjI4NDM1IGxlZ2FjeS10cnVuaworMzY5MDQgNWE0ZDc3YjZlZmE2NWVhOGFlMTg2NzdhYjI2MzUyNzcyOTdlZjAzYiBsZWdhY3ktdHJ1bmsKKzM2OTA1IDMwNDVmNGYzNGVmMjQ3YmQ1NDM4ZjIwYTBhMWE1YjE0MDdhOTE1NWUgbGVnYWN5LXRydW5rCiszNjkwNiAxN2ZjODhhMWI4NzM1Nzg0YzQyY2MzZGRkMzBiNDQ1YmY5ZTQ5ZjkxIGxlZ2FjeS10cnVuaworMzY5MDcgMWRiZDBmMzQ1YTc4ODYwYzQ5YTYyNzgzNjY3ZjM0ODY2MmUxYzY2NCBsZWdhY3ktdHJ1bmsKKzM2OTA4IDI3NDkzMzRkNzFhNDcxNDNlMDE1NTc3NTc5MjBlN2Y5YWVkOGI2ODMgbGVnYWN5LXRydW5rCiszNjkwOSAxNjM2MjE1MTdiOTgyNTRjYTg1NThlYzk5ZWM2MzQ2ZWQ3M2UwZGE4IGxlZ2FjeS10cnVuaworMzY5MTAgNjdkMjUyMTdiYzdmMGM0NzQyMWMzY2FmYTU4MjliMzAyOTFiYmFiOSBsZWdhY3ktdHJ1bmsKKzM2OTExIGM4MWVkMDc5NTc2ZjJhNWU3ZTcxYzQ1N2IxYWU4MjllY2VlZDk3YjMgbGVnYWN5LXRydW5rCiszNjkxMiBjMzQ4N2VmM2E2OWM0ZDI4YTAxZGE1ZTFkNzA2ZjNjMWNlMmFlNzYwIGxlZ2FjeS10cnVuaworMzY5MTMgZDBlYjA5OGJlMjY0OGYyNTc3NmJhYzljZTcxYzhjNTAxMjI3MDg1OCBsZWdhY3ktdHJ1bmsKKzM2OTE0IGM0NzhhNzFjMjM4NDA0MmI4MmM3Yjc3YmZjYzQ0NGFiNzk1ODJmYzAgbGVnYWN5LXRydW5rCiszNjkxNSA0NTU2NjcxNDZkNGI5OWVjYjVjNDVjNDhlM2VhMWEyMmIxYjNiM2NjIGxlZ2FjeS10cnVuaworMzY5MTYgOTg1Mzc1YWNhOTcwNzMxMGYwNzU0NjI1ZmVlMWNkNGU4YjkzYTczZiBsZWdhY3ktdHJ1bmsKKzM2OTE3IDFhZjNhZDQ5ZDA2ZmUwZTIyMTFiMzZmM2MxMDBmZTc1YTQ3YmI3MWMgbGVnYWN5LXRydW5rCiszNjkxOCAyN2FkYTI1NTA5ZmYyNjI2OGNmMTg1YjkxNWJjNzcyNmQzZDk4MGZmIGxlZ2FjeS10cnVuaworMzY5MTkgZmJlYTJiZTM1NTYyOGJlMjNmNDRhNmM3MmQ3YzA1ZDAxZDYzMjNiZCBsZWdhY3ktdHJ1bmsKKzM2OTIwIDI5ZmE5ZDZhZmVhMDFmZDhmYWE3MGI1YWU1MGU0MmU5Y2ZiM2M0YzUgbGVnYWN5LXRydW5rCiszNjkyMSBmMGE2ZWYzYTg3NGVmOGRjNWE4ZGM5M2YzMzA1OGZiNTNmOTY1OTU1IGxlZ2FjeS10cnVuaworMzY5MjIgNWU2OWY3YzgwZWY0MjczMzQzODVmNjUxMmVkNGM3NjljOWFhOWUxYSBsZWdhY3ktdHJ1bmsKKzM2OTIzIDZmMzhlM2I2NGVmNDcyNmVmZTlkNGVjNWM2MGZjMTU5MDljMGZkZWIgbGVnYWN5LXRydW5rCiszNjkyNCAzMWNjZWE5ZTk4YTc0NmZhMGJhOTFhOTc5MWYyNDdkZjE4NDJmOTgwIGxlZ2FjeS10cnVuaworMzY5MjUgZWU0M2NhNGEyYzIzOGU0MWU3MzIzMzBjZGQ5NDZiOTRjMWQxZmM0MSBsZWdhY3ktdHJ1bmsKKzM2OTI2IDc2NGQyOGZjM2QzNjk4ZWE4ZmJmYzAxMzlhNTdmYWE2ZjRiMmY3ZjIgbGVnYWN5LXRydW5rCiszNjkyNyA5MGRhNzA5ODY0MDcyMzk3NGM4YWI4OGMwZWM5ZWI5MTExYTFlNzY0IGxlZ2FjeS10cnVuaworMzY5MjggMDMwNDNiMjg4YjI4NzU4NjAwMmUwN2Q4MWI1OWQwNjdmYzNiY2M4NSBsZWdhY3ktdHJ1bmsKKzM2OTI5IDQ1MzI5ZDlmZGI4ZDU0NTQ3MWU0MGE3MTE4MzdmODZjOTkyN2E0NzQgbGVnYWN5LXRydW5rCiszNjkzMCBjZGEwNDU1YmQwYTAzMTg5MDA2OTk0MmZkYjg3NDBiZDEyOTM0ODE5IGxlZ2FjeS10cnVuaworMzY5MzEgMmE4YzM3NThjNGExOTA2YmUzMWRhM2FlZDkyNTNmN2ZjMTkxOTJiZCBsZWdhY3ktdHJ1bmsKKzM2OTMyIDQ1MWRkNDlkZjUzMTA5Y2Q2MmFiYmQ5MWFiYjBjZDE2NmIzNGYwYjQgbGVnYWN5LXRydW5rCiszNjkzMyA4MjFjNTU3Y2E2MTI0YjVmYjIwNTdkYzM2ZjNiODlmOGY5ZmZhY2VmIGxlZ2FjeS10cnVuaworMzY5MzQgNGU2ZjRlOWVjOWIzZDNhNTY2ZGFlODk0Y2Y0MDcwM2U0MTNiMGJmMyBsZWdhY3ktdHJ1bmsKKzM2OTM1IDA0ZDlmZGUxMTMzMDk0OGUyYTNkMGNiN2JlMGU1NjcxNjJlMTRlN2MgbGVnYWN5LXRydW5rCiszNjkzNiA0ZGQxODE1YjQ0ZWZhYWY5ODU2N2U1M2RjNTdmNzZkNGJlMjE0NWMwIGxlZ2FjeS10cnVuaworMzY5MzcgYmZjYzRlMzlmYzQ1MmIzNTMyNjY3NjM0NmFjODExZDFlN2QzNzQ1ZCBsZWdhY3ktdHJ1bmsKKzM2OTM4IDk4MWZmZjczNjNiOTJlOGU3NGRmMTc5NTRhZjIyMTY5ZGNiMDFkODAgbGVnYWN5LXRydW5rCiszNjkzOSAwMWNjNWUzZjYzNzUyMjFhMWI3Yzk3NDIyMGFiM2RiZThkMzYxZjhhIGxlZ2FjeS10cnVuaworMzY5NDAgODM2ZTc3MjY2Zjk3NzkxMzE0MTEwZjNiNDcwYTc3ZmVlNGEzZTAyMiBsZWdhY3ktdHJ1bmsKKzM2OTQxIDc0M2FiYWM5ZjlmZTMzZWNiY2VkOTczOWMxNWMwZmY5ZDdkN2ZmMzEgbGVnYWN5LXRydW5rCiszNjk0MiBkMDc1Y2JhODUxZmQ4NmZkOTYwOTYzNzlhMjc4NjhjNjMzN2QxNmUxIGxlZ2FjeS10cnVuaworMzY5NDMgMDU4ZTg1MWU3OTNlYWZiYjExNDgyYjk1OGFjMzE4ZDYxZGQ3MDIwZiBsZWdhY3ktdHJ1bmsKKzM2OTQ0IGE3OTI4NzI2ZGQ4ZjViZDQ0ZTg0ZTliNDVlYzNkMDZmNzZmMmQ5MmMgbGVnYWN5LXRydW5rCiszNjk0NSA1ZWFlNGNlMTA1ZmNmNGM1NjQ5Zjk3ZGI5ZGYwYWI4ZWYzNDQyZjhlIGxlZ2FjeS10cnVuaworMzY5NDYgMjQwZWFmYWUzZWE3NGRhNzM1NGE5ZjVlMmRmZGMxOGQ4Y2NiMzkxZSBsZWdhY3ktdHJ1bmsKKzM2OTQ3IDVmMzM1MDdjYjU1OTgyMzcxZWZhMzkyMmUyOGFmODYzM2E2N2RlOGMgcmVsZWFzZTIzLW1haW50CiszNjk0OCBhYmVjYmQ2NmE2MjgwYzdkOTljZGUzY2E1MTkzN2I4YzUxNjhkZjIxIGxlZ2FjeS10cnVuaworMzY5NDkgNDQ0NTdjYjhmOTcwMTQ5NzJkOTMzYzQ5NDA4Mjg1NGU3NTU4OTA4YSBsZWdhY3ktdHJ1bmsKKzM2OTUwIGFmZDU0MTI2ZTlhMTkwZmEwNDBhZjRmNGNlZDY2YWI1NDE0MzU2NjYgbGVnYWN5LXRydW5rCiszNjk1MSA1MzQ3ZGEzMWYwNzZjNmNmMjdkNDQwMWMwYWFjZTllZTkyMDA2NjIxIGxlZ2FjeS10cnVuaworMzY5NTIgOTkzN2QwZTYzY2EzMjVmNDdkMGIzY2UwYTYzZTFiOWNlMzFjZDdjNiBsZWdhY3ktdHJ1bmsKKzM2OTUzIDRmZDE4NTA1ZmMzNWZkZDdiMzJmYzYzZTdkMTdmOWRkNzJjMWI3MDIgbGVnYWN5LXRydW5rCiszNjk1NCA0YjBhMGZjMWJhZWEzMWRmOTNlZTI1NmQ1MGQxNzViM2UwZjlmZTA5IGxlZ2FjeS10cnVuaworMzY5NTUgNDgxMDBhMDFhYzdjMDUzYTQxNzVhODYxZWQ2N2JhNjkzZTI0MjRhMSByZWxlYXNlMjMtbWFpbnQKKzM2OTU2IGRmYzI1ZTFiOTYwNTgzNDhjOWQyNDQzNWJlNDcxNmIxNWM2ZDdlOGUgbGVnYWN5LXRydW5rCiszNjk1NyAyMGU5MGU1MDc5N2RlOGY1ZDA2NGFjN2EyZTkyM2Q3ZDhhMDE4M2VlIHJlbGVhc2UyMy1tYWludAorMzY5NTggYjE2NmFlMmY3NzMyMTQzN2U4ZmQ1MzZmOTViNzMyM2IyZGY2NzkyYSByZWxlYXNlMjMtbWFpbnQKKzM2OTU5IGRkZDI0ZDcyYWQ2YWFjNTY5ZjgxMDY3NzhlNzQ1YWIxZGI5ODIwOGUgbGVnYWN5LXRydW5rCiszNjk2MCAwMWEzODU1YTRiMDNlODI5N2NkZTkzNDA5YjEwZTkxNDgyYWM4NDY3IHJlbGVhc2UyMy1tYWludAorMzY5NjEgYzcwYzMzZjY5YTQ0Yzk0NjMwNzVhZDZjNDU4ZWJjZDVkNDIyM2EzMiBsZWdhY3ktdHJ1bmsKKzM2OTYyIDNiNWQzN2Y3Y2I1YWQxZTc3ZmYyMDA4YzZkYmQyOGUzMTQ4MGQ0MDEgbGVnYWN5LXRydW5rCiszNjk2MyBjZTAxNmQwZWM3MDE1NTM0YTI1MGRjNDg1MjEwZGYxN2UyNzljMzJjIGxlZ2FjeS10cnVuaworMzY5NjQgMzU2ODg3NDEwYmRlNzRiOTk4NzUxZjEzMzM3NjIwMTkxNDMwN2I5MSBsZWdhY3ktdHJ1bmsKKzM2OTY1IDgxZWZlYzBlOWQyOTM2YmU4NmNjMmNmMGMzMjk1NWFjYmNmOGYwOTcgbGVnYWN5LXRydW5rCiszNjk2NiBmMjc5MzViNDY5ODVhYzYxZTBiZDU2OTMwMDMzNzE0ZTcyNjJmZWJjIGxlZ2FjeS10cnVuaworMzY5NjcgNmI4ZTQ5OTY4N2Q2MjU4NmVhNzViN2FjMjY4ZGU0ODk0YzQ0NWM2OCBsZWdhY3ktdHJ1bmsKKzM2OTY4IGY0NTViYmU3ZWE3ZTJiMTZkNDc5NjE1MTFlNmI2NDA1NTA3MGM2MDYgbGVnYWN5LXRydW5rCiszNjk2OSBlNWY2YzNmNTA4NDY2NTNjYTI5M2I0YmNhNzIxZmQ5MTI2ZjMxZTNkIGxlZ2FjeS10cnVuaworMzY5NzAgYmFiZDExZWVjZDg4M2FjZWJjYWUyNzQxNzRjNTM0YWNjOWU1NTg1NCBsZWdhY3ktdHJ1bmsKKzM2OTcxIGM5YWM5YmU5NWFmOWUyZThhOWI4YjBmNTY3OTU1ZjI2YjU4MDkxMmUgbGVnYWN5LXRydW5rCiszNjk3MiBkZGMwMzA0YzE1MWZlNGY2ZWUxMWRlMjFmM2FmZDY1MGI1MmExMTViIGxlZ2FjeS10cnVuaworMzY5NzMgNDUwZjVlMjFlYWM4ZGMyNGEwZGNhMjY5YjlmNTY3NzcwNGZjNTlkMSBsZWdhY3ktdHJ1bmsKKzM2OTc0IDBhMGMyNDdmMDU4NDQ1NmUxNTE3NDM5MmNmZTNjODgyZGVlMWI2OGUgbGVnYWN5LXRydW5rCiszNjk3NSA3ZGU3YzE5MTBhYzljYTQwZTllZDRhMzAwYjE0ZTQxYjE1Y2E0OGFhIGxlZ2FjeS10cnVuaworMzY5NzYgYTc3YzAzNzJhMWQ3YjUyY2QxYzNiNTU0ODIzMjNlYjBlN2M4NzExYyBsZWdhY3ktdHJ1bmsKKzM2OTc3IDI4ZTg3N2ZmNzRjZjcwNjczMzYzODllOWE3OGJmMjNmYzY3ZTI2YzEgbGVnYWN5LXRydW5rCiszNjk3OCBlNGE3M2VmYTRkMjM0YmVmZTNjMjIyYmE1NTUyOGFiNmZjODgxYWNjIGxlZ2FjeS10cnVuaworMzY5NzkgZGZkMzgwM2VlMGMxODEzZDhhNzBmYmJiNjQwOTRhYmE1MTU3ZjVmYyBsZWdhY3ktdHJ1bmsKKzM2OTgwIDNhNGU3M2E1ZTQzNDdmMWQxNWFhMTc1NGZjOGRjOThjYzI2ZTMwZTUgbGVnYWN5LXRydW5rCiszNjk4MSBiZjY5ZmMzYmQwNjdlNGU1ZWNjMWMyOGYwN2FlN2FjN2E2MTQ0ZTIxIGxlZ2FjeS10cnVuaworMzY5ODIgZjZhYzQxN2I1ZWIwOGI3M2YxYzAzODIwNTQyYzllMDFhM2UzZGUzNyBsZWdhY3ktdHJ1bmsKKzM2OTgzIDFjZjlkZTNhODUwM2E0Mzk3ODU3OGIwYWQ4ZTk2MTAyN2ZmNWIzMTQgbGVnYWN5LXRydW5rCiszNjk4NCBkN2ZjZGY5Nzc2YzRkZmE0YjdkMjNiZmI2MjZlYjllZTcyZmZkYzVlIGxlZ2FjeS10cnVuaworMzY5ODUgOTIwZjVmNjRmMmYwZmM4MDM4YTI3ZDRlMmRhOGMxOTZiYmEzOTQ0MSBsZWdhY3ktdHJ1bmsKKzM2OTg2IDAxNDA3ODViZWZkYjM2ZDBjMWIwNDJlNjM0ZWVlNGE1NTgyOTE1NGUgbGVnYWN5LXRydW5rCiszNjk4NyA2YzE2YWI0MjE0YWY4ZThlNTBhODAzMzcwZDliZDRmYzhmMmIxN2Q3IGxlZ2FjeS10cnVuaworMzY5ODggZGM2NDdkZjUzOTIxN2E1OTVjZWNiMTkwNTM5Y2ZkNjJjYjg5NzJhMyBsZWdhY3ktdHJ1bmsKKzM2OTg5IDNhN2Y4MmU2MGNiMjI5MjQyODUwMjcxNGFiMDc3ZjgyMWY5Y2RjNzIgbGVnYWN5LXRydW5rCiszNjk5MCBjY2QwMmJkMzQ0YjM4YjBlOWUyNjI0MjM3NzY4ZWExMmIyOGIxN2VlIGxlZ2FjeS10cnVuaworMzY5OTEgZWRkYjM3ZDcwMmI1ZTA1MjIzNjA2ZWUxZmM0Mjg1NTgzZWNmZjdkOSBsZWdhY3ktdHJ1bmsKKzM2OTkyIGMyMzg0NjAxYTI0MTExN2QxZTc3ZmQ1NDgyZjNmNDA0MGJhODQxNDkgbGVnYWN5LXRydW5rCiszNjk5MyBhZTliNDdhOGQ2NDg0ODU2ZjBjOGRlMTMwYzQ0N2IxZjQyMzVlYTZmIGxlZ2FjeS10cnVuaworMzY5OTQgOGEyODI3OTc4OTVmM2YxMjVkMzU5NWVkNTQ4MzRmMTliYTYwMGM4NyBsZWdhY3ktdHJ1bmsKKzM2OTk1IDg0NmJhMjk3MmQ3YzFiZGQ0YzRkYTYzODUyMTI0NTAzNGZhNmM4MDggbGVnYWN5LXRydW5rCiszNjk5NiBlNDk5MmU5MzBjYjJlNTk2MTgwMWE0NDE5MDQ2MWJkZWNkZDgyMjdiIGxlZ2FjeS10cnVuaworMzY5OTcgM2RiOWE5MzI3NzVlNjBhNmFmN2RjMjczZDQ2YzVjZWZmMjIwYjg4ZSBsZWdhY3ktdHJ1bmsKKzM2OTk4IGZjMTYzN2ZjNDU4ODlmYmM5MmQ3NTIzNjMwNjNiMWIzNTY2YmZiNjkgbGVnYWN5LXRydW5rCiszNjk5OSA3Mzc1YWU1ZjlkYzRkNWY1OWVkZjA5NzQ3ZTVjNTFiNGEyNmVhZWYzIGxlZ2FjeS10cnVuaworMzcwMDAgMWQ5ODM1MDgyYmU1YWVjYTZhNWY3ZWMyNjYwMDc1OWMyNGE0YzVmMiBsZWdhY3ktdHJ1bmsKKzM3MDAxIGFkMjY4YTg0MDhmNGY2YmViNTcyYmVkMzBmNTkyYWJmNWRlYmY1YzAgbGVnYWN5LXRydW5rCiszNzAwMiBhMzVlNGQzNWQxNDI1MTJjZDI4ZDYyODUxNDRmNDYxNGYwYTliYTlhIHJlbGVhc2UyMy1tYWludAorMzcwMDMgM2JlYjU0ZjlkMmJiZTg4MjdmZWE3NmNkNGRhYjY2NjllNGRhNGJjNyBsZWdhY3ktdHJ1bmsKKzM3MDA0IDI4OTNkYzliNGVmNGRhZDA0NTI5NWYxNTY4ODVhNmViMzczMmQyMGMgbGVnYWN5LXRydW5rCiszNzAwNSAyMmZhOTZjNDEzYWVjM2ExNTg3OGE2NmUwYzRkNDAwNTE5MzRjOWQ2IGxlZ2FjeS10cnVuaworMzcwMDYgOTUxY2NkOGYzNDI4ODZlYmI2MGFjODJiMTgwODlhMjQyYmQ1NGI0MyBsZWdhY3ktdHJ1bmsKKzM3MDA3IDg3NzljOGM0ZDE4MWFmNDc1MmNiOTFkODE1YjcyMDA0OTQxOTA0ZjAgbGVnYWN5LXRydW5rCiszNzAwOCA5Yzg0MWNhYTBlODE0YWU2ZjQ5NjVkYjVjOTRkOTgyZDVmYmNkNGM0IGxlZ2FjeS10cnVuaworMzcwMDkgMjhhMjA1ZWNiNGRkODA1NjQ3NjIzMzQ2MTdmMWZmYmZiZDBkYmQxYiBsZWdhY3ktdHJ1bmsKKzM3MDEwIDhlODdhNjgzNDk0MmU0ZWZhNzYxMmIxOWM1OWEyZDkxZWE5ZDMxOTQgbGVnYWN5LXRydW5rCiszNzAxMSA4YzBiMDhiMjQ3N2JmZDNhODUxYzY1YmIzNzk0OGVkZDk5OTg4NTJjIHJlbGVhc2UyMy1tYWludAorMzcwMTIgNjEyZGUyNjhlZDRiZTBiZTMzYjU0OTNlMzk2OWVhOWEwMmY1NTYyZSByZWxlYXNlMjMtbWFpbnQKKzM3MDEzIGZkOTJlYThiNWI1MWJkMWE2NDZlZTQ5NzM4OTFlNGI4YzYxZjdjYWYgcmVsZWFzZTIzLW1haW50CiszNzAxNCA3YWFlMDZiMWYxZGRjYjM2NzliNDE3NWIxZDgzYTMyMjEzYmE1OGVhIGxlZ2FjeS10cnVuaworMzcwMTUgZmY5ZDVhNzJkNTRiNzIwODAwZjg4YzU0ODhlNzAwZDJhZGVlNDQ1MSBsZWdhY3ktdHJ1bmsKKzM3MDE2IGI1NWRiY2NlY2M3MTUwNjY2MDFkZWMzYWVkMTMxMTEzOTM0YTVlMWMgbGVnYWN5LXRydW5rCiszNzAxNyA0YjViNmU4NjFmY2Y2ZWIzYjk4MTI2YWZiN2M4Zjk2Y2IzYmFjYjFlIGxlZ2FjeS10cnVuaworMzcwMTggOTMzNTQ4ZmU3Yjk3YjBhMmI2MzcxYWVlN2NmMjczZDkyM2EyMDVlNyBsZWdhY3ktdHJ1bmsKKzM3MDE5IGEzNjIwMTZlOTUwZDUwYzUyYzhmOWU0NDc4MmYxZGY5MjllMTFmNjAgbGVnYWN5LXRydW5rCiszNzAyMCAyYjhiZGIwNjllMGFlYmRkNmZjMDkzNTJlODcxZmUwYTc4YTUxNTQ5IGxlZ2FjeS10cnVuaworMzcwMjEgYjJmNDI3ZGIyMjhiMTQ2ZjUyMWU4ZWRhZjU4NDlhMjkzZTI4ODc1MiBsZWdhY3ktdHJ1bmsKKzM3MDIyIDNmOWQyMWVjNTA0YjRmYmZkYTcwZmQxNDkwMDZjNjczYjVhZDg2ZmMgbGVnYWN5LXRydW5rCiszNzAyMyBhMDU5MzAxYTRjZGUzZDQxMWViZjJkNjc4M2EyMjI0ZjA5YWJkYjc2IGxlZ2FjeS10cnVuaworMzcwMjQgYWU0Y2IyOTQ3NDAwZWIyYWYzOWMzYmU5NGNkNGRiMmZjNWFlNzkyMCBsZWdhY3ktdHJ1bmsKKzM3MDI1IGJmYjI5MWY4NTg3MTVhNzdlZTBhMjdlNWEyZDgxYjQ5ODBjNDczMTAgbGVnYWN5LXRydW5rCiszNzAyNiAyMDhmZTcxOWM3NDliNTFlYjI3Zjg4YjNiOWMwZmY1ZmJhMDAzMDg3IGxlZ2FjeS10cnVuaworMzcwMjcgNmYwOWI1MjBjMDFjNTkwZmM4YTEwMzBkNzc4NzI3NGZiMmI3YjFiNSBsZWdhY3ktdHJ1bmsKKzM3MDI4IDFkNmVlZmJjYmIzNzQ3ZTBkMmI5MDliZDcwZWMwNzkzY2E2ZTIxOWUgbGVnYWN5LXRydW5rCiszNzAyOSAzNTdiMjRjMzQ2YmIwZDY2OGVhZjZlNTZkZTEwNGY5NGVmNzQ5ZTIwIGxlZ2FjeS10cnVuaworMzcwMzAgMmU4ZDJiZGQzM2RlY2RiNjhlODRiOTU4ZTNmNTcwN2IwOTk2OGYzYiBsZWdhY3ktdHJ1bmsKKzM3MDMxIDk2YmY0MDI0ODhjNzBhNjE1MzBkNGYzYTgzYzViZjg1MWMyM2JiMmEgbGVnYWN5LXRydW5rCiszNzAzMiBiZWQ0NWE2Yjk5M2JhOTRhYjNmMTc5OWRjZDg4NjA3NjNlZmY5ZWVjIGxlZ2FjeS10cnVuaworMzcwMzMgNTc3OGY2MzMxMzM0Y2UzNmMzZDhmZWUyZGMzMmVlYjM1ZDdiOTM2MiBsZWdhY3ktdHJ1bmsKKzM3MDM0IGE1NzY5ZThmMWM2ZmRlNzUyYmUwODQ1YjBlODA2Yjc0N2RjOTMwNjUgbGVnYWN5LXRydW5rCiszNzAzNSA0Y2Q3N2RlNTUxZTc0NWIxYWUxMGNlMDA2NmZiYzI4NWE2M2VkNjU3IGxlZ2FjeS10cnVuaworMzcwMzYgMWY5NTIyMjM4Yzg2MzIxN2IxNWE0OWNmNmYwOTJhY2RjNWFlYjU4ZCBsZWdhY3ktdHJ1bmsKKzM3MDM3IGUwNWU5ZDA1ODMwZDA5MWMzZjhmOTQzMWYzY2E0N2Y2YzkzZTJmOTIgbGVnYWN5LXRydW5rCiszNzAzOCBmNmZhNjQ5ZmM0YWY3NGQzZmQzYTM2NzVkMmYyMGYxY2E4MmVjZDQ5IGxlZ2FjeS10cnVuaworMzcwMzkgYTZjODAxNzBmYzUzODJmOTM5MjgxMjI4YjY4YzQwOTliNjlkNWZjZiByZWxlYXNlMjMtbWFpbnQKKzM3MDQwIDQ1MzZiMDMxNTE1NzdiOTU0ZWZjYTExMGMyN2FjYTgxYzMyMDExMzQgbGVnYWN5LXRydW5rCiszNzA0MSAxNzk3M2YyZTNlMGU4OTdjNzQ5ZGJiMjkxYzllNTY0M2YxOWM4N2Q3IGxlZ2FjeS10cnVuaworMzcwNDIgNjY2NTU3YzI5MjRkZmNmYjE2ZDJiNWFjNGEzZjRhMTMxMmFjM2FhMSByZWxlYXNlMjMtbWFpbnQKKzM3MDQzIGEyNTE0ZTJkMWM3NGUwNmQ5N2I2Zjc1NzE1YTAyNzIzMjMwMWZkOTQgbGVnYWN5LXRydW5rCiszNzA0NCBhYWQxMTg2NDM1OTg4YjJhYjljYjZkZThlOTkwZjhjNjAzMWI3NGYyIGxlZ2FjeS10cnVuaworMzcwNDUgMGQxNjI3YzQ0NzY5MGNhZmQzYmJlMDZlMzFkODcxYTNlZTI1MWU4NyBsZWdhY3ktdHJ1bmsKKzM3MDQ2IDI5NjVhZTk0YTIzZmUzNDFjYjdjMGQ5NWU4MmU3Y2Y1YTc1NWU0MTYgbGVnYWN5LXRydW5rCiszNzA0NyA0NDAxZGVhNzI0ZjBhZmMxNjUyNmFmZTAxMWM2NDU3NmFlYjUwNzdkIGxlZ2FjeS10cnVuaworMzcwNDggOGU5MTdiOWU3MGU3ZDdjODFlM2Q5MjVjZjhkNTMxMDFhOWRhM2U0MCBsZWdhY3ktdHJ1bmsKKzM3MDQ5IGZlYjUyNDdiYTBjODBiMjI2ODJlNThhNzJhODdlMjdhMzdhNjJmMjkgbGVnYWN5LXRydW5rCiszNzA1MCA0Yzc4ZmNiNjBkZjMwOTFjMTg4MDQ2NWNkNzQ2MTYwYzYyMTk3NzdmIGxlZ2FjeS10cnVuaworMzcwNTEgMzViYjYyYWM1NWZlZGE0YzJjNTdlM2ZlZTI2MjQzMzUwNWM1NjJhZCBsZWdhY3ktdHJ1bmsKKzM3MDUyIDBmZWNjZjE5YjE2ZDVjNGMwZGE0MTgzNmM3M2YzNDJhZDllNGRmZDkgbGVnYWN5LXRydW5rCiszNzA1MyBkZTgwNGVkZjhiY2Q1N2VlOWQwM2UyNGMxNTIyYTkzMjg0MTAzYTAxIGxlZ2FjeS10cnVuaworMzcwNTQgYjBmMjY4MWJjZjdmYTc0MGRkMTVjZGNiNzVhZWI5MjFiNGZkZDBiOSBsZWdhY3ktdHJ1bmsKKzM3MDU1IGVkYjg1M2VkNmM3OGIzNTA1MjY2OTM4YzFiZGRhMmY0NzIxYjExMmUgbGVnYWN5LXRydW5rCiszNzA1NiBiYmU2ODQ3NGU1MjIwZDc2ZjlkM2NkNTM3OTcyMDU2ZmU1Y2E4NTMyIGxlZ2FjeS10cnVuaworMzcwNTcgZDI4ODNjNDJjMjA0YzA0ZjI0NjdmZWY4N2Q4OTAxMmVjZTdkMGQxOCBsZWdhY3ktdHJ1bmsKKzM3MDU4IDA5NmRlNDU4MjdjN2I2NzRiZmVmZTZlMzUyN2NiMDI3ZDAzOTc1NmUgbGVnYWN5LXRydW5rCiszNzA1OSA3ZjU3YjNjN2ViYmZmY2I1ZThlOGRlNDEzYmEzZWVmYWVhMDA4ZThmIGxlZ2FjeS10cnVuaworMzcwNjAgOTM0YTVkYjliOTViNjEyMjlmZDhmYTdhYjhiMmI0ZGEwYjZiOWJhMSBsZWdhY3ktdHJ1bmsKKzM3MDYxIDdkYTkyMDFiYzhiNTMyYzZkYzM2OTk3YTI2NjcyMTVkYTVlMzg4Y2MgbGVnYWN5LXRydW5rCiszNzA2MiAwMTcyMjdlNDdjM2RlZjMxYjhjMDE4MTY2ZDhmMmFjZjdmMzJjYWU5IGxlZ2FjeS10cnVuaworMzcwNjMgZWE0ODc0ZTAyMWU4MGVhY2U2NGY4MTJmZGVhODc1MzlmYjFjNDQ1MiBsZWdhY3ktdHJ1bmsKKzM3MDY0IDI2NTYzMjA0NjYwY2JjYjhlMjQ0NDkzZDc5YmYwMmNkZWYwZDMwYzcgbGVnYWN5LXRydW5rCiszNzA2NSAzNDdkNzFjMGUwMThkZDE3OTE1MDUzNGEzN2IwODNmN2MwMzkzM2MzIGxlZ2FjeS10cnVuaworMzcwNjYgMWQwZjRjMDM1N2QwMDRmMjllZmIxNWI2NWE4NmZlZThiNDExOGE2ZSBsZWdhY3ktdHJ1bmsKKzM3MDY3IGVhYjIxZmJmOWE3MGY5NzBkZDlkMGIxZDA2NDgzOGZkODAxNDlhMTAgbGVnYWN5LXRydW5rCiszNzA2OCBjMThhY2E3ZTgxY2I1Zjc3NzY4ZWE5YzRiNGU4ZjFmNjU1MjExYzA1IGxlZ2FjeS10cnVuaworMzcwNjkgOTA1NjlhZTNlM2YzZjFjZGUxMGQ3YWZkNTdkODdhZmMzOWY0MjVhMSBsZWdhY3ktdHJ1bmsKKzM3MDcwIDY5NzAwNjg3ZTMwZjUxNWE2NDRhNDJjMDlhMTcwYjZiMTQxMWRkNjcgbGVnYWN5LXRydW5rCiszNzA3MSBiZWQ2MmYzOTlkYWMwYmY1NDcxZTI2ODllY2MzMjhlYTNmZTk5ODc3IHJlbGVhc2UyMy1tYWludAorMzcwNzIgMDQ4NjRjMzliMDA2MzMzZjMyYWMyNDllYTE4ZTI3NjM4NWI5OTM1NCBsZWdhY3ktdHJ1bmsKKzM3MDczIDM0YThkNzVlZGQyYjAzYTUxYTdiMTQxODExODc0MTRmNmNiMWI0NGEgbGVnYWN5LXRydW5rCiszNzA3NCAxNmRmZjMwZTY2ZWMwZTVkOGM4Yjc3OGRhY2RkMGVlN2FlMzBiMDc3IGxlZ2FjeS10cnVuaworMzcwNzUgYzliOTkzMDhiMGU4Y2JmOTBmNTg2ZjAyYzhjYTE5MTQ1NDYyMjQ0MSBsZWdhY3ktdHJ1bmsKKzM3MDc2IDk0MjMwZjZiNWViZTUyZjYzMmQxMjczMmRmNTRlYWQ3MDhiMDhhOGUgbGVnYWN5LXRydW5rCiszNzA3NyBkYjFiYWZhOWI2NTYxMzZiODdjZTdiYzEzMDQwNTE5Mzc0MjY4OTMyIGxlZ2FjeS10cnVuaworMzcwNzggZDk3NjVlYjU5ZWRkNzg1NWNiNjY0Y2QzYzI0MzcyNWEwZjJhMDdhNCBsZWdhY3ktdHJ1bmsKKzM3MDc5IDhkNzcxMzRhYWI4MmY0MDhlMjZiOGVhNzgwOTY0ZWUzMjZmOTc0ODcgbGVnYWN5LXRydW5rCiszNzA4MCA2Yjc0M2NiYzQxNzEwZTYyNjRlOGNmY2I0MjRjYmY5MTViZjMzMGZlIGxlZ2FjeS10cnVuaworMzcwODEgODI1MmU5ODljYmIxNWJmNDc2YjdhYTUyZjJmMDU0NGNmYWNiMThlNyBsZWdhY3ktdHJ1bmsKKzM3MDgyIDA2NmM3ODkwY2Q2MTU1MzBhYWFkM2FhMTk4NTk1YzIzYjEwNjFkZjggbGVnYWN5LXRydW5rCiszNzA4MyBkODYxYWE4NzQ1MjU1ODg3ZTFhNjNhODFjOTVmY2NjYmI3MGZmZTgyIGxlZ2FjeS10cnVuaworMzcwODQgMzIzNWU3MzliZGExMmVmMTg5NzdjMDhjYmIxODUxMDM4MmY4NDJmMyBsZWdhY3ktdHJ1bmsKKzM3MDg1IGFjZDliZjJlM2JjZjUxNTliZmZlZDc5OTI3OTQ1ZmJiZTFmOTU4ZjEgbGVnYWN5LXRydW5rCiszNzA4NiBlNjMwNGQ2NmQ5NDViNTY5NzlkMzg3Yjg5YTYxNDM2Y2I5OThkYWIzIHJlbGVhc2UyMy1tYWludAorMzcwODcgOGFiZDMyMmEwMTNhYjY4Y2RjYWE2ZGUzMTA0YjkzZWFkYjNmNzUwMyBsZWdhY3ktdHJ1bmsKKzM3MDg4IDg0OTMxMDgwZTA1Y2MzZjk5OThiNzU0YmM4OTIxZWU5OTE3Nzg2MTMgbGVnYWN5LXRydW5rCiszNzA4OSA1N2E2NmQ3MDBjN2NmYmFhNjZhM2I0N2NkYzZlZGEyYTNiNjA5ODg5IGxlZ2FjeS10cnVuaworMzcwOTAgMGE4ZDM5YWNhOThjNWZlY2NkZjdjOTE3NjFlNzQwNDdmMDgwZTRhMSByZWxlYXNlMjMtbWFpbnQKKzM3MDkxIGExY2Y0YTI5YWMzMDA3MDg3ZWE4OThmZTk5NjI1NmYxMTM4MjMwM2QgbGVnYWN5LXRydW5rCiszNzA5MiA0MGI1YWVlMjBiODMxNzJlZDM0YjQxYTgxNmZiYTdjYTYyOWIyMjkxIGxlZ2FjeS10cnVuaworMzcwOTMgN2ZlYzA2NjJjZjRhYTJkZGZlNGRiN2ZhMGE1NDk4ZGFlN2MwMTc0NyBsZWdhY3ktdHJ1bmsKKzM3MDk0IDljNTcwYWY1MzU2ZTdlMWI3NmQ5MWFhZTQwM2JjMDNjZTYzOGE3Y2YgbGVnYWN5LXRydW5rCiszNzA5NSBkZWE5OGVlZDhjZjBjOGFmZjM2Mjg0MTE3YzU4MzI0N2Y4OTNkYmE4IGxlZ2FjeS10cnVuaworMzcwOTYgNjk5NzZjZjU5MTQ5NWZlODRhZWNhOWU1YmY1NjUyMTRlZmQ4NDA0NSBsZWdhY3ktdHJ1bmsKKzM3MDk3IDc3ZDM2NDJlYjg3YmU3YTg3Mzk2ZjE0MTMxYmIyNzU4YjczMDYzN2IgbGVnYWN5LXRydW5rCiszNzA5OCBhYjM0OTgwZmZhMTY5MGE5NTNiZjMyMTBlM2JhNzNhZjU1YWRkYWM4IGxlZ2FjeS10cnVuaworMzcwOTkgZjlmNGIxOWRkNzU1ZDkwMWFiMTk1NzY3OTU1OTcxY2YzYjE1YzQxYiByZWxlYXNlMjMtbWFpbnQKKzM3MTAwIDIyYjYzZWQyZDViMjI3M2ZiZTllYTBjYjA5ODA0ZTc1ODcxZmQxZTggbGVnYWN5LXRydW5rCiszNzEwMSAyZTA5NjZkYmQ2NzhiMjhlYTg1ZDlmMzg4MTg5ZDkxMTlhMzhhMGViIGxlZ2FjeS10cnVuaworMzcxMDIgZjk4ZTU5ZjJmODlkMDkxZTQwYWVmNTZkYzRiNjM1MDk4MzYwNzNmZCBsZWdhY3ktdHJ1bmsKKzM3MTAzIGZiOTg2OTA0NGJiYTlmNzIxNzg5YWNlY2ZlZGZlOGM3Y2YwNjQ2NDAgbGVnYWN5LXRydW5rCiszNzEwNCA3MTQyNzkxNTc5NmVkYzFjMzM1Mjg4OWUwY2JlNWU4YWE1ODkwOWRiIGxlZ2FjeS10cnVuaworMzcxMDUgMmNhYTZmMTlhMmU2NmNlY2U4ZGIxYmIwYThhYTI5MWI0NDc0NTNmOCBsZWdhY3ktdHJ1bmsKKzM3MTA2IDU2MTcwMjM1MGUwOTgwN2IzYzUyOGNmOWJhMDI5OTBhYmJmNTU4MDkgbGVnYWN5LXRydW5rCiszNzEwNyBjZDJhOTVjZmM3ZWI0OGFhZjVmZmE0M2ZiMzQwN2VkMTcwNTYwODdlIGxlZ2FjeS10cnVuaworMzcxMDggMzk1YmIzNzQ2ZDFkNGUwNjY0NzgyNThmNzUwYjQwYzI1MDI4MmI3YSBsZWdhY3ktdHJ1bmsKKzM3MTA5IDg0YWNjNzdjMDZiODg4YTg2ZmE0OTFhMDAyZWUxNWNhNTQxMDkwN2EgbGVnYWN5LXRydW5rCiszNzExMCAwMzQ0MDI3MjAyOGM3OTczNGI5ODFmMmU1MWIyYWY1NzAxZjgxNjQzIGxlZ2FjeS10cnVuaworMzcxMTEgOThkYjA5ZmQ0NDNjZjY3YjVhZWIzZTZhMDhjMmMzYTJhN2RmYjUyZSBsZWdhY3ktdHJ1bmsKKzM3MTEyIDFmOWI5YzIyNmI0M2VkMjBjYjYxZTZkMjFhZWE2Y2I5NjZlOGJjZDMgbGVnYWN5LXRydW5rCiszNzExMyBjNjU0MzM0ZGM5NjE4ZWUwNWNmZjI1ODM3MzFiMWQwNWU2NWY2YTA5IGxlZ2FjeS10cnVuaworMzcxMTQgMTJlZjU2Zjg4YTkwYmU1MzY4YzI1YzUzNzMzNzM4YWU3NGYwN2JjZiBsZWdhY3ktdHJ1bmsKKzM3MTE1IDk1NzQ0YTQyMDhhMjcwYzA1YjljOTU0OGMxMTE2NTliYjBkODMyM2EgbGVnYWN5LXRydW5rCiszNzExNiAzNzdjNTE4ZDg0ODM0Mzk3NmI5Mjk0NzkwMTMyZjYzYTM4ZjFjNmYyIHJlbGVhc2UyMy1tYWludAorMzcxMTcgOGRkMzVmNWM3OTI4MmE3MjJiNjk1ODRlMThmMDZmMzk3MjAyNDE3MCByZWxlYXNlMjMtbWFpbnQKKzM3MTE4IGI0Y2I0OTgyOWQzZWVlZGIwZjRiMWMyNzcwNjg0ZWQ1ZDhmNWQ4MGMgbGVnYWN5LXRydW5rCiszNzExOSAzZmJkMmQxY2E1YmI2MGQzYTY3MDliMTdlYjljMWFmMDY2YTgxZDMzIGxlZ2FjeS10cnVuaworMzcxMjAgNjY0MWQwNTQyNTkyN2YyYWZhNmMxMDBlMGY0MjhlMzU1MjFjOWIxZCBsZWdhY3ktdHJ1bmsKKzM3MTIxIDExYTRmYmM4OGE4MDBjNWUxYTM0OGI3ZjVmZDQ5NjFiNjIzYjM1NGEgbGVnYWN5LXRydW5rCiszNzEyMiA5OTNmZDhhY2M5MGYyODQ3MzNhMDg4YTVkYTBkOGRhMzRhYzVlNmViIGxlZ2FjeS10cnVuaworMzcxMjMgYjYzYjMwODIxZWY0NzhkOTBlYjhhYWU3MDc0MjNlM2IzMjg3YzA3ZSBsZWdhY3ktdHJ1bmsKKzM3MTI0IDk2NWU5NmUxNTI5OTA1NjM3ZTdiZDVmMmYxN2I5YjgzNGMyNzM5YzIgbGVnYWN5LXRydW5rCiszNzEyNSAxY2Y3ZDcyMjVhOTk2Mzg3YzcwNjU2ODE4MTQ1ZmMxNTIyY2M5ZTk3IGxlZ2FjeS10cnVuaworMzcxMjYgN2ExZmIzMTZlNjU1MjJkMTZjNzY3NGE3ZmJmMmY4MDVjZTJiYmEzYSByZWxlYXNlMjMtbWFpbnQKKzM3MTI3IDhjZDU3Nzk2YTljZjgxMGJiZWQ4ZTE3NTQxZmUxNDNiMDY4ZDA1MDYgbGVnYWN5LXRydW5rCiszNzEyOCBmMTA3MmEzMGJiNTgxMDhlOGQ3NzZlN2ZhMTBjZDNkM2RiNzdmZmE2IHJlbGVhc2UyMy1tYWludAorMzcxMjkgYjA0NTA3MDE3MmNiMmY3NTllMzVjYTQzZDNjYTNmNWYxZjU5MWE5OSBsZWdhY3ktdHJ1bmsKKzM3MTMwIDRlOWVjYmY0N2I2YmE5N2M4Yjc1YzJhZTFlMzU0ZDA3Y2Q4MTgzYzkgbGVnYWN5LXRydW5rCiszNzEzMSBkNjc1ZTNlMGZlNzk2OGVjMTcwNjQ0ODgzMzJmY2JlYWQ3MzEzMTNlIGxlZ2FjeS10cnVuaworMzcxMzIgYTQ3ZjNkMmZmZDIyMTU0ZmY3OGRmOTVmYjYyOGY4YmQwNjNkMmM4MCBsZWdhY3ktdHJ1bmsKKzM3MTMzIDBlZDRmZDdhMGUyZTBmNTAzZjJkZWNiNzNkY2NjNDI0Yjc3NWRlNmYgbGVnYWN5LXRydW5rCiszNzEzNCAzMDE2NDcxYWU1NDg5YmJmOTg3OWMxZDczY2VjMmZiMGMwM2MyNmU0IGxlZ2FjeS10cnVuaworMzcxMzUgM2RiZGJkNTcyZDk0MTI5MjdlODgzNjUyMDMxMGUwNjYxMzVlZDkxMyBsZWdhY3ktdHJ1bmsKKzM3MTM2IGJhYzk5N2I3OWIxOTI1ZDZiODkyZDNmOGI0Y2Y5ODBiODMyN2U1ZjEgbGVnYWN5LXRydW5rCiszNzEzNyA0Y2E5ZmEyMzUzYmZhNDNiMzg2ZWRiZWQyYmQ5NDgwNGY1YmUzMDI1IGxlZ2FjeS10cnVuaworMzcxMzggMjcyNzcxOGU5ZThmNDI2NGZiNmQxN2ExN2RmMTk4ZTJiYTFjZjNkMCBsZWdhY3ktdHJ1bmsKKzM3MTM5IGExMmQ5ODRiZDk2MmQ5NTJkY2EwN2ZhNjRiNDliM2RiOWQ0OTRiMGUgbGVnYWN5LXRydW5rCiszNzE0MCA4ZDFiNGNkOGExMjQ1NGVmNmNhYTBhOWM1MDFjZDVlNWUyZWNkYjVkIGxlZ2FjeS10cnVuaworMzcxNDEgMGM3MzQ5MzJjNmY0MWVkMmQ1MGZlM2MwNjdjMjBiN2RiN2QyN2E0NSBsZWdhY3ktdHJ1bmsKKzM3MTQyIDJiMTM2NDQxMDM1YzgzM2VlNGJiMjVjYWE3OGMyYzAxZWM3OGRiOWMgbGVnYWN5LXRydW5rCiszNzE0MyBiMjVjYjIwNDVkYWNiMDk3ZGQxMTNlZThhZGQ3YzExMGFlNjc5NmE3IGxlZ2FjeS10cnVuaworMzcxNDQgODI2YWQ4OTZhN2E1YzM1YmEwNGI1MzcyN2M1MmJhN2QxMWYyNmQ1MyBsZWdhY3ktdHJ1bmsKKzM3MTQ1IDRhZmYxZmJjZTc1MjRmMWM0OGY4ZDEyYjE3MWIwZjk3NGZmNzEzMmYgbGVnYWN5LXRydW5rCiszNzE0NiBlZmY3NjZlMjljNTUyNWEwNzA1ZjJiZGU2YzVkYmU3ZTk5MmU2MjQwIGxlZ2FjeS10cnVuaworMzcxNDcgMjc0N2RiZDU5MzhiNTZmOGQ5NzUwMGVlZGY0NmEwMWJhNzY5NWZmNSBsZWdhY3ktdHJ1bmsKKzM3MTQ4IDM0NWZhYzY2ZGFhOWIxNzNkZmVkMmQ4YTM5MWFiYzE1YzU1NzQ4OTQgbGVnYWN5LXRydW5rCiszNzE0OSBlZTcwM2EwOTRkZmJkZjEwMGE5ZGJkOWMzNTAzN2RjZTY5MzJmM2U0IGxlZ2FjeS10cnVuaworMzcxNTAgZTU4NmNiZWNkZWJhNjI5MDMzZDc4NWQwMTUzMzUxNTQ2Nzk0NmIxZCBsZWdhY3ktdHJ1bmsKKzM3MTUxIDQ0OTE0MWFhMDExYzlhNDM2MTM3ZGM5OTk4MzE3YmI5NTEyOTU5MDcgbGVnYWN5LXRydW5rCiszNzE1MiA4YWFkNTI5NmZlYzk2MDM0NzA5NWUxYzQ3NWY4MDRjZjIwZjQ2Nzg5IGxlZ2FjeS10cnVuaworMzcxNTMgZmY4OGRhNDAwNzc4NTg5YzMyOTM4MmI5ZWZmZGVmMmUxNzZjOWYyZSBsZWdhY3ktdHJ1bmsKKzM3MTU0IDhkMjc2NTUxY2VhOTcyYTBiN2UxYzE3NDI2YTY0MjMzOGU2NTFmODQgbGVnYWN5LXRydW5rCiszNzE1NSA0YjAwYWUxZWZkZDg2ZGMzOTM0NTM0OTA0ZjVjZjI2NDk4ZTgwMDg5IGxlZ2FjeS10cnVuaworMzcxNTYgOGE0YzMwNTRhMzZjOTQ2ZjQ4MTM4ZGM2YWU4YjVmM2RlYjdiYWMzNSBsZWdhY3ktdHJ1bmsKKzM3MTU3IDVmYWI0ZjQzYjk0ZjczNzFiNWMwMGRhOTZiYzdlODg2NDRhYmEyMDggbGVnYWN5LXRydW5rCiszNzE1OCA2N2ZiYmViMWUyMTgxZTAwMmU0MTBhODRiYjk4Zjg5MWYyNTVlOTkxIGxlZ2FjeS10cnVuaworMzcxNTkgZTA3YTYyMzRiNzNiMWY0Nzc1ODBmYmNiMjdkYTI1MTU4YzYwMmYwMyBsZWdhY3ktdHJ1bmsKKzM3MTYwIDNlMjVkNmUzZGExOTQ4NWI5ZmY4YjA0OTFlODI3MTllM2E2Nzc3YWQgbGVnYWN5LXRydW5rCiszNzE2MSA5NmQ1Mzg0ODhhZWVhYzNiZmU2NjM5YTc5NDE0YjY3MDc0MWY5ZGU4IGxlZ2FjeS10cnVuaworMzcxNjIgYTM3YWU3ZGJhODE0YjczZmE1MzAxODY3YTVjNDZlYmJmNzI0MzI5NyBsZWdhY3ktdHJ1bmsKKzM3MTYzIGIyOTEwZTQ3OWYwN2IxMTAzMTQzNGIxMTU0NDY3MmNiYmZlMDNkMmYgbGVnYWN5LXRydW5rCiszNzE2NCA3N2RlMzg1MzRkMjYzMjg3NjQ2M2Q1YmVhYTk3OTYzODkwMzMwOTdhIGxlZ2FjeS10cnVuaworMzcxNjUgYjFjMjZlODljNDY0ZDZhODljNjdiYWNlZWUxNTk4ZTU5NGNhMDBlMyBsZWdhY3ktdHJ1bmsKKzM3MTY2IGUxOWIwMDk3NWQ1ZTg2MmYwYWVjOTgxNWYyNTM2YzM1OTk3ZWMzOTcgbGVnYWN5LXRydW5rCiszNzE2NyA1MjFiODc5NWRmOWJlNDg4MTAwMmExNzc5YmEzZTU1MDYxYmNiODczIGxlZ2FjeS10cnVuaworMzcxNjggNGIzMjQ4OWMzNGE3YTExZDViY2E4OTVhNjZmMTc0NDc1MDgyZmVkMyBsZWdhY3ktdHJ1bmsKKzM3MTY5IDc4YjU3OGM0Njc3MGU1MGU2MDI4ZmNiYmU3ZjU0MjY3MmM5ODA2NWQgbGVnYWN5LXRydW5rCiszNzE3MCA3ZjYxNzAyNTU2NWU4MGYwNzU1NWVlOTM3NzcyY2M2YWQ3NGIzNmEyIGxlZ2FjeS10cnVuaworMzcxNzEgY2QxNTY0MjMwOTQ3OGVkNWUwZGE2ZDM1MjQ2OTVkMzgxM2Y1MjhhNSBsZWdhY3ktdHJ1bmsKKzM3MTcyIGYyODA3MmU2NGY4MTc2NzQzZGMwMzhiYzNhZDRiZTUxMmI5MWQwZmUgbGVnYWN5LXRydW5rCiszNzE3MyA1OTgwNTAwMTdiNWU0MDFkMDIwMjEwYTFhYTQwZTNiNTM4Nzk4ZDUxIGxlZ2FjeS10cnVuaworMzcxNzQgODU3OTg1OWYxOThjNzhhYzE0M2VlNjdjY2NmOTJhNzY5ZDllYjUyNSBsZWdhY3ktdHJ1bmsKKzM3MTc1IDU5YmQxMjFlZWViNzFjNzVjZWY4YTNjODg1M2Y3ODhmMjUwODcyYTkgbGVnYWN5LXRydW5rCiszNzE3NiBiZjBlZjVmYzQ5ZjFlODc3MmE3ZmNkM2Q1Zjk5MTk1YTBmZDIzMzhmIGxlZ2FjeS10cnVuaworMzcxNzcgNTQyYTVlZmE0ODgzYmEyNjY4ZDVhMDQ0NDdmNDA3YjM0NjIzNDIxNiBsZWdhY3ktdHJ1bmsKKzM3MTc4IDJmNTJkZjE3Mzk1Mjk1YjY0MjYzMDM4YTBiYzc4ZTkxZjBmN2FmZTEgbGVnYWN5LXRydW5rCiszNzE3OSA5NmJiNDY2OTFlODYwNjMyZDIzMzk0YjNiYmNiMzgwMDVhMDY0M2Q1IGxlZ2FjeS10cnVuaworMzcxODAgMGIxODFiZjIzMGM5M2Y2NjE3YmI1MDNmYjRiMDViMTc4NzU1ZWQ3NCBsZWdhY3ktdHJ1bmsKKzM3MTgxIGNmMGVhMTk4NjlhZjVlYTY0OTdkMzU4OGE4ZDNhYWI0YmMxNDZiNTcgbGVnYWN5LXRydW5rCiszNzE4MiBiNTc2MTJmNjFiYTNmM2VkZTFhOTJlMjc1YmYwNzI1ZDE1ZWYzMDRhIGxlZ2FjeS10cnVuaworMzcxODMgNmQzYmRkMTliZWViMzk5NDZiYzY5MDgyODI3OGFjMzc1NmMyYjljYiBsZWdhY3ktdHJ1bmsKKzM3MTg0IGQ1YjA5NzYwOGM5ZGVjYWM1ZDIwODNjOGQ2N2Y4MTJiZDAwMzlmNmIgbGVnYWN5LXRydW5rCiszNzE4NSAzZWU1ZGVjMGNhMDdjY2MzNWZlMTJkMTk1NDBhYzZhM2E4YmI4NTg0IHJlbGVhc2UyMy1tYWludAorMzcxODYgMWJhNzQ2OWEzYjQ5YjRkMGQ0ZjJmZjFkNzIxZTdhMmE5Yjc4YjEzZSBsZWdhY3ktdHJ1bmsKKzM3MTg3IDAwYjg5YWI0NGNmZDdjZjQwZWYwZTQxYTRkMTA0ZDllZDMxNDE2ZDYgbGVnYWN5LXRydW5rCiszNzE4OCBhMjVhZjY4ZDcxZmM2ZDRkNzQ3YjEwMmFmMTE0YzRmMjk0ZWI3NWY4IGxlZ2FjeS10cnVuaworMzcxODkgMTc2OGFmZjkyODY0ZDY4YzhiZGU5Nzg1ZGVjNmMzMjIxMzA5ZTljMyBsZWdhY3ktdHJ1bmsKKzM3MTkwIDc4N2ZmZjUxYmYyYWFkMjgzM2E2M2VlOWY3NzgzNjA2MmEyNzA0MzYgbGVnYWN5LXRydW5rCiszNzE5MSA1NDUyZDRlY2RkZDBjNDdmZmRiMzI1MDRlZGMzODc0MTAxYWExZmMwIGxlZ2FjeS10cnVuaworMzcxOTIgZmVlNTkyZmI1NjQzNmQ5MjkxOTk4ODFjZDgwOTM3NWE4NjYxODA4NCBsZWdhY3ktdHJ1bmsKKzM3MTkzIDk3ZmNhNzM1YzhkYTZmOWRiMWE4ZTc4ZmYyYTk1NmU5MzFjZmEzZDIgbGVnYWN5LXRydW5rCiszNzE5NCAyMDg4MTUwNWMxNDI3MzkwZDdkZmFhNzU5Nzc3N2EwMjViMmE4M2RmIGxlZ2FjeS10cnVuaworMzcxOTUgZDUzOGVjZjBiYzY5ODRhZGNlZmI4MTcxNDY2NDYwNzAxYjJlNzIyMSBsZWdhY3ktdHJ1bmsKKzM3MTk2IDA2MjE3N2RlODY4NThhN2UwZmFlOTVjMjEwOWRmNWFmYTU4MGE1OWQgbGVnYWN5LXRydW5rCiszNzE5NyBmYzBiNDU3NTU3NDMyNzY1MTE4NTdhZWQzZTUwOWE3ZTMyNDVlNTBkIGxlZ2FjeS10cnVuaworMzcxOTggMDQyNDVlZjUzOTQ5YzFiZDMxMTE2NmQ0OWQ5ZTJlYzFiYzM5ZDcyMSBsZWdhY3ktdHJ1bmsKKzM3MTk5IDUwNWM5MDYzODUwZTRjNDNiMGFmNDE2Nzc3MTllM2I2NDczZmRiZWQgbGVnYWN5LXRydW5rCiszNzIwMCA4NGZiYWFhMjAzNThhNzBlZjEyZTMyNjcwMjRjNGE0ZGNhNjc1YmUxIGxlZ2FjeS10cnVuaworMzcyMDEgMDVjMTI1Yzk4NzY3MjA3NWI1NjlhM2ZkMjY0MmRlMTU2OGI1OWM1NCBsZWdhY3ktdHJ1bmsKKzM3MjAyIDAwZTYxOTg1MWE1Njk3NDhhZDQ3YmEyNjAzNmM0NTI3NzI0M2QzZDYgbGVnYWN5LXRydW5rCiszNzIwMyBiN2FjYjk3MGY1MzY1MTNkM2U0ZjEyMzE4ZGJkMGE2ZWNlMGUyMmMxIGxlZ2FjeS10cnVuaworMzcyMDQgZjMwOTkzZDA1ODkwOGViMGI3YWUzZTE5YTc5ZjViOTU4YmQwZGNjZSBsZWdhY3ktdHJ1bmsKKzM3MjA1IDY4ZTY4ZWQ0NmYwZTlhZjc0MmJhMDMxZGY0ZWRhY2U0MjI4ZTA1MDIgbGVnYWN5LXRydW5rCiszNzIwNiBkOWUwMzkzOGEzMzNiZGI5NTQyZGY1MzI1ZDc4MTljOTM3ZDYzZTAxIGxlZ2FjeS10cnVuaworMzcyMDcgZDVjMzRkYmMzNjE4MmY5ZmU1NGZhOWQwYmIyM2NiZGU4NmRkYmMwYiBsZWdhY3ktdHJ1bmsKKzM3MjA4IDBhNzlkN2E5MDQwYzc2OWFmYzVlYjkzNDRkMGMwZWViOTkxODY5YWYgbGVnYWN5LXRydW5rCiszNzIwOSBlNWI0ZmU5N2Y3NGQxNTg2YjE5MDVmNjVlYWM4ZTc1NzA2MGJlYTBlIGxlZ2FjeS10cnVuaworMzcyMTAgMWE1NGZjZjQ4ZmU0ZTY0NGZlMThhYjFhNTY3YjQyZDQ4NzgwNDUyZSBsZWdhY3ktdHJ1bmsKKzM3MjExIGRhZDgyNzc5NDc0NWNiY2NkNDExY2U4NDgwZjU1MjM0ODk0ZmNmNzEgbGVnYWN5LXRydW5rCiszNzIxMiBhZGM2NmQzMTRjNzhlZDE2ZGVhMTFlNDQ1ZThhYmEzMzY2YjUyNTA2IGxlZ2FjeS10cnVuaworMzcyMTMgZGRiYTE1NGMwZTAwMGFjNDU2YjBlNzNlNTU5ODhjNDc1ZmJhOTg5YiBsZWdhY3ktdHJ1bmsKKzM3MjE0IGM0NGYwODM0NjVmOWM1YWVlMWFhM2M2MjA2OGVmZmFjNzUwZDZlNWEgbGVnYWN5LXRydW5rCiszNzIxNSBjZmE3MmE4ZGUxNDM5OTBjYWFlYmFlYWNkNDI2ZDlhZTNlOGUzNTMwIGxlZ2FjeS10cnVuaworMzcyMTYgMTI4ZDUyODQ1N2RhNTY1Zjk2ZDlkY2YxZjY0NGE0YjMzNjVlYjFjYyBsZWdhY3ktdHJ1bmsKKzM3MjE3IGY3NDc0ZDMxYmEzZmE5YmYwYzUwNzk5NDQ2ZjliZjI3MTliZjRkNmMgbGVnYWN5LXRydW5rCiszNzIxOCAyM2RmNmNmMjk2NTBkNDVhYWUxYzZiNjJhN2Y5ZWU1NWJiMmI4MmQ0IGxlZ2FjeS10cnVuaworMzcyMTkgOTk5ZDMxY2E4YTE5ZjdkZTA3MTZiM2Y3YjgzYmIzMGUwNTE3NzYwYiBsZWdhY3ktdHJ1bmsKKzM3MjIwIGU1NjE5MmU5ZmQ3ZTdlNDkzZmIwMDI1YTZiZTFlMmU3ZTE2ZjlmOGMgbGVnYWN5LXRydW5rCiszNzIyMSAxZGZjOTdlMmFjZGZlNGVkMDcwZjlhMjhjZGZkMzc3NTFjMWEyNGUyIGxlZ2FjeS10cnVuaworMzcyMjIgOTYwNDAyNTA2OTQwNzJiYjk3ZDgwZWM0ODliMmFhOTI5NWIwZDAyNyBsZWdhY3ktdHJ1bmsKKzM3MjIzIGM5YTgyZTliN2I0ZDE4NTE2ZWEyY2MwZDI0ZThjNWM5Y2NiNGJmMzQgbGVnYWN5LXRydW5rCiszNzIyNCBhNmVhYzNmZTU0MmY5MzBjOGU2MTMxNTkzYjRmM2VjYWIwY2U3YmZjIGxlZ2FjeS10cnVuaworMzcyMjUgMDNiZTA2YmNhMTYwZmJjOWM5YjU4YTgzMTNiZTE1MzQ2Mjk0Y2Q5MyBsZWdhY3ktdHJ1bmsKKzM3MjI2IDI2OGM1ZjgzZmI4NzdhYTQxNzAzZWIzYmVkNTg4OGI4ZTQ4NGEyMzkgbGVnYWN5LXRydW5rCiszNzIyNyAyNmU0MjExODY1ZWQ3YjM5MGY0ZTk0MTEyODlhNmZmZDU2NmU3M2NiIHJlbGVhc2UyMy1tYWludAorMzcyMjggMGY1M2JhMTU5ZTU0ZTIxZWY1NTdjMDQ2ODRjOGU2NmZlZjc0NmYwNCBsZWdhY3ktdHJ1bmsKKzM3MjI5IGIxMGI3YjdhZmMwMGQ5YjA4Y2U4MzM5M2JkNDIwNGEwNTY5NDUzNGEgbGVnYWN5LXRydW5rCiszNzIzMCAzNTQwZTEwNTI1YTFhZWM2N2JiMTYwM2JmODhhMWM1ODg3YmIxNzIyIGxlZ2FjeS10cnVuaworMzcyMzEgZDBjMDFlMGZlMjQ5Njc1N2RjYjZmZjBiODVhZWUxYzNjOTg3YmQzZSBsZWdhY3ktdHJ1bmsKKzM3MjMyIGQ0MTI1NmE2ZjJjZWNjZWNkMjAzMTRiYjM0NGRkNTMxMmY2Nzc0OTMgbGVnYWN5LXRydW5rCiszNzIzMyA1ZjBjN2Y1Y2E2ZjlmMTE5NDExMWI4Nzk3NTgzNzMzMmIyYWNiMjgwIGxlZ2FjeS10cnVuaworMzcyMzQgYWY2NTAwNGY2MjJmYTBkODhlY2EwMzM3ZmFkNzA2MjVhMDYxM2MxOSBsZWdhY3ktdHJ1bmsKKzM3MjM1IGFkNDNkZjE5Nzg0YzVlNDRkMTc0ZTEzNzlhZjZjNzZkYTAzZTllMTcgbGVnYWN5LXRydW5rCiszNzIzNiBiMjBkNDU1NTg2NTM2ZDM0MmNmN2EyZTcxNTY4NDBmNzlmNWI0Zjc1IGxlZ2FjeS10cnVuaworMzcyMzcgNzZhOWJkYTMwMjhlODZkYTQ4YWFmYzU1ODAzODU5YzJhOTBmMjVkNiBsZWdhY3ktdHJ1bmsKKzM3MjM4IGFkYTJhNjZiODZhNGExN2I4NTFjMWVkMDRhNTk2MTNiMzRhOWUxMDMgbGVnYWN5LXRydW5rCiszNzIzOSAxMjQ2NDIyMjAzZTg3ODY1MmM1MDBkYTkwYjQxZTY0OWRhNDM3NmVjIGxlZ2FjeS10cnVuaworMzcyNDAgOTQ2NWZlNjc4MjIyNjY0M2Q2YzU3ZWQ1MTViMmM1ZDk3ZWZlNzY3MSBsZWdhY3ktdHJ1bmsKKzM3MjQxIGFlZTJlZTc0NWYyYzVkOThkODZjMDYyNzNlNjliYmY5NzMxMzFhZGUgbGVnYWN5LXRydW5rCiszNzI0MiA3NTUxYzcyNWZlOTZhMDFhMjQwNjkyODZkMmM5Y2U4NmY5ZGZmYTQzIGxlZ2FjeS10cnVuaworMzcyNDMgZmI2MTQwMzE4MGE4NWM0NzY5MGE1ZGI1NDk3NDc5ZjA2MDMzMDRlMiBsZWdhY3ktdHJ1bmsKKzM3MjQ0IGJmZmQ0OTQzNTRlZTcwMmExYjY5OTQzMzM2Zjk0MjJlNDQ2NDYxY2EgbGVnYWN5LXRydW5rCiszNzI0NSBmMDA1M2E2YTJiZWRkZGI5OTYzZDk3ZDljNjQ0YTBlYmJkOTVmNDQxIGxlZ2FjeS10cnVuaworMzcyNDYgM2UwNjI4OTdkMmU3YTkxMDczNDYyZDNjYzA5NzZhZWNiNjhmMTZlMiBsZWdhY3ktdHJ1bmsKKzM3MjQ3IGRmNDc3MGI3Y2FlZmI0N2I5OTk4MTRjMWJiZjdjOWFhZmJhZmFkYzUgbGVnYWN5LXRydW5rCiszNzI0OCA0Mzg1MmM5NjMxNjA0MTQ5MjcxZDQ0NzQ0OTY0MTlmYmIzOWNiM2MwIGxlZ2FjeS10cnVuaworMzcyNDkgOWYyZGRkZTkzYTYzOTVkNjJkYzcyM2Q1Y2ZjNjIwODVhYzYzYTZjNiBsZWdhY3ktdHJ1bmsKKzM3MjUwIGMyYzQ5ZWU3MjdkMGRkMzQ3N2I4OGQ5YWQwNWI0ZDk5ODcxNDBlNGUgbGVnYWN5LXRydW5rCiszNzI1MSA5NDNjMjJhN2M3MDFiMjczMGJiNWVhOWUyNmNhOGFjNjVkZTNjMThhIGxlZ2FjeS10cnVuaworMzcyNTIgMTEwMDYwNTg3MGZlYjhjN2E4YzEyNGMwMTg3ODE0YTAzODU5ZWYwOCBsZWdhY3ktdHJ1bmsKKzM3MjUzIGM5MTY4ZTc5ZWY0Y2MyZGIyZWQxZjgwZmQ3YWYwMTk4YWIzNjI3NzAgbGVnYWN5LXRydW5rCiszNzI1NCBkMTEzYzYxMzU2N2E5ZTUyYzA3YzQ4OWRiNjhmM2M2MDUwNTAzNjIzIGxlZ2FjeS10cnVuaworMzcyNTUgMjI4MTE0MGQyMGM3NWMzZTJkMDg3N2ZhYzNlN2VhNDY4NjkxNGU5ZCByZWxlYXNlMjMtbWFpbnQKKzM3MjU2IGY4M2M1YTg1NzlmODQ4YjdhMDU5YzM1YjE2NmIxNmU0NDFjMWJjNTIgbGVnYWN5LXRydW5rCiszNzI1NyBlYjliMzgwMjUzYzk5ZDIwMzViZmFmMDI1OWYxNTkxMDdkN2ZlYzVlIGxlZ2FjeS10cnVuaworMzcyNTcgMTg2YjcyNTUwZTUzNTMzZWY2MTc1ZjY0MTFmOTMyYzEyOTgxOTNkNyBsZWdhY3ktdHJ1bmsKKzM3MjU5IGIxNGY3ZWUyNWQ1MGE5MzRmZDUyY2YxNWI5OGFkZTY3ODZkOWI4MGQgbGVnYWN5LXRydW5rCiszNzI2MCA1MzQ2OTNiYjAxMGJjMmY5YmU2N2MwZDEwMmIzMWU3NWNmZjYxODJhIGxlZ2FjeS10cnVuaworMzcyNjEgOThjODAxN2U4NTM1YjkyN2VlMWM2YWIzOTZhZDgyYWRkMDIwZmQ0MiBsZWdhY3ktdHJ1bmsKKzM3MjYyIGQxZjhjNjMyYjYwNWE1ZmI2MGEwYzRjN2U3ODMxOTU0OTAzMDk4NjUgbGVnYWN5LXRydW5rCiszNzI2MyAzZmE3OWNjOWRhNWRhMjkwZTEwNDI3NDRhYTk3ZTU0NjQ5NjVhZTRmIGxlZ2FjeS10cnVuaworMzcyNjQgYjk5NDUzMzVkYTI3MmMyODYzMWRlNWI5ZjBiM2I1NTkyM2MwZGM5ZCBsZWdhY3ktdHJ1bmsKKzM3MjY1IDQ3NDVmODQ3Y2ZhMTQ1MTQ1NTFkODI4ZTM0YjYzM2E3YTZjZmMxM2IgbGVnYWN5LXRydW5rCiszNzI2NiBkZjFjZDQwNzIxNzdkZDJlNTZmZWExMTRmMTM5MDc4Mjg2ZGEyOTRjIHJlbGVhc2UyMy1tYWludAorMzcyNjcgNWVkNTY0OTNmMGIwMTYwMzUzYjJjNTdhNDdlZmU5NzZiZDQ3MDVmMyBsZWdhY3ktdHJ1bmsKKzM3MjY4IDk3YzIwN2RiOTBhMWQwN2RiNjllYmI4NGY1OTJiNDA0ZTAwMWZhMGIgbGVnYWN5LXRydW5rCiszNzI2OSAyMWM3OTM0MGRlZDVkZTAwMzhlYmI3OGRiMzBjYjBmMTlkOTg3N2JmIGxlZ2FjeS10cnVuaworMzcyNzAgNDgzYzBiNGI2MzMyOGYyOWU3OWU3OTViYzhlOTgxODMxYmRiNzE0NSBsZWdhY3ktdHJ1bmsKKzM3MjcxIDZmZjFhNWJjZGYyMmQ0MzA0ZTU5ZWUxM2Y1MGMxOTFiYmNhNjUzOGIgbGVnYWN5LXRydW5rCiszNzI3MiAwNzg0NTU2ODI4NzU3MmUwOGZmYTY3MDhhN2E1YTRjYzA0MmQ3ZjY2IGxlZ2FjeS10cnVuaworMzcyNzMgOGUyM2JkM2Q1YjFhNzBmYWFlYzA4M2E3ZWRmZWRmZjA5MjFmOTQ4OCBsZWdhY3ktdHJ1bmsKKzM3Mjc0IGZjMmNlNTgwMjE2YzhkY2VlZGFlODBhZDdhMmNlMjdkMmY0NWYwMzUgbGVnYWN5LXRydW5rCiszNzI3NSAxMzZiMzg4NTY5YTBjNDYwYzYzODg5MmFhZWM5MjA3OTJkNmY5YWJkIGxlZ2FjeS10cnVuaworMzcyNzYgYzA5MzE4YjAwOTBkNmI5N2I1NWIyMDRjMjY5OGQ0YTE0NDBmM2M5OCBsZWdhY3ktdHJ1bmsKKzM3Mjc3IGUxYWIyYzEyY2Q1ZWYyNWYwZDE4OWQwYzBiNjAxOGI3NjUwZDQ1ZjMgbGVnYWN5LXRydW5rCiszNzI3OCA4MzgxZDA3M2FkMzg2YjMxM2M0ODE0NGUyYWU4YWU4MzIwZjBmYWM2IGxlZ2FjeS10cnVuaworMzcyNzkgZGM5N2Y1ODFmMjMzNDExNjQzNDhlNGFiM2RmMDY1MjliNzMwMDgxMyBsZWdhY3ktdHJ1bmsKKzM3MjgwIDViNmZiYTY0NTRhMDlhYTg3MGNlYjg4ZTM2ZWFmMzA1MzgxMGRlNmUgcmVsZWFzZTIzLW1haW50CiszNzI4MSBhZDAwZjdjMGFkMDc0MjZlZDMyMmIwN2JhZTIzMWQ1NjgwNDM5YWZhIHJlbGVhc2UyMy1tYWludAorMzcyODIgNzY3YTM4ZGNiMzAwOTQ0NmZlZWYzYmZjYzU0ZThkNjg5YTJmNjIzMCBsZWdhY3ktdHJ1bmsKKzM3MjgzIGQ5YTMzZWNiYzdmMjhhYWFiMDcxNjdhOWIyMWE1OTFhOGRlNTJhMGEgbGVnYWN5LXRydW5rCiszNzI4NCAzMGUyNzM4NDFiYWUwYjM4ZDA2OGUyYmIwZmU1Y2RlOGM1NTY2NDI2IGxlZ2FjeS10cnVuaworMzcyODUgYjZlODc1YWE1MDhiZjgyMDFkNzUzZjM1ODViOTMzMTc0ZWU3MmNiNCBsZWdhY3ktdHJ1bmsKKzM3Mjg2IDcxMDgzYTE3MjVjYmU3ODdjYmU1YjIwYzg0NDU1ODgzNzkwYzNmNjkgbGVnYWN5LXRydW5rCiszNzI4NyBiNWY2MTE4MzE3ZDBkMDE1ZGE1OTFkYTc0NDc4ZTk3MTMyNzU5YzlkIGxlZ2FjeS10cnVuaworMzcyODggNjkzMjk0M2RlNmIxZjU5YmY3NjVmOTY1ZDdmNzhhY2NkOTU1MDAyMSBsZWdhY3ktdHJ1bmsKKzM3Mjg5IDNhZmI2N2Q5NzQyYjdkY2Y2MjQ1ZjE3MWExOTRiZjdlNGUzYzk3OGIgbGVnYWN5LXRydW5rCiszNzI5MCBhYjYyZjc2Y2E4ZTJjYzM4NjVmY2VmYmVmZWJmOTY5NWI2ZDVlOTk2IGxlZ2FjeS10cnVuaworMzcyOTEgODQ4MGI3MmFhNjI0ZGEzMzg4MjM1NzRhMzMxM2I4ZWJhNjM4MGU5OSBsZWdhY3ktdHJ1bmsKKzM3MjkyIDU3NDc4YTEzZmJmNjQ0ZDUwM2RhNjZiMjkxMTFkYjJmOTYwYzI5YjMgbGVnYWN5LXRydW5rCiszNzI5MyAyMTM4M2ZiMWE4ZjI5MWNjYjk3ZDEzMjk3MWY3NDdhYzdiYWUyZDA3IGxlZ2FjeS10cnVuaworMzcyOTQgOTZkM2VmYjk0MGNmMzQzYzIxYjM5NTgyMDRjZjI4NmI4NzcwODFkNyBsZWdhY3ktdHJ1bmsKKzM3Mjk1IGNkMDcwZmZjODkyZDE0MDAyOWRkNjJiNTFjMDM1OGQyNTFhODgwMGYgbGVnYWN5LXRydW5rCiszNzI5NiA0YjcwOGZhMGE2MGFiNWQxNzJiODdiNTEzZjYzYTI1MGVlNTExOTIyIGxlZ2FjeS10cnVuaworMzcyOTcgMDZhYmRjZDU3ZmE4ZDM5YzA4Y2QzNzk5Y2NiN2YzYzQxZDIzNjQ0NyBsZWdhY3ktdHJ1bmsKKzM3Mjk4IDY4NTM4ZTEyNGVlMGE5YjNmZTYzMThmNmIwZDZjNTE0MTg3MjRmOTQgbGVnYWN5LXRydW5rCiszNzI5OSAzMDY5N2Y0NDYyODZkMDkxZTk5ZWZmODhjZWIyNDA1ZTlhODZjM2M0IGxlZ2FjeS10cnVuaworMzczMDAgODk3YTM2M2YwZTg2ZmFhN2MwNWZiZWM5MDAxNTA4MGU5OWRlZWNlYSBsZWdhY3ktdHJ1bmsKKzM3MzAxIGZhYzJhNTM5MDZmMTcwNTA2NWE5ZmQwODYzMTdhZGMxYjhjOWE1ODcgbGVnYWN5LXRydW5rCiszNzMwMiBhMjQzMjk2Nzg2Y2U3ODQwMTIwZTUzNzczZDE0NGViNWE2NDE4YzZjIGxlZ2FjeS10cnVuaworMzczMDMgNjI5MjAwZDg4MGVhMjhiYWNkYzE3NWRmMjE2YWFmYjU5MWViNDdlZCBsZWdhY3ktdHJ1bmsKKzM3MzA0IDViMzFiNGMzYjdiYWM1ZDQxYzBhMTMwYTk1NTM3MDE2NWMzOWU1OWYgbGVnYWN5LXRydW5rCiszNzMwNSBlNDQ4OWQ1NmYxMDkwMjA3NDcyOGM1YmY0ZjA4ZjE5YTI5NDU5OGM1IGxlZ2FjeS10cnVuaworMzczMDYgNGRhYTdjNzI1YTc5OGVlY2E4Nzg4MzJjNmZhMjZjNDU1MmZlOWQwMCBsZWdhY3ktdHJ1bmsKKzM3MzA3IGYyNGE3ZmEzOGY0ZjkxYmVmYjc4ZWU0ZjQ4OTRkZWZiMGMyMzBlYmIgbGVnYWN5LXRydW5rCiszNzMwOCA3YmY0M2JlODI5ZjdlN2E0ZGU0NDliZWFlZDgxN2ZkOWU2YmZhNzJjIGxlZ2FjeS10cnVuaworMzczMDkgY2FkY2JmOTYyYTFmZDY3YTQyYzE2YWQ3M2M0NzU5YzdmMmM3NGZhNiBsZWdhY3ktdHJ1bmsKKzM3MzEwIDY4OGQ5ODFjNjIzNGIxMzQ1NWE2NjlhOGZmZTU0NWQzNDY2NzhmMGYgbGVnYWN5LXRydW5rCiszNzMxMSA2NGQ0ZTc5NmIzZGYxMjZlNjQzM2YyOGEwNTY1ZmY1ZTY4YjExN2JkIGxlZ2FjeS10cnVuaworMzczMTIgNTU3MGZhZTFmMDFjZDA1M2EyZDcxY2JlZGNkNzdjN2UxOWU2ZTk3MSBsZWdhY3ktdHJ1bmsKKzM3MzEzIDMyNDY5M2VmMzIwYTU4NzY0NWIxMjU4OGFiM2NhMmExYTExNThiN2UgbGVnYWN5LXRydW5rCiszNzMxNCA4MTYxOGE3ZDQ5MGU3MWQ4MTlkNGZiOGUwZmU5Njc3ZTliNDU5NDZlIGxlZ2FjeS10cnVuaworMzczMTUgMjVmYjllNWY1ZjQ1MzMzMzA3YWI5ZWE0NTQ1YzM4NzNhZjRjMTBlYyBsZWdhY3ktdHJ1bmsKKzM3MzE2IGU4MzA5M2FiYzk1OGQwNGZjNWUzOTM5NTUzNDFmMmQ1ZTRmMmRlYmUgcmVsZWFzZTIzLW1haW50CiszNzMxNyA3YTc1MTZlNmZlYjJmNWYxM2FiNmVmODk3MDUxNWY4YjIyMjQ3Mjg3IHJlbGVhc2UyMi1tYWludAorMzczMTggM2RhYTY2MzNmMDE3ZWY0N2Y2OGZiMDA4Y2QwNWQxNWYzZDA2ZTczMyBsZWdhY3ktdHJ1bmsKKzM3MzE5IDllM2M1MmNhM2EwNGQzZjEyMWYyYjNmZGNiNzQzZWE1MzU0YjY0ZjMgbGVnYWN5LXRydW5rCiszNzMyMCA0ODcyODBjZjcxYjk1ZDAyMTlhODM1NTU5YTQwM2RjOGM4M2NiMThiIGxlZ2FjeS10cnVuaworMzczMjEgMDE2ZDcwMTZjNmM2M2Q1MDVmOTE5MDg0NTUxMmU4ODMyMzRhYTNkOSBsZWdhY3ktdHJ1bmsKKzM3MzIyIDkxYzg3Y2VhNzc2NzExNjBkYTkwMzNkNzYzYzlhMWRhNmY2ZTE3MDYgbGVnYWN5LXRydW5rCiszNzMyMyA5NDk3YzU4MTI2YmU0MDBhZmFhN2QyN2ZkYTlhNmRkNjFiYTc1YmYxIGxlZ2FjeS10cnVuaworMzczMjQgZGNlNjI0OTMzYzM4N2VjMzNiOWNmZjM3ZWY0NjU5ZmUyNjg2YTRjNiBsZWdhY3ktdHJ1bmsKKzM3MzI1IGM4ODI1YTc0ZTQyMWYxZmIzZWM5YWNhZDBkMzgzZDU1ZTY5YmMwODAgbGVnYWN5LXRydW5rCiszNzMyNiA1ODc2NjM2Y2E4YzZjY2ZiMTQwMjQ1MzVhODIyNWZiODBiN2VkNmE5IGxlZ2FjeS10cnVuaworMzczMjcgMjhlZjVmZTBiOGI1ZGUzMTg5ODQ0NGE4NzJkZGUxMWI1NjBlYmQ5NiBsZWdhY3ktdHJ1bmsKKzM3MzI4IGQ4YTI2MWE3NzAyODNiMDMxNGFkNzhlY2Q4MGQ0YjkzYjM4NjEyN2IgbGVnYWN5LXRydW5rCiszNzMyOSBlYjUxNzI4ZWQxMWYwZTMwOGZmMDU1Y2M3YjkyMWU1Yjk1ZWNmYzk1IGxlZ2FjeS10cnVuaworMzczMzAgNDc3Y2QwZjYyMmI5ZWRhZWIxZDE0ZTcyODllMjE4YzM4MmY0ZTQ4MSBsZWdhY3ktdHJ1bmsKKzM3MzMxIGUyM2NhOTRlZDhlZGIxZjFkNzMxMzhiYjAwZGNiMTE4NGEwYmEzZDkgbGVnYWN5LXRydW5rCiszNzMzMiBhMDQ1MTVhOTg4MzE1OTJlMjA4ZTU2N2VkNmJmMTEyYzExNGJiYjIwIGxlZ2FjeS10cnVuaworMzczMzMgOTI1Y2Y5YjMyODViZmI4YTM5MTdjOTc2ZmZlYjcwZTI4ZWM3NjIxMCBsZWdhY3ktdHJ1bmsKKzM3MzM0IDc0NzNhMTk1ZDIyMzEyMjM4MjBkNDkzMGIyYjdkNDQ0YzJjOTgwNjMgbGVnYWN5LXRydW5rCiszNzMzNSA0MWRiZWU1ZWQyOTU4NmNiOTg0M2YwYzEwZDhlYzQ3MDk2ZDkzNDVkIGxlZ2FjeS10cnVuaworMzczMzYgMzY3NjdmZTI0MjUyYjE0ZGExNGMwNTMxOWE1MzMwNDE3MmM1YmY3OSBsZWdhY3ktdHJ1bmsKKzM3MzM3IDNmODZmMmJiOWI1NmU4NDczYzQ4MjA0MjNkMjI1ZmU1YmU2Njk5NWMgbGVnYWN5LXRydW5rCiszNzMzOCA3ZmQyMmVjZGM5ZGIwOTAzNTBkMjRkODc2OWEwZjI2MDY1ODdlNjA5IGxlZ2FjeS10cnVuaworMzczMzkgNGQxNjc4NWJhNWRjMWM0YmZkN2IxYTUyMTM1NWNkMjM2ZTcwY2E3OCBsZWdhY3ktdHJ1bmsKKzM3MzQwIGU4MDhjZDMxZmJkYzZhMDllYTFmMzFmZjExYjdlNjUzNGIxYzRmOTYgbGVnYWN5LXRydW5rCiszNzM0MSBhMjIwMDczNTM2ZDY5YTc1MmU3YWRhODI1YzMzZWQ0OTYwMWExZWJiIGxlZ2FjeS10cnVuaworMzczNDIgMWIzYWM2NzRhNTdjYmZmYjMzZGM2Njg5NzgyMWE5ZjEyMDlhN2FhYyBsZWdhY3ktdHJ1bmsKKzM3MzQzIGI4N2VhYTQ2YzljYmYxZGU1NTc2YTAxZDc3ZWU2NGQxNzBlMmZmYmYgbGVnYWN5LXRydW5rCiszNzM0NCA1MzczYTVhZWI4MDAyMmIzZWQzMGViMzA4MjgzNjQ4MTViY2E3YmI1IGxlZ2FjeS10cnVuaworMzczNDUgZWFjZGMyOTYwNmQ4MTQ0OTJlNzgzYmJkNjllMTdiOGY4ZTU0ZGVjZCBsZWdhY3ktdHJ1bmsKKzM3MzQ2IDI2MjM2NjhjNWZmNWI0ZDYwODZmYWY4YmY3MjM5OGM5MGYyZTg2OTIgbGVnYWN5LXRydW5rCiszNzM0NyBjOTNkMmJlYzY4YmVjNDhjNWRhNjIyN2RlYjA5YWJmNDc3MDYwNmZjIGxlZ2FjeS10cnVuaworMzczNDggMThjN2MxN2NjZjg2MzE1NzU0ZmZmNjlkZDg3NmQwNjhlZTEwYjcyMCBsZWdhY3ktdHJ1bmsKKzM3MzQ5IDgyM2Q2NDViMzJiZmUzZjM2ZjRjOTY3MGU3ODFlNGNhMWJjMjIwYWEgbGVnYWN5LXRydW5rCiszNzM1MCA1M2MxMzU3YzljNjNkNTRlODJiYmI1MGZjNDlmOTAzNGYyMmZiMTE5IGxlZ2FjeS10cnVuaworMzczNTEgY2ZiMmY1ZTA5NzQwOTM2Njc3MjRmZjY1MzgxZGIwOGM0NjAxODRlYiBsZWdhY3ktdHJ1bmsKKzM3MzUyIDcxZWQ0YjM1ZmRjNDg4NzZkMWFiZTkxMzljOGU4NmU3MWU5OWY0MDAgbGVnYWN5LXRydW5rCiszNzM1MyA0Y2IxMDE2NTI1YjdkZWY1YmQ2NjlmNzIwYmFjYWI1ZWRiODBmZTcwIGxlZ2FjeS10cnVuaworMzczNTQgNzM4NWJhMjY4MGViNzFiZjc5ZmM1ODVjMjkxMWM1NTZlYzkzZTIzMiBsZWdhY3ktdHJ1bmsKKzM3MzU1IDBjMjk5Y2FiZjRmMDZjODQ3ZGE1MjQzYjY0ZWIyYjUwMjcwYzE3ZGIgbGVnYWN5LXRydW5rCiszNzM1NiAyOTRkMzcwZTQzZDE0ZGQ5MTU0YmM3ZWUyOTFiOWRiNDRkNTg3ODRhIGxlZ2FjeS10cnVuaworMzczNTcgNDMzNjA2ZTk1NDZjMzViOGU2YjgzZTg2YzY4OThmMWMyNGQ4NWU3OCBsZWdhY3ktdHJ1bmsKKzM3MzU4IGQ5ODRjYjdlMjM1MjM2ZmE3ZmY2ZTYwNjI4NTMwYTAxZDU0YTRmMjQgbGVnYWN5LXRydW5rCiszNzM1OSAyZDZlMTg1NDA4MmU5NDg1NDAwOTQwM2NkNTYxOWJlMDdmOThjYmYyIGxlZ2FjeS10cnVuaworMzczNjAgOWUyYjk0YTNiNWRjYzBmMThmYjkzZDVkZDBmYjQ0NWQ5ODE2YmQzNSBsZWdhY3ktdHJ1bmsKKzM3MzYxIGMzYWI2ZjQwYjZlOGJiMmFhMzMxODY0NDgxOTVlYTE5ZGZiMjI3ZTcgbGVnYWN5LXRydW5rCiszNzM2MiBhYmJkYmJhNTZhOGI3M2QwMzVmODQwYjVjNzczNjkzZjU2MTAzZDdiIGxlZ2FjeS10cnVuaworMzczNjMgYTRkMzY3M2JjZDY2NDczMDY4YjJlZWE0NjM0NzE5MmZiMGYwZGYxNiBsZWdhY3ktdHJ1bmsKKzM3MzY0IGRhMWRhMzMxZjY0ZWY4ZWRiZjk1YmU3MWEzNTk0ZDY2ZjZjMzlkNmEgcmVsZWFzZTIzLW1haW50CiszNzM2NSBhZjliZWRkNWE4ZTcyMTA2N2UyNjRmY2JhMjc0ZTBkOWE4OGZiYzRkIGxlZ2FjeS10cnVuaworMzczNjYgYTcwYjNlZTJlMzBiODlmNTliMDg4MzA4YjViNGFhYTRjMDEyYTUwMCBsZWdhY3ktdHJ1bmsKKzM3MzY3IDQ1YzU3NDJjMWUxM2NhNGIzZWI0ZmNhOTgxYzNkNjBkOWY0MGMxZmUgbGVnYWN5LXRydW5rCiszNzM2OCA3OGMxYzAzNzc5NjM3ZmM2NDA2MmRiZmQyMDNmYjk2N2Q3ZmUwYjQ2IGxlZ2FjeS10cnVuaworMzczNjkgY2MwYWUwMzc0M2I4ZTJkYTM5MjQ1MDhmMDUyZjk5YTM4ZGIxYzgxOCBsZWdhY3ktdHJ1bmsKKzM3MzcwIDRiODE5OGE3NDg3MzEyYjg5NTM0YmZlYmY5ZDg1NDBhNWExZTE1ODEgbGVnYWN5LXRydW5rCiszNzM3MSA3MjVjNDQ0MjFhNDJmNTliNzllMzgyNmIyYTAzZjRkZmM4OGRkNTFmIGxlZ2FjeS10cnVuaworMzczNzIgOTRmNTAwZWJmNjBhNDVmNmU1OGNkMTE1ZTRkOWQ4MDE3ZmNiNmRmZSBsZWdhY3ktdHJ1bmsKKzM3MzczIDFmNTQwYmY5YTliNDAyN2JkODJjY2Q2MjAwNWU1ZDRkZTBkNGEzNTAgcmVsZWFzZTIzLW1haW50CiszNzM3NCAzMjIxODRlZjc2MjJkNjdmM2EyMTA4ZDI3ZDAyYzQ5Zjc0YjczMTJhIHJlbGVhc2UyMy1tYWludAorMzczNzUgMDNlZGI2M2FlMDcxOGY0ZjVhYWIwOWQzZjU4ZjljMTUzNGU3OWIyZCBsZWdhY3ktdHJ1bmsKKzM3Mzc2IDExZDQ1MDBiZTZmYTQxOGU1OWYwMmI1YTVjY2M0YzBhMzIwYzAyNmYgbGVnYWN5LXRydW5rCiszNzM3NyBmNDY0MDgxNWU1YmI1MDBhZDMzNzgxNTdjNTE3NDQ4Nzk3ZmYwOGUyIHJlbGVhc2UyMy1tYWludAorMzczNzggNmIzZGE0N2JkZGQ2OGE0NDVhMTcyN2RkNDc1M2IyOTgyZDBjNjcwNCBsZWdhY3ktdHJ1bmsKKzM3Mzc5IGE3NzI1N2U1NDk5NmFhZjVlYzJlMDEyYThhZGViZTljNjg3MGMzOTkgbGVnYWN5LXRydW5rCiszNzM4MCBlOWU2NWVmOTQ2ZWNhZDI2ZDc4NzcwYmVjYTI2ZWRlODA2Y2U1Yjg1IGxlZ2FjeS10cnVuaworMzczODEgMzAxMjY1YjgwYzQxNDQyY2JlMjhiMGYwNmMxM2U1NDY0MWEwNDAxYSBsZWdhY3ktdHJ1bmsKKzM3MzgyIGQ1Mjk2MTU5ZjExY2Y0ZGE1MGY0NWYzZTYxYTM2YjE3OTNjODg4YzYgbGVnYWN5LXRydW5rCiszNzM4MyAxMzlhNDAxMmJlYWRhZmM5MzgzZTA1OTIyNjUxOWE2Yjc0NjhiNGJkIGxlZ2FjeS10cnVuaworMzczODQgM2UxN2FlZDIzMjRjMzE3YzAxZGZlODAyYWY0ZTE1YmM0N2ZhZmFlOSBsZWdhY3ktdHJ1bmsKKzM3Mzg1IDU1ZWNhN2NkMzUzMWRjNmEyOGQ2NDc4ZjQ5NzNiYmU4NzNlYzAxNzIgbGVnYWN5LXRydW5rCiszNzM4NiAwNmYyODIzOGRmMzExNTljMjZhOGNhNGU1NTgwYWEwMDE3ZTgzYjEyIGxlZ2FjeS10cnVuaworMzczODcgZDgzNjcwZjI0ZDVjYzJjM2I0YTQyODE5ZmI5NDY1MmY4OWU3M2VhMCBsZWdhY3ktdHJ1bmsKKzM3Mzg4IDMwZDQyOGY5OTJmOWE5NzBhMWE1YmExYzI2MGM2Y2U4OTQ2MTljNDkgbGVnYWN5LXRydW5rCiszNzM4OSBkM2Q2ZDQyMDA5YThjNDdhNTg5OTJiNThjMWM2MTc4Y2EwZmI1ZmQ1IGxlZ2FjeS10cnVuaworMzczOTAgMTc1ZWVlMDljYjk4MTgwYWI4OTlhYTgwY2RhNGY2MTE0OGUxM2MwYiBsZWdhY3ktdHJ1bmsKKzM3MzkxIDE4MDlhYmQzOTM0MjYzNzgwMDRkOTEzNDcyMDVjMmZjOTVkMWM2YjggbGVnYWN5LXRydW5rCiszNzM5MiBhM2ZiNWViY2EzMGQ3MWQ2M2ZhNmM3OTQ1YTBlNTU0ZjM1MjdjY2ZmIGxlZ2FjeS10cnVuaworMzczOTMgMjVlMDdjNDRlNWQwNWIxOGVkODBkZGUwOGNhNDU4MzMxYjk0NDlmNCBsZWdhY3ktdHJ1bmsKKzM3Mzk0IDhmNjRhODRmYThlNmJlZjcyY2E4ZmViZmViZWQ0ZjU1YWNlM2ZlMjAgbGVnYWN5LXRydW5rCiszNzM5NSA1YWM4YWZkOGQ5MDQwNjU2OThmMWQ4NWYwOGIxYjQxZGVlZWJkOWJlIGxlZ2FjeS10cnVuaworMzczOTYgNjk1ZTViYjA4MzgyMzkzZDkzNTUwNzE3MjIzYmEwZmMzYWU3ZDIxYiBsZWdhY3ktdHJ1bmsKKzM3Mzk3IGU3ZmE3YjVjOTQ0MWMzOWQyOGNjZTVkY2ZlNTRhM2Y4ZWYxMjFiOGEgbGVnYWN5LXRydW5rCiszNzM5OCBmZTI0MmY2OWE5ZDMyODIyYWYzZTAzNWUyZWY0MjJlOWJjZjA1ZDM2IHJlbGVhc2UyMy1tYWludAorMzczOTkgZWNkNjU0ZGFhZWM5ZjAwYjJhNDkwYzI3Yjg4MTJkNGYyNTVkMWQ1MCBsZWdhY3ktdHJ1bmsKKzM3NDAwIDkyZGNhOThjZDQzNDMxNGY1ZjQ5MmMyYTllYzIwZTMyNTU0NWEwMmUgbGVnYWN5LXRydW5rCiszNzQwMSA1MjY0MjdlODgzZTgyNDFjY2UxOWY3YzQ3YTI3OGJmYThlMmMwY2FhIGxlZ2FjeS10cnVuaworMzc0MDIgYmQxM2E0NzhlOGQ2MWRmZGQzOTdiZjBiOWExNzFjNTI3ZmM5YmYzOCBsZWdhY3ktdHJ1bmsKKzM3NDAzIDJiNDliNGE4NWQ5ZWI0YTRjZmE5ZjI5YzIxZDY0OWMzODM5NDU2NzEgbGVnYWN5LXRydW5rCiszNzQwNCBmNjc4OWI3ZWFiNGUzMGJjY2I4NTFjNDJlYjNjODliNTU4MDQ5OWU3IGxlZ2FjeS10cnVuaworMzc0MDUgNzgxYWVmOTc0NDYzODhiMzhmZjQzZDQ3NDEwMjc4ZTk2YmQ4ZGNmOCBsZWdhY3ktdHJ1bmsKKzM3NDA2IGQ3NGRkY2ZmMDcyNDQ3NzY2NTRlMjNhMGM5MWZjYzRkYmY5Y2M4YjYgbGVnYWN5LXRydW5rCiszNzQwNyBhM2Q3OGQ2YmNhNTE5MjQyMzdjMmQ0OWNjNzc0MTZjNTlmM2VhNzhkIHJlbGVhc2UyMy1tYWludAorMzc0MDggZDYwNzFhMDViYTg0YWY5YmY3ODAzY2I2M2FhZGJiNDAyMmUyZmNlMiBsZWdhY3ktdHJ1bmsKKzM3NDA5IDZkMDU1YTI3NWI0YmQzOTVhMzA2ZjY0MjM3MDJlZjdkOTYxOGE3YWUgbGVnYWN5LXRydW5rCiszNzQxMCBiZjY4NzMxNjUwNzk4NmJkMjNiMzQ3NjYzN2EwYTYxN2QwNGM3YWE2IGxlZ2FjeS10cnVuaworMzc0MTEgNzAyMzY3ZGEyYzcyYmY0MmU1ZmEzOTM4MDgzNTY3OThmNWM3Y2YwNCBsZWdhY3ktdHJ1bmsKKzM3NDEyIGQzNzZmZTg2MmIxODg1NGQ3MmRiODQwNWUxNDI1MGFkMGIxYjNkMWMgbGVnYWN5LXRydW5rCiszNzQxMyBlY2FmMGU4ZmE3Mzc5ZTkxZGMzODcwZjM3NTNiNzhiOWNmOTJjZGY4IGxlZ2FjeS10cnVuaworMzc0MTQgNjZiNTZkNTZlNjgwZDRiMDU1ZDg1ZjZiNjNlM2Y5OGMwNzczNzQ0YyBsZWdhY3ktdHJ1bmsKKzM3NDE1IDdkN2FjNDA0YzgwNDlmOTMyMDJjOThmZDc5YzBhN2RjMWIwMDAyM2IgbGVnYWN5LXRydW5rCiszNzQxNiBiZjlmOTE3ZWU0ZjlmMTQwMGQxZjU1ZDJkMDRiMDM5MWI3NWRlNWZjIGxlZ2FjeS10cnVuaworMzc0MTcgYTZkYzE3NmM1ZDEyOTIwMjJiMTcxOGM4OTAxMzAzODNhZDYzNjVlZCBsZWdhY3ktdHJ1bmsKKzM3NDE4IGE1NzcxM2ZkZWQyM2IzNWJiZDRkZjRmNjYxMzMyZDUzMDE2NDRkMjkgbGVnYWN5LXRydW5rCiszNzQxOSAxNWE3Y2MwMGM1YTE0MWQ3Yjk4MDc3ZDYyMjBkMTBkZjY4NzU1NTczIGxlZ2FjeS10cnVuaworMzc0MjAgZmQ5MzQ3NzhmNGI0NTFlZDBlZjI5YjIwNjA1NDA2MzlkM2ZmN2VhZiBsZWdhY3ktdHJ1bmsKKzM3NDIxIGUxMmNhNWNkZjc0MTA1ZGQ1MTRmMGEzOTliYWFiZTRiMTJjYjBjODcgbGVnYWN5LXRydW5rCiszNzQyMiBmMmEyY2VkMWZkNWRjYjAzZDE2YjI0NmJkZDYyM2I0Nzk1MDQ3MGM5IGxlZ2FjeS10cnVuaworMzc0MjMgYmU4Y2ZmNGExZWNhZGM3MjU0NDMzYzg0NjNlOGI0YzQzNzhmMjZlMyBsZWdhY3ktdHJ1bmsKKzM3NDI0IDk3Y2I5ZWVhMjEyZTIzN2JhZGQ2OWU1NjM2MjY2YTQwMWU4M2FmMWMgbGVnYWN5LXRydW5rCiszNzQyNSBhNzYxMjYwMDM5OTI1MTllMzYwN2IzYWI0M2Y2MGNlNGQ3MmE3YzExIGxlZ2FjeS10cnVuaworMzc0MjYgYzM5ZjgzZmRkNGQwMzIzZDA3NGVjOGM4ZTk1MmM4ODdkY2VmOGE5NSBsZWdhY3ktdHJ1bmsKKzM3NDI3IDhjNmZjODc3MTI2MDQyMTExZjQyZDQ4MGJiYTBiODhkOGQ3YmNhZjUgbGVnYWN5LXRydW5rCiszNzQyOCA1OTg0MWM4MTlmNGM5NzVkMDMxZmNlNGVjMDkxMDAzOTE2ZjYxZTliIGxlZ2FjeS10cnVuaworMzc0MjkgZjI0NmQ3NDY0YjVjOGE0MzE2YTk1MTRjZTk4NDYxNWU3ZWEzYTVmMCBsZWdhY3ktdHJ1bmsKKzM3NDMwIDk2OTJhZjAxYzFhODM1YWMwNDVhNGQyNDQxYjNkNTUxNDVlMDlhMjUgbGVnYWN5LXRydW5rCiszNzQzMSBjNGVhYzZlOTAxNjE0YjY3MjdhZWFjNmY0MDg4MDU1ZTRkZjNjNzU1IGxlZ2FjeS10cnVuaworMzc0MzIgODVkYTA4OGU3YThiZmQ4ZjdlMWNmNjBmZmQ5ZTIyYTc3NDRjMmU0MiBsZWdhY3ktdHJ1bmsKKzM3NDMzIDNiZDkzYjgxNDAzMTk3N2JhMzM4NTY3OGJmNDdjNDU3NThmMGUwNTYgbGVnYWN5LXRydW5rCiszNzQzNCBjMzdlMjA3NGE4YzU0ODU5ZTY3NTI3N2YwN2NhYWFkNDFlNzdmNWFkIGxlZ2FjeS10cnVuaworMzc0MzUgYTU2ODJiYzczZTA0ZjYwNzZjNTc2OTg0ZGIyNjQ5N2M2NTgyMGE2MiBsZWdhY3ktdHJ1bmsKKzM3NDM2IDk4NmE1YjU2OWFkZWRmZGY4N2E0MTFlNDY3NDM2ZWI3MzM0OTYzZDggbGVnYWN5LXRydW5rCiszNzQzNyA1MGI2Zjk0YTM4YTc3NjczNmZmYjMxZGRmZDYyOTk4MGE0Y2YxNzEzIGxlZ2FjeS10cnVuaworMzc0MzggZTQ3OGViZTFjYjMxNmM4NGQ4MzRhNDBiMTQxZjA3YWQxZTUyMzk4ZiBsZWdhY3ktdHJ1bmsKKzM3NDM5IGYyNzU4NGQxMTNhZjNlMzgwNDIzZWViYWQ0MWY0ZjJlNmVhNDczNGYgbGVnYWN5LXRydW5rCiszNzQ0MCBjMjhmZmJmYjBhZTkwOTI5MjVjNTBmYjRhNTY0MGZjNWVjYzliMDFhIGxlZ2FjeS10cnVuaworMzc0NDEgMzFiYzVmMGY0Y2ZjYzlmYmNlNGYwNDliYWExYzQ1ZWQ4ZWQ4OTZiYiBsZWdhY3ktdHJ1bmsKKzM3NDQyIDMyNWE4OGM2ZWU3ZDVjZDc2N2ZjOTBmZTEwZGI5ZGU0OTQzODUyZjMgbGVnYWN5LXRydW5rCiszNzQ0MyA4YTVjODdmNjg1Y2RlOWNhMTQ3M2M5MGRkYjEyZjI2MzIyMmU1M2I1IGxlZ2FjeS10cnVuaworMzc0NDQgNzc2NjBlYWVmMjRkYzRhMWNhZjUzOTc2ZTVjNTY2MTUxMTc5ZTNlOCBsZWdhY3ktdHJ1bmsKKzM3NDQ1IDYxM2E1NTMzODU0YTBkNDFiMzZiNGFiZDU4ZTQzYjc1NTMyOTEwYmEgbGVnYWN5LXRydW5rCiszNzQ0NiA4MDg0MjhjNTYwOTY4NzY0MzIxMDc1ODRiZTA0YzNjNmZkYWE0NGZmIGxlZ2FjeS10cnVuaworMzc0NDcgMWI2YjEwNDJjZjQ1Njk1NjU1OGQwZTZjODI4NjhlMWQ3NjRkNTc1NyBsZWdhY3ktdHJ1bmsKKzM3NDQ4IDJiYzIzNTMyNjMxNjBhNDhhMDUyYThhNzZhNWQ0YmNiNzc5ZDFhNmYgbGVnYWN5LXRydW5rCiszNzQ0OSBkYmRjNDU1NjRkMjQwMzhhOTA1NzcwZmEyNTU5YzQ1ODM5OTRkYmMzIHJlbGVhc2UyMy1tYWludAorMzc0NTAgNzkxOWNhZGViOTFkZDdmNGFmYTkzYTEyNGZhNTdiOTc5YmJmMzBkOCByZWxlYXNlMjMtbWFpbnQKKzM3NDUxIDE0MDgxZWE2NTZiMmMwYTE3YzAwMWE2N2VlYTM2MzQ1MTEwYmExOGIgbGVnYWN5LXRydW5rCiszNzQ1MiA2OGQxMWU0MzlhMGI1YTQzMWJlZjhhODVhNzViMzkwMmMwYjBhZTA0IGxlZ2FjeS10cnVuaworMzc0NTMgMjMwMzZjN2FmNjg3NmVlMjE5ODNhODlmYTI1N2EwODY2NGVkM2E1YSBsZWdhY3ktdHJ1bmsKKzM3NDU0IDhmNGJlZDk3MGZmOTUxNDU2YmI0ZmNhZDMyMzgxMWM1ZGI3MjQ5NTEgbGVnYWN5LXRydW5rCiszNzQ1NSAwNzc5NTRkNDFjNTMyNWIzZGQzYzk5NjU3MmIwNTg3MWM0YmM4ODNlIGxlZ2FjeS10cnVuaworMzc0NTYgMmY2NDE5ZDAwN2E5Y2I4NjQwMzc4MjI1OTZlN2VlMThhNDAwYjUzZiBsZWdhY3ktdHJ1bmsKKzM3NDU3IGI0ODQ3NGJhZDc2ZmNlOWM5MTNhNmJlMTJhMGFiN2I1ODg0MzRlMzAgbGVnYWN5LXRydW5rCiszNzQ1OCBlOTM3MGJjZjAyYWRiZjNiMjYzNTZhNjM1MjFhYjQzMjRiMTI3NDU3IGxlZ2FjeS10cnVuaworMzc0NTkgYTc4OTVhZWYxZWU4MDFkODg3YWNhMjQ3MzdkY2I1ZmNmN2UzYTQ3NSBsZWdhY3ktdHJ1bmsKKzM3NDYwIDBjMzJmMDFjY2Q5OTdlOGY0NTVmYmZmZTRhMWU0ZTIzNTYwYWVhNTQgbGVnYWN5LXRydW5rCiszNzQ2MSAzNTViMTVlNGE0ZGEyMzI5YmI4ZmY2OGQ5NDVjZDlmNjhiNmJmYmFkIGxlZ2FjeS10cnVuaworMzc0NjIgY2YxYWFhN2U0MDA1NWQ5Yzg1ZDFkN2FkZjViYWUwZjI1YmQyNTQ2YyBsZWdhY3ktdHJ1bmsKKzM3NDYzIDMyZGYxZDA1Y2IyZDk2Mzg1NTg2MGEzZGRjZWUzOTZhMWUxM2Y3M2QgbGVnYWN5LXRydW5rCiszNzQ2NCA0YjU0MTZiMTg0NjY0ZmVhOGRlOTJmNjc5ZTMzMjA0NjIxYTNlMzViIGxlZ2FjeS10cnVuaworMzc0NjUgNzUxMTU4NWYyZTZhNDZhNmM4OWJlNWEyZTNkN2ZiOTExNDMwOGEyMCBsZWdhY3ktdHJ1bmsKKzM3NDY2IDdkNjY3OWVlMzlmOTBiYjY2YjgxNjY2YTc5MWQwNDQ5NTQzZjdiYjMgbGVnYWN5LXRydW5rCiszNzQ2NyBmYzNlODk2NDM4ODg5MDJlY2NhZDJiMmEyMjM1MzZiN2E2MWZlYWQ0IGxlZ2FjeS10cnVuaworMzc0NjggNjQxMTUyZmI3ZDg4Mjk2ZDJiYTNkZTNhODFjZTE2ZTI1MDI4Mzg1YiBsZWdhY3ktdHJ1bmsKKzM3NDY5IGIzNDA4YTg1Yzg5YzlkMzkyOWMwMGIxYTkzZmIwZDEwNTFjMzM5YmEgbGVnYWN5LXRydW5rCiszNzQ3MCA0ZDdiMGQyMDZiYzczYWRlYjY1ZWEwMzM5NTE5MDM3NjVlZDI3OGZiIGxlZ2FjeS10cnVuaworMzc0NzEgNTRjMzNkMDk1ZTdlNDliY2RmZTI0ODA0ZTQ3NzViMzRkZDEwYzQ0MyBsZWdhY3ktdHJ1bmsKKzM3NDcyIGRiNmYyMWVlNjEzNTk3MjU0MTZmOTYzZWIxZGEzMjg3YzE1OWI4MjkgbGVnYWN5LXRydW5rCiszNzQ3MyAwODQ5ODhjMjBiNzVjZTVkMTkyYTQ0Y2NmODIzNzVmNjg1NTlmMmE4IGxlZ2FjeS10cnVuaworMzc0NzQgYjg5MjJhMzZmMDgzODNmOThjMDM3ZDAyNDNkYWI1ZDIxNmZmNjE4ZSBsZWdhY3ktdHJ1bmsKKzM3NDc1IGM3YzM5Yjc5ZTViN2U4YTVhZjM3YjZmNWFkNDUwOWQ4MzhkZWI0ZjcgbGVnYWN5LXRydW5rCiszNzQ3NiA0ZWU0OGUyZWZiNjg3OTc0NWExMzg5ZjEzNWZjMjY1OGNmYTQ1ODk2IGxlZ2FjeS10cnVuaworMzc0NzcgNzY2NGU4YmFlMTllMjFiNTQ5N2EyNjNmMDI0ZGI5MzJiMWE0MDg0MCBsZWdhY3ktdHJ1bmsKKzM3NDc4IDgzMTMxOWYxMDBkMGE5ZjBkYzIzMjFhY2YzNjIyNzQyZGUxYzlhMzcgbGVnYWN5LXRydW5rCiszNzQ3OSBiMTFmOTE2MmVkMGRkNTQ3OTM0ZWZmYTMzMzkzZDM5ODk0NTY4ZmJiIGxlZ2FjeS10cnVuaworMzc0ODAgMzFiMDg2NzBlYmRkYjUwMWFmMDQ4Nzg1Y2NlN2ZjYWRmOTRkYjQ4ZiBsZWdhY3ktdHJ1bmsKKzM3NDgxIDJiOWMxOTg3MmIwMTc2MGZhNWRlYTM5NGE0NTk2YTE5OWM2YzI2MTAgcmVsZWFzZTIzLW1haW50CiszNzQ4MiA4ZTIwZWUyZWNjMGM5ZTZlMDA2YWNlM2EyYjUwZjkwMTk2ZWU1ZGE5IGxlZ2FjeS10cnVuaworMzc0ODMgZTYzMTgwNWM3MWIwNzJmNjBkNTk0OTkxYmUxMmYwNGI2MmU1ZDIwYiBsZWdhY3ktdHJ1bmsKKzM3NDg0IDI3YWEwZTExOTMzMGEzN2ViNWFkNzY0N2ZmN2QyMGQ0NzBlYTEyOTcgbGVnYWN5LXRydW5rCiszNzQ4NSAzNGIwNzAwOGFhNzhiZTc5OTQyMWMyZjkxMjFhN2I3YTQxNDYyOGM0IGxlZ2FjeS10cnVuaworMzc0ODYgNjNmYzA1MjJhOTViNTM1NWY5MWVjOTk5NDQxMjBmYTgzOGQxZmQ4NCBsZWdhY3ktdHJ1bmsKKzM3NDg3IDhlOWRjZmUxNGQ4MTYyZTRkYTUwOWNjODc4Njk4NjA0YTc1OTFiMGQgbGVnYWN5LXRydW5rCiszNzQ4OCA1NzMwZjc3ZTM3ZTQxYjYzNDFiOWY2ZTlhMzdlNTdhMmMxNzdmMTkwIGxlZ2FjeS10cnVuaworMzc0ODkgZjA3NGRiMGMxNGE4NTNmOTAzMmU2YWMwOTE3ZjQ3MmQyODQxYTdmYyBsZWdhY3ktdHJ1bmsKKzM3NDkwIGNkNThhOWI0YmE2NjM4NjQzNzY0ZDc0NDJhMDAyOTgxYWQ1NTI0NGUgbGVnYWN5LXRydW5rCiszNzQ5MSAwYWUwYmVmMTAwMTRlNWZiODUyNzFiN2IyNjI0YjkxZTk4ZGQxZDkzIGxlZ2FjeS10cnVuaworMzc0OTIgODNhM2UyZDE5MTRhOTBhNGQzMDM3ZWMxYjQ3MjYwNjNlZTc5ZjkyYyBsZWdhY3ktdHJ1bmsKKzM3NDkzIGM4NGRiZTcxN2Q0OWNkODY0ZWJmZjQ3YThhZGRjMWE1NWZiZjYxNDQgbGVnYWN5LXRydW5rCiszNzQ5NCAwZjBkZGI0Y2IwNDM3MzQ0ODAxZTNlMmE1OTViMjY2ZDZiN2VjZjA5IGxlZ2FjeS10cnVuaworMzc0OTUgNjU1Zjc0ZWEwZjMxZjU2MWEwZTg1YzJlZjRjYTI2Y2ZjYzdlYzkxYiBsZWdhY3ktdHJ1bmsKKzM3NDk2IDIzNDQ0Y2JkZWE1NTUwYTRhNTBlMTRmOTNmMzY0ZjI4OWVkZjMyMTIgbGVnYWN5LXRydW5rCiszNzQ5NyAyNzlmMDFlNzEwNzFiZjU2MzUzNTczODA4MzY2MzFmYWZiMjhhYTdiIGxlZ2FjeS10cnVuaworMzc0OTggNmJkNGExMDU2NzE2Yjc3MmE0NzM5NDgxYzI0NWQ5YWNiNmJiOGE0ZSBsZWdhY3ktdHJ1bmsKKzM3NDk5IDgzNmU5MmNjNWM0ZmJkYjZhOWFiMGJiNzYwN2U4ZjI0M2YzN2Q4MTEgbGVnYWN5LXRydW5rCiszNzUwMCBlNWRlNjk4ZWNkNGI0ZTA1OWQ1ZWJlYmU5N2ExMWQ0ZWIyZjAwZjIwIGxlZ2FjeS10cnVuaworMzc1MDEgNmY0YmNiM2JkMjAyZTQzMGZjNzQ4ODEzOTIyODJmMmYyMGYwYTc4ZCBsZWdhY3ktdHJ1bmsKKzM3NTAyIDVlMTlmZDM2NDJmMDczZTJkMzQ5OGZiMmUxMzZmOWFkMmRiMDFkNGYgbGVnYWN5LXRydW5rCiszNzUwMyA0MDM1MGZiZTY2NWRmZjFiMmRhOGM2YWYwZGQ1MzhkZDkzMWNjZGExIGxlZ2FjeS10cnVuaworMzc1MDQgMzBjYjIwMGQ0MThjZGZlZWE4NTY5YzUxMTc2NjkzNDQ3YTQ0ZWFhZSBsZWdhY3ktdHJ1bmsKKzM3NTA1IGNkNzBmMWFjM2MyNWQ2ODYwYTk2ZTNiN2ZiNDk5MTExMTExNjBkNDMgbGVnYWN5LXRydW5rCiszNzUwNiA0ZmI4Yzg5ZjY2YTBiOTc2MjVhNmIwMGU0ODRkZmFiZjFmODNjOWYwIGxlZ2FjeS10cnVuaworMzc1MDcgOTE2MzRmM2JhMjEzYTUyYjkwMzBhNGVkNTJmZDBlOGFkMjk4ZTM3MyBsZWdhY3ktdHJ1bmsKKzM3NTA4IDAwYzM2ZTFiYzUwYmM2YjJjODc2ZmE4MDJlZGM4ZTYwZGUwZGQxODUgbGVnYWN5LXRydW5rCiszNzUwOSAwYzRmMDk1ODYzYjllZDJhYjdjMjM5OWZiZWIyYWIwN2MyNzhiOWE1IGxlZ2FjeS10cnVuaworMzc1MTAgM2Q4ZDc4MjE3NTk5OWQ5ZDU4MjJiMjVhZDE2ZDc1M2U2M2ExMTE5OCBsZWdhY3ktdHJ1bmsKKzM3NTExIDVhMjkyYTAzZWE0MTY3NzM3MDMxMDg0NzQ3OGZkY2FlYmM0YzBiNDkgbGVnYWN5LXRydW5rCiszNzUxMiA3YzUwY2RlMWU0ZmQwNWU0ODg0ZDM3MzFhZDdiYTM5NWRjMjljMzRlIGxlZ2FjeS10cnVuaworMzc1MTMgNzQ1MGJiOTNjMzk1Y2IwNjRhMTljMzc5YjQ2ZDgzNzM2ZGMzZmQwOCBsZWdhY3ktdHJ1bmsKKzM3NTE0IDQ4NmU5YzQwY2ZiOTNmZTRmMDYwMjJlMDk4MDA5N2IxMDJkN2Q3ZTggbGVnYWN5LXRydW5rCiszNzUxNSA5NDY2MTJmNjRhODMyZTQ2N2E1MWUxOTRkMzg1YzBhN2RmNmU5ZDkzIGxlZ2FjeS10cnVuaworMzc1MTYgYzU5MWZhMWQ0MzVkZjA3NTg3NGIxYmZmN2I0NmU3ZGUyOTE4OWZhMCBsZWdhY3ktdHJ1bmsKKzM3NTE3IDdlNDJhOGViYjNlZmYxMTdjYmJhNzc5NmM4YjFlMmRkZDdjNDg2ODQgbGVnYWN5LXRydW5rCiszNzUxOCBjODE5MjViNjEzZGFiMDYzNjE2MjU2NDkxYjgxZDNjNTU5NWQyMWJmIGxlZ2FjeS10cnVuaworMzc1MTkgYzA5N2FiZGI1NTY2M2UzZTRjYmZhN2U4OTAxYjBkNWZjODIyMDAzMyBsZWdhY3ktdHJ1bmsKKzM3NTIwIDBiN2UzMThlZjA5MjY1NThhY2JjOGFiNThlMTUyNTgzYWRlNmY1MDggbGVnYWN5LXRydW5rCiszNzUyMSA0NWIxOTg4ZTI2OTI0ZmJhY2IzMThjNWE1ZmE1YmYyOTBmNzA2YmE5IGxlZ2FjeS10cnVuaworMzc1MjIgY2U4MTNhNTdkNDRkM2FhZTg4YzQ5MGRhNmNjYjk1ZWIwZWQyYmZlYiBsZWdhY3ktdHJ1bmsKKzM3NTIzIDkxODk5NDY4MzhlZWNjZDlkNWJjNmE0NGY1MDQ0YWM5ZjUyNTVlN2IgbGVnYWN5LXRydW5rCiszNzUyNCAwYmZkMzVhNzZhNDRmODEyY2NhNmRlNmRmY2VhOTZlZTI2NzRjYWQxIGxlZ2FjeS10cnVuaworMzc1MjUgNjNhMDM4OWJkNWZjYTk5NjA1NjhkM2Y1YzExNzQ3M2MzZjM1NDc0MCBsZWdhY3ktdHJ1bmsKKzM3NTI2IGNjNDY4NDA1MWM0NjMzNTMwNTAzYWYyNTYyMGYwYmVjMjE5ZDAxM2QgbGVnYWN5LXRydW5rCiszNzUyNyA1NDEyMDk2ZDBmOTVkZTA4YzkyNmNjM2M2YjI1YjRkYmY0YTk5ZDlkIGxlZ2FjeS10cnVuaworMzc1MjggZTEyOTc2ZTk4ZjYxM2Y0MzBmMGJiODBiMTBjNDAxMmJjOWZkMTNiMCBsZWdhY3ktdHJ1bmsKKzM3NTI5IDVkZWY2NmYyYzlhYmVlNWYwOGVhYTI4NDQ2NzRlZmYwNDk0ZjdiNGQgbGVnYWN5LXRydW5rCiszNzUzMCBhYjU4OGNlOWU3MWZiZmUwYzIzNzg1NjUwZGFiYWNlZDY1ZTA2YTU2IGxlZ2FjeS10cnVuaworMzc1MzEgMTE4YjZmNjllM2YxNTNiNzg3OWUzNGFjNmRjZGIwYjUwYTI3MDNkNiBsZWdhY3ktdHJ1bmsKKzM3NTMyIGVjZjFlODUzNDA2YjdjZDJlZGE2OTMzMjYyZDEyYzg4OWVkYjVmYjkgbGVnYWN5LXRydW5rCiszNzUzMyA2MGJmMmFmZDczMTIyNTQ2ZWZhZjFhN2E2OWVkMDA0ZmUwYjk1YjE4IGxlZ2FjeS10cnVuaworMzc1MzQgODlmYWFjZDllYzc2OTU1MjMxYTY4MzVlYzUxNDBjZDU1MDlmNWQyMSBsZWdhY3ktdHJ1bmsKKzM3NTM1IDIyZWU5MTY0M2IzZjM0Yjk0N2QwMTQ5MGYyYWRmZTZkNDU5YTkxMmUgcmVsZWFzZTIzLW1haW50CiszNzUzNiBiMGYzYTY5M2I4NTRiN2ZmODI2NjFlNjYxYzYxOThjODI4Nzk1ZTAzIGxlZ2FjeS10cnVuaworMzc1MzcgZDhlNzRhMGI0Njc3NWRiNjg0YTg5M2VhODdhNjVmYmUzZWQzY2MwYyBsZWdhY3ktdHJ1bmsKKzM3NTM4IGQ5OWRlNjVmNTQyNTgyN2JiNWNiNzY5MTkyZjYzZDg1MjdiNjA2ZDEgbGVnYWN5LXRydW5rCiszNzUzOSBiYThlMTg1NGE4NGJhYWNmOTRlYTE2ODYyZmJhMTNlZDRlMDlkYmNlIHJlbGVhc2UyMy1tYWludAorMzc1NDAgNWFlM2ExYzgwZTNmZTc1ODljY2ExMGZhOTI4YjM5ZWUxNjc4MjM4NCBsZWdhY3ktdHJ1bmsKKzM3NTQxIDI2MmUxY2Y0MWQzNGJjNzVmOWNlODdiZjRjNGM4NmM2MDQ4MjQ2MGUgbGVnYWN5LXRydW5rCiszNzU0MiBiMzFhNTEyMDY3NzQ4NTgyM2M2ZTQxNGQ3YTA5MWQ2NGNhYjgyMjJmIGxlZ2FjeS10cnVuaworMzc1NDMgNTVmYmE4ODkzMGJjN2I4MTY2OWQwMTUyOTQyYTEzMTBlNDA0Y2RiOCBsZWdhY3ktdHJ1bmsKKzM3NTQ0IGJjYWZiNjhhZDk4NTg4MDBhNTI2MjdmYzkxMGU2MzY1MmM3NmUxNDggbGVnYWN5LXRydW5rCiszNzU0NSA0Nzg0YmZjOTlhNDFiZTAzNTA3ZGZmZjk4YmZiMmI0YjVhY2Q4OTFkIGxlZ2FjeS10cnVuaworMzc1NDYgMzdjNjVhNmIyZWY3ZjQ4MTJkZTExMWY3YjRjZTc4OTFiOGE5Yzk2MCBsZWdhY3ktdHJ1bmsKKzM3NTQ3IGZkYTM2YWYyMjZmYjJiZDk0N2Y4MTYwMTdjZTU4MWE2NTI3M2NhNjEgbGVnYWN5LXRydW5rCiszNzU0OCAzZTZmNTZlODEwNGEyYmRjM2RhMmM2MTNmN2QyZGZlNTNkMTAzZDk5IGxlZ2FjeS10cnVuaworMzc1NDkgOWEzODYyNWZhMmIwOGQ0NmU1NGFjN2Y2Mzk2NDljZjEyYTAzNTg3OCBsZWdhY3ktdHJ1bmsKKzM3NTUwIDE3MDFkYWU2NDc0ZTE0ODJmMDY1MjEzOTFlNGIxY2JiY2E1YjU0MTcgbGVnYWN5LXRydW5rCiszNzU1MSA2ODNhMmY4Zjc3MWRjNzE4ZGM3NTdiYjI0NWE5MjlhNGQzMzI2MGZkIGxlZ2FjeS10cnVuaworMzc1NTIgYWYzMDA0MDNlZGI4MjBmNGQxMWFiZTJmNjNkNDAyNjg4MDRlYzViNSBsZWdhY3ktdHJ1bmsKKzM3NTUzIGE1Yzg4ZjJlODZhM2Y0NjdmNzNkY2Y5YzNlNmUyMzhiY2Q0OTk1NTQgbGVnYWN5LXRydW5rCiszNzU1NCAzNjE3ZDFlZTI3OTdmYmU2MmU0ZmI4NmMyMzNjM2ZlNTc4ZjFlYzNiIGxlZ2FjeS10cnVuaworMzc1NTUgZDhmZmY3MDZhOWMyNWNlZjgxNDQzZjIyY2VmZDczY2ZlNWQyNWIwNSBsZWdhY3ktdHJ1bmsKKzM3NTU2IGJhOWJjZjIxNDFhMjMyOWI1Nzc4MzMwMjdkMzQ5OTdjNGQxZTQwOGQgcmVsZWFzZTIzLW1haW50CiszNzU1NyA5NjJmYTNlMjMyMTViZThmMWIyODQ5ODExYTEwZGMyODk3NGUyYzQwIGxlZ2FjeS10cnVuaworMzc1NTggYmE5ZmRjNDRjNzc4MjU2NmMzNTc2MjRjNzY4Njk3Mjk3N2FkMzgxNyByZWxlYXNlMjMtbWFpbnQKKzM3NTU5IDkyNGJiMmFhZDRmNDgxYjhiMTRhMDI4OWU4NTU4NjdlZjU4NTI0N2IgbGVnYWN5LXRydW5rCiszNzU2MCBkYzNhNjc2N2U5NjA4NDI3ZmE3NzEzMTIwNmQ5OWRlMmVjYjc2NjhlIGxlZ2FjeS10cnVuaworMzc1NjEgYWFjNGNjNjYxOGI1NGJiOGViY2I2NzA2ZTY1MjRjZGY2YmMxMTllMSBsZWdhY3ktdHJ1bmsKKzM3NTYyIDA5MGZmY2I4M2YwYWFlNDZkZGIxYmRjYmUzZDBhZDc3ZmExZDZhZTggbGVnYWN5LXRydW5rCiszNzU2MyAwYzI2ZGIzODE2NzNlMjQwNTczMmZhZWIzMGEwNTQwYWIwODVjMmRiIGxlZ2FjeS10cnVuaworMzc1NjQgNjYzMjc0MTllYjAwNDRiZmRjNTM0ODZkM2I0MjU4ZDI2ZmFhMzc4MiByZWxlYXNlMjMtbWFpbnQKKzM3NTY1IDA4Yjc2NzQ3MDY2M2UzNTY5MDgyMzM0NTgxMWE2N2ZiNTMwODY2ZDUgbGVnYWN5LXRydW5rCiszNzU2NiAzMjcxZWE2MGI4MmRjMzIxY2RiMDdhZDZlNWQxMGFhNWRiNjE3NDIwIHJlbGVhc2UyMy1tYWludAorMzc1NjcgNTRlNjUyN2YzMTUwODk4MTBjNjY5YTQxMWExZWEzYjQ0NzNiNDllYSByZWxlYXNlMjMtbWFpbnQKKzM3NTY4IDI5NWJkOGM1NWE3ODhjMzAzZjE3ZmJiZWViYjlkZjU5YTA5Mjk3NDEgbGVnYWN5LXRydW5rCiszNzU2OSA4OTEwNDJjOTRhZWQwMWY0NGZlYjEyMjcyNTBjMTM3OTZiNjcyMWM1IGxlZ2FjeS10cnVuaworMzc1NzAgNDk4MWJhNTRmNDNkODE4MTIxNjI4MzM5NDBlODlmYzU3N2FiMTc2ZiBsZWdhY3ktdHJ1bmsKKzM3NTcxIDc0MmZkYWMzZDVhZTJmZjQzNWViMGQxZTI1ZGJlYzM3MDExN2U3ZjggbGVnYWN5LXRydW5rCiszNzU3MiA0MDEzZjBhNTM4MzUxMGY4MTI0N2MyYjRlYmZkMTlhYjc5ZjYyMGZjIGxlZ2FjeS10cnVuaworMzc1NzMgZTdjN2IzYWY2MTY0NjhhMzAyYzdmNmNiYzFiNTU5ZDc1OGM3ZDNjZSBsZWdhY3ktdHJ1bmsKKzM3NTc0IDQ2MTQ0NGRlN2IxZmQwYTEzMmMwNTQ3YzA1NzBmZmJlNDk2ZWU1ODggbGVnYWN5LXRydW5rCiszNzU3NSA2NjRiMThhYTZmYzEyNGIyNTVmMGIwOTU2MDljOWE4NjkxZGUxYzFkIGxlZ2FjeS10cnVuaworMzc1NzYgYmFhMjY1M2Y3YTc2ZDk0YjgzODkwMTQyYzg0YWEyNTE5MWY1NTMzOSBsZWdhY3ktdHJ1bmsKKzM3NTc3IDUxN2U0ZWMwZGY4OWNjNTI5OWNjNTY0ZWI4N2RlNmEwODI0NDQyNWYgbGVnYWN5LXRydW5rCiszNzU3OCA2MzVkZDhhOWViZDkzYzEyMTE4YmExMGEzZmE3OGMzNzI2YzRhYWRlIGxlZ2FjeS10cnVuaworMzc1NzkgYTQ2Yjc2ZWI5MDUzYzgzZDNmODdhMjgyZmNkOGMyZTczNTE4ZjBiMiBsZWdhY3ktdHJ1bmsKKzM3NTgwIGM1NTI0NDZiN2JiMmY0YjllZjM3Yjk4MmJkMTc2OGMwZWMzZGIyMDEgbGVnYWN5LXRydW5rCiszNzU4MSBmOGNiOGYwYWM4ZjEzYTM1Mzc5MzY0Y2U3MjEyY2JiZDBiNjdkNmFjIGxlZ2FjeS10cnVuaworMzc1ODIgZTZmMWFlMTNiZTg0ZGYyZjZkNzNiZTI2ZTJkYjAwNTA2MjAzYTBjYSBsZWdhY3ktdHJ1bmsKKzM3NTgzIGYyMzRiZTE3MjgwMDBlOWNlMjM2NGJiMTcxMGQzMWMwNGIyZjczYTcgbGVnYWN5LXRydW5rCiszNzU4NCBjMmFlNDgyZmY0MmQ2M2RlYmI0ZjI5MzA1ZTQ0ZTdlYzdmZjhkZGRjIGxlZ2FjeS10cnVuaworMzc1ODUgMmM3OWI1MGFmYmFiNWUzZDgzNTBmMWIxMmRlNzZkZjViYzE2MjFiZiBsZWdhY3ktdHJ1bmsKKzM3NTg2IDc0YTU3ZTY2ODRmMzkxY2QzMzY4ZjkwZTQ1ZGMzZTMzM2RkM2NmMjggbGVnYWN5LXRydW5rCiszNzU4NyA3NjY0MTgyNGNmMDUzNTdiZmI3NGNjMjEwNjdkMTRkZDc4ZTFjYTI1IGxlZ2FjeS10cnVuaworMzc1ODggYzdmZTIyNzdkMTcxZDRmYThhNWI3MGRhYzIzZTZkYjNlZDJjYmI2OSBsZWdhY3ktdHJ1bmsKKzM3NTg5IGM5YjFmMjY5NGU5OGFhZmRmOTNhNGMyOWEwNzQ5MWQzNDE2YWVkNDYgbGVnYWN5LXRydW5rCiszNzU5MCBhY2MxOTFiNzE0Yjk5NzM1N2U5YzM4NGQxOWQ1MmZjZWUzOTQyNGFmIGxlZ2FjeS10cnVuaworMzc1OTEgMDIzNmI2NTMwYzQ2MzFjM2UwZDMzNTMxYTQwOTA4YTZiNWFiMTVkNyBsZWdhY3ktdHJ1bmsKKzM3NTkyIGEwMWJlMzUwZWQ2MTU4MWI0MjczYjYzMjBhNjJmMmRkNGUwZmFmMTcgbGVnYWN5LXRydW5rCiszNzU5MyAwZDZkNTZiMjE2NGI3Y2U4YzkwMGIyODI3NTQ3NjRlZmEwZTc5OGUwIGxlZ2FjeS10cnVuaworMzc1OTQgNDRjZGFjOWJmNzg1OWViNzdjZTZhZDY4MzRkMjAzZDNkNWY0ZjUxYiBsZWdhY3ktdHJ1bmsKKzM3NTk1IDUzYzQ2OGQwOTU1YmFhMDhkMWU5ZGJlZWJmNmMzYTNlNGUzMzczMWUgbGVnYWN5LXRydW5rCiszNzU5NiBkOTQwNGRiMjliYzY1NzdiZDQwOWE5OTViM2U3NzBkOWU2N2RkMTEwIGxlZ2FjeS10cnVuaworMzc1OTcgMzlhMTNlMzlkMjRlYjlkZTBmMGJmMjA3OWMxNDFlOTM5ODMzYjJhNCBsZWdhY3ktdHJ1bmsKKzM3NTk4IGViM2Q2MDMwZDk1MDEwNzBkYzkyNzIwYjgyZTVjYjNlNGQ4MWY0YjIgbGVnYWN5LXRydW5rCiszNzU5OSAxMzgzYzQ2OTJhZjc0ZGNhNzg3ODU2ZWQxZjU5YTU5N2ZjMjNlMjQxIGxlZ2FjeS10cnVuaworMzc2MDAgYTgwNDI4MGUzNGY5MGZlMjE0ZTA3YWQ2YzQwMzI3NWY0NTBkNzk0OCBsZWdhY3ktdHJ1bmsKKzM3NjAxIGU0ZjdkM2IwYzVkNGZlNDdmZGIyN2JjZjM3YTg3ZTBhY2Y1MzQ2MjIgbGVnYWN5LXRydW5rCiszNzYwMiBhNGY3NDdlNzIxMzgxY2Y3ZGZlNzYzNGYxYTkxNGQxNTdlMTYwMGE4IGxlZ2FjeS10cnVuaworMzc2MDMgNzYzNTUzNjMxMDFiMGExMTU1MDE4NzVhMDQ3OTg0NDA0NTUwNWM5MyBsZWdhY3ktdHJ1bmsKKzM3NjA0IDQ0ZTE3NmNjYTMzNzIxYWQ4ZDgzZjUwNzNiZjE3NDRiZmE4NWE2NjAgbGVnYWN5LXRydW5rCiszNzYwNSBkMWYwYzcwNzliODI4NzlhNTU5Mzk3NjZlOGJhNWE5YzA3NjViYzg3IGxlZ2FjeS10cnVuaworMzc2MDYgMTc5ZTQyZWEyZTljOTcxOTg4MTcxMjg2MTY4MDkzMzNjYzQwMDI0ZiBsZWdhY3ktdHJ1bmsKKzM3NjA3IDQ2ODM5ODNlODRiMzU1ZDFhZTA0MzkyMzk1ZGQyZDEwNmNkNTM3NjYgbGVnYWN5LXRydW5rCiszNzYwOCA5OWNhYmE4MTQ1NjU0Y2EzOTVjMzRmNTdkNTNmYjIyYTBjYTIxODgyIGxlZ2FjeS10cnVuaworMzc2MDkgNzRjZWI2ZmNiNDMyN2RkOGM4NWUxMDBkODg4YjM2ZDVmOWRlZmIzNSBsZWdhY3ktdHJ1bmsKKzM3NjEwIGEyN2IwMjcxNzExYmQwNWJiMDM1ZWVmMmJiOTQxOGU1NzA3ZWJkZjggbGVnYWN5LXRydW5rCiszNzYxMSBiMGVjNGM5ZDU5NWIwMGIyNjZiZDFhOTM5ZTdjYmY3MjAwZDliODkzIGxlZ2FjeS10cnVuaworMzc2MTIgYjg2YzdjNDc3NGVkZmQ4MzJlYjY4ZmM5NDk4N2UxOGNkYjE4MWQ4YSBsZWdhY3ktdHJ1bmsKKzM3NjEzIDJjYzEwN2M5NjQ2ZTJiZGIwM2YyZDBhMjViZDk3OWY2ZTRlZTM0NWEgbGVnYWN5LXRydW5rCiszNzYxNCBlYzk5M2I3MjY2MDU3Mjg4ZGU5NTNiNzk0OTI2MzgwMTQ3MTY2MWM2IGxlZ2FjeS10cnVuaworMzc2MTUgYWEyZDYwNjA0OTVhMDdiYjRmMzdhZGE4ZWFjOTc0OGMxMzQxMGY1OSBsZWdhY3ktdHJ1bmsKKzM3NjE2IGRkYzJkNmU1NDdjMTUzOTRmODNkZWU2MDRiYmZhMTVkYTQ2Yzk2ODAgbGVnYWN5LXRydW5rCiszNzYxNyA5MmUwNWI2MzQ5OTc4NjkwNmI0MWQ1YTUzYTI3ZjVmN2JlM2E1OTJlIGxlZ2FjeS10cnVuaworMzc2MTggMTBiMjU0MTQ2MjhjZGI4MmM4MGQyNjBmMTkzZTYzYTE3MzE0Mzg5MCBsZWdhY3ktdHJ1bmsKKzM3NjE5IDRmOGRiNTVjZTEyNGEyZWE3ZjhiYzEwMzQyNTc4NzgzMWMxZjk0MTEgbGVnYWN5LXRydW5rCiszNzYyMCAxOTc3NzUyY2Y4MDdiYzc4OWQ5MDBiOTNmYzE2ODJlNWJiMTNlYTFiIGxlZ2FjeS10cnVuaworMzc2MjEgOGE1MDYxYmNkNDE3OWY4MjQ4MDA4NWMwMTZkNDZmNGVhNGI1ZjhkYiBsZWdhY3ktdHJ1bmsKKzM3NjIyIGZiMjczYTgzYzc1ZmQ5MjU3MTk3ODkwNWFmNThjODAyNGVkNDlhMTUgbGVnYWN5LXRydW5rCiszNzYyMyAxMWQwMWZjNjUwZGMwNTJhZmQ0OWM3NDRjOTUwZTkzNTVlOTdlYTk2IGxlZ2FjeS10cnVuaworMzc2MjQgNDYyMTdkMDVhNDc2NmE0NjFiZjQyYzg4MGFhOGFkMTA3MGFjMjMyMSBsZWdhY3ktdHJ1bmsKKzM3NjI1IGQxMjI4MTI3ZDI5NDI1ZjY0NGVjNzkxNDNiMjI2MDZiYmVmYWMyYTggbGVnYWN5LXRydW5rCiszNzYyNiAyNmZkMDBiMzY4ZjFkNDUyZTc0YjY0MWU2NmNhMTYyZDU4NDQ5MDhlIGxlZ2FjeS10cnVuaworMzc2MjcgMTY2YmQzMzlkM2JmZDYxOWM0ZDcwNTVhZDg2MTI0MDFlZjgzODBhNiBsZWdhY3ktdHJ1bmsKKzM3NjI4IDI2YmVkZjYzZTRhODljNTNmOGY4ZmIzNWVlMTk2ZDRiYzk0MDlmZGMgbGVnYWN5LXRydW5rCiszNzYyOSBiMzA4ZTE1YmQ3ZmJhOTI1ZjE3NzczMTE2Zjk4NWRiMmMwY2IxMjk3IGxlZ2FjeS10cnVuaworMzc2MzAgMTkwN2FkNTRkMzUxY2U3N2ZhODIyYTVlM2FhMzIwNzFiZjdjYjFkZiBsZWdhY3ktdHJ1bmsKKzM3NjMxIDU1NDgyZTlkZWI2NjM4MzY0YzIwMzJiMGIxZWVjODgxNjRkMWFhYWMgbGVnYWN5LXRydW5rCiszNzYzMSA1M2NmZjA0MjgzODU1YWRmODhlZDBjMGZkMzY5ODgyN2NhODQzNjM3IGxlZ2FjeS10cnVuaworMzc2MzMgNzJjNTEzMWQ0YzRhZjBkYjM3YWI0MTUyODc4YjU4ZGUwMDBlYjYxZCBsZWdhY3ktdHJ1bmsKKzM3NjM0IGM2YWFjMDM0NzRjNWUyMzgyODZhY2RiNDJmMTRkZWRjN2RlZDFmOTQgbGVnYWN5LXRydW5rCiszNzYzNSA4OGJmNDhjMDY5ZjljMzYyNDk1YmQ0ZjZhNjVkMjYzZmVjNmIyMDg1IGxlZ2FjeS10cnVuaworMzc2MzYgYmE3NWZkYTkyMjBjMmExNTRkNjY1MmUzMDBiZjVmZGVjYTcyZDdlYyBsZWdhY3ktdHJ1bmsKKzM3NjM3IGFiMDlkYWFjNTY5MWI3OGM0OWJiNDQ3MjUyZTIyMGRlNjY1NzMyZGIgbGVnYWN5LXRydW5rCiszNzYzOCBmYmFjYmIyNjI3ODk0OTgxOWUwYjY4YzUwNTBjMGIzZTBhOWEzM2Q4IGxlZ2FjeS10cnVuaworMzc2MzkgZTE1YzE1YTRmYmU4ODE1MTExOWFlMzNiZDE1YzQzMzRiM2Q0NjljYyBsZWdhY3ktdHJ1bmsKKzM3NjQwIGM1ZDk1MWEwZTBjM2U5MGE2MjVlNTcyZTY4YjRkMTNhOTY5OWIwODQgbGVnYWN5LXRydW5rCiszNzY0MSBlNGI3YzkyM2VkNWYyNzM3ZjY2MTU2YTg4ZjY2MDFlMTRjNjU1N2I1IGxlZ2FjeS10cnVuaworMzc2NDIgZjFjMDQ4ZTc0M2UyZDgwNjBhYTg5NDBmMzJhNjhhMTFhZGI4YzE4NCByZWxlYXNlMjMtbWFpbnQKKzM3NjQzIGM2NmU2YzlmZmMyZGJkM2QwMTlhNzRkM2IxYmY2OGEwODExNTRmYWIgbGVnYWN5LXRydW5rCiszNzY0NCA0Njg4ZDJhMjczZDkwYjg2ZmJjYzMwMjNlNzc4ZWE5ZjM2MWEwZWE1IGxlZ2FjeS10cnVuaworMzc2NDUgZDlkM2I0NzVjZWIyNTg2NjNiMTMxMjFkNzQ3OWU3ZWVhZDU2MjYzMCByZWxlYXNlMjMtbWFpbnQKKzM3NjQ2IGE1MmRlOTExYjI4NDgxNDcxODIxNjljYmZjMzIyYzZmNTJmOTAxMDAgbGVnYWN5LXRydW5rCiszNzY0NyAzZmRkOTZmMGNlODY2YzVhZjY5MjFmMzY4NDgxNThmYWZjMGJmM2E2IGxlZ2FjeS10cnVuaworMzc2NDggZjE3NWM5ODM4MzczNmQ1ODdmNDM2MTc3NjBiNjEyNTRhOWMzYTU0YyBsZWdhY3ktdHJ1bmsKKzM3NjQ5IDgxN2MyNDFiZmZmZjhkZjRmMTE4OGZiYTYzMmQ0Y2Y4YjI5ZDE1NjYgbGVnYWN5LXRydW5rCiszNzY1MCBiZDE4ODhlOTI5OWY3MzVjZTcxMTk2NDljOThjN2FkNGY5ZmNmMWI3IGxlZ2FjeS10cnVuaworMzc2NTEgYjg3NzhjZjdkMGUzNzM4NzFmZWYwMzk5NzI2NDkyNzNhNzc4Nzg0MCByZWxlYXNlMjMtbWFpbnQKKzM3NjUyIDMzNDJiYzIzMDBjM2FjMmU2Y2NhNWU3ZjcyYjdhNjUwNzkyYzBiNTYgbGVnYWN5LXRydW5rCiszNzY1MyA4ZDhiMzkyMzRkZTllNmYwYmU5NzgyNzJjZmY1MjNhYTQxN2Y2YzdiIGxlZ2FjeS10cnVuaworMzc2NTQgODNhMDE5MTI4OTlmNjA0NjAwYWRhZTdhZmYxMTM2MjhjYjg4YjYyOCBsZWdhY3ktdHJ1bmsKKzM3NjU1IDZkZmZkYzMzZmM2YzVjMDFmMDFjYzk2ZWY3YTVhYmE4MzQ2MGI3MjQgbGVnYWN5LXRydW5rCiszNzY1NiBkMDYzZTRkZTU2NzYwMGVhNmM3YjdlYWQ4OGIzN2JmMTNkNDg4ODYxIHJlbGVhc2UyMy1tYWludAorMzc2NTcgMjIzZDgyMjYwNDUyYWFjMjVjODU4ODA3MTIxYTQxZWUwZDQ1MDQzMCBsZWdhY3ktdHJ1bmsKKzM3NjU4IGEyMjQzZDY2ZDQwYmRhMWUzMTk4NWM2OTNjZDhjOWY0MDAwNjVmMjIgbGVnYWN5LXRydW5rCiszNzY1OSA2OWM5Njg4MWFhYWRiNDg0ODJkMDI5NDk1OWMzZmE0NTgyYzUwZDlkIHJlbGVhc2UyMy1tYWludAorMzc2NjAgNjgxOWJhMDIzNjY3NmZlMDNjNjJiMDEwNWU4ZTFlYWZlY2I2ZjRlYiBsZWdhY3ktdHJ1bmsKKzM3NjYxIGFlYjZmZjMwODg0OGM4NzVkNWU0YTNiNTIzMzBkNzAyNmIzM2UyZTUgbGVnYWN5LXRydW5rCiszNzY2MiA0ZmVkYzUyOWFkMzJkYjk1NzA0NGMxZmU4MWM2NWEyMzM1NDc0NDU2IHJlbGVhc2UyMy1tYWludAorMzc2NjMgYjFhOWVhNmU4YWUyMGEzM2FjMGU2Y2NlYzNjMDQ3ZjI4Zjc2NzhiOSBsZWdhY3ktdHJ1bmsKKzM3NjY0IDE5OWRhY2UwMjRiYTA0NGQ0NTBkZGYzOGJlZjZkNzlhZmY1MTcyYjMgbGVnYWN5LXRydW5rCiszNzY2NSBkNDg1ZTc4YTQzZDY1ODRiYmI5MjhlMzYxNjRkNDJkNGVlZmU5YmNlIHJlbGVhc2UyMy1tYWludAorMzc2NjYgNWM4NjI0OTZhOWY2YWE4MzFkYTlmODdlODJhOTYxMGFmZGI1OTE0OCBsZWdhY3ktdHJ1bmsKKzM3NjY3IGQyZTk1OTQwNDgyNjkyYjhlOGJhNjE3MjNjMjdhZjc4NThlMjQzNGUgbGVnYWN5LXRydW5rCiszNzY2OCBlOWNiZTBhZGIyOGFlN2ZhN2FjMjMxODlhZmViOGMyZWYzMjM0MTI3IGxlZ2FjeS10cnVuaworMzc2NjkgYTllNjA1MTQwMDc0NzdmMjBjZjQ4ODI3NmRkMTU4NmQxNDI5M2Y4YiBsZWdhY3ktdHJ1bmsKKzM3NjcwIGEzZGZkODAxNTMzYjYxODQxZWQ3MWM4YmE5YTkxNGZhYmM0N2E5M2EgbGVnYWN5LXRydW5rCiszNzY3MSA0N2IzODQ1MTk3NzU3NTYwNmRlMmRiZGRhNTc1NjVjMTM1YzY4YjdiIGxlZ2FjeS10cnVuaworMzc2NzIgNTllMGZmMGNkM2Q0YzkxZTJiZmNkMzllYTYwZjY4NjVlYzkwY2FiNCBsZWdhY3ktdHJ1bmsKKzM3NjczIGQ0NDM1MDVlN2VlYzE4Yjk0NjdiNDkyZGY2ZDUyYmEyNTBlZTU4NGMgbGVnYWN5LXRydW5rCiszNzY3NCAzZmYyNTI3MTVkOTNiMDRlZmVkNmY1MmVhMWEyODgzMTBhMTI3Y2YyIGxlZ2FjeS10cnVuaworMzc2NzUgMWM2NzZlODkxYjNmOWE4MzcyYTEzZjZmMzI2OWNhMWQzMDYxNWUyYSByZWxlYXNlMjMtbWFpbnQKKzM3Njc2IGFkOTA4ODhiMTdiYzAyMzQ1ODkxZTFlZjZkMmE2YTlmYTY3ZDhkZTUgcmVsZWFzZTIzLW1haW50CiszNzY3NyBmNTQ4Njg4NTViMWNjZGFhMmE3ODE1MGJmZmM2Yjk3ZDgwZGNjMjA0IGxlZ2FjeS10cnVuaworMzc2NzggODIxNDJhMjRlODQ1YzMzYmQ5Y2YwMTA0MTlhZWVmZGUzODY2YWIwYSBsZWdhY3ktdHJ1bmsKKzM3Njc5IDBhZmIyNTMwZTk4NmFhMDZkZDYwZmIzNzAyZjQ1NzQyMzE1NDI5MjkgbGVnYWN5LXRydW5rCiszNzY4MCBiMGYwYzU3YjFlMDU1NzAyMGIyMmExOTAwYzVkMmQyYzAyZTNiZWEwIGxlZ2FjeS10cnVuaworMzc2ODEgZWQwNDFlMGU0NTFlZjExY2JlOTE4ODJlOTA0NzhmYjc2ZjI1ZmEzMSBsZWdhY3ktdHJ1bmsKKzM3NjgyIGIzYTMwZTI4NDJiOTY3NWJkM2VjYTM5ZjFhNDcwNmQ0ODIzZGVhOGMgcmVsZWFzZTIzLW1haW50CiszNzY4MyA4ZDM4ZjJmMjE1MWNjYTVhYTIxOTgwMGVhNWMwZTI2YTk2OWU4MGE5IGxlZ2FjeS10cnVuaworMzc2ODQgMmExNTMxOGM0MDM4YzMwNDdkYzljMWM4YTJhYTQ5M2NlMjFkMzZhMiBsZWdhY3ktdHJ1bmsKKzM3Njg1IGYxNDMyOWE3ODk4MTkxMjE1MDU2ZTNmNTlkZThjMjNiODhkZTljNDIgbGVnYWN5LXRydW5rCiszNzY4NiBiZjE4Y2FjYTA3MzA0MzcxNzA0ZGRhMjZhNTUzZGY2ZjMxY2FiMzgzIGxlZ2FjeS10cnVuaworMzc2ODcgZGI4NzEwZjEzNjUwODhlYmQwMGY5YmMyY2UxYzZlZDI1M2FkZDVhOCBsZWdhY3ktdHJ1bmsKKzM3Njg4IDI5Yjk0NWJjMGExN2YxYzlhOWIxYTZkZDhjYjYyMWFmNmViYmQxOWEgbGVnYWN5LXRydW5rCiszNzY4OSBhZWQyNTI2ZGExZmM3ZWQ5MzQzZDY0YzljODNhNmUzNGI5ODY4NzIzIGxlZ2FjeS10cnVuaworMzc2OTAgMjhlZjBhM2Y1N2Y2Y2Q3ODQ4YTc2ZmIyZmE5NjMxYjZkMzQwNjJjYyBsZWdhY3ktdHJ1bmsKKzM3NjkxIGQ5MzhiOWVkMzJmZmVjYWU4YzQwNDk0NWMzY2U2MmI4OWJiNGFkOWIgbGVnYWN5LXRydW5rCiszNzY5MiAxN2Q4NjYxZTdkMTNhYWU0NmNjNDBjNWM5MTg0MjY0MTUzODI4YjY1IGxlZ2FjeS10cnVuaworMzc2OTMgNmM0MTY5NTI4NGY2ZmY3Yzk0OTc3NGY1NjE1NGQxNGRiZjBjMjQ3ZSBsZWdhY3ktdHJ1bmsKKzM3Njk0IDMxNzEwMWNmZmI3MjkzNDU1MjdiZGZiMzgxM2IwZGQzZTI2YmQwZTkgbGVnYWN5LXRydW5rCiszNzY5NSA5ZmZjMzQ0ODkxYTYyNmVkYWEyNjAxZmNhZTQwNTliNjQxYjMxZjE5IGxlZ2FjeS10cnVuaworMzc2OTYgNjI3Zjc3ZTNjZWI2NTFiYTFkMGFhZDYwYzRmNTZiOThjYjY5MDU1OCByZWxlYXNlMjMtbWFpbnQKKzM3Njk3IDEwNTEyY2ViYTMwYzU1Y2U2NGQ1YTI2YTdkOTBmOWUwZGI2NDgxMDIgbGVnYWN5LXRydW5rCiszNzY5OCBlZjE0OWVhNTk0YTRjMGY0YTgxMzhmZDRiOTlmOGE3ZmYxMTgzNmNhIGxlZ2FjeS10cnVuaworMzc2OTkgOTkxZDM0OTBmNjk4ZWIyYWY4ZDM4MDU2MjUzMmQ3MjdhNTFlMjk2ZSBsZWdhY3ktdHJ1bmsKKzM3NzAwIGRjOGVjZjcyNDQ4OGMyNmY3NWQ5MDIzYmY0YWUyNjU1MTM2ZjQ1Y2EgbGVnYWN5LXRydW5rCiszNzcwMSBiZDU1ODIxMWJhNTUyYzcxNDlhODM2YzhkNmYyYmI5ODhjY2FlYjAwIGxlZ2FjeS10cnVuaworMzc3MDIgZmRjZTNkMzliZWMxNGQ0ZDQ3MDQwMTU1MmU3YWM2Njc2NjBjYmYyYyBsZWdhY3ktdHJ1bmsKKzM3NzAzIDRkZDk3YzM3YzJjYzJjMzM3OGYyYzkxNmEzN2NkMWZlYTdhZDg5OWMgbGVnYWN5LXRydW5rCiszNzcwNCA2ZmMxMDMwNmJmMzEyYmFjOTkzYzc1MjFmNjUzNzFjOTJjNWMxMDcyIGxlZ2FjeS10cnVuaworMzc3MDUgMTA1YmZlMTc2OWI3OTZjNDI3ZjVlMmZkYzZhMzAwMzdjZGY3MGU0ZiBsZWdhY3ktdHJ1bmsKKzM3NzA2IDk5M2IxMjhkNGUyOTRhNTE3MDkzNTRmYmIwMGZiNGQyZDEzOGYxMmIgbGVnYWN5LXRydW5rCiszNzcwNyBhYzRmYTk0MmY5MmU3OGE2Y2JkZGQ2YThkN2RiZmQ4NGQ3M2UwMTI4IGxlZ2FjeS10cnVuaworMzc3MDggZWQxMzkzNzA3OWRmMTdjYWMyNmM5NzA2NzJiYTQyZWNhMjNhZjNkMCBsZWdhY3ktdHJ1bmsKKzM3NzA5IDAzMmYzNDJlZmNkMjRmMjRjNjZjZTZiZmIwZWMxMzgwNzdhNDVlZGEgbGVnYWN5LXRydW5rCiszNzcxMCA3OWJjYWQxNGU5NmFhYTc3NTg5NmQ0ZmU0NDg0NzUzM2JkOGU5Mjc2IGxlZ2FjeS10cnVuaworMzc3MTEgNTUxMDk5NWVhMjZmYjVkOTQ4YTA0ZGY5NjE5ZjcwNWM3ZGRlY2I0ZCBsZWdhY3ktdHJ1bmsKKzM3NzEyIDMzOThjNWNlOGI3YTA5NjA3NGU0ZjFiOTE4MDA0ZjhhMDhlNjUzMjggbGVnYWN5LXRydW5rCiszNzcxMyBkODM5OThhNzIxYTBhMmVmMWU0MzdmM2Q2ZDhhMDQ5MWIxYWE3MjMzIGxlZ2FjeS10cnVuaworMzc3MTQgMjYyNTUzN2E2ZGZhZGQ1MzYwOGNjNzgzMjk4ZmY5YzUzOGM0OWNlOSBsZWdhY3ktdHJ1bmsKKzM3NzE1IDJlZTAzMDFiNDgzY2UyYTg0ZjdlMzliOThkYmFkYzdmYjJiYTNlZjkgbGVnYWN5LXRydW5rCiszNzcxNiA5NDM4NjJiMmI0ZGZlNTZlNThkYzUyZTZlYjBkMDg1NDFkOWQ3YTBjIGxlZ2FjeS10cnVuaworMzc3MTcgZDQxYWMxMWU5YzYwNGE2NTk2YzNjZjE0ZTNkYjgzMzQzZThkMTE5MiBsZWdhY3ktdHJ1bmsKKzM3NzE4IGVlYzMxN2VlNWMzNWI4Zjg3MjEyNWEzMWY1MGI1NGMxNThmMmI5ZDkgcmVsZWFzZTIzLW1haW50CiszNzcxOSAxY2QxOWRhYWE5ZDQyZmFiNzIyMzIwYThkOWFmY2MzMmU5MjliMGI0IGxlZ2FjeS10cnVuaworMzc3MjAgNjBjNjBkYzc1Yzc3MjY0YjllMmMyZjVmNGJkNmM2MWZlM2NmYjFhOCBsZWdhY3ktdHJ1bmsKKzM3NzIxIDZkYTA3ODczYTBlZTM3NTQ5NWRiOWI4NWZkMjk3YmFkYjNhMTgwY2EgbGVnYWN5LXRydW5rCiszNzcyMiAwZGRhZThiMGZiMTlhMzgzMjNiNDJiYzViODQ2M2NkZjE5YWQ4ZGIzIGxlZ2FjeS10cnVuaworMzc3MjMgMzA3MzI0MzQxMDdiNmNmZTZkOTI4YjQ0MDBkMzIyZTcyMDdjYWI4MCBsZWdhY3ktdHJ1bmsKKzM3NzI0IDM0NjcyODgwODlhMWUyNTg2M2U1ZDNkNzQ0MWE1NmY0M2M0ZTUzYjIgbGVnYWN5LXRydW5rCiszNzcyNSA0YTNlYWExYWEzYWZkMmY1Yjk0Y2UyZWQwYjJlOWRiN2RhYzIwZWM3IGxlZ2FjeS10cnVuaworMzc3MjYgZmFjYjVhMmY0YjUzZTk3ZDMxMmRiMzE5MDk5ZWI3OWQ0OTE1MTNhYyBsZWdhY3ktdHJ1bmsKKzM3NzI3IGI1ODViY2NmYjI1MDU0M2E2NmJiOGVmNGU0NWQxMGEzMzQxMDdlZGQgcmVsZWFzZTIzLW1haW50CiszNzcyOCA2YjYxYWYwODM0OTMzMTNiNTM4ZTUxNTRkMjc2ZjFmNTg3Njc1NTdiIGxlZ2FjeS10cnVuaworMzc3MjkgZjE5NjcxNmVhMGRiNDVkNjM3NjdmMmQzYjc3ZWNhNDFmYzEzODI0ZSBsZWdhY3ktdHJ1bmsKKzM3NzMwIDI2MzJmNDM0MDlmNDk2NWFjZWI3MTI1MzA5OTVlNGQ0NDIwY2VlY2IgbGVnYWN5LXRydW5rCiszNzczMSAwN2Q5NGExNjJjZjg5NTFlZmFkZjY4MzUxNDhiMzY3MzhlNzcyMGZmIGxlZ2FjeS10cnVuaworMzc3MzIgMzA4ZThlZjJkM2VkZjVmNTUxYmZiMTIxOThhMjViNTA1YjllM2Y3ZSByZWxlYXNlMjMtbWFpbnQKKzM3NzMzIDIyM2QyMGFmYzhiNWUxZWI4YzkzZmE2YTFkYTE5OThjMzQxOGZjZTkgbGVnYWN5LXRydW5rCiszNzczNCA4MGNhMWE4YjIzMjE2MmUwOWQ3ZDUyNjYzYTUyMTZhZWRiNTIxN2FiIGxlZ2FjeS10cnVuaworMzc3MzUgNWFmYTUyNzdmY2Q5NzkzYWUwYmYxYzhjMTY5ZjdhZDMwNjBmY2Y1YiBsZWdhY3ktdHJ1bmsKKzM3NzM2IDE4MGRjODI5ZWZmZjgxNzUxZWZiODEyY2YwZGEwNGJhZmJmNWYwOGIgbGVnYWN5LXRydW5rCiszNzczNyBiZjJkMDNkZmMzOGUyOGYxYzRjNDkxZjk3OTMwYjIyYjkyOWQ1MzM3IHJlbGVhc2UyMy1tYWludAorMzc3MzggMGRjM2Y5NzA1NTc3MDczYWMwNTBkOWUwZTEwMTM5ZmMzNDc0NDc1NiBsZWdhY3ktdHJ1bmsKKzM3NzM5IDI0ZmMzZWFhMTllMGI1ZGQ5YWNmNzlkZDlkNDg3Y2QyYmYwZjE3YTggbGVnYWN5LXRydW5rCiszNzc0MCA2MzNjYWRlYmY2OGQ0ZGQ4Y2YwYzkxOWZmNTIxNDM3NmJlYmM4YzQ5IGxlZ2FjeS10cnVuaworMzc3NDEgYThjOTc5Y2M0ZmE2NThkODI2ZDIxMDQ4ZmQ3ODFhNTIwYjAzYjI2YiBsZWdhY3ktdHJ1bmsKKzM3NzQyIGVmNTAzMGJjNWY2NzFjNGIwNDgxYzg4Y2JhOTEzMTU4NDljYWRiNmUgbGVnYWN5LXRydW5rCiszNzc0MyA2ODczNjJmYTQ3MWMzYzA5MzE3MDU2NmY1OWU0OWIzZjZiM2ZkYzEyIGxlZ2FjeS10cnVuaworMzc3NDQgOGEwOWM4MmU0MjYxMGIwZDQ5NmZkMzE4NTc5NGZkN2ZiMzQ4NThlOCBsZWdhY3ktdHJ1bmsKKzM3NzQ1IGJjMDQyMWI5NjU3YTAwNThhYTk1MGNhY2U4YzNiMDVlNzU4NWJhZDUgbGVnYWN5LXRydW5rCiszNzc0NiBhNmY5N2UwZTYzMTg5NjRjMjZjOGZiYWUwZDQwNTZjMTNhNTM1ZWMwIGxlZ2FjeS10cnVuaworMzc3NDcgNWVjYTI0OGY2MzllNDJmNDA3MmM5YzdkZjlhYmY5Y2QzZjRkM2Y3MSByZWxlYXNlMjMtbWFpbnQKKzM3NzQ4IGMxOWU4MTExMjA1OTMxNmE2ODI0M2Q3MGQzOGYwMmIwMjc3NWUzOTQgbGVnYWN5LXRydW5rCiszNzc0OSBhNTc2Y2YxYWM2YTA0ZTc4MmY3YTcxMjczMzJiNWFjODg2ZjE4ZDY3IHJlbGVhc2UyMy1tYWludAorMzc3NTAgOTc2ODYyNGYwMzVmYTIzOGZlOTU1M2Y3YzYzNWM0MDNlNDUyNTM1OCBsZWdhY3ktdHJ1bmsKKzM3NzUwIDBjYjFiYTkyMjQxYmEyOTU3NTUwNTgyOGVlZTI0MWNkMTI2ZDQ2OTMgcmVsZWFzZTIzLW1haW50CiszNzc1MSAwZDZkYmViZDhiNGEyZDA0MzM5OGEyNGMxOWUwMTY4NWY3MmU5NjQ3IGxlZ2FjeS10cnVuaworMzc3NTIgNTNhYTAxOTM3MGRiNTBhM2UwMjljNTc0NTIxMmJiNTEwNjllMTRlOCBsZWdhY3ktdHJ1bmsKKzM3NzUzIGMzMDhjNmJhMDAyZjViNWIyNDg5NzE0ODA4YjQzNDNmZmE1ODhmYTAgbGVnYWN5LXRydW5rCiszNzc1NCBmZWI0MDE3Y2JhZDQyYTc0NWMyNWIxYzc3M2RjNGE2NjExZTg3NzZlIGxlZ2FjeS10cnVuaworMzc3NTUgNzg2ZDNiOGI5YmVlZGJhYzQ0Y2ZiOGI0NGYzNWVhMTRlMWVhMjIwZCBsZWdhY3ktdHJ1bmsKKzM3NzU1IDdlMzg3YTlkY2M3OTk1NGE3NzY5NWFkZWY4YjU5M2RhMzViZTEyMTQgbGVnYWN5LXRydW5rCiszNzc1NyA4NWRiMDE2ZThkYWM2M2VlOTU5YWVkNDU1ZTkxODZiM2YwODJlMTU1IGxlZ2FjeS10cnVuaworMzc3NTggZDc4M2Q1MTcxODExOWU0MTA2OGMzODk2YzViYzk1ZTg2ZTlhY2M5MCByZWxlYXNlMjMtbWFpbnQKKzM3NzU5IDcxMGI3ZThkMmZmMmE2MGI4NjU3M2U5M2ViMzBlYjA2OTdhNmU4ZTAgbGVnYWN5LXRydW5rCiszNzc2MCBkZmI3YjA3ZGNkZWRkMDA5MmE1YmNhY2Y2MjBlZDZiMzFkMmQyZmNkIGxlZ2FjeS10cnVuaworMzc3NjEgYTUxMjlkNmFiMWNjNmE1Mzg1ZTk2MjFmOGQ3YjdmNGMyNGI5MGNjNiBsZWdhY3ktdHJ1bmsKKzM3NzYyIGViOTc5YzNmMTRiYTk2M2Q5NTQyZTMzOTBmYWZlMjc4ZjliMDk2NDkgbGVnYWN5LXRydW5rCiszNzc2MyA1Y2MzODM0MDEyOTRmYjRjNTRhM2Q3Mjc0Y2Y1NTBjZmU4ZTJjMjM5IGxlZ2FjeS10cnVuaworMzc3NjQgYWI2YjEwOGE4Y2VjODlhMjBkYjA1NzdjNDQ2MzliMGI4YTcxODA2ZCBsZWdhY3ktdHJ1bmsKKzM3NzY1IDIwODczMjk1ZTkxNjA3NTc0ZWI0ZjEwNjdjNTk5Y2IwOGE1ZmU2MjkgbGVnYWN5LXRydW5rCiszNzc2NiAxOWMyZGNjZmFmNjUzZDk2NzdhZGU3OGUxY2I2YWI1ZDk2ZDg2OTI0IHJlbGVhc2UyMy1tYWludAorMzc3NjcgMTMyODlhNzQ0MmMzN2Y1YjQ5Y2Q1NjI4Yzk4NjUxZTk2NjUxOWUyZCByZWxlYXNlMjMtbWFpbnQKKzM3NzY4IDM2MDI0ZmEzYmY0ZjRlYTQxOTNlYzZkMjlhZmZiNzZjY2RhOWY2Y2IgbGVnYWN5LXRydW5rCiszNzc2OSA4ZjhjODliYmU0MzlkMGUxODRlNGVlMWRkOGRhZTA3YTU5MWU0OGIxIGxlZ2FjeS10cnVuaworMzc3NzAgNWVkMWQ5N2I0OWExMjQ1OWEwYjZiY2E3MGRiZTkwZmM4ZjliZDExNCBsZWdhY3ktdHJ1bmsKKzM3NzcxIDdlZDg5OWI2MTE4MjgwNmM5YjE2ZDE2ZDA2NzA5YTYyZTI5ZjhmYjkgbGVnYWN5LXRydW5rCiszNzc3MiAyZmE4NzI3ODRlYjYyMDFiMjFlYTczYmY2YzkxZGFmMGFiNWE2YjI1IGxlZ2FjeS10cnVuaworMzc3NzMgYjNmZmE2NGZmNGM2NDcwMjNhMjUzNzkyYTE1ZjUwMmRkNGMxNzdkYiBsZWdhY3ktdHJ1bmsKKzM3Nzc0IDk5YjkyMDE4NjM2NzFiOGQ2OTBlZTI2NTBmZDE3NTAwNjc5NDAxMDQgbGVnYWN5LXRydW5rCiszNzc3NSA5YTg2MjQyNWE5OGExNDZjYWQ2OWExMjkzNTUzZTI5MmYyODRiOWE4IHJlbGVhc2UyMy1tYWludAorMzc3NzYgOWNlNTc2NDAxOWFlZjA0NDYxNzBkMTM0YTEyMTA1OWVjZDNhNWNjMSByZWxlYXNlMjMtbWFpbnQKKzM3Nzc3IGVhNmVmNDBkYzkyMjBmNDc1N2M0YmYwY2UxNTBkMWVkOWU3ODAwMmIgbGVnYWN5LXRydW5rCiszNzc3OCA3ZTg4YzA0MzdlY2M2MjBlYTdhZTNiODgxMWY3YjY3ZDQ2N2U3NTUzIGxlZ2FjeS10cnVuaworMzc3NzkgMDIwMTZkNWE0ZGM2YTgzNTY5ZGJiYjE4MjZjMmU2YmVmOGJlYzU0YyBsZWdhY3ktdHJ1bmsKKzM3NzgwIDI1NzE0ZTBmYzg5ZGIxM2NkZDdiYzg4MGI3YzMxZDM3Njg2MzFhNDYgbGVnYWN5LXRydW5rCiszNzc4MSA4ZTkxYTdlYWE3Yjc5OTViNjU2ZTFhMzZjMDdjZjU4MGRjMGE2MGU1IGxlZ2FjeS10cnVuaworMzc3ODIgODY5ODY1M2UwNWZjMTA5MWI1OTEwMjI4YjcyNmQyMzY0YzVlNzIwZCBsZWdhY3ktdHJ1bmsKKzM3NzgzIGQ4MmZhOTMyYjQxYmMwMzkxNjU4MTE2YmMzZTk3YjhjNTNhOTNjZjMgbGVnYWN5LXRydW5rCiszNzc4NCA3ZmQ0ZDM1MGZmODI2MmI4ZDU4NTA5N2RkNzk1NmExYjBiYWJiZDE1IGxlZ2FjeS10cnVuaworMzc3ODUgOTE3M2I5ZTBhYjc3MzQ5NzA0MGViYmI3NDIzMDcyOTFjMWEzNWM1YSBsZWdhY3ktdHJ1bmsKKzM3Nzg2IDAxOGRjYzdlZjg4N2RlYmM3YTc4ZmQ5ZGNjNmZlOTI5ZmY4YWZlZWYgbGVnYWN5LXRydW5rCiszNzc4NyA2NjJjMTU1MTA2ZTQyNWMxMDVmOWVmMmY5ZjhiMGY2ODQ5MmM0ZmExIGxlZ2FjeS10cnVuaworMzc3ODggZTQ0MDQwNDZlNTUyZjg2ZDc1YTFkYmYxZGU2ZjZhY2VmOWEzOWZhZiBsZWdhY3ktdHJ1bmsKKzM3Nzg5IDgzOTBmOTM5ZGNjMWYzY2I4MzA4MjhhZjlmZTQxMzc1MzVlZGFlMWMgbGVnYWN5LXRydW5rCiszNzc5MCA4MjllZTMyNWExOGU1Mzg3ZmY3ODkzN2IyYzM0YzM4OWY4Yzc0ZmY0IGxlZ2FjeS10cnVuaworMzc3OTEgMGQ0ZWNjMzFjZmQ4M2RiNWQ0YWQ2YzQ3OGZjMTlhZjQ2YzI5ZTQ3OSBsZWdhY3ktdHJ1bmsKKzM3NzkyIDY2MjIzYTllYmU0ODYzNTljMWY1NzdiOGU4NmVkYWJmMmU0MzgxM2MgbGVnYWN5LXRydW5rCiszNzc5MyA0ZmExZGYzYjA2MmY0OTdhMjNjNDhiNDExNmI1OGY0NjlkNTdhODI4IGxlZ2FjeS10cnVuaworMzc3OTQgNTQ4ZjM4YTU2NjY5ZTIyZjdjZGIzODNiMTFlYWQ4YjFjYjFlMjMzZSBsZWdhY3ktdHJ1bmsKKzM3Nzk1IDU5YzQzZmQ4YmE3M2YwNzg4ZDFhZGY2NzEzNzUyN2VlOWZlMGZkZjIgbGVnYWN5LXRydW5rCiszNzc5NiBlYjIzMTU0NGMxYWQ1ZTYwNTBiOTdhMDJkZjk2ZDhiNDZmODcxMTc4IGxlZ2FjeS10cnVuaworMzc3OTcgMGFlMjhjM2E4ZDI0MDY4MzhmMjg2MzNmYzI0NmI5MWJkYjFjNDI2NiBsZWdhY3ktdHJ1bmsKKzM3Nzk4IGFiNzMyMTc3MzBkYjIzMmUzZTA5ZDI2YTc5Zjg4NWQ5ZTQyOWI5ZjcgbGVnYWN5LXRydW5rCiszNzc5OSBlNGUyM2UzYTc4NDRiY2VlZjBlY2EzZTEzZjU2OTg3OWQ0NTVhM2EzIGxlZ2FjeS10cnVuaworMzc4MDAgNGRlMzU0Yzc4YTdlZmJjMDQ4NWJkZDhhMjVkYzE4MjJmMzg2ZGI4ZCBsZWdhY3ktdHJ1bmsKKzM3ODAxIDgxY2JmMDMxNTQ5YTFmOWUwYjEwOWQyMzIyMzVkNjljNmUxOTNmOWYgbGVnYWN5LXRydW5rCiszNzgwMiA1ZmJiZTgyMzNiNzYzMzM2YmExZWExYzg4MGU4Y2E2NjcyMWJmNGJjIGxlZ2FjeS10cnVuaworMzc4MDMgZGZkMDdiN2JlNDA3MmY3OTMzZjExYWYxNTEzOWYyODZkNTJlZTg1YSBsZWdhY3ktdHJ1bmsKKzM3ODA0IDQ2M2EwM2E1Y2EyMjgzZTZhYjkwM2UwMzMwMjBiMzMxOTJlNDRlNWYgbGVnYWN5LXRydW5rCiszNzgwNSA4MmQwMjU2NDEyM2RmYzJjNTE2ODI2M2YyMTMwMzY5MGE3YjUyODQxIGxlZ2FjeS10cnVuaworMzc4MDYgMzU5ZWJjNTYwOTNlN2ViMmY0NDk1Y2Y0MmY3NDQ1YjFkOGFjNDg1MyBsZWdhY3ktdHJ1bmsKKzM3ODA3IDk2MTc5YzA5NmQ2NWFkY2EzYTk2NDAwN2MxOTE1NTczMjdmZGMyZmUgbGVnYWN5LXRydW5rCiszNzgwOCA5MDQ3NzFiZWYzZjQ3ZmRiZDFmOTI3MTNiMGQ4NWVkOGM1Y2UxNzhlIGxlZ2FjeS10cnVuaworMzc4MDkgYWZlZTNjMzNhZTZkOGM3NTU5MGE4MTRlMjA3MWU4NGY3NGJjZDdlYiBsZWdhY3ktdHJ1bmsKKzM3ODEwIDhiMmEyZjdjMTNiODBkYzc0NGFiODYxNWJlMzk3MTJkYzlmZWQyZmEgbGVnYWN5LXRydW5rCiszNzgxMSBmMmNlMTViMDJiYTNmZWJiZGZlYzIxODA5M2JhMDY4NjBkNGI2MGM5IGxlZ2FjeS10cnVuaworMzc4MTIgYjk4MTliOWEwZGFkNTQyMTE3ZWVlNGVkNjcwNjAzNTQyZGEzMDhmZiBsZWdhY3ktdHJ1bmsKKzM3ODEzIDYzM2JlNDNiZWQxN2QwMzdiZmM5YTM2YjVkZTMwNTYzYjVhY2FhMzUgcmVsZWFzZTIzLW1haW50CiszNzgxNCBlYjM0NGUwM2NjNzEyNTYyZWUxMjgyZWY2MGM0MzA0MzkzNGZhMTE3IGxlZ2FjeS10cnVuaworMzc4MTUgYjRmMGFkODE1OWM3MzRkZjkxYjkwNTkyODYyNDU3YjM2OGYwNjE4OSBsZWdhY3ktdHJ1bmsKKzM3ODE2IGUxZjE0MDI2MDk0NzhhZjc4NjQ0YjUzMDcwZTJlNTI0OGVmNjcxZWYgbGVnYWN5LXRydW5rCiszNzgxNyAwZmU4YTE2YTMzNmFlYThhNDY4MWIwZGMyYmFkZDk3YjY5MDk5MWE5IGxlZ2FjeS10cnVuaworMzc4MTggNzdiMWMxNTE3NGI0NGRiZjEyMTE3NjVkNzVlMjZmZGE0NzMwM2UzYiBsZWdhY3ktdHJ1bmsKKzM3ODE5IDk0MmY4NzQzYWRmMDI3OGI3ODgyZTBlN2U3MGE3M2RmYzVkN2JiMGMgbGVnYWN5LXRydW5rCiszNzgyMCA0Zjc0NTZkMDNjYjlkZTYyMzk4NTBhNjllNjlkNjRkNWY3ZjhlNmJlIGxlZ2FjeS10cnVuaworMzc4MjEgYzg3MWVmOTY2NTVjOGQzOGJkYzk0NDMyOWQwNDkyNTNiYWQyNGY4OCBsZWdhY3ktdHJ1bmsKKzM3ODIyIGRjODA0NzZiNzgyYjc5MGVjZGE0Mjc2MDgzYmFmYWJlMGZlZDM5MTUgbGVnYWN5LXRydW5rCiszNzgyMyBjYWRkM2U4ZDM0OWYwOWQzZWJiOTIxZTRiMmEwYTc1NGI2MDkyMmM0IGxlZ2FjeS10cnVuaworMzc4MjQgOTU4ZGM4YjdhODI2YTE4MDVmOTVhZjVmZjBlZjNjYzI4MDJiNTc0MSBsZWdhY3ktdHJ1bmsKKzM3ODI1IDQzNzUwMDZlNWYwNzlmNzJiNmM5Yzk1YjM4ZjQ0YzMyMjBkNDczNGMgbGVnYWN5LXRydW5rCiszNzgyNiBmYmYzMDY0NmNkMTM2NDFmYjc5OWI1OGYzM2U0N2RiYjU0NjZkYmNlIGxlZ2FjeS10cnVuaworMzc4MjcgYTkxZTkyYjk4MmFjYWZmMDM4YjdkNTgwMTA5Y2NlNjcyZGY3YTE0NiBsZWdhY3ktdHJ1bmsKKzM3ODI4IDg5M2Q0NjU3NjczN2FiYmE4Y2NjM2NkNTY0YjBjMzRkMDZhZTZlN2YgbGVnYWN5LXRydW5rCiszNzgyOSAwNmVlNTNhNzZmMDE3M2FjMDQwY2I5NDI1YTIzYTEwYzU1MGU3YjM5IGxlZ2FjeS10cnVuaworMzc4MzAgOWJkOTgzY2ZiZTgxYmM4NjViNGY5ZGE5OTQzNzQyYzZiMjUwMzEzZSBsZWdhY3ktdHJ1bmsKKzM3ODMxIDA3MzlmMzZhZDU0NDE5YTQxMzE0ZWQwZGJmNTRlN2M4OTc1ODllMmMgbGVnYWN5LXRydW5rCiszNzgzMiBmZWZmNGU0ZjM0NWNhNWUzMzZmN2IwMGVjODA5MTdkNDU5NDdlMjdkIGxlZ2FjeS10cnVuaworMzc4MzMgMDIzODAxMzMyMzk1NWViNGJhMmE0MTI1MDc5ZjdmNDM5ZTZkYTNiNyBsZWdhY3ktdHJ1bmsKKzM3ODM0IDIzYjEwM2FiYjhmN2ZhN2E3OTZmZTM4OTUwMTg2MTdjMWYwODhmYjkgcmVsZWFzZTIzLW1haW50CiszNzgzNSA1M2IzZjUzZDdhMGQzMmE5ZjU1MGI5OTNiMmI3MmZhMDQwNmU1ZGRjIGxlZ2FjeS10cnVuaworMzc4MzYgNGNiN2I5MjM2ODFlNDdhZWI2ZTNlNTFiZjQ0OWRmZTllZGI1NzA0NCBsZWdhY3ktdHJ1bmsKKzM3ODM3IGQyNTYxNWVmNWQ4ZjYwNTk1MTYwM2E2ZDVjZmZiMjA5ODkzYjFiNjAgbGVnYWN5LXRydW5rCiszNzgzOCAyMjEzY2RiM2NhZTc5M2NiMGRkNmVhZDI4ZjI0ZDk4YmFjODBmMTdjIGxlZ2FjeS10cnVuaworMzc4MzkgNDM5NDQ2MzUxMGZiMmRiOWUwOWQ4ZDRiN2Q2ODRkNDUwZTBlZjU2NCBsZWdhY3ktdHJ1bmsKKzM3ODQwIGRjZGEwNmNiMDc4YTNlZjk2OTg3YmUyNGE1ODg0YjgwNDUwY2RjZWYgbGVnYWN5LXRydW5rCiszNzg0MSAzM2E4NDZiNzc3YTg5MWE5M2JjM2ViM2NlYWY3ZjJkMDk2Mzc1YTYyIGxlZ2FjeS10cnVuaworMzc4NDIgZjkyNjE2ZjhjMzNjNzQ1MTExOTgyODhjMDVlMWEyOTIyZDZkOGJlNiBsZWdhY3ktdHJ1bmsKKzM3ODQzIDQwMDVmNzlkMjgxYWQwZGYyOWZkODMyOThiZDQxNDk3MmVlZDFkMjMgbGVnYWN5LXRydW5rCiszNzg0NCBlYzI5OTU1Yjg1NDM1YmY4MTYwMjgzMWQ5N2Q4YWIwYWI0OGFlZGY4IGxlZ2FjeS10cnVuaworMzc4NDUgNDY4YTEwZWJiY2Q1MDFhMDg0ZmZmZjRjM2QyOGIwYmYyY2EyNzk3MSBsZWdhY3ktdHJ1bmsKKzM3ODQ2IDY1MjVlMDI4YWZiM2M5YzcyNmU4NDk4NDllMGZhNjEyZjQ5MDA5YzMgbGVnYWN5LXRydW5rCiszNzg0NyA3MDEwYTk5YjVlNjEyNDE3NmVjZTQyMTY4OGFlZDkwODU5NWJiZjczIGxlZ2FjeS10cnVuaworMzc4NDggMzJlZDI4NjFjOTdmMThkZGM3N2M1OGZhNWNhNmJiMTdhODY2NjZiMSBsZWdhY3ktdHJ1bmsKKzM3ODQ5IDQ5YjZlOTY2ZTU3ZjA4ODQ2ZTI3ZjYyZjIyMjNhNmQ3ZTIyNWQwOTYgbGVnYWN5LXRydW5rCiszNzg1MCA0ODk2NTZkYmRmNWE3ZjMxMTNmOGNmZjAyZDUyZGI4MmUyNmU3ZTY2IGxlZ2FjeS10cnVuaworMzc4NTEgYTA1MDg1YTYzZGVjODM2NGIxNzRlOWIyODNjMWUyZjlkOGE5NDkzNCBsZWdhY3ktdHJ1bmsKKzM3ODUyIDRmMmJiZDQ3MWEyMWM1ODEzOGQwY2E2MWExMjRiZTI0YzdjMGI1NTggbGVnYWN5LXRydW5rCiszNzg1MyA3MTM3MjQ0OTU4MmQzMjY4NTY0NzNhZDYwNzZlYzU2ZjFiMmM2NGE4IGxlZ2FjeS10cnVuaworMzc4NTQgZjEzY2UwYmI2MDZjMDJkOTQ0ODUyNDMzMjkzMmEzYWUwYWYyYjE3NCBsZWdhY3ktdHJ1bmsKKzM3ODU1IGE4ZGUyMTk1ZWZkNjZiZGQ4NDBmZDZjMDI0YzU2ODgwZThlMDNiMWUgbGVnYWN5LXRydW5rCiszNzg1NiA2NzcxZTE4NDBiYmNiZjAzYzE4N2IwMjkzODAzMjhjMTE1OWY5ZmJhIGxlZ2FjeS10cnVuaworMzc4NTcgYjRhZGIxMDIxMTAzMGFiMjUwOGM1Y2EyOTBiZTE2MzZkMWZlNTgyMiBsZWdhY3ktdHJ1bmsKKzM3ODU4IGI4NzFiOTRmMDdiNmQ2ZjNmYWFjOTZjMTRlZjRiZjQ1ZjgyNTVkNmQgbGVnYWN5LXRydW5rCiszNzg1OSAzNjU2MzhkY2U1ZjM0MzYwMjlmMjkxMTBkMDQwYzdiZWRlMWNlZjVkIGxlZ2FjeS10cnVuaworMzc4NjAgZTAxYTE3YmNkZjI4ZWU4N2NjYmY5NmFkNmMzYjJjMWNjYjJjYTNhMSBsZWdhY3ktdHJ1bmsKKzM3ODYxIGY1MzExMzAzYTM1NzAwMmQ2MWY2MWZkMGMyZjBjOWE2OWIwYTRkNGQgbGVnYWN5LXRydW5rCiszNzg2MiBiNDhjYTk2ZWI0NDA4ZGNjZGZjNTA2OWFkOGI2OGY5YmJhNzljZWFmIGxlZ2FjeS10cnVuaworMzc4NjMgOWExMzA5YTkwYjVkZjZkMGU0ZmYwNTI0YjUzY2RhOTY4MzVhNzllYyBsZWdhY3ktdHJ1bmsKKzM3ODY0IGJhZTE5MTlmODU0ODFkYmY2MGYwOWJhZGY0NTQ0Y2RmNTgxODkwY2QgbGVnYWN5LXRydW5rCiszNzg2NSBhMDBjZDY3MDM0MWJhN2ZlY2Y4OTgzNWQ2OTE0NzVhYTI4MjA3N2RjIGxlZ2FjeS10cnVuaworMzc4NjYgZWE5NTdkOWIzNjljZDhkZGMzNzBmY2UzMjY4ZTFiODljYzVjZWQ2NSBsZWdhY3ktdHJ1bmsKKzM3ODY3IDMxZTRkYTE2NjRiN2VmNjA1NjdhMTU4MDQ1ODFiMDQwZTU2MjZjYzggbGVnYWN5LXRydW5rCiszNzg2OCBkNWJhNGYzMDUwYjU4NzBlMjllYTU3YzFiNmEyZTA5YTQzZWYzZjQ4IGxlZ2FjeS10cnVuaworMzc4NjkgNzg3MzhhODliMjIzMTFkYjcxMjVmMjI3YjBmYWNkZTEwZDJmMTk2MyBsZWdhY3ktdHJ1bmsKKzM3ODY5IGZmODBkOGJiZWY2ZTEzNDI2YzhhODVkN2Y5ZDgzN2I4ZjhmODk4MzQgbGVnYWN5LXRydW5rCiszNzg3MSAyMDk1NTAyNTZhNzQ0MTYwMWZhYmIxN2JjYTkzMjZkYTQyZDgxNTNjIGxlZ2FjeS10cnVuaworMzc4NzIgZWY3YTAyYjE4ZWNjYTM5OTg3MDZhYTQ2YTcxMjAyN2E4OWFjOTU1YyBsZWdhY3ktdHJ1bmsKKzM3ODczIDgyMDRhNGQyMDEyY2I3MmRmNDJjYWZiNGUwNGM4MDllNmY4OGE0ZDQgbGVnYWN5LXRydW5rCiszNzg3NCA3MTkzMGQ3YjNiOGEyNGYyNDc3ODhjZjFiMzc2ZjcyODFiMGFkYTBiIGxlZ2FjeS10cnVuaworMzc4NzUgOTZmNjJjNjc5OGU4MWIxMTEzZjNlMzNiZjBjOWI5MjU4MzA3YzNiZCBsZWdhY3ktdHJ1bmsKKzM3ODc2IDliMGM1YmY0NzAwYzA4NDMwZTU0NzVjMWVjOWRmZmNkOGIzZjZmZTUgbGVnYWN5LXRydW5rCiszNzg3NyA4ZGFhNWE0NDg0MDNhOWZkNThlNjBjODg2NThjNTgwNjE4ZTA1Y2RkIGxlZ2FjeS10cnVuaworMzc4NzggMmI5YzJlZDVhNzZiZmY3ZTNhYjAzMGI0MzU5ZmVmYjkxYWVkNWNjMSBsZWdhY3ktdHJ1bmsKKzM3ODc5IDI2NGU0NWJhYWNkNTMzMWMxODQ1YTVhMjI2MzM5OWEyMDhmMDkxNDMgbGVnYWN5LXRydW5rCiszNzg4MCBlOTU5OWQ5ZDkxYzZlNzA3YzIyYjFiY2I4MDQ1ZjJjYmI1NGMzNjFlIGxlZ2FjeS10cnVuaworMzc4ODEgNmJkODAyMWY3NDFjYjg5ODFlNmNjMDA0OTg0NTVkYjFjZjIzNzQxNyBsZWdhY3ktdHJ1bmsKKzM3ODgyIGJkZDE0YWI2YzVjZjE1YmZlN2MxOTBkYjFiNTc0ZTMyYjc4ZDBjNmQgbGVnYWN5LXRydW5rCiszNzg4MyBiZTM3MGFiYjAyMGY5Yzk3NWJkYTU2ZmFiOTQyOTgxNTdmM2JjNDg4IGxlZ2FjeS10cnVuaworMzc4ODQgYzEwYWRiYWQ0NGZhYjk4YzI3ZjIyM2JiMWFjYTNjYjMzZjA4YzE2ZCBsZWdhY3ktdHJ1bmsKKzM3ODg1IDE1NzZlODQ1YzU3YmRhZGVjNzdkNDUzOGYzYTM2NDU5ZDA3ODUyMDAgbGVnYWN5LXRydW5rCiszNzg4NiBhOGZmNmVkODU2ZTg5M2I0N2YzNDc0ZDQ3MjU4OTJlOTYzOGIxNTc3IGxlZ2FjeS10cnVuaworMzc4ODcgYzE0ODNmMGU4MDBkMDJlOGVjMDEwOTA2MDA0OWFiYjY5MDk5NmY2MSBsZWdhY3ktdHJ1bmsKKzM3ODg4IDdmOTVmZTk4ZDgyMTZkMjE2OGU4NGMzZGI4YzdiNmM5OGZkMTkxODMgbGVnYWN5LXRydW5rCiszNzg4OSA3MTM1OGY2NTc1YjZhZmUwZWZkMTUzNGM3NTdlNTMwZWEyODhlMGZlIGxlZ2FjeS10cnVuaworMzc4OTAgN2U5OWIwNjgwYWRmMTEzMjEyZGI4Y2M4N2UyOGVjYmU4MWUwNTg0ZCBsZWdhY3ktdHJ1bmsKKzM3ODkxIDhkYTU3YzI4YjkxMGY1MTM4MjkxYjg4NzQzOTdlY2IwNmFlZDc2NGMgbGVnYWN5LXRydW5rCiszNzg5MiA4MWExZjc1NGQzMmNkMjA4ZjczNTAxZWJhZTQzMGU4ZGRmYTA0NjM0IGxlZ2FjeS10cnVuaworMzc4OTMgYzg4ZDE4NDE4MDUzYjU0YjM0NTAzMGRjYWQyYWQ2YmQwZTNmNDI4OSBsZWdhY3ktdHJ1bmsKKzM3ODk0IDViZTMxYTIwN2Q4NmQ3ZjRlYzE1YjFkNDdjNzQ4ODA0ZTljODFiODUgbGVnYWN5LXRydW5rCiszNzg5NSA3YTVhNTZhMTczNzc1OTI2ZTlkM2JlMzVlODc1YjU2NjRiYjUyMWNkIGxlZ2FjeS10cnVuaworMzc4OTYgMTYzNDA5YTYwMWJlZjQxY2JkNzg5MjNiMDYzZGIzZTE0Yzk3YjY5YyBsZWdhY3ktdHJ1bmsKKzM3ODk3IDJjODNiNjIyYTNlZTY4YzVhOTlkMjZmOTRmOTdkMjZiZjkwYmMzNWIgbGVnYWN5LXRydW5rCiszNzg5OCBjOWM3Nzk0MDYwYjBlNmVkYjkzMTdkMDI4ZGJhNDAwNzRkMGExYTk4IGxlZ2FjeS10cnVuaworMzc4OTkgN2U5NTVlOTg3ZDY5Y2E3ZDcyMzBiNTI5NTBmMmJiMmI5ZmNlYWQwNSBsZWdhY3ktdHJ1bmsKKzM3OTAwIGQzM2IzYTJiMDk0Y2I4M2M4YzlkMDhkYTY2YzRkNzJhMTFiYTVjNWEgbGVnYWN5LXRydW5rCiszNzkwMSBkMDcxNmFiMDNkOWRkYzQ1MDdiODcxMTQ3MzM0MjI5ZjZjNmIwM2YzIGxlZ2FjeS10cnVuaworMzc5MDIgNmE4MDZmZGE2NjhkNmM1ZjRhZTIzOTA4ODg5M2M4ZjQ4MzJkYWJhNCBsZWdhY3ktdHJ1bmsKKzM3OTAzIDI4MzBlNmNiNDE1NzY1YjE1M2U2M2JlYTdmMTNkNmFhMzNlYzhlNWIgbGVnYWN5LXRydW5rCiszNzkwNCBmYmVhNzE0ODAyYjNkYTk2MjBhNTExMDZkMGVmYjM1Njk0MGFmM2Y3IGxlZ2FjeS10cnVuaworMzc5MDUgN2ExMjkwNDQzOGQ2Y2E3OTcxMDcxZTUyZWE1ZDM0YmZkNmQ4NWU4YSBsZWdhY3ktdHJ1bmsKKzM3OTA1IGYzMWUxOGQzMTNjN2E0ZmM2NjkxNGIyZDI3ZTEzMGEwZjcyYzBiNjkgbGVnYWN5LXRydW5rCiszNzkwNyA3MTYzMDdmN2U2MTdjNDE4NTEzYWYwYjljYTExYmRhZGE3ODA5NWIxIGxlZ2FjeS10cnVuaworMzc5MDkgNjNhZmMyZDFiMGRhMzcyMmUzMDU4ZmZmNjIyOTZlMGE4MDQ2MDE4MiBsZWdhY3ktdHJ1bmsKKzM3OTEwIGNmM2Y4YmVlN2Y3YWIxMmE5M2JlNDcyNDNhNjUyYTNlODA1YzExZDYgcmVsZWFzZTI0LW1haW50CiszNzkxMSAyZWNkYzgzZmE4NmNkMmI5M2IxMWU1MGUwM2QxODcyYmRmODk1NzhlIHJlbGVhc2UyNC1tYWludAorMzc5MTIgMzg0MzJhZDExYzJhNDIyNmFlNmYzMjhmNTM5NWYwYWIzYzZlNmZmYyBsZWdhY3ktdHJ1bmsKKzM3OTEzIGFlZDFmZWQzN2FkNTg2NTY3M2ZjYTA2OWM1YzNjOGZhZTJmNzc5ZTUgbGVnYWN5LXRydW5rCiszNzkxNCBmZDFiZTQ5NGMzMWI2M2U2MTEwMTVkNWFlNGI1MWQ3YzQzNDFhOTkyIGxlZ2FjeS10cnVuaworMzc5MTUgOGNlY2I4ZGM0M2EzODA3YmNmM2FlOTU2NTU5YjQ4MzQ4NGZmNmQ4NyByZWxlYXNlMjQtbWFpbnQKKzM3OTE2IDc5ZDJhZTBhNjJlZmViNzQwZDY0ZmRmMjA0ZWI2ZTI1MDRlYzdkNWUgbGVnYWN5LXRydW5rCiszNzkxNyBhNmUyNTFkZTVlNDFiZGQ4MmQ4NTY3Zjc1MTU2M2ViNjlkNmQ0ZDViIHJlbGVhc2UyNC1tYWludAorMzc5MTggNzAyNmQwMzg1MDgxMTcyMGJhY2Q1YjZhZjAyNWNkOTNmNjMyY2IwOCBsZWdhY3ktdHJ1bmsKKzM3OTE5IDFjNGRiZTRhMDZiZDA1NDljMGI0MzU5YzQ5MTUyMjU3ZGNiYWQwMWMgcmVsZWFzZTI0LW1haW50CiszNzkyMCAyMTdkNzQxMDQ5YzBkNjI2ZjQ3YWE1MzI3MWFkN2ZiN2Q1NjY2NzlmIGxlZ2FjeS10cnVuaworMzc5MjEgYzg3MjYxY2U3YWM5MzI3NTRjNmU5ZTdlN2YzYTRiZDUxNTY2YjRlNCBsZWdhY3ktdHJ1bmsKKzM3OTIyIDhlYWY4MDhmZDk4MGMxMDdlZDQ0NzhkZmJiOWNmOTU5MGE3ZWVkYzYgbGVnYWN5LXRydW5rCiszNzkyMyBlNDM1MzJiODQ4ZDc1ZDgwM2FlZWQ2ZWI0N2QzNDZmYTc4NzgxYzc3IGxlZ2FjeS10cnVuaworMzc5MjQgN2U2NDgyYWI5NDU1ZGExNzc3NTM0ZTIwYzQxOTdiNWJmNjAxNWU4YSBsZWdhY3ktdHJ1bmsKKzM3OTI1IDZiZmIwYWI4ODNmMjBmNzZiY2Y0M2UyMDNkN2Y2NjBkNTQ5Yjk5MWUgbGVnYWN5LXRydW5rCiszNzkyNiBkYTk2N2ZiN2E3ZmI0ZjQzYTE1OGE5ZDk0ODNhOWJhNzY5NzlhNjJiIGxlZ2FjeS10cnVuaworMzc5MjcgMTcyYjQ3ZmYyZTRiYjM4MGJlZjdhYWVlYmUyNGYyNmRiMTRiOGE5MCByZWxlYXNlMjQtbWFpbnQKKzM3OTI4IGNlYzMxZWRlYTQxNGZlZjRlOTIwN2ViYWZjZTU2YTY1NzFmNDhhZGIgbGVnYWN5LXRydW5rCiszNzkyOSA0ZTI1NGYwMjhiNzZmYzFiYWM0Y2Q4YzgwYWNiYWRkNzQ2ZDg5NzQ3IHJlbGVhc2UyMy1tYWludAorMzc5MzAgMzNmNzQ4ZTVkMTQyMWM4MDM1NzIxODE4OGNhZTVlZjJhOGRhYTMyZCBsZWdhY3ktdHJ1bmsKKzM3OTMxIDhjODAyMmI4MWYwMjBhNmVjYmNmMWUzOTAwZDA5MzA1NDU5MGY1N2UgbGVnYWN5LXRydW5rCiszNzkzMiBhYmUzZWU1ZmM2YzM3ZGEwYzg2ZTNjMzgyNmJkMmIyOWMzMThmZjk5IGxlZ2FjeS10cnVuaworMzc5MzMgZjE4YTRkOTM3MTQyYTA1MmU4MGNkNzY1ZTU1MjRlYTAxMTQ3MjViZCBsZWdhY3ktdHJ1bmsKKzM3OTM0IDhiZjc2NWI0ODBiODBmOWEwYmQwYWUwOTFiNzliNDQ0OTUzOWZjMjYgbGVnYWN5LXRydW5rCiszNzkzNSA1MGUwYzM0NWQ0OWIzYmI3YmYwOTcyNDMwOGZjYzQ4NjFiNGFlOGU5IGxlZ2FjeS10cnVuaworMzc5MzYgNGM4MTA2YzM1OGNlMGI4ZDhhNjNlMDIzMjQ4ZTRhYTUwNmI2M2YwNSBsZWdhY3ktdHJ1bmsKKzM3OTM3IDE1N2ZhZTc2OTUzNmU2MzNhNjRiZjY5MWM0MWViMTkyOGFhNWI4MDcgcmVsZWFzZTI0LW1haW50CiszNzkzOCA2MTE1NjFjY2U3NDBmZmM4Zjg3ZmNjOWQyZWIwYjkxOTNlOTViZGYxIGxlZ2FjeS10cnVuaworMzc5MzkgZmJmNmUwNGRlZjY5MDI0YzI0NDQ5MTk1YWU1MzEwOWIyNzlkNWI5MyBsZWdhY3ktdHJ1bmsKKzM3OTQwIDQzYzAwZjBlNjMwNTU1NzdlNzA4NTM0MDRkMDQ0MmY0Y2I5MGUxYTcgbGVnYWN5LXRydW5rCiszNzk0MSBmNzMyODA5NjgzMjI3OTA4MWI4OGE3MGVlMzY2MDIyNGMzNjQ1ZTZlIGxlZ2FjeS10cnVuaworMzc5NDIgNGI2MDFiZDM0NmE0ZjQzYjEzOGMzZThiZDlmZGI4NDBiNzU5NmUxMyByZWxlYXNlMjQtbWFpbnQKKzM3OTQzIGM0YjEzZmExOGExMDNkYTE3Zjg1OGIzNjU0NmZjODI1YzhhMDA4YmMgbGVnYWN5LXRydW5rCiszNzk0NCA2MDliY2RhZTEwOGE2NTc4MzFiMjUyOTdlZWY5MDkyZjRhNDI3ZWVhIGxlZ2FjeS10cnVuaworMzc5NDUgMjM5OTYzMmZkOWUwZTI3ZjcwYTg4Zjk0Yzk5OWVlMjczYjYwNTI0YSByZWxlYXNlMjQtbWFpbnQKKzM3OTQ2IGQyZjI2ZWFhY2UyYzFmMzIwMTE1YTIzYTE2MjZmMjVkZWNmMjAxZWIgbGVnYWN5LXRydW5rCiszNzk0NyBkNjIwM2ZiZGEyNTE3ZDM4OTQyNjhmYjdkYjliYzFmNzI2MmQzZTc4IGxlZ2FjeS10cnVuaworMzc5NDggNmUwZGIwN2ZiZjkxODVkOTFjMGU4NDcyMTMxY2MyMzA5MjUzNTJlNCByZWxlYXNlMjQtbWFpbnQKKzM3OTQ5IGNjOWNlNjgzN2VhOWI3M2VjNDgwMzZiYzFlZWQ3MWNjNTM0OTUzNWIgbGVnYWN5LXRydW5rCiszNzk1MCA5NWQyNzZkNGY5ZTQ2NTc5NmFlZGFiNGRjMWQxNTA1MjFhZDg3ZjQzIGxlZ2FjeS10cnVuaworMzc5NTEgNjI0ZTk2MzVjM2FkMTFkNzI5YzUyODYwYWRkMzFlMjMwYzY3OWIyYyBsZWdhY3ktdHJ1bmsKKzM3OTUyIGYwMmNkMGQ0YTJhMDVhN2M5NDY5Yzg2YzI2NDg3ODI5MGJkMWQ5ZjQgbGVnYWN5LXRydW5rCiszNzk1MyBlZGMyMGQ1MzlhMTgxNWQ1ODM5NGQ4M2ZlODVhY2ExOGM3NjUwZGE3IGxlZ2FjeS10cnVuaworMzc5NTQgMTc1ZjYxMjU1NDljYWQ3MWI4YWI1MmExNGQwNjVkYzEzZmM0YWVmYiBsZWdhY3ktdHJ1bmsKKzM3OTU1IDBlYzM0NDY2M2Y2YTllY2Y4OGIzMmI5N2NkZDEwNjZmNTRlNjg0NjggbGVnYWN5LXRydW5rCiszNzk1NiA4Y2QzMTc2ZmQ2ZjAzMGI2MDQyMWFkMDQ4ZWZhZDVjMTMyMjI0MWU3IGxlZ2FjeS10cnVuaworMzc5NTcgOGY5Mjk1MTM5OTNjOTFkZmM2NDZhZWUwNzcyZTBlNzNjOGVmY2E4ZCBsZWdhY3ktdHJ1bmsKKzM3OTU4IDI0ZjBkYTkyMDAxMDQ0ZTgyNDliMzQ5N2IwYzA3ZDg2NGRjMWRjMTIgbGVnYWN5LXRydW5rCiszNzk1OSA1MTcyYzI4YzBiM2M4Yzk4MjUwN2Q2MTIxMmUyYTUyMTk5MDI5OTcyIHJlbGVhc2UyNC1tYWludAorMzc5NjAgY2Y1NTVlYzY5OGViY2U0ZmQ2ZGNjYzYzYmJhYTUxNTgyMzcwZTdjNCBsZWdhY3ktdHJ1bmsKKzM3OTYxIDUzYzZhOTU5ZjljZmQ1ZWQ4ZjAzYWRiYzU2MjJkMjgyMzVmNWExZjIgbGVnYWN5LXRydW5rCiszNzk2MiAwZGZlNjA4ZWVjZmFjMjBjZjY5OWJiODRhZDY5N2I3OWQ0M2IyNmU5IHJlbGVhc2UyNC1tYWludAorMzc5NjMgYjk2NmFhZGU1NDhjZjhiMTNhNzBlNDYwNWUxOTAzNzhlODVhN2I3ZSBsZWdhY3ktdHJ1bmsKKzM3OTY0IDhmZDc2NmJiNzZjOWU0OGUxMDJkNTQ0ZDFkMjg5ZWEwZTI5YTlkYTAgbGVnYWN5LXRydW5rCiszNzk2NSBmNDA5ZDRjNmRjNjA0MWViNTRmNGFjYjMzYzlmMTYwNWYzZDY2YzhjIGxlZ2FjeS10cnVuaworMzc5NjYgY2RkZDAxNmFlMDZhY2ZlOWNjMzk0YzMwMzg4ODQ1NDc2ODI0YWNkNyBsZWdhY3ktdHJ1bmsKKzM3OTY3IDBmNTZhNjY1NWViZmEyODMwMWE2ZjIwMTNmNWMwNGZmNjI2NmUzMDIgbGVnYWN5LXRydW5rCiszNzk2OCBlZjZkMWU1ZWI0ZDMyOWUzZjkyY2Q2ZjFmZGI1MjhmMWUwNjA1MmIzIGxlZ2FjeS10cnVuaworMzc5NjkgMjU1NzFlYTVlY2E2MmYwODViOGEwMTc3MjVmMDRkMDFhYzA4NDg5ZiByZWxlYXNlMjQtbWFpbnQKKzM3OTcwIDY5ODkwOTJjZDk2ZDVjZDkzMzE0OTA2NWIzZDVhNGUxMTdmZGQ1NWUgcmVsZWFzZTI0LW1haW50CiszNzk3MSA0MjFhNWRmNTA4Yjg3NzAzZjI3ZWE4ZWM2Yjg4ZjNmNDllYzg0ZTE3IHJlbGVhc2UyMy1tYWludAorMzc5NzIgMWQxZDYzNzdhY2IxMjNkMThjODJjMTY5YTczMzc3MDg1YWNlMzMzOCBsZWdhY3ktdHJ1bmsKKzM3OTczIDk1NzQyOWM0NmJiZjhkNzUwZTc2YThjOTBmNzhhZTA1NmIxYTJiODMgbGVnYWN5LXRydW5rCiszNzk3NCAwNWY4YTRmZWMzNTYyOTQ2ZmFmZmU1NTNkYTU5NjM1YTY1ZTg3NTQ4IHJlbGVhc2UyNC1tYWludAorMzc5NzUgNzNiMDljMmI3ODhiOGEyMjEyZDRlMjY1ZmVlOGFiOTlmZjk1NWZiYiBsZWdhY3ktdHJ1bmsKKzM3OTc2IDFkMDQ5MzZhNjQ1NmEwNGE5ZmYxMGMyNTk1NWE5YzgwYWVlNGEzYTIgbGVnYWN5LXRydW5rCiszNzk3NyA5YzFlYjMzZmUxMTBiY2NkM2Q5ZTQ5NDExMTY4NmYyYjI2OTllYWU5IGxlZ2FjeS10cnVuaworMzc5NzggOTY3MjFhMDNhZTMwMDI0ZDZlZjFiYjgxNWUxMmRlMjc3MWZhY2FmYyByZWxlYXNlMjQtbWFpbnQKKzM3OTc5IGFiOGIwYjczMTcxN2E1ODAzMGNiODFhOTM5YTU4M2VjZGY3OGJmNmYgcmVsZWFzZTIzLW1haW50CiszNzk4MCBmMGZjNmJlZmIwNjA3YTMxYTc4YTI2YTk1NDM2ZGUzNTgzZTMyMzUyIGxlZ2FjeS10cnVuaworMzc5ODEgY2NjNTBlMGI0NjZkNGVjZDhkMjAwYzRhZTBjMTA2NDEyZDk4ZDgxYSByZWxlYXNlMjQtbWFpbnQKKzM3OTgyIDQ5NzlhNDQzNDU0MzQwOTZmMDkwZWY0ZTJhZWFjODAzOTk4Njg4MzUgbGVnYWN5LXRydW5rCiszNzk4MyA2MGQ0ODJlOGY4NDUwMTdjMGFkNTVhOTdjZDgxNzUzNjFkNDAwYTNlIGxlZ2FjeS10cnVuaworMzc5ODQgMTUzMWIyNWViZGNkM2JmMzYwNzZkNGY2NjUxNTdiN2EyZjc4NzhiZiByZWxlYXNlMjQtbWFpbnQKKzM3OTg1IGU0NmY5OGU3M2U1MjcyYWMwODE2ZmZiNzQ3NWI5M2NhODAwZTVlMWEgbGVnYWN5LXRydW5rCiszNzk4NiBmZWQ1YTczNDQ2NWQzNjRmNzc1MDVlN2E4ZTA2Zjk1Nzk4ZWY3ZjljIHJlbGVhc2UyMy1tYWludAorMzc5ODcgNGU4ZmIxMmY4Mzc4NzIyYWJhMDY4OWFhZDZjZjhmZDY2YzFmMTkzMSBsZWdhY3ktdHJ1bmsKKzM3OTg4IDRlMzhlY2QxOTEyZTRhNjU2MGEzMmE0M2JlYTE5M2ZiOTk4NDc4M2YgbGVnYWN5LXRydW5rCiszNzk4OSAxYTkzOGY0NTYwNTM4NTExMDJjNzgzYTljZDk1ZGI1ZmIyYmRjOGZhIGxlZ2FjeS10cnVuaworMzc5OTAgNzkwNjZlYTM4YzUwMzEzZDIxZGI0NjA2NThmMzUwNmVkOWE2Mjg5NCBsZWdhY3ktdHJ1bmsKKzM3OTkxIDRkY2Q3OGYzYjVkMWJhMTZiOWUzMWRkMDkwOTE3NDI4YTY5Zjk2NTEgbGVnYWN5LXRydW5rCiszNzk5MiA3MTBiMGIwZTA3ZWVkNzJhMjQwNzc0MzE0NjI1MzU4MDRkYzFkZWExIGxlZ2FjeS10cnVuaworMzc5OTMgMDE1Yjg5MmM5OGVlMjQ2NmE4YjQzZGMyYWQ3ODIyMDI4MDIyYTM1NCBsZWdhY3ktdHJ1bmsKKzM3OTk0IGNlNGJmYmQ5YTE2Y2Q1ODhhMGI3ZmU4ZGViMzQxNzA0YWFhNTMwNzUgbGVnYWN5LXRydW5rCiszNzk5NSA1OTEyYjQxODE1ODQ2MTllN2M1YzdhOWRhZjVhMDg2ZTc4MDRkMDYyIGxlZ2FjeS10cnVuaworMzc5OTYgYTg1N2MyNWEzN2I5NjhmNWZhMWI1NjY2NWY1ZTg3Y2Q2YmNjOTViOSBsZWdhY3ktdHJ1bmsKKzM3OTk3IDBhNmRkM2YyYWJjN2QzOGM5ZmE3MzAzNTc0ZTM4NmJhMDAwYzZiMjkgcmVsZWFzZTI0LW1haW50CiszNzk5OCBhZmU5MGU5ZTRiNDg0ZDg3OWFiZjIzNzQzN2IxYTg0OGE0ZmFlZDc4IHJlbGVhc2UyNC1tYWludAorMzc5OTkgNDkyNjUzODU3NzgyZmU2M2FjYWJmZjdiMWYzNmM3NzdhYTc3ZWMyMiBsZWdhY3ktdHJ1bmsKKzM4MDAwIDIxYWJlY2VhYWJhZDZkNjFiOWNhNWEwODkzODRiMGI5Nzg5MGRiMGQgbGVnYWN5LXRydW5rCiszODAwMSBmMDVkZDE4MTZjMWY3Y2RmNWE0NjhlZDE4MTMwOGQzOTEwNTA0YmJlIGxlZ2FjeS10cnVuaworMzgwMDIgZDBhMDljNzk3NDA5NjRlMjBmMTk3MjJlZjY4MzY2N2NjNjdhNzdjMyByZWxlYXNlMjQtbWFpbnQKKzM4MDAzIGRiOGY2OTlmZjc4MjVmN2YxN2Y1ZGQ2ZmRhNzFjYjAwNjIyYWQzN2UgbGVnYWN5LXRydW5rCiszODAwNCBiMTMyYmE5MjU5YWIxNGY1YTRlZTdlOTM1NTQ2OTc1YzAwN2Q3MTU1IHJlbGVhc2UyNC1tYWludAorMzgwMDUgNzFkNzEwZTMzNmRmY2FiOTk1NjUyNjJiNTIyZmM3MDQzYjMxMTZhOCByZWxlYXNlMjMtbWFpbnQKKzM4MDA2IGJlZGIzNDBmMTJmOTcwYTAyODAzNGQyMWY4Njk2NGQyZDgxZjUzMzAgbGVnYWN5LXRydW5rCiszODAwNyA3NTJmYTg2ZjA2ZDI1YzMwMzU4ZmQ0NDJmOTBmMjkyZTJmYWI1YzExIGxlZ2FjeS10cnVuaworMzgwMDggYzJlYmEwNGUzMDQxNTEwODNiZmFlOWQzODQ4NDlkZDRmNGU2YzU3YyByZWxlYXNlMjQtbWFpbnQKKzM4MDA5IDc1ZjNhNTFhNGUzM2RiNjVmZDkzY2Y1NDJlZWY2ZDdhODcyYTNkY2YgcmVsZWFzZTI0LW1haW50CiszODAxMCAxNjgwM2IwMzk2NGU0ZDUyYTU2NjBkY2I2ZWE5NTBmNzk5ODYyNzc3IHJlbGVhc2UyMy1tYWludAorMzgwMTEgNjU3NGM1MTVlMDM1NjZiYThiNjM3OTNhMzk1NjFlZWNiZDEyNmNkNCByZWxlYXNlMjMtbWFpbnQKKzM4MDEyIGJlNDUwYTMzNWU5Njk2ZTNkYjFkZmZhNjkwZDM3MzY5MmNlMzNlZjEgbGVnYWN5LXRydW5rCiszODAxMyBhNjU5YjBjZWNiOTJmN2RlMzY4MTg0YTc2MGEwNzhhOWRiODJhOTgyIGxlZ2FjeS10cnVuaworMzgwMTQgZTY5MmU3N2NhZDVkNWE0M2Q1Y2U3OWI5MWJmZDU4NTFmOGUyOGJhMSByZWxlYXNlMjQtbWFpbnQKKzM4MDE1IGRlNDcwMWZjMTc2ZjllNDAwOGY1MDM2ZjQyZjE0ZGIxMmRlNjJjNjUgbGVnYWN5LXRydW5rCiszODAxNiBiYmRhYWNjNDRmNmY0YTBiM2Y5Y2U4M2EzNWZkZmUxNmJhYmE4ODU5IGxlZ2FjeS10cnVuaworMzgwMTcgYTg2ODY2YmFjMzY2YjhkOGFjZDQ1OWNhODVlMGM0MDlmZGYzYzNhYSByZWxlYXNlMjQtbWFpbnQKKzM4MDE4IDUxYjBkMThkYTQ0N2I3MzUzMTMxNzdhZGZjYzMyMGRkMjFjNTUzZGYgbGVnYWN5LXRydW5rCiszODAxOSBjMjk0YjExMzIzZDE3YTQ3ZDIzMWY2OGY1MWM4Y2E4ZTIzOTU0ZDgwIGxlZ2FjeS10cnVuaworMzgwMjAgMjU4NTYwYWRjNDNiMzFiNWVmODBlNTI5ZTFlMWFhNDM3ZmYxMGU0OCBsZWdhY3ktdHJ1bmsKKzM4MDIxIGYxZWRiNDdjZTRmYWI0NmI5ZDhlYzA0MTg2YzczMWFkZGJmZjM0NjAgbGVnYWN5LXRydW5rCiszODAyMiAzNjI2ZGI0MzMxMDRlMDcxZDMzOTFlZjRmYTQ0MjFkMDAzZmRkZTUwIGxlZ2FjeS10cnVuaworMzgwMjMgMGYwMDcyN2EyN2IzMGJlOTkyMDcxZTViZGJhYTIxZGYwNjAzMDBmMyBsZWdhY3ktdHJ1bmsKKzM4MDI0IDY5NjExYzdjZDIzYmRmNDdjNDA2NjUwMGVhZjFjNGZiOGFkNzE1ZmMgcmVsZWFzZTI0LW1haW50CiszODAyNSBjYTJjYTFhZWIwODA1M2I2OTdmMmNkZGY3Zjg0ODk2OTJhYTQ5NWFmIHJlbGVhc2UyNC1tYWludAorMzgwMjYgOGIxMTQ0YmE3MzRlZmFlMWZmYmM1NDBmY2FjZGViN2U2NTBmODJlZiByZWxlYXNlMjQtbWFpbnQKKzM4MDI3IGNiNTRmMTE1M2I5MzU0ZTk4MmVlOWJmNDJhMGIwNjkzZTk2NDJhYTEgbGVnYWN5LXRydW5rCiszODAyOCA1ZWEwMjVjNDIxZDdiYjg3NzdkNTMyNjEwMWQ5NjdkMjEzMDAzYjZkIGxlZ2FjeS10cnVuaworMzgwMjkgYzIwZjViMzhmYTIwOTY0YWQ3MmRmNWNiZTE4Y2VhYzYwODM0ZjZiNyByZWxlYXNlMjQtbWFpbnQKKzM4MDMwIGU1MzY5M2EwMmNmMDU1ZDBkZjkyNjI2ZmE2ZWM4OTI3NjRhMjQ3NmMgbGVnYWN5LXRydW5rCiszODAzMSBmZGVjYmEyNmZjODdkYmZlZDllZjQ1MjI0MzI3MWY0NmJkNTMzMTI1IHJlbGVhc2UyNC1tYWludAorMzgwMzIgYjNhZmMwMWMwNWEwNWE1NmEzYjQ2MGRhYmVjYTA5NGI4MmRhNmZjNSBsZWdhY3ktdHJ1bmsKKzM4MDMzIGRiOWI2NDkzOWQ0NWM3MjhlZGM0NGQ5YWNiYzcwYmYzMDM0MDc1ZGUgcmVsZWFzZTI0LW1haW50CiszODAzNCA4MGYwMWZkYmVkZWJjNDk4YjI5N2IyMTlkZjMwZTc4YzQyYmUxOGM1IGxlZ2FjeS10cnVuaworMzgwMzYgNmMwMmZmOTAyZjgyMGQ2MmQ4NTM0YjUzMGIwYzFhZjA3MjdjYThhMyByZWxlYXNlMjQtbWFpbnQKKzM4MDM3IDEzMDIxZDM1MTM1ODYzZDVjZjE2N2RjYzc4ZGNkNWU5MjM2YjcxMGMgbGVnYWN5LXRydW5rCiszODAzOCAyMTQ0YTM1MmFhMzdmYzBiMWNhNzcxMzAxYjU2ZmYxYTJjMjk5YjU5IGxlZ2FjeS10cnVuaworMzgwMzkgMzBiOTdjMWJiMTJkZGYzMmY5ZWFiNDNkNmY3YTliOWYwNjA0ZjM5YyBsZWdhY3ktdHJ1bmsKKzM4MDQwIDljM2E2NGMyODFlMWIzNWEwMWZhM2YwYWM4MjVjMzM3OTQxOGQ5NTIgbGVnYWN5LXRydW5rCiszODA0MSAwNWJjOGFjYWYwYmI0YzZiYzIxZTk4MmMzMWQyYjA2MmFiNmVkOTc1IGxlZ2FjeS10cnVuaworMzgwNDIgZTg5YjFhMjQwZmY3ZWQxNTJiNTdhNTgyOTBmNGY3NzVkZDMyYjY4NSByZWxlYXNlMjQtbWFpbnQKKzM4MDQzIGMxMzlhNDk5N2Q5ZjE0YzQzODhmMWIzMGMzNmYxYTkwN2FkNTc0OGMgcmVsZWFzZTI0LW1haW50CiszODA0NCA4ZmRhYTk3YThhYzM0MzVlZWVhNmM0ZGVhYTA3YjI0MDg2NDBiZmE1IHJlbGVhc2UyMy1tYWludAorMzgwNDUgMTFkYjI4ZTkyMDlmZWQzZTMxNTAxZTE5NGE0ZmEzYTYwYWMwYmY1ZCByZWxlYXNlMjQtbWFpbnQKKzM4MDQ2IDBlZmNjMTZmNWEwZDE2NThhZThjNTg2ZmZhZjIzM2ZlMmU4YTY0ZmUgbGVnYWN5LXRydW5rCiszODA0NyA0NzE0YWZmNGJmNzUyODdmZjMxYWFmNDM5ODkwNjU0MGI2MTQ0ODRkIGxlZ2FjeS10cnVuaworMzgwNDggOWU4MTk1ZTIxZGE2OWViMmMyM2U4MGMwY2Y2NDk2YTU4YmEzYWQyMyBsZWdhY3ktdHJ1bmsKKzM4MDQ5IDM2Y2Y5NGY1NzQxNTFmNGJkYjM1YmIxMzZmOTY1MGRhNGZiMmI5MjMgcmVsZWFzZTI0LW1haW50CiszODA1MCA2ZjRhNmU5YWQ2ZjMzYWJiZmEyYTM1OThhMTZmYmE1YzEzMDc2OGNlIHJlbGVhc2UyNC1tYWludAorMzgwNTEgNTIxYmVjNjBlYjMwMmZjYmMzNTIwMDUwOTA2NGYwNWVmMDJmNTdhOCBsZWdhY3ktdHJ1bmsKKzM4MDUyIDA0NzBkNzU0MTdmZjE1NWE3NDMwNDhlN2YyMTkzYzQ3Y2EwN2IzNTQgbGVnYWN5LXRydW5rCiszODA1MyBkMDQ3MDFlNTk4NzI4NDc5NzdlZDFjNmE3OGUzOWE3NDU0Yjg5OWEwIHJlbGVhc2UyNC1tYWludAorMzgwNTQgNDRlYmY5OGE1ODY4MjAzZDM2YjRlZjU3NDI3ODM0MDVkODJmOGFlNiByZWxlYXNlMjMtbWFpbnQKKzM4MDU1IGE0YmQ1ZDIxYzhiMjZjYjJhZjFiMTMyNWYwNTljNGUyYzNlODMzYTQgbGVnYWN5LXRydW5rCiszODA1NiBjZDRkZDZkZDk3MjFiZGE3MGUyYjAxNzgwMTk0Mjg3ZWJkZjEzOTZlIHJlbGVhc2UyNC1tYWludAorMzgwNTcgOThkNzliNDY5ZTc0ZDMxZmQ3MmY4MDZlOTJlNTc4MTk4MzI5MzhhOCBsZWdhY3ktdHJ1bmsKKzM4MDU4IDEyODVjYTEzNDVkNWMzMTMxZGI3NDczMTEyZDc2ODU1MDY0MTQzNzAgcmVsZWFzZTI0LW1haW50CiszODA1OSBhMjM0Mjg0ZjllMDYwMmYxYzVkNGRiMGVjZTVmZjkzZTllZDg3ZGU2IGxlZ2FjeS10cnVuaworMzgwNjAgNDZmYTBlMjBjYmNmZTQwODZmODc2ZWY3M2IyNWFkZmQ0YTkyMDAxNCByZWxlYXNlMjQtbWFpbnQKKzM4MDYxIDE5OTBmN2VjMGQ5YWQwYjBhNzkyMTMwMjE1ZDJlNTk2YzNiYzQ1OTQgcmVsZWFzZTI0LW1haW50CiszODA2MiBkYWJkNDNiZjBkZGRmZWVkNWZlODlkZmMzZWY3MDUyZWVkOGEyNzdhIHJlbGVhc2UyMy1tYWludAorMzgwNjMgYmU5NzZkZGYwZmY3MDcyMWNlNDBhMzQxNzRlYjYwMDFhZGJkOWU1ZSByZWxlYXNlMjMtbWFpbnQKKzM4MDY0IGQ0NzAyZTY3ZTExOTdmYjI5M2M5MDE4OTA3ZDQ0YjU3M2U5ODkzMjMgcmVsZWFzZTIzLW1haW50CiszODA2NSA3ZmI2N2FlOTMxMjhlMTk1MTY1Nzk1ZjQyMGZkOTFiMjBiYzUyZjJlIGxlZ2FjeS10cnVuaworMzgwNjYgYTBjN2RmNTJiYTQxNTczMWE5MmQ2NjQ1NmQ4ODMzYTkyNmIzZDAwZSByZWxlYXNlMjQtbWFpbnQKKzM4MDY3IDljYjhjNjg3ZjNkNjdmZmE3YmI2YzU4ZThkMjIzOGIxZDNkMTI4ZjIgbGVnYWN5LXRydW5rCiszODA2OCAzMDhlZmQ3MjY4YzI2Y2VhYTFlZTdmYTk2ZWE5OTU4YmQ3N2FkZWI3IHJlbGVhc2UyNC1tYWludAorMzgwNjkgN2Q1ZDZiZGM0Zjk3OWQ1YTg1YTgwNjgzMTNkODEwYWY2MDIxN2FjZiBsZWdhY3ktdHJ1bmsKKzM4MDcwIGVhMzQwMDA2YzFmMzBiODZlMTE4MjdmNjBhOTgzZGMyNTljYjNiNWYgcmVsZWFzZTI0LW1haW50CiszODA3MSA4NmE2MGQ0ZmE4N2EzNTZhY2I2NzQwZGUwZmU3YjUwYzNhNmNhZjEyIGxlZ2FjeS10cnVuaworMzgwNzIgMTkyODY5OTRmNzRmMzJhMzE2MDgxYWZlZGU1NjY1YTczZDllMTA3YiByZWxlYXNlMjQtbWFpbnQKKzM4MDczIDdjNDEzZDNhNDBhNTJiYTBjZTJhY2EzYWI1N2Q5NzcwOGVmNjA1ZWYgbGVnYWN5LXRydW5rCiszODA3NCAwMmZjYjVlYjg0Y2I2YTFmYmM2ZmY2ODYxOGUxZTUwZDM1ZjY3YzU0IHJlbGVhc2UyNC1tYWludAorMzgwNzUgMDM0YzYxMWIyZTg0NGUwY2U1YWVjYzZlMGU0NjVhZTcxNzNiZTc0YiBsZWdhY3ktdHJ1bmsKKzM4MDc2IDk4NjU0YmZhODBlYTVkZGIyNDMzODkzNTA3NTEzYTQ5ODQyOTA3YTkgcmVsZWFzZTI0LW1haW50CiszODA3NyAxZThiMDMzZjkxZGMzYmFhOTlmOThiZjY0YjJjYmM1ZmVlYjczNzI5IGxlZ2FjeS10cnVuaworMzgwNzggYTZiYTI4ZDFkODA2YWE4MzE0ODUzMmIwZDFhYjVhYzllMmE2YzNmYyBsZWdhY3ktdHJ1bmsKKzM4MDc5IGFiZTMxNDVkZGU0ZTdjZjY4N2Y5YzIxN2YwMjdiZmRjYWQ0NGE3YTEgcmVsZWFzZTI0LW1haW50CiszODA4MCBiNjYxOTQyM2MxOTYxMDE5NTIwMThmODMyYjVmM2Q2Njc3YWY4OWZiIGxlZ2FjeS10cnVuaworMzgwODEgYzFiNDQwZWFjYmIxODBiZmQ5ZGQ5NDRhMWE4MzZlNjVjZDcyZDNiMSBsZWdhY3ktdHJ1bmsKKzM4MDgyIDk5ZTNkZGIzYTc0YWFkNzlmYzFmYzM4MjdjMGJlZWE2OTI5NTYxY2MgcmVsZWFzZTI0LW1haW50CiszODA4MyA4ZDYwMDc3ZTk5NTE0OTBhOGUyODRlNTgwOWJmMDZmZmQ0OTBmMzRmIHJlbGVhc2UyNC1tYWludAorMzgwODQgNjcxOTM2OTA4M2MxZWI5MjE5ZTQ2ODJmZGVmM2RkYjkwMTg5MTA1YSBsZWdhY3ktdHJ1bmsKKzM4MDg1IDlkYzk2YWM5NDM0MjM4MmRkY2ZiMjQ1NGIxMDYwMWZkMGQyMTI4OWIgcmVsZWFzZTI0LW1haW50CiszODA4NiAyYWE5NmVlM2ZjYjVjOTBiNzJkMjUwMDI0MTI5NDMzOGVmMmY2ZWJiIGxlZ2FjeS10cnVuaworMzgwODcgNGEwYzFlNTE3ZTZiYjBmNThmZDczMzliOGRjNTY2MGZlMGUwMzlkNCByZWxlYXNlMjQtbWFpbnQKKzM4MDg4IDM5MTE3MjZhZWNiOTAwMWU3MTk1ZDdjNjVmODU1MTE5ZGIwZjBjZWQgcmVsZWFzZTI0LW1haW50CiszODA4OSA2NDJkYjFmYjM0ODFiMzNkYWQwNjk3NjU3NTUwZTg0NzlkNTQ1OWM1IHJlbGVhc2UyNC1tYWludAorMzgwOTAgYmJkYzFkNzMxMGY0OTdhNzhiNTMxNmIyZTQ4OGJhNDZiNWI1Y2EzNCBsZWdhY3ktdHJ1bmsKKzM4MDkxIGVjMTkyNWYwN2VjOTdlMDJjM2QxNzZiODNiMzFmN2I3NDUxNjVmZWIgbGVnYWN5LXRydW5rCiszODA5MiBlMjA4OGFlMGQ2N2ZkNjY3ZmZiM2I0MmE2MzNhMGJhZmEwZTU1Njg5IGxlZ2FjeS10cnVuaworMzgwOTMgNTdiMjNlNTc1ZmZjNjMwYzI5YzQ0ZmYwMmEyYzQyOGRjZWQ1ZDg2YyByZWxlYXNlMjMtbWFpbnQKKzM4MDk0IDk1YmJlOTkxZmNjMzMxOWY4Zjk5NjY0ZDE2MDU5MDU0YjFjZjJkYTUgcmVsZWFzZTIzLW1haW50CiszODA5NSBjZmRiZmE1NGRjNmE3MDFjYjU5MDBlMzNmN2M4Yzk2OGUxNmI4YmVjIHJlbGVhc2UyMy1tYWludAorMzgwOTYgYTdmZmRjMDlmMDAyNjdkNzY0OGY0YmNjZGE2MGE3N2RlOWQzODU0NCByZWxlYXNlMjMtbWFpbnQKKzM4MDk3IDY5NDY3MGY2NTI1MWQ1Y2Y4MGZkMTMzZGQ3NTMxNWFhNGE5NzJlZTAgcmVsZWFzZTIzLW1haW50CiszODA5OCA5M2IxYjBiZWJhNTlmOTAzNjI0N2E2NTc2MGMxYzIxNWU4NmQwYjZhIHJlbGVhc2UyNC1tYWludAorMzgwOTkgYWIxYTE3YzYzM2FlYmU5NzA0YTQ5OWVjZDhmNTg3ZmEyYTA1YTVlMSByZWxlYXNlMjQtbWFpbnQKKzM4MTAwIGE0ZDg2OWVjZWYzMzhiZWIzMmVmMjIxY2RjNDdlMWFhZTdiYTE3YjkgcmVsZWFzZTI0LW1haW50CiszODEwMSBjMGNjNjYwMWRkYWRhMmVhNTIwZTUxYWU1ZDIyMWY2YzIyNDY0MGNiIHJlbGVhc2UyNC1tYWludAorMzgxMDIgOTBjZDI0YTFlZTEyNDk2MTAyNGNiZWYzZTYxZTEwY2E0ZWVmODU1NiByZWxlYXNlMjQtbWFpbnQKKzM4MTAzIGFlYTIyMzdiMzg4ZmY3MmZlOTY4ZmMxMTNlZDczODg0YjUzMWJhZjMgbGVnYWN5LXRydW5rCiszODEwNCAyOTIwNjkxZjYzZjA2ODdjYmM1MDBhYzMyMDI1Mzg1MmZmMmJhMGY4IGxlZ2FjeS10cnVuaworMzgxMDUgOTE0NTM0ZjZlZjYxMjZhNDYyZjNmNmNlNWE4MWE4NzFiNzVmYTUwMyBsZWdhY3ktdHJ1bmsKKzM4MTA2IGExNWZhMDU5ZjlmMDMwMDdkMTczNTZlNTVmNDAwZTgzMmE1YjZjMDkgcmVsZWFzZTIzLW1haW50CiszODEwNyBjOWU1ZDFkMWU4ODdjYzAzYWM1ZmU4ODA5YzE0ODk4MzAzMTVmMmY1IHJlbGVhc2UyNC1tYWludAorMzgxMDggZGYwYzJmM2FjYzdjOTYxYjA5NzA0OWViNGE4MDg5MzFlMGIyMzdkZCByZWxlYXNlMjMtbWFpbnQKKzM4MTA5IGIwNDQ3MzVjOTI3YjEwNDI2MTI3ODY3YTE1MTgwMjg0MDdlYjRlYTAgbGVnYWN5LXRydW5rCiszODExMCA0NjM1MzU2OGU0MGQ5OWQzY2ViNTMxZjcxMmI2ZjI4OGU1Yzc1ZDJlIGxlZ2FjeS10cnVuaworMzgxMTEgOTllYmVjMmJlMDMxMjkyMWY4MzZiYmM1YTg3MzI1OTE3MjkyODY5NCBsZWdhY3ktdHJ1bmsKKzM4MTEyIGFhYmExY2U0YjNjYTA1ZmQ5MjBkNmNkNzJmNjI0ZDk1ZGNkYWY5OTQgcmVsZWFzZTI0LW1haW50CiszODExMyA4NmMzYTdjNmIwMGExYWIyODAyYjI1NTU5YWQxMmQ5MmRiMTUyZjhhIGxlZ2FjeS10cnVuaworMzgxMTQgZjU0ZTE0MDAwZDZiZDBlMmFmMWEzY2M5YjVmMmMxOTM4NTllNDMzZCBsZWdhY3ktdHJ1bmsKKzM4MTE1IGU4MmQxODMyNThmOWMxMDY0YThmZTVkMzY3MzExZWY3MzQ3ZDVmZmEgcmVsZWFzZTI0LW1haW50CiszODExNiA1Nzk4YWE2NTRlYzY0MGQ4ZGE5OTUzMTMxNjNiYzA4NGZiNGE3NjE3IHJlbGVhc2UyMy1tYWludAorMzgxMTcgMjg4OTFkYzI1NTgwY2FhYzg3YjBjMGMyYWIwZmYyOTM5MjY5YjgxYiBsZWdhY3ktdHJ1bmsKKzM4MTE4IDU4NDAyM2RhYzQwNjkxNWI1Njg3MmQxYzg4YTM1YTdhZTI4YjEyNDkgcmVsZWFzZTI0LW1haW50CiszODExOSA0ZWMwMDZjYTJiOTFiZWE3ZTUyZDE4MjQ1YTNkMDE1YjE1M2FkN2U0IHJlbGVhc2UyNC1tYWludAorMzgxMjAgZTgxMTUyMTUyNDMzZmIxOGFkZDRlOWFkMDI5N2Q3MGFkODgwNzczNyBsZWdhY3ktdHJ1bmsKKzM4MTIxIGM3MDIzOTBhOGUxMjIyZTk3OTAwN2UxY2E1M2E5ZDY0ODRjNGU4OTkgbGVnYWN5LXRydW5rCiszODEyMiAwZDkxNjNkYTYxYTNiYjAwMzU0OTdiZDAwMGFjM2M2ZDkwNTVkOGI0IGxlZ2FjeS10cnVuaworMzgxMjMgNjQ2MTk1YjU5MjA1NzdkNGY1YjYyZWM1OGZlYWIyZGVkZThhMjU0NCBsZWdhY3ktdHJ1bmsKKzM4MTI0IDc0YTkxZTQ1NTljYTViMjUzMjAzNTM1NWI4ZDgwY2M2ODQzOTZmOWQgbGVnYWN5LXRydW5rCiszODEyNSAzMjFiYzJkNDlhNWEyZTEwZmVjNGU0M2RjMGRiZTg1MGMxODgyOTI1IGxlZ2FjeS10cnVuaworMzgxMjYgNTg2YTc2Zjk2YjA5ZGQ0ZjI0YmMzOWU3ODc0MDM4ZGZmNjRlZGNhZiBsZWdhY3ktdHJ1bmsKKzM4MTI3IDU4OTgxZmU5MGJlZmE0ZTcwMDg0NzhjOWYyZDhkNjIyNGIwMjA5YzggcmVsZWFzZTIzLW1haW50CiszODEyOCAxOTE0YzRkYjRiMjg2MGM5NjU2M2U1MGI4YThiOGRkNzM0MGUzMjE3IGxlZ2FjeS10cnVuaworMzgxMjkgYjJlY2RhNGRkNzBmZGY2OGMwNTBiZWQ4YWNmZDhiMjJkOWU4NmViMyByZWxlYXNlMjQtbWFpbnQKKzM4MTMwIGFmMDEzMzZmZjE5ZGIzMDY4Mjk2YThhNjgzMmI2MjliYWY2ZmMwNDYgcmVsZWFzZTIzLW1haW50CiszODEzMSAwNDQyNzE3NGNmNmFiMTNmN2VmOWJmOGExNzUxMjIxNGI3OTNhZjNjIHJlbGVhc2UyMy1tYWludAorMzgxMzIgMDU1ZGQ3ZjkwYjFlYThiNmVlNmNmODU1YmViOGM1ZmZkNWQwY2NlZCBsZWdhY3ktdHJ1bmsKKzM4MTMzIGE5YTAzMzY4MjliYTA0MDNlYzdjMTNmYmE4YzA1ZDMyYzVmNTVkNmYgbGVnYWN5LXRydW5rCiszODEzNCAwMDA2YjJkZDM3YzIzNjkxZDYyMWViNGIzMDUzMzRkOWYzNjc4OGJhIHJlbGVhc2UyMy1tYWludAorMzgxMzUgMDA1NjJkYWJmZDRmMzdiODMwODdjNjViNDUzNzkzM2M0ZTZiZTI4YSByZWxlYXNlMjQtbWFpbnQKKzM4MTM2IDRhY2Y3YWJlNTgyNTc3ZWU2ZWVhZDcxOGRjNzk2ODYyZmZkNGIyODQgbGVnYWN5LXRydW5rCiszODEzNyBhMTNkOTQ0Y2E3NmM5NzY0ZWMxZWIxZGI0ZWViMTA3Y2Q1MjMzNDlhIGxlZ2FjeS10cnVuaworMzgxMzggMjFkZDUyNGJlMDM2YWNhNGZmYmFkYmI2Yzg1ZTk1NTVlOGRiOTI0ZSByZWxlYXNlMjQtbWFpbnQKKzM4MTM5IDcyY2Q5M2Y0NjNiNWFkMTlhMGI0NzA5NjA4MWE5ZGE1Nzg1NTZmZDMgbGVnYWN5LXRydW5rCiszODE0MCA5Mzc3MmI3MTZlM2Y5MTc4Y2M2ZGM3YzA0MzZhNjEzYmU3MTA5OGVmIHJlbGVhc2UyNC1tYWludAorMzgxNDEgZDhlYzRhZmExZmZiMGFmMmZjMDkxNDhiNTk3OTRkN2I5N2RlMDIwYSByZWxlYXNlMjQtbWFpbnQKKzM4MTQyIGU5Y2VkZTkxZDNjMzJmNmNkMWJlZTQ3Mjk5YmZlZTg5NGQ2YTkyMDkgbGVnYWN5LXRydW5rCiszODE0MyBhZmQ5YjgyZTY4ZjFmOGRhNTQ2MTVjM2JiZmJlYzE3MTY4ZjBiODI3IHJlbGVhc2UyNC1tYWludAorMzgxNDQgYjNhZjdjNmRiMWM2MGRkZDcxNzM1YmIwMzg2NDUyMDIxZGE1ZGNlYSBsZWdhY3ktdHJ1bmsKKzM4MTQ1IGJhOGMzZWFhNDNhNTk3MjZiYjQxNzJkOWFiNTRjNWM5NWYyNDEwYzUgbGVnYWN5LXRydW5rCiszODE0NiBiMmM5OTgxOTgzMDQ5Yzc4MjFlYWRhY2Y0NTMxMTJiYjZmZmU3Y2RiIHJlbGVhc2UyNC1tYWludAorMzgxNDcgZWFiMTc0ZDBlZDAzMWFkNWNmNTQ0ZGY3NWVlZDYzYjVlZTk1MmE5YyByZWxlYXNlMjMtbWFpbnQKKzM4MTQ4IGE4YTRhZmUxOGI2MTM0YTMwMzQzNTdlZjczMzIyZjk4ZTMzYzQ1NDAgbGVnYWN5LXRydW5rCiszODE0OSBlMjIxZDk5NTQ2MjY4OTVhZTUwMDhiM2I5ZGYwY2VmYTA1Nzk0OThkIHJlbGVhc2UyNC1tYWludAorMzgxNTAgZjc1YWM4NmJjZWY0NGVmNGY4MGY0NTc2OTllYWVjNGM5ZTdhNDg1ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTUxIDU3YmZlYjUzZjJmYTM0YjIyM2ZkN2U1NTAwMzgxNzE0MDZjZjU2ZjkgbGVnYWN5LXRydW5rCiszODE1MiAzZWM1NGM1ZjcwODE0OGNiMjYyZGQyMWM4YTM1MWRhNTNkNzQyNWIyIHJlbGVhc2UyNC1tYWludAorMzgxNTMgNWRjMjc0ZTE1ODIyNzY2YmJjYjEzNmVlOWJkNjkyMjQzNTRjYjBmNCBsZWdhY3ktdHJ1bmsKKzM4MTU0IDE4MTBkZmQ2MTVhZTdkZmQ4YWYxN2Y5OGQ5NTc5ZDhhZTE2OTdmZTQgcmVsZWFzZTI0LW1haW50CiszODE1NSA3NjIyOTA5NjUxYzUzZDc4YmM5ZjdhZWMyYWZjNjg3NjExZTc3ZDZmIHJlbGVhc2UyMy1tYWludAorMzgxNTYgNTM2OGQyYjdkNjZhMGE1N2U5ZmFhYWIxOWE3YjU2ODNmNDNiNGUwZiByZWxlYXNlMjQtbWFpbnQKKzM4MTU3IDRkMzgzYjk5OGJiNDhmNDc2OTQyMGExZTc3NTYxYzFkYjNhNzc0NzkgbGVnYWN5LXRydW5rCiszODE1OCBjZDUxNzcwMWZkOTNjOTQ0OGM1ODIzNzE0MjdhYTg0ZjA1NzE1OGE2IGxlZ2FjeS10cnVuaworMzgxNTkgM2U5YTRkNTMxZTU2M2RkOTRkODM2YWI5NDgxMzgzZDA0MDU2OWM0YiBsZWdhY3ktdHJ1bmsKKzM4MTYwIDQwNzI1ZjMwNGUxOGQ3M2Q5NDhhZTFhMGVlOTA1MDRkNmEzYTM0NGMgbGVnYWN5LXRydW5rCiszODE2MSA2N2YyMTkwZTFmNmQ5YjY1MDU1MTkwMTJhYTk5MDQzMjA1YWEzZGI2IHJlbGVhc2UyNC1tYWludAorMzgxNjMgNTZlNjEwMzI3YjgxNmM1YmU3YjlkZjk0ZGQ3MTZhMGFjNTliZWY1MCBsZWdhY3ktdHJ1bmsKKzM4MTY0IGRjOWQwYTllZGU4ODY0ZDNiYjY3OTM2ZGI0ZTcxNGFkOTdhYjBjMTAgcmVsZWFzZTI0LW1haW50CiszODE2NSBkZjM4MGUxOTZjNGI1YWEzNDQ1YTA2NzFkMjMyODNlZjk1MTk2ZjQ2IGxlZ2FjeS10cnVuaworMzgxNjYgMWQ2MjVkYWVkNTk0NDI4MjM2OWI4NWViODBlNTEyOWE2MzJkYWY5YSByZWxlYXNlMjQtbWFpbnQKKzM4MTY3IDFmN2NmODUyMWJiNTg4NmI1YTBmODI0MjNiNGRjNDBmMmMzYTQ5N2EgcmVsZWFzZTI0LW1haW50CiszODE2OCA5OThmYjFlMWM4ZTlhNmQyM2NhMmU2NjMyYjMzZWU1Y2Q3Y2I2OTQzIGxlZ2FjeS10cnVuaworMzgxNjkgY2IzMGNmY2IzOWU3NDQ1NzJhNDI4N2NmYmIzZTNmMGE4NDJjNmU5NSBsZWdhY3ktdHJ1bmsKKzM4MTcwIDk5MTA0MWY3NjQ0NzhjOTA1YWVmYjM5MzBlNzM5NmI4NDMzMjA2YjAgbGVnYWN5LXRydW5rCiszODE3MSAwYzMyNjMyN2U3MjIzOTFiNmM2NGNjMzVjNWJmNzFlNDdjZmIwZGRmIGxlZ2FjeS10cnVuaworMzgxNzIgZjFjMzVkYTY0ZDU1NGQzZDZhNWMwNTRhODE0NDQzMTJhZjgxOTg4OCBsZWdhY3ktdHJ1bmsKKzM4MTczIGYwMGJjMjczYWU3MGQxZTlkYmFlMWNjNGQ0OWQxYTQwZDM2MDY4NWYgcmVsZWFzZTIzLW1haW50CiszODE3NCBlOGJmNjIwODNhYzQ0NDZmMzI2ZjE5MzQ5Y2YxYzBmYzVjYjY0YTAyIHJlbGVhc2UyMy1tYWludAorMzgxNzUgNjBhNGIwNjRhMjQ4MGE3MDk3YzZkMmQyNmFhZjU3NTE1NDM2ZDE0ZCByZWxlYXNlMjMtbWFpbnQKKzM4MTc2IGJiY2Q4MTI3YjMyNjgyOTQ2NWJiNDRhYjBlM2RiY2U5ODIwNzUxZTkgcmVsZWFzZTIzLW1haW50CiszODE3NyA2MTI3YzA4OWEwNmM5ZTIyYjVlNGNkZTc5MDFhM2NkN2EzNDA2ZGQ3IGxlZ2FjeS10cnVuaworMzgxNzggNzlhZGUyZGRkMzA2ODgxZDE0NGEyNTE1ZDc1YzY0OTQ2N2M1NjU0ZSBsZWdhY3ktdHJ1bmsKKzM4MTc5IDcyNDE3ZmEyMWM3ZmNkNzVlOTViN2E5YjVmNTA1NDZlMzVlOWVmMDggbGVnYWN5LXRydW5rCiszODE4MCAzMjE2M2E4YzNiNjlkMzg3MGI1ZmRmNDQzY2ZjMmI2N2M5ODQ2MWZiIHJlbGVhc2UyMy1tYWludAorMzgxODEgZTU4Y2UwNDA2NmNkODIyYTBjZGVhNGIzMmVlNjE1Zjc0MmM3YzgwZCByZWxlYXNlMjQtbWFpbnQKKzM4MTgyIGE2YzgxYWQxZjQ0Y2I3NDMwYmNmYTA2NDlkOTMwMmFlODYyOTRmYzAgcmVsZWFzZTIzLW1haW50CiszODE4MyBhZDhmOWU3NWY2MWQyNDIwOGY1NGVlZjNlODI3OTg1YTQ2OGM0Mjc2IGxlZ2FjeS10cnVuaworMzgxODQgMmJiYzhiNGI1YjkzNzVjMjM0Yjg1YmEzNTEwYjgwZTVlNThiMTEwYSByZWxlYXNlMjQtbWFpbnQKKzM4MTg1IDA5NzQzNzYzNDk2ODliYjI2MTY1OGYyMmNiZWM1N2NkZDYzOGE0MmEgcmVsZWFzZTIzLW1haW50CiszODE4NiBmMWFlNDFlOGFiZjM4OTFlOTZhNjc2YmVjOTU4ODg0ZGMyN2JkYjI4IHJlbGVhc2UyMy1tYWludAorMzgxODcgYjY0N2VkZDNiOTZiODFmNWM1Y2Q3NzRhYTFmZDdiODI2NzJiZjhhYiByZWxlYXNlMjMtbWFpbnQKKzM4MTg4IDQxY2E3Yjc2OGI0ZmY0ZWZlNTg0ZjdlNDQ4NzY5Yjc1YTFkODk4Y2IgbGVnYWN5LXRydW5rCiszODE4OSAzYTk1MGYxYWZjNTVmZjM3NmI3OGJjYzVkZTZmNzFmMWVlMzEwYTQxIHJlbGVhc2UyNC1tYWludAorMzgxOTAgOWRkODdiYTYxNzk1NTAxYTA3OTQ2NzU1NWIzOTRjMTMyNGM2MjE0ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTkxIGVlODA4ZTA4ZGQ2ZmI4OTk1NWMwNTRkYTY2NTYxNWU2YWVmYzI4NDQgbGVnYWN5LXRydW5rCiszODE5MiAwNjY0M2YwNzEzMzUwOTMwNDliZmFhMjllZjI0Mjc0ODE0ZDJmYTk2IGxlZ2FjeS10cnVuaworMzgxOTMgNGU1ZjA2YzRmOTU3OWNiYzdiYmQ1NmY0YzQxNWZjODkyNzJjODhiNyBsZWdhY3ktdHJ1bmsKKzM4MTk0IGZmZTc1NDJmOGYxZjdhNzg0NTQ3YmMxNjM3MjQwZjZiOWVkZjVlYTYgbGVnYWN5LXRydW5rCiszODE5NSA5Y2FmOWNkNTQ1M2Q5ZTk2MjU2MWU1ZDI3YmQyNTUxYTNlMWFhZDY1IGxlZ2FjeS10cnVuaworMzgxOTcgNDQ2MTFlNTQ5OWU3YzI3ZTc2ZWQ2MjIxOGMzNDEwNjU0Y2Q3YmQxOCByZWxlYXNlMjQtbWFpbnQKKzM4MTk4IDNmYzhlY2U5ZDJiODBhNDAwYWFmMDg4YjAxMzJmMmU5YmJkYTIzNmEgbGVnYWN5LXRydW5rCiszODE5OSBhNjJiM2I0ZmY1MmNiOTE4OTc5MDU0MjRhYzEwZDk3YzZiNTdiZWUyIHJlbGVhc2UyNC1tYWludAorMzgyMDAgYWVjNTk2NjUwMjkyMzQ0MjZjZjAyMzRmNjhmYjcxMDRmZjYwOTFiNyByZWxlYXNlMjQtbWFpbnQKKzM4MjAxIGQ5MjZiOGE1ZWY2ZTM0YTI0M2ZjMGVmNDI1NmJhNDBjM2VjNzBkNjAgcmVsZWFzZTI0LW1haW50CiszODIwMiA4NGY0M2QzYTE1MzU0YTI0NDg1NGNjNGZiZGJhOWQ1ZTMwNWNjMTlhIGxlZ2FjeS10cnVuaworMzgyMDMgZTZiZjJlNzI5NDFlZTBlZWYzNTFiMDc1MGYxZGFjY2MzYjg5NGViOSByZWxlYXNlMjQtbWFpbnQKKzM4MjA0IGUxNWNiNjJiM2ZmYmRlMGIyN2EwZDEyNGYzOWEzZmYxNzRmMzg4N2UgbGVnYWN5LXRydW5rCiszODIwNSBiYTI0YTAzMjRhMDMzYWVjZDM3ZDYwNjc3NWVlYjYyNmRiYTFkOTEyIGxlZ2FjeS10cnVuaworMzgyMDYgZGY5NWE0MTUxNWM0MTQ0Y2FhYzVhYzk4MDI5NTEwYTA4NTU3YjNkZSByZWxlYXNlMjQtbWFpbnQKKzM4MjA3IGJlNDkyOWU1MTc5YmMwYjMyOWIxMTQ5ZDQwMmNlMWJjMmUxOTQ5Y2EgbGVnYWN5LXRydW5rCiszODIwOCBmODBiYjhhZmY0MTkyZmNkMjI0NDNkNmM1YTQxNTg5MTRjZDRjOTgxIGxlZ2FjeS10cnVuaworMzgyMDkgOGY4ZjU2MGNlYzk3ZWM1YmJiOGQxODQxMDlmMjUwNWMyYzcwMWRlNSBhc3QtYnJhbmNoCiszODIxMCAyMDgwYzhjNDc3Mjk3N2Q4OTg1YmYzNmI1OTYwYTAwOTE1ZDY0NTUyIGFzdC1icmFuY2gKKzM4MjEyIGY0MmE3YzMzNWE1YjlhYjAwYzAzNDIxM2FlYzIxNjA4NDNhMzlhOTAgbGVnYWN5LXRydW5rCiszODIxMyA4MjQzZTUxYTIyZGVlZmU2NTI0YzNiMDNmNWQ5YWU4YWE0MDBiOTc3IGxlZ2FjeS10cnVuaworMzgyMTQgYTBjMGNkM2U4MWZkNDc3YjhjZjVlMGUwNzZhNTE2NTgyN2E2MzA0YiBsZWdhY3ktdHJ1bmsKKzM4MjE1IGJhZWIwOWY2MGM4MjgyNjVhZWQwZDVjM2E4MzhmZWUxYTZlZTlkMTcgbGVnYWN5LXRydW5rCiszODIxNiAzZmVlN2M5MTE2YzkxZmQ5NTBiYzZmNjYzMDVhNTA3N2Y2NWVjOTdiIHJlbGVhc2UyMy1tYWludAorMzgyMTcgMjZjY2NmM2U4NDgyOTYyNmY1YjAyMWI3NWRhZWNkMzVhOTkxNTU5ZCByZWxlYXNlMjQtbWFpbnQKKzM4MjE4IGE4ZWNkNGE5NjgyNTY5NTFmOTkwYzQ3Y2MwNGJlYzYwMGU5MTM3YjkgbGVnYWN5LXRydW5rCiszODIxOSA2M2YzNDQ1ZjJmNTk3MzUwNzc4YzhkNzQ0ZDA3N2FlZjAxYjliYmM5IHJlbGVhc2UyNC1tYWludAorMzgyMjAgNTZlMGNjNDM3YjhiNTA1ZjIyYTRjZjQ2MjA4YWFhMTM5ZGMwZGZlMSByZWxlYXNlMjQtbWFpbnQKKzM4MjIxIDY4MDA2MDAyNzllZDYzZTFjNWZlYWE1ZGRhNmNlY2RjY2U3NWY2YTcgbGVnYWN5LXRydW5rCiszODIyMiBmMjYzZjk0M2VmN2IyMGFhMGY3NWU0Y2E0ZjFiNWMxOTZhYzAxODUwIHJlbGVhc2UyNC1tYWludAorMzgyMjMgYTEyM2ZiNGQ0NWJmNGE2N2Q0NTAyNTMyZTc2NGQ4NTEwMzkzZmFjZSByZWxlYXNlMjMtbWFpbnQKKzM4MjI0IGNhN2Y0MzE1YjIxMjZmN2M2NGYyMzUzMjMxNGRmZTQyYTJlMjMyNjggcmVsZWFzZTI0LW1haW50CiszODIyNSBlNTFhODIxNjI4NDY0ZjI1Y2JhYjY3YjRhMDk2NThiNzMwNTAxNWUwIGxlZ2FjeS10cnVuaworMzgyMjYgYjJkMzg3OTAwNGNkMDZkYzMxNWI1ZGVmMjA3YTY1ODE2YWZiYTY2YyByZWxlYXNlMjMtbWFpbnQKKzM4MjI3IGI3YmNiZTM5OGJhYTY4OWFkZjI4NDViN2QyNDA4YzA4MDE1ZDI4NDAgcmVsZWFzZTI0LW1haW50CiszODIyOCBiMWE4NDIzM2Q4NTU3ZDNlMjE5ZmRkMDZhNTJlN2VjM2JjZTM1MTExIGxlZ2FjeS10cnVuaworMzgyMjkgZjBkYjliMTg2ZjNkZGMwZTFjNzFkYjBjYTk3MTdiYjBkZjAyZDQ0NyBhc3QtYnJhbmNoCiszODIzMCBkODFiNjE3M2YwNTBiZjk4Y2QyODE2NDJhMTVlZDI2ZjVjY2YxMDRkIGxlZ2FjeS10cnVuaworMzgyMzEgMjMzNjY4ODljNmI5NGMyYWJiN2I1ZDc4YTA1MDdmMzRmOWUzZmUwYiBsZWdhY3ktdHJ1bmsKKzM4MjMyIDg2MTgxNjhkY2EyNzA1NDViYjVlYWZiMDBkYWRlM2M3ZTE4ZDQxM2IgbGVnYWN5LXRydW5rCiszODIzMyBjYzI3YjI0OTc1NWRlNmVlZGE1MDU2ZGFlMzA5YzU1MDc5ODJjNTRjIGxlZ2FjeS10cnVuaworMzgyMzQgMzVmMzE3OTBjNmY5NmJhZmE5MTY4NTUwMTcwNTE2ZWQ2MWJiNjQ5ZSBsZWdhY3ktdHJ1bmsKKzM4MjM1IDE5ZTYxYTJhNTYzMjBjNjUwNjFmNDQ2NTg5YjFjODcyMjk1ODEwNDggbGVnYWN5LXRydW5rCiszODIzNiBhYTI0NmI5ZjYxODRmYjlhOGZlZmRkMWI5YjAyMzE5MGNiNmMyNmIzIGxlZ2FjeS10cnVuaworMzgyMzcgYjIyZWJmYzQ4OGYzMDI0ZjBkMzgxZGNiYzM1MmRhOGMzMWIyNDU1NyBsZWdhY3ktdHJ1bmsKKzM4MjM4IDVjZDRmZmZhZjkxMDVhZjgzNDY2YThkOTEzMjkzOTQ3YjkyNTM2NzAgbGVnYWN5LXRydW5rCiszODIzOSBkYmJlODNjMzI5NGEzZTMxYjBhMDk3ZDc2N2RmMWI1YzZhZGMxYzQ4IGxlZ2FjeS10cnVuaworMzgyNDAgZmY3M2UxNWEzZmI5MjNhMTk5MmE2NzQ2MDljNWE4NDQwYTRlMmZhYyBsZWdhY3ktdHJ1bmsKKzM4MjQxIGNlMjMyMDcyZWFlNjQ5M2JkMTc0ZmM0NTZhY2QyNDA0MDc3NjU0N2QgbGVnYWN5LXRydW5rCiszODI0MiA4YThkODQ0NzY3YjY2NjJmMDU1NzIyYWU5OTkzZWRiMTY0ZWQyZjNhIGxlZ2FjeS10cnVuaworMzgyNDMgY2RhYTE2ODY5NjA4NTVkZGQ4ODc1YTYzZTU5MjJjMjA4NDBmMGVkZSBsZWdhY3ktdHJ1bmsKKzM4MjQ0IGI4OTg4MTM0ODM3NTM1ZDkxMmVjMWE3NWFjMzMyMzA1ZWI0M2M1YzggbGVnYWN5LXRydW5rCiszODI0NSA5ZTMwZDllMmI0MzM2MzkyNTU3NjZhN2I1OTFjNjY2Zjc4MDk5Yzk5IHJlbGVhc2UyNC1tYWludAorMzgyNDYgYzU5NzU0MzNhYTY4NzdmOWQ4MjRiZmNhNTM3ZWVkOWExYmEyZDBiNSBsZWdhY3ktdHJ1bmsKKzM4MjQ3IDJiNDg1OTc0YjQ3MTViYzYyNmFiZTgzYTNmMzc5ZWZmMmRmZjcyMmYgbGVnYWN5LXRydW5rCiszODI0OCBhOTRkYTJjNmE2MjZlNGQzNGQ5YjY5MTVmOGVjYWVkZjQyYmFhNmNiIHJlbGVhc2UyNC1tYWludAorMzgyNDkgYTBiYzQ0MTk2NjNjMzEwNWVhMTQzOGYyMWE2NTMzMTcxNzQ0NzczZSBsZWdhY3ktdHJ1bmsKKzM4MjUwIDI4N2U3MWY0NGQ3OTY5OGQyNjUzNTkwMWQwZGQ2ZjAxMzBmODE1NmIgcmVsZWFzZTI0LW1haW50CiszODI1MSAxYWVhODE1NTFhMjIyZjZiZmIyMjlmZDVkZGZkN2I2NGM1MGU5MDQ2IGFzdC1icmFuY2gKKzM4MjUyIGJhNmUxNzI3MWM2Mjg5MTY5MTEyMTVkZTA3NTc2M2UxYmNjMGY3NmMgbGVnYWN5LXRydW5rCiszODI1MyA0YmQxODBkMTcxY2MwMzQ0ODU3MTBlZjNlNDljZGRkNDE1OTNlM2ZiIGxlZ2FjeS10cnVuaworMzgyNTQgYTMxNjgxYTZjZjg4NzI4NzgzZmYwMDQ5YjYxOTkyMDJmM2VkZWJjNyBsZWdhY3ktdHJ1bmsKKzM4MjU1IDE4Y2ZmM2VkNzRkM2Q5NmRmOWNmMDk2YWFiYTZjOWEwZTNjN2U5ZjMgcmVsZWFzZTI0LW1haW50CiszODI1NiBhMjE2MDAzY2VmMDQ0MDJkODBlMTU1ZGFmNWEzMDA3MGRiN2Y0YTI2IGxlZ2FjeS10cnVuaworMzgyNTcgMzUzM2UzY2I3Yjk3YTU3ZTkzMjM5NWZkNGE0YzU3MTYxMDAxODU4NCBsZWdhY3ktdHJ1bmsKKzM4MjU4IDkxZDU1YTMwMzgyY2JiMDgxNDc5ZjIzODY0NWViZTQwNDg3NzhiZmEgbGVnYWN5LXRydW5rCiszODI1OSBmMjVkY2Q3ZjNlNDg4MGMwNDg3YjE4MDAyMTUyZGQyN2ZjYTVmOGY5IHJlbGVhc2UyNC1tYWludAorMzgyNjAgNTk4ZDE2ZmEwMmMxOTkxMjE0OGM0ZDMyZTdmOTk1NzEwZGE2YTU4YSBsZWdhY3ktdHJ1bmsKKzM4MjYxIDczOTFlMThiMGE3Y2RkZWY2NDQ3NDk2YWJjN2UzMzUxZTUwYjAxNGMgbGVnYWN5LXRydW5rCiszODI2MiAyOGY4NDkzODQ2OGRlYTFlNTNjMWEzZjQwYjMzYmM4NzkyM2ZmMzNjIGxlZ2FjeS10cnVuaworMzgyNjMgMGExNjA4YTVlYjA1YWVlNDlhNDgzOTU3MDQzYTYyZjhhMjE0MDUxYyBsZWdhY3ktdHJ1bmsKKzM4MjY0IGUyYzEwOTdkN2U4ZmIwYmU1MTc4MzNkMzllYmM3YmNhYTBiOWZkYWEgbGVnYWN5LXRydW5rCiszODI2NSBiNmVjMWIzYjlmY2U3OWM3N2RmMTcyNjc1ODU2ZmVlNjY3ZjA0YTI4IGxlZ2FjeS10cnVuaworMzgyNjYgYjQ4MGFiYWYxZjZmNmU2YWI3ZDJhNTNhMjE3NmNmZGE5NTZkNWM4NSBsZWdhY3ktdHJ1bmsKKzM4MjY3IDZjMDJiYjNmY2NhNjc5MDk4MDk4MmUwZjFkMDlkMTNlNjU1YTkwZDUgbGVnYWN5LXRydW5rCiszODI2OCA3MDU5ZmI4YjllYjM5MzRlNWVmNTE3MDZkN2NjYWMzNWQwMDVjMzg4IGxlZ2FjeS10cnVuaworMzgyNjkgYzRkYjk5MmY4NDBmMzA0ZWRjYTYwYTI3MzJjOTI0Mjk0ZjNhNmY0ZiByZWxlYXNlMjMtbWFpbnQKKzM4MjcwIDQ1YTMyMGYzOGM0ODkwMWYzNWJjNGNmZTIxMzU1ZmU1ZTdkYmM0ODIgbGVnYWN5LXRydW5rCiszODI3MSBkNzk2ODYyMWQyOGQyZTdjZDE5NWFlOGMxMzIyY2UxMDNhMDMzMjI0IHJlbGVhc2UyNC1tYWludAorMzgyNzIgOGJiNDZmZGNlOGZkMzg0NDFlYTdjMjQ1NTI4ZDY2MmE5NTY2MzQ4OSBsZWdhY3ktdHJ1bmsKKzM4MjczIGE5OWY1YWQyOWVhYzY0YTJiZjA0N2JhYmY5ZGE0NWQyODlmYjY0MzAgcmVsZWFzZTI0LW1haW50CiszODI3NCA4ZWNhOGQ5ODAyNjBkZWQyNWEyY2NlMTg4N2IxY2UzNWNiY2UxOGU3IGxlZ2FjeS10cnVuaworMzgyNzUgMTNhODU4MDZiYTQ4Yzk3OTMzMTBhNzI4NDdmZDM0YjgxNmMzOTQ3MyBsZWdhY3ktdHJ1bmsKKzM4Mjc2IGE4NTk5Yzc4ODIxOGQ4ODg1MjI3YWUzOWZmNWM4OWM5YzljOTNiOWQgbGVnYWN5LXRydW5rCiszODI3NyA0MjgyZjg4MmIyODU5NTZlM2JlYWQ3YjEwYjNjNGJkYmQ2ODg1MTZiIGxlZ2FjeS10cnVuaworMzgyNzggYjkzODQ1Y2U0NDU0OTVlM2I0ODVjYjZiMzlhZWQ1ZjE4M2I3MDExMCBsZWdhY3ktdHJ1bmsKKzM4Mjc5IGM4OGFiMjkyYmYwNTI4YWE5NWE2NzEyZDBmMTI1OWEwMjEyODVkNDEgbGVnYWN5LXRydW5rCiszODI4MCA3MmZkMzczY2QwZjk1YTFjMmY2ZWQ0NWM2YTE5NzBhNjlmMjIwZmNlIGxlZ2FjeS10cnVuaworMzgyODEgMWQ4NjZjMDJhOGNhYjIwNWJiMWE0MDJiYTk3NzBhZTQ1ZWE0YTk0MyBsZWdhY3ktdHJ1bmsKKzM4MjgyIGE3MGRkODc2N2IwNzFiMzQyNjZkZGJiMDYyZTVjNjMyMmY0Zjg4OGUgbGVnYWN5LXRydW5rCiszODI4MyAwMmYzOThmYmIwZjA2ZDE3YzQ1YjNhYjA2ZTQyOGJjOGMxNThlMDczIGxlZ2FjeS10cnVuaworMzgyODQgYjMyYWUwZWVjZGVlNzFhZDBmYzRiNzg0OWVjYmU3MmY0OWRmZTc0NiBsZWdhY3ktdHJ1bmsKKzM4Mjg1IDhmNTczMGEzYmM0YWJmNzI3ZTk0MzczNDY2OTQ1ZDY5ODIwNjYzZDggbGVnYWN5LXRydW5rCiszODI4NiAzNDczOTJjOGViOGIzNmM1M2NiNWVlYTIwYjIxMTM2NmRjMzM2MzMzIGxlZ2FjeS10cnVuaworMzgyODcgOGZjMDMwYzVjNzBhYmUyOTE5MTI0NTQ2NGZjODhlM2E5YjkzZWVkMCByZWxlYXNlMjQtbWFpbnQKKzM4Mjg4IDU2M2NiZjRkNmJlNDY1NjVmNDVmMDQwNWJlZDgzZTIxZDc1ZTA5NDkgbGVnYWN5LXRydW5rCiszODI4OSBmZTdhMTU0N2YyZmFlYTQ0OGZlYWJlNmU1MTZjM2JlNDY3M2FkMTFlIGxlZ2FjeS10cnVuaworMzgyOTAgZmE2NWUzNDI1YTRjNWFkNmQxYTBlZDYwNzFkNGUxYzA1ODkwNWEyNSBsZWdhY3ktdHJ1bmsKKzM4MjkxIDY1MmI4NWQzNWE3NWRkYTEwZTJkMzMxYTU3NmU5M2EwZjczNzA3ZWQgbGVnYWN5LXRydW5rCiszODI5MiAyNjlhMmMxNGJjNTcwODRkMzZkODNjYmQxY2VjOTgzMmFiZmZlZDEyIGxlZ2FjeS10cnVuaworMzgyOTMgMzMxNmFhNTQwZTY4YzgwNzI4NDE5MWVlOTYyZmYxYjYyZDQ0OTc3YyBsZWdhY3ktdHJ1bmsKKzM4Mjk0IDEzOTM0MzQzYTUzYjgzMjYzMjQyNzE1OGJlNWFjOGE0NjBkZWM1ZTggbGVnYWN5LXRydW5rCiszODI5NSA1NDQ5YjdmODA2ZmI3ZGYyYzIyZWYzODAxZWVjMTU3ZGE0MWZlM2ExIGxlZ2FjeS10cnVuaworMzgyOTYgNWJkMmIzZTRmZGNjNGY1NzEzMDkyMGNiZTUwNTUzMGNiZjYyMGVlMiBsZWdhY3ktdHJ1bmsKKzM4Mjk3IDg0MzZhMjk1NTkxYjY4Y2E4MGE5MDQxZjZmNjRkNDlmZWE1ZDlhNmEgbGVnYWN5LXRydW5rCiszODI5OCA0YjhmYThiMGFmOTE2ZWU1ZDA0MmYyYWUyYWI3ZmJjZjNmZjAxZDcyIGxlZ2FjeS10cnVuaworMzgyOTkgZGMwOWNjOWIyZWU2Yzc4ZDI4NGQ1M2VhNTMzZTBlMDFmNzkyM2EwYSBhc3QtYnJhbmNoCiszODMwMCA2ODljMjMzODVlNGY5ZGQxMjNkNzkyYzcxMTM3N2JhOWI3MGFkYTA5IGFzdC1icmFuY2gKKzM4MzAxIDRhZjNiZmZlNTYyMDNhZWQyMmNjZTE0NThjYjQ4ZDEyNTg3OGI5OGYgbGVnYWN5LXRydW5rCiszODMwMiA3MjhlZGVmYjFlMTczNTZlOGY3ZDYyYmMwN2E2NWJjMjZjZGU2YjhiIGxlZ2FjeS10cnVuaworMzgzMDMgZTEzMDU4OTRiZjA5NmE4YzljOTZlY2FiNzk4M2UwODQyNDM5MjU1NyBhc3QtYnJhbmNoCiszODMwNCA0OTAxN2Q5ZWY2Yzk4NmI2ODczOGY0ZjFlODFjNmFhODhhZjIwMjNmIGFzdC1icmFuY2gKKzM4MzA1IDRiNzRmZjA3OTY1MmJmNWRiMDI5MWE5N2Y3ZjMzMTYyMjM5ODVmNzAgbGVnYWN5LXRydW5rCiszODMwNiA2OWI2OGY5MWNjNzc2NjkwY2I2MzIzYjQ5ZTQzMDBiODEwY2ExNDU2IGxlZ2FjeS10cnVuaworMzgzMDcgZjU2NDYzNDk0YmZkOTRlZTVhN2QwOTcwM2VkOWMxOGU2NjllNTE1MyByZWxlYXNlMjQtbWFpbnQKKzM4MzA4IDAzOTgwN2UxZTRkMTI4MmI5NzFmOTE4ZmE3MTE0ZTJhYzFhMGJjYTUgcmVsZWFzZTI0LW1haW50CiszODMwOSBlMWE3ZWI4MzJjYjUxYWJmOGI3ZGY1MmI1ZmZmMDI3MGYwZDUyMjFiIHJlbGVhc2UyMy1tYWludAorMzgzMTAgNGFhNTU0YjAwY2IwYjU1NmQwMjgzYzEzOTgwNGI1ODc4MTg4ZWNkMyByZWxlYXNlMjMtbWFpbnQKKzM4MzExIDIyNDZhYjkyMmViNDhlNDAwMDM3YWYxODQ3YjI5YjAzZmQ5ZDIzNTEgcmVsZWFzZTIzLW1haW50CiszODMxMiA5NTVkYTA4MGIwY2YzNjgwY2I5ZDk3YjY3MjYxN2Q5MTUyNWIzZWEzIHJlbGVhc2UyMy1tYWludAorMzgzMTMgN2Q5OTk4MWIyZWNlMzJlZDdhODcyMGNjYzY5ZDkwY2RhODcxZjQ3MyByZWxlYXNlMjMtbWFpbnQKKzM4MzE0IDZmZGJjNGU4MzNlMjBmZjk0NjcyNjk2ZmNmODNmMGVhMzRiZjZhNWMgcmVsZWFzZTIzLW1haW50CiszODMxNSA3NzVhNzJiOWQ1MmNkYzc2OGEyOWU4NTExYWZlOWJiOTlhMmY2YzcwIGxlZ2FjeS10cnVuaworMzgzMTYgZWQ0ZGMwNWVhNGI4YzEyNmFhNzA3YWIwZTM2OTE5ODg4YjdjYjY1OSBsZWdhY3ktdHJ1bmsKKzM4MzE3IDE4ZjZjZWJlNDdhYWFlNzM1OTlkMmUzZWNhOWM0NjFlYjNhYWIwMWEgbGVnYWN5LXRydW5rCiszODMxOCA2ODM3MTllMDQyMTgxODJiMDJlZDZhM2NkODQwYTc3YzcwYjVjNTNmIGxlZ2FjeS10cnVuaworMzgzMTkgY2Q2YjU0YmEyNzJmYjQ3NzRiZjdkOWRjNGI5NGY3MGZiYjE5MzdkNiBsZWdhY3ktdHJ1bmsKKzM4MzIwIGQ5M2I2OGE5OWY5NmUzODE1NjQyZmUzNjQxM2JlZmVlNDJkOGY5NjcgcmVsZWFzZTIzLW1haW50CiszODMyMSA2Y2YzOTlhYWZjNjY4ZTQ0MjYzYzBjMTFjMjdiODQxNmYzOTg3ZGIxIGxlZ2FjeS10cnVuaworMzgzMjIgMjFkZDczM2ViMTE4YzNiYWZlNzlmODc4Y2Y2MGNjN2M3N2RmNGMzMSByZWxlYXNlMjQtbWFpbnQKKzM4MzIzIDhjMGUzYzBhMjMzY2FjM2FjNDdmMGE1NzNhYjRmMWNlOGQxNjg5YjAgcmVsZWFzZTIzLW1haW50CiszODMyNCBhMDYzZjBkNmRiMjgwZTRlNDVmZGI5YTQ4YzY2NjM0MjE0NTIwOTk2IGxlZ2FjeS10cnVuaworMzgzMjUgYWY2MzBlYjI2ZDU5YjdmMWNkOTQ4Y2ZiNjFkZTgxOGQyZDVjMmQxZSByZWxlYXNlMjQtbWFpbnQKKzM4MzI2IDI5MzFmNjUwNGFmNWMzZDYwYWUyYmVhNmJjYzBjNWM2ZTIxMmRlZGIgcmVsZWFzZTIzLW1haW50CiszODMyNyAyZWVlOTBlZjMyYWJjNzI3NWE3ZDY2ODU4YTY3ZmYyNDdlMmM4YzU5IHJlbGVhc2UyMy1tYWludAorMzgzMjggYWQxMjYwNTRhZGU1NzUwMGM5ZTQ3OTk4M2Y2NmYwMWRlMDM3ZDNiZSByZWxlYXNlMjQtbWFpbnQKKzM4MzI5IDY3MGRlMzAxYjg4N2YxMDFiYWY5NDVlMjM4NDJkMjI5ZmE2MGRkMWYgbGVnYWN5LXRydW5rCiszODMzMCA1OTUyM2ViMzVjMWQ3MTI2YzAxN2YxZDI0NDhmYzRkOTIzY2NjZTM3IGxlZ2FjeS10cnVuaworMzgzMzEgYTA5M2FlYmYxYjQwZTdkMTE2YzdkZjM0ODZlYjdjNzMxZTNmNmJjNCByZWxlYXNlMjQtbWFpbnQKKzM4MzMyIDY2MDVlMTJiYzE2ZDcxM2UzNzkyNjAyMzEwZGQ5NDE0MWUxNDI5MjQgcmVsZWFzZTIzLW1haW50CiszODMzMyA1MWEwZjBhZDQ2YWMwZDljMzE3YzVmODI5YWVhNWVlZTc4NDdlZGE0IGxlZ2FjeS10cnVuaworMzgzMzQgNzBhMDQ0OTc1NWUyNjFkYjgzYmZjYmI4OTViZDdkOGFmNGM0NjlhZiByZWxlYXNlMjMtbWFpbnQKKzM4MzM1IDFmNWMyMzUxNjA1YTE1N2RjZTFjOWI4NzIwMmI2NGY5NjIyNDJlNmQgYXN0LWJyYW5jaAorMzgzMzYgMzI5OGFlNmYzNjY1ODdjMDU3OGUzMTg1MTljNDE0Zjk1MTIxNGU3OCBhc3QtYnJhbmNoCiszODMzNyA4YjY1NDhmNWYyNzlkZDk0YTBkOGVhYTYzNTVhMTI1OTRlOTc4NmEyIHJlbGVhc2UyMy1tYWludAorMzgzMzggY2MzYmQ0ZTRkOWYwYTU2MzE1M2UxYjRjYmE0Nzc5ZTcwMTQ1MzBlNyByZWxlYXNlMjQtbWFpbnQKKzM4MzM5IDAxMzNiMDIyNjI2ZWIyY2I0NWZlNjdiNmJhZWU1N2IwMjExMmMwOWMgcmVsZWFzZTI0LW1haW50CiszODM0MCBkNWRkZDA2ZDU1ZmM5ZGEzZjFmNGEwNDg3ZmMwMmYzYWRlNWY5ZjQyIHJlbGVhc2UyMy1tYWludAorMzgzNDEgOWQ3NjM5MzdhMjViNGI0OGFmNDgwMGMyNmNhZGI0YTI5YjBkOGFhYyByZWxlYXNlMjQtbWFpbnQKKzM4MzQyIGZmNTNkMTQ3MTdjNTI4MTM1YTQ1NDQ0NjdlZDU0M2ZkZjlhOWRmMzkgcmVsZWFzZTIzLW1haW50CiszODM0MyA3ZGYwNzdmNDcwNTY5MGQyNWNkN2E1N2RkMThmOTA4NjhjODhkZDA1IGxlZ2FjeS10cnVuaworMzgzNDQgZDVjZTg4ZWJkYmJkMGQ3NTAxOThjNDQ3ZGQwMGNjNWNiYWZlYmVlOSByZWxlYXNlMjMtbWFpbnQKKzM4MzQ1IDgzYzk3NWI0YTJjMzcyMmEwNmQyYjU5MzM5ODIyZTZjODM1MzBlNTAgcmVsZWFzZTI0LW1haW50CiszODM0NiBjNDQxMzMwN2EyZjMxMGJjYjc2NzVlMjZhNTcyMTkyYjFhYjNhMWVjIGxlZ2FjeS10cnVuaworMzgzNDcgZjczOGQ2NGM4MjdkMzA4NzE4MDZmYjcwNDYyMzM0MGZhZDliMzY1NiByZWxlYXNlMjQtbWFpbnQKKzM4MzQ4IDYzZmNkNjdlMzMyOWFiM2MxMjA2ZTNkMWMwMmQzODUyZWEyNjQ1MjIgcmVsZWFzZTI0LW1haW50CiszODM0OSAyYjI1OGYwY2JjMzFjYjk1ZDFmMTJjYWIwOTE4NzQ0MWJkZThjNGNkIGxlZ2FjeS10cnVuaworMzgzNTAgMGY0MWZlM2ZhZGY0NWUxZjg5Y2I0YjAyYTBkNzc2MTQ4YzA4ZjE4OSByZWxlYXNlMjQtbWFpbnQKKzM4MzUxIGYyNDZlNDQ4NTYzN2E5NGU0NDEwODBlNjViNTk1ZGQ3OTcwYzI4NmIgcmVsZWFzZTIzLW1haW50CiszODM1MiA3ZjUyNDE3ZTUzMGIzNGRiMjkwNjliYzI4YTI1NGU5Y2IxZDMzMjI4IGxlZ2FjeS10cnVuaworMzgzNTMgMjM2OWRmZTJkYWQ0NjllYTVjOWQwZjI4OTcyOTE5YTNkYTNjMGQzMSByZWxlYXNlMjQtbWFpbnQKKzM4MzU0IDk3MjQxNzQyNjIyNDdhM2FhZTcwNzBkZDVkZDQxNjlmMjFiNmFjYmMgcmVsZWFzZTIzLW1haW50CiszODM1NSBiNzQ1NTk1ZDQxZDFmMTYzNDE4MDBkYmQwZWM0M2ZiZDY0NDk4YjE1IHJlbGVhc2UyNC1tYWludAorMzgzNTYgZTNkNzQ4MzBlZDJmYTdkNWYzYmM2MmM5NzkwODI4MTM3OGQwMjU0YSByZWxlYXNlMjMtbWFpbnQKKzM4MzU3IGI5YmM0OWI1M2Y0ZDYyNWQ1Yzk0M2U2NmMxZjk1NzJhZGVkMzZkNDQgbGVnYWN5LXRydW5rCiszODM1OCAzNmFiZGQ0NzhlMDc0MWYyNDBiNDk5ZDY3OTIyOThiMzJjNzY5OTY3IGxlZ2FjeS10cnVuaworMzgzNTkgOWM2MmU3ZDY5MGE1MmFhOTg1ZDBiYmI2Zjc4ODc2MWQ0Zjk1ZWE4MiBsZWdhY3ktdHJ1bmsKKzM4MzYwIGU4NTJjZjZhYjViNTUyMTdhOTg1Mjk1ZjA2YzhhYjM5MDMwZTY2MjIgbGVnYWN5LXRydW5rCiszODM2MSA0YTFmZWZkZmM3OTMwNDYzMzMxZjgzZWY3ODY1ODRkMzJmYWMxN2I4IHJlbGVhc2UyNC1tYWludAorMzgzNjIgOGM5ZTNlZDU5NGZlZDJjODY2MTljMjlhZWY1NDllMGFjMzk4MTVhNyByZWxlYXNlMjMtbWFpbnQKKzM4MzYzIGJiMDY1NGNmNWU1MjA1ZTM3MzhkZjNkY2VjZDY2MWM5MTNiZGNkNDcgbGVnYWN5LXRydW5rCiszODM2NCA0ZDI5ZWIzYTNkZGJmMmMzM2EwZTNjYzQxNjZhZDg3NWYyZWU2ZWM2IGxlZ2FjeS10cnVuaworMzgzNjUgNDFmMjllMjZmNjhmNDQ4MDhkMzdlNjJiMmMxNTU0M2FjYmNhNDg0YSBsZWdhY3ktdHJ1bmsKKzM4MzY2IDQyMDllYzE3MDZhYmExNzU3YzQxYWZjMjNiNzFhODY5NmNkMTY3ZGIgbGVnYWN5LXRydW5rCiszODM2NyBhNzJlZTYzYzZjODQ5MDIxNmM5NzJjY2VhY2VhMjg5NTM0Yzk5NWI1IGFzdC1icmFuY2gKKzM4MzY4IGZjNTgwZmYwMGY2ZjU3MGM5ZGMxZTcwZmI3YjdiYWNiZmI1OWY3MzkgYXN0LWJyYW5jaAorMzgzNjkgNmIxYzdiMThmNTlkODdiNTgxY2IyMzc0N2VmY2I0NWNhOGNmMWQzMCByZWxlYXNlMjMtbWFpbnQKKzM4MzcwIDZlNzAzM2M3NGM3MGI3YzA4ZTlkYzQ2ZTMxZTVmOGZkOTVjMDY0ODQgbGVnYWN5LXRydW5rCiszODM3MSA2ODAyMGJkMWI5ZTJlMmVjOTMxNGYzYjdkNzk1MmQ3NDllMzhlNGMxIHJlbGVhc2UyNC1tYWludAorMzgzNzIgNmI2ZTZiOTgyYWM4NTdiZjc1YmE3YWNjMDQ2ODQzNWMwZmVhZjk1YiByZWxlYXNlMjMtbWFpbnQKKzM4MzczIDA4ZTNjYThmYjA3MWY1OWE3YzAyYzcxMGU5N2YxOTY4ZWU1OGU5MWUgbGVnYWN5LXRydW5rCiszODM3NCA0ZGE0NjI1OGJmZjhjZWM5NjFmMTY2YzI2N2U2MmRiNzZjMjZkMGM3IHJlbGVhc2UyNC1tYWludAorMzgzNzUgYzkzMzdjOWQyZjJhOTQ2NjFkMWUwYWMwODJkN2E3ZWUyYzNiMGQ1OSByZWxlYXNlMjMtbWFpbnQKKzM4Mzc2IDhmNjA5ZWFhYzNmMDAyYTMwYzA1ZmRkMTQwYTQ0NGU0MmQ3YTk4YjEgcmVsZWFzZTIzLW1haW50CiszODM3NyA1MTZjYTBiOTI5NzFiNzAzOWVkYjVmNjA0MjMzM2UyYjgwNWZkYmNiIHJlbGVhc2UyMy1tYWludAorMzgzNzggYWJiM2MxYWQwMGE3YmI1MWMzY2VmNTU1NzQzZTA3ZjdmYjhiMDYxOCByZWxlYXNlMjMtbWFpbnQKKzM4Mzc5IGFlNzMyODY4OTdhMzRhMzllMDFhOWYxNjMzMjhlMjI3MmZhOGY5MjkgcmVsZWFzZTIzLW1haW50CiszODM4MCBjMTY0MWVlZGE3YzkyODU1MDcyNjlhY2JmZWIxY2E0NjhlZDdmMWY3IHJlbGVhc2UyMy1tYWludAorMzgzODEgNDQwYzI1YmQ5OWRmODVjNDk0YTk2MWNlNGJhZGYyYTYwODNmNDYxYiByZWxlYXNlMjMtbWFpbnQKKzM4MzgyIDg3MjI0ZjJjNWUxMDAwMmRhNGQwZGJkNDNiZDY0OTIxZmU3Y2E4MjggcmVsZWFzZTIzLW1haW50CiszODM4MyBjNGY3NmVkMmVhZmEzZjdhNWI3ZGZkOGIyOTJhM2JmOTcxNzhlOTYwIHJlbGVhc2UyMy1tYWludAorMzgzODQgZTk0OWQ0NjM1NzJjZTY2MTFjMzE3MzQ0NjM2M2U4ZjY2ZGNiNGU4YSByZWxlYXNlMjMtbWFpbnQKKzM4Mzg0IDI2MzliMTBkYWE5ODViMjBiM2NhYmVjNDUxNjlkNTIzY2FjMjlkNjggcmVsZWFzZTIzLW1haW50CiszODM4NiBiZGE5MzM4NzM3NThlNTRlM2NkNjg5Mzc0MjUxYWQzZjMxZDg1YmExIGxlZ2FjeS10cnVuaworMzgzODcgMThiYTA4NWNjOGJiYmY1ZmVhZDNiOGM1NmQ1YTZiYTEzMjhhNDEwNCBsZWdhY3ktdHJ1bmsKKzM4Mzg4IDEzMTc2ZWQ1MmU2NWM0ODRkYmNmNGY4MWZiOGU3ODQ1ZjNhMzFmZmUgcmVsZWFzZTI0LW1haW50CiszODM4OSA2ZjJkZDA4MWZlMDUxMjY2ODIwNjEwMmJmZGJkODIwMWIzYjRmMjFkIHJlbGVhc2UyMy1tYWludAorMzgzOTAgMWMzNDkwNjBhYzA4ZjM3MGJhNmMyMTRjMjM1MDcxOTRlZGJmMDRmYiBsZWdhY3ktdHJ1bmsKKzM4MzkxIDkxMDM4ODAxZWI0NWZjMzJiYWJjODQzNGIwYTRmMzc1M2E3YmNhYjMgcmVsZWFzZTI0LW1haW50CiszODM5MiBjYjc4OTZkNzdkZTUyMmYyNGI5MWM3MDViZWRmZTgyMGJjZTMwYzRhIGxlZ2FjeS10cnVuaworMzgzOTMgOTI1ZDU0ZGY5MmJlOTUwYmQ1ZWRiN2U2N2I1YjU2OTQ0NTFmMDJjYyByZWxlYXNlMjQtbWFpbnQKKzM4Mzk0IDU0ODEzNGJhMjc5ZmVjMjk0MDNlYzc4NGZmNmEyNzI3ZWUyZjk1NWIgcmVsZWFzZTIzLW1haW50CiszODM5NSBlMzA3NGU5NGZiNzU1ZTBkMTBhZmZlYzMyNTJhMzNhNWZhYjM2NjBlIGxlZ2FjeS10cnVuaworMzgzOTYgNjU4NTEyNzc0NDY4MTUxNTEyMWJiMjFmYjNhM2FiYmU1YzEzMTlkOCBsZWdhY3ktdHJ1bmsKKzM4Mzk3IDliNGUzMThkNmM3MjY3NGVkYmE5ZTE3NmQ5NTlmMjNmMWMxZjVjZDIgcmVsZWFzZTI0LW1haW50CiszODM5OCA2YzkwY2I3NjZlNmJhNDBlMjNlZDI0YTNjYTkzYTlmYmQ4NWM2MTkwIGxlZ2FjeS10cnVuaworMzgzOTkgODhjMjllNTFiMDI5YTE4YzI5MmQyODQ4OGVjYjZiYjdmYWE2ZDZiYiByZWxlYXNlMjQtbWFpbnQKKzM4NDAwIDVmZDUwNjUxNjM2MTRkZGZiMmIyMGQ1YjM2YzgxM2FhZTVmNWFlMDYgbGVnYWN5LXRydW5rCiszODQwMSA4MDRjNTY3MzY0M2U2ZWY1MDM4ZWVmMmMyOTc3ZjY4ZjA1NDI0ZDlmIGxlZ2FjeS10cnVuaworMzg0MDIgYTQyMjVjZGMyMDQ3ZmQwZDYyYTc4YmM3MjJmZWJkODJhMTllZTRmYyBsZWdhY3ktdHJ1bmsKKzM4NDAzIGY0MzA3MThmOGI0MzBlNTU1MTk1MDUyZTM2MWNlY2NmYjU1NmEwMDUgbGVnYWN5LXRydW5rCiszODQwNCBmMDEzNDIzMmJkODRkYjMzMjg3YjFjZGFkYjdkZTJjMmJlMGI2ZWQ0IGxlZ2FjeS10cnVuaworMzg0MDUgMGJlMTcyNTlhYWM4ODZjNWM1ZDRiODM3MjhkM2YwZTFkMTRkNDgyZSByZWxlYXNlMjItbWFpbnQKKzM4NDA2IDczNzY0OWE2YzkzNWM5ZjBiMDhmNTZjYzkxYjFiMDUzZGEyMDM5OWQgcmVsZWFzZTIzLW1haW50CiszODQwNyBiODQ2ZGQxYjk3NTEwYWU5MjNiYWZmOGMwODY3MWM0MDNjNWQ2YWNjIHJlbGVhc2UyNC1tYWludAorMzg0MDggMWMwNzI2MTVlNWI4NmUzNmRmYzk0NGJhNzQzMTBjYzA5OGVlMDg2MyBsZWdhY3ktdHJ1bmsKKzM4NDA5IGNkNzQzMjFlY2RjNDdhNzEzMTU4YjY1ZWZiZDBjMjgwZDM5YmNiNDggcmVsZWFzZTIzLW1haW50CiszODQxMCA2OWVkN2U5MTJiM2QyOTcwMTYxZTg3Mzg1N2IwZTliNDVkZTZiNGVjIHJlbGVhc2UyNC1tYWludAorMzg0MTEgY2NmNjI3MmVlZGY0ODRjNTc0OTY4YTE2MjIwNjhkMWRiNWRkZDkyOCBsZWdhY3ktdHJ1bmsKKzM4NDEyIDFiNzhmYzI5NmZjODk1ODg5YTlkZjJiMTdlMThkN2ZkNmY3OTk5NTUgcmVsZWFzZTI0LW1haW50CiszODQxMyBjNjhiZTg2NTkwNzViYmM5OWJhODg1ZTc1N2Y2MWY3MWU5NjdmNzk1IGxlZ2FjeS10cnVuaworMzg0MTQgM2QwMGI2NDI1NTA1N2VjYzk5NTcwOGEwMDM0NGY3MThjYmQzNmVmNCBsZWdhY3ktdHJ1bmsKKzM4NDE1IDNkOTlhZGVmYmYzYzA1MGQ1NjUxOGNhOTE0YmJlNmY3MGUyZTQ3YzQgcmVsZWFzZTI0LW1haW50CiszODQxNiAzMjBjNzY0M2Y4ZTllZjk5MzRjNDA2OGJlM2IxM2U0NWUxODUzMWZlIHJlbGVhc2UyNC1tYWludAorMzg0MTcgNDE3NGY5NzhlNTY0NzMyZDRlYTdlOWE2YjgwOTUwZGM5YmVjMGY0NCBsZWdhY3ktdHJ1bmsKKzM4NDE4IDM3YjJmMTFjMWEwMDVmNzFkY2U5MjU3Yzc1NmVhNjNmMmYxNjYzODkgbGVnYWN5LXRydW5rCiszODQxOSA4MjU5ZmYzZWU0OTM2MTI3YTEwN2M3YTQ1NDYxYTIyZDM0NDEzMTNlIGxlZ2FjeS10cnVuaworMzg0MjAgY2E5MTc5OWNlY2JhMDEzNGJjMzlmOGQyNTM0Mjg5M2EyY2JlOTU2ZSBsZWdhY3ktdHJ1bmsKKzM4NDIxIDllZTk5YTM1NTY4ZDAxZmE4YmFmNjJhM2YwZTJkNjhmMDUwMjQ2NmUgbGVnYWN5LXRydW5rCiszODQyMiA0NjU3MjQ0MjUzNzAwOWUzNzgzNGYxNTFhODQ3NTNlMGU2MWUzYTg5IHJlbGVhc2UyNC1tYWludAorMzg0MjMgN2U1MTAzYjRiMjg5ZDdhYmE4OWIyZWZlOTU1NTFiZjAyMzIzNDViZiBsZWdhY3ktdHJ1bmsKKzM4NDI0IGYyNDExN2EzNjI4YWFkZTYwM2IwMThjNmI2MTUzMGU0NzY2YTBmYjIgbGVnYWN5LXRydW5rCiszODQyNSA5ZDY2ZmJhNzg0NDRmMWIyMTdmNjY0MTI1ZGQxMDc0MDMzYjExNDA3IGxlZ2FjeS10cnVuaworMzg0MjYgN2M4ZjMzNzhmNmY2MWFlZTlhNzRhNzQ1MWUxNmE1ZTNhNzM1YWUxZCByZWxlYXNlMjMtbWFpbnQKKzM4NDI3IDgzNWI2NDVhMTY4Zjc0YzAxYTY1ODc4NzYxMmNiMjQwOGY2ZmQyZjUgbGVnYWN5LXRydW5rCiszODQyOCAxYzI5NDNmOTU0Njg2Mzk2MDNiYTBhZmYzMmMzZTJiNjcxZDRiMzgwIHJlbGVhc2UyMy1tYWludAorMzg0MjkgNjMxNGU5NGQwZDM1ZDk3YmEyZGI4M2E1NzMzMzJhMzY2NzZiNTJkMSByZWxlYXNlMjMtbWFpbnQKKzM4NDMwIDY4NThjMjQ4NDAxMDgyMTMxMDJiMGFlYjYwYjkwOTk5NDg3NDMxYzQgcmVsZWFzZTI0LW1haW50CiszODQzMSAwMjhmOTJlNDRiNDgxNDdmYmYzNDU3NjQ5NzE2MGZjN2ZjYTlmZmMxIGxlZ2FjeS10cnVuaworMzg0MzIgYTI0ZTcwZjQ2ODRiMWQwYmY2OWI5MDEyNWU4OWMyNTVmZjdhNWMyYiBsZWdhY3ktdHJ1bmsKKzM4NDMzIGNkMDRmMmQxOGE2ZmNjZjkxODI0MGY4ODBiYTMwNThjODhjZjY5MGEgbGVnYWN5LXRydW5rCiszODQzNCBjODc4YmQwMWI4MWExNjM0N2Y2NmE2MGM2NDlkNzA5ZDQzYjE1MGVkIGxlZ2FjeS10cnVuaworMzg0MzUgOTNmMjY2NWVhZDVlMmRjZGVjMWEwNjlkYjdiMTU4NWNlZTNlNWI2YiByZWxlYXNlMjMtbWFpbnQKKzM4NDM2IDZhMjQ0MGQwNWY1MGMzMjcyZTY3M2Y4MjA3NjRmNWNkMmIxZTY3YWMgcmVsZWFzZTIzLW1haW50CiszODQzNyAzYzE0NGEzYzkxMWE3YmUxYmI0OWEzNDI4ZGZhYzFmMDNjMDY2YjczIHJlbGVhc2UyMy1tYWludAorMzg0MzggZTYxYWE4NjIxNWJjYTc5NzgzZmMxMjFlOTgyMTFiOWVjZDEzOGI0YyByZWxlYXNlMjMtbWFpbnQKKzM4NDM5IGJiN2YzNmFjOWYzYTg3ODg5NzFlNmUyZTYwZjgzZWRiZTk3M2IyNGEgcmVsZWFzZTI0LW1haW50CiszODQ0MCAyOWU2YmQ3MDhmZTc1ZDM2NDBmMmEzNjRlM2QxN2Q0Mjg5OWI0YmRlIGxlZ2FjeS10cnVuaworMzg0NDEgNDA0MGFhMjE2YjhhYjE2ZmMwOWNjNDhkMGY2YzMzYWRjN2E3ZDc5NCBsZWdhY3ktdHJ1bmsKKzM4NDQyIDdhMTI3N2ZhZDA0ZTkyNjU3ZmM5NzgzODQ5ZTIwYjNiNTYwMDA4OGEgbGVnYWN5LXRydW5rCiszODQ0MyBmNzc5NjZkYTZkZTVkYmMyYzgwMTdmYzc4N2JiODUzNjA3ZTlmNWUzIHJlbGVhc2UyMy1tYWludAorMzg0NDQgODkxYzMxZGFkYTRlYjkyNTExYmJmZjFmZWM3NzgwZTNmMzFlMjdiNyByZWxlYXNlMjMtbWFpbnQKKzM4NDQ1IDcwNWI3ZmI5MDA1NmNhZWZjNmI0ZGU2YTAyMjYxMThkYmNmMzA1OWYgcmVsZWFzZTIzLW1haW50CiszODQ0NiAzN2I2ZGQzODg1NmRkZTM4ODQyMTg5ZWEzYzVmOTAyZTk3ZjQ2M2E1IHJlbGVhc2UyMy1tYWludAorMzg0NDYgZDIyODUwOTQyNDE3MmY5NzdlZGFkNGY3ODYwYTljNzQ3Y2Q2NTVjOCByZWxlYXNlMjMtbWFpbnQKKzM4NDQ4IGZmM2NhNjU2YzI4MWRlYmZkMzYwZjM3ZDAyMDJmNTNkMTMxYzRjODggcmVsZWFzZTI0LW1haW50CiszODQ0OSA4OWI4Y2NmMTRjMGMwMTVlZTljNjc5NzM0NDZkNTg2MWI5YWQ4MGMzIGxlZ2FjeS10cnVuaworMzg0NTAgOWM2NmFiNTRjMWVjZmY5ZWJkZWU2MDE1NzNiNTMxZTczZjNmOWY5ZiBsZWdhY3ktdHJ1bmsKKzM4NDUxIGU2N2I1ODdmZWQ3NzljMjExMzM4ZjE4NTlmMmUwMzk4MjFmMmM5YWYgbGVnYWN5LXRydW5rCiszODQ1MiAzYzE3MmM4MjZlZWQzNjRkM2M5ZjJjOTgyNDg3YWE0ZDBjOTE2ZjdlIGxlZ2FjeS10cnVuaworMzg0NTMgMTkzMjdkYjc1ZDFjOTJlMzZjMzYxYmQxMTkyYjFlZjU0NTc1OTlhZiByZWxlYXNlMjQtbWFpbnQKKzM4NDU0IDM2OWU4ZTcxZWEzMzkxNjc4YWFkYzA4NGUyNjg4YTE0NGZkYmNkZjYgbGVnYWN5LXRydW5rCiszODQ1NSA0NTQ1YTE1NGZhYzE1ODNiZTQxYmM3OTg4ODJiYzBlMmJiNjExMmY0IGxlZ2FjeS10cnVuaworMzg0NTYgM2ZkZmJjYjQwMTMwY2UzYTU0M2Q1ZTk3Y2MwOWU0NjA3MDFhNDlhMCBsZWdhY3ktdHJ1bmsKKzM4NDU3IDc3ZmEzMGU3ZjEyYjA2ZDM2YzY4ZTBlYzM1MDg4NTdjNjYzMzk5N2MgcmVsZWFzZTI0LW1haW50CiszODQ1OCA2MDdjNDhiNWVmZDcyNjE1NTBhYmQyMTlmOTFlYTliNmI3MjBmNGY0IGxlZ2FjeS10cnVuaworMzg0NTkgNWMyNjA4NTA0OTY3YTJhMTc4NGMzYzZkMTQzM2ViY2M4ZGQzNTQwMyBsZWdhY3ktdHJ1bmsKKzM4NDYwIGNhN2MxOGVmOGJkYzEwMmNiNjQ4NDUyNThjMTYzMGYwZmJmNzI2YjUgbGVnYWN5LXRydW5rCiszODQ2MSBjYjQ3ZDYyMmFhMWUyZmMxMTlmY2FkY2I0OWRiMzE5MmVhMjNhYzhkIHJlbGVhc2UyNC1tYWludAorMzg0NjIgMGE2ZTc3OWQzNDdkNmYxNzVlMjlkY2NjMDdjYzYxMDcxZmQwYzk4NSBsZWdhY3ktdHJ1bmsKKzM4NDYzIDg2YWIzYTc1ZmYwODZiOTZlNGQ3ZmFiMWNjYTI2YzYxNTBhNGJjNzQgcmVsZWFzZTI0LW1haW50CiszODQ2NCBiOTRmMjI0NzM4OGU5MmJkMGU5YTE3MzdlZTAwMGNhZmM0N2UxMzM1IGxlZ2FjeS10cnVuaworMzg0NjUgOWYxODNhMjU4YmVkMGVlOWY2MmIzYTQwNTNmMjYwODJiNzc0NDZkOCBsZWdhY3ktdHJ1bmsKKzM4NDY2IDdlN2U4NmY0NTI1NWE5NTk0ODIwZmFkZTZiZjc5ZGQ0ZmVkNGY3OTcgcmVsZWFzZTI0LW1haW50CiszODQ2NyBlOWVjMmNlMzQwZmRjNDQyMGQzNjFmNTM4MmViYmZjMTUxMDkzYmQ3IGxlZ2FjeS10cnVuaworMzg0NjggNzBjYjBjM2ZlNGE3NDc1ZTJmOWU5NzI0ZTRjYjM0OWFmZWNkZGEwZCBsZWdhY3ktdHJ1bmsKKzM4NDY5IGE4OTlkNjkwZjI2NDA3NGZlYjVhMGJlM2U0ZWYyMGU3ZDJiZGE1MDAgbGVnYWN5LXRydW5rCiszODQ3MCBmZjNkZWY3N2IxMjk1ZjMzMjY5OGM2YTIzODFhMGJiMTlhZmNjNjExIGxlZ2FjeS10cnVuaworMzg0NzEgMWFlMmMzYjY2ZTU3YTM0NjM3ZjllNDgzYWViNzQxMjZiNmY3MmEwMyBsZWdhY3ktdHJ1bmsKKzM4NDcyIGZhNTJmMWZmYzE2MTE1NTc1MDY5MzEwODk1YzBkMjVkZjljODZjNmYgbGVnYWN5LXRydW5rCiszODQ3MyAzNzZhNzFmODk3OWJhMWQ1NjNjOGQ5YWM4NTYxYmZhMDMyMTZiN2U0IGxlZ2FjeS10cnVuaworMzg0NzQgMzJiODk2MDZmMGNkYTE3YWU2NGVjY2E2NDVlMWUzYjE0N2Y3NjRmZSByZWxlYXNlMjQtbWFpbnQKKzM4NDc1IDdmN2MzZGZiYTk4NTYyMGM2YzQ5MDAxNzdlMTI5ZDQ3MmFlMzkwMDggcmVsZWFzZTI0LW1haW50CiszODQ3NiAxYTk4OTgzZTU5NjMwZGNjMGFlZTgwMzkwY2NjMzE2OTRlMWFjOWYyIGxlZ2FjeS10cnVuaworMzg0NzcgN2ZiYTVjY2M5NjFlMTRhZDhmMTNiMzBlYWU3NTY5MjUyYmNmNDZiMCBsZWdhY3ktdHJ1bmsKKzM4NDc4IDY3OTM3YTM4NTJmZTQ0ODJlZDM2YzljZWMwODljMmY4NzNkOWNkYzAgcmVsZWFzZTI0LW1haW50CiszODQ3OSA1ZTdhZGVkMzI1MWVkMmJlZDlhZjVkZjNlZmUzNTY0M2IzMTI2NjM5IGxlZ2FjeS10cnVuaworMzg0ODAgZDgwNGE1MGEyMGFiNTI3OWU3MDhlY2MyOGYyMmU2MjBiMDg2MDk1NyBsZWdhY3ktdHJ1bmsKKzM4NDgxIDgwOThjN2MyNzA5NzFlMmQyYTMyMGI1YmI2OTkwZTlmMDVmZjk4MGMgcmVsZWFzZTI0LW1haW50CiszODQ4MiAyNGEzMzM3NDFjZWM5OWEwOWM5ZThlNjc0NTcyYzY4MGU1MWI4YzU2IHJlbGVhc2UyNC1tYWludAorMzg0ODMgN2RhZTFhODFjZWQ4MzgwNWYyODY4ZGZiNjQ3ZmZmZDFkZTMxOGYwZiBsZWdhY3ktdHJ1bmsKKzM4NDg0IDc3NzAzZWQ1NDNhMTBmMmQxYWFhMmNiODgzODk1YmNiMDMxZWNhZGUgbGVnYWN5LXRydW5rCiszODQ4NSBkNDM5Yzc0OGI0NTQ1MWNkYjQ3NjI3MzhhZDkwYWRmNzlhMjdiZDNjIHJlbGVhc2UyNC1tYWludAorMzg0ODYgOGI0ZGQyYzFjMmEwNjNmMDNiNzAwYTc0ODhlNGY5N2ZkMDc5ZmU5MCBsZWdhY3ktdHJ1bmsKKzM4NDg3IDRiMTIwN2NiMDFlYTY2ZmNjNzI0ZmI2NTdjZTZjZjViMDMzNmI2ZDQgbGVnYWN5LXRydW5rCiszODQ4OCA4MTMwMzBlNGQ3YjBhMWRhY2RlNDIxYTQ2MzllNmIyZGQ4Y2RmNmI1IHJlbGVhc2UyNC1tYWludAorMzg0ODkgYzYwZmRlOGIwMTA2YjA5ODkyYzU0NDI0ZGI2ZWFmZmMzN2ExYjdkOSBsZWdhY3ktdHJ1bmsKKzM4NDkwIDdjNTczMjY1MmEyM2NiZDcxZTliZjZkY2E4YjVjZTU3MzAwOWQzZWEgbGVnYWN5LXRydW5rCiszODQ5MSA2MThjZjI0YzMyOWY5OWZkNWIwMTdiYjNiMDdjYTMxYWJiM2M5YTg3IGxlZ2FjeS10cnVuaworMzg0OTIgMDdjZjFhMTY0MGRhNDEyMzQ5ZGY0NzA3N2M4YjEyNTNiYzIzMTNlOSBsZWdhY3ktdHJ1bmsKKzM4NDkzIGE0ZDEzOTc0ZjZlYjdjNGRmOTAxMDQxMDIwMjViNGUzYjQwZGJlYTcgbGVnYWN5LXRydW5rCiszODQ5NCBhYzZkZmM2N2M3N2ZmNmQxZDhhY2E2MWMxMzlmNmFiYzZmMThkOTQwIGxlZ2FjeS10cnVuaworMzg0OTUgYTM2YzVmZDMwZTIxMjdhZTEyZGQ1MzlmNjY5NDc4N2U5M2ExZjBlMSByZWxlYXNlMjQtbWFpbnQKKzM4NDk2IDlmMDIyNzZkNTRjYjRlYzMyZWMzOWE1MjgyMTRiOTk5NWYyMzYwYzYgbGVnYWN5LXRydW5rCiszODQ5NyAwMzg2Y2MxZWU5NjRlNGQ0ODc4NDI3ZWUzYWFmYzc4N2NmMmUxZTA1IGFzdC1icmFuY2gKKzM4NDk4IGUwZjRlYjY0ZDAwMzkxZTNjNDZiNWYyODkwNThiMjlmZjJmY2FjZWMgYXN0LWJyYW5jaAorMzg0OTkgMjY3NmUwNWMwMWYyMWFhODVjZTFjYmU1YzdkNWViN2VkZDA4ODVkNiByZWxlYXNlMjQtbWFpbnQKKzM4NTAwIGM5OWFlODYzNWYzYjU0ZGI4ODM5MDRkM2FiY2Q3MzBmMTI4YjhiZjYgbGVnYWN5LXRydW5rCiszODUwMSAwZGQxNDZmZWQ5ZGRhM2NlM2ZiOWFjZjk1MWVkODMxMjE2NTEzNTk4IGxlZ2FjeS10cnVuaworMzg1MDIgNTU2ZjZmMTA1NmE4ZjZkNWQwM2EyOGViZmY0YmMzM2Y5NzQ1M2U3YiBsZWdhY3ktdHJ1bmsKKzM4NTAzIDFlZGVhNGMyYjAxMWI1M2FmYmJiNTNjOTNjNDAyMDI5YjMyOWNjNDcgbGVnYWN5LXRydW5rCiszODUwNCA1MTZiYjhmZDc1YjRiZDU3OTgxYWNmMWE3N2ZjY2UzMzE3OGJiMGZkIGxlZ2FjeS10cnVuaworMzg1MDUgNzZjOWFiODVmNWE4ODc0NTI0NjdmYjIxNTMyZTRjZDExZmYyZmEzMyBsZWdhY3ktdHJ1bmsKKzM4NTA2IDVmZGUxN2IzNTQ3MjU0YmFiYTY0OTk5ZDIxMDE5ZTY0Mjk5Y2U1ZTEgbGVnYWN5LXRydW5rCiszODUwNyBjNWE0OThjMTA3MjM1OThiOWI0ZjE5NzRjNmFlZmNlOWExNmU1OWQ5IGxlZ2FjeS10cnVuaworMzg1MDggZmNhY2Y5ZDRiOGYwZmFlYjc1NjJmOTZjZTg2OGIxODE1ODRmNTczYyBsZWdhY3ktdHJ1bmsKKzM4NTA5IGQyNTk5ODQ5NjIwNjVmZTU4Yjg3NmY0NTU4MjBlZGRkMGMwNDYzNWMgbGVnYWN5LXRydW5rCiszODUxMCAzZTdhMjBjMjk3YTYwZTZlN2RkZTUwMWJhZmM5ZjllNDJlM2RiNzJhIHJlbGVhc2UyNC1tYWludAorMzg1MTEgMDgwZDhjZmVkOWQ0YTdhNTRkNWNjYmVlYzdlMGFjNTYwMmIyYmUxYyBsZWdhY3ktdHJ1bmsKKzM4NTEyIDY2MDQxOWJkYjRhZWY5YmI1ZGUyODVjNzY1YWU2ZGVlMTQyZjBjOTcgbGVnYWN5LXRydW5rCiszODUxMyA0MTZiNTM0ZTljYzk2OGVmZmViY2FmMTc1NWJlOWUzY2ZlMzgyZjVkIGxlZ2FjeS10cnVuaworMzg1MTQgNzdiNTcwODdmZTQ1ZGIyNDcxNzhmMGUyMzVlNDI2ZjdlNGQyOGY5MSBsZWdhY3ktdHJ1bmsKKzM4NTE1IDQzMjlhMWEwMDQ2OWQxNjNjYTU4NGI3ZTA4MDMxMTdiM2UyMGRmNTkgYXN0LWJyYW5jaAorMzg1MTYgODljZjI1ZTM2NzlhZTk5YTQ5MDJiYWMwNTAxNWJlYjg2Mjc3N2I3MCBhc3QtYnJhbmNoCiszODUxNyBkMWIzNWFmMjkyNjMwYjYwOTdjZjZiM2JhMjAzMDVkYzFlZGRlYmMwIGxlZ2FjeS10cnVuaworMzg1MTggYTJiN2NiNzNkOWIxZDcwZWJiNDgzNTNkNjRjY2VjYzgyMzU3ZDk1NCByZWxlYXNlMjQtbWFpbnQKKzM4NTE5IDVmMjYyOTg4MTFiNzE0MmE2ZjczMDg2NzhkNmQ3MmJmZjg2YzE0NTUgbGVnYWN5LXRydW5rCiszODUyMCAzZDBiYjNiMDVkMzlmMGJkMTRkOWY4YzY5ZTE3NzUxODQxZDQ3NGJmIGxlZ2FjeS10cnVuaworMzg1MjEgMTE3NmYxYmI0ZTFhZWEyZmY1MTgyNzIwYzQ2YWJiZjYwYzFmMWFjMSBsZWdhY3ktdHJ1bmsKKzM4NTIyIDRhMGMyMDJlZTc4OWEzNzNmNjQ3ZGQwMDkzNDg2NGVlMjk3OWIyNzcgbGVnYWN5LXRydW5rCiszODUyMyBkM2NlN2E5NDYxNmU5MTdjZmVkYmUwMDM2YjRmMTBmYjFjYjgwNmY5IGxlZ2FjeS10cnVuaworMzg1MjQgNjM2ZDZkNDMzYjYyNjM3YWVkNGVmYjE4YjMwNzFiZDQzMTJkNzYyNCBsZWdhY3ktdHJ1bmsKKzM4NTI1IGZkNmQzNTljYTI2NjIyMWI3YWVmOWE2MzI2NmRmNWFlZWYyMjM3MmUgbGVnYWN5LXRydW5rCiszODUyNiBiNWEyNWM1NmE4NTIzZDdmOTQ4YWIwNjY5M2Y5NmM5MTBjODVhMTY5IHJlbGVhc2UyNC1tYWludAorMzg1MjcgNjA1MGFlODQyYzhmMWM4OGI5YWFhMjM1NjI1ZWM0ZDgzZDlkNWJjNSBsZWdhY3ktdHJ1bmsKKzM4NTI4IGM1MDVjYmIyNmNlZGNkMDUwZjQ2ZDBiN2U1MWI1YjQwZmJjNDU5NTEgcmVsZWFzZTI0LW1haW50CiszODUyOSBmYTNjZGQ0ZjljZDAxN2E3ZWVkOTdlMTU3ZjI0YzhkN2U2NzlhOThlIGxlZ2FjeS10cnVuaworMzg1MzAgYjQzMTVlNjdlZGY1MTBiOTJmNmJiMjNlOTk1NGEyMzZhNGMzYzY0OCBsZWdhY3ktdHJ1bmsKKzM4NTMxIGE5ZjE2MWUzNmJmOTA0MWVlMGRhODY5ZTE5ZjVhOGU1NDViMWU1NDkgbGVnYWN5LXRydW5rCiszODUzMiBkNDhmYTBhZmRjYmFmZDUwZTE0MzM5MjFiNTdkYzgyOWVjNmVkNDQzIGxlZ2FjeS10cnVuaworMzg1MzMgMTNhOTUwYTM2MjRiY2FhMmI0ZDIwYjBkNGQ0ZDlmNTk2NmYyZDNmZiBsZWdhY3ktdHJ1bmsKKzM4NTM0IDExZmNkYmIyNzlkZTkyYWVmYWQ4OTNmNmQ2MjE3MTJmOTg3YmI3YmMgbGVnYWN5LXRydW5rCiszODUzNSBkOTkyN2E2NWY1ZjkyZTI3NmQ5MjI4NmU2YzQzZDkzMWMxMTE2ZGQ4IHJlbGVhc2UyNC1tYWludAorMzg1MzYgY2FjMzFiNGI1ZTc4ZDRkMjU3ODlkYTM1MDUzODFlMGRhZGY4M2Y0OCBsZWdhY3ktdHJ1bmsKKzM4NTM3IDg2MWJlOWNkMDRkN2VjZDQ4ZmMzZWM0MGNmN2U0Y2VhZTg0NjUwOTAgcmVsZWFzZTI0LW1haW50CiszODUzOCA0YWFmYjFjOWE3MGQ5MDBlODcxZWVlMzEzNDA3NzU3MWIxNWNmODdhIGxlZ2FjeS10cnVuaworMzg1MzkgZTQ4YjVhNjFkODBiZDZlYmQ1NWZhOGQxZmZiZmI5N2I2MmJjMmUxZiByZWxlYXNlMjQtbWFpbnQKKzM4NTQwIGE2ZDIzMTUxMDlhNGYyYWM5YWJmNmRiODQ1MTdiY2E5MzIyNTc5MGUgbGVnYWN5LXRydW5rCiszODU0MSAyZmQ5Yjg1YmE2NWZkZWZjZDVmMmZmMGQ4ZDBjZmQ1MWNmNGVhYzE4IHJlbGVhc2UyNC1tYWludAorMzg1NDIgZTY0MjI1MjVjMjQwMzE4OTVjZDQ5MTFhNzk5MGVhOThlZDBiNDBiYiBsZWdhY3ktdHJ1bmsKKzM4NTQzIDc1NTY0NTMwZjUwYzFlZmI0MDVkZmI5Mjc2NjhjZmFlNjc5MmZlMDIgcmVsZWFzZTI0LW1haW50CiszODU0NCA5MThiYzZkNTZkMjZmNjYxMjVmZjU0ZjY5MjRhNTFjYzcxNzljM2Y2IGxlZ2FjeS10cnVuaworMzg1NDUgOWZhNzY4YTk4YzVjYTM2MWI4MDhjMjYyY2JhNmYwZTg3MjFmYzkxOCBsZWdhY3ktdHJ1bmsKKzM4NTQ2IGI0MDU4NjEyOWJiMDg3MmI1ZTBjMDRiYzExNzQ1ZTI3OTAwNmVlNjkgbGVnYWN5LXRydW5rCiszODU0NyA5ZDYwODQxOWNkZjhkNTM2Y2VlOTQ1NWQyMWFmM2EzZWU5NDllNTRhIGxlZ2FjeS10cnVuaworMzg1NDggMzc4NTYxMGZmNzYzMDFmNGRmOTliNjFkY2VlZjg2MTZhOGYwYmVlYiBsZWdhY3ktdHJ1bmsKKzM4NTQ5IDQ2MzAwYjFhYTJmNjgyNWZkZmM0MTJkMzcwOTg3YTY2M2VjOGExZjggcmVsZWFzZTI0LW1haW50CiszODU1MCA0ODEyZjZhN2Y3MzU1NjgzYjIyYjYyYWM3M2FiMGNhNWM4MTcxOGVjIGxlZ2FjeS10cnVuaworMzg1NTEgOGMzNTYzZDA4YzYyM2RlYThjYmZjNzljMjk1OGE3ODJmYjk4Njc5YyBsZWdhY3ktdHJ1bmsKKzM4NTUyIDliM2EyYzQzMDJhYWMwNmUwOWU5YWU4NTZmYTQyZTMyMWZlNzFhZTAgcmVsZWFzZTI0LW1haW50CiszODU1MyAwZDQxMDhkM2EzYThiNzdkZmY1OGUxMzUxYjBiMTZjMzRmZDU3MGUwIHJlbGVhc2UyNC1tYWludAorMzg1NTQgNGM2NmMxN2M0YjI4MDliMzQ0ZTVjN2Y0ZWQyOTQ3MDQxNmQ1ODQ1OCBsZWdhY3ktdHJ1bmsKKzM4NTU1IGRiN2E4MzEwYjE5YTk0ZDYxN2E5NWFmMGZlNDc1MTkxNDZmZmFkYjMgbGVnYWN5LXRydW5rCiszODU1NiAwODViYzI3ZjkyYjc1MTlhZjMzNmE4M2Q2MzQzMzFmNjgwODZmZDMzIGxlZ2FjeS10cnVuaworMzg1NTcgMDBlNDdlYjEzNmIyYzA5NTE1MWJjYjI1NzRkMzcxMTFmMzBlZmZmZSBsZWdhY3ktdHJ1bmsKKzM4NTU4IDdhMWE4ZWM2ZGM1MzQ0YzBkMDIzYjAzODdhNjdhMmQ5ZTZmYjhmMzQgcmVsZWFzZTI0LW1haW50CiszODU1OSA4ZjA0NTY0MjU3MTU4MTUxMDFkOTAxNDY1MDIwOGM2YjQyMjIxNTVhIGxlZ2FjeS10cnVuaworMzg1NjAgNGFiZjIxYmUxN2QzNTQxOTVjMDlhMzczMzA5MTNlYTdhMzcwNzFkZiByZWxlYXNlMjQtbWFpbnQKKzM4NTYxIGU5ZmZhZDZkODgyMjhlYzgzZGQ3OWVlNGQwZDllMTM5MzIxZGIyYzIgbGVnYWN5LXRydW5rCiszODU2MiA1MWFmYjZlNzc0NzQwOGU2ZmU5NzBlMDc3ZjFhYjFlZDc3YjhiMjIxIGxlZ2FjeS10cnVuaworMzg1NjMgODE5ODI1ODRjNjFiYzU2MjQ2ZjU5ZTZiNjI1Zjc2YWE5MTU1YThjOSByZWxlYXNlMjQtbWFpbnQKKzM4NTY0IDQ4MTM5NzY4M2VhY2VmMGU5YjNhODFhODUwZGZmNDk2MzA4ZjJkZGIgbGVnYWN5LXRydW5rCiszODU2NSBlZDZlYzAwMGExMzg4OTdlNWMxN2U2NWI3YzU4NTQzY2Q0Nzg4NWUyIHJlbGVhc2UyNC1tYWludAorMzg1NjYgOTAzMDQ1YTcwYzNlYjYwNDViZDhmMGFlYmNjNmZjMGM1ZTI4NmEzZiByZWxlYXNlMjQtbWFpbnQKKzM4NTY3IDBjNDA4MDNlNWU0ZDQwOGUyYzdmMTcyZmJhMWM2MmZjZTllOGZjMDggbGVnYWN5LXRydW5rCiszODU2OCBmODdhOGQwZGYxMjUyYmI5MTU0OGUxZDRiYjFlYzBiZDY5YmMzNjk2IHJlbGVhc2UyNC1tYWludAorMzg1NjkgNDlkN2JiMmU5NmQyZjVjYmNjZWExZTc0MzI3MzBlOTQzZTMwZWU3ZiBsZWdhY3ktdHJ1bmsKKzM4NTcwIGFlMDYxZmM2MzE4ZGNlMDcyOWYzZDk1ZjQyNzM1Mzc5ZWMxODQyZTEgbGVnYWN5LXRydW5rCiszODU3MSBlYWMwMWNiY2FhZGE5YmJkN2JmZDU1MDNjMmMwNTQxNjlkMzQwZWFlIHJlbGVhc2UyNC1tYWludAorMzg1NzIgMWFjMjRlOTE4M2U1MTc3ZDYwODJhNzZjZTVmM2ZhODI3ZjBiOWJhYSBsZWdhY3ktdHJ1bmsKKzM4NTczIDRlYTlkZTAxZDMxMTU2ZGE3Mjc3ZjJhYTc4ZjZmOTEwOTFjYzU2ZTEgcmVsZWFzZTI0LW1haW50CiszODU3NCBjMmI1OTFkN2YyOWVmZGY5ZjNiY2U1NjBmMWNmMTRlNmY4YjQyZDJmIHJlbGVhc2UyNC1tYWludAorMzg1NzUgMDcyNWYwZDVhNWM3NTg4YWYwOTU1MGQ0ZDcwNWUzNDg4Mjk4ODE2ZCBsZWdhY3ktdHJ1bmsKKzM4NTc2IDgxN2UyMjUwNmZhOGY5Yzk2Y2U1Y2U5YjhjOTNlZTUwM2JlZDA3ZWUgbGVnYWN5LXRydW5rCiszODU3NyA2MDRmZjk4OTE1ZWM4MTg1NDZiMmRhY2ViZjAxZjI2MzA2ZDIzNDIxIGxlZ2FjeS10cnVuaworMzg1NzggOWYwNzhkNzY2ODA0NDQ3NzQyNDcyNTY0NGE5YzFjY2FiZjJmYzJhNSBsZWdhY3ktdHJ1bmsKKzM4NTc5IGMwNTE3OGY0MWRiMzkwNzg1YjMyNzEzZDkzNjY2YWM3NWMwYjk0NzkgbGVnYWN5LXRydW5rCiszODU4MCBhMGQzZjc3MzU0M2RiMjgxYTc2NDY0ODdlOTFjZDMyN2Y4NWU0NzE5IGxlZ2FjeS10cnVuaworMzg1ODEgNzkzMDJlNTA5MTBlZWNlMjBmMjE0MDY1MGI0MjJmM2U2OWM4YWEwYiBsZWdhY3ktdHJ1bmsKKzM4NTgyIGE5MWE0OGM5ZGUwMGM5YWJhOWYyYTY2YWViYmQ4MzI1ODYwYzJhMTEgcmVsZWFzZTI0LW1haW50CiszODU4MyA0MWE5Y2E4NjYwMzgyMDM2NDRiYWZhYTY0MjA4YTExOTE1MTYzNmY5IHJlbGVhc2UyNC1tYWludAorMzg1ODQgODQ4NTliNGE2MmM2ZWNkZTU2NjUxODAxY2Y1NDI2NTk4OWRkMzYxNCBsZWdhY3ktdHJ1bmsKKzM4NTg1IDVkMGQ3NmQ3YjMxZmQ4ODJlMWIxZTI3ZTAyYmRhODRkYWEwZTgwNjAgcmVsZWFzZTI0LW1haW50CiszODU4NiAxMzA5ZjY5YjRkYmJkZThiN2M1NzA2NTEzMTlkNDdhNTQ2ODllYjllIGxlZ2FjeS10cnVuaworMzg1ODcgN2RlNzZmMzRiM2RhMmYwOTY4NWExZjRmOTFkZDhlNTdlMmI3M2FiNSBsZWdhY3ktdHJ1bmsKKzM4NTg4IGY0ZGE0NmI5NDU3MDg5MjIzNWIxMDYzZWY4OWUzYjg0YzkyMTMyZjQgYXN0LWJyYW5jaAorMzg1ODkgOTViNjZkOWRiMmVlNjU5YTBjMmEyOTlkM2M0MTRhNTYyZTk2MDBjYSBhc3QtYnJhbmNoCiszODU5MCAzMDk4ZWZlNDJhMGYyMDg2YzQ0MDU4NDc5NDM5ZTU0MDY4NmI1ZjA4IGxlZ2FjeS10cnVuaworMzg1OTEgN2QyYzhkYWE0MDNiNjE5Y2ZmNzBjOGY1NzBjNjhjMzkwNTAxZTBmNSBsZWdhY3ktdHJ1bmsKKzM4NTkyIGQ2ODdhOGEwOWE3MmQ3NGQ2NDhkNGI4OTBjZTY3YmFhN2ExNjE1ODcgbGVnYWN5LXRydW5rCiszODU5MyAwZDQ0ZDkwNzFlOTdmYmMxMDYzOWNhNjQ1ZjRmMzM3YjFlMWVjYTk5IHJlbGVhc2UyNC1tYWludAorMzg1OTQgZjFmYTdiYjJiZjk5OTBmNDBjYTA5YmFiZGU3MzQ4YTNiMDk0MTY4MSByZWxlYXNlMjQtbWFpbnQKKzM4NTk1IDY5N2I5ZWVjNTVkYTgyYzRkN2EwYjNkNmQ5NjU1NjZhYmUyZDlhNDMgbGVnYWN5LXRydW5rCiszODU5NiBkNTQ0OWYxZjg0MGVjZDRlMjY1MmRkMjYyNGU4OWIzNGY4ZDUwYmUxIHJlbGVhc2UyNC1tYWludAorMzg1OTcgZjI5MDEyMTgxY2YwMTdiOGZiYTVmYjhlNzlhYTJhMjVmMjQ3MzAyZiBsZWdhY3ktdHJ1bmsKKzM4NTk4IGU1ZDE5MDMxYTI5NWQ3N2JkODYwMGE0NTI5ZWZhODU2YzQzZjk1MzYgcmVsZWFzZTI0LW1haW50CiszODU5OSA2YjY4NzVlZGY2MDdlMzJiNTg4Y2ZlZGVkZTA4MWNmYmUyY2UwNDg4IHJlbGVhc2UyNC1tYWludAorMzg2MDAgODQ3MTNkNGIxOWFmMTM2ZTRhNGEzZjU2YzA1ZjgwNzUyZTY4YjVlMCBsZWdhY3ktdHJ1bmsKKzM4NjAxIDQ0ZjE0OGJmYzZiODgxNzVhYjY3MDQzZTY2ZWZjZTlmY2Y1ZjJiOTAgcmVsZWFzZTI0LW1haW50CiszODYwMiBkZGMyMjc2YzI0N2U2ODZmOGYxYTA4NDgxYmVjZmE2ZmFiZjNjYzBhIGxlZ2FjeS10cnVuaworMzg2MDMgNTE2ZjE1NTIxNTk4NGRiM2I2YTQ5NGM0ODdlYzEzYjUxZDE1ZDYyNSBsZWdhY3ktdHJ1bmsKKzM4NjA0IGI1NDMzZDNjNmRjODg0NzZmMjI4MDlmYmFjNDhkNDMxNTVjOTM1ZTEgcmVsZWFzZTI0LW1haW50CiszODYwNSAyMWU2NTc3ZmYwNzRlMTE2ZGY2YTczMjMyZThkYTliNjNiZGU2MTgxIGxlZ2FjeS10cnVuaworMzg2MDYgYjEyMmZkOTNhNWI1MTZlMDE5MGRmYjM2MmU3ZDAwNTkzMzBkMGU5NyByZWxlYXNlMjQtbWFpbnQKKzM4NjA3IDE2Y2VmMDlhODM0MmRhY2NhZmNiODU4MTlhMmRiZmUxNzE0MTQ5M2IgcmVsZWFzZTI0LW1haW50CiszODYwOCA5OTA2ZTRkYTA4NmZkY2NmNDRjN2VmZTUzOTU2NDUzYTNkMmMzYzY3IGxlZ2FjeS10cnVuaworMzg2MDkgNTJiNjUxYTk3NTBkNWRiMzRjYTAyMWVhNGMzYWU3YzY0NjE1NjkwOSByZWxlYXNlMjQtbWFpbnQKKzM4NjEwIDQzMDM1NjgzOWQyODU5MWU2MjJmYTgyNmZlMzZkODYwYWI4Mzc4ZWMgbGVnYWN5LXRydW5rCiszODYxMSAyYzczMzY3ZjU0ZWVlYzg5NjI2MzVhMGQxNjY0MDA0ZjMxODAxYmUxIGxlZ2FjeS10cnVuaworMzg2MTIgMDM0OTI1N2UxZWQ1MmUxZjc5MmY4NjA1NzJhOTE4YmY3NjM2ODcwNSByZWxlYXNlMjQtbWFpbnQKKzM4NjEzIGIxNDI3Y2ZmMmY4MzIxMWI3MGFjYTMyYzE0OThhNTNjODk0NWYzYzggcmVsZWFzZTI0LW1haW50CiszODYxNCBjZmFlNGIxMjA2ZjhhYzlkNTBiMGI0Zjc2MmU2NzU0MTIzMGRhNTQzIHJlbGVhc2UyNC1tYWludAorMzg2MTQgMTE5NWY5YmEzNDM5MDk3Y2M1YjVhMzY3ZTNhZTFiNDNmMTU3YjI2NCByZWxlYXNlMjQtbWFpbnQKKzM4NjE2IDBiZTA1ZWJhMTE2ZDgxODRkODZlYTFjMzI5ODgzMzFlNjRiZWJhMjQgbGVnYWN5LXRydW5rCiszODYxNyBlYTAyNGE0YjI5YjZkMTExMmY2YjkxN2ZkZmRmMjVkZmM1ODAzNjlkIHJlbGVhc2UyNC1tYWludAorMzg2MTggMWFmZWZjZjE0ZjA2MzhjM2E1NTkzNjkxM2RkMWU2OTZkZjQ2NGRiNSBsZWdhY3ktdHJ1bmsKKzM4NjE5IGU4MzMwOWQ0M2E4MmU5OWE3NTAxYjQ5ODdiMjYwMzIwN2M0OTAzMzEgbGVnYWN5LXRydW5rCiszODYyMCBkMzU1ZGExZDdjOGZkMTliYjIwN2RiMmNhYTNjNzgwNjJmNzQ4MjkwIGxlZ2FjeS10cnVuaworMzg2MjEgNjVlOGFhY2IwZTk0YjE2MjM5Y2VkODJiNDIxMTMwMzZjMzk4YmZlZiBsZWdhY3ktdHJ1bmsKKzM4NjIyIDgxYjVhMTNmYTM4YTI0OTAyNzNkYTY2MTFjMGMwZGVkYmVlOGI1YjEgbGVnYWN5LXRydW5rCiszODYyMyA4ZDhiYTY2NzgwZWQ3Nzg1MDJjZTM4YjY2NzRhZWUzZmIxMDQ3YWExIHJlbGVhc2UyNC1tYWludAorMzg2MjQgNDUzZDg5ZWFiNzM5MzZmYjkxNWY5ODk1NzljNGFiMmIyYzNmMmFmNyBsZWdhY3ktdHJ1bmsKKzM4NjI1IDBjODJhN2VmOTU1NGRhZDlmYWM4NzkyODhlMGE3N2U3MjU5ZTYzZjIgcmVsZWFzZTI0LW1haW50CiszODYyNiAzYmI3NTk0OTg3NjdkNjkwZmU2ZjJjMjljYmJkY2MyMzgyNWUxNTM4IGxlZ2FjeS10cnVuaworMzg2MjcgZmRmMmY4ZmFkOGQ0NTczNjM4NmNhMzg1NjljMDA3YzgyYmE5NjMwNiByZWxlYXNlMjQtbWFpbnQKKzM4NjI4IDZmOWIzNmZjMTExYzlhZmRhZDQyZjk4NWMzMTM4ZmMyZjgyZmE5ODIgcmVsZWFzZTI0LW1haW50CiszODYyOSBiOGQ5MDVjYTllOTk5OTY2ZDY3N2FlNjQ1NDc2NGFmYmEzYTYwNjI1IGxlZ2FjeS10cnVuaworMzg2MzAgM2Q5N2ViM2I3Y2VjYWZmNDZmZGVlMjY5MDA1ZjY3ZWRhNDhjOGU2MyBsZWdhY3ktdHJ1bmsKKzM4NjMxIDcyYjllYjc0MjI2MzA3YmYyYWJiNmMwMzlkMmI2OWEyZGE2ZDAwMjQgbGVnYWN5LXRydW5rCiszODYzMiAzZmEzNDc1OTU0ODcyMGI2Zjk2MjZmYzNhOTc5ZTBhNTQ3OTdlYTFiIGxlZ2FjeS10cnVuaworMzg2MzMgNTE4MGNmY2M4N2JmZTcyNjQwZTUyODZkMDNiMTNkY2Q2NzAxMjMwMSByZWxlYXNlMjQtbWFpbnQKKzM4NjM0IGRmYTA5N2NjYmM0OWRhNDUzNzA2MTE1ZWI3YTkzZDQzMjYyMmRiODEgcmVsZWFzZTI0LW1haW50CiszODYzNSAyMThhNzYyNzU5MzJlZDY4ZDJhNjc5NzhmMjg4NDJmOWJmOTY3NjE0IGxlZ2FjeS10cnVuaworMzg2MzYgNjc5YzE2MTE1NjEzMWM5ZDQ1NzJhMDc2NzEwMTg0ZDc0NTc0ZTgyZCBsZWdhY3ktdHJ1bmsKKzM4NjM3IDk2MjgwMGVlMzBlZjVmNDJhMzI1ZWE2MmJlNjAzY2M0ZjUwZDUzMWYgcmVsZWFzZTI0LW1haW50CiszODYzOCAwNGJhYTY0NGZmMDAzMzkxZGViZmRjMmE2N2EwMjdkYmE0Mjk1YWUxIGxlZ2FjeS10cnVuaworMzg2MzkgMTFiNDM1MGI1ODc5MmRhOWY3ODE3NjU2MGM1M2MzNmM5MDA2OTZiMCByZWxlYXNlMjQtbWFpbnQKKzM4NjQwIGU1Mjc4MzMxZDlhOTA1OGZhZGE3YTRiNGExMDZjMmMzZWNjNWQ4NzIgbGVnYWN5LXRydW5rCiszODY0MSA2ZjM3ZDExNjAyNjEwOTkyODM0N2E3MGI2ZGY3OTIwMDcxNTMwYmM4IHJlbGVhc2UyNC1tYWludAorMzg2NDIgN2Y3Y2JkYjJjNjExMzdkYWNjNGJiNmVmZjZjNDgxODExZTQyOWM3OSByZWxlYXNlMjQtbWFpbnQKKzM4NjQzIDVmODkzYTRjZGU2ZmQ4ZDZkZGU4YjMzODI4NzcxMzc3MzJhYjEzNTcgbGVnYWN5LXRydW5rCiszODY0NCA1MDUwOWVlOTYzNjRjN2U4NjJiNmMwMzdlYmZlNDI4ZTIzNWVhY2Y4IGxlZ2FjeS10cnVuaworMzg2NDUgMzEzZWQyODE3ZDY4MDllMzNkNDQ3YjljMDg4N2ExNThlNzNmNmYyYyBsZWdhY3ktdHJ1bmsKKzM4NjQ2IDRkYjVlYTk1NzdiYWJkYzdjYjg0YmQ5NGNjODc1ZjVlMDhkOWY1NmYgcmVsZWFzZTI0LW1haW50CiszODY0NyAwNzc0NTE2NmY1NzEzYmE1NmMxYjhhZTgxMmI5YWY0ZmJjNjM4ODhlIGxlZ2FjeS10cnVuaworMzg2NDggZmNiNTA3NDE0YzQxNDhmNDFiZWExZTliZDkwNjhhNmUwMmQ3N2YwMyByZWxlYXNlMjQtbWFpbnQKKzM4NjQ5IDIzY2EyNjMwNjU3YzQ4NTA5YzM1YjZiMzg0NWE2YjA0YjQwYjY3MjcgbGVnYWN5LXRydW5rCiszODY1MCA2YTY0OTgxNjEyNGE3Y2U0NWE1YTEzYzY5ODk3YWM0MTk1YzE0YTc1IHJlbGVhc2UyNC1tYWludAorMzg2NTEgYmMxNTkyOTZkMjUzNTY5NmQwNDA4NTFhZDM4YjhlNGMwMjlmNmVkZiBhc3QtYnJhbmNoCiszODY1MiA1MTFlN2E5M2ExZTlmMTA1ZTY0MjJjYWE5MzU1Mjg1YjY4NWYzYTg5IHJlbGVhc2UyNC1tYWludAorMzg2NTMgODRlYjVlMTg1NTQ3NjE2NmJmMjllYzdkMGZiOWZjOTgwMWZhZjdiMCByZWxlYXNlMjQtbWFpbnQKKzM4NjUzIDMzM2NmMzAzNTQzYjY4MGVjNWUzZmRmN2U4Yzk2NjFmOTQ4OGE1MGUgcmVsZWFzZTI0LW1haW50CiszODY1NSBiZWIxY2I3ODVlMWQ1NDA2Y2IwMzVmNTJkNTJiNGEzNGVjYzY3ZDgxIGxlZ2FjeS10cnVuaworMzg2NTYgN2Q3NDA0YTZhNWVhM2QyNDM3NzE2Y2VmMTljYjlhMTZiYzYyNDNmMiByZWxlYXNlMjQtbWFpbnQKKzM4NjU3IDcxOWViMTAyZWE0NDg4NGZmYjk5NjJjZWU0NWEwYjViNTAxOTk3ZjEgbGVnYWN5LXRydW5rCiszODY1OCBmYjM5ZjRlZWFlYTQ3NjI3NWMwMTg0YTcwNzA1ZDhjMGFkYzNkNzc4IGxlZ2FjeS10cnVuaworMzg2NTkgMmVlNTc1YjliNjBlNWQyYTk1MGFhZDNkNDRiNzhhYjZmZDViOTkxMiBsZWdhY3ktdHJ1bmsKKzM4NjYwIGZkZTVhMWM2YTQ5N2U1NDU2ZDZjZjc1NWYxMzkzNGE4MDFjOWFiNjMgbGVnYWN5LXRydW5rCiszODY2MSA5ZDgwZTYzMDA0Y2RjNmM1MTk3OGIyMmFiY2YwMjllYzM1ZDkxNmIyIHJlbGVhc2UyNC1tYWludAorMzg2NjIgYTMwNWZlZGNhMWJmZmY1MzRiNmI2NzY1OGRkODIyNDcyOTI2Y2UxMSByZWxlYXNlMjQtbWFpbnQKKzM4NjYzIDA0ZmExMzJjOTAyM2RlYzA0YWU4MWNjMzY5MDYwN2Q2NGRjZWRhNTEgcmVsZWFzZTI0LW1haW50CiszODY2NCAzMzZmZWE0MDZmY2YwNmI4OGYzZmZlYWI3MTUzZmM3NTFjMmUxNGJkIHJlbGVhc2UyNC1tYWludAorMzg2NjUgNGJjZTJlNTA5NjFlMWNiODBkZGZiOTJmOGE3MmQxYmU0MTRlZjYyYiBsZWdhY3ktdHJ1bmsKKzM4NjY2IDk5N2IyNTVlMWNjYzg4YmVmOTE4MGNhYjkwNDg3MzI3NzY5NzE1NDcgcmVsZWFzZTI0LW1haW50CiszODY2NyA3NjMwMGM1ZmJjZWM4ZjU4NzhmNWYyYjNiNzEyNmViYmFmY2EzNjA5IGxlZ2FjeS10cnVuaworMzg2NjggZmRlZTg3YjcwMzdhM2I2MDAzZWM4MmUyMGQwYmJhMmUxY2VlOGVkZSBsZWdhY3ktdHJ1bmsKKzM4NjY5IDBhNmE0Y2NmNWNjZjlmZGQwYTliNjM3ZTk4OTRkNDNmMDNhZWQ2YjYgbGVnYWN5LXRydW5rCiszODY3MCAyM2UzZGZjMGM2NDdhOGY1MGViNmFjMTk0NWUyZTU1ZTkyZjdjMzBkIGxlZ2FjeS10cnVuaworMzg2NzEgMmIzOGVkNjZjNjdmZjc2OWUwZjQ0ZDZkMmQ5NDRiM2RlOTY1ZjU0YiBsZWdhY3ktdHJ1bmsKKzM4NjcyIGRjNmYzMTVmMWY3ZjE1Zjk2Yjk1ZDM0ZTk5OWY1MGFjM2FiNTUwMDUgbGVnYWN5LXRydW5rCiszODY3MyAxM2MxYzMzMTZjNmZkZWU0MmE0ZGVhZGU2ZTQ0ZDkxNTU1OTdiYTM2IGFzdC1icmFuY2gKKzM4Njc0IGNmNDMwMmMyMWUwMDNkYjhhNzNjZjcxZTMyMjZlM2VmN2MyMzYzZTcgYXN0LWJyYW5jaAorMzg2NzUgNmQxZWU5ZGIxNTQzZWYyNDAwNmM3ZDJmNzJkYzZkNDg1ZTRiMDdlOCBhc3QtYnJhbmNoCiszODY3NiA5ZjQ1NGFmMTdmN2EzOGZiNzI2NTAwNjkxMzBkOWQxMzRhOWI5MDM4IGxlZ2FjeS10cnVuaworMzg2NzcgM2UyZWUyMTk3MjdkMTAwZDYyY2ZiMTM3NDEwYjUwNDdmOWFmMWQ3MSBsZWdhY3ktdHJ1bmsKKzM4Njc4IGIxNGM4ZTYzMTBlNzEyZTc1NmRjMjM2NDk3NTJhMjUyZmM3YzRiZTAgbGVnYWN5LXRydW5rCiszODY3OSA5YWVhOWY4YmRiMmM0NzgxZDliNDVkNTZjNjQ0N2ZjMmY3MzNiNDkyIGFzdC1icmFuY2gKKzM4NjgwIDEwN2UxZThjOGZjN2U1YTBkMTQzYmI0MjM0ZmYzMTVmZTBiYjg3ZjcgbGVnYWN5LXRydW5rCiszODY4MSAyM2IzZTc5MDZlMGY2MzhmYThmOTJjYmMyNDEyYzU2NmRlMWRhMjhmIHJlbGVhc2UyNC1tYWludAorMzg2ODIgYzA2YzkwYmVhN2RiMDcwMzlmZTJkNmM5Y2FiMmU0MDE5MDliZGRmNSByZWxlYXNlMjMtbWFpbnQKKzM4NjgzIGJiYjYwZTI2OWNlOGRjNTA4N2NiYjhlNDNkZmNlNjcxMGM0NzkwZTkgbGVnYWN5LXRydW5rCiszODY4NCAzZGEyMWZkYzJlZTcyMjM1NWYwNjI3ZGZlZThhZTIwZWZkYjIzMDg3IGxlZ2FjeS10cnVuaworMzg2ODUgZjNmOTlhY2FlNTlmZjg3MGZhMWQwNDNhNGNjMmIwMzcxM2RiNGYxNiBsZWdhY3ktdHJ1bmsKKzM4Njg2IDRjMTNiMDE0NmIzZjZiYjQyNDY5MzVhNzUzYjYyODUwOTM4MzU3MjcgbGVnYWN5LXRydW5rCiszODY4NyA2ZDIwMDBiYWYzZGU5YWFlYjQ2OGQxYWZlMWI2NzRlMDkwYzlhZmQ2IGxlZ2FjeS10cnVuaworMzg2ODggZjEzZjJjYmRmNGRlMjlhNWE2OTk5Y2EwMGIzN2M2YzZmMmJjZTRkMCBsZWdhY3ktdHJ1bmsKKzM4Njg5IDA4NTJkMTk2YjU5MDQzZWZkOTFhM2M0ZTQyOGYyMTQxNGFiYmIzNDkgbGVnYWN5LXRydW5rCiszODY5MCA3OTMzNTMxZDAyYjQ2MjE0MjMyMGI1M2FkZGViMzI5MmFhYWVlZDc0IGxlZ2FjeS10cnVuaworMzg2OTEgNjllMTBlNjM1N2JkNzZmNmNmNTlhYTZlNzUyOGQ5M2QxNWUyNmUwZCBsZWdhY3ktdHJ1bmsKKzM4NjkyIGNlYmZiYWIwMTdhNmU2MzM1MDI5MzYzZGVlNGMyNDUxYjkyYWU2NjkgbGVnYWN5LXRydW5rCiszODY5MyA3MThiMGI1YTY0MTlmOGU1YTgwMWQzOWI2NWFiMWNlNDIwMzE1Y2Q1IGxlZ2FjeS10cnVuaworMzg2OTQgOTljMTZlNDRlNWQ0NmY3NDZjNTg2Njc4ZGQwNTg4ZDA3NjRjMWNhNSBsZWdhY3ktdHJ1bmsKKzM4Njk1IGQ1NWRlYWU0MzEwZGMyM2QxYTc5ODEyZmQwNWMyMmIwMWEyZGI2YWIgbGVnYWN5LXRydW5rCiszODY5NiA4ZjIxZWMzMjc0ZjFjNDY5YmIxNmY4M2UwMWI2Zjk1ZTE3N2IzNDg3IGFzdC1icmFuY2gKKzM4Njk3IGI4ZmY5YmMwMjNlNjc1OWM3ZmFmNzRkZDViZTUzYWQxMjQxNDk2ZjIgbGVnYWN5LXRydW5rCiszODY5OCA0YjlkZjQ4NTZmMzdhNjMwNjU3N2JlNTY2MGU5MDQ1NjQ1MDM0NWI5IGxlZ2FjeS10cnVuaworMzg2OTkgMjM4MGY5ZDFlYmFiOTVlZDRiMGE0OWNlODI5ZGFmYjA4NjlkNGVmNCBsZWdhY3ktdHJ1bmsKKzM4NzAwIDU1NDdmOTAzMDEwOTgzNDVkMmY5OTU1ZTFiYWQxMjcxMTI5ZmZjOGMgYXN0LWJyYW5jaAorMzg3MDEgOTE1MjNjYWVlMTgzOTA1ZTY0NmQwNmY5ZmI0OWQwZDQxZTJmODNhMSBhc3QtYnJhbmNoCiszODcwMiBlMGY1MTk4NTNhOWYyODA4NjEwZjkzYzBlMDhhYTc2N2RiZGUyZjQ2IGFzdC1icmFuY2gKKzM4NzAzIDU3YzZhNmE4MDJhMDgzMTY3Y2ViYjIxZDJmNjJlZTViYzllOTJiYmMgbGVnYWN5LXRydW5rCiszODcwNCAzYzdiMTk2ODk0NzlkOGFjNWQ0MjFhZmYyMTE4MWY5NGRhMWZmMjA2IGxlZ2FjeS10cnVuaworMzg3MDUgOGZjOGU3YTYwNzFjNTA0MTY5MDNjODUyNjNhNTVhYWZlYTEzMDcxNyBsZWdhY3ktdHJ1bmsKKzM4NzA2IDQ5ZTMwYzZjOTFjOGNlNWFmYmZhZWIyZmM0MzdhMzRlYmI3MDAzNjMgbGVnYWN5LXRydW5rCiszODcwNyBiMDE2MjM2ZGZiZDlkZDAyY2JlNGNjM2U0NTQ0NTQxMjg0NmYxOGMwIGxlZ2FjeS10cnVuaworMzg3MDggMjZmMzI3MmQ5ZTExMmVhMWVhYWMzMGQ2M2I0MjhjNzY0NTA0OGMxNCByZWxlYXNlMjQtbWFpbnQKKzM4NzA5IGE0MTI2Mzg5NTBhMTNhZDM0MGRhOTdhNjRiYmE3MDEwMzk5OTg2YjcgbGVnYWN5LXRydW5rCiszODcxMCA3MjFlNjBmNDU0ZjNjODkwNjU0Yzk5YzdkMzAzNTI3Zjc4Yzk3NzJhIHJlbGVhc2UyNC1tYWludAorMzg3MTEgMjk1NmRmOGUwYTQwNDVjMGZmMTNjNmRlYTQyZDJhZmJkY2FjMTc3MCBsZWdhY3ktdHJ1bmsKKzM4NzEyIDA3YTRlOGQ4ZWI2OTIyMTJkOTBkZDQwMzI0ZTkxMWIwOTgwMTc5OWUgbGVnYWN5LXRydW5rCiszODcxMyA0ZWFhYjM4NTY2Yzk0ZmY4NDlmNDAwYjljZDY4YTE3NDlhYmQ3ZWJkIGxlZ2FjeS10cnVuaworMzg3MTQgMDFiYTNiNDA0MzFmMjlmZWQ2MjllN2EyMTAxODUwNjJmYTQwMThjNCBhc3QtYnJhbmNoCiszODcxNSBmMWM2MzAzMzIxZDcwYmMzNWVmNWRmN2RhZGM2NWMyN2VjMDViODU4IGFzdC1icmFuY2gKKzM4NzE2IGQ2OWZkZTQwYzcxOWM5NWM2ZDUwNTg0YjA2MDdhOTcyYzgxYmNlZjkgYXN0LWJyYW5jaAorMzg3MTcgNzYxMWRmMjFhNTkwMDlkNTM0MGMxNzE2YmE0MTI1Nzk5YWJhOWZjOSBhc3QtYnJhbmNoCiszODcxOCA5M2NhYTdkZWNlZTM2MDY1MDkzNDFjYmMzMWFjNWFlNDBjNmVkMjBmIGFzdC1icmFuY2gKKzM4NzE5IGFiODFjODNhOWFjNmNjYWFhYzRlMjdlZDE2ZDgzNmE4ZjNmYTI2NmIgcmVsZWFzZTI0LW1haW50CiszODcyMCA2NTNjYzA5ZmQ5MzEwMTYyMzE4ZGFhZDk2NTAxYmUwYjc4YWViOTk2IGxlZ2FjeS10cnVuaworMzg3MjEgNDdjNTgwM2FhYjQ1ODFiOTg3N2ExMGZiZGI4OWVhYjM4ZTM0ZDRlMyBsZWdhY3ktdHJ1bmsKKzM4NzIyIGVjODdhMTE2NDBkMDAyYmMyNmYwZTBhNGM0NGMxNzQ4ZjI3N2Q4NjEgcmVsZWFzZTI0LW1haW50CiszODcyMyBmOTJkODQ1Zjg3MDMzMzRkODhmYTE1OGJlMGQ3YmRiZjI5YjAxYjNiIGxlZ2FjeS10cnVuaworMzg3MjQgYTUwZmZlNjU5MTFiMGQ0OTg4MGE2YTEwNThlZjA1ODM1ZTlkZDI4YyByZWxlYXNlMjQtbWFpbnQKKzM4NzI1IDAwZmZkYmZjZDVhOTI3ODY5MmVlNmU3MTE1MmQ1NTZiZmEwZTJhOTYgbGVnYWN5LXRydW5rCiszODcyNiA1Y2FmODBmNTVjODYzOGQ4Zjk1NTA3NDdkYWE2NjQ1YWFhODE5N2ExIHJlbGVhc2UyNC1tYWludAorMzg3MjcgOTg1ZGQ3ZjA2NDIwODFlYTk0YTM0Zjk5NGU5YWRkOWYyZjFkMzAwMiByZWxlYXNlMjQtbWFpbnQKKzM4NzI4IDRmMDgzOGI2OGJiYmYxZGUyOWQ3NjZiM2RlMzYyNWMyOTY5MWFjNWUgbGVnYWN5LXRydW5rCiszODcyOSBiNzJkZjhhZWU1NmRhOGY5Y2QyNzZlODZjZGIwM2VlOWFkZDBmMDlhIGxlZ2FjeS10cnVuaworMzg3MzAgMjg4OTJlNjUxMmJhNmI5YjczMTk3NjA2ZjNmMmQ4ZjRkOTgyMzhmNyByZWxlYXNlMjQtbWFpbnQKKzM4NzMxIDMzYTllNDBhNThkNTJhMDIwYzJiNTI4NjgwNzk0ODk1MzI1ODNhODUgcmVsZWFzZTI0LW1haW50CiszODczMiBhZDJkZDg4NDEzN2ZmNTcwMzhkNGUwNTM2OWMxMjgwMTZhYjZjMTc2IHJlbGVhc2UyNC1tYWludAorMzg3MzMgYmJhMDM5ZjJlMDUyOWIxNmEzZWQ1NjI4YjEyYmNiMTVjY2NmODJhZCByZWxlYXNlMjQtbWFpbnQKKzM4NzM0IDdjZmRhOTg5ODg2Mzk2ODMxZjUyZTNhNTgyNTBiNGVhZmQ4Y2FiODYgbGVnYWN5LXRydW5rCiszODczNSAzYmNkZDQ0NmExM2I5Y2I3OWQyOGM2ZTdlOGQ0ZDNiMmM4YmE5ODY4IGxlZ2FjeS10cnVuaworMzg3MzYgMzA2ZjdkNGRiNWVmY2NhZjE3ODRlN2ZjMzJkNDNkOGNkYmM3NWZiNyByZWxlYXNlMjQtbWFpbnQKKzM4NzM3IGE2YzU4NjI2NmRlYTU4ZmJjMTVhMjEyNWQ4ZGViN2RlYmJkNDFiOTQgbGVnYWN5LXRydW5rCiszODczOCA3ZTJkOGUxN2NmMTRhNDExYjFlNTYwNTQ4ZDc4MGRjZWYyZGYzOGM2IGxlZ2FjeS10cnVuaworMzg3MzkgMzBiMDJjN2VmOGJhNjcwMmViZmE2ZTZiMjE2OWI1ZDNjZDUzODVlOSByZWxlYXNlMjQtbWFpbnQKKzM4NzM5IGY5MDU0ZDIzNTg3MDAyOWFmYTMzZWY5NDViY2E3ZWNlOTk2MTZjMTAgcmVsZWFzZTI0LW1haW50CiszODc0MSBmMzE0MjNjNDk1ZDY3ZjAyNDNlMTM0YTVjNzU5OTJlNThhZjNmM2Q5IGxlZ2FjeS10cnVuaworMzg3NDIgZGUxMjE4OTlkMDIxNjE2MzQwYmY4Njc0MDk3YjU3Y2QxYTNkZTczMCBsZWdhY3ktdHJ1bmsKKzM4NzQzIDVkZGExZjllNjJhNzM2Y2ZiNWQwYmIwMTBhNDA1YzEwYmRkM2JmYzMgbGVnYWN5LXRydW5rCiszODc0NCAwNjU4ZTZlZmZhYzcwNDhmMWU5NTFlNzZkYmI5MWMyMDc4MmZhZmQxIGxlZ2FjeS10cnVuaworMzg3NDUgY2QyYzA0NGY2OTlkN2M4Y2NlZjUxMTZjODE0YWFiMWJiYjE3ZTZhNCBsZWdhY3ktdHJ1bmsKKzM4NzQ2IDEzZDVjYWExZTlkMDJhYTk5OTcwM2UyOGQzMzc1YmU4YzYwMDk2NTggbGVnYWN5LXRydW5rCiszODc0NyA1MWJhOGNlOGQ5MmFmZGYwM2I2OGE4MTEwMmRjZmZjMmFiMjc1YjQyIHJlbGVhc2UyNC1tYWludAorMzg3NDggNThmM2YwZDA0NWY1NDVhZGI5YWMzZjYwOGVmYjc2NDFhYTQzNGU0NSBsZWdhY3ktdHJ1bmsKKzM4NzQ5IDg0NDUzMDUwODQ3NTY3ZjgwMTcyOTgzNWYxYmY1YjMwMDE4N2NmMzQgcmVsZWFzZTI0LW1haW50CiszODc1MCBhZWY3MTNkZTdhMjNjNjQ1MTE4OGNlZGE5MDQ2YmM5ZTc0OWFiYmYzIHJlbGVhc2UyNC1tYWludAorMzg3NTEgZWFkNWU3M2FiYjUzYzk4ZjNjNjhhOWQzYjYzZDU3Yzk2YjM3ZmQ0YSByZWxlYXNlMjQtbWFpbnQKKzM4NzUyIDYzYzVkNmNlMDc2MzRkNjYyZTE0ZTg3N2QyYmJkNWRmYjYyNzRkOTggbGVnYWN5LXRydW5rCiszODc1MyA3ZTFhMzEzM2ZmZjJlYTU5MmYzMjgxOTk3YTY4MjUxOGYzOTBlODhiIHJlbGVhc2UyNC1tYWludAorMzg3NTQgNmFmZjIyNjAwZTE1YWEzNjZhZjhlNmE5MTAwMTFjMGViNjNmYjFkNSByZWxlYXNlMjQtbWFpbnQKKzM4NzU1IDExZmQyNjM3ZTViYjc0NGUzZmRkZmQ0MGE0ZGFkYmEyZGEyMzdkY2MgcmVsZWFzZTI0LW1haW50CiszODc1NiBlYjZjMjkxNWJhZGQzNWMzNDhlYjcxYTdkZGMzY2VkNTkwY2Y1NzM5IHJlbGVhc2UyNC1tYWludAorMzg3NTcgYTk1MTFjMTUxMjRiZTVhNTgwMzJlYmVmYzE3ZGI1MGFhYWFiMGEwOSByZWxlYXNlMjQtbWFpbnQKKzM4NzU4IDJlYTNkNjkxNTIwNDEwM2Q5OWNhMGRkMDU3NWEwM2U4MTM0ZjJlOTQgbGVnYWN5LXRydW5rCiszODc1OSAzOTM2Y2Q3ZjE2ZjI1NWYxMWM5YzI0Mzg5YWZkNzQzOWRjM2FjMTNiIGxlZ2FjeS10cnVuaworMzg3NjAgYjg1ZTgxMDQ2MGVmYzViNDI3NzFhNzU4NWU3NWNiODc0NDMxMmJhMiByZWxlYXNlMjQtbWFpbnQKKzM4NzYxIGZlNTMxYjVkY2ZkNjA5MmIxNDQ0MDA0MzhmM2E0ZWRhN2I1OWZjMjEgYXN0LWJyYW5jaAorMzg3NjIgODBjYzQ0ZWFiZGVlMjU5YTAwNzUwMThjMjZhNjNkZDVmYmFlYjdjYSBhc3QtYnJhbmNoCiszODc2MyA2YjIxZGM5NDM4YWQ1YzFlZjk5OTYyN2Y4ZjhlNTQyZTljNmFmZmQ3IGFzdC1icmFuY2gKKzM4NzY0IGNhNGQ4YjRmYmIwNWRiMzEwNjlhNmU4MDc1YTEyNzExOTljOGMxNTkgYXN0LWJyYW5jaAorMzg3NjUgNWMxZWJiNWFlNTIxNDM5NjgxNDM4MzlhZjdkZjkxM2M5NDZiMDNhNCBhc3QtYnJhbmNoCiszODc2NiA1ZThjOGNiMTFlNWJkYzJmM2ZiNzFjYzc2YWJhMGYxNDY3MmE2OGRjIGxlZ2FjeS10cnVuaworMzg3NjcgYWI1ODIyZjc1MTVhNWZlYzU3MmYwMzJjZTk5MWIzMjM2Y2IyMmFkYiByZWxlYXNlMjQtbWFpbnQKKzM4NzY4IDcxZmQ3ZWU0YjdmNTBiYzkzM2Y3MTE0MDgxYWY5MzJkZTg4YWJkMmUgbGVnYWN5LXRydW5rCiszODc2OSAzNGNkZmM1ZGQ3ZWEzNGU1NzY2ZDg4OThlMjRlMDFiMWE4MTczYzI1IGxlZ2FjeS10cnVuaworMzg3NzAgYjQ5ZDM5MTExYzQ4NmNlZDgzOTFjNzljYTM1ZjI4NWFlYzhlMTZlNyBsZWdhY3ktdHJ1bmsKKzM4NzcxIDU1MzVjZTBmZjdmOWY2ZjVkZTk4MDE0MjY4ZTAwYjU3NWY4ODBmMDIgbGVnYWN5LXRydW5rCiszODc3MiBkYTQ2MDg0MWI2M2NiODNkNjE3YmFkZjg4ZmJkYjEyZDhkYWRhYzlmIHJlbGVhc2UyNC1tYWludAorMzg3NzMgYmM5ZmJjMjNjZDRhNTk5MThkYjEyNzFiMDg2NGQ0MGI0ZGQ5NTZhMyBsZWdhY3ktdHJ1bmsKKzM4Nzc0IGI2NDk5NzNkMDk2MmViMDdiNTg5YmVmMzQyNWZhZTYzZmRkOTk0MzUgbGVnYWN5LXRydW5rCiszODc3NSA2ZGQyZDEzNmU4NDY2MWMwNzgzOGQ0MjMzOTM0MTQwNWU5YjJjNDU1IGxlZ2FjeS10cnVuaworMzg3NzYgZTc2MmZlYTc4Y2IyMzYzYmUxNjM1ZWU3NDZmZWEyZjhjOTE0ZTU0YiBsZWdhY3ktdHJ1bmsKKzM4Nzc3IDAxNDNkOTkwZDYwY2M2MDEyMGU0NmI0YTExMzA3YTk3M2NiYzZjMGMgbGVnYWN5LXRydW5rCiszODc3OCAxOGRjOTE1ODE2MGQ1Yjc4Nzk0N2EzMGM3NjA1OGY2NjAzM2UxN2EzIGxlZ2FjeS10cnVuaworMzg3NzkgNWE1MjIyMjVjNGRiMzU5ZmI3ZDU4Mzg1ZTM0ZGMyYzMzNjA5ZGMxNyByZWxlYXNlMjQtbWFpbnQKKzM4NzgwIDIwYjNjNzIzNTAyYWQ0YjM5ZjM4MzgxYjhlNDRjMGJlY2IxZDhjZGQgbGVnYWN5LXRydW5rCiszODc4MSBjMmE5YzNhMTg0Nzc2ZmM2MTQyNjU2ZTUwMGIyM2NlNzIzY2ZhMmQ3IHJlbGVhc2UyNC1tYWludAorMzg3ODIgOWE3ZjQ2YzQyNzczMTRmNzRkNTlmNmJjMTI0ZGZhNDdiNjk1ZDkxYyBsZWdhY3ktdHJ1bmsKKzM4NzgzIGI5OTY3NDdjMDhiNjg5MTUwMjA2NTQxZGI1MmM4MzlhMWUxYmI0OWIgcmVsZWFzZTI0LW1haW50CiszODc4NCBhZjVkNDgwMTRiM2U2MzY1ODZhODY2YzVkNTE4MDdiMTdhMTJmNzJlIGxlZ2FjeS10cnVuaworMzg3ODUgNWJjOTFiYjI0NGIxOTAyZmY0MzFmNzE1Y2JmYjZiN2Y0MGI2NDM2NCBsZWdhY3ktdHJ1bmsKKzM4Nzg2IDY0YmM1YTkyMmY1NzkxYjRiODc1Y2VjMGRhZTdiMTg1N2E3NTc3NDYgbGVnYWN5LXRydW5rCiszODc4NyAxNDNjZGE1YTkzNDgxZmRmMDczMmVmNGNjNjAxODRmNjk0ZjAyNTVlIGxlZ2FjeS10cnVuaworMzg3ODggMDM2MTMwOTdiOWNiMzQ1NDEwZjU0N2Y0NjBiMDU1NmI2MzcwMDBiZSBsZWdhY3ktdHJ1bmsKKzM4Nzg5IDc5MjAxZjgyMGVkMDRhOTBkYWFjZGNhZDQ2MTZmNWFmMDlkOGUyYjIgbGVnYWN5LXRydW5rCiszODc5MCBhZDZhYTJlZWNiNTY5YjE0NTI2M2VlOWQxMGJiM2E5NGNmMjgzZmJjIGxlZ2FjeS10cnVuaworMzg3OTEgMDc2YTdjN2ZlMjhiODEwYjUwMDAwNTllZDgwYzNkM2I5MzNmOTVlOCBsZWdhY3ktdHJ1bmsKKzM4NzkyIDdjMjc4MGM5ZTUxYmRmMzNhNWViMWE5YmY4MzU0NmU1MDdiMjMxM2QgbGVnYWN5LXRydW5rCiszODc5MyA4NjJlYmI2MjEzNTUxMDkyNThhYjk0OTRlZTcxNzkxNDI3MmRkNmE2IGxlZ2FjeS10cnVuaworMzg3OTQgOWU2NTljYjcyN2VhNjhjOWE1NDM5ZThjNzk2Njc1MTVkOTJiMjAwOCBsZWdhY3ktdHJ1bmsKKzM4Nzk1IDQ0NDY4ZWZiNTI1ZWQ1Nzg2ZGI5ODgyN2QyMWQ5YWU2NzRjOTFhOTEgbGVnYWN5LXRydW5rCiszODc5NiA0OGM3MWZmMzg1NzgyY2MyMjcyNTNlMmQwY2U4NWMwYjQzZTZkYTNiIGxlZ2FjeS10cnVuaworMzg3OTcgMTkyNGEwN2Y3ZjIzYWY3ZTliYzljYjE1MTA0NTdmNzkwNmEzOGMxZiBsZWdhY3ktdHJ1bmsKKzM4Nzk4IDQzM2Q3Mzc4ZGZjMmZjMjMxMDBmMGE2ZTkxYjFhM2I3YTkwYzE0OTkgbGVnYWN5LXRydW5rCiszODc5OSA2MWVjOGI3OTU2NDFjNGQyZWE1NDMyZjNjYmNhMjdlZGMxODE3ZDc2IGxlZ2FjeS10cnVuaworMzg4MDAgM2JjMjhmNjM1MTdhNGQwM2MzNDYwNWMwMzAzNWRmZWIxZTYxZjVlZCByZWxlYXNlMjQtbWFpbnQKKzM4ODAxIGQ1MjA3NGQ4OTRkZjI5Mjk0ODc2OTBkYWMyNjI2MWUzNDQ2YTYwODIgbGVnYWN5LXRydW5rCiszODgwMiBmYWQxZThlMDk0NTZkMGQ1MWVlY2M0OTU2ZTQwNDE1NWU3ZDVhM2Y1IGxlZ2FjeS10cnVuaworMzg4MDMgZmJjYjFkYTQ4MGRkNGIxYWYyYjE3ZDc3MWVkN2E1MTk3NWM1ZTE3NSByZWxlYXNlMjQtbWFpbnQKKzM4ODA0IDFhYzkxNGQzYmRjMzk0OGQzNDVlNTZiYjc4Yzk5NGNkMjVkY2VhYmQgbGVnYWN5LXRydW5rCiszODgwNSBkYWQyYjYyMDQ5NzQ1NTU5ZWY4ZDY4MDFiYzVmOGEzMzE0YWU4Mjc0IHJlbGVhc2UyNC1tYWludAorMzg4MDYgMzRmOWIyYWRhZTJjNmJmYjk1OWFkYWUzODRhNjg3YTAyYzI4N2NlMyBsZWdhY3ktdHJ1bmsKKzM4ODA3IDM4YjY1NDgzNjlmYWU4NWMyZTk4ZjA3NWNmMjA5YjdkN2I0Y2NmN2IgbGVnYWN5LXRydW5rCiszODgwOCBjZDNiOTUyNzA4YWYwZjlhYmU4ODA5YjY5NDk0MDhjZDBjYWEwZjBjIGFzdC1icmFuY2gKKzM4ODA5IDRlNjI5ZWJkMGUzZTU3YjBmNzk3NDdkMDk2ZmQyM2JmZTQ0OTgwNzAgbGVnYWN5LXRydW5rCiszODgxMCAwMjBlZDY3MWFhNjIxNWVhOTExNjJmZTU2NzFmNGRhN2YyZDkxZTI2IHJlbGVhc2UyNC1tYWludAorMzg4MTEgZDdhMjExN2ZjYTQyNTM1MGUyODhlMTUxNjcxMzY1NDAyYmZiNGRhYiBhc3QtYnJhbmNoCiszODgxMiBjNjA3MjlhNTc5MzI1ZjQzMWZkNDM1ZGIyZmEwNDJmYjYyMjc1MmJjIGFzdC1icmFuY2gKKzM4ODEzIDhlNmNkNTAwYzhmYjVhNTQwODA3YmY3MzM0MzJlMDQ3Mzg1OGJjZjIgbGVnYWN5LXRydW5rCiszODgxNCBmYzQ0MmMyZWIwY2Y2ZGJkOGFkYTFkYjE1ZTE3YmZkZDg2N2UzNWE4IGxlZ2FjeS10cnVuaworMzg4MTUgOTg2ZDQ2YzRmYWViMjI5MDk4Yzc2MjhlOTBjMGU3OGE2MzNmNzA5YSBhc3QtYnJhbmNoCiszODgxNiBjOGFmZGQ5MjcxNWMzMjc3NTE0Mzc3ZTMyZjEwZDdkNDUxOTQyMDE1IGFzdC1icmFuY2gKKzM4ODE3IDYwODMwYWQ2Mjc1ZTJjODAwZTY2NzdhNDQ3ZWJiOTY5YTgxYmYyMmYgcmVsZWFzZTI0LW1haW50CiszODgxOCBhOTllZTI1MGUxMGMxYzU2MzNiOGM5ZDA3MzdiNzMyNDEzMjQyMjhlIGFzdC1icmFuY2gKKzM4ODE5IDMwZjM3YzBlMTU5MjU2YzljODM2NjFjZmM1MzlkMTE3MDJiYjY0ZmQgYXN0LWJyYW5jaAorMzg4MjAgYTk2YjUwMTQ5OGE4MDhmMDIyY2ViODNmMGE2YTYwMmU5M2Q1MjBjNyBhc3QtYnJhbmNoCiszODgyMSA1YzYwY2JiNjUzMzBjZmFhNTc4YjA1NDRlOWMxZDMxOGRkMWQ0YjRmIGxlZ2FjeS10cnVuaworMzg4MjIgNzI2N2ZjNDBhZGFjMTUzYjc4M2UzNzM3MjBiMWI4Mzg4ODdjNGY4YyBsZWdhY3ktdHJ1bmsKKzM4ODIzIGQ0MzVkMjE0YTU5MjQxNDUyMDdjZDViNDEyMjUyMWNlYTJlZDQ2YTggcmVsZWFzZTI0LW1haW50CiszODgyNCA4NzcxOWFlOTI4OGNlZGJiOTk4M2VkZTUxYmNjNjUxYmQxNGQzZDg0IGxlZ2FjeS10cnVuaworMzg4MjUgMGYzMDYxZjQ5YTllODlhYjY4ZjgwY2E4YTk4MTk0OWNmOTQ1OTAwNSBsZWdhY3ktdHJ1bmsKKzM4ODI2IGFmNTkwZjYyMmMwYmMzYmU2ZmUyOTIxMzJlYjI2NDk0OTQxYzc4NmYgYXN0LWJyYW5jaAorMzg4MjcgZDRmZmM3NzFlOWZmOTY4OGRjNDE2MjRkNTA2NTk2ZTQ0NGRiZGU5MiBhc3QtYnJhbmNoCiszODgyOCBiNDc3YzRkN2EyMGMxYTY4MjBjMTdjYjkyODM0YjBlNjAxYmI5ODVmIHJlbGVhc2UyNC1tYWludAorMzg4MjkgYzRlYTE3Y2Y1MjExMTU2NDNmMWUzZDkyNjRjZmFkYWIxNjk5YTVlNiByZWxlYXNlMjQtbWFpbnQKKzM4ODMwIDhiMDNiMDkxNDFkMjg3MTcxZjFlOTYzZjA2ZDY3Y2Q4NzE2MmMyODggbGVnYWN5LXRydW5rCiszODgzMSBhMTMwOTZiODU5OGI5YTY3ZGI1MzYwMjI2NzA1OGI3ZWU4YTY4N2RjIGxlZ2FjeS10cnVuaworMzg4MzIgNmJkYzM0MjZkNDExM2YxMjVlMGJjYTQ5ZTAxMTE4NzRlNTVhMmY4MSByZWxlYXNlMjQtbWFpbnQKKzM4ODMzIGY5ZTMxZGI2YzcwMzYwMzZlYTViYzM2ZjQ0MTc5NDBiOTQzZjUyYzggYXN0LWJyYW5jaAorMzg4MzQgZmJiMmYzYmI4Y2NjZDE1ZjQxZTg5NjBjNjlkMWJjYWU5ZDU2OWMxOSBhc3QtYnJhbmNoCiszODgzNSAyODA0YWEwNDM4Y2M4ZDM2ZmMzZGUxYzg5ZDIwZjllMWE1M2YzMDkwIGxlZ2FjeS10cnVuaworMzg4MzYgYWUyNWQ0NWY4OTg3NjM1NGJmODQzMjU2ZmUzN2ZiNmVkNzMxZTk1YyBsZWdhY3ktdHJ1bmsKKzM4ODM3IDY3YTg5YjQzZGNjNzIzYTU1YjhmMzM2YjYzY2M0YzExYmUwNzJjMzkgbGVnYWN5LXRydW5rCiszODgzOCA0YzhlNTI0M2NhNDI1MzFlNDM4ZjliMWUwOTAyNDVlZTk3MGE4MzMzIGxlZ2FjeS10cnVuaworMzg4MzkgZDM0YmRlZDMxOWFhZTVjZmZmNDBiOWFjYjNjZjllYWQ1YjdkMzE4ZSBsZWdhY3ktdHJ1bmsKKzM4ODQwIGJjMTIzYjljZWY3ZmE5NjljN2IwMjI5YTFmMWUyM2FiNjRiYTNlNjIgbGVnYWN5LXRydW5rCiszODg0MSBjNjZhN2ZiZTE2Y2Y5ZTUxYzliMTEwNDkwMzJjNTY0OTAwZGFhNWMyIGxlZ2FjeS10cnVuaworMzg4NDIgMTMzMWM3Nzk5NjQwOTM2MmRkYzdhNjk0NjE0ODAwZTliMDFlYjQ3YSBsZWdhY3ktdHJ1bmsKKzM4ODQzIDdmNzIxMDlkZmI0ZmFmYzc4ZTIxMTNhMmQyNjRhZDkyNWU4ODMxOGYgcmVsZWFzZTI0LW1haW50CiszODg0NCBkMDU1Zjk0ZDA5MzZhNjkwZjIxZjFkNmVhNzUxMzZkNzYyMTJhNTk4IHJlbGVhc2UyMy1tYWludAorMzg4NDUgOTg1N2RhYTIyODA3YjczOWJiMDVhOWVkYzU2Y2MyZTYyZDkzZjcyNSByZWxlYXNlMjQtbWFpbnQKKzM4ODQ2IDM1ODE4NDBjODJlNzAxYjRiNDFkYTM5MGM1OWVmZjQ0MjcwZWNjODMgYXN0LWJyYW5jaAorMzg4NDcgMDhlMjBlOWM3NmZiZjNlZTM3ZDhhYTE4MzFjMWI1YmI2ZWRiNjkxOSBsZWdhY3ktdHJ1bmsKKzM4ODQ4IDI5NGRhYmNiMzc5YjUxYmU3Y2M0MWFjMjMxZTBiMTI3MjVlYmUyMmYgbGVnYWN5LXRydW5rCiszODg0OSA5YTFiMWUxYWU2NTNmYzk1NjMxMzQ3MzIyYWI0ZjdiNTljMzQ1NTdkIGxlZ2FjeS10cnVuaworMzg4NTAgNDljNmRjZWQwOGMyMWY0NDNiNmE1NDE0MWVkZjFhZjE2NmIzNzA5NiBhc3QtYnJhbmNoCiszODg1MSBjMWE4YzJkN2U1MjhiZGI3OTcwZjUyZDU4MDQ4YWM5MjVlNWM3ZWM0IGxlZ2FjeS10cnVuaworMzg4NTIgYWFlYWIyNDljODZhZDMyN2VmMTI3MmMzMGZmN2IwNTQ4Njk4ZDE1NyByZWxlYXNlMjQtbWFpbnQKKzM4ODUzIGVjOTdlNGMzNzA1NjNhZjk3ZDI2NDg4NDQ2Njk1ZjM5NmU2MDg0NjggbGVnYWN5LXRydW5rCiszODg1NCA1Y2NjODc3N2NlYTI3MTU3OTZlMzNkMjZjNjExYWI4ZjY0MTQxMWJlIHJlbGVhc2UyNC1tYWludAorMzg4NTUgYTUxODVhYzFlNGVjNmNhZmM3ZDJlNTQ4MjhlNzUyNjMwM2MzYWYxOSBhc3QtYnJhbmNoCiszODg1NiAxMGFmMTY1ODNiNzU1NTg5Y2MwZjQ2MjRmNzRiMjliNDAzMGIwZDZmIGxlZ2FjeS10cnVuaworMzg4NTcgZGFiYTg1ZWY2NTRhNDlhYmNhYjBhMTQ3NmRiMjIzNGYzNDc0ZTZjOSByZWxlYXNlMjQtbWFpbnQKKzM4ODU4IGMwYjRkZTc0MWIzODNkZmMzODVkYTg1NjNkYzFiNmI3OWE2MTAxYjMgcmVsZWFzZTIzLW1haW50CiszODg2MCBhMTI5M2VlNmUxZGI5YTk0YzhmYWU5MmUyMWU2YWI1YmM2Mzg0YWFlIGxlZ2FjeS10cnVuaworMzg4NjEgM2M2NzlkMDA4NzllYmIxYjUxM2IxOGVmNmFlYjE0MTJjZDQyMGY3NyBsZWdhY3ktdHJ1bmsKKzM4ODYyIDQ3NWY4YWRjYjAzMjk0MGU2ZjY2ZTQwN2QxNWNlZWM0Mjc4MTQ3N2IgcmVsZWFzZTI0LW1haW50CiszODg2MyA3Mjg3YjQxMTQ1YWUzNzZhMGZjZWE3MDEyMjE3NjA1YWViNzA2NzY3IGxlZ2FjeS10cnVuaworMzg4NjQgMmM3NDk4YzJhZTcwN2ZkYTM3MmNkNzQ0ZGQ1ZjJmZGE5ZThkODYyZSBsZWdhY3ktdHJ1bmsKKzM4ODY1IDc0YzEyYzFmMzY5Mjk0NjE5MzU4NDM4NGViNzNiMjM4ZjdiYmY5ZjUgbGVnYWN5LXRydW5rCiszODg2NiA5ZmU3ODAxZmM5YTRhMjE4OTNhOWNhNDZlMzIyN2U0NGVlMTVhM2U5IGxlZ2FjeS10cnVuaworMzg4NjcgYTE3MDAxZjhlMWI0ZWI0MTFkNDFjYTJlYTVjNDE5MmJkYzEyOWZjOSBsZWdhY3ktdHJ1bmsKKzM4ODY4IDljOTE3MmJlMWY2OTc1ZWJiNWI0MjQyNDZhMTdiNGU5NDFmMDQxNjAgcmVsZWFzZTI0LW1haW50CiszODg2OSBlNGUwY2ZmMTZiYzdlOTdiOTc0MmU3Y2MzZmY1ODg4Y2RjMWY5OTQ2IGxlZ2FjeS10cnVuaworMzg4NzAgNzVmNTE5NjEwOTdiOWQ5NzU4ZDA0MTgzOTU2Nzg1MjYwOGI0NGZiOCBsZWdhY3ktdHJ1bmsKKzM4ODcxIDFlN2E2YTVjMzYxNDNlNGNmNjllOTY3YjYzYmRlM2MzY2MzZGM0OGIgcmVsZWFzZTI0LW1haW50CiszODg3MiBiMTE2MzM5ZGRmMjc4NWYzNDExNzBmOGJkOTVlMzc5ZmIwYmE4YWI3IGxlZ2FjeS10cnVuaworMzg4NzMgMzY1OGE3ZTExYzE0OGQ4M2MwOGFiODNmMDlhM2I1ZWMwZWQ3MDc5NSByZWxlYXNlMjQtbWFpbnQKKzM4ODc0IGFlNWYyNzQ0NmY4MTkyNDc1M2RkZGUxYmIyYTQxMDNiZmY2Zjg2MDQgbGVnYWN5LXRydW5rCiszODg3NSBmMzMwMDc4NjQyNDNmMDk2MDY2ODkxNjA3OGU4MDBjNGNhNTA1NmM2IHJlbGVhc2UyNC1tYWludAorMzg4NzYgOTMzOWM5OWEyOTgyODEwN2E3YWM5M2VmYTgyZjRjZGNhYzBiNTRlMCBsZWdhY3ktdHJ1bmsKKzM4ODc3IDQwNDA4ODUwM2E3ODAyOTZhMTFkMmQxMjEwNzMzNDkwMjkxY2ZmYTcgbGVnYWN5LXRydW5rCiszODg3OCAzNzY3Y2RhYTY3MjgyNDhjYWVlYTE2ZTk0ZDIzNjg1NGRhNzFmZTRjIGxlZ2FjeS10cnVuaworMzg4NzkgYzkxZTVlMzFjNWZmMWMyYWZiYjBjN2Y3NTgzNmQwNzA5NjVhZWEyNiBsZWdhY3ktdHJ1bmsKKzM4ODgwIDZiYTI5M2I3MTE1Yjc5ZWQyMWU5Yzc2MDM4MTU5YmQ2ZTA3MjE3MmEgbGVnYWN5LXRydW5rCiszODg4MSA4MGZiMjg5MWIzM2JmY2IxMTNiMGM0MzM4MjU5NzI5NWQ3NTU2N2Q2IGxlZ2FjeS10cnVuaworMzg4ODIgNGEzM2M1OGMzMTljMDhiODYxODNhNWVhOTIxOGM4MDRmNzkzYjM5OCBsZWdhY3ktdHJ1bmsKKzM4ODgzIDA0NzQzNGFjYjVhOTE5ZDM2NDA2MWE2Njg5Mzc3ZTI2NjczOWRlM2IgbGVnYWN5LXRydW5rCiszODg4NCA1MGJlZDY3OGVkZGEyZDdmMjA4MmI2YzgzNjU1N2FhMjBhNWExMmExIGxlZ2FjeS10cnVuaworMzg4ODUgMWVhODA3NzY5MzI5MmQwMTcwZTM2NWFjOWViYjcwM2Q3ODBmMWZlNyByZWxlYXNlMjQtbWFpbnQKKzM4ODg2IGY2YWY5NDMwMWViYzI3NTE5M2RiZTA0OWNjYmFiMmEzNGE5MGRkZTYgbGVnYWN5LXRydW5rCiszODg4NyAxNDVjMDNhODVlYTgzODcyNTFlMGMwOTUzMzg3YTM4ZGI2ZWY0MmQ5IHJlbGVhc2UyNC1tYWludAorMzg4ODggOTM2Mjk3NzBhOTNmNDY3OWQ0ZDZhN2I5NDgyMzJiNmQyNjc2M2M5NiBsZWdhY3ktdHJ1bmsKKzM4ODg5IDg2ZjRiMTgxN2NhYTY5YzZhYTBjNTQxNDM5Y2I2ZTQ2YjA2NjFhMzYgbGVnYWN5LXRydW5rCiszODg5MCA2NzJlNWY2NTE3MmMyZjE2OWExYmQ0ODY0MWUzYzQ3OWJjNmViODM5IHJlbGVhc2UyNC1tYWludAorMzg4OTEgZDQ1MTU1NDc5OTc2NjZjMGFmOGVjZjJiZTA4M2M0ZTBjNmNmNGZiNyByZWxlYXNlMjQtbWFpbnQKKzM4ODkyIDA5MDU4MTJkZjRhNWYxNDkyNWQ1MTE3ZDQyYjI5N2MyZWIxNmUyNDYgbGVnYWN5LXRydW5rCiszODg5MyAxZGQ4YTBkNjQ0MzIxY2JkMDNlNThhZjQ5Njc3ZjUyMDgxYmRjYWVjIGxlZ2FjeS10cnVuaworMzg4OTQgOTE2NTE2OTgxMjYxMDYxZmUwNjUyZWM0NmQ2NjFlNWZlM2JjMjE2NCBsZWdhY3ktdHJ1bmsKKzM4ODk1IDM4ZDA0ZWQwMjhkMWVmNWFmZjUzMTEzYTMyM2FjOGUwNzhlZGZjOTEgbGVnYWN5LXRydW5rCiszODg5NiA1ZTUxMWRkZWY0OGIyZGI1ZDZiOTBkM2JjMDk5ODU4N2UxY2Q1Yzg1IHJlbGVhc2UyNC1tYWludAorMzg4OTcgMTg3M2U4YWY1YThhYzIxNTRkNTJhZjA1ODM3NWY2ZmM3NjRhMTViOCBsZWdhY3ktdHJ1bmsKKzM4ODk4IDNjYWJhODA3MjA0YmJjODgwYmZiNWYxNjVlNGQ2OWViM2Q5ZjE4YzggbGVnYWN5LXRydW5rCiszODg5OSAwYjAxZWU4NmNjZmQ4OGZiZjlmZjU1MjEwZWFhMjBmYmZmZDYyMjNkIGxlZ2FjeS10cnVuaworMzg5MDAgYTI5MWFkOWFhNmExMGMwMTgxYThhODE1YjM5Njc3MDIwZDcxY2Y3YyByZWxlYXNlMjQtbWFpbnQKKzM4OTAxIDlhMDdmNmQ0ODE2YWIxY2RiMThmM2MxNTJjNDI4OTYzN2E5NWQ0M2IgcmVsZWFzZTIzLW1haW50CiszODkwMiAxODRmMTBlMTE2ZmZmOTQzNTUxZTVlZjVhZmIyNzkyNDliM2MwNDU2IGxlZ2FjeS10cnVuaworMzg5MDMgZWY5MzBjYWU2M2E4ZTIxYmU1MmQ5OWIyNzRhYWEyMDA1NmZkZGRkMiBsZWdhY3ktdHJ1bmsKKzM4OTA0IDY2ZTA0MTRjZGZhNmFiMDg4YzI5ZTU3MDY2ZmVjYWFmYjE0NGE4Y2IgcmVsZWFzZTI0LW1haW50CiszODkwNSAxNjk5ZGM1MWE1YjU3NjljNjU5ODVlZGQ3YThlMDA0MWViMmJhNzkzIGxlZ2FjeS10cnVuaworMzg5MDYgYjE0MWQ1N2M0ZmNhOTZjMDE4NTRhNGQ5N2I2YTdlZTc2N2NjMzQ3MiByZWxlYXNlMjQtbWFpbnQKKzM4OTA3IDk4NTQ0NzJiOTIxYmE0N2IxN2E5NjYzOTU4ODRjMWExNDAzN2M4NTggbGVnYWN5LXRydW5rCiszODkwOCBlZjE4NDU2MmU4ZTAzZGU5NjFiMTg3NmFiYThlOWJmNjIwMmEyZTQ2IGxlZ2FjeS10cnVuaworMzg5MDkgYzA5NTg4OGZjNTQzYzgwYzk1MGMwMzBkY2Y5MTBmYjNkMjQ5ZjlkNyByZWxlYXNlMjQtbWFpbnQKKzM4OTEwIGIzMTczNmY2MjViYTdmOWM3NTI4MGQ1MTUzMWI4NjcxMzBkNTQ1ZTYgYXN0LWJyYW5jaAorMzg5MTEgMDJmMTNlMDBlMmVkMTMwMzU4OGVhOGQ3OWU3ZmJmOWQzYzEzM2ZiYSBhc3QtYnJhbmNoCiszODkxMiA4YjA1YTQ3MzJjZjM2MWEzODc1M2UwOWEwNGRkZjliYTcyMDQxOTZmIGxlZ2FjeS10cnVuaworMzg5MTMgMDBjZDM1MGNmN2JmMGM2MmQzZmUyZWQxYzBlY2M2YmJkNmNiZTJmOSBsZWdhY3ktdHJ1bmsKKzM4OTE0IGMwZWFkMjkxOGNmNzQ1NDAyNDFjZmNjMWM5ZGUzNDY1YTk0Y2U4YzEgbGVnYWN5LXRydW5rCiszODkxNSBmNzEzZThhYmYxNGUzY2E2MjNmOTJjOTg4NmQ0ZmU4ZGM1N2NmZjQwIGxlZ2FjeS10cnVuaworMzg5MTYgYTJiMjIyNzc3M2U3ZmU5NGI3Mzg0MzI2YzIzZDk5YTNjMmQxYjUyMSByZWxlYXNlMjQtbWFpbnQKKzM4OTE3IGI0MjNiNDI3ZTE3ZThkNjFiMWVhZjYwZDEzOGY0MTU0NGI1YTIwZTkgbGVnYWN5LXRydW5rCiszODkxOCA3YmNhYmJiNmI0YjdlZjQzZGFkYjhhMzMxNjNkNzZkN2ZkMDkyZmY0IHJlbGVhc2UyNC1tYWludAorMzg5MTkgZTNhYzVmMGFkM2UzYWNiOWVkMmNjOGVkMTYxMzkwOTNmODJmNmE1ZiBsZWdhY3ktdHJ1bmsKKzM4OTIwIDIxMjUxZTIyMWU1NjJmMGRjZWMyYzE5ODU5ZTNiOWMwZDQxZGFiOTEgcmVsZWFzZTI0LW1haW50CiszODkyMSAyNWEwZTFmYWE4YTVlZDhmMDkxZmNmMWEwZTZhMTFiZTRjMjYzOTc0IGxlZ2FjeS10cnVuaworMzg5MjIgZmNkMmMzODQ3ODY5OWYyMzFjYzhlZmI2NDEzMjBmNWJiN2RhNjA4ZiBsZWdhY3ktdHJ1bmsKKzM4OTIzIDFjZGMwMzM0ZDg3N2M3MWFiZmYxMmZkNGQ2N2ZlOTk5ZjE0MGYyYWIgbGVnYWN5LXRydW5rCiszODkyNCAxN2FhMjg5NjJiODVkYWEzOTNiMWZjYmFiNzA3ZTM2MTkwNmM0OTkxIGxlZ2FjeS10cnVuaworMzg5MjUgMWNhN2FlNDhhOTMxNTFiNDVlZmM1ZWY2M2VjZGI0YTdhNzYzNjY4NSByZWxlYXNlMjQtbWFpbnQKKzM4OTI2IDUyZmVkMmQwNjQxYTViZDhlZmE0ZDc4YTUwNmQ3NjI4ZjEwMmI3OGYgcmVsZWFzZTI0LW1haW50CiszODkyNyA4ODgwZDkxY2RiMDkzODNhNGZmZjMyMDE3OTc3NDNhY2NhMjFiMDRlIGxlZ2FjeS10cnVuaworMzg5MjggNzhkMGE1NThiMDkzODM0ZTg2N2QzMDYyZjE1YzJlNGQwOTVlZWY3YyByZWxlYXNlMjQtbWFpbnQKKzM4OTI5IDY1Yzk1YWQ2NzJhZThmZDU3ZGUzNDQwMjdhNjZiZjVmNWY3NjNhMGQgbGVnYWN5LXRydW5rCiszODkzMCBkZTc2YjM0M2Q5YzgyYjJiNmE3MmU4ZTBiYmQ4Y2U2MmI1YzdlYjFlIHJlbGVhc2UyNC1tYWludAorMzg5MzEgNDRlM2YyMWYwNTI1OTBkZGZhYmMxMjkwOWFmNTE4OGE0Y2Q4OWQ4YyBsZWdhY3ktdHJ1bmsKKzM4OTMyIDFmYjc2OGViZDkwZTJiMmM2ZjVkNjViMTVhOTBkNGNhYmU0MGFmZGIgbGVnYWN5LXRydW5rCiszODkzMyA4ZTk2ODJmZDU3ZjhlYTY5MGNhNDcwMGU4YTM1ZGZjMTRlYWIyMjk2IGxlZ2FjeS10cnVuaworMzg5MzQgYjc0YTFhNTEyOTE3OGE2MWYzMjQ0ODU3YmYxYzM3NDA0YmUwMWEzMiByZWxlYXNlMjQtbWFpbnQKKzM4OTM1IGUzOTRmN2U4YTBjMTVmODcwNGIyN2NkNzEwODQ3Njc4NDU1NjQ3NTAgcmVsZWFzZTI0LW1haW50CiszODkzNiA0YTAyYTQzMTc2NTU1YmFjYTMwNDVkNTU1MmE2ZmM3MGFlYzIyOGQ0IGxlZ2FjeS10cnVuaworMzg5MzcgMjc1ODQzNjMwNTIyODZlMThjODc2MDMyYmZkMGYyZWViMTM5MzIyOSBsZWdhY3ktdHJ1bmsKKzM4OTM4IDkwZmNhMDgxNDVkMTE0OTdlNjVhMGY2NjE4NGJkNDI2MmY2MmJkZjMgYXN0LWJyYW5jaAorMzg5MzkgNjJlYWM4ZDk1M2NmMWEwZjA2MTk1NTkzODcwN2YxOGQ1NDhjNTVjNyBhc3QtYnJhbmNoCiszODk0MCBiYWM4OThkMzliNTM4ZjEyODJmNTViY2ExNzQ5ZDg4YjBiZjk0MzgxIGxlZ2FjeS10cnVuaworMzg5NDEgYjM4YzJhYTY2ZWU3YjNlNGE3NDlmZGUyMDQ1MWNmOTQ4ZTBiNDQwOSBsZWdhY3ktdHJ1bmsKKzM4OTQyIDc1ZmQ5YTUxNTRjNDYxZTFkODdkZWJlYjZkNzYxNjk0ZTUwM2Q5ZTkgbGVnYWN5LXRydW5rCiszODk0MyA0MGY3ZTFkYTFiZGZlNTUyZTU2Zjg3NDM1MDI1NjM2ZDlkMmQxMTMxIHJlbGVhc2UyNC1tYWludAorMzg5NDQgYmE0NzI3ZGEwN2U1NGViYTRmYThlMmYyNDhjZGE2MDA0NTA3ZWU3MiByZWxlYXNlMjQtbWFpbnQKKzM4OTQ1IGNiMmJlNDQyOWE0Y2ZkM2FjOGMxOTUyNGU2MTlkZDZkNGEzN2JjNmIgbGVnYWN5LXRydW5rCiszODk0NiBlYTVjMjI4MGY5MTU3NDIzN2YzZDQxYWExODhmZTAyYjViOTcwMjYzIGxlZ2FjeS10cnVuaworMzg5NDcgMGRmMDVlYWExZTA5NmVlY2JkMDIxMjdmMWU2NWI1OTM0NzM4NDEzZCBsZWdhY3ktdHJ1bmsKKzM4OTQ4IGFjNTZkMTdiYzNkMTcwY2IxYmY2ZWU5YTViMGYxZTg3MTk5ODRjNGUgcmVsZWFzZTI0LW1haW50CiszODk0OSBmY2YwMTBjMzcwY2JjZWI3N2MzNWZhYTQ4Yjc2MWY0MjUxMjhiMjA4IGxlZ2FjeS10cnVuaworMzg5NTAgNWExYTMxZDllMzdlM2MxMzlkZTk3YjliYWU0YWU4MThlNDcxNTZkMyBsZWdhY3ktdHJ1bmsKKzM4OTUxIDIxNWI3ODg1ZTEwODU0YzUxOTk3NzY2YzFlM2FjYWZiN2E3OTI0ZGQgbGVnYWN5LXRydW5rCiszODk1MiAzMjliMjhhODU5NDc0YTM1MDdmYTNmMjUxYmNhMjU2ZDk5ODBkODg5IGxlZ2FjeS10cnVuaworMzg5NTMgZTAzNzE0ODA0ODQ1YjkyOWU4Y2NlNWYwMDBhNjFkNGU1MjgyMTBiZSBsZWdhY3ktdHJ1bmsKKzM4OTU0IDhiZmViY2YwNjM2MzcwMTQ1MTFlMWU0YzBmNzljNzgwZjcwNzEwYTAgbGVnYWN5LXRydW5rCiszODk1NSBhNDliODhlNTAzMDU5OGY5NDMyMzQ5NWY0Y2VkZjFhNmE5ZmQ3MzA5IGxlZ2FjeS10cnVuaworMzg5NTYgYjczZjEzMGM3Yjg0MDU4ZTY3YTM1MjQ0ZTZiNDRmODBkYmFmNWQxYiBsZWdhY3ktdHJ1bmsKKzM4OTU3IGQ0ZGFhYmFiYWE0NWE1ZmRmNzQ1ZGYwZmRmZmM4MmI4NzE3MzU5OTkgbGVnYWN5LXRydW5rCiszODk1OCAyOWQzZGVmM2E1NmFiNWEyZGM0MGE4ODM1ZmU3MDNiNTUzMmVhNzhmIGxlZ2FjeS10cnVuaworMzg5NTkgZjNiMDIyMjJhODBhMjA0MzIyZWQ3NzgxZGE4ZjIxZjEyZjkyMDE1NSBsZWdhY3ktdHJ1bmsKKzM4OTYwIGM1NTg5OTg2M2I5Yzc5ZTljMDYyMjc5OTA0MWI5NzQxZjMyMTgyMzEgbGVnYWN5LXRydW5rCiszODk2MSAxOWE1MDkxZjI2NTgwNjQwNjUwNzhlMDU4Y2ZiMmRlNTRlZjFjZTM5IHJlbGVhc2UyNC1tYWludAorMzg5NjIgNTU1NDUxMWIzNzI1NDkxMWE2ODY0MTYyMWExNTNmMTQzODU4ZDFmZiBsZWdhY3ktdHJ1bmsKKzM4OTYzIDA4NzczNWY4NjcwMWMxOWQ0MzAxYWMwOTA3YzkyMDMwNjM3Njg1MzMgcmVsZWFzZTI0LW1haW50CiszODk2NCBkNjA0N2U1NWY3YWQzZDZjZTFmY2RjY2M5MmFhOTIxMTJmNzY1ZDg0IGxlZ2FjeS10cnVuaworMzg5NjUgM2I0MWJkODc4OTE4ZDAzMDk4ZjM0MWFhZTJkNzFmOTU4OTVlZmNhZiByZWxlYXNlMjQtbWFpbnQKKzM4OTY2IDE0OTBmODExZjkzYTk0YTU2MTEwOWU2NmIwZTA4MjZhZTNkNmZjYjUgbGVnYWN5LXRydW5rCiszODk2NyA3M2YyNGY1YzRlM2Y5MzI1OGYwYTNkZmYyZjAwMGFhOGQxZDA5NWNkIGxlZ2FjeS10cnVuaworMzg5NjggYzA1ZTQ1ZTg3MjRlMmZlNGEyYWQ0MDU2NzZlNTUzODMzY2M1NTU2MiByZWxlYXNlMjQtbWFpbnQKKzM4OTY5IDU1NTQ1ZTAyMzE5OWZjMDZhNTAxNmNmM2UyOTRiOTA3NjQ0NDUwZmIgbGVnYWN5LXRydW5rCiszODk3MCA1NjA4ODc0OTcyMWE4YWQ3YjdhODdlN2M5Y2UyOTczNWFhZmQ2M2M5IHJlbGVhc2UyNC1tYWludAorMzg5NzEgZDQzMGIyOTY0MWJhNDBiZTRmM2Y3ZDE3NmM3MTMxNWMyZjg4ZWEyMyBsZWdhY3ktdHJ1bmsKKzM4OTcyIDY2MjQ4OGQ0MTg3ZGI2ODhhMjUyNTBmZWE4YjczZTY4MDdmMWUyNzMgcmVsZWFzZTI0LW1haW50CiszODk3MyA4MjM3M2QyNTI1ZWUwYmRiYTQ5OTRkM2M1NTBmYjgwN2U4OWUzNDIzIGxlZ2FjeS10cnVuaworMzg5NzQgNWY3NjNmOWU1MGY5MzcwZGU4M2I4YjdiMmQ2ZDkyMTIwYjkyYzY4ZSBhc3QtYnJhbmNoCiszODk3NSBmMjMwMDdmOTIxN2IxMzVlMTBlYmM4ZTQwNzRkYjkxZDFkMTFiZjI2IGFzdC1icmFuY2gKKzM4OTc2IDhhZThlNjRjYTliZDRkODc1NGM5ZWZiOTkxNzQzZjc1OGI1MTgwOTMgbGVnYWN5LXRydW5rCiszODk3NyBlNzk3OTNhOGVlZWFiNWM5ODUyZjVjYzZjYzU4YWUwYjRkMmU0MTZiIGxlZ2FjeS10cnVuaworMzg5NzggNGZkYTQwNjNjYzhjYzJjN2NlNWZlOWQyNzNjYTAzMWU3MjFmNzI2ZiByZWxlYXNlMjQtbWFpbnQKKzM4OTc5IGVjNGMxNmZlNzM4NGNlZDU2NWE5YmNiY2VmOGJjZmFiNjYyZjcyN2IgbGVnYWN5LXRydW5rCiszODk4MCA1ZTQ1ZGNiZjdjZmZkMDRjM2UyZmY0MzFhYTQyNzUxY2I4Yjc0NzJiIGxlZ2FjeS10cnVuaworMzg5ODEgNzQ4YzhlMmQ0MGVlYzA1Y2Q1ZmUxOWFjMjg5ODc3MWY2NzI2ZWJjOCBsZWdhY3ktdHJ1bmsKKzM4OTgyIGNhNWVmN2VlM2Y0MTdhYzMxMWNjZjEwOTQ5YmY0NzFmYTg0ZmFhMzMgbGVnYWN5LXRydW5rCiszODk4MyBlZTk5ZGIwNmMwZWJjZmQ4NmFjNWRiOTNjNjYyYjRlM2IxMDE2M2QxIHJlbGVhc2UyNC1tYWludAorMzg5ODQgYzU1NTEwZGFlYmQyNTJkNDE3YjRhYTZiNjAwYTdmMDJmZDAyYzA5NCBsZWdhY3ktdHJ1bmsKKzM4OTg1IDgwNzY0MjRkNDU1ZDBlYjM3YjcxZTI0M2I0YTdhZmRjOWRjMWY4MGMgbGVnYWN5LXRydW5rCiszODk4NiAwNzhkYTQ3NGIzMDIxMzNhMzFjOWY4MmQ3Y2U5ZjNhOTA2ZmFkMmQ4IGxlZ2FjeS10cnVuaworMzg5ODcgMmViNTY5YjZjZTIzNGE4NmQ2OWJmZGRhNDBlMWQ5MTI0NmJiOGYzMSBsZWdhY3ktdHJ1bmsKKzM4OTg4IDkyNGUwMjgyYjU3ZTk4MzVlYzZhMTFmODdmZTQ4MGYxY2JiMWViMTcgbGVnYWN5LXRydW5rCiszODk4OSA5MmNkOTUxY2M0YjE4ZDhiMmEzYzg5Mzk0ZGE0YjhmM2ViMmUwN2UzIHJlbGVhc2UyNC1tYWludAorMzg5OTAgODUxNDU4ZmZmZDM0MjEwZjYyMGViMzgwZTExYzZhYTMzMzQ5NmEzYyBsZWdhY3ktdHJ1bmsKKzM4OTkxIDE3M2U5MGUwZDJlMzFkN2Q4YjQwNjY2MDA0NmM0NjYzNTc3ZWFmZDUgbGVnYWN5LXRydW5rCiszODk5MiBhYTFjNTM2NjYwN2Q2ZjVhOTRlOWQzMjdhZmRhYmQ0YTFjYmYyNWMwIGxlZ2FjeS10cnVuaworMzg5OTMgYTJiNTA0NWRmNGY4NTY4MGJmMGZkNmQwMDM4MzgwYmNlOGY4ZTU5NSByZWxlYXNlMjQtbWFpbnQKKzM4OTk0IDc0YTg0NThiMjI3NjAyZjliNGQ1NWY4ZDUwYWFjYTlhZmVkOWU5NTEgcmVsZWFzZTI0LW1haW50CiszODk5NSBhYmU1YTVlMzljY2M3ZGFkMjNmZGVhODljNzY3YmY5YmU0Nzk5NWU5IGxlZ2FjeS10cnVuaworMzg5OTYgOTFiOGNkYmZkN2I0NjU5NDAxZjlhZjE3NDhhZjQxNzZiZjZmNWJhOCByZWxlYXNlMjQtbWFpbnQKKzM4OTk3IDEzMzJmMmU3MDViMjE2ZWQxZjQ1ZWI5YjIzN2M2YTJiMDlhNzhjZTMgbGVnYWN5LXRydW5rCiszODk5OCA4MzVhYjA2OTg0YTljOGQ4ZjY1YTFjMTI3NDUzYWRlMWYzYzg0MTQ3IGxlZ2FjeS10cnVuaworMzg5OTkgNWZiMjE2MzIzMWQzMzVkNTljMTVhZjY0NWI3MWMwYWQ0ZTNiNmQwMSBsZWdhY3ktdHJ1bmsKKzM5MDAwIGRiMTY3NmZkYjViOTFjMDY0MDBjMzcyNGE4MmE2YzI0MzcwYmQ0NTMgbGVnYWN5LXRydW5rCiszOTAwMSBmODljYmU2OWRiNjNmYTI1YmFjOGFlYTY4NmRiMmFmNjczMzA3YzY5IHJlbGVhc2UyNC1tYWludAorMzkwMDIgNTFmZTI0MTM4NDg2ZTk1NGNjMjZiYjk0NTYzZTBiMzVlOWM4YzgzNyBsZWdhY3ktdHJ1bmsKKzM5MDAzIGM0MjVjZGM4YWU4YTdjYTg4NmMxYTg0ZDI0YTU1NTg4ZWE4YTI0Y2QgcmVsZWFzZTI0LW1haW50CiszOTAwNCA0ZjVkMjZmNWUzZTY0NTJmZDIxNTMzM2Y0NDlhZTk1NzNhOTAzZGFkIGxlZ2FjeS10cnVuaworMzkwMDUgNDY2NmI0NTc0YzljYjU4M2ZmYTY1MDNjMjM5M2E0OGE4MzVmZGRiNSBsZWdhY3ktdHJ1bmsKKzM5MDA2IDY5NjQ1ODI0MGE2NWVjNGMzN2Q4MDU2ZWM4MjgxOTNiODlhM2I5NjQgcmVsZWFzZTI0LW1haW50CiszOTAwNyAwYTlhNDEwYmY3NGNiYjAzOGI1NDZkNzllZGY4MmI4YzhjMzA5YTU3IGxlZ2FjeS10cnVuaworMzkwMDggMmI1MTg2YjU5NWIxYWRkZGRhN2YwNTIyZTkyYjA0NWFlODQxNTcwMiBsZWdhY3ktdHJ1bmsKKzM5MDA5IDI3YWE1ZWVjNTQwMDRkN2MzMjNlNjU3NjJkOTMzODU0YjlmOGY3MDUgbGVnYWN5LXRydW5rCiszOTAxMCBkMWJhYzIwYzBiOWY0ZTEyYmZjMTg4MGY0MjhlYjU1MDFlZjczMGFiIGxlZ2FjeS10cnVuaworMzkwMTEgYWJlOTY4NjMyNWMzOGJhMDgzNmIzMzc1ZTIyY2UwYzVhZTcxY2NiNSByZWxlYXNlMjQtbWFpbnQKKzM5MDEyIDIwMTVkMTZkMjY0NzA0NmI1MmZiZmYwNWU3NmM0ZjYyOGJhOTFmOTggbGVnYWN5LXRydW5rCiszOTAxMyBjNmI3ZmFkZjBhZGFlMjdmZWM1NTZhMGE0MzFmMjExYTZiYTQ1MmJhIGxlZ2FjeS10cnVuaworMzkwMTQgMTdjY2FjNjk1NDEzNDAwMGFjOTkzOWY0OGZkYjk0ZDdmMWVlNTNjMCBsZWdhY3ktdHJ1bmsKKzM5MDE1IDRhNWYxODFhYzMyNDA4YWQxZmVhZjZiYjk2YjM1ODY1NGM2ZTU4OTUgcmVsZWFzZTI0LW1haW50CiszOTAxNiBhNTM1ODcyOTVmMjA1OTY1OTYyMDNlZDFmOWJlZjgxMGViZWUwMTA2IGxlZ2FjeS10cnVuaworMzkwMTcgMzIzOGFlNmQyYjMwNDIzMzM5ZjM3MTM5NDgwYzZkMzFhM2ZiNmVkYyByZWxlYXNlMjQtbWFpbnQKKzM5MDE4IDQzODRlNTg3OTEyNjE0MTk5YzEzOTNkMmE3NDRkNzU5NzU1Y2M1OTIgbGVnYWN5LXRydW5rCiszOTAxOSA2OGJjZTY4YzhmOTMyNzhmZjViZGVkYzJjNWEwZmI5MDUxOGM2NDU2IHJlbGVhc2UyNC1tYWludAorMzkwMjAgYjJiZDA1YzAxYTM1MWNmODNiMmIxMWIxNzdmNDQwMTU1NTFhYzYzOCBsZWdhY3ktdHJ1bmsKKzM5MDIxIDk4MTc5YzgyODFjZGI2MTMyNjBhYzRkMmIzN2QxYjgyYzQ5ODY5ZDMgcmVsZWFzZTI0LW1haW50CiszOTAyMiA4MzQxY2VmZGVjYWNlOGMzMmFhZmU5OTJiMjE4ZDBmM2E0MTZlZDJmIGxlZ2FjeS10cnVuaworMzkwMjMgZjBhZTExOTRkYjY5ZWE1ZTVlMTdhM2Q4MWNkNjBhNWZjOGUyNzVmMSByZWxlYXNlMjQtbWFpbnQKKzM5MDI0IDg2MGQ3ZjkzZTZiNGM5YWVhNDViM2QyMGQwMWU5MDIxNGU2MDIwZWEgbGVnYWN5LXRydW5rCiszOTAyNSA1NmFjNDNkOWQ2MjU4YjFhNjA2YTU5MTBmOWY3YzY3ZTMzN2RlODQxIGxlZ2FjeS10cnVuaworMzkwMjYgMTcxNGMyNDk5MjhlZjhhMGQ1YTY2OTg1MGUzNzliOWZkMjA0YjBhNCBsZWdhY3ktdHJ1bmsKKzM5MDI3IDJkMDY5M2I5ZjBiZDhjNzk0ZDQ5ZmEzMDVkMGI0OTcyZWRjODc5OTIgbGVnYWN5LXRydW5rCiszOTAyOCBmNTU4OWZjM2Q5NzcxNDgzYjNkYWY4MjY5ZjdmMDI4ZDA1M2QwNDZlIGxlZ2FjeS10cnVuaworMzkwMjkgYWNmNjhmNjdiOTc1Yzc1MWFjYmJjNjBhYmQ1ZDljYWJiNTI0MzNhZCByZWxlYXNlMjQtbWFpbnQKKzM5MDMwIDIzNGIyMmEyYWNmM2I3OTYyZWFhMDQ3NGI3YzJlN2U1NzAwNTdjYjEgbGVnYWN5LXRydW5rCiszOTAzMSAyZTllNjQyYTU4Y2VkMWY4OWI0ZTRkODc4NGE4YTkyODAxN2I4OThiIGxlZ2FjeS10cnVuaworMzkwMzIgNGMyMzc2MjAxMTE1ZDVhYWI5MjQyMzBjOThkOGZkM2I3NDMzODk4YSBsZWdhY3ktdHJ1bmsKKzM5MDMzIDUyMmM5YTQ5MDQ0MTNjOTg5MzVlMWQyNzczMjNlMTViYjNmYjVmMDAgcmVsZWFzZTI0LW1haW50CiszOTAzNCAwOWE5MTBjYjZjOGZmMDNiODE1N2IyODk3OWRkMDdjNmRkOTIyMmQwIHJlbGVhc2UyNC1tYWludAorMzkwMzUgOTczYWE0ZWUxNjE1MmFkYTM3NjYyYWM2ZDBmNmJlNTI1ZWMzOTkwNyBsZWdhY3ktdHJ1bmsKKzM5MDM2IGI2ZDJhOWQxYTkzM2E3YzBmOGIzNTNmMzQyMTI3NDBjMzJjMzM5NDUgbGVnYWN5LXRydW5rCiszOTAzNyBmM2QzMTUxZjg0MTc5ZjFmZmI2ZWRmMWY1MjFlMDUxZjUwZjkwNDg1IHJlbGVhc2UyNC1tYWludAorMzkwMzggYWI4M2FiMjdjODM3YjY0MWMwYTM5YzRiMGUyMWI4ZTVjMzNlZGY4YSBsZWdhY3ktdHJ1bmsKKzM5MDM5IDU4NjMyMDkyZTAyMzI3MGM5YWYzNDFiZTQzYmI3NGMxMWJkYzY2ZTMgbGVnYWN5LXRydW5rCiszOTA0MCBhZGYxODllYjRmNThhOGU1OTczN2ZmZjA2ZTgyYzk0MTFmYzA2NTUwIGxlZ2FjeS10cnVuaworMzkwNDEgNTg1MDU5ZGUyYjQwNGFkZmM5YTliOWQyNjQ3ZjY2YmJhOGIyNzg0ZCBsZWdhY3ktdHJ1bmsKKzM5MDQyIGJmYzkxZDRhZjY0NTMyYTBlMWRhODU3MjY2ZjBmNTBlNjUxM2E1MGEgbGVnYWN5LXRydW5rCiszOTA0MyAyZmIwYzc2ZDAyNTFhMWE3MDI2NTg4MmZkODExMTU3NmY1ODNkOTk2IGxlZ2FjeS10cnVuaworMzkwNDQgN2VhMmJlMmMwZTFkZTBmN2FjOGJjZTg2MDBjYmQyYjE0NDcxZWNiNiBsZWdhY3ktdHJ1bmsKKzM5MDQ1IDJkODMzMTIzYjExOTA2MzhiODhjY2RmOTIwMmJkODk3Nzg1ZWQyOGYgbGVnYWN5LXRydW5rCiszOTA0NiAwNDg2ODk1OWYxZmU2ODMyY2M5OTQ5YTNjYmI1ZTNhMzM1N2E3YmZjIGxlZ2FjeS10cnVuaworMzkwNDcgZGE3NzIwMDdkMzRkODA1OWQ5NjIzYjI2MjRlOGJhNjAzYTdkOGY2MiByZWxlYXNlMjQtbWFpbnQKKzM5MDQ4IDBlYzcxMTUyYzdlMmJlMTAxZTE1OTJkYTdjNmY5MzFmOGE0MWIwMGUgbGVnYWN5LXRydW5rCiszOTA0OSAyZWU2M2ZmNDU5NzBmZGUzMzcwMjI4MDljYjkwNDhmZTUwMTlmYTU3IGxlZ2FjeS10cnVuaworMzkwNTAgNTM0ZjhlYTU3Mzc3ZWE4OTMxZDViMjk3YjZjN2NiNWU3NDlkMzA1OCBsZWdhY3ktdHJ1bmsKKzM5MDUxIGRiMmNmNzU5OTQ4YWYyNTEyYjVjMjAzYjBjNmZlNjRhNWQ5NGRiOWYgbGVnYWN5LXRydW5rCiszOTA1MiBjZGVjOTc4YjkxNmNlMjViNzE1MzBhZmYyMDVjOGQ4M2Y4YzY1OGIzIGxlZ2FjeS10cnVuaworMzkwNTMgNzA2ODEyNjdhNzRhOWE2Mzc2MTUzMTU1ZDc4N2I1OWNjZTVjMDg3OCBsZWdhY3ktdHJ1bmsKKzM5MDU0IDNlMGRkNjJlZTMxYmY3Y2Q4NjQ0NWZjZjM5OThmMzZjNjY4ZmUwYzYgbGVnYWN5LXRydW5rCiszOTA1NSAwMDg3YWYwOTUzZjRkYzVkYTllMjc1ZGViMjE1ZTM5YmRkMTJjNDI2IHJlbGVhc2UyNC1tYWludAorMzkwNTYgNWQzM2Q4M2U4ZGVjOGE5NGEwZDljYTM5ZTZmM2Q3MmU2OGExYjI0NSBsZWdhY3ktdHJ1bmsKKzM5MDU3IDZlOTM0NDJlMjZkZDAzZjQ5YjY1NWJjY2RjNjk2NTI3MWY0OGJhYjYgbGVnYWN5LXRydW5rCiszOTA1OCAwMTJhMGFkYTBkMDVmZTgyZjRhMzFhODI3MTU2ODVlYTY5OGNhOWRmIHJlbGVhc2UyNC1tYWludAorMzkwNTkgMmNiNjI4NjAwMDVmNjAwYTQwOWFkYmFmMDAwYzcxNTc0YzNmNjFjYyBsZWdhY3ktdHJ1bmsKKzM5MDYwIDg2ZTlmNjE2OTdkOGFmZGY0MTU3NTIxNGRlNGU3MmFjNWFhOTIyYTQgcmVsZWFzZTI0LW1haW50CiszOTA2MSA3N2RlMjFjY2QyMTBlNGEyZDI2OWIzZjJmNGE2OWUyNmRkYjg0ZDY2IGxlZ2FjeS10cnVuaworMzkwNjIgZGM2OGRlNzAzNzZiNDA3ZTlhZTcxMDQ3MTdiNmFlZGFiYjdjYWVmMiByZWxlYXNlMjQtbWFpbnQKKzM5MDYzIDM5YmI4YTQwYTJjODVlNWQ4YWUwYjI0ZGEwYzA4NzIyNTY5ODQwYjMgbGVnYWN5LXRydW5rCiszOTA2NCA4MjlmNjZkNTYxNDBjMjlmM2YwNGRkMmVjOWE4ODY0MzRkMzc0ZjA0IHJlbGVhc2UyNC1tYWludAorMzkwNjUgM2RkOGQ0MWVjMzUwMzAyMDgwNDAyYTZkY2E2OTg3ZjRlYWIzOTNkZCBsZWdhY3ktdHJ1bmsKKzM5MDY2IDMzYTRkN2U1YzgyZjJiY2JlNGQ1ZDQ1YmVjYzYyMGY1M2YzNjkyNzMgcmVsZWFzZTI0LW1haW50CiszOTA2NyBiYmI4NGI1ODU2ZmNlNGRlY2I1ZjJmZWNhZTY5MDU1MTM5ZWZjYjU4IGxlZ2FjeS10cnVuaworMzkwNjggZmIyZjVhYTRkNWFiMDFmNWY1NmRjZGI0OGY3ODM5NTQyNjg2MzRmNyByZWxlYXNlMjQtbWFpbnQKKzM5MDY5IDhkYmI3MzFiYWE2MGYwNjU0YWJjNGQ4OGE2MzFiNmUwYzRiODBhYWEgbGVnYWN5LXRydW5rCiszOTA3MCBkNjBhNTBhOTBmZDE1MGVlODIzNTNjNmZiYWJkN2YxZGFhN2UwMTBjIHJlbGVhc2UyNC1tYWludAorMzkwNzEgMzI1M2RiZDcyYjYwYWNkYWY4NjJjNTdhNzYwMjNiNmFjZDgxOTc4ZSBsZWdhY3ktdHJ1bmsKKzM5MDcyIGU1ZjYyZTA0OWM2ZmQ5MjEwYjQ4MGM0NDg4YjhhNTk0MDY3MDRiYTQgbGVnYWN5LXRydW5rCiszOTA3MyA5MTBiNWRiNDYyM2UzMWVhMDUwMWViZmUxYzM4MjEyNmQyMjc0MWY1IGxlZ2FjeS10cnVuaworMzkwNzQgOTkzMDk4MDJkNDkwNDhlZmNmZTY4OGRmNGQ4N2JmZGRiOGZlMmU0MSByZWxlYXNlMjQtbWFpbnQKKzM5MDc1IDI5ODVmYzYzMDlhODRhOWU2Y2IyZDlhMTNiNDkwM2YyYmYwOTkxNzcgbGVnYWN5LXRydW5rCiszOTA3NiBmODQwZjQ0NzAzMjUxOWQxMTU0NWNjYWZkNzhiZDRkYmY5NGM1MmMxIGxlZ2FjeS10cnVuaworMzkwNzcgYjg0MTM4ZDk4Y2ZhMDNmZDkwMTUwMzYxZThlM2FmMmM0Y2ZiNzg2OCBsZWdhY3ktdHJ1bmsKKzM5MDc4IDcyOGEwZGU4ODM5NWMyMzBmNjZhNDJhOTlmNTA0NGIzYjY5Mjk2MGUgcmVsZWFzZTI0LW1haW50CiszOTA3OSAwNmM3NjI3MjI4OTJiOGNjZDJiZjUwNTUyZDhiZTBkMDZiZWMyYmExIGxlZ2FjeS10cnVuaworMzkwODAgNGQxZGE2MzYxMmViNWM5ZGU4NzQ0ZjViN2Y4YzQyNmRiODA0Yzk0OSByZWxlYXNlMjQtbWFpbnQKKzM5MDgxIGEzMWE3NzBiYjc3ODU4NzRlNDQ3MTE4MzdhMGUzYTBiNWMwYzJhNTMgbGVnYWN5LXRydW5rCiszOTA4MiBmNTQ3M2E3NjJiNTAxNmI2MmFhNTNjODZmYjI0Y2I4MTE2OTczMDI0IHJlbGVhc2UyNC1tYWludAorMzkwODMgM2M2YWVkM2YzYTMxMDJiYmIxYzMyYmRmZTI3MzJjYWJjZDM5MzUyMSBsZWdhY3ktdHJ1bmsKKzM5MDg0IDgxY2EzNWFkOTE5OWU4ODE0ODJkMWFmOTk5ZWZiZjFmODM1ODQxZTMgbGVnYWN5LXRydW5rCiszOTA4NSBkYWViZmRlMGUxY2YxYzQzZThhY2I2MWQxYjI2ZmRiNDdkMmMzYWM3IHJlbGVhc2UyNC1tYWludAorMzkwODYgYzgyYjc0NmM0MjhmOGIzYmI0N2E4NWZjNGYwMjUyM2M3YjM1NTg3OCBsZWdhY3ktdHJ1bmsKKzM5MDg3IGY3YzA4OGE4YjVkM2M4MTlkMzkyOTc5MjczNzlmZDk4NDJiZjQ4MDEgcmVsZWFzZTI0LW1haW50CiszOTA4OCBiMzNhNzI2NDQ1NGYwNjAxOWViNzE5N2Q5YWJmZjMwM2Y3ZjUxMmMyIGxlZ2FjeS10cnVuaworMzkwODkgYzU3NDI4MmQ1MGJmZWU0MGMzYjRlZTE3MTc1NDQ0OWM5MDhkYmZmYyByZWxlYXNlMjQtbWFpbnQKKzM5MDkwIDk4Zjk2ZjA3ZDU0OTg4NTM4MTNhMDM5YTY0YWMwZDFhNmExOGFhZTggbGVnYWN5LXRydW5rCiszOTA5MSA5YTgxMmViOGEwYWIyODZlNmM2YjMzMGZkYTI0YzBiYjlmOTJkOWIwIHJlbGVhc2UyNC1tYWludAorMzkwOTIgNzM5MDMyYmU5NmQ1ZDkwNWZkMzhiMDE1ZjU0NzVmYmViYjJmODU0OCBsZWdhY3ktdHJ1bmsKKzM5MDkzIDZhZDNmODYwMzQ2ZTk5M2EyZTI3M2EzZGMyODk3NzEyY2E2OGUwYjkgcmVsZWFzZTI0LW1haW50CiszOTA5NCAwMjFhNGFiZjdmMjc0YjMyNDUzNjRjOWI3NDE4NDQ4MzAzZDM1Mzg3IGxlZ2FjeS10cnVuaworMzkwOTUgMWE3MGNiZjc1OWNhZTUyMDdhMmQyYTc5YzQxOTVlNGRiYWJmN2M1NCBsZWdhY3ktdHJ1bmsKKzM5MDk2IGQ1NzQyOGU4NThmYzBkMDRmY2YwM2ExNWM3OTE4YmIxMTlkMjIyN2EgcmVsZWFzZTI0LW1haW50CiszOTA5NyBlYWZhMTNiZWVmMjY0NmRjM2E1YTQ2MWEyZDkxZGNhOGE2MTAzYzBjIGxlZ2FjeS10cnVuaworMzkwOTggZDZhMThhMzNiZDYyNTZmNzIyM2ZhMzlkMzQ3MjhkMjdiNTQ3Mjg2MiBsZWdhY3ktdHJ1bmsKKzM5MDk5IDc5OTA0NTVlNmFlMGEwZDZkM2FhMTYwOTNiMzliOTVhYWIzYjcwZjMgcmVsZWFzZTI0LW1haW50CiszOTEwMCA5ZTQ5MjczYTEzMzQzOTZhMDdmMjNiOWY3ODcxZjUyZWIwZTA4ZjgwIGxlZ2FjeS10cnVuaworMzkxMDEgMTIyODdlZmE4Nzc3ZjcyMmE3YTUyMjFhZWFkNDc4YzJhYjhkMGVkMiByZWxlYXNlMjQtbWFpbnQKKzM5MTAyIDBmYzI5MDAyNjkzOWE2YzBkODMwN2Q5MTVkNGZjM2U1OTMxYjUzNDMgbGVnYWN5LXRydW5rCiszOTEwMyA4ZmM1ZDZiYzM1ZmZkZTIyM2RkOTg1YTE1Mzg5ODcwNjY5NDA4OWU4IGxlZ2FjeS10cnVuaworMzkxMDQgMjdhNzE4MjIxZTcyZTc4NGY0MWExNjE4NzZmZWNmMjk2MjE5ZWViMiBsZWdhY3ktdHJ1bmsKKzM5MTA1IGNmN2E4NDljZTYxZmE2MDVmOTQxZGFkYzQxMTAxNzFjNGE5YmQ0NmUgbGVnYWN5LXRydW5rCiszOTEwNiA2OTUyODNjYmU0M2ZjOTBjMzc4NTU0N2UyY2U5OWM5ZWM0MzkzNjZjIGxlZ2FjeS10cnVuaworMzkxMDcgMTZkZmUxNTJiOWU2ZGE1ZjQyM2RjMjBmYzU0MzcwN2U1ZGY3MDFkZiBsZWdhY3ktdHJ1bmsKKzM5MTA4IDMwYjEzNDAxYzkxMjU2NDA4ODM0NTg5NzFlOGQ0MzQyNDU1NjdmMzEgcmVsZWFzZTI0LW1haW50CiszOTEwOSA5ZTRiZjI5ZTZjMmZjZDNhOGFlNDdmNjJiNDlhZDQwYjc0ZTdkNTc3IGxlZ2FjeS10cnVuaworMzkxMTAgZDdjNWJkNTk2OThkMDY4OGYwOTAxODdhM2NjM2QzY2MzNDg2ODgxMyBsZWdhY3ktdHJ1bmsKKzM5MTExIGU2YjA3NWJkNzg1NWFmNTRhNTY1ZGMzMWE1OWM0MDdiODAzMTBmYmEgbGVnYWN5LXRydW5rCiszOTExMiBiMDVjYzEyYTIxNzlmMjk0MTczNjU0NDFiMGQ0ZGMxYTFmNmQ5M2YyIHJlbGVhc2UyNC1tYWludAorMzkxMTMgYTIwNDNhZmZkNTQzMzAyMTE0NWI5NzliY2NmNDg1Mzk5NTYzYjg0OSBsZWdhY3ktdHJ1bmsKKzM5MTE0IDVkOTc3ZDdjYzMzNTY5NzE0ZGYwNzM1MmFjMDVkNWJiMDAyNzAzZWYgcmVsZWFzZTI0LW1haW50CiszOTExNSAxODE4NGQ4MmRhZWFhMTlhYjQ4ODc1ODgxMDRjOGZmOTQ5MzBlZWU3IGxlZ2FjeS10cnVuaworMzkxMTYgOWQxZTQ2MTExZDlhNzA4MjVkYjRjMGI5NmNkYmI1N2U4N2ZhZjE5NiByZWxlYXNlMjQtbWFpbnQKKzM5MTE3IGY4ZjE1ZTZhZWYzYTRhYTkzODMwMWRkZjUzM2U1ZDgxN2YzYmY0MTkgbGVnYWN5LXRydW5rCiszOTExOCA4ZjdlNDdhMGFhY2FiNmM4MDUyOWEwZDg0N2M5YTRkMDg4MGVhMGM0IHJlbGVhc2UyNC1tYWludAorMzkxMTkgNjgyNjY4MDNjMDEzNGQ0Mzk4YjM5NTQwNGNmMDMyOGFhYTI2NDAzOSBsZWdhY3ktdHJ1bmsKKzM5MTIwIGQwN2U5YzM3YmVhMDllMWI4MGIwYzQ3NjNmNGFiNDQwMDMyMTE4NTcgcmVsZWFzZTI0LW1haW50CiszOTEyMSAyMTBjYTM4M2FiZTc2MjBkNzhmNDIyMzVkN2ZhNTkwN2NhYjVmZTFlIGxlZ2FjeS10cnVuaworMzkxMjIgNzgwNGJiYjI2NDkyOGVkYzA0ZjBkMjVjY2JhYjcxM2M2ODdiNjJhMSByZWxlYXNlMjQtbWFpbnQKKzM5MTIzIDQ3NDE4NTAyOTQyYTg1YWI2YTMxOTVlYmE4MGU2MTE0NjlhZWViMjIgbGVnYWN5LXRydW5rCiszOTEyNCAyZjljZmVjYTI3OTk2Y2RmZmEyYzcxZTI0NTEyMzlkNjNmYjE4MjgyIHJlbGVhc2UyNC1tYWludAorMzkxMjUgY2Q4NzljYTg0NjI0NDg2ZGMxZGE0ODU3MDNlZjQ2ZjM1YmM2ZmU3YiBsZWdhY3ktdHJ1bmsKKzM5MTI2IDcyNmM5YmM0OWMwNDhhYWYyMWZmOTAwOWI2YWI5OWJkM2VlMGQzYmIgbGVnYWN5LXRydW5rCiszOTEyNyA1ZGYxYzY5MmJiNDE2NjY0NGViYzBlZDkxNzc2ZmI3YmZlYmM5MjIxIGxlZ2FjeS10cnVuaworMzkxMjggZTAyMDg3YWM0NzkyNjgwMTk2ZjE5MjUxZjZhZDY4ZjcyZDc5YTBmMiBsZWdhY3ktdHJ1bmsKKzM5MTI5IDMzNDA1MzY0MzZmNWEwZTI4MjU1MDQxYThkNjNmZDdjZjlmMjQzMTMgcmVsZWFzZTI0LW1haW50CiszOTEzMCBjNTg4ODQxMzQxMmI5NGViY2ZjMDZlMWNlMjM4ZGI4OTc2NmRkNTU2IGxlZ2FjeS10cnVuaworMzkxMzEgZjk0ZDViZmFkMDc4ZjgxYmMyNTQ4NjUxNDM5NDM1NWEzYTVlYTI0MCByZWxlYXNlMjQtbWFpbnQKKzM5MTMyIGUyNjM2ZDEwOGQ3ZDA5YTY1ZDhlOTk2ZmFhZDAzMTMxZWNiZjliYTcgbGVnYWN5LXRydW5rCiszOTEzMyA4OTcxMDgwNWJjM2RlZmU4NjI0ZmVmMTJhYzVlZDI0ZTJjNDdhYjgyIGxlZ2FjeS10cnVuaworMzkxMzQgZDZjODc2MWQ3ZjMxNDc1ZTAxZDVkNzE1ZDYyOWVmZGM3YmRkYTllNiBsZWdhY3ktdHJ1bmsKKzM5MTM1IDY2NmMwZWQ0ZmI5ZDQ4MGVlY2NiMmNiZjFlODM1MzNhNGUzZGZhMTAgbGVnYWN5LXRydW5rCiszOTEzNiA4NTc4NzFjNzFjM2JiOTA3NmIwYjM5ZTM3ZGVlNjEwZWMzZGFkM2MwIGxlZ2FjeS10cnVuaworMzkxMzcgYzg1NzA3MGU5N2U4ZDFlM2E3NTQ0OTQ4YjhkZmI2N2Q4MWM5NDNlNCBsZWdhY3ktdHJ1bmsKKzM5MTM4IGIzY2I2NDI4OWQyYmUyNDc2ODBmYzJiMWFkM2ZlNjBhMThkZDg0ZTggYXN0LWJyYW5jaAorMzkxMzkgMjc2MGEyZDk5MjM4ZjEyMWMxOTQyZjA3NzFiMThmYjI3OTIzNTlhOSBhc3QtYnJhbmNoCiszOTE0MCA1YjIzYTVkY2M2YTNmZjJiNmY4OGU2ZWEwOWIyNGVkNjQyYmUzNzAyIGxlZ2FjeS10cnVuaworMzkxNDEgZmRjZGU1OWRmYTFiZDg5ZjI2ZmYxM2NiNWEzZDBkMTZhNmJiMzU2YyBsZWdhY3ktdHJ1bmsKKzM5MTQyIDczZTZjYjVmNDAzOWU2YzBkYTU5NWU4M2VkMjk5YTdmNTY3NWE2NDAgbGVnYWN5LXRydW5rCiszOTE0MyAzYjVmNTQ2NmYxMDVlYWFjMmM3YzM5NWJkNTEyNDZiMmI5YWVmMWI3IGxlZ2FjeS10cnVuaworMzkxNDQgNzM0OTI1YjQ2YmE3ZTQ3ZGY3YjhlYTg3YTVlNzZlYTJjNTkxODQ3YSByZWxlYXNlMjQtbWFpbnQKKzM5MTQ1IDkyNDEyMTg5OTJjMWUwNjcxNmIzZmY4MTFhYjQwZTNlMjE1YzFjN2QgcmVsZWFzZTI0LW1haW50CiszOTE0NiBiODYzOTJmNTViNTk3ZWY0MzM3NjAxN2M5ODBhMjFkNjQ0MGRhYTVlIGxlZ2FjeS10cnVuaworMzkxNDcgYjhjOTA3NmQxNzRlOTJjNTNkYTAxZTgyNjE0ODkxMTJiODRlMjYzMSBsZWdhY3ktdHJ1bmsKKzM5MTQ4IDU4ZDVhNmM3YjYyOTBmYzAwODhjZTE5Njg0Y2M3OTNjM2UxMDliMzcgcmVsZWFzZTI0LW1haW50CiszOTE0OSA0YmY5OWVmMDZkMzhkYjM2NjE3MGFhNGQwN2Y5YzE3OTVkMzk3NjZmIGxlZ2FjeS10cnVuaworMzkxNTAgMzFkOTU1YWIyMjMyZWM5ZWY2MWNhNjI3YjBmNzQ0OTFlZGVmYmZlOSBsZWdhY3ktdHJ1bmsKKzM5MTUxIDljMTg4ZmY2MzEzMTk3NmMyOGQ0ZmQ4Nzc1Y2I0MDM4OTIzNDQ1YzMgYXN0LWJyYW5jaAorMzkxNTIgODEyN2E1NWE1N2NiN2JkNzgwYTU0ZDE0MTE0ZDE4NzdiYzNiNjQ3ZSBhc3QtYnJhbmNoCiszOTE1MyA5ZWNmMDNkZmQ1ZDYxNzdiMjNkNjBmZTJjN2QwNWE3ZGFkNjVmYzBjIGFzdC1icmFuY2gKKzM5MTU0IGQyNTY1NmFiM2UxZDAzYWU4MGJjMzU5YTYzMTNiMGQ1NzAzNGFkZjggYXN0LWJyYW5jaAorMzkxNTUgYWEyZjJmYWVmN2QyOTFkYTdkYzA0NzZmNmJjZTdlOGRhYjJjYzMzZSBhc3QtYnJhbmNoCiszOTE1NiA4ZDBkMzk1YzIxMWVkNzk2YTkyYWExZTAzZDk0NTg3YzNjM2JkMGQ3IHJlbGVhc2UyNC1tYWludAorMzkxNTcgZTA1OTg5ODNmMGE1ZjYyMzk3ODcwOWE4NmJhMjE2MjUyNWUwNzg0OCBsZWdhY3ktdHJ1bmsKKzM5MTU4IGUxZjdmY2E3ODRmM2E2ZmEzNDUyMjdjYzIxOTY1NmMxYjY0ODI2NDMgcmVsZWFzZTI0LW1haW50CiszOTE1OSBkZGQ3OGVhMzUxOWM1MWFjYmFhYjg0NzNhYjU4ZTQxNzM5N2QyNDNhIGxlZ2FjeS10cnVuaworMzkxNjAgOTU1ZDRiYWRkYmZjODY1OWEyODdkNmUxODcxOGM4NjdmYmNiNDkyZCBsZWdhY3ktdHJ1bmsKKzM5MTYxIDIxNGM5NmU1NDkwNTBiYWMzYWE5YTBiZjY4YTZlZGYzMjQ4N2FjNDcgcmVsZWFzZTI0LW1haW50CiszOTE2MiBiNjcwMGIzZGU2OTU1ZDUxZDJiNjA5ZDRlZjM0MWZmYTYxM2UwMjAxIGxlZ2FjeS10cnVuaworMzkxNjMgZGI3NjgzMTI5OWQwMDA4NWY5ZGFkNzI0ZDMyMmMxMWJhNzQwYjMxNSByZWxlYXNlMjQtbWFpbnQKKzM5MTY0IDM1NTkyYmFkMzQ1YmRlZDdhNDljOTlhYTk1MzAwOGMwNTdiYWNiYjkgbGVnYWN5LXRydW5rCiszOTE2NSA3NjNlODViMTA3YjQwZGJiYTk1NjUxY2M1ZGE0MjBlNjRlODM4NTE4IGxlZ2FjeS10cnVuaworMzkxNjYgNTdhNGQyNzQ2NjMyMzg0NmQ5NzNhNWZhMGE4MDc2Y2NlZmQwODFmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTY3IDg0N2U1OGRkYjdkOWVlNmY4ZDhjNzJiZWIyZWQ1MTFjMGE3ZmJlMWIgbGVnYWN5LXRydW5rCiszOTE2OCBhY2U3ZDgzNjA4M2ZlNzQxMDE3M2U2M2NlMDhiZjQ2MDFhYjVmMDA2IGxlZ2FjeS10cnVuaworMzkxNjkgZjljNWFlNjljMTZlZTJiNWExZDI4ZGQwM2I2NzIwMWJkZmVhMWViMiBsZWdhY3ktdHJ1bmsKKzM5MTcwIGQwYzY5NjViNTI1ZWNiYWVlODdiMGViM2UxNmI3Zjc1N2Q0OTdmOTIgbGVnYWN5LXRydW5rCiszOTE3MSBjMDg4ZWNhOTBhNjM1MDkyMTRhY2M0OTgyYzg2YTllMmZiMTIxMzI5IGxlZ2FjeS10cnVuaworMzkxNzIgNTI2ZmFhYWIwMGViOTUxOWRmZTdmMGQ5Zjk4ZWNlY2JjNGViYmNjMiBsZWdhY3ktdHJ1bmsKKzM5MTczIDFmZGJjYTM1MTQ5ODlkODE3ZDJmZDQ5MmQwZDRhMjNjZjJiYzVkNDggYXN0LWJyYW5jaAorMzkxNzQgYTBjMzFiNzBiZDE4MGY3OGY2ODM4NWEyZWU3MTYxNWNhZDJmZjYzZCBhc3QtYnJhbmNoCiszOTE3NSAwOWU4OGZkN2Q1NWE2OGExZjEwZGE0YWU3NTVjNDA3YjljZTkzNzhhIGxlZ2FjeS10cnVuaworMzkxNzYgYjczNWViNDI2N2U4Zjk0Y2FkOTAxMGQxMzNmNzI2YzQ0MTI4YmM0YSByZWxlYXNlMjQtbWFpbnQKKzM5MTc3IDdiNjQzNmQyMzQ0ZDFmNDVmYjZjZjNmY2U3MDg4YmYxOWIxNzM1Y2EgbGVnYWN5LXRydW5rCiszOTE3OCA3NGMzNzE3NjYxMjFjODE2M2UwNTk2NGFjZjE5NmJjMGFhZWU2NDFiIHJlbGVhc2UyNC1tYWludAorMzkxNzkgY2Q1OTVhNjlkY2E1Y2EyZDk0ODY2YTIxODA1Yjk2YzEwYmI1N2FmZiBsZWdhY3ktdHJ1bmsKKzM5MTgwIDkxOWYyZDEzMTk4MmI4YjE1ZGU5ZjA0NTIyODVhNDFlYzE0NzYzYTAgcmVsZWFzZTI0LW1haW50CiszOTE4MSA1NTgxNjNjYjcwYTk2ODJmMzczOTdlZmJkMGVjMjA4YTYxYWEyNGZjIHJlbGVhc2UyNC1tYWludAorMzkxODIgNjJmODE5NDgzMjkzOWJlMTRmMmJlZGE3YWI0ZDdmMjJiZTM0YmE2ZiBsZWdhY3ktdHJ1bmsKKzM5MTgzIDE5NDk3MjJmMzc4NzRkMjM2NzkxZTU0NDIwZTlhZTA2NzZmMmM1YmIgbGVnYWN5LXRydW5rCiszOTE4NCA4NzU2OTczYTZiOTkxMjRjOWNkMDk1ZWJiMTcyYzI2ZDEyZmY2MDMxIHJlbGVhc2UyNC1tYWludAorMzkxODUgYzZiNjljNmQwMWEzNzdkNGM5MzU1YzYxMmNlNjIyNGNmYmU4MzRlOCByZWxlYXNlMjQtbWFpbnQKKzM5MTg2IDk1YTlmZjQ3YjExZDAzOTkyOTc5OTM5MTU4NmYyZmU2M2VmMmUxYmIgbGVnYWN5LXRydW5rCiszOTE4NyBhNDk4ZGNhYWU5ZDc4MjY5YjQ0NTBhZTg4YTVlOWRlMmE5NjliY2VkIGxlZ2FjeS10cnVuaworMzkxODggMDI3ZTAwMGQxZjZkZjBlMDQxMTNmYWEyY2NjNDRjMWM5MTUyNzk4YSByZWxlYXNlMjQtbWFpbnQKKzM5MTg5IDMyZGU3YThkODg2Y2NkZjRjNTllYWZjNWUyZDE3ZTY1NzNlMzM1NGYgbGVnYWN5LXRydW5rCiszOTE5MCAwN2IwMWIzMzQwZjljMjU0MjZiOWMyMGI0MjcwYjgzZjliZjZlNzU3IGFzdC1icmFuY2gKKzM5MTkxIDNhNmVlZjMxZTk1YWUyNTUwN2ZjMzAzMTIzMTJmNDNhMTM1YTg1NDYgYXN0LWJyYW5jaAorMzkxOTIgZDYxZWZjZDg3YzhlMzgzNmNjNjUxZjI4YTMzZDE3NjVlNjRkNjdkZiBsZWdhY3ktdHJ1bmsKKzM5MTkzIGQ0NzZlNThjYzdlNzQ1YzljMGJhNDYzOTAzNjRmMzkzNTM1OTY3ZGUgcmVsZWFzZTI0LW1haW50CiszOTE5NCA5MmIzN2M3MWY5MzVlYWJjNDYxYzA3MGYyYjgwMmY5NDhjNDM5OWQxIGxlZ2FjeS10cnVuaworMzkxOTUgNzRmODIwMmQ4MzE1MDEzN2M4YzM5ZWUxMTBhZDkxYWU5NTQ0ZDNmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTk2IGM1MmNkMWZkOTRmYzU0YmI4NGVkMjU2ZGQyZGJlMzJmYzJiOGFmNWIgbGVnYWN5LXRydW5rCiszOTE5NyAzZjg2ZjhjYmEwNWVkNTY4OTAyODcxYTE3NzZkM2RlMTZhZTc0YTk0IHJlbGVhc2UyNC1tYWludAorMzkxOTggN2UxYzFkNmRlYTFjMzE2OWEzYjBlMWE4NGFkMzU5NjQ4MGRjYTFjMSBsZWdhY3ktdHJ1bmsKKzM5MTk5IDk2OGQ5NDIyYWY3ODdmZTZmZjFhN2YzMzAxNDY4OTVmODNiNjZjMTQgcmVsZWFzZTI0LW1haW50CiszOTIwMCA3MjhmODJiZWJjM2ViZDY2M2YyMzcyMThkNWZkNzJkMzlhNTU0N2YzIGxlZ2FjeS10cnVuaworMzkyMDEgODc5Yzg3NmJjNTdhMzg5ODM2M2Y1YTcxYmY4ZDA3MTYzMTZjNWZlYiByZWxlYXNlMjQtbWFpbnQKKzM5MjAyIGI0MzFlZDdiY2RjMjI1MGFmMTZkOTAzNDUwNjhmZDg2NGIxYjEzYzQgbGVnYWN5LXRydW5rCiszOTIwMyA4NjBlMGZkMmZlZThlZjY5Yjk0YWNhMWYwNzI2ZGY3MDUyYWY5OGVjIHJlbGVhc2UyNC1tYWludAorMzkyMDQgYWVlYzM5ZmVkOGM1YzE2Zjc2NWFjMzk0MjVkMWYyMWY2ODcyMTFmYSBsZWdhY3ktdHJ1bmsKKzM5MjA1IGZhYWQwOTZkZWNmNmFiNGQxZTRmYWViMTBlMzg3ODQ2OWIxNzgzYTEgbGVnYWN5LXRydW5rCiszOTIwNiA5ZjQzNjU1MTIzMjYwMjQxZTAyNjVhMzU2NmU3ZDZlYmY0YWI0MDM3IHJlbGVhc2UyNC1tYWludAorMzkyMDcgMmIxMTdlYjE4OTQ0ZDIyNDQ5Y2NiYzA5YjYyN2Y5MzRkNzRkNjI5OCBsZWdhY3ktdHJ1bmsKKzM5MjA4IGU3ODk3MDNmZTRiZWU0YWEyMjU2ODcyZjhhZDdiYjdlZmY4NTkyY2IgcmVsZWFzZTI0LW1haW50CiszOTIwOSBhOTE3ZTJjNDc2ZjY2MTg4MTJkYzU5MzNkMTdhZDQyOTY3MjQ1NDU1IHJlbGVhc2UyNC1tYWludAorMzkyMTAgMWFjMmMzYTFjM2FjM2QzOWQ0ZDdkZGNmMGVjMDE1NjYwYjg4YTc3NSBsZWdhY3ktdHJ1bmsKKzM5MjExIDlkODM4ZGQ5NjdiMmIyMmFmZjFmMzMxNzlmNGQ1NWRkYmU3ZTg0ZDQgcmVsZWFzZTI0LW1haW50CiszOTIxMiBiZTZhYjNkODZjMjkyNWFkOGVkMDdlNmJkMTA4NjJhZDE2YjgzOWMwIHJlbGVhc2UyNC1tYWludAorMzkyMTMgNTNhYjUxNjNjMWFhYTE5NTNlYmIxYWQxZDFlN2QxMWJmN2FkMDY2OCByZWxlYXNlMjQtbWFpbnQKKzM5MjE0IDRhZGJkMzMxZDMzNTJlYjVmYWZkNzJmY2I1ODllNTEyZjRiMzVkYjIgbGVnYWN5LXRydW5rCiszOTIxNSA2ZWJjNDIzZjJkODFjZTkwYTQ0ODkwZTZmYmY1YTI4ZGRjYTUxNWY2IGxlZ2FjeS10cnVuaworMzkyMTYgOTcwN2JhMjc4ODk0MWEwM2UzZDY5MmJmNGIzYjU4NjAyNmE4NDYyYSByZWxlYXNlMjQtbWFpbnQKKzM5MjE3IDUyYWNiYjg1ODRlYWViNDYxYTc5NjlhMGU4MGM3ZjhhODIzODk5NGMgbGVnYWN5LXRydW5rCiszOTIxOCBjYTY2YTE2YzM3OWRjMjEwNzM5YzEwMmQ1YzA1NzcxYjEwZWRkNmYxIHJlbGVhc2UyNC1tYWludAorMzkyMTkgNDJjZmU0NjAzYzMwYzAwMTcyOTM1YzZmOTljOGM5YzU5YTEzN2NhMCBsZWdhY3ktdHJ1bmsKKzM5MjIwIGVkZjI1YzFhNGY2MDhjNGRiMzg5NTVlOTdlNjJlZTI0MmRmODk5NzYgcmVsZWFzZTI0LW1haW50CiszOTIyMSBmOGU2MGEzZjM0NDA5ZTlmODFmYmFjYzUyNzZmNTY3OTBmNTVmY2E3IGxlZ2FjeS10cnVuaworMzkyMjIgYzhiZDNiNTIzMGM0MjVjYTQ4NWJkODQ2NWZjOTdiOWU0ZWEzMGE0ZSBsZWdhY3ktdHJ1bmsKKzM5MjIzIGI0ZTU3MDMzN2JmNDc3ZTIzNmQ3ZDNmNmNhMjVjOTAzOTUyNTljNTIgYXN0LWJyYW5jaAorMzkyMjQgMzE0NDdhZGIxYjM1ZWMwYmEwOTM0ODI5YWNkYTliY2MwNDM1MzNmNiBhc3QtYnJhbmNoCiszOTIyNSAxNzc0ZmU3ZWMwYzdjNzBkODUwOWFjMzY1YjhiNTQ5MDc4OWFmMTJhIGxlZ2FjeS10cnVuaworMzkyMjYgODVhMzVmODcwMWIzYmI2OWExNTdjZDBlMjUxZjQ2ZjMxZGQxZWZhMCBhc3QtYnJhbmNoCiszOTIyNyAyOThkM2ZhNGVjMzlkZDE4MDJlZjc5YzNhMzdiOTQyYzMwOTFkZTM0IGxlZ2FjeS10cnVuaworMzkyMjggMmZlZWRmODUwNzg5ZDA3NTNlMmYxZGQ0MGFiOTJiNWI2NDFlYmJhYSBsZWdhY3ktdHJ1bmsKKzM5MjI5IDYzNmU1ZjFkYTczM2Q3Yjc0N2JkYTljNzczZDQ2NzU0ZTE3Mzc1ZTIgbGVnYWN5LXRydW5rCiszOTIzMCA3YTUwYmQ4MmRmMjVmMmJlOWUzZmFhYTgyMjJlN2Q3NzViNWZmY2Y1IGxlZ2FjeS10cnVuaworMzkyMzEgMzQ5YTBmZDU5OGUwNzlkMjE3Y2VkZTlkMmI4MjYzOGJkYTY2NWQwYiByZWxlYXNlMjQtbWFpbnQKKzM5MjMyIGM2YzI0ZmYxZTNkYTU5MjhhYzFmODBjMjI4ODUxMjcyYTQ4NDAxNDggbGVnYWN5LXRydW5rCiszOTIzMyAzNWE2OTgzMDJjNjNjNWIxZjA2ODU5YTc4YWQ4NzFjOTgzOGM0YjE2IGxlZ2FjeS10cnVuaworMzkyMzQgOGZmZmI0Yzk1NDg3ZWUyMzczMDg3YjcyMzY4Zjk5MGQxYjljMzQzZSBsZWdhY3ktdHJ1bmsKKzM5MjM1IDNmMWI0OGY5ZmYwZGE5ZjM0N2NkMDExNTQ2MThhYzRlOGM5NTIyNDIgbGVnYWN5LXRydW5rCiszOTIzNiBmMzBlYmRjM2JkZGY3OWIxZmNiYjYzN2Y3ZjIxYzg4Y2VjYTAxYjFkIGxlZ2FjeS10cnVuaworMzkyMzcgZDkxOTY0ZjVmZTBkNmJjYjBkMmFlNDAwMjRlMjc0ZDBlM2EyYTcxYyBsZWdhY3ktdHJ1bmsKKzM5MjM4IDI2YmY2YzI3ZTljZWE1ZWY1MzdlODZlZWRhZmIxYzU5NjFkZTA1MDEgbGVnYWN5LXRydW5rCiszOTIzOSBiMmZlNWY4ZmNmZGRjODRiMWEwMzRjNDI0NWI3ODQyYzMyM2E3ZjczIGxlZ2FjeS10cnVuaworMzkyNDAgNWE5MTM0ZmU1NzA5MDYwYTIzYWEyN2JlNmEyOTU4ZTVlZTc5YmE5MyBsZWdhY3ktdHJ1bmsKKzM5MjQxIDA5OTEyOGZmYWJlNjMxOWEwMDdmZmQ0MjIyMzdiMjE0MDZjNmRiODMgbGVnYWN5LXRydW5rCiszOTI0MiAzMDg2NjIwZGI0NmI5N2ZjMmQwODIwMTdlN2JmY2NmNzg3MjQ0OWM2IGxlZ2FjeS10cnVuaworMzkyNDMgYjQ4ZjBiMmUwZGY2MDk1ZGY1OWNmOGQ4OTAzYmE1YmZiNmU5ZGVhOSBsZWdhY3ktdHJ1bmsKKzM5MjQ0IGIzNjNhMjhlZDI0ZjliMTAzYzU0Zjk0YTA5MDc0MDhlZWE2ZDU1N2UgcmVsZWFzZTI0LW1haW50CiszOTI0NSBhYmRlMjE3YzVkOTBkMWE2NTFlNjU0YmFjYzg5ZGVjZTk2YmI2YjRiIGxlZ2FjeS10cnVuaworMzkyNDYgMzc2MDAyMzNkYjc2ODgxYzhmODk5NzRlZGZiYThjZjg0Y2Y1MDM4NSBsZWdhY3ktdHJ1bmsKKzM5MjQ3IDQ1NWMzYjc2NWRjM2E4ZjFiOTFjOGIxOThlMWNiNTdlZjMxN2MyNzAgbGVnYWN5LXRydW5rCiszOTI0OCAyNTkwZmEwZWM3ZTg4MWIyMzA4Y2EwZTE5MzRjNWFjNDRjMmRlOTRjIHJlbGVhc2UyNC1tYWludAorMzkyNDkgZDUzM2YwOGE5ZGZhYWM3M2Y3ZjNkYWZlNjEzMDAzZGZjMmVhMzVmNiBsZWdhY3ktdHJ1bmsKKzM5MjUwIDVmZTljZWVjYTExMTg4MTRjNDRmNGE2NmRlMWViYjExODZmOTVkNjAgbGVnYWN5LXRydW5rCiszOTI1MSBmMzk5NmFhNzhjZGVhNWI1OTZmMjlkYTE2MTY5MzYwYjY1NTA3MWQ3IGxlZ2FjeS10cnVuaworMzkyNTIgNTQxYmZiYjEwMDMwYmZmYWFjY2NmMjYwNGM5NTE3NjYyOWE5ZTFmMyBsZWdhY3ktdHJ1bmsKKzM5MjUzIDhhYTliZDgwMjg2YjIyMDFlNzVmMWEzNzMyNDEzZGMxN2Y0YjM0NzMgbGVnYWN5LXRydW5rCiszOTI1NCBhNjg5YTIwZjU4Zjc2M2FkYTAzMmRjN2M5ZGFjZmQzMjVlZjlmNmNlIGxlZ2FjeS10cnVuaworMzkyNTUgMWQ4NjExZDg1NTVjNWNhZmUwMGM4ZGVmYTA2ZmMzMThhOTFjNjFlZiByZWxlYXNlMjQtbWFpbnQKKzM5MjU2IGE2Y2JmY2QwZTY5MWJhMGIxYzVhNTdjOWU0ZTBjYjk5Zjk4ZDZlNjkgbGVnYWN5LXRydW5rCiszOTI1NyBjZTA5OTVlMDFkM2M3NDU3NDNjZWE3NmViYTQ5YmFhNDZlOWM0NTBlIGxlZ2FjeS10cnVuaworMzkyNTggZmQwMDQ2MTg2MWM5MDcwNjQ1ZTI2YjY5ZmY5ZjkwMmExODc2Y2YwMiBsZWdhY3ktdHJ1bmsKKzM5MjU5IDI2MTJlOTZiMTdiYmM1YmNhYWM3MmFlYTEwZjFkZjIxZTYwNTMyYjQgbGVnYWN5LXRydW5rCiszOTI2MCBiZDlhZjI2MGU5Mjc5NDJhZjVlMGQ5ODAyMzI3M2EzMWU4YjM2NzFmIGxlZ2FjeS10cnVuaworMzkyNjEgZmE5NWZlOTFjZGY3NjBiZTNkYjEyMDQyYzdhNzlkYzVmMTI3MTgyNSBsZWdhY3ktdHJ1bmsKKzM5MjYyIGJkY2IwMWE5YjYwYzU3OWY3MTZhYjA0Yjg4NDQ2M2I3NDhhZDA3ZjMgbGVnYWN5LXRydW5rCiszOTI2MyBiOTJhODVjM2JkYzgxNmFhZjkyNzdjZTRkZDlmMmRlM2IyODViNThhIHJlbGVhc2UyNC1tYWludAorMzkyNjQgM2ZhNThlNWJkZGZiMjlhNWMwNDBmMjJkMDU4NjQyM2QxZTEyMDU1ZSBsZWdhY3ktdHJ1bmsKKzM5MjY1IDE3ZTA0NDRkZDEyZGFlZmUxY2RlY2Q4MThlZGE2OWY0MjBiM2E5OTIgcmVsZWFzZTI0LW1haW50CiszOTI2NiBhYzljMGVlMTk5ZmM5NmVlYTFlNGJjM2IzMjIwOGUwODM0ZjFlMDBiIGxlZ2FjeS10cnVuaworMzkyNjcgMzA5NDg0M2U3YjkyY2IxMDNhZTBmYmUxYjNiNDY0OGRiZWYyZmM0NiBsZWdhY3ktdHJ1bmsKKzM5MjY4IDZhYTczYTFmMGNiYTg0NTQwM2M3ZjgxNjY5ZjQ0NGQzMjk2ZDVjNDMgbGVnYWN5LXRydW5rCiszOTI2OSAwZWY2NGE5M2YzZjI1ZTBkNjM4MWU4MzM4MzAwOGI3Y2I2OWZjYzRhIGxlZ2FjeS10cnVuaworMzkyNzAgMzAwZjNhYWY4NTNmYjg4OGE0ZGZjNDNlZmRjNjI5ZDFiNjgxMmYwNyBsZWdhY3ktdHJ1bmsKKzM5MjcxIDA0NGE1Y2EyY2RiODJjZGY2N2ZlN2E1NmMzNDZmZGQ4YjE4MzViODAgcmVsZWFzZTI0LW1haW50CiszOTI3MiBlZjExY2JjMDhkYWJhMGZkYTQ5MGMxOTY3Mzg5ZThkZDU1Y2QzYjkzIGxlZ2FjeS10cnVuaworMzkyNzMgZmQwMmI4NGZiMmRiMjI5YmU4ZDc4YmNlMmQ5Y2RkODZjNjQxYTBmMiBsZWdhY3ktdHJ1bmsKKzM5Mjc0IGRjOGFlNDk5ZWZjZjM5Mzg2OTcxNDhhNmY0ODMzMjVmMTExN2RlMWQgcmVsZWFzZTI0LW1haW50CiszOTI3NSA3MjU2NzFkYjc3OWE2ODE4MmJkMjZjMDdjMGY4ODZlZDc1Yjc2OGIyIGxlZ2FjeS10cnVuaworMzkyNzYgOWIyMjI3YTYwZGFlY2RmNTkyZDhkMWVmYjRkMDcyMWM2ODM1MTZiMyBsZWdhY3ktdHJ1bmsKKzM5Mjc3IDUwM2MzNjk3NTc4ZjhjOWU0MGQyZGUyODRhODljMDNiYmZlYzYyMDkgcmVsZWFzZTI0LW1haW50CiszOTI3OCBkZWY0MzRlMmE4MWFmYmRjNGIwMDQyZDRjZDc5OWQ4NDM5NTA3OWJlIGxlZ2FjeS10cnVuaworMzkyNzkgZDY1NzVjZDFhYjY3ZmM2NjMyYjBlMjU1ZDY0NDlmOTI1MGUwOTRlNCBsZWdhY3ktdHJ1bmsKKzM5MjgwIDAyOGU5NGE2ZWZjNTZhOTg3N2JiN2Y4MDAxNzk1Mzg2NzBjMzM0Y2QgbGVnYWN5LXRydW5rCiszOTI4MSBiOGM1ZDIyMjJlZDc1ODNiZGUxMDc1MzI4YTEyM2IxZWQ0N2YxZmE1IHJlbGVhc2UyNC1tYWludAorMzkyODIgZjZiNDYyZDJhM2EzNmM1MzYzNjc0M2ViY2IxY2JkMDU4ODA0ZTdmMiBsZWdhY3ktdHJ1bmsKKzM5MjgzIDNjM2E0NWE5NjU3NzIxZjBjYTEwNjYzNTRjZjE5NjU5ODZlYzUyMzUgbGVnYWN5LXRydW5rCiszOTI4NCBkZDQzNTdhNWRhN2NiN2Q3MDQ3OTdiYjlmYjMzYTVmNjdhMjNmNWNkIHJlbGVhc2UyNC1tYWludAorMzkyODUgYzU0OTlmMjU2Nzg2YjI4MjFmODJmMTczMWUzYWJkNDVjYjQ5N2Y5YSByZWxlYXNlMjQtbWFpbnQKKzM5Mjg2IDcwMGYwODM2OTA5Mjc4NTgyMGM4ZTM2ZDhkMjNlNWE0YzM3MjViMTAgbGVnYWN5LXRydW5rCiszOTI4NyBkZDIzNTc5NTNmZTM4NzE0ODRkODhiMGNmNDc0Yzg2ZTg0MDBlOThkIGxlZ2FjeS10cnVuaworMzkyODggMzk4MjVjYTM0NjQ3M2VkNTY4MDU0Njk0NWQxOGI3MWNiZjE5YmRhOSBsZWdhY3ktdHJ1bmsKKzM5Mjg5IDJmMWJmNjRiODM3ZWY1ZjQ5ZTFjZjQ2ZTM1ZTdkMmYyNDMxZGM1YjEgbGVnYWN5LXRydW5rCiszOTI5MCA2ZjFjZDI4ZDZiODc1MDEyZDAzNDBlNTA2MzJhZGZhMzNiYWRhZDAwIGxlZ2FjeS10cnVuaworMzkyOTEgNzI5YmU4Y2MwMDk4YmY1ZTE3ZWE2M2YxYzNiNWYzMmMwMmM5ZTczNCBsZWdhY3ktdHJ1bmsKKzM5MjkyIGMxZDIyZDRjMDg2NTUyODBjZTM3ZTNiNTFhNzA0MjY3ZGNhZDNkYWUgbGVnYWN5LXRydW5rCiszOTI5MyBjZDhkOGU2MzRhYjgwNmUwMTBlNmI3Njk2YWQwYTgxNDQ2YjAxMmFmIGxlZ2FjeS10cnVuaworMzkyOTQgZTg4MDYwOTRkNjQ0OGRmZjBkZTFmOGJkNmRmMTllMDA2ZTZmY2EwMCBsZWdhY3ktdHJ1bmsKKzM5Mjk1IGRlMmQ4NGUwNDQ3ZWVlZDg2MWI1NGE5ZjVlMzU2OTE0ZWRhNDg3MjEgbGVnYWN5LXRydW5rCiszOTI5NiA0ZmQwMzg3MzdlMjFkMmFjYjhlZjEwMDhmNzE3NWY3YzVlODVhZmVkIHJlbGVhc2UyNC1tYWludAorMzkyOTcgM2EyZmZmNjkwNTU4ZGMwNDNiZTJiZTM0MzEyM2UyZWE3ZGJjYjc4MSBsZWdhY3ktdHJ1bmsKKzM5Mjk4IDg3NzkxNmQ2MzJlMDcwNjliODU3NzU3YmU4ZTUwNWUxZGJjZWYxMjYgbGVnYWN5LXRydW5rCiszOTI5OSAyMGIxOGI3ZjgzMDk1NzhlMGM1MDI5YzA2YTgyOWE5NDIxMjQyZDlhIHJlbGVhc2UyNC1tYWludAorMzkzMDAgYzViZjU2ODUyNjdiOGU4ZGE2OTI5NjEwYjliNDE5Y2YxNzgzNzg4NiBsZWdhY3ktdHJ1bmsKKzM5MzAxIGQ3ZjM5ZTYyMDhiYTlhYzg4NWE0OGE2Y2MwZmJjNWU1MjBkMGUyN2MgbGVnYWN5LXRydW5rCiszOTMwMiA2NjA1N2Q1NTA2MjhhZTc2NWJjNzIyOWFlYTg5ZjU2M2RhM2UwZDkyIGxlZ2FjeS10cnVuaworMzkzMDMgNTAyODNhNDQxN2Q5ODg3MGY4YzliY2Y5Yjk2ODUxYTlhNjkxMmViYiBsZWdhY3ktdHJ1bmsKKzM5MzA0IGYyMDY5MTk1NzU3ODExMzM4ZDFlMjAzNTc4ZGQ0MTVmNTE1ZmEyNTggcmVsZWFzZTI0LW1haW50CiszOTMwNSBhZWI4NTgwYTFhZjc0ODk4ODcyY2YxZWFmZTJjYWFhMWQwZWQ0OTdlIGxlZ2FjeS10cnVuaworMzkzMDYgOGIwN2Q3MzFiZTYwM2RlZDQ4MjM0ODFiNjVlMTg4YjIyZDFlYzJmMyByZWxlYXNlMjQtbWFpbnQKKzM5MzA3IDNlYThmNThhOGM4ZWM2NDM0ZjA0ZmFlZTg2Njc1YThmZWQ5MTlhZmQgbGVnYWN5LXRydW5rCiszOTMwOCA0ZTU4ODcyNWMzZDc1OGU3ZDExZjMyMTFlOTNkZTEyYjczMzgxYWJiIHJlbGVhc2UyNC1tYWludAorMzkzMDkgY2RlMjc3ODJhMTY5MmFkNDFjYmQxNzFmMmFhOTJmNDZhYjAzOGQ3NyBsZWdhY3ktdHJ1bmsKKzM5MzEwIGY1NzEzZTMwMzgwYzQzNmJhOGRlMTJhOGE2ZjQ4NTFkNjk2MzUwODUgcmVsZWFzZTI0LW1haW50CiszOTMxMSA3ZjlhNDMwYjhjZTcxZWM5N2E3OGRjYzczNzY2NDBmY2IzNTY5Yzc5IGxlZ2FjeS10cnVuaworMzkzMTIgY2UxMjQ1MTIyMGI0MGE5MjdiNjJmZTM3YjRlMjRiMzNiY2VhMTBlNCByZWxlYXNlMjQtbWFpbnQKKzM5MzEzIDc2YjI3MjI4MDZhYmM1ZDc5NTNjYWQ4OWU1MjdjYjhiODRhYTk2NzYgbGVnYWN5LXRydW5rCiszOTMxNCAwODRkNDJkZjdiYWQ0ZTk0MDM5N2M2Y2JiM2E2OTgwOWJiZGQ5YzlkIHJlbGVhc2UyNC1tYWludAorMzkzMTUgNzk3ZDgyZWVjNjI1MjFiNmE2OGRmOWQzNmQ4YjI5MjRjNmMyYTRiZSBsZWdhY3ktdHJ1bmsKKzM5MzE2IDYyNDkxOGUxYzFiMmVmZWU5ZTRiN2JlZTMxZGRiODIyMTJkMTFiMzMgbGVnYWN5LXRydW5rCiszOTMxNyBhNDY3MzI1NzFmMmU4ZjA1ZWRjZDViYmE3OTZkZjkyNWM4ZWE2NDUxIGFzdC1icmFuY2gKKzM5MzE4IGY4NGNmODUzNDY0YWFhYTY3YjMxYjNkMTRiM2Y1OWZjNGYwZmU3ZDAgYXN0LWJyYW5jaAorMzkzMTkgN2MxNGM3ZDhiMzk2ZmY2MTFkZTk3OTQyM2VlZjA3NTYwMmE2NzU1ZCBhc3QtYnJhbmNoCiszOTMyMCA0NjgwMGYyYWQzMDhhNDg4ODdhZWE0ZTJiZWZhNjdkOGRjZmNmZmVmIGFzdC1icmFuY2gKKzM5MzIxIDAwMTQ1OTZiODQwYzZjZmRiZThkNTY2YjM4MDQ1ZjI4OGI1ZGNhZjMgYXN0LWJyYW5jaAorMzkzMjIgYjQ2M2JiNDgyNTk0OWJkNDI2MTBhNWZmMzhmNzNiNmQ5MGRkY2Y5ZiBhc3QtYnJhbmNoCiszOTMyMyBlN2VkMGU2YWVkMmYyNzM5NDRjMzE3ZWViMzZkMTdiNzYwYjJiOGU2IGxlZ2FjeS10cnVuaworMzkzMjQgNDQ4YzZmYmZmNjQxMzEyMmE1N2U1Y2UyMDZjMGYzYjAwM2EzNjM4NiByZWxlYXNlMjQtbWFpbnQKKzM5MzI1IDkzMzAwODBhM2Q0MTc1OGUyNmEzNmZjN2MzYmI4NWY2NTIzYWJjNTAgbGVnYWN5LXRydW5rCiszOTMyNiA5MjYxNjlmZGU1ZTYzM2YxZTJiYTg4MjdlNjVjYzNjZjBiMDNlNGNjIGFzdC1icmFuY2gKKzM5MzI3IGZkZWI0YThiY2I0ZTI1MDk5YTAzOGE3NzBjZmE4NWEwMmVlOWZkNTkgYXN0LWJyYW5jaAorMzkzMjggNDMyMTFiZTBkZTQxNWZkYTFiZDdjNmEzZjlhZDkwMGU5YmVhNjFmMCBsZWdhY3ktdHJ1bmsKKzM5MzI5IGQ2ODI3OTBkNWRiMGUyNGFiMzM3ZGJjMmY3NTNiYjFmN2YyYmIyMGQgcmVsZWFzZTI0LW1haW50CiszOTMzMCAwZjFhMjMxYzJjN2NhYjVkMjFkZmY5M2JmMDdjZTk5MmU0OTRhNjZmIGxlZ2FjeS10cnVuaworMzkzMzEgNzg3NDc4OTIzZTgyZjI3ZTNiYjA1NmJjNTM0Nzk4YWNhMzJkZmFjNyBsZWdhY3ktdHJ1bmsKKzM5MzMyIDA0ZGQ1YjA2ZDNjOGVkNTNkYmU5OGU5NjI0NGJlNzg1MzA2MzBmYmMgbGVnYWN5LXRydW5rCiszOTMzMyAzNGZmN2NhNGNlZjg1MjdlM2IxZmJjYmM5NTBmNzQyMTY1MGQ5Y2I0IGxlZ2FjeS10cnVuaworMzkzMzQgYTZlNzAwMDRlOTg3MGNkODdlZjMxYjJkYzBlMzRjMjBkYmFiNTI3ZiBsZWdhY3ktdHJ1bmsKKzM5MzM1IDM4ODI0YjZlMzYwMDdjMzY5NTFmY2Q1MWYzOWVmNGY0MzRlYmY5OWMgcmVsZWFzZTI0LW1haW50CiszOTMzNiAwZWIzODZlZTk0MGUzMDMyNmM0N2JjYWFiYTE1YjkyMWYwOGU1MDNjIGxlZ2FjeS10cnVuaworMzkzMzcgMDcxMzcyODY3NzNjYWZmNmVmMDc1OTAzNjM4OTJhODU3YWE2Mjg5ZCByZWxlYXNlMjQtbWFpbnQKKzM5MzM4IDRhY2QzMDc2MWJjMjE3NjMwM2JmNDJjNzRiYmIyOGUwOTZmY2M0ZjQgbGVnYWN5LXRydW5rCiszOTMzOSA2YjM3ZWFiZTJhYzQzN2JmZDQ0ODQ5ZGYwYWQ1ZTkwM2UwNjRmYWY3IGxlZ2FjeS10cnVuaworMzkzNDAgNWY0MDBmYjJkZDhhNjliN2NkNjlhMzE4OTFjYmJlNjQ0NDYwODYwYyByZWxlYXNlMjQtbWFpbnQKKzM5MzQxIDM5NzNkNjNkMjY2NzdjMDY3NDYxMzZmMWIxNTI2NTcxMzc4MTFhNWIgcmVsZWFzZTI0LW1haW50CiszOTM0MiA5MWQ5NjhiNzc1NzlhNWEzNjYxYmM0NmUwMWZlYTlhNmQ0YjQ5NWQ5IGxlZ2FjeS10cnVuaworMzkzNDMgNDNjZjU5ZTdhNjE0NWFjNzE4ZmU5NTM4NDNmNDIwYWNjODNhMWQ3YiByZWxlYXNlMjQtbWFpbnQKKzM5MzQ0IDRkYTZkNGUwYzNkNTYyOGMwY2YxZGVmNWFlMzUwY2VmNmVhZGUxZTYgbGVnYWN5LXRydW5rCiszOTM0NSAxMmE5YmIyNGI2ZDk2NDY2MDc0OTRkNjI4ZWNhODllYzBmYWVkOGFhIGxlZ2FjeS10cnVuaworMzkzNDYgYmVkOTNkMDQxNmRkZTgyYTM0OThlMmRlNzdjMzk5M2U3ZmI4NDNhNCBsZWdhY3ktdHJ1bmsKKzM5MzQ3IDdmMTYyNzc2NjYyMTZjMWU3ODdiMjAxNzdiYmNkZDA5NDRhNzc0YjAgYXN0LWJyYW5jaAorMzkzNDggMDFlZmY2MDc5ZjkwYjZmYWFmYmE3NDY1ZGY3ODkwNmFiMWIxMTdhMCBhc3QtYnJhbmNoCiszOTM0OSAxNzA4NDc5YWRlNGQ1YmFjZDQwMmRkNjMxMmUzNGU4NDc1MTZiNzA4IGxlZ2FjeS10cnVuaworMzkzNTAgYzllYjI1ZmUzOWNiYmUwNWQ1YWQyZmQzYzhmNTJiZDQ5YzIwNWNkOCBsZWdhY3ktdHJ1bmsKKzM5MzUxIDllMDVlYTNiMWJmM2I4NWYzYTI5OWU0ZDM0MmQ0ZmIxOTQ3MTk1ZDkgcmVsZWFzZTI0LW1haW50CiszOTM1MiA1YzdjY2EyNTQ3MmRlZmZlZTQ2ZDc1Y2E5OGM3MTUyZmZhMTVmODNhIGxlZ2FjeS10cnVuaworMzkzNTMgNmMwODY1YmVhYWI3MzEyOTIwODBmYTIyZGU0YWFiYmEwMTdmNTQzMyByZWxlYXNlMjQtbWFpbnQKKzM5MzU0IDg4MzdkZGZhYWQ0NWVhZjgzODE3YWQ4MWFkMzE3NWE5ZDdhNjJkMjUgbGVnYWN5LXRydW5rCiszOTM1NSBmOTYyODdkMWI1ZjZmOThiZTc4NWM0Yjg3MmM5ODViNjRiZTcyNzBkIHJlbGVhc2UyNC1tYWludAorMzkzNTYgNjM0Y2E0ZDhhMzA2YTIyMjIxOWQ2YWVlYjJhNjIyMGZiMGM2MTIxYyBsZWdhY3ktdHJ1bmsKKzM5MzU3IGI3MDk3ZDkxZjA0ZDFlYmQ1NmU0N2IwZTdkMjAxZGE1N2VmZDdiNDIgcmVsZWFzZTI0LW1haW50CiszOTM1OCA1YjFhMmZiODY0YTc2MjZjMTY0N2EwYjUzMTk3NjFkOWFjY2E4NTY2IHJlbGVhc2UyNC1tYWludAorMzkzNTkgM2JiOTMyODAxYjY0NTJmODhiNzliZDJlZWMyMGZjNTk5NzNlZWM2ZCBsZWdhY3ktdHJ1bmsKKzM5MzYwIDM3NDVlM2M2YTNlMTM2MDE2ODk2ODQyNWU0OWYwNTdlNWVlZjVmZTMgbGVnYWN5LXRydW5rCiszOTM2MSBkZGUwNTZhNjY2ZGRlZjUyYWQzMjAzMmRhMzhlNTkxZDMyOWFmOTk1IHJlbGVhc2UyNC1tYWludAorMzkzNjIgM2VlYzkxMDM4ZmJjYTlmNDM5YWEyZGE5NzQ2NWI5ZjU1ZjQzMTI3YSByZWxlYXNlMjQtbWFpbnQKKzM5MzYzIDBhNmRiY2I0ZTA1NjYyMzA1Y2FkMzg4YTNhYjM1MzI0YTA2ZjZlYjUgbGVnYWN5LXRydW5rCiszOTM2NCA0ZDA1ZjllN2U2ZTI5NGE5ZTQxN2RhNTc2MDZmYmYzMzEwZjUyYmRmIGxlZ2FjeS10cnVuaworMzkzNjUgMTU2YWJkYTRlNDU3M2E4ZTJmNGYxZmEwN2E5MDZlZDEyNTA4NjcxZSByZWxlYXNlMjQtbWFpbnQKKzM5MzY2IGZmMmU2NmZjMGEyOTI5MDRkYzA0ZDM3MjAyYzg4YmRjZTA1YzFkM2EgbGVnYWN5LXRydW5rCiszOTM2NyA0ODk2ZjgzMzRiZmYyNDQ1MzI2OGE1Y2I1ODgwYmRiYTlmNTE5YjQ1IHJlbGVhc2UyNC1tYWludAorMzkzNjggZTQ4ZmNkNGMzNThkNDk3YzA3ZjYwNzNiNmI1NTRiOWM0NjdkMDE3OCBsZWdhY3ktdHJ1bmsKKzM5MzY5IDM3ZmE3YjZkY2E5YmI4OWJhYjJkOTFlZDFkNjVjZjAwZjQyYWE0ZDMgcmVsZWFzZTI0LW1haW50CiszOTM3MCAyYTZiNjk0MmE3ZjdjYjYwNDA2MDU2YmY5MGM5YjQyMTQ3ZTNlY2U4IGxlZ2FjeS10cnVuaworMzkzNzEgYzRlNWVkN2EyYmEzN2Q2NTEwMDQ0MWJmMjBlYjNhNWExYTU0YjAxNCBsZWdhY3ktdHJ1bmsKKzM5MzcyIDg1ZjBhNmU4MzgwYjVkZDc5MmNkNTg3MTI0YjY3MGQxOTgyM2UyMjggbGVnYWN5LXRydW5rCiszOTM3MyA0ODE0NjNhNWIyMGM4OTZmZDhmMTc3NjZlNDgyNmIwNjkxYjJiY2Q0IGxlZ2FjeS10cnVuaworMzkzNzQgZmUzMjM1ZmNkZDc3MjUyZWRhZTdiYTE0MWM1MGM3NGUzZWU1OGUxMCByZWxlYXNlMjQtbWFpbnQKKzM5Mzc1IDdjYWFiYzc0OTk3NTY3ZWVhMjgxNGY2OTQyMmYwNDE0NmZjNzY2OTkgbGVnYWN5LXRydW5rCiszOTM3NiBkNWRmNTIyMmZkNmQ1NDJjOWFmYjVjYzY4YjVhOTFkNDI4N2NjMDIwIGxlZ2FjeS10cnVuaworMzkzNzcgMTY1MjBmY2MwNjA5NTBjYjBmNmEzZWE1ODA0MTc5ZTAyYmFmMDllOCBsZWdhY3ktdHJ1bmsKKzM5Mzc4IDU1ZTI3NTlkMDIxMTM3MjQ5ZjFhZjRjYzU3NDY4N2NmNWE5ZGM5NzEgcmVsZWFzZTI0LW1haW50CiszOTM3OSAyNDVlOGY0Y2JhMWRiMjQ4NmE0YTRiZGUzMTQ0YmNlNDk3Nzc3Yzg2IGxlZ2FjeS10cnVuaworMzkzODAgZTBiZDZmMzI0ZmQ2YTFkMjk1Yzc1NjA2M2Q2MDhjODVkOTc4YTAzZCBsZWdhY3ktdHJ1bmsKKzM5MzgxIDFiN2M0ZmJlZTBiOGJlMTBmMzA4ODIwN2Y5YWFlMmRkNTc0YjgzMDQgcmVsZWFzZTI0LW1haW50CiszOTM4MiBjMWYwZjE3MDkzNmQ1NTcyYjRhNmU3NWRmNDY3NzU4YmUxMGJlZDNkIGxlZ2FjeS10cnVuaworMzkzODMgMTMwYjZjZTliYmYzZGMxMjc2MDg1ZGYyZmQxNDY4ZWY1MGFhNzEyNSBsZWdhY3ktdHJ1bmsKKzM5Mzg0IGVkZGNlNDBlZDFiMTZlMTdkNjI3MGFmYmZiNDdkMTlkMTdmY2ViZTUgcmVsZWFzZTI0LW1haW50CiszOTM4NSA3ZDNlOGMyYWUzMzkxMzJlODZjYmFkYzlhNzQ0ZmZkYTljNzQzYmZkIGxlZ2FjeS10cnVuaworMzkzODYgOWQzNDNiYzgxODYzODE2YjViNjFkYTU3YjJmMTY1M2Y1YzljYjFmNCBsZWdhY3ktdHJ1bmsKKzM5Mzg3IDRhNTA3Nzg3M2NiYTBiYmE5OWZmOGJlZmNmNmJhZDc2MzU4YWNiYjkgcmVsZWFzZTI0LW1haW50CiszOTM4OCAzZDAzZDJjYmUxYWQxNmRlNTk0ZjE5NmRhOWNkYjVmNjdmMjBkOGVjIGxlZ2FjeS10cnVuaworMzkzODkgNjUyMzhjOWE3YTY2MDEwODBkMDVhNjg2MDc3MDYwMmVmNjIzNzg1OSBsZWdhY3ktdHJ1bmsKKzM5MzkwIDE3MDdjOTQ1ZDZjMjRkZDA4Nzc5ZDZmM2NlODE5YWM3MmQ2YTkxZDIgcmVsZWFzZTI0LW1haW50CiszOTM5MSA1OTU0NTFjMmM4ZWNkYzk5YzQwNjgxMTM3N2YxMTU1ZWVkZWRkYzdiIGxlZ2FjeS10cnVuaworMzkzOTIgYTE3MDEyMzQ1YWY2YWEyOWYwYzA1Y2MwMjA1YWU0OGMwODBlYmU2ZiBsZWdhY3ktdHJ1bmsKKzM5MzkzIGQwZTg2NTc2ZjBiNWRmNTc5ODljOGE2MjljY2JhOGYyYWVlNjNmNjUgcmVsZWFzZTI0LW1haW50CiszOTM5NCA0NDYxMjU5MzQ3MWM5NjBiNzM0ZjM5ZTJlNjg2NmRiOWRjZTA0YzdlIGxlZ2FjeS10cnVuaworMzkzOTUgY2I0OTlhZWUzNmU3OGFjYmZhN2UyYTg1ZTI2MjNiOGVkZDFlOTljOSByZWxlYXNlMjQtbWFpbnQKKzM5Mzk2IDdhMGQwYjRjODdkMDY0NTExNTYwOTkyYWY4ODQ1ZDRhOGNlYTJlYmYgbGVnYWN5LXRydW5rCiszOTM5NyA1ODJjOTBkZWRhOWRmZTMwNDI1Y2E2ZGEwNWE2NWQ1YjJjNTMzZDFkIHJlbGVhc2UyNC1tYWludAorMzkzOTggMDk5OTI5MGM2NzU4OGExMDI1YWNmY2E3NWI0MTE2OWExNmVkMzI3YSBsZWdhY3ktdHJ1bmsKKzM5Mzk5IDUzMTY4Njg1NGYwODZlYTM2MGVkZWJkMmU1YmIyNGJkODIyNGM0MjUgcmVsZWFzZTI0LW1haW50CiszOTQwMCAxZmRmZDAxMzBlMjgxOTIxMzhlZmUwZDMyN2M5NjdiMTY2YmQ5MTNiIGxlZ2FjeS10cnVuaworMzk0MDEgOTdjOTcxOTRlNjRiYjg3MjNlNjI4MzA5YmRmMDFlN2MxNzFmNjYxOSByZWxlYXNlMjQtbWFpbnQKKzM5NDAyIDM2NTE0Yjk1MDAyYWIxZDU5MmYwNTZiZjk2ODhkYWRmODFhY2MyMDkgbGVnYWN5LXRydW5rCiszOTQwMyA1OWE2M2IwOWE0YzI2OWU1MjY3NWFlMzM1N2FiOGUzOWIwYjZhZTc5IHJlbGVhc2UyNC1tYWludAorMzk0MDQgMzg1NWE5NjBhNmFhOTZjYTllYzg1OWZlOWExMjEwNzkxYjYyODU4YSBsZWdhY3ktdHJ1bmsKKzM5NDA1IDlhODM3MzgwYzNjNWYxMjdhMTc4ZGI2ZDA2MjJlOGJjNzMwMDBjMDYgbGVnYWN5LXRydW5rCiszOTQwNiA4YTNkN2Y5ZjAyY2MyZmUxZDE1ZjM2ZTNlZDA0M2ZmNDNiMzAzMzQ3IHJlbGVhc2UyNC1tYWludAorMzk0MDcgY2ZjYzI2NDFhOTEwOTgwZDMyYjg3MmVkOGIzODkzYjJmYWViZjhjNiBsZWdhY3ktdHJ1bmsKKzM5NDA4IDlkNDFhZmE2M2I3OTUzMTMzZTQ2NGVmMDA2MmI0ZjEwOTg3NWJmYTAgcmVsZWFzZTI0LW1haW50CiszOTQwOSAzOGU1ODhkMWQ4ODUzYjhhNDliZDM5ZWI1NjBmNmM2ZTkzODYyYWExIHJlbGVhc2UyNC1tYWludAorMzk0MTAgMDg1MjhmYmQ0ODA0OWZiY2VkZDRjZWI2ZjMxYTY1NDg4NzZlNjhmZCByZWxlYXNlMjQtbWFpbnQKKzM5NDExIDliZTkyZmU4YTdhODEwMTIwZTU1MDRjZDE5MGQ1NjRlZmJlNTg5NzYgbGVnYWN5LXRydW5rCiszOTQxMiAwMzU0MDllZjA5MDExZjU1YjU2ZGVlYjJlOTY3MGM0Mzk3YWNlNWNlIGxlZ2FjeS10cnVuaworMzk0MTMgMjU2ZTczODRmMjRkYmQzMzNjYjM1ZDJiYjliYmI5MDE3MTY4MTI1NiBsZWdhY3ktdHJ1bmsKKzM5NDE0IDEzMTI5NDZmMzJhYjVjZTExNzNhNWUyYWYxYjQyODY0ZWM2ZDFiZDAgcmVsZWFzZTI0LW1haW50CiszOTQxNSBhZGVkYTlmYjM0ODVkNjc0YzcwY2QyMDI2N2VlMDhhMDY2ZGVjNmMzIGxlZ2FjeS10cnVuaworMzk0MTYgM2U1YzA3ZmFhYjExMTM5OWIyNDAyY2U5Y2U1YmNiNzcxZWE2YzU2OCBsZWdhY3ktdHJ1bmsKKzM5NDE3IDUyMzNkMTlmZjg3ZjI3N2YxZDI2NDg1NDJmNWM1MTk4ZWEzZWU2ZGMgYXN0LWJyYW5jaAorMzk0MTggNzJkM2FkMDhiMmM2MjBiYWE2NjBjZGIxZjRhOWM0Y2NhY2ZiMzgzZCBhc3QtYnJhbmNoCiszOTQxOSA2OWVhYjg1MTc0ZmJhM2Q4NjJjZjYwNmI5MjhhNTc2Yjc4OTk0ZGZhIGFzdC1icmFuY2gKKzM5NDIwIDMzZjY2MmY2Nzk1ZjMzYTFlMTljNzk0NzA2ZmIwMmQ2YzM4ZTI2N2QgYXN0LWJyYW5jaAorMzk0MjEgNzEzY2NmZjcxZmRmZTRiNzAzMjMzZWYyZmNmNjA1OGUzOTY4NDIyOSBhc3QtYnJhbmNoCiszOTQyMiA4NTk2MGNhNGZjMDg5ZTlhMTZmNGJhOTNiNjYwNTA5Y2Y5MTNjMzVkIGxlZ2FjeS10cnVuaworMzk0MjMgZGJhMWUyZGZkOGRlYTc4NDVlYmI5Y2Q3MmNkMzY1ODM2YWZkZDI2NyByZWxlYXNlMjQtbWFpbnQKKzM5NDI0IDIwMGUyZWY0ZGJkYzY0M2M0N2Y0NTRmNjkxMTM3NWNkM2I0MjcxMjggcmVsZWFzZTI0LW1haW50CiszOTQyNCAwZjQwNWExYzUzNDA1NDk0MjY0Zjk3YjRkZGU4MmVlMWE2ODkwNGMxIGxlZ2FjeS10cnVuaworMzk0MjUgYWFhMzY0NmY0NTY3MTI2YjAwYjQ0MjEyZmRiOGNkOTJkNjIxNzI1ZSBsZWdhY3ktdHJ1bmsKKzM5NDI2IDAyMzRjODRhN2Q4ZGE4MjZhMjUxNzRkODIxNjU5NmQxOWJjNmZmZjkgYXN0LWJyYW5jaAorMzk0MjcgZTUyZWQ4NzhjNWVlMGFkZTIwN2NkMjllOTRmNDQ2MzBiNDY4YjFmMyBhc3QtYnJhbmNoCiszOTQyOCA0OTZkMjliMGJhNWJiYWY2Mzk2Y2IyMjljOWExMGRhMGI5ODY5MDBmIGxlZ2FjeS10cnVuaworMzk0MjkgMTFlMTVmN2FiOTQwNmVlYzVjNjJhZDFjNDZmMmE1YTMxNTkxZDNmNSByZWxlYXNlMjQtbWFpbnQKKzM5NDMwIGQ5MmYwZWQ2YTdmMmY5ZDdlZWI1YjdjMzViMDM1NmU4ZGMyZDIwNGMgbGVnYWN5LXRydW5rCiszOTQzMSBhODRjZGFiYjhhZjA2ZGFiZDk3ZTkzOTQ4YTE0YWZiNjNjNzI5ZjVjIGxlZ2FjeS10cnVuaworMzk0MzIgODllOGE1ZWMzZGEwNTc3YjcyYjE0ZGE0YzNkMjdmOTgwZTFhNzhjMSByZWxlYXNlMjQtbWFpbnQKKzM5NDMzIDY3NjNjOTFmY2ZlZjQwOTllOWM0NmJmNWZmYzJlNDJlOTU0ZmQ0YjAgbGVnYWN5LXRydW5rCiszOTQzNCBiYWVkOGI3ZGViNTZkMWM5NWFkOTQwYzU1YjkwMWNjM2U5MDdhYzljIGxlZ2FjeS10cnVuaworMzk0MzUgOWIyMTA0MDExZjcwMjZhNWNjOTYxZTBmNWVlMTI4YjEyZDYxMTJiNCByZWxlYXNlMjQtbWFpbnQKKzM5NDM2IGJiNjc3MDc5ZjgyN2NlMjAxNjVhYTBjY2YzMTBkZGM2YjMwZmEwZGUgbGVnYWN5LXRydW5rCiszOTQzNyAwZTg5NjRmNTM3MzJiZGM5MjBjNmNmMTBlZTI5YTljMWJiOWM1ZjMzIGFzdC1icmFuY2gKKzM5NDM4IDUxNmVkNjBhOGY5Y2FmNjcwZjNkMDk3MTgzZmVlNDE1MDQ1OGViYTMgYXN0LWJyYW5jaAorMzk0MzkgNjA2MWFhYTQ0ZWJjNTM1ZTQ5YjZiODM3MmIzOTE0ODE0NTRjY2M3NiBhc3QtYnJhbmNoCiszOTQ0MCBkMzMyYjIxNjhjYjI0NzI2OWE0NmZjNmE1ZmFiYWNmZDczNmE0MzU4IGFzdC1icmFuY2gKKzM5NDQxIGNkN2Q2YzZmMmRiMjE3NTRlMmIyMDM5NzdiMjQ1N2UyNDllYTNlZjMgYXN0LWJyYW5jaAorMzk0NDIgZTE1OGYxZTE3YWI0YjcxNTlhYzFmZWY2MWE1NjgyNmZmOTViN2NmZCBhc3QtYnJhbmNoCiszOTQ0MyAwNmVmZWVjNzRkNTlhNTIxMjQ5ODg3YThlYjdkNzNmNTAwMmVmMTFhIGFzdC1icmFuY2gKKzM5NDQ0IDM0MzhlZWJhNThjMzhhOGZkMzY2MzRjZWQ2MDNiMzVlNGJlNjllM2UgbGVnYWN5LXRydW5rCiszOTQ0NSA4MWEwNmE5YTFhYzQ3YzQ5N2I5YzhjODYzMTUwNDdhODMwMzY0ZjVmIGxlZ2FjeS10cnVuaworMzk0NDYgYWIzZGRiYmQwODYyYzhmNDNlZjcxM2M4NGYwNzI2OGNhOWQ2ZmY2NSBsZWdhY3ktdHJ1bmsKKzM5NDQ3IGJiZjgxNTdkMDM5ODRlOTZhOWE4Njc4ODk4ODA1ZmVhMjcxOTkzNTkgcmVsZWFzZTI0LW1haW50CiszOTQ0OCA0ZmM3YTdlZGNiNGI2YWZiYzk0MjQxOTZhMTMwMmQwZjUxNWQwMWE4IGxlZ2FjeS10cnVuaworMzk0NDkgNmI4YzU1ODc3NzU1YzdmZGVlMDU0MzRhNmU5ODkxYzE4NmJiNWYwNCByZWxlYXNlMjQtbWFpbnQKKzM5NDUwIDFhM2NmOTZjOGQ0NjRiZDU0NTQ4OTJkNjQ3NTBlMWYxZTYyM2E2ZDEgcmVsZWFzZTI0LW1haW50CiszOTQ1MSBiY2Q5ODExMjM1ZDQ5NjJiZTA0ZmI2ZDg3NTk5NTk5Yzg4Nzk3YmExIGFzdC1icmFuY2gKKzM5NDUyIGExNTk1ODRkYjY1YzEzNDE1N2Q1NjEyOGIwZjAzMzc4MWI1NWFlOGEgYXN0LWJyYW5jaAorMzk0NTMgYmE4NDRiZDdhMzJiNmJiNjUxMDUzMWE2M2FiMGRjMDAyOTA4ZDY2OCBhc3QtYnJhbmNoCiszOTQ1NCA0NjgxYThmYTQ2ZDA2ZWNmYzdhNGM2Nzc0NGZkMzU4MGNjZGM0NThmIGxlZ2FjeS10cnVuaworMzk0NTUgY2U1Yjc1MzI1MjBhODdkOTQ2NzQwMzk2MWY2Yjk4OGIzYTQ0OTc0OSBsZWdhY3ktdHJ1bmsKKzM5NDU2IDBlYWU1MjE5ZjNiODI0ZDBmZTYyN2ExZDdkYTQ3MzdhYmU0ODg4NDUgbGVnYWN5LXRydW5rCiszOTQ1NyAzZTYyMTIxMTNlODJhMGRjYmIwOWU5ZTA5NTk1NzIyZjY1NTE1MDQyIHJlbGVhc2UyNC1tYWludAorMzk0NTggYTE4NWQ2OTYzMGIzOGEyNzhjYzc0NjUwMzEyY2QxYmRhOGI4ZGVlZSByZWxlYXNlMjMtbWFpbnQKKzM5NDU5IGMzNTNjMjc4MmFlMTU5NWQ1ZTQ3NTQ3OTgyZDA0NDkyMjczNWFmZGQgcmVsZWFzZTIzLW1haW50CiszOTQ2MCA5N2RjOGYwNmM0ZmFiN2Q5NTRhYjUzZDYyMDAwMDRkOTM3MGE2MzA1IHJlbGVhc2UyMy1tYWludAorMzk0NjEgMGJjYjMwM2IzNDFiNjY0YjllMTY1NGM0ZDVhOGFjNWUwYzNlMTRmZSBsZWdhY3ktdHJ1bmsKKzM5NDYyIDBmZTgxMTdiNzYxZDc0YWQxYTJlZjcyMDQ4ZmY1MWFiMzRjYWNkM2UgbGVnYWN5LXRydW5rCiszOTQ2MyBmZTBjYTYwNDgyNjcwMjc3MjJjYjE2ZDgxN2EzOGZkOGFiM2NmOGNiIGFzdC1icmFuY2gKKzM5NDY0IDA3OTU2ZDRhOGU0YWJiZGQ3NWMxZjZhYzNmMzhjZWQ3ZDUxZjVmODQgYXN0LWJyYW5jaAorMzk0NjUgMTI5YWIyMmM0YjE5YTljYTRkMTllN2NlMjk1ZTc5YmQ1M2YxYzc5NyBhc3QtYnJhbmNoCiszOTQ2NiBmNTRlNTBjNTNhNzJkMzljNmFkZDdmNjNiOWIzMTU3NDg4NjUyNTIzIGxlZ2FjeS10cnVuaworMzk0NjcgYzg5M2NhZWIxMTM3MDU3OWNhNjM2NDgzOGUzMWUyMTU4ODQzYTI2MSBsZWdhY3ktdHJ1bmsKKzM5NDY4IDIyYTQwOTNiNTE1MWM2OWI4NzM5NWNlYzI2OWFjMDZmNmZhY2NjY2MgYXN0LWJyYW5jaAorMzk0NjkgZGFmMzM4ZWNkY2NjNmJmNjEwYTNmNjQ2ODJjNzMwZDQ0NjI2ZTExNCBhc3QtYnJhbmNoCiszOTQ3MCBiNzIwMTA0YjdkYjkxNjVhMDM4YTU1Mzc4YjFlN2Y0NTNmZmFkMjVhIGxlZ2FjeS10cnVuaworMzk0NzEgYmE0NGU5ZTJiNTU0NzI5ZjcyMGNkZDdjY2NlZjllYTAwY2IyMzlhMyByZWxlYXNlMjQtbWFpbnQKKzM5NDcyIDhmYTgzYTllYmM2ZWNjZWNlYmI5ZDA5NWExNTkxYWY3MGJkZTY0YzUgbGVnYWN5LXRydW5rCiszOTQ3MyBlZDY1ZTBhZDIyMTU5NWI3ODI5NjQ0ZjQyOTU5ZDkzYTFkNGRiNThmIGxlZ2FjeS10cnVuaworMzk0NzQgNzcxODQ3Y2JlM2I2Y2I2ODYwMjQ0N2FkMDdhZmMwYmI4YTFjNWVhNSByZWxlYXNlMjQtbWFpbnQKKzM5NDc1IGY2M2U2OTYwYzVjZmJlMjZiMWI1OWFmMWFhMjIxOWJmYThlYWVkYzIgbGVnYWN5LXRydW5rCiszOTQ3NiAwYjdmYTZmMDU1MmFiZTkwNTFlZTRmNGMzM2NkY2Y2NDc5ZTYxMTcyIGxlZ2FjeS10cnVuaworMzk0NzcgMjZiYTNkNGY0ZmM0MTU1N2ZkMjZlM2RmZWMyZDNmNmFmYThjMTk3ZSBsZWdhY3ktdHJ1bmsKKzM5NDc4IGE1NzgwMDJjOGY2NTk5MjIwZDBiYWEwYjYwMzg4YmZjN2ViOGFjZTkgbGVnYWN5LXRydW5rCiszOTQ3OSAxNWE4OTc1ZjdmYTkzZDVhMDY4ZjdlMmJmYjRiMjY0YTQ3YjA5NTQ2IHJlbGVhc2UyNC1tYWludAorMzk0ODAgMWYyYWYyNTk5NjhiNDU1ZDQwYjM1YWQ3YzQ1MTRlY2U0MzhjZTc5NiBsZWdhY3ktdHJ1bmsKKzM5NDgxIDBhMjhkNDg2MzZjODY0M2ZkZmNmYzhiNzIwNTE3NTE5MGNjYTMzNjAgcmVsZWFzZTI0LW1haW50CiszOTQ4MiA1ZDU4NDQzZjQ4OWI0ZmQyOTEwYTQwZjAxZGEzNTZhNWIxMGJmMTcwIGxlZ2FjeS10cnVuaworMzk0ODMgZTdmZDg1NTUwYmMwYjU5YjhmOTY2ZWEyZWY1ZTlhZTQzM2UyMDk0MSBsZWdhY3ktdHJ1bmsKKzM5NDg0IDk1MTZiYTU0YjlkZjQ0NzU3ZGU0ODI4YmJmYTI3YjQwNmIwMDA4NjAgbGVnYWN5LXRydW5rCiszOTQ4NSA1ZGIyNzMxNWVkY2ZmYTVhNjhlYjdhMTljZTE1ZDgzZjRlODE0Nzk0IGxlZ2FjeS10cnVuaworMzk0ODYgNGFiYWY2OTIzNDM3MTk0ZGJjNjMyMGFmNmE1MTJlZWY0MzRmZWVjMiByZWxlYXNlMjQtbWFpbnQKKzM5NDg3IGNlYWMwMjc3ODUyMzQ5YmU2NTg5YzEzZGFjYmIwZWVjYTA5OTVjNWEgcmVsZWFzZTI0LW1haW50CiszOTQ4OCBkZTFjNWQxN2ZkZTZjNjMwZTlmNTBhYWE1ZjQ2MWVkZWYzMDYzOWVjIGxlZ2FjeS10cnVuaworMzk0ODkgNDM2YmUyYzg5MTQwMmY0ZGNlZDNmZDk2NjI3MDUxZTlmNDk1OWRiMSByZWxlYXNlMjQtbWFpbnQKKzM5NDkwIDdkZDQzMTc1MGJkMzY1ZmQ1ZDM3MTFkNDM3MDYzZTc3NTNhMWIwODMgbGVnYWN5LXRydW5rCiszOTQ5MSBlY2Q2MWM5MmFkZjMxNjJlNjMxMDI3M2ZmOGVlMzY3NzE5MzgzMDk3IHJlbGVhc2UyNC1tYWludAorMzk0OTIgOTUyMWUzODAzODBmMGVhM2VjNDMzZTJmYmI1ZWZkOWFjYTU2NTI2YyBsZWdhY3ktdHJ1bmsKKzM5NDkzIDZiZGU2Y2QyMzk1NGM3MTI1NzM1NGFiMzIzMmE3OTgxZTA4YTlkMGIgbGVnYWN5LXRydW5rCiszOTQ5NCAxN2IxZGZkM2NiYmJkMzNmZWMxNjZiOWU5ODQ3MjFjZTY0MGVmNmZmIHJlbGVhc2UyNC1tYWludAorMzk0OTUgY2M5NDE2ZWU1OGUxOWYyODJhYmQ0YzExYzI1ODFhNzJjOGMxMzQ4NCBsZWdhY3ktdHJ1bmsKKzM5NDk2IGY3Mzc4ZTk3YjY2YTI0Nzg3Y2Q2N2I3ZGE1ZmJkNWEyZDliODA0YjAgcmVsZWFzZTI0LW1haW50CiszOTQ5NyBlNzNhY2NmM2VkZGI0YTMyZjljYzY1MTUwYThhZmQyNDYwNGQzN2I3IGxlZ2FjeS10cnVuaworMzk0OTggMzM2YjY2NGEyMjEwZTkyZDk0YmUxZDk2YjMzMzhhMWI3MGY1YTdiOSBsZWdhY3ktdHJ1bmsKKzM5NDk5IDU4MjQxMzBiN2FjMzUwZmYyN2RkYWRhNTkwYWExNzQzZjM4MTc0MTEgbGVnYWN5LXRydW5rCiszOTUwMCBhN2NjY2MzOTEyMjgwMjJhODJiNzIxMDNmOWVjNDY4ZDYwZWE0ZTY4IGxlZ2FjeS10cnVuaworMzk1MDEgZGM4NTM4ODQ1YjBjODkwZWE3OTI3NTRiNGY1MmRiNGM5OTQ5MDcyYSBsZWdhY3ktdHJ1bmsKKzM5NTAyIDM2M2U2ZGQwNzlmY2FjMzk3ZjNlOWQxMzZiYjM1M2NiMjdlMzQwNmMgbGVnYWN5LXRydW5rCiszOTUwMyAzOWRiZTNiZTMyN2FhYWZjN2JhNGM5ODQ4YThmYTUyNTI4M2Q4ZDNkIGxlZ2FjeS10cnVuaworMzk1MDQgZDUwNGEzMDJiZjUzZTNhM2RhY2I0Y2VkOTRjNzEwOGUwZWNmOTFlNyBsZWdhY3ktdHJ1bmsKKzM5NTA1IGYxN2VkM2I2MmFkYWIxNTY2OTQ3ODM3OGIwZDA4MWNjYWQ0ZDI5ZjMgbGVnYWN5LXRydW5rCiszOTUwNiBlYTUzZTdkOThiMDA2YWEyMzlmOTMzNDMxNzM1ODI1YWZkZTM1Njk3IHJlbGVhc2UyNC1tYWludAorMzk1MDcgZmE3Mzc2NWU4ZWY1MWQ4NTczNjlhZjFjMzc1OWZjMTBkMjg0ZmE3ZiBsZWdhY3ktdHJ1bmsKKzM5NTA4IDQ2ZjBhNDRmNDllNjQzZmU3Y2EyYzJhZDM1ZTc1MGRmZTY5MDhjYzYgbGVnYWN5LXRydW5rCiszOTUwOSA5NjZkZWFjMTVhODkwZGY3M2EwZTZlNTBiYjU4NjI3OGJmOGNiODRlIGxlZ2FjeS10cnVuaworMzk1MTAgODc1NzM5ZDcyZmMxYzdiOTg2ZWU2MDVkZTVjNzk1YjQwZTJhMWFhOCBsZWdhY3ktdHJ1bmsKKzM5NTExIGMwZDZiYWUzNWI0ZTc4ZmEyMGY3N2YzMTYzN2RmMmFiNzU0Y2QwYWQgcmVsZWFzZTI0LW1haW50CiszOTUxMiBlNDFmZGE5ZjBmZDEwMzNjZjE5MWE4YWRlZmI0YjEyN2EyMDE3MTQ4IGxlZ2FjeS10cnVuaworMzk1MTMgN2QwYTVhYzI0NjY5YWI2YmU0NzBhZDk5YWM3MWRiOGEwYTE0ZmZhMCBsZWdhY3ktdHJ1bmsKKzM5NTE0IDgxMjU5MDA5YmEyYzhmMDI0MTExYzczMDhiYzc3NDc2ZTU0NzA4NDUgbGVnYWN5LXRydW5rCiszOTUxNSAyNTM3OGJkYjFiM2EwZGE4Y2RkY2VmNDIwODA3Y2Y5NGUwNmY5ZTM4IHJlbGVhc2UyNC1tYWludAorMzk1MTYgYWNmYzBlMjJjZDhmYzU4ZTZiMjIyNmE2NmRlMGRlYTEyNzlhMmVjMiBsZWdhY3ktdHJ1bmsKKzM5NTE3IDc2ZTI5NWVhNTE1MmM5ODQ2ZjFlMDk2NzNhZTQ3Mjc3OWI2NjhhNjQgcmVsZWFzZTI0LW1haW50CiszOTUxOCAxMWEyNjUwZTg1NjhkYzBhNzUxYmRhNmI4NGQ3ZDA1NmYwMTMwMjhjIHJlbGVhc2UyNC1tYWludAorMzk1MTkgYmJiYjdkZGEzMmYzZWUwODU5Yjg2MjMzYmY2ZjM3ZjU3Y2IyNWFkMSBsZWdhY3ktdHJ1bmsKKzM5NTIwIGQ3OWFmMDY1MTE1NTA2ZmJkMzA4M2ViMDgzMjM0MWYzZWI1OTVlMDUgbGVnYWN5LXRydW5rCiszOTUyMSBiMTljZjczYzU0YTc4MDAxZDZkNmQ1YTEzZGZiMDVkOTdhNzFiMmExIHJlbGVhc2UyNC1tYWludAorMzk1MjIgNzI0YmJkNDg5YWQ0NzI3ZTkwNTJjNjliNTYzNDFiMmI1YjJjZDJhOSBsZWdhY3ktdHJ1bmsKKzM5NTIzIDU3ZjYzMGE5ZGUyNjE5NjE2ZjJiMjBhZTFjMzU3ZmI0M2UwMTI4NTIgcmVsZWFzZTI0LW1haW50CiszOTUyNCA5YjdkMTE3ZWI0YmM5NmRjY2E3NGM2YzhjZWU4YWJjOTE4NDkxOTJlIGxlZ2FjeS10cnVuaworMzk1MjUgMTE3NDRmN2JiNDdhODJkNzhiMzY5ZjliZTM3ZTZmNzMwMGMyOWVhZSByZWxlYXNlMjQtbWFpbnQKKzM5NTI2IDY4YWQ1MmIwNDQ1YmRiN2YyMjhhZWM3NzFjZjc4MzhiNTEzMzM5NDcgbGVnYWN5LXRydW5rCiszOTUyNyA0MTQxM2YyMzM0NWI0Zjc1ZTA0NTY3MTQ4MGI4MDljZDJhM2Q5NmNhIHJlbGVhc2UyNC1tYWludAorMzk1MjggOGE2Yzk5Zjg2NWViZDM5Y2ZlNzljNTBlYWRmODQxNTk5NGYxZGI1ZCBsZWdhY3ktdHJ1bmsKKzM5NTI5IDhhZDlhMmZhOGViMmE2MDc4Zjk2YWYzMGM4M2UyYzU1OWRhYjFlZWQgcmVsZWFzZTI0LW1haW50CiszOTUzMCBiZmJlMmM5YjEyMTU5OGI2ZTVhM2ZjMTU4MjdmMjA0MTQ0MGU3NDFjIGxlZ2FjeS10cnVuaworMzk1MzEgZjIzNWU4ZWYwZDU2OTA0ZmUyMDRhZGFiYTczNzVkZDcyNzJhNjJmYyByZWxlYXNlMjQtbWFpbnQKKzM5NTMyIDA3ZWFmNjBmNzU2NTBiMTcwZjM1ZDM5YjkzYWU1ZjFkYTI5YWRiZTAgbGVnYWN5LXRydW5rCiszOTUzMyBiOGQxYjQ1MjkyMDcxMTYzMzY4YjU3Y2NlNzFiNDBjM2UzNzkzMGUxIHJlbGVhc2UyNC1tYWludAorMzk1MzQgYWM4ODA0NGNkZTQ4NmIwMGEzZTQ3OGQ3Nzg1YjdmZDdhZDMyYmRmOCBsZWdhY3ktdHJ1bmsKKzM5NTM1IGRmYWJmMGM3ZjFhZGZkMTdjNDUyNmNmMmJkOWNhM2RjYjgwMmZiODcgcmVsZWFzZTI0LW1haW50CiszOTUzNiBjODY1NTg4NWU0MDY1ZDM1NTMzODM0OTA5MDkxM2Y4NWNhZmZkZjM1IHJlbGVhc2UyNC1tYWludAorMzk1MzcgNmRiZmJlZTU4NWNjODNmZTMzMjMyNjQ2YzZkNzhhOGNhODRiYjViZSByZWxlYXNlMjQtbWFpbnQKKzM5NTM4IDE1MmFlNzE5M2M5YTc3ZWEyYmEwYzg3YzRjNzQ3NjBkODBiZTYwNTkgcmVsZWFzZTI0LW1haW50CiszOTUzOSBmYTA4ODFmZDQ5YjdhOTUwNWUxNzY5NjVjZmE3YTdjODY0NzA0OTI2IGxlZ2FjeS10cnVuaworMzk1NDAgOGJhZDFiZmMzMzE5OTJjOGUxZjM0OWVkNTJiYTllMTY0NWY5OWIxMSByZWxlYXNlMjQtbWFpbnQKKzM5NTQxIDI2OTFjYmRhZTU5YmYzNTYxN2YxYTMzNjgwNTA2M2VkZmFmNGMyN2YgcmVsZWFzZTI0LW1haW50CiszOTU0MiA5MDkzMGQyZDBjMTkxMDc2YTJhMDI3ZDU5ZGQ3ZjI3ZWYzMzQ5NWJmIGxlZ2FjeS10cnVuaworMzk1NDMgMzVjNDM2NzQwODNhOWEzNDEzM2U3YTBmYTI0ZjMxMjI3NDQxYjFkMyByZWxlYXNlMjQtbWFpbnQKKzM5NTQ0IDFiMjVmZTg4MzRhZWZkN2VjYmVjZGI5MDAzYzQyNjg0OTdiNTlhYmMgbGVnYWN5LXRydW5rCiszOTU0NSBmZDUxY2U4ZDM1YWI0ZmQ0MmFmNWVmZjYxZDAyZGNjMjcwYjQ0M2MxIHJlbGVhc2UyNC1tYWludAorMzk1NDYgY2QzMTAyN2E3MTY3YTM3NTQ4ZjI4NTY3OWM1Yzk2N2EwYmJlYWM2ZSBsZWdhY3ktdHJ1bmsKKzM5NTQ3IGQzYWU3OTMwY2I5Mzk1MzNmY2ZmZDQ0ZDE2OTVkOTM2MmVkMGE0YzcgcmVsZWFzZTI0LW1haW50CiszOTU0OCA3M2ZlMjE2M2YwYjMwZDMzYTAyNmM4YmE2ZDI1MjkwZWE1MjU5MDYyIHJlbGVhc2UyNC1tYWludAorMzk1NDkgNWE2YzQ4M2VkNjg5ZjQxMDU4Nzg0Mjg4MjA3ZWI5OTBkYTMxMDQ2YyByZWxlYXNlMjQtbWFpbnQKKzM5NTUwIGMyOGQwZWQ4NmZmMDU4Yjk4MTAwZTZiNzcxMzA0ZDQyZDExNTE2OTggbGVnYWN5LXRydW5rCiszOTU1MSA4ZWY1MDBjNDUwNmM3MmI3NGJmOWZhMDUwMGE5NTlmZGQzZDUwZmY1IGxlZ2FjeS10cnVuaworMzk1NTIgZjRjMmM2MWNiNTYwOTU5NTI5OTQxMjcyZTE4MGRlNDYzMjYxZTI1YyByZWxlYXNlMjQtbWFpbnQKKzM5NTUzIDM3ODU5YzZhZDViYjVmN2ViYWQxOWExNjlkOThkZWE0MjZjMTIxNTIgbGVnYWN5LXRydW5rCiszOTU1NCA1MmM2NWQ3M2ZiNzQwMTlmNmY5YWI1NDdjMGZiMTg1MTA5YjJiMGJmIGxlZ2FjeS10cnVuaworMzk1NTUgMDk4ZWExZTE4ZThkOTc2MDRkOGY2ZjE4ZDBhZjlkYTFhOGEzNWI5MCByZWxlYXNlMjQtbWFpbnQKKzM5NTU2IDBhZTMwNzIxMjc1NTBhZTI0Yjc0MmYxYjMyYmNkMWM0MTUyYjEyZmIgcmVsZWFzZTI0LW1haW50CiszOTU1NyAwZGEzOTc1ZmIwYmJmY2Y3ODJkOGMwZjY3ZTY1ZTUwMmIxMDZhNzQ3IHJlbGVhc2UyNC1tYWludAorMzk1NTggZTYxMTlkNTc3Y2QzNWZkOGQ1Mzg1ZTUwY2MxZmRhYmU0Y2JlNDc5NSBsZWdhY3ktdHJ1bmsKKzM5NTU5IDAyYThjMDY0M2Y1YmNlMjY2YmVhYjc1MGFiOTFjNzAzNmVmNzgxN2MgbGVnYWN5LXRydW5rCiszOTU2MCAxY2YxNzAzN2EyY2E4Yzc1ODE3N2NiN2RhYTE0MWEwMzhhNDYxODIzIHJlbGVhc2UyNC1tYWludAorMzk1NjEgNWYyNzg1NzIyY2JhZDAzOTQxYTIxNjc3MTY3Yzc5NmY3M2YzZmVhMiBsZWdhY3ktdHJ1bmsKKzM5NTYyIDQ4MDZjYjAwOWE5Y2U2MjNjZWY4YzFhMTFhYTk4MDEzZDM0MWE2MDIgcmVsZWFzZTI0LW1haW50CiszOTU2MyA5YTJlMjAzMThjOWY1ZmJkYjc4YTkxOTQ0YWYwODhkOWVmY2NkM2FkIHJlbGVhc2UyNC1tYWludAorMzk1NjQgNjIwOTkyYWEwYTllZjU4M2QzNmJmOTNjNGMxMTljZGMyODJlYTA5NyBsZWdhY3ktdHJ1bmsKKzM5NTY1IGI2OGIxMzViNDU1MjYxZDI4Mjk5NzA3YzY2ZTUzMGNmOTA4NzQ5ZDYgcmVsZWFzZTI0LW1haW50CiszOTU2NiBiY2QwNWNmMmQ2MWJhODBjZTliNTc0YjkzODdhMmRiMzI1NTNmNmU3IGxlZ2FjeS10cnVuaworMzk1NjcgOGNjYWQ3MzIzMTVmODkyZGI1M2IzZGI1MTlkNzdlOGQwMDRlNGFjZiBsZWdhY3ktdHJ1bmsKKzM5NTY4IGFmZGFkZDU2OTE5NzA1YzFlMTkxOTUxZjJiZDRjYjU0YTNiNzA3MTcgcmVsZWFzZTI0LW1haW50CiszOTU2OSA1YzBjMDZlMjI2ZWMwNmVhNjRmNGE5MDZkMzY5MWU2MDcwODA4YTdiIGxlZ2FjeS10cnVuaworMzk1NzAgNDBkZGYzNjZmNWExNTJmNmJkMjBlOTgyMDkyMTkyOWJkOTJjZjM0MSBsZWdhY3ktdHJ1bmsKKzM5NTcxIDliOTk0YzY3ZTkwOWMwODZmMDI2MTcxMWI5OWI2NGE3NzRiOTEwMWYgbGVnYWN5LXRydW5rCiszOTU3MiA4NzNhMWIyZWZkYzczNjU3NmRhMDQ4NDgxNGNmNjU2MDg5YzAxY2VkIGxlZ2FjeS10cnVuaworMzk1NzMgMmMyODBlNDY2MWQwYTA2OTQ0NGNhMjEwMTRiNWE0YWQ1NjZmZjdiYSByZWxlYXNlMjQtbWFpbnQKKzM5NTc0IDM5ZWI2YTIyMWNmMzEyNDIyMWExNGIzOGU2M2Q0OTkxY2YwY2Q4ZmIgcmVsZWFzZTI0LW1haW50CiszOTU3NSAyMWJjNjI2MmViOTkyMGFjOGMyZTU3ZWExZTNmMGJmYzdkZTZhMGE4IHJlbGVhc2UyNC1tYWludAorMzk1NzYgODljZjJlM2ZlNzI4YTY4ZjRiYzY2ZmNhOWMwYWY3OWUwZTA4NWE5YSBsZWdhY3ktdHJ1bmsKKzM5NTc3IGY4NmNkMjc3ODZhYjMxOWI3MzY1NTEwYjU2MDUwM2Y2NjVhMGZhYTYgcmVsZWFzZTI0LW1haW50CiszOTU3OCA3NzU3MWY3MWIzZTY3YjBiZjNmNWQ4OWE0NjNjYmUzMDUwMmI5MzBhIHJlbGVhc2UyNC1tYWludAorMzk1NzkgNWE4YmY4ZTdkMDEwMmMwZTBiMWVmZGQ4MWFkMDBiNzIwNzFmMjFiZSBsZWdhY3ktdHJ1bmsKKzM5NTgwIGE2NzBhNWRkMWZjNmFhOTE3YmI2MmFkNDU2MDRjM2ZjYjY4M2Y0OWEgbGVnYWN5LXRydW5rCiszOTU4MSAyM2RkYTkyZGU5OTM4YTI4ZmY1NTVlYzgxMzhmOTQ0NjBiMzEyMDUxIGxlZ2FjeS10cnVuaworMzk1ODIgMWYyMzZlNTk4YWU5NzYzMWQ0ZGI0NDcyMzAyNTAwZmYzMzg0MWMzYiBsZWdhY3ktdHJ1bmsKKzM5NTgzIGFmM2EwNjYyNWE2ZTU5YzJkYmY5MmI0MGVhYmI3NGJjMmQ0NTY4MWIgbGVnYWN5LXRydW5rCiszOTU4NCAzNWE5OWVjY2FjYTY3OTMyNmY1ZTVjOTkwYjNiOWY2YTY5NGNmOWJkIGxlZ2FjeS10cnVuaworMzk1ODUgZWNiNzg4NjNhNGVlN2YzMTQzMmI3OWZjYzE0MzYxNDljMDU1MGRjMSByZWxlYXNlMjQtbWFpbnQKKzM5NTg2IDdiMmI4ZGI5ODEzNjMzNTA3Y2U1OTY1ZGYzODdkMjQ1NWI3ZTA0YjIgcmVsZWFzZTI0LW1haW50CiszOTU4NyBjNmQ3ZjFmZTlkMWViZTkxYTZhYmI4ZjMyNWUwYjhjZTU5MjBkOGZmIGxlZ2FjeS10cnVuaworMzk1ODggOTBiYjcxMTIyMjU3YzExMjNjZWM4OWI1NTA5YjdiOTI4MWVmY2Y0NiByZWxlYXNlMjQtbWFpbnQKKzM5NTg5IDRkMWJkOWQwYzAwNmRiNjYzZWNlNTc5YzhhMjQwZWU2YmEzN2IwNzMgcmVsZWFzZTI0LW1haW50CiszOTU4OSBkMDJkMzg3NTU0ZTIwMGJlZmNlZWM5OTliNzg4ZjQ1OTNiNDM0YjQ5IHJlbGVhc2UyNC1tYWludAorMzk1OTEgNzA5MjdjNzk5YTIxZTI2YjNiNWNkMGY2ZmMxMDVjYmFmOTcxY2RmNCBsZWdhY3ktdHJ1bmsKKzM5NTkyIDhmZmVlZGI2MDZkMzMwY2RkM2E0ZDE2YmE2NzZhMWE2ZWEzMGI0Y2MgcmVsZWFzZTI0LW1haW50CiszOTU5MyA2ZjNkMjA5NTU1ZWI1NWZmNDhmNTVhMWQ5NDVkNGVmZjBhYTIxZTQ4IGxlZ2FjeS10cnVuaworMzk1OTQgNzI2NjBjMDg2NmExOWYwMDM2ZTcyMDgxNzk4YmViYjhmNmUxZWYxYSBsZWdhY3ktdHJ1bmsKKzM5NTk1IDc3NGJmOWEzOGIyYWI5NDY2NmM1ZmI2NTRkYTRlMjRlMjRhNWNhMzYgbGVnYWN5LXRydW5rCiszOTU5NiAxN2E4MmJhNDU0NTJhYzFiNWExMmRlOWRkZDQzM2NmYTYzOWEzNzVkIHJlbGVhc2UyNC1tYWludAorMzk1OTcgMzk5YzQxMTc2YmI3OWEyZjI0ODVjOWQ0YTM4MDdhOGMyMDk1ZDRhNSByZWxlYXNlMjQtbWFpbnQKKzM5NTk4IGE5NTc2NWY2OTI4MjUxZDg2ZjBkMTM1N2ViNDY2NDFhYzQ4MzM5MTIgbGVnYWN5LXRydW5rCiszOTU5OSA0ZTBkMmE3ZjVmMTU0NDFiZGMxNTJmYjFlMGNhNGUwMGFmZmMwNWY3IHJlbGVhc2UyNC1tYWludAorMzk2MDAgNzc3YjI5ZDkxM2E2MjJhMmU5OWY4M2E3ZWVhMjNlYWZiMGY2NzA5YSByZWxlYXNlMjQtbWFpbnQKKzM5NjAxIDQ5NWU3ZmZhZDdlOGNjMDY0N2JmZTJkYzMwNGU5MGNjZGVmYTNmYzAgbGVnYWN5LXRydW5rCiszOTYwMiA2ODdmYWE5Y2Y2ZWIwOGMxNjJlZTM5MmY1NTA0ZjQ4OGJjMzI2NjMwIHJlbGVhc2UyNC1tYWludAorMzk2MDMgYzI2MGQzYjdkNTgyOTgzMDQwM2QxNWZiZDU0YTc0NDg5NjA0OGM4OSByZWxlYXNlMjQtbWFpbnQKKzM5NjA0IDAzY2ZkY2JjNGQxZjNhMzUzZGMzODUwN2ZhNDBjMmZmNzNkMmEwYTEgbGVnYWN5LXRydW5rCiszOTYwNSA0NWFhYTQzNmI5NDUxMjYwNjMxMjQyMjBiYmQ1MThlYzg4ODM3Y2JkIGxlZ2FjeS10cnVuaworMzk2MDYgMzAyOGUzMGFhODM1NTkwMzVjZWYyNzJiNDdkYmIwYjdkYmIwNzEwMCByZWxlYXNlMjQtbWFpbnQKKzM5NjA3IDI3ZTE0MjZiN2YzMWQ2NDJlNDExNGEyZmJmNjEzZDhkZjY0ODRmMjQgbGVnYWN5LXRydW5rCiszOTYwOCBlMjIzMzRiMWRhNjdmYjI5MTZlNjg2ZDNjNGRmOWNlNjNiNWM5N2Y3IGxlZ2FjeS10cnVuaworMzk2MDkgN2RkNGU2Y2I5ZDI3NTI4M2VjNTgwYWI3MWNmYTNjNjE5ZTEwYWZlZCBsZWdhY3ktdHJ1bmsKKzM5NjEwIDY4ZGJjYmYwNTE2YzU3NjU4NjIwNzkzZTI4NDYzYTc4MjIwODk5NjUgcmVsZWFzZTI0LW1haW50CiszOTYxMSBlMzE1NjRjN2JkYmY3YTI2YjNkODMxYWU4MDhhY2ZhYzU2MTcxODYwIGxlZ2FjeS10cnVuaworMzk2MTIgMWU3Yjc1NTE5NGE0ZGRiNzQ5NWU0MDgxY2VhNjc3YTlmNTEzMTQzNiBsZWdhY3ktdHJ1bmsKKzM5NjEzIDQwN2FjNDk5YTVhMzkxZjY2MGU0Y2Q2NWEzZGUzZTlmMTkyYTI1OTIgbGVnYWN5LXRydW5rCiszOTYxNCBlMGE5ZjY2YjcwMTQ2NzE2YjZjMTc0ZWZmZTE2NDM4ZGZkYTllNDcyIHJlbGVhc2UyNC1tYWludAorMzk2MTUgYWU1MzZlNjZlODZmNWYwMWMxOGNkNDI1ZTAyZGZmNjdkZjc3MWMzMSByZWxlYXNlMjQtbWFpbnQKKzM5NjE2IGI2NDYzOWNlYTNlZDg3ZmZmNGVjMGU0YTkyYjZlNDMxNWJiYjdjY2QgbGVnYWN5LXRydW5rCiszOTYxNyBmNWJkN2VhZDE2YzQ3MjM3MWQ1NWFhMTlhZTI0MDM2OGQ5ZWQxZjZkIHJlbGVhc2UyNC1tYWludAorMzk2MTggNGFlN2RhYWYwYTY2MTE4ODQ0OWFiODNkZmE5YTM3NmNkYWQ5OGE4MSByZWxlYXNlMjQtbWFpbnQKKzM5NjE4IDhkMzcyNzZmZGYwNzdkNmQyM2Q5NjNkM2Y3Zjk1MzgxZDAwZjE5MjYgcmVsZWFzZTI0LW1haW50CiszOTYyMCA2YjQyZWViNTIxNGRhOGEwMzIyZDMxNjJlNTNmZWUzMTkyYjk3Y2M0IGxlZ2FjeS10cnVuaworMzk2MjEgOGYyYmYxODY3NGNiZTkzMjgyMGYzZTlkNDBkMmEyODNhMWRjOWJiYiByZWxlYXNlMjQtbWFpbnQKKzM5NjIyIGQzM2Y0ZmM4NGQ0YWYyYjE5ZTYzZjYwMzIzNWE5MTQ5NzhiZWNjOTIgbGVnYWN5LXRydW5rCiszOTYyMyBjMzc4M2ExMmExYmMxOWQzZDBlYjI4MTI0ODc3ZTIxYmVjMjhhMzJhIHJlbGVhc2UyNC1tYWludAorMzk2MjQgY2E4NDQ1MTdjODQ5NTJjNDU2NDMwYmQ1NWI2MDRiMDM3MGZlZjU3NCBhc3QtYnJhbmNoCiszOTYyNSA2YTIwODMxZDM1N2Q1N2NkNjI0YmFiOTBkZTM3MzNlNTFlYjUxMzEzIGxlZ2FjeS10cnVuaworMzk2MjYgOWVmMjVjODlkMGQ2YzMwNjljZDgwYWI5NTk3YzBhMjcwMGUxNjE1NyByZWxlYXNlMjQtbWFpbnQKKzM5NjI3IGI1YTAxMjgyZGFkYWZjOTljY2E0ZWE2MTEyMzQ0MDUzZGI4Njc4MWEgbGVnYWN5LXRydW5rCiszOTYyOCA4ZWI3NWMyOGVkOTQxYzQzMmY1ZDEzZGMxNTBmYzM3Y2RiNTYxMDgyIHJlbGVhc2UyNC1tYWludAorMzk2MjkgYTJjZjI1NjQyYzhlY2RmOTZhODg2ZjQyM2ZkODYyYWI3MzUxYjhlZSBsZWdhY3ktdHJ1bmsKKzM5NjMwIGNiYTEwYzZkMzRlMzg1OTNlNjZkNmE5NjhkNTFlMGI4N2JlMDEwYjggcmVsZWFzZTI0LW1haW50CiszOTYzMSBhODNlOGRmMTM0OTg2MmFmMzE4NGE2MjE5ZGU1NDdlZmE3ZmVmN2YwIGxlZ2FjeS10cnVuaworMzk2MzIgMWQ0ZDg1YzczNWU3YzRmOGExOWU2MGVkYTYyYmNiNTExNGZkMmM2NyByZWxlYXNlMjQtbWFpbnQKKzM5NjMzIDZkMDRjYjJjZGQ0YWZjY2FmNTg4YzRlYWU0YWFkMTI0ZTViZmU5OWYgcmVsZWFzZTI0LW1haW50CiszOTYzNCA4NTY1MWViM2Q5YTkwZDEyMWEwZjQyYTViMDRiNzQxMmYxNTM2ZTBkIGxlZ2FjeS10cnVuaworMzk2MzUgNjc4NDhjODcxNzY4YjU1OWMzZjIzNGE5NGY5NmJiNGZmYzJkODdkNiByZWxlYXNlMjQtbWFpbnQKKzM5NjM2IDU2MTFkYjQ1MWEzOWJhMmVmN2I4YTUwYmMyYWEyNDU4NjBjYmI1ZWYgbGVnYWN5LXRydW5rCiszOTYzNyAwYmUwMDc3NWE4MGM0NTFjMDUxNjAxYTljNDA1ZDc2NGFmZjNjNDMxIHJlbGVhc2UyNC1tYWludAorMzk2MzggZGM1ZDcwNjI4M2Q2MmZlYmM0NTg3YWJkOWI5YzI5MmJlMjIwMmYzYyBsZWdhY3ktdHJ1bmsKKzM5NjM5IGI4ZTU3MWU2ZGUyZTNlNTc2N2ViMGVhYmQ2NTBhMmI5NjU0ZTdlNjIgbGVnYWN5LXRydW5rCiszOTY0MCBlNDU0ZDZjMWIzYzFmM2ZjM2MzMTcwMGI4NzBiYWMzNDNjNGU3YjFkIGFzdC1icmFuY2gKKzM5NjQxIDYzMGZmNTQ0MGRmYzZlOTQzY2Q0MzEzNWM2ZTg1YjdkOTY5MjQ3NzcgYXN0LWJyYW5jaAorMzk2NDIgNzUzNDU3ODc5NDI1NTkwYTQxMzU5NjA4ODAzMmExZDhiZjVmMGMxMSBhc3QtYnJhbmNoCiszOTY0MyA2YzNkMGEwYzE5NTYwMDg3YjU0MzUzZDI1NDZkYWU0MWVjOGNiZDhjIHJlbGVhc2UyNC1tYWludAorMzk2NDQgODQ1NDE3MzFiMTY2YTZjNDU1M2FhOGNmYmM5ZGY3OTdmMDFmOTcyOCBsZWdhY3ktdHJ1bmsKKzM5NjQ1IGY2YTIwOWI2OTUwY2FiNzNhYTAyMmI5OWI1N2IyNTJjY2JmYTk1ZjggbGVnYWN5LXRydW5rCiszOTY0NiBjZWVkMzNlYWM0MzYxNjgxMmEyNjcxZWVhNjVkODNlYWY4Zjk3ZjQ2IGxlZ2FjeS10cnVuaworMzk2NDcgNWQ1MjM2ZWFlOGJkM2Q2MGRmODAzOGNmNTk3ZTA2MDYzNDQxNWQ0YiBsZWdhY3ktdHJ1bmsKKzM5NjQ4IDQxMmQyMWUzMGMxMzBlMjI3NmI5ODQ3MDg5YTYxNzU0OGZlODdjZTMgcmVsZWFzZTI0LW1haW50CiszOTY0OSA2MTJhMTIxNzhlNDdiNzA4NGM2ZTEwM2Q1MDk1ZTBmMWVmNDY5MTJkIGxlZ2FjeS10cnVuaworMzk2NTAgZDE0ODEzZTc4YTUwMGZiMmI5MWFjNTRjZTVjYTFkNGQzMTkwM2Q2NyByZWxlYXNlMjQtbWFpbnQKKzM5NjUxIDlkNDMzODFjMTg0Y2JiYmM3ZGFjYzJhMjZlZDVlMDA4NWE0MDlhOWEgcmVsZWFzZTI0LW1haW50CiszOTY1MiBlMWRmNDhmMjg0N2FkOGU4ZGRmNjAyYjdmMjk0MDlhNjhlYzlhZjliIHJlbGVhc2UyNC1tYWludAorMzk2NTMgZTliYWUyZmViYWM4MDBlMDNiY2JjZWI3YjRlNDhhYWEzZDA5NzI1MCBsZWdhY3ktdHJ1bmsKKzM5NjU0IGYwOTUxZmRhZWQzN2MwYWYzMzg1OGRhMGE3ZmQ0MDZlYjE0NmFkNDQgbGVnYWN5LXRydW5rCiszOTY1NSAxNzJmY2Q5YzE5NTI2MTVjODFmZDBjYTgxZDhlMTBlNTU1MDZmY2Q1IHJlbGVhc2UyNC1tYWludAorMzk2NTYgOGJkZDhjMmM2YzQ5NWY4YTZmNThhNDFmZDU0YTZkNjMyMTZkNDlhNyBsZWdhY3ktdHJ1bmsKKzM5NjU3IDNlMGJiN2Y3NWFiNzY1YTljOGE1N2I5MDExYjgyMTlhN2Y2MTVjMDkgcmVsZWFzZTI0LW1haW50CiszOTY1OCBlNDY2YzBhNTUwYjg4Y2I4N2JhNDJhNTFiYjM3YmVjZGUyODdiMTk2IGxlZ2FjeS10cnVuaworMzk2NTkgMDJmZTVkNDk2ZmNlOTkyNDZjNjNiNTIzMGEyNzJmMmRkZGJmYjRlZSByZWxlYXNlMjQtbWFpbnQKKzM5NjYwIDY5MDdlNDcxYmRhY2U0MDBkMjMwYTA5NGM2ZjYzMDY3NmU0YTI0ZTcgbGVnYWN5LXRydW5rCiszOTY2MSAzYmU4MzUzNTAwODI4NjJiNWFlNjg4M2RlYjQwMGYyZGNjM2UwZWJhIGxlZ2FjeS10cnVuaworMzk2NjIgZjk4NzkyMzc4OTU0MTdiN2RkODUyODExOWJjZjQ4NjdkOGE4NWU1OCBsZWdhY3ktdHJ1bmsKKzM5NjYzIDI5ODVlNDJlYjJkMmIwOTFjYWQxOGE2MmYzZGZlYmI0Yjk5NWY0NzQgcmVsZWFzZTI0LW1haW50CiszOTY2NCAzMzBjMjMwNzUwNTQxOTEwNmY3MTY3MzZlMDEyMzE1MDBmZjFiYzJjIGxlZ2FjeS10cnVuaworMzk2NjUgMmZkYTdiMTc0Nzk0ZDljMDA3OGU5YjY1NzVmZTA4ZmQ0MWZjOTlkNCByZWxlYXNlMjQtbWFpbnQKKzM5NjY2IDU0OGJhZDIxNTQyOWYzOWFmOTM3MzdlYTE5NWI5NWRkYTAyYTgyYjMgbGVnYWN5LXRydW5rCiszOTY2NyBlMjk5NTU2MzYxMGY3MTc5NGVlZGM1ZjlhYmNhZDAyMWNlMDhiOGI1IGxlZ2FjeS10cnVuaworMzk2NjggN2E3ZTg3OWIyYWExYjJlMDU5MWViNTQ0Zjk4YTRjNmI4ZWZmZmJmYiBJRExFLXN5bnRheC1icmFuY2gKKzM5NjcwIGI2MWNkZDRmODg4YmY5ZjYxMjhmMzY2MjI1MTM1OGYxMTEzMGRiMTQgbGVnYWN5LXRydW5rCiszOTY3MSAwOGE1NTFlNzU2MWNjMmI0NjNkYzc3MjVhZmEyOGJkMmZlYjM4NGQzIGxlZ2FjeS10cnVuaworMzk2NzIgOTVjMGRkMTFhZmE3OGQyYTVmZTE4YzY0MjU2NGJjYWI3NDRmMTU0NiBsZWdhY3ktdHJ1bmsKKzM5NjczIDU4NmI0OGUzY2I5OGEwMzNhM2Q3MzExMjBhYmIwMTZlZjgwYTQ2MWMgcmVsZWFzZTI0LW1haW50CiszOTY3NCA5MjFhZmQwOGE1ZGNiZDQyMDEyOTg3ZThiMmI3Y2RlMzlmMGQ4MTkyIHJlbGVhc2UyNC1tYWludAorMzk2NzUgZDBhZjdiMDk4YTk5ZDYyZWViMmU2N2Y2MTczYmMyODcwNmIwOWM0YiBsZWdhY3ktdHJ1bmsKKzM5Njc2IDkyMzcyM2E5YzQzY2I5NmU4MTg1MzJlMDMyYTE5NTcwZjUxNWNiY2UgbGVnYWN5LXRydW5rCiszOTY3NyAzNTcyMjQ5YzFlNzcxMDI5NDI4OGQxY2Q1OTk2MzIzMzM2ZTRhMTczIGxlZ2FjeS10cnVuaworMzk2NzggZDQzZGZlNjk1ZDA4YTRhNzQzYjZkZTI1MTc3OWEyMzQ4YTk0Nzk3ZCByZWxlYXNlMjQtbWFpbnQKKzM5Njc5IGUxNmI2YmRmM2Y4OTlhN2Y3NmI4MTczZGI1ZGI3OTNkOWU0YTRlM2QgbGVnYWN5LXRydW5rCiszOTY4MCAyMmE3MjBiMzUzMTRkMDEyOTlhZGFlYTZiMmZhMDUxMWEzYjMzMmMyIGxlZ2FjeS10cnVuaworMzk2ODEgZTc4ZTg0ZjFhODI0ODdmY2M0NTNlYzNlNDRkMWViY2ZjNWI4MjlhOSBhc3QtYnJhbmNoCiszOTY4MiA3NjYzNWFiN2I3MDc0ZDg1NjM1MWJiYjg3ZDM0ZGY5N2ZjMTllYjA4IGxlZ2FjeS10cnVuaworMzk2ODMgYTY0YmUxMzhmMGY2YzQ4MDYwZDY0M2RlODk0ZjkyODE0YmRlNTMwNSByZWxlYXNlMjQtbWFpbnQKKzM5Njg0IDZlMDRhNTU3YWUyMGNkNmVmYzJkY2I2ODE4YzdiMTQ3MDg4ZTBjZGIgYXN0LWJyYW5jaAorMzk2ODUgNGUzOTg4MzczNzNjOWFkNmUzNzUxZjU5ZDhhMzQ3NDA5MDU3MTcwYyBsZWdhY3ktdHJ1bmsKKzM5Njg2IGFhZTM3NDMwZjUyNTk2MzQ3N2EwYzVhYWMzYTEzYmZhNjBkNjM0YjQgYXN0LWJyYW5jaAorMzk2ODcgODU2N2ViMjNlNjVkZWI0ZjNiMTM2YmMxOTU3ZWQwZGIzYzkzYzYzMiBhc3QtYnJhbmNoCiszOTY4OCAwZTY5MDc4Y2FkOTAwZmQzN2EyNTUzYjdlODdiMDliMzNhZGE0MDgxIHJlbGVhc2UyNC1tYWludAorMzk2ODkgNTY4NWVjNTlmMzViODQxMzAyMWYxNDNkOGU4NDYzOTZkMWNmZTU2MCBsZWdhY3ktdHJ1bmsKKzM5NjkwIGFhYjFkNWZkZjY0ZGY2NTZlZGYzYTI1ZjM2M2UyZDEyNzg3NTIwMWYgbGVnYWN5LXRydW5rCiszOTY5MSA4ZTg2ZGJhZDhjNzE0ZTk4OGM4YTA5MjFiOGIxZjdmZTEzYWFhMWI4IGxlZ2FjeS10cnVuaworMzk2OTIgNTljNGE2NTY0MmM1NjdhZDgwYTM4YzU1NDdkNWFjMDI4NDc4NjlhOSBsZWdhY3ktdHJ1bmsKKzM5NjkzIDZlNzBlZDZkZmFkNjc1Nzk3MDliMjIxOTdiN2UwOTkxMGU2ZjZhNGQgSURMRS1zeW50YXgtYnJhbmNoCiszOTY5NCBlOWUzMGQ5Mjg3MWU5YTI3YWEzYTY3NDQ1MDJhYWY3MmY2YWMwODg5IGFzdC1icmFuY2gKKzM5Njk1IDdiMzVjMjkwNDBjOTkyZmFiZTk0MjRlMzQ3ZWRmZGZjZWMzMWUxNjcgbGVnYWN5LXRydW5rCiszOTY5NiA3YjdlYjNlNzYyMGRmOTEwMDE4OGIzYjljYTMxOGE2NjIzMDUxMzQ2IHJlbGVhc2UyNC1tYWludAorMzk2OTcgNzJmZWJlZTU4ZTdiOWUzNjgwODA1YWI2YjE5YTQzZGUyY2UyMzJhMyBsZWdhY3ktdHJ1bmsKKzM5Njk4IGMzOGU0ZWM3YjdmMTFkNTZlM2NjYTM0MzZjNjJjMDU0YTkwYWYwYWYgcmVsZWFzZTI0LW1haW50CiszOTY5OSA3ZTc5ODliNmFjMzZjNGI5MTU1OTdhOGJjZWFmNDNmMGQzYzBhMDNhIGxlZ2FjeS10cnVuaworMzk3MDAgNWE2MjY4NmY3ZGZkZjY0ZWI2YzEzZWYzM2VhMmRiZTM1ZWZmZjdhNCByZWxlYXNlMjQtbWFpbnQKKzM5NzAxIDMwN2I3ZWVlM2UzZDkyMjA3M2E2NmM3YmU0OGM5ZThlYzNlYTE1YWYgYXN0LWJyYW5jaAorMzk3MDIgZDk0N2ZiZWMzNWQzZjA0ZjE0OGRlNGYwYWY0ZmY4MjZmOTA1YmIzYSByZWxlYXNlMjQtbWFpbnQKKzM5NzAzIDcyNTk1YTYxNTU3MWI0MDY3MWU5MzNkMjMzMWU3MmM2YzE3MmZiNDEgbGVnYWN5LXRydW5rCiszOTcwNCBjM2Q2NGJjN2Y2OTYyMjg2ZDRhNDBiMDhjNzUzNDNiZjM1Nzc0NGYyIGFzdC1icmFuY2gKKzM5NzA1IDU3ZjYyZTVhMzkyMTY2NjAwZTRjMDc2YjYwNWY3ODk5ZTZhYzFiMmYgYXN0LWJyYW5jaAorMzk3MDYgYzdhN2UzZDFiZmE3MGE0MjA4ZGQwOTc4MWJjNTkxYTcwOTA3MzI2NSBhc3QtYnJhbmNoCiszOTcwNyBhYzdmNTQwNzI0NmY0MGZkM2ZhZDQ4ZDUwNjllZjU5MTZhYmE1ZTYzIGFzdC1icmFuY2gKKzM5NzA4IGVmN2NkZGViMzI3Y2M4YzRjZDcwNTU1ZDQ1MDE0ZWNkM2I3ZTMzNzkgYXN0LWJyYW5jaAorMzk3MDkgYjEwODFjNDk1ZDQ2NzMzYmJmYTdkMmJjYTNiMTMyMDgwZGRhNDdkZCBhc3QtYnJhbmNoCiszOTcxMCAxNzQ1YzJlZGM1MTRkOTIzMmNlNTRmOTUxZTk3NDI4ZDBlZWFmYWZhIGxlZ2FjeS10cnVuaworMzk3MTEgYTQ0MjliNzc4N2Q0NGU1YjliMmY4NjEyNTFlMjBkMWM2ZWVjZmVkZCByZWxlYXNlMjQtbWFpbnQKKzM5NzEyIDIzNDJjZGI5MjY5NTZiMmQ4ZDhkZjMwNTNjNTc1ZjBlNmM0MWZlYjggYXN0LWJyYW5jaAorMzk3MTMgZWNlNWViNmYyYjVhMzNkZDI4YTkxNjVkZjJiMTE1NjRkYmM2NGZlMiBhc3QtYnJhbmNoCiszOTcxNCAzYmQ3NDgyNGEzYWNkMGExZTQwNmI1MzlkY2JmYmRhMzdiMDZlZDQ5IGFzdC1icmFuY2gKKzM5NzE1IGQyMDQ0ZTVhMDZjN2U2MzhhMmNhM2FiNzBmN2QwMjUxZTliMzRiYzIgYXN0LWJyYW5jaAorMzk3MTYgYTRiZWM3YjZiNjQwNWIzZWFhYzI4ZTQ1ZjIxNWU4NGRjOTJhNTFjMyBhc3QtYnJhbmNoCiszOTcxNyAzMGU4OGExNzVmZGM5MGM3OTc1MThkNjlkYzljM2ViZjY3ZDQ2OTk0IGFzdC1icmFuY2gKKzM5NzE4IDUyNWRhYzBkMjg1YmYyZTI0ODgwMGM1MjNkZWNiZDJkMGQ2MDZhN2UgSURMRS1zeW50YXgtYnJhbmNoCiszOTcxOSA3NmI5MWFjYWQ1ZTg4Y2NmNzI0YzRhZjE0NGUzNmU0OGIxYWNlMDM3IGFzdC1icmFuY2gKKzM5NzIwIGJjN2Y2ZGVhYjM0MGFlNzU3Mzg0NjJlZTdjYmFkZGFmOTRlOWJlZmQgYXN0LWJyYW5jaAorMzk3MjEgZGQyOTI2MWNiNDM4MjBlYmQ5YmU4NjBjNWE0ZTc1MzI4YmNjY2U3OCBhc3QtYnJhbmNoCiszOTcyMiA5ZWI0NDFhNzA3MjQ2YmRhMWU3YWYxZGIzODEwMWVhNjE5MzBmMTVmIGFzdC1icmFuY2gKKzM5NzIzIGNkYTg3MzU3MTg1ZmI5M2NmMGE3OTMwY2NjOGMxNzFmM2IyZDdkOTUgbGVnYWN5LXRydW5rCiszOTcyNSA1NjY5MzA3YzEzMWM1Mzg0NjY1NmFjZTlhNmYyOWMxYTE2OTk2OTRiIHJlbGVhc2UyNC1tYWludAorMzk3MjYgNDJkM2E0NDAwZDM4NjZjYTg2NDVjMGZkZDY0NjNlMjNkOGVmN2QxYSBhc3QtYnJhbmNoCiszOTcyNyAyMTYxMWZmNTU4YTUwMjM4M2I1NjllYmFiOTI0ZGI1YzlhNTBmNDczIGFzdC1icmFuY2gKKzM5NzI4IGFlNTM5YWY0YWZjNTAxZDQzOTZkMTJlZjYwY2I0NDM5YjQ0ZGQwMDQgbGVnYWN5LXRydW5rCiszOTcyOSA2MGRmZTJmNTVjMGY1M2ZjNjQ5MTY4YTc1MWVkZjNmZjQ5OWIxODFhIHJlbGVhc2UyNC1tYWludAorMzk3MzAgNjY3OTJhMmVmM2RiZDA0M2NhNGU5NmQzNzQxYjQ3YWM2NGY0Mzk0NSBhc3QtYnJhbmNoCiszOTczMSAwNmFkNjM0NTY0OWZkZGI2YTQ4YWFiNjI3YzhkZGIwNWNhOTllNzJjIGFzdC1icmFuY2gKKzM5NzMyIGQ3ZjQwNzA5ZTE1ODU0MGRhZmE3NTYxODA5MTNiNGVlNWY0OTJlZjEgYXN0LWJyYW5jaAorMzk3MzMgYmI1YmE1NDM1OWU1YmNkMzgyZjk5ODk3MjAwNzRhNTBiYTRkMTQyMyBhc3QtYnJhbmNoCiszOTczNCA0OTZlYjVkZWQ1ZTQ1YjNlYzgyNGQzMzJmMjRkZjk0ZWNjMDlkOWY5IGFzdC1icmFuY2gKKzM5NzM1IGM5ZmE4NWI0MDUzYjc1Yjc5MjQ5NDY4OGNiNTM2MzljNjI2NTgzZmEgbGVnYWN5LXRydW5rCiszOTczNiBlYjJjMDlkODc4NzAxODNmNzlmNzQ0OWViNjRjMzNlZDZjOGIwZDg2IGxlZ2FjeS10cnVuaworMzk3MzcgZmUxMDM3M2NmOGEyNzFkZGFiZDdkNTlmYjFiOGU0ZmZhMzM5MDlmZCBhc3QtYnJhbmNoCiszOTczOCA4M2YyNDVmNzI4MzJlMzkxZjhmZWE0YTJkNGQ3MDIzZGFhNjM5OGIyIGFzdC1icmFuY2gKKzM5NzM5IDUzNjU5MGMzMjMxMTg1MmEzM2ExODhmY2Q3MWVkNmRjYzhkNmM5YzIgbGVnYWN5LXRydW5rCiszOTc0MCA1NzQ3Y2VkMzU0MjRhNmYxMDY1YTIwOTcyZDIyMWViN2JiMTBjODA2IGFzdC1icmFuY2gKKzM5NzQxIGNiNWNjNDhiNWMyOTVhZjA4MmE5Nzc1MDQ3ZmU1ZmU0ZWM5N2UyYzcgYXN0LWJyYW5jaAorMzk3NDIgYmM3Y2ExNjMzNGJhYjU0YWQ4ODExYmIwMDU5ODcxZGU1OWRjY2RkOCBhc3QtYnJhbmNoCiszOTc0MyA5ZWQ0M2U2MzdhZTdiNWFlZDViMWFkYzhkY2Y5YjhmY2Y3YjExM2I3IGxlZ2FjeS10cnVuaworMzk3NDQgNjkxM2FiYjcwNDdhZWZmMThhODIwYjMzMzM4ZTEwNWRiOWFiYzZiMiBsZWdhY3ktdHJ1bmsKKzM5NzQ1IDhiZWMxMjBkYmIxNmE2Nzk0NGViM2RlZmI0YTY2MjM5NDNmZDkxMTQgbGVnYWN5LXRydW5rCiszOTc0NiAwYjgyNjhlMGQ3MGU3NzgyOTlhYTJmMmY5Yzg4NGM0NzhhYmExZjZlIHJlbGVhc2UyNC1tYWludAorMzk3NDcgNGYyODQzZGZhMjNjNzlhYzI3YThlYTYwMjM1YTgxNGUwZDJlODhkOCBsZWdhY3ktdHJ1bmsKKzM5NzQ4IGQxMjAxZmFlMDZhODUwMDczZTE1M2EzZTdjZWI1NjkxOGEwMzU1MmIgbGVnYWN5LXRydW5rCiszOTc0OSBkZmI4ZmMzNzdiNThlNjhkZTYwZDc4ZGEyOTdiMGU3NzQ0ZDEyZTk5IHJlbGVhc2UyNC1tYWludAorMzk3NTAgZWE2ODA4YmExNjM3YmMyNzg3YWZiZTNkMDJmNWU2ZDU5MjMzYWZmZCBsZWdhY3ktdHJ1bmsKKzM5NzUxIDdlZDg3MDUwZTE2OTc0NjZjMjIxNGQ1OGVkY2YzMGUzNWUyYWEyMjkgcmVsZWFzZTI0LW1haW50CiszOTc1MiA1MzkwZGRjNzdlYjg2NmRmZjM3MmQxYWVhMmQyYjUxYmU3NGIzMjlhIGxlZ2FjeS10cnVuaworMzk3NTMgZTAxOGZjZTE0ZjEwMDY1NDFlMTBiODQxMzE0OWNiMDkyMGQzOGRiZCBsZWdhY3ktdHJ1bmsKKzM5NzU1IGQwMzk5Mzc5ZDBjYjI2NGMzODIzMTMwMzBjMzQzMjc1ZTQzYWQ2Y2EgbGVnYWN5LXRydW5rCiszOTc1NiBiMzJhMzkwOTFhZWRjYjZiMDY5Y2YwY2RkZTZlOTMwNGNkYzAxY2Y3IHJlbGVhc2UyNC1tYWludAorMzk3NTcgMzcxNjA1MTgzMGMyY2M1YWIwZDVjMWM4MjI5ZTA1MDUxZDRkYzlmNyBsZWdhY3ktdHJ1bmsKKzM5NzU4IDFjNGQxOTJmMTU2OGRmOGNhZTJkMzUxNDFhNzI5MjQ3NTY0YTNjZmUgbGVnYWN5LXRydW5rCiszOTc1OSAwNWI3MTU4MjJiYTU5NmUyNzU1NTU1YzUxNWM4ZDM3MmMwODA0M2YwIGxlZ2FjeS10cnVuaworMzk3NjAgZTc4MTU0OTViYjI3OWIxOTJlYzE0ZGU1M2FjZDlhYTk5ZDNlNTg1YyBsZWdhY3ktdHJ1bmsKKzM5NzYxIDQwN2MzZGFjYmQ3YzMwNWZjNjc0MjMwMjg2YTI3YmFiMjM5ZTFkY2EgbGVnYWN5LXRydW5rCiszOTc2MiA3MThlOWRlMjJlYTcyNWUyNWI0MGZiNTc4NWJhZWRlMzBkYmVjMWI1IGxlZ2FjeS10cnVuaworMzk3NjMgZmRjYjU4Y2JmZjRkZjBkNmQwMjE3NmZlZTlkNWZkMjA4NDE2MDYxMiBsZWdhY3ktdHJ1bmsKKzM5NzY0IDI1YmEyZjMzMTNjOTFjYzRlNzlmNjc3M2JlYjJiNTc4OTRjMjZhNzQgbGVnYWN5LXRydW5rCiszOTc2NSAxNzgyOGEwMGE0NTQ0ZmEzZmI0MjA2NWJiNTFkNjBiZThmNTY1MTNmIGxlZ2FjeS10cnVuaworMzk3NjYgYTdhNDkzZGI2MjMxM2QwMzNiZGJjNGM2NWE4ODc3ZjM0Yjk1NmVkZCByZWxlYXNlMjQtbWFpbnQKKzM5NzY3IGU1NjE0NDcwNDgwOGQ3Y2U2YzMwNWMwYjRmMDUxNGUxZWJiZGJhNTEgbGVnYWN5LXRydW5rCiszOTc2OCA0NzQ5NmU3ZGJmMmZjZDMwNjBjNzkwMWExMjNmYzYxYjFjMjc2MmZlIGxlZ2FjeS10cnVuaworMzk3NjkgODFlYmQ2ZTE3N2EzZjhhOTA0MzU3ZDhjMDcwYTcwN2EzYjgzMDA0ZSBsZWdhY3ktdHJ1bmsKKzM5NzcwIDE0NDA5YjgyMDkzM2ZjNzdiZDVjYWI5YjExYTNhZWYyNWExNjU2N2UgbGVnYWN5LXRydW5rCiszOTc3MSBjMjhjMWEzN2I4NmFlMTgwMDgxOTYzMDk5MjY0Njg1YWRkNTRjODY1IGxlZ2FjeS10cnVuaworMzk3NzIgYjcyYjNlNTE3YTRkZTdhMjRkZTliMjMzZTdmNWM2NTliNTQ3NDBlNiBsZWdhY3ktdHJ1bmsKKzM5NzczIGViMTVjZGQ0YTJmMTAwMTc5MjA3NGNhMDc4OTAyNjk4OTQ1MmZmODIgbGVnYWN5LXRydW5rCiszOTc3NCBlMGUzMjBmMzZjOTM2M2Y2ZDVmOGJmYzQwNzNkZDZjNTI3OTQ0Zjk5IGxlZ2FjeS10cnVuaworMzk3NzUgZDkxZWQ3MTA3ZmQyZGEwM2QzNTZhY2JjNTI0M2E2OGQwYjUwNTg1MSBsZWdhY3ktdHJ1bmsKKzM5Nzc2IDc5YzViODE3ZmVkYzExNTc5MzBiOTBlMDFmMjNmYjk2MDZjYTM1Y2UgbGVnYWN5LXRydW5rCiszOTc3NyA3YTVhYzIwMzE1NGFhYTJkNzU3NWExYmQ5MjVkODg0M2Q3ZTZlMjAyIGxlZ2FjeS10cnVuaworMzk3NzggM2Y2MzM0MWQ5MzEyZjY5MjIxZDY2NzBkNWNmZTU5M2Q5NzE0N2FhOSBsZWdhY3ktdHJ1bmsKKzM5Nzc5IDUyOGUwMzg4MzlhMmFhZTdkM2RlYTJlNTdiOGY0NTRlNzZhOThlMDIgbGVnYWN5LXRydW5rCiszOTc4MCA0YWFmNTA2YTdkMDk5MmI4YzE1NGE1MGFiNTY0MzhkM2ZkZjJmMWU3IGxlZ2FjeS10cnVuaworMzk3ODEgZjM3NjIyMWJiYjc2YzFkMjcyZTQyMzg0MGMzNDhhMWM1YzIzZGJiOSBsZWdhY3ktdHJ1bmsKKzM5NzgyIDM0ZWY5ZjEzOGMzMDNiNzYyYWQ4NjgyYTBiYTQ4NTBiMDViOTMzNmUgbGVnYWN5LXRydW5rCiszOTc4MyA3ZWU2ODgwY2IxNmYyODUyZTA3ZjBkZjUxM2Q3MmQ0ZTJlMTc1ZWRhIGxlZ2FjeS10cnVuaworMzk3ODQgNTc2YjlhOWNlNTc5N2NmN2M2NzJhOTc0NTZkNjkyMWRhMTAyZGE5NCBsZWdhY3ktdHJ1bmsKKzM5Nzg1IDdkMDY1NDM1ZTg2YzFiODgyY2ZmYWIwY2Y0ZGM5MGNmODcyNzdmMzggbGVnYWN5LXRydW5rCiszOTc4NiA5YTdjMmQxZTU2ZGUzMWRhZWEyMGZhMzQ5YjIxZWQwMDQ5ZGVjZDI5IHJlbGVhc2UyNC1tYWludAorMzk3ODcgMDQ0ZDhlMGY2NWYyZmI5ZTM2MTE1N2FkMWIzODI1MzE3MWMyNWZkMyBsZWdhY3ktdHJ1bmsKKzM5Nzg4IGY2NGZiMjg0ZWQxNTRkNDg3Mjk1YTg5MGNhNWYyODI0ODIyMjQzZmMgbGVnYWN5LXRydW5rCiszOTc4OSAwYWVmMzUxMjIzZGFlZDk4NGMzODVkMjU4ZDZhNmVmOTVjZDc2NGJmIGxlZ2FjeS10cnVuaworMzk3OTAgNjZiOTA3NWQxNDJiOGVjNTNiNDZhMzRmZWQ5OGQ3NmE0N2MxNmEzYSBsZWdhY3ktdHJ1bmsKKzM5NzkxIDE0NGI1MjUzNTQzNGZkMzVlMThkNzk4MWM3MWQ4ZTYzYjJlMzkxNDkgbGVnYWN5LXRydW5rCiszOTc5MiA4OTNiZTk0Yzg4OTE4MmE5MDkxYjc5MjBhZGI0ZTNkMWQzNzcyNDdlIGxlZ2FjeS10cnVuaworMzk3OTMgZWZlNjA3MzBhMWVlYWI2ZDI2MjJhMGYyYTg1ZDY2ZmJkY2Y3ZjliNiBsZWdhY3ktdHJ1bmsKKzM5Nzk0IDk1ZDBhODU3YWU1MWZhMTVhNTllYzAxOWNlZjk4MDMzZjMyYmE3NTQgbGVnYWN5LXRydW5rCiszOTc5NSAxOWQ3OTZiZDc0MGY0YTA5NzQ5NjYyMWMyYTgzOTEwYTU3MmEwMDgwIGxlZ2FjeS10cnVuaworMzk3OTYgNzJjYjA0MWNjZGUzYWM3YmViMjk2ZDQ5YmZjMjAzYTVlNDNhZjdkMSBsZWdhY3ktdHJ1bmsKKzM5Nzk3IDMxZDM2ZGQ1OTU5Y2U5ZDllNjI0YmZhMjJhZTJkNTBkNmQyZWJhNTMgbGVnYWN5LXRydW5rCiszOTc5OCBhYWU0MTEzNTJmYmQ2YTRjMzBiOTc0NWE3MjNiZjc4NjhiYzBmYWQ1IGxlZ2FjeS10cnVuaworMzk3OTkgYjFhMGUxYTJiMjhmYWNiYmVlYTdiYjc5ODZkMDhkMDk1NDk1MzE3MSBsZWdhY3ktdHJ1bmsKKzM5ODAwIGM2ZGJmODhlNGIxNGI4NmQwMjE2ZjRjNzc1YzUyNDhlM2Y0M2Q1MTQgbGVnYWN5LXRydW5rCiszOTgwMSBkY2E3MGY0ZWM3N2I2NzQyOTQ4MDMwNjlmYWI1MGI3MWY3ODAwNzk0IGxlZ2FjeS10cnVuaworMzk4MDIgYTBiYjBmZDVlMTQzYTljODQ4NjkwMDhhMjE3NDA1ODQxMzg0M2IxMiBsZWdhY3ktdHJ1bmsKKzM5ODAzIDE2NjFlNzNjMDdhYmEzOTk5OThkODMwYjU3ODc5NzU0YmNiZjEwMjAgbGVnYWN5LXRydW5rCiszOTgwNCBkYjllMmRlYTRjMTEzZDZiZTlmYmM3MTgwYTBmOTgyYjg5Mjk1MDgyIHJlbGVhc2UyNC1tYWludAorMzk4MDUgMTlhMzdhOWY0ZWY5NGIyNmMxNjcwMjk0ZWRiNzc1MWViYmE5YmVhYiBsZWdhY3ktdHJ1bmsKKzM5ODA2IGY3YjBjYmVhOTA1YjViMzQ4ZDEwYjcyNzk1MmQyYWYzY2M5MGVlM2MgbGVnYWN5LXRydW5rCiszOTgwNyAxYWM5ZWQxYjVhMDNjMTkzNTNkNzZiYjdkODdkNGJiNGIxZmY5YjY3IGxlZ2FjeS10cnVuaworMzk4MDggYjhiMTNiMWZmZTc1NzFiNGFmNWY1YmM4Yjc5YWYxM2QwMjgyM2UyZSBsZWdhY3ktdHJ1bmsKKzM5ODA5IDkxNGVjMGFmYTUxYzIxNWIxMDg3OTg4YjIzYzkyNzdiNDU5YjM0NGQgbGVnYWN5LXRydW5rCiszOTgxMCAzOWYzNjMwYTcxMjRkOTBmN2I1NzlmNDk2MjQ2NjJiMzhmNTRjNzlhIGxlZ2FjeS10cnVuaworMzk4MTEgZGJjOTg4YmVhNTVkNmY2YzUxNDU2NTFkYjZjNTk3YmFkZGQ2YTgyMSBsZWdhY3ktdHJ1bmsKKzM5ODEyIGZkNjMwMDQyYWFkNDNkZWNmNTBhZjY0MjI0YjZhMDdkMTM0YzBiZTEgbGVnYWN5LXRydW5rCiszOTgxMyAzNzc4MDgzZmUyYzg2MmM0MGQ5M2VkMjNjNjcxMWIzNDIzMTZjMGVlIGxlZ2FjeS10cnVuaworMzk4MTQgODU3ZjY4ZmJhMjc1NDRkYWNhMzI4YjA5ZDNjY2RiNjdjM2E3MWUyZiBsZWdhY3ktdHJ1bmsKKzM5ODE1IDg0MmNhYTI0NTkxN2Q4ODVjZDljMzYwZjEwYzhkZDEzODAyNzg5YWQgbGVnYWN5LXRydW5rCiszOTgxNiA0YmY2NDU5YzhlM2JiOTY0MzMyNmQ1YWI5ZDYxNzI0Mzg3ZmI5MzRiIGxlZ2FjeS10cnVuaworMzk4MTcgZTE3YTMwN2IxMjE2OTQwOTA1ZGIzZjFjYzMzMjkwYTdkMDk2YmIwMiBsZWdhY3ktdHJ1bmsKKzM5ODE4IDhkYWVmZTg0OTk0OTM0ZGUzZTY1ODRmY2ZmMzA1MzhkMDVmMzFjOGYgbGVnYWN5LXRydW5rCis0MTMzOCAxOTMzMDVjOWRiZGIzNTQ5YWQ1OTYzZjVmODJkYTc0N2E2MmM1NTRhIGxlZ2FjeS10cnVuaworNDEzNDAgNzZhNmU5MDg2MjRkN2M1Y2RiN2U3N2Y3N2FiYzdmZTY0Y2Q2N2Q5NSBsZWdhY3ktdHJ1bmsKKzQxMzQxIDUyZjY1ODk4ODc0YTY4ODg1YjMyN2I3ZjdkODY0YzY5YzNkZjUyYzYgcmVsZWFzZTI0LW1haW50Cis0MTM0MiA0NGZlMTU3MjU1YmM0Y2Q4YTA1ZjdmMDYwMGM4ZmUyNzhmMmUwM2FjIGxlZ2FjeS10cnVuaworNDEzNDYgZGZiMTEzOWVkYzU1YTFiMGY3ZjI3MmVkNzczNWNmNTRhNDAwNDZkZiBsZWdhY3ktdHJ1bmsKKzQxMzQ3IGMyYTk4YmEzNzFjOGE5MGMwYmRjMWE0MmM3MjczOTkyMjg4Mjc5YWUgbGVnYWN5LXRydW5rCis0MTM1MiA4ODUyMzAxNzQxNGMxODczZGNmM2MyYzE1ODE1OWY5ZGM2NmZiZjE5IGxlZ2FjeS10cnVuaworNDEzNTMgMzliMWU3NGJhMTdjNTU0NzE4OTZlMWE0NDA0NTEyNjk4NjIwY2U4MiBsZWdhY3ktdHJ1bmsKKzQxMzU0IDliMGRkMWY1M2FlMjE4NmQ5ZjI4ZWYyMDg1ZGEyZDZiYzAyY2E3MzIgcmVsZWFzZTI0LW1haW50Cis0MTM1NCBhYmJmZTkxNzg3MzE5YjdmOTQ1NDNmNDBlYTdiYTE1ZDk5YWQ2ZTBiIGxlZ2FjeS10cnVuaworNDEzNTUgMmUyNWU5ODMyM2E3ZjY1MWZhOTI1YzU0MDc0Y2RhOTIwODhiZTVkNiBsZWdhY3ktdHJ1bmsKKzQxMzU2IDEzZGVlYzUyODFlZmNiMjBhNWQ0MjQzMDBhYTQ4YTBlNDE2NGM2M2IgcmVsZWFzZTI0LW1haW50Cis0MTM1NyBlYjlhMzljMWE3OGJiNzNlZGYzZjFlM2Q5NGY0YTA1MWNjZWU4MWU1IGxlZ2FjeS10cnVuaworNDEzNTggYTAwMGYzMjJkZDA1ZGJmYWJjNWQ2NjFmMzU1ZWU3NjkzMjViMTVmYiBsZWdhY3ktdHJ1bmsKKzQxMzU5IGVkMjQ3ZjZlNmYwNzU0ZGY4MGNjZTU5M2M5ZTE4N2Q1NjhmMjZlMTAgcmVsZWFzZTI0LW1haW50Cis0MTM2MCAyMGJiN2ZmMTY5NTI3N2JjY2RhNmU1MDNhZjE2NDIzMDc1Mjc4NTdjIGxlZ2FjeS10cnVuaworNDEzNjEgYTQ5N2UxMGIyM2U0NzBjYzc2YjM2ZjI3ZWU3MDRhZTUwODgyY2MyYyByZWxlYXNlMjQtbWFpbnQKKzQxMzY2IDY5MDM0YTA4ZTVhM2EzNGY5ZjllNzJhODRhNzc0MDc3NjRkYzYwYTkgbGVnYWN5LXRydW5rCis0MTM2NyBiNjUyZjUzNTIwMWQ2ZmNkZjc0YjA4ODkzNGUzMDQ0MjQ4MjAyNzM3IGxlZ2FjeS10cnVuaworNDEzNjggNmNkMTEwNzQzYmQyMDg5ZjBkNjUzYWE5NmYyOWQ0ZDU3YWQzYWNhYiByZWxlYXNlMjQtbWFpbnQKKzQxMzY5IDhiMDJkOGE1ZTcwN2YyNmYwMjQyZjk2N2MzZmYxNTA1ZDFhZWNmNWYgbGVnYWN5LXRydW5rCis0MTM3MCBmOWU1MGZmOTZmZjg1ZWJmNzZiNGNkNmFjOGIzNjcxMjFkNWUwNmUzIHJlbGVhc2UyNC1tYWludAorNDEzNzEgY2MxN2E1ODI1MThhZWZkNDJhMzM3NjBlOTU4ZmQwMzQxNzYwZGIyNyBsZWdhY3ktdHJ1bmsKKzQxMzcyIDBlY2JmZmJhZGMwMDU2ODIzZTU5M2YyMTdhZmYzNTI0ZmQ4NDI1Y2MgbGVnYWN5LXRydW5rCis0MTM3MyBhYjNkMWU2YTAyMzcyNzBlMmIwMTUyNzZiMjM3ZDlmMzIyNGU4YmFmIGxlZ2FjeS10cnVuaworNDEzNzQgYmZmYWUyZjgxMmY3NGFlZDc1YjAyMGEyM2NmYjJhNDhkNWJkYTM5MiBsZWdhY3ktdHJ1bmsKKzQxMzc1IGYzY2FmODBiZDY2ZDIxYmE4Mjk0YTA2NDkzMjQzNGM5YjEyNTBjOGQgcmVsZWFzZTI0LW1haW50Cis0MTM3NiAwMjliNmM1ZjI1OGU1YWI0NmJlMmQyMDc5OTk2NzM2OGMzMDI2OWVhIGxlZ2FjeS10cnVuaworNDEzODUgNjQ2YmE3NjExNWFjYjQzNTBjYzMwZjVlYzVhMGQ3OGFkNjdhZGE1NCByZWxlYXNlMjQtbWFpbnQKKzQxMzg2IDdiZjQ4NDAwZjI0YThlN2Q5MTQ0Y2YyZTZkZGZjYzExNzA4MTIwNTEgbGVnYWN5LXRydW5rCis0MTM4NyA5YjFlZmIwZWQ2MzU5MmRlMTJkNWJlZmM2NzQ1YjYyOWFjMTVkYjdlIHJlbGVhc2UyNC1tYWludAorNDEzODggNDE4YTYxZWFkMTFiODVkZWJjZTNmYTUxYTJkY2YyNGYyYWEwOWUyMSBsZWdhY3ktdHJ1bmsKKzQxMzg5IDIwYWExZDViM2IwODMyN2VhNjQzYTJlNzkzMTgzYjEzYjYyMGVlMTggbGVnYWN5LXRydW5rCis0MTM5MCBmZDA4OTE4Mzk0ZjljM2IxMTE5MmY2NThmYTQ2YmVmMTY2MDY0Yzk2IHJlbGVhc2UyNC1tYWludAorNDEzOTkgYTg2NDk4NjljYjYwYmJlYTA5NWRmZjU2NDFhY2RkZGQ1OTVlNzUyMiBsZWdhY3ktdHJ1bmsKKzQxNDAwIDQ5YmFmOGIwNDY4MTI1NWFmNDVjMDE5NmUxNDA5OWU1N2M2NDVlOGQgbGVnYWN5LXRydW5rCis0MTQwMyBkZTA5MGJmNjdhNTk4OWRiZmYyNWRhYTU1ZGVjYTFlYjg1YzU4ZWE0IGxlZ2FjeS10cnVuaworNDE0MDQgZWNmOWY0ZWQxMDllNWNkMDBkZWE2MjJiMzQ0Nzc4N2VjNzY3NDg2MyBsZWdhY3ktdHJ1bmsKKzQxNDA1IDZlMmIyODI0MzRkNDk1MTA5NDRmY2QxNDI5MmM5ODRiYjE3NzliZTIgbGVnYWN5LXRydW5rCis0MTQwNiBmODVkYzMxZjFmM2U0ZmUwZjg2NDg1ZDNkYmNiYmFhZmY1ZjM0YTIyIGxlZ2FjeS10cnVuaworNDE0MDcgZDgxMmUzOWFlOTA3YTdkNTk5MWY4NjVmZWE3MDJjOTM2NjBhZGU3MyBsZWdhY3ktdHJ1bmsKKzQxNDEyIGNhZWEwY2MwOWE0MmY5MWM5MTY2YzQ3OTc2ZDdjMWMyMTlmY2EyOTkgbGVnYWN5LXRydW5rCis0MTQxMyAxZDE5NTdmNTU2MjY3OTBkZWM4ZWQwYzFjYjgzMWI3YjIxZDRmNzdhIHJlbGVhc2UyNC1tYWludAorNDE0MTQgZmExZDU2OTQ3MzAxMzA3ZmFhNjcwODZlNDI5M2NjMzNlMGZhM2E0YiBsZWdhY3ktdHJ1bmsKKzQxNDE1IGYwZTMzNTUyMzVhNWU1MjVjODJmZWU2NzJkNjFhNTE5ZTFlOGU5M2IgcmVsZWFzZTI0LW1haW50Cis0MTQxNiA1ZjcxYTUwMjg5YTI1NTZiYWQ3Y2RhZDA3OThiYmRlZjQ5ZmU5ZjY5IGxlZ2FjeS10cnVuaworNDE0MTcgYWVmODUyNmZjOWJiYTZmOWQzZWMwZTkyNWJjYjA0OGQ3Mzg0YjYwOSByZWxlYXNlMjQtbWFpbnQKKzQxNDE4IGY2ZDhiMGRlMTM0YTIwMTM4ZTQ5NWZiMmRlMGZiMmRkNzc1N2Q0MjYgbGVnYWN5LXRydW5rCis0MTQxOSA0MTNjNjhiMzE0ODcxZWE0MWE5NTUzNThiZDVkMDFlMzBmYmNjYjYyIGxlZ2FjeS10cnVuaworNDE0MjIgZWUzZTBlZTFlZGNhN2QzNDgyYzkxOWIwNzI5YjUwMGFmNzk3ODFmYSBsZWdhY3ktdHJ1bmsKKzQxNDIzIDJhOTJkNWNlMGMwZDhjNDhmN2NhMWRjMDUxNTI2MWRmMWViZTc1OTEgbGVnYWN5LXRydW5rCis0MTQyNCA3ZjM3Y2NmNjk4Y2Y1YjAxNDYzMmQ2OGMxNmRhOWYyNjJhMzIwMDVjIHJlbGVhc2UyNC1tYWludAorNDE0MjUgNjg4OGRkZjFlYTlkNTNkNDRmYWE1OTE3NGVlZTAyMTU4ZDIzYmYzZSBJRExFLXN5bnRheC1icmFuY2gKKzQxNDI2IDQyOWY1MzdjZjZkNmI3ZTU5Mjc5NmYxNDI1MTQxMmJhM2JmMWU3ZTAgbGVnYWN5LXRydW5rCis0MTQyNyA0NDYyODcxYTZkY2VjMDEzZGIyODdiZmUwODUwMTA4ZGM2M2RmYjk3IGxlZ2FjeS10cnVuaworNDE0MjggODdlMjIxMGUwN2Y0OWFkNWQ1MGU1YmU5Y2ZkNjRkMjBmZGQwZTA4NSBsZWdhY3ktdHJ1bmsKKzQxNDI5IDZhMDE4ZDhjNTljOTFlMDQ2Y2I2NzFkNDY1OTgyOTY2ODU5ZTYwM2MgbGVnYWN5LXRydW5rCis0MTQzMCA2MDE1ZGYxMzZiMDBkMWJjY2M0MTJjZGJlMjA4OGIxYzA0NTU2ZTQzIGxlZ2FjeS10cnVuaworNDE0MzIgOWI4ODVjOTM0MTQ0YjcwNTVlMzZiZDYxN2EwZTBhYzhlMTIwN2QxNCBsZWdhY3ktdHJ1bmsKKzQxNDMzIDNlNjM0ZTQxYjZlYzNjNzk3MDFhMmFjZjJiYjE2YmZjMzZkMGI2NjAgbGVnYWN5LXRydW5rCis0MTQzNCA2ODY3OTk1YTE4YTdkYTkwMGU3OWQyMjA3NjVmZDE4YWE1Y2YyNWJhIGxlZ2FjeS10cnVuaworNDE0MzUgNzlmMmNlMzIwMTkyNWM5ZDYzZWNiMTY0NDg4NzZmNWRmYWJlZmE5ZCBsZWdhY3ktdHJ1bmsKKzQxNDM2IGRiYzkzZWU1M2UyZmVmZmNiZmI5ZWVlNDE1Nzc4NGIzZTkzNTA2ZGIgbGVnYWN5LXRydW5rCis0MTQzNyA2MDBiYmJhNTZmOWJhYjM4MmJkODA1YzU0MDU3ODU3YWFlZjA5MzNmIGxlZ2FjeS10cnVuaworNDE0MzggOWY3M2RjMDk1M2QyMDIwNGE1NDljOGM3ODFhNGM0ODg0YjIyMmNlYSBsZWdhY3ktdHJ1bmsKKzQxNDQwIGY0ODQyZjQyNzAwYmRiN2Y3M2RiODhjN2FmNjMzYjExN2Y0YTg5M2IgbGVnYWN5LXRydW5rCis0MTQ0MSAzN2RhOTY5YWQxMTZjNWJhOWI3MzU1YzIzZjNiZGZmYTA3MGZlZjA4IGxlZ2FjeS10cnVuaworNDE0NDIgOTAwMzgzNmEwMzZmMTMzNTJiNWJhYjFiMmVjNzM3MmEyMGQ4ZTI0ZCBsZWdhY3ktdHJ1bmsKKzQxNDQzIGY1MzFjMDVjZDI0MDg2NmU0NjBlZWVjZGQxMDAxYjg2ZWVmZGJlNTYgbGVnYWN5LXRydW5rCis0MTQ0NCA5NDc2NTY2MzBiMTI4ZGZlOGVlMjA3Yzc2ZDZmZjQ0YTIxNTZhMWUyIGppbS1kb2N0ZXN0Cis0MTQ0NSAzYWNiNmIzNDEwNzVjOWE2ZTgzNDYyNmRkNzg5MWIwYmI5NGU3YWIyIGppbS1kb2N0ZXN0Cis0MTQ0NiA0YWMzZmExNTg5Mjc5MDIzMDdlZWMyZjkwOTM0NzY2NDEzZTRiZjdkIGxlZ2FjeS10cnVuaworNDE0NDcgNTgzY2U5YzBjNjY0ZWJiYTk4ZDJiNzFhMzA1MzMyOGI1NDhkNjY5MyBsZWdhY3ktdHJ1bmsKKzQxNDQ4IDc2ZWQ3ZmRjOWQ4NWJkZjU4MjkxMjI0YzA1OTJkZjJjMTAyOGI2ZmEgbGVnYWN5LXRydW5rCis0MTQ0OSA0NGQ2M2VlZGZhY2FmMDQ3MGYzMjU0MjY5ZTFhOWIzNWRiOGMwNGFjIGxlZ2FjeS10cnVuaworNDE0NTAgMDg2Y2FjY2ZmZjBlNzY2YWMzYzc1OThjMGVlOWUzNDUxZWMyOGFkZSBsZWdhY3ktdHJ1bmsKKzQxNDUxIGYzMzRlZmU3NmY2YTU0NjIwMjViZjkyMjlmMmUyMTcxMmZkODQ1YjQgbGVnYWN5LXRydW5rCis0MTQ1MiA2ZDhjZTU1NzBjYjcwMjBjZGNiYzAzMDk3MWI2ZDE4NDUyNThiNGVlIGppbS1kb2N0ZXN0Cis0MTQ1MyA0MGYzZDc5YjIxMjUwYTQxNWY3OTlkMjQxMTJmZWZkZDIxYmM0NjMxIGxlZ2FjeS10cnVuaworNDE0NTQgOTRhNDA5ZGE0YmQ0MGI3MzI2ZjcxYWE2ZDg2NTQ1M2Y1NTZhOTU1YiBsZWdhY3ktdHJ1bmsKKzQxNDU1IDFmOWQ0YWMzNTAxMDI4MjMxMmI5YWYzODg5MzlmZTUwZWZjMzhlYjEgbGVnYWN5LXRydW5rCis0MTQ1NiAwZDFlMmU3M2MzZWMwMzM3N2E5MWU2ZjFjOWM0ZmM1NjA2NzQ2ZjE4IGxlZ2FjeS10cnVuaworNDE0NTcgMjk0MjBiZDNiNWNiYjE4YTRlODkyMDY0YzgxMDNmMGVmYmIxYTAwYiBsZWdhY3ktdHJ1bmsKKzQxNDYxIDMyMzZiNWZiMWZiNzBmMzA5NzIzMjlmOWFiNmY3MTUzODg1MTQ2OTQgbGVnYWN5LXRydW5rCis0MTQ2MiBlNzE2NDgzY2IzZjkxNGNiMTk2ZmFkNjI2YjRjMTY4YTVkNGU3Y2Q1IGxlZ2FjeS10cnVuaworNDE0NjMgMDM4NjdmYzZmZDgwNzhjYzNiNGI1NjlhYzM3MmMzMGY5NWU2ZmNjMyByZWxlYXNlMjQtbWFpbnQKKzQxNDY0IDViODIxMjBjYjQ5ZDYxMjJkZDBhYTZlM2JmZjQ4YTJmMTYxNzk2YTcgbGVnYWN5LXRydW5rCis0MTQ2NSBmOTlkNmNiODhmNmYyMDhiZTk2MWY2NThhZWM5MTEwMjk0NzU4MmQ4IHJlbGVhc2UyNC1tYWludAorNDE0NjYgMzk1NmQ2MjBhZjA5YmEwMGQwNjdlZDEwMWMzMzg5MGU5Yjg4MWRhYyBsZWdhY3ktdHJ1bmsKKzQxNDY3IDQ3ODllNzVhNmZlN2QwNjIwNjJkMjJhNTkzYmQyODgyMTU3YzA2MWIgcmVsZWFzZTI0LW1haW50Cis0MTQ2OCBlMjQ3M2M0ZjJlZTBkN2ZkN2VkYzJiY2UxMmQxNjc2NzE5ZTY1ODZjIGxlZ2FjeS10cnVuaworNDE0NzggZjQxNGZmMjg3ODIzYjYwZmYzMjcyMjFmZTU0NTFlYTFjYzlhNjJhMCBsZWdhY3ktdHJ1bmsKKzQxNDgwIDhmZDQ2YjY2MGU2Njk1MGI2OWI2YTQ5ZDZlMzU3YjFmNjEwNTE4YWUgbGVnYWN5LXRydW5rCis0MTQ4MSA3MWVhNmI3ZjU4Y2UzOGQyMjUwNTA5YTdjNTRhZGM3ZmM3YWUxZDA3IGxlZ2FjeS10cnVuaworNDE0ODQgODI1NjU1YmZkZjIwNjQ1MDBlYWYwNjJmN2VmMjVhZGZkMTk2NGI5MCBsZWdhY3ktdHJ1bmsKKzQxNDg1IDA0NDU0MmQ3MDVjMmNhZWVkYTlmYjU3NzRmYjQxNWU0ZDMxYjczMjAgbGVnYWN5LXRydW5rCis0MTQ4NiBmZTRjNjI3YjIwOTY1ZTkwNTk2NDNlY2Y5Yjk3MTc4ZjI2OTAzNWFlIGxlZ2FjeS10cnVuaworNDE0ODcgZTRhNWE4NGU1ZWJiMTM5NzNkZDM1MGZiMDFlZjI4MzgwMWJmNDVhOCByZWxlYXNlMjQtbWFpbnQKKzQxNDg4IGNlOWJhMDFlYjdlZDVmZmQxM2JlMjFhMzU3Njc0ZWM4ZGFmNmQ3MDIgbGVnYWN5LXRydW5rCis0MTQ4OSBkNzJkYjgyYTcwY2Q3YWRlY2M2YjUwMzQ1MWNkNjA0OWJlMzY2ODQ5IGxlZ2FjeS10cnVuaworNDE0OTAgZGY1OTI4NTU4YTU3YjQwZmVjZDY5MWI4NmZhZjhmYTI4MzM2YWQyMSByZWxlYXNlMjQtbWFpbnQKKzQxNDkxIGU5YmU5ZTYxODhmNGQ0ZTMyNmQ3YzE0ZWFiNGU3MmUwZTczNzU3NWQgbGVnYWN5LXRydW5rCis0MTQ5MiAyYjBjZjUwZTc3ZWM5OGExNTRlNzVmOGY5N2NjMDg0NzUzYmI3ZDExIGxlZ2FjeS10cnVuaworNDE0OTMgOWZkMGNkMzYyYWZmYzcwOTJmZDZkMTRlMmMxZDhlNzdkZDEzYTEyZiBsZWdhY3ktdHJ1bmsKKzQxNDk0IDgwMGY0OGExNGE4YTM4MTEyZmExMTAzODY3M2NkOTFjMTU0ZmNlZDkgbGVnYWN5LXRydW5rCis0MTQ5NSBhNmJmN2NhZWQxMzU3MDU2NGUyYzZlNWVlZmM3Y2M2ZjA4YTA0MjgzIGxlZ2FjeS10cnVuaworNDE0OTYgMWRmZDVkNjJkNzY0ZWRlYzVjNzJiMjZmN2YxZTUzYmIwYjg1ZWU5YyBsZWdhY3ktdHJ1bmsKKzQxNDk3IGY5MzczODdmNGRmMTIxZjhmM2QxZjkwZThiYzA3MDhlNjY4OTViOGEgbGVnYWN5LXRydW5rCis0MTQ5OCA0ZDFkMjc3MTc4YTU3YWQzYzUzNzJiNWRmZmNjMGM2YjI4MDkyYTgwIGxlZ2FjeS10cnVuaworNDE0OTkgNGU1ZTE2YTNiZTBkM2MzODg1ZDkyNzk1ZGVkOWMyYzY1ZTM1Y2E3MiBsZWdhY3ktdHJ1bmsKKzQxNTAwIDExYTFiYzM1MjkxN2EzZWRmMWFhZTJjYTUyZDAxNjczYzUyMWM4MjMgbGVnYWN5LXRydW5rCis0MTUwMSA4ZmVhZWQwN2ZjY2Q3MTQ1MjZiYmE4OTMwMzVjZWJjNjc3N2MyZDVlIHJlbGVhc2UyNC1tYWludAorNDE1MDIgY2YxNTcxNGM5YzhhYTM1M2Y2ZDkyMzc0MzdiZGZkY2Q5Zjc0Yzg1ZiBsZWdhY3ktdHJ1bmsKKzQxNTAzIDY4YjM5OGE4NWEzODc0YmQ0MmU2ZThjODBkYzMxNjVjNmU0MGJjMGQgbGVnYWN5LXRydW5rCis0MTUwNCAxMmYyMjJiNjE3Yjg5ZjZjZTEwMzMyZWNmMGE1OWE1M2UzNjExNjcwIGxlZ2FjeS10cnVuaworNDE1MDUgM2ZkOTdkZTBhNzkwODNlNDg4MTFlYjU3ZDJhMTYzYmY4NzAxYTUxZiBsZWdhY3ktdHJ1bmsKKzQxNTA2IGYxM2ZjMGM5YTZiM2E1Njg0NmJiNWEyZTBkMTkyZTIzNGJhNTZhZjcgcmVsZWFzZTI0LW1haW50Cis0MTUwNyA1MWY0ZWU0Zjk3ZWExYWJmOTcyZjgzZTlmNDAzODZkYjJiYjI4ZjI0IGxlZ2FjeS10cnVuaworNDE1MDggMWZhYTMwNjk5M2MwNWFmNTE4OGQ1ODIxZjE4ZWZmNjZmZjRjZTMyZCByZWxlYXNlMjQtbWFpbnQKKzQxNTA5IDlmYzZiZjY1NWY5Y2IwMjk0YjdkNmNhYzA1Zjg4YjVmZTc0YzViODEgbGVnYWN5LXRydW5rCis0MTUxMCBkNGE2ZDI1OTFjZjU4YTExOGYwNWEwMGYxMWMyYzRlN2UxNzI4YWNhIHJlbGVhc2UyNC1tYWludAorNDE1MTEgZTExMzIzMTg5Yzg0OTEyZTBlZTI2ZTkxMzMxYzljZDUzMjkzNmJiZiBsZWdhY3ktdHJ1bmsKKzQxNTEyIDc0ZTU2MWE3ZTgyY2FkN2FlMzhkODVjMzI3ZTc2ZGNmZDY5ZDY3ZTAgbGVnYWN5LXRydW5rCis0MTUxMyBjOTQyNjgyNzdkZTkzODM2ODViZTg2M2NjZTAxOGEyYTc2ZGQ3MTE3IHJlbGVhc2UyNC1tYWludAorNDE1MTQgMWY3NzQ1MjkyZTUwZWQ4NGQzOGUyN2I2ZDUwNzk4YzIyZTBjYjU2ZCBsZWdhY3ktdHJ1bmsKKzQxNTE1IGYyNjA1ZjVhNmQ0NmY4M2E3OWRlZTA5ZmJiMmE4ZGQwNmM5YjAwYTAgcmVsZWFzZTI0LW1haW50Cis0MTUxNyBjMmJiYTVmNDZhYjZlYWUxNzdhNmU0OTg1NmNmMjEyNWU4YTYyZjg2IGxlZ2FjeS10cnVuaworNDE1MTggZmFiMzcxMzZkZDZkYTUzYThhMDlhMjk5MGE5MTUxZTMwNTE2MTJkNSByZWxlYXNlMjQtbWFpbnQKKzQxNTE5IDlmNjg1MmZmM2QxOTFlNDhhNGMxMDExZGM0ZTJiNzQxZWYyNzMzNmMgbGVnYWN5LXRydW5rCis0MTUyMCAxZTFjM2Y1NTMyOGEwODYxNDA0N2UyYjcwMTIxOGJjMTVhYjBkYjI5IHJlbGVhc2UyNC1tYWludAorNDE1MjEgNzJkNWM2MGZhNDVkOWVkYzM5NWJkOWI3ZDgxYTgwMjgyYzQwOTJjNiBsZWdhY3ktdHJ1bmsKKzQxNTIyIDllNjMwY2MxZDMwOTBiOWVjMjBlNWZkNzdiMGViYTBhMjk0MDNkN2EgcmVsZWFzZTI0LW1haW50Cis0MTUyMyBjZjJiNGM4YWQxYWQ0ZTQ2ZjZmMmU2ZmE1YzY3OGFmNmE4YWUyMTdkIGxlZ2FjeS10cnVuaworNDE1MjQgYjdjNmM0NjFhODA4MTgwYjBiYmZiNzE0MTIzNTA5MjA2MGMxNzk3NSBsZWdhY3ktdHJ1bmsKKzQxNTI1IGUwZGRlYTg4MWY0YWJmNzFjNGVjYTRlODEzMzcwYjIwOWJmOWIwYmIgcmVsZWFzZTI0LW1haW50Cis0MTUyNiAxZmRlYmJkNjBkN2RkZGEwZWUwY2EzYzdjZjNhYjNkNDllZTg1YzBiIGxlZ2FjeS10cnVuaworNDE1MjcgN2M4ODAwYjgxYzUwYzlmNjU5YWNkNzQxYTg4ZmVhYWQ0OGI0NzkxYyBsZWdhY3ktdHJ1bmsKKzQxNTI4IDIxNTBhZjg0YTE4NWU5MDhkNWVjNThmYTRhNWJiNTdjZGM0Y2VkNTYgcmVsZWFzZTI0LW1haW50Cis0MTUyOSBlNmQzMWNiZjJlZDM4YzVjMWMyOWM2ZjU1MDJiNDI5YjNlMDBhOTEwIGxlZ2FjeS10cnVuaworNDE1MzAgYmI4MGI4ZjM5M2VmZjFkMmUxOWRkYzE5ZTQwZjVmNTIwMDEwN2RiYyBsZWdhY3ktdHJ1bmsKKzQxNTMxIDc5Mzc0ZWI2ZGI1MTZjY2E5YTg0YmRmOTZiNDdhMTc4NTg4OGZkMTcgbGVnYWN5LXRydW5rCis0MTUzMiBjYjFmZjJhODVlM2RkZDIyODE1ODY0OTkyYjFlNzE3OWYxN2Y0Yzk5IGxlZ2FjeS10cnVuaworNDE1MzMgMDMzYmI0ZGI1YWU4YzFhNjI0YjhiMWUzODFkMWI2YmFlZGIzNmQxMSBsZWdhY3ktdHJ1bmsKKzQxNTM0IDZkNmM3Y2Q0NTI5ODllNTgxOGEwYmEwZWJjN2E3YTMwNjFkZmY3NTQgbGVnYWN5LXRydW5rCis0MTUzNSA1YzhkYzVkMjE4ZDhkNzBmMmYwM2M4OTgwMzc2MDlkMTEzZmM3OTRjIGxlZ2FjeS10cnVuaworNDE1MzYgYjQ2ZGM2ZDEwOTg2NzU0MzFkYTBhZmQxMmNjZTk4MDc1ZTIyZjhkNiBsZWdhY3ktdHJ1bmsKKzQxNTM3IGU4MGExYWY2NzYyM2YwZjU3MjljMWNkYWMzYTcxZmE3YTA2ZWVmYzkgbGVnYWN5LXRydW5rCis0MTUzOCBiMmViMTU4OWMyMmI1MTM3ZWUxMzFkZmEyODA3ZjdmZDUyMmE5NmNhIGxlZ2FjeS10cnVuaworNDE1MzkgNDU3MmZiNGRmYmIzZjBmYjZhZDQ1NzMyOTZkNzhjYjY1ODc5OWVlNyBsZWdhY3ktdHJ1bmsKKzQxNTQwIGVmNjA4YjU4YmZkOGFkNWMxM2Q5NWVjYWVhYTUyZDU5NzBmZTM3OTcgbGVnYWN5LXRydW5rCis0MTU0MSBmODA1NjMyOGYwMWExNjNkY2QwZTUzNzY2ZDJhY2FkNjBiZjk4MTNlIGxlZ2FjeS10cnVuaworNDE1NDIgYjljNjgyZWQ5MTBjZGM2MmIzNzY5NGNlMDc0MGU3NzI0NzQyMWU5YyByZWxlYXNlMjQtbWFpbnQKKzQxNTQzIDkwNzk3MjMzMjA4ZWZlMGZhMTY1OGY1NzA4NTdjNjU3MDY5MzljYTUgbGVnYWN5LXRydW5rCis0MTU0NCA0ODM1M2NmNTEzNDAzYTFkYzYxMjZiMzQ1ZjNjYWU3ZjBmNTc4MmJkIHJlbGVhc2UyNC1tYWludAorNDE1NDUgZDdmNjNlZGU0OTVlODVlMjU1MWViNzFhZDU5NDNjMjI0YmUwNTZiMSBsZWdhY3ktdHJ1bmsKKzQxNTQ2IGQ3ZjUyZmM0MjI0NThhMTY1OTdhYmRkMmFkZTE5Yzc4OGMwYjNmNzIgcmVsZWFzZTI0LW1haW50Cis0MTU0NyBkOWQ4YjJlMmU2MGFkZjA2ZWUwOGMzOGUyMGM3MTVlNjZiODg0MzkwIHJlbGVhc2UyNC1tYWludAorNDE1NDggNzVhNzljYzRjZjdiNjkwNmM1MjAzYmJiZWU4ZTgxNDQ5ZWEyMWM4ZiBsZWdhY3ktdHJ1bmsKKzQxNTQ5IDlmYzdkZmU4NmY5NjYzNjA1YmU4ZjY1MGZmZmYzMTQzZDkwYzk5M2YgcmVsZWFzZTI0LW1haW50Cis0MTU1MSAxZDhlZmZkZTgyZjFiNDNlZjVjOGU1OTYxNTdkZjYyNDk2OWI2YjI1IGxlZ2FjeS10cnVuaworNDE1NTIgZmNhNzMzNzcxMGZkN2IzNDE3ZTQ3NDM2N2VjZjg1MGJlZDU1ZGJhOSBsZWdhY3ktdHJ1bmsKKzQxNTUzIDY1ODQ0NGJhZWJhMzdlZmM4ZTQ5NWFmN2IxYTIzMTRkZDVjMTViYjMgbGVnYWN5LXRydW5rCis0MTU1NCA3MjU1NWE5NjdkNmE4NWNiMzdjYzFmMTNmMWIyYjE2OWMzNTU1YmE4IGxlZ2FjeS10cnVuaworNDE1NTUgNzNlYmRjNjJiZjhmMGQxYzkxM2IxNjRmMzEwYTEzMGU2ZmJlMDdmMCBsZWdhY3ktdHJ1bmsKKzQxNTU2IDRkMDYxNjJhZDIwOWM4MmE1ZGJjZTQ2YmI0ZTE1YWY5MWZkNGU3ZmUgcmVsZWFzZTI0LW1haW50Cis0MTU1OSBkMTcyY2JhOTY0Yjc4MWJhM2U3ZWI0NjBlOGY3OWVlODU1NTM5OTEwIGxlZ2FjeS10cnVuaworNDE1NjAgOWQ5ZTRlZTRkYTg5ZmVmYzRhNjcwYjkzNDAwYWQwNzQzNmJmYTdkMSBsZWdhY3ktdHJ1bmsKKzQxNTYxIDljNDc2NWU5ZGM5MjcyMzY1MjU1MzVkNWRhNmRiMGUyNGVhNmZiOTcgbGVnYWN5LXRydW5rCis0MTU2MiBmOTk3MjEzODM2YmIyOTBkNjFkNGQxZjlhMzhmN2JmZGRjMzdjNzdiIGxlZ2FjeS10cnVuaworNDE1NjMgYTFiNmU2Nzg0Y2E1ODBlNWEzMDRhNTYzMTZkNWNlMjhjZGE1MmU0NCBsZWdhY3ktdHJ1bmsKKzQxNTY0IDE1Y2M2MDE2Nzk1ZTAzNDY2Y2U4MTViNDAxZDM2ODViYTM3NmY0MDAgbGVnYWN5LXRydW5rCis0MTU2NSA3NGU5ZmUwNjhjNGRkMjE4NDNmNGNmMTVlMWMzZGM2YTQ5NTA3OTBjIHJlbGVhc2UyNC1tYWludAorNDE1NjYgNGVhYTcyYmExOWEyZTcyN2JkMzBiNTJkNDlkNzBjMzgyOWUxMGFmNSByZWxlYXNlMjQtbWFpbnQKKzQxNTY3IGExN2NjZmMzNzJlOTlhOTg0MDRmZWIzNDMzNTAxZTBhODcxZTU0MmMgYXN0LW9iamVjdHMKKzQxNTY4IGU2NzVmZDI5NWI0YjllMjY1MTMxYzQ0YWIzOTNmYzcyODA4ZjUxM2YgYXN0LW9iamVjdHMKKzQxNTY5IGNjZDhhMGQyODk1MDk2NmQ4NTNmNTg2MmE2NGU2NzViZmVkNjk0MjMgYXN0LW9iamVjdHMKKzQxNTcwIDViMGY1ZDk3NjMyNThmOWFmODdmZDE2Nzk1MmYxZGI5YmI2YzI5ODkgbGVnYWN5LXRydW5rCis0MTU3MSBhNWQ4ZjA1YmFmOThjZjJjNTBkOGZmNTczNmYzYTc0ZTk3NGU1MGNiIGFzdC1vYmplY3RzCis0MTU3NCA5NmE0ZTgwNjQyNWU0MTg1NWU3NWNmNTMzMmNjYzRhYmUxYTUwNzUzIGxlZ2FjeS10cnVuaworNDE1NzUgNDY1MDE0OTAyNTJkYjdhYWEzMWRjOGNhNzk4Yzk4MTkxODc0MDAzMiBhc3Qtb2JqZWN0cworNDE1NzYgZWI2NmVhZTljMmM4YzM0MjA0MjAxZjNjYjNhNTNiZGJmYjJjM2MxZCBhc3Qtb2JqZWN0cworNDE1NzcgODUwN2Q1ODI1MzU0YWY3OTViYjViNWZlNmEwNDY5MWI2ODM4ZDM1NCBhc3Qtb2JqZWN0cworNDE1NzggOWMwNDkwOTk3ZTY2MjAwY2UzOGNmZTkwMDc0MDlkODY0YWQyOGM4OCBhc3Qtb2JqZWN0cworNDE1NzkgYWJmZWFiNzNjOGYxOWNjZWY3MmU4NDQwYTUxZGU3NzI3NzA0YmUwMiBsZWdhY3ktdHJ1bmsKKzQxNTgwIDgwNTYzZGMxMzQ4NzVmMGZhYWZjODk2NTU0ZTlkZTFjZTVhNDk0MjggcmVsZWFzZTI0LW1haW50Cis0MTU4MSA2ZjQ2MTBmNjkyZTBlYWI4NTViYmU4M2UyZGE0M2E3M2ZjNDAwM2ExIGFzdC1vYmplY3RzCis0MTU4MyA3YWFhMDlmMWEwNDcyNDMzMWMzZjVmNTVhNDQyNGIzYjFlMzc4MjExIGFzdC1vYmplY3RzCis0MTU4NCBjNTkzZjMzNjQzZGRmNTBiZWQ1MGNiMWVlNmUwNzg1M2JiNDU5ZmMyIGFzdC1vYmplY3RzCis0MTU4NSA4MWM5NDRjM2QxM2EwNThmNWZmNWM3ZWNlYzcxZTY0MDIwMmY5OGU5IGxlZ2FjeS10cnVuaworNDE1ODYgMTkxYjU5OTA5ZGVkOGQ0MDM4YzM3YTYzMWFlOGVlOGQwNjhhZjQzOCBsZWdhY3ktdHJ1bmsKKzQxNTg3IGU3MmJjNWRhZmUxNmViZWVlOWFmYjU1ZTEzZDVlN2ViYzAwODkwMGQgbGVnYWN5LXRydW5rCis0MTU4OCA1ZDk2YTUzNmJiZjNlNjVkMjNkYTgwMmYzOTk2NzU0YWI2NTU1ZDg3IGxlZ2FjeS10cnVuaworNDE1ODkgYWQwZjAzODVjNmYzOThmYzRkYWViOWEyMGFmMDRmZTM0MTE4NTM2YSBsZWdhY3ktdHJ1bmsKKzQxNTkwIGNmMzFiMmM4ZTg1NDYwZjBkNDg0OWRlZDBkMDc0NDhlYzhmOGFkNDkgbGVnYWN5LXRydW5rCis0MTU5MSAwM2FlMGI4ZWI2Y2JmYjRiMWNiYWVmNTQ4NDIwODRmN2EyYWQ4ODc4IGxlZ2FjeS10cnVuaworNDE1OTIgZTI2ZGMzMzQ4OTA5YmY3MDA1Mjc1NDg2ZTY5ZDdjYjc4NjdjMzdhNSBsZWdhY3ktdHJ1bmsKKzQxNTkzIDE2ZTAzY2ZiOWEwMjJhZTFkMzkzYjZlYjdjYTM5M2ZlYTBlY2Y4YTkgYXN0LW9iamVjdHMKKzQxNTk0IDc1ZDUzNmIyNDdlYWE5YzE4YmJhNTAyZjIzNWUzNTIwYWQ5MTMzNjQgbGVnYWN5LXRydW5rCis0MTU5NSBhMDg3ZTdiZjUwZjFkZTM3ODQ0MDFhZWQwNDYwMWE0MjVkYTliZGFkIGFzdC1vYmplY3RzCis0MTU5NiA1MDk5NTZhNTRmMzc2MTc2MTg2ZDYzNzYzYjc4NjdmYTBmYjEwZjA2IGFzdC1vYmplY3RzCis0MTU5NyAzYTQyMTRiZmI2ZTQ0YjAwNWVlMTJiZDgxNWZmNTc1MTZmZjFjYTRlIGxlZ2FjeS10cnVuaworNDE1OTggNTIyNTEyMjRjYjk5NWUxYmQ3ODk2ZWQ5ODA4NTg2NDAwOWYxMzJlNiBhc3QtYXJlbmEKKzQxNTk5IDViYTkyMGVlZjAxNjA0MzgxMzkwNTdhYzc5NjZkMDQ0M2I0MDI0Y2QgbGVnYWN5LXRydW5rCis0MTYwMSA4ZWRhMWE1OGE0OTAzNzBhMjZmMjI0OWZlZGU0YTU3MjI1MTlmZDJkIGxlZ2FjeS10cnVuaworNDE2MDIgZjAyMGE3YWRlNmI1ZDVlZWM3ZGI0ODNjZmU0NTBjZGQ0MmI2MWUwYSBsZWdhY3ktdHJ1bmsKKzQxNjAzIDFlMTI4N2I2ZjY1MjZmNTljYjNmMWQwOTQwYTc5MjE2MzMxNjczNDYgbGVnYWN5LXRydW5rCis0MTYwNCBjYjNhZTdjZWExMDY2NjI0OWMzZjJhMDMxZWY0ZmJiMmEzZWRjMGQ3IGFzdC1hcmVuYQorNDE2MDUgNWQwMzFiZDIyMzA3YmNiNDU4NmNhY2E5NWUwN2YyZmExNzVjMzVmMCBhc3QtYXJlbmEKKzQxNjA2IDNjMjFkNWJkMTViZTYzZmY1ZmRkM2Q0OGRmNjNlODY1OTAyNDFjNmEgYXN0LWFyZW5hCis0MTYwNyBjODk3MDdkYWEwMTE0NDljNDE1OWEzYjVmY2VhMmM1MGYyMjZjMDgxIGxlZ2FjeS10cnVuaworNDE2MDggMDFiZDE0NmRjNTIwN2Y3ZDdjMTdiZTIyYzM0YzdhY2JlYmJjNjM0NCBhc3Qtb2JqZWN0cworNDE2MDkgYzgwMDliZDYxMTRmYTY1YjA4NmJlYzhkMThjODYwZjk3MWM2MWM0YSBhc3QtYXJlbmEKKzQxNjEwIGVlNTU0MzBlNWNmZTc3OGRjY2E2NjczNmMwN2M1MjdmMTQxYzUwMDggYXN0LWFyZW5hCis0MTYxMSA1NTFkNThiM2QwY2QzYzc2YzUzMGZhZmRkNTg2Mzg2MzAzNTY2ZTlhIGFzdC1hcmVuYQorNDE2MTIgYWE1ZDhlNGEwMGE4YTQ4NjM4NjQ1ZDg1NDQwYThjOGU2NTcyN2ExZCBhc3QtYXJlbmEKKzQxNjEzIGMxZTY3OGU3YmIxMjgzOWJiYTM4ZjFlODc0ZWUyMWNlNDNmNWI0YjggYXN0LWFyZW5hCis0MTYxNCBhMjlkYzU4YTk5ZjM4OTRlYTQ5ZTNkZTM5NWJjNDJiNGVlYjVmZTZiIGFzdC1hcmVuYQorNDE2MTggMTFlZTk4MmY4YzhkMGU0NjBmNGYxYTRkMGRhZmZhY2NhZjlmZGEzMyBsZWdhY3ktdHJ1bmsKKzQxNjE5IGQ0N2FiZjk3NThjOWZlYWU3NTk3YzZmYzRiODJlZTlhOWViNjJlZjAgYXN0LWFyZW5hCis0MTYyMCBjNjI5ODEyNTAzOWU0ZGZiMTM4N2JiMDkxMWVhYjA5N2YyZWE5ZDFiIGFzdC1vYmplY3RzCis0MTYyMSBjMGMxMmFhNzU3ZTcwOWYwOWM3NmJkMzE3NjIzMDc3N2YyYTVlMmZkIGxlZ2FjeS10cnVuaworNDE2MjIgYWJlMWIzMzJlYWEwMGY3MDc0MDkzMmMxZjY5ODYwYzZhNjM3YTljNCBhc3Qtb2JqZWN0cworNDE2MjMgYzIzNmViNmQ5OTM0NTI3NWY5ZDRmZGFlYWYzNzZlMGFhOWRkY2I2MyBhc3QtYXJlbmEKKzQxNjI0IDFlNjllNjNhZTNhMDhiNDlmOThlYjc1ZjAxM2E5MzhhZDlhYmQ1ZmMgYXN0LWFyZW5hCis0MTYyNSBhYjhhYjliZTZmNGI0N2NhMGJiMWFlNjlhOTgxMGM0M2I0YWU5OGUyIGFzdC1vYmplY3RzCis0MTYyNiBhMjljODliNGU4YzYzMDk1YzcyYzE0ZTI1ZWU4MTkzOTk5MGFlZDM3IGxlZ2FjeS10cnVuaworNDE2MjcgOGFkMzE5ZjNhOTM1ZWM1ZDRhZmEwZjFjNWUyOGY5Y2U4NjgwMmQ2MCBhc3QtYXJlbmEKKzQxNjI4IDUxZTNhODM4YWViZTc0MDFkYzg2MjhjODIxNjZjMDAyZDljZjIwMmUgYXN0LWFyZW5hCis0MTYyOSBhYjQzMWIzMjRhNGJkNDM5OTczMjJmYWY5YWQzYjU2MzgxNzUyMmY4IGxlZ2FjeS10cnVuaworNDE2MzEgYjc3ZWRjZWU4ODhjYTM0NTFhNzA1YmJmMzQxZDA5OGQyZDNmMDVmYiBsZWdhY3ktdHJ1bmsKKzQxNjMyIGRiY2M4OTEyYTI0ZGVjNDRkNmVjYTNkMDkwMjlkN2MzOGNhYTZkNzEgbGVnYWN5LXRydW5rCis0MTYzNiA2NDljMzQxODBhMGY1MGUwMDU1MDRiZGY5NGUwNDJmYzhhYzcwMTZhIGxlZ2FjeS10cnVuaworNDE2MzcgOTZkMWZhMzY5NjRkNGUxMWEwMjczYjQ5ZTRmMDZkYzEyZmI5NTdjNCBsZWdhY3ktdHJ1bmsKKzQxNjM4IDk1NDEzNjliMGRjYWYwNDhmMWJkOTg2YTI4Yzk2ZmZlZWUzN2Y4MDggbGVnYWN5LXRydW5rCis0MTY0MSBjYzMyNjE1OTcxMzZjNjI1NmY5MWNhNzYzMGRkYzZjOTMyOTA3ZjNkIGxlZ2FjeS10cnVuaworNDE2NDIgNjMyMTY2OWYyZjRkMTBjNmJjZTViZTM1ZTkxYzE3ZDk5MjM1NTE2MCBsZWdhY3ktdHJ1bmsKKzQxNjQzIDBlYjZlZjkyYzU2ZTI1Nzk2YjNiMjljZGNjMTkwNDhkMTNjZWIzYjkgbGVnYWN5LXRydW5rCis0MTY0NCA1MmYxZDU3ZjIzN2RiYmRjNWQ4Mzc0NGRmNmQxM2Y0NjRiZGE2MTMxIGxlZ2FjeS10cnVuaworNDE2NDYgZTRiNjIxZTFlZGE2NjIyMDU2NTBkZGMxMTQ2ZjVhYTUxNTQ1NTJjZCBsZWdhY3ktdHJ1bmsKKzQxNjQ3IDMyZTdmZTljMjNiOTFjYjJmNTExODhmYjgyODUxYjg3YWE2YjcyNjYgcmVsZWFzZTI0LW1haW50Cis0MTY0NyBmNmU3MzRiMWYyNjFjNTQ2ZDgwZTk4NDkwMzgwNTRiZjA5N2ZmODRlIGxlZ2FjeS10cnVuaworNDE2NTEgNmY1MDJkMzVmYzc3NWJlNjdiODMxZDRkYjNlNWE1OTk0MWExMDg2MSBsZWdhY3ktdHJ1bmsKKzQxNjUyIDEwMjE0MGMzYTM2MTRkYjNlOTMyNWFiMDIxMjQ1NzE0ZTFkZGQxNmYgbGVnYWN5LXRydW5rCis0MTY1NSBhNWFkNzZhNzhmNGIyOWE4YWE3Zjc0N2RkYjZmMTZhODJkY2UzOGZkIGxlZ2FjeS10cnVuaworNDE2NTcgNTIyZTAwNzNkOWM5ZThiYjc1MTdiZmM2OWMyZWIzYmMzYmQ5ZjI0NSBsZWdhY3ktdHJ1bmsKKzQxNjU4IGY5NDQxODcxNWU1NTMxMjk5ZjNhYjdjY2RjMjE1YzBhMmMzMGNiMzcgbGVnYWN5LXRydW5rCis0MTY1OSAwN2ZkYjRkMmI4ZjYyMzM3ZDM5MzY0YTU2OTM1OTZmNGYxYWQxMDRmIGxlZ2FjeS10cnVuaworNDE2NjAgMDdjZTkzODg1N2UxYmEyZjE4NWM1OGQzYTJkZWE5NzYxZTEyNzdjMCBsZWdhY3ktdHJ1bmsKKzQxNjYxIDE2NDcwYjcyMmYyMDljMDEyNTQzZThhOTAwZWQ5YmQ3MTQ2NjRkOTAgbGVnYWN5LXRydW5rCis0MTY2MiA0MDM2Nzg3NGY4NjE2YWM3MDQ1N2E4MzNmMWRlYmRiZDJjM2I5NGYyIGxlZ2FjeS10cnVuaworNDE2NjMgMzc3ZGYzOWJjZGExZjI2ZmQzM2Y3YmY3NzdiM2JjMjQzMzE2MDQwYiBsZWdhY3ktdHJ1bmsKKzQxNjY0IGVkMzQ3YzQzNmQ1ODk2NmNiZmQ4NGZlYmMxNDBjNTMwOTNhY2VmYmMgbGVnYWN5LXRydW5rCis0MTY2NSBjMjUzZTk5M2RmOGFjZTgyMTYxZWIyZGQ3MzI5ZWNkYTA3Yzc2ZDZhIGxlZ2FjeS10cnVuaworNDE2NjYgNjg4MTczMTViNzRjYTk2OWE0Yzc2ZTUzMGQ2NzdiMTgyYzVlNjAzMCBsZWdhY3ktdHJ1bmsKKzQxNjY3IGJmZDZhNmZjNzBlYWY1M2Q2YzEwYmUwY2I0MTJlZDRiYTRhYmZiZjYgbGVnYWN5LXRydW5rCis0MTY2OCBjZjg4NjM2Y2RmNGJlOTlkNmJlZTljZWIyNTRlOWYyOGQzM2MzNGRhIGxlZ2FjeS10cnVuaworNDE2NjkgYTE0YTdmNjE0YTk2ZGE0YmI5YmY0NjA0NTkyOGU5YTA3OGFmYjhhOCBsZWdhY3ktdHJ1bmsKKzQxNjcxIGJlYzlmYWM5Zjc3YzczMDM0MWRhYjY3ODhkZGJkZDdlZjg2YThmOTYgbGVnYWN5LXRydW5rCis0MTY3MiAyN2RmMmZiZTI3MDY2NGNhMjI4NWZkZDcyYWUzMDAxZDZkMjk5NTVlIGxlZ2FjeS10cnVuaworNDE2NzQgZGIxYzBhYWJjNDA1YTAyZWE1NWFkY2JlYWM2NmFjMTdhYzk0OWFmNCBsZWdhY3ktdHJ1bmsKKzQxNjc3IGUwMWQ4NTI0YjZmNjQyY2JiMzkwOTQxYWQ0NzNmZDU4MGJjM2JhZWIgbGVnYWN5LXRydW5rCis0MTY4MiBjZDhiNWIzMWUwMmFhNGJiOGFjOTdmY2Y5Njc3YWM2ZDE0NzU3MmEwIGxlZ2FjeS10cnVuaworNDE2ODMgOTMwMWE3YzAzMTJhYzAzYjc2OTUzOWIwMjkzM2U3OTMzMmMzMzk5MSBsZWdhY3ktdHJ1bmsKKzQxNjg0IDM1ZmU5MDMyNWY1YjdhMjJjZmE0YjEyNDIzNmFjMDA1OWM2OTBmNTYgbGVnYWN5LXRydW5rCis0MTY4NyBmMGE1MzMwZjJiM2UxMWIxZjU3MGNmZTRhYmM0ZDQzNTNmODUwOTY0IGxlZ2FjeS10cnVuaworNDE2ODggNjM1ZTBkOTA5NjQ1ZWY2NWEzMTMyYTM4MGNhZjMzOWY3YTk1OWY0OCBsZWdhY3ktdHJ1bmsKKzQxNjkxIDZkN2QxYTk5NmEwMjNhOGRhMzVlZmQ5OWFhNjE2YzRhYmFlMTQ2M2MgbGVnYWN5LXRydW5rCis0MTY5NSAyNDlmZmUxM2NhZjhhNTRjNmZkNmJjMDBkYmM5M2M4NDk0NDI2ZjNkIGxlZ2FjeS10cnVuaworNDE2OTYgZmRmMGFjMzZlYjc0NjEyZmE0NjhiMzFlNTg0OTdmYzZkNDM4ZmI1OCBsZWdhY3ktdHJ1bmsKKzQxNzAwIDRiZmNkNWRjZDBiZmEyNTBhNTk5MDM1MjJiMzZkMmI1MWZjMDhjNzQgbGVnYWN5LXRydW5rCis0MTcwMiA3NTQ4ZDc2NTZkODk4NjRiM2FlMGIzZjFkZmNlOWFkZmJmMGEzNmYyIGxlZ2FjeS10cnVuaworNDE3MDMgZGU2OWE1MjRmNGVkYmM2YzNiMTI1ZTk4ODc4NDQ1MWM1MWE4NDY3ZCBsZWdhY3ktdHJ1bmsKKzQxNzA0IDY0YzZhYjU2NzFlN2Q3NzI5Njk4YjA5MThiMTdlNjRjNDgxNTIzYzIgcmVsZWFzZTI0LW1haW50Cis0MTcwNSBkZTBjMmZlYTY1YzIxYmM5YWNiZWQzOGQ4YTAwMWE3ZTQwNTBhMjY4IGxlZ2FjeS10cnVuaworNDE3MDYgYzY5MWZkNjNlYjNjMDk1YzZlZDBiYjg5Njg5NDZhZjM1OGQ5ZDNmOSByZWxlYXNlMjQtbWFpbnQKKzQxNzA3IDE4ZDI3YzQ0NDdkMTEzNmNkYzNiMTNlMDA2ZWEzMDNkZjY2YjY1ZmIgbGVnYWN5LXRydW5rCis0MTcwOCBjMTE1MTM2OTNjYjk3MDNjZTY5YTYxNDIxMWYxMzI5ZTk5ZmQxYWYyIGxlZ2FjeS10cnVuaworNDE3MTAgOTg2NTNkOWY5Y2MzOWMzZTU5M2I0MTRiYmVjYmI4ZGExNDNjNGM4MyBsZWdhY3ktdHJ1bmsKKzQxNzExIDY1MmJkNWU1Yjc3ODJmODZjMDdjM2ExNTIxMzY2ZWExMDlmZTA3NDQgcmVsZWFzZTI0LW1haW50Cis0MTcxMiAxOGYwOWFjNjE5ZTg5MmYyZTlkNWIwYzgzNTA1OGUyMjk3ZWRiNDFlIGxlZ2FjeS10cnVuaworNDE3MTMgYTU1ODMxZDMyOTE1YTA1ZjYxYTFjZjllZGFjM2E4YTkxNjg5MDc1NyByZWxlYXNlMjQtbWFpbnQKKzQxNzE0IDRkYjE3YTAwYmRjZDM1MzA3ZjM2ODcyMDExZDViZDM1YzYzYzRlZDMgbGVnYWN5LXRydW5rCis0MTcxNSBkZWUyNTNhMzExNmM0NTZmOWI4NmNkNzc4MWUyNWRkMzUxNGI1NTU2IHJlbGVhc2UyNC1tYWludAorNDE3MjIgNGVjNjAxMTEwOTA2MTM3NjFlOTkwZmViNmUzZGNkM2M4YjcxNjVmOCBsZWdhY3ktdHJ1bmsKKzQxNzIzIDY1ODZjZDk5MjBlN2UzZmY2YjFjZTA0OWE0NTk0M2QwMWQ0Zjg4N2MgbGVnYWN5LXRydW5rCis0MTcyNCA5Yjg5N2ZiN2FjNmEyMjE2ZDY4OThjZWMwOGRkM2I1MTA2NzkwMzQyIGxlZ2FjeS10cnVuaworNDE3MjUgZjg5M2Q0MDNhOThjMWY4MTljMDIxNmE2M2Y1MjkzOTNhMWM1ZmZiMCBsZWdhY3ktdHJ1bmsKKzQxNzI2IGZhMDhjNjk3YTI3NThkYjNmZWNmZDBkOGY4OTIyMGJiNWQxYTc1MTMgbGVnYWN5LXRydW5rCis0MTcyNyBhZGU2Nzg2ODdkM2IzMjgwNWM0MjY5OWZhOGNmYTNiMjIwNjk4NzE3IGxlZ2FjeS10cnVuaworNDE3MjggMzIxZWZkMDM3ODU5Y2NjZTgzZGU2NjNkOWMzNjdjMmZmYmRkMmYyZSByZWxlYXNlMjQtbWFpbnQKKzQxNzI4IGYxYWUxMTQ1N2QzNGJjM2IwYzY3ZjdjYzAzNDNlODllY2Q1Mjk2YzEgbGVnYWN5LXRydW5rCis0MTcyOSA4NzdiNWQ0Y2EzNjgxNzIxMzRmYTcwYjIxNDRmNGIwYTdlOWFiMzc5IGxlZ2FjeS10cnVuaworNDE3MzAgNzMxMDMyZDEwMTU5ZmJjMGQ1MjQyNDUzZDY4Mjc3OWUxNDY3ZjU3OSBzc2l6ZV90Cis0MTczMSAyNzkxOWNmODRkYzNkZGYwY2RiMzBlYzExMzRjZDZjN2M4YTkyMmMyIHNzaXplX3QKKzQxNzMyIGNlYzljMmMxNGUyOGQ0NGY0MDYwNjUyN2NlODExMmE0YzY3OGNhYTAgbGVnYWN5LXRydW5rCis0MTczMyA5ZWM1YjE2NWZlYTA4MTRhMjdiYWE4Yjk2NWYxNTI5MTA5ZDExYTNmIHJlbGVhc2UyNC1tYWludAorNDE3MzQgNzk2MzEwY2JmZmViMjMyNGU5NDZmZjU5ZTJlZTJlNTEyNjI2MDYyMyBsZWdhY3ktdHJ1bmsKKzQxNzM1IDRjMTVhOGU5MWFlNzRmZWM1YmQwYWM1MzBkYzY2ZmYzMWYxZmE5MzUgcmVsZWFzZTI0LW1haW50Cis0MTczNiA4MWQ1OTk1OTUxZmQ0MTBjYTg2ZGMzZjc0ZDUwZGYxNjM2NWQwZGY1IGxlZ2FjeS10cnVuaworNDE3MzcgOTgwNTYxOTU4ZjFkMzkzM2ZkNjIxMzUxZjlhZGQzZWQyOTljMGM0NiByZWxlYXNlMjQtbWFpbnQKKzQxNzM4IGZiNmU2NGViODZjMDM4ZjMwMmNlMjhmM2Q5ZjZmNzJjOTc4OTExNmEgbGVnYWN5LXRydW5rCis0MTczOSBlYTA4M2VmZGM5NmM3M2E5OTIwNDNlZmVjN2RjZTI3NzcxZTNkMWRjIGxlZ2FjeS10cnVuaworNDE3NDAgNzE5YmEwMmQyZTJjYTYzZDE1MTIyYjQ0NmRjM2YyOTNmZmVkNGM2MyBsZWdhY3ktdHJ1bmsKKzQxNzQxIDdiZmIwOTdmOTU5NzZmNGViYzc2YTM3OTVjZTMwMDc1MjVkZjE4OTggbGVnYWN5LXRydW5rCis0MTc0MiAzZDFiYWY3MTdjNWFmNWQ5ZWY4OTE4NmY1MDM3NTk0ZTcyNmI5YTBmIGxlZ2FjeS10cnVuaworNDE3NDMgZDAyMTRiYjFmZDUxMmI2N2YxY2U0ZWJiMGNlMjNmYzFlMTE5NmYyOSBsZWdhY3ktdHJ1bmsKKzQxNzQ0IDk2OTdlZWVhZjI0NjYzMmVjNDA5M2E3NzZhODZhNzAwNjEyNzlhOGUgbGVnYWN5LXRydW5rCis0MTc0NSA0NWY3YjczODNhNGUyMGE5NzEwZjUyZDljZDk2ZTU4MzcyNmY2NTc2IGxlZ2FjeS10cnVuaworNDE3NDYgZGUxNmE4NWMzYjRjZjM4ZTJlNTZhNzg4MzZmYzc1NzFiZGQyMWYyOSBsZWdhY3ktdHJ1bmsKKzQxNzQ4IDE1YjU4ZTQ1ZjFhMTMxNmFjYzE1Yjc0ZDE3ZTM4MDBlOWRmN2YwZTUgbGVnYWN5LXRydW5rCis0MTc0OSBkYTBiYWI1ZGQ3NDA4OWY3MjdiODZmZmM3MjkyM2QxZWU3MmY3M2RjIGxlZ2FjeS10cnVuaworNDE3NTAgZjY3YzRhYjMwNGVjZWE4MWFhOGE0Mzk0M2FmNWEzMjY3MzA4MDk1NyBsZWdhY3ktdHJ1bmsKKzQxNzUxIGFhN2Q3ZGY4NTNkNTcwNTkwNjZkM2Q1ZTVhOWZhNzEzZDNhMjIzM2MgbGVnYWN5LXRydW5rCis0MTc1MiAzYjkwMjU4ZmVjOWY2YjJlNmIzYzk4Mzk0MGJjYTAxNDg0ZDZkNzU3IGxlZ2FjeS10cnVuaworNDE3NTMgMWZmNDc5MGI3NjA1MDE4YzY0MWZjY2M0NTk2OTIxNDdhNTNkMDE1MiBsZWdhY3ktdHJ1bmsKKzQxNzU0IDhlYmUzNGViM2ViNzQ4MDJhNDlmMmQ3NzEwZjdlNGQ2NDRhNjRkNDEgbGVnYWN5LXRydW5rCis0MTc1NSAxMDQ0MGJjZmEwNjE3MTljN2I3ZTllZmY3NWQyMWU3NDcwMTllZTJlIGxlZ2FjeS10cnVuaworNDE3NTYgMTlkOTZjMmQ3ZGY1NGUyOWYwZWY1ODQzMTNhZWIxYmRlOWExMWY1MCBsZWdhY3ktdHJ1bmsKKzQxNzU3IDNmMzU4YWZiYjNkM2YzN2FmMjAzMjNjNmE3MDc4NGMxM2I3ZTAyYzggbGVnYWN5LXRydW5rCis0MTc1OCA0Y2JmMmEwMTBkOTQ1YjZiY2Q5NTVmYTA1MTg3YzI1Nzk5NzBlYjAwIGFzdC1vYmplY3RzCis0MTc1OSBlM2VjYTY1YWUxNDRmNWRjODQwYjg0NjU0NmRkNGRlNjU5OTEwNjlhIGxlZ2FjeS10cnVuaworNDE3NjAgMzAxZmIwYTk5MzcxNDRlYzk3YjMyM2E1YjhmNDUzZWI4YjViZTc1NSBsZWdhY3ktdHJ1bmsKKzQxNzYyIGZhNjlmMGZhMzZmZWY5YjJlOWM2YTYyMTdjZTRkMTMzNGM0YjNkMTEgbGVnYWN5LXRydW5rCis0MTc2MyBlMTRmNDc5NjQ3NDgxZTRmZDljNTE4MzYxNjJmMjk4YzczMjc2YTlkIGxlZ2FjeS10cnVuaworNDE3NjQgNDlhMDQ5M2YyNDVlM2ZiODRlNTVkZjE5ZTE5YTJlOTA3MzNmYmRhMCBsZWdhY3ktdHJ1bmsKKzQxNzY1IGE5ZDRmYjg2MDdkMjlmZTlmMDAwOGQ0N2VlZGNkY2M3NGU5NzRhMzggbGVnYWN5LXRydW5rCis0MTc2NiBlYzM0NTI4NDBiOTY2ZTZkOGRlMmQzY2ZiZmE0YmM3MGY3MGFjMjBhIHNzaXplX3QKKzQxNzY3IDRhYTAxODc5YThmNWE5YmNlODMzOTE1MTM5MmY1NzIxZDViN2M0N2YgbGVnYWN5LXRydW5rCis0MTc2OCA4Y2I2ODZkZDZlNjQ1OGZmNDllNmY4M2VlNTQ4N2I5YzU5OWYxM2RiIGxlZ2FjeS10cnVuaworNDE3NjkgN2M0ZDViMzhjNTVlNjYyYTY0MTA4ODY0YTM0YjllNGU2YjA5OTc3NSBsZWdhY3ktdHJ1bmsKKzQxNzcwIGI3MGIzZTViM2NkMWM5NmI3Mjk5YmJiNGFmMDZhMmMyZDM0Y2JlOTkgbGVnYWN5LXRydW5rCis0MTc3MSBiOGIzNzgyYjJkYzA3NWJlMjc5NDZiYTViZDA2NzRkZmM3Mzg3OTZhIGxlZ2FjeS10cnVuaworNDE3NzIgZTkwZTdkOWU5ODkxMDlhMTAxOTc5MDJjYjIzODVkN2YwNzE0ZWEyMiBsZWdhY3ktdHJ1bmsKKzQxNzczIDM1NTk2MzA3ZTc4NjAyMWIxMGI0YzJmZmExN2I0OTVhNDBhY2RlMDIgc3NpemVfdAorNDE3NzQgOTYzZDc0OWM5Nzc2NDBjMTllYzRlNzJmYTg5YTEyNzZkNDViYjAyMSBzc2l6ZV90Cis0MTc3NSA1YTg3NjQ0YTM5MDAwZjU1YzE2OTg2NmIyZTdlNjQzNGUyNTBiMWY0IHNzaXplX3QKKzQxNzc4IDhkZDM1ZGQ2YjBlODljY2U1OTJjNzExZTdiMjkxMjEyY2JlYWQ4ODMgc3NpemVfdAorNDE3NzkgM2JhMjMwYzc3ZDQwMDAzMTAzYzllMTNkYzA1ODZjMzU0YTI1MWE1MiBzc2l6ZV90Cis0MTc4MSAxNmUzZWViODUyMDZmZGEyZjBiZDFiYWJiNzc3YTdmYTZiMzgyZWYwIHNzaXplX3QKKzQxNzgyIDRkMWYzZWM0ZWFkNTk2OGE3MmU1Y2Q5NGU2YzUxNTllZDc3ZWE5ZjQgc3NpemVfdAorNDE3ODMgZDZlYTE1MzBkYTMwMDQzNTViNjM3ZTNhODgzOGYzMTc2YWRkMjlmYiBzc2l6ZV90Cis0MTc4NCA0MmFjZjMzYWEzYzhhMjhmMGU0ODAzYzBkMzE2ZWE1OGQ3ZTIyMjE5IHNzaXplX3QKKzQxNzg1IDA4ZTgwYTJiZjQwY2Y4NTVkM2YzZjdlOWZhNTBkYmIwMTExMWM5YWUgbGVnYWN5LXRydW5rCis0MTc4NiA5ODhmZGYwMjUyYjc5NGQ3MDZjZDVhMDIyMDczZWJjMjkwOTcxZGNlIHNzaXplX3QKKzQxNzg3IDYxNzA2ZTU4MWVmOWNhNDQ5OTE0YzczYjlmMjk0NjU5NjlmOWMzNjkgbGVnYWN5LXRydW5rCis0MTc4OCBmMmZhNDBlODgzNjMwYjYzZWNlM2U0OTVhNTRhYjY2MWU2NTJjZGU0IHJlbGVhc2UyNC1tYWludAorNDE3ODkgOTEzYTgwZjQ1OGU2ODc0NzlhNmI4OGQ1MjljNzc2OGRjMmQzZjM5YiBsZWdhY3ktdHJ1bmsKKzQxNzkwIGM4MDg5N2JiNTA1M2NlZWQ4NzhmMzFhYjYzZTM0MGU3YzAyM2M3YjkgcmVsZWFzZTI0LW1haW50Cis0MTc5MSAyYTVlNjAwOWE0NDUyNzAzMjE1Yzg0NWRmMTA0YzcyOTE1MDI1NmFlIGxlZ2FjeS10cnVuaworNDE3OTIgNTBmYTU4YTI0ZTYwZjQxNzBlNzc5NTk2YmI1NWU5NmQ4MGMxZmVkNCByZWxlYXNlMjQtbWFpbnQKKzQxNzkzIDBjZjMyNDhlMjdlNjU4YTZlYTQ4MTI5YzBhMjQ2NTRiNDZkZTI1ODEgbGVnYWN5LXRydW5rCis0MTc5NCAzZWQ1YTRhY2JlN2NiM2I5Y2JmZmE3ZjJhZGViZmJjOTE0ZWMxMjFkIGxlZ2FjeS10cnVuaworNDE3OTUgYTkzYmU1MTlmOWVjNDA3MjRjN2EwYmIxODE0YzA5NzgxNmQyM2FlMCBsZWdhY3ktdHJ1bmsKKzQxNzk2IDdlY2M0MGQyMDU4NjQxZmM3Y2IzMzFmYmU2YzhlMzU4NjE5MzcxOTEgbGVnYWN5LXRydW5rCis0MTc5NyA3NGJlZGZkMGJkNmIyZmZjYTFlYWEzMjkzYTE0YWRhZmNkZjljNmJmIGxlZ2FjeS10cnVuaworNDE3OTggNWNlNDcxMDNmODQ3OTQ5ZTM1OWQyMWE1MDE2NjY2ZmM0OTcwMWRlMSBsZWdhY3ktdHJ1bmsKKzQxNzk5IDNhMzk0MzFhNTRhNTNhYjc2MzNjYjhhOTIyOTFhZDcyMDk5YjIwNTggbGVnYWN5LXRydW5rCis0MTgwMCAzNGE1MTU0ZTYxMWNjMTA2OTcwN2I4YTc4ODA5NTU5NTM3OGQ2ZjUxIHJlbGVhc2UyNC1tYWludAorNDE4MDEgZjAxMTI1M2QzYzQ3MGQzMzkxZTBlYzcwMzA3ODI0OWVmYjA5OTdkNCBsZWdhY3ktdHJ1bmsKKzQxODAyIDYzMGQwMWZlY2ZlYzY0MWU0ZmNhYzA0YTJjNzg4M2E4ZDJiNmJmZGQgbGVnYWN5LXRydW5rCis0MTgwMyA1NmRkZjNhYTEyYjExY2NiYWEzY2VlOWQ5MTVkYzMxMmJhY2MzMGU0IGxlZ2FjeS10cnVuaworNDE4MDQgOThlMjU5NWQ3MzdmMDFjMzM5OWIyYTI2ZGU3MDI4NzhjMmMyMDNlNSBsZWdhY3ktdHJ1bmsKKzQxODA1IGU5YTEwZjc0Y2Y4OGFjN2UzN2MyOGUwOTc4YTRmMWQxNGQ0YWNkZTcgbGVnYWN5LXRydW5rCis0MTgwNiAwM2RiZWMwZDk1MDQ2ZTFhMWY5MTM2Y2EyYzU4N2RmYTNmNDlkODZiIGxlZ2FjeS10cnVuaworNDE4MDcgNzY3NDFlNzNiYjY0OTc4Yzk2N2E4MGZjMjhhYzAwMmEzYzI0M2RhYiBsZWdhY3ktdHJ1bmsKKzQxODA4IDdkNmFiOWYzOTk5NmNjZmEyOTcwYWIwZmFmODQxYTVlMzkzMDNmNTMgbGVnYWN5LXRydW5rCis0MTgwOSAwNDRkMzVjYTM0MjQ3YjZlNzkyMWQ4ZTJhZGI3ZDhhMzc1ZTNkZmZmIGxlZ2FjeS10cnVuaworNDE4MTAgNmNiNTczOWI3MWNlMGI4NGNjZTE3MTkxM2ZmYzczN2JjNzU3NDExNSBsZWdhY3ktdHJ1bmsKKzQxODExIDQzYmM3Y2EyZDlkZmI4NzliYmUwMzRhYzg2NjdmOTY3YWQ3NDg1M2YgbGVnYWN5LXRydW5rCis0MTgxMiA2ODYzMDZhNjdlOWIyNDYyNWZhZjUwZmNjOTgyMTZlMGNjMWNjYjMzIGxlZ2FjeS10cnVuaworNDE4MTMgY2FkYzc3OGFlYzc5NmYyMzU0NDdjNDU1NTdkMWZjZjJmNWQ4OTE2OCBsZWdhY3ktdHJ1bmsKKzQxODE0IDZmMDYzOGU3YmQyMzY4OGE0ODZjMDVlOTMwMGUwZjgwOWQxNTk5ZmMgbGVnYWN5LXRydW5rCis0MTgxNiA1MzZmMjRlMTZhZjI0NjgwMjE5N2JhZWVmM2IxMzQ2ODU4NzFjOWFlIGxlZ2FjeS10cnVuaworNDE4MTcgMTYyNzc3MThjZWI5YWU2NjMxZjI5NzU1N2Y1YzgxOTliYmRjNWFhZCByZWxlYXNlMjQtbWFpbnQKKzQxODE4IDIzZWI4Njc3YmRhZDEzOGZmNmRlZDdiMzg5NjE4YzM3MzNlODk5OGYgbGVnYWN5LXRydW5rCis0MTgxOSA3NmQ1MTE5NzI2MTYyNzc4OGFkNDRjNjNmZWIxYjY0MjQ5MmMxODUyIHJlbGVhc2UyNC1tYWludAorNDE4MjAgZTQzMTZkYTE5Y2ZjMWQ5NGFlOGI2ZmQ1NTJjNjU1Yjc5MTg5YWFlZSBsZWdhY3ktdHJ1bmsKKzQxODIxIDIxNDMzNzFiYjkxZmMyMzdlM2Y5ZDVjOTdjNGE1MzkwMmQ2MjBiNTAgcmVsZWFzZTI0LW1haW50Cis0MTgyMiAxNTZkZjc3Zjk5MmViZWZkZjZlODhlMWVkZTRhZDEyZWMwMzZlM2RhIGxlZ2FjeS10cnVuaworNDE4MjMgNTlhODliNTg4YzMwOTZhMzZiZTY5MGY0ZjE4YmRiYzczZDViNDZhOSByZWxlYXNlMjQtbWFpbnQKKzQxODI0IGUwNmRmNWUxM2RiOWRiNzE3MzdlY2Q3OTMzNDBhNjFkNmI5Y2RmM2MgbGVnYWN5LXRydW5rCis0MTgyNSA3MzBmODRjMmZkZGI1YjExNjQ5ZDg3OWFhYTQwYjZhNmVjMmFkZGY0IHJlbGVhc2UyNC1tYWludAorNDE4MjYgNDlkNjNmMzc3ZmU3MmQ3MTk1ZjE5MjJiYmNlZDNhZWE5ZDljOGI5MyBsZWdhY3ktdHJ1bmsKKzQxODI3IDE0ZjAwMmNkMDM3MWI0YTg3ZTJmYWY5ODczMDM0ODlmMTQ4NjJkNzIgbGVnYWN5LXRydW5rCis0MTgyOCBjODg2Y2IxNmExNTY0NjU2OGQyMmI2YmFkNjk0ZGYxMmJmOGQ5NDg4IHJlbGVhc2UyNC1tYWludAorNDE4MjkgZjM5YmRiZjRiMGMxYjdmYjRhOTk4ZmE3ZGI5ZWViYmM1YWJmMzVhZCBsZWdhY3ktdHJ1bmsKKzQxODMwIGE2YWUxMDJhNmUxMTllZjMxN2M2NGQ3N2NmMDJmNjJhYWU2YTc0NzggcmVsZWFzZTI0LW1haW50Cis0MTgzMSBiNTQwYjYwNzZmZDk5MTVlZDhkOGFlM2U2MjUwODRiNTM1NWI0ZWRiIHJlbGVhc2UyNC1tYWludAorNDE4MzIgN2NjMjE1ZjBjMDliM2JmMWVjMjdkNDE2YmEwMmQzYWI2NGUwYmRjMSBsZWdhY3ktdHJ1bmsKKzQxODMzIDIzMzk3NWRhMjQ3ZTIyYWU2OGMwZjdkOTNmNjQ0M2UxODNlOWNhMTggcmVsZWFzZTI0LW1haW50Cis0MTgzNCA4ZTQzOGJmNzZjYmJmMjUwNjJhNTU0YWM4NTc5ZGM2OTY2ODZkNjE0IGxlZ2FjeS10cnVuaworNDE4MzUgMTAxYjYxYTllZWQyZTUxOGM4YzNhNWYwOWIzYWM4NjBkMzNhZWY2OCByZWxlYXNlMjQtbWFpbnQKKzQxODM2IDgyYTUyYTQ2NGFhMjU2Y2JhYjc3ZTY1ZGY3YjQ5Mzk1MThkNGIyNDcgbGVnYWN5LXRydW5rCis0MTgzNyA3NGQxNmViMmNhYmRkMmVhNDNkM2IxNzExMTExZTY0MGU0YjY1ZGU5IHJlbGVhc2UyNC1tYWludAorNDE4MzggMjJkYmY1ODE4YjBiMjk0ZTQxZjQ3NDU5ZTkwMDdjZDEwYzE2ZmViYyBsZWdhY3ktdHJ1bmsKKzQxODM5IDg1MGY3ZDFlNGNhMjc2NDVmMzA5NWI2OGEzZTY1YmMxNTg0NzUzMzkgcmVsZWFzZTI0LW1haW50Cis0MTg0MCBhYTcwNzA0MTUwNWQ4OTljMzM0Mjg3NzExYWNjOWJiZjVkNDEwYzdmIGxlZ2FjeS10cnVuaworNDE4NDEgZTQ0YTgzM2VjYTQzMzVkODUxMjJhMjY2N2YzY2FkN2MyYzY2YjA5NyBsZWdhY3ktdHJ1bmsKKzQxODQyIDJlYjc4ZjVkMTQ1MDBlNDY1MmYzYmNkNTczOGM2Y2YzZTQ0ZDRjYmEgbGVnYWN5LXRydW5rCis0MTg0MyA3M2RhNTkxZjliZGJkZDVjZTk3ODA3MjYxNWFhYTdhMWRmN2IwMTQyIGxlZ2FjeS10cnVuaworNDE4NDQgZjkyODEyODNiMTA5YTQ5YmQ0MjdiZjY3NzIxYmRiZDA5YWE1Yzg3MyBsZWdhY3ktdHJ1bmsKKzQxODQ1IDA0MmViM2QxY2UzZjMzOGFlNjFlMzVmM2M1ZWJmNzRkYTUwYTUyZWYgbGVnYWN5LXRydW5rCis0MTg0NiA5NjNhOThkOGZlMmU0ZDJjZmYyN2Q2ODcyNTQzNGU3MjQxM2Q3ZWQxIGxlZ2FjeS10cnVuaworNDE4NDcgZmU5YmQyMWYyN2YyMjg5ZDUwZWUyNjE0MzcxNzQ1NWQ0OGNhNTM4NyBsZWdhY3ktdHJ1bmsKKzQxODQ4IGM3MWNhMWNkMzYzYjc1ZjM0OGVhNzY0YmZmNGI3M2E0MWI5ZDVhNmUgbGVnYWN5LXRydW5rCis0MTg0OSA5NmViMmE1Y2ZiZWY2MjNlZWZkMGI2MTFhZGYzODcxNWM4Mzk3OTZiIGxlZ2FjeS10cnVuaworNDE4NTAgMzQ1MWIxMDlhMjRjNTYzZTkxYWM5ODA4NGFlYzgyZjUyMzcwODY1MCBzc2l6ZV90Cis0MTg1MSAyOThmYzMyNjkzMTBiZTlkN2ExNzk3ZTk1ZDZmYTU1YjI1ZjJjNzViIHNzaXplX3QKKzQxODUyIDI2MTA3YzVkMDU3YzFmZjhjODkxZTc0NTQ4NmEwMzc4ZjcwOGI1OGIgbGVnYWN5LXRydW5rCis0MTg1MyBmNDUwNzc3NGQ0ZTQxZmZlNGVlOTU0MGExMDI0ZTQwMjBiODEzMzE1IHJlbGVhc2UyNC1tYWludAorNDE4NTQgZDk5M2EzZWU4OTFlZDgyYTQxYzUzN2Q2ZmY0ODA4YmJmYWQ2Njk4ZiBsZWdhY3ktdHJ1bmsKKzQxODU1IGNmZDFlMWY0ZmRkZGIxMjc2OTc1ZmI4ZmQyOWZkNjIyZWIyNzVlOWEgcmVsZWFzZTI0LW1haW50Cis0MTg1OCAxZTU5NWI2YzkyNGUxNzA4ZjViYjJjZjBiZmM5ZjI2YjE5MWJmZTdmIGxlZ2FjeS10cnVuaworNDE4NTkgYmI1MWQ2YzZhM2UwM2EzOTNlYzgzNjZlMDQ2ZGMwMzNhMGQ1NWIwOSBsZWdhY3ktdHJ1bmsKKzQxODYwIDUwODg2ZDQyYjQ0NGU0MGQ3ZTkzNjNjMWFiNjJhMjQwMjkxMjkwNzIgbGVnYWN5LXRydW5rCis0MTg2MSAxNDdjMzVmNDM1YTBiNWFkMDgxNzIwOGM2ZmFlZDY2NTU3ZDkzZjFhIHJlbGVhc2UyNC1tYWludAorNDE4NjIgNmYyNTAyOWRlOWRiNDM2ODQ3MTk1Mjk5NmY5OGI3MWRiNGY2YzIyYiBsZWdhY3ktdHJ1bmsKKzQxODYzIDgzNGRkNjY0YWVmY2E5ZmUzNTMyZjA5MTUwMmRjYjU0M2Y0NjVmYjUgcmVsZWFzZTI0LW1haW50Cis0MTg2NCA4YTJhYjVmNTE5MzJmZWEzYTEyMmE2ZTM4OTJkYWE5NjY3YTUzNDAyIGxlZ2FjeS10cnVuaworNDE4NjUgNjUyNDI5YzRmMmE0OTJmNzNjZTVhODlhNDA0ODFmYThmYzc4MmU2MCBsZWdhY3ktdHJ1bmsKKzQxODY2IDI2NmJiZGY5MWJiNTNlNzJiMjJmYzVkZTk3ZWZkMzZmOTA4YzZkYTAgbGVnYWN5LXRydW5rCis0MTg2NyAwMGRmMDVmYTgxNjE0YWU2MDkyMWRmNDMxMzkwYjJiYjJhN2E4Y2RhIHJlbGVhc2UyNC1tYWludAorNDE4NjggMDllZDZjOWJkYmQ5YTI5NWM1YzJjOGUwMDkzYWMwNzZhYjhlMWRiOCBzc2l6ZV90Cis0MTg2OSBjMTg1MDRjZWYyYmE2NWFjMzI1MTM1MjEzOWY0MzkxZjRiNzMxZjBlIHNzaXplX3QKKzQxODcwIGMzYWRjNzdlYjI4OTFlMjA0ZjJiY2VkN2VmMzE0MGZkZTJmZjI0N2Ygc3NpemVfdAorNDE4NzEgZjU0NDNiZGY5YjBkZjhjMTkzZmFhNzZhY2ZmOGI2NTQ2YTEwZmFmMiBzc2l6ZV90Cis0MTg3MiAxMjQ4NGI2NTlmYTg2N2E4NDQ4MzNhMjZjZWMyNjhmNDI5MjkzYjkxIHNzaXplX3QKKzQxODczIDQ2ZmY1YzU4NmQ4NjM5NzEwZWIzM2QxYTMyYjYyOWE2OTgzNjA3ZjUgc3NpemVfdAorNDE4NzQgYTIyN2VmMjZhMThkYmQ0MmQ4OTJiNzA0NjVkNDhjZWE4ZDAyYzllZiBzc2l6ZV90Cis0MTg3NSA1MGE0NzUyMWI0MGY0MzBlNWViZWE0N2I4Yzk4M2MyMjBhNTE3NmYyIHNzaXplX3QKKzQxODc2IGM4OGE4MzBkODMxYzFiZjM3MjYwZjQ1MTA1MGE5N2VjNmQ4YWUzYWIgc3NpemVfdAorNDE4NzcgMjkyNDM1YTczMmU4YzI0OWY5MWU5Y2JmYjNhMzBiNGFkMjMwYzg1OSBsZWdhY3ktdHJ1bmsKKzQxODc4IGFkZTQ2MzcxZjA0YjA1YzlhMGY2NjIwMzk2MzFhNzlhMDQ1OGRkZDYgbGVnYWN5LXRydW5rCis0MTg3OSA2ZGQ2MjU0MmI2ZTVkYmY4ZTFmMGRlMzRjMWEzZjgzOWY1MGVjNWJlIHNzaXplX3QKKzQxODgwIDg1YjJkODA0YWMwYWJjNzg5OTQ3OTk2Y2ZjNTQzZjk5MzVkZGMxZDkgbGVnYWN5LXRydW5rCis0MTg4MSBiOTA4NjU0NDM4MmUyMjA4MjM1Zjc0OWNlMTcxZThlMjg0NDJmNzI5IGxlZ2FjeS10cnVuaworNDE4ODIgZjMyMWJlMzRiODVkNWY1NTg0N2VmM2I1MDk5NzcyOGE5Y2Q4M2JiZSByZWxlYXNlMjQtbWFpbnQKKzQxODgzIDAzYTBiMThhNzViZjVkZGM4MDRkZjI5ZWY4MDQzNWI5NDM1MWE1NTQgbGVnYWN5LXRydW5rCis0MTg4NCBhODExZWJhMzBmYTRkZjNhZmI3NzAyODFlZDg5MWRlODhmMTc2YWZkIGxlZ2FjeS10cnVuaworNDE4ODUgOWI5Y2VkNGQ3OTIxZjZjYTEzNWU0MjQwZGQzOGQxOTgzZmQxODJiOCBsZWdhY3ktdHJ1bmsKKzQxODg2IDNmNjJkMzFkNTk4NWFiMjhkMTZmMDE2MGZhMGJhODgxMzc2N2MzYzUgbGVnYWN5LXRydW5rCis0MTg4NyA0MzFkNmU4N2I5ZmUwYmY0YmE0Y2VkOWFiMzY2Y2UxZWMwNjY5NzQ2IGxlZ2FjeS10cnVuaworNDE4ODggYjI2NDhjYTIzMWU4MDI1MzJkNDAyNjBhZTUzNWI5M2Q0YmJjNDJjZSBsZWdhY3ktdHJ1bmsKKzQxODg5IDc5NzBlMDJmYzg0N2I4NTE2MGI3ZTZmZWY5Zjk2ZmQzOTM2YmUxNWQgbGVnYWN5LXRydW5rCis0MTg5MCBjODI5NzVlOTFlOTk4NWM5ZmRmNTEzYWY2ODJiNDQzMmVhOTVjNDY2IGxlZ2FjeS10cnVuaworNDE4OTEgYmY3ZWVmNTA3MmI2OTE2OTNiMzYxYzJkZmI3NjkzMjI0MGYyNWIzOSByZWxlYXNlMjQtbWFpbnQKKzQxODk0IDgxZmE0N2QyZDQ3N2JkOWJmOGU2OTQ4MTU5YTU5ODUxODc3YTRmZTYgbGVnYWN5LXRydW5rCis0MTg5NSBlZTk4NGZlOTgxYjRlZmJhOWUzYjI5MWIwNWQyYTZlNjIxM2Q3OTc4IGxlZ2FjeS10cnVuaworNDE4OTYgZjgwZWUxNDI3MjdhODYyZDJkZWE5YjU3NWNkZGNjNWNmZDM5ZTVkYyBsZWdhY3ktdHJ1bmsKKzQxODk3IGRlZTkyZWNiOGExMTNjZjI4YjUyNTk2NDBiY2YzNDE1MmQ4ZDQ3NjMgbGVnYWN5LXRydW5rCis0MTg5OCBhYTQ1NjQ0OTI2NjAzYjA0YzUxNTJlNzdlNmYyNDY2NzhkNzE3NzljIGxlZ2FjeS10cnVuaworNDE4OTkgNzllNzBmYThjMjEyZmVjNzAyMGVhMmVjYTMxMjVlMTA3NmIxNzNmOCBzc2l6ZV90Cis0MTkwMCBjZWVmY2FjZTZmMjQ5OWRiNTAxNDM2NjJmZGU4NmZiMGJjNTIzYWNhIHNzaXplX3QKKzQxOTAyIDZjODE0NWZlNDk1ZWRjOTA1OGM4YzE0N2VlYTExOTZjMDNhYWQ1ZWEgc3NpemVfdAorNDE5MDMgZWYyZDdiOWZkZTdjZjllNGQ5NWFjMWEyMGZlYzBhYTI4ZmE5Y2U0YiBzc2l6ZV90Cis0MTkwNCA2OTFlZTUyNGYwMjc1NGE5YmRkMjc4YjE1OWVlZjE1MzJjODhhNDljIHNzaXplX3QKKzQxOTA1IDc2NTRkYTM2ZmU5Y2NhODY5ZTAzZDFhMTYwNTMwNjNmZTMzNjdhOGYgc3NpemVfdAorNDE5MDYgZjA2MTMzYmNjMDVlNjY3YjA1MzVjOTA5MTc3ZDE2YTg3NTI0NDcyYiBzc2l6ZV90Cis0MTkwNyA1MmE3NGEzMjM2ODIwNjc3Y2UxMTI3NTlmMzE4NDY1YTcxOGYwOTljIGxlZ2FjeS10cnVuaworNDE5MTAgNjE0OTQ4M2Y3YTNkNTU0M2M4YzVkNzczMDFkZTdlNTY2NDhmOTIzNyBsZWdhY3ktdHJ1bmsKKzQxOTEyIGVjZmVkMWY3NDc4Y2NkYjg3OTIxMjQyZTk3OTI4YWFkOTE1NTI0NzIgcmVsZWFzZTI0LW1haW50Cis0MTkxMyA5MjA4YTc5ZjU2ODNjZGJiNDk1OGM5Mjc1OTljNmE1NzMxZDQyYWY5IGxlZ2FjeS10cnVuaworNDE5MTUgMDM2MDhkNjZlNTlmMGM1NDQwMDFiZmQ4ZTdlYjhmNWNlYmMzZGFlMiBsZWdhY3ktdHJ1bmsKKzQxOTE2IDBiMTBlODU1ZGFkZjY0ODIwZTM2YTFlYjZlZGUxYWEyMGM2ZTNmZDcgcmVsZWFzZTI0LW1haW50Cis0MTkxNyBlYTZjZDFiZTk4MzdiNTI4OTUzNGJjNTE3YzYxZDAxMGQ1Yzg4ODZhIGxlZ2FjeS10cnVuaworNDE5MTggMjZiZThiMWQxODUzMDE3ZGM0ODVkOWJmMzUzOTNmNjJhY2ZlNDRlNyByZWxlYXNlMjQtbWFpbnQKKzQxOTE5IDkyZWY1NmM5N2NkZjQyMTBlZDYzZTZjNGFlMDEwMmFiN2ZlZDNkNmEgbGVnYWN5LXRydW5rCis0MTkyMCBiMzQ4MjE2NGExMDAzODE0NWIxOGU3ZmYwZjFiYzU4OTNlZThlMWFlIGxlZ2FjeS10cnVuaworNDE5MjEgNDRmMDc2MGUyNGExNjllZGFiODNmNDQ1ZTJiNzlmYmNmNzBhZGY0NyByZWxlYXNlMjQtbWFpbnQKKzQxOTIyIDM4YjBmZTUxYjBiNGY5OTVlNWM5ZDVmZDRlODBiYmNjNzBkZTI5NDggcmVsZWFzZTI0LW1haW50Cis0MTkyMyA0NGNmY2E2MTM2YzYzODJhNmU5YWJiYTkzMGIxY2MxMjA5OWIxMDczIGxlZ2FjeS10cnVuaworNDE5MjQgMDMyOTI0ZTc1YzI0YmEwMGRiZjE2MWJmOGJjNmI2Njk5ZDFhYjNlYiBsZWdhY3ktdHJ1bmsKKzQxOTI1IDAxY2JlZDVlODczMTA3MGIxN2YzNDg4ZjVkNTBjNWFhN2MwMjlhOGQgbGVnYWN5LXRydW5rCis0MTkyNiA4NzkxZThjNDQ4YjMxZTMwMDc0YzMxNzc4Mjc4OTMwMGMxYjUwYjQ3IHJlbGVhc2UyNC1tYWludAorNDE5MjkgODI1YTA0MTgxM2ZiZWUwNzhhM2JmZjNmMTEzZGVmM2E0ZWFlOTI3NCBsZWdhY3ktdHJ1bmsKKzQxOTMwIDIxNTMxZTM5MjExNmEwNjFmZWEzMTg1NTg5ZDQ1NmZjZTNiZTExNzAgbGVnYWN5LXRydW5rCis0MTkzMSAwM2E1NzQxY2ZlYTlmNjBhYmVmM2NjZTdmYmFiM2ZiYWU3MmI5ODI2IGxlZ2FjeS10cnVuaworNDE5MzIgODMzNjQ3NjNjN2IyYzZhODM5MjExMjU1MzljNTk5Yjc1MzgwYzM0MSBsZWdhY3ktdHJ1bmsKKzQxOTMzIDZkNzQzZTViYWYxNDdhZTRiNTFjNDJiOTJiZjI0NjA5YmZmMjQxY2YgbGVnYWN5LXRydW5rCis0MTkzNCBjZWUwNTk4MGYxZmQxYzUyM2YzNDIzNzE2NWZmOTg4NDJhMjNjMTk3IGxlZ2FjeS10cnVuaworNDE5MzUgOWI4ODg1YzllNTUxYzM5Y2E0Mzg5ODBhNzI0M2YwZjZkMTg0MzYwMyBsZWdhY3ktdHJ1bmsKKzQxOTM2IGM5ZGEwOGQ0ODJjMzZhZmZhOTkxNjViMmNlNTQ1N2Y0N2JlODY2MGIgbGVnYWN5LXRydW5rCis0MTkzNyAyNDEwNzhlZTZlODdhZTg2M2UzZWIxMTRmZGUxNWYzMzc4NDhjNDU5IHJlbGVhc2UyNC1tYWludAorNDE5MzggNjVkZjI1Njc0ZDFhZWY3MmQyMTcxNjcyMzI2ZDg0NDAyYjkyMDZhNCByZWxlYXNlMjQtbWFpbnQKKzQxOTM5IDc3YjRhYWFkNjkwM2ViYjhmZGUxY2U5NGI0MzFmZjM0MmY1MzMxYjIgbGVnYWN5LXRydW5rCis0MTk0MCBmNzIzZTE5ZmEzYjcxYTIwYjIxZmRlNzQwMmY5ZWI1ODhiYmRhZmYwIGxlZ2FjeS10cnVuaworNDE5NDMgYjEzOWM5OTk2NjVkOTk3OTI2ODlmYzNiMmNjZWNlMDRhNDI0NTJkNSBzc2l6ZV90Cis0MTk0NCAxMjIwNThkZmJhNzY4YTkzZDkyZmRiYTE5YTg1OWM1OTg3NTQxZDNmIHJlbGVhc2UyNC1tYWludAorNDE5NDUgNmUxNzk2OGQ0ZGU5MmIxNjMyYTgzZmY4NjI1ZjM4MmYyNDQyZDJkNyBsZWdhY3ktdHJ1bmsKKzQxOTQ2IGExYjFlNDUxZDgyZTg1ZTc5NGZhY2Y5MmU3MmFkMWJmMzNmNzY5ZjcgbGVnYWN5LXRydW5rCis0MTk0NyA0YzhhNzRhMjAyMjc4MzQ4M2M4YzJiNzM4YTRjOWJjYjIwZTMwNGNiIGxlZ2FjeS10cnVuaworNDE5NDggY2Y2OWUzMTkxMjE4MjhiNGE3NTJhYmQ4MWZmYjliYzMyNWM2YWIwMSBsZWdhY3ktdHJ1bmsKKzQxOTQ5IDE2ODVkY2QyZjkyOTkzY2Y1MWU1ZTMzYzllZmMwMjQzZmY3M2FlNmQgbGVnYWN5LXRydW5rCis0MTk1MCA1NmFkOWYyNzViZWMxOTNkMjk2M2MwYmEyMjU2YTBhNTgzMjY3NjgwIGxlZ2FjeS10cnVuaworNDE5NTEgYmI2ZmE0YTMxZjE1Mjk3NjAzOWUzYjY3ZTFhMzg3YWMwODZkYjYxZSBsZWdhY3ktdHJ1bmsKKzQxOTUyIDAyNmFlMWI4YTdlM2JhMDVlMTRjYWIxMGUwZjFmZjZiY2ExM2JkYjkgbGVnYWN5LXRydW5rCis0MTk1MyBlN2M5NmMxZDE0NGJhNzQyODU0MzhlMTM3NjFjZTVlZTgwZDJhNmY0IGxlZ2FjeS10cnVuaworNDE5NTQgZThkZWM3OGNmYTJlM2U2ZjRmMzI4Y2YxMmM0Zjc3NGRkYzRlZjE3YSBsZWdhY3ktdHJ1bmsKKzQxOTU1IGRlZDRhNDk3ZWI3NmZiODdiZGVjODJlYzkyYjk5YTUxZDhmYzU0YjAgbGVnYWN5LXRydW5rCis0MTk1NiBkM2Y0YzQ2N2U0MzlhMjU3ODUzZWU1ZTI4OTgyOWRhMDkyM2UzMTgyIGxlZ2FjeS10cnVuaworNDE5NTcgYTc3ZTViMDQ2YTUwODc2MzM4ZThjMTc3ZWU3ZmQwYWEzMmZkNTllMyBsZWdhY3ktdHJ1bmsKKzQxOTU4IGI5ZGQ0ODFiMzk3MmRkNjQwMTNiNWNiNmNjOWVlYWMxY2U4NDk2OTUgbGVnYWN5LXRydW5rCis0MTk1OSBlOTRlZTU5YTJkNDYxZDk1MDRhYzdmZTkxMWMzZWViOTI3MzdjZTlhIGxlZ2FjeS10cnVuaworNDE5NjAgOWY2NmJkZDVhMDYxMjM5MjQxYzg3ZjA1ZjYzOWNhODJlZTFjNjU1YiBsZWdhY3ktdHJ1bmsKKzQxOTYxIGVjZDQyMzcxOGEzMjdkZjU2ZDk5NjNiOGYzZThjMTY1Yzc1ZjI4ZWUgbGVnYWN5LXRydW5rCis0MTk2MiA4YWI3OGZiNGQxN2VkNGFjMTllNmQ3ZTk1ODU5YzFmMzAwODRiZTU5IGxlZ2FjeS10cnVuaworNDE5NjMgMGY4YzU1NDZkM2JmNDRiNzU0ZjNlMGZkOGFkMDI3NGRkOWUwZmRjMiBsZWdhY3ktdHJ1bmsKKzQxOTY0IDkyZTI0NjhiZGI0YTZhNDAzMTdjZGViZTM4ZTU3Mzc4Njg5ZDRkZmEgbGVnYWN5LXRydW5rCis0MTk2NSAwMGJkYzA4YTUwN2RlYzlkYTBjNmRlNjNhMTE0Y2M0ZjM1ZmU2M2M3IHNzaXplX3QKKzQxOTY2IGFmN2Q0ODQyMDhlOTI3MWE0Y2JhYmU0NTgyNWU2NjNiNzk2NjFlNTcgbGVnYWN5LXRydW5rCis0MTk2NyBkMjIyNGM4ZDQ1NDkyNjI1NDkzYzk2MjdhOTJjZjhjMDUxNzZkOWUyIHNzaXplX3QKKzQxOTY4IDU1N2U5YjZlZTdlMTFlNmY3ZWE1ZWEwNDI3YmZiMDQ3YjBlNTQ3NGUgbGVnYWN5LXRydW5rCis0MTk2OSAwZjUxODk2MDcyNjQwYWUxMTY3OTJiMTQ2MGZmY2JiM2Q5MWM3ZWZmIGxlZ2FjeS10cnVuaworNDE5NzAgNjBhNWExYWExNjgyYjY3MGUyM2U3ZmRkMDliYmQ5M2MzMWVkNjY1OSBzc2l6ZV90Cis0MTk3MSBhOWFiZGIxNGNmM2I3OGE0N2E5ZWJjMzRjZWI2YmExYzFmYmM3ZTUyIHNzaXplX3QKKzQxOTcyIGEyNjQzMjUzYWM3OTYyOTRiM2M2OGQ5MTlkOTRlOGZmNmYxNDFmYzMgc3NpemVfdAorNDE5NzMgMDk2OGYwNjJmMzUwNjk4OGI4ODZhNGY5YzFiNTJlNGMyNjdmMWUzMCBsZWdhY3ktdHJ1bmsKKzQxOTc0IGU3ODgwZjRmNTNhNDBkMzEzYzdhMDQ3ZDUwNDI1MjMzNjIyNGE4YjkgbGVnYWN5LXRydW5rCis0MTk3NSBkM2U2OGNiNzM5ZmIyNTc1ZmE1OWE0Y2Q0OGIzOGUxNWExYWY1MjE3IGxlZ2FjeS10cnVuaworNDE5NzYgNTkxZGY1NGQyZDMwZjE0ZTA2MTI0NWM2Nzk4NTRhNDUyODgwZWRhOSByZWxlYXNlMjQtbWFpbnQKKzQxOTc3IDNiYTlmZjc5YmIyOWI5NDdlYjk3ZThmOTkzNTA5MWQ4NTNkMTZmZTUgbGVnYWN5LXRydW5rCis0MTk3OCA4MTFkNjQ0ZDE5MTc2NzcxMDU0NzYxYTI3ZGZhZTgxNTBkNzE2YmQwIGxlZ2FjeS10cnVuaworNDE5NzkgNGFjOWI4ZmNkNjNlYThkODUzMTI2OTk0NDkzNTRlMmRlZDdhZDU5YSBsZWdhY3ktdHJ1bmsKKzQxOTgxIGYwOWU2MDkxYTc2MjllZWZmYjc2MTY1YjA3OThiMzBlM2QyMzIzMTQgbGVnYWN5LXRydW5rCis0MTk4MiA4ZGYxOTQyOTRjOTBkYzRhMTFkZjkwYmI1ZDJlZTMyMjU5NTg1YjRmIGxlZ2FjeS10cnVuaworNDE5ODMgZDQzNGIzYzczOTAxNjBmMzUyMjA5NDNkNWM0M2VkODZkZWFjZThiYSByZWxlYXNlMjQtbWFpbnQKKzQxOTg0IDI3YmRjMWUyN2VlZGI3ZWM0NTliY2I5ZTNiMDQzNGM4ZWZkNmViOWYgbGVnYWN5LXRydW5rCis0MTk4NSBjM2I0MmI3YmQ2ZDlkYWFkYzRhOTc2ODZmZWJkODQ3ZWNiZDgwNjRmIHJlbGVhc2UyNC1tYWludAorNDE5ODYgM2MxNTk3NmZmNjE4NzJiNWI5MDJiYzJiZDNlYmVkYWEwNmEyMzg2NCBsZWdhY3ktdHJ1bmsKKzQxOTg3IDZjZjdkMDRkY2MxZjU3ZTY3MzM3ZDE2MDllZjdlNmU1NDEwY2VmYmYgbGVnYWN5LXRydW5rCis0MTk4OCAwOWMyMWE2YmU2MDQxODQ3OGM3YmM5OWRmYzE1YzYzMDM0MTViMjk4IGxlZ2FjeS10cnVuaworNDE5ODkgOWY2ZWRjODc0NTQxY2QyOWMyNDQyZTQ5MTE0MGI5YjYwZWE5NmJjMyBsZWdhY3ktdHJ1bmsKKzQxOTkwIDI2ZTc4YjE5NmMxNzI3OGE4NjA5ZjNlZWEwNmYwODIzMjg2NGRiZWMgbGVnYWN5LXRydW5rCis0MTk5MSBjYWQ1OTFkOTIxZWNiMDJkNDAxZGQ5MzM5MzQ3NjJiNDc5ZjAzODFjIGxlZ2FjeS10cnVuaworNDE5OTYgMzAzZGVhODQ3NjM5MDRmYjg1NGNjYzhiOGU2Zjc3MTRlMWY1YWJkNSBsZWdhY3ktdHJ1bmsKKzQxOTk3IDc2YTFjMjBlODMwZTU1YzAyMWEyNWQzN2I4ZmE4YWEwMzIwNGJjZjQgcmVsZWFzZTI0LW1haW50Cis0MTk5OCAzYzAzMGVkZmY5ODVhNmJjOTk5YmYzZjcyYzc3NmFhMzI2YjczYWRhIGxlZ2FjeS10cnVuaworNDE5OTkgOWRmMzljOTYwYmYxYzY4MGJiMzRmMTdmY2ZiZWU2MDNiZTk4ZjZiZSByZWxlYXNlMjQtbWFpbnQKKzQyMDAwIDc5MGY4ZDllNDk4ODk4MTE2ODAyYTcyZmU3NTA0ZmJmMmIwMWY5MmQgbGVnYWN5LXRydW5rCis0MjAwMyA0MWVmMjkxMGRkNDk4YjBmODRlOGY0Y2JhM2E4MWUzZGQzYTU1ODk4IGxlZ2FjeS10cnVuaworNDIwMDQgMzVkZjZkZDgwOTExMGM3YjRlZGEzMjFmYjc3Yzg3YmFiYWUxYjMyYSBsZWdhY3ktdHJ1bmsKKzQyMDA3IDBkNTMzNTM4N2JhNzMyYzg0ZGY4ZTU5YTE2MzJjNTFmY2Y5Zjg4NzQgbGVnYWN5LXRydW5rCis0MjAwOCA0NzViNjQ1ZTEyZjVlYzA1OGMzMjgwYmY0MDI1ODZhZDU0YzZlMTNhIHJlbGVhc2UyNC1tYWludAorNDIwMDkgODc0N2JmNGI5NTQyMmNiMjNjZjA1NTEyMTUxYzgyMjRkZjMzOGI4NCBsZWdhY3ktdHJ1bmsKKzQyMDEwIDIxZTE3OGI5MzAzMGQxYmZhMmJhYzYzYzlkYzBiMDc0YWMyMzVhNDUgbGVnYWN5LXRydW5rCis0MjAxMSA4NGJhMjk5ZTJiNWZlZjQxMWIwYTcxZmI4MTZlZDU0NzI2MDZjYzNmIGxlZ2FjeS10cnVuaworNDIwMTIgZDAxMDQzNjRmNmQxYzg0MDgyNzcxODRlYmJkYjBhMzJiMjNlOTUwZCBsZWdhY3ktdHJ1bmsKKzQyMDE5IDVkODE2OTI4YTIyNDVlMTc0NTMxZWQ3M2RhYzcwNjU2MDVlY2U4NGIgbGVnYWN5LXRydW5rCis0MjAyMCBlMWZkN2JkMjg5NWIwN2Q0OGZmZTNhZjkwNGEwZDY1OTExNmUzMGU2IHJlbGVhc2UyNC1tYWludAorNDIwMjEgMTkyZTgzODk0ZTg5OGNhYzQwMzY0ODVkYzA2ZDc4MTNkYWU3NDEyYyBzc2l6ZV90Cis0MjAyMiA4YjhmMWE1MTQ2OGFkMjQ4MTEyYTY1ZDRjZmY3ZDk2NTA0YzBkM2I3IHNzaXplX3QKKzQyMDIzIDBmZTc1YTA0NmMwMDU0ODBmMjRiMDliNWI0YWQ0ZTYxN2ViOTBkYjUgc3NpemVfdAorNDIwMjQgNGY5NTA3YmU1ODU3OWI0MmNkMjk2NzBhNTZiMWM1MDc5M2I0ODA2NCBzc2l6ZV90Cis0MjAyNSA2NjJjNjM5NTRkZjI5NGI3NDg0NDAwMTY2OGVkNmQ0N2Y0ZDU5NGRhIHNzaXplX3QKKzQyMDI2IGZkMWIxMmQzYWJiNjljMzlhZmM4OTFjN2IzMTgxMTQ4OGVlNmQ5ODUgbGVnYWN5LXRydW5rCis0MjAyOCA1Mjc3NzcwYmM5ZDFiYTZhYmI3YjQ4MGEwNWI0NDQ5YjBhMTU3YjkwIGxlZ2FjeS10cnVuaworNDIwMjkgYWIxMzBkNTY2OTMxOWU4ZWE4M2U2ZDBjNzVlMDBmMGQwZmY5NWU3NiByZWxlYXNlMjQtbWFpbnQKKzQyMDMwIDVlMmE1OGM4NjdmNzJjMzcxYmZiYmNiNWY2NmI0OTA2MDI5YmQ1ZGEgbGVnYWN5LXRydW5rCis0MjAzMSBkYTA5OTVjYTFmMzA3ZTc4N2MyNGY4MWNjMDlkNjY1MTFmYjYyZWFlIHJlbGVhc2UyNC1tYWludAorNDIwNDEgNzhhNjk3NTk1NDdlYmU4MDEzZmVkMDBlOTNmZjZlOTE3NzQ2ZDU2NiByZWxlYXNlMjQtbWFpbnQKKzQyMDQyIDIxZDMwZjhlNDFmZmRlNjc4Y2M0NDBlMjJhOWExYjlkYmE5MDRlMzUgcmVsZWFzZTI0LW1haW50Cis0MjA0MyBlNjA5ZmVhOTJkMWUxOGE1ZmVlMWZhZWViMDRjYWE5NDE0MzdiM2ZlIGxlZ2FjeS10cnVuaworNDIwNDQgMGIyMzFjMDVhN2VkYWMxNjZkNDdiNDI3YzliMGRhMTAzYzZlMzJhOSBsZWdhY3ktdHJ1bmsKKzQyMDQ1IDg2OTc3NzZiYjQyMDM3YzIzMjUzMTU4NDdkYjVkN2VjZDI1ZTFiMjcgbGVnYWN5LXRydW5rCis0MjA0NiBhZTQ0ODA5MzUwMTYwZTU4MzMyOTE2NjUzMmE4ZWUxZWE3Y2RhOWMyIGxlZ2FjeS10cnVuaworNDIwNDggYzEyODAwMDIxMzk2OTkzMWQ1ZGExNGRmNWU3MjQ4MDUzZmQyOTNhYyBsZWdhY3ktdHJ1bmsKKzQyMDQ5IGM5ZWE1NTcwZGFjN2U2YzFmNGMwZjk0MTlmYTFlYjhlZWIyZDBlZmYgbGVnYWN5LXRydW5rCis0MjA1MiA3Y2E1MWNiNzBjMmUyNGRhNjI5Zjk5ZjIzOGJlMDJiM2FkNjJjMzgwIGxlZ2FjeS10cnVuaworNDIwNTMgYjk0ZWU5MmE2ZDZiNWViNTllODRjOGU0OTk0OGViM2ZjNmVlMDQ5MyBsZWdhY3ktdHJ1bmsKKzQyMDU0IDA3ZmJkMzRmMWY2ZWQxMzFhZmNiNDZlNDZmMmNmMzE3MzhmZjkzYTcgcmVsZWFzZTI0LW1haW50Cis0MjA1NSBlZjFkOGQ2YWM2YmVmYjZlNDg3YWU0MTkwZjE3ZTMyNjM1MzcxMjI4IGxlZ2FjeS10cnVuaworNDIwNTYgZWYzYjQzNTc4YTVmZmE3NzE0MzczYjVmMGU5YTJlOWNmNzE4ZWQ0YiBsZWdhY3ktdHJ1bmsKKzQyMDU3IGEyMTI1M2ZiMDhjOTcyZDAwNjFhMjQ1YjcxYWIxYmM1YTc3MWFlNjQgbGVnYWN5LXRydW5rCis0MjA1OCBlNzAzM2RmZmQ2MGNhZTgzNDk1NjE3NjdjMzBkZmUzMjNlMDdlMGUxIGxlZ2FjeS10cnVuaworNDIwNTkgYzdjZmVhMWViYjMyMzQxOWUyOWFmZGNiMWRlZDc1ZGI1YjJjNGVjYyBsZWdhY3ktdHJ1bmsKKzQyMDYwIDZkMmJlM2I3NmYyZTI4MzY1NzM0NTc0ZGNjNjNhZmNjYmMxZWQ0ZTAgbGVnYWN5LXRydW5rCis0MjA2MiA5ZWVhYTMzZjk2NDA2MzNjNjE2MjhiZDdhZGY1OTk2ZTUwYzZjY2M0IGxlZ2FjeS10cnVuaworNDIwNjMgYjBkN2QyOGNkNzQ2MWYyZjFjMzRkMzU2OTBjMTI4ZGZhZTAzZDhjOSBsZWdhY3ktdHJ1bmsKKzQyMDY0IDM4OGViYzZlM2RlMTE3OTczMzE1MDdkMjI5MmI4YWIxMTE2NGUxM2IgbGVnYWN5LXRydW5rCis0MjA2NSBlOGZjNjBjNGZhYWQ3ZTNhNzdlMmY4NjlmYWYzODAyZjNlNmU0MWViIHJlbGVhc2UyNC1tYWludAorNDIwNjYgNDA1YWIwZGM5Y2JjMzkxM2Y4ODQ5ZTkwMzE1MjUxZWJjMGZiZGVhMiBsZWdhY3ktdHJ1bmsKKzQyMDY3IDQzYjE2ZWVmZjIyNmIyZWVkY2NkNDM1MDI5MmM2ZGZlMWFjODIxYTYgcmVsZWFzZTI0LW1haW50Cis0MjA2OCAyYWZiYWFlNmI4OGUwYmFjZDJmMDI3ZGY5MDc0YWYzYzNlMGNmNGQ0IGxlZ2FjeS10cnVuaworNDIwNjkgMmM4NjMwYjZiYzM1OTk1OGIyYTA3ZTY1N2YzYzhjNTQ2NDUwMGQxZSBsZWdhY3ktdHJ1bmsKKzQyMDcwIDAyOTRlNjY2Mjc0OWFkNGM1M2VlYWE5ZmY3ZmEwNGQ0ZGRhMjY5MmMgcmVsZWFzZTI0LW1haW50Cis0MjA3MiBiZWNlYjhlNjZiMGJhMDRhZDBkMzA5YzE0YmQ2ODk3NjNlMzRlZWU2IGxlZ2FjeS10cnVuaworNDIwNzMgMmY3YjU0MDIyYjNiMWVlM2M2Y2Q0M2Q3YThhNTNhMDU0OTI2MDBhZSBsZWdhY3ktdHJ1bmsKKzQyMDc0IDRkYmE2MWU0OTAzN2ZlYmM5MDg2NzU1ZWI2NGYyZDU3OWQ2MDJlM2QgbGVnYWN5LXRydW5rCis0MjA3NSAyMGYyMWRjNzM5NmYyM2RlOWM3ZjBiMTA5MjdjYjc3NjNhNzY3NjM5IHJlbGVhc2UyMy1tYWludAorNDIwNzYgMzcwOWNlMzdmZTFjNGYxZWQ2YTFkYWM1M2Y2NTE3MjhmM2Y0Yzk4ZSBsZWdhY3ktdHJ1bmsKKzQyMDc3IDY1ZmU5YWNlZDAwMmJjOGE1MGM2OTFkZDhmOTliYTY0NTg2YWQwYzcgcmVsZWFzZTI0LW1haW50Cis0MjA3OCBiYzE4M2I1ZjhiYzE5ZGVmZTcxZmUzYTg0YWE5NWQ0OGM1YjVjY2I3IHJlbGVhc2UyMy1tYWludAorNDIwNzkgZTM2NDhiYTkxOGVlNDAwODA1ZWNkM2Y0NmQ2MzkyOWUzNDE5NGY2NSBsZWdhY3ktdHJ1bmsKKzQyMDgwIDJhZTQxNmFhY2I4ODc3NTdkZDk0ZTk1NzczNmFmNjIwOGU2NGY3ODQgbGVnYWN5LXRydW5rCis0MjA4MSA3YmI2NGFjZWFkZDdjOGM2OTNjZjNiMTk0OTI5YWIyNWM1ZmViNDJhIHJlbGVhc2UyNC1tYWludAorNDIwODIgYzRjOTNiZGUxODVjN2ZmNDQ1MWIwMjgxMDgyZThkMGIxMGJjNDUyZSByZWxlYXNlMjQtbWFpbnQKKzQyMDgzIDFlZjUwNjNhMGM2ZDk1NGVmM2ZlYzI4ZWYxZDU3YWZlY2JkZDc2ZTIgbGVnYWN5LXRydW5rCis0MjA4NCBmNjJkN2QyYzUwZGVlZDM0ZjhiNmU0MzA1NWQ0ZjE1MTFhZTA0NTA4IHJlbGVhc2UyNC1tYWludAorNDIwODUgNDk2NmEzNjFmOTM2NDI0NjVmYmQ3ZGEyY2U1OGIxZmJlYmIyYmYxZiBzc2l6ZV90Cis0MjA4OSA4NWI1YTJjZGJhYzEwN2JmZjE3NDA1ZjQ3MjhmODIyYTM2Yzg4ZjQ1IGxlZ2FjeS10cnVuaworNDIwOTAgYWUwN2IwZTdkNzBhODlhMDc3YzA0NTAwMzk1NmFhZDc0MjhhNmFjYyBsZWdhY3ktdHJ1bmsKKzQyMDkxIGM1ODMyMTRkNGM1MTA5NGM4YTQ2ZDk3ZDljMWM4NDE1YzI1ZWQzNGMgbGVnYWN5LXRydW5rCis0MjA5MiBkNzlmMDQzMjg0YmQ1MDZmY2E4ZjBjM2M3ZmU2NDlhZmJiMzdlMTAxIGxlZ2FjeS10cnVuaworNDIwOTMgMWFmN2Y3MTllZDI4ZjI3Nzc1YjFhYWM5OWE4NThkMDE4YWFiMjI3OSBsZWdhY3ktdHJ1bmsKKzQyMDk0IDNlZjEzODBmZDgzYzJlYjU3NzkyZmEwZGRjMWYxMWNjYTJiOWZhMjIgbGVnYWN5LXRydW5rCis0MjA5NSAyZTE1MWJjODIwZjcxODQwOThlMWE3ZmY5NzM5NGFjY2RkNzJmZjRiIGxlZ2FjeS10cnVuaworNDIwOTYgMjEyYmMyMzYzMmFiNWQ0NzQ5M2NkMTVmZGEzMTJhOWI5ZjMxZWJhNiBsZWdhY3ktdHJ1bmsKKzQyMDk3IDJkM2ExYzNjOTMwNTY5MTNiMmJjNjBmZjM1YjIyMmNlODhkYWIwZjggbGVnYWN5LXRydW5rCis0MjA5OCA2ODc0ZjI2OTNlYjhhMGVlZjlkNjhjZWNlYmUxMzhhOTkxNmNkOTU2IGxlZ2FjeS10cnVuaworNDIwOTkgYTUzMDE3NjE4NTg2NWVmOWViYjA0MjI5ZjFmMTJjNjEwMGY2N2RkMiByZWxlYXNlMjQtbWFpbnQKKzQyMTAwIGI1ODc2MTBlMjA2OWE0ZDljNGI2NzlhZTk0ZWI0Y2U3NTQxYzE3MzEgbGVnYWN5LXRydW5rCis0MjEwMSAxZDc2NDYzOGFiZGQ4MDMxNzZhMDVjMTMyMzdiNTRhY2FlNWFhMzI5IHJlbGVhc2UyNC1tYWludAorNDIxMDIgZWE2YTQ2ZDhjNTFlYzBhYmM5NGYyYmZlNGZhMmM1NDJjYmQ3ZmEwMiBsZWdhY3ktdHJ1bmsKKzQyMTAzIDk4ZmFhYzFkZjViYmVkZjVlYjBmZjVmMjcwNDE1NDE5NDY5ODU0ZDQgcmVsZWFzZTI0LW1haW50Cis0MjEwNCAwNzBiYjQyMWEzMDNiY2UyMDAyNzM0MTliMGYxMmE4MjRkYWI5YjVhIGxlZ2FjeS10cnVuaworNDIxMDUgOTI4ZGU0YTNiZTZmNTQ5YTEwYjgwNGM2ODM5YzY4OTViMDIxYzU4YSByZWxlYXNlMjQtbWFpbnQKKzQyMTA2IDVlOGFmMjQyMzU3NTA2MzQxYjcyMjNkODk2ZWQzZjk0ZTQ2YTZhNzQgbGVnYWN5LXRydW5rCis0MjEwNyBmZGE5MTJmZThiOWFkYzQwNzhiMTZkMmE3ZmI2YmFlNzM4NTY4NDI5IHJlbGVhc2UyNC1tYWludAorNDIxMDggNzZhYmEzZmE0ZTJmODE3YjVlNTMxZjMzOTdkZDhkZDE1MDExMzlhZSBsZWdhY3ktdHJ1bmsKKzQyMTA5IDE3ZjA5OTQ3OWU2YjczZGNlZTVkNjcyNTYwYzdlNzJiOTg3ODI4NTEgcmVsZWFzZTI0LW1haW50Cis0MjExMCA0YmNmNWZlNTRkODM0MGFhZDc0Y2UzYjI1Y2M2MDNkYjJjNDJiOWQ5IGxlZ2FjeS10cnVuaworNDIxMTEgOWVhZTMyYmRmODAxYjY3MDFiYzdiOWY4ZTlkOGQyMzAzNTA5OWZjYyByZWxlYXNlMjQtbWFpbnQKKzQyMTEyIGFhN2FjOTA4N2ExYzMwNjMyYWJmZDc5NTAyMDg2NDc1MDFhYjY3MWUgbGVnYWN5LXRydW5rCis0MjExMyBjMmIxNDk3MzEwZDEwMTU5YmMzYzUzNDg1ZWE3MGE5NGNhMWUxMzUzIHJlbGVhc2UyNC1tYWludAorNDIxMTQgYWVkMzJjZTM1YjgyZGZmYWQ3ZTViMjljYTZiYjJlMTMzYTgwNmRjYyBsZWdhY3ktdHJ1bmsKKzQyMTE1IGQ0OGY0YTRhMzA2ZjU5M2VmMGExMTRkYzE1YzM2MGUxNzAwNWU1MTMgbGVnYWN5LXRydW5rCis0MjExNiA1ODI1MWM5OTA0ZTE4OTI3MDQ0NmU2MzM1ZWEzMGIyNTVkYTdhNzk0IHJlbGVhc2UyNC1tYWludAorNDIxMTcgZWI0YTQ3YjgxOTQyNGNjZjM2OTgxMWNkNmIzMjJhYTgwYTZiN2Q1MCBsZWdhY3ktdHJ1bmsKKzQyMTE4IGIwYTlhOGQxNGFiMjIyNDRjMGFiMDRhM2M1MzA4ZWEyYmIwZmY4MTMgbGVnYWN5LXRydW5rCis0MjExOSAzMTVmNDQwN2FiMTJkNTc3ZTAwN2U4YTdjNzNjNmE3MGJiODI0YTU2IGxlZ2FjeS10cnVuaworNDIxMjAgZjhmY2NhZTZhMGY1ZGM4Mjg3ZjA2ZWE3NzY1MmFjNGUwYjJkYmJiNSBsZWdhY3ktdHJ1bmsKKzQyMTIxIDZlMTI3MDczNzFhMTMwZWVkNDJkYjEyMDIwMGU4ZTZmNmU2MTI4NWQgbGVnYWN5LXRydW5rCis0MjEyMiAxOGEyZDc1YTNjNjk2NDRmNzEzYzI1NTliYzNlOTk1ODdmNWIxMWJlIHJlbGVhc2UyNC1tYWludAorNDIxMjMgM2E5MmU1NjU0NzQ4NWFkODhkZmQ2YjhkY2IxZTRhYzc1YTkwNGFhMyByZWxlYXNlMjQtbWFpbnQKKzQyMTI0IGJhMTYwNDY0YThjNmMxOWNhMTMzOThkY2ZlNmNlOWM3OGIwNWMwZmMgcmVsZWFzZTI0LW1haW50Cis0MjEyNSAwNGE5NmNjODg1ODNlYzNjMjFmOTBmM2FmNGM3ZDFkMzBmYjMxZTE3IGxlZ2FjeS10cnVuaworNDIxMjYgMjQ0NTYzMzgwMjZjMDRmMmQ1ZGY4MjAzYWNlZDUyNDU4OWU5ZjJkNyByZWxlYXNlMjQtbWFpbnQKKzQyMTI3IDFlOGY0NjczZTQ0NzQ3M2JhYzRjNGUxNDFkOWY2NjgyNmNkNjdhYjQgbGVnYWN5LXRydW5rCis0MjEyOCBiMDVjNGNhODU5NDM0ZGI3NjFmZjNjZjUwMTBjOWQ3ZWU4OTcyZDBlIHJlbGVhc2UyNC1tYWludAorNDIxMjkgNDc0NmZhYjM0MDEyNDRmZmJmNGJmOGNjNmNiYjM3NGZkNDYwOTVhYiBsZWdhY3ktdHJ1bmsKKzQyMTMwIGFjMDJmNjU1YjMxZTM4MDhlMmZhYTc3YjlmZWRjNTJiZGFhNzcyMTggcmVsZWFzZTI0LW1haW50Cis0MjEzMSBjYTZjODAwYWQ1YTAyYzExOWJiMGMzYTM5ZGQ3MGFlZjZjYTEzYjY1IGxlZ2FjeS10cnVuaworNDIxMzIgNmZjYjU0MDUwNzRlN2E1ZTU4NDlkYmY0YTBmMzdmN2U3NjM3MjMyYiBsZWdhY3ktdHJ1bmsKKzQyMTMzIDk3ODg1YWRmNzNiNTQ3MWFjN2RhM2E0MzJmM2RmODFkMDJjY2Y3YWEgbGVnYWN5LXRydW5rCis0MjEzNCA3ODcwMmE1MDI4YTQxZjg1YWI4MGY0ZWM3MGMxZDVmODFhNTAyZDQwIGxlZ2FjeS10cnVuaworNDIxMzYgOWY3Y2UyODQ2YzMwOTU5YzU0NWQ5MTE0NmY4MTc0OTU1M2E5MzNkOCBsZWdhY3ktdHJ1bmsKKzQyMTM3IDYxYjhlM2UzZDY0MTgzYWNjMjgwNjQ0ZWI2NDk5MWM2NGJkNGI5YzQgbGVnYWN5LXRydW5rCis0MjEzOCAyODA2NTA3OTJlZjcyYjdjZWU4YjkzODk4M2IxYWYwNzRhZTAzYjg0IHJlbGVhc2UyNC1tYWludAorNDIxMzkgZjk0OTkxZDVkZDIwNjljYmRhYmZmOWQ0ODU5YWYwNWRiNDM0NDZmYyByZWxlYXNlMjQtbWFpbnQKKzQyMTQwIGZkZjFiZTljZmVkZjJiMzAxOTYwMzJkOTMzM2Y5YTU3NGYzMzY5NzMgbGVnYWN5LXRydW5rCis0MjE0MSAwMGVlMjE3MTUzN2Y3NWRlN2E3MDk1OGZiNzk4NTQ3ZTRkOTQ1MzY2IHJlbGVhc2UyNC1tYWludAorNDIxNDIgZjAxNTQzZTE1Zjg1YTQ5OTFlMzIwMTFkMWEyYjVhMTNlNDFjMTY1ZSBsZWdhY3ktdHJ1bmsKKzQyMTQzIDQzMTVjNTNmNTFiY2E2MDQyOWRhNTZkYjNlNWIzMTYzN2QwNjRhNDkgcmVsZWFzZTI0LW1haW50Cis0MjE0NCA0ZDJhMDlhNjQ4NWQzZTljOThjYjlhMWE2ZjY1OTc1ZjEzMTI4MmQzIGxlZ2FjeS10cnVuaworNDIxNDUgM2I2M2JjOTA0ZDkyZTdiNWI1MjUwNDNlMDY2MTkyZDcwZGQ5MDA1MCByZWxlYXNlMjQtbWFpbnQKKzQyMTQ2IDRmMTFiMjNlMzYxZjQ1NGQ5ZTlhOWViNzdhOTRlNGE2NjQ5ODQ4ZmIgbGVnYWN5LXRydW5rCis0MjE0NyA0NDZjYjVmYzNkMjgwYmY3ZmM0NmYyZDZkYWQyYzgxMjYwMjk4NWM4IHJlbGVhc2UyNC1tYWludAorNDIxNDkgYTE3YjczODI2Zjk3ODNhODAxNjhlNTQ3OGU3YjM0YzQ0NTBkODdmMiBsZWdhY3ktdHJ1bmsKKzQyMTUwIGM4M2MwMjJhMzQ5MWViMTZmZTFhZmY1YTc4ZTQxZWNlNjk3MzNkYzAgcmVsZWFzZTI0LW1haW50Cis0MjE1MSA4MTQwZjAwMGU5ZDQ1OWVmMzRmMzI5ZDM1YjU5ZjBjYzJjMGNlYzFhIGxlZ2FjeS10cnVuaworNDIxNTIgNjA0ZmU4N2FkNDdjN2MwYzE5MjRlYjM5ZjlkYWE3Y2E4NTgyZTBlNyBsZWdhY3ktdHJ1bmsKKzQyMTUzIDk5ZDQ5MWZhYTY1YzJiOWRmN2UxNDg4MDk3MWE2ZDExMDY1MmJjZjEgbGVnYWN5LXRydW5rCis0MjE1NCA3YjNkOTE1YjZlOWQwMDEyM2U4ZmM3ZTVjZjhhZDQ3MmEyNjRmYjZhIGxlZ2FjeS10cnVuaworNDIxNTUgNGY5MGM3YzA1MzY0ZjQyNGI2M2Q2MmQ0ZDEyYjEzZmNkMjcxNjgyYyBsZWdhY3ktdHJ1bmsKKzQyMTU4IDgzOGI1ZjU5MjRlZTE3MTQxNDY3ZTkxODgxNWEzZDUzZTBkZTM4MTMgbGVnYWN5LXRydW5rCis0MjE1OSAzYjRiNDQ1NGZlODY2NGJjNGJlYWYxNWNjOGUxYzE5NzNlODMwNjNiIGxlZ2FjeS10cnVuaworNDIxNjAgNWVlNDZiYmVkMWY5ZmUwNDY5ZTE2ZTJkZDQ0M2Y0Y2Q2NWU2MTkwOCBsZWdhY3ktdHJ1bmsKKzQyMTYxIDVjNDg3Y2I2MzI5NTA3OGRiM2YzMzllYWUzYzY3MGU2YjZkODI3YTYgbGVnYWN5LXRydW5rCis0MjE2MiA3ZjA1OTc0YzhiODAzMTdmMjg3MDY5MjE4ZTIwMDBlMTBhN2M1MGM5IGxlZ2FjeS10cnVuaworNDIxNjMgMDAwNmFlMTBiN2YwYzkyYzkxYTNlMDkwMjc0YzJhOGZhNDAyNTAzOSByZWxlYXNlMjQtbWFpbnQKKzQyMTY0IDc4YmQ3OGExY2U3NGI0NjFmMjU4YjU2YjU1NGI1ZmJmZTA3Y2I3MTYgbGVnYWN5LXRydW5rCis0MjE2NSAyMDEyYzU0OGNlNjk4Y2JmNDBiYjllNDVjNmE4MzgxMGFkMGE3MTljIHJlbGVhc2UyNC1tYWludAorNDIxNjYgMzExNGViMDYwZDBhZWQyZWE3ODY1ZTJmM2I0MmQxOGVhOTk4ZmU2MyBsZWdhY3ktdHJ1bmsKKzQyMTY3IDc0YTU5ODk2NGM5NjI4ZDBhNDdmOWNkZGU0YThlNDQyYjY1MmE4MTYgbGVnYWN5LXRydW5rCis0MjE2OCBhMjljYzIzYmI4OWM0YzVmNzdiZWUyMGMzMDk0Yjk4NzU2ZWNlMzhmIHJlbGVhc2UyNC1tYWludAorNDIxNjkgMDM3MmUyNWU0MzBlY2M1NzJmMmY4YTkyZjY5ZTgxYjg1YTQyMjg1YyBsZWdhY3ktdHJ1bmsKKzQyMTcwIGE1MGY1NjM1YTQ5NDljOTU2ZmU3Y2ZiMGFiMTJmNzg2YjQyYzAyM2EgcmVsZWFzZTI0LW1haW50Cis0MjE3MSBkNjhmNzNmOTZmMzFmNzJlMzQ0MzljNWZiZjRmOGI5NTk3NmZmZDQ2IGxlZ2FjeS10cnVuaworNDIxNzIgNmFiODJjNDcwNjMzOGYxZTQ2NWIyYjVhMWJiOTgwZjJmYjU0NTQ2NCBsZWdhY3ktdHJ1bmsKKzQyMTczIDA1NWZjZGM2NTJkZDQzNTZjZmE4YzQ4NTBmYzc2YjBjNGQwMjkyZTMgbGVnYWN5LXRydW5rCis0MjE3NCAxYjllYjk2MzJjODliOGEwOTRiMzFiYTA3MTlkYWI0Y2M0MjA3ZjEyIGxlZ2FjeS10cnVuaworNDIxNzUgYmZiMjQ3ZDdiYzNmNzI1MmYzMzk5MTg5MWY0M2Q0Yzg2NWM5OTc5YSBsZWdhY3ktdHJ1bmsKKzQyMTc2IGQ1NzM0ZGMwN2Q0YWJkOTk1ZTFlOTVkZmJjNDUxYTcwYWQ2ZjQwNTcgbGVnYWN5LXRydW5rCis0MjE3NyA1MTIzNDUzNjkwZTUxYTE4ODg2ZmVhMWVkNTE0NDgzM2VkM2FkN2I0IGxlZ2FjeS10cnVuaworNDIxNzggZDYyZGEzNmFhZTE1NTEyNWFjZmFjM2FjOTVhOWQ3NzdmZjYyZWFmOSByZWxlYXNlMjQtbWFpbnQKKzQyMTc5IGU3ZjE5ZWQxZWEyZGMwY2ExYmMyMDAwOWQ0M2ZjN2Q3Y2IyYmMxMzggbGVnYWN5LXRydW5rCis0MjE4MCBjMDFkMjI3MmU2YzNhNmZiNDk3NGY4ZTVlMmU0OGI0YmY4M2IwYjcwIHJlbGVhc2UyNC1tYWludAorNDIxODEgM2RmNjM0NjFiMTE2ZDM3OWQ3ZWU4NjM3YzBjMzcyNzNlMTIyMTM5NiBsZWdhY3ktdHJ1bmsKKzQyMTgyIGUwMjg5ZmJhNmZmMWVhOTM5MWI2Y2EzNzRmYjYwMGNmZDQ2MzliNGQgcmVsZWFzZTI0LW1haW50Cis0MjE4MyAwNDBkN2ZiNGViNTY4NDdhZGRlMTBkOGJmM2I2YTNiYTY2ZDlkMzZiIHJlbGVhc2UyNC1tYWludAorNDIxODQgZTk3ODE4YmMyOTE5NDRhZjZkMDllMWQ2N2IyYjA0ZDdiN2I4YjNjNSByZWxlYXNlMjQtbWFpbnQKKzQyMTg1IDEzNTk2MDVmMzcxM2ZiNTkyMzllZmZjMGZhMjUzN2IxZDE5Mjc1NzMgbGVnYWN5LXRydW5rCis0MjE4NyBhZjY4NGQ3M2YzYTY3M2RmOTczMWE3MzEwZWIwNmZlY2E4Yzg5YWNhIHJlbGVhc2UyNC1tYWludAorNDIxODggYzNiNjcyOGQ4ODZiODc3Y2JkNDFmYTQwZGMyZmU2OGYyZjZhMzQyOCByZWxlYXNlMjQtbWFpbnQKKzQyMTg5IGNkZTZlYTA5MWFhYWZjZTQ1ZTMxNTJiOTRjOWJhNTNhZWE1MjhkOTYgbGVnYWN5LXRydW5rCis0MjE5MiAwNjAyODg3ZGFkZjVmNTc0MWYzNTU0NzZkNmIwMTgxOTAxZDU2NmRlIGxlZ2FjeS10cnVuaworNDIxOTMgZjBhZGE2ZjBmNjc4OTkyOTNhOWM0MjE5NzQxMTI0ZTQwOTJhMTFjNyBsZWdhY3ktdHJ1bmsKKzQyMTk0IGE2MjVlODg3NjQwNzAzODE4ZTIzZjMwMzYwZmU1NDY3ZTNiODMwNzMgbGVnYWN5LXRydW5rCis0MjE5NyA5NTBlM2UzODQzYmJmMDA0NzdjMzFlMmU0NDk2YjBmNjAyYmRmNTNiIGxlZ2FjeS10cnVuaworNDIxOTggMDAwNGE5ZDA0ZDAzNjY1NzE0NmEyZTIxZjRmNWFiMzhkNjk0NDFlMSByZWxlYXNlMjQtbWFpbnQKKzQyMTk5IDIyODk5NTAyMTE3ZmU2ODkxZjY5MjFjN2FjMTA5MDk4ODYxYWE0MjIgbGVnYWN5LXRydW5rCis0MjIwMCBmYzEyY2NhNzNjMzVkMGJjZDE2ZmJkODBjOTRjNzFiNDFkN2I2OGFkIGxlZ2FjeS10cnVuaworNDIyMDEgMjliZmJiNTg4ZDkzZjg4NzcxN2FiNjFlMTEzZTEwZmVlNzIzZDA0YiBsZWdhY3ktdHJ1bmsKKzQyMjAyIDIzZmU0N2U5MzM3ZDhmOWM2ODQxMmExYTY1ZjRmNTJkM2IyNzA5ZjIgbGVnYWN5LXRydW5rCis0MjIwMyBiZmEyMjcyNjdmNDgxNGU4MmU5ZmJhY2VhOWEzMjFlNmExMWFmYzk0IGxlZ2FjeS10cnVuaworNDIyMDQgMGYyZDgyMDAzYTBmYjc0ZDRkMmFlNDliNzFiMzU3YmVmMjk5NTdlOCBsZWdhY3ktdHJ1bmsKKzQyMjA1IDI4MGQ2MDE5Y2Y0MjZjMGEwMzY2MTI4Y2RhNzZiMzRhODcxMjliZjUgbGVnYWN5LXRydW5rCis0MjIwNiAzOGE5NGU1OGE2OTU2YzZhYTk3MDhjOGVmN2UyODNjMDUzMTE1MDc2IGxlZ2FjeS10cnVuaworNDIyMTIgMTZiZmU5Mzg2MDY4Y2ZiZTE4YTM1ZWU5YzI5OTJlNjFjZWI5YjZmOCBsZWdhY3ktdHJ1bmsKKzQyMjIxIDgxOTQyZmM5YTIwZDE2NjllODcyNjlmYTZhNmJmMjY4MTk0ZGY5NTQgbGVnYWN5LXRydW5rCis0MjIyNiBkNjgwZmE1MjU1MTIyNmM0MGYyNTRjOWI0ZjZiMTI4OGY3NTFjNjAwIGxlZ2FjeS10cnVuaworNDIyMjcgNmE4ZDVlMDU0ZTk3MWQzZGI0ZGYwYTljY2MyZjlkYmE5YzlkNzQ3MyByZWxlYXNlMjMtbWFpbnQKKzQyMjI4IGYyMzY2MTA4YmNiMjgxYzZkNmNmNmI5ZWIzNDNmOTNmNzMzYzNmYzAgbGVnYWN5LXRydW5rCis0MjIyOSBiZDQ0YzdjMDk3N2Y1NzY3MjkxNjVmN2E1NDBmMTA0ZTIxZGJkNzEyIHJlbGVhc2UyNC1tYWludAorNDIyMzAgMjZlMGY2OGRlODZlNmJhYjEwMDA4YTMzMzRlNWZmNmRiMTdjODhlOCBsZWdhY3ktdHJ1bmsKKzQyMjMyIDY1NWZhMjI2MDY3OTg0NjNmM2ZmMTUzYTBhZDljN2M3OTcxM2Q4ODAgbGVnYWN5LXRydW5rCis0MjIzMyBlNjYyMjg1ODBlYTI2NDg0OGE4Y2ZhMzQ0N2QzNjhlMDJiNDIyNzliIHJlbGVhc2UyNC1tYWludAorNDIyMzUgOTRkMjdlMDE4MzNkYTQ3OWJkZjhlZjU4YjZlMjE3ZDE3ZTNiYzlkNCBsZWdhY3ktdHJ1bmsKKzQyMjM2IGNiMGRiYWU3MmE4ZTc2MWIxOTg5NGM5MjliMTcxODBjOGY2OGIxZDIgcmVsZWFzZTI0LW1haW50Cis0MjIzNyA1ZTJhY2Y3NDQxYmQ2OWJjZmNkZTViYjFlNGIzNzIwNTdiMDFiNjZhIGxlZ2FjeS10cnVuaworNDIyMzggZGMzMjQ2MzAxNWYxYmNkODQyNmVhMGEzMmI0NThhZGU1YmQwN2MwNiBsZWdhY3ktdHJ1bmsKKzQyMjM5IDhlMjNhN2NjZjYxNWQxOTRiYzRjYjMzYjYwYTNkMzI2ZGQ5N2IwYmQgcmVsZWFzZTI0LW1haW50Cis0MjI0MCA5YTRmZjZkNmU3MjQ2NDEzYzg3YTFlNWViYjE3OWJlYWNhNjI2NjMwIHJlbGVhc2UyMy1tYWludAorNDIyNDEgYTA3ZmIyZWY1MmFlNzU5OWM2YWY0M2M4NjI1OWJmNjE3MTI2ZWJhZCBhc3Qtb2JqZWN0cworNDIyNDIgZDFlZjIzYTE2NzYwYzIzMTM0Yjg5ZDU2YTEzZDRhNDI2ZDg1NGNhZCBsZWdhY3ktdHJ1bmsKKzQyMjQzIGEzMDQ2ZDQzZWI1MmYyZjFjYWZjOGI5OWU1NmI0OGM2ZTQ1NWNlM2IgbGVnYWN5LXRydW5rCis0MjI0NCAwMmYwNzQ0YTljZDAyZGQ4MDEzNjgwNDUyODZjNWFmMzJiYjdmOTAzIGxlZ2FjeS10cnVuaworNDIyNDUgM2VkYjFiY2Q0MzRkNGRhMWI5Y2IzOWNiMmYxZmE3ZjIyNWJmMjA1OSByZWxlYXNlMjQtbWFpbnQKKzQyMjQ2IDM4OGE1ODNlN2E2MzQ0ZDVlMGRlNWEwOWUyM2MzYzZjZWE0MmI5MTkgbGVnYWN5LXRydW5rCis0MjI1MCA0ZWQzMGVhYTAyNTYxMjVhNDIxMGMwYjI1M2EwYjUyYzFhM2MyZDg5IGxlZ2FjeS10cnVuaworNDIyNTEgYzE5MzI4M2U2M2JjYjc2MTI1M2FkOWE4ODM1YWUyMWZlNzQ3NTZlZCBsZWdhY3ktdHJ1bmsKKzQyMjUyIDg0MDRjOWVmZGMzNWViZmY3MDE1ZDU1MmU2OGM3ZWVlZjc3YzVkNDEgbGVnYWN5LXRydW5rCis0MjI1MyA3Nzg5Y2M1NTdlMWVmYTU0YzA4ZWE5ZDM2YTMwYmQxNjhiNDg1MTYzIGxlZ2FjeS10cnVuaworNDIyNTQgYWY2N2I2MjY1YWY2YWUwYmRmZDVhZWZjMzY5ZDZlYWU4MjUxOTQ1OSByZWxlYXNlMjQtbWFpbnQKKzQyMjU1IDAwMmY5YjhmZWMyMWU3MGI2ZWZkNTAxMGE1YzlkMmY0ODg5NjkyNWIgbGVnYWN5LXRydW5rCis0MjI1NyAwYTJhNGYxNDExMGI5NGE4NDFkY2VkYzFhMGFhOWRmNGZmMGFlM2I3IGxlZ2FjeS10cnVuaworNDIyNTggNTFmNzYwMjg4MTA0NTI5YWE3ZDA0NWY4NWY2OTVkZWNkMzViMWZkMSBsZWdhY3ktdHJ1bmsKKzQyMjYxIGYzOGI2MzUyNjNkM2ExZmZmNmFlZDRkNzA0MWQ3OTdiMWE4MTY0YjUgbGVnYWN5LXRydW5rCis0MjI2OCBjZDQ0NTlkMDhlZTIzNjhlNmNlOGQwZTJiNzZiYjIwMjYwMjk0ZDNmIGxlZ2FjeS10cnVuaworNDIyNjkgM2FiZjMzMjY0MTQ2MzM2MWQ4ZjliOGVmMGEyY2M1YTlhYzcxZjJkNyBsZWdhY3ktdHJ1bmsKKzQyMjcwIGVhNTRlYWY5MjAxNjAzMTg4NWRiY2ZiNTdhMWVhMWMxMmUzM2VjOWUgcmVsZWFzZTIzLW1haW50Cis0MjI3MSBkNTk2MTlhMzcxYzIxNzljMzIwZmU3ZDZkNjA1NTdiYWJkYWMyYjQ2IGxlZ2FjeS10cnVuaworNDIyNzIgZmRhY2Y3MmQ0OTc2MzAyYzkyYjQ1NTE5ZGE0NTk0NTZiYTAyM2M5NyByZWxlYXNlMjQtbWFpbnQKKzQyMjczIDU1MjQ2NGQ4MWUxYjIxNjk2MWVhMmE3NmFlZTU4MTViOTJhNWJkNGMgbGVnYWN5LXRydW5rCis0MjI3OSA4NDE2ZmIzMjA0MDM5MTlhNmRkMDY2ZjAyODZkOTViZThjMmFiNWRmIHJlbGVhc2UyMy1tYWludAorNDIyODAgMzk3ZjYzOWY3ZTZiOGFmZDBiODMyMDZhMGM4ZmQ5ZDE4MDM2MzFiYiByZWxlYXNlMjQtbWFpbnQKKzQyMjg0IDRjMmQ2ZWI4ZDVlOWMzYzYyN2VhYThmOWJlNWFmMzk0NzRjNjZjZDUgbGVnYWN5LXRydW5rCis0MjI5MCA4OWYxZGExMzQyY2E0N2RmOGFiYmRhMzAwOTQ3MzU1ZGExOWY3ZWVkIGxlZ2FjeS10cnVuaworNDIyOTEgM2NmOGE5ZWQ0NDZiM2U0YjEwNTkxMTU5NGQxMzEyNWIyNWZmM2ZjMiBsZWdhY3ktdHJ1bmsKKzQyMjkyIDkzZWZhNTliMzI5N2NmZmFjN2Y5MDZlZTlhOTM5MTM3N2VjNTBkMTUgbGVnYWN5LXRydW5rCis0MjI5MyAwNWUzMTRlZTI2Zjc3MDg4NWRkNzc5NjY3Mzg2OWU2NjkwM2Y5MDY4IGxlZ2FjeS10cnVuaworNDIzMDMgMTY1Mzg5YjE0ZDZiYTcxOWJjYzE1MTlmZTQxNzRmNTBmNTAzYzRkNiBsZWdhY3ktdHJ1bmsKKzQyMzA0IDgxZjQ0ZDEyYmVmN2ExOGUzOGY2NmU1OTE0ZDAzMzVmOGNiOTM3YWEgbGVnYWN5LXRydW5rCis0MjMwNyA3YjE5YTUzM2NlOWJhZDk1ZGY4NTdiM2NhNGFkZDhhY2U3OWMwZGJmIGxlZ2FjeS10cnVuaworNDIzMTEgMGM1YWU4OTI0MTA0ZWU2NDE3ZGIwZDQ1YzA1Yjc1MThmZGFlOGJmOCBsZWdhY3ktdHJ1bmsKKzQyMzEzIDFjM2IxNWRmNjdhMjkzOWZmMzAxZGI4ZGYwYzdlNmFhMTc2NzNkNDIgbGVnYWN5LXRydW5rCis0MjMxNCBjMDczZGZmYmU3MGVjOTVjMjNiYjQwZTQwZTA4YjBhOTk5YzQzYTNjIGxlZ2FjeS10cnVuaworNDIzMTggZDIxODc1ZDM1OTJiNjQ5NzRiMjZiMGEwMDFlYzE0M2Y0YzdlMzFjOCBsZWdhY3ktdHJ1bmsKKzQyMzE5IGUyZDQ2MDhmNWMxZDZkMGY4ZjQ1NWVmODQ3YThlZTBhNzc5MjU5OTkgcmVsZWFzZTI0LW1haW50Cis0MjMyMCBkNDk2YzA3NjRhZDYxNGE3ZTU4ZGE5ODNiNzdjNGZkYzFlYzg2ZWZkIGxlZ2FjeS10cnVuaworNDIzMjEgYWUxZGE1MTI0MzgyNGE4ZDdjYTM3ZWM3MDI3NzNmZmE3OGZkYjNhNSByZWxlYXNlMjQtbWFpbnQKKzQyMzIyIDZjNmI0MjlhNzAzMGM2NTAwOWQ4ZmRmMThmN2NlNjFlOWRlMDE0Y2EgcmVsZWFzZTI0LW1haW50Cis0MjMyMyA1MTI5NzgzMWI1Zjg5MDllZTM2NGY0YjgyYTk3Y2ExZmI2MjViNDZhIGxlZ2FjeS10cnVuaworNDIzMjUgYjQ4YTA0NzI5Y2M0OThiMGJkM2U4ZGEzM2Y4NmFkNTM4ZWUzMThhYiBsZWdhY3ktdHJ1bmsKKzQyMzI2IDIwZjc1ZDVlNzllOTUzYmU0NmZhMTVmMmJiY2E0MjA5YTYxMjQ2ZTggbGVnYWN5LXRydW5rCis0MjMyOCBjMDA3MGQ3NmMwZGIzZTA1NTMxZTJhOTc5NjJmNmMwN2QzMmE0YWMyIHNzaXplX3QKKzQyMzMwIDM2ZWFlM2ZjMzczZDUwMTA1MmFkNGYyZjFjYWMwOTNhMmQ5OTM4NzMgc3NpemVfdAorNDIzMzIgNzE1MzA5MjFjZTkzYjNlMzdlNWJkNGJhOTlkZDg2YTcyNTdhOWU5NyBzc2l6ZV90Cis0MjMzNCAyYTMyMzFmZTcyZTI5OGFkOWY5OTEzZmQ5N2NkY2ZiYTdlZjU4MzJiIHNzaXplX3QKKzQyMzM1IDk5ZGZkY2M2ZDYxM2RkZTQ0Yjg5YTgxNDZjMzllNjJjZDA3OTE2MjAgbGVnYWN5LXRydW5rCis0MjMzOCBjNDZkZTFlNWI5YTAzMjAxODA4NWNhZDZmNDZkNWMwMWZlNzRiZDAxIHNzaXplX3QKKzQyMzM5IDY1YWU3MzBiNjIzMTQzYTliNWNlMmExYmYxNTM5MmM3N2JlOWM4Y2IgcmVsZWFzZTI0LW1haW50Cis0MjM0MiAwN2JhOGFhZTNkYzY3MWE4NjE5MDE5MjBiYTJkNGVlZWVjNDZlNzhiIGxlZ2FjeS10cnVuaworNDIzNDMgYTJiNmRkYWI2NmQ3OGEwYjg5OWZiODc5NDg3ZGNiN2Y4NjEyNTk4ZCByZWxlYXNlMjQtbWFpbnQKKzQyMzQ0IGU0NzFmMWRmMmQwMzFmMTA2Njg4Mjk5ODhhZjE4YTUyZDQyYzEwNzQgbGVnYWN5LXRydW5rCis0MjM1NCA3NGIyNTMzYjU5YjhiZWI0N2RhYjI3NTU0Y2E3YzEyYzRkNmZlM2U0IGxlZ2FjeS10cnVuaworNDIzNTUgYzdhYjQxN2M1OWJjOGIwM2Q4NjY5NWI0YzJiODg3ZTc1MWEwMzExZSByZWxlYXNlMjQtbWFpbnQKKzQyMzU2IGFjZDcwMmUzMDZmYjQxNGI5ZGFlOGI2MDEyYmE2ZTI3NmY2OTVkNTQgbGVnYWN5LXRydW5rCis0MjM1NyA1NzRjMjVmZTYwMjg0NTIwZWQyNTNlMzM0YzI3NTlmODljZTIzYzk5IGxlZ2FjeS10cnVuaworNDIzNjIgMzQ0NzU0NDk3Y2IzZjU4OGU2NTg3NTgxMjQ1NmRiMGExOTA1ZGY3YiBsZWdhY3ktdHJ1bmsKKzQyMzY1IDIyMDQ5N2UwODljZThkZWI1YjBjOTYzN2YxMTMxZTQwN2MzNzM0ZWUgbGVnYWN5LXRydW5rCis0MjM2OCBkYjJmY2E5ZWEyNjQwNjI4MTg2ZTM2MWQwYTU1MzI4ZWEzNzYzMzBhIGxlZ2FjeS10cnVuaworNDIzNzEgYzBjMzZiYmQ1ZTBjMTk0Mzc2OGIwYjM5OTNiNmM1MTk0YWNkZTIxOSByZWxlYXNlMjQtbWFpbnQKKzQyMzcyIDE3ZWMxN2RkMmFiM2Q3ZmM0NjY0MTI0ZmI0NzE4ZDMzZWIwZWZjYmYgYXN0LW9iamVjdHMKKzQyMzc2IDk2Njg1ZjExMjcwOTQ0NDQ1MmQ0MTA0NDM3ZjZmZDY4ZDc0Y2UxYmMgbGVnYWN5LXRydW5rCis0MjM3NyAzNWRlOGJjY2ZkMGVkNzI4Yjk5YmM0MWFjZmI1ZTIyMjllNTA4MzQ2IGxlZ2FjeS10cnVuaworNDIzNzggOThmN2I3NDNkOTFiMDM1YmVmMjVhNDk2NmQ5MTMwNDVkZTVkMmY0MSByZWxlYXNlMjQtbWFpbnQKKzQyMzc5IGMwMzRjZGQ3OTYwY2VjNjE0NGVhMmJmNjVhNDRkZWYwZjgxOTg5YmUgYXN0LW9iamVjdHMKKzQyMzgwIDM2MjVjOGIxNDNkOWNjY2Q1OTI4Y2Y5MGNmZTFiY2FhNzBhZjhmYjkgc3NpemVfdAorNDIzODIgN2ZkYzYzOWJjNWI0ZDNjMDkyY2IzZmQ3ZDg3ZjczZGIzZDQ3YmEyNyBsZWdhY3ktdHJ1bmsKKzQyMzg0IGI4ZTczYzJkMWYxN2IyNzUwYzY1MzcxZjI3NzI1OTlkODM1MTdjYTYgbGVnYWN5LXRydW5rCis0MjM4NSA3OTk4ZDg1NjQ5YzllMDAwYjM3YmMwZDFmMDE2ZGY0NjYzYzc2OGZlIGxlZ2FjeS10cnVuaworNDIzODggZGE5M2Y5ZjJkNmU4YTgxZmRkYmQ1M2EwYTk1MTY2ZmU5ZDNhNzliNiBsZWdhY3ktdHJ1bmsKKzQyMzg5IDU4MjVjNmFjZTI4YjYwZWI1N2E1ZDU0MjU1OTNjZWYzYmUxYzA2MmEgbGVnYWN5LXRydW5rCis0MjM5MCA3NzVkZWZiYTRlZTc0YjU2MWJmNDM4ZGZkNzFlNDJiYzM0MThjZGY3IGxlZ2FjeS10cnVuaworNDIzOTQgNzY3YWRjMDk4NDE2MWJmNjMzMDUyNDM2MGFiMzA3YzZiNTI1MTc5ZSBsZWdhY3ktdHJ1bmsKKzQyMzk1IDczMjJkY2NiYTIyNDI4YTQyYWM4OTlkNTBlZDk0ZThkOTVmMjQxNjIgbGVnYWN5LXRydW5rCis0MjQwMCAxM2U5OGUzNjlhYmQ5Zjg2YWVjNzRiYjM0YzMzYzE1Yzg3OGE3MzZiIGxlZ2FjeS10cnVuaworNDI0MDEgMGYzODk0YmIyYWRhYWM4YTlhNWE1NmRjMTA0Y2EwMWRlNjlmYzNkZCBsZWdhY3ktdHJ1bmsKKzQyNDAzIDE1OTZmZjVjNzliNTAyZTFiM2M0YzhmMmMzODUyOGI1ZWEyYmJhYzMgbGVnYWN5LXRydW5rCis0MjQwNCAzMzUwZjg1Yzg4OWZkODBiZDNmYmViYTc4Zjk1MTJkMDJkMWM2MmU3IHJlbGVhc2UyNC1tYWludAorNDI0MDUgNDQ1YzBhYTgxMWNhNzBkZDlkN2I4MDc4MjZjNDZhMWM2MjU0YzNkNiBsZWdhY3ktdHJ1bmsKKzQyNDA2IDkxNGY1YjBkYTU0ZWUxZjQwMjMxM2U1OTExMzQxNTg0OTE0MDQ4YjIgbGVnYWN5LXRydW5rCis0MjQwNyA3YzljZmQzYjVkMGZhNmYxZDQ0ZTVjZjM0YzFjODU5ZmZiOWVlYTRjIGxlZ2FjeS10cnVuaworNDI0MDkgN2RjMWZlNzc3MTNmMmQyMGNjOTQxNTVmYjkxOWY4ZjAyYWMxMGE3MCBsZWdhY3ktdHJ1bmsKKzQyNDEwIDkxMzMxYTg4NzE4ZTAyYmUyMTFiNDk3MzQxMmZjZThmYjY4ZTc2YjcgbGVnYWN5LXRydW5rCis0MjQxMSA5ZjNmODdlOTIwYTZkMWUxOTU1NzcxOTFhMWI1MTljOWIxZDY5NWU2IGxlZ2FjeS10cnVuaworNDI0MTIgZDZkNDE1ZGYwZGYwYWFjMmExY2E3ZjMxYjQ5NThmOTY0M2UwMTg3MSBsZWdhY3ktdHJ1bmsKKzQyNDEzIDI2NDcwY2RlZWEzZDZmYmVjYTBjMzM3ZGQ1ZTdjZjE0OGM1NzMyOTkgbGVnYWN5LXRydW5rCis0MjQxNCAzMGFlZjNjZTJiMjZjMDkxOWNhZjdjZjZiYmFmYWZhZGJhNTk0NGQ0IGxlZ2FjeS10cnVuaworNDI0MTUgMjc5MTY3NmIzODI1OTAwNzYzMGQ5NzdiMTQ0NmE5NDYyYmYzNjA1NyBsZWdhY3ktdHJ1bmsKKzQyNDE2IDY3MmMzMGJmOTVlNjlhN2RlMThjMWQ3N2JjNWJmM2Q1NzkyNjZkMWQgbGVnYWN5LXRydW5rCis0MjQxNyA0Yzg2MDYxOTFjMGNmMzIyZTllNzg1MTc4NDAwOWQ3ZjJlMmQ3MjIwIGxlZ2FjeS10cnVuaworNDI0MTggMjI5N2IyNzBmY2Y2OGQ5NjBmZjIxY2EwNTQ5NmU0MzAwMTcyMjRkOCBsZWdhY3ktdHJ1bmsKKzQyNDE5IDAwZjljNmUxNTBiYTI1ODdjNjhmMzJmMWNlODU2NzcxZDdlZmI4ZmMgbGVnYWN5LXRydW5rCis0MjQyMCA5ZGY2MWI5NmFhNDI2NGJkOTQyNTk5M2FjMmI4ZTc4YTM2MGUxOWE3IGxlZ2FjeS10cnVuaworNDI0MjEgNzZjZTg4MGRjZTQ5ZTExMTNkZTZlMzBmNTI2Njc3MWI5N2NkZjg0YiBsZWdhY3ktdHJ1bmsKKzQyNDIyIDQ0MmMwZmIzYzRlZDExMThkOGIxZDJiNWYwZGRjY2ViYWY1N2UwZGEgbGVnYWN5LXRydW5rCis0MjQyMyA5MmFmZjk3NDE3YzQ2YTFhYWEwNmQ2MzA5MmQxZjNiMzZjNmNjNzAyIGxlZ2FjeS10cnVuaworNDI0MjQgNzFlNmY2YjQxNWE0YzI2MzI5NGQyYzI0MDdkZjg2ZmM0OWE4ZGYzOCBsZWdhY3ktdHJ1bmsKKzQyNDI1IDBjMDk2YmUyNzAwMDNkYWNhYTNlNWM2ODYxN2EwNDI1MWU5M2I2NzUgbGVnYWN5LXRydW5rCis0MjQyNiBlZDA3YzFhNWUyNGM2Mjc2MzlhMmUxMDFlYzc3ODRiODk5NWY0ZDY4IGxlZ2FjeS10cnVuaworNDI0MjcgODYyNDkzY2VhZTRiMzIzNzhkM2EzMGM1MjYwYWUzZjU2ZmRjYzAwNSBsZWdhY3ktdHJ1bmsKKzQyNDI4IDI2Y2FjMzcxZDdiNmVmOWFmYjkxZDZhYTU4MWNiMmU2NzViYjZkZjUgbGVnYWN5LXRydW5rCis0MjQyOSBjMDZlZTBjOTEyMDk1N2E3NzI2MWJhZjk3N2M3OGIzMmE0NThmMzU0IGxlZ2FjeS10cnVuaworNDI0MzAgZmRhYmRmMTQ4MzM2MjA1ZWU1NjJlZDQwYTVhYjlkOTM2YTAxNDlkYyBsZWdhY3ktdHJ1bmsKKzQyNDMxIDMxNjkzOGI0ZjhkMDAyODNjOWJhMWJjMzYyNjUzNmYyZTRmNjBiZDYgbGVnYWN5LXRydW5rCis0MjQzMiAwZDQ4OTEyODQ0MWFmNmI5NzZjODM5Y2U0MThhMjg5ZTVlYmY3MTllIGxlZ2FjeS10cnVuaworNDI0MzMgN2RiM2NiOWU4MzlmYWUzNWFkMjg3MmNjMDY3ODVlM2U3ZDdhYmI0NSBsZWdhY3ktdHJ1bmsKKzQyNDM0IGY3ZjBkMmE1YjIwYjgyNWYyNzBmNmFkYmQwZThlYmIzNjg3NGZjMGIgbGVnYWN5LXRydW5rCis0MjQzNSA5N2M4MWRjMDNkZGRiZTc2M2Y4Y2IwMWUyYWIyODcxZjcwMGM3NjdjIGFzdC1vYmplY3RzCis0MjQzNiAwNTZlNWI0NjA2ZGE0MzMxYTdkN2Y5NmU5YmEyZTliYjM2MmIxYzhiIHJlbGVhc2UyNC1tYWludAorNDI0MzcgMzYzMjVjYWVmZjljNjViMTRiMWM1NDY4ZTYwZDBiOWQ2ZTgwNGRlMSBsZWdhY3ktdHJ1bmsKKzQyNDM4IDIzZTIzZTE1ZTdlN2MxNDAxYmRhMTcyMjY4NTBhMmM5ZjQ2NDQ3OWUgbGVnYWN5LXRydW5rCis0MjQzOSAxMjMyZTg3Y2I4MTYwNzk5NGMzODhkZGFkZWQ2ZmU2MTIwMjRlNGQxIGxlZ2FjeS10cnVuaworNDI0NDAgNWJkMDJkYTAzN2JmYzNjZjYzYjE2MmRmMjk5Y2E2ZGE5MmRjM2Y4OSByZWxlYXNlMjQtbWFpbnQKKzQyNDQxIGM5MTg3OTEyYjU5ZTk5MTdmMzQwZDIxZDdiMzBkMDAyNDM2NTEzNzcgbGVnYWN5LXRydW5rCis0MjQ0MiA2OTNkYTg2Nzg5NDZiNjU2MzE5MzE5N2MyN2EyNWIwYzJlYzMxMTAzIGxlZ2FjeS10cnVuaworNDI0NDMgYWQzYzRiMmMxNzMwMDk0MmNiNWZkYjkwMzhmYWZkY2ViY2M0MjgwYiByZWxlYXNlMjQtbWFpbnQKKzQyNDQ0IGJjZTNmMzU2Y2Q3YjlkMWIyMzhiM2Y2ZTVmMzMzYTU2MDZhYWZhZWYgbGVnYWN5LXRydW5rCis0MjQ0NSBhOWY5ZGI5ZmE5NzRhYzgyNDY4ZTczMzBlZTg0ODk3OTQyYWQwMjU1IGxlZ2FjeS10cnVuaworNDI0NDYgYzU2NTBkYmY5MzZlYzBjMTE2MWMyMjMyZjQxOTFhZTYwNDg1NjQ3MSBsZWdhY3ktdHJ1bmsKKzQyNDQ3IDViMzk2MTQ4MTdhM2U5YzM1MzI2MzU0YzQwMThhOTk2NTJkNWYxMjEgcmVsZWFzZTI0LW1haW50Cis0MjQ0OCBiYzQ3ZjFhNmFjYjk5ZTViYTU2NTcwYTRhZmI2YzM0NTVjMDM2NTJkIGxlZ2FjeS10cnVuaworNDI0NTAgNDY2OGRmNDUwNjcyYzJlZmI5OTMwNWMyYzllNDA0OGZkNGU2ZDAxMiBsZWdhY3ktdHJ1bmsKKzQyNDUxIDE1NzZmOWJlYjUwM2JjNDhlY2RhOWEyMGVjZWMxM2VhOWIwZTczNTAgbGVnYWN5LXRydW5rCis0MjQ1MyA3ODdmZWJhZTMwZGJmM2M2YTNlNDg0YzI5ZWZkYjJiN2E3ZmQwMTQ3IGxlZ2FjeS10cnVuaworNDI0NTQgZDM2ODVmOWI3YjcxYjk3NTdhZTkwN2VjYjlkYWQ3OTY3YWI2YWE5MCBsZWdhY3ktdHJ1bmsKKzQyNDU1IDA5MjMwMzU3ZjkyNzkxMTg3NzhlMTQ0MDZkMmIxZDk5N2FhZjg2MjQgbGVnYWN5LXRydW5rCis0MjQ1NiA5YTgzOTZmNDYwYWZmY2JkYjkyMDk1YzYyNTg3ZmY5N2MzMDY5NjEwIGxlZ2FjeS10cnVuaworNDI0NTcgNmJmNzhkMmI1M2I0MzVmY2VmZmRiNjExZTQ1NTI3NmY5MzgzYmNjZCBsZWdhY3ktdHJ1bmsKKzQyNDU4IGExMjMyNjAyMjYyY2JmYWQxNTVkOTJjN2ViNjMyMmRkNzQxYTkxYmQgbGVnYWN5LXRydW5rCis0MjQ1OSBiOTM4MWE1NjIzZTJiZTc2Y2ExYjZhMGQ2MTI2ZDE5YWQ2ZTY3ODRkIGxlZ2FjeS10cnVuaworNDI0NjAgOGRlNTgyNDZmZWY4ZTBjNGYxOWIwZTQ4ZGQ4NmUwZjI4ZmEwOTdjOCBsZWdhY3ktdHJ1bmsKKzQyNDYxIDk0MTc4NmU2M2FjOGU2YTVjNzVhZjNiNTZkODYwNjIwZGZiMGUzZDcgbGVnYWN5LXRydW5rCis0MjQ2MiAwZWY3Y2Y1MjIyYjA4YWQ3YzE4YzFiNjQ5NmZiOGViNmM2Y2ZmNmViIGxlZ2FjeS10cnVuaworNDI0NjQgOWQyOWRhZWNiOWZhYWU4YWY0YjRhZmUyMjQ4YjgyZWM2ZGI2YjM5ZCBsZWdhY3ktdHJ1bmsKKzQyNDY1IDVjZTMyYTViZDI0MGE3NDkyYzA2N2I4ZWM1NThjOTI5NWUxODZkYjQgcmVsZWFzZTI0LW1haW50Cis0MjQ2NiAyMzg2YzEwNWE4OTQzNjQxMzJjNmE2YjgzYTRlNGIwNjYyMmEyZjVmIGxlZ2FjeS10cnVuaworNDI0NjcgM2UxZDhkM2I0YjZlZDg5MzIyMjBlNTUzNTk2YWM5OWIzZTIxZDAwOSByZWxlYXNlMjQtbWFpbnQKKzQyNDY4IDE4NDU4NzExZWJlZDg2YzViYzI0OGU0MGU2OGUzMzM1N2QyOTJjZGUgbGVnYWN5LXRydW5rCis0MjQ2OSA4YjRjYjIyNWI0OTc1Nzg4ODljMjA2NmIxM2RhYTBjYWRlNDFjYjcwIHJlbGVhc2UyNC1tYWludAorNDI0NzAgNTliNTMyYWIzMzc2OTIzMjBhZWRmNTIxMzIwYmY1ZjE5MmMxN2Y5ZSBsZWdhY3ktdHJ1bmsKKzQyNDcxIDU3MjliNGJjOWI4ZDM5NjlhOWU0MzZlNjRiNDVjYzA5OTliYmM1YWUgbGVnYWN5LXRydW5rCis0MjQ3MiBiNjBjNTBiMTYxMjZiNWRjZTcwNzZlYTgzN2IzYTI0YmY4NjRlMGFmIHJlbGVhc2UyNC1tYWludAorNDI0NzMgMzNhZGM1ZGQyYmYyMTk4Yjc2ZTdiZjQ3MjQwOGNjM2ZmM2JjYjlkMyBsZWdhY3ktdHJ1bmsKKzQyNDc0IDkyMDA0OTEzYjQxMjIwNjNhYjhiZmY1YzZhMjcwYTFiMDRkNmM5NTAgbGVnYWN5LXRydW5rCis0MjQ3NSA4MWZmZGVlYTFkMDY2MDFmY2Y0YjliZjc0NWM4NGIxNmEzZTk5YTJkIGxlZ2FjeS10cnVuaworNDI0NzYgMDJhMGViMWEyYjIxYmI5NDljMTFjNzhmNzJkNjRhMGNjYjhhNGQyNCBsZWdhY3ktdHJ1bmsKKzQyNDc3IDhlMTMyMzYyNDNkZDM0Y2ZlZDM5YTYwNDgyYjJkYmFiMDBjMDYzYWEgbGVnYWN5LXRydW5rCis0MjQ3OCBkYzZkZWMxNTY4Njk4MmQ1OTMyNWJjNDA0OGFmNTY0ODczYjA0MzIxIHJlbGVhc2UyNC1tYWludAorNDI0NzkgYTY0NTBmOTg4YWE0NDU3MmU4ZmMzOGFjODk4NTAxNTAwMGUxMGExMSBsZWdhY3ktdHJ1bmsKKzQyNDgwIDBmMWZjOGVmYjcwYjU4MmFjMTI0ZTE2ZjBjNGU2ZjI5NjQ2NzRiYzcgbGVnYWN5LXRydW5rCis0MjQ4MSA5ODlhYTI4NWVkYjliZGRmNTc0MTdlYjAwNWUyOTQzNjczNmJlYWQzIGxlZ2FjeS10cnVuaworNDI0ODMgMThmMjcyZjUzNjk5MTI4YTViMjA5ZjUwNzM3Y2ViYjJlYWRmYzE0ZSBsZWdhY3ktdHJ1bmsKKzQyNDg0IDI0NzVmZTk1NzgyZDAwNTY1ZWY5NDg5MmNkYWRhNDVhMjg5N2Y2NWEgbGVnYWN5LXRydW5rCis0MjQ4NSA4MmJiZDVkZTAyZjFjODg2OThiN2I0M2RkNTU0Njc2MTFiMjc4ZWNkIGxlZ2FjeS10cnVuaworNDI0ODcgYzZiZDAxYzdhNTY4YzUwNmNlMDkzNTIwMjNiNDIzOTkyYTk1MjUzOSBsZWdhY3ktdHJ1bmsKKzQyNDg4IDIxMGNmZTlkMzA3NzQxMjg2ZjFiZmRmOTEzMWI5MzAxOWQxOGQ5YjYgcmVsZWFzZTI0LW1haW50Cis0MjQ4OSAwZDVmODA3N2JkMjQxOTVhMDhiYzE1NTM4N2E0ZTQ0MzQwYzMxNmUxIGxlZ2FjeS10cnVuaworNDI0OTAgYTFiMzBmY2Q5ZTI4ZWI4NDVmMWNhMzRiNmVkMWFmZmU2ODU5YzRhNSByZWxlYXNlMjQtbWFpbnQKKzQyNDkxIDA1ZWUwNmI3YjU0NzM3MDBkZGFjNTc5ZjhmYjk4MWU3NGIwMmZlYWUgcmVsZWFzZTI0LW1haW50Cis0MjQ5MiBiZDdmMmQ4ZThkZWFiYmUwNDI1ZDNkNDE0YTBmY2FiODM0NWJkZThhIGxlZ2FjeS10cnVuaworNDI0OTMgNzgxNjU0YmU1NWVmMGM4ZGUzYTU5ODNiMTljZmRlMTA4MTI0ZjQ0ZiBsZWdhY3ktdHJ1bmsKKzQyNDk0IGM2ZmJhNDU2MjI3Yjk3M2ZkMjVjNmFhMGRhY2YzOWMzYjEwMDhjNWEgbGVnYWN5LXRydW5rCis0MjQ5NSBlNTczNzdmMGExNjdmMTQ2ZDNjMmVjMjM1MzhhZmRhYWE4MmE4YzdjIGxlZ2FjeS10cnVuaworNDI0OTYgMzhmNGIwOThlYTY5MGM5NWM3ZjYzMDU2NjRkYjAxMjlhZjNhYjU0NCBsZWdhY3ktdHJ1bmsKKzQyNDk3IDlkOTdjODMzOGQ0YzI0YzMwMjFhNWI2MjM1NzNmNDYxNDNkOWVkYjggbGVnYWN5LXRydW5rCis0MjQ5OCBjNThlNzliMmNhMDVlYjk0NDZhMzdjY2QxMzE4ZTYyMWY2MzA1NmQ3IGxlZ2FjeS10cnVuaworNDI0OTkgZThhNDllYjg1MTljMzU2NTliODEyOGQwOGNmMThlYmJlNWNiNGQwYiBsZWdhY3ktdHJ1bmsKKzQyNTAwIDJjMTg3MGFiYjZjZTU2ZGQ1Y2NmMjNhZjk3YTg1NjdmZGYwNDRkNGYgbGVnYWN5LXRydW5rCis0MjUwMSA5YzBmZDU4NjQ3NWMxNzA2NDQyNzA4ZmE4ZWZiNzYxZmJlZmY5MDkyIGxlZ2FjeS10cnVuaworNDI1MDIgOTQ2Y2Y2ZDU4ZmQxMTU5NTc3MzdjN2IwZGVjM2FhZjMzNDg5Mjk4MCBsZWdhY3ktdHJ1bmsKKzQyNTAzIGZlNGFlMGM0MTdjN2IyOTY2NmRhNmE2NTI0ZGMxM2JjZDc3MTVmYjQgbGVnYWN5LXRydW5rCis0MjUwNCBjYWIzNmFhZWUyZTNkNTdhNTI5MTVmODhiOWVlNDVmNzM1ZTBhOGJiIGxlZ2FjeS10cnVuaworNDI1MDUgZjZkNmU1MjIwODIzZTE2YTRmNjBhNTkzMGUxNmEwYzE1YWZjMmNkOCBsZWdhY3ktdHJ1bmsKKzQyNTA2IDFhOTg3OThhNGIxZGE3MjE5YzUzNDg5MTE0MDQ5ZDA0ZTQ0MmYyOTEgbGVnYWN5LXRydW5rCis0MjUwNyAzYTVmNzFkNmJiZWU5NDExMWU3ODU3MDRjMDIwYmVlOTAzMDVlMGIyIGxlZ2FjeS10cnVuaworNDI1MDggNDZlYzk0OGNiZGU4Zjc5NjlmMjc3OGM3NDY4NjZlN2ZmNmQyNTEwZSBsZWdhY3ktdHJ1bmsKKzQyNTA5IDA2NzFmM2M0NjJkNTAwNjhlNGRmMjg5YjQyNzQ4NGU2OTQ3ZTkzNDkgbGVnYWN5LXRydW5rCis0MjUxMCA0ZDc2NTNlNWNiM2JjYWFhYTI5NmUxYTAzNjQwY2QzMmYzNWIxZTU0IHJlbGVhc2UyNC1tYWludAorNDI1MTEgOTUyM2E5NDE1ZTE4MTBlMTJkNjlmMzJkMDg1YTRjOGI0ODI5MDQzZCByZWxlYXNlMjQtbWFpbnQKKzQyNTEyIGRjZjYyMTEzYzJlMzJjMWM1MTNlOWI3NmVlNDAzNGFkNGRhZDYzMDkgbGVnYWN5LXRydW5rCis0MjUxMyA3ZDI5MmNiYzcxM2FiMGZlOTllOTA2MmRiOWUyMTI5ZmUxODY1MTAxIGxlZ2FjeS10cnVuaworNDI1MTQgMzYxYzY1OGE1NWU2ZTMxYTMwYWVhZmRhMjZkZjhlYmNhNDkxMmM5MSByZWxlYXNlMjQtbWFpbnQKKzQyNTE1IGMzNmUzN2ExOGYxYTM5Njk0YjI1MWU5M2I1ZWYwODliNDQ4YzQyYzAgbGVnYWN5LXRydW5rCis0MjUxNiBhOWQ2YjFhZWMwOTYzYjRjY2Q4ZTNjYTljMjRiNmY5NGRiYTQ1NmJlIGxlZ2FjeS10cnVuaworNDI1MTcgNmQzYmEwMDRkNWU1OTcxYjBlNDY4ZDU5YzZmYmM4ZWUxMTRhNzA5MiByZWxlYXNlMjQtbWFpbnQKKzQyNTE4IGI3NjZlZDAzZDQyNTZhNmVmNGY3ZDQ5ZDJjMWM0MDI0YWE3OWJjY2IgbGVnYWN5LXRydW5rCis0MjUxOSBjNmZkZThhM2I5ZGY4YTA1ZWJhNjZiMTJhZGRjMzQ3NDdjMThkMDQxIGxlZ2FjeS10cnVuaworNDI1MjAgNGI0ZWEzOGRhOThlZDMxOTg0NjYzMGI5ZmYxYWYxZjcxOWI4ZTMwNSBsZWdhY3ktdHJ1bmsKKzQyNTIxIGQwMDgwNzUwNTczYjYzY2RjNzc2ZjkzZTBjZDJjNjMyOTYxYjJiYjAgcmVsZWFzZTI0LW1haW50Cis0MjUyMiBkMTEyZGE3OTY0ZDYyOWEyYTI4NTkyYTYyMmM2YjIzOTg1ZGFjMWIxIGxlZ2FjeS10cnVuaworNDI1MjMgZmY5YWZlYjA1YjM0MjY3NGRhNzhiZDI0OTVjMjZmYWFmMzlhNTM5OSByZWxlYXNlMjQtbWFpbnQKKzQyNTI0IGJkZGMxM2Q1N2I4ODJkMmZlZTJiMzBiNTMzM2Q4YTBjNDU4ZmI1NjcgbGVnYWN5LXRydW5rCis0MjUyNSAxZTM5NjhmY2FjNjgxOWVlNDY1MDFjMTE3NjE5Y2ZhYWI0M2JiOTM0IGxlZ2FjeS10cnVuaworNDI1MjYgOGE2ZmFlZDBhZjA0YjVjOTczMTUyOTAxZDJiNGQ5OTllNzQzNjc3MSByZWxlYXNlMjQtbWFpbnQKKzQyNTI3IGQ0ZTE3NjJiOGUxNTM0MGZmY2ExZTk3ZjVkZjcxMmQ0OWUyZjU5NjAgbGVnYWN5LXRydW5rCis0MjUyOCAyODQxM2MwODJjMDg3NjJlMGI1OGE1MTg1NWI2MDM4YTFlOGQwMWM4IHJlbGVhc2UyNC1tYWludAorNDI1MjkgZWIwOTc3OTMyZTJkZTg2NWVmNTJiNzRlN2RlNTdjMGE4YjJjNTM0YiBsZWdhY3ktdHJ1bmsKKzQyNTMxIDQ5ZDljMTIwMzU3YWQxMDE1ZjliMWZiNWUxZWZjYzNlZTc0M2YyNzkgbGVnYWN5LXRydW5rCis0MjUzMiA0ZDk4OGRkYTY0Nzg2NDRiOTFkNjFmM2RhM2M5YWJiMjI1OTk2ZWFiIGxlZ2FjeS10cnVuaworNDI1MzYgMjBjOGZhMWUwNjY4MzhmMDU5YWRkZGQ1OGI5YTlmZTQ2MTFiY2ZhZiBsZWdhY3ktdHJ1bmsKKzQyNTM3IDk4ZjZiNTlhNmUwYTA5ZGE2YjZmNzg2MWM0NGVmOGZiMTAyYjI2NGIgcmVsZWFzZTI0LW1haW50Cis0MjUzOCAxNDVkNWZjOWE2YTUxYTI2NDNmNWRlMTIxYjVhMDgwZTcwYjIwZTFkIGxlZ2FjeS10cnVuaworNDI1MzkgNGU1MGFhN2JiMWI1MmQxYzEzZTAzNTU0NWVhZjJiNmFkYWNmZTUxYyBsZWdhY3ktdHJ1bmsKKzQyNTQwIGQwZWJjYjRmNjAzMTM5YjM0MDM5YTVlMmVkZDNlMTA1MmMwOGFlNjUgbGVnYWN5LXRydW5rCis0MjU0MSA2OWMwYmVjMTEwMGFjODNjNzk4Mzg1YTFiNTE4MmIyMjdhMDM3ODZlIGxlZ2FjeS10cnVuaworNDI1NDMgNWYyY2I0NDVlMWM1NDllZGQ5ZDVjMmU2YjdmMmI2ZDNkMDljMTA0NyBsZWdhY3ktdHJ1bmsKKzQyNTQ0IGUwYzJhYmQ1ODFjNWIwYjU1ZTQyNmNmZjliNDA4ZTQxZWJmMzg0OWIgbGVnYWN5LXRydW5rCis0MjU0NSAzNmFlM2Q5Mjk4MzJkNGZmOGNhZTczYzY5NDZiZjU0YWRkOWNjNThiIGxlZ2FjeS10cnVuaworNDI1NDYgMmM4ZGMzNTgxYjcwZjJkMTFhNDRlYzQ5YTRmMjEzNDI5YzBmYzdkZCBsZWdhY3ktdHJ1bmsKKzQyNTUwIDA5ZDE5MzdmMmRhODk1ZmU4ZGM0MGM1N2RmY2FiNjIzMjE1NTMxZDcgbGVnYWN5LXRydW5rCis0MjU1MSA4MWYxYjBkZGM4YTE2ZjFhYTNlNjJlMGFmY2FjYzBjYmQ2MDVhNDUxIGxlZ2FjeS10cnVuaworNDI1NTIgNWE4MzY5ODYyMDZkZDM5MGRhYTZhMTU0ZTBlODgzN2IwN2EzYjhiYSBsZWdhY3ktdHJ1bmsKKzQyNTUzIDIxNjIyMTYxMzliOTU2OTU0MzJlMTc0ODc5YWZiODk5ODU0NmJhNjQgbGVnYWN5LXRydW5rCis0MjU1OSA5MTFjN2ZhNDk1YjI0MDQ3MDZmOGFhNDVjY2NlMGE5YTE0ZjhhYWEwIHRpbS1vYm1hbGxvYworNDI1NjAgMTQzYzM0OGZmNzE3NjlkNjBiMGRhZjRiZWYyMDc0MTlmZTMzMjVlNSB0aW0tb2JtYWxsb2MKKzQyNTYxIDQxMjc2MTRmNzUyYTFmNDM2Yzk5ZWM3OWFhODRhYzY5NTYyN2NiMGEgbGVnYWN5LXRydW5rCis0MjU2MiA5NTgwMDg3NWJkMTI1OTRiMzA0ODJjOWY4YjMyMDc5YWRjNjlmMTZhIGxlZ2FjeS10cnVuaworNDI1NjMgZTFjM2ZmZTkyNmMxMTU2MmRhY2M0NzY4MDhjMDM0OWNlNDBkYThjZCBsZWdhY3ktdHJ1bmsKKzQyNTY0IDVkODI4NzAzYzZhMTczMmFkZDQ0MjAxZDNmM2U0MmQ4NzA1MmI0ODIgbGVnYWN5LXRydW5rCis0MjU2OCA2MjU2NGRjN2JkNzI2MmQxMDEwODQxYzE1MGViMDY2YmE3MDczYmNmIGxlZ2FjeS10cnVuaworNDI1NjkgOGRiOTg1YjQwODZlMThjZWU3M2Q2YzkxNzQwZTAzNTBiMzlmMmExNyBsZWdhY3ktdHJ1bmsKKzQyNTcwIDJmZGE0ZDE1MGMzZGI0NmY2NDcwMjliYjcxNzUwMWVkNWExOGE1YTMgbGVnYWN5LXRydW5rCis0MjU3MSA2YjQyOTIwYWNjYzkyNjRmN2NhYmZmNWMzODYxNzJjMjI0ZjM0NWU3IGxlZ2FjeS10cnVuaworNDI1NzIgYzY1MDY0NDJkZmUwMTUyMmVkOGJkYzE4NmIzYTkxMzFhZWUwMThmMyByZWxlYXNlMjQtbWFpbnQKKzQyNTczIDkyY2U4YmI4YjEyYTdlYjVmNGE5MzJkNmE0M2JkZjllMmVkOGU0ODYgbGVnYWN5LXRydW5rCis0MjU3NCBjOTk2YTEyMjM0YzI1OWMwZmNhMGYzNTI4OGFjOWE0YTQwNWRjOTQ0IGxlZ2FjeS10cnVuaworNDI1NzUgMzkyNGFmY2Y5NWU3ZmQ5YjUxM2MxYzU3MGNiNzIxNWU1NzJhYzkxMyBhc3Qtb2JqZWN0cworNDI1NzYgYzlmYmIwNjdjMmE2YzkwZTMwYWI5MTdjMWM4NjBmZTIyNTQ4OWVhNSBsZWdhY3ktdHJ1bmsKKzQyNTc4IGJiNDgxMTVlNmRhYjMzNTMwOTZjMmEzNzY0MjEwYmU0ZTllMzRkNjMgbGVnYWN5LXRydW5rCis0MjU3OSAzYzBiMjYxMTNkZjZlZDViMzZhNjA2NDlkMmZkMzEyNjJlODY4MWE3IGxlZ2FjeS10cnVuaworNDI1ODEgNzEwY2JkZDQ3OGE4NTFiMzQwYWNmNGVmMzgxMGU5NzBlY2Q1YzYzMyBsZWdhY3ktdHJ1bmsKKzQyNTgyIDJhYjkyNzBlZjE5YWVhZjdmMGVhOGY0OGM0NTEwNjZiMjZkNTQ0NDQgbGVnYWN5LXRydW5rCis0MjU4MyA1Nzg4ZTBhNjg5ZTI1NzdlOGE1ZTMwNmY0ODhkNmQwOGI2M2JjNzQ2IGxlZ2FjeS10cnVuaworNDI1ODQgN2JmYmZiMmVmNGUyMTQ1YTU5MzQzODNiZGRlODYwMjEwMWQ1MDBhOSBsZWdhY3ktdHJ1bmsKKzQyNTg1IDU4YTg0NTFmZjc5NTg3ZTNlNzhiMjU0NjBiNWQwYmVmZTBkNDcxOTQgbGVnYWN5LXRydW5rCis0MjU4NiA2MTY1OTI3NDMxZDZhNjg1NTA4ZmRlNDA4NmU2NzFlNWNhY2Q4MmQyIGxlZ2FjeS10cnVuaworNDI1ODcgZGI1NzFmOWNhZDZmODdiZjBkOTBkMzE2YmRhMzMyYjIwNzQwZjhiMiBsZWdhY3ktdHJ1bmsKKzQyNTg4IDg0MTBmMDZhZDM2ZTE4ODU5NTg5NDlkMTk3NThkZjQ3NjA4NjdiYmYgbGVnYWN5LXRydW5rCis0MjU4OSA5NTA0ZjdhYzM2NjljMjgxY2UyMTRlMTg3OWRhNmZjMGU1OTU5ZGIzIGxlZ2FjeS10cnVuaworNDI1OTAgMjk2Y2RhOWIzZTJmODA5ZjQ1ODg4OGEzZGU5Nzk0M2FkMzFiOTNhMCBsZWdhY3ktdHJ1bmsKKzQyNTkxIDU4NDYzN2Q4MzFlM2ZjYmVjZGFlZDI0ODNlMmUwZWVmZjBiMjY3OTcgbGVnYWN5LXRydW5rCis0MjU5MiA2YzBiNmMxY2QxZjQ2OWQ1OTQ5NDNhMjU1YzQwMmVlZGE4ZTcwYjU5IGxlZ2FjeS10cnVuaworNDI1OTMgMmRkZWE1NTM1ZjA4NjQ5ZTU2NWNiNzQyMjA4ZDRlNzdiMTJkNTI5YSBsZWdhY3ktdHJ1bmsKKzQyNTk1IDc4MGI3YWZlNjE3ODVhZjdjMTQ3YTliNzE4NWIwMjRmYzU2MWFiMzggbGVnYWN5LXRydW5rCis0MjU5NiBkYmE2NDk0NzM1ZDAyYTU1MzkyZTVjZWExNjkwMjg0NDE3MGQyN2RiIGxlZ2FjeS10cnVuaworNDI1OTcgNjdjNzRlZmFkOGMyM2Y3ZmNhNDdmNDg3NDgyZTAwNGNmZGIwYzAxZiBsZWdhY3ktdHJ1bmsKKzQyNTk4IDUyMzBjNGMyOWViYjI3ODY0M2U3ZWMyMDY3NjI0ZWQ4MmVhODFmZmMgbGVnYWN5LXRydW5rCis0MjU5OSBhYzQ5ODk1M2NlNTc4ZmFhOTAyNzIyM2M3ZTIzMjVlZmI0ZjJjMzRjIGxlZ2FjeS10cnVuaworNDI2MDAgZTEzOTE5MTBiMDI2NTJkODM0ZTExODQ2MDM5NGM2MGU4ZTliNzVhYyBsZWdhY3ktdHJ1bmsKKzQyNjAyIDU0ZWI1YjFmYjM2MzJlYzhiYWMzY2M0ZTE0NDQ2ZjQ5ZTQ5ZmE3NzUgbGVnYWN5LXRydW5rCis0MjYwMyBlOWYwZGI0MjlmMmJiYWUzYmUxNjUwZjdhY2YyMmU4ZmJkYzFiMTRmIGxlZ2FjeS10cnVuaworNDI2MDYgNTJjYmM0NDdlMWM5ZmJlZTdhZjUwMmZkMmNlNzYwZDQ1ZDY0YTEwNCBsZWdhY3ktdHJ1bmsKKzQyNjA3IGRhMmExMDQ5MjE1ZDYzMThiZjNmN2YyMWQyMTQ4ZDQ4MjUzYmM3NzkgbGVnYWN5LXRydW5rCis0MjYwOSAwYmViZWIzOTMwNDU0MzNkMGFmYzQxNTI5MDgwODFlNzJiNmY4YTAxIGxlZ2FjeS10cnVuaworNDI2MTAgYjg3M2VjNjc4NTYwNTEzNmMzYzY0ZTQzOTVkYTllNDgwMzUxMjc2YiByZWxlYXNlMjQtbWFpbnQKKzQyNjExIDg2MTFmMzljZDgyYmZjMmFmM2Q0OGMxOWQxNDNlNjRiZjEyZTQ0NDYgbGVnYWN5LXRydW5rCis0MjYxMyA3ZDBmMTIzNDBjOWU0ZjU4YjYxYzA2OGU5MWM5YTQwZTA0NjllYzg4IHJlbGVhc2UyNC1tYWludAorNDI2MTQgZTBmZWFkYzdhZmZiNzJiZjgxY2Q1YTFhZDE4NTQ1ODE2MjZmOTdjMyByZWxlYXNlMjQtbWFpbnQKKzQyNjE2IDExNDg0YTcyZDk2NmZkODhlYmZmOWE3N2ViNGNlNmFlZWQxMDMyZWYgbGVnYWN5LXRydW5rCis0MjYxNyBhY2FhNzllNzMxMzMzZTUyZDBhMGU1NDJkMDRiYzViNmQxZmIzZjVhIGxlZ2FjeS10cnVuaworNDI2MTggZGQzZTVhOTQ1OTYyYzFlYzlkODExNTYyZGNlNjRlY2Y3NmYwM2E4YyBsZWdhY3ktdHJ1bmsKKzQyNjE5IDMwMTcxMDUzNWQxNTAyNzQ4MWMwY2JjZGQwN2Q4YjFhYTQ3MzNjMzEgbGVnYWN5LXRydW5rCis0MjYyMCAxODBkYmZjZjNiZWQwNjUwNTk4NTYzMjc5NDQzMDcyYzY3MTNlN2I4IGxlZ2FjeS10cnVuaworNDI2MjIgMDE1MWEwMjM3NGE4MmUyNTNhMzVmNTQyMmU4Y2FiODIxMDUyNWRjMiB0aW0tb2JtYWxsb2MKKzQyNjIzIGRmYWIyMmFlNDhlMzY3ZjQwOTM5ZTM1MTAzMjRlMWI2ZDBjMGRlYjggbGVnYWN5LXRydW5rCis0MjYyNCBiNmQyZjZmZDNlMTE2YjliOWZlOTViYzk4MmFjNzYzYzM1OWZmMTAzIGxlZ2FjeS10cnVuaworNDI2MjUgN2I1OGZiZGU1ZTVkZmMxYmRkMzk4MTBjNjc1ZWQ0MGFjNDAxZDNmNSB0aW0tb2JtYWxsb2MKKzQyNjI2IGUwYTc3MDEwZDAzM2JjOTMyMmE3N2NkZDBlZTI1YmE3ZDI3MTU4MjUgbGVnYWN5LXRydW5rCis0MjYyNyA3OGRlNWY2YjJmNjdiM2U4NTM5Mzg4Yjc3Y2FlMGUzMjRlYTc4NDFhIGxlZ2FjeS10cnVuaworNDI2MjggMzA1NjdiZTkwYzg1MTMxMWU5MmFkMTAwYmMxOTBjZGZjNDhlYTliYSBsZWdhY3ktdHJ1bmsKKzQyNjI5IGFhMDQwNDEwZmI5YTJkZjk5ZDBhMzgzYjM4ZGI2ZjdlYjU0NTY4MmQgcmVsZWFzZTI0LW1haW50Cis0MjYzMCAyYTJkNDZkMTkyOWE0MDZhZmU2NWIxM2UzZDdhYzM4YzIzNjBlZDQwIGxlZ2FjeS10cnVuaworNDI2MzEgZTMyNDhmMWZjNTRkYjcxOGE5NDIzODQyNzliZjQ4ZDU2YmU1MjVmOSBsZWdhY3ktdHJ1bmsKKzQyNjMyIDM1ZGJiYzFhYjQ0ODdkZmY4NzY0OTg3ODFmMzg4OWM0MmE5MzQzOTIgbGVnYWN5LXRydW5rCis0MjYzMyBjM2UyODQwOTY4NmNiZTJjM2E2NzkwMGViYjBkYjc4MWRmNWNlZWMzIHRpbS1vYm1hbGxvYworNDI2MzQgNjY0NWRiMDk0OTQzZGQyYjQ0NGZjMWUwMWQ0ODE4NzY3ODNiODNmMiB0aW0tb2JtYWxsb2MKKzQyNjM1IDlmM2U1OGRiZWE2MzFiYzY2NTM1OTQwNzUzYTUyODg5NjhkNjI1MjEgbGVnYWN5LXRydW5rCis0MjYzNiAzZDY4ZjM1MmMyZmYwMWYyMDdkNmE5MWNjZjRjNzBjMGI3MzZjYzlmIGxlZ2FjeS10cnVuaworNDI2MzcgOGZmMjhmY2Y4NzJlMGE5Yjk1YzZjOWFhYjA1YTA3NzQzY2Y2OGExMSBsZWdhY3ktdHJ1bmsKKzQyNjM4IGI2YjFjNDRkOTExMDUyODUzYzdjZGYxZjc0M2U4M2U3YmRkZmY1NDQgbGVnYWN5LXRydW5rCis0MjYzOSBjZDg0N2U3MjY4MzcyZTRlN2ViYmRiMDQxZjAxOWQ2MGNkYTI3OWI5IGxlZ2FjeS10cnVuaworNDI2NDAgODFiZTE1Yjg0MjQ0NTM5ODI2YWVmMWU2YmJiYzM2NzAwNDgxNjdiOCBsZWdhY3ktdHJ1bmsKKzQyNjQxIGJlYTk0NzU0NDQxYjFhNzBiNzEzZmVlZWVjODFlNmM2ZWU5OWU0MjcgbGVnYWN5LXRydW5rCis0MjY0MiAyNTg5OTAyNDI4OThlNmM2MDNlNzM2NGZhNTgxNGM3MjhhODRiZjQ3IHRpbS1vYm1hbGxvYworNDI2NDMgM2MwN2I2YzVjZjc4OGI3YmQwYzhmZWE4YTk5NGE0YzZjOTE1MDgwMyBsZWdhY3ktdHJ1bmsKKzQyNjQ0IGYxNTMwMmQ4YjJkZTU5ZjFhMTQxMjQxZGVhODAzY2IyZGVkYTFkYjcgbGVnYWN5LXRydW5rCis0MjY0OSA1YzM2YzIyMmU3Y2E1MzEwZTVjYzhiOGRiMjgzYmQ2NjlkMWUyNGQ0IGxlZ2FjeS10cnVuaworNDI2NTAgOTdlZTdiNTMzNjY0ODE3ODBiNmYzMzE1NTBkNjY0YWM4NjNmNjY4MiBsZWdhY3ktdHJ1bmsKKzQyNjUzIGMzNDQ1YjFjZjFiZjFlZDA0ZGJkMWMyZGY1YTgxNTFiNDEwMmQxNzkgbGVnYWN5LXRydW5rCis0MjY1NCA0MjkyYjQyNjgzYzVmY2M3NTU0MzM4YmJmZDg0N2JiNTNlOTFhYzUyIGxlZ2FjeS10cnVuaworNDI2NTUgNzFkODczMDU0ZDI5ZWRiZDIyMDMyYzhjOTE1Y2YwZWVjYmI4YjVjMyBsZWdhY3ktdHJ1bmsKKzQyNjU2IGFlMzlmY2UwZjlhMTZlYzBhNTg4ZDcxODk5ZGQ0NmI3N2Q1MTQ2MTAgbGVnYWN5LXRydW5rCis0MjY1NyA0NWU2ZjkwMTkwMmNhNTg1N2VlZTkxYWJhMDQ4ZGY3ZGQ1NjAxODY0IGxlZ2FjeS10cnVuaworNDI2NTggNjZmYzViMjYyODY4YmVlN2QyMzFjNzU5ODQ2YzFmZWQzY2Q1ZWRlYyB0aW0tb2JtYWxsb2MKKzQyNjU5IDk0MmFlMjVjYjM5MTUwNDA5MTAyZDRkNjY2ZTM3MzE0ODk1YTQyZDEgbGVnYWN5LXRydW5rCis0MjY2MCA0MDJkZTBmZWYxMTZkOGU3YzE0YzAyYzU2ZGRlMGNmZWI1Zjc0YjVkIHRpbS1vYm1hbGxvYworNDI2NjEgMTE1OTYwNjQwZjI1ZGU1YjAxZDIyOWIzMjJiNzllNzVmOGIyMGFhNiBsZWdhY3ktdHJ1bmsKKzQyNjYyIGY3YjQ3MjZhZGE2YzUwOWMwMzlmNjc2MmZlMGFhMWFiMzE2YjNiZjIgbGVnYWN5LXRydW5rCis0MjY2MyBjNDBhMzNjYTY1YjkxNjNiOWQ4MmRjOTNlYjliMTcyZjM2YzNiYmVlIGxlZ2FjeS10cnVuaworNDI2NjQgZTU4MGM4YjBkY2VhYjQwZWJmMjlmODU4NjlhNDY1YzQ4ZTBjNmFmZiBsZWdhY3ktdHJ1bmsKKzQyNjY1IDVmMzgyMmMyZTczMTA0YmJlNGY5ZDdjYTA4MWJiMGIzMDM4NTI0M2EgbGVnYWN5LXRydW5rCis0MjY2NiA5OTA2NmJlYTE3ZjhmMDMyZTgwNzhkNWFkNzhjNmFjZWI3NGZjMGQ0IGxlZ2FjeS10cnVuaworNDI2NjcgYmJmMTZmZDAyNGRmN2JjZWJjMGY2ZmU4ODJiN2NjOGNmOTc2MGI1NiBsZWdhY3ktdHJ1bmsKKzQyNjY4IGMwNjYxM2U1M2ZhZGYzNzQ5Yjg5MWU4ZmNmZDRhY2ZjZThlMjljNDYgbGVnYWN5LXRydW5rCis0MjY2OSBmMmE4OTVkMzNhNWNhZTkxM2Y2ZWRjODNhMDUxNWEwYjk3NTgxMjU3IGxlZ2FjeS10cnVuaworNDI2NzEgZDZjYmM3MWI4MDEwOTA5OWQyZDM2NzhiYmE2ZThlOTJhNjMyYjI4YiBsZWdhY3ktdHJ1bmsKKzQyNjcyIDg3NzA2NDM4ZGMzYzQxYmEyN2M3ZGM5NGRkMTM1NjIyMTE3N2YxMGQgbGVnYWN5LXRydW5rCis0MjY3MyBmZDU0OTdiNjQyMDljMjQxMTdhNDdjODZlM2U4Nzk1OGZkZDk4YzljIGxlZ2FjeS10cnVuaworNDI2NzUgOGEyYTVmNzFiOGIzZDdlMjcwMDZhMTIwNDc0MDI0Yzk5ZjM5OWI4ZCBsZWdhY3ktdHJ1bmsKKzQyNjc2IDY1ODNjODY4ODE3YWFhNGM5YjljZTM3YzM1ZGMxM2VmYjdlMTJlZDUgbGVnYWN5LXRydW5rCis0MjY3NyA0YTRlMGM1OGQ0MzdlODdmMGMzMTU5OTk1Y2Q3ZWI1OGUwYTgwM2Q1IGxlZ2FjeS10cnVuaworNDI2NzggNDE3ODE1MDYyMzM3OGExZTkxNTI1Y2FjYzRkOWFhNzc2MjU0Y2NiMCBsZWdhY3ktdHJ1bmsKKzQyNjg1IGJiY2U4ZWMyZmY4MWQwZGNmOTgzNzE2MWYxNjhmYmUyMDQ3NWRlYWQgbGVnYWN5LXRydW5rCis0MjY4NyA4YjY4NTEzODJlMjc1MzU4ZmE4YjI4YzUyZWY3ZmVjNzkyMmJjNDQ2IHRpbS1vYm1hbGxvYworNDI2ODggZmE5MmZlMTUyNTFhMDUxMDg1N2IyMDI5ZTZmZDJiNzVjMTk1OTY2MiBsZWdhY3ktdHJ1bmsKKzQyNjg5IDQzYjlkNWYwOTAxYmU2NjI4NDQ1ZjVhYTUzMDhjNzNjZDlhMDgwY2UgdGltLW9ibWFsbG9jCis0MjY5MCA0M2M3MDQ2MGNjZDU5MGQwYjU5NDhmNDU4ZGJiNGM4MWFkZmMzMWY5IGxlZ2FjeS10cnVuaworNDI2OTEgNzk2ZDE1MGU0NWE5NGJmZjEyMDU4NzQyMDIzMzQ5N2I3YzcwYjdkZSBsZWdhY3ktdHJ1bmsKKzQyNjkyIGEzZTRiZDQ3NWFkN2Y3NDg1ODQwZTEzYTQ4MzJmYjRkZDIyOWExMjAgbGVnYWN5LXRydW5rCis0MjY5MyBjMDk4MmI4MTU1YzYyZDNmZjQ1YTgyMWZkNmFkMzE1YjU3MjNiZTBmIGxlZ2FjeS10cnVuaworNDI2OTQgNjU4ZjhmZjJhNDQyZDAxODE1NmU1NTgxYWNiMTk3NzhjNmYwZTQ2MyBsZWdhY3ktdHJ1bmsKKzQyNjk1IDMxMDUxYTcwYjI5NzJkOGYyY2U0MGU0ODljZWRlYTk0OTQ2NDAwZGIgdGltLW9ibWFsbG9jCis0MjY5NiBkYmY5Y2M2YzM2ZWJkNzFjYmJkOTIzMzdmYzIzYmViNjliODgzMTcwIGxlZ2FjeS10cnVuaworNDI2OTggYTIxMzhkZmI1OTY1MjY0OTQ1NTI2ZTAxMmM3ZjVlMjgxZWMyOTdmNyBsZWdhY3ktdHJ1bmsKKzQyNjk5IDNmZmMxZTFkMmY1NzZmNjRmNmQ3MTgxYTYzMzY1MzI2ZTBhY2VmZjAgbGVnYWN5LXRydW5rCis0MjcwMiA5MjI1MzlkYmRjNGU1ZDljODZjNTBmNTM4YmYwMzNmYjdkNzYzMWQxIHRpbS1vYm1hbGxvYworNDI3MDMgZTgyMWI5MzZmM2ZhNzU2YTE3NjhjZTYzZmE0NWFjYmUwYjg5Yzg2MCB0aW0tb2JtYWxsb2MKKzQyNzA0IDhkZjU1MDE0YzhmYjBjZDI3MTRhMzNkYTNiNDFiMDgzM2FlZWJiYTkgdGltLW9ibWFsbG9jCis0MjcwNSBlZjUyNDZjZThmZTY1NjAwZjBkZmE1YWE5YWY0YWVhZmY0NjE4YmUyIGxlZ2FjeS10cnVuaworNDI3MDYgZGJhNzcwOTJkNDZlYmFmMmJiOGYyNDJiYzJhZDAzZDg3N2I0ZjU3OSBsZWdhY3ktdHJ1bmsKKzQyNzA3IDBmNzI4NGM0OTFhMzE3YmQ3ZmY2NDllNzZjZWFiZjgxMTUwYTc2MmIgdGltLW9ibWFsbG9jCis0MjcwOCBjMjk0MmNkZDg4YjMyNTA3ZjU1YTM5NDQ0YmI4ZDgwMTk4ZjI2MDY2IGxlZ2FjeS10cnVuaworNDI3MDkgMGI1ZTlhY2UyZTg3YjM4NjgyNTBmM2RkMzUxNDM4NWM5YTJlM2QyMiBsZWdhY3ktdHJ1bmsKKzQyNzEwIDkyYmE3MjQ4NGZmMzg0NTI0OGVlOTk3YjE2OWZkM2E2ZTA2NTA1N2UgbGVnYWN5LXRydW5rCis0MjcxMSA4ZTA0ZGUyNDgwZTQ5ZWE4NDY3NmMxOGFiM2ZkNjVmN2FjNjRkOWEyIGxlZ2FjeS10cnVuaworNDI3MTIgN2I2NmIyZGNjNWU5NmE2NGExOGRmMjFkMTNiYTlmMmFmMTFiNDhkNSBsZWdhY3ktdHJ1bmsKKzQyNzEzIDFlODNmMTgyYjVmOWFmODExZDQ3NDhlZDkxYWVhZmQzNmI0NTEzMTQgbGVnYWN5LXRydW5rCis0MjcxNSAyZjE5Yjk4MWFjMjQ3YzMyM2QwNDA0MTllYjYxN2NmMzJlYTdhNWUwIGxlZ2FjeS10cnVuaworNDI3MTYgMzJlMmI4YmRhNTM1YjhhNjg3MTVkMTcyNTQzN2YzOWEzNjJmZWJlMCBsZWdhY3ktdHJ1bmsKKzQyNzE3IGQwY2E2MzAyZGQzYzk4Y2NmMDcxZDgzYzYxYmJiN2M3ZDgzNGRjZTMgbGVnYWN5LXRydW5rCis0MjcxOSBjNDEzOGFkMWUwOWEwZTM5Yzc4MjMwNGVkMmRjOWU4MGJkNmUxZmEyIGxlZ2FjeS10cnVuaworNDI3MjAgM2UxOTI3MWVmYzQ2ZTY5MjYzOGNiZDM2MWQ3ZTEwZWE1MmExNDY1MSBsZWdhY3ktdHJ1bmsKKzQyNzIxIDgzYjg2MGFjZmU5NWU2ZjAxN2NjZDYyMDI5M2Y3NTQzODAzZTQ2OWEgbGVnYWN5LXRydW5rCis0MjcyMiBhMzY2ZGZjNzAzNWZkMTkyMGMxYWEwM2IyN2YzNTQ3YWYxOWU0OGRhIGxlZ2FjeS10cnVuaworNDI3MjMgM2RkOTJkOTdhNjdmZjgyMWRmMmUzNzgxOWIzY2Q4NmU5MjhiYWE3NCBsZWdhY3ktdHJ1bmsKKzQyNzI0IDIyYzUxNjMyYjQ1OWQ3NzAyZTRhYzg1NjE1YWZhMmZiMDY2MmI3MjAgbGVnYWN5LXRydW5rCis0MjcyNSA1ZTQ2M2FlNzA3MDc2ZGQyODcwOGQ3NjdkM2VmMmIyYzM0YjQ0ODZkIGxlZ2FjeS10cnVuaworNDI3MjcgOTVhOTJiMmI1M2VlNDlhYzYzNzg2ZWVhNzMxYmQyYzhhNTkyOTgzYSBsZWdhY3ktdHJ1bmsKKzQyNzI4IDA2NzQ3OTZiNjk2Y2M1YTIwNjBjYmEyMzM5NmJmM2QzOTcyM2E2MTEgbGVnYWN5LXRydW5rCis0MjcyOSAxZGFhMTk5Yjc4NGJlNGE2M2Y1MGM4MDVmNmFiNDNhOWM2Nzk2ZWRmIGxlZ2FjeS10cnVuaworNDI3MzAgZTM2NGJjNzZiZGM4ZDQ2M2Y2NGZiNzIzYjZjMDM1MDAxNGRjNzg3NSBsZWdhY3ktdHJ1bmsKKzQyNzMxIGQ2YzMwY2UzODY4YjEzZDdjOWRkZDMzN2U5NjU5ZmZhZTdiMmQwMzEgbGVnYWN5LXRydW5rCis0MjczMiBhYjFiNTNkNTQ5MDFhOGRhNzE2N2ZlYTI0Y2Y5MDk3OGNjNmU0NjViIGxlZ2FjeS10cnVuaworNDI3MzQgNjIzNzYzNDU3YTRlOGY3NTcwMTYzNDhiMWI0NjU1NTM4ZTk2NTI0MiBsZWdhY3ktdHJ1bmsKKzQyNzM1IDRjYzk1ZmNlNjVkYTc2Mzk2NzlmZTVhYmE5YTcyMzkyMjQyYWVlNjUgdGltLW9ibWFsbG9jCis0MjczNyBmOGZmYTdjYmY5NjA1ZGU1OGNjNGNmNzg3ZTc3YTVkZjUyYTQ5OGU5IGxlZ2FjeS10cnVuaworNDI3MzggYWY5ZjliNTkzYTUzNmQ3MjhkMmM0NzhkZTY2ZjA1ODZjZDUwMTQ0OCBsZWdhY3ktdHJ1bmsKKzQyNzM5IDY0ZmYzYjIyNWQ0ODUxNjE1NGQ0NTFjZmVlOGM0ZjA0ZDczZDIwZWEgbGVnYWN5LXRydW5rCis0Mjc0MCAzNTYxMmExMzFhYzYyNDgxNDk5ODI1ZGRhYzIxMDFiOWQyYWY4M2E0IGxlZ2FjeS10cnVuaworNDI3NDEgYTU0OTQ4MTgwYTNkZTIyOWU1ZTFjZjgzNWFjMDNjNWJjYmQ2YmUwZiByZWxlYXNlMjQtbWFpbnQKKzQyNzQyIDFhZWEzYWVjYTUzNWE2MzBjYWQ2MzRkODQ1YjI0NmJlY2M1YmRmNWUgbGVnYWN5LXRydW5rCis0Mjc0MyAxMjExYTY4YjI4ZGQzNzE3NzlkYzQyYTU4MzI2YzQ3YWYyZTRkM2QwIGxlZ2FjeS10cnVuaworNDI3NDQgY2Q3ZDI5MTkxNzhjNzU3NjM3NzdlMDk1M2JlMTE5ZGU1M2M3NGVhNyBsZWdhY3ktdHJ1bmsKKzQyNzQ1IGE3YjM2MzJkMGUwNTE1MjViZjU4NzFmZjZmNjg0MWJkMjIxODZmMGQgbGVnYWN5LXRydW5rCis0Mjc0NiBhMDBhOWVlZjYwNjNhY2U5OTdmZDNlMzc4Y2Y1YzU5ZjllYTA2ZGU1IHRpbS1vYm1hbGxvYworNDI3NDcgMzc2NzkyYmZiNTdlZjliODM0MGY0YmE0N2Y5ZjMyNWUyZjVhMmQxMiBsZWdhY3ktdHJ1bmsKKzQyNzQ4IDI1ZjhlNmRkZTRhM2IwOTZiMDVhYjMwNzM2YTFkYzYzNDYxNTZhYmIgbGVnYWN5LXRydW5rCis0Mjc0OSAyYjY1OTI2OGE3M2FhM2U2ODQ1MTY4OWVmNDIwZDdlOTZhZWQyZTFkIGxlZ2FjeS10cnVuaworNDI3NTAgOTY1YmI0YTU0MDk2NjMyYmYxNDQxZGFkYzgxMzY5NjAwODc1NGI2NyBsZWdhY3ktdHJ1bmsKKzQyNzUxIGQ4NTNiYzA2ODQ3ZTY2ZGE0YTVkYTdkMmY2MDRmZmE1ZDYxMWVkOWMgbGVnYWN5LXRydW5rCis0Mjc1MiA2ZTI4NWM2OWVmYzA1YjdmOGJkYmIwOTkwYWVhN2IwYzkzYmY4ZDU2IGxlZ2FjeS10cnVuaworNDI3NTMgNTczMjJjYjJjYTExMTdiN2YwZDJiNGMwZGQ1NDYwMWUwYmJkMmZhYSBsZWdhY3ktdHJ1bmsKKzQyNzU0IDBjYzU4ZGJkODdmZWJlMTgyMGFiMzY0OWQ1MzYyMWJkYmYzOTY1NTQgbGVnYWN5LXRydW5rCis0Mjc1NSBjM2M1ZDA2ZmFhMDFlY2QxZjY3YmVhNTE1YTNmMmI2OGFiNDVkNjVmIHRpbS1vYm1hbGxvYworNDI3NTYgZjY2NmJjOWY2MTdkODcwMmM0NTgyMjhmYzY0MmFmZjgyMTNiMWU2MiBsZWdhY3ktdHJ1bmsKKzQyNzU3IDA5ZDE3NDMwZjRjMjVhYzQ5NDJhZGY2YjE2MzcxYWE3MjVmMGEwYjEgdGltLW9ibWFsbG9jCis0Mjc1OCAwZTJjZDk0YzUzYTk4YTA4NDNmZWY3YmZiMjFiZDExOTVmZDQ3MjZjIGxlZ2FjeS10cnVuaworNDI3NTkgNDhhMjhiMzVkZDY0NTU2NWVhMmMyNGEzNGE0Y2QzNTBlYzIzYTRiNCBsZWdhY3ktdHJ1bmsKKzQyNzYwIDAyZDliNDc2OWE4OGU4NmVkZWMyYTgzMTA3YmQ3Zjc4YTM5YTI1MTQgdGltLW9ibWFsbG9jCis0Mjc2MSA2MDRhMTI2ZjgzYzIxNGY0MDk1ZDE5NThkNjBmYTJhMTY2MjlkNzkyIGxlZ2FjeS10cnVuaworNDI3NjMgNjg4Nzk1ODczZmYxY2VhMTQwOGY0ZjJiZjhhZDI0MzI5ODY2NWE0YSBsZWdhY3ktdHJ1bmsKKzQyNzY1IDFlOGNiNDdiZWFhYTQ4ZGY4NTZmN2RmYmM2NzNmMzQ4NDZiNWM4MzIgbGVnYWN5LXRydW5rCis0Mjc2NiBkZjg0M2IwN2Y1ZmUwYThjMzI0ZTQxMDUyNmJkNjIzY2M4ZTE4NDAzIGxlZ2FjeS10cnVuaworNDI3NjkgODlkNjlkOTIxMmEyZGNiOTBmYzg0ZjJhMDBlNWNkN2EwYzZmODI4OSBsZWdhY3ktdHJ1bmsKKzQyNzcwIDA0NzQ3MWNiOWU0ZDk3YjU3Mzg3M2M3MGE0ODBhYzBkODc5ZTgzYmIgbGVnYWN5LXRydW5rCis0Mjc3MSA3Mjg1YzM3ZDc2MzNlNGRlM2RiNTdiNGQ5ZjhkNTIxMzRjMmIzNTQzIGxlZ2FjeS10cnVuaworNDI3NzIgOGRkY2FhYTA4ZmRkZWQzZjFmODFlMmU1Y2I1NmQ0Y2VjZmQ3N2NlMyBsZWdhY3ktdHJ1bmsKKzQyNzczIDQyNDg3ZDhjZjMzODAwOGY4MTQ3MzFlYzNkZDNiY2FiMzcyYjExYjkgbGVnYWN5LXRydW5rCis0Mjc3NCAwNGQxOGJjZjc1MTlmODJkYWFlNTlkOGVkMmJmOTJkODM2N2U4NjUwIGxlZ2FjeS10cnVuaworNDI3NzUgNTE1ZWY3ZGQxNmJkOTdkNjcyNWU2N2MyNDY0ZmVjNTA0YWM1MzUyMyBsZWdhY3ktdHJ1bmsKKzQyNzc2IDg4ZGZkMzI4MWY3MWQ3Y2FkNTE2ODA3OTZjZGJjODA4NGU1NjNmZmYgdGltLW9ibWFsbG9jCis0Mjc3NyBiZDA2NDFkNjI0NjI1MzdlZDQ5ZWYzZTg3ODgzODg3NTQxMWRmMDk2IGxlZ2FjeS10cnVuaworNDI3NzggOGVhZjk1MzFhMmRlZDI5NmQwMWI2NDU4N2RiNTllY2E3OTA3Y2FmOSBsZWdhY3ktdHJ1bmsKKzQyNzc5IDY1ODJhNDQ5MGQxYWFiMTVjNWFjNGU3NjczMGJkMGIzNzAwZDNlZWEgdGltLW9ibWFsbG9jCis0Mjc4MCBjNTUyZjIyNzU3ODJjZjYyYjhhYjRjYzgxODdmMTdiYjU0YzYzODY0IGxlZ2FjeS10cnVuaworNDI3ODIgZTAxZjE3YzI3ZWYzMGM5ZjRjODM3MzM2MjYzMTU3MDViMTQ0YzAzOCB0aW0tb2JtYWxsb2MKKzQyNzg0IGEwMGJkM2NkYjcyODdhYWZiMzZjNGJiNDg1ZWMwYzhhZmZlNmQyNDAgbGVnYWN5LXRydW5rCis0Mjc4NSBkNWU1YTVkOWZlN2MwMjU0N2YxOThkOWYzOTNkMjM4MWZmZThjYzZlIHRpbS1vYm1hbGxvYworNDI3ODcgNzA5OWY2ZTY4MTgzZWNhNjQ5ZjgxMDBjMzlhZjFjMmYwM2MzZDUzMiBsZWdhY3ktdHJ1bmsKKzQyNzk0IGRlNDgxNmQzNDRlZWE0ODU4ZTZmNGM3MjJkM2EzZWI0YWEwMTRjODAgbGVnYWN5LXRydW5rCis0Mjc5NyBiMWEzYzIyMzhmOTdlMWE2NTUyZjk1ZDA0OGU1MzQ2NzJmZjk5YmFkIGxlZ2FjeS10cnVuaworNDI3OTggMmMyZGZmZTA3MGRmMjgzNjEyODQwOGNmYjIyYjU3NGM4NWM5NjkwOSBsZWdhY3ktdHJ1bmsKKzQyNzk5IGVmODc3OWQ0NTVlYzVjYzk2NGU5YWI3YTVkYzVjNzY2N2NiOWMzZTkgbGVnYWN5LXRydW5rCis0MjgwMCBhYmE3M2I0NjgwM2M3NzkwYjFiYzk1YjI0OTYxNDkyMDliNTIyZjE4IGxlZ2FjeS10cnVuaworNDI4MDEgMWQwNTVlYmQ4MzIyOWZhNzcwYmJkNmQ2MWExM2Q5ODUwYTYxNGI0MiBsZWdhY3ktdHJ1bmsKKzQyODAyIDU0NzU0ZjBkMjVjNzJmN2E1ZjFhOWVmOTVhNWI0NmNkZDEzMmQ3ZmYgbGVnYWN5LXRydW5rCis0MjgwNSA3YTMwZGMyYWYzMjkzODU4MTA1ZDQ1MTY5Njg1NzYwOTIzMDRiMmVhIGxlZ2FjeS10cnVuaworNDI4MDYgNmI3Y2EzYjIwMWYzZWZkZmFjZDg3ZWM3ZWVlNzRjYzJhMzczZWI0MCBsZWdhY3ktdHJ1bmsKKzQyODA3IDRmMmFmNTZkOGViZTRkMDI3ZTEzMzNkYTk5ZTAzYTFlNjUzMmNmMGQgbGVnYWN5LXRydW5rCis0MjgwOCBiYzA3OTdiMDZhOTllYmM2ZWE2NzViNTE3MDgzMmJkZWI3YzU4NmUwIGxlZ2FjeS10cnVuaworNDI4MTAgZDM4YWI1Y2FkOTQ1YjM1NGMzMWYxMDExNDAzNGI2NWYwYTA4MDIwOCBsZWdhY3ktdHJ1bmsKKzQyODExIGJiNWUzMDQ2N2ZlNGQxNzYyZTUwODE4Mzk1NWVkOGE3MzQxNTJhODIgbGVnYWN5LXRydW5rCis0MjgxMiBjMWM0NjIxMGI0YjdlNDBlY2M1ZjUzNzM3NjUxNDI2OWMyODFkYmY4IGxlZ2FjeS10cnVuaworNDI4MTMgMTJiY2QxNmMzMWFkZTZmZDQ1M2NhOTQ0MDZjYjNmYmE2ZjRjMTBiZCBsZWdhY3ktdHJ1bmsKKzQyODE0IGQwMmI0Y2ZlZmEwYTBiZTYwY2RlZmIwNzIwMzY0YThhMDg1M2FiODAgbGVnYWN5LXRydW5rCis0MjgxNSA3YTZiMTc0ZGRlZjJmMThlMzBkN2VmYzc5NDU0NWMzMWQ4ZmE5YjA4IGxlZ2FjeS10cnVuaworNDI4MTYgMDdmMzMwYWQxYjQ3NWUyYWI3NTZiYzczMjAwZjJhYjI0MGRmOTQ5NSBsZWdhY3ktdHJ1bmsKKzQyODE4IDliOWQ4MzkxYjY3MWNjNWYwZTU2NTBiMjkzYWU0YjgwMDI5NDg4ZDggbGVnYWN5LXRydW5rCis0MjgyMCBkYjYxMzFjNWFlNWFiZjIwOGZkZTFiMzg0ZjllYTcwYzVjMDFlMGFlIGxlZ2FjeS10cnVuaworNDI4MjEgYjI0MTZmYWIxM2ZlNmQzZmQzZDU3ZTNhMzRhMWJhZTJhMjAzMzljNSByZWxlYXNlMjQtbWFpbnQKKzQyODI1IDFmNTg0MTY0ZTAxMzE3NjFhNWFjMmMxYWVmMTUxZDdmMzIxZjVkYzggbGVnYWN5LXRydW5rCis0MjgyNiA2NTNkODU4NWYwODBhMDE3OTYxNzliZjU0Zjg2MDgyMTI1Y2E4NzFlIGxlZ2FjeS10cnVuaworNDI4MzAgNzQ3MDFlNGZjZGFkMGY5NDg1OTIwNWExMTExNDNiNzJlZjFmZjY1OSBsZWdhY3ktdHJ1bmsKKzQyODMxIGJhYzZiZDM0M2ExMjQ3YjgwNzViMjFjMjdkZjc1NWM2ZjZjMzFmZjEgbGVnYWN5LXRydW5rCis0MjgzMyAzYzUxOWE2MTJiZGI3ZWNhMjQzMjEzNzE5Njg0MmQ3N2U3MmYzZTlmIGxlZ2FjeS10cnVuaworNDI4MzQgOWU4MTc4OGIwZDRiNTkxMmQzMmY5YTA1OTY3NzM3MjQ0ZmY1MjA5NiBsZWdhY3ktdHJ1bmsKKzQyODM1IDBiNzgwOTY2MDQ1NmY3OTIyZDA2MzA2NzE1YjY3NWQ1OTE1ZGU5NjkgbGVnYWN5LXRydW5rCis0MjgzNiA5MTA5YjFhMGQyNjVlMWFlZmM2ZmIyODNkNjdlZjgyOGRjYTk4ZTAzIGxlZ2FjeS10cnVuaworNDI4MzcgMDFiYzhlZTNkMmZmODQ2YzRmN2EzM2E2MTllMGIyODZiNWIyNWQxYSBsZWdhY3ktdHJ1bmsKKzQyODM4IDNhM2FlZDQ5YjI0NTZlOTE3ZDhiNjYyMDYzOGQ2MjUxNzlmOGJlM2UgbGVnYWN5LXRydW5rCis0MjgzOSBkZWRjMmM5NGQxMTI2MjQ0MTg1NjJjZWQwM2MwNGM5YmM1MWI2ZjdkIGxlZ2FjeS10cnVuaworNDI4NDAgN2MxYWNhOGUzZDdkN2E1YWI5MjU1YmYzMWU0OTU0YjVlNWQ1MmQ3YSBsZWdhY3ktdHJ1bmsKKzQyODQyIGIxOTI5ZThkMTVmOTk5OTQ0YTUyYTdjYWY2Nzk0MWU3YjQ1ZWMxN2MgbGVnYWN5LXRydW5rCis0Mjg0MyBkM2QwZGQ5MmM3MzFhYjdlMGFjNDdiZjJhZDQxYTdlNTI0ZWRjOTYyIGxlZ2FjeS10cnVuaworNDI4NDQgYTk2OWJkMTU3ODhmNTE0MDUxNzdmOTQzMmJhZjYxMzViY2Q3MmMzNSBsZWdhY3ktdHJ1bmsKKzQyODQ1IDE4NDhkNzViYmRiMzhiZDVjNDRiZDI3NjAwMGU5ZWMxZTQ5MTEyZWIgbGVnYWN5LXRydW5rCis0Mjg0NiA0Mjg0YjMzMjRjZTJlNGI2NDFkMGEyNzhjNDczNDZkOWIwY2Y5Yzk5IGxlZ2FjeS10cnVuaworNDI4NDcgMzkxZjc0YzljMjYzNjgwOTcwMzZmYzRkZDQwOTA0NWMzMzJjYWFhNyBsZWdhY3ktdHJ1bmsKKzQyODQ4IGFkYmFhOWViYTk3NTQzZDdhMTFkM2U5NTY1N2UzYzFkZWIwODkzNGEgbGVnYWN5LXRydW5rCis0Mjg0OSA0Y2NlZjQ3ODgxZjc5ZDkzOGY5MTI1OTg4MTg5MjhhMDQ5M2VkMTBmIGxlZ2FjeS10cnVuaworNDI4NTAgMmQxZGYyNGUzM2RmNzEwZTRkMzY3Yzg4MmYxYzY3YjA3YTZlMWQwOSBsZWdhY3ktdHJ1bmsKKzQyODUxIDNiNjc1YWM5YTkyNTRlMTIwNWQwMjUwNDY3NzM3MjA1OThiYzQ4OTggbGVnYWN5LXRydW5rCis0Mjg1MiA4Y2QxNTI3NDYzOTg3OTdkODZkMGU3NmFhMDY2MDcyODM3MjlkYWE2IGxlZ2FjeS10cnVuaworNDI4NTkgNmFhYWRiYWIzNTMwMTU1ZWMxOWQ4MWNkYTNiZGFiYjMwNjFmYzZmMSByZWxlYXNlMjQtbWFpbnQKKzQyODY4IGY4MGNhNzEzYmI0YmVhMzUzOTM5MGMyMTEzNzU2N2FlYmVkMDE5YzUgbGVnYWN5LXRydW5rCis0Mjg3MCA5YjEzZGE2NDdhNWViYjU1MmJiODdmMDhhNTllMDNjNmNkOTM2MThhIGxlZ2FjeS10cnVuaworNDI4NzEgOGUwZjBmYjE0ZDM1OGI3YmZjMjVhY2JhZmZmZjNjM2U0YTU2NTExZiBsZWdhY3ktdHJ1bmsKKzQyODcyIDIwNGMzMDdiMDFjZTU3ZWMzN2ZlYjFiZmYzZGRjNjMyZWU2YWZkM2YgbGVnYWN5LXRydW5rCis0Mjg3MyBmZTA3MzZjY2JhNzU1MTgwNzIzNDYzNzNiOWYzMmM1ODcxOTg5ZTRlIHJlbGVhc2UyNC1tYWludAorNDI4NzQgY2Q3MmViNTVkNWY4ZDhjY2E3MWI5MGI0NTI0YzRhNjUwNTk2ODNlYiBsZWdhY3ktdHJ1bmsKKzQyODc1IDdmYWM1ZDc5ZDA0M2JmYWU5NzExMWYwNTc0YmM5YTcwYjBkYjRjMmIgbGVnYWN5LXRydW5rCis0Mjg3NiA0ZjYyOGVjYzMwY2IyZWI0ZTIzZTk0NWVjMDI1YzI3Yzk3MDAxZDZiIGxlZ2FjeS10cnVuaworNDI4NzcgOGViZjc5OTdjNmNkNTZlODNjODNkNmYzMGU0ODVhNzBlNTNjYzU0NiBsZWdhY3ktdHJ1bmsKKzQyODc4IDg5NTA3NGU1ZWQzYWI4MGE0NjNiMTBlNmJhOThjZDA2NThmYWYxYTIgbGVnYWN5LXRydW5rCis0Mjg3OSAxZTA0M2ExMjViZTY4M2Y1YjQxMDQ3ODgzNTQ3MWM3YmU4N2U2M2MzIGxlZ2FjeS10cnVuaworNDI4ODAgMmQyNGYzYTM3YTFiMzVmNTM0M2UwYTAxMTE2ODVkMTNiZWNhNjM2ZiBsZWdhY3ktdHJ1bmsKKzQyODgxIDFlMTkxMzkyZWM1YzYxODJlYzY2Y2NlMTYzOTM2MjhjODUwMGE1NzMgbGVnYWN5LXRydW5rCis0Mjg4MiAxNWQzMzI5NTYxNWY2ZjBhNDRhOWZmODc4MDczMTNmMGE3OTE5MGMwIHJlbGVhc2UyNC1tYWludAorNDI4ODMgOWViMjRmOTJhNzg0YmYwY2VhNjZjYzJiY2M2NmMxZWRlZjJhNGYwZSBsZWdhY3ktdHJ1bmsKKzQyODg0IGE3MzVkZjU1MmYwMmQ5ZmExOTk2MzJiMjQ0MDQ4NmUwOWViNTZiOTQgbGVnYWN5LXRydW5rCis0Mjg4NSBlNjI3NjdlNjRkZTgxOTZjNTIxMmY4NGJmYzE5ZjlmMTI4YTJjMjU0IGxlZ2FjeS10cnVuaworNDI4ODYgYzkxMjE1NjQyZGNkNDVkZTAwZTI3Y2Q3M2YxZTUzYjk0ODNmODJhYyByZWxlYXNlMjQtbWFpbnQKKzQyODg3IDQ1NTY3MmE4Zjg3NzYxYzcwZWI2NGIwM2Y4OGQwOGY4YzA4ZDgxMTQgbGVnYWN5LXRydW5rCis0Mjg4OCAyNTdhZDg5ZDkyZGY4NDUyMjM2YjhmZWQ2N2ViODBhZTQyNTZiMGZhIGxlZ2FjeS10cnVuaworNDI4ODkgYjE2ZTUwNDQxM2MzYjgzNDZjNThhMTVmYjhmMTVhMzE4Yzg0MGE0ZiByZWxlYXNlMjQtbWFpbnQKKzQyODkwIDc4YzlhY2JiNDYzYzMzYWYzYWQ1NmI5Njg0MTAwNjQxNTE1OWIxN2EgbGVnYWN5LXRydW5rCis0Mjg5MSA5YmI1OTBhMGI3ZmIwNGE2NTYwYzczZTM3ZWUyYzhiMzFiNmNhZGQ5IGxlZ2FjeS10cnVuaworNDI4OTIgNjhhMDk0M2RiYmU1MzNkYjI4Y2IyNmI3Y2ZkMTcxNWFkZmI3OGM0MSByZWxlYXNlMjQtbWFpbnQKKzQyODkzIGNhNGJiY2JiZDBkNTk1MGYxMDExYmM5MWQ2NjBkZDYxNmQwMjE4ZWIgbGVnYWN5LXRydW5rCis0Mjg5NCBlOWE3YTI3ODRlMTdlZmJiYTIzMDhlMWFjYWQ2NjdmY2JiZWZkMjgzIGxlZ2FjeS10cnVuaworNDI4OTUgYWNjZmIxNTZmOWNjNjQxZWFmNGMyM2EzOWVlNzRhMTJjZDkyNWUyMyByZWxlYXNlMjQtbWFpbnQKKzQyODk2IDhkNDFkZGMzMWU2MWU2M2IyMmUxMjdmMmE1YmVkZGQ4ODE2NDZmYjEgbGVnYWN5LXRydW5rCis0Mjg5NyBiMjJjNDhmZTYyYTRiMjg2NDM4ZGE3NDRhMmEzNTUyODIyZmViZTI2IHJlbGVhc2UyNC1tYWludAorNDI4OTggNDcwNmI3YTEyNTZjMjljNzQ5N2U5NGI4NmI3Yjc0OTUzNzE5M2MyZSBsZWdhY3ktdHJ1bmsKKzQyODk5IDZhOWM3MTY1YjE3YmRiN2I4NTEzNmUxZWUxMzE1OGRhYzI4MDY0N2YgbGVnYWN5LXRydW5rCis0MjkwMCBiMTdkYTVlMGE2OTdhMGZmZDE5MWQ1ZjgwZTgxNmU2NDkxODZhNDkzIGxlZ2FjeS10cnVuaworNDI5MDIgY2RlNzU3MzM1NDkyOWZiYjk2NWU1MGJmMzYyMTc0ZTExMDA0NjhiMyBsZWdhY3ktdHJ1bmsKKzQyOTAzIGRiNTZmNTcwYjBjYTEyMDVmM2U0NGJlZjBjZGMxY2FjMzMwNmU4YTIgbGVnYWN5LXRydW5rCis0MjkwNCBkMzQyYjBkYzQ5MzQxNGZiMjM0YzU5OTIyMzgyOTEyNGU5YmYzNzMxIGxlZ2FjeS10cnVuaworNDI5MDUgMTNiOThkMGE3YmFhOGI2ZWZiZTJkM2YxYmRlMzAxNDFhZmE4NDI5NCBsZWdhY3ktdHJ1bmsKKzQyOTA2IDdjZjVkOWJhNWY5N2VhYTNhNDg2N2EwM2I5Y2JmMjk0MGI3ZTlkZmEgbGVnYWN5LXRydW5rCis0MjkwNyBiNDhiYTdjZjQ1NzZlYjVjYTI4OTkyZTgyODgwODA0MTcyMzE0N2VhIGxlZ2FjeS10cnVuaworNDI5MDggZjZiN2UwYzM4NGRhOWZkZGMzMGY1MDIwOTk4OGNkODc0NjYxNWI3NSBsZWdhY3ktdHJ1bmsKKzQyOTEwIGE5Njk3ZGU1ZTE4YmZmNDIwMTNiZTA0ODg4YmE4OWYzMzA0NWM3M2UgbGVnYWN5LXRydW5rCis0MjkxMSA2MzJhNGRhYThkNGFmZTE1MzczZDMzYzMyY2Q5MzlmZTk0MmRmMTk5IHJlbGVhc2UyNC1tYWludAorNDI5MTIgNGIzNDdjNjU0NjM1ZjZhNWU1MmZjMmViZDEzMDc5ZjdkM2Y0MzM2ZCBsZWdhY3ktdHJ1bmsKKzQyOTEzIDU1MmRkNWZkYjlkODRmYzc4MTE1ZjRiYmVkMmM1MzQwZDBmN2FiMjIgcmVsZWFzZTI0LW1haW50Cis0MjkxNCBmZDczNTU5NmY2OWMxY2JjMzgwNmNlMDgzOTk3YjEzOTU0ZjdlYjgzIGxlZ2FjeS10cnVuaworNDI5MTYgNDM1ZjdmM2M4YjZkYTQ3NWVhZTVkNDY5ZTJjZDk2MjMyMzMyMWU4YSBsZWdhY3ktdHJ1bmsKKzQyOTE4IDZmMmVkYTQ5NWQ5ZGU2YjY4ZjE4NTJlMGViNDQ2MDM0YjM3ODE1MzAgbGVnYWN5LXRydW5rCis0MjkxOSAyNzkwNWViYWRkYWI1ZGRhYzVmZTAyOTU1MWE0ZTY3Yzc1NDViZGZlIGxlZ2FjeS10cnVuaworNDI5MjAgMDAyM2MwY2Y4ZmViYzBiOWFmM2MxMjUxNjUwMTQyMDE3ZWI5ZTk3OSBsZWdhY3ktdHJ1bmsKKzQyOTIxIDkyMjdhZTNkYjdlZDFlMmE0YWY0M2IyYzdjMjg3MTcyMWJmMzE2MWYgbGVnYWN5LXRydW5rCis0MjkyMyAxMmIwODEyM2VjYmNjZDgyZTE4NjQ4Yzk4MGU1MGJiMDVkZDhjMjIxIGxlZ2FjeS10cnVuaworNDI5MjQgNGRlZGMwNWFkNmI0NzY0YWE1MmJkNTA0NDk4N2VlNDRkZWQxYjdlMiByZWxlYXNlMjQtbWFpbnQKKzQyOTI1IDIxMDMzYmI3ZWNiZTE5YTExNGU3NWUzNmE3NTFiMmZjZmVjMzA0OTEgbGVnYWN5LXRydW5rCis0MjkyNiA1NmE0Y2YyYjAyZmRkY2ZkZDc2NmYzNWM3NjJhZDNlNjAxZjA5NmYzIGxlZ2FjeS10cnVuaworNDI5MjcgY2EyOWRkYTU2M2I3YTQ2YTRmY2UzMjdjNThlYjMxNDJhMWMyYTFmZSBsZWdhY3ktdHJ1bmsKKzQyOTI4IDkwMmVmMWRjMjk3OWI2Y2JmODI4MTdlMzVhMzgwZDRhNzE4ZDc0MGEgbGVnYWN5LXRydW5rCis0MjkyOSA2OWViNmQxYjk5ZjU2ZDZhNjQ0OTUyY2QwODI3NmFhYjVjNWRmNDc1IGxlZ2FjeS10cnVuaworNDI5MzAgM2UyYjU3NDcwMzhmZmZkNDY1N2YzNGM5OTcwYjNiZDFkNDc3Yzc0MyBsZWdhY3ktdHJ1bmsKKzQyOTMxIDBiZjUzNjM5MDE0YTk0YmIzZTA4M2ZkNDE5OWI5MDMzNDQwMjY4YzAgbGVnYWN5LXRydW5rCis0MjkzMiA5MWE5ZTJlMzFlOTMwZDQ2MTZlYmYwN2IyZTkzM2FhNWI1N2MyNzdiIGxlZ2FjeS10cnVuaworNDI5MzQgYjRlODlkMjliZWE4YzQ1Y2YyYmFhYWNjOWQxZjEwYjhkYzJlMTM3NCBsZWdhY3ktdHJ1bmsKKzQyOTM2IGIyMTg0ZDkxMGEwMGY4MTY5NjM2NDI4ZGU2OTI0MjEwMDIwYzgxOTAgbGVnYWN5LXRydW5rCis0MjkzNyAwZTM2ZTdjNjZiOGU4YTVhM2ZlMjlmYjEwOWEwM2RjNzk0ZmE4ZGRjIGxlZ2FjeS10cnVuaworNDI5MzggZjFlYWFlN2Y5NjJkM2Y3YTFhYWQzMTI5NGFjNTUyYTAxMjUzMTE1NyBsZWdhY3ktdHJ1bmsKKzQyOTM5IDE4ZjkxMWRkZTNlMjQwMGRkZWIwYmRkMDJlY2NlZWFmY2M0YmQ4NjUgbGVnYWN5LXRydW5rCis0Mjk0MCA1MDJhNjg4ODc3ODM5OTliYWY1ODQ4NDEwMzUwYThjMjBkM2U4M2NkIGxlZ2FjeS10cnVuaworNDI5NDEgZDQwYjQ4ZGY4M2U3OTRkOWEyYzA0MDBhOTU4NTAxZmYwYjMwY2IwYSBsZWdhY3ktdHJ1bmsKKzQyOTQ0IDZlOWIzNjg3ODlkZjBjZTU2NjNlMzFhNTIzOTNmZDJkZmVjMjY5MTggbGVnYWN5LXRydW5rCis0Mjk0NSAzNjUyYjUxMjhiNzA3ZGU4MzMxMTQwYjZlZDcyM2EzMTZkOGJiYzhiIGxlZ2FjeS10cnVuaworNDI5NDYgNzlkNWI3Zjc3YWM0NTk0ZjMzN2U2NDRjMGZjOGZhOTMxMGM1Zjc4OCBsZWdhY3ktdHJ1bmsKKzQyOTQ3IDk3ZDM4Nzk3YjhiYzA5N2FiM2YwYTNiNzMxYmUxZTA5YWQ5MjVjODAgbGVnYWN5LXRydW5rCis0Mjk0OCBkM2QyZjlmZmRjMDY1NDBjNmI5ZWFhODM4NmE3MWE5MTlhNWM4NDA4IGxlZ2FjeS10cnVuaworNDI5NDkgODA1ODAwMTgxZTBlMTlmZTZjYTJjYzAxY2JhODllN2JlZjZjMWRmZiBsZWdhY3ktdHJ1bmsKKzQyOTUwIDQ4ZTBhNWUzOTQwM2JhMWZmMGU0N2MzZGM3MTFmOTU3NjhiNTFmYjUgbGVnYWN5LXRydW5rCis0Mjk1MSA3YzE3ZTkyMjFmOTQxZjZhMWNkZDQwNzFkY2VjZmEyYmRkNjIzMDFlIGxlZ2FjeS10cnVuaworNDI5NTIgZmMxMGZmMzIyZGYxYjc5M2VkODVmYzgyNDI1YTViMzQ5MmQzOGZmNiBsZWdhY3ktdHJ1bmsKKzQyOTU0IDMyNjZhMDIwYTBkYWI3ZjBhNzI5NGJhZTk4MWY2ZTQ0YjhhZmEyMWYgbGVnYWN5LXRydW5rCis0Mjk1NSAxMWY4YjViOGNlMjAxODc4NjlhOWU5N2EyYmEwNzc2ZWY3NWZkNGM3IGxlZ2FjeS10cnVuaworNDI5NTYgZmFiNDRjNWM4ZGY0MmI5NTMxMWU3NTdlMzA1Zjc5MTFiOGU1ZDcwNSBsZWdhY3ktdHJ1bmsKKzQyOTU3IDJhOTA1NmY0YzE2NDc2NjM0NjYwOTE2MjdjMmQ2ZmRkMTRlZGMwZTMgbGVnYWN5LXRydW5rCis0Mjk1OCBkYjQ2NTA0OTNjMmI4ZTM5MmM5OTJhYzUyMzI0NGZkZjZlMWJkZjQ3IGxlZ2FjeS10cnVuaworNDI5NTkgYWU1OWZjZWQyZTE0MmQ0YWJmZDIyYzdiMTk3NDcyMzVlYjNiNzc5MCBsZWdhY3ktdHJ1bmsKKzQyOTYwIGViZWJhNzM1Mzg5NDdkZjMyNzAwZjgzN2M4NWQ0NWMyMDE4MzE5ZWUgbGVnYWN5LXRydW5rCis0Mjk2MSBmMTIwZjc0MGFiZTQxZTY3N2E2MWFmMzgwOTdmYzVjZmVlODNiY2JkIHJlbGVhc2UyNC1tYWludAorNDI5NjIgMDZlM2Y2MjdhZDk5NTg5ODliNTZlZDg5YTBkY2VkNjUzYWE0NjFiYSByZWxlYXNlMjQtbWFpbnQKKzQyOTYzIGUyNTZiNTMwMmI1NWMzODQ3MWUzYzI1NzMzYzk3MWZiZTAwOTJiOGMgbGVnYWN5LXRydW5rCis0Mjk2NCBkZjQzYzA0ZDI1NTQ1ZWQ0YmJkZTVjMDNkZTk0ZDI5Y2I0MWIwN2Q1IGxlZ2FjeS10cnVuaworNDI5NjYgMWRkNjUyMDRjMDlmZTdkNzkxZjYxOWZlYjViNTRjYWQxMTY3MDk2OSByZWxlYXNlMjQtbWFpbnQKKzQyOTY3IDAzZWY5ODcwNDNjZTAwZTkwNDQ5MGZjZjlmNjQyOTI4NzQ0MThkOGYgbGVnYWN5LXRydW5rCis0Mjk2OCBlNDQ2NWQyNzM3YzRlNzVkZDZlNDFjMDYxMzVhNmU0ZWFhZWRjN2ZkIGxlZ2FjeS10cnVuaworNDI5NjkgNjcxODc3ZDIyYTFjYzg4MjhmMjczZGYyMmIxYzRjMTBlNjIzNjFjNCBsZWdhY3ktdHJ1bmsKKzQyOTcwIDRiODY3ZTY1NGE4YTRjYzA3MzFlYmMzNWZhZjFmNTM1ODU1MTk2YWEgbGVnYWN5LXRydW5rCis0Mjk3MSBmMDYxMjVhOWQ0MDYzNTcxNWQ5Njg1MmUzYmYzOWNkODUzMzM2ZWUwIGxlZ2FjeS10cnVuaworNDI5NzIgNzM1MWFhYjg3ZTZkZTBmYjNiZWM3ZTRkOWViODVkZjcwZmE1YzA5NyBsZWdhY3ktdHJ1bmsKKzQyOTczIDBmMTlhNmZjOTc1NjA3YTYwYTQwMjZkZjhiM2I5M2MwMTFmMzNlMDMgbGVnYWN5LXRydW5rCis0Mjk3NCBmZGIwNWM4YWQ1MzMzYTM5MTc4MDdlNTg2ZWY0NGE1YTgzYWQyYmRjIGxlZ2FjeS10cnVuaworNDI5NzUgNDAyNTZiNTRjNzkwNjBiNjA0ZDYwM2RjMTIzYjBhODc3NjhiNjk3MSByZWxlYXNlMjQtbWFpbnQKKzQyOTc2IDY5MTNlYmE3OGQ0MDc5MTBjMmZlNmU5ZDkxZjI4NzkxN2FiZWY2MWMgcmVsZWFzZTI0LW1haW50Cis0Mjk3NyBjNzdlY2U2NjcwOWQxN2U1NzQ5NTUyZTIxODIwOTMyMzQzYTUzYzYzIGxlZ2FjeS10cnVuaworNDI5NzggYWIwMDMxOWMzNzQ0ODYxMDU0Y2IxMGI5ZWZiYTJhZmM3OTFmMGU2ZCByZWxlYXNlMjQtbWFpbnQKKzQyOTc5IDk3ZmVkNjE4YjVlNzIzYTRmYTNhY2U0MzY5YjE5ZTBjZWQ4NTkzZjQgcmVsZWFzZTI0LW1haW50Cis0Mjk4MCAxYTg0NjViYWYwN2RkNGY3MjlhYmUyNGZlZDc1ODY1NzRhYmZkNTgyIGxlZ2FjeS10cnVuaworNDI5ODEgYzllNDkxMzhmNjU5YjFlMTQ5OTA3YzJhZTUyNjQ4MzZiYjBiMzUyMyByZWxlYXNlMjQtbWFpbnQKKzQyOTgyIGRiNWU3MjBiMGNlZjllMjhmYmNjMjNlN2ZjMjQ3NWEwZDJmY2FlNDYgbGVnYWN5LXRydW5rCis0Mjk4NCA5NTg0MjUwMDdlYTZhOGE2OTM1ZDZhNDU4ODNmZDEzMjM0ZjY3ZTc3IGxlZ2FjeS10cnVuaworNDI5ODUgM2JlMjQyNWQ3NzQwMGQ4ODcyN2U0OTg2NzFjZjMxYjk4YTMwNTBhZiByZWxlYXNlMjQtbWFpbnQKKzQyOTg2IGNiOTg0YThiMTEzNDJmMGJlMTYxZWI0OGRkOTM3YTI5NmZmYzk0MWMgcmVsZWFzZTI0LW1haW50Cis0Mjk4NyA0MzA5YjNmYjViNDM1ZWVhOTAyMWExMTU5YzQyOGUwMDlhNDc1NGM3IHJlbGVhc2UyNC1tYWludAorNDI5ODggMzJiODY4YTQ5NjU5MzA5Yzk1OTMxOWMyMGJmODk5NTVhOTM2Zjg4ZiBsZWdhY3ktdHJ1bmsKKzQyOTg5IDNhZDQyZjk5YTZkYmI3ZmRjMDQ3ZTBjOTA2NWI1MTM2YmI5Njk3ZWMgbGVnYWN5LXRydW5rCis0Mjk5MSBkZGE0MjQxZjlhYmM3ZWExZWRkMjlmODc1YjVhMTJlYjIxNGU5YjYyIHJlbGVhc2UyNC1tYWludAorNDI5OTIgM2Q3YWRmODg3NGFjNThiODM4NmZjZjkzYWJkZjc1M2Y5MDc4MWQwOCBsZWdhY3ktdHJ1bmsKKzQyOTkzIDgyOTJlM2U2ZWNmZWE5N2FkMjllMTdmY2MwMDAzNmIxY2EwMGEzNjAgbGVnYWN5LXRydW5rCis0Mjk5NCA3ZWIyYzBmMGQwZmQ2NjUxMjZkMWE1ZTI4ZGY1YTdjYjRhNWJjMTczIGxlZ2FjeS10cnVuaworNDI5OTggOWEwODcyNDExMGQwYmViOTZkYjgxYzMyOTZiNjg2NjIwYTBjZjNlZSBsZWdhY3ktdHJ1bmsKKzQzMDAwIDMyMTAzYzVkYmVmYWMzZTJiY2RiZmQ0NjkyODA5MmIwNzMwZmExNGYgcmVsZWFzZTI0LW1haW50Cis0MzAwMSBhOGZkOTFjZDMxN2FjYmI4OTEwOGNlNDY1NzI3NTEwMzE1OGU2NWU0IHJlbGVhc2UyNC1tYWludAorNDMwMDIgMTVhNDU4MTcxZWIwMDg5MDYzNWE5MTFkYTY0YzYyZGQ5ZWMwNjIyNSBsZWdhY3ktdHJ1bmsKKzQzMDAzIDBjMDQwODM1MmVlNjljYWZlZGNhYTQ2NWNmYTFjMDI3ZTNlM2Y2YmUgbGVnYWN5LXRydW5rCis0MzAwOSAwMzVjYzg0MTQ3ZmIwNGU0ODlmYTA3YWQ5MmIxYWVjYzQ2NDE5YmYyIGxlZ2FjeS10cnVuaworNDMwMTAgODUxODhlNWI0OTEyZjU0YjcxMDA0OGJiYzYwMjA5OTI3ZjU5OWIxMiBsZWdhY3ktdHJ1bmsKKzQzMDExIGI1YTEzNTcwNTkyZGRjOTQ3MDdjNmM4ZjJhYmJhNWQ4MTJjOTE4YzAgbGVnYWN5LXRydW5rCis0MzAxMiA2YjFiMzJhODVmNDc2MDFkOGZjOTZhOTc4MDNhMDllZDY0ZDEzZTYzIGxlZ2FjeS10cnVuaworNDMwMTMgMjllNmU3YTEwN2RlMzkyMDVjNTQwYTI4NjdjNGMyNmM4Njg3OThkNCBsZWdhY3ktdHJ1bmsKKzQzMDE0IGJkYWZjYTIxOTJkMzdlYjFmMWFmMzAwOTVmODU1NWJlMzliNGRhZDkgbGVnYWN5LXRydW5rCis0MzAxNSA4YzFiZjc5OTk1MmNmMWQwMzQ1YjA3MmJjMGRiNDJiM2FkYjc3MzIzIHJlbGVhc2UyNC1tYWludAorNDMwMjIgOTU0NjllOTdmZDkwMDBhYjI4YzcwZjk5NjRiNzI3OWZlMWIyMDE4YSBsZWdhY3ktdHJ1bmsKKzQzMDIzIDQ4MDhlZTYyYjE1NmE2MTlhNTljMmE4MjU0ODY1MTJhMTliZGVhYmIgcmVsZWFzZTI0LW1haW50Cis0MzAyNCBiM2MzNjQwZDkyZjg0YTEyZTA1ZTI5ODQ1ODE1NWMwNzBmMzQ2MTMzIHJlbGVhc2UyNC1tYWludAorNDMwMjUgYzhmZmM5MTNkMDE0MzA1N2M3NTAzM2NmY2UxMjNjMDI0YjVjNjc1MyBsZWdhY3ktdHJ1bmsKKzQzMDI2IGZmMzAyNDI1OWQ5MWQ3MmJhZTdhN2MzYzdjZWRlMjIzMjIwZTg5M2IgbGVnYWN5LXRydW5rCis0MzAyNyBlMmFiNzU1YWU2ODU4MGUwYzAyMzM4YjU4OTE4ZWI5MTAzYmU3ZjFmIGxlZ2FjeS10cnVuaworNDMwMjggMjJmZmYxZjNjNzhhZTU0NTE4ODFkMDcxOTY1YTMyM2E5Mzk2Y2VjYyBsZWdhY3ktdHJ1bmsKKzQzMDI5IGNkZTU4Y2QwN2U3ZDg1MDQzYmVlNWYzMmI2OGM4ZTQ3ODI3MmJkNmQgbGVnYWN5LXRydW5rCis0MzAzMCA0YTg5NmZjMTIzODQyNzI0MTkzOWJmODBkZDQwYmMwZmEwNDJkNGJkIHAzeWsKKzQzMDMxIDU3MGM2MTZhY2YwYzE0ZWM3YThlZjI3NDM3ZTE0MzZmM2IyOWJjMjAgbGVnYWN5LXRydW5rCis0MzAzMyAzNzVjZTFjMDRlNjZiNTliMWY3MTNkNWE1NDM2ZDRkNGNlNWIwODczIGxlZ2FjeS10cnVuaworNDMwMzUgNDljNmViNjg4OTA2YjFkZGRhYmY1NzhmMDgxMjllNjcyOWQ2MTUxZiBwM3lrCis0MzAzNyBhYmE4MTRhYTRjNmE3YmQ4MmQxYTMzZjBjNGMwOGUxYzgxMTlkZmY1IGxlZ2FjeS10cnVuaworNDMwMzggNjljYmUwZmI3YTZkMjA0YjAxOWYyYmMzMjY3MzM0ZTkxMjM0YjE4MSByZWxlYXNlMjQtbWFpbnQKKzQzMDM5IDhlOGQwZTAzZjA3NmEyNDJjMmI0MDdjZjc5NWQxZTUzMGU4M2ZhODUgbGVnYWN5LXRydW5rCis0MzA0MCAyNTFmOTIxY2M4MWRjYzFkOWE1NWYyNWZiMWM2NDFmZjYwNmJiMjFjIGxlZ2FjeS10cnVuaworNDMwNDEgNWZiNTRlZDg1NDNiYjA3M2JiZjg5MzRkMzA1ZmQ4ODYxYjQ1ZTEzYSBsZWdhY3ktdHJ1bmsKKzQzMDQyIGQ5NjllMzM5YWMxZTUzN2ZmYzY0NWMwYmJkMjgxNWE5MGI2YjExZDAgbGVnYWN5LXRydW5rCis0MzA0MyBmOTE0NjMwZjQxOWMxYzRlNjgxMjJmYjZkYzdjYTU3NGVkMjRhMjU3IGxlZ2FjeS10cnVuaworNDMwNDUgN2ZhNGMyOWQ3MDMwMTVhNzk4MTc5ZTJkODFiZjk2MGM5YTEwOTk4MiBsZWdhY3ktdHJ1bmsKKzQzMDQ2IDlkM2EyY2RlMGRiZDMwZjljNzA1ZTEwODMzNmY2M2Q3YjRiMDIyMTUgbGVnYWN5LXRydW5rCis0MzA0NyA0NTFkYTNhNTI5MTMxNmRhMWU4ODc1OWY2MmFhNDk5NWVkZWJiNTAwIGxlZ2FjeS10cnVuaworNDMwNDggMTc5MDg0ODk5ZDk2OWIzNzk1NTZkZmU2MGNlY2QzMjcwNzMzZDYwMyBsZWdhY3ktdHJ1bmsKKzQzMDQ5IDg2ZjEzMzAxYzNkYjQxNGNmYWRjYTQ1OWJlMWNjMDNlN2M4OTc2NWYgbGVnYWN5LXRydW5rCis0MzA1MCA1NWU0ZjQ3NjU3NjNlY2Y2NjIwYWMzY2I5ZDcyOWIyZjVlYzk1ZDM1IGxlZ2FjeS10cnVuaworNDMwNTEgNWIzOGRjNTUxZjg2ZjhjNWJlYjIzM2EwNzBjNGVlOGNiZmUwOTFjYyBsZWdhY3ktdHJ1bmsKKzQzMDUyIDRmNDQ0MTJlOWY2YzEyN2NiNWEyMDBkZTE3ZThiYjg5ZDcyNWY0YTEgbGVnYWN5LXRydW5rCis0MzA1MyAzYmYyMzA2MWQ4NmNkOTQzNWY1NmM0OTQyYzMzOGIwM2ZhN2UyYTY1IGxlZ2FjeS10cnVuaworNDMwNTQgNjczOGY3YjI4MmY2NWM1YzkxYzA1YzQyNWJmZjA5NGExZjI0ODA5YyBsZWdhY3ktdHJ1bmsKKzQzMDU1IDM1NGUyMmYzZGFjNmYzMjJkYWM4NDZmODY5ZDJlNmIzNTczZDdmMTkgbGVnYWN5LXRydW5rCis0MzA1NyAxZGRmMGQ4MWQ2YzU5MGNjZGNiMzM1MjA3ZmUzYTQ4NzczMGM0Y2E3IGxlZ2FjeS10cnVuaworNDMwNTggNjE0ZDgwZGZmYzFmODhlMjAwZmM5NzA2YThlNzdiMTlmZmZhNGVlOCB0aW0tb2JtYWxsb2MKKzQzMDU5IDY4NTg0OWJkOTA1YzRhYjNkM2JjNjI1MjAzNTAzNDBhYmE5MzI1MTMgbGVnYWN5LXRydW5rCis0MzA2MSA5Nzg3ZjgzMGQwMjViNTg1YzRhYzc0NGU4Y2M3Mzg3Mjc3MGVmOTg0IGxlZ2FjeS10cnVuaworNDMwNjIgNjI0MDlhMWJjNGRiMzJlNGZlMGM5NGZlOTBmZmY2MmIwZGIwZjRlNyByZWxlYXNlMjQtbWFpbnQKKzQzMDYzIGFiMTdkYTY4NDI2YmE4NTQyNDBhMGU5ZjkxNTI4NWQzM2Y3ZWE4YzQgbGVnYWN5LXRydW5rCis0MzA2NCA1ZDJhYjQ4MjNmM2NjN2ZlMmY3YTcyZmRlMTdiZjA5ODZmNzRkNDVkIHJlbGVhc2UyNC1tYWludAorNDMwNjUgZjBiMGFhMzU3ZDQ5ZTQzNDlhZjViNDVkOWFkN2YwZDVlOTVlZWEzZiBwM3lrCis0MzA2NiAyNTAwN2MxNTU2NjhkZDc0ZTNkMTJjZDYyZmZlOTQ0ODAxYmFkYzcxIHAzeWsKKzQzMDY3IDU2MGFjMWJhOTkyNzRmYmVkOTg3ZGEyZmM2MDNlYjE2MmVkNGI4MzEgbGVnYWN5LXRydW5rCis0MzA2OCA0YWUwYmJmYzY4NjZlMTk1NDc3Nzk4YWY3M2E3MTY0YmFkMjRmMzExIGxlZ2FjeS10cnVuaworNDMwNjkgZDY4MzQ0ZDkzMmM0NThmODc2NzkxMWE1MjhlMGE0NTAwNmM1Njc4YyBsZWdhY3ktdHJ1bmsKKzQzMDcwIDg1ZWFmMGNhNjRmMmU0ZmY2YzNkNjRiMzEwNzZhZGFjZWU2ODE5ZmIgbGVnYWN5LXRydW5rCis0MzA3MSA3ZGFkODNjYTcwMmRiMmIwOWRmZTI3YzI5MTdkNmMxMTY3ZTIyNDI5IGxlZ2FjeS10cnVuaworNDMwNzIgNDkyMGJkNDkyZDk4NmI1YWFkMDJhMWVkNmQ2ODUyOTlkYjg3YTZjMiBsZWdhY3ktdHJ1bmsKKzQzMDczIDQ3MjdmMjYwZjZmOGQ5NjkzNWUwZGM5Yzc1Y2Y0NTk2YjAwYzM2MDMgbGVnYWN5LXRydW5rCis0MzA3NSAwZjZiNGNlZWE1ODA1MzhjODM4NjRhMDYzMjdmNmMyMmRmNGY3Y2FmIGxlZ2FjeS10cnVuaworNDMwNzYgNDk1MzQ0ZmVkMjU1YjVhYjhkMWIzM2FiYTllYTE4ZjczMDJlNWRjYSBsZWdhY3ktdHJ1bmsKKzQzMDc3IGY3MGMwMzY0ODllYzQzMTc4MDhhODQxMjRkMDg0NTQ4ZWI1ZDk5MTEgbGVnYWN5LXRydW5rCis0MzA3OCAwMzg5NGE3YTMyZWNkM2ZmZjQzOTdmYTNkYTBjMjIxZDRkMWZlMzlhIGxlZ2FjeS10cnVuaworNDMwNzkgYTJhNjA0OTMxZmY2ODA0N2ZjNjA2Y2EyODgwODAxZGEyYWMxOTE5MiBsZWdhY3ktdHJ1bmsKKzQzMDgwIDMwMjAzZTJiOTdkNzMyZDVkZmY2MDk1YjliZThhNjFiNzQxZDVjYmYgcmVsZWFzZTI0LW1haW50Cis0MzA4MSA5MmJlMmUxMTcwMzMxOTU4YzU1ZGJiMDJmZjA4YTI5OTg2Zjk5NDE5IGxlZ2FjeS10cnVuaworNDMwODIgODJmNzAwZmM0ZGUyMGRlNThiN2VkYmJjZWM2ZTQzZGEyYTZkYzc3MiByZWxlYXNlMjQtbWFpbnQKKzQzMDgzIGEyNTM5NThiZmE0YzQyYjMwMmRkZGU0Yzg5YTY1ZjdkMzRlMmIwMTIgbGVnYWN5LXRydW5rCis0MzA4NCBlNzIxZDY4ZGJmNmYxMjgzN2Q4YzZlZGI3YjVmZjM2ZDJlODQzOGE0IGxlZ2FjeS10cnVuaworNDMwODUgM2IzMDcyMGZhNTdhMTE0YjJmMGEwODJjZDRhMTQyOTY3Yzc1YjJhMiBsZWdhY3ktdHJ1bmsKKzQzMDg2IGMwYWViMTA2NTRiMmY2NjljZTNlM2ExZTJkMGYxYjUzMDIyZGE1MmIgbGVnYWN5LXRydW5rCis0MzA4NyBmZmY0ZWVjZGVmNDVmNjQxOGRlNDlkODFlYzBkZTFjNzExZGY3ZGQ1IGxlZ2FjeS10cnVuaworNDMwODggYmNlNWM3YWU2NTlhNTI1MjNlYzA2YmEwNzc1MDY4NmQyNWU4OTYxYiBsZWdhY3ktdHJ1bmsKKzQzMDg5IGM0NDk5NDQwNjhkMjI4ZjZlMzQ0Nzk2M2M0ZTFiM2Q5MzRlOGY3ZWUgbGVnYWN5LXRydW5rCis0MzA5MCBiZmI3NGE0MjBhYzhlYjM1MTUyZDA3NjJkOTUzN2Q0MGI0MGY3YWNjIGxlZ2FjeS10cnVuaworNDMwOTEgZTQxNWYxYTg3NGIxMDllZmI0NzIwM2Y1NzBjYTU5ZjI0ZTdiMTIwYyBsZWdhY3ktdHJ1bmsKKzQzMDkyIGE5YzNjOTM4MjQ2NTNlMDY4OTIxZjcwYmMzODE1ZmZiNzU2M2I2NDAgbGVnYWN5LXRydW5rCis0MzA5MyA1M2M4MDZmN2EyNTA4NmMyNDNmN2U5N2M5ZWQyZmE0YjNhZWU1Y2Q5IGxlZ2FjeS10cnVuaworNDMwOTQgYmQzNzE1MzUzYTA5YjU2MjY2Nzk0NTJiNDQwMzAxOTZlNzFkOTdmNiBwM3lrCis0MzA5NSA3YWRhMTZhMTQ5Njg2NzQ2MjMxNDNkMmQwODExNjU5MDUyNmNlZDdjIHAzeWsKKzQzMDk2IGNkMTgxOGVlN2VhOWE4Y2U4MzliZjFiNzYxMDFmZGJmY2FiN2E1YzQgcDN5aworNDMwOTcgZmYzODFiMzg4Y2ZmNDJjOTc1NDQ4N2Y2ZmVhNmZhNjZiYjZjMjE3ZCBwM3lrCis0MzA5OCAwODFiNGYwZTgxYjdiYWE2ODAyNTRhMzBiNzJjNDU0NTFkNzFiNzhkIHAzeWsKKzQzMDk5IDMzNDJiM2I1ODYzMDQwNTNhNzZhMGY2M2RkOTUwZTUxMmI2Y2VhZWMgcDN5aworNDMxMDAgM2UxZWU2ZTE2YzgxZjkxMmY2OTFjMjQ0YWYxNDY2YTBkYjUxN2I5YSBsZWdhY3ktdHJ1bmsKKzQzMTAxIGMwNDhhMDlkMDZmZjg2NzRlMDUwOTQ5NGE1ZTU4NmFhY2UyNzNjMDQgcDN5aworNDMxMDIgMTE4Mzk3NzZjNjZjMzI0MzY2YTc3YzIwODkxY2QxZmMwMDYwNzg2YSBwM3lrCis0MzEwMyA0MDUxMWJmNTkyOTc5ODNlNDk2NzRiZWY5YTI3MTFlZGZiODY5OTBlIHAzeWsKKzQzMTA0IGEwMTY3MmE5NmQ0NzI3MDQ2MzY2MGJmNTU3MDlmODVmOWQ5NjU4NTMgcDN5aworNDMxMDUgY2UyNjdmNjgwNjVlMjIwOTJmMTc4ZWMxNzYzNjRhN2ZjMzJhYzQ0YyBwM3lrCis0MzEwNiA5ZWYzZmFjNWQyYzBhMmE5NDk2MjJlNTRmOTkzMTBlMDkwYjAxMDRlIHAzeWsKKzQzMTA3IGVhNWI2NmFmNjI0NWE0MDllMmMyM2Q3NjYyMTVmODdkNGU4MzUwOWYgcDN5aworNDMxMDggZmRjMDViMTY3MjM2ZTc1NzIxN2RjNThkMTU5M2U3MGQxZmM4YTVkZCBsZWdhY3ktdHJ1bmsKKzQzMTA5IDVhZWNlZGM5OGFmNjU1OWUwNDUzOWFjNTkzNTQxZTdlMGU0NTRlMmUgcDN5aworNDMxMTAgZjdmZDExYTc1YTZhNGRjYjhhMjNiMGY2MGIzY2I0NzZiZDMyYjExNCBwM3lrCis0MzExMSBjMmMxMjgxNGY4NTRhYmYwZTA4MGExMTVmYmFhNDU4MDhmYjdjNjYzIHAzeWsKKzQzMTEyIDJiMDRiOWM3YjU4ZWIyZDAwNmU1Yjc2MTE5ZTM1ZjUxZDMxODM2MmEgbGVnYWN5LXRydW5rCis0MzExMyBmMDJhMDMyNTRiOTFlNzdjYTc0MDJjNThmNTc3MzE4MGYwNGI3NTA2IGxlZ2FjeS10cnVuaworNDMxMTUgMjAzYzA2ZmJiMDc1NDQ3NDNjMmQ2ZGQ0YWRkY2I1MzUyNDFhOTMyZiBsZWdhY3ktdHJ1bmsKKzQzMTE2IGQ3ZDEyZDdmY2MzOTJmOTc5NmFjN2Y4ZGU5NzkzODBiODU1NDEwZDAgbGVnYWN5LXRydW5rCis0MzExNyAyMzA0NWYxZTM5ZjJmOTFjOGZkMWZhNDUzZTM0MDE4MmVkMzg2NGIzIGxlZ2FjeS10cnVuaworNDMxMTggNjRjODNlMGY2ODNlNTY2YWM2ZGUwMDk2ZTJiNjI0Y2RmNmUyM2JiZSBsZWdhY3ktdHJ1bmsKKzQzMTIxIGIwMWM4MGQ4ODI2N2ZlNTBhZmJiMzQ2NzRiY2YzY2IzNzBjNWY5ODEgbGVnYWN5LXRydW5rCis0MzEyMyA0YzgwNGFiODdlYWRhYzBhYWM2MDI0ZjZiY2IzYzY0M2I1MmFmZWQzIGxlZ2FjeS10cnVuaworNDMxMjQgMWY0NTQ5ODY1YWFkYmU1NTRhZWQ0MjU5NWFlZDhhZWQxYjI1NmE0MiBsZWdhY3ktdHJ1bmsKKzQzMTI1IGU0M2Q1ZDJjYTUwYWJjZWJmNGM2N2VmNmFmODA2NDczYTczMTIwNWMgcmVsZWFzZTI0LW1haW50Cis0MzEyNiBkZDQ5ODQ3YTYwZDMwMGQxNzYwZjE2MDdjNTA0NGRhMjY1MWRlNzJkIGxlZ2FjeS10cnVuaworNDMxMjggYjMzZDkxNjY4Njk2MTVjZjI5NzRkYzg3ZTg5MmI2OTkxODU2Y2M2MyBsZWdhY3ktdHJ1bmsKKzQzMTI5IDk5NDkzMWI2Yjg3NTQ4OTI5YmMzNjEyY2Q4YzY1NWQyNjUxMmQ2MGQgbGVnYWN5LXRydW5rCis0MzEzMCA0M2MzOTNiMmZlOWZhNDc5ZDA3ZGI0Yjc5Y2VkMDFlYTU1OGMzNTRkIHJlbGVhc2UyNC1tYWludAorNDMxMzEgODFkMGU5MzIwOGQ5ZTgxMDVkMjcwZGM2NjQyZGVkNGE2MmYxNWNjZSBsZWdhY3ktdHJ1bmsKKzQzMTMyIGQxMzQzMGE4YmQyY2UyNTllZTk1Mjg1ZTNkOGE4NWFiYTY1MGI4OGMgbGVnYWN5LXRydW5rCis0MzEzMyBiNTVmNTMwNDE5NjUzNTk2NDRjYWJkYzlmYmJjNTIzODQwODVkNGVhIGxlZ2FjeS10cnVuaworNDMxMzQgNjg1ZTIxMjM4NjRkM2Y2YWYwNGI4NjdjYzkwNjlhOTIzMTg1NTg2NSBsZWdhY3ktdHJ1bmsKKzQzMTM1IDM4NDAwYjY2MjQwNDc1YTI5NTlkMjEwYjJlMGYwNTIwMjZiMTQzYzcgbGVnYWN5LXRydW5rCis0MzEzNiAzZjkwYTkzZmY1ZDBlYTkxODgyNGM1MWYwODBhYzY3Y2VkM2ExZWU0IGxlZ2FjeS10cnVuaworNDMxMzcgOTJjYjRhN2ZjNTU0ZWZmYTY5MTZiNzFhYmQyMjVhNmRiOWY0ZmVhNSBsZWdhY3ktdHJ1bmsKKzQzMTM4IDY3NzFmMGUwOGI2MGEyMzZmMjE2ZTY2N2ZlYjQxMzBiMTA4ZjlkODAgbGVnYWN5LXRydW5rCis0MzEzOSA5Mjk1MmFjOGU4OTExZjA2N2Y1NmJlYmM0OWFjZWQ4ZDk1NzRjYWZlIGxlZ2FjeS10cnVuaworNDMxNDAgYmI0OTFlNTVmYjRjMjQzM2E1MWNjYjRlMWVlZmY1NjA3ODk0NGYxZCBsZWdhY3ktdHJ1bmsKKzQzMTQyIDg0MzkyOGM2YjI0Y2RkZjZkYjhjMjU4N2NkMjc5Y2ZkODM4YWNmMDMgbGVnYWN5LXRydW5rCis0MzE0MyA2YzNlYzM3MzZjNTE0ZGY3YWMxZGQwODAxZjU3NGEwOGI5YTliOTA2IGxlZ2FjeS10cnVuaworNDMxNDQgOTkxMGZmNjlhZjk3M2JlMzM5YzJhNzU3OThiMGIwZTM0NWIxYWVhYiByZWxlYXNlMjQtbWFpbnQKKzQzMTQ1IDNiN2IyOTVjY2E5MDJiZjcxMGZmYjczM2RlZGRlNTA3MWE2YzliNjcgbGVnYWN5LXRydW5rCis0MzE0NiBjMDExYWY0YTJiMDFmZDI1MTdlZWU4ZTNkMmEyM2U2NWE5MmRlOTU1IGxlZ2FjeS10cnVuaworNDMxNDcgMDdhYjU1NzYyNWI5Y2VlZmVmYzdhZTY0MzhkNWEzOTZlYTU5N2Y3YSBsZWdhY3ktdHJ1bmsKKzQzMTQ4IDIzMzU3Yjg4YzAzZWFmYTZiZTI5ODVkZGY1NTZjZTE1MDVlMzVhZDcgbGVnYWN5LXRydW5rCis0MzE0OSAxZDMwODFjYjNlYTY3MzViYjJjZTZjYThhOTU3YmVmYmExNjQ3MzdhIHJlbGVhc2UyNC1tYWludAorNDMxNTAgN2MyMmI1YWEzNDM4NzFkYjk0ZDVlZTYzMWY0ZTBhZjNhNzc2NGRiYyByZWxlYXNlMjQtbWFpbnQKKzQzMTUxIDhkNDJmNjYxZmVjODAyOWUxYTIwYzM0M2RiYmQ3YjE4YTdjNjk5MGYgbGVnYWN5LXRydW5rCis0MzE1MiA3NzVjZDY5ZjhhMjM3ZGFmZWRiOTQ3MjllNmExMmY2NTg5MDc5M2E1IHAzeWsKKzQzMTUzIDZiNTE2ZjMyMWQ4NTI0Y2JiZWUxNGQxZTY2MTc5ODQyYzhmOWIxYjkgbGVnYWN5LXRydW5rCis0MzE1NCBiMzFiN2VjNWE2YjQzOTQwY2I4ZTkwMTBiYmU5YzMyYTU4ODhlODFmIGxlZ2FjeS10cnVuaworNDMxNTUgM2RhYmQ5YmI0OTZlOWE2OGNkNmNkOTRiNzYyMjk3M2ZjNzY2NDA1YSBsZWdhY3ktdHJ1bmsKKzQzMTU2IGI0ZDBmOGQ5NTE3OWE0NmJjY2I0OWQ4MGRkNTYxM2QwNWFlMGMyNGQgcmVsZWFzZTI0LW1haW50Cis0MzE1NyBkZThmNWQxY2RmNGQ5NTgyNGFlZDNiMGUzM2Q3OGQ3MmYzYjliNTA2IGxlZ2FjeS10cnVuaworNDMxNTggZDYyYjEzNDg4OTQzZDc4YzljOGQ4MTczMjI5MzIzMmE4NGI3OTA0NyBsZWdhY3ktdHJ1bmsKKzQzMTU5IDg1MmRlMzNlZDQyN2Q2YTQzMGY2MWNkODlkMzYyMmQ5YTM5MDVhOGEgbGVnYWN5LXRydW5rCis0MzE2MCAyZGM2M2NkYjA5Y2YwZGE4M2JmMTQ5ZmYzNTA3MGEyZDQzMzM3Mjk4IGxlZ2FjeS10cnVuaworNDMxNjEgZGI5ODZiZTJjMDBjNWQwM2E1ZGU1NDVhZTYzMWVkODJjMDVjYmQ3OCBsZWdhY3ktdHJ1bmsKKzQzMTYyIGU4MGZkYjNhMGY0MGE5NjM5YjQ4MWZhZjhmNjhmZDIxYWJhZjQyYzIgbGVnYWN5LXRydW5rCis0MzE2MyA3OWU0ZGJlNGJkYzZhNjM4ODA0YzZmNTVjZDk0YmIzMmJlN2Q3NmZmIGxlZ2FjeS10cnVuaworNDMxNjQgYTA2YzlmZDI1MTIwOGNhZDJkZWFkYmI1OWU5NDVjMGQ4M2JkZThiOSBsZWdhY3ktdHJ1bmsKKzQzMTY1IGQ4NjAzMTFmOGE5NzFlNzJhOWViMzMyNTI4ZmZlMzk0Y2RkYzYwNTggbGVnYWN5LXRydW5rCis0MzE2NiAzNjA1MjE4ZDAzZmEwNDM3YWU0ZjNiMzNlZGExMWE1ZDE1MmJhZmIxIGxlZ2FjeS10cnVuaworNDMxNjcgZGUyYjk0MmYzN2Y5NDhlMGNjNmFmNmRiNGJlOWI5MWIzZGRmNTE5ZiBsZWdhY3ktdHJ1bmsKKzQzMTY4IDVhNzc1MGRiMDk3NzhlMDIyN2ZlYTFlZjIxYjhhYTlmMDZkNGZlYTMgbGVnYWN5LXRydW5rCis0MzE2OSBhMGFjNzcyNTliOTljZTdmYzY5YTAyN2ZkY2Y2MzgyMmUyNzFjNTI0IGxlZ2FjeS10cnVuaworNDMxNzEgZDg1OTIyNzZiMTM3NDVhOTFiOGIzNGQzNDgxZDZkMjc0MjViNjY0YyByZWxlYXNlMjQtbWFpbnQKKzQzMTcyIDQ5MDdmYjg3OWNkOWM3YTYzODhhYTM3OWJmNzY3ODIwNTZhMDdkZWQgcmVsZWFzZTI0LW1haW50Cis0MzE3MyA2NDEyZWQ2OTc1ZGVlZThmYThkOTllZWFiNTU4ZjM5ZjFjMzZhZDU0IGxlZ2FjeS10cnVuaworNDMxNzQgODdlZDFmM2QyNzJlNGVjMzIwMGYwZjk1OGVmMjc1MTU5ZTlmMmMzMiBsZWdhY3ktdHJ1bmsKKzQzMTc1IDgyYWViNTRiMGJhYWIzZjFkNjgxYTcwN2MzMzQyYmYwMDViNTJjY2QgbGVnYWN5LXRydW5rCis0MzE3NiAxMzZiNDU3YjU0M2FiNjU3OTZiYjZmYTY0MWUxYjNkZDFjMDk0ZmI5IGxlZ2FjeS10cnVuaworNDMxODEgZjc5OTNkYzZiZjI2NGY4YmIzMDk0ODgxZDdmMDNlNWIyZWUxMGQ3YyBsZWdhY3ktdHJ1bmsKKzQzMTgyIGRiMzE3ZTQzNTdhZDU0ZTZjNzcwY2UyZjY3NWNmNzc2NzY3OWFhMjAgbGVnYWN5LXRydW5rCis0MzE4NCBkYjI5N2I5NDQyZTQwY2E1NjY1N2FmMTI1Y2MwMjQ4MzVhM2M3NjExIGxlZ2FjeS10cnVuaworNDMxOTEgZTczYjM1ZDgxNjE3YmViMWRkMjgwMTI0OWM4NjZhZGE4MDYyZGU2YiBsZWdhY3ktdHJ1bmsKKzQzMTk0IDhkYzQ0ZTlkNWM5MzliODJkNjI0MTFmNGMyMWNlNGQzNWRkYTY2ZjQgcDN5aworNDMxOTUgYTljMWU1MmFkZGYyOGJiYWQ4MDFjOTRmNzQ3MTcwNjdmMjJiZjU0ZCBwM3lrCis0MzE5NiAyNTFlY2VjMDRmMWJmZmQ2MzViNTcwZjFkNmU4ZDgzZmZkNjhiODM4IGxlZ2FjeS10cnVuaworNDMxOTcgZTM0NTA2ZTQ0ZTY3NjgyYjdkMzMyMzM1MGRlNTRmYzhhNzRmNjNjMCBwM3lrCis0MzE5OCA1MmRkNDVkYjFlODUwNDdhYmJjYzBlNTZmNzg4ZTJhYmU4MTIxMzEzIHAzeWsKKzQzMTk5IGJhZjY1ZGM2MzljMTRmZTBlMzk1MmY3YjUwNGNlN2FmMDA5MzZiNWUgcDN5aworNDMyMDAgMDhjZjhiOWVjMjA4NzIzN2I0YjIzMTg3ODY0YTA5MTdiZjkwMjk4MCBsZWdhY3ktdHJ1bmsKKzQzMjAzIDJmNGE0Zjk2YWNkMWU2ZjQ4MjljMTg4MzI4NDY3OTg0ZDZjOGNkZTUgcDN5aworNDMyMDQgYWEwMzlkZTg5MWM5ODdmZTZmZTA0NWU1OTg5MzVmYTQ5MzFiOTVhNyBsZWdhY3ktdHJ1bmsKKzQzMjA1IDBiYjc3MDA1OTNmNzVhMjFlN2E3YzU2YTU3ODFiOTZiZmY3MDAyMDEgcDN5aworNDMyMDYgNmU5MjkyMzhlM2FjNDdiMTgyOWYzMTU5MGVmZWViMTAyN2U1MmI3NSBsZWdhY3ktdHJ1bmsKKzQzMjA3IGM5ZWUzMmI3OTNlNzg4NDZlZDJjNjQ2OGQyYjI3MzlkMmRjZmQ1OTcgbGVnYWN5LXRydW5rCis0MzIwOCBlNzJkMWM3Yzg1NTQ4OTA5YzJmY2ZlOWZkZDFmYzgyYjU5OWI2YzdjIHAzeWsKKzQzMjA5IDNmODI0MTQxZWViOTllYmQ4MzRhZGQzMTE3MmVhMWE0ZTdjOWNlZTUgbGVnYWN5LXRydW5rCis0MzIxMCA3ZGFkZDNmYzVlZmFjNmJiMGM5ZGE5OTEwM2YxOTg0OGM1NzdiNmZmIGxlZ2FjeS10cnVuaworNDMyMTEgNzFjNTY5NGUzNDIzYjI0NWYyNGM4MjU1ODBlNzg1YmMyMmNlZmZiNiBsZWdhY3ktdHJ1bmsKKzQzMjEzIDYxNzc0MzExNDYwMGJiNGYzYmJjOWI5MTY5NGY1ZjI4N2UwOTFmNGQgcmVsZWFzZTI0LW1haW50Cis0MzIxNSA3NjdlNmJlNTg5YTA0MGRiZTU0NmQ3NmFlNjA5NDBmZDViNTQxZjcwIGxlZ2FjeS10cnVuaworNDMyMTYgZGJhZjBiY2U4ZDQ2MDJkMjBhNTUxYWQ0MTZhNGZiMTU0MTVmYTU5ZSBwM3lrCis0MzIxNyA3ZWFjMjNjOGU0ZTk4OTNlMDc0ZmU1OTYyNmExNDAwYWM3OWJiMzM4IGxlZ2FjeS10cnVuaworNDMyMTggNGVmOTk2OTVmN2JiYmVlZDk5NWIzZDgzMWMxZTFhZDk1MTNjNGFjMSBwM3lrCis0MzIxOSA3MDQ5ZGMwYzYyMWEzZDJiMDJiMzIxYzg1NTY3NzRhZDg0NjViMjM0IGxlZ2FjeS10cnVuaworNDMyMjAgNTIxN2M3MDNhOTRmOGFiZWE1MThkY2EzNTYxYWMwODcwYTVmYmI4MyBwM3lrCis0MzIyMSA5MWRkNGQ0NGQzYmM3MGRhNmY1NzRmOGFkNGMyOTFmZmVjYmNkY2RmIHAzeWsKKzQzMjIyIGQ3NTEzZjM4YjIyZjk5ZWJkNDg0NTlmOTQyNTVlZDM0YjIwNzg5M2UgcDN5aworNDMyMjQgNjkxZGQwNTkxNjkxNzE3YzdmNmM1ZjI3OWM4MzhjM2ZhMGIwM2JkYyBsZWdhY3ktdHJ1bmsKKzQzMjI1IDAwNTc4NjJhM2JkYmRhZjYxZWE4OGRhMjE4YjM5NjFmMjRiZjlhYTcgbGVnYWN5LXRydW5rCis0MzIyNiAyZDkyYWI3ZjVlODllMGQ4YmJmNGEyOTk2Zjk5ZmQ3ODMxYTE0MGY1IGxlZ2FjeS10cnVuaworNDMyMjcgNGQ4MDYwNzAzM2ZiMzE1ZGU1NmYwMjI3MmI0MWNkMGE0MmE2ZDhkMiByZWxlYXNlMjQtbWFpbnQKKzQzMjI4IDEwY2NlM2Y2NTE3MDI5YWFhOTcxY2Y0YjUyNWMwNzBhMGE4YWVhZmQgbGVnYWN5LXRydW5rCis0MzIyOSAzNTQ1ODExMjM5YjQwYmEzOWRlNDdiMzExNWY2YzEzMDk3Nzk1N2IxIHJlbGVhc2UyNC1tYWludAorNDMyMzAgMTZiODg1OWIwNzYwNWFiNmQxZjliZDFkNTAwODZjNWZlZTcxZDE5NSByZWxlYXNlMjQtbWFpbnQKKzQzMjMxIDlhZDBlNTE3NTI3ZmY0MWI3NzM3MTdhYTQwMzMzOTE2MTVjOTBjMTkgcmVsZWFzZTI0LW1haW50Cis0MzIzMiA4MTQ5ZDBhNDI0YTU1ZTAwNTUwZTE5MjYzZmNjMDI5NDY5NjEyOTM1IHJlbGVhc2UyNC1tYWludAorNDMyMzMgMWFmMjQ1ZmFjOTBhNmI2ZmFlZjg4YWZmMDA0ZDk1MzQzMGQyNGFlMyByZWxlYXNlMjQtbWFpbnQKKzQzMjM0IGMxZTcwMmQyOGNmMjg3ZmM2NGFmNmEzZmY0MWNlODc5MTliYjQyZTAgcmVsZWFzZTI0LW1haW50Cis0MzIzNSBhOTUwNDUwZWY0ZWI5Mjg3MjY0YWZmMThjOWM3YTkwM2QwNDZkOWJiIHJlbGVhc2UyNC1tYWludAorNDMyMzYgZDExNzBlOWFhNzg5YjNhNGFkMDE1M2RkYTJkMDczYzJjZTRkYjM1ZSByZWxlYXNlMjQtbWFpbnQKKzQzMjM3IDdjNWJlN2MwZmRmZGJiYzBhYzFkOTFjMDcwMzhiYzgxNDEyZGE0MTIgcmVsZWFzZTI0LW1haW50Cis0MzIzOCAzZTA5Yzg1NjZkZjFhZmQ3MGE1NTRkYjA2MDUyYmYzNTcxNDc0ZDgzIHJlbGVhc2UyNC1tYWludAorNDMyNDIgYjJlNmQ2YWE4NmQxYzFiMzIyYWMzNTA0ZjkyMGNjY2IzNDU5ZGJlNSBsZWdhY3ktdHJ1bmsKKzQzMjQzIGI0ZDkyZWYyZjMzODBkZWRiMjllMzBmZmY0MjgwMzIwMWFmYmQ2ZDQgbGVnYWN5LXRydW5rCis0MzI0NCAwYzYwMjkzOGVkOGU4Nzk3ODNhMWQ2NDI1Yjk0YzNlZDY0ZWQwOWE3IGxlZ2FjeS10cnVuaworNDMyNDUgMmI3ZWNlNzhlMjkzMTQ3Nzc3NjQzODY1ZjczYzE3YTdlNmFjMGJmMyBsZWdhY3ktdHJ1bmsKKzQzMjQ2IDQ1ZGQ5MzhiN2ZlYjIwZmQ5MDhjY2RmMDAyYjYxNmQ5MGRlODBkYzYgbGVnYWN5LXRydW5rCis0MzI0NyAwMjdjNmZjZWVlMGRhZjk4MGUzZTRlODM2MjU0MjczOWNmNGE1ZTI2IGxlZ2FjeS10cnVuaworNDMyNDggNDFkNzA1Nzg1NzhhMzgxMTYwZjQ4ZjliMmYyMjNmMDhjZTA0ODAxNCBsZWdhY3ktdHJ1bmsKKzQzMjQ5IDRmOTdiNmEyMjljZTAzMTVmNDM5MjNhYTUyZWFkYTcwYmVjMTQ3NGQgbGVnYWN5LXRydW5rCis0MzI1NSAwNjZjOWNlNDhjMzAwMmJlZWQ0ZTNiNmZmZTZlNTkwMzdhZWM2MzY5IGxlZ2FjeS10cnVuaworNDMyNTYgMjlkZjRmZTEyOGEwYWJlYWJmMDE3MDZmOTRkZTBlNDJkNTA3YjFjNyBsZWdhY3ktdHJ1bmsKKzQzMjYwIDcyYTcyMGRkNjRmYjRiNzA5ZmY2NDE1ZWMyMzA0NGY0MTcwOWI3MmEgcmVsZWFzZTI0LW1haW50Cis0MzI2MSAxZWQ3YjhkYzc3N2FjZmQ1ZjZlZjUzYmZhZGY0OTkzZmJiNDliZDFmIGxlZ2FjeS10cnVuaworNDMyNjIgOTczNTdmZTM0MjIyN2JkOWJlYTBlMDc4YTlmZmRjZWJlNzlkZjIzMSByZWxlYXNlMjQtbWFpbnQKKzQzMjYzIDdlM2JmODQ5MmMwM2E2OTY1ZmVmNTUyZTZmZTUyN2FjZGQwNTA3NTcgbGVnYWN5LXRydW5rCis0MzI2OSBhMThhYTNmYmRkNGFiMGQ4MWU3MjUyNjkxM2ZmODI3MjJkOTA4Y2NmIGxlZ2FjeS10cnVuaworNDMyNzAgZmI0ODFlMGY1Nzg2ZTUxZWUzZTFlMjY1NWExNjMzNTQ5OGE5Yzk5MCByZWxlYXNlMjQtbWFpbnQKKzQzMjcxIGE4ZGUwYjk2MDAyNzViYzQ2ODMwNDkxMTM0YTU1NzlhNTk0YTFjNTYgcDN5aworNDMyNzIgMjMxZDYwNGRlZDg0NmUwYTQxYjRjM2MxMWJkZmUzMTY5MWM2NGM5NiBwM3lrCis0MzI3MyA1MjBlNTViZDc2ZDZjMjNjOWJlNjE5MzM4YzBjYzg5NDgyYmJlOTI5IHAzeWsKKzQzMjc0IDY0YWUzMmIwNzgyOTlhMjQwYjYxZjMyNjRiNzA2NmYyZTU1OGYwYmMgbGVnYWN5LXRydW5rCis0MzI3NSBjYWE5YWZmMDg1YTY2NjNkMjNkOTA0YTk5MzIwMGNmMWY0ZWQ4OGMxIHAzeWsKKzQzMjc2IGY5ZjA0MTE1ZmJiNWY1MDAzZGIxYzA0OTI3MGFkM2U2Y2M0YWYwNzEgcDN5aworNDMyNzcgYjJhMDVlYTdlYWMxYWQyZGM1NjQ4NGRlNzg3ZGYyZTk5Y2YwNGYxZCBsZWdhY3ktdHJ1bmsKKzQzMjc4IDg2OGFiMmE2NWM3MzBlZWI0OTYwZmMzNDM2MjJjNGQwMmI5MWUyY2QgcDN5aworNDMyNzkgNjY4YTViYTc3ZGM2ZjNkY2U3NThjMjc3Yzg0Njg1YTE4ZWEyODVjZSBwM3lrCis0MzI4MCAzNWNjNWUxODBhYTNlNjY0ZTdjN2NiMzRmOWNlOTZiYTQ2MWE4ZjJkIHAzeWsKKzQzMjgxIDYzYzYxZGI1NTNhODY5NmRjM2QzMThiODRiNjE1MzFkZjc5MmZlOGEgcDN5aworNDMyODIgNzYwZmZiMGZiYTM3MzdkNGVlYjBlNGYxZDMyZjIzNjE4YjlkYTFkMiBsZWdhY3ktdHJ1bmsKKzQzMjgzIGI4NTY3Yjg0YzUzMTM3ZjQ3NmFhNDEwMWFlNjI4NTU4ZjcyY2RhODEgcDN5aworNDMyODQgMGFkMzg3ZmI2MzE0MzIzY2I1ZGY1OTNlZjM1YTQ2ZmJjNTk1Njc3ZSBwM3lrCis0MzI4NSA0YmZlOGFmZThmNjVlZDEzM2UxMjEzMzMzOTUxMTNiZDgwNWU5YzkzIHAzeWsKKzQzMjg2IDU5M2U4ZmI5YTNjYWZlNWM0NzdjZDU2MzdhMWRjMjdhNzU3MjQ1NzMgbGVnYWN5LXRydW5rCis0MzI4NyA3ZjMyMmVmNjg0Mzg3ZGExYTc5ZjRkYjg5NTBlOTBiM2VhNWZmZjgxIGxlZ2FjeS10cnVuaworNDMyODggZTM4ZmYyMTE5MWRlNTFlOTUyNmVmYTg1YTk0MjM4NjE1ZmZiNjM3YyBwM3lrCis0MzI4OSAyNDM2MzMwMWEyOTljNTEwN2VmZTVlYWIwMzY5NDNjM2E3YzVkNWQ3IGxlZ2FjeS10cnVuaworNDMyOTIgYzFhNmJhN2VjYjIzNGE5NWUwOGNhNDdmNDIwMjAzNGJhYWM0NmVmYiBsZWdhY3ktdHJ1bmsKKzQzMjk0IDY0MzE3YzcxZWQ2ZDM5MzYxZTA3MzY1MTMzZWNlYzM2NGVlYzM0YTcgbGVnYWN5LXRydW5rCis0MzI5OCBiZWQzZjUyZjBkYzYzZjdmMmEwY2EwYTI0Nzk1OGM0MWI5YTRhOTNiIGxlZ2FjeS10cnVuaworNDMyOTkgMWI3MmQwZTRmNGFhMGFkYTlmMzlmZDhkNjliY2Q1ZDY5NDYwMjk0NSBsZWdhY3ktdHJ1bmsKKzQzMzAwIDhhYjAxYTljMTQwYjcwMmEyOTdmYTJmNGVkOTQ1Njk4MzIyMDlmYTggbGVnYWN5LXRydW5rCis0MzMwMSAzOTVhZDBkNTQyM2Q2MGE0MWNkNjJjMGNkYjhhNGIwNjY3MmVjYzZiIGxlZ2FjeS10cnVuaworNDMzMDIgZjVjZDMwOTFkOTlmOWFjZjExZTdjYmFkZTM5NjNkMjNlOWFhOWQ3OSBsZWdhY3ktdHJ1bmsKKzQzMzA0IGIzOWMzZDdhNWFkNDUwY2RiMTZhYmViMTM5OTM2NjFlYjRmMzFkYjcgbGVnYWN5LXRydW5rCis0MzMwNSA2NDI1YTQzYmYzYzZlOWVmNThmYjM2NmFhZWY3MTNhNzUzOTdhNzY5IGxlZ2FjeS10cnVuaworNDMzMDYgNDk2MjJkNjVjMjlkMmFmMTc4MGY2NWI5NjRjMDQwY2EyMzRlODRhYyBsZWdhY3ktdHJ1bmsKKzQzMzA4IDUxZGY5OTQ4ODVlOTc4ZjM2NGE0NmU1ZjY5NWEwMDcyZjQzY2UxNjMgbGVnYWN5LXRydW5rCis0MzMwOSA5NmU0ZDUzMTI4YzllNzNlODU4MzFhMWYwM2Q5NjUyY2M5ZDlhOTI4IGxlZ2FjeS10cnVuaworNDMzMTAgYTgyZWUzMjk4ZTFhZDJiNjQyOGUwZjc3NDYyMjhmMmQ3Yjc5MWUyOSBsZWdhY3ktdHJ1bmsKKzQzMzExIGM4NDQzMDVhYThlZDFmMjJlMDgwYzVlOWViMTkxZjI5MmU2NzBjMWIgbGVnYWN5LXRydW5rCis0MzMxMiA2OWMzNThiZjZhMzQ1NmQ1MzhjZGEzMTAzMjBhYjI0MTZiNjU3ZjFmIGxlZ2FjeS10cnVuaworNDMzMTMgMmMxZmU3NjFmMDE5NDE5OTgwYjJlNTA0ZWI0ZmE5MDZhMTNjNWYwMSByZWxlYXNlMjQtbWFpbnQKKzQzMzE0IDA2ZDc2MTNhMzUyMzE5YzI5NTZmNDg1NzIwMzYwZjEwNGE4YThiMDMgbGVnYWN5LXRydW5rCis0MzMxNSA1MTUxMThjMGUzMzhiODNjYTU5OTJlZTg2OTYwYmUxNWMwZjljODE2IGxlZ2FjeS10cnVuaworNDMzMTYgYjM0NDQwNDE5YjY3OWU3ZTExMzdlMGVhYTEwNTk4ZGIwOWI2YmUyOSBsZWdhY3ktdHJ1bmsKKzQzMzE3IDMwZmFiYjg3ZmJjYzMwZmZkZjE3ZGQ2NDg4MTNjYzY3NTkzOTM1YjEgcmVsZWFzZTI0LW1haW50Cis0MzMxOCA1NGFhNWFhOGYyY2IyNmE3ZGE5M2FiMmE0Y2M1ZDc5MjRkMTg0ZDM1IGxlZ2FjeS10cnVuaworNDMzMTkgNDYxNzZmZmM4YmY1ZGRjZGZjMWNmZmQxZTU0ZTliYjVhNDQ3NDBiMSByZWxlYXNlMjQtbWFpbnQKKzQzMzIwIGUyMzRmZjhiZWFhMjAyMWIyZTEyZjQ5ZTc3NTQzOTQyZjQ4NWEzODYgbGVnYWN5LXRydW5rCis0MzMyMSBkN2E2ZWM5ZGU4ODc1NTgxM2Q5ZTI1ZmM1NDIyOGJiMDIzNmM4ODJkIGxlZ2FjeS10cnVuaworNDMzMjIgNWJiZjcyMjdhZDZlOWI5M2MzMTI1OTczZWJlZjc4ZmE1Nzc3OTQzNSBsZWdhY3ktdHJ1bmsKKzQzMzIzIGYxOTg5MGE4NmM0MzMyYzVlZDM2ZDQ1MjdlMDg5ZGE3MDdmYjc1YmIgcmVsZWFzZTI0LW1haW50Cis0MzMyNCA0MTYzNDg3NDg0NjA0NDg5YWEwZjQxZmQyYTE2MzY3ZTg4YWQyYmYyIGxlZ2FjeS10cnVuaworNDMzMjUgYzA4MThmMjFmNjVhMmRhYmFmY2Q5NTBkYmE5YTBlZWFlYzk2YzcxNCBsZWdhY3ktdHJ1bmsKKzQzMzI2IDkyMzhmMDRlZWFhNmNlODU0NDk1OWJhYjcwYmUyYzVjNzVkNjgyY2QgbGVnYWN5LXRydW5rCis0MzMyNyA4YWRkYzMxM2FiMGZjNzIwMzJhNzQxN2Y5NjllYzk4YmRhNWE3MWM5IGxlZ2FjeS10cnVuaworNDMzMjggNzk5YjQwYzRhMmM2MWJhOWExNTkwMWU3ODk0ZTQ2ZTg1MDUwMmY3NyBsZWdhY3ktdHJ1bmsKKzQzMzI5IDhkNTdkMjVlNjU0ODc5Yzg2OWRkOWZlY2U5MDlkMjc0YWEwNTcyNzIgbGVnYWN5LXRydW5rCis0MzMzMCA4ZjdjMDNhY2FkZGRiYzc2MjkyMTljN2E2OTA3ZTYyYThjNjMxNWEyIGxlZ2FjeS10cnVuaworNDMzMzEgNmUxYTg5OWNhYzhlZTZkZDIzZmFiNjZhNWU1ZTM1MmVkOWVkMjEyZiBsZWdhY3ktdHJ1bmsKKzQzMzMyIGE0ZDJmN2I4NDdiMWU4Mjg5NTgyZmMyNDQ4NGI3M2RlNTg5ZmVkNWUgbGVnYWN5LXRydW5rCis0MzMzMyA5NGY1NGVjNjJkMTQzOGIwNDMwNzYzOTdlYjliZGYwZTdiMzUzNTkxIGxlZ2FjeS10cnVuaworNDMzMzcgZTVjZmQ0YTNlNjVjNjE3MmFiZTkxMjY2NzIyMTAxZDk3NzFmYjBkNyBsZWdhY3ktdHJ1bmsKKzQzMzM4IDAwOThlNzI2NGVhYWM1NGEzZWZhZjhlMmJlMzgyMTM2YmRlYzIyOGYgbGVnYWN5LXRydW5rCis0MzMzOSAzNGYyMGFiNDRjZWZkNDkwOWFhMGZlMjViNTNjZjI4ZmNlYWIzODI5IGxlZ2FjeS10cnVuaworNDMzNDEgOWQ4YjMzYWZmNjBjMTAwZTU1MjlmYTA1YjViNjJjZGZmOTJiMTU0MiBsZWdhY3ktdHJ1bmsKKzQzMzQyIGIwNTIyNDdiMTgwOWZmZWM1NzNiOTI5NjgwN2QyMDQ2OGRmNjk1YTQgbGVnYWN5LXRydW5rCis0MzM0MyBlZTM2YzE2ZDhkMmJiMTVlOWQ0M2NkMGE4YTkxNGUyYjI4MWJjMzUzIGxlZ2FjeS10cnVuaworNDMzNDQgYzA0MWIzNjJiYjA0ZDhjZjE3NTNjNDdiYmIyNmFkZTQxNmRhODY1OCBsZWdhY3ktdHJ1bmsKKzQzMzQ1IGRjMTgzNWZiOWU3YzNiMjhhNWFjYzYxOTdlNmU3NjYyYTU0YjA4ZDQgbGVnYWN5LXRydW5rCis0MzM0NiA0MzQ1MmYxZmVhNjkzNGI5NDM4Mjk5ZWY2NDdkMjhkYTgwNmU5YjNjIGxlZ2FjeS10cnVuaworNDMzNDcgMzczZjdmZTBlNzMzZjRiYWJkMTA0NDY4MzBiYjcxYmNiNzExOGEyOCByZWxlYXNlMjQtbWFpbnQKKzQzMzQ4IDIyMzQ1ZDFlNjg1MjcwM2Q3ZjQ1ZWU4MjVhYjk5Y2Y4ZDhjODA1NGIgbGVnYWN5LXRydW5rCis0MzM0OSAyNjExMTZmNjg4OWMyYzRjN2E5NGRhYWVlYWM2M2FmMzhmOTczMDU2IGxlZ2FjeS10cnVuaworNDMzNTQgM2I2MWU0YWE3ZWRlMWE3YWMwYjI5ZjBmYTMyMjVlZDI4ZWU0ZWRhOSBsZWdhY3ktdHJ1bmsKKzQzMzU1IDZlYjliMTZkNmUyMTU4NjNkMjNhYTliYjFkOTA3NjliMTMwNTllODEgbGVnYWN5LXRydW5rCis0MzM1NiA0MWEyZDc4ZDQzYzY5N2NjYzAyODUzMWZlYjc0NWY2Nzg0MGJmZDc5IGxlZ2FjeS10cnVuaworNDMzNTcgMDQ5MDA0ZDc5ZmVmYjE4MDJiNmU1YzgyOGM1ODFiZjE0ZDAwYWNjNiBsZWdhY3ktdHJ1bmsKKzQzMzU4IDAwZTlkNTljMjNiNGUzOWEyNTUyMjk1YzMwNWNhMjY4MGJkYWExNjcgbGVnYWN5LXRydW5rCis0MzM1OSAzNTIwZjk3MTRlOGMxMDQyZDE4YTViYzYwYzE5Zjc5N2UzMGMyZGI3IGxlZ2FjeS10cnVuaworNDMzNjAgYzhmODdmMDhmZTBiZGRmMDhkMWQyNTQxMWFkZWRmMGU1MWExNzE1YyByZWxlYXNlMjQtbWFpbnQKKzQzMzYxIGMxMWZlMmUyOTg0ZDliMzc1ODk4OGM0YTI3YzE5ZGRkMGE2NWNiNGQgbGVnYWN5LXRydW5rCis0MzM2MiA1MmRlYmJjM2NjMDhhMmVhMzcwZWIyZDQ5ZWY5Nzg3MDRjMDI4OGFhIHJlbGVhc2UyNC1tYWludAorNDMzNjMgOTMzNDRkYTc2YWNkMGU1ZjQxMGEyM2ZmN2ZiZjE4Yzc0MzU3YjNjNSBsZWdhY3ktdHJ1bmsKKzQzMzY0IGE3ODE4YzI4NzQ5ZjRhYTcyNmVmMmE4MmQ3NWIxN2E5NTEyNjdjZWUgbGVnYWN5LXRydW5rCis0MzM2NSBmNGNhMDNiODcxNjBiZTZkZGQ0ZDgxMjhkZmUxNzY0MjYxMzc5ZTI0IGxlZ2FjeS10cnVuaworNDMzNjYgOTRmMTYxM2I4N2Q1YjJiYWYwOWE5OTIyN2FlMmI4MzlkNmZhNmViOSBsZWdhY3ktdHJ1bmsKKzQzMzY3IDAzNGMwY2Y1MDA3YjI4NDI0ZmViNjEyOTViZjljNGRhNjczMzQxN2YgbGVnYWN5LXRydW5rCis0MzM2OCA3YjUyNDgwYzEyYzYyYmVmYzY1ZjZkOWUzOTZlMjljODViNGFkOTlkIGxlZ2FjeS10cnVuaworNDMzNjkgYWYyNGViM2JiZmNlYjdkZWU3MWNhMDQ3OGMwMDI2NWVmZjcyYzkzNiBsZWdhY3ktdHJ1bmsKKzQzMzczIGUxMmU0OTNiNTI0NDQ1NGFmODJlN2E2MDljMjRjNGE5ZDEzZGNjOWYgbGVnYWN5LXRydW5rCis0MzM3NCBiYzUxNjFmMjkyYjc3MTMwMTkzOGE5NTZlNWY5ZjQ1YzdlYTY1MDg5IHJlbGVhc2UyNC1tYWludAorNDMzNzUgNWEzZjIyODA4N2FmZGUzYWIzNjlmMDUzMTI0YzczMmU3YTdmY2RhZSBsZWdhY3ktdHJ1bmsKKzQzMzc2IGI3NTQ0MGNiZmQzNGYxNWU5ZjVjNThlMTRjZWMyYmQ3MTI4ZjVlMmQgcmVsZWFzZTI0LW1haW50Cis0MzM3NyA2MTQ2MWVlYmQ1OGY3ZTNiYzQwY2I4MWE3ZTBiNmYwNzNmMTg0YzU3IHJlbGVhc2UyNC1tYWludAorNDMzNzggYTI4NDdiYjMyOGMwZTZlMmU1M2FiYTkxZDI0MDVhYTIzOWQ5NGJiMiByZWxlYXNlMjQtbWFpbnQKKzQzMzc5IDVkNjI1ZjU4OWYyYTdjYzdmODk0MWVlYWRlOWNhNzViMjZhNmY5MGIgbGVnYWN5LXRydW5rCis0MzM4MCBkOGRlNzUwMDI5MWRkNDU3NjFjMWZhMzE2ZjQ4MTNmMzM4YzY3NTI0IHJlbGVhc2UyNC1tYWludAorNDMzODIgYTc4MzQ4NDRkY2Y2MTAxNjhjYWRlZTMzZGEzMmVmZTM0NGIyOTFmYSBsZWdhY3ktdHJ1bmsKKzQzMzgzIGJhZGFhN2U5MWQ5YTdlNzBkYWU2MzMxNDMxYThmODc0MzhhNGYxYTEgbGVnYWN5LXRydW5rCis0MzM4NCBhMDNjOTU1ZmZlZDEwZmZlYjM2MTRkOGM5ZTRiNWYyYjZlODU1ZjMzIHJlbGVhc2UyNC1tYWludAorNDMzODUgODBjNGZjMDNmZjliN2Q2OGJmZWY2M2QxYjgzNDI1NDlhNDFlOWY4NiBsZWdhY3ktdHJ1bmsKKzQzMzg2IGRjZDQ1OWIwMzY3MDZjNzQ3MjRiZjJkNDNiOWE3NDJhMzRkZTc0Y2IgbGVnYWN5LXRydW5rCis0MzM4NyBiOTQyNjA5M2Q3ZWE2N2FkMTk5Y2U5YzE5NDMzMWZmMWY2YTJlNjdiIHJlbGVhc2UyNC1tYWludAorNDMzODkgNjNjNDQyMjY2NzA1NmI2YzFjMTFhZTZkNmU5N2E0OTc3MWY0MGEwNSByZWxlYXNlMjQtbWFpbnQKKzQzMzkwIDhjY2EyNDkyNjI2Y2U0MDhjZDU2NzExMDgxMWMwNjkyZmQxZDM3ZGQgcmVsZWFzZTI0LW1haW50Cis0MzM5MSA3NjJlNWI4ZDE4OWRhZWEwN2RmMTRlOTc3MGFiNWU4OWRhZGViOWUwIGxlZ2FjeS10cnVuaworNDMzOTMgZWZkMTQxY2JmNmNiMzc2OTQwMTA4NjA0MjBhNGI0MjQxNGMyNDVhMyBsZWdhY3ktdHJ1bmsKKzQzMzk0IGJiMWI0ODUxNjEzMTdmZWMwYTJiMjcwOTBkMGZkMTA3NTIwYTM0MDQgbGVnYWN5LXRydW5rCis0MzM5NSA0ZTFhZmYwZTIwZDE4ZmI3NDgyODBjYTNkYTdmZmE3N2QxMmQ0ODJlIGxlZ2FjeS10cnVuaworNDMzOTYgY2NiZGNmYzQwYzgxYzQ2OGI4MmQ3NTA0NjczYTIyMGZhNmEwMTE0ZiBsZWdhY3ktdHJ1bmsKKzQzMzk3IGVlNGE2MGM3MTM1NzEyN2Y3ZTU4MTQ2MjdhYmJlOWY3ZDE5MGU4MzEgbGVnYWN5LXRydW5rCis0MzM5OSA5YzY5Mzc4NTE2YWIwZmJiNTg4MmI3OGU5OTMxZTE5MDdjOWM3NWIzIGxlZ2FjeS10cnVuaworNDM0MDAgNTIwMzM3NmYxNTg5MmNiZGU5NGZhMDFlODlmNzdmODZhMjVjZDM2MiBsZWdhY3ktdHJ1bmsKKzQzNDA0IGVmODA1OWY4N2ZkMmY5MmViZDQxMTM3ODExNjc3NjU4ODgzMmUyYzcgbGVnYWN5LXRydW5rCis0MzQwNSBhMTU3ZjVhNjlkMzVjNjA5MDhlYTA2M2Y5YTdiMDlkZWE2OTI3NDE3IGxlZ2FjeS10cnVuaworNDM0MDcgYWIzZWZiY2E1YzkyMDk4NDE4Njg3NDBlOTc2NzE4OWI5NDg4YjEwNiBsZWdhY3ktdHJ1bmsKKzQzNDA4IGU0OTQ1NWU5NGJlZTI4OGYwOTRmNzkzNDkyODI0ZTM1ZGEwZDdmYmQgbGVnYWN5LXRydW5rCis0MzQwOSAxZjYxYWE0NmZlZTViM2QzMDIyODAxNDU0ZTk5YjExNDc3YTA5NmEwIGxlZ2FjeS10cnVuaworNDM0MTAgNDM3ZDI3NmM3MzJjN2JkYTc5MzVkYTgwNjI4Y2VkM2Y3ZjU2NTZmMyBsZWdhY3ktdHJ1bmsKKzQzNDExIDg5MTQyY2FkY2ZiOWU3NDc2OTEzOGNlNTc5ZWM3ZTQ3OTQ1OWVmODEgbGVnYWN5LXRydW5rCis0MzQxNCA5M2JhMTU2MTlmNWFhYzkyNzhlZjRmNDgyOTIwMGNlZjMxYWE2MWJmIHJlbGVhc2UyNC1tYWludAorNDM0MjAgNjBiZTNmMzlhNzJiZGY4NThhMTgwODRjMTk3NWRlNDc2MzNiNTVkMiByZWxlYXNlMjQtbWFpbnQKKzQzNDIxIDFjYTAxMmNlNDI3ZTMzNjRhYzUwZWI2MWY1NzQ3ZTJmZWQ1Y2FkYWIgbGVnYWN5LXRydW5rCis0MzQzNSBiODVhZDIxNjZjMDFiZTdhZDBlZTIwZTRjMzQ0MmE2M2U1MWQwYTk3IGxlZ2FjeS10cnVuaworNDM0MzYgYjhkMWE0NWEzMDU3MzI5NjM4ZWZiNDJiYjgzMmIxMWI2MTQ5NmM1MSBsZWdhY3ktdHJ1bmsKKzQzNDM3IDgxZDYxMTlkYmM2NmI1N2RhYTkzM2MwNDBhMDI5OGRmZDAxMzM4NjAgcmVsZWFzZTI0LW1haW50Cis0MzQzOCBlZmIwOWRiYWE0MGU2N2RiOTk2MmQ0YWRkNWMwZDc5MDYxNWQwNTM5IGxlZ2FjeS10cnVuaworNDM0MzkgYWNjZTA0MGUwYTFhYWJiMGNiZjQwMDIwYzdlYWFhNTI3ZDcwZGU5YSBsZWdhY3ktdHJ1bmsKKzQzNDQxIDQ0ZTZmYzhkMDJlMWMxZmM4Zjc5MjBmMGM4MTE3MDljNGM4ODJlMjAgbGVnYWN5LXRydW5rCis0MzQ0MyAyNDM0N2U0NjU2YTRmZDI1ZDNiMWVmMjA0ODNjODJmN2EzYThjYmI2IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDQgZTllODA5OGY2NTcyNDhlNjFiM2E4MjRhMTgwMWNmOTA2NjgyNTEwOCBsZWdhY3ktdHJ1bmsKKzQzNDQ1IGYyODRlODU0ZmU3MmVjNDdjMzBhNTY4ZDQwZjhkNWRkOWM0NTgxZTMgbGVnYWN5LXRydW5rCis0MzQ0NiBlMTU2YzU4MTRmY2NiYzUwNjVhZTQzZTEzYzhjZDRmMmIwZWI2MDIwIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDcgMDhiZjExMjJjMTQ0MGYyNzViM2FjZDBmOWJlZjQ0MzE1NWNkYmFhNyBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDQ4IGZiN2I1MmM0MTE2YzM2M2ZmOTEyMjI3YTMzZjY2ZWQxMGEyOWI4MzkgbGVnYWN5LXRydW5rCis0MzQ0OSAxMzNkNGJiNjFiYWIyZjNhMTEzOTBmMDQ0NGRkM2MzMDNmZjM1ZTAxIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTAgOTU1YTg2ZjhhMTQwYzAyNjgwZDE5MGRmNGEyZDVhMWU5ZjU0YzNjYiBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDUxIDc4Y2FjMjBmOTY0MmQ3MmQ2MTBjMmM0YWRkNmZiMDMxNjZiYWRkOWIgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1MiA2OTE4Nzc5OWE5ZjZiZTdkZjgwZjYyYzViNWU5Y2M5MjE3ZmJiNjgzIGxlZ2FjeS10cnVuaworNDM0NTMgNzlhMGYwODBmODk4YzI1NGJjYTk5OWI5ZDNjMzM3M2QxYzg5ZjRiYSBsZWdhY3ktdHJ1bmsKKzQzNDU0IDVlMWI2ZjU1Mzc2MzEzYzVhYzViYThhMjVlNDEyYmM2MDg3N2M2NmIgbGVnYWN5LXRydW5rCis0MzQ1NSA4NDk2N2ExOTYyY2JiMmE1Yzc0MjdhM2VhNDRhN2Y1MzI1M2NkMjU3IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTYgY2U1NmM1ZTNjYjIwNTBlYWVkMGFhZjQ1MWU4MmIxY2Y4OGVjODY1NSBsZWdhY3ktdHJ1bmsKKzQzNDU3IGU1OGE3MWE4NTUwZTdjOTM3YjYyMGFkYzM4OGNkYTVjNzFjMmZlNGUgbGVnYWN5LXRydW5rCis0MzQ1OCBhYWEwNGJmYWZjNTg1NWExZmQ1ZjQ0NzMzNDVhZGRjYTYxNjJjMDQyIGxlZ2FjeS10cnVuaworNDM0NTkgMjM1ZjYzNWFjNDVhMDQ4NzBiZGE4ODgwOTJkZDQ2ODExN2QyZGI3YSBwM3lrCis0MzQ2MCAzNjE5MGQ3ZmQ4YWIyZWFhYzk4YTY0NWMzMTAxMmYzZjY0MDdmYTUwIGxlZ2FjeS10cnVuaworNDM0NjEgMDg5OWE4MDRhNTk0Y2NmOTI4YmJlNjkyZTU5ODMxZTdmZTljZWU1ZCBsZWdhY3ktdHJ1bmsKKzQzNDYyIDYxNDUyYmQxMjVlNWUxMDZhZDk0NmExODI1OTJlMzNmNDBkZmY4MzkgbGVnYWN5LXRydW5rCis0MzQ2MyAyMjhlMjVjOTNhOTc5M2I2ODk1Y2M0MzZjMzRlZDIxOTYyYzdhNmQwIGxlZ2FjeS10cnVuaworNDM0NjQgYzcyYmM4NDcwZjZjOWViODI0ZjdjOTA1OTg2NGExMjljNzYwMjY1NSBsZWdhY3ktdHJ1bmsKKzQzNDY1IDE5MDU5ZGY0NWNmZTkwMmYwZTA5MDk4NjFkMWQzOTYxOTUwY2U1NGIgbGVnYWN5LXRydW5rCis0MzQ2NiAwNDk2MDY5MzMzMjhlODkwODIxZTEzMzI5MGJjOTk3NGQ1MzU3MDQ2IGxlZ2FjeS10cnVuaworNDM0NjcgZjVlNzkyYTkzYzQzMWE0ZGIwZmZmNTU1NjhiOGI4MDJlZTEwOTkyZSBsZWdhY3ktdHJ1bmsKKzQzNDY4IDk4ZjVjOTE4YTI0YWNiOTMxZTFmNzdiZWJmMzA4NDM5MDZmNDQ1NjkgbGVnYWN5LXRydW5rCis0MzQ2OSAyMDJmZTRhYWZjYmIyYzA4MjMwY2E5OTZiYmMzMWE0ZWU3ZWUwYzEyIGxlZ2FjeS10cnVuaworNDM0NzAgZDE5OTNlZThhYzQxMWQxZmMxMjE3NmRiNDI4Y2QwMmEwZmFlOGQ1YSBsZWdhY3ktdHJ1bmsKKzQzNDcxIGNiMjY0NWE1NTRkODgyYWY3YTJiN2FmZDJjYmUxMjczZTU4ODhjMWUgc3FsaXRlLWludGVncmF0aW9uCis0MzQ3MiAwZDNlNWFjMDcyYjJhMTdiNDllMzczMDI1MDU5MGFjYTgzNzYzZGE5IGxlZ2FjeS10cnVuaworNDM0NzMgMzJlNzY3Njk5MDAxNGJkMWE5NTQxMzk3NTU3YzFjYTRhZmI2MjBjNiBsZWdhY3ktdHJ1bmsKKzQzNDc0IDE2NGY5NWU4ZTBjY2I1MDY4ZGVjZDIwZDVhY2VhMDBhYWZmN2VkYzMgbGVnYWN5LXRydW5rCis0MzQ3NiBjNDk4OGFjNTg5OTk3OTBlNTFmZjQzYWVhNjQ2ODY3YjEwOWMyNzg4IGxlZ2FjeS10cnVuaworNDM0NzcgZDY1YTljOWM4YTdhMmVhMzcxNzM0NmE0YzRmMWFjZjAzYjZlY2NmMSBsZWdhY3ktdHJ1bmsKKzQzNDc4IDU5OTEyYjQ4MTJlNmFkODVlZTRjNjc1MWNiZWU3MzJlMGE2Njg1ODYgcmVsZWFzZTI0LW1haW50Cis0MzQ3OSBmYjdkODk1YTg4OTdmNTNlMzZlODg0YjNjNGM5NDg3NTYzYmRkOWY5IGxlZ2FjeS10cnVuaworNDM0ODAgODY2ZGE3ZjMwZTU2ODYwYTYxMTg2YzgwYTZlMTVjYTFiOThlNGUxMCBsZWdhY3ktdHJ1bmsKKzQzNDgxIDY3MTkyZGEzZTY5Yzk4NWJiMTI3MmRhOTMyZDdkZTYwNzMwMzNmYWQgbGVnYWN5LXRydW5rCis0MzQ4MiBjNzcxMTVkZGRiZTE2ZGY1MmZiZjY4MjI0OWRmYTJhM2JjNWI1NTg4IGxlZ2FjeS10cnVuaworNDM0ODMgYWFjMDA1ZThiYjgwMDc5MDNlZDJlNTBlNzFmNTlmYjk4OWQ1NjAwNiBsZWdhY3ktdHJ1bmsKKzQzNDg0IGI4MGI1Zjg0YWU1NGYyZDQ1MjMxNWNmNjg4YmU0MTc3NGMwN2NiM2UgbGVnYWN5LXRydW5rCis0MzQ4NSBhN2VjNzhmOGQwODY2ZTY4ODJmODhkNThmMDNiZjgwMGYxYTZjYzk0IGxlZ2FjeS10cnVuaworNDM0ODYgYTQ5NTBlYTU1NmI1MzQzOWI5NTgxNzJhYmY5YjkxNmIwNzBjNDZlNCBsZWdhY3ktdHJ1bmsKKzQzNDg3IDc1ZjllYjAxMTIyNmUxZjNlZjdhZTFjNTZhYTYwYTYxMWZmMDkwYWUgbGVnYWN5LXRydW5rCis0MzQ4OCA2YzZiMjAwNDQzZTM2YzdiNDRlMDkxNjFjZGM3YjI4NTVlNTYxNTEwIGxlZ2FjeS10cnVuaworNDM0ODkgYzlhNjI3Mzc3NWI1MDNjNDFmNmRiYzZkNWY3YzRjNDAyNzgzOGVjNiBsZWdhY3ktdHJ1bmsKKzQzNDkwIGRhNzcwNjU5Zjc3Yjg0MmYxMmFlNGY2ZTBmOGViMmM0NmU2NzBiNmQgbGVnYWN5LXRydW5rCis0MzQ5MSA2ZmVmOTU3NzEyYjkwNmNmM2NkMjQ2MGY5MTQwNmJmZWEwMmQ2Y2NkIGxlZ2FjeS10cnVuaworNDM0OTIgYTYxZDNhZmRmYzRiNDkzYzk4MzA0ZDc3ZjQ2ZjFiOTI1ZmEyYWNlZiByZWxlYXNlMjQtbWFpbnQKKzQzNDkzIGYzMzAwNDhkOGJkZjgyMDI0MTRhMzM2NGNhZDI0ZjE5NTEyMGU2ZWUgbGVnYWN5LXRydW5rCis0MzQ5NCBkNjEwZmNkYjg5ZjdlYmIxYmY4MDlmNTIyMjBhNWJjYjZhZjk5OTlhIHJlbGVhc2UyNC1tYWludAorNDM0OTUgZmUzYjkzYzIyNDgxNGYzNjBlYjYwYjM1YjEwZDFjOThiNmQyYzhmMSBsZWdhY3ktdHJ1bmsKKzQzNDk2IGM2Y2YxMWFjYjQxZmIzMGJlODQ0ZjM3ZTRhNTNhZjljY2FkMGEyNDYgbGVnYWN5LXRydW5rCis0MzQ5NyBlNjBjOGI5YjJiNGYzZWRlZDVjOTBjMDMxZWFmMzBlMWVlMWJiN2UwIGxlZ2FjeS10cnVuaworNDM0OTggY2MzNWQzYTg3OWFkNDk0Y2UzMTU4ZmMyYmI2NTRkYWYxMjJhYmI0NSBsZWdhY3ktdHJ1bmsKKzQzNDk5IDM4NTBhNDQzNDgzYTFmYTJjZmNkYzA1Y2M4ZTNmNDUxNjY5ODJjMmMgbGVnYWN5LXRydW5rCis0MzUwMCAzNzA0MDQ1OWJmMmU0MWE4NDUwODFhZjc5YmZhMWJjODYzN2UzMWQ4IHJlbGVhc2UyNC1tYWludAorNDM1MDEgYTI0Y2JmOTRiYjhlMGNkNDU4MzUyODZjMmU0NzM5ZWFhZjUzODU3NyBsZWdhY3ktdHJ1bmsKKzQzNTAyIGJmNjY0YTE2MGZjMGFkYzc0M2NkZWI4Y2Q4YTk0ZTk5NDRmZmJkNWUgcmVsZWFzZTI0LW1haW50Cis0MzUwMyAyOTE0ZTdiNGQyNWE0MDA3MGZiNWE4MGUzZjhhZjljZjg2MzdlMmE5IGxlZ2FjeS10cnVuaworNDM1MDQgNDM2YjAzZmZhOGEyNDhmZDYyNjExY2NkZDk2ZWMxNDRjMTllNDQ1MiBsZWdhY3ktdHJ1bmsKKzQzNTA1IDRhOGVmNzBkZTIxMmU0MmMyY2VhMTlmYjY2Njg2YzJjMzAyZTdlYmUgcmVsZWFzZTI0LW1haW50Cis0MzUwNiAwMTZkM2QyM2ZmNTJkYzRkYmYwYzQxMzQ0NWFmMGIxNzIyZGM3ZTkwIGxlZ2FjeS10cnVuaworNDM1MDcgYTdmOGIwYmU1OTdlNTczODRmMWVmMWYxYTkzMjE1MjFjYzRmYmIyZiByZWxlYXNlMjQtbWFpbnQKKzQzNTA4IDQ3ZmJiYTg0OWE2YzgxOTczMDg4YTRmOTRiYjE5ZGE1NzUxYmUyMGEgbGVnYWN5LXRydW5rCis0MzUwOSA4NjcwYTI3MDFhMGY5NmYyYjg2ZDU5NWFhMjYxNWE0YmI5ODBjZjUzIHJlbGVhc2UyNC1tYWludAorNDM1MTAgZmFiNjcyYzNkZGU2NTg3NDMyNTk3Y2NlMDlmODVmZWRmM2EwZTQ4NCBsZWdhY3ktdHJ1bmsKKzQzNTExIDQ2MmM5ZDJhMDdiYjM3Y2EyODZjYjJjNDZmNDUyOTFmMDRlZWYwNTcgcmVsZWFzZTI0LW1haW50Cis0MzUxMiA5ODI1MTc4MDIzNmQ3ZjQ0YWI0YjAyOWEwMGMzMjhiNzczZWQxMWQ5IGxlZ2FjeS10cnVuaworNDM1MTMgZjA1YmQ5OGQ5MzVkNTZmNWVjMThiNTU1YTA1NjgzYWMxNDliNWZjMiByZWxlYXNlMjQtbWFpbnQKKzQzNTE0IGU1NDYyNzRkNjUwM2VhMjIxMzQ1ODBiNTc2ODA3YjFiM2ZiMjQ5NTQgbGVnYWN5LXRydW5rCis0MzUxNSA1OTE4NWZmYTg2MWRhMGYxNjBlM2E5YzI2MGRmMjVmNDVjMTc1MmY0IGxlZ2FjeS10cnVuaworNDM1MTYgYjQ3ZDgyMTllY2Q2MWZkYWY5MDY3ODc2MGU4MzMyMjBmZGQzNDUzNSBsZWdhY3ktdHJ1bmsKKzQzNTE3IDM1Y2Y5MTI5NzY5M2VmMDRmZmY2YTQ0ZDUyMDQ5NjY4ZmIyN2QzMjIgcmVsZWFzZTI0LW1haW50Cis0MzUxOCBiODIzZjVmZTk4MGNjMzlmMGI4NDUxMjExMTRmY2VmODI0OTEwMGZiIGxlZ2FjeS10cnVuaworNDM1MTkgYTUzM2Q1YjVkYjg0MDE0ZTczODVhMmIzMjE5NDczMmI1Y2Y4Mzc4MSByZWxlYXNlMjQtbWFpbnQKKzQzNTIwIDA1OTE0ZThkZWQ3M2VkYjk5ZWFhMzRmYWNkMjMzNGY1MDNiODk3MmUgbGVnYWN5LXRydW5rCis0MzUyMSA4NThhZTk1NGYwNTU4NzY0NzMzNzlmOTg3NmE4NjI4ZDZmYjJiYzFhIGxlZ2FjeS10cnVuaworNDM1MjIgODcwZDU2YTNhMjBiZTQ4NWE2Y2YyYzA3YWQxZjc0ZDAwNTc3MWE2NiByZWxlYXNlMjQtbWFpbnQKKzQzNTIzIDQ5MjA0NDAzNGE4N2JiYjRlYTQ1ZDk1YzdiYWJjMjZmNTM4ZmZlYTAgbGVnYWN5LXRydW5rCis0MzUyNCA0MjMxMmU1ZjExZmQxMTViMzA4MjI1MWJlMWM1MjIzNTlkYzcxMmYyIHJlbGVhc2UyNC1tYWludAorNDM1MjUgZjY0ODEyYjJiNWMxY2I0ZDE5NjkyY2E4MjZhMzI1NDgwNzUwYmJmNyBsZWdhY3ktdHJ1bmsKKzQzNTI2IGIwNjhhZWUxZGZiNWIzNTYyNGUwMThjZTEyZWQ4NDRhM2FlY2FmZjAgcmVsZWFzZTI0LW1haW50Cis0MzUyNyA2ZjA4NjNiZWRjZWEzMmQxY2YzM2RkNGE4MmM3YThmY2U2YzFmYTBiIGxlZ2FjeS10cnVuaworNDM1MjggYjA5ODFmMGMxOGZlYjZlYzNlN2Y2MWU2Mjc0NTRjMDFlZjYxODhmYiByZWxlYXNlMjQtbWFpbnQKKzQzNTI5IDhkMDU3OWQyYjY2Mjc5MmEzZTkwNWQwM2E2MzFiMzc1MGVhZjFiOWIgbGVnYWN5LXRydW5rCis0MzUzMCA4MjNjNDhkNjg3MWVjNzkzYWYzYWI1ODRiMjAyYWI1Zjk5MWQ0YmI2IHJlbGVhc2UyNC1tYWludAorNDM1MzEgMmNjZTliY2RjOWY2NDU5NWJhNTFjYThlZmE4NzJlM2U2OTMzMTFkMiBsZWdhY3ktdHJ1bmsKKzQzNTMyIDVmMzU3ZTYwY2RkZWE1OWNmMTUxZGIwOTI3MjcxZTZjMzVkODQ2MWYgbGVnYWN5LXRydW5rCis0MzUzMyA5MWU5ZmI1Y2ZlMTQyNTViMzk2MzhkZTc3ZGYxYjBmNDJlM2E4YzM3IGxlZ2FjeS10cnVuaworNDM1MzQgODM5ODgzNTRiNjRkOWE4OGJmYWVjMzA0NjFjNTlkNzRjZGQ5ZDYxZiBsZWdhY3ktdHJ1bmsKKzQzNTM1IGI3MzE3NGFmMjZhOWI1ZDdlYTkzZjBmYmY4ODJmMDJmZjgxM2RlOTcgcmVsZWFzZTI0LW1haW50Cis0MzUzNiBmYWI0NjkzNjFiYmMwZTRiOTk4YjVkZTEyYjFkMGQ2NTBkYTEwY2RjIGxlZ2FjeS10cnVuaworNDM1MzcgYWNlNjdlM2JjYTY4MzJlMTRiYTRlYWM1YTVkZGJiMGJhYTc3NGVmZCByZWxlYXNlMjQtbWFpbnQKKzQzNTM4IDNhODFkY2VhYTlhOGJlNDEzYTdlZjdlOGMzMzFiMzI3NzUyYjVlNTUgbGVnYWN5LXRydW5rCis0MzUzOSA0YWI4ZWM5ZTU5ZGZhZjM0OTFjMzQwNTE1NGZmZTVjMWFiODgwNGM0IGxlZ2FjeS10cnVuaworNDM1NDAgMGU0YjNjYWQ4OWZlNmMyMjZmMGFiMzU2NzZjMjExOGI5NDgxNTU1MiBsZWdhY3ktdHJ1bmsKKzQzNTQyIDNkNGEzZjRmYzk4ZThiMWZhZWE0M2UxZjA2N2NlNmZjMTA4MTRjYzIgbGVnYWN5LXRydW5rCis0MzU0MyA1ZTFjZjIxZDRhYjIzMTkwZWE1M2RhNTlmYTYxNzJhNmI0NDAxNTI2IGxlZ2FjeS10cnVuaworNDM1NDQgNGI2NWFiNDFjNzcxN2ZkNWVhZDM0NjBkODFmNjIyZTM1N2I0Y2I0NiBsZWdhY3ktdHJ1bmsKKzQzNTQ1IGZlOTdjMDAxNmQ0YjEzZmZiNzU3ZjhkOTJjZTQxYjU0MTVkODdkNmYgbGVnYWN5LXRydW5rCis0MzU0NiBhNmJjZTdhZWJlMDViY2ZkM2ExMTNhNjUwMzc5YTYyYmQ5ZGI0YjhhIGxlZ2FjeS10cnVuaworNDM1NDcgNGEyMDZmY2U1ZmU3YTg0MjhkOWFiM2Q0MzcwYjVjMmUzYzhhNzAwNiBsZWdhY3ktdHJ1bmsKKzQzNTQ4IDVhNmM3ZDZkZWYwYzljZTU1YzBlNjg1ZGRlNzkyZmE1MTM4M2QwMDkgbGVnYWN5LXRydW5rCis0MzU0OSAzYWEwYTQ4Mjc4ODhiMjQ0NGU5MGYxMWJjZjdiYTY5ZDBkNTAyMGZlIGxlZ2FjeS10cnVuaworNDM1NTAgODA2OGMyMmMzNzI0ZTZjZmUzNDA4NDlmNGU3MjY5NmQ3ZDU0OGI2YyBsZWdhY3ktdHJ1bmsKKzQzNTUxIDUzZWY2YzM3NzI3MWRmOGRjOGRiM2E1NDhlMDM0Y2I3ZTEwMmYxMzkgcmVsZWFzZTI0LW1haW50Cis0MzU1MiBmNGQ4OGNmYWVjNjBhYzUyMGU3NmQyMmE1MjQwODIxNTlkNjVlMWMyIGxlZ2FjeS10cnVuaworNDM1NTMgNDgzNzcyMmE2MGYwM2Q5NjU2ZmE4ZTA0NzRlNzA2N2VhZTZmZjk5MiBsZWdhY3ktdHJ1bmsKKzQzNTU0IGNmMTBmMjQ0MzU0MmY2ZDJiZTRlNmQ5NzQ1YzRjZTdlNzg1ZmM2OWUgbGVnYWN5LXRydW5rCis0MzU1NSAyY2YzYjVjNDUxZDc0NWIzNTVjM2IyY2E2YmExODIxZWRhYjcyODU3IGxlZ2FjeS10cnVuaworNDM1NTYgMjYwZWUzOTFmOTA4ZjIzZTJlZTY5NzA2Mjc0YzljMzE1YWNlYzg0OSBsZWdhY3ktdHJ1bmsKKzQzNTU3IGEwNjY4NWYwODg4NjdmYTdiYWM3Yjg3YmNjODMwMzU2NDNiZWNlNTggbGVnYWN5LXRydW5rCis0MzU1OCBlOTU1Mjg0Y2Q2OTQwMmRhYjI1ODc3NjNlYzFmMGZlMjFmMzcxZTBmIGxlZ2FjeS10cnVuaworNDM1NTkgODViMjZmNGZhMmE1MDRmZGI1MzRjOWE1MTI2ODY5ZWIwMmI3NjM5YyBsZWdhY3ktdHJ1bmsKKzQzNTYwIDI4MzRjY2Y1NTJmMzdmNjdjZTdhYWRiZTg2MjlmN2NlNDQ4ZmE0MjcgbGVnYWN5LXRydW5rCis0MzU2MSBhNjBhOTQ0M2U4ZGFkOWUyZmQwODg2NGNmOGJhZWFkYmIyYTI0OTg4IGxlZ2FjeS10cnVuaworNDM1NjIgOWMyYTQ2MmQ2NmJiNzNhYWM4YTg0MmQ2MWFlOTUzMDgyZGQ0Yzg2NiBsZWdhY3ktdHJ1bmsKKzQzNTYzIDQwMjBjZjZjMzgzZTA2MDZlNjg1YTQ5NWNiYjBmMDJiOTU4MjE5MmUgbGVnYWN5LXRydW5rCis0MzU2NCBlYTlhMDNiOGI5ZjZiMWVlNjBjZjM1ZjUyMTRlMDYzYTZiMDQyMmIxIGxlZ2FjeS10cnVuaworNDM1NjUgZGZjMzNlYzdmNzNhODVmZWFiMDgyOTA4Y2ExYTgwNzlhZmY4OGMyMyBsZWdhY3ktdHJ1bmsKKzQzNTY2IDc4MjYwNDlhY2I0YjFkM2FjMTEyYzhiNWY3YjBjMjIzOGY1Y2FlZGQgbGVnYWN5LXRydW5rCis0MzU2NyA1MDFmZGE1MTFiMGFiZDRkN2RhZDdmNmYyMzRmOTJmNjQ5NGE0YmI3IGxlZ2FjeS10cnVuaworNDM1NjggMDliOGU1YTEyMTQ2Y2M5OGY5OTczMzhmYzhiNDVhMzAzMDg5MTkzZCBsZWdhY3ktdHJ1bmsKKzQzNTY5IDU0NmI2MzE5MjQwMDYyZTllNjRhN2JhYzJjOTE4ZDcyZDYyZjAyMjkgbGVnYWN5LXRydW5rCis0MzU3MCAxMDA0MGQxODdjMjEwNGY1OGZiYmQ0YjQ2ZmQzNTIwYThhMWVkYTMyIHJlbGVhc2UyNC1tYWludAorNDM1NzIgY2VhNTRjOWQ5MjFkNTdhOThlNDk0ZTNiM2YxZjRiZWRiNDc2NzRiZiBsZWdhY3ktdHJ1bmsKKzQzNTc0IGU4MmFhODA0MTgyMWEzNTkzMzA1MWE3MTVjMmRmMDgxYTVlZmUyYzEgbGVnYWN5LXRydW5rCis0MzU3NSBhMzQ4MTg3MTEzMmNlNjU1YzE0NDc0MjI1NWM3ZmQ4NGQyN2JkN2UwIGxlZ2FjeS10cnVuaworNDM1NzggNzk4NmE1YjEzMWVkMmMwN2Q0OTgyMTcxYTIwMDczYzFmZWZmZjllYiBsZWdhY3ktdHJ1bmsKKzQzNTc5IGU5NTZlMTZlNzQ0NGZiMjRiYzhmZDE0MjY3ZGRhNmFlYTUzZTViNGQgbGVnYWN5LXRydW5rCis0MzU4MSA1N2IxZmYxMzg5OTVlODcwMTlhNTVkNWRjNTNkNGU3YmZmMjA2NDQ1IGxlZ2FjeS10cnVuaworNDM1ODIgM2VlYTY1YmI4OTZlZGMwNjNmMjdhYmYwNTQ4Njc5OWVmYjc0NWE4ZiBsZWdhY3ktdHJ1bmsKKzQzNTgzIDUxMzNiNWIwYjRhODQ1OGRkNWU4NTk3NTBiYTQ1MTc2ZGZmOWYxNTkgbGVnYWN5LXRydW5rCis0MzU4NCBlMTQyNTVkZjdmZDE2MWU4ODBiNDU3YWFmZDZmOWI5MDA5YTljY2M1IGxlZ2FjeS10cnVuaworNDM1ODUgOTJhMTdhMjgyMWUwNGUxNjliYWMxNDU5ODIyMTA4ZGMwMGQ4MTBkNiByZWxlYXNlMjQtbWFpbnQKKzQzNTg2IGViNjlkMmUzMTM0Y2ViMGE1M2Q0NmYyYjk3MmU3YTYyYTE4YTUwNjQgbGVnYWN5LXRydW5rCis0MzU4NyBlODE0YWQ5NzBmYzZhOTE2NWQwNWY0MTM4YTMyNGZmZjE5MmJkNDM0IGxlZ2FjeS10cnVuaworNDM1ODggZmJjNjJkYjk3ZTQzOWM1YmZmMTUyMTVkYjY4Mjg0YjQ0ZWM3YTY1ZCBsZWdhY3ktdHJ1bmsKKzQzNTg5IGE4Y2Q5MDVmZDk2Y2QzZWFkMmVlM2I0YjUzN2Q1NTJjYzg5Yzg4MmIgbGVnYWN5LXRydW5rCis0MzU5MCA3OTZhY2RlNzAxOTU0MTFmMTMwNmMxZjExZWExOGUxMmRhMzUxNGJhIGxlZ2FjeS10cnVuaworNDM1OTEgYmRiZTA3ZDk2YjhlZjRkYjM1Y2ExYTQ3YjExYzNjZjM5NWY2NDJhYSBsZWdhY3ktdHJ1bmsKKzQzNTkyIDAxZmQwOTNiODc4Y2M3NzAyM2Y0NWE2ZDIzMzkyYzEwOTcyYTBmMmYgbGVnYWN5LXRydW5rCis0MzU5MyBiYmUxY2RjOTI2MDUxYWQ4MjhjODA0NWUzMGMwM2RiZWJhZWEyZTZhIGxlZ2FjeS10cnVuaworNDM1OTQgMTE1NDI4YmIxZDNmNjQ1YmU4Zjg4NzgwZGVjNTk1NmVhNmZmNTIyNyBsZWdhY3ktdHJ1bmsKKzQzNTk1IDVjYzZkNzE1MzdhMzFhOTVmM2QzOTBiMWE2NzM3ZGQwNDRmZDJiYTYgbGVnYWN5LXRydW5rCis0MzU5NiA2ZDUwZmQzNjRjZjVjYjU5NmQzZjBkNDJlN2M1NjkxNzg1MTg1YmQ5IGxlZ2FjeS10cnVuaworNDM1OTcgZTQ1N2IyNGY5OGM1MWY3M2Y4MDY5ZWYxYjRmMjkyODczYWJjN2Y4YiByZWxlYXNlMjQtbWFpbnQKKzQzNTk4IDM1YzRiMDkzM2E4YjdlNTlkMTY0YmJiNDNhNWQzZTdhNjUxOTY3YjAgcmVsZWFzZTI0LW1haW50Cis0MzU5OSBmNWFkM2M3ZWMyY2JmNDUzYmZlNWI4YTIyOWI5NWYzOGM2M2FkMzFkIHJlbGVhc2UyNC1tYWludAorNDM2MDAgYmM5ZDUzYzAwZGFkNmMzNjMwMTA0NzhkZDMwNDE2MDJkNWExYjMxNSBsZWdhY3ktdHJ1bmsKKzQzNjAxIGUyYjNhN2Q5YWNhOTE4YWQ1YzUyNjI3MjI1ZjlmNmY3NWFiOTViNzMgcmVsZWFzZTI0LW1haW50Cis0MzYwNCAxMDQ5ZTlhZWIzODUwOWZlZWUxZGE1M2JhMGQxYmVkYzQ4MmIxZTY5IGxlZ2FjeS10cnVuaworNDM2MDYgYTM4MzAzNzdlMWE3OTYyMTljMTI0YmZkY2YyOTBiZTMzMDEyNTFjYiBsZWdhY3ktdHJ1bmsKKzQzNjA3IDJjZDFlNWIxNWUwNTBkZTNiZDZlNGEzY2E3YzM2NWIyYTZlNjMzYWQgbGVnYWN5LXRydW5rCis0MzYwOCAyOWEwNmEyZjNmMmQ4ZjI1ODM3YzY3ODA1ZDEwZTBmMjlkZDk0MDY0IGxlZ2FjeS10cnVuaworNDM2MDkgNjBiZWQ2NDFiNmQwMzMwMDQ0NTNmOGI3Njk0MmNlZDQxMGYzOWMyNSBsZWdhY3ktdHJ1bmsKKzQzNjEwIDVhYTNjZWY0YThhN2I0OTIyYWM4M2I5YTQ1M2Q1YWFmMDdiODEyZGQgbGVnYWN5LXRydW5rCis0MzYxMSA2ZGJlYTkxMWU4ODEwYTRhMjUzMjVhNjZhODA0ZmFkOWM2MWRlZmI3IGxlZ2FjeS10cnVuaworNDM2MTIgMGYzYjdhZmExODdhZTY2YmRjMTc2MGQwZmVlZGJiZGFjODIzNmQ4ZiByZWxlYXNlMjQtbWFpbnQKKzQzNjEzIDQ5ZGJlZGZiMWQ3NDgzMGU2YTE1NTk5MTczNmQ5ZjMzYzFhNGU5NGIgbGVnYWN5LXRydW5rCis0MzYxNCAxNmE2NGUzOTQ2MDIyZmI4YjMxZjZhYzUyNDJhYmFhZWU5Y2U5ZTJhIGxlZ2FjeS10cnVuaworNDM2MTUgZWZmNmM1MzQ4M2ZmMzlhMzI2NDYzZDQ3MDk5ZDYzM2Y2MjNlYzIyNiBsZWdhY3ktdHJ1bmsKKzQzNjE2IDA3ZTQ0ZmQwNmNmNzYzOWU3ODUxOTUyY2M3ZTk3MmRmZmE2NzhjZGUgbGVnYWN5LXRydW5rCis0MzYxNyAyZjU3ZGE5MjFhZWY3YzFlYTY3OTljNzk5YTcyZTU0YWM1NzhiNWNjIGxlZ2FjeS10cnVuaworNDM2MTggZGNjZTgxYjdlNjRkMDNjODU1NDE5YzIyMDdmNDFmN2M5ZjdjMTRmZSByZWxlYXNlMjQtbWFpbnQKKzQzNjIwIGQyNzA1OGM0MDlkZjNjNjk1Y2RjNTA3Mzk5NzMwZDZkY2VkMDU4OTQgbGVnYWN5LXRydW5rCis0MzYyMiBjMWNlZjFkMmRjY2Y0Yjk4NDFmNmQwZTQ0ODcwN2M3YTM1ZjI1YWY1IGxlZ2FjeS10cnVuaworNDM2MjMgZDI2OTdjNTJjY2FlNTliOTJiMDBiNzNhZWVhYTA2MmJiYjkwMTUzZSBsZWdhY3ktdHJ1bmsKKzQzNjI0IDZhYjE1ZmM4NWMyZDBjNjhjNzdjYzY5NWY4N2NkMjZiY2RlOWI3ZmMgbGVnYWN5LXRydW5rCis0MzYyNiBiNjAzMzA3MjkyZmM3NGFlODZhZjZhNTU4ZWUxMDQzN2FkYzhhM2M1IGxlZ2FjeS10cnVuaworNDM2MjcgYWRkMDA3ODcwYmJkYWQzOTA5MjFkOTIwYTY0ZDNkMmEyNTgyNjc5MCBsZWdhY3ktdHJ1bmsKKzQzNjI4IGQzNDUxNjU4ODI3MmFlZTFjODNiOThlNGRiNTQzYmZhODlmY2RhNzkgbGVnYWN5LXRydW5rCis0MzYyOSAyYzM4ZWU0YmRkOGFiMjk1ZTQ5OWFiNTMzNzQ0YjJlY2NjYzFjZGMzIGxlZ2FjeS10cnVuaworNDM2MzAgYzExNWIzYWUxYzE4NzlhM2IwMGJlZDBlNTdiYjdhZWM5NzEwNGE2ZiBsZWdhY3ktdHJ1bmsKKzQzNjMxIDFmMTA5YTQ5NTNjNjlhMjM5MTY5MTE0NGY2NjhiMTFlYjdmOTBlZmUgbGVnYWN5LXRydW5rCis0MzYzMiAwNGFmYjM2NTA4NDc2MGVhY2VhNmRkOGFkY2ZhMjgyN2ZhMDRmYjY0IGxlZ2FjeS10cnVuaworNDM2MzMgYTE3YjUyOTRlOTkzY2E5NmZjMTAxY2U1Yjk4ZGY5OWM5MjIxMzA0NyBsZWdhY3ktdHJ1bmsKKzQzNjM0IDllY2JjZTU1YTQ1NDY1ZDhhMDRiYmU0ZGU5NDA3ZjkyNzI2ZWI3N2IgbGVnYWN5LXRydW5rCis0MzYzNSA4ZWZkZWYyZWNmM2IxOTU4NWQxMjViYmQwMzIyNmQ2NDA5MWY3OWIxIGxlZ2FjeS10cnVuaworNDM2MzYgZjhmYzMwYzBmYzdjMzQ1MjE5M2ExZjhjM2YzYjFlOWI4YTg2Yjc3OSBsZWdhY3ktdHJ1bmsKKzQzNjM4IDIwZmZjMmNhMDNlMGNhNTFiYWY4OTY2MGQ4ZmI5YzNlNjk2NjIwMTEgbGVnYWN5LXRydW5rCis0MzYzOSA2MjU2N2JiZTdkODhkYTU4YjAxNGU5MDM5YzBjYmVjNDczZTdmODA1IGxlZ2FjeS10cnVuaworNDM2NDAgNThiOGQyOTgyMTQ0Zjg4ZDM2NWNiNDk5MmRiOWFhZmE5NDQ2MzY2MCBsZWdhY3ktdHJ1bmsKKzQzNjQxIGU2NTgyOTA1ZWViYTZiNTZiYzdmMjVhM2FkYjg2NDE0ODg4YWI3MjggbGVnYWN5LXRydW5rCis0MzY0MiA5MDNlMzE2MjA5OWUyOTBmODhiMWJlNTE3MTg4ZTFjYzllODAzZmRkIGxlZ2FjeS10cnVuaworNDM2NDQgODUyZjFjMWE4OWI0ZDM0ZTYxNzk4NzE0ODE2MmRiN2E5MmQwMGQzMSBsZWdhY3ktdHJ1bmsKKzQzNjQ1IGU3MDllNjI4ODZlNjAzOTQ1MjM5NTIwNTAzNTkxM2RmYWEyNTdiZDEgbGVnYWN5LXRydW5rCis0MzY0NiBkNmVjYmE1OTZlMWU2ODkxZDA0YTZhMWJkOGU2NzlmMzlhZTdiMGRmIGxlZ2FjeS10cnVuaworNDM2NDcgMjk2MzkyYzcxMDY5MGU2MGRkMTRkM2Q0ZWJiMTEzYzM3ZDVmOTM2MSBsZWdhY3ktdHJ1bmsKKzQzNjQ4IDRhOTk5YzZlMDBjMDJmZGE1YWUwMTM1NWU1OGM1ZDI2ZDg5NjdmMzYgbGVnYWN5LXRydW5rCis0MzY0OSBhOTgyYjAyYmVjMGJmMTg0NTA2MmJmNTg1YTRmZDFhNmExYTUxNWE2IGxlZ2FjeS10cnVuaworNDM2NTAgMTA1YThkZDAxODUxNjY1M2JkMDE1ZjY2NmI3ODNhYWUzYzc5MDY4NCBsZWdhY3ktdHJ1bmsKKzQzNjUxIDg5NmY5ZmVhZDE3ZTcyMGVjNGEyMWRlM2FjMjE0NTE4ZGE4NDg0NWYgbGVnYWN5LXRydW5rCis0MzY1MyBhMGYyYzM4ZDg1ZjQ1M2FjOTZlNTk2ZWZmMjdlMGMwNDEzMzBjOWI1IGxlZ2FjeS10cnVuaworNDM2NTkgMzk1YjFmNWM5NzUxNDkzY2FlNzFiNGU4NDE0MGNhZGYxOTI5NDY2OCBsZWdhY3ktdHJ1bmsKKzQzNjYwIDRiNzYxYTYzMzk5YzQyN2JiNzhiNTNkMmY4NzYyZjJjODQ3ZmE0MDggbGVnYWN5LXRydW5rCis0MzY2MSA2OWY3OTUxNzc2MWQxMmE2M2VlZjA2ZGRkZWQ3OTEwMGExZjUxYTFmIGxlZ2FjeS10cnVuaworNDM2NjIgZGJmNWIyZjJhNDI5MTY4NzAxNzQyNzZkMWE4YzY1ZjAzNjQzMTQ1YSBsZWdhY3ktdHJ1bmsKKzQzNjYzIDY1MzMzOGFhNjlmMmQ3ZGMwZDE2YmY3MWZlZTY5OGMyMjJiMWU5MjIgcmVsZWFzZTI0LW1haW50Cis0MzY2NSAwOTk5MDY2MTIyNmRiYWE1YzMwZGUxNGM5NDdkYjRkNjAxMDVhZGUzIGxlZ2FjeS10cnVuaworNDM2NjYgZWQ2ZmU3MjkxMDgzOTk4ZTU2YzM1OWZmNjcyMTk0YzA3MTBlNDMyYiBsZWdhY3ktdHJ1bmsKKzQzNjY3IDk3NmMwMTA5MWIzODVkZWQ5MDQ1MmUxYmY1ZjU4NDgyNTM1YWU4YTMgbGVnYWN5LXRydW5rCis0MzY2OCBkMzk2OWFlYmE3NzdkMTAwNmNkZjk5ZGI0NjBhOGRjOGE0MGUzODcyIGxlZ2FjeS10cnVuaworNDM2NjkgNDg5OGYxOTZhMjRkZWJjZWQ1YjQ4NTg3NTYwODc0NWEzODNhYTRkNCBsZWdhY3ktdHJ1bmsKKzQzNjcwIDNkNGYzNTNjM2Q0ZmIyNjk0OTYyYjI1NjRkNzllZDk3N2IyMGIyYWUgbGVnYWN5LXRydW5rCis0MzY3MSA0OGQxMmRlZjMyYjNjOGNlYjk5NDQ3ZjAwZjdmYWJiNmRlN2EzZTdmIGxlZ2FjeS10cnVuaworNDM2NzUgOTdiYzM0OGRiYzVkZjJkOWQ4NjE5MGNhYTM0MTk2NjEwOWU0ZWJjMiBsZWdhY3ktdHJ1bmsKKzQzNjc4IDVlYzg4ODNhMmVmOWExNjQyYjZjMDdmY2JkNzY4ZjQwN2Q3MTU0ZjcgbGVnYWN5LXRydW5rCis0MzY3OSBmNjYzNWYzMDQ2OTVlNjZiZjU5NTkzOGRmNzczYzIwOWVkOWM0ZGIwIGxlZ2FjeS10cnVuaworNDM2ODAgNDhjZGUyZjhkNTBlMWYxMzkzMjFkNDRjZjNmZjc3OGJmY2E0N2ZmOCByZWxlYXNlMjQtbWFpbnQKKzQzNjgxIDM2OWJiNWY2N2VmNjg1N2QzMTUwYjQwYjNiNTdhZWE4M2EyMjA4YjkgbGVnYWN5LXRydW5rCis0MzY4MiA5NjBiZjZhYTg1NGRkNjY1Y2NmYWI5ZGIzODhhOGIxMTBlNjA4NmYxIGxlZ2FjeS10cnVuaworNDM2ODQgZmM4YzkwYTQ0ZTY4Yjc5MzI3OWIzZjUwZGZjMzNiN2QxY2M2YmRjMiBsZWdhY3ktdHJ1bmsKKzQzNjg1IDFkYWY0ZjdiMzAyMTZhMTFkYmIyMWMxNjljZTJhNjEzZGRmZmQzYWUgcmVsZWFzZTI0LW1haW50Cis0MzY4NiA1YjExOWYyNTZjZGU1ZWIxMWE2ZGYyYTIxYmY2YTBmNWI0ZWJmNTY3IGxlZ2FjeS10cnVuaworNDM2ODcgZDVjYjc3MjMyMmJmNjdjMzMzNGMzMTA1OGUzOGUwNTEzZjkxMTUxMSByZWxlYXNlMjQtbWFpbnQKKzQzNjg4IDNmMDk1YzU1YzJkOWIxZDRkN2MxN2UxN2FlNDkxODM4YjAxNDBhNGIgbGVnYWN5LXRydW5rCis0MzY4OSA0Mjg0ODc5YTE4ZWFkODYzZWZmNGNkNzEyODczMDI3MzQ4NWUzYTY1IHJlbGVhc2UyNC1tYWludAorNDM2OTAgYWQ0Zjc1NTBkOGE0MDYyNThhZThjNmI5Y2RkMGIxOTU4MjhlNjQxMiBsZWdhY3ktdHJ1bmsKKzQzNjkxIGQxZGRhMTE0OGYxMDk2OWI4ZTEyNWYxNDdhNDAwMGZhNzIyOGYzN2UgbGVnYWN5LXRydW5rCis0MzY5MiBkMDMyMDFmMmY5YzI0YTU5M2I4OTg4NjRmMzg2NGNjOTkyZWQ3MmQ5IGxlZ2FjeS10cnVuaworNDM2OTMgMmIwYTVlZWMwMjhiMDdkZmNkYWEwYjZjMDdlODdkYzIxNDI0ODJjZCBsZWdhY3ktdHJ1bmsKKzQzNjk0IGMxNmI3NTJlZTkzYmMyYWRhNjFmNTFlMzM3MjI4ZWI3ZjRlZTYxNDMgbGVnYWN5LXRydW5rCis0MzY5NSA3Y2QzYmYyMzk5ZTYyMGE2MzQyYmZiZWJhOTIwZWQ0MGZmOTNmMGU4IGxlZ2FjeS10cnVuaworNDM2OTYgY2U0YWY1NDE2ZDc2NWViNWZhODk3ZGZlMThhNWU0YzNjZjg1YzA4OCBsZWdhY3ktdHJ1bmsKKzQzNjk3IDc5ZDNjNGFkOTMxMDliNzk5YTliOWZlMTBmMDFlMWZlOGEyZmRmZTcgbGVnYWN5LXRydW5rCis0MzY5OCBmZjcxODdkY2EyZjFhZjQxMWEzZTNlMDMzNjk0OTU3NjI1MTVjNGY3IGxlZ2FjeS10cnVuaworNDM2OTkgMjExNDEwMzdhMTIzM2JkOTRlZTI4YmQwNDBkM2ZmZWMzMmM4NzBhZCBsZWdhY3ktdHJ1bmsKKzQzNzAwIDdjNDA0OGVjMGM2ODhjNWU1NmE0NDlkYTA2ZTc1NDc0OTdjMWE4NTMgcmVsZWFzZTI0LW1haW50Cis0MzcwMSA1NTU2Y2U5OWYyMGM0ODQ2Zjc4ZDU2YWE3MzU0YWE0NzcxOTdlZDQ2IGxlZ2FjeS10cnVuaworNDM3MDIgMGEwMTQ4ODQwMTdjZGNjNjNlMWU1MzNhMDUwNDBjMzgxYWM0ZjU2OCByZWxlYXNlMjQtbWFpbnQKKzQzNzA0IDAxODQ1YTI0N2M4YjE1NWU2YTY2MDMwNGZlY2RlYjljODJmZWEyOWUgbGVnYWN5LXRydW5rCis0MzcwNSA4Yzc4Mjg4ZDBkYmJiMTRiODFmMTA4ODQ0ZjM2ZWZiNjhjOGU5NmM2IHJlbGVhc2UyNC1tYWludAorNDM3MDcgYjQzZGI4N2E5NzUyMzk3ZWIxNWY1Yjg1NTA1NDcxYTcxYWZmOGEzOSBsZWdhY3ktdHJ1bmsKKzQzNzA4IDBhZTFmYWY0MTFmZmYyMjQxNWFjOGVlNGQ5NjFiMzMyZTEyYzU2MzEgbGVnYWN5LXRydW5rCis0MzcwOSAwYTQ1Y2IzMGI2NGUwYmVjMDkzYTZkNzg5MWY5ZjU4YWZmYzIzZjliIGxlZ2FjeS10cnVuaworNDM3MTQgYTlkZjliMGJhNDE2NWU0YzhhNWUwZWYxOTViM2M5ZDFiODVmMGViNiBsZWdhY3ktdHJ1bmsKKzQzNzE1IDNjN2VhNTA1MThiZTIyMTVjYzNiMTIxOTZmYmY5ZDg4ZjFkMDdiOGQgbGVnYWN5LXRydW5rCis0MzcxNiBkMjJjYjE0ZGE2NzE0M2U3ODA4YTgyMjYxMjNiNjAwNTg1YTUxYzg3IGxlZ2FjeS10cnVuaworNDM3MTcgMTU4M2QzZmRkZGNkNzZhODAyOWI4ZWMzYzhkYmJkNjZmOWY4MmJkMSBsZWdhY3ktdHJ1bmsKKzQzNzE4IGE5NDcwZWI2MzdmMTk0ODgwNzcxYzgwMTU0YzEzZWFjYzlkOWNjYTQgbGVnYWN5LXRydW5rCis0MzcxOSA4NjlmM2M5ZDc0MDE0MDBlZTEwYzRhOTViZjVjYmYzZDQ4YmEwYzk1IGxlZ2FjeS10cnVuaworNDM3MjAgZjhjNGFhNTQxM2RiYTBmNmQ4YzIzN2FiYjUwMTlkNWFhYjBkN2EwMiBsZWdhY3ktdHJ1bmsKKzQzNzIxIDliZWQzMGRmN2E0YWVhOTQ4MzZlOTZlYzU1Y2Q5OTMwMDI0OTljZjIgbGVnYWN5LXRydW5rCis0MzcyMiA1YmMyYjRlM2ZmYzE2NDVmMmJlM2NhMWRjZmFkY2FjNjRhOTFhZGFhIGxlZ2FjeS10cnVuaworNDM3MjkgOTAwNmY5MjIzZDgwYjVjNDZkNmU1NGFjZTQ2ZjE3MTJjYzRjMjUyZiBsZWdhY3ktdHJ1bmsKKzQzNzMwIDE0OWZlNjg0ZTQwMTYwOTZiZDZhNTJkMWY3N2JlODNiNWZkYzFlZWMgcmVsZWFzZTI0LW1haW50Cis0MzczMSBiMzY2NmM1ZGRkOGEwYThiYzhjYjJlZTU4YjNlNDQzYjY4YTE0NmEyIGxlZ2FjeS10cnVuaworNDM3MzIgNzA3MzEyNTJkYTM0NjkzMDY1NDYzY2M0YzBkZjg3YWUwNjA5N2Y4NSByZWxlYXNlMjQtbWFpbnQKKzQzNzM0IGMxN2M1MjE5MzE2OWVlNDRjNzUyMjFmMzkyZjcwMzBlMDQzMTEwYTkgbGVnYWN5LXRydW5rCis0MzczNSBhN2Q2ODhlYmUzZTFhMjAzMjhmOTQ0ZWE4NWU2Y2VhY2NhNTIzZTYwIHJlbGVhc2UyNC1tYWludAorNDM3MzYgNDMxNjEzYmM5MzVlOTVhMzY4ZmUxMmVlMGU3Y2JhMjMyNzIxYzA1NiByZWxlYXNlMjQtbWFpbnQKKzQzNzM3IDcwOTI2NjI2YzZhMGEzNDAwMGU0NGYyYWU2Y2RjMzI4ZmY3OWU5YzEgc3RkbGliLWNsZWFudXAKKzQzNzM4IGJhOGYyNzY0YWE0YWMwOTAwMWZlODk5MzE4YmY0MDQxNzZmYjg1NjQgc3RkbGliLWNsZWFudXAKKzQzNzM5IGE4ZDQ5MjgyOTJkOGIyYjIyOGFiMGU1YTJhOTU4YjJhOGQyMDA4ZmIgbGVnYWN5LXRydW5rCis0Mzc0MCBlZGM2YTBjYzg0NjZiZTYxZWY0ZTE4ODExMTVlMWRhMjhlMDQyOTE5IGxlZ2FjeS10cnVuaworNDM3NDEgNDgzMTE0MDFhMjBlYTM2NmE1ZTE1ZmJhNzUzYjBkOTBhZGE3N2U3NyBsZWdhY3ktdHJ1bmsKKzQzNzQyIGYxYzQ0MDZiZjQ4MWVhZDIzNDU5YTJhN2ViM2EyNThmYWIxNmQwYjAgbGVnYWN5LXRydW5rCis0Mzc0MyBiMDUyOGU4YzZiNzg0NGQ5NTM2N2UyN2JkNzE2M2VmNDIzZTliOTg5IGxlZ2FjeS10cnVuaworNDM3NDQgMDM0MmM1ZjBmNGZmNjVjMzZmMmY4NWRiMGRmNjcyNTcwOTFiMzk2NSBsZWdhY3ktdHJ1bmsKKzQzNzQ2IDA0NmU2ZTM0ODM4MTc2OTU0MjdiMjRkODM5MGQ3ZjgwYjg2ZjZkM2MgbGVnYWN5LXRydW5rCis0Mzc0NyAyY2RmNTI3YjU4ZjZhMjlhYmJmNjE2MzIxOTNkZmZjMTRiYmM0NjEwIHJlbGVhc2UyNC1tYWludAorNDM3NDggMzk1OTgxMGJjNTQ5MTMyNjkyYzNmNDNhMmQ0YTNjZDQ3YzEzZjFiNiBsZWdhY3ktdHJ1bmsKKzQ1MjIxIDM2YmNiODNlY2JhZDUzZWI2M2UyM2RhNDM0MDQ5OTRjOGYwOTYwMTQgbGVnYWN5LXRydW5rCis0NTIyMyAyMzFlNDJkMDM2MmVkMjY3ZDNiMzUzMjU4NGE2Zjc0OTU5ODlhYjRhIGxlZ2FjeS10cnVuaworNDUyMjQgOWJkYTViYTQxNjc3Y2Y2YjMxNDAzZDVlYjRmOTU4OWRiNTgwZjhlOCBsZWdhY3ktdHJ1bmsKKzQ1MjI1IDZhZTRhZGVmYzU3M2I4ZWIwNmM5ZGFhNTU4ZTQ5ZWQ4OWI3NmQ4MzQgbGVnYWN5LXRydW5rCis0NTIyNiAyODZjODE2ODk4MjZjYWJiMTU3NzJmMmExOTIxYTg2NTA4NDQxYTQ2IGxlZ2FjeS10cnVuaworNDUyMjcgYTc4YmMwYmIzNDU5NjJlNjkwMjljZTNjMDk5MDg4OGIxNGFkY2E3OSBsZWdhY3ktdHJ1bmsKKzQ1MjI5IGViMGI5OTI3ZmZmZDAyNTI3NmE5NmRkYzI0MGFhZTI4NDhhOGM0OGUgbGVnYWN5LXRydW5rCis0NTIzMiBiZDM3NTc3NzkzMmQ5MWEzZmIwMDk0OTJiMjA4ZmRkYWY5N2VhNzA5IGxlZ2FjeS10cnVuaworNDUyMzMgMGYyZTg2ZDA4ZDhhZmYyMmYwOTI5YzdkOTkxN2I2ZDkwZDIxNWU5YSBsZWdhY3ktdHJ1bmsKKzQ1MjM0IDQyMDIzZjViN2Q2ZDFkZDczYjFlNDkxZTdmOTczMjFkOGEyOGRmYjcgbGVnYWN5LXRydW5rCis0NTIzNSBjNzgyY2Y2YjUxNmU0MmU4NzcxNGE5ZDdjNWZmNjU0N2JmM2EwN2Q4IGxlZ2FjeS10cnVuaworNDUyMzYgODA5NGNjMGM5OGQ3YTY0MmNhMzlhYTcwOWQwY2I4ODQ1OTdhNGQzNCBsZWdhY3ktdHJ1bmsKKzQ1MjM3IDMzNDIzYjg0NTU1NDA5NmIyMDIxYTNlMWZmOGE4NGMwOGM0MDBkN2MgbGVnYWN5LXRydW5rCis0NTIzOCAzZDYwMTUxMzkyYzIyNTdkNmI2YTU3OWRhMjk5ZjcwMTZmM2NmZmRhIGxlZ2FjeS10cnVuaworNDUyMzkgMjEzYzQxOThmZTIzZDliZDU4NTg1ZTYxZjM4YzQ3Mjc3MWE2NGNjYyBsZWdhY3ktdHJ1bmsKKzQ1MjQwIGI3NDQwYWI1Y2Q3MDZmNDkwZmFjODcwNDdiM2YyN2JiOTk5YWFhODYgbGVnYWN5LXRydW5rCis0NTI0MSA1YjM1MWRkN2QwODE1ZGUwZTIxOGI2N2Y4ZTVkMGM5YmVmZWYzOGUwIGxlZ2FjeS10cnVuaworNDUyNDIgMGJjM2Y3NGE0YTQ3MTg0MTllYjJjZTk2MGZhZDJlZTdjZGJiMWEyMCBsZWdhY3ktdHJ1bmsKKzQ1MjQzIDJlMjM0ZjRmZDc2Mzk5MDczNmRlNmQ0OWQ0MzYyMDk4MDdmNGE3NmMgbGVnYWN5LXRydW5rCis0NTI0NSBmNmExZjU1ZDNlNWNlNmJiOTNkYzg4ZTU4OGIxN2U4NDM2MjZlY2E3IGxlZ2FjeS10cnVuaworNDUyNDYgZGQwODVjMTNjNDlhNzVlODRiZjc1NmFiZTRkYjBlNmRhMmM2NjE0ZSBsZWdhY3ktdHJ1bmsKKzQ1MjQ3IGRjOWEzNmM4YjQ3MzBhYmM4ZjkzNWZlZGE2YTYzMTM0YjRkNDFkM2MgbGVnYWN5LXRydW5rCis0NTI0OCBkMTEzNjZmN2UxZTdhNTg2OTIxMjYwYTBhNWZjYWI5ZDM5MWM1OGMwIGxlZ2FjeS10cnVuaworNDUyNDkgN2NiNmEzMDQ0NjBmYzAwYWIwYjk0OGQ2OTg2ZTJiN2M3NWE3YjQ0OCBsZWdhY3ktdHJ1bmsKKzQ1MjUwIGUyOWNkZjg2NzhmZTk4ZTJkZjBkZTE3MGUzN2I5YzViY2MyMjk4NmYgbGVnYWN5LXRydW5rCis0NTI1MSAwMGJmOGYwMGVjNjMyNzU3MTg2YzU5MjBhYTU5M2RjYmU4ZTE1MzYyIGxlZ2FjeS10cnVuaworNDUyNTIgMDcyMDUwNjE1ZmMwYzE2NmNiN2Q1MGQ3NjRjZTc5M2ZlN2M1NmJiYyBsZWdhY3ktdHJ1bmsKKzQ1MjUzIGIxMTJkOGM3OTg4YzMxN2MwZGZhOWI2OTYyNTAwZWIxYmRhMzgxODYgbGVnYWN5LXRydW5rCis0NTI1NCAwYWY3ZjE4MDg3YTFmZmZhZjQyNzhhYzM2YjUwY2UxMTc3MzQwMjU2IGxlZ2FjeS10cnVuaworNDUyNTUgMWEzZTc5OWQwNjM0MWI0MTM5NTEyYTAxMDY5NWM2YWIxMzM0NzBhYSBsZWdhY3ktdHJ1bmsKKzQ1MjU2IDNiNGZkYzc1YmUxMmNlNzFhYTRlMTE5NWJjNjgwN2M5ZDY1MjZmZjEgbGVnYWN5LXRydW5rCis0NTI1NyAyOTI4NTRjNDNiOTliOWYzNTkxYWNmM2NlZjJkN2ZhOGE3YTYwYTJhIGxlZ2FjeS10cnVuaworNDUyNTggMWNlZDc5ZjA4MDUwOWM0NDRkZDUxNDExNTQ3YjcxMzEzMTgwOWEyNyBsZWdhY3ktdHJ1bmsKKzQ1MjU5IGE4NDE2YWQxYTVjNTljMzQwNzczZTVhNzg1MzdmMWJiMDZjN2QwYTggbGVnYWN5LXRydW5rCis0NTI2MCAxM2RkMzA5NzRhZDY5MTJlOWQxODY5MDE5YmJlZDdjM2Q2MGJmMjJkIHJlbGVhc2UyNC1tYWludAorNDUyNjEgYWVlZTg1YjZhNWRkODhhZDFlYzgxNTIzZGZlYTJkYWFkYjk0ZTE2MCBsZWdhY3ktdHJ1bmsKKzQ1MjYyIGY3N2RiYzBmOThlMzQzNTIxZmJkODQ2MzNlZDBmZGM3ZDc4ZDk2NjAgbGVnYWN5LXRydW5rCis0NTI2MyBhZGRlOWRlMTAyODdhZDQ1ZDk3MmI1ODZjZDdjNjQzYzdlOTZkNWVjIHJlbGVhc2UyNC1tYWludAorNDUyNjQgOTI0NTA0YjAwMTk2NDkwNDFmZDUzZWYyNzQyOWM4MGQ3ZDlkZTBmZSBsZWdhY3ktdHJ1bmsKKzQ1MjY1IGFlZDFjM2MzNWI4MzYzZTgzNTg3ZTkxMDEzMmExYzFkZjMxYTVjYzYgbGVnYWN5LXRydW5rCis0NTI2NiA2ZGQwZDhiNGJhYzU3NGNlNGQwNjg1MjlkYTlkYjE0YTkyMmUwNzc4IGxlZ2FjeS10cnVuaworNDUyNjcgMDU5MWQwMzIyZjA0YzI0ZGE1ZmI4YjczMThjMjdlZGNkZmI4MTVhMCBsZWdhY3ktdHJ1bmsKKzQ1MjY5IDFiMDc4NDkzZDUzODJiODNmNTMzMzY3ZmMyYWM1YmVkOWE3ZTRjZjcgbGVnYWN5LXRydW5rCis0NTI3MCAyYjJlOWMzODhmYmJlMjI1NTZjOThlZjk3MDdkMDMxNmZiZTY5YTQxIGxlZ2FjeS10cnVuaworNDUyNzEgNTZlMDBjOWI1MDExNzM0NjQ5MjBiNGNmNWU3YmZmNGMxYjYyNmY2MCBsZWdhY3ktdHJ1bmsKKzQ1MjcyIDQ0ZmIwM2E2YTUyNDk3MDg3ZTBlZDJiNjZjYjg3MzA5NmMwMjZmYjkgbGVnYWN5LXRydW5rCis0NTI3MyBjNGM1ZWViMDc3MzlhYjQxMDU1Mzc2ZWFlNTdlMzc0NjcxZjM0MDVhIGxlZ2FjeS10cnVuaworNDUyNzQgZjc2YjVkOTg3MzE0ZDc0NDc1ODBmNTVlN2FlOWVhZWFlMGU4NTk1YiBsZWdhY3ktdHJ1bmsKKzQ1Mjc1IGNhOTVhZDViMGZiYzYxZjllZDExNWVlNjAwODZkYTI3MjdlN2EzODcgbGVnYWN5LXRydW5rCis0NTI3NiAzOGFjYjkxODI0ZmNjNTczNTRmM2M3YmZiNWRjOGY4NWQzNjYzZjE2IGxlZ2FjeS10cnVuaworNDUyNzcgYzczMmY2NmM5MTNmZDM2MmJhYmExYzViMWE0YzA1ZDgyNjQyODEyNiBsZWdhY3ktdHJ1bmsKKzQ1Mjc4IGUwNzBjMzE2ZWI0NTU5YThmZTg5OTM0ZTAzYzZiNzU2MDZiNzVkMjQgbGVnYWN5LXRydW5rCis0NTI3OSBmNDQ4ZDAwNzU2OTFmOTUyZDdjZDRiZjhiMDkwYWNmZTRjYzA5ZGQwIGxlZ2FjeS10cnVuaworNDUyODAgNDgwYTU2MjVlMjg2OTIwMTc0NDcwMjE0NWQyNjVlNDk5OThiMGFmNiBsZWdhY3ktdHJ1bmsKKzQ1MjgxIGI3NGQzYWRiZjg4ODVlZmJkYTI0ZmU5MjhkMzFjMTZjZDk5N2ViYjkgbGVnYWN5LXRydW5rCis0NTI4MiBlNjBiMzE2NDdhNmIzMWQwN2ExNzUxNTk2NTc5ZTNhZGY2ZDg1NjQyIGxlZ2FjeS10cnVuaworNDUyODMgN2VkMGYwMDNiYTYzMTM2YTE1ODgyMDMxODdiZDYxZTMxZThjY2IwNCBsZWdhY3ktdHJ1bmsKKzQ1Mjg0IDdhZmFhNzUyYzc3MjA4ZTMzZjdkMGQ1Zjc2NTk2MGE2YTg4MzhjOGQgbGVnYWN5LXRydW5rCis0NTI4NSBjZDE5NWUwNzNkZDQ2NWQwZjVhMDBmYmUyYjg4NjEwNjQ2ZWU0NWVjIGxlZ2FjeS10cnVuaworNDUyODYgMGNhNTExMmUzZTEyOWEzZDA4NDUwOGQwZTU3YTc3ZTRkYzQyY2QwZiBsZWdhY3ktdHJ1bmsKKzQ1Mjg3IDcyY2ViMWIzMGQ0YmJjMjJhZWVkYzU1NzAyMzc0MzczZjE3NGI4ODkgbGVnYWN5LXRydW5rCis0NTI4OCAxOWQ5OWIzMTU1NWNlYmNmMGU4Y2Y0NjBlYTNmNjdkODhhNDU1NWMwIGxlZ2FjeS10cnVuaworNDUyODkgMWU5ZDdlNjZjMWJjZmE2YmFjY2ZkZjI1ODUxMDQ4MWFkMGNiMGVkNyBsZWdhY3ktdHJ1bmsKKzQ1MjkwIDg5NjhiMTI0MmYxODk5NGIzOWQzMTE0YTViZjUxYjY1YWIxOWM5Y2IgbGVnYWN5LXRydW5rCis0NTI5MSA2ZmJjMTFhMDNiY2MyYTNiNjg0OTdmYzUwMjI5OGQ3ZmVlYTExYjVlIGxlZ2FjeS10cnVuaworNDUyOTIgZjE5YWRkZDY5YWQ5MzlmMjBhNDUzNDJiN2RjYjdlZmJjMjg5NTA0MSBsZWdhY3ktdHJ1bmsKKzQ1MjkzIGI0M2E5NzAyNjQ3OTAzZjUyNDU5MmQ4M2RmOWFlNGY1MWQyODgwOGQgbGVnYWN5LXRydW5rCis0NTI5NCAxNTcxNzlkMmE0YzM1MjJlMmY0Nzc3NjFhNTlhYTM4MDQ3MDE2YmYxIGxlZ2FjeS10cnVuaworNDUyOTYgOGExODgwMzZiNzEzYjRhY2Y4MDFhOWU4NmQ3YzE0MjNlNjhkNGY3YyBsZWdhY3ktdHJ1bmsKKzQ1Mjk3IDJmZDZhZDU4MjIwMzJmYmE4YWU2ZDUyZDAwOGFhNTc5Mzk5OWEzMWIgbGVnYWN5LXRydW5rCis0NTI5OCBlODA4ZTJhZjkxZjYzNDliZDNkZmNmMWJiNzA2YWM0NzUzZTFlYTIzIGxlZ2FjeS10cnVuaworNDUyOTkgYzhhMDlmZDRmMTBkYTdlZTEwM2JkMTliM2JiZmZiMTk2OTY3ZDlmOSBsZWdhY3ktdHJ1bmsKKzQ1MzAwIGMyNmY1ZTIwNmRlNzlkNTQ4OWM0NTE4ZDRkZGRmYjA5NmFmYjk2MGIgbGVnYWN5LXRydW5rCis0NTMwMSBhNTM5MmJiMDc0NDAyOWNmMTViMTcxNzQ2ZTMxNzMyMWRlN2IzMTFhIHJlbGVhc2UyNC1tYWludAorNDUzMDIgMGRkMzJhNmIyOTY0ZTIzNDIxMDgxYzM3OTZlMjNlNWZkYjQ2ZTJlYyBsZWdhY3ktdHJ1bmsKKzQ1MzAzIDI4OTExNmE1MmJiMWU4ZTY3YTFkNzIyNTM0MTgxZWM0ZTEyYjVmMWUgbGVnYWN5LXRydW5rCis0NTMwNCAxZTEyZWM0OWRmOWI0ZGI5ODQzMDQ0ODQ4N2MwZDJiNTFkNzA2NjU5IHJlbGVhc2UyNC1tYWludAorNDUzMDUgMzk5YTlhNzIwOTVmOTMwYTIzMjNhNjY4M2U3N2FmOGUzOWZlZGIxZiBsZWdhY3ktdHJ1bmsKKzQ1MzA2IDE3ZjhhZGNjNzNlZDg2YjhmNThjMmQ3ZGJhNjMwMzA4NWNhMmQ1OWEgbGVnYWN5LXRydW5rCis0NTMwNyBhZjA1NmI2M2NlNTM2MDQzMGMxMDFmODFmNTg3ZTVjMDY2MTdmYjA1IGxlZ2FjeS10cnVuaworNDUzMDggODgzMWZkODIyYjYwNWRkYWJlYjhjODQ0M2IwNDIxZmIzYmU4MjcxMCBsZWdhY3ktdHJ1bmsKKzQ1MzA5IDc2OWM2MjYxMzU1ZTkzOWEyYmUwNmMzMGEyOTY3YjY0YTU0NjA0NTEgbGVnYWN5LXRydW5rCis0NTMxMCAyZThhYjc5N2NlYWY5ZDc0OGQ4NWNlZDJhYTVkY2I3ZDQ2NGE0NGJjIGxlZ2FjeS10cnVuaworNDUzMTEgOWE2YTAzNzVlZjIyOTVlYWY5MWQyMDM0NmFhYzIyOGFkMjc1N2VkYyByZWxlYXNlMjQtbWFpbnQKKzQ1MzEyIDY1ZWNiODNlYTdkZGZkMjMyZWU4MGUxYjQ5NDQ5YzNlYzRhNzU1Y2EgbGVnYWN5LXRydW5rCis0NTMxMyBiYzRmYmJiMmRiMzAwOWYwYWI3YzBmYTA4OWY2NzA5ZDUyNTBkYWJiIHJlbGVhc2UyNC1tYWludAorNDUzMTQgZmVkMjk3YzIwNjJkOTI4YTAwNDY1MDk5YjcxZGU1NjMzYjkxMjM2YyBsZWdhY3ktdHJ1bmsKKzQ1MzE1IDM2ZTE3NjJlYWQ4NmI4MGIwYWNmOTZkN2IyODU2NDIyMjY5ODhkYjggbGVnYWN5LXRydW5rCis0NTMxNiAyMmYyYzkyYTFkYTdmOTY1ZmFmY2NlZjY2MmNiNjY2YjBlOWNkY2E4IGxlZ2FjeS10cnVuaworNDUzMTcgYWQ0ODZlNDg3NWM2ZTE4M2I1MGYzMWQ3NzRiZDE4NmYxNGYzZTZmNiBsZWdhY3ktdHJ1bmsKKzQ1MzE4IGM2ZTExZjgwNGQwMGY3NjNmNDAxNWY4ODJhMzVlMzU5YWNjNzU5M2IgbGVnYWN5LXRydW5rCis0NTMxOSAyYzA2NTg4YWU2OWU2MjgyZWZmZGU1YzY2MzBlYTY5OWU0ZjZjYzZmIGxlZ2FjeS10cnVuaworNDUzMjAgNDIyY2RkMjRhZjQ2YzQ3NGU0Mzk3NGUyNjc3NjQxNDNkMTI5NjI4YyByZWxlYXNlMjQtbWFpbnQKKzQ1MzIxIDEwZTQ3ZjI3ZWEzOWZhMDc2ODZiMGQ2MGI2NWEwOWNkMTg0Mjc3ZWMgbGVnYWN5LXRydW5rCis0NTMyMiA0NTUxZGE4NDc2NTFhY2MyNjFhMzNiZjJjZmVlN2VhNTgxMDA0YTAwIHJlbGVhc2UyNC1tYWludAorNDUzMjQgMjFmY2M4NmU0ODIwODJiZWM2YmQ4ZDNkMTlkNTMxNWMwMjU0MDYyOCBsZWdhY3ktdHJ1bmsKKzQ1MzI1IDhjOTk4Yzc2MDE5MTBlZDRlY2E1M2U4YTAzMjBlYmI4YTBhOGQxYzYgbGVnYWN5LXRydW5rCis0NTMyNiA3NGQwNDgzOGNkMTEyNzRmYTYxNTM4MDIwOGJjMzZiYTdjODg3ZDBhIHJlbGVhc2UyNC1tYWludAorNDUzMjcgYjVmODk5YzE4N2Q0YzVjZTdhMTdkYTE2OWQ5YTViMzA1NTk5NDdmNiBsZWdhY3ktdHJ1bmsKKzQ1MzI4IDEyNTY3MTg5ZWYyNTcxZmRmYTk2MmRmMzg1YjJhMjcxNDZhMTZmOTIgbGVnYWN5LXRydW5rCis0NTMyOSBkZWMyNTllNGQ4OTE2YzY1ZDAwMDVhZTI0MGYwMzc4Y2FjNWI3ZTI4IGxlZ2FjeS10cnVuaworNDUzMzAgMmYzZjJlMzJkZmQ5ZDc2ZTcxOTg2M2VlMTViZWIwMTE5OTFhYmNkNiBsZWdhY3ktdHJ1bmsKKzQ1MzMxIDdkZjBjNDRmMzk4NjIzNjk4ZGNmMzBmYjhlNzM3MDQxYzc5ZTg2MWQgbGVnYWN5LXRydW5rCis0NTMzMiBiNjMxOWE2OTlkYWJhMWQ1OWVlOTYwMmI5NDkwMGEzMjQwOGQ1MDU3IGxlZ2FjeS10cnVuaworNDUzMzMgMmMwODRkODFjOTUxNDAxZGQwOWUwM2VhZDgyMWYyZjViZjJkZmMzOSBsZWdhY3ktdHJ1bmsKKzQ1MzM0IDA1NGFjZWRmM2MwZDkwYzE0NDE5YjlkZTAxNDgwYTE4ZDQ0YmI5MmIgbGVnYWN5LXRydW5rCis0NTMzNSBmNDViYzI0MWUyMDAwYjJlYTJjN2UzNjE2MWNhMjE1NGVlNzE1ZWQ5IGxlZ2FjeS10cnVuaworNDUzMzYgYjFjNmEzODY0YjFlOGMxNjkwOGVhNzMwYzlkZmFjZDAzMjJlNzQ4ZCBsZWdhY3ktdHJ1bmsKKzQ1MzM3IDA2NzhjZTlmYjZiMmIxMTEwZmI2YjY2OTNlMjM5NmFiMTVjNjVmMGUgbGVnYWN5LXRydW5rCis0NTMzOCBhODQwZTliYWZmOTZjYzk3MjU2ZGFjMmU1ZjRkMDFkMjY2MWZmNjgxIGxlZ2FjeS10cnVuaworNDUzMzkgZDEzZGVkOTE2NWVjNDQxNDFmMDgwYTE2OTE5NTQwMDZiMmUzYjRmYSBsZWdhY3ktdHJ1bmsKKzQ1MzQwIDY2Njc2YThlY2I1MmNlNGMwMzIwZDA1Y2U0ODY4NmJmMzJhZGRmYzIgcmVsZWFzZTI0LW1haW50Cis0NTM0MSA1YTlmY2Q2NzZiM2ZlOWVkMTA4NzFkY2ViZTFmMjMzZmU5MTdiMWQwIGxlZ2FjeS10cnVuaworNDUzNDIgYjE3MjRlOTI2ZTA3YzQ2OTVmNGQwZTU1YjRkOTg4ZjRjYzAwNDZiYSBsZWdhY3ktdHJ1bmsKKzQ1MzQzIDQzNDJlNDQxYjExY2NiNTUwMjhhNWIzY2YyMDAwNzNjMmYzZWI2MzcgbGVnYWN5LXRydW5rCis0NTM0NCBiOTNjMDU5NjBhMTVmYWI2YzdmODZhY2ZmZmVmMjQ1ODJjMzViMzQ4IGxlZ2FjeS10cnVuaworNDUzNDUgMzZiZmU0NmM1YzZhNjNjYmE5MWY2MzNkOTBjMWQzM2RiMGM3ODhjMyBsZWdhY3ktdHJ1bmsKKzQ1MzQ2IDNmOTczOWRlNjYwMzMzNTNjMzg0NWMyNzgxYjEzYjg0YWY0MTgxMjYgbGVnYWN5LXRydW5rCis0NTM0NyAwYTI4ZjE1Nzg3NWUyYzExNDRmODkyMTZiNjEzYzM0Y2U5NTI5MGYyIGxlZ2FjeS10cnVuaworNDUzNDggNjA2ODE4YzMzZTUwZmU2NzIzMDgzMGRkNzU1YjQ4NGRlZmZmZjgwMiBsZWdhY3ktdHJ1bmsKKzQ1MzQ5IGE0MjMxYWEzMjAxYWUxYTM5NGVlNjQzYzVhNDdjN2MxOTRmNjg0Y2EgbGVnYWN5LXRydW5rCis0NTM1MCA4NmRiNmRmMjQxNzQ0OGRhYWMwYTQyZmI1ZDhiODZlYTAwMDk5YjNmIGxlZ2FjeS10cnVuaworNDUzNTEgM2EzOWVkNTk3YjY4YWFmNzYwMzAwOGIzZDQ4NjJiZTg5M2FhZmIxYyBsZWdhY3ktdHJ1bmsKKzQ1MzUyIGU3OTVkNmM4NmE1ZWRlOTg0MWEwYWFhNGNmOTczYWNjMWU4NzllNGIgbGVnYWN5LXRydW5rCis0NTM1MyAzMGQ2YjllYWYwMmRiOGUyOWYzZmFmNjNlYTliMjljZGMyMzVlYWMxIGxlZ2FjeS10cnVuaworNDUzNTQgNTg2NDA5ODNmZDY2YzY5ZTc5YmU5MzEzNzI1ZTU3ZTk3NTY3NWVkNSBsZWdhY3ktdHJ1bmsKKzQ1MzU1IGZlODhlMDFmZjZkZThiNDkyN2JkODcyZTk5MWVlZGRmMmE5YzFkZDAgbGVnYWN5LXRydW5rCis0NTM1NiAyM2VkZjI5MGI2NzZmMjBiOGQ1NTAwNzg4ZWI5YWQyYTk3NzA3ZGQ2IGxlZ2FjeS10cnVuaworNDUzNTcgNWE0Yjk2NDEyMzJmODVmZmM1MDg5OWIxNzA5NGEzZTczNjY2YjY3ZSByZWxlYXNlMjQtbWFpbnQKKzQ1MzU4IDQxMzNlODQxZjBjYjkxZGQxODUyNGY0ZWY3YTFhNWUzOWFmODkwZWIgbGVnYWN5LXRydW5rCis0NTM1OSAzOTliMTE5YzA1OGExYjk2Y2U0MjZiZWI0OWVhYjA0MTYyMzRjYmI5IGxlZ2FjeS10cnVuaworNDUzNjAgNWU3MmIwYzc0MTAwZDc1MGQzYTlkZTlmMDU4OTUxNzBkNTNhYjI0NCBsZWdhY3ktdHJ1bmsKKzQ1MzYxIDk1M2ViM2RjMThlNTQzMWYxMDQ2NTcyMzllYjk5NzNhNzUzNmY1NjkgbGVnYWN5LXRydW5rCis0NTM2MiA5OTc1MTI4OWVhMDNiYWQzNWY1OTllODE1ZWFiYTA2ODc4NTg3MWE3IGxlZ2FjeS10cnVuaworNDUzNjMgYjM1MGU5ZDc5MWU2ZTJlZjczMGVmMjc3ZWU0NzI5OTM2NGI3NWRlOSBsZWdhY3ktdHJ1bmsKKzQ1MzY0IDFiNWIxNmNkYmUwZTFhMGJjYmIzNzQyNmQ2MmZjYzUzNDljZDYzNjMgbGVnYWN5LXRydW5rCis0NTM2NyA3NTFmN2M3OWI1ZmQxNDU5NDI1OGM1YzAxM2Q2NjNiZTU1NTk2MTZlIGxlZ2FjeS10cnVuaworNDUzNjggZWFjODNmZWViMTFmNmM4Y2I0MjI4MGFlOTgwNWJlYzI4MTdiMGIxYiBsZWdhY3ktdHJ1bmsKKzQ1MzY5IDRkN2IyMjM3ZmEwN2YzNzFmODlmZTk1OTA3NWY2MGY2M2ViMWY5OTQgcmVsZWFzZTI0LW1haW50Cis0NTM3MCAzMDhlMmU4ZWQ2NzY2MWEyMmM4OWI5YTE0NTllMmMyOTljMzZlY2FiIGxlZ2FjeS10cnVuaworNDUzNzEgOTFhZWM0NzQ2MjE4NWRlNDM3NDI4YTMyZTM0Y2JjOTE4MDRlOTBlNyBsZWdhY3ktdHJ1bmsKKzQ1MzcyIGFjNzllOTAzN2UwNmNmMzZkMmY5M2RiYjY5NDM3MGRlMWFlNTE0YWMgbGVnYWN5LXRydW5rCis0NTM3MyA3MjA0NzQ4YzI5MjE1ZDhjZjRkNjViYmQ2Nzg1MzgxZTc1NWIyZGE1IGxlZ2FjeS10cnVuaworNDUzNzQgN2VlNDA2OGUyYzYyYTI1MGUyYTllZWMyYmY5OGJiMDkyM2RkNmQwYSBsZWdhY3ktdHJ1bmsKKzQ1Mzc1IDI1NGNjY2I3ZWYxNzY5OWQ5YzgzMTYwMGJjYTg3ZTljN2NkYmE0OTEgbGVnYWN5LXRydW5rCis0NTM3NiBlMDU3YWYyZGZmY2VjMzE4ZTA3ZTFjMDExMzcwOTYxYmY2MzBmNzI4IGxlZ2FjeS10cnVuaworNDUzNzcgZmJjZGY3YzBjYzc0ZDMxMzVjYmUzZTQ4NWQyOGNkZTc3MTU0YTZjNCBsZWdhY3ktdHJ1bmsKKzQ1Mzc4IDBhMGQ4OWQ3MTBhNGRmMTViZTYyYzVmZGVkMTE4OWUwNTAxYWExMzMgbGVnYWN5LXRydW5rCis0NTM3OSA5YjIyZDhiN2JjYWFjNDMzNTYxODBlNjBmNmQ5NzUyYTI2ZjQ5OThjIGxlZ2FjeS10cnVuaworNDUzODAgZWU1NzM0OTc0NGYzNzExYWIzZGUwZTBjNmZhZWMyZDg5NjM5YzkyYyBsZWdhY3ktdHJ1bmsKKzQ1MzgxIGJiM2Y5MDc2ZDA3OWM1ZjQ0M2VlYzFkNTcyYzA4NjI5ZTZjY2YxMTUgcDN5aworNDUzODIgOTE1MGUyNjBjNDE3NGE3NTk5NDA4M2FkNWU1YWZhNDZlZDU4Njc0ZiBsZWdhY3ktdHJ1bmsKKzQ1Mzg0IGQ3MWYyNmU2NDQ4OWViMWY3ZWQzOTRmYTg3YWZjNWFkZTAyMzU2MGUgbGVnYWN5LXRydW5rCis0NTM4NSA3ODZkMDM1NmRlNTEzYTJmYjM0ZjFlMDI0ODk3MGFlZGZhNzEwNTdhIGxlZ2FjeS10cnVuaworNDUzODYgMjMwZmZmNmUwNjE4ZDI0MWIxZWMyNzZiNjhlZTdmNzIzMGI4ZWEwZiBsZWdhY3ktdHJ1bmsKKzQ1Mzg3IDM3YThlYjc0YzUwNDY1MTM2YzU1NDZhOTlhZGZjNmY5M2Q4ZTdhODEgbGVnYWN5LXRydW5rCis0NTM4OCBjY2IzYWY0OWJjYjMwMWM3MjVmYTg1OTFhMzUxYjI2MTllZGQyZWJjIGxlZ2FjeS10cnVuaworNDUzODkgMjMzYjEwZWNmY2VmNjYyZWViOWYxY2E5NGE1MmJjMjI2N2U1NzFkNCBsZWdhY3ktdHJ1bmsKKzQ1MzkwIDliZWYxZGViY2JhYTdmNzc2OTUzMjRhMjkxNWUyMjJiYjNhOTljNjkgbGVnYWN5LXRydW5rCis0NTM5MSA5MWQxNmE4N2NiZThlYTc2ZTcyODI1Yjk3ZjAzZGI4ZjNkY2FjMTNmIGxlZ2FjeS10cnVuaworNDUzOTIgZWM5ODZhYWJlMWZkZWYyNzEwM2FmYTUxNzgzYTlkOWVmYjc2YTExMCBsZWdhY3ktdHJ1bmsKKzQ1MzkzIGFmZTU2YjliNjY0YjI0MTc3NmM1NDUzOGViYWUyZjhkMWMwNTA5MDcgbGVnYWN5LXRydW5rCis0NTM5NCAxZDVhNGM4MjA2MWU2OGRhM2NkMWQ4ZDgyOTEzOTJhODg3Mjk1N2IwIGxlZ2FjeS10cnVuaworNDUzOTUgZDdkYzAwODVkZDg1YzhjNDY0NTAwNzMzYWIzYzk4MGY5MjJhMGU0OCBsZWdhY3ktdHJ1bmsKKzQ1Mzk2IGFmNDdkYTVlOWNlMTRkYjRhY2UyMjBhYjlmZGEwOGUwNDhhZTMwOTggbGVnYWN5LXRydW5rCis0NTQwMSBjZjcxYzM4MTRiMGIzMTc3YzljMDI5MDk0MWFjMmI5YmJlYTAwNjRhIGxlZ2FjeS10cnVuaworNDU0MDIgMTM2NmJmYTA4NGVlNzE3MWE0ZjAyNzgxYmJlOTc5YmE4OWRkZTVjNSBsZWdhY3ktdHJ1bmsKKzQ1NDA2IDg1NmJlZTE1MDBiYmNkZWFjMDE2NmE2MzA5ZTM3ZjM4MTdhZjA3ZjYgbGVnYWN5LXRydW5rCis0NTQwNyA2NDQxZjZmYTY1NzFhN2QyYmEyNjUwZjNmMzRlNmU5MTM4MGVjMzYzIGxlZ2FjeS10cnVuaworNDU0MDggYjk0MGFjNGY5NTU4NmFiYzBhNzg0YWEzNWE0MmM5ZWVhZTJkNmU5ZiBsZWdhY3ktdHJ1bmsKKzQ1NDA5IDMxOTI5ZGEwYjA1YWZhMTI5NTQ2MTdlNDEwZTM4NWU2NmJmNDhlNTMgbGVnYWN5LXRydW5rCis0NTQxMCA2ZTlhYjg3YzYwOGNkOTA1NTM3YTlmY2IwN2RkNTIxOTY5NjYwMjY2IGxlZ2FjeS10cnVuaworNDU0MTEgMjdhNjM5YzQ0NzFhNGUwMDczYjYwOWQwZjZmZTkxZWU2NWMzMzEzNiBsZWdhY3ktdHJ1bmsKKzQ1NDEyIDYyYzkwMzhhNTc4YThhOTIyN2U3MmMwYmUxMTJjNzlhNDIxYzQyZjMgbGVnYWN5LXRydW5rCis0NTQxMyA1ODhmOTdiMjRiZjllMWZmNjU2NzA0YWQ0MzlkMjUyM2ZmNjVkMzkwIGxlZ2FjeS10cnVuaworNDU0MTQgYzZkZjVlNzk1NDIzMDM5YzM4NDhlYWJjNTc5MTEyNjYxNWIwY2JhMCBsZWdhY3ktdHJ1bmsKKzQ1NDE3IDUzMDQwNTllN2RlM2IxYjMzYjI0MDJmZDkwOTEyMmRkOWNkYThkZjMgbGVnYWN5LXRydW5rCis0NTQxOCA5YjE2ZTgxNjFkZjc3N2QxMDE4NmViOTg2MzU4ODVjYmEyYzIwMDUyIHJlbGVhc2UyNC1tYWludAorNDU0MTkgYmZjNDhhZDgxZTgwNGNiMjVkNjU5MzI5NDY3MjBmNTg4NWM3MmQ4NiBsZWdhY3ktdHJ1bmsKKzQ1NDIwIDlmODIxMDMyNTRmYTRlYmVjNTE3OGM0MGFiZWEwMzYwYTEzMzUzMjYgcmVsZWFzZTI0LW1haW50Cis0NTQyMSA0YzZkNDY5OGExMTVkYzc3NzQ1MDJlZjFhNTI3MjU5NGQ4MDJiYmZhIGxlZ2FjeS10cnVuaworNDU0MjIgMDVhZjM5YTkwNzU0MzVkZmIxZmJhNDY2YTkwOWMwZjNjOTMwZDUwZiBwM3lrCis0NTQyMyBiMDI3MGM2ODA0MmVkNDc4NGFjZWM3YWUwMWYxMDg2NjdiODQ5MTZhIHAzeWsKKzQ1NDI0IDBhMTNhOTY1ODVjM2QzNjc2MjkwNjJkZWJlZGEyMGM3MjI0Zjc4NzcgcDN5aworNDU0MjUgNGNjMzRhZjAxOWQyYzI2M2I3NjBmYTFlODc5NTYyYjZmNDc1MTUxMyBwM3lrCis0NTQyNiBmYjJhZmYxODYyZTQ2ZjE4ZDJjY2JiMDJhZGU1NTU1NmJjODVlNmNmIHAzeWsKKzQ1NDI3IDhkYWFlN2JhMDc4YTU1NDUzYWJjNDgwODUxMWI4NTgzNTMzNTEzYjEgcDN5aworNDU0MjggYTY3ZjIxNThkNjFiMWFlYWZmOWJjMzc4YTU3YTc1OWVlMzY2MjJiNyBwM3lrCis0NTQyOSBjNDdjY2NjYTBiZjQzODZmODVlMDZkODU0NTAwNGMzOWJmZTRhZWVmIHAzeWsKKzQ1NDMwIDdjYWU2MjJlZGNjOTc4ZDQxZDMxOGMzYjk3MzJiYTYwY2QwODI5ZDQgcDN5aworNDU0MzEgYTVjOTc3ZTZmNWRhMTQ4YmU3ODM2YzlkOGY1ZDVjMDBiZGJkODQxYyBwM3lrCis0NTQzMiAzNTNmZTA2ZGFiNWIzNzI1YzdhNTA0ZmM1ZWNhM2NiZGQ3NmM0MjRjIGxlZ2FjeS10cnVuaworNDU0MzMgNjM2Y2E4MGE4Y2JlZGM3MDViZTZjNDdmZDAxNThkMTg5M2ZlMjllZCBsZWdhY3ktdHJ1bmsKKzQ1NDM0IGE1OTAyZTBlYzA3YzhiYTg2OWU5Yjc3NWM3OTRjNTEwZDU4MTgxMjkgbGVnYWN5LXRydW5rCis0NTQzNSBkMTU0NzQyNmFiNjEwNmVjYWQyZDNiYjBlZjM2MGY0N2Y2Yzc0NGE5IGxlZ2FjeS10cnVuaworNDU0MzYgMjQwMDk4OTM1Y2Q1ZWJkMThkZGEzMGQxZmY0OWQ4ZTJiOGQxZWVjNyBsZWdhY3ktdHJ1bmsKKzQ1NDM3IDYzMTQ1YzA2ZGVlZWI0ODNmMzRiZjkyODFjMDljNGExZDZhNmQwZWEgbGVnYWN5LXRydW5rCis0NTQzOCAxZDAyMzc0ZjRjN2UxYTVhNDYyMjFjMDZkMWU4Njc1MWQ5OWY3NDgwIGxlZ2FjeS10cnVuaworNDU0MzkgN2Y3Mjc5MWYwYWVjMzJmNjkwNDc4N2E3MmI5NzNhNzc5YjdkNjYyNyBsZWdhY3ktdHJ1bmsKKzQ1NDQwIGFiZjgyNDYxZTZiNGRmNTFmNTExN2YxMjUzNjMxODUyZjE2Yzg1YTMgbGVnYWN5LXRydW5rCis0NTQ0MSA5ZTM4MmYyZjQzOWQ5Nzc1MjMwNjZlNmY1YWQ3YTgxMGI3ZmNkMTFjIGxlZ2FjeS10cnVuaworNDU0NDIgYjczNzNiYzNiMDlmMzM5MmJiYTMyNjJkMTJjZWY3MGE1ZTcxNDQ0NiBsZWdhY3ktdHJ1bmsKKzQ1NDQzIDdiMmU0MzZhNGEyMTFjMmU1N2JmNGE4NGJlMjFmMWE1Y2FjYWM5YjkgbGVnYWN5LXRydW5rCis0NTQ0NCBlMTM4OGFiYTk4OTYyM2NhMDE2YzY3OWY0YjRjNmE2Yzc1ZjM0ZjZkIGxlZ2FjeS10cnVuaworNDU0NDUgOWI3OGRjMDdiMTcwY2M2NjUwNTk0OTYwMTRkZjEwMzYwMjMxNGRmNyBsZWdhY3ktdHJ1bmsKKzQ1NDQ2IDM1M2I1OTY1MWU0NTBlMTQyNjI0MDk0MTQwZTRhNDQzMzJmNDI0MmYgbGVnYWN5LXRydW5rCis0NTQ0NyA5ZWI0ZGMxY2M4M2U3YTYzMTI0YWI4Y2M4MmM4ZmNiMDM5MzcyM2U2IGxlZ2FjeS10cnVuaworNDU0NDggODMzZjM4NGViZDQxYjYzMDJmMmI3MWRkMzc2ZDYyODBmODY0YzU5MSBsZWdhY3ktdHJ1bmsKKzQ1NDQ5IGEzOWNjODRmZjE4NTZjN2FjYzViYzc4MWM2Nzg2MmI3MGM3MDNmZmQgbGVnYWN5LXRydW5rCis0NTQ1MCBiN2EzOTcyZTk5MTU3MjdlOTczYTg0Njg0ZjIwY2NhZDVlNGRhMzk1IGxlZ2FjeS10cnVuaworNDU0NTEgOTZhZGRhYTI1ODY5NzBiMDgwOThmOGRlYTVkMjI3M2UwNzY1ZjA3ZCBsZWdhY3ktdHJ1bmsKKzQ1NDUyIDBhNTRjMTVhYTE0M2M0ZDYwMDIwODEzNmQwMWU3NzZiOTg2N2E2NTggbGVnYWN5LXRydW5rCis0NTQ1MyBmMWM5ODUzZGYwZjdkNGFlNmE0ZGI0OTdjMmViYWFmN2JiZDAwZjZhIGxlZ2FjeS10cnVuaworNDU0NTQgN2NjMzE1MTZmODI1OGZmMTYyODgwMTA3ZGRiZDNhYzZlYTc0NzFmOSBsZWdhY3ktdHJ1bmsKKzQ1NDU1IDM4ZDE3ZDUxZWE5NWQ0NDg3NTA0MWI4OWMwNTAxNjdmMmM3NTE2MGIgbGVnYWN5LXRydW5rCis0NTQ1NiAwMWU1MWY1ZGI4ODFiODViYTFlN2FjOWRkMTM2NTkxMzg0NTllYWM0IGxlZ2FjeS10cnVuaworNDU0NTcgMzFkY2MzMTExMTMzYmU3MDE4ZGMwNGYyZDIxZjdhOGFiNjFiY2NkNyBsZWdhY3ktdHJ1bmsKKzQ1NDU4IDA4NGQxODhlN2RiZWY3YWVkNjk5YWIyN2IwYzcwOGZiNjk3OTY1YmUgbGVnYWN5LXRydW5rCis0NTQ1OSBiOTBhN2M2MDIxYmNjNDIzODJkYTY4OGY0ZjVhZDBiNDQyNjgzMTQ3IGxlZ2FjeS10cnVuaworNDU0NjAgNjA0YzliY2IzMDZjNmQyNmJkMzFiMjJiOTY2NzlmMjA4YWNkMGIyYiBsZWdhY3ktdHJ1bmsKKzQ1NDYxIDViYjZlNTRmOTQwOGY2MTc2YzkwNTlkN2YzYjlkNmVkYjY5ZDI1MWMgbGVnYWN5LXRydW5rCis0NTQ2MiBkOGIyM2JhNGEyNzRlY2Y0ZWQ3NmRkYzU4ZWYwMDM5MTQyZjJiYTc4IGxlZ2FjeS10cnVuaworNDU0NjUgYjAwNDRiYjRkZjJhZWRjZmJmMzExZGY1OTkxZDljZGI1ZDUyYmFiNyBsZWdhY3ktdHJ1bmsKKzQ1NDY2IGQ0YWU1YTI2MTU3ODgyZTFkMTBmNzlhNDI2NmQ5ZjVmOTE5YjA1ZDggcmVsZWFzZTI0LW1haW50Cis0NTQ2NyBiZTIzOGNiMjZkMzI1ZTM1ODMyZDdlOWUxYWU1MGRjYzE4NTNhNDcyIGxlZ2FjeS10cnVuaworNDU0NjggN2JiYjliNWY3YWRjZmQ4ZTE5OTQ0NjU1NDFiNzg0NzhmOGU2MmMzOSBsZWdhY3ktdHJ1bmsKKzQ1NDY5IGI5NWI1YzMzY2IzYTUzMzFiZWE3YzVhYzVmN2UzMTkzMDBhNWRhYzMgbGVnYWN5LXRydW5rCis0NTQ3MCAzMDBiZjFjNGRlZWRlN2MxZDNlYWY3Yzc1ZmU5MmYzNTg4ZGFmNjE5IGxlZ2FjeS10cnVuaworNDU0NzEgZGRmOGM5MTQ1ZjEzNjNlODJmOGM0M2M3YjBhMDlmYmRkM2E5MGFlOCBsZWdhY3ktdHJ1bmsKKzQ1NDcyIGI1ZmNlZjE1ODEzM2E5NzZmNjFmYWJlNjUyZjM4MzFiNTQ2ZDNmOTIgbGVnYWN5LXRydW5rCis0NTQ3MyBlMjM5ZDc0NWM2NDc0MDM3NjAwY2ExNDgzZGEyYzY1ZjFjOGE3ZDUzIGxlZ2FjeS10cnVuaworNDU0NzQgMmM3NmY3MWIyMjNkZTc1YTg4Y2FmOWZjZTY3MTJlMmYyZDkyNTMzNiBsZWdhY3ktdHJ1bmsKKzQ1NDc1IDVjNDUzMzAyZDVmNmEwZWM0MjE0OWFhNjZlN2M1ZDRlNDIxOGNjMGEgbGVnYWN5LXRydW5rCis0NTQ3NiBlYzAwYjc5OGFiNTY5ZWFlODQ3ZWI2ZjZhYzg3ZjE3OGIwZDU4ZWJhIGxlZ2FjeS10cnVuaworNDU0NzcgMzM1MjIzNDIyMTk5Y2U0MzMyODY4ODA2ZjJhODJmZGQwMTE1YjgzMyBsZWdhY3ktdHJ1bmsKKzQ1NDc4IGRkYTdjYzg4YzA1YWFiYzA2MWI5Yjk1ZmM4MTlhYmY0MTU4MzExZGQgbGVnYWN5LXRydW5rCis0NTQ3OSBjMDQxMzZhODA2MmExZGJkNTI1ZjgzYjZhZWE2MWJkYzcwYzhiMjhiIGxlZ2FjeS10cnVuaworNDU0ODAgMzg0ZTkxMjAyNTc4ZjkxNzA1ZGQxMGE5ODMyZWMzNDJmNDcyOWY2YyBsZWdhY3ktdHJ1bmsKKzQ1NDgxIGU4MTliODZhMTUwNmEwMzczNTEzZTMyNmIyYzI5MmFmZjkxOTg5YjMgbGVnYWN5LXRydW5rCis0NTQ4MiBjOTRkNzcwNTA4NWE1NDVjM2Y4MWQ3NmE1NWU4ZmIyYWNhOGQ4NTQxIGxlZ2FjeS10cnVuaworNDU0ODMgMTljMWJhYzE1YmRlYTE0ODczMGQ0OWNiYTMwNTRiYzk3M2Q1YTA0MCBsZWdhY3ktdHJ1bmsKKzQ1NDg0IGIzNzQxNDBlNDY3ZDJlOWEzZmExYjI1OWU3ODVhY2ZhZjQxOTRkNzUgbGVnYWN5LXRydW5rCis0NTQ4NSBmNzk5MWNlNDMxZTUyZWY2NzA3YTVlOWNiNWFiMDI5ZjUwZGNmNjI3IHAzeWsKKzQ1NDg2IDZmMzVmN2JlMzZjM2Q0NWY3OTM4MTM2ZWU3NzQyMTk0NTE5ZDY4YTAgbGVnYWN5LXRydW5rCis0NTQ4NyA4MWJmNGQzNzhiOWU2NzlkNzA0M2I2YjM3ZmI4YTJhZDJhYzBkNzdkIGxlZ2FjeS10cnVuaworNDU0ODggNzAyZDU5N2YyZjY4OWMyY2ZkNGE5YmVmODA3MTdjMTFmNzc5MzBiYiBsZWdhY3ktdHJ1bmsKKzQ1NDg5IGYxMTdhNWZkZTRlNTliZGFlY2EyMGU0ODIwZDRiZGU0N2RhMDE1ZDEgbGVnYWN5LXRydW5rCis0NTQ5MCA0ZDgyMDkzZTJlMTk3ODM2NzE2NmQyZTM4ODczMDcyYTg5MjY0ODVhIGxlZ2FjeS10cnVuaworNDU0OTEgZmJiYzBiZWZmZmY3NzhmYTlhMzhhOGI5MDZhYTk4ZWY5NGJiNDA4ZiBsZWdhY3ktdHJ1bmsKKzQ1NDkyIDE5ZDI0NzdjMTI4MzE2OGI4MTM1MWM5ZTk1OTYwZGIzOGY1MjU4MDYgbGVnYWN5LXRydW5rCis0NTQ5MyA2Y2ZlNDhlNjcyYzRlMDhiODRhZjQ3OWY5ZDA1M2M3NGI2MjNhYjIyIGxlZ2FjeS10cnVuaworNDU0OTQgZWZlNzQ5MjI1YmFlMmM2NTJmODE5OGM1NTg4MGJmMDdhYzM1ZGY0OCBsZWdhY3ktdHJ1bmsKKzQ1NDk1IGRmOWVjYWNiMGJmNjdjMGE1Mzg0MmNhNDZmZDZlYmY4YmI3YWMyZmQgbGVnYWN5LXRydW5rCis0NTQ5NiA1ZjQ1N2Y0MjZkOTE2YzE5OWRhYmYxY2I1MjJkYjM2NzllYTFlOTQyIGxlZ2FjeS10cnVuaworNDU0OTcgY2NjMGI1NDEyNzk5ZWE5MTFhOTM2ZDdhOTM2NDgzN2MwNjJiNjg1YyBsZWdhY3ktdHJ1bmsKKzQ1NDk4IDA4NmQ4NDM0YzdmN2RjMjQ4ODI5NmQwYzg3MDQxZDM0MWRhYTE1MGEgbGVnYWN5LXRydW5rCis0NTQ5OSA1OTk3ZDdjZWQxN2Q3ZGZmMzc4ZmIzMjEyZjgxNjdjOGYwMmRmZmUxIHJlbGVhc2UyNC1tYWludAorNDU1MDAgNmQ4ZTNlNjU5NDdmMmEyNTliYzFlMGQ5NmNjNmNiZDZmNTNkZTdmNiBwM3lrCis0NTUwMSA5Mjc0ODc5ZjA0ODQyOGI4Y2U2ODU2OTJiMWUxMzFkYWNjNjk3MDM4IHAzeWsKKzQ1NTAyIDg1Njk1ZGU2MDQ5ZTAxM2QwNGFmOWRlM2IxMWU1OThmN2MxYTM0YTAgbGVnYWN5LXRydW5rCis0NTUwMyA4NjI1ZTRhNWNlNGQwYmRhNDUyMTc4OTE0N2JhYzYwNGMxNzRmMjI0IGxlZ2FjeS10cnVuaworNDU1MDQgMjBjYjEzYmRmMWYwMDlkNWU5Y2Y3ZDYyYTdkNzA4MTIxMzA2NjQ0MiBsZWdhY3ktdHJ1bmsKKzQ1NTA1IGFjYjYxODM2ZjdmYWFkOWQxMzZjOGQwNDFmMTYwMjBmMzE5NWU4NzEgbGVnYWN5LXRydW5rCis0NTUwNiBjYzkxOTI1MDViNDA1YmM5YzcyMjZmZGJkMjU2YWY1ZWMyNzUzZmIyIGxlZ2FjeS10cnVuaworNDU1MDcgMmUzMjc2ZGMyMzFmNzYwNWUzZGIzM2QxNDNlMmVkNTBjOGU0NTliZiBsZWdhY3ktdHJ1bmsKKzQ1NTA4IDYxYWMxZTMyMmRhNzZkOTdlZTMwN2QxNDllN2ZiMjIwNjY1MDBkZWYgbGVnYWN5LXRydW5rCis0NTUwOSA2ZWI4NmE3MWY1YzgxNjczY2FkMjdmZjI5NWJmOTg1NDUzZGU0ZDY1IGxlZ2FjeS10cnVuaworNDU1MTAgMzEzNTY0ODAyNmM0YWVkNTIxZjJkZGQ0ZmJhM2M3YmEyZjdjN2NjMiBsZWdhY3ktdHJ1bmsKKzQ1NTExIDNlZGUxNzVlYWQzN2E4OTk2ZDU0ZDI5MDJkNGNiZTBlZTljZmIzMGEgbGVnYWN5LXRydW5rCis0NTUxMiBhNWU4Nzk4N2NhZTYzZWE4YzBiNDEzYjdjZjE5MDNkNmRlMDUzZjQyIGxlZ2FjeS10cnVuaworNDU1MTMgZTI1NGI5MjJjNGYzNGVmMGQxYjlkNDAzNjBmM2JmZTQxY2M4MDYxYyBsZWdhY3ktdHJ1bmsKKzQ1NTE2IGZjNTg5NzQxOGYzMWJkNGQ2NmRiZGE2ZmU3ZGU4MmQ4NjBkYzlkM2MgbGVnYWN5LXRydW5rCis0NTUxOCBmNTgzMWZmN2NmYmQyYmFmNDhmNjQ3NDhhMDcxMjBhMDJmODc4ZWI4IHJlbGVhc2UyNC1tYWludAorNDU1MjAgNDU3N2IyNDNiOTgxMzc4ZGZjYTMyNDEwOGU0ODBkN2ZkMmU3OGZlYyBsZWdhY3ktdHJ1bmsKKzQ1NTIzIGJlMmE3ZWM0NjJmZTQxNzlmMmQ0MzEzM2VkYmQ5M2MyZjU3NGMwZjggbGVnYWN5LXRydW5rCis0NTUyNSBmMDQ4MTE2YWFkZTA1NzhjZDJjZDg3ZTg4YWNjMjU4ZTJkZTM4MDZkIGxlZ2FjeS10cnVuaworNDU1MjYgZTg5MmI1NDQyODM1MDhhZWQ1NDZkMWFlMjljNWYxYjY2MmU1NGY0YSBsZWdhY3ktdHJ1bmsKKzQ1NTI3IGQ4MmRjZWQ2ZjFmYTc0MDdhM2VhMTMxYjYzNDgxZTg0OTk3Nzc1NjEgbGVnYWN5LXRydW5rCis0NTUyOCAxNzQwNjJmN2MxYmUwMDY4YTliZjU3OGI4YTViMzI4MTJiMmY2MGZjIGxlZ2FjeS10cnVuaworNDU1MjkgZWU5MGFiMjYwODZhYTQzNTM5ODZkYmJiNzdhZjI0N2ZkMTliMzI3NiBsZWdhY3ktdHJ1bmsKKzQ1NTMwIDMxYjBjZGExMWE2ZDZlYzkyMTdhMjY1ZTBmY2M4NTUzMGM5NTkxZjkgbGVnYWN5LXRydW5rCis0NTUzMSBkNDg4MjQ0ZGYyODg0YjE0NWRmMzgwMmE4YTI0OGJiZmU1YWZlZWZhIGxlZ2FjeS10cnVuaworNDU1MzIgNjM4NjQ0NDU4ZmM3NTI5YzZiMzg5ZjdlYmM3ZGViZWY1NTZlMjQwOCBsZWdhY3ktdHJ1bmsKKzQ1NTMzIDE3Y2NjYTU5MGFlOTM3NzVlODBiMDBiNjFjY2VjNzljOGI0ZmUwYTYgbGVnYWN5LXRydW5rCis0NTUzNCBjYzQ4OTg1YzMyNjZjNDhkMTM3M2Y1NWExNjhjZTM1N2U4OTAwMDMzIGxlZ2FjeS10cnVuaworNDU1MzUgOTEzZDM3OTBmZDk5ZTkxZmE5NTFiMzIwMDRjZjg4ZTgyNDYzM2JiNyBsZWdhY3ktdHJ1bmsKKzQ1NTM3IGUwYTYwMzFkZjdjMGVkZGYzNTFlNmQ3YjI2OTE3YjA5OTc2NDdmMTYgbGVnYWN5LXRydW5rCis0NTUzOSAwYzAxMjJiZDBlYTMxZDZjNGU2OWYzOGY5MTNjMTFlZDEzYmUwMmEyIGxlZ2FjeS10cnVuaworNDU1NDAgMjQwZmU0OTVkMTg2NzBhMjIyYmMyNjNiZmU1YTc5N2NhZTlmMWFkNiByZWxlYXNlMjQtbWFpbnQKKzQ1NTQxIDQ4OGZiYjRjYThlNTE0ZDZmZjBjZDhhNDkzYWU4ODNjMDQ3MGEzYjcgbGVnYWN5LXRydW5rCis0NTU0MiA4NzI1YjkwN2FjYmJmZWRmZGZmMmQ0OWIzYWFmMTQyNzBiZWFiYTNkIGxlZ2FjeS10cnVuaworNDU1NDMgMzVmMjdiYmQ5YWQ4YTJkZjVmNzczNzJiYzU5MjM0MmYxMTU3MmQ5NyBsZWdhY3ktdHJ1bmsKKzQ1NTQ1IGQ2NGJhZGFjNmNmMzEyNjVjOWFlNjU3NGZiMTg2ZDVjOTc5ZjlhYWEgbGVnYWN5LXRydW5rCis0NTU0NiAxMmFiMjBjZDdjMjczYTFjMWMzMzZlY2Q5MWUyYTMzZWFkNGIzMjc0IGxlZ2FjeS10cnVuaworNDU1NDcgZGQ0MTU2YzM2NzAzZmFjZDcyNmRmYjc0MWYxNGUzZGUxYzcwMGJlMCBsZWdhY3ktdHJ1bmsKKzQ1NTQ4IDQxZjEzYjU2ZGMzMmJjZTg0OTZmNzE1MDE3MDU4NDJmOTNmOWU5OWYgbGVnYWN5LXRydW5rCis0NTU1MCBlYmU1OWNkMTgyNzMwMmRlY2U4MGMwOTcwOGVlNjQ3ZjI5ODM4MTI2IHAzeWsKKzQ1NTUxIDE5MDQ1YzVmMGJhMmRhYzYzODU4NDVhYWE4Mjc5MTFjNmNkYmU4YzAgbGVnYWN5LXRydW5rCis0NTU1MyA4MGUwMDM0OTY0N2QwZDM2MTZiMTA2MGU3MzRhZTFiZjRkZmNlNzU3IGxlZ2FjeS10cnVuaworNDU1NjAgMjkyNTdlZjZhYmViN2UwMWQxMzhiZTFiMDlmMjM1ZjkyMTM2NzY2MSBsZWdhY3ktdHJ1bmsKKzQ1NTYyIGI3ZDQ3MWUxMjA0Mjc2YWYyOGU0Y2UyODgxNjBlMDhiNTk5ZGY3YjcgbGVnYWN5LXRydW5rCis0NTU2MyBkYzhlZmQ3MGFiNTY4NjgxMGYxYTY2OTU3NTE3ZjQzMWJhNGZkZmY1IGxlZ2FjeS10cnVuaworNDU1NjQgYWNkOGZiYTYxOTQzMGY4MWJlZDBhZjg0YTYyYjRkMWUzMTZjYzY5NSBsZWdhY3ktdHJ1bmsKKzQ1NTY2IGE0ZDVjZWZjMmRlNDA4NTFjODA3MjJiOGViMzA1NjkxNDQwOTRlZWQgbGVnYWN5LXRydW5rCis0NTU2NyA3NGY0NTlhMjg5YmU5ZGQwYjJmODg0MGM1Mjc3OTBkNjdmZmYwOWQ2IGxlZ2FjeS10cnVuaworNDU1NjggNTY0ZWM5NzM2NWY5ZDlmYWNkYzM0ZjIyNWY3ZDM3ZWFhN2RkNWFiMCBsZWdhY3ktdHJ1bmsKKzQ1NTczIGQ0YWU5YzAzMjViMWE3OWZkOTM5ZTI2ZjQ0M2MyZDcxMGZjMDFlOGQgbGVnYWN5LXRydW5rCis0NTU3NCBlOTZkMWNhZDQ2ODIwNWEzN2M3YzBiYmIzYmIyMzMzMTg1OTM2YjVmIGxlZ2FjeS10cnVuaworNDU1NzUgNDdhYzUyNGRiOGE3YzgzZThkZTRhODlhMTQxZjIwOWYzNWE3ZjQ5NSBsZWdhY3ktdHJ1bmsKKzQ1NTc2IDQ3N2JmOTMwZjNlN2Y0ZWQxMWU1YWJiYjRkMDBhOWRmOWRkYjIxNGIgbGVnYWN5LXRydW5rCis0NTU3OSA3NWU3MDZjMzZjODY0YTE0N2Y2ZTM0Y2FiNjIzMjZhZDRkMGYzMmRmIGxlZ2FjeS10cnVuaworNDU1ODAgZDNlNWM5NTY1ODFjZTJlY2U4MDY3NGRkNmIxMTc2ZDBkMDkyZWI0MSBsZWdhY3ktdHJ1bmsKKzQ1NTgxIGIwZjM3ZjlmYzYzZmY5YjY3MDRmM2U4ZDhjMGQ4OTBkYTNiMDMwZjEgbGVnYWN5LXRydW5rCis0NTU4MiA0Yzg5NDU1MmI5NjgwZjU1YjljNWEzN2VkMmI3YjY1ZWEwOTIwYzcyIGxlZ2FjeS10cnVuaworNDU1ODMgMmZiMTZhNjI5NDE1NzhkYjA3ODdmMWZkYTY1ODg1MDlkMzA2MDY1MiBwM3lrCis0NTU4NyBhYzEyN2NkODY2YTMxMmYyYTNiYzcxYTMxODk0YzJlMmUzMzM2NGY5IGxlZ2FjeS10cnVuaworNDU1ODggYzQzNDFlNmM2YTAzZGU0YjhlZGNmZDM5YTU4YmRiZTk4ZjkzMmU4OCBwM3lrCis0NTU4OSBhNDcxMTdmYTNjYTg4YzQ2MGI1ZWYyOTIzMGI3MGNhNmVlNWY3NzVlIHAzeWsKKzQ1NTkwIGIwZjg4MTQzZGM1Yzk1MDMzNWIzOGVmMjA1MzZhM2Y4ODE2MDk3NTQgbGVnYWN5LXRydW5rCis0NTU5MSBkMzVkYjg0Y2EwNzJjZjQ5YWUyM2Y5NzUzMTQ5NGNiZDY0ZTgxOWU5IGxlZ2FjeS10cnVuaworNDU1OTIgYjlhYWQ2YTc0NDUyZGM1YjcxMGViNWFlYmUzOGM1MzkzNTM4Yzg2YSBwM3lrCis0NTU5MyBhNGM3MGYzOTY4YmU3ZDlmODBhNjNhMmIyNjhlMzc1NTgzMTIzNTQ1IHAzeWsKKzQ1NTk0IDhkZjYwNzk2MzM1NThlNDJlMTk3NDEwNzEzYWYwMjBiMzc1ZjI3NzMgcDN5aworNDU1OTUgNmE0NWYyNmVhNjE5ZTU3MDY5MDM3MGZmODU1OGVhZGVjODVmMDJmZCBwM3lrCis0NTU5NiBiNjhkMjEzNjQ5MTY3MTNiNTNjYmY2NzVmMjE1Mzc2Mzg4ODBiMjE0IGxlZ2FjeS10cnVuaworNDU1OTcgZjczMTg1OWU5YjNiOTEyNjRiMzEyYTgyYzMxMjhkNjZhNDJkOGZmYyBwM3lrCis0NTU5OCA5NmFhNWNlODY0NDU4MDdiZTQ3M2ZlOTMzNTA1OWIxZWY1YmNkMGM3IGxlZ2FjeS10cnVuaworNDU1OTkgNzAyZDg1ZDk0MThhNzQ1NjAzYWZhODUwMGMwNDM2OTBiZjYzNjFjZSBwM3lrCis0NTYwMCBiMjcyNGExMmRkY2U0ZmZjNmYzOTI2NTk2MjcyYzIyZmI0ZjdmZGIyIHAzeWsKKzQ1NjAxIDcyMjQ1MTU5Mjk5ZTAxNTNhZmUyYmMxOTdkNzdmMTFiNTJjODhmM2UgcDN5aworNDU2MDIgYjQ5ODQzYTNhMWRmNGE0YmY1MmQyMjU3ZWEwMDk0NDk5M2VlOGU5NSBsZWdhY3ktdHJ1bmsKKzQ1NjAzIDliYjZlMzVjMWNjNDE4YjgyNWI0NTc5ODE2YjhkMjBjM2QxNjEwNjUgcmVsZWFzZTI0LW1haW50Cis0NTYwNCBjMjhmNzRiZWQ4M2JmODRiZGEwZjZjNGM4MDkwYzY4YjVhMzkzYTc4IGxlZ2FjeS10cnVuaworNDU2MDUgMzAxYzRlZGU0OWRkNmU2MzNmMjlkZDdhZmU1MTAyMTkwZTI4ZWQ1YSBsZWdhY3ktdHJ1bmsKKzQ1NjA2IDViYzkxNWZlZWQxNDBhMWZiODFjYWEwN2NlZmMzYTg2NWYyODRhZjUgbGVnYWN5LXRydW5rCis0NTYwNyA4MTAyNTU3YWZkZjE3NjZlMTRmYjE5OWM3YmNhOWMzMzU0YTYyNTJjIHJlbGVhc2UyNC1tYWludAorNDU2MDggNzQ5YWQyYTM2OTNmMjJiZTdkMDAzNWIyYmNiOGZmMTEyZGU0MTgzYSBsZWdhY3ktdHJ1bmsKKzQ1NjA5IGQ2MmM5ZjY0NjYzODFlNjdkOWEwYzUwODUxNjI0MTY5MmUwNmE1ZGMgbGVnYWN5LXRydW5rCis0NTYxMCBiZDc4NTMzOTRjN2FhNWZhMjk2YTBhMTIyY2U5YWI0NjkwZGE2MjRjIGxlZ2FjeS10cnVuaworNDU2MTEgZDE4YTJjODY2NjA5NWEzN2VlZjhkZDZmODhlMzFjNTQyOGJhYmY4YiBwM3lrCis0NTYxMiA3M2Q4ZTg5Nzc3ZTMzMDI3N2VhNDgzYWY0MDc0OWQ3M2QxNDdkMDE3IGxlZ2FjeS10cnVuaworNDU2MTMgOTFhMDk4MWVjNGMyYzEwNTNlOTY4M2MzOGQyOTQxZGU0MmFhNTQ1ZSBwM3lrCis0NTYxNCBmOWVjYTEzM2NmODg2OWNjNTgyM2Q3ZTc1ZmZmOGY2YmEwNTAwMGUyIGxlZ2FjeS10cnVuaworNDU2MTUgYTMxMjAyYzk0ODVkYWNlYjZkM2RmNDE0MmU0ZmJhNzI5MjAzYmVlZCBwM3lrCis0NTYxNyA3ODE0MGJlNTMxNWJjN2ZmYTQwZmI5ZWM2ZjRhZTQ1OWEzOTE1ODcxIHAzeWsKKzQ1NjE4IDM3YzI4YTZhZDUwMTFjODdlN2ZlNGI4Yjc3Y2IyYzhkMDgzODlkNmUgbGVnYWN5LXRydW5rCis0NTYxOSA1MGUwYmQyZTQ1ODgxNmEyMGVmZGU2NTliYThiOGUxZTVhZmYyZGExIHAzeWsKKzQ1NjIwIGZkNmYxOTBlMjZhOGMxMTllODA2NDhjNjRiYWQxMjE1MTkyZjU3MWYgbGVnYWN5LXRydW5rCis0NTYyMSA1MjU1MTIyMWExMzJkNTUxNzkyYjliZGE2MzBiZTlmMzdjMjVmOTIyIGxlZ2FjeS10cnVuaworNDU2MjIgNTYwODlmYWJhMDU2YTBjMDdiZWUxNTE1NWFjZDk0MDJiMDQ3ZmNkMSBsZWdhY3ktdHJ1bmsKKzQ1NjIzIDA2ZGNkZWRmYzk4ZmE3ZmVkNDY1OGZhNzM3YTRhYzkzNmE5NzRhNDUgcDN5aworNDU2MjQgYzJhZTZkYjMwNTcyYjM4NGU2NzUwMzdhMDI2MTlhNjIzODRmMWFiNSBsZWdhY3ktdHJ1bmsKKzQ1NjI1IGZkMjlhZDBiZWY3MDgzOTVjNGY3OTk2NDY3YmNjNzFjMjM3MjQ5NTggbGVnYWN5LXRydW5rCis0NTYzMCAwZTBlMzE1YjQyMDIzNTdjZTNjNTRmMGRiYjMwODg1ZTkyNzMyZGNlIGxlZ2FjeS10cnVuaworNDU2MzEgYzdlZjkyYjkwNDVjNjg4YTM3YTQ0YzY2NjQ0NDdhNWQ3NjY3YTNjMCBsZWdhY3ktdHJ1bmsKKzQ1NjMyIDcyMDRmYmFjNTc5Y2M4YWM0NWEyZDMwYmM0ZDc1ZDMzOWU4NGRmODcgcmVsZWFzZTI0LW1haW50Cis0NTYzMyA2YzYzNGM2ZDc3ZGQ4ZDNhMDAxOGRhOGEwYjNhZmJjYTRmNTg1MDExIHJlbGVhc2UyNC1tYWludAorNDU2MzQgM2YxNDMxYTllZGNiNzFlOTY5NmViZWIzOWY5MTQ0YTU1MTdlMmNmYiBsZWdhY3ktdHJ1bmsKKzQ1NjM2IDYyOGY0MWE4YjFjZTAzODM4MGRkNGIwZjlmMWZiYTAxZTcxOGIyYTQgbGVnYWN5LXRydW5rCis0NTYzNyA1NGYxNTUzNjlhOWMxMjljMzFjZjk3M2IwNmEwNmUwYzZlMzVmMzcwIHJlbGVhc2UyNC1tYWludAorNDU2MzggZmE2YjQ5YmE5YWU5YjUxOGZiZjE3NTgyOTMxM2Y1MjUwMTcyNGUyZCBsZWdhY3ktdHJ1bmsKKzQ1NjM5IGNlMmVjOGM4MzVlOTM1ZTkwOTcyOTA1NTUxYWE3ZTVkZDQ4MWEwMzcgbGVnYWN5LXRydW5rCis0NTY0MCBkZTRhNWY1NWUyMWRlMTNhNmVlNDgxYjAwZThiYjg3ZDBkY2M1ZTI0IGxlZ2FjeS10cnVuaworNDU2NDEgZmIxODM3ZTg4ZTcyYjYzYjViZjM0ZTRmMmZkYjdiMGUyNTMyOWUxYSBsZWdhY3ktdHJ1bmsKKzQ1NjQyIDEwZjI0MWZjOTU5MzlmOWM5ZDdjOGIyZDFjMmFkYzFlODE2ZDQ3NzEgbGVnYWN5LXRydW5rCis0NTY0MyBhYjRlNjVjODA5ZTZmZjMwMGU2YjQ5YTk4Y2IzNmEzYWU4MTVkYjljIGxlZ2FjeS10cnVuaworNDU2NDQgY2U1NTg1YWZjMjBmOTIxNGQ0NzhjMjA5NTllNGJkMDZhNWM2ZGM1NiBsZWdhY3ktdHJ1bmsKKzQ1NjQ1IDVmOWVhNzZlMjA3MjQ0NDRlNGQwNjU2YmE0ZjRmOTU4NGVlOGViNzIgbGVnYWN5LXRydW5rCis0NTY0NiBmNDlhMmRkYThlNzQ1Njg2ZDQ1NzQzNWM1ZjQ4ODk4N2JlYjk3NjJmIHJlbGVhc2UyNC1tYWludAorNDU2NDcgODM0ZmQ5YjNjZWVlYzIwMjA4YzcxMDg0YTBhNzA2MWFjYmNkNjNjNiBsZWdhY3ktdHJ1bmsKKzQ1NjQ4IDkwNDhkNzZiZjAxZTZkZjQ5ZDk5NGNiMWIwMWI0YjAzODc5MjkzZDQgbGVnYWN5LXRydW5rCis0NTY0OSA3ZGUyODQ5NTg4ODM2MDUxNmYwMjk3OWI4YjkxZGJlYzU0MDRiNjVkIGxlZ2FjeS10cnVuaworNDU2NTAgZmQ4MDhlZTY4ZWI5ODU1ZWUxOWIxMzRhNjBiNTRlNjE3MDI2ODE0YiBwM3lrCis0NTY1MiBhN2YzNzY1ZWE0NjQyOWI0ZjkyZGNiYzVlODgwNDQ5OWQ2YmYzMmM1IHAzeWsKKzQ1NjUzIGFlNmY1MDYwMGM0NmIzYmY1Nzc0ZTdlNjM4ZjlkN2Y1MjZmZGUyMWIgcDN5aworNDU2NTQgODhkYTg0Nzc2MTE5MjkxZGI4ZjQzMjNkNGQyNTliMDMzNGY3NGZjYyBsZWdhY3ktdHJ1bmsKKzQ1NjU2IGUxMjUyY2VhNDM5YzY1ZWI4NWQwZWZlYmUxNjQ0ZGUyNDE0ODQyMDYgcDN5aworNDU2NTcgZDBlNGNlZDQ4N2IzNjdlNDI0ZTUyZTZlZWVmNzIxZWQ5NmM3ZGY2ZiByZWxlYXNlMjQtbWFpbnQKKzQ1NjU4IGEwYWE5MTFiZTk2YTMxZWFjMTVjNDk3YmM5MDU5ZmFmYWE5Y2I2MjEgbGVnYWN5LXRydW5rCis0NTY1OSBiY2Y3MTVhOTg3NzRiMDRkODdhMjE5M2M4NzFjOTUwNGRiNmRmZmVjIHJlbGVhc2UyNC1tYWludAorNDU2NjAgZWE2NzYyOGRkYWU1NjU1MWYzMDBkZmIzOTI1MjJhNjlmMGNjYzk0ZiBsZWdhY3ktdHJ1bmsKKzQ1NjYxIGUzYThhOGRlMzU1ZTNmYjk2YTlhMDljNDRlNzBlODNhNTQ2OThkNzcgbGVnYWN5LXRydW5rCis0NTY2MiA3OTk1OWFmMGY5ZTBmMzFlNjgyOWQ2ZWIyYzk4ZGRmNTg4YjUzOTMxIGxlZ2FjeS10cnVuaworNDU2NjMgOTc3ZTdhN2UxNTVhZDQzOTQ2YzE2NjFjNDliN2ZlODQ0NGM2Y2E5NiBsZWdhY3ktdHJ1bmsKKzQ1NjY0IDdkYTRhZjk1ZWJhZGExMmQ3Y2ZkN2ZiZTJlYjc3Y2I5ZmQwYTgyNDkgbGVnYWN5LXRydW5rCis0NTY2NiA3YmJiMDcxMTNiMjlmZDFiYWM4YTdiNTc2N2ZlZTNlOTEzYmE2OWFjIGxlZ2FjeS10cnVuaworNDU2NjcgMjIyYjQ3ZDY3ZDQzMmI0MTg4MzdmMDY3ODg4MWYxZGEzYTY2OTI4YSBsZWdhY3ktdHJ1bmsKKzQ1NjY4IGQ2YjFlMmIzMDg3ZjM4NDAzZDI0MDU1NTQ1NzQyN2YzZWYzNGVlY2UgbGVnYWN5LXRydW5rCis0NTY2OSBjMjVkZDc1ZTA2Njc5ZWVmMWE5YWYyOGRhM2QxOWY0ZmUwMTIzZjQ0IGxlZ2FjeS10cnVuaworNDU2NzAgOTkxMDY2NTc2NDM0N2E0NTYxMzQwYjVkZmRhNGYzMTQxMWU1YTFjMCBsZWdhY3ktdHJ1bmsKKzQ1NjcxIDUwOWI1MzE3MTk1NGE4MmRlNjQ0ZTk4YTg3OTg2M2RlZTE3ZGQxZjYgbGVnYWN5LXRydW5rCis0NTY3MiAyZmQ0NzdiNjE0ZTNmNjJlYjhmMDNmNzliMWY2NWE1YTAzNjRkZWQ1IGxlZ2FjeS10cnVuaworNDU2NzMgODQ3NzEwZTVkN2UxNjYxY2ZiY2Y5Y2Q4NmFmMzNmMGNjMTBhODY2NiBsZWdhY3ktdHJ1bmsKKzQ1Njc0IDFiMTkyMDM3YjYyZjFmYjk1NjllOWIxZGQ0ZWI2ZTBlZTk0YjZkYzkgbGVnYWN5LXRydW5rCis0NTY3NSA1OGQxMGQ3ZDBhYTExY2VjODNiNzkyOWU3ZDdkYmI2NjI0ODc5NmI0IGxlZ2FjeS10cnVuaworNDU2NzYgYjZkMTBkZDNmOTk3OTVkNjEwOTdjYTBkYTBlMjMxNTA2MmY5YjcwNyBsZWdhY3ktdHJ1bmsKKzQ1Njc3IDZmNGVkZDkxNGM1ODZhMTYxZjNmOTQxNjUzNTExMjQyNmUwNjZmNDAgbGVnYWN5LXRydW5rCis0NTY3OCA3MTY3YzFjMGUwMTMxNzA1ZmNkODU1NjVkNzg2MjRiNGFmNTcyNjNhIHJlbGVhc2UyNC1tYWludAorNDU2NzkgOWMwNDFjODhlYjY3ODM3ODVkNDMzNzZmZjM0ZTY3NGY5MzAyNjQzOCBsZWdhY3ktdHJ1bmsKKzQ1NjgxIGQ2MGZiYzU0YzBkNGRmZWIyYTgyNjU3ZDAxNzU1MmQ2MTQ3MzM3ZGMgbGVnYWN5LXRydW5rCis0NTY4MiA5YWNiNTU1Mjg2ODAzOTllNjgyMGVjZjFiMWE4Mjg4YjJiMjY5OWZkIGxlZ2FjeS10cnVuaworNDU2ODMgYWRiMTBhZmRhNTViNGVkYTM0MGI2NGZmYmRlY2RlZTRiODljZGNhOSBsZWdhY3ktdHJ1bmsKKzQ1Njg1IDk3ZTU5ZDJlNjNkZjYzNzc1MzFjMjgxODU2NWI4NTE0YTU1ZWYyZjAgbGVnYWN5LXRydW5rCis0NTY4NiBkYWQ5YjMzZTc4ZTUzZDkxYmFkYTYyODM0Y2U0ZTllOTI3YTRlNTJjIGxlZ2FjeS10cnVuaworNDU2ODcgYzc4ZDMwNmFhY2NmOTEyNTE1M2JkY2Y3ZGJkMTc1Njc2M2FlMDE2NCBsZWdhY3ktdHJ1bmsKKzQ1Njg4IDJmNGQxN2JjYzk3NTFhOWM0ZmNlYmEyOWM0ZDFlZjRmZTRlZjI3YjggbGVnYWN5LXRydW5rCis0NTY4OSBlMGI3ZTM0YjU5NzEzMzFiYTY1NTFmZWM0MjIxMjkyZmY0M2QwYTRlIHAzeWsKKzQ1NjkwIDhiMGYwNzM1YjI0NmVlMTU2M2U4MjMwMTY0Y2NhMTM0MmI3NDQ3OWQgbGVnYWN5LXRydW5rCis0NTY5MSA3ZTJkNWQzNzRlM2EyZjQ1YWNlOTI2MDRjYWQ2YzYxYzNlYzhlYmFkIElETEUtc3ludGF4LWJyYW5jaAorNDU2OTMgOTJmMjE4YTZiMjBiODQ0ZDM1YTMwY2U2ZDdhODE3ZTQ1ZTdiYTBmZSBwM3lrCis0NTY5NyA2MTIyOGU1NTc5MWYzZWY3MDA3MDZjMTQxYTZkM2Q4OTE4MjE4NGNlIGxlZ2FjeS10cnVuaworNDU2OTggYWNkNWU1NTU5ZTNjMjc4Y2Q3ZWJiNzg3MTgyODAxMzMyZDIxNWY5MSBsZWdhY3ktdHJ1bmsKKzQ1Njk5IDMwMTU1MjBkNjdmZjFiYmFiZmVlYjFlZGRiYTVkZTIwZTA2YjM0NmUgcmVsZWFzZTI0LW1haW50Cis0NTcwMCA4OTViN2RhYmEyZDYwODRhYzA0NTQ4ZjhmYjQyMDFiMmQ4YmE1ZGE4IGxlZ2FjeS10cnVuaworNDU3MDEgMDBkZDFkYWU3ODhiN2QxMTgyYzJiOWM0YzkwMDUzMTJlNTFiNTllYiBsZWdhY3ktdHJ1bmsKKzQ1NzAyIGYzM2U0ZWQ1NTBiOGE0ZjcxMjg1NzhjZTY0NDJkZmYxY2Q3MGMxOTEgbGVnYWN5LXRydW5rCis0NTcwMyA0NDlkNGJhM2NkNDQyNDdhYjBkN2MxOTdiMjY5ZTEwZjVjY2M3NDI0IGxlZ2FjeS10cnVuaworNDU3MDQgMTRjYjJlZWNjNmY4OTQ0ZDJlYWEyNzJhYmRmMGE3ZTk3NzNkNjc5MCBsZWdhY3ktdHJ1bmsKKzQ1NzA2IGFmNDRkYjJhOTUyM2EwNTNhZTNlMmRhYWU0NTEwMGNjNzMyNWZhNmEgbGVnYWN5LXRydW5rCis0NTcwNyA2YzEyNDI3NmExZjBjYWZjZGY0ZGE1YTVkNWJlNmI3Y2VlZjgyMDJiIGxlZ2FjeS10cnVuaworNDU3MDggNDVmODQ5MjliMmFlYjg2NTI0OTU4Yjk5MWM2OGZmZDNiMWVjYzNlZSBsZWdhY3ktdHJ1bmsKKzQ1NzA5IDhlMTQxNDgzODZlYzA0ZTk2MGQyMDI3Njk0OWM1N2M2NDM0YTRmMGUgcmVsZWFzZTI0LW1haW50Cis0NTcxMCBhODY4YzIxOGEyMTMxYjZiNjZmZTM1NWZiNzFjZjlhNzUxYjg3YWQ1IGxlZ2FjeS10cnVuaworNDU3MTEgODg2M2ZlZDZjOGQ3MTlkOWEwZjgxNDcxZTY2NWU0ZDAwMzkzZDY5ZSBsZWdhY3ktdHJ1bmsKKzQ1NzEyIDE4NDM3MTBmMzJlODMyMTM2N2E4NDU1NjFkODUxNWNhZGM2M2I0OWYgbGVnYWN5LXRydW5rCis0NTcxMyBlNWZlYjA1MWMzMmZkYzNlYTY0YTAzNTdkYjRiZGMxZTAwMTFmMmI2IGxlZ2FjeS10cnVuaworNDU3MTQgNzA0YjgwNTI5NjY0YmE0ZTk4OTdjOTQxZDE4OGRlNTZlNDdkMDU1OCBsZWdhY3ktdHJ1bmsKKzQ1NzE1IGI1MzVjMTkxYTQ0YjA4MjA4MjFhM2M3ZWRhODVkYWMyZmFjZTY4NjcgbGVnYWN5LXRydW5rCis0NTcxNiA3ODNjYWI2OTMzNDc3YzQxYzc0NDFiMDdhYTQ2MDA3NzE5YmJmMjMzIHJlbGVhc2UyNC1tYWludAorNDU3MTcgNjhhN2MwMTVhNTQ3NDc4NDAxYjk4ZDFkMDZhY2Q0NWNmMmJlZDMzNyBsZWdhY3ktdHJ1bmsKKzQ1NzE4IDI2OWM2MmM3ZjY2YTUzMzM1ZmIxYmM3N2RjMzViNTA5NjE5ZWYwZDggbGVnYWN5LXRydW5rCis0NTcyMSBkOGQ5MDBkMGViOGE0Njg0Y2ZlNzM4NjVlZTM1NjU1ZDc0ZmM3NTc5IGxlZ2FjeS10cnVuaworNDU3MjIgMDljNDI1YTVhYTNhZjNjZWMxOWRkMmE4ODU5YWYwZTVlMjRiNjRmOSBsZWdhY3ktdHJ1bmsKKzQ1NzIzIGQ1ZTZlNDlhMzg3OTBhZWFhMTdkNDBkYzNmMmMxNWY1YWJiZTc3MDcgbGVnYWN5LXRydW5rCis0NTcyNCAwNmMwNTliOTJkMGJhYzc3YzNkMTBhZDBlM2QyYTM1ODIzN2U1YTgzIGxlZ2FjeS10cnVuaworNDU3MjUgODgzOWVhOTNiNmQ3MDQyOTQ3OTI3YjU1NjlkY2VjMDJhNTZhZjZjNCBsZWdhY3ktdHJ1bmsKKzQ1NzI3IGY4MWNkN2U5ZDAwMWYwODA5Y2I1YTdhNjVjYmFkOThjZGYwZjFhNTkgbGVnYWN5LXRydW5rCis0NTcyOCA1NTY0NGYwYTQwMWJiOTM1ZjVmOWQxYjNiYmI3OTkxODViOWIyOWI3IGxlZ2FjeS10cnVuaworNDU3MjkgMTY0OTcwNGEyMjFhMWE2MTE3NTZhMTc0NWRjZTIwZjQ4Zjk0YjhlMyBsZWdhY3ktdHJ1bmsKKzQ1NzMwIDhkYzJhNGQ4YTIyZTAwNjZmNzY0OTBjYzQyYjFkMTFjMjJjMWFhMTQgbGVnYWN5LXRydW5rCis0NTczMSAzNTg2NjJlMmYyNzNhMmRiYTkwNjBiNGIwYmYxMjM3NGU2MmVjZWU1IGxlZ2FjeS10cnVuaworNDU3MzIgZmVkNmUzN2FkMDNkMTA1MmU3Yjg4NjFiYTIxNGVhNThlNDA4NDU2YSBsZWdhY3ktdHJ1bmsKKzQ1NzMzIDljYzEyYmIwYjcwYTg2NjM0Yjg3ZmI1ODE0ZWMzZTQyYWU4OGRhNzEgbGVnYWN5LXRydW5rCis0NTczNCAyMmJiNWM2Mzg2MmVjNjIyYTk2ZjE2OTI3NDhmM2RhYWYyMjBhYTc0IGxlZ2FjeS10cnVuaworNDU3MzUgN2MyMjJjZTUxYmQ3ZmUwY2YyNTVhOGQyOTRmY2I5ODQ0MmVhNjc0YiBsZWdhY3ktdHJ1bmsKKzQ1NzM3IDg1YzljYTVlMDM1YWRmZjgyZjdmNzNhNGNlM2NiMDY0Mzg3NzU2MGYgbGVnYWN5LXRydW5rCis0NTczOCBhYzA2ODQ1M2E3OGE4MTI2MWRjYzhjZjdmZjE2ODlkM2Y2YmNkZDg1IGxlZ2FjeS10cnVuaworNDU3MzkgOTRkOWUwZGU0ZTQ5ZTMyMGUwOTg0MjJiNjAxYTI3YjUxYjIwMzIwMyBsZWdhY3ktdHJ1bmsKKzQ1NzQwIDBlODA5YjdhODRmMTc4Zjg0OWY3ZTdmYmM1YzUwYzg0YjY0OGZjNWEgbGVnYWN5LXRydW5rCis0NTc0MSAyNmQwNzcwZjJiN2VlMjg5YTM5YTNiNTVkY2VjMWMxZWU2NTg0OWM1IGxlZ2FjeS10cnVuaworNDU3NDIgNTA4NTY3ODU3MzIwNWU1ZTQwYmU3ZmQ4MDgwZDY5MTg2NGUwMTFlYSBsZWdhY3ktdHJ1bmsKKzQ1NzQ5IDA5OTI3ZjJmNzQ3OGU2M2NkYjRhYjU4MDhhNTBlNTMxMGI0ZmJhNGYgbGVnYWN5LXRydW5rCis0NTc1MCA5MjMzNTMyZWM4YjM1MTM1ODJkZWIyMjFjZjgyZDlmOTRjYjA1N2VhIGxlZ2FjeS10cnVuaworNDU3NTEgY2Q5ZWQyNzNhNjg3OTYzM2EyZWU4ZmE2MDIwNDVkNmYzY2RlYmM0ZSBsZWdhY3ktdHJ1bmsKKzQ1NzUyIDFlMWI1MzZjNjhiNjU2MDVlMzExYzc0OTRhODQwMmQ2NTY0Nzc5YTkgcmVsZWFzZTI0LW1haW50Cis0NTc1MyBkZmJkNTdmNGE3MTEyZjkyZjc0NDY1Yzk5ZDVmMzdjZmYzMmM3OTYzIGxlZ2FjeS10cnVuaworNDU3NTQgYTg0YTYyMWVjNWMyNGI5YzcyNzVhZGRhNDM0OWRkOWFjOThmNmVjOCBsZWdhY3ktdHJ1bmsKKzQ1NzU1IDA5MTM0NzdiZDI0ZWE0MGI0NDk4ZjA3OGJmMzhmMmVjM2Y4MGYzYjkgcmVsZWFzZTI0LW1haW50Cis0NTc1NiA3N2ZlYTA2ZWJjMTBhMGI3Mjk0YTE4YTI3YTkyMzVlOGUwZTk1ZWRhIGxlZ2FjeS10cnVuaworNDU3NTcgNzg4ZDg2NjVmZjU4YzU0NGNjOTYzZjdmMTIzODVkMmFhZDNiNWJjNyBsZWdhY3ktdHJ1bmsKKzQ1NzU4IDRkYTBmNzYyMTMyNWMyNjdhMDc4MTBkNWNlYzQyMDI1ZjBhZmEzYTEgbGVnYWN5LXRydW5rCis0NTc2NiBhZjk1MmJjN2ZlYjI2MTU5YTZlZWVkYTgwYmJkYmE1MWE0YTk0Mzc1IGxlZ2FjeS10cnVuaworNDU3NjcgOTQwY2U1YTc2YzVmZjg1YWJmZjc4NDNjODA1Mzk2YWViNTA4ZDAxZSBsZWdhY3ktdHJ1bmsKKzQ1NzY4IGQ1NTE0YTdlYWE0Y2NlY2VmODJiYzc4Yzk2MTlmOWYxNWM5NGE4NTkgbGVnYWN5LXRydW5rCis0NTc2OSAwYjhlNzgyYjg0ODRiODhkZDNjZWUyMThmNGNiZjc0YzJlNjc3YzU2IHAzeWsKKzQ1NzcwIGI1ZTdkNWIzYzQ0MmU3OWRiMTI4NGFiYjM1OTlhZWMyY2IxNmRiNWEgbGVnYWN5LXRydW5rCis0NTc3MSAzODQ1ZjcwZTBiYWZkYTA0YWZhOGNhMGI4M2I2OGJkOTAyYjIzNGI0IGxlZ2FjeS10cnVuaworNDU3NzMgYmI2YzVjMjAwYTNmMDNiZmM5MmRjZGI2YmNjYTAwZjA4ZGMzZjdhNiBsZWdhY3ktdHJ1bmsKKzQ1Nzc0IGI1ZTcxODNhZDExMjI1ZjkzMjYxNDFlOWQ1NzZiOWU1M2U2NGY1ZmYgbGVnYWN5LXRydW5rCis0NTc3NSAzNTE4ZTk0YWE2NjM3MjE5NGU1N2NlMGVkYWZmMjQ5N2U0NWYzZTc5IGxlZ2FjeS10cnVuaworNDU3NzYgMTlhZDNkMzVmYWM0YTg0YTVmMjI5NWNmZGY0YjBlYzQyZWM4MGMxZSBsZWdhY3ktdHJ1bmsKKzQ1Nzc3IDhiYzRhN2U1ZmVmODRmNzE4YmEzYTViYmQ3MGNmNzQyYmExMTEyZWQgbGVnYWN5LXRydW5rCis0NTc3OCA2MWM3ZWM5OTVhZGY1N2UxODM4YTNhZWQzZDI3YWRmNmRmMTk3MzllIGxlZ2FjeS10cnVuaworNDU3NzkgZTlhNzBiMTQ2ODU3OGQ4ZTQ2MDUxNWUwZjQ4ZDAxODNhNzY0NTdiNSByZWxlYXNlMjQtbWFpbnQKKzQ1NzgwIDM0ZDY5NmMxZWViYzY4YzE0YWVlYmExNGRmNmU2NGVmYzI0OGYwNzggbGVnYWN5LXRydW5rCis0NTc4MSA4ZTViNjRhN2IzM2YyYTFlMzhhNmRiMGUxOWM1MDhjN2FkOGFmZTU3IGxlZ2FjeS10cnVuaworNDU3ODIgMzllYjViNTIyNTIzOWNkZWM1MDBkZjE5YzBhODMwMDQ5OGU4YWJlOCByZWxlYXNlMjQtbWFpbnQKKzQ1NzgzIGMxMjQ3MTY5ZjNhMTY2ZDhiMDVjZmMzNzhhYzFhZjVjYzFjNGNkZmYgbGVnYWN5LXRydW5rCis0NTc4NCBkZTJlZThkZWRjZTg5OWFjMjJkODY4YThmYzY3OTE0OGVhZWFlZGJhIHJlbGVhc2UyNC1tYWludAorNDU3ODUgNTY1YmZmZGU4YmYxODMwNjQ4ZmYzMjI2ZjU0ODcyNzA1NzhjMTE5ZiBsZWdhY3ktdHJ1bmsKKzQ1Nzg2IDQ3M2YzN2RlMTNhMTM3ZjQxZjc0NDRhOGMyYTAxNWZhNDNkODliOWEgbGVnYWN5LXRydW5rCis0NTc4NyAyNTQ2YzQ3NzM0YTAxNWY4Zjk1YzY3NWU3ZWE1MDk2NjdiNzU4NGQyIHJlbGVhc2UyNC1tYWludAorNDU3ODggOGJkYmVkNjdhZGY3ODZlODU5N2ZhMmZkMDJjNGMwZmI2NDQ3ODcxMiBsZWdhY3ktdHJ1bmsKKzQ1NzkyIDM4OWU5MjJhNjQ3YzExMDJmNWYxZmYyNmE2ZDMxYjEzMWE4Mjg2NGEgbGVnYWN5LXRydW5rCis0NTc5MyA4NzRkNzdlZWZjZTQzMWMwZDgwOWVmZTM5ZDEwNTExNGY4OTYxYjQxIHJlbGVhc2UyNC1tYWludAorNDU3OTYgZjI3NDJhY2EyYWQwN2Y0NDI0YjRjYmU5YzdlYjMzNjMwMWIzOTM5YyBsZWdhY3ktdHJ1bmsKKzQ1Nzk5IGYwODA5NDgzYjRkMDVmMWI3ZjJmMGNhMmVlNGJmZjU3MDQ3YTNiYzIgcmVsZWFzZTI0LW1haW50Cis0NTgwMCAzNmM3YTQ0MjJlMzA3NTk0NWU4MTYwZTVkMjkzYzFjNzQzNzk2MTQ3IGxlZ2FjeS10cnVuaworNDU4MDEgNTczOThlYjk3OGMyNTRlNjcwYTcwMmM5OGRhY2RkZDlmZDkzZTgxMiBsZWdhY3ktdHJ1bmsKKzQ1ODAyIDg0NjlkM2Q4ZDRlZGI3NDZmOTk1ZjRmNTZlMWEwZGMyNmUxNDA2ZDUgbGVnYWN5LXRydW5rCis0NTgwMyA4ODczZDMwYTE0MGY4NDQwYjc5NmI3ODI0YzgxMWU3NzkzNWYzZGRlIGxlZ2FjeS10cnVuaworNDU4MDggNWMyMjc3YTI5NGVhNDVlM2I0YzBmMjFiMGUxZThjNjAxMzI4ZDAxMyBsZWdhY3ktdHJ1bmsKKzQ1ODA5IDUxYjZmOGUwNDJkZmJmOWJmNTlmMzlkYzFlZDZmYmY5YTMxNjUzZGEgbGVnYWN5LXRydW5rCis0NTgxMCAzZjUxZmZkNWQ4YmY3N2FhOTJmYmViMDQ4ZDgzNWI4OTY2MjRlMzA4IGxlZ2FjeS10cnVuaworNDU4MTEgZjYyNmQ1MmZhYmYwNDRjM2FkODkwM2IwNzYxOWUyNjEwYWQwMWQ5ZCBsZWdhY3ktdHJ1bmsKKzQ1ODEyIDQ2NWY1YjNhMDIzNDg0YTMzNThjZWQ0YTNkODVlZDQxZWY5Y2MyNjkgcDN5aworNDU4MTMgYWNhZjI3NjM5YTQxMWJmYmNmMGE0ZjUyOTk3MzZmOTY1M2RmYzcwZiBwM3lrCis0NTgxNCA2MTRjOTIxNzA3Zjk1NGE2ZjI0YTg1ZDk0MWZmZGFhNzAwNDZhZmRlIGxlZ2FjeS10cnVuaworNDU4MTUgMmEyODkxNTYxNmQ1MDFiYWE1YzU5MWYzOGJlYjBlMzcwNzY0MDA5OSBsZWdhY3ktdHJ1bmsKKzQ1ODE3IDMyYTE4N2YzZDViYTkzNmFjYzNmMDFjMzg5NTJhMjUyZDdiNDkwZDUgbGVnYWN5LXRydW5rCis0NTgxOSBlNGU4NDgyMTRkMjM4NTFiZDNlYjRlY2ZiYzM1ODc0Y2ZjMTkyZmJlIGxlZ2FjeS10cnVuaworNDU4MjAgYWI1M2EzNzhlZGE4ZjliMzczM2FkZjIxZGQ1NjA3Y2Q3NTY2ZGVjNiByZWxlYXNlMjQtbWFpbnQKKzQ1ODIxIGZjYzYxODM1YzZhYzhlNmYzOTg1OGM0MzM4ODdjNTU0OGNlNzhjYmIgbGVnYWN5LXRydW5rCis0NTgyMiA2OWYwNDU3YzE3YmIxODA4NTc4NTZiYmNlNGNkMDFhOTNmODZiMzFlIGxlZ2FjeS10cnVuaworNDU4MjQgOGY3YWJjMmJhN2QwYTIyZDVmMzAyYTMzNzY2YTNlODM2Y2UxMmVmNiBsZWdhY3ktdHJ1bmsKKzQ1ODI1IDlhYmVhYjk2YWY1NzIzNmQzYWZkZGIxN2EzN2UwYTY0MTk2YmEzYmEgbGVnYWN5LXRydW5rCis0NTgyNiA3Y2M3YzdhMTM2OTdiY2YwMmJmZTI1MmMwZWIwNWM0NzU3ZGJjY2VjIGxlZ2FjeS10cnVuaworNDU4MjcgODFkOTFmZjgwMDNiOTk0M2IxYzM1N2EyNjM5MGMwN2VjMDA3ZmE1MCBsZWdhY3ktdHJ1bmsKKzQ1ODI4IGY4OTQxMDQ0ODAxY2JmYjNkZjQzMjUxN2Q5ZmRiOTA4YTgzNDViMjQgbGVnYWN5LXRydW5rCis0NTgyOSBmYzdiNjE4MWQwOWVhZTMxN2Q5MmRjNDNhMDA0MjJmZDM4NWE1MzdlIHJlbGVhc2UyNC1tYWludAorNDU4MzAgZjYyYmQ1MTE4Yzc4Y2YzNDViNjgzOGJjMDU5NDI4NDczZDQxYjMxZiBsZWdhY3ktdHJ1bmsKKzQ1ODMxIDA3MzZiMjVjNTdjNTc2ODEzY2YwM2UxNzEzMzJkNTk4NGIwZDdjZWIgcmVsZWFzZTIzLW1haW50Cis0NTgzMiAxMzViMTc3ODgzYzM0MjViZWE2ZWI0YTUxZjE1NWJkYjFlZjM5MGNiIGxlZ2FjeS10cnVuaworNDU4MzMgYjg1MDdkZWQ0ZDE1Y2MzOGE4ODczNWNjZjY4OGY1ODYzZmQxOGI4NyBsZWdhY3ktdHJ1bmsKKzQ1ODM0IGVmZWViYzg3NzBlNWU2MjFiMWY0MjVkODEwY2M1NjU2YjI4ZmE3YmUgcmVsZWFzZTI0LW1haW50Cis0NTgzNiBjYTZjOTE1MzFhOTY3ODcwNDA1NzFkNGM0NWZmZTM4MDI5N2RkZDczIGxlZ2FjeS10cnVuaworNDU4MzcgY2YxOWExMjNhNWQ5YWNjYzYyNGYxNzBjZTUyNzRiZWY5ZjVmYWI4MiBsZWdhY3ktdHJ1bmsKKzQ1ODM4IDliNzVhZDIzNmYwMDAwODBkNmFjM2JkMDhlYTNkNDQ5OTI4YmM3MGQgbGVnYWN5LXRydW5rCis0NTgzOSBkNzZiOWFhNzIyOWZjNjk2MTg2MjNkZGQ0ZWIxMDBiOGYwM2NjZTFmIGxlZ2FjeS10cnVuaworNDU4NDAgZWU5OGVjZjA1NzczYTcwNzE3N2QzMzU1MWZmZWNiOGY4ZTQ5NTJmYyBsZWdhY3ktdHJ1bmsKKzQ1ODQxIDYzNTFjZDBmN2MyODVmOTI3OWFkZDFiNTVkYTZmZDA3Mjk2NzExZjMgbGVnYWN5LXRydW5rCis0NTg0MiBlZDMzNWU1MmQxNzA1NDk0ZmNhNzA3NjQzMjY4NjFhYWIwOWZhYjFkIGxlZ2FjeS10cnVuaworNDU4NDMgN2I4M2I2OGJlOGE2N2E0NWFhZGY2MDIwZDkyMTgyMWQ0NzBkNDQ5NSBsZWdhY3ktdHJ1bmsKKzQ1ODQ0IDEyOGMwMDYxYjViYjI2YjI5ZWJkNTM2MDYzZjY5ZjMyMWFlMTE4MGYgbGVnYWN5LXRydW5rCis0NTg1MCBjOTIwMmYxYzU2YzI3NGUzMDE3NzcyZTJiODUxMTJkMGM0ZDBhOGU5IGxlZ2FjeS10cnVuaworNDU4NTIgYjFjYmM2MDViZWM5Y2RmOWE0NmYwM2RkZTg3YzIyMzQ5NWNhZjkxYiBsZWdhY3ktdHJ1bmsKKzQ1ODUzIDcyOGMxNmYxNjI2NzFmMzQxYjc5YzJhZTc1MTk0ZjYyNWRlMjU3MjEgbGVnYWN5LXRydW5rCis0NTg1NCBiOGVjNjg5Y2IyZmJjYzRmNmFjYmQxYzBkOWUxYzc1YzkxNmRjZjc5IGxlZ2FjeS10cnVuaworNDU4NTUgYjdiNWYwYjM0ZDI1Y2NkZDdjMWUxYTFmYzg2MzczMGFkNGE0YzcxZSBsZWdhY3ktdHJ1bmsKKzQ1ODU2IDlhMTdiODJlYWZjOTQxMjdhMzdmYWM5ZmYyY2IyZGNiMmVkYmE5YzggbGVnYWN5LXRydW5rCis0NTg1OCBiYjNlMGM4ODk2MzI1YTUxMzAxMWEzNzA2MDIzMTIzNDhjNGUxYTE0IGxlZ2FjeS10cnVuaworNDU4NjIgYTgxMmQwZmFlNzRhNDI4YTE3MmVlMGZhYTU5ZTk4YmI5YWM4MDY1MyBsZWdhY3ktdHJ1bmsKKzQ1ODYzIGZlMjkzOThmNDhjOThkZmUwYjhiNzZmYjM5Y2YxODkzOWMzZTgwNWUgbGVnYWN5LXRydW5rCis0NTg2NCBhYzcyOTAwZTE5MTlhMWZlYmVjYTY2ZmFjYTg4MzczZDBiYTQ0ODNlIGxlZ2FjeS10cnVuaworNDU4NjUgYjcwNmIxMDBjOGZjMGEwMzg1MTNmMTA1ZjY4NjE4MmJhMDExMjY3NyBsZWdhY3ktdHJ1bmsKKzQ1ODY2IDhhYWY1N2JjY2JmOGI1NjgzYThhZGY3ODZiMzUzN2E5MGU3ZGE2NmUgbGVnYWN5LXRydW5rCis0NTg2NyA2Njg3NWI5Yzg5ZjQ1NDVmNTQ4ZGEzMGYzNzU1ZTIzNDk0MjNlYzRkIGxlZ2FjeS10cnVuaworNDU4NjggNjZmMWIzZWJhZWUzYTIxOWYyOTEzMzIzZmU2ZTZmNWY4N2NjOTM4NCBsZWdhY3ktdHJ1bmsKKzQ1ODY5IDZlMGIwNTNjNmNmN2IxNzZhYjVlMWI2ZTJiNjUxN2NjMWIxMmMzYmUgbGVnYWN5LXRydW5rCis0NTg3MCAwZmEzYmFkNDg5ZGQ0NzdmYzhmMzg4YTAzM2E5NGZmZmFjNDZjODgwIGxlZ2FjeS10cnVuaworNDU4NzEgYmM0OGU2YjFlNjU0NTVjN2VlOTAwYzgwNzQ1YzAyMDI5OTBhNjMxMiBsZWdhY3ktdHJ1bmsKKzQ1ODcyIDZhMTQ2OWIzOWQ3Mzc4NTNiY2QwNDE0NDhlOGRlNWY0NzliM2M3YTEgbGVnYWN5LXRydW5rCis0NTg3MyBlYjAzNTYyZGY0YTc5Njg0N2NhM2NjZjA0NmY5ZDE1Yjg4MGI1ZGJmIGxlZ2FjeS10cnVuaworNDU4NzYgNTQ1N2FiOWY4NTk5MTdiMDRiMWIzOWNmNTZmZGMxZDNkOGRjNzRlMiBsZWdhY3ktdHJ1bmsKKzQ1ODc3IGU1ZDExZGZiMmQwOGVjNmMxZjk1M2E4MDdiZDE3Zjc2ZThjMTRlZGUgbGVnYWN5LXRydW5rCis0NTg3OSAyM2Q0YWMzM2FjMTZlNzRjMjFkZWQ5ZDJiOTk1Y2E1MGIyZGQ2Yzc2IGxlZ2FjeS10cnVuaworNDU4ODAgYzA2YTYyZjA1ODlmYmE0YTgzODY0N2FjMjU1MTZlOTA1ZjU0MjE2MiByZWxlYXNlMjQtbWFpbnQKKzQ1ODgxIDRmNzJhNDlkNzBjODA1YzBmOTcxNzZlN2IyOWJkM2JlOTdkYzEwODIgbGVnYWN5LXRydW5rCis0NTg4NyA2YmMxZTgzYTk3YTY5ZmI4OTlhYTRkZWE0NzA5ZjQ4NGVjNTQ0MjU2IGxlZ2FjeS10cnVuaworNDU4ODggZTkyYThiOGVlYzczYjgzY2I1NjViZTlmYTk0MjM2MjdhNzhjODAyYiBsZWdhY3ktdHJ1bmsKKzQ1ODg5IGEwNmI2OWY4YzI3NmE4OTQxZGJjZTJlZTIxZTMwZTY0OWNlMmM1YjkgbGVnYWN5LXRydW5rCis0NTg5MCA4OGI4OWY5NmI5N2ZmMDc5NzdmNGNmZmM4NmJiNTcxODgxMzFjYzU3IGxlZ2FjeS10cnVuaworNDU4OTEgOGMzODNlZjc4MTk4NDlhOGM4YjBiY2ZhMWZhZjljMWZiZjg0NTJmMCBsZWdhY3ktdHJ1bmsKKzQ1ODkyIDAyNTE4Y2YxN2E2NmVhNzYxN2E3YzEzZGZkMzQ5NmNiOGVlMTM2MmQgcmVsZWFzZTI0LW1haW50Cis0NTg5MyAyOTQyNTA4NmU5YWI2MjhiMzE5MjRjZjZjYjMyMmY1YmRmMmY2M2U5IGxlZ2FjeS10cnVuaworNDU4OTQgMjIwYWQyMDM5NGRmMGIzMWE0ZGU1OWYxMDI5MmI4MjliYWIwZmM0YiBsZWdhY3ktdHJ1bmsKKzQ1ODk1IDkxYTY0MzZmMGE1ODRlMTJkNGE2YmUzODRlZDdiZGU4NTAwMDVlN2YgbGVnYWN5LXRydW5rCis0NTg5NiBjZTJhN2ZhZGMyYjA0ZTIzODhlMDg5NDY2ZmUzMDE4YzllNTZmN2UyIHJlbGVhc2UyNC1tYWludAorNDU4OTcgMGU3ZDM0YWFlYTYxMzFlZDk3YTBjMWI4NjZiMmU2MTk3ZWE4Yzk3MSBsZWdhY3ktdHJ1bmsKKzQ1ODk4IGJlNDk2NDVlMzk4NDEwYTY2YjkyZWY5YjEyOTA1MGE4NDNlNWJjMDMgbGVnYWN5LXRydW5rCis0NTg5OSBiNThmNzUwZDUyMTAxZmUzNzc3OTUxNzgxOWMzZDhkYjJmMDRjYjgyIGxlZ2FjeS10cnVuaworNDU5MDAgNzljOGEyYTk4OGNiMzk0NDc5YWEyYTA2MTUyZmIwMGMyMjc5YzcwOSBsZWdhY3ktdHJ1bmsKKzQ1OTA1IGE2YTEzNTlhYWI4NGRmNTMxZDdkMDM3YTc4NDJhODFjYzhhY2VkOGIgcDN5aworNDU5MDkgYmUwY2NhNzBjY2FhZGIzMTE1MmU1NTI1YzcxYmJjYTBlOGE3ODQ2MCByZWxlYXNlMjQtbWFpbnQKKzQ1OTEwIDU3YmQ3YzdkOTFlM2FiZTAyMWFlNWIzMDdiNmEzNjExZmU4ZDFmYmEgcDN5aworNDU5MTMgMzYxODEyNmM2MzA0YzcxYTgzMzgxM2UxZWY0NThiNDRkNGYzMDA0NiBsZWdhY3ktdHJ1bmsKKzQ1OTE0IGMwMWMzMzdhZDYxODhlZmUwMjVhOTE2MmQxMTg0OGUzYWQ5ZmVmMDIgbGVnYWN5LXRydW5rCis0NTkxNSBhNTk2ZWQ5M2NmNDI2NGIyN2RjZGY0NjYyMDMzYmUxNzVkZDc1Y2YxIGxlZ2FjeS10cnVuaworNDU5MTYgNzQxZmI4M2I0ZWFiNDc2MTJkOTA4YTcwMjE5OWNjMWFiOWZiODliYiBsZWdhY3ktdHJ1bmsKKzQ1OTIwIGMzMzQyZDg4YWVmZDRjYjY3OTdiOTBkNzU4M2Y1YjNiOWNhYzNkZDAgbGVnYWN5LXRydW5rCis0NTkyMSAyYzVlNzRjNjQ1ZTI4Yzk4ZGM2NThiM2JlY2NmOGUyOWNjNjA1MDhmIHJlbGVhc2UyNC1tYWludAorNDU5MjQgYzNhMzZkNDU2ZGVhMGJmMzNiNDk1NmJlNGFhNTU4OTAxM2Y5M2I0ZiBsZWdhY3ktdHJ1bmsKKzQ1OTI1IDBkODc5YmZmMjVmNjZjNzIwZDdkOGE3OTU5MWZhZWY3N2VkOTU5NjYgbGVnYWN5LXRydW5rCis0NTkyNiA5MGRkNTdmY2QyNGUxMmJhZDMxZDYzMDZhYTNkOTQ1Njk5MGNhZGE3IGxlZ2FjeS10cnVuaworNDU5MzEgNGMzOTE4ZjIzMDNiNWE5NWJmN2RhODA2NWVkODgyYzc4ZmQ0Zjg0NSBsZWdhY3ktdHJ1bmsKKzQ1OTMyIGU3MDM1Mjc1MjQ1YmFlMzY2ZjA1NWVjZGE5M2QyNzVjOWY0Nzc4MjEgbGVnYWN5LXRydW5rCis0NTkzNCBkMDE3MDI3NmM1ZGVkMzA0YmQ0NDM4ZjA5NjAyY2M4ZjQ0ZGI0Mzg5IGxlZ2FjeS10cnVuaworNDU5MzYgZGRmMDA2OWY2MWY5MmQ3ZWQ1ZDhjNmI2MWQ2NGY2OGI3ZWVjNjc1MyBsZWdhY3ktdHJ1bmsKKzQ1OTM4IDgyMjVhZWU5MTkwNDk1MDkzYWQ4NTg2MjczZWNiZTk3ZWRmNjMwNmEgbGVnYWN5LXRydW5rCis0NTkzOSA2ZDFlMjQwYzkxOGMxMmYwNzRjYzhhNDMzMDgxZWM0NGVkZmY5NDY5IGxlZ2FjeS10cnVuaworNDU5NDAgYjQ0ODU5ZjBiMzA4YmM4NDk2MTMyYjA0NGY3Nzk0NjJlM2NjZTYwMCBsZWdhY3ktdHJ1bmsKKzQ1OTQxIGViNDg3OWMwODVhYWE4N2YyYjk2NzkwZjE0ODE0YWE3MmFlMmNjMDcgbGVnYWN5LXRydW5rCis0NTk0MyBjZTBiNDdkM2U1ZDEwYzcwMjk2YWVkOTg1MTljMzI0ODA5ODI3ZTZmIGxlZ2FjeS10cnVuaworNDU5NDQgMDYwNmI5YzA4YWMyNGYxZGRiNzg1N2U1MmZjM2Y2ZThmOTdlMzQ0OSBsZWdhY3ktdHJ1bmsKKzQ1OTQ1IGYzYTVlMTUzYzMyOTQ5YjgxMTcxNjgyYmZlZTQ4NWFkMjIwYmNiMDQgcmVsZWFzZTI0LW1haW50Cis0NTk0NiA0Yzk5MjJkOGRjZGQxMDdmYzE4OTg3YTg2YTZlYTNjMDlhOTg1NDVmIHJlbGVhc2UyNC1tYWludAorNDU5NDcgZjFlMjQ0NTJkYmJhN2IxYWVkNDY5YmZhMDVlNThiYThkMDVmZDM1ZSBsZWdhY3ktdHJ1bmsKKzQ1OTQ4IDhkYTA4ZDg1ZmNiMWU2OTJlMTAyNzcyMDAwN2ViZjI2NzY0ZmEzZjggbGVnYWN5LXRydW5rCis0NTk0OSA5N2RiM2Q5YjE0NTgwMDkxYzQzZTU4MWI0Yjc4YzU3YzY3NDM1NTFmIGxlZ2FjeS10cnVuaworNDU5NTAgOGM4NmNhOGYyNjgyODgwMWQ3NDQ5NjM3MGMzMmE1ODE0NjdiODQ2MCBsZWdhY3ktdHJ1bmsKKzQ1OTUxIGVlYTE3NmU2N2YyMjg4NGM1NTY5Njk3ZDgxMGEyZWI1YjY2NjIwYWMgcmVsZWFzZTI0LW1haW50Cis0NTk1MiAxNDU3MzM2ZDQzMmZlNDU5YmVhOGMwNTRiOWQxNjc5MDMzNmNkYjFjIGxlZ2FjeS10cnVuaworNDU5NTMgNDI3MjhjYjE4ZWEyNTYwYzFkYTY1ZDc2ZmU1MjE0MzNhNjc0MmI3MiByZWxlYXNlMjQtbWFpbnQKKzQ1OTU0IGY2MWM4OTJjYWRhYzk3NzQxNTRhNGQ0OWZkNjFjOTQ4YjcwZjgxOWUgbGVnYWN5LXRydW5rCis0NTk1NSA3ZmU0OWRiY2JiZGFiMWM5NTk5ZTRlNWQ2NTYzOTdiODIyYmIyNzZlIGxlZ2FjeS10cnVuaworNDU5NTYgZjI2ZmMzYWVlZjk2Y2I0NzhlYjhmZWJlZGU1YTczMDA0ZWQ5OWNiZCBsZWdhY3ktdHJ1bmsKKzQ1OTU3IDY3MDEzMDllZmE3Njg2ZTYwMjcyMmNkMzUxNzQzN2FkZTExZjZiNDAgbGVnYWN5LXRydW5rCis0NTk1OCA4NmEwNTFkMjI2NGQyYTI5MDU4MmI0ZWYwOGEyNWY1ODVlZWMxMTk0IHJlbGVhc2UyNC1tYWludAorNDU5NjAgOWQ0ZmNjMzkwMjM2ZTRhYjVkODEwMDVkNTJkYmVjYTc0YTJkMzJhZCBsZWdhY3ktdHJ1bmsKKzQ1OTYzIDlhNjM3YmY0ZGY0MjdhYmEzYWZjYTA3NjJjMzIzMWUwZDBlNjk4ZDYgbGVnYWN5LXRydW5rCis0NTk2NCBlMmVmNjBmZWMzZGFkOTFhNmRmMWU0NTE0YjAyMGU1N2Y1MGE3MWEyIGxlZ2FjeS10cnVuaworNDU5NjUgNDA4MmQxYTExOTE3YzEwZjIwOTNkODJhNDc4OGRkYmJjZTM0ZWExOSBsZWdhY3ktdHJ1bmsKKzQ1OTY2IDhmNDA4YWEyYTdlZmE0N2Y0YTViMDcwNDZkNWFmNGUxMDg1ZTk1NTMgcmVsZWFzZTI0LW1haW50Cis0NTk2NyAyYTliNDVkYzMxMTQxZDllYmI0MTU5Zjc5ZWQwNjMwOWViYWU0YmZiIGxlZ2FjeS10cnVuaworNDU5NjggYjIxYmU5ZDIzNDFhOTA3Mjk3NDg1M2ZkZWQ5NTgwNGEzYWVhYTEzZCBsZWdhY3ktdHJ1bmsKKzQ1OTY5IDdmYzkzZDk1MzBiZjYwZGY4NTI4MjYwMmQzNTQ0MDA0MjZlMGExZDMgbGVnYWN5LXRydW5rCis0NTk3MCBjNGFhNTZkN2E1YzEwNjM5NDM2NzViOTM4ZGU0YWE2NzJkNjYzYTBjIGxlZ2FjeS10cnVuaworNDU5NzQgNWUzNTQzYjc4MzM3YmEzNzZiMjFhOWNhYjhhNjJjYjI3Yzk1NzJiNyBsZWdhY3ktdHJ1bmsKKzQ1OTc1IGJmMzczNTIwNjg3MWJkMjdlOWRhMWMzOGFjZTA4NmRjNTcwMGI5ZDUgbGVnYWN5LXRydW5rCis0NTk3NiAwNzk1MzcyYTg0YWJmZTBkYzYyNWJjMGE3ZGViZDM5NzczYzFmMmUzIGxlZ2FjeS10cnVuaworNDU5NzcgNzg5MGY2YjkyYzE0OWNmOWIxOTY0YWE5MWUwYTI1YWQzN2MzMzdjOSBsZWdhY3ktdHJ1bmsKKzQ1OTc4IDRkZTMxNTVlMTkyYmM5OTA4ZjZmZGRjOGM4M2Y2YmQxNzJiOWViNTYgbGVnYWN5LXRydW5rCis0NTk3OSBjZjc4ZjljNDc5MGVlMTI5OWE5NGNkM2Q1MTM3ODNmODhlZWRhYmRhIHJlbGVhc2UyNC1tYWludAorNDU5ODAgNTc0ZmZjNGQ3YmY2YmM3Nzc0MDViZjA0NGFmNWNkZjZiZDFkMjY1NiBsZWdhY3ktdHJ1bmsKKzQ1OTgxIGJiNjA5Mjk5NTQwOTkzNTEzNmEwMmM5ZDBlOWZiODNlODE3ZTFkYWUgbGVnYWN5LXRydW5rCis0NTk4MiBhNzk3ZWZiNGU3ZjgzZmVmMjM1MzNiYjRjMDQ3NzVlNjc1MzFiMzM4IGxlZ2FjeS10cnVuaworNDU5ODcgODVjODI4ODc4MTg4YjM1ZGJkZTA0ZGE1NzRhODI5NjBjY2NjMTdlYyBsZWdhY3ktdHJ1bmsKKzQ1OTg4IDhiNjAxN2M5MzdhYzI3ZjAwODkzYWExZTk5NGE4ZTdmMTY2YjhkYWQgbGVnYWN5LXRydW5rCis0NTk4OSA1MjU2MjRlOTRlNzhhZTc2ZGE4ZTg1MzJhYTM5NzFjMmI0ZGJjOGY3IHJlbGVhc2UyNC1tYWludAorNDU5OTAgMzI0NzJlYTVmM2NkYjYwOGYzNjcwMmRmYmIyZGVkYjAwZTE1OWIyYyBsZWdhY3ktdHJ1bmsKKzQ1OTkyIDM4MGRhZDM5NTU5OTE0ZjlkNTQ3NmFmZGZkMmY4MDg0NDkwOWFlZmUgbGVnYWN5LXRydW5rCis0NTk5MyBlYmQ1NzMyMTBlMjUwMzhjZTQ0YzA1MDY4ZTE2OTg1ZmY1ZDZiYjdhIGxlZ2FjeS10cnVuaworNDU5OTQgNGJkZjI3YmQ3M2QyMmFkNWU3NzRiMjYyMGE3YTNlZTgzZjRhMDk4MSBsZWdhY3ktdHJ1bmsKKzQ1OTk1IGNkZjhmNTMzNDQyNjllOTIwNGQ2NTlhZDc2N2MxNGI4MWE0OGVkMjAgbGVnYWN5LXRydW5rCis0NTk5NiA2NzY0OTJhOTNjOGE3YmY3ZGVjNTdiMWY2YTk5ZDIzNWYwN2IxNzMwIGxlZ2FjeS10cnVuaworNDU5OTcgZWY4MmM1ZDAxNDYwN2ZiYjU4ZmMwYzEwYTc5NWY5NTViODY0NTdiZSBsZWdhY3ktdHJ1bmsKKzQ1OTk4IGYyNTJjNmFlMGM0MjY0MzYyNmM5NDYyNWE1ZTcwNjA3NTQ1MTJjZWQgbGVnYWN5LXRydW5rCis0NTk5OSAyOWI3MzZmMDczYTM1YzNmYjhlNDA0MDIxNjdmYWI1M2ZmYTBmNGI0IGxlZ2FjeS10cnVuaworNDYwMDAgYWI3MDRiOTllMTUwY2YwMzc1OWU3ZWE2ZWZlYmNkY2Q2ODAzM2JmZiBsZWdhY3ktdHJ1bmsKKzQ2MDAxIGQ4MzU1Y2NjZmY0YWNmYzI5N2MyNjA4MmYyY2NkM2Y2MjE4NzJjYTcgbGVnYWN5LXRydW5rCis0NjAwMiBmZWE1ZDJmZDliOGE0ODNjNzExOTY4YzhiNzEwZjA1YTM5ODQ5MTlmIHJlbGVhc2UyNC1tYWludAorNDYwMDMgZTdkMzBkNzVkYWU3YzJiZmI0MDg1ODg0MDgyNjM2ZTc0Zjg0MTAzYyBsZWdhY3ktdHJ1bmsKKzQ2MDA1IGFkOGI3NmU5OTI2MTA1MmIxOTE2ZDMwMjczYzY3M2U4OTUxNTJkMjcgbGVnYWN5LXRydW5rCis0NjAwNyBjYTEwNTA3YTZhZmJmM2NjN2I2ZmJjMzI3MWEzYmFlZTYxOGM1NDM2IGxlZ2FjeS10cnVuaworNDYwMDkgMGFlNGJiNzRlNzgxYTgzNGMzYTRkOTIzYjI2MWVkMGU2N2JjOGFjZSBsZWdhY3ktdHJ1bmsKKzQ2MDEwIDMzNzlhZDY2YjBlMDczYTQ1ZmM3NTFlYWI1NTljM2QwNzViMWMxMzYgbGVnYWN5LXRydW5rCis0NjAxMSAzYjVjZDdjNjZkYTA5MDk3ODc1YmRkOTcwOTljOGQzMDdmMjUxNDJhIHJlbGVhc2UyNC1tYWludAorNDYwMTIgZDZkODc5YWYzNmQzNGE1YzcwYTIxYWFhNzY1NmVjYTU1ODJlNjFiYiBsZWdhY3ktdHJ1bmsKKzQ2MDE1IGY4Mzg1ZDZjOGY1ZWUxNjA0NTFlNzllZjk5M2ViZTkxYmU3MDVkZWMgbGVnYWN5LXRydW5rCis0NjAxNiA2Y2Y0NjYyNzYzYTFhMjkzYzQ2NDQ2YWRiYzcwMTA4OGEyMDBhYjk5IGxlZ2FjeS10cnVuaworNDYwMTcgMzY1NjNiMTNjZTc5MmE3MmJiMGY4MGFlMGQ1M2E3MGNmZjMzZmE2OSBsZWdhY3ktdHJ1bmsKKzQ2MDE4IGY5MTM1MDUwMDgzNDZmNDNkMTZkY2FlMjkwOWYyYTljYzBlNWQwYjYgbGVnYWN5LXRydW5rCis0NjAxOSBkNmVhN2Q0M2ViZmMwYWJjNzYwMjY0NWU0ZTI4YmEyOWNmZWIxMjJhIGxlZ2FjeS10cnVuaworNDYwMjAgYWM1MDZlMmRmMDRkNTM5NmE0OTY3ZTRlNzgzMGE5ZjU1ZjRiYzg4OCBsZWdhY3ktdHJ1bmsKKzQ2MDIxIDIwNGVjMzgzYjQ0NWFiZjM5YmY3NTJkYWVkNDBiYjI3ODA2ZGVhMjQgbGVnYWN5LXRydW5rCis0NjAyMiAzMDE4OGM1MjNiYzU1OGRhZDA3N2IzNWRjZDI4YmM3YTk1MTI2YTI1IGxlZ2FjeS10cnVuaworNDYwMjMgYWFlMmZmMzNlMjdjMzg1NDBkYWE3NGU3MWIzOTJjZGM3MGFlMTE1OCBsZWdhY3ktdHJ1bmsKKzQ2MDI0IGFiMWRjN2UyM2JmZTUxMzllNTY0NTcxZTk2NjBiNzY5ZWFhZGZkNTYgbGVnYWN5LXRydW5rCis0NjAyNSA3Y2FhNmQzM2E0YzY3OThkNDgwNjM0MWEyYTc3MGVjMWNhZmFjNDMzIGxlZ2FjeS10cnVuaworNDYwMjYgYmZiNzZhZTgyYzkxMjFiZTA4M2EzMGE4YmJlMjU1MGIwMmFjMDVkYiBsZWdhY3ktdHJ1bmsKKzQ2MDI3IGMyZTNiNWMzNmRlNDUyYmQwZTRlNzQ3MmFkYTMwNDE3YTYwN2YyZjEgbGVnYWN5LXRydW5rCis0NjAyOCBmYTNjNGVhOTlkOTVjYTZlZGVkMWE3ZjhlNTM5Yzc5NTM4Njc4M2I4IGxlZ2FjeS10cnVuaworNDYwMjkgMGI0NzMxMDQ5YjcxY2U4OTBiYmJlZDMzOWE3OTc2YmI5MmQzZjE0NyBsZWdhY3ktdHJ1bmsKKzQ2MDMwIDA3YWJjNjI4NDg5OWRmYTFmMGEzNTQwZjQwMjBmNjRkMzRmMTk0MTIgbGVnYWN5LXRydW5rCis0NjAzMiBiNzNmMjRlMjFiMGFiNjRjNWJiOWQ4ZDhmMTc4YWJhZmIwOGEwYmIzIGxlZ2FjeS10cnVuaworNDYwMzMgYjI4NmVkNDU0MzlkNjYwYmUwYzkwMDc3MDJiMjM0YzdlZGQyOTVjMCBsZWdhY3ktdHJ1bmsKKzQ2MDM0IGIzNWNkYTU1ZDYwYzZhMTk3MDk1N2E4YWFiNzhmOTY4OWI0NmRiMGYgbGVnYWN5LXRydW5rCis0NjAzNSA3M2M3YWQ1ZTg3ZGViYTc5Zjg2ZGM4MDRkMTM2MTk5NjZlMTNkNGJlIGxlZ2FjeS10cnVuaworNDYwMzYgNmZlYWE0MmVmZjY5ZjRkNTFmMTJlYjJlN2IyODk2OTZiMGFhMDg4MCBsZWdhY3ktdHJ1bmsKKzQ2MDM3IDQyZDZiYWI4ODA3OWZmNjBkZTIxYjE3NzYwYmZkNDM4ZGZmOGZhNTcgbGVnYWN5LXRydW5rCis0NjAzOCA4MWUzODVhNjQxZWY4YjA3MDNhZWViODVmN2Y5ZDZmNjAyZDZmNDQ1IGxlZ2FjeS10cnVuaworNDYwMzkgNGNiOWRjMGRjM2Y5ZWJkMWI1ODZiZjYwZWQ5OTVkMjI0YTc5N2NiZSBsZWdhY3ktdHJ1bmsKKzQ2MDQwIGM2NGNkMjcxYWNlYTlhZmM0NTZkNTc3YTVkMTRiMGQ2YTdmNzFhODEgbGVnYWN5LXRydW5rCis0NjA0MSBjMDdhNWMyMzA0ZjNmY2Y5Njk3MGM3MWRkYWZmNTBhZGJkMzc5MGQ3IGxlZ2FjeS10cnVuaworNDYwNDQgMjE5NTk3MmY3MzkxZDRlYzQxNmJjOGNkNWE2NDFlN2ExN2RhYTVkZiBsZWdhY3ktdHJ1bmsKKzQ2MDQ1IDI2ZmI1NjM4ODFjOTNkOThiYjViNDBkNWQ1NmIyOGYxN2M4NjVhY2EgbGVnYWN5LXRydW5rCis0NjA0NiBjYmYyZDU2MmUzMjI5MjkxMDQwY2FhMjBhYzgyYzkwOWRhN2UyMWZiIGxlZ2FjeS10cnVuaworNDYwNDcgYzQ5MDdkOTkwZGI1ZDcwYThlM2RiNzU4NTIyM2ZlYWRhOWMzYjA0MyBsZWdhY3ktdHJ1bmsKKzQ2MDUwIDI4NTExNTU0ZGZmMWZmNGViZDUyOWE2NDAyOTg0NTNhZGJjZGNlYWQgbGVnYWN5LXRydW5rCis0NjA1MiBiMGJhNGU4MjI5Zjc3NTE5NjQ3MTRkNzY1YWI0MDQwYWVhM2IyZDJmIGxlZ2FjeS10cnVuaworNDYwNTQgYWNjZGYxMTI0YmEyZWRmM2JlMjYzMmRmNzgwMTlmYjFhODQ0YTc4OCBsZWdhY3ktdHJ1bmsKKzQ2MDU1IDEwOTQzN2M0Y2FjNDc2MDk3Mzg4ODgxMjU2NWZlYWIxMTU5N2ZlODQgbGVnYWN5LXRydW5rCis0NjA1NiBmOTYxMjE3N2QwOGQxYmIzMzE5NGNhYTY5ZWNmNmUxNWRmZTgyNGJlIHJlbGVhc2UyNC1tYWludAorNDYwNTcgY2MwNTU2YWRjMmIwY2JmMTE3YzRjNWQzZDBiNDU1NjIzYTU3MmJmMyBsZWdhY3ktdHJ1bmsKKzQ2MDU4IDJkMTgyZmNmYWI2Yjk4MDQwZGZhZjBmMGE4YmVkZDZiNDMzNmZkY2UgbGVnYWN5LXRydW5rCis0NjA1OSBiNGJkYmQ3YjFmNWVlNzYyNzI4Y2E4YTEwZTAzODFjZGVmNmFkYzAzIGxlZ2FjeS10cnVuaworNDYwNjEgY2ExZjFjMjE4OWU3NGZhZDBkYmFiNDVkMTZkMTk4MTAxOTViYjRjNCBsZWdhY3ktdHJ1bmsKKzQ2MDYyIGE2OWVlNWJhZDliMjNjNmViODY5ZWI1YjY0M2MxZWU2MzE4ZDI2NzcgbGVnYWN5LXRydW5rCis0NjA2MyBkYWUwZTRjMzkwZTc3MjE0NWJmZWQ1Yjg4ODYyYjRlOGI0MTgyYjZhIGxlZ2FjeS10cnVuaworNDYwNjQgYWE2MjA4NTZlOGEzZjc1Y2E2N2ZmZTlkOTNiZGRkMDU2MWI1MTZlMyBsZWdhY3ktdHJ1bmsKKzQ2MDY1IDk1OTEwYmM2NWY2Yjk5MWY0N2M3ZWNjODY3MjlkOWQ5YTczNGQ2OWIgbGVnYWN5LXRydW5rCis0NjA2OCAxMDU1ZDYyNmVkNTk0ZDYzOGYwNDMzMTI1NzFkYTlhYzFhZDk3NTU2IHJqb25lcy1mdW5jY2FsbAorNDYwNjkgODgyYjYxMmE1ZmU5Y2I3YTM1Yzc4ZmVmMzQxMDZkZDMxNGM1MDViOSByam9uZXMtZnVuY2NhbGwKKzQ2MDcwIDI3YzgwMDU4MTczZThhN2FmMWEyYzZmODQwMGQ4M2IyYTQyMWJlNzEgbGVnYWN5LXRydW5rCis0NjA3MSBmYjRmMGZkN2ViYTRlYmUzNTc1OGZkZGViMjVlNDMwN2JjMWU4ZjgyIGxlZ2FjeS10cnVuaworNDYwNzIgNTEyNDFjYzk1ODgzZWRlZDVjOGQ3NWQzZDg5OWNhNGM0MjcyMTIwNyBzcmVpZnNjaG5laWRlci02NGludHMKKzQ2MDczIDdlMTZmY2NlMzRhMTM1Mzk1MWE5NWM2ZWIyNDdiNmNjNjE0Y2UwNjEgbGVnYWN5LXRydW5rCis0NjA3NSBkNzEwYzJkYmEzZTg4MGM5MjBjZmU4OWQwMWY5MDEzNTg4YzljMzA5IGxlZ2FjeS10cnVuaworNDYwNzYgZmViMDBkZjkxOTIyMDZjNDQ0YzQyY2IyOTQ1YzY1YThmODc3ZTI3OCBsZWdhY3ktdHJ1bmsKKzQ2MDc3IGNjZWQ4M2E5MTU3NzhhZjdkMjBhMzJhMTU4N2YyMDMxZTg4NDYwYmIgcmpvbmVzLWZ1bmNjYWxsCis0NjA3OSA2MDRhZjg2N2M2NWZiODEyNTI0ODNlZjVkYWU0YWQyNGFhNDhhY2VhIGxlZ2FjeS10cnVuaworNDYwODAgY2QzNGEwODgzMDUzNmUzYjE0NDdhMTUzOWY5ZWQzMGE1OTkzZDFhMiByam9uZXMtZnVuY2NhbGwKKzQ2MDgxIGVjNTRjNmRmOTA0MDJiZmVmMWJhNjEwMTk1NTM2OTgwZTJmMzJlYTMgcmpvbmVzLWZ1bmNjYWxsCis0NjA4MiAwMmEwYzY5MjhjNTBhN2MxYzY5MjFiOWQwZWQyOWE0ZjRiYTI4YTViIHN0ZXZlLW5vdHJhY2luZworNDYwODQgMDM3M2EwNzQwMDRjMmVhOWE1NDlmMmVlZjFhYTYyZDg1MGQ1MTdjNiBsZWdhY3ktdHJ1bmsKKzQ2MDg1IDVlYWY4Yjk1ODdkODY5OTQxYzQ4YWJkMTE0ZDcwMzJmYTZiYjYwNTUgbGVnYWN5LXRydW5rCis0NjA4NiA4NzIwNDJhM2IxMzQzYzlhNTIyY2RlMmY4ZTg1YmY4ZTE2ZWQ1MzM3IHJqb25lcy1mdW5jY2FsbAorNDYwODggZmI4MTZkZmNkMDMxNTQzMGUyYmZmZTc0NTAzYjBiYjgwMDJjMWYyZSByam9uZXMtZnVuY2NhbGwKKzQ2MDg5IDRjZWFiYjU0MTRkNWYyYTI0MzNmMmEzODc2NDlhYzY5M2Y1NGZkMmUgcmpvbmVzLWZ1bmNjYWxsCis0NjA5MCA5YTI4YmZhNmY3ODdjNDYzNzNhOGNiYmIwMGVlNzQyOTUxYjY4NDQxIGJsYWlzLWJ5dGVidWYKKzQ2MDkzIDAwNDU2ZmNhMzdjNDI0NGNkZWRkYjIxYjg0NTUzYmYzZTdlNzJlZTMgcmpvbmVzLWZ1bmNjYWxsCis0NjA5NCAwZGU5YTc4OWRlMzkwNGU1YzY5OGEwOWFkY2FkNmIxZTJlYWU3Y2Y5IGxlZ2FjeS10cnVuaworNDYwOTUgMGJhNzExYTQ5NmU2YjAwMTlkMDM0NDQ3ZDJmZDlhZTRkOWQyNmZhMCBsZWdhY3ktdHJ1bmsKKzQ2MDk2IGE2MzdjNzhiZjExOTVlZmM3YjVmNGE5NDdiZjFlMGZiMTg5NDQwYTIgbGVnYWN5LXRydW5rCis0NjA5OCA2YTZjNTQ5MmI5YWQyZWFkOWFlYThlMzAyMzc3NzdhY2Y0NTg3MDQ1IGxlZ2FjeS10cnVuaworNDYxMDEgZWUyMTM5OTM1YTFkM2FmNTJkNTAwOWI3NDcxOTI4NjQwMjIxNmZjMiBsZWdhY3ktdHJ1bmsKKzQ2MTAzIDViNTg3MTkwZjRjNjg1NzdhMzI1Mjk2M2M4NTc2YzRmNDNmOGMxNjQgbGVnYWN5LXRydW5rCis0NjEwNCAzMDc4ZmRiN2NmM2RmNTVjNzNmNDNhZmI1MzI3OTUyN2E5OTExNmZkIGxlZ2FjeS10cnVuaworNDYxMDggYjdhYWYyMWM0NzU2NDAzZjAxODI4YTc5YmZjYjI2YjcyZmEzYWI5NCBsZWdhY3ktdHJ1bmsKKzQ2MTA5IDc2YmVkZjllZDIyZmYyNGUzZDU0MzdjNjRiZjUwYjBlOTc2MDBkZjggbGVnYWN5LXRydW5rCis0NjExMCBjYTM0NTIxYmIxM2MzODM3ZDY1MWZjYTkwYzFkZjBjNGJjZTI5MjIyIGxlZ2FjeS10cnVuaworNDYxMTMgNzViZGQ0NGY4NWRjZDRhZGE4NmNlYjA5ZTJmNzJjNDQ3N2NmMGVkYiBsZWdhY3ktdHJ1bmsKKzQ2MTE1IDlhOTA3NTNmNmJmYmIyMWE5ZDdiZjIxM2VjOTdiNWYxNzQ0NDcxMjUgLi4vYmlwcG9saXRvLW5ld3N0cnVjdAorNDYxMTcgNjY3YTJjYWU3OWU2MjY5NjUxNmI5MTIwMzE2ZjBmM2ZiOTZkNGM3NiAuLi9iaXBwb2xpdG8tbmV3c3RydWN0Cis0NjExOCA1ODMxN2RmNGQzMGJiY2I0MmRhYjAzNzI4OTU1ODY1YjQ0ZDQ4ZWEzIGJsYWlzLWJ5dGVidWYKKzQ2MTIzIDRiMGZmNzg4ZTlmZGFlMGE3ZGJiNmVkY2Q1MjU1Mjg3ZmQ0ZjMyNWMgcnVuYXItbG9uZ3NsaWNlLWJyYW5jaAorNDYxMjUgMGYwZjA0NmEyOWZiYTQ4ZGM3ZjdlODNhYTM4YjRjY2U5ZGE4ODlhYSByam9uZXMtZnVuY2NhbGwKKzQ2MTI2IGZmNTBhZTEzZGI5ZTY4ZGZmNjBiNTNkODUyYTE3MTkzNDA1ZGE3ZmQgcmpvbmVzLWZ1bmNjYWxsCis0NjEyNyBlYWFlNjk5MGUyZDE4ZDJhOGRiNDdkNjZhYjA5YjYxOTdlNDk3OGE1IHJqb25lcy1mdW5jY2FsbAorNDYxMjggNGJkMjk5ZDAwZTRjNmYxNzNjYmZmMzVkZWY5MzgwZjQ5Mzk0ZTllOCBsZWdhY3ktdHJ1bmsKKzQ2MTI5IGJmNWZiNmU3NTI3YzJmZmU4NTFhOTlkNTIwZGNlYmYzNTcxYWJjODggbGVnYWN5LXRydW5rCis0NjEzMCA0OTVhMzRlNTRkNjBhNTI3ODUyZDg3MDRhNDRhZmFkMzkyMGZiYWYzIGxlZ2FjeS10cnVuaworNDYxMzEgOWVmY2NmNTZkNGU3MWY0ZDQ3M2VmMDJiNDgzYmRmMWQzZjQ1ZDliZSBsZWdhY3ktdHJ1bmsKKzQ2MTMyIGFmNDZjN2VkMDVlYjc5MWIxZTQzNjViNzgwODI0MmViZmJlMjY4NDQgbGVnYWN5LXRydW5rCis0NjEzMyA5ZmRkNDM0MjE2ZWY4MmVkYjJlZjdhNWZhN2MyNjdmOGNmMWViZGMyIGxlZ2FjeS10cnVuaworNDYxMzQgODk1ZGE0MjQ4MGYxYzM1NzM3MDhhYzEyODhkZGY0NmY4YzFlNDU5YyBsZWdhY3ktdHJ1bmsKKzQ2MTM2IGMxY2UwYjgzMTYzNjcwM2QxM2Q4MTA3ZWU2ZDQwNTMxYzBlNGZhY2MgbGVnYWN5LXRydW5rCis0NjE0MSAyNzg4MmE4ZTQzYTllODliMTAzM2IyMmEzNzMxN2EwNGFlZTllOThkIGxlZ2FjeS10cnVuaworNDYxNDIgNmI3OWZmZmJiZTFmMDQzM2QxYmQ1YWMxNTBlODRlNjQ1OTM1NWJhMiBsZWdhY3ktdHJ1bmsKKzQ2MTQ0IGVmYjdlODcyNGVlZmE2Y2U3NjA0N2FhOTVhZjQ0ZGNjZjFmZDE1ZjUgbGVnYWN5LXRydW5rCis0NjE0OCAzMzYzMWI2YjA4MDE0NzU5NmU2MjA1ZjUzZWI5YTk5YTY4NDFhODZiIGxlZ2FjeS10cnVuaworNDYxNDkgN2Q4MmNkZWQ4YWIxNTJlYjE5NTQ4ZmY5OTk4OTM3NjYxODUwNjQzZSBsZWdhY3ktdHJ1bmsKKzQ2MTUwIDc0YzgyZWJjNGU0NDk5MWNiNWE1YWQ3MGVhOTQ3NWYzNTNmNDVmNGQgbGVnYWN5LXRydW5rCis0NjE1MSBjZjVhOTA1N2VkM2E5MjA0ZWI4NzU2ZGI5YzQ0ZDIzNWJhNzBhZjM5IGxlZ2FjeS10cnVuaworNDYxNTIgZTA3ZGMxMzQ4ZGFkOWQ0YzQ0N2YyZjIyMDFlZDRjOTdmNTI3ZDJmYSBsZWdhY3ktdHJ1bmsKKzQ2MTUzIGI4YmVmNWEwN2RmNmNjZmI1MjEyZGU3ZmI3YzExMjdmZWMwOTA5ZTggbGVnYWN5LXRydW5rCis0NjE1NSAxZGM1NjU3ZjE3NDUzYzcwYTc4YmU2Y2E3NmUyNjNmMzRkY2Q4NTVjIGxlZ2FjeS10cnVuaworNDYxNTYgMzE0ZDY2NmM3YWRiZDFkN2VjMjQ5OGIzMTYwZmQwNzg2MThjOTM4OSBsZWdhY3ktdHJ1bmsKKzQ2MTU3IGRlOWYxYTE0MDYxMTkzNzJkZjllZjIzYTQyM2Q4YjYyYTA4Njk1ZTcgbGVnYWN5LXRydW5rCis0NjE1OCA5YWU2OWJjYWI5ZjcyMjE3YmJjMTRlYTlmOWU1MzgzODFmMzc2MTA5IGxlZ2FjeS10cnVuaworNDYxNTkgMDY5MWYzZmIzOWNhYTFkMGQ5YTQ4ZDRlZWU0ZWE4N2MxNWM2ODE3OCBibGFpcy1ieXRlYnVmCis0NjE2MSAyZDU1ZTk3OTAwMzU4YmI3YjQ1MzNkZDA5Njc3NWQ3NmM5N2Y2ZWQ0IGxlZ2FjeS10cnVuaworNDYxNjIgMzU3YjU0MDNlODFhZDNjOWY2MzcyMzM3NjllOWNhN2E0ZjYxYWRmYSBibGFpcy1ieXRlYnVmCis0NjE2NCAwNDJlZDZmODA4NDdjYzA0YmIzYTQwMTAzM2EzN2ZmYzM5ZDNkYTlkIGJsYWlzLWJ5dGVidWYKKzQ2MTY1IGE1ODliNzQ0MTVjMDIyZjZlMTZlNzAxNGRjNmY2M2E1YTU0MjA4MTMgYmxhaXMtYnl0ZWJ1ZgorNDYxNzAgODliMmNhNTEyMzA3MjNlMmE4ZWEzMGQxNjQ0MmFlMGEwMmMxMzY5MCByam9uZXMtcHJlYWxsb2MKKzQ2MTcxIDBhOTU0ZjRlM2UzNmEyYWNjOTc2N2JkMGZkMjExMDk0M2VjMTA1NDQgcmpvbmVzLXByZWFsbG9jCis0NjE3MyA0M2IxNDc0YjUxMmJiYjRjZjAwOGZhZGI4ZmMzZmExOTljZDNjZTRhIGxlZ2FjeS10cnVuaworNDYxNzUgNmRhMzFjNDllYjBhNjg2MzYxZTFhNTY1Y2I4ODhmMzc0NWJhNmMwZCByam9uZXMtcHJlYWxsb2MKKzQ2MTc2IDIyOTk1YzEwOWVmZDY3ZTVjMDY2ZWNhNjljZjNjYTBkNDg0ZjNhZDEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE3NyA4YWQ5ZTE0NDg5ZmZmMWYxYjU1OGUxYjhjNDQ2YWM4OWY0NWNjZDJmIGJsYWlzLWJ5dGVidWYKKzQ2MTgyIGI1YjI1Njk2NmZlOTJiNDE1Yjc0YjcwMzNkODg4NTRiMGZiZjQ2MzIgbGVnYWN5LXRydW5rCis0NjE4NCBiODI1ZTYyMjczNjY2ZTZkMmIxMTM4ZDU5ODJlMDlmNzgzOWUwMzM3IGxlZ2FjeS10cnVuaworNDYxODYgYzI2YjlmZGI2NWZiM2I1NzZiNjM1ZDUzMTdiMmY5YTQxNTczODZhMyBibGFpcy1ieXRlYnVmCis0NjE4OSAyNjBkNWE2Y2UzMGY0ZTI1NjlhYjgwMTdjMzY4Nzc1NzEyZDFmYWJlIGxlZ2FjeS10cnVuaworNDYxOTAgZmVmNDk2YWQ3ZjZjZDJiZGMxZjI1ZDdhYzA1YjQ3OTk5YmZkM2U3ZSBibGFpcy1ieXRlYnVmCis0NjE5MiA1MWQ2ZTI3MTgyNDM2OGVlZWFmMmJiYzY4NDc3MzkzY2NmZjBlNDA4IGJsYWlzLWJ5dGVidWYKKzQ2MTkzIGFhY2UzMTQ4ZjdlYmFmMDIyOTI2ZDNkMjc4NzhlYWMxYzZhMDkyNDUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5NCAzY2ZhZTNhMGU2OTU5MTA3MWQxNzRiMTRjMmJhYTI3MzE4OWYzNTBjIGJsYWlzLWJ5dGVidWYKKzQ2MTk1IGY3YTc3NDJhZWY4M2I4NTQyMzA3NGViZTE5ZWUwY2JkMTExYTFiYTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5NyA1OGQyMGZlYjZlMDM5YmJhNmYxNjE4OTM3ZjhlMzgwZTBlYTc5NjQ4IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYxOTggNjg2MGMzNmY3ZGI3NTE0ZjVjYWQ5YmUzNTViODI4ZWQ4NjcyODgzNiBsZWdhY3ktdHJ1bmsKKzQ2MTk5IDkxZmUxYjBhZGJmMjYxNGY5ZWIwYmE5NzRmNjgxYjQyMjE1M2Q3YmYgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjIwMCAzMmJhM2EwYzYwNDA5MzgzZDhkZDMzNDg2YjE5ZWY3MTYxYzBlMDY0IGxlZ2FjeS10cnVuaworNDYyMDEgYjI0OTFmZDBhNGRjNmM2N2RiNGIyOWFhNWFkOWFmMjMxNDJiODliOSBsZWdhY3ktdHJ1bmsKKzQ2MjAyIDFjNWVlOTYzMWM2YjhiODk2NmJlODU3OWRlMTU5ZTY1YjA5YjIzNjUgbGVnYWN5LXRydW5rCis0NjIwMyA4OGNjN2U0ZjAxZmY0ZDBmNTdmM2MyYTBhZDE5OGE5NmQ3Y2U2M2RiIGxlZ2FjeS10cnVuaworNDYyMDQgYmNlYTc0YjM1ZDFmZWRlMGY3OTE3YzE0M2EzY2JkYTU1MWRjYWMxZSBsZWdhY3ktdHJ1bmsKKzQ2MjA1IDY2MzIyZmNhOTFiNDFiYmJjMzI0M2VjMGViM2IzN2MxMDlmMmFkYTMgbGVnYWN5LXRydW5rCis0NjIwNiAwNDNlMjlhMWUzOTg1ZWNjYjAxMDFmYTY1M2RlNmQ3YmFjYjE0YWRmIHJlbGVhc2UyNC1tYWludAorNDYyMDcgNDU3ODgxMjhhMWIxNTQ0OWVhNmIyZmNhYmQ4NGIwODc3YzEyY2UxMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjA4IDY5ODE5OGNhYmJjNWFiNzc3NTFiNTkwOWMxMzlmZDI4ZGY5NDZiZmYgbGVnYWN5LXRydW5rCis0NjIwOSA4YzUxNDZjNTFlMmRmMDBlOGQyNzhkMTBmMGI0Y2ZkOTg4YzRjMGJjIGxlZ2FjeS10cnVuaworNDYyMTAgNzVlMWNkMjJiNTZiZGRjNGFmMGU4MDAzZjg0MmEwYWM0MmNmYzAyMCBsZWdhY3ktdHJ1bmsKKzQ2MjExIDNkZTcwNjRkZmE1NjQxNGFjNDVjOTgwOGM1MzUwNDVmYWZiYzI2Y2UgbGVnYWN5LXRydW5rCis0NjIxMiA5YmI0YzE5ZTU2MTM0YzY4OTFiOTBlOGFkNDhhYjdlMDk0NTY5Yjk0IGJsYWlzLWJ5dGVidWYKKzQ2MjE0IGFkMWUyNDM4Y2ZhYTViZjQ1ZTQ4Yzk5NDk2ZThlYjA0NDY1OTQ1NzcgbGVnYWN5LXRydW5rCis0NjIxNSA3YjNkNGE4MWU5NGRlNWFhYWFjNTZkZDgzYzc0ZWEyNzVmYmI1MDMzIGJsYWlzLWJ5dGVidWYKKzQ2MjE2IGUxNWIxNGM3ZmExNGQ1YzQ0MDA1MmFmMTEwNWNiMTkxODFhZWU5Y2YgbGVnYWN5LXRydW5rCis0NjIxNyA2ODhmMjU3NTcxMDQzMzEzZmExMGFmODA4Y2IxZWJlMDhkZmNkMTllIGxlZ2FjeS10cnVuaworNDYyMTkgNDE3NjhkZTE3ZWFkOTA5MmM0NTRhZGY5OTEwZjlkOGRiYjg1MmFjNyBsZWdhY3ktdHJ1bmsKKzQ2MjIwIDRjMGMzZWNmZmNhYzJiMzIxODQzYjE5Nzg5NGYzMDEzMzIzZmYyMmYgbGVnYWN5LXRydW5rCis0NjIyMSBiYTcxM2QzMWQwMGM2Njk5MjFiMzczM2NmNGM5ZWQwNTExMjA4YWFhIGxlZ2FjeS10cnVuaworNDYyMjIgMjljY2Q3NzEwNDEzZmVmZDllYTY5MDgyMGFiYjRlYjA0MDNiMzJlYSBsZWdhY3ktdHJ1bmsKKzQ2MjIzIDk4NmJlZTE2YmI0NDUxY2IxZDgyMzVhYjdlYjVlYzc4ZTM1MGI3MDcgbGVnYWN5LXRydW5rCis0NjIyNCBhZTZiYmYyZjJhNDEyYjZjNDFkMTU0NGMyMGU0MjQzNzNlZDdkNDk1IGxlZ2FjeS10cnVuaworNDYyMjYgNDE4MDk0MDZhMzVlYmEwNGY5M2FmYjRmNDU0YWNjMDVlYzk4NDEwYSBsZWdhY3ktdHJ1bmsKKzQ2MjI3IGRjY2JjYmJkNjcyMDhhMDc4MjMwZWNjOGE4MDNhOGQ5NDkwNjExZWEgbGVnYWN5LXRydW5rCis0NjIyOSA5YzA4YTdiZGJjMzEwYTc3NDYwODQ1OTlmNmRjYzU4ZWNlM2FjMGZkIGxlZ2FjeS10cnVuaworNDYyMzAgMTdlYWE4YjU3ZTA1MmY1MTQ2NWNiMzMxZmFiZmMzYzVhMzM3ZTcxYyBsZWdhY3ktdHJ1bmsKKzQ2MjMxIDA1NDk2ZGVlYmE2NGJlNzA0MDEwYmM2MWYzYzhlNWRlMmZkMGI1YWUgbGVnYWN5LXRydW5rCis0NjIzMiA2ZmMxZGMwODY0NTk0MDI1OTdmNzgzMDFiOTk0ZDBkOWY1YWI3MTQxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyMzMgM2U2ZDc3NTUyYmUzMDJiZWFjMjU2MmQ0ZDUyNzk3MTJlMDRkNjhmNSBsZWdhY3ktdHJ1bmsKKzQ2MjM0IGM1ZDYxOTY1Y2FkNDIxOWE4ZjdhMDJjZTNhYjJlM2NhY2Y3ZDg3ZWEgbGVnYWN5LXRydW5rCis0NjIzNSA1YTYzMzY5MDU2YTdmZTVmYzNjMGI1ZmYwZGUxMDg3YjE5NjUwNzE4IGxlZ2FjeS10cnVuaworNDYyMzYgZjI3OWQwMzFmMGNlYTNjZjhiYzRmMTAxOGFkOWZhOWQyNWU4ZDg2NiBibGFpcy1ieXRlYnVmCis0NjIzOCA3NGJlYjE4OWZkN2VlNDg0Y2ZjMmQyMzM4YWVhMjQ4YWJkYmY1ZWI2IGxlZ2FjeS10cnVuaworNDYyMzkgMmFhOTQwOTM1MWQ2MWY5MzE3Y2UxMWRhNzc1MmUwOTY1ZDcyZGIzYiBsZWdhY3ktdHJ1bmsKKzQ2MjQwIDg1MGQ0Zjc3MTdiOGRlYTBmOWJkZjU5MDBlNTAyM2MxNTBhZDZjYTIgbGVnYWN5LXRydW5rCis0NjI0MSBjOWRjMzAwZWVlNjgyYWNlMDVmNzdiNDg4ZDkwMzUzNjQ2ZWRmZmYwIGxlZ2FjeS10cnVuaworNDYyNDIgMDUzMjRhYTQ0NGJkZTFjMGI2ZjBkMjk5NGJhM2ZmNTE4NTUxOGY4MiBsZWdhY3ktdHJ1bmsKKzQ2MjQzIDRhOGM5ZjliNjZlNjhlYzk3MDVjMjNkYmE1YWVjMGE0OWZiZDcwZGEgbGVnYWN5LXRydW5rCis0NjI0NCAxZmRmMjlhODhmMGVlMGIxM2IyODkyMWE1ZmJmYjE3NTFiNWYwY2YzIGxlZ2FjeS10cnVuaworNDYyNDUgOTFjNmM5NDQ5MGIxYzU2NDRkYWI2OGY4OWU0YzQxY2U0MzM4ZTU2NyBsZWdhY3ktdHJ1bmsKKzQ2MjQ2IDJmMTZlMjcxNTIyMzViN2ZmM2NiODdiMTUxMTM1NWY3ODU3YzVhMjcgbGVnYWN5LXRydW5rCis0NjI0NyBlY2YyYmY0MTgyYWRmNDkzM2YxMmQwNjRjODUxYjg2ZjVhOTcwMTBkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNDggNjhhMzQ4Yzk4NjhkYjhiMzU4NjE1YmI0MDQ3MWJhY2EyNWE1MDIxYyBsZWdhY3ktdHJ1bmsKKzQ2MjQ5IGMwMDZjMjcyMTE2ZmZhYTZhODMyN2EzOWM0YTAzZmRiNGE4MjhjMDUgbGVnYWN5LXRydW5rCis0NjI1MSBjMzUwOGE5NDE1NjgzNjU5NmEwM2U4YTkwOTMyNjRjYzFkY2Q4OGJjIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNTIgZTE2YjQxNTc2ODZjYjlhNDg4ODUyZDQ0ODBmMjI3NTI2MTRmMDkzYiBsZWdhY3ktdHJ1bmsKKzQ2MjUzIDNkNDc3ZDE1ODQwMWM3MWIxMzg0M2Q3MDdmZmE2ZGJkYzFmZjc3NzkgbGVnYWN5LXRydW5rCis0NjI1NCBlYTBhZDRkNGZmOGVkZjBhY2I5ODUxOWUyZmU1ZDMwZTE1ZGUyZThhIGxlZ2FjeS10cnVuaworNDYyNTUgYzc3ZGEyNzM2ZmIyNjVkNmE0NDU3YWIwYzJjZTg4NTM2ODc0MTc2NCBsZWdhY3ktdHJ1bmsKKzQ2MjU2IDM1ODdlZTMxM2IwMDYxMDJhZTYxMGE1OTdlODRlNGU3ODI5NmEwYzUgbGVnYWN5LXRydW5rCis0NjI1NyAwNGYzOWVjYmM3M2M3NmE1NWFlOGNjMWVmNWI1M2RmNWI3ZWZkMGMzIGxlZ2FjeS10cnVuaworNDYyNTggZDMzZDhhOGI1NDVlZWViMTUwZDFiNGM1NzhjODBlOTMyZjQ0ZmI0NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjU5IDhhNThhYTQwZGNjMDVkNTgwNDFhNmI0YmU2ZjM4ZDE2NDFiMzBlMmYgbGVnYWN5LXRydW5rCis0NjI2MCA1NTY2MjBjZDdiMWRlM2MxMTg2NTE1MmQ3NTlkYjAwY2VhNTQ1M2QwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNjEgOWY4ODRkMzRhMGVjZDRiOTllNzIyOGQ1OThmNWIyOTU3ZGE4NDY5OSBsZWdhY3ktdHJ1bmsKKzQ2MjYyIGU5ZWI1MjZiNzExMTU4MGQxODNkOGRmZDdmY2VkOGIyYmU1NmZhZGIgbGVnYWN5LXRydW5rCis0NjI2MyBjZWViZTZjYzQ1NzA0YzhjMThiZmFhNGQ3YTFkOThhMzg1ZGU0OTc1IGxlZ2FjeS10cnVuaworNDYyNjQgYWIwMjIxODExNzcxN2JiNjFiMGE3NmM0YzViODY2MWJhMDUzMzJiNSBsZWdhY3ktdHJ1bmsKKzQ2MjY1IDA4NzI4NzAwOTY1OGVlYzcwOTk1NzJhZjViN2UyM2RmN2Q5ZGJkYTggbGVnYWN5LXRydW5rCis0NjI2NiA3YTZhZjRhMTQzYzYyYmM1ZjZlNGZmODkwYzk5NzIyZTVlMDAzNDY0IGxlZ2FjeS10cnVuaworNDYyNjcgOGE5Y2Q5OTk1MzVkMTc5NzQ2MGNlNmMwNTYwZjhiOGNjN2EyNDNhMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjY4IGViMjM3YTM3ZWEwMmRlYjMzMGUyZmU1ZTFmNDM3Mjk3MmIwODkwNzYgbGVnYWN5LXRydW5rCis0NjI2OSBkZGMyMDBhZmRlMWE4MzFiMWMyYmRhNzNmNmExMzZhNTI0NzNlOTFhIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNzAgZDZkNTUzYjlkNDY5NzdmYmRjY2VkMDFhZTIxMDQzZTUxZGYwN2M3NSBibGFpcy1ieXRlYnVmCis0NjI3MSA0NmQ3N2JiMzJmYjBkYThiNDFhNjVjMWIyNTAxYjRmYTExY2UxOWJjIGxlZ2FjeS10cnVuaworNDYyNzIgNWExNDczNjU1MjdlNTM4NDVhMGY3YWMxYTNjZjZlZTY5ODA5MGJhYiBsZWdhY3ktdHJ1bmsKKzQ2MjczIGY5MzMyYWQ0Mjg3YTdmNmQ4NjI0ZDkwODdjYjAyMTkwMWQ0NzM1YWMgbGVnYWN5LXRydW5rCis0NjI3NCA4MmI2ODA4NDZkZjg4OTdmZjcyOGJjZTdkNmU2NWQ4MDNkNDliMzgzIGxlZ2FjeS10cnVuaworNDYyNzUgODFiNjQxZGE1Yzc5NTJhN2UwNDA1ZjgzYjk2ZTlhZjAxYTFlNDA3NCByZWxlYXNlMjQtbWFpbnQKKzQ2Mjc2IDEwMzVhMmIzMWU2ZGYyNjE2YzlhNDIwOGVlYjFhYTk0ZTBmYWRmNmQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI3OCA5NThmOTE2ODQyMDlkMDBjMzNkN2ZlZmE2OGNlNDZlOWQwM2E5Y2VmIGxlZ2FjeS10cnVuaworNDYyODAgMTY3MGZmNzI2ZThmZDdkNzQ3ODI4NjE1ZjEwMDlhMjc0NTI1YzQ3NSBsZWdhY3ktdHJ1bmsKKzQ2MjgxIDMwOTFhNzVlYjU2MGM1NmRlNzdmODY5ZmZmN2ZmMTgxOTE2OTcwMmIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI4MyBkZDQxNzMxZGVlNmQ0YmQyYzhkMDVhYjU0ZTQ0NDUxNDhkMjUyYWM1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyODQgMmY0ZmI2NDE0ZTg3MjA4YWJjMTgzMWQzNWE2NTZiMDJiNTcxNzhlNSBibGFpcy1ieXRlYnVmCis0NjI4NSA4YTk5Y2RlZjBjOTRhY2I1ODFmNTNlYjI1Y2MyMWYxNGI5NmY1OWI4IGxlZ2FjeS10cnVuaworNDYyODYgYTY1NGQ2MWQzNmQ1MzE5NjcxYjEwYjBiMWU1MjE4OTFiMTc5Y2U3NCBsZWdhY3ktdHJ1bmsKKzQ2Mjg3IDUzODJhYWYzYTBkYWM1ZmNmMmU1ODlkMWY0MWZmZjBiMjk5MzZlNmUgbGVnYWN5LXRydW5rCis0NjI4OCBjOGU0YjNiMzk3NzQzMDVmYWM4YTdhNTEzOTc3NmQ5N2Q5YTNkNWZmIGxlZ2FjeS10cnVuaworNDYyODkgODM1ZWE1OThhNDA2MGJhODFiOTg4ZGMxNjMzZGU5OWRjMjkyNjIwZiBibGFpcy1ieXRlYnVmCis0NjI5MCA2NjEwZDRiZThmYmQ5MDI1MDU0MDNkOTJjMGJmYzM2MDA3OTM2MDNlIGxlZ2FjeS10cnVuaworNDYyOTEgZmU2NTNlMjI0ODhjOWEwYjA4MzMxZDA1NGI4ZjBlOTYxMGE0YjA2MSBsZWdhY3ktdHJ1bmsKKzQ2MjkyIDkyYjBmYzU0ZDIzMDBkMDU4ZDAyYmU3MDRlMmI3MDJmZTllNzE0ODIgbGVnYWN5LXRydW5rCis0NjI5MyA2ZDg2MTVmOWYxY2NhOTc4Mzg1Yjc5NjM4YmM4MTIzNDViZmMyMjc2IGxlZ2FjeS10cnVuaworNDYyOTQgOGQyOGU2M2U4ZjIxNjY0ODNmMDAyZTVkZjY0OTZhODViMWNlOTZmYiBsZWdhY3ktdHJ1bmsKKzQ2Mjk1IGFkMmU0ZGU0N2QwOTYzNjVkYWVkN2UxNGNmYmVlNGUxN2MwODljODMgbGVnYWN5LXRydW5rCis0NjI5NiAyZjQ1YWQ2NmNkMzY1MDU4YjAwZGZkMjFmNjZkNjQwMGI3NDhlOTQyIGJsYWlzLWJ5dGVidWYKKzQ2Mjk3IDNiZWYyNDA4NmFjZTUxZGEzMmEyMWU2NTVmYWU1NTI1ZWZkZGY3N2YgbGVnYWN5LXRydW5rCis0NjI5OCBiN2I3NjE1ZWE1ZjVmMjA3M2Y0ZmMxMmY4MjEwZjZlMGU3M2Q0Y2VlIGxlZ2FjeS10cnVuaworNDYyOTkgOWY3YjFiN2FkZjAxMGUyZmJmZGM1NzhmODEyMDg3MTE0MWQwNGYzNyBsZWdhY3ktdHJ1bmsKKzQ2MzAwIDM2Y2Q0YTRhYjhmN2U4ZjcyYmE4MDIwY2I1N2QwYTgyNWE4YTE4NTcgbGVnYWN5LXRydW5rCis0NjMwMSBjMDdhOTZmNjk4Mzk2MmI0YjJhNTE4NWYxYjI0YThmZGZlMDk5NDZlIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDIgOTU3NzI3ZjJmZjA5ZjM5MzczNzI3MTc1ZDkyZTMxOGQzODhjZTRjNCBsZWdhY3ktdHJ1bmsKKzQ2MzAzIDk4ODM3OTAxNDQ3NzMwODJiMGM1ZjE1ZjE5ODc1YTBkMzNmNTJiNTcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwNCAzNzhiYTY3N2I1Nzk3MDc2ZmQzNDg1MGRkMjcyZGNhNTViOTI5MjQwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDUgNzhjNjBlNTk5YWZkYjdiYWRmNjFhNDg0M2E4YzgxZTU2NWUwYjcyMCBsZWdhY3ktdHJ1bmsKKzQ2MzA2IDMxYjljNzhhMDdmMzY5ZmQxZGMxMGVlNzY4ODJhYmEwMmFlMWNhMzIgYmlwcG9saXRvLW5ld3N0cnVjdAorNDYzMDcgMDViYmJkZGZjZTNmN2EyN2IyNTE1MzlkZWRkN2E5N2RjNjQ3YzM5ZiBsZWdhY3ktdHJ1bmsKKzQ2MzA4IGJlNzQxNWIwYTMxODUxYTNjOTNiYmJjZjA0YmJhYjYxMjAxNWEyYzcgbGVnYWN5LXRydW5rCis0NjMwOSBlM2VlM2ViMTg2NzhkYzZlODM3ZjNiZWU2YjU4ZGZiZTBiYzg2NTVjIGxlZ2FjeS10cnVuaworNDYzMTAgZDJkZjRhMzU5ZTM1MmFmNzdjMGUzODMxNzVmZjViZDlkNjdhY2M0MiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzExIGE0ZWU0NTlmZjI4OGE0MmU4OTJlZGQ4MGE5MzU0M2Y2MDk4NTE5ZGUgYmxhaXMtYnl0ZWJ1ZgorNDYzMTMgODhlOWQ4Njc3MDA2NmVjZDBmYmIxY2E5M2YwYjAxOTI5NmExYjYyZiBsZWdhY3ktdHJ1bmsKKzQ2MzE0IDQ1NGJkZTdlNDE2ZTQ5YmE3YmIwZTk3YmI3ZGNjMGIzMmI3M2FhMmQgbGVnYWN5LXRydW5rCis0NjMxNSA4OTBmNjE2MWM5OGE1YTkxNTdmMDg0MzE1YmEyMDBiYTI5OTI0ODQ1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTYgNjUzM2Q4YWUxZmQ5NTEyZWYxN2I5NGVhODkwMWI2MDNkYzM4YTkyYSBsZWdhY3ktdHJ1bmsKKzQ2MzE3IGEwNDNjNWQ3MWVhYTE4YjM2YWZlYTUwYzc3N2FmOGFlNjUzZjJkNGIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxOCA3NmIzMDFhYzRhNWU2MzQxODZmODRkZWZmZDRlZTFmNGI4MTI1NDAzIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTkgOGEzOGRhOGUxMjhmN2RiYzY0MDg5M2U1NDQyYzkzZDMwMWVkNDY3MCByZWxlYXNlMjQtbWFpbnQKKzQ2MzIwIDUyMTNiNjA2NTE5Nzk2ZTkwMGU1NWI3MjgxZjZjYzg0MzkzNDdiYWMgbGVnYWN5LXRydW5rCis0NjMyNSAxYTExMzA1MDY5MGI3NDFmMzI3NmM3MWRlOTA0ZTFlYzZhMmI5OTZhIGxlZ2FjeS10cnVuaworNDYzMjcgYzAwODI3MDVmMmYyMzQzYTI0OTI5OWI0ZTQxMDBhZGY1YWZlMjc2OCBsZWdhY3ktdHJ1bmsKKzQ2MzI4IGY3NDNlM2M2YjliZjE2YTg2NzcwYWVlZGI1MGExMGQxNDc0ODY1MDYgbGVnYWN5LXRydW5rCis0NjMyOSAyZWQ0Yjc1N2MwY2YyNjNkODllZmUyMzc1NzgwNzQzODk0MTY0NzA2IGxlZ2FjeS10cnVuaworNDYzMzAgNzljOGRjYzI3N2E1ZjI2M2UzYmFjZDg5YWU5MTllMWI5YTk2YWUzZiBsZWdhY3ktdHJ1bmsKKzQ2MzMxIDEzZTBmNzFhNzBkNTQ0ZTRhYTlhNDcxMjY0MzA4MGYxNDQ5YmE2MzggbGVnYWN5LXRydW5rCis0NjMzMiAwOWQyZTk2OGQwNzQ3MjkzMjk1YTY3M2EwMWRlOGZkNWVjNjY4NWIyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMzMgZmE5OGI4ZGYwZmUyMTc2ODQxNTQ4ZWZkMjczNTFhYmRkYjI4ZjQ0YyBsZWdhY3ktdHJ1bmsKKzQ2MzM1IGE0ZTQzM2MxMzZkYTQzYjAxOGQ3NWFiMjEyZjNhNTJmYzI4ZTQ1YTQgbGVnYWN5LXRydW5rCis0NjMzNiAzMWQ0MjE1NDgwYzY5OTk1OTA3YmY3YzRjY2NlM2IwMzJjOTk3NTIxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMzcgZDJiMzhhNjFkZTcxMzUzNGU5YTAyODMxOWUyOTNmZWZmNjczOWU0OCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQwIGJlZjZhYWI1ZjliM2EzZDAxOGE1MmE1MGMyOGEzN2UzZmY2M2ZmNTAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MSBjMGRiZmVhOGMwZmI1YjkwODQ2NzdlYjMwNDM3YjViZTFhNDM0NDZkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDIgZDEwOWIwODFkNDRiZTU0MDY4OWUwMTlhZmM3Yjc5MjJhMjNkNGQ3ZiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQzIGMxNGUwYzg5YThiMGQwN2U1ODBiZTZhNGYyMDBhYTA5NTViOTgxYzIgbGVnYWN5LXRydW5rCis0NjM0NiAyZTdhMDBlYmMzMTkyNjA1ODVlOTFlYTQzOGY0OTdmYWM1OGUzNDkwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDcgNWU0ZGNlNzhmMjNkYTliMzMwY2RjNzEzMmU1MjkyOGI3NGFiMGM2YiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQ4IDYyNGI0YmI5M2Q5MDI2YTJmNThkMjE4MGQ4YTdkMDM1ZjJmY2Q0NmEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM1MCA0M2M4NmYzNDlkNDc4NGM3ZDY0NzdiNThmZWVjMTVhZWVkOGU4ZDkxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNTIgNGJmZWFiMjMwZTM4NWQ2N2Q0MTRiMWQxMjkxOTQyYTcyOGM4YTM4NCBsZWdhY3ktdHJ1bmsKKzQ2MzU0IDFiYTNlNDBlODY0OTZhMjczNmJmYWE5MzhhYTVlZDkzYzU1MDNkYTggbGVnYWN5LXRydW5rCis0NjM1NSA1MmQxMzk5ZTFjNmQ5MWM3YWUxYzZmNTMwZDBmN2FhNDc1ZGZkM2MyIGxlZ2FjeS10cnVuaworNDYzNTYgYTE2OTQ4ZTk5MTVlY2E1NmQ4MzA0ODlmZDVkOTcxZDZmNDk3OWE0ZiBsZWdhY3ktdHJ1bmsKKzQ2MzU3IDBiOGIyOGYwZjMwMTQzYjEwNzU3YmRhNjM1Mjg0MTFhNzI3OTY1YmYgbGVnYWN5LXRydW5rCis0NjM1OCA3MjlmZjgwMDhjOWU1OTgzMDc0Y2UxOTViZGE0YWI0M2I2MGNkZTk0IGxlZ2FjeS10cnVuaworNDYzNTkgZDM3ZDVjNTUyMWUzODY0NmVhNTlhN2VlNDY2YjczMWQ4OTIzZTllYyBsZWdhY3ktdHJ1bmsKKzQ2MzYwIDJlNGEyNzRlMzEwOGFlYjM2MjMyNmI5Y2VkMjlkNTBhN2U2MmZlMDIgbGVnYWN5LXRydW5rCis0NjM2MSBhNWY1M2ZlY2ZjZTY2Y2IxOWQxMWI2N2E0ZWI3MDM5NDY5Nzg5ZWYwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNjIgYjMyZjliYjJlMDc3MjdmYTZkMDQ4ZTdkNDNjZTFiZTMzZTMzMjM5NyBsZWdhY3ktdHJ1bmsKKzQ2MzYzIGY3MTBlZGNhYTY3NTg5OWVhNGI3YmY4YTVkNTA0ZDhhYTRjY2ZlNjAgbGVnYWN5LXRydW5rCis0NjM2NCAwNTc0NDkxN2I3YzM5YjIzODZkMzQzN2IzODg4YzRkMTkxMWI1ZTAyIGxlZ2FjeS10cnVuaworNDYzNjYgOTY0MTUxMDVjMjllMDFlZWFlMTAwMTFlNTUxMDcyNGE3ZGQyMzIyNiBsZWdhY3ktdHJ1bmsKKzQ2MzY3IDM4OTBhM2M3OTJiOTAzNzNlZTE3OGNmMjkwNjJlZDdkNTY2ODBiM2MgbGVnYWN5LXRydW5rCis0NjM2OCAzNWY0MTczMWJlZTk0ZTRiYWE0NWE0ODlmODMwOTczMThkNzQ2ZjFhIGxlZ2FjeS10cnVuaworNDYzNzAgNGQwYWJiOTljOWU1NDhkM2I5YzBkNzQxNTNjYzdhYWFlNzFjMzViZCBsZWdhY3ktdHJ1bmsKKzQ2MzcxIDJmNzFkMWE2OTJiZjRhMGJiMTYxYTAyMWViZjc5ZGE2M2FjMWMwNTYgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3MiBkMjE4OTZiMmRkMGFkNzFlZjdiMTUyMzgzMWEzOWUyM2EyYjI0MDRmIGxlZ2FjeS10cnVuaworNDYzNzMgZDg1YjM2MGFhNWY2ZjgxZDhhNDBhZThkMmQ3NjU5ZDRiZDEwM2Q4ZSBsZWdhY3ktdHJ1bmsKKzQ2Mzc2IDFhYjMyNjE3ZGFkZGY2NjdiOTA2NGIxMTZkYmNhMGU4Y2FlODRjMzggc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3NyA3NjgwNzkwMmEyZjUwNWU1N2QwZTUyOWIyNmUxMzU4YTQ5NGIwMWE2IGxlZ2FjeS10cnVuaworNDYzNzggMjNmNzhlNWJkM2UzYWU1Yzc0MGYwN2JmMDg5OGRlYTcxZTIxMGRkZSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzc5IGY3MDY1M2MxZTYzM2I2OGE5ZDk0MjQ5MjIxZGU4MjgyMTc2ZmM1OGQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM4MCA3ODc3MWQ2NzNiNGI3MzEyNjI1ZDUyNjkwYmU0OTQ3ZTY4ZjAzM2JhIGxlZ2FjeS10cnVuaworNDYzODEgODE2ZjhlNjAwOTdhOWRhN2Q3ZDI0ZDg0MTgyZTJkZWY0OTQ5MjgxNSBsZWdhY3ktdHJ1bmsKKzQ2MzgyIDQxZjgzOWU4OTUzMjVkMzYyODBmMzAzZmExZjA5NTgxMWFiNDY4MmYgdGltLWV4Y19zYW5pdHkKKzQ2MzgzIDBmNjFjM2M2MmI4YmY4MTkxOGQzZDQ1M2VmNjIzMzhjYmI4ZGMwYzAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM4NCBjZmM5YTAwN2U4Y2ViMzBhODViYmY1ZjJlNTc4NzVhNTk4MzdkM2M1IHRpbS1leGNfc2FuaXR5Cis0NjM4NyBiMjBlN2NiZGE0MDkxMmM4MzRkNzliNzU1YWFiNzg4NGRmMzBlYjEyIGxlZ2FjeS10cnVuaworNDYzODggZDE1M2QyZjY2ODg0ZmMzMDE4NWJjMjFiM2I1ODk1MDM1YzQzY2IxYiBsZWdhY3ktdHJ1bmsKKzQ2MzkxIDcwYzBmZmQyMWJmMGE3MzAwZTE4YmE5ZWI1MzI4ZDNhYjFjOTc5MzMgbGVnYWN5LXRydW5rCis0NjM5MiBkZjA0ZjE5MmEyYTI3YzRmMDA5YmJjZGY0MDI0ZjFiOTBmNTkwNDk3IGxlZ2FjeS10cnVuaworNDYzOTMgYWM0NWVjYThjMzVjMjQ2ZGI4Njg2MTI3MTY2MGE1YjdiMjkwOTlkMiBwM3lrCis0NjM5NSBiMTg5NjY1NmYyMmU0NjkwNjNmMjk0MTM3MTA2ZDczMGI2N2U1YTRhIHAzeWsKKzQ2Mzk3IGRiYjE5NWM5ZGQ4OGUyNTQ2NjI5YWRmNjJlMDNiY2RjZTk4ZTQ5OTggbGVnYWN5LXRydW5rCis0NjM5OCAzM2MzMjg4OTZmNTI3ZWI1ZjBjNzY1Y2JlZTQ4NzAyYjlmMTBiNjEyIGxlZ2FjeS10cnVuaworNDY0MDAgYWRjMjE0ZmMxZTFjMTNjMzk4MDZkMzgxOGY1N2YzMWI2ODE5MGRiNCBsZWdhY3ktdHJ1bmsKKzQ2NDAxIDVkZGJkMjA1MDBmYzUwNDkxZjc4YjgxMWVhMmJmMDdhOTA1Mzk5NzMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwMyA2YjAzYTQ3ZWI1NGRmN2VkYWNjYTFlMTEzNTY0MTBiYTkwMDI5NjMzIGxlZ2FjeS10cnVuaworNDY0MDQgNmQ5OWRmNTU2MDZlMjRkMGZjZTY3Yjc2Y2U2ZjRjMDFiZTNkN2U2ZSBsZWdhY3ktdHJ1bmsKKzQ2NDA1IGU4M2UxYWFhYjFhM2FlMDQ2MTNlZGViNjU2MDg5MjNhNDYxZmIzMzIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwNiA1MmYyYzlmNzRmNWFkNWE3NmIyYjFmOGFkOTYyZTQ1ZWYyYTA3OGMxIGxlZ2FjeS10cnVuaworNDY0MDcgMzEyOGNmYWRhNmI0YTdjZDhhZmViMjNmNDU5Yzc0MWE0MzE4MTU2NCBsZWdhY3ktdHJ1bmsKKzQ2NDA4IDQwMmYzYWM0MDUyZmZhZmRkODE0YjhkNGE1NmRlNGRkOWFkZmQwNjUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwOSA4ZjdjN2FlYWMzYTU4M2EzYjkyZmE4ZWFlNDdiYzg4OThjODg2NjZlIGxlZ2FjeS10cnVuaworNDY0MTAgMWRiMGQ3Mzc0OWVkOWVkYTVlZGUwMGI3NjZlZTkxNDFmYzZkMzg1YSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDExIDU2MDdhYjZjNjdkZmRiMGRhNmFlOWQ1YTM2NTIzYmI0ZjFiNTk5NmUgbGVnYWN5LXRydW5rCis0NjQxMiBmYTY3NWIzZDc1Y2E4MjI1ZWQ5NDcxNjQ4NTRiNDU3MDQxZDk0OGY4IHJlbGVhc2UyNC1tYWludAorNDY0MTUgZTdhZjk3ZTI3OGM0NGE3MTBkYjQxOWUwOTcwN2I4YzkzMWFhZDhkOCBsZWdhY3ktdHJ1bmsKKzQ2NDE2IDQ2OTdkMTk1OGNjYjA1YmE2ZDlmZDMxNDYxMGRhMTUzNDhlYTc4Y2IgbGVnYWN5LXRydW5rCis0NjQxNyA2MzFiNjY0OGZkZjQxYmUyYzQ1NzU5NTMyNTdkZDg5MTE2ODQ2ZmNkIGxlZ2FjeS10cnVuaworNDY0MTggMmJlZTE1MGEwZjc1MjI5YTEwY2I5MDdmOWIyNGU1ZTMwMTI4YjMyOSBsZWdhY3ktdHJ1bmsKKzQ2NDE5IGZlYTZmYjQ1NTcxMTNiYzYxMTcyNjJjOTFmM2NmMzliOGFkNjlmNTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQyMCA0ZGM2MWQ3ZGIzYTI5ZmY4NmFjZGU1ZjJlY2IwOTU2NThhNDAxZDY0IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MjEgOGUyZGMzZTQxODAxMWE2ZTI1ZDc2MDJkZGFlZWNjMTBkNjBlNzdjZiBsZWdhY3ktdHJ1bmsKKzQ2NDIyIDBlZWJkOWVlYjcxN2NhMzEzM2M3ZTFjZDRlZGRmNGM3MDhiY2I0M2QgbGVnYWN5LXRydW5rCis0NjQyMyBjZTYzOGQ0YjRmYzhjZGFmMGM0YjYzYTE2NDg1M2EyNzYzZWY2ZTU2IGxlZ2FjeS10cnVuaworNDY0MjQgOTBlZGFmMGQ5MDYyMTgyMThiYjk0YmZjY2RkZTNlMDAxZWQxZTlmZSBsZWdhY3ktdHJ1bmsKKzQ2NDI1IGUwZTQzZTU2MTUxMmJjOTYwNDEwYjdjN2QxMjZkMjFlYWFiNmYwMWEgbGVnYWN5LXRydW5rCis0NjQyNiA3MDhlYWYwODk2YmY0NTQ0ZDRkNTQzNTM4MzJmMzMwMDcxY2FhNjU4IGxlZ2FjeS10cnVuaworNDY0MjkgMzhlOWFmMzhmMzgxYzI3ZWM2MDcwYjVjNjJhNTM5YzM4ZjQ2ZDMyOSBsZWdhY3ktdHJ1bmsKKzQ2NDMwIDQ5OWNmN2MyZjc3NzNlZjk2ZmVhNGI0MjRiM2M5MzRiZWNjNWQ1NmQgbGVnYWN5LXRydW5rCis0NjQzMSA0MjA5YTNkMjk1ZTM0N2VlZDZmZTU0MTAyOGE4OWExM2MzYzQzMTExIGxlZ2FjeS10cnVuaworNDY0MzIgZGZiZDQ1N2NhNjdhYzZhOGYwOWRmM2NkZjU5NWJkZDBmYzU3NGU4ZCBsZWdhY3ktdHJ1bmsKKzQ2NDMzIDY4ZTFhMDJhNWIyOTFkODkzODFiZmY4ZDk1MDRlMDMxMzUwZjY0ZWIgbGVnYWN5LXRydW5rCis0NjQzNCAxMGE1OTczZTBjOWE3Mzc0ZjFjMWM5MTI3YTQ3MDIxZDdiYWJmY2Q5IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MzYgM2Q4MWZhZjQ3YWY3N2RkMDlhZmRiZWQwZjQ5YjJjODIzMTVlMDNhOSBsZWdhY3ktdHJ1bmsKKzQ2NDM4IGNhNjU3ZTBiZDA5YzAzNzc4ZjAxNmMwZDBjY2U0N2Q1Y2E0ZDJmYzggbGVnYWN5LXRydW5rCis0NjQzOSA5ZjMzNzVlMzNkYjk1ZDA4ZWM0YzJkOTczYTYzZTEyNTQ0NzRmNzUyIGxlZ2FjeS10cnVuaworNDY0NDAgOTlkMDYxYmMzMTQzMWQxZmZhMWM2MjE0NzBmYTU5ZDAxNWRkZTQ3YiBsZWdhY3ktdHJ1bmsKKzQ2NDQxIDhiNGQyYTkwNzVhZjViMGMzZjNhMDlhYWJmMzUwZDFkYzM3NDUyNDMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0NCA1NDljYWRhNGUzNmNjNTdhM2U1ZjJhZTQxOTk2OGNmMWVmNDhkMmIxIGxlZ2FjeS10cnVuaworNDY0NDUgM2ZmM2QyZjIyMDEyMjQ2ZmMxODA2NzUyMmNkZTE2YTg4OWY0MmRhMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ2IDMyODc5ZDI2MTA5ZDk2OTYwNmQ3ODdhNTUxNTUzMDgzYWFmYWMxNTcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0OCAxNmExY2FkMGY5NDk5OTI1NDRiZjhiY2E1YzhiNjkyZWU5YTQ5YWU1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDkgY2UzZTNjNjNmZTVhZGRlMzBlZDBmNzk2M2FjZDJlM2M0ZWM0M2FmYyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDUwIDAwMzQzMzUxMWU0ZGQ4NGFmYTRjMDQxYjJhYTc2N2U3MmUwYmY3NmMgbGVnYWN5LXRydW5rCis0NjQ1MiA3MzQyNmU3MWY2N2FiNTc2MmFmMzBkOTBiYTVhMzFkY2U4MTJjYzg0IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTMgYTVkNWU3M2IyZWRiYjVmYjNlYjk5Nzk3MjVlMTAwYmRkMTQ2MDJjMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDU0IDc5NWQxY2IxZGYwMTNjZGYzNDVhOTI2YmFmNTA2NWJkMDE1YTBiMTUgbGVnYWN5LXRydW5rCis0NjQ1NiA0YzA4MjNmMGEwYTE1NzRlYTgyYzE5ZGU5ZDRjMWUyYTFhNTYwOWY1IGxlZ2FjeS10cnVuaworNDY0NTcgYTU2YWE4YWI0ODliNzBjNDVjNTI3MzA2ZTk0ZGYxNDVkNjkzMzQ3ZSBsZWdhY3ktdHJ1bmsKKzQ2NDU4IGNlYmE4ZjJlYTI0ZWViYTUwODc1ZDQ0M2Y0NmRmYjk3MWQ2ZDI5ZjYgbGVnYWN5LXRydW5rCis0NjQ2MCBjY2RjMGJjMTFkY2YyZTI4ZjZjNGJjOTY0NDBkZmYxNGZhNjQ5OWY2IGxlZ2FjeS10cnVuaworNDY0NjEgNjA2M2U0ZTZlZTIwZTE3ZDk0OWMyMTdlMzc5NjIzMmY2NzI2OTIzMyBsZWdhY3ktdHJ1bmsKKzQ2NDYyIDMwZTRlYTQyMzM2OTA5YWJjZTA2NWRkNWM0ODY5MmM1ZDQzOTdhZDQgbGVnYWN5LXRydW5rCis0NjQ2MyA3ODFiZDk0Y2ViYWQ1NWUyOGY3ODhkYzkyMjU0M2YzNmZkOTQ0Zjc4IGxlZ2FjeS10cnVuaworNDY0NjQgMDUzMDVkM2FhMDRkMWRiNjQzODJlODBiODk2NTQ1NWRlYTY0ZjdkMyBsZWdhY3ktdHJ1bmsKKzQ2NDY1IDUwNmVmOTEzMDIzOGI1ZWI5ZGEyYTc5M2FkY2Q2ZWQxNWU2MTE3NjggbGVnYWN5LXRydW5rCis0NjQ2OCA1YjA3NTNiOWQxNmFjMzg3NjhjMDY1ZWUwZDQyNDg1YzViN2I5NWZjIGxlZ2FjeS10cnVuaworNDY0NjkgNzIzMjdmOGY0YTc5NmZlNTZhNDdiOTA4NDhiMWJlZWFjNjc0Y2Y5YSBsZWdhY3ktdHJ1bmsKKzQ2NDcwIDgwMzhlNDFmNDZjYzBkMjQzNDFiMGJmZTg4MzYyMTJkNTlmNWRhNTQgbGVnYWN5LXRydW5rCis0NjQ3MiBlYWU2ZGUxYjQzODM4MGE1NTcwMmZiMzBmMWZiYjAxZDEwZWQwNzc0IGxlZ2FjeS10cnVuaworNDY0NzMgMDhiZjA4MjJjNTBhMGQ3M2Y5ZmY5MzU2ZGMyZTQ0MDQyNTQyZTEwNiBsZWdhY3ktdHJ1bmsKKzQ2NDc0IDhkYWViOWFmODQyMmNiZDQ3YzI5MjQxMjA1ODM4YjliZDM1NDI3OTggbGVnYWN5LXRydW5rCis0NjQ3NSA5YTY1ZmQ0MjU1YTM3Y2VhNzJlZDAxMzgwNTExZTA5ZTA2YzdkMTRhIGxlZ2FjeS10cnVuaworNDY0NzcgODA3NTQwY2Y3NzE0Yzk4OTRkMjlhYjA2ZGVmODMxYjI4MWVmY2IxNiBsZWdhY3ktdHJ1bmsKKzQ2NDc4IGU5NTcxNTVhZTliZGRjMjFjYTY2NjFlYTI1YzAxMWNjNDBhZjY0NGEgbGVnYWN5LXRydW5rCis0NjQ4MiAwMzhiYjhkMDA1OGIyNTM5NTcyZjE5NTgwZDBlOGM5YWFjNDNjNDIyIHJlbGVhc2UyNC1tYWludAorNDY0ODggNDU1NmMyYzkzMGY0YjAyNWU3OWFiMWExZWFiZDA0YWFkMWUyMjEwZSBsZWdhY3ktdHJ1bmsKKzQ2NDg5IDNkZWQwOTA4ZTk1MmY2NDZkNDAwZTllNTVjNmY4YzY4Y2I0MWY0NWIgbGVnYWN5LXRydW5rCis0NjQ5MCAwZjJmN2EwZDliN2RkMjAxNWI0ZDcwNGUxM2VlMTkxNWEwZGVjMTM0IHAzeWsKKzQ2NDkxIDI5YWU1ZTBmYzM0ODI4YjVlNjNmMTg0ZjMwMzg0NjExNjY4ZGJlZmQgcDN5aworNDY0OTUgNjMxYzIwN2MzNjkyM2QwMjNmODRjZDBhOTJiMjg5YjZiNzBiZTZkMCBsZWdhY3ktdHJ1bmsKKzQ2NDk3IDFhMjM3MDYxMzljYTBmYzI3ODY4OTQ4MzI1ZTJmNDIxNTFhYmNhNDggbGVnYWN5LXRydW5rCis0NjQ5OCAzZmVjM2NlMjA0MTM4NGFkZWJkOWRjNzNlZWU2MzI5Njk5MjQ1YzI1IHAzeWsKKzQ2NDk5IDU1MTgxNGU0YjQ3MTE3YjMyZjYyNzRjMWUzOTA4YzQ2NGNmODIxNDQgbGVnYWN5LXRydW5rCis0NjUwMSAyMzY3MjVmNjRhMzQxZmZlOTAxMjliMDk3OTAzZmUxMGE1OTM5NGIxIGxlZ2FjeS10cnVuaworNDY1MDIgN2ZhN2NiNmQ4YmU4MWUyOTBhYTJhNmU4ZDAyNGUzOGQ3NDgyNmQzYSBsZWdhY3ktdHJ1bmsKKzQ2NTAzIDAyMDNhOGFmNzRhNzVhOWFiZjYwZGZkNjlkZjhhZWIzMjdhZjM5MTggbGVnYWN5LXRydW5rCis0NjUwNCA2YmE1Njc4YmU3ZjI2MzU0NDZiOTg1OGYzZDMyZmM2YjgxYjdhYTA1IGxlZ2FjeS10cnVuaworNDY1MDUgZjc2ZDNlNjhkMWFjMzdiMDBiMWQ5NWJkZmJkOGJhZDMzODQwN2RmZSBsZWdhY3ktdHJ1bmsKKzQ2NTA2IDUxMjU1Y2M4YTBkYzA0YWJlNzMwNWU1NGRhM2EzMGY1ZmM0YzEyNGUgcmVsZWFzZTI0LW1haW50Cis0NjUwNyBlOTg5ZWU1ZDQwNGFiZTc3NjIxNGFiMDgwZTI3NjIwYmVkYzI3ZjBlIGxlZ2FjeS10cnVuaworNDY1MDggMzIwNGFhOWUyYjIyNTk2YTk2MjQ4OTkwNWE3MzVlODZmYzJjYmMzMyBsZWdhY3ktdHJ1bmsKKzQ2NTA5IDcxODYxYzM3ODA5MzcxMzYxZWRkOWVhMTlkOTFjYWU2ZWU2ZjdmOTAgbGVnYWN5LXRydW5rCis0NjUxMCA1OTNhY2NkZGUwMGVmMzMzZDNlYmQ1OWI4ODgyYWNiZTg2NTJlNTZkIGxlZ2FjeS10cnVuaworNDY1MTEgZjE3ZDM3OTIwZjZhMWJkZmNlMDg2MDkyN2UxN2I4NTdlNjM4YmViYiBsZWdhY3ktdHJ1bmsKKzQ2NTEyIDk1ZmIyY2QxZDNiYWNlNDc1Y2QyNDE1ODRkMWQwMDhjODI2ZTE3OWEgbGVnYWN5LXRydW5rCis0NjUxMyBlMGNlYTYwNTQxN2U0NWM1NTFmMjc2YWM0ZDllZTUzZDY3N2Q3N2UyIGxlZ2FjeS10cnVuaworNDY1MTQgOTI2OGMzMDc4MmMwYWZmNzFmNGYzMzA5YmFmMzUwMDA1YjU1MTYxNyBsZWdhY3ktdHJ1bmsKKzQ2NTE1IDkzOGMwZmNkNWJjY2I2YzczY2FiYzlhZDNkNmEzMzkzMzA3NGZkNGYgbGVnYWN5LXRydW5rCis0NjUxNiBkNjBjN2Y2YzJhYTAwNGJlM2JiOTQyYjBkYTBhMzE4N2E4MzU1NWY5IGxlZ2FjeS10cnVuaworNDY1MTcgYmYzMjY1ODFjNzQyMjI2MmE4YTlmN2IwODc0NWU2NjE4YTQ0YzYwNyBsZWdhY3ktdHJ1bmsKKzQ2NTE4IDlmMzI4NGM5MmViMzBmMTA3MTBjOWI2YjkyYzZkMDA3NmM3YWVhZWEgbGVnYWN5LXRydW5rCis0NjUxOSBkMzM4MzA2MzQ5MWY1OTgzY2ZjMWM1OWYxNjM4ZWEwZGU2MjFlMDMwIGxlZ2FjeS10cnVuaworNDY1MjAgYWEwNjVmODIwMjUyNDZiYTE3ZWIyMzI1N2MwZDAxODY5MDdiM2Y4YyBsZWdhY3ktdHJ1bmsKKzQ2NTIyIDU4ZTk5ZjJhNjRlY2ExZGUyYTZhYWU1ODc1N2IzMTVjNzE3MjY0YjIgbGVnYWN5LXRydW5rCis0NjUyMyA1NTMxOTU1OTkzZWQ0MTY0MDZkNTI0NjY0N2RhMTI2NTVlN2NjOTc2IGxlZ2FjeS10cnVuaworNDY1MjQgOWIwMDFlYmVhYTVlNDg2Nzc3NWQxMGRmZjQ5MDMxZjNiM2M0N2IxNiBsZWdhY3ktdHJ1bmsKKzQ2NTI1IDNkMWE5OWIzOWZjYTI1YWViNjE0MWU1Nzg1ZjUyYjhjNzNjNDgyNzAgbGVnYWN5LXRydW5rCis0NjUyNiA2NzQzYTZhMDZmMTU2ZDFkYmZlODllNzk1M2FkODI1M2QzMzk4ZTQyIGxlZ2FjeS10cnVuaworNDY1MjcgZmI1NmEzOTkyNjA0YmE4NTk3NmNkZDExNzE2Nzg0ZTA3NjZiMjIxMSBsZWdhY3ktdHJ1bmsKKzQ2NTI4IGY2NGIxM2EwMGYzM2IyOGM4ZWZhYTU1OGEwMzBjYTgwNzczMzkzMzkgbGVnYWN5LXRydW5rCis0NjUyOSBkY2Y5MmRkNzQwOGEzZjBiZDJhZjU0NDk0OTg4MWEzOTVmNjk0NTI4IGxlZ2FjeS10cnVuaworNDY1MzAgOGFjNjAzZTU3MGEwNTU4ZjlhMjc1NzE0NTY4MjYxODk0YTkxNzFhYiBsZWdhY3ktdHJ1bmsKKzQ2NTMxIDVhMTJjMGM1MTgzZTg4YTA1ZmI5MDM1Y2Q4Mjg2YTNjOWIwMmI4MTUgbGVnYWN5LXRydW5rCis0NjUzMiA0OGE2YWY4N2YzZTg2MmE4YjMzNzcwODIzNWQxNDYyMDIyZDU4OTE1IGxlZ2FjeS10cnVuaworNDY1MzMgM2ZlM2NjZGYwMTU1NTIxNjNjNGM5MWExZTk0NmNiMTExNmI2YWIwYiBsZWdhY3ktdHJ1bmsKKzQ2NTM0IGE1Mjk4ZjM3MWJlN2NkMmFkOTE5NDIyMjMwMzU1MDUwNTgwZjg5YjEgbGVnYWN5LXRydW5rCis0NjUzNSBjM2YyYzY2NzZiMDYxY2E3MTI4OWJkZGM3Y2UwNTIzMmFjZDRjZmI5IGxlZ2FjeS10cnVuaworNDY1MzYgZDViZGZkMTIwMjMyNzA4MjY3YWRkYzY0NmJlZTM2YTBlN2ZjODBkMyBsZWdhY3ktdHJ1bmsKKzQ2NTM3IDdkNTEwZTRmM2M5ODg1MDVkMDZiYzU5MWM1OTA5OGUwNTRiYjEzNjIgbGVnYWN5LXRydW5rCis0NjUzOSA0ZTRlNjUzYTgwYmY0YWY2NGFmMDk5YjE2ZWIyOThmODU4YjFhMjc3IGxlZ2FjeS10cnVuaworNDY1NDAgMTczMWZiZGYwMjlkMjA5ZTc2ZmE4Yjg1Mjg4NjQzZmVhYzI2ZjU4YiBsZWdhY3ktdHJ1bmsKKzQ2NTQxIDZkNzlhY2RjODEyZDIwMTBkMGQyY2VkZjBmZmZmYWJhNzM0MzFmODMgbGVnYWN5LXRydW5rCis0NjU0MiBhODJmZDdiMDQ0ZGM3YTdkNmQ1ZDY5MWE4NjFhMjZiYzhlMmQwMjA0IGxlZ2FjeS10cnVuaworNDY1NDMgOGRmYmEwODdkYzA3N2E2MWY1MGYzYWY2YTI4MzRjY2EyNGRjMzRlMiBsZWdhY3ktdHJ1bmsKKzQ2NTQ0IDQ5NGNhYjU2M2MxMTdhMTM5YmRhMTM4OTQ5OTZmMjhjYmU1NmQyNWIgbGVnYWN5LXRydW5rCis0NjU0NSA5Zjg2MmQ5Zjc3ODVkZGE3NTEwZTIyYWJjZDNiYzg5ZjdkNTE0Y2RiIGxlZ2FjeS10cnVuaworNDY1NDYgZWM1ZGM4YTQ5ZWRmYjY1NzQwMWRiNWMyMTE2OTNkN2NhOTRiNmVjYSBsZWdhY3ktdHJ1bmsKKzQ2NTQ3IGM0NTAxZmVmZDMyNGZiNDM2M2M5NDU2ZjdmYmY3MmQyYzkwNjg0MTMgbGVnYWN5LXRydW5rCis0NjU0OCA1MTA2ODJhYzVlODlkZDViNjViZDQ3YjhhYzhlMGVmYzJjNjQzNWIzIGxlZ2FjeS10cnVuaworNDY1NDkgNDQxNzExY2JmZTM0MTcxZGE2NzQzNmVmZjE4NWNhNDYzMTEwOWNhMiBsZWdhY3ktdHJ1bmsKKzQ2NTUwIDRmODU4Njk0NmM4ZjU2MzJhNDY1NzgzZTRhOGY2OWVhYzM4ZmYyMDcgbGVnYWN5LXRydW5rCis0NjU1MSAwYWJhNjNmZjdmNzNlMzg2ODNkYTU1NWZjOGI0YmNlZmVjZTgxYzc4IGxlZ2FjeS10cnVuaworNDY1NTIgZDIwMDhiMzFmZDYyYTI0ZDZhNGZlZTE1NjViMzU1ZWQwNGUwMjE3NiBsZWdhY3ktdHJ1bmsKKzQ2NTUzIDk5NTY0ZTYyYWVhOTJkZTE0MDg5MmUxNzgzMmZlMjE3YTYzZWNhYjEgbGVnYWN5LXRydW5rCis0NjU1NCBlMTE1OGUxOTUxZGE1MGY2ZWFkZjg4MjRjNGVlNzA3N2IyNDJjOTZkIGxlZ2FjeS10cnVuaworNDY1NTUgMTNmZWRkMGQwZjI2YzY2NGVkNTk2NGU0ZWFhNzU4ZTNkMDQ1OWU4NiBsZWdhY3ktdHJ1bmsKKzQ2NTU2IGM3NDdhZDUzZTA5ZTBmOTI5NDRjNTQ2MzU4Yzc4NTQwNGVkNzU3ZTkgbGVnYWN5LXRydW5rCis0NjU1NyAxNjhlYjZlMTViOGM3Yzk1MWRkMTIxZDkzZjhkNzFkYTk2YWU2NDc0IGxlZ2FjeS10cnVuaworNDY1NTkgN2YxZjM2YjNjOWY5YWFjMzkxOGVkNmU4NmYzZTNiZjFlODkxNGU4ZiBsZWdhY3ktdHJ1bmsKKzQ2NTYwIGVjZjcxNzNlNzlmZjU2NmY0Zjk1OGJhZGMxODllNTdiNzBmMjg2MGUgbGVnYWN5LXRydW5rCis0NjU2MSBiYjBkMmI5NTU0MzlmMzJlNDgxMjM3MDcwM2Y4OGU2MWUyMjQ2NzAyIGxlZ2FjeS10cnVuaworNDY1NjIgMmZlMzIzM2JkNDI2MTJmNGIxNzM0YzFhZTkzZGUyNjEwZjE1NjU4OCBsZWdhY3ktdHJ1bmsKKzQ2NTY4IGQyYWU1ODA4ODBiNGJiZGQ2ODVlYzdkOTBmNGQzOWZiZjkyNDhjYTYgbGVnYWN5LXRydW5rCis0NjU2OSBmOWQxODQwZmFkMzQ4NTI1NDA5MjVlZjdhZjliZTlmOWZhZDk3MTVjIGxlZ2FjeS10cnVuaworNDY1NzAgNjI5ZWJmN2QzYjVjYWNhNTlkYmYwYzEzZGM5YTlmOWFmNjhjZjU1ZiByZWxlYXNlMjQtbWFpbnQKKzQ2NTcyIDFhNTZkYTg2YzExYTg3OWZhNzE5NTBjYjQyZTJlZmZhMThjNjM5M2UgbGVnYWN5LXRydW5rCis0NjU3MyBiYWRjMTczN2RjODAxOWNmMmIzMDJkNTIwMDA1ZjAzNTcxMmEwZWM3IGxlZ2FjeS10cnVuaworNDY1NzQgZjBmMjkxZmE5YjQ2OTE4NDFlZGVlZTVlZTUzODAwMGVkOGUyY2VkYyBsZWdhY3ktdHJ1bmsKKzQ2NTc1IDNmZDgwMjc4NDVmODAyYzlhMGQ4ODA4YWM2NmY3NGJkNjcwODZkOWIgbGVnYWN5LXRydW5rCis0NjU3NiBmNTBkM2E1MWQ2NDZmMzNiZWZmNWI0MmJiZTYwNTg2ZDRjNDQwMmU1IGxlZ2FjeS10cnVuaworNDY1NzcgZDI1ZTI3OWM3ZWE5YjI1N2NkYzVhMWIxMmEzZjczNWQ0OWFiNjMwYyBsZWdhY3ktdHJ1bmsKKzQ2NTc4IGY4MzFlOGJjNmJkMzc4OTkzNDQ3NThhODVmNmUwMjc3NTA5NWM1MDAgbGVnYWN5LXRydW5rCis0NjU3OSA1ZjQ0MmY3YmY0MTllNGZjM2MxMjA5ODAzMDdkOTFiNjY1YzNlODlmIGxlZ2FjeS10cnVuaworNDY1ODAgZTA5OTdmZmEzNTcyNDY4YjllYTBlYTBjZjYyYjE2ODE3Y2ExMTFmNiBsZWdhY3ktdHJ1bmsKKzQ2NTgxIGE3ZjIyOTVhNzhhYzEzOTUwYmZmZTg3ODRiZjg0OTJmMGIyY2JiMTcgbGVnYWN5LXRydW5rCis0NjU4MiA0NDdhOTRiMDM5ZGViODBjYTFkYTkzMzNiYTNhYzgxM2I4NzBjOTM5IGxlZ2FjeS10cnVuaworNDY1ODQgNDI4ZTljYmI0MzQ2MWUwZWVmZmYyZjc0MzAwNzVhODQ3NTI2N2ZlYiBsZWdhY3ktdHJ1bmsKKzQ2NTg1IGRiMmQ4YWE5ZmUzZDQyMDhiOTkyODdmMDUzYmY0OGQxM2ZhZWIzZjQgbGVnYWN5LXRydW5rCis0NjU4NiAzMDMxYTcxMTBkYTlhODc1OTczMmZmMjYwMmZjMzk5MjIzMWFmOTQxIGxlZ2FjeS10cnVuaworNDY1ODcgYjFlYjRhNjc0OTk4MDU0YTZlNzUxYTE2ZTNhN2VhZjNiZTcyYWMwZCBsZWdhY3ktdHJ1bmsKKzQ2NTg4IGNmNjc3ZTk3ODg1MmZhNmNlYmViMDkzYTUwNGU1ZDRiODQ4YjkzMGYgbGVnYWN5LXRydW5rCis0NjU4OSAxNzVjYmRmOWE1ZmJkMDY1N2Y4NTE1ODYwZWM1MTA4M2JlNDBjYjgzIGxlZ2FjeS10cnVuaworNDY1OTAgOTk1ZWNkMjMxZjdjNTk4ZDViNDE1MTMwM2ZkMzI2NGM4ZDA3MjkzNiBsZWdhY3ktdHJ1bmsKKzQ2NTkxIGM1ZDUwODcyZWZmNDgyYTczN2U0OTE0YjJjNjI4NDE2N2JhNDQxOGQgbGVnYWN5LXRydW5rCis0NjU5MiBiOWIwMzZmMDIyMDdlMjliMjIxNTM0ODY2ZDcwZDJlZjI5ZDRmZDZiIGxlZ2FjeS10cnVuaworNDY1OTQgZDdkZDUyODQyN2MwZDE0YWE0M2IwZjhmYWQ1MmViNTU1Mzg2ZTlkZSBsZWdhY3ktdHJ1bmsKKzQ2NTk5IGYzN2U2N2JkNDM5MzE4NGExZWJhYWVlYzhkMTFiMjE5ZDU1MTc5OTkgbGVnYWN5LXRydW5rCis0NjYwMCAyNjMyYmQ1NWMyOWYyNTQ0YmQ5ODc0MTZjZjJjZDc5ZTYzNThkYjI1IGxlZ2FjeS10cnVuaworNDY2MDEgNzVkNjgxMTU5MzI5ZDk4ZjE2NTVkYmUwZjI3ZTU2MTBkM2ZlOGY5NCBsZWdhY3ktdHJ1bmsKKzQ2NjAyIDY5N2RkODQ4ZTFmMTM2MzZlNTU0M2ZkYTVmYzYxZDUwN2E0MzMyOWQgbGVnYWN5LXRydW5rCis0NjYwMyAyMWU4ZGQzZTM5NDU3N2M1ODE2NmI1MTUwMTAyZTEwYWJkZmJhMzg4IGxlZ2FjeS10cnVuaworNDY2MDUgMmViOGJlMGY4NzMxMjk3MTYwNzZkMzY5NDdlZTBhYTUzOTU4NTIyYSBsZWdhY3ktdHJ1bmsKKzQ2NjA3IGY5YzMwMWRjNWZiNzRjOGMyZTE4YTVkYWYyMGRkMDhmODI3NDFkMDQgbGVnYWN5LXRydW5rCis0NjYwOCAzODNjZDk0YzJhNjdkMzdmMmJhMWIxYzE3MjY1MGE5Y2I2ODQxNzc1IGxlZ2FjeS10cnVuaworNDY2MDkgNmY5YjUzNmU5NmY2NjM1M2MxZmU5ZTc1NTIzOGE5MDIzZTNlOWM1OSByZWxlYXNlMjQtbWFpbnQKKzQ2NjEwIDk2NmU3NDcwZmUyMzczMzNiNGUwZWYxZDU0Yzc5NTI4MDQwOWY3ZjggbGVnYWN5LXRydW5rCis0NjYxMiAyYjVhOWRjNDkwNWM5MzliZDRkM2Q2NDJlMGE3NzEyM2YxYmM3NWY0IGxlZ2FjeS10cnVuaworNDY2MTMgNjRiOTM3OWZhODBkYjA4ODQxMzU5ZDFlYTQzODhjNjJlMjM2YTRkYiByZWxlYXNlMjQtbWFpbnQKKzQ2NjE0IDQ2NDI2NWMxZDA4YjFjYTY3ZDQ1NmY4OGVjNTc0YzAzYzcyODc4MWUgbGVnYWN5LXRydW5rCis0NjYxNSAzNDczZmNmMGJjZWU4NDYxZjZmNjZmZDY2NjA1ZmRiZWQ4N2Q2Nzc2IHJlbGVhc2UyNC1tYWludAorNDY2MTYgYWFiYzEzNjAyNDQwYWYzZTZmOGI1MGNjZWQyYzRiNWU5ZGUwMzA3MyBsZWdhY3ktdHJ1bmsKKzQ2NjE3IDg1NTk5M2IwOWZkOTIwODJiNDJhN2Q2NTU1NjkwZjJiZTk0MGFhM2UgbGVnYWN5LXRydW5rCis0NjYxOCAzMmY3MDZmZDQ1MDNlOTg5MGU3ZjExYmM4NDQ4MWNmM2JkMzdiNTNjIHJlbGVhc2UyNC1tYWludAorNDY2MTkgOTcwNTI2YzFhN2UyZmYzNjQ0ZWYyYzI0NTYzMzJjYmZhNDcyYTNhOCBsZWdhY3ktdHJ1bmsKKzQ2NjIwIDEyOWFiODQ2YTcxZmFmZjYxMjNjMzU1ZWQwNTYyYzdlMzJlZjI4Y2MgcmVsZWFzZTI0LW1haW50Cis0NjYyMSBkNDE0MGY3OWYxYzcwNzk4YTMwMTI0M2Y2NGFhMDZhYTJkNjUxZTRkIGxlZ2FjeS10cnVuaworNDY2MjIgZjdkNDIzYzBiY2Q4NmEzYjAzYmM5YjU5NjQ2MDAwMmQzMzNhNDYwOSBsZWdhY3ktdHJ1bmsKKzQ2NjIzIGYwZjVkY2EyOTk5MDdhNDgyM2NiOWI5ZmJjMDU0OTJmMzE2NjMzN2EgbGVnYWN5LXRydW5rCis0NjYyNCAzNDcxNGU0MGQ0NjU2ZGYwMjc2ODY2NjE0YmRlYjA2YjIzMDg0YzAxIGxlZ2FjeS10cnVuaworNDY2MjUgZDFmYWNhNGYwYjgwMjYxMjViMWYxZDIyOTFmNzU5OTI5MDk0YmVhYyBsZWdhY3ktdHJ1bmsKKzQ2NjI2IGE0NjU0NzcxZTViMzAxNDRjYjgxOGU4NjBkMDM4NDhiMDUwYjZmOTUgbGVnYWN5LXRydW5rCis0NjYyNyBiZWYwMjM2ZDdiZmE2ZjEzNmUzZjU3OGVmNTUyZDVkYzA4MzdkOGQ2IGxlZ2FjeS10cnVuaworNDY2MjggNGVjOTQyY2Y4YzkyZWQ3NmU0MTRhYTgzYzI1NjRhMzY3MTU0OTE2OCBsZWdhY3ktdHJ1bmsKKzQ2NjI5IDgwNmYzZTE0MTE5ZDc3ZGM4M2ZkNzYxNjBhNDIyNDg1OTRmZWM1ZTggbGVnYWN5LXRydW5rCis0NjYzMCA3MjFhN2ViMjNlYmY5YzA5ZGNhOGI3YzM4MzAyYWE3MTE4YWZlM2RlIGxlZ2FjeS10cnVuaworNDY2MzEgMTYzMTgyNDlhYTMzMjQ2MzczMjBiZTM0NWU2MTQyZjI3ZDJkZDUxOCBsZWdhY3ktdHJ1bmsKKzQ2NjMyIDI0OGQxMDZmODk1MmVmZDRmZDcxYmM3Yjk0NjY2N2Y0OGZmYTA4ZWQgbGVnYWN5LXRydW5rCis0NjYzMyAwN2FjZjZmYTVhYTBlZGZmZWViMWUwMWI2ZThiMWRkZmFmNTYxNzQ4IGxlZ2FjeS10cnVuaworNDY2MzQgM2FhZGM2ZGM0YjFhNjQyMDU1YWFlOGMwNGRhMDcxZDUxZmYwYWM5OSBsZWdhY3ktdHJ1bmsKKzQ2NjM1IDZmNzQwNGYzZmM1NzY1YjM3ZDJhNTEzNzMyNDNjNjhjNzA0MzM1N2IgbGVnYWN5LXRydW5rCis0NjYzNyA1NzIyZjExMmQ1ZGE1NGJkMDViMTBiNWRlZDRhZTBmN2UwODJkNmU3IGxlZ2FjeS10cnVuaworNDY2MzggODIwNzJhOGY1MjY3NGYwMzU0ZjYzODU0ZjVjMGVmNjg4ZTcxNDcxOCBsZWdhY3ktdHJ1bmsKKzQ2NjM5IDA3ZTUwM2U4NThlZmUyN2Q0YjA4MzEyMmY4M2RjYzZjMGUyMTVmMDkgbGVnYWN5LXRydW5rCis0NjY0MCAwYjJiMDc2ZTU5MDhlYTNjMTIzNGJiNzY1MzUzODUyMWJhNDg3MmNhIGxlZ2FjeS10cnVuaworNDY2NDEgMTk0MzBjZGZmMmJkNmFhOTFmMjk5OTJjZWMwOGYxNDZkYmMwMDg1OSBsZWdhY3ktdHJ1bmsKKzQ2NjQyIGExMTQwMDNhYTNkM2ViMDcxMzM0NDNiMWJiYWJiZjk3MWIwZjEyZTYgbGVnYWN5LXRydW5rCis0NjY0MyA3MjM5YTFhODA0ODc5MDBhM2JmMTFkNmFkODAyNjg3ZjdhNGJkNWJhIGxlZ2FjeS10cnVuaworNDY2NDQgNDcyMmQzN2ZhYTE0Mzc4Yjk0YWRlMzA2MmJkMjg1NTkxYTYyNzNiYyBsZWdhY3ktdHJ1bmsKKzQ2NjQ1IGUwMGU2OGRkMWRkZmE4NjFhNzlmNzc1MjVkYzRkZjBiYjQxMThmOTggbGVnYWN5LXRydW5rCis0NjY0NiA1ZWM4OTczZGQyMjEzOTFiOWFjNThjY2I3ZTgwOTdjOTk1MDg1YjcxIGxlZ2FjeS10cnVuaworNDY2NDcgZGI3OTI5NzcyNjNhY2VlNmYwNGQ1OGQxYTQ0MzA1ODcxNDBkYWZjNCBsZWdhY3ktdHJ1bmsKKzQ2NjQ4IDllMGIwNTBjZTQ2ZjA1YzBlNzdlMzY1OThkNzUwYTg0OTA1MjJiODUgbGVnYWN5LXRydW5rCis0NjY0OSAyMTk2OWI3MWMzNmQwNzIxY2FlOGEzNjI4NDdhOTdjNTcxODE4ZjczIGxlZ2FjeS10cnVuaworNDY2NTAgNWRmYjIxYTM3ZjE5ZmFmOTBiNWU1MTUwY2Q2NzdhZWE1NTRlYWNjOSBsZWdhY3ktdHJ1bmsKKzQ2NjUxIDdkMzFkMDMxZjhlMTMzNTA5YWExMTdmZTRlZTViMjMwOWMxZDNjZTggbGVnYWN5LXRydW5rCis0NjY1MiA5MTNlNWU4NGZhZGU3NmQ2NGIzYjk5ODEwOGZmNTEzZTQxNGRjNDI2IHJlbGVhc2UyNC1tYWludAorNDY2NTQgZjE2ZDQ0ZDMwM2NmODQwMDllNDI5MDRmNWY4NTBhMGY5Y2UyMDRiMyBsZWdhY3ktdHJ1bmsKKzQ2NjU1IGM0NTg3YTVmNWU5NGVlNmM2YWNjMTg1M2JlYjQ0ZTExYTlkOWI2NmUgbGVnYWN5LXRydW5rCis0NjY1NiBkMDA3M2M2ZjZmNTZlMmQ4MTUzNTMyMDdmNDAxY2Q0YWMxOTU5ODZlIGxlZ2FjeS10cnVuaworNDY2NTcgMWMyM2U5NWE4MGEyZWY4OTRjNDM5ZDdmYmZlNjc4NmVkZWFhZjhjMyBsZWdhY3ktdHJ1bmsKKzQ2NjU4IGIwMGNiYjA4ZTBjYzExYmVlMGRlYWI0NTdhOWZhNGUzYTQ4MzdhYWUgbGVnYWN5LXRydW5rCis0NjY1OSA1OGRlNjFiZWRkZmNlZjNmZjJhM2UzZjE5ZTBjYTZlZGY4MDlhY2Y1IHJlbGVhc2UyNC1tYWludAorNDY2NjAgYzA1ZWYwOGUxYmE5NGQ5Y2ExNzk4NjkzMGJiZTQwNzkyYjBjMGQ1OCBsZWdhY3ktdHJ1bmsKKzQ2NjYxIDIzNzQ1NjA2MmI4MGY3MzZjYjg3MjIxMzMxYzkzNTJjNGEwOTk2ZmUgbGVnYWN5LXRydW5rCis0NjY2MiBjYjNmNTEzOGVjYjU3ODBhNGZkYjVjMGFjZWI0OGU4NmYxN2RhNTRiIHJlbGVhc2UyNC1tYWludAorNDY2NjMgYzkwOGFhYTkxZWFlMTc4N2MzMTUzNDdhNTVlNGZkM2E1ODFmNTdkYiBsZWdhY3ktdHJ1bmsKKzQ2NjY0IDFjOWQ4MDc3ZWNmYjIxZjljZmQ3Njc0ODc5NjJhMTU5YmQwYTI2NjcgbGVnYWN5LXRydW5rCis0NjY2NSA1YWRiYTcwOTYwNmIzYTY0ZDIyY2E5YjJiOGQzZjUxZWU3ODdmOTRmIGxlZ2FjeS10cnVuaworNDY2NjYgOTkwNjQ3ZTJhYmM0YjI0NTJiMjVlODc3OGQ5M2RjZjMwNGYzYjMzYSBsZWdhY3ktdHJ1bmsKKzQ2NjY3IGE0YjU4YWI2NTIwMjNjNTgxMjkwNTM0OGM3Y2NhMTY0OGFkMmJmYTkgbGVnYWN5LXRydW5rCis0NjY2OCBmM2E2Nzk5ODVlMGQ1NDhkZjMwN2E5OWE3NGE0NWYxYjAyMTc3NWI3IGxlZ2FjeS10cnVuaworNDY2NjkgMzA2MDViZjk1ZWY4YjhiZTdhYjA3YzA0YmQxNDAxNWM4OGU2NTY0NyByZWxlYXNlMjQtbWFpbnQKKzQ2NjcxIDAyZDQ3NTQwNWUzYjVmMjkwYjYwNGFmMDMzMzExMTBhNWQzZWY4MWIgbGVnYWN5LXRydW5rCis0NjY3MiA2NjQ5YjUxZTI0NWY5MjVkYzc3NDExMDFjMDk3NTU4NjI3YTk2Y2MzIGxlZ2FjeS10cnVuaworNDY2NzMgMjE3N2FlY2Q5MWZjYmFiM2RhOGQ3NzMwYTVhNjNhM2ExOTc2Y2E2MSBsZWdhY3ktdHJ1bmsKKzQ2Njc0IDA4NTVkYTE0YTgyMGMwZjE2YTVlN2JjYjkwYTY4NTE0NDI5YWVjMTAgbGVnYWN5LXRydW5rCis0NjY3NSA5NjM5Y2IxM2I5NDA1MzBkMTM5MGE3ZWQ0NjFmNzEwNDE3ZTAwODY1IGxlZ2FjeS10cnVuaworNDY2NzYgNjg3YWFjZDY0YmU5NjY5NjFhZDc0NzExODAzNjBhZTJlMmJkNzc5YyBsZWdhY3ktdHJ1bmsKKzQ2Njc3IDBkY2I5MjI4Y2IzZmQ4NTUwMjQwZDlhZDk0NDdiMWQxNDBlYjAyMDcgbGVnYWN5LXRydW5rCis0NjY3OCA2NTRmMDM4M2RiY2IyZTNjY2FlOTgxYzEzODJjNTU1MTcyMWI0Y2RiIHJlbGVhc2UyNC1tYWludAorNDY2NzkgYzRiNDQyMjJhNTk5NGIwN2FjZDRlOWU3NjhlYTM2OTFkZmQ2ZWM1NCBsZWdhY3ktdHJ1bmsKKzQ2NjgwIDE4ZGU1MGI1OGZiMWQ3OGZmY2U3NjEyMTUxYTg3ZTc2MWQ5ZTMwMGQgbGVnYWN5LXRydW5rCis0NjY4MSBmMDA1MThiYjViNDMzNTc3NWMwNmUyNjliZDU0ZjZjMjIzMmU4ZDJmIGxlZ2FjeS10cnVuaworNDY2ODIgODBhNjI3MzQwYzlmMjNkNzk4MDQ3ZmUzOGM1ZTgxZjNjZjBmNTdiZCBsZWdhY3ktdHJ1bmsKKzQ2NjgzIDExZjY2NzMxNTU0ZGJhNzgwZTUwNTA1NDdhYzFjNWEwY2NhN2QyOTkgcmVsZWFzZTI0LW1haW50Cis0NjY4NCBhNjBhZGYwY2IyZmQ3NGZiYzdkOTI0ZDMzNjhjMjMwZWY5ZTU1N2YxIGxlZ2FjeS10cnVuaworNDY2ODUgNzA4MWU4ZDUzMjk4ZWYzYzQ0OWZjZDdhOTI0MzFkNmVhNDIwYjk2NyByZWxlYXNlMjQtbWFpbnQKKzQ2Njg2IDZhZTQxOGU0YjM2YTlhNjdjY2RlNzIzYmZkYTIwOTVmZGI0NmU2OTUgbGVnYWN5LXRydW5rCis0NjY4NyAxZTM4ZmY4MWM4YTk1MmVlYmY3Y2JiZjM2NzI1Nzg1MmE4YzAzZWYyIGxlZ2FjeS10cnVuaworNDY2ODggODI4YzEwNmQ1ZWNjOWZkNzRjZDE2ZjhiZmQxYTkyODZiMTZkYzIwYSBsZWdhY3ktdHJ1bmsKKzQ2Njg5IDVmYmVmYjVjOGEyM2U2OWNkMDJhNmUzOTkzNWM1MWM5YzIzOTgxZTEgbGVnYWN5LXRydW5rCis0NjY5MCAwZGNiNjJkNmQ5OWEyOGE0ODA3NjY0YWFiMmMzNTg5YTU2OTUwN2E3IGxlZ2FjeS10cnVuaworNDY2OTEgOThlODFhZjQwMDA3ZWZkMThlYTY2NmVjNGRhNWQ1MmFkMTZmNGY2NyBsZWdhY3ktdHJ1bmsKKzQ2NjkyIDFjMDE2ZjljYTVhNzRhZDEzNzM2Y2I3MDEzZGRjZmQyZjEzODJlZDUgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjY5MyAyODBiOGVhZWUxYzAzNGRkYTA1YWMyZDg3MmIwNmEyOGM3YjAyYWRjIGxlZ2FjeS10cnVuaworNDY2OTQgYzk4OWZhZmZmM2RjNmM1MmRiYTJmMTQ4YjIzMjExMjExNzRkOTljMSBsZWdhY3ktdHJ1bmsKKzQ2Njk1IDMxMWY3NTFhY2E3YTMzMmQ4ODE1YjA1ZDE0MGZiOTQ2Yzc4OGMzZGMgbGVnYWN5LXRydW5rCis0NjY5NiBjYjNiNDM5YzI5Y2NmZGE5ZmUwODFmOTUxOTc2ZGIxZDYyNDgxZmRlIGxlZ2FjeS10cnVuaworNDY2OTcgOTMxYWQwNmJlYzU2MTk2OWQxNDRlNWE5MDNlZGQ4OGVhZjM0OGFiMyBsZWdhY3ktdHJ1bmsKKzQ2Njk4IDYyNWMyZDk4YTFmODA1ZDE3OTM3YzM2YTgzOWE1NTllZDMwNzMwZTkgbGVnYWN5LXRydW5rCis0NjY5OSA3YmZhZmRlZmZlZTI2MDk1NmVjMjhhZmRkM2JmMTUzNmJhN2QyODAzIGxlZ2FjeS10cnVuaworNDY3MDAgMWU4YjU5Mzg5ZTJlMTBiNjgyNjhlOTkzMThmMTRhN2I5OGE3YmQzNiBsZWdhY3ktdHJ1bmsKKzQ2NzAxIDFlODU2NTdmMDQ3NDBkNjBiNjk3ZGYyMmI0MmNlZmVjZmM5NmUyMjkgbGVnYWN5LXRydW5rCis0NjcwMiAzYTM2ZDVmNWIxMGZkMzA0ZTUxNmY4Yzk4ODg2NTRiMjBmYjJiNzkwIGxlZ2FjeS10cnVuaworNDY3MDUgZWE5OTY2Yzg4NjU3NDJkMjgwNDZhODNmNDE4NzlkZWIyZjJiY2Y1MSBsZWdhY3ktdHJ1bmsKKzQ2NzA2IDBjZDIyNzNiYzNiMTc1NmM4OGMzZjZiNjkyM2MxOGNlOTZjNTU0NDcgbGVnYWN5LXRydW5rCis0NjcwOCBkZWZiMmI5OTM0MzRmZjFmNjYxOTc1ZDYyOTgzZjdkZjBmMWNhODExIGxlZ2FjeS10cnVuaworNDY3MDkgYTJjZjg3MWI3ODAwZThkZGMzNzNhOTQwZWI2YzM1NzAxYjY1NGVkZiBsZWdhY3ktdHJ1bmsKKzQ2NzEwIDNmYjM4MzUxZGQzOWNiNzNlNWQyYmIzYjQ2NzU4OGYxMzYzNzVlYWIgbGVnYWN5LXRydW5rCis0NjcxNiAyYWY1NzU3ZGU3YjFlOWFkNjQ3YTk5MmYyZTZjNzMzMjRjODI4NmVlIGxlZ2FjeS10cnVuaworNDY3MTcgMWNiMmVjZTRiOWUxZGUwZWFiZDM5ZDZhZTQxYTIwZmU0OTM2MTNmOCBsZWdhY3ktdHJ1bmsKKzQ2NzE4IGEzNjY4ZTk0ZmM2ZDRkNDc3MmI0YzM0MDM0YmU1MTUzYTIwMDlmNDQgbGVnYWN5LXRydW5rCis0NjcxOSAxYjQ3ZDAzMGMzZmFlNWM3ZjVhYjNiMDZiZGY3NmZiMzNhMmU2OWExIGxlZ2FjeS10cnVuaworNDY3MjAgNzcwNGYzNzU0MWY0MjMxZmViZDYwMmNlMzEzMjkzZjU2MjM0MGQwOSBsZWdhY3ktdHJ1bmsKKzQ2NzIzIDg3MmU5OTFmOWI3MDE1NDA5ZWY1N2E3OWYyMzViMDc3NjJjOGFmNjIgbGVnYWN5LXRydW5rCis0NjcyNyAxMTAwYjUyYzU1ZmRmZTM2NDViZjEzOWU1NjA0ZmNhY2U3ZTdhNDcwIGxlZ2FjeS10cnVuaworNDY3MjggYTA3NjFjZWI4NjMzYTgxYTM0ZDg0ZjkwZmQzYzZjNmQ5MmRkYzZhNSBsZWdhY3ktdHJ1bmsKKzQ2NzI5IDBiNGVhYzQwNTBiODAwMjhiZjJmNTVhMGVjMTc5MDQxYmYzYTEwMTggbGVnYWN5LXRydW5rCis0NjczMCBmYzNiY2Q0ZTQ0Yjk2NGFlNzI4MDI2OWQyZTkxMjg0MGY5NTZlM2MxIGxlZ2FjeS10cnVuaworNDY3MzEgMGU3YmFmYjFiODJmOWMxYTE5ZDI3YjhlYTdmNzhjOGQyNmQ0ODFjZCBsZWdhY3ktdHJ1bmsKKzQ2NzMyIDdkMzFiNjY5MmFiNzQ4MDFkZWIzNWM2NTYxMDQyMDdhZmEwMjFiYjIgcmVsZWFzZTI0LW1haW50Cis0NjczNSBlM2MwOGYwNjZlYjgwZDdlODFlZDFkODk5MGQwMzhkMTA1NTU5ZjAwIGxlZ2FjeS10cnVuaworNDY3MzYgZmNiZjYzYzliNGY2ZmNlZGE2MjUyNTg3YmMxZWRmZWYxMjNiZmQ1OSBsZWdhY3ktdHJ1bmsKKzQ2NzM3IDRiMGEzZDBkODU4NDFiNzUwZjdmMzE0YjdlN2QzM2QwZTljNjliNzQgbGVnYWN5LXRydW5rCis0NjczOCAxZTA3MDRjZDllZTgxYWFhNTg4MGY1YThkYjAyM2ZhNGM4YjBlNzE3IGxlZ2FjeS10cnVuaworNDY3MzkgNWM1OGZkYTk1YWE1YTJiZmQ0MjFjN2ExZWQ0Y2JjZTk4YzU0MzRkNCBsZWdhY3ktdHJ1bmsKKzQ2NzQwIGYyOGY5YzE1ZTJkMGY4ZTAyMzE3ZTg3MGU2NmM2NWQ2NjkwMTM1YzcgbGVnYWN5LXRydW5rCis0Njc0MSAzNTgxZDFkYzQyNTMzNzIyMzA1OTZlYzg0OWE2YmYwZTYxMjVkMTczIGxlZ2FjeS10cnVuaworNDY3NDIgMWQyMzljN2U4ZDYwNzVhMzE4NjAxOGFiNmI0ZmE0MGRmZGFkMWIzMiByZWxlYXNlMjQtbWFpbnQKKzQ2NzQzIDcyYzhmMThlMDMxMTgzZGJlOWE3ZmNlOWZlNjYwMzExMWQ5NjA5OWIgbGVnYWN5LXRydW5rCis0Njc0NCA3NjE5MjE2YmJjMTk0YzM0MzFmODM3MDlhYWI5NmY5YTlhZmJhYmVjIHJlbGVhc2UyNC1tYWludAorNDY3NDUgZDNkOTYxZjM4OGJlMmIwM2FmNjRiMTQ4YzczZjAyZjQ2NzNjZWE3ZiBsZWdhY3ktdHJ1bmsKKzQ2NzQ2IGUyYmE1YWU0YjgxM2Q5ZmQyYzJkMjY4ZDhiYWY2YzI2ODQyNTU4NTEgbGVnYWN5LXRydW5rCis0Njc0NyBlMGQyOTU4NjIxMmEzNzdlZGQ5MjI3MzY4ZjRjM2M2ZDcwY2YzMjE1IHJlbGVhc2UyNC1tYWludAorNDY3NDggZGVlNzNmYTgxMTBmM2VhZDQzMDBmOTE2NDVmNjVkYjhjOGUzZTQ1ZSBsZWdhY3ktdHJ1bmsKKzQ2NzUwIDE5ZmQ2MTQxOTQwZDViMGE3YjRmYjJjNDEzODkxMmFiYjAyODNkOTggcDN5aworNDY3NTEgMjQ5MzBlM2I2MDYxOWFlYzMxOWNkZjMzYjJjZjQwYmM5MzExODI2YiBsZWdhY3ktdHJ1bmsKKzQ2NzUyIDM2NWNhMDRkMDg1NjRhMDlkMWNlYmFhZGFlNzQ1YjA4YTQ3NzZjNjggbGVnYWN5LXRydW5rCis0Njc1MyAwOTk5N2IyZjYzYTJjM2RhYjJlNmNkN2VhOWNiZmJmZjFiZmExYjJmIHAzeWsKKzQ2NzU0IGExOWMyMGM1ZTVjNzU2NjIxNTdiMTEwMmUzNmMwN2QxZTJjMDFhYjkgcDN5aworNDY3NTUgNmJhN2Q0NjY3OTg2N2JmOWQ0YWI2ZWU5OGUxNTVmY2QwMTE3Y2FkNSBsZWdhY3ktdHJ1bmsKKzQ2NzU2IDBlMzE5NjY3NDU1YzM1YzYyMjI0MzU1YjM3MjkzZWRlNGU1MDIzYjggcmVsZWFzZTI0LW1haW50Cis0Njc1NyA1YmM3MjcyYjgxZTU0N2RmY2NlYTBiMGZmYjgwMzUyMDk3Y2Y3NTU2IGxlZ2FjeS10cnVuaworNDY3NTggOTM1YWMyMmYwYjNmMDI2ZTUzZjhkYmM3Y2IxYmM5ZDY1MTM3MTYyZSByZWxlYXNlMjQtbWFpbnQKKzQ2NzYwIDVmMTk1NDQzZTAwYWE5MDljOTA1ZmQxNTFjMzlmY2U3OGVkZDg0OTIgbGVnYWN5LXRydW5rCis0Njc2MiA0ZTc5OGNhYTA4MmU1Y2RkMTJhMmQ3ZTFmNzJmY2VlMWI3YmNjMDU5IGxlZ2FjeS10cnVuaworNDY3NjMgYzIwMzg0MDU3YTA2YzI3YjczNjI1NWEwYjgyYjg0ZDE5ZGE1NjU5NCBsZWdhY3ktdHJ1bmsKKzQ2NzY0IGMzYzUyZjE1OTk5OWFlOTQ2MGFmZGRiNGQ2MzdjYzEyMjFmOTBmYTkgbGVnYWN5LXRydW5rCis0Njc2NSBlY2E0ZmUxMzI5NDBiZDNjNTJhYTZkYjExMGU4OWViNDIzNTYxMmMzIGxlZ2FjeS10cnVuaworNDY3NjYgMmVhMjYzYjYyODk3MmU0NTI3M2ZkOWZkZWI4YmUxZWU5NjY1YjYyNCBsZWdhY3ktdHJ1bmsKKzQ2NzY3IGRlYmM4ZDc4M2Y4NjllNWE4YzhhNzI5OGY3MjQwY2FjMWNmOWEyNzcgbGVnYWN5LXRydW5rCis0Njc2OSAwYTFiYWQzMmFiZmUzOWQ5YTBkYzBiYjI2Y2M0YzUwZjU2ZWI4MGUxIGxlZ2FjeS10cnVuaworNDY3NzMgNjdmNDMwZDkyYjM4ZTVjYTQ0YzIyYzc2M2E2ZjQzMTdmOWFmZjgzNCBsZWdhY3ktdHJ1bmsKKzQ2Nzc2IDQ2NTk5ZmM0ODZlOGZkYWFmMjFmOGJiODNiOWE4OGI0ZGYyMDRmMDUgcmVsZWFzZTI0LW1haW50Cis0Njc3NyBjNTczMjFjODQyMjZjOTE2Nzk2YThlZDVjMDdlYzNiNWVkMTZiMjZlIHJlbGVhc2UyNC1tYWludAorNDY3NzggNzdiNjU4OWZhZGI5N2Q4NWUwYzY0NWM4MTVjOTg5ZjM0ZTU1NjRiZiBsZWdhY3ktdHJ1bmsKKzQ2Nzc5IDRlZjFjNjg1YmNiZGNlNDQ0M2IzMjhhZTA3Yzk3NzcwMzlmZjMwZjUgbGVnYWN5LXRydW5rCis0Njc4MyAwNWE0OWM4OTg1ZmIwOWY0NzVjN2EyYTlmNDNiOWQxODNhOTY5OTc2IGxlZ2FjeS10cnVuaworNDY3ODQgYWMyNWVlZTkwMjU0MTc1MTIxYmNlYTE1NzYzNWU5ZWRmMWY5MmQ3NiBsZWdhY3ktdHJ1bmsKKzQ2Nzg1IDcyZTM3YWRhNDE3MDcyZmIxYTEzMDMwOGNlOGUzMGUzZjBiN2FjYWMgbGVnYWN5LXRydW5rCis0Njc4NyA3MGFhYzJiOTNlMDlhM2E0ODkwMGIyNWJkM2JjOGQ1YmJlY2VjMjBkIGxlZ2FjeS10cnVuaworNDY3OTIgNmU4ZDk5NzE4MTcwMGQ0MWMyMjMyNmZjZDM0OTgyOGU2YzFjYjk4NyBsZWdhY3ktdHJ1bmsKKzQ2Nzk0IDEzNWQxNTg2YjM1ZDU0YmFjODFkNzFmYTQ2ZTJkNmE3OTg0ODIzOWMgbGVnYWN5LXRydW5rCis0Njc5NSAxY2FmYmNkN2Y1NWNjY2E5MWM0MDg1YjFmNWE2ZWE1YWY5YWYyYWU1IGxlZ2FjeS10cnVuaworNDY3OTggNzZhZDExOGZmZTNiNWY4NTYyODY3NTlmMGVkYzc1M2Q0OGVmN2I0OCBsZWdhY3ktdHJ1bmsKKzQ2Nzk5IDVhNzQxOTM0MjlmMDY0ZTEyNWRlOTM2MmNjMTg2MzY0NGQ4YmE0MmEgbGVnYWN5LXRydW5rCis0NjgwMCAwN2YyNDE5N2I4N2NkNzBkMjExNjhhZjFhMTE0YzVmMzZjYWNmYzQwIGxlZ2FjeS10cnVuaworNDY4MDEgMjZhOTdlNWJkZjIxMjE1MTEwM2E3YjgzMGE0NTM3ZWExNzQ2OTFhMSBsZWdhY3ktdHJ1bmsKKzQ2ODAzIGIxMjlhNTAyNzFhZGZlYzc5MjA2MjM2Y2MyZWM1Mzk0NGJlZmNlNTQgbGVnYWN5LXRydW5rCis0NjgwNCAxODI4YWY1ZGNjOTk0NGEyZjc4NTViN2ZjYjE2ODY0Yjc4YjNiYTlkIGxlZ2FjeS10cnVuaworNDY4MDUgYmE2ZWViZjdjNzE5ZGZiNThhNWUzOTU0YThjZTViMjRiZmEzODkwOSBsZWdhY3ktdHJ1bmsKKzQ2ODA2IDE2Yzc5OGU4ZWFlMzI3Yjg1YTQ2MGNiYmExY2ViZmI0NDE5NzYzOTAgbGVnYWN5LXRydW5rCis0NjgwNyA0OTNmYjU3NzkzMmYyZDg4MzFhNDNiNTMxOWM0ZWM5N2YyOGExN2U5IHJlbGVhc2UyNC1tYWludAorNDY4MDggNDJmZTZkZTI0NjAyZmQ0MGY0MmUzOTNlZDEzNDQxY2Y1NDlhM2VlNyBsZWdhY3ktdHJ1bmsKKzQ2ODA5IGFkNWQ0NzM1YmVkYzg0NmM2YWVmMjFjMTAyZWNkYmNjY2VhNWMzMjEgcmVsZWFzZTI0LW1haW50Cis0NjgxMiA2NzQ1MGRiMjZmODE2N2U3OGJiYzNlMDUwOTcwODE0N2Q1NTdjYmU1IGxlZ2FjeS10cnVuaworNDY4MTMgZTE1ZmFmYTQxMDdkMjBkNmIwZDQxOWRmYjdiZjNkZDliMmRlODVjMyByZWxlYXNlMjQtbWFpbnQKKzQ2ODE0IDA4YjI0Yzg4ZDUxOTAxMGY1MTMzYjgzOTQzODdjMTI3NmU0ODRmNWUgcmVsZWFzZTI0LW1haW50Cis0NjgxNSBlN2QwODRjZjY1YmI5YjQwODQwY2VlOTMzZGFmMWJiYzU1MGJhNDM4IHJlbGVhc2UyNC1tYWludAorNDY4MTYgNDU0YWEwZWMwZWI3YjNhNmNiMzQxY2MyMTAzMDQ2YTMyNDNhYjZlMSByZWxlYXNlMjQtbWFpbnQKKzQ2ODE3IDgyMzMxZjExYTE1NjBiZmUzY2VmNDE5ODFiYmE5NGE0ZDVmZGUwZWMgbGVnYWN5LXRydW5rCis0NjgxOCBlMmQyZGM1MDY1Mjg3NzliYmQyNWQ2OTUwMjQxYWRkMTMzYTc2MGEwIGxlZ2FjeS10cnVuaworNDY4MTkgNDI4MDg1MjY1MTFjOWJiNDkyMGIxZTEwNzIyMWY4ZWFkMTczZWZmNiBsZWdhY3ktdHJ1bmsKKzQ2ODIwIGIyM2VlYjgwMjc4MDUyM2I2NTQ5NmU0YmJmNWVhNmM4MjYyYjNlYTYgbGVnYWN5LXRydW5rCis0NjgyMSAzMTI1MDk5YjM0OTcxYzMwYzc2OTc4M2VkMzkwMGE2ZTUxY2VhMjE2IGxlZ2FjeS10cnVuaworNDY4MjIgMmRkMTk3MDE0NjEyMmFkZWNlYzg3NjkyNmQyNDhiNTUyNjVhYWU4MSByZWxlYXNlMjQtbWFpbnQKKzQ2ODI0IGFhNWExYmNhMjhkZDg4Y2NjMmRlYzE0YjU5ZTQzYTRkODFlNjcwZjggbGVnYWN5LXRydW5rCis0NjgyNSBjZDVmMmM1YmFiNjUzYjU1NzM2ZTc3M2VhZTM4NWFiNDMyYzJmOGQxIGxlZ2FjeS10cnVuaworNDY4MjYgNTM4Y2YxODhmOGE2Y2JjMjIwOGE1MjI2MmViOWFiZGI5ZjI2MDY0MSBsZWdhY3ktdHJ1bmsKKzQ2ODI3IGJjMDkxMTgxYjg0MTM5NTUwN2E3NzgwMjFmNDU5NWYxYjFlNGIyNGMgbGVnYWN5LXRydW5rCis0NjgyOCAwMTQyNTM2YjUyYjY0YjNhODM2YTYyNzgwNzdmNmYwNWJjZTRiYzE5IHJlbGVhc2UyNC1tYWludAorNDY4MjkgYzVhZmQ0NDBhNGQwOWQwZGUwYzc3MzdlNTM3MWNkMmQzNWU3MmU3YiByZWxlYXNlMjQtbWFpbnQKKzQ2ODMxIDkyNDQwZGU4NjhlOTNmZWYxM2IzMzgzYmU5Y2M1MTBlOTdmYjRkZmMgbGVnYWN5LXRydW5rCis0NjgzNCBhMWRkMjVlYzJmNWJjNjY1NThjMzM4OWRhYjU1YjBiZjMxMmU3OTg3IGxlZ2FjeS10cnVuaworNDY4MzUgNzM2NjVmNmZlYzMxNWFlY2YzMGRjZjdlMzFhZjQ2OGZmYTdkOWI0NSBsZWdhY3ktdHJ1bmsKKzQ2ODM3IDdiMzE4ZTk2ZjgwYWE5NDhkYWE0MGYxY2EwNzFlOTllMWIzYTJjZTggbGVnYWN5LXRydW5rCis0NjgzOCBiOGYyMjg1MWMxZmYxZTU5OTI0YzVlN2IyNjU4MGI5M2E5MDI2NTU2IGxlZ2FjeS10cnVuaworNDY4MzkgMGIzZmUyYjczNGExZGZmMTQwNjU1ZjEzYzMwYzgzZGI1NTM2ZTY0NyBsZWdhY3ktdHJ1bmsKKzQ2ODQwIGJmNGU0ODViZWNmMzc3NjIyYjBmYzJiYWU5ZTJlYmVlN2MyY2QzMGUgbGVnYWN5LXRydW5rCis0Njg0MSAxOTVhMGQzZWVjZDQ1ZWI3NDNhYjIwNGJmOGEyZTYzMDdhMWU2Mzg0IHJlbGVhc2UyNC1tYWludAorNDY4NDQgOWQ4NDc4ZjczMmQ1YWRjOTFmMWM3ZGM4Y2IyOTk0MGVmZjFiNDc3YyBsZWdhY3ktdHJ1bmsKKzQ2ODUwIDlhOTQ0Njc2NzMyYTdkYjBlNDBiYjY1YzhkZWY2NjVjMzMyODI4OWMgbGVnYWN5LXRydW5rCis0Njg1MSBlODAwOTdiZjczYjYwZmFkOGU3ZjE0MGYzMDM2NWQxMzU2M2FlY2NmIGxlZ2FjeS10cnVuaworNDY4NTIgZTYxNTc1NWNhODcyNWZiMGI5ZjhmY2Q3MTVjY2RkMzljYjU2ZWJjYiBsZWdhY3ktdHJ1bmsKKzQ2ODUzIDBhOGEzOTJlMWZhZWNmMzBmODEzNTNlODMxNzI1MGQzOTM4YjU2ZDcgbGVnYWN5LXRydW5rCis0Njg1NCBhZjE3NDJhODA0OWVjNzg4NmU4NGQ1MTA1ZWVmODkzZmMyMGY0YjBkIGxlZ2FjeS10cnVuaworNDY4NTUgNTAxZWUyYTA1ZmVjNGI4ZmQwZGY1YjZjMjg4ZWFiNzJiMzVkOGVlOSBsZWdhY3ktdHJ1bmsKKzQ2ODU2IGFkZjIwODkyZDhjZmJjMGNlZmZkYzk3YmRiMTc3ZjFhYWM5OTNhYmUgbGVnYWN5LXRydW5rCis0Njg1NyA0OTAyNmFmOWQxZDc5YzQxYTBhN2FhNjRiMmZlYmRiZDEzNDUzZmE0IGxlZ2FjeS10cnVuaworNDY4NTggZTg0NjRhZmVmNGE0MWFhOWE3YjJmNjE1YzBjYzMxYjg4MGQ3MGNiZSBsZWdhY3ktdHJ1bmsKKzQ2ODU5IDFiM2I2YjE5ODJhYWNkMDMxNDg4OGVmZmI4MWJiZWQ1YzY1MTY3MzYgbGVnYWN5LXRydW5rCis0Njg2MCBhYjI1M2NkNDk3ZDIxMzc2NzMwMmJiZWI2YTI1Zjg4YTJjMDAwNGE4IGxlZ2FjeS10cnVuaworNDY4NjEgZmM0YWZlZTQwYzJiM2I4NThhOTU5NzRiYzM0MTc4NTE5MzczNzVhYSBsZWdhY3ktdHJ1bmsKKzQ2ODYyIGE3ODkzOTBkOGVhN2VkZGU3ZDA2MzRlN2NhYTg0NTVhYjdhODk0YzAgbGVnYWN5LXRydW5rCis0Njg2MyBiNTBhYjI4OGFlMjdmZjQ4OTU3MGJlMzFiODZhMzM2OGMzODkxZGY3IGxlZ2FjeS10cnVuaworNDY4NjQgZDY3ZGVkN2EyOTE0ZTRjZjNmOWMxNWExODI0NzBhYjQzMWFkZTBmNiBsZWdhY3ktdHJ1bmsKKzQ2ODY1IGZjYTFlNDI0ZDAyMzhmODk1MmIwODgzZjdlYjljNzc0NDU0ZDk5MGYgbGVnYWN5LXRydW5rCis0Njg2NiBjYmYyNzJmNDc5ZDEwN2IzMjNlY2E0MDYzOTYzMmEwOTlkODg5NjJkIGxlZ2FjeS10cnVuaworNDY4NjcgNWE5OTRkMjZhM2NmODk0YmE5YTE2ZWE4ODVmYTBiN2ZjMDVhOTk2NSBsZWdhY3ktdHJ1bmsKKzQ2ODY4IDBhY2M1MmQzZmJmMWY0MzVhM2ZjM2JlN2IyYmVlMTg3Yjc5ZjhjOGIgbGVnYWN5LXRydW5rCis0Njg2OSBlNmM4MDBhNDYzYjEzMTI5ZDNjNzE4MDJjYWE1ZDQzN2QzMTYxZmY4IGxlZ2FjeS10cnVuaworNDY4NzAgOGJhOTdjY2JmOTNhODNmNmU2YmZhODA2MmU1ZGJiZWJiZTg1NjA3MiBsZWdhY3ktdHJ1bmsKKzQ2ODcxIDY2Y2JjY2U0MjI3OGYyMmQyMTRiNjhhNmViMmVmZWM3NTk4OTNhNWUgbGVnYWN5LXRydW5rCis0Njg3MiAxZmE3OGZkMWU5MzM5MTQ3NGZjODk1MzE3MDk2ZTg1ZTJlNDQ3MmQxIGxlZ2FjeS10cnVuaworNDY4NzMgNjBkNzlhMmJjOTk3ZThjYzBjMzMwNDA4ZTMxNzMxMmIzYjdjOTkxMiBsZWdhY3ktdHJ1bmsKKzQ2ODc0IDFhMTFhNGE0OWZiODVhM2Y5NmY0ZTM0ZjI3MGJmYjBmZGIwNzk0NWYgbGVnYWN5LXRydW5rCis0Njg3NSAzZWVlN2JkOWEwZDA3MmI0M2JkYzZlZDcwYzdmNzUwZTI0OWE2ZDM0IGxlZ2FjeS10cnVuaworNDY4NzYgNDE1NzBmMDk5YTRjM2U2NTFmNmIyZDU3ZDc5YzA5YjY3MDc2NmMxYyBsZWdhY3ktdHJ1bmsKKzQ2ODc3IDkyZDhjZGM0YjkwYzAyYzRkMTc1ZmE2YTQ3MGE3Mzc5ODUxMjY0MDQgbGVnYWN5LXRydW5rCis0Njg3OCBmMTRhYjcwYzMyMGU0OGZkMmI1MmUzMWZjN2E4N2JjMjUwNzA1ZTZmIGxlZ2FjeS10cnVuaworNDY4NzkgNjllODljMjkwNDRlMmJkZDBmYjliNzU1M2IwZjliNWY5MzJmYTc3OCBsZWdhY3ktdHJ1bmsKKzQ2ODgwIDQ3ZDhkMTljY2FkYzcwNTJiYThjMmI1MjQ2OWEwMWVjNTMwN2I0YzkgbGVnYWN5LXRydW5rCis0Njg4MSA3OTk4M2NmNjM0YzAyNWFiNGE1ZTcxZWU4N2Q3Yzk4ZjM0ODBlOGIwIGxlZ2FjeS10cnVuaworNDY4ODIgNDZmM2ViNDc0Yzg0MmQwYjAwYWU5MjkxY2IzNTdmNzYxMWUyOWE0YSBsZWdhY3ktdHJ1bmsKKzQ2ODgzIGE5MWU3MzljZTMzMzI1ZmE0YWFmMTAwMjRmY2Q4YTM4ODczZDA5NmUgbGVnYWN5LXRydW5rCis0Njg4NCAxODkzMDRjOWQwN2VhZGE0Y2Q0YzIxOTE3MmFiNWVlNTkwYzJmNDkwIGxlZ2FjeS10cnVuaworNDY4ODUgMmFiMDM5NGU2ZTQ5YjRmMzUzYjg2YjAzY2VmOTYzZDVhNTNlNmVkNiBsZWdhY3ktdHJ1bmsKKzQ2ODg2IDYxOGQwODhkOTY2ODljZjdkZGFlNzgzZTJjNGM4ZjkzODRjYmJjY2QgbGVnYWN5LXRydW5rCis0Njg4NyAxZGE4NDU2ZWJkNDg3MTlhNGViZDc4N2U0ZmJiMzU2NWMzMDMwOTE1IGxlZ2FjeS10cnVuaworNDY4ODggZDU3NzFhMzg5YjhlYjdhOTg1NzhjZDgwNWVkZDNlMTI2MGZkNTNkOSBsZWdhY3ktdHJ1bmsKKzQ2ODg5IDE3MDNlZmRhNTc3NDJkMTgxYmUwNDVmMjA3MDhkNjVkOTJkYjk5ZDEgbGVnYWN5LXRydW5rCis0Njg5MCA1MTczMmU4MWM3OTYxNDY3ZjY4MzJlYjZmYjhjMDNhODdlM2NmMzhmIGxlZ2FjeS10cnVuaworNDY4OTEgOGZlMzczZmIyMWQ0MzBjNGE2NGViNDU0ZDAxZWNiZDJkZmI1Yjk0NiBsZWdhY3ktdHJ1bmsKKzQ2ODkyIDk3MWFiZjNhZWNmNDExNThjYzcwYzFkYjc5M2QxNDU0ZjE1YWRlMTggbGVnYWN5LXRydW5rCis0Njg5MyA5N2I2MWQ2ZjZiNzY4MTYyMDQ3YTljNjQ4NjFhMTdjNTBjNTMzODM2IGxlZ2FjeS10cnVuaworNDY4OTQgNGM3NGVjODMxYTZjM2JmZWUzZjg0NDkzZmM4MGJiOWJiNzZlYjQyZCBsZWdhY3ktdHJ1bmsKKzQ2ODk5IDM4MWE3MmFiNWZiODM5NGEyZDNlYTI4YmQ3MGMxMDBkNjM2YzdkMWEgbGVnYWN5LXRydW5rCis0NjkwMSBjODYxODQ3M2NkYzZlODE2YjY5Y2IwY2FlMGM4YTU0OTJkMGQzMmRiIGxlZ2FjeS10cnVuaworNDY5MDIgNTFmMzM0MmI3MGQzY2ZhNzM5ZWQyMGZkZjdkNDQ1ZTBjMjJjNjQzMiBsZWdhY3ktdHJ1bmsKKzQ2OTAzIDc2NWZiMWNjYzNkODk0ZGJkYjFhZGE5MWQzZmU5NDM2OGI2MjZkYzcgbGVnYWN5LXRydW5rCis0NjkwNSA5Yjg1MDdjZmJlOTUwMTA1OWYyNzcwZmNlZDI5NWQxYzliN2E3YmRiIGxlZ2FjeS10cnVuaworNDY5MDYgYTQ1NTJmMDhkNTNiMzQyNzNlZjRjYzQ0NjU3OTU4ZTc0NTkzZjE4NyBsZWdhY3ktdHJ1bmsKKzQ2OTA4IDljNTJlZmNhZmY2NTFkZWU4NTkyMTM3Zjk5YzdmM2M3Mzc0NTQyOTUgbGVnYWN5LXRydW5rCis0NjkwOSA3MGIxNjZjYTFjNDllMjM3ODg1NTIyZTgyNGQ4MGZhOWRlOGQ0ZjRkIGxlZ2FjeS10cnVuaworNDY5MTAgOTE0ZGExMDM2ZWVkNWRiNmIwNjhhNmM4MDhlYThjZmNkMzJlNzU2YyBsZWdhY3ktdHJ1bmsKKzQ2OTExIDkzNjQyOWUxMGI4Nzk2ZWI2YmVjMzFhZmQzMDk1MGUyNDkyOTRiYjIgbGVnYWN5LXRydW5rCis0NjkxMiBlYTM3MjNiMmQ0NmJkMTc4MDQ2ODRiYmFkMjg4MTFlMTBiZTY3NjBiIGxlZ2FjeS10cnVuaworNDY5MTMgNjQ1NjA5MmMxMjM1YTE3MDFhNzY0YTdjZWRmOTY3YmQ0NDIxYmJmZSBsZWdhY3ktdHJ1bmsKKzQ2OTE0IGUxYjE4NDc5Y2U5MzA3ZDNmNWZhODEyNDkxMGE1M2Q0ZDg4YzNjYzkgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkxNSA5ODEyMmQyMTc2ZjE0MGExZjUwMjc3ZjkzMjdmMjI2MjU5OTVkN2EyIGxlZ2FjeS10cnVuaworNDY5MTYgNWRiMWZhNmU5NjgxODM1ZjUyZDBjYzk3NGY4NDE4NWU4ZGQyOTYwZiBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTE3IDk5MjEyNmEyOWUwZmQzOGQ0ZGZjMDRkZDcxNDEwYTExZmUwYTFkNTEgbGVnYWN5LXRydW5rCis0NjkxOCA0ZTc0ZGY5NTk1MThhNGI3MzgzYzZlZDRlY2NkNjY2YTI0ZGYxMjNmIGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MTkgZjdkMjNiY2E1OTlmZWJjYmQxZTRlMTljMTAxZmU4MWYxZDNiNGVjNiBsZWdhY3ktdHJ1bmsKKzQ2OTIwIGE3MTRmMmYxM2UyNWYyMjcwNGYxN2FhMTgyNDQwYmU1NTQ5YTI3NGUgbGVnYWN5LXRydW5rCis0NjkyMSAzZTk2ZTUwMjVkOWY3YWFlNGIwNGYzNjU3ODZjYzU3NmRhNTIxOWFlIGxlZ2FjeS10cnVuaworNDY5MjMgNmYyZjE4Zjg2Mzg3NDNkNDlhZDQ3ZDEyOTFlNDZhNWVhMmE1YmM1NiBsZWdhY3ktdHJ1bmsKKzQ2OTI0IDZmMzA2MTFmMjgzZGNiZTcyZWY3NjA5MDZmNzA1ZjE4M2JlZjQ3OTcgbGVnYWN5LXRydW5rCis0NjkyNSA1ZDYyMmU0ODNmY2NmYTYyZGY1N2I0NGMzNDQ5M2UxYzMyNTY4OTY4IGxlZ2FjeS10cnVuaworNDY5MjYgNTEyNTA3NjZkNmY1ZDI1MTMyMDIwODZiNmZjYjk0Yjg1MmMxYWU3NCBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTI3IGJiMWYwMmU5NzExZGE1ZjUzZWFkMjdiNzIyM2Y1YzRhYTA0YmFhMDQgbGVnYWN5LXRydW5rCis0NjkyOCAyMTY3MTA1MTIzZTQ0NzhiYWFjNzUzYzE0OTY0N2FiZDk5YmI0OWFmIGxlZ2FjeS10cnVuaworNDY5MjkgNmUwYzBjN2NmMDY4OWFkNDgwY2M1ZWZlMTcyYTVmZDIwZWE5YzRiMyBsZWdhY3ktdHJ1bmsKKzQ2OTMwIDcwYzJlZmEwMDAwNzhmMjljNGRjZWQyNWYyNjk5NTFjNTJjOGYyM2QgbGVnYWN5LXRydW5rCis0NjkzMSBhMjQ5MGY3OTMxZDMxMTM5ZWI1ZDdkZmViMjBmNGNhOTkxYjQ4MjdkIGxlZ2FjeS10cnVuaworNDY5MzIgYmI2ODRhMGMyMmQ5NjM0YTBjZjBjMzc2MWIwZjY4OWY5NmYyOTQ3NiBsZWdhY3ktdHJ1bmsKKzQ2OTMzIDc0YmY1NzNiZmY0YzM1ZTdhODVlMjllODUxMThhYWMyMjJkYTFjMjkgbGVnYWN5LXRydW5rCis0NjkzNCAwYTVjZjI1OTQ1ZTJiNjc1Y2Q1MmRkYTE5YzA5NGQzZjJhNWFiODFiIHJlbGVhc2UyNC1tYWludAorNDY5MzYgM2U1ZmQyYjcwZTVhNzBkNWU1NzEzOTRmZjE1MjFjMzE0Zjc2NGQ5YyBsZWdhY3ktdHJ1bmsKKzQ2OTM3IGVjZThhNjc1MWRiNzQ4OGI3YjgwN2Y2ZTMxODE4NzA3OTY3ZTJlZTMgbGVnYWN5LXRydW5rCis0NjkzOCA2ZjdlNjRiNzJhNTg3OWVhNmNkYzgwMTUyNmZjZTdmZTEyOGU3ZDUzIGxlZ2FjeS10cnVuaworNDY5MzkgNDU1ODkxNmI4NDFmMWNmYTc4Mjk5MTlkNzNjNWIyZDU4YmQwYjc0YiBsZWdhY3ktdHJ1bmsKKzQ2OTQwIDYyY2Y2ZDU4YmI1M2ZiNmJkZWFhMDcwYTU1YmU1NGM2ZTUxN2U1YjkgbGVnYWN5LXRydW5rCis0Njk0MSA1Nzk2YWNmYmI2ZGExNjc4NGJkODIxMTY1MGJmYzA0YTVjOTBmZTI0IGxlZ2FjeS10cnVuaworNDY5NDIgYjdhMzYyMGQzZGJiNzY3MDVkMjk3MmY2M2E0NDZjZjQzMWM5YjQ4MyBsZWdhY3ktdHJ1bmsKKzQ2OTQzIDZkODA3NmQzODA1OTdhNjY5ZGY0YzEyYTIxYWM3ZmFlYTVmZTMwZWQgbGVnYWN5LXRydW5rCis0Njk0NCBkODU3YTMyMDc1ZDRiZWMwNzEyOTgzYzNhM2MzOWNkZWRiYjFjMTgzIGxlZ2FjeS10cnVuaworNDY5NDUgNTQ5YzU0NzcwMGFmODcyNWU1MDRlYmRjMDk1ZDE1ODVmN2RkMTk1ZSBsZWdhY3ktdHJ1bmsKKzQ2OTQ2IDA2OWZmM2E3MDY5NDEwNGE0M2YxYzYxZjQ5MWZiNmRhY2MyNGIzZWEgbGVnYWN5LXRydW5rCis0Njk0NyBjOTU5ZGU2NGE4ZGExODdlMWVlODdlMTc2MzgwMGM5NzQ2NTI5MDRlIHJlbGVhc2UyNC1tYWludAorNDY5NDggNDM3N2IxN2RkYjJjZmU1MDNkYWI4MmM1ZTc0OGUzY2MyNjliNmU0ZCBsZWdhY3ktdHJ1bmsKKzQ2OTQ5IDA2OTA2Mjg1OTI5OGM1MjQyZjFjOWM2YjU5Njg3MzUxNDA1NTk2NjMgbGVnYWN5LXRydW5rCis0Njk1MCBjNTIwZWVjZTAxYjAzOTY4NGI1YzgyYjdhN2E1OWM3YWVjOGQ0Y2IzIHJlbGVhc2UyNC1tYWludAorNDY5NTEgZDY4Nzc4MzU3OTFkN2M2NDJhM2RmMDkyYTVjODZkOTQ2NzVlNjc5NiBsZWdhY3ktdHJ1bmsKKzQ2OTUyIGI3ZjRiYTYwMWRmOTdhZjdjZTVjM2FjYzM1ZjIyMDBhY2ZkMWIwNDggbGVnYWN5LXRydW5rCis0Njk1MyA5MTdiZWVhNTU1OTVkOWJiMDY1MGUwY2E5NzU4NGRjNjlkNmFiZmZjIHJlbGVhc2UyNC1tYWludAorNDY5NTQgMTZlMDVjNjA2Mjc1ZWI4OGZmNWU4MzdkOGI5YjdjOGI3NzI1YWU5OSBsZWdhY3ktdHJ1bmsKKzQ2OTU1IGQxYWVjN2I0ZGJiODY5M2Y0Mzg5MmZmN2E2YWIxODEyZTI2MWM1ZjUgbGVnYWN5LXRydW5rCis0Njk1NiAwM2MwNWNhYjVmMjEyNzdhOWUxYjE5YmY3Y2RiNDhhNWU4ZGM2YTQ1IHJlbGVhc2UyNC1tYWludAorNDY5NTcgMGY3NmE1NmQ1MDZjYzIwMGM5NDJkYjQ5YWFlMTAxYWFhYzAxZGUzNyBsZWdhY3ktdHJ1bmsKKzQ2OTU4IDBjZjJlYjNjYzUwYTczYjZlNzQ2MjQ4MzY3ZDE2OGQ2ZDBlOWQ0NzUgbGVnYWN5LXRydW5rCis0Njk1OSA4NjgwODUzZTllZTQwOTc2M2ZlMThkMGMzMWYwOGI0MjVlOGRhZWVjIGxlZ2FjeS10cnVuaworNDY5NjEgZDE1ZGYwMmRiMWNjMTNmN2FjNDQxOGE0OGExM2Y5NGM3YTUyYjBlMSBsZWdhY3ktdHJ1bmsKKzQ2OTYyIGQ3YmM2NDcwZTgzODM1Y2JkZTBmMjI3NmZkZjNkNDI0MjgxMmNkZmEgbGVnYWN5LXRydW5rCis0Njk2MyAzMmFkYWFkNTlmYjM3ZDc5YWIzNTk5NTQyMTE4MjVmMTZjMDk3Y2EyIGxlZ2FjeS10cnVuaworNDY5NjQgMGE4Yjg1MWIwMzc1MjI5ZWJlZTA2M2Q2MTNjMWNlNmM4MTlmYzA3NCBsZWdhY3ktdHJ1bmsKKzQ2OTY1IDc3YjAxYzkzMzMwODhhZmE2ZTRjMWQ0N2M0MjE4MzMzODI1YzA4MDcgbGVnYWN5LXRydW5rCis0Njk2NiBhOWY5YjUwNzViYzBjZjAzY2VjYmVjOTVkMzkxZDVmYmJjZjUxZDVjIGxlZ2FjeS10cnVuaworNDY5NjcgZmQ0MTJhMDBhMDdkZjQ1OWMyYWMzNDkwMjQyMTk1MzA0OWVjMjM4MyBsZWdhY3ktdHJ1bmsKKzQ2OTY4IGQ0YjFmOWEzMWMyOTY5ODUwMzMzZDI1ZDVlNGZiNDYyNWIwNzYxMTUgbGVnYWN5LXRydW5rCis0Njk2OSA5OTM3ZjA5ZDc2ZTNhMGRlOGFkZmI5NDY1YzNhY2NiZTI1ODY1YmRlIGxlZ2FjeS10cnVuaworNDY5NzAgNzkzZjAyNjk5M2JiMjlkNmNjOTE1OTI2NTMyOWYyMDZlZDY3MGJlYyBsZWdhY3ktdHJ1bmsKKzQ2OTcxIDNiNjVlZWZiYWY3NmUzZGJkMGZjN2RhOGEyYjFjMjcwMjk4ODdlNGQgbGVnYWN5LXRydW5rCis0Njk3MiAzNGI2OTcwNDExOTFhZTcxZTI2ODdiNDY1ZTc1MzRmYWFlYjU3NGQ0IGxlZ2FjeS10cnVuaworNDY5NzQgYzc3YmU1YzQwNjNiMzFlNGI4N2JkN2YzYjY2OWE4ZTI1ZjNiNTVhNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc2IDk5Mzg3Nzc0ZWIxZGRhMTE4ZTI4N2Y2YjAxMThlZTVhNWI2YTUzODYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3NyA1NGRmMzVlOWM2OThhN2Y4ZDg1YmIxZWNiZmEwYTNjNzJjNTRiOTVhIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzggOWU0ODI4MDAwY2ZhOTI4YmExMTlkMGY1ZGYxZmRhM2MxNjdkM2U0NSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc5IDdkYmJlNzg2ZmRjZDIzZGZhNzliOGE1YzAzODA1ZmVjNDU0Y2M2OWIgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk4MCAzNzMwNDNhMWJkZmJiODUwMWU5NDVjZjk0NjYxMDU2M2IwNDRjZWE0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5ODEgOTJlYjZlZDAzYzJlMWNjODUwMTIyODQ4NTg4NGYwODY3YTdiMGU3ZSBsZWdhY3ktdHJ1bmsKKzQ2OTgyIGNhY2Q0N2E2MWU3OTZkZmIzNjc0NDE3ZDQwMjVjYjM3MzlmMTAxNGEgbGVnYWN5LXRydW5rCis0Njk4MyAxZjk0N2YxMzQxZDE5NDdiMzJhYmRmMDkyZDE4ZWNlY2E0ODZiZjA5IGxlZ2FjeS10cnVuaworNDY5ODQgOWE5ZDU3ODJlNDM2N2I5YTAxOGRjNmY0MjkzNzllNTA5ZGU1NDA2ZiBsZWdhY3ktdHJ1bmsKKzQ2OTg5IDllODI3ZmQ4MzFkNzdjODQ4Zjc2NGFhZWNiYWZiMDBlZTBiODNhZjEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk5MCBiNWVmYTIzY2M5NDg4ZDdhZDM2NmFmZGIwMGY2NDcyZGVmNjI5NmNmIGxlZ2FjeS10cnVuaworNDY5OTEgZTc2YjZmM2E0NDE5MzkzNTAyNDM5M2QwNTFiYjM4MTBjN2U5MmVkMSBsZWdhY3ktdHJ1bmsKKzQ2OTkyIDZiNGRhNGVlNzE0NmViOTA2NmJiOWU4Y2NkZjhiNmZkYmE3NGMyN2YgbGVnYWN5LXRydW5rCis0Njk5MyBlMGMzZjVhNDQ0MGZkNDM0MWJjN2Q0NmU0MjVhMGU1NWQ3NDJiM2FhIGxlZ2FjeS10cnVuaworNDY5OTUgNTU3ZTYyMTI2Y2IxZGMyMmViODViMGU1OTY5NDFhNmVkZDA2MGVlNCBsZWdhY3ktdHJ1bmsKKzQ2OTk2IGIyYTRiZTQ3MzcyODIzMDBjNGYwZjU1NTdkZjU2ZTVmNWI5M2RhOGIgbGVnYWN5LXRydW5rCis0Njk5OCA4YTUwZDhlOTAxOGM4NDc5NTcwMGFlZDhkOWE3ZDhjMjgzOTJmMmEzIGxlZ2FjeS10cnVuaworNDY5OTkgZjZkYzU1ZDMyZjcwMmNlMDljZTY0OGU0YmEyOGExYjJlMjRiY2ZlOCBsZWdhY3ktdHJ1bmsKKzQ3MDAwIGFmZjY2MjlkMWQxYzQxMWZmZjQ2NDJjYTFkMTkyOTliOWY0YzgzMjggbGVnYWN5LXRydW5rCis0NzAwMyAwM2NmNWRkN2M5MDYxNWJmODdmZmQ4ZWQ5NmU3MzJhOGRkMjQ3MDY4IGxlZ2FjeS10cnVuaworNDcwMDQgYTBiMDYyZmYyOTM5YzkyZWJlMzdjZmI1ZGE3NjhkNzhiY2U0YmMyOSByZWxlYXNlMjQtbWFpbnQKKzQ3MDA1IGM1MDI2NzAzOTA4OGUwMjA5NGQ3ZDJjYzM5MzNhZmM4MDFlY2YyZmMgbGVnYWN5LXRydW5rCis0NzAwNiAwMjY1MGE0N2VlOGJlMzkzODQyNjhmZjM4M2IwZWY5OTUxMzU0YzEwIHJlbGVhc2UyNC1tYWludAorNDcwMDcgOTZlMWIwYzhmZjlhOGRhMWFhMzMzODJjMzE3OTM1MzQ1MDFjNDhiZiBsZWdhY3ktdHJ1bmsKKzQ3MDA4IDEyNThlOTNiYjFkMDA1OTRkNGQxMDJiN2Y0YzAwZDc3OTI5MThmOGUgbGVnYWN5LXRydW5rCis0NzAwOSA0ODRkM2Q1YmE3ZjlhNWFiMDMzMDFlNGUyYmQ2NWZlMDQ3NjRlZTM5IGxlZ2FjeS10cnVuaworNDcwMTAgYjlkMTQ0MGMyZGQxNjMxZDRkMDg3NjA3Y2E5NDc5Y2U3ZDY4ZDFjZSBsZWdhY3ktdHJ1bmsKKzQ3MDExIDZhN2YxZjEyZWFhZjdkNDRlOGQzYzkzMzZlMjMxZDFmODQ0NDZhMDMgbGVnYWN5LXRydW5rCis0NzAxMiA0MTFkMGEzNTNhMTVjODRmZDdlMmIwZTVjZmE2N2M2NjYyM2M2YzkxIHJlbGVhc2UyNC1tYWludAorNDcwMTMgMzBkMjMzMzg1MmQ1MGYwMWQzZDM4YzllZTA3ODYyNmIxYjY4ZjY2OCBsZWdhY3ktdHJ1bmsKKzQ3MDE0IGFkNWFkZDllMDM2OTZkM2FiZGFmMTZjMDMzMWJkZjY0NTExNTdjNzcgbGVnYWN5LXRydW5rCis0NzAxNSBmNGI0NDEyNTY0Njc4OWY1NDU5MTA5MTVkNWQ1YWYwMDg4NWVjY2YxIGxlZ2FjeS10cnVuaworNDcwMTYgOTNjYzNmYzI1MDk5OTk5ZWFhNWU4ZjI2NTIyOWJkMjYwMzg5OTNlYyBsZWdhY3ktdHJ1bmsKKzQ3MDE3IGEzYzYxYzY0OGZjODE5NGRjNzk1YmM2YzE3OWI4ZDhjYjIwMWIzOWMgbGVnYWN5LXRydW5rCis0NzAxOCA4MDVmNDE4ODFlMjcwZTM4MTJmOTFkNDcxOWViOTYwMGNkMGIzNGMxIGxlZ2FjeS10cnVuaworNDcwMTkgMjg0M2JmNzBhOWNmZDRmOTllMjYzOTNmZjNjYWFjYTY2Nzc2YmViZSBsZWdhY3ktdHJ1bmsKKzQ3MDIwIDY3MjljMjdkMDFmZThkYjlmMTQ1MmNjOGQ0ZjE3MGJmNGI3ZmI5OGIgbGVnYWN5LXRydW5rCis0NzAyMSAxMThjNjUwZTJjOWIzYjQ0ZWRkMmM4YzZlODUxMDYzMzUyODhjMGEyIGxlZ2FjeS10cnVuaworNDcwMjIgNGE3NjYwMjQwNDNhZWVlNTkyYTZjMDkzN2RlMmRiNGIxNWEwYTY3MiBsZWdhY3ktdHJ1bmsKKzQ3MDIzIDBiOTVhMGFhYWFlZjk4NmFiNGVjZTMxN2MxNjdhMTIyZjhhMmM2MTUgbGVnYWN5LXRydW5rCis0NzAyNCAwYmY5ZTMwOTljNTdiYzczMGZkYjY1YjE2ZjViOTVhNTdlNTZkNWI4IGxlZ2FjeS10cnVuaworNDcwMjUgYzYzZDJiNjI2M2I1OGI3MjA3MTM3YjY2NDAzNWI3YmZlNDliOTNiNCBsZWdhY3ktdHJ1bmsKKzQ3MDI2IDQ4MzBkNjE0N2FhZjA5OTUyNGQ3YzRhYmQwYmRhNjU5ZjQxMTJmNmUgbGVnYWN5LXRydW5rCis0NzAyNyBhNzQ2MjA1ZjU5NzU5YzczMjhkODk4ZTc4YjhjZGJlOTgzNDFiYzMwIGxlZ2FjeS10cnVuaworNDcwMjkgZjA4ODVmZTE0ZDQyYWVlYTFlNzliNzQ4MDYxNzczYTVlMjlhNTcwNyBsZWdhY3ktdHJ1bmsKKzQ3MDMwIDQwOGQyYTU5NmY5OTIzNDU2YTcyYzY5ODgwMzYwZDg1OWM3ODQ4OGEgbGVnYWN5LXRydW5rCis0NzAzMiA1Yjk4N2QyMTIzMWJmYjY1NDY2MjM2MDBjMzY1NDIxYTZkNGZlZjA1IGxlZ2FjeS10cnVuaworNDcwMzMgZjE5ZTg3NzI4MWU0OTAzNzExZjE1NzdmZmU2MzYwODZjN2M3OWQ3NiBsZWdhY3ktdHJ1bmsKKzQ3MDM0IGQ0OWIxOThmNTQ1Y2Q4MmZiZjczNWEyMjk3OWMzMzJiOGE5N2VlY2IgbGVnYWN5LXRydW5rCis0NzAzOCA1MjM3NWYyMDMyNDQ4ZmU0N2IwNmU1OWE2MmMyOTA1N2JlOGFhMGE4IGxlZ2FjeS10cnVuaworNDcwMzkgZjg3MTZiNzZhNzFlZjdhMDdhMDdmZDI4NDU4NWZiMWQxODhjNzQ3NSBsZWdhY3ktdHJ1bmsKKzQ3MDQwIDNhZjMzMmZmZjUyNzlhN2FlNTY0YzlmYzRhYzkzMzhiZTZiNmVjY2IgbGVnYWN5LXRydW5rCis0NzA0MSBmZGNjYzZiMTRmYWQ2ZWRhNTU5YmFhMjUzOTZjNGFjYWY4NzRhYjgxIGxlZ2FjeS10cnVuaworNDcwNDIgMjZlNGJmMTk1YWUyOTJmZDk4OTQzMWYwZjMyYWM2ZDE1OWM0MTRkMiBsZWdhY3ktdHJ1bmsKKzQ3MDQzIGEzYmExYTM3YjUzNzQ4YmZhODQ0NDRhMGRhOWNkMjUxZjZlZTRhMDYgbGVnYWN5LXRydW5rCis0NzA0NCA4NjgxMjZlM2JjZjZkMDJhNTRmYjg4NTE0NzIxZWE4Y2FlNzEyM2EwIGxlZ2FjeS10cnVuaworNDcwNDcgNGZmZmU2NzdmNTUyOTZjYjc5YWJiYzRlYzJiYTM4NjdlODdkZTY4NiBsZWdhY3ktdHJ1bmsKKzQ3MDQ5IDcwMjNjZWRjYzVlZDA0YTQ1Yjk5Y2Y3ZjhlNWEzZWIxN2IzMjgyM2IgbGVnYWN5LXRydW5rCis0NzA1MyAwNTFjYzM5YTgwMDg0MzI3ZGMwYWRjYmZlYTY5OTFlMmVlNDU3YWJiIGxlZ2FjeS10cnVuaworNDcwNTQgNTNiMDRjMTlmZTQxNmNjYTkwZDg2NjIyNTcwODBmMDkwMzc4YjhmNyBsZWdhY3ktdHJ1bmsKKzQ3MDU1IDliMGY5NDMwY2JjYmRiYjQ5NjVhYzYwMjcyM2JjNDFlZjJjMDQyODIgbGVnYWN5LXRydW5rCis0NzA1NiAxNDkxZTUyYzg1OTcwZDI1MzhjODQxN2YyOWVjNWUwY2FmYjU2MDEwIGxlZ2FjeS10cnVuaworNDcwNTcgZTNhYzczOWQ0ODg5NTU1Y2ZkNDVlOGM5NmZiNjhkNTkyMzRmMjk0YiBsZWdhY3ktdHJ1bmsKKzQ3MDU4IGE0ZGQ2YjIwOWI2NWEyYTZlODZhZmYyYWExOWJmMGIwMDQxNTNlNzggbGVnYWN5LXRydW5rCis0NzA1OSA2OWVmMjNmY2Y1ZjgzZjJhMWU0MDEzOGI4ZmI3NmU0NGZjYzMxZGQyIGxlZ2FjeS10cnVuaworNDcwNjAgMTUyZWMyMmM0ZTY5NWRhMTE2ZjhiOGUxYWI1NTY5NGQxOTQ5NDNlYiBsZWdhY3ktdHJ1bmsKKzQ3MDYxIDUwNmM3Njg0N2VjNzE2MjVkNmUzNDljZWMyNTk4MTdmMzlkMjA2MTggbGVnYWN5LXRydW5rCis0NzA2MiAzY2RkZTQ1YTQ2OGQ1OWIzYjdjOTRmMmM0YjM2OTkzN2UwY2FjZDQ2IHJlbGVhc2UyNC1tYWludAorNDcwNjQgY2I3MjI1ZTg0ODA1NmNjMDdmMzUxNWRhMDIyMDk3M2U1MjkwOGIyNCBsZWdhY3ktdHJ1bmsKKzQ3MDY1IGFjYTM2ZjdmM2FlODdjYTBhMzc4MzhjZTA0YjRlMTkwYWU1NzAwOTEgbGVnYWN5LXRydW5rCis0NzA2NyAwNDFhZDAwNjg1NzAxMTZmY2ViNDFkM2IwNDEyMTYwMGQ1NzM0NjVkIGxlZ2FjeS10cnVuaworNDcwNjkgZWJlZTU1MzkzMDhhZWU3NzkyNGFkNjU1OGQ5YjEwM2QwYTE2ZTk5MCBsZWdhY3ktdHJ1bmsKKzQ3MDcwIGFlZDgwOTQ0MzIwNTNkMTc0ZjFkYTkxYTVjOTliOTMwN2I1YTM1MTEgbGVnYWN5LXRydW5rCis0NzA3MSAyMTE0ZWI3M2FlYjUxNzI3YWJhNDFiZWY5OWRmYmFmOTUwZWFjMTdlIGxlZ2FjeS10cnVuaworNDcwNzIgNTgwMzQwODRlZjQ0YWU0NWYyYjgxN2VmNDllNTNhYTRlYTdhNDQ0NiBsZWdhY3ktdHJ1bmsKKzQ3MDczIDY1MzUzYzRkYjhjMjFiOTNjOTVhYWM1NWIzZjA5N2Q3NTg2NmFjOGIgbGVnYWN5LXRydW5rCis0NzA3NCBhZmM0NzVkMDU2Nzg2OTU0MGY2MWNhN2Q2YTM4NTAxZDY0ZDgzMmQ3IGxlZ2FjeS10cnVuaworNDcwNzUgYWZjYjU4MmQ5MmQ4MzA0ODQ3MzVkYzk0OTdkMDZiN2MwNTNhNzI5MCBsZWdhY3ktdHJ1bmsKKzQ3MDc2IDc4ODE2YzVjZmYwNTA4YzRhMjhiNTg1YTY3ZmRkZmNkY2MwMGEzOTcgbGVnYWN5LXRydW5rCis0NzA3NyBiY2VhYTc3MjBjYzcxMWNkNTNlZWRlYjgzYTVhNTRmOWViYWZjMjM0IGxlZ2FjeS10cnVuaworNDcwNzggZDg0MjI0MzIwZjgyOGEwYjZkMjgzOTFkNDA1YzM0N2Y3OWYwMDk1YSByZWxlYXNlMjQtbWFpbnQKKzQ3MDc5IDliNDZhNGY1MmQwYzAzMTVmZjg2MjY4NDc0N2FkZGM0YmM3ODA3MDggbGVnYWN5LXRydW5rCis0NzA4MCAzMjNkYTQ3NmYxN2VlMTdmMjg1MzlmZTA3MjMxZjM4OGJiOTMwMzg2IGxlZ2FjeS10cnVuaworNDcwODEgYmFiMGIxZTZjNmQ0MWNiZmUyZTQ2YTM4YWQwODY3OWI4NDZhNDZkNCByZWxlYXNlMjQtbWFpbnQKKzQ3MDg1IDY0ZDFmNjZhMjM5YTYwOWM0NTI5ZmFmOGZmMjljOTU4MDU1MWYzODEgbGVnYWN5LXRydW5rCis0NzA4NiA2ZjA0MmY1YmY5NGRlNzg0NjkyYjMzOWFkZTk4OWJhZDU2MDUwOTRjIGxlZ2FjeS10cnVuaworNDcwOTEgYzc1MzI4NTZmZDE3NTkyNTI1ZWFmOWQ4OGEwZTRiZjExZjA2ODA3NiBsZWdhY3ktdHJ1bmsKKzQ3MDkyIDEzNDJkZmQ1MjczMzkwMDhlZWVkNDA4M2U4MGFiZjZiMzlhZTE0OTUgbGVnYWN5LXRydW5rCis0NzA5MyAwOWQxNjA2ZTc1MjQ5Y2MwMTIwZGYxMjU4NTk4NWEwM2Y0YTY1ZDhiIGxlZ2FjeS10cnVuaworNDcwOTQgYWQ1OTQ5MTUyNzExNmQzYTAyMjdhNmZmNTdkNzE3YmQxYjViMGU3ZiBsZWdhY3ktdHJ1bmsKKzQ3MDk3IGI5YTY0YjdhMzI2MTJkYjYyOWU5OGViOGRhYjhhYTE1NTJiY2E1NDYgbGVnYWN5LXRydW5rCis0NzA5OCBiODJjNDBkYzA4ZDgyY2QwMTQwNjY1YTNiZWIyNTJjM2Q2NzM1YzY1IGxlZ2FjeS10cnVuaworNDcwOTkgODE2OGQwNWY5YjQ5ZTYwYzQ5ZTYzNDRjYjNjMjkwZWEwNWFlYjFkNiBsZWdhY3ktdHJ1bmsKKzQ3MTAwIGYyY2MxNTZlYjkyOGUzZmRmZmYzOTk3NDBjZjU2Y2Q4M2FhZmU5ZDkgbGVnYWN5LXRydW5rCis0NzEwMSA1OGY0MTlkOGM2NDYxZmI5MTdiMDZjY2M5YzIyNzI5N2I0ZTY4NzY4IGxlZ2FjeS10cnVuaworNDcxMDMgMzVjZjBmODc5ODNlZGVjYTgwNTk2ZDgxMWRiNWYzYjFmMzQzMjY3MCBsZWdhY3ktdHJ1bmsKKzQ3MTA2IGYyNjYxM2JkNDg0ZDdkZTdkNTE2NDY4ZGYzZmYzYjI2OWVlNTdjNzEgbGVnYWN5LXRydW5rCis0NzExMyBiOGIyMjU1MGFjYWMwMTQ1NzIwYzUzNTU2ZWIyNjdjNGNjNzc5OTdkIGxlZ2FjeS10cnVuaworNDcxMTQgNzQxMzEzMDI5ZDYzZDk2OTQ0NzNiMjRlMGZhNWQwMWU0ZWZhNzhmMiBsZWdhY3ktdHJ1bmsKKzQ3MTE1IDIyNTQ3OWFjZTlhNzBkMjc5YWQ3NGYyMzJlNTdkZTE3YWVlZDk4OTIgbGVnYWN5LXRydW5rCis0NzExNiBjZWVhOGE5ODY1ODQ0NzdhMzBjOTQ1OTdjNzZkZWJhNjgxZDQzZTBkIGxlZ2FjeS10cnVuaworNDcxMTcgY2I4Mzk5OTZhMzg2ZWRhMDE3N2JjMGJhOGViYjY5ODYyMThmOGMzZiBsZWdhY3ktdHJ1bmsKKzQ3MTE4IDcyMWNlYzdmMDE4NTc0NzdmNTZmMzYyMDNlMGVhZWY4OTk0NmViNWUgbGVnYWN5LXRydW5rCis0NzExOSA0ZGVhNWY0NmVlOTg1NTQyNDk4MGM1YTk3MmQ0M2JhYzhhNTJlMmJlIHJlbGVhc2UyNC1tYWludAorNDcxMjEgZGU0MTAyNTJiOWZkYTNiOGQ1ODMzOGJiNTExZWUzZDc2NTQzMTg1OCBsZWdhY3ktdHJ1bmsKKzQ3MTIyIDUyMjUwZWVhZjc5MWQ2NjQzZGYwYjEzNzMyNTAyYzA0YWU4YjQ1MmQgcmVsZWFzZTI0LW1haW50Cis0NzEyMyAwNjAyNzcxYjhiNDliN2MzMzQwZGQ0ZDBiYTQzNmQ3YmRjMjlkZDA4IGxlZ2FjeS10cnVuaworNDcxMjUgMDk1NTQ2ZGRiMmYxNmM2NDczNDdjY2ZjMGY2YjM2OGEzYTNlNzYzZiBsZWdhY3ktdHJ1bmsKKzQ3MTI4IDdjODk5MGNjY2Y5YjJhZDliY2ZkMjA4MjhlNmYwMWIzMzYxNzQ4YzYgbGVnYWN5LXRydW5rCis0NzEzMSBhYzNkNGI3MWJjZTJiMjZjOWZhNzliZGQzNWEzZmM0MzFjN2QwZjkyIGxlZ2FjeS10cnVuaworNDcxMzMgM2NmMjE4ZThiNDQ5MjU3M2IyMjhiM2VhMzE5MjI5NmEzMTA4YmIyNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM0IDAzODhjN2RjZTRkNDI2NjZkMWVmNTMyY2ZhZGNmYjAyOTA1NzNlZTYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNSA0YjRlZDIzMDJkMWNmNTZlZjE2MTkzMDU0MTViYjBkZTJkNzg3MTI0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzYgODUxZjM3OGFiOWNkYzViNzU2NGM0N2QyZmQ3NDMwNzU2NjlhNjE5ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM3IGQ3NDkwOGU3NGQzMDcyMGY1YzEwYzMzMzJiNDNiMDdiYmQwNjVkNmIgbGVnYWN5LXRydW5rCis0NzEzOSA1NmJmNTZmNWM4MjE0NzZkNWQ2N2NiNDI3NzkwY2YxYTY5MDk1ZWUyIGxlZ2FjeS10cnVuaworNDcxNDAgYTQyNjNjNDI0OGNiNjdlN2FkM2JkYzYzYmY0YzcxN2VhYWNkYzc5ZSByZWxlYXNlMjQtbWFpbnQKKzQ3MTQyIDViODA3OTY2MGVjNDVlNGM4YjI2MGZjZWZhNjZmZDhiNTEzMTAzY2QgbGVnYWN5LXRydW5rCis0NzE0MyA1ODI3MGE2OTBmNDNjNWQxOTAwOWRlMjA2MDczN2VmNjk0M2JlOGE5IGxlZ2FjeS10cnVuaworNDcxNDcgZjk5ZmJmYmE4OTgzNDYwMWQ0NDcwNGMxYjk0YzY2MDk5ODFiYjY4OCBsZWdhY3ktdHJ1bmsKKzQ3MTQ4IDJlZTViZGE5MjBhMjQ1YWUwODAyYWI2ZTE4NDFjNmY4ODIzNmNmNDEgbGVnYWN5LXRydW5rCis0NzE1MSAxZWFiNWFlM2IxZmZiYWVlNzJlNTlmZmRiN2U1Y2Y4ZWU0NDkxYTlmIGxlZ2FjeS10cnVuaworNDcxNTMgYjNlZjc0MWUyNjE3MWFmZjExZmNlMTFhZmI5YzBlODRiMzQ1NDEzOCBsZWdhY3ktdHJ1bmsKKzQ3MTU0IDNjOWQzYTMxM2Q4MWRlNTM5MTY4NDdiMzQyNWNjMmYwYmExYjNlMTAgbGVnYWN5LXRydW5rCis0NzE1NSAxN2Y4MmJkNjg4Nzg1MzJmYjI5OTM0MTgxYjZmNTRjZGNlZmJmNzdjIHJlbGVhc2UyNC1tYWludAorNDcxNTYgMjllNDNjNWUxMThmN2IwOTAxNDIzZmY2NGUyOTcyYmRhNTNhMzMzNiBsZWdhY3ktdHJ1bmsKKzQ3MTU3IDFiMmRmMmVjYmM2MzZhMmM4YjcyMjMzZTgyNWFjNjBlYjc5ZDczODkgcmVsZWFzZTI0LW1haW50Cis0NzE1OCAwYTgzZGMzNTI5ZDE1YWY0NDkzNGY1YjM0ODFjMGNiOGEwMzNmYzhjIGxlZ2FjeS10cnVuaworNDcxNTkgZjQ5Y2MyOTA2Y2QwMGY2MDQ3ODZkMmQ3MGVlMmJhYWE4MzM4NTA0OCBsZWdhY3ktdHJ1bmsKKzQ3MTYxIGM2ZDA0YzljM2M0YWU3NzRjNWEyOTAwMTY0NjkzMTFjZWNkNjkyYTQgbGVnYWN5LXRydW5rCis0NzE2MiA5OWIxNWMyNWI4NDAxNjkzOGFhNjk1ZTI5ZmY1ZDVlNjMxZjkyZGIxIGxlZ2FjeS10cnVuaworNDcxNjMgMTVmZTlkYmM1ZDM5ZWYxMjhmOWQ4OTM1ZTBhYThkNDAwMmM4MjIwNyBsZWdhY3ktdHJ1bmsKKzQ3MTY0IGRhMjJiOTA1ZGZiZWJkOWU5YWNkODg4YzM1NDE2YjhmZmM4Mjk0N2IgbGVnYWN5LXRydW5rCis0NzE2NiBhMjFlNDIwYTU5N2NjOTUwNTE3MTg4NGZhMjQzYWNmNDdmNGI3Y2RkIGxlZ2FjeS10cnVuaworNDcxNzAgZDg1NzA4NzY5YWIxZDk0YmNkMmI0MDQ2OGY4MWE2NjZlOWViOWM2OSBsZWdhY3ktdHJ1bmsKKzQ3MTcxIDEzOTI1NjFkNWRkN2FlM2RlMmI0YmQ1NTIyZDQwNzg4NmIyMmY2ZmIgbGVnYWN5LXRydW5rCis0NzE3NSAyNzJmMTk1YTI4NGU3ZTAxNGNhOTQyZmZiMTg1ODk2MmFmZmI3MTNjIGxlZ2FjeS10cnVuaworNDcxNzYgNDg1MDU2ZTUzY2RiOTljZjE1Njg4NzNiMzgzZTZjZGY2NjkzZjU4ZiBsZWdhY3ktdHJ1bmsKKzQ3MTc3IDZiMGM2M2E5NzUxNDdhOTRmNjliM2EwMzg4MzhjOTRlNzU1MDRiNzYgbGVnYWN5LXRydW5rCis0NzE4MSA1ZDJjOTgyYWJiYjM5ZTc4NDI2MWZjNjEwMGUxYzIyYzJhMTUwYjIxIGxlZ2FjeS10cnVuaworNDcxODggZDRkYmZiZjNmMmI5MGM1YzIzOTkwZmFiN2FmYWZlYzVlM2JkNjkxZCBsZWdhY3ktdHJ1bmsKKzQ3MTg5IGI2NjRhOTA4YmZmMzUwZWQxYjU2YjU2MGY0ZjA3MmQyYTE1Yjc0NjAgbGVnYWN5LXRydW5rCis0NzE5MCBjNTQ3ZjZlOTFjNTg0Yjk0MjYyMDVmYjg2YTMwMWZmZTc3ZDY0M2VlIGxlZ2FjeS10cnVuaworNDcxOTEgZTA3NmUzZDc2Zjc3MTBhMDAwMWUxZTM4Y2Y1NjJkYzQyNTdhNjg4YyBsZWdhY3ktdHJ1bmsKKzQ3MTk3IDVkZDczNjI2OGZmNDQwMjNkYjY2NWM2YmE3MWM0NGNkNmQxOGIyMDkgbGVnYWN5LXRydW5rCis0NzE5OCA2OTc1YmQ0ODg0ZWJjMmM4MDA0YmQ5NjhiYWQ3YmY0MzAwMDc5NTdhIGxlZ2FjeS10cnVuaworNDcyMDMgMGYzYmEzZGVmMWFkODBhZWQxZmM0YjUxZmY0N2Q1ODNhNjM2ZWFlMiBsZWdhY3ktdHJ1bmsKKzQ3MjA0IGMwMTIzMDA3Njg1OWMxZmU2NmNlYWZmMzE3MDA4NGZlOTg4OWU5OTggbGVnYWN5LXRydW5rCis0NzIwNSA4ODk0ZWVmYmIwYTQ5ZmM1ZWFmNTQ5ZTU1N2Q5YzFhYjVlMjNmM2RmIGxlZ2FjeS10cnVuaworNDcyMDYgNjM4MjQxZmY4N2JkZGJiYmUwZTIyMDY1Mjc3MDlhZTZiOTU3Mjc5MCBsZWdhY3ktdHJ1bmsKKzQ3MjA3IDI3OTczOTYyZmM5ZmI2MmNmOGY2Y2FhZjA2OWIyMzg3NTZhNTBkZGUgbGVnYWN5LXRydW5rCis0NzIwOCBiMTYxNGY2NzRiMzI3MDQzNWI5OGZkODBjM2VmMzNlYzExZTYxNDkzIGxlZ2FjeS10cnVuaworNDcyMDkgZTYxYTkzOGZlOTk4ZDVmNzk5NzRiMzc2MzEyZjBiYWFjMDJhYjgzZCBsZWdhY3ktdHJ1bmsKKzQ3MjEwIDI1MzdkZWRhMzUxZmE4OTEyY2VmY2ZkYjkyYmYyMjBhODRiMTE2NGEgbGVnYWN5LXRydW5rCis0NzIxMSBiOTQ3MGQ2N2Q5NmMyZTI3MDJlODA5ZDQxZjg4ZDc0YTg3MDZhZjEwIGxlZ2FjeS10cnVuaworNDcyMTIgMGU4YTk0YmEyMTA2NmRhNjVkZjlkNjYwOGU3ZTQ4YmJhNjM5MzcxYSBsZWdhY3ktdHJ1bmsKKzQ3MjEzIGU5ZDM5YzVmY2MyNzQ2MTRiYzJiNmUzZWI5MzRlOTRlYTczMWQwMmQgbGVnYWN5LXRydW5rCis0NzIxNCBmMTE2NTgyZjY2MjI0MjVlOThjY2E5OWViY2I3MDkyNTdjM2UyZGFjIHJlbGVhc2UyNC1tYWludAorNDcyMTUgMDkzMTU2ODk5Zjc1YWIyY2IwNmQwOTBkZDc5ODk0Yjc2NDFmM2UwNSBsZWdhY3ktdHJ1bmsKKzQ3MjE2IDE2YmYzNjY0ODMyMzNiMDhkZmJjZTNiOWY5OTI2NTI1NTU5N2RmODYgcmVsZWFzZTI0LW1haW50Cis0NzIxNyA4Njc1YTYwODQyNDBmODU1NzFkNDBlOTAzMDVjNDM1NGEwNDMxMzQ0IHJlbGVhc2UyNC1tYWludAorNDcyMTggYzViZWJjYmU0NTM5MWEzY2JiMmY4YjkxMWEzZWU2NDgwNjIxOTUyOSBsZWdhY3ktdHJ1bmsKKzQ3MjE5IDgxMzA0YzAxNDYzYTJlOWJkOGEzZTdlZjg2YTE1MzQ4MmE0NmQwMzQgbGVnYWN5LXRydW5rCis0NzIyMCA2M2EzMTlmMDczM2NhMDY2NmI2ZjIxYTMzYjQwMGQ0ZmRjZDkwNDc2IGxlZ2FjeS10cnVuaworNDcyMjIgMDFkNGIwNjg1MDY3NjA2ODEwOWUyY2Q5YWU5MTk2ZTUzNzYxZTEzMCByZWxlYXNlMjQtbWFpbnQKKzQ3MjIzIDc1YmRiMWViMDc2NjU5NWRhMzE2OTIzYmYxY2I1YjY4ZGQ4ZTM5ZDggbGVnYWN5LXRydW5rCis0NzIyNCA5YzkyMmUzMWI2YTVjODkxMDRjNDZiMjBmMDcwZDY5M2YzMmYzYmNiIGxlZ2FjeS10cnVuaworNDcyMzQgYzgyMzc1ZDU2MGIzZmU4YTI4YTI3N2Y5MTllNjAxNjI5NGRhNGRjZSBsZWdhY3ktdHJ1bmsKKzQ3MjM2IDQxZmMyMDNhM2U5MWYxNjE1YzE0YTZmYjM4MDgzZDAxOGY0NzQ4YWQgbGVnYWN5LXRydW5rCis0NzIzNyAxODk4OWQwOWQ1ODRlNmMzZTg0ZDQwNWM2NjQxMWFhZThkZmJlZjEzIGxlZ2FjeS10cnVuaworNDcyNDEgNmQ5ZTIyYzMzMGU0Yjc2NDAzMDA0NjlmZjM5YzU5ZjYzYWQ0NTBlNSBsZWdhY3ktdHJ1bmsKKzQ3MjQyIDBjNGU1YTBjMTkxNGY3YjIyZGZiMGIwZTNjZmRmODU2ODU3M2EzMzYgcmVsZWFzZTI0LW1haW50Cis0NzI0NCBkOWU3ODMxOWExOTI5MzgxMjY3MTRlNmQ3YjM3ZDAzMmNiNDRkMDRmIGxlZ2FjeS10cnVuaworNDcyNDUgNzU1MDQ0NzEzZTk3Y2EyNDNiYTZkYWJlZDZlN2E4ZjlkZjVlMTcyMyByZWxlYXNlMjQtbWFpbnQKKzQ3MjQ4IGI5MTU1YmIyNmIyODFlOGUzMzExZDM2YzdhZGY0MGU0YWNiYTFmYTEgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI0OSBiMGJkMGJjZTk0MDZlZGE0YjEwMzI3NDk4ZDk1NGZiYjZiMTNkMzJmIGJjYW5ub24tc2FuZGJveGluZworNDcyNTEgOWU4MjE0MzVhNjEyZDFlOTcyYjM1OTZlMjQ4ZGViZWE5MzY5OWI1YSBsZWdhY3ktdHJ1bmsKKzQ3MjUzIDUwMGFlOTUyMTUwYjc2NjhlMzAwNzY1NDllZWQwNDA0OWMwYzMzOGUgbGVnYWN5LXRydW5rCis0NzI1NCA4N2U1YjAxMGIzYjA5ZDViNWI5YzU0Zjc0ZTM5MDg4ZGIzZjA0MWNlIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcyNTUgNzFlYWRjMzVmMTYzNzI2MTE2NjlhOGY2NGY5OTYzZDU0MjBhZGQ0YSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MjU3IDQxNTYxYjAwMTRjOGI2ODE1NjQ4ZTUwNDIwODFmYTY4ZDZhZWU4M2IgbGVnYWN5LXRydW5rCis0NzI1OCA0MGYwNTg2NzMxNzBiOGE2YThhZGYwM2I2YWU1YzA3Y2YxYWE3MGFiIGxlZ2FjeS10cnVuaworNDcyNTkgYjg1MWFmY2MxNjQ5NjU2NzAzYTcyZDBlZmQ1YzJmOWZhNjY5YmZjYSBsZWdhY3ktdHJ1bmsKKzQ3MjYwIGUzY2ZmNjFiNzc3OTYxYWY0NmY0MmUzYzE3ZWZmODQ4Y2NlMDg0ZTEgbGVnYWN5LXRydW5rCis0NzI2MSA0ZGQxYTkzODNlNDc3ZmM2NzJjOTU0NDMzMDEyNWFjNzQ4MDU3ZGUxIGxlZ2FjeS10cnVuaworNDcyNjIgZDhjZTliYzQwNWU0MWI2OTU0NmExNDRkNzE3Y2Q1YWEwOTBlZTVkMCBsZWdhY3ktdHJ1bmsKKzQ3MjYzIDY4YzllOGE1NTM2ODNiMmMyMzQ4Y2NmMjc5OTg0OGY4ZmRiMzBkNjYgbGVnYWN5LXRydW5rCis0NzI2NCAyMDczZjMyY2Y3MWZjN2VhNDQ4NTZlYjUyNzhkNzA5Y2VlMDRhOTNiIGxlZ2FjeS10cnVuaworNDcyNjUgNjk3ZDA1NDgwMDUzZDZmZGVmZTY0NWUwODlmY2MxNDZkYjFjYTgxMCBsZWdhY3ktdHJ1bmsKKzQ3MjY3IGY0ZTMzYjEyYmI1N2IxMDBiMzRjMmY5MjY5MDUyZjQzMjA5NTEwNGEgbGVnYWN5LXRydW5rCis0NzI2OCAzNGE2NmUyZjg5NTk4MDI1YWQxYzczYTQ5YTRhYjgzZDFiYTVkNTczIGxlZ2FjeS10cnVuaworNDcyNjkgZjY4ZTUxYTY3M2RmNzNmMmIxZjQ3NDllNzQ2Y2YzOWJjMDk5ZjI2MiBsZWdhY3ktdHJ1bmsKKzQ3MjcxIDM0Y2I5YTZjZTEyZDg3ZjZhZTAzMTY2NjEwNzVjODhiMDkyNjYxMTAgbGVnYWN5LXRydW5rCis0NzI3MiAzNzRjMjI5ZDkwZThmMzY2ZTU5NTU5ODRjNDU2MTU5MTFlOTY3NjVmIGxlZ2FjeS10cnVuaworNDcyNzMgNWE0YWIzODIwNThhNWYxMGYzNGZmMjUyMGE2MDU0M2EwNDc1MTQ2MCBsZWdhY3ktdHJ1bmsKKzQ3Mjc0IGVlYmM5NWY5NThlNDhmMzc3ZGZkOTk1Y2U2M2NiYWE0YTA2NzU1NWUgbGVnYWN5LXRydW5rCis0NzI3NSAyMzhlMGIyMDM3ZmMyNDhhYTdlNjNkZTZlZGFlNDE1ZGM0NjYzMmEyIGxlZ2FjeS10cnVuaworNDcyNzYgMzQ0MjUxY2Q4ZDc2NDQwOWNjMDNjNTk2N2ZiMTVmNzhjMjdkNTQyNiBsZWdhY3ktdHJ1bmsKKzQ3Mjc3IDNmYTc5MGIwYWE2ODE1YzFlMWRhZThmMjMwYWM4NWRhYmU4MTk5ZDggbGVnYWN5LXRydW5rCis0NzI3OCBmOTNkYmZjYzY2M2IzMzA3M2M4MmJlZGJmYzNlNTg1YzFkNDBlN2UxIGxlZ2FjeS10cnVuaworNDcyNzkgNThjODhhN2M5MzI2M2M0OGJiZWIxZWVkM2EyMjAzYzIwNTAwYmM2YiBsZWdhY3ktdHJ1bmsKKzQ3MjgwIDhmZWZhOTllODdjMGQzODU2NDQ4ZmM3NjczZDI3ZGU4ZjhkMTA2ZmQgbGVnYWN5LXRydW5rCis0NzI4NCBlZDQzMjQzYzg4NjA1ZWZjOGUwOWFkNDRhZmMxYTI3ZjY1NjY0YmY0IGJjYW5ub24tc2FuZGJveGluZworNDcyODUgNDUyNDdiOTNhNWQ5YTEwMTkyMDdhMWRlMjIyOTBlZDY1ZTA2MGMxNiBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3Mjg3IGIzYzBlMDc1OWFjMDk4MDQ0NjA5MmU0NWU3Nzg0ZDNmM2IzYWRjYWQgbGVnYWN5LXRydW5rCis0NzI4OSBkYTU5ODM2MTRmYWMyMjgxOWNhZWMwOTViZmUyMzhmMDFmNjM3ZTU4IGxlZ2FjeS10cnVuaworNTA0NzcgMTA4ZGMyZjFlN2RhMzJjZjFhMWM3ZTdlYmY1ZGRmYzRlYTVlMWM2NSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDc4IGJiMzA1MDI2MzI0NDIyYWU3YWM0NWRiM2ZkMDllNDIyYmU5ZTE5NTUgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ3OSBiOGE4ZWZjMDBiMWUyNWUyZjRhZDlkN2NkYzQ2NWExM2VlNjgxYTA0IGJjYW5ub24tc2FuZGJveGluZworNTA0ODAgOTAzZjk4Njc2NTRhMTdhMzk0NzRjZWFlMzI5MzE2Njc1ZDQxNDQzOCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDg2IDM1YWZlN2M0Njc3MjA2Y2QzNWJhMzdhMjA4NzU3NDgzZTE0ZTIzODggYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4NyBiNDI4MTJjNzc0ZDBjOTQ5YjBiYTc3Y2Y1YzNmNjE4MDcwMTM4MmVhIGJjYW5ub24tc2FuZGJveGluZworNTA0ODkgMDY2YWE0MmNlNWYyNDA5NzhjMTY1NmY1ZWNiNjA2Njk1ZWI4MmEwNSBsZWdhY3ktdHJ1bmsKKzUwNDkwIGFiYjJjNzZhNWUwNTBjZjhkMDZjMjYwNzNjZjIyNjViMmYwNDJiYzIgbGVnYWN5LXRydW5rCis1MDQ5MSAxYzViZGJjNzU4MGNhMThjZTY5OTJiMThiNzJiNDYyNjAyYjc3NTM5IGxlZ2FjeS10cnVuaworNTA0OTMgOWY3MGY2YmE3YjY5Y2JlNmJhZGQxMWZkMjkwNzMyNDkzNzU2YWFmMiBsZWdhY3ktdHJ1bmsKKzUwNDk0IGJiYzc4ZjAyMTAwN2MwZjA0MjE4ZDljYTI2YzBiYTc5YmYwNjgwYjUgdGltLWN1cnJlbnRfZnJhbWVzCis1MDQ5NSA2NGNjZDc0NWVhOTIwYmUxYjk5Mzg5MWU0OTYzN2QxZjM1MWM0NDk0IGxlZ2FjeS10cnVuaworNTA0OTcgOTVmOWUwMTg0NTU1NmY5NjEyODE2MWRhNGVhZWY2MWIzYmY1NmEyYiBsZWdhY3ktdHJ1bmsKKzUwNDk4IDNmNTU2MWM1ZDk1OTU1YjEzOWNjNjRlZTI3MmZlM2YwOWUzOTUzMzUgdGltLWN1cnJlbnRfZnJhbWVzCis1MDUwMCBjYTNkOWE2NzEyNmJmOGQ5MTRhNzY2MWI3ZGEyMDAxMTE2ZDBkOTIwIGxlZ2FjeS10cnVuaworNTA1MDEgOGNjOTc4NDEzMGEwZTgzZDA2Mjc3ZTU5N2FmMGE2NDg2MGU3OTZlZiBsZWdhY3ktdHJ1bmsKKzUwNTAzIGMwMmZhMTg3ZTBmNDljYjJkY2E3YTljNDQ4ZGI1MzYxOGE2NmU2OTEgbGVnYWN5LXRydW5rCis1MDUwNCBjNjdiMjMzOTdmMzA2NDlhZmU3NTRlNTczMDdjOGRhZjc4NzZjNTYyIGxlZ2FjeS10cnVuaworNTA1MDYgMGZlMDhhZWRiZDhjNGZjYmRmYjYwYTNjMjM1MjQ2ODBjMTI0NTljMSBsZWdhY3ktdHJ1bmsKKzUwNTA5IGM1NDc2NDVhYjczNjRjMjk0NzU2NmFkYWViOTdiMjMwM2RiNjFmNzcgbGVnYWN5LXRydW5rCis1MDUxMCA1MTQyOGMzNzhjYzNlMjZmMWZiMmRjNzNmY2FjODRjMzI1YTRjYzZjIGxlZ2FjeS10cnVuaworNTA1MTEgN2U0M2QwMmVlMjFhNjFlZGY2Y2UzNzRlNDVjYjk0ZmY3MTQ0NDhkMiBsZWdhY3ktdHJ1bmsKKzUwNTEyIGMxZjRiZjhmZjc0OGMwMWY2YzIzODU3MzA1OGU5MjQzOTc2NDczYTggbGVnYWN5LXRydW5rCis1MDUxMyAzNWM0ZmRhNDdkZmJkOGY3MzA4NWYxMjFiMzk0MDBiNTkxNDFlZmJlIGxlZ2FjeS10cnVuaworNTA1MTQgMDI1OThjNTdjYTA5Y2MwZThlYTkyNDBhMjM1YjNkZjA4NWY4Nzk5YSBsZWdhY3ktdHJ1bmsKKzUwNTE2IGYzNzM2NDY3OTUwMTgyNTU4OTlmYmFkYjc3ZTgwNjY1YjA5YzcwMWYgbGVnYWN5LXRydW5rCis1MDUxNyBhZTU2NDVjNzZkNWVhMzNlY2I4YWU1ODEzYTYxN2UzMTVlZmIxZmZkIGxlZ2FjeS10cnVuaworNTA1MjYgYjk3OGFmZTdjYWI2NmFlY2ZmZGE3Yzk4NzM3NGVjZWMwZjY3MjRiNCBsZWdhY3ktdHJ1bmsKKzUwNTI3IDhhZGRjOTEzMTcxZTg4MzQ4YzNmNDk3NzkxMjRiZWJmNDZlMTBhN2MgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDUyOCBmMmFjMzFmYzM2OWU2MmZlNzdmYjViNWM4OTI0NzEwZWZiNDJjMGI2IGxlZ2FjeS10cnVuaworNTA1MzcgM2IzOGFiOWM0YjAzNjk1YTMzMTU4NTFjOWZiYzhmYzcyNTBjNjA0ZSBsZWdhY3ktdHJ1bmsKKzUwNTQwIGM4NDk5N2UxZWNjNzY5MjU0ODliZDMwMWRjZTYzMGQwN2NlYzNiZWMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU0MSBiNmZkNDk5ZTQzNDNmYjc3NzkwY2ZlNGI3MzUyN2YxMzM4YjJmMjA0IGxlZ2FjeS10cnVuaworNTA1NDIgYzM2MTkxNWRmMjkxM2M2MWFmNzkwYTA2MTdmMmEwZTQ0MTdjZWQ0NyBsZWdhY3ktdHJ1bmsKKzUwNTQ4IGZjYmY0NjIxMTkwM2E0ZjJhMGQ3NjQwODY4N2ViZTFhOGU0ZjgwNjggYmNhbm5vbi1zYW5kYm94aW5nCis1MDU0OSBlNDAyNDRmNWZlYjk0ZDAxNTRkM2UwM2IwM2I4NzljM2JjYzExMGU2IGJjYW5ub24tc2FuZGJveGluZworNTA1NTEgZmE2Y2EzZjVmMjI2ZTU4MGViYmRkNjllMTFhZmY5OWI4NWEwZWJjNiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTUzIDFjYTAxNWJlNzBhZTIyZjg1YWVkNzBmOGM5ZWQ2OGYxZTI3YjllZDQgbGVnYWN5LXRydW5rCis1MDU1OCAyZDU3ZTRiMDhjZTY4Y2Y3YjE4YjM2ZDhmNTE2YjdhNWI4ZGZkN2E1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA1NTkgYjI4NjUzNjIyMDkzODMwMmNjZTE2ZWI1MmMwZmM2MGNkMDdiNGI1NCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTYwIGUzMWVkZWU1YmMzZjU0ZTM0MjY2MjAyOTc4OWJjNGU1YWM2NDE3NGQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NCAyMTZhOTdhMmVkMzZmMjU5ZGFlYWYyZjkxMTU5MjAzMjRmMTJhNzQ3IGJjYW5ub24tc2FuZGJveGluZworNTA1NjUgZGFlZThmOGMwMzVmOTZhZTE5ZDA4MzBlNzJiMTJhMTAyM2E0MjA5YyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY2IGUzZjYwNjZjZTc1ZjU4MmQ5NGQyMjgwNzlhMGI3NTMzNzcxYWMzN2MgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NyA1MmE4NzM4ZjVhYjRkMWU2ODAwZDMzZGUwMTI3Y2Q2ZjYyNmU0ODk1IGxlZ2FjeS10cnVuaworNTA1NjggMDNiNmZlNTdjZDZkZjViYjM0Y2ExOWY0Yjc2MGI5NDMxODZjYzgwNiBsZWdhY3ktdHJ1bmsKKzUwNTY5IDAwZjk3NWVhZDM0NGFmYjJjYWQxNGEyY2U1OTUxOWQ5OGIxYzZjNWMgbGVnYWN5LXRydW5rCis1MDU3NSBkNjQ2M2U4ZWY5YzQ3ZDMyNzNkM2U5MDU1ZGFhZDExNjkzOWIwZDBlIGxlZ2FjeS10cnVuaworNTA1NzYgZjUwYjlkYTVlMzYxOTUzYWQ0MGIzYzI0M2EwYTZmNGQ3NDgwZjk4YyBsZWdhY3ktdHJ1bmsKKzUwNTc5IGFlMGMzMjhhYzViZjkxYmY4ZTY4YzVkOTQxMjFlZGQ4NmJjN2YzMzUgbGVnYWN5LXRydW5rCis1MDU4MiAyMTRiMjhkN2E5OTkzMzRkMDQxYWM3MDdmMGZkZTk5NjNhNTgwNmU1IGxlZ2FjeS10cnVuaworNTA1ODMgNjU1MjI5OTIzZDQyZjlmMzNiM2MzODIxMDQ5NzBlYzdmYmNjZDgzYiBsZWdhY3ktdHJ1bmsKKzUwNTg1IGM3ZGQ2Njk2ZWM4Y2IxNzBhMTdjN2FlMmM3MDJkMWJhZTg1YWY1ZGMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU4NiA2ZjY5YWZiNzg1ZDBiZjljNWEwMDA3ZDU3NGNkZDg5MTRhZTA1MjhmIGJjYW5ub24tc2FuZGJveGluZworNTA1OTQgZTZmMTZiN2E1ODRmMjM2NmQxMWE3OGM3ZjBmN2E1MzA2NGJlY2EyOSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk1IDkzM2JlM2UwYWM2Y2IwNTZlYTY0YTUwMTIyMzViY2I5ZjA1ZjYyZjIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NiA3MTdhNzg4N2ZkN2E3NmQ3MTRiOGMxMmQ2YWI5MDhkYzFiNzdkYmNiIGJjYW5ub24tc2FuZGJveGluZworNTA1OTcgNzE4MmMyNzc1YzFlNDU0MmNkN2Q0MjYyMDVjNDlkNjViM2Q4MGJjNSBsZWdhY3ktdHJ1bmsKKzUwNTk4IGIxYmIxNzlhOGFiMDU3ZGJjMmQ3NDVkYzkwNjY4MDYyMTNiMDY5YTIgbGVnYWN5LXRydW5rCis1MDU5OSA0NzZjZDgzNzc3ZjJiYTcyZWRjN2VmZWNhMjU1NmQ2YjhkZDg1M2EwIGxlZ2FjeS10cnVuaworNTA2MDAgMmMzZWM3MjBhYTdiZWIwZGE0MDAyYjg0N2NjNWVkN2RjNzgyNTY2YyBsZWdhY3ktdHJ1bmsKKzUwNjAxIGIwOTVlODM4OGIyZTY0NTI1ZGUyODM1YzcyMmViYmJkMmM2MTU5NWYgbGVnYWN5LXRydW5rCis1MDYwNCAzNmM1ZDA4NWI4NjkyMDc0MDNjZjQxZTYxYjdhMjJkNGI3MWVjN2Q5IGxlZ2FjeS10cnVuaworNTA2MDcgYzQ4YjNhNjhmNjk2MmE2OTViMjliZDE2MmIyNDI4OTlmNjNhOGQ3YSBsZWdhY3ktdHJ1bmsKKzUwNjEwIGI1NjJmZDc5NTAwZDFkMzcwZjY5N2NkZTUyZGU0MDk3YTZiNjRlOGUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDYxMSAyZjMwNTE1Y2Y2NmI5NmU5MWJhYTFjN2I0Njk5ZmM0MTQzNGVmMTM4IGJjYW5ub24tc2FuZGJveGluZworNTA2MTcgODkyYjdhYzI2ZDNiYjU5MDA4NDI1Y2YzNmVhODIzODc2NTIyMjE5YyBsZWdhY3ktdHJ1bmsKKzUwNjE5IGU0YjZhNGYyY2UxNDM3ZGE2MTRiOWQyMWVkZmYwNTg5ZGI1YWFhZTEgbGVnYWN5LXRydW5rCis1MDYyMCBjZDQ1OWM5MjBmOTkwYzk0M2Y2MTA2MWUyYjJmMzAxMzQ4YTQxZDBhIGxlZ2FjeS10cnVuaworNTA2MjEgYTc3NjhmZWY1OWIyY2QxZWJkMmJjNzk4YjEzOTdkN2M2NGFiMTQ4ZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjIyIGZjNjlmYTZlNTRjODZkYzJlMTRkODQwNTE4ZjMxMjM1NzUzYjk3OGIgbGVnYWN5LXRydW5rCis1MDYyNyAxOGI5Nzk2YjdiYTU4Yzc0ZWFhMzIyZTU5Zjg5M2UzMDMyMWY3YWE2IGJjYW5ub24tc2FuZGJveGluZworNTA2MjkgYzg3MGVlMDY2YzEyNTQ4YzhlOTdhMzgxMThkZDc2MTNkZWM4YWVmNSBsZWdhY3ktdHJ1bmsKKzUwNjMwIGY3MWYyODQzNjMxZmVjZmIzYmEwOTU0MzEyMzI2ZTNiYTA4NTg3OWYgbGVnYWN5LXRydW5rCis1MDYzMSAyYTg0YjQ2YWQ2NGNhNjlmYTRlZGNmNWZlMGU1YWUzMDEyYjZmNTU0IGxlZ2FjeS10cnVuaworNTA2MzIgMTZmM2MwMmVkZTAyNTMxYjFkYjc4MGQ0ZWVmY2E4NDViZjI4Y2JkNSBsZWdhY3ktdHJ1bmsKKzUwNjMzIDBkZTU4YmNlNDdlZjMyYTMwZjFlZTdjMTk0YWVjMmFhZjAzYTVhOTAgbGVnYWN5LXRydW5rCis1MDYzNiA3ZGZjNzc2ZGQ4MWJjZWY2ODMwMDM3NjM4NTI5OWY0ODFmMjRmY2I5IGxlZ2FjeS10cnVuaworNTA2MzggOWYyYzNkZTc0ODU2ZGRkMTNiZmFlNjg4MGIwNTcxYzA0NDE1YzY4NCBsZWdhY3ktdHJ1bmsKKzUwNjQwIDg1ZmZjMGJmY2M5ODI5ZWFmMDZmZmM0MGJmN2Q2OWFiMTNkZGVhZmMgbGVnYWN5LXRydW5rCis1MDY0MyBiNjMyNTYzNDllNzc5MDA1MWFjNzE3NzQ0YTJiZjk3YTBlYmY5MzVlIGxlZ2FjeS10cnVuaworNTA2NDcgN2Y0MGVmODcxNzMxMTE0NmY3MDQ5MzdiNWViNTM5ZDY2MmU3MjVmYiBsZWdhY3ktdHJ1bmsKKzUwNjU1IDZiMWVkN2I3MDQ4ZTVlOGI5MTgwYjkxOTk3OGVkNTg0NzI3NDVlYzcgbGVnYWN5LXRydW5rCis1MDY1NiBiZjQ3NGY5ZDUyMjVlN2U3ZWE2MGM0MTllNDQ5YTgxN2FlMTgxMmUwIGJjYW5ub24tc2FuZGJveGluZworNTA2NTcgNWVjZjIyYTRlNWRmYzIwNDQ1ZDM0N2RhMDU0MGQ2NzhjNGNkNWMzYyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjYwIDA1MjlhNTg1MDY0YzRkNzRkNDY1YmIxZGFjZGI2ODcwYTkzMDhhZGMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY2MSAxNDY3MWE4MGFiZWYwOTA3NDI2Yzk4ZGU2Y2M3NjJkYjZkMGU1NWYzIGJjYW5ub24tc2FuZGJveGluZworNTA2NjQgMmE3NmVjMmYwYjc5ZDBkNTRhMTljOWFiMDM2NjUyM2E0OTc1ZGEyYyBsZWdhY3ktdHJ1bmsKKzUwNjY1IDA2MzE2NDFmZGVmZjRlZTQ1MGMyZmY2NGY1MTEzYzNjYWJjNjgwNTMgcmVsZWFzZTI0LW1haW50Cis1MDY2NyAwMDcxNTM1M2Y4MmM1Njc3ZjdmMTMwMjA1N2MwMTc5NmRiNjg2OTBjIGxlZ2FjeS10cnVuaworNTA2NzEgYzEzNmZmNGQ0MjZkZmJjYjczMjdkNGUzNTYwOTYyOTNkMDc4ZGM1MiBsZWdhY3ktdHJ1bmsKKzUwNjcyIDkxMGE5NDhlMDI5MGYxODE3MTc4YTQ4Zjg4N2MzNGFlZDRiZjVhYWUgcmVsZWFzZTI0LW1haW50Cis1MDY3MyA3NTZkNTdhY2RhODViY2JhMjhmMjMwZTQ1ZDcxNDhmOGNmY2NlYjk5IGxlZ2FjeS10cnVuaworNTA2NzQgYmRhOTNiNDVjYTQxM2ViM2E1MTFkNTNiY2VlYTFkZWU1Y2UzN2I3NyBsZWdhY3ktdHJ1bmsKKzUwNjc1IDNkZGI1OTQ4M2YxMDMzNWYxNjUxNjljNjhhMjgyYWY5YzBhYzYxNDAgbGVnYWN5LXRydW5rCis1MDY3NiBhZWRiODVlZTRmZWMyZWVhNzBhOTkyYzU2NWQ3MjI1NTg5MmFhYmExIGxlZ2FjeS10cnVuaworNTA2NzcgNTBiMGI1NGZiMTdkN2UzZmJlNWFiYzAyZDE1N2RhYTQ1YjIzMGJmMCBsZWdhY3ktdHJ1bmsKKzUwNjc4IDc3NWY4NWI5OGU2NTk4Mzk2MzkzNGEyOGQ0NWQ5ZmIwMmI0MTg1MTAgbGVnYWN5LXRydW5rCis1MDY3OSA5MGQ1ZDFmZWE0ZjJjMTE1Njc4MzlhYWU3ZjVmOWI3MmZmMjNkOTkxIGxlZ2FjeS10cnVuaworNTA2ODAgMzVkNTBmYmUwYjg4OTk4MGZmYjM2NWRlOGVhMDNjZjk0NTAzYWNkOCBsZWdhY3ktdHJ1bmsKKzUwNjgxIDkzNGJhNWJlOGYzZjBjMjcxMjJhZDE3MzUyM2M3MDIyYTk1YzA2NjcgbGVnYWN5LXRydW5rCis1MDY4MyBhNTUxOTdiZDcyMDBkZTExMzIzZGFkYjhjOTVmMTY4NDhmNzdiNTRhIGxlZ2FjeS10cnVuaworNTA2ODQgNjA2NGNiMzAxMjA5YzhlYzczN2U3ZmI1MWI3ZThiZDU2ZDZmZDdiYyBsZWdhY3ktdHJ1bmsKKzUwNjg1IGFhODU3OTFmNTk5MTNmMWExMDZkN2E5ODJhMTJhYzNjMjcxNzZiM2EgbGVnYWN5LXRydW5rCis1MDY4NiBkMmJmY2MxYWFjM2Q0ZmFlOWUyOTM3Yjg3MDhmMjdlMzY5NmQwMGNkIGxlZ2FjeS10cnVuaworNTA2ODcgYmIxNzA3MjY1ZGU3ZTI2ODI0YmI1YzAwODllMjcwYjg0NTExNzQ4MSBsZWdhY3ktdHJ1bmsKKzUwNjg4IDAwODk0MTUyMTgwNTAyZGNhNjRjNzQ0ZDVlMDUzMWZmYTIxNTk1ZjEgbGVnYWN5LXRydW5rCis1MDY4OSA2NTRhNWIyNjI3MTdlMjdmMjljMjQ5NGYxZDAxY2VjNjA2NGFhNzM2IGxlZ2FjeS10cnVuaworNTA2OTAgNjI4Yjg1MTBmZWZiYjk3ODlkZDcyZjA4YjE3NDYwMGRkNzFmNTZmZiBsZWdhY3ktdHJ1bmsKKzUwNjkyIGZkYTNjYmQ3NGM3MThlZmNlNmY3ZmFkNDY1YWIxMTdhNTFlNWFlMjMgbGVnYWN5LXRydW5rCis1MDY5MyBmZjUzOTcwN2ExZWQzNDdiYmQ5N2IwOTU0MjdhZjczN2NlMjZjOTM1IGxlZ2FjeS10cnVuaworNTA2OTQgZTdkMGE3NWUzMTQ1NTNmNjA1MWY1ZjEyYTE3NGZlZDgwNTg2OTZiNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjk1IDI0NGZiNTI0ZGRkNDFiNTQ0YmY1NzZiYmY4M2M5NWUxZDIzOGY1Y2QgbGVnYWN5LXRydW5rCis1MDY5NiA5NzllMzkwZTJiYjRjNTY1ZDA2OGQzZmNlODE2OWJmMjQyMTA3ZWU5IGxlZ2FjeS10cnVuaworNTA2OTcgOTcwMTYzMzgxOGI0YmIyMDI2YmY0ZDcyYWY4YjM5MDBiNDE4M2QxMSBsZWdhY3ktdHJ1bmsKKzUwNzA0IDk1ZmE4ZmM4YTA2NWMzNzA0ZTgzOGY2OTQ4MzcyODU0ODM2ZDRiMmEgbGVnYWN5LXRydW5rCis1MDcwNiBhY2ZmMWMzNGNjYTNjMzVmNzEwNjc1ZDNhZjliNzFkNmNmMjNiYjYxIGxlZ2FjeS10cnVuaworNTA3MDggODViMjM5NjVlYzRjMDY5MWIzYTI1MTUzOGNmOTk1MjM4NzU2MGJkNSBsZWdhY3ktdHJ1bmsKKzUwNzEwIDA4ZjM1YWJlY2Y5ODBmZGE1NGU1Y2Q5YzZiYWMyMmJkNTQ1ZDBkMDcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcxMyBjNTc1OWI1YTU3ZjBjNjkwOTI5YTk5NzBhYjQ1ZmJmMDRmNGY2ZmViIGxlZ2FjeS10cnVuaworNTA3MTUgMWQ3ZGE4NjA4MDMxYmZkMmYwYzc0YTJkMDliNmVjOGI5ZWI1ODA5OSBsZWdhY3ktdHJ1bmsKKzUwNzE2IDVmZjVhNTgzYjEyZTljNjRkNTBmYmM1MTNlMmZmYWZlOTQ2NzcwODYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDcxNyA4NGU5MTY2YjcxMDhmMTBkNjIyNDUyMzYwYmFmZTlhMWUwNjAwM2IyIGJjYW5ub24tc2FuZGJveGluZworNTA3MTggM2M1ZGIyYjNmODkzYWRhMjdkZmFjNWQwYzVmZjA0YjA5YTZhMmJjYiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzE5IDVjOTAzZjY1MDcxOTllM2Q2MmViMjgwZjcwNTYwNTBhMGE4ODBmYjUgbGVnYWN5LXRydW5rCis1MDcyMCA4ZmU2Nzg2ZjUxNDQ1YmE0YjQ2MDcxZGI2MWM2MGI0YTEzZGM4MTYwIGxlZ2FjeS10cnVuaworNTA3MjEgNWFiNzZmYmYyM2YzY2YyMTdiZmZkZTdhNWExNWMxMWVkN2FlMjMxOSBsZWdhY3ktdHJ1bmsKKzUwNzIzIDJhMWZlZmIxODc2NGNhMzJkMWY2OGIxNWM1MWQwZTgwZGU4OWU5NDQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcyNSAxNDA1MzFiMTI0Zjg1ZGY1NzI5Mjc0MWUyNTA0NmJjOTU4ODVkN2FjIGJjYW5ub24tc2FuZGJveGluZworNTA3MzAgYmUxNzM0Y2M2ZGMwMmM1NzQ4OTZhMTYwMjZiNTkwY2I0OGFjMjE3NyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzMxIGEzMmYyMGVjYzAyNGI3YmNiOTc1NmM3NDBjNWExYWQ1NWJjNmJhNGYgbGVnYWN5LXRydW5rCis1MDczNyA1OTc2OWI1MzQ3ODllNzUzYTU0MjA2ZjA1ZTkxOGYyMWY3MTJkMTQzIGJjYW5ub24tc2FuZGJveGluZworNTA3MzggZWI0NDBlYzc0YTEzZWJmNTUzMTMyYzc2MDRmZGFhN2MyNWM0MjVhZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzM5IDA2MDcwYTEyYTZiMDJiNTcwZGRmNzk3OGY3ZjVhZmU0MjE3ODE5YTcgbGVnYWN5LXRydW5rCis1MDc0MCAzNTcyZmFhOWEyOWUwNzhjMzIxN2Y2OWYxY2I4NDBiOTI4YTQ3YzFjIGxlZ2FjeS10cnVuaworNTA3NDEgN2YzODE3MzI1MWJiYzZiMDA1ZWEwYWU1MzU3YzA3MThmYjcxYmExNiBsZWdhY3ktdHJ1bmsKKzUwNzQyIGFmNGEzYTBkNDdjY2ZlNmY2Yjc0NzM0NWM0NzhjMDg5YjZmMWU3MDUgbGVnYWN5LXRydW5rCis1MDc0MyBmMjAzMWYxNWQ5OWQ4MTI4YWRmMWNiM2E3MGJhYjcxYjk3YzBkZWEzIGxlZ2FjeS10cnVuaworNTA3NDUgYmFhNTQzMzdjM2Q5ZTk1ZmJhZDM1OTYxNTcxMmQ0YTQxYmZhNTI3OCBsZWdhY3ktdHJ1bmsKKzUwNzQ2IDdjMDliNjZmMDRiZDE0OTFiMDM2N2M5NzcxYTk0MjE5OTdmZDdkNGQgbGVnYWN5LXRydW5rCis1MDc1NCA0MTdjZGVkZTA2ODgwZjFkNTQ5ODMzZDZiYzQ3ODEyMmQxMTliOGU5IGxlZ2FjeS10cnVuaworNTA3NTkgZDBhOTU2NTRmODAzMjFjZTIzNTM5YzlhZDJiYThjMjdmMzY1Y2JiNiBsZWdhY3ktdHJ1bmsKKzUwNzcxIDA3OWU0MmUwYjgyNmE4OTBjZjBmMDM1NGY0YmIwMWJiZTI3NmM3ZGEgbGVnYWN5LXRydW5rCis1MDc3MiBmMWEyNzc3ZTVjOGIzZDY4NTRjNDFjNDFiODZmOGE2MzU0NDFlODEyIGJjYW5ub24tc2FuZGJveGluZworNTA3NzMgMTJlOTczYmRmZWVlMjk4ZjkxMjRiMDUwMWRiZWJmYjg3N2Y2ZjFkYSBsZWdhY3ktdHJ1bmsKKzUwNzc0IGVlNmFiMzMxNzU4MWJmNzg0NWQ4NGI1YTZlOTc3ZGJmODk5MTA1MDggbGVnYWN5LXRydW5rCis1MDc3NSA4MzJmY2U1MGRhOTM2MmVhNDQ0NDNmZWM5ZTZlMjQ5NWU2YTIyN2UzIGxlZ2FjeS10cnVuaworNTA3NzYgNzEzMmY5OGVmMDdiMzJkOTk0NDkzM2YyZGJlN2Y4ZTc0ODBjY2MxOSBsZWdhY3ktdHJ1bmsKKzUwNzc3IDc1YTcxMDY2NjJhM2ZkNjI3MjllM2QyMjIzODhkZjUzMjYyMjAxYzkgbGVnYWN5LXRydW5rCis1MDc3OCAxODA1ZTY4NGRjOTI1NzI5NzU0MjU3ZjYwYmViMTFlZmQ3ZThlOTAzIGxlZ2FjeS10cnVuaworNTA3NzkgYmM1ZDgzMWYxZGRhNTA5Y2JmNTZiZmZlYzVlNzM2NzBhYWE5YTgyNyBsZWdhY3ktdHJ1bmsKKzUwNzgwIGNkYmI0NGMzZGU4NzE1YTEwYzBkY2RhOGYwOGE5YmJlYzY5ZjNlODUgbGVnYWN5LXRydW5rCis1MDc4MSAwZTBhOTdjZWQ4ZTkxZjkyZTIzYThlYWVkZGQyZTZlNDc5ODNhM2VkIGxlZ2FjeS10cnVuaworNTA3ODIgZTk3NzNmYzI3ZTliMzZhNTk1ZGU1MTNmNzViZTNmZGFkZjIzNzg3MCBsZWdhY3ktdHJ1bmsKKzUwNzgzIDk1N2JmMzExOTI0Nzg0MDYyMjg1ZjJmYmY5YmY0NmQ4NmVjOGZjZTEgbGVnYWN5LXRydW5rCis1MDc4NCA5ZDE4ZDk2OGE1OGIzMzFmZTdmMjM1ZTk2MTZjMDEyODQzOTYzYTdkIGxlZ2FjeS10cnVuaworNTA3ODUgZTNkYTVmODdmZTY0MWQ4YjM5MmVhZTc1MWZjYTBhYzNmZjY5ZjVkZiBsZWdhY3ktdHJ1bmsKKzUwNzg2IDU0YmI3MjA2MzJjNDJmZDE4NWFkZTg5OTllOGMwZTI4ODIzZTZhYmIgbGVnYWN5LXRydW5rCis1MDc4NyAwYTRhZDgzZmQ2NTQ5MjI1M2MyODczNDk4MTVkNjBiZThiZGI2MGIwIGxlZ2FjeS10cnVuaworNTA3ODggM2FjODUwOTQzN2RmZGJjMjQ1MDA5NjhjYThkM2Q4MTQ5Y2RkNzY4NSByZWxlYXNlMjQtbWFpbnQKKzUwNzg5IGI1OGY3OTUyZTM4YWU4OTFkMmExMDM1NGY5NjEwMzM5ZjRhMzE3YTMgbGVnYWN5LXRydW5rCis1MDc5MCA3ODY0M2JlM2NmNDBiYjNhOWY0ZDQzOTM1NzJlZTAyMjMyYzYzZTllIHJlbGVhc2UyNC1tYWludAorNTA3OTEgYTNmZGE4NDMyMzRlNDhkMWNhNmM4MmIyNWU2M2NhNGE0NGE5OTNjYSBsZWdhY3ktdHJ1bmsKKzUwNzkyIGY4ODE5YmQ0ZTQzNzk3NzA1ZGFjZTAxMTdlMjJjNTYyYWI0NDk5OWIgcmVsZWFzZTI0LW1haW50Cis1MDc5MyA1MzQxOGNiYWQ3ZmQ0YzM2MmI5ZTc0OGZjOWQ1NjViMTM0OGMxYzNkIHJlbGVhc2UyNC1tYWludAorNTA3OTQgYTRjNGI3ZWE3OWMwYTc0ZjM2OTEzMTk5Yjc0Njc4M2IxZTExNzhkYiBsZWdhY3ktdHJ1bmsKKzUwNzk1IDgzMmQ1YTM0MTMwZmE1MzY0NTcwNzQwZGU3NTEwNjkwYTFiYzNhNWIgbGVnYWN5LXRydW5rCis1MDc5NiBhNGZjNGU3NTI2MzQ2ODI1MjdiN2YwZDFmZWUyNWJjMzI4YmQ1YjA0IGxlZ2FjeS10cnVuaworNTA3OTcgNjNhZWE2ODhiNWJiMjZkZmNjZGM0MGU1NjU3MjhkYjJhZWVjNzM4ZCBsZWdhY3ktdHJ1bmsKKzUwNzk4IDFiMWZkMThiMWFkYTUzODNjMjVlNTYyNGY4NjFiZjA1M2Q1ODYxMjggcmVsZWFzZTI0LW1haW50Cis1MDgwMCAwMmZhMTAxNWNiY2M0YzkzNGM4NDBhM2Y5ZmQyZmU2MjAwMWU5NzJjIGxlZ2FjeS10cnVuaworNTA4MDIgY2FhZjM3ZTQ1ZDQ3ZDQ3ZWM0NzgzNTg2Yjk2MDZlOTQwZThkMDE4OCBsZWdhY3ktdHJ1bmsKKzUwODAzIDg5ZTA5MGZlZjk4NTMwMjFjYWI2OTk2YjdkODQ2NGJlMThkYjQxMzEgbGVnYWN5LXRydW5rCis1MDgwNCBlZmRlNWVlODhjOWY3Nzc5ZjAxY2U1YjNmYzYzMjhmMTczNDJmOTM3IGxlZ2FjeS10cnVuaworNTA4MDUgMGMwMGUyZjUwOWUwMDc5MzQ3YTNkYTVkM2Q4YzUxNGZiZTcxODczNCBsZWdhY3ktdHJ1bmsKKzUwODA2IDdjZTdlZDJlY2Q5Y2FkMzRmMjY3N2M4NDMxNzc0NWNjYzJlMmI0OGUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDgwNyBkNzFkNDY2OTc0ZTU4N2JiMzYzOTU3YTA5OWNmYWNlZmY4Nzg3MWY3IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA4MDggZWFlZGNjYzAyODNkNzkxMGU0OWZmMmU3OTlhZmU5MzM4MjUxZmIyMCBsZWdhY3ktdHJ1bmsKKzUwODA5IDA3Y2VlMDFhNGZjY2MzODdmMGZjMWQ5MjhmYTUwZmE4MWVlN2NlMTEgbGVnYWN5LXRydW5rCis1MDgxMCBhNWY4ZDFkMjU1YTk3OWJjNzBmNGY2OGMwNzQzOWI2YzNlZDJkMzg5IGxlZ2FjeS10cnVuaworNTA4MTEgOTlhYTg0MjI0ZjE4MTlkNTUyNzI2YWE5MTFlYTg1NzA5NDU0ZjQ3ZCBsZWdhY3ktdHJ1bmsKKzUwODE1IDYzYTQ0YzkxYTRkNWViY2UzMjVmYzBmODIyYzJlOGY4MmRmMTJlMjcgbGVnYWN5LXRydW5rCis1MDgxNiA2MjI4MmZkYWFjNWEwYTEzNTY1OTUwMmJmM2MzNGI4NWY3NDQxNmY4IGxlZ2FjeS10cnVuaworNTA4MTcgNzkwYTc4MmQ5ODNjYzc0NDY0MTg1NDAyMjMwYmM4ZWIyMTc5ZGI5NyBsZWdhY3ktdHJ1bmsKKzUwODE5IDY2MjFlZGZkMjk2YWI4ZGUxNzBmMTYwOTg4MTcwYzY3MDdmMDIyN2EgbGVnYWN5LXRydW5rCis1MDgyMiAyZDRjOWFjY2I4ZmNjMTNjNDI4NmYxODA5ZmYyMDdlZTFjM2U5MjI2IHJlbGVhc2UyMy1tYWludAorNTA4MjUgODM3ZjU2OTUwY2VhOGI3NDJhNDYzZDc0Njk4NjAxNjM0OTJmZWIyZiBsZWdhY3ktdHJ1bmsKKzUwODI2IGZmOGU3YzQ2ZTQyOTgwMWYwNTZkMTFmMGUzMTRhYzdlNjZjNmY5NjggbGVnYWN5LXRydW5rCis1MDgyNyA5NTM3Njc1MmU2N2NmOTNiYjEzZjU0Y2ZmYjM4MmE5NDk5ZGMxN2RmIGJjYW5ub24tc2FuZGJveGluZworNTA4MjggOTAzZmRjMzhkNTY0NWU0YzJlMDE4OTIwMGY1ZjA1NGNkOTYxN2E3MiBsZWdhY3ktdHJ1bmsKKzUwODI5IGY5MGYzMjg2Mjc1NjFjNWQ2NzFhODRhZTM4ZDEyMjYxOWQ2YWYzMjQgbGVnYWN5LXRydW5rCis1MDgzMCBiOTE1MWM4Yzc5ZThmNTNlOWQzMzlkMDUwNDEwNjc1MzZjZjAyZDJkIGxlZ2FjeS10cnVuaworNTA4MzEgNWQxMTYyZTZiYzM3ZjQ4ZDVmMjhmOWJhYWU0YWVmNjZlOTNjMzIzYSBsZWdhY3ktdHJ1bmsKKzUwODMyIDQwZThjYWVmODQwZWYyNDliNTY3MGNlMDgxYmIxODlhNGJkYTZhNmYgbGVnYWN5LXRydW5rCis1MDgzMyAxNDkwNTI5ZTc0Y2UzYmFiOTI4M2I4NTUzM2JkMzNjOTZjYzNhMDZkIGxlZ2FjeS10cnVuaworNTA4MzQgYjU1YmYyYWRmYWU1ZTkxNDNhYmI4Yzk5ZGM0M2RmODMzYzg2OGVjNCBsZWdhY3ktdHJ1bmsKKzUwODM2IDVmMzMxMjA1NGNlZGU2MWU4MzVlNDg0MTMzZTNlNzk1NTQ0YjA3YTggcmVsZWFzZTIzLW1haW50Cis1MDgzOSBjZmJmNTc1NzI0NTdkYzAzNWQwOGIxNGE0NzViYzAxOTRhMjMxZTA4IGxlZ2FjeS10cnVuaworNTA4NDAgNmIyMDBiOGM2M2QzMzI2NmMzY2IzZmJjNzRlYjk5ZThkMDlmOGRhMSBsZWdhY3ktdHJ1bmsKKzUwODQxIDZkMTg0ZmI4YzUzNTA5OGQ5OWExNTNhZmVhNjZmZjI5N2Y5NDdiNTkgbGVnYWN5LXRydW5rCis1MDg0MiA3ZGE2ZjgxYWQ0ZDUzZTUyMWE5NmNmNTc1OTQ4OTY0YzRiMjJhNzM2IGxlZ2FjeS10cnVuaworNTA4NDMgMTdkNTY3MWZmZmNjYzNjYTk4ZDhjNmFjNzFhMWMwZTMyZjA0YzQwNiBsZWdhY3ktdHJ1bmsKKzUwODQ0IDljNmRjNmQwOWIwNzM2MjNlMzFmODgxYTM1ZjFhZTFjODEwY2ZhNDYgbGVnYWN5LXRydW5rCis1MDg0NSA5ZjNmMWVkZDljMzUwNjM4ZDE5ZDAzZDliZjU1NDUzMTI3NTYzZTZiIGxlZ2FjeS10cnVuaworNTA4NDYgMjY3MDY1MDc2ZjA1OWRlZjA0MjAxNWU4NWFmZDQ5ZTVmNTA1ODdlZiBsZWdhY3ktdHJ1bmsKKzUwODQ3IDI3MWIyYmIyZmM5MjNjZjBkZjAzM2FiNWE1MTBhMTVkYTZiMDk1YzggbGVnYWN5LXRydW5rCis1MDg0OCBmMjkyYTJiMTRiYWY0ODEyYzM0M2E3OWQ4OTYxY2JhYjk2NTI0NDE0IGxlZ2FjeS10cnVuaworNTA4NDkgYWNmNjAwNDcxMzY5ZjQzZjRiM2Y3MmIzNGU0OGI0ODc3ZmU2OWZjMSByZWxlYXNlMjQtbWFpbnQKKzUwODUwIGYwOGM1YmJiODA0MjFjZDM0YmU3YjFiODBmYjIwZWY2YmZjYjljMzggbGVnYWN5LXRydW5rCis1MDg1MSBiODE2NDJlNTIyODdmMzZiZjZhMWUwZjljYWIxYjFmNTJjOWQ0OWM3IGxlZ2FjeS10cnVuaworNTA4NTIgMWUwMGVmMDdiZWIyNzE5ODQ4MjNiOGQyZjM2MTgwNGFjZTVkMzljMCBsZWdhY3ktdHJ1bmsKKzUwODUzIDE4NWY0MjgzYTNiOWNkNGI2NzBkOWIwYWJkZjFmMmJiY2M0MTYyZTEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDg1NCAyOWMyZmVlNmM5ODQ4ZThhMjc3ODlkNzFhNzBiYmQ1MzQ4ZDFlOWUyIGxlZ2FjeS10cnVuaworNTA4NTUgNDBiNDQ2ZWQzZjEyNjJkOTYyZTIzZTFhZmMzYzE5YmJiMDBlZTM0MCBsZWdhY3ktdHJ1bmsKKzUwODU2IDVlZTZkM2RhMGU2NDU2NDg3ZDEwNjgzYmY3NTY5NzExMjU4MDA0YzcgbGVnYWN5LXRydW5rCis1MDg1NyBiY2VmYmM1ZTY3MWFmZDdhMTY4NDI1Y2FlYWQzMmQwOGNmYTdlZGU2IGxlZ2FjeS10cnVuaworNTA4NTggMGIwY2M3YTQ5NjgyY2MwYWY4MWVkNGU0MDNmZTIzZDZiZDFkYjU3MSBsZWdhY3ktdHJ1bmsKKzUwODU5IGQ3NjU3NzVlZDc5Zjg1NjNhMTk5NTVjZjhlNWIwNWFhODk1N2VmODUgbGVnYWN5LXRydW5rCis1MDg2MCA4Y2EzMDY4ZWEzNDNhMjRhZTczYWFiMGY0MTQxMGE1MTA4Y2Y0MzBlIGxlZ2FjeS10cnVuaworNTA4NjEgMDI1YzI3YjgxMmY2OGM0MjRhNjZlYmI2OGIxODFkZGI0Mjk4NzBlZCBsZWdhY3ktdHJ1bmsKKzUwODYyIGIwMTFiZWNmOGM4MjJjMmJiNTY1NGM5OTFkN2E3NmQyMDAxZWQyMTggbGVnYWN5LXRydW5rCis1MDg2MyBjMThhNjY5NGEwNjZjN2U5NWQxNWM2N2FhYzViNGY2NjY5ZDA3ZWM4IGxlZ2FjeS10cnVuaworNTA4NjQgMDBhY2U2ZTQwOGIwMzcxYTBmMjI1ODgxNTcwNGM2MGZmOTI0YzI1MiBsZWdhY3ktdHJ1bmsKKzUwODY1IGExMTBhNDQ2MjE4OWEyMDAwMmI4ZDhkNGYwNzQyZTY1NGFmNGM3MGEgbGVnYWN5LXRydW5rCis1MDg2NiA2MWMwZmU0ODM3NmExMmQ4YTMzYzViNjQzNWUxZmM1YzE5NTRiYjI4IGxlZ2FjeS10cnVuaworNTA4NjcgNjA1MjJkZmU2MjU5OTBiMDQ1YTQwYTQxMTAwN2Q5ODljZTAzMDU4ZiBsZWdhY3ktdHJ1bmsKKzUwODY4IDcyYTUyZTZmYzZmMTBlNTNmNTBiNmYxMjFmMjA2NDI1MzA0NDgxMzcgbGVnYWN5LXRydW5rCis1MDg2OSA4NzliZDc1MTBmZWEwMGQyMTI2OTdiYWUyMmMzOTc1Yzg2YThiZjAxIGxlZ2FjeS10cnVuaworNTA4NzAgNmIzZDRhMGYyYWM1OTE1NzgwNzRkNWZkMzc4NGViNDJlNjg3Nzk0NCBsZWdhY3ktdHJ1bmsKKzUwODcxIGM0YTc1NDZhNTA5ZjE3NGMzODhkZTQzNDU2YzNlYmMwNmQwZTg2ZTIgcmVsZWFzZTI0LW1haW50Cis1MDg3MiBjZTRkZmYyYTk1MjM4MDBjYjY1MDcxNDJlYjA5OWNmYTY0ODYyY2QxIGxlZ2FjeS10cnVuaworNTA4NzMgZWVhNjc0MjExZDMyYmMxZDU2M2UwMmQyZWZkZDk5M2UzOTYyNzRiMSBsZWdhY3ktdHJ1bmsKKzUwODc0IDBkMGQ4MmU0MGI5MjdlNTNkYWI4NjNlZjYwNGRiMmE1YzU1MTVkODkgbGVnYWN5LXRydW5rCis1MDg3NSBjNmQ0YzBhZjJhMTIyMjY5YTE5MTBkNGFiMWE1MzNhYjBmZmJkNmQxIGxlZ2FjeS10cnVuaworNTA4NzYgYWMwMWI2MzU5YjYyMTU4OGNkOGZiM2M0ZjczMWQzYWQ2OTZhODIwOCBsZWdhY3ktdHJ1bmsKKzUwODc3IGIwY2RjYmNjNWY0NTc4ZGI2NGU0YzcxMDM4MDRhNmU0ZGI4NTExZmUgcDN5aworNTA4NzggYTc1MzAwMzZmMDU1Y2JkODQyMTgwMzkxOTY2ZmExNmE2MmY2OWIwOSBsZWdhY3ktdHJ1bmsKKzUwODc5IGUxOWRhOWIwMDJkYTMxYzYyZjE4ODNhZGExMmQ2YTQ1M2VkOTZlZTMgbGVnYWN5LXRydW5rCis1MDg4MCA2ZWIzNzU3YzJjOTkxZDM2ODllYjU4NzQ3YjMzYTY4MjFkZWY5M2YyIGxlZ2FjeS10cnVuaworNTA4ODEgMjhjZGQ0M2UwNTY5MDJjZmZiN2MwYzAyZWM2Y2U2MmNjNDYyN2VlNSBsZWdhY3ktdHJ1bmsKKzUwODgyIDA3ODE3MmVlYWFlNTNkNjE0MTIzMDc0MDg0ODRiYTk4MWEyYmQyZTMgbGVnYWN5LXRydW5rCis1MDg4MyAwYjNmZDA0Y2RmYjQ4ODVjNzM2OTVkNDY3MWVhYWFhMjY2MzBkYzdhIGxlZ2FjeS10cnVuaworNTA4ODQgMTEyZjIxODgyMTNiMjRjYjIzNzdhMGRlMmUwY2FmZGZlNTJjY2JmZSBsZWdhY3ktdHJ1bmsKKzUwODg1IDQwY2ViYWZhZTU2ZmY2MDNmODFjZGQ5ZTBlMmUyNTJhMWY3NGM2YjcgbGVnYWN5LXRydW5rCis1MDg4NiAzNTA0M2ZiYTdhZWQ4MDFjZGRhNTNhOGQyNzBiNzI4ZjM4MDMyZmY1IHJlbGVhc2UyNC1tYWludAorNTA4ODcgY2Q4ZjIwZDQwMGMxYzY1YTMzMGQ3M2U0Y2Y0OTdiYTRkNjBiZDJiYSBsZWdhY3ktdHJ1bmsKKzUwODg4IGVmMWU3ZjNkOWY5ZDgyZWM5Y2RkYjc1OWRkMDM4ZmFhZDM3YjJhZWUgbGVnYWN5LXRydW5rCis1MDg4OSA2MWM4YjQxMDRhZWZhZWE1MjExZjZmOWNmMGM4NTQxZTg3ZWM0ZWE5IGxlZ2FjeS10cnVuaworNTA4OTAgNzU0MzFiMGJmYjBlNzIxM2IwYjM0YjA5NjBmZWUwOTNhNjM0MTc3ZiByZWxlYXNlMjQtbWFpbnQKKzUwODkxIGI5ZjM1M2MyYzAyM2U1Yjk4NjMzMmQ3ODY4ZWQ2YWNjMzIwNTA5YWYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDg5MiA2OTdhZTM2MmVkMDI0MTUyYTEwODc4M2M2Mzk2N2VhMDAxMTdkNzE0IGJjYW5ub24tc2FuZGJveGluZworNTA4OTMgNDI3NmQwYjQ2OWFmZmYyNGYyYjdlMjcxMDFlMDZlOGI1ZjcyYmRiYyByZWxlYXNlMjQtbWFpbnQKKzUwODk0IDI3N2Q3YWY1NWM0OTQ1YTc4MGFiMzg0ZDc2ZWYyM2FiZTc0NTNmNzkgcmVsZWFzZTI0LW1haW50Cis1MDg5NSA0YTZhZGU5Y2U3ODBkYjkwNTU3YTM2YTFjZDljMDUyOTZlNTRlNDM1IGxlZ2FjeS10cnVuaworNTA4OTYgNTU4NjVkN2JjNmVhNDkxNDQ1YWNhYTUzMTFiZTE5OWE1OGYxZWZjNyBsZWdhY3ktdHJ1bmsKKzUwODk3IGJmMTk4NGMxM2UyZjc5ODY0NDY0OWRmY2MwODBlODE4MDFhMGQ2MTMgbGVnYWN5LXRydW5rCis1MDg5OCA2ZGFjZGMxYTAwNTRmYTkzNjljNzNhOTU4ZjU5MTJhMmViYzg2NjliIGxlZ2FjeS10cnVuaworNTA4OTkgMGU5YTI2OWEyMTg5MGIxMDA1ZThiODA5MGRjNjc2ZjE3NjBhMTI4ZCBsZWdhY3ktdHJ1bmsKKzUwOTAwIGQxNjY0YTUwMWRhNWNiZGUwZTAwMTA3ZThmZmM5OTYxZThhYmRhMzYgbGVnYWN5LXRydW5rCis1MDkwMSAwZGU5ZDcxNDQ0ZjYyOTZlYjU4NDAwNzE2MTYwYTE0NjNhM2U1ZDc2IGxlZ2FjeS10cnVuaworNTA5MDIgYTliMmZkMmQ0Yzk2MTdjYTU0MzQwOTczZTkyMjQ2MWE2NjNlNDg3OCBsZWdhY3ktdHJ1bmsKKzUwOTAzIGM4MzRjYjk1NjM3YWNkYjE3ZDIzZGQxNmQ2YWFjMzJkYTZhMGQ1NGUgbGVnYWN5LXRydW5rCis1MDkwNCBjM2JiNGIyM2ViOWIzZmJhY2EyNjJjOWY4MWVjMDlmY2FmNjkyMDhlIGxlZ2FjeS10cnVuaworNTA5MDUgNDA2YzFlZmU3YmVlZDM0NjlmNjkxZTY5YjEzY2M5YmMzM2RiNzA1NSBsZWdhY3ktdHJ1bmsKKzUwOTA3IDA0ZGYwYTk3MjFiMmM3NGNiZjMwMTQyNWM2MjFlYjk1M2Y0MjMyZjcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkwOCAxYjU5N2M4MDE1NzIyMmM0MzI5MTA4ZDRjNzM0OGZmNDc0MDQ0YjlmIGJjYW5ub24tc2FuZGJveGluZworNTA5MDkgOWZkYzY4NDFjM2ViNjljNzJlYTE3ZmIzNGEwMWM1NDNmMjNmYTAxYSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTEwIDMwOGJhNjQzMTczYTAwNGYzZmJjYjlkYTRhNTZiYjIzMjgzNzg0M2EgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkxMSBlYzUxNmJhZjhhMzBjNWQ1OWMyNWEyMWUyZDgyYjY0NGEzOTY1NDYzIHJlbGVhc2UyNC1tYWludAorNTA5MTIgZjNkNTQwNzUxYWRlMDdkZDk4Y2FiMTA4NjNlY2QyZmRhYjcxMTcxNSBsZWdhY3ktdHJ1bmsKKzUwOTEzIGM0YWM2ZWE0OTdhMTA1ZWQzNTQ0M2U0ZTZhMjQyNzZjNjlkOTNiOTYgbGVnYWN5LXRydW5rCis1MDkxNCA4N2M5ZTMzMWQ1YzhkNjExMmM4MTNkZTgxYTNkZjY0YWJkODVmMjY3IGJjYW5ub24tc2FuZGJveGluZworNTA5MTUgNmI5NmQ4YzkyM2JlYzViMTVlYTQ4NTBiMTMzNzI5YjgxNWQ0YmY4NCBsZWdhY3ktdHJ1bmsKKzUwOTE2IDNmNDQ4NWIyMGU3OTllOGNhZTI3YTBmN2FhODJjYzI3NTA5NDg4YTQgbGVnYWN5LXRydW5rCis1MDkxNyA1ZTg1ZWVlMzM1ODI4ZDgzNWQ4YTgwNDk1NDc5NTNiZWRkOGUwYzgxIGxlZ2FjeS10cnVuaworNTA5MTggMTJjZmExYmNmODQzZDc0YmNiZTEzZTg0MjUyNzFlM2Y0YjNmZDExZiBsZWdhY3ktdHJ1bmsKKzUwOTE5IDhiOWNjZDVkOTMxZTBmMjQzN2I1YWYzNDM0N2VlMDQwYzZiNDYxOTggYmNhbm5vbi1zYW5kYm94aW5nCis1MDkyMCA5MjVhYjQ3ODI5OTQyNDk3MDk3M2UyOTZmZDI2OTU0MzlkOWUyYjI0IGJjYW5ub24tc2FuZGJveGluZworNTA5MjIgYTU0YWUyNTgzYjcwMTAwY2EyMDhmZTExMzVlNmI3ODM3ZTUwMGJlYSBsZWdhY3ktdHJ1bmsKKzUwOTIzIGU3OTVlMDVkNmQ1NjVjNjJiOTMyYTM3YzAyYjY3Mjg1ZjI4OWMwMDkgcmVsZWFzZTI0LW1haW50Cis1MDkyNCA2YzhiYzdjZDcyYTZjOWZjN2Y0ODFlMDNjMDNmZWUwYTYxZTlhMjNkIGxlZ2FjeS10cnVuaworNTA5MjUgZmI2YmNjZmZiZTMxMGE0YjA4ODI2MGZkYzMyZGM0NzBjYzdiYWJkOSBsZWdhY3ktdHJ1bmsKKzUwOTI2IGNkYjQ3ODcyMjZhZjNiNTUzMTBhZTgwNWE5NDljZjMxOGEzMDUxMTUgbGVnYWN5LXRydW5rCis1MDkyNyBkNDUzNDQwYjMzYzZlNTE3MzNmMWQzZmIyYmJhYTAwZmE1NTZhOTQzIGxlZ2FjeS10cnVuaworNTA5MjggMWZhZDRmM2UzNmJhNGZiMDQ0MzlkNDY5Y2YxYjU0MThhNzFlN2NlYyBsZWdhY3ktdHJ1bmsKKzUwOTI5IGFiMzQ5NWRmNGNjZWNiYTZlMWQ2MjhmZDdhOGM3M2ZhNDA3MGUwNmUgcmVsZWFzZTI0LW1haW50Cis1MDkzMCBiZDI2YTE5NTNjMDViZTJlYWZkM2E2ZGU1NmQ2ODM4MDc5NGJhZjg1IGxlZ2FjeS10cnVuaworNTA5MzEgYTk5NWNmZjg0M2IzNDBlMWY1YWI4Yzk3N2QyMjRmYWZjMGNjOGIxMyBsZWdhY3ktdHJ1bmsKKzUwOTMyIDNmZWQ3ZmI2YmM5NjQ0OTM5Y2Q3ZWYzYzAxNzI2MTZhNGE1MGUyNDUgbGVnYWN5LXRydW5rCis1MDkzMyA1ZjIxNTQzYzMzZGM0ZWNhN2FlM2VhMjUzMWU3NDZmYmIwOTFmZDk2IGxlZ2FjeS10cnVuaworNTA5MzQgMmYzZDg3MWJmNmVmMjJmMzlhMjU3YzY2NjkzNGI4NzNlNDVjZGNjOCBsZWdhY3ktdHJ1bmsKKzUwOTM1IDZmZjcyYWQ5M2FkMmJhNjE3YzUxNTFmMTRlMWUxODRjYTViNGNiOWMgbGVnYWN5LXRydW5rCis1MDkzNiAxYzk0ZjY2MjM3Nzc5YjU2YmFhOTcxZTE3MWZmZDVhMGViYmQxMjg4IGxlZ2FjeS10cnVuaworNTA5MzcgNmE4OTk1YzJlOGJjOTkxZDE4Y2FjYzM0MDYwMjIxZjI0Mzg2MGIxZiBsZWdhY3ktdHJ1bmsKKzUwOTM4IDA2OTFkOTAxZDg5Y2JmM2JhYzBkNTNiYTU4NzFmYWY3ZDI0ODZkMjIgbGVnYWN5LXRydW5rCis1MDkzOSAwYWJhNmIxZjVhMDFjM2JkZjVkZjFkYTEyYjQzYmI1ZGUxNzdiM2MwIGxlZ2FjeS10cnVuaworNTA5NDAgMWEyMjJmMTEwYWFhZjk5ZGQxMjE4MjU4ODU2NGUxMWUxMTUyNTkxMyBsZWdhY3ktdHJ1bmsKKzUwOTQxIGNiMWU0MzJiNDkxOWYxMDY0NDA2YTY4YzhlZjE2MDgzNThiZDY1MjQgbGVnYWN5LXRydW5rCis1MDk0MiA0ZGQ1MmJhNTJkZTgzZWUxM2MzM2VlNzc0ZWExMmZkNDc2NTU5YTY1IGxlZ2FjeS10cnVuaworNTA5NDMgM2EyZDNlZGEzZTE2ZTVkNGQ5NmQ4ZmE1ZDU1N2Y0MTA3YmNiY2YwMSBsZWdhY3ktdHJ1bmsKKzUwOTQ0IDM0OTgzYzBiMjZiYzI5MjY2MjllMjEyNjc0Yzg4ZjI2MWY4NDEwN2QgbGVnYWN5LXRydW5rCis1MDk0NSA4MDY5ZDczYWNiZGY4YjVlOWQzYjg3YzZhZTkyMWFiNWY4YjBiOWQ3IGxlZ2FjeS10cnVuaworNTA5NDcgMzU1ODNmNTVjNWE4YTU1YTA2N2ExYmUxY2ZiNDBlZjFhZTRkMjY0ZiBsZWdhY3ktdHJ1bmsKKzUwOTQ4IDcyODE0MjlhMDFkNjdkNGJiNzA5ODZmMmU1NzcxOTVkNmJjNDMyZjQgbGVnYWN5LXRydW5rCis1MDk0OSAzNGMyMGQzZjI1MTA2NDA3M2RmZDZlYjNkMjkwMzI5Yjc4MTRhMDEyIGxlZ2FjeS10cnVuaworNTA5NTAgODhkYjYwMmYyM2E2ZDFlNWQ0NWE4NDEyNDAzYzBhZTljNTU3OTU5NCBsZWdhY3ktdHJ1bmsKKzUwOTUxIDQ1YTM1NGY3NGQ4MGQ2NTQwOWEwZGYyYTVhMmE1OTJiNmJkYjQ0NmQgcmVsZWFzZTI0LW1haW50Cis1MDk1MiA0ZGI5ZDk1MzNiMTYzZDE3OWMwOTk5YzBiNGJlNjdiNTc5MWY2YjUzIGxlZ2FjeS10cnVuaworNTA5NTMgZDg4ODhjOGI4NzJiMTNhNzM3NGQ0NjNhMzY2ODg3MGRkY2NmYWYxNSBsZWdhY3ktdHJ1bmsKKzUwOTU0IDZhNWY3OWE0ZTY4NzMzZTEzNmYxMjU2YzBjMWI5MTE3MjVmOGZmNTYgbGVnYWN5LXRydW5rCis1MDk1NSA1YWQ2ZTJhNzJiMmFjMmExNDIzOTdmNDIzNTljMWU1ZmM5YTgxMTkwIGxlZ2FjeS10cnVuaworNTA5NTcgNmQxZjY3M2YwNTkwN2M2ODNiNzE5NDZmNzBjMWFhMGU1MjQ3NDQ1OCBsZWdhY3ktdHJ1bmsKKzUwOTU4IDgwNTUxMmNmMTRlZmNhNjVlZDhjYmJlMGFhMGM5MmZiMTNmMWY5ZTQgbGVnYWN5LXRydW5rCis1MDk1OSA0NDA3ZTUxOTNhNGIwYzkxNzI4NWYyMmZjYzA4NDdlYzhlMDZjNGM0IGxlZ2FjeS10cnVuaworNTA5NjAgNGUzYWQ2NWY1NWU4ZWUyN2NlYTAxMjFiYmRhOTY0ZWNhZDJiM2M0NSBsZWdhY3ktdHJ1bmsKKzUwOTYxIGVmYmFlYzk2NzRkZmQxZjk5OGQwNjU2MzQzMjJjN2YxYWFlODllMWEgbGVnYWN5LXRydW5rCis1MDk2MiBkZDUxZTU2YjZjYjBhNWQyOWU4OTdiYmMyNWEwMGUzMTY0OWQ0OWRlIGxlZ2FjeS10cnVuaworNTA5NjMgMTUyM2MzOGNkNTA1ZmYyMTkyMmI2ZjhiNDdkZTFkM2Q3MDBmZjI2OSBsZWdhY3ktdHJ1bmsKKzUwOTY0IDM4OGI3ZDkwYmI4OTYzZTk3ZTRiZGNlYjFlNmQxODc0ZmIyZDg4M2QgbGVnYWN5LXRydW5rCis1MDk2NSBmNjlkOTFhN2NmNzE0ODk0ZWRkMDQ2ZWU1N2UzMTQyMDZjYTNhNzg1IGxlZ2FjeS10cnVuaworNTA5NjYgNzdmMzY1M2JmYzE0ODNmNzQwYjEyMGM3NzlhOGUzZmUzYWRiNjFiOCBsZWdhY3ktdHJ1bmsKKzUwOTY3IGFlZTlmMGQ1ZmQyYjE2NzI0NTNhZGVlOWRlNTIwYjYzYzczYjZjYzggbGVnYWN5LXRydW5rCis1MDk2OCBiNzQ1YjNmZDY2YTY0OWE1ZmE1NDBiZGY0Nzk3MWMyNmFmMGE5NTllIGxlZ2FjeS10cnVuaworNTA5NjkgN2RjNWYzZWRlNGNkYzYyYmZlZmIxZDcwYmQwYmFlYmNkOTc1ODM2NCBsZWdhY3ktdHJ1bmsKKzUwOTcwIDA0MWViNjIzMWNkYzI0MTZkOWI5NWQwNjVhODJlY2IxYTE0NzU1NTIgbGVnYWN5LXRydW5rCis1MDk3MSAxYjRlNWViMjEwNDlmYjVlNTlhM2IyNDQ2OGJjOGRjODk3MDIwYTk5IGxlZ2FjeS10cnVuaworNTA5NzMgY2ViZWUxZjg1MjIyMTkxMWFkYjBiYjA5NTZiMTk3NThkNGZhYzYyYyBsZWdhY3ktdHJ1bmsKKzUwOTc0IDFlYjkyMTU2NDFhODg0NGVhNjQyYzE0Nzc4Y2QzMDMwNWQzZTMyYjkgbGVnYWN5LXRydW5rCis1MDk3NSAyMTY4NzdiODZiYzI4NjVmNzVhZjFhMzk1M2VjOTg4Y2M1MjI5NTg1IHJlbGVhc2UyNC1tYWludAorNTA5NzcgOTM3N2M2NjA0NTQyY2U2ZWFiZjVkMGU2MmNkNDQzNWRlNmQxZWM5ZSBsZWdhY3ktdHJ1bmsKKzUwOTc4IDM2MWVmN2NlZWYyOGQ5ZjYzZWIzZTVjN2U1NTc1ODNmMGExMzU0M2QgbGVnYWN5LXRydW5rCis1MDk3OSBiZGU1OGE3OGZjNzEyZTJhOTcyNWQ0NzQ1ODFjMTRjOWIzMGExZTM3IGxlZ2FjeS10cnVuaworNTA5ODAgZDkzYTA0MzQwZTZiYmE1NzQ3ZWYwYjJmZjA5OTgwNTFlNmZjOTFlMyByZWxlYXNlMjQtbWFpbnQKKzUwOTgxIDY1ZTdiNDIyMzQ0NGYzNmM4NjdkOTcwMTJjNDBlOTRkNGUzMmYxMzEgcmVsZWFzZTI0LW1haW50Cis1MDk4MiA5Yjk1ODA5ODIwMzU1YjZmMWU0ODc0NzFiY2UxZWI5MDRkNzQwNzBhIGxlZ2FjeS10cnVuaworNTA5ODMgYzk4YTIzNTI5ODNhNDk2ZDE0YTk4ZDA5OTMwZTY0ZTFmZjcxNTNmYiByZWxlYXNlMjQtbWFpbnQKKzUwOTg0IDI5Yzc2MzVkMDE5OWFjNWJlMmM5Nzk5NDJlZTEwMmIwOWNiMjQ2ZTEgbGVnYWN5LXRydW5rCis1MDk4NSA3ZjQ0ZDYzNGYzNzdiZDY4OWIzOWRkNGZiMmFmYmZlOGRmZTA5MmM5IGxlZ2FjeS10cnVuaworNTA5ODYgNGFlZDQzNjdhZGQyN2NlZWJmYmRkN2Q4NTNmMmIwMjUwYzA2YTk5MiBsZWdhY3ktdHJ1bmsKKzUwOTg3IGQwZTYxNzA3MDRkZWU4NTA5NjAxNGIzMzdlZDA0MWQzMmNiMzFhYWYgbGVnYWN5LXRydW5rCis1MDk4OCBjODdhMzk1MWRmYzUwYWEwNzE4YmZkOGUyMGIwOWM2NjkxZjFkNTA5IGxlZ2FjeS10cnVuaworNTA5ODkgNGVkNWQ0YzhlNjU0MjRmNGE4MTFhMDU3YWE1NzcwMWYyZDllZTBhMyBsZWdhY3ktdHJ1bmsKKzUwOTkwIDM5NWQxNWU4Mzc0YTcwYTA2YTQ2ZGM0NzgzMjgwZDMzYzA4NTNlMmUgbGVnYWN5LXRydW5rCis1MDk5MSBhZWM2NjY4YzU4ZDFlMWY4OTAyZmU4NWQ1MjA2NzIyMWQ5YzllYjUyIHJlbGVhc2UyNC1tYWludAorNTA5OTIgY2YwNDZlMjJkN2RkNTljNGNhMzJkMjQ3MzQzZDY4YmQxMDFhMmZiZCBsZWdhY3ktdHJ1bmsKKzUwOTkzIDkzMGJiMWViOGRkNWQxY2FjNTI5NzQxNTM0ODgxNGJmNzQ3ZDg1MjAgbGVnYWN5LXRydW5rCis1MDk5NCAzZGQ0MTAxY2I3ZTk3NzlmZmY0NDUyM2M3YmE5YWRhNmNjNzU5YjhjIGxlZ2FjeS10cnVuaworNTA5OTYgZjdmMTBhOGI5NmVlN2Q2MDE0Zjc2NDg3ZGQ3ZTAzOTVjZTUwMzdmNSBsZWdhY3ktdHJ1bmsKKzUwOTk3IDdmMDQ3OTNmZTEzNWU1ZTg4NDk1N2E1NzRmNDVlMjVhMzM4NDI5OTEgbGVnYWN5LXRydW5rCis1MDk5OCA5MTAxNTE1MjRmNWVlYjBkMzE1MTEzY2FmNWNhMDEwZTY4YWFiMzVhIGxlZ2FjeS10cnVuaworNTA5OTkgNjYyODE0ODhlOTAyM2E4MjJkNjk3YWY5NWE3OWVlYzJlZDcwMjM4MSBsZWdhY3ktdHJ1bmsKKzUxMDAwIGI3OWI2OGI4MmE0NDVjMzMxMWUyNTkyMGM4NzU1NzdkOGY0OWQ1NDEgbGVnYWN5LXRydW5rCis1MTAwMSA4NmU4MWRlZmMyODU2ZTYwMjA4MTBmNThlZTc3NDI3YTBkZThiZDlmIGxlZ2FjeS10cnVuaworNTEwMDIgM2I3ODk1N2M3NzkxOTk4NGIwMTNiYjk2ZGI4MDUzNTg1MTM4YWMxYiBsZWdhY3ktdHJ1bmsKKzUxMDAzIGYzZTA4OTE1Yjg3YjQ0MzU2MWIzYzMzYjE0MWE2NTRjZDE4Y2ExZjMgbGVnYWN5LXRydW5rCis1MTAwNCA4NmMzNjE4YTQ5YzNmM2E1OTI0NThmNWVlOWI4NDczY2QxZTk5ODVlIGxlZ2FjeS10cnVuaworNTEwMDUgNDk2NmIxNzk2M2I0MWU3ZTdlNjA2MWU0ZGVlNmU0NWQwY2FhMDQ5YSBsZWdhY3ktdHJ1bmsKKzUxMDA2IDNkZThhNThhZTBiOWU4ZTEyZGVlMjQxM2FiNGI2ZmRiOTVlZjNkMjggbGVnYWN5LXRydW5rCis1MTAwNyAzOTM4ZTZlZmE3OTNkNmIzMTc2ZTY1YzAzODczMDIzZTQzNDdjODIzIGxlZ2FjeS10cnVuaworNTEwMDggMzE1YTY2ZDIyNDdhNzkxZDNiMGNmNDBhNzMyNTQ0MjU0NTA4MTgzMyBsZWdhY3ktdHJ1bmsKKzUxMDA5IGZmMjIzYjk1ZjIwN2UwOWQzM2JjNTA4ZDZlMjRlNGRhMmZjODgwM2UgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMCA5ZDdjNDVkMGQxYmY3ZWMzNjlmZTc4M2MxNDdiOTlhMmMyYWQwMjk3IGJjYW5ub24tc2FuZGJveGluZworNTEwMTEgZWUyZDQ2YWMyZjZlN2I1YjlmMTZlNDc3Nzc1OWQ5Zjg5M2EzNjA0NiBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEyIDFjMGMxMjgzOGU2MjUzZWRmMTUxMTg4MDgxZDMxMjI5NmViM2ZlZjggYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMyA4MmI2NzU3ZmZmZjQ3NmI1NjE0NTc1ZTYyZjJlOWI0Yjc0MjU5MWI2IGxlZ2FjeS10cnVuaworNTEwMTggOTFjYTZlZWFlYjRhY2M1NjRlMGZhYWMzOWVhMTBiMjczM2I0ZTViMSBsZWdhY3ktdHJ1bmsKKzUxMDIwIGQzOWFlZTZjZGQzMmNmYWJkMWNiZGVhMmI2MTc3ZTJmMWQ2ZGJiNzggbGVnYWN5LXRydW5rCis1MTAyMSA1M2QwNTUyYTdhOGM1MDcxNTEzYmIxMDY3NWU5MjA5NmFjNDZhNTBmIGxlZ2FjeS10cnVuaworNTEwMjIgMjkxNWMwNzI5ZjBhOGNlNmQzMThiMzEzOTU2YzFmNTJjNGJjYjAwZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDIzIDdlMDMxODNlYjdhNTJhMWM5NGIwZGM1NzU0NzhmZTA1MGQ4YWQ4MDYgbGVnYWN5LXRydW5rCis1MTAyNSAxNTY3YzAxY2NhNzNmOWY2ODRlM2JmNjYwZmI5YTliMzY2ZTRhNTE4IGxlZ2FjeS10cnVuaworNTEwMjYgNDYzNzdiMDVlMTgxNTg5MTViNjQ3ODVlMWEwZTc5NmNkNmE4MWQ3ZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDI3IDJmMjIxYmRkOWY0NGI4ZjhjOTEzN2M3MDJlNjEzNGI1OWJmNDk4MWMgbGVnYWN5LXRydW5rCis1MTAyOCAyMzJkMTU2YmViODJmYzZhZDQyZTI4OTMwOGUwZTc2YWZmNTk1YzM3IGxlZ2FjeS10cnVuaworNTEwMjkgZDIwYjlhMmQ4ZWU3MzAyMDRiYTJhZGE3ZjE0ZDlkZmZkZWFlYTM5MSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDMwIGNkODJlYmZjNjZhZmQ0NjRmNzRlZmUyMmI4M2JiMmFlYTg1ZGE3YTMgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAzMSBiZDUwYTQyYjdkZjBkMGE2ZWRmMTI1MWIyNzM4MmFiZWUyN2UzNmU3IGxlZ2FjeS10cnVuaworNTEwMzIgNGYxNWFiYjEyMGRjNTE2MzIzODViMGVkMDIxMDFjMjExMmUzY2ZiZSBsZWdhY3ktdHJ1bmsKKzUxMDMzIDdkNmI5NzE1ODE4MDVhNzUwYmVmNGY1YjQ1OTI1OTkwNmRiNDVkMDAgbGVnYWN5LXRydW5rCis1MTAzNCBmYTJkYWMzOTI2ZmZjMTU5ZGExMzk2ZDBhODA4MDUwZTRiMGUwODNiIGxlZ2FjeS10cnVuaworNTEwMzUgNTk3NjJlNzk2MjgxMmZhNzg2NGVkOTQyMWZlZDUyYTdiYTI1ZWM5YyBsZWdhY3ktdHJ1bmsKKzUxMDM2IDEyZmZlZDkyN2EzZDQ1ZDE5NTBhZGM1MGI2OWZmYjY2MDQ1YzE1ZDYgbGVnYWN5LXRydW5rCis1MTAzNyAzNDQzNjRiNDkyMDg1Njg4NjkzNmUxZWE1ZjhmNGY5MDNmZjFkNTRlIGxlZ2FjeS10cnVuaworNTEwMzggMDAzNTBjYmUwYTllOTQ4N2NiNmY2NTgwNWFmNWQ4OWViNTY4MjFjMSBsZWdhY3ktdHJ1bmsKKzUxMDM5IDg1ZmRjZGZjYTg1YzFjYmExYjk3YmVjNmZlMmNmZjhmMjVhMzI4YzYgbGVnYWN5LXRydW5rCis1MTA0MCA1ZjlmYTBiODYzYWVlODBmOTkyM2ZlZjVlMDhlMTQzZTQ2N2JhMjhjIGxlZ2FjeS10cnVuaworNTEwNDEgOGI5MzE3NGQ1MDFhNGNiOWI0ZTBkZDgwMWMzN2E0MDA2ODc4NTBjMSBsZWdhY3ktdHJ1bmsKKzUxMDQzIDFlYWQ0MTIyMWJkODgwZWMxOWFkMTI1OWIyOWYzYTA1NmE0ZDdkMmIgbGVnYWN5LXRydW5rCis1MTA0NSBjZTEwZTNjYzdhZWJlODlmMjRiNzQ3OGE1MDhiNzA4YzM2MDExNzlmIGxlZ2FjeS10cnVuaworNTEwNDYgODJmNTYyMDc2NTJmNjljYWIyYTljMjMwNjU1NjdlYzQwNzFlYzRkOCBsZWdhY3ktdHJ1bmsKKzUxMDQ5IGMwYWJiMTgyOTliNDQyZTExNjBkMmY5NThiY2UxOGY2Njg1MGNhYTkgbGVnYWN5LXRydW5rCis1MTA2NSBjZGNmMmJjYWQ2MjRlYThiYWM2MzY1NjNkZmI4MTkzMDA0NzQwYTdhIGJjYW5ub24tc2FuZGJveGluZworNTEwNjYgYzM4OThhNzNiMzg2MDc4NzUxMzdmM2YzN2RhOWQ3MWJiZDcyODg4ZiBsZWdhY3ktdHJ1bmsKKzUxMDc5IGVjNGYzNWQyYTY5M2NlMTk1MDJmMDZkNmFiNGY0YzViNWQxOGZlZjMgbGVnYWN5LXRydW5rCis1MTA4MCBiOTBhOGIwMzk1YmQ0M2ZkMTkzODQyNDUxZDBjNDk1NzNiNGQ3MTY2IGxlZ2FjeS10cnVuaworNTEwODEgOGVmM2Y4Y2Y5MGUxMjFhMGI0MGEwZTNmYjdjMzA4NmJjMGE5MTQ0MCBsZWdhY3ktdHJ1bmsKKzUxMDgyIDc1YmY3NzM2N2RhMzIwYjEyNTkzOTg5ZmU5MWViZWNmN2ViYjI0ZDkgbGVnYWN5LXRydW5rCis1MTA4MyA4Mjk2ZmI5NmNjMTg0ZjY0YTAwN2ZhNDVmNTZmODBlYjc3OTcxODBkIHJlbGVhc2UyNC1tYWludAorNTEwODQgNTVmODMwMTgzNTMyNmU2Y2JhYmZmMmE4Zjg3NzczMzljMGEyMDE1NyBsZWdhY3ktdHJ1bmsKKzUxMDg1IDg0OTc0YzY3NjkwMzFkMGY1N2FmY2U1ODE4N2Y3MjViN2I4NDQwYWEgbGVnYWN5LXRydW5rCis1MTA4NyA3N2NmMThiOGIxY2UxMzMwMGRjOWQxZjg3NGM1OGYwNDc3M2ViMzRjIGxlZ2FjeS10cnVuaworNTExMDQgMTAwNGExNmIwZjA5MWJiNzgzZjI4NDE5NTE5MTJiMGZiZWZhN2NhNCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxMTA5IGViMjNkMDk2ZDY5NDY4OTUxOTQ3NmY2YWNjY2E4YWI2ZDEyMDIzZmUgbGVnYWN5LXRydW5rCis1MTExMCBhOWM3NDJkNmM4ODhlZTMzNTMxYmFkYmZlZTlmZDRkNzMxNzFmMTJjIGxlZ2FjeS10cnVuaworNTExMTEgMDIzODE2NmYwN2I3MDM1ZGM2NmEyNDBmMTIzYjY3NWQ2ZDUzYWQzMyBsZWdhY3ktdHJ1bmsKKzUxMTEyIDQwNTg1ZmIzODdiYmFhODIzOTkwNGE2MjdhM2FmNTQ5ZGU1ZTg2YTUgbGVnYWN5LXRydW5rCis1MTExMyA0NjVhMDc4ZDJjYTZiN2EzNmQ4OTEzZjM0NDgwMzI2Mjg0ZjdmZjMyIGxlZ2FjeS10cnVuaworNTExMTQgYWEwY2M3NTUwNzRlYjg5MTAxYzM2ZDVhNTAwNGE3YzA0NjQzNmE3YiBsZWdhY3ktdHJ1bmsKKzUxMTE1IGVmYTgwNjMzMzA5ZGE4NzQ1YzIzZGJjYzZjNzYzMTNiYTRjNDk3MTMgbGVnYWN5LXRydW5rCis1MTExNiA2NTY3YzMyYWI4ODE1NTBlMGUwYzE1MjNiMmQwYmRlNTlkMzQyNmVkIGxlZ2FjeS10cnVuaworNTExMTcgOTk5YTQ5MTRkNTNjYjQxZjdkZGZmMzQwYmU5MGVmNjE1YzZjMzNlZiByZWxlYXNlMjQtbWFpbnQKKzUxMTE4IGZmNGIxNTc4MDM5NjgzM2Y1YTk0ZGU5YTQ0NDBjNzQ5MDBlZmU3N2IgbGVnYWN5LXRydW5rCis1MTExOSA5Y2I0NTY1ZTYwY2FiNDMyMTFhYzQ1YmIwZGU1NGJhMDJkNWFmOGIwIGxlZ2FjeS10cnVuaworNTExMjMgZmU0NGRjYmUxM2YyYzI3N2JhYmIyYTQ5NjBlZGEyMGU4MDYyNjVlMSBsZWdhY3ktdHJ1bmsKKzUxMTI2IDNiZmVmM2RiMzJiMzkyYTRmNjBiMGYxZjM5Y2Y1YjJkNWE4YjEzMzUgbGVnYWN5LXRydW5rCis1MTEyNyA0MDQxNWRmNWJhOWRlNWViNjc0Yzc0ZGY3YWEzYjI2YTRlNDhkODRhIHJlbGVhc2UyNC1tYWludAorNTExMjggYjkwZmU0YWUzMDA4MzQ2MmQ3OWZlMjg2ZWFmNGFhOWYzYmRhYjhhMCBsZWdhY3ktdHJ1bmsKKzUxMTI5IDUwMDlkZTUwNGY5MjQwMjFhNDAzMmVkOTY3ZThmNGZlNjVlOTg1YmEgbGVnYWN5LXRydW5rCis1MTEzMCAyMTRlNGE0Mzg0ZjEyYjEyZjQyYWFiYTQ1MThkMDdjOTUyM2FlOTg5IHJlbGVhc2UyNC1tYWludAorNTExMzEgMmU2MzBiMmQ1YjQ0NjBlZDlhNjYyYzhhMDhkMzEwOTE4OTA0ZmUxNSBsZWdhY3ktdHJ1bmsKKzUxMTMyIDcyYTNmNzIzZWZkMTY5NzIwNDk2YjdhMjM1MzRjNWNlM2Y3MGIzOTcgcmVsZWFzZTI0LW1haW50Cis1MTEzMyBmYzEwMWNjMzU0YTc5ZmI2NTBkYTViMTU5YjI4N2E5M2I4MGIxZjljIGxlZ2FjeS10cnVuaworNTExMzQgYjdlYWIxYzE4ZTlkMzdiYzdlMzgzZmUxODJiN2QxMzE4OGU2OTAyNSBsZWdhY3ktdHJ1bmsKKzUxMTM1IDU5NDMyOTZhNTE4MjE1ZDcwMDM2N2I1MjJjYWZmMWUwYjAzZTc3MzAgcmVsZWFzZTI0LW1haW50Cis1MTEzNiBiNTAyNjhmNDZmZmY5YTc2MGYzMDVlOTE3NGVkODRkY2I3ZDhkMjAyIHJlbGVhc2UyNC1tYWludAorNTExMzcgMzM1MDQ3NGYzNDMzYzk5ZDJkZTBiZjQwMTJlMGY3ZTBmNjgwNDc3MyBsZWdhY3ktdHJ1bmsKKzUxMTM4IGY1YTdmNGRkOTNlMGQ4NzVkOGE2MzViNDJhZTc2NWE5ZDA3ODUxZGUgbGVnYWN5LXRydW5rCis1MTEzOSA5OTc3ODhkZTg2NjczMzBjZTlmMjJhMTZlOTA3OWYxYzRmMDNlYTgzIGxlZ2FjeS10cnVuaworNTExNDAgMjQ4NWVmNGM1ZDQ5ZDJiZTA5YjYzMzJmNmJmZjUyNzc3ZDM2MTA2MCBsZWdhY3ktdHJ1bmsKKzUxMTQxIDBiYzZjZmI2YjVmYjIxYWQxNTY4Y2ViODM0ZGZjNGMwMmRlNDk0MWEgcmVsZWFzZTI0LW1haW50Cis1MTE0NyA5ZWQ1NjBiMzUxMzk4MGQ0YzY0M2NiZTUzN2RkNWUwOWQ4OTI4ODU5IGxlZ2FjeS10cnVuaworNTExNDggMjkwYzU4MmEyMmQwNDM5ODIzNjE2ODU4ZjdjOTVlYjlkNzg1YzcyNSBsZWdhY3ktdHJ1bmsKKzUxMTQ5IGI2N2Y1MjJkNzZkNzhkODAwMjllNTU4YzczMzZlOTFmZjQ4ZTk2ODQgbGVnYWN5LXRydW5rCis1MTE1MCAxNGM3Njk0ODk1M2Q1YzVmN2M2NGQyMGUzMWE0YTM2MmM5NzFiNjEzIGxlZ2FjeS10cnVuaworNTExNTEgMmYwMzE2NDhlNTg3ODQ0OTdlZTI1YWEyMTkxMWIwM2U2ZGMyZDE3NiBsZWdhY3ktdHJ1bmsKKzUxMTUyIGQxNTQyNjBmNDZlOGY3ZDc3N2Q5ZWRhNGRmMzM1MjQ1YmVjMGE2NDIgcmVsZWFzZTI0LW1haW50Cis1MTE1MyA1NmMwZTJmNTk2ZTc2ZjFkMzBmMzNmMDFiZGMzNjI5MThjMGMwYTI4IGxlZ2FjeS10cnVuaworNTExNTQgOGRjNmJlM2UxMWUwMGE3Yzc2ZTFlYjg1NTM4MjJhZTk2MGI4YjQwZSByZWxlYXNlMjQtbWFpbnQKKzUxMTU1IGRlNDk3YzQxZTlhZGVmYzhiNmQ0NGNkMTFjZWVmMDVhOTYzNjFmYzcgbGVnYWN5LXRydW5rCis1MTE1NiA1NjkxNjI0MjY5YTVhNjA2NzZmYmE1YzVmNjg0MDBjMTdmMmRmYWRiIGxlZ2FjeS10cnVuaworNTExNTggOWQwODlhYTU4ZTJmNGI1Y2U0Y2FkOWM0ZjUxZDM5MWMzYzJhYjY1YyBsZWdhY3ktdHJ1bmsKKzUxMTU5IDgwMjI5MjdjMTdhODQ2NDY4NWRlNTJmYjY0YWYwYjMyMzU0NWI5ODQgcmVsZWFzZTI0LW1haW50Cis1MTE2MCA1Yjk2OTJmNjYyOWY0MDdhZGU5NGM5Yjc4ODNlYWYwYzhmMDYwMWVmIGxlZ2FjeS10cnVuaworNTExNjggNmY3NzUxOGI2MzdkYjNiOGZmOWZlMDkxYjNlZjM5YjU3OTk2MDg2MyBsZWdhY3ktdHJ1bmsKKzUxMTY5IGI5NWI5ZjQxNTdhODIyMTMzMDEyMThmNTVkNGZkYjc2MzUwMjk4ZGUgbGVnYWN5LXRydW5rCis1MTE3MCA1YzNkNDkzODU4MTZkNzA2ZjdhMjJkOTdhNTA4ODhhZmI5YWNlYmU3IGxlZ2FjeS10cnVuaworNTExNzEgMTk5Mzg4YjQ2YzgzYTAwYmVkMmYxOGZmNmIxMGZmYzBiOTY0MmJlZiBsZWdhY3ktdHJ1bmsKKzUxMTcyIDlhODA4MWNmNGE3MGRhYjQ2YmEwZjEwNjMxMGNjMjE5MGNiYjlkMzcgbGVnYWN5LXRydW5rCis1MTE3MyAwZjNhZDViOTM2YTg1NzJiZmU3YzA3ZDhlMzc1Mzg2NzNmMjI4Nzg0IGxlZ2FjeS10cnVuaworNTExNzggNzRkMjNjZDA0NDIxMDRmZjk3NWI4NWUxYjc0ZjVlNGVhMjNkNmUyYiBsZWdhY3ktdHJ1bmsKKzUxMTgwIDdkNmIyZTA0ZTQzOTU0MDYwMGU5ODU5MGEyODMxYWQ4NTlmMjg4MTAgbGVnYWN5LXRydW5rCis1MTE4MSBmZWVlNjU4MjAxMWYxNzc2YTZlMWRlODk1ZmIzMmIzZWU5MGQ3Y2E1IGxlZ2FjeS10cnVuaworNTExODIgOTIyMmQwZGFhYjNjNmFlZGViMDFhOTQ3NTE0NzI1MjdmODYxMDU0YiBsZWdhY3ktdHJ1bmsKKzUxMTgzIDE1NmIyOGYwZjJkMzVhYzAwZTgyYzYzZDJhMTQwMTgyYzljN2VjNzYgbGVnYWN5LXRydW5rCis1MTE4NCBkZGVhNGQzN2M4M2NhNDUxYzMwNzljYWQ4NTVkMDRlNTg5YjgzMWU5IGxlZ2FjeS10cnVuaworNTExODUgYjhlMzdlMDI2OGYyY2FjMDQyZDkyZDE2MjAxNmE0M2MxMzhmNDg2MSBsZWdhY3ktdHJ1bmsKKzUxMTg2IDI2YTZiZWRkMTdlMjFkYjEwNjk3MzZkZTMyNTI1NjZjNTZkZTNjY2QgbGVnYWN5LXRydW5rCis1MTE4NyAzYzJiZjc5NTI2YmU4OTgxNGNkMDIxNzEwNDAzNDE4NzhiYmQzZjU4IGxlZ2FjeS10cnVuaworNTExODkgZDhmYTgxMGNmZDU0ZGZkOGYyN2VlYTNiYzIyYTE1MThkMDNiMDFjMCBsZWdhY3ktdHJ1bmsKKzUxMTkwIDlmMDg1MTZhNGQwYzllOTlkN2Y0YmQ0ZTQ3OTIyMTNlMjJhODgzYTEgbGVnYWN5LXRydW5rCis1MTE5MSBlYWQ0OGE4MjIyOTVjODNlMWYxZTgxNDFjNzliYmVhYWFjMjcwYzVjIGxlZ2FjeS10cnVuaworNTExOTIgZTU1ZjZkNzIyNDA0ZmE5MmIyYTQzYzcyZmYyMTMyN2Q3YTQ3MTRiMiBsZWdhY3ktdHJ1bmsKKzUxMTk0IDliMzI2MGQ4MzU1ODc5NWQxYTFkMzFkYjk1ODgxYjYyNjdlZWNlYWQgbGVnYWN5LXRydW5rCis1MTE5NSBkZTllMWE1ZGNhOTM2NjFhNzAxMGU3NzYwMTE4N2I3NjlkOTczYjk4IGxlZ2FjeS10cnVuaworNTExOTYgOGVkNjJkYjE5MDVjNGQzZTM4Yjc1YWY3MWI1ZDkxMzk1M2YxNzdmZSBsZWdhY3ktdHJ1bmsKKzUxMTk3IDJhY2E0ZjA0MDAxMmNlYjA4YWNmMDVjZTlhN2RjMmIzODY1MjM3MzkgbGVnYWN5LXRydW5rCis1MTE5OCBiZTEwN2IwNGMyNTI1YjZiODExMmEyMWJhNjU0MTJkZjMwMDAwNTA5IGxlZ2FjeS10cnVuaworNTExOTkgNmFhZjU1ZjRkN2EzYjZkMzVmZDkxMzcwNTNkMzk1YmFhODQyNDk1MSBsZWdhY3ktdHJ1bmsKKzUxMjAyIDZhYjRjMzlmZDdhMzgzZmQ5ZDk0MmZjZDhmOWI3YmU4ODQ1ODYwN2QgbGVnYWN5LXRydW5rCis1MTIwNCA4NjQxNzI1MTVlZTc2YTNiNDVkZjE0OGY2NjgyZTljMzkzMDNiOGY0IHJlbGVhc2UyNC1tYWludAorNTEyMDUgNDhmZDM4ODczNDYzNmRhMWFkMDIzYmU4ODRjMzQ0YWFhNjEzYzM0MiBsZWdhY3ktdHJ1bmsKKzUxMjA2IDEwODdkZjAwYTZlODdiOTFkNjY3ODcyNTJjZDVhNmJkZTAwZWFjMDEgbGVnYWN5LXRydW5rCis1MTIwNyBlNzc4NzU3ZDMzMzA3MjAxNDVlNzRmZGM1ZGIwM2UyYTk1ZmFhMDA1IHJlbGVhc2UyNC1tYWludAorNTEyMDggNzc5MGNkMGNhYmQwNGM5ZDExZDdlODU2ZmIzNjVlN2NjODA0ZWI5NCByZWxlYXNlMjQtbWFpbnQKKzUxMjExIDY1NGMzODBjZjhiOWYwNzkxNTZlMzIxMTFkMTYyYWQ4MDNjODkzMTkgcDN5aworNTEyMTIgZjY5YmUzYzZhMmQ0NjM2NDliYzU2ODQ2OTI4ODI5NDhhMDZjOTQ1NiBsZWdhY3ktdHJ1bmsKKzUxMjE1IGI5OTVlMjc2MGRhNDcyYzNiNTkwZDM2OTNiOGZkNjU2OTE0NzM0ZTIgbGVnYWN5LXRydW5rCis1MTIxOCBlMTFjYWFkN2UwMjlkYzkwYjhhN2QzYjg2OTRjODJkOTQ3NTFkODM0IGxlZ2FjeS10cnVuaworNTEyMTkgOWYzOTA4ODJhMmMzYTUxZTA4N2QxYzkxNThkOTIwODc4OTRjNmFlMCBsZWdhY3ktdHJ1bmsKKzUxMjIwIDcxYjBhYzgwYTEzNWUzZTJiYWNhMzYxMmIyMzFiNzZlNjljZWM3OTYgbGVnYWN5LXRydW5rCis1MTIyMSAyMTc5ZDlmMTQyNzgxNzNiZTk1ZGFiM2RlMGJhZWM3MDVlN2I3YjYzIGxlZ2FjeS10cnVuaworNTEyMjIgODQyYmQ2MTM0ZTlkMjFhMDEzZGE3ZjU5MTNjNWI2ZTU1ODgxMmJmYyBsZWdhY3ktdHJ1bmsKKzUxMjIzIGE4MGRmNTMzMDZmMGRjZmY3OWRjMThkMTk2YWJkYjg4NjM5N2RlYzcgbGVnYWN5LXRydW5rCis1MTIyNCA2ZDUzNmQ0M2MxYTA2NTRjNDY2NDE5OTM0MGVhZTNiNTNmMDFhNzBkIGxlZ2FjeS10cnVuaworNTEyMjUgODFjNmIwZWQzMTg4ZGRjYzI5ZDIxZTA3Y2Y2MzZkZjc0ZjIxNmQwOCBsZWdhY3ktdHJ1bmsKKzUxMjI2IDI3ZjliNGZlZTE0ZjdiNjgwOGM3YWYyNmEwNGZiMmJlZDljZjY3MWEgbGVnYWN5LXRydW5rCis1MTIyNyA5YTEyODhkODIwMGY4Y2IzY2UyMjBhNmYyZDc5ZDg4YWEyZDI3NjQyIGxlZ2FjeS10cnVuaworNTEyMjggZWQ2NTc2NWViNjc5YjUwMzMxNjRmMGI0Y2IxNDJhYjlhNTIwNjMwNiBsZWdhY3ktdHJ1bmsKKzUxMjI5IDZhOGYwMTY2MGEzYjJkZTRmMDhiYjIyYzUzYzYzMmI3MmJlMzQ4NjkgbGVnYWN5LXRydW5rCis1MTIzMCA4YjkxZmY2OThmNGZmMmYzZGY1NTZiZTUyMWQxMjAxYmQ2NGQ4YzhjIGxlZ2FjeS10cnVuaworNTEyMzEgZGViNzQ4ZjMzYzFkYjUyZWIwODRmMmJhZTNlYzNkMWNkYzRiOGQ3ZiBsZWdhY3ktdHJ1bmsKKzUxMjMyIGNlMTFjNmMxOTM5ZGI2ODRmMzA2N2VhNjQ0YjZkNDdiYzkxZTQ1ZGEgbGVnYWN5LXRydW5rCis1MTIzMyAxNTEwODY2YzkyMGViODJlNjI3NzNiNWIwOGI3NTFjMTg4MWMzZTUzIGxlZ2FjeS10cnVuaworNTEyMzQgMmRiYWQ1M2RlMmIxMjcxN2MwNzkwYmM2NDFiMDM0N2JiZmVmMWE1MSBsZWdhY3ktdHJ1bmsKKzUxMjM1IDY4YmVkNTM0ODQ1NDAyM2NjZWJiNDAyZjViMzcwNWNlODI5MzdhMWUgbGVnYWN5LXRydW5rCis1MTIzNiA2Y2FmZGM4MWNmZGU4Njk4ZTZiODNlNjgyZmEyNGEyNjk4ZjYyMWY4IGxlZ2FjeS10cnVuaworNTEyMzggNDhmMWRiYzU3ODQ1MDYxZmFhNTBhNWMyMzJlYzUzYWIxNjUyZTM2NCBsZWdhY3ktdHJ1bmsKKzUxMjQwIGVjZTk3Y2ZlNjA4MzdiMTc4NmVkZjkzNzJmOWUyZDljN2YyY2ExMGMgbGVnYWN5LXRydW5rCis1MTI0NSBjN2ZmMDJjMTU1OWZkODY2Y2MwODdhYWMwNjU4NDliMWNjYTAzZmJmIGxlZ2FjeS10cnVuaworNTEyNDYgM2JlNjYyNzMyM2I5ZDNhMDVlYTcwZTEzZDhmNmMxYTJhMjJlMWRlYiBsZWdhY3ktdHJ1bmsKKzUxMjQ3IDU3NDgyMTc2ZTEwMTE2NjNlM2ZjNTA5MjNjNDRiMzg4ZGQ4YmY5YjggbGVnYWN5LXRydW5rCis1MTI0OCA3MWJhYTA2NzY3ZGRjMjlmN2Q2OTExZmE5YzZlNTQ1ZmVhNzY3MGI5IGxlZ2FjeS10cnVuaworNTEyNTAgZGFlZGFhY2Y3ZTExMGEzY2QxYTIzNjY4OTAxNDliNzMyYjFjMWNjYyBsZWdhY3ktdHJ1bmsKKzUxMjUxIDUzMWIzNjRiYmMwZTBkODE1Y2ZlZWMyMmYwOWUyODE2M2M0N2QxOGUgbGVnYWN5LXRydW5rCis1MTI1MiA4MTU4YjRlMGM3YjliNWMzYjdkMWI5OTBhNzM0OWZmODdkMGQxZGZlIGxlZ2FjeS10cnVuaworNTEyNTMgYmM3NGFmYjhlNGVmNjFkNDhiZDhmMTlkYjU2NmZkNjI5YjhlNzI0MSBsZWdhY3ktdHJ1bmsKKzUxMjU0IDI0ZDJjYzMzMDAwY2IxODVmNTFlZjM1ZTNhZDRkMTNjN2YwODk2MjAgbGVnYWN5LXRydW5rCis1MTI1NSAyNDlhNTlhY2I2ZWZjZjAyMDRmMDk2OWU3NmY1NjU2ZDRiM2RiNGMxIGxlZ2FjeS10cnVuaworNTEyNTYgNzEyMzFiYzQ4NjIyZTM2ZGVlMzYwMTE3ZmMyMTI3OTVkNDA5NDNiYSBsZWdhY3ktdHJ1bmsKKzUxMjU4IDAzNTZkZDljYzI3NDM5NjE4NmM1ODUzYWRiYjc2ZTE3NmE0N2YwYzQgbGVnYWN5LXRydW5rCis1MTI1OSAzMTc2MDVmMmNmNmY5OWUxZDE2ZDViMDlkN2ZlZTY0Y2EyMjU0MjE5IGxlZ2FjeS10cnVuaworNTEyNjAgZDUyMzFlYzZkYWMzOTlkMzMwZDM5YjIzYTJiZDU3ODhiMWQ2MWZkNSByZWxlYXNlMjQtbWFpbnQKKzUxMjYxIGU3NzAxYjA1ZmQ5ZTIzZmQyNDA0NzRkZjk5MjVmNzA2NzIwNjRiZmMgbGVnYWN5LXRydW5rCis1MTI2MiBkZjk0NzhiZTA2Mjc5YTA0N2ExZGEzYTY1NTk3NmU1YWFkMjgyNDNmIGxlZ2FjeS10cnVuaworNTEyNjMgOGMxNmNiZWY3OTMyNjM1NzAyMGVhZWU2Y2RmMWY2MTExYjAyMTExNyBsZWdhY3ktdHJ1bmsKKzUxMjY0IGFiODUzOWMwN2IxYjNjNmU5MjgzYjVlOGU2NzkxZWExZmU2ZTNiYzkgbGVnYWN5LXRydW5rCis1MTI2NSBjMGE1OGE4NTVhYzBlMzgxMzZhNTg4ZTc1MTg2ZDljMzAwMTM0MDExIGxlZ2FjeS10cnVuaworNTEyNjYgNDIxODI2Yzk0MTA0ZjEzYWZmNzRjOTA3ZDE1ZThjZDU1ZjFmMzA5MyBsZWdhY3ktdHJ1bmsKKzUxMjc0IGE2YTZkZmYxNzkzNTZlMjk4MWZiNTUyZjM5MmU0NDRlYzUzNzQxNDEgbGVnYWN5LXRydW5rCis1MTI3NiA2MzViMDliMWY1NDJlMjkxNzUyOTc2ZTNkOTdmMTJlYzBiZmU2NmYyIGxlZ2FjeS10cnVuaworNTEyNzcgYTU1MzY5ZTIzZjA2OTRhNWU3OTMzZTIwMDBlYWEzZmI2Y2UxN2Q2MyBsZWdhY3ktdHJ1bmsKKzUxMjc4IDRlNWI4M2JhN2MyYTZhZjljYTAxYmNmODM1MzI1MGNiMTVlNjQ1ZjggbGVnYWN5LXRydW5rCis1MTI3OSA2NGZiNjhkY2E4OTY0OGI1OWQwMTYzNzE4MzFlYTgyMDMyMGI5NjM2IGxlZ2FjeS10cnVuaworNTEyODAgMjMxMmUxNzhiMzRkOTc5ODhjZmQ2ZTViZGQ2NTg0ZDg5YzgzZTFiMCBsZWdhY3ktdHJ1bmsKKzUxMjgxIDI1NGExODY5MzdhOWI0OTllOTcxODJlMzdjN2JlY2I0N2Q3OTNjY2UgbGVnYWN5LXRydW5rCis1MTI4MiAxNjBiODNjNzFkN2EwYWM5NjA3YjhjOWEwOTYzNjY0NTM1ODdhZTIxIGxlZ2FjeS10cnVuaworNTEyODMgYTk1MDkwMjgxMDMyMTIxYTAwMmU3NmY0MWE2YmE1N2FkYjcyMmJhZiBsZWdhY3ktdHJ1bmsKKzUxMjg0IDE0ZWM5Y2ZkOTc2MDBlMjYxNDY2NjQxMWZjM2FkNmI3ZjY1NjA2NzkgbGVnYWN5LXRydW5rCis1MTI4NSAzNTJmZmU3N2I3MWRkMGU3Y2E4ZjY2N2E5ZTZhMjA4NmRhYTNiMDYwIGxlZ2FjeS10cnVuaworNTEyODYgZWExZjhhMTFhNzJiOWEyYTAwMGEyNTQ0Zjg3YzExZjdjNmUzNDAxNSByZWxlYXNlMjQtbWFpbnQKKzUxMjg3IDlkNjRiZDc0ODMyMGFkYjQwYzdlMDNiYWI5MDRmYzA4NTRhYWYwOWIgbGVnYWN5LXRydW5rCis1MTI4OCBjZDY3ZTExMWUxYjg1YjdlMTVlYjFiZTRmNTlkMTk0NzMzOTZhMWM1IHJlbGVhc2UyNC1tYWludAorNTEyODkgMjA3ZTQ4N2Y0MjVkZmU0MWM2MTk5MDllNmFkOGRmMDllMTU1ZTkzNyBsZWdhY3ktdHJ1bmsKKzUxMjkwIGU4YzQ2Y2M5OWRmNWVkZDJiNTMyMzNhODgzMTQyZjk4ZjVkMmVlMzcgbGVnYWN5LXRydW5rCis1MTI5MSA3OTliY2YwY2NiZmQzMTNmZjU5NzI3YjZhYTk3Y2UwZTZhZGNiZjcwIGxlZ2FjeS10cnVuaworNTEyOTIgMTQ5ZGU3MjU2ODY0Y2Y5MjAwZDk3MjMyYjZmMjNkYzlkNWQ3OGQ5MSBsZWdhY3ktdHJ1bmsKKzUxMjkzIDg0Njc4ZjA3NTBiODQ0ODA0NzA4ZTRmMGQ3NGZkMjFkNWRkNGE5YzkgbGVnYWN5LXRydW5rCis1MTI5NSBlOTBlN2U3NjhjYjM1MjdhYmYyMGI0YjExODdkNDg2MWY3NzQxZjQ4IGxlZ2FjeS10cnVuaworNTEyOTYgZTZmYzRmOTlhNjFiZTE5YWFiN2EzZWJjMWQ5MmMxYmYzMThlYWU5ZCBsZWdhY3ktdHJ1bmsKKzUxMjk4IDRmOTBjMWQ1MzBkOTVjOWM5MDY4Mjk4ZDA5YjIxYzhhNjhjZTVlYjcgbGVnYWN5LXRydW5rCis1MTMwMCA2NGIzMzA2MGVmMDlkNWE0NzBmNDI2NzBhNTM2NzEzMDA2YzlkNGNkIGxlZ2FjeS10cnVuaworNTEzMDEgYmY1YmFlMWYwMGFkNDg1ZTQzMjBlMjk1NTg0M2FhMTA4NjgxYmIwYiBiY2Fubm9uLW9iamNhcAorNTEzMDIgYmU5MGZhN2FhY2RhNzljYzczZGRkZGZjM2FiYTIwOTg5ZTI5Mzc1ZiBiY2Fubm9uLW9iamNhcAorNTEzMDMgOTVmNjU2NjkwYTAwMDg4OWNiNzQ0NGI4YWM3YzM0ODAxMGY3MWFlNyBsZWdhY3ktdHJ1bmsKKzUxMzA0IDIwN2U3N2MxNDMzMDY0YjZjY2UyNzFlYTA2YTY2NDM4Mzk5NjZmMWQgbGVnYWN5LXRydW5rCis1MTMwNSA5MDk3ZWNmZWIzNDUwYzAzYjVhMGE0ODVmM2I5ZTdjNmEwNjcyMGYxIGxlZ2FjeS10cnVuaworNTEzMDYgNmU3YjNkZDU4Zjk4NzEwM2JjNzVjZjE2NDAwOTdlNzJlNjM0NmE0YyBsZWdhY3ktdHJ1bmsKKzUxMzA3IDkxMzMwNzZjMGJmOTcxZTk2YmVkYzJlNGU4OTU4ZGY5M2NiOTI2NmUgbGVnYWN5LXRydW5rCis1MTMwOCAyZGZlMWM2MjQzOTdhNGRhMTYyNjY5NDUyODAxYTFhNjg5OTFlOTA4IGxlZ2FjeS10cnVuaworNTEzMDkgMzcxYjljZDNhZjE1NjAyOTVkMDNkYzU3ZWU0NGUyMmM4NWZhNmZhMSBsZWdhY3ktdHJ1bmsKKzUxMzEwIDc5OGJlY2FiMzkwM2M0YWM5ZWU0MjkwOWJhNzc5ODY0NzkxOWY4N2QgbGVnYWN5LXRydW5rCis1MTMxMSAyNGNhYjIyOGIwMzk2YjcwMDI1Y2I5NzM5NDI0ZDc2NDMwMzQzZDlkIGxlZ2FjeS10cnVuaworNTEzMTIgYjUwNzNiNDhjOTI1ZjFhOTc2MzAzNjIzYjQ3ZTI0MmVmNzM4MTM1YSBsZWdhY3ktdHJ1bmsKKzUxMzEzIGRhNGJlMDQwOGI2MjU3Mjk2YTY4NzRkZmU1ZTEyYjVmZjM0YTE3M2QgbGVnYWN5LXRydW5rCis1MTMxNCBhMjdiZDUwZWIwZmQ4N2IwY2UzOTA2YmZiNGU1OTA2MjdkOGZkY2IxIGxlZ2FjeS10cnVuaworNTEzMTUgYzhjZTM5OTQ1ZGY1Zjg3NTc5YjBiNjljMjMzZTBkYWQwZDQzZGE2YSBsZWdhY3ktdHJ1bmsKKzUxMzE2IGE1ZDBmOWZiY2JmNGI4MjQyNWQwMjUwY2QwNTkzZWYxZjc5YWY1NDQgbGVnYWN5LXRydW5rCis1MTMxNyBkMjNiNjY3ZjA0ZGEyYmUxZTZjMTc3NmRlYWVhMjE1NGFhNTY0Y2MyIGxlZ2FjeS10cnVuaworNTEzMTggNGJiMzRlYjQ4NzM2NzQ3MGQ0Y2YyNmQyZTkyMzdhYTVlOWI5YzVlZSBsZWdhY3ktdHJ1bmsKKzUxMzE5IDEzNTg0MDRkNmRkOWVlOTQ1MmZjYzI5NDhmYzFhOWI3YzNhY2FkZjMgbGVnYWN5LXRydW5rCis1MTMyMCBmZmU3ZDNhYjM1YTgzNzBkMTYzMDAzMjIyMmM0OTA0Mjc3YjI5NjhhIGxlZ2FjeS10cnVuaworNTEzMjEgZmU4MGJiMTAyYWI2ZDUxZTBmOTRlZmUwNWVlNDUyMTI4NDFhNmY4YyBsZWdhY3ktdHJ1bmsKKzUxMzIyIGQ4MjIxODU1NDg5NzFhYjdmODA4MzMzMjYxNTM4NzkwM2I3N2FmNTEgbGVnYWN5LXRydW5rCis1MTMyNCBlZGQ4M2YxNjI0NTNhYTMwODg4YTY1N2U0MzJiYTZmMjQwZmE3OTU5IGxlZ2FjeS10cnVuaworNTEzMjggYWFmZTFhZDczZWQ3NDliZmZhNjNmZWE4YmIyYzdmNWEyMjhmM2Y0NyBsZWdhY3ktdHJ1bmsKKzUxMzI5IGQ5NjYwZjUxYjA1NmI3NGY3NTRiZWRhMmQxNzU0NDU4ZmE3MzM3OGMgbGVnYWN5LXRydW5rCis1MTMzMCBhNmFmZTBlZGE3MTFkOTk2YjcyNmE1NDhjMDU3OTNlYzU1YjZlOGViIGxlZ2FjeS10cnVuaworNTEzMzMgMmRjNjRkNTcwZThkN2E0NDk4YWI4NTAxMDhjODU3MDljMjc2ZGY5MyByZWxlYXNlMjUtbWFpbnQKKzUxMzM0IGEzNThhZjIxYTU0YTliZDM5ZjUwNmQ3MjkxZGYzNDM4NzlkMTdhODAgcmVsZWFzZTI1LW1haW50Cis1MTMzNSA4ZTg4ZWNiZDQwOGJmYzljZDBiZmQzNTYxZDc2ZGRlZmE0ZjdmZjQ4IHAzeWsKKzUxMzM2IDhmNWI5OTgyYmViYTA0OGI0YmU1NmIwNmI4N2RiZjEzZGYzYzY4OTggcDN5aworNTEzMzcgZTRhNjQyOWMxMjE0ZWRlOTExY2FhNTVmMGQ4MDYwMDU4NDY5YzAzZiBwM3lrCis1MTMzOCA4NDFlMGM4NmUwMGU0MjNmODE3MDkyZTJmZjVjZGFmYTRiODEwMTQxIHAzeWsKKzUxMzM5IGNiNjczZWQ1MDdhNzk0MDI1YmViNGEzN2FmODdkZWYxNmRkMzgwYWMgcDN5aworNTEzNDAgYjJmZTM2YmFjM2ExNjQ0ZTI1YmQ1ZDg2YThkMTQxNTdkNTczMmJhZSByZWxlYXNlMjUtbWFpbnQKKzUxMzQxIDFhNjg5YmUyNzMyOTczMjRjM2ZhM2RkNWQwYjgwOTlmYTUwY2U5ZTYgcmVsZWFzZTI1LW1haW50Cis1MTM0MiBlZGIxNjIxMDA5NzliODc5MjdiZGZlZDE1OGNlYmI5NjQ0ZTA1N2JlIGxlZ2FjeS10cnVuaworNTEzNDMgOWJjMGJjMGFkMWJmZTZjOTA5NmU3YjFjYzJmNDc4Y2E5YTIyYzU4MyBwM3lrCis1MTM0NCAwMTAzNDAxOGU4YjJmODBkOGZkNWM4Mjk4OGQyMzgyYWEzZGZiMzBiIHAzeWsKKzUxMzQ1IDRhYmI0NmRkMmI2MDdmOWVhYTlkYWQ1Njc2ZWFjODkzNzY2OTQ0N2QgcDN5aworNTEzNDYgMWVkZGUyMzQ5Zjc4NDY2ZmJjMDA5YzQxNzIzODY3M2MyODI4N2RlYiBwM3lrCis1MTM0NyBmNjgyNjllZDQ2MWU1ZDYyMDk4YTMyOTUxN2Y1ODk4ZTk1NTYwZDU0IHAzeWsKKzUxMzQ4IDY3ZTQ1NzA0YzA3ZWE1YTA0YWYwZTdiMWJkYTAyZGQ4MTdkZTEzMTMgcDN5aworNTEzNDkgMzAyMmNkNWUwMTAwNDRjM2JhZDFkNmI4MDAwYTAxNTNjNjNlYjRlZiBwM3lrCis1MTM1MCA1YjZmODIxMDFjNDA1YjE3NTZkYzgwMmZmMjIxNTM5NGJlYTgwZjE2IHAzeWsKKzUxMzUxIGE4YmIxYWQ3ZmM2ZmFkYzkxNDRmNjE3MjJjMDg2MDYxMDE4YjMyZDcgcDN5aworNTEzNTIgMGExZjg3YTg1NWIzZTYxNWI3Yzk4MjJhZWUwYzI0NzEwZGM2NjBkMSBwM3lrCis1MTM1MyBmYTI3NTg0NTg2NmM4YTdkNWU1ZTliMGZlNzIzNDc0YTUwNTVkOWU5IHJlbGVhc2UyNS1tYWludAorNTEzNTQgYTg3MzIwZWJkMGU2Njg5NjRiZThhNzQ1Mzk1MzBmODZiNDAxN2ZhNiBsZWdhY3ktdHJ1bmsKKzUxMzU1IDFmZjkzYmE0MDQ1MDg4MzcwZGRmMDRkNGYyM2UzZjYzYzk5YWIzNjQgbGVnYWN5LXRydW5rCis1MTM1NiAzMWI5YTRiNDI1MjhlY2ZhNTFmYTJjZDZiNTBlYjYwYWFiOGY1YzcwIGxlZ2FjeS10cnVuaworNTEzNTcgZGY4N2I2MDU2N2NlYjUyNGFiOWEyMzM0ZTY5MGIzZGNmZTNmZWI4ZCBsZWdhY3ktdHJ1bmsKKzUxMzU4IDA0NWUyMGZmODllYmI3MDkzMjE0MTI3YzY1ZDczMjMwODQwYjA5MDkgbGVnYWN5LXRydW5rCis1MTM1OSA4OWI3MzBiNzE0MzRmOWNlYTQ4NDhhYmM4NjZjYzhlODNjOGNkNGZiIGxlZ2FjeS10cnVuaworNTEzNjAgMjEwYzViNTU3NWNiNWNhMDFkMWEwMmM5YjY5NGRjYmViNmFhYWM3NCBsZWdhY3ktdHJ1bmsKKzUxMzYyIGI1ZDRmM2E3M2RlMDRmNzBlNzVhNTNkZjE3ODRiODdlOWRhMmU1NmIgbGVnYWN5LXRydW5rCis1MTM2MyBmM2RlZTYyNWZjNDgzYTYzZGZlNWY0N2Q1Mzg4MzgyMjAyY2NhYmYxIHJlbGVhc2UyNC1tYWludAorNTEzNjQgNGM2Zjc3YjU2NDUyZDZhNDhjZjJhZWNiNTkwM2NmZDg0N2RmNmQ0MCBsZWdhY3ktdHJ1bmsKKzUxMzY1IGNhNzdkZTM1ZGI2MjBhMTc1MDdkZDczOTBjMzkxOGFhODc2MjdjNDMgcmVsZWFzZTI1LW1haW50Cis1MTM2NiA3ZmI1NmFhZjUyYmJjZWE1NWMyM2E1ZjcxOTMwMTg4NTJkMzc5MzZlIGxlZ2FjeS10cnVuaworNTEzNjcgYjg3ZmUxMWZiN2UyOGFlMjkzZWY4YmRhNmVmOGQ3MTUyODg3ZTUxYiBsZWdhY3ktdHJ1bmsKKzUxMzY4IDBhZDdlODVjOGMwNGU4YTY3ZDcxNTY3ZTY3YzllN2EzNDkzOGZiN2UgbGVnYWN5LXRydW5rCis1MTM2OSA3OWJiZmExZGJkMWJiMGM2YTFmYmFmZjA3MTIwYjU5NDg3MjExMjk3IHJlbGVhc2UyNC1tYWludAorNTEzNzAgMWFjMTRkNDNlYzY0NDFlNmNiMjIwYjMxOGYyOTg2NzM5ODA4Nzg5ZCByZWxlYXNlMjUtbWFpbnQKKzUxMzc2IGM0ZTdiNDA3MGYwNzU0N2ZkYjEzNGQ1ZTZjYjk1M2IzMjY5Y2U4YWMgcmVsZWFzZTI1LW1haW50Cis1MTM3NyBlN2E1YjI4N2YyN2MxYTllZTkwMWQ1MjExMTg4NDU2YTI2ODVlNDAyIHJlbGVhc2UyNC1tYWludAorNTEzNzggY2JiNDM1YzVjMjFjNjcwM2YxOTcwMzhlNzQ3ZjUxNDg5N2Q5YzM4YSBsZWdhY3ktdHJ1bmsKKzUxMzc5IGRlNGVmMTc3Mjc4YmZmODU3ZjcxMTYzZDQ3MGUxZDdmMDU4MWJlOWQgbGVnYWN5LXRydW5rCis1MTM4OCAyNTUxZWI1NjcxYTQxZDhhNDZiNjgxM2ZmMTQ4OTNhOTQxOTE5ODk4IHAzeWsKKzUxMzkwIDYzMjM3ZmNlZmQ5OWVlNGY2NzU3MjJkNWMyNzEwNjU5YWE1ZGQ4Y2IgcDN5aworNTEzOTEgY2ZiMzg0NzNjYTExOTlkOTgzMmIzYWViYzIzNTRhZDYxMTRhYWEwOCBiY2Fubm9uLW9iamNhcAorNTEzOTIgODQ1MmQ1ZWU3YjAzYmMyZWMwNjQ5MDA2NjA4YmQxNDZjMDk0NTc3NCBiY2Fubm9uLW9iamNhcAorNTEzOTMgNGM2NzRhMDdiMjNjMzYwZmY5YjE4OGM4MWFmYWZmZWZhYjVjOWViMiBiY2Fubm9uLW9iamNhcAorNTEzOTQgZDIzYjdjYjE3MDBiNTBlZGFiZDQ1ZDBhZGVmODNhYWY0MzYyMTUwMyBwM3lrCis1MTM5NSAwYjVkOGVhZTNlY2EwNjFiN2ViZGU2MmJhM2E4MDNkNmJmMzg3Y2U3IHAzeWsKKzUxMzk2IGM1NTdkNDQ3NGYwZjRmMDdmOWIwZWMyYWU3OWQ1ODJjMmQ4Njk1ZTYgcDN5aworNTEzOTcgM2ViZjU2MDRmNjMyMGU1YjFlZTJhMzY0NDI5NTM5MWQxZGNkY2I2ZCByZWxlYXNlMjUtbWFpbnQKKzUxMzk4IGI4OGI2OWY5N2FjYzAwNjFhYWNkM2E2OGIyMDk2ZGIzNmQ1ZDEyZWYgcmVsZWFzZTI1LW1haW50Cis1MTM5OSA3Y2JjYjIyYzhiOGIyYzhhNGI2MzYwYTA1YTJiNzQ5MzQwNzBhNWUwIHJlbGVhc2UyNS1tYWludAorNTE0MDAgYTc0NWEyYmQ0OGFmMGI5NGIxZmNjZWQwNDVmNDhmMDA1NjhhYmU4YyBsZWdhY3ktdHJ1bmsKKzUxNDAxIDBhZjRmZmFiYTAzYzMyYjRjYTRjMDRmYTljMmUzMjRjN2Q0NmFlNmQgbGVnYWN5LXRydW5rCis1MTQwMiA4N2QxNTNmZmJiOThiNWE4M2I1ZTY4Y2YyMjBlN2JkNzZmMjBhNTIzIGxlZ2FjeS10cnVuaworNTE0MDMgYjBlMGE1ZWI5MDlmMTk3OWJhMTE0NTAxOGRjOTUzYjhkMzFkODZiOSBsZWdhY3ktdHJ1bmsKKzUxNDA0IDJjNDAyNjc2OTk0NTQ5OTA3Y2Y4MWM1ZjIyZDgyYTQ5YTNiOTM4YjYgbGVnYWN5LXRydW5rCis1MTQwNSBiYmVmMmVjZGVlMzNlYmI4MTkwMzMyMDk1ZjhkYTk0N2QzYzA2MzQ3IHJlbGVhc2UyNC1tYWludAorNTE0MDYgYmRlZTQ1ODg4YjY0MGM5NTYxZWQzYjhlNGVjZGM2YjAzZjhkNGYyMiBwM3lrCis1MTQwNyBkMjQwY2U1Njk2ZjlmZThmODU2MWE1NWZmOGQxM2RkMjgxNjI2MzlhIHAzeWsKKzUxNDA4IDEyYzQyZmY5OTQzN2JmNzJhZGU2NzkyNjcwYmQwYjhlYmRlMTg3MmIgcDN5aworNTE0MDkgODI3MTdiODQ4ODhlMDQ2YWFiOWNlMzEwOTNmNDVmMDVmMzQzNTRhNSBwM3lrCis1MTQxMCAwZjEzNWFmZmFiZjJjN2FmNDE2NzM2YzFiMTI0ODdiYWJlZDQ0NzllIHAzeWsKKzUxNDEyIDU5OWFiYzMxZjc3MGFkNzVhNzZjZjc2Yjk3N2U1NTJjYmVhZjlmMWMgcDN5aworNTE0MTMgOTYzNDk2Y2JmM2QzYzBmMWNjZTNmMGZmZGU2MmY0NTAwNjEwM2E2YyBwM3lrCis1MTQxNiA0NDYyMmViNThhMjViNmFmMDYxODgwZmNjMDU3YTFkNDU4NTE5Yjc1IGxlZ2FjeS10cnVuaworNTE0MTcgNWIyYzFiNjVkMzVlZWE5OGUwNGE0MTg4M2ZlMDIxYjExOGRmYzRhZSByZWxlYXNlMjUtbWFpbnQKKzUxNDE4IGMzMzE5MmUyYzI1YjE5NGZkY2I4NzJhYTQwZDFkZjJiOGFiYTY1NGQgcDN5aworNTE0MTkgMTU0ZjI1NmZmZjQyOTk1ZDlkYTEzZDc2NzRiMzMxYzRhYjI4ZjEyMSBwM3lrCis1MTQyMCAyMmMyZTI1ZWQwZTQwYmVjY2NkNmRhMWYwMjkxOGEyYTFhZWNlM2MwIHAzeWsKKzUxNDI4IDVlMTQzOTQ0NzcwYjQxY2IyNGVkMmMxOWQ5ZTU1ZTE5NjQwYTM4OTMgbGVnYWN5LXRydW5rCis1MTQyOSBlZWRhMjcwNDEzMGVmNTBiMDczZDllOGI2MDg0NDFlYmVkODUyMWY1IGxlZ2FjeS10cnVuaworNTE0MzAgNzNhMzI5MWM1OGRjMWVlYjRlYzY1MzVmNjJmYTQwZWM2YjAyMzJlNyBwM3lrCis1MTQzMSA0MGJiZTY2OWIwODllZmE3MGQ2YTMxZDVjMTU0ZDQ1OTM5ZDdjYTI0IHAzeWsKKzUxNDMyIDhkZDU3YzUzY2NmNmIyOTNjMzRkZGY4MWNkMzM4MGMwNWVjYzg5YTggbGVnYWN5LXRydW5rCis1MTQzMyBkYjQyZTg3Yzk3NzZmNzAyNDczYWE0M2I2ZThkNDQ4NGJiOTA3ZjVmIGxlZ2FjeS10cnVuaworNTE0MzQgMmZmZGVlMWMzODg0NGFiMDEyYjZmOTIzZDQ1NTI0Y2VjYzdiZDc3YSBsZWdhY3ktdHJ1bmsKKzUxNDM1IDZmMTAyMDc0MzA3NzRmMTM4NmMwNmQ2NjdiNTU0ZGU5OTVlODA4NjEgcDN5aworNTE0MzYgOGRkNzE1N2QyYTIyYTE5MTAyZTU0M2JiYmQ1MjU5NjFiMWZhNWFiNyByZWxlYXNlMjUtbWFpbnQKKzUxNDM3IGNmNDJhNDRjNTQ5ZWRhMDEzOWJhZDQ1ZTllMjJkNTE4MTg0YTEwMjMgcmVsZWFzZTI1LW1haW50Cis1MTQzOCAzNjc0ZjIwYWM3ODFmNjU3YzdmYmU2Y2U0MzQ0NWI3ZmJjNDUxNGU2IHAzeWsKKzUxNDM5IDE3ZjFkZjE1NTNjOWFlNDI1ZDJhYmMzMTU5NGMyNTEzMmZhODA4MDAgbGVnYWN5LXRydW5rCis1MTQ0MCA1MTFkYjcxYjVjMTQ4OWEzODVhYjYxYjJkNDY3Y2QyYzI5YzE2ZGU2IHAzeWsKKzUxNDQxIDUzOTE0ZDU0MGE2NzgwMTg2ZmM5N2FjNzFiYjI2ZDJjNWE4ZWNjMmYgcDN5aworNTE0NDMgOWRlZTgxZGNiOWI0MTliOWNhNzcxYWE0NGVkZTJiNWI2MGE5YzA3YyBsZWdhY3ktdHJ1bmsKKzUxNDQ0IDc4M2M1ZTI4MDNmOTU4MGZjODI3NmEwYWNhNzNlODg0NzU4NTI2NGYgcmVsZWFzZTI1LW1haW50Cis1MTQ0NSBjNDBmZTg2NTYzZmM4ODFjZWE5ZTIyMWMwZWFhZTFjMTVlYzkwNzEzIHAzeWsKKzUxNDQ2IGVkMGRiMGQ2Y2E5OTM4MWEyODg3Yzg4MzUzNDM0OGMzOTE1YjI5NzQgcDN5aworNTE0NDcgZTYxYjIyYmY3YWI0NzcyNTcwYzk3MWE4ZWZhM2UzNTMzNTMzNWEyZiBwM3lrCis1MTQ0OCAwMmJiZWVjMjcxNGYwNDkxYjA1MTU1NmQxMjZjNTgwNWU2NDBlNTc3IHJlbGVhc2UyNS1tYWludAorNTE0NDkgMzk4MjQ3NWM1MTQ0YmJjOTllMTk4MmI2Y2NjYTRkZTJmM2MwMjAwNSBwM3lrCis1MTQ1MCBlOGE2NWJiZDZhMjkyYzg3NDhlYjIwNDU2NjU2NTMzNjcyMDRkZTcyIGxlZ2FjeS10cnVuaworNTE0NTEgM2NiZWQxM2M0NjRkOWMxZGU0YzVlNDQ3Y2QzZTk2NzljYWY4ZTEwMCBwM3lrCis1MTQ1MiBlN2IxYTNkYjFmZTNjZGJjNzYwZTlkZjU3YmQxY2NmZjAzYTU5Nzk4IGludF91bmlmaWNhdGlvbgorNTE0NTQgYzZkOWZhODFmMjBmZGNkMDJjMzQzYWE2MjAyNGUwMTVkNTEzYzYyMCBwM3lrCis1MTQ1NSBmMThkNzc5YzdjZWI2NzJlZTM3ZTc4M2ZkMWZlYTRhY2VkYWRlY2U4IHAzeWsKKzUxNDU2IDVmZGRkZGQ1MTZjYjdjYzNjYThiZGU2Mzg2M2NlNDM4ZmRkZjJmNmEgbGVnYWN5LXRydW5rCis1MTQ1NyBjOGZmNDM4MDJmMzE0YzdkNmU4ZDI4YmQzOTM3ZjQwYTM3YmJhMDgyIHAzeWsKKzUxNDU5IGU4NmMwYjI5YjRhMjZhNDJlNGNlNjQ2OWYyY2EzZTliZmNjMzA5NWEgcDN5aworNTE0NjAgNzE5YzVkYjdiZmFkNDVhN2ZhOTE3ZDE1YmE1NjMzMWZhMDU1MzQ5NCByZWxlYXNlMjUtbWFpbnQKKzUxNDYxIDljYzZhNTQ4ZGVjNDk0M2VjMmRjNjI2NmIwNzMzM2JhYjg0MjU1MGEgbGVnYWN5LXRydW5rCis1MTQ2NiAyZjZiNDJhZWFkOTRmODFjZTJlNjBlM2YyYWNlZmU4ZjM0YTk4ZGJlIHJlbGVhc2UyNC1tYWludAorNTE0NzIgOGQ3MWY5YTZjMWMzYTJlYWYzMjc4MTNiYWRmMjBlOTRiMDZiYTVkOCBwM3lrCis1MTQ3MyBkNjVlNmRjZmRjYjU3ZWJkMDEwOTM5ZmJlMTk4YTlhNGNhZDMwMWNjIGxlZ2FjeS10cnVuaworNTE0NzQgOWYyNzgwMDkwMjZkYjM4MzRiNWUyZjA2MmQ0NzBmZTdhNDg1ZjJiNiByZWxlYXNlMjUtbWFpbnQKKzUxNDc2IDVmZjY5NmYyYTdhNWFhMjU3Nzc2MTE1ZDQ2MTM3NzI5N2U3MDMyOGQgaW50X3VuaWZpY2F0aW9uCis1MTQ3NyA0NGRhM2QyOTcxMDc5YmJmN2IxNjkxNGM0N2FkYTg1MGRiOWU1YzdhIGludF91bmlmaWNhdGlvbgorNTE0NzggZDkxNTg1YjJjZGMxMDA3OTc4ZGJmYmJiMDU0NWExZGNlMzNiZmY2MyBwM3lrCis1MTQ4MiAzZWE1Mjc1ODc0MTMxZTA4MmUxMjM0N2VkYjA1OTM4ZjU4MmNlMzhhIHAzeWstbm9zbGljZQorNTE0ODYgZjBmNDk3YTA1MDRjY2Y1MjVmMjJiZWZkNDY4MDA5NjE5ZWRhNjdjZiBwM3lrLW5vc2xpY2UKKzUxNDg5IGY4YTkwZDE4MjVjZTAwMmI4MTFkMTU0YjQ0YzdlOGY5NDE4ODVlMWEgbGVnYWN5LXRydW5rCis1MTQ5MCA1M2RmM2VmZjk0ZTNlNjE4MmVlOGE3ZGJhOGFlODkzZGM0NjRjZDViIHAzeWstbm9zbGljZQorNTE0OTIgMTg0ZjdiMTZkMjAzNmY2YzRlNDU2ZDQ5MTc5MjUxOTM5MjBlMTdjMSBpbnRfdW5pZmljYXRpb24KKzUxNDk0IGE1ZjM0M2Y3MjQ3MTM1ZmExODNlODUyY2EzZTI5MmQ3M2M1N2UzZjAgcDN5ay1ub3NsaWNlCis1MTQ5NSBjZTVlNDVlNGM1ZDA2OWNkYTBmNDMzZDM4ZWQwOTc4ODhlM2RlOTI4IGludF91bmlmaWNhdGlvbgorNTE0OTcgYTU5YmJmZDgwOGQ5NzI3MDg2YTFhMGFkYTM4YjhhZTI2ZTVhMjFmMSBsZWdhY3ktdHJ1bmsKKzUxNDk5IGU2ZTFiNDAzODI3ZTVlNTc5NDRlZWQ4YmRmOTM4MGE1ZjIzZTMyYTYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTUwMCA4NzgyY2MwZmI1ZTBmZWMwZThhYzdkZmQ4ZmJmY2FmMTdhM2ZlNjkwIGludF91bmlmaWNhdGlvbgorNTE1MDUgYWM3ZjM5M2ZkMjliMzQyZjAzNjE5MDEzOWZjYmJiNTRkMzcyM2YwNCBpbnRfdW5pZmljYXRpb24KKzUxNTA2IGQxNzQzYjA4MjczNDcxNDRhZmUzODQ1ZGQxY2RiMmJmYTJmNDE5NDcgaW50X3VuaWZpY2F0aW9uCis1MTUwNyBiY2M0MTQzNzhmMzIwN2NjZDUyZDI0OGI0MzI5ZjhjNTFjM2E0OTVjIGludF91bmlmaWNhdGlvbgorNTE1MDggNmQ0MzVkYThiNzliMzE4NmFjMDRkNjE3ZTlkYzVlZDk0ZDlkNjA0OSBpbnRfdW5pZmljYXRpb24KKzUxNTA5IGYyOGJlNWRiNTAwNWJhOTJiZDgzZTQ2YmEzMWY1ZmVmZjRlNjUzMjUgaW50X3VuaWZpY2F0aW9uCis1MTUxMSAwNTBmYjlhMDk3Y2Q3Y2YwY2UwODEwOGZjNDY0MDE4Y2ZhNzgxNmU0IGludF91bmlmaWNhdGlvbgorNTE1MTMgNDcyY2E3MDA2ZjcwZjJhM2NhZTRhMDk2MmJmMzQ1OWJkMWE1M2RlZCBwM3lrCis1MTUxNSA0NDliYTBlZmI2YmQyNzkxMWQ5YTViYmRlOTc1M2IyMjgyNWUwODhiIGxlZ2FjeS10cnVuaworNTE1MjIgZTI4MDMxYWZlZmY1ZjJmYThiYmM1NjBhZTQ4MmQxYTI5NTJmY2YyYyBpbnRfdW5pZmljYXRpb24KKzUxNTI1IGQ1ZmE0YWZkNjYyMGU2ZTY3ZTAxYzU1YjQzMDhiOThlZmVmNjU0N2IgbGVnYWN5LXRydW5rCis1MTUyNiA1Y2NlMDI4ODc0YmM3OGUxMjMwYTk0YjQyNzc3ZDU0YjM0OTFiNTMxIGxlZ2FjeS10cnVuaworNTE1MjcgZjQ1NDUxODE5NDkxYjQ2NWVjYTc2MTQ4OTVmMDg1OWYzNWIwOGE0YSBsZWdhY3ktdHJ1bmsKKzUxNTI4IGFhYTc0NWZjN2I3NjdlOTcxMDFlN2UwMjgxOWJkNzBhNjkyYzc5N2IgaW50X3VuaWZpY2F0aW9uCis1MTUzMCA5ODExODFkMmE0ZmUwNzU1N2QzZTg3MjYyMzI4ZTE5MGU1MTNkZDhiIGxlZ2FjeS10cnVuaworNTE1MzEgM2RkNjFmZmQwNDllMTU3ZTI2Mjk2NDQ2ZjMyZTU1MmUxZDIwNWUyYiBwM3lrCis1MTUzMyAxM2Q1ZTVmMGU5OTNhYzdhNjRjMzdjOTIzZDQ3YTQ0Zjk4ZjJkNzg5IHAzeWsKKzUxNTM1IDhiOWVjMzQ0YmVkMmU1NzBmZDZlMmE0ODIyYWM1Y2YxMDZhOTE5MWQgcDN5aworNTE1MzYgY2UyM2Q4NjczMmIwYjg5YWYyMDQ5ZmRiYWViMDg5ODY0YzE2YTVlOCBwM3lrCis1MTUzNyBkY2VlYTQxZjRhNmRhZWEyMTI4NWRlODg3M2RiMTg5OWQyMzVhYTJhIHAzeWsKKzUxNTM4IGVmZTNmMmMwZGE1ZThlZDUyYjYyNThkYjhiYjNiMDE1ZGRhNmM2ZmUgcDN5aworNTE1MzkgNzQ5NmY5NDc1NGZmMGViMTgyZDY2YWZiODRlNjNhMjhkNjBiNTQ0MCBwM3lrCis1MTU0MCA2OWY2MWY5MGM0ZmMwOGE1NTY0ODgwNzYwZjlmMGE1ODZmZTJjMmY3IHAzeWsKKzUxNTU2IDFhMGY0NDdlNjBhOGFmYjM2NzJlYzAwMzZkMzBkODVmNzQ0NDU3M2IgaW50X3VuaWZpY2F0aW9uCis1MTU2MSAxY2Y1Mjg1YzhhYjk0N2Y1ODVhNWQzZGVkMjU3NGYzM2NlZmYxZDgyIHAzeWsKKzUxNTYyIDUxY2RjMzk4ZTBiMDYzZTg2NWM4MzA1MzgzOGEyZDc3NjAzODFjMmUgaW50X3VuaWZpY2F0aW9uCis1MTU2MyAzMTdkY2M1OTBmZmQ4YTI2YjY3ODlhYTkyOGZhNDdlZWNjYTZjYjdlIGludF91bmlmaWNhdGlvbgorNTE1NjQgZTRkZWVhOTM4ZGVmMDgyYWZkZWQ3MDg2ZmEzNmIyYmQ1YmNjYjMxYSBwM3lrCis1MTU2NSBhODhiYzNiYWQ2NTFiM2FmYWI2OGVjY2Q0MTc1YmRlMzRjZjUwNTdjIGxlZ2FjeS10cnVuaworNTE1NjYgYWRiZmQ4ZDU4NTFjYzYyYjU4YjAxMzJlYzIzNDRjOTUxY2EzYmU4ZCByZWxlYXNlMjQtbWFpbnQKKzUxNTY3IDI4MGM2ZGIzMWM1YTNkMjAzMmYwYTkzZTZjYzVkOWQ1NjIyNmZjMjIgcDN5aworNTE1NjggOTM0OGVhNjNiMDJkZmRlYzAzNzJmOWM2ZjZjZGE0YWRiNjUxZWQ3YSBwM3lrLW5vc2xpY2UKKzUxNTY5IDA4MDA1YmE2Y2ViOTMwZGM3MzdmNGZiMTJhMmVmN2RiYTFkYTIwMGYgcDN5aworNTE1NzAgNTIzZTZjY2U0MTg3MTUwZGQ5YTI3YjQxYTVlZjdmOWI1NzI2YWZkYiBwM3lrLW5vc2xpY2UKKzUxNTcxIDdlZDVjZTg5ZjI2YWU3YzQ5NWFmYWU1N2U3ODgzNjE4YTNkYTUzNDcgcDN5ay1ub3NsaWNlCis1MTU3MiBlYmFkNTljNzIzM2UzYTgwNWE2OWFjMzkzZDRjODE3NzViZmJiYjk5IHAzeWsKKzUxNTczIDdiYzQxOTJhNTI3OGM1OGJjYTk1Y2ZlZDU0MGYzYTM3Nzc3MDVhNjAgaW50X3VuaWZpY2F0aW9uCis1MTU3NCA4NDMzNTc4OGQ5Y2IyMTI2MmI3NTdmNDIxZjEwMTA1ZGNhNGZhMTMyIGludF91bmlmaWNhdGlvbgorNTE1NzUgZTVlYzFhZGIwNjFmNWFiNTgzZDI2MWFhNzZjOGU3NzNiMWY5M2I1OCBwM3lrLW5vc2xpY2UKKzUxNTc2IGJmNDJjODFkYjgwNmVmMjEyZjI1YTBhOTBlZGViNTBjOGY3NGIyNTAgcDN5ay1ub3NsaWNlCis1MTU3NyBhNTA0OGM4ZDhmMzMzMmFiN2Q0NDZhY2RhODAwOGI4YzUxYTI2MTk0IHAzeWsKKzUxNTc4IGEyNDNhNTBkYTIzYWUyZWY1MTBiNmNiZDBlMzk1ZWU3YzVhZTRmMzggcDN5aworNTE1NzkgZjllNzU2MGZlMDBkMjE4OTg5NjM1ZjA3NWE1NjIyOWFiMzdiYzRlMCBwM3lrLW5vc2xpY2UKKzUxNTgwIDc2YTlhNTEzMWFhZWM5NjM1NGE5MjdhNjhhZDkzMDhhZGFmMWU5M2UgbGVnYWN5LXRydW5rCis1MTU4MSA0NGFmNGIzN2Q1ZmY0MGEyZTdjY2VlZGYxYTk1NGEyMzU3ZGM0NDgzIHJlbGVhc2UyNS1tYWludAorNTE1ODIgMjZkMjk1ZTc5YWU4NzE2MzM3MTg4NGQxYWU0N2ZkYWU2MjFlMzBjNyBwM3lrCis1MTU4MyBlNjg0Zjk3YWUzZmFmYjE0ODBhMDg1MTJkYWNmZjVjMzkwYWY5MGZmIHAzeWsKKzUxNTg0IGYxNmE1ODNjNWIwOTA0NWQ4YTJkM2I0MzQ3N2QzODk2OWIyZjAxMzAgcDN5aworNTE1ODUgNGEzOGNkMWExNjA2MWIxZjNlMjA1Y2JlNmNiYTk3MWFhOThiOGY1NyBwM3lrCis1MTU4NyBmNTFlZGJjZDVjYzAwMDhiMDMzYTEzNTI1ZWU4YzRhNTBjZjc1NmEyIHAzeWsKKzUxNTg5IDkyY2YzOTc0ZDMyZmJjZWU3NjE5YTNhMDNhNWJiNjFkNjZiNzkzY2QgbGVnYWN5LXRydW5rCis1MTU5MCBlZGVjNzk2MmFmMjg3ZThjMGZhZTU2ZWFjMTY0OWVkMTJjODM3ZTlkIHAzeWsKKzUxNTkxIGUwNzZjY2E0ZDlkN2EwYzljYzNjZjliNGVmNTM0NTE2OGEzZjRhYjggcDN5aworNTE1OTIgZGJiNTk1NGZkZGNjY2IwMzk3NzUzN2RmNGI2MDY0OTliMTk4MTNjNiBwM3lrCis1MTU5MyBmMDc4ZTdlNGI5YTE1MDYyMjEzOWFjZjY3OTIxZGMxMTIwNDNmMTg3IHAzeWsKKzUxNTk0IGZmNjkzYTg2MWI3MDRmZGUxNzUwZWM5ZGRmMjE3ODNhZDc5MTQ1ZmMgcDN5aworNTE1OTUgZjgxMTVmNjg2ZTQwMTFjNjhjMTQyYTNmNzczMDgxYWJhY2EzNmUwMyBwM3lrCis1MTU5NiA2OTI3YWNiZmEwMWI0N2ZhYmE4NDQyYzIwMGYyNzY4NTA4MzU4YzRmIHAzeWsKKzUxNTk3IDRlNWM5NGQwMzY0OTNkZjcwY2QyZjQ2OTAwYmM1ZWZjODc2OWU5OTAgcDN5aworNTE1OTggZWIyZjcwZmRiZjMyNDBiOTlkMjYwNTA2YWVlMmFhZmEzOWRmNDA4ZSBwM3lrCis1MTU5OSA3ODU2NGUyNjlkMjMwYjJmNTM3NzdlMzNiYjcyODE5NDdlMjMzNWQ3IHAzeWsKKzUxNjAwIGY4N2EzZTYxODUzZDcyYjFkMTMzOTkyZjk5MWUzOTdiMzFhYWM4ZTggcDN5aworNTE2MDQgM2JmYzhiYjRlNzI2ZjBhNzM2YzljNTAyY2I4YThhMzVhOTNlYzk2OSBsZWdhY3ktdHJ1bmsKKzUxNjA1IGNhMmIyY2MyMzA3ZTQ0MTNmYTJiZmY1YjZhYWIwOTI3MzkwN2ZjNzkgbGVnYWN5LXRydW5rCis1MTYwNiBmNDk3NjUwYTE0OTA2ZjI3NjM4ZGZjMzMwZGIxYWIzMDVlNmQzZmVhIGxlZ2FjeS10cnVuaworNTE2MDggOTE2YWU2MzZhODNlNGI4MDAyYzA3MjRiYzY4YWM3NGQ4NDM4NjJlYyBsZWdhY3ktdHJ1bmsKKzUxNjE2IGJiMDczODA1ZmJhYmEwMTE1Mzc3NDg2OTI3YzI1ZDAxY2EyOWE2ZWEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYxNyA5MDQ5NTgyMTY4MTMxZDk4OWZhNWMyZWM2MWUzNmE3YzBiMGI3NTdiIGxlZ2FjeS10cnVuaworNTE2MTggNTU0Mjc1OTI1NGMwYjI4MGNkYmZlNjA1NWI1YTEzODI5NDkzMDIwZSBsZWdhY3ktdHJ1bmsKKzUxNjE5IDFiNzM1YTlkMjEwNzEwZGU0YjhjNGFhYjM0MDIwOTc2Y2FlOWQ0NzcgbGVnYWN5LXRydW5rCis1MTYyMCBhY2E3MDlmMzNhNmExNjhiMTk5ODY0NWRjMTdiNGY4OGMxZmQ3ODg0IHAzeWsKKzUxNjIxIDNkNzc5OGZlYWZjNTk4ZjllYmJkNzYxNGI5NTljMjE1OGM3NGQ5N2EgcDN5aworNTE2MjIgNmMxODRmYTU1MTcwYTI2ODZlMTkzMjMwZTdhZWE3NGU0ZDlhYjA2NSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjIzIGViZWIzNGFkZDRhNjJjZGNlNjU4OGQwNDkxZmM2OGE3Yjc0Mzg0NjQgcDN5aworNTE2MjQgZDBlZDdkYmFhZDU2ZTBhMGFlYTUyZmFiNjg5ZmQ4YmQ2ZGVhY2YwYiBsZWdhY3ktdHJ1bmsKKzUxNjI1IDBjYjllNTdlYzQwNjQ3OGM3ZGYzYjZlMDVhZDc1NzFiMjM2NDQ2MDQgcDN5aworNTE2MjYgYzRkOGMwNTQ2MTZjMDA5ZDBhYzAyNzk1M2Y4MWU1MzI5ZWRlNmExNyBwM3lrCis1MTYyNyBjMDkzNjMzYmViZWNjZmUwNGU5NDgzMjViNjE2MGM0Y2ZjYjFjMWRjIHAzeWsKKzUxNjI5IDU0MGM5NTkyNzI5ZTc0ZDgyYWQzMzFmNjc0M2VkNDk1MThhYzJhNzEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYzMSBkMGI4M2M0NjMwYzA5MjRkZjY2MTA2MzU0M2YzYzU0NzhjOGMzNWFjIHAzeWsKKzUxNjMyIGRhM2E5ZjQwMjg4NjA2NThhYjc5YzZkZTM2YjMzNjZiOTlhMTQ3MmIgcDN5aworNTE2MzMgNGY3NmY2M2EzMmYzNmJhYWYxNzE3OWFhNmNiZTk0ZjJmYjEyZjMzZiBwM3lrCis1MTYzNCBkMTRmMTBhNGQ5ZDQ2NjBkY2UxM2M4NzRiNTlhNjIxMzUxZDE1ZWRlIHAzeWsKKzUxNjM1IDA1YWM5YzQ5MjhhNDhmMTI5NGNiOWVkZmM5ODExNmQ3MTY1MGVhZTggYmNhbm5vbi1vYmpjYXAKKzUxNjM2IDZlMTk4YzY1NWVlYWFjZjM1NTkwNzUxNzJkYjQ4M2ZmNjIzYjlkZGIgYmNhbm5vbi1vYmpjYXAKKzUxNjM2IDkwYThlZTZjM2E4Njc2Y2M1Yjk0M2IyYjFkZWJjM2NhMGYxN2JhZjEgYmNhbm5vbi1zYW5kYm94aW5nCis1MTYzNyBiNTYzYjEyZTRjMDAzNjM5MmM0ZGI4MTUyOGU4OTBhYzZkOGJiYTM1IGJjYW5ub24tb2JqY2FwCis1MTYzOCBmZWYwMmRiYTliNWYzMjY4NzFlNjI3NTQ1YmM4NmYxZDJlNmNiMDMwIGJjYW5ub24tb2JqY2FwCis1MTYzOSBlYzQ4MDU3YTM0YjYwMThmNTdiYmY0ZjQ5NzQ2NTIwMzU1ZjI5NzM0IHAzeWsKKzUxNjQwIDA3ZWI4MDI2NGY2MTUxMWRlZjU3MjhkZjVjNmE3NTdlZDY4ZDliZDYgcDN5aworNTE2NDEgZjk3NDg5MGM2Y2QyYTdjNTJkMzAwN2QxZDZjYjMxNjhkNGNmMTFhZiBwM3lrCis1MTY0MiAyMThiNmU5MDBhOGQ0NDI1YmQ5ZDkyYTU4MjA1YWUzODgzM2M3NzZmIGxlZ2FjeS10cnVuaworNTE2NDMgNzU5MTIyODE1MWQ3MDJlYzUzM2JmYmFiYjhhMzgzNWU2YjliMDlhMSBwM3lrCis1MTY0NSA4OTNhZGQ1NTQ1NDE5NjcwODAwZWIxMTc2YjhkYjRiY2ZmZDM1MDA3IHAzeWsKKzUxNjQ2IGFhNTk0NjZlYmQ5YzE2MTYxYzUxYzExNDAwNDc0MTFkZjQxMzIxZjkgcDN5aworNTE2NDcgNzU0YTcyOWU5N2FmNWFjNjQ4NWE1ZmE1OGVlNGE4OWJkZDlkNDJmMCBsZWdhY3ktdHJ1bmsKKzUxNjQ4IGYwYjhmNzExODVmNTVkNmZkOGNjNTVlMmFlOTk5MTcwNzk0NzFhNTYgcDN5aworNTE2NTAgNDE2MTA3YTM1MTg1M2Q4ZWIzM2Q1ZmE0ZmM5NjE1MzM5NWI3OGIwZSBiY2Fubm9uLW9iamNhcAorNTE2NTEgMTZkNDg2YzdkYTgyNDVjMzU2MGZjNDNlOTk5ZDZhZWI5YjVjZjI1YSBiY2Fubm9uLW9iamNhcAorNTE2NTIgOGY3MzIxYWI4ZjQwZjczNzc2MmFjMDMyMDU4ZWUzMWM1OGUzNzIxMyBiY2Fubm9uLW9iamNhcAorNTE2NTMgNGQyM2U5YTEyNzEwMzg1NWQ4MzM3OWI0MDFjYzE3ZjYxZGRmM2RmZiBiY2Fubm9uLW9iamNhcAorNTE2NTUgZjEwZmVkYmU2YzEzOTYxYjhmYjYzYjA5NTYxNzU0ODAwNzVmMDdjYiBiY2Fubm9uLW9iamNhcAorNTE2NTYgNWIwMmViNWY2NWYxYmZmNmE0NWYwODg2ZGQ0NDgxOGE3ZmM1MWM4ZCBiY2Fubm9uLW9iamNhcAorNTE2NTcgMzU1NDk2MmQ4YjIxZDdlNTY1Njk1YWI4OGQzMmMwZDMxOWMyNjMzYSBiY2Fubm9uLW9iamNhcAorNTE2NjMgZTg1ZDViMjBlYTYwZWQ0MTgxMjZiYjc3YTBkNTcwZjg5MGQ1ZTViNCBsZWdhY3ktdHJ1bmsKKzUxNjY0IGE4Mzk1N2M5MWZkYjliYjc3MTcwNzBmOWIwNzJiNTE3YTc2MzVmYTUgbGVnYWN5LXRydW5rCis1MTY2NSAxZjE3MDU3MDU4OWVhNWZiNTAzNjAzNjM5MWJiMTMzZTk0ODBjMDIyIGxlZ2FjeS10cnVuaworNTE2NjcgNjBjMTE5MzQ3MDllYzc0Mjc4NGEzZjJhZDIwMGFjZTFhZmE4NWE2MiBiY2Fubm9uLW9iamNhcAorNTE2NjggYmNjYzkxNTgwOGQ4MDFmZmFhOGE1MjhiZWYzZWM1Y2U0NzA1ZmVkZiBiY2Fubm9uLW9iamNhcAorNTE2NjkgZGQ1MTRhMTc3ODQ4YWU2ZTUxNWRkNjc0MTkwMTU2Y2YxMjRhY2UwMCBsZWdhY3ktdHJ1bmsKKzUxNjcwIDg5MTc2ZTY1YWRkMmM5ODViMDAzNWQ5MmQ2YjBkYTlhNWFiN2U3ZGEgcDN5aworNTE2NzEgNzIxYzM5NGViMGJhMzNlOTlkODAyOTU3OTA4NmNjYTM2OWUwNGUzYSBsZWdhY3ktdHJ1bmsKKzUxNjcyIDU2MjZiMmVlOGNlNGNiYzVjNDEzOGE1OTdjZjA2ZDE0OGNlY2Y2MDkgYmNhbm5vbi1vYmpjYXAKKzUxNjczIGFhNjQxZmIxNzY5OGVkMzI3NzkwMzkwZmNkMzVmOTFmNzkzYjEzZTMgYmNhbm5vbi1vYmpjYXAKKzUxNjc0IDgyMDgxYmE5YTVjNTA3YzA0OWFiNzY0MTg4YjVhMDk5MmNjODdjMDUgbGVnYWN5LXRydW5rCis1MTY3NSAxMWY3MDUzMDUxZmY5ZWFkZmNjZjVkNjY5OWM0MDY3YTIwNmYzODMyIHJlbGVhc2UyNS1tYWludAorNTE2NzYgNGE3OTA2ZDhkZTg2MTA3Y2ExMDBjMDZkNzMyMjI4MWNkZTRmOTMyOCBsZWdhY3ktdHJ1bmsKKzUxNjc3IDcxZWEyYmU3ZDkxMjZhOGJjYWFlM2JmNjk1OTUzMTdiZjNhYzkxNWIgbGVnYWN5LXRydW5rCis1MTY3OCAxODRjMWRiZjcxOTRlNDA0OGExYjJiODExNThkNWNmYjFjMTBhODNlIHJlbGVhc2UyNS1tYWludAorNTE2NzkgYmE4Mzc1NDVjYzJmYWYwNzhjM2M5ODQ3ZmI3ZmRiOTliNTM4OWViZSBiY2Fubm9uLW9iamNhcAorNTE2ODAgYTY2NmQ3NWYzZGZmYzM5MzRlNmNlNWQyNTM0ZGIyYWNlYzI4NDQ2NCBiY2Fubm9uLW9iamNhcAorNTE2ODEgZDE5ODZkMzY5ZmVmYjg4OWI3NTg4Y2NlZTkzZTY3NWJjOTYzYzZhOCBsZWdhY3ktdHJ1bmsKKzUxNjgyIDg0MThmMWI5MDkwZTg3ZWVhYTlkM2VmYTMxNTU3Mzk0OTNhZTRlZmMgcmVsZWFzZTI1LW1haW50Cis1MTY4MyBlOTA1Zjc4ZWFmY2E1NzIxYTY2MjFlYmY4M2M4YWQwM2YwNTc1YzQ0IGxlZ2FjeS10cnVuaworNTE2ODQgMTM1MmFkOWFmY2MwYjhkZjNkMjBhYTNiMjZkYjllMzE1NzgwMjE2MyBsZWdhY3ktdHJ1bmsKKzUxNjg1IDJmMDg2ZDU4Y2ExMGY3ZTExMTMxYzdkOGM5Y2QwNjI3MWQwMzA4ZjMgbGVnYWN5LXRydW5rCis1MTY4NiA4ZmUxNjg3MDMzNDhiNzRjOWFiYmUwOWY1NjhjNTVmNmZmNTYxZjJkIGxlZ2FjeS10cnVuaworNTE2ODggNzY5M2I2OTkzZGRhZjNmODAzMDE3Zjg4M2NiYTZlODg2NDc0ZmY5ZiBsZWdhY3ktdHJ1bmsKKzUxNjkwIDMxNGM0ZTdhMzZkM2VmM2M2M2Y5OTZkZWFlMjgxOTk5YWViYzVhMDIgbGVnYWN5LXRydW5rCis1MTY5MSAxZWM3ZWYwZjNiOGQwNGY0Y2JkMWQ0MTQ5Y2FhYzM5Y2Y5NTQxODhkIGxlZ2FjeS10cnVuaworNTE2OTIgMjExOTdjYmVkNTFkYWM4OGYzMWQ0NTdmNTVhYzQ1NGRhODQ2NWZmMCByZWxlYXNlMjUtbWFpbnQKKzUxNjkzIGFhOGZlZGY2YmIyNDhlZGRiM2ZkMWY3NGNjMzM1NzJhZDZiNDIzOWMgbGVnYWN5LXRydW5rCis1MTY5NCA4ODMyYjhjMmZjNDk5ZjQ3NjQ5NzE0Nzc5ZTk0OTEzZGYxN2MwMjBmIGxlZ2FjeS10cnVuaworNTE2OTUgNGNlYzQ1YmQ2NjYzOTgzZWUyZjc2YzQ5NjZkZWY5MTdjNmU3ZDQwNyByZWxlYXNlMjUtbWFpbnQKKzUxNjk2IDA2MzMwZDBiNDY0YWYyNTMzNWQ3MTE2ZDZkOTNiYWZhZGYzNmU0ZjQgcmVsZWFzZTI1LW1haW50Cis1MTY5NyBjYjY2NDJkZWQ0ZTc1ODEzMmY2ZDU5NTA1MDc2OGY2ZTM0MTE0MDVmIGxlZ2FjeS10cnVuaworNTE2OTggMTAxZTA0YTRmNDAzYWFlNWM1ZTc0MzdjNzFlNDIxNGRhY2E3MjY2ZCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNzAyIGM2ZmVmOTQ0YWQ5NWRlYWZkMmFmMDY4MDdlN2NjMjEyYTdmZWE5MjcgcmVsZWFzZTI1LW1haW50Cis1MTcwMyA1ODk5ODBjNzgwMjU0NjA4YWQzM2FiNDU0ZjlhZTRiNzExNzhkOWE4IHJlbGVhc2UyNS1tYWludAorNTE3MDQgY2ZiNzdmZmYwMjQwMjEwODJhZDgxMWFkMjI0YWY3MThkYzEyNjE4ZiBsZWdhY3ktdHJ1bmsKKzUxNzEwIGFiY2E0ZTYyNmNiNWY2YThiMjYyOTk2MDZjYWEzNjcyMTY1ODc3ZjEgcmVsZWFzZTI1LW1haW50Cis1MTcxMSBmNWU3OGFlOGVjMGNiOGVjY2YxZThjODNhNjQwNzNkMWFmMmUzOTFkIHJlbGVhc2UyNS1tYWludAorNTE3MTIgMDBkMmM5M2I4OGJmZWQ1N2FlYWUxYTI2MTdjYTEzYTdiYmE2NzBkMiByZWxlYXNlMjUtbWFpbnQKKzUxNzEzIGM2ZDQ0YTk3NDlkYjQ4NmI2NjgyNzhiYjM3MDUwOGQzMzlmNzhlOTIgcmVsZWFzZTI1LW1haW50Cis1MTcxNCA5Y2ExOWRiMTdmYWY3OTUwMDMxOWY1YWIwMjVjYjc3Mjg5YWI0NzYyIHJlbGVhc2UyNS1tYWludAorNTE3MTUgMjQ0YzczNGYxZDhkMWRiODBjZTdhZTY5MjgwYWE0OTQxODM3Yjk4ZiByZWxlYXNlMjQtbWFpbnQKKzUxNzE2IGUxYWE5YTI5ZWQxNTFmZmJkZjE2ZTQ0NzA2YjM2NmJhZTZkYjJmOTcgbGVnYWN5LXRydW5rCis1MTcxNyA5OTU3NDY3ZmFmNDdjM2NlMTZjN2ExYjNmMDE3ODljMGM3MTdjZDgzIGxlZ2FjeS10cnVuaworNTE3MTggZDFiNDk3ZWMxOTBhMWFiNmNlOTM0ZTNmNDFiYTgzMmU5OTg4NDM4YSByZWxlYXNlMjUtbWFpbnQKKzUxNzE5IGIzNTE0MzgyYzMyNzQ3Y2M4MTQxZTgxNzBkZDRhMTM2N2Q0N2IzYTUgbGVnYWN5LXRydW5rCis1MTcyMCAwOGNhNDc2ZjhhMzQyNGRjMjYzYTdlMjIyZWE4ZDhkMzRlNzIwMTY4IGxlZ2FjeS10cnVuaworNTE3MjEgOTdkM2VhYjhjZGEyZjkyMGI1MDQ3OWEwZTU4MzQ2NTdiNDg2MmM0NSBsZWdhY3ktdHJ1bmsKKzUxNzIyIDlkNDQ3OTIwNjNiYmZkZTljNjNmYjY5OWE4Zjg2MWM4MjI4YjJlMjYgcmVsZWFzZTI1LW1haW50Cis1MTcyMyA2MjdhMjFjY2YyNGZjNDAzYzhjYjc5YTY0NTM1NDYyOTc5OGMzNmY3IHJlbGVhc2UyNS1tYWludAorNTE3MjQgMzAwZmU1MDZhMGFhNDIwYjAzY2I2ZDIyZjBkNDA0ODhkNzBjZWQ3OSBsZWdhY3ktdHJ1bmsKKzUxNzI1IDgyNjM5YzA1NWE2ZmE4NDc1M2Y0MmJlNDVlNTMxZTA2Mjk3NDZkMjUgbGVnYWN5LXRydW5rCis1MTcyNyAxNTVjYjE1NTdiOTc1MGQ0OTExMWIxMGUzMTg5ZTc5MDIyODg1ZGJkIHJlbGVhc2UyNS1tYWludAorNTE3MjggNGM4NWNlNzA0MjZlMzlmNGFhMTkwZDE0NTE5YzRiMWVhODNmY2MyYSBsZWdhY3ktdHJ1bmsKKzUxNzI5IDhkY2I4ODJlYzNlMWFhYzdkMzM2YTQwYWE2NGVjNjY1NjFmYzNkZWMgbGVnYWN5LXRydW5rCis1MTczMCAzMzAwZDc0OTJmMWExM2NhNjA0YmZhYTNmZTI5N2E0ZjMzMzhkMGYzIHJlbGVhc2UyNS1tYWludAorNTE3MzEgYzU5MWQ5OTU0ZmIzOTMzMGMyMTM2YjIyNjYwOTA4ODRmYTY2MGEwYiBsZWdhY3ktdHJ1bmsKKzUxNzMyIDNkOTY4YjVmY2FmOWJlZTc4YzZjOGYwZDcwNjNkOTFiZDE2ZTAxYzkgbGVnYWN5LXRydW5rCis1MTczNCA2YTUxY2I4MDY4ZjVjZWVlNWEzMDAwNTZkNjhiZjc4MDBkZDM3NWM4IHJlbGVhc2UyNS1tYWludAorNTE3MzUgNWQ2ZTk2YTJmZTZlODZkZDVmOGY2YTEyMzIzOTlhMjZkZDE3OTZjNyByZWxlYXNlMjUtbWFpbnQKKzUxNzM2IDlmMGIzZjljNzBkYTFjNzIyZmI5YmQ1NDk2ZDQ5ODU5ZjVmNGYzZDkgcmVsZWFzZTI1LW1haW50Cis1MTczNyAxNTEwOTc4MWYwMTY4ZWJkODUxM2U0ZWM5MTZhZTI3ZGRmMjBjZjNhIGxlZ2FjeS10cnVuaworNTE3MzggZWUwYzc1N2M0OTkwYWJhYWIyMDQ5YTkzN2M2MmQwYmQxZDEyNmNiMiBsZWdhY3ktdHJ1bmsKKzUxNzQwIGRlZDdiNjkwYzMwNjNiMGM3YjM5YzQwNDczOWYwY2RhYzM2NDdlZTIgbGVnYWN5LXRydW5rCis1MTc0MSBjYTk1YmQ1NTllNzE2N2VmMTUwY2U1Yjk1YzJiNzhhY2JkZTk0NzlmIHJlbGVhc2UyNS1tYWludAorNTE3NDIgNmQ3YThiNWViNTUxZmM1MTk3MTM2YWU4MjJkOTI0ZTM3MTZkZTIzNyBsZWdhY3ktdHJ1bmsKKzUxNzQzIDhmYjU5Nzc4NGYxODU1MTEyNWQ0M2Q5YzBkYmEyMTNkNzhiMzIzZmUgcmVsZWFzZTI1LW1haW50Cis1MTc0NCA3MWFjNzk2YTAxOGM2MzE5OWViNjkzNmMzNGUwNTEwYzgwZjkzN2E4IGxlZ2FjeS10cnVuaworNTE3NDUgN2M1ZTI5MzYyODAzYjFmZjNhYjlkZmNlMWZhMTQyZGQ4NThlNWY0YSBsZWdhY3ktdHJ1bmsKKzUxNzQ2IGU4YjY4ZGY5MGI4NGVkNWNhNWU2MmEzMGFlMmEyOTIzMzZkYzE0NzggcmVsZWFzZTI1LW1haW50Cis1MTc0OCBhNTI0ODk5ODBiNWI0OTNhNWQ4OWM5OWQ3M2MxMjVhMjU2NjJiZWNlIGJjYW5ub24tb2JqY2FwCis1MTc1MSBlNDY2ZmZmZGM5YTkxYzUzYzZkODg0ZWZhMGJlZWU3YzQzODhlNTk5IGxlZ2FjeS10cnVuaworNTE3NTUgMWM0MjVhODkwZjZjY2EzMTU3OWRhMGFmZjU1NTRlODJiMWYwNThmZCBiY2Fubm9uLW9iamNhcAorNTE3NTYgYzljYzI5YmU3NTU4NzhjYjZhYjYwMDI4OGY2Yjc0NjY4N2NlYTQyNCBiY2Fubm9uLW9iamNhcAorNTE3NTcgNzZiOGE3NWRiZTZhM2Q3NGUzNGJiZjQwMjk4YjQ5NTcwYzNiMWQ2MiBiY2Fubm9uLW9iamNhcAorNTE3NTggNDY3YzcxNmUyZjgxOGJiNDA3MmFiZmZiNjVjMTMxNzIxYjRmOWI3NSBsZWdhY3ktdHJ1bmsKKzUxNzU5IDhhMjBjOTRkOWQ5OWUyMmI5NDEzMTU1ODk3NDFiYjExMGFmNWU5OTMgcmVsZWFzZTI1LW1haW50Cis1MTc2MCAyYTczMGZiNmYzNGI0MzFhNzViYzRiODdkMzUwMWIxYThhNTkyM2EyIGxlZ2FjeS10cnVuaworNTE3NjEgOWRlYjA4ZWY0YmExZGYzNTBlNTA2NmI0YjFmOGU3OTBiZjg0ZDY5MSByZWxlYXNlMjUtbWFpbnQKKzUxNzYyIDk4Y2Q3YjE2NjZmYjQ4Y2Y1MWYxZTJkMWYwZTYyZDA1ZDQ3ODM1MDggbGVnYWN5LXRydW5rCis1MTc2MyA2ZGNjNjQ4NzkzNDEzODFiYjEzZTY3NTJlYzBmMzE4MDU1ZjNhMTE5IHJlbGVhc2UyNC1tYWludAorNTE3NjQgYWU1YjhhOGI5MTFlMjlkOWMwYjMzNTFiNTJjNzBmMzY2NGQzZDkwMyByZWxlYXNlMjUtbWFpbnQKKzUxNzY1IDMwN2ExMWMwODViNDYxMGQ4NmVmOTIyZDIzZTM3ZjFiODk2MTEwNDEgbGVnYWN5LXRydW5rCis1MTc2NiA4Mzk0ZDJlOWJmZDY3YWY0ZWIwNDNmODJhYTk2ZTI4YzE2Zjk5YTQ4IHJlbGVhc2UyNS1tYWludAorNTE3NjcgYjhmYmQzMjI3NjBhOWJiMTVhMGEzM2YzMGUxYWI0MWEwZTBkYWE1MSBsZWdhY3ktdHJ1bmsKKzUxNzY5IGQ3MTlmYWI3OTY2Nzg3NmNkMTQ1NjVhNDI3ZDc2OTYwZmQyOGY1OWMgcmVsZWFzZTI1LW1haW50Cis1MTc3MCBjYjg4M2U3ZTBiN2UxNzJjZjdmMTQ1MWRmMDQ4OWNmNTdjYzliMjVjIGxlZ2FjeS10cnVuaworNTE3NzEgYzk0ZjM3MDU0ZjE5NzBmNmZjMTYyYjEyNTFlZWYyNTQwODU4ZTIzYyBwM3lrCis1MTc3MyA3YTBhZDExMGU5MWU3OTE2MzFkZjg4OWMxMmY1NWYwNzZiOThmM2JlIHAzeWsKKzUxNzc0IDNiNzVlZGNjNGE2ZjQ4N2RmYzdjYWVlMTFmN2JmYzU2NzRlNGYyNTEgcmVsZWFzZTI1LW1haW50Cis1MTc4NSBkY2UxN2I1YmQzODdjYTNiYTc3OGU1ZDFiOTc2NjRmZDQxOGJkNDRkIGxlZ2FjeS10cnVuaworNTE3ODYgODFiNDY3ZmU5MmVlNTA5NjRjNTI4ZmRlZTBmMDlkMzc1OTcxZThiNiByZWxlYXNlMjQtbWFpbnQKKzUxNzg3IDRhYTk4NDE0MWZlZmNmYjY3Yjk4NTc1ZTgyZDZiMGRlMTk3ZDc1YmUgcmVsZWFzZTI1LW1haW50Cis1MTc4OCAyNTI3YTQ4MzUwOTkyOTNiOWQ5MDJiNjU1ODU3OTcxYjkxYTI1OTM4IHJlbGVhc2UyNS1tYWludAorNTE3ODkgY2QzYjdmMjU2NDlkNGYzNzk0ZjAwMGI3YzBjNGZjZjE0MjBhMjExOSBsZWdhY3ktdHJ1bmsKKzUxNzkyIDU2ZTdkNjk1Mjk4NTE1NWNiZmY1ZjBkZWQ0NTk0YmRjYTI4NWVlODUgcDN5aworNTE3OTMgNWU1MDJkZTBjZWRhY2ZkNWVhYWY5M2U2NWM3MTBjZmYwODRmZWM5OSByZWxlYXNlMjUtbWFpbnQKKzUxNzk0IDZkNDdjOGJjMDUxMjcxYjQ5OTQ5MGU5YzdmNzgxZDFlZGM3MGVhYzAgcmVsZWFzZTI1LW1haW50Cis1MTc5NSA2ZTZiYWYxYWZiMTJjMDU2MDI2YThkZDc2ZmQ3MDM2NDJjZDY1NDZmIGJjYW5ub24tb2JqY2FwCis1MTc5NiA5NDIwNDU0OWI1MTYwOTNkNzNkOTU1MmQzNWQwMTE1ZTRiNDcwNTRmIGJjYW5ub24tb2JqY2FwCis1MTc5NyAzNjNlZjgwNGEwOTZmNTE4OWJiZjJjOWNhYTc5NmM0NGQxYjJlZWU4IGxlZ2FjeS10cnVuaworNTE3OTggZWYwZjQyYmYyYTA4NTM1MGM5MzkzYjAzMDVmMzY0YTIzNGE5NTgyOSBsZWdhY3ktdHJ1bmsKKzUxNzk5IGM2NDNiMDMxZDUyNmM4MzU3NWQxZTczMjM0NzhmYzAwZjFjNWZmZWIgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgwMCBlODM3MjJhYTc4ZGQ0NzUzMTQ3OWRjMjM1ZDlhMzVjOWY2MjE1Zjg3IHJlbGVhc2UyNC1tYWludAorNTE4MDMgMzhiYTk1MjQ3ODNhMWVhYmU4ZjY3N2MwMDdmNmNlNTc5N2M0YjA5MSBsZWdhY3ktdHJ1bmsKKzUxODA0IGNmOWQzYjM4MjUxZjkyYWQ2YmIwNmMzNDdhZjcyM2QxY2U2NjQ0MWYgcmVsZWFzZTI1LW1haW50Cis1MTgwNSAxZWViYjY0NzMxMGZiNWVjZmFjYzVkZWI3NWM2ZDUxZWJlMTczOTM0IGxlZ2FjeS10cnVuaworNTE4MTEgNDA1ODA0MTkyYTY4MjgyNWRmODM3MmVhZjNjZmY3YzhhMzJlN2RkZCByZWxlYXNlMjUtbWFpbnQKKzUxODEzIGMzYTM1M2EwNzE0NjhiNThhNzIxZjk4MzdjOTAxNTFiMDY4Y2JlYTcgcmVsZWFzZTI0LW1haW50Cis1MTgxNCA0MWMxZTU0M2I5ZTk2OTc2MTQ1ZDUyMjVkYzg1MTVlN2MyMmVmZTliIGxlZ2FjeS10cnVuaworNTE4MTUgNGU4MTk3NGY3ZTE0MDNjNzRhNzRlZjY2OWM1MTlkNGJmOWU1NTcwZiBsZWdhY3ktdHJ1bmsKKzUxODE2IGQ5NjczYjYyY2UzNWQ5ZDBkM2JmMzBhNjJiZDA0ZWY3N2NjNjUxOGUgbGVnYWN5LXRydW5rCis1MTgxOCA0MzRhZmM3MjhmNmY3NGFmOTA1MDMxNGRiMTIxODZlNmVhMDM4MzU2IGJjYW5ub24tb2JqY2FwCis1MTgxOSBhMDY1YjU1ZTFmYjFkMDZmMDZkZDU1ZTdmZmU5MzM4MmRjMmQyNjkxIGxlZ2FjeS10cnVuaworNTE4MjAgZDVjNmZlYTI1MmYwNDg4MjY1ZTc3ZTgyY2ZhNGZlNDFhMzg4ZDk0ZiBsZWdhY3ktdHJ1bmsKKzUxODIxIGVjNmZkOWNlYmRhMTg1ODdiNjA2ZDY1YTE2YmY0NmQxYTBiOGYxMDAgYmNhbm5vbi1vYmpjYXAKKzUxODIyIDcwMTA4YzYzYzZlNTBlODM3ZDY5Y2RhNmY2MDc0NzBhMWM5MGRkYzMgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgyMyAzMjM5ZjkzY2Y0ZDIzZWQ2OWZjODgxNzI5NGMyODJlMDE3NGVmY2E0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MjQgMjY1M2Y4MzM1ODc3OTM4N2QxZGQ0MTFmZjY3NjA1OWUxZGFmOTJjNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODI1IDg5MWUzMzJjZDJkNmEyNjljMGNhMmIxZDQ5MDMwM2MyZmMxYjExM2YgcmVsZWFzZTI1LW1haW50Cis1MTgyNiAwMjk4Y2M2YzI5Y2Q2ZWNkYWNkNTRlYzI0ZTExNzAwNjFlOGMzZmEwIHJlbGVhc2UyNS1tYWludAorNTE4MjcgYzAzMTRjODkzNmU1MTE2ZDNiYmJiMmY3ZGE1ZTAwYzY2NmI5YzFiZiBsZWdhY3ktdHJ1bmsKKzUxODI4IGQ0ZTUzZTcwY2Q3ODI3NGQwNTM4NjNjOGY1NmJhYTU2MGEyYjVlMmQgbGVnYWN5LXRydW5rCis1MTgyOSA3YmUzMGNiZmM5YjI4M2FhMzg4ZTA3NGEwOGRmZmNiNDczYjJmZGQxIGxlZ2FjeS10cnVuaworNTE4MzAgNTI3YTNkMDA1MmM5MDExMjFiNThiYWFiOTYwOGVjZWMzODFiZWRiNCBsZWdhY3ktdHJ1bmsKKzUxODMxIDZhODNiMjc0MGZjN2NjZGEwM2Q5NjEwZTNjZDBiODk0MjkzMzkxYzkgcmVsZWFzZTI1LW1haW50Cis1MTgzMiA0MDczNWQ1ZjhhY2RiZTc3ODgxZGY5Y2ViZDIxNmZhN2E4NTllZWFjIGxlZ2FjeS10cnVuaworNTE4MzMgYjUyNzU4ODJhM2UwZDRiMGNjNDMxNDdiMzMzZWIzODc0MjZhOTA3OCBsZWdhY3ktdHJ1bmsKKzUxODM0IGE0YTIxNGJkZjhlYWMwZWEwZTljMzhkMWEyYzg5NDc0YWQ1YzhiNDcgcmVsZWFzZTI1LW1haW50Cis1MTgzNSA2ZjZlNTVmZDliNzkxYzJhN2RjYWQ4ODU2MTc1MWU3MTJhZjM1MTBiIGxlZ2FjeS10cnVuaworNTE4MzYgMGViM2YwZjU0YTI2NzRmZWY2ODBhYjUyOTFhZGUxYjVmYjk2ZWFiOSByZWxlYXNlMjUtbWFpbnQKKzUxODM3IGMyZmQ5NzhkZjM5MjI0MjVmNWZlODc5MWRkNDlkYTU1ZDA5MzMwN2YgbGVnYWN5LXRydW5rCis1MTgzOCA5ZTdkYzY0MzJhNDQ2NWI2MzVkNzcxZTZlODJhNmUxOGNjNzExNGQ3IHJlbGVhc2UyNS1tYWludAorNTE4NDEgODA0ZDE3MWMyY2I3MTU1YzY5MzIyZTdhOTY4NzUyMjhjMTE3YzA2ZCBpbnRfdW5pZmljYXRpb24KKzUxODQ3IDBmZmU3ZjkyYWIyZmRlZmEyZjg4NWEyZDE5OWI4ZWU2NDU4YjZmYWQgcmVsZWFzZTI1LW1haW50Cis1MTg0OCAzOTg2YjM2Yjg0OTUyMzM0MGQzMDljOWMwODVjZjA2NWFkNmMyYmRlIHJlbGVhc2UyNS1tYWludAorNTE4NDkgNWVmMDQwNmU2ZDUyNGM2Y2NmNjcxYjI4NDA5MjhkNTc1NTM5ZDY5NCByZWxlYXNlMjUtbWFpbnQKKzUxODUwIGU0ZThmMGE0ZWRhNGZlMjhiYzc1MWFjZGRhZTk2YzE1M2E3ZDdiMTUgcmVsZWFzZTI1LW1haW50Cis1MTg1MSA1NGQ0ZmQwODgzODVjN2ZkYzFlNDFmNjQwNmNkNTU3NGNmMjFmMmIxIHJlbGVhc2UyNS1tYWludAorNTE4NTMgZDA2YjJiNDJkMTM4ODE2ZmViODkyNzc1MDg1OTI5YTZlZDM1NTFmNSByZWxlYXNlMjQtbWFpbnQKKzUxODU0IDE1YWQ2YmEyZTFhNTQyNzgxYmVhYmExMjQwM2RmN2NiNzQwMWUyYTcgbGVnYWN5LXRydW5rCis1MTg1NSA2NmQwMzU3MDI5YjU1YWM2MTY4ZjlhMzAxODM5OTdlN2YyNTc4ZGE5IGxlZ2FjeS10cnVuaworNTE4NTYgYzBhMDcxZGY0NjIxYTU3OTRkNDVhOTJlNGE1OTUzNmQ3Y2IzZTU2ZCBsZWdhY3ktdHJ1bmsKKzUxODU3IDBmN2VlOTkyNWI3YzQyOTYyYjYxNTY0YmQwZDQ0OWEzM2NhMjNmYmIgcmVsZWFzZTI1LW1haW50Cis1MTg1OCAwYmFjNDBlNGQwYzY0M2E3OGMxOGI0NmZjYjBmNDhjNzg3MWFkMWZkIGxlZ2FjeS10cnVuaworNTE4NTkgYzVjOWRiZWVhZmE3NmExZGQ0YmYyNmYyMjYwMWNhZDZmZGQzNzI0YyByZWxlYXNlMjUtbWFpbnQKKzUxODYwIGNjM2NiM2E4MjM3ZWE1NDVkYjkxN2Q4NGM0OWQ4YTBhNWUxNzVjYzEgcmVsZWFzZTI1LW1haW50Cis1MTg2MSA3ZDQwZDM3ZTRjYzM1ZDYxOTE5NDA4MmQ5ZjgyMzkxNGZjMjJmN2I0IHJlbGVhc2UyNS1tYWludAorNTE4NjIgMjQ5ZmRiNTlkYzUyZjliNTNhNTI5MmFkZWIzMzgyZDU2N2I5MDlhYSByZWxlYXNlMjUtbWFpbnQKKzUxODYzIGRjNTBkNGFjOTVkOTFmYzE4MDAxODcwNDA0MTc1N2U5ZjI5ZDM1NjggYmNhbm5vbi1vYmpjYXAKKzUxODY0IDk1Y2YzMWU2OTMzNTAxZjJkM2YyOTZkYmIwN2QyNjUxMTMwYjNmOGEgYmNhbm5vbi1vYmpjYXAKKzUxODY1IDQxNzUwMWVlM2U4NmZmYWNlYmRmMGU2YThiMmQxZTk3NDU5NGY1Y2QgbGVnYWN5LXRydW5rCis1MTg2NiBlNTdkOGFlNDU2NjlmNGQ3ZTJkNGNlM2Q3ZjhhNjFlZWFmMmUxNmQ5IGxlZ2FjeS10cnVuaworNTE4NjcgNTRiODJiZDI1NjkzZTlkN2YyZGY2OGEzOGYxOWVkNTI5ZDlmOGM4NiBsZWdhY3ktdHJ1bmsKKzUxODY4IDUwNDRkMDY5YjUzMjkyZWUwMzBkMTYzZjE2M2YwZTgyZGY2OGZhYjAgbGVnYWN5LXRydW5rCis1MTg3NCAxMGViMWY2YjMwODA5MzQyNjI3Y2ExNDRlMDAzYWJmZGYyNGMzOWEzIGJjYW5ub24tb2JqY2FwCis1MTg3NSAwYmMzOWMxMzE5ZGRjMDM3YWIyYWI0MDQ0OWZmM2NmODI5MmZjYWFkIGJjYW5ub24tb2JqY2FwCis1MTg3NiAwN2E0NGJmZjk2N2Y1ODI2YzM1MTA4MWQ2Y2VkYjcxMjlkMTMyMzZiIHJlbGVhc2UyNS1tYWludAorNTE4NzcgNzRlNDI0YzE3OGY0NWMyMzlmMTk1OWFlNDU2ZDUyYWU1Nzk3NTYyNyBsZWdhY3ktdHJ1bmsKKzUxODc4IDJiMDVlYzVkZjc3Nzc5N2Q0OGVkMzFiYjBkMDU2ODM4ZTVmZTRlM2QgbGVnYWN5LXRydW5rCis1MTg3OSBhMDIzNWQ0MzVlZDRlNzJkNDljNWE1M2YyYzE1N2ZmODI3NWIyNWQyIGJjYW5ub24tb2JqY2FwCis1MTg4MCA3NTE3OWMyZWNhYzFjNWIwZjM1YzQ2NzcyMTQyOWIwMjlhNWZkYWJiIGJjYW5ub24tb2JqY2FwCis1MTg4MSBkYWRhMzRiNGQ2YjZhNGUyZDdhODlmMGFjMDNjMDBjM2M3NDVhMjI0IGJjYW5ub24tb2JqY2FwCis1MTg4MiAzNGFiMDUyNzQ1ZWMyYTcwZTRhMjFjYjc2MGY1YWEwNDUzYWU4ZjI2IGJjYW5ub24tb2JqY2FwCis1MTg4MyAwZWNlMjhjYjViOWU3M2U4Y2YwZjY1ZTIzZWEzYTI2OTU1YmFmODE1IGxlZ2FjeS10cnVuaworNTE4ODQgODk5ZDRkYzEyYzM3OGRiZTI1YjY4OWM0NTFlYjU0NWZkNjhjMTQ3ZSByZWxlYXNlMjUtbWFpbnQKKzUxODg1IGI2NzMzYTM2ZWVjZGY2NTU2YTgzOGMxN2E0M2U3ZWY2MjRkM2YxMjIgbGVnYWN5LXRydW5rCis1MTg4NiA4NzM3NTliMGIxMjYxNmE4MDRlMDFlOWZhYWY0NzNmYmVlMmY2ZmRmIHJlbGVhc2UyNS1tYWludAorNTE4ODggNGYzNmM0MTU5NmIxOGQwZGZmNzljY2MxZDRmMWM1OTFiYjRmNGFjMiByZWxlYXNlMjUtbWFpbnQKKzUxODg5IDJlOTk1ZjI0NGQ2YjYyYzk0MDkwOWVjMDIxYzc3YmRiZGQ5Mjk3YWYgbGVnYWN5LXRydW5rCis1MTg5MCAyYTM0OThkODc0MWI0MmM1MWFhNGIzNzlkNDZhMzRhNGE2NmVhNDM4IHJlbGVhc2UyNS1tYWludAorNTE4OTEgZjljOWY4YTA1YTg5NGJkMTQwNjJjYjA0MWRkNTAyY2Q5OTAxMzNlMSBsZWdhY3ktdHJ1bmsKKzUxODkyIDhkM2I3NjQzNTk5MjFhY2Q3MzAxMmY4N2M3MTRjYjg3MmM1MTM3NTggYmNhbm5vbi1vYmpjYXAKKzUxODk2IDMzMGJkYTI0MDVlZTZjNjgyMTgzZGM1ZWFhNTMxMGI4ODkyMzA0MDMgYmNhbm5vbi1vYmpjYXAKKzUxODk3IDE2NjBlYWEwY2MyNjYzMzMwYzMxMzhiMmZjYjJiMWVkYmUyMjhlNDggbGVnYWN5LXRydW5rCis1MTkwMSBmNWY0ZDJmZGI2MmMyOWFmOTQ0MDNhMjFiNzNmNGI0YzFhN2U0MGJlIGJjYW5ub24tb2JqY2FwCis1MTkwMiBkNDNkOTQyMmI3YWM3OWYzYjZlMWNmZmRkYmZjYjQzMTA3NTNiOTcwIHJlbGVhc2UyNS1tYWludAorNTE5MDMgY2VkZWE5ZTIzYTk1NWM3NTU5YzI3YWRlMzJlYzQwZmQwMDA3ZGUzYyBsZWdhY3ktdHJ1bmsKKzUxOTA0IGJiOWU5MTRlZGUwNTFmYWIwMGIyMmNmMDI4OGZmNGNmNzE2Njc1ZjIgbGVnYWN5LXRydW5rCis1MTkwNSA1OTBhOThhNzBiZjlkOTQ1ZGE2YzFmNmM0YWQ1M2Q0MzA4ZGE1YzA4IHJlbGVhc2UyNS1tYWludAorNTE5MDYgNmIwMWE5YzQ1NWRiZDI2NWRkZWZiN2E3NThiYmUzNTJjM2Y2YzQ3MyByZWxlYXNlMjUtbWFpbnQKKzUxOTA3IDc2Nzk2MmY4ODgzNDYwOWY4ZTg5NDgyN2U4OGRmYjQ0MjExYTE5NGEgcmVsZWFzZTI1LW1haW50Cis1MTkwOCBjMTBhNzFjZjE2ZTQ3MTQyNWU2ZDc1NjRlM2Y3YTY0OGYxNGI3MDJlIHJlbGVhc2UyNS1tYWludAorNTE5MDkgN2Y1ZjQ2YjU2NjExYzE1M2FlYzdiMDUzYzAwZjFkODkwM2ZhMWVlZCBiY2Fubm9uLW9iamNhcAorNTE5MTAgMjAxNDc0MTVlOTdmOWIwY2Q5NTFjMWVlNWQ2OGFmMjlhMjM4ODhkMyBiY2Fubm9uLW9iamNhcAorNTE5MTEgY2UyNDc3OGE2NDlmMWFlNTNmNWQwMDc1ODIxNDQ1YmEyNDkxNWJmNSBiY2Fubm9uLW9iamNhcAorNTE5MTIgNzc1MjM3ODA3N2E1MzdjYjNjZDJhNGMwZmE5NzUyN2JjNzEwNjAwOCBiY2Fubm9uLW9iamNhcAorNTE5MTMgYjQ0NzBhNTQ5OTNhMzg3YzU3OWJmNjc5YjIzYTFjNTQ2N2VkOWQzNCBsZWdhY3ktdHJ1bmsKKzUxOTE0IDc4Mzk0MWEwMGU5ZTI5NTIyOTFjMDhjODQyN2U2OWFlY2JmMTdkNmIgYmNhbm5vbi1vYmpjYXAKKzUxOTE1IGU3MGE3YjcxOTdiNjg0MWQ3ODM2NzA4MGI2ZWY2MzAxZjBhZjVhZDMgYmNhbm5vbi1vYmpjYXAKKzUxOTE2IGI2ZWU0ZDM1NDFjMGE1Mjg4MTIxZDI4OGFkZmQyM2E5ODEyMzY2ODAgYmNhbm5vbi1vYmpjYXAKKzUxOTE3IDA5NGRhZTQ5YWJlYmIzNGRhMzhjM2IwNjQzYmE4MDc2Yzc5Y2JmMjggYmNhbm5vbi1vYmpjYXAKKzUxOTE4IGUwMzZmYzljNjgyNzE0NzdjOTY1ZmE2OTIzYmIyZWVlODEyYjNmOGEgcmVsZWFzZTI1LW1haW50Cis1MTkxOSBiYzc3MmZiNTEzOTI5NWQxNThiNzI3NDU0NmY4YWQ2ZGNmY2IwN2Q2IHJlbGVhc2UyNC1tYWludAorNTE5MjAgNzFiODAyNDBhYzNkZGFlNDE5MmEyYzUwYTFjYmM1NGRiNmNkZGZiYiBsZWdhY3ktdHJ1bmsKKzUxOTI2IDAxNzExMDhhYjUxNTU4ZWIwNmI3YWI0ZTczZDA2ZjUxYzgzMzgzZjUgbGVnYWN5LXRydW5rCis1MTkyNyA0ODg4ZDJkNGQyOTJlYzM4ZDVlM2U5NDMxOTEzOTNlMDdjZjMyY2M3IGxlZ2FjeS10cnVuaworNTE5MjggNzFlMGYzZmM1N2RhNzc4ZjRmZTA4NDliNjRhNjVlYWE2MTFkZDU4NSBsZWdhY3ktdHJ1bmsKKzUxOTI5IGIzMDNkMmMyYzZjNTY0MzQzYTAzNjdlMGZmOGE2YWNlN2FjNTk3MzggYmNhbm5vbi1vYmpjYXAKKzUxOTM5IGVhMjRhOWM4ZWRhMjU4YjkzYWVmNTkxM2MyODgzZGM0MzU2ZGQxMmYgYmNhbm5vbi1vYmpjYXAKKzUxOTQwIDAwMzFmYzJlMDVlMjg2ZTJiYWY4OTM3ZTdiMzNjNzJiZWU5N2UyZWQgYmNhbm5vbi1vYmpjYXAKKzUxOTQxIDAxNTFjMDdjNTNlNTEwNjI3MzJjMDM3ZTI1NjQ1YmUyM2YwZGY3YTYgYmNhbm5vbi1vYmpjYXAKKzUxOTQyIGRlNDkyNGQwMzkwM2Y3NGM4NTlmYzIzMDdlYmIyZGIzYmZlNGM5MDcgYmNhbm5vbi1vYmpjYXAKKzUxOTQzIDFmNDg5N2Y1ZmIyYmViYTYxODhmNGUyMzRlMDJmNGIwZjI4ZTdkYTEgYmNhbm5vbi1vYmpjYXAKKzUxOTQ0IDQzYmFmNmJiMGY4YjBiNGU3M2QwZTAyZThlYmUwZmIzZWVkNDA1YjIgYmNhbm5vbi1vYmpjYXAKKzUxOTQ1IDU2ZjBlYzUwZDczNzE3NDhjOTg5ZTYxY2Q5YjI2YjU3MGU1MjM5ZTMgYmNhbm5vbi1vYmpjYXAKKzUxOTQ5IDkzNjI5NzA0N2MxNzllZDg3NzlmYzIzYjFlNmI0MzZmMzI0NmEyNWMgbGVnYWN5LXRydW5rCis1MTk1MCA2OTUzMGFhMjFiOGE2NDlmZjc0NzBhZTE0Zjk4MWMzY2FkM2MyYTY2IGxlZ2FjeS10cnVuaworNTE5NTEgMzViZjE2ZTdmMTFjZGUxNmM0NWQ2YzA3ZjM4YzUzMjljYWE4NTJhZSByZWxlYXNlMjUtbWFpbnQKKzUxOTUyIGVmZjg4YzZhYWFjMzc0NzZkY2JkOWM5Nzc4Y2E2MTFkODUyYTQ2OTAgcmVsZWFzZTI1LW1haW50Cis1MTk1MyBkZTQ4NjZkNDRmMTM3NzVjNWZkYTMyZDNmYjcxOWNiM2JiNTczMTU0IGxlZ2FjeS10cnVuaworNTE5NTQgN2Y2YjRmYzY3YmI2YjNmMzkxNzllYjgxYjg0MGEwYTE1OTliMzFkNCByZWxlYXNlMjUtbWFpbnQKKzUxOTU4IGRmOThkOTczMTM5MGYxNDc2ODE3Zjk0NDk0NDg1ZjdhZGMwYTBlYmMgYmNhbm5vbi1vYmpjYXAKKzUxOTU5IDA4OWRkZjE4NzdjYzA3OGQ2MTQ2NmQxNDJkZGExMmQ5NTRhOTdhZTAgYmNhbm5vbi1vYmpjYXAKKzUxOTcxIDI0ZjlhMTMwODRiMDE3NDc0NDM5MmZkOGMwN2JiNjNiNzg4YTY4NWQgbGVnYWN5LXRydW5rCis1MTk3MiBiOGNiNzIwMTM3OWM2Nzk1MGRlMTFhZWZkM2MwMzExMTE0NDM0MWNiIGxlZ2FjeS10cnVuaworNTE5NzMgYWVhMTljMmE0NWJmYzk0YWUxNjE1NzkzYmE2MGFjOTQ5MGYzNGQyNCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzQgMjY2MTg1MjhmYTNiNzY0YjA4ZDY3ODFiM2I4MzM1MWJhNjY5ZDUzMSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzUgOTRhOGNkNTg4OGU3MGIwNzAzYjU2ZDY0YjFhMTE0NDEzNDNkNDM4ZCBsZWdhY3ktdHJ1bmsKKzUxOTc2IDBiNjNjMjg1OTM0ZmEwNTBmYmZiNGFiNjdiN2YyZmIxMjJiZTk5ZTcgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc3IDY5YmUwMTVhNGI1MWMwM2QyNDkwYTQ5NTc0M2YzZDg4YzlhZjVkZjQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc4IGM3ODFjOTgwYzlhMGRkODgwYjkzMWRmMWE1YzhmZWMwNDJiMjM2OWQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc5IDA3OWY5YmViMWQ3ZmEzNTkyMmIyODY4MGNjZGNhNjc1MWVhMDBiNjIgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgwIDU4NzJiYWJmZjYzODRmNDZlNTNlNTM5OTRkODFkZmViYzJkNjI3OGYgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgxIGUzYzVmM2I1OTI3MWYwMmVhZjBjMzZjOTA4ODc3ZmRmNjNlOGQyNGMgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgyIGUyNzQzMjIyNTgxZDI4ZGJlOWZhOGZiMWJmN2YwNDIwMDBlYjY4MWUgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgzIDc0Mzk3YjAwOTkxNDFmY2FmZDllYzIyY2FmN2VkZTc5ZjVlYzM2MTUgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTg0IGI5NDI3OGUxYmNiMzE0MWE1MDJkNzM2MzVkNDM3MThhMjk2NjM0NTcgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTg2IDA0Yzk5OGZmMjhiN2Q0MWNkMzI5NzY0NzIxZTg1NjBkNGI0YmY4NWYgbGVnYWN5LXRydW5rCis1MTk4NyBjYWIwNTY5MDNiM2RkMjY0OTJmMDZlYTkzMjhmZTVhMzNmOTQwZjM3IGxlZ2FjeS10cnVuaworNTE5ODggYzIwYmQ3NGFjOWE2N2RkZWIyMjc1ZjA0NDE4MDVhYmE2ZWFhMjc2NSByZWxlYXNlMjUtbWFpbnQKKzUxOTg5IDQ3OWUzODljYjQ2MmY4ZGNiYTg4NWNlYmM5YTAyNjVlYWE3MTg2NDcgbGVnYWN5LXRydW5rCis1MTk5MCA3ZjZkZGY1NTVjMTIwYmM5MzVhODI5ZTc1MGNkZjExZGQwZmUzMzE5IGxlZ2FjeS10cnVuaworNTE5OTEgZDk5NzUzMzE0NDUzMzUzZGRlZWI5OTZmYjdkMDc1NzIyOTlkZDgwMCBsZWdhY3ktdHJ1bmsKKzUxOTkyIGI1MjkyZjk2Nzg3N2NjMzQ5YTE0MzU5MmE1NWJjZjE1M2EyZjkzNmUgcmVsZWFzZTI1LW1haW50Cis1MTk5MyAyNWJjZGYzY2QxOTQyMWQ0MzQ0N2U0ZWY2YjE4NDg5Y2IwNjhkZjk5IGxlZ2FjeS10cnVuaworNTE5OTQgMzQ3OGMxNjAyMDdiNzlkNmY4YzE4NWU0MjMwYzYyZTgyNTAyODI3YyByZWxlYXNlMjUtbWFpbnQKKzUxOTk1IGVjYWFmYzMyYzUwMDA2MzE0NDlhNjAxYjg0ODYxNDFhYmFmNjE4NWEgbGVnYWN5LXRydW5rCis1MTk5NiBjY2RkYjIyNjExZGM2ZjBkNTYwMGNlYjExNWNlZjlmMDI0MGE4NzIyIHJlbGVhc2UyNS1tYWludAorNTE5OTcgNjAzY2RlNWVkMWViYzU3ZjY5NTkxOWMyNzlhYTM4MzRiMzI2NGVjYiByZWxlYXNlMjUtbWFpbnQKKzUxOTk4IDNjN2YxODgxZTgyYTk2YWU0NjViYzAyYWYyY2VlOWViMmY0NGExYTkgcmVsZWFzZTI1LW1haW50Cis1MTk5OSBkZWM3ZDk5M2I2OGYyNDE0OWFkODhmMTkyODJlZWMyZTFlYWI1NmI0IHJlbGVhc2UyNS1tYWludAorNTIwMDAgZjhhN2RmYmY4MWQwODkyMmIxMDVmNzZkZTMwMzU4ZjYwNjM4MDA0NyBsZWdhY3ktdHJ1bmsKKzUyMDA1IDc4YzVhMDM5ZmEzYTY0MjNjZTA4MGQwNDlhYjQ4YTM0MDUyMjg4NDUgYmNhbm5vbi1vYmpjYXAKKzUyMDEwIDc4ZDRlNWU0NzBjZjgyNDNhOWM2N2EwN2M4NWZhZWFhYjZiZWRiZDcgYmNhbm5vbi1vYmpjYXAKKzUyMDExIGIwNzIyMjhjOTVhMjA0MDUwMTA3ZWEyMjU5ODRkMWNkODVhYjEwYzYgbGVnYWN5LXRydW5rCis1MjAxNCA3NGRjZmQzNmY3YzRhMzliMjU2NWE4YTNmMmQyNjlkMTliNTZjMjVkIGxlZ2FjeS10cnVuaworNTIwMTUgZTZhNGUwNjc4OTkzY2U4NmQwZGE3YThhZmYzMDlkN2FhNjBlMmZiNCByZWxlYXNlMjQtbWFpbnQKKzUyMDE2IDkzNDdjMmI0NTFiYWQ5YjFkYTNmYmEyN2JhNjQ1YjJhOGZmNTEzMGIgcmVsZWFzZTI0LW1haW50Cis1MjAxNyA2ZmI0NmU4N2Q1Zjk0YzYwZTU0OGZjMTQzYzU4NGEwNGRhNTQxYTFjIHJlbGVhc2UyNC1tYWludAorNTIwMTggM2I3MGRhOWVlMzY4NzU5MzAyZTdkYmM1NDdhNzY5ZTcxNTUwMjAwZiBsZWdhY3ktdHJ1bmsKKzUyMDE5IGE1MjE0MmJjMTU4ZjY1ZDVlMzY3Y2I2YjcyNDdlN2QwMDc1ZTgyODAgcmVsZWFzZTI0LW1haW50Cis1MjAyMCA2OGE1NmExNWQ3NTU5MzM2YzZhNWJmZTVmMzEwYTdmYTE0NjRkZGRkIHJlbGVhc2UyNS1tYWludAorNTIwMjEgOTRkZmJiOWRhYzU3OGIwMzdkZmJkMjg0ZDgxMjQ2ZDY3NDUzY2ZjMiByZWxlYXNlMjQtbWFpbnQKKzUyMDIyIGM0OWYwMmE1MGNhZGQ2ZjgwMWNiNWUyN2Q4ZWFhM2JkY2ViNjVmNmEgYmNhbm5vbi1vYmpjYXAKKzUyMDI4IDE2OTZkODViYTA0MzU2NDVhMmFjZjQ3NTQyNGVkODkyOTU4YzhlMTYgcmVsZWFzZTI0LW1haW50Cis1MjAyOSBhZjMxODZjNjQwOTIwN2M1OGNlN2QyNTE2MTkxY2Q4ZDUxZmE2NTg0IHJlbGVhc2UyNC1tYWludAorNTIwMzAgODg0ZDFjYjcwMjIxNWJiN2QwMmQ2NDY2NzFiODUzMTUzMTk2ZjhjNSByZWxlYXNlMjQtbWFpbnQKKzUyMDMxIDEyODY5YWFlOWY2ZDllZGZiZThiNjhiNDIyZjAxYjA2NjVmYzhmNDUgYmNhbm5vbi1vYmpjYXAKKzUyMDMyIGY5MGJhMzA2YzI4N2E0OGRiMDEwMzU5ZDJjYWM5ZDkxZGJiOGQzOTMgbGVnYWN5LXRydW5rCis1MjAzMyAzNTA3Nzc1ZjRlZDQxZDU2YTJhN2E4NzhhZmVkMjg2OGY3NjMxZmVkIGJjYW5ub24tb2JqY2FwCis1MjAzNSBmYjI4OWVlMWNkNjA3YjM3OWEwMWVhYzI2MDhlOTY5M2E0OWU0YWUwIHJlbGVhc2UyNC1tYWludAorNTIwMzYgYWI3OWVkMGY5MjgxNzVlMTkwNzUyMjFhNjhiZDE5NjAzYmNjZWVlNSByZWxlYXNlMjQtbWFpbnQKKzUyMDM3IGNjMThmZGFkMTA4YjdkNzIwMDc5N2ViMDVlMWM1MGMzNzkwODExMDYgcmVsZWFzZTI0LW1haW50Cis1MjA0MCA0ZjExNzQ1YzdlNWZjZTg4ODE0ODZjYzhmZjY0N2ZjMzVmYzliODM3IHJlbGVhc2UyNC1tYWludAorNTIwNDEgYzExY2FlMmI5YTc1ZjJhODE0MWQ4N2EwMTY1MDM4ODAxN2Q0OWE3YiByZWxlYXNlMjQtbWFpbnQKKzUyMDQyIDI2MzJjOWFmNjRhYmIyNTI3NjE0YjRjYTE2YWNiODkyOGY2ZmM1YzcgcmVsZWFzZTI0LW1haW50Cis1MjA0MyAxNWRkYWJlNjNkOTUyYzY3YjM1M2FjZTNkMjI4Mzc4MzBmYmU1NmI1IHJlbGVhc2UyNC1tYWludAorNTIwNDQgMWU1ZjBiMDQ2NmQ4ZGYwZGJhOWM0ZjAwMTYxNGU1YTY1MDNiODhiMSByZWxlYXNlMjQtbWFpbnQKKzUyMDQ1IDllMGZiOTU0NzkxZWM5MzQ5MmVjYTdhZTIyZmY5MzhjY2IxNTMyNWMgcmVsZWFzZTI0LW1haW50Cis1MjA0OCAwNTg2MTc0OWVhY2QyMTFhZmIyY2YxM2FkOWQwYWQzZmY4MDdkZmYxIGxlZ2FjeS10cnVuaworNTIwNDkgMDFjMDNhNzExYjE1Y2IxZWQwMWZkM2YwZDMxNGQzMDA1M2U2NmY4ZSByZWxlYXNlMjUtbWFpbnQKKzUyMDUwIDUyY2RiZTRiNzY0NGQ3MmFhOTJjYTBmYzY1NDg3ODYxNGNjMTNkNmUgcmVsZWFzZTI1LW1haW50Cis1MjA1MSAwZWRmMzk5OTYxOGFlMjhjZjk2OGE5YjAwZWRiMDI3MmNmMWIxM2FiIGxlZ2FjeS10cnVuaworNTIwNTIgMWRjMjJjYzIwMTMyZjJhYzA1OTk3N2E1YzRjN2ZhMmE4YzMwODQ4MiByZWxlYXNlMjQtbWFpbnQKKzUyMDUzIGRlNzlmMTg3MGFlOGYxZDg2ZDFmNTg1MTg2ODFkMzQ2ZWZlMzVmZWEgbGVnYWN5LXRydW5rCis1MjA1NCA1ZGZmYTM1Y2M2NDMwMmMyYzNkZGEzYWUxZmNkYmFjOGQ2ZmM4MjliIHJlbGVhc2UyNC1tYWludAorNTIwNTUgZDgzMzgwNmM3MzUxYTU5MTcyNjJjODg5MDBjNTJmYzgxZGM2NWE2NCByZWxlYXNlMjUtbWFpbnQKKzUyMDU2IGM0NzdhMGUyYjA2Nzk5ZGFhZDg5NDUyZDk4MWM3NWRjYzQ5YzM5ZDEgbGVnYWN5LXRydW5rCis1MjA1NyAyYzgyNGE4YTFmYjhjZDU2YWE4ZWI2ZmVmZjljYTU2ZDM1MzFmZGE2IHJlbGVhc2UyNS1tYWludAorNTIwNTggNDlmYmRkZmIxMjE3MDFkZGVlMTY0YWM3NTJiMTMyMTI4MGZiY2Y2OCBsZWdhY3ktdHJ1bmsKKzUyMDU5IDEzY2YzNDRkZThjOTg5ODRmMzVmOGQzODE5YzE4MTY4NDQxNTE0YzUgcmVsZWFzZTI0LW1haW50Cis1MjA2MCA1MjQ2MGIwOTJiNWE2NmQ1YTM1OTNhMTZmMmU0Yzc2MzFiODlkOGY2IHJlbGVhc2UyNS1tYWludAorNTIwNjEgZTFhYjQ2NTNlYmMwOTMyNTk2YjZiMDY0MmMyZjBlODliMTkyYzEzYiBsZWdhY3ktdHJ1bmsKKzUyMDYyIDM5ODZiZmU1MzEwMWRiMzEyOTIyOTQzYTZjOTMxM2Y3ZTk5NzQ5Y2YgcmVsZWFzZTI1LW1haW50Cis1MjA2MyBlN2E1ODM0MWIyZThmNzUzNWQ3N2NkMTRjMjI3YjJhNzE4ZDMzNWUxIGxlZ2FjeS10cnVuaworNTIwNjQgMWJmNTFkMmY0NjlkMmQyZmFmNzgzYmM2OGY1M2NlZjliZjI4NDZiOSByZWxlYXNlMjUtbWFpbnQKKzUyMDY1IGI5YTJlZjEzMDJkNDdjY2Q1MTUwZDU5M2ExOWM2MWU1YTAzYjYyNWQgbGVnYWN5LXRydW5rCis1MjA2NiA5OWQxYzkzNjc2Nzk0ZDJkNGI1ODNiNjQ4NjI3YmFlNmI0ZmNlNmI2IHJlbGVhc2UyNC1tYWludAorNTIwNjcgMzMwZGJjYWRiOTMxNzFmNjIzN2ViMThkN2FhODFiOTk3NGRlZjQ2YSByZWxlYXNlMjUtbWFpbnQKKzUyMDY4IGZmYjkwMTM3NGEzODI1MzlhOTA2NTdhNTRjODljY2RlMDhmZjJjZjUgbGVnYWN5LXRydW5rCis1MjA2OSBkOTE4MjZiYWM2NTU1Y2IwYTYxNDZiNzU1YzY2Y2I0NWUzYzRjZjY5IGxlZ2FjeS10cnVuaworNTIwNzAgOTVkMjQ3M2Y3NzcwY2IxMGM2Zjg5MzVjMDIxMTZjZGI3N2QxNDM2YyByZWxlYXNlMjQtbWFpbnQKKzUyMDcxIDljYWY1YTlkYTU1NGQwYmFiM2JhMWFjODQ5NjJjNDZiMDc1NGJmYzAgcmVsZWFzZTI1LW1haW50Cis1MjA3MiBiN2FlODk3N2QwNmU0OTdkNmZkYWRlYWEwYzg2ZDMzNmFlZGNlYWNkIGxlZ2FjeS10cnVuaworNTIwNzMgOWJlMDMyMjZhN2JmOGRhOTllZGYxNzkwYWU1NTk4NjIzMmZlYmEzMiByZWxlYXNlMjQtbWFpbnQKKzUyMDc0IGNmNThmYjg0NTBiYTMwNWQ0ZmMwNTlkOTA5NWE1ZWFhMDAyOTdjY2UgcmVsZWFzZTI1LW1haW50Cis1MjA3NSA0MGUyZmVlMDNhOTQ5MjI1MDk4YmI4N2Q0YmZiNDI4ZjdmY2RjZmJhIGxlZ2FjeS10cnVuaworNTIwNzYgNTEzMGI2OGI1NGU5NGE4YjA5MjIzYWQ5NTJjYWExNzA2NTNmMGYxMCByZWxlYXNlMjQtbWFpbnQKKzUyMDc3IGRmZDgwOWRjZjY4MDAwZmU2YTRhNjgwYTI1MGMxZjllYjk4ZDJlYzIgcmVsZWFzZTI1LW1haW50Cis1MjA3OCBjODlhNzU2YzA5NjVhOTBkMzVjYTYyMWIzMGI3ZDQ1MjFhMjZlZTU0IGxlZ2FjeS10cnVuaworNTIwNzkgOTA3MjhkZmMzM2U4NTg4NGRjY2VjYjgzNmU1YjAxNDVlYWVmODQ3MyByZWxlYXNlMjUtbWFpbnQKKzUyMDgwIGQ3NDMzODExMzFkNmM5ZjFiODkzZTEzNmExNjg0ZWVlNzc2MTg5YmIgbGVnYWN5LXRydW5rCis1MjA4MSBiZjQ3ZGU2ZDljOTE4ZTIwNmMzYWI3ZmNkZWNmNDUxZDg2ZmQxYjE4IHJlbGVhc2UyNC1tYWludAorNTIwODMgMjU3ZGFmMzliMDhjNjhlNjJmNGU3MGQ1NTEzOGQyMjY5YTgwOGMyMSBsZWdhY3ktdHJ1bmsKKzUyMDg0IDg5ZTRhZWJiZjMxYzQ2MDkzYjNjY2E3YzgxODIzYzg3MWRjYjZlYzkgbGVnYWN5LXRydW5rCis1MjA4NiAwMGFmNjk4NzAyNmE2ZDVjMWUyZDNlMTY0NWRkMWY2YTk3YjM5MGE2IGxlZ2FjeS10cnVuaworNTIwODcgMWRhMDRjOGVlOGZmMDAzMDg4NzA3OGE4YmRhNjhlMjQ1ZjZhZDdlZiByZWxlYXNlMjUtbWFpbnQKKzUyMDg4IDlmY2FhOGVlOGMyMmZkYjNlZDYzYzMzYTM2Mzc5MDg1NzZiYTVlMTMgcmVsZWFzZTI0LW1haW50Cis1MjA4OSAxNjk3ZDBkNGVmMzM3YTg4MjJiNTkzNTBhN2JhYTAxNWFlMDk0N2E3IGxlZ2FjeS10cnVuaworNTIwOTAgNWMzNmVjNWZkM2MyMzZlYjZjMDQ0MGNmYmU1ZmQ3OGU5OWY4OTg0NiByZWxlYXNlMjUtbWFpbnQKKzUyMDkxIGMwZTcxYTRiNzFjNzQ2ZjBiOGJkYWI1MDU4YzFiNWEyM2ViZmY0MWYgcmVsZWFzZTI0LW1haW50Cis1MjA5MiBjZGMzNjdhYjNiYmZjYjExZmRkNGY1Y2NjYzJkZWU4NzE0YjE2MjU3IHBlcDMwMl9waGFzZTIKKzUyMDkzIGIxNDQ5YTdlMTVlZGVlYWQ4NTdmNTNjYjgwZmY1ZGU5MzZmZmNmZGIgcGVwMzAyX3BoYXNlMgorNTIwOTQgYjQ1NTNiMTJlMjViZTlhY2Y2M2JkYjExYTM2YzdmOTFmMzBmN2UzMCBwZXAzMDJfcGhhc2UyCis1MjA5NSBiMjJiYWExNTQxNDc0ZjUxZmEyY2NmNTJiYzMyMjlkOTI5Yzk2ZTJiIHBlcDMwMl9waGFzZTIKKzUyMDk2IDg0YWZhMzY2ZWVlN2EyYjA2NTQxZTlkYjgzYTBhMzQxOGM3MTIzMTEgcmVsZWFzZTI0LW1haW50Cis1MjA5NyA0NWRiY2IwZTlmYTlmZDRmOTE4NjM5NzAyMTRhOTBiMDZlMDhmNGU4IHJlbGVhc2UyNC1tYWludAorNTIwOTggODE4MTE4YzNhMzQwZGZhMTI3YTJmZWEzY2ZkYWZlMzM1MjcyYzE0NiByZWxlYXNlMjQtbWFpbnQKKzUyMDk5IDU4MGY2YTY5NTE3MjM5NzVjNWVjODMxZjU0NmU5MWYwMGY1ZTU1NGIgcmVsZWFzZTI0LW1haW50Cis1MjEwMCAyYzg5ZDYxNmE5ZWQzN2MwMWYyYmI1NjdlODAwNzA1NDRiZWE2YTBhIGxlZ2FjeS10cnVuaworNTIxMDEgMmUxYzQ5Mzk1Yjk2MWY2NTU1NGY5YTFhNmQ2NzkyOTU0ZjdmZjkzNiBsZWdhY3ktdHJ1bmsKKzUyMTAyIDRkYTRkZTk1NDAxMmI0OWYzNTliNDFiOWU1NDU3YmY3N2FiODk2ZWEgbGVnYWN5LXRydW5rCis1MjEwMyBmMDE5ZTRmODYyODc3YWE3YjBiOTQwOTYyYmNhOWRiMzJlZDY3Njc1IHJlbGVhc2UyNC1tYWludAorNTIxMDQgMjhhOTRiZjdmNjdmM2M0YjFiMmM4ZmYwZGRlM2IwZmY3MjEwNWI0ZCByZWxlYXNlMjQtbWFpbnQKKzUyMTA1IGRlN2MwY2I1YTg3Mjk1YzZhMTQwMzY3YWYwYmIyZWE0YzRmZDkxMmQgcmVsZWFzZTI0LW1haW50Cis1MjEwNiBiMzMyZTFhYzY2Y2NkN2M2ZWY3ZjBmZTY2M2EwN2JjZGJlZGIyY2ZkIHJlbGVhc2UyNC1tYWludAorNTIxMDcgMDYyOTFlYWRkZTJkYjVhMmVjZDMzYTRiMjcxODQxZjM1YzM2ZjRmYiByZWxlYXNlMjQtbWFpbnQKKzUyMTA4IDQ0M2I4NzNmOWViOTA4NTVlZTRjMmZiNTI3NmU5ZDQzZWY4YmZjMGYgcmVsZWFzZTI0LW1haW50Cis1MjEwOSA1ZGQ2YzkwZDQyMjJjYjllNmQ3NmEzYjZmOGU0MmM3ODc3YTQwNGVlIHJlbGVhc2UyNC1tYWludAorNTIxMTAgNmIxYzRkN2QzYTI2YzMwNTQ1ZmZmMDNkNDllNWFlNWRhMzk1NTU5YSByZWxlYXNlMjQtbWFpbnQKKzUyMTExIGI3ZTM0ZmJjODBhZDY5YmNmZmNmOGUwMTA4ZmY4NDhhMmE2MmYxOGEgcmVsZWFzZTI0LW1haW50Cis1MjExMiA1MmU5OTY0ZWY5MjJkNzczMDQ4ZmJhODNmMjdjNzU2MDg5NzRmZjg0IHJlbGVhc2UyNC1tYWludAorNTIxMTMgNTRkMTc3ZWRlODgzODgwMmQ2OWIwZTk4MWVjNjI4ZmI2NDk5NmJjNiByZWxlYXNlMjQtbWFpbnQKKzUyMTE0IDhjODNmZDc5Y2VlNWJlMzA2NDY3NjIxMzQxNTU0MTliMDUwNGIxNDEgcmVsZWFzZTI0LW1haW50Cis1MjExNSBlZjA5ZTI2ZWYwOTlhNDM5MTViMDhjOWVhOWEwODMxYTk0NjgwOGY1IHJlbGVhc2UyNC1tYWludAorNTIxMTYgMmYyMzhhMmNkMTg5ZGZjMzdkNTdiNTNhNzAwZTQwOGJkMzU4ZjcxZCByZWxlYXNlMjQtbWFpbnQKKzUyMTE3IDBiNmIzNjBlOTIxNzk1MTMxMTZkZDhlNGU0ZWI3NGFhZDgxOTRiY2YgcmVsZWFzZTI0LW1haW50Cis1MjExOCA5ZTc2M2JjZDEzY2I5ZmViYmMzNjc4NjU0YmE3ZGNjZGUyODY0YjRiIHJlbGVhc2UyNC1tYWludAorNTIxMTkgMGQzNWI5Zjk0YjE1MTZjZjJmNWVlMjZlMWMxYjFhNTA2NWU2NmNhNyByZWxlYXNlMjQtbWFpbnQKKzUyMTIwIDkxNjc5Mjg3Y2I5NmNmOTg2YzAyNzI0M2JkODAxMGVhZGU1NWJjYzkgcmVsZWFzZTI0LW1haW50Cis1MjEyMSA0N2FiMGMyN2RkMWY5MjJmNGY2MGRiMzdmMDRiNWU1N2U5ZDIzNzhjIGxlZ2FjeS10cnVuaworNTIxMjIgMzYwZDA5NzFhNmVlZjFkODc4ZjBhMGQ1MzRhNWRhMzU1ZDEzODY0YyBwZXAzMDJfcGhhc2UyCis1MjEyMyA5ZTM1YjYyZWQ0ZDJkZjk3NTcyNTkxYzRkMWM1ZmE4NTkyODYyNTlkIGxlZ2FjeS10cnVuaworNTIxMjQgZmQxNGJiNTgzMWNkYWM0Y2NkYTVkN2E5NDJjMDEyNGE3ZWI5ZGM1ZiBwZXAzMDJfcGhhc2UyCis1MjEyNSBhZGE1NmI1NGRiOWE3OTM0Y2FhYzA5NDMyMWEzNzdkZmIwYmE0NTAyIHBlcDMwMl9waGFzZTIKKzUyMTI2IDY2MGNkMDcyMDgwZGYzZThiMDQ1NmQwMjEwZWRmNGE5N2UwZTQzMTcgcmVsZWFzZTI1LW1haW50Cis1MjEyNyA3OWI2NDRiZjAxMTY0N2E1MzFkM2VmZDJhNjNkNTdlNTgzOTBkNTVkIHJlbGVhc2UyNC1tYWludAorNTIxMjggZGI2Y2EzZWE1M2U1YjY3YWU0MTg0MWU1MGU3NWNmMjA4Mzg1NTNiYSBsZWdhY3ktdHJ1bmsKKzUyMTI5IGY1ZDdkZTUwMzFhYTRlMjI3ZGRlZDIyNzE5NTgzOGY2MmZlMWY3YjYgbGVnYWN5LXRydW5rCis1MjEzMCBjYTg4N2Q1NWM1OTIxM2QzNGRlODc4MzQzMjhhYWY5MTNkOTIwMmI5IGxlZ2FjeS10cnVuaworNTIxMzEgOGEyODUzYmY5ZWNhZDNiMTY1ZmRmOTdjZThhY2Q3NzQ1Njc0NTU5NSByZWxlYXNlMjUtbWFpbnQKKzUyMTMyIGUwMzljZjZiN2Q0MjljZTU5MDVhN2ExYTgyYzc1YTIxMDBmZDRkNTQgcmVsZWFzZTI0LW1haW50Cis1MjEzMyAxYjYxZTgyNjYwYmE5YzljMDEyMzIyZjQ5ZDQ3MjgxZTA0NTg4ZmVlIHJlbGVhc2UyNC1tYWludAorNTIxMzQgMTBiYjdhY2JiZGM4MzdlMjlhOWIxMWYxMzg3YTZiMWIyY2EwNDVmYiByZWxlYXNlMjQtbWFpbnQKKzUyMTM1IDJhZGQ0NGMwZGU2YzdkYWE2NDdlN2Q4ZDI5MzYxZWI0OWU4YTY1NDcgbGVnYWN5LXRydW5rCis1MjEzNiBhOWIxZjQwNGU4OGI1OWNlNDgxZjNiZjgyNzYzMmZmMTAzMjY4YzFhIHJlbGVhc2UyNC1tYWludAorNTIxMzcgMGM4ZTlmOTI3MmQ1ZjNlMTQ0NzFmNTUwYjA0MjBiMDg3ZDI2NzRmNCByZWxlYXNlMjQtbWFpbnQKKzUyMTM3IDBjMzY0MTBjMzllOGRkYmI4OTUxODU3ZGM0YWRmMzNmMjlmZGMzNWEgbGVnYWN5LXRydW5rCis1MjEzNyA0ZWIyODZlOTMxYTk1ZGRkYjE4ZDNlY2M2OWFjOTczMjQ3NWY0ZjNlIHJlbGVhc2UyNS1tYWludAorNTIxMzggNzk4OTM1ZTEyOTVlN2ZhMzI0MTA5ODMwOGU1NzUwMmY1MTVhZWVkZiByZWxlYXNlMjUtbWFpbnQKKzUyMTM5IDZiYTQwMmI2MDA0MThhNTY4NDUzZmFiOWVlZTdmM2NiOGFhMTQwYTYgbGVnYWN5LXRydW5rCis1MjE0MiBiZmFjMjMzODhhMjI0ZTc5OGJjMjExZjVhNmZiNTZhNzlkZDAxNjk5IHJlbGVhc2UyNC1tYWludAorNTIxNDMgZGY3YTU0MzVlY2JiNWNmZmI1NjBiZjIwOTMzMDRhZTk4NTg1MzUyMCByZWxlYXNlMjQtbWFpbnQKKzUyMTQ0IDQyYWJmYjM5MTMwMGEyNTA3NjU3YTlmNTUyMDllY2I3NTIyMWUyZTQgcmVsZWFzZTI0LW1haW50Cis1MjE0NSAwNGVjMzkxNDEwY2JlNDZlYjkyZmQwOTAzMzUzMjQwZjc3YTc4NmI3IHJlbGVhc2UyNC1tYWludAorNTIxNDYgNTI3MGIxZTM2NjQ4ZWYwNDI3OGFhY2QzODZhZjEzNjY4NjExYzU4NiByZWxlYXNlMjQtbWFpbnQKKzUyMTQ3IDQ0MDRhMzk4MTQ3MDY0MWQzMTdiODk5YTU1OTkwOTE5MzVmNjI2MTUgbGVnYWN5LXRydW5rCis1MjE0OCA4YWFhM2Q5MWVlZmE3ZjI5NmNmMmM3YzNkNzkxYmZiN2UzNjI2NjQyIGxlZ2FjeS10cnVuaworNTIxNTIgYjFlNzM3N2VjZjA0NDYwMTA0MzdjMjRjYmNmZDZkZDE3MGMxZjQ4OCByZWxlYXNlMjQtbWFpbnQKKzUyMTUzIGU4OGM0MjY3YWNkMWM3OTE3NGJkMGE2YTEzODIzODNmMjZjN2VmNjIgcmVsZWFzZTI0LW1haW50Cis1MjE1OSBhNGJiZmNhNDBjN2NmNzZmMDFiNWQ4MjRhZDZiNzAwM2EyY2U2NWVmIHJlbGVhc2UyNC1tYWludAorNTIxNjAgZjZiYmU4ZDZmYTMzMDM1NWUyZmE2MWE3ZGU4MzIyMDUzYTU0ZTJjYSByZWxlYXNlMjQtbWFpbnQKKzUyMTYxIDFmNTg4YTk4MmNjNTZjNzVlYmI4MGFlMDRkNTg5MTRkZDA5MDlhNmEgcmVsZWFzZTI0LW1haW50Cis1MjE2MiA4MDE3YjNmMjFmNjJlNmEwNGI3OThkM2E2MjJiZWJhNDI3NDFkMzNjIHJlbGVhc2UyNC1tYWludAorNTIxNjMgYzI3ZDhmODlhYTg5MTU1MTljMTBmZGE3ZmQ1YjcxYTYyMWYyYmQxYiByZWxlYXNlMjQtbWFpbnQKKzUyMTY0IDk4MTljZGQyZmNiMTU2OWFkYmE5M2ZjMzI4ZWQwNTAyMjdiNzI3Y2EgcmVsZWFzZTI1LW1haW50Cis1MjE2NSBhOWZlZTFmNjJmMTc2MDY3NjY2YzA4ZjdhNmZhYTg4ZWY0MDU0NTI2IHJlbGVhc2UyNC1tYWludAorNTIxNjYgYWIxMzU3NjM3NGIxYTk1ZmY3MGQ5ZTlhMzg1ZDBlYTIyYWYwZTU2MSByZWxlYXNlMjQtbWFpbnQKKzUyMTY3IDVlMjQ0OTk0ZTQyZTUzNDI3NWRlMjRiYmYxYTViODQ5M2Q1Y2FiNDQgcmVsZWFzZTI0LW1haW50Cis1MjE2OCA1ZDkzZTVjY2IzMWU3NGM3ODM0MzhkZGM3Nzk0ODgxNTU3ODM1MGJmIHJlbGVhc2UyNC1tYWludAorNTIxNzAgY2Q2Y2U2NjZlZmY5MWJmYTIxMjY1MTI5MDRiNDUxOTdjNGQ4NWEwNyByZWxlYXNlMjQtbWFpbnQKKzUyMTcxIGU2NTgzNjgxNTc5MWM3YmY2ZmYwMDEyMzFmMDQwODFjMjQ4YmM5ZTcgcmVsZWFzZTI0LW1haW50Cis1MjE3MyAzYjU3ZWVjZGM1MDRhMTAwYjVmZDM0ZDE2YjQyMThhOTA5NTUwYTY4IHJlbGVhc2UyNC1tYWludAorNTIxNzggMmE0NmI3NmJlYjllYmQ5YTI1NjI0MmVkZjA2ZjczMTdhMzUyMjQyMSByZWxlYXNlMjQtbWFpbnQKKzUyMTg2IDQ2NjNhY2UyMzQ5OWNlNjdhZjBiNGNiNTgyOWRmY2FlYjk5NmZlM2QgcmVsZWFzZTI0LW1haW50Cis1MjE5MCA3YmJmZjJlOWE5YzIxOWM1ZjkwZWQ1MWI0Y2JhYjEzMTJjMDVmYmEyIHJlbGVhc2UyNC1tYWludAorNTIxOTIgNWJlYzRhNjdmZjBkYTg4ZGNkNDczODI3NTRmODA4N2I4Njc5ZWJiOCByZWxlYXNlMjQtbWFpbnQKKzUyMTkzIDQ1YWM5Y2UwYmIxNTcxNmRjMWNkZTQ0MTQ5OTRiZTE5MDE5OTI4YTIgcmVsZWFzZTI0LW1haW50Cis1MjE5NCA2YmIzNzVmNTU5Y2U0Njc0YzFjZTdjMzQzMDNhYWU5NjY2MzkyNDllIHJlbGVhc2UyNC1tYWludAorNTIxOTYgZTgxZmY5YWY2NDFkYjI1Y2JjM2NhMzk1Y2I5YTA5MzRhYjMxMWZlMiBsZWdhY3ktdHJ1bmsKKzUyMTk3IDZiMWRkZjM4N2JkMTk1ZTU4YmEzMjQzY2VhYjNkNjY2NjM1YjMwZGUgcGVwMzAyX3BoYXNlMgorNTIxOTggNTQzNGVkNGZlODYyMjY3MWUzYWJkZDk1NGMxNTk0OTY4YjAwOWRmNCByZWxlYXNlMjQtbWFpbnQKKzUyMTk5IDQ3MTNkOTkwMGU5ZTljYjcxNjBhZDFhODdhZGExM2Q4YjgzNTk1ZTcgcmVsZWFzZTI1LW1haW50Cis1MjIwMCA3NzY3NGMwZjkyMTQxMDY5NzU2ZmQ4NjgzY2QzZjk3MjczZjRmZmM5IGxlZ2FjeS10cnVuaworNTIyMDEgNzhkN2JlYTNjMTIyMGJhMjVhN2EzOTkzZTYxMDkzYjk5ZmYyMDc3MyByZWxlYXNlMjQtbWFpbnQKKzUyMjAyIGRkNTRiZDZhNmIxZWNhNGM1ZjMwNzY2OTI2ZGFjZjNjYmNkYTYzMmMgcmVsZWFzZTI0LW1haW50Cis1MjIwMyAwNzZjMjBjYTVkN2I2ZjM1OWMzZjk1NjE5YTVjMmM0YmU3ZmI4ZWEyIHJlbGVhc2UyNS1tYWludAorNTIyMDQgMjZjMmZmNzI4MDI3ZmY4OTJlM2FlZjEzNmU1NmFkMmIxOTg2MWJjZiBsZWdhY3ktdHJ1bmsKKzUyMjA4IDVhZWE4YjFmZDI2MjU0MGQ4NGY4ZWIxN2Q5NDhmMWMxYmY4ZjZiMjQgbGVnYWN5LXRydW5rCis1MjIwOSAzNTcxNDcwMGNmODdjNTRiMDQzMWFiODU0OWVjYmIyNWZiNWY1NGU0IHJlbGVhc2UyNS1tYWludAorNTIyMTEgMGU5ZmRiMTY0ZDIwNjEyZDY1Yjg2MjhkNWI1NTVmZDczZWIzYjUyMyBsZWdhY3ktdHJ1bmsKKzUyMjEyIDk5NGFkNzUwYjBlM2JjMDU4YzU4OTNiMWJkNWZmOTFkMTcyYWMzNTcgbGVnYWN5LXRydW5rCis1MjIxMyA1ZDgzOTk0Y2Q4Y2RmNDBhNGIzMzVhODNhZmFkYzY1ZTE0MDU4YTM1IGxlZ2FjeS10cnVuaworNTIyMTQgZDI0ZWFhZWRhNzQ4YzQxNmY2NzI2ZGNiODJjODRkODQ4MTM4MzU5NiByZWxlYXNlMjQtbWFpbnQKKzUyMjE1IDkxMThlYTc4MWZkNTJhZjRkYTY0OTQ0MTUyMDY1MDI2MWQ1NmRkZGIgcmVsZWFzZTI0LW1haW50Cis1MjIxNiAyYTA1ZWU0YTIzZTA3MWQxZWQyNWY4YzgwOTE5OTAzYWQ2MDI2OTI1IHJlbGVhc2UyNC1tYWludAorNTIyMTggN2MzNDk0NGQ0YzgwYmU5NzU4YzAwYzZlMmM2NjIxNWRlZGZmMGE3OCBsZWdhY3ktdHJ1bmsKKzUyMjE5IGEyZjI2Zjk0NGI2NTcxNzlhZmUzNmQzZTZkNmZmZThhMjgyYjkzNDQgcmVsZWFzZTI1LW1haW50Cis1MjIyMCBlZDg4ZDZiN2MxZjk2NjkwM2JkOTFkOWE5ZWU3ZTAzOTFhYjIzMjdhIHJlbGVhc2UyNS1tYWludAorNTIyMjEgMTZlMjg5MmUxZTNjMmEyNjkxNWMyNjE4ZTcwNWM4OWFiZDY0MmM5OSBsZWdhY3ktdHJ1bmsKKzUyMjIyIDllMDQzMWZkNjc0YTI0Zjk4ZGIxYmNhYjdhY2IzYzYxZTkwMmY4YmEgcmVsZWFzZTI1LW1haW50Cis1MjIyMyAzNDc3OTQzOTFjZTQzNDBiYjVjMjFiMWU4MWM2NDYyMmFkNWVlZmE4IGxlZ2FjeS10cnVuaworNTIyMjQgZDNjMTk0N2QxNjY2NTMxZTFiYTFiOTgxZjgxMjZiM2Q1YjAwYWVjNiByZWxlYXNlMjQtbWFpbnQKKzUyMjI1IDkzZTJiMzExMmQ3OWUxMDllYzViNjQwYTBkNDMzNTM1YjBmMTI2NWYgcmVsZWFzZTI1LW1haW50Cis1MjIyNiA2OTljYzZhNWM4NmViOGE1OWFiMDU2OTFkODA5NWFlZjUxY2U1ZTYwIHJlbGVhc2UyNC1tYWludAorNTIyMjcgYjlkMzMwMWU1ZjE5NWU2MGQ5OTM3YmE3YTk5ZTQ1YmNjMjQxYjQzYSBsZWdhY3ktdHJ1bmsKKzUyMjI4IGRlZWVhNGRhMWYzNTQ5ZWYzM2FkZWM2MTk2MDQ5Yzc0ZDQ3NGE4MmIgcmVsZWFzZTI1LW1haW50Cis1MjIyOSAyMDQ3NGQ5ZTc1ZTE0YmRjMjA0NDY5ZGFkNDA2YjhmZTM5Nzc4ZDY5IGxlZ2FjeS10cnVuaworNTIyMzAgZjgwNWNjY2UyZjU2NGUwNTJlNjg2OGMwYmI2ZTI3NDY5ODIzYzdhNCByZWxlYXNlMjUtbWFpbnQKKzUyMjMxIDY5M2ZmNWQ3MzQxMjUxZjk2MzE2ZWQxNjVlYjRlZWZjNDZkMzVkODQgcmVsZWFzZTI0LW1haW50Cis1MjIzMiAwZGMyNjFkOGM1N2ZhODQ1MzFmMWQyODNlMTkzYTA0YjQxMWYzYjJhIHJlbGVhc2UyNC1tYWludAorNTIyMzMgODM5NjU5NzdmMzRhMWFlMzk0NzUwMDIwYzM5OWQ4ODM2ZDA3ZGVmNCBsZWdhY3ktdHJ1bmsKKzUyMjM0IDc2ODg5NGYzM2YxYzM0N2Y0NDA0ZGU5NWRiZjNiZWUzNjMxYWVjZTIgcmVsZWFzZTI1LW1haW50Cis1MjIzNSA3MTE3ZjZlNWFjODM5OGRlNzFiYWZjZDI1NjNjMGI4MzFkNjBlZTY4IHJlbGVhc2UyNS1tYWludAorNTIyMzYgOTFiZTk2NjQ2NDA3MzI4YWE3N2ZkM2M0ODAyY2JjODhjOTgwMGU2MSBsZWdhY3ktdHJ1bmsKKzUyMjM3IDIwZGQxM2FlZTIzMzQ5MTIyOTIxYWNiMjJlN2UzNDQyY2I4NDFjNjUgcmVsZWFzZTI1LW1haW50Cis1MjIzOCBjMzM5YTFhMTZlYzViNjQxNTZkMjYwZmM2MTkwZDNkNmRmMTNiZjM2IGxlZ2FjeS10cnVuaworNTIyMzkgNDc1MjI4ZWQyMDU0Yzc4MmNlNTIzY2RhNjY0NDY4Yzk0NTA0MzAzYyByZWxlYXNlMjUtbWFpbnQKKzUyMjQwIDBhY2UzYzgwNjExNDEyZGI4ODAxZTdhMzQwNzhjYjM3OTBjNjkyYTcgcmVsZWFzZTI0LW1haW50Cis1MjI0MiBhZWVlOWY1YTBiM2VjMGU1YzViNjJiYWQzNjRmODI4NzNiMGIzM2E3IGxlZ2FjeS10cnVuaworNTIyNDMgZGUyYjZhMWM5YjMxMTExNTUxYzg2ZTBkYjhhODFhNzE0MGZlZDY0ZSByZWxlYXNlMjUtbWFpbnQKKzUyMjQ0IGE2MDQ5NWIzNmYzOGNiMmVjNGI1YjEwYjRlOGQ1OGJmMGViNjEyYjUgcmVsZWFzZTI0LW1haW50Cis1MjI0NSBjMzg3N2I2NDMwYjVkODllMmUwOWJjMWE0ZTg3NDYyMTFiN2Y2NzE5IGxlZ2FjeS10cnVuaworNTIyNDYgZWRhOTMxZjM5OGMwZDVlZmNhMGY0OGVkMjhiN2MyNGM1N2UwYzBhNyByZWxlYXNlMjQtbWFpbnQKKzUyMjQ3IGVkZTA1ZDM0YzUxODNmZTMxNmE0ZWJjMDBjNzQ4ODBmM2RhOWMzYzAgcmVsZWFzZTI0LW1haW50Cis1MjI0OSA0ZWVmY2U4YmMyZjc0OGEzMzdkYTdmYmMwMDdiYjIyNGExOWUwOGQ3IHJlbGVhc2UyNC1tYWludAorNTIyNTEgNjY1ZDc3OThhMWJjOGE2MGI2OGJkZjMyZWVhMDM5NDJlYTRjNjNlZCBsZWdhY3ktdHJ1bmsKKzUyMjUyIGJmNmEwMmFkYTQ0OWU0YTJjOTgyZTUzNjM0NjM4NDVlODg2MGEwYjcgcmVsZWFzZTI1LW1haW50Cis1MjI1MyAzODM1Njk1MWMxOWY5OGFhNjRlZTQ0ZTY3YzE0NWVjNzcwYjMwY2E1IHJlbGVhc2UyNC1tYWludAorNTIyNTQgMWU0ZTAxNWMwN2MwNzRkZTdkYjQ5ODAzNDZkOGQxMTI1MzliNGE2OSByZWxlYXNlMjUtbWFpbnQKKzUyMjU1IGY0NmJhZGM4ZGMyMTMzOTgyZTMyOGU0NjBjOWMwODNhMjI2YTJhMjAgbGVnYWN5LXRydW5rCis1MjI1NiBkMzNlNDAxMWUyMDI5NDc5YWFhNTdlY2IwYmMwOWZkZTc3Yzk3OTg0IHJlbGVhc2UyNC1tYWludAorNTIyNTcgMjhkYjYxMTAxNDYzNmVlYTFjODhkMGNkM2ZjMmNkYjE0Yzg4NDMyZCBsZWdhY3ktdHJ1bmsKKzUyMjU4IDhjYTlhN2IxMWE3ZDQyNjFiYTBjMmI4ZTZhM2FiMDdkMzZlYTIzZTcgcmVsZWFzZTI1LW1haW50Cis1MjI1OSA1MmI2NWYyOGJlMTcxNzIwMzFjMzMwMjM4NTUxMzdlOGE0OGViNWM0IHJlbGVhc2UyNC1tYWludAorNTIyNjAgY2U1MTUwMzJmY2UzN2FhMWIwZDg3NjhkMDc3NjJkNzFiMmVlMTVmMCByZWxlYXNlMjQtbWFpbnQKKzUyMjY2IDMwOTA5ZTFjYWY3OWM4ZDU0NDYyZDVkNTkzMmFhNmFmZWJhZjkzMTcgcmVsZWFzZTI0LW1haW50Cis1MjI2NyAwZGFjNmRlMGZlNzhhZGZiZjk4ZmRlZWE0MzE4MGZmZTg4MzhjNmY1IHJlbGVhc2UyNS1tYWludAorNTIyNjggNjZiODNkMWJhMmZjNWY5OWY5OTI1N2FhMzNmN2Q4MDYzYzdmMWU0MyBsZWdhY3ktdHJ1bmsKKzUyMjY5IGIyZWRkNTEyNDFhZTIyMWE5NGNiMWQxNDY2NmQxZjZmMjkzNTdkMTUgcmVsZWFzZTI0LW1haW50Cis1MjI3MSA1NmI5MTFkY2MxODVhYzYwZmFlOWJlODM0ZWQ1NjNlZmJiZjg5ZDBiIHJlbGVhc2UyNC1tYWludAorNTIyNzIgZjdmYmRjNTYyZDdhZGY2ODk3YTNkNjhhN2QxYjhiNDIzYjE4MWY0MSByZWxlYXNlMjQtbWFpbnQKKzUyMjczIDViY2FiNGNhNjYwODA0OTdlYmQ3Y2NjYzc3ZDkyYjgwZjIzODc1NzUgcmVsZWFzZTI0LW1haW50Cis1MjI3NCA5ODUxMjY4NzM3NDBkZWY1NTc3M2JkZTU0MGM2ZDI2MjMxY2M0NmFjIHJlbGVhc2UyNC1tYWludAorNTIyNzUgYTFjMzgxYzA1ZGRlYzQ2NzcwOGVmNDlkOWVkMmMwZGE4ZGVmNTk3ZCByZWxlYXNlMjQtbWFpbnQKKzUyMjc2IGJhYWVlYTcyMmIxYzk3Y2EwMzE3OWU1YTAyYTQ3MTdlNzAxN2JhMmEgcmVsZWFzZTI0LW1haW50Cis1MjI4MiBhMDQ1NGYxZjk3YzZjYWJiMzZjNGZhY2NjNTg5MzhjOWRiZjA5NDVhIHJlbGVhc2UyNC1tYWludAorNTIyOTMgYWM2NTBhZDZjODE3YmUyYTU2Njg3YWEwYzc5M2QxMWQ5MzQzODI2OSBsZWdhY3ktdHJ1bmsKKzUyMjk0IDY4YjRkMGRhYjQ5YWQxZWVkNmI2Mzg2YzhlNjIwZGY2OTcyOGYzNDAgcmVsZWFzZTI1LW1haW50Cis1MjI5NSA3MDE0MGNjY2QzZGE3M2JkZDQyNjM5OGNmYjVhMTAwMzgxMThiMDM4IGxlZ2FjeS10cnVuaworNTIyOTYgNjY3MGRkYTRiMjdkOWYyZDEyMjBlYjQ5NGUyYmQ4ZjE2ZTg0ZDBjNSByZWxlYXNlMjUtbWFpbnQKKzUyMjk3IGRlYjFhMGI1ZGJjYjhlYWI3ZDg0OWJmMjE0ZDUxNzYxNmJhYjRjZTEgbGVnYWN5LXRydW5rCis1MjI5OCBjNjhmYWMxZWI2Y2JlNDc4YjRjNjU4MzkxNmU3MWM0MTkwOTNkYmQ1IHJlbGVhc2UyNS1tYWludAorNTIyOTkgYzAyMDgxOTVhNTU4NTA3NTYzYThiZGZjNTM3MDJkMzM0NDBkMzc0OSBsZWdhY3ktdHJ1bmsKKzUyMzAwIDc2NDBhNTc4MjJhNjdhYzZhZDk0MTkyY2RmNGU3YjM0ZTlmNjdjN2YgcmVsZWFzZTI1LW1haW50Cis1MjMwMSA2NDc1OThjMWE5ZDkyNDNiYzZmZGJhMDY3YmU0OGFhMTE3MzMyNDYyIGxlZ2FjeS10cnVuaworNTIzMDIgNmU2YzIyMGMyZmE2MjJhYzI2OGRkNGY4NTcxNTIzOGJjYjVjMWY3YiByZWxlYXNlMjUtbWFpbnQKKzUyMzAzIGQyN2U3NjMyNjgxOTg3YWU1Njk5YjUxZDg3YzI2MDRiMjcxNDM4OGQgbGVnYWN5LXRydW5rCis1MjMwNCAxN2Y0MTc4MDllMjM5ODNjMDNkNjY2MmZiY2U0YzQ5NmNjYjNmNzYyIHJlbGVhc2UyNS1tYWludAorNTIzMDUgNDE1OTM4NmY4ZGJkZmMwNTU2ZDYzMDc2YWVmNWU2ZGE0MzFhMzc5ZCBsZWdhY3ktdHJ1bmsKKzUyMzA2IGEwYmY3MjgxYmQyMGI2NWE1ODRmNGE2Mjk5Y2JlY2UyNTk1NmQ4MzQgcmVsZWFzZTI1LW1haW50Cis1MjMwNyAxMGFiZmNiNjZlNjdiZGVmYTdkN2M1NzA5ZDk1NzA2N2ZlMjRmZTI3IGxlZ2FjeS10cnVuaworNTIzMDggY2Q1ZjdjZDIwOThlYjNmNzRhYmU4ZmI4NGZmYTkxMGIyZjEwNmViNiByZWxlYXNlMjUtbWFpbnQKKzUyMzA5IGY0NDMwYmVjMzAxM2UyOGY5MTExNDVkYTVhZTZjMGQ2OTE3MDgxY2QgbGVnYWN5LXRydW5rCis1MjMxMCAxYTFhNTlmNTBiNGFlMjI4Zjk2MWM5YzJkZGYzNTY1YzllNzUyMTAyIHJlbGVhc2UyNS1tYWludAorNTIzMTEgYTI0ODAxZGE5MmVlMGQ1MmI2MTAzMGZhZDdhNzBlNWU2YWYxYjhiNiBsZWdhY3ktdHJ1bmsKKzUyMzEyIDFlOGU5MDBkOWY0OWQyN2I0MGIyNWI2NDNhNDNjYWI5NWI5NjdjOWIgcmVsZWFzZTI1LW1haW50Cis1MjMxMyA3ZmFiYmM0YTBjNGU4NmI2NjgwM2U4NDYyZDc3YzQ5ODE3OWU2MWY5IGxlZ2FjeS10cnVuaworNTIzMTQgM2NmYTg4ZmIwZjQ1Mzk3OGMwYTZmMjBiMDNjMjY2ZjgyODQzNDEyZSByZWxlYXNlMjUtbWFpbnQKKzUyMzE1IDYzNTQzOGIyOTY3M2ZkNjExZjIyOTliZDdjODY5ZWYyMTRiZWRiMWYgbGVnYWN5LXRydW5rCis1MjMxNiBjNGM0ZWVjNjRjMTM2NGJjNjg4NGFjMGI1NGE2YmY3MDg2ODMxNGU2IGxlZ2FjeS10cnVuaworNTIzMTkgYzc3ZDlhOWZlNzA0MzY5MmYzY2NlMmNhZTEyMTIxNzk0YzFhZDY5OSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTIzMjAgOGU2ODViMjM4OWRjZWVhZjM5MTRhNTE0NjA5NjEzNDg1YjRjNmNkYiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTIzMjcgMzliOTkxYmE4NzhmNzkwNWM2ODQyODU0NTMxNjVkZGY2ZmU4MWJkZCBsZWdhY3ktdHJ1bmsKKzUyMzMxIDEwOWY5MGMyNjZmYmMyODczNmM0MzVhNWQ5OTAzNWVmMzA3YmFiY2EgYmNhbm5vbi1vYmpjYXAKKzUyMzMyIDM5ODVkN2UyMDY3ZGI3NWYxNzBlMDg5MTk5NGIwZmQ3MDk2M2U0MGIgbGVnYWN5LXRydW5rCis1MjMzMyBiNjFhOTBlNzQ3ZTdjOTI5MDI1Mjk4M2M2NTZhNDI3MmM3OWY3ZjA2IGxlZ2FjeS10cnVuaworNTIzMzQgODRkM2I3MmRjMzM5MmE2ZDEwZGVjZjliYWNlMGI1YmI3YWMxMjFmOSByZWxlYXNlMjUtbWFpbnQKKzUyMzM1IGI5NGJjYjdhZWQzZGQzYWE3YTBjOWU3YTAyZGQ4ODg5ZWY4ZDIwMGUgbGVnYWN5LXRydW5rCis1MjMzNiAzYmM0YTk0MDFhMTE2MTdiNTY1NzYyZmJkMDEwZmY1MzAyOGQ1NWFiIGxlZ2FjeS10cnVuaworNTIzMzcgZGFlNzRhODA5NGQ5MGEzYjBjNTI2OWZlNjYxZWFhMDA1YjJjZmJiOCByZWxlYXNlMjUtbWFpbnQKKzUyMzM4IGJiMzVjNTViYzQ2NzBiZDBkZWIyOTU3NmUxOWM2Zjg1ZGRmMDJmOGQgbGVnYWN5LXRydW5rCis1MjMzOSAwZjUwNWVjOGI5N2FhMjFlMGZhYTE2ZDQ0MGY0NjkwZjczZDUxZTI1IGxlZ2FjeS10cnVuaworNTIzNDAgNDVlZmU0MzU2YjYxZWRhMDMwOTY3ZjExOTk3ODRhOGZmNGMwOWI5YyByZWxlYXNlMjUtbWFpbnQKKzUyMzQxIGMwMDZkMjI3OTQ4ZGVlZDQ5ZGM4MWUxM2IwNjM1NmEyZTA2OThjMTggbGVnYWN5LXRydW5rCis1MjM0MiAwNWMwY2QyN2FiY2EwODY2MTM0MGNhN2NlODAzNDNjZjdiOWI4NjAyIGxlZ2FjeS10cnVuaworNTIzNDMgZGU4OGMzNjNkNjIyMzYyODYzMzI4ZTI2ZTJiYTMyYWQ4YzJkMmEyMyBsZWdhY3ktdHJ1bmsKKzUyMzQ0IGEyOWQxMDBjNzgxNTNjMTBhMmEyNGFlNzBiYThhOTVhZTg5MjY3YzEgbGVnYWN5LXRydW5rCis1MjM0NSA1NjE1ZWFjOGFhNzk3NmZjZTY2NjJkODg0NjZjNDNhYmZjM2M0NWUyIHJlbGVhc2UyNS1tYWludAorNTIzNDYgMmExYTVkYzI1NWFkYzkyYjcxMTQ4NjgxNTc1YTFhYmMxZjQ5MTY2NiBsZWdhY3ktdHJ1bmsKKzUyMzQ3IDFlNTU1ZjA0OGUzZDRiYmUwYjYzMGM5NDMyYzQzNjVlYjZiMWU5NjIgcmVsZWFzZTI1LW1haW50Cis1MjM1NCBmYTk2YmZmOTNiY2FkMDBhZDczZDY5Mjc0OGY4NjgzOTAzMmUxZTUwIGxlZ2FjeS10cnVuaworNTIzNTYgYmY4ZGFmNGE2ZTcxYTFlYTJlNWRlNTFmYzY0OGRmNzVlNWFhODg0MSBsZWdhY3ktdHJ1bmsKKzUyMzU3IDQ2OWMyZDZjODE2NWIyNTY3NTMzNWFhNWVhMzllODkwYzM5NzBhYWUgcmVsZWFzZTI1LW1haW50Cis1MjM1OCA4NTA1MDgzOTFkNDZiZGU0ZTAwMTcyYTQ5NDkxYzFhYjI5NjAwYTgzIHJlbGVhc2UyNC1tYWludAorNTIzNTkgZTFjYjMyNjQ1Zjc3ZTFmOTdlZjkxNzdjYzEwMTExZDcxODBlYTYwZSByZWxlYXNlMjQtbWFpbnQKKzUyMzYwIDdjN2ViMTkwYjI2NjMwZmM2MmU2NGU4OTU1MDk1MjZkYjZjM2YyNTUgbGVnYWN5LXRydW5rCis1MjM2MSBhNjUxMWU4Mjk3ZjA0OGM1MzJhODc0OTU2Y2VkYTU1ZmY5NTg2ZWNhIHJlbGVhc2UyNS1tYWludAorNTIzNjIgZmI1ZGIxMmYwMjY3NjAyMTljOGFjNjM0NDE1MmM0NjE2OWE0NTIxMyByZWxlYXNlMjUtbWFpbnQKKzUyMzYzIDE0NTEzZGIwZDYyZDUwZmYyMmEyMzc2MWUzM2I5MzU4NzdmZjJlZmEgbGVnYWN5LXRydW5rCis1MjM2NSA1MmZlMGVjZjU1YzFhMTgxMDVmZjVjMmQ3NzlhODcxZjdmY2FmNTQ4IGxlZ2FjeS10cnVuaworNTIzNjcgNDA1MGYyNTNhNmY4YTVmMDI3OTM4OGNiNmVhMTA3OTliNjc5ZDNkNyByZWxlYXNlMjUtbWFpbnQKKzUyMzcyIDM0NTU1NDIyZGM0NWY4OGY1MjkzZmI5ZmJhMzE5YjU1OWU4NzZhYTkgYmNhbm5vbi1vYmpjYXAKKzUyMzc3IDQ5OGNmNGIwOWQ4YWMwM2U0NWYzYTBlMjZhNzNjYjkxM2ZlNzY3ODAgbGVnYWN5LXRydW5rCis1MjM3OCA2NjA5ZjAyMDY0OWYwZDBjZjY1M2U2OWU4YTE5MDZhODZhM2NhNGQzIGxlZ2FjeS10cnVuaworNTIzNzkgYTFhNjc5MTA1Mjg4NmM4OTBhMGYxMTljNTI1YzNkMjcxOGYyN2M0YyBsZWdhY3ktdHJ1bmsKKzUyMzgwIGIxZDcwOGMzM2VhYjQyOTAyNjJlOTY4NTNjZmI0MzQ1ZjllMDczMGEgcmVsZWFzZTI0LW1haW50Cis1MjM4MSBmYjBjNmE2N2E5MzllOGEyZWEyNzc5Zjc5ZTMyYzNiNzY4OWMzN2U0IHJlbGVhc2UyNS1tYWludAorNTIzODIgZWU2NmExNWE5MDMwMjFjYTI1MDRhMzIzMjRkM2RjYmM0NmVhOGE5YiByZWxlYXNlMjQtbWFpbnQKKzUyMzgzIDU5MmFjOTM1MzJlZmRmYTlhNDBmNDdiOTZiMWMxMjMxZDJlYWUwZTUgcmVsZWFzZTI0LW1haW50Cis1MjM4NCAxMDQzNGQxYjQyNjYxYjcwMDE4OGM4MmVmYzM1MDcxZjgyNGNjMWU0IHJlbGVhc2UyNC1tYWludAorNTIzODcgNDEwYzFjNzhlZDUxZTEyZGMzZGU5NTc5NTlmNmI3OTcwYzM3OTk0YSBsZWdhY3ktdHJ1bmsKKzUyMzg4IGUyZGYxMzU2MzQ5ZjE2OGJhZWJiMzM1ZTIxYzE1ODMzMzA0M2Q0ZGYgbGVnYWN5LXRydW5rCis1MjM4OSAwNTA5YWIxNGIyZDk3Y2VlZWZlMjVlOTY0MzJmNGUzNzNlYWFiODJlIGxlZ2FjeS10cnVuaworNTIzOTAgMThjMTJkMzQyMTQzODJmYWY4YzVmYTVjYjNjNjM2NDkwNTM4NDJjNiBsZWdhY3ktdHJ1bmsKKzUyMzkxIDE5ZGUzMTY0OTJlNzM4Y2VlZGVjYjhlYzU4MDg0NzUxMzZkYzY2YzAgcmVsZWFzZTI1LW1haW50Cis1MjM5NCAzYjg1MzMzNDI4Zjk4NmRkNmQ5MWQ1N2YwN2NlNTA3MjFiMDE4NWI1IHJlbGVhc2UyNS1tYWludAorNTI0MDUgODZlYTg4YzUyMDViZjUwNDUxYTMyMzBmNjczNWRjYzJmMjNjOTYzYSByZWxlYXNlMjUtbWFpbnQKKzUyNDE0IDgyNmU4Njc0YTExZDU4OTU3ZmJhZWFkZGU4YzA5NjRlZWMwN2YyMzEgbGVnYWN5LXRydW5rCis1MjQxNSBhMGQ5ZmNmNmYyMTUzZjUyOTdhMTRiZTJlMTk3ZGI5NWExNzE5ODlkIGxlZ2FjeS10cnVuaworNTI0MTYgMzg0ZWY4N2ZjYzI1NzllYTZkNWU5Yjc3ODUwMmEwYzRmZjhjNTEyMCBsZWdhY3ktdHJ1bmsKKzUyNDE3IGM1NDQyYjQyNGE4NjkzODVlMDMzY2U3YzI4ZmU3YWE2MDI3ZGZhNmMgcmVsZWFzZTI1LW1haW50Cis1MjQxOCA1MDMwZmI0YTQwMGZlYmI5YWM4Y2Q0NzkyYjg2NzZiOGU1OThkOTU1IGxlZ2FjeS10cnVuaworNTI0MTkgZTljODQ0YzRkMWExYzk1ODdlZmQ3NmQ5ZTExYjdhZDc5N2FhZWZjYiByZWxlYXNlMjUtbWFpbnQKKzUyNDIwIDc0OWQ4NTVlZTM1NzFhYjdlNTdjMmY0OTE4ZDU1MTAyMWNmYTYzYzEgbGVnYWN5LXRydW5rCis1MjQyMSAxMjNjMTRlZDMwOGExNTM4MWQ0MGIwODM5ZjUzN2QwOGVlZmU4Y2I2IHJlbGVhc2UyNS1tYWludAorNTI0MjMgNGVjZjE2NjI0NDk4NDRlNmUwY2RjOTliNDQ4MTdjZDNkOWQ5MWNiMCByZWxlYXNlMjMtbWFpbnQKKzUyNDI0IDhjZDBiNzExM2E3MWEwNTUxZTM4MzBjZmZmZmE1OGEwMTgxNmEwNGYgcmVsZWFzZTIzLW1haW50Cis1MjQyNSBiMjE0MjdmZjI2NDc1ZjljN2Y0YTcwMWRhMzI0ZTk1MWMyYjE2MmZlIHJlbGVhc2UyMy1tYWludAorNTI0MjYgY2RkMzQ3NmQxYjA2YjNiNGVjYzg5ZWQzNWQ1YjQ4YjZkZmI2MDNhNiByZWxlYXNlMjMtbWFpbnQKKzUyNDMxIGU4MmU2OTZjMDNkYzhhZDYzNmE3MzMxNzUzMzJmMjdjNWM3YzY3YjcgbGVnYWN5LXRydW5rCis1MjQzMiAwNTAwNDBjYmEyNmE0NWE4MTk5OGJkNzk1YTJhNmUyZDAzMzRmNTZhIHJlbGVhc2UyNS1tYWludAorNTI0NDYgOTE4NjU5ODI5NmNiMDllMTU5NTVhNTdkMTg5YTI3MWY5ZDdlODllZCBsZWdhY3ktdHJ1bmsKKzUyNDQ3IDk0NzM2NmUxMzFmZGFlMjAxMmQ4Zjk2YjJkMjlmZjk2MWI2MjhjYTUgcmVsZWFzZTI1LW1haW50Cis1MjQ0OCBkNzhhN2E2MDU2MTkzOTY4ZTg4NTZjYzgyN2Q4M2QxMTM5Zjg4NGU0IHJlbGVhc2UyNC1tYWludAorNTI0NDkgMTU4NmZhYjNjODQ4Yjk0NDcyN2UxYzRmZGQ5N2FmYjM5NjNiNjdlMiBsZWdhY3ktdHJ1bmsKKzUyNDUyIDBjMWNiOTJkYWM5N2VmMzllMTE1ZjljNTljYTMzNDkzOWU4YmM4ZTggbGVnYWN5LXRydW5rCis1MjQ1MyAwZTgzZjhjNWQ3MGFlYzM0NzMxYjBiOGUxZmM1YTcwYWNmYzYyODIyIHJlbGVhc2UyNS1tYWludAorNTI0NTQgYzBmNTZmMjQ2MWY1Mjk4ZmJjMTM5MTRmNzllYTNjNzE0NmZmODc2OSBsZWdhY3ktdHJ1bmsKKzUyNDU1IDVkYzQ3MzE2NTA4ZmI0ZThiZjI2YmQwMmZkYTU1ZTBlZGFhMDFlNDYgcmVsZWFzZTI1LW1haW50Cis1MjQ1NiAwMTVmODlhNzM5MjllNGJiM2NkMmI0N2RkMDAyMWEyMmYzNTg0NGVjIGxlZ2FjeS10cnVuaworNTI0NTcgMzRkY2JjNzQ2MjQzZTY3YzIxNmNjOWM5YWE0OGFlY2JiMDA2OWIxOCByZWxlYXNlMjUtbWFpbnQKKzUyNDU4IGU1Y2I0Y2I1NjU0MWI5N2NiMDI3ZWRhYTJlYmI0ZGJhMzZhNzNlNjQgbGVnYWN5LXRydW5rCis1MjQ1OSBkM2RiYjMyNmZmYmFjNzlhNTdjMzlmNmI3NWNhOTU0ZTRmNjRiNWIzIGxlZ2FjeS10cnVuaworNTI0NjAgYWQ0YzliYTFkYjU3ZmQxZTAyYzA0ZDY2OTc5MWZiOTdlNmI1ZjM1MSBsZWdhY3ktdHJ1bmsKKzUyNDYxIDVhMTA2YjRiY2RkMjhmMjNhYzNiZjk0OWZjZTE5MGUwMGE5N2UxOTYgbGVnYWN5LXRydW5rCis1MjQ2MiBlNTc4MmUyYTQxMmJhMThlMzJiYjY5NmM0Y2U4YjExNTM0Y2YxNzljIGxlZ2FjeS10cnVuaworNTI0NjMgN2FmOTRhMjcyM2VjYjEzNGZmZTBiMGRiYjAzYWVhMWFlOTIzNWY3YSByZWxlYXNlMjUtbWFpbnQKKzUyNDY0IDBkNTE3NmUyYmZlNGI0NGE5MWU3NGIyMzYxZDJmMzkzMzg1YzMyYTMgbGVnYWN5LXRydW5rCis1MjQ2NSBkZGIxZGI1NjU2MDg5M2M0YjdhNTYwZTU5MDM1NWE5ZTVjZTZlMTBiIHJlbGVhc2UyNS1tYWludAorNTI0NjYgZTg2N2I1OTUwNzllOTI3ZTRmMmNlZGY5YTBiYTQyYjUxMTc5MDU5YyBsZWdhY3ktdHJ1bmsKKzUyNDY3IGI1NmI1NjJlM2E3YjdjODFmMTBlMTY5NmFmYWNlMTlkMjA1MmYyYzYgcmVsZWFzZTI1LW1haW50Cis1MjQ2OCA3NjJkY2FkNzIwYjUzZWFjZjE0YTdjMzcwNmY3MmVlNTljMTVkMGJmIHJlbGVhc2UyNC1tYWludAorNTI0NjkgZTJlODBhMDE2OTQ1MjIwOWE2ZTRkMjJiYzljY2FkMjAwMWVkNDdiYiBsZWdhY3ktdHJ1bmsKKzUyNDcwIGM1YTZhY2UzZmM3ZmQyNTRiMjM4ZDdiYzBiNGEyMjk5YzQxMmQxOTYgcmVsZWFzZTI1LW1haW50Cis1MjQ3MSA1OGRiOTY4ZDE0NDgyZTdjOTQ1NWJiMmI3NzZmZjJkNmUwZDc5MjVhIHJlbGVhc2UyNC1tYWludAorNTI0NzIgNmI5MWMwZGNlYTU4YTY2NmI3OTExY2Y4ZGYwYzg3YzBmNzg2ZDQwYyByZWxlYXNlMjQtbWFpbnQKKzUyNDczIDhmOWFkMzU4MTM2ZjAzOTE0MjlkNDFiNWZiYWQzNjZiNjMwMGMyYjQgbGVnYWN5LXRydW5rCis1MjQ3NCAyOWMwMWU2MmNlNmJjYWU2ODE2OTBjMjZjZDJhNTJlM2NjMTgxY2ZkIHJlbGVhc2UyNS1tYWludAorNTI0NzUgMTk1NTU5YzViYWNkZjA2YzI2MmY2MGRmZWZmNDE3MTM4N2Q4YWU1YSByZWxlYXNlMjQtbWFpbnQKKzUyNDc2IGUzYjljNjM5NzcyMzQ4MmNkMWFlYjk2M2RkNDNiZWZiYzIwNWVmZTIgbGVnYWN5LXRydW5rCis1MjQ3NyBmNDViMmYwYzU0MmZjM2MyYjhhZWE3NWU5NjZlMjIwZjVmOTYwY2E2IHJlbGVhc2UyNS1tYWludAorNTI0NzggNzcwYzcxOGJjOTdlMDJhMmIzY2IyN2U0ZGI5Y2QzNTBhZTFkZDYzYSBsZWdhY3ktdHJ1bmsKKzUyNDc5IGJiMGRiNDVmMjBlYTJiYzM3N2ZiNDZlYWI1NDc2ZGUyNWUyZjFmMjMgcmVsZWFzZTI1LW1haW50Cis1MjQ4MCBmYjlhN2IyODhkY2UyOTQzNTU2ZTI1NTczZDEwN2EyYTZiMDkxY2M0IGxlZ2FjeS10cnVuaworNTI0ODEgOWQ2OTFkMzc1NWQwZGU0ZTFlYjEyNzQ5YjljMzFmN2Q5YWY2OTdhZCBsZWdhY3ktdHJ1bmsKKzUyNDgyIGI5MTE2NmU4ZDM4ZGIwYzcxYzNlZDM5ZTZjZjljOWE0MzNlN2YzN2EgcmVsZWFzZTI1LW1haW50Cis1MjQ4MyA5OGU5MDA0OTkwNDM0MTU0MGNiMjkwMDRkOWQzZTQ5OTU0ZGNiNmZiIGxlZ2FjeS10cnVuaworNTI0ODQgODYyNDkwOWY1MDMxZjQwZDkyNTVmN2U2NzdmOGQ3MDkxMTI5ZGYxMyBsZWdhY3ktdHJ1bmsKKzUyNDg1IDk4OGQ5NWZmMWZkYjcyYWQwNTdjODA3Zjg3MDZhNzM5MGI2ZjBhMWYgbGVnYWN5LXRydW5rCis1MjQ4NiAxODg3MWExMGZmYzFmYTU0ZmNiMjA5ZjgyYTU5ZjE2NWYyMjE4MjE4IHJlbGVhc2UyNS1tYWludAorNTI0ODcgNDNhODI2NDY3YWQzY2VhYmZiNDE0NGE3NGEwNTIwMTNlMWJjOTUwZSBsZWdhY3ktdHJ1bmsKKzUyNDg4IDVkNWYxODQ0MzY2NGQxNTcyMmQyYTc2ZmQ0NDkwMTJkNGE5MTVlNTkgbGVnYWN5LXRydW5rCis1MjQ4OSBkYzFlNDM2MTc5NzI4MjJmMjdkMTdiYmMyNzc3MWE1ZjRmYWY3N2JlIHJlbGVhc2UyNS1tYWludAorNTI0OTAgZDBiZDhhOGFmYjAxMDNjNmMxM2M1M2M1ZjVmYjgxOTdjNGExMDkxNCBwM3lrCis1MjQ5MSAxY2NlMDUyNmQ5YjBhNTNmNGZmOTU3MTNkZGUxNTNkYzcwZGFlMmRjIHAzeWsKKzUyNDkyIDIxOTA4YzcwZDI2NGJjZjkzMjczODgzOWM0M2Y0YTEzZDYwYjM3NTYgbGVnYWN5LXRydW5rCis1MjQ5MyAxM2I4YWQ2NzlkZWZjNzQzNGIxYmExYzVlMzNhMWZiMjM0OTgwOGZjIGxlZ2FjeS10cnVuaworNTI0OTQgNTEzMzlkMzlhNTk2YWZmMDJhZDE1YzM4ODQ2N2FiZDcxYjM2MTA1NiBsZWdhY3ktdHJ1bmsKKzUyNDk1IDY5NzI4YTdkMjMxMjM5Y2VjNTE1MGViN2IxNWRiZjZlOGM3NWI1MTIgbGVnYWN5LXRydW5rCis1MjQ5NiA3ZDBiZGQ2ZTFjNDY4YjJiNTYxYTYzNTU0M2I4ZmUyZmE3YjMxMDFjIGxlZ2FjeS10cnVuaworNTI0OTcgYzM4MWZjZjlkMTA4MWM2NTVkOGM2NmU5NTJmOWZmZTI5N2Y4OTBkYyBsZWdhY3ktdHJ1bmsKKzUyNDk4IDJkNWE1ZGVkZDk3NTk2ODFlOWViMjNiMWI5NzVkNDI4NzlmZjgwMWUgcmVsZWFzZTI1LW1haW50Cis1MjUwMCA0YzUzYjI0M2MzOTIyYTQ1NDMxNWMzZWU1NzZjNGYyMDdkZWRkMTI4IGxlZ2FjeS10cnVuaworNTI1MDEgYzU4ZDFiOTY5ODQzOGU2YWMwZjhmNGJkMDE0YmUwNWE2YTk0ZTI3NiBsZWdhY3ktdHJ1bmsKKzUyNTAyIDc5NjMwNGVmYTI2OGMwNWQyZTNlOTdmODhjNjIwOGRkNTc2ZmMzMzEgbGVnYWN5LXRydW5rCis1MjUwMyA2MWU0YjU5YWRhMGMyOWVmOTI0ZDExYTg2MmYwZWY1NjIzMzNiMTE0IGxlZ2FjeS10cnVuaworNTI1MDQgMzYwODYwNWE3NGQ1OGU1NmVhOGEyYTllM2IxNTgyYjU3ODc3Y2FhNyBsZWdhY3ktdHJ1bmsKKzUyNTA1IGM0ZTVlNTNiYTczZjM1OGI5ODk0MDFjZjM0NzNiZDQxNmVlZjA0NzUgbGVnYWN5LXRydW5rCis1MjUwNiAzMjFjMDc1Zjk1Y2ZkYWM3ZDFlMThiYjA1MWFlMzgwZmRiYmYyMjViIGxlZ2FjeS10cnVuaworNTI1MDcgYTE4NjM4MzNjNGU2ZjcwYWM4OTI4Njk5NjU5ODIwN2U3OWNkMWY3YiByZWxlYXNlMjUtbWFpbnQKKzUyNTA4IDRjNjFmNDAwY2UzMGQwY2I5Zjg1NmMwYjhmMTQzNGU4ZWZmYWQ1MTQgcmVsZWFzZTI1LW1haW50Cis1MjUwOSAzODBhMzVkNzhjNjA4OTZiODY5ZjI3MGU5MGNkMTkxZDFhMGM1NGE4IHJlbGVhc2UyNS1tYWludAorNTI1MTAgOWFjYzE3NzVkNTcxNGJiZmUyMTkwM2IxNGVmNTZmZTJlMzNjMWEzNSByZWxlYXNlMjUtbWFpbnQKKzUyNTExIDZhNjQ2OWUyOTRlNzJmY2FiYzlhNDBhMzU4ZWFjYTA4N2YxNWFkYTQgcmVsZWFzZTI1LW1haW50Cis1MjUxMiBkMDIwZTJmNzA4YmU4MjlmMzU5N2M0MWU4ODYyYzI5NGMxOTAzZjhjIHJlbGVhc2UyNS1tYWludAorNTI1MTMgZGUyNjFmNzYzYjRjYzA0OTU5MDQ3ZmNhZTRiOWY2MDJmNTYzMWZiYiBsZWdhY3ktdHJ1bmsKKzUyNTE0IDQ4MWJiYTQxZjlmNDUwZTI2NWYxYTkxNzJhMGI0NmI2ZDQ0OWMyMzYgbGVnYWN5LXRydW5rCis1MjUxNSBkMjFkZDhjYmM3MTYxNjdhMDQxNmM4NzM2OTRiMzY1MmNjYzlkZmUyIHJlbGVhc2UyNS1tYWludAorNTI1MTcgN2M0MDU4NjgxMjI0OTU1ZGU2YWVhMmZhYmE0YTFhYWYyMzNjMTllNCBsZWdhY3ktdHJ1bmsKKzUyNTE4IGQyNDVlZmM3ZWM4OTAwNDhhZWM3MWJlYzljY2YxNDIxNGQ4M2VhNWUgcmVsZWFzZTI1LW1haW50Cis1MjUxOSA2YTg2MGM4MWFiN2QwODM5ODI3OGM3Y2E2ZDY5NjNiZTQzNmQxZWM5IGxlZ2FjeS10cnVuaworNTI1MjAgNGQ4MzNmY2EzNjcwMmNiZWFjNDczNjE2MDIzNDg4ZDkwN2QxZTg2NCBsZWdhY3ktdHJ1bmsKKzUyNTIxIDJhMWVhZTZjMGViODYyYTVhODRkYmU1MDBiMjBiZGM1MmE4NGMxN2QgbGVnYWN5LXRydW5rCis1MjUyMiBhNzJkOTcwYzM4NGJkMTM1OTRjNTYzMTViOGE1ZTJhYjNlYWVhNDc5IGxlZ2FjeS10cnVuaworNTI1MjMgM2QzZjEyN2QzZTBjNzliZTgzZmI1MGIyY2ZmMzUwZjczMGZlMGY3YyByZWxlYXNlMjUtbWFpbnQKKzUyNTI0IGZkOGE1ZjkyNWQ0ZDUxMzljZTI2MjM3MjExM2JmZGYxMzIyNWE2OTMgbGVnYWN5LXRydW5rCis1MjUyNSBlZDIyY2E4Zjc4ZmYwM2E1MzBiMGJmZDUwNjMzZmRhNGRhOTBlZGNkIHJlbGVhc2UyNS1tYWludAorNTI1MjYgYzdkNzc4ZGExNjJjOTIwZmFhZWMyYjNlMTNmYjg5ZWEzNTUxMzExYiBsZWdhY3ktdHJ1bmsKKzUyNTI3IDk2NjMxMDBjOTVjYTJkMjYxMjE3MTU0Zjc0MzY0YTBlN2M3MDFhZWEgbGVnYWN5LXRydW5rCis1MjUyOCA3YzQ0MTQ0NzE0ZjY4ZjkyYTdhYjc0MjMzZDQ0NTFmNjk5YzRiOGQ1IHJlbGVhc2UyNS1tYWludAorNTI1MjkgZTE2ODAwYWMxZWVhMTQxZjBkMjNlNDNjMzIwM2Q1MzA0MGFkODA5YyBsZWdhY3ktdHJ1bmsKKzUyNTMwIDgyNjk1ZTczNjgyM2YwMjg0NmVjZWMwNTA3Y2ExODQxMTg5MmM3YjYgcmVsZWFzZTI1LW1haW50Cis1MjUzMSBmNDljYjYwOTA0Mjg3M2I2NWRmOGViMzU3MjFjN2MzMjRhZjhhOWY2IHJlbGVhc2UyNS1tYWludAorNTI1MzIgZGE3OWM0ZTlhNWJiZmI1NzRhMmNmMDJkYzcxMDFkYmEzODkwMzMxMSBsZWdhY3ktdHJ1bmsKKzUyNTMzIDkzNjY3YTc4NWI4MzQ2NjBmM2U1ZWUyZDUwYmUzYjEyNWI1YmY4NzYgcmVsZWFzZTI1LW1haW50Cis1MjUzNCBjNjc3NGViM2EwNjczNjVmYzk4OTY0MjQ3Y2M5OGI4YzJmOTkyNjk2IGxlZ2FjeS10cnVuaworNTI1MzUgOWFiN2E3NzM2Y2EwNWQzNTJiYTk5OGQyNWViMzQ5YmMwZmFlNWI3ZiBsZWdhY3ktdHJ1bmsKKzUyNTM2IGJmNzhiZTYzZjIwZDU2YmU0ZTgwM2I3MmM4NDEwMDRmYzMyYWQ3ZTUgcmVsZWFzZTI1LW1haW50Cis1MjUzNyBkOWE4ZDRmMWQ2NTE0YzdmZTk0NzM3NjUzMWIwNzZhYzQyMmJhZGVlIGxlZ2FjeS10cnVuaworNTI1MzggZjU2YjI1MTY4MTQyYzk0NTRkZDA4OWU5Nzc1OWM4ZDA4MTc3YTQzNCBsZWdhY3ktdHJ1bmsKKzUyNTM5IDdjZTg3MmJmMDBhM2Y5ZGExNGMwNWQ1NDZhMTU1NzgyZmM4MTI0Y2IgbGVnYWN5LXRydW5rCis1MjU0MCA0MTRlYzI2MmQ2MDhlNGRhYTFjZDM4ZDU0MGNkZjEwMTE3MWE5ZjFjIGxlZ2FjeS10cnVuaworNTI1NDEgOGQ2ZDMxNWIyYWYzYjk1ZmFhNjVkMDI2NTczZTNkNmMzY2FiYTViYiBsZWdhY3ktdHJ1bmsKKzUyNTQyIGNhM2QxZDNjNGQ4YzJjZjMyZjRhNzc3ODExMzM3NDJiODZmM2NkZWQgbGVnYWN5LXRydW5rCis1MjU0MyBjMzcwN2RhODBhZWYzOWU5NDdiOGZkYjFmZDliMmYwMzMwNWE2MzFhIGxlZ2FjeS10cnVuaworNTI1NDQgMTAwNzMyOGY5ZGI1MTRlZWNkMWI5MWVmNmI4YWFmYWUzYzQxY2RkZiBsZWdhY3ktdHJ1bmsKKzUyNTQ1IDc1NTA2ODEwY2JiZjRjYzA1YWNlYzc4ZmJmZTYxYjFiOWI1ODVlZDggbGVnYWN5LXRydW5rCis1MjU0NiBmZmNjNjk2ZTFkYTNjMjQyOGM2ZGUxNjAwMTQzZmVkYzg0MzQwNjE5IGxlZ2FjeS10cnVuaworNTI1NDcgMGQwYWU4NGRkMWI3YWVhZWI4MTBmNjBkY2Y5MzE0ZjExOTBmMGMwMiBsZWdhY3ktdHJ1bmsKKzUyNTQ4IDE3MTVlNmEwYWVlOWFkMGZkNzlmZjAxMzQzYmY4MTY4OTE4NGQ5MzYgbGVnYWN5LXRydW5rCis1MjU0OSBjNWEyZjQzMWM2OThlZjMwZjQ4ZmMxZmU2NDljZTdiNGJmNmI5NTk4IGxlZ2FjeS10cnVuaworNTI1NTAgYThhNmUyYjg0YmJhZjY4ZDQ3YjkwNTZiYjk0YjlhZDc1MWVlZWIyMiBsZWdhY3ktdHJ1bmsKKzUyNTUxIGI4ODUwYWVjMDQ2NmZmZWQzODJjNWZlYmZmNjFiYWQ0MjMzY2MxNzIgcmVsZWFzZTI1LW1haW50Cis1MjU1MiBiYzhmZmMzZTNjZGI0ZTljZjU5YmJkNmRmY2E1MzAxMzEyMjM5ZTg2IGxlZ2FjeS10cnVuaworNTI1NTUgYjgyMDQwNjg1MmEwYTljZDBiZTRkOTJiM2RiZjYzZTRlNDM0Yzg2MiBsZWdhY3ktdHJ1bmsKKzUyNTU2IDMzODQwYzQwNzJiNzQ3NDIxZmQ3NDkwNzhmM2VmNzkwOTVlYjczM2MgbGVnYWN5LXRydW5rCis1MjU3MiAxYWJjZmVmZWEzZWVhNjk3MzE4MmYzMWQzNmE4Yjk1ZmM3YmU0OGY1IHJlbGVhc2UyMy1tYWludAorNTI1NzMgM2I2ZmI1NDM5YzEwNjFhOTQxNDAxMjQ1MDc2YzMxNWJlYWZjYzc4NyByZWxlYXNlMjMtbWFpbnQKKzUyNTc0IGI2NzU1M2MxNGZiY2FlMWUyMDRiNzU2ZGM0Y2M5MmUxZDRhZGM3YzQgcmVsZWFzZTIzLW1haW50Cis1MjU4OCBhM2JlNDBjMDcyNTAzMDM3YjZlZmZmNWEzMWVlOGYxMGIzNmRlNDI0IGxlZ2FjeS10cnVuaworNTI1ODkgODcxYjA1ZDI1MmJlMGFhMTFkYWZlMTg3NTRhZDE4YmNiMjZiMGQ2NyByZWxlYXNlMjUtbWFpbnQKKzUyNTkyIGFlNDExZmUxZWVjMDFiMmEyNTI3MTJiMjQxMDkxZDMxOGI3NDliYTkgbGVnYWN5LXRydW5rCis1MjU5MyAzZTRlMGJlNDBmNTIwOTM4NTc2ZTc2NzZmZjA0NTc4MzBiNjZiMzUyIHJlbGVhc2UyNS1tYWludAorNTI1OTggZmY2Nzg2NjlhYTZlMTMxZWNkMmFlODdmMDIzMTE0OGVkMGU1YTQ3NSBsZWdhY3ktdHJ1bmsKKzUyNjE5IDUzMGQ3ZWIwYzZjNDhmMWQ1MGFkNTQ0MGU1ZGEwZTM1ZTgwODQwYWMgbGVnYWN5LXRydW5rCis1MjYyMCA2ZGY0YTkxNDNkZGY4ODA0ZWU5NThlMzY3ZDUzNTdkNDE3Yjk3ZDI3IHJlbGVhc2UyNS1tYWludAorNTI2MjEgZWJhZjM0N2Q0MmZiMTRkNzNiODliYjlkMmFhMDcxOTFmYzcyZGMyNiBsZWdhY3ktdHJ1bmsKKzUyNjIyIDAwM2Q4M2RhOTkzMjYyNTAyYjE4ODdjMGI3M2ViMzY4Zjg0ZWRhNWQgcmVsZWFzZTI1LW1haW50Cis1MjYzMCAxZjA1NWZjYjZjYTY2MGJkN2EzZDBkOTg3YmMxMDU4MTE1YzdkYTVlIGxlZ2FjeS10cnVuaworNTI2MzEgZDc4NWMyOWY1MzQwMzViZTMwMmIwYmQyNTYyMzVmNDkwOTZlMzA2YiBsZWdhY3ktdHJ1bmsKKzUyNjMyIDFhMGY0Njg4M2VhNWYwZjEyMTIxM2YzMjNjNTU4ZjZiMzdiNTliNjUgcmVsZWFzZTI1LW1haW50Cis1MjY0NCBjYmUxMzNkNzJlMzk3MmQ3MWQyM2ZmMGE1ZTdiNDg1N2EwYzU1ZjNjIGxlZ2FjeS10cnVuaworNTI2NDUgNTUzMWY0NjIzMmI3YWY0YmE0NTVkOGE3YWY2NDAyZjVlOWU2NDA2MCByZWxlYXNlMjUtbWFpbnQKKzUyNjQ2IDI0NDk4ZDQzMTI2Y2I4OWQ3MmVmN2QzMjY3MjU1Yzk1ZGQ3NzZkYmUgcmVsZWFzZTI0LW1haW50Cis1MjY0NyBlZDJhYzgwODRlMDQ4NTBkNWMwMTdiZTI2ZTcyMThmNmE2Y2VmNjk5IGxlZ2FjeS10cnVuaworNTI2NTEgMWRlNWU3MzlmOWZmNTkzZGU5MGEyM2U2NTEzOTNlODgxZGQ5NDFlNSBsZWdhY3ktdHJ1bmsKKzUyNjUzIDNjYzJlYWYwZTU4MTQ5OWRiZmZiMDM5NDdiOWJiZTA2ZWU3N2JiZGUgbGVnYWN5LXRydW5rCis1MjY1NCBmODg2Mjk5ODI3MGZiZmJhMDgwNmU4ODE5NmU4NDMzZDdjZTkzZGZmIHJlbGVhc2UyNS1tYWludAorNTI2NTcgOTYzM2Y1MzhjOThkYTZlZjVkYzM0OGYzM2YwY2MwNmUxODM2NjZmYSBsZWdhY3ktdHJ1bmsKKzUyNjU4IDhkNjhiMjI0YThmMDU4ZTMxMzY0ZWJkMTJlZjlmZDU3YTllMjkxNjkgcmVsZWFzZTI1LW1haW50Cis1MjY2MiA2MWNkOGM4N2NmZTJjMzdlNGQzNTc3Y2FlZjU3YzFiMGYyOTI0ZWM4IGxlZ2FjeS10cnVuaworNTI2NjMgNzhjNzViM2QzZDBiYjE0MjAxNmY0YTQ2NDk2ODVjY2E3OGE5Y2E3ZiByZWxlYXNlMjUtbWFpbnQKKzUyNjY0IGZhOTAyOWE0MWNlOGFiMDljODM5ODhjZGRmOTBmYThkZDIxZjZhYjIgbGVnYWN5LXRydW5rCis1MjY2NSBiZDE2MjNkMDRiZmM0NGUxNzkxODIwZjFlZDU1MjRmMGQ0YjE4NmQ0IGxlZ2FjeS10cnVuaworNTI2NjYgNGY4ZWJhY2VjNWYwNTM2MjhjOGYyNGQxODI3MjI3NzczYzA4ZjllMSBsZWdhY3ktdHJ1bmsKKzUyNjY3IDAyYzM2NmIyYWFjMmNhYzY1ZjMwN2ZkZWY4Y2VhNjhhZjM1MzFmMTMgcmVsZWFzZTI1LW1haW50Cis1MjY2OCAwZGVhMzdiY2JlZmY0YzAwZDIxYzdjYzAwMzNkNTczMjMwMDc5OTMzIGxlZ2FjeS10cnVuaworNTI2NjkgN2I4NTEyMDZkMjRjZTM0YzM0OTllZGUzYzJmMzVlZTI4MzFlMTM4YyByZWxlYXNlMjUtbWFpbnQKKzUyNjcxIDcwYzc1NmFhOTI3M2MyMDg2MzcxYzk1NmY3ODRhNzA5NzMwZWExYzYgbGVnYWN5LXRydW5rCis1MjY3MiAzNTdjOTk1MzdlODUyZGQzMzlhMmRiMDYxOWYxOWQxNTU4NGY5ZGVlIGxlZ2FjeS10cnVuaworNTI2NzMgNTc2NzQyMTJjMzdjZjJjOTU2MGU2ZjI0ZWQ1YjU4MThiYTY4MzAzMiBsZWdhY3ktdHJ1bmsKKzUyNjc0IDI0YTVkYzc3NzkzMTY2NDZlMGQyMGJmMzEyNjU2YTdiOTJiMTk1YTQgbGVnYWN5LXRydW5rCis1MjY4NiA1MjZjOTU4NGYyNTI3ODY3MjY3NmQwNzg3NTc1NzY2ZjYyZTVlMmNmIGxlZ2FjeS10cnVuaworNTI2ODcgMDI1YjI0YTI2MTMxNGQxMGVhMWRlZWJlNjU2YmEwYjdhYjNjMzNhMCByZWxlYXNlMjUtbWFpbnQKKzUyNjg4IDA3YjI5YmNmYzAxMzUyMzY5MTFkMzE1NzA0YmI1YmUyMTg3MzA1MjggbGVnYWN5LXRydW5rCis1MjY5MCA2ZDk5NzYyY2Q4MTg4MWQ3ZGNiNDNlZTg3ZWViZTIyOWYwNzZlNzM2IGxlZ2FjeS10cnVuaworNTI2OTEgNmMwNjc3MjczYzVhYmIzYjU4YmVjNmQ1MDE5OTIzOGM4ZTU4YTlhNCByZWxlYXNlMjUtbWFpbnQKKzUyNjkyIGFkNzk2ZmU0NzJjYWVmZTQ3MThmZGVlNWExZmNjY2U4MjA2MTg3MTUgbGVnYWN5LXRydW5rCis1MjY5NSA3MDU5ZGY3YzE1ZGY4MjMxNmMxODlkOWEzNTY3OTY5NDBlNjBiN2VmIGxlZ2FjeS10cnVuaworNTI2OTYgYzMwYzU4NGNjNmFhNDk2YjFhOTk1ZTExODZkYzJlOGJjNWRlNDRlNyByZWxlYXNlMjUtbWFpbnQKKzUyNzEyIDU2MWZmYTc1N2RmYjVhNGMyMjYxYWI2NTNlYTAwMDZkZGNiM2E0MzkgbGVnYWN5LXRydW5rCis1MjcxNiA1NGY2MjJkZDNiMjY2NjRhNTJhOWUxMjYxMjJiYmRhYjQ1YzkxNzZjIGxlZ2FjeS10cnVuaworNTI3MTggNzMyNDI1ZTNiOTI3NGI3M2Y1Zjc3ZTFmZTY1ZTA0M2RjYzMwMzc2ZCByZWxlYXNlMjUtbWFpbnQKKzUyNzE5IGQ3NWNiZTJiOTYwMTljOTIwOTFiYmMzNzg1MWJmN2NlODM3ZTE2ZmMgbGVnYWN5LXRydW5rCis1MjcyMCAwZTVmMmQwNTQ4ZWI2Yzk2NmE3MjE2OGVmMDg5ZTEyZTM4ZTQ0ODk3IHJlbGVhc2UyNS1tYWludAorNTI3MjUgNmYyOTcwOTIyYzQ0Y2Q4NGZjYzYwYzg3NGUzYjg4ZDY2NjI0NGU2NyBsZWdhY3ktdHJ1bmsKKzUyNzI2IDYxNmEyMDhmNGI4MDUxNDAxYzhhYzRjYjcwNmNiMTcyMzJmYjFiNzMgcmVsZWFzZTI1LW1haW50Cis1MjcyNyAxMGE5Nzc0YmIzZTM0N2UwZWU3ZDBkZGE2OTNkZWNjYzk3YjY4Yjc5IHJlbGVhc2UyNS1tYWludAorNTI3MzEgNDQ2MGVjMjRkYWM5MGY5YzlhYjY5ZDBkMmQwY2YyZTBlNzA1YzA5YyBsZWdhY3ktdHJ1bmsKKzUyNzMyIDM1Y2YxMzNhYzdmOGYwMTNhYTgxYTc5YWE3MjNlYTg3ZWQ0NDk2ZjggcmVsZWFzZTI1LW1haW50Cis1MjczMyAyY2YxOGYxMjc2NjNjNzgxNjAyZTQ5NDhmYjUzYjA2NDQ1ZDU0MjRkIGxlZ2FjeS10cnVuaworNTI3MzQgNjMzODEyZThjYTFiNmE5YTVhZDJmNWVjMDQ2YjQxOTEwOTM0M2Y4ZiByZWxlYXNlMjUtbWFpbnQKKzUyNzM2IDkwZDM1NTgyOWJiYjc4Njg4NTg5M2UxYzBlYTA2NWNjMzk4YmY3MGUgbGVnYWN5LXRydW5rCis1MjczNyA5ZjdmYzY4YTIwYWVkZGNlZTZiOWNlOTVlZTA2NzZlNmQ0NGNjYjc4IGxlZ2FjeS10cnVuaworNTI3MzggYmY0ZDIwNDc2YTg2MTRlOWExYmRiMzhlMzVhMWVjYzJhNTk5ZDQ2OCBsZWdhY3ktdHJ1bmsKKzUyNzM5IGVjYmU5MWI1ZTQ2YTUzNWE4NTM1MTk4MWRkMWNkN2U0MGJkYmE5NGUgbGVnYWN5LXRydW5rCis1Mjc0MCA1OTFkYWE1MzYyYjJkNDhhMjcyMTM1ZGRlZWExNTFmNTU5M2ZhOTQ5IHJlbGVhc2UyNS1tYWludAorNTI3NDEgZDQ5ZTBkZTQwMTlkMWY1NWUwMWNjMjA3YzhlMThlZjY5YjkwODU5MCBsZWdhY3ktdHJ1bmsKKzUyNzQyIGVmZjExZTQzNWY0MTAzYTZlNzUxNzEzZmNlNjRiZjNiNjY1NjM3YTYgcmVsZWFzZTI1LW1haW50Cis1Mjc1MyA3ZTBjZjZlMzY1MGM4ZTkzYzQxNWNlM2FmYTg4NmJlMzRiZWQ0MmNjIGxlZ2FjeS10cnVuaworNTI3NTQgZjkxYjZkODVjYWI1NjIyY2E0ZWIxMDJkZTBlYWI2ZTZmODZlZjQxMSBsZWdhY3ktdHJ1bmsKKzUyNzU1IGExYzBiNTE0Y2I1MzlhMDc4MzY5NTM4OTY2OWZjOGQyNWEzNTY4ZTYgcmVsZWFzZTI1LW1haW50Cis1Mjc2MiBiODBhMzY4ODUzYzc1YTc2MGE2NjE5ZjhmNGUwN2JjNWY2NDExY2Y1IGxlZ2FjeS10cnVuaworNTI3NjMgOGEzNjVmZGNkYzQ4ZGNlZTU5Njg5ZGIyMGRlNWNiMTU5OTcxNjEyOSByZWxlYXNlMjUtbWFpbnQKKzUyNzY0IGJhNTYzYWI3YTU3YWUyZDg3ZjZlZGFkOTdmMDdkYWQxZWE1M2JiNWIgbGVnYWN5LXRydW5rCis1Mjc2NSAyNTE1ZWM0YjViMzM2NTY1MWM1OGJmNjE4ODkxNjE1YTc4Y2U5NTRhIGxlZ2FjeS10cnVuaworNTI3NjYgZTI2YzUxNzgwNzM3NTFjYmM0YzFiMjZkMGU3Y2Q0MWUzNThmZmIxNyByZWxlYXNlMjUtbWFpbnQKKzUyNzc2IDdjZWU5NDM0OTgxYTJhYThmYmU3ZDUyNGIwZTQ0ZmU2M2E1N2I1NmQgbGVnYWN5LXRydW5rCis1Mjc3OCA0YzYyYzgyOTBkNGY1ODJmNGE0ZDMyMWMwM2Q1NWRmNWI1NGU1YjhmIHJlbGVhc2UyNS1tYWludAorNTI3ODAgODlmMmU4ZGEwZjBmOWVkZDYxYzhmNTM3OWIzNGM3MjNhOGZjNzZlNiBsZWdhY3ktdHJ1bmsKKzUyNzgxIGMxYWM4YmRlNWUxNzZkMzRhOGUyYmRmOWEzYmU5OWZhYmFhYzA3ZDYgcmVsZWFzZTI1LW1haW50Cis1Mjc4MiA1YzA4ZGNiN2QyODA5ZjQ0Y2Q0M2I0YmNlMzBiMTEzNWIyMmU2YzdhIGxlZ2FjeS10cnVuaworNTI3ODMgNzhjMGU3MmYxNmQzZDA3N2Y5MjJlODAxMzNhNDg4YzBlMjQzMWRjYiByZWxlYXNlMjUtbWFpbnQKKzUyNzg0IDMyMGRmZGVlODk2ODk3YzVjNzJjNDdjMzhkMGIxNjA0NGUxZjJhZGEgbGVnYWN5LXRydW5rCis1Mjc4NSBhMDQwNmU5MzNhODE3MzdkYjVhZDZmOGY4NjJmYzQ0ZTA4MjI4MTY3IHJlbGVhc2UyNS1tYWludAorNTI3ODYgNWZhNWVmNTU5YTJmMTNiOGYzYTM2NmZmNDg4MjJmY2IxMTMxMmE1MyBsZWdhY3ktdHJ1bmsKKzUyNzg3IGI4NzFlN2JkODM1NWIyOTIyZGM5YjcyMzgwMGU4NjMxZWMxYTU0MWMgbGVnYWN5LXRydW5rCis1Mjc4OCAwZmRjMmI4MjExZjkyZTU2NjE5ZTZlYmUxN2UzODllZjVhODE5MzQ1IGxlZ2FjeS10cnVuaworNTI3ODkgYmUyZjViMmQ1M2IzYmQyNjFjNjkxNzMyZDI4ZDA3ZTlhYmEwYzgwZCBsZWdhY3ktdHJ1bmsKKzUyNzkwIDQwMTY2ZTUwMTFmODE5MGE4YjkwMDcxOGFlZmRiNTE4Yzk0NmVlYTAgbGVnYWN5LXRydW5rCis1Mjc5MSA5ZmQxMzU0ZGE2ZGI2YjJiZTg2YjQ3YTE5NTlhNTI4ODZjNWJjNWI5IHJlbGVhc2UyMi1tYWludAorNTI3OTIgMjcxMTMzOTgxZTYzZTFiYzc4Zjg5ZTc3MDEzZDEwMGE3Yzc5OTEyYyBsZWdhY3ktdHJ1bmsKKzUyNzk0IDY0ZTBhYzgzOTZhM2Q2ZWUyM2UwZjM1NGUwNDUyODg1OTAyZWMyN2QgbGVnYWN5LXRydW5rCis1Mjc5NSA2MDZlMWYwZTg3YmRhZDZjZDI0MzU5NWUxYmNiMTQwODQzNmZhMzgwIGxlZ2FjeS10cnVuaworNTI3OTYgNDJlYWVkOGQyYjQ1NDJhZmZjZWYwMTAzNWI3YTAzOTUyOTk4MTY3MiByZWxlYXNlMjUtbWFpbnQKKzUyNzk3IGYzYTYzMTg1NzU0NDc1Y2Q1NWIwODU2OWIxOGFkNTZlM2ZmZmUyMWQgcmVsZWFzZTI0LW1haW50Cis1Mjc5OCBkN2FjM2I4ZjIxMzkyMTllZjhkMjY2Nzc3ZGFiNWYxOGJkNDY1YzMzIHJlbGVhc2UyMy1tYWludAorNTI3OTkgOGZkYTVjODZjYzE2Y2VhODkzMTE0YzVjZjA1N2FmODU2YWIxODk3ZCByZWxlYXNlMjItbWFpbnQKKzUyODAwIGNmMGU2ODU2MjYwNGQ5YTJhMzY2M2JkMzBmMmQzY2EyNzMzN2U5NzggbGVnYWN5LXRydW5rCis1MjgwMSBjZTRjY2Y4N2Y1NmU0NjM5NGViZjBmMzMyOWNlNjVlMTQ3MjM3MTU0IHJlbGVhc2UyNS1tYWludAorNTI4MDIgYzdhOGNiMDk1YzQ4NTFmODE5MGRkYzE3NDdiMDVkYzFmOTdjZWQ5MiByZWxlYXNlMjQtbWFpbnQKKzUyODAzIDk1YWU3NDFlMjg3YmFmN2I3MDkxYmE1ZTYxYzJiZjAwYjJhNjU5ZTcgcmVsZWFzZTIzLW1haW50Cis1MjgxMSA5OWNiMzgzNTFmZmM0MGJiYzMwMWY3YzNjZjEzYzU1ZGJlYmQzMjZiIGxlZ2FjeS10cnVuaworNTI4MTIgYWIxODg1ZjM0NDNhN2RhYjNhOGU0OTRkZmI0ZjgxN2FiYmU5ZDZhNyByZWxlYXNlMjUtbWFpbnQKKzUyODEzIGEyN2VkZTJjYTYwNjhhNTE2OGI1NjJkYzRmOWI2NWMwN2YxY2IyZTIgcmVsZWFzZTI1LW1haW50Cis1MjgxNCA2MWIwNjliODRkMGFmY2M1MTBkMjU3NjJjZTYzMmRjNDMxODgzMTdjIGxlZ2FjeS10cnVuaworNTI4MTUgYjBjMDhlZjFjMzAzMDkwN2E2NmQ4N2I3Y2RiZTJlM2MwMjMwY2JjZiBsZWdhY3ktdHJ1bmsKKzUyODE2IDZlMWI5MDA3YmJkYzYwNDhiODI0ZTZkYzliMjE3N2VmZWI1ODRhMWUgcmVsZWFzZTI1LW1haW50Cis1MjgxNyBkMTgzZDgxMjQ4MDNkMDI3MmU1Y2RkZTQzZWE4YWZhOWQwZjBhODkwIGxlZ2FjeS10cnVuaworNTI4MTggYTAzN2ZhOGY4NDU4ZTMxZjMxZjJhNzE3OTBlMzdiODc3YzhlZGFkMSByZWxlYXNlMjUtbWFpbnQKKzUyODE5IDI1OWQyNjkwMDg2MTdjYmMxN2Q5MTBmMDA0ZjA0OTFhYjczZjAwYTkgcDN5aworNTI4MjAgZDc1YjBjYWE2N2RiOWRlNjEyMTA5NzhiZGJhZjFlNmFhNGViZTRjMSBwM3lrCis1MjgyMSA5M2RiZmM2NTRiNmEyMjJmYmQ1MmFiOGZmNDNiZWI3OTExZmJmNjAzIGxlZ2FjeS10cnVuaworNTI4MjMgN2YzM2YyNGE3YzQxNjdjODI3OWQ2OGVkY2E0MmVhOWI2ZTNkMzk0MCBwM3lrCis1MjgyNCAyNWNjNjE2MTQ3MjA2M2JhY2M2YTNmZWRkNTllYWUwMmU2YjM2ZDAxIHJlbGVhc2UyMy1tYWludAorNTI4MjYgYTNlMGYxZTExMDgyODg4ZTkzZDBjODI4NWVhZmYyNTk2OGQ4NWRlZSBsZWdhY3ktdHJ1bmsKKzUyODI3IGI2YjAyNTkzMTQ1MTMzMzc3ZGUyODMxZWFkOWEwYjBlOGNmOThiODAgcmVsZWFzZTI1LW1haW50Cis1MjgzMyAyOTFlNjMzNjg2N2I2NzRmMGY4NGZkNGNjMGY0NjM2MjFkY2M2NzE1IGxlZ2FjeS10cnVuaworNTI4MzQgY2QzZDZiOThjYWVhZDI2NmI5MDAyYzhjZDc3MTk1YzZkOGViZmRlMCByZWxlYXNlMjUtbWFpbnQKKzUyODM1IDAwNDYyY2E0ODg0NTQ4MGU5Y2E4NDIzYTRiZjc1YjcwNDdiMjJmYzQgbGVnYWN5LXRydW5rCis1MjgzOSBlNzA3MGQ2N2RiOGM3YzlmZTMzZjBjNzhiOWZkNTY0MjA0ZjM1ZjA1IGxlZ2FjeS10cnVuaworNTI4NDAgMTkzMTQ2ZTRkMjc2YzA0NGVmN2FhMjFiM2Y1ZWM0ZDNiNzhlZWM0OCBsZWdhY3ktdHJ1bmsKKzUyODQxIDk2YmU5ZDc0YWQzNjc1MDQwZDYwMjFjM2U3OTY5MWQ1ZTVlMjY0NDYgbGVnYWN5LXRydW5rCis1Mjg0MiA1ODZkZDhlZWRiNzVmZWY4NzlhNmNmYjRmYjUwMDI2ZDkxNDQ3YzNlIHJlbGVhc2UyNS1tYWludAorNTI4NDMgMjUwODM1ZGM1NDRhYTYwMDNkMjAzNjYwNzZhMjUyZTNkNjUzMmVjMyBsZWdhY3ktdHJ1bmsKKzUyODQ0IDIwYmU0MzFlNzU0MDFhZmQ5Yjc2ZmY0MGExZjhjYWNkNWJmYTczODQgcmVsZWFzZTI1LW1haW50Cis1Mjg0NSA0NTRlZmYyNzA2ZDNiOGJiMjcxZGNjZTE0N2Y1ZTc5YTgxNDlmMDJhIGxlZ2FjeS10cnVuaworNTI4NDYgYTU1ZDQ2NWQ0MGNmZDI0ZGU1ZDUyYzEwOWNjMjY3ZjFhNmZlODY1ZCByZWxlYXNlMjUtbWFpbnQKKzUyODUwIGVmMTU0NzAxNjcwMzNjNzRhZTUwNWQ3ZDQyYTBkZmI2ZDNkZDllYWIgbGVnYWN5LXRydW5rCis1Mjg1MSBhMTAxNTMwMmQ3ZTRkNDJhMGFmMTY5NWMwODZkMmVmYTgyN2QwOGVmIHJlbGVhc2UyNS1tYWludAorNTI4NTMgODgxMzM0MTdkZmQwNWI0ZTE1NmE2YmNlNzE0ZDJhZjAxOWM1Y2FiOCBwM3lrCis1Mjg1NSA3OGZiNzk5MGM1YWE1OTViZmJjNGYxN2NhODFkOGZkYzI4YTYzNGI5IGxlZ2FjeS10cnVuaworNTI4NTYgYTFmZDkzYjU4OTEyMTA4NzhhYzNiNGFjN2U0ZjkwNjY0MzNlNDkzZiByZWxlYXNlMjUtbWFpbnQKKzUyODU3IDAyZDUxM2U4NzFmZTk1NzJkMjJmMTYyMDI2NDk4OTZlNjhlMzE4OTEgcDN5aworNTI4NjIgNGUzNjhlODJjNzBkNmExZTMxMjA4NDJmYmUyNDFhYjMyOTY1YzJmYyBsZWdhY3ktdHJ1bmsKKzUyODYzIDM5YWQ5OWRkNjdlNGRlNWNmYTliMzE1ODI5NDMyZDExMjUxNDU0NmIgcmVsZWFzZTI0LW1haW50Cis1Mjg2MyA5OGExZWNhM2E5MzA4M2NjZjAxZjQ1ZDA5YTI2MDk2YmRlNDEwNmY5IHJlbGVhc2UyNS1tYWludAorNTI4NzIgZmVmNWI3NzQ4MThiZGM0ZTYyNjJhMjMwMDRlYTJmZGQzYjkwNDU1YiBsZWdhY3ktdHJ1bmsKKzUyODc1IDFlM2Y1MDIwYmI1NTU4ZjAyNzc3OWEzZTIxYTg2YmQzNTI3MWYxNGQgcDN5aworNTI4NzcgMmU1MDExYWNiNDE0ZDRiMjY3ODhjMDM1N2EwNWIxYWE1NGI3MGY3MiBwM3lrCis1Mjg3OCBiM2VkMDUzY2M2YTFmMmIxZjJhY2MwMWNhZTk1MzRlZjc5MTliZDQyIHAzeWsKKzUyODkwIGQ4MDBkNjczNzU1NjQxNDQ0YTJmYTZjYzc4YmQ4NjI1MzM5MjlhMWYgbGVnYWN5LXRydW5rCis1Mjg5OSAwZTJhMDczY2JiYmZhN2NmN2RmYWFmNWQ0ZmQxNjczY2FlYTRiNDc2IHJlbGVhc2UyNS1tYWludAorNTI5MDAgYzdlN2U3MTk2YTRjY2YzNTVmYWU5MTJmMWQ5ZTkyNDI2NjY0MmQyZSBsZWdhY3ktdHJ1bmsKKzUyOTA1IDNhYjEyZDFhMTdkMmVlMzQ4ZmQ4YWJmMGVkZjU1MDZhNzdmY2IwMWYgbGVnYWN5LXRydW5rCis1MjkwNiBjNDM3ODdlNmQ3MDYxZDU3ZmQ3MDgxNjRkMGVmMDJmYzAwZDlhNTYyIGxlZ2FjeS10cnVuaworNTI5MDcgMjZiNzEzYTE5NTM0ZjI4ZTdkZTJhYWI5YWVkYzY5ZmUxN2M1Y2ZiMyByZWxlYXNlMjUtbWFpbnQKKzUyOTA4IDNlZTlkMWEzNmQ0NjQzMDljZjRjYmMxNTI4ZDY1MTcwZjlhNzU4ZTAgbGVnYWN5LXRydW5rCis1MjkwOSBhMDE0NjkyY2ZhNjY4ZGVkMWMwYmNiYTQyYmU5MzNjN2FkMTE5YTU5IHJlbGVhc2UyNS1tYWludAorNTI5MTAgNzNmMGZjMmY4ZjI3ZGMwOTdhZjFhMjI0YTE4MDRmNWUyMjYzMGE0MCBsZWdhY3ktdHJ1bmsKKzUyOTE1IGMxYTZkOTRiODAyNzc2OGYyMzYzYTAxZDg2YTFkYTQzZDNmM2M2OTYgbGVnYWN5LXRydW5rCis1MjkxNyAwY2FjM2U1MzFjNWExNWIxYTI5Mzk0MGUyZGY5MTk0NTBkNzI4OTc3IGxlZ2FjeS10cnVuaworNTI5MTggZjFhNmFiMzU3NGVmZGJkZDY5MWU2ZjEzY2NkNDllNTBjMDA5YTA2MyByZWxlYXNlMjUtbWFpbnQKKzUyOTM4IGViMzBkMzBmMjJhMTg1NzllZmQxZjA1YWE3NTEzMjJmN2UzN2M2NzcgbGVnYWN5LXRydW5rCis1MjkzOSA5ZmYyYjc0NThjNzBkMGFiYzc5NzI0MjNjMzU1NWRmMzczZTA3NDU0IHJlbGVhc2UyNS1tYWludAorNTI5NDUgOWZlNTg1NWIwNWRkYThmN2RlZmQyMDY5Mzk3YzRkYzViZmJlNGVhYiBsZWdhY3ktdHJ1bmsKKzUyOTUxIGQ1NTc2OTcxMmY3M2RmNTg4NWM4MmExNzhhNmM1NjU4ODVkMmIxMTIgbGVnYWN5LXRydW5rCis1Mjk1MiBlZWY3MjVhNDBhNjY3ODExNWIyZTU5YWIwNTBjM2EyYWViZTdiYjNjIHJlbGVhc2UyNS1tYWludAorNTI5NjIgZTVjZTVhMDUzNDExNjk2YmQwNjZhODA2MWEyMjg3M2MzZDI4NDM1ZCBsZWdhY3ktdHJ1bmsKKzUyOTYzIDZlOTFmYzg4YmY5OWNmODUwZTFmZThmYTFjMjA0YWZiNGYyMDg4ZTEgbGVnYWN5LXRydW5rCis1Mjk2NCA2YjAyZmUxYjM4MmZkZmM5NmU0YTRlYTc5NTAyYTRkY2I0YTE3YjBhIGxlZ2FjeS10cnVuaworNTI5NjYgYTE1YmQ4MWVmZGI2MzY5OTZkMzE3NGFkNjUyMmM0YTcyODNmMjY3YSBsZWdhY3ktdHJ1bmsKKzUyOTY3IGZhMjgwZDdjN2Q1ZWQyYjcxMThhMjIxYTVhNzk0ZjE0OWZhY2JhMzAgcmVsZWFzZTI1LW1haW50Cis1Mjk2OSBhZTkyYzhkMGYwOGQ1OTRiNTA5NGU2OWU1ODY3ZmNmNTU2MjVlYjM0IHJlbGVhc2UyNS1tYWludAorNTI5NzAgY2Y4N2M4ZjMzZjlmNzJmN2Y0ZjI0ZTI3ZDRjYjNjMGJlMWFjNDcwMyBsZWdhY3ktdHJ1bmsKKzUyOTcxIGI4N2M1NjM5YmMzYjgwYTQ5MGMyYmQxMTkwNGExYzkzN2U1N2I3ZjQgcmVsZWFzZTI1LW1haW50Cis1Mjk3MiA5ZDQ3MjU1NWI5MGQ3ZmE0NTU0NGE3ZDllNzZlMzU1YWJiOTI5YTM4IGxlZ2FjeS10cnVuaworNTI5NzMgNjhlZjA3ZDljODFlMWMxNTUxYTAzOTJkZjg2NzcwZTU1OGE3Y2QwZSByZWxlYXNlMjUtbWFpbnQKKzUyOTc0IGQ5YjRlZmM0ZWJlZmZmYzhmODU3NjI3Mzk2Zjk5MGI1NDRhZDFiNjMgcmVsZWFzZTI1LW1haW50Cis1Mjk3NSBkNGViNjdkMWQ5MzE4ZTc4NmVlZDRmMjQwZWM2ZTJmNWIwZjA5Nzc5IGxlZ2FjeS10cnVuaworNTI5NzkgNDQ3ZWYwZTc0NjI5OTcxMTM4OTMxY2NkNWVkNWU0MDY3NDQzNjFhYSByZWxlYXNlMjItbWFpbnQKKzUyOTk0IDBjNTFiMDA1YzIxNDRhNDQ5Njc5NzAyNGEzYzExOGVmOWMzNGM1MTEgbGVnYWN5LXRydW5rCis1Mjk5NiAzZDViMzA3NzI4OTJhY2E2YWZhODRhNWUzZWUyMzU2MmVlMjBjZDA0IGxlZ2FjeS10cnVuaworNTI5OTcgMDRmZGY5ZmZiMTg4MmU5YmNmYTA4ZWJjZmM1MDBmNDg0MWNhNmM4YyByZWxlYXNlMjUtbWFpbnQKKzUyOTk4IDYxMzA3MmI4ZjhkMDljM2Q2YWVjNzI5YzliZGY4MDBjZWJjNTg2MWUgbGVnYWN5LXRydW5rCis1Mjk5OSBhMzExYTEwYmEwYmZkNmYwNmY2N2UyZGUzNGQ1YmZhMmNjNWQxNjNmIHJlbGVhc2UyNC1tYWludAorNTMwMDAgMzE1YzVhNjMzYjA1YmYyNTRmM2ZjNjZhNDYyZmI4ZWNjOTM3NjhkOCBsZWdhY3ktdHJ1bmsKKzUzMDAxIGIzMzMyZWMyOTNmMjZkOWIwY2JiMmE5MTIxNDRkNDgyZDg3OTllMDEgcmVsZWFzZTI0LW1haW50Cis1MzAxMiA4MTAwODE4MTI5OTZkOGZlN2UyNWRiZDM1ZGFiOTgwMzNjMmUzY2EyIGxlZ2FjeS10cnVuaworNTMwMTcgY2M5OTJkNzVkNWIzYzk5MmE5ZWQwOTFlMTE4OTJhMTEzYzEzNDVlOSBwM3lrCis1MzAxOCA2NDgyMjYxYjEwOTIxNjBhMWZmNDk4ZWM2ZGVhMDJmNDc4MTUwZDM3IHAzeWsKKzUzMDE5IDUwY2U1NmIyNGNiZTMxMzczMWI5N2RmOGRlZWY0NmFjMDExY2Y2ZGIgcDN5aworNTMwMjMgMWNiN2IzYWU0MTRkMDVjMjAxOGEyYTQ2ZmZhOGZkMDdiYTFiNWZjMSBsZWdhY3ktdHJ1bmsKKzUzMDI1IDU2ZTg4YmJhZDlhMGU4ZGIxMTVmN2M0ZjE3ZTFjZDVkODkzOTllN2UgbGVnYWN5LXRydW5rCis1MzAyNiA0ODA3ODliMzI5NGRjNWJiY2ZiNDA1ZWNhZWUyYzg0YTFlYjVhYWQ2IGxlZ2FjeS10cnVuaworNTMwMjkgZTRmMmI5MmM3NTdjOTVkNjRkYTRhYzgzMDc1YTY4NDY2MDEyODczNyBsZWdhY3ktdHJ1bmsKKzUzMDMwIGNlZWVkMDI4NzIxNjgyMzJmYjAwYTRhNmVkMWFkNjFiYWRiYjJkMTEgcmVsZWFzZTI1LW1haW50Cis1MzAzMSBhOTEwYWJlNzgxNTkwYTU1NGI3ZjE5ODMwMzllMDczYTE2NWNiYTcxIGxlZ2FjeS10cnVuaworNTMwMzIgOWUzOTY5OGFmYmE1NmNhNjlmNDE0Njk2YmViYTNjNjI4NGRhMzU3MiBsZWdhY3ktdHJ1bmsKKzUzMDMzIGVlNWU0MWRlYTk0OTJlYjU5OTZkMGY0OWZlMjgyNjJjZGFhNDgzOGYgcmVsZWFzZTI1LW1haW50Cis1MzAzOCAwZGRkMDU5M2Q0MGJlZTkyNDBmYjhkMzU3OTAwYzAwMDlmMzI1NzdjIHAzeWstbm9zbGljZQorNTMwMzkgZmE5OTM0NjI2NDEwNDQyYzFiMjgxMDFhNTc1YjA1Y2YyMDIxMjU5ZSBwM3lrLW5vc2xpY2UKKzUzMDQwIDQ2N2IzODExOGIyOWEyYjZhZThlMzkxOWYwYjQwMWUyODhlOTUxZjIgcDN5ay1ub3NsaWNlCis1MzA0MSA4MzM4NGE2OTI1YTRjOTJjYjE4M2U1NTlhODE1MWVkMTgzOWQzODFjIHAzeWstbm9zbGljZQorNTMwNDIgNTk3ZmU4OTVhOTU4MzYyZjZlZmNhYTA2MTJiYmRkZWI4NTdiNzBiYiBsZWdhY3ktdHJ1bmsKKzUzMDQ0IDRmN2Y3MmJjMzQwYTdlNWQzMDE4OTM4OTVkNGY0N2E5MDBiYjY1MWMgcDN5ay1ub3NsaWNlCis1MzA0NSA3NDU3M2ZkZTRmMGNlNzcxYTBmZTEwNjYzOGUwNzQ4MDVmMzZmZmQ0IHAzeWstbm9zbGljZQorNTMwNDggMGQ2NGYyOWVmMjczZDJjMjMzNGI3OGY4MTZmOWIyMDY3OGY2MThjOSBsZWdhY3ktdHJ1bmsKKzUzMDQ5IDdkNzlmZDE4MTZhODQ1ZDk3MDhmY2RhMTFjOTM3Zjc5NzBhYWIwZjcgcmVsZWFzZTI1LW1haW50Cis1MzA1MCA4MWNjZmVkYzFjOTllN2Q4ZDBmMTA1YmZmZjliNGM1NmFmZWZiZTJiIGxlZ2FjeS10cnVuaworNTMwNTEgOGUzZjJiMDIyZjcyNzcxYzcwYzViMDZkNjQ2MGQ0NzA5ZDM0M2RhNCBsZWdhY3ktdHJ1bmsKKzUzMDUyIDM4YWExYTAxMDIxOWVlYWM0ODZlMzQ1MmQ5YWFjZGVlMjM2OGY3YmEgbGVnYWN5LXRydW5rCis1MzA1MyA1NmRjNzJjMWExZjQzZGVlYWM0MjYxZTRmNGUzODYxYTI1NGY3YTFkIGxlZ2FjeS10cnVuaworNTMwNTQgY2RmNjM1MTNhOGNkZmZjMzQzODJiMmQ1YTg1MWI3NjQ0ZDQwYTJlNyByZWxlYXNlMjUtbWFpbnQKKzUzMDU2IGFkZDAzYTlkNzc4YjgyODE5YTFiMjk5YTJmZmY4MjhjYjUzOWI2OTkgcmVsZWFzZTI1LW1haW50Cis1MzA1NyBmZTJhM2M5NjZjOGVhZjFhNzY4NDE1OGE5MTVmNzYzNmY0NmI2NjQ2IGxlZ2FjeS10cnVuaworNTMwNjMgZWIzYjIzOWE0ZDA3ODA2MTY2ZjI4OTJkMTM3ZjU1NmUyYjIyZjA1YyBsZWdhY3ktdHJ1bmsKKzUzMDY0IDk1NDhjYTBlNjU2MGVjZDQ0NGViZGE4NDk4ZWQzN2E5NTgzOWJlMTYgcDN5aworNTMwNjUgMjE0ODBkODliNDdmMTJkMGNmNTE5YWNlZmMxZjA3MWM1Mzk0ZjU2NCBsZWdhY3ktdHJ1bmsKKzUzMDY2IGIyN2Q1ZDk4YTU1Njc2YzY1OTY0MTVmZmI0MGY2NGQ2NjczMzRhNGEgbGVnYWN5LXRydW5rCis1MzA2NyAxN2U3NGNlMmJjMzVlNzliNjU0YzIxNTIxZDViZDlkYzg1Y2Q4ZDZmIGxlZ2FjeS10cnVuaworNTMwNjggZGNjNDBiOTNiZmJlY2JhM2IwNDVkNDRiNzEzOGNlN2ZkMTBhY2IxMyBsZWdhY3ktdHJ1bmsKKzUzMDY5IDBiMDRjYjc1MWMxYTIyMTEzZGEzNjY5OTBlM2U2NzgxZWNjZjdlYjAgcmVsZWFzZTI1LW1haW50Cis1MzA3MCAxNjQ0YmE3ZGNlMWYwNWRlMDZkYTQ5ZDMwOWY5NjUyYTE5MWE2YzIxIHJlbGVhc2UyNS1tYWludAorNTMwNzEgZjk4MzQwZTM2YzMxMTVlZDc2M2UxNTg3YzZkNDhmZDBjNzQ1ODE2MCBsZWdhY3ktdHJ1bmsKKzUzMDcyIDMwZjA5Nzc2ZWQ1NTYwMGEwYzQ4NjNkNDczNGMyMDgxMjU4MTJjOGIgcmVsZWFzZTI1LW1haW50Cis1MzA3MyBmZTY5OGQwNzhjZjk3ZTc3NjdhYTFiMmNhMDQ5MzM2YjExMjA5Yjk2IGxlZ2FjeS10cnVuaworNTMwNzQgYThmYTI2YTNhMmNhMWM5ZGFmM2RkODkyYTA0ZjY2NmU2OTY0ZmM0ZCBsZWdhY3ktdHJ1bmsKKzUzMDc1IDZmODY0YTkxYzYxMmM5ZWQ3MjlmMTEwNmY5NDVkNzVmMzFlNTIwZGIgcmVsZWFzZTI1LW1haW50Cis1MzA4MCA4NTY1ZTNmZWE5YjYyYTJiYzM4N2Y3MGQ2YWM5NTJhOTcwMTA2NjliIHAzeWsKKzUzMDg3IGQ0ZmNiNTY1NjMxNjJjMjc1Y2Y0ODhmNDkxOWRkYmNiOWViOWVhN2EgcDN5aworNTMwODkgZjFhNGNlMWZlNWIxMGI1ZDIwODY3ZjQ4NjE4OGYzODI0MWU0NTMxNCBwM3lrCis1MzA5MCA1MTM5NWMwYjU0ODJmOGM0MGZmZjA3MDE1Y2I2YWE3NzMwOGUxYTgxIGxlZ2FjeS10cnVuaworNTMwOTkgOTZkNTMzZWZiZTdkZDRjN2YwN2I1NGI1Yjk3YzVlNjk4ZDZkNDZjYyBsZWdhY3ktdHJ1bmsKKzUzMTAwIGZlOWI1Njk5MDg5NDQ4ZWNmOTc1YmNjOWIwMGM0YWQxMGQ0NDliMjggcmVsZWFzZTI1LW1haW50Cis1MzEwMSAwMzdmM2NlYTI2NTUwMmM5NmY2NWU5MDNlZjNhMTdkY2I5Nzc5NGFjIHJlbGVhc2UyNC1tYWludAorNTMxMDYgMTI1MGZlNDJjZTVjNzkxMjQwNzc5OGIzN2FkZGYxZjhlM2M1M2EzZiBsZWdhY3ktdHJ1bmsKKzUzMTEwIDhmYjMzNTAwZTA2NzBiODU4ZDVhMmY4NTk0YjAzZTlkYzc1NThhYzggbGVnYWN5LXRydW5rCis1MzExMiA3OTA5YTRlZTU2NmIwNTgzNDJiMTUwNGZhNTNiNzIwM2JlNTk0ZmUxIGxlZ2FjeS10cnVuaworNTMxMTMgMmQ1ZWQyNjdhNDBmYTFhY2ZkMjk5OWRjMWEwNDgzOWFiOTlmODJmMCBsZWdhY3ktdHJ1bmsKKzUzMTE0IDgzZjVlODBjZTFmMjljMzExYTA3NjBiMjRjZjc2MGVlYzQ1YjljOWIgcmVsZWFzZTI1LW1haW50Cis1MzExNSBhODU5NWRlYWQ1NGFkNWQ3ZmE5YmVjNzNjN2IzNDcyOGY1YzQ2YmI1IGxlZ2FjeS10cnVuaworNTMxMTYgMjJhNTdmNGZmYmNkM2Q0ZWU5NTFhODE2MTQ1ZDU4YmQ2Y2ZlZmYyOCByZWxlYXNlMjUtbWFpbnQKKzUzMTE3IDM1YzQ4ZjY5YmFjZWM3OTU4MjdmZjQ4MTVhNmMwZTNkYzAwMzI5NGMgbGVnYWN5LXRydW5rCis1MzExOCBkMmZhN2RhYWE1OWJmMzA4NzA4OWQyMDY2M2RmMDg4NDNmYTkwZjU1IHJlbGVhc2UyNS1tYWludAorNTMxMjAgM2Q2NjY5YWRlY2U0YTY0Mzc4YWJlNmZlYzMzZDQ0MGExZjFlZWY3ZiBsZWdhY3ktdHJ1bmsKKzUzMTI1IGU4ZTIzZWQ2YjY3ZjEzNGNhZDFiZmE0M2IzZGQ3YTUzOGI0MjBmNzEgbGVnYWN5LXRydW5rCis1MzEyNiBmYjVlM2ZjNDIyN2JlODIyYjNlN2ZhYWY4OThiZmY5MGJlMWQ2YTIyIHJlbGVhc2UyNS1tYWludAorNTMxMjkgOTRlYmY0YTJmNzM4ZjAxMWU1OWNjMWY2NjI0YjljMzJjZGE1M2IxMiBsZWdhY3ktdHJ1bmsKKzUzMTMxIGY5NGUyYjE5NTE4OWVkYzk1NjczZjg1NDFlYTBkODQyNTdmYzY0ZGIgbGVnYWN5LXRydW5rCis1MzEzMiAzN2U3MWZlYWVhM2QyZmMyMDRiOTJiN2ExNmJhNWFhNmE1NDg4NDY4IHJlbGVhc2UyNS1tYWludAorNTMxMzcgODgxNjI1YzEzYzIwNmNiNzI1MWRhZTkyY2IzNGU5NGQzMjliNGE1MCBsZWdhY3ktdHJ1bmsKKzUzMTM5IDY2M2M5ZjFjZTNhYWJmOGQ4NGMzNTc1YjY1M2UzMGE1MzU1YWEwZjAgbGVnYWN5LXRydW5rCis1MzE0MCAyYzUwNGM2MmQ0ZDhkZDU0MTgwNzU5MTE1YjViNzU1NDc0ZWRlNWZkIHJlbGVhc2UyNS1tYWludAorNTMxNDEgMmY4NGI2ZTgxOTAyYTg0MTc0MDQ4NjI5MTZlMTdmMDM1MDg5OGVlMSBsZWdhY3ktdHJ1bmsKKzUzMTQyIGY5MjZiYmMyZmQ2MjkyNzdlNmEzYTNkN2ZjMjA5MDYyZWEzZTllYmMgbGVnYWN5LXRydW5rCis1MzE0NSA1YzY3NDg0YzRjZjVlZTE3MmM1NzA1ZjkzNzNjNjM5MGY3ZjM3YmEyIGxlZ2FjeS10cnVuaworNTMxNDYgOTJmM2VmOGZhNGFmYTA4MDY3NjdkZDE5ZWMyMWU2MGVhOTQ4NjIzZSBsZWdhY3ktdHJ1bmsKKzUzMTQ3IDA5ZjRiNDYwYmFlYjdlNWZiNGM3ODQ0N2IxZjk4YmJhNGY3OTFmNGMgbGVnYWN5LXRydW5rCis1MzE0OCBkZWQ5OWRiNzBjYTY3OGRkMDliM2RlY2FjZjg2NzIzNGVmMGE4MGQ5IHJlbGVhc2UyNS1tYWludAorNTMxNDkgZTRiMGZmNDQ5MjE1ZjI1ZjJhZDU1ZGQ0Y2QzZDI1MzE2YWJiMWRkMiBsZWdhY3ktdHJ1bmsKKzUzMTUwIDI4OTgxOWZkZTNhZjBlY2Y0OTY0MDg3YjBiNzI3YTBkZGQ4YzU2OTggbGVnYWN5LXRydW5rCis1MzE1MyA1YzdlYTkzNDZmMTI3NDUxODhlOTI0ZjYxOTY0MmE5ZWE4YmYyOWFkIGxlZ2FjeS10cnVuaworNTMxNTQgYWM4YTlhNDEyMWQxN2FhNzFkYmFmNWFlZGE3M2JkNmIxNmYzNjYyZSByZWxlYXNlMjUtbWFpbnQKKzUzMTU1IDY3NjNlNDVjN2Y3ZDM0ODM1NDJlNDJiNDNiNzViZTljNmFiODkyNjUgbGVnYWN5LXRydW5rCis1MzE1NiBlZjRiOGZjZDE0ZDcyZmUzOGJjMDAyNzk4MDkzYmFmNjAxYTE3N2RhIHJlbGVhc2UyNS1tYWludAorNTMxNTkgMWUxYjljMmUyYWYwZTMyMmQzMTE5MDIxMTA5YzYxY2RkOTU1MDU3NSBsZWdhY3ktdHJ1bmsKKzUzMTYwIDEyYWY2Nzg4ZDkxMTU1OWM5Y2VmNGU4MGM5ZWU0NzhjYzNhNTRmNDggbGVnYWN5LXRydW5rCis1MzE2MSBlODVjYTNmZDRiZDYzZjM4MGEwYWIzMWI4ZWI0MTI4NDZkYWY4NWUwIGxlZ2FjeS10cnVuaworNTMxNjIgMjY3NmQ4Mjg3YTExYjBlOWEyZmQ5MjFjZmY1Zjc5OTg2NTk5NmRjZSByZWxlYXNlMjUtbWFpbnQKKzUzMTY1IDZmOGM2ZjgzMGI1MWNlNjVlMjVkOGY1NTRjZWJiZDA5NDA1ZjVlZWUgbGVnYWN5LXRydW5rCis1MzE2NiA0ZDc3YTJjNmFhNTUzMzczYTY0MDVhZDg2MjM5Nzc1OTFlM2JhYzNlIHJlbGVhc2UyNS1tYWludAorNTMxNjcgMTk1ZjY4OWFmNWFmZjRiY2MwNjVmZjVmNzQ4OGY2NWViM2IzNDY5OCBwM3lrCis1MzE2OCBiY2U3ZTRhOTI2YTkxYmE1YjQzYjZlYWExMDliYjQ1NWM5MDk5ZjkyIHAzeWsKKzUzMTcwIDU0Y2Q0Nzc4ODgxMWMwM2M1ZWQ1MTRhYTBkMDEwM2Q0NmE0ZmUxODEgcDN5aworNTMxNzEgN2EzNWQzZDFhYzVhMzAxZWYzZGM1MmY5MTQwODQ0ZjA0MjIwMTFhNSBwM3lrCis1MzE4NyBkNjNmYTkwZGY5ZWFkODQ0N2NlYWQzYjdmZTQyM2MxMWFjMTgwMWI2IHJlbGVhc2UyNS1tYWludAorNTMxODggYTMyMjIwNzVmNWM2NmExM2NiY2JkNTc2YzI2YjllMDVhMmIzNjUwNCBsZWdhY3ktdHJ1bmsKKzUzMTg5IGIxOWVkNTQzZDY5NWEwMzA1ZmEwMjgxNDk2NDM4ZTQxOWM4NjQ1NDggcDN5aworNTMxOTAgYjlmY2E4ZmIwZmIzNTE4ZjE5MTQ1M2JlYTk2NjljYzUwNDlmNmM4NiByZWxlYXNlMjUtbWFpbnQKKzUzMTk3IDk0Mzc1ZDgxNDg3ZGE4MTgwYjBiZDk4M2UxZDc2ZjQyNTcyZDE2OTUgcmVsZWFzZTI1LW1haW50Cis1MzIwMCBjMWE0ZGM3MWNkZDM3NjAxMjA1ZmI2NjRkNDljNDIyZTI3NjFjYjE5IGxlZ2FjeS10cnVuaworNTMyMzIgYmU4MjQwY2U1MmZmN2YzOWJhMTY2MWZkYjdhYjk2NWUzNWUwNDhkYSBsZWdhY3ktdHJ1bmsKKzUzMjM1IDJiMTliMmFkYzVjMWI4YTg3MTQwMGU5MDEwYzRiMDJlOGE4MTExYzIgbGVnYWN5LXRydW5rCis1MzIzNiA3YTEzODM5YzYzNWRjNTVjZGU0N2UyMWZlOTkzZWQ2MWQ4N2Q2M2Y4IHJlbGVhc2UyNS1tYWludAorNTMyNDMgOWNjNzYxYjllMmFjNTYwZjQ4YTRjYzU4OTI0ZTY5MWQzZWFiNmYzZiByZWxlYXNlMjUtbWFpbnQKKzUzMjQ0IGRjN2Q0ZTVkOGI0OTdlMmIwMWJiZDg2ZDI3MDllMzM5ODE4YTU2ZTEgbGVnYWN5LXRydW5rCis1MzI0OSA0MjAzZjhlNmU4NmFiNDBiZmZkMmMzYjgzN2EyZjQwZWI3OGQzYzBiIGxlZ2FjeS10cnVuaworNTMyNTAgZDk3NDljM2U2MzI2YWUxNjIzZjlkMWQ0YWU0YmY0OGM5NzFhNjQ1YiByZWxlYXNlMjUtbWFpbnQKKzUzMjUyIGY5YjI3ODIwNzk4Yjc0NzRmMzZjZjM0MWFiMTcyMmExODZmNTczMjEgbGVnYWN5LXRydW5rCis1MzI1MyA2OWZlNjgzZWNlNTY2Yzg0MjMwNzdiZjE0MmQ2MzUyNzU3NmNmMmFlIGxlZ2FjeS10cnVuaworNTMyNTQgYWZhYmZmZDU2MmU5NGNiZGUyNGUxMzkxZDhmNjhhZjQ3MmU0NGQzMiByZWxlYXNlMjUtbWFpbnQKKzUzMjU1IDQ1YzczMTUyYjRhYzU4MzE0NTUzZDEwNWM2MzRlNjdhODQ0MDJjZmIgbGVnYWN5LXRydW5rCis1MzI1NiBjYTI5NWMyNzBiMWMzZjJjMTU1YTk1MmE5ZGNkZTJlMzcxZTM0YTUyIHJlbGVhc2UyNS1tYWludAorNTMyNTggNDI3NGVkZmRjZTk4MThlNTQ2ODRjZGUyMGU3YjgxN2RhNGE0ZmE4MiBsZWdhY3ktdHJ1bmsKKzUzMjU5IDMwZGEwNmIyMjVhZmFjM2JiMThjMDhkMTc1ZDk3ZjNhMTNjYTE5ZGEgcmVsZWFzZTI1LW1haW50Cis1MzI2MCA5NmQ3NmQwOWE0ZTljMjI1MmRmYTg5N2ZkNmNhOGY5ZWFjNzQ0Yjc5IGxlZ2FjeS10cnVuaworNTMyNjIgN2Y3Njk5NmM3YmY0YjhlYzc0YmY0NmEwNGQ0NGQwZjU5NjUxNjkwYiBsZWdhY3ktdHJ1bmsKKzUzMjYzIDkwOTM3ZDMxNzRjYmU1Njg2Y2E5MWRkZTkwYzcxZjgxNWM5OWQ1YWMgcmVsZWFzZTI1LW1haW50Cis1MzI2NCA5MzM0YjBkYzNhMTdkOTBlMjdlZjQ1Nzk3ODg5NzAwNDM2NGE1Y2NkIGxlZ2FjeS10cnVuaworNTMyNjkgM2E4ZmQzNjM4ZjI2MGExYzU1ZTFhNTc4YmFlZDVhMmYzYTc3M2Y0YyByZWxlYXNlMjUtbWFpbnQKKzUzMjcwIDg0YWNlYThlMDcyZTY2ZTMxYjQwYjc1Y2VlNTBjZjZmMTFkNzk4YmMgcmVsZWFzZTI1LW1haW50Cis1MzI3MyBmNzAyNzlmMDBkZmM4MGMwZGZiOTg4OWY2ZTgzNzk2MTgyMWZlNjc1IHJlbGVhc2UyNS1tYWludAorNTMyNzUgNjg0NWUwZTYyOTAwZmMyMTk1NTliMWE3OGEyNmNmYmI0ZDI3NDQwYyByZWxlYXNlMjUtbWFpbnQKKzUzMjc5IDE2N2U3YmE3NDc1NjEzYzIyNjgwY2FiOTZiZmFmZWRiYWMwNTdiMTQgbGVnYWN5LXRydW5rCis1MzI4NSAwN2M0NzAyMDIwZGM5MmFkZTY1YjFmMWExZmM4ZWRkZjJhOTFiM2Q5IGxlZ2FjeS10cnVuaworNTMyODYgNDEwNTU3MGRhMzBhZDJiMjEwODljZDAxNWYxYzVkYWI3YzI0OTMxYyBsZWdhY3ktdHJ1bmsKKzUzMjg3IDE1MjBiYWFmMjdiZjc0ZTk3OTc5ZDdhZjA3NTIxMmZlODRhYmZmODUgcmVsZWFzZTI1LW1haW50Cis1MzI4OCA2YmQ2NWNiNWI5NTIwNjJlMzBlYTJlMjM2ZGM1MjE1OWMwYjliMGEwIHAzeWsKKzUzMjg5IDk5NWI3ZmNjMjk2ZGY1Njg0YWM3MzlhMjFjZTY0YTQ1MmI4NzA0YjMgcDN5aworNTMyOTEgY2M5NDljNjA1NTc0ZGE3NWRjODU5MWI3MmY5ZmVmNWY0YjE4ZjkxZiBsZWdhY3ktdHJ1bmsKKzUzMjkzIDdhMTFhM2FiZTY0YzFmNmY3YzVjMjM3N2JiOGNlZWU1YjI1ZWUxZWIgbGVnYWN5LXRydW5rCis1MzI5NCA0NGM2MjIwYjFkYzNmZmE2NmRhZGZkZjI5OTBjNTgzZmZkZDg0OWZiIHJlbGVhc2UyNS1tYWludAorNTMyOTUgOTkwOTNiNTI3YzAxY2EzZmY1OTBlYTJjMzk4MGRmYjE1ZjJmZWM4MSBsZWdhY3ktdHJ1bmsKKzUzMjk2IDAzNTQ3YTRjZDMwYWZhMTBhMzhiYThjMjJhNjg1NTYyYzg1ZjhhNTAgcmVsZWFzZTI1LW1haW50Cis1MzI5NyA5NDBmZjVjNzdmM2E5MTA3ZWVjYjE2ODBhZDcyYTNmY2I5OTQ2ZGUxIHJlbGVhc2UyNS1tYWludAorNTMyOTggOGRhNmRkYTY3OWY4YjJhOGU1ZGRmNmI1ZWIzOWIyNWMwNGZlN2RmMiByZWxlYXNlMjUtbWFpbnQKKzUzMjk5IDRkYzc5ZTI4MzIwOTRkNTJhODI3M2M4MmY4ZGI1MzNkODllNTViMzEgcmVsZWFzZTI1LW1haW50Cis1MzMwMCBiZDdlNDFkZTk4MmY2MGU5ZjI5ODA4ODI0Y2MzZjVlNWU1Nzc0NjY1IGxlZ2FjeS10cnVuaworNTMzMDEgOWFmZDJjN2ZhZWRlNjNhNzE3OTVkMzFhNjU3ZThlODRiZGM2NTcxZiBsZWdhY3ktdHJ1bmsKKzUzMzAyIDFlZDNlZDlhZjM0OGNmYmE0Y2U3OTMxNzY4NmM4OWJhNDBkNjEzYmYgbGVnYWN5LXRydW5rCis1MzMwMyBkZTUwNDAyNGE2ZTc3YjQ1OWIwOWVhNDA2ODdhMDY5ZDU2MTM2ODM4IGxlZ2FjeS10cnVuaworNTMzMDQgOTJkZDJiYjk0Y2E5Yzg3OTE0MDdlYjI3YjAyMDM0YmYxMTdmNjc1ZiBsZWdhY3ktdHJ1bmsKKzUzMzA1IDVkNDMxMDI1Yzk5OWE5NmUwZDI3NTc2OGFjODE4MTU3YTBjMDllMGUgbGVnYWN5LXRydW5rCis1MzMwNiA2MWQ2MzRhMGJkNmEyM2Q5MDM3NDEzOGNhNjc0Y2I3NzFlMmVmZGIxIGxlZ2FjeS10cnVuaworNTMzMTYgMGQ5MmNhYTJkMGY0MmIyYzM5MmNkZGZjOTE2MWE4MjNhNDg4NGFkMiBsZWdhY3ktdHJ1bmsKKzUzMzIxIDZkZGI2MzZmOTVjMDA5NDRjNjg2MzBhZGEyYTJiNzhjZWE2Y2YyNWEgcmVsZWFzZTI1LW1haW50Cis1MzMyOSBiODFmNGVlOTRiMDRjYjk2YWY0ZDE5Y2FmYTMyMjkzMjY2NmQ1MWY1IGJjYW5ub24tb2JqY2FwCis1MzMzMSA0OWRjN2ZjNjZiZWUzODJhMDU1YzI4MGY3NmVmODQ5YjUwZGJhMjU3IGJjYW5ub24tb2JqY2FwCis1MzMzMiA2NzI4N2NhNGUxZTg1M2ZjZGE3MjJmM2I5OTM5NmYyZDRlODg5ZjZkIHAzeWsKKzUzMzMzIGJiMWVlYTljZWQ3MGRhYjc4NDRmMzNiNDU4MWUwNWJiOTE4ZmNhMTkgYmNhbm5vbi1vYmpjYXAKKzUzMzM0IGYzMWZlZTI2MmI1MTQ1ZjA0M2M1YjM4MzIxODYwOTQxMjY4YmViMDQgYmNhbm5vbi1vYmpjYXAKKzUzMzM1IDY5YmM4MDZkOTY2MTY1M2EzNmMyOTU0ZTNjNzczODk3NGM1ZWU5OTIgcDN5aworNTMzMzYgMGI3OTdhN2I1MzEzMDRmMjUwOTBkOTk1MzhjNjNmYTQ1MmM0NWJhOCBwM3lrCis1MzM0MCA2NjdiZDAyN2Q4MDA5OGQ0NzBiOWNlODg1NTdkNWQ2ZDQ0MzE3OWUyIGxlZ2FjeS10cnVuaworNTMzNDEgYjRiYTcyNDlhYmE1NjgzMTEwNTZkOWYwZGEzYjkwMTUyZWQ3YWYzNiBsZWdhY3ktdHJ1bmsKKzUzMzQyIDZiMThhMDk1YzJlN2FiN2MzZTMzYTA2NmM4YTc0NTkyNWJlZjQ0YWQgcDN5aworNTMzNDkgNGJhYjY1ZmNjYThlNjM2OTliMDIyNjI0MmRmZTA4MjAyNDU5ZDk4OCBwM3lrCis1MzM1NyBmZjcxYjgyZjZjOTU2MDgzYjBjZDI4Y2IyMmM0ODY4ZmVkMzY5ZDE1IHJlbGVhc2UyNS1tYWludAorNTMzNTggMTNmYzE5NDIwNGM0ZTc0YzZlNDNjNjZiNWU0MTdlM2NkODBmOWUxZiBsZWdhY3ktdHJ1bmsKKzUzMzYwIDQ2OGFlM2UzOTJhMmEyYjY0ODBmNGFkZjZiNDc4OGRhZGIxYjFjMGMgcmVsZWFzZTI1LW1haW50Cis1MzM2MSA5MDk0NmQ1NDM0YWEzMmE3NzY3YmU3Yzk5NTk0NTEzNDlkM2UwYTJlIGxlZ2FjeS10cnVuaworNTMzNjIgNWYxMzAyNzFmMzg2OTVlZjQ5OTY3MmQ2Y2M2MzhlYTFjNGY0YjMzZCBsZWdhY3ktdHJ1bmsKKzUzMzYzIDdlMjUwMDIyNmM0MzZjNjVhMWRkNzkzMzY4ZjhjODViZWYxMzFhOTkgcDN5ay1ub3NsaWNlCis1MzM2NCA4YzM2OTM0NmE0Y2M1MDhjOWRjZDM3N2M2MTI3YmYwNTRlMmNiNWM4IHAzeWstbm9zbGljZQorNTMzNjkgZTFlNDQ5M2Y2ZThmMjQ3YWYyNTlhZTI0MTY0Y2M5MWFjYTFjODNlNCByZWxlYXNlMjUtbWFpbnQKKzUzMzcwIDQ2ZmM3NTYxNWRhNTIyYmM4MDhjNTM0YjU2YTA0ZWMyNWE0MzNiZjIgbGVnYWN5LXRydW5rCis1MzM3MSBiNjBiNDIwOTdiNzhiNmFjYTRkYmVjYmQxZjM3YWE1NmU1OGQ0OTYzIHJlbGVhc2UyNC1tYWludAorNTMzNzMgODEzZGNjODNlNDJjMjdkYzA2YTNlMGQ0M2I4NDEwNzRiNTk1OGMyZCByZWxlYXNlMjQtbWFpbnQKKzUzMzc0IDQzYzc1ZTU0MGU5MjJmYjZlOGY3ODYwNzI0YzhjZjNmZDE3YmJiNzEgcmVsZWFzZTI1LW1haW50Cis1MzM3NSAyMTExOWRiNWUwOTY2NTBkNDNhYzU1YzRlN2UxNWY5MjFjOGI5ODIwIGxlZ2FjeS10cnVuaworNTMzODAgMjY4NTk5MDBmYTVkZTdlNWRhNmIzNWU5MWViMTIxODBlY2Q4OTA5NCByZWxlYXNlMjUtbWFpbnQKKzUzMzgxIDdkYTNkYmM4MTQ1Yjg0ZGJhYTJlMjM3ZDQxOWNjYjg4YjUxMDZlZTUgbGVnYWN5LXRydW5rCis1MzM4MyBiZTE5M2FmMjJmMDQ3ZWIwYWY3NjNjY2QzYjNjZDllNGJmZTY1YWQxIHJlbGVhc2UyNC1tYWludAorNTMzODQgZTE4YWYyOGI0OWRhOWE1OTEzNmFmM2MyYTQ2NTFiMTAxNThiMjBhNSByZWxlYXNlMjQtbWFpbnQKKzUzMzg1IDUzYzBiMDljNDhjMTFmNGNjMDRhMWYzZmFiMDc3YzQwYTE5N2E2ZTAgYmNhbm5vbi1vYmpjYXAKKzUzMzg3IDFjNGJiZTYzZmRmYzQ4NzcyNDNhYWE3YWFmZWU3NTMyNzFkZTVkMzMgYmNhbm5vbi1vYmpjYXAKKzUzMzg4IDdkODg2OGNmYmE3YzVlOWRmNDBmNmNiNDMzOWMzNTZmYmJjNTE3MWEgbGVnYWN5LXRydW5rCis1MzM4OSBhMmUxN2I3NTE1ZDNhMzYzZTI1MjcwMjBkZDNkNmJiNmQyN2VmZDUxIGJjYW5ub24tb2JqY2FwCis1MzM5MCA2ODk5Yjc0MGU4ZWFlNmRkZDdkY2RkODk5OGJlZDI1NGNiMjhhMDQ4IGxlZ2FjeS10cnVuaworNTMzOTEgNzhjZDM4NGQzZmNmOTA5YWM4NTJkZTM4NzZhNDUyZTk0NGQwZmJkYyBiY2Fubm9uLW9iamNhcAorNTMzOTMgYzdiZDg5MmMwNTY3ZDcyZDIwN2MzZTI2NWM3MzEwOWFlZDA3ZGFhOCBsZWdhY3ktdHJ1bmsKKzUzMzk0IDZkMTZlYmM3MTU2OTVjMDkwOTE5ZjA5ODUzYzNlOTk1NTZkYzUwNWUgcmVsZWFzZTI1LW1haW50Cis1MzM5NSAxODAyY2Y5MzI1NGJmNjY0NTQ1ZjBmZDE0YjVkMDRkMDU2ZmU4YzlkIHJlbGVhc2UyNS1tYWludAorNTMzOTYgOGJmNjhlY2M3Njc2YWYxZmJkMzRiOGVkM2IwYmM2YWY3Y2I1NjM5MCByZWxlYXNlMjUtbWFpbnQKKzUzMzk3IDJjNTcxZjZjZTIzYWIyNzY2OGMyYWUxMmQ0ZGI2NDI4NzdiNGVkNmUgbGVnYWN5LXRydW5rCis1MzQwMSBlOGFkZThhNmU1Y2I5Y2E0YTIxMzVhMWZlYjY3YWY5YmRkNTljMzg1IGxlZ2FjeS10cnVuaworNTM0MDIgY2Y4YWY2Yjc1OThiYzUzNTU4OWQ3NWQ2OTViMWRjYjczMzAwMjFmYiBsZWdhY3ktdHJ1bmsKKzUzNDAzIGNhNTM3ZTliYTdhN2YxYTYxMDY4ZjUwNWM1ZjMzZTg1NjFhZTkwODEgbGVnYWN5LXRydW5rCis1MzQwNiBiMzAzZmIzODNmYTQ2OTQ4Mzc1MmUzZjNhYTY3ZjdiZWVhZDgwYzkxIGxlZ2FjeS10cnVuaworNTM0MDcgZjI3Yjg4OTliNjEzNTIzMmE3YTJhZTlkNjNlMzE0NDExY2E2ZDgyOSBsZWdhY3ktdHJ1bmsKKzUzNDA5IGVkN2FjZjE4ODFhOTQwZmM2NWM3ZDI1OTVjNjFmMzVjZmQyNWQ0NDUgbGVnYWN5LXRydW5rCis1MzQxMCAyYTQ3NmM5NGJlMjAwNDA1YTkxZTgyNTM5ZTJlZGFmYWMzZDIzNzAwIGxlZ2FjeS10cnVuaworNTM0MTEgNjhiNDFjMmQ2NjYzMWFhYzRiNDE0YjJjYTZjNjFmZWZlZTM0N2NjNiBsZWdhY3ktdHJ1bmsKKzUzNDEyIDJkZjgwZTcxNmU1YzlkOTI2NmZmZWQwYTlmMjNiOGRkNmY0N2E1MTggbGVnYWN5LXRydW5rCis1MzQxMyAxNDA5ZTFmMjczYjUwODUxMzU2MmM4NjM5MGVkMzNlNmIwMjE1YmExIHJlbGVhc2UyNS1tYWludAorNTM0MTQgNzNiOTNkYzVlNDQwYWMwODg5MjYzNWRlMGVhMTljMGMzNjdmMTljZSBsZWdhY3ktdHJ1bmsKKzUzNDE1IGYzMjgzMjk0NzFkZjU3MTM5NmEzYmFjYzlkYWFmM2YwYzEyZmI3NWYgbGVnYWN5LXRydW5rCis1MzQxNiBjYTFiNDBjYzZiNzRjMzU5OWEyNDZjYWU5NTQ0NTc1YWFmYTgzNDNlIGxlZ2FjeS10cnVuaworNTM0MTcgNDI2ZjFkMzczY2RkNjU3ODBmODc3OTgxMzJjYjQ5YjljMTNjYjBhOSBwM3lrCis1MzQxOCA0ZWJmMGI4MDVjZTg0ZjdhNzlmMDBjYjlkMDE2M2UyZDRlODZhNTdlIGludF91bmlmaWNhdGlvbgorNTM0MjAgYjlkNGNlZDIzNTA2MjFmNjY4Y2ZmOTQyZmM0MzUwMjMwZWJkOWE4MiBsZWdhY3ktdHJ1bmsKKzUzNDIxIDRhZWUzZjY3MmY3N2UwZmVhZjAyY2NkYWJkMDFlZWQ4YjYzMjM2ZGUgcDN5aworNTM0MjIgZGJmZDg2YzNjNzkxM2FhMWNkMjQyN2ZhZjE5NDZhZWJmNTExNmE4ZSBwM3lrCis1MzQyMyA5MGMzODI3MTY4NmIxMjEzMTQ0MzViMzg5ZmMyYjE3ZWM4OThiMzVmIGxlZ2FjeS10cnVuaworNTM0MjQgYTAwNGMzYjAxOWNhMTUzMjI1MGM1MmM1YWZhY2ViOTAwYWU0NDk4ZiBwM3lrCis1MzQyNSAzZDc5YmM2ZWQ2ZWNlNzIyODlhMTZiYzhmYTM4MWFjMDk5NGUwMmM2IGxlZ2FjeS10cnVuaworNTM0MzMgOThkNWY5MGNiOTA1YWZlYmNmY2ZkMWNkMzdiYzFlMjczODFmZTEzZSBwM3lrCis1MzQzNCA2ZWZlM2E0YjEwYWM5OGFkMmUyNTc4OTI4MjJmYTk1NDEyMjlmY2YwIGxlZ2FjeS10cnVuaworNTM0MzggZGI4YzE3NWQxMjgzZDdmYjc2NjIwMzAwMmFkNjBmMTcwOTY0NDA3YSBwM3lrCis1MzQzOSA4ZTJjYTU0NDQ5MDAxZWNiMjNhZTVhYTUxODc3NGUxMGVmZmU3MWZkIHAzeWsKKzUzNDQwIGNmOTgzNDViOWQ2YjAyMGFmMDBlNjc3NzBiMGYzYTcxMjNiZGU2OWQgbGVnYWN5LXRydW5rCis1MzQ0MSBmMzc2OTZlNjQ2ZmFjNWQ1MzU2M2QzOTg3OThmNGQ4MDIwZTMzM2EzIGxlZ2FjeS10cnVuaworNTM0NDIgY2M1YzA3MWM4NDIzMTFlODNmNmNlYTA4ODNmNDQ5Yjg4NzdmNWVmNSBsZWdhY3ktdHJ1bmsKKzUzNDQzIDg2Y2UxZGY2YTg4ZTcwYzFhMzkwYTMzYTA4ZGI3ZGU0Mjg4YzA2MjYgcDN5aworNTM0NDQgODJiOWI1YjEyMjU2ZTQ1ZTBjYTQ5MWQyNGJkNmVjNWRhOWM5M2UxZCBwM3lrCis1MzQ0NSA2ZjViMzM5NDcyNzRlOGI0ZDNmYzUxZWM5NDUzYTJlMjFmMjY0N2U0IHAzeWsKKzUzNDQ2IDM0MjUzMmY0NTM2ZTYxODQ4OWFjNTI4MDA5M2YzOTczYjU1NjJkMmIgcDN5aworNTM0NDggZDAyZDI5YzUyMzJhMWNhYmNiMjcwMDM0N2Q4NGRhOTg2NTFkMWU4YSBwM3lrCis1MzQ1MSA0N2Y5ZWZkYzA4NTVhOGQxNzYxYTBhNDI0NzkzNTc2MmY0MmMzNWMzIHAzeWsKKzUzNDUyIDFjMjY1MDVjMWRlNmViNTBlYTg2NGE5NzcwMjhiZGY2OTU3OGE5N2MgcDN5aworNTM0NTMgM2Y3ODI3NGYyYTM0OTQzNWI3NDUyZTJkMjQyZmI2MGE1NDczNjY4MiBwM3lrCis1MzQ1NCA0YTRiYzVjNzZlNDU5MGJkYzhlNWU3YWRhMmJjMzRmNGVjYzA2NGNiIGxlZ2FjeS10cnVuaworNTM0NTggOWJlNjJjNDVmM2E4Nzk0MGYxYjBjZGUzYjNiNzZkY2RkZDhhOTM2NSBsZWdhY3ktdHJ1bmsKKzUzNDU5IGU1YjY0MWU3MDBmMjM1NDVhMzk0YzBhODM4MGZjMDE3NTIwMGNmYTggbGVnYWN5LXRydW5rCis1MzQ2MCBhNGNkYjljOGFmMjViZDY3YTM5YjE0OTJjMzhjMWMzYzFiMjVhZWY2IGxlZ2FjeS10cnVuaworNTM0NjIgMzc5YWY0MThmYzM2NzUyZGU5NWY0YWEyYmI3YmRkNTk1OGJlODExMSBiY2Fubm9uLW9iamNhcAorNTM0NjQgNDhkMzhkNzc3MDI0OTYyOWViNTE1M2IzOTA2MGYxNTE1ZDI5NWYyNSBsZWdhY3ktdHJ1bmsKKzUzNDY1IDAzYTVmMmIwNjgyNTNmYWUwNTM0NGE0YmQyYmM0YTM2ZGJkZTVjYTEgbGVnYWN5LXRydW5rCis1MzQ2NiA2Njc4MmU1Yjk5MmY1N2Y0YjcyMWIxYzk1NjRhOTljNTQ0OGVmYTE3IGxlZ2FjeS10cnVuaworNTM0NjcgNGE5N2YzYmZiNTVjZTFlNWJkY2NkOTNjZjU5ZjcwN2Y1YTkwNjgxOSByZWxlYXNlMjUtbWFpbnQKKzUzNDcxIGI3MzM4ZjNiMWIwMjI0NWVhNGNmYzg2OTBkYzM0NjFlMDU4OGIzZjUgcmVsZWFzZTI1LW1haW50Cis1MzQ3MiAwOTFkZjQzNjAzOGQ3NDVlYTlkNjI3Zjg4MjAyYjMwODQwZjRkNWNiIGxlZ2FjeS10cnVuaworNTM0NzMgMTkxZWFhZTVhMjlkMmVjM2Y0YTVmNjMyOWVmYjY2YzdkMTFmZTU1MiByZWxlYXNlMjUtbWFpbnQKKzUzNDc0IDRkODU3ZGE3ZTZjNGY0MTMyODc1NDNmOTY2ZTk1ZjNhM2RiOTExMDQgcmVsZWFzZTI1LW1haW50Cis1MzQ3NSA3NzMyOWIxMjdkNDM3NGU0MTY4NjE4ZjJkNGYwYjI2ZmVmZTBmNzMyIGxlZ2FjeS10cnVuaworNTM0NzYgOTRjYTA2ZDk1OTMwNmY4MmM1ZWIxMzM4MWM0ZTMwZTZjMmJjYjQ3YiByZWxlYXNlMjUtbWFpbnQKKzUzNDc3IDkwMTYwNDkwYzZkNDA1MmQzYjQ3NTE5ZDczMzUzN2VjNTliMjExODQgbGVnYWN5LXRydW5rCis1MzQ3OCAyMjNmZjM1ZGNmZmMxYjA2YWQ0MGJmMDc0NTQ1NjQxZGU5MjYyMzZhIHJlbGVhc2UyNS1tYWludAorNTM0NzkgZWU4N2VlZjk1N2YzNTkxMzYzMjc3MDM0MDdlM2ExMzlkMTQzMDBlNSBiY2Fubm9uLW9iamNhcAorNTM0ODEgY2E2MDdkNzQ4ZjY0ZTY2MDRjOGE1YWUwNjAyYmZiYTQ1ZWNkYzlmNiBsZWdhY3ktdHJ1bmsKKzUzNDgyIDliZGYzNGIzZjcyZWIwZmVlM2MyYjE5YjM5ZjJkODg5ZDVkMzY3ZmIgbGVnYWN5LXRydW5rCis1MzQ4MyAzZjFkZmFmMjkzZmExZGEwZWY5Yjk0OTA3OWY2ODhmZjlmMDU1MDRhIGxlZ2FjeS10cnVuaworNTM0ODQgMGJjNDJjMTU2ZTlmNWVmZWU3ODljOTUyYTRkMGU4ODZmNmU0NGVhMCByZWxlYXNlMjUtbWFpbnQKKzUzNDg3IDlmZTkyZjE4YmI2YTQyYTc0NjkzZDZhZTk4MDgzYzYxYTdiZDQ4ZTAgcmVsZWFzZTI1LW1haW50Cis1MzQ4OCBiOGFjZWM0YTRjODljYTZiZDNhZjg1OWI3ZjY3YjQyNDE3YzllYjRiIGxlZ2FjeS10cnVuaworNTM0ODkgYjA1MWQxOTdmN2E0OTM3ZmNjZWZjNjdhYWViODBjMjE2YTQ1NTI3NSBsZWdhY3ktdHJ1bmsKKzUzNDkwIDA1YTg5ODZkOTUyNjczN2M5MjQyMzJjNTdkYzUzMmNiODA3NGFjZjcgcmVsZWFzZTI1LW1haW50Cis1MzQ5NiA2ODBkMTdhNmIxNWYwYTA0MjRhMDNkNjA0ZDBkNDUyMzFlZTE2ZDIyIHJlbGVhc2UyNS1tYWludAorNTM0OTcgMzliM2E1YTNjNjQ1Yjg5YjgwZjVmM2I1YzBkNGEzNGQxYWU0ZDRkYiBsZWdhY3ktdHJ1bmsKKzUzNDk4IDYwZDMxYTEyYjE1MGQ1MDljZmQ3MGJmMTk4ZDA2YmNhZjY1ZmViYTggcmVsZWFzZTI1LW1haW50Cis1MzQ5OSAyZjgwYWY2NzQwNzRhZmMyNTI2YWUwMDFhYWQ4YzRiNWU2Mzg0YmJiIGxlZ2FjeS10cnVuaworNTM1MDEgNWJmNGYwNTkwM2IyMGM2MGY3OGViYzQ1MDY2MGQyNzQ2Y2E3YWVhMCByZWxlYXNlMjUtbWFpbnQKKzUzNTAyIDU5Y2Y4OWU1ZjIzN2VkYWE1MTYwODQzMTMxMzIxZjhmODRhYzhjNDIgcmVsZWFzZTI1LW1haW50Cis1MzUwMyA3YjM4Zjk5NTVjNjQ2NTk0MDE0Nzc1NzFiNzFhZjliOTkzYzU4ZmFmIGxlZ2FjeS10cnVuaworNTM1MDQgMTBiZmZkMTliNTM1YTQ0OGU0ODJlMjllZmZlYWZjODU5ZDJiM2YxMiBsZWdhY3ktdHJ1bmsKKzUzNTA1IDNhZTRmOTMwYmYyN2I0Y2RjMGM3N2ZlMTZiZGY1MDQxNmE4Nzk2NTIgbGVnYWN5LXRydW5rCis1MzUwNiBhYzRjMmY1YzNmYzBlOTkzNDMzNjQ2OGIzYzkwOTkyNzlmOTg5YzkyIGxlZ2FjeS10cnVuaworNTM1MDcgNWY4YTU0YzgwNGZmNmYwZGQzMmIyYzI1ODE5MmRhOTNhOWE2ZWQ2NCBsZWdhY3ktdHJ1bmsKKzUzNTA4IDBiZmZjYTY0Y2NjNGJhMDRlNDEzMDg4ZDA3NDBlYzgyZjQ4NDgxMTkgbGVnYWN5LXRydW5rCis1MzUwOSA3N2UwZjQ3MThhN2NhNjE3Nzg3ZTcwZmIzYThmNmZiZGU3YmEwNWM2IGxlZ2FjeS10cnVuaworNTM1MTAgYzg2ZGYzMTFlNjJjZWNlMjEwMDZiZTZiYzM2MjA5ZmFlZjJiNGI4YyByZWxlYXNlMjUtbWFpbnQKKzUzNTExIDJmYTZlODJiMWYxN2I3YWVmODc2MTM3OTcyYTczYjdjMmZmZGU3NzcgbGVnYWN5LXRydW5rCis1MzUxMiA1NzNhNDYxNzYxNzUzOTUyYTBiMDUyYzIxNTA0MjMwNTRkMDc1NDBjIHJlbGVhc2UyNS1tYWludAorNTM1MTMgNjY2ZmFmODkxMmUwNWYzN2ZlM2FiNGQ4MTNkYTI0OTIxNDViY2RhZSByZWxlYXNlMjUtbWFpbnQKKzUzNTE1IDE2NzlhNGFkYTE3MTJiMGQ4ODk5YTU4ZmRhYzlhZDBmY2Y5MDQ3ZGYgcmVsZWFzZTI1LW1haW50Cis1MzUxNiAzYjZhYzRmNGI0MzcyNDBiZGZhMGY4NTM0MGFlY2RjNTZiYmIxODM5IHJlbGVhc2UyNS1tYWludAorNTM1MTcgYjIzNzExYmUyYjNlMDM0MjEzOGY0NzRmZjMxNjY0ODQ4ODcwZmQ0ZiBsZWdhY3ktdHJ1bmsKKzUzNTE4IGJiNGMwYmJiYTI3MmY4ZDc4Zjc1MjZmZDI0YzYyMDgyODE0MDA4YjggbGVnYWN5LXRydW5rCis1MzUxOSBiMTZiNGY5NzZlNzBhZDg3ZjY2Mzk3MmMyY2FmYTQwNzkzZjQ3OGMxIGxlZ2FjeS10cnVuaworNTM1MjAgZWNlMmFmNzY0NjIxZDA1N2U0MjU2NGE0YjQ0ZDM0MWI5NmVjYTU0NSByZWxlYXNlMjUtbWFpbnQKKzUzNTIxIGRlMmJiZGVjZTgzZWRhZmQyYWUxZGE0ODkxOGE0MzI3MzU4NmYyMDUgcmVsZWFzZTI1LW1haW50Cis1MzUyMiBkN2JlMDNlYmY0NjY3MzFjYjdiZTYxYzQ3NGM2NTFlOTUxZmY0NDRmIGxlZ2FjeS10cnVuaworNTM1MjMgOWYyMzkzZTllYWNhYmY0MzgwNjNmZGFmMjhmMmY0ZjE3ODc5ZTgzMiByZWxlYXNlMjUtbWFpbnQKKzUzNTI0IDA4MWNhNjA4MGZmMTQ1MzA0ZTRkMzRmMTE4OTE5OTY0MzUyY2Y1MTUgbGVnYWN5LXRydW5rCis1MzUyNSAyOWI4YjY1YmFlM2ZhYjVlMGY0Yjk3MGJkOTZiZmEzYmUwMzBlMjEwIHJlbGVhc2UyNS1tYWludAorNTM1MjYgN2Y0MDY1ZWZhNDRlZTIzOTY1MTExNTE1ZjRjMzA3MmUyNWUyYTMzYSBsZWdhY3ktdHJ1bmsKKzUzNTI3IDg2YWIyZjIwYTMzMzM4ZGMwYTJmMDEwYWYwYzkyOTMxNGViNjg4M2IgbGVnYWN5LXRydW5rCis1MzUyOCBkMmUyZWRkMDcwODJjNGZiZWRlNDhiMjdiMmZlYjNiZTc2NWUzOGE0IGxlZ2FjeS10cnVuaworNTM1MjkgZGEzMGEyNmRmZWIzOWNiNTAxYjViMGMyODVhZGVkYzVkZGU3YmZhNSByZWxlYXNlMjUtbWFpbnQKKzUzNTMwIDY4NjBiYTg4ZDY3ZWE5ZDMwZjc5ZWU4MWEyOTM4NjNmMTI3MzJjZDggcmVsZWFzZTI0LW1haW50Cis1MzUzMSBkZjI5NGJjNWNlNmU4MjY5ODc2NTIxNjdjMTJmMzg5NTQyYmNmNTdmIGxlZ2FjeS10cnVuaworNTM1MzIgMGU5NWM3NzUxMmY1NGExMGMyOWMwNzM4MGIwMmE3MWYwNTQ2NDkxNiByZWxlYXNlMjUtbWFpbnQKKzUzNTMzIDI5MzMxMWU2M2E3MzJlMjFkYTdlZjY2MzBmZmYyNWQ5ODAwODA0N2YgcmVsZWFzZTI1LW1haW50Cis1MzUzNCAwMzE0NGM0ODY3ODJjMWIxM2UxYmE2MDg3OGI1OWY0OGUwZmYxNjAxIHJlbGVhc2UyNS1tYWludAorNTM1MzUgZGJiZGZjMDM4ZGM5NDdjZDkyNDBiYzI5NzVmODI4MjVlN2YyN2NhZSBsZWdhY3ktdHJ1bmsKKzUzNTM2IDM4ZDk0NGVmZTYwMGM2YzRlZjY5N2VmZTM5NThmNDUzZjkwYjYyNmMgbGVnYWN5LXRydW5rCis1MzU0MyA0ODA3YTZhYmY5MDYyNGM5OGI3OWM1NTNiMTNiYzA1MDJlMzliNmNhIGJjYW5ub24tb2JqY2FwCis1MzU0NSAwZDA5NmIxNDZiNDg2OGIzMjhiNTgwMDNhNzU2ZWMwM2RiMmMxMTVmIGxlZ2FjeS10cnVuaworNTM1NDYgNDE1OGJhN2Y0NmEwMzVhYTQxY2YyMjkxZGJmYjc2ZjRmNzcxMjBlMCByZWxlYXNlMjUtbWFpbnQKKzUzNTU2IGE1YjI2OWNlMDc5ZGVkYzZiMGZmNGM4YjQzMTk0ZTA1ZTA5MDA5OWQgbGVnYWN5LXRydW5rCis1MzU1OCA2NTZkZDAwOTVmNTJlZGMxOGRlZTk1ZDIzZDY5YmFjYjE5YWFiZGMyIHJlbGVhc2UyNS1tYWludAorNTM1NjMgZTQzODE2ZGRjNGYwNWQzMThkNTQwOWU3MmFjYTlkYzczZGM3YTlhOCBsZWdhY3ktdHJ1bmsKKzUzNTY0IDE1ZGVjYTM5ZTBlNmJiYzc5Y2M0ODE2MDYzZGJjZTIyMDBiMjNmMmQgbGVnYWN5LXRydW5rCis1MzU2OSA0ZmE5YzgwZmIxN2FiODZjMTlkNDg4NGEzNTRmYzUyNTkyMzliM2ViIHJlbGVhc2UyNS1tYWludAorNTM1NzAgMTE2M2Y1NWRhZDk1ZjgwY2Y3ZjA1ZWYxOGJiODZkZTU3ZjJlN2M1ZCBsZWdhY3ktdHJ1bmsKKzUzNTcyIDJiYmYxN2MxYzY5Y2I5ZDFiZGNjYTE0ZGMzODQ0NzEwMWQ1MDgxNjkgcmVsZWFzZTI1LW1haW50Cis1MzU3MyAxMjg1NTAwMGUxM2JkZWFiNDg4N2M3NDRjM2UxNjU5OTU1Njc1OWFjIGxlZ2FjeS10cnVuaworNTM1NzUgMjM0M2M2OGNhMWM4N2EzYWZmNTAyM2FiMjdkODFiMGU4Y2FiNTUwNyBsZWdhY3ktdHJ1bmsKKzUzNTc2IDE3NTFjYTNmZWZmZTk2YjQ0OGY2ZTM2MmI0ZDE2MmNjOWZiN2YyOTUgcmVsZWFzZTI1LW1haW50Cis1MzU3OCBjOWQ3Yjg2ZjkzNzdjYjE4YmJmMTM2ZmNhYmY5Y2FjZWFlZTEwYWUzIGxlZ2FjeS10cnVuaworNTM1NzkgMjQzMWY4MmE2YTE3NTZmYTc0YWQyMmNlM2I3MjAxN2RhNGZhMWZmYiBsZWdhY3ktdHJ1bmsKKzUzNTgwIGFkOTM2ZTBiNmZjZmQxYmIyZGJmOWE3YTM5OTBmMWNhMzc5ODM3MjIgcmVsZWFzZTI1LW1haW50Cis1MzU5MCAxNzgyYjYyMmFhYzcxYjliMGUzYWFkOTEzYThmNjVjOTFkZTA2ZDk5IGxlZ2FjeS10cnVuaworNTM1OTEgMmQ4MjM5YWJmYTYwZmFlM2MxYmU3NWViYzBkYmM0NGM4ZTJkNWI4YyBsZWdhY3ktdHJ1bmsKKzUzNTk0IDVmYzgxOWM2YzEzZTJlZjllN2JkNWQ2ZTcwNjBkZjZjYmYwZmE1YjggbGVnYWN5LXRydW5rCis1MzU5NiBkNjBhZDkxNGQ4MzNlZTk2Y2RiZWIzNGNkNWFjYzZiNGFjZDEwYzYyIGxlZ2FjeS10cnVuaworNTM1OTcgYWI5Yzg2NTE5NjI4MWFmYTJhNzU3N2NmNjY0OWU3NTc3OGU3YzIwNiBsZWdhY3ktdHJ1bmsKKzUzNTk4IGZmYjk1ODBmOTY3YmFhNmM5NjIyODVkNWQ4MzY2ZWY4MTVlMGE3OTQgcDN5aworNTM1OTkgZDViYWJiMzI2YTUwZDEwM2IwMTU0YmVjNGQ2YzBiMjUxMDgzMDhmZiBwM3lrCis1MzYwMCBhMjY0NDIyMjgwNTg1NWM4MTdkZjFkNTM2YzI0ODI3ZmYyYzQxNjljIHAzeWsKKzUzNjAxIDVkYWUwZDdmNjgzYWIzNzk2OTJmZDRjYjQ1YTkxOTFkZDkyY2UyMGQgbGVnYWN5LXRydW5rCis1MzYwMyA0YjEwMDFkYTM5OTI4NmE4NjNhYzY1OTk5MjIxNWVhYWJhNWQ5ODE0IGxlZ2FjeS10cnVuaworNTM2MDQgMGFjYTAwMzljYzFiNWVkMTVmMTBhOWRmNDFlMjY1ODQ3ZDAzNzU3OCByZWxlYXNlMjUtbWFpbnQKKzUzNjA1IGJkMzczOWE4NzI1OTVhMDcxNmQ4ZjYxNzc3YzMwZmI2OWZlODRiYTkgbGVnYWN5LXRydW5rCis1MzYwNiAwMzdhYmNhODE3YjYzODNiZGI0OGE3NzYxMzg0NDZhOTI1NWU0MDg2IHJlbGVhc2UyNS1tYWludAorNTM2MDcgYzE0N2M2YmM1NzlmMjgxOGFkMTMxMzJkYTA4NDFlY2QzMGFhZjMxZiBiY2Fubm9uLW9iamNhcAorNTM2MDggNjdlYzRhZmZiZDE0YzBlNGQ4NzE1ZDVhYWYwZGIwNjIwYzQ1M2ZmYyBiY2Fubm9uLW9iamNhcAorNTM2MDkgMGYyMGMzYmM2MjcwNmEyMmZjMWVhMTE5MmQ2ZWFiYjA3YTAyY2ExOSBiY2Fubm9uLW9iamNhcAorNTM2MTAgNmViYWQyYTZiOTkwNzg2YWI2MTIzYmM5NmI2MTY3MzE1MTdhMmJhMiBwM3lrCis1MzYxMyA1ODM4OWRlYTY1MWNkNjkzMWU4YTQxY2EzNzFlZmUxYWFlYTc4Y2U0IGJjYW5ub24tb2JqY2FwCis1MzYxNiA3MmMwYzZhZWMxZWQxODVjNjM2Y2UxM2YwNGE1YTcwNjM1YzIyMDEyIGJjYW5ub24tb2JqY2FwCis1MzYxNyA1M2EzNmRiMmMzODc2NDA5OGJlOGY2MTBhZjYwM2I5NGEwOWQ0ZDhiIHJlbGVhc2UyNS1tYWludAorNTM2MTggMmE4ZTllZmI1ZDIwYzNiYzVkY2M3MTllZTI3MTRlNjg5YjAzZWFjOSBsZWdhY3ktdHJ1bmsKKzUzNjI0IGFkOGNkZmI2OTg3MjEzZWQwY2Q2ZDVkM2RlNDhmNTc1YzIwODAyNTggbGVnYWN5LXRydW5rCis1MzYyNyA4NDgwOTY4ZjRmNGExNGU5MjkxYWI1MDE1NTk5ZDE5MTdmNmFhOTE5IHAzeWsKKzUzNjM0IGYxNzAxYmEyNDUyYjQwZWE4ZGI4OWMyM2IyYzNhMmM3YzMzM2EzODEgcDN5aworNTM2MzUgY2NhYzYzNmIxNTJjZTY4MmZiNGYyNTI1MjViZTQ1ZGFiZGY4ZDY4MyBsZWdhY3ktdHJ1bmsKKzUzNjQxIDZkOWNhOTBkOGJmNzQ5ZDk1YmQ5ODBhZmQxMTdkZDAyY2E2YmVlNTggbGVnYWN5LXRydW5rCis1MzY0NCAxYWY4ZmVlMzMwMTNjMGU3NjJiMjQwYTU4NDM0ZWU5ZTE3MmJhMzJjIGxlZ2FjeS10cnVuaworNTM2NDYgZDNlODg2MzFmOTJiYjZhMDdiYTcwZTk1ZDllYzIzYTFkMDVjYmIxZiBsZWdhY3ktdHJ1bmsKKzUzNjQ3IDI2NWM1MWJhMzkxMDIzMTQ5YzY5YWQwNWM1MGE1OGM1NjE2ZDZlZTEgcmVsZWFzZTI1LW1haW50Cis1MzY0OCAwOWRjYWNjOGEwYmMyYTFlMzBmZDg0N2EwMzY3ZDdjYWQ1ODU0NjY5IGxlZ2FjeS10cnVuaworNTM2NDkgMDUyOGQ2Zjk0ZWI2ZWU2M2Y4ZTQ4YzBkMWFmMjcwN2IzOTg3MmYxMCBsZWdhY3ktdHJ1bmsKKzUzNjUwIDZjNDFiMDEyMjc0N2FmNTlkNTFmZTc5NGFiMGE1OGQ3ZTFiOWQyNGQgbGVnYWN5LXRydW5rCis1MzY1MSBkNTk0ZWM4NThmZTk3NGRjNWQ5MmMxNzAxMzZiMGYyMzY5NGQ2ZjQ5IHAzeWsKKzUzNjUyIGY4M2Q2YWEzOTBmMTA2YjkyZmI4ZmYyZGZlMmRhNGViODg1OGQ4ZGYgcDN5aworNTM2NTMgYzc3OTMzNDVhMGM1NDRjMjQ4MjdjYTVjYmEzNjdkOTJkZWI2YWZlZSBsZWdhY3ktdHJ1bmsKKzUzNjU0IDQ5OWJmMzA0MGFmN2JmNDUzYmZkMzFkZTIzZTU5YjNiZDVhYTFiNDIgbGVnYWN5LXRydW5rCis1MzY1NSA1NmRiZGI3YjQwNGEzOWJlN2E1YzI4MzNhNjgyOWQzZGQzOTRlZDBkIHJlbGVhc2UyNS1tYWludAorNTM2NTYgMDc4NzU1NDk4Y2ZlMzU1MGJiNjAxMmRlYzBiNTZhMzVhMjc3OTZmMyBsZWdhY3ktdHJ1bmsKKzUzNjU3IGQ1MDk5NDY5M2M5MjU2ZmQxZTFiY2JkNzBlZWNlYWM4OTUxZmU0ODMgcmVsZWFzZTI1LW1haW50Cis1MzY1OCA0ODdlZjBmOTAzZTAxNTg0MTdjNzg1Yjk0ZDFjMDM5OGRjYTY4YzhjIGxlZ2FjeS10cnVuaworNTM2NTkgOGViMDNiMTE4MTY0MGYxOWU1NDk5YjIyYzJkM2UyNGZiZTIzZTRkZiByZWxlYXNlMjUtbWFpbnQKKzUzNjYwIDI5MDBjNzU2NDA1NWQ2MmMyZGY4MGE2N2IyN2Y3NDg1ZjYyNjZlZjcgbGVnYWN5LXRydW5rCis1MzY2MSAzMDIyNzc4ZWUwY2M2ZDM2ZmI1NDg2NzE3Mzg3ZGIzZDBiMTNmNDI1IHJlbGVhc2UyNS1tYWludAorNTM2NjIgZmZhYWFlMDJjNjYyOWNjNTU2ODhlZDhlMzZlZTAxNTE1OTQwN2ZkZCBsZWdhY3ktdHJ1bmsKKzUzNjYzIGEyZDdmNGMyOWU1YjA4OTEzZGZlN2ZjOTk0Mzk4YmZlZDU4ZWU0OTQgcmVsZWFzZTI1LW1haW50Cis1MzY2NCBjOTk0YzI0NWQ5YWI1Y2Y5NjU3MDU0ODQ0Y2MxMDM4NzA3ZDdlMTVkIGxlZ2FjeS10cnVuaworNTM2NjUgZDhmYjBmNmFhYWQ0M2NiMmY4MjAzODhiMjAzY2I5YjFkYWNlYzE3YiByZWxlYXNlMjUtbWFpbnQKKzUzNjY2IDFhZDA1Njg3MzdmNjEwMTMyNGE1NDc1MmZkYTE3MmI5ZWQ3NTZkYmMgbGVnYWN5LXRydW5rCis1MzY2NyA0N2JiMjgwM2ViMWJlMzY5ZGYzOGI5Y2Y2ODFjNDI3YWVlMTFhOTBjIHJlbGVhc2UyNS1tYWludAorNTM2NjggMWY3MWEzMmY5OGQyM2JjMDMwNDFhZDZlYTc2NjBmYTg3OTAxOTE4ZSBsZWdhY3ktdHJ1bmsKKzUzNjY5IGEwNGM3ODE1NDZlZDJhOTdiM2Y1YjZiYmM4NTNkMGMzYjEwMGQ4NGQgcmVsZWFzZTI1LW1haW50Cis1MzY3MCA5ZjVlYWVhM2M3OTU0MDliYzMzNThmYWZiNGY5ZWRjNmE5MTEwOTFjIGxlZ2FjeS10cnVuaworNTM2NzEgZTc3NmM4M2EwYzE5ZTI3M2U3MjA4ZjFjZmQyYTk2MWIwYTQ0ZmI5MCBsZWdhY3ktdHJ1bmsKKzUzNjcyIDcxNTZjZmRjMzY2N2UzYmZkMDUyZDQxOGJkYTM2ZjkyYjU5OTFjN2IgcmVsZWFzZTI1LW1haW50Cis1MzY3OSBmN2U5MDcxYzNhMWYwMGVkNzEyNGYxZGUwZGUwYTI4ZTFkZTZjOGY3IGxlZ2FjeS10cnVuaworNTM2ODUgNzkzZTAzMjNkNGQ2NWJmYzg5YjQwZDc4MTYyY2Q3NzFjNTc1YTE4ZSBwM3lrCis1MzY4NiA0Y2RmMjFhMGRiYmNlODkxZTc1YTkyMGQ0ZmFmNGMwZWNiZGQ4MzMyIHAzeWsKKzUzNjg4IDFkNTQzYTMyMDM0NjEwNzMwNWM0OTEzZDgyN2QxNDlmMjBhNDM0ODcgcDN5aworNTM2ODkgZjZmMzkxZDFkMDUwZmUzNmQwMDI4ZmVjMmRjZTEyMmJmMzBjNDRlOSBsZWdhY3ktdHJ1bmsKKzUzNjkwIDgzZWZmZjRkNWFlOTQyNThlYzY5MmNlYmZiMTgyYmZjZWVmNzBjNWIgcmVsZWFzZTI1LW1haW50Cis1MzY5MSA0ZDkxNTY0NjQ2NzM2ZGY3MTA3ODE4YTI5OWFkY2FiNTZjNDM5ODNkIGxlZ2FjeS10cnVuaworNTM2OTIgYjcwNDJiZGY5MGE5YmFlNDE0ZjQxNDE1OGE2MTM3ODFkZTY4ZGZmNSByZWxlYXNlMjUtbWFpbnQKKzUzNjkzIDk4NDA0MWU3NDQ2ZDMxYzZhM2JhMDRiNWM1OWEwMDhjNmVhYWQ1NzMgbGVnYWN5LXRydW5rCis1MzY5NCBkMmZlODkzYTQ4NDM3MjU3MDU5NzAzZDA2MThlNjhiNmZhMzM3ZmVlIHJlbGVhc2UyNS1tYWludAorNTM2OTcgMjY2YzFiMGY5ZTE2YzY4ODY2NDZhYjI5MzdlMDQ0MGI2NmU2YzQxNiBsZWdhY3ktdHJ1bmsKKzUzNjk4IGJlMjk1ODc4MjU2YWFiY2YzZWUwNjNkYzBlZGI2YmU1M2RhMjk1NzcgcmVsZWFzZTI1LW1haW50Cis1MzcwMSAyMjc2MGQ1M2Q0ZGE1ZDI4NzdmODE0ZmExOWRkNjFiZjcwMDZhYmE2IHAzeWsKKzUzNzAyIDBjZTE0YzRjYTEzMzdkMTA2ODNhNDY5YTc3YWM0M2FjODhiZTRiZGEgcDN5aworNTM3MDMgNjkxN2M2NzZjOTJmYmI0OWNkMWIxMjUyMmQ5M2E3M2EzOGZkNGU5YSBwM3lrCis1MzcwNCBlOWE2MjM0YjI2YWZkMWUwMjUzOTYzMjU1MjNhY2JhM2QxYTNmYWYxIHAzeWsKKzUzNzA1IGU4YjI5MTNmOTI5N2Y0N2Y5NDJjMTVkM2E5M2YxZGIwMDY0MTIyOWEgcDN5aworNTM3MDYgOGQ5YTBlYzRkOTc2MDA3NzYzOThlOTk2ZGRkMmQyOGQwZTA5MTZiZCBwM3lrCis1MzcwNyA5ZmQ5NjQwODhlMDcwNWY1MmU4NTA1N2VhMDJlZWIxNzUzOTY3ZDg2IHAzeWsKKzUzNzA4IDgxZTQwMzRhZDg4Mzc2MTIwMjZmZjFlZGRmODFlZTM1NWYxOWU0NjIgcDN5aworNTM3MDkgYzE1Y2ZmMmRkMThmNWNlZDk1OWI0NWYxMTdkM2IxNDA5MjMxMzA4YSBwM3lrCis1MzcxMCBiN2Y4OWRiOWExZDA1YWE4NjQ1YTU3OGJiNjhhN2E0M2NhY2VlODZjIHAzeWsKKzUzNzExIDQzZTM2OWNjMDJjNTVmNDczZjZkNGE3NTZmNWZmYzhkNDE4OTM3MmUgcDN5aworNTM3MTIgYzRiZTQ5M2RjYjZmOTRiNTZiYjZjNWNkYmZkNzEzMjZlMTc2NTc4NSBwM3lrCis1MzcxMyBmZmRjOGQzOThlNDkxMWI3YzQxYzhlY2NjNzcyYTdmOWQ1ZTZiY2NlIHAzeWsKKzUzNzE0IDcyMjc3ZTE5NjdiMmI2ZGZjZTIyNDNjZDdlZTkxMmY0YmUxMWI3ZDMgcDN5aworNTM3MTUgMDRmNWNiYzc0NDI0MWRiZDQ2NGU0OTNlZWIwYTg1ZWRhYTBlOTNjYSBwM3lrCis1MzcxNiA2NzUyNWVmYzk5YzU3ZjdhOTc0YjhlMzQwZjgyNTFhNThkZmJmMzMzIHAzeWsKKzUzNzE3IGFlOGVlOWU1ZTgxNTAzOGZjZjYwOGMwNDlkOTQwNTE5ZjkzMGZlZjQgcDN5aworNTM3MTggNTYyMmExM2FkOGFiMTFkNzAxM2UxMTZiYWEzZTZmZjIxNWIyYTFmNSBwM3lrCis1MzcxOSBlMjgwMGU4ZGQ5YzQ4NGM0YTk4OTVmY2JhNjk1OGFkMmY3YmI4ZDRiIHAzeWsKKzUzNzIxIDQzNWVkNjQxYTMzM2Y4MzM5NjMzYWU3MTExMTI5ZmJlMWYzZjgyY2IgcDN5aworNTM3MjMgZWFlZGY4NGVhYmNkZjY4MzhkZGQ4NDlhYTQxNmM3Yjg3YmY3Mjk5ZiBwM3lrCis1MzcyNCA3ZGEyYWUxYTRmNzA5ZDBmMTRkM2E5ZTU4YWQ2ZmQ4YjJlNzFhOWVhIHAzeWsKKzUzNzI3IGYyMjk2NDVkNjA3ZGRlM2U5MGYxMzNkMzQ4ZTAyMDlkNmNkOTk4MTggcDN5aworNTM3MzEgMzUzYzAwOWY2YzUzODUyNTQwZmFjYmEwZDMxYzY1M2VjYTc2ZGM5OCBsZWdhY3ktdHJ1bmsKKzUzNzMyIGYzNDBjYjA0NWJmOTJkMGU3NzcyMzg1YTcxOTdlOWIwYWYzN2YwYTggcDN5aworNTM3MzQgNGEwMWY2ZTAyMDE2ODg2NDFkZjVhZjk2OTRkMjk4MTA0NmVkYzVjMSBwM3lrCis1MzczNSA1ZGJjZTJlYTEzM2MzYzAxZTc2YjBjNmQzYTQ5NDE2OTVhYmJhOTFiIGxlZ2FjeS10cnVuaworNTM3MzYgOTA1MzZiZTA5M2Y3ZGE1ZjlkZTY2MzhiMWQ2NTExZGIwM2I3N2NjYiByZWxlYXNlMjQtbWFpbnQKKzUzNzM3IGZjZjY5MDJmMjEwZWQzYjA2Yjk1YmM1MjA0NTFlNzQ5YmViY2ZmZDggcmVsZWFzZTI1LW1haW50Cis1MzczOCBjYjgxMjNhYjJhMDY1ZDhhMDkwZDE0MjNjZmFhMTIxM2NjY2UzZTQyIHAzeWsKKzUzNzM5IDVkZTc1NDdhNWEyMzcxMTExMzg2NjEyYTlhOWEyZmE2MjNjMDY0ZWQgcDN5aworNTM3NDAgM2QxOGQ4ZjM2NmIxMTg0ZDYxOWJhNzQ5NTBhM2Q3MTU4ZDY0ZDI1OSBwM3lrCis1Mzc0MSAyOWQ2NTc0MWY2Yzg5NmYyZTFjMTkzZTAyMGNmN2RkYjQxMjcyOWIxIGxlZ2FjeS10cnVuaworNTM3NDIgYTg0NDYwZTUzMTYwOTNkMDAzMGZlYjhjNzYwYWMxYzNhOTg4NTcyNCBwM3lrCis1Mzc0MyA1ZWY3MGM0OWQ4NWEyNDMzNWI0M2FmNDNjM2YwOWI2ZGY2MzE5MmEzIHAzeWsKKzUzNzQ2IGU2Njg1Yzg0MGVlM2MxMWE5MWUwYTMzNzIxYTU3YjE3Y2Y1MWY4MzcgcDN5aworNTM3NDcgNDI5YTRiYzMxYzhlMzY3MGU3MDAwZmE1NDA5YzdlMmI4MGY1NDc1MCBwM3lrCis1Mzc0OCBkY2E5YmM4ODMwNDA5NjU4ZmI3NzJhNmQwYjMwNTNjNmRkNDM0NWQ1IHAzeWsKKzUzNzQ5IDUwMzMwZDE4ZDFjZDcxNDFiYWZjMmM4YTk5ODBhOGI4Y2E4ODNkNzYgcDN5aworNTM3NTEgMTgwZDRlODk5NjgzOTA2OWZjYTg4MTljZjlmM2NjYzVlYTJlYTNlMSBsZWdhY3ktdHJ1bmsKKzUzNzUyIGVjMWViZGY1NGVhZmQ5YWJiMTQyNDE4ZGM2NWNiYTRhNjJkZDMwMGEgbGVnYWN5LXRydW5rCis1Mzc1MyBiYmU2ZGUzYTk3NDUwMDZmNDEyNWFhYzMyNzJjZWJjNDMzZjNlM2VjIHJlbGVhc2UyNS1tYWludAorNTM3NTQgNzI0ZTBiNjNhNzliNWQ0YjBjYjE2N2FiOGY5NjBlYzUxZTZiMzkyOCBsZWdhY3ktdHJ1bmsKKzUzNzU1IDdhZDI5ZTk5ZWVjODU3MjYyMGZjZjA5ODcwM2FhNTVkNjA0Yjk3NjUgcmVsZWFzZTI1LW1haW50Cis1Mzc1NyAzMmQ0NmFiYWE4YWJhNGM1ZTdhOWNhODI5NTI1MjNjZGNkODFkOTY4IGxlZ2FjeS10cnVuaworNTM3NTkgOWQyNTNjZDM4YjViNjVhM2Q2YzY0YzQ4ZjhjYWYzNDVlNTVlNDI2YiBwM3lrCis1Mzc2MCAyOGM0ZDliNzc0MGVkMDEwMzg1NzNlZmFjNzAxZmU3MDE3OGNiMDQ1IGJjYW5ub24tc2FuZGJveGluZworNTM3NjEgMzVjMGQzOGFjZGNlMDgwMmYzYmJkMDQ3ZDZjMDAzZWNjMDBjMTQ4OSBiY2Fubm9uLW9iamNhcAorNTM3NjIgZDRhNmE2N2EwMGEwYmEzNWJjMjFiOWFjMzIwM2U5YjA4NTgwYjBiNCBwZXAzMDJfcGhhc2UyCis1Mzc2MyA4MWQ2OGRkODRhYTA1Y2Y4ZDU4ZGY1NWFmMTc0NmQ4MWE5OTlmYjE0IGxlZ2FjeS10cnVuaworNTM3NjQgMWRiYTYxYzA3NzAzNGUxNjg3YTFmZjYxNWFjMmRiN2JhZjA4NzJlYSByZWxlYXNlMjUtbWFpbnQKKzUzNzY1IGRhZjA2MzUyN2I5NzIxNGM5NWUyNzMyN2RkZDk5MmVjMDdlNGQwMmUgbGVnYWN5LXRydW5rCis1Mzc2NiBkOTQ5OTMzY2Q2YjQ2YzcyY2Y3YzQwMjkxNDEyZDJjNmViN2FmNjE5IGxlZ2FjeS10cnVuaworNTM3NjcgYmQyNGQzODI2Y2M4M2RmMGM5YjU4Y2RkZjFjN2UyYzRjNzMyNjJmNCBsZWdhY3ktdHJ1bmsKKzUzNzY4IDE3N2E3YmVlNjRlOWViMmQzNzcyY2VmZjgxZDE5YzJjOWE5YWVkYTQgcmVsZWFzZTI1LW1haW50Cis1Mzc2OSAzYmJlYzkxYzViOGZlNjZlYzM0ZjBmOGYxYWIwODg0YTE0YTg5MzBlIGxlZ2FjeS10cnVuaworNTM3NzAgODg1YTc3ZmQ1YzAxYzdkYmY4M2EyOWQ1ZGNiZTk5ZjU5NmEwOTA3MSByZWxlYXNlMjUtbWFpbnQKKzUzNzcxIDM5ODNlZTBmNmY5NjRkYmIyMjhmNWUxYjE1MmRiYWRlOThhYzU1OWQgbGVnYWN5LXRydW5rCis1Mzc3MiBkNDc2OGJmZjY0M2VhODEzZjY2ZWI2ZDc5NzIxNWQyYjUyYTVhMmU4IGxlZ2FjeS10cnVuaworNTM3NzMgYWJmZDk1MTg1YWI5OTE5MzY5NDFkYWRjNDBkYWRmNWFkMjFmNmJiNCBwM3lrCis1Mzc3NCA5MGUyMmZlYTgzNjM0NDU2N2RjNTVkZThhOWE4YTBkYWI3Y2U4M2M5IGxlZ2FjeS10cnVuaworNTM3NzUgZGM1Njc4OWIyOWU5YTYzYjRmNTcwNGYwZDgxNDUxMDM5NzFmMTg5YyBsZWdhY3ktdHJ1bmsKKzUzNzc2IGE2NTQ2YzI3MzY5YTZjNGYxMzBlNmRmMTBlYzY3YTE1YmJmZGYyMzMgbGVnYWN5LXRydW5rCis1Mzc3NyAwOTcyYzIxNzZhZjliOWE5MGY4ZmNiMGZjNGVhNWRiNDFiMmFkYWM1IHJlbGVhc2UyNS1tYWludAorNTM3NzggYTYyMTg0YjAzZjBmMTUwMmQwYWI4ZTdkZWY5MmM5YjY2NmJmYTY4MiBsZWdhY3ktdHJ1bmsKKzUzNzc5IDczNDgxZTA3Nzc1OGE5NDE5M2ZiMDExZmU5NjZhYzU5NzhlZWRjOTEgcDN5aworNTM3ODAgNTAyZGUwNzlhYjNhMjA1MjAzMzUxYTBmZjUwMmI4ZDg0MDk2OTYwMiBwM3lrCis1Mzc4MSAxZDUzZWEwZmMyM2YxNWY1ZDJjNjA1NzZlOTZjMzA1YmMwZmE3MjY3IHAzeWsKKzUzNzgyIDQ4YjZkMDE1MzQwYWU2OTc4OGI1OTY5MzRmMDQzZjNmMWY1NzIyMjcgbGVnYWN5LXRydW5rCis1Mzc4MyA3ZTRiNjM1ZjFkMzFkYmEwZDdlYWUxZTEzYWIzZTgwY2M0ZmEzYTI5IGxlZ2FjeS10cnVuaworNTM3ODQgOTliMGUwNGIyZWIxY2EwMTFmOGZhODNiMzJlYzQ3ODEzZDVjMzZiNSByZWxlYXNlMjUtbWFpbnQKKzUzNzg1IDJhMjUzMjg4M2Q4MGZiMzcyZGIyZTNlZWE4ZTI3Y2VlOTZkNzc3ZDYgbGVnYWN5LXRydW5rCis1Mzc4NiA5MTRkZDUwNTlmMzhmMzIyNTU3YTgyNDQzY2UyOGY2MWY1Y2YwMmEzIHJlbGVhc2UyNS1tYWludAorNTM3ODcgNDc0OTc3Y2Q0ZDljODQ0MTQyOGE5MTQzZDM3ZWFhYTM3MTYzMDc1YiBsZWdhY3ktdHJ1bmsKKzUzNzg4IDI5ZmI4ZGJkMTBiODVmNGIyOWY3OTg5ZDA0NWQ5NjMyN2QzYjc5YWYgcmVsZWFzZTI1LW1haW50Cis1MzgwMCBiYzJiZDBmMDFkOTViNTQzNDk2ZmZhMTZjNWJiZjZhNDI1NGE1OGUzIGxlZ2FjeS10cnVuaworNTM4MDEgYjRiMzI3ODQwZmIxNTEwZTk3YzU0MDk0MDYxNDY2MTRmNTc1M2JmMCBsZWdhY3ktdHJ1bmsKKzUzODA5IGY0ZjY5NWE3NTY2NGFmM2JiZjJmNzg1ZDA1MzNlM2Q2Y2RjZTVkNGIgbGVnYWN5LXRydW5rCis1MzgxMSBkNzk1YTU1ZTliZTQxZDZkOWQ1MjBkMjczYmY2NTZkZmMwZGIyNjY5IHJlbGVhc2UyNS1tYWludAorNTM4MTIgNzM2ZjNkOTBlNGUyODQ4NmY3MDc1Y2MwMzgzNzQwNjk4ZDJhZDI1MyByZWxlYXNlMjQtbWFpbnQKKzUzODE2IDllMzU2NDVhZjQwZjY4MmVjYzJmOTFmNjllNDBjZDcxZGQ1ODQ0MDcgcmVsZWFzZTI1LW1haW50Cis1MzgxNyAzNWFlMjgyNTdhMjgwNWI0YTcxZTllYjEzYjE3ODBmM2VkMWYwOGUwIHJlbGVhc2UyNS1tYWludAorNTM4MTggYjBmOGU5YjBjYzE5OTI4Y2NmOTczYTU1MjhmZmE0M2I3Nzc3ZmZhYyBsZWdhY3ktdHJ1bmsKKzUzODE5IDgxYjVkZjU3OThjMjdhNWE0YjBjOThlMWNlZjE4ZWNmZmU1ZWI4OTkgcmVsZWFzZTI1LW1haW50Cis1MzgyMCAzNmQ3YjNiNmVlNTk2ZmU4MTg4MTgwZTg5MmU2ZmVkZmYwNmZkNDA1IGxlZ2FjeS10cnVuaworNTM4MjEgZDM4NmI0NjA5OTNiNzNiODZmZmRhY2MwODJjNTI1M2VlYzQ1MDUyYiBsZWdhY3ktdHJ1bmsKKzUzODIyIGRmMDIwNGNhOTczOWYxNTc1ZWYwM2E5Y2JkM2QyMzBhOWU1NmM5NmEgbGVnYWN5LXRydW5rCis1MzgyMyAwY2M0NTBiODk4Mzg5MTZkMTUyM2JiNDdjZTBlNGJmODU1NjFlZjIwIGxlZ2FjeS10cnVuaworNTM4MjQgYzllNDEzYjFkNTQwNmEwYThiZjdiOTQ0NmM0ZjdiZGJjYjRlMzU2YSBsZWdhY3ktdHJ1bmsKKzUzODI1IDU3N2JmMjFiMmM4NmRjZTA1YjAwMzE0NDY5OWFhMThjMjcwMWIyY2MgbGVnYWN5LXRydW5rCis1MzgyNiA1M2ZkMTQ0YTNmMWFiM2NiOWYyNTgzMDJhYjVmOThhNmJlODU0NjdmIGxlZ2FjeS10cnVuaworNTM4MjcgNjcyYjkwNzU3NjQ3MTNkYThkNTYwZTc5OGViYTBhYjAzNzU1OWQ4YiBsZWdhY3ktdHJ1bmsKKzUzODI4IGMzNGJkNjU4OWUxZWViY2QzOTc1MzE3MzY5Y2M3MmQ2ZDljODc0Y2IgcmVsZWFzZTI1LW1haW50Cis1MzgyOSBkNWExNWY4NTNkYjc0ZGU3NmNlOTI2YjViNTM1NWYxMWI1ZWU2OGEyIGxlZ2FjeS10cnVuaworNTM4MzAgMDFkNTRiODhiZjU4NmUzYjhkMGI0YTYzNDllMjJkNjc0NjE1MGI5YiByZWxlYXNlMjUtbWFpbnQKKzUzODM3IDZmYTBkNjgyZTFlNTUwYWEwMWIzZDMzYzFiZDcyMTZkMjUxOTY5MWYgbGVnYWN5LXRydW5rCis1MzgzOCA4MTI4NjE5ZTk4NGRlOThjZDY3MTQwNTRhOGQyYTY0NzZkOTk1N2U2IGxlZ2FjeS10cnVuaworNTM4NDEgNDM3OTczODQxMTVlNTk4ODgxZTYxMTZhMDNkYjA3NzQzNGQ3OWMxZiBwM3lrCis1Mzg0MyA1NWRlYjFkYTRjYjhkZTE2MzUzMTJlNGZkZDFmYzk1MTFlZDc3ODM4IHAzeWsKKzUzODQ0IGU2OGI0OGMzOWQ4YWNiNTNmM2YzMTVmODc5ZjE4YmEzZTM5ODMxYzIgcDN5aworNTM4NDUgNjA4ODNlNjE0Mjk4ZjMxYTZjZTY5ZGY0NDRmODhlYzY3NjI0YTQ1MSBwM3lrCis1Mzg1MiAzZmJjZDZlMmJjYjc3ZGRkOWNkMDgyNDgyNGFjM2FkZDk5M2IzMWE4IHAzeWsKKzUzODUzIDM0MjdhOTczNDVmY2ZlNzQ4Y2Q0Yzg5MWE2Mzk0YmJiZThkZjEyYjIgcDN5aworNTM4NTQgYzE2NGIwYjc1OTcxNjBlZjUyMjQ4ODIyMTNjYmY0NDY5N2U3NTc1ZCBwM3lrCis1Mzg1NSAxMjQ4OWE1ZGZiNGFiMDJlZjYzNzNmYjNkYWU4YTEwZGI1MTVlY2VjIHAzeWsKKzUzODU2IDkwOTc2NWViMzgxYmRmNWI3ODRiY2E4OWNjNTc2OWE0MDY3OTVmOTAgcDN5aworNTM4NTcgMjk5ODcyNDQ5MDVkZmZkNDRiYTNlNWEwN2YzMTJmYzg5NWFjZjhkNyBwM3lrCis1Mzg1OCBjNTBlMjYzMzAxZGFiYjUxZjBhNzZjZmUxNGQ2OTQ3ZDhiMjVkNTE3IHAzeWsKKzUzODU5IDIwZTA4YTg3OTE1YTU1YWE4NTJiZjYyNjM1NjE2NTBlMDM3ZDhmNDggcDN5aworNTM4NjEgZjNhNTlhY2NhNTFmZmU4NzI0MDg3YzY4ZDRkMTUwMDgzMDM4NmFmMiBsZWdhY3ktdHJ1bmsKKzUzODY0IGM5M2Y5MmE3ZDkyMDJlMmE1MjBiODE0NGYwMTI5ZTM1MzI1MjhmMmIgbGVnYWN5LXRydW5rCis1Mzg2NiAzMmM0ODk3YjVkNDZjMDBlZWVjZWYxYmFlYzdkYzIxZDBkMWJiNWMxIHAzeWsKKzUzODY3IDNiYWM0OTI1OGE0YTU4MGY4ZDk5NTA1OTRmNThjZjdmMTk1ZWVlODkgcDN5ay1ub3NsaWNlCis1Mzg3MiAwZWEyNGY0ZjI0NjdhZmM0OTNkMTM0ZjU1OGFhNDcwY2JlODA0N2U4IHAzeWsKKzUzODczIGJkMTQxOWU5NDc3M2YwOGEwYmVkNjExNDI0MGZhM2UyMzliMTljNDcgcDN5aworNTM4NzQgYjA1NzkwZDA2NmI0NzQ0ZTUyZDNjNzJkOTI5YmRmMTg3Y2MxNjBmNCBwM3lrCis1Mzg3NSA1ODNmZTc1M2U3MjEyOTc5MTAxYjRlZTMyZTg1ZTBkM2QxNTMxMTAxIHAzeWsKKzUzODkyIGI1OGE0Mzc0YWMyMWU0NWIxYTA2MmYwZTdmZmMwMGQwMzNkODViOTkgcDN5aworNTM4OTcgNDJlNzljNTkyMTJkMjJkMjUyYTA0Zjg1NWI3Zjc5YjMyYjE0MDM2OSBwM3lrCis1Mzg5OCA5MzA0N2VlNDg2ZGE0YTA5ZjRkZGEyZDNjNmEzZDNkNTIxNTJhNDVhIHAzeWsKKzUzODk5IDJlNGRhYzA1OWNjNTRiM2E0MGUyMzdjZGNhNTk4ZTM4N2E1NzM0MzMgbGVnYWN5LXRydW5rCis1MzkwMCA2NWNkMWYyODBlNjNjMGI2NmUwZTY4N2EwMDU3NjhmOWFhZjhlYmJkIGxlZ2FjeS10cnVuaworNTM5MDEgODgyYjljMTQ4OTVjMGNjZTVlOGUzODAxYzlmM2M5ZmVhYTUwMzRjMSBsZWdhY3ktdHJ1bmsKKzUzOTAyIDE5MWM0OGNhOGJmOWMxMjY4MTk1NDI4Yjg2NzhlYjg2MmYzNTNjOTEgbGVnYWN5LXRydW5rCis1MzkwNiBlODU0MjcxNDk1ZGUxMDQ0Y2FmNmRhYWEwOTU5ZjI1NzMxM2Q3YWI3IHAzeWsKKzUzOTA3IDgzMDg4YWQ4M2E2YjBmMmRhODMyYWNiYWQ1ZDYxZmEyYTg3NDQzMDkgcmVsZWFzZTI1LW1haW50Cis1MzkxMCAwYzQxMGM3ODUzMWNmMzAyMzNhYTgxNzU5NzRjZmUxNmVmZDU5MzM3IGxlZ2FjeS10cnVuaworNTM5MTEgZDAxYmQzN2JmNWNlNTI2MTgwZDBhYTMxY2EzOTJmNzM2OTc4YjQ3ZCBsZWdhY3ktdHJ1bmsKKzUzOTEyIGYyZjBiNDFmMjcwZGFlNGM2OThmMmNhZmE4ZTQ1MzBmMWYzOTg5OWUgcDN5aworNTM5MTMgZWFhZWU3ODVlYjg2ZDc4ZjI0MmNmNDNjZTE4MDRmYTZkNTY4N2IwNyBwM3lrCis1MzkxNCA5N2M3N2IxZTM0YmYyNDMxMjI1NDNlMmU0MWFmODVjMGNlNzIwN2E2IHAzeWsKKzUzOTE1IGE4YzNhYWFiMDBlYTIzMjRhNmYwMTgwNjc4NmQ3MWU3OGUwMjYxNmIgcDN5aworNTM5MTYgMTlhZmIwMzAyYTA2ZWIxZTZhYmM3NTVmMjRmNTNkZTIyYTdjNzRkZSB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTE5IGQ4NDJlMzVmNWEzMTBlNTQ2ZWU1NmEwNWJkMTA1NjFlNWRiY2I3MGQgbGVnYWN5LXRydW5rCis1MzkyMCAwNzBiOWEwYjRjMDQwNDA3ZjM3YmUyOWU0YzM5OTNmYTViMzZhYWE5IHJlbGVhc2UyNS1tYWludAorNTM5MjEgMTNmMzkzMWI5ZmM0NjkyOTQyZTNlY2U2MmRkMGZiOWI2OTA2NzA5NyByZWxlYXNlMjQtbWFpbnQKKzUzOTIyIGY1NzkwZjk2YWNmM2MzOWRkY2M3ZDFmYzE3YWVlYTJjZTc4OTYxZjggcDN5aworNTM5MjYgNWJkM2EyMmJhNDk2YjFjNDA5MmMyZDQyYTQwNTBkZGY0YjE0YjU0NyBwM3lrCis1MzkyOCAxYjk3MmI3ZTM1MmFkZjMxMDUyOTE1MTI3MGVkMTlhOTg5MWM5NWQ1IHAzeWsKKzUzOTI5IDQwYjE3YWZjNGFhN2JmNzFiNTA0Yzk0ODc2NmZmZTQwYjgyODk3NjggcDN5aworNTM5MzAgMGQyZGMzNjExZTNiMzgyNmZmZDkzMTU2NTQwOWUxYzE4YmRlYjAwYiBwM3lrCis1MzkzMSA2MTBjN2FjYzk5ODI4ZTYyZTFmZDM3ZmIwZjY3Yjg2ZTQ1MTJhOTNmIHAzeWsKKzUzOTMyIGJlNDFkYTY2Y2UzN2Y2NDFmNWI2NTZkZmE5ZTlmNTJiNjliNWY1YzEgcDN5aworNTM5MzMgMjVhODQ5MDBlMjA1NWMxNGM3NjYwZTRjZTYzNWI1NjQ4NzQ1ZmYxMSBwM3lrCis1MzkzNCAwMzg4M2FjYjY1MGI4MDhjNjlkZjQ2MTkyN2ZkYWNkMzUwZDE3ZGNlIHAzeWsKKzUzOTM1IDYyMTQ0M2ZjMDFiYmExNTU5ZDA4YmNiYmI0ZmM1NjJjMjYzYmI3NTkgbGVnYWN5LXRydW5rCis1MzkzNiA5ZDFiMGMyOTVlYmJjMGZjMTc4YzYyYzQxZTlmNjFiMTMwZDM1YzQ4IHJlbGVhc2UyNS1tYWludAorNTM5MzcgOTNmNTgyODAzNzMzMDRkZTIxOWM4YTA1YzY2ZmUzOTEwYjRiOTg4NiBwM3lrCis1MzkzOCA3YmM3Zjc0MGY2OWZkYzlmOTJmZDU0ODgyMDdhMGYzYjMwM2ZhMTQ5IHAzeWsKKzUzOTM5IGMzNDUxYTc3YmZkMTY0ZGY1ZGZjZDgzNzBkNTA5ODdkODk5M2ZkMDIgcDN5aworNTM5NDIgOTBjODA3ZWU4NzY3YjFiYjY1MDgxYjZiYWNiYmQyNjQ5MTdkNTZhYiBwM3lrCis1Mzk0MyBlY2U4YTM5ZmEyODJlZGM2MmUxNGZiNzY5Y2IxMzgzYjZmZDc0OGZkIGxlZ2FjeS10cnVuaworNTM5NDUgNTVkN2U4ZmE1ZWE4ZDRmYThlNzE3MDczMGRmNTU2YWJkN2QxZDdhMiBwM3lrCis1Mzk0NiBhMjYyOWJlMWIxZDAxNTk5MjcxOTJhM2NhZGU1MTVkZGU1MjE4NjlhIHAzeWsKKzUzOTQ3IDg5YmE5M2M3MDFjODg0NzM5NmQ4MmY5NjVjNjc1Y2FkNWFiNWVkOTkgbGVnYWN5LXRydW5rCis1Mzk0OSA0NWFmZmFlNDY1ZTQxMTkyOTE4MTQyZmVmZjc0NmYyMDRmNTFmZmUzIGxlZ2FjeS10cnVuaworNTM5NTEgMDM3NmYxM2ExYWY5MTMwNzA0MmRjNGE1YjJmNTg3YTNlZDliYjJkMyBsZWdhY3ktdHJ1bmsKKzUzOTUyIDZhYTFiZTVkZDAwOThiMzU3MWYzNWJhNzIzOTk3MjgyNGUyN2QxZGYgcDN5aworNTM5NTMgMmMwM2Q3MDY4MzVlNDYwYmJkYzg4ODExYzU0MGY5MTA3ODM0YjAwMiB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTU0IDA0N2VlMjNjMGY4NzhlOTMzZWMyODQ4MjFhYmZmZDk3M2E0ZDk0MTMgbGVnYWN5LXRydW5rCis1Mzk1NSBjOGMwNjczMDI2NTk5YmNkNjQwZWZhYTk1MzZkNGQyOTM2ZDY5OWUwIGxlZ2FjeS10cnVuaworNTM5NTYgMTg1M2NmMDZlMzZiYTMxMmFiZDEyM2U4YzJkMTY5ODk4YjQ3N2QyOCBwM3lrCis1Mzk1NyAyY2ExNGQ2YTM2OWI3MjViMTNkNDliMGFlMzc3YjMzYjI1MzQyNmRiIHAzeWsKKzUzOTU4IDg2NDcxOTBkYjk2Y2QxYWE4YjQzYjI2NGYzMWI1OGJkOGJjMDQyZTMgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk1OSBmYzIzZmM4NjM5YmFmMDBkZTUxYjQ0NjUxN2ZlZTk2YTI0MWQ3MTAyIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NjAgNGI5ZDBkYWM3OWNjYzA5YmMxZjdiNDYyMTJjNzAyZjE0MDA0MzVjMyBwM3lrCis1Mzk2MSBjNzllNjIzNGZiMTllZjZhMzRjZWE1YTI1OWNkMGRkNmJmNmIzNGEwIHAzeWsKKzUzOTYyIGJiNzNkM2EwNDU3ZTk3N2Q4NDg5NjBiZGVlYzJlNzk1OGNlZTY2MjcgcDN5aworNTM5NjMgN2Y3MDc0ZDRmODJjZjcwY2ExZDcwOThkM2NkMjM4Njc5NGY5NmY1NCBwM3lrCis1Mzk2NCBkOTc2YzlhNjMxMTE0YThmYWIxYjBmNTExMzNiYjRjYTEyMDgyZDQ5IHAzeWsKKzUzOTY1IGIwODI2ZThlNDVjNzhlZjU0ODhiZjhhNDhiOWNlYzg3NzM2MTliZTggcDN5aworNTM5NjYgMzA5M2VhOWI0MDI0OTcyODE5ZGMwNzc0MmVjMDAzZGJjMDY4YWJlNSBwM3lrCis1Mzk2NyBlNzU5ZmQ4ZDk1YWU3YmNjYzQ2MjU5ZTFlMDRkMWE1YWZkODQzNjRiIHAzeWsKKzUzOTY4IDFlNGUyOTI0ODZiNjg4ODk4NjJhODA0N2M4MDEwOTY0MDEwYmRiMzggdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk2OSBmM2YwYzY5N2FhNWIxNjMyZWQyZTBjNGFmM2RkOTBkZTIzZTMzOGM5IGxlZ2FjeS10cnVuaworNTM5NzAgZWUzNjAyYzdhZTA0MTQ3NGE4Yzc1ZGFkMDRkY2JkM2RmZGEwNTA5ZSBsZWdhY3ktdHJ1bmsKKzUzOTcxIDQzMDgxMWJkYmZlZjY2YmM5YTg1ZWM5NGNjYjdhYjY5OTg5YWFjZGUgcmVsZWFzZTI1LW1haW50Cis1Mzk3MiA5NGM0ZTM2YzMxMjQyYjg5ZTAyNjAxNTBiMTJhZWIyYzFmZDEyMTI1IHAzeWsKKzUzOTczIGRhNzNiNWEwZmQ5MGFiYTMyYzRjYjFkMDkzNGRkMDRhM2Q3MjhkODkgcDN5aworNTM5NzQgMmNlMjI5YTdiYTNmNjllYzU0N2U3OWRjNDBhNWIyZDU3ZjU4ZjQwNiByZWxlYXNlMjUtbWFpbnQKKzUzOTc1IGM4M2FjZmIxYTYzMmY3OTQ2ZjM0NmU3MjJmNzBkZTc5MWYzYzIzNDYgbGVnYWN5LXRydW5rCis1Mzk3NiBmZWRiMDNlYWM2YWQ2ZDExMDQ1MDQ4ZDI4OTZiMWU3ZWIwYWY3NDJlIGxlZ2FjeS10cnVuaworNTM5NzcgYWExOTVhMWFhOTU1MjhiODg1MzIyZGZmYWJiNGJlMzA0MThhMzcxMSB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTc4IGU1ZTk4MzdkYTcwYjc4NjAwYTgwYTUyZTc3MjZmYzIzOTI0ZTcxZmYgcDN5aworNTM5NzkgMGVhNTI1NThiZGZlYzI5YWY5Y2Q5Yzk4ZTBjMDVkYjJiZDI1YTAyMiBwM3lrCis1Mzk4MSA1NDFhOGIxYjVkYTc1ZDlhZjU0OTQzNDcwNGIxYWI1NjNiNzIwNzcyIGxlZ2FjeS10cnVuaworNTM5ODIgZTY2ZGRiNmUzNGU4NDQ2Nzc2NWE3NmRlN2NjZTNjZWIzMzQ5ZDY0YyBwM3lrCis1Mzk4MyA0MTYyOTJjODI0OWNlOGM5MDgwYzU0MTExZmE3ODg0NzA1ZmFlYzg1IHAzeWsKKzUzOTg0IGMyNGU5NWQxMTc1MjAxYjU3NDcwNDE1YWJjM2IwZTJhMGNiNDdhYWQgcDN5aworNTM5ODUgZDU1NDZmMDlmMjBlNzYzOGI3NTgyNDhlNWQ1NGYxYjg3NmUyYWFkMiBwM3lrCis1Mzk4NiAzMGU1Y2IzYTU1YWMzMTQ3ZDllOTJlYTM4OGY0Zjc5NDU2MTZlNzY3IHAzeWsKKzUzOTg3IDE0MGYzNTI0MDI3ZjBlMGI1YTcwY2UyZmYxNTk0ZjMxYmEyNDZjOGQgcDN5aworNTM5ODkgYTllNmM3M2UwZmE1YjIxMzJjMTUzMWMzMWFhZWY0Y2ZmZTRkNTI2YiBwM3lrCis1Mzk5MCAyZDlkMTA3MDJlYzQ0ZTJmZTRjZjgxNDljNmM2ZjI1YTQzNGVkYzIyIHAzeWsKKzUzOTkxIDZjMGQwYmU4MmI0N2JhZjI5YTU4MTE4NDFjNThjODgyNzI5YWJkZWYgcDN5aworNTM5OTIgMTE3NzdjODg3ZjdjZTAwZTRiZDdjZWFlYzYxMzY5ZmY4Yjk3ZTQ1NSBwM3lrCis1Mzk5MyBhMmM5ZWI5YWI2MDk2NzRiNDUyZjNkYmI0OTk5MWIyNjc1YzM2MTZkIGxlZ2FjeS10cnVuaworNTM5OTQgMGI0NzQ0NmNjNDA4NGEwMzgwZGI5Njc3MThlNDdmNzFkZTQzNThlMyBsZWdhY3ktdHJ1bmsKKzUzOTk1IDQ2Zjc3MWUyNjdiYzgxNTgyOGI2ZWQwNmUwMjNjZDVjM2Q0ZGNhYTIgcDN5aworNTM5OTYgM2NhYmJmYTQzOTg0MDkzYjEzZDdjYzRiM2RmOTQ4OThjNTExZTc1YSBsZWdhY3ktdHJ1bmsKKzUzOTk3IGQ2MjgwNWE5OTNjNTA4ODE5ODJmZjUxZWQwMTZlNDFiNjlhYzU2ZGMgbGVnYWN5LXRydW5rCis1Mzk5OCA1ZWFkMzIxMzBmNjQ2ZThiMmU2YWZjZTBkOTdiMzIzNWQ3NjEwMWFlIGxlZ2FjeS10cnVuaworNTM5OTkgNGE0ZjZmMDI2ZjFjNThmNDk5YWFjYTgyNjZlY2YxMTcyYjJjZTE3NSBwM3lrCis1NDAwMCA2MWZlZTE4NTNjYTg4ZjM4MjBiZjdhM2M2M2ZiZjQ1YTcyNTYxZDJiIHAzeWsKKzU0MDAxIDgwZTg2MWU3ZmFiZTg4ODU4NmVjZGEyN2Y2OGM0OTljYzRmNmNlMzggcDN5aworNTQwMDIgYzNiMjhiYTkxOGY4M2ViZmYyZTRjZTgxMTY1NGRhN2Q0YjNmMjMxNyBwM3lrCis1NDAwMyAxZjc5MGRhNzk4NDA5ZDkxY2U4OWNiZDBiMGQ3ZWZlZjQ3NjlhOGI0IHAzeWsKKzU0MDA0IDQzMWIzMjM4NTkzZWFjYmFjNjVhNTlmMTRjY2I0ZDk5ZWI4MTU3NmYgcDN5aworNTQwMDggNzYyOTY0Zjk5ODcxMDQ3YmYwMjM5MTk0Y2E3MjU0ZDFkMzJkNDZhNSBwM3lrCis1NDAwOSBjMDM0NDcwZTNjMGFlYjkxNjQ3NDEzNzJhNTcwZDllYjE0YzA3NzQyIHAzeWsKKzU0MDEwIDhiZWI3NTQwMmU3NGJmNTU0N2Q0ZmY0OTdiN2I4ZGEwMGNmOGQ4MzkgcDN5aworNTQwMTEgOTMwMzFlNzE2NWFiMDEyOWZiYmQ4YTEwOWY2YmVhYjAzNGU4ZjRkNSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxMiBiYTkyZTlhZGUzNmYxMTc4YWQ0NTY0NzU2ODMzODc1NWI2YjMxM2MzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDEzIDZkOTFlNzRmY2Y1NWU1MjA4NmQ4YWUzZmY0YjJjMTgyNTEwOTJiYjEgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTUgMzRhN2MyOWU2NWQxNjJhZjFhNzA4NTAxMDhlYjc0Y2MwNjVkYjk5OCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxNiBlMTAzYjkzN2Q3NDc1MTBlNGVlMzEyMGVhZmEzY2Q0ZGU4OTYyMzEzIGxlZ2FjeS10cnVuaworNTQwMTcgYTFhZWU4MTBiNzM5Njg2MDYwZGZmMGRlZTI3MWIyZjkzNGEwYzRmMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxOCA5NTMzZWIwZTg3Y2ZmY2JmNTJmMmNjNmYxMGMyYmZlYmQzNGE4NzRkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE5IGYyNTI0NjgwNTg1MDdlYzdkOTQ0ZDk4NDM2ODE4MzA1YmJlZDA4OTYgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjAgYmQzNTkwYjhjNzhlZTU5MWUwNDFlYzVlYjM2M2NkY2UyNzIzMDk3MCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyMiA5ZGQ4NmVhZDUxYzM3NzZjZDZhNGFhMWJjNjRiMTdiYWYwMWJkNjc5IGxlZ2FjeS10cnVuaworNTQwMjMgMTY1NDYxYWQzOGRiOGUwNWUxODE1MmJhZmI5MDVlOTBlMDdjMTViMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyNCA4M2I4YzcwZWZkMWU1ZjFiZWE1ODM0MjcyNmFjNWM4ZGI3MjRmNGJkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI1IDllYjYwYTA3Mjg1YTQ3ZWQzNDcyNmI4N2EzYmI2ZTFlN2YzNzQxMDIgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjYgYThjNzliMWU2OTZhZTdlZDMyYjE4NTQ1YjNlMzI1MDA3YjFiZTM0ZiBsZWdhY3ktdHJ1bmsKKzU0MDI3IDE2NWJiZWQzMzc5ZDZkM2Y0NWJlMWVkZjJhZTEyZjU4NDcyODYxMGYgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjggMmM2Y2Q5OGRiMGI4ZjNlM2U3N2MzNmMwOWQ3ZjIyNjliNjM3ZDc4YSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyOSBiMzVjZmQ4YjQ5MTA2MTRkMmJkZDcwMDEzZWUwODJiYzllNTE1MmZiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDMwIGFjMGViYWU0NTg3MjIyZGNhMjFkZDE0NzdlYWY0Yzk0NmE2NTc5M2IgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzEgNGM1NmZjZWZiMjgzYjdmNmJhNDViNGU1YWZlMzkzY2IzYjAzOWFiYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzMyA0MDg3YzBlYzczM2JiYTU0ZTgwMTM3MjdlZDY0ZjE3M2I5YTYxNzVmIGxlZ2FjeS10cnVuaworNTQwMzQgMDFkZGVjYjc3ODE1NDI2MzgzNGU5YjAwYjFjZGEyYWQ2NDA5MGU1ZSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzNSBlNDc2YTVhNzhiMjkzN2U3NjcyMTIyZjAxYWI2NjQ1NWRiMGE5M2NmIHAzeWsKKzU0MDM2IDU2ZDUxZjU5NDg2NTNkYTJhMWU5OTc5ZWZjNGIxMWUyZjZkYWQxZjggcDN5a19ub19hcmdzX29uX2V4YworNTQwMzcgN2Q3ZjMyMmYyY2I2Nzg3MjkwYmY2NzM1ODNmNzg5MzE1YzcyZjQ1OSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzOCBlMjIwOGQ0ZjVhN2ZjOWI4NmIzNTU2ZDUzYmNjODcwMjI2OTRmMWIwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM5IDc0NzJmN2I3ZDkwMzQ0NjE2MmIxYTZiMWVkM2QyMTE2ZWM4NDVmY2UgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDAgMWRjZTI1MDI1Njc5MjFiMjUyYzkzMDA0ZjNjZDI4NWVlNWNlMWU4YiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MSBiZGI1MjcyOGIwMmVmNGFiNzJkODk3MGY0ODM0NWM1ZmM3M2I5ZGZjIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQyIDQ1NTU5NjFjNWEyZjk2YWE5M2U4MmI5N2E0NDliMzYyZGNmNTk0OGQgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDMgZTE2MjY4YzI3M2JiMjY2NGM2MDk5ZWVjNTAyYmZiNWE0YTU2MDllYiBwM3lrCis1NDA0NCA0YWUwNDkwZTFhMGMwZjM0OWY2NzgxYzA2NDVlMjI5ZDQ2YjExYzc1IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ1IGRlMmM5ZjlhZWExZWU3NmQ1OWQzZTBlNTJiN2VmM2JjZjNhYWE3OTEgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDYgNjljYTY1N2E2NGU3ZWRiZjA1ZWIyYzM0OTBjZGZhNTVkMjRhMTg3NyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0NyA0YzFlMmMzM2ZhY2QwOGNlZWI2NzBlYzhjNDM1Yzc4Yjc3N2NkMWUzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ4IDBjMTRiNjZhY2E3MDJiNGQxZjlmZWFkZmMzYTYyMjY3MDVjYjY0ZjUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDkgZWU0NjIxN2M4N2FmN2E4NzM4MTlhYTNkY2M3MzMxMjRmOTY1OTg1MyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MCAyN2EyMTg2ZjQ1Y2I0YjIzNzE2M2U2ZTc1YjI4ZDk0YWU2MDFkMzFlIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUxIDkxODVjNzBhMTU4NWU5YTZmYzBjMmRmZGVmNzY1ODE5NjZlYWQ5MDMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNTIgZDliMTUzNGVjNzlmZTc1MDQzYzAwODE5NjUxYTQ5NTI3MTkyYzhjOCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MyBiNDZjNmQyNzYyNWUzZTZjMDM5NjljMzZiNjQ5MjU1ZDAyNDdmMjg2IGxlZ2FjeS10cnVuaworNTQwNTQgNTJlNDUzMDc3M2M5NzAxYTA2YzExZTExNTc3ZWRlOWJiMWRmMjYwZCBsZWdhY3ktdHJ1bmsKKzU0MDYwIGJlNDRiZjJkYjM1MGU0YWEyYzQyNTY5MTFmMzAyMTYzNTVlZWUxMGUgcmVsZWFzZTI1LW1haW50Cis1NDA2MSA4ODg4NGU3YmFjNmRjMmEyOGZhODhiMDg2MTRhYzdlNjA2MjMyNDIzIGxlZ2FjeS10cnVuaworNTQwNjIgNTJlOTVmYjA4OTAxN2RhYjg5Zjc2MGM1YzUxYTFhZGM5Y2U1NDU4NiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA2NSAzMmE0ZTVlZTJkOThjMTQ1NzliZDUxZjUyZTg2YWFhMDM1Yzk4MjM2IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDgwIDFjNTg2MTFjNTFkMGNhNmZhNTk4MmI1YTEyODhjYWNmYWQwNzMwNjcgbGVnYWN5LXRydW5rCis1NDA4NSBiZTY4ZGE1NjFkY2Q2Nzg3MGY5NjViMTY0YzliMjdiNjdjMjVmZTFhIHJlbGVhc2UyNS1tYWludAorNTQwODYgNGUzNDgxOTYxZmJiYzJlY2UxNjUwMjVjYmNjMDg5YjIxNjExMGVkYyBsZWdhY3ktdHJ1bmsKKzU0MDg4IDY4YTQ4N2QyMWMwNjlhNzVjMzNlYzg2YzVmYzZmMzkwMmQ1Nzc3YWIgbGVnYWN5LXRydW5rCis1NDA4OSAzMjRhNzFhMTAzZWMyZGZlY2NkM2E1MDk5ZTgwOWVjMjJkZGU2ZDk0IHJlbGVhc2UyNS1tYWludAorNTQxMTQgMmYyYjg5MzVhODFlMjYyMDI2YmExZjUyYmYxZGU4NGQ4ZWE2MDZkZCBsZWdhY3ktdHJ1bmsKKzU0MTE1IDZkZWY4MmI4Y2YyMGFhMjIzYmE3YTVlYWE5OWM0Yzg5OWQ0ZWMxZDMgcmVsZWFzZTI1LW1haW50Cis1NDEyNCBmZTlhOWQzOWEzNTE3ZmVmNTg5MjQzZTc5ZmFlNTdlOTcwMTY4MjU0IGxlZ2FjeS10cnVuaworNTQxMjUgM2IxZWZjZTM1OGEzNjAxMjczMGVkYzE2YjhkZmJmZDQ4NzAxZDEwZCBsZWdhY3ktdHJ1bmsKKzU0MTM2IDM3MjA3MGJhNmZkMzFmNGUzODlhOTBjY2IzY2IwNjJmZDgxN2M3ZjggbGVnYWN5LXRydW5rCis1NDEzOCBlMWIwMDBiZWQ0NjJmMzhiZGQwZjA3Y2VhMTc1ZjUzNzI2Y2RkYWQxIGxlZ2FjeS10cnVuaworNTQxMzkgNmQzNDU0YzM3MWRkNDNhYzlmMzFiNGEzMzZmMTQ0MmQ0NmRiZjk0OCBsZWdhY3ktdHJ1bmsKKzU0MTQwIDg5MWMyOGQ1MzU2OTY5YjA0OTI1YWFhNmY0NWJlNjFhODU2MmVjNmIgcmVsZWFzZTI1LW1haW50Cis1NDE0OSAwODFiNGU4YjZmNWI4MjE2NWMzMDVlMjdkN2RiMjM4Y2MxNjgxYzI4IGxlZ2FjeS10cnVuaworNTQxNTAgNjA1ODU1MzBmMzBiOGJjZGEwNTVhNzBhMTZlMDNkNjAxYzY1MTY3ZiBsZWdhY3ktdHJ1bmsKKzU0MTUxIGU0MjI4MDIyMDJiZTBhMjA1ZTA1MGIzNDI5ODQxMDkzMmJiMzAyZWMgcmVsZWFzZTI1LW1haW50Cis1NDE1MiBmMWU4OGMzNTAyZDlmMWFhZjgwYzQ1Y2ZlOTY4OGZhNmI4YWJhNjdhIGxlZ2FjeS10cnVuaworNTQxNTQgNDgyNTQ3MzkxNTlmZmFlYmI2ODJkZmJjYWIxOGQzMDRjMTVlZTE3ZCBsZWdhY3ktdHJ1bmsKKzU0MTU1IDMzYjQzZGViYjk3ZWU3Njc3YjY2MzZlZDVmMTBkNmFkMDRlNzUwNTYgcmVsZWFzZTI1LW1haW50Cis1NDE1NiA1YzE5NmFhNmVjZjQ4ZGI5Y2Q5ZTM1ZGM4ZmVmMmIwMzhiNGU4MTM0IGxlZ2FjeS10cnVuaworNTQxNTcgYjZkY2I3NzgzMzg1N2Q5OWE5NDZmNWNjM2ZkNzY1MGRkNDM2OTcxOSByZWxlYXNlMjUtbWFpbnQKKzU0MTU4IDEwODBkZTQ5YzgxZThkZjU2NGM4YTA0NzhiZjYwNDkxZDc1NDEyMzAgcmVsZWFzZTI1LW1haW50Cis1NDE1OSA1YzA4ZTY0NjBkYzU1NGY4ODIxOWViMTRkNWNjNThkOWRhMjliMjNmIGxlZ2FjeS10cnVuaworNTQxNjAgYjBmMjZhNzgxM2M5MDk2ZjQ5ZDY0ZGViNTMzZDJkODlkMzc1OTYxZiBsZWdhY3ktdHJ1bmsKKzU0MTYxIGY4M2U1ODIyZTY3MjZiZTk4OTA2Nzk0MWUwN2I4MGY5ZDdiMmQzOGQgcmVsZWFzZTI1LW1haW50Cis1NDE2MiAwOWQwOGZjYjhmN2I5ZDIyMjg0OWZjNzcwYzllZDc2NjZkNGY2MjJmIGxlZ2FjeS10cnVuaworNTQxNjMgMmVlMzY2YTJkMmI4OTFmN2JmYjc5ZjZmMzY3M2NhMGFhYjZjZTVhOSByZWxlYXNlMjUtbWFpbnQKKzU0MTY0IDRlODM1ZGYyYjRiYTg4Y2I5YWQxODVjODljNWFmOWE5NWI0NTExOWMgbGVnYWN5LXRydW5rCis1NDE2NSA5NjNjMGU0NDI4MzIxMTRiYWZlYjdiMjFiNjIyMjAyNjRkNjJlMDJjIGxlZ2FjeS10cnVuaworNTQxNjYgMDY5OTJlNmIyMDVhNDQ5NjE0ZTZkOGY0YjI1Y2U4MzRhODQwNGNjMCBsZWdhY3ktdHJ1bmsKKzU0MTY3IDNjZmRiODBiYzY4ZTg3NGNlNmFjMzgyYTQ1OGE2YmI1NzRlMjEyYjEgbGVnYWN5LXRydW5rCis1NDE2OCAxZWExOWY3NDUwNGNiYzYwYTEyNDllZWM0YzYzNjM2MjZkY2QzNGM4IHJlbGVhc2UyNS1tYWludAorNTQxNjkgZDQ1NzcyMTU1MzlkZGQzNzQxOTBlOWI1NjExNTBmYTc1NDY2MTAwMyBsZWdhY3ktdHJ1bmsKKzU0MTcwIGE2YTA5NWJmNjQ1ODVkMDE0MmY0ODUyNjJiNzM2M2EzMDcxNjdmNTQgbGVnYWN5LXRydW5rCis1NDE3MSA2N2NjMGU5NWU4YTU3OGZiMGE0NmVjMmI2M2E2NWZmOTVjOWZhZjU5IGxlZ2FjeS10cnVuaworNTQxNzIgNDFlZDk0YmU2ZDVjYWEwZmIxOWI0ZmNiZTVlMGMyZDUzMWExNDhkMSByZWxlYXNlMjUtbWFpbnQKKzU0MTczIDZhNTk5YWVlN2NhNDBhMTI2MTAyODBjMmViMjUzZjA0M2QxMWEzMmQgbGVnYWN5LXRydW5rCis1NDE3NCA2MTRiY2QzN2M2ZjNhNGVmZDJlNTQ1MTQ0OTBiMzhjMWVmMDkyNGMyIHJlbGVhc2UyNS1tYWludAorNTQxNzUgNmNkMzY2ZTZiZWVjYzU4ZmJlMzgyZmQzODE3MjljNDM2N2Y2N2Y1NCBsZWdhY3ktdHJ1bmsKKzU0MTc2IGU2NmNmYzcyNWU4ZGIwZTEwZTFiOTJkMTY5ZWYyYWZiMDI0NDE4YjMgcmVsZWFzZTI1LW1haW50Cis1NDE3NyA2ZDhkY2FkMTJmZDliZmI4NGMwZTJlNWVkOTU2ZmJlYTIzNTQ0YzNjIGxlZ2FjeS10cnVuaworNTQxNzggODI4MGI3YzQwNTU3NjAyMjhkOTNiMjcyYTI3Nzg3Y2RiMDBhOTM4ZSByZWxlYXNlMjUtbWFpbnQKKzU0MTc5IGVmYTBhNzYxOTE4YzI4YzcyZjU2MDIwN2E4YTlhMmY2NjMyZGM3Y2EgcDN5aworNTQxODAgM2FjMjRjMDExMGU5NmY4YTUxZDI0MjUyMTI3YmUyOWNhNTA0ZDU1NCBsZWdhY3ktdHJ1bmsKKzU0MTgxIDFjMTRiMjNiOWMxYmNmNjk3MWViZDA0YThhNzBlODZlZTBiY2FkZDEgcmVsZWFzZTI1LW1haW50Cis1NDE4MiA3NTdlOTNhNDA5NmM1MjRiYTllMzg4ODUxYjVlNmUwMWE5ZmUwNjk3IGxlZ2FjeS10cnVuaworNTQxODMgMTZjMjE1ZTQzYmFkMGEzZjQxZTJkYTAxNjliNmQ3YmYyN2RiM2JhNCByZWxlYXNlMjUtbWFpbnQKKzU0MTg4IDcyOGM2MGU4NWVmYTU5NGZjZDNiMDE1NDRhMTkyNGJkNjg0NzI3MmQgbGVnYWN5LXRydW5rCis1NDE4OSBjOGVkNGFlYTZjNTgzMzBkOTZhNzY0OTVhMGVlNDBhZTBhNzIxODAwIGxlZ2FjeS10cnVuaworNTQxOTAgMjEyMzNjMmU1ZDA5Mzk5NDA3NGRjOGFiNzhmZjc0YTJmZTM1MjgwZiBwM3lrCis1NDE5MiBmNDc5YjljNzRiNzgxOTk3OTFkNjU3NzA2NTc2NTBiNTM3MzcwMjRhIGxlZ2FjeS10cnVuaworNTQxOTQgMTI5ZmZmZjJjZTZkYzQ1ZjM1MjA2ZWYxM2ZlNWEyZTRkNDBmMGRkMCBwM3lrCis1NDE5NSAyNDJkZTE2YTZkNDQyYzBkNTY3NTkwMjVmNmMzNzA2MTI1ODhkYWVlIGxlZ2FjeS10cnVuaworNTQxOTYgMWEwYzkwNzkyOGI0MDEzNDNiNjcxNjU2MmFmYzQzZjc3YzYyYWMyOCByZWxlYXNlMjUtbWFpbnQKKzU0MTk3IDg1MGMzMmRiMjdlNjQ0MDY1NmYyOGZhMjM0MWRjOWUwZDA3Y2YzMzAgbGVnYWN5LXRydW5rCis1NDE5OCBlMTk2MmFiMTJmY2U5YWJhODk0NWZhNzNlNmY5NzNhYzRjM2Q5ZDlkIHJlbGVhc2UyNS1tYWludAorNTQxOTkgN2RhMjNiZjg5NDlmYzRhOGViODg5MTViZmJlMmExMGQ2NjRkYzBjMiBsZWdhY3ktdHJ1bmsKKzU0MjAwIDgxZTQ4NmIzMDA3ODg1YzA1NzE5NDUxZTMyNmFhMWRlMTNmZWQwYzkgcmVsZWFzZTI1LW1haW50Cis1NDIwMSBiMDkyYjJjODNhYjdlODU5NjdiMzNmNzZhMzVmNTA0MTM0NWRkYzU0IGxlZ2FjeS10cnVuaworNTQyMDIgNTEwMjMzNmNhMzQzNTQ0Y2Q2NWNmMjVlMzU3OTdmNGZkYWEyYzA1YyBsZWdhY3ktdHJ1bmsKKzU0MjAzIDQyM2IzNjQ4NDNjZGMxY2FlMDAyNWNmODg5ZjBjODI5MTRhYWU5YTcgcmVsZWFzZTI1LW1haW50Cis1NDIwNCA5OGJiYzkzYmQ1NWJhMGE2NDlmNGI3YzA2YjgxYTc3NzhiZDMxOTY1IGxlZ2FjeS10cnVuaworNTQyMDYgM2I1MzhhY2Y3Njk0ZTEzMThiY2FmNjQxOWFmNGExMTAyYzYxMzliYyBsZWdhY3ktdHJ1bmsKKzU0MjA3IDQ2Y2ZhYmI3ZDU0NDYzZTY5ZTJkYTNmYWI2Yzc1NTVhYjExODUxYzUgbGVnYWN5LXRydW5rCis1NDIwOCBlNDJjNjNkN2MyMzBhODgwZDdhNjc5MjdkY2Q0ODlmMzU0MTc0NTlhIHJlbGVhc2UyNS1tYWludAorNTQyMDkgYmFhYmVmNmMwMGQ2OGUyNzY3NTZhZDhjMjhkNTA0ZDZkZTRkOTc2MiBsZWdhY3ktdHJ1bmsKKzU0MjExIGJmZGJkM2VjMjdkODVhNWVmNDM0YjQ0NjZmZTRhZDEzODU0MDZhYzMgcmVsZWFzZTI1LW1haW50Cis1NDIxMyA0YTBlMjI4YzM2ZTU3ZjcyMjEzNDdlYmUzMzQ1Y2E0MzI1YzA2NzVlIHAzeWsKKzU0MjE0IDZlMWNmNGQyOGFmMzRlYjUyZDVjOGI0YjRjMDc1YzkwZGQ3OGE4ZTAgcDN5aworNTQyMTUgMTU3MjYwZWY2NzdjYWQ0Y2Q0ZWU2MTBjOTQ2NzhlYmI4ZmE0YTFmNiBwM3lrCis1NDIxNiA2M2FmMzdjMmQwYzBlZDI4OWJhODVlYmYyMGViNjhmZTNiOTAwYTA2IHAzeWsKKzU0MjE5IDkxOGVkYWJhYWE4NGU2MjViODM5OTA1ODYzOWUwY2RkNTk0MDFkNWIgbGVnYWN5LXRydW5rCis1NDIyMCBjMWE5N2IwODIxM2E5ZGI1MzRjZjQ5MTJlYjAyYjhkMzZmOGRkYzU1IGxlZ2FjeS10cnVuaworNTQyMjEgMzJhZjk1ODhhMTgyZWY0NDhjMDk4OTU0OGRmNzE1MmE2NTkzMGU0OCByZWxlYXNlMjUtbWFpbnQKKzU0MjIyIDhhYTdjYjUxZDM1ODRmOGY5M2IyZjljYjE0OGIzNmFkYWE1YjlkNWEgbGVnYWN5LXRydW5rCis1NDIyMyAyZjVkODRkY2I2NTU3ZGFkMzVmZDdhOWEyOWQ1MDdjZDEzN2Y4MWVjIHJlbGVhc2UyNS1tYWludAorNTQyMjQgZDk0OGEyYzBmY2ZkZGQ5NTEyMDhmMGMwNTY0MzgxMDk0YWNiOGM2NiByZWxlYXNlMjUtbWFpbnQKKzU0MjI1IDU1NjU5ZTY0Mjc3YmU2Y2Q0MDY0NDkwNmQwYThhZTRhYTkwMmQ5YmQgbGVnYWN5LXRydW5rCis1NDIyNiA5YjU2ZWFkMzUzMmNkNzhlOWM2NjJlMTlhZTE0OTc4ZTBkZWE0MDU4IHAzeWsKKzU0MjI3IDBiYjk2OWYxNTExOGEzODgwZWMxYmU3OWJjMzI4MGIwMDc0NjYwZGEgbGVnYWN5LXRydW5rCis1NDIyOCA4MzQwMGRmOTczNzlhZTJmNTU1NzM4ZWNlMGI5ZWM0MTc2NjNmZjFmIHJlbGVhc2UyNS1tYWludAorNTQyMjkgYTdjOGE0ZDFiOTQwN2QyOWIwNTgwYzg0OTAwNjg1NDVlZmQ5ZDIzYyByZWxlYXNlMjUtbWFpbnQKKzU0MjMwIGYyYmE4MTJmNzIwMDc2MGI2NWJmZjc1YjMxZGIwMDNkNzRiNWM4ZDEgbGVnYWN5LXRydW5rCis1NDIzMSAzYmUyMTc1YmJiMDAwNzRkMjQzYzg0YmY5YzlkY2Y1NmY2OWE5YjE3IHAzeWsKKzU0MjMyIGZmMGM0NmZiMTk1YTM1NmE5MmYyZDJkYzY0NDljMzIxZWI3MGUwYzggbGVnYWN5LXRydW5rCis1NDIzMyBiZTFlMmY3NDU2NjlkYzA5NWM3NTU0YzUzNmViYjdmYzExNGUzYTQ2IGxlZ2FjeS10cnVuaworNTQyMzQgOWNmYzljYmE2NzY4YjE2ZmQ2ZDUyZjkzOWE5MzA0NDRjMjM1ZGM3MyBsZWdhY3ktdHJ1bmsKKzU0MjM1IDFhMGY2YTEyODc0YzJhYWMzM2Y3MDY0NWMzZDkwNmZkYzIzYmQ5OTUgbGVnYWN5LXRydW5rCis1NDIzNiBlODMxMDg1NWZjYzdhNjc0NGQ4MTUwMDA1N2M5NzI1ZGI3ZmJkMTYxIHJlbGVhc2UyNS1tYWludAorNTQyMzcgZjc1NDU3ZDc1MzJjZTBjZTdiN2Q1N2Q0NzAzZDlhYzM0NTcxZjk3YyBsZWdhY3ktdHJ1bmsKKzU0MjM4IDdmNmQ1MzkwYTExYWIyZGQ3NWEyZjgzNmI3YWQ1NjlhM2NhNWYwYWIgcmVsZWFzZTI1LW1haW50Cis1NDIzOSA3NDQ2YWQ2Y2I1OGJkY2JmY2U4MTg5MzFkYTBiYWZjNmRjZDNiNTViIGxlZ2FjeS10cnVuaworNTQyNDAgMDliZmMwY2RmZjlmZWUzYmU0ODhkYmUxYjIwNGM5MGRiNDc3YzFkZCBsZWdhY3ktdHJ1bmsKKzU0MjQzIDI4Nzc3OTg0M2M1ZDM5OTRhMjFlNWQzMmIwZTNmOGZhZGE1ZTY2NTggbGVnYWN5LXRydW5rCis1NDI0NCAzNzE3YjE0ODFkMWI5NTczNzlhYjIxYjBmZmJkNjkyMDljOTYxNTQxIGxlZ2FjeS10cnVuaworNTQyNDUgMWZlZTlmNDJiMWZhZGQ5NzUxNGE3NTkxNGQ0MWEwMjRlMjc2YzQyZCBsZWdhY3ktdHJ1bmsKKzU0MjQ2IGIxMzI2YWEwNGIyYzNkYTI0NTY4YTdmODZmOGE1ZGE1MjkzNmYxNDUgcmVsZWFzZTI1LW1haW50Cis1NDI0NyA0N2FjMWJmZWEzMDQ3YzZjZTgwYmYxNTc5MjQzMDRmMTVhNzBiNWY4IGxlZ2FjeS10cnVuaworNTQyNDggZmVkZDZjY2M1ZTViNGY4NjQ3Y2I4YTQyYmEwNTA1NDZiNTNlYzU4MiBsZWdhY3ktdHJ1bmsKKzU0MjQ5IDRhYTkxODdiNTE1OWNjZGUzNTg2NDEwNGU1ZjZiMzUwNmNjYjMxODUgcmVsZWFzZTI1LW1haW50Cis1NDI1MCAxYWYzOGFmMzE0ZjI3MjczZjg0OTI2NmQyMjMyMzUwOGU1M2FiMjY3IGxlZ2FjeS10cnVuaworNTQyNTIgYmUwZDQ5MTM0ZTRmYTJlODVmNmYwNmMzZmQxNTcyYzk1ZWJjMTYzOSBsZWdhY3ktdHJ1bmsKKzU0MjUzIDFiYmQ2ODhhNmRlMTZmNTdjOTlkNjQ4MzhhMmU1YTlmMzQzMjZlODIgbGVnYWN5LXRydW5rCis1NDI1NCAwMDIzN2Y1MTRmMDYyOTJhMDRiMjE3OTc3NWFiYTFlYTJkZmNmNmJkIGxlZ2FjeS10cnVuaworNTQyNTUgMDFjOGYzZTMzMzJjYWExOGI5MmY5NTBmNWI4NzVkOGZmZjUxNjA5MCByZWxlYXNlMjUtbWFpbnQKKzU0MjU2IDcxODA5YzA4OWEyNjM5NWU5ZTcwMTBkZTE3Yjc1OGNkNjczYTNiMGMgbGVnYWN5LXRydW5rCis1NDI1NyBkM2EzNWZlMTM4MzhhMjE5NjdhNzYzNTdkZmFmZTc3NzUwMjg2YzFkIGxlZ2FjeS10cnVuaworNTQyNTggNTk3OGUwNzI5MWZlNzY4MGQ1ZTAwOGViOGNhZDliZTgzM2JmM2I1ZSByZWxlYXNlMjUtbWFpbnQKKzU0MjYwIGEzZjMxMTMwNGVhNjMyZWJiMTIxOWM1NGI4ZjU2YWQ2MjgwMTRiYjAgbGVnYWN5LXRydW5rCis1NDI2MSAyYjUxYjA0YjI1NDU0Y2ExMjI4MzAyOThlMDJkMDZmMmY0ZWExOGM0IHJlbGVhc2UyNS1tYWludAorNTQyNjIgMTAxYTFhYjU3M2RiNGViMjQ3NTE1MTk3Y2NlYjE0Y2ZmYTIwZDgyMCBsZWdhY3ktdHJ1bmsKKzU0MjY1IGNmNDUyMDI3MDczZTI4Y2NlMzY1YmM2NTk2MTYyY2VkOGU3NGU4MGUgcDN5aworNTQyNjggZjExOGFhZGMxMTIwNWM3NTRjZDZhZjIyMmY5OTY5NjFiZDAxNGFkNyBsZWdhY3ktdHJ1bmsKKzU0MjY5IGM5YjQwYjBhYTMwMzIwMWQ3NWZhOGFlMDBmYTQ0OTVkZTk1YTczNDYgcmVsZWFzZTI1LW1haW50Cis1NDI3MCBhOGFlMmMyOWM2NmFlMmQ2MGRkYTYwMDAwZDc0OTU1NmY5MDA1ODBhIGxlZ2FjeS10cnVuaworNTQyNzEgNWFiN2RjOGU3MzFhOTdhYWUyODFjODQ5MWIxODEyYjVlZjFiZjdiYyBsZWdhY3ktdHJ1bmsKKzU0MjcyIGQ0ZWEwNjhjMzgyMDRkODBkMTVkMmM5YmM3MTc4OWFlZGJkN2VmY2QgcmVsZWFzZTI1LW1haW50Cis1NDI3MyBkNzA0NDQ2NWI3NDNiZjUxNWEwN2M0NmQzYzMzZTYwZTM0MTY4Mjc3IHJlbGVhc2UyNS1tYWludAorNTQyNzQgNjBhMzVjMDdkMzJkZjM0MWE0ZWI4OWY3Nzk5Mjk1ZTFmYjZhZmY1MyBsZWdhY3ktdHJ1bmsKKzU0Mjc1IDViNmUxYzAwOGNhMzIzZGM3MTQ2YWYyM2Y0NzgzZTczMzQ3MjVkNjEgcmVsZWFzZTI1LW1haW50Cis1NDI3OCA5YTBjY2RiYmM1NjhkY2U4MmIwOTM1YWUxMDZmZTBjMWM1ZTRiMmZiIGxlZ2FjeS10cnVuaworNTQyNzkgNzJjNWI1NWNhYTFkYjJlMzczZDQwNDI5YTRjOWM4NTc2ZTU1ZTJjMSByZWxlYXNlMjUtbWFpbnQKKzU0MjgwIGQ4NTBiZjU2ZmRmNmNhMmZkZDg0ZjBmMzNlZGNhYTQ0ODM4NWEzNWUgbGVnYWN5LXRydW5rCis1NDI4MSBkY2U5NDBkOWE4ZTljZGYwZDY1NThkMzM4MmRlNWU2YWM1MTZiOTIyIHJlbGVhc2UyNS1tYWludAorNTQyODIgNDdlZGU2NWUyZWZkOGZmZWIxMDk4Y2UzOGFiYWY5NGMzYmQ3MTBhYSBsZWdhY3ktdHJ1bmsKKzU0MjgzIGFkZjYxMmY3MDZlNGU5MDY0YmJkZThlMDJlYzEyYzc5MjE5MWI4MmQgbGVnYWN5LXRydW5rCis1NDI4NCBhN2RhYTAyMThjZjBjMDYzYTVlZTNkMGMwOTY3ZDUwYjA0NGVlNDViIHJlbGVhc2UyNS1tYWludAorNTQyODUgM2VlOTVmZGU3Y2ZhZTQwNDk0MjNhZDEyMzQ2YTc2ZGI4NWMxYTkyZiBsZWdhY3ktdHJ1bmsKKzU0Mjg2IDIxMTIwMWU2YjA0NWVkMmM1MTE1ZTAwMjEzNTljYmZkYzIxNThmOTAgcDN5aworNTQyODcgNzE3YmMyYTRlZWU3N2I2ZjJkZjAwZDJmZWRjOThmYmFjZDBhZTVkMiBsZWdhY3ktdHJ1bmsKKzU0Mjg4IGE4N2JjYzM3YmYwZmVhNzdhZDI5OWNhNjE3YTllNWEwYjk1NzQzYzkgbGVnYWN5LXRydW5rCis1NDI5MCA3MTAwYzU5MTgyZmYzMTZkZjg3N2E0NGJlNTFkNTYzZmVlOTRhZGU3IGxlZ2FjeS10cnVuaworNTQyOTEgNDVjZTM4OGVjNTlhNWQyM2JlMGIzOGEwMDJiNGMxMTIzMmY4MTdjYyBsZWdhY3ktdHJ1bmsKKzU0MjkyIDJjYjVmYjdjZDM1N2U0YjgxMmUyOTFjNjUyZjU3NmE3MmE0MmQwYmEgbGVnYWN5LXRydW5rCis1NDI5MyA1YmUzZDIxNzczNDA1ZGY2N2I3Yjg3MTYxMWQ2ODRkMjViYTRmNzI4IHJlbGVhc2UyNS1tYWludAorNTQyOTQgNjZmMjY1YWM0ZWM0ZjkwYjVlYjI2ODBiYjRmZmE3MDBkMzQyYjU1NCByZWxlYXNlMjUtbWFpbnQKKzU0Mjk1IDFlMTJiZWQ3YTJmZTVhNDZiMjczNmNmNTg4YzhjNzVjZThiN2E1ZDcgbGVnYWN5LXRydW5rCis1NDI5NiAwMTM1NTEyNGNlNDA1MTViYzE4MWMyZGUxM2IyYTI3YmJlYzViZDM3IGxlZ2FjeS10cnVuaworNTQyOTcgOTFhODBlNTJkODYzZWQ1YjJhY2U1MmU1NTVhNmUyN2U2ZTcwZDdjNyBsZWdhY3ktdHJ1bmsKKzU0MzE1IDkxYmQ3MzhhNDIwNjdhMTNhYzNjYTUzZTIyNzM5NmNiNTgxYjZjNjEgbGVnYWN5LXRydW5rCis1NDMxNiA4NDQ3OGRlYjRhZDk2YTlhY2RlOThlN2QwOGE1YjFkNTljZjBmMGIzIGxlZ2FjeS10cnVuaworNTQzMTggNDc5ZGNiZDc5YjU3ZjE1ZWY4YTJlNjFhNGZjZWMzYjAwMTdmNTg5YyBsZWdhY3ktdHJ1bmsKKzU0MzE5IGY5YTI2YWEzZDA5YzQ0YzI2ZDk1MmJhNzYxNDBiNmI3NmM2NzI4YmEgbGVnYWN5LXRydW5rCis1NDMyMSA5ZGIzZTMyNWRkODhkNGIxNzc0YWJmNjM0NGMzMWMzNWE2YmY3YTFkIGxlZ2FjeS10cnVuaworNTQzMjIgNzI4NmQ4MzJhZDI3MjcxNDVhZjQ0MzkwNWI5MjA0Njg3NWMwY2EyYiBsZWdhY3ktdHJ1bmsKKzU0MzIzIGUyY2VlZGUyMGQ4YzI5NDI0Yzg4NmQ2NTIwNTA2Y2Q3YjAwMWVhOTQgbGVnYWN5LXRydW5rCis1NDMyNCAxNmQ3ZGNkN2E2OWM0MmY3NWQ3ZjMxODhmNDBjN2MyNjY4MGFjOWMwIHJlbGVhc2UyNS1tYWludAorNTQzMjUgYmVkNTdkZmYzZGI4NmU2OGYwZmM5NDQ3ZTg2NDkxZWE1OTViMjExOCBsZWdhY3ktdHJ1bmsKKzU0MzI2IDdhMzMxYzdmOTQwNGZjZDAwMWFjMzgxZjY5Yjg1MjhjNTE4YjQ2ZTkgbGVnYWN5LXRydW5rCis1NDMyNyBiYmFmNmM5MzU2NjM2ZmE1MzdhZGUwNTI0ODZiNmZmYzlkZGM1YTk5IGxlZ2FjeS10cnVuaworNTQzMjggOGZhNGU5ODBiNTg5OWZiOWJkMjE1M2E4ZWZhMzM5YTUyMDE4Y2ExOSBsZWdhY3ktdHJ1bmsKKzU0MzI5IGI4OTQzN2UzYmM4ZWJkN2Q2YjdlOGEyYTM3YzVjMDJiODMzYjMxNzQgbGVnYWN5LXRydW5rCis1NDMzMCBhZGU4ZDFjODEwMDkzZTU4NDRmNjg1MjZiNTI0ODlhYWU1NTExYjE5IHJlbGVhc2UyNS1tYWludAorNTQzMzEgYjEzZTYxMjhlZmE3MmE0ZTI2NjdlMGNlMjg5N2NiYTI2YzIwOTlhYyBsZWdhY3ktdHJ1bmsKKzU0MzMyIGI2YzEwMzg0NTA1NGYxODhkMmFiNTE5MWIxZmZlOTMxYmZmOThhOGEgcmVsZWFzZTI1LW1haW50Cis1NDMzMyBjNmY0MTUyOTBmODA2Y2IwNTVmZjZhOWI2YmI1OTI4NTMzOGE1NzEyIGxlZ2FjeS10cnVuaworNTQzMzQgN2QzMGQ2MmE5MDFhYTgxZjEyNDA5Y2ZkNmNhYzk5NzNhZWJhNmRkNCByZWxlYXNlMjUtbWFpbnQKKzU0MzM1IDVhM2ExYjAyNDE4YWZkMGNiOWYzYTE0Y2M2NTMzMjllMjFmNTQyMzcgbGVnYWN5LXRydW5rCis1NDMzNiBhNGUwYzc5MDE1ZDgyZmUyOTg1YTlkZjc4MmM1YWE1OGU3ZmZiOTVjIGxlZ2FjeS10cnVuaworNTQzMzcgODFlNWM1ZDE5OTg4N2M5NWIwMjU3MGM0ZTA2NTExZjlkYzZkNmYyYyByZWxlYXNlMjUtbWFpbnQKKzU0MzM4IGEzNDE5YzZjMGNmZWRmNmFmYjE3NDg2ZGQwZDYwMzZiZDAyNGIyMzUgbGVnYWN5LXRydW5rCis1NDMzOSA1M2VlMjc5NTI4N2I0NGM2Yzk2YWRkZDk1YTUzMTkyODA4MGI5ZTg3IGxlZ2FjeS10cnVuaworNTQzNDEgMWQ4MGQ4NGM3NzkyNDk3NWJjYjM5M2VkMmRkZDBjNjNjYzgyOTUwZSBsZWdhY3ktdHJ1bmsKKzU0MzQyIGI5MGQ4YjJlNWVkMDcxNzRjNDhlZjZhYzg0YTk4YjMxN2RlZjM5YmUgcmVsZWFzZTIzLW1haW50Cis1NDM0MyAwYzEyMmZlODI3ZDc4YTQ2ZTIyMmY0NzBlYjg0YTVlZjRkZDAwZThiIGxlZ2FjeS10cnVuaworNTQzNDQgN2IzNmE2NGRjYjA4ZDAyNjYyMjI3YjIzM2Q5ZWU0N2NkNGVjODBkMCBsZWdhY3ktdHJ1bmsKKzU0MzQ1IGFjNzFkYjlmYWRjODZiOWFlMTY5ZmU2OWQyMGEwNTdlZWM2MTUxMWQgbGVnYWN5LXRydW5rCis1NDM0NiAyOGIwNDAzZjhjOTJiNzFkYzNjNDM0NzBjMzE4ZTU4ZDAwYjg4YWIxIGxlZ2FjeS10cnVuaworNTQzNDcgOTNlNjdkMzYyYTgxYTI5YTk3OWY2NjY4OTQ0NDUwNjhkYWRkMWMyMiBsZWdhY3ktdHJ1bmsKKzU0MzQ4IGQ5NmViYjIwZDNlMWY2MTA1YzkzNWM4MWQ5MjRlY2QyOTQ2NTc0OTEgbGVnYWN5LXRydW5rCis1NDM1MiA0YTc5ZGQxNWJhNTlmNjVlMzkxODQ0YWYyZDk4OGVhNjE2MjU0NzMwIGxlZ2FjeS10cnVuaworNTQzNTcgNDkzY2FlNzA1ZjkxODhjM2JiNzA5Yzc3NzVmZDk2M2ZlMWViNGM5OCBsZWdhY3ktdHJ1bmsKKzU0MzU4IDc4Njg2YzdhMjNhN2Q1MDNlODIyNmM0OWJhNjc1ZmZjNTAzOTgxNWMgbGVnYWN5LXRydW5rCis1NDM1OSA5MjJiNzcwOGE4MGFmZTIwOTZkODA4OWQ0Y2FiNTE5YzIwYmIwMDY1IGxlZ2FjeS10cnVuaworNTQzNjAgMjI2ZDlmY2Y5ZDU5Y2RhNDc3ZTI5MGQwMWJkMWIxZWRiM2RiNTA2YyBsZWdhY3ktdHJ1bmsKKzU0MzYxIGRiYTVhMzNhMGU3OTk1MjgxNDAyMjliNTNjY2Q2NGMwZTYxZmNjZTQgbGVnYWN5LXRydW5rCis1NDM2MiAyMDlkNjg4ZjNjYTVlZWMyZTE4NjExYTFlNzUyMWNhYTljYjc4ZDliIGxlZ2FjeS10cnVuaworNTQzNjMgZWFmYmZhOGEyYjMwMGMzYWJhOTFkNWU2YTQ1MmUzYzE3N2UwNzc0MyBsZWdhY3ktdHJ1bmsKKzU0MzY0IGYxZjE4NjQ2MDI1MGEyZjUzMDhlZTQ2NDAwZDA2MTEzNThhYzgzMWYgbGVnYWN5LXRydW5rCis1NDM2NSBjYTMzOGQ1NjNhN2FkMTZmZjhjZDFjOWJlODMwYTAwZmVlYjI1NDMxIGxlZ2FjeS10cnVuaworNTQzNjYgZDMxMTAxM2ExNjM4YTk0Y2IzNmNhMTE2MDU2YzEzMDM2ZThhN2JkNyByZWxlYXNlMjUtbWFpbnQKKzU0MzY3IDVhMWEwYWE5YTRiYmFlMTk3NmE0N2NiMDE1OGYzMGUxNjFhMTVlNmEgbGVnYWN5LXRydW5rCis1NDM2OCA4OTQ2OTFjYTQ4MzUzZjBjNDFiOGE1YmVhMTE0MTMyZDRlZjhkMDE2IGxlZ2FjeS10cnVuaworNTQzNjkgMWRjZGJjMjVkZWE3YzY1OThlY2ZiNDNkNDdhOTE0N2EzODdlODU2NCByZWxlYXNlMjUtbWFpbnQKKzU0MzcwIDUyYTY5YTA2NDYzN2E1OTk1MzdlNGQzNTJhYzA5YTA4NzcyNGZkNGMgcmVsZWFzZTI1LW1haW50Cis1NDM3MSBkZTFkMDVjNTViNmZkZjNjZWEyMjVlZTc4NTE5NGJkODgzZDAzNzdiIGxlZ2FjeS10cnVuaworNTQzNzIgZmY5ZDgxZTc2YTc2ZjdkNTdlNjJlOWQyZGJhNTM0YTA5ZDdkMzFiYSBsZWdhY3ktdHJ1bmsKKzU0MzczIGJjMmE1YTU0YjVjYWYzZjRlMWYwZjZkYWE2M2UwNjE4NDMyOTVlMjMgbGVnYWN5LXRydW5rCis1NDM3NCBiNTAwNzYxYjRiNjI2ZGMxZmI5MGMzMDhlMDhmOTdhYWE1ODY0MjJhIHJlbGVhc2UyNS1tYWludAorNTQzNzUgNTZiMmI5MzNiYWFlMmM0NWRmZTUyNmZlMTFjNjBjNTM3ZmI4N2MyMiByZWxlYXNlMjUtbWFpbnQKKzU0Mzc2IGMzMDFiNWJjZGZkYzUxMGRmYjlhOGIzNTQ1MmM4ODAyMGE1ZmU2MDkgbGVnYWN5LXRydW5rCis1NDM3NyA5MGU1N2UyYzdhMDMzM2ViNzhkZGMyYzUzNjQ0YjVhNzgxNDhkNjVkIHJlbGVhc2UyNS1tYWludAorNTQzNzggMjkwMGVjMDQwMzFkOTRjM2FmOGQ2YTg4OTkzZGZiZTYyYzE5MGEzOCBsZWdhY3ktdHJ1bmsKKzU0Mzc5IGZjNWUwNDVjZWFlNDM4ZDIzODkwZDNmNjU2OWRlMjYwYjU2MGFiODQgcmVsZWFzZTI1LW1haW50Cis1NDM4MyA1MTRhZWZmNjNjOWZmYjU1MTEwMDk5N2RiNGJiYTZlZjNkMGFmNzhiIHJlbGVhc2UyNS1tYWludAorNTQzODYgNjI4MDU1MmMxMjk3MjNlMzdkN2IzODhiNGI1ODI2NjFhMThiZWYzYyBsZWdhY3ktdHJ1bmsKKzU0Mzg3IDk5NDNhZWE0ZjJkMWRmMjJjN2E2MGNlMzNjOWFiOWRjZGE1MzY0ZmYgcmVsZWFzZTI1LW1haW50Cis1NDM4OSBiYmNlMmQ4ZmY3M2Q1NGUwZjk3NzkwYTI2Y2UzOGFhZTRkYTQ0MjQ4IGxlZ2FjeS10cnVuaworNTQzOTAgNGViNGNmYjYyNTRlYmI3YjhmM2YwYWMyNDliZDEzZjdhNWRkNjRlOCBsZWdhY3ktdHJ1bmsKKzU0MzkxIGQxNTVhZTYzNjcyODQ4ZWFhMTZiZTA2ZGM1NzAxM2E1MjZjNmI3ZGMgbGVnYWN5LXRydW5rCis1NDM5MiAwYTZjNTEzNWQyZGVmNDk4ZTgyOTU4NzExMzQ4YzA4Y2ViZTQxNzlmIGxlZ2FjeS10cnVuaworNTQzOTMgZmM1MjdlYjk4ZGNlNjg1NWNhOTM5N2Y2ODE0ZDMxMDUzYzJmNjRjZCByZWxlYXNlMjUtbWFpbnQKKzU0Mzk0IDM3NmI0MjM1ZGQ0NDQ0ODFiNzg2NGYzNWQ4NjZhMmZiNjM2M2RhNWQgbGVnYWN5LXRydW5rCis1NDM5NSA0YWNiNDVjMjk3ZWQxZmI2YjhlMjlkNTM2YTBhMzUwOWE3MWNmMzZjIHJlbGVhc2UyNS1tYWludAorNTQzOTYgOGQ5N2RlZTZkZjY0NDQ0MTZlM2NjNTZmNDQ2ZmEwZTJiZjVhMWNmYyByZWxlYXNlMjUtbWFpbnQKKzU0Mzk3IDQyMTdmMzg1MGYwYjhhNWI2ZTczNjAwNTljNjBmN2UzNmU0NjI1NmIgbGVnYWN5LXRydW5rCis1NDM5OCA1MmMzMzljMGNiMzhiYzY5ZDY3ODNlNWRhZWU2YTQ5NjhmNzAxYjA4IHJlbGVhc2UyNS1tYWludAorNTQ0MDAgYTM3N2Y5NDJlZTBhZGMxODk4NWY5NGI5ZTRlYzdiM2UzNmY4MjBhOCBwM3lrCis1NDQwMSBhMzEyYzI3NmE1ZTc5YmNmYjM3MGI3NDk5OTk4MzIyM2JkYjM3MDIxIHAzeWsKKzU0NDA0IGI0M2E1MmY3MTY5NmEwNjUzYjI5NTI2Nzk5YmM3YWE3YzBjNmRlZjAgbGVnYWN5LXRydW5rCis1NDQwNSBkODM1ODA5ZjQ1ZWM0NDkxNGY0YmNkMTA4MTlmZjZlZGJjNzE2ODU2IHJlbGVhc2UyNS1tYWludAorNTQ0MDYgMDE5NTFmNmI4MTlkMTNlYWIyM2I2N2U1YWExNDYzNGQ2Y2Y4MGUzNCBsZWdhY3ktdHJ1bmsKKzU0NDA3IDk0MjA1OTg2YWQ1MzA4YTk0M2RmMTc4M2E2MjEwM2E3Y2E3MzUzZjQgbGVnYWN5LXRydW5rCis1NDQwOCAyNjkwZGU0YmVhYTEzZGE0YWNkOTZmMTBjZjEyMjc3MTZhYTk0YjI0IGxlZ2FjeS10cnVuaworNTQ0MDkgNjQ1MDcwYjgzOTQyNmJmMWY5M2JjNzU4ODIwYjUyNGZkN2ZkODlmYiBsZWdhY3ktdHJ1bmsKKzU0NDEwIGE2OTc5YWM5NTMzZmFlNjY5ODc2YWMyYWQ5ZDE0NWUxMDczOGExNGUgcmVsZWFzZTI1LW1haW50Cis1NDQxMiBjNTdjZDU0NjYxMmRkODNlODdkZWMzMTdhYzQ2ODA5OTZiNjU5YTdjIGxlZ2FjeS10cnVuaworNTQ0MTMgMDZjZDYwYjBiZDE2NGM3M2UyMmE1ZDQ5MzUyOWU3NWY0N2RlZTY5OCBsZWdhY3ktdHJ1bmsKKzU0NDE0IGQxYmE4MTM0NTI4ZTI4YzBiYWIzYzRlNDkzNjM1ZjNmYjAyNDIyMzEgbGVnYWN5LXRydW5rCis1NDQxNSA3MmRhNDhkOTYyNTdmYzMwYjAzMmEyYjRmNWY5MTQ1YmMyMTFkNTgwIGxlZ2FjeS10cnVuaworNTQ0MTcgOGJiNTcwYWU0YzQ1YzcyZThlYzIyZjk5YzY4OGU3ODc2ZWVlNjQ2MyBsZWdhY3ktdHJ1bmsKKzU0NDE4IDc1NDljNGIzYWEzNmEwMWQzOGVkMDU1ZmZmZWVjNTEzYmYwYzdlOWEgbGVnYWN5LXRydW5rCis1NDQxOSBmM2Q0Mjc0ZDA2M2QzMGJjYzgwOTYwMjA0NTEzMzdkNTJjODE4ZWYwIGxlZ2FjeS10cnVuaworNTQ0MjEgZWJlNTJkYmMzNTUzZjdlZTYwODlkYzNjY2VhODFhNTllYjdkZjI1OSBsZWdhY3ktdHJ1bmsKKzU0NDIyIDkxMjY4Njc4ZDU3Zjk2ZDUxMDBjMjY0MTUxNWRiZTllN2JkNmJlNDQgcmVsZWFzZTI1LW1haW50Cis1NDQyMyAxMzczYTgzMDgzYmIyMTNhOWZjYzM2YmExODE4YzAxNjZlZmM4ZTA2IGxlZ2FjeS10cnVuaworNTQ0MjQgYTJhZTI0ZmZhNjBhOTAzNTU4NTE4Y2IwZWQyNDQxZWJkMjlkY2M5MSBwM3lrCis1NDQyNSAzYzczYThhMjA4Mzk1ZmM4Zjg5YTUxYTA5Zjk3MjhjY2E2ZDgzNzhkIHAzeWsKKzU0NDI2IGUzYmE2MGRlM2Q4NDJlMWQ3NGMyMTA0YjI3NjNlNjY4MzY5OTZmMDYgbGVnYWN5LXRydW5rCis1NDQyNyAzNDNiZTM5NmJiZDdjNjEyOWM0NjEyZjU5N2U2YzI2OGVkZWYxNWQ3IHJlbGVhc2UyNS1tYWludAorNTQ0MjggMTlmN2ZmNDQzNzE4ZjdhOWRhMWFlYTllZGJmMDBhMTM1Zjg2MDg4MyBwM3lrCis1NDQzMCA1ZTI0ZjYzNmFjNzU3NmU4YjM1ZmRkOGQ4NzkzYmIxNTRhMWVkMDgzIHAzeWsKKzU0NDMyIDA3MTAxNmM3MjkzOTJlNTUzY2EzYzlmODlkMjQ4YjkzODAwMjFlYjAgbGVnYWN5LXRydW5rCis1NDQzMyAxZjg0Mzg5MGE0ZTYxYjQ3MTVkMmMzYTE0YTVlYzJiMTVkZGMwMWU0IHAzeWsKKzU0NDM0IGIxYTE4YzdlZDVjYTY3OWFlYTg4ZjA3NDUxMzE4ZWM3ZDY2YWJjNTggcDN5aworNTQ0MzUgMTZmZTkzNmY4OWIxOWE1NTExMjM0MGVjNWQ0YTg4ZDA3N2I3OGU4MCBwM3lrCis1NDQzNyA4ZDc5OWE5OWNmNjhmNGQ2OGU3M2E2M2ZkMTViOWExNjFjMThhMTg0IHAzeWsKKzU0NDM4IDAzN2ZlNmE0NDRkMmZlOTgyNzRlYmFhY2VlNGM3MWQ5MDU5YWZkN2QgcDN5aworNTQ0MzkgOGQwNmMxMTIxYjMzMWE1M2YyOTI2MDMwZjQwMDYwZjllNzkyODUzMSBsZWdhY3ktdHJ1bmsKKzU0NDQwIDZjOGMzM2E0M2ExNTU1YjgxZWNlYzkxMTBmNWVkZjBkMjQ5NTkwYmIgcDN5aworNTQ0NDEgOWYwN2Q0MTBjNTU1NDY5Njc0MjU5ZTI2YTc4ZTQ1MjFkYjU1MDdhYyBsZWdhY3ktdHJ1bmsKKzU0NDUxIGM3YzI3NTRmZjJkNmRkYjlhOTBmMTgyNzcwZTdhM2I5YjIyZWZhZWEgcDN5aworNTQ0NTIgZjk5NzNhNmUxYWZlMDFlMGZiM2JjOTdkN2E0MGZhMDFmN2QxNzllZiBwM3lrCis1NDQ1NiA4ZDI5NzgxNDI1OTMzODlmZWE0Njc2OWE5OGNjYjU3OTYwZGJmNzlhIGxlZ2FjeS10cnVuaworNTQ0NTcgMjM2YWYyMTYxZWI2NzhhZDQ0ZGU0MWJkMWM1OWYzOWNjMGJjOWE1OSBsZWdhY3ktdHJ1bmsKKzU0NDU4IDYwMTgxOTRhZmJiZGUxM2UxZmEzZDI0ODg4ZDdjMDQ3ODE4MWFmNjkgbGVnYWN5LXRydW5rCis1NDQ1OSBjOTk3ZTkwN2M0YzY3MDYwZDgzODFhNzZhOTExNTM1ZGNlZTU3ZGJhIGxlZ2FjeS10cnVuaworNTQ0NjAgMzA3ZTVkNDE2NGYzYTNiYjEyMTUwYjcwN2JhZjE5OGM2ZmQ2MjJjMCBsZWdhY3ktdHJ1bmsKKzU0NDYxIDVhNzcxYjRhOGI3OGNjNDNkNzU2MjBmNTk3ZDIyYjdhNjc5MmM0OTIgbGVnYWN5LXRydW5rCis1NDQ2MiA0NTY2OWM0MTRkYjQ1NTY3NTUyNDZlOTcxMGJiZWM1NTU0ZjczMzNkIGxlZ2FjeS10cnVuaworNTQ0NjMgYjhiMTdhMmZhY2U1YWFmM2NkN2Y3MzkwY2I3YzM4YmViZmRmYWY5YyBsZWdhY3ktdHJ1bmsKKzU0NDY0IGI0M2EyZGE4MzJhNzBkN2E4OWMyZmI5Y2FhNjMxNmNmNDZmNWQwNzIgcmVsZWFzZTI1LW1haW50Cis1NDQ2NSBlYzZmYjA5MTAzOWI0NTNjMGMwZTkyMWZlYTQ2ZWM3ZjFmMTBiZGNkIGxlZ2FjeS10cnVuaworNTQ0NjYgNTBhNmIzM2M5ZDJjNWMwNzEzMWEwOWMxZjg3NTdjYTY2NmU5YjEyMyByZWxlYXNlMjUtbWFpbnQKKzU0NDY4IDlkMGMwNTQxMTczNDgzMTQwMDllNTg5ODE1NDAyMWU4NDk0ZTgzYmEgbGVnYWN5LXRydW5rCis1NDQ2OSA3ZjI5YmUxY2VmYmExMjU2MzQwODFjMzEwYmRlMmEwODM5NzRlNTZhIHAzeWsKKzU0NDcwIGUxMmM1MDRlNDY2YjViNmU5ZjJjODYwYmM3MDcyMGJiZTNiYjc2ZWYgcDN5aworNTQ0NzIgZjI5ZjFhOGI3ODY5MmQxY2ZmMTkzNmUwYTA0MjAyMGE2ODU1MzhiYyBwM3lrCis1NDQ3OCA4ODEyNzE4NjY5ZTE5NzkyMjEzY2VhNjg2OGYzMzRjNDRlMDM3YmE5IHAzeWsKKzU0NDc5IGI3NTJhMWUwOTQ0YjQzNjA4ZWIzODAxOTRlZDZmYzY0ODZjMDZlNWIgbGVnYWN5LXRydW5rCis1NDQ4MCA5Y2YyMmM1ZWVlM2Q3ZmEwMDAxMDIyMzgwYWY3ZjM5Y2NhMDE4NjNiIGxlZ2FjeS10cnVuaworNTQ0ODEgMDhkMTYxODNhOWMxNTA1MjJhZTZhZTdjMGYxNmE1YmNmNjU0N2ZiOCByZWxlYXNlMjUtbWFpbnQKKzU0NDgyIDFkYzRjNGNlMmRiOWZmMDIwZjJiOTIwMzk5ZjQ2ODc4YzhhYjEyMDQgbGVnYWN5LXRydW5rCis1NDQ4MyBkMTZhYmU1YzkyZGViZjU1NTE2ZTkwYWU0ZjU5M2NhZjU4YTBjOTdmIGxlZ2FjeS10cnVuaworNTQ0ODQgODUyYzk4OTZmZTkyMzY1MWFhZThmZDU2MDA0N2Y3ZmJjMTBhMzYwMyByZWxlYXNlMjUtbWFpbnQKKzU0NDg1IDQ1OWUzNmIyZWE0NTFmY2RlMjIwZmMwZmEyNjNiNmQ1ZmM4NWVkNjEgbGVnYWN5LXRydW5rCis1NDQ4NiA1YjcxMTYzMmNhZTEzMmFiOGZkYzNkNWU1YjUyYmU0YmRmYTk3Nzc3IHJlbGVhc2UyNS1tYWludAorNTQ0ODcgY2I2ZWIxMzJhY2NmMjY2ODk0ZjBiMWRmMmFiZDhlN2NlYmE2MmNkMSBsZWdhY3ktdHJ1bmsKKzU0NDg4IDczOTNjNzEwZDRiYmJlZGQ5YTIwN2UyZTY5MmUxOTQyNzQxMGU0Y2QgcmVsZWFzZTI1LW1haW50Cis1NDQ4OSBlNTViZmIxYWMxZTdjY2FkZWEwNjM2YWQ4OTI5NzZjMWQ0NjE0Y2RiIGxlZ2FjeS10cnVuaworNTQ0OTAgNWJkOTY2MzYyMGJjOTc4YTEyNzk3MmE3Y2U3YWJjNmYxNjQ3YmJkYiBsZWdhY3ktdHJ1bmsKKzU0NDkxIGIxZThiZmRmZTRiNzk1YTAyZGVlNmM3ODVkMTRkOTQwMTRmYzllYzAgbGVnYWN5LXRydW5rCis1NDQ5MiBjY2M0NDdhNmQ5MTY0OGY3MTE2MjExNWY0NWQwYWQ3Nzk5YWRlY2IxIGxlZ2FjeS10cnVuaworNTQ0OTMgZDI1Zjc3NTc0ODY2MzFlODQ0YjFhNGY1MGU5NzJlMDE0YTliMzlhMCBwM3lrCis1NDQ5NSAxNWE3ZTBiN2U0MjU2YjVjOTBmOGMyMjU4YWRlZDY5ZmNkYTU3MDEzIGxlZ2FjeS10cnVuaworNTQ0OTYgZjg4OWY2NWE0ODYxYmViNWZjMDE5MTdjYzJkNWFhOTU2NTNkNTRhMCByZWxlYXNlMjUtbWFpbnQKKzU0NDk3IDQwOGRmYzdlMzAxODRjMjE1YTA2Mzg0YTFkNTlmODFjNjNjNGI0MzUgcmVsZWFzZTI1LW1haW50Cis1NDUwMiBkNDI4ZTIxZDZlYWY1ODA2NGVmNGNhYWY3MjNkNmY3NWM2Nzk2ZjFmIHAzeWsKKzU0NTEwIGJmYzRlODA0NjEwMjM4YjhiMDBjMzkyZTNkYWNiMjczNjMxM2YyYjMgcDN5aworNTQ1MjQgYWNmOWE1NWM4ODVkNzkxMjc2OWU2OWNjNjgyZDkyMzEyYmE4ZWQyYiBsZWdhY3ktdHJ1bmsKKzU0NTI1IDUyZTJmY2Q1M2FkMzM5NjYzZWViZGFmZmNiMTM5YmI1ODAzZjE4NGMgcmVsZWFzZTI1LW1haW50Cis1NDUzMiAxNzU3ZjgwYjVmZGJhZTQ3OWRkZjYwNDNiNzA5OTM5NzViNmJmNTIzIHJlbGVhc2UyNS1tYWludAorNTQ1MzMgYWZiMWM2Y2IyYzg4NDIyOTE0ZTY4YWZhMDFiZDBlODVjY2Q5Zjk0ZiBsZWdhY3ktdHJ1bmsKKzU0NTM3IGZlMTg0MmI0OGI2NmZmZWM4YTY5ODY0OGZhYWU3MmZhMTAyMGY0MGEgcmVsZWFzZTI1LW1haW50Cis1NDUzOCA0MmViNWJiNzc2NjE1N2FmMzUwYmE1ODAyM2E4YzRkZmU4ZjI2ZDg3IGxlZ2FjeS10cnVuaworNTQ1MzkgOGRlYmNlMmM0ZmIxYjRlODcyOTRiNWM2YTM2NTkyNGU2NjhlZTM2OSBsZWdhY3ktdHJ1bmsKKzU0NTQwIDUxZmJmMmE3NTU0OGIxYTY0MDA4NzgwNzZhMDc1ZmMwMTU0ZTQxZTggbGVnYWN5LXRydW5rCis1NDU0MSA4ZjFjOWU4ZWZiYmJmZDE5ZjhmMjliZDFkNTUzZGRjNmIzOWY0Mzg4IGxlZ2FjeS10cnVuaworNTQ1NDIgZDg3NDg2NzNmZDlmOWE1ZWFhNmI3ZTc5MWViYzYxMGU1YjViNzlhMSByZWxlYXNlMjUtbWFpbnQKKzU0NTQzIDAyNTc0ZjQ4NWIxNWMzZWJkOWZjMWQ2MmIwZTk5OWJjNmY1OWZiZmYgbGVnYWN5LXRydW5rCis1NDU0NCAwZWE1NTk1ZDc1ZGFkOGEzYTMzNTFhMTIwY2M5NWYxMjhlMDk3NTEzIHJlbGVhc2UyNS1tYWludAorNTQ1NDUgMTJjNzA1NTgwNzRlN2NkMGViMzI5NzM1ZTQxYjE1ZTcyZjVkMDg1ZiBsZWdhY3ktdHJ1bmsKKzU0NTQ2IGE3M2FhMGI4MjFjYTU4ODRjYjNmMDYyNWUyNDhlZmQyY2I4Y2FhMzkgbGVnYWN5LXRydW5rCis1NDU0NyAzYjU2ZTdlODk0NzAyZTBlYzBkYzAyNWUyNWE1NDE3OWNlOTNlZTJjIGxlZ2FjeS10cnVuaworNTQ1NTMgNzRkMjliNjM1NDE2Yjg5YWJjNTBjYWNiZDBhNTAyYWI3M2EwMzcyYSBsZWdhY3ktdHJ1bmsKKzU0NTU0IDNmZjZkM2ZhODEyMjliOTBlNjJiMzlmZGM2MThjMjEyODlhMGVjZjEgcmVsZWFzZTI1LW1haW50Cis1NDU1NSAxODk5NWJkOGJjOGIzYWE2Yjk1OGM4ZWIzZGE4MTljZTI2NjFmM2JmIGxlZ2FjeS10cnVuaworNTQ1NTYgMWMzZTBkMmMzNmRjOTc2MjNmOWE4Y2MxZjUzZmNlN2NjY2UwNjg5NCBsZWdhY3ktdHJ1bmsKKzU0NTU3IGVmNzBjZDRkYmE1MGI2NTc0YWQxYTViNzExZGUxNTVlYzRhNTU5NzIgcDN5aworNTQ1NTkgMzhhM2RhMDI2ZDVlNTc0M2RlNjdhNWVkOGIzNTkyMzQzZGMwNTA1NSBsZWdhY3ktdHJ1bmsKKzU0NTYwIGU5MzhlOWVmNDM0YjgyZTYxZjhiODVjZTAzMjIzZDI3MGFiOTA0ODQgcmVsZWFzZTI1LW1haW50Cis1NDU2NSAzMmY3MmU1NzYxOGNjMTViMmVmNjEyY2Q0OGI4NmMxZjYzM2YyODhiIGxlZ2FjeS10cnVuaworNTQ1NjYgOGZjNjM5NmYwNzZhNWVjYmIyMWE1M2M1OGY5Yzg5NTc2ZGEzZmJkMyBsZWdhY3ktdHJ1bmsKKzU0NTY3IDY1MGVlMTc5ZjNjZWMyMGE3YmFlNmRmZjIyNDRhMzhhM2E1YTIzMWIgbGVnYWN5LXRydW5rCis1NDU2OCA4MjU4ZjI1ZDQzZDc5NjQ5MDM0ZTVmMzZmNWQ3MWJhYmRjMTM5MGZkIGxlZ2FjeS10cnVuaworNTQ1NzAgM2MwOTEzYjY1ZThkNmQ1NWU3ZDYxNGY5ZDhkMzk5Y2Q5NmFkZDZhYyBsZWdhY3ktdHJ1bmsKKzU0NTcyIGViMjVjOGUyYjRhMWViZTI0NmEyZTY0YWJmNjIzYjI5NGYyZjExMmMgbGVnYWN5LXRydW5rCis1NDU3MyBhMDdmOThjZmZiZGZlZjk1MTM2MjY1ZTFkNjRlZGVhZGI4ZGE5ZGQ5IGxlZ2FjeS10cnVuaworNTQ1ODAgMmJlMTMzMDEzYjcxY2FiMjgzZWY0MDkzZDc3Y2FkNTRlODgxZjM3MiBsZWdhY3ktdHJ1bmsKKzU0NTgxIDhiZTc0NGQ1YzU2NzM4OTIzNTViY2NkMGY0ZDg0NmU0ZmEyMGZkNDAgbGVnYWN5LXRydW5rCis1NDU4MiAwM2Q1ZGI4MzI1ZjQxMWE2Yjc4M2EwYTZkOTliM2RlNzZlMjMyNGNiIGxlZ2FjeS10cnVuaworNTQ1ODMgYTMxYjBiMThjYWM2MmQ4ZmUzNzM1ZjQ1YzIxN2MwNzRiY2FlYWZhYiBwM3lrCis1NDU4NSA2NTMyNmEzODE1Zjc2MGFlODg3NDE5OTllNDcwYTgyZmQyZmZiZDM0IGxlZ2FjeS10cnVuaworNTQ1ODYgZTQ4OTNlZTlhODg1Nzk2NDAwNTZmNDAyMTRjMDFhYmExZWM2ZjA3ZCBsZWdhY3ktdHJ1bmsKKzU0NTg3IDUwOTVhZmVlMDgwZjEwMDlhNTgyOWM4YWQ3NDA3ZTczYWRjMjY2ODggcDN5aworNTQ1ODggODM0ZGE1MmViMmE0ZWJlNmY4MGUwNTlkMTEzYWNmMWIwNDhkMzI4YSBwM3lrCis1NDU5MiA0NWEyNzYxYzliMTZjZTNiM2U0N2IzZThkOWJmOGU5MmQwYTJmMjllIHAzeWsKKzU0NTk0IGQxNDRmODE1NzRjMDg1ZGUxNWI4MjkxYzBiMDBiZjViY2NkYWI3MjIgbGVnYWN5LXRydW5rCis1NDU5NSBkNDE2ZDk3MTcxODE1YmE2MjhlNDU3MTE1YWEyNDNkMWZkNmJiODU1IGFtay1tYWlsYm94Cis1NDU5NiAzZTZkMDMyMTdhMDJiMDU5OWY2N2UzYTM5NjhjNGQ0Y2Y0MzgxY2I5IGFtay1tYWlsYm94Cis1NDU5NyA0NmFkMjE5Mzk2OGVmYTdhMjhmY2M1OGQwNmZjNzM2MDA0MzNkZDg3IGFtay1tYWlsYm94Cis1NDU5OCA3MzA1NDVmMjQwODZkZDk4MTkzNzY1OGYxY2QxNzAwZjcyZWEwODFkIGFtay1tYWlsYm94Cis1NDU5OSAyZDI5NjY1Njc5ZTY3NDY2MDM0NjUyNDUzNmEzYjRlZDIwNTFjYjNkIGxlZ2FjeS10cnVuaworNTQ2MDAgZWZkY2U4ZDhkYjk5MDAyOGE0MTJkYzc3MThlODQ1MzBhYmYxMThhYiBwM3lrCis1NDYwMSBmOWRmYmI1ZDM1YzJmMzJlNjIwZjRkNDI4YTdhMWNmNWNhNjgwYzgyIHAzeWsKKzU0NjAyIGI4OTdiNzdhMDA0ZjdhNThkODY3MjBlOTI1MjMyMTlhZWYwM2Y0NTMgcDN5aworNTQ2MDMgMzllNDM4NmQ3MWY2NTI1YWI2NTQwNzgzNzNhNDU2N2ZhMjk4MGVkZiBsZWdhY3ktdHJ1bmsKKzU0NjA0IGY1N2U4ZTMyNTQ3NWVjNTA2NjM4YjA0NjUzMGU5MzU0OTVkZGNjZGYgbGVnYWN5LXRydW5rCis1NDYwNSA1YThjYTlkZDg5ZGIzNDdjZmUyODdmZTVkOTNlMDZmNmY3MjFhMzZlIGxlZ2FjeS10cnVuaworNTQ2MDYgZTMzNDlkNDEyNjgxZWU2ZjBmNDE4MmIxZWZlY2QwNWJjZDk3MmVlZCBsZWdhY3ktdHJ1bmsKKzU0NjA3IGZhMjE4MWJkMjcwNDliZDhmYTNjOTEyNDI0NGY5ZGJjOGM2YmVjNTUgcmVsZWFzZTI1LW1haW50Cis1NDYwOCAzZmQ4ZjA2NTc3ZmZmOWE1MTA3MjBhOThjZTJjMjc2MDY1YTAyMzMxIGxlZ2FjeS10cnVuaworNTQ2MDkgNTE5ZTcyZDYzMGQyMDg3Mzg5NmU2ZTRkNjdhMWE4NzE3MGY1MDk1ZiBwM3lrCis1NDYxMCA4OGMyYWM1OTA0NDFjMmU1M2NjNjA2Nzk0Y2Y0ODEyNzA0MmYzOTBkIHAzeWsKKzU0NjEzIGNjZGM1YjNiOWIxMTdhYzlkYWI0ZWRhMDg5ZGY0ZGEzYTc2Y2MxMmMgbGVnYWN5LXRydW5rCis1NDYxNCAzNzhiMmY0N2U4MDhmNzEzMTFhMDZhZTE0ZGZjZGI0ZDY4ZjY5MWNhIGxlZ2FjeS10cnVuaworNTQ2MTUgNmY5ZTY5M2Q3NmExODQ4NDhhNGZjMmQ5Njg0NDJlYmU0ODVhZmFhZiBsZWdhY3ktdHJ1bmsKKzU0NjE3IDhlM2M3YTVhY2JjZGYwMDE0N2YyM2JhMjBiMzI0ZWE2MWI3OTU3MzAgbGVnYWN5LXRydW5rCis1NDYxOCA4M2UxYjA2MTE3MTQ2YzZkZjg3YjFhMGExMWYzYTg0MzFhOWE1NTNjIGxlZ2FjeS10cnVuaworNTQ2MTkgNGU2MGUzYTYwZjUwNGNiM2MxYmQzOGI2MWQwOGJmNTAxNTdkYTcxYiBsZWdhY3ktdHJ1bmsKKzU0NjIwIGE1MDc1YTUyNzNkZjc4ZDRiMTk3ODQ0NzI4MWYyZWFjZTQwYzVkNjIgbGVnYWN5LXRydW5rCis1NDYyMSBjZGIyNTc5OGNmMGJhMDVhNGRkNWJhOGVmMjA5YzdmYjI0YmE5MmM0IGFtay1tYWlsYm94Cis1NDYyMiA1ODQyN2UxZTUxYmRjNjA2ODlmZDQ4ZDdhODFiOTNjOGI1ZGViYWMxIHJlbGVhc2UyNS1tYWludAorNTQ2MjMgZGM2ZTlmNzljYzRhZmJmYzY4MDRhNmNjMDhkOGVkNzk2MjAwNjFiZSBsZWdhY3ktdHJ1bmsKKzU0NjI0IDUwMjYzMjNkOTkyODgzMzQ2MzU4OTkxNTQ3ZGVmYmE2NjY0MjlkYTMgbGVnYWN5LXRydW5rCis1NDYyNSA1NWVjYzNhNDU2ODY2Mzg3MmE3OTUzN2E2ZmI1ZDlkNzdjM2FkMjE1IGxlZ2FjeS10cnVuaworNTQ2MjkgYzFmNjdlMWVlZTU4YjYxOTMxMjc5MDYxNTNlOGZjOTlmMTI0M2VlOCBsZWdhY3ktdHJ1bmsKKzU0NjMwIDM4YTg2MTE4MWZkZDU4YzM1ZDllMzg0MzFmOTQwYTlkYzA3ZDIzYmYgbGVnYWN5LXRydW5rCis1NDYzMSA0MWRiM2YzMGEzZjlmMGQxYzExYzYxMGQyZjFhYTU4YzdiNDE2NWVjIGxlZ2FjeS10cnVuaworNTQ2MzIgZGI5ZWFkYzA3ODI2NDIzNjFiZjQ2Mzc4M2E5NjY5N2M1Y2QwNWYwZiBsZWdhY3ktdHJ1bmsKKzU0NjMzIGY4NjU1N2U1MDNmM2E3ZDEzZWFmY2FkZjAwNjYzYzFmMTU1OGM0ZWIgbGVnYWN5LXRydW5rCis1NDYzNCA5MzQ3ODc0NDEwMzg3OWE4NWI0MzFiMjM5MzI0NWE2NjI5MGE2NzMyIGxlZ2FjeS10cnVuaworNTQ2MzUgYzJiZjNkNjQ2ZWZmYTJiMzI5MDBmNTMzYTlkNzljNDM4YWRiNjhhMSByZWxlYXNlMjUtbWFpbnQKKzU0NjM2IDJjZThlODA1MzljZjc5MTYzYmRhYTA2NTVhNGQ1ZTBkYmNiNDk0NTggcmVsZWFzZTI1LW1haW50Cis1NDYzNyBmYzdmYmNmMmFlNTE3N2FmZGYyNTdjZGE2M2FkNDI4MjJhOGVmOGQxIGxlZ2FjeS10cnVuaworNTQ2NDEgZjIxOWJiN2U3NGM5MjE3MmE4YTliMzQwYmU1ZTU2N2QxZmZlMjg5NSByZWxlYXNlMjUtbWFpbnQKKzU0NjQ0IDdkZWU3ZjdkMjlmMDhjOWU4MDM3YmEzMGUyNzBmNGJlNGVkYjQ4YTIgbGVnYWN5LXRydW5rCis1NDY0NSAyMjExOTQyNDlmYTg2ZTNjNWQxMzE2YjFiNjk4M2VlNGQzNGY0YTI0IHJlbGVhc2UyNS1tYWludAorNTQ2NDYgYjViNzUwY2Y4NWMyMDk1NmU2YmU2ZmM3MjUzYjhhMjA3MmZmNmYyOSBsZWdhY3ktdHJ1bmsKKzU0NjQ3IDY5NmE2NjZkZmU2MTQxNjllNjU3YmY0ODAyNWVhMjllOThjODgwMjEgbGVnYWN5LXRydW5rCis1NDY0OSBlYTZmMmM1ZDI3NDkyZjJjNTViNTk3NzMwODI1MWExOTY2YmM0YWYzIGxlZ2FjeS10cnVuaworNTQ2NTAgZTk1ZDJiY2ZlYjQ2MzFlNjMyYTAzZjQ0MDUwOWRlY2VmYWZlM2FjYyBsZWdhY3ktdHJ1bmsKKzU0NjUxIGFjZGI0ZjNjM2Q2MzIyYTNhOTdiOTAxMGEyZDNjNTc1OTk4NDgwYzggbGVnYWN5LXRydW5rCis1NDY1MiAxYTVkYTA3OGM0MzVmMmY3NTU4MDA1YmQwM2ZlMmMzNzk4MjJjYjg2IGxlZ2FjeS10cnVuaworNTQ2NTMgOTBjNGMzZjA0MjA1NmFmYmVkYmU0NDYwYTlkYzkwZTQyYzljZmQ3NiBsZWdhY3ktdHJ1bmsKKzU0NjU0IDM1YmRjNjFhYzhlYWRlOWYyYmYwNGViOTQ5MjUzNjJlN2E3MTJjMDEgbGVnYWN5LXRydW5rCis1NDY1NSA0N2QwNWYxYWViZGRmYmRjMmUwMGRjODVlNTJjY2Q1MmE3MDFmM2IxIGxlZ2FjeS10cnVuaworNTQ2NTcgODFlNThmMDEwMWRiN2ExMjE0ZTkxMDU1MDcyZjhhYzJmZDEwNGJmMSByZWxlYXNlMjUtbWFpbnQKKzU0NjU4IGY3NjRhNzU1MjE2MmVmYzMwOTM4YjdlZDg4ZTUxYWNkYzMxYmNhN2EgbGVnYWN5LXRydW5rCis1NDY2MCAxMmZmMjA5NDhhMDIyNTczN2M1MjRkZGE3MjI1ZmFjMzcxYjM1NzgxIGFtay1tYWlsYm94Cis1NDY2MSA2NzYwZjM4ZTllZDY3NjFiZGY2OGFhOTEwMDQ4OGRjMGVjYTk2MTMyIGFtay1tYWlsYm94Cis1NDY2MiA2YTNkZDFjNGE3ZGYwMTQxNTU0MWFkOTNiY2E5NmY3M2FjMjZjMzBlIHJlbGVhc2UyNS1tYWludAorNTQ2NjMgNGEwMzg2MGFlMDhiNTcwN2RlZjhjMTY4ZjcxZWY5YWVhNjk2MWQ0MiBsZWdhY3ktdHJ1bmsKKzU0NjY0IGVmNWQzZTUzOTM4NDcyMjA1Y2VlZmU0MGFiYmMxYzQwNGFjMzViYjcgbGVnYWN5LXRydW5rCis1NDY2NSA5OWJmMTQ1NTU4ZDM1YjI1NTljOGU3NzJlNzFiMzI3NTE5MTE0YzAxIHJlbGVhc2UyNS1tYWludAorNTQ2NjYgNDhkOGQ1ZDMxN2FlZTNhYTJjYzY2NDhlY2RlNjFkNDA2OTVhNzE0MyBsZWdhY3ktdHJ1bmsKKzU0NjY3IDM0M2VlZjM0Mjc3NzNiZTA5MDIzMjBmM2RiOTEzNTZlYjUxZjI1ZTggcmVsZWFzZTI1LW1haW50Cis1NDY2OCBlNjg1YmZhNmI0ZWFiODc1MDI0ZDQyMTc1YmQ1NDA4M2Y5MGE2NmQxIGxlZ2FjeS10cnVuaworNTQ2NjkgZjcxZmVlYzdkNTQ3ODlmOTRhM2VlOTlkZjllMzc5ZmQ1NDZmNTU1OCBsZWdhY3ktdHJ1bmsKKzU0NjcwIDg5MGJiOTAwMGNlNTU1MzNmYTZmNTU3MzNmYjYwYWFlMmE4MTBiMGIgcmVsZWFzZTI1LW1haW50Cis1NDY3MSAyMmExNjdjNDY3OGMyYTg1ZWY3YmE2ZGQ5ODQ4YzQ3OGE3ZWMzZDAzIGxlZ2FjeS10cnVuaworNTQ2NzIgODUxMTJkZDUwMDU5NWVlMjMzZGY1MzM2Y2E2MjE5YmJhNDY5MWQ2MiBsZWdhY3ktdHJ1bmsKKzU0NjczIGNmYWM2NGEwMmEzZDgzZTE2MzQ0NGExZGNjZTI3MzYzYTA5ZTQ2ZWEgbGVnYWN5LXRydW5rCis1NDY3NCBjNzM4MTgwNDQ0N2JjM2Q0MTRiMGY5MzNjNDBhNGU0NjM3OTg3NGM0IGxlZ2FjeS10cnVuaworNTQ2NzUgYWMyNTVhNDJlYzBlMWE5MTQzMmZhZGMxYTljZGQ3ZmQzNTkzMTZjYyBsZWdhY3ktdHJ1bmsKKzU0Njc2IGQ0MWQxYmEyMDljOTQyYWUwNzFhNjc1MmIzYjQxMWMyMGI4MzBhNDQgbGVnYWN5LXRydW5rCis1NDY3NyBjYjZjY2U0ZDQyMzJiZjQyOGQyNDBkY2M1ZWRlN2VkMTgwMTQ3NWZmIGxlZ2FjeS10cnVuaworNTQ2NzggZTFhYjI1ZmQ1YmFkODE0NTVmNGM5NGM4NGJlMTM0NDNkNDZiYjdhZCBsZWdhY3ktdHJ1bmsKKzU0NjgxIGRkN2M2OWJkMGM1MmExMzViMzEzNjc0MzVhNzM5MmYxODljNDIzMTIgbGVnYWN5LXRydW5rCis1NDY4MiBlN2Y3OGEzN2FlNTBiMGI5ZjI5MTMzOGIxZThjOTE1NmFjNzhlMDEyIGxlZ2FjeS10cnVuaworNTQ2ODMgYjdlMzc4ZTlkMDJkNTVjM2U4ZGIyY2RmOWRiYzgzNmFhMmJiNTEyYiBsZWdhY3ktdHJ1bmsKKzU0Njg0IDU4NmE3ZTg3NzUwMGUyMGVkZGMyNmU1YTdmZDVjZjk1MDNkYWM0MDQgbGVnYWN5LXRydW5rCis1NDY4NSBkOGNkODhmOTMwOTgwZGUwZjg2ZWNiMDUzNGE0YzAyYWI5MjQwYmQ4IGxlZ2FjeS10cnVuaworNTQ2ODYgYjAwMWI2NTQ3OGZhYmU5ODM2MTA4MDRhZDg5OTM5MjUxN2ZmZmYyOSByZWxlYXNlMjUtbWFpbnQKKzU0Njg3IDQzMjUwMDE4Mjg1YzJiYjIxOTkxODJjYzE0YTEwYzZhYzhjMjhjYzUgbGVnYWN5LXRydW5rCis1NDY4OCA3MTJhMTVlZmNmMTliNzM2OTEyZDNlYWYwMGVhM2JlNjRhZmVkYzA4IGxlZ2FjeS10cnVuaworNTQ2ODkgNTEyZjU2YWZhNGEwNTEzZTcwZDQwNjA1MGNhODcyM2JiNWM4MDFiNiBsZWdhY3ktdHJ1bmsKKzU0NjkwIDRjN2ViYzM5N2Q5NDdjNzEyNmQ3NmJkYmEyMGQ3ZWEzYzQ0ZjIzM2QgcmVsZWFzZTI1LW1haW50Cis1NDY5MSA4MTIwMjdmMWVlYTUzNWEzYTMxOTFkN2UwZWNkOWFmYWYyN2YzOGMzIHJlbGVhc2UyNS1tYWludAorNTQ2OTIgMjhhZWMxMzU4ZjU5NGUxNGJmN2JlNmQ4NmIwZGFiNTI1MTVmYzJkNiByZWxlYXNlMjUtbWFpbnQKKzU0NjkzIDQ3NzdjNDAwN2I1YjE5NDQyMzk1M2Q0MWIxZTVlNmFkYWFiYTZjNWQgcmVsZWFzZTI1LW1haW50Cis1NDY5NCA4MTcwZDQ0ZGQ5MDQ4OGRlMDI3OGU1MTFjMDM3ZGIzMWIyOWRjNWE2IHJlbGVhc2UyNS1tYWludAorNTQ2OTUgODBmZjc1ZmEyNzU0ZWIwZjhiNDVjMDQ3MmU0YmYxMTdkNjFjMWM0NSBsZWdhY3ktdHJ1bmsKKzU0Njk3IDlhNTBlMmI2YjY4NTc0N2Y4ZjkwNTc1NGM5MjdjMWI4NWI2ZjlhNDIgbGVnYWN5LXRydW5rCis1NDY5OCBlYTZmYmY0MDRjMzRkOTYzMWI4MzA3NGNhNDE2Y2VlYWQ3YmE4ZWZhIGxlZ2FjeS10cnVuaworNTQ2OTkgNTgxZDEyN2U4MjJiNzE5NDZlMTY0ZWM4N2IxYTE1NjY5MWJkMzVlYSBsZWdhY3ktdHJ1bmsKKzU0NzAxIDkxMjAyODEyNDFiODJjZWMxMDFlYWRjYTVhNjliNGM0NzE1MWM1NzYgcDN5aworNTQ3MDIgYmFkNWY4MzI4MDlmYzI5NDE5MTNlNDBmYzE4ZDliMDJlYTAwYzBlYSBwM3lrCis1NDcwMyA1OGQ0OWNhZTg4N2YyZjlhM2RmYmQ3NjEyNDE5MThkZmE1MWM3ZDY1IHAzeWsKKzU0NzA0IDNiMTM5NmIwMTIzOTM4MjAyOTBmYzMwNTA4ZTEzZTE0OGY0OWFlMTYgbGVnYWN5LXRydW5rCis1NDcwNSAyMzQ4NjlkZDI3ODRlZDBmNmZmYmJhY2IyYTUwOTlhZTMyOGY5NWJmIGxlZ2FjeS10cnVuaworNTQ3MDYgOTQwOGRjZDNjZTg4ZmRmMDJmMWJmODc0NDE3YTcxYjIzYzk3NmY2NSBsZWdhY3ktdHJ1bmsKKzU0NzA3IGM3YjgzMGM4NmY0MmJiZDM4MWNmZjYyZjE5MmM4NTQ0MjcwMGY4YjUgbGVnYWN5LXRydW5rCis1NDcwOCAwMjBmZDZkZTY1MjVkYTM0YzA2YjAxZTJlY2YxNzE5MGYyZjg1NmZkIHAzeWsKKzU0NzA5IGM1NjYwMDU1YjQyNWRkYmFhZDZmYTRiNzk0OGVkMTcwZWMwNjJjZjYgcDN5aworNTQ3MTAgZDhiMTQ5OTRkODcwYjY4ZTRkMGI3NTlkZjEyMzZjOGY4M2I1Y2FmNiBwM3lrCis1NDcxMSA4MGY1ZWUyMWU1NDU1ODdkZDUwYmVmM2NlZjBiMzI4NTg0ZGMzNjc3IGxlZ2FjeS10cnVuaworNTQ3MTIgY2MwMGJjZTZjNTlkMzdhMzc4NDkzMDc2NWUxODYxODM2MGY3MzEyZiBsZWdhY3ktdHJ1bmsKKzU0NzE0IGI5MTI0YzBlZjE3YTMyMThkZTQ3M2M0NmI3OGU2NmNkZGQ5OGViYWMgcDN5aworNTQ3MTUgYWY1MTFkMjQ0NjM2OTNjZjQ0MGQxMWM4ODYzOWJiYWRmY2Q5ZjkxMSBwM3lrCis1NDcxNyBlMjlmYTRhMWNiZDkzMWIzZmVhNzI1MzQwZWM2Nzc4MjExN2Q5YTVkIHAzeWsKKzU0NzE4IGE1NzA3YmY0ZjZkMTQzMzkyZWZiNjFjOGM0OTgwOWVhYzI2YTQ5OWQgcDN5aworNTQ3MTkgMzM5MDE1ZDk4Yjc4NjQyMjU3N2FmZjRiNTU1NTNkMDBlOTU3ZGQ5NyBwM3lrCis1NDcyMCA1MjJiM2YzNWQwZWI3ZGJiNjM3NTMyZGE3N2Y4NWUxNmJmNWMwNTQ4IHAzeWsKKzU0NzI2IDRkNTBmYWQ5NTc2ODIwNjJmNDQ5NzUxNDBkZjk0YjY2YmUwZWY5Y2MgbGVnYWN5LXRydW5rCis1NDcyNyA2NTczZWMxZTVkYzBjZGZmNGFiMjA2ZjdiOTk1ODYyYWMzZmUxYTc2IGxlZ2FjeS10cnVuaworNTQ3MjggZjQzOTFhYmU1YjAyMzQ1ZjIxNTZiYzQzNTdlNTkzMzEyYzBhMmY5NiBwM3lrCis1NDcyOSA4NTQzOTkyOTdmOTU3ZTg1MjUxMmZhNThlNWI0YjdhODU4OWFhOWVhIGxlZ2FjeS10cnVuaworNTQ3MzAgNjdmOTAwZDJmMmU2MjE0ZWM4MTFjMjU3N2YwNmVmY2ZlODkzZWM1OSBsZWdhY3ktdHJ1bmsKKzU0NzMyIGFlNGNlZDI4YTgzOTAyYmIyMWU5ZjMyZTUyNjU1Nzk5NTA3OTUyYzggbGVnYWN5LXRydW5rCis1NDczMyA0Zjc3MDE2MjU0YmM4NGJmNTFmZTI1MDdiYWZmMmY2NTM0NWY3OTAwIHAzeWsKKzU0NzM3IGM5MGQ3NWE1ZTE5MTE0YmM3YWFlYzJhNmNhZWZiNDRiNTg0MzczM2QgcDN5aworNTQ3MzggZDQxMDhhY2E4NzY0MjdhOWFiYTVlYjk5ZDMyY2MzMmM0NTcwNmZiOCBwM3lrCis1NDc0MCBiYTMxZTcxMjEwZDQ2OWQzMzYxNzg2Zjg0NzM2ZDgxNzMzMDBjNmRmIHAzeWsKKzU0NzQxIGU3ZDk3OTEwMTQzMDhhODc1MTlhOTM5YjNiOTUwY2I4ODFjNWI2NjYgbGVnYWN5LXRydW5rCis1NDc0MiA3YzY5NzJmMzdmZTM1MzIwY2MxZmJjYmMyZjU4M2I3ZmQ0NTIwYjU4IHAzeWsKKzU0NzQ0IDA0ODZkZWFhYWRlM2U0MGU4NmFhNWUzMThlNjMxNjJhMDRmOGFhOGIgcDN5aworNTQ3NDUgNDU2MWY2ZGEzYjdkMzk0Nzg2OGY1NTFmYmM3ZWRlZTk4ZTZjNjgxOSBwM3lrCis1NDc0NiA0MDExMGQwNmU4MmFlMjNiNjc5M2U2Y2QyMjljOWE5OTE3OGI0NDU4IGxlZ2FjeS10cnVuaworNTQ3NDcgMTVmMzRhZDQ2ODFiODg1NDVhMzc2YTVlZWU2ZjM3NmMwZTdkZjg3YyBsZWdhY3ktdHJ1bmsKKzU0NzQ4IDczYzAxNjY5NmE4MmY4NGJlYzdjNWQwMmYyZGNlNjgwNGMwMWIzOTcgbGVnYWN5LXRydW5rCis1NDc0OSAyNmNiY2Q3OWExNTMxMDE1NjUwM2U0OTliMjgxODA3YjNhM2MyZTc4IHJlbGVhc2UyNS1tYWludAorNTQ3NTAgMjhiYzdlZDI2NTc0NzMwNWE1MjYxMjQ3ZTVhMjAwMmY5ZmYxMDUxMyBwM3lrCis1NDc1NCA5ODFhMzFmZjE5NjZkZjMyNTkzNDlkMWVkNzZiMDVkMWZjZTBiN2FhIHAzeWsKKzU0NzU1IDAwZDlmNTBiZGMzMWFhOTRjYjE1YTI2NzAyYzY4MWM0MjA2ZGE0YzYgcDN5aworNTQ3NTYgZjM5MDc5M2U3NWRlYzNkOTdhODFmMDFiNjAzMjAxZjM3ZDY5YWZmYSBwM3lrCis1NDc1NyA0NmQwZjQwNTc3MDViMDk3ZTlhMTcwODcxZmQwMWE1YjYyMTFkZDA2IGxlZ2FjeS10cnVuaworNTQ3NjAgMGRmYTJhNTY0MDc2MGU2ODhmNTQ3YzRhNGMwY2FjNWM0ZmYzYjAxYyBsZWdhY3ktdHJ1bmsKKzU0NzYxIDM2NjdkMWE4YzkxNmYxYTNkYzgxYTkwM2UwY2RiZjgzMjZhNjdhYmEgcDN5aworNTQ3NjIgYTAxY2IzZGYzOGRkZjM0NzQxYjI0ODJkYTczZDk5N2VkZDIxMDg0YyBsZWdhY3ktdHJ1bmsKKzU0NzYzIGM0ZjQwM2Y0NTBlZGE2NWU5YTIxNmM3MDlhMzkyZjA5NDBlMDQwYTIgbGVnYWN5LXRydW5rCis1NDc3MiBjZWRjOGQ3ZDFjN2ZlYjUyYjI2ZmViZWQ5ZWNjNzljMjc1NTU2MTQwIGxlZ2FjeS10cnVuaworNTQ3NzQgODZjNDZkYzZhNzc0YWU5NzQ1YTUwNDhlNDQyOGY4MGFlMTc3ZjEzMSBwM3lrCis1NDc3NyA2NWNiNmIxZmEzOTUxZjM0NTA4MGQxYzgyYWI3MzdiNzlhNzRiN2ZjIHAzeWsKKzU0Nzg0IGMzNGQ3MDViODg0ZTRlOWYwNzMzNzliNTFmZTBhY2EyZTVmZWE1YzkgbGVnYWN5LXRydW5rCis1NDc4NSBjMGM0NDA3ZDM1MzFjNmJhZjU0Y2MwODU5NDRkZmVlY2NmN2I5MDYzIGxlZ2FjeS10cnVuaworNTQ3ODYgODQ0NzMxNGY1MDBhOTdjYzU1YzRmZDg0NjlhYmZhYzlmZDEwMzFiNSBsZWdhY3ktdHJ1bmsKKzU0Nzg3IDk1M2JkZWZkODFmZjU1NmFlNjIxZDdmZjg2ZDExODMyOTI0ZDUyNWQgcDN5aworNTQ3ODggMzU2OTU4N2JlZjA2NWViOTAzY2NjOGIzNjIyN2ZlMjhkMzdhMzY2NSBwM3lrCis1NDc5NyA0NThjOGRiMmU5NDYxNmEyYWYzM2M0NzcwMzcxMmM5YTg2MjlmODYwIHAzeWsKKzU0Nzk4IDBhMzg5YjQ3ZjEyOWU4ZjZkMDZlYmI4ZDEyZGNlZjM4MTg2ODE0YmUgcDN5aworNTQ3OTkgZDFjM2RkMTg0ZTM4ODJiOTk0NDI3NDM2ZWJlYWE0ODA5ZWQzNmZkZSBwM3lrCis1NDgwMCBlMmQ3YTRjMzkzNjBhOGYxYzEzN2IwOGE1MWE0NmRkOTY2YmJlMDI5IHAzeWsKKzU0ODAxIDNjMzM5ZGU4MDAxMDU2YjZkMmEwNzRhMjQwOTgzMWE4YTY3OGUxMjIgcDN5aworNTQ4MDIgMzVmOWZmYzZiNTEwZjhmOWM2NmM2NjJjZmIyMjhkNmVlMDM1MjA3NSBwM3lrCis1NDgwNSBiODIyZmJkODVhZmViM2I3YWIyNDc3NDc2NTkwZGM0MmI5NzI3MTI0IHJlbGVhc2UyNS1tYWludAorNTQ4MDYgNWRmZDJmNGJjODM0YjY4MzMzYzVmMTk2ZTAxMDgyMzM1NTUxOTQ1MCBwM3lrCis1NDgwNyA1MzRlNGM3MDdlOTFlNmJkYThjZDMyNTg1M2Y5NjEwMjViNjkwZmViIGxlZ2FjeS10cnVuaworNTQ4MDggYmFiOWMzODE3MDkyNmIzNzZiMTUwMGJjY2UwMzM1YWJlNjkzZTJkMiBwM3lrCis1NDgxMiAwZDFlNDE1ZWMzNmNjZDM2OWU0MDZkMWRiYmU5NzE0NDA0MjFmYjhiIGxlZ2FjeS10cnVuaworNTQ4MTMgODJmMjc5MWI3YzAyMjE2NGFmMmQ4MjNiODViYzNmNDA2YzIzNDRhNyByZWxlYXNlMjUtbWFpbnQKKzU0ODE0IGVhM2NhNDk1ZjMyMTFkM2IxZTg1ZjYwNDBkYjIyYmZkZjgzMGI0ZjYgbGVnYWN5LXRydW5rCis1NDgxNSBlZDgyMDIzOWY4Nzg3NjA2Y2ZiODQwOGI5NGI0MjY3MDQxMzE2M2ZhIHJlbGVhc2UyNS1tYWludAorNTQ4MTYgODQyMzc3MjA5N2M3NGE2Y2MwYWRlZDg3ZmZlNTMyYjQ2ZjM0ZjM4MyBsZWdhY3ktdHJ1bmsKKzU0ODI1IDVmOGE4N2ZiNGRmMzMyZDlmOWIzZTc0YmU0YmI5Y2UxNGU5YWU1MWEgbGVnYWN5LXRydW5rCis1NDgzNSAwNjBjNzlmNmQ5MTk2N2ZlZDNjMjc5NWM4ZGEwOTFlNDRlMmYyMjg4IHAzeWsKKzU0ODM2IGQ2N2I1ZDk1M2I0NTIzYjI4YmI2MWNjMDZhMjM5NTZiMzgxODljY2MgcmVsZWFzZTI1LW1haW50Cis1NDgzNyBiYzc1YzUyM2I5ZDgxNzE2NGU3ZjFkNDRlYzNhZTNlNjFhZTA3OGUzIHJlbGVhc2UyNS1tYWludAorNTQ4MzggNTYyM2UyMzNlOWNjZmQ0N2JlMzk2NzhlMTE3NzkzYTI3MjBjMWYwNiByZWxlYXNlMjUtbWFpbnQKKzU0ODM5IDQ1NzlhMjc0ZmQ2ZTJhNTllZjZmYjQzYzFjOTc5OWE2ZGMwZThhMGEgcmVsZWFzZTI1LW1haW50Cis1NDg0MCAyZmU5MWQyMDFiMDUyMmMxYzMxNzU1YWQyNmRlYjZkODdkNWMxZDczIHJlbGVhc2UyNS1tYWludAorNTQ4NDEgMzFjOTI4MjhhZWZiMWIyNGU5MDA1NWIxNDk3ZTA2ZDllZGZiYTI5ZiBsZWdhY3ktdHJ1bmsKKzU0ODQyIDNlNWZkYjkzYzk1YTdjYzJlOWQ3NjAwYzZkNDE1MmIzNDY3ZTc1NmIgcDN5aworNTQ4NDQgY2M3MDdmMWFlMGI2ZWVkM2QzMjU0Mjc0Y2I1ZmZjNTEzZTcyMTlmZSBsZWdhY3ktdHJ1bmsKKzU0ODQ1IGE0OTg1OWY0NGM0MzBjNjU0MjA2YzdlNWNiNDhkMDA1NTg2NTExYzkgcDN5aworNTQ4NDYgYjVhMmU3NTNiNjgyMzFiMGQxYzNkNTY0ZDg0MmI5NWQ4NDBkNTMwMiBwM3lrCis1NDg0OSBlMDExNjk2NjM2NWUyYjdmNmQ5OGZhNDM2YjUzNWFkZmMwNTZkZmYzIGxlZ2FjeS10cnVuaworNTQ4NTAgYzFjZmQwYWY1ZjU3MzI3MTQ3YzMzNWQyN2U5ZTliYTg0N2FiYTcxYyBwM3lrCis1NDg1MSAwOTA5NzJjMjBhNDcyZTliMmQ1YjljMTEyNmI3MThlNDUyN2UyZWZlIHAzeWsKKzU0ODUyIGEzMGFmODMzZDM4OWI4MjhkZTMzNDViZjQxNzM2Njk4ZWRiNWZlNDAgcDN5aworNTQ4NTMgOTY1NzM5NWMyNWU1OGJjZGVlNjFiZmQ5MTk1NzBmMzQ3MTZjNWI2NyBwM3lrCis1NDg1NCA5OTAyN2MyYjNmZDJkZTQ5YTk2N2ViZTAwOGRhNTQyMmNhNDQ4ZGE1IHAzeWsKKzU0ODU1IGJlYTBhNTU5MmRiM2ZkZTk3ZjY5ZGIyZmNjMTQ1MjBkNTVkZGI5MjkgcDN5aworNTQ4NTYgYTVlNDEwNjM5ZTI0ODYzNTU4MDcxY2JkOGJhYzRiNDJhZDIzMTFjNyBwM3lrCis1NDg1NyA2MWMyOGQ3NzhlMzc5MzJiMzhhYWEwYmQ3ZDM0NjBiNDE4ZjMzMDlkIHJlbGVhc2UyNS1tYWludAorNTQ4NjMgNDkwZDhjMDlhYmNiODE0OTUwYmU3YmI3YTI1YzNmZjIwNDdjN2ViNSByZWxlYXNlMjUtbWFpbnQKKzU0ODY0IDRlMGU4NGY5ZDE0ZTJiNWQyODY0YjFiM2IxZTE1MmQyMGMxMmMwNWUgcmVsZWFzZTI1LW1haW50Cis1NDg3MyBjMzJjNGIzZGE5M2ZkNGJmZjY0MTdkNjY0MDk4YzRhYTAwZThhYWU5IGxlZ2FjeS10cnVuaworNTQ4NzQgNTg1MjdiOWIyNDJjN2Q0YmQ1MTk4MGRkNWExMGExMWFiNmViZTk3NCBsZWdhY3ktdHJ1bmsKKzU0ODc1IDVhNmQ5MDNhYjdiNWJhNGVmMGQxZDkxZDJjMWIwZWQ2YjFhYTQ4OWMgbGVnYWN5LXRydW5rCis1NDg3NiBkYTQwM2QyYjg4NmFiNThiZjBkZjFjMTFkYzcxZGRjM2RhNTg5N2U1IGxlZ2FjeS10cnVuaworNTQ4ODQgNzZmZDNiOThkMDA3ZjZjNDhjYWU5MTliMzliZGMxM2U4N2NjM2UwYiBsZWdhY3ktdHJ1bmsKKzU0ODg1IDE3ZTQzNjNlZjJiNTMwZjFhYTlhMGJjMTI4NDE4ZWU2M2Y3YzQ0ZTAgcmVsZWFzZTI1LW1haW50Cis1NDg4NiAwZjY3NWE2Mjk3NzBhYTFjMmZiYWQwMDI3YzI1NTkwN2ZiMWFjOTgxIGRlY2ltYWwtYnJhbmNoCis1NDg4OSAwMWU2ZDg0ZTM4OTI0NTI0NzMyMzZmMjNlZWFlZjc0ZWU5OTkzNmFlIHJlbGVhc2UyNS1tYWludAorNTQ4OTEgMTg3OTVkNDliOGQyYWM0MGJkZDM4ODkwMzQ3Yjc0MDBjNGY0NTQ4OSBkZWNpbWFsLWJyYW5jaAorNTQ4OTIgZjQzNjY0ZThhMWZhNGM5ZmRjNDUwZDA1NzI0ZTcyZDk0ZWM0MTgxZSBkZWNpbWFsLWJyYW5jaAorNTQ4OTMgYmZiNmYxMzMyZmI0ZTMzZDVjNzI0YTZiYmVhZjU0NmE1MDk2NjRlNCBkZWNpbWFsLWJyYW5jaAorNTQ4OTcgZjc3N2QxZGQ0ZGNkZGEyNTc3ZDJmYWY0MmQxNDZmYmM0YTljOWNhMiBiY2Fubm9uLW9iamNhcAorNTQ4OTggNmI0NjVjYzAyNWIzZjc1Y2JmYmM2ZWI3ZDQ5MTY1M2RjODhlNjIxYSBiY2Fubm9uLW9iamNhcAorNTQ4OTkgODRiNWFjZWQ1MzU2MTM4OGYzMTE3MzQ5M2Q4YjkwZDViMDM5NjU3NyBiY2Fubm9uLW9iamNhcAorNTQ5MDAgYWY3MjZmYjY4MWZhYWFlYjg4MTY2MjRhYzYxNWNlN2Q0OTlhMjVlZCBiY2Fubm9uLW9iamNhcAorNTQ5MDEgMGI3MDgzMGVkNzQzZmNjYWQ4ZWFkYTM0MDQ3OWU2MWNlM2JmMTVkNCBiY2Fubm9uLW9iamNhcAorNTQ5MDIgYmI2MGI5NTM5ODM5NDFlOTIyNjRiMjdlMWIzZmEyNTY3NGJlYWQ0MiByZWxlYXNlMjUtbWFpbnQKKzU0OTAzIDhjZDA5MzI3NGQ1NzgxMGQ2ZDE2OGEzM2Q3ODZhNWQzYzgyZDZkNjYgcmVsZWFzZTI1LW1haW50Cis1NDkwNCAxY2M2YmYyMzQ5ZTRlMWUwM2NkMDc1ZDZiOWI4OGM5NTJmMmY1MGJmIHJlbGVhc2UyNS1tYWludAorNTQ5MDUgOWE4YzNkOWY0MDVhOGE1ZmM2N2QxN2ZmZDM3MWZiMWEzMzIzYzM4MiByZWxlYXNlMjUtbWFpbnQKKzU0OTA2IDZjNmM4YThhZmIzODFlOGFhNDQ1ZDhiZjc3MDA0NzFhY2NjOGM1NjkgcmVsZWFzZTI1LW1haW50Cis1NDkwNyA1YTQ2MTkyMTQwNDNkMDE2NjMyZWU4NDJlMDhkNTg4M2M2NzlhMDI4IHJlbGVhc2UyNS1tYWludAorNTQ5MDggYWEzYzdiYTUzZjlkMmY0Njk2ZTBlZjIyMGRkMzIzMDA2YTc3ZjhlMyByZWxlYXNlMjUtbWFpbnQKKzU0OTA5IDBhNmU1MzdiOGQ5NmIzNjdhOTQ0ZjY0MWVmZjI5NmE5Yzc2Y2M1MDIgcmVsZWFzZTI1LW1haW50Cis1NDkxMCAwYzUwMTlhZmM1NWI1ZTJhZWNkOGQxZDY3YjY5Mjc5MGUwYjNhZmQ5IHAzeWsKKzU0OTE3IDFlMjhjNjhiNGU0M2ZiMmY5NTZkODgyYjAwMzVkYTQzZjM0YmNkNTYgcDN5aworNTQ5MTggMjgwNGU0ODg2MWJhNjI3ZjQ4OGRlNTY2ZGYxM2I4ZjliOGY1ZmQ1OSBsZWdhY3ktdHJ1bmsKKzU0OTE5IDQ1NjM4YjM3YjgyYzgxMzhlNWQ2NmY1ZDljNTAxZDM2MTAzMmIwNWUgcmVsZWFzZTI1LW1haW50Cis1NDkyMCAzY2NiNGMxNDNkM2I4YjI1M2VmMDE0ZWFjZTFmYmUxMTJiNzY5MzJlIGxlZ2FjeS10cnVuaworNTQ5MjIgM2MyNjcwOTJmMTMxZTVhYjc2ZTU3ZTVmNWI5MWEyOWRkMWFiZmUwZCByZWxlYXNlMjUtbWFpbnQKKzU0OTI0IGY1NTI2ZDJlYjY1NDdiMWQ4Y2FiY2NhMzlhZGUyOWZlMTU5MmVjOGMgcmVsZWFzZTI1LW1haW50Cis1NDkyNSA1NWQ3NjFhY2RjYmNkNDEyZDllZjE0YWNmMTk3OWI5NzUzMGY4YTIxIHAzeWsKKzU0OTI2IDI2ZGY1NjZmODBmMGRkNzhmYzQ1MGZjY2VlYmYzMTA0ZDU5ZDA1NjEgcDN5aworNTQ5MjcgODEwZDMzM2E3M2ExMGRkZTBmNjAzZjVmYWZiNTJhYzVhZGEwZDAwYiBsZWdhY3ktdHJ1bmsKKzU0OTI5IDNjMTIwNWNhNDQyYjZiYzg3NjBjZDhkZDYyMmQ3YTg1OWU2YTRiNGYgbGVnYWN5LXRydW5rCis1NDkzMCBmZDBmYmZmZDZkNTBmNzg1Y2ZkNjA5OWZkZDQwMDU3YTVmZDcxNDY2IHJlbGVhc2UyNS1tYWludAorNTQ5MzEgMDlkZGJhZGU2NWZlZGEzOTAyY2RjZTdhYzZiNjZmYmYyOTI0ZTE2ZiBsZWdhY3ktdHJ1bmsKKzU0OTMyIDkxZjMxMjE3NmVhZjM3OGYwNzg1YTdmM2E5OTNhYmYwNjdmMzY1YjIgbGVnYWN5LXRydW5rCis1NDkzMyBmNDQ2MTkzOGY1MGUzNWJlMzg2NjRmOGIxZTU0NDUyZjY1MTdkYjkyIHJlbGVhc2UyNS1tYWludAorNTQ5MzQgMmY4NzZhNWZmYTBkM2Q0ZjJjNWZiZWIwZTZlMzlkMzg1NTA5ZTA2ZiBsZWdhY3ktdHJ1bmsKKzU0OTM1IGQzNmEzNjFjMDVmZDAyN2QzYjc4MTA2YjhhNTNjNDEwZTYzMWQ4ZDkgcmVsZWFzZTI1LW1haW50Cis1NDkzOCBmNThjMGQxMWE3NWMzMTUzOTZkODEwOGU4YzgwYzlkMDIxZmI5NWNlIGxlZ2FjeS10cnVuaworNTQ5MzkgOGQ1MDE4ZDc1MDhhMmE3YjNhNmIxODdhNDg5M2VmYmM2NWU4MDgxOCBsZWdhY3ktdHJ1bmsKKzU0OTQwIGQwNWQ5ODY0YjYzYzc5ZWM2MWZhMzk2NmZmZjNiN2I1ZWM0ZjlmMDUgcmVsZWFzZTI1LW1haW50Cis1NDk0MSA3ZWE1OTQ5NzE0YWQxNWI4NmUwN2ViNTdiZmVmZTk5OWUxMzZkM2QyIGxlZ2FjeS10cnVuaworNTQ5NDIgYWJmYTcwNTViOGYzMDliMjUwNWE3MjUzN2VkNzA4N2I1YzE1YzI1ZCByZWxlYXNlMjUtbWFpbnQKKzU0OTQzIDdlOTlhZjg2OWM5MTc2ZGI0NjgxYWJiMzU0YThlMWYwYmE4YjlkZjcgcmVsZWFzZTI1LW1haW50Cis1NDk0NCA1MTlmMjMxMzQ1M2I3MWJkODI1MWRkZWFlYmM4Y2NkZjgwNGY2ZWYxIGxlZ2FjeS10cnVuaworNTQ5NDUgYjY4MjcyNDQ5ZGY0YjAzMTFiZDcwYzk0YTI3YTQ3MzUzNmEzNTViNSBsZWdhY3ktdHJ1bmsKKzU0OTQ3IDcwOGM4YzVmYzE3MzIzNmFjZDI4YzA4ZDlmNDU3NWU3YTE0Zjc2ZTIgbGVnYWN5LXRydW5rCis1NDk0OCAxYmIxZmE3ZmQxNzQxYjM3YjFlNzg5YTM3MzU4NDE3NzlkYjViOGQ2IGxlZ2FjeS10cnVuaworNTQ5NDkgNDdhZWIyNDg4MmJkNzlkNWFmYjg5ZDdlMDc2NDk4NDVhZDc0YjFmNCBsZWdhY3ktdHJ1bmsKKzU0OTUwIDNlZTg0OTc0NmMxYmY1YjUzMDBhYTE5YzkyMmU4MjE1NjkzZTUyOTYgcmVsZWFzZTI1LW1haW50Cis1NDk1MSAzNzk3Yjk4MDkyY2VhMmRhOGZkYTY5MmJkMDNlODM1ZjRiMmNjNjJiIGxlZ2FjeS10cnVuaworNTQ5NTIgY2E0ODk4MDRhZTIwMTA2M2Q0MmUyMmNiNGYwNTViNDg3OTA1NWUwMSByZWxlYXNlMjUtbWFpbnQKKzU0OTUzIDRiOWZhODA5MmU4MjcxMDNiY2QxYjFiMmY1Zjk2NzZjZWQ0MGE4MTkgbGVnYWN5LXRydW5rCis1NDk1NCA3ZGVkNzg3ZTYzMTE2Y2M5YzI2YjY5NWNhY2M5NmU5MmNhMDRlMmY4IHJlbGVhc2UyNS1tYWludAorNTQ5NTYgNmM0ZDc2NzhhZjVlMmQxOTM3ZmM4ZmIxNjdmNDFhMjEwNjFjNmU5MyBsZWdhY3ktdHJ1bmsKKzU0OTU3IDEwMDJmNDJlMTBjZGYyZDJiYjVlODFmYjdjY2RjNzkzYjFmODM4MmQgbGVnYWN5LXRydW5rCis1NDk1OCA3MWI1YzFlMmMwOWMyMjFmMTEzMzM3ZWM4MWM4Yzg4NWVlZjJhZWRjIGxlZ2FjeS10cnVuaworNTQ5NTkgMDE5OTA0YzY0NzE3Yzg2ODczOGE4ZGJhZDdiYmU3MzkzODg3MmFiMiBsZWdhY3ktdHJ1bmsKKzU0OTYwIDFmMWZiODE4ODhhZTI4ZTVkYjVkOTM3Yjk3MjNlNDZiMjNiMTE5NjcgbGVnYWN5LXRydW5rCis1NDk2MSA3NjFjZTM5NDZiODZlYjgzNjMxMTUwZWU0YzA3NTgwMjkxMDdhZDVkIGxlZ2FjeS10cnVuaworNTQ5NjIgM2Y0M2ViZmE5MmRjZjIzZDU2NGIwN2FmYWM1MmQwNGYzZWE2NmY1ZCByZWxlYXNlMjUtbWFpbnQKKzU0OTY5IDBmMjlhMWEwOTcyY2RmYTQzZWNkMjQ1ZmNlNDk0ZTc1ZjAzOTQ2MjIgbGVnYWN5LXRydW5rCis1NDk3MyBlNjE2ZmExMzBjMmZjYzNkMDUzY2JlMDdlOTQ2ZDE5Yjk4NDVmZWEzIGRlY2ltYWwtYnJhbmNoCis1NDk3NCAwNzNkNjhjMjkwNDkzODNiMGZjM2Y1Njk2MTM0YjUyOTNmOTQ5ZDJmIGxlZ2FjeS10cnVuaworNTQ5NzkgYjZlOGFkZWMwNTRjN2Q3Y2NkM2JlYTZkMjk5NDY0NzE4ZDAxNzdiOSBsZWdhY3ktdHJ1bmsKKzU0OTgwIDAwYmYxNDc2MDFlNDhkMTVmZTk0MjEwMTkyYjVjZjljMjk2MWU2ZDEgcDN5aworNTQ5ODEgZjc2NjNjNjczNGJiZTRlNDMyYWViZjRiZGE4ZmFlZjZlMDA1N2VmYSByZWxlYXNlMjUtbWFpbnQKKzU0OTgyIGQ5YTQ4N2MyZmE5NjE2MDEwNmRhOGM1OTRmNDM3MzE5NTNkNzM2ZDEgbGVnYWN5LXRydW5rCis1NDk4MyA2ODc3Yjc4ZTgxMGQwMjQ1NjI5ZWVmZmJkZTA5NGY1NmZkZDE5YzhhIGxlZ2FjeS10cnVuaworNTQ5ODQgODkwNWRmNjE3NjEzZTFjMGU4YmYxOGRmZWNkODNmNGYxNzU1MjBhNCBsZWdhY3ktdHJ1bmsKKzU0OTg1IDdjYzMxMDMyZTIwNjNmZTA2MTM4NGY4ZWM1YWYzZjQ3MGYwYzk0YzkgbGVnYWN5LXRydW5rCis1NDk5NSA5MzhjNWFlOGRjMzE0YmUyOTg5M2RiZTBiZTNjZTQyMjMyMzg3NmU1IGxlZ2FjeS10cnVuaworNTUwMDEgMTI2NDlhNzM0YmU2MjgzZTBhYmFkZjBjN2Q5N2U0NGE0NDA4OTk5ZiByZWxlYXNlMjUtbWFpbnQKKzU1MDAyIGNjOWFmZWRlZDIzZmNhMTY3MDQwOTYxODA4NDlhYTVjNTQ2NTM4ZmIgbGVnYWN5LXRydW5rCis1NTAwNCBhZGZhYmM1NzM2MWQzN2M5OTk5ZmMxNWU0YmNkNWZiZTNjYjVhN2NjIHAzeWsKKzU1MDA1IDA2MTQ1ZmJjN2FiOTMxODM0MDRmZWQ2ZjhjNjNhZTQzMjVmMzc4MjQgcDN5aworNTUwMDcgMjcwMDg2OTk0ZjQ4NGU5NjE5NTMwY2I5OTRhODcyYjE5NmNiYjlhOCBweTNrLXN0cnVuaQorNTUwMDggYTZhNDM2YWFlZmRiZWVlZTI4NThkZTUwYjc4MTQzYWQ2Y2YxMWVjMSByZWxlYXNlMjUtbWFpbnQKKzU1MDExIDc2ZTM3NWFiNzUyNTc0MDYyNjgxNTZiZmMwNjMwYTNhMmZiZDNmNTAgcmVsZWFzZTI1LW1haW50Cis1NTAxMyAyOWFlNjY3ZjMyMzk0MTE2NDc4MDZjMjc2NWExN2QyYzVhMzI4OTk4IHB5M2stc3RydW5pCis1NTAyMSBhZDFkNTZjMDc0MjMzOTZmMWJiNmVkODNmNDQyOTg5YTBiYmY0YTI3IGxlZ2FjeS10cnVuaworNTUwMjIgNTIxMTYwYzliMzY5ZDA0YTljZjk5OTQ1NjU4M2M2MTUwMjkxNDk5ZCByZWxlYXNlMjUtbWFpbnQKKzU1MDI0IDRmODAxYTc1ODkzNmQ0NDY2NDQyYjE1MTJjNGYzMzU5MDRjYzg2NDYgbGVnYWN5LXRydW5rCis1NTAyNSA2YTU2YWVkYmUyODA4YTNhNmI5ODEwYTE2MjE5Nzg3M2Q1YjllZjIzIGxlZ2FjeS10cnVuaworNTUwMjYgODczZGZiNTJjMzM0NjA2YTA5YmMyN2VhZWM5NTQyZjA1ZDQ4MzA2YiByZWxlYXNlMjUtbWFpbnQKKzU1MDI3IDgyZTc5OTgzY2IwYzI5OTg0ODlkMzhlNjcwODVmNDQ5NDAxZGJlY2QgbGVnYWN5LXRydW5rCis1NTAzNiBiODZiZDc3ZDNkNDA0MGUzZDE1ZDQ2M2QxYTcwMGZmODQxYjExYWViIGxlZ2FjeS10cnVuaworNTUwMzcgYmM3YTAzNzlkM2IxOGViM2I0MTczYzQxYzZhNDEyYmY3ZmJjMTBiMyByZWxlYXNlMjUtbWFpbnQKKzU1MDM4IDg2YTIzMmVhOGJhNDVkY2ViZjRlM2UxYTdiMzRjYjY0NDM2N2UyNjYgbGVnYWN5LXRydW5rCis1NTAzOSAwMGZlNGJiMDI5MzY0ZDdhMWFlMWVlY2I2MWExYmZiOWU0OTZmMTI0IHJlbGVhc2UyNS1tYWludAorNTUwNDEgMmIyZDU3ZDZjYzdlYjgwNWU1ODU5N2EzNmI3NGI3MjE2MTkyMzJhNiBsZWdhY3ktdHJ1bmsKKzU1MDQyIGQzZGYzMWQ0NTQ1NzFiYTg1YmI4YTZmNTg2NmI1NjE3ZjZmNjA4ZTEgbGVnYWN5LXRydW5rCis1NTA3MCAzNzY5YTUxOTYwMzVhMzA3NTA4NGMzODljNzczYzE1MDVmMDhhNjQ2IGxlZ2FjeS10cnVuaworNTUwNzIgZTUwZDgyYzQxOGE3MmZlNDUxZDdmZTg4MjE3MzFlYWM0NDgyMmJhNyByZWxlYXNlMjUtbWFpbnQKKzU1MDczIGEzYmY1NWEwM2Y2NmY3YmIyYzQzM2UyMzg2MmFjYzI2NGMxOTZjYzUgcmVsZWFzZTI1LW1haW50Cis1NTA3NCAzOWU5NTM4MDUxODQ5MzdkNGE2ZmZiOTY2MDFhODY2M2I5ODllM2QyIHJlbGVhc2UyNS1tYWludAorNTUwNzcgZWFiMjk1ZDkzYzhlNjUwNjkzMGMyNDE2MjAxNmNlN2Q5ODJiY2E3MSBwM3lrCis1NTA3OSBiZWFjZjQwYjU5NjA3YTYyYmU5YjY3Yzk4ZTJiYTA5NTJjYTY4NmY4IHB5M2stc3RydW5pCis1NTA4MCA5ODBmZjBiMWI5NTc4NTU0ZGZiM2E0MWE0NTRmNTRmNmNhNDNlNzBhIGxlZ2FjeS10cnVuaworNTUwODEgM2Q3MmMxMDkxZTVhMzliYWVlYjhhODA4ODMwZmE4M2UyNTBjMWE5MSByZWxlYXNlMjUtbWFpbnQKKzU1MDgzIGJjNmEwZmUzMjM1MTdlZDQ4MjVlN2UyZTJhZGFmOWZlNWVjZDNiMDAgbGVnYWN5LXRydW5rCis1NTA4NiBkNzA1NjU0NTdlYWJiMDRlODI4NDFhNWUxODcwYWYwY2I0NjIzMDZhIGJjYW5ub24tb2JqY2FwCis1NTA4NyA3YTRmMTc0ZGY4NDQxMDk0ZDM4NjI4Y2JhZWYzOTVkYTllMTk3MGVjIGxlZ2FjeS10cnVuaworNTUwOTAgYTY4NDY3Y2MwNmQzYjRhMDUyZmQyZWJlMTNlM2Q4M2Y5OGE1OWYwZSBsZWdhY3ktdHJ1bmsKKzU1MDkyIGU5YmVmNWI0MjAwMTU1NGRhMDg5MGQ3OTEzYzg1ZTQyMDQ0NjM2OGUgbGVnYWN5LXRydW5rCis1NTA5MyAyNWNjMWNlZTVlNjkwNDFhZDAwYTI3YzJiOWEzNTE3ZjIxZDI4OWU1IGxlZ2FjeS10cnVuaworNTUwOTQgN2I3NGExOTc2MDliODYyMTg2MDdhOGY1OWQ0YjU2NmM1MDBjNGVkMiBsZWdhY3ktdHJ1bmsKKzU1MDk1IGMxZjZmOTg0OGIxN2NjMThlNzhhMTY0ODRjNTY0Y2UzYTM4Y2E3NjIgcmVsZWFzZTI1LW1haW50Cis1NTA5NyA4MjVkOTY2MzM4ZWE3MDAwNjFiM2Y1ZjhiZDBiNmVmNDQ5MzM3OTJkIHB5M2stc3RydW5pCis1NTA5OSAzNjhmZWQ5YWY3NjE3OTkxMTU3NzQ0YTJjNzMwOGU2M2I2YTc0ZWZiIHB5M2stc3RydW5pCis1NTEwMCAxNWI4MTBlMjFmZTlhOTBiNDE0YWEzNzk5YTY0MGNhNWQxMTNiMjYzIHB5M2stc3RydW5pCis1NTEwMSA5YjAxZGZkMDNjMjk0OWMwYzk2NGQzNjYzMDUxNWM1Y2NhYmJkMmFjIGxlZ2FjeS10cnVuaworNTUxMDIgMzdkODJiZWU3YTE2MTVjYzVhZmRjYjMyNTRiZGU0MWFhM2MwNDU5YiBsZWdhY3ktdHJ1bmsKKzU1MTAzIDFjMTcwNWJmMzZiODhiN2Q0MWI1ODMxMzEzNjgxYmNiNGExNTAyNWIgbGVnYWN5LXRydW5rCis1NTEwNCBhODVkNzE1MDA5ZWNjMWE4MGU1M2M1ZWEzNWRiZWYyZGRlNDE1MjMzIHB5M2stc3RydW5pCis1NTEwNSAxZTVhMmEyYjE4ZWVkYjg5Y2NhN2U4MzFlYTcyNjc2YmZhYTg2NDJiIHB5M2stc3RydW5pCis1NTEwNiBkYzVhMTU2N2FmOTg0ZDVlNmZjYzg5Y2JhYmZiZjIwYThkMjI1ODA4IHB5M2stc3RydW5pCis1NTEwNyBmNmZhNDcwOGE0ZGI0NzExZjljNDM2ZTQyMGIwNTA0NzFiNjNjMGQ3IGxlZ2FjeS10cnVuaworNTUxMDggMmM1NDc2M2M0NTA0MjFkMGJmM2NhYjhhMmVlY2Y3OGRhOGJmODQ2OSBweTNrLXN0cnVuaQorNTUxMDkgY2ZiM2UwMDIxYjNiZjhkMzJiZmFmNzYxN2MyZDgwYmJlMGY2MWNkZSBweTNrLXN0cnVuaQorNTUxMTAgY2IzYzkyMDYyZWM0MDVlOWQ4MTg3MGViYWRmOWYyNzlkZmQ5MGM2OCBweTNrLXN0cnVuaQorNTUxMTEgY2E0NDhjNjA3YjE0MDFjZTgwYjc4ZGM1YmRiZmIyNjhhNmU1Y2FlZCBweTNrLXN0cnVuaQorNTUxMTIgYTE0ZmYzNzBiNjNkOTMyYjZhNTgwYzg0ZGU1N2ZmZTE1ODg4Yzg5MyBweTNrLXN0cnVuaQorNTUxMTMgYWMxNmJlY2UxZTVmYjdmNWU0ZjIxMWY3MDBkZDAwYjY3NWZiNDZkOSBweTNrLXN0cnVuaQorNTUxMTQgYjM5YWJjYmJiYmJhNGI1NDJhYjVlNTI5MjU2MWM1ZWVkNGQ1ODdiNSBweTNrLXN0cnVuaQorNTUxMTUgMWRlNTQ5NDcxNzIxYzM4YTIyODdhZDNhOTRhYTM3MmE3Njc1MzQzMSBsZWdhY3ktdHJ1bmsKKzU1MTE2IDQ5Njg2ZWQ1NmVjN2ZlODcxN2ZiYzhlMjRlM2NmYzM1YTE2OGY3NGYgcHkzay1zdHJ1bmkKKzU1MTE3IDViOGVmOTRiYjgxMGZkMDI3ZDdjNTBkZTE5OGZmYjIyMTNhYTBjNzAgbGVnYWN5LXRydW5rCis1NTExOCAxMTYyNTAyYTA5ZGE3NmIxZWQ4NDlhMWIwMGE2Mzk0ZjRmYmExMDJhIHB5M2stc3RydW5pCis1NTExOSBhM2UzMDAxYjM1YmYwYTE1ZTJlYjUxZGRhZWQ3NjE0NzUwYjJmMGM2IHB5M2stc3RydW5pCis1NTEyMCA3ZjM2Zjk2YjZjNzY1ODZmODM4MjA0NGE5ZDA1ZTI4ZTE5ZDBhN2M3IGxlZ2FjeS10cnVuaworNTUxMjEgMDUyYmYwZGVlNmI4NTQ3MDY0ODAxODBmMzAzZjM3YWNkOGEwZTQyMCBsZWdhY3ktdHJ1bmsKKzU1MTIyIDkyZWFkODdiZjk4NDNjNDFlNzFjNzc2OTNjOWUyNmIwMzI4MTBlM2EgcHkzay1zdHJ1bmkKKzU1MTIzIGU3OGUxYjYxNmM3MmZjODJjZWZmNjE5NTJlOTdmOGRiZjQ5ZWUyMDQgcHkzay1zdHJ1bmkKKzU1MTI0IGE3MzIzYzcyYjVjNzFmOTAzYWNkMmU4OTQ5NGEzNTUxNzgyNzUxMjIgZGVjaW1hbC1icmFuY2gKKzU1MTI1IGJlOTAzOWI1NzRkOTdjZWM5ZWZmMzI2YmFlOTg5NWQ0OGRhMzhlOTkgZGVjaW1hbC1icmFuY2gKKzU1MTI3IGM0OGZlNGRjMzRhOTE0MjMwNmZhODU2MWQwYmEzZTE4Zjc0OWFjOWYgcHkzay1zdHJ1bmkKKzU1MTI5IDIxMzFlMDM3MjFlZmRjOWE3NzA4YjNmMzI0ZWNiYzdiZGUyYmU5ZGMgbGVnYWN5LXRydW5rCis1NTEzMCA1MmI5OWE5MTVmYWE1ZTc5N2Q4Mjg4MzJhZjkxZDZjNTUyMTNkMzM4IHB5M2stc3RydW5pCis1NTEzMSA4Yjc0M2Y1NTU5NjEwOGRjNTc5MTZhYzg4ZDhhNTg4OTczNDI0N2Y2IGxlZ2FjeS10cnVuaworNTUxMzMgMDc4YjRmMmZkZmM5NDc2YTc5YTM5NTY4YTM5Njg1NjE5MTNkNWE0OSBkZWNpbWFsLWJyYW5jaAorNTUxMzQgM2I1N2YwYjdlZGRmZjkxNWVjODRmOWEwNTJiZjA0OGYwYzRkN2Y1NCBweTNrLXN0cnVuaQorNTUxMzUgOWUxZGZjODU1ODkwNWJkYjg3ODBiZWMxOTJiMTI3NmRhODk2MWNmNCBkZWNpbWFsLWJyYW5jaAorNTUxMzYgZTJiMWQwMjIyYWZlY2YyNTFkOTFlMjM5ZDRkMTEzNTkwNGJjZTc3NSBkZWNpbWFsLWJyYW5jaAorNTUxMzggZGY0NjAxMWM1OTM2MjU2ZmM0MDM1MjA2Zjc4N2FjMmI5NzM3ODZjYyBkZWNpbWFsLWJyYW5jaAorNTUxMzkgODY4MDk3MmVkOGYwMzZlYmYyN2IyZWVjOWY4YTNlZjZiYzY2MzUxMiByZWxlYXNlMjUtbWFpbnQKKzU1MTQwIDYxNTc5NWQ1MmI5ZmQ5OGE0ZmEyMWM2NDdmYWI0NDcyNmJkODk0ZDYgbGVnYWN5LXRydW5rCis1NTE0MiBiZTdlYjNmZDM3NzY2MTMwNzFiNmQzY2FjMzgwOWZhZmY3NGNhMzVmIHAzeWsKKzU1MTQzIDI2NmUxMjM5NGI5N2QyZmIzMzRkMWVlN2Y1MGMzZGVjMGRjOGM5ZDIgcDN5aworNTUxNDQgOTQ2ZmQ1NGI0NTdmNWU0MjZhZDBlNzYwMTFjYmQxOTNjMGY5ZTAwNyByZWxlYXNlMjUtbWFpbnQKKzU1MTQ2IDYxYWNmYjgzMTYzM2M4ZTcyZDMzNDM4YTkzYjExNzJmMTMwMDRhMWQgcHkzay1zdHJ1bmkKKzU1MTQ3IDZiN2QxNzgyYTU3NDk5NzBhYmYwN2U4MmIwMjdmNDUyZDM0ZWZmN2UgcHkzay1zdHJ1bmkKKzU1MTQ4IDgzOGNhYjM3OTM3NmU3YmZhMDFmYTZiNGI5MTBjMzRkMzA1Mzk2MzkgcHkzay1zdHJ1bmkKKzU1MTQ5IDEwN2FhY2I5YzU5NTg4MzFjYjIwN2QxZDczZWI0YTBlOTRjZWUxNDAgcHkzay1zdHJ1bmkKKzU1MTUwIDZiYzE1NmQzYzAwZWMyNTNjYjFjMzgxMmE1NWUxNGZiZTkzNjA0YWEgcHkzay1zdHJ1bmkKKzU1MTUxIGUyNWRjZDg3NGI4Mjc5OWNlYzNjNzRiZTk1YjUyODFiMDJjY2JkOGUgcHkzay1zdHJ1bmkKKzU1MTUyIDQ2YjAwYzczZTMyZmZiNTJmZmIxZDNkNmQ1NDFjMjUxMzZjZjNlN2EgcHkzay1zdHJ1bmkKKzU1MTUzIDE0NDBiYmI2NzE1MGE3MDFmY2EyNmEyOGRjMDliYTk1ZTA4NDRhOWIgcHkzay1zdHJ1bmkKKzU1MTU0IGVhNWNjZWU2YjI4NTRiZTJhNThjODM0MTY2OTJiYjgwMjllNThiYjcgbGVnYWN5LXRydW5rCis1NTE1NSAyZDM3NzQwOGE5ODdiY2M3ZWQzOGQ2NGVkNTU4NmYyNmFhNWI3NTc0IHJlbGVhc2UyNS1tYWludAorNTUxNTYgNTU0ZmYyNzE0NWUxNGFmZWM2NjUxZDM0YWNjMWE1MjRiNzVlOTVlZCBweTNrLXN0cnVuaQorNTUxNTggZjMyMDJmZTc4NTk4MTlhNGFlNmIyMzY2NzZiYjQ0ZjU2ZDJlNzAzYiBsZWdhY3ktdHJ1bmsKKzU1MTYyIDg3MjhjZDAxMmJkODdlNzY0MmJmNjFjYWI3MWQyOWJkMzg0NDMyOTIgcDN5aworNTUxNjMgYzc5MWE1ZTJlMDllOGZlMWQ3ZTk4NDAzNDE0Y2ZmMDIwNmI0NGU2ZSBweTNrLXN0cnVuaQorNTUxNjQgMmRjYzA1YTgwOTA1ZmVlNDZhZTU2YTk5Y2RmOGUyY2U5YTMwY2MxMyBwM3lrCis1NTE2NSAwYzNhMzE0ODIwOGUwYjk2NGY1NjU2MjRiOTM5ZDlkNTljMDlmYjcxIGxlZ2FjeS10cnVuaworNTUxNjYgZDRiYTY2MzI3N2Y4ZmJjMjczNDdlZGRkODJmMmYyMzdhODAyMmIzYyBwM3lrCis1NTE2NyBjMTA3NWYwNjY1MGE3NjFlYjUyOWYwYzg4M2MyMDIzMjk3NmEzODU0IHAzeWsKKzU1MTY4IDVkMDk2OTE2N2Y2ZGI3NmQ3MWYwMzFkYjdiOTAxYjYzODNkYWQ1M2IgcmVsZWFzZTI1LW1haW50Cis1NTE2OSA1NDE3OTUzOGEzODc3MjU1ZGM2NWE4YWY1YWY4YWI2NWUyZTk1NGVmIGxlZ2FjeS10cnVuaworNTUxNzAgNDQzMTAyYmY1ODk1MDU0N2FiODdiYWJkZWE3NTVlMDljOGM4NmI5YyBweTNrLXN0cnVuaQorNTUxNzEgNDExMDI3M2EyNjExMDlmMjQ2NjcwOThjMDc3ODRhMzljNTMyNTgzMCBwM3lrCis1NTE3MyBiZTFlNzA4ZDVkM2RmMTViOGYzYmZmMDE5ODFjZmM1ZjQ4ZTExMGU1IHJlbGVhc2UyNS1tYWludAorNTUxNzQgYTUyMzRmM2M3NTUxMWVkMmJjMGRlNDJlOGNmZWMyYjM2MzllYWE0YiByZWxlYXNlMjUtbWFpbnQKKzU1MTc1IDg0M2QwY2NiMDA5NGRmNzhjZTcyNDNiMTkzN2E2NjhlYWEzNDZmMzggcmVsZWFzZTI1LW1haW50Cis1NTE3NyBmZGZkZWUxOTFhNjEyYjk0YjMzMTI0YTY0MTllYzMxMzA3NDY0NjNmIHJlbGVhc2UyNS1tYWludAorNTUxNzggMjA1ODcxYzk3MTVkYjYzYzExN2ViY2QwY2Q5NGFmZDhkZDM0OWFjNiByZWxlYXNlMjUtbWFpbnQKKzU1MTc5IGExNTNmMjE0ZmExYjg0MDhkNTQ1MzY5ZWU1NDBmNWRlZDk3MWM2ODcgcHkzay1zdHJ1bmkKKzU1MTgwIGE2ZWI2YWNmZTA0YWMyYmYzMDQ0Mjg1YWVmNTUyYzBiN2RmZTRiZWEgcHkzay1zdHJ1bmkKKzU1MTgxIGM2NTY4NTUwYjFjNjEwZGM0YjVmODc3ZTU3ZDQ4YTJiZWIwNmIwYzEgcHkzay1zdHJ1bmkKKzU1MTgyIDhlN2M2MGIxMzU2YjczODNmYjNjYzk4NDk4NDMwMWFkNDM2YzRlODkgcDN5aworNTUxODQgOWNjNGMzZjBiNTgwNzVhNDM4M2UyMDQyZWMzZjgwNmJiZWViN2RlNSBweTNrLXN0cnVuaQorNTUxODUgNzA0NzJjMTU3YmI5YzAwNTM4NGU3OGRiOTVkYjY2YjViMmNlN2MyMiBweTNrLXN0cnVuaQorNTUxODYgOGY3N2Y5NjA3MTEzODgwNWMyZmNjZDBmYjMxZjYyMDliNWZhNDk1NCBwM3lrCis1NTE4NyA2YTAxNmYzZTAwNTE2NjdjM2UzMjQ1ZjFlZjc4MWQ5ZmE4YWM1Nzg1IHB5M2stc3RydW5pCis1NTE4OCBjODQwMDA5NmQyZDcxYzhmNTM3YmQxYzhmZGQwZWZmODVjN2ZmNzk4IHB5M2stc3RydW5pCis1NTE4OSBiYzZhZDYzY2Q1ZjFmNmUwODc5YjNkMmU4MGVlN2EwY2Q0Mzg3NGFhIHB5M2stc3RydW5pCis1NTE5MSAyZDllNThjNWFkMzQzZDQ0MTQ0OGI0NzEzOTA0MWQ0ZTY2YzRmMGJmIHB5M2stc3RydW5pCis1NTE5MyAyM2E4YjNkZmJlOTUzNzEwZmRjYzY3ZjA3ZTA4ZDExZDc1OWExZmVjIHB5M2stc3RydW5pCis1NTE5NCA0NGViYWU0ZjYxYzRhMmIwMDBlYzUzZTkyNDk4NTczZjQ4M2FkZmFhIHB5M2stc3RydW5pCis1NTE5NSAwNTBjOThjZDQxYzRmNzRhY2QyY2U5M2MxYjNhMDc4YzNmOGU5ZDZhIHB5M2stc3RydW5pCis1NTE5NiA1MjUzMzM3MGYxYWQ0MDNjMjMzNjYxZjJmYWIwMDUyMzY0NTlhM2MxIHB5M2stc3RydW5pCis1NTE5NyAzNzBiOTE1MzNjNTNkOGMwMDg1OTQ1OGUzODU5ZTljZjRkOTZlZDk1IGxlZ2FjeS10cnVuaworNTUxOTggZjBkYTFiN2I4ZTVhMmFlNDlkZGIzMjlhZWM3YjgxZWFmNjlmMDNkOCBsZWdhY3ktdHJ1bmsKKzU1MTk5IDc2ZTYzZTAzMzM1NjA1ZGM2M2FkOTI0YjhlNTllY2U2OTUxNmZhYzIgcmVsZWFzZTI1LW1haW50Cis1NTIwMCA1YzcyODUzNDk3MGMxZTI2MmE3OGRjMGVjNDgwNDg0MDljNTRiYjcwIHJlbGVhc2UyNS1tYWludAorNTUyMDEgN2ZlNmFmY2JkM2YyYTZhNjc2ZDkwMjI4ODY2Y2NjYjE4ZjM4MzE4MCBweTNrLXN0cnVuaQorNTUyMDIgNjUwZmY4ZDdjYzM4MGFhMTQ1ZWRmNjhmYWRmZmUxNmViZTYxZDY1ZiBweTNrLXN0cnVuaQorNTUyMDMgM2E0ZjA2YmMyNTRiYjVlZGRiMzg4NmJlNmRkMTUxNWFkMzk3ZDYzNCBweTNrLXN0cnVuaQorNTUyMDQgMDJlNjk4OTg4NTIxYTk5NTc4NTdhZTM5MmYxMmQ1OGJhODY3NzU4ZiBwM3lrCis1NTIwNSA5YjE0YzFlNTg5MzYxYmNhM2Y3YzJjZTc5NDY5YTk0YWUxZTIwZGVjIGxlZ2FjeS10cnVuaworNTUyMDYgZGQyZDQwN2RjZmQwYzQ3ZDFlMWEwMjIwYWU1OWU4NWM0MzE4ZmE0YiByZWxlYXNlMjUtbWFpbnQKKzU1MjA3IDQ3NWM3YzU0MzdmYzYyYjgzZDBkNzBlOTgzNjg1MGJmNWY2ODFiM2EgcHkzay1zdHJ1bmkKKzU1MjA4IGEzNjNjZWEzMmI5YmFhYTAyYjBmYzM4YjE0M2EyNTUzZjkyNWFjYWMgcHkzay1zdHJ1bmkKKzU1MjA5IGEzMjQ4ZmVmYzBkYzhiNmFlZTA1NmM4NTUyNDYyMzRlMDkzNGQ1NzggcHkzay1zdHJ1bmkKKzU1MjEwIDg1ZDUxY2I4YWU1ZWQ4NTI3ZDYzNTg2ZTE3OTgzOTQzMDI5YWYxODAgcHkzay1zdHJ1bmkKKzU1MjExIDRhOTUzM2U5MzY1ZTBkOTc4MTY3NDEyOTE4MzUwY2U3NzQwNDhjZGIgcHkzay1zdHJ1bmkKKzU1MjEyIGIxYmJlODAxMTE1Mjg5M2NjYzUxOGQ2NzY4NDRlZGMyNTExNWJiNmUgcHkzay1zdHJ1bmkKKzU1MjEzIGQxMjgxMWRlY2Y5NGQzN2Q5OWRlZGVlNjIxODQ5MDZhNzc5MzUxNDYgcHkzay1zdHJ1bmkKKzU1MjE0IDY4OGUyYmMyMDgwMjYzOGFlZDU4ODM1ZWJlY2I4MTdhMTQ5MDE2OGQgcHkzay1zdHJ1bmkKKzU1MjE1IDdhOTZjODY0MDU3NTFiZDllYzk5OGQ3ZWZlZjAyY2NiNWQ3ZTBjOTQgcHkzay1zdHJ1bmkKKzU1MjE2IGRkM2FjMWNkMWM5MTk2ZjMyZDEyNmFiMDMzOGVhMmMxYWExMGUxYjUgcHkzay1zdHJ1bmkKKzU1MjE3IDVmMjAyODZiMGRhOTkzNjI5OGIxNjE2YjhlZDRiNTU0OTMxYzI5MDMgcHkzay1zdHJ1bmkKKzU1MjE4IDI0OGRmYzFiZDQ0YzAyNWJhYzkwMmJmZDczZTEwZTEyOTkyNTE4ZTUgcHkzay1zdHJ1bmkKKzU1MjE5IDI5NzczNGY4YTYyN2FjZGY2ZWJhZDg1NmYwYjU1YTNkZDI0ZWNhY2QgcHkzay1zdHJ1bmkKKzU1MjIwIDkxNWQ1MjQ1NWZmYzRiZmVmYzIyYjZkMzFlN2U5MzYwNDQ5ODc5MTEgcHkzay1zdHJ1bmkKKzU1MjIxIGM0YTk5OTNmMmNlNmNlYWEyMDk3ZjI4NjVkYWE3ZDViOTIxYjYwNDQgcDN5aworNTUyMjIgOTkxNDQ2ZmY2YjE1YzA4YjBkZjJmY2NjNGY0YTI0ZDczYTFlZTc2MiByZWxlYXNlMjUtbWFpbnQKKzU1MjIzIDc3NWQ0NGE1NDM5OTU1MGJkNTkxZTZhMTFjMmE1NDEzNTEzYzEyMDUgcmVsZWFzZTI1LW1haW50Cis1NTIyNCA5ODcwOTE4OWQ5ZTFjMDBhYzk0ZTYxOWFlMGJmOThmNTk1MWMwNmU2IHB5M2stc3RydW5pCis1NTIyNSAxMDQwNTY4ZjkwMmNhMmIxYjg1YWFhMzZkZWZkNzk4NTk3YTUxZjRmIHB5M2stc3RydW5pCis1NTIyNiAxZDMzNDkxMmExMDQwZDlmZTg1NGZlNDgxMDhjMDU1ZWUxNDM2OTAxIHB5M2stc3RydW5pCis1NTIyNyA3NTk0NzA5ZTYzMWIzMzM3ZWU0YmM2ZmVmZjY0NzdlMjQ4NTNhYzdiIGxlZ2FjeS10cnVuaworNTUyMjggOGE4YmYyYzA3NGUwNGYwYmIzMjQ0NGVlNDg4YmIyNTBiMzVlODU1YyBwM3lrCis1NTIyOSBjNWViZjljMjE5YmU0NjUyMDYwYzRmYTExMDI2MmY3YjdiYjAyYTFhIHB5M2stc3RydW5pCis1NTIzMCBmYjcwNWYxOGJmM2Q3NjY1ZjY2OGM2MGIzYjg2N2Y1ZTgxMDczNWViIHB5M2stc3RydW5pCis1NTIzMSBiYWI4YTljN2Y0OWViNjIwMTcyZmJjZTQyNzU4YzI3ODVmNzIwNjNhIHB5M2stc3RydW5pCis1NTIzOCBhNmU0ZjJjYmVmYTliZDBiMzUxYWVmNGM2MzM5YjEzZTU4MzI3YzBjIHAzeWsKKzU1MjQxIDQzNjdiN2FmNzUzMTliZDY1ZjdlNzgxYjllOTlmZWI0MDcwZTI2N2IgbGVnYWN5LXRydW5rCis1NTI0MiA4ZWRkNzQ2MjkxZmVmZGVlNmZkZWMyZDgyNzc1NmZlMGQxM2RhNGI5IGxlZ2FjeS10cnVuaworNTUyNDMgMDJkMjQ4OGZlYzYwY2ExNWNiOWE2NWJmMmM0NWU3YzY3NmU1MjQ4MCByZWxlYXNlMjUtbWFpbnQKKzU1MjQ0IGNmOWRkN2YwZjRhMjBmMDI2YTI5NDdlMGJkMjUzOTQwNzhlZGMxMWMgbGVnYWN5LXRydW5rCis1NTI0NSA2YzRhYTQ2MTFjODgxZGM2MmNlNWE5YzRkNjc4ZTU4MjExMDE1MDExIGxlZ2FjeS10cnVuaworNTUyNDYgY2JhOGM2YTVlY2YwMjYxNjc0Njk3YzdmNWRmNWU0NGYzMTgwMDAzNiBwM3lrCis1NTI0NyBjZjc5ZmVlOGI3MWExMGE4ZDY5OWE1ZTMyMzA3MmQ2NWRjODUyZDliIGxlZ2FjeS10cnVuaworNTUyNDggMDExMjc4MjFhZjc1NjE0ZWE1NzNhNzc5ZmYwNjBmZTcxYjc1NWQzOCBwM3lrCis1NTI0OSBkMjMxNjg1ZTllYTdkNTRhMmRjNGY4YmZkNmMzZjg0Yjg0ZTdhOTMyIHAzeWsKKzU1MjUwIGYyMjNhNDRkYjEzYTY4ODM3ZmU4ZmYwZTEwYTBkNTBiNzY2ZTg0NjAgcDN5aworNTUyNTEgOWI5YzUzYzFhYTVjMDk1ZjA5ZmI5YmJhMzg2ZDVhMTVlNTNiMzE4ZCBwM3lrCis1NTI1MiBkYzM5YmZjNWM3NGU2MjJiYzU0OGIyYmQ1ZWY0NDVlMWJmODUwMWMwIHAzeWsKKzU1MjUzIDgxZDlmNTI3MGU4NzUyZDQ3YzFkYWUwM2M0NTY1MDQyNjI2ZjE3NjAgbGVnYWN5LXRydW5rCis1NTI1NCAzZWVlMDZjYjE1YTNlZTFiZWUzNDQzMWYxOWEwNDVmYjQ5NzIyYzIxIHAzeWsKKzU1MjU1IDdkOThjMTJhMzQ0ZGJiMDMwYzQ4MTQ5NjcyNmM4NTdhOGZiMDJjOGYgcDN5aworNTUyNTYgZDkxY2M4ZDQ5Mjk0ZThhZjQyZTEzNDhiYzFiZTBlM2FiMWYxMzc2NiBweTNrLXN0cnVuaQorNTUyNTcgNDU0OGNlYjMxYzk0OTM5OTE1ZWY3Y2I0ZjE0ZGNjYjA3ZWEwOGUzYiByZWxlYXNlMjUtbWFpbnQKKzU1MjU4IGNkMjQwM2QzNzBlMGY2N2M0MWI2OWZlMjdhMDFmMzc5NTNiYjg5NmMgbGVnYWN5LXRydW5rCis1NTI1OSBiOGZhNGFjNmM1ZjA3YzYwOWRlZjczZjZjODRiM2Y0ODQ3ZDI3NjU1IGxlZ2FjeS10cnVuaworNTUyNjAgM2ZhNDBiNTliOWI2OGUyZmViYmQwNWJlNDcyZjJhNDQ3ZGNlMThmZCByZWxlYXNlMjUtbWFpbnQKKzU1MjYxIDUxYzc0MTIyODk1ODNmZmVhMTQ1MTFhMzI5YTYxOWM0Mzk4NWU1NTcgcDN5aworNTUyNjIgYmNmNTdhMTUzYjExYTU3MGZlMGU1NDU1M2RiZTIwNzJiYTE2YTgwMiBwM3lrCis1NTI2NCBkN2M3ZmU5YjZlOTcyZTkyNTg2NjJhM2RkNjQyZDdkYWNkMmRiZjZkIHAzeWsKKzU1MjY1IDkxNTM5MmQ1ZjBiODY0NmIxNmQ1MTQ0YmI5ZGU3ZDM3NmU5OGNkNTMgcDN5aworNTUyNjYgMzI2NzNiODg4YzI0NGNlMThjY2Y0MWVjZTBhNTk4MDExNTlkMTc4NiBwM3lrCis1NTI2NyA1YTJmNTkyMGNmNzUwZmNkNThjZGRiZjI1OTQ4ZTgwMjU5YTMyOTM2IHAzeWsKKzU1MjY4IDdkNDkwMzhlOTljOTkxNDgxMmQ5Y2U0NDU2OGVmYmYyYjYwMzlhYjkgcHkzay1zdHJ1bmkKKzU1MjY5IGVlNDdmZDVjMGU1ZDc0NjdmZWIyOGVlZDE2MTBmODI1MDBlYzIzY2MgcDN5aworNTUyNzAgZTE2YzhlNWM1Y2E0YzExMWI2NWY5MWFlOWEzODRhOWQ5NzdmMGMyYyBweTNrLXN0cnVuaQorNTUyNzEgMjcxOWUxN2M5MjhkMzY2ODA4Yjk0NGIwY2NjZGU5ZDFlMjMwOWVmMCBwM3lrCis1NTI3MiBkZGM0YmUyNzg2ZmQyNTgzNWRmOGU2NmUzMjQyM2JhODM4YmQ5MGJiIHB5M2stc3RydW5pCis1NTI3MyAyMGI4YjI5NTkzYzBkOThkNGM4MTlmZjRkOGZkMmMxZmQ1MGViMWQxIGxlZ2FjeS10cnVuaworNTUyNzUgZTA2ZTE5NmEwNWNmZjM4MWJjNDZlYzM2NjA1Mjg3NDJiN2I0ZGU3NyBweTNrLXN0cnVuaQorNTUyODAgOTcwNmYzYjQ5MDY3MGYzMTg5NzBjNzZhZTE1MWQ1YTg3ZDc1MWMxZiBwM3lrCis1NTI4MiA3OTkzZjIzYWQ0NmNhNTRmMTBmYjlhYzU5NTAxYzNjZGQ3NjU4MDhlIHB5M2stc3RydW5pCis1NTI4MyBkMjM3ZjQ3ZjI5M2YyOWI5YWE2MDUwZmIxODBhNjFhMjc2ZGY2YmM1IHB5M2stc3RydW5pCis1NTI4NCA5MTcwNDBkZmVjNTgzOGM3ZmQxMTNlNzFkMTFjOWYxYjZkODA2YmU3IHB5M2stc3RydW5pCis1NTI4NSAyNjE3MTMzYzdhZmEyNzM4MzQ4ODI2N2UxOGZmMzE3MjIwMTQ3NjQ0IHB5M2stc3RydW5pCis1NTI4NiA2MDI2YjhhMjZjMDVmZjRkNDg2YzRlMjMyNWU4NTE4MDhlYTBmY2FiIHB5M2stc3RydW5pCis1NTI4NyA0ODJiNTk5MGQyZmIzZGY2ODY3NDU0M2JkZmZmYTViMGIyMTE1ZmEzIGxlZ2FjeS10cnVuaworNTUyODggYzE3ZDc2MGNiNmQwNmYwOTYwYzEzYmRkZmEwYmY4YmFhMmM4ZjJhZiByZWxlYXNlMjUtbWFpbnQKKzU1MjkwIDdiYmI5N2UxNGFkNmVkMTJlN2YxYzRmYjY2MzAxMDIxNzg2OGU3ODggbGVnYWN5LXRydW5rCis1NTI5NyBhNDg5M2M0ODAyNjQ4Yjc3YWMyNjllNTVjZjAzYzVhNzEyYjkzYzQzIGxlZ2FjeS10cnVuaworNTUyOTggOTJlYjVhZTRjMThmMTUxYTU4OTU2YWVjZTI3M2RlNGRhODAwM2VlZSBsZWdhY3ktdHJ1bmsKKzU1Mjk5IGExNjBiNDM3ZmYzNWZlMTY4MjRmYWJiYjY3ZTJmY2Q0ZjU1NzY2MmUgbGVnYWN5LXRydW5rCis1NTMwMSBiNDYwMDg0NDc5OTMzMzkxZjgxOTg0NTlmYWQzZmUzNGIwZGExNTYxIHAzeWsKKzU1MzAzIGI3ZTkxMzZkNGM4MzhmOGVjZmJhN2FlYjQ2MzJlZDk3OGYzOTBlYzggcDN5aworNTUzMDUgN2QyNGE2OGQwYTFjNjE2MzYyMmNmNDc0NjBmMDQ0NjE3Yjg0Mzc1ZCBwM3lrCis1NTMwNiA2NTY2NmVjODNjMmMwMGM3MTNiMjA5MTI3ZWVlOGNkZDhiZDk1MTJmIHAzeWsKKzU1MzA3IGFhZTU0OWViYTcwNzVmNTQ2ZTdjOGUyMTFlNzZkZmMwZmE2MjMzYzggcDN5aworNTUzMjAgYzRkNTdkYzYwYjAxOWI1ZTNlOGZiMjM1YzMxNjVjYTNjZmU3NjZjYiBsZWdhY3ktdHJ1bmsKKzU1MzIyIDE1MjNhYTgyNzE0NjVlOWYyNjU5Y2ViNWQ2YThjOTZkNjY1MDA0MjQgcDN5aworNTUzMjUgZjYwYzg3N2Q1MmM4YTA5N2E1ZDgxMTNmOWRiM2NmZWEzZTJjYjQ2NCBweTNrLXN0cnVuaQorNTUzMjYgYzdmNTQ2NjBlYTE3ZWZhZmZiY2RjYzA5MjQwZmZhNmQ2Yzg3NTAxYiBwM3lrCis1NTMyNyBkNmU2Zjk4MmM2MzdiNjk4MDdkMzg3NDQxZWU1NjE3Mzk5ZmM4Njc3IHAzeWsKKzU1MzI4IDAwYzAyYzQ0ODhjZWY5MTFlMGUyMTM0MDViOGJhZTk0ZTc0NjNmYmEgcHkzay1zdHJ1bmkKKzU1MzI5IGYzMjU2YzhjNzJjYTgxMzBkZTMxYTZjODk3Y2Y1MjU0NDBmY2RlZTMgcDN5aworNTUzMzEgYmM0M2NiMjMxNjQwNDA4OTIzMmFjZDZkYjBiYWU2MzIwMWIyODUxOSBwM3lrCis1NTMzMiA1NTg1MThmZjlkOTFhYjYyNDI2ZDBjZTc2NGFiZDJlMmM0NzI2ZGI3IHAzeWsKKzU1MzMzIDZkZWI0YmIxMDA1OWY5MWNjY2I4YmVmMWM1MjZmMmEwMWM2NmMyNWQgcDN5aworNTUzMzQgMWRiMzE5NDFlMDEzOTFlNzk2ZDg3MjM4ZWRiZjc3MTRmZGI4ZDE3NiBwM3lrCis1NTMzNSBiOWM3MjRkZDcyYzgxOGYxYTFkMzcyY2U1ZjkwNGEwMWYzNWNhNGJhIHAzeWsKKzU1MzM2IGQ4MTNmYzM2Yjk3MDFmNTI0YjRlN2JlZTAyNGE3M2IxMjNlMWUyYmIgcDN5aworNTUzMzcgMWM5YTI5OTY1NmJlMzcxYTFhMjk3Y2Y1ZWIwNjFkOGU3YWVlNzE2NSBwM3lrCis1NTM0MyA5YWQ4NDA3MGIyMmQ4NGYxNzVhM2I4OTAzNjdjZjkwNjkyYjY0MThjIHB5M2stc3RydW5pCis1NTM0NyA2Y2EzZDVmM2QxYmUxMzFmZjY2OTdhNzlkZjBlODRiY2E2YzQ5M2FlIHB5M2stc3RydW5pCis1NTM0OCAzZTFlYjdhZjRlYTBkMjFlN2YxZTkzMDVkZjE3NTBmMTc3ZDk1NmNmIGxlZ2FjeS10cnVuaworNTUzNDkgMmI3MTEyYTYzNTcxYjJlZTBjNDk0Nzg0MTJhM2I4ODg4N2ZjMzE4ZSByZWxlYXNlMjUtbWFpbnQKKzU1MzUwIDI2MzQ5YTY0ZWY3MDE1YmMyMGI5OTMyMjlmMzUwYzRmYmUxZjdkODAgcmVsZWFzZTI0LW1haW50Cis1NTM1MSBkM2NkMjkyMGJlYjY4N2JmMjE3MWVmNzk2MTM4MGQzMTZiY2QyMGQ4IHB5M2stc3RydW5pCis1NTM1MiBjOWM1MmI4N2MzMGI1ZmIzM2FjM2FmOTQ5ZmMwM2Q5Njg0MTFkMDA3IHB5M2stc3RydW5pCis1NTM1MyBhOGI3YTgxNTk5ZDA0OGFhYTE0MjRkNjU0NTE0YjNjMmUwMDM0MzE4IHB5M2stc3RydW5pCis1NTM1NCBkMTE0NmQ0ZGI1NDk0Njg0NGY0OTk4YWY4YTA4OTJiOTY2NmI4ODUwIHB5M2stc3RydW5pCis1NTM1NSAyMDI4NmVjYTQ3NDMxNWE5NjNiMWY2MTIyNDE5NDU2MzdhZTU1NTFkIHB5M2stc3RydW5pCis1NTM1NiA0MzBiNmVkODAxNDhlOWIwMDkzZTlkMGNjOTdiYjkyMzE5ZjkyYmU4IHB5M2stc3RydW5pCis1NTM1NyA2ZWE5MzcwMGQ3NzkyMDcwNmZjYTU0ZjBiMmQ3M2VjNjA5YzFmNmIzIHB5M2stc3RydW5pCis1NTM1OCAyOTY4NTk3MTE4YzEzOWM4YmI3YjM3ZWQ3M2IwM2UyM2M4ODRkMzJhIHB5M2stc3RydW5pCis1NTM1OSAyOTM3ZjUzNzEzMmVhM2ZmZTQzNWZlOTUzNGQ2NjAzZDgwNGZjZDNlIHB5M2stc3RydW5pCis1NTM2MCBjN2IxNTVhZDM3OTExOTA0ZTUxYzg1ZmVmNGM4MmExMDY3ODFjYmQwIHAzeWsKKzU1MzYxIDM3ODdhM2ZiYzQ1OGQ4ZGJiOWM5N2FjYjJiZjI3OWZhOTFkN2Q1OWEgcDN5aworNTUzNjMgNzhkNzY0MzVkYTlhYzljZTNmMmEwMGVjNWVlNzk0ODlhNjQ2NmJjOCBweTNrLXN0cnVuaQorNTUzNjQgYmJiMDk5ZDRlYzgwMjRiZjgwMGUwMmMwNjM1ZjI4Yzc5ZDE3YjE4NSBweTNrLXN0cnVuaQorNTUzNjcgMDUyZDU1ZThhZjc3MzBhNzRmMjUwODJhNzE0M2QxNzQzODYyMjhmYSBwM3lrCis1NTM2OSA5MmY3MTlmYTliMTZlOTBjYWJiOTU1YTQwYzE1NjVkNDQyYTY3MDU5IHAzeWsKKzU1MzcwIDRlNDFiNzJkYTBmYzY2MzcyNDFmN2MzZWEzNDRiN2QxMWYzMGNiZjAgcDN5aworNTUzNzIgMGFkNjk1MWMxOGY3YzU3ODJiY2M2MjdkZTRiNjRmOWM2OTdmOGUzMyBsZWdhY3ktdHJ1bmsKKzU1MzczIDY5ZTFmN2VjMGNlOTE2ZjFmNmUyNTEzOTRjNmI2MWY1YmMxZmYxOWQgcmVsZWFzZTI1LW1haW50Cis1NTM3NCBkMGMwNzY2Njk3MzJmZDJmODRmMGFjODM4MzEzZDAyNzI4NWI3YzQyIHAzeWsKKzU1Mzc3IDA0MjRhOWZhNGIwYjRkNGNmYzM2OGU4YjA2NzI3ZmUxZDExZWJkZjMgbGVnYWN5LXRydW5rCis1NTM3OSBiMDE1NDZmMzZhMjI2MzA0YzkxOTU4M2YzY2I3NzdjMjZmOGJmMTNjIHAzeWsKKzU1MzgwIDA3ZjA4MzIyOTdiMWU3MmU1ZmZlNmFlNjQ2OTg0ZWY5NGUxOTExOWMgbGVnYWN5LXRydW5rCis1NTM4MSBjY2E5ZTMyZWU1NTAxYmQ4ZjhkZDNkYzFhYzM1NmY2YWYwMjFmMDYwIHB5M2stc3RydW5pCis1NTM4MiBkYzZiNWYzNTVkNWE4Y2JiMTVmNWMyM2I3YTU0MGZhMjBhNjhiMmEwIHB5M2stc3RydW5pCis1NTM4MyA5YjgyOTNiZjhmZWM4YmZmOWQzOTg5NjgzMTc3MjdiZGQ2MzczYmM2IGxlZ2FjeS10cnVuaworNTUzODQgNzU4MWVjMTYyMzBlZjE4MzE4M2FlYmFhZWMzZGE2NmE3NzkyZjk4NiByZWxlYXNlMjUtbWFpbnQKKzU1Mzg1IDYxYzRjMjIyYTMyNzBkODMxMjVkY2EyNTk0NTAwNmViMzNkYjdiYTggYmNhbm5vbi1vYmpjYXAKKzU1Mzg2IDZmMTI5M2FiM2FjNDhlODM2NmVhNGZlZjIwNDVkYWYxZTYzNTRhYWQgbGVnYWN5LXRydW5rCis1NTM4NyA2OTNiOGQ5MTQ3NzE3MDgwOWFlOTJiMzU0ZDhjZjQ1OWE0MDRmOGQxIHJlbGVhc2UyNS1tYWludAorNTUzODggMzg4ZTRmMjFlNzQ5ZTI3ZGMwM2Y4YTA0NDc1ZWNlNjQyZjg4Nzk3NCBwM3lrCis1NTM4OSAyZWNjMjk2NDQzYzMyYzNjMTEyZjM2YzcxMTIwYTA0NGMyYTI2Yjc2IGxlZ2FjeS10cnVuaworNTUzOTQgNzU2ZTFkNDA0Y2I4NjFiOWUxZGFhMGY0MzAwZDI2ODk0ZDI4ZmNhZSBsZWdhY3ktdHJ1bmsKKzU1Mzk1IGUzZWE4ODFiMTRmZWQyYjUzYjY4NDA5YTQ2MjMwY2RkZWFjOTdiYmUgbGVnYWN5LXRydW5rCis1NTM5NiA3OWRkOTA3ODcwOTFkZmUzZDFlMGM2NDY1MzcxYWRkODMyYmRmZTA0IGxlZ2FjeS10cnVuaworNTUzOTcgY2M2ZjQ3ZjFlMTNhNDQ2ZGQ1MzI3MjhmNzY1MTIxYjNlYmI5OTIxYyBsZWdhY3ktdHJ1bmsKKzU1Mzk4IDZmMGRiYTgwNzczNGFmYzZhZjkwZjQ3MjNhMWUwMDA0ZjhlODg3ZGEgbGVnYWN5LXRydW5rCis1NTQwNiBjMTJhMzA5Nzg3ZDNjYzhmMzk0MzA1YjJiZDVjZjVlM2Q2Y2Y2YjIzIHAzeWsKKzU1NDA3IGIwODVlYjY2YjdmNmRhNmUyNDM3MjNhYmQxMWJhYTMxOTIwMzZjNjAgcHkzay1zdHJ1bmkKKzU1NDA5IDQxYTE4MzBlZWUxNjUxOGRjMzI2NjM5ODAyY2Y1NzFmNjlmNzEyMWQgcHkzay1zdHJ1bmkKKzU1NDEwIGVkYTllNjBjOTc0NTQ3OGJjNjlmMTVjZDE4NWFmYzY0YmU0NWUyMzEgcHkzay1zdHJ1bmkKKzU1NDExIDRkMTVhZDQxNjUxZTRjMGY2OGVjZWQzZmRjNThlZjlhMTM0NjJiNzYgcmVsZWFzZTI1LW1haW50Cis1NTQxMiAxNTExODljNzJhMzcyYjlhMjM0OGZhODdlZDRmM2JlOWEwY2FlMjEyIGxlZ2FjeS10cnVuaworNTU0MTMgYTY3OTZhMjQ0ODFjZTUwMTMzYjdhMzBkYjQ3ZTk3NDM5MmUxMDhhZCBwM3lrCis1NTQxNCA2ODliYWUwNzY3ZTIwYzFlZGJmNmJmN2Y1MDZiMjhmNjg2MzEzYmFjIGRlY2ltYWwtYnJhbmNoCis1NTQxNSBjMjQxMWJkYjYyODZjZmUxNjM2MTAwYzExYjA3ZDgxNzliNTIyOGExIHB5M2stc3RydW5pCis1NTQxNiA2MDk0NWJkYjFiNzU0ODU2YTE5NDczYzEyNDRmOWNkYjllMTdiMmFmIHB5M2stc3RydW5pCis1NTQxNyBiMGI1MTRiYWRmMGIwYmE5ZmM5ZWNhNWNhNzZkN2MxZWU1NzYxNDJhIHB5M2stc3RydW5pCis1NTQyMCAxM2E2YzZiZWY2MDk3MDFhNzc1YjJhNjYzNTY2M2U1OTE3ZmZlZGJlIHB5M2stc3RydW5pCis1NTQyMSAwZWFkMTA2NGVhZDAwMmQ3ZmRlZjk4YWJjNDMzODYxYjRkYzQ4YjMyIHB5M2stc3RydW5pCis1NTQyMiBlZGI0YzkwMjhiZTAwMmEzZWFlMDQ0NDVhZDAyMjM1Zjk3Y2VhMDVhIHB5M2stc3RydW5pCis1NTQyMyAxYTljZDc2MzY0ZTNkNmEyM2NkZmYyMjY5YWYzYTU0ZjM3MzBlNzJkIHB5M2stc3RydW5pCis1NTQyNSA1ZDlkZDFiOGQ5MDhiNzhjYzliYjQyMDg3MjI5OGY1ZDNjZGNmMTE0IHJlbGVhc2UyNS1tYWludAorNTU0MjYgNDdiMTU5ZDY0MGE0NTRkZWNmNmEzYjY0M2NmZGNmY2M2MzlhYmQyMCByZWxlYXNlMjUtbWFpbnQKKzU1NDI3IGY0M2U5ZDFmYWJhYThiNmZiZTQwNjU2NjI1NTgwNmM3Mzc4MDA0N2YgbGVnYWN5LXRydW5rCis1NTQyOCA4ZmU5OGY2MGViNmUzNzk3YzM1NGM0YjljZWQ3MzNkYzBiNjA0NzAyIHB5M2stc3RydW5pCis1NTQyOSAxNDFlMmFlZmZiYWE0M2ViMzhhYjE3MGRiZTM4ZGU4ZDRmZDA5NWI5IHB5M2stc3RydW5pCis1NTQzMCBjZTYwZjQ3YjE3YTI1NDFjOWI0YmQ4MmM4MDA5YTZkMmFiYjZjYWViIHAzeWsKKzU1NDMyIDY1YzNiNDMyZjUwMWI3ZmYzZGU2OTEzZjQyMzRkMWU5NDgyMjM1N2MgcDN5aworNTU0MzMgZDZhYTdlZGYyMTdhNjUyMGU2MjcxODA4MTY3YzgwODY2ZWFlZWZhMCBweTNrLXN0cnVuaQorNTU0MzQgNDdkYzcxNjA1MzQxZDNhOTdkZGRkMTY2ZjkzNmI5ZWI4MjRlN2JhYSBwM3lrCis1NTQzNSA4YWQxYzg4Y2UxYWM2Nzg0ZDc0N2FkYjhmYzFiNjkyMWQyOTMyMGMzIHB5M2stc3RydW5pCis1NTQzNiBiNTkyOTg1YTk1M2ZmOTBkZDc3ZjI3OTljMTIxZDU0OWJkZDY5OWMzIHB5M2stc3RydW5pCis1NTQzOCBiMjlkNzFkNDNjODA5MWYzMjUzMDFmNDFlZTM5ZjI4ZTlhMDkwYTIxIHB5M2stc3RydW5pCis1NTQ0MSA2NTFmYTJjOWMyYWJlNWYzNDNjMWFiZjdkYWJlZmVkNGQ2YWE5NGY4IHB5M2stc3RydW5pCis1NTQ0MyA2ZDhkNjYwNTAwMDNmMWY4ODNlZWQ5YzA2MmMzN2Y2MDYxYjBiNzk3IHB5M2stc3RydW5pCis1NTQ0NSAxMzY0MWFkYmE2ZWNjNjA0ZGY4MDdmYTE4ZDRmNTlhMWVjMmZjN2QxIHB5M2stc3RydW5pCis1NTQ0NiBmMTllNjMxYmUxMDFiN2FmODIyOGU0NzJiZTNhODhmZDg0NDI2ZmRhIGxlZ2FjeS10cnVuaworNTU0NDggNGEzYTYzNzY5ZDM0YTkzNDBkZGI5NTA3NDM4ODdhZjE1ZjkwM2U4OCBsZWdhY3ktdHJ1bmsKKzU1NDQ5IGQ0ZGI2MjZjMjI5MDc2NmI4ODYyYmQ1MGJkMWI2OTU3ZWE3ZDA2ZWUgbGVnYWN5LXRydW5rCis1NTQ1MCAzMTJjMTExOWRjMTQ2YTdhM2I2MWFmZmNiN2RlZDdkNTUxNmQ5ZDdmIGxlZ2FjeS10cnVuaworNTU0NTEgMjk5ODc4ZDYyZTJmNzllNjE4NGZkYTg0N2U1NWVhN2VlYzU2N2ViMCByZWxlYXNlMjUtbWFpbnQKKzU1NDUyIDBmOTNiNzAwYzRjOWYwMWYxMDVlZTUzOTcwYjJiNjhjMGM2NjcxYjIgbGVnYWN5LXRydW5rCis1NTQ1MyA1MTVlMjU2NGVjYTdmYTgxYTlmN2RmM2FkNDdiNmVjYzEyYzAyNTVkIGxlZ2FjeS10cnVuaworNTU0NTQgNGE2N2YxMDM4MzNlYjhjNTJmZjVkNjIyMjk5ZDc1YzVkYThjNjFlYiByZWxlYXNlMjUtbWFpbnQKKzU1NDU1IGYxNGE1YjAwNWExZTJjNGUzOGNkNWY2NTNiZGVjOWIyY2IzYTVjNGYgbGVnYWN5LXRydW5rCis1NTQ1NiBiZWU4ZDAxZWY0MmM3YjEyYWZhOTU5ODYyODI3NjUwY2M3ZGI4YTU5IHB5M2stc3RydW5pCis1NTQ1NyAxMzI2YjBiMmFmYTA5MTUzY2JjODllZjFiZTY0YTg4MDA4NjM0MzlkIHJlbGVhc2UyNS1tYWludAorNTU0NTggYjdmYjk0MmI0MDNlOWU5MWIyYWRiNTZhYmU4OTBmOTRjNTIyYjAzOSBsZWdhY3ktdHJ1bmsKKzU1NDYwIGMyZDMyYjVhZTkwYjNhMzEzZmQ4ZWM3NjczOGVkYWY2YzA0NzI4OTggcDN5aworNTU0NjMgZDFjMzhhZjA2NWJmMzljMTk0ODQ4MDc0NGVjNDMxMTA4NTFmNTZkMiBweTNrLXN0cnVuaQorNTU0NjQgZWNjNjg1OTI1YjUyZDNjMDQzNTk5NmZhYWFhZGIwMmRmNTIzZjI3YSBweTNrLXN0cnVuaQorNTU0NjUgNmQyNDZhYzYzMTk4MmRhNTlhYzJmMzUyNDhmYzllZWI3YTE3MjdiYiBsZWdhY3ktdHJ1bmsKKzU1NDY2IDAwNDEzZjcwY2U1YzNlYmM2OTYyNDQ0NjYzOTM2YTA0ZTI3OTJkMjYgcHkzay1zdHJ1bmkKKzU1NDY3IDc3OWEyMTA1Mzc3NzhkNTRkMDcyMDI1MWU1NzY0MmVlNDU1NmY3ZDAgcmVsZWFzZTI1LW1haW50Cis1NTQ2OCBjMDI4YjI3NzVhOWE0ZWZmYTVkYTA2NjNmOTJjMDJiZmFlZTliOGI3IGxlZ2FjeS10cnVuaworNTU0NjkgNWJlZjJjMjJiZjg1NzA2ZTJiNGFiNGMyMDgxMGNkNTJhZjQzOTQ4ZCBwM3lrCis1NTQ3MCAzMTAyOWY2ZWJjYTJhODdlZTMyZWM3NzhhZDhjMzkyMjQ5NWE2NWMwIGxlZ2FjeS10cnVuaworNTU0NzEgNjdjYjgxODM2MGYwZGM0NzBiNDQzMWE0Y2E5NzI2OTFkOTE2YTNhYSBsZWdhY3ktdHJ1bmsKKzU1NDcyIDYyY2YyY2I3NGUzNTFhNmMxN2ZhZjFjN2Y5MTNlZWVlMjNmNTczZDcgcDN5aworNTU0NzQgYzBlODlkMGVlMGU1YmE4MmJiZTk4Njc0NDhlYmZiOGJiNGIwYzgyZSBsZWdhY3ktdHJ1bmsKKzU1NDc2IDJjMDBhMTkxMDI3MWNiNTdkNDJlMWU1YzdkNzdlMDRkMWQ3ZWJlNjMgbGVnYWN5LXRydW5rCis1NTQ3NyBhNThiYTY3ZmFmMWFiZjM4OTRhYTM1NjMzNjI1OTY5ZTM4M2U2NTMxIGxlZ2FjeS10cnVuaworNTU0NzkgZTM1ZjFlZTIyYWI4ODkzMThjMDcyOGM3NGQ1MjhhNmJmZTVhOGVhYSBsZWdhY3ktdHJ1bmsKKzU1NDgxIGFjOGE2ZGVlZjk3NDBkOGQ1MmU0MjYzYTA2ZmZmYWI3MjZhZGU2ZTUgbGVnYWN5LXRydW5rCis1NTQ4MiAzNWUxOGEwZDEwZjI2YmNmNDAzNDgwMTMzYWY4ZWFlMDdjYWRiNjcyIGxlZ2FjeS10cnVuaworNTU0ODYgZDI0YzllNDMyZDUyNGZiMDJjOTFhYzhlZjg0NDVjM2JmNTQ2MmY3YSBwM3lrCis1NTQ4NyAyNjcxZTA2YmFhNGMwN2IzMTU5OTA0ZDVjNGZhM2U3YmU5NTZhNzQxIGxlZ2FjeS10cnVuaworNTU0ODggOTkzZjhhOWI4YWIzOTk3NDE4NWYzNWYyMzEwNTcxN2Q1MjIzMTNlZSBweTNrLXN0cnVuaQorNTU0ODkgOTQ1N2I5ZjViZGQxMDkzMmZiMmMxMmJjMjg2OGI2YWQ2MzdmM2VmYiBsZWdhY3ktdHJ1bmsKKzU1NDkwIDgxYjE3OGYwYjFlZjM3NzhlZGI1YTVlZmMxYjdiNjM1NzNjZDllNjIgbGVnYWN5LXRydW5rCis1NTQ5MSAzZDNiZjI3NDA5ZTYyMDJiZjhiNDc1YTAwYWFmYmUyMWQ5NDlkMmY4IHB5M2stc3RydW5pCis1NTQ5MiAxNDQ2YjlmY2EwMWRiZDM2NGViOWZjMDgzZjIwY2M1YjRlOWZmN2Q2IHB5M2stc3RydW5pCis1NTQ5MyBlYmIwYjZkNmRhZGEyODAyMWI4YWFlZGJmN2I5NTE4NjI1ZGI2MWIyIHB5M2stc3RydW5pCis1NTQ5NCBlZTI5NTE0NDRhODk2NDY0MTZmYzAzMDhjZTRjM2U5MDY4MmU4ZjYzIHB5M2stc3RydW5pCis1NTQ5NSBhNDA1NzMyYTI2MmRjNzRmMmZiNTBmNmQ3YzMxNTU1YzZjMTY1ZjhhIGxlZ2FjeS10cnVuaworNTU0OTYgZDdmNmQ2ZjQ1NjJlZTYxZTE2ZjA3ZGI2Y2Y1YzE1NGFkYTM3M2RlNiBweTNrLXN0cnVuaQorNTU0OTcgOGUwNjJlNTcyZWE0ZDZhZTYxNTc3OWZjY2NmMjI5ZTg2MDllNzY4MiBweTNrLXN0cnVuaQorNTU0OTggZjk5NDliNjNlYWIzYTEyNjIxOThmYTc1NTdkODJiYmMzYTQ2NDE0YyBweTNrLXN0cnVuaQorNTU0OTkgZDA3ZDM0YjUzZGI1ODA4YzQ4NDg5ODYxMTJjOGYzMGEzYzA1MGNhYSBweTNrLXN0cnVuaQorNTU1MDAgNTBkYWZhMjJiOGE0ZTdiNmI0MDJhOGYzNzc0YmMyYjVlZWNkZTU4YyBweTNrLXN0cnVuaQorNTU1MDIgN2M5ZGRkNGEwODE0NmY2ZGMzYzVjYzdkMDM3NTdjODU3MjhkNDdhMSBsZWdhY3ktdHJ1bmsKKzU1NTAzIDNkMDU4NTg3NjkxZGQ0OWI4YWI4NTRlOGI5NTIwODM5YWM3YTM4NTMgcmVsZWFzZTI1LW1haW50Cis1NTUwNCBhOTIyN2Q3YTM0ZmE4ZTcxNDA3NmE3YjcyYWYxYTlkN2ZjMDM2MWZiIGxlZ2FjeS10cnVuaworNTU1MDUgZWM4M2QyMTA2NWFhMzZmYjFlYmI0MTNkZTlhNTdmMDY4ZGMwZGUxNSBsZWdhY3ktdHJ1bmsKKzU1NTA2IGVhN2FlODkxZjkzODk0Y2FlMGUzYmUxMWRmODY4MzMxZTBhYmNkZjQgcDN5aworNTU1MDcgYzg5NzU1OWE4OWZjOTQ2NWQ0Mjk4ZTIxMjljMmFjOTlmMzE3NzMwZCBsZWdhY3ktdHJ1bmsKKzU1NTA4IGJmYzczZDg0OWUyOGE5ZGViMjAwNmU1ZTc4ZWI0NjgyMWE0OWI4NzAgcHkzay1zdHJ1bmkKKzU1NTA5IGRiNDlhMTI0NzM5ZGVmZTYzMzRhNDI3ZTZiNDE4OWZmMTkzMWViZGEgcHkzay1zdHJ1bmkKKzU1NTEwIGI1YWNhMDI5NWI3OTJmYWE3OTA5NjMwZmM5NDM3OGMxN2NlZDliZjQgcHkzay1zdHJ1bmkKKzU1NTExIGFlNjkxMjI3ZmQzNDM3ZjllN2I0NTM4ZmJiZjc4OWVmMDBiZmViNGUgcHkzay1zdHJ1bmkKKzU1NTEyIDk4ZWY1ZmZjZmYyODQzYjQ1YTU4NDgzNjk0NzdkYWYzM2VmZDk5ZGMgcHkzay1zdHJ1bmkKKzU1NTEzIGRkODBhNGM1ZjQ3ZDA0ZDA1YTYyNDQ3MzQ2NDA3YjhhNWM3NjZjMzMgcHkzay1zdHJ1bmkKKzU1NTE0IDI0YjYwNjIyYjk0NGQwNGRmZTEyZmM2ODI5MTdjYmU3YjkwNjllMzcgcHkzay1zdHJ1bmkKKzU1NTE1IDg0M2Y3ZWZjMDU4ZjIzYzlmZjEyMWMzZmMzZjlkZDg3ZDE0ZmE3YjEgcHkzay1zdHJ1bmkKKzU1NTE2IDhjM2U0MGIxNzliZjQxNGZhYjBiN2JkYTI4Zjc5MmE1YjMxYjYwZjcgcHkzay1zdHJ1bmkKKzU1NTE3IGViNDVmODVjNGM3OTI2M2JlNGE2Mjk1NTFlYjg3ZjQ3NjliMDA2M2UgcHkzay1zdHJ1bmkKKzU1NTE4IGE3YmUxNDhmN2M1NjA4MDY0MDkxZWExMmI2YzgyODJmZGExZTI2NzggcHkzay1zdHJ1bmkKKzU1NTE5IGY3ZjJhNDljMWYyZTU0ZTNjNTg4NGQ0MTU3YTU3ZDYyMWQyYWFiZGQgcHkzay1zdHJ1bmkKKzU1NTIwIDcyZDdjMGYzYmZmZWU4ZjA3ZjQyOWNmMzYyNDVlZDI3YTU1OWUwZTkgcHkzay1zdHJ1bmkKKzU1NTIyIGZmN2JlZmU5MTliNWIxNjZiODA3OTg3ZWM0NzViZmJhOGRmMzcxNTYgbGVnYWN5LXRydW5rCis1NTUyNSBhMGVlM2IyYmEzNjFjM2VlMzM5NDgxNDg1NzI3OTY4YTM0ZmJlYTEwIGxlZ2FjeS10cnVuaworNTU1MjYgNGNiZjk0OTQzNmViNTdhZDZlZmFkZjgxYmY5NGVhYTAyOTI2YjM2MiBwM3lrCis1NTUyNyA4YzM1Nzg5MzRkZjZkYTg3YzI2MTZkMTAzYWZkNmQ2YTkxNGZkNDQyIGxlZ2FjeS10cnVuaworNTU1MjggOWE0NDc1MTQ4NTVmMTE3MWY0NjFhOTQzYThlOWE1ODkzOTY2ZmJkNSBsZWdhY3ktdHJ1bmsKKzU1NTI5IGE2YzkyZGVlYWUyN2YyZmZmZWEwMDNlMTU2NzAyYWJjYzZlZGQ1YTUgY3B5X21lcmdlCis1NTUzMSA4MTQwNzdlN2FkZWUzYWNmNzIwMTgyZjI5ZTg2Y2I3MDkzODZjNmI0IHB5M2stc3RydW5pCis1NTUzMiA3MDlmODJlMmE1NWNiNDU0YzJkNmRiNTVhMjM5NGE0NGFiNjFmMmViIHB5M2stc3RydW5pCis1NTUzMyBhYjM5NjYyZTQ1NGJjZTRiMGU0OTBiMDRhNjVjYTlmNTNjNmU4ZDc5IGNweV9tZXJnZQorNTU1MzQgZTI0MGQyMGRhM2VjOGZlYTg1NTM5NDA3YzMxNjBiM2UyNDgzY2Y5YyBjcHlfbWVyZ2UKKzU1NTM1IGU4ZjYyNGQ0OGRhMmRkZjFlODRlNGViMmZmZTgxNWYwNjEyOTc1NjMgcHkzay1zdHJ1bmkKKzU1NTM2IDU2ZTkwMDcyODkyOTUzMDQ2MWNiMTU3YjdjYWE5NzBjYzgxNGFhODAgcHkzay1zdHJ1bmkKKzU1NTM3IDIzMzIzNzcwN2ViYzk5NzljYTA5MGQ0MjUwMzdjZGI2ODFmNjNhZTAgcHkzay1zdHJ1bmkKKzU1NTM4IGJmZTk1MzA0NmQwNWIyMjZmZDg5NmM5MDcwMDdiYTM5YWRhNDRiYWMgcHkzay1zdHJ1bmkKKzU1NTM5IDUyM2RmMWRlMGE1YzJiOGVjMjA2NjAwOTNiN2Y0OGYzN2MzMDliMmUgcHkzay1zdHJ1bmkKKzU1NTQwIGViMTg4ZDdmZWE1ZDk4ZTQ2NjcyYmVjM2IyMTMzZmNlNTVjMzQ0NzUgcHkzay1zdHJ1bmkKKzU1NTQxIDIxMWRjOWQ2MzY3M2I1ZGM3ZjhmYzRmY2JlNDZlNWMyOTUwMzhjYzIgY3B5X21lcmdlCis1NTU0MiAxMjlmOTY1M2IwYTIzOWYyZDdmNjIxYTM5OTI0YjcxOTI1M2I3YjYwIGNweV9tZXJnZQorNTU1NDMgMWY3ODkxZDg0ZDkzZmUzNjRiYThiMjIyZjFlNDNiODMyYzY3ZTU3ZCBweTNrLXN0cnVuaQorNTU1NDQgNDc3NGE5NGQyZTZkNjY1ZTk0OWY0NmY4YzUwY2NlY2NkMDY4MTdjYiBwM3lrCis1NTU0NSA4MmU1ZGI0OTYwZWRmYjM0YjEwOTE5NWQzM2E0Mjk4MjM5YTRhN2E2IHB5M2stc3RydW5pCis1NTU0NiA5Y2U4ZmEwYTA4OTk3MjdiYTAzYTM3MzBiYWQyMzQxZTYyNGFiMDY2IHB5M2stc3RydW5pCis1NTU0NyAzMDhlNjMyNzAyYmZhNGFlOGQ1YzZkYTQ1OGFlOTdiZGY1MWU2MDFlIHB5M2stc3RydW5pCis1NTU0OCAyMWRjNDYyOWI3MTIxNDU4MjgxYWQ4YTA3NTAzMzc5NDI3ZmVmNGVkIHB5M2stc3RydW5pCis1NTU0OSBjZjE1MTk2N2VlYTNjZjAxNTQwZDBkNDM2YTliNDNkOTBhM2RjMzIzIGxlZ2FjeS10cnVuaworNTU1NTAgNmY4ZjgyMjgwNTQ1ZGQ5M2QwNjEyMTYxYmQzNGRjMTY1NGU2NjFjYyBsZWdhY3ktdHJ1bmsKKzU1NTUxIDM5NzlmOWUyZDAyNjI4N2Y3OTAxMGNkY2E5OGZmNTE5MjdkM2FjYjcgcHkzay1zdHJ1bmkKKzU1NTUyIGNmMDg5MWYxZDYwYWE5ZGIwNTU4Y2UzNWM3ZTcxOTU4ZGU5ZDM4NTggcHkzay1zdHJ1bmkKKzU1NTUzIGU2MzEwMWZhYWRhNjhjMjFlYzc4OTBkNzJhMzQ2NjU4M2MxMmNjYTIgcHkzay1zdHJ1bmkKKzU1NTU0IDg2YTlkNWY0MzMwNzc0NDIzNTg4NzQ0ZjNmNGMyYjhkYjBiYTJjY2MgcHkzay1zdHJ1bmkKKzU1NTU1IDEwNDI2YWQ1YTZlMGIxMzdlNTE2MGE2MWU5NTczNmI3MTk0ZjdlMzIgbGVnYWN5LXRydW5rCis1NTU1NiAwNTdhOWMzZDA2N2QxMTM0NmM3ZGY0MTU4OGJjZWIxZGMxNzAwMGJiIHB5M2stc3RydW5pCis1NTU1NyA0MWNmY2ZkZTA4YTk5YTc0NWY3YWIzZWFmYmY0M2M1MDE4NmVjZjMxIHB5M2stc3RydW5pCis1NTU1OCAyZjQ4YzU2YzVlODE2OTE1MmQ1OGJiZTU0MGE4NTczY2RjOTgwZTY0IHB5M2stc3RydW5pCis1NTU1OSA5OGM2NmVmYzk1NTMzM2E1YjMyMTgwZTRhOTQ5YjllNDY3MGQ3N2RhIHB5M2stc3RydW5pCis1NTU2MCBlNGU4YjEyNzcwZTQwNmJiM2UxYThkZTgwZGM1OWM0Y2FhMTU0OTZhIHB5M2stc3RydW5pCis1NTU2MSBlNmZjNjdhZDljNTRiYzFkZGRiMjFhNmMzYjI1YzNhYjI0ZDM5NGJkIHB5M2stc3RydW5pCis1NTU2MiA5Njk4NjhkZjE5MzhiYzQ4MmZjYzk4ZWY0YjY3NGY3YWI2YmY4MTdhIHB5M2stc3RydW5pCis1NTU2MyA0NmE5NGVhZDNkNjhkZTNiMzFjZDdhM2Y2MDUzODU1MTFhNTBiOTk3IGxlZ2FjeS10cnVuaworNTU1NjQgMjQ5MDA3Njc5NTI0NGQwNTJkYzFlZjhjMDQ2OWUyYjdhZmQ2NjliZSBsZWdhY3ktdHJ1bmsKKzU1NTY1IDk5ZTMzMDY4YzMzNDdkYzI5ZWVhMjg4OGU4ZmQ3NzEyOGIxZTA3NzkgcHkzay1zdHJ1bmkKKzU1NTY3IGNlYzJhOWMyMDBiYTJjYTJjYjZhZTU4N2EyNTE5MmQwMTMxNzc2MjYgbGVnYWN5LXRydW5rCis1NTU2OCA1MjJjNDkzOGJkZjY4MThlOThmYjUwZjlmM2Q5NjhjOGFjZjA4ZDRkIGxlZ2FjeS10cnVuaworNTU1NjkgMmM4YmEzZmFhZjQwYzA1OTUyOTM2OGQxMTQ5NTYzOTJmNWFlNWQ3YSBsZWdhY3ktdHJ1bmsKKzU1NTcwIDYzMTkyNzFjMjMyNjE3ZDhhZWJkNTU5N2I3MDc2Y2JiZDYzZDBhODcgbGVnYWN5LXRydW5rCis1NTU3NSBmNTc3NzVjNWQwYjQyMzY2MjhjMjkwMDExZWNhNDY5Njc1ZDE1Mzg2IGxlZ2FjeS10cnVuaworNTU1NzYgMWEzODVkMGFlODJiYTBlYTUwYjc0MDJiZTc3YzUwNDAyOTE3ZGYxMSBsZWdhY3ktdHJ1bmsKKzU1NTc4IDBlODBmYmQ3MzAwNWM2ZWNmNmE5MTRlNWYwMTQ5YjY3MzJmYmU0ZmEgcmVsZWFzZTI0LW1haW50Cis1NTU3OSBjYzBhZWVlNThhNGQ4NzI5ZGFhMzBjYTkyYjk5Mzc0OWVjNzJjOWE1IHJlbGVhc2UyNS1tYWludAorNTU1ODAgY2VjNmQ5NmMwODRhMTY5NmRmMDg1MGE4NTc5ZDJkM2MzZGNjMWY2YiByZWxlYXNlMjQtbWFpbnQKKzU1NTgxIDM0ZThlMDNlOTIxZjdlNDc3YWY2YTBjNTBkYTA2YzM4MDEwZDE0NWEgcmVsZWFzZTI0LW1haW50Cis1NTU4MiAyZjRkOTIwYTU2ZmMwZjQxZTIwY2RiNTRlZjMzYWY5NmUzMTc0M2UyIHJlbGVhc2UyNS1tYWludAorNTU1ODMgZGNiNDNmNDAzOTBiYTc5MmQ2ZTY5YjY2NmQ2MTY4M2Q3YmZiNzA4ZiBweTNrLXN0cnVuaQorNTU1ODQgMWVjMWFmYTJiZGI1OGMzOGM0MDk0NjBkZjU1MGI4MDk2N2E5OGIxNyBweTNrLXN0cnVuaQorNTU1ODUgMDg5ZjQ0OWEyMGNkYTAxOTM0ZmQzZTcyMGY5OWJkODdmNTY2YTM3MSBweTNrLXN0cnVuaQorNTU1ODcgODVjOTM1ZGJiZWYyNmJmNDA0NzgxNzJhNTUxZGIyY2UxOGZmYjRhNSBwM3lrCis1NTU4OCAwNDc4NmFlNTJkYWQ0MjEyN2Q1YjBkNzI1ZTcxYjczMzQ3NDJkOTZkIHB5M2stc3RydW5pCis1NTU5MCBiZWRmYmRjYWYzNTU3Y2QwMGZhNDE4NTU5NmQ0YjU5YzhkM2Q1ZWJiIHB5M2stc3RydW5pCis1NTU5MSA5NjU3YzMzM2M0ZWE4ZmMwZDc2YzhhZGZhMWFkMTFlNTU1NTgwNTQyIGJjYW5ub24tb2JqY2FwCis1NTU5MiAzODc3ZjM3Yzk4NjEwYmNjNmU2N2MzMjRkNDg4MzVmZGJhYmZiYTE0IGxlZ2FjeS10cnVuaworNTU1OTMgZTc0NmEwNmIzZWFmZTliYTA5MTljMDBjYTVkN2Y2ZjM1NjNkOGI4YSBiY2Fubm9uLW9iamNhcAorNTU1OTYgMDBmOTRkMzVjNjFjZTdlYmIxZDMxNzExNWU5NjQxZjliMjJjNTI1NiBiY2Fubm9uLW9iamNhcAorNTU1OTcgMWVhNGIzY2Y5ZDk4MTRlNzU0OWYxOWU1YWY2Yjg4ZGY3ZGY0NGJkYiBiY2Fubm9uLW9iamNhcAorNTU1OTggNWJjN2Y1NmY1YzMzZGVmODhhZjdlYTVkNzAyMjMxM2Q5MDQ3OGI1OCBwM3lrCis1NTU5OSBhZGJmNjgxZjFiYjJlYjc1MTY4OTA1MjM1NjcxMDE0MzQwYzVkNzU5IHAzeWsKKzU1NjAwIDEwNTY1MzA2MTZhYzNiMmQ4MzNmYTEzNDgxZTA4OTk2YjFmODI4MjMgcHkzay1zdHJ1bmkKKzU1NjAxIGU3MTYyYjZjYTdhMDQwZDhhY2FmOGU0N2U4NGU1NDBkNzhmNzdkZDQgbGVnYWN5LXRydW5rCis1NTYwMiAzODkwNzdhNTRmY2UzZWM4OWU3ZTdmYTY0NzgxZjFjNDZmNGRkMjZmIGxlZ2FjeS10cnVuaworNTU2MDMgZmJmMzQyYmNiNzg0NjUyNTFhZTkxM2JhZDZmZjkzNWYyODJmYzMyMiBsZWdhY3ktdHJ1bmsKKzU1NjA0IGVjM2I4ZTk0YTM1NTcxZTU5NTViNTc5ZmExZjEyMzJiMzA2NTlhNjYgbGVnYWN5LXRydW5rCis1NTYwNSBmMjhiZWQyNjRiMDJjYjMyMDJhYTIwN2Q3NGNiNWUwMGVlZTA1YzgyIGJjYW5ub24tb2JqY2FwCis1NTYwNiA1ZTQzYzczNjdkNTQ1YTg2YjI2MDNiNmViYWNkZTBiZGY2ZTRiNDQ2IGxlZ2FjeS10cnVuaworNTU2MDcgYzM2Yzg4NzlhOGRhZDk4NDU3MTllYWRiNmVmNjgwNGU2NTE2NjIwYSBiY2Fubm9uLW9iamNhcAorNTU2MDggYWE3MzIwNmM5Y2U2NzU2ZWJiNjM0N2EyNTU5NmQ5ODI5Y2FkZjVhYSBweTNrLXN0cnVuaQorNTU2MDkgZjZhOWUwMzRjYzYyODI0MjYzZWRhNDc4NzU4ZDg2MGViYzI4M2ZiNSBweTNrLXN0cnVuaQorNTU2MTAgMjQ5YjUyNWUxYWMwZTk4MGI0MmE5OGNmYzZhYjRhOTdiMGNhZTBjYiBweTNrLXN0cnVuaQorNTU2MTEgYjdjZmIzZmQ4ZGIwNTk5NGRmM2EzZDg0Nzk1OGU5NDI3ODliMDI2ZiBweTNrLXN0cnVuaQorNTU2MTIgYzMyODdlMTk1YTFkNTgzZWNhMmVmZjM3MDg1OTMzYWYyNDQzZGE3NCBweTNrLXN0cnVuaQorNTU2MTMgOWJhZWMyZjU0NTA5ZjY4MzU0ZGRiOWEwMmU1NzdjZTVmMTliYjQ5ZCBweTNrLXN0cnVuaQorNTU2MTQgNGNhZWViNDEzMTg2MmZlYTFjOWFlN2U2M2FhNmVmY2NjZTZiNzg2MyBweTNrLXN0cnVuaQorNTU2MTUgM2ZkYTllNmEwYjZkMWVkM2I3OTg5Y2VmN2U1N2JlNTE0MjRkMDljMSBweTNrLXN0cnVuaQorNTU2MTYgODFkNWIwMDcxMTY5YWMzYjE0MzE4NGM1OGI3MjQwODliMGJiMTI3MSBweTNrLXN0cnVuaQorNTU2MTcgOWRlODc1NjkxODFjYjhmMzFmZDFmYTA3NGY5MGNiODBkMjA5NTZhMiBsZWdhY3ktdHJ1bmsKKzU1NjE4IGFkZTdiMDY5M2UwNzZjMjEzOTNkMTJjYjQ2NjVlOWJmODk3MDY0ZjAgbGVnYWN5LXRydW5rCis1NTYxOSBhOWViYzUwNGY2OWQ4Y2NiOTI4YjIyYTNhNzYyOGIwMTU0NjA5ZjJiIGNweV9tZXJnZQorNTU2MjAgNzU4NjY2ZTI3ZmJlZmI0MTY0NTgxM2NmNWEwN2Y4ZDk0MzQxNmE1OSBjcHlfbWVyZ2UKKzU1NjIxIDhiNGZiNzFmZmYxZDM2NjM3MTYzMzAwOGExODBjOWQyNzU0ZDQxZGYgY3B5X21lcmdlCis1NTYyMiBhZWNkNzhhZmE1YTI2ZTk0Mzg3YjcwNGE0ZDI5MDY5OTdjOThmYTU5IGNweV9tZXJnZQorNTU2MjMgMGU3YzcwZDQxYTE5YjA2ZTkzZDM3ZGE2YzFjNDA0MWJlYTA0M2RjMSBjcHlfbWVyZ2UKKzU1NjI0IDQ4OTA2MGU5N2QxN2ZhODc0Y2U4YTcxYjg4Y2I4Nzg1NDEwODQzZWIgY3B5X21lcmdlCis1NTYyNSA4ZDYzN2Q4MTZmNzU0MTdiMDk5MWQ3YzJhNzg3MGZiYzM5YmZmNWI4IGNweV9tZXJnZQorNTU2MjYgMzcwMDUyZGM4OTkyZjM0NTE1NDI2Y2FiZjMyOTg1YzgyNmQ5YzM4MSBjcHlfbWVyZ2UKKzU1NjI3IDZkZDk3Njc2MzdiYjQzZDdmYjA3OWVhZGU3ODZmZTg1MTBjNDIxN2QgYmNhbm5vbi1vYmpjYXAKKzU1NjI4IGQ1YWQ5MTQ5MzYwYmI5NGQ2MTk2MWViOTI1ZTlmOTI5YThlMTBlNDUgYmNhbm5vbi1vYmpjYXAKKzU1NjI5IDM3Y2E0ZGQ4YWJlZjQ2OTNkYzJlNmY0Mjg2ZmEyZWQyZTM1NzNmYjYgcDN5aworNTU2MzAgZGU1MWFhYzQ2YjFiYzg5NDUzZTg2NGEwYzc5NmM0ZDYyMTc1MWY0OSBjcHlfbWVyZ2UKKzU1NjMxIGJhN2VhZWUzMzgyMjc5MThiNjA1YTJjNWEwMjQ2MjBiZGY2YTUxZmEgcHkzay1zdHJ1bmkKKzU1NjMyIDVhZDJkNzcwMGQzYzUwNTA1OTNhNWRmYjkyMWM1ODFkNjc3ZWY3MmUgYmNhbm5vbi1vYmpjYXAKKzU1NjMzIDUzODFiNGU3MWEwNDA2YzkyMjQ5NGY3ZDI5NGIwODc3ZWFmNGZhOTggYmNhbm5vbi1vYmpjYXAKKzU1NjM0IDUwM2Y1YTU2NDZkMTdhMDk5MjhiMzVhMTJlZDE3NGYyZjgxMDVjNDQgbGVnYWN5LXRydW5rCis1NTYzNSBlMTRlY2U3NzdiOGI0NWI4Zjk5MmVmNzI3MzAxZTczYTJiNmIyM2JlIGxlZ2FjeS10cnVuaworNTU2MzYgYzc4MzQ5NzEzMTdjZDQ5YmEyYjY1MmU4MTMzZTgxMjlkODFhZjYxOCBwM3lrCis1NTYzNyA4ODVkMGVmOTBlMGY0NDFjZTU3YjJhMWZiYjJiMTI1NTE3Mjc5OWFlIGxlZ2FjeS10cnVuaworNTU2MzggMDZlNmQ2MjE1YzViNzhiZDEzYTkxYjU5ZWUwMmFlMzA1MzQ4YzFhYiBsZWdhY3ktdHJ1bmsKKzU1NjM5IDc2ODg3ZTNlOGU1N2E2YWQ0ZDhhYTJjYTRhMDJlNjIxODZmMjM2ODEgcDN5aworNTU2NDEgYWU4MDU3OThmYTY3ODJjNmJkOTVjZjA2YWY3OWYwMDg2NDNmYTIyNyBwM3lrCis1NTY0MiA2N2VlNDY5NmQxNDlhYjY3YjVkYzkwZjdlOWFlMTBmYTdkNjgwMDQyIHAzeWsKKzU1NjQzIDM3N2I1ZGQ2MjkzZGE5OTY2MjVlOWFiYmQ2OTQ1OTViODM1ODk5YmUgcDN5aworNTU2NDUgYTFlZTI1NmZiYzhmODQ1OThhYTI1MDUwYzk0NDlmN2E3ZjE5NGRiNSBiY2Fubm9uLW9iamNhcAorNTU2NDYgMmFlOTk3NWFjYTIwNWU2YTAxYjA0NmZlNzI4MTEzYmQwZTJiZDg1OSBiY2Fubm9uLW9iamNhcAorNTU2NDcgOGIxY2RmOTMyMWZkMTM2MGExMDA1NTFhMjliNjMxNTBlMzdlMGZhZiBiY2Fubm9uLW9iamNhcAorNTU2NDggOTM4NjJhYTc2ZjdjMmEwNzk2MjU2NTdkNzVlZDk5MWY5OWNmMGQyMSBweTNrLXN0cnVuaQorNTU2NDkgOWIxZmZjZTI1NmI5YWFlNjg2NTk2Yjk2NWQ1YzYwYzIxOWNhNDI0YSBweTNrLXN0cnVuaQorNTU2NTAgNmMyZmE3MWRjNDU5ZjM4NTEwZTVhODgzYzZmZGI2OTk4ZWI2MzMxZiBweTNrLXN0cnVuaQorNTU2NTEgNDkyNjg3Njk1YzY2YzgzNTYyZmI2NDNiMDg2YzdkNTA2ZjVjYzA4MCBiY2Fubm9uLW9iamNhcAorNTU2NTIgMDk4MmZiMDhlNzliMWQ4MTQzNTBmNmNkNjI3ZjU2MzQyYmYwNDBhYyBiY2Fubm9uLW9iamNhcAorNTU2NTMgMDAzY2UzNmRkMjAyMjM0OTA4YzVhNzdhMjBlOWNlY2ViYzA1ZmIyZSBiY2Fubm9uLW9iamNhcAorNTU2NTQgMTg4MjE2YjQzZWY2YTc0YjM3MWViNDZmOGJhZDkyZDE1NjM2YjJmZCBweTNrLXN0cnVuaQorNTU2NTUgMzdhMjg1NmQ4ZjBlMWQ5MWNlYjczMTZiODhlZjEwODY4YTQ4N2RmZiBiY2Fubm9uLW9iamNhcAorNTU2NTYgNzViOWNlMWE3NzQ1ZjNjZjQxODc4Yzg3ZjdhODczMWRkZDY4MzdlMiBiY2Fubm9uLW9iamNhcAorNTU2NTcgNjJlMzk0ZDUwYWEwNjExMzM5NjE5NzMzODkyNGY0OThhNTQyOTYzNiBweTNrLXN0cnVuaQorNTU2NTggNjc5NmYwY2IwYmVhNDgxMDA4ZGUxMTQ1ZjFhYjE5MDgyOWQ1ZTVhZCBiY2Fubm9uLW9iamNhcAorNTU2NTkgZGVmZTI1MTNiNzhlMTcxMDU0N2JmZjZkM2U0ZjRkOWYzZmYwMWQ0MiBiY2Fubm9uLW9iamNhcAorNTU2NjAgY2ViYWY3YzNhYjhjNzUwYTgxNjFlOWRlZTNkZTIxZDdjNGZmNzc4MiBiY2Fubm9uLW9iamNhcAorNTU2NjEgYjZmMDQ5NzRkOGE3N2ZmZDhhMzYyZjdhM2Q0NDBiNmIwYWZmYzA4NCBiY2Fubm9uLW9iamNhcAorNTU2NjIgNTYyNjAyYzkxMDFkOWYxZWVhZmNhYWE2ZmE4OWE0MWM1NDE3YjM3ZSBiY2Fubm9uLW9iamNhcAorNTU2NjMgMzZhMDU2OTZiZTgyMTgwOTI2NWNkZGJjM2NiNTM4OTFlOTBjNzNjNCBweTNrLXN0cnVuaQorNTU2NjQgZjQwZmYyZDczOGVhNDI2NGIzMGViODc5NGMzOWVjNjgyOWE5NTk4OCBweTNrLXN0cnVuaQorNTU2NjUgYzQwYmZiMzdmYTE1NDI0ZTkwNGQzYWQ3MzE4ZmRjZThhMjZlY2Y5MSBwM3lrCis1NTY2NiA0MTgwNTk5OTRlNDcyMjJjYmE5ZDQ4OWIyNmYyNzE3NmExZWIxZTJkIHAzeWsKKzU1NjY4IGFhNGI3MjU0OWE2OTY4MjdlMGM0MzRhMTdiMDhkZWNmZDIwYTk2N2UgcDN5aworNTU2NjkgZDViYmY5NzU3MGUzNjI2ZGMxOGMxMTIwY2ViMzExNWUzNGM2MWEwOSBiY2Fubm9uLW9iamNhcAorNTU2NzAgZTcxZGU1NzUxM2UxYmQzYjJjYjVlNWY5YTc5YmM2MzExYjgzOGQ2MiBjcHlfbWVyZ2UKKzU1NjcxIDA2MzVhNmNhMTk4MDAyMjBlN2RkNDY0OWUyMjhmYjQ0NWQzZWMzNzUgbGVnYWN5LXRydW5rCis1NTY3MyA3ZDM3OWM0NzYwMDc0MjE0NTM5NjM3NzlkNTY2NTI0ZjI4ZTIwNTQ1IHAzeWsKKzU1Njc0IDNhZmZjZTJlZjc4MmNiZWFjNDVkZDNlNjNmYTBmNDhkNjZhM2FlNDUgcDN5aworNTU2NzUgZGQzOTYzNTQwY2Y3NzA5NDA5MGEyOTQ0MTUyYmJiMjE0YTBlMDcwZCBwM3lrCis1NTY3NiBkZGYwNDcxYTZkZTM3M2I5NGM0ZmM2YmFmZmRmZjJlNjkwZjFkYzVlIGxlZ2FjeS10cnVuaworNTU2NzcgYWFmM2I2ZDgyYjYzZjM2ZGQ4NzU4Y2Y3NzJiY2I1ZWU0NjYzNTZmMCBsZWdhY3ktdHJ1bmsKKzU1Njc4IDI3NWQ4N2E0N2Y2NDE0ZmU2OWYzNDkzODQwMWQ1YWMwMDcxYTNmNDYgcmVsZWFzZTI1LW1haW50Cis1NTY3OSBjZGVhMDk0Y2YwNDUxZjY3MGY2NDIzNjhmZTUzYjJhMmEwNzcyOGZhIHAzeWsKKzU1NjgwIDM5NGFiNWZmMTg1NGU0MTZhZDNkMjY3Mzk5M2ZmMDVmYTYzYmMyNTMgY3B5X21lcmdlCis1NTY4MSBiYThiNWFkOGU3NmViZDdlY2E1ZDBhYzI4YTVkZDNkMDA2MzIwOGFhIGNweV9tZXJnZQorNTU2ODIgNTE2Nzg1Nzg1MWMxMDlkNGIyNjRhYWQ3YTA5MzAyNTUxYzFiMjAyYyBjcHlfbWVyZ2UKKzU1NjgzIDQxYzdjZDE2YjE5OGMwMDZkYTM0MDEyMDZjNTdiZmQ3MTQxMzJmYjcgYmNhbm5vbi1vYmpjYXAKKzU1Njg0IGFjZDFlMjYyNDk5ZGQyOGNmYTNiNGRmNDQyOWE2OGI3MjM0Y2M2MTcgYmNhbm5vbi1vYmpjYXAKKzU1Njg1IGE2MDQyYzdkN2M1NWZhMmMxYjEyZWFjMDc4ZmIwZjE1ZTVjZDc2MzkgYmNhbm5vbi1vYmpjYXAKKzU1Njg2IDVjMjk0MTFhMDVhNWY1OWM1ZWY4MTBjOGQ2N2UxZTBjNWE4NDc2ZjggbGVnYWN5LXRydW5rCis1NTY4OCBhZDZjNWI4OGI1YzRiMDE5NzBlMGMxMzQwYWVhODY2MjU1NzBkOTM0IHAzeWsKKzU1NjkwIGMyZGM0ZDE3ZTk4YmM0MDRkNDY5NDc2MTI4YmY1NzM4MTU4NzYxN2EgbGVnYWN5LXRydW5rCis1NTY5MiAxNzY5OTkzMTE3OWU4ZjMwNTZiOTU0NzM5ZGE5MjBmOGNiMTgyNjIwIHAzeWsKKzU1Njk1IDEyMDBjMGUwOTU1Mzc2NTkxMmRiMTlkYjIyMzkzYzVhNjgwMGZiZmYgY3B5X21lcmdlCis1NTY5NiAwZTI5YmI4MGUyMjc4ZWY2MmU1ZDIzNDI2OTIzYWE5NjJiZTMxYjA1IGxlZ2FjeS10cnVuaworNTU2OTggOGU3ZWNiZDhhYWFiMTg3Njg2MDE3MzEwMTAxNjhlYjU4MzZjODY1ZCBiY2Fubm9uLW9iamNhcAorNTU2OTkgMGY0MjRkZTQ1NmRiNDYwOTkwZWU3NTY0ZDNiMTNmY2I2NzhlMmEwNyBjcHlfbWVyZ2UKKzU1NzAwIGJiOTQyYjYwYjBmZWYyYjYyZjU5NzUyNjMyMmE4YmI0MjY0ZDkwZTIgY3B5X21lcmdlCis1NTcwMSBkZmNlOWEyNjM1ZTk2Y2YxMmE1MzUyYmE4M2UzMGIyMmI1MDU5YjAxIGNweV9tZXJnZQorNTU3MDIgZGYzZjc2YWNlMmQ3NGQ3M2RlOTAzZjA1OGRjYWU4NWIzYTg2ZTNiMiBjcHlfbWVyZ2UKKzU1NzAzIGFmMGFjODM2MDJiNDc4NmEyMTE1ZTViZDEzNmE1NDA3ZGRlYjkxNTcgY3B5X21lcmdlCis1NTcwNCBkOGE2YWZhNmU4YzYwZWU3NWQ1YTA0OThmNTU2NDcyODY4OTk3OTM1IGJjYW5ub24tb2JqY2FwCis1NTcwNSBkMGI0YmJhYWZhYWU0YzQxNWI1NWY5YjdiMGY5N2Y4ODUyNzA0YTI2IGxlZ2FjeS10cnVuaworNTU3MDYgZGQ0Njg5ZDBlYzg1YjZjMTAzYTU2MzNkNDAwYzk2NjljZTFmMjUxZiBweTNrLXN0cnVuaQorNTU3MDcgZjI4N2I4OGMzYzIxY2ZiYzU0NDI1MzIxZWFhZTI0NWEwOGZmMDc4NiBwM3lrCis1NTcwOCBjNDUxMTE1MGVmNjA3MTIwZTZjMzlmZTNkOWY3YzRkYjQ0ZTNkYWM0IHAzeWsKKzU1NzA5IDcxZDg2MWVlOWZmMGRiZGFlMDdhZTNjNDBiMzJlZWMxOGEzMDY2YmEgcHkzay1zdHJ1bmkKKzU1NzEwIGI4YmVmOWExY2RmMDFjZDgxYjRkNmU3NTFhNjgwNmY0YjRiZDM0ODYgcHkzay1zdHJ1bmkKKzU1NzE0IGRiZDJjZjQwNTI3ODI1ZmJmMTE0ZTRhOTM2YTA2ZTcyZmI2NTk1ZDggcHkzay1zdHJ1bmkKKzU1NzE1IDEyN2YxNTFmMzE3Yjc3ZWE2MTMzOGQ2NzY3YmQ4NDA2ZDkwZWEyNzcgcHkzay1zdHJ1bmkKKzU1NzE2IGIzODBjOWM0OTczOGFjYTA1YTE1M2VkNjVjYTZjN2EzOGU2ODI2ZWUgbGVnYWN5LXRydW5rCis1NTcxOCBjZWYwN2RiMWNhZWQxYTA4MjdlNDliZDkxNzFlNDNiNTJhZWQ5OGQ5IHB5M2stc3RydW5pCis1NTcxOSA5MWJiMTk4MTNjYTYxMWZjYTIxMDgxZGYyYzAzZTBkMDU1ZDQ0NTc4IGxlZ2FjeS10cnVuaworNTU3MjEgYzYxY2FhZjU2MTYzMGExZWE3MGQ0YTUwNGU4ZTc4Njc2YTIxOGUyZSBsZWdhY3ktdHJ1bmsKKzU1NzIzIDY2N2MxYTcyNzljOWY3Y2I0ODc4MzZhNTc2OWY3YjFlZGJlMjMwMTUgYmNhbm5vbi1vYmpjYXAKKzU1NzI0IDVjYTdkMTcwZTQzMTJmNTQwYjRkNjAyYjhlZTIyZThmMjM0NzNhYTAgcDN5aworNTU3MjYgY2NmMjA5OTI1MzgzNjllN2Y5ODIwNjdjNTU0MTBkM2E4YTAzNjAyZiBsZWdhY3ktdHJ1bmsKKzU1NzI3IDk2ODYxYTA0MWY1NDZjZjQ3OGY3Njk2OTg2MzRmZDM3OTc0MjBhMjkgcDN5aworNTU3MjkgMjkzNGFmMDVmOGJmYjA5MmJjZDFjMDVkYWZhNzRlYTEyYmVjODc1MiBwM3lrCis1NTczMCA5YWNiMzk0NzgwZGY5MzYxOWJkYjA0ZTZkMjNlMWM1NTI2YWFlZjljIHAzeWsKKzU1NzMxIDI0ZWZhMmU0NDhiY2UyZmFlMTBhYjRjNzdmYTFiODM0YmJmNjdhZGUgbGVnYWN5LXRydW5rCis1NTczMiA5MDQ4N2E4ODdiZTEzNmZiZTkyNDFiZTc3ZTFlYWNmZTc5YTE1NmUxIGxlZ2FjeS10cnVuaworNTU3MzMgZmVjMTI5NjU0NGFiOTZjMGVmNTI4MmJkZTRiMjRjZDNjZmMzOWMxNCByZWxlYXNlMjUtbWFpbnQKKzU1NzM0IGYwMTIxYjIxNWQzODk2MDMxMzM3NGQ3Y2ZiNmFiMTU5MzgyYmU0NDMgY3B5X21lcmdlCis1NTczNSBmYmJmODUxZTIzMGE1OWU1ZmQ2MzljNDQ0ODQ5OGY4Yjc4ZmVhNzU3IGxlZ2FjeS10cnVuaworNTU3MzYgZGE1MWY3ZjkwOGNhZDhmZTdmZDkxYjkyMWRjMzhmODUzNzQ1ZTE5NyByZWxlYXNlMjUtbWFpbnQKKzU1NzM4IGRmZjYyNGIyYTI0OTEwNDJlNzI4YjIxNWU0YTkyMjViMmFmYzdmZWMgcDN5aworNTU3MzkgZjlmNjAwMDMyN2UyN2JkMmViOGQ0YWM1YjExOTM0YmZkNDk5Mzc0YSBsZWdhY3ktdHJ1bmsKKzU1NzQxIDMyOGU0NTllYjY3MDI5NjExZmRmOGEzODc1NjAzMzM4MmZmMTUxYjEgcDN5aworNTU3NDIgN2IzZjY0YjNlNzM5Mzg4ZWQ0M2ZkMGI0ZGFlZWE4NGMwNzk5OTY5OCBwM3lrCis1NTc0NCAwNGY0YjU1N2QzYzQ1MTFiM2NlMTBlMzFhMjY0ZGZhOWEwNTFmODA1IHAzeWsKKzU1NzQ1IDA0MTg2ZjUyMTkyZGRiMTNlM2UyZWYzMTAzMTU1Yjg4NDFkMzgzOTQgcDN5aworNTU3NDYgN2UwYzIyMGI1NWE2NDAzM2M4M2Q4N2I2MWFkYzk5M2NjOWU5ZTkyMyBsZWdhY3ktdHJ1bmsKKzU1NzQ3IGI0ZjEzYzdmZGZkODhkMTY4YTE1ZDUyMjJkYjBhMGQ5MzgzNzNjNmMgcmVsZWFzZTI1LW1haW50Cis1NTc1MSBlMzFkMmY5NWYyMjU0ZDI0NmQzZTU5ZjI0M2JiYzllMGUzNWZkZDk3IGxlZ2FjeS10cnVuaworNTU3NTIgZTE5OTcyODM0MTcwODhkYWNiNjc5YzVhZjIxMGMxZGY4Yzc5YmUzMiBsZWdhY3ktdHJ1bmsKKzU1NzUzIDgyYjkzZmE5MWRjZjM0MTNkMDJiOTdmZjJlY2QxOTA5YzM2ZTE0NjIgcmVsZWFzZTI1LW1haW50Cis1NTc1NCBhYmRlMDgzODQzY2QyY2EzMjE5YWZlZTg1NDcyZmVkZmRmOWQ4NjM1IHAzeWsKKzU1NzU1IGI4YWJkZmExYzlhZmMxMDAyZDEyMjk1MGYzYjI5YTU1YzQwZGYwM2MgcDN5aworNTU3NTYgZjZmYWIxYzcwN2U5MDlmZmQwNTc5NGNmZTFmNmRmNTgyYTAxY2U3ZiBjcHlfbWVyZ2UKKzU1NzU5IDUwMTRmOGRhYTU3ZmFkNTc4NmJhYTdkZjQzYTBkNDY1NGNlM2ViZmEgcHkzay1zdHJ1bmkKKzU1NzYwIGU0YWIwODAzOWM3NWY4MGZkOGY4ZWU5NTVmNjAxNzdkNTU2N2RjMDYgcHkzay1zdHJ1bmkKKzU1NzYxIDczZGQyZGEzMWQzN2ViZDgzZWZjY2JiNTBjYTg1MjIzNWUyN2M1MGQgcHkzay1zdHJ1bmkKKzU1NzYyIDhiY2ZjNDZlNDQ0YjU4MjY2YmRjY2IxZjFhYTYwYmZiZmUxMzljNTkgcHkzay1zdHJ1bmkKKzU1NzYzIDUzOTYzYTJmNTY1MjliZThjMTY1NDg0ZTVkZTZjZGZkODlhOGY0MTcgcHkzay1zdHJ1bmkKKzU1NzY0IDU3OThhMmZiYWIwMzA0ZjEzNjdiZjE1ODY5MmI4OWM0ZGJmMTQ3MWYgcHkzay1zdHJ1bmkKKzU1NzY1IDcxNjA0ZDQ5YTM4NjM5ZWNhMTQ3MmYxN2Q3NmI4NTgzOTExYTc3ZTUgY3B5X21lcmdlCis1NTc2NiBjMzZhYzY3ZWVmNWI3NzZhMTJjMDQ3NTNmNzA4YTVkYzlhY2ZiZWUwIGxlZ2FjeS10cnVuaworNTU3NjcgNGIzNGZhYWE5NzdkZTg5NjliMmUyYjk0NThlOTExNTY5MjY5MDEyYSBjcHlfbWVyZ2UKKzU1NzcwIGI2YzFhMWExNWE2Y2RiNDUwMWEwNThmZTBkMzk2MDhiYzg5OTFiYWEgbGVnYWN5LXRydW5rCis1NTc3MSBlM2ZiZGQ3Y2I5NjljZWI4YjJjODQzOTZiZGVjODgzOTFmNmFjMDI3IGNweV9tZXJnZQorNTU3NzIgNzYxOTRlNjgyZTIxY2M2YWQ1M2ZkNGM0MzBlMzQ1MmMzZGM4ZWQ5NiByZWxlYXNlMjQtbWFpbnQKKzU1Nzc0IGM1Y2Y5YTRmNGZhOTc5Y2QxNzU1NTkxOWI2ZDI4NzUxNDM5NDhiOGQgcmVsZWFzZTI1LW1haW50Cis1NTc3NSAzNWFjY2VkYjVkMDNiNDhlMDFkNzlmODI0MDAzZjFmNmJlZjkwOTEyIHJlbGVhc2UyNC1tYWludAorNTU3NzUgY2ZiY2ZmNjZlNzI1YWI0MjhlM2U5YTJiMTVhMmM3Nzk2Mzg5NmNhZSBsZWdhY3ktdHJ1bmsKKzU1Nzc1IDAxODEzODQxZDY0YmZiNDM2NmNlMGRkMTFhNmUwZjY4MjhkMmY2MGIgcmVsZWFzZTI1LW1haW50Cis1NTc3NiAzOWExYTIyZjk2Y2Y2M2YxMzQyOWQ3NWFhNDIwZTc4MmMwZjg4NDJkIHB5M2stc3RydW5pCis1NTc3NyBiM2Y2MWJhZTEwYzM4Y2Q4NTk0YTBlZjMxMDViMWI2ZmM3MjgxYWUyIGNweV9tZXJnZQorNTU3NzggZWYzNzQzMWViZjJjOTQ1ZTFlM2FjODEzYmZlYTQyYmY5NjFkZDdiYSBweTNrLXN0cnVuaQorNTU3NzkgNGM1ZmJlNjViN2RlNzkzNTlkNGYxNTc1NjRmMjhkMTY4NjA2NDg3NSBweTNrLXN0cnVuaQorNTU3ODAgYjMwYzc1ZDIyZjM0YjIzOTcwYTRlOGUzOGQyODg2YzRmYjQ1OTkyZCBweTNrLXN0cnVuaQorNTU3ODEgNzAxNWNjY2YyOWUzYmJkNzVkYzI3NDc2MmMyMDlkM2I0ZjIzYTBlYiBweTNrLXN0cnVuaQorNTU3ODIgMzBlNjFhYzFkNjZjNjJjY2Y1NDA5YTU1NDZiNTY0NTA4MGZhZDUwYyBjcHlfbWVyZ2UKKzU1NzgzIDlhZjUyNGUzNTFmMzI1MGYzMWYwZDY0OTA3ODc3YjhlYjcxYTJjMmIgbGVnYWN5LXRydW5rCis1NTc4NCBmMjI3NzQzOWRjZGM5ZjhhZDRhODgzOWE0OTc4OThjMDJjODNiYzgxIHJlbGVhc2UyNS1tYWludAorNTU3ODUgNTg4Njg2ZDRjMmNmODdlYjk2ODRiNzZkYzVkZDI5MTljMDc3MjZjMCBsZWdhY3ktdHJ1bmsKKzU1Nzg2IDZmZDhkNTI0ZDU2YjJlNjhlZWI2NTQyMzg4MGU1NjUxNDIzNjA4ODAgbGVnYWN5LXRydW5rCis1NTc4NyAxMTkzMGRjZjlkNGZiNGRhZTZjOTRlZjRiN2M1MGU0MDYxNjFjNDdmIHB5M2stc3RydW5pCis1NTc4OCA3ZTUyYjViZWM1YTQyNjk5NzYzNTY1MzU5ZmVhY2E4OWJhNjgwMmExIHB5M2stc3RydW5pCis1NTc4OSBjZTVhZjlhNzQ2Y2IyMDhjM2UyYzM2YzBiMjA5MWM5MTFkNjI5MGZiIHB5M2stc3RydW5pCis1NTc5MCA0NTk2NzI3ZjZjMzliYzU4ZjgxZjE3ZWI4YjNkNWIzM2E5Y2E5MzE4IHB5M2stc3RydW5pCis1NTc5MSBiMDVjNmQ0MmQ0ZjcyMWZiNjZiZDkzODA5MzJiNjRlMTdhYjYwYmVlIHB5M2stc3RydW5pCis1NTc5MiBmMTQxYzVmNzc4NjBlMzBkYzM5Njg2ZTQ1OTVlOTQ1NGI1OTBjMTVkIGxlZ2FjeS10cnVuaworNTU3OTMgMDU4NzlhYjg3ZTViNDg0Yzk5NWI1ZTY1ZTQ0MzFiNDk1ZjY2OGVlZiBsZWdhY3ktdHJ1bmsKKzU1Nzk0IDdiMzdhNDM3MjM2MTYzZjhiNDNhOTY2ZjgzYWJiYmNlNmFmNjRjZTQgcDN5aworNTU3OTUgOWQwMmE0YWRmNTc0ODFiNjBkMmY5NzViNmM1NzlmMWQ2ZDFhZDU5OSBweTNrLXN0cnVuaQorNTU3OTYgYjM5MDBhNTEzNDZiNTJjNGQxMWRlOTk2YWYwMDg3YmQ4ZDc5NDc3NCBweTNrLXN0cnVuaQorNTU3OTcgNTliN2U5MzQ2ODg1Y2M2MGNiYWVkOGYwNmM3MGFkZjg0ZGJlZWY5YSBwM3lrCis1NTc5OCBjNjM5MjI4Y2ZlMjNkNDRhOWNhMTU5MTE2YjkzNzc4NjZjYjI1ZjY4IHAzeWsKKzU1Nzk5IGEzMjYxY2RlM2EzN2U2ODNiMjI3MTA0YzVkZWM3M2Y2NjYwZTM2NzIgcHkzay1zdHJ1bmkKKzU1ODAwIGZlZTcxYzdhZjUyZjRmMGUwOTZlZGJhNTU5M2MxMTJiNzlhNDZiYjkgcHkzay1zdHJ1bmkKKzU1ODAxIDk0MmQ4MzAyZjRkNmYxNTQzOTQwMjQwNjMzMmE0YzczNGY2YzVmODYgcHkzay1zdHJ1bmkKKzU1ODAyIGM4YjBlM2I4YjQ1NmJjOGYyYWI1OWQ0NTVlNjc5YTMxZTRlNDc0ZjMgbGVnYWN5LXRydW5rCis1NTgwMyBjMmFjMjJjNmY5OGQwM2ZjZDI4NDY5NTE0YjE3MDdiYThhODZhMTFiIHJlbGVhc2UyNS1tYWludAorNTU4MDQgMWJjOTAxZGRiN2RjMjFiM2FkZGE3ZTk3ZjEwMjBiNmE4ZTZkMDRkMCBsZWdhY3ktdHJ1bmsKKzU1ODA1IDgyM2MyZjc1OTFmNTAyZWE4NGUwMDBjNDM1M2U4OTNiMWY5YWM0OGQgbGVnYWN5LXRydW5rCis1NTgwNiA4MTUwZDFmMDEwYWFjNTY2ZjIzZDAyZmE2OWU5NTVjNzY3ZTFlN2U3IHJlbGVhc2UyNS1tYWludAorNTU4MDcgMTQ3NDViNGZhNzE4YTU5ZjVkNTFkYTQ0Y2Y2ZTk4OGM5NTQ5NzJiNCBweTNrLXN0cnVuaQorNTU4MDggODI3ZWM3NjgwMTk5NTM0ZmM5Y2M0ZTliZGNmYzRjZGQyMTY1Y2RhNSBweTNrLXN0cnVuaQorNTU4MDkgY2Q4ZjE2NWJkN2UyOTdhNGExZmJiYzZhYTBhYjI5MmNkNTAxMTgwNSBwM3lrCis1NTgxMCBjNmEwYjc1ZGJlYzIyOGZmOTA3NTJjZjJiNWUzZDkzM2RkMjk4OTQzIHB5M2stc3RydW5pCis1NTgxMSBlZjA5Y2IwMTE5NTk2NGEzZmRkNjIxZDdlMTVmODFkMmIwYzliMmZmIHB5M2stc3RydW5pCis1NTgxMyA1NGVmNjQ1ZDA4ZTRmYmI2YzM5Mzk0YjBhNWRiYzcwOTE4ZGFlY2MyIHB5M2stc3RydW5pCis1NTgxNCBjNDFmZDU3MjM4NjA5NjAwOTcxNGJjNzhmOTQ4OGZlZjBhMTZlOGMxIGNweV9tZXJnZQorNTU4MTUgZTQyMDAzOTM2OGI3OWJlMmIxOTJkNDAyNTUzYWQwMjgyNWMxYmFmYyBweTNrLXN0cnVuaQorNTU4MTcgYWU2YmE2MTg4ZDM4ZDQwNGUzMGFhYzdkNTEyYzZiMDc1MjMzMGVjMCBweTNrLXN0cnVuaQorNTU4MTggNjQ2NGNjNjM4ZmFhMGQxNDhmNjdlMTcwYTZhMzJiODFjZWYzZmExNCBweTNrLXN0cnVuaQorNTU4MTkgZTY2ZGFmYTk4NDAzZDYyNTY0NDYyMjU4MDVhOGVkMTMzM2I5NTAxNSBjcHlfbWVyZ2UKKzU1ODIwIDE0ZWM5NjczZjg5NDdjNzNmMzJkZWVkYjc0NTJiYjhkZTdkMmNkN2EgcHkzay1zdHJ1bmkKKzU1ODIxIDI0NTNiOTM3OTI1ZTg5M2ZlODY3MzJkNzk1MGM3OTliNzg5MDQzYjggbGVnYWN5LXRydW5rCis1NTgyMiAyOWQxYWYyMjBjM2M3YTViNWM0YThmZDBlMWNjMDMzMmY4ZDc4NGRiIHJlbGVhc2UyNS1tYWludAorNTU4MjMgZTE1M2JhMzUyYjUxM2M1ZjhjNzhhOGRiNzE3MzllZjg4MDJmMGFhMyBweTNrLXN0cnVuaQorNTU4MjQgZjQ4YzE5N2Y5YzM4ZmRlNmY2NDU2M2JjYTMzYmIzNzk4YzE0OGE0MSBweTNrLXN0cnVuaQorNTU4MjUgNThhMTMzMzBkZmRlOTk2N2Y5MzgyMjllZmM1ZWNkMTk2NDRlYWM0OCBweTNrLXN0cnVuaQorNTU4MjYgMGQ4MWE2NTY0MTJhMTdkNDFhYThhNzU3YTY3MjAwMjc1MmMxNDQ3NiBweTNrLXN0cnVuaQorNTU4MjcgMTRiNjVkZTliNzk4NTQ5MGExNzhiNTZiMjI0YTZjZDgxNjVmOTQ3NSBweTNrLXN0cnVuaQorNTU4MjggNTIyYTQ5NDVkZWY4MGU2MGM3MjNlN2I1ZjMzOTM1ZTA1ZTRlNTFjMCBsZWdhY3ktdHJ1bmsKKzU1ODI5IDFiYmNkMzkyNDE3ZGNhNTczYmRjMGQyOTIzMjQyMjQ4Zjg2OGFhNDQgbGVnYWN5LXRydW5rCis1NTgzMCAxMGY4YThhOTE5ZTJhMGQwOTdiN2EyYzQ5YzJiNDRkNTMxMmMwMTY3IHJlbGVhc2UyNS1tYWludAorNTU4MzEgN2I4NGU4OTE5YjAwMGM1MTMyNGE0YmE1NmViNzRlNDg4M2NhYTc1ZSBsZWdhY3ktdHJ1bmsKKzU1ODMyIGI0ZjRlZTg0YzMwZDdhYWU4MTJkY2NmODZlMDMxMGQ5NTlmMjY2ZWUgbGVnYWN5LXRydW5rCis1NTgzMyA4NjkxY2M3NmQ0NDE5MjUwY2U1MmYyYzg4NjUxYWJjMDMwYTA4MDRjIGxlZ2FjeS10cnVuaworNTU4MzQgMDY3MmRiZWQ1ZjdhOTc4ZTE1NjYzZDJmYTY0Zjk3YTFlM2I2ZWQ4MiBsZWdhY3ktdHJ1bmsKKzU1ODM1IGQ2MGQwZDBlZTRmOGM5YzgzNzI5YzNiZDY3YWJjYjRkY2JiMTBhNzIgcmVsZWFzZTI1LW1haW50Cis1NTgzNiAyYmY0ZGM5ZDA2NDdiY2FlNTYxMjQzOGQ2NjNhYjlkOTJmYTM0NzJmIHJlbGVhc2UyNS1tYWludAorNTU4MzcgMDUyN2FiOTQzYTRmMjIyY2Y4NjE4MTJjYjc3OTIzMGI4ODk2NWQ4YSBwM3lrCis1NTgzOCA3OWYxM2JmOGRkMjdhMjg1NzhkYTlkNmEwOTdkZjhjYzRjZjMwZWYyIHAzeWsKKzU1ODM5IGU2MmI2MDZlZmYwYjgzNjZlZjAwZjlhZjY2YzUyNjg3ZDk1NGQ4MDEgbGVnYWN5LXRydW5rCis1NTg0MCAyYmQ5NDE3ZGFjZDVjNTNhYmU3ODU0ZWVkNjQ0ODljMDQ5YjBkZjA5IHJlbGVhc2UyNS1tYWludAorNTU4NDEgMTZjZWU2NzRhNDEwZTU5MjYyNWJlNDYwY2M4Y2ZhMDVmNTcxNjQ4MCBsZWdhY3ktdHJ1bmsKKzU1ODQyIGU4NDEzOTcxMjEyZGY5NDUwOTBhNDhlYmVkYjY1NGQwNTUxZTU1ODYgbGVnYWN5LXRydW5rCis1NTg0MyAyODgwNWE3MjA0NTQwMDJjOGIzNmQ3YjU4YTZiMGY5NTk1NzMxMmFiIGxlZ2FjeS10cnVuaworNTU4NDQgN2M5MjI1ZGE1ZjYxMTU5YjQzNjhmMzQ4MjM4NWJhNzg4MDc3ODk0NiByZWxlYXNlMjUtbWFpbnQKKzU1ODQ1IGUyYzM5YTMwZTA4ZGQ2ZGM0OTlmNWI1YzcwMWQ3NjllNmFkMjBhYmIgbGVnYWN5LXRydW5rCis1NTg0NiA3MzFiNjk5NDIzMTc4MDE5ZjA2MmY2MGFjZDYxMGNlYmI1M2NmZDRjIHJlbGVhc2UyNS1tYWludAorNTU4NDcgM2RjNTA3Y2EyZTJiZWJiNTEwMzRkZGRmNDI5ZjkzNDliMDdjM2YyYSBwM3lrCis1NTg0OCA1OWM2ZjRjYmIzMjY4ZWMyYTQwNzgzOTM3YjdmN2VkNTQ4OWZlMjE2IHB5M2stc3RydW5pCis1NTg0OSAwMjIyNGRhNjBmZDE4M2JmZTE1YWFlOWRmYWYxZjU2ZDBkOGY4M2YwIHAzeWsKKzU1ODUwIGNkMTI1ZmU4MzA1MWI0ZTUwODc4OWRiODY0NDcxYzZjMmYyMTE3ZjggcHkzay1zdHJ1bmkKKzU1ODUyIDY0NDM4NTNiYTMxNDg5MWU3Y2RlN2MxZWIxNDg5MTVkMTcxYWQ1NmIgcDN5aworNTU4NTMgNmJlYjc1ZWVlOWM1MmYyYjEyYzliNDdjYzFkMTg4NjNlMzZiNjIzZCBwM3lrCis1NTg1NCBiMWI4ZWU4MDdiZGFkZTIxOWYzMDZjMmUyMzE4MTUwYmY3Yzg1NzYxIGxlZ2FjeS10cnVuaworNTU4NTUgM2RkYWFmNjE0ODA0NGFiNzllMDY3N2IyMmQ1Mjc0YjQwYjkxZmI1YyBsZWdhY3ktdHJ1bmsKKzU1ODU2IGIyMzlhMmJjYjI0ZjM1M2MxODIxMzc3NGQ0MDU0NTg2NDM0NTg4NGYgbGVnYWN5LXRydW5rCis1NTg2MCA3ZWFjY2Y1M2FkYmQxNGMzYThiNzBhMThkMWQ4ZTliMWZlZjU5ZjVlIGxlZ2FjeS10cnVuaworNTU4NjEgNzk5MGJiMjc1OWNiMzc5NGM3MWU5NzFjNTBjNjM4ZTYxYjAzZDI2ZSBweTNrLXN0cnVuaQorNTU4NjIgZjViNjU3MzFiZDZjOWZiNjFhZGI2YjU2Yzc0YzNmZDM3MGE0NzVlZSBweTNrLXN0cnVuaQorNTU4NjQgNmE0MzgyY2ViNzFlMmM5M2NmZWVkMmU0NTg4MGQ3ZWRkMjg4NzU3OSBwM3lrCis1NTg2NSAwZTliMGI4ZmMzZTdjZjFkNmZiYWQ1YzE0OGFlMjI1Y2RlZmY3OGU4IHAzeWsKKzU1ODY2IGIzN2E1NjhmZDQ0MWViNTVhMmFlOTU1ODYzOWJiNzZhZDBlYjdjMjAgcDN5aworNTU4NjcgMmQ1ZTIzNjVjN2RiMDViODMwZTUyMjJkNGYyYmM0NGNlZDc4ZjAzZCBwM3lrCis1NTg2OCA5ZTg1N2I2YzFlNTYzZTc3NGY0NDQzMjNjZDAyY2E1ODQ3ODZkNDgwIHAzeWsKKzU1ODY5IDE5ZmE5YzdkM2M0ZjA5ZDRjMjM4YzQ0ZjdmNjcwM2RkOWVhY2VmNTIgbGVnYWN5LXRydW5rCis1NTg3MCBlMWFmZTU2Y2E2YmEzMDgwOTIxMzIyODY3ZjIzNmQ5MzhjNjhkMjAyIGxlZ2FjeS10cnVuaworNTU4NzEgYjdmOGRkZDA3MmI4NThmYTM0ZGE5YWMzMjkyMGI0NzAwYzY5ZTJkYyBwM3lrCis1NTg3MiA1OWJjOGRhMDFjNjU5Y2Y4MTQ1N2YwZmYwYWYwMTkxNDRhYjg1M2FiIGxlZ2FjeS10cnVuaworNTU4NzMgZGRlN2MzN2Y0NTM2NGQ3NjYxZjM4MGJhYmQ4YmFlMGJkZDBiY2U0MCBsZWdhY3ktdHJ1bmsKKzU1ODc0IGI5NGYyODQ4MDViZTcwODI2ZTFhNTk4YzYyNzE3Y2RmYzEyMGNmMjEgbGVnYWN5LXRydW5rCis1NTg3NiAzNmI4ZDc0ZGViOWU5MjEwMmM5YmE1ZjhjNDZmY2YxZDcyNzg5MzNlIHB5M2stc3RydW5pCis1NTg3NyA3NWVmZTZiZjhhM2VjZWQ4NDFmYmVmZDZhNDdiOWE2MGYxNWRmMzFjIHJlbGVhc2UyNS1tYWludAorNTU4NzggNzFmMzE5MjkxNWUxMzFlMmY5MWE5ZDI4N2ZlMTM2OGU4YmQwYTQ3NyByZWxlYXNlMjUtbWFpbnQKKzU1ODc5IDQzMzIyZmY1ZTMxMmM0YTU0OTA0NWNlNjU2ZDEyNjQ0ZjE5YzEwNzEgbGVnYWN5LXRydW5rCis1NTg4MCBjOWUzYzgyODM4YzMzODMzY2Q0MGY3NWQ4NjM0MzNjNTJiYTAyYzJlIHAzeWsKKzU1ODgxIDczYjZjZWJjNmY3MjdhMWM5YzRhYzA0ZWZkNzc3M2UxMDRiMDJiZjQgbGVnYWN5LXRydW5rCis1NTg4MiBiMzU2Zjg3MjA5NDFiMjU5MmEyYjdkMmM3ZTQ1MjZhZDIxNTNkYTAzIGxlZ2FjeS10cnVuaworNTU4ODMgODIxNzhhNjA4MmVhZmJkMTUyMTRmZjQ2ODU0Zjc1OTM3ZmE3ZjkwNCByZWxlYXNlMjUtbWFpbnQKKzU1ODg0IDZmM2MzMzVlZjcxNmZmZTA0ZDhkMWNhYjI2MjA0OTZmZGNjYzNkNmEgcDN5aworNTU4ODUgOWI2YzQ2OTQ2ZTAyZGQ1Y2ZmMmFkMDljODIwMTc1NmUwNTAxZDZhMSBsZWdhY3ktdHJ1bmsKKzU1ODg2IDY0NDk4NTBjNTc1OWE1MGFjMjZlMTM2MmM4MjNlMTJlOWM5YjU0MTEgcDN5aworNTU4ODcgZDFkNzljNzFmZjYyY2FhZDg4YTRlM2FjYzcwYTAxY2MxMDllMGFjNiBsZWdhY3ktdHJ1bmsKKzU1ODg4IDlkNDA1ZTEzM2QwYjI0Nzc2Y2NmMDM3ZDYxZTZjOWMwZjg3ODQ1ZWIgcmVsZWFzZTI1LW1haW50Cis1NTg4OSA5YmJmZDg0NTY3ZDUwYTQwOWRiY2YzMjBjZmE5YzAyY2E1ZDk5ODI1IGxlZ2FjeS10cnVuaworNTU4OTAgZDBlNGEzMmY2Yjc4OTUxMmViOTQ0NmI1YTk0YjVhODFhODEyZGYzNiBkZWNpbWFsLWJyYW5jaAorNTU4OTEgMTYwYjczMThhM2NhYjZlMmUyMTE0YjNkYjY1MGYyZjA5MDIxMzI0MyBweTNrLXN0cnVuaQorNTU4OTIgMTgwODQ2Yjg3NTVmOTg0ZmIxOWVmYWE0ODMxYzJhMjlhZTQ2OTE1YSBweTNrLXN0cnVuaQorNTU4OTMgMDU2NjI3Y2IwZTQwYTBmY2ZlNTFhNGNjNTU0NjBlZTI1MWU3YzI1NSBweTNrLXN0cnVuaQorNTU4OTQgZjgzY2M5YjMxYTk3N2JkZTk3MzVhYzJkMzY3MzRiMzIzYmIxZjc2NCBweTNrLXN0cnVuaQorNTU4OTUgOTZlZWZjN2E2N2EwZmM1N2UxYmRhNDVlZDhhZDBiOWYxZWVmMmExMyBweTNrLXN0cnVuaQorNTU4OTYgM2U2NGQwZWFjNzc0OGVjOGY1ZWU1MjU5MjcwNzQxOWY2MjFjZTRjZSBsZWdhY3ktdHJ1bmsKKzU1ODk3IGUwZjkyNzQxNGRmYTM5YTE2MjY4MTNlYWJiNTEyMzQ5NjU1NDZkZTcgcHkzay1zdHJ1bmkKKzU1ODk4IDYxZmQ1NDQ0ZDk1ZjgwYmUxNDQ4MWY4OGQ1YzYwNmEzNzBmZTFjZTIgcHkzay1zdHJ1bmkKKzU1ODk5IGZhYTYyNmQ2ZTY3NTE3MmRhYjU2ZDFiYjQ3YmY2ZTY0YTYzYzVlNmIgcHkzay1zdHJ1bmkKKzU1OTAwIDE3MWYwZTA3MzY3MTI2YWNjZmJjMjdmZDhkN2E1ZGI2MmVjN2Q2NjAgcHkzay1zdHJ1bmkKKzU1OTAxIDk1YmU2YzNhZGU2ZTljOTVlM2U1MDE4ZGY1NDQyZmRmOTIzY2U4YmYgbGVnYWN5LXRydW5rCis1NTkwMiBkNjc4YmEwMTc3ZGFmYTFkMjExY2E1YzI2ZjE3MWFmNjNlMGZlYWY0IHB5M2stc3RydW5pCis1NTkwMyAzOTEwNTMzYjY2YzdhZDQ4Mzg3ZjM4NmVjNWNlMWU1MTRkNmY4ZDdkIHB5M2stc3RydW5pCis1NTkwNCAzYzNmNjE1ZWRjZmZmN2EwNWI5NWVlMDg4NjJlOGI2NTdkMmQ4OWNkIHB5M2stc3RydW5pCis1NTkwNSBjNjMwZTNhNjg4ODNkYzM0OTA0NTRlYTdjMmUzOGNjZmI1NDBmNmE1IHAzeWsKKzU1OTA2IDU3YzM0NDE0OTcyN2YyZTRmOTFjZWViZTkyZTYyOTIxMjFhNGU3MDcgcDN5aworNTU5MDcgMDJkM2VkMmNjMzQ3NTkwMDIyYzA4YTcyODNmNzU1N2YyNzZhZjU5MCBwM3lrCis1NTkwOCAxOTBlMmYwNjliMTgxODAyYTYzMTBjMWJjZWRkMDA3MjBkZTY3YzE0IHAzeWsKKzU1OTEwIDVlMTQ2OTY4NjhmOTcxMzlmNjI5NGIxMDQxOWU4M2IxNmZlYWNjNjkgcDN5aworNTU5MTEgNmY3MjIwOGM2NDNiNWU0OTAxYWIxMjRlNTdlODBjNWNiYzZjYThlNCBwM3lrCis1NTkxMiA1YzI2ZmUwN2RlZGY1ZDg2ODViYzEzODEzNTBlMDY0OTkyYTJkZTBiIHAzeWsKKzU1OTEzIDdiZjgzNjA5ODBmMWYzYzE4MTI0MzhlNTcxZDE4ZDBhOThlMTVjOTAgcDN5aworNTU5MTQgOGRiMDY5Njc2MmI0ZjE3ZDczY2M2YWViNGE5NjNjYmQ5YzkzYzljNSBwM3lrCis1NTkxNSBjYTY5M2Y0ZmQwNWQwZTI5YjA4MDgzM2QwYzYzYTQ1M2U4OGU4NTEyIHB5M2stc3RydW5pCis1NTkxNiA4ODEyMTYyZjBmODJhNjk4YzExNjUxNzY0ZTcwMDYxMjZhNTcxOGVlIHB5M2stc3RydW5pCis1NTkxNyA4ODFhYjFkNDE3ZWJlM2ZlZGI0N2I4ZjNiOGNlNGMyMGE1Zjk5MTk1IHB5M2stc3RydW5pCis1NTkxOCA4MDJjODRmOTlhYWQxNWI2NjBiNGVmNTA5MzMyYTk0MmQyZTgwM2NhIHB5M2stc3RydW5pCis1NTkxOSAwNjM1MzBmY2MzMmU5ZTE0NWNlZjJjYTMzYzM0NjZmOTNmYzUwZWEwIHB5M2stc3RydW5pCis1NTkyMCA2ZDY0NzIxZWNkMjY4Y2UxNWUxZTdmYzY4NzQ3Yzk2NzAxYjhjYWI2IHB5M2stc3RydW5pCis1NTkyMSAzZmFhOGM4MDk3MDI2YmU1ZjFjMGQ2MDQwZTk1YTAyNzc3ZmFiODEzIHB5M2stc3RydW5pCis1NTkyMyBhOTlhOTZiNWIzZjVjYzE2Mjc3Y2RjNGY1MGQ5MTY0YzA5NzFjMGI3IHAzeWsKKzU1OTI0IDE3MmRjZTVmYWJhMWRiYWE1NDcyZjgwMWQ1ZWU0M2VkNzY1MGJlYjkgcDN5aworNTU5MjUgMzQ3M2E2ODVlNWU3ZjhlNDRlOWI1MzZhZmYyODk5YzM4ZmIxNzA0MiBweTNrLXN0cnVuaQorNTU5MjYgYWYyNjA4MDA0MDIxZDZlZGIyMDdlNGY1ZDE5NTJkMThmOWNmZmNjZiBsZWdhY3ktdHJ1bmsKKzU1OTI3IDA0NTliODhlMTRiNDE0ODM3MjQ0MzA2MmRjMDNkYmEwMDM5ODk2MmQgbGVnYWN5LXRydW5rCis1NTkyOCBiYTVkMWEzOTc3ZTkzZDEwZGUyOTc5ZThiYmQwNWFmYzM4OWFlNDQ5IHB5M2stc3RydW5pCis1NTkyOSAwYmQ3NTkxNmVjNTgxOTEyY2EwZDNlM2RiNzZhYzkwOWI1MmJhNThmIGxlZ2FjeS10cnVuaworNTU5MzAgZDBjZmZmODkzMGU1NWFlZTcwZWExMzhlNWJmOGEwN2JmNTlkMTA5MCBsZWdhY3ktdHJ1bmsKKzU1OTMxIGRjN2E4MmM3Y2U5ZWNiNTg1YzI4YzBkNThiOGRmMmYxZGVjNTE0ODYgbGVnYWN5LXRydW5rCis1NTkzMiBiYzkwZmM5YjcwYjc2MjM5N2ExZjg0YTQ1NDY0YmNhYWZiODA4YzhiIHB5M2stc3RydW5pCis1NTkzMyA0ODc3MDA4MDc0YTkxYjgwNDQ5MDRjZTU0MzU2ZTQ1YjVkMWZjYmE5IHB5M2stc3RydW5pCis1NTkzNCA2NTdmZTc5YTZkZmViYjNhNTA3NmZlYjlkNzMzZmRmMTBiODIzN2U2IGxlZ2FjeS10cnVuaworNTU5MzUgZThiMjA2MGNjYjU5YzdhYjUwOWEwOGY1YmZiOWFhYjMzNzg4MWJkOCBweTNrLXN0cnVuaQorNTU5MzYgNDViYjk3YTRlOGI2NzExNzhiNjUzZDAxMTUwYmJiZmE2YThmZWUxYyBweTNrLXN0cnVuaQorNTU5MzcgNGZiODVlNmY4MmU1ZTJmMDMyMmM2NWIyMjc1ZjZiMzQ2MDVkMWFjZiBsZWdhY3ktdHJ1bmsKKzU1OTM4IGU5ZmIwNmI0NDQ2ZTBlOWU5NGU5NjRjNWNiYzZmMjRhMWE4ZTY5MDcgbGVnYWN5LXRydW5rCis1NTkzOSA1NjA1NzE5YmVlZTNjYWY1MzgzY2M1ZjU4YjA4YjE3NWNkMDQ3YzZjIHAzeWsKKzU1OTQzIDgyNTA0MWZjOGUyYzFlZDRhM2JmZjE3NjQwNThiODUzZWZkZjg0MTkgcHkzay1zdHJ1bmkKKzU1OTQ0IGNlNjNhNWRjYjBhZjEzNDE1ZjliZmE0NzU1MWNhNDg3ODljYjAyNWYgcHkzay1zdHJ1bmkKKzU1OTQ1IGY4MzNiNDNjMjc1Njg5ZWIyNDRlNmJkMWQ0MDg1MjU2MWYwZThjZTggcHkzay1zdHJ1bmkKKzU1OTQ2IGZiYWJkYjBkN2RkMjJjNGE2MTY3NTFlODdlOTE3MGQzNzBjZmFhMDEgcHkzay1zdHJ1bmkKKzU1OTQ3IDhjYTFkM2E3ZjRmMGY5ZGY3ZTg0MjkxMmFlNzc4ODU1ZjkzNjNhOTAgcHkzay1zdHJ1bmkKKzU1OTQ4IGRlODgwMzgxNjU0YWY2ZjcyMGVmZDQzMzMxMGJhMTUzOWU3ODVmNjMgbGVnYWN5LXRydW5rCis1NTk0OSAwMzE4YTBmNTQ1MjBlNDI3MWE5OGMxYjc5MDE2ZDE3MjdhOWJkMDJlIHJlbGVhc2UyNS1tYWludAorNTU5NTQgNjBiZTI3NjEwNTdiZmRkM2U0MzE4Y2E1MDNhZTk0ZGM4OTZkOTYwZCBwM3lrCis1NTk1NiBiNTM5MTIxNGRmMzVkZWU3ZTY1ZjY5ZjlhNGM0OGE2MGUxNTEzODEyIGxlZ2FjeS10cnVuaworNTU5NTcgM2Q5ZTBlZmNhNWQzNTI5NjQzZGJhYzlkZDc3MGYzMmE1NDQ4M2Y4YSBsZWdhY3ktdHJ1bmsKKzU1OTU4IDUwYmViZWRjNjE0ZWQ1NGQ1NDQzOWM1YmY2MmUwODNjZDVhMWUyMTYgbGVnYWN5LXRydW5rCis1NTk1OSA5ZTExNGIxZmQ5NGU4MzgwOGZmNTA4MjBjZjRhODlkYWQzNzEyNmMyIHAzeWsKKzU1OTYwIDA1ZjFmZDMxMzQ0ZGQ4YmU2ODA4YTRkMGVlMjllZmZlMTJlOTIzODQgcHkzay1zdHJ1bmkKKzU1OTYxIGZmYjFhZTcyMzNhMjI5OThmMTk5MWE1MGEzOGNlNGI4NWY3ZGE5NDEgcHkzay1zdHJ1bmkKKzU1OTYyIDM3MTg5ZTM3NWVjNzk2YWIxNjA3YzVkM2Y5ODE5MzNjYTc2ZTAwOWQgbGVnYWN5LXRydW5rCis1NTk2MyAyMjljMjhjYjlhZmIyMzI5YzBmNTU3YmFkYmQ1YWYwOGIzNDYyZDczIHB5M2stc3RydW5pCis1NTk2NCA1MzY5OGY5YTRlYjc2ZTU0OGIyYTBiNjc2Y2FhNzc4NTNkNmQwYjBlIHB5M2stc3RydW5pCis1NTk2NSA1Njc1ZjZjM2ZmODNkMWYzMDdmMTI5ZjAyZmQwY2FkMGY4YThhZjdkIHB5M2stc3RydW5pCis1NTk2NiA5NzM5OTJhNzQ0MGExY2M1ODIxMDg1MjU4Y2M2NjM2ZWQyOTJhYzM3IHB5M2stc3RydW5pCis1NTk2NyBiN2U1NDk4NTczMjE1OTdiYTlkNDdkMzUyZTM3Y2M0YmRhOTQ2NTU5IHB5M2stc3RydW5pCis1NTk2OCAwZTAxMGRiMTIyYzcxYTJlMjNjNjJlMDUwYWUyZGVmY2RhNWM5OWIwIHB5M2stc3RydW5pCis1NTk2OSA4NjkzN2IwY2Q1NmE2YzBhYWI5OTAzNDM2ZjE3NTc5NTQ4NWQ2YTJkIHB5M2stc3RydW5pCis1NTk3MCA3MmZjN2QwMjlkM2QyYjNjMWQ2ZjEwODNmNjk0MmJmYTZmNzQwNjQwIHB5M2stc3RydW5pCis1NTk3MSBkMTdhMjcyNDc5ODYzMDI2NWFkMDM1NGQ5NjQ2NDc2MGJkOTc2MmE2IHB5M2stc3RydW5pCis1NTk3MiAzNjU2N2ZlMDJlYTVkMTExNGQxM2FhZTUzN2Y5NWQ0NzBhMTE3MzJmIGNweV9tZXJnZQorNTU5NzMgNDk3ZmFkZTFmODczNDgyNDZhYTQwNmQ3YzRlODM0YzljNzI2ZmI3NyBjcHlfbWVyZ2UKKzU1OTc0IDJjZjdjZTQxZWM2MDM1OWIyOWMwYTk3YWU3ZDBlZmUzMTA1NTA4ODQgY3B5X21lcmdlCis1NTk3NSBmZDhkZDc0NDcwZjk1OTA0N2VmOTM0YTk5ZDVmMDM0NTQyNTk5NTc4IGxlZ2FjeS10cnVuaworNTU5NzYgNDRiNDRiMGE5ZmUyNTdjNzQ4ZjkzNzUxZDU3NDAwY2NiNGVhZWMwYiByZWxlYXNlMjUtbWFpbnQKKzU1OTc3IDI3MWY2ODZmNjIxODExZGNjNjMyODIzNDkzNWI0MTA2OGNlOTg5YTQgY3B5X21lcmdlCis1NTk3OCBmNjU2NzJiOGU3ZDFmZWU5NDdlNmZiOTFhODVjOTIzMzIzYzI0OWZkIHB5M2stc3RydW5pCis1NTk4NCA4NWM0NDZmNGIxOTYyMmNjODhjOGE3YWZiNDhlODkxNDMyNTU1ODVhIGxlZ2FjeS10cnVuaworNTU5ODUgNGY2Y2U5OGIwNjBkMWZjNmM5NDU2Y2JkNmY1NGYxYTY1ZWI0YTFkOCBwM3lrCis1NTk4NiAyNDYzMjRiMzk4OTZiMTMwYmQ3MmVkMTg4YzU5YTQ5YTlmN2Y0ZjBjIHB5M2stc3RydW5pCis1NTk4NyA1ODM4YmVjN2MxMTU4YWUzMDA1NzY1ZTYwN2U5ODdkM2IwNGU0OWM0IHB5M2stc3RydW5pCis1NTk5MSA2NzI3Y2M5ZWQwOWZmMWY1YjA1ZGIzMTZiNzA0OTQ5ZDlmYzhiYzM2IHB5M2stc3RydW5pCis1NTk5NSA0ODc3NDdkOTEwYzc2MmMwMmVhM2RlN2FmZDZkMzhmZTE5NDI5MjZiIHJlbGVhc2UyNS1tYWludAorNTU5OTYgZDZkMWU4NmFkNDZjMWU5MGQ3ZThlMzE0NzBmYTRlODI1YTA1NGM5ZSBjcHlfbWVyZ2UKKzU2MDAxIGVkNmM4MmRhMWE2Y2VlYjFkOTVkMTg3OWNkMDQxM2QxZmI2MjU4YjMgbGVnYWN5LXRydW5rCis1NjAwMiA5YmE5OTJmNjRlOTU3ZjA3ODZjMDU4NDQ2MDVkMmEzYWI1ZjNiY2E2IGNweV9tZXJnZQorNTYwMDMgZTRlNmE0ZDdjMTZlOTU4Y2U0OTE0MDI1MzkxYzkxYjhjZTIyYjk1NSBwM3lrCis1NjAwNCA3ZDdjNDgwNTYzZTIxY2NmZGMwNWI4YTdlZjE4MzU0MGVhM2M1OGJmIHAzeWsKKzU2MDA1IDhlODYwOTQzMmU1NmM4OTFmYTNhODFiNTc1MzRiNDhiNTdhODUwOGYgbGVnYWN5LXRydW5rCis1NjAwNiBjZWQ4ZGI2MThlNWI2YmVhOTU5OTY4MTQ4NjQ3NGYxMjRjOTBhZGVkIGxlZ2FjeS10cnVuaworNTYwMDcgNDFkNDVjMjJmMTQ3ODYxZDI4OTk1ZWM3NWZjYzgwZDBlMjhhOWE5NSByZWxlYXNlMjUtbWFpbnQKKzU2MDA5IDg1M2I4NDA5MzE1MTQ2ZjQxMzI0M2YwZWNlOTY0YTAzNDY0NTIxNTcgbGVnYWN5LXRydW5rCis1NjAxMCA1NmVjMzQ3ZGE4ZTQyZjRkNjQ4Zjc1OWEyZTVhMGIyMjY4MDY1M2FkIHJlbGVhc2UyNS1tYWludAorNTYwMTEgYTlhZWNiZjViMTNmMDIzYzdkYzk4NzIyMzMzODhiNDY1OTIwMjA0MCBsZWdhY3ktdHJ1bmsKKzU2MDEyIDAyZGE2MzA1OGQ2YjE0ZTlhMTA2NDQyOTg5NmViYmE0NmZkYjVkOTggbGVnYWN5LXRydW5rCis1NjAxMyA1OTQ5N2VjMjhjYWFiZTEzNDJhNjQ1MTMyYTM3MDE1YmU0MWQyM2NhIHAzeWsKKzU2MDE0IDA4MDUxNTc3MzRmOGQ5ZGMyMGY4YzczZDk0OTU0ZmIzNTEzMDQyNTMgcDN5aworNTYwMTUgMjU5ZGUzODc0NDIwNjAyMjI0Njc5MDQyZTQ4NjkyOGMzYTdjOWMwMCBwM3lrCis1NjAxNiA4MjgyM2UxM2I2NmNkOWU2MGIwYTZhYjJjYTQ5OGFhNmQ4MzA4ZTE0IHAzeWsKKzU2MDE3IDBlMjA0MzYyMzI5ZWRlNzI5NTRlMDNlOTczMDY0Njg1MmVmOTJlYWUgcDN5aworNTYwMTggYjQ1NjVlMDk2MTMxZjFkMWRmMDQxNzk4NTdmNzAzOGMyNTZiNDk5YiBwM3lrCis1NjAxOSBiMmU3MzM2ZmViODI2YTc2ZGJhZDk2YTgxNmZhZTRiZGJkNjM2YTM2IGxlZ2FjeS10cnVuaworNTYwMjAgZTRmNjQ5YzRmNDU3MjVlZGY2ZDliYmRjNmU2NjE4ZmJjNzAzOTY2NiBweTNrLXN0cnVuaQorNTYwMjEgMzJmZTJiOWU5ZjExMTQzM2M3Nzg4MjExMTg5ZTAwOWM2YzExOTM4MyBweTNrLXN0cnVuaQorNTYwMjIgZWJjODdiOTRlNmVhYjVkMTAzODAzMDk5NTgzYmJiYzMyMjM4M2ZlNiBweTNrLXN0cnVuaQorNTYwMjMgYTRhZTYyNjUzYTVjYjE2OWNkZTBmNWFlZmQ1MGJhMTRiZTBhYzcxMSBsZWdhY3ktdHJ1bmsKKzU2MDM3IDdjODkyZTczZThlNDlmNTA1NThhMjYwOTFmMjE2OWFhZjliNGM2ZTUgcDN5aworNTYwMzggYWFiOTA4MGFjNGM3ZWEzNjllMmQ3OGEwZDE2NGFhMGVmOTU1MzZkMCBsZWdhY3ktdHJ1bmsKKzU2MDM5IDY2YzgzNDdhNjRkZGFlZDA1YzFkZDg1ODY4MDZiN2U4NjY4OTU4MWMgcmVsZWFzZTI1LW1haW50Cis1NjA0MCAwNGE0MTg1YmQ0ZDNjYzE2NTM1ZDA2YzkxZDk2NWY1YTZlMzRiNTdkIGxlZ2FjeS10cnVuaworNTYwNDEgNjdmNzA5N2MzNGYzNDk5ODI4MDUxZmFjNmVkMzI0NDkzZDA1MTdlNiByZWxlYXNlMjUtbWFpbnQKKzU2MDQzIDcwYTA4MzFmZWRhNjkwZTQ0YTUyOTgxMGYyOGJmMjk4Y2JjZWIzMDggcHkzay1zdHJ1bmkKKzU2MDQ0IDRkYjBhMGNjNTdhYmVlOTU0MTFjZTBkMTk5Mzc0Y2VmMmYyOGQ0MmQgcHkzay1zdHJ1bmkKKzU2MDQ1IDA0MTM5ZTMwZTY0ZGE5NTFlZjdmZDU4OGYzZmEyN2I3NzBjMDY2OWQgZGVjaW1hbC1icmFuY2gKKzU2MDQ2IDg0MjUzMzQ3N2NlYTU0NDQ5ZWIxNzc3YzYyNTYyMTFmNTUxNDI1MjYgcHkzay1zdHJ1bmkKKzU2MDQ3IDFmMDZkNWVlNDBiZDdmMmMxYWM4N2EzMDFmNmI4OTUyM2EwNWUyOTkgcHkzay1zdHJ1bmkKKzU2MDQ4IDY3MTBmNDUzY2Y0YThhMmU5NTc1OWI3YmYzZmU4NjI3N2QyMGZmODUgcHkzay1zdHJ1bmkKKzU2MDQ5IDM4M2M4OTA3YmVhMDQ0ODAzMWRmYjg0ZjdjZTUxNDNlZjhlNDI3YzYgcHkzay1zdHJ1bmkKKzU2MDU4IDZiMzI1YjA2NWFlZGFlZjMxZGFjZTViYTk2ZTc3Y2QzYzFhMTkwZmUgYmNhbm5vbi1vYmpjYXAKKzU2MDYwIDM5ZWFhOWMwMjQ2ZTRhMmIyMDgzOGQ0NGM2ZWYyZmI4OTBjOWI2YmIgcDN5aworNTYwNjkgZTEzZDViMTA1M2VmODMxOWZlNmYxZTIwODc2M2Q4NDJlMjM2NmQwOSBwM3lrCis1NjA3MCBiZTlkZTA1YmI4ODljYzJiOWQxMWVkMDU3ODk1ODM0NmVhZjg4YjgwIHAzeWsKKzU2MDcxIDk1OTI3Njg0NDc2YmUxNmJkYjNmYTA3ZWY1MmU0YTcxZGI4MzliNTAgcDN5aworNTYwNzIgZjk3YjY2ZTlhYThmMGQ3YjY2ZjZhZDJjMGZiNGE2ZjJlZDkzOTZiNyBkZWNpbWFsLWJyYW5jaAorNTYwNzMgNDU5MDEyOWU0YzJiNWRmOGQ0ZDI2N2RhODllMmRjNmQwMzE3NTRmNiBweTNrLXN0cnVuaQorNTYwNzQgNzljMjY1NjA1NmY2NzVlYWE4NTBhMjViNGUwMTdjZTUyZGY3ZDQ5MyBweTNrLXN0cnVuaQorNTYwNzUgOGZjOTMyMTVjMGNjZmJiMDQwODgxNGNhNzNmZmVmMzAzZmI4NmRiNyBweTNrLXN0cnVuaQorNTYwNzggYzI5MWQyZjZkMDE3ZjI1MTVmY2Q3MTk0Y2RjNzVlOTBjYmY0MjRhNyBjcHlfbWVyZ2UKKzU2MDc5IGI5YmY3Yzc2MGExMDI1YmJhZWM3YzI5MTQ0MzI4YWQwZGRmZTcyOWQgY3B5X21lcmdlCis1NjA4MCA5YjU2YzkxNjI1MzQ3NGFhNzZiMTRiN2Y2OGEzYjk5NGUwZTdlMGVmIGNweV9tZXJnZQorNTYwODMgZTg3NmY2NDM5ZGM3YmM1YzJiNjY1ZWRmODY4ZGU0NGI1N2NlYTY0OCBjcHlfbWVyZ2UKKzU2MDg0IDQxZThhZDJjOWJhOTkxYzk1YTAyMTM5NGM5ZGM1YmYyODQzNjlkMzIgbGVnYWN5LXRydW5rCis1NjA4NSBkODM3YjU4NDZkNDE0ZmNkODBmNjlmNTEzOGZjMGY2MzhiMDExNjNlIHJlbGVhc2UyNS1tYWludAorNTYwODkgOWE2YWM5YTdlM2E0ZmY5ZmM2OTEzYTI5MjQzMTMyMmRhNjhiNjgxZCBwM3lrCis1NjA5MCBkYjMyMDg3MDRhYzBhZjlkNDkzNzQ0YTBkZDI2MDQ1Y2IxNWNjMTU3IGJjYW5ub24tb2JqY2FwCis1NjA5MSA3MDViYzczZWU0MzMxYzhjMzBjOGNjMjNmMjA4MWYwYzM5NjliZDY1IGxlZ2FjeS10cnVuaworNTYwOTIgYjAwNzRmZDkyNjIxYzY3M2MxNzJiZTYzOTJhMDAyN2JkM2RhOGM0NyByZWxlYXNlMjUtbWFpbnQKKzU2MDk1IGJmNmViODg0N2E0MjQ0MDI5ZGIwZmRhNTNiNjhhNTg1MDk1NWE4ODEgYmNhbm5vbi1vYmpjYXAKKzU2MDk2IDE1OTAzMWRiOGU5ZjI4NTczMDc1ZTVlYTVhNmIyYzc1ZjMxOWY4OWEgYmNhbm5vbi1vYmpjYXAKKzU2MDk3IDYzM2IwNDk0N2FjNDYwNWMwNjRiOWJmODljMmMwZDc2Zjk1ODFjZjEgY3B5X21lcmdlCis1NjA5OCBiYjA5ZWFkMDQ4NDA1M2FkYTk1NTg3MDcyZDgxM2YyY2JmMGFmZjU5IGNweV9tZXJnZQorNTYxMDAgYTIwMDI0MGRlYThhYjc2MzllNWJjYWU0NTYyOGQ4OWZlMDAxZTg1YiBiY2Fubm9uLW9iamNhcAorNTYxMDEgM2Y1ODljNTY0NDI2ZDg3YzFkMDU3MmQzMDJkZTYwOTUyMzUxYmViNSBiY2Fubm9uLW9iamNhcAorNTYxMTEgN2ExMThhYzE0OWEwNjY3MDAzYTVlZmYzZGMyNmYzOWFlODZlZjNkNiBiY2Fubm9uLW9iamNhcAorNTYxMTIgNTBkMzI2NDdiMDM1NjUyYWIyNzUyYjczMjAwODZkMjdlYzJjNWVmZiBiY2Fubm9uLW9iamNhcAorNTYxMjMgNWYxNDhmNmUwYTQ2Nzk4ZWFlYjI1NWRiZDI4ZDEwMDdhMWExNDEyOSBjcHlfbWVyZ2UKKzU2MTI0IDMxNGFkYzNiN2JiNDc5OThiOWRlNjkzZDEyNmE0MzZhZmNmNDE2ZWMgcDN5aworNTYxMjUgN2ZmMzVhZDQ2NmVjNTVlOGRiM2JmMzNjNzBjOWM3ZjYxYTg2MDM3YyBweTNrLXN0cnVuaQorNTYxMjYgODYzZWQ3Y2Q0NWRjOGVkNTY2MWQzOTcxY2YwZGE3NjJkMDcwYTBkYiBweTNrLXN0cnVuaQorNTYxMjcgNDE2NzY4MGIzYWUyNGYzZjYyYzEwOWJjNGRmNmYyZWIzMmI2MTRjNCBwM3lrCis1NjEyOCBhODU4MmUyNTc0OGI3Mjk1N2ZjZDQ3ZDI5ZGExNDNiZjQyZTZiNjMxIHB5M2stc3RydW5pCis1NjEyOSBkYTRjYzY3NjczYTg1MWI2ODk2MTE3YzI5YTA0MDAyOTJlYWEzMzRkIGxlZ2FjeS10cnVuaworNTYxMzAgYzc2YTk0MzIyY2NjODhjZmM0NDE5N2FmYmRmNTI2NzhlYjhlMThhMCByZWxlYXNlMjUtbWFpbnQKKzU2MTM0IDc4YmMwNzhjNzM1MGUyZjlmZjYyMWFmNDMzNjBlMTYwZjMxYWQ4ODYgcHkzay1zdHJ1bmkKKzU2MTM1IDgzNzUzNTk5NDIwZGM5MzhiMmNiNWUwNTE0NzQwZDE1MTBhZDlkY2YgcDN5aworNTYxMzYgMjg5OWNmOGNhNTcyNWYwYTA0MTk5ZDI4YWU2YjNkOWJlMzJjNTAwYSBwM3lrCis1NjEzNyBkY2NmMTRmZTAwZWNkM2NjMWU2NDdhZTEyMzEwZDcyOTMyMGY2YWMwIGxlZ2FjeS10cnVuaworNTYxMzggOTA4NTgwYjljOGUxMGJmMmI0MzNjYmU5ZmM0Y2MxMGVjN2Y3MGM4MSByZWxlYXNlMjUtbWFpbnQKKzU2MTM5IGY1MzU3MTI0Y2VmZTU0MjEyZDIwNDJkZDU3M2FkYmM3Y2IyZDU4NTcgcDN5aworNTYxNDAgMWY3YjY2YTlmZmIwZDI3MmIxN2IwZDlkNjA5MGFiN2Q4NmE4MTM4MCBweTNrLXN0cnVuaQorNTYxNDEgZTNiY2I5ODRiMjRjOGU5ZDkxOWE0ZWE2NjliN2YyMTU1OTFiZTM4ZiBiY2Fubm9uLW9iamNhcAorNTYxNDIgZDRjNGY4OWM3NzdkNDUzOWFkZWVlYjNjYmMwMDgwMTI4OTcxYzJkNiBwM3lrCis1NjE0MyA0MDdkMTc0ZGI2ZGVjN2ZmNzdhNGE3YjA2OTM0NjNiNzQ3YTJkMDFiIGxlZ2FjeS10cnVuaworNTYxNDQgYzNlYTI3NzljNjM1OGE1MjUzNWEyY2U2NDYyNzY3YmY4YzA2YTNmYyByZWxlYXNlMjUtbWFpbnQKKzU2MTQ3IDYwNGJmYTYzYzExMzg5ZmRhOTNiYWI3ZGYxNDRmZTk5OGUwMWJlNTcgcDN5aworNTYxNDggMjEzNzQzNjkzNzVjMTY1OThmNzExNWJmYzNjMjBiZThiZDQ0Yzg3ZCBjcHlfbWVyZ2UKKzU2MTQ5IGFiNzRiZGJmNmRhYWZkYjdlMWNmOGY3NTEwNjdmN2QzOGFlYzczYWIgY3B5X21lcmdlCis1NjE1MCBlYjJkNTI1ODYwMTc1ODc5ZmFkNTk1NjVmNDJmY2M4MDEzNjlmN2U3IGNweV9tZXJnZQorNTYxNTEgZmViMjc2YzA4OTE3MWM4ZGYyODNhMWQxZDhiZWE2YmI1YmU3YzdlNSBjcHlfbWVyZ2UKKzU2MTUyIGMyY2MxMjAzYmQ2OWM5NmVkOTgyM2IzYWJiZTM5MmM2YTlmMDRkODggY3B5X21lcmdlCis1NjE1MyA4MTdjYmZmOWZiZWI0ZGI0NDVlYTQyNDUyNDg5NGJmNjI1NDAzMGY0IGNweV9tZXJnZQorNTYxNTQgOGExN2U0YzQyYTM1ZmI5NjliOWE3ZTQ2NGY1YjA0ODllYzBmZjU3NCBjcHlfbWVyZ2UKKzU2MTU1IDViMWU3NGZjNDJiODFmYjUwNmMxNTQ1Mzc5MDlhMWNkNDBmOWMwYTIgcDN5aworNTYxNTcgYTUzZTQ4YmU2ZGY5NTUyYzYyZmQ2MTMwNDdjMWM2N2M5NzFkNDU5MCBweTNrLXN0cnVuaQorNTYxNTggMGRjNjI2NDdhZmYwY2NkYzc5NTQxYmI0OWE2OTcxZDgyOTBiNmU5NCBweTNrLXN0cnVuaQorNTYxNTkgYWU4NzAyMjhkNWYzMzRlMzkxNzI3NTYzZGFjOThlY2RjMDY4YWIxMyBweTNrLXN0cnVuaQorNTYxNjAgMzFmNDc3YjA4OGM5ZjYyM2JiZmExZTMxYzJlMDNjMzMwM2Y1MWMzMCBjcHlfbWVyZ2UKKzU2MTYxIDhlZWFhOTkyMzkwMWYzODg0NTIyMDk3N2ZkZWI3MTE3MzVlOWYzNTkgcHkzay1zdHJ1bmkKKzU2MTYyIDAxMDJmNWU1MzcwMzlmNjI2ODY0Njc3ZjhlZTIwZTk3Y2U0M2Y3NzIgcHkzay1zdHJ1bmkKKzU2MTY0IDUxODdlZDY4YWJlMGI4ZDNlM2U3MWExYWRkNDRlMzY4Mjc1YWJkNjcgcHkzay1zdHJ1bmkKKzU2MTY1IDhhOTRjZTUwMjIwOWIwOTU1YTQxZWI2Mjc1MTg1ZDI0MTFmYWNjYzIgcHkzay1zdHJ1bmkKKzU2MTY2IGU0NzY5OTcwNDhhMGFiNTEzZDU3ZjIyMWVlYTAxMmFjMGU4MGFjMzIgcHkzay1zdHJ1bmkKKzU2MTY3IGU2YzVmZmE2ZGM2NzM4MTRlZmM5NDhkODI5OGQ5ZWE0MDE5Y2U2YTQgcHkzay1zdHJ1bmkKKzU2MTY4IDQwYTZiOTNmOWUwYmU4YTExNmRjNmY2YThjOWIxYzE0ZjZlMTI3MGMgcHkzay1zdHJ1bmkKKzU2MTY5IDNmNzgyNzgxMDIwYmUyMmY5NTFiMzJjZjQyZDZhMDgyMTQ3NmZjZTYgY3B5X21lcmdlCis1NjE3MCBiMGVhYmE4YjlmMDI5MzU2MjMzYWUxYjc3MmJkOGZhOWE3YjQyMDcwIGxlZ2FjeS10cnVuaworNTYxNzMgNzk2Yzc5NjIzOTM4MzY3NTFjOTYyMGNkMTI0YzJhNThjYzQ2MDFjMCBjcHlfbWVyZ2UKKzU2MTc0IDhiMmZlYmZkYTVmOTlhMzllZTc2M2FkZjMxZTBmZTg5NmI0MThhOWUgY3B5X21lcmdlCis1NjE3NSBjNDA0NGU0N2ZjMWFmZWQwZTc0ZjU5ZmJkNGE4ZDI1YjczMGQyZDQ1IGNweV9tZXJnZQorNTYxNzYgOWU1YTM5NjA5YTIwOGRkMWVkMGE0OWVkZjRkZTcwMmQyMDJiOWFkYSBsZWdhY3ktdHJ1bmsKKzU2MTc3IGQ2MzYyZWQ1NDhiMGIxNzBkYzUyM2I5ZmIwMzBlOTViMDBlYmMyM2QgbGVnYWN5LXRydW5rCis1NjE4MSA3MjI0ZTQyMDgxYmQzODFiYjk4OGFjNjBiNTk0Njk5MDE1YjcxNDBhIGNweV9tZXJnZQorNTYxODIgZGQ4OTYwNTEyNmU1ODVjZGZkMWQ3ZDA2ODhkNGI4ZmM0OTQ5ODE1MCBjcHlfbWVyZ2UKKzU2MTgzIGRiYzc1M2MwMjAwNzM2MmRlNzA1OGM4MmFhMmNkNDFkZDNkNzEyNzUgY3B5X21lcmdlCis1NjE4NCA5YzA4ZDkxNjljMWNkNDQ5MjE0MTEzMTMxMTMxYzE3ODNlNzVmMWI5IGNweV9tZXJnZQorNTYxODUgMzc0MTNmNjIxMTIwYTI4YjA0NzViOTYwODk3ZDRkNmQ0MzhmZjQyZCBjcHlfbWVyZ2UKKzU2MTg2IDA0ZTI0Yjc5MjE4YWYyODkxZDgyOGQ3ZDk0ZDQ2ZmVlOTk2NDYxMGUgY3B5X21lcmdlCis1NjE5MyBlNjJlMmI4MTEzNmEyMmQ5NjdmYTQ3MmNkNDI4YjJkZjVmYzI5MzI2IGNweV9tZXJnZQorNTYxOTQgYjJmZmMwMjg1ODVmYjJkMGZhODQ5NDFlZjljNDlhMDJlMTJiMzJmMSBjcHlfbWVyZ2UKKzU2MTk1IDRmYTY4Mzg3YjZiMzU5ZTljMDUwZTYyZDdlMTU4NzUyMDkzNjNiZDIgY3B5X21lcmdlCis1NjE5NiBhYTMwYjJiMDU5OGU0ODA3Y2JiNDk1ZGNkNWI3YjgyOWM1NzEwMjk5IGNweV9tZXJnZQorNTYyMDIgNTM3ZmU4ZGI4MzM0OTg5ZDAzMTE3OTc0ZmI2MmYyY2MwMjk3OWIxYSBwM3lrCis1NjIwMyA3NGQxMWQ0NDI4OTg1Y2E4NjRkMDljZThhNDMxODYwYWZlMGJiMDM0IHJlbGVhc2UyNS1tYWludAorNTYyMDQgNzgyZjRiM2U0ZGIwOGUzNjBkMmEwYzJmOWU1YTM2MTc3MTAxNGU1MSBsZWdhY3ktdHJ1bmsKKzU2MjA1IDI2MzhiOTc0OTM3MTQ3Yjg4MTljNmE0Y2Y5ZmY0YjJiYmYwMDkwMzEgcmVsZWFzZTI1LW1haW50Cis1NjIwNiBlYzRiNzNjYjI0NDM5NDc2NzFiMTczZDQ4Yjg3NzFjMjI5NjAxMjUwIHJlbGVhc2UyNS1tYWludAorNTYyMDcgZDg5ZDkwMGM1ZDc4MmQ2ZjA0MWEyMjAwODJiMWYyZmJmMjI1MThlYSBsZWdhY3ktdHJ1bmsKKzU2MjA4IGJmMjIyZWJmZjBlNTQ3NDNjNWM0YjdjNjZhY2ZhOGZkZGI4NTc1ZjAgcHkzay1zdHJ1bmkKKzU2MjA5IDBlYjg0MGYyZGFmYTlkOWEyMTllOGM1YTBkYmEyMDU0ODU5ZDBlZGEgcHkzay1zdHJ1bmkKKzU2MjEwIGE2MmVjY2I1M2YzMDFiYjMxYjRmYmY5NmQ5M2Y4NTg4MmJhZjJhYjAgcHkzay1zdHJ1bmkKKzU2MjExIGJmZjllYmFiZmMxNTU5MzljNDUyN2VhZDg2MjFhMzViZTY3ZTg5MmMgcHkzay1zdHJ1bmkKKzU2MjEzIDE2ZTgzYmY4MWRlOTg4OWViOGNkMDJiMTkxZWM5ZGExMjM5OGIyZGYgcHkzay1zdHJ1bmkKKzU2MjE1IGRmYjg4NThjMDY2NDBkZGU0NmZmMmFlZjdmMmZlMjM0NjE5YjBmYzQgcHkzay1zdHJ1bmkKKzU2MjE2IDc4MjAzMjk4YjQyYjc5NDRiNWJhY2Y5ZWViYWNhNmJhMWYzMThmZTEgcHkzay1zdHJ1bmkKKzU2MjE3IDI5YmE2YzM5OTA5MDFkZTY5MDRkYzU3MGM2NzI2MjEwZjU4ZDBjZjQgcHkzay1zdHJ1bmkKKzU2MjE4IDZiMzBiZDEzMGRjMTdkOGMwZTdkMzQ0NDBkNTlmZGRiZjFmOWEzODUgY3B5X21lcmdlCis1NjIxOSBmNGI5OTE5NTY2MmZkZWI1Zjg5OTE3YTIzZmI3MjRiYjUwZWZhMTZiIGNweV9tZXJnZQorNTYyMjAgMzM1MDZkMTNkZDc5MGRkYjhjOTg3NDViMDNiOTRjYWExNzZiNzkxOSBjcHlfbWVyZ2UKKzU2MjIxIGQ5ZDQ4MmQwMzhkNWRiMjFkOTg1N2ZjNDVkMWU2MWI2YjViNjFkYmIgY3B5X21lcmdlCis1NjIyMiA0MDJhMDZlY2M2MTMxMDZmMjkxNzQ4M2Q0YjVhODk3MDE4YjkwNWZmIGNweV9tZXJnZQorNTYyMjUgZjA5NzlhODY2NzBmNDdjNzhkM2RlNDExYjQzMDk5Mjg4NjIzZDUyYyBweTNrLXN0cnVuaQorNTYyMjYgZTM4MDQ3NTUwMzgzNGI2OGMyYjQxYjMwNWQxYTJjMjA3MTExNDVkOSBweTNrLXN0cnVuaQorNTYyMzAgYWNkMWY2NDI3MDZmMmM3Nzc4OWE0NDkwMWY5YTkzNjQ4NjFmNTU0ZSBweTNrLXN0cnVuaQorNTYyMzEgOWQwZDhjYWUxY2M3M2FmYjIyNTk4OGY3YmZkOTgzZjJlYWJiNjNjYyBweTNrLXN0cnVuaQorNTYyMzIgM2RiMDA4M2Y2NjgzN2QwMTJkODYwZDYxMjdjODQ1OGIwNjFlOGI4YiBweTNrLXN0cnVuaQorNTYyMzMgOTFhZGU2N2FiMjMwZGM1MGNmZjhhOWVlOTZkNWRmZmY3NGY3MzE0MCBweTNrLXN0cnVuaQorNTYyMzQgZjBhOTYxM2ZjZDkzM2JhY2M0NTk3NTBhYThhMTJjZTkwODA3N2MzZSBweTNrLXN0cnVuaQorNTYyMzUgOGNmZGFkMjA0Njc2Mzc5NzFmOGNkNTc3YmQ2NjU4MDI3Mjc3Y2EwMiBweTNrLXN0cnVuaQorNTYyMzYgZGRiOTE5ZGNiNDgyMGZmMDUyMmJmZDIwNWUxNTU5Yjk1MzA4Nzg0NCBweTNrLXN0cnVuaQorNTYyMzcgOGQ0YjY5ZTMxNTgxYmQ0ZDgxMjI2ZDcxN2YxNGE4NjJlNjg0ZTRhZSBweTNrLXN0cnVuaQorNTYyMzggYjJkYzMxNzE4YjAzZjI2NDA3ZGZkNTdkZjcwMjZmOTIyNTYxMTRmMSBweTNrLXN0cnVuaQorNTYyMzkgZjRhMWI3NmE1YTYzZDNhYTRkNmE0MzNhN2MzNzg1MjE5MWIxYzEzZSBweTNrLXN0cnVuaQorNTYyNDAgNTYyMTUwNzFjNzQyZTdiNTA5Y2M3YjQ2ZDE2NjJiYzk2OWM0MTRlOSBjcHlfbWVyZ2UKKzU2MjQzIDlmOTllYTRmODFlOTJmYzkwNTk2YjQxOTdhNzFjY2I4M2M1MDI1YmEgcHkzay1zdHJ1bmkKKzU2MjQ0IDM2NDFhMjA2MzBmM2M4YzkzOGYzNjUxMzljYTJhMDBkZDgxODA5Y2MgcHkzay1zdHJ1bmkKKzU2MjQ1IDBlNDQ2MDgwM2I0YTgwOTM1NDdmMjlkNzM1MWYwMDY3OWY0OTc5NGIgcHkzay1zdHJ1bmkKKzU2MjUwIDhiMzE2MDdjYWEwY2IxODg4Zjc3ZmRlY2I4NzNkZWU3YTNiZjA0NmUgcHkzay1zdHJ1bmkKKzU2MjUxIDliMzg2NjA0MjFlZTliOWZkNDUxMzA3NjUwZjUzNTNiMDk3ZjE5Y2EgcDN5aworNTYyNTIgYmY1ZDA0ZTBkYTRjNzUyMjRkMmMzMmE2YzJlNDBiOWZiNzc0NTU3YSBweTNrLXN0cnVuaQorNTYyNTMgNjIyODA2MjkwOWYzNDdkYjA3NzJhMmU0MDAxOWI0MGU1Zjc2ZWZjYiBweTNrLXN0cnVuaQorNTYyNTQgNzQ3YjE1MTlhMzZjZGZlMDZmZWY3Y2QzOTcxMzlmZDEzZjY4OWNkMCBweTNrLXN0cnVuaQorNTYyNTUgMWRjZjFmMTA4NjJjMDIyMDViZDVjZjQ1MTY5YzA1MTIyZjM3NjRlZCBwM3lrCis1NjI1NiBlOWJmYjI0Zjk2ZTA2M2Q1MDRhNTc4YWVkM2E0ZDI1NDAzZjBjNDllIHAzeWsKKzU2MjU3IDkwZmNkMDgyZGEwZGNhY2U4N2M1ZmNkM2Q0Mjc2YzU3YTM5ZDkyNDcgcHkzay1zdHJ1bmkKKzU2MjU4IDgxOTMwZWFhZTcxNThmYTMwOGIzYjNhOTE3NGExODI4YTIxZTQyZWUgcHkzay1zdHJ1bmkKKzU2MjU5IGU4NDBhNGNmYjQxZjZlODc2MTMwMTcxY2IzN2I5OTVmYWMyOGE3NDIgcHkzay1zdHJ1bmkKKzU2MjYwIDk2M2Y1MGVkMmI0ZjhiYzcxYjc4YjQ2NzA2YjZlZWNkODM0MTYwNGIgcHkzay1zdHJ1bmkKKzU2MjYxIGM2YThhN2RmMzdlZjY1Y2QzOTAwOTkwOGM0MGQ3YmYwNzY0ZTUxNmQgcHkzay1zdHJ1bmkKKzU2MjYzIDc5MDgyY2MxNGJmMTQ0YjI0YTA5OTdhNmU3YmZkMWZkNTQwZTNmNDggcDN5aworNTYyNjQgMWFjMmMxYjgwMzI0MDU0YTA4ZjQyNjMxYTczY2JlYzcyYTJmMmI4NSBweTNrLXN0cnVuaQorNTYyNjYgMDkwNTg4YTE3NDkwMzNiZDJmNTMxZDVjODJjYjc4N2Q1NTA0YWE1ZiBweTNrLXN0cnVuaQorNTYyNjcgNzVkM2NhYTQ2YTkzNmIxMGY1MzA5ZjEwOGIwNmVhMDk4MDdjNzg4ZSBwM3lrLW5vc2xpY2UKKzU2MjY4IGRmNDc5NTBjODM3MDhlOWJjOGMxN2M4NmI1YzFkOTg1MDI5Y2NhZDAgcHkzay1zdHJ1bmkKKzU2MjY5IGJkNGUzNzJmNDc5ODU0MDQ2NzRkNWU4ODllNDVlNmUxNGJmZGI4ZjkgcHkzay1zdHJ1bmkKKzU2MjcwIGEzNTUzNTllNDdiNDU4NzFhNjZjYTE1NmQyYTFjNmRjOWM4M2Y1ZGEgcHkzay1zdHJ1bmkKKzU2MjcxIDViMzkzMWFlMjYyZmM3ZGUwNzRkZDIwZjcxNDlmNDVmNDExNTJiODYgcDN5ay1ub3NsaWNlCis1NjI3MiBhODM4YjhjNjQxMDM2M2M4ZmI1NDQwNzIxZjYyM2MzOTM2MmE4MTUyIHB5M2stc3RydW5pCis1NjI3MyA1MTZkYzcyM2M4OWViYjY5NmM3ZDc4NTE3MGI0OTUwZDNhM2FiMDBhIHB5M2stc3RydW5pCis1NjI3NCAzYmVmYjVhZGIzNGViZTZjYWViYjY5NjZkNzQyODgxYTg5MmU5MzYxIHAzeWsKKzU2Mjc5IGMxYTYwYjRiODNkMzliMjhkMzVlNDcyMjczMDAyZTY3NTU3YTVjYWQgcHkzay1zdHJ1bmkKKzU2MjgwIDA5YmYzNTc5M2JjZGQ1OTM2OTM2OWNmYjdmMzlhYzUyZGVjYmE5ZDQgbGVnYWN5LXRydW5rCis1NjI4MSA3YTI0ZmU3MGMxNmRiYjRkZjYzMDFhNjcwNDZjYjBjNDkwMDJiZjlmIHJlbGVhc2UyNS1tYWludAorNTYyODIgODU0Y2M0ZDVhMzNkOGFmZGM3Y2RiM2FmZGUyNmU2Yzc2MTJlYmQ1MyBweTNrLXN0cnVuaQorNTYyODMgYmJjMDk0YzMyOGVmZDkxZDhlNjg0MTRmODgwZWVkNmI4YzhjMGIzNSBweTNrLXN0cnVuaQorNTYyODQgZTVjY2ZlYjExY2Q2NzExOTkxNDBiNDAzMTg5YzNjM2QzYzU1MWUyOCBweTNrLXN0cnVuaQorNTYyODUgOWI3MmYwNjM2OTg2NGEwM2JhOWJmMmNkMGFmMGQ5ZWMwMDVmN2I2YyBweTNrLXN0cnVuaQorNTYyODYgZDFjN2MyNTQzOTAzYjhkNzI1ZjhhZjQ4NzU5M2I3YTRhMTg3MWFiOCBweTNrLXN0cnVuaQorNTYyODcgN2M2YTc5NWI1MjVhY2Y0OGYwYzNiZThjMThmYzQwMDljYzY5MzkwMSBweTNrLXN0cnVuaQorNTYyODggY2EzY2ZiMzRlM2MyNjM1OTc1ZDUxY2UxODg2YThlMzcyNzEyZTVhZiBweTNrLXN0cnVuaQorNTYyODkgMjNmMWQyYzM2ZDEyY2YzODUyZTM4YjU0ODk3MGI5Zjk3YWZmZDJjNCBwM3lrLW5vc2xpY2UKKzU2MjkwIGE1YzIzNDIyYWY2YzY4YmE1ZmY0ZTZjYTQ0MzUwZTgzN2FiMDVhOTAgcHkzay1zdHJ1bmkKKzU2MjkxIGNhMDY1YjUxYTYxNjZkNTczZmEwMTg3Y2ViNzYwZjEwNDcxYzY2OGEgcDN5ay1ub3NsaWNlCis1NjI5MiBkNWNmMTkxNjk5MDQ2MjczYjcwMjdiMTE3ZWMzZjU4ODk2YzE1NTlhIHB5M2stc3RydW5pCis1NjI5MyAyNTViZDQzY2E3OGY3OTM3OWY2MmE0ODA0ZTVlMzZhMzQ0ZGU3N2U3IGxlZ2FjeS10cnVuaworNTYyOTQgMjNhYzhkMTQwYThhMmU5NWM0ODc5ZGRkZGQzMjZkN2U2ZmE4ZjE0NiByZWxlYXNlMjUtbWFpbnQKKzU2Mjk1IDE5NmU1YzYzMjNhMzZiOGZlYjI5OTYwNTIzZTNhOWY3OWRhNTkyNzcgcHkzay1zdHJ1bmkKKzU2Mjk2IDYzMTlhZGIwMDQxZDZlZWZlYzIwYmNjNjJmM2QwZTQ2ZmJhMGZhYzcgbGVnYWN5LXRydW5rCis1NjI5NyA4YjgxNTgwYWQwYzEwNjA3NGVhNjdkNWIzZDc4Mzg2NTI4MjE5M2UxIHJlbGVhc2UyNS1tYWludAorNTYyOTggODZkMWRiZmM1ODMzMWI2MjA1MzNiZDQyZGYyMDU2ZmI5NGY1MzI1MCBsZWdhY3ktdHJ1bmsKKzU2Mjk5IGI0M2U1ZjMzNDhhZWE5NTJhYzRjOTI0YmY1ZmI3YmI1ZjdhZTViNTcgcmVsZWFzZTI1LW1haW50Cis1NjMwMCAyOTNiODNmOWRhOWZkZGU2NzZkZTk0YWE2NWRkNDM2NGY5NDkzZTc0IHAzeWstbm9zbGljZQorNTYzMDEgN2MzNzg0YmJmYzA5YWU4YmIwNzEzYjhjMjIzYjlkMzQ4NDJiMTkxNCBweTNrLXN0cnVuaQorNTYzMDIgMjQ4YTIwNjk5MGFlMDliOWJlZDFkOWQ4ZjM3NDgzMjNiMmY1MTBmZSBsZWdhY3ktdHJ1bmsKKzU2MzAzIDEwZTljOTBlYWYwM2U2ZGZjOTM3OGM3YjJjYjc4ZWYxODZhNDY5MGYgcmVsZWFzZTI1LW1haW50Cis1NjMwNCAyYzMzZGYwOWMxYzcxZjU4ZDIxMzZiNzIxODYyNDA0YTI1ZDc2NGJhIGxlZ2FjeS10cnVuaworNTYzMDUgYzI1NWMxMGRhYzZhNjkxZWI2NTRjMjRkZjI1ZmUyMTE2NjAyZjFiNiBweTNrLXN0cnVuaQorNTYzMDYgNGM0OWNkNjViNWYxNzA1MmNjYTkzMjRlYzUwOTcyNTA0ODY3NDMyZCBsZWdhY3ktdHJ1bmsKKzU2MzA3IDJhZjNmMDY3YTQzMTAyZGNiM2E1NTA3MDZiNjdkNjFmMTZlMDNlMjkgcmVsZWFzZTI1LW1haW50Cis1NjMwOCAzNDNiNjBiNjA0YmQ5M2QwZTY2MTgwYWVmZTdlMDk3NThjYmYzMTNiIGxlZ2FjeS10cnVuaworNTYzMDkgNzJjNTgzMzhiMjJiNjM5Yjg5OTZmZjRjNTkwZDk2Nzk1NTlhYjE5YSBweTNrLXN0cnVuaQorNTYzMTAgZWM3NDA4NGE4Y2JhMGEwN2ExMDFhNzZlNjc4NGY3ZmY4NTA3ZDQwMyBweTNrLXN0cnVuaQorNTYzMTEgNmNiOWVmYjVjYmU1YmU4NzY4NzIzNTVmMmE5ZTgwOTM0ZjMxOTk1ZCBweTNrLXN0cnVuaQorNTYzMTIgM2UwNmYyYjkwMTAyNjQxMmRmZmY4NzA4YTZmNGZmNzhlMDkxOWFjMSBweTNrLXN0cnVuaQorNTYzMTMgM2ZkMzU1M2UyNTg4NTRlYTM4Mzc5YTdiYzFkMDY0YWNmZGU4N2Y0MiBweTNrLXN0cnVuaQorNTYzMTQgNTg2NjFhODIzMzhlODJjZjEwMmUzMTZlMDE3OGViN2NiMjJiMzA5MyBweTNrLXN0cnVuaQorNTYzMTUgZTcxNWUyMDgxNjM3MWExNDdlZTVmZGIwYmNhMTcxMmM4YjAwYmE4NyBweTNrLXN0cnVuaQorNTYzMTYgMGI4OTc3NDExYjA3YjRlNjg4MjU4NzYwMTgyNjk2MGI5NTI4NzI5YyBweTNrLXN0cnVuaQorNTYzMTcgODRhMjE3NTc5YWU1OWQ1Mzg0OGNkYmUxOWQxZTBmYjVhN2E0ODllZSBweTNrLXN0cnVuaQorNTYzMTggODQyMjlhOTA2NmUyZjg2NjAwYjUyYTRjY2JhMmRjZDA0NjZkOTI4NyBweTNrLXN0cnVuaQorNTYzMTkgMDY4MTIzMzM0NGQ5M2ZkMGRlOWU1ZTM0NjFjODE2MDU0ZTExN2I2NyBweTNrLXN0cnVuaQorNTYzMjIgYjQ1YzBmNDQ0ODEzMWRjY2IyM2Q1ODE3ZmUxZjRlOWQxOTVlNjJlMiBwM3lrCis1NjMyMyAyYWNjNjM1OWQwNWQ0MDU1ZDYyZTZkMDgzZWY5ZDM1YjI2ZGMxODQxIHAzeWsKKzU2MzI0IDQ4YzVhODQ5YTBjMmZjZWZhNWE3ZGUzMTBhNjY4MjcxNjk3N2I5ODcgcHkzay1zdHJ1bmkKKzU2MzI1IDczODQ2Zjk2MjljNTY3ZWJhZmEwZWIwMGFiMWNiZDBjOTdiOTgwMjAgcHkzay1zdHJ1bmkKKzU2MzI2IDQ4NGEwMDk2YmFlOTBmNjYxOWFmYzY5MTZiM2ZmOWZmMDYyZmI1ZTIgcHkzay1zdHJ1bmkKKzU2MzI3IDA0OTRhZTczNTA1ODJiNTgxOGQwOTYxYTVmYzA1NGU4YTg3ODgyYmEgcDN5aworNTYzMjggZmJhZTAxMmZmMjk1ZGNhZjdiYjQwMDRjNWQ3NTM1YzM0YWI4MzlkYSBweTNrLXN0cnVuaQorNTYzMjkgNzY5ZTcwNzhhMmFhN2YyNGQ5ZTk4ZjQ0NDAzZGQzZjlhMDBlYmRjZSBweTNrLXN0cnVuaQorNTYzMzAgN2NjODQ5NmYyMzQ4MGMwNmJkZjNhOGNiMjQwMDE4NzFkNmE4MDY2ZiBweTNrLXN0cnVuaQorNTYzMzEgMmZkMTQ2OTcyM2EwNzAyZWIwOWVkNjU2MWY2NzAwM2JiOWI5YTgzZiBweTNrLXN0cnVuaQorNTYzMzIgYWZlODcxNTQ3YjFhMzkwZjIyYjJhN2ZjMTEzMjQ4MjJhOGVlMjE5YyBweTNrLXN0cnVuaQorNTYzMzMgMTBkZTZhOTFkYTRkYTE5MGNhYmY1NzQ4M2M1YzAzNjEyZDY1NTg2ZSBweTNrLXN0cnVuaQorNTYzMzQgNmEwOTc3NzJlYTg2YjVhNDAxNzU4NzgxODE1ZmUyYWJmM2NiNzJiYyBweTNrLXN0cnVuaQorNTYzMzUgNmU2NWYwOGYxMjc2Mjg2MjFjZTE2YjY4OWRhZWI4OWJlYWZkNGJlNSBweTNrLXN0cnVuaQorNTYzMzYgMWMzNzkwYzgzMWZjMTY1NTZhZjEwZTdiYWNhNzhkYzM2NGI3NTcwYiBweTNrLXN0cnVuaQorNTYzMzcgOGVhZjAzZmMzZjEyOTVkNjE0MmM4YTAyNGYxMGI4MTVlNTk0MTI4OSBweTNrLXN0cnVuaQorNTYzMzggMjJkNjU4NGI4NzEyNmM4ZmI4OTkzODM4MzUwYjkwYjBjOTllYmJkMiBweTNrLXN0cnVuaQorNTYzMzkgNWQxNmY0Nzg0NjVhNTM1NThmMjZkZDAyNmZmOWQ0NjcwY2JhYmRkMCBwM3lrCis1NjM0MCAwYzBkNzUwZWU3NWU0YzI1MjFmNmE4ZDM1NjY2M2U4NzRlYTE0YWU1IGxlZ2FjeS10cnVuaworNTYzNDEgN2JjNDcyM2Y1NjJmYWNlMTFkYzk3MDdiZTk4NDdmNzIyNDlkYjIzMiBweTNrLXN0cnVuaQorNTYzNDIgMDk4MDAzNGFkYWE3MjJiNDY0ODUzM2Q2ODNlZDgzY2YxM2Y0ZjdjZSBweTNrLXN0cnVuaQorNTYzNDMgNjkzYmUyN2Y2MjZmYmJhOTZjYTE4MmY1NTM2ZDZlMzNiNDYxMzZmNSBweTNrLXN0cnVuaQorNTYzNDQgMTdiYjM5ODA0ODNlY2ZiZDIwNjFjYWZkMTYzZDE0MGFmYTM3NTRkNSBweTNrLXN0cnVuaQorNTYzNDUgMTA4OWE0ZjU3ZDIwOTViOWZiZDVjYTNkYTExNTJjYTcwODg3MTQyNCBsZWdhY3ktdHJ1bmsKKzU2MzQ2IGMyODA2NDdjMzMwY2YyYWFkOTI0NzYzNzQ2NWQ0ZjRjNmFmYTY1ZDggcHkzay1zdHJ1bmkKKzU2MzQ3IDdjMWM5MDJkNzAwMDMxMmQxZDg5MDQyNDljM2RlNTVmNzZlNDgyNzggcHkzay1zdHJ1bmkKKzU2MzQ4IDc2MDIxYmJiODljNzM4Mzc2Y2IzOWFhN2Q3OWM0N2EzMWM4OTg2ZTggbGVnYWN5LXRydW5rCis1NjM0OSBjYjg2NWUzOTllODRjNjVhOTgxMmUzNDhiNjdmYWJkYjM4MTBjYjM4IGxlZ2FjeS10cnVuaworNTYzNTAgYWVhZDEzNmNhNDllMjk5NTc4OTcxYjlmMjI3MGI0NzEzNmZkOTQxYSBsZWdhY3ktdHJ1bmsKKzU2MzUxIDBkNjJjZGQzNTU3ZDVhZGY4NmY3NDE1OTg2MTA1ZmYwZDhhZWNhZWQgcmVsZWFzZTI1LW1haW50Cis1NjM1MiBiNmVhYTY5MTY4ODRjZGNmMWY4MmY0M2Y4ZTNjNGI3YjQ5ZDM3NTVhIGxlZ2FjeS10cnVuaworNTYzNTMgZjMzNjU4ZGEwNjM3NTQ2MmI3MGI2N2YwZTk1ZDdmNWVkOWU4NjA2MyByZWxlYXNlMjUtbWFpbnQKKzU2MzU0IDNmODc5ZDcyNmQxODk4MTRjMDE0ODI0YzJhYTRjOGNmNjQzM2E3ODQgcmVsZWFzZTI1LW1haW50Cis1NjM1NSBmOGM3NWU4NDk5NTYwOTQ2NTA2NjdkMTgwMzg4ODkxYzhlMTg5ZDc2IGxlZ2FjeS10cnVuaworNTYzNTYgZjAxYWEzZDE4YzlkM2FjMDA2ZDEzZWI2YTEyZmRmYjFiZDAxZTcxMSBweTNrLXN0cnVuaQorNTYzNTcgNGNmMDQ1OTQxMDg1NDUwZDIxODg2NjAyOWZlMzc0ZGFjZjEwY2Q3YiBsZWdhY3ktdHJ1bmsKKzU2MzU4IDU5OWVhOWU1YzZjNWQ4ZTlhMzY1ODZkY2E5ZmRhMTk5OGQyMTFhMWIgcmVsZWFzZTI1LW1haW50Cis1NjM1OSBkOGJmNDI2NzIzMzA1NmQ1YTM3ZjU4MjhjM2E5ZDEyNjlhY2FjODVmIHJlbGVhc2UyNS1tYWludAorNTYzNjAgYzI5YjBkYmRhM2Y2YWRmOGEyMjRjMjhiNTdlNGIyZGEwOTRmMmRmMSBsZWdhY3ktdHJ1bmsKKzU2MzYxIDBiZmY0YjZiOTJiZTJiNzNmZmEzOWNkZDY3NzM5NTE0MTQ3NDY2NGMgcDN5aworNTYzNjIgNjE0MTJlMjVlNjFlMzBkMWNhZGE0NzNjNDJmNjNmMmQwMjBlM2U4NCBwM3lrCis1NjM2MyAyMDJjMzc4MzU2MjhiOTE1YWQ0ZWFkYmUxNDM2MTExYjBlODBlNzNkIHJlbGVhc2UyNS1tYWludAorNTYzNjQgOGNjNjUwN2IwNjI2YmI0ZTEwZDM4OWI4OTJiNzk1NTcxMGYyZTNjOSBsZWdhY3ktdHJ1bmsKKzU2MzY1IGRhMmY4OTQ4Y2MxOGQyMDhhYTgxNGQ5ZGNmNzU3NjYyYjE3MmI4MDEgcmVsZWFzZTI1LW1haW50Cis1NjM2NiA2OTdjMGE3OGQ4YzkwMDVkOWRmMDFkNWViZDFjZThhODBhYmUzMTFmIGxlZ2FjeS10cnVuaworNTYzNjcgODVkNGEwMmQwYWJiMGM2NzQxN2E0M2VmYTMxNTUzYzI5NzliMmM2OSByZWxlYXNlMjUtbWFpbnQKKzU2Mzc1IGNmODkwZTQxYWMxMzUxZjU0M2E0YjQ5MGFmNDA2YWFmZGNlYTI0MTIgcHkzay1zdHJ1bmkKKzU2Mzc2IDUwNjZiMDAyNWJmMDg2NTAxYzlhYzE0ZmE5Y2RiMTRhYjc4NGQzNWUgcDN5aworNTYzNzcgYTVhM2RmNDlhY2YzMDI5ZTQyYmYzZmU1ZDQwYjYwNjM1NGQzMWVlNyBwM3lrCis1NjM3OCAyZDIyNTA0MjgzMDU3Mzg5NTYxOGVmNzgxNDhmMmE4MjU0MDBlOTQxIGNweV9tZXJnZQorNTYzNzkgMDljZDNlNTAzMjM1ZTY1YzZlYTFmOTNlODg3Yjg2Y2M3MmRlODQ4NiBjcHlfbWVyZ2UKKzU2MzgwIGE1ZThkZDU5OTYwZGRkOTlkMTVlMWQwOGI0MTU2MzI1NmZjNWMxNmYgbGVnYWN5LXRydW5rCis1NjM4MSA0NWM3ZDQ3MzVkYTM2YzIzZmYxNDliZGE5OTZmMTk4NDVkNzZkNGU5IHJlbGVhc2UyNS1tYWludAorNTYzODIgOGFmMDdlMTFmMTk3ZTI2MTM0ZGExYWRkM2RiNWViNmE2YWMyODVlMyBsZWdhY3ktdHJ1bmsKKzU2MzgzIGRhYWUyN2ZiYjgxNjZlZGUxZDhmNTdkMWVkYjg4ZDg4YmM0NzgxOGQgcmVsZWFzZTI1LW1haW50Cis1NjM5MiBjMjNkOGMyN2RjOTIyMjM4NTA3MGI3MTA1MzUzY2Y1M2Y2MzU4NmFlIGxlZ2FjeS10cnVuaworNTYzOTUgMThlNWFlOTFiZDI5NzllMDJkMjYxOWQyMzI4YmFiZTFjMmJiODc3MSBweTNrLXN0cnVuaQorNTYzOTYgZWJlOTYwZDFkNjI3ZWVkNmNmY2I5MzI4N2JlMTMwYWJhOWMxYmM4MiBweTNrLXN0cnVuaQorNTYzOTcgZjcxNWJhY2RmZDAwZjMzYmFjZDVkMWY2NGVjMzMyZTI2YWY3NzI2MSBweTNrLXN0cnVuaQorNTYzOTggMTkxOTk5YmU2Y2Y1OGVmYTY4MjJkZDA5Y2JmMDNiMzY1MmNmZTUzOSBweTNrLXN0cnVuaQorNTYzOTkgNWFlNzc0Y2MyNmViZGQ3MDc2OTcwMGM5Zjk2NzM3OWY3NWI2YjA1NCBsZWdhY3ktdHJ1bmsKKzU2NDAwIGQwNjJmNjdjMzI2MDRkNDIwZTRkM2JmMzU2M2VjNjNlMTllNjRkODIgcHkzay1zdHJ1bmkKKzU2NDAxIGY1YjVkYWNiOWFlMjliYjEyYjQ3MTk2MjJjNjlkOTBiNDI1OTg1YmIgcHkzay1zdHJ1bmkKKzU2NDAyIDNmMjQyMDlmMjUxZTNhZDExM2M0NjQxNjgwN2FhNjcwZmQ0OTE1YTMgcHkzay1zdHJ1bmkKKzU2NDAzIDM3NzIxMDMyMDBlYzg5YmM4OGJiM2IyZjFiNjY3ZmNlNTBlYjY5OTMgcHkzay1zdHJ1bmkKKzU2NDA0IDg0NzdmYzM4OGVlYWVlM2U4ZjI1YTUxMWRhYmE4ODNlNGJmMTViZTMgcHkzay1zdHJ1bmkKKzU2NDA1IGE4ZDQzMDg1YTg1NzBiMGNlMzMxYTYwOTU3OGYyNWRiMDJjMDg5MmMgcHkzay1zdHJ1bmkKKzU2NDA2IDQ0YmM0OWEwN2U1MjQ5NThlODJhOGI5OTQ3OGM0MTliZjYzNjk4ZWUgcHkzay1zdHJ1bmkKKzU2NDA3IDUzMzdjM2E0YTI3M2Q5MDc3ZDhiZTUzNzA2NWZlYTliYzQ3MDIzZDggcHkzay1zdHJ1bmkKKzU2NDA4IGY1MWQzYmU0MzVkZjY4ZTNkMWQ1MjViMTQ2NzJjMDU4NWY1YTY2ZWIgcHkzay1zdHJ1bmkKKzU2NDA5IDA1OGFiZjg3OGFkNGRmOThmYmMzMzA2ZjdlZWNiOTIyN2Q2YmI0MDQgcHkzay1zdHJ1bmkKKzU2NDEwIDNiZWE4ZmFjM2E3Y2Y2ZDQzZDZmNDRkYmFiOWQwOTBlMzhkNzdhZjggcHkzay1zdHJ1bmkKKzU2NDExIGM0YWIzZWY2MTk0ZjczNzIxNDc3NmU5YjFiNGFkMzUxMTMyOTY2NGQgcHkzay1zdHJ1bmkKKzU2NDEyIGY2NTkyMTQ2YzdmYTY4ZjdhMTU5NDE3N2Y0M2JiMmE0OTM1YjRiZWQgbGVnYWN5LXRydW5rCis1NjQxMyA1NTAxNDFmZDY3YzIzZGU4OTUzNWI1ZDI5MjI0MGQ0MWE1NTI5OTlmIHAzeWsKKzU2NDE0IGM4ZTYyNDU3OWE0ZDYzZTZiZDZlZWQzNWU5ZTI0Zjg4ODBmZjhmYWQgY3B5X21lcmdlCis1NjQxNSBmOTQwZTQ3MGU1NTAyNmUxMmQzNGQ3MTQzNDAwZmYyMDc3YjQzNWY0IHB5M2stc3RydW5pCis1NjQxNiA2N2IwMWIwNWE4MWI2MjM0ODdmYTJmNDlmYTA1ZDYyZTliYmM3N2Y4IHB5M2stc3RydW5pCis1NjQxNyBhMzA5Y2RiN2NiMzMwZDEwYWYxZjhiOTNkZjhiOTA0M2IxOThkMDJkIHB5M2stc3RydW5pCis1NjQxOCA3ZDE2YjQyZmNkYmRlMmNjNTEzZmNkYjQyNzc1NmJjOWYwY2FkMzUxIHB5M2stc3RydW5pCis1NjQzOCBkMDcxOTQwNmIyYzY1OWU3ZGI0Mzg5NjJiNmI1YmM1NGM2MGJhZTZiIHB5M2stc3RydW5pCis1NjQzOSA3Y2VkM2U4NTE5ZjE0MTg4OTFkMzAzNzc3ZjVkODVmMTQ4ZjcxNmFlIGxlZ2FjeS10cnVuaworNTY0NDAgMzVlYjcyMjE1NjMwYWYxYWZlNGZjMWEwYWMzOTgzNzU1MDRmYTRkZSBweTNrLXN0cnVuaQorNTY0NDEgNjc3NWVlNmQ4OWQzZjlmZGIyOTk3ZmFjZTFjOWYyZjQyNTUyZDRmMSBsZWdhY3ktdHJ1bmsKKzU2NDQyIDE0OTgxNWJhMjg0Y2NkZmQzZDhiYjFjY2Y1YzQxNmRhZTliODJiYjEgcDN5aworNTY0NDMgYmQ2YWNmZGI0N2QyNWE2Y2ZlYzFmYWIwYTNkOTBjMTg4Mjg1MzM1MCBweTNrLXN0cnVuaQorNTY0NDQgNGM2NTgzNzdiOTA4NDc1NDkxNmUwYWYxODkzYzQxODM5ODJkNDM3MyBsZWdhY3ktdHJ1bmsKKzU2NDQ1IGMxZTllZWVkYTM0ZjliZjI4M2E4ZmI1YTBhNjAwYTA2MzQ3NDAyYjcgY3B5X21lcmdlCis1NjQ0NiAxYWU1ZjEwMmZkM2Q2ZTI1MTVmZWY4NThkZWZlYTBkMjg4N2VkNjc2IHB5M2stc3RydW5pCis1NjQ0NyAwMDdlZDZjZGQxZjdiYzc0YmU4ZDkzMTFkMjE5NTAyZGRmMjY2OWVhIHB5M2stc3RydW5pCis1NjQ0OCAwODY0MmJkMWJlMTg0YWUxMmMyZTM3ZmQ2Nzg2ZmNjYWE4M2E1NTk3IHB5M2stc3RydW5pCis1NjQ0OSBkZmFjYjUxZDEzODYxNjEyMTc5NWMxMzEyODM4MjA5ZjU2Yzc3YWY5IHB5M2stc3RydW5pCis1NjQ1MCBiZGM2N2RjMWE5NWUyZTQwMzQ3ZTljODVkYzA1OWIxOWFjOTQ2OGIxIGNweV9tZXJnZQorNTY0NTEgZDAxYWU2OThjYjU4MzhmNzVjYjUwNzhiNmNiZDY0YWUzNTZjODMzOSBsZWdhY3ktdHJ1bmsKKzU2NDUyIDI4YWY5NjEwMzhkZTgyNmE1MDdkNjg1YWY4YTZjZDIxMzcxYjg0NzMgcmVsZWFzZTI1LW1haW50Cis1NjQ1NCAzNzkwMmVhNDFhMTdiNDMyYWRiNjAzYjBhMjRlYmFkNTdmNTFmMDlmIHAzeWsKKzU2NDU1IDdmNzYwZGI0ZTc0NmJhZWYxOGIzNTRkZjA5ODUzZTY1MGY5YzU3ODcgcDN5aworNTY0NTYgYzAyYTMzNzg4YThmNWViZDMyMmY5NmU1YWM1YjMzOTYzNGY5ODg1ZiBsZWdhY3ktdHJ1bmsKKzU2NDU3IDNmYjU5NjY2YjI4MTBhNDFkMDJlMTY2NDY2OTg0ODEzY2Q2NGRjM2MgcDN5aworNTY0NjAgNDk5OWEwOTQ3MzQzNGFjZDQzZTQ0MGQ5NmIyYzg4NmIxYWQ5MTVmNyBweTNrLXN0cnVuaQorNTY0NjEgYWMzNmYwNmE2MTJiODBlMGIxMTQ1YTM3OTJlOWI0ZWZlNTc2YTgyZiBweTNrLXN0cnVuaQorNTY0NjIgNjM5NTVlM2NmOTkzYjYxOTUzMjEwYzg0MGExZTExMzdjMjY5Yzk0OSBweTNrLXN0cnVuaQorNTY0NjMgOGM0YTMzMDc5Y2E2MDBkODcyYjY0NjI3OWNmNzkwNGM4OTZlYWEzYiBsZWdhY3ktdHJ1bmsKKzU2NDY0IDNlMzMyMTVjNjZlZGU4ZmYyYzU2NzRiN2E3YjFhY2QxMDYxZjM2M2QgcHkzay1zdHJ1bmkKKzU2NDY1IDExNjI1MWFkYTkwNThmZTYwN2U4YzgyMjUzNTdhZjMzODAxM2I3ODQgcHkzay1zdHJ1bmkKKzU2NDY2IDYwYjcxOGI2ZmM5YjE2MzNjYzI0YTlkZGY3ZjI1NjM2M2I3ZTc4YzggcDN5aworNTY0NjcgNGJiYmUwYzU1ZmEyMTU4ZmUyMTY1MzdjOGZjZGZiM2ViYWQ3NDJiOSBweTNrLXN0cnVuaQorNTY0NjggYzQ2ZjBhZmI0MDNjNDA3ZWI5OWVlODQyZGUyMjA1N2VhMzViYzUyZiBweTNrLXN0cnVuaQorNTY0NjkgOTY0YzRiZjg2ZDlhNjk2NzU3ZWUwZDIzNDRiYjYzOTRjODIwOGExMyBweTNrLXN0cnVuaQorNTY0NzAgYTJjNWNlYmQwZGM1MWYxNWI3Yjk5NWFiZTkwZjVmZGViYmZkMTU5OCBweTNrLXN0cnVuaQorNTY0NzEgNTdjNjJiZDM2YjE5YmI4MWJkYzk0MTcyN2ExZTlhMzUxOGI2MDk1OCBweTNrLXN0cnVuaQorNTY0NzIgNWE5ZTNkMzdmNjYxZjEzZWZkZTE3MWNiYWVhNzE4NDAyN2UyODMxYyBweTNrLXN0cnVuaQorNTY0NzMgMzMzZmYwNTg0OTM4YzU2MzM5ZGU3NTY1YjMzNWNiNjc5NjgyYmI0OSBweTNrLXN0cnVuaQorNTY0NzQgN2EwZDFiYWE0YTUzZGVkNDI0NTFiMTgwOTJkNmFiNTQ5NTkxMDYyZCBweTNrLXN0cnVuaQorNTY0NzUgMmJlMjUxZGQyY2JkZjE2MTMzYzRiNTQ5MTAyMjExYTJiNzliOGRhZiBweTNrLXN0cnVuaQorNTY0NzYgNjYyMGE1MTBlOWE5NTExMGRiMTM5MTJkNjY1NTE4YWRlN2RkN2Q5ZCBsZWdhY3ktdHJ1bmsKKzU2NDc3IGUzNzE3MWE0YjE0Nzk1OWY2ZjIzZWMyYTA4ZjIyZDRkYjY3MzI3ZDkgcDN5aworNTY0NzggZmQzNDU4YTkyYTg5NDBkYmQ3YTY3NTExYTIzZmZhZDk4ZTc3YTk3NCBwM3lrCis1NjQ3OSA0ZTg5ODcyZjA4MmUwNmI4ZmU4OTI2MDVhN2U2MjBjMzYxMjg5YzhmIHAzeWsKKzU2NDgwIDUzMWUxODFmNWI1MzBmOWU0NTI4NjA1NDA0OWIyNjQ0ZGU3MzdlMjIgcDN5aworNTY0ODIgMTJkZjkwNjAwM2VhOTIyNmYyMmNlMzE4ZGZiMWQ5MGYzYjk5MDRjMyBwM3lrCis1NjQ4MyBlNzBjZGNlMGU4YjI5NTVjNDQwMDhhNDQ4ZjA5MzViOWRlN2QxODVlIHB5M2stc3RydW5pCis1NjQ4NCBjOGI4NTBiNWEwNjY2OTFmYTg4Y2ZlNTJlZDM1ZThiODJhMzk5ZWU4IHB5M2stc3RydW5pCis1NjQ4NSAwM2FiOGM4YmIwYWUxODRjZThjODJmMDZlNTgxZGVjNDFmZGRjOWIzIGxlZ2FjeS10cnVuaworNTY0ODYgMjNiZmRiNzU3MWE3ZGFkMWNlODVhYTY1ZWViMTY0NWFjOGJlODIzNiBwM3lrCis1NjQ4NyA4OGVlMGE1NTYyZWUyMjE5MGRmNzFmMDAxOGNmZTU4OWQzN2UxOTIyIHAzeWsKKzU2NDg4IDM4ZDFiZWI2NTBiYWNmZTJiZGVjMzI2OThhMGFiOGQyNTliMjRiZmEgbGVnYWN5LXRydW5rCis1NjQ4OSA4MTFjOWFhNmVkODgyZTQwNTc1MWRjNmY0ZTk1YjcxOTRmNWIxMDNmIHAzeWsKKzU2NDkwIDI3ODYzOGNkYzY0N2FhMjg0ZWEwZmFmM2NmYmRiYmIwY2Y1Y2M2ZTIgcDN5aworNTY0OTEgNjE4NTlhMzlhODdlNzI2NDUxYjcxODU0YTdlMDFjNjdmMzg0NWZmYSBwM3lrCis1NjQ5MiA3YmZlOWExMDdiMjk3NzcyMDNkNjQyMjA2Njc3MDZlNzY3ZGJhYTY0IHB5M2stc3RydW5pCis1NjQ5MyBjMTUyYzdmYTE3YzRkMDI4NzNjN2YwNjY0ZmM2NTQ0MmMxNWI3ZDRjIHB5M2stc3RydW5pCis1NjQ5NCBmNGFmNmY0YjUxY2MzNjE4ZmZiMzM4ZDEyZTk1NzA2ZWYxOThmYjcxIHB5M2stc3RydW5pCis1NjQ5NSAxNDU3NDEwMTY4NDg4MmM3YmRkZjUwMTU4ZjIxZDMxZDhhY2I3NjBkIHB5M2stc3RydW5pCis1NjQ5NiA2MGM3NjcxOGUwNGEwMDVmYzc3NmYwNzdjMWNlYzRjOGRmYmE3YzQ5IHB5M2stc3RydW5pCis1NjQ5NyBmMzJmYmY5ZmE2MGIxYzg5NDA4ZGM1ZGIwODEwZjY2NDM2Njk4MDRhIHAzeWsKKzU2NDk4IDQwOTk4ZjE4YzVkY2NiYzMwMTdlMGJhMjU1M2FjNWNmODlkODFjMzkgcHkzay1zdHJ1bmkKKzU2NDk5IDgzNjcwYzJmMWVhODRjNzExYjFkNzkwMDgzZTJjNGFlNDg3M2I2NzMgcHkzay1zdHJ1bmkKKzU2NTAwIDljZTU0Y2YwZGJlMmE2OWRkYWZmZGZmMGI4ZWQ3NDRiMzgyM2QzNDAgcHkzay1zdHJ1bmkKKzU2NTAxIDM2YjY3MDMwY2E0NzJkYTM0YmEzNjRmY2U5M2FlNDE1YTQyNmI0ZDcgcDN5aworNTY1MDIgYjU5MGY0YTA2YmY4NjQ3Y2E2MjdkODQxNzc1MDY2ODVkYmZkMzgxNyBweTNrLXN0cnVuaQorNTY1MDMgNWU2NmJiNjljMWUzZTQ4NmU3YmY3NDVkYzc0NmRkMGFhNzUyY2JkNiBweTNrLXN0cnVuaQorNTY1MDQgYmZlMDQxYWZhZmU2OTBjMGViNjg1MDU0NmEyOGRjZTQzYjNlOGI3ZCBweTNrLXN0cnVuaQorNTY1MDkgM2ZlNjQzZDYyZWNjNDVlYjA0YzA0NjgzZWEwM2E4MjY1MzljNGI1NyBsZWdhY3ktdHJ1bmsKKzU2NTEwIGZkNjcwNTM5YzA4NWQ1NjAyMjZiOWUzY2ZjZGU5NWVhOGVjZmI3M2MgcHkzay1zdHJ1bmkKKzU2NTEyIGU1MGUzM2I3ZTBlMGNjYjcxMTQwNTI4NjhiMGNlYTNkNTQ0NGJjNWMgcHkzay1zdHJ1bmkKKzU2NTEzIDY0MDk1MmRmNDQzMTRiNGJhMGRhYjU5ZWQ3NTJlNjhkYzdjMmRhMTkgcHkzay1zdHJ1bmkKKzU2NTE0IDk1OWU1MmFlMjYyN2EwODlhZDU4YjBlZThjNWI1M2QxZDI0NTBkYjcgcHkzay1zdHJ1bmkKKzU2NTE1IDM2ZmJjZGE4MGIxYzQ1N2ZiNGVkOWEyMDYzZGE5ODljYmVkYzEzYjggcHkzay1zdHJ1bmkKKzU2NTE2IDViOWM4ZGNlNGVkZDdlOGNkNmJlMWMzNWFhZjllMmU3Nzg3ZjdlOTMgcHkzay1zdHJ1bmkKKzU2NTE5IGQ5NGQ1YjQxNmE5NDdhZjRmODVlODIzZjFkMmZjNmQ5MjkxMzM0MDEgbGVnYWN5LXRydW5rCis1NjUyMCBiYzhlNWUxNTcxYWNjZjBlZWU3OGRlNGRlY2FjYWYzNmQzNzJkNDZjIGxlZ2FjeS10cnVuaworNTY1MjMgMzBlMTEyMzUwZTIwM2EzNjlmNGNkNTg0MWU0ODBlOGUwN2Y5OTYwNSBsZWdhY3ktdHJ1bmsKKzU2NTI5IDc0NmE1MDIxZTFhYTg3MTFlNWI0ODk4MjRhNTc2Nzg0MGJkMjFmNTcgcHkzay1zdHJ1bmkKKzU2NTMzIDBlMmZhNGM2YTQyODM1NTM3MjIwYjdmOWQ1MzE4YWMxNWJkYThhODIgbGVnYWN5LXRydW5rCis1NjUzNiAxMTM3NzI0OTMwYTcyYjM4OGQ0ZTk0NzRiZjVkMDQ4NzMxMTRhNDY1IHAzeWsKKzU2NTM3IGRhNjI4MzZkZDk5Zjc3M2Q2NGExZjgxYWE5MDA0NDg1ZWU3MzVjNWIgcDN5aworNTY1MzggMmZkYTU1M2FjNmUxNjNkYjE0ZjI4OGQzMzhiYTU3ZWM3NDNjNmJlNiBsZWdhY3ktdHJ1bmsKKzU2NTM5IGU5ODkxZDc4N2VkZDgyNjkyZDE4Yjg0M2YyM2IxYTBjY2IyN2ZhZmYgbGVnYWN5LXRydW5rCis1NjU0MiAxMjA1ZDMwMzQ2MWMzMjNiOTgxNDU0ZWFmNjNmOGUyOWIzOThjYWYzIHJlbGVhc2UyNS1tYWludAorNTY1NDMgMjc4NjRhMTgxZjAxYjIzOTJjYzlmODg5YWYxMTRmM2E0OTgyODdjMyBsZWdhY3ktdHJ1bmsKKzU2NTQ2IDc5NWE1ZGNkYzk4MjAzMDMyZTUyMjI3N2IxMTlhMWQ4MDVjYTJmY2YgcHkzay1zdHJ1bmkKKzU2NTQ3IGQ0OGFjYjI4NDY2NGM3NDRiMThmMGY3NTk3MmVkZTY5MDU5NGIxYjIgcHkzay1idWZmZXIKKzU2NTQ4IDVmM2Y1NGMwYzZjOGViMjBkNmI4MTNiZmFmNTYyYWJjNzE0OTEyYzUgcHkzay1zdHJ1bmkKKzU2NTQ5IDhmZjg5OTY0MTU2MzUyZjc3YWFmZTRkOTIwYmQ2MDQxZDdhNzMzZTEgcHkzay1zdHJ1bmkKKzU2NTUxIDZmYTdkOGZiMDc3MzE4ZjhjZmFlYmZjODlkYjI4NDVmNGViZjVmNGYgbGVnYWN5LXRydW5rCis1NjU1MiA0MzRhZTY2YjdkZTA0ZTliY2NhZjk3NzgxN2M4Y2YzMjZmMGU5ZjQ5IHJlbGVhc2UyNS1tYWludAorNTY1NTMgNjQ5MDNmZjc2ZWRlMWEwOTY5ZThiMTY2ZDgxYTU0YTE2ZTQ1NGUwNyBsZWdhY3ktdHJ1bmsKKzU2NTU0IDU3ZmFjZjM0YTcxODYxMGM1NjkzYjRlOWZlMzg1YTQzOTBmYjE1ZGYgcHkzay1zdHJ1bmkKKzU2NTU1IGE1NDM0ZmFkYTlmZjQ5YzQwN2UwMWUyNzI3N2Y2MGI3OGI0ZWY0MTEgcHkzay1zdHJ1bmkKKzU2NTU2IDJhY2M4OTAyNzY4YzQ0N2YwMzM2NjM4ODljODY1YTk1YmJhNjgwYTMgY3B5X21lcmdlCis1NjU1NyAwN2E1NzdiNjIwZWM2OTE4MmM0ODUzNzEwMDk2ZGJiNjlmYTYzODM4IHJlbGVhc2UyNC1tYWludAorNTY1NTggZGVlYzQxMjZmZmFjZWIwNmUyNmZhZGU2YTBhOGZiOGUyN2ViOGViYiByZWxlYXNlMjUtbWFpbnQKKzU2NTU5IGIwMGJkMDhhMDk0OTQ5MTIyNzliODQ5NzlkNTJiZGIzNGExZDgwY2EgcHkzay1zdHJ1bmkKKzU2NTYwIDI3OGM1MjEzNDE0MGY2MTdkY2ZmMWNhYTA3ZGNkZTg0MDhhYzg0ODkgcHkzay1zdHJ1bmkKKzU2NTYxIDEwNzFmNzA3NmU4ZTM4YzczNGZiNThjZmMzNGJmYjljMTBlZTlmY2IgbGVnYWN5LXRydW5rCis1NjU2MiAyMGJkNWJlMjRhYjU2YjliOTg1YmM4YWJmMWJkNTY5MDA2ODA1YmJhIGxlZ2FjeS10cnVuaworNTY1NjMgODYyODViMzk3YjRkMTA0ZDQ5N2VhMGRjNGQ0YTIwMTc0MzU5ZWNhNyBweTNrLXN0cnVuaQorNTY1NjYgMDU0NmMxMTVhOWNmM2M3MmIzNjA1MWI4YmViZDAzZWRmZjI0MDk1MyBsZWdhY3ktdHJ1bmsKKzU2NTg0IDllODRiNDg2ODk4NDY4MWU4ZTFmY2MxZTdiODNiY2FjMzBiMGFmNzcgcHkzay1zdHJ1bmkKKzU2NTg1IDkwZTQyYTBiMjIwMmNmODU2ZGM1YTEzODA5M2Y1ZjIyZmJhYzdiNGUgcHkzay1zdHJ1bmkKKzU2NTg2IGY2NzIwNzFkODJmYjgzOGRjOGI2NWQ2NjUxMzg3MDRiODE3NWMwNTAgcHkzay1zdHJ1bmkKKzU2NTg3IDM1N2NiODk2N2U4NWVlMGY3OGNjZDkyMDFjNTYzN2NlNjE3OWYwNTggcHkzay1zdHJ1bmkKKzU2NTg4IGU5OTE2YTRlMDZhNGRkM2E1MWMxYjVlNWE3ZTQyMGM0YWRhMjA0OGMgbGVnYWN5LXRydW5rCis1NjYwMCA3ZTdkY2UzMDg5ZTM3YTljMTBmYmUyMWFiNjMyNmNmNjA4YzI1ZGQzIHJlbGVhc2UyNS1tYWludAorNTY2MDEgODViN2Y0MGUxYzFjZjBhNWI1NWY2NjM3OTJhMTY3MWU2MWI2ZjQzMiBsZWdhY3ktdHJ1bmsKKzU2NjAzIGQzNDcxZWY2ZmUzOGE5Yzg4Y2E1MTZmMjE0N2RmMzc0YTlmN2E3NmUgcHkzay1zdHJ1bmkKKzU2NjA0IGUzMWM0ODIxOGIwY2I5MWEwYzhjZDI2YTQ5N2IxYTUwN2Y2YzAwOTQgbGVnYWN5LXRydW5rCis1NjYwNSA3ODVkZTIyNDk5NWQ1MTE1YWY3NWQzMWY5NzhlYzllY2IzODVlZWVhIHB5M2stc3RydW5pCis1NjYwNiBlMWRhZTg2MjZjMTFhNmRlMDlmN2M2ZjVmNDZhZDZiMDE2MTRmOTRmIHB5M2stc3RydW5pCis1NjYwNyA4NmMxM2NlNjBhYWRlNWQ5Nzg3M2QzOTcxYmJlZTY5NjlkNjhkNWZmIHB5M2stc3RydW5pCis1NjYwOCBkNTJiZWY1NTJhYTQwN2YxYTYyMmQyZjkyYTMyZTliYTlhMDc3NTMxIHB5M2stc3RydW5pCis1NjYwOSAzMTA1YjdjZjM1YmVhNzA3N2ZiYTk3NmU4NGFkY2FjZjZlY2NmMzM2IHB5M2stc3RydW5pCis1NjYxMCBiOWFkYWQ1Njk1YTM5YWQxMDg5YTk0ODBkZjFmZDMwMGJmNDc3OTZkIHB5M2stc3RydW5pCis1NjYxMSBlOTRkNTA2MGIwYzFjNGEyNGY2MDcyNWIxMDAyNWU0YzNhY2QyNmI2IGxlZ2FjeS10cnVuaworNTY2MTIgZjFmMWY1ZTEzOTVjOGI0OWVjZWQwNzNjMjU0MTc3MjMwMThmOTUwNiByZWxlYXNlMjUtbWFpbnQKKzU2NjE0IDVjZDVmMzJiNGEyODg2NDg4MDYyZTAxNjNkNTQxMWFiNzliMThiNDYgbGVnYWN5LXRydW5rCis1NjYxNSAzNjVlOTkxYTYzMWI0YzU2NWQ2NTUwZDdmYWEyMjVhODkyOTE1MGI5IHJlbGVhc2UyNS1tYWludAorNTY2MTcgOGFkOGEzMzRiZTBmMzU1ZmQwNDc5MDBmMTYzNzMzYzU1MDUxOTA1MSBsZWdhY3ktdHJ1bmsKKzU2NjE5IGU1OTgxNzNmOTVlODgwNDFmOTUwZjE1MjQ4YjJmNjFiM2E3ZmMyMzYgcmVsZWFzZTI1LW1haW50Cis1NjYyMCAyNTEwMzNhMWMyZTMyODVkYTI3NGQ4NmNmNmY0NWQzMmI1YjdhY2E5IGxlZ2FjeS10cnVuaworNTY2MjEgN2U4NDY5NjE3YjFjM2QyNTZlN2U5Mzg1ZjYxMzJkYzg1MjNiOTA2YiBweTNrLXN0cnVuaQorNTY2MjMgMGMzMDBiMjkyMDBjMjI4OWI1Zjk1NTE5ZjY3YTIzNTM3YWEyM2VkMyBweTNrLXN0cnVuaQorNTY2MjQgY2U3ZmMwOGQ1ZjQ3ODUzMTQxNjQwMDY2MzYyZDgzMWFlMTdhZjJhOSBsZWdhY3ktdHJ1bmsKKzU2NjI1IDQ4Y2ZhYWE4Mjg3MzBkZTFhMWExNTljYTU0NWQyMWNjYzIxNjkzZmEgcHkzay1zdHJ1bmkKKzU2NjI2IDQ2ODYyMTU2OWJlOGU5NWVjZDkzM2ZjOWM4NmVjNmJhMjE2MzM1NGYgcHkzay1zdHJ1bmkKKzU2NjI3IGJkODQ1NmM5NTY5YWMyNTMxNDRhZWQ3ODFkMDI1NmZmOGNjNTM4N2EgcDN5aworNTY2MjggOGU2OWFjMWJkMDQyY2NhZGZkYjg0YzYwZmRiNDgyZWNlYmQ0YTVjYiBwM3lrCis1NjYyOSA1MDQwODRjMDRhYzAwMGNkZDNjYmNkZDdmYmE5MmJiMGI3NmZhNGVhIHB5M2stc3RydW5pCis1NjYzMiAzYTAxNTM1NWIwN2FhMDM1MDQxMjI4MzQwOTRlMGFjMjA5M2FkZTI0IGxlZ2FjeS10cnVuaworNTY2MzMgYjYwNjhkZDZhZTAwYzNlMTU3ODkwODhkODk5MjE2YTc1MTEwYWU5MyBsZWdhY3ktdHJ1bmsKKzU2NjM1IGVmMmRjNjJkMjdlYjdkOGYzMTk5MjViMzFlMzBmMjhiZTMzYWY3NjYgcmVsZWFzZTI1LW1haW50Cis1NjYzNiBlMWMwYWE5NGMwOTJmOWMyMGUzZDNkMmFkYjQxMzBmNjdmZGFhOGY0IGxlZ2FjeS10cnVuaworNTY2MzggM2Y3OGFjYzAxMDM5ODE1YjZmYmQ5NTIwMjUxMDIxZTE4ODYxMmFjYiBwM3lrCis1NjYzOSA4YjU2YTA2OTYxNGVmNGEyMTUwZDJmMDgxMDIzNjliMjc5ZmEzNDAwIHB5M2stYnVmZmVyCis1NjY0OCAzOTJmOTgyMjFkMTNlZWFjNDhlZWUwMzkyNDU0NzY5M2QyNzFkYmE4IHB5M2stc3RydW5pCis1NjY0OSA4YzE2NWQyMDcwOWY2M2ZjNjNiNWYyZGQwZGI4YzhkMzgzZDQ5ZjU3IHB5M2stc3RydW5pCis1NjY1MCBhNmQyNmE0ZDY3MmRlYTNiZDgzZjI0NGE4M2VlNDY3ODVkMTY3ZGE2IHB5M2stc3RydW5pCis1NjY1MSA5ODk4YTY2OTY1YmNkOTg3ODU5NGNhNjJhZmJhNTFkZjAwMTVlMzk2IHB5M2stc3RydW5pCis1NjY1MiBkM2E1Yzc5NmM4YmEwMGZmNWYwMTMxYTJiYmIxMmZkZGI4NzkwY2UxIHB5M2stc3RydW5pCis1NjY1MyA2NzA1OWI3OGJjZTQ3NWQzYWZhNTRmNWQ1YWFlMDI2ZDViZDBkM2M2IGxlZ2FjeS10cnVuaworNTY2NTQgODAxYWQyZjBkMGI1ODA1OTdkYzJjODFmOTA0NWJlMDZkMDk0Yjc4NyBkZWNpbWFsLWJyYW5jaAorNTY2NTUgMDdjMmY4MWMyNjdkNjE5YmM3NjNkYWVjOWNjNDUxNTFhMmQ0OGU4ZCBkZWNpbWFsLWJyYW5jaAorNTY2NTYgY2Y0NTk2NTJjMzUyMzRiNzgzZGY0MzllYmU2N2E1OTg4NjZjNzFiYiBkZWNpbWFsLWJyYW5jaAorNTY2NTkgNmYyMzMwZTA5MDliZWM0YjdiMDRiNmQ0YmFjYmQzZDA0MzM3ZTEyZCBweTNrLXN0cnVuaQorNTY2NzIgMDJjMjcxNzdkZjc5MzRiY2NhMWQ2Y2VhZDNhN2RiNmQ1NDE4YWZiOCBweTNrLXN0cnVuaQorNTY2NzkgMGNiYmE0NDI2Y2QzYzRkMmFhOWViODBhYzFmMzQ2ZGMwYTAwZjdjNCByZWxlYXNlMjUtbWFpbnQKKzU2NjgxIGUyMWQ2NDc0NmJkM2NjNGY1MDZhZTk1YzIxNmNiM2ExNGE0Y2MzMDUgbGVnYWN5LXRydW5rCis1NjY4MiA3NTVlMzFkZWE0N2U1OTZmMzBhNjQ3MGE3NDIwZWEyOTFhMjdiMjQ2IGRlY2ltYWwtYnJhbmNoCis1NjY4MyBjMzNjMzdiYTljYjNiNTllMDdiMWU5OTkwNDFjZTFjODRjNzc0NTVhIGRlY2ltYWwtYnJhbmNoCis1NjY4NCBiMWZmNTRmOGY5ZDgzMTNhNTFiOTQ0NzljODg0NGVkMTU1NjFkOTQ5IHJlbGVhc2UyNC1tYWludAorNTY2ODUgM2FkYjAzMzVkZTUwNmNkZWQyMTllMDc2ZDlmZDE5YWRmOWU0NzVhYyBwM3lrCis1NjY4NiAxNjhkMDU1MTYwZGMxOWY5MTExNzRjOTNjMDJiZGYwZWI3MDMyZDg3IHAzeWsKKzU2Njg5IDcyM2NiOWUzZmE1MDBlNzUwZTBjZjBkZWIyZDQ1OGU2MjU5MGQyMDUgbGVnYWN5LXRydW5rCis1NjcwMyA3Nzk0ZGExMzM0YTAxZjc4NDllNzA3YTQzYzczN2VmZWQ5MTg0MGE3IHB5M2stc3RydW5pCis1NjcwNCBhZTcyYmY1YWU0NjUxOGNhNjFkNWI1MDliNGYzYzVkNGExMjNlZWE0IHB5M2stc3RydW5pCis1NjcwNiA0NjYyNWU2MTIyZTk5YmZlMGNhNDFmNjlmMjlmYzYyOTE2ZGIwMjVjIHB5M2stc3RydW5pCis1NjcwNyA4MWFkZTAxNDQyNDdkNzg3NWQzM2Q4NTJkMzI0MTQxMGMzYjUwMjFkIHB5M2stc3RydW5pCis1NjcwOCBiMWJmMWJhYjk3Nzk2NjAzMTUxMGRmNTQxMTAxM2FjNWJiYTAxNTBmIHB5M2stc3RydW5pCis1NjcwOSA2YzNmYTQzZjFkMWQyNTExOTZjYjFmOTQyY2YwMzk2NWY0Njk0ZjA4IHB5M2stc3RydW5pCis1NjcxMSA3NDAxZmY3OGViMjljMDNiY2E4ZDMxMTM3YjgxZTBjNzliMjM0ODliIHB5M2stc3RydW5pCis1NjcxMiA1MzVkYWUwNGQ2Y2Q2NzQ2NDU4M2MyZTAxY2I1ODNmZmZhZTc4ZDIzIHB5M2stc3RydW5pCis1NjcxMyBlMzE5ZDJkMjg1YmEzZDY3NWFmNmYwMTc3MTJmMzU2MGJmNmEzOTU2IHB5M2stc3RydW5pCis1NjcxNCBjMzUxNDA1NTlmODdlOGRhOGNlNjE4ZDY5N2JiYWFlNTNlOWJhNDQxIHB5M2stc3RydW5pCis1NjcxNSBmNmNjNzZlNGNhMjUxYmRhYzdmOTA3ZjE3MWRlNDBkYzRmOWI5ZjBmIHB5M2stc3RydW5pCis1NjcxNiAzZWQwMjBlOTViNDQ0ZTMwZTM5MWU5NWY2NzAzNTIwOGFhMTM5YjYwIHB5M2stc3RydW5pCis1NjcxNyAzYmUyOTcyYTI5Y2FjNWM3MGU5MDc4MTg3MjE2ZjlkN2ZhYWIwMTU3IHB5M2stc3RydW5pCis1NjcxOCBhZGU1ZDFhYzFhMmM4YTUwMzlhZGUwNmI1MGY0YWRjMjM3NmMyMDBkIHB5M2stc3RydW5pCis1NjcxOSA3MTMwNGVmYmMzMTZhNmQyZjQyZDM1YjY0YTVjYTExNzBkNGJkODI4IHB5M2stc3RydW5pCis1NjcyMCAwNTcyOGU1MmIyODMyMGQxODAxODJmNjg1ZGQyODc5NTZkNjE3ZTQ1IHB5M2stc3RydW5pCis1NjcyMSBiNmJkYmI2MzI2ZDJmMGI5ZTE5N2Y0MDYxYjVmZTM1MDI5YjcwNmJhIHB5M2stc3RydW5pCis1NjcyMiAwZmE4NGZmYmE3Njk4YWRlYjI4NWNlZWVhMjI5ZWVkMTQ3NWU2MjdhIHB5M2stc3RydW5pCis1NjcyMyBjNjE5NDQ4MGIxZDU5NjFkNGVkZjM0YThlMTI5MzFmMDQ5ZWM5NzgyIHB5M2stc3RydW5pCis1NjcyNCAxMmRiYWVjZmI0NGI5MTQ3ZTgzMzk4NjQ3M2Y5OTU1NzI0OGExOTFlIHB5M2stc3RydW5pCis1NjcyNSAxMzMzNTAzOTg3MjIxMGE5MWRmZDk0OGViZDA5ZTFhNjFiOTFmNzJmIHB5M2stc3RydW5pCis1NjcyNiA4ZDY5YTA4NGUzNjU1Y2E1NTMwYjU5ZWFlNjU0ZDQ2MDA1YmE0OTM3IHB5M2stc3RydW5pCis1NjcyNyAzZmU1N2RhYWE2MDgxMzQ5Njc4YWFjNTgwZTIyYjZiZmQ1ZGI3ZGEyIGxlZ2FjeS10cnVuaworNTY3MjggYmE2NGZjYWI1MjE0MmE1ZmI4N2M5ZWEwZDA0ZmYzYzU1ZWY2MDMwMSByZWxlYXNlMjUtbWFpbnQKKzU2NzM1IGFhNWVlNjUzMjhmYjY5NDhhNjM4MTk2NWE0YzM2OGFiYWU4MTgwNzAgZGVjaW1hbC1icmFuY2gKKzU2NzM3IGVkMzc1NDJmNDczZWFlMjg2NWQ3MmUwZjQxNmMxZTc4NmFiYTA5OWQgcHkzay1zdHJ1bmkKKzU2NzM5IDUyOGE4ZDllZjIwMmU1NGQ2MzdlNmViOTM3YWE3NDQ3NDIxMDg3MGMgcHkzay1zdHJ1bmkKKzU2NzQwIGE0MGFlZGRjMGM4MWJkOGU0N2E5YzI4ZTU4MjYwODYyMjU0YzU2ZmMgcHkzay1zdHJ1bmkKKzU2NzQyIGY0NDA5YzVkNzk5NGQzYTBmZWNmZGNiNmExOGI3MjZiOTVmNTQyOTEgcHkzay1zdHJ1bmkKKzU2NzQzIGQyMjM1YWVlMmQyNTUwMmNhYzE5NjJkYjY5Y2QwZGU0MzBhM2M4Y2YgcHkzay1zdHJ1bmkKKzU2NzQ4IGE4NGVhZGY2MzcyZTM4YjIzNmNiZmViMDg3ZDNmYzQyOTFiNGE5M2MgcDN5aworNTY3NTAgZmRiZWQ3M2U1ZGE3ZjVjYjExMDkzOGE0YTg4MGZiODdmOGFiMDNlNSBwM3lrCis1Njc1MSA2NDg1NzdjYzY4OGFmNmNlYjA3OTcyOWE1N2JmYWYxZTg2NjQxZTRiIGxlZ2FjeS10cnVuaworNTY3NTMgZGQ3NGUwMjBhMTMyMzg2ZDQxNjk4ZmE4NzJlY2VkMGFkYTIxNDA3ZiBweTNrLXN0cnVuaQorNTY3NTQgNjI5MTg1OTkyYWEyMTUwYjAyOGQ5ODljYWE0NWMyNGJhYmY2NDQ0MSBweTNrLXN0cnVuaQorNTY3NTUgMDgwZjJhYTE4MDE1OGU3MmU5Mjg4Yjg5MmZjZWEwN2I4ZmQ0MWE5ZCBweTNrLXN0cnVuaQorNTY3NTcgNDlkNTFjMWZjMTc3OGMxMmVmNjUxNTg2YTlhNjlhYWZmYTczOGQwYSBweTNrLXN0cnVuaQorNTY3NTggMTc4MDAzNWQ1ODEyM2M3N2ZjZThiMDU0YTc0NjY3ZGM2NWVmZTVhOCBkZWNpbWFsLWJyYW5jaAorNTY3NTkgODhkN2EzZGY1Zjc5ZTUyOThhZTYyNDBhYWQ0YmI1ZjljM2U2MGNhYSBkZWNpbWFsLWJyYW5jaAorNTY3NjAgYjQ1MDA1NjQxYmNhNjI4OWQ5MTQ1YmY0ZWY2NzBjZWUyYWZmNjQ5NiBwM3lrCis1Njc2MiBkYmZjM2NmMTUyMmQwN2E0ZTY5NmM3YWMyMzM2ZWQxOWY3NWI2M2YzIGxlZ2FjeS10cnVuaworNTY3NjMgOWIyNmVlNmU2ZDBhNDVkZmM5YWIyOTJkODM4MGUxOTQ5YWJlZWUwNyBsZWdhY3ktdHJ1bmsKKzU2NzY0IDI1OGUyYjdhNzhlNGZlMTc0Nzg0MDNlYmE5ZmNmMjE0ZWEyOWE2ZmEgbGVnYWN5LXRydW5rCis1Njc3NSAwYWRiNzIwN2U0YmViN2I0ZDNmMDk3NmUzNWJjZmYzMWJjZjI2MThkIGRlY2ltYWwtYnJhbmNoCis1Njc3NyA4YjQ1ZjIyOTdkYmQxNDliMjkyMWMyZDZlYzhlZjQ3MzE0MGYzOGE5IHB5M2stc3RydW5pCis1Njc3OSBiMTBiYTM4ZTZiODA4MTIzNmE1OTAzYTJhMTlkNmRiOTFmZTQ4NGEyIHB5M2stc3RydW5pCis1Njc4MCAyMjkzNjExOThlOGQ1ZWQ4M2M2NTlhNGQwODA2NmRiNmQ2ZDc4NDVkIHB5M2stc3RydW5pCis1Njc4MSA0NDAxNzZmMDYxNDc5NDI0MDYxYTg3YzI2YjJjYjUyZDE2MTBjNmY4IHB5M2stc3RydW5pCis1Njc4MiAzZmMzY2VkYzQ5Y2EzYzZhODViMTg1ODA3MTRlZDkxNGE4NmYyNWI4IHB5M2stc3RydW5pCis1Njc4MyA4MWEzODAzZjQzY2Y5ODllYmQ4NGZjMzdmZWNjN2YzYzUxZjllNDMzIHB5M2stc3RydW5pCis1Njc4NCBmNGM5OWNhZDhkMmY2NGIyN2Y5MzZkNTNlMzk4ZDU5ZWNmMDE3MzkwIHB5M2stc3RydW5pCis1Njc4NSBmODI4MWRjMmU2OGRlZDdmM2I2ZmY3N2UxYzY0YjdiODg3YmE3NWVhIHB5M2stYnVmZmVyCis1Njc5MCAyYWIxOGZmYjQwMWNmMWI3YWQwOTQzZjc0ZGE5MTg0OWZlMjZiYThlIHB5M2stc3RydW5pCis1Njc5MSAyYTExM2E4MjY0YjE2MjEwNjk5NGM2OTc0ZWQ1YTRkMzMzMjY2MmU0IHB5M2stc3RydW5pCis1Njc5MiBmMzI0OGMzMjBkZDAzYTFkYzJjNmU3OGZhNjdjMjI4ODVhZDU1YzRiIHB5M2stYnVmZmVyCis1Njc5NyBmZTVhMDYyMWY5MTg4MDZkYmZhMTJlMmJhODg3M2Y2Yjk4ZjFhZmY1IGxlZ2FjeS10cnVuaworNTY3OTggN2QwNzhmYTM0YmJmNjNiZjJhMmJhZTlkNTUwNGM2ZDA4NGI3NzJiOSByZWxlYXNlMjUtbWFpbnQKKzU2Nzk5IGIyMmQ5ZmQ0YTc4NWFkZmFhMzJhNTdmNDllODBlNmYyZTFjN2RhMTggcHkzay1zdHJ1bmkKKzU2ODAwIDZiYTJlNjc1ODBmYzk4YjgwMmQ1MDM0YjlhOTlmZGY5NWQxOGM1MmQgcHkzay1zdHJ1bmkKKzU2ODAxIDM0NWM4MTJmMzM2NjVlZGYzMmVlYzBmYWFiY2FmYzJmZTI4ZTcyNDQgZGVjaW1hbC1icmFuY2gKKzU2ODAyIDI5NzM1ODk5Y2ExNWEwNjk2YTg1OTNhMTJiZmNlMjUzMGQwNDI2YzggcHkzay1zdHJ1bmkKKzU2ODAzIDZmZGQxYWY2M2ZhNmE1ZmZiN2E3NDU0NGJkZTk1MmIxMDJlMWNiMGMgcHkzay1zdHJ1bmkKKzU2ODA0IGU3ZmQzMjdlMGMxOWEyODhmMDk1NWQ3NTc4Y2E3MDg5NThmMzFiN2MgcHkzay1zdHJ1bmkKKzU2ODA1IDQ5ZDRjNGNkZjBjODYyODNjMWJjZWJjNWI3OTZkNzAxNDE5ZjFkMWMgcHkzay1zdHJ1bmkKKzU2ODA2IDlmMTg0OGY1OTZlMGNjNjRkNWM2NDhkNjhkMWEzNDVhZGZkYWNkOTMgcHkzay1zdHJ1bmkKKzU2ODA4IGUxMTUwYWFlMGY2NGQ2ZGI5NjRkYTM5YmEyZTU3ZTg0Mjg0MTQyNmYgcDN5aworNTY4MDkgMTNkYzgzNmQ0YTk5YTg1ZTA3OTI0ODEzZDdiZTBhMGFkZmQ3ZWQxMSBweTNrLXN0cnVuaQorNTY4MTAgYjIwY2MxYzBjZjEwZTQ0NjFlNzY0MWYxM2Y2NmZkMWZhZmE4ZjNiNiBweTNrLXN0cnVuaQorNTY4MTEgNGRlYTNiNjhiMDEzYjBlOGRkMmM4MDcxZDkzOGIzZTk5ZjFlMDkzMCBweTNrLXN0cnVuaQorNTY4MTIgMDRhMTRkZjQwNzNhNGVmOGUwMWZhY2RjZmM4OGYxZGExYzkxYjBhMCBweTNrLXN0cnVuaQorNTY4MTMgYzFlZDQ5MGJkMjY2NzRkY2Q5NDc3NDdiNzgzMTYzYzEwNjBjMWFhYSBweTNrLXN0cnVuaQorNTY4MTQgYjY1ZjZhYzUyOTY4YzY2MzQ3NGU1YmFmOWU4ZDM1MGZlNTc2N2E2MSBweTNrLXN0cnVuaQorNTY4MTUgM2YxZmNkMDgwZWM0YjUwMTBiMDM3OTdhYWY3MzEzOTgwMGQ0YTczOSBweTNrLXN0cnVuaQorNTY4MTYgYzhhMDkxYjg0MmQ2ZWRjZjMwMWI3ZmY3YzNkNWQxYjhiMzg5MmE5NyBweTNrLXN0cnVuaQorNTY4MTggYzk2YjRjMzg2NTJjMzllMjQ4MzMzYmQ2ZmNlMDNiOTMwOGNkOGYzNiBweTNrLXN0cnVuaQorNTY4MTkgNjY4YTVhZGNjODdjZjJjZjk3ZTU4OTBlZjM3NzdhYjhmMmU5NGUyZSBweTNrLXN0cnVuaQorNTY4MjAgYjU2YThkODIyZjIxYjY1YTFlNjU3M2U3ZmM0NDMyMGI4NTdkYjJiZCBweTNrLXN0cnVuaQorNTY4MjQgYThmMTNhNDNlYWExZTUzZGMyZjFkNjZlZDU1MmY5Nzg5ZjA2NGMxOCBweTNrLXN0cnVuaQorNTY4MzAgODZmZDM5YzJjNjc2OGRjZjJhYTkzYWJlMTQyNDAzMzZlYzVjNWY4NSBsZWdhY3ktdHJ1bmsKKzU2ODMxIDg5YzgxZmQ3MDM4ZTYzMTczZjQxNzQxY2FkNmI0OGQxNWU0Y2QwZDcgcmVsZWFzZTI1LW1haW50Cis1NjgzMyAzZjZiZTEyYjk1MzQyM2ZkYmMxNWU2N2YwZWZkMDIzM2U3ZmE4NDQ2IGxlZ2FjeS10cnVuaworNTY4MzQgNTdjZDA3MGFkMzA0MmYxMmVkNDIwMzNhODA3M2UwZmFlNjJlNzlmNiByZWxlYXNlMjUtbWFpbnQKKzU2ODM1IDVmNjBjOWU0MTQ0MDNhZTVhNGY0YTEwMWY4OTUzNDhjMDg1ZTY3YjkgcDN5aworNTY4MzYgZjRlMzY2YzM5MmJlNzA2ZWMzYzkxZjc5MjJlNDY4ZmUyZmNhZmU5NyBweTNrLXN0cnVuaQorNTY4MzcgMTdjZGJlZGJiMTVkNDU0YTNkYTc1ZDdkYTM0MTE0YjZmMTA3YmM1MyBweTNrLXN0cnVuaQorNTY4MzggOTVkM2E2NWNiNzRjNzBmOGJmYTE2YzQxZGJhODMyN2M2MWExYjhlZCBweTNrLXN0cnVuaQorNTY4MzkgOTYwOThhYmM4ZjhmNjc2NmM1Y2VjZjY2ZmE2NzBiMDA0Y2FlMDQyOSBweTNrLXN0cnVuaQorNTY4NDAgYzMyMWMyYjU5OGYxNzQ4MDkwMTdhYTllNTY3MmUxZWY5MDM2NmZlOCBweTNrLXN0cnVuaQorNTY4NDEgZjYwNjlmOWRkNTJkZmE5YzliNmYxMjNiZmY2YmFiNjFlMDQ3OTc3MyBweTNrLXN0cnVuaQorNTY4NDcgOWVkZjMwYmZjMmViZTBhZDgxMzA4YTY3ODEzYWFlZjU5YTdjYzNmNyBwM3lrCis1Njg0OCA5OTE4OTg5YjczM2I1ZWM3ZjU1MTczN2I3OGYzYjM5YjU5MGNiZjM4IHB5M2stc3RydW5pCis1Njg0OSAyM2Q5NjNhNzU2OTYyZWExMGI0MDMxNGI0YTdkY2Q2YTQyZThhYmIyIHB5M2sKKzU2ODUwIDVmYmQxNWM2MWIxMjUwNTE3Y2UxYzY3NzZmZDk5MGI5ZDNiNDQ2YTAgcDN5aworNTY4NTEgM2UxYTE1MTg1ZjhjZjllZWMwOWM2NjRiMzk5YjZmYzg4MjBhNjUwZiBweTNrCis1Njg1MiAyNmNhM2Q2ZjQ3M2FkNmRlNTY3ZjBhMWM3ZTA5NzY4NDIxOWM5ZDZlIHB5M2sKKzU2ODUzIGRiMjU5ZDE0MWU3YWVjMDJmNmFiN2U4YjhiYzc1ZGZjNDgzMmRlM2YgcHkzay1zdHJ1bmkKKzU2ODU0IDRhYWVhMzVkY2NjZjhkMjE0ZWE4Y2Q1MDgzYjNiNTFhOTFlNjJhMTQgcDN5aworNTY4NjAgMGM4OTQwOWJkYTdhYmM2MGYzOWRiZGNjZmEyODQzMDY3ZDEwNjMxMyBweTNrCis1Njg2MiBkZjRjZDkyOTcwOTgxOTQ3YTI5ZjVkMGZiMWIwZGU2NTFlY2FmMDIwIHB5M2sKKzU2ODcxIDQ4NjViNTEwY2Y1NGU4ZGExZGYzYjYzZTZmZTc5MWQ4MTAyZmM4ZmQgcHkzay1zdHJ1bmkKKzU2ODcyIDNkYTBhNGRiMjEwMjRkZTViNjc1MGMzMzIyNWEwNGRlMDNiMGRhNzEgcHkzay1zdHJ1bmkKKzU2ODczIDUyMmEzZTNhMDNhOTZjZTE5YmI4NmE4YzE5ZTRmNjI3MmY2ZWIxNzQgcHkzaworNTY4NzQgMDQzYTEwMmExNzBlZTJlZjNiYTMyZWFlNDVkMGJlNmVlMDYxYTg2MyBweTNrCis1Njg3NSBkY2YyNzM4NWYxMjUxOTAyMDY3OGE4ODdkNWUxOGJjYzRjMTAzMDhmIHB5M2sKKzU2ODc2IDE2NmM3NDA1MzZiNWY3M2FiNDc2ZTQ5OGNjODM1ZTY2ODA2YjA4NTUgbGVnYWN5LXRydW5rCis1Njg3NyA4MmE1YzMwYzE3ODYyMDZhZGM1ZDFkMjQ0YTRhMWQ3NjI0YWM0NmFiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU2ODc4IGJlM2ZlY2QyZDMzOTQyOWMzODUwNDJmOWY4YTVhYTg4MWI5MTdkNzMgcHkzaworNTY4NzkgYTI0ZTI3ZjA1ZTQ4MjljYjg3MjM4ZmQ5NjhiZGE5ZDZlZDI5ZDRiNSBweTNrCis1Njg4MCBjMGRiZjQ1Y2MyMDcyOThmNGMwNzAxODNkZDA1ZDU5OTkxYmU5OWUyIHB5M2sKKzU2ODgyIDA4NzBlOGU5ZTk5ZjU4ZjZhZGVmNjQ2ZjdhYjM4ZGMxZmVlNGYzYTkgcHkzaworNTY4ODMgZjBjZmVkMzhiOWQ5ZTFmNTQ4NWQ2MDYzMDE4MjhmMTZlMmI3NmI0YyBweTNrCis1Njg4NSAwZTVhZWJhM2M2N2RiMmE1YzQ4NmIzOGJmNzI3MDRhZTBmYjE4OWI5IHB5M2sKKzU2ODg2IDUwN2Y1NjcxZTM4ODYyOGY1ZGU4MTYzNDAzNzVmNzllZDI3N2QyOTIgbGVnYWN5LXRydW5rCis1Njg5MCAwYWIzNDIxYTA5MDY3N2M5MDliOWQ3ZjQ4ZjIzNWJjMWQ1M2M3YzdiIHB5M2sKKzU2ODkyIDlkNGUyMjAyMjRmYjVkZDdmYzUyNzMwYzUyYTM1NGVlODYwMWUwMDEgcHkzaworNTY4OTMgY2MyNWQxNjBmMGY3ZWUxMGIwYTM3MmMwY2JkOTA2ODk1NzcyNGUyMSBweTNrLWJ1ZmZlcgorNTY4OTQgZWViMzdjOTc5M2VhNTM0MzY4ZDA0OTk4MjE5N2E0N2NlZTI0MmNmMCBweTNrCis1Njg5NiBmMzcwMTZkNDI3MjlmYmVmOTg1N2VkYzkyOTc3MWRmODIwMmRlN2IzIHB5M2sKKzU2ODk5IDc3MDMxODdjN2M2ZjExN2NjOWIwMTVlZTg5NzRmZmZlY2MyMThjNzMgZGVjaW1hbC1icmFuY2gKKzU2OTAwIDkzMDczNmVlOTNkOTQ5MGE5M2QyOGZhMWNiMzYyZGM3MjZhYjYxODEgcmVsZWFzZTI1LW1haW50Cis1NjkwMSAzNDZkMGI4NDAzMGI5ZGY5NThmYWY4NTQxYWZjZDUzOTJlY2JkZjc0IHB5M2sKKzU2OTAyIGU2NDI4NjA1M2IyNTIyODUxNWZmODgzY2IwNTRjOTlmOTE3NmUwOWYgcHkzaworNTY5MDMgZDk1YjE1YTU1ZjJjMDYzMGUwY2U1NjA2MDI5NGY1NTI3NzVjOWVlNCBweTNrCis1NjkwNCAzZWMyMGM0YzFhNGZiYzUxMzM2OTJlZjA2ZjYyMTQ1ZmFkYTdjMWJkIHB5M2sKKzU2OTA1IGFmZmIxZTg3ODgxYTVmMWFmNjNmMmZjMzM5MTc3NWRiYzgwZmY0ZjUgcHkzaworNTY5MDYgODFiZDNlOTRjZjBjMzFkODM0MmI2NmEwYzJiMmZiMDNjNjFjMmFhYiBweTNrCis1NjkwNyAzODU4ZDBiOGIwZWY3NmZiZDBkYWJlMTUzNmQ0MTBhZDlmYmRhZTNiIHB5M2sKKzU2OTA4IDNhMTU3MmQxZmYxYWQ1NGZlY2RhZWEwNmNiMTVlOGM4ODRkMzAwODcgcHkzaworNTY5MTAgZjgyOGYzNTAxNGFlMzliYWU1MDg0ZDkxODFmZTlmNjA3YWY4Nzg0OSBweTNrCis1NjkxMSA2YTA5NDIzMTY0ZmU2MjRmNTY3Y2ExNGIxMDJhNzU1NDE1MjI3NzBkIHB5M2sKKzU2OTEyIDVmOWU3OWQxZTE1ODRiNTlmZTgxZWU5YzkxZjc2Mjc0MDk2NTAwZGUgcHkzaworNTY5MTMgOGQ2ODY3Y2I4YThkYjcxODk1MThlZDA1YzViODI1ZmQ3MzBmNzA0NCBweTNrCis1NjkxNCA2Y2RkY2U0MDk2YTIyN2UyMGNhOTUxNDA0ODNkNDhkYmM3MDNlM2JjIHB5M2sKKzU2OTE1IDc0YTNjNjgyNjY4M2U0Zjc0OWEyMThlMzc2Mjc3OWRjMzMzNDYyZTYgcHkzaworNTY5MTYgOWMzZTY0NDBmNTRjMzIzYzY4MTUyMTZlNGNiMTU5MjIwMzhkZDc4MiBweTNrCis1NjkyMiA0M2UzMmIyYjQwMDQ4MWNhMzdiODYzOGMzYWM2Y2M2Y2I3YWU5MWMxIHB5M2sKKzU2OTIzIDY4ZmY5MDk4YjJkYzgzNmQ1YjBkMGI0YmQ2MjMxMTkxNzU0N2Q2OTYgZGVjaW1hbC1icmFuY2gKKzU2OTI0IGFhYjY4NzkzNmVjZDgyNzRiZTQ4ODAyODkzZmMwZDlhYmYwYTdmYjQgcHkzaworNTY5MjUgMGM5YWQwYjJmYWM1NGFiOTBhMjdmYjM0M2IyY2ViYzAyZDk5ODI2NSBkZWNpbWFsLWJyYW5jaAorNTY5MjYgZDE4NTVkMGU0ZTAzYzM5Mzc2MTA3NjcyODk0MWZjYjBiYzA4YmM0YiBweTNrCis1NjkyNyBjZmFkZDdjYzljNDU3N2E1NmM5MWI3ZDUyNGFlZTA4NzI1N2M5MzY5IHB5M2sKKzU2OTI4IGE0NGM1NjQwMjZiODMxNDg2MDU1ZmIxNGViYzhjN2Q0NTVmMzEyNjQgcHkzaworNTY5MjkgMDc3YzY4MTg2ZTIzNzdkNDVhYTI3YjJhNmI1YTZiODYwYTk4ZDUzMSBweTNrCis1NjkzMCBjZjkxMzc3ZTI0NDRlNDE0YTVhZTQyMjdiZTZlN2IyNTNmM2FiZjE1IGRlY2ltYWwtYnJhbmNoCis1NjkzMSA0MjFmOWYzNThlNGZiYjRiOTU3ODM2YTY0MWE1ZWI5NDcxMDgyZDg2IGRlY2ltYWwtYnJhbmNoCis1NjkzMiAwYzBlMzU1Y2Y3NDA3Y2QzZWM0NjUyZjdhMDM5ZGM5MWExYmJiOGI5IHB5M2sKKzU2OTMzIDg0NDdlY2QxYmY0NTgxYjg5YTUzZmY3ZjlmNDc1NTE2YWI2ZDdmZjkgcHkzaworNTY5MzQgYThjNzQyNDI1MzU2MmNkNGY0YzMxOGQ0MTFmNmUxZjE5ODcwNGQyOSBweTNrCis1NjkzNSBlMGY2MjI4NmE5YTQ1NGJkM2Y5M2VmYmFlNzIwZTg2OTYxYTYzMTgyIHB5M2sKKzU2OTM2IDY1ZjFkNDE5ZjYzMTA5ZmU3NzFlYjhhZGI3Yzg0Zjg2ODYyZjBjNTkgcHkzaworNTY5MzcgMjc2MzMwZjQyZTc5MzZiNDZmMGFhYzRkZmY3YWMxZmM0OWM4MDU4NiBweTNrCis1NjkzOCBiNjYyNWQyYjM3OGFmMTJkZjMyNThiZjE5ODk2MWU4ZTdmZWY5OTIyIHB5M2sKKzU2OTQwIGFjMTkyZjg5YzEwOTNjYTIwMWIyMWYxMzJkNWE2Y2YzN2Q0MDU3MDQgcHkzaworNTY5NDMgYzY5ZDEyMjY0M2Q1MGQzZDNiNTRiMWY0OWE5ZDRjY2IxMDFmMTA3OCBweTNrCis1Njk0NCA3YWJhY2M5ZTM5OTU4ZjA4NTQzYmY2M2UwZmM0ZmYxYTVmYWI4Yzk5IHB5M2sKKzU2OTQ1IDNlNjgyYWU5ZDI5OGVmMTE4YTU5MmZlYzU3NzBhNjFjYzk3YzRlYmIgcHkzaworNTY5NDYgYjdiM2Y0ZTMyNTMzZWIzZmYwMjY2YTk0NTVhM2NlYWVmMGJhMjgzMiBweTNrCis1Njk0NyBmZWU1YzZiYmUxNDRkYWI4MzRlYWVmNDliNDY3YjFkNzNkZDRmM2RkIHB5M2stYnVmZmVyCis1Njk0OCA0YjQ5OTVjOGUzZmQ2NzZlMWFhYzU5ODczMmMwYTZlZDExYjljYjdkIHB5M2stYnVmZmVyCis1Njk1MCBjM2IzNGIwZjgyMTZhZTM5ZTMxNjBmMjI3ZmMxZDFmYTk2NDVjZTJiIHB5M2sKKzU2OTUxIDM0NmFmYTY1OGU0NDYwMzg1MDY1MzlmYWIwODNjNWEyZTY4YjcxZDMgcHkzaworNTY5NTIgZTc4MTA4NWFjOTg5ZTRjMGMxYTNmMjU0ZmVlMmNjOWQxMTQ0M2ZkOSBweTNrCis1Njk1NCA3Zjk0OWMxN2NjMzY3YmJjYjM0YzU1MjVmNzQwOTA5YmVkNGZlYzhkIHB5M2stYnVmZmVyCis1Njk1NSAwZmNjMThhYmEzODVkZTRjOTYwMWRiODNkOGYwZjA3YmJhZjBhZjA4IHB5M2sKKzU2OTU3IGQwMjBiOWIxZDk4YjZhZDU3YTk2MDk2YTYwZWY2Nzc2ZTFjN2M2ZDcgcHkzaworNTY5NTggYWU5Y2Y0OGVkNmY3MjhmZDdiMDMyNTdhMWYxODQ4MjgwY2FmOGU0ZiBweTNrCis1Njk1OSAwZDk5NTNkN2I4Mjc1N2NmYzQ5MzJjOWVjMTc2YWJhNWMxMmZlNTQ3IHB5M2sKKzU2OTYwIDE1MDE5ZWFlMzllODI3ZjQxNDBhM2EyZWVhM2UwM2Q1YzllZjkyYzkgbGVnYWN5LXRydW5rCis1Njk2MSAxMzgxMDQ2ZmU4OTQ1YmQ3YzM1ODAzZjQ0MzM1NWMyYWU5N2FmNzEwIHB5M2sKKzU2OTYyIGI5MGMyMjA0MTYzNTFhNWU2YzU4MzJlYTcwYzA0MWM2YmM5OGI5NjEgcHkzaworNTY5NzEgZWIyYzA2NzZjNzNmMWIxNmRmMmE3ODc1YzU4YzE4MjNlMDFhNTBkYSBweTNrCis1Njk3MyBkNGVlNTRhODg0ODUwYmNlNmM4NjJjZmUyMzUyNmU5NjY5MzkxZmQ2IHB5M2sKKzU2OTc0IDUzYjczYzI3MTFiNmM2ODJhNGUxMmE5NTY0MjY4YTlhZTM1NjI5ODAgcHkzaworNTY5NzUgNTQyNjE2MzRhZDQ2ZDVlOTZmMDI4ZDIzOTg0M2VmOTRjYmU3NzQ4OSBweTNrCis1Njk3NiA3YTQ1ZThiNzhkNjNmZjQ0ZWU5ZDAxYWNjZDliOTAwMTViNTFmOWYyIHB5M2sKKzU2OTc4IGE3MjQyNzlmYzkzMWE1ZjFhMGZlZTYwMTVjYTU2ZDAwNjFmNTQ5N2IgcHkzaworNTY5ODIgZmIwNjllYWZhZjg5ZjUzMWIyY2ExZjY5ZWUxZTE3YmYxOTc0YWJlMCBweTNrCis1Njk4MyA0YmNlOTRkOWVjMzFlNDUzOGMzMDZmZmU0YzE3ODljZTJkOWJmNWViIHB5M2sKKzU2OTg0IDZhZjZiYjQ4MjRkNWJlNjFjMGNmMDdjZmY3NzAxMmQyN2JjYmFjY2UgcHkzaworNTY5ODUgNDdhYWYzZjRhMDM4Y2U5NGFiODRmYjcyOWRiNDdlODI0N2Y2ZTI1NSBweTNrCis1Njk4NiAwZWQzZDE4MjkyMGI4ZjhkNjRiZGYzNDhhMmI3MjczMGEzMzNmNGIyIHB5M2sKKzU2OTg3IGNmOWIzYjQ4N2ZkYTFmNjViZDQwYTQ2MzFiYzkxNWNlNWU2YjJkYjAgcHkzaworNTY5ODggMzc3YjQ4MzgxYTQ5YzAzMzRjYTJhNTcwNDFhYzQyOWQyNmNiOTQyZSBweTNrCis1Njk4OSA1YWViMjYxZGUwYmRhY2M4ZjdiOWVhNmQ0NWY1ZWEzNzVhNTZmZmViIHB5M2sKKzU2OTkwIDFlNDkzNjk2NDc3NmY1N2ZmNjA5MjFkZWJjZGFmZjcwN2JjNWQ3NDcgYWxleC1weTNrCis1Njk5MSBiYmNlZjZkZTQ2NzQwNTZkYjZhZWNjMjU1YmM2ZDZkNWNiYzIwZjU2IGFsZXgtcHkzaworNTY5OTUgZDY4YTcxYzk2NWVjMTUwNWI3MWY1ZTEzNWNiOWU4MGEyNjUyZGVkMiBweTNrLWJ1ZmZlcgorNTY5OTkgYmZlMjAyYmZmZGY0MmZiNDQ0ZmUwNDNmZDNjMGRmMTY3N2U5NmFkNyBsZWdhY3ktdHJ1bmsKKzU3MDAwIGJkYzQwMjkzZDc1ZWZiOGViMGYxZmUzNDk3MGI4ZTZjMzQ0NTIwN2UgbGVnYWN5LXRydW5rCis1NzAwNCA5Y2NmOWQ2N2JiMzQ4Yzk1YzAxZDBlNTc3OTJiYzE3OTFjZDIzZWE4IHB5M2stYnVmZmVyCis1NzAwNSBkMzM3MWZkNDkxMDI0NWVjMmE4YTQ3OGNhMDllZmJkMWMyODI5ZmM4IGxlZ2FjeS10cnVuaworNTcwMDYgMjI5ZDYzNDVhNzNhMTEyNDUzMDc3N2RmZTI2Zjg5N2NmM2FlMGQxMSBweTNrLWJ1ZmZlcgorNTcwMDcgNjc5MzdmZWU3NWFmNmEyNzA4ODFhNmQzZTEzNGFlN2IxODkxY2FlNiBsZWdhY3ktdHJ1bmsKKzU3MDA5IGI2MjM3NzdmMjJiMGRhNDAzYzE3Yjk5ZWE5YWJmZmM5MGViMmUxZTMgcHkzaworNTcwMTAgM2MxYTIwMzY1YTA1YmMxYTA0YjFiZGRjYWNiMzU3YjBiNzUwYTlkNyBweTNrCis1NzAxNyAyMTlmZTM5ZWRlOTlmN2U0MjMxOGQ0ZmI2OTgzZTg2NWZmYmViYmU2IGxlZ2FjeS10cnVuaworNTcwMTkgMjc0ZjNhZTRkY2M3ODAzNDA3NTg1YzM2NjI4Y2E1ZjJjZGRhMGFiNyBhbGV4LXB5M2sKKzU3MDIwIGI3YmQ0YTI2ODljMTZjZTVkMTEzYzYyYjYyZGIwYTI5ZDhiYTY3ODYgcHkzaworNTcwMjEgODZmYWYyMTEzZDM2ZjU4ZGE3YjIwNWNiYTA2MTk5MTllYTdkZTI0YSBkZWNpbWFsLWJyYW5jaAorNTcwMjQgYTUyOGY3ZjhmOTdhMjljMDRmMmRkM2NlOWQxNmU0Zjg5NDhjMmE3YSBweTNrCis1NzAyNSAxYjkxZmFhMGRlMmQxZTM2ZThlMWRhYmRlODI5N2FhOTNhNzRjYzNmIHB5M2sKKzU3MDI2IDliMDIxMjg1MjFlMjcwNGFlZWQwYjNiNjc0YjFjZmZlYzNlMmRhYWYgcHkzaworNTcwMjcgMzBjMGQ1OWRiMGM2NDg1MjdmY2RmYzg5OGQ3MzdhMzY2Y2M2ZGYxNiBsZWdhY3ktdHJ1bmsKKzU3MDI4IDUzOTFiNWY4Y2Q3YTBlMzZhZjVhODZhZmI4OTQ1ZmZiZTMxOTQ4ZGMgcHkzaworNTcwMzIgMTNiMjNhZGRlZjQxZDgyMDYxOTYzNzE3NTg1MmEzMjM2YzRhYzExNyBkZWNpbWFsLWJyYW5jaAorNTcwMzggM2JlZWYxNmQ4MTY3MTNjMWQ3OTMzZjI5YWNkZTliNGNjNmI0ODMxOSBkZWNpbWFsLWJyYW5jaAorNTcwMzkgN2M2NmYxMTE5ZTU1NGUwMjA5Mzc2NGQ3ZjRiNjMxYzI2OTllN2FlNCBkZWNpbWFsLWJyYW5jaAorNTcwNDAgNGViZWE2YWZkYzg3MTEwMjhjNjFjYzkxMTkxOTAzOTc3ZjMxZWJkYyBhbGV4LXB5M2sKKzU3MDQxIGVkOTg5ZGQ5OTVkMjQ0MjEyYmM2NDY1ZDgyNmRiODllNDkwOTI4NGYgYWxleC1weTNrCis1NzA0MiBhYzVjZTdjNDNlZTc1OWRlNDk1NjcwODE2ZjFiYmE3ZWEwYzQ1MjdlIHB5M2sKKzU3MDQzIGY2YWYwYjI1OThjYTEyYzFkYzUzNGY2MzhhZmVlNjBkNDMwYTZlYTkgcHkzaworNTcwNDUgOTgwMzA4ZmJkYTI5ZjljODkwNjQ2YjEzOWIyMzQ0YThhYTA5MjY5NSBweTNrCis1NzA0OSAyMDQ3N2NiZmQ5OTY3ODA4NTRhOTZkMDcwZWMzYjU2MjM4NmJjYTBiIHB5M2sKKzU3MDU0IGY2OGI2YmY0NjM2NjFlMmJkZTIyZGFjMGFlMDU1ZTk2MTZjYjNjYTcgcHkzaworNTcwNTYgZjgyOGE5NWE5ZGE2YmE5MDhjOWJhMGMyNjYzZGQyMmEzYmE4ZDRjOSBkZWNpbWFsLWJyYW5jaAorNTcwNjAgNDYyMDY2MWUwNmFmYWY0NTE5Mzg1ODYwM2M0YzFhZWY4MDZjYjYxYSBsZWdhY3ktdHJ1bmsKKzU3MDYxIDE3YmU4ZmJlYzE1OGM0NWIzNzIwZTUxMTE0ZTczZjI1MGU5ZWRkMzAgcHkzaworNTcwNjMgMjQ0OTcwMTljNDA3MzU2NGQ2NDlhZTFiMmJkZmNmZDU3M2ExYjMxNCBsZWdhY3ktdHJ1bmsKKzU3MDY0IDcxN2ZmYjE2YjVkMTI1NGYyNzkzZTM1YzY0YWNkZjA5OTk0MjQwMzQgcHkzaworNTcwNjUgYzYyZjY2NjlhZTIyYjg3Nzk1YmEzNjQ5NDc1MTYzMTQwMWFhNWFmYyBsZWdhY3ktdHJ1bmsKKzU3MDY2IDllMTUyOWJmMDQ0MjI4YjdmN2I4YTE2YzUzN2RiOTE3ODU2NDgwZWQgcHkzaworNTcwNjcgNzI2MWE5MWJlMDAzNjgzMDgzNWY3ZTRhY2MyYTk3NmE4ZTkyMzdlZiBkZWNpbWFsLWJyYW5jaAorNTcwNjggYjFhYmY4NDZjZTgxNTJjMzgwMzAzMTI2OWE2ZGE1YTVjYTdmNGUyNSBsZWdhY3ktdHJ1bmsKKzU3MDY5IGEzZTc2NDMxNzA1YjI2M2M4NjY0YjE1MWJlYzA1MzcwMTg0MjI3ZGMgbGVnYWN5LXRydW5rCis1NzA3MCBlYWI3NWFlMzIxMmJkYjJkNGNiZjg4ZWZiZWJmOThlNDNjOTU0ODU5IGxlZ2FjeS10cnVuaworNTcwNzEgM2NjMmNjNzk1NzY1ZmE5ODRjYWRkODNmNzQzZDdlYWI0ZDBiNmY5YyBsZWdhY3ktdHJ1bmsKKzU3MDczIGQzMzYyYzQ5NTI5NjBiNGMyM2YwZWVjNjUyYjMyYWJmODllYmU3MTAgbGVnYWN5LXRydW5rCis1NzA3NCA3OTI2YThjYTkyOTA0MmVhNzkxNzhhNzc4NjI3OGE2Y2U4MTE5ZDM1IGxlZ2FjeS10cnVuaworNTcwNzYgMTIxMjEzYmJmMzU4Zjg2YTkxZGRkMTdhOWM5YjdiZWVhMWVhNzFkZCBsZWdhY3ktdHJ1bmsKKzU3MDgyIDRhNDg3MTkxZmM1NGMwYTE3MDllZTBkYzcyMjg5NGQ3YjQ3NmVmODcgcHkzay1idWZmZXIKKzU3MDgzIDY2YTU4YzFjMjgzYjNlNTllNzY1ZTk4YWU5YzdhOTgwNzM1MjQyNTEgbGVnYWN5LXRydW5rCis1NzA4NCBiYmI0ZjQ2NjNjZDMyMTJjOGQxMDBjMWFkYWJhYjQ4MWI2OWIzMWYyIHB5M2sKKzU3MDg1IDdhNTYyYTAwOTczZWQ0ZDM1MjhkODI3NGUxYWU5YjU3YTYxNjRhNjkgbGVnYWN5LXRydW5rCis1NzA4NiBjZWQyN2I4ZjA4OWJhNWIwNzYzZDkzNmIwNTEzOTNhOGFlMWY1NzZhIHB5M2sKKzU3MDg3IGNiOGMxZGQ3ZWUzMmIwMjdhNmVjMzdjOTg4NTIxZWQ4MWI3OGNhNWEgcHkzaworNTcwOTIgNjAzZGM1M2M0NzE2MjBlOTU5YTg5NmJhZDdjYzczM2YwZTA2OGE4NiBsZWdhY3ktdHJ1bmsKKzU3MDkzIDEzNWIzY2Q1ZTcyMzJlZWZmMjE5MWZlMGU0NWVhNTA3Nzk4NzNhOWUgcmVsZWFzZTI0LW1haW50Cis1NzA5NCBkMjY0MTA3YzdkYTZmNmExYmQ2MzQ1Yzk0ZjA1NWZkMTViZTRiNDg0IHJlbGVhc2UyNC1tYWludAorNTcwOTUgYTE3NjhiYmQ3NjgxOWVkYjQ5ODdlMTk4ZDY2OTUwYzRhYzE2Nzk1MCByZWxlYXNlMjUtbWFpbnQKKzU3MDk2IGQ5N2ZkNDQ3NzdiMmMxMmM4OGZlNjBjNTk4MTMyZWRlYWRlOTZjNTggbGVnYWN5LXRydW5rCis1NzA5NyA0ZDJhYTRiZmIyZDYwMTRiZTYxYTI0M2U2ODZlMjZjZDQ1ZTg2ZGUzIHB5M2sKKzU3MDk4IGFmMTgwZDU0NmVjMjIwMjhlM2UxNGYzMWE2MjIzZjIxYjIwMjg0ZWEgcHkzaworNTcwOTkgOGRiYzk4MWYwNDBiOGM0ZDZmNTc1ODA4OGM2YzU2YjgzNzFkM2Q4MiBweTNrCis1NzEwMCAxMjRiZDI4MjQ5M2Q1NTZkMzNhYWE1YzkxZjhkNTQwNjA5NTcxNDMwIGFsZXgtcHkzaworNTcxMDEgZDNhODlkOWQyZjVlMDZhZjE3YzVkOTA5NGE5OTc5ZGRmN2M5YjYyYyBhbGV4LXB5M2sKKzU3MTAyIDQ1MTgzZDBiMjBhNzk3ZDgxZmEzZDRhMmYyYzliOTE0NTU4NDFiY2IgcHkzaworNTcxMDQgODlhM2NiYTFjZDUyNDIzMDdmNDYzZDBmZGU3MjRiMjFlZDYzOWFmMyBhbGV4LXB5M2sKKzU3MTA1IGYxYTJkNTFmMWNhYjI4NGYxNjc4ZmZjNzUyYzBmNGY3NTFlMTNhMzcgcHkzaworNTcxMDYgMTgxMDRkYmE4NWUzMzczZTgxNDBiY2Q3MjAyNGZiOTVhZGI1MTdlYiBhbGV4LXB5M2sKKzU3MTA5IGVjYjdiMmRkM2FmNTgwM2U4YzBjMzM4MTAwZTgxMzJhOTk0MDI5NGYgYWxleC1weTNrCis1NzExMCAzNDEyNDYxM2JjNGRkYWJmYTcxMTIwOWFkYmIzZjJmMzUwNmI2M2I4IGFsZXgtcHkzaworNTcxMTEgNDZmNDgwZTExNjZjODRhN2JmZWUzYjEzZjkzY2RhMjY5ZDlmYjM3YSBweTNrCis1NzExMiAwZGViZjk0NTVjZGMxNzc1ODQ4ZDc4OTA0NzI5YTJlZDMzOTIxZDQ5IHB5M2sKKzU3MTEzIGE2YzQ4OTI1ZGU1M2IwODYwZGFmODc4YjUzYjQwMTIxN2FlMDY0OGEgcHkzaworNTcxMTQgMjBhZWM5ZjM0NTk4ZDM1MzkxMWQ1ZDY1YzdmNzZiNDdhOTE5NTVlMSBweTNrCis1NzExNSBhMjg1OWFlODlkYTkxYTFiZWI4YWM3N2E2MDZiM2VhNTBjZTIzYzdmIHB5M2sKKzU3MTE2IDQ4YTMxYjBiZjUwMThiMzYwZjFjOGY5MTI1NzVkYzhjYTg5MDA1MjcgcHkzaworNTcxMjAgYjdhNWJjNjlkMmVlNWJiOTQzNzFmOWZmNmY0ODVlOGQzODZjYWZkZiBweTNrCis1NzEyMyA3YjM5MWE0ZWY4OWNlMmQxM2MyOWQxMjEyOTZlNTMxOTlhODVmMjhmIGxlZ2FjeS10cnVuaworNTcxMjQgMTJkZDYzNzdmZjg1YmVkNzlhZjFhYTM3NDc1NDcxZjM2ZmQzYWQ3MCBsZWdhY3ktdHJ1bmsKKzU3MTI1IDI4MWI1MThlNGJjYzI4Y2E0M2U3ZWQ2NGYwOGI4NTUxZTQyOTZjOWUgcHkzaworNTcxMjYgZmY1YWRiMzM3NGFkY2RlY2M1NTc1MTkxNjY4YzI4ODgxNmM3ZmNkYyBweTNrCis1NzEyNyAyMDU2ZDgzNTNhNjg5YjUxNGZhYzAyMWE0NTk4NjQ1ZTgzNWZhNTEwIGxlZ2FjeS10cnVuaworNTcxMjggMjYwNmFlYWE4NmQ0MDY1ZDRiNWVjZDg2N2MzZGQwZjJiYThkMjAyNiBweTNrCis1NzEyOSBmY2Y2ZGM1MWFmNTQzMWY0MjQwNWViMWMwMDMzNzJkNWU5NDA5YWYzIHB5M2sKKzU3MTMxIDRjNWVjYzJjY2FiZGQ1MmM1ZWYzOWY0N2YzNDA4MmJmOTBlODNlYmIgbGVnYWN5LXRydW5rCis1NzEzMiA5ZmMyMWM4YmFiYjk2Yzc2M2RkOTE0Y2UwYmQ5YjJiY2RkYWU3YzM4IHB5M2sKKzU3MTMzIDZmNDkyMjgwMzQxMTY2YTJhNDdhY2IzMDMyNDBmYTdjMDMyMzNlYWQgbGVnYWN5LXRydW5rCis1NzEzNiA4NjEwYTFjYTY1MGIzNDJhZWY4MDFhNDMxOThlNjBkNWMwY2JhYjA2IGxlZ2FjeS10cnVuaworNTcxNDIgYTVlOTg0ZWRhNDVhMjBjZTcwMDM4OGE1MzI3NTMyZjY3MmY4NjgzNiBweTNrCis1NzE0MyBlMzk0NDkwOTVjYzVhYjZhZjYxNmFlMDkxZGFhZDI3NDhlYmJkYmQzIHB5M2sKKzU3MTQ0IGNjN2I1YmMyOTdjNGVkNTJhNzUyMGNlNzk0NGJjNDlkMjQ0MGI3NmUgcHkzaworNTcxNDUgYThjYTE0Y2VjMTFjZDY4YzYwMTBkMjRiYjZmMDRmYmMzMTI0NWY0ZSBweTNrCis1NzE0NiBjOTE2NzMxMzIxYzBiMDFlODM5OWJkOTYzMmIzNWM2NjBmMGY0MmY3IGxlZ2FjeS10cnVuaworNTcxNDcgZjJmMGU5NWE3OTdiYzc3ZmUyYjAzOTZjZjZhNzQyOTk2NjY1Yzc1ZiBsZWdhY3ktdHJ1bmsKKzU3MTQ4IDU2ZDhjODcxZGM4NmIzOWRiZGVlZWM5NTJmOTY4NWUwNjEzZTM0MmUgbGVnYWN5LXRydW5rCis1NzE1MCA5YzRmNWIxZDZiOWRiNWZhZGQyOGYxZTcxNmU5NGU1NmEwNTNiMGYzIGxlZ2FjeS10cnVuaworNTcxNTEgOTg2Nzc2NDU2NzkxMzY1ZTA3YjMyNWZjYjI4ZWFjNWI4MDZhZGE0ZSBweTNrCis1NzE1MiA3NDQ0NjUwOWYwZjI3NmYwMmE2NWMwMDE4NmRlZjBhODQzZTJkMWU2IHB5M2sKKzU3MTUzIDkyNTE1YjY0OWI5MjI3ZTE0NDc2Mjc2NWQ2NzA1OTQ5OWZmMThlNDUgcHkzaworNTcxNTQgMWI0Yzk1OTc0YTdkYTcyZGY4NzljN2RhMzI1ODY1MWRlZDlkNGZjOSBweTNrLWJ1ZmZlcgorNTcxNTUgMTcyMWZmNWUyODY0ZDVjMDdiMjExM2ExYmM1ODc4ODJiZTVjNWQ3ZCBsZWdhY3ktdHJ1bmsKKzU3MTU2IDY4NzZhZTkxN2ZiMWJhYzcxYmMyOTYwMWI2ZWI4MGI0Njg1MDJlOTggbGVnYWN5LXRydW5rCis1NzE1NyBhZDA2MzI3ZTFmMzlhNzNjY2RjOTM5YmUwMDg5YWZhYmFkZTcyYTAzIHB5M2stYnVmZmVyCis1NzE1OCBiYzMxZGZjZjdkZmEwZDQxNGM0ZDVhNGZkZDc1MGZiYmYyMjA0M2RlIGxlZ2FjeS10cnVuaworNTcxNTkgMzdkNzA4NTRkMjU1MmNlN2ZhOTU1MTEyOGIwYWNlMzZhOWE1OGUxYyBweTNrLWJ1ZmZlcgorNTcxNjAgMzhkZmVkZjFkMmFhOGE1NmJmMjdlODlhZTM2MWRkN2IwODRkMjY1NiBsZWdhY3ktdHJ1bmsKKzU3MTYxIGI4MDU0MTI1MWUwZWQxZWZlMzkyYmI4YmYyY2RkOTYyMzNlYTIzYjMgYWxleC1weTNrCis1NzE2MiBkODg1OTJkZDNhNjEwOTJhYzUxZTU4NDNkMGMyYzE0MWMwODA0ZTY0IGFsZXgtcHkzaworNTcxNjMgYzU5Zjk5NDI2ODJiYjFkY2VjZTcyOWMxMzZlMzRjOWNmM2EyZTQyYiBhbGV4LXB5M2sKKzU3MTY1IGRmZmJmZTYwNzc3NGYwNzNmZmM4OWM3ZTg2Y2NjNzYzMzZhMTUwZTggcHkzaworNTcxNjkgZTBjYzgzM2ZkZDNlYmRlOTcyNDBiZTQyMDI2ZjA0NjEwOGY4OGNjNiBweTNrCis1NzE3MCBhNTRkODY2ZGM3YjRlZmQyZWI3YTc3OTA4ZDRjYzhmNmFlMzEwODEzIHB5M2sKKzU3MTcxIGFmMTJhNDZkZjczN2FkMTZhNmJjOTM0YWNlMTkxYjZlM2FhY2I5ZDUgcHkzaworNTcxNzUgYTkzMWM2MDE1YjkxN2E3ZmM2N2IwM2UyNDMyYjA4NzQyYTU1MGJmOSBsZWdhY3ktdHJ1bmsKKzU3MTc4IDY5NzUwYjA5OGVhMjQ3ZWQ5Mzc2NDZiNzNhN2UyYmZlNzFlZDcxOWMgcHkzay1idWZmZXIKKzU3MTc5IDA2OTUwYmQwNGU2OTY5MmMyOGQ0ZjMxOTM2MjMzNjE3ZjRkNDM0OTIgcHkzay1idWZmZXIKKzU3MTgwIGFkNDc4OGRmNTA0ZTA5NjQxZTM5NTYzMWI4MmE1ZWE4OThlZDUyYTAgcHkzay1idWZmZXIKKzU3MTgxIDg1YzIyYjRkNDQ1NTliM2M1ZjQyNjk4NzRlY2E2ZDczYzc1YjhjNTYgcHkzaworNTcxODIgYjNjYTdmNWI1MzdjNWQ3MmJmYTBmOWZjZjYzMWNkOTMxMzVkNjk3NCBsZWdhY3ktdHJ1bmsKKzU3MTg2IDgxYjQ1YzBkYTJjOGI4YTY1YjMxM2YyMTI3MWUzZjI1NDYwZDI3MjkgcHkzaworNTcxODcgNzZlMDQ5NzNiMTVkZmQwY2Y4MjA2YWZkZmE4YzEwMDNiMzEyYWE0OCBweTNrCis1NzE4OSBlZDk3YTlkMWMzNDczNDQxMmEyNDRkMjc0YzljMDVhNzU3ZGE3OGQ1IGFsZXgtcHkzaworNTcxOTAgMGJjOWNmMWNmOTU5MTg5ODI5NWRiZDZhMGQ1MmQ3ZDNjNWZjZDYxZiBhbGV4LXB5M2sKKzU3MTkxIDhkY2U2ZTI4NzBlODA5M2U1NjNmYmY1MTBjODdiYTViOGMxMDg5YTUgYWxleC1weTNrCis1NzE5MiBmNzhiZjU4NDI3OWU2ZGQ3Mzc3MmM1NDQ3ZGRmZWM2MzU2MzYzOTY5IGFsZXgtcHkzaworNTcxOTMgMmM1MWJlOTkwNGRlMWNjZTQ2ODJiNzAyZTllNWIzODBmNDU0MTNmNSBweTNrCis1NzE5NCA3ZTVlZmY4N2Q2NjRhMDA5Zjk4M2UwYWZmZjU4OTU3ZDQxOTkzYzY3IHB5M2sKKzU3MTk4IGZjYTM1NDE2MDQ1ODUxOGRjOTc4MjJiNjU3YmViOGYwZjMxYWViMTcgcHkzaworNTcxOTkgNmI1MzBlMDI5YjNjM2Q4M2ZiNzVmYWFkZDdmNzBjMTA0ZGQyMTU2YSBsZWdhY3ktdHJ1bmsKKzU3MjAwIDk1YjM3Y2FlNDdjNGY3ZWMxNjYzMzk4YjRjNTI3ZDIyM2E5YTY5NTQgYWxleC1weTNrCis1NzIwMSA3MzlkMzEwNTA5N2ZlMDIyZWIzNGE2MTQ5MzE5NmQwZDI5NTczZTRhIGFsZXgtcHkzaworNTcyMDIgNjkyZjU3YTVkYzc2YTE5YTNmOTZiYjE4N2UzOTRjZGI4YjZmZTFkOCBweTNrCis1NzIwMyBkMDNlYjc3NDU3NmEzZTZlNDkxOTJmMzhhMzlmNjkwYmFhZjk3Yzk3IGFsZXgtcHkzaworNTcyMTEgNzA1NDYxNWYzN2ZlNjAzYTY2YzRmNmYwMDgyZDM0N2RmZmVkNmI0ZSBsZWdhY3ktdHJ1bmsKKzU3MjEyIGNkNDU5MWI3NTRlMDExZDM2YThhMjU5YjdhYWVlY2Q4ZjNmY2M5M2UgcHkzaworNTcyMTQgNTg1ZDhiZWNlODI2N2QwNTk5ODZmY2Y3YjBhYmIyNWQyM2VmZWQzZiBweTNrCis1NzIxNSA5YTJmMzc5NDFiMmIwNWNiNTQxMDFhNWZjMDc5MmQ3MWE1ZDgyNTVjIGFsZXgtcHkzaworNTcyMTYgMGY1MGUwOTFhMzZmZWM2YjdmNTY0ZGUyMDMxNGM0MDlkNmQyMGI1MyBsZWdhY3ktdHJ1bmsKKzU3MjE3IDE1MDQ3YjJhY2QzZDU1NDA5Mjk4M2I5YmRlMmZiZTIxODdkNzczOTQgYWxleC1weTNrCis1NzIxOCAwNDk5M2Q5NmU3MzgxNjMwY2I5MGZlY2RkYzRiZjA4MTg0MmM2M2NhIGFsZXgtcHkzaworNTcyMTkgYzIzZGNkOTRkY2NlMDFiNjA0ZTJhZDljM2VmMzI2MTAxYTkyOGI1ZiBhbGV4LXB5M2sKKzU3MjIwIDM2NDVmMGI5NDkwOGJiYWRiYTczNjUzYjc2MzkwYzEyNTlmZWYzYWUgYWxleC1weTNrCis1NzIyMSBhZjZhNzE5MGNhYmNiM2FjZjljMzFiNzJmZjdlOGUwMWFiNmI2MzAyIHB5M2sKKzU3MjIyIGU3MWMzMjIzODEwZjI0NWJlMGRkNTNlZTZkZDdhMzIyYzlkZGE4MWQgcHkzaworNTcyMjMgMmY0Njc5MzAxMTMyZTg1ZTQ4YjZlZTVkODU3Mjk0ZDQ4ZmZlN2RlNCBweTNrCis1NzIyNCA1YWJhOTY0NjRiODc5N2VhMTIwM2VmNTg4N2FlNWMwNDNmMzU3ODNkIHB5M2sKKzU3MjI1IDVjMDg0NzJjZmMzNDVjOGY2YjUwZjgzZDIyYTI4OWYwYzY5MmYyNTQgYWxleC1weTNrCis1NzIyNiA5NTQyZTJlNmVmMDJiMmY4YTdjNzNjZjdkNzg1NzFjNGIzZmEwZDQ0IGFsZXgtcHkzaworNTcyMjcgNDNiMzU0YThmNzczY2Y1MjdiMjQ3MmM0MTM5NDdlOTdlOWE0OGZiZCBsZWdhY3ktdHJ1bmsKKzU3MjI4IGQwZjNkMjliNzA4ZDMwOGJhMGU2NDMyYWMwZTYwYWJlODNiMzg0ZjEgYWxleC1weTNrCis1NzIyOSBkZGZmNTIxYWM3ZjFhOTExNjA1NTgzYjU3NjZjMGY3NDdiODJhZGUyIGxlZ2FjeS10cnVuaworNTcyMzAgOGQ3ZmE4YTVhN2UzOGZlNWI2MmMyMGNkNTM3ZTVmOTkxMDMwZDY4MyBsZWdhY3ktdHJ1bmsKKzU3MjMyIDJiNGZlZTFkNDg2MWFjM2NiODFmOGYzMDc4ODE0ZmFkZDY0Yjg5N2QgYWxleC1weTNrCis1NzIzNyA0NDc0ZmYxMGJiMGEyMmI5NWFiZWVjOGVkNTRjYmVlZjRlNTBkNDhiIHB5M2sKKzU3MjQ0IGFiN2E2ZTc0YmJmMjM4MTQ2OTllY2Y0MzM0OGNkNGEwMzZhNTc4OTYgcmVsZWFzZTI1LW1haW50Cis1NzI0NSA0ZjExMjU1OTU4YmU5ZjI0NzY5YzVkNjViMzgxYjNiY2JhMjc2MmUxIGFsZXgtcHkzaworNTcyNTEgYzA0MGRiYjY5ZGY3MWM5MTBiMjcxNDIzNzJhNzY0MWI1ODY3ZWE1MCBhbGV4LXB5M2sKKzU3MjUzIGVlOWViYmY1ZjNkYzhiMDJkMjViOWI0N2Y0NzRmMDllNmRiNmJjOGIgbGVnYWN5LXRydW5rCis1NzI1NCA2MmVlZTc5ZGU5MjNhYzdkNGMxMTZlNGU5YzM1Mzc2YzBmMWU2MTNkIGxlZ2FjeS10cnVuaworNTcyNTUgMWVmZTliMTBjNGE2ZjMyYWJhNmM1NGVkY2U2MDhjMmI5NjZkZDU1OCBsZWdhY3ktdHJ1bmsKKzU3MjU2IGZhY2RkNzRhMGJkZDFiNzRkMzMyMGM4MjIwZmI5NWVmNjhhN2MyNDEgbGVnYWN5LXRydW5rCis1NzI1OCA1YmY2OGZjNzM5MjNhOTY5ODdiNzIwZmI0MjUxZDUwM2Y0NmVlNzE4IHB5M2sKKzU3MjU5IGYzMTgxZTlmZGU0ZDdhMGU1YjQ2NjNlMzMyYjU4M2U1ZWU1MGQzOTEgbGVnYWN5LXRydW5rCis1NzI2MCBkZTZmMzBjNjI3MzA1NDM3MDcyZDJhOTI1ZGU0ZGFmYzAzYjY5NjQxIGFsZXgtcHkzaworNTcyNjEgZDllMzdkMjZmNzhlOTU5MjM1YzgzZTI2ODhiZWYxN2UzYWMzYTEzMyBhbGV4LXB5M2sKKzU3MjYyIDZkMjUyODM4ZDIzMDYzOTdkMWIwN2FkYzBlODkxMjM1NWE2MGMzYTkgYWxleC1weTNrCis1NzI2MyBiOTM3OTJjZWQ5ZTgwZjE2NmJhZDFkOGVmMDJiNjdlMDJkMjRhZGNlIGFsZXgtcHkzaworNTcyNjQgYWVjZmY5ZTBlZWFlNGQ5Zjg0NzAzNjcxNTlmOTVhYzBhYjRiMjI0MyBhbGV4LXB5M2sKKzU3MjY1IDYwNTRkN2QyMzQ5ZjA0NjI0NmExZjU0MTQxMzk0ZmUyMTRlNmMxOTkgYWxleC1weTNrCis1NzI2NiAyMDgxMTE2MTI1Y2VhOWY1NjgyZGMwZmVjNGI2ZjU1NWYyMmI5YTdmIHB5M2sKKzU3MjY5IGU3Njk2ZmNlMzM3NjEwYmEzZGUxYTk0OWEzZmMzMjdlMjY0ZTZlMDkgcHkzaworNTcyNzMgYTAzZjM3OGMzYmY3YmYyYzgxY2U1ZDZhODkzMGE1NTZlNDE4Yjc0NyBhbGV4LXB5M2sKKzU3Mjc1IGM5NDdhMDQ3NjhlNDVhMjMxMWRjMGRhYTFkMjYxNDY1MjVlYzlkNmEgcHkzaworNTcyNzYgZTMxYjM4N2U2ZDc3NWMxMDVhYjBkZGU5MDFiM2M5ZTQ4Njg0ZTYxMCBweTNrCis1NzI3NyAwMDgxZGJhY2I3YWE2MTIyY2MzZTM1NjhkZTYwZGJiMWI2ZDUzM2Y2IHB5M2sKKzU3Mjc4IGQ4MDBhOWNkYWI3NjQ2NDEzODgwZDYyNmYxZDRmNDMwOTcwYmMwNWUgcHkzaworNTcyNzkgM2I0ZTM5ZTgzMTkzMjEyYzNlNTY2M2ExN2QzOTA4ODY5YzEwYWNjMCBsZWdhY3ktdHJ1bmsKKzU3MjgwIDg0YzVjMDUyNGQzY2VmN2RjZDgyNjFmYjljYmRhYjMyNTM4YzQ0ZjIgbGVnYWN5LXRydW5rCis1NzI4MSAyNjczY2RlZDg4NTU0NTEwYzAwZmJkMTUzZTk3ZDdjZjJiNmE0ZWQ4IHB5M2sKKzU3MjgyIDc4MjM3MGM5MzU3NThlNjQzMzRjNGIzZTIwOWUxZDA4MDUzNGI0MTEgcHkzaworNTcyODMgOGJhZDg3MjJmMGU2NDI4ZDJhYjdhMDljZTFjNGE3Nzk2NGMxMjE1NCBweTNrCis1NzI4NCAwOTJmMDJjZjAxOGY5ZDkzNzkwMDMwMjI4YzQyOGU2ZDJkZWM3YTg0IGxlZ2FjeS10cnVuaworNTcyODUgMWJmMTc4NTVlOGU4NWYxZjM3NjJlMWIxMjViYWM1NTZmYWRmOGM4YyBweTNrCis1NzI4NiA4YjY0MDBmOTcxNmZlZTNkYmY5NGI4MjJlYjAxNTZjMDQwZTFhN2VhIGxlZ2FjeS10cnVuaworNTcyODcgNWEyMGVlODA1ODE5NThiMDE1YzI5M2ZjOTMxM2Q3NTc3YzM2NjkwNCBweTNrCis1NzI4OSAwYjA2MDY5NjYwYzIyYmVjMmU3ZDc0ODU5NWI4OWU0OTYwN2IzZTI1IHB5M2sKKzU3MjkwIDllODFiMjI2ODlkMmQxN2RjM2QyMTVhNDgxNGJiNjhjNjdlMjZkYjAgcHkzaworNTcyOTIgNjg4Y2Q0Mzk4ZjQ0Njg1NjA2YTM0MjYyODJmYjgxYWI0YjNmZTYxNiBweTNrCis1NzI5MyA1MDk4YzY4NzkwOTE2ZjRkYzI3Y2NiMjA5NjEzMjY0ZGRiOGE3MWViIHB5M2sKKzU3Mjk0IDU4OTE3NTE0ZTQyM2VjZjIxZjFhZDZkYjdjNjIyYzdiMzQxNjBlNzcgcHkzaworNTcyOTYgYWFkMTdiMWFiMGM5MmRiM2JhODFmYmU3MDQ1ZmRlYjM1M2JmYjE4YSBweTNrCis1NzI5OCAyZWMxNmI2YjRkMDQ0MjM2YjU4OThhNDdmODM3OTA0NTBkZmEyZWIzIHB5M2sKKzU3Mjk5IGU0YWRlMTZhNjk0ZmY1NDZlMGE1M2VhNTg4NzJlNmFiM2Y3NGJlMWIgcHkzaworNTczMDAgMjZiMjlmN2I4ZmZkOGVmOWZhYWMzYTgwOGY4NTEzZmJiMjdlNzBhOSBweTNrCis1NzMwMSAxOTk1MDRmYjkxYzU4MGU2YzZhZmFkZjNkZGMzOWZmZjVkYTRlNmFiIGxlZ2FjeS10cnVuaworNTczMDIgN2ZlMjg0OGZkNDFkNzQ2Y2I4OTQ4NGYwMGIxNmI5NjlkMDcxZTk2OCBweTNrCis1NzMwMyBhZTgzZWZiNzM1MDZkMjU3ZWMzMTNhYTcwMGZlMDQ0ODM1NzU0NDQyIHB5M2sKKzU3MzA0IGVhZTEwZDljOWM0ZWVkYjUxOTgxMjE4NmI3NDNkZGI5ZWY1MWYyZGQgcHkzaworNTczMDUgNTA2YjkxN2QyMzYzYTg3MGZjNjAxNjUxZWM3ODlhMDljMGI1NjgxNSBweTNrCis1NzMwOCAzMjg0MzA3YTczNTE5YTlkNWJmNDU3MjNiMjI4MzVlZDJmNzQ2MmU4IHB5M2sKKzU3MzEwIGYzNDc2ZTliYmU2YWIzNjEwNjAzZjM5MDkwMjYyODU0ZGM2NDgwZDAgcHkzaworNTczMTEgN2Y0ZDkzZTAyOTVjYWM1YjVmZDBlYmNlNzljYjA1NTZmMzJiNjMzNiByZWxlYXNlMjUtbWFpbnQKKzU3MzEyIGZhOWE0MGVmMDc4MGRkNzdmY2NhYzdkN2I4ZjgxOGI1ZjVkYjkyMDQgcHkzaworNTczMTMgMDZkZTYyZjMzYzM3N2Q2MzNhMWJmYzQwNmNjODI1ZGFhZGJhNTA2NSBweTNrCis1NzMxNCBhOWE0Y2Y5MWNiN2U3YjVjZmVhYjE1ZGFiYjMwYWZlZDMxM2UyZmU5IHB5M2sKKzU3MzE1IDgwYmM2ODg1MGEwODYwZGIxYzdlZmRjMTdhMTE1ZTBkZjY3OWQ4MzggcHkzaworNTczMjAgMjQ4MGI4NjRiZTAzOTdhNjA1YTk2ODEyOTUyNjNhNzRjNDZhMzMwNCBsZWdhY3ktdHJ1bmsKKzU3MzIyIGRlMWJhY2U4MWU2ZWQyYTRlNTNiODhhM2I2Y2U4OTYxOGJmNDg5OWQgZGVjaW1hbC1icmFuY2gKKzU3MzI0IDhlODdkOWQ2ZTgxMjc1YzEyNGY1YTdiMTYwOGQyYjUxMmFlMGI4MjEgbGVnYWN5LXRydW5rCis1NzMyNSA3YTc1Y2QyOGIxMjVkM2I2ZWI5OTNhYzYyZjA5NjkxODZmMjg4MDQ2IHB5M2sKKzU3MzI2IGIzNDg1NTBhMmJmYzY4OGQ2YWJlN2E0N2QzNmEyMDlhOGVjOTZhZTggbGVnYWN5LXRydW5rCis1NzMyNyBiY2JkYzk1ZGZiYTlhYTU0M2YwNDEzZWUzOTczNWE5NmY2YjBhMjk2IHJlbGVhc2UyNS1tYWludAorNTczMjggOTA4NzMzN2YzYTNmODk5MWRmZTEyZjcxNGQ4ZTNhYWJmY2UwMzc4YSBsZWdhY3ktdHJ1bmsKKzU3MzI5IGE5MTFjZDlkMTk4OTNiZThmNGRmODk0OGQzOWNiYzA3ZGE3MGM5MzcgcHkzaworNTczMzAgZGRlZmJkYmRiY2I1MWNlMGFiMTg3YTUyNTVmMzM5MTRkY2RjZTE0OCByZWxlYXNlMjUtbWFpbnQKKzU3MzMxIGFkYjgzZjRhYzRjYmU1ZTI1YzBhMmFjZWZhYzVjNjIxYzEyZDU1N2IgbGVnYWN5LXRydW5rCis1NzMzMiA3MjlmZTk5YjQwYTU3MmRlYzllZmFjYWYxNmMzYzQ1YTZhOWYzZWZjIGRlY2ltYWwtYnJhbmNoCis1NzMzNCA0ZWRmYzU5YjcyYjJiNGYxZGM5YzNjOGU4ZDA0ZmNlNzI0Y2ZkMDAzIGRlY2ltYWwtYnJhbmNoCis1NzMzNSBhZjhmYzQ2ZDRiNTYxNzhlZmYzNjIwMzMwMDQ1NDYyMjYxYzc4YTJlIGRlY2ltYWwtYnJhbmNoCis1NzMzNyA3MWM2OGRlM2IxYzU3NGQ4YWFhYTZjN2IwMWNmNDYwNTg3N2U2ODIyIHB5M2sKKzU3MzM5IGY1M2YxYTFhYzAxNjQwZjhiM2MzYmI4MDdjMWQ3ZTFkNmYwNDBjYmQgZGVjaW1hbC1icmFuY2gKKzU3MzQxIGEyY2MwMThmMzcwMGRkNDE5ZmUzYWI0ZjYzYzQ3YzA5ZWIwMzgzN2EgcHkzaworNTczNDMgOTA4MGNjNzZkYTk4ZjBlMTA4ZjFlZTlhYzhmZjRlMWE0NGYxNDU2MyBsZWdhY3ktdHJ1bmsKKzU3MzQ1IGUxY2RkNmVlOTEwZTdkYjIzZjZiN2EzOGY4NzAxNjllNmY1MzdiYzAgbGVnYWN5LXRydW5rCis1NzM0NiAwMGY4YjI0ODI3NjRjZjZjZmNiOGUyMmNiNDI3Njc3ODE1YThkYmZlIGRlY2ltYWwtYnJhbmNoCis1NzM0NyAwMzE4YWJjZmFmMzZhNmZkNjg0ZmI4MTBhZjE3NjE0ZWNlYmU0MGNjIGxlZ2FjeS10cnVuaworNTczNDggOTUyMDU3OWNjMzBiZmRjYTlhNzczOTdlYzgzNzIxZGVlOTZhMDEzZiBsZWdhY3ktdHJ1bmsKKzU3MzQ5IDgxODg2ZTA1ZmQ0MDE2YWJjNGViYzBlYTgxZGFlNDIwNzU3ODM5NGUgbGVnYWN5LXRydW5rCis1NzM1MCBhMTU2NTQwNDU5OWU1ZWQ4NmY2ODA5ZGVlODhlYzA2NjRiNzA5NDY5IGRlY2ltYWwtYnJhbmNoCis1NzM1MSAyNjUwMGJhMDlmNzBjNjIwNTc4NGJjOGExYzIwYzQxYzBkYmZhNGFjIGxlZ2FjeS10cnVuaworNTczNTIgZTIwNDJlYzMzMGE0NTU1MjI5YTBmMWEyNGVlYmMyOGVmMTI1YTlmMiBsZWdhY3ktdHJ1bmsKKzU3MzUzIDlhMzQ3YmExN2NhYjBlOGY4YWRiMmUwMDlhMWQyZTg1OGE1MWJkM2IgbGVnYWN5LXRydW5rCis1NzM1NCAzZWQ3ODE0Y2NhMzY2ZDA5ZjdlMWU2YjU0ZWM0NmRjYjgzMWFmMDc3IGxlZ2FjeS10cnVuaworNTczNTUgNzdjZjI4MDhlZWE2Mzc1MTFlNjE2ZjA1MDI2YTk1Njg1NjBiNDFlYSBsZWdhY3ktdHJ1bmsKKzU3MzU2IGNlNTJjZDcxYThkOWEyN2MxMGM1YTkwOWUxMzFkODc2YmUzMGU0YTAgcHkzaworNTczNTcgMjA3M2VhMzAwNWE3ODc5ZWI1OTcwNDlkNDdlN2RkZjZiYjYzY2U1MiBsZWdhY3ktdHJ1bmsKKzU3MzU4IDc5MjNiZmYxOTIxMmIwMzljMzVhNzgxNjNlZDE1NmI0NDVmMTdmOGEgcHkzaworNTczNTkgMDc3ZmU3ODYwY2M5YjE4Njg1NWY1NDNmMWEyNmU0NDVkZDdhN2MzMCBweTNrCis1NzM2MSAxYzk4YjQ0NWQ4NDcwOTljMjY1MmE3NTdkNDM1MTRmNzBkODI1MWYwIHB5M2sKKzU3MzYzIDQyYjM5Y2I1MzZkOWU0YjU5ZjQ5NTlmNjlmZWQwMjllZWI4MGQ3ZWYgcHkzaworNTczNjQgMGI2MjUzOWFjZmI4ZGVkNjcyNTFjNzU0OGM2NmFjOGM2ZGIzNGJiOCBweTNrCis1NzM2NSBlNzQ0YTIwZWQ4YTZhZGJmMDQ2MzJiN2IyNjJjYWU1MDllMjY1MzVmIHB5M2sKKzU3MzY2IGY5NGM2OGZjZjc5ZGM1MjYyY2U1YzRhM2EwMDhlZTc2ZTQxOGQyYzYgcHkzaworNTczNjcgMjczYWNlMzU5ZTU1ZTZjYmI1NjcwOGE0YmIzNmQ4NTQ5OTIwMGNjZiBweTNrCis1NzM2OCBlM2UwNmIzODk0MDZhOTBhMzRlNTlkNzQ3NGZhNTZlYTFiZGQ2Nzc5IHB5M2sKKzU3MzY5IDU2N2M5MjNjYjFjNjFkOTJlNWI3NDhiOTQyOTg1NGM3NmI1NWE5NmEgcHkzaworNTczNzIgODNjODQ0OGM2ZGU0MTE1YWQ5MjFlZDBkYzgyOGU1NTYwMzllZDRhNyBweTNrCis1NzM3MyA2NmY3M2NlOTdiMzJkNzE0YTA5ODk3OTg5OWI2YWQ2ZWNlNzY2ZjYxIHB5M2sKKzU3Mzc0IGI2MjZiODRiNTA3MDQ1MTAxZTJjMjFiZjIwMGNlY2MyYWY0ZGJlOWIgcHkzaworNTczNzUgMTlkYTQxZmMxMTdhMDNhZDc4NjllY2U5N2IxZjdlMzQ4MmEyMzEwMyBweTNrCis1NzM3NyBiMTk3YzFjMDRiYTE1ODY5MjEyNDQ1MmQ5ZjhiMGU2ZDE4YzQwMzJkIHB5M2sKKzU3Mzc4IDA1ZmUwMjdlMmQ4MDk4Mjg0ZGQ4OTc4YjMyOWE5OTk1MTEzMTM3NDAgbGVnYWN5LXRydW5rCis1NzM3OSAzMTQxNTE1ZjZjNDVhMjhlY2QxYzYyZTdhNzZjMzk2MTljMTk3NjVlIHJlbGVhc2UyNS1tYWludAorNTczODAgMmI5YjIxNDAyNjUwNDBkMDFiNjU0NDUxMDFlOWQ0ODExNDA5Yzk2OCBweTNrCis1NzM4MSBkM2JhYWIyMDk2MjY0OWUyZWY0MjM5YWQ0NzdlYmY0OTg5YmQzMzBmIHJlbGVhc2UyNS1tYWludAorNTczODIgNzMyMzMzMTg3NmRkNDM5OGRjMmUxY2RhMWM1NTUzZDA1YTNmN2RmYSBsZWdhY3ktdHJ1bmsKKzU3Mzg5IDg5MDFhN2NlNmMwNzQ1YjJlY2M4MjUzYWY2YzcyNzVkMWU5ZWRkZDUgbGVnYWN5LXRydW5rCis1NzM5MCAzZmJhMTRlYzlhYWViNDgzY2E5YTEwYjRkY2I1NmFhYzI0NjJiYjhlIHJlbGVhc2UyNS1tYWludAorNTczOTEgMmM0MjJhNDk3MmYxYzk1NjA2ZGRmZTZmY2VmMDBkMTNmYmMzNjg4YyBsZWdhY3ktdHJ1bmsKKzU3MzkyIGQ3NTE3YzMwNjc5MTQ1YWEwY2NmODZmMTZlNmQ4MTJkMDlhNzQ0M2EgcHkzaworNTczOTMgYzNiNTNlMDc0ZWQxMWIzYjhhZGQyZTZkYThlN2ViZmMwMWMzYjgxNSBweTNrCis1NzM5NCA5NDI4NjBmOGNkOTdlOWM1ODNhOGViOTFmYmE4ZjQzZDUxZTZiYmQzIHJlbGVhc2UyNS1tYWludAorNTczOTUgNThmMzVkZjBmNmY0ODg2ZDQ4OWE3MTA0Yzg4Njc0YmY1ODFlNzc1NCBsZWdhY3ktdHJ1bmsKKzU3Mzk2IDRiNzAzNmRjNzZkNTU5MjE5NzhkNmQwNjJjMzExZjdiZjhiMTc5NGIgcHkzaworNTczOTcgZTI1NzhmMzA0MmIyZDUyNzU2NGNiNzU1ZTg1ZGM2YTNjMGQyODZkYyBsZWdhY3ktdHJ1bmsKKzU3Mzk4IDhiMWIzMjcyNTRjMGQzNTE5OWRmZDIxYjBiMzhmZmIxODdmOTFiZTkgbGVnYWN5LXRydW5rCis1NzM5OSAyNTZhNGQzYzU4MWY3MmQ2NGVkMzM0ZTRkNGUyM2ExZWI5NTZkNDIyIGxlZ2FjeS10cnVuaworNTc0MDAgZjc5OGMzNjYyNzBjMGZiY2UzNmQwM2IxNDhjNzQ4MzFiYjMxODNlOSBsZWdhY3ktdHJ1bmsKKzU3NDAxIDhjNTY5NTY5NzFhZGUzZWQ2NTY4OTcyZTdjMTI4Mzc4NGY3NjY4MWMgbGVnYWN5LXRydW5rCis1NzQwMiAzMDI1ZTY3NmU2NjkxODM4MTM5M2UzNTRlMzFhNmE2NDAzMTNiZjRiIGxlZ2FjeS10cnVuaworNTc0MDMgMDY2ZDM5ZmFkNDA4ZTFkMWQ1NzllMmJmMzhlNTM0YTA4MjQyM2MwYiBsZWdhY3ktdHJ1bmsKKzU3NDA0IDQ4ZDkxZjE1NThhMDA5ZDk1ZTVhNjM2ZjM5ZjY5NjVjMDFhMTA1NmMgbGVnYWN5LXRydW5rCis1NzQwNSBjNmQ2MzIxZGM3Zjk0MmMxOGZmNjQ4ODZmMTE0NTQzOWJkYTQ3MWI3IHB5M2sKKzU3NDA2IDcyMWMzZWExM2Q4NGEzYzA1OWExMzkzYTllMmEzYTQ0NDMxMTJlZWQgbGVnYWN5LXRydW5rCis1NzQwNyA2MTI0YjJlZjY1MTIwMTYxOWU0MGQ2N2FiMzk1NjU1MTRjNjBmNmMwIHB5M2sKKzU3NDA4IGE2ZTViMzg2OGYzZDgyNDI0MjMwYzRhNzJjYTNmNWRmMDdmMDdjYWYgbGVnYWN5LXRydW5rCis1NzQwOSBlNDJlN2QwMzE3M2IzMTQzYjc1ZTVkMDMzODdlMjU3MDdhYjQwOGNkIGxlZ2FjeS10cnVuaworNTc0MTEgNjFmYjU5NzkxN2QxY2Y5NzZiZWFiMDBlMDdiOWVhY2VhNzI5M2NhMCBweTNrCis1NzQxMiA4NDYxOGIyMDY0YzE2YWMzNjNlNTg5MjVhNDJiN2MxMDExM2M4MjBkIHB5M2sKKzU3NDE0IDZjZjZiODMxYWIzNmNlMDZlMGM1NGZmYjE4YjE3MzVjMmFkMzY3ODkgZGVjaW1hbC1icmFuY2gKKzU3NDE1IGNmMmIzN2I5MGM2NmY1NDk0N2M2YmYxMTE0YmU3ZDAwOTk4MjAyMDEgbGVnYWN5LXRydW5rCis1NzQxNiBlMWEzNjU1OWQ4YjY4OTc4YWQ2NmMyODAzYjU0NmViZDk3Y2NjNzMwIHB5M2sKKzU3NDE3IDhlOTc3MTFmYWRjMTQ3MDA3MjA1NDE2MGMzYzBiYjc5OWFjNTgxYWUgZGVjaW1hbC1icmFuY2gKKzU3NDE5IDM4MzYyMGU2MmVlNjRjNGU0YTA3Y2MyYmE1MjAwNzc5YmMxN2M3ODIgcHkzaworNTc0MjEgYjBhNzFiZmZhMGExZjcxMzZmM2VjODcwZDA5ODM2ODFiY2ZhOWM3NiBweTNrCis1NzQyMiBkMDI2MTBiMGE5ZjNhY2RjNWU2Mjk3MjI3ODk0OGU5ZDM4MzMyZTY1IHB5M2sKKzU3NDI0IDhlNjE3MjdkYjUyOWI1YjE2OGQ3M2VhMTE2MDgxMjRhNGIzODA5YjAgcHkzaworNTc0MjUgNDFkYTQ5Yzk3YTU5ZWM2ZjgyNzE2MWRhNmZjYjdlNTVlYWY1NGM2YSBweTNrCis1NzQyNiAwMWVlNjMxMWJhNDY5NGMyYzU3Y2QzOGVlMTJiOGY0MzQ1YWUwNzU1IHB5M2sKKzU3NDI3IDA5OTQ5NThmZmQ0ZmQ0ZDcyOGMxMWY1ZmI1MmJmYmJjOWY5OTJjZDMgcHkzaworNTc0MjggNjliOGUyOTc2NTU2NWE3NDMxZGRiOWI3ODY1YzJlOTRkOGJmMmFmOSBweTNrCis1NzQzMiAzY2Q2MGY3NDRmOGU5M2I2MDBkNDc5ODMzMzhkMDA1NTQzNjA1NDI4IHB5M2sKKzU3NDMzIDNjYjVkZWYxODY1ZGE2NTgwZWUyYmI4Nzc3Y2QyYTU4OGUxNjAxNDQgcHkzaworNTc0MzQgNzhmN2VkN2Q4MDY0OWMxMTRhZTA3NjA3YjA3OWQzNGZlYzVhMGVkMyBweTNrCis1NzQzNSA1OTk1MTQyODkyMjZlMWE0OTkwYWE4YzZlNWVhY2IwYTAyYjZkMzVkIHB5M2sKKzU3NDM2IDAwZTEyOGI1MjcyZjU1ZWFmNjcyMzhkMjRjMDc5ODQ3NzE2YTUzNjcgcHkzaworNTc0MzcgNzc2YjhiZDY4YjMwMWEwNjZiNTAzYmZlOWQyNDg0MDU2MzMwODI3NSBweTNrCis1NzQzOCAyYzJlOTA1ODk0YTM4MGM2NTY4ODlhNjYyZDUyMjFhMDJjNDZjM2MyIHB5M2sKKzU3NDM5IGE5OWVjNGJlZmRhOGFkZmY1MjZlYWMwNDBjN2RkOWZiZGU2YTYyOWUgcHkzaworNTc0NDAgNzRiOTkzYThhZDZmZWY3MzE5NDM2NTlhMTljMTBiODE1MTA0Nzk5NyBweTNrCis1NzQ0MSAzZDVkMDliNDUxYjY2YTJmODVlNGM3MmRjNzFhMWZkYmJhZGZiODYwIHB5M2sKKzU3NDQyIGY4MWQ5NGMwNWEwZWNkYTQxZGUwZDk4YWM0ZTc5YTI2YjlmOTgzN2MgcHkzaworNTc0NDMgODcyYzdjM2YwYWYzNTQwMGVmYzUwNmZiNDJmMDJjYTAzYWFkMDgwZiBweTNrCis1NzQ0NCA1MzU1MzM3NzA5ZTEwOTUwYmM2ZTI1NmY4NWM0M2M4ODIxNGFiODdlIHB5M2sKKzU3NDQ2IGZiNThmYjNiZGRjMTliOWRkNjkyNzFlODU5NzM2NTU4MGRiM2JiYmIgcHkzaworNTc0NTUgMWI0MjBlNmUwMGViMTY0YTVmZDAwNDdhZDMwMzIwOTUwZTMyMzJmZSBsZWdhY3ktdHJ1bmsKKzU3NDU2IDIyYmJhZmE2OTMzYmQ5ZmNkMDAyNzllNzg1MGYzMTE2NGZjOWE2Y2QgbGVnYWN5LXRydW5rCis1NzQ1NyBiYjI4OGUwNGI4ZTU4ODQ2YzljM2IxM2FmNzhjNTY5OWM3NDY5YjUzIHB5M2sKKzU3NDU4IDMwMmFlZWUzMmRhODNhNDlmYzc0OGVkMTIwNmE2N2Q3MjQ1MjE1YmUgcHkzaworNTc0NTkgYmQ5M2FjMzBjNzc5NTJiZjlkMjM3NjcxNjA4ZWI4Y2E3OGNmN2E4MSBweTNrCis1NzQ2MCAxODRmODAwZmRiZjY3ODVmY2RkNDY1ZmQ3ZmY1YTBmMmFkNzg1MGMzIHB5M2sKKzU3NDYxIDU0M2YyYmE5N2ZhYjlkN2QxZTY0ZmUxNjNlNjYwMmIyNWVmOTA5NWEgbGVnYWN5LXRydW5rCis1NzQ2MiA3ODM0MGNjZWExNGJlNDJlNzBmMzczMjBhMTJmYzA3Zjk5YjU2YzVmIHB5M2sKKzU3NDYzIDZkMTNlMThmNzA2YWUzOTY5ZGZlOTY5NWMwYTA5ODVjNjFiYTVjYmUgcHkzaworNTc0NjQgMDhiNjI3OGFhMWY0MDlmY2FiMGNiY2NjZGYzZjE4Mzk1OTEyN2ZhYyBsZWdhY3ktdHJ1bmsKKzU3NDY1IDI0MTA1MzczOTczMzMyNDYzYWQxMzRkYWVmYmRlM2M0Yjg0NjIxNzEgbGVnYWN5LXRydW5rCis1NzQ2NiBiYjMzNmE2OGE0N2YyNTM0NDZiZDczNzg5YjZkMGQxMjhiMjgxOTY1IGxlZ2FjeS10cnVuaworNTc0NjcgNGNkMTFlODI1NjQ0ODA5ZTFiNjYxOGZlZTBiNTc0YTMwOTRlMzM1NiBsZWdhY3ktdHJ1bmsKKzU3NDY4IGNhZmUxZjY1M2RiMzZiNjMxZDQ2NjczZjMyNzczZjYwMDBlODRiOTcgcHkzaworNTc0NjkgNmExODFhYmZjOGE0MDcwY2YzZjMxNDA5OTUyNTZmMDJkM2ViNGFkOCBweTNrCis1NzQ3MCAyMGUxY2M3NGU4Y2E1MWYyNTg4NmM5ZjQ2NTNlNjk5MmZmNWVhMDQ0IHB5M2sKKzU3NDcxIDVhOWI3YzJmMzU4OWQ5NTEwNTM4NzY1ZjA1ZjkwMTc1NzMwNzAzY2YgcHkzaworNTc0NzIgNzhjZjJiZGE4ODU3MTg4MmZjNWVjMGE1YzFiODc2MTJmMmUwZTE2YyBweTNrCis1NzQ3MyBlZmZlZWE3Y2Y4OTg0ODUxYjUyODI1ODg0NjJiNGI2ZDVkMmJjN2E2IGxlZ2FjeS10cnVuaworNTc0NzQgZDhhNjNiNjMyNzQxMmY4ZGNmZjQwOWFiYWZmMWZiYTJmOTM1NGIwZCBweTNrCis1NzQ3NSBjMzFjMjA3YjhjODZkNTU3N2M2NzkwMzVkNzYxNzBhOWRhYTE3NWViIHB5M2sKKzU3NDc3IDA1NDhkZjc4MTBhMGNiODMzYzEyYWU1ZTg0Mjg0NmI2MjdmZTU3MDcgcHkzaworNTc0ODAgM2E2ODlmODhjODM4NWUxMWQzMGU4OTRhMWFhZDg1NTVjZDgwMjcxYiBjcHlfbWVyZ2UKKzU3NDgxIGE5YjNjZTA2NjVjM2EzNWQzMmY5MWM1MzAyMzhiZGI4YzRmODBkY2MgY3B5X21lcmdlCis1NzQ4MiA2NzNjYmM4NWQ4YzQwYmMyMGZlMDE0N2IxOTFlODAwOWViNGIyMDJhIGxlZ2FjeS10cnVuaworNTc0ODMgZWIxOWYyZmFlZWExMmIyMmQ3NTM0NjNjOWViZWRjM2I2NWM4MzNjMCBsZWdhY3ktdHJ1bmsKKzU3NDg0IDM0ZTZmYTc4YjY0MzI4ODUyYTE5Mjk1YTNjMDU1OGJiNDM0YmUyZDEgbGVnYWN5LXRydW5rCis1NzQ4NSA2ZTczNTkxMDY3MTgxYTMzMjUzOTE2MzcyODI5ZmMwYWQ5MTFmYjdhIHB5M2sKKzU3NDg2IDMxNTJkZjcwNTE3YTZmMTIxNDdhNjFjNDc5N2NlZGNjZWJmOGYxYWIgcHkzaworNTc0ODcgYjU1ZTdjNTMyNTNjMGQxMTQ5M2M5MWU2OTU3YTJkNmIwN2Q3ZTk4MiBweTNrCis1NzQ4OCA3ZmZhZGRkMWRlMzA1MGM0ZGZjNTQ3NDM0ZWU0MzNkZTllYTQ3MmU3IHB5M2sKKzU3NDg5IGVkMWQzNTExOGVkOGYwZjQxOGU2NDE4M2NiNjliMDk1NmZjNjNkZDMgcHkzaworNTc0OTAgYmJjNDQzMjZiNTNkNjk5ZTBjYzhiNDc4Y2MyYjdhZWMxYmM3N2MzMiBweTNrCis1NzQ5MiAwMjdjN2QwNDRjZmQ3Y2Q4ZDQzNDY3ZjI4ODI0ODdiZDEyZTQyNDA4IHB5M2sKKzU3NDkzIDYzODBmODhlM2RlZWRiMzJkM2FjYTk2NzQ1ZDVmN2JiMzFmMzFiYjYgcHkzaworNTc0OTQgZmVkNGY3MmIwNGNiOWQ5ODI2OTc4NTEzMmFmZDU2MzBmM2E3MTk0YiBweTNrCis1NzQ5NSAxMzkwYzExZTY0MGIxYTZjY2RkNDg2ZTc3MGMwYzg4YmNhMzc5M2Y5IHB5M2sKKzU3NDk2IDgyNGI5ZDUyZTAwNmJjYWM5YmU1ZWFkMjcyYzBjN2Q5YzgzYzQ3ZGYgcHkzaworNTc0OTcgZDViNTJkNTZiZWJhZmJkZWQ0NmY2ZmQwNjNlNzE5ZmJkMWIxYzM3MyBweTNrCis1NzQ5OCBmM2IzZmZkMTM5NTQ5ZWFhMTkzNmNhNWJmOTk0OWNmMDlmOTg1ZDIyIHB5M2sKKzU3NDk5IGVmNTYyODFmMDNiNDVkNDU4YjFlZmZkMTk1OTMwZDdlNWRmZDI2ZDUgcHkzaworNTc1MDAgMTU0N2RlMTZmZWM5NTFhNmJjMjNjZjljZmYzZWQ4ZTQ0NDkyNzM4MiBweTNrCis1NzUwMSAwMzY1OThkZTQ2NjBkNjI0ZjlkYzk4NzU5Y2NiOWM0NDk2ODA0NDMzIHB5M2sKKzU3NTAyIGJmMWE1M2NjNmU2NTFmN2Q1MGU2M2FhMWI3YmE5ZmRhNGQ0NDUyY2QgcHkzaworNTc1MDMgNzhlMDBhMGY2MDE1ZTVhMWIwNzQzMTg2YTYzNGVlZjIwZmUwZTExNCBsZWdhY3ktdHJ1bmsKKzU3NTA0IGVkMTU5NGExNmJkYjdjYzMwNzg4NDRhMjNhOTQ3ZjhlOTBhMmZlYjkgcHkzaworNTc1MDUgODRmYTk0N2ZmNjk2NjAyYWQ5ODkxZmM5ODkwZGJmMWZkMmE3NWE0NSBweTNrCis1NzUwNiAxYjFmN2NhM2ZkNDkzMDVkZTI5NTJkN2FkZjJhNzBmNDc4ZmI3ZGYzIHB5M2sKKzU3NTA4IGEwOTcyOGI4OTUzMDIzMmQwMjg3MDI5OWEzNWI2MDkxYWFhODUxMDIgYWxleC1weTNrCis1NzUwOSAzZWI1ZGRhZGZiZjc4YmViOTEwNzMxNzVkOTgwOTg2Y2E0ODNhY2MzIHB5M2sKKzU3NTEwIGQ2ZDQ5M2I2MTdlM2U1MWJjYWE3M2JkZDBlMzM1ZmIzZDM1MTA0NDEgbGVnYWN5LXRydW5rCis1NzUxMSA0MDNlYmQxNDU4YWZmYjVkZmFmYzhlNjcxNGVmN2RmZmVlMTQ3ZTA0IGFsZXgtcHkzaworNTc1MTIgNmRlZGIzM2QyZGEzODQ5YmFhZjlkMDk4ZTk5Zjg5ZjllNTMwMWRlZCBweTNrCis1NzUxMyBiYWI3NWU0YzY0N2Y2ZjQxZmQ4NGVlNjk3ZmNiMGZlZmU1MzgzYmQyIGxlZ2FjeS10cnVuaworNTc1MTUgMzg5NWMxMjllNDg2MjIzNzExNGRhODEwNjY4MjgxMWYxNGUwMmQ4MCBweTNrCis1NzUxOCBjMmM3NmEwNDQ2ZmFiMjY4NTM2YmFmNTFjMTM1NzI4OTNkNTVlYmU0IGxlZ2FjeS10cnVuaworNTc1MTkgYTEzNDg1YTNiNDA3ODNmNGM4NmIzZDg4MjQ4MmIxNzI3MmUxNjEzNCBweTNrCis1NzUyMiBmZjNjMGJlNzFkYzJiMzdjMTQyMTk3YTIwNmU0NjU1ZDE1Zjg0NzEzIGxlZ2FjeS10cnVuaworNTc1MjMgZDhhZDI5YzY4NzYzZWFiNDJhMzY0MjY3NTQxOWM1YTExYWZlYzgxOSBweTNrCis1NzUyNCA4NWVhZWNmOWQ2NzgzNDFjNjNjYzJmNGNlNTQyYTgwMzgxYmMyODJjIGxlZ2FjeS10cnVuaworNTc1MjYgNWZkNjVlMjUwODQzNTVlYjVjYTNlMmMzNjAzZjRjOGEwZDNiZjBkNiBweTNrCis1NzUyNyA1NmJiZDE3NjcwNTc1ZjMwYTMzMmFhNTUzODY0N2I3Yzc0ZmRmYTEzIHB5M2sKKzU3NTI4IGE0MGRmYjUxZGY5MTU0YjA5ODc0NDA1YzJjZjVkYzBmMmMzNjRmNGEgcHkzaworNTc1MjkgNDI2YWRiZmY0OTFkZDU2YjI4MWU5ZjQzNTgzNmFhZTE3NGFiYWY3MSBweTNrCis1NzUzMCBkOTExNWE0NTBmMWM2OWM1YjU0YWI4MjIzNDAxYjljMDQxZWM4NWQ5IHB5M2sKKzU3NTMxIDgwMzY1ZGQ0NTVmYTY4ODk5NGZkZGI5ODBlMWU5ZWUxMTVjNmQyZTUgcHkzaworNTc1MzIgNGM3OGMwNDhjM2JhMDRkYmE0NWQwNzQzYzc0ZGVlMzk4ODRiMDMxMSBweTNrCis1NzUzNCAyNTE5NzUxNTMyYWY3NmI2N2E0MDM2ZmM0MzU3ZGFlMmNhNTRjYWUzIHB5M2sKKzU3NTM2IDE5ZGMyZWVhY2JjMTFhMzdlNjlkNjM3MDVlZGE0YzAxYmJhMWY0YjMgbGVnYWN5LXRydW5rCis1NzUzNyA4ZTEyZDU2ZGQ2MDNlYWNhZmQ0M2I5ODk0NDA3YTQwN2ZmYWVjZGMyIGxlZ2FjeS10cnVuaworNTc1MzggYmI2MjQ5MmI1ODRlYjZmNTU2ZjJhM2UyOTc4YzBhYjRmYjNlOGM0ZSBsZWdhY3ktdHJ1bmsKKzU3NTM5IGU2NDg0ODVjZjNhZmUyNjc1NzMyNmUzOTc0MDVjZjA2YWQ5OGUwMjQgbGVnYWN5LXRydW5rCis1NzU0MCBkNWZiYjg0M2IwYTlkZDAyOWE2ZDk3NGViYjg4ZjZmYWNjZDY2ZTUyIHB5M2sKKzU3NTQxIGU5NDYxMDBiYjlmZDljZjNiM2ViYjY0MzBlZmRlOGI1ZDI3ZjJiNTMgcHkzaworNTc1NDYgZGQwNjcwYzYwMWQ5YWJhYjQ2NWI1YTNkYWYwOWU5OWJlOGIxYjc2YSBweTNrCis1NzU0NyA5MDQ2OTdiZTY4Y2NiNTg1NzM3MGMxMzc1YWM1OTQ3OGU1NWU1ZmI2IHJlbGVhc2UyNS1tYWludAorNTc1NDggMjUyYTg0MjgwYjczMmFlYThlZjQ4YTE4MGFjZDFmNzY5NWI1N2E2NyBweTNrCis1NzU0OSA5YjI5NDg0NmQyMGQwYmFmOTdhY2YwMWViNWNlYzdhMzg1MDQ0ZWJkIHB5M2sKKzU3NTUyIDJjMDJiYTcyNzE0Yjk0NGU2ZGUwNTQzNjZkM2NhM2JmMzc0NDE2MGMgcHkzaworNTc1NTQgNmI0NzgxZGM4MWZmZmNjY2M5YTQyNzUzZGVkYTNlNGI1ZmFiY2Y5MCBweTNrCis1NzU1NSA1OTRmODllYzA2MDc3OWUyNzkwMTI2ZWU0OWU3ZWRjNTBlYzhjNDlmIHB5M2sKKzU3NTU2IDdiZjhmMjMzOWVjNjliZmMyZGY2ODk2MWI3OTFjNzkzNzU5NGY4OTkgcHkzaworNTc1NTcgZTJmZmEwY2Q5N2I5N2JmYzc1NWNhZTJiNTQ1ZTgyYmI2Zjk4OGQ1NyBweTNrCis1NzU1OCAwMDIwYmM3ODRjNzY5ZjhiMGViZGEwMzNiNDY3NDU1MzViNTYwYjdiIHB5M2sKKzU3NTU5IGE0OTY2NWY4ZDJmNGQwNzIzMmNjNTljYWEyNjY3ZTIyMWE1Y2EwYzEgcHkzaworNTc1NjAgMTkxOTZjY2UxNDMxMzBiMjEzZmU4OTBiYTMxZjA4NDE5YzdmOWNmYyBweTNrCis1NzU2MSBjMDljMzI2NGE5MDA5NTBjN2VjZjU4YmFkNDExNmQ5YjdlYTIyZTFjIGxlZ2FjeS10cnVuaworNTc1NjIgNjI4NzRiMzRkOTVkOTljNzJkM2JhMTQ4NGYwMjcwOWRhNDU5YjM1NyBweTNrCis1NzU2MyBmYjMyNmZkOWQxODQyZDNjZDg3MWFmZTgxNjA5YzVkMDFlMjljYTY2IHB5M2sKKzU3NTY0IGNkMjM1MDI3ZTY0YzM3YmYyZTRlNjBmZjAxNWM0ZjY1NzdkYzNiMzkgcHkzaworNTc1NjUgN2VhOGE2Y2NkYzQyZGQxNGU2MWU0NGIwNzZmYWVlNDIxZjM3MjQ1OCBweTNrCis1NzU2NiBiOTdmYTQwNTUzNDM4ZGQ2NDM0N2RhYTI0MGNmMjAyYmJkODkxM2JiIHB5M2sKKzU3NTY3IDAxNzA0MThkYWRlYWJiM2VlYzdmZTI0MTg1MDMzYTg1NGE5ODcwZWQgcHkzaworNTc1NjggNTgwNWZlMTdjYjJkYzYwNDFlZGFiZDMzZmZkNGFjYzdkZDdhOGEzOSBsZWdhY3ktdHJ1bmsKKzU3NTY5IDdhNjJjMjQ2OWRlYTJlNGU5YzNmNjk0NjVmMzkyZmU2NjdlZTAyY2MgcHkzaworNTc1NzAgMjRhMDUzMjU2NzhiMTNhZTNkMWFjMWY1YjRiOWQwODY4MTljM2QwYiBsZWdhY3ktdHJ1bmsKKzU3NTcyIGNiMjhlMTRlZTgwODBkNTI4ZTAxYTk0M2E2MmIxOWNkMzQ3OWRjOWQgcHkzaworNTc1NzMgMDQ0YjYyODU4MTVmMThiMjMxZDEzNTNhNzk4ZTZjYjhhOGIxNTY4YiBweTNrCis1NzU3NCA3OTczMTA0MDIxN2I1ZjY1ZWY1YmU0NTQzYWUxNTAyNWY5YzEyODM2IGxlZ2FjeS10cnVuaworNTc1NzUgZTIwZDViNjQxODljOTQzZmYwZDE5NDFkYTM5NjA5NzhkOWQ3NDc2YyBsZWdhY3ktdHJ1bmsKKzU3NTc2IDNmMGYxYzc3NWQ5ZDQyZmExODBjM2Q1YmExZDI5MjkxN2UwMGUyZWUgcHkzaworNTc1NzcgOWZiODMzMWNlYzJjZmU3M2RlNzUzNGY1N2Q3NWY5NjkwYTY5MTFjZCBweTNrCis1NzU3OCA4ZTAxZjI2MjYyY2Y5ZTRkMDBhOGJiN2Q0MzFlZGM2NzNjNzkxYzBiIHB5M2sKKzU3NTgwIDkyMjA5MzFlNDc0MWJmMDRmOTY3NWFhZjQ4YmUwYjQyMjM2MzcxMmQgcHkzaworNTc1ODEgYzcyYTNjYzIxZWY3M2UxMzIzNTJjMjlmMzIzYzllMjFhNDJiNTcwNCBweTNrCis1NzU4MiBhZWNiZjU2Nzg3MDQ1YzA5NjgzMTgxZDQ4NTk1MzQ3MmZhNDA2MmY3IHB5M2sKKzU3NTgzIDg3MTdiNGY4ZTFlNWVkODMzMDQ0MWJiZGIyNTU5YzAxN2JlNmIwMWUgcHkzaworNTc1ODQgYjExMGJhYzlkZjQwOTAyM2I3NGIyMGI2ZjY0YzViYjhiMmM1MzM1YiBweTNrCis1NzU4NSAzODRmOWQ5Yzc1YTAyZmZlODY3YTAxNDJiMTI0MjZhNmJjYmU5MTlmIHB5M2sKKzU3NTg2IGI0YjE0YzRiZWI4MmNhYjg3ZTNhMzY1YjUzYWM5ZDBiYzM5N2U1MzEgcHkzaworNTc1ODcgMDBjYmIzM2NiODY0MGY4ZmRkNzk2ODMzZmVjZTBjZDgzNzBkYmRjYSBweTNrCis1NzU4OCBmZDFmY2JhNWUxNmIwNTYzMmUwMDUyYzYyYzFjNjUwYmVjMGE2YTc1IHB5M2sKKzU3NTg5IGYzYjBhYzRlNjg0ZjlkZGNhOTQ1OGRmMGI1YjM0Yjc0ZjMwNmMzYzQgcHkzaworNTc1OTAgN2JlMGUwMGIwMzY2ZDlkZGNhYzdlZDgzOGZhNTk3NjBiNDU1ZmQzYiBweTNrCis1NzU5MiAxMWVjNDA5N2ZhZmU3MTU0YTFkM2JiZjI0MmJiNDVhZjVhZmEyY2QyIHB5M2sKKzU3NTkzIGNiZDUwZWNlM2I2MTJjMDhhNjY5ZDIwY2ZlM2Q4MzVhMjU1YjM5NzMgcHkzaworNTc1OTQgYWVlMjFlMGM5YTcwZjM5MDYwM2RkZWNiNWZjZjFmZmVhODdhNjc0YiBweTNrCis1NzU5NSBhYTM5NTBmMTExZDlmMTJhNGFkMGMwYjM3NGMxNTRlYjk2OTM1ZWU5IHB5M2sKKzU3NTk2IGI4NDY1ZjAyZmNiMWVlNmZjMjQ2NTUyZWQwMDIwNTU0OTFmYzdlNmQgcHkzaworNTc2MDEgZmRlZjMyYmJiY2I4NDA3OWFmYzkzYmY3NmUzMDM4NTA2Mjc5OWU4YyBweTNrCis1NzYwMiA0OWRjZTNkYTBlODAzY2YzYTJlYzM5NjZiYjhmMmM5NTllMjc1ZTkxIHB5M2sKKzU3NjAzIGUwYjZiNjI4N2M2YjIzZjdiMzk2NGYxNDg2MmE1MTU4YzlmNWM0M2UgcHkzaworNTc2MDQgYmM5OGFmOTcyNjc4ZDg4ZWI3MzhiYjNkYWY5YzQ1YzY3N2M0M2E5NSBweTNrCis1NzYwNSBlODM2YzEyYzU0YzJmNDQ2MGY5M2YyYjkyNTdhZTgxYjUyZmE5N2MyIHB5M2sKKzU3NjA2IDgzYzEzMWRmZGQ4NGMxODg5NGNjYzgzMWRkYjI2OGFjOGY4ODUxNDAgcHkzaworNTc2MDcgMWRmZTY4NWI4NTc2YmZlYTE4NGE1ZGU1ZWJmNTg0NzJiNGUxZTE2NSBweTNrCis1NzYwOCAxNzFiOWYxNWMyMjNhNGJkOWU4OGVkMWExN2IwOTVkNWFlZGM4NDI4IHB5M2sKKzU3NjA5IDMyNDMyMGQ5NDYxMDJmMTBiOWIxZjljYWM3OTQ1NTdhM2I3MDg0Y2EgcHkzaworNTc2MTAgNzJhZmFmOWFiMzBiYTc5YmU1NDE3MjVhODAwOWViN2NlZWIxODk3ZSBweTNrCis1NzYxMSA4YjA2ZjUxNDc0NDU4NjE5ZjNhYWJkNDNhMTFlODQxYjRjYzYyMGRkIGxlZ2FjeS10cnVuaworNTc2MTIgNjhmZTM1MDkwNzU5MjgxODgxMjRmNjQ3ODcxYWY0YmEyMGRhMTJlMiBsZWdhY3ktdHJ1bmsKKzU3NjEzIDlhMTNlOGZiMWEzYjZjYzljNzhkNjQ5NmRiOGZjZTEwMDRlMmY4N2UgcHkzaworNTc2MTQgOTZkYTFiOWRlZThkYjJjMTk2Njk3MzljYjJkMGM3MDQyZWYxM2NkZSBsZWdhY3ktdHJ1bmsKKzU3NjE1IDRlY2JhZTA3NDgxZjIxNGExMWRkNTM5OTQ3MTIwODdlZGY0M2JiZDIgcHkzaworNTc2MTYgM2JmMmNhZDhmMjJhOWNlMTAxNzcyZWRhN2Y1OWUwYjAyMWExOTIyZCBsZWdhY3ktdHJ1bmsKKzU3NjE3IDY2ZTM2Y2U1YTU2YzZmMjYyYWEyMTBkMTA0ZTMxMGYyZDQzMmQxYTQgcmVsZWFzZTI1LW1haW50Cis1NzYxOSA5NjIwMTM0MDEwYTVhZDJlNTdmOWFlMWJkNzZmYzNjZTJiN2EyZjQ3IGxlZ2FjeS10cnVuaworNTc2MjAgZDE3ODlkNGZmMDBjNmVjNjZlMGNmMzllZjNhNGZiZTc4YmQ1ZTdhYyBsZWdhY3ktdHJ1bmsKKzU3NjIxIGNhYWQzNWU4MjEzYjhhN2VmZDc0ZjE5YjU1YjYyNTExMzFjYzUzZDUgYWxleC1weTNrCis1NzYyMiAxZWRjNmUxN2FlMTg1ZDQyMGQ3MmM2NzJkMTgxYTU3MWY4MzZjNGM5IGxlZ2FjeS10cnVuaworNTc2MjMgMjVhODkzZDY3YzY0MTg0MzA1OTY5Y2QxNjA3YzVmZWM1NTlhYWRkNiBkZWNpbWFsLWJyYW5jaAorNTc2MjQgMjdmMDI4OWI2ODM1MWNlOGM0MmZiYjIxNzBlMWFhMWIwNzhjMjQ2YiBweTNrCis1NzYyNSAzMDUxMTA2OGQzZDQ4MmU5MTRlNmQ2NTU0MzkyNmI3MjgzNGE4YjVlIHB5M2sKKzU3NjI2IGU2YTlmY2QxYjQ0ZTgxNTRmYjI1YWQ5ZWE3YTg0MDk2YjhmZGQ5OWMgbGVnYWN5LXRydW5rCis1NzYyNyA1MzNmYjUzMjFkNmJjMWQ0YzA4ZWMwYzBjMzYzNjE0NzY3ZjIxZjYxIHJlbGVhc2UyNS1tYWludAorNTc2MjggOGJiMWZlMWE3MmE0YTMyYjVlODBiZmU0ZTRhNjc0Y2FjMWI2NzkyMCBsZWdhY3ktdHJ1bmsKKzU3NjI5IDg5YzRmZjk3ZmQ4OTNlY2EwNzVhY2FjYTEyNDU1OWYxMTFlNjg3ZWIgYWxleC1weTNrCis1NzYzMCBkNjlkODA2MDBjZjE3MjE3NjY1ZGQ0MjQzMDQ2MGM2YWE0OTgyY2YzIGFsZXgtcHkzaworNTc2MzEgZmIyY2Y2ZThjZDg2MTE1Mzk3MzljODY3OTIzNTE2ZmRjYWI5NGZhYyBsZWdhY3ktdHJ1bmsKKzU3NjMyIGRlYzJlYzgyNjg3NDExN2FiMDkzNDE5OWY2NGFjOGIwOTdkMGNlNDggcHkzaworNTc2MzMgMWEyMzBjYjc3ZjA1Y2JlYzZkNTUwZGE3NjdmZmU4MDMwZDJhZmI3OSBsZWdhY3ktdHJ1bmsKKzU3NjM0IGI5MmZiMjRjNWQ0YjUwNjFiNjI5ZDhjMTVkMDNlOWI1ODAwOWJmZGEgcmVsZWFzZTI1LW1haW50Cis1NzYzNSBiMmRmNDRiOWMyNTEzNDhkN2YxOGU4NGE4YmZkNWVhYjNlOGExMjdhIHB5M2sKKzU3NjM2IGE3OTUxYWJiODUzNGIzMTAyYjk2MDU3YjhhYWM2MzZmZjEwYTBiNzIgcHkzaworNTc2MzcgZDFhMTdjZDI2YTRiMDJjZmVmMDVjZGQwNzUzNGIzMWY0ZmFlZDgxMSBweTNrCis1NzYzOCAzN2JlYWUwOWZjYjBmZDVmZWE5YjNkYzc4YTEzNzRmYzkzNWVmN2ZmIHB5M2sKKzU3NjM5IDUwYjc4N2NiYThmMWNkNmQ3NWE2ZjY5N2FjYTg1NWUzYWY2NWRlYmUgcHkzaworNTc2NDAgNzEzZmJhMzRkNjZiODhiNDExZGZlNjc5ZGUxOTA3MTE2ODljZmFjNiBweTNrCis1NzY0MSAwZTUxMGFmZjVlOWFlMTU0MmI4M2QwZmYzY2I1MmRhMDgzMzlhMzk1IHB5M2sKKzU3NjQyIGNiNWFlMDIwYTA2MGViYTc2Yjg5MGVlMjk3MDViNDQ4N2FhNDYwZDAgcHkzaworNTc2NDMgOWY3NGI2OTkwNTZhNDY1NmQ3N2RjMjNlNzVjMGQyOGI3Nzg4Mzc1NyBweTNrCis1NzY0NCAwNWM0NzM4ZjhhNDNjNzMzMGQ3Mjk4MzYxMjFiZTk5OGFlY2M4NGZiIHB5M2sKKzU3NjQ1IDFjZTg5ZjI1NzhjZjgxZGZiYzYwMTM3NjFkMDExNWE3MmE1NDU1ZDUgcHkzaworNTc2NDYgMGU5MDY1MTAyNjJkMWE5OGU0OThiMTg1ZDY5MTBiODk4ZjhhOGQxOCBweTNrCis1NzY0NyA3MWNkNTU5OGI3NGQ2ZDBiODAwYTgxMmI0OWUwYmUwODhlN2JjNmI5IHB5M2sKKzU3NjQ4IDZiM2U4YWE1NGRkOWQ5MTg3OTlkNDFmN2FiMTdjYjVjZWJlMzkzMzMgcHkzaworNTc2NDkgNTQyYjliMTExOTE1Y2VkNjQwYjU5NmYwMmNlY2VmNjBiMDg5ZGMwNyBweTNrCis1NzY1MCBkZjhlZjljODM3MWE0NTUwMjkwODQ5ZTJhNTQ3MDM5ZDFiYzhkYjdjIGxlZ2FjeS10cnVuaworNTc2NTEgODI2MDIzMTVlYWViOWU3MTBlZWUxMTUwYTJmOWU5ZjQ3YmFjZGZjZSBsZWdhY3ktdHJ1bmsKKzU3NjUyIDlkZjkxMWQ2NTRhZmNiYzRiMjk1YzhhM2VmNzQ4ZDBiZTFlMDBjNmUgcHkzaworNTc2NTMgMGY4MmZjNDJmZDY4MWFmOTI0OTRiMWMxZDFmZjhlZWY1NTdmMjllMyBweTNrCis1NzY1NCA3ZmRlNmVkZjJiOTIwMTI4MjY1YThkNWJkZjFjYmNjMzhjMDU1MTliIHB5M2sKKzU3NjU1IDc5MTkxYmRmYTIzYjUyYzI5YWFkNjgxOTk4OTU0MTRhMDIxMjA2NjEgcHkzaworNTc2NTYgM2E1NmU3M2FlOTE5NTc0NTlhMTMzOWI0NTk1ODMwYzU4ZGM0Y2U3NyBweTNrCis1NzY1NyBmNDg1MWRjMGRmMDQxNzQ1NzZmMTIwMWQ2MWIwZWVhNWFjMTRjMGY2IHB5M2sKKzU3NjU4IDcwNzNmNDgxNDdiZGFmYzBiMGI0OGY4ZTQxZTdiMzI5OTZhNjg2ZTAgcHkzaworNTc2NTkgNGJlYmIyMjgxN2NmZWVkYjNmMjUwNjY5Y2Y1ZDRhYTJiYmY5M2QyOCBweTNrCis1NzY2MCAwZDI4YTUyMGM5YjE4ZWExOTZjMTcwYjNhN2QyOWIyMjAxYTQ5NDU5IHB5M2sKKzU3NjYxIDE3MjI0NTkyNWFlNjAzZDE2MTJkYWVlZGJhMDk0MTZjMWQ1NmZjZGQgcHkzaworNTc2NjIgYTAzNTMyNjA3ZDFjYTdhODNkMTVhMGNlNzhmMTljOTdhNTNiNmJiYiBweTNrCis1NzY2MyAzM2U4N2Y5NzBhMjJjMDMyMzk1MmQ4Zjg5ZDFmYTQ1MmYyYTNlNmU5IHB5M2sKKzU3NjY0IGVjZGEzMzA1MTczOWQ5NmU5YWVmZGE2YTIzM2IzZWFkNjYwMzQ2MWIgcHkzaworNTc2NjUgOTg4NTRjNzYyOWM4ZTAzM2YzZjhjMzQ1OTJmNThkYTA2MzkyNGFmYyBweTNrCis1NzY2NiBhYmVhNTY1MzA0MDQ5OTY1YzhhODgyMmRmMDk0M2M4MDdlOTg2NmUxIHB5M2sKKzU3NjY3IDI1MGE5ZDA3YzJjYzJiNmYzODMzMzVmMmUyN2E5MGQ4ZDY4NWZlMjcgcHkzaworNTc2NjggNGQ2YzEzNDQzNDBjMmM3MmEwYmYzNDIwYWY4NjFhNTg4ODYyYjYzNSBweTNrCis1NzY2OSBiOTIyNmNhZDlkZmRiMDhiZGJjN2I0MWQ5ZTMwYzhiNTMwOTU1OTdjIHB5M2sKKzU3NjcwIGRjZDI4NWMwNzgxMzVjNTk5Mzg1ODBkMzgyMGQzMTI3NDVmM2JiMjMgcHkzaworNTc2NzEgZGMwZjBmZmQ0MjU3MjhlNzIwNzg2NDE5M2I2Y2Y0NTM2NWNmZjYxNSBweTNrCis1NzY3MiA5NmJkZTA4ODJlNWY0YTQ3ODQ4MDZiNWM3MjU5M2YzMDEwNDMwZWY1IHB5M2sKKzU3NjczIGVhZmM4YjIzNTg5ZDEzYTAwODUwYjgxM2VlNWUyYmI2NDQxMDQ5MjUgcHkzaworNTc2NzQgZTE0MmNkNGI1NzEwMWM1YzIzNGZkMjk2MzY1NmVlZTlhNTQ5N2I5ZCBweTNrCis1NzY3NSBjZDgwZWI5ODk3MjgzZjM1ODNhNmQyYjc2NmVjOGUwYWIxMDAzN2U1IHB5M2sKKzU3Njc2IGFhNTdjZWUxMTYzMTNmNmFmZTExOTU1MjZmNzI5M2IwMzIyN2MwNjIgcHkzaworNTc2NzcgYjc1NGMwOTA4ODk3ZWJiMjYzOTJkNDFlODMzYjhiZGE1MDE5MDA1OCBweTNrCis1NzY3OCBhYzhiMzg5ZjAwMjVkNzM3YjQ0Y2Q0Mjg3OTA3Njc5ZDlmMjQ4YjFiIHB5M2sKKzU3Njc5IDVmZGU1ZDY5NjRkN2NkNzE5NDVlZjM2N2U1NjhiNzUzMGI3MWE5NTkgcHkzaworNTc2ODAgNDc3MTYzOWZjMDQ5OTYzOWZjZjk3MTE5OGYwODRlN2RlNTE2MGFiOSBsZWdhY3ktdHJ1bmsKKzU3NjgxIDA3ZDY3YTk3MjVhNzhlMWIxNjc2MDM5ZWU4MDQxMjc1ZjFjMTlkZmMgcHkzaworNTc2ODIgYWI4OWUxMzBkNjRhODRmYWRmMzFkNjE5OTkyNzc5NzljZjdkODA1NSBweTNrCis1NzY4MyA2ZTM1YzdjMTc2MDRlNmFmMjhmMGUyN2Q5NmI1YzUzMTU0YjhiMmJkIHB5M2sKKzU3Njg0IDBkY2Q3ZjA4NzM5YWM4MDcyNzQ1MjRmZmQ4YjMxZDA2YTdjNTdiNjIgcHkzaworNTc2ODUgODhiYjQ1OWZkYmY1N2M3Mjg2MWY5MDAwMTMwYmQ2MGRhMDE2N2IxOCBweTNrCis1NzY4NiA5ODM0MzAxYTJmZDNlMDE3ODcyZmYxM2ZhOWZjMTJiNTg3ZTQzODg0IHB5M2sKKzU3Njg3IDBjZDQwMWJmMmFhN2RkYWE3NGJmMDFlMzI1MTNlZTAyYmNhYWU0ZTkgcHkzaworNTc2ODggOTUwODQ4MTE3Mzk3ZDcyNGQ0NDBjYTFhOWFhNzZkYmI1MDBlN2NkNCBweTNrCis1NzY4OSAwMTA0ZDc5OWRkNDQ1NDJiMjU4MTIyY2IwMTRmZGQ1YzJiZmFhZTI4IHB5M2sKKzU3NjkwIDE2NTkzNGJjNDQyOTYxMDQ2MDc0MjQ5M2Y5YTNiNjBmZWE5ZDhhNDcgcHkzaworNTc2OTEgZDVmM2MyZjQxNmYyYTg4YjNlNGM2NjhjYzExNzAyZTg5YWE4MDEyZiBweTNrCis1NzY5MiA5MDdhNDVkZjEyOTUzYTU4YWNhOGI0NGRlNjA3YjA3NWYzYmRhYTYxIHB5M2sKKzU3NjkzIGEzNDY0NGE2NTdmNWEyNmZmNmQ1MmM2NTRmZWQ0MjllOWYyNTRjMzAgcHkzaworNTc2OTUgMzkxOGE4YTUxYmQxOTdlOGNmYzUzMWRiNGFkMDYwNWVmMmM0NDc3NCBweTNrCis1NzY5NiA5NTJiZjZhNDRjMjc3ZjcwMzllZjhlMGY0YTYzMDY1MTQ2MmUzYTkxIHB5M2sKKzU3Njk3IDEzMjFiYTBiNjcwZjEwMTAyMDc0ZTdlMDU3NjRkYzc4YmJlMDdkYWIgcHkzaworNTc2OTggYjk2Y2EzNTA4OTFkMWRhMmYyZWYzYjlkOTMwYTU3YmZmYzY0M2Y3NSBweTNrCis1NzY5OSBhNmQzOTMwYjU2MTM4MGFhNmRiM2MxOGNiZDI2NTA0NGVhOTVjNWJjIHB5M2sKKzU3NzAwIDkwNzU3MTJkZWU4ZmQ0ODZlMDc1N2IxNTdjMDBmODgyYzdkYTE4NmMgcHkzaworNTc3MDEgODA3N2VlNDlmYWRmZGNkMzZiMWUwM2ZkMzM5NTg4YjkyZTQ5MjY2YyBweTNrCis1NzcwMiA3MDgwMzNlZDk1MTU5NDhkMDEzZWI5NmNlYzVkMTgzYzQ0MzgyNDk1IHB5M2sKKzU3NzAzIGNjMGZlMDU2YmFiZGY1YTk2ZjQxYTM4ZTI5MWEyOWZkNjg5MTFhMjQgcHkzaworNTc3MDQgYWMyZDVkMzQ2MjUyYTI0NDc0OTcwZWZmNTQyYmZiZDE3MjlkZTdlNCBweTNrCis1NzcwNSBiNWQ5YzE5NWEwYzUzYTk3YjI1ZGQ1MzMzOGJlMjdkNmVkMzNjMjY3IHB5M2sKKzU3NzA2IGUwOTNjYTU1OWMyM2NlYmZlZTc2NTNhZGZiODdlZGMzN2Q3OGQxMjIgcHkzaworNTc3MDcgOGNjZjZmNGM3ZjEyNTY4NTcwNGU3ZjU0YWI1ZDA1MDg0NDlmZjMzOCBweTNrCis1NzcwOCA0Mjc1NDIwOGE2NTQ0Y2ExOTM2NGY0NDdjY2RhOGM5NGYzZjlhNDU0IHB5M2sKKzU3NzA5IGU4MmM4MGEwNDQ4ZDViNTY1YzZmYzM1YTA2NTE1YzAyODc3YTk0OWEgcHkzaworNTc3MTAgY2M3ZTkxNGEyMmQ5Y2M3NDBmNmMyOTlmODM4ZGRkNDYzOWFlMDU4NCBweTNrCis1NzcxMSA2ZTEwMTNiOTIzZTNjMWM4MmFjMDVlYjFjMWI5NjZkMWM1ODlmZWRmIHB5M2sKKzU3NzEzIGZmYTQyMzNkZTg2NjIyN2FkYTBkMjc0ZGE0ZDQ1NGE5OTgxYWJlOTYgcHkzaworNTc3MTQgOTYyNDgzMmYzMTU2ZjM2Zjc3N2MxY2RmN2M4MTBkYzRkYWQ5NWIxYiBsZWdhY3ktdHJ1bmsKKzU3NzE1IGExMTM2NzMxN2NhMGZjY2ZhZTk0ZDIxOWQyNjQ2M2I5NGViOTgxYTMgcHkzaworNTc3MTYgOGIwYjExNDZkOTA4MDVkZTU0Yjg5ZDFmZDZmMWJkNjlhMWFjZjlmOCBsZWdhY3ktdHJ1bmsKKzU3NzE3IDExMzIyMGRhY2U2NDZiYjMxMGI3NTNjYmEzN2RlNDA3ZGU4MmE4MGUgbGVnYWN5LXRydW5rCis1NzcxOCAzOWQ5ZTUwMDBlN2NmNGMyY2E0NWIwZDAzZGEwNWVjNTgxMDU4ZGQyIHB5M2sKKzU3NzE5IGRmNTNjNTc2YzUzMWVjZTFkNDdiYzA1MWQ5NDc2Njc2Mzg5M2MwMDcgcHkzaworNTc3MjAgYjZlMzNiNWVhYzQwZmFlMDUyZTFhYzA3MGRmOWM3M2FhODk2ZDBhYyBweTNrCis1NzcyMSAwOGY3YTZiMjVjOGYyYmQ0NjYwNTcyZWQ1YTc4ZmY1ZTcyOTBkNzg1IHB5M2sKKzU3NzIyIDY1MDBjOGJkN2ZlYWI3MDUwMTg3ZjU5NzUyODc5MmY1MWM3YmZkMTcgcHkzaworNTc3MjMgM2E3YmRiMGE1OTQ4MmJhMDEzMWFhNThlNjMzNDM4MTIzNzRhOGUyNyBsZWdhY3ktdHJ1bmsKKzU3NzI0IDU2YWZkZDZkNmNmNzhlOTFhMjY2YzAyYWNmYjA4ZjYyNTRiZWRjZDQgcHkzaworNTc3MjUgMjI3Y2NkZDBmOGRiN2FmMjhiZmYzZjdjYTc2NTkwYzcxYzllMjU2MiBweTNrCis1NzcyNiA5NzNkYTJlYmMyZDBmMzdkMGFkMDU3ODllYjIyNmRmMzgwOWNmMjQ5IGxlZ2FjeS10cnVuaworNTc3MjcgNmZjYjg3M2YzOTZjNjg4OWRlYzU5YTdhYTRhNzkwODFkNzQ3MTcyMCBsZWdhY3ktdHJ1bmsKKzU3NzI4IGQ4M2MyYjIxYWMyNmVjMmVjZjQyZThjYzQ1YzdhMjYzYmNkOWNmZGIgcHkzaworNTc3MjkgN2VhNjg4ODU2MmQxZDM4NDcwMzNjMTE2NmMzMTVlMGM4NGY2OTdiZSBweTNrCis1NzczMCAzYmYxYjhiMzQwODAzMmQ5MDdjYWY5ZjU0YzY1MjJiOWZhMjA0ZGU2IGxlZ2FjeS10cnVuaworNTc3MzEgN2RmZWQxY2ZlNzYyYzU0ZTY0NDVhMGQxNjQxZmVmZmQ2NmIyMTA1OSBweTNrCis1NzczMiA1YjdhYWZhZGYyMjMwMTk0ZGU0ZTU3ZWViMjQ0ODU4YmNkNTBjMzkxIHB5M2sKKzU3NzMzIDBhMzhjMTI5NzE3YTMxNTVlNzZhOWJjNDI2Y2RlZDBjMzhjMDIxNmYgcHkzaworNTc3MzQgZDYwMzY3YTEzMTZmNDM5MGQ3NzgyNTI4MmUzYTRkNmUwNDM4Yzk2YiBweTNrCis1NzczNSA3ODNlYTY4MjFlMDQ3MWEzNTc3YzhhOTRhOWE3ZjlkODVmNjA1Yjc0IHB5M2sKKzU3NzM2IDFhOTAxYjFjN2NkMzE4NjE1MjcyNWE2MWNiMTdkM2E1NGM1ZWUzZDUgcHkzaworNTc3MzggZTdhMzkwYTM2ZWM4ZjczYmMwNDgxMWM4ZDRlMjc5NTA2NzY1NDE2OSBweTNrCis1NzczOSAwMmQxYjVlN2JlZjU2OGZjYTJiYWY1MzAwNjZmZjliZjhiYjcxOTU5IHB5M2sKKzU3NzQyIDA5M2ZkODRmYTc3YzQ1NDkzZGExN2MyOTM4NWE3ZTEzYjY0NThmM2QgcHkzaworNTc3NDMgNmMyMDNiN2IxZTBhMTE5N2NmZDFhNzY3M2VmMWVlYzYzZGU2MWJmNCBsZWdhY3ktdHJ1bmsKKzU3NzQ0IDZiYmVjYzAyOGJjZTI2NmEwNzIzYzc5Nzc3MDVlNjZiYTdlYTEyZTMgcHkzaworNTc3NDUgYTU1MzI0Yzk2MDJkNjIxZmFlM2QxMTFiNTVjN2ZlNjEyYjYxZGYxOCBweTNrCis1Nzc0NyBiZWFmNjYzMDgxNDg4NGZjZTczODdhN2E2MThkNjM5MWQ3MTZlZmFkIGxlZ2FjeS10cnVuaworNTc3NDggNjZhNWM0YmE5MzhlYWNhZGY0NDU1ZmUxYjJlNjcxZTM0MGM3NzViOCBsZWdhY3ktdHJ1bmsKKzU3NzQ5IGM0YTk2ZGU1ZTQ0ZTU5ZjhiNzg5NjE5Njg1ZmRkNzhiZjUyYzlhZmIgcHkzaworNTc3NTAgZmY5MThmY2M1N2QyYWEzOTMxMDMzZGE4NmQ1ZTE1MDU2ZTVmZjY0MSBsZWdhY3ktdHJ1bmsKKzU3NzUxIDIzMzY0NDk2ZGYzMTM3NGMyNTExMTM2MmRkNjU3MGUxNzJjZDZkMDIgcHkzaworNTc3NTIgZGI5YTE3NjE5MGQzNjBkNzg5NTFkMmRlY2ZiMGZhMmIwYjJkZTM2ZCBweTNrCis1Nzc1MyA1MDRjMTVmMDVkZjM1NDRhMzlmNmU4MzMxYzJjNzNhMzUyNDdhYWJjIHB5M2sKKzU3NzU0IDBmZDFiNGUyZjRlZTU4YWVkZGRkYzdjYTA2MzE5YTI0YTM0ZDg1YjQgcmVsZWFzZTI1LW1haW50Cis1Nzc1NSBkY2VkZDMyZjA2ZGUzNzExZDBkNTFkNGU0MjkxNzhkZDMxYmVjNDMzIHB5M2sKKzU3NzU2IDNlM2JjODQxMjJkN2JmN2NmNGQxZWViZGNiZTgzYTYyOTUxMjM5YWQgcHkzaworNTc3NTcgYmYxMWVkNDBiMTA1OGRiNGEwMjVkNzQ0NDczZTBmN2RkZThkZWQwNyBweTNrCis1Nzc1OCA4N2EwZmRjYWE4NGE2NDQ5ZGYyZGYxODAyODJmOTUxYmU4YjU3N2ZlIHB5M2sKKzU3NzU5IGFlOTA0MjBkMjYzNTVlMjcxODFlOTE0ZDcyYjcwNmQzZWU0OGM1NmIgcmVsZWFzZTI1LW1haW50Cis1Nzc2MCA2OGY4YjIzOTMyNDM3N2UyZmJkNTEwMTEzMDIzYzE0ZDFlOWFiYzcxIGxlZ2FjeS10cnVuaworNTc3NjEgYWZiZjZmZDc3OTgwNzlkZTI2ZGMyMTZmMWZiYWFmYmUxNjQ5ZTk5MSBweTNrCis1Nzc2MiAyMGQ4ZDExYzliMjEzODFmNWM4NjlhNTVhOGZiMmViZTE5YTRjZDcwIGxlZ2FjeS10cnVuaworNTc3NjMgY2IyNTBiMDQ3M2ZjYjZmNzY5OTJjYzZiMDZmMGIzMmZiYWRiNmZmOSBweTNrCis1Nzc2NCA1ZDMxNGMzZTk4ZWRlNTY4NWYwNDZkMDBhODk5NjQ2NmU0NjUyY2NkIGxlZ2FjeS10cnVuaworNTc3NjUgOGRmZDE4MDgzNTQwZDkwYmVhOGY5OGU0M2M1Yzk3YmYxNjg2ZWJlMiByZWxlYXNlMjUtbWFpbnQKKzU3NzY2IDFiY2RlYTFkYzhjNzUwZjdkYzczZDBhZWVhZmQ0MGI4OGRmNWRmNzcgcHkzaworNTc3NjcgMmUzYzAyYzYyNWRlYWMzNzA1YTNiNzEyNmYwYzJiMDgwODQ3NTk1YSBweTNrCis1Nzc2OCA4Yzg5YjhjNDhiNmNiOTBmZTFkNThkZjEwODVhMjFhOGU5NjY5MWE5IHB5M2sKKzU3NzY5IGE2YmQzZGFiM2ViOGM0ZWM0YTBiNmM5NjVmOTJhZjAzODZjMjJiYWMgbGVnYWN5LXRydW5rCis1Nzc3MCA5MmU0N2QzMzg4NGU0N2U4OWYzYTZiMTM2NzgwNWYzODQxMTAwMDliIHB5M2sKKzU3NzcxIDFkNTdmYjdlZmIxNWIwZGJhNGI2NzQwYzE3MzU2MGY4OTUxNzYxNTkgbGVnYWN5LXRydW5rCis1Nzc3MiBkZDA2ODg3NDBkMjQzZGI4NjM5ZmM4YjdkYzgwODQwN2E4MTk3ZDJjIHB5M2sKKzU3NzczIDRhMDdhMjg4ZjVjNDlhZjRlM2FlOGExODI0YmI3YjJmMDQxZGExZTEgcHkzaworNTc3NzQgNjk4OTA2YzJmNDY5MTMwYWJiMDlmYWVkZTdkZmE4MThjZjQ1MTJjZiBweTNrCis1Nzc3NSBhOWFjYzA2ZGE1N2FiNDQ0MDk2Yzc1ZTNhMDdjYWRkYmQwOTA2ZjVjIHB5M2sKKzU3Nzc2IDU0ZGVmMThlYjMxZmRmZDE2YTU3MTFkNzUzNjM1ZjY4ZTZiMjUyNDUgbGVnYWN5LXRydW5rCis1Nzc3OCA0NDQxYzM4NzY1MGQ5Yzg2MzIwMzU4M2Y4ZDk5NThhNWQxNTJkOWNhIHB5M2sKKzU3Nzc5IDRlNmI0YmE2MGMzYjI4NDIwYmE0ZTJjNWJmMTZmZTIzOGUxMjQzNTAgcHkzaworNTc3ODAgM2M0MzI5NDMxYmJjNDg4MmJmOWVlM2MzODFmMTQzMDlkN2JmMGM4YyBweTNrCis1Nzc4MSAzMmY2ZGQ5NWQxYmE3Y2E3ZjJiMjYyMDFkMDBhMjc1MDRlODBkYWRmIGRlY2ltYWwtYnJhbmNoCis1Nzc4MiBlOTFkMmJmNzFmZGVkODdhYzNkMTMxY2JjNGI1YTBhOWIyNGYwZjVkIGRlY2ltYWwtYnJhbmNoCis1Nzc4MyA5ODFlY2M1MjY3MDMwM2Q3ZDIzMWZmN2FhOTU1ZGVmMjcxOGQ1NTc4IHB5M2sKKzU3Nzg0IGQyZTlkYWRlZGNjNmQ5YWM4YTI3ZTUzZTMwZDc2ZDNiYmJiNGZlMjMgZGVjaW1hbC1icmFuY2gKKzU3Nzg4IGRlZTRjNzhlYTkxMGM4NGJkMThhYjE2ZDk2OTMxMTRiZGQ0M2UyYjkgcHkzaworNTc3ODkgNjkxYjVjY2VmMGM4MTFiYmZiMWQ0NTk2NzU2OTU2NGE3ZWE3NzA3ZCBkZWNpbWFsLWJyYW5jaAorNTc3OTAgZGQ2Y2YwMGMxNzk0OTRhN2VjY2M3OTI4YWUyMzE1ODZiZmI5YmRmYiBweTNrCis1Nzc5MSA5ZmIwMzI3YjMxMTAwOTNjOWE0MjM1M2QyNTg0YTE3N2ViYzUzOWFkIHB5M2sKKzU3NzkyIGVlZDE1ZWM2Yjc1OTk1YmNlNTA2NWViNTVjZjk2MWRkNDViN2RmYmYgcHkzaworNTc3OTMgYTg5ZDQ2OWUxZmY3NzcxNjkxNGNlMWE0MjQ0ZmE1MjlhNzFjZTY4YSBweTNrCis1Nzc5NCA1N2UzZjZmMGE1ODhjMDJmMjYxMmVlMzA5OTI0NWE5MjI4ZDViOGRiIHB5M2sKKzU3Nzk1IDAxMzVmMGU2NzZiZDAxYjQxMTNhYWE0NmMzY2VkZmRlNWE1N2RkNTIgZGVjaW1hbC1icmFuY2gKKzU3Nzk2IGVlZTViZGQzNzE1ODc4NDA5MmU0YzJlN2YyZjM4MDk2MzQ2MmIwMTcgcHkzaworNTc3OTcgY2RiN2I5ZjgyY2M0NTYwODdmODFjNTk0YTgwNDZiZWNhNjYxODkyMiBweTNrCis1Nzc5OCA3YjAyMzdjYmQwZWQxMTk0NjQwZjhlMGY4MTUzOTQwN2E1YTZhZmVjIHB5M2sKKzU3Nzk5IDkwYzcxNWJjN2QzMDVkYTNkMTczNzNhNjdmOTU0ZjdhN2ZlOTk3MWYgcHkzaworNTc4MDAgN2VjMDRjYjI2MmQyMWUyNGRlNDNiZTg0ZGNhNGQyMDJkODAwODFiMyBweTNrCis1NzgwMSA4NDU0YTJiZmFlMDQ0NTZmMGY0NTBiOWUwYWUzMzIwNzE2ZjY5MjAxIHB5M2sKKzU3ODAyIDk1ZDZmZTJlOGUwZTkxZjFjOTM2YTNkYmYzMDlhODQ2M2E5ZWYyNjkgcHkzaworNTc4MDMgMGNmNzAwNDY0MTc3NmQ3MjM3ZGY0MTQxYjE0NmQ2NGY4ZmNhYTFkZSBweTNrCis1NzgwNCA3ZWExMzY3YmEyNzU4OGI0MmJkZWNlMDdjNGU3ZmQ2MDcwZjZiNjNkIHB5M2sKKzU3ODA1IDg4YWFhMzgwZjA5MTdjMjcwMDc0ZDBhYjhlMmU3OWI4N2U1MDk2N2IgcHkzaworNTc4MDYgMTRlZTY3MDU1N2NmMDAwODAxNTUwYzE3NmFmNDQwZjFmNTBhZTk5YyBweTNrCis1NzgwNyBmZWMyYzAyOTlhOGNiYWQyMWIyZGVmOTNmYTg2MWI4NzlmZTdmNDkxIHB5M2sKKzU3ODA4IDg4MzRlNjU2ODNlN2I0MTI4N2Q2ZDc4NGZiYmNiOGI0NDJlYmMwNDMgcHkzaworNTc4MDkgMzQyNDgwMzMzN2EzNzBkNjk5Y2YyMTZiZmNiY2RiMTM5ZTJjYTUxMiBweTNrCis1NzgxMCA4NWE2Nzg1Nzk5ODMxNDE4YjZiZmJiNzM3ODEwOTFlZGY2ZmVhODIwIHB5M2sKKzU3ODExIDcyNzUzOTg2NWYwNDY1Y2NiOTg1NTgwOTgxOGI2NmQ3YWFiNDkxNmQgcHkzaworNTc4MTIgZWE4YjhlM2Q4YzkzMjg3ZTEwNTJlYjk0YjY0MzQ4MDJiNDE0M2FlNCBweTNrCis1NzgxMyAzNDQ5MWRjMTQzZTdjZDg0NmNiM2Q3ZDAzZThjYWE1ZTE2MDBlZGMwIHB5M2sKKzU3ODE0IGUxNDA1NWU4MmRiOTkxZWI3NTc2OWFkYjUwMDkxZWZjZmRhZGI0ODYgcHkzaworNTc4MTUgMjIxZmZhZGMxYTRjMjY5NTAwODk2YTE2ZWEzMmI3ZDMzYjFhZGI4NiBweTNrCis1NzgxNiBjOTJkNDI2ZWVlNzUxYjQxZGQxZDE4YjU5ZmE3OTlmMmMxMWQ0YzE4IHB5M2sKKzU3ODE3IDQ3MjkwY2FmN2U4ZTgzZDE4N2IxNGE1YTdhNGFkNTYwOThhMWY3YzcgcHkzaworNTc4MTggZDE1ZDljNmJlZGE3YTEwNGE0NmVhZWUxOWIzOTBjNTJlMjVhMjVmYSBweTNrCis1NzgyMCA1ZmE1YjIxMzNmZWJkOGE0NzU4ZGVlNGRkYTEwYjg1MDhmMDQzNjRjIGxlZ2FjeS10cnVuaworNTc4MjIgYmMxOGFjZjhiNjE4MmRhMTk4OTkyZGUzYzY5NDQ5Mzk2MTMwMTI2NiBweTNrCis1NzgyMyA0MzA3N2MyNzlkMTdjODY2ZTNkOWU2NWE5MjQ0YWJlOTI0YzNjNGRkIHB5M2sKKzU3ODI0IGQ2N2I5NGY0OWRmY2NjZjAzYTU4OGEzMWJiNjEwNWMzN2QxYTRkM2MgcHkzaworNTc4MjcgOTk4ZDc1N2YzZmIwYWU4YjUyMTdjY2NiMzIwMDRkMWU1MzMyZmQ0ZCBsZWdhY3ktdHJ1bmsKKzU3ODI4IDk1OGM0Y2M1OTkzZTFlNmExMDRkMTdmODAyMGM4ZjYyN2I2OWY1NWEgcHkzaworNTc4MjkgYTEyYTAyYjlmNjQ5ZGFjYzc5NmEzNDcxODk5Y2U0YjQ3MjQ3ZjYwYiBweTNrCis1NzgzMCAxMTI2ZTdlODVmMTgwNDU4ODZhMTU5YzA4ZDBjM2VkNWJjZWIwOTZmIHB5M2sKKzU3ODMxIGI1ZjA2ZTU3YTI0ZjQ5ODViZWFkMjI2ODcyNjkzYzIxZTNhNmIxM2YgcHkzaworNTc4MzIgZjdmOTQ0Mzc0NDM4YzAzYzM3NjgzZmQ2MmM3M2JmYjFjYzlhMTNkNCByZWxlYXNlMjUtbWFpbnQKKzU3ODMzIDcxMTI1MjQwMmIyZjU2NzNhNmYzN2FhOTA1Zjc1ZTI2YzZlMmIyZmUgbGVnYWN5LXRydW5rCis1NzgzNCA3NzAwMGYyNjQxZWU5MTY5N2EyMjE1Y2QzNmJjMmNmMDc1YzljYWZkIHB5M2sKKzU3ODM1IDVjMzBmMTVhNmI4Nzk5N2JiOTM1NDI5NWQ2N2VhOTc1YzkwMTllODQgcHkzaworNTc4MzYgMjM2MWFhZWFmY2JjYzg1OWU2Y2U1ZDIxNDQ5NDJkMzViMzQ3YjRjZiBweTNrCis1NzgzNyAwODJjZWYzYmUyOWIzMzlmM2E1NWRhYjcxYmRiZGE2OTUxZjA2YmIxIHB5M2sKKzU3ODM4IDA2ZGM0MzIxYTU2YTBiMzk5ZTEzMDcyNzk5OGI5YjI2NGM2YmQ0MDYgcHkzaworNTc4MzkgYTdkNTQ0MDM1M2MzNWQ0MzlmOGMzYzA4MmQyNWY3YmJlZDlkZjk5YiBweTNrCis1Nzg0MCBmZmIxMDBiZTAzMTBkYTU4NGY2OGY3NjNkNDAyMGFmYWZlMGM5ZTgxIHB5M2sKKzU3ODQxIDFiYjYzYTMyYTZjOGQ5MWFmOTY2ZWEyYzkzNTlkZTViNWQ1YWUxNzYgcHkzaworNTc4NDIgNDIzMTRkN2Q2MDgzZDRmZWFmMzAzMWI5YjgzMWEyODYwMTZjYTVhYSBweTNrCis1Nzg0MyBhNmYzYmMyMTZjMzcwYmM2OGFlODMwZjg0YzAwYzE4YzIxZjNmZWYwIHB5M2sKKzU3ODQ0IGI1ZTBmNzcyMTAxNGE2YzRlMTlkNGIxMmZlMjllNjViOTg4OTQxNmQgcHkzaworNTc4NDQgY2QzZjc4M2NkMDhhMTY3ODFlMjM2YzBiOWNiNTcxN2QxZDk5NWZhOSBweTNrCis1Nzg0NiAzMzVlZjg2YThjNWNhYzk4Yzg4MTk1MjJlYmUxMmUwNjQzZTE0NjFlIHB5M2sKKzU3ODQ3IDlmZjExMjZmMDk2YzJhNzU4Mjc5ZTNmZTZhYmY2MWU1YjRjMzBkODkgcHkzaworNTc4NTAgOGMxYzJkNWJlZDMyMjZmNWQwMzVhZDdjMmI2MzNmMWJiNzUxMTMyNyBweTNrCis1Nzg1MSAxZDBmNGIzZWVmYWIzNzcyYzQwMDM2MmE2NzdkYmVhMTE5OWJkOWRjIHB5M2sKKzU3ODUyIDIwYWJkYjkxNmNlMzIzZTE5NTNkYmVhY2FlOTBjYzlhZmNkNzQ5NWMgcHkzaworNTc4NTMgMjc1Zjg5NGRiZjEyMWM0MDQ5NjBhMzA4M2YzNGI5ZGQ1ZjUwOWVkZiBweTNrCis1Nzg1NCA5Y2ZhZDlhNWM4M2IzODBlMmRjZTg0ZWU0ZTdlYjRlMjVlNmM2NzIxIGxlZ2FjeS10cnVuaworNTc4NTUgOWFmOWM4YTcxYmZlODNkMmZhODg5NTFkM2I0N2ExMTBiYTRkNDAzMCBsZWdhY3ktdHJ1bmsKKzU3ODU2IDQ3Yzg4MGU0OGJmNmIyZTkyY2VkNGM3OThkYzhkODUzYWVmMDRhNzYgbGVnYWN5LXRydW5rCis1Nzg1NyBlOWI2NzM2YzE2MzIwODViNmQ2NmQxMzgyNzZmNDM2ZWRjYzUzMjQ2IHB5M2sKKzU3ODU4IDY2Yzc1MWU4MWM5MGU2ZDQ0OTY1YTMwYTk2ZmQ1NzRmZmU3MjJiMWIgcHkzaworNTc4NTkgNTFhZmMxZDU2NWY4MzJiZmQxZDNlZDhmMzJiZjhkNjVlYTM2NjIwNiBsZWdhY3ktdHJ1bmsKKzU3ODYwIGJkOTlmZWFmZjk5NThjYjYwYjEwYWZhNWJkMTcwMDRlNDdhYmZhOTMgcmVsZWFzZTI1LW1haW50Cis1Nzg2MSA2MjBkY2E2NzUxMzdhMTY0ZDBkNGE2MjVmNGEyMGY5ZDc2NWE5N2E4IHB5M2sKKzU3ODYyIGVlMWIzZWI3YTAxMzZkY2MxMjY5MzNiNWQ0ZTNjYTcyMmI5MmMzNzYgcHkzaworNTc4NjMgMGEwYjgyMjY1NzA2MjI4MmIzOGU3M2ZjNmIxMTY1ZjM4N2ZkMjYxNSBweTNrCis1Nzg2NSBiZWQwZjUwZWM3MGI3ZjllZjQ1YWU2OGY2ODExZjlhYzljYmUxM2Q4IGxlZ2FjeS10cnVuaworNTc4NjYgZDg0MjQ1N2U0YjBlMzlmYjJiMTMyZTE0ZjIyY2RlZGNhNDVmZTQwNiBweTNrCis1Nzg2NyBiZjNjOTQyMTNkNWQxZTI0MzU5MzdlMmM4NWVmOGE4ZDE0ODg1NzczIHB5M2sKKzU3ODY4IDU4M2U0MWQxMjk0YjRhNTNhMDIwZjdiYzdhMDFjZDc2NmNjNDIwOTUgcHkzaworNTc4NjkgZGEyODVkM2IwNjVhYzJhZDBhYjA5N2Y0ZWQ1YjgyNzZmNjZhODJjZSBweTNrCis1Nzg3MCA4MDhmMzJhMGQ5OWMyZTAyYzRjY2I3MzhhZWZlMzgzM2I4MWZhZTZiIHB5M2sKKzU3ODcxIGI3YmZhNzgwYTg4MjhlYzY2NWQyMDgzOTRkN2Y5NTQ0OGU2M2VjNjMgcHkzaworNTc4NzIgZjRkMmVkNTBkZTg1OWQ5MWQ5NDA0YzcyMmZhMzViMzJhY2JjOTVmZCBweTNrCis1Nzg3MyBjNGY2M2JiNGQzOGEyYzQzZjY2NTk2OWY3ZWE3OTY2ODkxYjRiNDBkIHB5M2sKKzU3ODc1IGFjYWNlOGViMGJkODI2ZDAzMGM5MGI1NzJlMjA0OTEzNzNkOTZiNmQgcHkzaworNTc4NzYgOWViYTY4OWVjZjI4N2RjNzczZTNmOTViOTU1ZGIxMjk0N2VjMDRmMSBsZWdhY3ktdHJ1bmsKKzU3ODc3IDMyMGM2YmVmOGQzMGMyOWE5NjlkZTQ5OTBmYjc0YzIxYzVkODY2NTkgcHkzaworNTc4NzggY2FmMGQ3ZTNiMjlhNWY2ZjhkYzdiZWUxNTBjMTZlODhmNTFmOGY3NCBsZWdhY3ktdHJ1bmsKKzU3ODc5IGFkM2Q1YWNhY2YwM2RlNzBiZjUzOGNlNGM4N2I5NmVlNzRhZjQ1MjkgbGVnYWN5LXRydW5rCis1Nzg4MCA5YjE4MzNmYzVjN2IyMDdiMmNjNjEwNDVlY2U2YWQ2NmM0ODRmYzFmIGxlZ2FjeS10cnVuaworNTc4ODEgY2UzYTA3MTM1MWZjY2Q1MGRhNzdlY2U5NjUzYTg5YzdhYzIwODQ0MyBweTNrCis1Nzg4MiAxNGU5Yjg3Yjc1M2IyNzliMzcyMjU5YmZiMjg3OWE1NTdjMTcxMjhlIHB5M2sKKzU3ODg2IDM4NmMyMmQ5M2FiNjViNjNiMDVjYWQ4OTM5NDAwMDU5ZjY3OTg3ZWIgcHkzaworNTc4ODcgZDQ0Mjk4NGYyOTBiOWMyNWUwZGUyODdjZDEzZTg5M2Y1MTRkMGY1NiBweTNrCis1Nzg4OCAzYWMyMzdiY2E1ZWU1Mzc5YzM1ZmViZjgxYTU0ZWM0ZGI0ZWQ1ZGI1IHB5M2sKKzU3ODg5IGQ4NjY3MmJkZTY0MDY1NjVhZGVlYzUzMGUxODBlNWY0YWQ2MzdjNWIgbGVnYWN5LXRydW5rCis1Nzg5MCBlYTE4NDUxMzY2MGI1ZDI4MTZhN2ZhNzgyZDVkMmMxYjQzZmE2NjFlIHB5M2sKKzU3ODkxIDI3OWI5NTZhM2E5NjM1ZGYxYjY0MWI4OTg2ZDg5MTk0MThmZmY4ZGIgcHkzaworNTc4OTIgMTQ3ODY4OGY0NTY1ODdhNTBlZGY1OTkxODQ3M2QxNTQ4ZTIzNWJlOCBsZWdhY3ktdHJ1bmsKKzU3ODk1IDM2ZjU2YTNlZjM2ZjgwOTAxYzA2NTBiYjM5ODgzYWY1MjZiNzc1MmIgbGVnYWN5LXRydW5rCis1Nzg5NiBiNzUxNmEzNDZmMGYzOTg4NDMxNGMzYjYwZDExNGQwMjY0ZDI3ZjBkIGxlZ2FjeS10cnVuaworNTc5MDMgMWIwZDE1NDQ0Y2E1ZDQyNmRmOGExMDFjYTRiOTEwYTYwM2ZjZmZjZCBweTNrCis1NzkwNCBjZTBjYjJkODY5MTk5ZGY4YjcyYjVkODkzNWY4ZjVjZjJiN2FlMGJkIGxlZ2FjeS10cnVuaworNTc5MDUgMWI1YjA1NDZhN2RkMmQ5Y2Q1YjFiMjhjNGM2YTBmOWZlNTYzYzk1OSByZWxlYXNlMjUtbWFpbnQKKzU3OTA2IDQ2M2IzNDFhOWQ2MzFlYzRkZjIzODQ4NzIzZjZmOGQxNWExY2EyZTggcHkzaworNTc5MjMgNDkwMjY3MWRkNjc4NTI3ODlhMGU2MWZkMjc0MGZmZGVkMWU1MjljNCBweTNrCis1NzkyNSA3YzZlN2QxOWZmNTNiYzRlZDgyNjg2NjFhYmJjNjEwNjJjMjJlMzdhIGxlZ2FjeS10cnVuaworNTc5MjYgYjVmNTM1Y2YxMzVmYzlkYzQyMGVjOTEzNGZmOTE4YTkyMTliNmNlMCBweTNrCis1NzkyNyBiNTFhYzJkMmQ1MzhiZGEwZjZmNTdkZDFlZWEwM2M4OGNlNzAxMDIyIHB5M2sKKzU3OTI4IDU2NGFlNTZiZDJkYTYxYzhmMjQ1ZTM5OTlhMGZiYzU5MTc0OGJkMjcgcHkzaworNTc5MjkgZjRmYjc0ZjYzODA2N2YzZDBjNDkxMzdjM2Y2NGQzMjQ0MTQ0NDYzZCBweTNrCis1NzkzMSBkZDBjNjUzYmEyOWYyMzA4ZjI2MmM2OGY2MzU4Zjk3OWY4NDMyMzMzIHB5M2sKKzU3OTMyIDU3OGIxNzQ2MWY2YjZiOWFiYTE3YjAzZGM5MjE4NTRmZmNjMWIzN2UgcHkzaworNTc5MzMgMTE5OTNiY2IwYmEzZDFkOWE0NmJhOTM5MzQ5NmEwMzM5ZmJkZTM4MSBweTNrCis1NzkzNCA0MzU5Nzc3OGVmMmNiYzUxMzM0ZGExYjliMmY1N2RiZDk4MGNhMTg4IGRlY2ltYWwtYnJhbmNoCis1NzkzNSA3ZWI5NTQzNTFhNGZkN2RkNDc3ZjBiNTA2ZmM0Y2NmMjZlZTlmZTNlIHJlbGVhc2UyNS1tYWludAorNTc5MzYgYzQ4Y2Q2ZTA2YWNhNTM5ZDA1MjkwNzY3NjA0NTM4YmMwZmNhMGY3YiBsZWdhY3ktdHJ1bmsKKzU3OTM4IGE5ZmI2NWM4ZWFjYjM4MWVlMjQ4YzE1NTNiOTNjNTBlZjdiZGViZjQgcHkzaworNTc5MzkgNDhlZTYzOWE3NWRkNzJmZWRhZDE5NGFiNDNlZTU4MDZhZDcwZDVmYiBweTNrCis1Nzk0MCBlMjUzYjIwNDUyNTA2OWZlZWM0ZmMzYjIxYmEwNjY0MmY2ZmY3Yjc5IHB5M2sKKzU3OTQxIDNjYmI0ZjkyMjBmNDE5MjViMTA4ZmZiN2FhYTMyNGNkN2E2YTVlN2EgcHkzaworNTc5NDcgYTMxMWFiMmZjMWE3MDA1MTUwYTRiZmY0NTFhY2QwMDdjODFjZTNjZCBweTNrCis1Nzk0OCAzNDM2ZGFmNDU1MTZhZTc4YzhiMjJmZjM1MDUwZDdhYjQ1ZTI3OTllIHB5M2sKKzU3OTQ5IDQyOGQ5MjE4MDRmYTQzY2Q4ZTYxYzRjNDE4YjhmMzI2NmU4ODE0ZDYgcHkzaworNTc5NTAgNjU1MDcxYmY2YzQ1YzZkODY1YjQ0M2Q0YTVjOWQxMTM1NjJhMWMyZCBweTNrCis1Nzk1MSBhMWNjOWI1ODllMjIyZWYyOTljMTVmNzYzMTg2MDU5OTU0ZjJhNTU5IHB5M2sKKzU3OTUyIGJiZDRkMjk2Zjc0YWNlOGYyOGUyYjY5NGY0YWQ4ZmJmODYyMTQ1ODYgcHkzaworNTc5NTMgOTc4YzQyYjUzOGQxYzliNGU5Mjg3YzdlMWM3MWVjYjEyYjhkNzlhZCBweTNrCis1Nzk1NCAyMDUyZjU0Y2VkNDk2NjBiMjg5ZjRjMjkxODhmZThlNDJlNzY0YjI1IGxlZ2FjeS10cnVuaworNTc5NTYgMDI5NGJiMmU5NWRlMzI5YmY1OTA3OWQ2MjZiMmJlYmY2M2VhNjNkZCBweTNrCis1Nzk1NyAzOGYzZjllZjE5M2QyYWE0NDkzYzI4MWNjNGMxY2IyNDM3M2I1MzI2IHB5M2sKKzU3OTU4IDQ3ZDkyZGI3Y2QxMDIyMmNkN2ZiMTI2Nzc4YmU5MTJiMzc3NzNkNzcgbGVnYWN5LXRydW5rCis1Nzk1OSBjOWFjNWI4ZTRhODE2OTVlZGZjMWFjOGU0MjA4MzUxODI5MjkzMjM4IHB5M2sKKzU3OTYwIDFhMGM3MzU4MDY2NWVmNmQ0MTViYTM2NmM5YjUyYzUzY2ViNjkwZWIgbGVnYWN5LXRydW5rCis1Nzk2MSA2YTA0OGZmMzA0ODg4NzhhMmZkMjM4ZDJkOTJlMjRlMDYyZWQwNWE2IGxlZ2FjeS10cnVuaworNTc5NjIgNDI1MTI3YzFkMTEzYzRmYWFhZjNhYjNiZWYwMDllMTJiODc5NDk5MiByZWxlYXNlMjUtbWFpbnQKKzU3OTYzIDhlNzBmZDZhN2RjYjA5NTIzZWYwNGVmNGYxZTU2NWQ5NjVjZDM5N2UgcHkzaworNTc5NjYgMDgxZTM2MjMyNWRhNjhlM2IzNzcxM2NlMjU0MGY4OGNjMjQyZDQxMyBweTNrCis1Nzk2OCAzNGJjNjM4YWM3MDc2ZWMxNWJhMTczZmZmNWU1ZTk1Nzg2MjllMDAxIHB5M2sKKzU3OTY5IDQ5ZDZmYTk4ZGM3ODE3ZjUxMDVjMDc5ZWVlNDRkNTZlN2ZkYWMzODEgcHkzaworNTc5NzAgNzkwNGZiYWZhYjNkZTUwODY1NGZmOTExY2IwMzk0NzdlMzlhMmEyMSBweTNrCis1Nzk3MSAzNDg0MzUwYTRmNjlkZjM3NjQyMjY0ZDJiMmNiMThkYmJkZGY1YTQ1IHB5M2sKKzU3OTcyIDgwZmZjYzE2MWIzMGM4ZjY4YjI4OTk4ZjViZjVjOWJhYzk4Y2RiNTYgbGVnYWN5LXRydW5rCis1Nzk3MyA1M2I4ZmMwNzkwNzdmNDhiZWFiMWI4YzJjZmNjMGYzNTkzNTk4ZmI0IGxlZ2FjeS10cnVuaworNTc5NzQgYzZiMTEyM2UwZTZjYTRiZTFkMDUyMGYwMjYyMGIxOTRmMDRlNjFiNyBweTNrCis1Nzk3NSAyOTRlMzU0NTJkMjU3OTg1MjhlNGI0YmE1NjYyYzkxNThjM2JlN2M2IGxlZ2FjeS10cnVuaworNTc5NzYgZTk0NjA3M2RlZTM4YjA2NWQ2YWRlNzA2MGMxMDYzMjQyODhjYjcxZiBweTNrCis1Nzk3NyBlNmRlOWFkZDdjMDc1YmM5NzBmYzVhMmRmNDJhYjZmNDQzZmRmYzFkIHJlbGVhc2UyNS1tYWludAorNTc5ODAgZTJiNGZjOTYwODMwZmMyMmJlMWY3YTg0NTczOWRkYzA0Mjk0ZTM4OSBsZWdhY3ktdHJ1bmsKKzU3OTgyIDc5MDgwYzQ4ODliYzI3ZTk1ZDhjYzliMjFhNzZhYmRiZThmMjgzZTUgcHkzaworNTc5ODMgY2M0NDQyNzU0NTEwNWUzMjNhMTE3MzJhODVlYTk3Yjg4N2RmZTI4OCBweTNrCis1Nzk4NCBkMzEwNDdhMWNlMTk3Njg0ZjJmNTUyOTZjODk3MTVlZTJiZjIwMmJlIHJlbGVhc2UyNS1tYWludAorNTc5ODUgNDUzMTIyMGU1MGJhOGMxNGZiMTdhYTAzMzNiYjk2YmYyZTcxMTk0YyBsZWdhY3ktdHJ1bmsKKzU3OTg2IDVmZDA0NTFlNzQwNjA5ZmM2YTlmYmE5NzBlNTdjNTkxZTRhYjJiYmUgcmVsZWFzZTI1LW1haW50Cis1Nzk4NyA3ZmI5Y2Q5MWU2NDg2MWQzZGU4OTM1ZTZhM2RkNDY4OGIyY2M3ODNlIGxlZ2FjeS10cnVuaworNTc5ODggNzFjM2U1YjY5ZTE0ZTcxZGUzMzQ1ZDU1NTAzNzg5NzM4OGEzNGYzZSBweTNrCis1Nzk5MCAzYzJhNGY2YWNjZDU2YWRkNDM5ZmU2YWM1NjQ1ZDRkZWRiMGJkYzliIHJlbGVhc2UyNS1tYWludAorNTc5OTEgNThhZjY2NzUwMTk4NjJkYWI0NDlhYjY0NTlmOGY1YTg5Y2JlOWQ5NyBsZWdhY3ktdHJ1bmsKKzU3OTkyIDA4ZTEwNTU0ZTQzMDM4MDcwMzZhOTE4NDkzNTk4NTllMGYzN2JhMzcgcHkzaworNTc5OTMgOTFjOTkwMTFkMDY5NDRhNjE3MDE4M2VhYmM4ZmRhZjJkMDQ2OGNhOCBsZWdhY3ktdHJ1bmsKKzU3OTk1IDcyYTk2ZTZhN2MyZmJjNWJiOGRlMTg0YWRlZWFiMGM2MDFkYTNiYzggcHkzaworNTc5OTcgODg1ODEzY2NiZjQ1NGNjMGQ5M2Y1OTY2ZTA0ZjIxNWIwN2Q2ZGMyYSBweTNrCis1Nzk5OCBhNGJkOGE0ODA1YTgwMjQ3NzE2ZjE4MWJmOGVmN2E1ZWFiYjBjMmYwIHB5M2sKKzU4MDA0IDBhMzFkMWM0NWE4OTJiYTlkMGRkM2Q1MzFlZmQ3MTdjNzQ5ZjEzYWIgbGVnYWN5LXRydW5rCis1ODAwNSA4ODdlMWZlYWJkYmRlNmFjOWExNmE1MDI4MTcwNjhlYjBlMTIwZThmIHJlbGVhc2UyNS1tYWludAorNTgwMDYgZmRjNjc1Y2I1ZThhZWMwMzc4Nzc4YWQ5NDRmYTM5NjBmZGY3ZWU2MSBsZWdhY3ktdHJ1bmsKKzU4MDA3IGJlOGY3ZDNjZDdjYzEzYjJmNmRmNmQxOWRkZjc4Y2ZmNzUwY2MyZmEgcHkzaworNTgwMDggZmNiMDJjYjk2Y2EyMDFjMTcyNTU3MzExYjczNTUwMzhlYzhhMDI3ZSBweTNrCis1ODAxMSBiNGEyZjEwYjM5ZDIwZjEyMjI1NTdiNzE4MWMwZmM2MTU1Mjk3MDg0IHB5M2sKKzU4MDEyIDc5ZGRhNTY4ZjQyNWEzOTA5ODRhYzI5ZTJmMTQwZTNhNjA2ODNlZDcgcHkzaworNTgwMTMgYWMzZmMyYWU0YWJjZmYwZGUxZDIyMDdiYmUwYzc3Y2VlNzBmNDhmNCBsZWdhY3ktdHJ1bmsKKzU4MDE2IGM3NmFjYTRlMTAwZGUxMTYyZjQyN2ZkNzFjMTY1NDljNzRlY2U2NDYgcHkzaworNTgwMTcgN2MyZjVjNjJmOGNhMGQ5MzczM2Y2NTAyNzgzNzk3NDllMDVkYzgwMSBweTNrCis1ODAxOCBlZGZiY2YxZmY3MzQwNzUxMGU2ZmQ2MzdkNTAyNmI5ZmFjOTc2NGE3IGJjYW5ub24tb2JqY2FwCis1ODAxOSBjOWM2MTY1ZjdjMGQxZTA0Y2M2Yjc0OGQ1YzJjNDM1ODU4Y2U4NmE3IGJjYW5ub24tb2JqY2FwCis1ODAyMCBlN2ZkMWZkOTFjNTNmYWI2ZGE4NTRkMjhkZTZjODA1NDM5MTQ2ZmRiIHJlbGVhc2UyNS1tYWludAorNTgwMjEgMmRiYTVhYzhjZTE1OWYxZTA3YmEyYTQzNjgxYTA1ZTUzNGZhMTAwMyBsZWdhY3ktdHJ1bmsKKzU4MDIyIGJhMDhmN2YzNmU4ZWQ0YzA3Zjc0MzRiYzEwZWI3OTYyNWM1NzY0MTkgbGVnYWN5LXRydW5rCis1ODAyMyA1NTY1NjlhYjNmOWRkODU1NTBkOGY3MTYzMWFiYzFhOTI0ZjExOWUwIGxlZ2FjeS10cnVuaworNTgwMjQgMTZjYjg1ZmVmYzVkMDI1ZTMwNGU1MWMyZDQ0YmQ1YzUyODUwNzA3OSByZWxlYXNlMjUtbWFpbnQKKzU4MDI1IDFiYzRhOGQ1N2IzMTI5ODVmNGYyOWNkNTU3ZWQ3ZTIwNDdiYzFmMjggcHkzaworNTgwMjYgNzA1MjU5MzU3NGJmNDdiNDQzMzY3NzU5MDAyZmI1MDNhZTYyMDdmMiBweTNrCis1ODAzMSA1N2VhYmIwNTFjZmRjYWNlYzhmNzdhOGE1OWYxMTU1ODkwNmEzM2I3IGxlZ2FjeS10cnVuaworNTgwMzIgM2JjM2YxMmNhZTI4ZjAyYjM1NzJhYTJiZTdmY2IyNTAyNWVmMDdlNSBsZWdhY3ktdHJ1bmsKKzU4MDMzIDgwZDJkYWVjNjFjYzhjYWM1YWFjZDlkZDBmNTY4MjVlNDliMjU0NzcgcHkzaworNTgwMzQgMjg3MTZkZDE0YmM1ZmEyNzE0MmNhNTc5ZWNhZTdiNzhmMjlhZTY5OSBsZWdhY3ktdHJ1bmsKKzU4MDM1IDdkYWRkMjFmYTg3YzEyYjAyOWE5NTZkNjkwM2ViZjNhYWRlNGNjMDYgbGVnYWN5LXRydW5rCis1ODAzNiBmNjI4NTc1MzNjYmVhYTJiOTRhYWFiYjgwMzFiODY1ZGE4MGQ5ZmJjIGxlZ2FjeS10cnVuaworNTgwMzcgNGIyMTM0ZTQ3MzBjMjJkNWQxNzIxMmUzYTg1YzQ0ZWU3MDM1MjQwNiBsZWdhY3ktdHJ1bmsKKzU4MDM4IDA2ZjY2ODJiMjE2NmUzMDdjMmFhMWYyYTdiMTk4ZGU2NGI4ZThiOTEgcHkzaworNTgwMzkgZmM0NzBiYmU4ZDI0MmI4N2IyODBlNTgzNjIxZGE4YmEzNmRjMTI1MyBweTNrCis1ODA0MCAxZjllZWUwOGFiMzVlOTU3ZmY1NjVmZmE1MmJiMDI2ZjUyMTI5Yjg2IHB5M2sKKzU4MDQxIDc1NWZhNTE4N2QxYmMxMmU5ZDQwYjk1MzA5YzM2Y2M2MGM0MTU3NzQgcHkzaworNTgwNDIgODg1ZmIxN2M1ZTMxOTY4MjVmZmU0NzZmYWJjOTNmODZkNjJhM2FmYSBweTNrCis1ODA0MyBmYTU1ZDQyYzhkOWM4ZDJlNTdhNjcyNjZmYzdiODk1NTc4MDlhMmMwIGxlZ2FjeS10cnVuaworNTgwNDQgYjhhODIwNmMwODQ5MjUwNWYzZGQ4MzU4MTdkNDU0MTc5ODU0YTZmZCByZWxlYXNlMjUtbWFpbnQKKzU4MDQ1IGIzNjdkNmU0MjIzMTVhOTA0YmU0NWQ4NmY2NzdiMjVlYWQwZjA3NDMgZGVjaW1hbC1icmFuY2gKKzU4MDQ2IDFmNjIyNzM2NWMzNmRhYmFiYWExODE4YTYzYzZhZjA3MGU3YWY0YzQgZGVjaW1hbC1icmFuY2gKKzU4MDQ3IGU4NWZhYTAyMTkxYzQ3Yzk1MGMxOTcyYjMzN2UxN2Y4NzJlMzFhYjAgcHkzaworNTgwNDggMDg4MWFiYWI5MzczODQxZThkNjQ3ZjAwYWFhZmYwYWY5MGY5OTIyZiBkZWNpbWFsLWJyYW5jaAorNTgwNDkgZmZhMDc0N2E3Y2I3YTIwNjE0NzA4MzI0OGZkYjMyODA5NWVkZGZmNiBsZWdhY3ktdHJ1bmsKKzU4MDUzIDJhZTZkYjBiYzdlYmNiYmJjNzMxMmRiNmUwM2FhMGY1NTc2NDI1ZDcgcHkzaworNTgwNTQgODc2YjdlZjQ3NzVkOGZiYjllNGE1ZGEzZjQ0ZjA5YTgzMTg3OWM2YiBweTNrCis1ODA1OCBiYWViNjZjZTdiNTFkZGIzNjcyYzQ1NTZjNzMwNGZiZGEzNGRkNGNiIHB5M2sKKzU4MDU5IDc4ZjFjMzI5Yzk4MzcxM2E0MWYzMWE4NWE0MGU4ODM2ZmM0YzFmMjMgcHkzaworNTgwNjEgYTA5ZWEyY2ZlNzZhMzA1YjAzNzEyOWMxY2Q4MTQ5NWQxZjYzNzJlNiBsZWdhY3ktdHJ1bmsKKzU4MDYyIDc1Y2Q1NDg2MzI1MDlhMmVhY2E3ZjBjMzBmNzM4N2E2YjViM2RlYzcgcHkzaworNTgwNjMgNzZjMWNjNjcwYzYzM2VmZWQ5ODE3YWEwMzA5MmJiNjBlZTBmNzczYyBweTNrCis1ODA2NCBhMTFiNDg4NWI0NDVmMjc4MGNiODA2MzUwMmU2NWIyNGMxZTE1NzllIGxlZ2FjeS10cnVuaworNTgwNjcgZThhYTcyNGRhOTA1ODRkMzQyYmM4NzNiZmNlNTA1MjBmYTg0ZTI3ZSBsZWdhY3ktdHJ1bmsKKzU4MDY4IGIzNTVkMmRiYTliNmUyNWEzOWE3ZTJmOWY5NTJiMmVjN2E1NzY4NmQgcHkzaworNTgwNjkgODA3YWRjMDMwNjUzNTE1MWZjODFmMDM2MWU5Njg1Zjg4N2YyZmFhYyBweTNrCis1ODA3MCAzZDE0OTY0ODlmNTg1MWM2MGY1ZTU3MDllNTU3ZWE3NTZkODdiNzI5IHB5M2sKKzU4MDcxIDkxNzZhNTNiNGI2MjUwZWFjODUzNmQwY2YwYjE4YTFhZGY4ZTBjNDAgcHkzaworNTgwNzIgZjhhNWZiYTM1ZWIzNmFmMzRhOWIwMmZmMzhjYjI5MjljOGQzYjk5MCBweTNrCis1ODA3MyA3NWIyNjVjMDhjOTEwYmU1YTg1YmM0NDMwODVhMjEzMzhmNDQ2MTMwIHB5M2sKKzU4MDc0IDlmN2YzMTQ3MDMxYzI2ODZkYTI2Y2Q0MGExMjA5YWMwNzY2MjNmMDYgcHkzaworNTgwNzUgODc1MDUyYzJiN2IzNDZmY2RmYjNjNjQzZmQwZGFmN2E1MWRkMzI4NyBweTNrCis1ODA3NiBiMjdkMzQ5MTYyYmRlZWVkMTZkZGMzNmUwODMzY2ZmNWVjNTUyZGQ5IHB5M2sKKzU4MDc3IDA5Mjg3ZjIwNTVhYjVkOGRmMTY0ZWM3OTRjYjgzYWJiZGMzODgwMTggcHkzaworNTgwNzggODdkNDExZWJiYWUwZTI0MjdhOWFlY2FiYjU3ZGRiODI4ZjRhNzY2YyBweTNrCis1ODA3OSAwOTlhYjgyM2I4NGM0YTFlYTRhZTEwYTc1ZTMxNThiZDY3NzFlOGIwIHB5M2sKKzU4MDgwIGZhMDJjZDJjYzMzYjhiMzkzNThiZmU3YzA1MzZkNTA1M2Y2MDZkMDMgYWxleC1weTNrCis1ODA4MSBhN2RiOWViZWQyOGFkMTI5ZTBkN2IwZDJhNWY5ZDY5OTY2MDRkMjc3IGFsZXgtcHkzaworNTgwODIgZDlmYzkyOGRiMWZhZjU2NDRiNThmMDlkNTdkNDY1NjRiZjM4MTk2MyBhbGV4LXB5M2sKKzU4MDgzIGE2Njg5NzQxOWEzNGVmYTk3OGFjYWExYzNiZTNhZDJjZjhkMWE2MGQgYWxleC1weTNrCis1ODA4NCA1YTUxZDFiNjU2Mjk5NWRhMWUyYTE5YTgxZjljZWFiZWNiZWI4MTc5IGxlZ2FjeS10cnVuaworNTgwODUgZDE1NTJjMTUwZTkxNGQ3YmNhYzIwYjZkYWI0MmZmMjdhOGJmYzBiYyBweTNrCis1ODA4NiA2MGZiOTg2MTJhOWU3ZGFjZDYyYjQ1YzQ2MWM5NTg3NjQ5Y2Y5ZDAwIGxlZ2FjeS10cnVuaworNTgwODcgY2VhNmE4MGJmZmIyOWIwZjgzZjI4YmY1ZDQ2YzViM2Y3MjIwZDZjYSBsZWdhY3ktdHJ1bmsKKzU4MDg4IDM0YjUwMDAxZGQyYzM1NzcyNmI5ZDRkM2YwNTkzNjcyNDg5YmEyZjggbGVnYWN5LXRydW5rCis1ODA4OSA4NjJhZTQzY2ZiMmIyZTIxNmNlODBjNmFkYzk2ZTIxZGQ5MDAwYjE0IGxlZ2FjeS10cnVuaworNTgwOTAgNzhhN2I5OWQ5ZjQyYTBmYzMxM2JmNGFmYWI2MTgyZjM0YWI2NTkyMCBsZWdhY3ktdHJ1bmsKKzU4MDkxIGNlZDI0Y2NjNDlkZDZiYjM3ZTZjODBlZDQ1OTllNmYyOTNlYzdjNDcgbGVnYWN5LXRydW5rCis1ODA5MiBhYzE5OGZiZDM3MDA0ZmNhODE5NGM1NWUwMDY4ZTYzNzY0NjE4ZTcwIHB5M2sKKzU4MDkzIDI4MmUyZDBjMjkzNzFjMTEzNDEzYWE3MTdmYzBhYzk1MDFmNzFmZDggcHkzaworNTgwOTQgNWJmZmI2Yzc5YzA2MTEyNDBjYzZjZTM5ZmJhMjYxMTUyOGZiMjdmOSBweTNrCis1ODA5NSAyNmFlMjEwOTY5YzA1ZTdiZjU0YTE0MzM3YTE5MjQ3NDlhZmI2NzNkIHB5M2sKKzU4MDk2IDRhNmM3ODgyMjZmNWMyZmQ4MTExYTAzMzA3ZTM1Y2Q2N2RiNDhmNzIgbGVnYWN5LXRydW5rCis1ODA5NyAxOTMwMjBiZjUyZGMzNTZjOWY2OGJlNGJlNTY3M2U5YjdjMmUwNjY4IGxlZ2FjeS10cnVuaworNTgwOTggMWRhZDU4ZTAwYzNhNTBhZDdmOTY3M2UwNzE2MTRiYmQ0ZjAyM2I0MCBsZWdhY3ktdHJ1bmsKKzU4MDk5IDMzODE3ZGE1M2ZkNzQzYTk0ZTk2YTc2NTQ5ZmNlOGE2ZDgxYjRkYjUgbGVnYWN5LXRydW5rCis1ODEwMCAyMGE4MGI4M2E2YzUyNjk2ZmZkYTNmYWMzOTM5MDRlZDA0N2Q2ZDIzIGxlZ2FjeS10cnVuaworNTgxMDEgYjNhNGExNGQ4YWMzMTIzMTk1YjkwOTM3MTc3ZWNhMGIxYjY3YWNiMyBsZWdhY3ktdHJ1bmsKKzU4MTAyIGViZGYyYzA5YzE4OTkwODc0MmZhOTQ0NjYyZDc3MzQ0YTBlYTU5MGEgbGVnYWN5LXRydW5rCis1ODEwMyBiZmUxOGI5MDdkODczNWU1MWE5NzYzOWM4OWU0MGIzOTk0YTk2ZGRkIGxlZ2FjeS10cnVuaworNTgxMDUgMThkNWFhNTEzNWNhM2E1MzNkZGFiMDMzOGZkNDNiZmNmNjM4ZGI3ZiBweTNrCis1ODEwNiAzZmYyNDk4Y2Y1NDhhNzcxNzJhOWNjYzQ5ZjkxY2RlMGFlMDRkNDg2IGxlZ2FjeS10cnVuaworNTgxMDcgZTgyODc2YTYyMWI1ZjQzODIyNDBlYjcyNzAzZWNhYTg3ODY4NzMwMSBweTNrCis1ODEwOCBjNWI2YWU5NDQwYjVkZmY0MWQ1ZTJlYTE3NzRlODcwOTA4MTM1NGEyIGxlZ2FjeS10cnVuaworNTgxMDkgZWFkN2MzYzZiZTFiOWE4ZDkwOWFiYmI5MDc3YjcwOTkxOWU5YTQxMSByZWxlYXNlMjUtbWFpbnQKKzU4MTEwIDI3NGZlNGJiZTNlMDcwZDhjNDI2Mjc0NzYxNTY3MDNlMjlmYjI3MDQgZGVjaW1hbC1icmFuY2gKKzU4MTEyIDI1ZWE0ZTY2ZjlhMDA0ODBjNTFiNTM0N2FkNzBmODgxODBhMDRhNTUgbGVnYWN5LXRydW5rCis1ODExMyA2MzdiZmIwYzVkYWU4NWNmYjcwNGRmMWVmYTY3NDBkNDE5NGFlNGU4IHB5M2sKKzU4MTE0IGNhMDZjNGEzMDkxZWU3NGI1Y2EyMjg2MmFjOTNmM2RlOTQ0MTlkNWEgbGVnYWN5LXRydW5rCis1ODExNSA1NTUzZjhiNGRlYzBkZTA4MDc4NGNjMDI3ZDI4YzI0NDQyYTE0OWUwIGxlZ2FjeS10cnVuaworNTgxMTYgYjU3OTVkYTdkZDI2M2E1MTUxMjQyM2Q2ZGFmZjA4NzFhNDc1YjVhYSByZWxlYXNlMjUtbWFpbnQKKzU4MTE3IDA4NTg4ODc2ZTRhNzRjZjU4MTE1NjRlNWFmNmM0NGYwMjViNzJkYWEgbGVnYWN5LXRydW5rCis1ODExOCAyMDM5OGI1NTI2NmM5NmI1ZjFmYjE2N2ZhMzdhN2U5MDdhZTljODA4IHJlbGVhc2UyNS1tYWludAorNTgxMTkgODQwZmY1OGQxZTllZmE0OGYwMzM4N2Y0Njk3NDM3ODlhMjUxOGVmNSBsZWdhY3ktdHJ1bmsKKzU4MTIwIDc1NmE3YjdjZGM0ZTVhZDk5NjBiZmMxNGQ1MDRiY2NmOWUzNzhlYTMgcmVsZWFzZTI1LW1haW50Cis1ODEyMSA5MDA3MTU0YTdjNDkxNTc2ZjNhOGFkOGZiNGVmNmUyMzljY2EwMjVlIGxlZ2FjeS10cnVuaworNTgxMjIgMDZlZmU4MzU4MDRhMmQyYTZhNTQ2NTBkNWI5YjVjNDA2Yjg3ODkyYSBsZWdhY3ktdHJ1bmsKKzU4MTIzIGMzOGUzNTNlODc2MWU4NDAwNDZiNjQ3YzY3NmVkY2ZmNWFhN2EzYzUgcmVsZWFzZTI1LW1haW50Cis1ODEyNCAxZTNmNTdlNzNlMDRjM2FmMzZlNmI2ZWQwNmM0MmVhYTk5ODc4ZGY5IHB5M2sKKzU4MTI1IGEwZDIwMTJmZjRjMTViNWVjYzljYzE1YjBiOTRiZTYzNzQ1MzQ3OTcgbGVnYWN5LXRydW5rCis1ODEyNiA4NGRjODZmMjExOTY0YjczNzRlMTFjNzgxNWNmYWUwNTFlMTllMDdhIHB5M2sKKzU4MTI3IDVhYjVhNWM3MzY2OGZkYjliZTVkMmNlZDQyYjg3MjhmODZjZDUyYTQgcHkzaworNTgxMzEgOTQyZmExYzRhOWQwZWYwMTI2NmQ1Zjc2M2FhODRkZjVhNTA5MjU4MiBweTNrCis1ODEzMiBiZjJkOGI3OTQ5M2FhMjAxNzJjMmE0MGY2ODgzNTM1ZWNjYmFkMjZiIHB5M2sKKzU4MTMzIDcxMDdmMzljMmY2NmMyMGU0MzBiYTdhNTU4OTRiNGRhNGIwMGE1YzkgbGVnYWN5LXRydW5rCis1ODEzNCAzOWViY2YwYTk4YjRkMTM0N2U3N2Y2YmUyODliYzZkOTIwMDM0YWJkIGxlZ2FjeS10cnVuaworNTgxMzUgZTEwMDM3MWEzZjYyZGU1M2FlMmYwYTVjODI1NWIwZDYxYTdhNTA5MiBsZWdhY3ktdHJ1bmsKKzU4MTM2IDk0OWEzNWIyN2QyMDQyZGZiZGM5ZTBkNTAzNGJlMGIyYjQ2YWVmNmUgcHkzaworNTgxMzcgYjJkY2Q3NTdhNmEzNzVlY2ZlZTJhNjVlZjY2OWNmMGFjMGQ3MjljYSBkZWNpbWFsLWJyYW5jaAorNTgxMzggNTI3YzQ0ZWYyNmNjZDJlMzgzYjIxZWQzOTY5Yzc2MTc2ZmQ5MjBjZCBkZWNpbWFsLWJyYW5jaAorNTgxMzkgYzc5YTJmMGE3MDM0MmQ0NGMyZjg3N2NiN2VkZDBkOGVmNTJlYjQwNSBsZWdhY3ktdHJ1bmsKKzU4MTQwIGM2Nzg1MTEzMGZjNGM2ZTlhY2ZjODVkYTI3Y2JlMzQ5ZmI4YjJiOWIgZGVjaW1hbC1icmFuY2gKKzU4MTQxIGYxNGZiN2IwM2RjYTFlYjc2OTY1NjEyMTNiNTBmYmQwODYwNzUxYjcgZGVjaW1hbC1icmFuY2gKKzU4MTQyIDk4YmE1YzIyMTE5ODZjYzJhYjlmZjQ5ZjMwNjdkZDM3ZmM0ODJiYmYgZGVjaW1hbC1icmFuY2gKKzU4MTQzIDYzZjMxNTRjNzMxZDAyMmNiYjA5ODk5MzhlYzY2N2QxYzZjOGQzNzEgbGVnYWN5LXRydW5rCis1ODE0NCA2M2M5NTc2M2E0M2JlNGU5MTk0NGRhZjE5ZWEwZjAzOGU3NzVjYjY1IHJlbGVhc2UyNS1tYWludAorNTgxNDUgYzhjN2E5NDdhNjQxOTdiODZlZmU5NDQ1ZGQzZjg4NzA5M2VlYjlmNCBsZWdhY3ktdHJ1bmsKKzU4MTQ3IDJmOGIzZWE2MmEyZTFlYWNhYjRlZDkwMjM5ODc0MDg5YjEyOTQ5NDQgbGVnYWN5LXRydW5rCis1ODE0OCBkZjhkMzJkNWU0NDQxMGQ2NmExMmUyNDNmODZlMTY5YmZiYTA0NTliIGxlZ2FjeS10cnVuaworNTgxNDkgNjJjM2MxMDRjYTAxMjAzOWI2OWY3ZDk0MjViNTlmMTZhOWM3OWEwZCBsZWdhY3ktdHJ1bmsKKzU4MTUwIGViOThmMjIzZDZlYWVhZDQ1ZmIxODc1MzdiYmNjNzNjNDRjNmFiM2IgbGVnYWN5LXRydW5rCis1ODE1MSA4YjZkYzY2ZTBlYjU0ZWM3YWY2ZmVhMTQ2YjMxZWIzNTVkMzEwNWVjIHJlbGVhc2UyNS1tYWludAorNTgxNTIgZTBmNWFmMTRjOTg4M2NhNDAwNWZiY2MwMTMwNzIwNjhlZGU2YzBhNCByZWxlYXNlMjUtbWFpbnQKKzU4MTUzIGU1MWVkZGUyODA3ZjFlYTExZTFiNzM2OTBhYTdhNDdhZmM0N2VjNzAgcHkzaworNTgxNTQgMDVkN2MzZDBiNzdhMjI4YWVlNGI4MWUzZTYyMGQyY2RmODU0OTNjMyBsZWdhY3ktdHJ1bmsKKzU4MTU1IGZkZmY0OGY4N2YzNWU5MDc1NzhkZjBhZTc0YTlmMzVkMjc3ZDU1MmEgbGVnYWN5LXRydW5rCis1ODE1OCAxMzM5MWY5ZDIwZWE0OTkyNjJmY2NmNDU3YWU2OTFmZGI5NmI1NjBhIHJlbGVhc2UyNS1tYWludAorNTgxNTkgZTAwMjMzOTVlNTM5MzI4Yjk4MTkwZDE3N2JiZWJiZGVmN2U3ZDg3MSBsZWdhY3ktdHJ1bmsKKzU4MTYwIDczZjJjOWQxNmNmNGQ3NWM0Y2VhNGQ3ZjY2MmMxY2I5NWU1ODgxMWMgbGVnYWN5LXRydW5rCis1ODE2NCA5MDQxOTY1YTkyZjJlZjY2ZjA1ZWQwNTE4NzQ2YjU0ZTI1YWExMjQ0IGxlZ2FjeS10cnVuaworNTgxNzMgMWI2NmUyYTU3OTZmMThjOTQ3NWE2ZmM2YzQ4MDBkODJlMWVjNWExYyBsZWdhY3ktdHJ1bmsKKzU4MTc1IDJlN2RkMjAxZWExZDJjN2VhOWU4NjI4YTdiZTUxYTQ3NWNlYWRlMzUgbGVnYWN5LXRydW5rCis1ODE3NiA3NjMwMjQ4YjU5M2NkZmQyMDMwNzIwNzJjNzBlNTU5NWM1NTRlNjcxIGxlZ2FjeS10cnVuaworNTgxNzcgYWU5ODIyOTNjMWFlMDg5Y2I3ZjE2M2Q5MzNmMWM4YWQ2YjkxNjhkNiBsZWdhY3ktdHJ1bmsKKzU4MTc4IGUzMTM3OTVlYTE3NDJkZGZhZTFjNTZiYzZiZjgwMzE3OGEyZTUzNTAgcmVsZWFzZTI1LW1haW50Cis1ODE3OSA5Y2MxMzJjODQ2MWVjNjQ1NzFmNDIyNjc3NzkwMDY4NGE0OTlhYjA5IHJlbGVhc2UyNS1tYWludAorNTgxODAgZTAxZGQyYmYwOTlhNWFkYTBhNTcyMzEzYzgzMTVkMzc3MTE4ZWY0NiBsZWdhY3ktdHJ1bmsKKzU4MTgxIDg4OTBiZTkzODZiN2FjNDdhNjA4NzlkY2JmNWVlNjVkNzlhOThlZjMgbGVnYWN5LXRydW5rCis1ODE4MiA0ZTU3YzM2ZjZkMmUzNjYyMjgzMmU0M2ZmOTg4MjE4Njk1NTc3MjZiIHB5M2sKKzU4MTgzIDVkMzQyOGZmN2ZmYTE4MjNkYWYyMjI1MTBkOWZjMjJmOWNmMGE1NzcgbGVnYWN5LXRydW5rCis1ODE4NCAzNjMyMDNkNzVkNjlmM2RmODczNjk2YmUwNGIzNDA1ZGE4MDU4MGFhIHJlbGVhc2UyNS1tYWludAorNTgxODUgYzU0OTBhOWVhYWUyZjdlZmMzZWMzYjAzNDA1NzUzZDNlNTk2OTViMCBsZWdhY3ktdHJ1bmsKKzU4MTg2IDJmZGZmMGI1YmViNmFiN2M2ZjFjNzhjNTE3YzZlNDViNThhZDcxMjIgbGVnYWN5LXRydW5rCis1ODE4NyA0ZTU0M2ZhZTBkZWQ4OWY4YTIxMGM4NzRkYjliZTc1NzViZjlmYTQ1IHB5M2sKKzU4MTg4IDUzMzVmODlkZjA4MWJhZTQ4N2FkNDIxOGE2YTA2MGU5Y2FlZmZlMzUgcHkzay1pbXBvcnRsaWIKKzU4MTg5IGUzOTVhNjM2ZWU0YTdjZWU2M2VlNzhmOTFjMTQ5NmNiNzIxYjNiZWYgcHkzay1pbXBvcnRsaWIKKzU4MTkwIDY0MWQ0Y2FjOTc1NmQ4YTcxNzNjYWQ5N2NlZDUwN2VhOTFmYzljMWEgcHkzay1pbXBvcnRsaWIKKzU4MTkxIGMxYmNiNjMzOTM1Nzc0YTA5OGZjZTVhYzU1YWU3MGUyMjExMTIwNGUgcHkzay1pbXBvcnRsaWIKKzU4MTkyIDU5NzVhNzMxNmMwNjUzMjJlODllNWMxYzFjNzQ3M2MzODhjOGZlYzggbGVnYWN5LXRydW5rCis1ODE5MyBiOTIzNmE3NWE2ZTVhZWQ0YTk5N2MwYzE3YmNiMmNhNjdmNWUwOTIwIGxlZ2FjeS10cnVuaworNTgxOTQgZWYyMjM1NDZiNGJkNmRlMzM4OGNkY2U2MTM4YTRhNjhjODUyNWZkOCBweTNrCis1ODE5NSA2YTBlYTA2NWE5OWEyZjk4ZTgxMjBlNDFjYWEyOTZiMDBjZTY3ZTcxIHB5M2sKKzU4MTk2IGYxOTI0NDJmNDRkODFkOGE0YzJmMTY3MTliZWJlNjNlMzRlMzNlMmUgcHkzaworNTgxOTcgYjI5NTgyYmRjOTNjZDZjY2JhZWFmMTQ2ZGRkZGM2NzI4MWQ5NzdmYyBsZWdhY3ktdHJ1bmsKKzU4MTk4IDdkZGQ0MDUwM2UxYTFkMDAyNjkyOTZhNGU1YzBmZmNjMjNlNTdjYTEgbGVnYWN5LXRydW5rCis1ODE5OSA3NWU2YmZhMmQ0ZDIyMGU3YzFhYmU2YmNlY2IyNWE5OGJkNmEzMjhiIGxlZ2FjeS10cnVuaworNTgyMDAgM2VkMmY3NzE2M2ZjMzBmOGY5MjdiZWY0ZmNlZTlmNzBhMWUwNzNiYiByZWxlYXNlMjUtbWFpbnQKKzU4MjAxIGYyZWY4YWUwYmMxODc1Mjk1NTQ3MmU4MGZmZmQ4NjNmYjgwMGJkMTMgcHkzaworNTgyMDIgMWJhYzM4NmMxN2NjNjliOTlkMzMxNWI5ZmFhMTUwNTI2YzlmZjYxNyBweTNrCis1ODIwMyBlYjM5NmRlODJjMDMwZmM3MGFmYmUxYzQ3NjYyMWIwZTdlNDFhODBkIHB5M2sKKzU4MjA0IDhlMTNkM2VhY2FjY2I0YmU3Y2JhZjZlYWM3N2EzMTA5NWJlY2VkMzYgbGVnYWN5LXRydW5rCis1ODIwNSA2OTI0OTM3NzFhZTMyMmM1ZDY4ODA2NTg3NTU2NTJiMTE4M2M0OGI0IHJlbGVhc2UyNS1tYWludAorNTgyMDYgZDFmYTgyMGIyZGNhMGQxZWFkNzc1NzEzZGMzZDAyOWRhNGE1NzQ0MyBsZWdhY3ktdHJ1bmsKKzU4MjA3IGMxOWVjOTUxNWEzMzY3NjI1YmE0NjM4MDdhZmIyMGM1YTllNDgyZjggbGVnYWN5LXRydW5rCis1ODIwOCAzNTdmNTQwMTVhMmQzYmExMGNkZjEzMWM4MzQzNmNhM2I0ZTIyZjVjIGxlZ2FjeS10cnVuaworNTgyMDkgNDRhYTRmZmRjMWFjOTZmODgxYjYyNzNkMjM0OGIwZjZjNjczOTMzMSBsZWdhY3ktdHJ1bmsKKzU4MjEwIDgxNDc4NDY1ZmVmM2IxNDczODQ1OWZiN2Y4NTMzMWU1ZWRhZmNiNDUgbGVnYWN5LXRydW5rCis1ODIxMSAzNTdjZjA3YTIzZmUzNjZiZjZhYjZkZWJiNTYxM2I5NzA0ODhmZDNiIGxlZ2FjeS10cnVuaworNTgyMTMgYjA2YjE5MWI3Y2ZhMGI4N2FlZWZlOGNmZDQzMmUzYzc1ZTUyYTM3YSBweTNrCis1ODIxNCBhNWQzN2NkY2QzMTYxNzNhMTM1ZDNjN2I4ZWM3MzIyZGZlMTZiNTJlIHB5M2sKKzU4MjE1IDUyMWJmODdjZWJiZDllMDhhZmRjYzE3YzRlZmUwMzg1YjkwOGNlY2UgcHkzay1pbXBvcnRsaWIKKzU4MjE2IGVmMTcyMTgzNjE3ODJhMDgxODc0ZmQyOTkyNTk5NjE0MzYwZTdmNjkgbGVnYWN5LXRydW5rCis1ODIxNyA0MDkwOTFiMjhjN2U5ZDY4MzQ2YjQyY2QxODg1YTRmZTliNWMwODg2IGxlZ2FjeS10cnVuaworNTgyMTggN2QxNGEzMTg4ODUwMWRjMWQ5MDE4NzkzNTY2NDBlYTg1ZTMyZWY2ZiBsZWdhY3ktdHJ1bmsKKzU4MjE5IGUxYzA5ZmE2ZmMwZjVkMjZmZTMyYjI5OTA4OWI5OWQ3NmU1Mzc1ZGEgbGVnYWN5LXRydW5rCis1ODIyMCBkYzM5ZGRkZWEzMzAwNDVlOTQ1NDY2MzFjOTFiNjdkN2JmYjc2OThlIGxlZ2FjeS10cnVuaworNTgyMjEgNDZjNDY3ZGVlNjU5MzhlNzNlOWI0M2EyZDczNzRhMTk1ZjJmMGQzMyBsZWdhY3ktdHJ1bmsKKzU4MjIyIDBjOGZlYzc2MTExYzdmYWVjNjIxY2E4OWM0ZWU5OTYwOGU0MjQ3MDcgcHkzaworNTgyMjMgZGE5NTE5Nzk3YzYxMDU4YTE5YWEwZWMyOWU0ODc5OTc1MWU2YmJkYSBweTNrLWltcG9ydGxpYgorNTgyMjQgMTgzN2NhZTkwZTUyZTU1MGZiYWM0ZTU1NjQ3MWVhZWYyMWZjNzQ5NiBweTNrLWltcG9ydGxpYgorNTgyMjUgZWM4NDZlYmFiMmVmYTBjNTc1MTYxYzEwZGFmNGM4ZDdmMDg5Yjg3YiBsZWdhY3ktdHJ1bmsKKzU4MjI2IDBmZjQxYjE2M2Y1YmExZjVkMjg5OTkyZDZhYTE0NGNlYTVmNWI2Y2UgcHkzaworNTgyMjcgZjMxZDQxNTU1NGNkYmZjNWI1NDlkZDM3NmUyYWZkZGExOTA2YmNlZCBweTNrCis1ODIyOCBmNmNiYWI3NTkyOGY2ODY0OWM0NTZjMDlkMTYyZWI5N2YwZDViZTQzIHB5M2staW1wb3J0bGliCis1ODIzMCA3M2QyNmNkOGUwYjU2NGYxMDgzMmI3YmVmYjU5OTJhZDMwMjY4NDIyIHB5M2staW1wb3J0bGliCis1ODIzMiBmYzAzMzZmNDQ3YWVhZjBiNWZmM2VkNjQ0ZWFiYTQyZjE1MGVhMzI4IGxlZ2FjeS10cnVuaworNTgyMzMgMzdmZmJiN2ExOTYyOTMwZjcyYTVkNGIwZjk1ZTIwZWYyMmRhNmNiNSBweTNrLWltcG9ydGxpYgorNTgyMzYgMDQ3NmEyY2M1NjU4NzQ0M2NmNDZmZGViY2Y4ODUxMTA2MTFjODhmZiBweTNrCis1ODIzOCBjZWYyZWQ4MjkyYjZjZmRiYjg1NDYxMjk4NWEyYTZlOTU3MzA0NTMwIHB5M2sKKzU4MjM5IDVmNzMzOGE0ZDFkZGRkMjYxODFmNjBhZGFhYWQ0OTZjNzAxYmY4NzQgcHkzaworNTgyNDAgNTVhNjYzMTZjODllZDJjYjE2MTRjMjdhNTU2MGZiZDQ1YmRmMTQ2NiBweTNrCis1ODI0MSBhNGRlMzEyMjE1Nzg0N2YzMDhkYmQ2MmIzYTFiMDFmMzUxNGZjNTBhIHB5M2sKKzU4MjQyIGI0ZTY4OGZkNjYwMmE1NjkwMTUwM2UyNjQ2YTk3ZWQ3MmFkOTgxNjcgbGVnYWN5LXRydW5rCis1ODI0MyA5OGZmOWIyZmY3NTc2NTFkNWQyYTZmYjM2MzhlMTA1NWIwNjcyYzk3IHJlbGVhc2UyNS1tYWludAorNTgyNDQgYjkzZWQwNDNmMjcyMWI1YmNmY2UwZTAwMmZhODQ4ZjgxY2EzNmVlZSByZWxlYXNlMjUtbWFpbnQKKzU4MjQ1IGU5OGUxMWQ3NzY4YzY1YjY4MjE4MjcyZGRhZTNhM2Q1MTAxZWNhNDIgbGVnYWN5LXRydW5rCis1ODI0NiBiNzBlZGI1YTc2ODg0OTFjNzNmNTU4NTE1YmM1YTcyMjdmZmY4M2NmIHB5M2sKKzU4MjQ3IDc3M2U5NzZiYWIzYWZiNTE0OWQyNGEzZTFkMTRjZjEzMWNjNWVmNGUgbGVnYWN5LXRydW5rCis1ODI0OSAwYjYxNGZkMmRjMmFlMDU2YjZlMDkwMWE2OTcwODFmNjQ5YzAwY2UyIGxlZ2FjeS10cnVuaworNTgyNTAgOTQ2M2RkYTE5MTYwMTNhZjhkYzc1YWEyOGQ0NGVmNmNjZmQ4MDE5YSBsZWdhY3ktdHJ1bmsKKzU4MjUxIDUzZjdjOTJiNDAyNDc1NWY2MjBkOTM3MTIwMTkyMDc0ODdjYTg3ODMgbGVnYWN5LXRydW5rCis1ODI1MyAyZGMwZTZlM2FkMjAwZTZhYWVjM2NhOThmY2E0MDc0NDdhNzg2N2Q5IHB5M2sKKzU4MjU0IGY4MWUzOWM0MzczZGE1ODNkYzQ1MzM4YzUzYTUxYjliODg4YmE4MWQgcHkzaworNTgyNTUgNzliMGRiMDM1NmQzMWM5YTY0YTVkODhjYWE0YWI1M2M0MzljZjU4ZSBweTNrCis1ODI1NiA4ZDdlOTNiNDdjYWJkNTNmNzNjMzc3OGQ4YTZmOGY2ODQ4ZDU3NTI3IHB5M2sKKzU4MjYwIDFhNzlhNDUwMDNmNWRiOTQyNjgwOTBhY2U2M2RhMGFkYzE1Yjg4NzAgcHkzay1pbXBvcnRsaWIKKzU4MjY4IGI5MDI4NmFiODYyOWFmMDI0MTM4MWMwNDBiMzdlODQxN2JlOWMxNTUgbGVnYWN5LXRydW5rCis1ODI2OSA4NTZmOGVhOTIyZGY1MTI5NDJkYmZkNDNiZDI5M2EyMjFhZmI5YzIzIGxlZ2FjeS10cnVuaworNTgyNzAgZjUzMDA1OThiMTFjYWQxMzExZTMwOGIyYzA1MTFjNzFiYmFiNTUwNyBsZWdhY3ktdHJ1bmsKKzU4MjcxIDE5NDRmNzlkYjhhZDM0NGZlNWVkMWVlOTU3NzlkNWVlODVlOTQ3NWMgbGVnYWN5LXRydW5rCis1ODI3MiAxM2JhYWRhMmE2MDE3MWU0MjJhNDg3YmNhOWQxZjI2Nzg0YWUwMDU5IGxlZ2FjeS10cnVuaworNTgyNzYgYTdjNDhhYjgwOWVjNDg4MWM5MWJjYjgzNGQ3OGU4N2Y5MzVjZDVlNCBweTNrCis1ODI3OCAwZmY0NmVmOTQ2YjEzZGM1MjMzNTMyMjY2NzdiMjNjMTBmZDc4ZDU1IHB5M2sKKzU4Mjc5IDliYzk4NTU4MmNiMjg1NjcwYzE5OGM0N2FlYjRjZjA3Yjc0ZmY5NjggcHkzaworNTgyODEgN2ZjZDk5NDVkMWJmZTM4NDc3NjM3ZGJlYTgyMjg1MDlkYjNkYmQyOSBweTNrCis1ODI4MiBlODhmODNjM2IyNWU4YzllNTIzYWEyZDUwYWRiNmVjYWE5ZThiMjBmIHB5M2sKKzU4Mjg1IDg2NjcxNzI2OWNhMzgyMzUxMzQ0YzhiODkzOTlkNWQzMDhmOTFkNDcgcHkzay1pbXBvcnRsaWIKKzU4Mjg3IDg4MGIwYjIyYzE1YTlmNzFiY2YyZGU2ODJjMDJhMDIxMmQ3YzQ0ZjEgcHkzay1pbXBvcnRsaWIKKzU4Mjg4IDM4MWVkNDEwMDNlNzY3YWYyOTg0Y2VhNTc3NDhhMjc3NTYzNjIxZGQgbGVnYWN5LXRydW5rCis1ODI4OSAxMDZhNzFjNTE0Nzc1MWJiZmUwNTZiYjEyNzk0ZWUyMGZiYjgzZGNjIGxlZ2FjeS10cnVuaworNTgyOTMgYTFjYTRlYTQxZTdlOWZkNTgwOTc5MmJjMzI0NjE1MTM4MTFjYjc4OSBweTNrCis1ODI5NCA5ZDZkOWFjOTVhZTE3NjBkMDEwM2FmOGI0ZjdiZjYxYjMwMDFmNThkIGxlZ2FjeS10cnVuaworNTgyOTUgNzk0MzI2MmU1ZmM0Mzc2N2QwNDk1YmRjNTk1MWQyZGMwMmVhZWM5OCBsZWdhY3ktdHJ1bmsKKzU4Mjk5IGM5YmY2ZTcwMzA4ZTc2NDFhY2JiNzNkYTFhY2RjOGQzNzU3Yzc2YTUgbGVnYWN5LXRydW5rCis1ODMwNCBiMTJjZjQ2N2IwNWNjMmQzNzcyZjA0MjY5YWE4MzU5ODEyYzIyNzVhIGxlZ2FjeS10cnVuaworNTgzMDUgMzMzYjA1MmU5ZGE5YTBhMjBjZGNiM2JmNWY0NmYwOTIzN2I0YmU3ZSBsZWdhY3ktdHJ1bmsKKzU4MzA2IGNkMjgxYzEyODM2ZGM0ZjA4N2M1NGMwNjc0NTcxODczZWUwODM1OWMgbGVnYWN5LXRydW5rCis1ODMwNyA3MzJjYTI3YTY3OGNmZWMxZWY0NGU1Y2ViZDJiMzI5NjE0ZjdlZGQ3IGxlZ2FjeS10cnVuaworNTgzMDggMWIxYTU2NTJmZWQ4Zjc3NmY4ZTQxYjcwZTNjOGU0N2ZiZDRiYTc1NSBsZWdhY3ktdHJ1bmsKKzU4MzA5IDlhZTRlOGE1MzQ4NjYyZGVjYTAyZDZkZmFiNTlhOGZkM2I3NDFhOGYgbGVnYWN5LXRydW5rCis1ODMxMCAxNzZiNjEzMWIwYmFmNDEwM2RmZjQxMjg2Y2VkYjIzYzY3ZTBmM2I2IGxlZ2FjeS10cnVuaworNTgzMTEgNjViMzY1NGM2N2Y2MzFjNjdlNDM2MGEwZjZmYWY5OGVhNTA2NWFiYSBsZWdhY3ktdHJ1bmsKKzU4MzI1IDViNTI0OWRkMTZiNDUwNzliMThjMGNmNGViMDc3YjZjYzAwNjI0MzQgbGVnYWN5LXRydW5rCis1ODMyNiA3M2Y0OTY1NjQyMGJjYTc3MTU3MmZhMjIxNGZhNjM5YjJlMTI1ODhiIGxlZ2FjeS10cnVuaworNTgzMjcgZTg2OTRhYjUzYTVlY2EzZjIxZmE2M2Q4MGQxZGVmYzg5ZmNhZGE3OSBsZWdhY3ktdHJ1bmsKKzU4MzI4IGMwYWJkZDU3OWViMjZhZmY0ODcxZmNjNTJkNTJmNzViOGViZGI0MmIgcmVsZWFzZTI1LW1haW50Cis1ODMyOSBmMmM5ZjI0YTBmNWE4OWQ0ZDhkZTNiYTIyYTM5MjUwYTYzODdhMTEyIGxlZ2FjeS10cnVuaworNTgzMzAgOTk1Njc3MjE5YTY1NTgyYTg0ODZkYzI3ZjQ2NDIzYTEzMGIwM2VlNiBsZWdhY3ktdHJ1bmsKKzU4MzMxIDI3NTExNTk5OWI1ODEyMWZkMzFkNmFkOThlODEzNzI4MjU5ZDVlMmUgcmVsZWFzZTI1LW1haW50Cis1ODMzMiAxYmVhNmZhZmNjNTA1NzEwOTY1M2YxZTVlYjI2MmRhNGU4Nzk3OTY1IGxlZ2FjeS10cnVuaworNTgzMzMgYTU0MzAwNjMwOGJiOWJkOTQwZWI1YjE4YmI5ZmI5NDlmNzliOTVmZCByZWxlYXNlMjUtbWFpbnQKKzU4MzM0IGU4NDExOTdjMWQxN2Y1NWYwYjI3ZTliMzkzZjM5YjBiNjU1YzU5ZWQgbGVnYWN5LXRydW5rCis1ODMzOCAxN2IwNzM3MGE3ODI5MDFhZGYxODI2ODg4NWMwNjZiMTRhMGM0YTA0IGxlZ2FjeS10cnVuaworNTgzNDMgNjhmYzEwN2RkYjUwYjk4YWZkMTM2ODE2ZTliNmE1YjYwMzNhNmY0ZCBsZWdhY3ktdHJ1bmsKKzU4MzQ0IGY3MzUzNTk1YjdmYTgxOWY5NmVjY2VjNjMzMWRhZDIzMDlmYzliNGMgbGVnYWN5LXRydW5rCis1ODM0NSBhY2RhYzQxZjcxMDk3MmE5MjI1MTVlNjI4YTVlOTNjYWNkMWEwZDFiIHJlbGVhc2UyNS1tYWludAorNTgzNDYgZWQ0OTllMzQ4YTExOWQyNzdkZGZlMjE4OTM2MTc3OWY4NGIzMDA0MyBweTNrCis1ODM0NyBhZTJhOTlmYzczZGE2ZDJiZWIxYTJiYjA5ZDFlMmRhMjM3ODU5Yjc4IHB5M2sKKzU4MzQ4IGYzNmQwZjcwNzdmY2JmNWY5NzYzZTI3NDM4NjE3NGI3NDAyNDAzZDkgbGVnYWN5LXRydW5rCis1ODM0OSBhZDM2NmUzMTZlMzA2NGYzYjQ2N2ZmM2EzMzE3YjJmZDM3NTI4YmVlIHJlbGVhc2UyNS1tYWludAorNTgzNTAgMzlmNGM1MDZjZDcxOGIwNDM3ZjgwZmIwMDFjYWY1NGU3NzkxOWEyNyByZWxlYXNlMjUtbWFpbnQKKzU4MzUxIDNjZDE0NjNjOTM4ZDZmN2M4MzI4MGY3OTZlMzEyNGY2ODg5ODQ4ZDggbGVnYWN5LXRydW5rCis1ODM1MiAwNzQxMzBhMDczYjY2ODJhZWQ4ZTgxZWRlYWJlMzQyZWQ5OTI1NGNkIHB5M2sKKzU4MzUzIDIzMTkyYjFiNzFlMjc1NTRkZTZkZjMwNjQzZGVjMWNmZjllZjgxZjIgcHkzaworNTgzNTUgMTRhZGRkYTgzMzQ0MzM3NWUyOTFlZGM1YWE2NzE1MjRiMzA0MjU4MyBweTNrLWltcG9ydGxpYgorNTgzNTYgZjVjNzlmNDNiYmY2OTU4NmUyZmFhY2MwNmI5ZjA4NWI5YWIzYzkzNCBhbGV4LXB5M2sKKzU4MzU3IGEzYmFkNjk0YzI4MzlkYTNlZjdkZjVlNTU1OGVlZmM3NzhiZTMzNjcgYWxleC1weTNrCis1ODM1OCA5NGU1MzZjMzY0NDkzZmM4YWM2MjYyNWM1ZGE3YTY5YzNiYWYyYmMyIGFsZXgtcHkzaworNTgzNTkgMzA0ZDJjZWExMzc4MzViNzRkMTI5NTMxMDQyY2MxZjliNTdmNTc5MyBhbGV4LXB5M2sKKzU4MzYwIDhjMTBhYWMzNzAzNzkyNWRjY2I3YmJkZmI0YjcxNGI2MWJmYjNmZmIgcHkzaworNTgzNjIgOGJhNTMwMGNiNGIzYjVkNmIzODA3MWM3NTYxOTY1ZGQ0NWFlZTMxNiBweTNrCis1ODM2MyA3NjdlMGMzMTBhNmFhZmE3ZjA5YmNkZDdiNTdiZGVjNDRiY2M1NDkxIHB5M2sKKzU4MzY0IGY2MTQzYzQxMTcxMzU2NTAxZTQ2YWVjYWE3ZGFmMDRlOTdmODVkOGUgYWxleC1weTNrCis1ODM2NSBmNjA2MWM3MWE0ZDIzNmI2ZThkNTNiOGNjMzdmN2ViZDYxOTAyNjgzIGFsZXgtcHkzaworNTgzNjYgZmFiNDA4OWRhYjlmOWYwZDE3NWVkZTliOTQwNGM3MjhkYzM2MzQ0MCBweTNrCis1ODM2NyBkZTQxZTk3OWFlYmViODk4Y2I2NmE5YTJkZTZhMjVlZDUxZjUxNThjIHB5M2sKKzU4MzY4IDA0NTk1MmZmMDhmNzQzYjIzMTYzNTI5YzdlZTJhM2NiZDU5MDE0NjcgbGVnYWN5LXRydW5rCis1ODM2OSA5ZTYwMjBiYjIzNTIyYjMxYzhlOTcyZDAwYTRjMzU0NTkyOTk4ZjRkIGxlZ2FjeS10cnVuaworNTgzNzAgNGRiNWRhYjdmMjM1ODlkYWM3ODQ0M2RhYjRlY2I0MGUwYWI3Y2YyMyBsZWdhY3ktdHJ1bmsKKzU4MzcxIGZmNGJiZTY4MjNmYzliOTMwYTJhOWUxZDE5OTM3MTY4M2ZmZTBkMTUgbGVnYWN5LXRydW5rCis1ODM3MiA5MTkwNGYzZTdiZTFiYTRlNzhlMzExOTdlNWFhMzJjZWYyNTE1NmNiIGxlZ2FjeS10cnVuaworNTgzNzUgNjYxNGQ0MmQ3ZjBhMzM1ZDliMWQ0MWVhMDUxY2FkMzk1NTVlYTBkMyBweTNrCis1ODM3NiAwYmEzODEwMGNkYTkwMzI1MTVhNzdiOGIxOWNjMGZhNzI2MjMzMWYyIGxlZ2FjeS10cnVuaworNTgzNzcgOGJkOTEwMDM2Yzk3Zjc0MGI3MGI0OWMxMWE4Yzk5N2JhYzljOGY4OCBhbGV4LXB5M2sKKzU4Mzc4IDU3MTNiMTc2ZGRiNjk4NDg3ZWU4ZGIwNjRhNWUxMzUxODkzZTkxYWEgcHkzaworNTgzNzkgMjdhZjQ1MjQ5YTgwM2QxNWM2MDFmNzcyNDQ1YWE4YjFhOGRmOTEzMyBhbGV4LXB5M2sKKzU4MzgwIDY1OTg3YjM4ZGYyZTM1OGNkMzMyY2VlMmQ4NGVmNzIwMzUxOGY4ZGUgbGVnYWN5LXRydW5rCis1ODM4MSA5NjVlNzE1NDE3N2M2OTUwNTkzODEwODU2MTJiY2U5NTVmOGE1M2M1IGxlZ2FjeS10cnVuaworNTgzODIgZWJmMmE1Y2YxM2ZiZGUxZTQ1ZGYwZTI2ZjA4N2Y1MTgyZWU1YTlhYyBsZWdhY3ktdHJ1bmsKKzU4MzgzIDk4ZjYxODBiOWIzMzMwYjEwMWY0YzEwNjM2MjFkZTYwODNmZTBkOGIgcHkzaworNTgzODQgMzMwMjFlNDAzZjNjNjU5ZGEzM2M3MDYxYWI0YTY2ZDI3MTM4YjczYiBsZWdhY3ktdHJ1bmsKKzU4Mzg1IDljMzAxNWZjNWJmNDU5OTcwMmRhN2FjZjBhOTNlZjM5YTUzYzM2NjQgbGVnYWN5LXRydW5rCis1ODM4NiBjNDhmOTM4MWRkZjEzMGY2NzQ3YzJiNGZmODVlY2ZhMDFjYWI2Y2QyIGxlZ2FjeS10cnVuaworNTgzODcgZGM2ZTJhZGY4ZGQyYTMwNmU5ODZiN2Y2ZmYzNTMxNjBmYjIyNjgwMCByZWxlYXNlMjUtbWFpbnQKKzU4Mzg4IGExYjc2NzU3ZDYyZWUwZmIwNjE3NTZiMzNmNDEyYWY1MTBjN2Q2YzEgLi4vY3R5cGVzLWJyYW5jaAorNTgzODkgMjRkMTExODA5NDgwMDk0YjM3MTNiMDllNGI3NzE3MTcyNDVhNGQzMiAuLi9jdHlwZXMtYnJhbmNoCis1ODM5MCA0N2MwMjc5MWVjNmIyYzZiZjE2MGNjYjc3NjdiN2QzOGNkNDE4MDRhIHB5M2sKKzU4MzkyIDRhNzJmYzVkZmI3OWIzZDIwYTc3ZjVhY2MxMGUzMmNlYjQyNWZlMzYgcHkzaworNTgzOTMgYzk0ZGE4NDc2NWVlMzAyNTJhYjg2ZjhhMDg4MDMzOTI3ZTliNjFhMiBjdHlwZXMtYnJhbmNoCis1ODM5NCBmYTkzZGQ0ZTM0YmMyMzA0NjdiMTkwMGNiYzY5NjMyZmVmODkxZWIwIGxlZ2FjeS10cnVuaworNTgzOTUgYmMyNWJhZmEzM2IxZmM0NmY4ZDgxYTM3MGU4YTJiZTJmOTg3N2QxOCBweTNrCis1ODM5NiAzN2Q4MjcwYWM4ZDk2MWI0ODNiODU5ZjhhMDAxZDg4MTQ0OTNhNWZjIGxlZ2FjeS10cnVuaworNTgzOTcgMzQwZTZmZDVkNzVmMDU1NTUyODg0NmM0NjhkZjcwOGMwOTM1Y2FkMyBweTNrCis1ODM5OCA0MTViMWJhY2ZlZDdhZjAwY2QzNTU2NWMwZTMzZDAwZjYwNjNiY2RiIHB5M2sKKzU4Mzk5IDhjNWU2MGRkYWE4MjdiNWYwMTczNTE1YTNiMTExOGZkZDFkZGFmMjIgbGVnYWN5LXRydW5rCis1ODQwMCA4ZDQwYzUzNDhjYTlkOTNkMDJkODgwYWI3NjgxZDQxYzYyZmU0ZDU2IHB5M2sKKzU4NDAxIGRhNTJiNGM3NzZhNDU0ZmExYTBkOTBhNTYzMGEzYmRjNzUxMmIyNDYgbGVnYWN5LXRydW5rCis1ODQwMiAwNmJhNDJjMmMwZDA3NDZhNTZkNWY2YzNmZDE5MzM2MTVmMmFkZjk1IHB5M2sKKzU4NDAzIGU1ZDY4OTNkYmIzNmVmNDRlOTAyOGJiNmZjMzM1YjYxZTNhMWQzOWUgbGVnYWN5LXRydW5rCis1ODQwNCAxZDUyZTc4Mzg0MmRhMWE4MDY3MTA4MWE5ZTgzN2M5NTlkMDFhOGI0IGxlZ2FjeS10cnVuaworNTg0MDUgOWY3ZGUxODQzMWZlOTUwZDUzOTFlNTc3NGVlZDFjZDA0NTgxMDk5OSBjdHlwZXMtYnJhbmNoCis1ODQwNiBmZmVjNDlkM2QyMTU0NzFmYmRmZWFkN2IxMWRlNmEyY2NmOGZiYmM1IGN0eXBlcy1icmFuY2gKKzU4NDA3IDRmOWVjZWE4MTc3Y2JlZDk3YjlhNmMxOGY1MjEyZmFkOGJkYTBjODYgcHkzaworNTg0MDggYjRkOGY3MTQ1OWU5NDliY2QwNTcyNTMyMTNhY2Q0MDk3YTZkZmU2YSBweTNrCis1ODQwOSA0YzE4OWM3MTQ0Yjc5NGI0NjdiMzRhYWM4Y2U0NWU2ZDMxOGYwNzMyIHB5M2sKKzU4NDEwIDJmMzBiZmI3YzczODVmMzhkMDQ3N2RiZDhlODVjZGZhNDU5YTA4MzEgcHkzaworNTg0MTEgYjlkMTlkNTFkZTM2OTc1YTVlN2M0NTcwNWQ5NjU1NjBkNDMxMWMxMyBweTNrCis1ODQxMiA2ZTYwZjY1ZmYzNjQ3YzlmMTcwOGM1YjU0YWY2NmNlMTY3NjM1OTAyIHB5M2sKKzU4NDEzIDJiNzQ2ZjI4YjM5OWE3MTA2OTdkOGEzMTBhYzIwY2FhZDZlOTJkOGQgcHkzaworNTg0MTQgOTkzNzFiZDJjYThmODdkOWI1YmJjNGNlNDBlZWM1YzgzMTdiODc2NSBweTNrCis1ODQxNSAwMjcxMGI4OTcwMWUwODM3NTMxNzE1YzY0ZDkwMTUyODhmN2U5ZjY2IGxlZ2FjeS10cnVuaworNTg0MTYgMzljOWI1NjEyNDUxYTI3MjczODQ2M2E4MTBhZDBjMjU2Y2MwZTQ5NSBweTNrLWltcG9ydGxpYgorNTg0MTcgMzljYjVkOTZjZTc3MDA0ZTk3Mjc0YTQxZWYwOTA2YTZiMmZiZWJlMCBweTNrLWltcG9ydGxpYgorNTg0MTggOGM1YTQzM2E5ZDkwZTdkYTM1MWVjNTU0MTMyY2Y0NzYxY2U0ODgzZCBweTNrCis1ODQxOSBiZjEwMTQ0NDhjNDE3ZDk0ODU2ZWIzYzEzN2RjYzJjM2NkNDllNGJhIGxlZ2FjeS10cnVuaworNTg0MjAgYjYzNzhmYTZlMTY0OTBhNzJhNGY2ZmQ1NmZkY2M0YzBkYjcwMTM3YSBsZWdhY3ktdHJ1bmsKKzU4NDIxIGNhOWIwOGU3ZGMyM2RhMDEwYjBmMWQxYTdlZmZhMjRkNWFkMTQ4OGEgbGVnYWN5LXRydW5rCis1ODQyMiBlNDlhZTk5ODA4MDgyMmUzNDcxYTlkNGFjYWI3Yjk1MGY4NjZhNmQzIGxlZ2FjeS10cnVuaworNTg0MjMgMTZkNGI5MDQ4NTFmZTBhMWIxNzQ2MjQ2ZTdmMjM2ZTY2N2U0ZTYxYSBsZWdhY3ktdHJ1bmsKKzU4NDI0IGNkYTBiNjI1Mjc1YTYxYjFhNmIxZGNlMjRhNGU4YzI2ZmFlYzI2NTEgbGVnYWN5LXRydW5rCis1ODQyNSA5YjZhNDczY2ZhMjI4YjJkNzJlNjRmZDZjOWJjMGViMDYzMTNmYTA5IGxlZ2FjeS10cnVuaworNTg0MjYgYTQ0ZTRjYzMzZjVlMDNkY2VlNTljZDI0YzMxY2FjZGQ1ZTkyNjFmZSByZWxlYXNlMjUtbWFpbnQKKzU4NDI3IGEyNjIxNzhjMWMwYWY0NTJjYzcxOWZmM2Y4ZWYyNTA5MmVkM2UyZTggcmVsZWFzZTI1LW1haW50Cis1ODQyOSBhM2ZkNmU1OWJhODM2ZWNmNDcxMzgwODA2NmMyZTc4YzY5ODU3Yzc5IHB5M2staW1wb3J0bGliCis1ODQzMCA4MWY1OThhNzZmNTlmYTM0MjgwZTY2YTA0OTZjMTA4Yzg1ZDc1OGExIGxlZ2FjeS10cnVuaworNTg0MzEgZmMwNDhiNzJiZjNkMDhhYmE0Njg0OTY1YmJkNzMyZWU0NzlkOWY5NyByZWxlYXNlMjUtbWFpbnQKKzU4NDMyIGQwYmEzOWRlN2FiN2U1MGM4MTAwMzBhZjY4ZGIyMGRiNGRmMzEyOWQgcmVsZWFzZTI1LW1haW50Cis1ODQzMyBmYjMxMGI4NjIwZWNlMWQxNjVjNTc2MDU1MGE5YWNkMjZlMjVkMGVkIGxlZ2FjeS10cnVuaworNTg0MzQgOTYwMzIyMWJiYTkwMmFiMDMyZDBlYjQ2MGMyMmM2N2YyMDAwZGJmYiBsZWdhY3ktdHJ1bmsKKzU4NDM1IDEwNGQyZjI5Zjg4NmI4YzkyZWI3NTUzMjI0ZWE1ZjUxZjMyZWJiZjUgcmVsZWFzZTI1LW1haW50Cis1ODQzOCA2YTk3ZjcyNjBjYWQwOTg1ZjM4ZjBkZTRiMmJlMWNmZGI3NmZlYjdmIHB5M2sKKzU4NDM5IDgzM2IwZTc4MTUwNmRhZDBhMjkyNDVjYzNhYTY3MWJlZDFmZGMzODUgcHkzaworNTg0NDEgZmI5ZDUzMDZmNGM3MjI0MGJjZmQ0ZDI0M2M0MjMzMjZjZWNhMTdlOSBweTNrCis1ODQ0MiA5OTNlMjRjNzI0YjhjN2QzMmJjYjkzZDE1ZWFjYjE4ZmU1NTQ0MTRiIHB5M2sKKzU4NDQzIDRlYTk0NWNiYmI2ZDQ5ZDFlNDEzNTEzMjhjYmU5NDljZThmMGUwNTkgcHkzaworNTg0NDQgNDgzY2I0MWE1NjkxYmI1NTZhZjUyMjlkNzdkYzU5NTdkZDJkZjYwMyByZWxlYXNlMjUtbWFpbnQKKzU4NDQ1IDM1ODY2MzFkOGQyMWM1OTM2NzU4M2Q3ZjI3OGE2YWFhNDU4Nzc4OTAgbGVnYWN5LXRydW5rCis1ODQ0NiA5ZjAzNjYyNjBjZmJiNDg3MzcwOGVmMWEwNWUyNDMzNGQwMzFmYjEyIHB5M2sKKzU4NDQ3IDY0NGUyOGVhOWIyMmE0NjBmZmMwYzU3MmNiNDY3M2IzOWJhMzhmNjkgcHkzaworNTg0NDggOGU3MmRhY2Y3ZjNhNTI3YjEyNWE2ODk4OTVhYTA3ZWNhYjg2MWIwZSBweTNrCis1ODQ1MCAwMmEzM2RjYTQwMDFhNThmYzlkNWFlZjI3ODBkNDZiZmY3MWNmODY2IGxlZ2FjeS10cnVuaworNTg0NTEgYzNhMjU4MjBmNTEyMzVjZDRiZTdkNDI2MWQ5YTViYWNlNzM3ZjkxZCByZWxlYXNlMjUtbWFpbnQKKzU4NDUyIDk5MjVjZTFmZDdiZTdkZmI0Njc5ODQ3MTMwMjNlMWFmYTEzZjY0ODIgcHkzaworNTg0NTMgMzA2ZDUzOTVkZmEyOTk4MDk5ZTQ5NTNkNWExZjVkOGNmNjdlOWY5ZCBsZWdhY3ktdHJ1bmsKKzU4NDU1IGFjNjJlYjI2NzIwNmUxNWQzOTk0NGI2NjNhNzdiNjA5ZTk4ZDYwMmEgcHkzaworNTg0NTYgMDAxNTU3MmQxMWJjZjk4NjNmMTEwNjI2OGQyMWEyZWFiYWM3ODIwNiBweTNrCis1ODQ1NyA5ZmJmNzMzYTA2MzliZWE3N2Q5MTA1YmVjMWE4N2RkYjk3YWVjMmVjIHB5M2sKKzU4NDU5IDRlMDVjMjRlMjZmOGE1MzRiNjRiNjlmZWExYTM0ZGEzMDA3ZThjYTMgbGVnYWN5LXRydW5rCis1ODQ2MCA3ZTI3ZDUwYzg2NzIxZTYxZmZmZmU5NzA0YmQ2NjNhZTgzNjdiN2NjIGxlZ2FjeS10cnVuaworNTg0NjEgYjQwMzVkMzY2NWJiODMwMjIwYjFjMzVkNTdkZmZkNTZjYmVmNjJmNyBweTNrCis1ODQ2MyAxMjZkMmZiNzM1YjVhMjY0YzA2YTVmODE1MzZhNjMzMTIzZDIwYWU4IHB5M2sKKzU4NDY0IDVhZDU3OGFlOTg3M2U2MTc0Njc4MDgzZDNlYTMwMzM3M2IyMjdlMTAgcHkzaworNTg0NjUgOTAyOTRkODBhM2M1YmNmZGU2YTIzOTkwNDUyMjE1MmMyY2I5ODZlYSBweTNrCis1ODQ2NiAxOTMxOWU3MGZjM2VkYmI0NWIyZDAwNzE2MWMxYjNhMWRlMDk0MTgxIHB5M2sKKzU4NDY4IGE1YTRiNzg2YmIyMTViNmIwYThiYTk0MGI4NDZjMTFlMTRjZjRkNjcgbGVnYWN5LXRydW5rCis1ODQ3MCAyMTk1ZDFmMTc5NTgzYWY2ZjBjM2VlODVmZjU5N2NlNmZiZGVkZDY3IHB5M2sKKzU4NDcxIDY5NzQwMGZjZTdjNWMwNGI1YjE3ZGU4ZWM3MGRlN2RjMjI4YzM1ZWEgbGVnYWN5LXRydW5rCis1ODQ3MiA1MDU5OWJiYjBjNjcyMzk5MmNlNzQyNDdhZmY2ZmJlODkwOTg4NDk0IHB5M2sKKzU4NDgxIDE2ZTIzN2VjZTI3ZDM5ZDQ3ODE1NGVjOGVhMGIwNTYwMjE0NGNkZWQgcHkzay1pbXBvcnRsaWIKKzU4NDg1IGM5ZTYxZDY2ZmY2NTE4MjgxZWM2NDBkM2UzMzcwZDZkZGZhYzVjNTQgcHkzay1pbXBvcnRsaWIKKzU4NDg2IDZjYjYzOTdkMjIxYWYyYThhMzczZDdmNmViM2EwM2MxOTI5MzJiM2MgcHkzaworNTg0ODggZDcxMzg0Y2I1NjA0NGRhMTk5MWFmZWZmM2I3ZTc2YTE2YzQ3ZWI0YyBweTNrLWltcG9ydGxpYgorNTg0OTEgZTcyYWQ0ZDI1NmU4NDBiYjdkOTg0NTA1NTA3M2YwYjM4MDBjOTc3YyBweTNrCis1ODQ5MyA2OTdjYzMxYTgzZjY1ZTkyMGQyZjIyM2VjZGNkZGI5MjY4OGVkMjdkIHB5M2sKKzU4NDk1IGFjZTQ1YjM2MWU4NzNlMGUxN2Q4MjIwOTZiYmEzMzQ2NTkxNGE1MWIgcHkzaworNTg1MDAgNDA2MDA0N2IzZjFkM2IyMGNmMDE0ODcyZGExMTFiNDFjNmYzOTU0NSBsZWdhY3ktdHJ1bmsKKzU4NTA2IDA0NmVkYWExNTY2YTdiODg1ZDY4YjU4NGFjZWNjZGM4MWM2MmMyMGEgbGVnYWN5LXRydW5rCis1ODUwNyA3Y2EwYmMwYWQ5NjAzNWJjY2QwNTFhYjI0YjI0NDdlOTMyY2Y4NTQxIGxlZ2FjeS10cnVuaworNTg1MDggMDE2ZGE4ZTJmOTRiOGNjMzgzYzBkOTQ0NjE2MTdmMTVmOTJiYzc0MyBsZWdhY3ktdHJ1bmsKKzU4NTA5IGM4ZWUyNjA3MzA1MDNlOTkxZjIxYWFmNGUwMGNmZWExNzk2YjcyN2MgbGVnYWN5LXRydW5rCis1ODUyMiA2MTU3ZTBkMjdlZWY2MTM5NGFmZGQ2YzgzYWQ0ZWQxYzg5MGYxMDRkIGxlZ2FjeS10cnVuaworNTg1MzAgZGE0NDMzNGViZWEyNDUyY2IyMzAyYjgzOGVhZjhjZTA2MTZlMTdkZCBsZWdhY3ktdHJ1bmsKKzU4NTMxIGYxZjcwMWMyMjRjMWMwYjllNGJkZDY5ZTRiNWViNjAwMjFmYjBiNzIgbGVnYWN5LXRydW5rCis1ODUzMiAyN2E0ZDIyNGVhMWI5MDlhYWNiOGFjZjg5ODBhOWM5OTZlYmE3OWFiIGxlZ2FjeS10cnVuaworNTg1MzMgYjgzMzQ2ZjNiZmFmZGE0YzNmMTcxOTJhMzFmN2UxMTZiM2ZmZWRlMSBsZWdhY3ktdHJ1bmsKKzU4NTM0IDE0M2FjYmJmYWZkN2M3MDZlY2NmODc5Yzk5NjA0YTI4MjY4NjVlYTEgbGVnYWN5LXRydW5rCis1ODUzNSA2ZGI3YmJlOGYyN2NlNjcyNDJlOTZmMDJiNjdhMGViYjU0YWFlYzEzIHB5M2sKKzU4NTM2IGQyMTY1ZGMxYjA4ZGZjMDY1MTk2ZGY0ZjhkMGQyNzZkYjJhYjI5ZjggcmVsZWFzZTI1LW1haW50Cis1ODUzNyBjYzE1ODM2YjY4MDhiOTk4ZmJlZDk0MTk2ZjY3OTBlYjI4N2ExYzBhIGxlZ2FjeS10cnVuaworNTg1MzggZTlhZjcwNjM4ODg4ZGZkMGZkMDljMWJmMWU3NTE4MzhmMzhiN2QzYSBsZWdhY3ktdHJ1bmsKKzU4NTM5IGYyNjc3ODQzMDQ3MDA0ZGU2MzYwMzQyYmU2ZGQ5YjY3N2Y4MmIxNDIgbGVnYWN5LXRydW5rCis1ODU0MCA0NDUwN2M0ZGVjMmI1ZjI4NDQ4N2NlZDMwNjE0ODE1ZjgzNDcwYmY1IHB5M2sKKzU4NTQxIGQzN2MwMDUxNDA2ZTY2ZTQ4M2Y5NTJiYWM4MmE5YzY0NGViM2YwOTQgcmVsZWFzZTI1LW1haW50Cis1ODU0MiA1NDhkMDZlOThmNTY0NWNmNzA2NDUwNTQyNWVmNTA0OWFkMjQyYzhiIGxlZ2FjeS10cnVuaworNTg1NDMgYmI1Y2I4OWVmZTE4YWU4YzBlNDU1NGRiZTdkMzEwNjFmYjYwMjk2ZSByZWxlYXNlMjUtbWFpbnQKKzU4NTQ0IDk2YWY0MWU1MGU1NjExN2NkNmVhYzdlN2UyNjk5NzNmYzE2M2Y0YjAgbGVnYWN5LXRydW5rCis1ODU0NSBiZGQ5MjQyNTE4MGY0YmRmMzNiYWMyYTQyMGYyZTc1OTA1ZGE1NWEyIGxlZ2FjeS10cnVuaworNTg1NDYgMjMyMGNkNGY2OGI1OGJhN2ZlYjEyNjg5NzExM2NhMTliYTJmODY3NCByZWxlYXNlMjUtbWFpbnQKKzU4NTQ4IDhhMDE2NzQxNjIyMzIwNTkyNWRmNWM1NDYwYmI0MmU5MTUzNjY2MzYgbGVnYWN5LXRydW5rCis1ODU1MCA4MDc0NGM4ZDM0ZDhiMTRjYzUyY2YyMTk0MDYyMGZlMTU0M2Y3ODZkIGxlZ2FjeS10cnVuaworNTg1NTEgZGQwM2FhNzQxZjU2ODg5YzUxMjYyOGY2MjZmNTFmMTJmZmJlY2EzZCBweTNrCis1ODU1MiBiMThmNjA5MmY2ZTAxNzdlZDI3ZWQ4ZWY2Y2YyMzY4YmQ5MzVlODhmIHB5M2sKKzU4NTUzIGEyYmI3NmQxMWQ2NmIzMTNlNGE5NThmZGU1MDI4MTk3Y2ZjNzgxNDkgcHkzaworNTg1NTQgNTdmM2YxMjZmM2Y3MDEyY2IyY2VlMTQyNzg1ZTRjNTczNGI1MzczYSBweTNrCis1ODU1NSA3NTkzNDM2MDU4ZGQ1MzEwMTQyZmY0NTJjMGU0YmI5YmZmYTM0ZWQyIHB5M2sKKzU4NTU2IGYwYmNjMTFjYTk2NTY1OWQ0MzFjOTI4YzJhN2JlYWI3ODg4MWZiMjUgcHkzaworNTg1NTcgZDM3OGFjZGMzMGVlZDIyY2U4ZDY4YjViZjc4ZmE1ZjM5NzZkNGJlZiBweTNrCis1ODU1OSA2NWZlMTk1NTE4Y2IyZmQwYmZmYTQ4MTkzNzc1NzJmYmJhMzIxOGYyIGxlZ2FjeS10cnVuaworNTg1NjEgY2I5NGViZDlhZmE3YTFhY2Y2Zjk1NWQ0ZmZmYWFlMDdlYzAwZmY2MSBsZWdhY3ktdHJ1bmsKKzU4NTYyIGEyMTQwZWI1ZmM2YWNlZjE0ZThkZGM5Nzk3NzQxYWYxNGE3NzU3YjAgbGVnYWN5LXRydW5rCis1ODU2NCAzY2I2Nzg2MjhhZjM4ZTg1NmNlZTNkMzZiODA2YzgzZGQxMGJlNGM3IGxlZ2FjeS10cnVuaworNTg1NjcgMjUyYjlkMjJjYTU1NWM3MGMyYjhmMjBjMDQ0YmJkNjlkNzQwZTA0NiBsZWdhY3ktdHJ1bmsKKzU4NTY4IGQ3Mjc5YzMyMWJiN2NjOGUyNGRjM2NhNWZmYTUwYjc5MzA3YWRkNTEgbGVnYWN5LXRydW5rCis1ODU2OSAyMDFkZDA5NDk5OTkwZWYxMjlhYTBlZTViNDhjNjZkNWE4Y2IyMjY3IGxlZ2FjeS10cnVuaworNTg1NzAgYzRjYzNjMjQ4OWEwNDgyOTUwYjk4MWQxZjE3ODk4YzcyZGM4YWE1YSBsZWdhY3ktdHJ1bmsKKzU4NTcxIDg4OTk3ZjA4MjE3NDlhZDBmZTE1NmM3MTUxYjIwZjM3YWQ3NzA2NWQgbGVnYWN5LXRydW5rCis1ODU3MiA1ZTQyMTE3ZjljYmNjMDEwNTM1MGIxNGIyOTkzNDdkMGViNTA0OTRkIGxlZ2FjeS10cnVuaworNTg1NzMgMjUyOTZlYzAyYjE5YzUxZmQyZDFmNDZlZTRjNTc2MGFiMWYyNGUwOCBsZWdhY3ktdHJ1bmsKKzU4NTc0IDVjYmExNGE1NjRmZGRmYWVkODAwMTZkNzU2MWViZDMwMWQ0ZTIzYjEgbGVnYWN5LXRydW5rCis1ODU3NSA4ZmUyMjY5MzFlZTcyMWFlM2RjYTExNWFkNGM4N2E2ZjI2YzdkNmY4IHB5M2sKKzU4NTc2IDdjMzVhNTkzMTc1NWZkNjVkMDBmODA5MDk0YzYxM2IxMjVhOTBhNTEgbGVnYWN5LXRydW5rCis1ODU3NyAxYmY0NzYyMzlmMzk1OWUyMGJjMGQwNTk1ZDUzNzMzOTM0MjYyNTY5IGxlZ2FjeS10cnVuaworNTg1NzggYTU3NjM1MTAwZGMzOTQ2YjE2NmQyYWU3ZDgwY2ViNThhZDRmYjZlZiBsZWdhY3ktdHJ1bmsKKzU4NTc5IDQ4MjIwZDY0NGM4ZTEwOWEyYzAxM2E0MDJmOWU3NzNmYzFiOTQ3MDggbGVnYWN5LXRydW5rCis1ODU4MCBmYWY1ZGU2OWU5NzcxZTY3NjZhMDg0MGFmNTIzMTA2NzhhYTkyMDkyIGxlZ2FjeS10cnVuaworNTg1ODEgYzVjOTdkN2FlOTBjZThmNGY1ZTdlNDhlN2U2NzFhMjVmY2Y4YjM5NiBsZWdhY3ktdHJ1bmsKKzU4NTgyIDRmNjYyYmEwOWYxZmJlMzg2MWZjZDVhZTg1YzBjMzUyNmRlMWJlMzMgbGVnYWN5LXRydW5rCis1ODU4MyA2ZGY5ODU3NDRkOTY3OGZhOGIwOGYyOWE5ZGM5Zjg2YTQ3MmE2OTg5IGxlZ2FjeS10cnVuaworNTg1ODQgMDMwNTYzNjVhMWI2NjJjYWYyODc2YzQzYWQzZmU1ZThiZTczOGIyMiBsZWdhY3ktdHJ1bmsKKzU4NTg3IDAwNjdhNmFiNDg1NGU3MTY1N2E1YmI5MmI3MmFlMjcxN2YyNmEyNmQgcHkzaworNTg1ODggOTAyMTI1YjU5NGNjODk5Zjg4ZTcwNTc5NzllZTlkOTQ1MDVhNTU1ZCBsZWdhY3ktdHJ1bmsKKzU4NTkwIDE3ODI1ODNmMTE1OGJmMzU5MDM1OTdmOTRiZmUyOGRiZWVkZTI1MDEgcHkzaworNTg1OTIgYTU4ZjMxOTM3ZGFmOWNkY2RhN2RjOTNlZmViNDFhNzJlYWZmNmNkMSBweTNrCis1ODU5MyBlODJkOWE4OGVkOWU0Mjg1MmM1YWRlZjFkNGMzNWFlN2E3OGEwYTM3IHB5M2sKKzU4NTk0IGI2YTI5YTBlYTMwN2QzOTM5ZGU3ODRlMDllYjIwYjk1N2JhOGI5ZjIgbGVnYWN5LXRydW5rCis1ODU5NiBiMTA1NDQ4MjdhZjcwYjM1NzAzYzJhNGZmM2ZiNDM5M2EzYmE4Nzc2IHB5M2sKKzU4NTk3IGEzMmU3ZWM5MzM5NGUxNTI1ZGVjY2ZhYjIxZTk2OWZiMWM5YzIyN2UgcHkzaworNTg1OTggMDQwODhhYmY0ZTRmZDAzZTc4ODU0NTZmZTM4ZDE3ZmMzZjg0NGI2YyBsZWdhY3ktdHJ1bmsKKzU4NTk5IDUzZWU4OTQzZDE2NThkYWFjM2E4MGZmODE5NzE3NTAyODhiYWY0ZmIgcmVsZWFzZTI1LW1haW50Cis1ODYwMCBkYzgxYmNmYzM1MWFlMDFiYTM3ZTNmM2I2Nzc3NDQwODdmYTc3YzY5IHJlbGVhc2UyNS1tYWludAorNTg2MDEgZWI5MDhhMTljMDVhMjRlMDgwMzA2NmI4NjVjNzUzOGM4YjNkYTE1MCBsZWdhY3ktdHJ1bmsKKzU4NjAyIDk1ZDhjOTEzZThiZjM2MTEyZWM3N2JhNjM2YzcxMWJiMWRkMTQxM2QgcHkzaworNTg2MDMgOTk1MjZjNDAxNDdiMTQ1YjRiYzIwYTAxNzlkYWJkZGJiNmNhYmFhMCBweTNrCis1ODYwNyBjZDViMzgzYTM5N2U2ZTIxMmRmNmZmYjVkMzI2YmRkMmEyY2FjYjI2IHB5M2sKKzU4NjA5IDQ0MWQ2MDlkMDk2YjVkZjY2MDNlMTRmNzQ4Y2JhNDc5NjI4NjI0OWQgbGVnYWN5LXRydW5rCis1ODYxMCA2MzRjM2Q0MDQ4ZTdkN2Q3MGU2NTE5NjNiMWM1ZDhhZWRlODFjOWM5IHB5M2sKKzU4NjExIGY5Yjc5NTRkNzg4ZDYwY2QwNGQ1MjRlZjIyNmY2ZmRhZGE4NzRiMWIgY3R5cGVzLWJyYW5jaAorNTg2MTIgZGE4MjMwZmFmMmFlYmJmYTMxODBiNDg4YWFjNTM4OWJiMmYyYWU2MyBweTNrCis1ODYxMyBjOWYyODY5N2UxOTk1YjkzMDBkMjA2NmRiNTVlYWJlNzRlMzM5NGI3IHB5M2sKKzU4NjE0IDc5OTA0ZTg0MWRmMzgwYzYwZGJhYzcwZjg5ODZiNGMxYmEzZTRmMDAgY3R5cGVzLWJyYW5jaAorNTg2MTUgMzQ3OTJiOWU0YjQyOGRlYjE0ZDY2OTlhZmMxYjdhNGZkODQ1NGYzNyBjdHlwZXMtYnJhbmNoCis1ODYxNyAwMDNkMzUyMTVlZjJhYzYyNjdlZmQxY2E0YzVjYTVkNzFmZjlkM2VlIHB5M2sKKzU4NjE4IDBjYTFkMjliODNjMmI2ZGE5ZGFhZTlkMmIxNzBiOGRhOThkZWZjZmEgbGVnYWN5LXRydW5rCis1ODYxOSAwYzc2ZTUzYzFkNjUyZTEzNzg4M2QxOWE3NWY1MWM3OTY4ZGJkNDhlIHB5M2sKKzU4NjIwIGEwOTgzZjU1Yzk1NzVjZWNmZmUwZDA0Zjk1NmFlZWU0MWMzMmJlYjMgbGVnYWN5LXRydW5rCis1ODYyMSBhNzYwYzFhMDdkMjZmMGE4ZjExNTY1ZjdiYTNlN2NlODJjMTczYjdjIGxlZ2FjeS10cnVuaworNTg2MjIgMzZiMmFhZjQ1N2I0YWUyYjg0MmNkZjFlZWQxODQ3ODNhYjU2MmFjMyBsZWdhY3ktdHJ1bmsKKzU4NjIzIDA4ZWUyNTZhOWJkMTE5MTY0MjMwMzI2ZmMyNTZhOTlmNzdmYWJmZTcgbGVnYWN5LXRydW5rCis1ODYyNCA3NDA4ZTFhZTk4YzRhMDc1YmNhOGFiZWNhN2E3ODZhMTc1YjRhMDNiIGxlZ2FjeS10cnVuaworNTg2MjUgOTc0ZTY0Y2MwODNkY2E5MjZjZDQzMWMzNTA1NDY0OTUyNjkwZTFmYiByZWxlYXNlMjUtbWFpbnQKKzU4NjI4IDNhMTRjOTA0ZGEyMzI3YzA0MTBkZDIwYTQ3YmZhMzliNDIyYTMxMmIgbGVnYWN5LXRydW5rCis1ODYyOSA3MzIyNzVjNDAyNmI1MjBiYTRlMTY0ZTZjZGM5MGNkNTIzMDJlODAwIHJlbGVhc2UyNS1tYWludAorNTg2MzAgZTUzZDk1YzNjMGM0ZGIxNGU5OWViYTNhY2MxNjk5ZjJiNjU2NGUzZSByZWxlYXNlMjQtbWFpbnQKKzU4NjM5IDNkZjVjNzQ2MTYwM2NmYTlhNTViZWM3OWRkMGYxNTdjYjc0ZTU4MTcgcHkzaworNTg2NDAgMzNlZmJmYzI4ZDJiMzc5YjUzYzUyZDI3N2NjMmU2YjQ3Y2VmZWU5ZCBweTNrCis1ODY0MSA1OTBhMWJlZWVmODlkMWRhYzFkY2IxMjRiZWYzM2NhYzdkNmEzN2M4IGxlZ2FjeS10cnVuaworNTg2NDIgN2M3YjQyZjY0ZjQxZDQxOGQ4MzU4NGQ4N2U2NGIyYmM3YWM5NTJjNiBweTNrCis1ODY0MyBiYWMzNDNhZGZmZDlkMjczMmY3YmE0MWVjNmRmMTJmM2JjMzI0MzA3IGxlZ2FjeS10cnVuaworNTg2NDUgM2U2MzQ4YmM5YTI4Mzc0OTEwNDllYmM2OWE3YmIxOGQ4NTI5MjExOSBsZWdhY3ktdHJ1bmsKKzU4NjQ2IDhkZWE1OTk3OWJhMmU5ODhiYWVkNTJlZTVhMjNmZGI3NDlhOTQzZWEgcHkzaworNTg2NDcgNTdjMGQwODg0MzA2NDg1OWVlMWRmY2I2YTdlMWNjZWRiYTg3YmIyYiByZWxlYXNlMjUtbWFpbnQKKzU4NjQ4IDUxYmExMmUwYTFkNTBlMjczMzExZTc0NmUxMmU2MmUxZThkODUwZTEgcHkzaworNTg2NDkgOGZlMjRlNWVlZWZmYjk5ZDNiYWNjNDk1YjliMDYwN2M5NzhlM2MzZSBweTNrCis1ODY1MCBkNjYwMThlZDNkZWQ1OTBiYTFmNmM2NjcwNWVjM2FiMDA0MDM3ZGVjIHB5M2sKKzU4NjUxIDkwMGVmMGViM2Y5NGI1MDEyNTAxZjQwMjhmOWFlZGYxMTU5NjAwOTUgbGVnYWN5LXRydW5rCis1ODY1MiAzNWRhOTE1YWRlZGNhY2MxYTAzMmE4YTg0YjVjMTdlNzU4N2VmMTVmIGxlZ2FjeS10cnVuaworNTg2NTMgODIzNzcyZjFkMmJlOTA4YjVjNTQ5MmUwYjc0YjM4YmJkYjk5MmI5ZSBsZWdhY3ktdHJ1bmsKKzU4NjU0IGZlZDY0MzE0ZDk0NDk4M2ZiM2ZmYjgzMzgwOTQ5OWI3YmE3MjJiODUgcmVsZWFzZTI1LW1haW50Cis1ODY1NSA1MzA1NzNjZDRmN2E3NzgxNjhiZDA2MWRmYWNhOGEyMDBmZTk4MjdkIGxlZ2FjeS10cnVuaworNTg2NTYgNTA5YTczNmViZGI5NzA2MjA2NmExZGE1NzIwYjRmZTliMjkzMGY2NSBsZWdhY3ktdHJ1bmsKKzU4NjU3IGE4ODE4ZmZlMjRkMTFmMTAxNDVjMzUxZTRjNjhhOTVjNzU4MDg5MjQgcHkzaworNTg2NTggNzA3NWQ0NjRkOTM4NDUzZmIzODY0Mjk0Njc2NWZhZjUxZGJlM2M5ZSBweTNrCis1ODY1OSAwNmJkYjg0MzllMjk4NGMyNzY0NzYwODI5NTAwMzllOWM4ZTMxN2FiIHB5M2sKKzU4NjYwIGQzYmYwMDlmYmJhOThkM2I3YzMyMmRjZjFlY2VhZGU2M2I4NjhmN2YgbGVnYWN5LXRydW5rCis1ODY2MiA0YmI2YTBjMzUzYWI2ODZlNzY1NzEyZjI1YjE2NGVkOGFlMWQxOWRmIHB5M2sKKzU4NjYzIDViMTJiMGJkODE4ODBlOThmMDBlOWM5NzM2MmFmZGI1N2UzNWQ0YTEgcHkzaworNTg2NjQgMTk5OGVlMGVmZjJjMTI2NmE5MDc1ZjgwYzJmZDIxNDFhMzU3N2M0OCBweTNrCis1ODY2NSA2YWI2NGY2YjRjMDMxN2U3MTBhYmE3OWUwNWMxYzhhNmZhM2VlMzcwIHB5M2sKKzU4NjczIDA2NTMxODQ4YTM5NDZlYWU4OTkzYTRjNGVkYWMwODkxMTBiZDBhOTAgcHkzaworNTg2NzQgNjRjZTNiZjNhNmE5ZDM4ZGM4NTBjNjFhMWQyNjdlM2MyNGJlZTYzZSBweTNrCis1ODY3NSBmYzZiYTA4OGJkNzdjYWIxOGQwOTI4YTcyOTg3MmQ5MjkxOTJkNGVlIGxlZ2FjeS10cnVuaworNTg2NzYgNWE0ZThiZGFkYjg1MDRjYjdhMTdhZDExNzJhZTBiY2VkMTU2NDk3OSBweTNrCis1ODY3NyA1MGEzNDc1ZGI0NjZiN2Q5ZDNiYTFkZGNhNzI3MWE2MDM2NWQ4ZTMwIHB5M2sKKzU4Njc4IDA1MDJhOGM2NGVmMjBlZmY4YmI4OWM1NTU3OWNjZDZhNzQ5NDEyNmIgcHkzaworNTg2NzkgN2ZiODY4MDIzZDc1YWVmODVmYjIxZTFlMzQyMGFlODJhZWVjMjQ3NiBweTNrLXBlcDMxMzcKKzU4NjgwIDE3MjZhNGM5MTZmMDEzMTQzZGIwYzgwOWVjNmJlZGY4Yzk3YWE5Y2QgcHkzay1wZXAzMTM3Cis1ODY4MSBmYTdjZDhlYWIyZDJjM2UwN2ViYWFkMDNkM2FhMjljN2ZlNmExYmEwIHB5M2stcGVwMzEzNworNTg2ODIgYjEwMmI4MzYxZDVlOTNjZWY1NDFmNzk5ZWFlMzNkYTNjOWZkMTEwYSBweTNrCis1ODY4MyAwNDBmNTIyZmVlMTEyMzhmMjA2YzhhMDYxYjBkZWE3YWY2ZDBmNTRmIHB5M2sKKzU4Njg0IDIzZTZlYzFiNWYzNTBkNmY1NjU0Y2E3OTZkZWJmMzNlMTQ3YzFiMGQgcHkzaworNTg2ODUgZmZhYTZjZTRiZmI0Nzg5YmVjZmI5ZjZmNzk2N2ZhNmIzMzVkMDkyNiBweTNrCis1ODY4NiBkNDZhMzFmNWM1ZGYyNmIwOTEzZDYyZTNhZDhlMzNlNmIwNmIyOTMwIHB5M2sKKzU4Njg3IGZkNGQxMGU5OTNiNzljNDM4ZWIxYjJjNjcwZWE3ZDU4NWE2NTdiNjkgcHkzaworNTg2ODggOTdlMmU4OWM2NTkxMmYyZDYyMmE1NTkwMzM5Y2QzM2FhNDUwZWE3OSBweTNrLXBlcDMxMzcKKzU4Njg5IGUxODlkMzJiMzcxOTA2OGJhZjZiZjI3ZWRiNjQ3MDI2NmQ0YTAyN2MgcHkzay1wZXAzMTM3Cis1ODY5MCA2MWJjODJkZjM1ZmY5MDZhNzM0ZGQyYjNmN2E1YzgzNWNhMDg0NTAyIHB5M2stcGVwMzEzNworNTg2OTEgNWQwYmU5N2YxNzA0MGNmM2U0YmRjNzBkMTQwN2I1NDg5NzI0NDhjOCBweTNrLXBlcDMxMzcKKzU4NjkyIDJlOWVkY2RkZGQ0NDNhNTNjZDhmZDVhNzUzNjVkYTY1ZjM5ZmMwM2MgcHkzay1wZXAzMTM3Cis1ODY5MyBkYWNjNzMwYzcyOThkNTkwMjYxOTE4M2MxMjdhYjY2YjdkZGI4ODFkIHB5M2stcGVwMzEzNworNTg2OTQgOGZkM2RiNjUzMzE4ZWJlZGQ4MDY4N2JmMGRjNjQ0YWY0YWYyNmQzOSBweTNrCis1ODY5NSBkYzk4MTYyZWY4NDRmMGE2ZjFkMmRlMDY5MDEyMjY1MTU1YTAwODkwIHB5M2stcGVwMzEzNworNTg2OTYgZjViYzk0ODFmODgzZmNhNjRiOTVlM2FmMjdkZjY4MTNlMjNlZDcxMCBsZWdhY3ktdHJ1bmsKKzU4Njk3IDYwOGVlNGI4MjBhZmE3MjBjZGEzODEzYmVlOGZjYmEwMjFkYTQ3MjMgbGVnYWN5LXRydW5rCis1ODY5OCAzNjU5MTNkN2FmN2Q2NWQ0OGJkZjQ4ZjY3ZTEzMTI2ODVmYWI3YjA3IGxlZ2FjeS10cnVuaworNTg2OTkgOTFmZDY1MDQ1ZWVlNjhhZGJmODRlZmYzZDY2MDZkNjQxOTc3YzAwYSBweTNrLXBlcDMxMzcKKzU4NzAwIDczNjBjMTJiZDgxZDQ5ZWQ4YmFjNTFkMGY3NzU5M2MyMjQ2MDhlNDEgbGVnYWN5LXRydW5rCis1ODcwMSA1MWE3Mzc0MTA1YWM0YzNmNWNiNTMxODcwMjhmYmIwZjY5YmNlZTE3IHB5M2sKKzU4NzAyIDNmNDY3YWNjZWNkMmU0NjJiMGQ3YjViZGY4ZWE1YjZkZmNhODk1NDIgcHkzaworNTg3MDMgMTJkMjBmZGZlYTYyZjUxOTc0YzUwNWM5OWIyMjUzYjI5NjZjNWZmNSBweTNrLXBlcDMxMzcKKzU4NzA0IGQ4Zjc0NDJiOGNhZTg2NmZhOGZhNTEyZjk3MzAwODgxOTQ4ZjUxN2YgcHkzaworNTg3MDUgYzM0NzIwNzc3Y2I2NmZmMzRhYTRiZGU4ZWRiMDdhZGM3NDY5NzBkYiBweTNrCis1ODcwNiA0MGUzYTJkYjVkOWUzMDNkZDdhOWVlMDU0MTgwYzE4MDljMjMzNTRlIGxlZ2FjeS10cnVuaworNTg3MDcgMzIzNTQ4NzBkZmIyYmI4ZmY2MTI2YTZjYzFlMzVhNWRmNDM3M2U3MyBweTNrLXBlcDMxMzcKKzU4NzA4IDc2YTU1ZjdiNTA2MDA3NTJhMWEyN2E1MWZiZDg3NTNhNjczMTZmMmIgcHkzay1wZXAzMTM3Cis1ODcwOSAxMjRjYmYxYTBlM2VhNDgwNTE5MmU5ZTg3YzVjZThiZTdjNWI0NDdlIGxlZ2FjeS10cnVuaworNTg3MTAgYTVkZDI3OGIwYzFmYmE0MGRkNzlmNGNjNDc4ZTQ2MDQ4OTU0ZWJhYSBsZWdhY3ktdHJ1bmsKKzU4NzExIDAwYjEzNmI3ZGE4NDRkMzJkZTg4ZDJlYWE1ZDkyMWEyZmE5M2RhOGQgcHkzaworNTg3MTIgNDdjNTUzZWI3NWQ5MWQyNmJhMjYyNzU0NjNkYTk5MWYwMjRiNDI0ZiBjdHlwZXMtYnJhbmNoCis1ODcxMyA4ZjdmNmM4NTBkYmQyNjJiNjljMmI1M2M4NGYyMDljZTJlOWM2ZDY1IHB5M2stcGVwMzEzNworNTg3MTQgMjZmZTcwODlmMTRhZjFlYmQyMzdkYmZlNzFkZGJkMzVkMDIzY2RkOCBweTNrCis1ODcxNSAzMzQ4MDc2NWY2NjkzMDFmYjQyMWZiNTBhMWQ3ZDMwYzAzM2ZkMTE4IGxlZ2FjeS10cnVuaworNTg3MTYgZTJmZTU4NjA0Y2IxY2ViZjc4ZWI0NjRhMDBiNzkxZjQyNTEyYmY4ZCBsZWdhY3ktdHJ1bmsKKzU4NzE3IDhlZGViNTE2OGJmNTE2NjQxNDY3M2ZkOGI3YWI3ODkzYzVkNWIxMGUgcHkzaworNTg3MTggYzEyMTRiZDZlZDE2MDUyZTk5ZWUxZWNlMDE1NDY5ODU0Mzg4ZDJmYSBweTNrCis1ODcxOSBlNTEwYjcxNmJkODBiN2E3NjljZmQ1YjliYzEzNDY2YWE2YTg4OTI0IHB5M2sKKzU4NzIwIDA0NjgyNjg3ODE3ZWI5NDRhZjA5OTQ4YjU3YjFjZjFkY2E4NzY1ZjUgcHkzaworNTg3MjEgZTkxNTA2YjRiODVmOGFiZDAzZWY4Zjc1M2JhNDRiY2U4MDMwNGU2NSBweTNrLXBlcDMxMzcKKzU4NzI4IDc4YThhZWE2Y2IwYWU1MWUzMmQ1ZmMyNjJhMDlkNjNmNTA1NGQyZjQgbGVnYWN5LXRydW5rCis1ODcyOSBlMjM0ZDk3NmI1ZDQ3YjcwMDE3YzliNDNmNzJmNzdkNTk2M2U2NGI5IGN0eXBlcy1icmFuY2gKKzU4NzMwIGUzYTAxZjQ5M2U5NGYzNTgzODA4YTljZGI1YjQ2MGMwNDcyY2U1ODIgcHkzay1wZXAzMTM3Cis1ODczMSA0MzFjNWExYTYyOTAxMTBkMTBlZTlhMzBjZGJkMDAwYjU0ZDFhZGIyIGxlZ2FjeS10cnVuaworNTg3MzIgYmNmNjI5ZTQzMDgyNzgzYjI1MmVlMGIzNTAxMWFiOGZlMTMxOGQ2OCBweTNrCis1ODczMyA1MjUzMWI0ZjUzNWQzYjk0OTY5ZWMwNzRmOTA5ZTA5MmEzOWExMTI2IHB5M2sKKzU4NzM0IGVlYjM3MjgxODk1OTU1N2YzZmZkNGNlODgzMDAwMWQ4MzZmN2Y0YWUgcHkzaworNTg3MzUgZmU1NzBjZDViMThmMWYyZDY2NzBkNTdiOTVjOGFkNDUzYjEyMDYyYyBweTNrLXBlcDMxMzcKKzU4NzM2IGQ0N2EwNGEyZTBiYjQ1ZTVlOTE2NzkxNWE1NDViNmQyYTljNmJiNTIgcHkzaworNTg3MzcgZWE2NTAxMTM0Mjg2OGM0MjJiOWU3MjhlOTk1OTk2NTFiNzA0YzQxMCBsZWdhY3ktdHJ1bmsKKzU4NzM4IDYwZDk2MTIwNDYwYjFjNDcyZWE5ZGY0MzI4ZjAwZTVhZTc3NDg5YzAgcmVsZWFzZTI1LW1haW50Cis1ODczOSBlNDIwYWE3ZjUwY2I1MGRiMzU0NTQ4YzkyZjkwMGU5NTBkOGI4ZjQzIGxlZ2FjeS10cnVuaworNTg3NDAgM2U3MzhlNTJhM2NlYjExYmJlYTQ1NzM0MjVmNTc3NzAyYTY2MDZmYiByZWxlYXNlMjUtbWFpbnQKKzU4NzQxIGJlZjg4ZGE4MjFhNGMyYzcyNjY5YTBlNGNkNTM2ZmQ1ZjNmNmUzZTcgcHkzay1wZXAzMTM3Cis1ODc0MiBhMmY5ZTZjZWYwMmY3OGE3YTZlNDg3MGZmNTg1NWIzMjNkYmRlOWIyIHB5M2stcGVwMzEzNworNTg3NDQgZmJjNmZjNmRjNGZmZTFiMmMyNzQ3YzcyNTBhYjU1ODE3YTc1OThhOCBweTNrLXBlcDMxMzcKKzU4NzQ1IDQzMWJjOTA5NDAxOTU1YTIxMDNjZDBjZDZkYWUzYTZhMzkzYjE5MDYgbGVnYWN5LXRydW5rCis1ODc0NiAwMjFjZWUxODlmOWUxYWJlNWI3YzIwMDA3MjIxOWMwNTAwM2MwZmE1IHJlbGVhc2UyNS1tYWludAorNTg3NDcgZmQ2ODVkN2U4NTlhYTEwZGJkNGQ2ZTM5NDVjODQ4Yjc3OTIyYTk2OSBweTNrCis1ODc0OCBmODdkYzZhMDRjZWFiYTMwN2MyMDhiZjJjMWIwMmNiYTA4NTg4ODllIHB5M2sKKzU4NzQ5IDNlNWVkZjE5ZDVmMDVkMmZmYTFkMDIxZGE3ODE2MTVmZDJkODVmMDQgcHkzaworNTg3NTAgYmQyZjhiYjExYmNjMzYyNTFiMWYwYzQ0MGI1NTY4ODYxNzk5NjcxNyBsZWdhY3ktdHJ1bmsKKzU4NzUxIGU4ZDAwM2IzODcwZjAzZTE2ZDUyOWY4ZTNlMGZmZjg2ZDQyNWY5ODIgbGVnYWN5LXRydW5rCis1ODc1MiAzZDg2NjU3OTExN2RhNzA4OTc4ZGQ3OWE3ZDJiZWE1OWUwYTk4MzYxIHB5M2sKKzU4NzUzIDc5ZjVjYTllZTE1NDljMTVmNTU4OGNhM2U3ZDNhMDExM2I0Y2Q5ZjYgbGVnYWN5LXRydW5rCis1ODc1NCAwZjc0MWM4OWQ4MDNhYTM4ZTI3N2FhZmQ1NGQ5YTM2YWRiZDNjM2Q5IHB5M2sKKzU4NzU1IGMwMGRjNzU4NjcxNDNlNzk4OTAzZGI5MmY1YzYxNWQ3NWQ4OWQ2MmIgcHkzaworNTg3NTYgMmI3YWFkYmNlYTM0ZjY1ZTQ4MzUzYWU2OWU5ZDhjODYyOTFmZWJmMCBweTNrCis1ODc1NyAxNTdiYjAyODkyYmM5NGY3MDliNDZhZWUwZDhlM2U3NzNkZWFhNDhmIGxlZ2FjeS10cnVuaworNTg3NTggNWExY2QzY2EwYjM5MWNiN2U0NWU0MWQ2ZjU1OWE1NWI1MWYyMmEyMSBsZWdhY3ktdHJ1bmsKKzU4NzU5IGMxOWI2ODQ5NDExYzAzMjQwODc2MzllNGMwODc5NWI1YmI5ZjU0MzcgbGVnYWN5LXRydW5rCis1ODc2MCBlZDNjMmFhYTAwMmEyYTdiMDliMTQxZjBkYjc1NjFiZjM4MjllMmJhIHJlbGVhc2UyNS1tYWludAorNTg3NjEgOTlmZjlkY2YzNzYwZTEyOGQ5ODlmOTdkM2I0Yjk5ZmUyODA3NDI2NCBweTNrCis1ODc2MiBlNWViOTNhMGEyMGUwNTIzMWU4MjhhNWE1MmE1NTk0ZjgwZjViOTkyIHB5M2sKKzU4NzYzIDMyNzY3YjRiNzkyMWE5YzllOWM2YzJiOWM0MzJjNWFmNjNlM2JkYzIgcHkzay1wZXAzMTM3Cis1ODc2NCA4YWMyODRiNjVlMzdlMDY4Yjk4MmE3MjJlMmM0NDUyNTBkZTAxY2FlIHB5M2stcGVwMzEzNworNTg3NjUgOGE0MGI4MzFhYjY4OTljNTA0OTM5NDQ3NTk3ZjU3OTZiOGVjMjc5OSBsZWdhY3ktdHJ1bmsKKzU4NzY2IGM0NjI0ZGMwZDQxYjEwN2JiYWFlMDhkOTM4MDQwOGJkYjdiMDM1ZjkgbGVnYWN5LXRydW5rCis1ODc2NyA1ODkwZDUxMGFhNmY3NDY1MTg5MWU0NmQ5NWVmMTEwZTlmOGFjZmIxIHB5M2stcGVwMzEzNworNTg3NjggODk0OGY4ODFlNDAzZmIyZDUxZTVhOGNiNDA3ZDI5ZDU2NzEzN2NlMiBweTNrLXBlcDMxMzcKKzU4NzY5IDI3NDg2YTAyYWU2NGZkNWE4OTUzNzUwMmU4MTI5YTdjMDk2NWM0ZmIgcHkzay1wZXAzMTM3Cis1ODc3MCA4NzBmNzA1NjBjOGYyODkxYjM0MGU5MThlZDA3OTQ4NGRmYWMzZWYxIHB5M2stcGVwMzEzNworNTg3NzEgYjZjOGE2NjljNzljYTM2NjA4ZjA4MWY0MGZlYTI4MzgzNTRjYmRjNyBweTNrLXBlcDMxMzcKKzU4NzcyIDA0YmU4OWZhNzQ5N2MyOWUyYTNiMDUxY2ZmNjgxMmIyNjMwOTEwNDIgcHkzay1wZXAzMTM3Cis1ODc3MyBkN2FiNWFmM2M5OGVhOTY1ZTU2ZjBlZjAxNDg5MjQwYmQ4OTk2MWQwIHB5M2stcGVwMzEzNworNTg3NzQgYjRlOGU1MjNiODgyZWUyNmQ2ZTE3NGYwNDVjM2E2NWUyY2YxODgyNyBweTNrCis1ODc3NSA1YjNiZTRhYjJmZTFkMTFlMzNhZGMxZTUwMzRkMWU0MDlkMWNkMTk1IHB5M2stcGVwMzEzNworNTg3NzcgZWUxYmM4MzRkOGM2ZmNkNjUwNTM1NmM4ZjgwZjZmNmQwNzgzZWRmNyBjdHlwZXMtYnJhbmNoCis1ODc3OCBjNTBlNmY5MjQxOWYzYTAyZjBkMTc2OWMxMDRlZDA3NzJlNmY2N2U4IGN0eXBlcy1icmFuY2gKKzU4Nzc5IDExYzJmZGU3OGQ1NzcxYjczYzJhZDkzZmFjYTQ3ODllZDBkNzc5YWEgcHkzay1wZXAzMTM3Cis1ODc4MCA4OTA0YTBiY2JmNGZmOTIyNmFjOWM2ODFlM2U0OTc2MzM0YjIzMGZjIHB5M2stcGVwMzEzNworNTg3ODEgMmE5Mzk0ZmI1MGFjMTZjNzk2N2I2MDljNTFkNDUxYWQ4ZThjOTkwZSBweTNrLXBlcDMxMzcKKzU4NzgzIDhjN2RhYWMwZDRiMGIzZjQ0NmJjNzJkNmE4M2RiMjViMzNkOTE2OGIgcHkzay1wZXAzMTM3Cis1ODc4NCA1ZmNiNjYwMmM0OWE5YzVkYzExNGRjOGYyZWI2N2EwMWE2NDRjNTA1IGxlZ2FjeS10cnVuaworNTg3ODUgYTdmOTVlMmI5MzU4MjRjYjFiYmNmYjI3YzRjMjllZTIyMGJkZDc0ZiBsZWdhY3ktdHJ1bmsKKzU4Nzg2IGI2MTA4Mzc3NGMwOGM0MDU0Y2MzY2M4YTY0ZGFiMjY3OGMyYzA4NjAgcHkzay1wZXAzMTM3Cis1ODc4NyAwNjA0NmQxNzkwYjkzMGI5NGQ1Mjk5ZTlhOWIyODdkNmQ0Mzg5MTkyIHB5M2stcGVwMzEzNworNTg3ODggOTBkNWQ4NGNhMjdkODFmNGJiYTg5ZmZkNDkzN2FmYjMwNmRhMGNjMiBweTNrLXBlcDMxMzcKKzU4Nzg5IGE5ODIzNDQ1MTY2OWU4NTIzMjFlMGRmMzE3OGY2YTJmZGY5ZjQ0YjUgcHkzay1wZXAzMTM3Cis1ODc5MCA2ZGE5MGE1YWU5ZmFhMDM4YmFmMTk1MjYzZWYwZTA5MmM1NWFmM2ZmIHB5M2stcGVwMzEzNworNTg3OTEgNDI2NGEwN2EzOWQxM2Y2OTQ2NTlkYjI2ODM4NWE1MjI3ZWIwODJkNiBweTNrLXBlcDMxMzcKKzU4Nzk0IGEwMzBlY2VhNGMyNGI3NWNhYWY4ZWRjMzE4ZTlhMTdlNTI0YjRhZGIgcHkzay1wZXAzMTM3Cis1ODc5NSAyODAzZTk2Y2M2NGFmOGM0MTcwY2QzZDAwZjA0YTc2MGJmZmE0YTBlIHB5M2stcGVwMzEzNworNTg3OTYgNGIzNjIzNTY4ZTZjZjg0Yzg5YjUzNjg1ZDIwOTVhNzU1M2I1YTI2YiBsZWdhY3ktdHJ1bmsKKzU4ODAwIDg0NGFjMmNkZjdhOGUwNTkxMWRjNGE2OWQyZDg5MTVlYzM4MmEzMmIgcHkzay1wZXAzMTM3Cis1ODgwMSA3YzQzZjRkY2M3YzdjMGI4NjA5ZTQyYWI0Y2E4N2I5OWQ1MmI3ZWE3IHB5M2stcGVwMzEzNworNTg4MDIgNmQ0NmZlYjE2NGI2YmRmNjdjYjgzNWNmMGIwYzFkNDBjNTMzNDMwMiBweTNrLXBlcDMxMzcKKzU4ODAzIDAwYzk4NDY2NjE1YjIzYWY1NjgzZTZmMDliMzE5ZWYzMzNiOTI0MzIgcHkzay1wZXAzMTM3Cis1ODgwNCA4YmIzZTc3NjhjYTY4ZmYyMzhmZmRmZGYzNmZlNzMzOTMyNTAxZGIwIHB5M2stcGVwMzEzNworNTg4MDUgYWQ4YzNmOWVjMWIyOTc4NjJhNjQzZjkwMjlmNzk0NTMxYTdjYmQ1NCBweTNrLXBlcDMxMzcKKzU4ODA2IDdlZGJmMjU4Y2FkMDAxMTkzMjM5NTgyNmMwY2E1MmY2ZjFkNjg5NTUgcHkzay1wZXAzMTM3Cis1ODgwNyAxMTlmODQxYmI4MTY0YWRmYjdjMGRlYzk5NzllNDEzMzU4ZTczMDkzIHB5M2stcGVwMzEzNworNTg4MDggMDExMzVkZGQ3MjZkY2E5ZTE5ZmZiNjRjYWIxYmQ1OTIxMzg4ZDg0OSBweTNrLXBlcDMxMzcKKzU4ODA5IDM1NzUyODQ4NTc0MzUzMjgyY2VmMmZiMWQxYjNiYjY2MzhhNGRiNzIgcHkzay1wZXAzMTM3Cis1ODgxMCBiNDliMzEwN2U0MjAzMGNiZGY3YmZlYjgwOTRhNTk3OGMxYWRiYTMyIHB5M2stcGVwMzEzNworNTg4MTEgYThlN2NiOWUzN2M5NDVkMTJmMDM4MDRlNGQ5YTE3NGRlMDBlNGZlZSBweTNrLXBlcDMxMzcKKzU4ODEyIDE0MmYyNjk0N2FiYTdkODQyMTE5YjA3YzQ2NjFkNWI3YzFhNjVkYjcgcHkzay1wZXAzMTM3Cis1ODgxMyBkMjQ5NTQ1YmE3OTIyNGE0Y2IyNjhmZDcyZGU0ZjU5NDk4YjE3MGQ1IHB5M2stcGVwMzEzNworNTg4MTQgY2ZjZmFkODdlYjdkMGY0ZTEyNzZiMWRiN2I4MDQ0ZDEzZWU3Y2Y3YSByZWxlYXNlMjUtbWFpbnQKKzU4ODE1IDcwNGU2NzExZTUwZGNlNWU2MWEyNzUwMGRkNzI0MzVlYTc4MDRlZTggcHkzaworNTg4MTYgZDJiYTJiZjRlNzZiYWRhNTg0YTVmNTE4Njk1MzkzMDI3MDE2NDM5YSBweTNrLXBlcDMxMzcKKzU4ODE3IDMxN2JhNTNjZDQ1YzhlNmViMGJhNWY3NDI0MDllNjgyNzkwZjczZDUgcHkzaworNTg4MTggNTIyYmJiOTAwNWE0MTdkY2QxN2VkYTljNjI3NGRmMTVlNjEzNGY0NyBweTNrLXBlcDMxMzcKKzU4ODE5IDJmZjBlODFlNjhmY2EyMzA2ZTUwYjdhM2M3NTdhMTAzMTdmNTM4NTIgcHkzaworNTg4MjAgYTQxNDBhMjhjM2U3NjFjYjIzZjdlYzE1ZDFlZTViOTQ2NmJlOWUzZCBweTNrLXBlcDMxMzcKKzU4ODIxIDg3ZDM4ZjQyZDE2MzQ0MGNhNDJjNDZiZjY4ZDVjZjBmNWQzYTVjNWYgcHkzay1wZXAzMTM3Cis1ODgyMiA2ZTQ5MWQxMjc2NWM1ZjdiNGNmMjUxYjIxYjUzNGY0OWFkNjNmOWZjIGxlZ2FjeS10cnVuaworNTg4MjMgNDQ5MGYzMzViYmNkMzhiYjcyMGY2OTgyODQ5Yjc1NGUyYzhhM2EwNyBweTNrLXBlcDMxMzcKKzU4ODI0IDZhZGM5OWE2ODg4ZmRlZDBkMjdjMzU1MGM5ZmRhZmRmOGZkZWE5MDYgcHkzaworNTg4MjUgOGZkNjk0ZDBmOTAyYjg2NDdiNGNjMGUwMzRkNTI5YjNiNDQ0OGUxMyBweTNrLXBlcDMxMzcKKzU4ODI2IDBjNTE3MTc5Y2I4YzQwNWM1NjgwMWM2YjhhYmJmYWZjM2VjYWMyYTggcHkzay1wZXAzMTM3Cis1ODgyNyA5MjFhZjdmMjc2MDBmN2M0OTQzOWNlNmEwNTJlNzQ4ZDFjNzZhMjU5IHB5M2stcGVwMzEzNworNTg4MjggOWRlMDcyNzViMDA4N2E2NmVlNjYyM2E5MWY5Yzc3OGU3NmI4YTQ3YiBweTNrLXBlcDMxMzcKKzU4ODI5IGZkMWMxMGQyMWM5ZWU0MzNkNTFlODI1ODU5NzA5NzUzNjU5OWQxYzEgcHkzay1wZXAzMTM3Cis1ODgzMCAzY2JjNzhjM2E0MDM1NDk1ZTRiMmYwNDczODdkYjhkNzdkNDk0MzFhIHB5M2stcGVwMzEzNworNTg4MzEgZjYxYTBlZTc0NzZmYWM2MTIzNGJlYTA3MzBjYzg2YjRiNjc2NzRkYiBweTNrLXBlcDMxMzcKKzU4ODMyIDQ4ZTc3OTIyNDExZDljNWE1OGNjZGM1YTM0MzNjYjlhNDYwZTQyNjYgcHkzay1wZXAzMTM3Cis1ODgzMyBiM2Y4NmM0MWQwYTNhMDcyNWM4OGMyNDMxODM1N2QzNmFlYjFjMDRmIHB5M2stcGVwMzEzNworNTg4MzQgZjdiNDUyOWQwOTg0MmEzZDZkYTkxODMzN2RmNDAxYWJjNWExNjM3ZSBweTNrLXBlcDMxMzcKKzU4ODM1IDE0ZGZlMmYxMzU4MjMyOTllNzg5MGEzNTYyYzhjYWRiMDYyNDMxMzggcHkzay1wZXAzMTM3Cis1ODgzNiBlOTAwNjVlMTcyMTIwMjA3ODZiMjUxZDM2YzRhZTQxMGJmNGIyZDc2IHB5M2sKKzU4ODM3IDY1OGNkMzRhOGM1ZGJlMTk2OGNjOGU3YWNhYmZjOTIwNTdkNjIzODcgcHkzaworNTg4MzggZGUzYjYzZjhiMTdiNmNkZTY0YTFmMTAxNzQxNWViMTkyYTljZWM5YyBweTNrCis1ODgzOSAwM2MzYTU0MDcyZDkxZWY0MzFiYmM1NzgxMjY0MDMyNTQ5ZTI4YTdmIHB5M2stcGVwMzEzNworNTg4NDAgMTg5MTI1N2RmZDExM2RhNjgyMjQxNzNiZjM3YjY3MTk1ODFlM2E1NyBsZWdhY3ktdHJ1bmsKKzU4ODQxIDA5ZjkyMmM0Zjg4NzI1ZTZhZDdlOTU5MTRmOGY2YWFhNGRlN2I2YjggcmVsZWFzZTI1LW1haW50Cis1ODg0MiBlZjFkM2U4NzI5NmYzNjU4OTEwNTk3N2NlZjI0ZTdkZTlkZjg3MTUwIHB5M2stcGVwMzEzNworNTg4NDMgZjFmZGQ2YjcwMTVmMDA1YzUyYWYxMWYyMmNlODkzMjJmMjgwYTJlOCBweTNrLXBlcDMxMzcKKzU4ODQ0IDU4NWFkNzcxM2VmZWZlZTQyMGEyNjUyMTc5NTcwNDg5MWI4NzBiOTAgbGVnYWN5LXRydW5rCis1ODg0NSA0NDdkMmE0NTAxY2I3MmE2NWMxZTc4ZjQ3NjhiZGI2ODljNmMxYWQzIHB5M2stcGVwMzEzNworNTg4NDYgNTA0MjNmNDRlNmRjZmZjNWQyMWIxNzA2N2I3ODRkNmQ5YjIyZDAzZCBweTNrLXBlcDMxMzcKKzU4ODQ3IDcxZjg0MzU3NTFiYWE1YzcxZmUwODNlY2QzM2Q5NTg3YjI5ODU5YjAgcHkzay1wZXAzMTM3Cis1ODg0OCAxNTNjMGM3NDQxYWFmNmZlMTE0MDgxYjk2NmE4OGMwNmNkNGRmOTQyIHB5M2stcGVwMzEzNworNTg4NDkgNWFjZDlkZjI3MTA4NTI4M2Y3YzI4NzkwNTM1NGQ5ZTY1Njg5YmQwNyBweTNrLXBlcDMxMzcKKzU4ODUwIDUxYTBkZTliYWIzNzQ2YWYxYTVkN2Y5NjMxY2I2ZWU4YTVkNjgyNzYgbGVnYWN5LXRydW5rCis1ODg1MSA4ZDRlOWM0ZjAzNTBhMWUwYjRjYTFjMzY3ODAzNDMxZTg2ZTlkZTRhIGxlZ2FjeS10cnVuaworNTg4NTIgMzc0MjNjNzZlMjA4NTg2OGE5NmRkOGFiMDA1YWMzZjZjMzYxNGE2ZSBsZWdhY3ktdHJ1bmsKKzU4ODUzIDBmZDFjYWE4NTIyNWZhY2EyNTlmZTM4ODAxNmUzNmQ2ZTA2MDA0ZGYgbGVnYWN5LXRydW5rCis1ODg1NCAzNzE1Njk0NWNhMzUxNmU1YjdiOGE2NTU5YzczOGVkZDA5YTZkODc4IGxlZ2FjeS10cnVuaworNTg4NTUgMDFlNjMzM2YzYjZjZWYyMzg3OGJmY2QwMTAwODQ4M2YzYzg3Yjg0ZiBweTNrLXBlcDMxMzcKKzU4ODU2IDE5ODdkYmU3ZWI2ZTdkNzE3YzcwODRhNGIwMTA1Yzk1YzA5MmU5NmYgcHkzay1wZXAzMTM3Cis1ODg1NyAwOGVlM2M3M2I2YmVjYWMxNjI1NTA1ZDZiODZmODhmMTZkYzk5NzMzIGxlZ2FjeS10cnVuaworNTg4NTggNzBlZjBiNmE4MzQ1ZjEyMmE5NTk4NTBiMTY5ZTI1NzBmNmM1MGRlMiBweTNrLXBlcDMxMzcKKzU4ODU5IGZlOWMyMjMzY2QwNGY4MzI4ZjkxOTQ2ZjdiNzgyOTZjZmUwNGRkYzggcHkzay1wZXAzMTM3Cis1ODg2MCAzMDc4ODE0NmYwYTZjMDdhYjEzODI2ZGEwNDQxNzgyOTA3N2EyZjFkIHB5M2stcGVwMzEzNworNTg4NjEgNzc4ODIzYzBmZmI2Mzk5YjNhYzc4YWViMDZjNTBlMjFkOTI4MjNmYSBweTNrLXBlcDMxMzcKKzU4ODYyIGYzYzMzN2U5ZDFlNTk3YzNhZDRhMzkzYTFiM2VjN2ViMTE0YTg2YWIgcHkzaworNTg4NjMgZjlkNDAxZjFlMWVmMGIwYzdiZmM1OWFkOTNhYjE4YmQxMmUyZTdmZSBweTNrLXBlcDMxMzcKKzU4ODY0IGM0OTBhZTA4ZDYwOGIwMTYwODM4YmI2MzM5NzYwZTgxNzcxYTFkZDUgcHkzay1wZXAzMTM3Cis1ODg2NSBjMTU1ZjFkZWRhNjVkODQ3YWFkZmMyMmY1YjhlOWNhMDBmY2Q1ODlmIHB5M2stcGVwMzEzNworNTg4NjYgNzlmZTdkMDYyMDZjMThmNDQwYzRlNTgxYWRhZTFiZWRkMmQzNzQxZSBweTNrLXBlcDMxMzcKKzU4ODY3IDUzYWYwNDZjYzJjNTJlMmU4M2U3NDkyYTc1ZDI3ZDVmZjc1YjQ1NjAgcHkzay1wZXAzMTM3Cis1ODg2OCBkN2RiNDY3Y2Q5NDA3YWEwOTY0MDQ3YTRiMmQ1YjNkZWE2NGU5ZDM5IGxlZ2FjeS10cnVuaworNTg4NjkgYTQ5NGE5MTUxMmVjOWVlNDU4MmVhNmM2YTVmZGYxODZmZWQ3MGU3ZCBweTNrLXBlcDMxMzcKKzU4ODcwIDhkMzFhMzZmMGNhYWU1MDg5ZGUwY2Y5MzQ4YzE0ZWFkNGFhNWNiZTQgcmVsZWFzZTI1LW1haW50Cis1ODg3MSBkMjQ4NTJiODZkNzBiYzI2NGU5MWM5NzQwYjZhNzcyZGExMTI2MzRlIHB5M2stcGVwMzEzNworNTg4NzIgMjlhNTk4ZTY5MzgyNjBmODY3MDkxN2I5YzIxYzEyMGE1MzMwMTUxNCBweTNrLXBlcDMxMzcKKzU4ODczIDg3MTc4ZjM1ZDcwMDc0OTU3OTZhOGM1YjE1MWIyZDkzNjljNWU5YWYgcHkzay1wZXAzMTM3Cis1ODg3NCA1NTMxMzg0ODA5MTg1MzY1ZjYxYWY4YjZhZjkwZWFiYWVhYTcyMDYzIHB5M2stcGVwMzEzNworNTg4NzUgY2M2NWI2NDAxOTg5NDZlNGJmYmEzMjc1YTAwMTI5MTZmZTgwOGVlZCBweTNrCis1ODg3NiAwYjIwNjc5MGZlYjY0M2VjZTNjZjhlMTBkYjUzYWZlZDkyNjcwMzA2IHB5M2stcGVwMzEzNworNTg4NzcgZDgyNGMzMTVmY2FjMjhlNDVkYWY0YmIzNmE2NTc1NjU5YWI4YzExOSBweTNrLXBlcDMxMzcKKzU4ODc4IGRlOTczOTI2YTM1Y2ZkMjUzMjM4OGY4ZWQ5NGQyZDU1NWEzNDE4ZWUgcHkzay1wZXAzMTM3Cis1ODg3OSBjOTNhZDZjNDE3ZGYyNTFiZmFhNmIyM2RjMjlhZDlhNDc1ZGY1YmQ0IHB5M2stcGVwMzEzNworNTg4ODAgOTFiYTE2OThhMDExODZjMmQ2YjdjNWFhOTVkMmQ5YTIyZTgyMGExOSBweTNrLXBlcDMxMzcKKzU4ODgxIDZkYjM4MDg1MmY2M2ZlMWNlZjJiYTZiMmQ1MjVjZjU4N2JmMTFiYjggcHkzay1wZXAzMTM3Cis1ODg4MiA5MzBjNjBmOGFhZmZhNzI4OThmMDk0MjAxMjQ3MTU4YWNmMjE4NmMxIHB5M2stcGVwMzEzNworNTg4ODMgZmMzYmVjMjBlYzE1Mzg4OGIxNmQ2MDQ1YTBlZGE0OGQyOGNjZWJhMyBweTNrLXBlcDMxMzcKKzU4ODg0IDAyMjU3ZWM1NGQ3OTEzY2Y3ODJhZjQxNjgwYzY0NDAyMjMzYzBmNmUgcHkzay1wZXAzMTM3Cis1ODg4NSBjYjhlZjI1NTFkMGQwZTM0ZmM5M2M4ZWU1NDBmZmNjNmUyZjRiNTg1IHB5M2stcGVwMzEzNworNTg4ODYgYjMxMGZkMmIwMTg0N2EwYzkxZDA3YThmYWIwNzg1YzI3MmUxZDBlYyBweTNrCis1ODg4NyA5MGQwYzM3NjZlOTI4YTMyYjYwYmNhNjNmZWFkZjNhM2E5NWIzYjk1IHB5M2stcGVwMzEzNworNTg4ODggMGQ0NjJkNzg5YjE4ZWM2YTU5ZWJlMjExNjY4OGQ1YjY5ODVjMjE1ZCBweTNrCis1ODg5MCBjZmU4ZmNlZDhhMTIyNmFmZjBmMTQ0YjBmOWI5NGYyM2Y4NzQ1MDI4IHB5M2sKKzU4ODkxIGM1ZjcwOGJjNGNiN2ZjMDI5YTc2MjkzNzMwMTFhNDNkOWZkNTgxZTQgcHkzaworNTg4OTIgNzM0N2Y3NWI5YzM0NDJiZDYzM2FkYWU1MzI2OThmMjRjMmEyYmUwNyBsZWdhY3ktdHJ1bmsKKzU4ODkzIGRhNThjZjliY2IwMWI1YTcyNmJjMzY2NWUxY2E0MDM1NjQ3Yjg5YjEgbGVnYWN5LXRydW5rCis1ODg5NCAwNmJiODEwNzQ3ZTFkMzYwNzFmZWVhMmRiZGIxZDlkNGI4YjllYzBlIHJlbGVhc2UyNS1tYWludAorNTg4OTUgOWYxN2E5YTViNWFlZWQ3NGIyYmUxZWYwYmI2YjgxZDllOGI2YTkxMyBsZWdhY3ktdHJ1bmsKKzU4ODk2IDhmY2MzZjQ2YzY5ZGUxNzNmMjg3MzdiZTU3OTM4NTNhZTAwYzNmZTcgbGVnYWN5LXRydW5rCis1ODg5NyBmYTgyZWM5YzgwY2Q2Nzg2N2ZmZWQyMjM5NTU3MmE5OWI1ZGJmNGU2IHJlbGVhc2UyNS1tYWludAorNTg5MDAgZGU2M2VmMTg2YzFlYzUwMDE4ODE1ZjQzMWZlNmZmMWNkMmQ0M2E0MCBsZWdhY3ktdHJ1bmsKKzU4OTAxIGY0NzRkZTk3MzQwNDc4ZWFjNzExNzhhOTI3NmFjYmVkMWFiMTA5OTEgcmVsZWFzZTI1LW1haW50Cis1ODkwMiA3YmQ3MmM1NmY2YTQwZDJkNDM0MWJmMTgyYzhjYzk5NDFmNGMwOGNjIHB5M2sKKzU4OTAzIDEyNDdkMjRiMjg3YjhjNmRkMjBlMzVmMzg5YTRkYWY0ZDIyNTFjNDEgcHkzaworNTg5MDQgZGJhMjQ5MWNmNzE3NjI1YjFhZDY5ZmM1ZDlhMDllODliOTRjYTRmOCBweTNrCis1ODkwNSBkZmI0NjAwMDRjZmUyZGY3MDM5ODZhYTEzYmY4YWMzZDkwODNmNWQ5IGxlZ2FjeS10cnVuaworNTg5MDYgMmYwNGFiZDEzMzk0NGRlMzEzN2YwMGQ2YjZhZDQwYmExZjViMjE5NSBsZWdhY3ktdHJ1bmsKKzU4OTA3IDJkOGQ2ODU1YTYwMjQxOWVhOWE5OTZlNzZkODNmZTJjYzdmZWU1OGEgcHkzaworNTg5MDggMmIzYWJlM2QzYWU2ZWEzM2QyYjM5ZjI5ODM0ODgwY2I1MDg0MjFlZCBsZWdhY3ktdHJ1bmsKKzU4OTA5IDY2ZDI3NWYyOWFjNTUwZWFmNWI3ZjJhNjFmY2JhODhlZDQ4MjNjYTMgcHkzaworNTg5MTAgNzAyMmFmZmQ3YmQwOWNmMTE1NTNjMjJmOGUwYWZkNDM3YTNlZGNmYyBweTNrCis1ODkxMiA2YWM2MTg4MmY5MzcwY2ZmZmJkYWZiNGZjZjhjZTYyODJiYzQ0ODNkIHB5M2sKKzU4OTEzIDZkMzQ3Nzc5NTIxYjViMjUyMjcxZWVhMDc1ZjljODFjODRlYjU5OWUgcHkzaworNTg5MTQgMzYwZGY2NDEyNDRkOWU4MTFlZmQ4OWFkMDYyMmFkNDZiYTY2ZmVmZiBweTNrCis1ODkxNSBiMjJmMjdlMDcwMTE0OGViNjNiMjFlZjJjMzkxNTRjMDNmZWMxNWIyIGxlZ2FjeS10cnVuaworNTg5MTYgMmY3YzQwMWNiNjJlMDQ5NzMxZGIzNmI5ZTViMDEyZTVjOTI1OWFkNCBweTNrCis1ODkxNyAzYzFmODU5M2ExNGU0YzU1ZTdjMDA2NDgwYzM2ZWQ0MWFiNzg0Zjk2IHB5M2sKKzU4OTE4IGFkZTU2NjNlODg4NjhhMzFjMDQ0NWNiOTk1ZjVhNzA0MjhkZGVlZTMgcHkzaworNTg5MTkgZDVjMjViZjI2OTJlZWFjZmU5Y2Q5YjFkYmIxMDBmZjAzOWE2YjdiNSBweTNrCis1ODkyMCA4M2MwNWQyZTEwZGVjZDA2MzMwNGVlNTdlZTllN2NjNDg1ZWRhY2E3IGxlZ2FjeS10cnVuaworNTg5MjEgODFlMzNiZGU2ZWUyMGFjNDRhMDE2OTYxYWE4MTZlOWM5MGZiOGRhZiBsZWdhY3ktdHJ1bmsKKzU4OTIyIGRkYzdkMTRiZTFlOTkzOTQxOGIzNDMyNzgzOWI0ODE2OTYzNDgyNmYgcmVsZWFzZTI1LW1haW50Cis1ODkyMyBjMWY4ODMxMTU1ZGUwZTU4YjgyMzNiYjE1ZjQ4OWVmNzM1ZGI2ZDlmIGxlZ2FjeS10cnVuaworNTg5MjQgYWFlZWU1MGEwNjQwMTY3MWJmNWEwNzkzMzYyMjk2MzFhNmRhNWFmOCBsZWdhY3ktdHJ1bmsKKzU4OTI1IGFjMTJhYzg4YWVlYTkzYTEwNmJiNjhlNzU4ZmIxOWJjZmMxY2VjNGMgbGVnYWN5LXRydW5rCis1ODkyNiAyMGRjNjc4NmY5YWNmZTlmZjA3ZDMzNDRjMmFjOGVhZWFiYzE5MzBhIHB5M2sKKzU4OTI3IGY4MmEyMGRkYTQ2NWVmMjBkODE5NzFjOWYxMDA3ZjE3NTM2MWUxYWIgbGVnYWN5LXRydW5rCis1ODkyOCAxNTYxNzYzY2RhNzJkZWM2Y2MyMTkzNjk0NWFjNGFhNDgxMjhmYzEyIHB5M2sKKzU4OTI5IDE5N2ZmYjk5NmZiODg5NTk5YjdiZjJlNWJiM2JkZjkzMTcwMjBkNTAgbGVnYWN5LXRydW5rCis1ODkzMCA4NWNmMzM0YjMyYzNhYzIxZWJjNDFjNTE1NjFkNmUzYjdmNmNiMTIxIHB5M2sKKzU4OTMxIDQ4N2YzNzM3ZWFlZmQwMjEzYjBlMTkxMTAzYmU5NjMzNjkwNDlmZDIgbGVnYWN5LXRydW5rCis1ODkzMiAxYWRmMDY2ZjE4NzlhNGI5MzdhYTg5ZjFlMWE0ZTQ2MjhhZWVjYjEwIGxlZ2FjeS10cnVuaworNTg5MzMgNWExNjlkZTM2ZGU3OGNiYjc1OWY1Y2VkYmFmNTJjNjhiZmRjOGM1YiBweTNrCis1ODkzNCAwNjg2NTUwNTRiMGQwZDEzNjJhYTcyYjFjMGNkN2RkYzNjZmUyNjBiIHB5M2sKKzU4OTM1IGQyZjllMjAxMjBmOWU5MzU3NDllZWU4NzkxNTg1MGMzYTY0MmFkMTcgbGVnYWN5LXRydW5rCis1ODkzNiAwMWE1YmRjMjgyMGEwMTFmYTdjNjA4OTM4OGM3OTY0OGI4ZmU3M2RkIGxlZ2FjeS10cnVuaworNTg5MzcgYzRlMjkzNmQxMzA3NTIzMjQ2NTA5YzAzZjFkYTZjZTZkMzdjMWI4MSByZWxlYXNlMjUtbWFpbnQKKzU4OTM4IDU1Y2JkMGM3YWFjZmMzODc0MjBiZjI5MzU3ZTQ2MjFjNmFmM2ZkMTMgbGVnYWN5LXRydW5rCis1ODkzOSA0ZWQxNmNhNGQ5ODAwOGRhMTAwN2FhYjczZTg1ZjE2MGE0NGYzMjJhIHB5M2sKKzU4OTQwIDI5YmVjZTE0Nzg5MzkxZGYxYjM0ODQzMTBmYzhlZTUzOWQyN2ZhOWYgbGVnYWN5LXRydW5rCis1ODk0MSBhZGU1OGViN2M4Yzc1YzViZWNjM2I1YTEyOWNkODM4NTRkNjhhOGQzIGxlZ2FjeS10cnVuaworNTg5NDIgYWYzNDI4ZmFlMTVmZDgzMzkwOGVhYTA5MjY2N2VkYTA1NWQwZWQ1NCBsZWdhY3ktdHJ1bmsKKzU4OTQzIDAwZTYxNjVmNDQ4MjlkZWFiZjA3NWYzYmZlZTVlZjlkYzU4MzljMDkgcmVsZWFzZTI1LW1haW50Cis1ODk0NyA3YmM0Y2M5NzJiMGIzYzYxZWU0NDZhYzBkZWYwMGJiNDUxNmI0ZWZmIHB5M2sKKzU4OTQ4IDhlZDNhOTVjYTExNGZiMWMyZDI0MDIwNTc2ZmVhYTljNWU0YzNlN2QgcHkzaworNTg5NDkgMTY0YTZhYzk0ZDNjODFmNDIyNzc4ZmFlZmFkMGYzY2VlMDQ3N2M4MyBweTNrCis1ODk1MCA1OTEyYjY2Y2NjMmQ1ZmY3NWI2YWRiY2E3YTIwOTQ4MzllYWVmNGRhIHJlbGVhc2UyNS1tYWludAorNTg5NTEgY2U3N2Q5MWVhMWQwYmJkZmZhMWJmY2Q0NmE0MzBmMGM5M2E2NmY4NyBweTNrCis1ODk1MiBkN2U5YmVjMWZlYWE5YTVkNjA3NTMxNTRkZWYwYmRlZGJlODY0MjEzIGxlZ2FjeS10cnVuaworNTg5NTMgYTIyMTMwNjBkOWRkYjA0OGQxZGEyMTc5OTJjZjE0YzYxYjJkOWRlNyBweTNrCis1ODk1NCAxZDZkYjlkZDNlNzdhN2NjOGQ4OWZjOGY4NGVhMDg3YzRiYWZkY2ZkIHB5M2sKKzU4OTU1IGIzMWY2MWQ3ZjhiMGVlMDE0ZWJiMDlhYzdlYjY0YjJhODY4MDE4NGQgcmVsZWFzZTI1LW1haW50Cis1ODk1NiAxZTBlYTFmMDMwNThiNWEyNTFkZjEzZmQzOGFmMTdmMjRjM2FiMDQ3IGxlZ2FjeS10cnVuaworNTg5NTcgMDgxMTE4MmE5Y2U5YWMxZGQyYTA5ZWVmYTRkZDgyNzU5MzgzNDhjYyBweTNrCis1ODk1OCA3M2M4ZTI3ZWI5Y2VmNDAyZmFjZjhhOWNjMzFlZjkzMWY4ZmRhMDRlIHB5M2sKKzU4OTU5IGNjY2VhZWMxMTQ0MmY5NGE4OTMwMzMzYzNhNmU5OTg2MTBiMGQ2MDkgcHkzaworNTg5NjAgMjQxMjgxMTIzZmQ4MzUxZDEwZTAyMThkMzIzOWE1YmYxZjEwZWZmMyBweTNrCis1ODk2MSBhMDYwYjNjYzJjNjJiMTI5NmUxYzVjZTkxNTU0NmJhMmEwNjc2OTliIHJlbGVhc2UyNS1tYWludAorNTg5NjIgMmM5N2UyNGIxNmNmY2E5MzM0OGE4ODUyMDMxYjQ4OWE1YzhmZjA0YyBweTNrCis1ODk2MyA3Njg0NGEwYTU3OWY5OTJlMmIwNDhiYTg3Y2JiM2Q2M2Y0MmQwZGQ1IGxlZ2FjeS10cnVuaworNTg5NjQgZDVmYzZlOTYwOTFmYjZmZWQyMzdhNDkyNDNmODIzMDA5OWYzZGM2MyByZWxlYXNlMjUtbWFpbnQKKzU4OTY1IDAzNzdiYTliYzM1OTE3NTJiNzcxM2JmNDhiNDdhMzczMWU5YjkwYTUgcHkzaworNTg5NjYgZTE2MmU4ODFlYTVmNGUzZGE1YzQxZDIzOTJjYjJkYWMxN2E0MDFkMiBweTNrCis1ODk2OCAyNGM4NGQ1OGNiODAxMGIxOGU2MjNlNzkzZGE3MmZiZGExODdhN2ZlIGxlZ2FjeS10cnVuaworNTg5NjkgNTNmYzBmNDFmNjhkN2YxNjY2YzA2OTE5NmNlOTM2NTYxMGY5NDYzOSBweTNrCis1ODk3MCA5YTEyODEzOTFjNDZlOWM1MzEzNjc2NmFiZGUwMzYwYWZlZmVhMWZiIHB5M2sKKzU4OTcxIDg5OTk4OTNhNmUyMjE1MGM4OTg5N2FlNDFiMzg2ZmM1YjI5ZjIyYzAgbGVnYWN5LXRydW5rCis1ODk3MiAwM2FkMWRiN2M4MGU0NWQ2ZGU2Njk1ZWE4MWJkMGM2NTI3Zjg4ZGExIGxlZ2FjeS10cnVuaworNTg5NzMgM2MyOWQ3M2M3NzY5NGU2YzczNTc0Y2U2MDcyYzhmYjZlMjI1ZTE4NyBweTNrCis1ODk3NCBlZTA4MTYwOWNlZThjZDM0NTMxOTEyNDI3NjNiZDJlMzQxY2U4YTI3IHB5M2sKKzU4OTc1IDk4Nzk1NzM4YjRjMjc5M2YwY2Q4Y2Q4YTgyMTk1ZmMxYzQ5NWRhNjUgbGVnYWN5LXRydW5rCis1ODk3NiAwYWU5MDc4Nzg2YjQwMmUzZjJiZDdmNjE5NzQ2YzVhMGQ5MTBkNzI5IGxlZ2FjeS10cnVuaworNTg5NzcgMDE5ODI5ODAzODQ4ZTZmMTFlZmUwMThjM2ZmODM0YTZhNjBhOTY5YiBsZWdhY3ktdHJ1bmsKKzU4OTc4IGRkM2M0ZGQzZWNmZDE0Y2RkYTg3YjRmOGNkYzkyYWViMjQ0ZDc4YjEgbGVnYWN5LXRydW5rCis1ODk4NSAxNzkxODY1YTY2OGI5ZjJkYjRhMGQ4YzdjZjg5YzFhYzY1MWZiYzE4IHB5M2sKKzU4OTg2IGZhNmNkZjU1ZGU1OGYzNmEyNzQyMGFhNjkwOTBkYTkzMzE3MjRhZGYgcHkzaworNTg5ODcgZDRmOTcwNmNiNDZiM2MyYjEyMWUzZTQzODczMWNhMGZjZTViMTFjOCBweTNrCis1ODk4OSA1MTYwNDFkNTI2NTZkNDgxYjE1NzVlMWU5NDFhYTIyMmI2ODI1YmE4IHB5M2sKKzU4OTkwIGY0YTNiNGUxNTVjMjU5Mzc0YzlkYzk1ZDNjMDk1ZmQ0YmE0YjdmZDkgcHkzaworNTg5OTEgOWEzNWU5MjY2Mzc5YmNhYTk1YjM2MjU2ZGI1NTBiZTBmNzc2NTVjYiByZWxlYXNlMjUtbWFpbnQKKzU4OTkyIDhlZDAyODBjMmFiNjc0ODUzZWExN2UwYjJlMmFlYmJiYmMzMTE0NDQgcHkzaworNTg5OTMgZjQ0NGUyNTkzNDFhOTZlMzljNTQ3ODFjNmQzNGUzZDNhNmQ3NjNiYyBweTNrCis1ODk5NiBkZTZiMTI2YThkMzc0OTViNjlhMjkzOGZiMjgyODI4NzY4MDVlYTUzIHB5M2sKKzU4OTk3IGI1OTgyNWQ5ZGI4Zjk5ZTY2MGFlYTFiYTU3YThiYzU4ZDkzNTNhYjMgcHkzaworNTg5OTggYzc4ZGI0OTM4NDgyYzdiNmJjMGNiODYzYjE2NmExNjE2MjU1ODA0YiBsZWdhY3ktdHJ1bmsKKzU4OTk5IDU5MDkzMGUxN2UwYzk4Zjg3ZWJkNTA1N2NjZWQzZDQyNzVhMDg1YzUgcHkzaworNTkwMDAgZDQxOTMzMzBkMWJlZWFmOTJiMjAxYjI2Mjg3ZGJlOTUzODZhMDBjYSBsZWdhY3ktdHJ1bmsKKzU5MDAxIDE3Mzk4NjljYmM2ZTdlMzU0MGE2NDU0MTdiNzhmY2JjZTM2YzhmOWYgcHkzaworNTkwMDIgNmIwMTJmMDFhODg5MDkzMjlhN2YwNWZmZTU0Mzk3ODI5MTY2YThiYyBweTNrCis1OTAwMyBlMjAyMDNkMDMzMWNjMjk4ZjE1MmIxYjRkYjQxNmU5ZDAwYjkxMjU0IHB5M2sKKzU5MDA0IDE3YWFmOTVhZjkwOWExNjJlM2FhYjJlNDU2OWNlZjBiYzNiNTc3ODUgbGVnYWN5LXRydW5rCis1OTAwNSAxMTY1ZDI2MWZiMDVkYjU3M2Y4MmNlY2RjZmZhMDk4YTBjZDgxZGI0IHB5M2sKKzU5MDA2IGMzMTU5NGZiMWVkNDRmMDM2YWE4ZDQ1Zjk4M2JmYmM2MzMzMjkzNjkgcHkzaworNTkwMDcgNTU5MDE1N2Y0ZmM2MTc1NDk3ZmRlYjQwNDY2NjE2OTViMThiY2RmMCBweTNrCis1OTAwOCA0YTZhN2FlYTU3ZjRmZDg4NjRlODI2YjYzNTM2NjQyODQ3ZTQ4YmU4IHB5M2sKKzU5MDA5IDcwY2ZjN2I1MDRjMjg2MzYyNDQxMDIyMzU0YzFhMGYzNzY4MmQ0MGYgcHkzaworNTkwMTAgZjZjY2E0YjIyNjBjYWJmYzgyYTEzMDA3YjVmNzc0Y2M5MzlhM2U4ZiBweTNrCis1OTAxMSBkYzIyNTZlMzAxYTkyMzkyYzljNTVmYjMzMDg0ZWI4NmI5YWJiNTYwIHB5M2sKKzU5MDEyIDcxZTc0NTYyZmI2NDEyODU4ZWVkM2I0YjA1NmQwZTMwNTVmNDUyYmEgcHkzaworNTkwMTYgYTk5ZGE4OTNmMjBjMWVhZGZhMDJiMzdlN2YzMzQzMmUyOGM0YjkyNiBweTNrCis1OTAyMCAyNWE1ZjZhMzAyOTI1ZDU3NDkyMWQ2NTMyMWMzMjg4ZTA2NDY3ZWQxIGxlZ2FjeS10cnVuaworNTkwMjEgMmRmNTNmMDUzOTJjYzFhZTc4NGM4ZWQ1MzY1MzA5NTg1M2ZkMjhiZCBsZWdhY3ktdHJ1bmsKKzU5MDIyIDFmYjM1Mzc3NmRmYjRlODYwOGJmMDk2NjdjNWFiMGRjMDM4ZDFiOTggbGVnYWN5LXRydW5rCis1OTAyNCAxNDk0YmRlNTEwZmY5NGVkOTZhZDUwY2EyYzQyM2YwMDRkZGFlYTM5IGxlZ2FjeS10cnVuaworNTkwMzMgOTk1ZDI1YWFjMTZhYWE5MmJjOTUzYjc2MDdmMjNjOWJlNTU2YjEyYiBsZWdhY3ktdHJ1bmsKKzU5MDM1IDM4ZjYzNDE5YWJkNjQ3M2E0NGU5Yzg4YjdmM2EyNzFkODRhOTE3NTMgcHkzaworNTkwMzYgZDUwYzcwOTlkNGFhNGMwY2Q0NGY3YmFkZjY2ZjFhNmE2Y2U2NTAxNCBweTNrCis1OTAzNyA0ODNlOTU4ZDEzYzc2YjY2NGRlMTZiMzc2NDJiNTk1NGViNmFhMzI0IHB5M2sKKzU5MDM4IDEzMzI0NTBiYzk1MjFkMDM4ZTc0ZTM2ZDI5Y2FhYzdlZjlhMGVjNjMgcHkzaworNTkwMzkgNGNlYzBjNjM5MmMxM2FkNWJhNjg5YTA2ZWEwNTc0ODBiYTFiZDc2OSBsZWdhY3ktdHJ1bmsKKzU5MDQwIDUyMGUyZWQ5NGJjYzUzMGQ1ZGQ0ZDI3MDkyMGZhNTUzNWVjYWFmOWMgcHkzaworNTkwNDEgNDFmN2MxM2VmMTYxMWM1YmQyMDExZGZlYzlhNjVhY2U1ZTI4NDMyMiBweTNrCis1OTA0MiBiOTFmZDc0ZjMyZDhlOWM0Y2MxOGNmYzZhYTVkNmRhYTc3NTBhMzE4IHB5M2sKKzU5MDQzIGZjZDc2MzM5ZmUxZmU2Zjc0ZjlhOTI0MzdjYWJiYWQ1MDA0NTg1ZDAgcHkzaworNTkwNDQgM2E3MzBmNDkwOGUzZjJkYjNlOGYzZTkwM2ZhOWQ2YmM0ZWNkZTc1ZCBsZWdhY3ktdHJ1bmsKKzU5MDQ1IDcwZGRiZTY3ZDNjNDYwYTFjOGU0NWFiY2IwMzg1YjEwMGEzMWY1MjUgcHkzaworNTkwNDYgMTlmOTk2NTUzMTg0ODA2YjljNzk2YzZjMzc4MDY4MDE3M2VhYjRlOSBweTNrCis1OTA0NyA2YWE4ZTEzNWQ5Zjg0ZGY0MDFkMjIxOWNjNzk2ZmYyOTI1YzNlNjcyIGxlZ2FjeS10cnVuaworNTkwNDggNDk2ODFkNDM2ZGY5MjM2YTYzNGRkNjAyODZkMTA0MzU1MTU2MTVlOCByZWxlYXNlMjUtbWFpbnQKKzU5MDQ5IDBlODk3OTA1ZWU5NDNkOTQyMjQyYWIwOWM4YTI0OGI1YzBlZDJkNjAgbGVnYWN5LXRydW5rCis1OTA1MCBlNWQ0OGZiZTE2NDYyYzQwZGMyMmY3MGYwZWJmYWI0NDU1YjFmOTIyIHJlbGVhc2UyNS1tYWludAorNTkwNTEgNzgwYzcyODQwNmU2NzVmMmI0ZmM5OWVjNmVkMmVkOWVjYjMyMTcxYSBsZWdhY3ktdHJ1bmsKKzU5MDUyIGRhOGRjZDVjZjVhMDFhMzQzMDU3MDgxOWQ1YTc0ZTM5NjVkZjNkMGIgcHkzaworNTkwNTMgMWFlOTIyNGY0ZWU3ZjAxYTVhNDA3Y2ZkYTQ0ZThmNTgwNjBhMjQ0ZSBsZWdhY3ktdHJ1bmsKKzU5MDU0IDU0Yjk3M2YwZjU1YjViNWQ2YzA1NmEyY2UzMzI4ZTE3NmYzNjRhMGYgbGVnYWN5LXRydW5rCis1OTA1NSBiNmY1NzgxZjVjM2YwZjU1Y2Y3NTIxNWY5NmVjNmMwYjhlZjYxNWNlIGxlZ2FjeS10cnVuaworNTkwNTYgNDc0N2VmOTY0MGFlOGIxMzc1MjE3MDIzNDgwMmM0NjA0Y2Q3NjIwYSBweTNrCis1OTA1NyA2MWVmOTBhMWIzNWUyNTdjYjFhMDc0ZTVlODg3ZTE0Y2QzNGMxMDk5IHB5M2sKKzU5MDU4IDQwZGZjNDg1YjBiZTM3ZWJhYTMxYzZlODkxMDY5ZTg3MDViNWFhNTAgcHkzaworNTkwNTkgNjk2OTljZmRkMjZlZDBlNTNiY2YwMzVlZjhkNDFlNmY0NTNhYmUxZiByZWxlYXNlMjUtbWFpbnQKKzU5MDYwIGIxYmNkNTk5NjcxZjA1MTgxZGM5NTE1NjI0MGI0YTc0NDhkMGZhNmEgcHkzaworNTkwNjEgYTkxNWYyYjEzNWMwOTVkZmU5NDkyOWY4M2I2YWQzMjBhNDk5MzM5YSBweTNrCis1OTA2MiAxNDZiYTk3ZmZlMWFiMmM5YWY0MzZiMDIzYzYzZmI5ODM4NjFmZWIxIHB5M2sKKzU5MDYzIDhlYTdmNTlkZmY2YmM2M2FjOGZjNTBiMmU2NzAzMTlhZjc2YjAxYmMgcHkzaworNTkwNjQgZmRmMTQxNzAzMzdhZDc4YzVkZGM0M2U4MGIxMDU0MGRlODNiMTdkZSBsZWdhY3ktdHJ1bmsKKzU5MDY1IDJhM2Q3MzQ5NWYxODRkY2IxZmQyNmVjNmE2OGJjZDc2MjRiMjQyMGQgcHkzaworNTkwNjYgMzJkNDU3YTc4ODViZGYzODI2YmViZGRlYTQ5OTQxNGU5NGMwNjFjZCBsZWdhY3ktdHJ1bmsKKzU5MDY3IGQzY2IxNmIzMjFkNTVjM2ZiZmQ3YTg1MjRmYTRmOWFkNmM2ODgxMWYgcHkzaworNTkwNjggNzRmMjI5NTRmMTg5OWRiNGM0OWQwY2Y5NmRkYWQyNWMxNjg5OWM3YSBsZWdhY3ktdHJ1bmsKKzU5MDY5IDZjYTAwNDQ3NWFhMGZjODQzNzhiMDQ4Mjg0YzAyOGJkNmNiZGU2MjggcHkzaworNTkwNzAgMmRlN2QwMGZiZjE5MmFjM2E2ZmZjMTk4M2ZhMjg1Yzg1YzEzNGU0ZiBweTNrCis1OTA3MSA1NTc2MTRjNGZmMDBmMzA5ODdiNjY3OTAwM2FjZDQwZTczNjg0MjY1IHB5M2sKKzU5MDcyIDI5YjBmNDk3NWQ5ZjMxZTJkMTA2ZWJiNGYzNTY0ZjEyNDk4OTc5NTggcHkzaworNTkwNzMgN2FiNDkwNjRkNDMwYWE1YzkzMDQ2MzU4YTExMTBhYjJkNDMyZDhhZiBsZWdhY3ktdHJ1bmsKKzU5MDc0IGY1NGVjZjQ5NGNiNzExMDUwMjYwODJlODM5OTQ5YzhmNzM0MDgzZDEgcHkzaworNTkwNzUgOGI3ZDQzMTNlYmMwNTY5Y2FjOTJmZTM3NDBkMzM3YjVhZGQzMjE1ZSBweTNrCis1OTA3NiBlOGFjMWFlNDUwM2NkN2E4MjgwNzIyODI5NWQ0NTU5ZTdhMGUyMWE0IGxlZ2FjeS10cnVuaworNTkwNzcgOWM0YmYxOGU1ZDMwZTYzMzRjYzM0NDU4NGIwZmViZWMzODgwMGQwNCBweTNrCis1OTA3OCA3MWExN2Q0ZDNhZmEwZGE0MTY4ODY3MWUwY2M0MGUxYmVlODE5NTE1IGxlZ2FjeS10cnVuaworNTkwNzkgMmJhNWFiMzg2OGM5MGZiMWY0N2Q5NDZlZDVjZjRhMjlkOTFmZmQ2YiBweTNrCis1OTA4MCAzOGIxZGViNGU0ZWJkZjgzOWY3YzkxNmY4NjlhNGI5NzYyY2NjOTBmIHJlbGVhc2UyNS1tYWludAorNTkwODEgODgzODg0ZmRhYWU4ZTExNDNjZmEyOThjOTUzMDBhYTE2OTJhMTVmNSBsZWdhY3ktdHJ1bmsKKzU5MDgyIDg2MzZkY2I4MDFjZTA2MDNlNDdhNjVmYmQ0NmY0OTYzOTZjOGVmYTQgbGVnYWN5LXRydW5rCis1OTA4MyAyNWQ5Y2UyODNiMzk0ZjFhZWQ2OWY3OTNmZjNjNWRkMDQzNjkyNDdhIHB5M2sKKzU5MDg0IDNmYjdlZDVjMjNkZDY5MGQ0NDQwYmRkNjZkNzk1MTRlYzQxMTYyZWEgbGVnYWN5LXRydW5rCis1OTA4NSAzYjA0ODk0MTE2ZmUyMjJmODIxNDM1NWRmYmQ2ZWM2YWZlZjU0NThkIHJlbGVhc2UyNS1tYWludAorNTkwODggNzgyY2I0MDM3OGY0NGY4N2ExNGM2YWJhNTE3YWQwNGZhNDVjZTcyMiBsZWdhY3ktdHJ1bmsKKzU5MDg5IDJkYmNkMzkwYjZmMTUzNzg4M2MxOWQzYzQxZGNkNGM4YTg3ZDJiNWYgbGVnYWN5LXRydW5rCis1OTA5MCBiMDk5ZDM5YzM0ODJkOTVjYWZmNzJlZjJlODRjZjIzM2EyYzFkMWRlIHB5M2sKKzU5MDkxIDJmZDdjOTExMTYzMmEyNTAwYTEwZjgyNjY3ZjNkZjM1NTcxYmQ5ZTUgbGVnYWN5LXRydW5rCis1OTA5MiA2Yzk2N2MyNjg0MWE5MTQ1NTJiZDA2ZTFmNWM3ZTk2M2FjZjljNmVmIHB5M2sKKzU5MDk0IGNiYzhiM2JkMzE1NzgxZTUzYWZiODkwMjZlNTRkMDFmYzA2ZDEzM2IgcHkzaworNTkwOTYgOGUwYzRjNzEwMzc1ZjJkYzkxOGIyNDM2ZmIyNjQ1ZWNmMDgxZTc3YSBweTNrCis1OTA5NyBlYTk4ODRmMTQ1NDU5ODg1YmI1MTRmMWNlMDg1ZDc5MTliMjk4MTI1IHB5M2sKKzU5MDk4IDJhM2NhOTAwMDhmZmZlYzFlY2MzMDFjZGE3YTQ4YWY2YTU5MjhkNjkgcHkzaworNTkwOTkgMzJiZmY3ZjI5NzVkODEwYTk5ZDY5ZDliM2RhYjllMTVkOGRhNjdhMSBweTNrCis1OTEwMCA2ZjE0OTUyNmU4NjRjNDEwNDZlNGRkZWEzYjUzZjJlNTdjNDVhMmMwIHB5M2sKKzU5MTAxIGRkYmM1ZTJjNjg5YTdhNDExMTAyZDhhNTkwNjJhOTFjOTQzMDFkZjYgcHkzaworNTkxMDIgMDkyYjUzMDY5ODNmNzIwYmJlMDFlYjNlMWJlZjk3NzIyMTk1ODhjZCBweTNrCis1OTEwMyA3NTM2NDM2NDQwOGI2OTMxZDgzZDg5YmM1MDVmMWQyZTUyZmVkYjQ1IHB5M2sKKzU5MTA0IGZlNWIyZWRmZmFlNzY5YWNjYTUwNWIyOGYzM2E4MDdkZWFiNDQ1NjYgcHkzaworNTkxMDUgMjNiZWZlNTQwZDBkNTQ2ZGQxNjllN2I1NTRiZDliYzYwNjgwZDY3OCBweTNrCis1OTEwNiAxMDNiN2Y5NTUwMzZlYTM2ZjVmZWM1ZDNiZDY2ODBhNTZjYmVjN2IyIGxlZ2FjeS10cnVuaworNTkxMDcgMTIwOTk3MDYxMmRmZTE4MTE2MDYwMTRkMWVhNzM4NGRjZTRmYTk1YyBweTNrCis1OTEwOCA5OGI0OTY2NjQ5ZDUxYjA5M2UxOTE5N2UxYzkyYTZkYmE0YzEyMzJhIHB5M2sKKzU5MTA5IGIyMzFiZGE2NTNhNGY5YjM1ZjYxZGNkMjY1M2RlYWQ4YWRhZDY4YmYgcHkzaworNTkxMTAgMjU5ZThhMmQ2ZjhjMjcwNTk0NTBlODJkZDc4ZWYyZmFiNjNlOGJiZiBweTNrCis1OTExMSAxNGM0YmIzYzY1YTdjN2VlZjdlYmJmMTkwMWUxZjhjOTI5OWZjYTcwIHB5M2sKKzU5MTEyIDI2NTVkMTEzMTIzMmMxY2ZkMjVjYjIwOTM1NDkzNjkzMmMxYzMxY2YgcmVsZWFzZTI1LW1haW50Cis1OTExMyA0MWIyZjI2YzdiM2RiYzUwODg2MWJlYzQxNDNhMTk1ZTZiMDYxNzAzIHB5M2sKKzU5MTE0IGQyMzgyOWE5ZGIyMTE5M2M2ZTRmMTVjNGI5NmMzYjE0ZTRhYTNhNWEgcHkzaworNTkxMTUgOGQxZWVmMzkxOWYwNTFlNzlkNTc5YjY5OGE2NjBhNzcyN2MyZjBmMCBweTNrCis1OTExNiBkOWJjZDk0ZTU5MzVlNmI1ZjkxYTRiMjFhZGFjOGYxNDE2ZmJhNjMyIHJlbGVhc2UyNS1tYWludAorNTkxMTcgOGJjYmYzMjJjMmI1YzI3OTBlN2MwOWZjNWY1NTcwOGUzYjdiNzNlNiBweTNrCis1OTExOCA0YTc1NTNiMTc2YjZhMWEzY2Q0YzMwMWEyNjVkMmNhZjRjZjI0OTI0IHB5M2sKKzU5MTE5IDcyOTYyYWJkOTBhMTZhYjg1NmJhNjllMjNlZjBmMmVkYmY1YzdmYzQgcHkzaworNTkxMjAgYThkZDg4NzRmZjJkNTFlYmI3NDBhMzQzOTE1YzAwYzg1ZjAwMzFlMiBsZWdhY3ktdHJ1bmsKKzU5MTIxIGY2MzI3MjBkODEwMjdjZTg5ZjI0NjFhNDUwNzI1M2NkNmUyNDFhODQgcHkzaworNTkxMjMgZGE0Nzg0NzFmMWI2Yjg2ODU3N2ZjODZkMzk3YWFhNDc4YmRlNmJiMCBweTNrCis1OTEyNCA2ZDZiNjA5ZTQ1N2M4MDc1MmFjNWRlMDU3MWM1MzFjZTFmNzAwYjc4IHB5M2sKKzU5MTI1IDg3NDRlNDFkYWY1NDVjZDE4NmMxMjVlNWNjMTJjODBlNWFjM2I4NzggcHkzaworNTkxMjYgM2M3MjVhNDNhYzhjZDhlNjczMTJhNDY0ZWFjYTgwNmVlNjQyNTY0NiBsZWdhY3ktdHJ1bmsKKzU5MTI3IDkzNTBlNDI1ZTVmM2JiN2U1YjY0ZmZmMGZiZDhhOTVhNGI0MjA1ZmYgcmVsZWFzZTI1LW1haW50Cis1OTEyOCA0OWNlZmVjY2Y5M2ViZjVhYjUyZmVhYTFlNmQ3OGQwNjdmNWQzNjM5IHB5M2sKKzU5MTMwIDZmZjY4NTA1MTk5YWUxODUxZmQ2YmI2N2FkYWE0ZmU5MzZlZmNlYjggcHkzaworNTkxMzEgNjJjZjA4YTY0YmMyMzE0MDQxOTNlN2Q4MGI3NDIyMzQ3YTM0MTViYyBsZWdhY3ktdHJ1bmsKKzU5MTMyIDVmNmE4ZTJiOWU5Y2E2ZGQ0NDYyNzJlOWJiOWUxYzUyNjFmMzYxOGMgbGVnYWN5LXRydW5rCis1OTEzMyBlNzI1MTY2YzhjODE4NGY4MGZmZDZmZGVjZWM5NDY3NTBjZDQxZTExIGxlZ2FjeS10cnVuaworNTkxMzQgYWYzNjAzODBhYTE2ZmYzN2U2NjBlZjFmNWE0MjIzNTNjOWVmY2I4MSBsZWdhY3ktdHJ1bmsKKzU5MTM1IDIyMzBmMTZlNDAyYjEwNTEzM2Q0YjhkMTdhOGY2YWRiNWQ1NWI1NzggbGVnYWN5LXRydW5rCis1OTEzNiBlZDI5YjkxNjJhZTllOWE3MzhiYWFmMzA3MTNlMTc3MWFlMjJlMDU2IGxlZ2FjeS10cnVuaworNTkxMzcgYjQ4MWFkYjA0Njk5YWMzZDYyN2U1OTgyZTRmZWZiNTc4MzA0YzBiNSBsZWdhY3ktdHJ1bmsKKzU5MTM4IDRkMGZlN2RhNGNkNWY2ZjIwZjRkZDExMjhiZTdjMmJiOWU1N2JhNjcgcmVsZWFzZTI1LW1haW50Cis1OTEzOSAzNTg2YTY2MzQ4YmY4NGNhMGRjOTA2YjczNzA1NGFlZjJhYjc0NTQ2IGxlZ2FjeS10cnVuaworNTkxNDAgNGUxYTE5YmEzZDRhNjM4ZjVhZGNkMzQ4ZTA2Y2Q2ZmRmM2MxMjRjNCByZWxlYXNlMjUtbWFpbnQKKzU5MTQyIDY4Y2FhNDdmNWUxNTNlMzU1NzMwOGIzMzc2NjFhYmY1ZjQ4MDI2MDUgcHkzaworNTkxNDMgMTFlM2UyYWUyMzY0M2QyMjFjNjAxMzI2ZjQ5ZTc5MDFjYzBmMTFlZiBweTNrCis1OTE0NCBhNGExNDA0ODY2OTEwM2RmMmNhYmViM2IzNzkzMDA2MTFmNjg0NjMzIGxlZ2FjeS10cnVuaworNTkxNDYgNTVmYWZiNDZmYTQ1NWY1YmNhNmUwYWFjMGQ0NjcwODVlNzMxZDQ3ZSBsZWdhY3ktdHJ1bmsKKzU5MTU0IGE5Y2Y3ODBmNjM5NmE3MmU5Y2ZmODA3ZmE5NWIzZjg2NDg1ZTFmN2YgcHkzaworNTkxNTUgYjg2ZTZiZjc0MzhmODhmMzM5Y2JjNWI3ZTQ3YTE5ZTg4NjU2YzMzZCBweTNrCis1OTE1NiAxNzQ3OWEwOWVjN2NjZDU1MTkwNTcyYTg0Y2U3MjI5ZTgyZDVkYmViIGxlZ2FjeS10cnVuaworNTkxNTcgYmIxZTE1YmI3YjU5ZWM4NTliOTQ1NjkzMjhkYTUzOTg2ZjFlOTE2YiBweTNrCis1OTE1OCBiOWI5NDc4NWIyYzcyZmM1YzhiYzc0YTkwODJmOTI2MmI4Y2IxMmUwIGxlZ2FjeS10cnVuaworNTkxNTkgMTU1ZTk3MjVkYTJmOTM0NzU5NTUyZmNkMWRiYjIwZWFkY2JkNzk3YiBsZWdhY3ktdHJ1bmsKKzU5MTYwIGNmNjAzOGRmOWQ1MjY5YzhlMWVkYTc3NGM5ZTEyODgzNjk5MDU2NDUgcmVsZWFzZTI1LW1haW50Cis1OTE2MSA0OWE3YzdkYmE4Y2FmZjRkYTlmMDcwM2I4ZjQ5MmE0NTk4MDgxZjdmIHJlbGVhc2UyNS1tYWludAorNTkxNjIgMGI1MzU3Y2M0MTZiOGYzNTgyNGJmMzM0MTEyMGYyZmUxMmY4N2YzOSBsZWdhY3ktdHJ1bmsKKzU5MTYzIDJiZWQ4NDE1ODVhOWNhNjViMGI3NGI3NzI2ZTQ3NGRkYmJmOTU5NGUgcHkzaworNTkxNjQgZDNiZTZlNjE1ZjhjNDZkYWE2NWFmODI4N2ZjMjY1OGVmNjY3N2Q5NSBsZWdhY3ktdHJ1bmsKKzU5MTY1IGVkYjc1YzA5OGE0YjA1OWQ4NDIwNzY5NDg1NzM1NGVkNjEyNjEyYzMgbGVnYWN5LXRydW5rCis1OTE2NiA2ZDYxNGI4YzUxMjUzMmVjZjgwNzExMDMxNGM3M2RmMjBmZGQwYjBhIGxlZ2FjeS10cnVuaworNTkxNjggY2YyMjA1OTYwY2JiYWFkNmU0NWNkNzM1NGE1YmZkOGFkNTYyOGI1NiBweTNrCis1OTE2OSAyMDY4YmY3Nzg5MWQwYjQyNDA5MjRjYzhjODQ1NzVkMTMxYmRlODgxIGxlZ2FjeS10cnVuaworNTkxNzAgMjE4M2Q3MmFiZmFhY2ZjZGU1Y2EzZmY5ZjM0ZDg1YTZlMjBjNTNhYSBsZWdhY3ktdHJ1bmsKKzU5MTcxIDRjZjliYjljZWY5MWY1MDNmYzYxOWRhYzcwMjM3NDk1MjgwMTZhMjYgcmVsZWFzZTI1LW1haW50Cis1OTE3MiBkNTYwMWViZTE1YTk0NzBkMWRkMzNlODVkNzM1MjdjNTYzNGQzYTA2IGxlZ2FjeS10cnVuaworNTkxNzMgMTRhYTNlNGU3Mzc1OWI3YTY2N2JjN2JlZmYxNjNmMjNmZmM1N2IxMCBsZWdhY3ktdHJ1bmsKKzU5MTc0IGUwNDY1YmEwZTk1ZDY4YmYxNjI5NTFmZmQ0MmJiNmEzNGE0ZWFlNWQgcmVsZWFzZTI1LW1haW50Cis1OTE3NiA3ZGQ3OTYxZTBlZmYzZmY0YzdmYzIyZmVkNjNjZDE5YjYwNDlhODE2IGxlZ2FjeS10cnVuaworNTkxNzggMjJlMDk5MDVlNDAwMGFlN2NmZjQ4NmNiZmM2NzUyMWJlYzQyOWZkNiBweTNrCis1OTE3OSA3YjRlOTRhN2I5MmU5ZWUwMWFhZjc3OWU0NWRkODc4ODBlYzMyN2M4IHB5M2sKKzU5MTgwIGE3YzE4YjkyNDIzNmEwN2U5YTYzZjUxODNkMWQ4MjhhYjUxYzJhZWMgcHkzaworNTkxODEgN2IzMDExMTI0N2Y2NzIwMDdjMjZlYzdlMzQyOTk0ZGYzMzA4OWNlYSBweTNrCis1OTE4MiBlNjE2NWUzODljNTAyMmI0Njg3M2E1ZjI5ZGU4Mjc5MTA4MDJhYTVlIHB5M2sKKzU5MTgzIGZmNWRmMWZjMGZjYzRhNmRmMzM4YThjZWM1ZjE4NGQwOTk0ZTcwOWMgcHkzaworNTkxODQgNTJiYmUzMzY1YzcyYzI3MGY3NWQxNzNjMGM2OThlYjRjZTYwMTYwNCByZWxlYXNlMjUtbWFpbnQKKzU5MTg1IDczZjgzODk5ZWI5ZDllYzAwZTYyMmNkYjAwZTE3ZDgyNjViOTc2YzggcHkzaworNTkxODYgZTRiMWUwNWNlMjYzNTI3NTVjMDJkMzNkOTExOWY3YTRlZjMxNTE1NiBsZWdhY3ktdHJ1bmsKKzU5MTg3IGViYzczODkyOTdkNjkxYzZlMTU5YzU5OTk5ZTdlMDI4NWYwZDU2NmQgcHkzaworNTkxODkgNDhhZjYzNzUyMDdlNzA4ZGI0MWMxOWI2MDM3M2JjNjFkZjAzZmViMCBweTNrCis1OTE5MCBmNDhkMmVmNzJlN2UzOTQyNGIwNGFhMjU1OGI5YmY2MGJhMDliY2EyIGxlZ2FjeS10cnVuaworNTkxOTEgMDQ3NjQ1N2ZmYjM5MWZkMmYwNDY4YzcyMmU3YmM1ZTYzNzU0MTU2MCBweTNrCis1OTE5MiBlN2ZlZDdhNTk1NzY4ZGNlMjkzZTVkMDYzZTYwZGY4YzgyMGJjYTE4IHB5M2sKKzU5MTkzIGI0ZGE3MWE4OGZjMDE1ZWQ0MjhhN2ZlZWNkYTE4MzhmMDk1NTk5Y2MgcHkzaworNTkxOTUgZjJlMjQ3OWFmZGYwYjMzMDhmMjc1YmE2OGZmZTc2ODU2MWY0MzkyNiBsZWdhY3ktdHJ1bmsKKzU5MTk4IDhmOTJiNGVlNmZjNGNmNTk1NDg5YmJjNWI4YjkyYjJkNWQxZjJhMTAgcHkzaworNTkxOTkgYmEzMDU2MTE5YjI4M2MwZDM5NDM4ZDJlNTkzMTA2MzRmMTRjMzY1NSBsZWdhY3ktdHJ1bmsKKzU5MjAwIDVkMTA0OWQ0YzNjNjU4NDcwZGUwMzcxM2JkYzJlNmJjOWZkZDEzZGUgbGVnYWN5LXRydW5rCis1OTIwMSBiZmUwMzdlM2ZkNTVmZjJmYjg3ZGI2MDVmZmY5ZTZhODMxNTRmYmIwIGxlZ2FjeS10cnVuaworNTkyMDIgNDVjZWQ2YWIwNjZkNWJjNjEzZDE4ZWZlOTcwMWMwZmVmNjQwZTQ4YSBweTNrCis1OTIwMyA2MGU2ZWFhMzc4ZDlmOTFiZTJiNDk4ZDY2MmE1NmQ1ZWNhYmRhMTk3IGxlZ2FjeS10cnVuaworNTkyMDQgZDQ0ZmZmZGEyY2QwODc1N2RlZDU5YjczYWM0Mjk3YjM4NTE3MTZhMiBsZWdhY3ktdHJ1bmsKKzU5MjA1IDEyZTcyODAzNWUyYzZjZjJiZmQxMzMzODY2ZmY0OWQ2MzFiMGE2YTMgcHkzaworNTkyMDYgNzFmNDdmODY0NjkxZTg0NGYzNmM0ODFiZTNiZTc2MWIwYWY3Y2YzYSBsZWdhY3ktdHJ1bmsKKzU5MjA4IDdlOGU4Nzk3ZjlkMGE4NTE4YjU2YjEzMjg5YjE1MzZhZmVmZDhkMWYgbGVnYWN5LXRydW5rCis1OTIxMCA5MThiYmVlM2E1NDU4ODAwZjJiZTFlZjFiZmIzOGY2NzYwMTU5Yjg1IHB5M2sKKzU5MjExIDFmMDI0YTk1ZTlkOTE2YTM5NDUzZTNkNjM5ZmUwN2VjNTUwNTk4MGUgcHkzaworNTkyMTIgNTNiMDhmZDg4YmY0NzViYjRmNjc5OTkxZTExNGRjMDRjMjExYzBhYiBweTNrCis1OTIxMyA1MzBmYjk4NTJjNTA0M2ZlYzBiZDM3M2JiM2QyZTI1ZWUxMzVkZDkyIHB5M2sKKzU5MjE0IDRjMzkwMjllM2ZiMDMwYTY3Zjc1NWY3YzYxOGZjM2NlOTA4ODIxNGIgcHkzaworNTkyMTUgNDI5Y2FkYmM1YjEwOTNjZDgwN2VjODgxNjVkNThhN2MxY2Q5YzE1YiBweTNrCis1OTIxNiA0MWI3ZjgwMjY1ZGIxOWIzOTg0ODU3NTQzZmIzYzFhNmNiYmE2NDU5IHB5M2sKKzU5MjE3IDE1NjQ5YWVmMmRiNTVlMTI3MDA5NDFhM2NhM2YwMTU3ZTM5ZWU5M2EgcHkzaworNTkyMTggZWNjYjE5NzA0NGRkNDk1ZDdkNjEwNGYwNzY3NTdmNmQ2OGIyOGU4OCBsZWdhY3ktdHJ1bmsKKzU5MjE5IGMwMjRiODk0ZDkyOWNlZDRjYjZlYzUzOTBmODg0Yjg5NDNhNmE3YzMgbGVnYWN5LXRydW5rCis1OTIyMCBlNmNhOTJiMThjZjRkYTQyZWM1OTA3ZGViZDQzNjVjY2ZlMWU3NWIxIHB5M2sKKzU5MjIxIGYyMzg1ZDk4MjgyYWJhMGQ5MTBkMDA5OWI3OWFlY2FiNjFjYjVkMDYgcHkzaworNTkyMjIgYzRhNmQzZWM0MmMxMjQ5MjY3MWM3ODc3OWE5ZjA2NGMzMGQ3NTY4MiByZWxlYXNlMjUtbWFpbnQKKzU5MjIzIDZlZDc3ZmRhOGI5MTQ4MGFiOWJmNTE5YWM2Njk0MzAxMWIyNWQ0YzYgbGVnYWN5LXRydW5rCis1OTIyNCBiNmI1YjZjZGQyMDJhOTBlZDVkZTMyMDFjNzllYmE2YTAzYmE0MzVhIGxlZ2FjeS10cnVuaworNTkyMjUgOWVmODU3MjRmNGIxZjUyMzdhMzMyYTRlM2VlMTM1N2Q0MWM4Y2EyMyByZWxlYXNlMjUtbWFpbnQKKzU5MjI2IDQ5YWM1ODdlMjJlOTFmMDE3ZWIxZDAyMzAwYTRiMzhlN2ZkZTVhZTggcHkzaworNTkyMjcgMjk1Y2YwNWZkZDJjMzI4Yzc1MDFjNDNjMDY1NjFlNTk0Yzc2ODhmOSBweTNrCis1OTIyOCBkNjM5NDU4YzdlMDI0NWNiM2MwNGMxMGJhMzBjMTNkZDNlOTFkZmNiIGxlZ2FjeS10cnVuaworNTkyMjkgMGNjNTUyYWI3NmJkMzljM2YwNWMzMzI4MjA0NDRjYzUwMTlhN2JhNyBweTNrCis1OTIzMCA4OTRmZWUyNzlkYmNlZjE2MWJjMTFlN2VhNGZlZTE2NzI5ODQyMTdmIGxlZ2FjeS10cnVuaworNTkyMzEgNDQxN2FiNWIzNTFlNmNkODRjZGQwM2ZiZTdlMGI1Y2I5NTI5ODcwMiBsZWdhY3ktdHJ1bmsKKzU5MjMyIDAwMDQ4ZmVkYmFhMGUyMmUzZmY1NmI4YjljMjBhNDcyNWI5ZmZhYzcgcHkzaworNTkyMzMgM2VmNmRiYzQzNTMxYTFjYmYyODRhNmVjZWRiZjA4Y2U0Yzc0ZTM2NyBweTNrCis1OTIzNCAyOGM4MDI4MzcyNTIzM2QxZjQ1NjQ2Y2VjNzExN2M0NGM3MjUzN2FiIHB5M2sKKzU5MjM2IDNjZWJkZTQ3OGNjNGRmZTMzNzc1Yzk0MTM0MzZkZTE0NWE5NGI5YTIgcHkzaworNTkyMzcgNTMxMTMxMDZmZWJiNTk1NWE0MTE1Yjk5YzMwNjY5NmZiYWQxMzIwZiBsZWdhY3ktdHJ1bmsKKzU5MjM4IDNhYTExMGY2ODBhYjNlMGEwODE3Mjk4NGUwODhhZDU3ZjZkZmFhY2QgbGVnYWN5LXRydW5rCis1OTIzOSBmNTY0NDA1YzgxMDQxZGZiOGU2YjA1NThiNmY4ZWJhMzU0NzhkMDk4IHB5M2sKKzU5MjQwIGI0NDA1OWUwZjA3NTllZDEyY2FhZTUzNTllMWMzYWY4NTY0MGNiYTcgbGVnYWN5LXRydW5rCis1OTI0MSAyZjQ3YjIyOGJhMDY1NGEwYTBjMTViNThhMTAyZWI1ZWI2NWEzYzA0IGxlZ2FjeS10cnVuaworNTkyNDIgNzU3N2I5OWVjNTNiNTkyYmNiZTliZjQ1OTFkNGI3MWI3YzJjNDlhOSBsZWdhY3ktdHJ1bmsKKzU5MjQzIGM1ZjJjOTc4OTMxMzVmYmY4NzNhMDZkOTI5NGJkYjQ3NDAzOGZjMjEgcHkzaworNTkyNDQgZjRlN2M3MjliM2EyNGVjMmI4NWJlZmZjYjRlNTc4ZGViNjYzMGM5MyByZWxlYXNlMjUtbWFpbnQKKzU5MjQ1IDE2NWU1MjdjMzk5YWVlNTI4NjUwNGYwZTMyZGVlMmUyMjliNjExZjQgbGVnYWN5LXRydW5rCis1OTI0NiA1MWMxZWFlYjg3ODZhNjkyZDUzNjQ2YmMzY2JjOTg1N2VmYWM3ZjgyIHB5M2sKKzU5MjQ3IDY2NGIwYmM5MmI5NmZkZTllNzVlNjA4NzlhMGIxN2Y5ZGFmOWE1NjEgcHkzaworNTkyNDggZGNjNGJjNThhZjUyYjdlYzZmMDUwNTEyYTQ2YmM0M2VhM2UzNjU5OSBweTNrCis1OTI0OSA4MGI0MmRiMmVhYzkyYmU4OWVkMTQwYjY5ZTQyM2Y3NDFiMTBmNmVhIGxlZ2FjeS10cnVuaworNTkyNTAgMmJhYWJlZTQwNzAyZjg0NjBjMWJlNzFlZmEyOWQwMzU0MDg5ZjM3ZCBweTNrCis1OTI1MSA0Y2I5NWZjNDEyOWUwZTEzNTg0MWYwNzJmNDRlNTUxMGY2MGJmMzk2IHB5M2sKKzU5MjUyIDM1MWI3YmQ3ODZlNGFlZWQzM2Q5NmZmYWE0ZDYwZGJlZWNlM2U5NjMgcHkzaworNTkyNTMgMmIyMWYxNThhYjlmZjMxNTA4NjM4ZTgyYWJiYzE4ODMxNDViMzAyOCBsZWdhY3ktdHJ1bmsKKzU5MjU0IGMyMThkMWFjOTE2ZTVmZTQzYmRkM2Q1YTVhZDU4ZTM2MjBlMmIyNDcgbGVnYWN5LXRydW5rCis1OTI1NSAxMTBmZjYxNGVjMjhhZGRlZjYzZjFmY2JmNjBkYzY1OGQ2MGQwNTA5IHB5M2sKKzU5MjU2IDk0NGFlMzQ1ZTlmZmI0MWE5YTE4YWVmMjE4YWM5MjA3NjM1MGRlZDkgbGVnYWN5LXRydW5rCis1OTI1NyA4NmE3MzViNDJhOGZjZWQ5ZmJiZTBjNWJiNWY2MzVkZTczZDE5NTliIHB5M2sKKzU5MjU4IDIxMzIxZGNmMGFiNWQ5Zjc2ZjA2MWNjY2ZlMDBlZTNmNzg5ZDdkMTggbGVnYWN5LXRydW5rCis1OTI1OSA2ZDdmZDk1ZWYxNGFlOTdkMjYzMTc4NTVmMWEyOTdlYzNmMWExZjVlIHB5M2sKKzU5MjYwIGU2MzQ1MTFiNGFmNWRhOGNmZTY4N2MyMjNlODhmYzVmMmUzNDljOGYgbGVnYWN5LXRydW5rCis1OTI2MSBiMjFiMWM0ZjA0Mzk1YjliMmExYTUwYTA1OTVjZTYzNjBjYmUzNTljIHJlbGVhc2UyNS1tYWludAorNTkyNjIgNGYxYjIwZWQ5OGU1ZmE3NTc4MDgwMGQ0NjgzNzkwMGNjZThjM2IxMCBsZWdhY3ktdHJ1bmsKKzU5MjYzIDYyMjRkY2FjODA3ZDg3MzAwYzliN2M5OGE2YWRkNzk2YTIyYTNkZTcgbGVnYWN5LXRydW5rCis1OTI2NCBiZmRlYTY1Mzg4YzMxYTY1YmFiYmYzZGU4MTlmMWQwNDI5NTQzOTcxIGxlZ2FjeS10cnVuaworNTkyNjUgMTk5ZGZmODUzMGFkOWRiOTZiM2UwMDdmNTBjZTBkMzhlNzRhNzkwYyBsZWdhY3ktdHJ1bmsKKzU5MjY2IDgyMzE0MWFkYjA4MDFhYTQzZWVhYmZjMjNjZDE5MWI4NzZjMWVhOGMgbGVnYWN5LXRydW5rCis1OTI2OCAwODg5ZGFmNmQwZDk0YjVmOTY3YWQ2OTcwZTJiOWQ1MTdhYWE2YTZhIHB5M2sKKzU5MjcwIGYzMjQ2MzE0NjJhMjdjNmQyYTY4NGYzYmI1NzA5MTg1ZmY2YjhmMmEgcHkzaworNTkyNzEgMWFjN2JhYWViY2U3NzU0OWE2YzU3YjQyMjVmYzZlMWY3Y2Q3N2UxZCBsZWdhY3ktdHJ1bmsKKzU5MjcyIGFiYTNkMDk0OWExZDU1MmRkN2VlZmExOWRkYzRhNjhkYTc2MDZlZTEgbGVnYWN5LXRydW5rCis1OTI3MyBlN2JjYWM4NTYyNDUyYzY5YTQ4MjBjMmM1ZTM4OWU3M2YwYWUwY2U3IHB5M2sKKzU5Mjc0IDFlMjY2MDE1Y2Y1YmFlY2ZkNDMwNzgwNGIwYTRkZWM2OTZmNTI3N2UgbGVnYWN5LXRydW5rCis1OTI3NSBmZjE3NjZlYjJmY2VlZjMzZTU5YTY0NTM5NDcwOWJiZTBhMjE3YTlkIHB5M2sKKzU5Mjc2IDI3ZmRjYTNhYTdkNDY4ZDBjYWQxMDk4YzljMGIyOGYxZWYyZGViZTAgcHkzaworNTkyNzcgNDBmY2FhZGZiMTY2M2ZkOWRmYmFkYThmNWM1MzI1ZDBiYzllYjZmYSBweTNrCis1OTI3OCA0ZTFkNjQ5MTM2N2M3NThkMzA2ZDIyN2I2ZTdkZmUwNzc3NzYxZjNhIHB5M2sKKzU5Mjc5IGNlZGI3YWRjODdjNWY3YzNhMzdlYWJmMTBlMjc1Y2E5NGQzZTkxODUgbGVnYWN5LXRydW5rCis1OTI4MCAxNjlhODM2NDUzNjcxNzA5OWFkNDViNDFjMTU1YTY1NmMxNzUxNjY4IHB5M2sKKzU5MjgxIDU3ODFlMTkyOGJjYTY1NjMzYmQyZWM1YzNlZmFjMTM4NjkzZWUyMDkgbGVnYWN5LXRydW5rCis1OTI4MiA3ZjBlNDg1MzZhMjdiMzVjMDI5YWNjOTNmOWQ0N2MzZDdhOGU0NjQ4IHB5M2sKKzU5MjgzIGExYzNiZDM4Mjc3MWNlNDliYWU4ZmZmYzAwMDg1OTNmNDZjZDdkOGUgcHkzaworNTkyODQgOTFkMTE0ZDFiNTg1MTM0ODFhODM0Y2ZiMjdhMjlhMmU1MzIzOTAwYyBweTNrCis1OTI4NSA0ODZkYzRkZjM3ODk2ODcxMGI4MDY5ODk2Yjk0ZTM3OWZmZjIzYWM1IHB5M2sKKzU5Mjg2IDIwYWM0Nzc3YzBjYTEwM2U5MmY0ZTI5NzdlYWI4YzUyODUyYjdlZTMgcHkzaworNTkyODggODAzZWRmOWIxZGQ5MTQzMzI2ZWNjMmU2YWZhYzc1YmNmNjM4YjRkNiBsZWdhY3ktdHJ1bmsKKzU5MjkwIGVhZDBkNDdiMDEyYjU5MmI3YWJjZDExOWUwMjM2MTRmODNhMmNhZDMgbGVnYWN5LXRydW5rCis1OTI5MSA3ZWFiMTdiZThjYjQ5NzgwYjhkMDM2N2UwNDcxYmE1OTUzNjA3NDQzIGxlZ2FjeS10cnVuaworNTkyOTIgNjQ1ODIwODNjYjlhZmE0M2MwNzQ1MDkwMDEzYTdjN2NhYmE0MmIwZSBsZWdhY3ktdHJ1bmsKKzU5MjkzIGZlNmJlZGFmYjQ2YTY0NjBlYjAwY2VkMDhhYTJiODE0ZDllNzg2MjIgbGVnYWN5LXRydW5rCis1OTI5NCAzMGY1NDk3NzgyOGIzMzc1MGIzNWI2Y2M2NWQzODY5YTBlZDk1YTAzIGxlZ2FjeS10cnVuaworNTkyOTUgOTcyMTBkODYzZDEyMzRjNmU0YjYzZDc5MmQ3ZTljMDc4ODM1NDNiNyBsZWdhY3ktdHJ1bmsKKzU5Mjk2IDRkMTZlZTM5MzAxZjljMjFlOWQ5MmNkZjY5YjhhM2IyN2E2NDRkYjkgcHkzaworNTkyOTcgOTczMjY4NWVlZTE3MmFhNzY2NTllY2JjYTZmZjJlOTY1ZDE4NDdkZCBsZWdhY3ktdHJ1bmsKKzU5Mjk4IDhhY2Q4ZjVjNjA4MTc1MmEyYzhhNTYxOTkxZWExNmU4ZDlhNDJiMjAgcHkzaworNTkyOTkgN2U4OWY1Y2Y2YjIxNGY0YmJmNTc3MmQ4NjcyMGVhNzBkOGM5NjI4OSBsZWdhY3ktdHJ1bmsKKzU5MzAwIGFhNjAxN2EyZThmOTI2ZmQxMTk0MmQ0ZDcwMWMyNTM3ZDQ0Y2IzODkgbGVnYWN5LXRydW5rCis1OTMwMiBiZTdhODVjMzRhNGM0Zjg3Mzg2ZThjM2RlODA1MmUwMDM3YTM2OGUwIGxlZ2FjeS10cnVuaworNTkzMDQgYjYzNzM0OTMzNmZkOWQxMjI3YWYwNzM1MzBmOTUwNTM2Yzc3OGVhNCBweTNrCis1OTMwNSBlYWQ3YTA1M2Y1YjQzNGZiOWMzNmI5NjMyYzAzMWE0NTgzYmQzN2UwIHB5M2sKKzU5MzA2IDQ0ZDBjNzFkYzNjM2IzODlkZmVkY2YzMjg3N2ZlNTAxYjcwYzA3ODQgbGVnYWN5LXRydW5rCis1OTMwNyBhZWVmYjg5NzM4NGZiNDBkYTlmMGVkNmQzZjU2MWVmY2JiZjhkZTMwIGxlZ2FjeS10cnVuaworNTkzMTAgMGJmZWM2MDk4MzdlYzUwMWFiYzgxNjY1ODU3NjYwYmFiMTZiNDUwMSByZWxlYXNlMjUtbWFpbnQKKzU5MzExIGUwOGIxMmMzYjkxMzY0M2IwYWQ3OGM2NzI0NjBjNWVjZWJhNzhlYjkgcHkzaworNTkzMTIgZDc1MjEwYmJjYTk3YWY4NzllNjQ2MTEzODc0ZTFkNjY3NjQ3ZDMwYyBsZWdhY3ktdHJ1bmsKKzU5MzEzIDJhNDM1MDdjZDk1MzJlYjA0MWJmNTg0MTcxMGRjNGM4YjdhYjMxY2IgcHkzaworNTkzMTQgODI1Y2ZmZDZjMGNkYTc0ODY1MjQ4MTJkMDMyNmJkNzQ0N2MwNjQ5NyBweTNrCis1OTMxNSA4ZTc0YWYxOTdlNmMwMzI0ZDlhOTVhZjgzNDVkYmJkMGM3OWRmZmY1IHB5M2sKKzU5MzE2IDg0MmIzZDQ1YmZlNGMzY2Y3YjI2MjQyYmZjMjJlODI1Y2YzYjNhMjQgcHkzaworNTkzMTcgMDQ1MDVjOTg4YWJjZjdjM2JlZGEyNmM0ODU2NDdkOWJhNDRlN2JlZSBsZWdhY3ktdHJ1bmsKKzU5MzE4IGVjZTY1YzY5YjFkMzE0ZTBhMWI0NTY5NzFhNjk4NGUxODkzZDJiY2YgbGVnYWN5LXRydW5rCis1OTMxOSBjOGIzMzljZmVmMWZlNWI0NjJkYmNkOTdkMDk4YTNhYzg3NzQyMDI2IHB5M2sKKzU5MzIwIDMxYTNjZTM4YjU2YzM1ZDlhMDQ4YzJhMjhkYTZhNjYzZjJkMjNjNWIgbGVnYWN5LXRydW5rCis1OTMyMSBjOWZjNGIxZjliYzY5MmY1ZWQ5NzNjMDMwNDJhODE0NmI2M2VjMWFkIHB5M2sKKzU5MzIyIDBjZTYxMjIxYzYzZjg0ZjI3NWFkZjI1NDliOWUxNWY1ZWY1NDdmYTUgbGVnYWN5LXRydW5rCis1OTMyMyA2MGVmOWM0ZTQwMTI0ZGMzMzNjOWNhYjAyZmJiN2RhMjgyOGJjYjUyIHB5M2sKKzU5MzI0IDdlNTA0MmVlOTQyNDRmZGVlZGVhMmEzYWE3OGViMjJhOTdmODg2NjQgbGVnYWN5LXRydW5rCis1OTMyNSA1MzMyMGQ1NDRiYzdhZDkyYjlkMjhhYmI5YzQwZDZkMmM2ZDFhNTliIGxlZ2FjeS10cnVuaworNTkzMjYgZjBiMzMxOWI3MjY2YjhmMmNhYWUyNTFlZWUxYmFiM2NiNDE2NDk4MiBsZWdhY3ktdHJ1bmsKKzU5MzI3IDJmZmE0Zjc5OTRhM2U5Yzg0NWZhN2MxMjY0NDFkMDRlZjZmZWZmNmYgbGVnYWN5LXRydW5rCis1OTMyOSAxNmJhMDAxNjhjNmFlZGE0NmRlODE5NWZlMTA4YzhmNDQzNTFlMTg4IGxlZ2FjeS10cnVuaworNTkzMzAgMWU3MjZhZWFiNmE1MjlhY2NjNWI0OGFhYzM2MTJjNzY1Mjg2OTZkMiBweTNrCis1OTMzMSA4OGY4NjQ0NWJlNzczZTg1YTAxYmVlMDNkYTc0MzEzYjk2ODI5YjM4IHB5M2sKKzU5MzMyIDgyOTkxZmY3NWM1YTZlNGI3ZmYxZDk3ZjY1ODI4Njg0NzA0MjYzYzggbGVnYWN5LXRydW5rCis1OTMzMyAxYTJhNmRmMGZiZTAxNzBjODFiM2UzZjEzNzE5M2M2YjI0N2M4M2E5IHB5M2sKKzU5MzM0IGZiODRiZDk1MDBhNDBlYTZhZGI0OTYxMDhiNGE1OTMyM2Y0MTNmYTYgcHkzaworNTkzMzUgNTY1MDEyZDExMjNkZjJlMmE3Y2JiOWVjYjA2ZGRiMDNkOTFjMzJkZCBweTNrCis1OTMzNiA4MWUwYzBlMmE4YzEzODQ0YzM3OTcwZGNiOWI1YjE1OTFkZWNlYTdhIHB5M2sKKzU5MzM3IGFmODZiODljZTc4NDcwYTliOWZiZGYwNWI3MjZmM2YyYjI3MWViMGQgcHkzaworNTkzMzggOWQxNTI1MzA5MTBhNjUwZDNjYWQ0YWYzMDc0OTVhMDJmZGMwMWMwZiBweTNrCis1OTM0MCAxYTdkZmI2MWI0ZDhlMTZiN2U0NjUyMTU1ZmM5OWI5YzFlNGU1YTMxIHB5M2sKKzU5MzQxIGVmNTM5OWIzNTNjOTVkYTcwZTdlNzdiMmYyZjNiMzI4YTk1ZjQxNjAgcHkzaworNTkzNDIgNTY0OWY3Y2UzMDYyODU2MWNkZmE2NzhjYTMxNGFiYTUwNjdkMTIzNSBweTNrCis1OTM0MyAzMzQxNjFmNzRiOGU1ZmRmZWExMDI3MWZkMDFkM2UxMTU2YzQ4MTYxIGxlZ2FjeS10cnVuaworNTkzNDQgNjEyZDhkZWE3ZjZjZTMyMzkxMjM1ODRkODc1ZjUzMDU1N2FjMDdmYyBweTNrCis1OTM0NSBlNGMyMjUwNWYwMTFjZjA2NzBmN2VlMzQ4NjgwYzUxNTU0ZTYyM2ViIHB5M2sKKzU5MzQ2IDYzZTYxYzc3MGE5MzJjODQ4N2M1YTc4NThjMWRhYmE1MTA5MTI0NDUgcHkzaworNTkzNDcgYzI3ODc4MjgxYzhmNzgxYjY4YzExODA0NTRmZjYzNDk1OTUzYzEzMCBsZWdhY3ktdHJ1bmsKKzU5MzQ4IDVkOTkxMDgwZDg4ZTVmYTFiMTQ3NDA5N2Y0OGIxNDdiZGFiODI5ODQgbGVnYWN5LXRydW5rCis1OTM0OSAyNmE0Mzc4NjM5NWI0ZDJiMjJjZTQxYjM5NzFkNTgxOWVkOTRlMzA5IHB5M2sKKzU5MzUwIDE3YjQzOTAxYmI0MTVmYmEyOGFlZTkwOWNjZTY4ZDY3OTU3NzVjZDMgbGVnYWN5LXRydW5rCis1OTM1MSAyNzg1ZTIxNjBmYTZiMjcyNDIxOGNhNmZjY2M5N2NjODlkNGUxN2EwIHJlbGVhc2UyNS1tYWludAorNTkzNTIgMjUwYzRmZDRjYTU0MmQyNDhjNzgyMDkzNGVmMjFhMzNlMGExODE2ZSBsZWdhY3ktdHJ1bmsKKzU5MzUzIDg2NzE2MTM0ZWQ4NzZmM2I5ZjQxMjI4NDQxZDExZjY1OGQ0NmIxZDcgcHkzaworNTkzNTQgMTM0OWVhNDQxZTQxYmJjYTNmZjZiZWNjYmRmYmU2Y2E1ZjE0MGY1MCBsZWdhY3ktdHJ1bmsKKzU5MzU2IDQwZmM4NDA1MTdmYzAxMmJhMTQ3MWM1NTJmMGZjZDBmNjA5ZDMzMzUgbGVnYWN5LXRydW5rCis1OTM1NyBkYWQ5ZWQzMzliYzM0NThkNjBkOTVjNGM3ZTVlNTJlYmJlMjk2ZmNmIHB5M2sKKzU5MzU4IDkzNDA2OThhZTQyMTM5MDg2ZTIzN2JmYjgyODA2NDdmZDViOGFlYzQgbGVnYWN5LXRydW5rCis1OTM1OSA3OWFmYTRjNTUyMTFkZmFiNThhZGY0ZTAwNGVkNDllZDdkNGQ2MDg4IGxlZ2FjeS10cnVuaworNTkzNjAgNjIwMGE0NDdkYWExNjY3Nzk1MDE1MGY2N2MyODAwMjdlODFmMzM1MCBweTNrCis1OTM2NSAzMjBmN2VjNjNmMGJkZmQyN2UyZGRiOTFjMDY1YjI2ZDU1NDA5ODhkIHB5M2sKKzU5MzY2IDU5MGExNDQ3NjAxOWEzYzJiNjJjMDI2ZDAyZTZjOTkzY2NmZjk3NzMgbGVnYWN5LXRydW5rCis1OTM2NyBkMzNmOGNjNzA3Y2JmZTNiOTFkZTNkYzRlNDk4MDg5YTI3ZWUyODNkIGxlZ2FjeS10cnVuaworNTkzNjggODYwY2U5NzU1ZDE1YmQ3ODUxMDcxM2RiMzQyM2UxZjI4YWQ0NzIxYiBsZWdhY3ktdHJ1bmsKKzU5MzY5IDU1YzA1MDQyMzAzYjM5ZjA1NGM0NzIxM2Y1NjFiMGJmNTk3ZWM0YWEgbGVnYWN5LXRydW5rCis1OTM3MCBhMWJjNjU5NTRhOWNiYzFlMTdlY2E4NWI3MGJiZTcwNzc4ZTk4YWE3IGxlZ2FjeS10cnVuaworNTkzNzEgMDVkYTQ5ZWIxMmMxNGYwMzQ4YTVlYzNjMzMzYTkzMTQxODA2MmRjYyBweTNrCis1OTM3MiAxZjcyMmIwODU0MDI3YzVlYzJkNzBjMjQ4OWNjYjRjNDBiNDY5YTYxIHJlbGVhc2UyNS1tYWludAorNTkzNzQgNTM4NDc2YjZkN2UwNTJiNTBhODJmZGIxYTgyNGJmMDQxZTNlODZiNSBsZWdhY3ktdHJ1bmsKKzU5Mzc1IDE3YzE3ODA3YTYxMTc4YWQ2ODhhZTgxYjQxMTU3NmYyOTQ4NWY1YmMgbGVnYWN5LXRydW5rCis1OTM3NiBkNjRiZWI4ZmFkMDY2MTc3ZjkxZWU5MWU3ZmY3NmFjMGM5MzdiMjg3IHB5M2sKKzU5Mzc3IDg1ZTRiZmYzN2JiZGNiNmQ1NmYwMmVkZjg1MzIzYjA1YTE5MjZjNGEgbGVnYWN5LXRydW5rCis1OTM3OCA0NGMwOTBjNzQyMDI2MDIzY2EwZjBiNzMxNTI2YjNjNTc1YWQxZTdjIGxlZ2FjeS10cnVuaworNTkzNzkgMWQ5OGZjMjY1Zjk5MmU1NjZjY2JiZjAyZDNmYmZhMjhhNTM3NDgwZSBweTNrCis1OTM4MCA5YWQ0YWVkZjM0OWJlOTJhMjg0ZDMzN2ZkM2RkMjhiYTBhZTExMDE0IGxlZ2FjeS10cnVuaworNTkzODIgNmVmOGI1YjhlNWQ2ZmZlOGIwNGY2NzY4ZTViZjNkMDFmMGE2Mjg5MyBweTNrCis1OTM4MyBhZmQyOTk2ZjIwMjEyNDc0OTYyMDg4OWI2MjM5OGZmYjZmNDRlMTc2IGxlZ2FjeS10cnVuaworNTkzODYgYTUzZWY3Nzg1OTBlYmIzZDBkNjZlMDJmMjBmZjkxMWZmMjJmZjAzYSBsZWdhY3ktdHJ1bmsKKzU5Mzg3IGJjYzE3M2MzYWQ3MDkyYjNiNjcwZTIwYzkxYTNmYmMwOWJmMTFlYTEgbGVnYWN5LXRydW5rCis1OTM4OCBmMTFkZDRkMzE1ZGQwZGE2N2I3MGRiYTA0ZmE1YTExYmRhY2Y5YWJiIHB5M2sKKzU5Mzg5IDc0YmRkNTBmMDdlNWRjM2M0OGE2ZjQyMmM5OWU2ZmI5YmQyMTM5NTcgbGVnYWN5LXRydW5rCis1OTM5MCA3MWFkNWUyYmVkZGEyN2QwOWM1MTlhMTlkNjM3NjFmNjFiMGRjMDM0IHB5M2sKKzU5MzkyIDkzOWU4MTJjYzA5Y2U3YjAwOWI0M2FiOTIzMGNmMDcxMWJjNTk1MTcgcHkzaworNTkzOTMgNTBiMDNhZmEwYmJlNzkzMzdhZmQxMjhlNzAxMzIyMmE2YTdkYTk5ZSBweTNrCis1OTM5NCBjMjMyODM2Y2U1Yzk0MzY0NTQwMDUxOGYzYWZiZGQ5OGNlMzBkYzFlIHB5M2sKKzU5Mzk1IGNlMjgwYTA0ZjU1ZTBmZTg3YjVlOWNhMWVjNjBkNmExMWVhNjVkNWIgcHkzaworNTkzOTUgNjVlODIxNDBlMjgxYmYyNmYyZTIyZWRhMDVhN2Y5OTU2YzQyMGY4YiBweTNrCis1OTM5OSAyZmNlOTg5ZGEwMjEzY2FkNDg2NDUxM2MwMzRlZGY1MDcyODc3OGE3IGxlZ2FjeS10cnVuaworNTk0MDAgMzM1NmFkNjJjMmEzNjk5NzFlZWI3NWY3ZjJiMWU2ODU4ZTU0MjJjZSBsZWdhY3ktdHJ1bmsKKzU5NDAxIDU4MmQyYTgzODYzY2M0MzkwMzUwYzE2M2I5MTI4M2U0MmYyZjBmMDQgcHkzaworNTk0MDIgODA4ODQ2NDNhNmY5ZTdkMTM2Yzk2MjdkMTI3MTQ0N2UwNzgzY2I5ZSBsZWdhY3ktdHJ1bmsKKzU5NDAzIGM2ZmIzOTNiNmM4MTU4YjIwNTlmYzUwYjIxODY4OWZkMjQ0ZWM0ZTYgcHkzaworNTk0MDUgNzBjYzdmNzQwZDM0NzI2MGEwYmU2MjkwN2I0YjY2ODAxY2ZhNGRiYyBweTNrCis1OTQwNiAyMmUzZjViZDE0MDc4NjMzOGFmNDZlNGIyZTFjYmZhOGVmY2Y5YjY4IGxlZ2FjeS10cnVuaworNTk0MDcgNGRlNTk0NzQwYTg4Zjk5NmI3MDEwNjNjMjY5YTk3Y2E2ZjllNjFiMiBsZWdhY3ktdHJ1bmsKKzU5NDEwIGE3MWE3MWNhYjYwODI1YWMxNzI2ZTUzMGNjOWVlNjJjYWE1NDQ0NWYgbGVnYWN5LXRydW5rCis1OTQxMSAwYmIxMDhhM2MwYzk3Y2U4YjRjY2U1OTM3YTVhZTliZWFmYTczN2JiIGxlZ2FjeS10cnVuaworNTk0MTMgNzdjYjhmZjM0OTEyYWNkMDdkM2IxOWVmNTFhNGMzOTAxYzI4YjYxMSBsZWdhY3ktdHJ1bmsKKzU5NDE0IGE5ODc3YjdlZTg1ZGVjOGM4Y2Q0ZTk3YjliZTY3ZjY3ZWZiODI5ZDggbGVnYWN5LXRydW5rCis1OTQxNSA2MjRmNTExY2U5ZjI0OGQzOGFkMDhhMDI3M2M5ZDI0ZTBkNDRjODAzIGxlZ2FjeS10cnVuaworNTk0MTYgMDM5NDVhMWQ0ZmIzY2Y1OWY4MjEyZmZkN2I0NjE1MDI0NjI2N2QzOCBsZWdhY3ktdHJ1bmsKKzU5NDE3IDlhOTc2YTZlZTkzNjY5MWVmOWE0M2VmMGM0YWFmOTM4NWJhNzEyM2UgbGVnYWN5LXRydW5rCis1OTQxOCAxMThlNmQ2OGI0NGExMjg4YWI3NmU4NDk4MzE0MzExN2Q0MWY0NzI4IGxlZ2FjeS10cnVuaworNTk0MTkgZjJmNzM4YTQzN2Y4NzljNjQzZGQ0NjQ2NGQ1YjlhNGM3OGFjZTNhMCBsZWdhY3ktdHJ1bmsKKzU5NDIwIGFkOGI4MDQ2MDY0NGYxZjhmYTYzNTQ4NTdjMjM2NDNmOTA0NmM5MmEgbGVnYWN5LXRydW5rCis1OTQyMSBhYWQ2NWEyNDI0ZTM4ZDhhNzJhN2MwYTI2NTZkZjAzOWQxMDQwMzg4IHB5M2sKKzU5NDIyIDRlZTc0MzEwZWNmOTg4Nzc0YjM0YWJhNWRmYjgyYTU4ZDAyYjUwZTkgcHkzaworNTk0MjMgMTc0NDhlNWU5NjcxZGE0Yjk2MTk2MzA4ZjUxM2Y2MDIyZDg1OGQwMSBweTNrCis1OTQyNCA2OTlmY2RmNWJiZDc0YjAxMDg0NGZkNDFhMTdjYWE2ZWE5Y2ZjYjczIHB5M2sKKzU5NDI1IDZiNTE3YWMxMGU4ZWY4ZTIzN2FkMWI2YmNhZWJiMTYzYzQ1NDg3YjcgcHkzaworNTk0MjYgOTFjY2NlNzQxZDExNDFkOTZkM2EzZjMwM2MyNTQxMTY0NWRkNzA5YiBweTNrCis1OTQyNyA2ZDVmMDg2MDFmNGE5NWI0MjE1ZmM1YzlhZjQ3YmYxZGZhYzIxNDJhIGxlZ2FjeS10cnVuaworNTk0MjggNTBhNTBlNzUyMTQyM2EyNzE1MzgzOTM0NjUzMjkwYTVhODcwY2FmMCBweTNrCis1OTQyOSBhNWM0NzM5MTIxZTE0ZmQzZGExNzQ5YTViMGRlYzYyZTk0ZWZjOThiIHB5M2sKKzU5NDMwIDYxZGY1ZjUzNzk2OWU2YWFlY2I0ODJkMzY1NDIwMWFmOTQ2ZjI1ODkgcHkzaworNTk0MzEgZjY3ZWM0ZWI0NzhhODkwOGM5MDIzMWFhMjBmMDU4ZTZlOWMwZWRjYyBweTNrCis1OTQzMiA0NGEyNGI1OWIxNmQwMjEwNjgyZGRiMDJhYWZiYWRiMWM1ZWM1NjRjIHB5M2sKKzU5NDMzIGJlM2I2NjAxZjk4OWE2OGU1YTAxOWNkODM4NjU0NzBmYWQ5ZDFiZTQgcHkzaworNTk0MzQgMzY5YTRlMDZmZDMwMTE2MmI4N2ZiZjgwODkzMzUyYmRmYzA0ZjhlYiBweTNrCis1OTQzNSA2Y2U2ZTJmM2RjYjJkNjg3Zjk1YWQ0NTE2MmMxN2QzM2QxNjQwMzQyIGxlZ2FjeS10cnVuaworNTk0MzYgNWFjODc0ZDA5NTU2MzZkNTM5Y2RjZDE5OTYyYTBmYzhkYjJmODJkMiBsZWdhY3ktdHJ1bmsKKzU5NDM3IDY2ZGJlMTJkZGYzMWQ3NmM0OGE2MDNiZDkwZWYwMzQzMWZlYzI2MTYgbGVnYWN5LXRydW5rCis1OTQzOCA0MGJmZDZmMWNjMTY5MDMzMjJhMTZjMmI3MGQyZDA5MjBlZjk1MTE4IHB5M2sKKzU5NDQxIGQ3N2ZkMWI4YzBjNTQ3MzIwOTNmMTQ3MTIzYTBjNDhmZTNjMjVhMzIgcHkzaworNTk0NDIgNWFiZmQwN2U5N2Q0ODlmMjVjNWRlMjAyZWY2ZjM0ZWMwNDRiYjJiYyBsZWdhY3ktdHJ1bmsKKzU5NDQzIGFhYzMzZWUxYThmYzczMjc3ZGUwMTJmZGQxYjViNzMxYWIwNzY4ZDQgcHkzaworNTk0NDQgODg5YTY0MjFmMTM1YjU5ZWMyNDJkNTQ1MDcyYTBlOGY5YjcxMDhjYiBsZWdhY3ktdHJ1bmsKKzU5NDQ1IDljZjJiZjk0NjFjNDEwZDg1OGVhY2MxZDZhZWJhOWVjZjU0Mjg0M2IgbGVnYWN5LXRydW5rCis1OTQ0NiAzM2ZmNDBlNmUxMzc1ODk1NmUxZmU0NmZhM2VlZmM0ZGNjMmM2OGI1IHB5M2sKKzU5NDQ3IDU5ZTY0ZmEzYWQxZDljYTJlNzc1OTk5MzBiZTc1ZjNiYjI5MzFmNDIgbGVnYWN5LXRydW5rCis1OTQ0OCAyMDI4ZmViOTRiNTc1NTIwNDlhZTU4N2M0NzQ1NzdjN2UxYWNhMjBmIGxlZ2FjeS10cnVuaworNTk0NDkgNDQ0ZGEwOGY3OGE0ZGE3OWY2YzcxN2IxN2ViYTIwN2VmNjBkMTVhZSBweTNrCis1OTQ1MCA2MGE3NDBmNWE1N2EzYTE3ZTlkYTYyZDQ3NjZkZmJlYjgwMzRiMzRjIHB5M2sKKzU5NDUxIGEzODZlZjI4YjAwODcyODgzNmFhOTQzNGQ4ZTRkZWZiNzkyZDlmOTUgcHkzaworNTk0NTIgMTJjZjlmZmY5ZDBhZWQzNmQ2YTJjNmZlN2I0NDY3Zjg5ODdhZTViNSBweTNrCis1OTQ1MyA2YjM1ZGY0MGJjYWNhZmQ2ZDJkNWNhZWJkOTM2OTBmMDYwNjUyODFiIHB5M2sKKzU5NDU0IDc2Y2U1OTdjNzJlZTBlMTA1NWU1Yzc5MDdhOGNmNTg0MmRlNzE4OWEgcHkzaworNTk0NTUgNDc4OTVjYTZmMGNiYThmYjFhOGY3NTkwMjcxNWU4YTUwM2UxMDdmNSBsZWdhY3ktdHJ1bmsKKzU5NDU2IDFiMGNlOWZmYTk3MjZkNTM5NGM0OGI5YjU4ZDkxMzNiMzVmYzA1MzIgcHkzaworNTk0NTcgNjgyZDk3ODhhMDM4ZTcyZmJhYmIxMDAzNDY3M2MxYzZmZDAwNDIzMyBweTNrCis1OTQ1OCA2NmNlMzMxNGMxOTgyMGE3MWFiOTRhODZiMjkwZDk4ZjI3MjdlYzhkIHB5M2sKKzU5NDU5IDI0NzQ5YTM4MDQwOTM0MDFkZTgwMzE0MDdmNzgwY2U2NmFiMGRjY2QgbGVnYWN5LXRydW5rCis1OTQ2MCBlYjY1ZTEwNWU0YjhjZGFkYTIwMGE5NTJiZGZhOTRhNDgyNThiNTdiIGxlZ2FjeS10cnVuaworNTk0NjEgYTRhYWI3MmMyY2MwYmM0OTQzMTlkMjExMDVlNTdhNWRlODQ3OGVmMyByZWxlYXNlMjUtbWFpbnQKKzU5NDYyIDJjNmZlMmRjYzg4ZWExZDgxYmM1YzIxODk2NDM1ZDZmOWM1MTJlM2YgcHkzaworNTk0NjMgZTY1ZTljNjQ5Y2ZkYWZiMzhjMzRhODg0M2ExOWE4MzI5ZjJiYzRhZSBsZWdhY3ktdHJ1bmsKKzU5NDY0IGY5MDk4NzI5MTdiOTVkOWIzY2RkOWZmYWU4NTQ1MDk1M2NiYjU3NTIgbGVnYWN5LXRydW5rCis1OTQ2NSA3YWU2MDRiMzUzM2I1MzYzNTRkYTMxYTNjM2UzN2Y4YjUwOTY3YjdlIHB5M2sKKzU5NDY2IGI1MjM5Y2NmOTRiNWJhNzM5OGE3YzcxN2M0NjE0ODNiZDgwYzAyZDAgcHkzaworNTk0NjcgNzI3YWYxNjFjYTQ2NGFiZDI3MTMwNDRhY2RmNWY1MTM0YTY4MDNhMCBsZWdhY3ktdHJ1bmsKKzU5NDY4IDJlMTljM2U1MTFiZjU5MzlmNjNmNDZlYjY0M2RlMGU3MTI3YjBkMTYgbGVnYWN5LXRydW5rCis1OTQ2OSAzZTA4NjdhMDc3NjU3ZTQxNDg3NTUwNDRlMWJkODM2MjQ4ZDExYTIxIHB5M2sKKzU5NDcwIGViMjI2MGRjYjM2NWZkZTY1MTFmNDFhZmM0ZDgyNGE0ZjI5Mjg5ZWIgcHkzaworNTk0NzEgYTZkMTA1OWYyMmUyY2QxNDA0YmEwYTAyY2YyMjhkNTI0N2I0NGQ5YSBsZWdhY3ktdHJ1bmsKKzU5NDcyIDRlYmJhOWIyNjg4ZjQwNzJjMTdmNTllYjRhOTRkNDAzMGJiNTU4ZTMgcHkzaworNTk0NzMgNjZkNDc5NmVlOTJjYmZjNDY4ZGY4ZGY3NmMzZjIxYzczZDg5ZTFmOCBweTNrCis1OTQ3NCA5YTA5ZDQ0MmJjZTI3YjJkNzM3NmZkMzliYjExYmIwYzhlMWY3OTc0IHB5M2sKKzU5NDc1IDk5Mjk3ODJmNWNiNDhkMDdiNDQ1MTA2YzIzNWRiMjI2MjgxYmNlODEgbGVnYWN5LXRydW5rCis1OTQ3NiAwMTcwNzE0ZWIwNDQyMTU4YzMxMGEyNGZkYjQ4N2ZkYWExMTcxZTI5IHB5M2sKKzU5NDc3IGUxNzZiNGFlYTljNTBmNWExOWQyYWM1YjQzZDQ4NmI2Y2MxNGZlNWUgcHkzaworNTk0NzggYzJlNzJmZWI1M2IzNmViYzE1MGE5NjgxYjQxOGU5NTU3MDg5MmIzMCBsZWdhY3ktdHJ1bmsKKzU5NDc5IDU0MTA1MmIwNDRmMDllMzEwOTZkZGQ5N2U2MjljYmViOGI3YzQwNWYgcHkzaworNTk0ODAgN2E4YzhjNTY4NWZjY2IxNGZmY2I2ZjZmN2NhNjBiODk3ZDkzOWY2YSBsZWdhY3ktdHJ1bmsKKzU5NDgxIDZhZTk0YTJiYTVkZmFmYTAxYTBlNDM5ZDE3NTk1MWRhOWFiN2Q2NDAgcmVsZWFzZTI1LW1haW50Cis1OTQ4MiAyMjZhMDYyYWI0M2VmNzc3OTc3OTRiYWM4NWQxZTE4NWY1NjJiZTVmIGxlZ2FjeS10cnVuaworNTk0ODMgZDhlMDY1NDNjZGQ4MGUzNDVlZGUxNmM2ZTJhMjdmMDQ5ZTdkNWFjNSByZWxlYXNlMjUtbWFpbnQKKzU5NDg0IDU4OTI2MmQ4MWUyOThmZWVjNzA4NjMyZmRjOGI3ODljMTY1YjYyN2YgbGVnYWN5LXRydW5rCis1OTQ4NSBmMDRjMDM2NWM5YWFmYmIzOWU4YjYxZGFjNmNkNjJlYTUxNDAxOGRlIGxlZ2FjeS10cnVuaworNTk0ODYgMzA5NmIwMTI3MzNlMTlhNGI5YmNhMzczMDUwMTk4MjA2ZjAwZjlhNiBsZWdhY3ktdHJ1bmsKKzU5NDg3IDY2ZWQ2ZTAzZWJiZGE5ZWZhMzIxMjlhZDc3NjIzOTFkMTJmZGVkZmYgbGVnYWN5LXRydW5rCis1OTQ4OCA3MTYyMzg3ODA1N2IyZTRmZGJkYmEyYWI0ZjU4ODAxMDg3ODBjOTg2IHB5M2sKKzU5NDg5IDQ0YzQxOGIyYmY3ZjY2MDllZjcyMTBiMDMzMmRjODA0ZmYwZjU1YzQgbGVnYWN5LXRydW5rCis1OTQ5MCA3YTYyYzZkOTEwN2RmOTgyZGYxZjc1YmRhMzU1NWVjMzIzNDNkZTkxIGxlZ2FjeS10cnVuaworNTk0OTEgMjk0YjFhNzlmMjAxOWFiYzAyZDY4YjE5NWIyZTliNjkwZmY5YmIzOCBsZWdhY3ktdHJ1bmsKKzU5NDkyIDYzNWEyMzI4MDExMjYzZDI5NTdjYWFmZTYzZDRiOWM1NjJkMjIyYWYgbGVnYWN5LXRydW5rCis1OTQ5MyBhMzI3ZjNlMjYxNTYxMWJjNTQ4MzY4M2EwZTA5YjNhNDEwMmZiZGU2IGxlZ2FjeS10cnVuaworNTk0OTQgM2M4YjcwMmU1ZjIwNzBlZWNmMTA0NzFmNGNmNTA1YTc5NzIxNjM1ZSByZWxlYXNlMjUtbWFpbnQKKzU5NDk5IDk2MWU4OWNjNzkxMWMwYTZjMDM5NzA4YzMxNTU1NjczMTQwMTRlODEgcHkzaworNTk1MDAgOTA1YTk2OTk3YjdjODBlYjJkYTMzMzdiYWM5NWI4NzhkY2Q5YmM3YSBsZWdhY3ktdHJ1bmsKKzU5NTAxIGRjYTk1OTU2NzMwZmMzZjYxOTcwYTZlZmEzYzdiOWQwNmIxZWFkNTggbGVnYWN5LXRydW5rCis1OTUwMiA3ZGE5NDc1N2VjNWJkM2Y3OGY4NmZiNjlmY2QxZTE4ZThmMTk1YzA4IHB5M2sKKzU5NTAzIDIwZWQxZDQxNTQwOWVhYzBhOTFjZTcwZTcwZDJiNDg2OTIwY2E1OGIgbGVnYWN5LXRydW5rCis1OTUwNCAxYmI5YjA3YTAxZGRhMWViOTNjZTQ4NDYyOGM5M2UxZjZhZWQ3YmRhIGxlZ2FjeS10cnVuaworNTk1MDUgNDVjNzhlNTBjYmQ1ZTBlNWU3ZGFkZWU3NzgyMmI0YmJhNjZkM2RjZCBsZWdhY3ktdHJ1bmsKKzU5NTA2IDE5Zjg5NGFlODY0YWYxZGEyYTNjMjRlMzRiODdjMTEyNjI1ZjljNzUgcHkzaworNTk1MDcgMTRjNWQyNzVkZGYxNDAzYTZlMmRlYzcwNmU1YzVjM2VlNmVmZTNmOCBsZWdhY3ktdHJ1bmsKKzU5NTEwIDExNTcwNjg0NjJiNTM4ZWM4YmEwNjRiMzk3ZTI3NzI0M2ZjNWYwY2YgbGVnYWN5LXRydW5rCis1OTUxMSAwNmQxMjJiNGJmZmQ3YWVkOGJhZTQ2ZWNlNTc4YTU4Yjc0OWQ0MDM3IGxlZ2FjeS10cnVuaworNTk1MTMgMmNlNTBhMjYwZjUzZDQyM2I5NjMxYmU0ZjE2YzRiMjg2MGI5MGM1MiBsZWdhY3ktdHJ1bmsKKzU5NTE3IGU3MGFjYmYyNmNkYTg4MGUzMGM4ZmEyMTg4ZDZiNjZiMGNiYzg5M2MgcHkzaworNTk1MTggMzAzNzI3YzU4YjUxZTAxNGE2MzY5ZGY3MTVlYjAxMjYzZTRjMjQxOCBweTNrCis1OTUxOSAwNDNjYTliNjZmNzk3MjIwMDkzNTlkYzc5Y2U5YzI1ZTQ2ODlmNDExIGxlZ2FjeS10cnVuaworNTk1MjAgNjE4Y2UyODFhNTVmODQ1MjFmNmIyYTRkOTVkOWU5ZTljM2YyYjg2NCBsZWdhY3ktdHJ1bmsKKzU5NTIxIDRjMGViNTg3NDgyZjYwY2EyMTFkY2Q4MmM2ZTI0MDkwNDRiZGMyODcgcmVsZWFzZTI1LW1haW50Cis1OTUyMiBhYWQ5MGViYmZiNTA0YmQ1ODM2M2U3NmI4N2I5NTY4ODhhZWIxOTBkIGxlZ2FjeS10cnVuaworNTk1MjMgYTY0OWFhNTJiMDc5OTA1MDAxM2FiMjA0MWZjNmIzNDBkOTk2Yzk5YyBweTNrCis1OTUyNCBlZTExNzQ2MjEyYjJiZDI1ZTVmYjg4NWIxNmY2MDZkN2IxYWQwMGRkIGxlZ2FjeS10cnVuaworNTk1MjUgNWE1MGE1YjU3MGIwMmU2ZjM2MmJiNmUyMzlkMDY0ZmQ3ZjA4MWQ0MyBsZWdhY3ktdHJ1bmsKKzU5NTI3IDliNDBhZDA1N2Q1OWUyMDdjYWY1MTdiMjAyOWMxMDA4NzI5NWNkZmMgbGVnYWN5LXRydW5rCis1OTUyOCAyMTFhYmNmYjQ5MjhiMmMxNzFkNWUyOGJjOTAxOTVlYTI2MjczMTEzIGxlZ2FjeS10cnVuaworNTk1MjkgYTQ2Mzc0MmZhNDExYjg5OGIyMmU4ZDlkNGM3MDA4Mzk4Yzk0ZWFiOCBsZWdhY3ktdHJ1bmsKKzU5NTMwIDc3OTFhNWVhMTVjMzg0ZWUyZTUzNzFmNjYyYWYyNTQwNmYzOWUyMmYgbGVnYWN5LXRydW5rCis1OTUzMiBlOTdmMTA1ZDFjODM0MGZjYWJhZmIyYjExYWVjZWQzNWY1ZGFmMjQ4IGxlZ2FjeS10cnVuaworNTk1MzMgYTE0NDg5ZjZkYjZmOTJiODc2M2Y3OTAxNjdiN2MwYzM4MjE3YWM0YSBsZWdhY3ktdHJ1bmsKKzU5NTM2IGEyZDBjNmE4ODkwOTgwMTA5NTY0MTJhMTYyNmQ1YjY4YzFkMTc1MWIgbGVnYWN5LXRydW5rCis1OTUzNyAwYTU0NDUyOGRjOWY1ZDc3NzY1ZjZjYzEzNDA2N2MwMjc4OWYwZGU4IGxlZ2FjeS10cnVuaworNTk1MzkgMDVjNTAxYTk1MzA4NzUxMWYxNWJhYTBlMWQ5Y2VmN2M4Y2VjMTQ1MiBsZWdhY3ktdHJ1bmsKKzU5NTQwIDA5Zjc0MzE2ZDVmYjU1ODBhOWY2Yjc4MGE1Y2QyN2NjZTFkMDgwNjMgbGVnYWN5LXRydW5rCis1OTU0MyA3NWM2YmZkM2IxZjMyZWMyMTdjYTczMWU1YzU1NGY5ZmYzMTBmYWJhIHB5M2sKKzU5NTQ0IDRhNmMwNmE3N2RlYjE2YTA3OGM0MzYyZWZjNGVkNjc5OTRiMmViZjkgbGVnYWN5LXRydW5rCis1OTU0NSBjMGYyY2Y0Mzg5YzUwMjg4ODAxYjdkOGMxNWYyY2ViNGYyMzYyMDViIGxlZ2FjeS10cnVuaworNTk1NDYgMTFiNmY1YjY4YWQxYTcyOWUwN2M5YTA4MzlkYjc3OWY2NmRkZDAzNCBsZWdhY3ktdHJ1bmsKKzU5NTQ3IDU2ZjM0MmM4NGU4NzA3NWZmNmM5NmE2Nzc1NmE5ZWY4N2MzMjFkNjkgbGVnYWN5LXRydW5rCis1OTU0OCAwN2FhMTkxNzBhNjczZGE2YjNlOGM0YzY2YmZkODY4YjJmOTBjMGU0IGxlZ2FjeS10cnVuaworNTk1NDkgYjViMzA4MGIzNjBmZGVhZTQzYWVhODA3ZGM5MGE2M2M1YjI3ZDI1NCBsZWdhY3ktdHJ1bmsKKzU5NTUwIGVhYjAwMmI4ZTE3ZThlMmU4NDg3NjkxZDdiZjgwOTE0MDczNmUwYmQgcmVsZWFzZTI1LW1haW50Cis1OTU1MSBiNTljMzI4YmZhNjIzZTBmOTY2NGE5NjI3Yjk1MDY1YTkyYWYzMTczIGxlZ2FjeS10cnVuaworNTk1NTIgYTk5MTI4ZjZjOTdkZjM5MzBmYzM4OTk2YjA3YTI5NzA5ZDBkM2E1YiByZWxlYXNlMjUtbWFpbnQKKzU5NTUzIDdhYzExN2IzYmUzN2ViN2FlMzI5NzA3ODdlNjMxYjIyYWJhMDQ5OTQgbGVnYWN5LXRydW5rCis1OTU1NCAxNWZiZTdjNzkyODQ5NzM5MTc3MTE2MzE1MGZkMGU4OWRiNjMxOTZiIGxlZ2FjeS10cnVuaworNTk1NTUgOTU4NTgxMDk4MTUxYWI3NjFiNjFmZmM5OTE3ZTYyNjEwOTUwODI4MyByZWxlYXNlMjUtbWFpbnQKKzU5NTU2IGRjODg0YjYwNTBkNDVmYjUzMDZiNTE3YTRjMzkxNTNkMDgwOTgwNzAgcmVsZWFzZTI1LW1haW50Cis1OTU1NyBmOGQwZmFmZmNlODg3NmY1NTRiZjZlMTg1Y2QyOWU3MDNiZGE2MWZkIGxlZ2FjeS10cnVuaworNTk1NTggMWQ2OWFhYmY2ZjdmMjI3NDZiNGM3MjAzYWY1YzliMDE5ZDIyZTMyZSBsZWdhY3ktdHJ1bmsKKzU5NTU5IGQ1MWIzOWMyMTYwYTNiODU1ZjRmMjY1YzQyMGM0NjQwZDdmNTc0ZGEgbGVnYWN5LXRydW5rCis1OTU2MCBhMjhhYzliNjdiZWRiNTZhYTFlMjQ3MzgxOGNmYzEyOThmZTFlMWQ4IGxlZ2FjeS10cnVuaworNTk1NjEgNjE2ZmVjMGViNTE0YjY1MTA2MGM0MDlhMzkyOGQ0YTliMDVmOTZiMiBsZWdhY3ktdHJ1bmsKKzU5NTYyIGUyZWZmZWM5ZDVhZDdjZjA5NmZkYzQwYzZiZDM1YWE1Y2IxZWZlM2YgbGVnYWN5LXRydW5rCis1OTU2MyA0ZGMwMTQwMmQ3OGFmZTJjOWI0YTRiZDgwMDRlYjA4ZTI2NDczMzVkIHB5M2sKKzU5NTY0IDI2Mzg0YjgxODBjN2E1NWNkNmEyZWQ0NDEwN2NmNGUzMzkwMjVlYzYgbGVnYWN5LXRydW5rCis1OTU2NSA4NmEyNjc5ZGNhNDY0YTI4NGZkMDJiODE2NDZmMjY5MjA0OWEyY2U4IHB5M2sKKzU5NTY4IGY3YmM3OTExMmJjZmE4OWJiZWFiMDM1ZDhiY2VhNDNlODJmZTg5ZDkgbGVnYWN5LXRydW5rCis1OTU3MiA2MzE0YjlmOGE3ZTAzZjBjNTdlOTk1NDM4YTQ5ZDg5MWNmYWQwZDMyIHJlbGVhc2UyNS1tYWludAorNTk1NzMgYjEzNDdjNjhkNDU2ODVhZTJjODNmNTJjMjA5Mjg5NDY2ODFlZjM5NCBsZWdhY3ktdHJ1bmsKKzU5NTc0IGI4OWIwMzM0MzcyYmE4M2FiZjRkMmZjMjQ0YWMxNmJlM2RmOTcyODAgbGVnYWN5LXRydW5rCis1OTU3NSA1MWMxNzVjODZmMzZiYjNiZWQxMzNhMWIwYTE0OGYzZTI4MTllNWNlIGxlZ2FjeS10cnVuaworNTk1NzYgMTc0ZTBiY2IyYzNjMTMyYTI2YzlmMDRkM2NkNjBmZDlmN2RmMWNmYSBsZWdhY3ktdHJ1bmsKKzU5NTc3IDBhZDEyYzc5YWYxODVkZjgzOGYyMTZmNzc2ZTc0NDNlMWMyMzkxNzIgbGVnYWN5LXRydW5rCis1OTU3OCBiYjcxNmViY2IwODJhMWU3OTQ0MmU2MjU4MTNmYTE2M2JjNDY4ZDFhIGxlZ2FjeS10cnVuaworNTk1NzkgOGQ0ZDMzNTM2OTk1MGMxMjAyYjMzZmU5YTU4ZDU2ZGUxNWRjYTYyMiBweTNrCis1OTU4MCBiYWQ1NWE1ODU5NTliMTFmOTM0MWM5NmY2MTRlYWIxYTc1NTQ1ZWMyIHB5M2sKKzU5NTgxIDU1ZGFkYzhiNjhmYzE5NDJmY2UzNmJkNzNlNDg1MmZiNmQ4OWNhMDggcHkzaworNTk1ODIgMjEwYzUwN2RhYzk5NjE4NDgyMTc4MWNiMTNhYjhmZWViOWM5MzJmMyBsZWdhY3ktdHJ1bmsKKzU5NTgzIDZlYTBlMTVjZTU3MzZkZjc2ZGE1MWIyNWFlY2Q0M2ZmZjdjMzFkNjQgcHkzaworNTk1ODQgOGRlYWQ2ZjgxYmFlMDFiZTRjZDM0YmM5YjVjOTRjNWJkM2M4ZjA0YiBsZWdhY3ktdHJ1bmsKKzU5NTg1IDgzY2VkNDE3N2VhY2M0OTNlYjVkNTZlNGUwZDBjMjQ3MWRkODA0MGMgcHkzaworNTk1ODYgZWFlZmI5M2I1ZWQ0NDM4NDA2ZmM3ZjgwYTEwYWMwMzUyY2JmNWFlZiBsZWdhY3ktdHJ1bmsKKzU5NTg3IDMyZGQ5Yjc3NzNjM2MyMWQxZjUxNmVhZWE4ZmY5ODJkYzYwNDFiNjIgcHkzaworNTk1ODggNDQ1NDEwNzQ0ZmQ2MzczNTk3MTNkMGQyMzE3NmQ4YWI0OTViYmIzNiBweTNrCis1OTU4OSBiY2U3MGE0NzdmMWRhM2RhMzQ5M2JlYjRjZGNkNWZjN2UzOWNlMGZmIHB5M2sKKzU5NTkwIDJiMDNjYWNjMWI2YTRlMWFiNTgxMjliZWJmMGM0NTUyYzkxOGJhMjQgcHkzaworNTk1OTEgOTU3YmFhMzdjZTBkNGY0YjE1ZjI3YmQwYjQzMDQxZmZlZTVmMDhkNiBsZWdhY3ktdHJ1bmsKKzU5NTkzIGM4ZDMxMjc5ZmNkY2I2YTcxMmE5YTM1NjA2ZjZmMmM1YmYzMWM1ZjEgYWxleC1weTNrCis1OTU5NSAyNzUwZDUzMWZkYzAyM2RiZGI0MDJkYjYyZmIxOWNjODNmNGRhNzMzIHB5M2sKKzU5NTk2IDg2MzY5MmRjNDExZWYwMWYwYzY0MjAyYjViMTVhNDAzOGFkNmM4MzggbGVnYWN5LXRydW5rCis1OTU5NyA1ZjU5MTIzZTc4MWZmNjRjNTgxYTNmZWVhZWRjYWE4Y2VjODc3Yzk2IHJlbGVhc2UyNS1tYWludAorNTk1OTggMWRiNjI0M2U5M2YyOWJkMmMwMTU5ODllY2Q5ZmYxMmEzMzU4MDg0YyBsZWdhY3ktdHJ1bmsKKzU5NTk5IGRiNjc1MjExYzJmNzUzMTE2MmZkNzg1Y2UyZjljMDlmODY1ZDE5YWYgbGVnYWN5LXRydW5rCis1OTYwMCBiOWJlMTE3YjI4MmMzN2JiMzVjYTkyMDIyNWI5NWNhODNhNjk0NTgxIGxlZ2FjeS10cnVuaworNTk2MDIgZWRiNmFhNjI3NTNiYzc5MDdmZWYzY2U0ZjMzNjYxMjk1OTkxM2JlMiBweTNrCis1OTYwMyAwODQ2OGEyNjNhOTU4MThmOWIwYmY3YTk2NmZmMzJkYjA1ZmM2N2UzIHB5M2sKKzU5NjA0IGViNjk1YzU5MWU3MDRiYTQ5NzMxYmE5NzE2N2I1NmRlZDZmMzZjZWIgbGVnYWN5LXRydW5rCis1OTYwNSA3MWJiNzBmNjA5N2I4MjAwNGNkMTY4N2QwZDVkNDU1YTc2NTIzMzg3IHB5M2sKKzU5NjA2IDM2MjUyMzRiZjNkMmVkMzY4MDFjYTBjNjRlZDQ4NTRmMDUzNDI0YWUgbGVnYWN5LXRydW5rCis1OTYwNyBkYTJiMTA1YjBjNTIzZjRmYTM5MmFhY2JjMzgzZTEwM2E5MGE2NWViIHB5M2sKKzU5NjA5IDU2NzAxMDRhY2QzOTU0OTUxY2FlMmYzMmE5OWQxOTk4OTI2YTQxYTIgcHkzaworNTk2MTAgN2QyZGExY2Q4MGExMWJiNmY1NDhjNjRmMjZhZjZlNDUwZDAzMDQzYSByZWxlYXNlMjUtbWFpbnQKKzU5NjExIGYyOTIyNzM1ZmI3YWIyOWUzMDJiNDk5M2E5YzY5Yjg4YTUyNDI0MDYgbGVnYWN5LXRydW5rCis1OTYxMiBhZTBmMmVhMDQwOWY0NDAwZGQwNTMxMTAzOGEyMDk4NGE3Yzk0Yjc4IGxlZ2FjeS10cnVuaworNTk2MTMgMWZjZjFlNmQ4YmIxZGVkOTVhYmY1N2NjZjM5ZTBiYjg1ZDllYWJiNyBsZWdhY3ktdHJ1bmsKKzU5NjE0IDg2MzU4YjQzYzhiYjI1YzFiOTJhMWZhMWRmODVmYjk2MzkyMmM4YjcgcHkzaworNTk2MjAgOTVjZjNkNTNjYWUwMDFiZTZiY2Q4NDMzNjUyNDNlNTBlNDBkZjhmNiBsZWdhY3ktdHJ1bmsKKzU5NjIxIDgzYTEzOGZkZmRmYTk4MThhNTRiYmUyMjI4NTY5NmYwMzE2ZmVmYzcgbGVnYWN5LXRydW5rCis1OTYyMiA3NDJkNjU5NjFiMWZhNmNjNGIzOTkyYTcxZGQzOTU2ZGY3ZmZkOWMwIGxlZ2FjeS10cnVuaworNTk2MjMgMzcxNWYwMzc0ZjZhZTdkYzE4OWUyYTFhNTkzYjBlMzQ5M2E4OGNhOCBsZWdhY3ktdHJ1bmsKKzU5NjI0IGE2MzE5YWI0OWUwYTNmYmU0MjhmN2FlZDNjZmE3OWFkMmQ5NDRlY2IgbGVnYWN5LXRydW5rCis1OTYyNSA2NTU2ZjNmMjJjMTlmMWJiZWUzOTViNTUwOTEwYmQ4NDgzN2ZjMDFhIHB5M2sKKzU5NjI2IGYwNWFjMTQ1MTFmZjYyZjE1OTA1MmE3MTA3OWQ2YmU2NzBmMmUyZjEgcHkzaworNTk2MjcgMWViNDk4MjM3YmE1YjU4ZDFhYmJhMTMwNzBmMjI0NjY0Zjk3MzFmYSBsZWdhY3ktdHJ1bmsKKzU5NjI4IDQ0NmU4YjYwN2JkM2EwMGYzY2Y5NmFjMzE3NzJiYTJhOTE1YmQ4ODcgcHkzaworNTk2MjkgNDFiZmJmYzM2Y2Y3MjYzYTEzOTMwMTMzNDY3NzcwMTc0MDEyZjBhYSBweTNrCis1OTYzMCA4MWIzYWM1OTA4OWMxOGE0MWJkOTA1ZDdhYjFlNDY4ODFmYThiY2FmIHB5M2sKKzU5NjMxIGFjYjZhNGIyYzA3ZjMxZWI2ZTAwODgyNTllOTc5Mjg5OWE2Mzg3ODkgbGVnYWN5LXRydW5rCis1OTYzMiA0MjUxODUzZmE5YjkzNDhiMmJlZjk3MmVlYmJjZjQ2YmM0MTlhMzViIGxlZ2FjeS10cnVuaworNTk2MzMgM2VlNWRlMTc2ZTc4NTJlZDZiZTg3NDJiMDYxNTRmYmE5NTBhNzI4OSBsZWdhY3ktdHJ1bmsKKzU5NjM0IDdhODZiMjBjNWI0YjFkM2M0MzMxNTE3YTE4OTU5ZThlMDgxNTA1ZWIgbGVnYWN5LXRydW5rCis1OTYzNSBlYjEyMDc1MTNlZTdkZWU5YTU3YzU3ZTVmMDFlYzFiYmQxMjY5NDI3IGxlZ2FjeS10cnVuaworNTk2MzYgZGRhMjllNzEyODE1MDZmMWQyMjE4YTZlZWYyNDc3Y2UyYjA0ZjFhMCBweTNrCis1OTYzNyA0NmQ1NDAxMWUxZTU2M2M0YzM4NzhlYzgzYzFjZDFiZTA3OTdlMjU1IGxlZ2FjeS10cnVuaworNTk2MzggZTM2NmM0NDk0OGEzMTQxYzhjYjM1NmY0NGNlODU3ZDBiZTliZTY4MCBsZWdhY3ktdHJ1bmsKKzU5NjM5IDYwN2U2OGNiMDk0OGQ3MDdhYmM4ZjkzNmE3YjdiNzQwM2VjNmYyMjYgbGVnYWN5LXRydW5rCis1OTY0MCA5MzgwZDVkYTc3MTY4ZTBlOTdhZjI2MjBjNzIyODQ3ZjkxZDliOTIwIGxlZ2FjeS10cnVuaworNTk2NDEgOTAxZjcwZGIzYjM0MDQwMDhlODI0MDhhZDAwNTM5MjI1ZGFjNWI4NyBsZWdhY3ktdHJ1bmsKKzU5NjQyIGVlZTFiNzZhOTRlMDExOGEwNmJjY2U2NmUwYjMzMzcyM2MwMzRkZWIgcHkzaworNTk2NDYgNjUyZjdhYjU5MThiMmY3ZDljYWRhZjBmNGMyY2U0NGRmYjEzN2RkOSBweTNrCis1OTY0NyAzZmY3NzhhMzU0MTA0OGJmZTg4MDkwMTY4MTczMjc3ZDA3ZDFjZmMyIHB5M2stZ3JhbmRyZW5hbWluZworNTk2NDggOWIyZTI1NTFhZmJlMzc4NDNhZDlkN2U2MTc1YTJmNGI2ZGYwODNjNSBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjQ5IDk0YTI5MzczNDkzYmQxMDA0ZmNlZmY1MGM0MGFlOTdiMTBhZjVmZTIgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MCBmNjdiMmU4M2IzNDc1ZGRkZjlhYmVhMmIxNDZhODZkNThlYmY5NWY0IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTEgZGIwYzhiNDFkZGIwZDVlNGMyOWQ5N2IwMGY4ZTY0ZTBkOTFjYzQwOSBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUyIGI5ODhlNGQzNWVmM2NkMGQ2NWNhYWRkZTVmMDRlYzJlM2Y1M2Q5YmQgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MyBhMWZmMmZhZWRjNmJlOGZiZWQ2NmNhNzk3OGFlNjVkMWQ0YTZiYjk5IGxlZ2FjeS10cnVuaworNTk2NTQgZDlhNGE1ZjAxMjFlMThiMWRlOGUzZmM2NDQxMDE4MzkyNGFiYjEyNyBsZWdhY3ktdHJ1bmsKKzU5NjU1IDZjMGM1M2I5ZjM3YjRmOTk0NzFlNjI5Y2M0OTM2Yjc5MjFlNzk0YTMgbGVnYWN5LXRydW5rCis1OTY1NiAxYTU0OGE2NTRjMWEzZTY5ZTBlNTA1NTQ0MTYwYWY3MWRlNzU4ZjI1IGxlZ2FjeS10cnVuaworNTk2NTcgOWFiMzFmYTM2ZmI1MmZjMTMyYzU3YjlmNDYzMDcwYWI0MjM5MTYwMiBsZWdhY3ktdHJ1bmsKKzU5NjU4IGY2NDVlMDdkODcwYWY1OTZhZjFjZTBlZjcxY2JjYjc3MGFkMDk0MjggbGVnYWN5LXRydW5rCis1OTY1OSBmMGU5YzNkMTY3NjZkMjQ2YWY4NTAwMDBjZmNmNTRkNWIwNWU4YjBjIHB5M2sKKzU5NjYwIGRhMzA4NzdmOTc3OTk5NDIwZGQ4ZjM4Y2UzNDExMmZkYzc4OTE5M2QgcHkzaworNTk2NjEgMDk5YTE3ZTJkMmJkNDlmMzRiYWZhZjE2NDA2Y2RiOWI5YWNkOGQzNSBsZWdhY3ktdHJ1bmsKKzU5NjYyIDY2YmVhOTEzMjRjZDkzMzcwZmQwYzY0YWRjNTFlOTQyZDViOGE5NWMgbGVnYWN5LXRydW5rCis1OTY2MyAxZTZmMjdiNjk3M2NjNWEwNjcyZTNiZTljZDhjNTk1ZDhiMTQ4NDc2IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NjQgODk5ZmVhZDllYWUyMWI2YTBmOTk4ZWYwNDNiZGEzOGZlMDI5YWMxZiBweTNrCis1OTY2NSBlOTA3ZjgxNGQ5YTMwNzE5YzhiN2I2YzdjMGFjMWRiYjZiNTVlYmRjIGxlZ2FjeS10cnVuaworNTk2NjYgNjZkYTM3N2JhODEwNzg5MzMyYzBhZGQyYjBjNDI2YWFhYWE3ZWMzMCBsZWdhY3ktdHJ1bmsKKzU5NjY3IDZlOTNkMmQ2ZWIyODAxZGJiZDFmNDkwYmU3YmI5YzI3MWZlNTMyZjIgcHkzaworNTk2NjggZTlmNDgwYjRjMTMzY2Y2ZTljZTVkYjhiODg3YTJiM2ZjODhlYWQyZiByZWxlYXNlMjUtbWFpbnQKKzU5NjY5IDVjZDI4ZjAxMGZjNzFiYTBhYzk3MDIzYzI2MmQ5Mjk3NjY5OTcwM2IgbGVnYWN5LXRydW5rCis1OTY3MCA0YWUzMDA3ZWIwZjQ3MTYwNGU1ZTNjYzRkNjE2NzM3NjYxYTRkNGNmIHB5M2sKKzU5NjcxIDRmOTcyM2Q5Y2EzMjBhZjY3ZTlmNjBhMmMxOTdkYTJlNmZkZmQzMGUgbGVnYWN5LXRydW5rCis1OTY3MiA4Mzg2ZWVkYTIxYzhlMzU4ZjlhNGU0YWIwM2VkZWJhYTZiMWQxOTkwIGxlZ2FjeS10cnVuaworNTk2NzMgYTNmMTg2NzkwZmY2ZTA5YWE0MDJjOGM0ZWIxOGExOWFlOTRlN2ZmNyByZWxlYXNlMjUtbWFpbnQKKzU5Njc0IDE4YTFiYzQ5YTY5NmUwNWRkNGU2MzViOTU2OTUxMjUzNjI2MzUxNTAgcmVsZWFzZTI1LW1haW50Cis1OTY3NSA0YzA1NmMwYTBiOWY1NjY5OWE3OTYzNTM2NzEzN2M1ODU2ZTkyZWNlIGxlZ2FjeS10cnVuaworNTk2NzYgOTY4YmRhODFlNmM4MGJhNWZmZmYxNWRhYzc3ODhhYmI4NmI3YjE5ZiBsZWdhY3ktdHJ1bmsKKzU5Njc3IDI3ZTRlNTMwY2YyZjZmMDY5NTdhNWU1MjljY2VmNWM2YzdjNjc2NjIgbGVnYWN5LXRydW5rCis1OTY3OCAwY2JlOTRiZWEyYzdlZjYxMGRlYTdiMDVkMWJhYjlmMDRhZjlhZjQ0IGxlZ2FjeS10cnVuaworNTk2NzkgNjIwOGIxN2QwZGJlZGYwZGU4MmQ5MGQwZDlkMDQ1ODQxN2QwZGQ5MSBsZWdhY3ktdHJ1bmsKKzU5NjgwIGI5MWNhODdlNmYzMjcyMTQ3Zjk0YWI2NWNlYTc2OGIyNDk0MjAzMDcgcHkzaworNTk2ODEgZmEyZjcxODNiMWFmYzU1M2MxN2I3ZTZhZTVkMzM4MjVhOGEwMWZjNCBweTNrCis1OTY4MiBjNzMyMTBlYTYxYzg2NTE2ZWVmMDIyYWJhODhjNzhkMWEwZmIyOTc2IHB5M2sKKzU5Njg1IDAzNmIwMGRjOTc2N2Y3NWUyMzAwNWY0M2E1NzhlZDI1NDk0NjA5MWMgcmVsZWFzZTI1LW1haW50Cis1OTY4NiA1M2FjM2ZjNjliNzhiMWZkZTA4MjVmZjM2YjhjNDY4NGI3MWI0ZGQ3IGxlZ2FjeS10cnVuaworNTk2ODcgOGQ2OWVkZDNkMjkwMjg3ZTlmZGU1YjdlOWI5YTUxYTQwNmVmMWUxZiBsZWdhY3ktdHJ1bmsKKzU5Njg4IDE3MzU5YzlhNGE3ZDI3YTE4YTIzNmNhNjQ1M2Y0MzlkZGIzMzliNjMgbGVnYWN5LXRydW5rCis1OTY4OSA1ZTAxNzBkM2M0ZGE1NDRjOWExN2YxYTZkZDNiYTZjZjI3NTEzZDUxIGxlZ2FjeS10cnVuaworNTk2OTAgOTQ2MjljOTU5NjVhMTE4NGYzM2MwODJjODFlMWUxYTNlNDVlMzgzNiBweTNrCis1OTY5MSBjZjI2NjdlMmJhMmY1ZTJlNDE3N2NjYTAxYjVlY2I1ZDllMzAxNWQ4IGxlZ2FjeS10cnVuaworNTk2OTIgNTE3MWI1YWU2ODhhMjE3YjllYzhjY2I3YTNkMDVlNjg4ZGEyMWQ1NyBsZWdhY3ktdHJ1bmsKKzU5NjkzIGQxYTM2ZGRiYWE0OTJlOTI2Nzk5YzU0N2NiYjk1OTgwZTgyNWMyM2IgcHkzaworNTk2OTQgY2JhOWZmNzYwNDMwNDhlYzJkYzdiMzIwNGMwZjVlMTQ0YjMxYWM1MyBsZWdhY3ktdHJ1bmsKKzU5Njk1IDI5ODZiYjQzMjIyMjE3MjFhYmU0YmE0ODY5ZmZlMGU3MGFkODcwNmIgbGVnYWN5LXRydW5rCis1OTY5NiBkZTAwYWYwM2JiNGQ1Njk1NTRhZGY5ZGNiZDMzMzBjYjU4YjA5N2ViIGxlZ2FjeS10cnVuaworNTk2OTggZGNkZDFiYTA5NjQxMGU5N2MxMDk0NTgyNzMxYmJmYzcyYWY0MmVhZSBsZWdhY3ktdHJ1bmsKKzU5Njk5IDc0MmNhZjUzNTU1NzZmZTZlZGYzNjM5MWU0NDY3MzQ4ZjAxYmRkOWUgbGVnYWN5LXRydW5rCis1OTcwMCBhZDJiY2JlODNmZGMyZmQxNGI3NTlkMTVjZWFjZGM3ZmQ2YmVlNjExIGxlZ2FjeS10cnVuaworNTk3MDEgNzY0M2E0M2YyNWExZTY5N2YxNmIyM2YyYWNmOGYwYzZkYmZhMTc3MiBsZWdhY3ktdHJ1bmsKKzU5NzAyIDEzYWFiYzIzY2YyZTJjMGUyMjU5YzliNTA2Njg5NDU4MTg4OTc0MzggcHkzaworNTk3MDMgNjFjMTY0ZjI1NDM1NjQyYzMzYWE2NjYyZjlmNjkzZWQ0MTViOTRjNyBweTNrCis1OTcwNCA3NmE4OWRkNGE1MTIzNzI3N2JlNTU1ODE0NDA1MjUzZTM1MDJlNTUzIGxlZ2FjeS10cnVuaworNTk3MDUgZDJjMWJhMDk5MjkwODNjODI1NjY0ZTBiZDhhMGQ0YTE2OWY5ZDk5YiBweTNrCis1OTcwNiAzOThiNjI0Njc1OWZjMmQyZTNjYjRkMDNhZjVlMThhMTllYTI5NTgzIGxlZ2FjeS10cnVuaworNTk3MDcgNzdjMzdlMzJmZTM1YjVjMDcyNTQzZWVjOTgwMTM4MGY2YTI2NDJhZiBsZWdhY3ktdHJ1bmsKKzU5NzA4IDEyN2NjMmZlYTlmYjlkMTVlYzA2NjZkZmJjYTE3MzI0ZWQzMTE3MWUgcHkzaworNTk3MDkgZGNlMjU5NDg5MThkMGQ5OGEwMzMwZGQwMTgyYjk1NzI3ZjQ2MmJmNCBsZWdhY3ktdHJ1bmsKKzU5NzEwIDgxNjY5ZmJjODQ1ZjEyNDk3YzY0ZjY3OTUyYTQzYTdiM2JiZDNmZmQgcmVsZWFzZTI1LW1haW50Cis1OTcxMSA1ZDdkMmFmNTlhZmUxY2FiNTIxYTY2ZGU3YWRmMTEyYmY5ZDc0MWYxIHB5M2sKKzU5NzEyIGJkMDI1OGRmMzMwZWM1ZGFlOWIxNmQyZGZjYjgyZWY4ZjE3MjA1YTQgbGVnYWN5LXRydW5rCis1OTcxMyAyOTJjNWU1MWEwZTU5NjE4ZWY4YThiNDhlMDAzOGI3OTIxYzQ2MDExIHJlbGVhc2UyNS1tYWludAorNTk3MTQgOTAxOTA4NmZkMjBhNGRiNzUyZjI3YmE2N2EzM2Y4ZjkwMmY5ZDI1ZiBsZWdhY3ktdHJ1bmsKKzU5NzE1IGQwNzdiMGM4OTNiYzY1NjE5YWI3MzA0MjY2NjZlNTc3ZTg4YTI4NTIgcmVsZWFzZTI1LW1haW50Cis1OTcxNiBiZmVkNzAyNzdhYjNiNjg2NTM3OWY3YTM4NTg5MzU3YjVlZjZmNGMzIGxlZ2FjeS10cnVuaworNTk3MTcgNjEzNDE3NzViYzQyMTcyMzE1ZTE4ZWIxNDRmN2E3NDUxN2RlNmVjZSBsZWdhY3ktdHJ1bmsKKzU5NzE5IDgzY2E3MzVhMzk5NWE3MjE1NWY2YTBmZWZjNjA2MmIyYWJiYjE0OWYgbGVnYWN5LXRydW5rCis1OTcyMCA2NDZjZmYwOTYwMzliYWZhNWU5Y2YwMGJiN2UwYmZjODM1ODJlOTJjIHB5M2sKKzU5NzIxIDczYmMwMDIyNTJiZmQ1ODNiZjZmZTVjMmRkMmUxZDI0ZTIwMzJhN2MgbGVnYWN5LXRydW5rCis1OTcyMiAzNGM5MWRmNjA1MzI5OTkwNjQxOGM5YzVjOWEzZTNmYWQ5NDEyNmUzIGxlZ2FjeS10cnVuaworNTk3MjMgNTdjN2Q0MmY2Y2RlYjE4YTdhZTIzOTZkZDJiNzU2ZGQ1ZDkwMDVkYiBsZWdhY3ktdHJ1bmsKKzU5NzI0IDIwMzdmNGNhYmIwN2NjZGE2M2RlM2YyMWU4MWM2MzUxZDU2ZmJhOGIgcmVsZWFzZTI1LW1haW50Cis1OTcyNSAzZmNhZjZjYzMwNmQxZTRlNmFhOWZjZjIwZmFlNzYwZjE3ZWNhNGUzIGxlZ2FjeS10cnVuaworNTk3MjYgMmUyZmEyOTE5MTRjNTNjZDRkNGRiYTZiZTIxODZhMDJjOWVmOTFjZiBsZWdhY3ktdHJ1bmsKKzU5NzI3IGRjYzdjODY1Yzc3YjEwMTdkYTkyMDM4ZjEzYTIyNGVmMGRmNzc1NGUgbGVnYWN5LXRydW5rCis1OTcyOCA3YmI5MWIzYmEwZWNjMjg1MzUwMmYwZTJlODQwNGJjMTVjOGM4OWUyIGxlZ2FjeS10cnVuaworNTk3MjkgNWEwY2JlMzZhNjAzNzc5NWUzYTBkNWYxZjJiZDBhYTlkZmVmYzg0YyBweTNrCis1OTczMCAzM2EwYWU3MDY3MGY0MzY5MjM0ZDg4OTg1NTMwZTY5MDBkMjRlZWI2IGxlZ2FjeS10cnVuaworNTk3MzEgOTRlZWFlZWIzY2U5M2RmOGQyYjNhNzExZTc2MDc2NWQyNmYzZDA4OCBsZWdhY3ktdHJ1bmsKKzU5NzM2IGU0OGI0NjlkMWQ4NjZiNzdlNWI2N2JiMjAwYWM0ZGYyM2QzYmVhNmEgbGVnYWN5LXRydW5rCis1OTczNyA3Nzc0MjlhMjMwMjY2N2YxZDU2MzNjZDg0NDJlOGQyZDlmM2M4NGFlIHB5M2sKKzU5NzM4IGMwYzIzNjlmOTQyNjdlYTE1MGNlMmUyZTJmZWM2MzdlNzRmMThkOGEgbGVnYWN5LXRydW5rCis1OTczOSA5Y2FmOGE3YjExYTZiODljMTc5M2JjNmY0ZDRjMDhjYjg1YzlkNGQ0IGxlZ2FjeS10cnVuaworNTk3NDAgYmJjOWU4YzA4Y2Q1ZWVlMzdjMDM1ZTkxMWUxMDRjMTY3YzQwNTZhYyBweTNrCis1OTc0MSBmYzgxODZiNTAxNDViOWQyYjdmMmQwMTRkNWU5ZDk4NWUwODZjNDU1IHB5M2sKKzU5NzQyIDBjMGFlYmM2NjU2Zjk0ZDI1MzM0NGNlNGExMmEwMzNmMzg5NzZiMzcgbGVnYWN5LXRydW5rCis1OTc0MyAzYzZmNzU0M2JkZDZiNGFhZDk3ODg5MDYzY2Y0Y2I3ZDk1NjE4YjUxIGxlZ2FjeS10cnVuaworNTk3NDQgMDFkNWI4ZTdkMTIxMjA1ZWM3YjIxYThhZjBkNzNhNDhlY2JjNDg4YyBsZWdhY3ktdHJ1bmsKKzU5NzQ2IDE0MjZjZDEzNjczOWZiZGVlMjdmZDA2NzRlY2I5NDY4M2UxNGIzNjYgcHkzaworNTk3NDcgMzFlMjk0ZDA4Y2UxYzlkZjNmMjg2YzUyMzI4Njc5ZmMxNWIxNmFiZiBweTNrCis1OTc0OCBiZDg1ODc5ZWZmYTY5ZGFjZGM5OTUxYzg3NWVlZjQ0NjVmMjQ3NjNhIHB5M2sKKzU5NzQ5IGQwMGRlMGNmMDRlMjc0ZjAyM2EyZDI0MWVkYWUzODU5OGU2OWFiNjYgbGVnYWN5LXRydW5rCis1OTc1MCAwZjFjOGJhYjg5OGRiZDliY2QzOWM0NjYzMjIxZGNkMzdiODUwNjdiIGxlZ2FjeS10cnVuaworNTk3NTEgOWQ4Yjk1M2Q0YWY1MmVjYWJkMDZkNDA0ZWM2ZmIyOWY0MGQ0ZDRjNyBweTNrCis1OTc1MiBlZGJhMGExYjdlYmUxMDhjNmI3MjE1MmJkNDg5Nzk1NTU0ZDBlNmVkIGxlZ2FjeS10cnVuaworNTk3NTMgMjQ0YmIzMWMwMzZiZDU0ZDczMWVlYmI4MDAyODFjN2UyODc3YTAzOCBsZWdhY3ktdHJ1bmsKKzU5NzU0IDExNWRhMjI2OGNkOTU4MTEyM2I0OTk3YTgwN2QwNzgyZDRkZGU3YzUgbGVnYWN5LXRydW5rCis1OTc1NSA5OGNjMWNjNTc1NzNjYzA2YzJhN2U0ZDc5YTUwYmMzODgwOGNlYjA2IHB5M2sKKzU5NzU2IDA4MTM4YmMzYzA2MGVjNmYzNDZiMjkxNmZjNDE4OWU3Mjk4ZjdkYTYgcHkzaworNTk3NTcgNGU3NGMyNzY3OGJhMTVjZTk4NjRkZTk5MmYzMDdkNWIyNjc3ODdkMSBsZWdhY3ktdHJ1bmsKKzU5NzU4IDY1ZmU2ZTU2ZDRmOGQ1YzlhMjkwMmJlZTlkYjg1M2RjZTg2NGI0M2IgbGVnYWN5LXRydW5rCis1OTc1OSBhZmIxMzM3OTA2YWU4YTUyZThlYmRhYjc0YjVjZjFjNjRkY2Y2Njg4IGxlZ2FjeS10cnVuaworNTk3NjAgMjgxYzk0NzkxNDJhM2U0YWJhMDZiMjYwMGU4NGI3YmIzNGY3NzY5MiByZWxlYXNlMjUtbWFpbnQKKzU5NzYxIDhiZjZhOWEzYTYzMjliZTM5Y2QwMGJlODA2NTA0ODlkZDg1ZjE4YjAgcHkzaworNTk3NjIgNTZiYTc5MWQ4YjM1OTIzNTQ3YmYyY2FhMzdjMzlkOGFiNDk3ZjdmMSBweTNrCis1OTc2MyAyODQ4ZmZiOWQxN2E2YzNjOWIzOTI2NmFhNzA4MjI2ZjlkYTViNzBmIHB5M2sKKzU5NzY0IDMyNjgxYWU2YzVjMTQ4ODU1ZmI3NDZkNDJjMTExYzRiODE1Yjg2NDMgcmVsZWFzZTI1LW1haW50Cis1OTc2NSA3YTIwNjViNWJlNzViMzIzNWY1OTI4ODViZDFhYWU3MGVlNmZhYTBhIGxlZ2FjeS10cnVuaworNTk3NjYgYmVkZDhiZmQzZmQyNjgwNDc5MDQ0NjU0ZWVlZTJmODE5MzBkNTA2MiBsZWdhY3ktdHJ1bmsKKzU5NzY3IGZhYjJhYTZiODA3MzYzMzJkY2YxMzAxODkwYWE4NDdjNDU2MTZlMDUgbGVnYWN5LXRydW5rCis1OTc2OCBlNWJmNjY5NmUyZTM2YTc0Y2M3MWEwYzg0ZDQxMTBlZTg3MDgzNzA5IGxlZ2FjeS10cnVuaworNTk3NjkgM2JjMDQwNWRlNDkxNWQ0ODdjNDVkZWNhM2Y1YmJkZjlmNWJjYmIwMSBsZWdhY3ktdHJ1bmsKKzU5NzcwIDQzMjFhNWFiZDZjZTJlMmQ3ZDY2MmQxNWZmZmYwZjNhNGJhZGEwNTcgbGVnYWN5LXRydW5rCis1OTc3MSAxNTVmNWMzNmZmOTI5NTYxZmYyYjU0NzkyMmQ1YjVkYWZhZjhhYjYwIGxlZ2FjeS10cnVuaworNTk3NzIgNzlhMzQyNDhhMjYyZmJhOWE0MjdlYWU4NjRiZjJmMzZiYzU4MzZhNSBsZWdhY3ktdHJ1bmsKKzU5NzczIDY2MTk3ZjhkMGZkZjBmODcyNzAzMDYzMTVjOWI2YjRjNzM4YzZkNDAgbGVnYWN5LXRydW5rCis1OTc3NCA1MDdlNzZkN2ZjZGQ1YzViZjY4NWJhNWI0NWJiNWNjZjlkYTgzYzAyIGxlZ2FjeS10cnVuaworNTk3NzUgNjQ3OTRiYTllMjVhZDVjMWM5MmVkMzE0YWRjZjY4NWJjN2E4ZWUzMiBsZWdhY3ktdHJ1bmsKKzU5Nzc2IDk5ZjYzNzBjNmNkMDU4NGE3NTIwMjMzYzAxYjBhZTdlNGRkZGNkMGUgbGVnYWN5LXRydW5rCis1OTc3NyBkODk3OWU2NDI5ZTVmZjhhYmNjZDJkMDQ4N2UxNjNiOWU2NTdhMjk3IGxlZ2FjeS10cnVuaworNTk3NzggNmIzYWFlNWM2OWJmMjA0NGUyNTkzZjBjMjJmMjAzMTkwZDU4YTUxYSBsZWdhY3ktdHJ1bmsKKzU5Nzc5IGVkNzU4ZjZhOTdiYjEwY2FjNTM5YzVhYjA5ZDg3ZTc5NGIzMjgyZGQgbGVnYWN5LXRydW5rCis1OTc4MCAwOTAwODNhMjMzZjhlMzY2ZGU4Y2M5ZTZkNmUyZmYyOWYxMTdhOTBhIGxlZ2FjeS10cnVuaworNTk3ODEgYjI0ODg4Y2I5NTUzMzM1ODRjOGM1ODk0MGY3NDA4NjBiYjg5Y2Q1OSBsZWdhY3ktdHJ1bmsKKzU5NzgyIDJhY2M2NTJlNThhMTljNmMzZDYwODE3ODQ1YmJiOTI2ZWVjYWViMjcgbGVnYWN5LXRydW5rCis1OTc4MyA0MjBmZTZkN2Q1ZjQ1ZTVmOWZlZTRhMjRmY2ViZmZlMmE2ZDQyNmRkIHB5M2sKKzU5Nzg0IGFjN2RlYjFjMWQzY2UwM2FlNzEwN2QzZjNkMzRlOGJjMDE1ZmFmYjQgcHkzaworNTk3ODUgOGViOTYzNjNmMWQ1OWMyYjc1ZWM1MTRjZDlmYjU0ZWNlYjlkNjA5NiBsZWdhY3ktdHJ1bmsKKzU5Nzg3IDE4MTFlYjAzYmEwMGM4ZjkzNzFlMDVhY2VlM2Y5MTFkMzJlNDcwZWYgcHkzaworNTk3ODkgZmEyNTBhNTgwOTlmYzRhYWE3OGE1NmVlMWZiZWMyN2FmMDcxNWEyMCBweTNrCis1OTc5MCA3Y2JhY2FhNWY4ODU4ZjQ5NDc1YmQ1MzI0ZGIxODllYWE0NDViYjk0IHB5M2sKKzU5NzkyIDBjNGQyNThhNWIyNWVhMGZkYTU5YzY1NmZkZDJiYzJmMzRjODdjMzggbGVnYWN5LXRydW5rCis1OTc5MyBkMDQ2NWU3ODJiMDE5MTAzYzhhODQ1YmI1NzE5ZjI5ZjMwMDM2MGQwIHB5M2sKKzU5Nzk0IDY3NGM5Yjg5ZDEyNDE0MDFjZTJmYjVjMzBjN2UzODA0YmNjZDI4ZGIgcHkzaworNTk3OTUgYjhlMzRiY2RiYTQ1NDgzNzU0YzRjZWEzMDRlODQ0MGI4MmU4MWY3NCBweTNrCis1OTc5NiAxM2I3Y2EwNGJkNzBlMTQ2NDJlZDZkOTdiMTBlODVmNTRjMzk5YjBlIGxlZ2FjeS10cnVuaworNTk3OTcgOTc0ZjAzMjBkNmIzY2Q5MzIxZDJhOTJiNmM2MDRjOGMwNTIyNmI1NCBsZWdhY3ktdHJ1bmsKKzU5ODAzIDQyNjQ2YTg3Mjc3MmVmYWRhMDYyMDkyY2MzY2ZmMTQxNDVjM2EwMmUgbGVnYWN5LXRydW5rCis1OTgwNiAwNWJjYjc5MGVmNjMyNGJlOGI3ZDZmMmEwMDY0MmQ2YjVjYzNjMGQwIHB5M2sKKzU5ODA3IGE4Njk3YWZiZjE3ZWY1YzcyYzA1ZTM5Y2RmNWNlMjRmYmM0YTBiOWQgbGVnYWN5LXRydW5rCis1OTgwOCA0NTUzNmQ1NTg3ZDQ3NzAzMjUwMWExYzUzNjQ1OGY5YjRlNGIzZWQyIGxlZ2FjeS10cnVuaworNTk4MDkgZjljOTUwZThmMmUwYWU2ZmFiMjkzN2VjYzNkNzIyYWJkYWExZWNmNiBsZWdhY3ktdHJ1bmsKKzU5ODEwIGI2ZWE1Mjk5M2NhZTUwYWU2NTYwNDNmZGU3MDUwMWRmNTY5MTA1YzQgbGVnYWN5LXRydW5rCis1OTgxMSBmMjcwNzRkMTQ3ZjRlMTk4YTdiMzA4NzkyYjFiNWJjOGQ0NTRiZDY4IGxlZ2FjeS10cnVuaworNTk4MTIgNmM0YjBjYzlmNmM5MDBiYjI1YjQ5MjFlMjFmYjc5NWJkNmY4MTIyNSBweTNrCis1OTgxMyA3ZWEyMzE1NzhiMDJkZmEwM2M3ODYzNmU4M2U2MGUyYThmNGY1ZWRjIGxlZ2FjeS10cnVuaworNTk4MTQgM2E5NDQ5MzVjNjEwZGE0ZmNjMDJiNGIxOTgyOWNmNTU3YzA4NzY4OCBweTNrCis1OTgxNSA4NjRlNjc5YTBlODUwODA0YmJmMjNlYmQzNGVmMDY4Yjk2NmMxNzBkIGxlZ2FjeS10cnVuaworNTk4MTYgNGQyM2Y1YTdkNGM5NjA5YzMwMzRmZWMzOTRjMDM4YTFjYjc0MGU3ZSBweTNrCis1OTgxNyAxOWNlOWVmMzRiNjIzM2NiMzgzNTU4Y2JiNzdiMjRiYzY5Y2QyNmU0IHB5M2sKKzU5ODE4IGI5ODk3N2YwYWJhMWM2NTdjNDAwZWIxZGFhZDU1OTIyMmNiOGVmMmMgbGVnYWN5LXRydW5rCis1OTgxOSBhYzUxY2ZlNWM1YzZiOTgyODRjMzY3NDQ0MTg2ZjdjY2FiNTU3MzkwIGxlZ2FjeS10cnVuaworNTk4MjAgZjNjMWY5YzhjZTlmMTA2ZWNjYmYxZjQzNzZjMmIwMDIwNDVhNmE2MSBsZWdhY3ktdHJ1bmsKKzU5ODIxIDc2ZmNlYjU4YmNmNTFkMWU3OTkzMjY0ZTdiMWM1YWZkNDZmZjFiMDEgbGVnYWN5LXRydW5rCis1OTgyMiAwNmQxNWRhMWYxMjU4YzQ0NTQ1NDQwMzAyYmVmYmY4YzE1YWUxYTc3IGxlZ2FjeS10cnVuaworNTk4MjMgMmNkYjY2MTY3NWY5YzAzZDlhOTYyZDY4YTcxMjFlM2NjZDc3ZjQ0OSByZWxlYXNlMjUtbWFpbnQKKzU5ODI0IDU5OWYyMmEzNDlhMjRmZTNhOTkwZWExY2I1Mzg3NTcyMDBjMTVkY2IgbGVnYWN5LXRydW5rCis1OTgyNSBjZGMyODViZDBlZmI0NGU3YTQ5MDZjMWRiM2UxMTFhODkyMjIxOGRlIHB5M2sKKzU5ODI2IDMwNWQ3ZDJjZTA0NzAxYjQxY2UwOTRlNTA4M2UwMDZlNzVkYTUyMDYgcHkzaworNTk4MjcgMTMyZDkwODQ3MWM4MzhiOTEwNTVjZjMwMDQxNDE0ZjUwMjZiMzM1YiBsZWdhY3ktdHJ1bmsKKzU5ODI4IDBhYWUxNDk1MGUwYmMyYmQzN2YwZjQ2MWEyNDc4ZGM1NzE2ZDU5MGQgcHkzaworNTk4MjkgM2IzYWI5MjViMjYxZTczNGI2NGUzZDFmMDU4ODE0MzY5NjNjZTk0OSBweTNrCis1OTgzMCBkYjVlMDFjMzNlYjc2MzNjMDEzYTUxNGQyNzlhZjMyNDc5ODg5YjU3IGxlZ2FjeS10cnVuaworNTk4MzEgZmQ1MzJhOWIyODEwNjM4MzM5MTg4NjRjZWFkNzk1Y2ZlNjRjNmU1MiBsZWdhY3ktdHJ1bmsKKzU5ODMyIDZiNzE1ZWE4MDQzNzc0NjhmZDk2ZTE1NGY4YTM4YjViYTM0YzdhNDkgcHkzaworNTk4MzMgY2YzNmUwMWU4M2YyMGU3NDBlOTEzNWI5YjM2YmY0OGQwMGRhMGNhZiBsZWdhY3ktdHJ1bmsKKzU5ODM0IGFkZGMxODU5NmExNTc1MzVlMGFlZGE4MDM1MmFmNTIxOTUyM2U2YjcgbGVnYWN5LXRydW5rCis1OTgzNSBjYTE0MTVjNjEwNWY3ZmQwZGU3YmUxY2ZkZjBmNTczM2NkNmViMGY3IGxlZ2FjeS10cnVuaworNTk4MzYgMTllMWZhNzhkMzMwNTQ5ZjQyYWNkMjRmMjQyY2E0NWQ1NTFkYzdkNyBsZWdhY3ktdHJ1bmsKKzU5ODM3IDVlMDI0ZTkxZWUwNjdkNzUxYTk0MjkwODJjYmU5YTZmMTM2N2YwZDMgbGVnYWN5LXRydW5rCis1OTgzOCBlOTc1NjI2NmUwYjkzODE0MDM4NDg0MTliMTcwZWUyMjk2ZjJhYzM0IGxlZ2FjeS10cnVuaworNTk4MzkgNmQ1MjE2MDNlMDdkZTdmYjc4OGVkYTVlOGY4Yzk1NDI5MmQ5NmM0ZCBsZWdhY3ktdHJ1bmsKKzU5ODQwIGM3NWQzNjBhYjg3YjM4NzY2M2ExODMyYzQyYTA1NGFiN2FjM2JjYmMgbGVnYWN5LXRydW5rCis1OTg0MSA3M2UxYmYxNzlhMDFhZDc4MjRmZjVhYTJiMjljZTA2OGE0NTdjZDY3IHB5M2sKKzU5ODQyIDIzNmU3NTI2YWJlYWY1OGYwNWRmZTk3ZWQ1Y2NlMmYyZTlhYWE4OTAgbGVnYWN5LXRydW5rCis1OTg0NCA0MmNmNTljY2NlNjYyYjc1MDBmNzc0YTk0YTYxZmRiZTNkNTdjNWVmIGxlZ2FjeS10cnVuaworNTk4NDUgYTI5MzhjNTUyMDBjZTRhNmRjMWNkMGQ1MTBhODljZWYyNDFkZTNlYiBweTNrCis1OTg0NiBmYjVhNjMzMGY3MWIzOThmY2ViMGU0MDUyMDJhODg4MDViYTFjYzE0IHB5M2sKKzU5ODQ3IGNjODY4ZmNmNTA1YWViNTllNDEzYzI5ODE5MWEzM2NhODY5YWQ5OWEgbGVnYWN5LXRydW5rCis1OTg0OCBhNWI3ZjJkODc2MWQ1YTFkMmFiMjZlMjFmMzYwN2EzYWVmNjkyYTc5IHJlbGVhc2UyNS1tYWludAorNTk4NDkgNjBiNTQ4MDFiNjQ2MzJlODBkYTQxMTQxNTRhZDljNDA0NzRhMTEyOCBsZWdhY3ktdHJ1bmsKKzU5ODUwIGExZGRlNjgwZTY5NDIwZjdiZDJiODEwZjI5YTc2ODgxZmE3MzVlYmIgbGVnYWN5LXRydW5rCis1OTg1MSBjYjIyZjg3NDhkYTdjZjQ1NmI4NmViMmY3MGY0YmMzMWU5MmI0NThmIGxlZ2FjeS10cnVuaworNTk4NTIgMDU3ZGU0NmVhMTdlMjFhNjBjNGI2OTAyMmUzMTg5NDk4ODIzOTI4MiBsZWdhY3ktdHJ1bmsKKzU5ODUzIDg4ZDc2YjkyMDZlNjY3MzI2YTNjZjgxZGYyOGViYzZmMjVkNTYxMTEgbGVnYWN5LXRydW5rCis1OTg1NCBkMWExYmE1MDI1NzllOWUyMjI1NWE3OGQ3YjZmOGUzMGM4MzY3MjQzIGxlZ2FjeS10cnVuaworNTk4NTUgNzZjNzY1YTc0ZmI4Y2I0Mzg1ZjkwMjcwNWZhZmI2NjRkZTNlZmNhYiByZWxlYXNlMjUtbWFpbnQKKzU5ODU2IDVmYjliMmY2YmFjYjdjNmJlODg5YjAwMDRmOWM2ZDdhMTFjY2FiZTEgbGVnYWN5LXRydW5rCis1OTg1NyAwODhiNTA3N2M5MDBjOGQ0ODczZGRiNWU5Nzk5ODg3Mjc2ZGQ2MDI2IGxlZ2FjeS10cnVuaworNTk4NTggZjQ1ZWFlZGI5MjBlMjA1NWVmMzdlMTJmYjFkM2JlZDRlYTQwNjJjMCBsZWdhY3ktdHJ1bmsKKzU5ODU5IDlhNjBiZDhmMDBkNmFmYTkwNDJmYzI4MjFmZTBhMjhiNjEzZDJjMDEgcmVsZWFzZTI1LW1haW50Cis1OTg2MCA3NmNhYjg2Nzg5MTZlNGQ0YTgwYjAyYWUzZDE4ZjE0OGY4ZDRhNTkzIGxlZ2FjeS10cnVuaworNTk4NjIgNDdlNzhjMmQxNmRlMGQ0MzAwZTZhN2MyNzIyZjUzNmU4OWVhNTMyNiBsZWdhY3ktdHJ1bmsKKzU5ODYzIGI3ZDFiNjI3YTdkNTFlNGQyYjIyZTAwOTE3MGVkYTUzOWQ5MjZiOWQgcmVsZWFzZTI1LW1haW50Cis1OTg2NCA5NGFiNTcyZWQ2ZGRmMzYwODAwNjAyNzlkOWI3MWYwZmQwM2UyN2U3IHB5M2sKKzU5ODY1IDMzNDQwOTE5OTYxMjQzMjE0Mzk2ZmQyOTUyNzk2YzhjMDlmNjkzNWUgcmVsZWFzZTI1LW1haW50Cis1OTg2NiBiZjdiYmQ4ZGIxYTgyZDc4MjU5ZmY5MjU0YzBmNGNiYTIzMzIyODhiIGxlZ2FjeS10cnVuaworNTk4NjcgNWY2NDBmOGY5MmY0OGQ0ZGJkMmI4OTMzMDI5MjFlZGQwZDE5M2M5NiBsZWdhY3ktdHJ1bmsKKzU5ODY4IDFkNzRkZDgyMjhkYjBjYzk1YmM3MDAyM2VjM2U5MmE3Y2JjZTlkM2MgbGVnYWN5LXRydW5rCis1OTg2OSAxMGViZDAyN2MyNDM5NDI1ZGMxMjViMzQyZjFhYzFjMTU0MTk2ZDNhIGxlZ2FjeS10cnVuaworNTk4NzAgNTA4NjllNzQ3ZTc2ZTllNDBhOTY4Mzk1MDRmN2RiNWI4YzYxNzE2OCBsZWdhY3ktdHJ1bmsKKzU5ODcxIDlmNmFhNDk4NDk4ZDI4NWMxYTFhY2RkNzdkZmU2OTQxYTI1NTUwMzUgcmVsZWFzZTI1LW1haW50Cis1OTg3MyBhNjBmOTJiYTBkMWVkNTYzMTU1NWIyYzI5YWEwNTcwN2YzYjEzMDk5IGxlZ2FjeS10cnVuaworNTk4NzQgNjc3NmQ2ZWYyMDFhMTAzNzU4YjRiZmMxMjdlOTM5ZDU2Y2ZiOWNlNyByZWxlYXNlMjUtbWFpbnQKKzU5ODc2IGRjOWQ5NWI3MTdjNTdlM2U2MWY0ZGIyOWVkZjkwZDk2NTdlZTU4ZWUgbGVnYWN5LXRydW5rCis1OTg3OSA5YTk3OTA4YjRjOTdlZjkxYjFkMmRiNTEyMzY0ZTE3MWY1MmQ3OWJkIGxlZ2FjeS10cnVuaworNTk4ODAgYzliNmJlNDgxNjU3ZGQ5NjI4MWNkMDI2ODdhNDUxNjMyNzA2YWViNyBsZWdhY3ktdHJ1bmsKKzU5ODgzIGEyOWFkYzNiMGYyNjZiNjM2Yzk2MmU0MjljMTQwYTBiYmIzYzE4OTcgcHkzaworNTk4ODQgZmFlOWNlZGI5MTQ2YmRmMTYyYmI4ODdiYzM4MzlkNzFmNzU1YTE0NyBweTNrLWltcG9ydGhvb2sKKzU5ODg1IGZiMjg3NDE1YWNhMGU2ZmE1ZDJhMzI5ZTI4YTM2MDRjMmYwMTM0MzMgcHkzay1pbXBvcnRob29rCis1OTg4NiBhOTNlMGU4MGMxOGEwMTcxMDgwMTQ4N2IzMWRkZTljMGM5YTU5MzQ0IHB5M2staW1wb3J0aG9vaworNTk4ODcgNzZhNDYxZGUxNTQ0NDQxMGZlMTkwNWQ2YWU3YTdhNzMxMmI3MmQxYiBsZWdhY3ktdHJ1bmsKKzU5ODg4IDQyNjc2YTQ4NDBiNWE3MTEwYWNjYzY4MmM3NmVjNDJjNjMxNzg5NzcgbGVnYWN5LXRydW5rCis1OTg4OSBiNDQ2Y2Q2MTM4OGYwNWI1ZmRkNWU2NTdkZDFiYWExZjI3Yjg1ZDAwIHB5M2sKKzU5ODkwIGQ4ZDdhNzhjNjQyM2MxYTQxNjIyYzViNjcwNjliNTZmMDgyMTA1NWUgcHkzay1pbXBvcnRob29rCis1OTg5MSA4OTY5ZDc0ZDBkMjJmMzE5YzdjNDVlNjQyNTlhZDc0Nzc1NjE4NzUxIGxlZ2FjeS10cnVuaworNTk4OTIgYzMxMTM5MTRlNjZlOWUwZDY2OTM5YWMzZTFhN2ZjOGFjZmQyMjQzMSBsZWdhY3ktdHJ1bmsKKzU5ODkzIGFmNmYzNDU2NTdiNGI3OTQxZjMxZmQ0Y2U2MzkzMjQ4ZmFjZTZlNDUgcHkzay1pbXBvcnRob29rCis1OTg5NCAyMDU3OGRiMDc2MjlhMjA0NjZmNTRmNjdiYjgzNDBmOGI4MmJiMjEzIHB5M2staW1wb3J0aG9vaworNTk4OTUgZGJhZmNkODI3OTc5ZTA5N2UwOWZmZWExNzYzNDFmYjZkNTJiOTdkNCBsZWdhY3ktdHJ1bmsKKzU5ODk2IGU3NTNlMzFhMGM4ZjE3OTQzOGExOWZmNzQ2OTBjZWUwNzQwM2ViNDcgbGVnYWN5LXRydW5rCis1OTg5NyBkZjg1NmUwZTFiMmEwODljOTQxZGY0YzJhMzE3MzBkNzU1NTVkODUyIHB5M2staW1wb3J0aG9vaworNTk4OTggNjlmNDk1MDgyNDEyNjcyNzM0ODkxZjY2ZTIyOGE2MjlkZTZlMDU3ZCBsZWdhY3ktdHJ1bmsKKzU5ODk5IDYwMTI2YWEzYjgxNjk3NzBkNzk4NDg1YjJmNzViZmU5ZTFiOGU1ZWQgcHkzaworNTk5MDAgNzg1MWU3NWY1NDM4Y2E0NTk4ZDMwNWM2Yzk5ZmI5NDQwZmRjMGQ3YSBsZWdhY3ktdHJ1bmsKKzU5OTAxIDQwM2NmY2E5ODYzZmQyZTMwOGIwNDVlMmFmMThjMGY2ZDJhZmNhNDggcHkzaworNTk5MDIgNWRlYzRhZGU4ZmE5NTI4NGIwNjBlMGM1NDNmMzA0MzZhMTBkMDA3YiBweTNrLWltcG9ydGhvb2sKKzU5OTAzIDgwNThlMTY4MjBlZjg2MGU0YzkwYzQ3ZTA3MGFiM2JmNzZmODkwMzggbGVnYWN5LXRydW5rCis1OTkwNCAzNTRiZTBkYWZlNTRiMjIyYWYyNWE5M2RjOTg1ZWZiYzI4N2M5YjU3IGxlZ2FjeS10cnVuaworNTk5MDUgM2NkOWI4NzdlYWUwOWEzNWI5Y2NkNzk1ZGU3NWQ4Mzk3MjlhNDg3ZiBsZWdhY3ktdHJ1bmsKKzU5OTA2IDc4NTIzN2ZhNWY0MDE0NDRjMzFkNjE3ZGRjMDZlMDEwYTM5ZThmYTYgbGVnYWN5LXRydW5rCis1OTkwNyA2YjBiNWVkZmIxYjc4NWMxNjkxYzdjZjY5ZDU5ODI3MTFjNDk5ZGVjIGxlZ2FjeS10cnVuaworNTk5MDggMDZmOWY1MWFiOGMwM2RkY2JiMWQyOWE2OTNkMjYwYzgxNDM2YTIwNCBweTNrCis1OTkwOSBiZTA0ZWU0YzRmZDczNDU4NjljOTgwM2Q1ZDEwYjgxZGZhMTkyYmEyIGxlZ2FjeS10cnVuaworNTk5MTAgMmFkM2UzNWM1ODI1YzM3ZjI4Yjc4ODJiYWJkYTMzMzc1MzVjODE3MSBsZWdhY3ktdHJ1bmsKKzU5OTExIGFmM2EwY2ExYWI0YTAyYmUyYTU5MzE4NmE0MzA0NjNkY2JmMzdiOTEgbGVnYWN5LXRydW5rCis1OTkxMiA2MmY2ZDc4MGExMWRlMDM3MzQ2Mzc1YWY4ZjVmY2I5NjYyZDhiYWNlIGxlZ2FjeS10cnVuaworNTk5MTMgM2NjM2E1NWQxMjMzNDUxM2ZhNzM2YTUwNDU3M2U3YjYyMThhZWRhYSBsZWdhY3ktdHJ1bmsKKzU5OTE0IDk0MjYxZjMwMjdhNTkzZGVmNDRhMzU4NmQxMzBiOGQ2MTQ4ZGI5ZmUgcHkzaworNTk5MTkgNTlhODJjZGZhMTM3ZTg4YjhjYzM2ZDY1NTAzNWNhN2Y0ZTliNzA5MyBsZWdhY3ktdHJ1bmsKKzU5OTIwIGFhZGNkYTdhNGJmN2FmNGVlM2EwOWI1MDEyZTRmNGEyZDU1Njg5NjEgbGVnYWN5LXRydW5rCis1OTkyMSBkOGU0MzQyYzE0NWU2YjVhODhhMTQ5MWM1NGYxZjFmMTlkYzY5NTJhIHB5M2sKKzU5OTIyIGU3YjgyMTAxYjk3MGY4ZWM1YjEwZTU1ZTlkOWQ5MTgyZDQyZTMyOWIgcHkzay1pbXBvcnRob29rCis1OTkyMyA3OTU3OWZhOGQ3NTJmMmJmYTk0NDM0ODRmNGE2NzYwMWI3N2VhNjUwIGxlZ2FjeS10cnVuaworNTk5MjQgZjBiOTMzZjEyOTgyNjdkOGU2Y2EzNTUxMzYyODE3OWM3MGJlYjRlNyBsZWdhY3ktdHJ1bmsKKzU5OTI1IGEyMjAyMTFmODMzMTMxNjAyOTFiZGY1ZmE3NjY1NmUyMzBmMzkwNTIgbGVnYWN5LXRydW5rCis1OTkyNiBkNTgyNGZkZDlhMTVmMGZkNzY2OWNjNzhjYjFjMmNkMTE5YTViZTVhIHJlbGVhc2UyNS1tYWludAorNTk5MjcgNzc2YjRlMDU5ZjgzNmExZmMxMjQxY2FkNzNiZGRlNmIxYjgzNmZjNSBsZWdhY3ktdHJ1bmsKKzU5OTI4IDNhZjNmZDM4ODdlZTIzZTQ5NWMyMjI1NDBmYjExMGVjYmQ4YWJjYjkgbGVnYWN5LXRydW5rCis1OTkyOSA3Yjc5ODU0OGE0YWRlNGQwMjZmNWU5ZDhkOWM4YjI2MDNiYzIzOWY2IGxlZ2FjeS10cnVuaworNTk5MzAgN2RiYzNmNDI3OGViZDM0ZmI3MWYwNDgwZTI2N2M5YThmMDg3ZGM4NSBsZWdhY3ktdHJ1bmsKKzU5OTMxIDI3M2QzN2JmMjNkM2JlMmQzMmFjMjg4Y2E5OGIyZWNkMGI2OTMyNjEgbGVnYWN5LXRydW5rCis1OTkzMiBhNTRjYzQ3NzJlNzM3MzgzNWI5NmNlNjg2YzI4OWZjYWI0MDJkOGEwIGxlZ2FjeS10cnVuaworNTk5MzMgNWE3MWRjYzcxZWZmNzYzOTRkMzU5OTkyNzcyYTBkOWEwZDkyYTc5NCBweTNrCis1OTkzNCA1MzUxMTA1ZmY4MDhhMzE3MGE2M2M2ZWY3ZTdjOGQ4MDk1YWJiY2UzIHB5M2sKKzU5OTM1IDRjYThhY2M5YmVkNzE1NDg5MjdlYTgyNzVmZTljYTAwYjRlZGVhNTggbGVnYWN5LXRydW5rCis1OTkzNiAzZjY1YmNjODk2NmYyOWQ4OTA4ZTBlY2FlMTU2ZWU5ZGMyNTg4YjIxIGxlZ2FjeS10cnVuaworNTk5MzcgYjY3MmMwMTVjMmRiODRmZjQ2Nzk2MzEzNjcwNTI4ZDMwN2QwNGU2OCBsZWdhY3ktdHJ1bmsKKzU5OTM4IDk0NjhlNjA2MzYxNzM0ZTE1Y2NmYTBhYzBjZTk1OGU0YjliOTM1NGEgbGVnYWN5LXRydW5rCis1OTkzOSBjNzM3NjhkOTc3YTlmOTJiYjljZGI5MDQ3OGQ1NzFjYWQxOTkwZDJiIGxlZ2FjeS10cnVuaworNTk5NDAgODk0ZDJhZDQ1MDI2OWU3ZTA1ZDg5OTg3ZjNkZDY3ZTE4MDhkYTA5NyBsZWdhY3ktdHJ1bmsKKzU5OTQxIGYyZDgyMGI1YWUyYWU2NDM3MDYwYmYzODQwOTI2MDFhOTU5NGZjZjEgcHkzay1pbXBvcnRob29rCis1OTk0MiBjMjU3NjBjMjEzOTdhMWU0MjM5MGUzMzY0YWVlYzljYWFiNWE1NWVlIHB5M2sKKzU5OTQzIDQyOTNhMDZhZmQ3MjdmNzUzNjAxNWY3ZGYzZDJhMWMyNzJlYzliOTAgbGVnYWN5LXRydW5rCis1OTk0NCAzODdkNDhjM2EwYjNlN2MyNzQxODcxYjE5YTExYjdiMjdjNmZhOGEzIGxlZ2FjeS10cnVuaworNTk5NDUgOTE5MjhkOTllYmIwOTI3MDdiNDYyZDZjZThhNTQ5YWY4MWI2NTNhMSBweTNrCis1OTk0NiA0MjZmZWY4YmFkZTJkZDdhODZjOGE2OGQwMGI0MDk1MTY2OGFjN2I4IGxlZ2FjeS10cnVuaworNTk5NDcgYjQwOTk0MWM3YTUxZTEwMDlkYjE0MThjMTAyMzM1ODI3M2QzZGJjZSBsZWdhY3ktdHJ1bmsKKzU5OTQ4IDdlNDFlMWM0NmI1N2IwZWE2YTI4ZWYyYWM5NmVjYzA5YWUwYzA3MjUgbGVnYWN5LXRydW5rCis1OTk0OSA5YjZkMzQ4Y2VjODdlNGJhNGMzMGUzYTdkOGZkNzNkNDE2MjI4YzNjIGxlZ2FjeS10cnVuaworNTk5NTAgZDY2ZTU4MzdhYTU3YzMyMmUxZGZlNjAxMzA1YzFmNWU5NDZlNmE0ZCBsZWdhY3ktdHJ1bmsKKzU5OTUxIDMzZjY3MDkwNzVlODNjOGE3ZTVjMmU2M2EwZjAxMmIyOGJkNGZmZTggbGVnYWN5LXRydW5rCis1OTk1MiAzMjJjMjM4YTY0ZTUyNzM4NWEzNTk2N2Y1ZmNkYzdlOTg4M2IyZDM3IGxlZ2FjeS10cnVuaworNTk5NTMgNjJlYWNlNjc4MGY2NThjZGU1MWE2NWExZTVhMGNlOWI1OGQyY2Q3NyBsZWdhY3ktdHJ1bmsKKzU5OTU0IDExNTQxNThhMTk5Zjc3OTRmMjU4NTVkOWVmNzIxYzQ3NzFjNjViZTUgcHkzaworNTk5NTggNjI3ZjJlMjI3M2I5NGZlOThiYjkxZDczZTE5OWE3NGRkOTMwYTE2NyBweTNrCis1OTk1OSAwMDUwMjFiZjVhY2VjNzNjMzIzZWRjNDdkYTg5OWUzNjYzMWJlMDY1IGxlZ2FjeS10cnVuaworNTk5NjAgODI3ZjA0NTE3MzRmZDk2NjQ3N2FmM2JiY2Q1ZWVmNTVhN2E3NzU0ZSByZWxlYXNlMjUtbWFpbnQKKzU5OTYxIDVkZmRlZDlhZDhhMGNjNmRmZWJhNzY4NTNjYTllM2NkOWQ3NzQ4MWUgbGVnYWN5LXRydW5rCis1OTk2MiA2YWYxOTRjNDk0Y2MyZmRmM2Y3MjM0MmMwNDllNWRjNTc3OWFhY2Y5IGxlZ2FjeS10cnVuaworNTk5NjMgNzc0YTk1OTcyMjhlMGFkYjdmOGUxYjlhNWI2OTNiN2Q2NDllNjVhNSBsZWdhY3ktdHJ1bmsKKzU5OTY0IGNhYjg0MTI5ZGNjYjU0NTY0MDYzZjE2Mzk2MTg1NjVmZjM4N2U4YzAgbGVnYWN5LXRydW5rCis1OTk2NSBmMDM0ZWI1ZDhjZGY0OWFjNTExMzkzZmM5Zjk2YzZkNmE0YzdiYzQ2IHB5M2sKKzU5OTY2IDM1N2IzNjU1NjBmNGI3OTIzOGU5MGY4NDkzZTQ0ZWJjOWQ3OWZlYzYgcHkzaworNTk5NjcgYTAwZDkwMDA0YTI1MTk2YWRhNmNmY2EyMDc3NjEyZTdkZDg0Y2ZjMyBsZWdhY3ktdHJ1bmsKKzU5OTY4IGU1MTFjY2YyZmZiZTY3YTEyZTIxNDIzOTBhNjgzNmNkNTc2YjJlMDUgbGVnYWN5LXRydW5rCis1OTk2OSBkMDIwOGQ2NWRjMjJjNTAxMDhhNjczOWU4YTM1YTk3OTM5OWVhZTViIGxlZ2FjeS10cnVuaworNTk5NzAgODY4OWY0NmQyNWQ2YWY1NWM4Y2JlNGQ1ZjE3NWRmOGMxNWZmNzljNCBsZWdhY3ktdHJ1bmsKKzU5OTcxIDE0ODU0YzdjNmEyNDg3MGFkYjU4OGQyYTYxNWE3NTU3MmIzZmZhNjkgbGVnYWN5LXRydW5rCis1OTk3MiA1YzdiN2ZiZWE2ODFiMTVkODRlNDMxMjk5ODBmODNjZWI1OTk4ODRlIGxlZ2FjeS10cnVuaworNTk5NzMgMGJiNmNmNzdjODVhZjg1MzRkMGZlZWVjYmE0NDRhZWFmMTkxYTMxOCBsZWdhY3ktdHJ1bmsKKzU5OTc0IDQ2ZTczMWJiNmE4NWYxY2VkYzc2NDg3NGM5ZmFiMTJkNjRiZTUyZmEgbGVnYWN5LXRydW5rCis1OTk3OCA1OWYyOWIwMTM2ZmI1ZjYxODQ5N2YwOWY4YTQ1MmE1MDY0YjQwYjNhIGxlZ2FjeS10cnVuaworNTk5NzkgYmZhOGQyMjU3ODIzMjIzZGI3YzRhM2RkY2U2NjE0NDQ0MWFlMWY3OCBweTNrCis1OTk4NCAyOGM4MWMyNzM4OWUyNTQzMzlhOTBjMzEwYWI1Nzc0N2FlMzIzMjMxIGxlZ2FjeS10cnVuaworNTk5ODYgNmU1Njc1Y2EyNTU5YzZhNzM3ZWYxYjQ2YjgxMTQ5Zjc3MWE3ZDQ3YSBweTNrCis1OTk4NyBjNzkwNTg3ZjI5OTI1YzE1MTQ1MTA0MGQzOTQzNzJhZTY4N2Q2NjlhIGxlZ2FjeS10cnVuaworNTk5ODggY2I5MDQwNGE0NmFkMThhMTIyYmYxODJhZDI0MTdlOWNmNGZhNWE1MCBsZWdhY3ktdHJ1bmsKKzU5OTg5IGYzMDJjZjk5OTYzM2ViN2M2ZDJiMGUwZjI2ODRmNGRlZmJjOTAwYTUgbGVnYWN5LXRydW5rCis1OTk5MCA2ZjA0OWNhNTVlMDZiMmMxMDhlYzBkOGQwZTg0YmIwYjgyM2RjMzg1IHB5M2sKKzU5OTkxIDk5MmE2MTFiMmUzMTQ2NmMxNzA0YmE3ZWU2YzE5NmJiODRiNGYwMWMgcHkzaworNTk5OTIgMmYxMWY3ZDliZGM4NGUwZDZiYmEyZWZlM2NlNWE0OWZjMGNlOWZhNSBsZWdhY3ktdHJ1bmsKKzU5OTkzIDcxYzc5OWViMjRiMjQ4MGFkZmI3N2Y0M2RkMjc1ZmZhNGUyMWE4ODAgbGVnYWN5LXRydW5rCis1OTk5NCA3ZjJmMjFhYTM2OTA2YTlkZDFlNzg1N2M4OWU3OWU5NDFhODE4YmE4IHB5M2staW1wb3J0aG9vaworNTk5OTUgYjIzYjQ3N2Q3ODk5YTY2OGY2ODQzNDk0YTY3MTM1OTQ1ODkyNDM4MyBweTNrLWltcG9ydGhvb2sKKzU5OTk4IGM0MzgzZDc2NWNhNzE3ODM3NDg0YTNjMmFjNWQzNzFhODAwNjY0OTggbGVnYWN5LXRydW5rCis1OTk5OSBhNGEwMjQzMmU3MzMzZTk5ZWYwOWVjNTdiMzlhMjllYWEwZTc1YjhjIGxlZ2FjeS10cnVuaworNjAwMDAgNDFmMWIzY2IwYmIxMDM1NWIyNDk1ZjkxM2VlYjQ5NmYzOTc0MzE0YyByZWxlYXNlMjUtbWFpbnQKKzYwMDAxIDJmN2YzZjVlNzNkM2M1ZWFhMTQwMmM5MWFmZTBlNGNlMThhYjI3MjQgbGVnYWN5LXRydW5rCis2MDAwMiAzZDcwNDI4OTNjYzUwNDZjZWQ3YTE5NmQ1OGI2ZDIwYTFmNTllOWU3IHJlbGVhc2UyNS1tYWludAorNjAwMDMgY2FmNThjODMxNDk5Y2M3ZDU5NDUzNTkxODk2ZDAzMTBlZDk1ZmQyNyBsZWdhY3ktdHJ1bmsKKzYwMDA0IGEyZjNkNDk5Y2UxMmVmNGNlMjFiNTZiY2IxZTA5YmEzYzU2MjI2OWUgbGVnYWN5LXRydW5rCis2MDAwNiAyN2Q1OTY3NWI5MmM2ZjdhMGQwMDVlYmE4OWNhYTg1ZDVkZTA0YmIwIGxlZ2FjeS10cnVuaworNjAwMDcgZjEyOGU2ZWJmOTBmODFkMGZkMmEzMDU4YmM3ZmEzY2FiNjZiMzBmMyBsZWdhY3ktdHJ1bmsKKzYwMDA4IDJjOWJjNjFkNGY3M2YzNzZlMzU4OTVmZmRkNzBmZDkxMWIzMTA2MzAgbGVnYWN5LXRydW5rCis2MDAwOSBjNzg0ZjIwYzk2N2U4NDRiZWRiYjJmZDM3NDFkMjliY2NhZTkyYThkIGxlZ2FjeS10cnVuaworNjAwMTAgYWE1Y2Y2Mzk0NjQxZGMxZDNhMmJmMGQ2Mzc0ZGI2YWM0ZWU4MDViYyBsZWdhY3ktdHJ1bmsKKzYwMDExIDk5MDAwZWEyMWZmMjc4YWJiODk0OWRhZWM3MGE3MTU3NGVjZGRkNzMgbGVnYWN5LXRydW5rCis2MDAxMiBiNDY5ZTkwMjczZWIwNzJkZjdmMDRkZWVlMzJjNDc5MTU5MjlkM2I1IHB5M2sKKzYwMDEzIGQwZjc5NjNjZjhiMDMzNDhjYmNjNDUzMDg2NzIwNTg2NTQwM2EwODQgbGVnYWN5LXRydW5rCis2MDAxNCAyNmI2MWE1ZGYxMWI2MTJkMzExMTY2Mjc0YTcyYWU2MjQ5ZDMxNTlmIHB5M2sKKzYwMDE1IGNiMGRjZDZlM2IxMTQ3ZjNhY2EzYjJlMjcwNWY2YjFiOTBhODg0NjYgbGVnYWN5LXRydW5rCis2MDAxNiAzYjM4NTZiMzYyMWIyMDg5NWRhZTRmMzRhMzIxMmQ1ODgxNWQ4NGFjIHB5M2staW1wb3J0aG9vaworNjAwMTcgZGY3MWZjZGRiNzVlYWIxN2EwNWZlMjYxZTQwMjMzMDJhMmVkNjg5ZCByZWxlYXNlMjUtbWFpbnQKKzYwMDE4IGEzODAyODUzYzMxNzYyNjZjZjdiMjYwZDAwZDJlNDkwOWMxODJkODUgbGVnYWN5LXRydW5rCis2MDAxOSAxNzBjYjI3MzlhMzkwZTI3ODMyMjk0NDYyNWVmMWI5NWI4Y2VjMjJlIGxlZ2FjeS10cnVuaworNjAwMjAgMDc2NmVmZDJhNmQ2M2U2M2EzYjNkZGI1MzNkZGYyY2FhZTg3YTYwMCBsZWdhY3ktdHJ1bmsKKzYwMDIxIGQ4MTZiYzBjNDBiNjc1OTZlMjUzNWUwNDc0NTZhYjVhMTZiN2M3NzYgbGVnYWN5LXRydW5rCis2MDAyMiA3MTcyNjVlZDIwNDFiMzE5N2MyNWU2MWNmNWIyZTE2MjE4ODI1ZThjIGxlZ2FjeS10cnVuaworNjAwMjMgM2I0YmM0YzcwNGMxNGY2OTBiZjQyYTBhZGRmNjVkZmI4NWNlNzQ2ZiBweTNrCis2MDAyNCAyMjJiOTE4Y2UwOTI0Y2VkNmVlN2RiMTljZDNhNGJlNWYwYWMyZTY2IGxlZ2FjeS10cnVuaworNjAwMjUgMjllNGM4NmQ1MDcxYTZjOGU1YmEyODEyMDFlMTgxYjIyMzU5MDdjOSBsZWdhY3ktdHJ1bmsKKzYwMDI2IDA3NmM4YWJiZDU0Zjc4OTlkODIwNDU5NTU2NTJhMGM5MTZhYmVkZWEgbGVnYWN5LXRydW5rCis2MDAyOCA4YjQ5NTQwM2JhMjM1YmRhOGUzZTgzYmIwYWE3MDczY2E0ODQ3ZWQyIGxlZ2FjeS10cnVuaworNjAwMjkgNDI4ZGQ4NTFiYjhhZTgwZmQzYjEzYjIyNzgzOGI0ZDNmYzI1N2RkMSBsZWdhY3ktdHJ1bmsKKzYwMDMwIGJiMzNiMzJkZTNhMGI5MzcyMTU0MjkzZGJiMTk2YzJhNGUwN2I1NGQgbGVnYWN5LXRydW5rCis2MDAzMSA4NWNmMjIwZjE2ZDg1ZWU0MDQ2NjgxOTc0NjMyMmI4ZWQzNTliZTgzIGxlZ2FjeS10cnVuaworNjAwMzMgYTBkZDA5MmJiNmMzNmU3YzZkM2I1OGI0Njk3OTkzNTQ0NzQwNDU5OSBsZWdhY3ktdHJ1bmsKKzYwMDM0IDRkNjFjODg3NjI0ZDM1YmI2Y2M2MzAyMWI3NmIyOTc1ZTkzYmY2MjggbGVnYWN5LXRydW5rCis2MDAzNSAyNmE4NmMyOWFkNjAwYTY4OGU0YTQ5NGM5YTRhZWVkNDgyODZiNGUzIGxlZ2FjeS10cnVuaworNjAwMzYgODQwZTg3ZTE4MzA2OTQwYjgwYzcwNWIzOTJjMzRkODYzZWY1NWU0ZiBsZWdhY3ktdHJ1bmsKKzYwMDM4IGI0MDAzYjZjNmQxMzdlZjk1NGM0NzMzNmRjY2M1Zjk2ZTNmNTNhNzIgbGVnYWN5LXRydW5rCis2MDA0MSBhM2JmMGUyNGI5MWU2OTRlZjk0YzQ4NTY3ZjA5MWZiMzkwNmJkZTQ3IGxlZ2FjeS10cnVuaworNjAwNDIgNzliYWJiNGNjZWM4NTJmZmZkOTNiOTYxMzE3ODZlN2QzNDEwZWM5YyBsZWdhY3ktdHJ1bmsKKzYwMDQzIGJiZjQ4NDU4MTA0MzdkNjZiNjE2ODdmZTczYjc4NzU0Yzg5YjAyYjUgbGVnYWN5LXRydW5rCis2MDA0NCAxNGQ0MTA0OTc2ZmNjN2Q0MWM4Nzk3YjAxMDZhNzA0NWZkNjg4OGE2IHB5M2sKKzYwMDQ4IDI5NDYwMjA1NjBlNzNmOTU5M2M0MDEwZjRmZDk3NjM2MTI4ODFlYjQgbGVnYWN5LXRydW5rCis2MDA0OSBkOTgzM2QyYmY0Njk1ZmZjNjVhNzgyYTljODllMmM3MzYyYTI3ZmY2IGxlZ2FjeS10cnVuaworNjAwNTAgZGJmMDg1Njc3NmRkN2MzYzJiZjlmNmVkN2U0ZjI1NGRlNjcxNTdkMCBsZWdhY3ktdHJ1bmsKKzYwMDUxIDk3YTdjMTI2ZDA0ZWJmNjY1NTEyYTUwMGEzYmU1OGQ4NjViYTY4M2EgbGVnYWN5LXRydW5rCis2MDA1MiA4ZGE5ZWJmNzMwMjY0N2VjYWI1Mzk0OTE0NTcyM2M3ZjRjMzYyOTk4IGxlZ2FjeS10cnVuaworNjAwNTMgNGE2NzY3M2UzNDgxZGMxMDRlNWU2ODdlNWJmM2IzN2NiY2YwMDc2MiBweTNrCis2MDA1NCA1NWRkYjE2NmYxZDFhYTMyYjQxNDBlZmY2MTgwYzBlY2IwMWRiNGQ5IGxlZ2FjeS10cnVuaworNjAwNTUgM2Y0MGFkM2MxM2RkN2VjMmI0Y2ViMjQ3OTE0ZjQ5NjEyZWJkOWEzZiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDA1NiA3NjVlNTdjMDAxYjFhMTFlYmJmZTMwZTc2MzgzNzJlYTllOTA4MzkzIHJlbGVhc2UyNS1tYWludAorNjAwNTcgNTgzMDNlZDcyYmExYTdiZjEyNWVmNjYwOTY0MjhkNDM3MGM4ZDZmMyBsZWdhY3ktdHJ1bmsKKzYwMDU4IDEzZjc0Yzg1NDRjYzhhOTIxZGU2YjRmYzYzMTY0MDRhYjNjOTkwMmQgbGVnYWN5LXRydW5rCis2MDA1OSBlYjhlZjk2OWVkNjhhNWY3ODZmYTQyOWFlMzQwNzBmZDNhY2EzMmI2IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMDYwIGQ3YTg3YzdmMTRkOWVlOTc2ZjQ1NmU3Zjk5ZWUxMjVmYzczNTE3YTcgcmVsZWFzZTI1LW1haW50Cis2MDA2MyBhNTA3MmJhMzVmMGEwZjNhZDE1Njk0NTEwOGY0NjcyY2Y4YmZjZTdiIGxlZ2FjeS10cnVuaworNjAwNjQgMjE3OTgzM2M5YzlhNTkwOGYzOWMxMDYyMWRkN2RkMjQzMTNlNDc1MSByZWxlYXNlMjUtbWFpbnQKKzYwMDY3IDBiN2I2MmRkNGRjYmQyODNmNzZmMTEyMzVhMjAxZDAyZjE1ODk1NTUgcHkzaworNjAwNjggYzQ3MDliODFhYmRlYjZjN2MxNmNjYjYwYWFhMTk3ZWM3OTVlZDQ0NCBsZWdhY3ktdHJ1bmsKKzYwMDY5IGZlYmRlM2NhZjI5MTI2YzUzYjJjY2Y1MDQ3NzMxNGFmOWMzY2FmMmEgbGVnYWN5LXRydW5rCis2MDA3MCBmMjc5N2UwNzA5ZTM4Y2UxNGRmM2NiNDQ1NGQ5OTNlZmYzOTcyNDY1IGxlZ2FjeS10cnVuaworNjAwNzEgM2Q3MmY1MjA5ZTY3ZDU0OTgyNTNhMTg2NTRlMmM4NzZiNzA5OTYwNyBsZWdhY3ktdHJ1bmsKKzYwMDcyIGY5Nzc1NDM4MzY5YWI2MTE2MWJhYTQ1NTBiZjNmNjZlZjlkZjY1NTYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAwNzMgY2UzMjZhZmRmMDk4OWZjYjYwZDdkMThkODk1YTVhOWIzNjY1YTlmMCBsZWdhY3ktdHJ1bmsKKzYwMDc0IGNjMGEyOTYxMTk1ZWYzODFhY2FkYjUyNTVhZjgxMTRhYTI5MTllZjkgbGVnYWN5LXRydW5rCis2MDA3NSA3M2I1ZTkzOWUwNTgwZGRiZTgxMDUwMWI4OTJhMGJjOWM1Y2QyNWY4IGxlZ2FjeS10cnVuaworNjAwNzYgNTJlODIxNDE4YTc5OWI1MjRhZDgzNTgxMTU5OWE2NTdiNDQwYmIwMyBsZWdhY3ktdHJ1bmsKKzYwMDc3IDhlZGJlMDI1YWVkNTcxMjhmMTM4NzViZTU1NDU4Y2MxNTc5Y2M3ODcgbGVnYWN5LXRydW5rCis2MDA3OCBjN2NiNTgwMDYwNmUyZjZkZTAzYmI5MmJkZWQ3YWViYTExMmQwNDg4IGxlZ2FjeS10cnVuaworNjAwNzkgYTZmOWEyYmE4OTYyYTQ2Mjk0M2I2YTM0MzVkNDQ2MTFlZjE1Yjc0MyBweTNrCis2MDA4MCBjZGU0MWJkMDhlNWUyNGNkOTM4ZDYyMjc1NThkMDQ3ZjVhMGNiOTllIGxlZ2FjeS10cnVuaworNjAwODEgZTNmZGJjODA5OTk5ODA4OGJkMDdhYmU0ZDAyYjEyYzQ3NjQ0ZmM0ZiBsZWdhY3ktdHJ1bmsKKzYwMDgyIDg1OWJmODVhNTU2YTk4YjgyMGIwMDE2ODJkMzhhZmUwNDk1MGMxYTAgbGVnYWN5LXRydW5rCis2MDA4MyAwZmU5MzZiNzcxMTQyMzUxNGFjZTA3OGM1ZTViZmI0NDY3YjA3ZWNhIGxlZ2FjeS10cnVuaworNjAwODQgYWZhMGVmMzc5MTg2NWQxOGNlYjcxMzhkNjM1MTgxZjFiY2UzMmRiYyBsZWdhY3ktdHJ1bmsKKzYwMDg1IGEyNjViYWE3OTEwMDM0M2JhMTViODVkMDU4NzU0M2UzM2RmMmMzNjYgbGVnYWN5LXRydW5rCis2MDA4NiA4MDM2NjYyMWM1MDIyOTgxYjcyM2E4NjhiYTI0YTVlMzMyNjAyMjVmIGxlZ2FjeS10cnVuaworNjAwODcgOWMwYTkxM2FkY2Q0YjhhOTZlNmI5ZjkxY2U5MjU0MjFhNWU4MjJlZiBsZWdhY3ktdHJ1bmsKKzYwMDg4IGU0ZTZmYzljOTc3NWQ4MjAyNDM4MjliMTk0NjM3MWUxZmJmMTVmOGIgbGVnYWN5LXRydW5rCis2MDA4OSA4YjU1MzIxMTYxMTUyYmIwZmMyZmIwMjg0ZmEyMzdiOWRiNTgzYWFlIGxlZ2FjeS10cnVuaworNjAwOTAgMzYyNWVlZDRmMGNkOWJlOGM4M2I1NjhmZjQ3ZTNhMWExZGZhNDA1OCBweTNrCis2MDA5MSA4NzdiNDY3OWI5ZmU2OWI0MDViZTU4M2VkMDhmNjYxMmRjNDYxOGFhIGxlZ2FjeS10cnVuaworNjAwOTIgNjFhMTFjYzk1NjMyZTg0MTUwNWYyZmFlMTMzNWM2Y2Y4MDhiMTk0NiBsZWdhY3ktdHJ1bmsKKzYwMDkzIDE3MDA5ZDYyMTFiODM2YTY2MDE0NmRmMzcwYjM3ZWJmZjUyY2RmZDggbGVnYWN5LXRydW5rCis2MDA5NCBjYTI2ODNhNjc5NDMxM2EzZmVjMTc1ZDc0MDU4N2M1MzczOWUyMzhjIHB5M2sKKzYwMDk1IDRhN2FmZmY1MmVhNzFmNDg3YTIxZWQxOTY4NWJhYWE5N2NiY2QxZWUgbGVnYWN5LXRydW5rCis2MDA5NiBiMzEwMjAwNmRkN2VjOWZjZWNlMzgyMjhlZjEyN2Q3YzEwZGFhNzM5IHJlbGVhc2UyNS1tYWludAorNjAwOTcgYjUyMGQzM2JlZTA2MTU0Zjk3YzVhZWVmMmUwNzc5NmE3NWRkOThlNiBsZWdhY3ktdHJ1bmsKKzYwMDk4IDRhYzQ4NDI0OWJkMWUxZmRjNjIxMWI2MTZiMWM2Y2Y5MWFmMGFhZjUgcmVsZWFzZTI1LW1haW50Cis2MDA5OSA0ZjM1MTE4ZWVkM2I4ZjIxNjI1YzdmYjUwM2Q2Y2M1ZTc2NDUyYzc3IGxlZ2FjeS10cnVuaworNjAxMDAgODhmOGYxNTJhMGIzMzJjMmQwYjkxNDdkMDIxOTFiYWY4YTVhNDU1NCBweTNrCis2MDEwMSAzYzljY2MzMmRhOWFmZTY0NDk3MGE3N2ZmYjQ4YTNiZGJlMTFiZmQzIGxlZ2FjeS10cnVuaworNjAxMDIgMjEwMzIzZTJhOTI3MjZkNGJjYmU1M2JjNmZiZTE5NzJkN2IxNGQ0NCBsZWdhY3ktdHJ1bmsKKzYwMTAzIDE1NTM2ODY1MTk4YWIyMTk2NTBjNTBiOTg3ZGY3ODYxZDI3NzA5YjYgbGVnYWN5LXRydW5rCis2MDEwNCBiNGQwM2E5MmJkZGY5Y2JjYjdjYzA1Y2Q3Mjc2MTg0MzQwY2YxNjViIGxlZ2FjeS10cnVuaworNjAxMDUgM2QxMzFjODM4ZjA5YjhhMzAxMWU0MzA4ZGM5M2JlMmI0Y2JiMWQ3NyBsZWdhY3ktdHJ1bmsKKzYwMTA2IGQ4YzEzZWNiNmU4NTlmZWU2ZGMxOWRmOGZkNGNiZjMxZTBhZGFkOTEgbGVnYWN5LXRydW5rCis2MDEwNyBiZGE0OWViNDYwNzQ5Zjg0MzA3OTVmMjRlZjJmZDZjM2FmMzg2ZTQ3IHJlbGVhc2UyNS1tYWludAorNjAxMDggMTdmODQ1MzMyNzc4NDE1NDVhZmMxNzQ5YmY4OWExM2VlMjM2OTEzNSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDEwOSAxM2RjNjVmZTg1OTlmMDhhOGQ0YWU1ZGY0NTYwMGVjZTdmMDcyMzZiIGxlZ2FjeS10cnVuaworNjAxMTAgZWMwMmRiZTZiMDUxMDFiNjEzYWFlNTM2ZTExMDQ1NmIxMTlhNTQ0ZSBsZWdhY3ktdHJ1bmsKKzYwMTExIDVlNjYwMzBmMWE2N2E0Njk1NDg0NzViYjhmMGEwOGY4ODA2MjE0MmMgbGVnYWN5LXRydW5rCis2MDExMiBhYzJlYTk1NTIyOTMwYjJjMjFjNmRiZGVlODZlNzc3MTQxNzJjZWYzIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTEzIDBhY2U3NDc2NzQ3OGNmNjdlNmIwNzQyZWQxZjkwNGEwY2M1MzM3OWMgcmVsZWFzZTI1LW1haW50Cis2MDExNCA0Nzk2NTg4ZDlmOWFjYjc1MTM3NTI2NzczMzZjM2NmNmJhMjdlYzhiIHJlbGVhc2UyNC1tYWludAorNjAxMTUgYzIzODkyZjVhNjlmMTZmODFiMTFkZjdjODBiMDBjNmQ2Zjk5NTYzNiBsZWdhY3ktdHJ1bmsKKzYwMTE2IDExNDgzYTY3M2E0NWVlZDRjYjQ0MjU1MjVkMGRjY2NkZDlmNzNmMWYgbGVnYWN5LXRydW5rCis2MDExNyA2OGY1Y2M5NWI3MGE1ZTZmOWMwNDljOWE4MTZhNGMzZDE5ZGY2YTRjIHJlbGVhc2UyNS1tYWludAorNjAxMTggNzY0NzE1MmY3NDI0NWI3ZWU1Mjk5YjFkODg4NmNlZTc5YTI0NDUyNyByZWxlYXNlMjUtbWFpbnQKKzYwMTE5IDFlNTYxNDU2N2E2ZWQ5NjljZjk0Mjc3NDViZWRiODdiMDJjOTk3M2QgbGVnYWN5LXRydW5rCis2MDEyMCA4MTZhN2JkYmY2OWU4ZmMxOGM4OWY4Zjk3ZTBlNmIxYjQ4NDZjZjRjIGxlZ2FjeS10cnVuaworNjAxMjEgMTEyMGIzZDYwNmYyOGMxYzVhZDkwNTJkNDY0ODRhNTM4Nzk1NDYzMCBsZWdhY3ktdHJ1bmsKKzYwMTIyIDZkNDNmY2NkYTkwYzNhMTQyY2I0ZTAyMWVlM2MwMWNkYWIwMGVkNjYgbGVnYWN5LXRydW5rCis2MDEyMyAzZTBmNGE0YjlmNTVhZTYxMjI0YTdlMjI1YmI1NWU2OTgxZWU4ZDc2IGxlZ2FjeS10cnVuaworNjAxMjQgZmE2Y2VlMTRkY2JhNDhkMGFiZDVkMDFiNGQ5MDc5MTg5N2I4MDBjMCBweTNrCis2MDEyNSA1NTM0OWQ0ZDlmODMzOWU1MGM1ZWQ2ODljZTgzNWZiZmRiYzg0N2RhIHB5M2sKKzYwMTI2IDFlOGI5ZTdjMzRjZWM1NWQwNjE3YWRiM2RmMDEyMTQwZTNhYzgyOTIgcHkzaworNjAxMjggMDJhMjEyMGU1ZGIyM2I1ZmI0ZDRkNDZmM2Y5MDFmOTVmODQzNjhmMSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDEyOSA5NDFjZjJiZjIwMGU0MzkyYTNmOGJkODZmMzZmNjUxOTViYTVlMGUwIHB5M2sKKzYwMTMwIGI5OWY5Mjk1ZmQ5Y2Y4ODZkZWViY2RjNjQ2YjI5NTQ4NjZhOTc1YWEgcHkzaworNjAxMzEgOTQyZTRiNDJkYTE0ZDU2ODVjZTJhNjdkZDczYjNmNWExN2QxOTFiNSBsZWdhY3ktdHJ1bmsKKzYwMTMyIDE1MGNiNDhlZGIwN2UxYmE4NjEwZGZjM2MxMDAyMjc2OGM2ZWVkMTYgcHkzaworNjAxMzMgM2YzNGQzYjAzNTBkMTM1YjlkNjFmY2VmNTA0YzU2YTM1MGFlOWZjOSBsZWdhY3ktdHJ1bmsKKzYwMTM0IGUzNjQ2OWU2ZDhiNjc4MDljNzM0YmFiYmYxODFhODljMmFlYzdiYjUgbGVnYWN5LXRydW5rCis2MDEzNSBhYmNiNzkyM2Q4OThmZGEzZGVkMmI1YzYxMzQ1NDM3N2M3MjY3ZDFjIGxlZ2FjeS10cnVuaworNjAxMzYgMTQ1YjNlNjA1Mzc4NDM1MjY2ZTU0M2EwMDQwOGY4YzI1ZDk2ZjU2OSBsZWdhY3ktdHJ1bmsKKzYwMTM3IGIyOGZkZWYyZjBkNzFiMThkNjg0NDdkZmRiMjdiYTk5MjliZDA4MjggbGVnYWN5LXRydW5rCis2MDEzOCA0MjRjY2NmZDJiYWFhNzIxOGE5Y2I0ZGFmMzliZDIwOGU2NThiM2M0IGxlZ2FjeS10cnVuaworNjAxMzkgZWFjYTIzNjdlY2M5OTI3OGIyMDk2NjVhYjYxYWRkMDg5NDFhMjQ1MyBsZWdhY3ktdHJ1bmsKKzYwMTQwIDg0ZjFhNjU4YjIzMTkyMzcwNWNlOTI4OTliMDBjNTA3YTYyNzViYTYgbGVnYWN5LXRydW5rCis2MDE0MSBlZjg1OWNkNzU0YTc2ZmE3N2UwODRhODU4ZTM0YzJlOGY1MmEwNjNiIGxlZ2FjeS10cnVuaworNjAxNDIgZWEzODlhMjY4YjU0NDk4MDcyN2NlMzg1OTdkMzRmYTk4ZjhiOTliNCBsZWdhY3ktdHJ1bmsKKzYwMTQzIGVhYjAwZGI4MGMyNzk1OWYwMjJmNGFkOWM2ZDBmMzg0Y2RkNzNiMTQgbGVnYWN5LXRydW5rCis2MDE0NCBlZjdkNzJkOTg0ODViZjQxNGE4NjIxNjdiMGVmMjc1OGJmOWUxMzJjIHB5M2sKKzYwMTQ1IGFjOTcwZjg4MzE4NzU2Y2UyYWRiZDZiZDZiYTNjOTBiNmE2YjY0NmEgbGVnYWN5LXRydW5rCis2MDE0NiAwZjA3MmVkYjMzNDM3MzI2MTc5NDVjNzViZDAzZTk1ZTk2ZjllZTYxIGxlZ2FjeS10cnVuaworNjAxNDcgYzNiZjhmOWJlYWE3MjcxMjllNGUwN2U3NjNjMTY3OWU1YjQ5Y2VkMSBsZWdhY3ktdHJ1bmsKKzYwMTQ4IGViMmVhZmRhMjliNzZkZDliMWIyZWRiNjI3NzRmZjU5NGU4MWFmYzMgbGVnYWN5LXRydW5rCis2MDE0OSA4OWIxM2I2OTM4NjQ1NDA2NWYwNWI2NmU2NWE4OTQ2NjgxMDMxMDVmIGxlZ2FjeS10cnVuaworNjAxNTAgZWQzM2RhMmU3NGU3MGUzZTE0ZmE5OWZjZjg4MDI5NzRlMmQ2MzU0MSBweTNrCis2MDE1MSA5NDExYjFiOTEyMTgxMmI3YmVmNmU3ODgzYjkzNWI0NGVlMTIyOTUwIGxlZ2FjeS10cnVuaworNjAxNTIgZmFiYzY4OGEwOGM2OGZmYmI1ZDE2YTUzNDRmZDA5NmViNjMwMWZkNyBsZWdhY3ktdHJ1bmsKKzYwMTUzIGFkNmE5ZGIxZmY0NWM1NDI3OTJhYTNiZDk1MGJjNmU1YThiM2E0NjMgbGVnYWN5LXRydW5rCis2MDE1NCBmNmQ0YTJjNDk1MzE1MGU4YzYzYzBlODAyZWIyNGI0OWNkN2RmZGE2IGxlZ2FjeS10cnVuaworNjAxNTUgOGYxNWY4ZGU0MjE4NWFhYzRhYTFkZmFlYTkyYTQwZGY1YzE4NGZmMyBsZWdhY3ktdHJ1bmsKKzYwMTU2IDhhYmQzNmYzYWI3YTNhZGM4MjlmOTQ1NzE4OGRiNGU3ODUyMzk2MjcgbGVnYWN5LXRydW5rCis2MDE1NyAwYWU1OWY2MDhiNDRmOWMxMWU4YzAzNjEwZWNmZWI2NTYzZDUxZWM4IGxlZ2FjeS10cnVuaworNjAxNTggMTk5MGZhNmI5ZTgyODdkODEyYTcwYWQ4YzE5ZjY1NzQwNjE0M2MxZCBsZWdhY3ktdHJ1bmsKKzYwMTU5IDc5ZjE1MDUzNzUxZWQ4NzZkYzI2NGI0OGY4NTNkZWI5YTYwNjJjNjMgbGVnYWN5LXRydW5rCis2MDE2MCBkZmZmMDQxNzUzYWExOGUwNjA1OTQ2NzhmMDQ1ODEyYTRmOGM2NmUxIHJlbGVhc2UyNS1tYWludAorNjAxNjEgMjdkYWMxNjU0MWQ5MDkwODY0MjQyZTQ1ZDA1NTE3YzY2Y2UxZDA5ZSBsZWdhY3ktdHJ1bmsKKzYwMTYyIGQ5NjIxNDA1NDA2YmRlZDU1OTRmZmI5NmE3M2IyYjRkZjBlMzk4NmEgbGVnYWN5LXRydW5rCis2MDE2MyBhNmIxOTBiMGNmMDY4ZTdkMjRjYzczZGRiMTczODVlOTdjOWI4MGIxIGxlZ2FjeS10cnVuaworNjAxNjQgNDMyYzRhZTBmZDA0NmZlOTNmNDUzYTExMTk4YWMwMzFiZTg5M2ZlOCBsZWdhY3ktdHJ1bmsKKzYwMTY1IDMyNDEyZmNlYjFiMzRhZDYzNDJhZjcxMTVkZmU1MWJmNWYwYjQ2YWYgbGVnYWN5LXRydW5rCis2MDE2NiA3Mjk0OTVmN2IyMjFhNDVlMDhlZTg2ZDExMTI2NDRlMmJlYWYyN2QzIGxlZ2FjeS10cnVuaworNjAxNjcgYzY5YTdiNTVhZDZiZmZhNTlmZGYxNzJkNmQ1ZjlhODhlZjcwMzlmNSBsZWdhY3ktdHJ1bmsKKzYwMTY4IDhhOWIzYjBiZTU3MzlhYWU5NjJkODJkNTBjMjAzZmNmY2NhYzAwZmYgbGVnYWN5LXRydW5rCis2MDE2OSAxYmU0YmJkODM0YTE0Y2QyZmFiNWEwNjBkYzYzMTFiNDEyMzNkMDkyIHJlbGVhc2UyNS1tYWludAorNjAxNzAgN2M1NGY0YTJkNDM4NGVjZGEyMjRmZDFlMDMxMTBlNTJkZGM2ZTc2OSBsZWdhY3ktdHJ1bmsKKzYwMTcxIDBiNDFhOTFjZDI2MWEzNTI3YjhmOGUxZjU0MTJkNWVhMDY2NTNiY2IgcmVsZWFzZTI1LW1haW50Cis2MDE3MiBkZjIyZTYxODBlNjdhYzkzNTg4YmY2NGE4MTVhNTQzN2MzZjYyMmM1IGxlZ2FjeS10cnVuaworNjAxNzMgMjk2NDNmYmUxMTUwNzA2YTQ5MmEzY2E5ZTg2YjU3MDA1MDgxOWQ3YiBsZWdhY3ktdHJ1bmsKKzYwMTc1IGI3NmM3OGNkYTNhYmZlMWQ3Mjc1YjBiYzdjYTRlNmUyMjIyNDE3ZTcgbGVnYWN5LXRydW5rCis2MDE3NiBmZWJhNWQ1Y2FjMjIxZjBiZDkxM2ZkOTZlZDMyODUyNTc5NjVhMjI0IHB5M2sKKzYwMTc4IGMzZDllNTdlNzFmMmMyMzQwMTkzZDYyZDBiNWE1YTA0ODU4M2RjY2UgbGVnYWN5LXRydW5rCis2MDE3OSA1YmVhNDU5MmNkN2ExYjcwZTA3ZDg5NWQ4ZDhjMGEyM2Y2ODRlNDUxIGxlZ2FjeS10cnVuaworNjAxODAgMTAxZDg2YTFhZjg1ODhmZGI0YWE0Njg4MWZkMTM3YjJjM2VkMmE2MyBsZWdhY3ktdHJ1bmsKKzYwMTgxIGViNGI1MGY3MzlmNmUxYTVkOWE0ZWQ0MmE4ZjA2NGFmNmEzOGJhZmIgbGVnYWN5LXRydW5rCis2MDE4MiAzMTA3ZmRiOTA4MWU1ODRlZTY3YjVhNWExZjhmOWFmZDkzNTNjNTBjIGxlZ2FjeS10cnVuaworNjAxODMgODEwM2YwMTk4OTY3Yzk2NTM3NjgxM2RiMTM4NmE2ZmM4ZjE2ZjU0ZCByZWxlYXNlMjUtbWFpbnQKKzYwMTg2IDcxMWFlMGU5OWMwMjdkNWU3Zjg1ZDJkOWYzOGI3MWY1OGUzMjg4YTcgcmVsZWFzZTI1LW1haW50Cis2MDE4NyBlYTYxZTllZGQ5Nzk5YjhhNTYzZGI5ZGViOTg5NmZjODlkZDdlZjUzIGxlZ2FjeS10cnVuaworNjAxODggN2YyYjUyNWY5ZGY0OGM3ZTgwNzUzZTkyMjExODA4MDliNmIxYmJjZSBsZWdhY3ktdHJ1bmsKKzYwMTg5IGI1ZTgwOWY5MjZkZTE4N2VjMWZhODQ5OTllNTFjZjY0OWU5ZjhiNDEgbGVnYWN5LXRydW5rCis2MDE5MCBmZTdkNDIzNDc0ZGVhZDliNmQzMmY3OTVlYTY4ZjliNWZjZWZiYTczIGxlZ2FjeS10cnVuaworNjAxOTEgZmZhY2I0NDY3M2VhYjc2ZDkzYTliMzJlOGQ0YWMyODY0ZWViMjAxNiByZWxlYXNlMjUtbWFpbnQKKzYwMTkzIDEyYjY5MTAxMTVlMGZmMjg3NGU5ZDkwMGI3NDc2MjU2YWZmYzRlM2YgbGVnYWN5LXRydW5rCis2MDE5NCA5ZDhjODc3ODg5YzNhZDBiNWZhZDM4ZjhlNDYwYTYxNmIxZDdjNmI0IHJlbGVhc2UyNS1tYWludAorNjAxOTUgMDBhNjg1OTZlNTA2NTBkNDFkODM0M2UwNzJlOWY3MDRlMmQyZmRkMSB0cnVuay1tYXRoCis2MDE5NiBlMDUwNGExYzVmOWQ3MmQ3MTQ0YjJiNTdmNDk3ZGI3YTU1NmFiMmRiIHRydW5rLW1hdGgKKzYwMTk3IGU0M2MyYWI2YTU3Yzc2OTVlODhhNzRiNTk1NzA1MTcxZWMxYTMwYjMgdHJ1bmstbWF0aAorNjAxOTggMDkxODA2MzgxY2Y4ZDZjMTUxMmJiODA4YTdhZDA1MDQ4ZmFiYzYyNiBsZWdhY3ktdHJ1bmsKKzYwMTk5IGMzY2U1NmM3ZWNkMTFiYWQxNTVlN2MyYWE5MzA1M2Y3ZjQxMWY5Y2EgbGVnYWN5LXRydW5rCis2MDIwMSA3Y2EwN2ZlMDI5NThkMTM4YjU3MzEwMzdmYmE3OWI5MGIzMTkyOTYwIGxlZ2FjeS10cnVuaworNjAyMDIgYmI3ZWUzZDg5YzJmNjA3NjgzOTA0YTU1M2UzZDljYmQ4Y2JiNWY4ZiBsZWdhY3ktdHJ1bmsKKzYwMjAzIDU2ZjBmYmFlYjY3ZmRmYzhlNGI2NzBhMTdjMTRmMWI4YzAxNGZiYmEgbGVnYWN5LXRydW5rCis2MDIwNCA4NjdjMGFhZDc5YzE2YTcxZWViMTU3MjJmNzBhZDU2YTI0NzZhNDA5IGxlZ2FjeS10cnVuaworNjAyMDUgYzNlZDZkYTdhMTQ2ODQ2YzAzY2NhNWY1ODczMzQ5NWZiODFkYWFlNSBsZWdhY3ktdHJ1bmsKKzYwMjA2IDUyOThhYmJkZDkxY2NlYzY4MzY3YzY2YjRhZmU3YmMwODA0ODA0OTQgcHkzaworNjAyMDcgNmJkNDg0OWI1NDU4ZGU1NTAwZDMwNTJhZDRiZjlmNGYwMzgxMjI2NiBsZWdhY3ktdHJ1bmsKKzYwMjA4IGRmODBjNmI2MDZhNDg2Y2U1MGQ5ODZmNjY3NGE3MTdiYThkODgyZDkgbGVnYWN5LXRydW5rCis2MDIwOSBkNjJjMTI2ZmU1NmEyZDY0MzE3YjY3NTMwOWYyZDNhY2U3MDhmMmVlIHJlbGVhc2UyNS1tYWludAorNjAyMTAgZmVmYWEwZTY2ZmRkMGUzNTEyMTNmYmFiMDkyOTE0MWVlOGIxODhkNyBweTNrCis2MDIxMSBlYjU5MTAwOTJmNTliYmI3NWRiNmYzODExNTQxMWNiYWYzY2I4ZWIxIHRydW5rLW1hdGgKKzYwMjEyIGM0Yjk4YmMxMGJlN2UxMTYwZTUxYjk2NmRjOTlmOGUwZTYxZTI2YzUgdHJ1bmstbWF0aAorNjAyMTMgMmUxNTEzNzY5NDFmOGI1YmI2OTY1YmJiODc0NWRmOTY4Yzc2ZTZlNiBsZWdhY3ktdHJ1bmsKKzYwMjE0IGRmZDIxNzkzYTViNTc1MTE2OWVmZTg2YzIwZGJlOWNhOGNlMjE2YTkgbGVnYWN5LXRydW5rCis2MDIxNSBkZmI2ZjM2N2E0MDZiYmFlOWU0ZThmNjY2OTQzMDYwNmJlMGI1NGM0IHJlbGVhc2UyNS1tYWludAorNjAyMTYgOWExMjExYzc3ZTAyOGIzYWJjYjM4MzBhOGJkMjJkNWZiZDIwYmU4NSBsZWdhY3ktdHJ1bmsKKzYwMjE3IDY5NTgyYmIxMTE0YzM2YmRmZTQzNDMyMTY3MzcxZmNjYzYzNDgzNjMgdHJ1bmstbWF0aAorNjAyMTggYTQwMjI5YWRmYTJjY2Q4ZDUzMTU5N2I4ODlkOGRiMTYwYWZmN2I1ZiB0cnVuay1tYXRoCis2MDIxOSBiMjg1NGU5NzRjYTk2NzBmNjBiY2RhMWRhMGE4ZjZiNmExZDAyMzM4IHRydW5rLW1hdGgKKzYwMjIwIGJjY2M3NjgyYzZkNGJhNGE1MmQyZDY0ZGZhOTBkZDI3ZmYxN2JiYWMgcHkzaworNjAyMjEgMDA1OTIxZmNmZjQzYWRiYzg5M2JjZTc3Nzc1ZjZjYjI1ZGNkZGQxNyBsZWdhY3ktdHJ1bmsKKzYwMjIyIDE0OGM4N2E2NjdjMjAxZDA2ZjFiNzkyMjJmMDYxNjE3ZDU5ZDFhNmYgcmVsZWFzZTI1LW1haW50Cis2MDIyMyBmZGQ3NGJkZWVlMTViZDQ3YzM3NzliYzg1OTVjZDRjOWVmYzU3NmQ0IHJlbGVhc2UyNS1tYWludAorNjAyMjQgNGM4MzA4YWMyMGNkZDlkZGMzMWFmYjFkZDliZTI3MzJmNjBjYjhkNyBsZWdhY3ktdHJ1bmsKKzYwMjI1IGI5MzRkMmVlNjNmNjM5YmRjNWJjYjllNjE2MmU2NmZlNzllOWNjMGMgbGVnYWN5LXRydW5rCis2MDIyNiA3MzMzMzViMjJmOGZkNzhhMzBmYTI0YjUzNzhjOTY2ZGQyMzA3ZGJjIGxlZ2FjeS10cnVuaworNjAyMjcgZDlhNjA3NTI1NThlZjdkODRkMjkyNDBlMTIwZTk5MTE0Mzk1NDY3NyBsZWdhY3ktdHJ1bmsKKzYwMjI4IDk1YTQ4NzM1MTc0MDgwYWU1NzgyMjdhNWY3MDA3ZTQ2YThhNjA5ZmQgbGVnYWN5LXRydW5rCis2MDIyOSBjZGM0YWVjZWRkNGM4NWNlZjY4NGUwMWUyODFkZWIzYWUwNGNmZmQ1IGxlZ2FjeS10cnVuaworNjAyMzAgY2M3M2E4ZDE5MzhiNDJlYzRiOWZlNzFkZDJkZDBhNThmOWIzMjIwZCBsZWdhY3ktdHJ1bmsKKzYwMjMxIDAxMmY1MTZkNGQyMmYzOGViZTAyOWUzOWVlMjE2MDUxOGU4NjZkMWQgbGVnYWN5LXRydW5rCis2MDIzMiBmZWQ4YzM2ZDg3MTUwYzM3MDEyZDNjZTMwMjQyNTBjY2Y5YWE5ZjJjIGxlZ2FjeS10cnVuaworNjAyMzMgMjJhOWQ5NzU3YTE2OTdiNzkyM2NlMzc5ODUzYTE4MDk0MzE4OTI1OSBsZWdhY3ktdHJ1bmsKKzYwMjM0IDA2M2VkMzc3ZmQzZDYyZjRmMTM1NzE0MGFjMDA2MTQzYWU3NWRmYjYgbGVnYWN5LXRydW5rCis2MDIzNSBjMGYwNDgzNTZjMzZjODkwMmUxYTI4NjJmZDU1NjM5Y2M0OGQ0YjQwIHB5M2sKKzYwMjM2IGUyMmE5MmVlYzY2MjAwNjc3NWNiY2Y5YWNlNjkyMGRmODU0ODIzM2IgcHkzaworNjAyMzcgZjNhOWFkNDQ4Y2NhZDE5ZWIzNzI1ZjBkOTJhMjc0NDE1ZjU2ZDM1NiBsZWdhY3ktdHJ1bmsKKzYwMjM4IDQzNzE3MjA5M2EyM2EyNDIxMDZhMzA4YWIzYWFhZmQzZGQ1N2RiODUgbGVnYWN5LXRydW5rCis2MDIzOSBjYmEzMDg0YjI3ZTcyNjkwNjQ5NDNjN2FkMmM5NzdjYzQ1ZWUxYjhhIGxlZ2FjeS10cnVuaworNjAyNDAgOTk5YTVlZTljZDJjM2ExZjc1MTAxNTlmNTQ5ZmUyY2I4NmU3OGMxZSBsZWdhY3ktdHJ1bmsKKzYwMjQxIDk0OGJiYTBlMjQ3Yjg5NTkyOWFjMmNkYTViM2RjM2IyYTQyYmU1M2QgcmVsZWFzZTI1LW1haW50Cis2MDI0MiBkOGFiMzI4MjBiMTdkYjViYWMxNjYxMWU2NGFkY2M3YTVlYmI3YmQyIHJlbGVhc2UyNS1tYWludAorNjAyNDMgZjJkYTdmY2YzYTI0NGEyMDkwZGZjOTM0OThhZGEzNGRkZGNmNWQ5MiBsZWdhY3ktdHJ1bmsKKzYwMjQ0IDdmYTNhZTliYTAzMWRhZjY4OWEyNjJhNDQ5MjA1ZTA5NjAxOWI1MTYgdHJ1bmstbWF0aAorNjAyNDUgYzMzZjI3NzlhOTM4NjA0YzI5MWZjY2MzMTAyNGQyMGIyMGM1NTEyYSBweTNrCis2MDI0NiBlYmJiN2JiMDAzM2JjMzRjODdkMjZjMjdhODVmMGJmNTg4ZjQyOTM0IGxlZ2FjeS10cnVuaworNjAyNDcgZGI2MjRiMWJhMDZkZTliNWM4OTdhZjU2MjAzNGI1NDk4ZTU2NjFjZCByZWxlYXNlMjUtbWFpbnQKKzYwMjQ4IDI5ZmY5MDY2ZGQwYzgzZGRmNDUwYjdiNGYwNjI2ZTBhY2Q3NGRhZjEgbGVnYWN5LXRydW5rCis2MDI0OSA2ODVlOTZkMjA4ODFiYWQ2ZGIzNDRlNWExNGYwMTQ3MDY2Y2VhOGU1IGxlZ2FjeS10cnVuaworNjAyNTAgOGJkNWYwZGI3ZjVkMTA3MGEyZDRjMDA0YzA0OGJkMTQ2MDc3YmU5OSBsZWdhY3ktdHJ1bmsKKzYwMjUxIGE4Yjc1MDIxMGI3OTkwOTFlOGIzMjgwMzBiNjkxNmE2YTI0ZDI4ODUgcmVsZWFzZTI1LW1haW50Cis2MDI1MiA2ZWYzYmU0N2E0NGU3ZTQ2YzFmYTFmMGNmMzJjN2YwMTgzYjI3MmRjIGxlZ2FjeS10cnVuaworNjAyNTMgZDE2ZGU2MjUyZjdmYTQzOGVmNGY2NGFmNzhmM2RiNWY4NDcxZjJiYiBsZWdhY3ktdHJ1bmsKKzYwMjU0IGU4ZWZhNjJlZWMxNTdkMGYyNWQ4N2ZiYjU2ZWRkMTMzNmJjYmFhZjYgbGVnYWN5LXRydW5rCis2MDI1NSBhOGM3NDEyNTM3NmQ2NTE5NDQ2ZjU5NDcxMmVkYTQ1MTM3MDE3ZTU2IGxlZ2FjeS10cnVuaworNjAyNTYgZjRhNmMzMjM1MDBiZWUwNTUyMDZkYTAxM2ZkYTY1MWYyY2VlMWVkOCBsZWdhY3ktdHJ1bmsKKzYwMjYxIGE2ZjBlNGJmYzJkZDcwZmViNDJiOGM4YjI1ZjAxYTA4NzlkNTkyMzMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyNjIgN2UzYWZlOTA2NDQ5NWIyYjBmZWI4YWE1ZTRlNWE3Y2YyMzJmMDJjMSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI2MyAzZjYxYjY2NDNiN2VlYTFkZGE1N2E3Nzc1MzdkMzVhNjNmMWFmMjZmIGxlZ2FjeS10cnVuaworNjAyNjQgNzU3YTdmMzFlNDYwOTJjMDhjNDZkZGQ4NzA0MjY4ZjA3NGUyYmVkZiBsZWdhY3ktdHJ1bmsKKzYwMjY1IDY5YzU3MDNkMjBmYjQxMDkzNGExZTMwZDljYjYzZmViYzNkYTYwMjUgbGVnYWN5LXRydW5rCis2MDI2NiBlYmRiZThkZjYyYjAzOTg1MzRlOTM1NTFjYjU4NzEwYWY2N2U1N2FlIGxlZ2FjeS10cnVuaworNjAyNjcgNDI2OGI3N2Y4ZTU2N2QwYzAzNmIzMzU4NTBmNDQwMTE4NDY0NmZiZiBweTNrCis2MDI2OCA3NDJhMjY0Y2NlNGZhYjM3ODJmNzExMzg5ODk3MDRkYjg3N2ZkZTA5IHJlbGVhc2UyNS1tYWludAorNjAyNjkgY2UxNTlkMDFlZTMyMmE3NzFhYzczNTZmYzEzMTBlMGJkNDc0NGIyYyBsZWdhY3ktdHJ1bmsKKzYwMjcwIDZkYTBlZWEzNjc4M2E5MzA4OTFlM2JhYzc4YjE0NGVmZDQ0NGI5ZmUgbGVnYWN5LXRydW5rCis2MDI3MSAzYmQxOWM4YWYyYjExZDFmMTNjZDEwNTA1M2YyMGRiZjZlYjQyODFjIGxlZ2FjeS10cnVuaworNjAyNzIgZmFlNTQ1OTFjMDM1NjU4NjExNzU2NmZjMjY2MTRlNzJlNjJlYTU1ZSBsZWdhY3ktdHJ1bmsKKzYwMjczIDg0NDIwMzIwOWZiMDZlY2JlODUzNGFlNTlhYzJhYzFiODE1NDBjZGQgbGVnYWN5LXRydW5rCis2MDI3NCA1NDU1OGUwMjljMmRhNDIwYzVjYTZmMmQxY2ZiY2Q5Y2RjMDIxM2UyIGxlZ2FjeS10cnVuaworNjAyNzUgOTM0YTU5ZDUyNTQzMTRkMzczZmRjYzNjYTI4OWM2N2I3ZWYxODYxMSByZWxlYXNlMjUtbWFpbnQKKzYwMjc2IDk5NzJjY2NmNmEzM2Y0NDlhNTk4OTI1ZDc3ODMzN2I3MTI1YTM4NGIgbGVnYWN5LXRydW5rCis2MDI3NyAxMjA5OTE0MzcyNGYzNGNjY2Q5YTYyYWYwY2Y4YTIxNWIxZGZiMWY0IGxlZ2FjeS10cnVuaworNjAyNzggMDhlYjFjNDExMTEzOTFkYmIxY2RmMWY2M2UzYmY3N2YxYzhhMTU4YSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI3OSA1M2U3YmNmYjU0YTQ1ZjVmZDFjYjE2ZTI1M2FmNDM1YzI3YmViYTMyIHB5M2sKKzYwMjgwIGFhODM4OTU4ZTU0YWIxMzg4ZTRkOWNkODczOTk2NzQ4NTIzY2QxNGEgcHkzaworNjAyODEgNjU0N2JlMTFmNDQzODVmYzgwZjMwZjlmMzE3YzJjNjY3NDRlNDU3OCBweTNrCis2MDI4MiA4YmNhOGViMzZlMzdmNTE4OWQwOTUzNzFiZTdlYWZkZDkzMTJmMWE4IHB5M2sKKzYwMjgzIGJiYzcxOWE4YjU4YmY2ZDljNGI3YTFmZTMzZGNhMDU4MGNlNGNjMDkgbGVnYWN5LXRydW5rCis2MDI4NCAwNWYwMWRkNzU4YTFiZGZmZDlmYzMwN2E4OWM0NjQ5ZWI1OWI2MzcyIHB5M2sKKzYwMjg1IDNhNDQyYTAwOWE4M2U1ODY4NjhkNDZhMGI5YzA5MGU5M2ZjMzk3NzggcHkzay1jdHlwZXMtcGVwMzExOAorNjAyODYgOGU0MzViZGQ0YmM4OTY2YWEzOWFlZWQxOWEwNjc0YjY1ZTAwNzgzOSBsZWdhY3ktdHJ1bmsKKzYwMjg3IDFiZTkzZGQxNzlkZjdhOTAyYzQ5YjQ2YzQzOGE5MTY0NGU1ODQ1NTIgbGVnYWN5LXRydW5rCis2MDI4OCBkY2NlYWVmYTY3ZmQ4ZTU4MmU1Y2UxNGU5NmFkZDQxMDVlZTA1ZDBlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjg5IDI3ZDIyN2E4N2E3MzdiYmQxMTJmNWVmOThmMWFmNDNjMTU4YWEwZWIgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTAgZWY0MmJkN2ZjYmM4M2UzOTAyZDgzYTFkMGQwMGU0YmNjZWM3NTIxOCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MSBkZGIxZTQ5OWEwMWY4MTYzZGUxMzNhZWY5NzcyNmI5ODhlMGM4MmJhIGxlZ2FjeS10cnVuaworNjAyOTIgM2M1N2E1MWY3Mzk0Zjg3NTMyOGQzOTcwZTA5MzQ5OTM2NzE1ZTJiOCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MyBkOGU4ODM1OGY2YzI0MDgyOGI5NmNjNmMzMjUxMzg2MTY2YjBmNjllIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk0IDQyNDQ5ZjY4Mjg4NWJhMDZlZjdmNWEwZmQzY2NiZDg2OTVkNGQ4MjcgcmVsZWFzZTI1LW1haW50Cis2MDI5NSA1OTUwZDhkZTgxMzRiNTQ5ZWY4MmFhNjkxMWUzMGY3OWRjMzlkZDBjIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk2IGI1NDc0NmUyYTg4MGJkMzU4YWJkZDQwOTQ1ZjQ1Zjc0OTY1MzMzMGYgbGVnYWN5LXRydW5rCis2MDI5NyA5NDY3ZWEyMDA0NmMzMWQ4Y2Q3Yjc1MDVlMTQxYTQwYTg0NTA1MDkxIHJlbGVhc2UyNS1tYWludAorNjAyOTggMWY0YjFiYWJiOWUwN2IxYzNkYTVmZTdiMjI2NmEyNGFmMDgwNjg1ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5OSBlYTFkNDdjN2E0Njc0N2IxNWEzYzA2NzU5Y2FlZDU3YjYyMDkxZmZmIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzAwIDg5MTA1MGE2YTVjOTAxNzI3NzRmZWMzZTNiZWNlYmM5N2M5MjdlNzQgcmVsZWFzZTI1LW1haW50Cis2MDMwMSBmYjY4ZTQ0NTg3ZWEyNTlkNTIyMDIwYWVmMTRmYzM2OTNhODhiMTdmIGxlZ2FjeS10cnVuaworNjAzMDIgOTZmNWRjYjQ4MGE2MDJmOWRlNTNjZDlkMjNlZTM3ZjY0ODBlNjFlOSBweTNrCis2MDMwMyA4NTEwMzAxNjJkNzI4MzRmMDhhZWI5MzBiNWJhNDRhODk3ZTI2MzRkIGxlZ2FjeS10cnVuaworNjAzMDUgNjY2Y2ViNjc5OWE3ODE1NzFlNWRkMzk4OTY5MmMwZGNhZjJlNGViOSBsZWdhY3ktdHJ1bmsKKzYwMzA2IDZhZTIyMDMwZTE1MjU3NmVmNjhjNmEwYTJiMTM5YjQzYWY5ODViM2EgbGVnYWN5LXRydW5rCis2MDMwNyBkMzQ3YzFmOWMzOGFkNjU4YjlhN2FjYzdjMmM3ZGY4MDk1NzA3Y2Q3IGxlZ2FjeS10cnVuaworNjAzMDggYzZlNWM2MDRlYTYxZGVlMmNhMmE2ZWFjMmIzYzdjY2U3MmU2MmNkYSBsZWdhY3ktdHJ1bmsKKzYwMzA5IGJlNDRmYWVkNTQyZDdmZDA4ZjYxZTQ4ZTJlNGE0MzU3MjViM2U3YjUgbGVnYWN5LXRydW5rCis2MDMxMCAwZjA5M2U4YjJmNTMxYjRiMTRmZWM5YjU0YzQxYjhjYTkyOTBjNGVlIGxlZ2FjeS10cnVuaworNjAzMTEgMzA3ZDQxMDllMjNlYTVmZGVhMGFjMmI0MzNhZDU4OTRhY2M2NjI2ZCBsZWdhY3ktdHJ1bmsKKzYwMzEyIDMxMjRjYzViOTczZjE3YzQ4OTcwN2Y5MDgzOTkxZjFkNWNiNjIwODMgbGVnYWN5LXRydW5rCis2MDMxMyBiNzA0ODUwMTEyMTQ1MzhmM2U4YzEzNzBhODRhN2M4ZWQ2YTQyZTQwIHB5M2sKKzYwMzE0IDM3ZDc2Mjk3NWE5NTNkZTFjYzZlNThlMGU3MTkxYTgwODlhMTE2YzAgbGVnYWN5LXRydW5rCis2MDMxNSAyMjFkZWMwM2UyNjEyNTdiYjQ3NjdiMzczMzZlOTIxMWFjZjhhZWExIHB5M2sKKzYwMzE2IGFlZGI3YWMyNjI3ZWU0MjUxZjNmZDZhYmI4MTUwNmMwMDg0ODlhZDcgbGVnYWN5LXRydW5rCis2MDMxNyA0N2JiMzFkMDY1NzcyZDEwMDdhNTRhYjVhMWQ2Y2NlZmRkNjFmNjY1IGxlZ2FjeS10cnVuaworNjAzMTggNjRkMTNmNDU2ZDA2YmFjZjNlOTAzNDA5ZWU0MjE0N2RhYTIyMjdhZSBweTNrCis2MDMxOSA4NDMxNjE3ZjIwZTJhOTVhYmQ2MTg5OTNmOGRmMjQ1ZTI4OGNmMzRjIGxlZ2FjeS10cnVuaworNjAzMjAgYWFiNWM4ZThmMzhkYzAzMzlkMjMwOGFlYjU1YWJmZTBlMTY4NjliYiBsZWdhY3ktdHJ1bmsKKzYwMzIxIGFhYTVhNzk0Zjg4N2UyMWQxY2ZiNjRhZjc5YTM5ZDUyMTc0NTIxZGUgbGVnYWN5LXRydW5rCis2MDMyMiA1ZTBiNDYwZjI5NGE1YzdjYzFlMWFkYzgxYWQ3NDcyZTQxNWEyY2EwIGxlZ2FjeS10cnVuaworNjAzMjMgYTc1MGEyNmI1ZmFkYTYyZTZhMGVkOTlhOTZiYmRlMjA0M2Y5MjJlMyByZWxlYXNlMjUtbWFpbnQKKzYwMzI0IDUxYmI3YjFhZTc2NTkxMDU4ODM2ZjE2ODdiYjAzZjlmZWRiMDQ2OWYgbGVnYWN5LXRydW5rCis2MDMyNSBkZjIzZDUyNDk1NTBkN2Y3ODg4N2ZlYjA3NmU2Mjc1ZjBmNmRkN2E5IGxlZ2FjeS10cnVuaworNjAzMjYgNjk5YjM3MTcwY2FkYzZiMDE5NGNmYTRjMzYzZmY1ZjU5ZDE2MDBjYiBsZWdhY3ktdHJ1bmsKKzYwMzI3IGNiNTgzOWQxMzIyNjE2YTAxNDk3ODgzNzhhMmQ4NmU0ZmZjYzU5MjcgbGVnYWN5LXRydW5rCis2MDMyOCA4Y2JjYTkxZTMxNTQ5NzBiYjQ3NTZkMjhmMjVhZWU4ZDQxOWE5NmJkIHB5M2sKKzYwMzI5IGZiYjlhZTlhNTE0ZmViYTkwY2FjNzI5YmIzY2Q5OTI3ZDU0ZDIzMzIgbGVnYWN5LXRydW5rCis2MDMzMCA1ZDc4MmM4ZDQwMTY2OGNiOTNkNjE5YzRkODQ2OTcxNjdkNDUwMzFhIGxlZ2FjeS10cnVuaworNjAzMzEgZGNhM2Y2NDZlOGExZmI1OWZmMjhhYzY2NzhiNDE5NDJhZmVmMDRmOSBsZWdhY3ktdHJ1bmsKKzYwMzMyIGYzYjU4NDg0M2Y5ZmJkYzljNTRhYjUxNDU2ZTZmYzdlMDc0ZGEwZmMgcHkzaworNjAzMzMgOTYyYzQ5MWUxN2Q2Y2E4YzY4MDNiMDJkMGEyNzFkMDdkZWFiOTI0MCBweTNrCis2MDMzNCA1Zjk4NDQ2ZTBmMWJiN2I3NTYyNGJjNTcwMjk1ZTViZjFmYTRkYzAwIGxlZ2FjeS10cnVuaworNjAzMzUgNTBmMmQ3YmRhYmM5YTQ2YzcwOWMxMTg2YjExYmNjYjEzNzgzNTZjNSBsZWdhY3ktdHJ1bmsKKzYwMzM2IDkwOTM5MDhhMGNmNWQ0YzJjZjY3ZDYzZjlhMjZhOTlhOWQ4NTg5OTIgcmVsZWFzZTI1LW1haW50Cis2MDMzNyBlMzM2MjU4OTU1NTAyNjE3YjU4MzI5YzdmYTA3MGI0ZTc3OTIxNWQwIHJlbGVhc2UyNS1tYWludAorNjAzMzggNWIxN2I0NGJlMWJmODc4ZDY5MWVlY2Y5ZjMyYzk2ZThlNDJiY2RiNSBsZWdhY3ktdHJ1bmsKKzYwMzM5IDYzNWE3NTYzNjBmMThjOWExMTVjY2JlMjU2NGE3NjM2ZGNjNjEyNDQgdHJ1bmstbWF0aAorNjAzNDAgNzJhNjcyN2JlZDljOWUxNGYzZTU1NDYwM2FkYTc0MjI5MGNlODhhZSB0cnVuay1tYXRoCis2MDM0MSA2YWRiZDYyYjlhYmZhMGUzMGI1OTdkN2NlMTEwZDllMTI0M2I2YmVhIHRydW5rLW1hdGgKKzYwMzQyIDJjYTJiMDg0MGIzNWQzODQ1ZDgwYmQ3Nzg2MzVhMDY1ZDM2NmE2NDkgbGVnYWN5LXRydW5rCis2MDM0MyAyMGJmOTQyODVlZWZlODY4NjVjMTQ0OTJmYzBkZmYwNzdjMGYzNTFlIHJlbGVhc2UyNS1tYWludAorNjAzNDQgNGRkMGZjZjNkYWY3M2UyNmYwM2MyYjhiN2VkMTE4OGUxNjkxMTU4MSBsZWdhY3ktdHJ1bmsKKzYwMzQ1IGZmNThiMzBhOGQ1Mjg3MWQ2Y2YwNTQyY2Y3ZWExYTcwNGQ4YTE0ZWIgbGVnYWN5LXRydW5rCis2MDM0NiA2YmJmNmZkYzE1MmI5ZTQyZWRiZjExYTYwNWMyMTYyMzE5OTgxZTYyIGxlZ2FjeS10cnVuaworNjAzNDcgNDY3YzcxZjM2NWZkZWI0ZjY5OGVjNDcyMTM0YWI4NGI3MTk4NGZjZCBsZWdhY3ktdHJ1bmsKKzYwMzQ4IGYwMTgxM2IzM2NhNGJjZGZiNGNlMTM1NWU3ZDNiMWVhMDk4OGVhMDggbGVnYWN5LXRydW5rCis2MDM0OSA2MmYwYmE3NDUzNTdmMDU5YmVjNmRkZDNhNDI1N2IyODI4ZmFjN2NiIGxlZ2FjeS10cnVuaworNjAzNTAgN2MwMjE4MmUyOTc5YTIyZWU3NThjYTAyZjI1Zjg4MmIyYjg0MGQ0OCBweTNrCis2MDM1MSA5Yjc0YzljOGI5MmM3OWZiZjkwNGY0Njc2ZTczY2RhOGRjMzZmMGQ3IHB5M2sKKzYwMzUyIGY1ZTUyYTUzZmNkMTQ4MzRmNjM3MmI2Y2UxYjZlYWQ5ODkxM2IyMDggcHkzaworNjAzNTMgZWUyNDNjYTY1ZjVmNTQ2OGJkMDk2MzljODA3MDQyZmYzZWNkZjYyZSBweTNrCis2MDM1NCBmMTVkM2JmNGNhNTZhMTJkMWIwNmM2MjYxYjUzMGZmMTgwNDU3YjRjIHB5M2sKKzYwMzU1IGUyMjRhZDRiOGI4Y2FlMzE2ZmRhMDRhMjU5NzUzYWVhMmU2YTA1NTYgbGVnYWN5LXRydW5rCis2MDM1NiA3MDdkZDlmMzg0ZjM4OTYyNGIyMGYyMTBiYWI5YjliNDc1MTA2ODdjIGxlZ2FjeS10cnVuaworNjAzNTcgZmNmYTEzMTk5ZWNiZGEyOWVkOTU5MWQ1MmFkNzU4OGM4YmIzYTE3NiBsZWdhY3ktdHJ1bmsKKzYwMzU4IDFkNzFiZjQ3NWE4NWYzYWM2NjdlZjdlMzA1M2RlYmFlNTExZDg1YmQgbGVnYWN5LXRydW5rCis2MDM1OSAyZTRkZDM5YmY2OTA1NjMyNjlmNTE1ZTc3NDA2MTQ1ZTI0ZjlhOWMwIGxlZ2FjeS10cnVuaworNjAzNjAgNjA0YWFjNDMzN2E1YzViMTM0YWE5NWM1MWM2YmJiMzczNDdlNTE0YSBsZWdhY3ktdHJ1bmsKKzYwMzYxIGMzMTViNjcyNDVmN2Q1NGIwMzBhNTNlMjRkMDUwNGQ0N2RkY2NmNGQgbGVnYWN5LXRydW5rCis2MDM2MiBhM2Q1NzAwYjFkNWEzZTA2MDcwNzdiNWNmZTQxNjUyMmJlM2Y2NGIyIGxlZ2FjeS10cnVuaworNjAzNjMgMWZmMmJiNTE4N2RmZjkyYTU0MjNmZmM5MTNjYjlhMmQ1NzU5MjQxNiBsZWdhY3ktdHJ1bmsKKzYwMzY0IDg1Y2NjN2MxNTQyNWRlODI3OGFkNDMzMjlmMmYyYmY0MDk5MTQ5MDcgbGVnYWN5LXRydW5rCis2MDM2NSBiMDY0ZTI1ZmI4NDIzNDE5Zjc3OTllM2VjYWUzNWQ5NTRmOGI2MGNjIGxlZ2FjeS10cnVuaworNjAzNjYgNTYxYzA2NWUzZjJkNWZlOGVmYTNjNTY0OTJlMzVhZjFjZWU1N2Y4ZSBweTNrCis2MDM2NyAwYTcwZjViMzBiOGFjMTg3YTQ3OTc5NDY1ZmU0MmY0MmJhMTMyZTgwIGxlZ2FjeS10cnVuaworNjAzNjggMjI5NDVkYmNkMDMwMWY4Njc3YmY0MGUxMjg5MTk3MzZiMGYxMTZjMyB0cnVuay1tYXRoCis2MDM2OSA0NzI1Yzg0YjA0MjI3OWI5NTY5MmQzMmQxNjE2Y2VmZjIwZjViOWJkIHB5M2sKKzYwMzcwIGY3ZDIzNjBlOTUzZGU3Y2U5ZDczOWNlODI2YzdmYmMzNDkwMWJmZjkgbGVnYWN5LXRydW5rCis2MDM3MSBhZmE1OTkzMjI0ZTU1NjMwNjRlYWFjYzEzZjAyZjliNjhlYjc2NjJmIHJlbGVhc2UyNS1tYWludAorNjAzNzIgYmUzMTQwZWM2N2M4ZjYzMDhmNDg3YTBiM2U2Y2IzNGY1ODYxOWE0NSBsZWdhY3ktdHJ1bmsKKzYwMzczIDc5ZjQzOWQ5OWY4YzNiOGIxOTA2NzU3ZWRiYzMxM2Q1M2VjNWQ0OWQgcmVsZWFzZTI1LW1haW50Cis2MDM3NSA2OTVlNWJmM2FmOWMwNTY5MjE0ZmNjZDM3YWUyNWY2NzAwZGZjYmVmIGxlZ2FjeS10cnVuaworNjAzNzYgNzI3Y2M4MTBkNjkwYmNlODg0NjY0MzcyMWQ2Yzg3ZjExMWVkNWE2MSBweTNrCis2MDM3NyBmMDYyZGRhNTQ4OTRmMjQwZjk4YTA0ODU0ZjA3NjAzNGQzMjY0ZGUxIGxlZ2FjeS10cnVuaworNjAzNzggZWEzZmUzMDJkMzkyMDY0MGZjNjI4ODc1MDZiNWE5YTYzZmFmMWRkNCBsZWdhY3ktdHJ1bmsKKzYwMzc5IGViZmJhYTEwNTFlMmQwZDc4ZDZjZGQyMTliNTU5MDExNTViNzhiODkgcHkzaworNjAzODAgNTIzMmYwN2Q5YzhlM2RiMzg5MjQ4NGIyN2YxZmVjZTI3ZTdhYjRhYiByZWxlYXNlMjUtbWFpbnQKKzYwMzgxIDFjOWFjMDBjNDc1ODc5NjE1YmM3MWMxZTNjMDE3Yzc5Mzc4NzZlZDIgbGVnYWN5LXRydW5rCis2MDM4MiA0M2NhZjgxOGNmZjA3MjkxYzI4NTM3ZjZkNDFjN2RmZWFmNDk3YmU4IHRydW5rLW1hdGgKKzYwMzgzIGVmMmQzYmY4MzgzZGNiYjI1NmU3YTdhODZhNDcyNzc2MGQyNGYyNTMgcHkzaworNjAzODQgZjA3ZTZmMzI5NzU1M2U3YzU4NGE4M2M3ZmU3NDA1ZmQ1NTgxMzk1ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDM4NSBlNjE0ZDI0OGJkZDEwMTU3YmZmNzdlNGI1MGRjNWNkMzg5NTY1YjdlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzg3IDU4M2FjZTEyYzVjZjEzMWMwZTQ2OWFhZmYxZjQxZjM3YWM5ZmNhOTUgcmVsZWFzZTI1LW1haW50Cis2MDM4OCAxNWY1YjczMWUwMGIzODE1YTM2YTJiYmQ4MWVkNmRmNTM2NDBlZGYwIGxlZ2FjeS10cnVuaworNjAzOTAgYTI4ZDBiMTRiNzdkZWVmNDVjM2E3YjhhMGY1NGZkZmMzZGIwOWViMSBweTNrCis2MDM5MSAyYzNkNDk3ZWJmZDZkYmFhZmMyNzgwNjRhZGEzZjY2Y2Y1YjhmYjU2IHRydW5rLW1hdGgKKzYwMzkyIDk0ZjE4YzJkZWFhNWRhYWJlMmIyMjFkYWY1ZmUyNzZiNThiMzY5YjEgdHJ1bmstbWF0aAorNjAzOTMgMGRhMmVmOWZlZGMwMzJmMDk3YmFlNmFmMDQ1ZDA2ZmI4NzEyYmNjMCB0cnVuay1tYXRoCis2MDM5NCA2YWM3ZDJlOWEzYmM0MDI1MDcxMjg4YjJmNjcyZGNiYzA2MDYzZTVlIHB5M2sKKzYwMzk2IGFiNjcyNjA3MzdiMWM4NmUxMzFkYWU1M2E2ZTcwZDY3MjdlOTRmM2IgcHkzaworNjAzOTcgMTVlOGIzNDI1NGVjZmI1Zjc4ODUxYzNkNmQ0M2Q0YjdmNTAxY2EyMiBsZWdhY3ktdHJ1bmsKKzYwMzk4IDFlNTgzZWI3MWIzZmIzNjE5Nzk4OThiYzY3ODk0MGI1MmExZWNmMDQgbGVnYWN5LXRydW5rCis2MDM5OSA3N2QwNTJjZTFmNGM3YzVkMzUwNGM3YzE5OWU0YmVmZTVkMTJiMmZmIGxlZ2FjeS10cnVuaworNjA0MDAgNzU2NDEzYzBmZjFkOWFhODdlNDUxMTkxY2E2M2MxZGU4M2JhYjVhNyBsZWdhY3ktdHJ1bmsKKzYwNDAxIDdhNmE4MGU4NGE4YTAwNmU0Njk3ZjNlMjMwMjg0NTY4MWU4NTYxOTYgbGVnYWN5LXRydW5rCis2MDQwMiBkYzQ2YTY3YTdiN2I3MGQwMTE3YjNmNTNmMjkxMjM5M2IwNmY0Y2NkIHRydW5rLW1hdGgKKzYwNDAzIGJkMjQ2ZjMzNjg3Zjc1NzVjNDlkNmUwMzNkZDE3YzIyMGFiYThlMWMgbGVnYWN5LXRydW5rCis2MDQwNCA1NDY3M2Y3MjQxMDZlYjFmZTZlMWZkODMwODQ1MWNkMmYyMDkxZjE0IHRydW5rLW1hdGgKKzYwNDA1IGVmZWE0MjE3YTk1NDMzY2UzMGNkYTNkYzRhODJhMTU1NDk0YzYxMTAgbGVnYWN5LXRydW5rCis2MDQwNiA0MThhZDE1OWZlODQzZWU0NzcxMGNlMTU2NTA1MzRhNGQ0N2Y5MjJjIGxlZ2FjeS10cnVuaworNjA0MDcgY2MyMmQzZjEyYjEzN2Y3MjgzZjlkZjcwYzljNTcyNTI4MGE0NTQwMiBsZWdhY3ktdHJ1bmsKKzYwNDA4IGMzYjM4YTg1OTg5ZmM3NjUyMzIyZjE0M2ViZTM5MDBhYzZlMzdiMTIgcHkzaworNjA0MDkgODYwOTRjNDY3ZWFmYjE0ODBjZWEzMThmYTA3ZmJhZjgxYjI1ZmM2ZiB0cnVuay1tYXRoCis2MDQxNCBlOWQzZDU2MWRiZDFhZjI5OWVjZDUwYmU5MmRlN2ZlNWZjMTBiMmJiIHRydW5rLW1hdGgKKzYwNDE1IDNmOWZlMjcxNTUzZjE2ZDYxMTZjOWUzYmEzMTgwZTYzNmFhNDUxNGIgdHJ1bmstbWF0aAorNjA0MTYgMzAzY2VmMDYzYzM1MjBlYTZkNTVmNGUyNGVjMDVjNTYzZTFiZDkyYyB0cnVuay1tYXRoCis2MDQxNyBiOWJkYzZhOThiZWEyMjg4YjRkM2FiYzAzYTgzMzc3ZDQ0MjJiNjljIHRydW5rLW1hdGgKKzYwNDE4IGVkZDM2N2MyMmM4ZmNjNDQ5Mzg2NjEyOGFjZjg0MTY1N2I3YjMwNTYgdHJ1bmstbWF0aAorNjA0MTkgM2ViYWFlMzQxYzFiMTIzZTVkOWU1NDNkNTY5ZjFkNGVhYTE0MDRhNSB0cnVuay1tYXRoCis2MDQyMCAzYjRmMGM1ZWNmNTNmZDYyYzgyMTc1YmY4OTM2YWFjZDE0NzE2MThlIHRydW5rLW1hdGgKKzYwNDIxIDI5ZDYxNWRkMWQ5NzA1NWY5ZGE1MmNlNDA1MGVkNGVlNzRiYzExMWIgdHJ1bmstbWF0aAorNjA0MjIgYjM3MmMzNTRhMjhjMTc0NzUyZTA2MTRiMGFjMzI4MmJmNWNhNDBjNCB0cnVuay1tYXRoCis2MDQyMyA1MDljZGY2ZDY0Nzk1ZWRmZDk0OTUwNDRjNmQ1MWUyNjNmN2Q0ZWQzIHRydW5rLW1hdGgKKzYwNDI0IDkyNzczZDdlNjUzZTRjMWZlNDk3ODgzOGUxM2I1ZjRmMDExMzYzMWIgdHJ1bmstbWF0aAorNjA0MjUgZTc5MWJiMGFkY2RlODI5MDcxN2I0YWQ3MzM4NTkzMGZlNzU2YWRmMiBsZWdhY3ktdHJ1bmsKKzYwNDI3IDdhYzdlMDg5YTA2ZmM5YWQ0Y2UxYWNhYzEyNjM3ZTU4YmVlMDc4YjAgdHJ1bmstbWF0aAorNjA0MjggNzE2NmVkNDk4YzZkM2NiZGU1ZDE4NTFjYmNlOWZlMzJmZjIyMzM2ZCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDQyOSBjZDY1YmEyM2E1MGU3NjEwZTQwMTAzZjM0MzVlNWRhMTc2YmIwY2RkIHRydW5rLW1hdGgKKzYwNDMxIDk2ZDAyNDkxNjRmYzY1MjZmY2ZjMmI3ZDMwMGE0ZWE5MGFhZjZlYTYgbGVnYWN5LXRydW5rCis2MDQzMiBiN2FhOGJkZTdiY2Y3MGY0OGM4OGRmYTA0NjI2Y2VhNzZiNTVlMDE3IGxlZ2FjeS10cnVuaworNjA0MzMgMjUwZjI5YmFiNjFiMTJjMzY2YWIzMzA2ZjUyYmU0OWNmZGZiMzUwMSBsZWdhY3ktdHJ1bmsKKzYwNDM0IDkwZTg2ZWUzNjg0YjNjMWI1OGQ2ZTNlZWMwMmIwMGI5YjZkYzE2N2UgcHkzaworNjA0MzcgZTk3NjRhNjk1ODA5N2EwNGQ4OTNjMjRmNTlkZmNhZjBlZTBjMTgzMyBweTNrCis2MDQzOCA2MjkwOWQyZTU3M2I5NzRmNzBkOTY5OGFhYTZlMWE1MjMzZjEzYWFmIHB5M2sKKzYwNDM5IGU0MzIzODc2MGMzODczOTZlMDc5ZDZlNzNjMGUxMjlmNjE5ZDA1MzcgcHkzaworNjA0NDAgMjYyNzg3OTZkNGRhMTMxOWYzOTM4MzcwMGY1NDdjY2Q2OTlhOGRlNyBsZWdhY3ktdHJ1bmsKKzYwNDQxIDUzYjkwZjMxZWZkNmU2NmEyODBhNjkwZTYzMDhkNDg0ZWViMDg5NmQgbGVnYWN5LXRydW5rCis2MDQ0MiA1MTBhNDgyODlkMWQ2ODhkNTE4MWNiZmQ4M2Q0YTllYjhmYmQ5NTM4IHB5M2sKKzYwNDQzIGM4ZmNhOWI1Y2QzYzMwZGNjYjVkNGRkNzJmZmFkNDFlMzVmMjlhNWYgcHkzaworNjA0NDQgNzYzOGQ0YWUzMTBjMjFmOTgwMDg5NjIwMTVlNDRkZTA0ODAxODkwMyBweTNrCis2MDQ0NSBiZDhkMjM2OWYxNDExYjM1MDZiNjRlYzhlMjUyZTBlMWY4MDczMjc0IHRydW5rLW1hdGgKKzYwNDQ2IDVhYjIzN2M5NjY5NWRmN2EwYjdiZThlNjc3ZjM0ZjBmZTMzMDY0NjAgdHJ1bmstbWF0aAorNjA0NDcgYWZkMGNiMjVjNzNlMjEzMTgwN2IwMTMwMWQwYzY1ZWQzN2QwZWNhZiBweTNrCis2MDQ0OCA5NjM5YTczYWZhNDc3NjE0YzBlZDM2ZDJhODk4OWM3NDVhNTM5ZWRjIGxlZ2FjeS10cnVuaworNjA0NTAgYzA1ZWU3N2IzOWYyZGMxMDZkZDdhYWU5MWI5MTI5ZTNhODIwZjg2NCBsZWdhY3ktdHJ1bmsKKzYwNDUzIGI5ZWUzMWEyNmYzODVkM2NmYTk0YzViZjkyNGZjODQ2ZTI1MGJmODkgcHkzaworNjA0NjMgYmUwNmIzMzk1NzY4NGM0NGIwOTU1Y2Q0ZjlkNmU3ZDg4MmM3YjQ1ZiBsZWdhY3ktdHJ1bmsKKzYwNDY0IDdkMGRmNWVjM2QyZjRiZTdlYjM2NGFmZTNiZDk1MmQxOTAxMjUwNWQgbGVnYWN5LXRydW5rCis2MDQ2NSBlODQ3NmFlZjg1N2MyMWMxMGU5MTU0M2U3OTk5MGQwYTNlNjI1MzI0IHJlbGVhc2UyNS1tYWludAorNjA0NjYgNzE5ODM2MDNlYTk5OTkwNDI3MjQ1MWJhMzMwMjYxN2MyNGE2ZDE4YyBweTNrCis2MDQ2NyAzZjI0OTZkYzkxZGIzZjY3OGM3ODIyMTc2Nzc4NWEzN2NmYmE5ZGY1IHB5M2sKKzYwNDY4IDg5MzBmZjIzMGVlOWU0NjNjZjRmNGQwMTBkNjVmM2RkNzhmZjlmODggcHkzaworNjA0NjkgZGU3YzMwOTdiMmMxMDY1MmUxN2E4NmJmZGEyZjgwNGE4NDVkMGQ3MyBsZWdhY3ktdHJ1bmsKKzYwNDcwIGU3N2I4MmFlZDFhODMxMzFmZjQzNTM5MTUwMDVmOGI1MTJlMjE5NTIgbGVnYWN5LXRydW5rCis2MDQ3MSAwM2U0YTM2YTU2YmJhNDk1ZTEzMTVjZjJmZTBhOTBlNzYxMjJhMDA4IGxlZ2FjeS10cnVuaworNjA0NzYgZjM4MGQ5OTEzOTBlMDlmMjNkMTI4NDcwOWVlMmI0OTY5MThiOWY3YiBweTNrCis2MDQ3NyBmMTgzZjExODk4MjQ4ZTc1NGVmYmJlNDM5MzEyMTMwMTcwMmIyMTQ0IHB5M2sKKzYwNDc5IGQ2MzVmMjllNTVmODI5NDcwZjVhMmRmMWEyOGNlODk1M2M2N2VmMTAgdHJ1bmstbWF0aAorNjA0ODAgYTc3YzhkY2JjZWQ5MTBmZmQzZTJmOTNkMTJiODJjMGE1YWM3NmY0OCBsZWdhY3ktdHJ1bmsKKzYwNDgxIDNhYTRiOGRmYmM0YTRjYjU0MmNlOTRmOGU0MjA2YTgyODBmZTg3MjkgcHkzaworNjA0ODIgODY1OWU1MjYxNGRhZGQ2OWUxMWJhNmUzNzE1ZjU3Y2NjODhkYTczYyBsZWdhY3ktdHJ1bmsKKzYwNDgzIDNmMTZhYzkxNTIxNGVkMzllNTZmZTc0YmZiNzljZTIzZGMxNjg2NDMgbGVnYWN5LXRydW5rCis2MDQ4NCBmMGU2YmI5YjI0ZjY4YjFlZjNkY2JiNGFhZjMwZTI1ODljM2E1OTQ3IGxlZ2FjeS10cnVuaworNjA0ODUgYTRiODQyNTdjN2Y4NTdmNTI3NmQ1ZDUwMTU2N2NiZGI5MjZiM2NiZSBweTNrCis2MDQ4NiA0OTJiMzAyYWRlZDY4OTQ4NzJmYzNhZjI1YWRmYjk2NjQ1MGJkMjIzIGxlZ2FjeS10cnVuaworNjA0ODcgNjc4NTA5ZjlhMDNmNzJhMWVlYjQwNGI1NWJkYjNkZjc4OWFmY2UzOSBsZWdhY3ktdHJ1bmsKKzYwNDg4IDMxNjRiNGFlMjdjM2MxZGYyNTFhZWM3MmM0MDBiNzIxMjE3ZmExZTMgbGVnYWN5LXRydW5rCis2MDQ4OSBkNzU0MDAzMWI5NTkyMTczOTYxZWViNzk5NzM2ZWE2YWE1Mjk3MDlkIHB5M2sKKzYwNDkxIGM2NmRhNTdiOTQ4ODk4MGU1NDA1NWZhOTYxYzEzNWQ0MzBjNjFhNzMgcHkzaworNjA0OTIgMzg2MDRmYTJhNDhmMWZlZTE1Yjk3ZmU0N2I2ZmFkMmUxN2JiYzA3OCBweTNrCis2MDQ5MyBhMjgxZTMzMTk4YzBhZTM0ZDFiYjE1NThmM2U3ZTZhZGI1Y2NmZWYwIGxlZ2FjeS10cnVuaworNjA0OTUgN2NiNmU1NjE3ZGEwOWQ4OWYzZTljZjMxODhhNTNhNzg5YjhiNTEzYSBweTNrCis2MDQ5NyA5OWVmMjQ4ZmIzMTUzZmQwOTg5NTYwYTA1Yzg1NTFjZTMyMjI5NzRhIGxlZ2FjeS10cnVuaworNjA0OTggMmI2MzY5MGQ1MTI4NTk3YzcwMWNkZDM5ZjJiNmIzYmJhNWEzNzhhNyBweTNrCis2MDUwMCAzM2JiZGM3NmFmYjYyZTE0NWVmZDYyYWFlY2UyZDkyNWQ2YmIwY2ZkIGxlZ2FjeS10cnVuaworNjA1MDQgMzk3OWFlMWVlYTE3YTcxOTgwOTRiNjllMGU5ZjBkMmIyNGRhNWY5NiBsZWdhY3ktdHJ1bmsKKzYwNTA3IDY0OTJhNzhlOTNiNGMxY2NjMWI5MzdmN2M3NzY3MzlkODlmZmFjYmUgbGVnYWN5LXRydW5rCis2MDUwOCBmYWE4OGZmNGNjZTRkMjU5ZmFiMTM3OTI3OWI5MWIxMWQ2OGY3MTNhIHB5M2sKKzYwNTEwIGJkYjcwMjk1MjQ4YmNmYzM1Yzc4MzNjMDQwM2FlZjI4Yjg0NWExMzMgbGVnYWN5LXRydW5rCis2MDUxMSBiZWVhNzNjYTJiODhlN2Q2OGNhYWZkMjM0N2JkN2M3M2JjMmE2MDg2IGxlZ2FjeS10cnVuaworNjA1MTIgNWNiODI4ODM2MGU3MzhjM2IyMWEwNjg3YzJjOTQzNjEwNjNhZjcwYyBsZWdhY3ktdHJ1bmsKKzYwNTEzIGQxMmM5N2NjNzQ2NzEzZDQ3YTI2NzMyZTRlYzRiNTZhM2QwMTEyOGYgbGVnYWN5LXRydW5rCis2MDUxNCBmNGI0OWVmY2VkYzBlZTI5ZTRkNGZjZTIyNjUxYmY0ZTdlOWFjMGQ4IGxlZ2FjeS10cnVuaworNjA1MTUgZGY1ZTUyZTA1MjQ2ZmNhMGU5NTNmNDg0MWU5Y2YxNWRiZTVhMGMzMSBsZWdhY3ktdHJ1bmsKKzYwNTE2IGQwYjMxZjI0Njk0ZGJlNzFiOWE3M2ZmNDIzYmJkZjIyOTVmN2JiOTYgbGVnYWN5LXRydW5rCis2MDUxNyAwYjRlOGFmZWQ2NjMxMjRkMDViNzdiMGY2ZDNhZDdlNDA0Mjc4MDg5IGxlZ2FjeS10cnVuaworNjA1MTggZjVlMThjOWJkZTcwMTc1MjM4MGNjZDY5MmQ4N2M2NzJiNTcwYmVjMyBsZWdhY3ktdHJ1bmsKKzYwNTE5IGNlOTgxNmY1MzY5MDliNTlkZWE2OTk3YjQ0NTUxNjJiZDAwMWRlYmQgbGVnYWN5LXRydW5rCis2MDUyMCA0YzU5YThmNzllNDI4MWVjMjU1ZTk5NDljOGQ2NmZkYmIxZDdmOWMzIGxlZ2FjeS10cnVuaworNjA1MjEgZTJhOGI2NzY1YWIzZmIwYzhjNWJjNmRkMTRkNWQwMTZjY2E0MzU5YiBsZWdhY3ktdHJ1bmsKKzYwNTIyIGQ1NGQxMzNjNmE4ZGI3Zjc2Zjc4MDkwODZjZjI3ZDZmYzRlNTFhZTYgbGVnYWN5LXRydW5rCis2MDUyMyA3ZTJlNjAzZjRjYmVjZTA4NTI4ZmE2YjA1NTk3MDY1NGRiMmE5ZTg1IHB5M2sKKzYwNTI0IGEzZTZmNzQ1MzNkNjBjZDBjYmYzYjE0ZGNhMGI1NGM2MDIyZjJkZjQgcHkzaworNjA1MjUgNjQwOTEyNDNjMDdiY2VjOTU5MmQwNDIwZGViOWQxMjcyYzU2OTlmYiBsZWdhY3ktdHJ1bmsKKzYwNTI2IGE4MWVmNjNhMTAwOWEyOTk0Y2NiZTAxZDI3Y2JhYTQwOTI2MWMyYjQgbGVnYWN5LXRydW5rCis2MDUyNyBkOTgwZjE3NWM4ODYzNGJkYWIwMDA5NTM1Yjc4MWNlZTY3YTMxYTYwIGxlZ2FjeS10cnVuaworNjA1MjggNmQ3NWJlMmMzZDNlNDEyYjM1M2Y4NjY5NzkyNzA1NTAzZjQzMGM4ZiBsZWdhY3ktdHJ1bmsKKzYwNTI5IDY2MGQyOTg5YjE2MWNkNTQwYWM5OTdjZmY2MzNkYzRkNjc4Njg4ODIgbGVnYWN5LXRydW5rCis2MDUzMCAwNDY1M2Y5MjY2NGYzMWQyMTYxMjJjZmFiZDk0MWY5MmExZGUwYjZkIGxlZ2FjeS10cnVuaworNjA1MzEgNjViMTI1MmMxYmMxOTBhYWY2MDJjNzk5NmY5NTYwZGQ3MTVjODBiZSBsZWdhY3ktdHJ1bmsKKzYwNTMzIGYwM2FmNjAxMjI1YjFkZTllMGFjOWQyYjUzMWU2M2Q2ZjJiNzRlNWIgbGVnYWN5LXRydW5rCis2MDUzNCBiMmRlOTdlYjFmNjdjNzQzMDU3MmJhOTY2ZmQ4NWVlZDU0NjEyYjQ1IGxlZ2FjeS10cnVuaworNjA1MzUgOTViYmY1NjEzYjE4ZjQ5ZGU1MmM0MjJiNjhkNmNjYWUyYjBlYWE2YyBsZWdhY3ktdHJ1bmsKKzYwNTM2IGFlZmRjYjUyNDA2ZGQ3MWZlYjdmMTQ1NTk3MDJkNDdiZjhjODQ4MWUgbGVnYWN5LXRydW5rCis2MDUzNyA1OWQ4OWQ2MWMzYTBiMzBjZTkwZWVmM2NmYjg1NWE3YzU3NDExMDIyIGxlZ2FjeS10cnVuaworNjA1MzggYzJkY2Y1NGU5MWZkMTg4ZTYxZTA2ZTg3ZWMxYjk2NjI0MTcyN2NiMiBsZWdhY3ktdHJ1bmsKKzYwNTM5IDI0OTY5NDA1ZTFhYWQ3ZjRkZDA4MGI1NjljMzgxOTU4YTc4M2EwYjYgbGVnYWN5LXRydW5rCis2MDU0MCBlNWUwMjg5OGI2YzQyYzExN2FmNjhjODc4OTVjMTRhZjZjM2Q0ZjZkIGxlZ2FjeS10cnVuaworNjA1NDEgMzk0MDkxZmQxZDUzMzU4MDYxNDViZGM3ZTNhZmVlMTY1YjU4MjI1ZCBsZWdhY3ktdHJ1bmsKKzYwNTQyIDIxNTk0YzVhMDYxYTUwZTA1ODA1MjJiMzhhOTRlYmRhYzI3N2M5ZjggbGVnYWN5LXRydW5rCis2MDU0MyBmMmNkZWQwYzFmZDc3YTZiNDVlOWJmNmMyZmI2NDE1YjI2MzEzMGQxIHJlbGVhc2UyNS1tYWludAorNjA1NDQgM2FjNDhjYjM0MDI3MzRjNjI5ZmFlNzc1NjU3YWVkNTE5Y2FlY2RiOCBsZWdhY3ktdHJ1bmsKKzYwNTQ1IDI3Y2E0NzAwYmM2ZGYwZmY3OGI0NTg0YjVhNjI2OThiMjE3ZDEyYjYgcmVsZWFzZTI1LW1haW50Cis2MDU0NiA0MDNhN2VlNWE1M2VjZWI2YTE1OGRlY2ZmMTUxNDlmMDIxMzk5Njg0IGxlZ2FjeS10cnVuaworNjA1NDcgNmM4YzZkZTQ0ZmY3NTg2N2MwMmI1ODIyMzEwYWZlZTFmZjNkOGRiNCByZWxlYXNlMjUtbWFpbnQKKzYwNTQ4IDZlMTM0YWE3Mzg3OTY5NTI2OThiMDcyM2ExMTIzNTlkOWVjNzRhYTQgcmVsZWFzZTI1LW1haW50Cis2MDU0OSBiNjZhYmYwZmQ1OTEyOTZlNTQ2ODY4NTdmNzJlOTIzMDc5MGMxMGE0IGxlZ2FjeS10cnVuaworNjA1NTAgNWJkYzhiNTk5MjIyYmExNGY3ZmJhZGJkY2UzNTQ3NWJlNzEyNTQ4NSBsZWdhY3ktdHJ1bmsKKzYwNTUxIDRhZDA5NTY1NTc5ZDdiY2Y3MjA5YWQ2YmNjZmFlNWVmZTZkNWMxZWQgbGVnYWN5LXRydW5rCis2MDU1MiBiZGNmNDBkMWIzOGViNGY0NzczZmMzZjNjMzQ4NjI1M2EyYzY2MjMyIHB5M2sKKzYwNTUzIDViYzU4N2Y5MDE2NGM1YjA3YWNkZGJjNjY3MWMyYzg4OTE0ZWRkYTcgbGVnYWN5LXRydW5rCis2MDU1NCBlYjk3ZTgzMDJmYTMxMDZjNDg0MzZjY2UwNDVkYTkxZGU4YjVkMTYxIHB5M2sKKzYwNTU1IDRhYTYzODMxMzI5ODBiM2U0MmMxZmQwMWI4NWE4N2RhMzgzZWRjYzkgbGVnYWN5LXRydW5rCis2MDU2MCA0ZjZmNDRiYzUxOTU3ZTMwMmEzMjRhNGYzODVhNzM5ZjM0MWZmZDIyIGxlZ2FjeS10cnVuaworNjA1NjMgNzUwMzlkMzExOGFlZWFkNjVlMzdhMTIzZDI3MjVmYzU2ZjVlMmM5NCBsZWdhY3ktdHJ1bmsKKzYwNTY0IGEzZmU3NDg1ZjVjNTU2YjNmZWVjNWVjYmZjOGM5NjNkYzJmMzE4NjkgbGVnYWN5LXRydW5rCis2MDU2NSAzODUwZDEzYmY5NmI3NTM5YjVlODI4YWNlYWJkZGYyZWM5MjFkNTY4IGxlZ2FjeS10cnVuaworNjA1NjYgZjAzOTU1ZmFmZmI0NzRiNjEwZGExZjU1YTViZGI3ZmI0YjgzN2E1NCBsZWdhY3ktdHJ1bmsKKzYwNTY3IDhmZGQ2ZDYyZWE1NWFiNzRjMmJlOWE2N2U5YzAwYjU3ZGU5YzE2MGUgbGVnYWN5LXRydW5rCis2MDU2OCBjYzMxOWE1ZjUwM2U3NDA2ZTFkZDA5ODU5ZTZkODNlYTBkYzA4OTYwIGxlZ2FjeS10cnVuaworNjA1NjkgM2Q3Yjg0ZGFhMzRhNGQ0Y2JhNTlmNDJmMTc0MzVmNDk2M2ExZjI0YSBweTNrCis2MDU3MCAzYmU0ZmFmZDljYzBkZjM3N2U4ZWY3OTZhMmNmMGRmNzI1NDkwNjU2IGxlZ2FjeS10cnVuaworNjA1NzEgMWJlYjdkMjkzZjU1MmM4MGNiNTVjZDI3YjRiZTBhNDE3NTg5ZDBjMSBweTNrCis2MDU3MiAzOGRlMGU0MWQyNTRkNzQ2OTQwZDhiYmRkMjM5NWQ4YjU4MzBkZDgyIHB5M2sKKzYwNTczIGY2OWRhM2Y1NzIxNzY2ZTFmYjFkZmE2NzI5NjY4YzQ1YWE2YmVhMmEgbGVnYWN5LXRydW5rCis2MDU3NCA5YjY3ZDI1OTVhMjMxYjZmODkyZDc1OTQ5YzY4ZTM4MWQyMDFkOTU3IHB5M2sKKzYwNTc1IDY0M2MxMzk3Zjk1NDBmMDJlYzhiYjQyMWUyZGJkMTUyZTFmNTY1OWEgbGVnYWN5LXRydW5rCis2MDU3NiA5Njg2YzRiNDYyNDNkYTg1YzJlNTNhMDdmNmQ3ZGQ2YTZjOWM2ZGJjIHJlbGVhc2UyNS1tYWludAorNjA1NzcgZTYxMTM1ZjdmOWJiZmFiN2M1YjE2NjAyYjFjNjAzNDgxNjZkODU0YyBweTNrCis2MDU3OCBjYjFlNWMzN2QzZDAyNDBlOGM1OTc1ZmViNjJhYTNkMGEzMzdjOGVmIHB5M2sKKzYwNTc5IDg2NjAyYjYwMzQ2MmM4MTZhODY2MjJiMzFiNGNkYzRhNjFkYTM4MDUgcmVsZWFzZTI1LW1haW50Cis2MDU4MCAxZjg3ZWM5OTFlNTlkZWFmNDVhZTYxNzZiNzUzMjFkZTQ4ZjIwMDVjIHB5M2sKKzYwNTgxIGU4N2JkOGRkZDAxYjBhMDkxMWU5ZDYwZDZhZmQ3MDY1NTFkYTJmMjEgcmVsZWFzZTI1LW1haW50Cis2MDU4MiAwZGZhYTkyYmQ1MzQ4ZGI0OGMxZWExNmIwNjE1NWExOGJhNjEyNWZhIHJlbGVhc2UyNS1tYWludAorNjA1ODMgZTYwNjliMjQwMzFlYWU0YTBlN2E1N2ZhMGRhMDU3YjUyZWEwOTU2NCBweTNrCis2MDU4NCAzZjhmODY0OTNkYWFlODI5NzBiNGI5OTg2NjU4OTRiNGNlMDlmZmU4IGxlZ2FjeS10cnVuaworNjA1ODUgYmRmNzQ4Njg5M2JhYWEyYzcxZjU5NjQ3YTkyYmNiNjA2NzlkNTNhMyBweTNrCis2MDU4NiA2NDYzNDc0NDRmYWE1MmNjMTA1ZGEyNTZhNWM4YTY2OWRmMDE0Y2U0IHB5M2sKKzYwNTg3IDViZGE0Zjc2YWQ5MmM2NzUxYTQzYTQwNDUzYjE2MWE1OWVjNGM5NGYgbGVnYWN5LXRydW5rCis2MDU4OCA5NGQ5ODA5NjYwNTZmZTNlZTkwNTllZTRkMTZlM2E2ZTdmNmM4YTViIGxlZ2FjeS10cnVuaworNjA1ODkgZjJmOTkxNjM0NzgxNDg0YTQzYjNiMGRhNzA2Y2ZjZGI5YTk5MmI5ZCByZWxlYXNlMjUtbWFpbnQKKzYwNTkwIDhkODkwMzdkNWZjMWFjMjBhMTE3NTZlMGQwY2U0MmZhZTU4NGE4NTIgbGVnYWN5LXRydW5rCis2MDU5MSAwNjBmMDM5ZDJmYWI1NDU3NThjMGJjYmY5N2Q1YWEyYTRjOTc2Y2Q4IHB5M2sKKzYwNTkyIGNmYTI4MDQyNGI2NTBmODc5ZWUzMDg3ZGMwNzVlZTcyYzhhYjhkZGIgbGVnYWN5LXRydW5rCis2MDU5MyBiMDExMzY2MTAyZGJhYjc3OWQ3YmM1NzI1YzdiOWJhOWYwNTk0Y2NkIGxlZ2FjeS10cnVuaworNjA1OTQgNGQ1OGMwZmE2ZTM0MzIwN2I1YjE4OTBiYTUwZTQxYjljYWU0OTVmYiByZWxlYXNlMjUtbWFpbnQKKzYwNTk1IGRhYzQyMTdlOTk2NWEwZWE5ZTIzY2E4NjY4OTAyY2NlNzYwMDNlYjYgcmVsZWFzZTI1LW1haW50Cis2MDU5NiBkMmI0OWE2OGU2ZjdiYjBlYWQyNmIyZWQwNzExOWY5OTg4ZTExYzdiIGxlZ2FjeS10cnVuaworNjA1OTcgNWZlNTU3Yzc2MGEyMDBkNjc4NmYwYmRkYzc5N2QyZTNiYmJlMDkwYyBweTNrCis2MDU5OCA2ODc0MzdmN2I3ODQ5MTY5MmZhY2Q3MTBjZjAwZTZlMjczNTAyOTM1IHB5M2sKKzYwNTk5IDFjMmEyNjY4NmU1NDQwMWJkZjFkYzEwM2VjY2NkM2E0OWZkOWNjNzEgbGVnYWN5LXRydW5rCis2MDYwMCA4M2I1ZDZiMmFhNzBmM2NiMzVjZDljZWUzZTBhODEyYTc2ZWM5MmYzIHB5M2sKKzYwNjAxIDAxZDFhNGZmZDViMzVmOTk4MWQ0N2FhZGNjOTdkN2RjMTVhOWVlOTggcHkzaworNjA2MDIgNjg2MzZlYTg5MTUzMTE5MzUwZjVmZjhmYmZmNzlmZGYxZmM3MzdjYyBsZWdhY3ktdHJ1bmsKKzYwNjAzIDhiYzFmZGM2MzM3MGQxNGZiM2QyYWFmMDZkZjM5MmNjOWZjOTI3YTggbGVnYWN5LXRydW5rCis2MDYwNCBmNGMwZTUzYzM1NjFhMzZiOWQ2YTViMTI3NGJmZWNiNzlkZjEwOWY5IGxlZ2FjeS10cnVuaworNjA2MDUgNzdiMzcxYzY5NThjZWRlZGQwNTdkM2VjNjRmMTljYmJmYjJhZGNjNyBsZWdhY3ktdHJ1bmsKKzYwNjA3IDhmZWM1MGEzODU5ZjRkMWRmMmE0YzdlZmYyYjk3ODVmMDg1MzA2MWIgcHkzaworNjA2MDggMTExY2IyYWQ3YWY0OGQ2NTFmMjE0NTdmYmU5NGFjZWJlZmU3Y2VjYiBweTNrCis2MDYwOSAzZWNkNTI2YzM1YzU2NzFlNWQxZDFlY2RiNzJjZTZjMmE3ZjY3ZDJjIHB5M2sKKzYwNjEwIDhlZjNjN2MwMDQ3MDE1OWFmMGJlMDc4MDc3OThkM2EzYzc4MjgxMzEgcHkzaworNjA2MTEgYjY1Zjc5ZTM1YjA4ZWNlNGI4OGJkYmUzM2U4NzY3ZWE4NTNiYWRjNyBweTNrCis2MDYxMiBmZGQ5OTI5MWNjNDU5MTZlOWVjMjNhYWYyNzIzYTIxMTU2NGEyMWVhIHB5M2sKKzYwNjEzIDE2NTNmNWZmM2MwMDE0YWFmODMyOTE2NGJlNDE0MzdiOWM3NTBiOTkgbGVnYWN5LXRydW5rCis2MDYxNCBhNGM4N2M4ODk2NDgzMWQzODNmNzg4NWRjMzgwYTYzMWM2ODQ4NTY4IGxlZ2FjeS10cnVuaworNjA2MTUgNzM3ODI3YjRjNWQ3NWY1MjU5MmI5NzA4M2ZlMmJiNTBjNmRlYzRkNiBweTNrCis2MDYxNiA5MjBhNzYzM2FlMDg5MjI1MWRlYzEyZmM4MjIyZDFjZjRhNzZmZjE2IGxlZ2FjeS10cnVuaworNjA2MTcgMTQyYTExYjMwNTdlOWFmODdmMjYzZGQwNzI2OTg3OTZmN2Y0YjE3YSBweTNrCis2MDYxOCBiODQ3YTk4MjNiMmZmZmFhMjU0NGE2MDM2NjY4Y2Q1NjViNWMzMzg4IGxlZ2FjeS10cnVuaworNjA2MTkgMzNiNzhhYWZiYmIyMjIyYzk5MDE5MGVhYmM4OTRkYWMyNjkxMWVhMSByZWxlYXNlMjUtbWFpbnQKKzYwNjIyIDY1ZmIyMTc1MDk0MjVjOWU3MWU3ZjEyMWI1ZTEwZmFlOTFjMmE3MmMgbGVnYWN5LXRydW5rCis2MDYyMyAwNTcxYmM0YWI2YzI4MjFiYTk4YzI2Y2FmYTU3OWIyOWE4ZjE3MmIzIHB5M2sKKzYwNjI0IDgxOTAwYTkxNDIyYmY3MTIxOGQ0ZGY0MWU5NGQwMzY1NTkwNmY0NjEgcmVsZWFzZTI1LW1haW50Cis2MDYyNiAwZjdjMzE3YmJlN2Y4Y2RjNmZkYThmZjRlNjQ1YjA4OTY3YzM0NTYyIGxlZ2FjeS10cnVuaworNjA2MjcgMGJhMzFjZWE2ZTAzYjJjOTIzNzk4ZTdhODkzYjNhYjc3MTgxYjZlYiBweTNrCis2MDYyOCBkYmUzYTEzM2I3MTgzNDJhYmI5MWFmMmZkOWZmOGZkYjUwNjM0MWQ1IHB5M2sKKzYwNjMwIGY1NWE0ZjExOTE0MTk1YTNmZTgwN2FjNDJhMTE0NTA1ZDdiOTUyYmMgbGVnYWN5LXRydW5rCis2MDYzMSBhMjEyNmVkYjIwN2IxMjg0MGNlMDRjYWUzODU4YTE0Njk3MDUzMjkyIHB5M2sKKzYwNjMyIDM0NjYyNWJhNTkwMzJjYjc0NGM2NTIyYjcxZjdiMGQ2NTI3YzM1NWMgbGVnYWN5LXRydW5rCis2MDYzMyBmZmUyZDBmNTdlZmQ3MWNmY2U2YzU3MTQ5NjAwYjliYTMxZTAzM2RlIHB5M2sKKzYwNjM0IGQzOWUxYTBlMDk2NTQ4MjM1MzUzYTA4YzM1MjhjNDIxMDgzODQzYzggbGVnYWN5LXRydW5rCis2MDYzNSAwNjNkMDIyYWMwMTFiODVlZTg2ZjAwZDIzNDk2M2QwYjI0Y2MxYjFiIHB5M2sKKzYwNjM2IDNmMTI0OTc1ZTA5OTU5NDVkNDY4NGFlM2MwZDZjNGQwYTJiMGYxZGMgbGVnYWN5LXRydW5rCis2MDYzNyAzYmIzYzc0M2YxMDVmNzEwYWE4YzczMzM0MTcyOTBhNTk3ODkzMTA4IGxlZ2FjeS10cnVuaworNjA2MzggOTM4YmE2MjJhY2EwM2NmMmRlNmU0OGQ4Mzc4NjNlZTc3OGZkZWRlZSBsZWdhY3ktdHJ1bmsKKzYwNjM5IDA5NThjYzQ2YjMzZjM0OWZjYzMxZjIwNTBmNjE2Y2Q2YTIzZjZiYjMgbGVnYWN5LXRydW5rCis2MDY0MCA4Y2JiOGFhNDViYTlhOWFkYjVjNjk1OTUxYjhmYWQyODdlNGU0ZmI5IGxlZ2FjeS10cnVuaworNjA2NDEgZmViNmRkMzZkNTNmMzNlOTY2MzAyYTdmYjQxNGY5ZDUwMmNiZjVhYiBsZWdhY3ktdHJ1bmsKKzYwNjQyIGM3M2EyODAyYjczODY2MGQxMmEzOTQxNDIwOGVmOTFmMDUyMTEzYzIgbGVnYWN5LXRydW5rCis2MDY0MyBlODJhYjI0MjNhYWI3MDljNmFjOTdhNjQ4ZjMyNmI4MWJiNmQxMTJjIGxlZ2FjeS10cnVuaworNjA2NDQgNDRlMmQ5ODk5MTE1ZDcyOGE0YTlhMWNmMTg3YTE4MmIyYjc3YjFmYSBsZWdhY3ktdHJ1bmsKKzYwNjQ1IDdkYzlkZWUwOTllODgwZGE3ZjFiOTAxMTgxNTNhMDE3MmVkOTIyNWQgbGVnYWN5LXRydW5rCis2MDY0NiA1YWM2MDVjMGYyN2NhOGQ4NGJhOThlZGQ4NDQ5Zjk2NTgwZjJhMTJmIGxlZ2FjeS10cnVuaworNjA2NDggMjE5ZjdmMjEzNGQ0OGVmOWYwMTViNzUyZmRjM2QyZGNmZGRhMzg4YSBsZWdhY3ktdHJ1bmsKKzYwNjQ5IGRlYjQ4NzNmYTBmMDRjNTdiYWRlZWYyNjYyMmE4ODMwOTUwM2ZmNzEgbGVnYWN5LXRydW5rCis2MDY1MCA3ZmE0NzI1Y2NlODc5ZGFlZGExOTExMGFkYmNiYTkzNWI1Y2RiYjY3IHJlbGVhc2UyNS1tYWludAorNjA2NTEgMmM2M2YxNTIyYmJlNGU3NmVjZDNhOTNmMmU1MWNlYTgwN2FlOGIzNiBsZWdhY3ktdHJ1bmsKKzYwNjUyIGNkZDJlYTA4MGUyMzY1ZGRhZWQ2NjIyN2YwYTcwOThkMTY0ZjVjNDAgcmVsZWFzZTI1LW1haW50Cis2MDY1MyA0ZTMzZmM4MmU3ZjMxODhmNTkxNThhNWEzNTkxNGI5NWFlMmY4YTRhIGxlZ2FjeS10cnVuaworNjA2NTQgNDAzZjcwNWQ1OGM5MmY2YWE0MjVlOTRlOGMxZDFmODViMWFkM2U5NSByZWxlYXNlMjUtbWFpbnQKKzYwNjU1IDM4MWY0YTI5MzNiNTg5NzAxNGExZTg4YmI1ZjkyYjhjNTAwM2U5MjMgbGVnYWN5LXRydW5rCis2MDY1NiA1ZDhmZWNhMzMzMTVkZTk3YjdkM2FkYjE5OWNmM2NkYzIyNDVlMTJjIHB5M2sKKzYwNjU3IDU5YTY0ODViYWMwMjMxZDFjZjYyZWEyNTE5YzMzNmUxYzM2OWNiMGEgbGVnYWN5LXRydW5rCis2MDY2MCA0ZTQzNzIyZmQ1MDNlMTYyN2MxMDY3NDI3YjQxYjUzYjIyZDU4MjJlIGxlZ2FjeS10cnVuaworNjA2NjEgMjYyMjYzNzM3YmNlMmRjZmYyYmFhMzI0ZDNjNjg4YTk5YmM5MDEzZiBsZWdhY3ktdHJ1bmsKKzYwNjYyIDFjMzI2ZGVhNDk0YzJjOWViODcwMGNhOGIzOWM4MGY5N2U0YmY0ODEgbGVnYWN5LXRydW5rCis2MDY2MyBlOTRhZjBjN2FhMTJiYTI4NzJmYjY1M2VmMjQzMWVkNWZjYjkzZjQ2IGxlZ2FjeS10cnVuaworNjA2NjQgNDE2Njk0NWEwY2M0ZmZiNzZiODZiMzgxYWM2NGNkY2MzZjliMDMwZSByZWxlYXNlMjUtbWFpbnQKKzYwNjY1IDA0NjNmODAxZDdkYzUwOTczODUyZDIwMjY3NGUzNjAzNzJlYzQ4NmMgdHJ1bmstbWF0aAorNjA2NjcgNTRkY2Y4MDZkZWQ2M2MxODdkODcwYTM5MmU3MDAwNWU2YTExMDg3OCBsZWdhY3ktdHJ1bmsKKzYwNjY5IDQyNDIyY2YwMjA4YjBhZGVkNmNhZmY2ZDVkNzg2YjAyOTgyMmY1MTUgcHkzaworNjA2NzEgZWNhOTBiOGFhN2ZkYjhlMjk3OWRjMDk0ZjhlNmZkN2FhNDAzNWE5YiBsZWdhY3ktdHJ1bmsKKzYwNjcyIDNmYTdmYjMyOGQ5YWEyOTBiZjc4ODQ3Y2Q1Nzk1OWI1MjZkNzI3ZGEgdHJ1bmstbWF0aAorNjA2NzMgMTk4MGQ3MDU4NjI3MjU3MDczZDIyYzQ4NzA0NDA4NTAwMDQ2ZGU0YyBsZWdhY3ktdHJ1bmsKKzYwNjc0IDgyZDQ0MjgwYzEzNTZlYWQwNTQwNTYxZTFiMjIwZTU5NGEyOWE3MTAgbGVnYWN5LXRydW5rCis2MDY3NSA3N2M1NzkxYjdjMjEwMTc3ODFjNzY2M2I0MjUzOTQyZjY3YmY4ZTNkIGxlZ2FjeS10cnVuaworNjA2NzYgMTViYzhlODMyNDIwN2MyN2UzMTFiZmIyMjY2NDdhNDI5ZWY4YTBlNSBweTNrCis2MDY3NyA2OGQzMWE5MWZkZjMyOTIyOTYzNTVmZGVlZDM1NDM3NmQ4OTcxMDJjIGxlZ2FjeS10cnVuaworNjA2NzggNTk1MGM0OWYyMjVhZGVhNDIxNjAzNTE4NGFkMDk2OWM0ZDJlNjZjOCBweTNrCis2MDY3OSA5N2I0MjBiMmQ4ZDEwZTBjYzUyMjM2OGRlNzk0Mzc2MGZkNmQyM2ZlIGxlZ2FjeS10cnVuaworNjA2ODAgNWJhNWM0YzlhMDE2OTY2MWY3ZDFiZDdiNGU0YTM5MGVjMzA0NTFlOCBweTNrCis2MDY4MSAyYTgyMWUwMDFhMmI0NmQzZGE4MTA0YmY4ZTk3MjkzZmMxMTg0YWNjIHB5M2sKKzYwNjgyIDg1MjdlZDc1NjNkMGI0YmNmMzg5NzhjNWM2OWUzNmNhODU5NmJiOTQgcHkzaworNjA2ODMgMGYzZDU4ZjljZDM1MjZkY2I2ZjJiN2M4MTg0YWZkYjNhNmEwZGViZiBweTNrCis2MDY4NCA2NDU5MzhlMGViNTJiMjUwNmJiYWM3NTlkZGViODc0OThhYzU2MjFhIGxlZ2FjeS10cnVuaworNjA2ODUgMjQ5MDZiNzkyNTQyNDM3ZWYwMGY2YTMxN2FhOWQ5ZDhkMDMyOWY0NyBweTNrCis2MDY4NiBhZWJkOWM0ZDE5ZWRmYzFkNDkxMGY0YzQ1NzdjYTk3ZGNmZDkyZmI2IHB5M2sKKzYwNjg3IDAxNTllNjJiOTdjNTVjNjA0OTdmZjEzNmI0YTQ3MzI5ODFhNDFlZDQgbGVnYWN5LXRydW5rCis2MDY4OSBhODIxNTdmNTM0YTdlMjk5NDU1MDQ5Y2Q0NjJhZWMyMTU0NmNhMmY4IGxlZ2FjeS10cnVuaworNjA2OTAgYTJiZjJhNTk0MDRhOTBlZjYzYTRjOTJiNWVhZmI5MzI5Y2Q5Yzc0ZCBweTNrCis2MDY5MSA0Y2QxZDA0NzRhMTM0ZTVhODAwM2M1ZjI5MzkzZDY2OGQ4MzVlNTM3IGxlZ2FjeS10cnVuaworNjA2OTUgODM4MjFlMGYzOTViNGQ3YzUxZGY1NDEwMTZlNTFjMGQyYjlkYjNkMSBsZWdhY3ktdHJ1bmsKKzYwNjk2IDMyOWM2YjJlMTEwNTE3OTRiYWU4NmNjM2I1MDljMjk1MjI3NzY2MzQgbGVnYWN5LXRydW5rCis2MDY5OCBiYzYyODU0ZWU5YzIxMTQ4OWMzYjhkODVlN2QzMzAxNDc5YjEzYmQzIHB5M2sKKzYwNjk5IDYyNjBkYjIyZmY3NTJmNDVjNDhjMGI4ZTdjMGNmZTRiNmE4MmQyM2EgcHkzaworNjA3MDAgNTg1YWVhOTA0ZjBkYjRkZGE4MjZhNzMxNjMzYTU1NTQxNWQyY2ExOCB0cnVuay1tYXRoCis2MDcwMSA4NzI4ZjgxNmNhNzUyMDNlNDQ5YmVhNTNiOWY4YjA0NGNlOTk2MGI3IGxlZ2FjeS10cnVuaworNjA3MDIgODY4OWI2NzI2NWJmYmYzNmYyNjUxYzc5NDU0MWJjMzYzMjJkMjVjZiBsZWdhY3ktdHJ1bmsKKzYwNzAzIDYxZWJhODMzMmMxNDVlMDI1Y2NlZGMyMGE2ZjRkODEzYTBmNWU5ZjMgbGVnYWN5LXRydW5rCis2MDcwNCA3NDUyODBkNzE0MjU1Y2VjNDcwOTQ3ZmM5YmExOTliZjdkNTdiNzU3IGxlZ2FjeS10cnVuaworNjA3MDcgODY5MDZhNWNlY2E2MzQ4ODI1NjYyYzRkMzlmZjAwYzg3NDU4YjRjMiBsZWdhY3ktdHJ1bmsKKzYwNzA4IDJkNmY2NDBmNzA4MTM5YzgxMGRkNDQwYWQ4ZGU3MTRiZWVjODMyYjUgcHkzaworNjA3MDkgODUzYzczYjAyOWUzZTI5ZTc2ODU1MDI1Y2FlZTEwMzNlYjVmNzQxNSBsZWdhY3ktdHJ1bmsKKzYwNzEwIDdmNGNlZjA0MTg2ZjFjYmJmNWMxMzQwNjI3NTVjZmZkNjBkY2JjYTEgbGVnYWN5LXRydW5rCis2MDcxMiA0YWUwMzk3ZWYxYzVmMTRkOWM0MjdlZWQ1N2I5ZjA2MDE2ZGZjYzY2IGxlZ2FjeS10cnVuaworNjA3MTMgNmViZTg5MzI4YjVlNzNlOTYyMWRlMjFjNzRiN2ZhOWE5ZTU5NjEzZCBsZWdhY3ktdHJ1bmsKKzYwNzE0IDFkYzcxZjA4ZWE3YzdjOGI5ZGYwODA1NDQ2NTI3ZDg2ODJkYTU3YzIgcHkzaworNjA3MTUgZmI1NTFjOTM4YTU5OGU5M2U0MTQyNDI4MzFiNDFkYjAyODFkMTI2ZCBsZWdhY3ktdHJ1bmsKKzYwNzE2IDAxM2U2NmNiMzZjMGZlNWIyYWI0NGRhNzJiOWMwYjkwYzA0NjM0ZGQgbGVnYWN5LXRydW5rCis2MDcxNyBmZDc3ODlhMWJmY2RhMmE2NWRkMzQyNDJjMjlmZTMwZmRhNGRiNThlIGxlZ2FjeS10cnVuaworNjA3MTggZjhlZTA2YTUxYzBiMmYyMDM0ZGVlNjM2MDQ2OTFiZjUyNGJlNGE0YiBsZWdhY3ktdHJ1bmsKKzYwNzE5IGM3ZjlmOWZkY2Y4MjcxYzMxMjExMjUyMzMxOTQ3M2Q3MzJhZDRlZGQgbGVnYWN5LXRydW5rCis2MDcyMCBhOGNhOWUwNjVkOWRlZTE1ZTk1ZDM0MWE3N2U5OWViOGI5ODZkZTE1IHB5M2sKKzYwNzIxIGE1MGMxZmI3ZDkyMGE4MWIxOWFhZDg3ZTBmMDJiMjVkMzI0ZDNlMWUgbGVnYWN5LXRydW5rCis2MDcyMiA5ZjFhMmM5OTI1NWZmNDFjMTEyZjQ3ODVlNjM4ZGEzY2MxYTc4MjUyIGxlZ2FjeS10cnVuaworNjA3MjMgMWRjNWNhMTE0NDhjZDA3MzA4N2M5Zjc2NTIzMWI3NmZhZmRjZWU4ZCBsZWdhY3ktdHJ1bmsKKzYwNzI0IGRjNTBkZWU3ZjhlNTJlMzFmZmQwM2ViZGM2NzcwMTZjYjZkZDY5NDcgdHJ1bmstbWF0aAorNjA3MjUgZTY3MDUwZDYyYWRmYTQ2ZWRhZWFiZjYwZDNiMTlmYzIxMWIwNWY1NiBweTNrCis2MDcyNiAzZTVhNzkwZTBjZDY1ZDllNzhhNThiYzA4Y2JmMzZjOTE4OGYyZWRlIHRydW5rLW1hdGgKKzYwNzI3IGVlZWYzOWE2ZjRkZDk5NWFmNmIzMzBhNzI0NDljZGY5NTY3NWYxYTQgcmVsZWFzZTI1LW1haW50Cis2MDcyOCA0YWZiY2RlMzQzZWRiYzNkMjgxYTk0MmQzODVjMzMxN2E0NDMzYjJjIHJlbGVhc2UyNS1tYWludAorNjA3MjkgNDU2NWM2OTQyMGI4Y2IzNGE5ZjEzOWU0ZTQwMzEzYjRmY2Y0YTZkMiBweTNrCis2MDczMCA3OTA1NTRhZTJiMDRhY2IzMGFkYzcyNjcxMGIwN2I5MWQ3MGRjMGZhIHJlbGVhc2UyNS1tYWludAorNjA3MzEgYzBhYTZkOGY1Y2RiNDIwZTI4OGUyN2M2NjlmODc5MWU2N2QxMWU1NyBsZWdhY3ktdHJ1bmsKKzYwNzMyIGMyZmMzMThjNGZhMzMzZDZlODBiNWM3YjRmODA3NDliOTRhODI1ZDIgcHkzaworNjA3MzMgY2EwODUzNjIyZjFhMWY5YjlhYzE5MWI4ZTIxNGQ4Yjc5MTQ0NGRiZiBsZWdhY3ktdHJ1bmsKKzYwNzM0IGY4NWI2M2Y1NjcwNjA0MThhNzk3YjUzNWNkYmE1YzI5NjFkZDZkYzcgbGVnYWN5LXRydW5rCis2MDczNSA4MDhmODRjNTY2ZjBlZGFkNmFiYjY5NzQ1OWUyNzhjM2ZkZDBlMmFkIGxlZ2FjeS10cnVuaworNjA3MzYgODViNjhkN2Q2ZjQxMWVjY2VjYWIxZmUyNDhjYmM5ZjIzZGFmZWIwYSBweTNrCis2MDczNyBhMzlmYjg5OGJlYjFhZDNkYTNmNjExMTJhY2ZmOTRjN2RlMzlmZTgwIGxlZ2FjeS10cnVuaworNjA3MzggOTJiZDIxZTZhODJjNGQyYzc0ZjViMmNlZTUxMmRiYWQxMWE2OGJiMyBsZWdhY3ktdHJ1bmsKKzYwNzM5IDUwNzYyYjE5NGEwMGFkNmIxNWFhMWQ2NzVkYTFjZWU1NWU2NzBlYTUgbGVnYWN5LXRydW5rCis2MDc0MCBlZWI3MmNmMzdhZWI0Y2I0ODE1NmU0ZDFjYzRmZGZiNGIxMWY1ZmQ5IGxlZ2FjeS10cnVuaworNjA3NDEgNGNhNzA2NjNhNzlkMDlhN2Y1MDhkMGE4ODFiNDA1MjIyZWMzMzM0MCBsZWdhY3ktdHJ1bmsKKzYwNzQyIGYwZThiNTQxZjExMzIxNTg0ZjFlNGY2MjE5NTg0ZWQ5MzVhN2E1MDkgdHJ1bmstbWF0aAorNjA3NDMgMjc1ZWQ4NTkzZWM2MWQxNjBmZjZhZWQyMmQ1OWNiY2UxM2MyZmU2MiBsZWdhY3ktdHJ1bmsKKzYwNzQ0IGJhMTdiMjFhYjkzZTY2NDc4NjlmNmE4ZWU3MDU1NTVhY2U0MjM0NGQgcmVsZWFzZTI1LW1haW50Cis2MDc0NSA3ODlhYTY3ZGNlNmQ4MmIyMWZiZjY3ZWQ1NzM5MDBhZTg3MDcyMDMyIGxlZ2FjeS10cnVuaworNjA3NDYgNWY1YjQ2NDVkOTEzMmI0YmE5OGU2OGVkYmQ0YWI4NmNhN2I2MGM0MyBweTNrCis2MDc0NyA4ZWI4ZTlhMzI2MGQ2ZWU5ZDBiYmQ1YmMwYzYyNmY4MjkzNmFlNTk0IGxlZ2FjeS10cnVuaworNjA3NDggYWU1NWU3MTRkNzQ0ZDJhMDI2NTNhMGQxNjJhODc3NDBmNTAxOTdjNSByZWxlYXNlMjUtbWFpbnQKKzYwNzQ5IGE0N2Y1ZmZjMDgyMzUzN2Y3MjVhNTI4OTdkZTllMmYyOTBhZjJiNmYgbGVnYWN5LXRydW5rCis2MDc1MCAyN2Y4ODU5N2QwMmI4YzExMThlNTA1YjY5MDE1OTkzZmJkZWQzZDYzIHB5M2sKKzYwNzUxIGIxY2I2YjQ0Yjc5ODczMzM3NmRiYTg5Mjk1ODExZTAwNmE2ZmI2MDQgcHkzaworNjA3NTIgZDY3M2QwMDNiNmNhODFlMTRkNzY2ZTY3OGVmNjk5N2IzODIyYzVmMyBsZWdhY3ktdHJ1bmsKKzYwNzUzIDk1YzAwMDI2NTQwMDkwNzA1NzU2MjQxNGMyYWQ1NDllYmRlZDI5YjYgcHkzaworNjA3NTQgZDMxOWY0MGNkMDAwZmI4NGVlNDg3NTc5OGNiYTYxMmIzOTU4NzgxOSBsZWdhY3ktdHJ1bmsKKzYwNzU1IDhmOGFkZWM5M2NmMmNiY2Q2ZGNkMDJjNTk1MzYxZmI0MTQ0MWY2YWUgbGVnYWN5LXRydW5rCis2MDc1NiBmMTIwNTEyMWU4NDhhNjIzM2NkOGRmNDU0ODc3N2MzNmM5ZmU0YzU3IHB5M2sKKzYwNzU4IGNlZWUwOTgxZjE0MWQ0MDIxY2M1NTMyYTc3MTg4Zjk3NzJkMTM4MTEgbGVnYWN5LXRydW5rCis2MDc2MSAxMTRkYzIxNTgzNjlkODc2MDAyZTNkOWVkZDk1YjdlYmJlYjFjNDYwIHB5M2sKKzYwNzYyIGM1MjA1NTg3YjJhYmMwNjdmN2YyODk1YjNlZTAwMmQ0ZTEzZjZkZGMgbGVnYWN5LXRydW5rCis2MDc2MyBhZTllY2VkYjRmOTFjNjM4ZDUxNmI4NTlhOGM1MmQ5ZTQyNzI4M2Q4IHB5M2sKKzYwNzY0IDE4Yzc2YWY0ZjM2NDg4NTQ1NzU2NWMxYWEyNTY1MTY2MzNhMTQ2YzIgcmVsZWFzZTI1LW1haW50Cis2MDc2NSA2ZWI2NDJlMGFkZDgwY2Q1ZjdhODc2NjBkMzg2MmE1NzVlMGFlYjE5IGxlZ2FjeS10cnVuaworNjA3NjYgN2VkZjcyMjViMDVmOGIyYjU3NjE3YmJlYmQ1MTM2ZWE5Nzk0ZjE1NiByZWxlYXNlMjUtbWFpbnQKKzYwNzY3IGJlZWEzNWIwZWQ1MGFkNWExZjU1OTYwY2U1MGIyZDlmODA3MmQ3Y2YgbGVnYWN5LXRydW5rCis2MDc2OCBiMGYzODBhOGI0NDdiNGIzZmZhNGJkNWY1ZDIzNGY3ZTYxMzQzNDI0IGxlZ2FjeS10cnVuaworNjA3NjkgZjkwM2E2NDNhODhiMWI1MWE0NjgzNzM4NGY5NDk3OTRmMTFkN2M4NyBweTNrCis2MDc3MCA1ZjJlYTk2NWY4NTNlY2UxODgwYmUwNDg5ZmYzZjg5OTJjODUwYjNkIHJlbGVhc2UyNS1tYWludAorNjA3NzEgMzBiNTZiZWJkZTU0YWRjOWQ3OGNhOTUzMjBiYWJkYTVhZWMyZDNlOCBsZWdhY3ktdHJ1bmsKKzYwNzcyIDczNzIzMDhlYjYyZjlmNjRkMGQ1YWFjZjU4M2IwMGY4MTFlNzM3OGEgbGVnYWN5LXRydW5rCis2MDc3MyAzMzEyMmZmODM0MDUxNThlYmY2YjhlYzE3YWNhOTdkZmM5ZGEwZWNmIGxlZ2FjeS10cnVuaworNjA3NzQgN2QyZmJiNGU1NzY4NmE0ZmU4YjczN2IyOGVmMTdiODM2YWEzYmFkZCBweTNrCis2MDc3NSA2MDhiZDEwMTRmYmVhNmZjZDNkZjlmMTZjNDFjYjFkMjJiM2MwNWIwIHRydW5rLW1hdGgKKzYwNzc2IDU4NGZjMTVkNDdhYzJhNzBhZGI2YmI4OTU2MTIyODk2MTJiZmRjNzkgcmVsZWFzZTI1LW1haW50Cis2MDc3NyA0NDBlNzE1YmIzZDJlZGFjNjBmMzVjMDk0OGE1MzNmYzNhNWJlMWFkIHRydW5rLW1hdGgKKzYwNzc4IGQ2ZWY5Y2I1NDNhZjVhODE3YmEwNDNjYWJjNTllMTMyNDUyM2IwNzIgcmVsZWFzZTI1LW1haW50Cis2MDc3OSA2ODVjZWUxNDEwZjhlMzQzZjg5MjhkZDk1MTAwM2ViOTVmYTllMGQ1IHJlbGVhc2UyNS1tYWludAorNjA3ODAgZjhmYjI3MTA2ZWNjMDE4NGYyYjZlNTYyYWE5MjdkNmI1ZjU0ZDAzZSByZWxlYXNlMjUtbWFpbnQKKzYwNzgxIDA4M2JmNmUwYWU1MDUxY2I1NWQ2YmQ3NDJjOGQzNGJmYjE3ODA0YTEgcmVsZWFzZTI1LW1haW50Cis2MDc4MiA3NmIyZGU5YzliMGI3ZTUyM2RhNWQzZTk3OWI3MzBkMzRjOTc1OTA5IHJlbGVhc2UyNS1tYWludAorNjA3ODMgMWUwZWUzMjRjNTEzNjY4NDM0Yzg4MjJjZDkyZWJkOGMxZWIwZTY2YiByZWxlYXNlMjUtbWFpbnQKKzYwNzg0IDU2Nzg2YTJkZWVjNDNiODczNmFjNWZlYjQ0ZDFiNzFjY2EzOGQ4NzAgcmVsZWFzZTI1LW1haW50Cis2MDc4NSBjN2U2ODNkNTJiM2IzZTExMjg4ZDIyM2RiNjJkNjZkNjE1OThlNmRiIGxlZ2FjeS10cnVuaworNjA3ODYgNGZjYjcwMDExNWQ4MDNhOWRiMzRjMzhmZTlkZTA4YzExYTU5YjE1ZiBsZWdhY3ktdHJ1bmsKKzYwNzg3IGU3MGY1NmNmNjk3MjJlMjAxNjkyYzUxMDQ3Y2U2ZDdhNmFiYmQ0ODYgcHkzaworNjA3ODggNjgwMTZhMDg4OGI5NjgzNzVjMGFjOWQyMTUzMDY2ODJkMTIxMmQ3MiB0cnVuay1tYXRoCis2MDc4OSAwOTVjYTlmZjBkOGVjYTljMzFjOTU2ODhiYjY3NTg0ZWE1ZmExZTI3IHRydW5rLW1hdGgKKzYwNzkwIGU1MThlMzlmNGE5ZTk1OTE3NmQ1YjBlMTAyYzE1YWY3MTQ5YTZhNzMgbGVnYWN5LXRydW5rCis2MDc5MSBlZjc1NDgxNzNlNjE3MWU5OTU0OTVjZDdiODMwNzkzNTgwMTFmZGUyIGxlZ2FjeS10cnVuaworNjA3OTIgMGRkMDVlZWQ2M2RlOTg2Nzc5Zjk1MjIwNDBlOTZjMGYwN2JiNWU1YSBsZWdhY3ktdHJ1bmsKKzYwNzkzIDhjYmUwYmQ5M2MyOGIwMTMyM2EzODkzMjFiMTI5NTkxMjBlZGVjYTEgcmVsZWFzZTI1LW1haW50Cis2MDc5NCAxOTBkNTUzNzNlNTA1N2QzYzhhNzRhNjRmMmFkNTkyM2ExZTY4MjJiIGxlZ2FjeS10cnVuaworNjA3OTUgNWFkOGFlNGQ3ODRlNmFjYjg2YmQ3ODVjMjA3ZDczM2VjNDZiNDI2MyBsZWdhY3ktdHJ1bmsKKzYwNzk2IGUyMmJjOGI5NjU0NzNmNTgxNzY5M2NkNTljYjkzNjY1NGRjYmFiYjMgcmVsZWFzZTI1LW1haW50Cis2MDc5NyA2NWFlNjhjN2FjYTM4MTYyYmEwNDg4ZTM2ZjhkYTA5OGJjMWNhMjFlIGxlZ2FjeS10cnVuaworNjA3OTggNWMxZGE3YjFiNGE2YjgyOGRiZWIwMDg1ZThjZTVmMTljYzZlMWUxZCBsZWdhY3ktdHJ1bmsKKzYwODAwIDBhOGFhZTU3NWNkZGRiZjNkMTMzZmNiNGVlZDkxMDgwZTNmZTQxZjMgcmVsZWFzZTI1LW1haW50Cis2MDgwMSAxZGMzMjJhZGJiNjc2NDAyZTUyZjUyNjhkNjZlMzRlMTA3NWY4ZTZhIHJlbGVhc2UyNS1tYWludAorNjA4MDIgODllYzQyYjI5ODYzMGU4OGIxYjk2OGI1MzMwN2I5YzA1NDY1MTRlNCBweTNrCis2MDgwMyAxNjdhOWZjODI4NDQ5MWNiNWNlYmUxMjVhMWQ5OWEyYTFjZWZkNDM2IHB5M2sKKzYwODA0IDgzZDJjNzA0NDNmYjcyYjJkNjA3MGVjYTQ0NDQ1MTI2Njg0ZWNmN2EgcHkzaworNjA4MDEgYTAzMzYxNzc5MmQxOWRlYzRiMWRkMGE2NzlkNzU0YTI4MTUyMjMzZSByZWxlYXNlMjUtbWFpbnQKKzYwODA2IGYxOTlkZTM4YWQwMTAxMzc3YWE0MGZhODI3MjIyZDAwOTAxYmVjN2MgcHkzaworNjA4MDEgOTU3MDIwZWQzYWZhZTllZTQ2NzVlMzQ4NWJhNjFjN2MxYmRmZGEzOSByZWxlYXNlMjUtbWFpbnQKKzYwODAxIDcyMWE1OTEwZmJmMGQ5OTBhNGNiMjM1YTg4NjI5OTk5ZTNhZmQwYjAgcmVsZWFzZTI1LW1haW50Cis2MDgwOSAxY2ViMmE2YzYwZWVhZTlkMTU4YjVkNGI2YzQ2NjdjNzNiOWQwMWQzIHB5M2sKKzYwODEwIDJkOWVjYTBiNDZmZDNmMDhiYmJkZGViNDQ0YWZmZmQ4MjBmNmMyZTMgbGVnYWN5LXRydW5rCis2MDgxMSAyMTgzNmUwYjllYjAzMTk3MWQ2ZGFkZmQwMWU5YWZhZWI4MjJjMWY3IGxlZ2FjeS10cnVuaworNjA4MTQgNzQ2YThlMWE3ODVhNTkwNWY4MDNjYmE3MjU5MjE4MzRhOTBkY2M1ZiBsZWdhY3ktdHJ1bmsKKzYwODE2IGUxOGNiMjFmNWY1ZmYwNzRjNGMyYWY0NjM3ZjYwYzkwM2I1NjU2MzYgdHJ1bmstbWF0aAorNjA4MTkgNDFkYzM2ODY4ODkwOGMzZjBkMTM5MjM3MGJjNjU5Yjg4ODE3OWQ2NSB0cnVuay1tYXRoCis2MDgyMiBlZWM2N2FmNGQ3ZGZmMTE1YjhkZGU3MWVmMjUxMTg2OGI0ZmFmNGE4IGxlZ2FjeS10cnVuaworNjA4MjQgMTBiMjYzYTIwMmNhZDM3ODYzZjcxMDczNzE4MDczNDU1YTA3NmE0NiB0cnVuay1tYXRoCis2MDgyNSBjZjVhNWQ3MzJlM2NjYjI5MjhiZjllYjJhYWIwY2VjNzAwNjBjMmY0IHRydW5rLW1hdGgKKzYwODI2IGY0ODM3NGI4YzFjM2Q4ZDM1NjFhMzliMTJmNTRiMmNjOTRlYmMzMDggdHJ1bmstbWF0aAorNjA4MjcgYTIzNTY3M2I5ZjhlYTI0YmE4MTc2MjYwNGEzZDRkMjBmOTRmYWE5ZSBsZWdhY3ktdHJ1bmsKKzYwODI4IDg5MWZiNWMzYmMxODJhMzE3NDVlNmNiOGZiYjFiNjdmNTAyNTRmYWMgdHJ1bmstbWF0aAorNjA4MjkgYjJmM2ZkOWE0YzY1NzE0OGQyMmQ2YWMwZjQ1ZjU3MDc2YjRjMTg1MyB0cnVuay1tYXRoCis2MDgzMCBhOTc2ODliM2U3NDI1ZTdkMzhlMTM5ZTZmYzA5ZmRlNjc3YWM0NDk5IGxlZ2FjeS10cnVuaworNjA4MzEgYjI3ZGUyOWEyMzI3YTYyMDg3NjlmZTFmMmVmY2IwN2VjNzU1OWUwNyB0cnVuay1tYXRoCis2MDgzMiAzMzIyMWFkYzBjMjA2ZTMyZmYxNDFhYTI4NTk5ZTIwNzVkMjU4ZDAwIHRydW5rLW1hdGgKKzYwODMzIDRiNDMyMTQ2MWE5ZjAyODdjYTdiZGMwMGU1NGVhYmMwM2UzMzViOGYgdHJ1bmstbWF0aAorNjA4MzQgYTU3MzkyNWM5MWU0MmVhMGNhN2I3YTFhYTZiNjE4MmE4MDFkYmQ5OSB0cnVuay1tYXRoCis2MDgzNSAzYTU1YzBmZDgyMmZiMzA1YTljOTgxOTM3ZjBiNDQ0ZmNiNGRiZmFlIGxlZ2FjeS10cnVuaworNjA4MzYgN2EzNTViNmIyMWFjOGQ2NGE2YzE1NzNjNDc2NWY5NGI2YzNhYzE4MCB0cnVuay1tYXRoCis2MDgzNyBkZjUxYmFkODY3MTAwNTQ2YWMxNzAyM2NmYjI4YjE1MmE5YjJkNDJhIGxlZ2FjeS10cnVuaworNjA4MzggNDUwNGRmY2MxOTI0ZGQ1ZjMwM2UyMmI1ZDUyZmY2MDk1YTNmMDFjNiByZWxlYXNlMjUtbWFpbnQKKzYwODM5IDNjNGQ1OTNlMTUzODY1YjdjZjZlZGJmMzZjYzY5ODNkZDZiYjQ2MjggcmVsZWFzZTI1LW1haW50Cis2MDg0MCA5MTVmZGFjZjcwMmRhM2FiNGUxYWY1NjliMmM5MWMzOWQ1ZjY4YWRiIGxlZ2FjeS10cnVuaworNjA4NDEgNTU3MjM2ZDc1MmUyZDk3OWVlMmZlMjJjZDliOGYzM2JjMGYyOTZjYSBsZWdhY3ktdHJ1bmsKKzYwODQyIDBlMmFhYTdiOWIxZmM5YmI5ZTVkOWFiYTVkYWJhYmNhMjExNjQzMjggbGVnYWN5LXRydW5rCis2MDg0MyBkOGYxMmJhZTM3OGFkMDdlNTk5MDM1MThlYzgxZGQ3ZTcyNmM2Y2E1IGxlZ2FjeS10cnVuaworNjA4NDQgMTY2ZTNiYTdkZTI0Mzc3NWVkODk1MTg4M2RiNWFlMGNiMTUyMzJhNSBsZWdhY3ktdHJ1bmsKKzYwODQ1IGM0NDc1MmQ5MGZkMmNjZTQwZDliNTZkZDJmNGZiZTE4YTI1ZDU0NzUgbGVnYWN5LXRydW5rCis2MDg1MCA2MmRmMWUzMzk4MzJiNmY2OGY0MjEzZDg0Nzk4OGM0NDJjYWM3MTkzIGxlZ2FjeS10cnVuaworNjA4NTEgNzExMzliNjkyNDM5YmRlZDgxODJiMzg2ZWRkMDEyZDI2NWRiZDFjNiBsZWdhY3ktdHJ1bmsKKzYwODUyIDlhY2ViOTA1NGIzZjlmZjJhNzA5OWQ2MjIyMTBhOTBmNWMxNWY1YzMgdHJ1bmstbWF0aAorNjA4NTMgN2M0YzQ2MzQyMTM3M2I1MmU0ZTc1NzVlZjE2ZjU3OTQwMDI4ZDBiNiBweTNrCis2MDg1NCBkMzc4NTlmMjllNTExYTEyYzQ3Y2NjODEwNTkwMzA4MTY1Yzc3ZjY1IHRydW5rLW1hdGgKKzYwODU1IDhjNjhkYjg2ZmY4N2E0MTNiYmRhZDBkNTY1NWRmZDYyZGQwYjEwYjUgbGVnYWN5LXRydW5rCis2MDg1NiAxYTg5ZTkxMzMzNzM5NTA3ZTI2ZTk2ZGFhYWJlMGM1ODYzMzhiMjA2IHRydW5rLW1hdGgKKzYwODU3IDMxOGNhNmJjODlhM2Q1ZGYzYzZkZjVmYTdkOGZiNTc4ODlkMjg5NWMgdHJ1bmstbWF0aAorNjA4NjAgZjM3OGVkZDIxZGYyNmY2MjI5MzM3ZTEwMDg2YTRkZGM0MzdkMzFmNCBsZWdhY3ktdHJ1bmsKKzYwODYxIGFjMDk1Yjc3NGUxOTNiZjRmODc5YjU2NmIxMjg0YWM4YjZmNWIyNTkgdHJ1bmstbWF0aAorNjA4NzEgMjcwZmNkMmU5NzgyNjhhNDQzMjg2MzQzYjRhZWY2ZmM0MTFmMTdlYiBsZWdhY3ktdHJ1bmsKKzYwODcyIDY1NTA2NTlkYmM5ZGI2NmUwNTk4ZmNmZDJlZWE4Mjc0ODdkM2NlZTYgbGVnYWN5LXRydW5rCis2MDg3MyA2MjEyMzY3MzkwZTMyNGFjNzFiNzE5YTg5NzQ5YmM4ZjhjOGI0M2ZhIGxlZ2FjeS10cnVuaworNjA4NzQgMTg3MmJkNmNmNGI0NWI1OGFkYTllMjk4ZDM5YmMzZmE4ODI5YTUyNiBweTNrCis2MDg3NSAxMmZmMTQ2ZjU5YTcwNzFhZDhkMDg1NzUzNzFlYjdhMWUxYjUyM2Y0IHRydW5rLW1hdGgKKzYwODc2IDkzYjYxNTc0MTA3NDBjODNiNmI4MjE0ODEzZTQwZTA0MWUwYzVmYjkgbGVnYWN5LXRydW5rCis2MDg3NyAwOGNiNWFiZmI1YjZhMjRiMThkZjJmMzI2Y2VjMTQxOTliYmMzNWJiIGxlZ2FjeS10cnVuaworNjA4NzggY2MwMjMyZGUwNjZjMzNkZTY1OTJhNWI1MDczODJhMTE3NzZiNWMwMCBsZWdhY3ktdHJ1bmsKKzYwODc5IGI3MjMxYmY2YmZiNzk1OWUyYzdhZGQ5MjM2ODQzNDE2OTdiODBmYTEgbGVnYWN5LXRydW5rCis2MDg4MCA3YWY5NTU4NDM5Mjk2MjlmNmNmMzlhMDcwY2Q5OGRjNTJiZTM2YjM3IHB5M2sKKzYwODgxIDIxZWIxZTZlZGFmYWYzOWU3MTQzOTBhM2UyYzdjYjdlMzM1MjczMmYgcHkzaworNjA4ODIgOWNjN2E4NjczN2M5NjUyZmYzYTUzMTg2NzIwZWNiMGY0YjllNzA2MyBsZWdhY3ktdHJ1bmsKKzYwODgzIDNkMmZmMDE0NjU3NDkwY2IwZDFiYWQ3NWM1OGI0ZTc1OGUyN2FhZjQgbGVnYWN5LXRydW5rCis2MDg4NCAxYmM5MjNhMTA3ZDk1NmU2OWU4YWNiMTc0MDFhNzZjZDBlMWE4YzYxIGxlZ2FjeS10cnVuaworNjA4ODUgMGU5MmVmNTdjMGQ0YTllZDNmMzI2Y2NlMzAzZjFiMTU0MTI0NDA0MCBsZWdhY3ktdHJ1bmsKKzYwODg2IGQ0YjBmMTI3Y2ZjYjFlOTBiNWEwNWY4YWIzMzAzNzJjOGYzM2JlNjIgdHJ1bmstbWF0aAorNjA4ODcgNTA4NzQxNTA1NGYxOTM3ODZlYmQ5YTNkNjljZDc1N2IzNDE1NWM1ZSBsZWdhY3ktdHJ1bmsKKzYwODkxIDJlZmNkN2Y2MDZmOGNkNTFiMmFkZjNiMjFjYTIzYWJiN2E2YWUxMjAgbGVnYWN5LXRydW5rCis2MDg5MiBiZjZiMjY4ZTc3ZjNjNDJmMGRjODUzNTVhOTM3ZWQ0NTc3ODljNGU3IHJlbGVhc2UyNS1tYWludAorNjA4OTMgM2ZjNTg2MzA3ZDY2OTNjNGQzZTI4YjU0NmVkNzQ2Y2RmZWI3MWZkMCBsZWdhY3ktdHJ1bmsKKzYwODk0IDhlY2U1Y2E0YTc4NWUwNzRkZjEzOWU5NzVmM2RjOTFlMGM3NThjZTAgcHkzaworNjA4OTUgNjA2ZDRjYzVjZGIzMGJiYWQxNmNkMzYxNTc1MjhiMzE4ZjhjYTI2YiBweTNrCis2MDg5NiAyN2JlYWUyMWE4MmM5Njk0M2Q2YWQxZGQ4NGU3ZDdlY2Y3M2EyN2ZiIHJlbGVhc2UyNS1tYWludAorNjA4OTcgYmM3MGU4Yjg5YTFjMDU2YzY0NTQxMTFlZTU5YWMwZTYxMmIwMjhlYiBweTNrCis2MDg5OCBiMGNjN2E2ZGExZTAzMmUyYmQ1MWMyZTEzNDQ3NTM2ZTg5YjViNzg3IHRydW5rLW1hdGgKKzYwODk5IDNlZTc3OTU5ODU3YWYzYWExZjg1YWZiY2E5NDljNGQ2NDFmNmI5NzkgbGVnYWN5LXRydW5rCis2MDkwMCAyOTVmMzdmYzYyMWI5NTNjMTdlYjVmNmI3OTAxOTQ1MDNiYTQ5MjY5IHB5M2sKKzYwOTAxIGY5ZjQ3OWNlNTBkMGJhNGRmMDdlZDNiOTg3YzQxNWVmOTc1NGQ4ZDAgbGVnYWN5LXRydW5rCis2MDkwMiAxNWQ1Nzc2ZjI3MDNjYzA4Nzg4YTVkODU1ZmRlNjYxMDVjYTFiNjE3IHB5M2sKKzYwOTAzIDllMjZjMGIyMzk4N2Y1ZjYzMWMzNDg2Njk2NWM3ZWRiYWVmMjRhOWUgcmVsZWFzZTI1LW1haW50Cis2MDkwNCBjNDc0YzkyN2UwMzYwZmUyMmU4ZWViYjUyYjY2NmY2YjkwYjI2ZDFlIHRydW5rLW1hdGgKKzYwOTA2IDI5YTY2ZTYyMWRiZTNmMmQ3OWMzNTMzNjI4NjAyNjk1MDNjZDg5MjkgcHkzaworNjA5MDcgMmZmNTFjNDEyZTU3N2I1NDVhOWJmZGUzMmEyYTQ2MWQxNzY5YzNmNCBsZWdhY3ktdHJ1bmsKKzYwOTA5IDBlYTIzNmE3MWQ3NzczYzZmMTIyODE5MmFmOTBlZjA0YzgxYjMwM2YgbGVnYWN5LXRydW5rCis2MDkxMCA1ZDcyNmRhMjFkNzU0MzEwNWZiZWZiNDdmOGJhY2M1ZmJjMDMwNTc4IGxlZ2FjeS10cnVuaworNjA5MTEgMDliMTY3YTQwMThiNmRhNjhlMjA4MTJlYmYxYTA1MzU3ZTBiNjIyNCByZWxlYXNlMjUtbWFpbnQKKzYwOTEyIDE1MWU3ZmZjN2U4OTM2OGEwNjBmNWFiMDdkMjQxYjllYTdkY2UyZjMgcmVsZWFzZTI1LW1haW50Cis2MDkxMyBkMTIxOTlkNjAyZDNjYTlhYjNkZjg5ZmQ0MGRiYWRlOTI4MTBmMzg1IHJlbGVhc2UyNS1tYWludAorNjA5MTQgMWQ1MDhiYmJkYjQ5YTJiMTE2MjllZTE4NmE2MzkyODI5MWIwODY5NCByZWxlYXNlMjUtbWFpbnQKKzYwOTE1IDlmNDI4YTVlNjJiMzE0MjdjYzVmYWYwN2I3NzRkMzlkMzQ0NmQ5MGQgcmVsZWFzZTI1LW1haW50Cis2MDkxNSA5NDU1MDE2NWQ2MjY4MjJhMGJkNTFkM2VkMmI2MDNkZjE4YWFlOTRkIHJlbGVhc2UyNS1tYWludAorNjA5MTggODBlY2Y2NzM0N2U5NTQxZjEzNjRhMjQ4OTQ1NGFiYWVmMzljN2MwZCBsZWdhY3ktdHJ1bmsKKzYwOTIwIDFjOTU4ZmU3MThlM2UwODkwMjIzYTA0MDgyOTQ3Nzc0YTEyMmJkNTEgbGliZmZpMy1icmFuY2gKKzYwOTIxIGI1MjY1YWNiZWU3NWNkZmU0OWYyZGE1Nzg3YzE2Y2M0OTQ0MmVhNzggbGVnYWN5LXRydW5rCis2MDkyMiBmNmVlZWEwMTljMWY0Y2U1ZDU3YjlmM2NiZGJkZGRkY2EwYzEzMzA1IGxpYmZmaTMtYnJhbmNoCis2MDkyMyA4YTE4N2Y1NjI5NTk0OTI1YzE1ZjQ0NzE1NDk3MjgyNTY0ZjgwYWI5IGxlZ2FjeS10cnVuaworNjA5MjQgZjgyYmQ5ZWY3ZDc4ODNjNDBjN2E4NDYyNjRkMzhlNzY2ZmYyMjgxNiBsZWdhY3ktdHJ1bmsKKzYwOTI1IDAwYmRkOTZkZGVkYTMxYTMyMzU3M2JiNzg2M2VjNmI0OWU0NDQ5MTkgbGVnYWN5LXRydW5rCis2MDkyNiA5MDQ4Y2U5ZTM3YzhlZmZiMTBiZmRiNzJlNWRjZTAyOWNkYTE0OGQ4IGxpYmZmaTMtYnJhbmNoCis2MDkyNyBmOWUyNTU2MmIyZDFiOTllM2ZhNDUwYTYzN2FlMTdhY2E3MDNkYTdmIGxlZ2FjeS10cnVuaworNjA5MjggZTliYzRmYmRhMTkxMjVkZTczMTY0YTJiMzk1NGU3ZTMyZGM5NTM2MSBsZWdhY3ktdHJ1bmsKKzYwOTI5IDU5NTNmNmZjMDIwNDQ5NTFjMDljOTBhMmJkY2IxYWY5N2YxNjg4ZWMgbGliZmZpMy1icmFuY2gKKzYwOTMwIDMzNzgyY2E5ZjZkY2QzMzMxYjM5NDdmN2RiNzc3M2ExNzc4ZGM3MjkgbGliZmZpMy1icmFuY2gKKzYwOTMxIDE4NGQxYjIyNzVkYzg3NmFiNWU5NWUzZTUyMDk0MjQ0OWVkNTZiZjQgcHkzaworNjA5MzIgN2QyNjIzMGJiNzYzMDJiMjZlZTFlMWNkOWU4OTYxNThkZGQ0ZGZmZiBsZWdhY3ktdHJ1bmsKKzYwOTMzIGVjMGE4NTdlODk2ZGRhYWExYmI5N2E4Nzk0YTU2NjFiOTllNmUwYTMgbGliZmZpMy1icmFuY2gKKzYwOTM0IDdiZTIwZjQ4ZmY2NzBmYTg2MDA4ZWZhNTA1NDU2N2QzNmM2MzBhODcgcHkzaworNjA5MzUgZDg5ZDRkZjk2N2U2MGM5Nzk5MTg4NmE0YTFlY2VjYTZmMDQ2MWVhNSBsaWJmZmkzLWJyYW5jaAorNjA5MzYgMzRhZmU2Y2IwMmExNThjMTc0ZTA1YmQ0Nzg1MjA5ZDVjMmQ3MWIzMyBsZWdhY3ktdHJ1bmsKKzYwOTM3IDkzMDA1M2M5ZGIxZGMzOTY1ZDgwNjUzMmZjYjYwZDY5MGE4YTg2NDEgcmVsZWFzZTI1LW1haW50Cis2MDkzOCBjNTlmZDgyYTU2YjAzMzNlZjYwMDg0Yjg2NGJmYWJlMGUxM2NmNjkyIGxlZ2FjeS10cnVuaworNjA5NDAgZTI4ODdkYzViZGI1YTZhYjgwZGFmOWNlZTRjNGZkYmVhZDQ0ZDQwYSBsaWJmZmkzLWJyYW5jaAorNjA5NDEgYTllMWZkYWY0MTNkOWZmMjZiMjhkZmQ1OTIzNDUwNzFjYzJiOThiZSBweTNrCis2MDk0MiAzY2M1N2ZkODdkMGUwZTk2MDlkOGVjM2M3YTkyMzZmM2JlOTQ2ZmFhIGxlZ2FjeS10cnVuaworNjA5NDMgMDJkNGY5OGE3ZTEzMmVlZWU3YjNkOGRlZTk1YTUwN2YyMjQ1MWNmYSBsaWJmZmkzLWJyYW5jaAorNjA5NDQgM2JiZjk2ZDk2NjM5MTI0NzI0YzJjOGYyNDRkMjdkNGYxOTI4NTNlZiBsaWJmZmkzLWJyYW5jaAorNjA5NDUgNmVhNmM4N2E3NTAxMjdlYWMwYTJiYzQ1YzVhM2E4NTg4ZmJkOGM2YyBsaWJmZmkzLWJyYW5jaAorNjA5NDYgOTJkYjY5ZGM4ZDRiMDY1OTc0MmRkZDI1ZTFkZjZhODk4ZWUzOTNiOCBsaWJmZmkzLWJyYW5jaAorNjA5NDcgOGVlZjU2ZTA5ODZjZjAxMjE1MmE0MWI4NzQ1OTcyYWFlMTY3Yjg2MCBsaWJmZmkzLWJyYW5jaAorNjA5NDggOThjM2Y5YTFkMzY2MzAwZjVjODQ1YmZlYzhmZTcyYjA0N2JhNjQzNCBsaWJmZmkzLWJyYW5jaAorNjA5NDkgODVjNjMwMzZjYTAxOTEyNWQxYjRiOGUwODI4YzdlMjBjMjUzNDc1ZCBsaWJmZmkzLWJyYW5jaAorNjA5NTAgZjBmOGIyMDAxNTE1ZTA1ZDkzNTljYTM4MGVlNmFjN2NhYTYxODdmYiBsaWJmZmkzLWJyYW5jaAorNjA5NTEgYTdmMzUwYjNlZDI0OTA2M2MzNmJmODAzMDdhZjFiY2QxYTJjYTYwYiBsaWJmZmkzLWJyYW5jaAorNjA5NTIgMWI0Y2ZhMDA2YmUxNTkwOTEwYzM3ZTI2ZWYwNDEzYTcwMTIyODNlYyBsaWJmZmkzLWJyYW5jaAorNjA5NTMgMzczMDllMzNjNDJjNDUyZGFmNjBmNDJmMzVmZTZhZDBiZGZiZThmZSByZWxlYXNlMjUtbWFpbnQKKzYwOTUzIDQ1NDY2ODEzZGVmNzdjYjJiYmY1NTQ4NWUwNzYyNGIxYzVmNzhlMGYgcmVsZWFzZTI1LW1haW50Cis2MDk1NSBiODg3ZGJhMmI1ZTFjMTQyODEwM2QyNTIzNzIzMjNjZWQwYjMzMzNhIGxlZ2FjeS10cnVuaworNjA5NTYgODUzYWY1YmJiNDk3YjIzMDM3MTY1ZjU1NDk1OWFhZWQ0NzJiNjI2OSBsZWdhY3ktdHJ1bmsKKzYwOTU3IGJjOWZkODRhZmRlY2NlYjNjOTZhY2UyOGI2N2FiNjJhMTc0NDQyM2YgbGVnYWN5LXRydW5rCis2MDk1OCBhYjM4ZDc3MWY1NmRhOTk2YWRmNDUzZTFjZjVlYWVjZjQwMzRmZWJiIGxlZ2FjeS10cnVuaworNjA5NTkgZDQ2NjI3NzMwYTJhMzAzZWVhOWYwZmRmZWZhYzdjNjhiZGU0YTdmOCBweTNrCis2MDk2MCA0MjdiNTRjN2VlMjUyZDY0NDYyNWFjMjhjNDBmZTZlNTY5Y2IzNjkzIGxpYmZmaTMtYnJhbmNoCis2MDk2MSA2ZDZhMjkzZmJhZjNiNTEwOGQ1ZjhkYzA3ZjNkZWRhNjgzYmUyN2I0IGxpYmZmaTMtYnJhbmNoCis2MDk2MiA0YTk1MjJmZDc1YTZlMmFiNTc2NWFjNmI4MjJkYWUyYzY5NjAxNTkzIGxlZ2FjeS10cnVuaworNjA5NjMgMDkxYjI3ODc2YTFiODY0ZTFmOTA0MDQ4MGIyOTBmMzYwZTNlZDI0MCBweTNrCis2MDk2NCA0MmIzYjExNzM5MWRjYjUyY2I2YmQxMDJiYmNlNGRiZGIwNzdlYWZjIHB5M2sKKzYwOTY1IDY3YTlkMzM4NTg1MTM4MGUwZGU5M2I3MzE4NTM0OWYyMDk0MTU4YzEgbGVnYWN5LXRydW5rCis2MDk2NiA3YzUxZTFkMTRjOGM1OWQ5YzYwNTZlYTAwMTNkMTgyYWM1ODY2NTIxIGxpYmZmaTMtYnJhbmNoCis2MDk2NyA2YTZjYTVlNTc5ZjY2ZTNlNzQwMDMxYzA2OTk3NWRkNGM5MDI0MTI1IGxpYmZmaTMtYnJhbmNoCis2MDk2OCAwNzllMjFmNTkzMTkzYWQ3ODNkZTViMTUwYmIzMjM0MTJmYTc5N2UzIGxlZ2FjeS10cnVuaworNjA5NjkgMTFhNzNmYmJmODZmMmRmMzk4MDU3OGJkNjQyNDM2ZmIzNTVhNDMwZSBsZWdhY3ktdHJ1bmsKKzYwOTcwIDhlYjU5ODMzMTIzMTU3MDg1YThiMzBhMjE0NGZkZGViNzdlMzBjNDYgbGVnYWN5LXRydW5rCis2MDk3MSAxYzcyYTczODIxMzM2YjFkNmQzM2ZhZGE0YWYwM2FkMWJlZTk0MGI0IHB5M2sKKzYwOTcyIDE0N2I0OGIzYmMyMzRlNjgwNjlmNWIzZWMxZTQ3YmFjM2M1YmVlNWUgbGVnYWN5LXRydW5rCis2MDk3MyA5MDAzNDdmNzAyNTg0YmI2MjczNTE2MTRjY2UyYmZlNjBiOWE2ZTI3IGxlZ2FjeS10cnVuaworNjA5NzQgY2E1ZjJmOTYwNjE3NGMzNjUxOTM2NDIxOWQxZmFkMDY1NThlNzVhMSBsZWdhY3ktdHJ1bmsKKzYwOTc1IDk2YTM0ZWVmODlhM2QxZGJmZTI0NTE0NTE4OGI4MDgwYWI5Y2M3N2UgbGVnYWN5LXRydW5rCis2MDk3NiBkZGE5MmEwOTdlOGM2ZjZkMjI2MGJmZWRlMjNkNWM0NTYyMDFkZGM5IGxlZ2FjeS10cnVuaworNjA5NzcgNWUwNzcyZWQyMGQxZDY4YTk1NjUwMjE1MmM2MGFiOTMyZmRkNDlkYSBweTNrCis2MDk3OCAzOTM4MjJmMmVmOTAxYzM2NTVkODRiMmJmODQwNWUzZWFiNGM4NWViIGxlZ2FjeS10cnVuaworNjA5NzkgZjFiNTBhYTVkNWFmNDgzYWEyNjNhYTk3ZGNhMWE5M2NlNzEzZWNlOCBweTNrCis2MDk4MCA3MzRmYzBhMTk2NTdkNWYwZjJhODRiYWQ5MTViMDUzMTY2Njk0ZTJiIGxlZ2FjeS10cnVuaworNjA5ODEgN2E4ZGUyYTdiMWE1NmJkZjIyMmZlNmYxNDY2MDczYTFlYjE0ZWU3YiBweTNrCis2MDk4MiA4Zjk5NGQ2OTc3NDc1NTBkMTI2YTVlZWYyYmE4N2I5YzY0MzFkODA3IGxlZ2FjeS10cnVuaworNjA5ODMgMzY1N2MyN2VhMmZkMmI5YTU3NDczZmVkNTkyNzNmNjJjYjM3OTZmMSBsZWdhY3ktdHJ1bmsKKzYwOTg0IDkzMGIyODAyYzAzN2I5MzU1NDllM2EzN2YwODA3MjI1ZjFiNjc5YjIgbGVnYWN5LXRydW5rCis2MDk4NSBkN2UyMzJlOWYxYTFlZTE1YzJiM2Y4NTkyZjdiN2M1MTI0OTZmYzI3IGxlZ2FjeS10cnVuaworNjA5ODcgMWIxOWE1NzE0NWE1YjJmNWE2NmY2YzM4NWU0YTQ3OGEwNzMwZjJmZSBsZWdhY3ktdHJ1bmsKKzYwOTg4IDk3NzEzOTU2YzFiMGRmM2FlZDc4OGFlMjE0ZThlODNjYzRiMDFhMjMgbGVnYWN5LXRydW5rCis2MDk4OSBiYTM1OWI2YzMzYzM4MTU2NDFlYTkxYjAyNzk2ZDVjZDU1MmQ3MDk5IGxlZ2FjeS10cnVuaworNjA5OTAgOWYwMzc4ODc2M2UwOWEwOTAxMzcwYzcyNWEzYjM1NzEwZjc0NWViNCBsZWdhY3ktdHJ1bmsKKzYwOTkxIDFjYzQ3ZTEyOWZmNDdmNGVhNmQ0ZDY0ZjJiZDU4MGJmZTY0YzhkZTggbGVnYWN5LXRydW5rCis2MDk5MiA1OGMzZjM0Mzk2NzA4YWRmMzQxN2NkZjZkYmQyZjc1NTg5NmI1ZWQ0IHB5M2sKKzYwOTkzIDJjNWQ5MTZiZDExYzlhOWUxMTQ2NWNiOTViN2RkMGMwMGM3M2M4MzIgcHkzaworNjA5OTQgNDI5ODVlYmJmYzQ1MzA5YjY5NDA0ZjQzMmUyY2FhZDgyOTc0ODk4NyBsZWdhY3ktdHJ1bmsKKzYwOTk1IGU4NGFkMmEyNThhNDY5NDk0MmY5MTQ3MWQ4Y2JiZmE0MTNkZWMwMjEgbGVnYWN5LXRydW5rCis2MDk5NiA5NzRjZmYzZTAwMjE2MjFhZTRhYjQ4Y2YwZWE3OWU5MGVjZmZmNmNmIHJlbGVhc2UyNS1tYWludAorNjA5OTcgMTMwZmJmYjE2MDM2YWY0Njg4MDEyZDZiZjViODk4YTQxNGY2MjBlMSByZWxlYXNlMjUtbWFpbnQKKzYwOTk4IDc0OGFmMGI4MzY3NGNjMWMxZmUwZmM1ZWZjOWQ5NWU5ZDFjNmI2ZDIgcmVsZWFzZTI1LW1haW50Cis2MDk5OSBlYzdmMDg3M2I2NjRkZjQ2MzZlZDMxYjdiZWRlMGUwMzFhMDA2NDhlIHJlbGVhc2UyNS1tYWludAorNjEwMDAgMWQ4NGJmNWY5NDc4NmE4NDZjMDgwMjhmOTliNmMzYjgyN2FjZjQ2MyBsZWdhY3ktdHJ1bmsKKzYxMDAxIDQ3YTU4Y2EzZTEwZWI3MDI3ZDBjYzk5NGUzYjFhZGQ2NTdmYjk0YmUgbGVnYWN5LXRydW5rCis2MTAwMiAzOTE1ZDVmNjUwZmE5ZGUwN2FiYjcxZDI2MTJjODYxYzEyYTZlNDZmIGxlZ2FjeS10cnVuaworNjEwMDMgN2RkMmMxNzQ2MjY3ZDJlY2UxNzkyODE1MzVhYjBmZWFhOWFkNjQyMCBweTNrCis2MTAwNCA2YmE1MzA4ZjdiYTQxNjViOGZlMjBkOTllZTliYjUzZTMwMjI2MjMwIGxlZ2FjeS10cnVuaworNjEwMDYgZWVjNGMxZTllOWNjODhmZWQ2MTIzOGNjZjRlM2ZlYjE2YWViNTY3MSBsZWdhY3ktdHJ1bmsKKzYxMDA3IDZhMTNmZWNhZjJkZmIyNmM0YjEwMDY1MTQwZWMxMDhiNGMwNzc2NzAgcmVsZWFzZTI1LW1haW50Cis2MTAwOCA0ZWI1YTY2N2M4ODJiNWE0ZTI3NDE4MDhlN2Y2YzA0MGY2ZjViYTY0IGxlZ2FjeS10cnVuaworNjEwMDkgODBlMGEyOTMwYzZkNTk4NWU1NDg0N2YyYWM0YjczMmUwZTQxYTM2MiByZWxlYXNlMjUtbWFpbnQKKzYxMDExIDI0MWNmODFhMDUwODc5N2ZjYzVkOWI1YjAxYWNjYzQ3ODhhYjM1M2EgbGVnYWN5LXRydW5rCis2MTAxMyA5ZjE4M2FlMzQ1OGJmYjhhOTMxNzNjM2Y0MjY3N2Y3OWM0ZDk2MmYyIGxlZ2FjeS10cnVuaworNjEwMTYgNDBkMjY5ZDZkYTljNTgzMDdjM2FhNDc3YTUyNDA4OTZhNzk1ZWQyMyByZWxlYXNlMjUtbWFpbnQKKzYxMDE3IGEwMTIxM2E1NDI1ZDFjNDA1MWVjYTJlZDc4OWRkNjQ0YjUzMjgzM2EgbGVnYWN5LXRydW5rCis2MTAxOCA2NjkzMDQzZDI3ZmQzMjk3Y2E5ZmQ5MWU5YzNmZThiNjJmN2ZmMzYxIGxlZ2FjeS10cnVuaworNjEwMTkgODEwYmQ2NzczODYzNmVjODU5YzZmNTAyOTMxN2Q2NzlmMTBiMDRmOSBsZWdhY3ktdHJ1bmsKKzYxMDIwIDE5ZDg1Mjk0MmRkZGQyMmMxMDlmYzY4NmY0OGQyZGIyMWFlNWVhY2YgbGVnYWN5LXRydW5rCis2MTAyMSA4NTMxZjg4YjU3OGUyMGE0Mjk3NmUzMzU2YWUxZWJmYjA3MDQ3OGRmIGxlZ2FjeS10cnVuaworNjEwMjQgMzA1NzhlMDRkMzVjZGMwYzg2MTVhODc3N2JmNjE0YzZiYjBjNThkMiBsZWdhY3ktdHJ1bmsKKzYxMDI1IDI3YmFiMzk4OWY2MzUzY2Q3MmIzZDdmM2UwMzJjMDg5NDM0Njk4ODcgbGVnYWN5LXRydW5rCis2MTAyNyA4MTNjMTQ2ODU4Zjc4ZTEyOGIxMTQxZjgxYjY0NTgwYzE2MjNlYjFlIGxlZ2FjeS10cnVuaworNjEwMjggYzEyNmJkOWI1MDViZjg2YjgxZWFiZTQ3OWNlZjZjYjIxMDdkMmJhZSBsZWdhY3ktdHJ1bmsKKzYxMDI5IDZhOTkyYjY2ODBiMWI3NjQ1NWNlMGUyMTEzY2U0MDM5YmQ4YTc0ZGIgbGVnYWN5LXRydW5rCis2MTAzMCAxYjBlYjc2ZWY3MmFiZDkwODJhMDk1MTRlODc5MTg3ZmNhYTg1Y2EwIHJlbGVhc2UyNS1tYWludAorNjEwMzIgOWIxMTVjNWU5MTE1MmIwNzIzZmZkZTk1YjliNTgxMmIxOGMwMmJhNSBsZWdhY3ktdHJ1bmsKKzYxMDMzIDk3YTE5NzJiNjcyZTdiNWI1MzVhYjAzZmVmODgyZjFmMWY4Mzc2NmQgbGVnYWN5LXRydW5rCis2MTAzNCAyMWE1ZTlhNTQ4M2E1MjI0MGI1MWI2MmJkZjkxYjU2NDEyZjM1YWMwIGxlZ2FjeS10cnVuaworNjEwMzUgN2VmYTRkMWJjZWQzOGMzMGM1Nzk5ZDU3MTI2ZmM0ZWJmNTgzMmFlNiBsZWdhY3ktdHJ1bmsKKzYxMDM2IDQ4NDg4ZmE1MDcyOWU0ZjBiYTAwNWE1ZTJiMzM2MDAzNzk2ODAyOGMgcHkzaworNjEwMzcgMDAyYTVhYzc5MmIxZTZhN2Y5OTY3Y2ExMDIzNGY4MmQ2MmQ5ZDY3NyBsZWdhY3ktdHJ1bmsKKzYxMDM4IGVhYThjMTkzOTEwOGUwMWQxNGRmZTAwMjdhZTViZjBkM2UzZmE3OTAgcHkzaworNjEwMzkgOGM3YmEwZWQ4NDQzYjUxMzcyZjljNzliZTlkM2Q1MmVkZDBkYTk2NiBsZWdhY3ktdHJ1bmsKKzYxMDQwIDE4ZmVkMTRiMDZiNjA2NjRmYzJmZDIwZmMzMTVhYmU2OWI0ZmFhNzcgbGVnYWN5LXRydW5rCis2MTA0MSBjMDNhZmY2ZDA3ZjUzYjEwNmM2MmM2Mjk1ZjkwY2U1YjU2YmUxODM3IGxlZ2FjeS10cnVuaworNjEwNDYgZDg5ZmUxZDJmYWRkODJhMGNjODM2MTI4YzFhOTAzNGQ0MGM5ODg0YiBsZWdhY3ktdHJ1bmsKKzYxMDQ4IGFkZTdhYzg4ZDJkMDllMjBlNjIxYjYyMTE5ZDhhNzFkMDZkNThlNTEgbGVnYWN5LXRydW5rCis2MTA0OSBhZjkyOGZmMGM1YzY5ZDFjNTgzYTFkNjllODMxNGMwYjhmN2Q0NTdiIGxlZ2FjeS10cnVuaworNjEwNTAgMWI2ZmI1Njk5NjM0NTc4NDBhZTk3ODM3ZjAzM2FjNDFhZDE4MDJjNyBweTNrCis2MTA1MSBiZjhlZTU5M2NiYWQwM2M3MjRlNWU0OTZhMGRlZGRmN2RjMzE1Yjc3IGxlZ2FjeS10cnVuaworNjEwNTIgNTVlZWZiNDNlZjZmM2FkMWEwMTE3N2VkYWQwMmMzMTY1NmY0NTc3NSBsZWdhY3ktdHJ1bmsKKzYxMDU0IGE3N2UxY2Y3ZWQyNTI2MmE5Y2YzNTM0N2ZkODZjMzAyNzM4Y2Q0NjAgbGVnYWN5LXRydW5rCis2MTA1NSBiMGZkZTkzNjYxY2U4NzUxZWRmYzZiYjM5Y2NmYzNhNGI1ZmQ3OGY2IHB5M2sKKzYxMDU2IDA5YzljZWVjZGQ1NmQwNGJmMjM3MTkxY2QxNDg2ZDQ3NmQ2OGMzYWIgcHkzaworNjEwNTcgNzEyOTM3MmY1MzNmNDFiMzc0MTUyNmFmODI2NDk5NWE4Yzg5NTRlOCBsZWdhY3ktdHJ1bmsKKzYxMDU4IGRjNWIwMTA3Mjk0YzBkYzRmN2Q2ODk1M2ZlNTI3MTExMDFkNWFjODkgbGVnYWN5LXRydW5rCis2MTA1OSBlNTdmZmEyYjVkMDdmMDEyNWQ2Yzc4OWY0YjUxNGRmOTU4ZmJmNmVhIGxlZ2FjeS10cnVuaworNjEwNjAgYjI5OGNiNDk3NWQyZGZkYzAxMGViZGVhMDhjN2MzZThmMGVjMjZhNCBsZWdhY3ktdHJ1bmsKKzYxMDYxIGZjZTVhZjVjZTE2YTZkNzBmMDEwNjU1OTlhZDNjYjZiYTgyMzQ1MWYgcHkzaworNjEwNjIgOGI1MmZmNDFlMGUyNzk2MzMwZGI0ZTZjM2RlMmJhODc5MGI0OTdlZCBweTNrCis2MTA2MyBmODhiZWJlZWI2NzNlOTg2MDg0ODBlZjE5Mjk2Yzc3MWZmNDM1ZDA2IGxlZ2FjeS10cnVuaworNjEwNjQgM2E2Y2E4OWVmNzZkNDc0MjVhZGQzZDQ5NTFkNGM5OTIzYWZhMTY2ZCBsZWdhY3ktdHJ1bmsKKzYxMDY1IDE3YzhlYzg4OWZmNDJiMGNmMjQyMWI1NWU1NTcxZjU5ZDJhMzc4YjMgbGVnYWN5LXRydW5rCis2MTA2NiBjNWU3N2UwZjJmMzJmZmFmNDJjNzVhNzRkZGNhMWU3NGYzZTAxMTcyIHB5M2sKKzYxMDY3IDE0NGU4NDY3MmVmOTM2ZDk3MDgwMTVmZDcyNTIzNDMzMmFhY2RmZTAgbGVnYWN5LXRydW5rCis2MTA2OSA0Mjg5YzQxMDQyNzkwMzZlZmI4NjJkMjI0OTIwODBjNjgzZGFmNDJmIGxlZ2FjeS10cnVuaworNjEwNzEgZjZkYzA4YWQ1NjRiMWM2OTZlNjdhM2ZiNDIzMGMzOWI2Yjg3Y2M5YyBsZWdhY3ktdHJ1bmsKKzYxMDcyIDRmNjM5YWY1OGExOTBjMDk4YjY2NWEzN2IxZGUwNWJiNDZkODkwZjMgbGVnYWN5LXRydW5rCis2MTA3MyBlODFlNDVmODAwMmU4YzA5YTNjZjEwNzEyNzZjYTA3NjJlMDM3N2Y0IGxlZ2FjeS10cnVuaworNjEwNzQgNDVmYzNlY2IzMDIzZWQ4MGM5NzU5MDE4YjJiOTJlZmU3YTEwMWQzZCBsZWdhY3ktdHJ1bmsKKzYxMDc1IDliMzgxZWQxZGIxNDMzMmU0MTRmOTc5NDIyNmIyMjU0YjY2YWE0ZjAgbGVnYWN5LXRydW5rCis2MTA3NiA2MjRhZTg3ZjFjOTYxZmQ5MWY1YTE1NWZiYTY4OWMzZDY0ZWZkMTI1IGxlZ2FjeS10cnVuaworNjEwNzcgMDg4ZGZjMGY3MWI0OTgwY2I4ZTI5NTMwNjVhMGVhNDc3Zjg5ODlkMCBsZWdhY3ktdHJ1bmsKKzYxMDc4IDRhZTQzMzE0Yjc0NjI4ZjlmOWNiZWM3MzdhN2VmOTQxNjY2YjMwYzQgbGVnYWN5LXRydW5rCis2MTA3OSBiZjFhYjNiZjc5OWM4NjM2ODM4OGMyOWE4Y2IxMmY0Yjc4ZGQ2OTQ2IGxlZ2FjeS10cnVuaworNjEwODAgY2FjZDdiYTExYjc3NThjMTg5Mjk2MDJmZjJlMGNmYjZiY2YzY2YzNyBsZWdhY3ktdHJ1bmsKKzYxMDgxIDJiMzY3MjUwYjBjZDMzNTkxN2IzMjAyNTRlZTk4ODUzNjM0YWNiZTMgbGVnYWN5LXRydW5rCis2MTA4MiBmZTczOTRiYzc5ZDYzZTIzNTIzOThmMTI0MDk0MDQ0MjE5OTZhYWZhIGxlZ2FjeS10cnVuaworNjEwODMgN2FmZWY4ZjQzZTRhNTJlMDgwMThkNmM5Y2MwMTQyMjg4MDM3MTAxNSBweTNrCis2MTA4NCBjNTdjYjJmOGMzNTA1MmM1NDY0NjI4ODBjNmE3OTMwZTVhMjI5OTExIGxlZ2FjeS10cnVuaworNjEwODUgZDEzMjNmY2YzYWExNzk1M2RjMDI0YzY1MmZiMjBiNmU3YzA5NDBkNCBweTNrCis2MTA4NiBmMzNmNjZhMjA4MmZiZjMyNmZmNzRlNjJmNGJmMjQ0ZTAwMTczMDk4IGxlZ2FjeS10cnVuaworNjEwODcgZmZkZDMxZjFjZDIwOTRkMjZiOGIwYzBhYjRmODZiNTUwOWU2NzM5MSBsZWdhY3ktdHJ1bmsKKzYxMDg4IGNhNDVlYjcxZjJkMmJhMzFlY2QyYWZiMmIyZmY1ZGViYmYxMzVlMGMgbGVnYWN5LXRydW5rCis2MTA4OSBlNDI1ZGRhNGY2MzAwNjBkZjZhZTgyYWFmZTk1MTYwMmQxNTMyNmMxIGxlZ2FjeS10cnVuaworNjEwOTAgZjJmMzNkYjU4OTIwMGJlYzNiZDNiNzk2OTI4MDkwNTRjN2UxMjkyZiBsZWdhY3ktdHJ1bmsKKzYxMDkxIDdkNzM0N2RkOTRlODc3ZDc2OTlkNjdkZTdjOTJlNWZkMmU2ZjRmYWIgbGVnYWN5LXRydW5rCis2MTA5MyBmNzg4NDE2NGYwODg5YmViNjEyMGMxZTI2NjZmYjUzYTY3ZTQ0NjdiIGxpYmZmaTMtYnJhbmNoCis2MTA5NCAyYzkzMTgzYjhhM2MyNjk0NDZjNTM0ZjA1YWJjMjk5NDk0NWU5MDJiIGxpYmZmaTMtYnJhbmNoCis2MTA5NSA2YzQ2MTIyNTVmNjA1MmMyYWFhNDljODE3ZDJhNzg2MDAyZjdjNjYwIGxpYmZmaTMtYnJhbmNoCis2MTA5NiBiNzhjM2E0MzcxZDUxMTEwYTM3NTQ2OGQ3MDRlNjBkMmI1MTY0OGUwIGxpYmZmaTMtYnJhbmNoCis2MTA5NyBkMTc2OTBjNTA3NjY2ODM4YzZjYjlmN2IzYTNjNjQyODA1MGE5YTIwIGxpYmZmaTMtYnJhbmNoCis2MTA5OCA2NTkyZTVhOTBjMmNkODRmMjEwZmQ5ZjY2ZGEyYTc0OGY0ODRiNTFlIGxlZ2FjeS10cnVuaworNjEwOTkgOGFhZjE0OTVkYTM5NTljZDg0NGNiNWE2ZGQxNmYzZTI5YTM2MzAxNCBsZWdhY3ktdHJ1bmsKKzYxMTAwIDNlNDM1YTIxMTM1Njk2OGQ3ZTQwZWIyMzFiOWU2YjVhNWViMTMzYTMgbGVnYWN5LXRydW5rCis2MTEwMSBkNDQzNGYwM2I5NzAyMmIyNzVmMDQ1NmJhMDM2NjJhZjAzYWU4NGRiIGxlZ2FjeS10cnVuaworNjExMDIgOTZkNWExNTczMTZlMzUxODA5Mjc3ZDgzZTQ2MjkzZmQ0ZTc4YjU4ZSBsZWdhY3ktdHJ1bmsKKzYxMTAzIDhjM2M1YjRlZWY1NTU3MTkzOTg1NmIzMzE3YTIwNjI1MTFiNjgxOWQgcHkzaworNjExMDQgOGRkMzBmZTExYTRiMzRkMTA3N2JlODA4ZjJlMGYxNGFkYjg0MzQ0YiBweTNrCis2MTEwNSAxMTg4ZWRlMTU3MzViOWI4Njk5MTBjYzQ2Zjg3ZDU3YzE5N2VjNmY1IGxlZ2FjeS10cnVuaworNjExMDYgY2MyMjA3NDVlNGU1OTNlNmMzNmI2ZjZkZjJmNzRhNTQwY2Q4MmUzZSBsZWdhY3ktdHJ1bmsKKzYxMTA3IDUwNGI0MzU3YmRkZDM4ZTczYTNjZWVhNjI2ZDI5OTAzMDA0MTJlMzMgbGVnYWN5LXRydW5rCis2MTEwOCAyZDJiMGUxNTVmMTk4ZmJjNmY2MDdmMWM4MjkzYjhlOGE2MDk4NTY3IGxlZ2FjeS10cnVuaworNjExMDkgYmYzZmEzN2ZlNzljZDAzOGMyZWQzZmI2NDJjYjU2NDQ2Y2M3OTQ5OSBsZWdhY3ktdHJ1bmsKKzYxMTEwIDBjYjQ4MTk1NjQ1MmZjNWY1YzEwMWVlM2YyNDA4Yzk5NjU1YWFhOGQgcHkzaworNjExMTEgMjQyNTQ0MzBlODlhMGM4ZTA1ZDc1ZDk4ZjgwZDZiZTMyNmJhNmU2NiB0cnVuay1tYXRoCis2MTExMiAwMTI4Y2U3NzM1NGY2MDUyNmRiOGRjODdlZTUwNzY5MzRiM2JhNGMyIHB5M2sKKzYxMTEzIDcxMGQ1MjViMDU0YzgxZWIyY2U3YjYyZWFjNDlhMjE2ZjRkZjA4OGYgbGVnYWN5LXRydW5rCis2MTExNCBjMzhkY2I3ZDk0YTZkYTliZGZjYWI4ZjQ3Zjk0M2U1MzcyOGQyNWY1IHB5M2sKKzYxMTE1IGU0ZmZlNjQ5OTU0ODFhOTcxMDViOTMwMGI4OWVmZDdjY2VjNmY1YjkgcHkzaworNjExMTYgNTk3NjJkNjcxNGEzMTNiOTVkOTJkNWIzZGY2N2E2MzVhMmIwMGUxYSBsZWdhY3ktdHJ1bmsKKzYxMTE3IDk3MmZjN2Q3Y2I3MjY5NzhjMjg1NTAyNmM0NDI4YjcxZTc0MTUxMDEgcHkzaworNjExMTggNDNlMDg0ODQ3ZTUzMzIzNDAxZThjZjdjMmQwMjhjMjY4Y2NmODAyOCBsZWdhY3ktdHJ1bmsKKzYxMTE5IDdkYTM2YjQ5YzllNWFhZTJmODUwNWQzZWMwNmIzNmI2MTBkYWFkYTIgbGVnYWN5LXRydW5rCis2MTEyMCBjNTQ2NTIzNjY3NzI4Yzk1NzA3ZGQzODVjZTBhYjI3ODA2YjVlMzEzIHB5M2sKKzYxMTIxIGRiZjFkZGM1ZjQ3OTUzNzk0NzQ1ZjZmYzlmZGUyZTU0MjlkYWUwZjMgcHkzaworNjExMjMgYmNlNGM0MGRmN2RmNzRlZmQ4N2ZlZTI5MjA5ZWIxY2UzMzZmMTk0MyBsZWdhY3ktdHJ1bmsKKzYxMTI0IDEwOTYyYjNmNzdhOWIzODFiNjMxODE2YWNiMTZhOGZjNDljZDY1OTUgbGVnYWN5LXRydW5rCis2MTEyNSBmYWNmMDFmMTViMTUzNTU1OWMyYmEwNWM0ZjVhYTcyMDQ2Yjg4ZjFjIGxlZ2FjeS10cnVuaworNjExMjYgOTM3YTNjNWFmNjkxOTJiOGVkMThmNGU3YWVmNmMxZTU5ZWNkMGRiOCBweTNrCis2MTEyNyA4Y2Q5ODRjMTdkZWM4NWFjMDczOTE4NWQwZWNjZTdkMGU0OWZjNThjIHB5M2sKKzYxMTI4IGIyNjljMmQwM2ZkMmQ2YTI3MDhlY2Y2NjMwYjdmZWEyMTkyNWJhOTggbGVnYWN5LXRydW5rCis2MTEzMiAwOTQwNzEzYjY3MjZjYTI2ZjNiZDllNmZmNDVjMGU4N2JmNWQwZjdlIGxlZ2FjeS10cnVuaworNjExMzMgMDVjMzk2MTkxZTQzMjkxZjc2MGJjMjAyOTM3OTNmNmE5NGZlM2I1NyBsZWdhY3ktdHJ1bmsKKzYxMTM1IDRhOTU4OGIxZTRiOTVkZjEzYmQ1MTA4ZWJhMzQ3YzA2MWVmZTIzMTQgbGVnYWN5LXRydW5rCis2MTEzNiA4OWNmYjM4YTRiOTg2MjNjYTA1NTI2ZDZhYjkyMjYwN2VkMDhlZTBmIGxlZ2FjeS10cnVuaworNjExMzcgMjA3Y2EwYThhZmQwMDIzMGFiYjVlY2UyNDc3ZDY4ZmI3MzBiMmE0MCBweTNrCis2MTEzOCBjYTExY2YyNGViODU1ZjVjODZjYzFjNDBmMDQ3YjQ2NWNiZTdlNDhhIGxlZ2FjeS10cnVuaworNjExMzkgNjdkNDA0ODY2ODQ2MjA5NGVkZjNlY2U3NTZmNDAyOWE2MmZkNTA3NSBsZWdhY3ktdHJ1bmsKKzYxMTQwIDAyYTAxZTU3OGQ2YzVhMGJlMzQzNzgzMDY2NjBjM2ZjYzRkNTljNjMgcHkzaworNjExNDEgYjdlZTkwNzRjYTBlYjNiNzdlZmZkMmIyMzFiMzA5MTY3OTE2MGVhMCBsZWdhY3ktdHJ1bmsKKzYxMTQyIGZjNmY5MDU0NWNiNDhlNWNlZjVmNmVjYmIxMGZlNmVjY2RjZDc5N2MgcHkzaworNjExNDMgMDAyM2MwNDIyOGU2YjM1MzMwNWQ1Y2FkYWE4ZmU2NTkxODMxODEwNiBsZWdhY3ktdHJ1bmsKKzYxMTQ0IDg5NDZlMjdhNDU2M2JjMmQzZGIyOWU0NjBmOThjMTgxYWRlNzVkZjIgbGVnYWN5LXRydW5rCis2MTE0NSA5YjhmYzQwNWY5YjA0ZmM1MTFhNmMyMzgxMTE5OTRlODEyMjg1YzQ0IHB5M2sKKzYxMTQ2IDlhZDU0MmVhMDViYTFkYTliMDA2MWUyZWU5MmU4Yzk1MDdmNDA2NjMgbGVnYWN5LXRydW5rCis2MTE0NyA0NGQxMGQzOTA5MmM2NWVjMmZlYmNjYWU3MjZjODYyZmY0Yjg3NTQ3IGxlZ2FjeS10cnVuaworNjExNDggNmEwNGRiYjBkMTRiNDlkMTVmMzBkYTNmNzdkMzlmNWY2NGEwOWU2NiBsZWdhY3ktdHJ1bmsKKzYxMTQ5IDMxMjc5NTZmM2IzM2U3ZDFkZmEyZjVlMjcyMTU1ODY4OGM5NTViYjIgbGVnYWN5LXRydW5rCis2MTE1MCBhOGZiZDkyNzE0YTlhOWM0NzIyN2I4ZjI2ZTg3NmY0NGVlODI2MDdkIGxlZ2FjeS10cnVuaworNjExNTEgMmQwYmQwOTVjNDIwYjA3MTEwMDBkOWJlNjY4NDhmNmNmZDk3MmIzYiBsZWdhY3ktdHJ1bmsKKzYxMTUyIDBhZGZiYThhZTk1NzEzYzRlMGQ3MmYxNWQwODk2ZGFmYmZhNmI4ZDQgbGVnYWN5LXRydW5rCis2MTE1MyA4MmMzYjBiNWFhOTI1OGQ4OGUxN2Y5N2QxNWYwOGYwNzJmNDhlN2UzIHB5M2sKKzYxMTU0IGMwOWRiNzhiZDA2NmNjYjEyZDE1ODc4OWRiZGYzNDk4YTYxMzg5M2EgcHkzaworNjExNTUgY2M1NTQzYjU2MTBiMmQwNjUyODQ0NDY2ODQ5NjlkZWQ5ZWY2NWY0MyBweTNrCis2MTE1NiAwZTAxNjliMGVhY2M2ZGRmODA2OGQ1YzdjZDE4NDczYTdjMzBiOWQ5IHB5M2sKKzYxMTU3IDViYTA2NjkwYzE4NDc5OWIwNWM1ZGI2MDExMGUyM2ZhOGM3MGE1MzggbGVnYWN5LXRydW5rCis2MTE1OCBkZjE1ODI3ZjM0ODgxYjlhZjA5MzYzNTA4MTNjZWQ1YzEyM2M4MjMwIHB5M2sKKzYxMTU5IDM2MmE0NmU3YzMzYTJhNmFmNjdhNzk3NDMwZmQ2NGZiOTA1NzY2NmEgcHkzaworNjExNjEgMjBhNDI2NzRiMTExMDRhYjk4NTg2OWExZGJlNzRkMTYwZTVmNTRkMyBweTNrCis2MTE2MyBjZDE1YTVlOWMxZGU1OWJiZWZkYTdmNmZmODVmNDYxMjAwNTZkM2Y0IHRydW5rLW1hdGgKKzYxMTY0IGMxMjVjNjFlMDZhODYwNjczMjBiNTI2ZDgwMWZhOWY3Y2ViY2RmNTUgdHJ1bmstbWF0aAorNjExNjUgNzBjNDFiZDY4MGI1ZTdjYjAxYTQyNTZiZWNlOWIzMjRlYTY0ZDA4MCBsZWdhY3ktdHJ1bmsKKzYxMTY2IDM0MzlmYTIxNWZhZWMwYWUxOGNiMjg0Mzk0ZjFjYzUwNDU5NWRiZWEgbGVnYWN5LXRydW5rCis2MTE2NyA1YjcwNzhlY2NlZTgzNjk3ZjU0NDE3NDJkZjhlOWFkYzU0ZTdjYzgyIGxlZ2FjeS10cnVuaworNjExNjggYTYyZjk1YTRhZGZjNWUyYWQyNjM2ZTA3NjQ5YmJjNzdhNDA3NTUwMSBsZWdhY3ktdHJ1bmsKKzYxMTcwIDQwNjBkYjEyNmVjZjM2YzUwNTQyOGMyNGRjNmRiNTRmMWQ1N2FjNTkgbGVnYWN5LXRydW5rCis2MTE3MSA4YmJlNTMxZmNkM2M4Y2E3MWY1YjQxZDEyNmIzOGRlMWM3Y2FlZTRkIGxlZ2FjeS10cnVuaworNjExNzIgZjcyYjJkZTk5N2I5OTI3ODg1YTk0YzczOWM5YWM5NzgxYjI4N2ZiZCBsZWdhY3ktdHJ1bmsKKzYxMTczIDk2Y2E4YzdjZWRjNGQwMzFlYmIyMDhlNWFkYTkzMThlNjA4Y2E2MjggbGVnYWN5LXRydW5rCis2MTE3NCA3NjI4Y2I0MDNjNTNlMWEzNmFlM2QyZjk0OGIxNzE1NTk2YTY2MzY1IGxlZ2FjeS10cnVuaworNjExNzUgYmJkZjA2YTg2YTI0MzI5OGIyMTA3NGU5YWU1M2NhY2NhYzA4NGMzMSBsZWdhY3ktdHJ1bmsKKzYxMTc2IDBhOGVlY2FjNWFkMWRjOTM0N2RlNGNhYjQ3MjViODE2MTFmMDVmZWEgbGVnYWN5LXRydW5rCis2MTE3NyBmNjUzYzBiODkxNmI4ZTU2NWI3MDc2NmQ5MWEzZjIyNTBkNGU2Njg4IGxlZ2FjeS10cnVuaworNjExNzggNDczMjhkNzZlOGFiYmQxNzYzMWVkNjY4MDViNzUyZThmYzE1YTNiOCByZWxlYXNlMjMtbWFpbnQKKzYxMTc5IDU0ZjFjYjhhODFmNjYwMjVjN2VmMTI2ZThlN2U0NGViNDAzNTZkMzIgcmVsZWFzZTI0LW1haW50Cis2MTE4MCAwNTY1MTMwZDdkOWY2NGMwZGY0NDBlNWMyMTVmMmE0ZGU4MzQ2MGNjIHJlbGVhc2UyNC1tYWludAorNjExODEgMWY3ZDYyOGM3MGE5YWVmZTc2MmMyYzMyMjEwODc2ZmFmOGQ2NGM3OCByZWxlYXNlMjQtbWFpbnQKKzYxMTgyIDdhMWZjNjFkNWMzZTQ1ZjNhMjIxNWQ0MmNhODU2ODYxYTE4MGQxMTkgcmVsZWFzZTI0LW1haW50Cis2MTE4MyA1Y2NiNmViMjAyZmYyMWMwMTgwMDQ3NTU1ZWNhNjY5YmI5MjZjZTE3IGxlZ2FjeS10cnVuaworNjExODQgODhjMWUxN2NlZmZjZjM1OTNmYjFiNWIwZDYxNzQ2YWVjMGFlOTgxYyByZWxlYXNlMjMtbWFpbnQKKzYxMTg1IDg5M2M3YmQ0YTkyYmQ4ODlhODVlNjkxZjQ5MTg4YzM3YjBhNzIzNTcgcmVsZWFzZTIzLW1haW50Cis2MTE4NiA1NjY4MWQ1YmVlNzA5MzBiYzRjZDgxYzI4OTFmY2U0YzMwZWE2NzBhIHJlbGVhc2UyMy1tYWludAorNjExODcgNGQ3MTMwMWE2ZDRiN2ZhOTc4ZTBkZTJjZjBhYjI3MWExNGVhZTI2YiBweTNrCis2MTE4OCBhMzFiNjUwNTE1Y2I5Y2E0MWM1N2MxNWQ0YmRiNzNiYzEzOGVkY2YwIHB5M2sKKzYxMTg5IGNmM2E4MGYxZGE3ZDA3YTAzNGZlNDcxM2YwNDhmMzc5OGU2YTQ5ZTEgbGVnYWN5LXRydW5rCis2MTE5MCA2MDY4Yjc1ZWMyN2EwZjE5YzcyMDJjODBlMDgwZGU3ZmUzZDlmNGEyIGxlZ2FjeS10cnVuaworNjExOTEgNDRhZDc4ZmUzNWZhYjEzMTdjZmNkMDMxODdmNDc2ODUxMWFmMWU2OCBweTNrCis2MTE5MiBiOTMyZjAzNWZiM2VmNDM2ZGFiMDA2MjFiNTNlN2YzMTNmZDAwZmUyIGxlZ2FjeS10cnVuaworNjExOTMgMjRmNDIzMGJhZWJlN2RmYzZjYjM3NjlmZTk3OWIzMWRhNjkxNzZhNyBweTNrCis2MTE5NCBjNmQ5YTM0ZjAyNGZkYmE0NjZhOTIyNzllM2YxMTU2YzI5MTdkZTIyIGxlZ2FjeS10cnVuaworNjExOTUgMmM3M2M1ODMzZjIwMDVhZTlmNTZkY2NiYzVmOWQyMDlhMzIwNWYyYiBsZWdhY3ktdHJ1bmsKKzYxMTk2IDdlNGI3NTNhZmVjNmUxNzk0ZTM3YWM4ZWRjNjQzMjUxZTQzNWQyYTEgcHkzaworNjExOTggYTU1MTM2Yzc4YjYwNDFkM2VlNmY1MDVmZTExZDVlOWFiNDU1YmZmZiBsZWdhY3ktdHJ1bmsKKzYxMTk5IGExOGE0MjRjMmJkMzRlNzg3ZjkyMzM4NzE2ZDgyZDdkNDhlOTA3MDUgbGVnYWN5LXRydW5rCis2MTIwMyA0MWE3MDc3NDRiYzg5OGRjYTNkZmIwZDRiNTc3MmY1MjIzMTUxZmYxIGxlZ2FjeS10cnVuaworNjEyMDQgNjI4MmRmZDVkYzQ5NGY0MDkxYmEzMjg1Mjk1YjY5YTNiZWI0NzMyYyBsZWdhY3ktdHJ1bmsKKzYxMjA1IDg4MmViYTE0NTExOThkNWEwZmZkODFiZjIxNzhmZjE3YWRmODdiMzMgcHkzaworNjEyMDYgMjU0MDZiM2ZmOTdhNmZkMjVkZDU1MTFkZDUwNWUzMTliMjhlNGE4OSBweTNrCis2MTIwNyA2NWVmNjA4ZGQ2NmNiMDQzMjBiNWMyNzFjZjU3MDVjZDk5YjBlNDNmIGxlZ2FjeS10cnVuaworNjEyMDggZTk5ZTFkOGI4MDc3NzBlZThiZTZiMWFiMzUxNjQ1MDMwZDI3MGQ5MyBweTNrCis2MTIwOSBjNTE4ZjM5NDczZmQwYjkwMDNkODM4MDE1MjIzNjViZWZiYzUyYmFjIGxlZ2FjeS10cnVuaworNjEyMTAgYTE1NGYxOTgyNTkyOGNiYWYxZjJmYzQzMjc4OWJkZTNmMmU3YTQwZSBsZWdhY3ktdHJ1bmsKKzYxMjExIDA3MjM5MmVkNGVhNjkxMzkxNzcxZjQwOTVkMzk3ODZmZDA4NzU1OWUgbGVnYWN5LXRydW5rCis2MTIxMiA4NDAxMzhlMjQ5ODBjODk5NzQ2M2MzZDg2NjQzMTQwMDAwYmQwYWMxIGxlZ2FjeS10cnVuaworNjEyMTMgMmQ1NTFkMDQ2MDIyZTFiNzQ4NjZhNjU1NDIzNzliZTkyZmJkM2JiNyBsZWdhY3ktdHJ1bmsKKzYxMjE0IDRkMzYxZjAxNjQxY2I2MTFhYjNmYTkwM2MwZWYzNDhjYzZmYTM5NDQgbGVnYWN5LXRydW5rCis2MTIxNyA5MWQ3NTcyZTM1YTFjZDAxMGVhMDE0YmQzOGQ0NjdhN2MwMjI4Yzc5IGxlZ2FjeS10cnVuaworNjEyMTggZDdlNGM2M2ViY2FkMDdiZTZiMmJjMThlMDNjMjVlZDFjMzI2NGEyNCBsZWdhY3ktdHJ1bmsKKzYxMjE5IDU0ODlhZjY4NjQwOGMxZWMwNzJiYTBiODk2YmYzMzFiMTJlZDJkZTEgbGVnYWN5LXRydW5rCis2MTIyMCAzZmMwOWNjZjAxNDE4NWQyY2I0Y2VmMWM1YWUzNTA5NjE5NjUwZjg3IGxlZ2FjeS10cnVuaworNjEyMjEgMGUyMjRhYTIxOWEyMWI3ZmEyMjVkYTEzYjE1ZTcxMDE0YzA5NDAyOCBsZWdhY3ktdHJ1bmsKKzYxMjIyIGYzZWI0NTdlOTZhNzVjM2Y5NzdlNTcwYjI1ZTMxYmQ4MTJkZTVmMGUgbGVnYWN5LXRydW5rCis2MTIyNCBlNDRjNzQ1YmVjMGJhZGI3OTAxNmVhY2QwY2E2YjJmM2NmZTgxMGFmIGxlZ2FjeS10cnVuaworNjEyMjUgNGVhMzZjMDEyYTJkZTUyMjc0MjEyMWQ0OTMyNjUyOWM5OGMwZmIxOSBsZWdhY3ktdHJ1bmsKKzYxMjI2IGRkMDE2YTZkZGNjNWE5MDI4ZjA1YmE1MTdhZGQzNzc5NDc5NGJhOWYgbGVnYWN5LXRydW5rCis2MTIzMCA5N2JlYTM5MjM2YTkzYjY5YzQ0ZjkxYmRhOTQyNjcxMzYyNjJjZTU4IGxpYmZmaTMtYnJhbmNoCis2MTIzMSAyZDQyNTMwMTVmNTg0MGExNGNiNGRhYWRkNzcwNzkwOGJhNTkyYzMwIGxpYmZmaTMtYnJhbmNoCis2MTIzMiA5NmFhNmQwMjdlMmU3NjkxODE2ZTQ5YjMwNGQ5NzU4MjgxNDIxY2IzIGxpYmZmaTMtYnJhbmNoCis2MTIzMyA1NTQ2ZGM0YTQyNmFhYTY2OTliNGM3N2JkMjFhY2RlNjdiYmM1MzdmIGxlZ2FjeS10cnVuaworNjEyMzQgZDM4N2IwMWRiYzFjOWRhYWY5MDY2YjExNjgyZTdjOTVmNTMzMzNiMCBsZWdhY3ktdHJ1bmsKKzYxMjM1IDkxY2E5NTQ5OTA2YWNhYmM5YWE2NTdlNDFmNmMyNWUwMjVkYzQ3YmUgbGVnYWN5LXRydW5rCis2MTIzNiA0OTU3MDBlZTMzNDU2Zjc2NGNlYzFjMTQ1Mjk1MjY4ZjEzNjgyYjU0IGxlZ2FjeS10cnVuaworNjEyMzcgOGE1Yzc1ZWZhZTRjMjBiZTlhNzQxOWI4ZGIxMGFlMWVjMjU2NmYwZiBsZWdhY3ktdHJ1bmsKKzYxMjM4IGRkMzE4YzNmNmNiNzlhNzQ5NTliZjZhMmY1MzUxYWMyZjRmMTQ0ZGQgcHkzaworNjEyMzkgMDBjYjBhMzVmYjQ5YjJmYzk3ZjZjNzRjYmYzYzc0Y2EyNTE2ZGFkNSBsZWdhY3ktdHJ1bmsKKzYxMjQwIGZmM2U5YWVhYTY5MjM1Yjg5MjU5MjA1ZWVhMzE2NmU3YzFlNjMxMzggbGVnYWN5LXRydW5rCis2MTI0MSAzMGZhNjc3NzA5NmYyMTAyZWQ3ZDRjY2M4NzYyYWRkYjM2NGVhNjQ1IGxlZ2FjeS10cnVuaworNjEyNDIgMTFlOWUzNjY3YjM2NWNkZWQ3N2U4YzE3NmVjMjlhOTIxY2IwODJjNyBsZWdhY3ktdHJ1bmsKKzYxMjQzIGJlYWI5ZTEwYTE4YmRlOTc4ZjQyNmY5MGM4Zjg5YThlMDkwODJiNjIgbGVnYWN5LXRydW5rCis2MTI0NCA5OTYwZmQyZjVlYTk0MDg1YWVlNjk5YmNhZDk4MGM1MDQ1NWFmOWVmIGxlZ2FjeS10cnVuaworNjEyNDUgMWE2OGVjZTE1NDdhYjQ3ZjcyOTdjZGZiZTg2M2FmZDZkY2RhYjVhNSBsZWdhY3ktdHJ1bmsKKzYxMjQ2IDIzNDQwMWFkZDI5OThmYmZhNTQ1Nzg0OGM1ZjQ5ODUyYjMyM2U0ZmIgbGVnYWN5LXRydW5rCis2MTI0NyBjOWQ2NmJkYmNjY2Q0NGEzNTljNWJiODM4M2I0ZTJhZGI1YzgxZGU1IGxlZ2FjeS10cnVuaworNjEyNDggNDM2MTA1MTI1NDQ1OTFmNzhlODdlMWQwNzBmZWI3MjM3NTM2YWYzMCBsZWdhY3ktdHJ1bmsKKzYxMjQ5IGY1MjQ2OTExYzkwM2YwYzNmZWUxZjU0ZmE4ZTkxMGJlMTM1ZjBiOWYgbGVnYWN5LXRydW5rCis2MTI1MiAwY2Q0YWQxYzkxNTNlYThhMTQxNjU4YjUxNTI3YzU0ODEzYzIzYmIxIGxlZ2FjeS10cnVuaworNjEyNTMgZDQxYTQyMDY0MDVjMTM1ZmYwZDVkMjkxZWFiNmZlNGUxNjk0NjdkZiBsZWdhY3ktdHJ1bmsKKzYxMjU0IDIyMTZiMTAwYjJkMmVkZWZkMjNmZWFkYWY1NmMxZWVmYjhlYTZiMDggbGVnYWN5LXRydW5rCis2MTI1NSA0Mjg4OWIxYTdkYzI1NWRkODA1MGNmOTMwODBkYjg2YmRhZGYxNTE4IGxlZ2FjeS10cnVuaworNjEyNTYgYzE5N2UxODQ0OWI0MDRmOTUzYTU2OTc1NWM4MGFkMWQwOTYyZmE2MSBsZWdhY3ktdHJ1bmsKKzYxMjU3IGVlZmM2MDRhZDkzNWFiODQzMDYxMTZkOTk2ZTU4ODYzMTQ1ZDQ3NjcgbGVnYWN5LXRydW5rCis2MTI2MCBkMGJlMmMzNmNiZjhkNzk5MjIwZWY5MDBlNThkZjk3NWViZTExNDIxIGxlZ2FjeS10cnVuaworNjEyNjEgNzM5NWVkMGYwZjdmNzc0Mzk2OWJiOTdmYTYyNzQ4NTQ5OThlYWI2NyBsZWdhY3ktdHJ1bmsKKzYxMjYyIDliMDQ5NDE2NzNmMTczZjIxNGM3NDkyMzIyNTc2OTgxMzg3ZDljMmEgbGVnYWN5LXRydW5rCis2MTI2MyBlZjg5MzM5MDQ4N2JhZmQwMWU4OGFmYzhlM2RlYTQ4Y2Q0ZWM3OWYwIGxlZ2FjeS10cnVuaworNjEyNjQgNjFkMjI3MDFhNWU1ZWI2MjZhZDdkZDA5ZmYwNjEwYTQ1Y2ZmZGJlNiBsZWdhY3ktdHJ1bmsKKzYxMjY1IGIyNjJiZWNlMTMyM2NjM2U5MTFjZDAxYzE5ZmRlNDFmMjBhMDQ4NGUgcmVsZWFzZTI1LW1haW50Cis2MTI2NiBiOGVmNzFiMDE0NDYxMDc2OGE1ODRjZDE0ODYxNDMwZDliZTk1MzMwIHJlbGVhc2UyNS1tYWludAorNjEyNjcgNGM0Nzk5M2FmYjFiMTIzMGRjYWY5ZDMwNzUzYjZlYjE2YjhlZTMxNyBweTNrCis2MTI2OCAwYjhiM2U2NjNlM2ExNWM3NjQ3ZWMxODM3YjFhNzZmNTE0YmJiZDFkIHJlbGVhc2UyNS1tYWludAorNjEyNjkgMDY1YzRhNzZhYzAxZjE1Y2E0ZjNiYjM0MzAxOGMwM2IyNDBiMmJhYSBsZWdhY3ktdHJ1bmsKKzYxMjcwIDE1NzQ2YmY0YTBhNjNjNDk5MDkzODMyNzZhOWFhMWNmNGU5NDYzNzEgbGVnYWN5LXRydW5rCis2MTI3MSBhNGMyNjU1NjVjYjZiNjc3NDZjNmM0ZGQyMjUzMTZlNzc0OWJkNjQxIGxlZ2FjeS10cnVuaworNjEyNzIgMzk4MDMxM2Q5YjhiMjdjMGUyMjM3MGNmMjFjOGI0NjAzNzE1MjJkZCBsZWdhY3ktdHJ1bmsKKzYxMjczIDM2ZmVmOTlhZjE4ZDEyMTQzZDM2OGNkYThlMTgxMDExNGE2OTgwMTYgbGVnYWN5LXRydW5rCis2MTI3NCBlOWJlNmFlYjRkZjA2MjFmYjI5MjE4ZTUzNDRlZTY4YjFjZjc3YmQ1IGxlZ2FjeS10cnVuaworNjEyNzUgODk4ZGMwZjhhYjYzNWFmN2U4NmZhMjI5ZmNjMTgxMzMxZTdiY2RhMCBsZWdhY3ktdHJ1bmsKKzYxMjc2IDE3YjJlYTBhZmE2MTE4ODgyODFhMGYyNDliMGM2ZWIxMDEzNWM4ZTYgcmVsZWFzZTI1LW1haW50Cis2MTI3OCBhZjI2N2U1NGJmMWRkZThkOGI2N2RmMDI5ZjA3OTllYWQwN2U4NDgzIGxlZ2FjeS10cnVuaworNjEyNzkgYmJhYjhmNjRmOGQ2MmM1NjljNmQzYzgwMWYxOGM5MzNiZDQwODcyZSBsZWdhY3ktdHJ1bmsKKzYxMjgwIDllY2IwM2VmMWM2MjQxOTdiNTIzOTZjNzZjNWYxMTZkYzU4NTAzMzUgcHkzaworNjEyODEgNDg1YjIxOTU0NzQ2MDk3YjI1MDUyMjI0Y2U0OWUxNjE4ZWUwZDE1NSBweTNrCis2MTI4NSA0NGFhNTlmODU5MWRhYTZlNzc0ZGE4YzZhZmJjNTI4NmQyY2U1Yjk2IGxlZ2FjeS10cnVuaworNjEyODYgMGJlOWIxY2YxYjE2MjExNjdiZGFhMmY3ODU3MGQ4Y2JhZTQ1YmQ4MiBsZWdhY3ktdHJ1bmsKKzYxMjg3IDcxMjJmYTY1Njk3YjhhNzNlNjEwZGI0ODY4MTNhMDNlOTZhMzJhZDggcmVsZWFzZTI1LW1haW50Cis2MTI4OCA1ZjQ5YjU2OWRlZGYxMTRjNWZlY2JhYjVjZDYwMmY5ZTJhODU5YThiIGxlZ2FjeS10cnVuaworNjEyODkgYTg3NTRjMGRiNTNmNTAzMTNmNWRmYzQxNzhlZTZlMjdmNDk0N2ZkZiBsZWdhY3ktdHJ1bmsKKzYxMjkwIDM0MzU5N2M3ZDY4MmIzNTUyNTgwMzUyZGVkZGQwY2RiMzY5NzhhMDQgbGVnYWN5LXRydW5rCis2MTI5MyA5YmJlNTVmOTg2N2VlOTQ4NTRlMzQ1ZjlhZjc4N2ZjZGU5MTQ0NWY3IHJlbGVhc2UyNS1tYWludAorNjEyOTggMzkxZGUxNDMyMjZmZDdiMzc3OTZiYzk3OGZmM2Y3OGYwNWIwODkxOSBsZWdhY3ktdHJ1bmsKKzYxMjk5IGY4NmZhNWZlYWYzMTRkZmE5N2IwNjBiMDFiYTIzNjc0MjMzNzg0NzcgcmVsZWFzZTI1LW1haW50Cis2MTMwMyA5Y2Y3MDcyOWMyM2YyMDg4YmI1MDMwYjA5MDkzOWIzNWJkMjJkZWFlIGxlZ2FjeS10cnVuaworNjEzMDQgMzdhYTQxNmI0YzQ3YjRlZjVmOWYwOTNhYzg2ODc1NzQyMzBhMTRiYSBsZWdhY3ktdHJ1bmsKKzYxMzA1IGU1YWFkYzA1ZjZmNTFlY2Q1YmQwNmY3NjJhZmIxNmUwMTM3MjFmOTAgbGVnYWN5LXRydW5rCis2MTMwNiA0NTA1MGQzNzZkNTdmYjg2ZjgwNDI0NWZiZmMwNjhlZjZmZjkxNDljIHB5M2sKKzYxMzA3IGMyN2FhYmFlMDZmZGM3NWIyMjhmNjhkM2Q5M2YxMDRmZDNhMjMyZDAgcHkzaworNjEzMDggOWE3MjdjOWY5YmFhMjU3ODY0ZDUzYTY3ZTJkM2EwMDIxYTk5N2JjYSBweTNrCis2MTMwOSBhZjQ0Y2VmMWNkZjVhNTVjOTNmZDlmMTc5MmRiMGE5YmE4OTJlNWI3IHB5M2sKKzYxMzEwIGM4MzA2MTZiZDJmYzkzMTA1M2M0MTc5NDNmMTRlOTRmNGYyNTM2ZDkgcHkzaworNjEzMTEgOTQwNTNiMjdhMzUyNTkwYWMyMGQ2NmJmNWQ4ZTZlZWQ0MTExNThjMSBweTNrCis2MTMxMiA1MDY1NDc4MjJiOGQwMTAyMmRhNjU1MDBlNGI2MWNhN2ZlOTZkNTJiIGxlZ2FjeS10cnVuaworNjEzMTMgMTU4NDIwOTRiMDg5YTJjNzhiNTAyNWM2YzdlZDhkOGNkOWFhYjYyZSBsZWdhY3ktdHJ1bmsKKzYxMzE0IDhiYWI0MThjYzg3OTNiOGMwMDg2YTAwMjdhYTgxOGU1YTgyNzI0OGEgbGVnYWN5LXRydW5rCis2MTMxNyA1YjQyMzljMWY4ZjgyZjYwOWY4ODgwYTQzNGMxMzljMWQ1OTYyZTIzIGxlZ2FjeS10cnVuaworNjEzMjkgN2YyM2I4MDRlOTRjMDRhYzRmYjc1ZTE2NTcyOWM0ZGYzNjczNmVmYiBsZWdhY3ktdHJ1bmsKKzYxMzMwIDY2MDcwZmRiZjBiOTMwNzczMGM3NWQxOWI3YzEyYjU5OTExZTU4OWEgbGVnYWN5LXRydW5rCis2MTMzMiA2ZjE5NTc1NWYxNDRlODAyZGMxZDhmNzI1MTZkZDBhYTFlYjg5NzJmIGxlZ2FjeS10cnVuaworNjEzMzkgNDU2Y2VlYzY1MzU3YzE2NjU3YjBhZGJiYmNmZTI3MjBhZjA3YWIwNSBweTNrCis2MTM0MCBhZWFhMzAzMTQ3ZWViMjNmNGMwYjQ4MDMxNmVjMzY0ZTQxMjY4OWE2IHB5M2sKKzYxMzQ0IGI5ZDZmODcwYmZiMTY4YzVmYzM2Y2RlY2M3MGExOTU4MzA3MmM1NTkgbGVnYWN5LXRydW5rCis2MTM0NSBkOGRmNGFhMDYyNjFkZTVlNGMwYWEwNTFlNDQ4Njk3ZDQ3OTFlNDM3IHJlbGVhc2UyNC1tYWludAorNjEzNDYgMjAyMjk0M2FkNDUwYzQxZDY0NzA4ZmI1Y2FjYTJkMjY3MmI1YjhmOCByZWxlYXNlMjMtbWFpbnQKKzYxMzQ3IDVkNzY0ZDUxOGY2NWViYjkxMDg1Njk3MjdhN2M4OGIzMjBjMjdlYjggcmVsZWFzZTIzLW1haW50Cis2MTM0OCBlODU3MmQ5YWM4NWVmM2QzZTRjMDBjNGVkOGYxY2E3YTZhZWQ5OWRlIHJlbGVhc2UyNC1tYWludAorNjEzNDkgZjdjMzY1OGM3MWMzZDZjMzIwMzk4MjUwNzMyNzVmNWQ3ODNhYTQwMyByZWxlYXNlMjUtbWFpbnQKKzYxMzUwIDE2MmM2OTUyZWEzNGQ0ZTcxZjVmOTk5N2ZkODBhMWI2ODgzOWEyZmQgbGVnYWN5LXRydW5rCis2MTM1MSBjZTVmNmZkNTc5MTMyZjRiOTUwYjA5NTVhZGNmNGViODE4NDA3YmU5IGxlZ2FjeS10cnVuaworNjEzNTIgN2Y0ZTYwMjFiYzlmNjA5NGZlMmEwZDZhNzUwYjBhNmVhN2MwZWUwNCBweTNrCis2MTM1NiBlMDliYzFjNTI5NWJjMTk4NDVhMGYzNTRkYTJlODMwNjZmZWI4ZWU2IHB5M2sKKzYxMzU3IDdhZGFhYjY0ZWI3MmU0N2U1N2ZiYjRjY2JhZjg3MDNkMGMyZjU4MTIgcHkzaworNjEzNTggNzc1MmE1N2Y5YzQ5MGQzMWYwZjNhZjhjNjEyMTU1MzY4ZTM5ZGJkMSBweTNrCis2MTM1OSBlNDQ2OTEwYzlkNDM3ZjRkNGEwMzBhYjAxNDRhZGJkMTFhZmEyNGJhIHB5M2sKKzYxMzYwIDc0MGI1ODA4YzU3YWU3YjNkNGM3OTNiYWRlNTExY2ZhZjlmNTJmZWQgcHkzaworNjEzNjEgNDJhNmFhZDM5ZTVjZTliZDQ1ZmJkYTNmN2Y2OTkxOGI3ZDY4MzUzNiBweTNrCis2MTM2MiA3Yjk1YzU3YjU4MjFiZmFjMjdlZTZiMTVlNDYxNmFlMzkwYzFlM2NiIHB5M2sKKzYxMzYzIDk4NjMzOGViMGMwZGU1Mjg2MjVkNDViOWZhNTFjM2VmYzhiOTA3YTMgbGVnYWN5LXRydW5rCis2MTM2NCA3NDMxZjNmYWEzNTY4YTQyZTFlZDQ0M2ZhNmQzNWI3OWE5YWE5NDFiIGxlZ2FjeS10cnVuaworNjEzNjUgOTM5NWEyMmE5NjZhOTRjYTA4OGI1YzRhN2Q1OTEyNDRmNGIyNmQ1MCBsZWdhY3ktdHJ1bmsKKzYxMzY2IDAxMWQ3OWFmMDVlYTkxM2ZjYmY3MzNkNWUxZWYyNGQ2YmYyYWY5ZWMgbGVnYWN5LXRydW5rCis2MTM2NyBkNTAyNGVlOWU4OGEzMWIxYjZjNzQ0NDg0MjFlMTNhZDY4MDIzNDNiIGxlZ2FjeS10cnVuaworNjEzNjggZDcyZDUyN2RlNzExOTY1NjVhZjczNWYyYTg0N2Y0ODg5NzU0N2E3ZCBsZWdhY3ktdHJ1bmsKKzYxMzY5IGNiYjllMmY0YjIwMjgzYWNhMzM1NGE4OWNkZjg0NmZiMjcxNjUxYWEgbGVnYWN5LXRydW5rCis2MTM3MCBkYjViMzIxZWRjYmIyYzFmOTNlYTBlYzE0MWY4YjU2NzYzZmM2ZGQ3IGxlZ2FjeS10cnVuaworNjEzNzEgNmEzM2Q0ZjZmMTZmNzgyN2U2ZTJmMWVmNGU3MDczM2FhYjYxNGRhOSBsZWdhY3ktdHJ1bmsKKzYxMzcyIDU0M2U4ZGRlMzYxZjhhNjFjMjE2ZTc3NGFjNGZmZTc0NmM3NTFjYmMgbGVnYWN5LXRydW5rCis2MTM3MyA0OWRjOWFmOTBiM2QxZjI5ZGVkYjViYWVjMzg3NGQzNjI2OTZiYTRjIGxlZ2FjeS10cnVuaworNjEzNzQgNjYzNDFiZWQ4MmIzMDUzZmZlNjZjZTgxYTRmMTkyNThlMDRjMGY5YSBsZWdhY3ktdHJ1bmsKKzYxMzc1IGQ5N2JiYWQ5YTM1ZWVlZTIwMzcxYzI0MWM2NGNmZDhkZGZiMTA4YWEgbGVnYWN5LXRydW5rCis2MTM3NiBiYzgxMzI2NWUyYzY1MzNjNTUwY2NlZmJmZTczMjZmMWVmOGVhMzU1IGxlZ2FjeS10cnVuaworNjEzNzcgZTJlNTQyZmRhY2QwOWRlYjhhZGEzNWY2M2Y3N2JmZmE3NDhmODA3YiBweTNrCis2MTM3OCBmNmIzY2YyZjMzMzExZmNlNzE1MWI2MWY3YzZkOGQxZGI3MTNlOTI0IGxlZ2FjeS10cnVuaworNjEzNzkgN2M3OGVhNzA3MjE5ZWU0ZDAwZTY0NjM1Y2NkYTFhZDI3MTlmYjRkOCBsZWdhY3ktdHJ1bmsKKzYxMzgwIGU3YWE5YjVmMjFiNTBkMjhkODVkMDY3NGFiYzg1NzM0YzhiMGY1ZWYgdHJ1bmstbWF0aAorNjEzODEgNTM3Mzc1MWFkNGI0MTBiODI3N2Y1MTRjZjI0YzJmNTM3ZmNmZTJjMyB0cnVuay1tYXRoCis2MTM4MiAwZTBjMTQ5OGJlMWE4MGY4NmI5OTQ3NGI1Y2UyYWJmZDMzZGViM2JkIGxlZ2FjeS10cnVuaworNjEzODMgMzU0ZTM3N2M5NTkwMjQ0YWJlMDdhOTc5MmE4YWEwMmM3YzZjMWE2MyBsZWdhY3ktdHJ1bmsKKzYxMzg2IDE2NTgwZGMxNDI5NGU5MjIzOTg0ZWE5MTI0MGM4OWMxNTI1OGY4ZTggcHkzaworNjEzODcgMDA1M2ZjOWY1YTFmNmU3MDU4NjQ0OGM4ZTkyZTU0ZGY5ZDBjNTc1ZiBsZWdhY3ktdHJ1bmsKKzYxMzg4IDljODkwOWVlNTcxZjRjNTA1ZjUxMWQ1ZDFhMzdiNmZkYTU1M2Y1YjkgbGVnYWN5LXRydW5rCis2MTM5MiBiOTQwYjFhZDlhM2FhMjE5YTIxYTk0OGIxMjE3ZjFkZDBlMDYwZmFlIGxlZ2FjeS10cnVuaworNjEzOTUgYzA3YzVjN2E5MTRlZTMxZjlkNzBjNDRiYTBlZmY2NDAxNDJjMGEzMCBsZWdhY3ktdHJ1bmsKKzYxMzk2IDgyM2UxMWViZjY2ODI5YmFmNTUwYjkxNjAxM2I1MzRmZDc0NWY3MDkgbGVnYWN5LXRydW5rCis2MTM5NyBhNWM5MzkyMjlmZjI3ZmI0NjQ2ZDFlZWNiMWExZWRkYWJiOGZlZDhiIHB5M2sKKzYxNDAyIDIxMmU5YzhhZDA4N2ViMTZjODk0ZTAwZWM5ODUyMDE4NDU1OWYyY2IgbGVnYWN5LXRydW5rCis2MTQwMyA1OWViNWFmNjFjZDczNjg1MTczOTg4N2E3MDUyYjY2ZWUyYzk5YmVhIGxlZ2FjeS10cnVuaworNjE0MDQgNTMxZTYyNDE2ZWViNjdkNWU5Mjk3ZTA3ODgxM2MyMjhmZDU5OGRlMCBsZWdhY3ktdHJ1bmsKKzYxNDA1IDBkMTBmMTkzYjliZTI1YTZmZWM4OTlhYzQzZmY2MjBmMTExZGI1M2YgbGVnYWN5LXRydW5rCis2MTQwNiA0ZTM1OGVkN2Y1MTU2MTdmZmM3YmE1MmIwMWU1M2VjNDk4MzE4YjEwIGxlZ2FjeS10cnVuaworNjE0MDcgZmVhN2JhODkxMGE5NjBiZjcwZGQ5MmU0ZTc3ZDc3MDE2MTVjZGI5MSBsZWdhY3ktdHJ1bmsKKzYxNDA4IDgzMmM4MjBlOWQxNDRjYjc2Yzg3NzhhZDZmY2ZmZTIzMmIxZjVjNDYgcHkzaworNjE0MDkgMDU4ZmJmYjk4NWFlOGEwYjY1ZDcwNDE1YTYxOTkxNWU4YzVkYWQ0MCBweTNrCis2MTQxMCA3MDI2NTdlZmFiOWJlOTEzOTNkOWNlYjRjOTI3MDYzNjBkOTU5NGM2IHB5M2sKKzYxNDExIGFlMjFhOGQ3MDMwMjZlMTgyMjIzMGM0NmVmYjZkMWFmNmYxNTY1NGYgcHkzaworNjE0MTIgZDBjNjc3ZGRkNmI4OWMwMTRkNjVmOTE3NDg3MjA1N2Y4YjI2OTZiZCBweTNrCis2MTQxMyAyZTBlMTQwMjk1OWQzZGU3MDdjNTFmOWVlMTI2MWIwNDIxNDdmYWE0IGxlZ2FjeS10cnVuaworNjE0MTQgMzlmYjJjNzg4NDFlYTI1ODI0YmIxYWIwNjk2YTJhOTdkYjViOWEwMSBsZWdhY3ktdHJ1bmsKKzYxNDI2IDM3OTczMTI1YjJjMGNjMGFmOTU3OGZiZDNiNTYzYjgyNzU0MjVhNmQgcHkzaworNjE0MjcgZDcwZmFiOTdlYmI1ZWE5NzMxMDc1ZTM5N2I5MTgzMWIzMTQ1MGU0ZiBweTNrCis2MTQzMCAxZjBlN2UyZGJlMTVjYmFlOWU1NjQ1YzYxMzRmY2U4MjYyYmYzYzJkIHJlbGVhc2UyNS1tYWludAorNjE0MzEgNzlkZWE2NTMzMmY4NmYzN2Y5YzY1M2RlMjQwYzE4ZWVmOTZhZmVkNCBsZWdhY3ktdHJ1bmsKKzYxNDMzIDJmZjNlNDMyMTdiN2U1NDRhMzllNTQ1ODNlNTBlZmQ5NjQ3NWExOWIgbGVnYWN5LXRydW5rCis2MTQzNCA0ZDI5MTI3ZjNmYTBkN2JjYTcyOWNkYzUwMWQ2MGQyMjA5MjY3MThjIGxlZ2FjeS10cnVuaworNjE0MzUgMTY3MzJkYjAwODIyZWE5ZGFlMTdlMWE0YTMzY2ViOTM0ZTdmM2ExZCBsZWdhY3ktdHJ1bmsKKzYxNDM2IGM0NDAyZWM2MGMzYTRhMTUyZWU2MjVlN2QxN2MyNWY2ZDM1NWM1OWMgbGVnYWN5LXRydW5rCis2MTQzOCA0ZDM5ZDRhNmE5ZGJhNWE4ZDg5ZmYxY2M1ZWI1ZGYzZjQzZjg3YTY4IGxlZ2FjeS10cnVuaworNjE0MzkgMjJhNGExMTFkNTk4YWUxM2JhNzBmYjcyMTMyYjAwMmM1MjNkOGFkNyBsZWdhY3ktdHJ1bmsKKzYxNDQwIDQ4MjQ3YTRiMzhlZGYwOTczZDE3YTU2NDU0NGVlYTBjN2M5MjIyYjQgcHkzaworNjE0NDIgNjJlZjBlYTAzNGY0ZTk2OTA3OWUxNjRjODA1OGYyNTE2ZDA5NzdlYSBsZWdhY3ktdHJ1bmsKKzYxNDQzIGJiNTQzYTgwOWZlMjRjOGM1MjUxZWIyNThiZjJlOWQ2MGY4NTBmMTUgcHkzaworNjE0NDQgZjExYzAwMjQ2ZmI1MjVkMTdjMzRmMjZlNmE0ZmI2Y2I2NWM2NDMyZSBsZWdhY3ktdHJ1bmsKKzYxNDQ1IGFjYmY5Y2Y1OTRmOGJkODUyNjRkNmE0NGY1ZWZjNDY4NjY0YWEwZDYgcHkzaworNjE0NDYgMzZmM2M2YmYyYzk3YmZhZmVkNjk4MWFmMjMyOWNiNDMxYTE1NzRhMyBweTNrCis2MTQ0NyAwZGI3ZmExNGM3OTQ4YmYxNDM2OGY2NWMwZGRmZjY4YjNkM2UzMDYxIHB5M2sKKzYxNDQ4IGNiMzYwZmM4ODkxMjI3NzNlM2JiMjNlNDc2ODgzMGUyMjZmZGYwZjcgcHkzaworNjE0NDkgNzEwNDc4YTE5NzdhY2ZjYzQ1YzM5ZTg2NjMzZGZiYjcyMDdlNjFhOSBsZWdhY3ktdHJ1bmsKKzYxNDUwIDgwMThmNTA2NTY2MWJhYTMyYTA0Y2QyYjg2MjdjMzlkNTgxZjA3YzYgbGVnYWN5LXRydW5rCis2MTQ1MyA3ZThjZWIzOTQ0N2VjYmJhNjZjMGVlZDc2MTg4YzE5ZjExOGRmNTlhIGxlZ2FjeS10cnVuaworNjE0NTQgYjVjYjdhNjc4ZjM4OTFmYzQ5NjdlYWE3NTMyYTg4NzA5OGNjM2EzNyBsZWdhY3ktdHJ1bmsKKzYxNDU1IGRlNmIyODM0YjhhZjk5MGQxMWEwZDczM2M1NzcyNDg5ODU3NjVmNjYgcHkzaworNjE0NTcgNDMxODI1ZWFjNGFlMzczNjNlNGU5ZmQwNGE2NzBkMjg5NTNmYjViNCBweTNrCis2MTQ1OCBkMzNjYWRiNTk1ZjY1ZGRhZjhiMDNhZjllMGU2YjdjNDkzNDNmNmE4IGxlZ2FjeS10cnVuaworNjE0NTkgNmE3ZmE4NDIxOTAyYTk1NGRlYzc3OWZlOWE3ZjRhNDYxOGIxYTk0MiBweTNrCis2MTQ2MCAyYzI2MGJlMTI0MmQ5YWZkMjczMTg0N2Q0NzJlMzdmNWViNDg4NjY2IHB5M2sKKzYxNDYxIDM0ZjRkNDdlYzQzYTRmMzZjMWI3ZDA3OGM0MTg2ZWRhYjQ4MDQzYmYgcHkzaworNjE0NjIgOWQ5YTM4YjhlYjFiMTFhMDI4MjVlYjA0NTkwYzlmMjVlMWE4ZDlmOSBweTNrCis2MTQ2MyBhMjAwYzM4N2U4YjI2NTEzNWRlMTZiNmQ5ZTk3ZjY4Y2U0NWI4YTMwIHB5M2sKKzYxNDY0IDE2YjQ0NzY0OTQ0ZWI4YTNlYTgyZGM2M2Q5MDhlMzY5OWE5NjZmNGEgcHkzaworNjE0NjUgNmMzOTNkY2Q0NWM0OGYwNzA3MzJiMWE4ZDhlOGJmZjhiYWE0OWVhOSBsZWdhY3ktdHJ1bmsKKzYxNDY3IDMyMjY5M2JmMTBjYWM2Y2QzYzA4N2UwMDFlNmE5NGMxMDIyZTQxMWQgcHkzaworNjE0NjggOTczYTIzY2Y2ZjBiN2EwOTU5ZWQ2YWI2MmNlNzliMGRlMjdiMTBlOCBsZWdhY3ktdHJ1bmsKKzYxNDcxIDdmMTNkNjkwNGUxNGE0OTRhZWVjODg5OWRhYmQ3OGMyNGVjOWQ0Y2QgbGVnYWN5LXRydW5rCis2MTQ3MiA4YTNmYTg2YzMwYTZlMmM3MmQ1YzdiYmZjMjM4YTk1ZWJmM2Y2MjJkIGxlZ2FjeS10cnVuaworNjE0NzMgMzc0NWZkYjk5MzJmMDdjNDg0ZTlmMzE1NTdiYjI4YjZhZmM1MjliMSBsZWdhY3ktdHJ1bmsKKzYxNDc0IDhkZWZhMWQ1ZjA2NmQ5MzAxOGQ4YjdjN2Q5ZjU3ZGUwZDRjMzc2ZTUgbGVnYWN5LXRydW5rCis2MTQ3NSBmZjBhYjdiMjhmNDkxN2NkODYzNzQwNzRkMmVmNDlhOTgxNWIxMmVjIGxlZ2FjeS10cnVuaworNjE0NzYgZTMxZDMxNzgxYTc1M2UwZGNhNDFkMjQ2Njk3MjllMzhlZjkxM2NjNCBweTNrCis2MTQ3OCA3OWZkYzg4ZmY5ZWNkZGU1Zjk3MjRhYjBlOWE4YzYyNDdmYTdiM2FhIGxlZ2FjeS10cnVuaworNjE0ODAgNGRhYmQ5MDcxODdlYTczOTFhNTRiNTMxZGE3MmY0MzQ2ZGQyZTE5NSBsZWdhY3ktdHJ1bmsKKzYxNDgxIDk2NmZmMTY4YjU2Njk2YzEwNWMzMDQ0ZTY2MmQxN2FhZjM3ODkwY2MgcmVsZWFzZTI1LW1haW50Cis2MTQ4MiA3YzQ4NTRmZmNkY2Q4OGNjNTcyYmVkZDgxOTRmZjVkMGZjNjA3MDBlIHB5M2sKKzYxNDgzIGMwZjE2NWUxZGJjMDVkY2U1MzM3ODMwZmE0MzNlOWRhMGI0NTgzZjIgbGVnYWN5LXRydW5rCis2MTQ4NCBhN2JiMDA0ZTdmMDZhOTNjZDg4NTczYzJjNzhiZjQ3ZjYwNzY2Yzk5IGxlZ2FjeS10cnVuaworNjE0ODUgM2RlYjcwZTQxODJhMDdhMmE3OTI5ODA1YjIxNjExNmFmY2MzZmU5YyByZWxlYXNlMjUtbWFpbnQKKzYxNDg2IDI3ZTdkYzJlNjI5MDVlOTIyOGY5ZTBhYjFiNjllNGFiMjUyZjdiOGIgbGVnYWN5LXRydW5rCis2MTQ4NyBhYTMzZmI5MGVhYTUyYTliOWJhNzllYzBhZTI3NmUxOTBhMmY5ZTQ3IHB5M2sKKzYxNDg4IDA0NDg3YWQzZDFiZWY0MTUzNTBmZDNjY2E4Y2I0ZGY2ZDc0OTU2OWYgbGVnYWN5LXRydW5rCis2MTQ4OSAzYmIwZjFhMTkzOWQ5Mzg3OGI0ZDY0OWJlYWU4ZTcxZWQ1OTE5ZDFkIGxlZ2FjeS10cnVuaworNjE0OTAgYjM1OTQ4MGNhODg2NDYwZWNmZWY4NTE2MDg5MTlhZjVhMGEzMzJiMCBweTNrCis2MTQ5MSA1YzBiNWNhYmVlYzk2NmQ3ZmVjODM2NDI5OWUxYWI4MjcyOTZkMTMxIGxlZ2FjeS10cnVuaworNjE0OTIgZWRjYjM1NDIxNzZhNTNkMTQ4MmVmYzVkMmQ4NDliNTU5ZWQ5M2IxNyBsZWdhY3ktdHJ1bmsKKzYxNDkzIDEzNzI5YzcwYzhkOGMyOTQ5OTZmMDc5ODk5MWE0YWRkOWRlNjZiMDIgcHkzaworNjE0OTQgMDQwNTAzNzNkNzk5ZGMwZDUzOTMwYzY5MTU4NWZjMjgyZTA1NzQ4YyBweTNrCis2MTQ5NSAyNTQ2MzEzYThiMjdhZDRmYWM4YWM5MmYyZjJiMzhjOWM4MDFiYTA1IGxlZ2FjeS10cnVuaworNjE0OTYgYzUyNDEwNjlmZmZkYWE5ZTdmMTM1ZmNmYTRiYzFhZjY4MDIyNmRkMCBsZWdhY3ktdHJ1bmsKKzYxNDk4IDUyNjgyYmQ3MzhhNzVjZjRjYjcxMmU2YjE4YjQzY2YzMjI5YmFjYWYgbGVnYWN5LXRydW5rCis2MTUwMyBlMjI3ZWQyY2E5ZDE1YWJiYjYxMzMxNDFiMzkxYTAyNTRiYTM5ZjJhIGxlZ2FjeS10cnVuaworNjE1MDQgZDRiYmY5YjQ3MTBmNDdkOGY3YzZjMGZkMDY5M2IwMzI0Yjk0MmY0MCBsZWdhY3ktdHJ1bmsKKzYxNTA3IDZmYzZhODA2Nzg0Zjk1ZjA2MGZlZWVmNDRiZjUzNWI2YjA0OTYyNmMgbGVnYWN5LXRydW5rCis2MTUwOCA4NjczNjQwMWQzOTQ0NDdhY2FmZTljNDU2NjQ0ZDQwMmM2MzdlOGVlIHB5M2sKKzYxNTA5IDk3MzYxZDkxN2QyMmQ0MDFhMzZjZTg2ZGZmNmFkMDliZjJlZGEyMzQgbGVnYWN5LXRydW5rCis2MTUxMCA0NjM0MjQzMTc5NTUwYWY1NTgyZGE0MGMzN2EzZDgzZWRmYTcyMDE1IGxlZ2FjeS10cnVuaworNjE1MTAgMTE3YmJkNDRhZGFlNjQ2YWViNjU0Y2NlZGJjOWMzYWU2MjY2NWNjMiByZWxlYXNlMjUtbWFpbnQKKzYxNTE1IDhmMDBhMDk0OGYwMGUyZTU3ZTc5MjA2NWFiMTczNmFkYjVhYjM1NDEgbGVnYWN5LXRydW5rCis2MTUxNiA2YzE3ZGFjNzA1NzE3Y2ZjZDQyNDBhMzg3MTNhN2Y4ZjQ3ZWY1NmVlIGxlZ2FjeS10cnVuaworNjE1MTcgOTYzOGQyZWEyZjU3YmFhMzY0NzVhODU4MjNkN2Q3MzAwNjNmNWFlOSBsZWdhY3ktdHJ1bmsKKzYxNTE4IDNiMzliN2JiMmMwN2MyNjhmOWE3MTg4NDhiMWU3ZTYzNTg1OGEyYmUgbGVnYWN5LXRydW5rCis2MTUxOSBlMTQ4Mjg1YmQ1MTE4Mzg5MGQxNTk1NmZhMzBhOTAyYzA5YzE5ZmMzIHB5M2sKKzYxNTIwIDk2NjAxZjhmMzM5MTQ0NWQ5MmIyYTU3NzJiMjYwMTY1NTkxOTUwYWYgbGVnYWN5LXRydW5rCis2MTUyMSAzMGM0ZTFjYTg0MjEyMzY2OTg5ZGY4MzNhZTIxNzcwMjVmMTc0NzdhIHB5M2sKKzYxNTIyIDliOGM0YjUxMDdmMGY1NWNiNzNjMjA3NWY2YTNjMTJmYTEyY2YyMmUgcHkzaworNjE1MjMgMjExMzllYTU5YjZiYTI1NjVmYjZiOTQ3NjU4ODAzY2I4MjVkMWUwNSBsZWdhY3ktdHJ1bmsKKzYxNTI0IDc4Y2E4YzI1NjFkYjhlNzk2NjhkMTU3NWRmOGYxZTdmOWIwODMxNWQgbGVnYWN5LXRydW5rCis2MTUyNSA2ZjBlZGEzZTkyYjM2MWIyMTg3N2U2NjQwNWI1NWY2OGIwZDdkNjY2IGxlZ2FjeS10cnVuaworNjE1MjYgNTgxYzNlNWIzNDliMTIwZDI5NjUwYWRkNjZkMTQ4ZGQwZDhlYWE5OSBsZWdhY3ktdHJ1bmsKKzYxNTI3IDkyMzM4MGFjZDFjZGQ4MDU1Yzk4YmM2NzczNWQwZDRiOTg2ODhlZTQgbGVnYWN5LXRydW5rCis2MTUyOCBjNDI0MDk5YjRjZTRiNGRlNGJhYWE4M2Y2MDBmMTJjMDRkY2ZhZDhjIGxlZ2FjeS10cnVuaworNjE1MjkgNTA3NzFhM2ZhZDJjYWFhODhmOTQwZWEzOWVmYjAwODI0YzYwYjhhMiBsZWdhY3ktdHJ1bmsKKzYxNTMwIGYzMDJiZWY4YTAwNGFhZWYxMjcxMzNiMTQyNGM1ZDU1ODIwNWZkMzEgcHkzaworNjE1MzEgMWNkOTMwYjgzNWE2MzkyOGQxNzE4MWJmZTczMThmNmI2YmMxNDgxNCBweTNrCis2MTUzMiBlYTkxOTE0YmNiOTc3NGY1ODU0OWJkYTkwMzViNWY5NzQyY2Y4YjZlIGxlZ2FjeS10cnVuaworNjE1MzMgYTYyOGVmODJlYjdlMGM5ZTM5NWM1YzhiMDQ2OWZjN2VlNzdkOTA4MSBweTNrCis2MTUzNSBlMGU4YmVmMGQ1ZWNjYjI3MjRlMTQ3Mzk5NjdmM2VlZTA3YjhlYjZhIHB5M2sKKzYxNTM4IGNjNzU4ZThkZGM5ZDc5NDA1MmFhMGFkMDg2NTc5YTIxYzQ3NzlhYmMgbGVnYWN5LXRydW5rCis2MTUzOSA5NGE2MDgyYTc3MGZhMzBmY2Y4NWQwYmQyMWJkNzI0OTk1ZjEzODZhIGxlZ2FjeS10cnVuaworNjE1NDAgM2E3MmNiY2MxYmI4MDZjMmI2OWM2YzVhZjI1NzVmZDQxNjg5YzJiNyBsZWdhY3ktdHJ1bmsKKzYxNTQyIGViNmQwMDc0NTNiYzJjMjc5ZDA5NjE2MTNlMjA3OGRmZWEzNTAyMGMgcmVsZWFzZTI1LW1haW50Cis2MTU0NCBkYzRkNjhhZTlkM2RiZjA0MTU5NzY4N2RiZmQxNmIwNDQzM2Q1OTcyIHJlbGVhc2UyNS1tYWludAorNjE1NTMgMGQ3NjU5YzJiOTk4NTI3NGI2NjMxYzZhMWIwNzI2NWJmNmY1NjczMCBweTNrCis2MTU1NiA1MTU2MzM2MTU3MzVhZjA2YWI4MzZmOWQxYWQ2Nzg0NWIxNDcxYjRiIGxlZ2FjeS10cnVuaworNjE1NTcgYmNlNjlkYjcyZTAwNDNjNTgxMmI3OTBhNzU0MzhhNWM2NmU4NTZjOSBweTNrCis2MTU1OCA4M2M1NWFjZmI5NTk4OWFlODkxYjdmYzA3N2MwMzk0MDk2OGRlMzUzIHB5M2sKKzYxNTU5IDFiYjY3ZTUwM2RmZmNhNDM2NGRmNjRiNTNiZmNlNjVhMmJmYjdjZmMgbGVnYWN5LXRydW5rCis2MTU2MCAwMDVkYjkzNGVlMjVlZjk5MGJkYWI1ZWE1NmZkZWQ1YjZjZWZlZGZjIGxlZ2FjeS10cnVuaworNjE1NjEgMGU3OTc5M2ZmZTg3MDVlMWQ1ZTgxMTUwZGZmMWU0ZWI4NWI4NjYxOSBweTNrCis2MTU2MiAxNmM1NzZkZWU5ZDNiYWMxODRiNDE0OTM2ZmRjZGRhZWExMjZkMTUwIHB5M2sKKzYxNTYzIDJmNjQwZjBmMDY5NzZiMmVhZDkwMzkzM2Y2NjBhMjAzMTBiMjExODAgbGVnYWN5LXRydW5rCis2MTU2NCBlZTBkZmNjZjhjZWU2ZWNlODg3YmQ1MzkyNjc4Nzg3MjhiNjU5YWMyIGxlZ2FjeS10cnVuaworNjE1NjUgYjBkMDE5NjliYmM4N2RlNDVkYzE3Yzc3NmY1YjE4YWQ2NjEyNWZmOCBsZWdhY3ktdHJ1bmsKKzYxNTY2IGYzYmUxMjIyMGZkN2UwMWJiYjJhODA2NWNiZjFhZDZmNGM2ZTgwNjAgcHkzaworNjE1NjcgZmE3MGU2YWU4MzFhZTFkZWFkMWI5YWRiYWZlMGZlNWY1NjJhMWU2MSBweTNrCis2MTU2OCAwNWFjM2MxOWI3YTgwMzY0MzI1NmFhYWM5NzYyMWFjYjA1ZmEzOGQ1IHB5M2sKKzYxNTcwIDg2MGUyM2E2MWU1NTEwZmJjMzNlMzhhZjNkNTY1MTEwZGM4N2I3MmEgbGVnYWN5LXRydW5rCis2MTU3MSAyODkzYzAxMjlmZTVjMzYwMmE2NTM5MzY4ZjNhY2RhNGQ3M2IxOGFlIGxlZ2FjeS10cnVuaworNjE1NzIgYzhjNTQ3YzUxZjlhNmYwYWU1NTAzZjA5NWUwYjkxZDBiZGM3N2E0YyBweTNrCis2MTU3MyA1MWUyNDUxMmUzMDUyODU1NmMyYmI3MWE0YzY4MDI2MTA4Nzk3NzJiIHB5M2sKKzYxNTc1IDIzODVlMTZhY2I0Mjc5ZDUxZmM3MWFjMDkxZjFiYTI2MDlhZmM2YmMgbGVnYWN5LXRydW5rCis2MTU3NiA5NmJkOTcyMmUzMWQzMDA5MjVhNmE2MzFlZmNkY2U0YmE4Nzc2MzczIGxlZ2FjeS10cnVuaworNjE1NzcgNzI3Zjc0M2NmNjMwYjFkMTllMGUyMjZhMTg3MjY1MDJkZjczOTM4ZiBsZWdhY3ktdHJ1bmsKKzYxNTc4IGY3YTZmMzM5NDMxMDY3NDAyMjE0ODdmYWM4YjA2YzhkOTM0YWQxMzAgcHkzaworNjE1NzkgZjA5NmVmOWM0MTE0Zjc1N2ZmZTNhNzAyZjkyZTY4NWNlYjQzOWVjZCBweTNrCis2MTU4MCBkODdkN2ZjMmMyYmYzM2FkNTAyZWZlMjA5ZjdjM2FiOTI4NGVjMmEwIGxlZ2FjeS10cnVuaworNjE1ODEgMTlkNGI2OTdmYmY5YWQ1M2MwMDQ1NjJjMzdiN2FmOGM1OTdjZGU5ZiBsZWdhY3ktdHJ1bmsKKzYxNTgyIDczM2MzZWUxOTg5OTY2N2Q1ZjY4Y2RkMWNiNzllOTFlYjE4MDI3MTcgbGVnYWN5LXRydW5rCis2MTU4NSBjNzdlMzExOWUyNjc1ZTA4NjEyYjk2OGVkZWY2NzgwODg4NjY0NGRlIGxlZ2FjeS10cnVuaworNjE1ODYgMWRmYjlhZTc4YTM3MjdjZjgzZTQ1MGQ2YmYyOGJmZGQxNjE4ODljYSBsZWdhY3ktdHJ1bmsKKzYxNTg3IDRjYTcxMTlkMTcwMDVkZjYxNTExYTVhMDQ0ZTE2ZDhhOGM0NjQzOTkgbGVnYWN5LXRydW5rCis2MTU4OCBiODRlMGUyM2NhYmQ4OTA0NzVhNTc4MTYxMGU4NzYzY2JmMTRmYTQxIHB5M2sKKzYxNTkwIDdmNzc3MDcxOWU4NDg2OTljOTE0MTg0NjJhMmE4NTMwMDE2NjA2NjAgbGVnYWN5LXRydW5rCis2MTU5MSBkNGUxZGI4Nzk3ZjZkYzgwY2FmYzEzZWQ4ZWFmNWQzZmEyZDJlNjNiIGxlZ2FjeS10cnVuaworNjE1OTIgODE5MTE2OTUwMDk5MDg3YmVhZmFlYjhkYzIzOGM4MDNlNzc4OTVkZSBweTNrCis2MTU5MyBkNWNmZjdmOWExNDJiZTcyMDYyNGNhYmU4NjkwMDQzMTRhMjQ2MWEzIGxlZ2FjeS10cnVuaworNjE1OTUgMmEwMTA3NWNkOTAyMTQyNzI3YWU2NWE1ZjU4Yzk4ZDUwODVlMDkzMCBsZWdhY3ktdHJ1bmsKKzYxNTk2IDMwMjYyNWZhNmEyYTY5YWRjOGQ3OTI0MjllZDhlODg0NjdmODBkMmUgbGVnYWN5LXRydW5rCis2MTU5NyA0NTk3MGIwNGNlODNlMmQ1MzQzNzQyOGM2ZWIwNDJhYjY0MjM5OTk0IGxlZ2FjeS10cnVuaworNjE2MDAgOTYzZDY3ZGYzNzIzN2U1ZGM4YTExNDZmNWJiY2ViNmNiY2M3ZmM2NyBweTNrCis2MTYwMiBhOTg1NWRiNDBmZmIzM2Y0YWIwYjRjOTM4NjM4ZGRkYjVmYmNlMmU1IGxlZ2FjeS10cnVuaworNjE2MDMgMWRhMjQ5OTY4M2I0M2MzZTBkMTc2ZTk2MTAyYmE3Yjc4ZTc3Nzg1MyBweTNrCis2MTYwNCAzYjMyM2ZmOTMwNGM1ZjA1NzYyMmJmZmNjYWJjOWU0ZWI2OWI4ZmVmIHB5M2sKKzYxNjA1IDQyMmI0OWRmZDE1YjUzYzNlNzU1MGE1YmM1ZTM1ZTRiYjU0ZTQ1YjYgbGVnYWN5LXRydW5rCis2MTYwNiBlMGM5YjllZjA0NjYwZjlmYjgwZWMwNDU2OGIxYzQzZDNmMjJkNWM0IGxlZ2FjeS10cnVuaworNjE2MDcgNDI4NDcxOGZiNjMxZmFkZDMyMjI2ZjQ1OWZjZTk0OTY0ZjA5ZjlkNCBweTNrCis2MTYxMyBhZDFkNjA0YmM4ZWQzNTMwMTRiYjJlNGQ0MzJiOGQ5YzU0YTcwNWIyIGxlZ2FjeS10cnVuaworNjE2MTQgYWRiYzkzNGJmMWZkNTEwMjc1NTczMjg0MGI3OGM3NjU3NzAwODUzNCBsZWdhY3ktdHJ1bmsKKzYxNjE1IDIxNDc3YjFiYTU4MTdjNWM4ZTJiOGE5ZGY3MzVkNzk4NjYyYjRiZDMgbGVnYWN5LXRydW5rCis2MTYxNiA1Y2MwNGEyMDQ3NjZmMmU3ZTU0MzBhMjI0NjQxMGI4YmI3OGJiNGFiIGxlZ2FjeS10cnVuaworNjE2MTggODU1YzQyOTBkZmQ3YWEzNGRiMDllM2ZmZGJiZGM3ODJlMWQ0ZjAzNSBsZWdhY3ktdHJ1bmsKKzYxNjIxIDc0YWI4YmQ5NmM1ZGViM2EyZTBmMDRiMmU1ZWM0M2ZmZWRhN2YyNjkgbGVnYWN5LXRydW5rCis2MTYyMiBiMGI2MDhlNTc5Y2Q1YWUzNjBkNzBhMWNlYTUyNDNhNjA3MjYwMTA0IGxlZ2FjeS10cnVuaworNjE2MjMgZWJjMTMwYTRhMjczODI4ZjY2YWQ2ZmJjNzM2NzA0YmYxYjY0MTU3YSBsZWdhY3ktdHJ1bmsKKzYxNjI0IDkzZjk3MDdiNjY0Y2U0YWNkOTQ2OWIxODBiNmI1MGM3NjM4NmNiNjIgcHkzaworNjE2MjUgMzMwZjU3NGM1OGY3YzNkYmVkNWVkNGQwMzdjYjZmNTNhNmIwYTM5NCBsZWdhY3ktdHJ1bmsKKzYxNjI3IDg4MTdhOGUxMmE1NTllY2E4NzMyMGNmZjExMjAxZmRjMDZlNGYwY2UgbGVnYWN5LXRydW5rCis2MTYzMSAzYmYxOWMzMWM5NTZmMTQxMjRkM2FjZjViZjJkYzFhYmRmY2IyYjZmIGxlZ2FjeS10cnVuaworNjE2MzIgZGM1YmUwYjNjM2JlN2RhNDI2NDZkNDYzMmU2OTgwMGQ3ZjhhOTFhNyBsZWdhY3ktdHJ1bmsKKzYxNjMzIGU2NjVhMGIxNmRhMGU4N2IwYzNhMDM2YjNiNTQ5MjZiODM0YzBlOWYgbGVnYWN5LXRydW5rCis2MTYzNCAyNDI3NTU1MmM5NzMxNzE0MjE5ZTEzNWVmMmVmODU5NDUyZGE2NDcyIGxlZ2FjeS10cnVuaworNjE2MzkgNDQwYjA4YTMyZTBiM2Q1MDRmNTMyNWVjYmJlMGJlNTIyYjBiZGUyYyBsZWdhY3ktdHJ1bmsKKzYxNjQzIDE2NTdmMGFjY2E3ODIwMjEwNWQ3NzM2MDIwNzg1M2RmNWNhMDVmMjAgcHkzaworNjE2NDQgYWUzYWQwNjU3N2M3ZDdhNWQwZmRjZTY5YzgyNzRmYTZjN2Q1NmIxNyBsZWdhY3ktdHJ1bmsKKzYxNjQ2IDJkYTBiZjJlMmY1Y2MxZjNhYzQ2OTg3NGE2Y2RjYzk3ZjM3MjZlMDMgbGVnYWN5LXRydW5rCis2MTY0NyA2NWYzNjEwNGZjYWQ3MmNhODkyMDRlNmVjNDMyMTZiYjhiMWM1NTRmIGxlZ2FjeS10cnVuaworNjE2NDggMzk4OWZjNjFlNzg5Yzg5NDUzNjhkMzYwYWY1ZWY4MjFmYTgwNTZiNCBweTNrCis2MTY0OSAzYWE1ZWIxODI5MTMxNTAxOTA3ZjMwMDVkYmI2YzgxYzFhYzE4MWEwIGxlZ2FjeS10cnVuaworNjE2NTAgMjkzYzYxMDZmYmUzNDk3OTgyYzk1NGRjNjBlMjUzZDE3MjIyMGE3NCBsZWdhY3ktdHJ1bmsKKzYxNjUxIDY1MDllZjhiZmU5YzM2M2RjN2ZiNTQ3NjY3ZTllZjY2NDNkNjE4YWYgbGVnYWN5LXRydW5rCis2MTY1MiBjYmFkMWY1Y2FiYjE1MTFkY2ExNjA0NWViN2FiNTA2NGUzNTNiZTNiIGxlZ2FjeS10cnVuaworNjE2NTMgZTg2MjgyMTk5NDY1MTk3YjFhMTY0MTE3MWRjNGE5M2IwMGEwZjdkOCBweTNrCis2MTY1NSBmYzkzYmY1ZmVjZTFkNjQyYmI4YmRlNThjNTM5ZGU0ZjFjOGZjNjhlIHB5M2sKKzYxNjU2IDhiMGI4OTAyNWQ5ODI4YjNhODBiODIyMWExYjRkZGJkNzEzNjVjMGQgbGVnYWN5LXRydW5rCis2MTY1NyA1YmQyYmRiMzllOWNkZWY1ZjM0OTBkZTIyYWQwNDdiZWQ3OWE5OWM2IGxlZ2FjeS10cnVuaworNjE2NTggZDAwYTlmNzVkMjIzZDkzNGUwY2VjYjZjYWMyZjNmOWEzZWZlYjJiZiBsZWdhY3ktdHJ1bmsKKzYxNjU5IDBmZGIzNjE2Mzg0MWQ4YjY5NmE5OTAyYjBkYjhjMDZlOWMyOGJlMDkgcHkzaworNjE2NjAgZTAyMDNjNjU4Yjg2NTAxZDlmNTEyYWEwYTY4OWMyNWE1ZmRmOGZkYSBweTNrCis2MTY2MSA5YTQ3NzA5YTI4Yjc5ZjRiYzZjMTUzZDg4MjRkYjI5ZTBjMjMyNTM4IHB5M2sKKzYxNjYyIGZjMjEwNjczZWVmMDE1NDQ0Mjg2MmI4OTQ1NTc0OGMwNTc4M2ZlYzAgcHkzaworNjE2NjMgNjBkYjlhNjc4NTUxZDE3NTA3MGIxZGYxN2Y4YjVlOGZmNDdlMTBkMCBsZWdhY3ktdHJ1bmsKKzYxNjY1IDZhM2VmM2M5MDk1YzA1OGY3YWRiZmQwZjBiNGViYzkwMTNiMzg2NmUgbGVnYWN5LXRydW5rCis2MTY2NiAxMzJjZjNhNzkxMjYxZjRjMmI1MDJhYjhmODVmZDM5OTgyNjQ5NjY3IHB5M2sKKzYxNjY3IDA2ZTY0MWNiM2EyMDA3M2ZhOTA2YmIxMzgxY2JhYjc0MzQzZGI1ZTEgbGVnYWN5LXRydW5rCis2MTY2OCAzOWE0ZjQzOTNlZjE5ODI0MDQzNjk1MjRmYzgzZDRlNjRlN2Q1MzVmIHB5M2sKKzYxNjY5IDhlNWVjNjliNzZhNzRjNTBkYzEyYjUxMjE3NjM2MjMxZmZlOGYwNDIgcHkzaworNjE2NzAgMzZlMjk2ZTY2ZDIxNmFjOTdjZThhOGM3MzQ0YTVmMjM4YjhhNzYxNyBweTNrCis2MTY3MSAxMzM0OThiOTFmMWM0MDNjZjU2NjFmZDg5N2Y4NWQ5NWNmZjExZmRlIHB5M2sKKzYxNjcyIGM5NTY2M2M2ODRjYWY5YTFlNDIxZjk0NWFiYTU5NTk0NDEyYzMwOTEgbGVnYWN5LXRydW5rCis2MTY3NCBkOWVjMDY4YjA4ZjMwOTQ3ZTg5NWVjZmNhMzlmZWJmMjExMzA2ZTZmIGxlZ2FjeS10cnVuaworNjE2NzUgN2QyZTFhYzgzNGI4NWY3OGM5OTU3ZDU2MzBkYjA5NmI3OTNmZmQzNCByZWxlYXNlMjUtbWFpbnQKKzYxNjc2IGQxNGE5ZTVmODBhZThmYzIzNDlhNTM0MWZlZmY0MDJjYTA3NzRlZTMgbGVnYWN5LXRydW5rCis2MTY3NyAxYzdjMDhkMjlmZWVlNWQ3MWExNTg1MWZkZDllYjkxMWUyYWZlZmEzIGxlZ2FjeS10cnVuaworNjE2NzggZDUxMWUzMjE3NDNhOTExYTViOTEyNDliOTY0NTMxZmI1MGZiZTg1ZiBsZWdhY3ktdHJ1bmsKKzYxNjgwIDI5MTMxODkyNjExYzU1Y2Q0NGUxNWU4NzY4NmUyNDY3NzJhMTI3MDAgcHkzaworNjE2ODEgN2NhNTdlMjJhNTIwNzg5NDBkODhmMjcxNWRhODNmMWM5YWJlNTRiMCBsZWdhY3ktdHJ1bmsKKzYxNjgyIDkxYWM4MDQ5ZTcwOTM0MjJlYjgxYWI3MTUxODk4YjEwZDZjNmViYjkgcHkzaworNjE2ODMgZTgzNjBiNWQ1YTEwNzQ4NDQ0YTE2Mjc1Njk5MmFhZGNmYTM5NGE4YyBsZWdhY3ktdHJ1bmsKKzYxNjg0IDY5NjIyNWI1ZDU1NTU5YWIxZDc2OTI3NjU4MDcxMTZjYjZiODA0YjUgbGVnYWN5LXRydW5rCis2MTY4NSBmM2Q4MzhkYWI0MGVkYmQ1OTY5YTEwZWUwZmZhODYwZjRlNTNiNGI1IHB5M2sKKzYxNjg2IDI4NzMzYWRhNGQwMzFkZTE4OTg3NzVlZmU4NzdiMGQzZmVjZTA2YmMgcHkzaworNjE2ODcgN2M2NjY3YmI4Zjg1MzQ3NGU1ZTc5MDE5MDU2ZDc3ODU5ZWNjZGU0YyBsZWdhY3ktdHJ1bmsKKzYxNjg4IGFhOWRhNGEzYzk3Y2UwNTZkN2I3M2M4NDdmMTc2ZGNjNzY5YmI4YWQgbGVnYWN5LXRydW5rCis2MTY5NiBjNDVhNDU2NjkwMTdiOTI1MGVmYzZmMzVhZGI1MTM2NDUxOTBjODgyIGxlZ2FjeS10cnVuaworNjE3MDAgOGY4YjAzYzJiYmZmMDE3MmM5NjU5Y2JjYWY4NmNkNTRiNmRhMjg5NiBsZWdhY3ktdHJ1bmsKKzYxNzA0IDk0NGQ4N2E5YmJkMGFjZGQ0ZDFhZjgyM2QyN2M2ZjY0Y2U3YWJmYjEgbGVnYWN5LXRydW5rCis2MTcwNSA4ZWYwNWFjZWVmMmI0YTllNzQ3MDZlYTE2ZTg0MjUzZTQwMDI4N2I2IGxlZ2FjeS10cnVuaworNjE3MDcgNzA0YTg2NGVjYjAxNGM1MDc2OWI1YTY3NzM4N2JhNDdmOWQ2ZGNiNSBsZWdhY3ktdHJ1bmsKKzYxNzA4IGFkYjVjYWIzMDFhNmVlNTVmYWU4NWZhYzk0MWE4YTA5YmFmMDRkYzUgbGVnYWN5LXRydW5rCis2MTcwOSA1NDRhNDZkZjAyMjJkYzkyNjk4NTNiOTMwZTA1NDVjMTg5NWMyY2E4IGxlZ2FjeS10cnVuaworNjE3MTAgZjBlNGQ5YjQ1ZTdmMzYzYTJhYTMyOWNkYjhkMWJiYWM4MmFiMjNlYyBweTNrCis2MTcxMSA3ZjAzNTU5MmQ2ZTFiZjUwYjQ1ZmRjMjdlMTJmODhmNGExYTAzN2Q5IGxlZ2FjeS10cnVuaworNjE3MTIgODVmYmQxZDI2NWEyOTUxMzliNDAzYzFlNjlmMzM5NWU2Mjg0NWM5NiBsZWdhY3ktdHJ1bmsKKzYxNzEzIDQ0MTUyN2JmYzc5Y2M3M2QwNWQxYzRiOTU3N2Y0MDNjYmVlNTRjYmEgcmVsZWFzZTI1LW1haW50Cis2MTcxNCA5OTM1NWJhYTc0OGRjZDRlNjE2M2I2MWFlNGQxNTdiMGQ2OTJhZjA1IGxlZ2FjeS10cnVuaworNjE3MTUgMjI3NTYxMmMxNmE5ZmMxNzM4ZDFjMGU0NGI4MTc4Yzg0MjM5MDJiMyBsZWdhY3ktdHJ1bmsKKzYxNzE2IGJmMDdiYWQxZDcyZjYzZmM4OTA1M2UwODhmMDczOGM3YWNkNDMyMGIgbGVnYWN5LXRydW5rCis2MTcxNyA3MmRjMTZlODAxNzkwZTIzZjE0YjAyMDU0NmQyZmQ2MjcxZDNkMGNlIHB5M2sKKzYxNzE4IGQ2NzkzZWNlMzI1NDRkZTY4MzIxNjIzYWEyZTZhOTMxYTEzOGFjNDMgbGVnYWN5LXRydW5rCis2MTcxOSBhMDI1MzcxODQ5OWUzYjZhYTVhZDk0NDZhZjhmZWI1YTdmNTRjYmMwIGxlZ2FjeS10cnVuaworNjE3MjAgMWY4YmE1ZThhMmZhOTNiZGJlNzA0NzhmN2EwNmVlMTFlODIwMjU0YiBsZWdhY3ktdHJ1bmsKKzYxNzIxIDJlM2Y4NmU3M2ZhMjc2MWU0ZjU2NzdhNzM0YjY5ZjcxZjc5NzhiMmMgbGVnYWN5LXRydW5rCis2MTcyMiA3MjhkYzEzMzI3YjJmYjk0Y2NiOTFjM2U2ODFiYjJhODMyYTE3ODA3IGxlZ2FjeS10cnVuaworNjE3MjQgZTQ3YzNjN2JiZGRjN2I3YmJmNzY3NDRmNjkwMGZkYWQ5ZTRhNDZiZCBsZWdhY3ktdHJ1bmsKKzYxNzI1IGE3Mzc2ZDE5MmE2ZDc4YWIyMDQ2MGVlZTE0YTM5OGViNTM4ZjI3NTggbGVnYWN5LXRydW5rCis2MTcyNiA3YWE1MmViOTA3NGY5ZDJhOTkzN2QzZGQ3MjA3NGY5MjdhYzNkN2E0IHB5M2sKKzYxNzI3IDhjMWZmOGU1NDczOTcxMWE1ZWVhYWY4MjIyYzc2ZTdkZGZkNWFjZGYgcHkzaworNjE3MjggMzc2YjVjYjhhMDE0MzU5OWZiYzM2MmU4ZTNkYzVkNDQ0YTZmOTAxNCBweTNrCis2MTcyOSA3ZjZiY2E3OGMzNjQ4NTc4OTQ1YjA2ODEzMzg3NDY3MmEzNmM3M2ZmIHB5M2sKKzYxNzMxIGNkZWJhMjBjY2Q2YTAxZDRlZjNkNmJlYTljOWE0NjlhNzA5OTI3YWUgbGVnYWN5LXRydW5rCis2MTczMiA3MjY0YzA1MWEzOWNiYjQ0MGYyNTgwZDRkODQwMzVhY2ZlMjViODRlIGxlZ2FjeS10cnVuaworNjE3MzMgNjFmNWM2NjNiNDlkOGJhZGU0N2ZiNDA2MDhmYzIwNzNkNTIwNDJlMyBsZWdhY3ktdHJ1bmsKKzYxNzM0IGE5OWNhMWU1NzVlZDk3NTgxYjQ3NWQ1MWI0ZDgyZDQ5ZGRjM2QwNmYgbGVnYWN5LXRydW5rCis2MTczNSAyNDA4MzMwNWQxYzcwNDY2MTVhOWM1YjVmYmFiMDBmOTE4NzlmYjlkIGxlZ2FjeS10cnVuaworNjE3MzcgMTFmYmM4YWZlMzA1ZmUzMzllYmFiM2NjMjRhNTIzMDJiZWY5NTVjYyBsZWdhY3ktdHJ1bmsKKzYxNzM5IDA0YzIxNDg1NjRlNDU5Y2ZkOWI0ODQzYzNmMzk1MTRlZjRkZjFkNzAgbGVnYWN5LXRydW5rCis2MTc0MSBlZWViNmI5NTJkMmY4OWVhZTQ2YmQzZjI2N2MxYWJkODIzYzJlNDlkIGxlZ2FjeS10cnVuaworNjE3NDMgZjk3Nzg1YzdkZTliNjIwMWUwY2IyZjk4ZjQ0MTAyMzNkNWVmNjBjZSBsZWdhY3ktdHJ1bmsKKzYxNzQ0IDIyNjdjYTE0ZDU0YmFhNjk0MGZiM2M5NjExODk1MDJjYTE0MzRkY2IgbGVnYWN5LXRydW5rCis2MTc0NyBiNDk3NTRlYTk0ZGI5MjZkMTU3ZTAwYTRlYzJjZjBjNDIzZTg0M2QxIHB5M2sKKzYxNzQ4IGIwYTQzYmQ1YzI4MTgyYmFmYzI2YTA3NTUzZTIzMmNlYTU0MjIwMDUgdHJ1bmstYnl0ZWFycmF5Cis2MTc0OSA3MDgzNGMwZTQ5MWJkOGJmMTRkOGI0YmNjYTE4NDE4ZDgxZDMxYmE1IHRydW5rLWJ5dGVhcnJheQorNjE3NTAgNDM1NjQzYjc4MGM3MTlhNzAyMWVjOGQ0Zjk5YzdjNjExNTc0YjEyZiB0cnVuay1ieXRlYXJyYXkKKzYxNzUyIGM2MzJmOWUxZWE1ZGJkNGE3ZjkxODYxMDk3NTUzNjcwNmM4ZjU0NjkgdHJ1bmstYnl0ZWFycmF5Cis2MTc1MyBkNGJhNWJkMTE1ODBhODc3OTBiNjEyZmI5YzYzNGVjMWI5NWE2ODM1IGxlZ2FjeS10cnVuaworNjE3NTQgZGZhMGEwMTFhMjQzNWE2MzcxNDRjOTVmZWQ5NjhiMDJmYThkY2Y0YiB0cnVuay1ieXRlYXJyYXkKKzYxNzU2IDY2NjcwMDg4OTRlMGRiMjZlMWNlOTI4MWU2M2FlMjRmMmEzZDRlYWQgdHJ1bmstYnl0ZWFycmF5Cis2MTc2MCAyNDhmOTI3YmE1N2ViMjYzYzBkZDZjOGM0OTkxZDM0ODczOGMyODIyIHRydW5rLWJ5dGVhcnJheQorNjE3NjEgNzUxZGU2MTZlMDgwMTdmYzBiMThkMWE2Y2Q1NzI2MzVkY2YzMmFkMCBsZWdhY3ktdHJ1bmsKKzYxNzYzIDAxMjJiNDZjZTRlMGJkZDRmNWE4NDRmMzNiNDUyMGY2NjQxZDg0MGEgdHJ1bmstYnl0ZWFycmF5Cis2MTc2NSBmMmFiNTBkMGZhOTA4ZWJlNzlhMTJlZGE4ZGRiMWVmMjg5MmYxNGUzIGxlZ2FjeS10cnVuaworNjE3NjYgMmU1YWIzNWNjYWYxYWRkYjIzY2E3NTkwM2E5ODA0MDM0OWQ2ZDZhOSBsZWdhY3ktdHJ1bmsKKzYxNzY3IGQ2ZjBlM2U1NTZhNDUwOWUzN2FkYjA3ZWUyYTI5YWFkMTE4NWUzZjQgbGVnYWN5LXRydW5rCis2MTc2OCBlNjdmNDIxYTIwYjBiMWJkYmVhNWQzYjYxZjZjNTUzY2ZiYzJiODE2IHRydW5rLWJ5dGVhcnJheQorNjE3NjkgMzFjZjM4YmRhYWMwY2IwM2U3NGM3ZTFiMWQ1ZWZkMmE2NjIzM2Y0NCBsZWdhY3ktdHJ1bmsKKzYxNzcwIDEwYjBkODFhMjE0NWRiZGUwYzRiMjRjODhjMzM4ZGMzNTUyZTUxYmIgcHkzaworNjE3NzEgOTU3Y2JhNzU1MzE1YjQ2NTE1MjQzMmMzNDdjMjdjYjk1ZmYwMWU3YiBweTNrCis2MTc3MiBmYjFkMzVjZmI4ZDJkZGE4MmZiNzQ5MmRhNzQ4OWFlNzIwYzU2NGFjIHRydW5rLWJ5dGVhcnJheQorNjE3NzMgZmE0MThjZGYzYmZlOWYwNDBlZWY5YmIyYmNkM2FkYWQ2Y2U4ZWNhOSBsZWdhY3ktdHJ1bmsKKzYxNzc0IDI5NmY5YmM0MmI5NjNlZmQxMzc4YjU3MmJlY2E4ZDljOGUwZGExODIgcHkzaworNjE3NzUgM2YwZTNmYjI3MmE2MjFlNmQzMmUxNTI3NGU4MjAxZTc0ZjU1MWY0MyB0cnVuay1ieXRlYXJyYXkKKzYxNzc2IGY0YzUwYTUxZDI0ZjBiZjMwMDEyNGFmZjhlMTFkYjNkMjYzZGNkMGEgbGVnYWN5LXRydW5rCis2MTc3NyA3MjJiZWY2ODM1Yjk0NGZmYTMwMTdmMTgwNTcwYzJmYjUyNGYzMjlhIGxlZ2FjeS10cnVuaworNjE3NzggYWY4ZmI1M2E1NGZkM2Q0NGEwODYyNzg0ZDViYWJkZGFkMzEyZmVmOSBsZWdhY3ktdHJ1bmsKKzYxNzc5IGE4ZjU0YjZhOGMxODU1ZDQ1ZjI0NWEwZTRlMDgyN2NhNmNmZGY0YjEgbGVnYWN5LXRydW5rCis2MTc4MCBjNjRjN2I3MjdjNjI1OGU0MzQwOTllZGRiOTNkYzAwZjgxNDEwYzBhIGxlZ2FjeS10cnVuaworNjE3ODEgN2RhNWI2ODk3MWE1YTlmMGZkNzhkZmQ0YTM3ODA2NDE3NzhlNGE3NCBsZWdhY3ktdHJ1bmsKKzYxNzgyIDk2MzRjMTdlOGZlNTYyMDUwOWMxZjFjNDgyNTRjOGNkZTA3MWQwMTYgbGVnYWN5LXRydW5rCis2MTc4MyBmMWVjYjNlOTc4ZGI0OWQ1N2E1YTgzMmFkNjUzZmQ2ZDQ0ZDU4NThkIGxlZ2FjeS10cnVuaworNjE3ODggNzU2M2Y0ZDJmMzZlYTQ2OGRiY2UzMjcyOGNlMjA2MjgzZDUxNTBmYyBsZWdhY3ktdHJ1bmsKKzYxNzkzIDg3MTBiYTdmYmEyYmVhN2Q0Y2ZiY2RhYzRkZTE4N2I3ZjA0MDU2NGQgbGVnYWN5LXRydW5rCis2MTc5NiBmMWU1MTc4NTk0N2Y1YjVmMTVkMzJkZjQzZTQwZDYyNzZlZmQ0Njc5IGxlZ2FjeS10cnVuaworNjE4MDUgNzI5NmNjYmI4NThjMmI4OWVmNTBmOTg1NzMyNjA5NjhlYTBlNGY5MSB0cnVuay1ieXRlYXJyYXkKKzYxODA3IDFkNWExMTYxOWVjYTg4Y2U3Nzk0NTkyNDczZDhlM2UxODA5ZTg3ZDEgbGVnYWN5LXRydW5rCis2MTgwOSBkZjVjOGI5N2NiMmExZmExZmY2NDVkZmVjNjUzM2EwMWI5ODMzMTgyIHRydW5rLWJ5dGVhcnJheQorNjE4MTAgYzFmYzZlMGE5NGI5YjdjMDQ4Y2Y0NDAzZTQ5NGVjYzM4OThmYzQxOCBsZWdhY3ktdHJ1bmsKKzYxODExIGFmMWIwZjk4ZGFkZjlkMWJkZDA2N2ZjZTQ1ZTJhNWY5OGJiNTUzMTggcHkzaworNjE4MTIgMzlkYzk4NWM2ZmM2MDY0NDA5NmY3ZTc4ZjY1NGVlM2JjNTg2MGQyMCB0cnVuay1ieXRlYXJyYXkKKzYxODEzIDQ2N2MxNmE1MDM5MmNjMGI1ZjRlMzc0MzYzMzdhZDZhMDQ4OWZmMDIgbGVnYWN5LXRydW5rCis2MTgxOCAwYTQ4NTU5M2FlMWNlNWQzOGViNzAxOWI1YzE4ODQxZWY2YjA4MDQzIHB5M2sKKzYxODE5IGQwYjkxYTkwYmFjYzk1M2Q3NDQ3NjZhNzAxNjdmMTIxYjVmZjhkYTggdHJ1bmstYnl0ZWFycmF5Cis2MTgyMCA1ZTkxNjg1ZDljMDY4NTJkZWI5NzdmYzBhZTFhZTM0NmE3NmMyMWRjIGxlZ2FjeS10cnVuaworNjE4MjEgZjViMWZhMTIxNGYwYTE1NGY4MDFiZTI1NTE1YzAxOWMxYjQ5OTVlNiBsZWdhY3ktdHJ1bmsKKzYxODIyIDdjYWFhYjA0YTRkOGRhMzI4MGYwOTVmZDAyNmM5YjQxZDZhMjcwMmQgbGVnYWN5LXRydW5rCis2MTgyMyA1Y2E5Mjg0MDJlNTQzNjVjZGRlM2IwYjNmNDE5ZDBhNTFhMjc4ZDI4IGxlZ2FjeS10cnVuaworNjE4MjUgYTM5Y2YzMzUzMTJlNzdjYjU5MmU2M2NmNTJkNDc3Zjk1Mzc2NWRjOCBsZWdhY3ktdHJ1bmsKKzYxODI2IGJmZWU4NzNlZGYzZmY2ZjdiMDZkYWE2NTgyYzAzNDE4Yzk5YzI0Y2UgcHkzaworNjE4MjcgNjgwNTFmOGM2NjE4ZWRiOGZlOWYwMTlmNjk0MGVjNTg1NjM5ZTAyNyBweTNrCis2MTgyOSA0YTZiMDkzYjMxOWJiZmM4ODA3MjEwMjZhOWJkZmI4ZWVjNjc3NzMzIHB5M2sKKzYxODMxIDM3MDhmMDkwNmVmNWU2ZjIzYzFhZDZhMGI2YWZmYzUyYzU5NTJmNjkgcHkzaworNjE4MzIgNWYwNGUwMmJiNDBjNWQ1NmRjOTRjYmFlMTAzMTRlY2M5ZmZiMjU5OSBweTNrCis2MTgzMyAyY2NlOTE3ZDc5OTYzZDhkNmJhYjBhM2U4ZjFkNWYyNTVmZjA4YmE2IHB5M2sKKzYxODM0IDhjMjYwNGZlNTg4NjhhNTVmOGNiMTIwZDM5M2FkMTYyYzM0NDFjMjQgbGVnYWN5LXRydW5rCis2MTgzNSBkZjkwNzc0ZjkyYjA2OWQ5MGQ3OWRlNDcwMmY0NDFmOWQ5YzVkZmIxIHB5M2sKKzYxODM2IDMwZWY1MTEyODEzMjY4NTM3M2UwMWI0OTgwYmRkZmZmOWVlNzk3YjEgcHkzaworNjE4MzcgODU5ZmY1YzdjNjBhOGMwYzZkNTE1NTJlZWJmZWM3MjVhYzFhNjk5MCBweTNrCis2MTg0MSAyNTQzMWZmNmNlNjlkZjY1Y2M4OWE2ODYwNWIyYzdjMTA1NjE1N2ZkIGxlZ2FjeS10cnVuaworNjE4NDIgMzhkZTBkMjAyMzM4Njc4MTk4YjZlZWY4Njg0NjgxNTAyMGI0Mzc2OCBsZWdhY3ktdHJ1bmsKKzYxODQ2IDJkMGUwODkxN2EyZTM2MGY5NTllMTRlMDBiYjhmNjkxNTRmN2M4MjkgbGVnYWN5LXRydW5rCis2MTg0NyA0NjFmZjQzZTc0ZDAyMmFiOTc5MzBmMTI4NzBjZjIwZmI5NTY3YmVjIGxlZ2FjeS10cnVuaworNjE4NDggNDFlZTlhNDAwYWQxMTQwMjY2NDBjMDc1MGI1YjQ0ODJiYjBlOGUwYiBweTNrCis2MTg0OSAwMmFlMzExMjU2YTc3YTFhOTRiNDVkMDc1OGRiMGE1NDU0ZjM3ZDA3IGxlZ2FjeS10cnVuaworNjE4NTAgYjJmM2U0NmU3OGEyOWE5NDMxN2M2YzRlM2Q1ZjFjYTJiNjVjMjkwNyBweTNrCis2MTg1MSBiZmNkYTU1MjQ5MmU2NWY1NjdiNmQyYzQyNWI3ZWMyMWI4ZTYxY2IwIGxlZ2FjeS10cnVuaworNjE4NTIgYzg2ZTlkZDE2YjhkMTRkNWZiOWMyYTc3ZDA0NDdhMGIzYTY5NDBlNyBsZWdhY3ktdHJ1bmsKKzYxODUzIGM5MjMwMDkzMDc3MmQ2NjY5ZmNmOTc4YmI1MmJjMjUzOWVjOGNhMWIgbGVnYWN5LXRydW5rCis2MTg1NCA0MjI4NWQ2Mzc1NWFjMzhmMGM0MGI2MTc3OWE1MTExZjk1OTI2YzU4IHJlbGVhc2UyNS1tYWludAorNjE4NjMgZjNlNjQ4ZmVlNGMxOWFkNWJlOGQ2NDEzM2Y4OTI2ZDBkNzFlN2FjNyBsZWdhY3ktdHJ1bmsKKzYxODY0IDA5YWRmZjNkNjY5MTU0Y2Y1MWM4NDM5Zjg0YWI0Y2MxOTI1NjkzNzEgbGVnYWN5LXRydW5rCis2MTg2NyBjZTQ1ZmQzYTdhM2ZiZTYyZGJjYmFhOThjOTY5OWY0ODE3NDFkNjY0IGxlZ2FjeS10cnVuaworNjE4NjggZGU4M2VkY2ZlYjNkMzA5MDVjZDgwYjE2YmZmMjIwM2MwMWY1MDcyMyBweTNrCis2MTg2OSBkZTU0NDk1YTQxNGE3YjkzNzRjODM3MGY2NjM2MjA5MDlhYjU3MTFiIGxlZ2FjeS10cnVuaworNjE4NzAgMmJmZjVhNzI5MDM2OWRiNTVhOGUxNzU3NjQyMzg4YWFlNzJhZWNhYSBsZWdhY3ktdHJ1bmsKKzYxODcxIDk1OGNmMGMyN2RhOTM5MzY3MWVhMGU3MDJiNDIyMzUzZTUyY2Y4YzUgbGVnYWN5LXRydW5rCis2MTg3MiAzOGEwYTczN2NjZDQyNTMyODZiMjlkY2QxZTc2MjQ2N2NkMGM3YmQ4IHB5M2sKKzYxODczIDE0N2YzNWY2ZTZlNTg2YWYzOTcxNmNiNThmMjczZGViOWQ5NzcxMzMgcHkzaworNjE4NzQgNGY5Y2E4MjdhN2Q4N2U5N2NkZTQ5ZmM4YTdkMWU3ZjE5OGNlOTJhOCBsZWdhY3ktdHJ1bmsKKzYxODc1IDBkZDQ0MWNhOGViMGMzOWM3ZTNjZjc1NGU2MWYxNjA4YTE2NjNhNGEgbGVnYWN5LXRydW5rCis2MTg3NiBhYmJkODFmMmNjNjhlNmIxNzk3ZDMwZGU0Mjc4MTU4NDUxMmZjMGFlIHB5M2sKKzYxODc3IDA0MWU4ZDdjYzY4NDA5MzBjZGViNDA4YjI1MTdhMWFiNjEyZDM3ZDEgcHkzaworNjE4NzggOWIzZjBmYTVkOGNhMDc2MDI0MGQwMmU1MzFiZjM3Y2YxMzg2ODRhYyBsZWdhY3ktdHJ1bmsKKzYxODc5IDg0YmI3NzAxZWZiYWQ4MjJhMDQyNTgyNDBkZjhkOGVhNzM2OGRjMjQgbGVnYWN5LXRydW5rCis2MTg4MCAyYTFmNDgwMWQ0OTRmY2E0NWQwMDc1OTJlN2UyNzFhZDIxNjk4ZmVmIGxlZ2FjeS10cnVuaworNjE4ODEgYWU2NTlmZjA1MjhiYzE3YjYxZjFhZGFiMTQwYjI5ZjUxNWIzN2MwZCBsZWdhY3ktdHJ1bmsKKzYxODgyIDQ3YzJmZmMzOGQxZDEwM2NlYjRlNWQ3ODI3MDUzZDQyZGE0ZWZiZTQgbGVnYWN5LXRydW5rCis2MTg4MyAxYTJjOTY0NWY3MWRmM2MwNmI3ZmNlODEzOWY3MzMzOGRjMzk1N2UzIHB5M2sKKzYxODg5IDJhODY2ZWE2NjUwOWI2Mzc4ZDNhNmU4MWFlY2VlMmFhOTcyOTAzN2EgbGVnYWN5LXRydW5rCis2MTg5MSBhN2NiZmNiYWE2YjA2MTU2N2E1OTYxOGI5NzY5ZTFjMGQ0MTk2MzUyIHB5M2sKKzYxODkyIDIyYmQwMjI5M2VmYTVkNWQ0MDUxMWIzMWYyMjEyZDFlZWU2OGVjZWEgbGVnYWN5LXRydW5rCis2MTg5MyAwYjYzOTk5MTU4YjA3MjY0YzhlZDdlOTkyYmEyNzM4ZGFmMWU1ZDgzIHJlbGVhc2UyNS1tYWludAorNjE4OTQgNmJlYTJmMTM1MWIxZjVmM2E0ZDdkNWM2Mzk2MjkzMmI1MTBiYWI0NCBweTNrCis2MTg5NiAyNTZmOTM5NGQ5M2RiNWYzMjJmZGZmNDM5ODYyNGJjM2YyZmQ2NGYzIHB5M2sKKzYxOTAwIDcyY2M0MDBkODA1MzZkMWUxNTQ1NmVmNWUzNTc0MDM5NWU2NmQxNTMgbGVnYWN5LXRydW5rCis2MTkwNCBlODFjYWM3M2RhZjJmMDgxNDk5YmE4YzBlNzhiOTdkOWQ1NDA3OTM0IGxlZ2FjeS10cnVuaworNjE5MDUgN2QzYTZkYzQ3MWNkOTEyMzdmZDAzZjFmY2JiYTJjYjNhMDQxNzJhNSBweTNrCis2MTkwNiAxODk5ZTA4ZmE0MjExNjRmNGNmMjUyZjJjZTBkNDU1ZTEzM2Y5Yzg4IHJlbGVhc2UyNS1tYWludAorNjE5MTMgNWRmNzJiOTg4N2ZhNjg5ZTk5NDlkMzQyNjE0NzM2OTY5YmQ5Mzg3YyBsZWdhY3ktdHJ1bmsKKzYxOTE0IDQ2Zjg5ZjQ4MGJkNGM1MGNkMjAxM2Q3ZDAwZjFjYWQ5ZjI4NTQwMGEgcHkzaworNjE5MTUgNjIyZDNiMTE2OGFhMjk0ZDI1ODg5MjhiOWI4ZTAyYzAwOWVhMmU0NiBsZWdhY3ktdHJ1bmsKKzYxOTE2IGY5NGFjOGY5Y2Y5NmQ0ZWZjNDQwMWRjMGFlNWY2ZDJjZWM1MzllMDEgbGVnYWN5LXRydW5rCis2MTkxNyA2NzkwOTUwOGUwNDE1YTQwZTA1ODBhMGU1OGE0YzZiMWRmNjIyYjhmIHRydW5rLWJ5dGVhcnJheQorNjE5MTggYjUxZTRiNTBlZDMwZWMyOGQ1ZmE2OWE4MTY3ZmM5MTdjMzY1ZWZhMyBsZWdhY3ktdHJ1bmsKKzYxOTE5IDE1MTE4NTY2Zjk4NzI3YmMyYWFkMDFkOGI0NjRmMTI0ODJhYjY2NzggbGVnYWN5LXRydW5rCis2MTkyMCAxNWRhMDk4YjNjZDg1YzE0N2I3Nzc4ODJmYmM3YjA4ZDBiMzViNjMxIHRydW5rLWJ5dGVhcnJheQorNjE5MjEgNGVhNmYxMmJiZThjNjliZTY3YzRiMzlhYmJhY2ZiMjY3YjM1M2Q2OSBweTNrCis2MTkyMiA1NGI5MGQ3ZWRkYjc4MWEwYTVjYThkZmNjNzFjOGRlNDM1OWY1ODBkIGxlZ2FjeS10cnVuaworNjE5MjMgMjk2YzIxOGYzNWNmNmMzNzJhZDZmZTEzYjY3NTk1NWFlMTI3ZGY4YSBsZWdhY3ktdHJ1bmsKKzYxOTI0IDhmNmNjZDA3NWEyNGQ4MzY2OGE0ZDM3NGU4NmI4ZGUxNWI3M2MwMTEgbGVnYWN5LXRydW5rCis2MTkyNSA3ZGE4OTE4MTAyZmVlMTU0YzE4ZTBlY2I1MGRhNWJmZmE0MzVmMTUxIGxlZ2FjeS10cnVuaworNjE5MjYgY2RkYjI5N2MyNDY1M2I2ODZjYjQzMTQ4NmRjNzMxODRmYWI5NGMyYyBsZWdhY3ktdHJ1bmsKKzYxOTI3IDg1YWNjNDA4MTFiM2Q2NDRjZjUyZTI1NjA5MzE5MjlkMzliZjVkZTUgcHkzaworNjE5MjggMWFiNWNjMjUzNDFhZDE4MTdjOGZmYWFlMjlkZjRhMzhkYjMzZjNhMSBsZWdhY3ktdHJ1bmsKKzYxOTI5IDFkZDAwMDE2YTY5Y2VkOGViNzNkMzY2ZjhlYTVkYmRjMDMwYTQwMTQgbGVnYWN5LXRydW5rCis2MTkzMCBkNTc4NGZjMTllN2FjNzA2OWIyODdmMjllOGU3MTlmZDMzY2EwOTEyIHRydW5rLWJ5dGVhcnJheQorNjE5MzEgNmVhNDFkNTIzOWUwN2U2ZWY2NTU5ZTE4ZmI5ODI2MzU4NGE4Njk4ZiBsZWdhY3ktdHJ1bmsKKzYxOTMzIDFjN2ZhNGFjZWNiM2FkMjU2N2EwZDc3NDQ0MDhjNmY0M2VkYjFkOWUgdHJ1bmstYnl0ZWFycmF5Cis2MTkzNCA5ZmNjY2Q1OGQ2NWRiZjkzNjc3Mjc4MjA3MTFiMTdhYzJiMzFkMGQ3IHRydW5rLWJ5dGVhcnJheQorNjE5MzUgMjBmYzQxYzE3Y2M3YzYwN2Y5ZTlmMzc0ZjE4NjIxYWFjMDI1MTdjYyBsZWdhY3ktdHJ1bmsKKzYxOTM2IDUzNDFiMzBiMTgxMjViZjE5MjVjMGQ0NGYwYzQ3MjM4OThiNTEyOGEgbGVnYWN5LXRydW5rCis2MTkzNyBjYzBkMTk3N2Y4MjBjNzk4MjBlNmQ2NDg2ZTc4NGIxY2M0NzhhNWUxIGxlZ2FjeS10cnVuaworNjE5MzggMmU3ZmYzOGUwYTE4M2VhODhjNGUyYTVjOTg1ZTIxOGQzY2E4MjE1YiBsZWdhY3ktdHJ1bmsKKzYxOTQwIGNjZWVhOThjY2YzNWY3NzRlODJlNDU5YTQzMDQ5NjFmYjRhMTRmMzAgbGVnYWN5LXRydW5rCis2MTk0MSAyYmNiZDM4ODJlZWVkNmNmNzA4NWFhMzNhZDhlMjMyZDQ2NTU2NzM4IHB5M2sKKzYxOTQyIDRkMTk4OTIwNDA2MjBhNDc0MThhZjA3YTliNGNmNTc5ZDdhZGUxNTYgcHkzaworNjE5NDMgOGQ2ZmRlMTZlNDkzY2IyNGM3NWQxNTJkMzgyZDAxMzBmNGI0ZDgxNiBsZWdhY3ktdHJ1bmsKKzYxOTQ0IDY0YmQ5NmZmOTRmMTQ5NDE4MzEzNGIyNjhkNTZlMjc5Y2JiZjdiNTIgcHkzaworNjE5NDggMWI2YzBmZjEzNGZhNGExZDhhN2E4ZjNjMDA3YTZmOTg0OTc0NTc5NiBweTNrCis2MTk1MSA5OTVjOTk2MGY3ZmYzODM0YTkxZDZjM2ZmMTc1NGU5MGI4N2M0YzM4IHB5M2sKKzYxOTUyIGRjZTlkMmQ5MmM4ODE0NzJhMDdjMjhkYjA1Y2MxZWZjMzY4Y2VmZDUgbGVnYWN5LXRydW5rCis2MTk1MyBjNzhkMzU4NmM0NzRmNjY0MDY5NTM5N2JjMmQ3Y2E1Y2Y4ODI2OGVlIGxlZ2FjeS10cnVuaworNjE5NTQgZGFhNmFjZWFiZGZjNTg0OTBmOGE4ZGEyMjZlOTQxOTQyNzAzZTYwZCBsZWdhY3ktdHJ1bmsKKzYxOTU1IDc4NTA0ZDYwNGI0NDhjOGI1Y2Q4ZGU1MWEyODA2ZjE1ZThlODRhNzYgcHkzaworNjE5NTYgZDAwZGVkOGIyNjc3MWQ0OGMwODk4M2ZiMjY5NGU3NTZjMzE1NGRmNiBsZWdhY3ktdHJ1bmsKKzYxOTU3IGE5MzVjNTBjYjUxYWE0NWVlYjFlNDI3YjM0ODA1MWFlZTRkMjI3ZTEgbGVnYWN5LXRydW5rCis2MTk1OCAyNDg2NzY5ODhjNTQ4ZmNjY2Y5YjA1NTlmMmFiNzYyNDZjYzQxNDM3IGxlZ2FjeS10cnVuaworNjE5NTkgMzhmZTY0ZTNiMTMxNzNhZmM5MzM5ZWFlNDNiZGNmMzc4NzRhZjY5OCBsZWdhY3ktdHJ1bmsKKzYxOTYwIDM2ZDgyOGQyN2MzNjQwOTExZTg2Y2Q2YTZmYWUyMDI4NDkyNWY3ODcgcHkzaworNjE5NjEgYjA2YTE1ZWZkYzZkMWY0MmNmODY5MmE4OGVmOTg3YjU1MDgxZmRlZiBweTNrCis2MTk2MiBhZTI4MzE1NDI1NTgxNjdlODQzZGE3MjY3ZjhhMjY4NDdhNTU3NWVkIHB5M2staW1wb3J0bGliCis2MTk2MyA1YzI3MWVmNmNiMzI2MzgzYWY3MDRjNTBmZDk0ZDhlOTM2MjI0YWZkIHB5M2staW1wb3J0bGliCis2MTk2NCBiNDVlN2I1N2EwZDgyYWFkNThkZTc5Y2I4MTVmYTk3MjQ2Yjk3OGZiIGxlZ2FjeS10cnVuaworNjE5NjUgZWY0MGVjMzJjNWU0ZDc3MzliMmEyNTA1ZDcwMjRkNTI4YmIwYzIxZSBsZWdhY3ktdHJ1bmsKKzYxOTY2IDg0NzkzYmY1YTRiZmMwZDI2MDljYzhhMGYyM2MxNjU5ZmMzZTVjMmEgbGVnYWN5LXRydW5rCis2MTk2NyA2MTkyZDViMTJiNmFlMTdiNTNhMmRhZjhjNmEzOWE2NzY5OWM1MWI2IGxlZ2FjeS10cnVuaworNjE5NjggZDc0MGM3MWYwMmZmMjdhYjlkOTUxOGQ4MzMyYzY4MGViY2UxNzEzNyBsZWdhY3ktdHJ1bmsKKzYxOTY5IDUwNzhiN2VlMTZkYzE3MWQ2OTdiYTMxNTM5OGE0ZDA1YzFlYzkyYWQgbGVnYWN5LXRydW5rCis2MTk3MCBiMzUwOTYwYWRlNmQ2Njk2NzczYjcxZmUwMzk2YjZmNjM3Nzc1YjVjIGxlZ2FjeS10cnVuaworNjE5NzEgMzEzZjM4MWZjMGE3MTcwY2MxZTgxYTk3NGE3N2FjMDZkNDUxY2U3ZCBsZWdhY3ktdHJ1bmsKKzYxOTcyIDZmMTMxZDJjMzYyODIwOWJlZmZkNTg5NWNkZDUyMzMxNTM5Y2RmYWEgbGVnYWN5LXRydW5rCis2MTk3MyBlYWM0MWY5MDI5NmM2OWM2ZDA3ZDI5ZjFmZWI0NTNhNGMwZTQwMGQxIGxlZ2FjeS10cnVuaworNjE5NzQgNjIxMzhhMGY0MjMyNmJiMDM0MGJlZTcwZmQ0N2IxMTE0ZjJiMzE5NCBsZWdhY3ktdHJ1bmsKKzYxOTc1IGEwZWEzYTBlZmM3MTA5MzRhZDY2ZTM5MDcyMTEyMzBmZjIyN2Q2YTEgbGVnYWN5LXRydW5rCis2MTk3NiBmMWFlYzdkZWMwNWNhMjFlYjgzNjc0MDZkZWM5OGViMDZjZmE2ZmQ4IGxlZ2FjeS10cnVuaworNjE5NzcgZTM5ZjY5YmY1NjEwZWFkMzk4NTE3NzQ0NTkwOWE3YmFmOTRmOGExZiBsZWdhY3ktdHJ1bmsKKzYxOTc4IDU2NDQyZGI2MGEzNjJiZmI2MmU5MDQ2M2Y2ZGEzMTQ5MzZiMmRkOWUgbGVnYWN5LXRydW5rCis2MTk3OSAzMWJhM2ZhMTU4NWIwOWRiMGM4MDI3N2RlMjE4MGVhY2MxNjA0OGQzIGxlZ2FjeS10cnVuaworNjE5ODAgY2I1NjMzMGQ3YWRjOGNkMTAzOWJlNDA0ZWVjZmY5MWI1NWJhMmE3ZSByZWxlYXNlMjUtbWFpbnQKKzYxOTgxIDZhNjZkMzI2N2QwY2Q0ZGNhNjNmNTYxZjE2YjY3MGE2NTkzOTY1NjIgbGVnYWN5LXRydW5rCis2MTk4MiBkYTU1OTdhNWMxOTU4MmE4ZTM3ZDU0MDU4ZjQxNzViNWZhZDE4NzJhIHB5M2sKKzYxOTg0IDEwYTM5YTY2MmU2OWNhNGRkZmZjMmJiZmViN2I1MDgwMWFkNDlmYjUgbGVnYWN5LXRydW5rCis2MTk4NSAxOGUxOWFjOThkMzRjMDE5MzMxMjlkYzdiYTc2MTRiNDE5NjIyMGMzIGxlZ2FjeS10cnVuaworNjE5ODYgNTlkMDgyNTkxZjU2ODA0MWEwYzYzZjRhNGU5YzJkYWY2ZTJjOTQyOCBsZWdhY3ktdHJ1bmsKKzYxOTg3IDdmZGZmMDJlNmY0NWVhOTg0NTFhN2I5YmIzMDcwMThlOGQ4NjM1N2EgbGVnYWN5LXRydW5rCis2MTk4OCA0YmY2MWZjY2M0ZTY4ODI0NzdmY2YzYTk0ZjU5NDVhYjk3NTI2YmY3IGxlZ2FjeS10cnVuaworNjE5ODkgNmU3YjI4MDhiOWE2OWU3N2E5YjVhZjFjOGVkYjJjMmFiMTdhMDM1YSBsZWdhY3ktdHJ1bmsKKzYxOTkwIDFkNTA3NDdlNTNkMzY4YjBkODFkYTkyMDZmMGZkMjM5Y2E2YzA4ODkgbGVnYWN5LXRydW5rCis2MTk5MSA3MjMyMjU5YTA1MjllNjk2MDI5ZjM0NTg0MmE0NmVjMWQxYjlmMDg3IHB5M2sKKzYxOTkyIDFlMTBiMzBmNzQ5OGMzZDcyZGI5ZGUzYTNjYmU3NjEwOTY2YjZkNmIgbGVnYWN5LXRydW5rCis2MTk5MyAzMTAzZWEzZGY0OWQ5NGM3ZTcxYzVhMDFiYTdkNmY2ZGJkZGM0OTAyIGxlZ2FjeS10cnVuaworNjE5OTcgYmJmY2JhZmVhZTg0M2QwMGE5NGIxYWQzYjMwYmZjOTQyODFiZjUxYyBsZWdhY3ktdHJ1bmsKKzYxOTk4IDY0ZjJlYjQxNzBmMTk2MGEyOTU2ODBmN2ZlMWU4MzU2YjYxYWJhNjAgbGVnYWN5LXRydW5rCis2MTk5OSA2OWQwMDkwNzQwODgzZWI4ZDNmMmI1ZWY5ODgyODYwZDZhZDJhMjRiIGxlZ2FjeS10cnVuaworNjIwMDAgZjlhNjI5ZjQxNjU2ZGE3MjBhNTRmZGZhZmIzMzRmMzliYWY0NGRkZiBsZWdhY3ktdHJ1bmsKKzYyMDAyIDIzNjVjNDdmZTY0ZGRjMzRlZjBjY2E2M2I1N2NhZmMwNDg1N2UwYjEgcHkzaworNjIwMDMgODQ4MTYwZDEwNzgwNjFjY2JiNWQ2N2NlNzJiMjI0NWUzNjllNTUyZCBweTNrCis2MjAwNCBjYTM4ZjdhNGI0Yzk1OTY4Yjg0YTI3NDFmNDFhZTMyYWMyNDAzYmM2IGxlZ2FjeS10cnVuaworNjIwMDUgYTQzYmUwNzQzMjRkMmYzZjFiZTk5ZjZlNGRkNTJjNmRmODBlMzE4NSBsZWdhY3ktdHJ1bmsKKzYyMDA2IDA5ZmE4Y2IyYmZlOGY0ZjJhYTc1MDAxNDMxYmU1MzY3YmJhNzA3ZWMgbGVnYWN5LXRydW5rCis2MjAwNyBhYWNmOGJlNTFmOTAzMDc4NzcwOWJjNWNkNDRhZWNhZGZlMzhhNzAzIGxlZ2FjeS10cnVuaworNjIwMTEgYTIxODU0ZTUxMGI0N2JjY2NlZGUyZGVmYTg3M2Q3YjAyNGYxMDJkOSBsZWdhY3ktdHJ1bmsKKzYyMDEyIDY1NGFkNzRhZGUxMzEyMDE2ZDdmNWJlZTU3NTQ2NGQ5ODUxYTNhYmEgbGVnYWN5LXRydW5rCis2MjAxMyAxYjViNmFiYjFmMmVkZTliMTQ1YWE4NDYyN2JhYmNmZjA5NDBjZjdjIGxlZ2FjeS10cnVuaworNjIwMTQgYzNlNjc0Y2JkNzJlOWQ5YWI0NTE3ZjkwNjc2YjAwZDY5Nzg4ZjUyNSBsZWdhY3ktdHJ1bmsKKzYyMDE1IDNiOTk0Zjc0YjEwMDQ4MjEzZWZkMjhiN2U1NWFhODA5OTQ1ZTZmNzIgbGVnYWN5LXRydW5rCis2MjAxNiBjNzdjYzIzZTM5NGYxNDQ4MTYxMmMwOTE0ZGY0ZThkMjUwNjA2NTM1IHJlbGVhc2UyNS1tYWludAorNjIwMTggOTczNGE0MmNmYTE1ZTAxNWVjZGRiOWYzZWQzYjJiOTE0ZjI1ZGJhMSBsZWdhY3ktdHJ1bmsKKzYyMDE5IGM0ZWQ2NjRhMWRhMWMwYjAxYjA5YTk2ZWYzZWVhNmUzNWMyMTE5NGMgbGVnYWN5LXRydW5rCis2MjAyMCAzZWEzZTUxZDFlZTNmYThmNjdiYzQ3M2IyNTQ4NTRkMjc4NmFlOWYyIGxlZ2FjeS10cnVuaworNjIwMjEgZWZlZjRlM2ZlZDE3ZGFjZjJmM2JjN2M0MDI3ODQ1ZGY3ZGQ1ZTQ1YiBsZWdhY3ktdHJ1bmsKKzYyMDIyIDg3MmFiZWQ3ZDA2OTRkODliNGZkNTQ5NzI5YTc2ZjNmZDhiMmE1MDggcHkzaworNjIwMjMgN2NlMWE4ZmQ4YTcxY2E5N2U2YzI2ZDhmY2VlZWVlMTFhMGFkMTE1ZiBsZWdhY3ktdHJ1bmsKKzYyMDI0IGUwNmUwOGU4ZmRjZWRlYzZiYWRhM2IxZGEyODc2YTlmOGNjMGEwNzIgcHkzaworNjIwMjUgZDFlMWI3NDBmNjg0Mzg5YzFlZWIyYTg2MzNiYTJhNTZkOTI2MDgyZiBsZWdhY3ktdHJ1bmsKKzYyMDI2IDBlYTVjMDU1YWI1NGY0NmI2ZjNkYzI5YzM5MjVmYjg0YzgyMmY5NWIgbGVnYWN5LXRydW5rCis2MjAyNyAwOTA1M2E3YzFjZGZkODE4ZjA5MmY2YThjNGM3MDQ3ODQ0MDNlYWMwIHB5M2sKKzYyMDI4IGZlNTNkMWEzNmVmNjNiOTRkMWU1OTVmYmY0ZTVmZGYzNTMwNjAyMmUgbGVnYWN5LXRydW5rCis2MjAyOSBjNDQwYTU3MzcxNDlhNzEyZGI5YmQ0NWFiZDg0NmY1NzY3ZWMzNmQzIGxlZ2FjeS10cnVuaworNjIwMzAgNmIzYWM4OWUwZGQ0OTI0OWExMDhkOWRjNWY4NWY4NTVjMDk5Mzg0YiBsZWdhY3ktdHJ1bmsKKzYyMDMxIDk1OGNmN2VjY2FlMjQ5NjJkNzk1MGJhYjIyNzU2NWI5MzliYjUyMDAgcmVsZWFzZTI1LW1haW50Cis2MjAzMiAwYTRkYTM5N2UxZGI0N2IwODZjZmRiMDBkZGJmODliM2FlYTQzNTM3IHB5M2sKKzYyMDMzIGYxODQzMzM3YTY2YzE1ZTUzM2M2MDIwZTkwYmI3YWVlNmZlNDQ2ZmQgcHkzaworNjIwMzQgNDYzNDhkZTYzZjYxYTBlYmE3YTFmMzRjNGQzYTRhNWU4ZWQ5OTcwYiBweTNrCis2MjAzNSA1MTEwY2YwZTVmOGZlYWYyNDFjYjkwZGZmMmZmNzUwMDA1ZTRkZWM3IGxlZ2FjeS10cnVuaworNjIwMzYgMTY3MzZlYjQwMTUwYWE3ZDc4ODQwNzhmYmIxMDY3NWIyYWJjZjdkNCBsZWdhY3ktdHJ1bmsKKzYyMDM3IDIzZTQyNTc3MjI2YTdmODVmYjhhYjI3MjFmZmQ3ODM0ODA4OWM1YWUgbGVnYWN5LXRydW5rCis2MjAzOCA2ZTAyZmYwYmQ2Zjg5NDRiNzEyMjlhYjE3MTA4MjA4OTg3ZjAyYWVmIGxlZ2FjeS10cnVuaworNjIwMzkgYjBiZjA2ZDQ5NjQ3ZGQyNWQxYzNkMzY2Yzg0MWE0NjI5MDhmODc2MyBsZWdhY3ktdHJ1bmsKKzYyMDQwIDRjNjc4ZTljN2EzMDUwYzI0MTJiMzYxNzRhMTAwNWE3YzNmZDNiYjggbGVnYWN5LXRydW5rCis2MjA0MSA1MWVmZjJmZDk1MjcxMzY2Y2U4NzgxZDE3ZjJhMGNkNjBlYjAwMDJlIHB5M2sKKzYyMDQyIDBjMjFmOWI0YTgzMWE0NjE2YTg2ZDI2MmFlYWI2N2VmNjFlZmNjMzAgbGVnYWN5LXRydW5rCis2MjA0MyAwMWE3ZTY2NTI1YzI2MjRjYzdjMjgxZDMzNmEzODMyOTBlZjBlMjAxIGxlZ2FjeS10cnVuaworNjIwNDQgZTQ0ODZjMzQzZjdmYTY4ZDlhMDcxYjAxNzlkNjc1YTUxZTFkOGQ5YyBsZWdhY3ktdHJ1bmsKKzYyMDQ1IGVkODhmNGRlNDk2ZjE5ODA2YjM2NmE3MGVmMjlkNzcyYmNhMTZjZGYgcHkzaworNjIwNDcgMmZmODhhZTk4NTBjNTJlNWNlN2FkOWM1YTEyZWUxNTNhNjIxNGM4MSBsZWdhY3ktdHJ1bmsKKzYyMDQ4IGUzNzBkOWNkMTQ5ZWEyNjA0YmI3OGY1MWExNzE1NTYxOWU1NDVjZWUgbGVnYWN5LXRydW5rCis2MjA0OSA0MmM1ZDI4N2E4NTJlNmYyODk4OGNkNmIyNTkzMjNkYWMwMDc3YWViIGxlZ2FjeS10cnVuaworNjIwNTAgZjA1MWU3YTgwYWNjNzZiNDAyOWVlNTg2NjIxNDk1ODFmMmIwNmUxOSBsZWdhY3ktdHJ1bmsKKzYyMDUxIDI5ZWE1MDdmZDk5ODIyMzM3NDM4NzQxMDIxNjgyZjAzMWM4MjMwYzMgbGVnYWN5LXRydW5rCis2MjA1MiBjMTEyMjE5MDYxNzExYTQ1MDFlODc2ZTBkMDZlNzNlNzExZTk4MDBmIGxlZ2FjeS10cnVuaworNjIwNTMgMDdmNzVkNTUxOWI0N2I0YzBiMTc1ZDNjM2YyNWFhZmJlMWI2ODk5MiBsZWdhY3ktdHJ1bmsKKzYyMDU0IDU5ZDQyZTZkMTg4NTNiYTBmYWQ5OGY5YmZmZTUxNTQwNDhkNWFjMmEgbGVnYWN5LXRydW5rCis2MjA1NSBlYTc1YjEyZmU4ZTc2ZjliZmU4MzEzZjY4NjA0YzhkMDE0ZjMyOGJjIHB5M2sKKzYyMDU2IDk4Mjc2YmU2NDU3OWZjM2MwYzYxMzFmZjJlMmYxNTFlNTcwNTc4M2QgcHkzaworNjIwNTcgMWM5NzIzMmQ5M2ZmM2U5YWUyMGU0YTE2MTg1YzRhYjNhMDYxYzQ4NSBweTNrCis2MjA1OCBlODk5OGU4MGVhZjJiZjhiNTk5MDE4NTg0NzhjY2Y3Y2Y2Zjk1YmRlIHB5M2sKKzYyMDU5IGJlMThkZjYzNDQwNTg1OTM5NTYwNTBjODc4NzdhNWY4NjczYTMxMTQgbGVnYWN5LXRydW5rCis2MjA2MCAzMmVhNzY1NGZmOWM0ZWYzNWZkM2M5OGM3YTAyZDgwNzJhNDE2ZWE2IHB5M2sKKzYyMDYxIDRjN2JiNDA5ZGFkNmQwMGQ5MGQ2ZGFjNDNmODM0OTcyMmQ1ZDEwNTYgcHkzaworNjIwNjIgYTdmYjRkODdjYmRlMzk3ZGE0ZmVmMzVmNmY3OGU5OTBiZDZlMjllYyBweTNrCis2MjA2MyAyYmMxZDVhYTcyOWVlNDk2YzZlOTJmZmM4MGVlNDRlNGM5MmI0OTY2IHB5M2sKKzYyMDY0IDYwNDI5MTRlODI4Njc3Y2IyOWU2ZGE5MmYzOGE1ZWVkODhiMGIxYmEgcHkzaworNjIwNjUgYzViMTQ5YWQzMDBmOGMwOGMxZWMzOGViMzJhOTFiMDYyNDc0N2MxYyBweTNrCis2MjA2NiA1N2JiYWM1MzE5MTk4MjliMzNmZGZkM2QzMTg2Y2U1NGI4NzA0YWQ4IHB5M2sKKzYyMDY3IDYwMGYyZmY4YWE5ZTkxNzBjYzYwOTdiNTczNTE2ZTY5MzZmM2YxY2EgbGVnYWN5LXRydW5rCis2MjA2OCBmZmJlNmM3OTA1MjNjZDI4OGYxODkxZjkxNzFlMmRlYTA2NTliMzcxIHB5M2sKKzYyMDY5IGFlZDY5OGM4NjQ3Yjk5MTRmMDE1N2JhN2EzYTE5MjkxMTJjZTgxNzkgcHkzaworNjIwNzAgZjBmYTYwNWIyYTc4YTYwOGI3ZjczMjkyZWRjYWUzZGEzNzNiMzEzYiBweTNrCis2MjA3MSAzOGY4ZGZlY2U5OGU1YmQ4M2E3M2M2YmZkMDc1MzIzNjMyOTE5Yjk4IHB5M2sKKzYyMDcyIDg2NDU3NGE5Y2QyNmVhNmQ1ZjU2YTk3ZWM4ZTRiOTkwOTgwOTc2NTcgcHkzaworNjIwNzMgZTkwMzJmNWRkNTM5YjNhNjQ5MjYxNjcxNWNiMmU5NDAzMWUwN2U5MCBweTNrCis2MjA3NCBiMmQ5M2E5NjBiOTg5MGY2ZDgzMTYzNWU4OGM5ZmIzYWZmNzhiOTA2IHB5M2sKKzYyMDc1IGUzZGM4NjdiNjE4MmVlMTI4YzI1YjAwMTVlZjA4MmZhYTJhNWJjMDQgbGVnYWN5LXRydW5rCis2MjA3NiAwN2IzNmQyYjc1MzRjNWM4YmI0OTZhNzJhOTFmODBjYzExZmNjMzcyIHB5M2sKKzYyMDc3IGU0NzQ4MTc2NGU1NzMwODQ4OGExOWUxY2IzOTIzNDFjMWQ2NDE5NDMgcHkzaworNjIwNzggODFlZTI3MGE2ZWI1NGYwMDM3MjAwNzEzN2JmZmM0ODJkZjM1MzMyNyBweTNrCis2MjA4MCBjM2VlMGYwZmJlZTFjZWY2MjRiMjA0Y2I4YjNlYWVmZjZlNDlhMmFmIGxlZ2FjeS10cnVuaworNjIwODEgNjFjOTI5MjNjZjdmY2ViM2U5MmYwZjViYzc3M2I3Yjk4ODRlZDlhMyBweTNrCis2MjA4MiA0MTUxNTZkNGNiZDIwYzhjNjJlYTkxODc0ODkxNmUxMGNhMTY3M2UxIHB5M2sKKzYyMDg0IGM3MDE1ZTM1N2EyYzk3OWM0MjQyYjZmMjI1OGQwMDg1ODYzNzQ4ZGYgbGVnYWN5LXRydW5rCis2MjA4NSAxNzg4MWY5NmVhMDFlMzA0MGYxYTZmOTJiMzNhNGQyMDA5NmYzYWVjIGxlZ2FjeS10cnVuaworNjIwODYgNmRlY2ZlMzhhODA5MTk5ZjEyNTg4NTAyMTg4NDhjMDY5Yzk1ZDBkYyBweTNrCis2MjA4NyBkODZiMzMzYzcyZTc0MWI5YzZhMjA3N2IwYjZmODhjZmY2MDhkYTliIHB5M2sKKzYyMDg4IDMwZGQ2MDY5ODY3MWYxYjg2NjY1NWQ4YzdmODAxOGFjZjIyNjAyNTkgcHkzaworNjIwODkgNWExN2QxNTdkZjAwMTY0N2I2MjMyNGQ4OTk4NTIyYzc3ZTQwYjU1ZCBweTNrCis2MjA5MCA3ZGZmNWU0MWZhN2FlMWJiMDI3NDU3ZmMwMWJlODAwZmYxYTQwNTVmIGxlZ2FjeS10cnVuaworNjIwOTEgNGM1MDY1ZGRiOWJkNjM4ODMzMDAyZjIzOGZlNjQ1MzY0MjcyZjhlOCBsZWdhY3ktdHJ1bmsKKzYyMDkzIGFiNGY4YzQ2YzNkOWI2ZGM2OTY2YTk4MzUwOWVhNTg3NmJjYmQ4ODYgcHkzaworNjIwOTUgNDc3OWUzNDk2YWUxYWZiYmZiODEyZWI2ZTU1MjMyZGViMzYxMjRjNSBsZWdhY3ktdHJ1bmsKKzYyMDk2IDA3MzBmM2Q1MGNkY2ExYjE2ZDNkZDJhZmU0OGNjNThhYzVlMThmNzAgbGVnYWN5LXRydW5rCis2MjA5NyAxYzc4ZDhlODc2NTNhNWRmYjI3OTE4MTVhM2NiNzVjZjYwMzU2NzFkIGxlZ2FjeS10cnVuaworNjIwOTggMGIzNzQ3NzI1NGY2NDE4MDgyNzY4N2UyNGRjZDJkMzllYmIyMzg5MSByZWxlYXNlMjUtbWFpbnQKKzYyMDk5IDU5Mzk5MDBkOThkMjE0OTkxOGExY2Y0ZjliNDFhZTg3NzZkMGQ4MTggbGVnYWN5LXRydW5rCis2MjEwMCBkNmUxMzMzZTYwNzVjZjQxY2YyZDFjYjc1NjZkZjllYjY3MDhhN2IwIGxlZ2FjeS10cnVuaworNjIxMDEgYzdjMjUyMDQ4NTU1Mzc2OGU0OTlhODNmZmRmYWM0MjY5OTNiMDc1YSBweTNrCis2MjEwMiBmNzUzOTE4YWJlNjUyODM4YjFiMTNmMjgzNTE4ZmExYzc2Mzk4MTJjIGxlZ2FjeS10cnVuaworNjIxMDMgMGIyYTRhMTI0NWEzYzk2NjcxNjc2YWVjZTg3NjI0Mzk0ZDY4MTRhYiBsZWdhY3ktdHJ1bmsKKzYyMTA0IGJiNGE1NDc0MzBmODVjZTAzNWM4ODE0ZmQwZGMwMzAwZTk0OGJhZjYgcHkzaworNjIxMDUgMDNlZDAxMThlNzMzNzYwMzhjZGFjZjkyMDk5ZDQ1OTcxZGM3Yzk5NiBsZWdhY3ktdHJ1bmsKKzYyMTA2IDhlNmE0Y2M3ZGZjMDRkYTY5NGI5ZGMzNDlmZGY0NDI0NjZkYzhhZjYgcHkzaworNjIxMTAgODExNzkwNmI3YmE3NWU2ZTJiNDk4ZjAyNjFkYWFhMDU4NTZmNGE1ZSBsZWdhY3ktdHJ1bmsKKzYyMTExIGExNzJjMmUzOGFjOWUyZWE2MmVkOWU4YjVlYmExYjY2NjhlMTZiNjAgbGVnYWN5LXRydW5rCis2MjExMiBhOTQ0NjljNzRiOWViNGJiMzJkOGViMDZiODRkNmMyNDljYjA4NDdhIGxlZ2FjeS10cnVuaworNjIxMTMgMGE1Yzg2MzUwYTg5Mjc2MTNmYTQ1MjQ5YTAwOTNjYzMwYTMxOTYzYyBsZWdhY3ktdHJ1bmsKKzYyMTE0IDJiMGVjYzdmZDdlZWEyODJkZGIxMmY0ZWIzNjcwYzUxZGE0NGNmYWIgbGVnYWN5LXRydW5rCis2MjExNSAyMDVkN2ZkNTBkMzVhOTZjYWI2MzY5OWVmMjYyZmQyM2FmZTY4OTUyIHB5M2sKKzYyMTE2IGY1NDdlYmYwMjg0MzI4OWI5NDgxZDE5ZThmNTk2Mjg3NzFmYWQ2MjUgcHkzaworNjIxMTcgODc5MWFjOWNiY2NkNWJmMWYyYTI1NzgxZTZkNDgyY2I4M2I0NWRhZSBweTNrCis2MjExOCA5NzViZDIxNjA1MjcwYTA3ZDkyNTdjOTQ2YTc5NWI0ODg4YzZhOTExIHB5M2sKKzYyMTE5IDE1Zjc3M2Y3MzAwZTM3MmM1NmEyMWQ1OWZlNDljYTI2OTU1YTY0NzcgcHkzaworNjIxMjEgZWNhYjAzNzY2Y2FjY2YzNDE3YmY0ZmY5ZDc1YTNkOWE3NzVhNDk1NCBweTNrCis2MjEyMyBlZWMxNDQ5MTdhMTg5YmUxMWVkNWVmYTM1YzY2MDRkMDNiYzYyYmNjIGxlZ2FjeS10cnVuaworNjIxMjQgNzZhODFlZjliMzc5MWU5NGMzNmE1MDJhOWI2MjA1YjA0NzY1Y2FjYiBsZWdhY3ktdHJ1bmsKKzYyMTI1IGFhOWJhYmI5YTQ4ZWQ5Y2MyOWI5MmQ4YmZiYjZhZDY2MTQyZGEzOTEgcHkzaworNjIxMjYgMTYxN2JiMDVhNzhhZDgxODNjMmRhMjYzODcyMTAxODk3YjM2YTE2ZCBsZWdhY3ktdHJ1bmsKKzYyMTI3IDRkODNiOGQwMzI5OWY1YWExZmE0ZTczNDEzYWYyNGVlNDRkMDA2ZmQgbGVnYWN5LXRydW5rCis2MjEyOCAyODQ4YzY1N2FmMGFlNzRmNjMwYmYzN2UxMjEzYzk4Zjc5NTNkZDNlIHB5M2sKKzYyMTI5IDlkY2RhNTZiODcxZTFjZWEwYjFlOTQ4ZDdjZDRjNjFiYzk4YzViMzMgbGVnYWN5LXRydW5rCis2MjEzMCA4MTQyMmYxZGU4OTA5ZGEzZGQzNzJhNGNjZTMzNDUyMjlhYmMyMDExIHB5M2sKKzYyMTMxIDk3MzZjMjBkMjZlYjZmNjQ4YWQzMWY0ZDI2M2U3NjgzMDRmZDk0MTQgbGVnYWN5LXRydW5rCis2MjEzMiBkZGZlOTQ3NDBlZGVhNTdlOGJiZWRiMDE5OWQxNzVhMzdiNzAwYzU4IHB5M2sKKzYyMTMzIGE3MmU5MTc0OTFhNDg2ODQyNDM4ZjczOGY4MzY5MDBlYjI3ZWQ5YWUgbGVnYWN5LXRydW5rCis2MjEzNCA2N2YxYzQ2NTI3OWNiYzFkNGUxZjhiNzYyOTYyNGUyZmRmM2M5OWI4IHB5M2sKKzYyMTM1IGNjMzMzM2I3YmQ5MzY2NjhjMTY3ODBkODBmMDNkZDNjZjZmOWU5M2IgcHkzaworNjIxMzYgNzZmNTc3YTllYzAzM2ZkYTA4MTQwYWFkNzhmNjU5NWEwNThjZTViNSBsZWdhY3ktdHJ1bmsKKzYyMTM4IDAzYjI2ZjkxYmY2ZDA1MDNhMzQyMmJkZDU3OTQ0NTEwOTk5MmMyNDYgbGVnYWN5LXRydW5rCis2MjEzOSA0YmE2ODE5NWE1MTE2MzI2M2NlOTM0MzA2OWEwZmMwOGNmNDBmMTNiIHB5M2sKKzYyMTQwIDdjMDgxYzBiMGY1NTg4ZGJjMWIwMzQ4ZWNlOWRiZDFhNDNiOWU5MGIgcHkzaworNjIxNDEgYWM1ZTRkNTRiMjNlOWQ1NmUyZTE3MzQ4NzkwM2IzMzZmZTE2YjM5NCBsZWdhY3ktdHJ1bmsKKzYyMTQyIGZiM2M5YmI3NmIyOTQ1OGZiMzM4NzUzMzk0OTcxMDljNDYxODE5OTAgbGVnYWN5LXRydW5rCis2MjE0MyBkODE4ZjZkMjkzODQ3YTdmMGIxMTE5YzUyMGMyMmQ3YTRiYzRlMWExIGxlZ2FjeS10cnVuaworNjIxNDQgY2NkZGM1NmJkNWIwNzBmYjhmZjY4ZTIzNGEyY2NkMjRkNTBmNjNjNyBweTNrCis2MjE0NSBiMjhhMmQyNWZkOTJkYzA1NmZkNTZlMWU1NzQxZjNjODg4MDZiODVhIGxlZ2FjeS10cnVuaworNjIxNDYgM2QwMzUyYTU0MWNlNTY2MmI2OWFlNGM3NDI2Yzg3NDc0YmExNTlhZiBweTNrCis2MjE0NyA0YTExMzMwM2YzMTY1NDJkYzdkMzNmM2EyMTk5MWY3MGE1ZTY5YmI3IGxlZ2FjeS10cnVuaworNjIxNDggMzk5ZTc0YmIxMmM3ZGQwZjkwMTczZjBkZjZkOTg3NjZlNjM3ZThmMCBsZWdhY3ktdHJ1bmsKKzYyMTQ5IDgyNzMxNzY4OTg2ZDQ3NDlhMGFlMzhiNzE4MTFiY2ZmYzcwOTkwZmQgbGVnYWN5LXRydW5rCis2MjE1MCBjM2E3NzI1ODhkYjc2ZWJkZWM1ZWU4NmU4MGZhYzRkOGMzNmMxMTA1IGxlZ2FjeS10cnVuaworNjIxNTIgNmFiZTI1Yjk5MjRiYWM5ZjNhZGNkY2M4MTRiNmU1MzdhN2JiNDE4OCBsZWdhY3ktdHJ1bmsKKzYyMTUzIDYxYTBjNzZlY2Y4NzZlZTVjNzJkNzU5OGU0ODA1ZWQwYTU1YzMxOWQgbGVnYWN5LXRydW5rCis2MjE1NCBhMTllYzRmMTcyNzc5NzJhM2Q1ZWVkNzZmOWRmZTM2MzVjZjgxOWE1IGxlZ2FjeS10cnVuaworNjIxNTUgZjgwNmZkOTk0MWRhNjhjNDU1ZDZjMGJiNmNkYTJiNTQyYzBjYjZlNyBweTNrCis2MjE1NiAwY2U3YTIzNTJhNTNlYTA3ODAwZmJlYTcyZDEzM2YxNWYwYTc5ODE2IGxlZ2FjeS10cnVuaworNjIxNTcgZTg5MTZjNjRkZjRjNWZiNTAwZmQyNmM0MDgyMDk2YzAxZDg4ODdmZSBweTNrCis2MjE1OCA0OTAxZTc1Zjc3NWFlMWFjMDI1MmFkMzUyNzRmNjU3ODIzN2I5NTFmIGxlZ2FjeS10cnVuaworNjIxNTkgMzcyNmRlOGNiOGUxZDNjMDA0MzBhZTdhMWM4ZmExMTVkMDdjZjU4YSBsZWdhY3ktdHJ1bmsKKzYyMTYwIGY0YmYzZTdiY2JlODBhZTI0YTcxZDE4MmMxMmUzMmVjMTgwNDcxMjAgbGVnYWN5LXRydW5rCis2MjE2MSBkZTc3OTczZDdlMWEwYzRkMmZjNTk0YzhlNGE0ZTEwMDg2OTFhNjNmIGxlZ2FjeS10cnVuaworNjIxNjIgMzQ0MmU5ZTZiMmNmMThkZmE2NTA3YjUyMjI3NzNhNGFjNTVjZDdjZiBweTNrCis2MjE2MyA5YzkyNmIwYTY0OGY0MjQ4ZGRkODU0Yzc5ODM5MDdhM2I2OWIyOTllIHB5M2sKKzYyMTY1IGIxMDI5MmVhZmIwNzM3MTgyNzVkZTZkNTRjOTMzZmRmYzFmYWE2MDggcHkzaworNjIxNjYgYzNkY2MwYzdiZmQ5NTdlMTI2MzhkMWNlMDdiNDkxZTRhYzM5YTkzOSBweTNrCis2MjE2NyBhMWE1MThiZTU0N2RkOTJjOWJiYTdhZDZhODc0YmYwZWM2MjBiYzFkIGxlZ2FjeS10cnVuaworNjIxNjggMTA1NWYzNjliMWZjZWUwNzlhMmNkOThhZmQ5ZDVlYzczNTU3NjFmYyBsZWdhY3ktdHJ1bmsKKzYyMTY5IDYyNTNhNzIxZDhhNmEyYjNlNjliMzU5YTJmNDkyYmI3ZWIxMDFjZDEgbGVnYWN5LXRydW5rCis2MjE3MCBlM2Y3ZGNmYWEwMzBjYmU4NGY1YmRhMzRmZmJhNDlhZmNhZTdhMTIwIGxlZ2FjeS10cnVuaworNjIxNzIgODUzMmQ1NjkxODUwOWFiOGUxMTJjMzEzNWNjMTBiNDA5MWM0YWU0OSBweTNrCis2MjE3MyAxMGQ5NGM4Yzg0MTRhYjY3MmUyMjc4MGIwMmJiZWRkYmQ3YmE0NzYzIGxlZ2FjeS10cnVuaworNjIxNzQgZjg0Y2RmYzIyMWQxMzVlMGUyZTEzZTViZDkyNWQxMTI5ZGYxNjQ2YiBsZWdhY3ktdHJ1bmsKKzYyMTc1IGJjNzAwYWQwMjk2MjMxODUyNjRlOGM1ZDJkMjE2YmVmMTEyYmFmMmMgcHkzaworNjIxNzYgNDM1MmQ0MWFmZmIwMWIyNWYwZjE2MjhiZjNjYmFlOTkxOWUxNjk5NyBweTNrCis2MjE3NyA4NjRhNTY3MWM3YTQzY2E3NzFjNDZiYzY3NmVhNTI2ZDUyOTkwMjZhIGxlZ2FjeS10cnVuaworNjIxNzggMjJhNzRlYWY2YjIyNTNmYzEyNWIwNzkxYzJlNzEyOTdiOTFjZDlhMiBweTNrCis2MjE3OSA0MmE3NThmOTYxYTE3OTMzY2VlMmJhMzZjMTg2OWY4MDMwMmFkNWQzIGxlZ2FjeS10cnVuaworNjIxODAgMDEyZDk3YmJlZWFmNmY2YzE4ZWVmZDQ1NDEwZDM0MmVhNGFiMjNlNSBsZWdhY3ktdHJ1bmsKKzYyMTgxIGU1M2YyY2NjZGYxZDcxYjI3OTcwMTc5YzRmNmNkNmJmMjExNDZjMzQgcHkzaworNjIxODMgZmI1ZWFhNGJlNzAwOTFhNmVlYzQ1ZGY3MmY1Y2VlMmY2MWQ4NDllZSByZWxlYXNlMjUtbWFpbnQKKzYyMTg1IGY0NmNkMjQwZTEwNTg1Yzk0OTA1NTJmNjI3ZDc4MDc3MjE1M2M5ZjUgcHkzaworNjIxODcgMDM1Mjg5ZTZmZTIzNWRkMzA0YWU0OGQ2YzhiMTU1NTRhNjBhNmEwMSBsZWdhY3ktdHJ1bmsKKzYyMTkwIGM3ZGEzMWMyYzQ1ZmY3YmRhMGJhMjdjMmJlYzMzMmUyMjg1MzE2OTIgcHkzaworNjIxOTIgOWM2NDc1NDI3NjA1MjE0MzJmNzc4OWZjNWZhYzhhZGNmNmZhMDdhNCBweTNrCis2MjE5MyBlMjhlZDg1Y2M5NjJkZDc0MWM4MWY5MjE4ODk5MjVmODI2OTEyYjRhIGxlZ2FjeS10cnVuaworNjIxOTQgMjdkMzI0MzYwYTYzZTMxNGUyMmFhMmE4MTAwY2NiYTNmZjIzOTA0MSBsZWdhY3ktdHJ1bmsKKzYyMTk1IDg2ZGE5Mjk4YjkwOGI4Yzk3NmI4MWRhMDkyMTEzYmI5YzQyNWJlMmIgbGVnYWN5LXRydW5rCis2MjE5NiBkZjc2MTk1Mzk2MzFhMjY4YzJlMDY5YTAyMGNlOGRhNGViMjg4ZmZhIHB5M2sKKzYyMTk3IGE5M2QyOTE5ZWE1OWJkZDlhMGExMGQ2NDQ2MDdjYjliZjFiMjAwOTcgbGVnYWN5LXRydW5rCis2MjE5OCA0YmRiZWY3MDk1MTU1YWJjZjhiMmY5NjA0YWY4NzVjMzk5NzNmZDBlIGxlZ2FjeS10cnVuaworNjIxOTkgNGU3MjQ4OWYxNmQwNTBhZmI1NDczNDc1ZDczZTg5MThhZDQ3ZjFjMSBsZWdhY3ktdHJ1bmsKKzYyMjAwIDNhYjU0NzRiZGU0NTdmODRlZjUwN2MzN2E4ZDI2NDQxYWJmZjE5NDkgcHkzaworNjIyMDEgM2Q5YWQyN2Q5MzBiMDc4ZTAxMGQxODBmYTczNWM5YWIyOWVlYjMwMyBweTNrCis2MjIwMyA1NmU0OTk1MmQxYTRmNjNiYzUzOTQ5MmEwZDdiM2JkMjA0YmQ3ZWNmIHB5M2sKKzYyMjA0IDJkOTVmN2E5ODNkODJkODBmZDhjYmFiNGRiMTk5N2NkNDFjYjIyZmIgbGVnYWN5LXRydW5rCis2MjIwNSAyN2RmM2I4MTM1MTgyOGQzNzRkN2M5MTBmMTY5NDljMGQxM2Y1MjM0IGxlZ2FjeS10cnVuaworNjIyMDcgYzI2NjcwZjFlNTIwZmVmNGYxODAyMWFiYTJhZGM2OTE0YzcwZmNmYyBsZWdhY3ktdHJ1bmsKKzYyMjA4IDIzYjY1ZjJkNzYyMTlkMjk5YmYwYTU2YTBlMTBkNjYzOWVjNGQwNGYgbGVnYWN5LXRydW5rCis2MjIwOSAwYmU0MDBjYmQ1YjhhMDJjNmNhOWUzYzYzNDY2YTIwNDFjZmU4ZDNiIGxlZ2FjeS10cnVuaworNjIyMTAgZDc2ZTU5ZmJmMDZkNDE3Yzc1MjJlOGM1OWJkOTExNjNmNmY4NjUwOCBsZWdhY3ktdHJ1bmsKKzYyMjExIGZkNDdhOTAwOTA1YzJkNmZmN2JjNmNmYmZlZmFjMzE0YWNjMzVjOGIgcHkzaworNjIyMTMgNjBjZGI2NzAzZGYzM2U4YmJiNmI4M2NiNmYyNjJiZWMwMTI4MDdiNSBweTNrCis2MjIxNCAwOWYzNmQ1N2M5ZDYxM2E5M2Q0MGVhNDBhYjQ2NzFhYmYzOTQ2Zjk4IGxlZ2FjeS10cnVuaworNjIyMTUgZjljNjFjOTZhNzY5NWIwYTg1MWEwYTgwOTFjNGIwNDg4MjdlZDJiNiByZWxlYXNlMjUtbWFpbnQKKzYyMjE2IGNkMDgxODQ2MzdjNThiZWYyNGEwYzgwZjljODJkZmUzN2M0ZjkyMjIgcHkzaworNjIyMTcgODlkZDE2MmYxNTViZmNhOWUzZDkyMjEzZDNjODMxOGUzNWEzODQwNCBweTNrCis2MjIxOCA0NTg5ZDgzMWFhODBiYmU1MTZiODE4ODBhNDY1ZjIxMmEwOTE2Njk4IHB5M2sKKzYyMjE5IDIxOGYyZDU1ZGU0ODgxYWMxZDU4YWI3N2Y1MGQ3MDYzOTU2MDAzNzkgbGVnYWN5LXRydW5rCis2MjIyMCA0MzQ4MzQzMjE5MjQ4OWQ5YzkzYTJmY2M1ZDU2MzhkMzdhMWUxOWQ3IGxlZ2FjeS10cnVuaworNjIyMjEgNjNhMGQzM2M0Y2QzNTQ5ODYzNjc2NDM2ZTMyYTQyOGVhNzQwMTI0MyBsZWdhY3ktdHJ1bmsKKzYyMjIyIDI3MGQ3OWY5MDA3MTFlYmQ0NjRiMTE1ZDcyZDEyMmYxMmFhMDRmMTcgcHkzaworNjIyMjMgZTAyNGI3NTUyNzk1ZWNiOWVkNjY3YjM5MmVhOWZhYTg1MWU1YWU1YSBsZWdhY3ktdHJ1bmsKKzYyMjI0IDYzZjlhODUyNjA5ZTMxODg2ZjEyZmY1MGNkOWExMmRkYzY3N2U3MGEgcHkzaworNjIyMjUgYWU2NGZhMWJjOWNiYjRiOWU0MmYxMGM0YzJlOGYzOGNiMzRhOTkyNCBweTNrCis2MjIyNyA1MGY1MTg0ZWVlZDhkOGFmMTFjZjFjODE4MmQ2MjYyNDBkMDkxYzAxIGxlZ2FjeS10cnVuaworNjIyMjkgMzgyZDVlYTE3ZDc4YTQ4ZDJjYWVhYTAyNjMzN2E1M2FkMTRiM2RkMyBsZWdhY3ktdHJ1bmsKKzYyMjMwIDg1NDNmOGM4MWRhMDg4YWQyN2QyYWVmYmViYjIzYmYxMWRmNzUxMzYgbGVnYWN5LXRydW5rCis2MjIzMSAxZjE1NDYzYWY5OGMzOTRhMzE3YTNmYTc2NzMzZDQxYTE2ZDg2ZWMzIGxlZ2FjeS10cnVuaworNjIyMzMgN2ViZTgxYjFlNDIzMmE1YTZmZGVlYjY2NmFiMzhjNGUyMjJlNjgwZiBsZWdhY3ktdHJ1bmsKKzYyMjM0IGQ5MTdkYTJiMTk0NmUxMmM0NmY1MjMyNmE4ZTY3YTNmNWE1MTkwMzMgbGVnYWN5LXRydW5rCis2MjIzNSAyN2M3MTM5YTk4ZWY3ZTllNmQxMWM0NDc0OThiZTE5MzI4NDQ3OGE5IGxlZ2FjeS10cnVuaworNjIyMzYgMDQ5OGViYjZjNDFiODMwOTgyNjE4MTYzOWFjYjliZTlkYjM3MTQyYiByZWxlYXNlMjUtbWFpbnQKKzYyMjM3IDdmZDI3NGE1OGQ1YzFlMGVjNWViODdlNzFjMWU5Y2UyYzk3YWIzNWIgbGVnYWN5LXRydW5rCis2MjIzOCBhYmRjODFlMWNiNWJhNjU1YmRiYzJkNDEyZWRiYzllMGJhZWEyYTVjIGxlZ2FjeS10cnVuaworNjIyMzkgYWY0YzQ2YmYzZDA5NzJiNzQ1NzAwZWQwNDNmMTc1NGE3MmM0MzQ5OSBsZWdhY3ktdHJ1bmsKKzYyMjQwIDYwODg1ZjhlODU3NWNlNmU0ZjZkYTYwOTMwMDQ1NGUyNDg5OWYzMGYgcHkzaworNjIyNDEgYWZjNjIxYTFiYzQxOTAzOThmZGQ0NGJiMDhmNmU3ZWE1ZjA2YzIyNCBweTNrCis2MjI0MiAyZTkxN2IwYzhmNmU4OTJiYzRkYjhhMWZkYTVlNmZiZmJjZGNmMjRhIHB5M2sKKzYyMjQ2IGIzY2QwMzM5Y2E3N2U5NzkxODk4Y2YxNmMyZDg3OWRhZGJmNTM5OGQgbGVnYWN5LXRydW5rCis2MjI0NyAyYzQ1NTNmNjU5MjQzNTE2Yjg3MTBjMDJkOTMwYjNiZTEwMDdkODU0IGxlZ2FjeS10cnVuaworNjIyNDggYmU3YjBlYjU5OTBjNmI2MWE5NjQyOGExNzg0ZTY0YzI5NjIxY2FkZiByZWxlYXNlMjUtbWFpbnQKKzYyMjQ5IGFmZjM4MzlkMDM5NDFhZDQ1YWQ3YzFjNDllZDhlMzE0YmExOGFkYWYgbGVnYWN5LXRydW5rCis2MjI1MSA1YTU2OTJlM2M5YmUyMjk1NDcxYTY2ZTg0YjRmY2E0ODhiZDVlYmZlIHB5M2sKKzYyMjUyIGZmMzRlZjBhODA5NjQ4Y2RjM2UwOWI1NDY5NzcwZTlhYTk5MzA1NTMgcHkzaworNjIyNTMgMThkYjhjNGQ0NDg3YWU2OWEzZGVlZTBhZmM2NWZjNTg0MjEyNzc2NyBweTNrCis2MjI1NCBlZmE5Y2MzYmQ3ZjNlYmE2OGZhNzhlNDlkYzJiMTFiNmFlMDU5NWU4IHB5M2sKKzYyMjU1IDExYjE4ZGQxNTkwM2ViOWMzYmE2NzMyMDE1MzhmNzUxMTk4MmM3ZWUgbGVnYWN5LXRydW5rCis2MjI1OCBkOGI3NzFiZTIxZGY0NDk5YTI0YjA5ZTVhNmIzNWQ1YmJlNmNmNzRjIHB5M2sKKzYyMjU5IDM2MDMyNjc2NzI4ODBhNDFjNWE4OTdmYTAzYjllZDJkNzU0Mzc3NDIgbGVnYWN5LXRydW5rCis2MjI2MCBjZTMxODc0NjIwMTFmNjgzODZjYjUwZWI5OTk0ZWY3ZDVkM2RmMjdkIGxlZ2FjeS10cnVuaworNjIyNjEgMGI1NTg3NWMxYzljMWQ2NjBmNzMxYTMyOTU5YTkxNmU5ZTM1ZjczMCBsZWdhY3ktdHJ1bmsKKzYyMjYyIGNkNGIxZjNmZDFhOTc0MDc1MDI2NDNiMzA0ZjFlYThmZjVmYTgyYzcgcmVsZWFzZTI1LW1haW50Cis2MjI2MyA4NDJhNmMyYzliY2QyYTczMGNjYzQ1N2YyMWY2YjJjZjVmNGNkNDViIGxlZ2FjeS10cnVuaworNjIyNjQgMjI4N2E0YWIyNGQ4NzYxMTk4OGY1MTZiNGFjNWYyNWMxZmU4MGY1YSBweTNrCis2MjI2NSAzY2U3Yzc5NmJjYTEyNDk1YmNhMDdiN2ZjY2JlYTYwZGE0YmMwYWExIHB5M2sKKzYyMjY2IDhkNTU1ODUwZjczZDk2OGZkNjdjYjJiYTZjYTE1ZjkyNzE3NGU3YjIgbGVnYWN5LXRydW5rCis2MjI2OSA3Yzk5Y2VkYzNlNTRhNWVmYmY4ZGIzYTQwMzQ0OTU3MTNjODI3NmFhIHB5M2sKKzYyMjcwIDVlNTVkNDI3NWEwOTQxMGQyOTZiNzcxYjA2ZmM5NDY2ZTlmYTVmMGMgcHkzaworNjIyNzEgMWFhYWIzMjE4M2YyMjc0NTg1OTZhZTAzZjlhZDljYmM2ZmZjYzBmNyBsZWdhY3ktdHJ1bmsKKzYyMjcyIDA0MTBmZjgxOGVjNzhlZjFiMjI0MGIzYTI3ZTAwOTJlY2RiZDU4OTEgcmVsZWFzZTI1LW1haW50Cis2MjI3MyA2NDVjNTM1ZjgyMjMyNmViNzcwMTg2NzYzZjA3N2RkMmM2OTYzODIxIHB5M2sKKzYyMjc1IDg0MTZjZGQxMWMxMTcyMTgwMmU5ZDI3NTY3MTU0NzQxODRiY2FkZTQgcHkzaworNjIyNzYgNjE5NjUyOWFmZDczODQ3NWY1OWJmMGI3N2RhZjUxMjE1ZDdhMzI5MSBweTNrCis2MjI3NyAyOWE3YmVjNjEwY2JmMjM5Y2U5ZDg1ZTIwNDRmM2I5MWFjNDRiNzU2IGxlZ2FjeS10cnVuaworNjIyNzggNDVmZGFlNGNkYjU1N2YyYTZjODUwZGU4OTUyMTI3NTZmOTkyOTc5OCBsZWdhY3ktdHJ1bmsKKzYyMjc5IGRkY2U3Yzk0MjFkMmU5NmZkNTVhNmU5Y2RlYTIyNTUwZjljZTVhMDMgbGVnYWN5LXRydW5rCis2MjI4MCBhZmFjM2ZmNjBjNmM1YzEwODgxNDczY2EzNjM1YzMyM2Y2MTlkZWJjIHB5M2sKKzYyMjgxIDA5NGE5Y2U0YjliZDRmZGRmM2FiZjk0NmYzODQ3ZTQ1YjJiN2IwNGIgcmVsZWFzZTI1LW1haW50Cis2MjI4NCA5Nzk3NGQ5NjcxMjcwYjc4N2U5YWMyNDg2YzE1NmQ4NGFiZjQ1NjFkIHJlbGVhc2UyNS1tYWludAorNjIyODkgYmMzMzc3MGNhMTE0OGM2MDI5YjI3NDk0NGY4MDRiYThjZGU3NmRiYSBsZWdhY3ktdHJ1bmsKKzYyMjkwIGEyNDg1NmJhNzdmZWQzNGNhZDUyNTk4YTEzOTNjMzM1ZjNhZTcwNzIgbGVnYWN5LXRydW5rCis2MjI5MSAzMzYxYjk4ZmY0ZmY4Y2U4Zjc5ZmQ3MmUzYjk1ODFmOGUyNDFlN2FjIHB5M2sKKzYyMjkyIDM2NTNmYmRkNDQ4MzliYmExMDg2MDc2MGRmYzI0NDM5YmFjYmQ5NjggcHkzaworNjIyOTMgYzFmYTJlNzU4ZTA1YjVhNGIwN2JiNjY0NWZkMjZjMjU0YjY2MWY0NCBsZWdhY3ktdHJ1bmsKKzYyMjk0IDk0NzgyYmU4ZjFlNzdiNThiZjhjOTVlZGE0ZTVhZGM2ZDM3ZTkwZmMgbGVnYWN5LXRydW5rCis2MjI5NSBmZTI3NTFhY2FkM2UxM2E1Y2JhZmMwNDNmZjQ1MDMyMWIxYWU5ZTQ5IGxlZ2FjeS10cnVuaworNjIyOTYgY2EyMzNiZTY0NTk4OWNhZGZmNDQ2NmQxMjU2MTE0NTY1ZTYxOWQ5NCBsZWdhY3ktdHJ1bmsKKzYyMjk3IGQ0NmY2ZWIwOWViY2ZiODY2NGFkYjg5YTcwOTYzMTlhMGE2YzY5ZTIgbGVnYWN5LXRydW5rCis2MjI5OCA3NjRhYWIwZThiOWIxZTQ2YTM0ZTI5MWI3M2JiYjg3MDAxYTFkNjgzIGxlZ2FjeS10cnVuaworNjIzMDEgOGI5MTRmY2U5ZDg0YzA4NGRhNDk5NmUwNDg0OThhYTJjMDk1M2MyNSBweTNrCis2MjMwMiAyYTk4NTgyNTVkZTEwODczZTg5OGIzOTA4NzNlODQwM2Y4YmU4NmYxIGxlZ2FjeS10cnVuaworNjIzMDMgODQwMDY0ODAyOTUyYjM3OGU4MWY0NjI3YTAxNzVjNmY4MmRjZWE2NyBsZWdhY3ktdHJ1bmsKKzYyMzA0IGY3ODFjYTE0Mzk1YjA2NTdmMmFhZTYxOWU1NjE2ZjJjYWRiNTI4ZjcgbGVnYWN5LXRydW5rCis2MjMwNSAzOWVhMmZjNDUwM2QxMjMxNzk1YTdjY2E1ZDc0YWViMTM0OTUzYjIzIGxlZ2FjeS10cnVuaworNjIzMDYgODNlNjk3NWMzMTk5ODQ0MTdhYjFmMmNlZTE4MzNhYjJjYTI3YzNkMCBsZWdhY3ktdHJ1bmsKKzYyMzA3IDMzMDdhNTQ1MGMzNzlhNjkxYTJlODlhNmQxZWFhOTllMzM0NjhjNzIgcHkzaworNjIzMDggMzZkMGExZTBjMDI0YmE5ZDAwNzZiNThkMWMxYjcyM2Y5MjUyODhkNCBsZWdhY3ktdHJ1bmsKKzYyMzA5IGI1NDRiYjYxYmNhOWNhYmQwMzM3OGY4Y2M3YjU3MjJkNWE4MWJiNjIgbGVnYWN5LXRydW5rCis2MjMxMCA5YWQzMGNjY2U0OWMxODFjZGUzOWJjMWY1MzAyZmE4MjFjZWU2ZWQ5IGxlZ2FjeS10cnVuaworNjIzMTEgMDIzNDNlY2FmMGJiMDA4OTc5ZGZlYWEyNTQ0YTMwMzFmYjA5MDc3MyBsZWdhY3ktdHJ1bmsKKzYyMzEyIGUwYzNhY2IxMTZhNTU0YzEwZTYyOTdlYzIyODllZTA3YTY4YTg4MmQgcHkzaworNjIzMTMgOGYyYjY1ZWM3YmJhYjc4YjlkNDBlNDg0YTJmZGI1OGI4M2JhZGMyNCBsZWdhY3ktdHJ1bmsKKzYyMzE0IDI5MjMxYTk3MzU4MGVhODRkM2VlMWJmZGYwZWU5Mjg4YzU2ZWFkMTcgbGVnYWN5LXRydW5rCis2MjMxNSBmYzMzZTc1YjkyNTcwZGMzZjEyZjQxM2M0NjRjNzMwMDhiMTlkNzJkIGxlZ2FjeS10cnVuaworNjIzMTkgN2E1YTU4MGJhNmVhMjNiYTk4MDYwMGM0NzFhMTVkMDE4MTcxZGUzZiBsZWdhY3ktdHJ1bmsKKzYyMzIwIDA1MjgyNzkwMDc4MjZkN2Y4ODQyYmY2N2RkZjZlZWUyNGE1MTViYTggbGVnYWN5LXRydW5rCis2MjMyMSA4NWYwZTFhYzBiYzliMmIxMDZiMDQ1NzMwOGEwNTA4MzdiMmU1NjljIGxlZ2FjeS10cnVuaworNjIzMjIgNDdkOWJiZTEwODk3MjBjZDFlM2QzNzA3NGVhNTNiZmNjMDllMmUxMyBweTNrCis2MjMyMyAwMjhkODYyNTQwOWIyMjJkYWQ3Y2RiNjlhMDJmZDY5ZjdhNjVmYWQ4IGxlZ2FjeS10cnVuaworNjIzMjQgNGFmZGM2OGVhNTJlYTU4YzY1N2Y1ZDQ1MGU3NzQ3MGE1OWE5YjMzNCBsZWdhY3ktdHJ1bmsKKzYyMzI5IDY5NTJlNzE4MWZmYzg4ZjhiZjkxNmQ5NzIzOWY1YThkNzQyNDFmN2MgbGVnYWN5LXRydW5rCis2MjMzMCBiNDIwZWFiZjk4MzU0NTk3NDMwYWQ4N2JjZDg3MjlkNTcwMGM0MmYwIGxlZ2FjeS10cnVuaworNjIzMzEgN2MyMWNjMTRiOTRmNWE2NGQyODZhM2RjYzVhYjc0ODQyZmUxNGYxMSBsZWdhY3ktdHJ1bmsKKzYyMzMyIDAzZDljNjY0YTdiYzg3MDVmZDVjZTZmZmE4YmZlZTVhMDQ0YzMyY2MgbGVnYWN5LXRydW5rCis2MjMzMyA0MGZkZDVjZDJlZjUxZDYxNjhkMDc2MjgyNWYyN2ZlY2QyYjRhMGNjIHB5M2sKKzYyMzM0IGZiMDgxMDI1YjIyMzBiZDdkNDhmMWUxMzM5NGUwMjVjN2U0ZDViNTYgbGVnYWN5LXRydW5rCis2MjMzNSA0Njg3OWU3ZmM0ZDMzNTRiZWYxZGQ2MDg5ZDQwYTI3YzQ3ODQzNjAzIHB5M2sKKzYyMzM2IGM3NDQyMzUxMDM2MTgwNzFkNjA4OGJmM2I3ZDRjNTIyODlmYmE3NjUgcHkzaworNjIzMzcgNzJhNzY0ODY5OWQwODM4OTlkMjM2OTJmMWI2ZTQ1OWIxNDc2MjI4ZiBweTNrCis2MjMzOCBiM2RjYThmNTUzNWVjMjIxZjUwZjhiMTM4NzBkODdlNzMxZDkyZWNiIGxlZ2FjeS10cnVuaworNjIzMzkgNjE0ODdiZTZmNDQyOTJkZDM4ZDVjZWIyMzM0MzA3ZGY5OWQ3NjBjYSBweTNrCis2MjM0MCA4ZGQyNDc0MWI2YWFmMGI2MjQzYmI2N2M4ODAxMzIyNDgxYmVlOTI2IGxlZ2FjeS10cnVuaworNjIzNDEgNmU0Y2E5ZjcyYmJhNmRkYjJkMDZlOGQ3ODBhNWFjOTgyOGVmZTczMiBsZWdhY3ktdHJ1bmsKKzYyMzQyIDBmZWRlNGQxYjE0YmEyYTUzYjEyNzIxOWFmY2YyZmVkYTNkZDU4ZmQgcHkzaworNjIzNDMgYWQxNzBhMzM1OTY3YmFiMjE3YWQwM2I1MDk4NWJlYzBjMGFiMGQwMiBweTNrCis2MjM0NCA1OTc1M2JkY2UwODk4NDljZTFjZDdjYTliYmU3OGU4ZDg5MWUwMjMzIHB5M2sKKzYyMzQ1IDI0MjA1YjFmOTU0ZWY3NWU2MjMyZDdiNjg2MmFhNzk0NzNiZmNhMzggbGVnYWN5LXRydW5rCis2MjM0NiA5OWJmYjhkZTM0YjFmNmQwMTYxMzZhZWJlMDg4ZDc3ZTRjYWY5MWEwIHB5M2sKKzYyMzQ3IGVhYjE1Mzk4ZWVmMDBhY2I2OWU4MGIzZWUxNTJkZDFjMTFjZGM2OTEgbGVnYWN5LXRydW5rCis2MjM0OCA5MWIwOTlhN2YzZTIyYjgzZWE4MjAzNGY4NGYyZjZlNmEyOGQ2NDBlIGxlZ2FjeS10cnVuaworNjIzNDkgOTgxZGYxM2FhYjIwMDhjMTE0ZjQ1MTg1NzRlZmJiYzM4NmZmNWRkYiBweTNrCis2MjM1MCAxODQxZjkyZTMwZGVmMGE1YjMxMjdmNWFhMWZiMGEwM2QzZTcyZjM0IGxlZ2FjeS10cnVuaworNjIzNTEgZWYwNmVkODA0OTE4YTFhNDAzMjFjYWRmYmQzMzljODlkYmVlOTgzMCBsZWdhY3ktdHJ1bmsKKzYyMzUyIGNlNTU5N2FmOTljN2Q5NWNiZjViMTlhY2Y1ZDAwNzM0YWMyOWI2OTIgbGVnYWN5LXRydW5rCis2MjM1MyAzZTA5NWFiNzVmYzg5YWVkMDJmMGM0ZDVjNzljZjg3OGE0N2UwNjYyIGxlZ2FjeS10cnVuaworNjIzNTQgMTlmZDQ2M2VhNzI4ZTQwZTg2ZjY4NzhiY2MyNTVmMGQwNmQwOTRkNSBsZWdhY3ktdHJ1bmsKKzYyMzU1IDM4YzgzMWI0N2RjNWJiNDMxY2MwODJlNDk1NDAzZDczNTk0YmNmNWQgbGVnYWN5LXRydW5rCis2MjM1NiBiMDRmMjA1MmU4MTI2Mjk2MWQyYjNkN2Y3ZTUxNTAxOTkwODZiMDZiIHB5M2sKKzYyMzU4IGI3MjMxMDY5MDFlMGNmMGYzYzQ0M2IxZTFiZWYzYWE4ZTcyZDUwNzUgbGVnYWN5LXRydW5rCis2MjM1OSA5ZjNjYTE5MTYyYTczOGE2MjBjNjAyNzYxYTYxY2JmMDFkMmVhMmY2IGxlZ2FjeS10cnVuaworNjIzNjAgNDgyODk2NDVjZGVmNzdmZmRlYjU2Y2JiYjNlYjBiY2JmYjY2MTVhYSBweTNrCis2MjM2NCAxYzliYTQwMTFmNWRkODViZGRlYTNjZjc4NWQ4NGM2YjMxYTY5Y2FmIGxlZ2FjeS10cnVuaworNjIzNjUgMDdkN2U1Y2RjMWEwMTBjZjkxYTI0MTcwODk4MDg3NTE1NDQ1NjUxZSBsZWdhY3ktdHJ1bmsKKzYyMzcwIGJjOTZiYWM1ODZiNGMyMWZjMmIxMmUyYmYyYmNjZjAxNjgzMWVmZDcgbGVnYWN5LXRydW5rCis2MjM3MiAxZmVmMjZmODliY2VhMTg2YTU0MzIyMDJkOWYwZjZlNzRkMjE5N2E1IGxlZ2FjeS10cnVuaworNjIzNzMgN2NkMzYzZGY3YTg0NmNkMTgyNTA0YWZkZTgwYjU4ODgzMmI1ODIxZiBsZWdhY3ktdHJ1bmsKKzYyMzc0IDUwMjRiMTJhMDM5ZDFjN2RlMWEwYjIzZTc4YjE0N2I0ODE4YjA0MDkgbGVnYWN5LXRydW5rCis2MjM3NSA4OTE4YzUxZGUwMTA4YWNlYzcxMTNjNjU4MTlhMzkxYzY0M2IwZWQ3IGxlZ2FjeS10cnVuaworNjIzNzggNGY4MjYxYjkyZmM1NjBkZWQ0MzA2ZWFhZWU2NTFjY2E1NmRlODFiOSBsZWdhY3ktdHJ1bmsKKzYyMzc5IGZiOGQzZTFmNjE2MTJkNDRlZmYxM2RiMDYwMTI3MzAxNWIxMTQ2MDUgbGVnYWN5LXRydW5rCis2MjM4MCA1YmM3YjIwZGMwNGE5ZDI0OWE4MjMzOTQ1NzY0MTVkYTdmZTg4YTkwIGxlZ2FjeS10cnVuaworNjIzODEgNWM0MzE1OWY1YWQwYjA2NTk5YjZiN2EzOWJlY2M5ZWJjMDBjNmJjZCBsZWdhY3ktdHJ1bmsKKzYyMzgyIDc3OWNhYTFlMGZmYjJlMGM4MmUxZTczY2U3ZjE0NGQyOWMyM2MyMjEgbGVnYWN5LXRydW5rCis2MjM4MyBhMTk5NzM5OWY4NzI0YzRhYTMzNTQ1NTg1ZDBlZDczMTdlMDkzYmEzIGxlZ2FjeS10cnVuaworNjIzODQgYjY5ZjQ0M2VmNDgwNzE3OWNiMTFiNmI1MmViMzY1MzM5ODk4ZjI4MiBweTNrCis2MjM4NSBiZWI3YWJjZDZjMDFhNTQzZGFkZjZmODI1OGRmZjVmYjdiZGUyZTY4IHB5M2sKKzYyMzg2IGUxNjU5M2RhNDg5ODljNzAzZGFlNjczNmE4MGZlZDU4ZTJmYTAwZDQgbGVnYWN5LXRydW5rCis2MjM4NyBlMDI5ZDdjN2RlODExNDQxMzNmZThhODk5MDUwOWFjNzdkYjY0Yzg3IGxlZ2FjeS10cnVuaworNjIzODkgOTdjMjE0MTdhZjQwYWQ3YjI3NjY3ZTU0Mjk4MjMwYmU0ZmEwYjcwNSBsZWdhY3ktdHJ1bmsKKzYyMzkwIGIxYzcwYzg5YzNkYTZjMzljMTEzMmVlMTMwNmQ2ODg0N2IyNzI0NDIgbGVnYWN5LXRydW5rCis2MjM5MSAzNzQ4MzNkZTU3MGMyNDFiZTA2MzRmZTE0YmU0OTJmNTAyZjYyOTUwIGxlZ2FjeS10cnVuaworNjIzOTIgMTBkYTI3OThlNThkODM2NDFjYjAzMjJjNTdlMDM4ODNlMTA3ZjJhZCBsZWdhY3ktdHJ1bmsKKzYyMzkzIDRmNzE4MDYxZjQ1YTQ0MTg3YzUyMGIyYzYwNmI0NmZhZjFjNDE1NmUgbGVnYWN5LXRydW5rCis2MjM5NiA4MmQ4NWEwNTkyM2JmMzk4NDZhNDUxNmIxNjAyMGYwZDBlNTc1MGI3IGxlZ2FjeS10cnVuaworNjIzOTcgZDBmYTQ1ZTYzN2EwNTAwMTkwY2QzZGZiM2U4N2VlZGJkNTQ4OGZkNCBweTNrCis2MjM5OCBjMzY1OWNlODkzZTdlOGJiZWJiOTI3ZmJhZmIwODcyNzkwNmI4Yzk4IGxlZ2FjeS10cnVuaworNjIzOTkgNjQ0YTY3ODMwMDYxYmEzNWI0ZjhhZmZiOGEyYjY0NTIxMmZlNGYxZiBweTNrCis2MjQwMCA2NDhiNGQwMWNjY2Y1OTU1ODE1NTU2NWIzYjNjNGZiOWFjZGViY2NhIGxlZ2FjeS10cnVuaworNjI0MDEgMTAyMzZkMWQwODYwNzY3YTQ5YThlZTE0YjFjYTUyOTRiM2M5ZWJlYyBsZWdhY3ktdHJ1bmsKKzYyNDAyIGRhNGE4N2Q2M2IwZWUzMDBiMjAxZGEwMmZlMTQwYWUxMmZjOGQ1OGUgbGVnYWN5LXRydW5rCis2MjQwNSAzODVlMjE4ZDBmNmM1YWU1YjNmZjdjYzczYjgwNDMxNzY1M2ZhM2JkIHB5M2sKKzYyNDA3IGZmNThjYjVhYTc2ZGE2MDA5Y2NkOGUyMWU2YTI2OTNmMGY0Mzk2ZGIgbGVnYWN5LXRydW5rCis2MjQwOSBmNjQxZTUwNWZmZjQ2ZTE3NjVhNmQxMGYyMzUwMjEzM2NhZDQxZDc0IGxlZ2FjeS10cnVuaworNjI0MTAgMzViZjgwMTJhMzc2ZTYzZDE1YTkxM2U2MzgyOWUwN2FiZjAwOTAxMSBsZWdhY3ktdHJ1bmsKKzYyNDExIGQxNjYyNTFkODAxNDQ5MTY3Nzc3Mjk4OWVjZWM2N2U3OTY4M2ZhMjQgcHkzaworNjI0MTIgMzFmZjU5ZDk4NGJkZTJjOGU3ZjgzZmY1NjcyMGY2NTQzN2EyMDEwMSBsZWdhY3ktdHJ1bmsKKzYyNDEzIDgwYjE2NTk1ZTQ2MjZjYzg0YjkyNzdmMDBhNzBkMGZjZDkyZWQ4YTggbGVnYWN5LXRydW5rCis2MjQxNCBhMjBkZWYwMTAxZGUyNjllMWFkYWRkNDllMWJlZDAxMDNjNDIxNmEyIGxlZ2FjeS10cnVuaworNjI0MTggZjNjZjEyYmQxMTEyODQ2ZDBhYTQxNTEyZDA4OWJlMzA3NDBlMTA3YSBsZWdhY3ktdHJ1bmsKKzYyNDE5IDczNzMyZDY2ZDBkNWY3YjU3MzUzMjU2ZmFmOTdhOWUwYmE3NDI3MDcgbGVnYWN5LXRydW5rCis2MjQyMCBjNzhjZmUyMTI2ZGExODQ2MTM2ODZjMTZlNWQ3MjA0ZGFkNTkxOTU2IGxlZ2FjeS10cnVuaworNjI0MjEgNjBmNDQ1NmZhMzM4M2UwNzgzYzE0MTQ1MWUyZjM2YjcwNmIzMWUzNCBsZWdhY3ktdHJ1bmsKKzYyNDIyIDYzOTY1MzI3YjNlZjY1ZjFiYzc5ZjE5ZDE4NDE3YzkyMDc5Mzk3MjAgcHkzaworNjI0MjMgNjMyM2JkYzJkNjcxMWZiZjJhZDVjY2Q3MWNmZWVjOTRlZDFiNzdlZSBsZWdhY3ktdHJ1bmsKKzYyNDI0IDAyMjI5NjAzMmQ4ZjY5NjRhMGZkNWMyMTM2NmU3OWQxZGNkY2IyMGIgbGVnYWN5LXRydW5rCis2MjQyNSBmZGQ1YTAxOTg3NjlkMzA3NWE5MzZlOGU4M2E3MjEyYzljYzYzZmMzIGxlZ2FjeS10cnVuaworNjI0MjYgMDUyZmQ4ZjFjYTM3MWM2ODczMzgxMDFlNjU5ODQ1Y2FiOGNhZTZmNCBsZWdhY3ktdHJ1bmsKKzYyNDI3IDQwNmVjYTJkZGJiYzRmODlmNmZhYWMzYjM0NDdkMjdhZDM4OWMwYTkgbGVnYWN5LXRydW5rCis2MjQyOCBkZjEzY2NhYTVhZTk3YzAxZDg2Nzk3NTQ4ODUxOWRkODg0MDYwMmNlIGxlZ2FjeS10cnVuaworNjI0MjkgNjA3NzYwNjMzOWJiOWZkMDIyMDk5NzBlYWRlZTg2YTY0Y2U4MzUyOCBsZWdhY3ktdHJ1bmsKKzYyNDMwIGQzYWY5ZmQxY2ZhZmY2NzY4NjVlYjhjNmE0NTU3YTNhZDhkMmM4YjUgcHkzaworNjI0MzEgZDBiOGE5MGNhMjcwOWY1ZmU5M2IwODhhOTg0OTJmMmZiZDZkZGI4MyBsZWdhY3ktdHJ1bmsKKzYyNDMyIGJiMGY1OGFkYzkxY2UwNzIwZjA5MzZkNTljZWJlM2FhMWQwOTVjMjIgcHkzaworNjI0MzMgZWM0ODQ5MGI5NjlhYmRlYjM4YjA2ZTI0OTkyZDExZTY1ZjFkNGVhYyBweTNrCis2MjQzNCAzODc0OWMwOWM1NTYzNTAxZDA1MTE4ZmZkMzUxYmFjZDczMmIyOWMzIGxlZ2FjeS10cnVuaworNjI0MzUgYWU1NTRlNWQ2ZTA2ZGIzMGZhNTY5M2FiYzdiYjRkOTczNDMwMTMyNCBsZWdhY3ktdHJ1bmsKKzYyNDM2IGY1MTk1M2NjZTZhYjE5YzYzMjM2MDc0YmM0YTI4MzkzZWU1YjJhMjAgbGVnYWN5LXRydW5rCis2MjQzNyA5OGUwNzJmMjJjNGYzZDYyOGYxMTY0OGMwYjczZTQ5MzgwYzM1M2RkIHB5M2sKKzYyNDQxIDFhY2QwMGYyYTM4MDdjYmE2MDFkODViNzg5YmU1ZmUyY2QxYjQ2MzEgbGVnYWN5LXRydW5rCis2MjQ0NCBiN2RmMzBhYzViNWEyNjA4ODc1ZjE0MzU5NzgyOWNkMDM0MTRmMDAzIGxlZ2FjeS10cnVuaworNjI0NDYgMDQ5Mjg0NzBhZDg2MDlhOTg0NzNkMjEyZGFiODlhYWZhZGY0Mjg0NiBsZWdhY3ktdHJ1bmsKKzYyNDQ3IGJhZTJmNGZlZWZjY2NhY2FhZGExNTlkMGEyOTY5NWYxZjZlMDAxNWUgbGVnYWN5LXRydW5rCis2MjQ0OCBjNDRiOGNhM2Y0ZDI5NThjYTg2YmYyM2JhNzI3ZDBiNWY5YzNmZmEwIGxlZ2FjeS10cnVuaworNjI0NDkgYjEyNTgzNjQzMTI4ZWFjZjg1NDc0ODdhMzUzM2IzMzlkMGMzZjIzMCByZWxlYXNlMjUtbWFpbnQKKzYyNDUwIDQzNGJjY2VjYTdkZjA4OTBlNDJlMmM3NjJiMTE4MDlhYjgxNGYxMGYgbGVnYWN5LXRydW5rCis2MjQ1MSAxMDhmZTU3YjlhNjhlMWU5NzhmOGRmYTc2MTk5YWIyYzA0YjgwZGVkIGxlZ2FjeS10cnVuaworNjI0NTIgMmYwMDY1NDQ4ODgzYWJjNTlmNWEyZmZlNTkyNDQ3N2NhOTg4ZTUzZCBsZWdhY3ktdHJ1bmsKKzYyNDUzIDA5NDFkNzllYTdkNmVmYjYzZTBkZDI1NzdjNTJhY2NlYWRmN2U4MzcgbGVnYWN5LXRydW5rCis2MjQ1NCA4OGE4ZGVmNTgwMDc3N2FlMWQ3N2UwYjIzNGEzNzliNDY3ZjIzNGNiIGxlZ2FjeS10cnVuaworNjI0NTUgNjQyZDU3MTIwOTNiODBiMDhlNGJkMjA4ZmFhZThmMmIxOTA0ODQ1NiBsZWdhY3ktdHJ1bmsKKzYyNDU2IDY2Yjc5OTMwNjhiZGEzMWVlNzIzOTEyY2NiNjNmNzg2MjgzZDk4NzIgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU3IGZiM2NiMDQxOTVlMGY4MjJiMDczZGY3NTVjYWJjZDY5MmQ0ODFiZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU4IDE0NDAzYTU0MjU4ZmM0ZTg5NTk1ZjZjM2RlMWFhYzE4MDIwZTlhZDEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU5IDBjNTgyNGIwMDI2MzNiYTQ2MTU4MDMyNjI3NWU0ZDNiOWM0NmI4YmQgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDYwIGQ3ZmVmYjM1ZTk5M2ZmYzk0NzQyYjA5ZDlhN2U4NzYzMWU3YjAwZTEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDYyIGMwY2RhY2YwN2Y1NDBkOTJjOGVjMDNkYjI5OGQ5OWJlYzJiZTlhN2QgcHkzaworNjI0NjMgZmVkNzJmYTk2N2JmNWE0YTMxZDY3MjZhMDhmYTg0NWYzMzRmM2RmMyBsZWdhY3ktdHJ1bmsKKzYyNDY0IGE3NDY1NDM1MjM2NmVmMzg0ZjgxMTgzMjQxNTQwNGJiNTg0Njg5NzIgcmVsZWFzZTI1LW1haW50Cis2MjQ2NSA5OGRjYWQ5MDkyYTg4OWVmNDdhOTE0ZjNkNTkyNDRkZmE2MmVhMjM3IGxlZ2FjeS10cnVuaworNjI0NjYgYzlkZTY3MDViZDExMjk3NWE1YTJhYjI0YTliODllMzhlZWQ4YzMxMSBsZWdhY3ktdHJ1bmsKKzYyNDY3IDJlMWVhNjFjOTRjYzdmMTcyOGU4OWUyYWJmM2YxN2M3OGJjYTU5MmUgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDY4IGVkMjY3YzY5ODliNmNjYjQ2YzU1ODhjYWE3NTI3MjY5NzI5OTA3ZWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDY5IDNjNmEyNWU0ZGJiNWYwZjk2M2JiMWE2OTg4Y2ZhMmM1MjJmNmI3OTYgbGVnYWN5LXRydW5rCis2MjQ3MSAwN2NmMjg0ODBhZDFlYzgzNjJhYzUwMmQ5OWQwZDEwZTM3MTg2YTZlIHB5M2sKKzYyNDcyIDNlOWI0ZmE5M2U1YzQyOTFjNmYyODViZTBiZDFlNzA0ZTExNmJkNGYgcHkzaworNjI0NzQgNjIxYTJlYWNjMjdjNDg5OTNjNjIyODNkMGFjNjNlNzBmZWExZDcyZCBsZWdhY3ktdHJ1bmsKKzYyNDc2IDVlNjM2YzlkNjFhZTU3NWNkNmE0NWU4MTUzNDQ0NzMzY2Q4MTVhZjQgbGVnYWN5LXRydW5rCis2MjQ3NyBhMDIyNTYwMGJmZjE0OTY4OGE1YjBlMmI1MmY3OWY1NDMxNTZlNTNmIGxlZ2FjeS10cnVuaworNjI0NzggM2U4YTAzYTY0OTdlMTcxNDFkM2Q2YmJmMTY0NjkxNWFlZTYxZTg5MiBsZWdhY3ktdHJ1bmsKKzYyNDgwIDQ1OTA4M2M2YmUxNTNlYmI1ZmRhNmEwMzZmY2I2ZWJjNDU3MDg5OTAgbGVnYWN5LXRydW5rCis2MjQ4MSA0ZmY4ZGZhZWMzZmM2ZGI5NDNjNzljZTYzY2I0ZjRmOGFiNzJmZDZhIGxlZ2FjeS10cnVuaworNjI0ODIgYTUxYjMyOTI0NWIxNDRkYWJmOGFkODEzZGE2OTRhYzIxNTlmYTYwNCBweTNrCis2MjQ4MyA4NWQ0NjcxNTY1Yzg3NDljZDViZmQzOGI1Y2VkNjhiN2YwYjVjYmM1IHB5M2sKKzYyNDg0IDkwZTIxNDZjYjhhMzA4YTMwMTJlNzM4MDE1N2NhYzExODI5NGFhMzUgcHkzaworNjI0ODUgOTU5NDdmZGY0MGFlNDhhZWQwZmVmYTM4ZDRhZmE0ZTBkZTgyNTJmZSBsZWdhY3ktdHJ1bmsKKzYyNDg2IGQxZmI0OWFlYzc2NTEwNDRjOWU4MGU2MjAwYzQ0MDU4M2JiNTRiZmUgbGVnYWN5LXRydW5rCis2MjQ4NyA4ODY0ZGZhOTljNzYwMmNlOGYyOTkxYWE1NWE1MDUyMGQ1ODFjMTM5IGxlZ2FjeS10cnVuaworNjI0ODggMzUxMTliMDM2ODZkMmQ0OWYzMWM0NDIzMzhiMTljZDA4MWE5NzE4NiBweTNrCis2MjQ4OSAxY2YzYjM0ZGY2YzYwZWMwZDA0MDgxODdhNjY4MTJmMGQyOGQ4OTNhIHB5M2sKKzYyNDkwIDY2YzhiZDFiZWRmMzIzMmRmMGU0YTJkMmI5ZjAwZTEzYzg0ZDA2NTMgbGVnYWN5LXRydW5rCis2MjQ5MSA4YjcxOGZjMTVmM2Q2YjUyMzE2MmFkMmU4MDVmNDIxYzJhMDUzOWRiIHB5M2sKKzYyNDkyIDViYTZjYmJjYWVlNzM2NDUzYzlhYmUxYjlhMDljYzhiYzJkNDg2MDcgbGVnYWN5LXRydW5rCis2MjQ5NyAwNGJkNzZlOTIwNjU0MzJmZTNmOTdmMzM0OTI4MWU1NzNjOTFkZWViIGxlZ2FjeS10cnVuaworNjI0OTggNjg5ODYzNTUyMzgwNzMxZmY0N2JhOTMyYmQyODI2NTEyY2IwZjIzNyBsZWdhY3ktdHJ1bmsKKzYyNDk5IGNlNjIwY2M5YTZhODY5NDlkMjNkODViMmM5NTA4MmI2NGYxM2E2ZTkgbGVnYWN5LXRydW5rCis2MjUwMCA5ZTA1ZjE1ZjkyMWIwMTBjZGY1MDljZDA0Y2Y3NWM5ZWJiNDZhNzE2IGxlZ2FjeS10cnVuaworNjI1MDQgMGM3Y2E0NzFmYjhkNzc4YmNiMzU3YjkxZGNiMjU1M2RmM2NiY2Y3OCByZWxlYXNlMjUtbWFpbnQKKzYyNTA1IGM3MzgyODA2MjAzMTMwYmE0MTEzNDQ1MzgwNzkyM2YyYTc3ZTViYTcgcHkzaworNjI1MDYgMmEzMWJjMjhjMTBmZmYwYWQ4MzYzM2Q2NmZmM2I3MWM1ZTYwYmNiNyBweTNrCis2MjUwNyAwZTExODViZmEzMTM0Y2QyNDAxZTUwOTYwNjVmMDRmZDEzOTc4MDdmIGxlZ2FjeS10cnVuaworNjI1MDggMGNmYzg0NWI4NTJkODI0YTFkZTllM2YwZTBmODVhMWM2NmJhM2JlOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MTEgNTIzODMyN2Y0NWJkNDA0MmM3NmI1ZDRiOGNkY2NhZjhkZmY5NDExNSBsZWdhY3ktdHJ1bmsKKzYyNTEyIGZmZWVjYmViZjNjYTdjZTc2YjBmODhhNWQ3NjAwOTJmZGZjZjNiMzMgcHkzaworNjI1MTMgZWIyNzQ2ZThiOTgzMzBkZTFiMTAyZjFmYWYxMzg1M2I5NWVmZGFjOCBsZWdhY3ktdHJ1bmsKKzYyNTE0IGFkMzQxNzUwMzYzNmNmN2VlNTcxMDkyYjNiZmJlYWM0NDhkODkzNjkgbGVnYWN5LXRydW5rCis2MjUxNSAzNjFkNzc2ZDM4MGViOTQyNzNjNGY0M2VmNTk1Y2E2Yjc1NDA5OWJlIHB5M2sKKzYyNTE2IDQ3MjMzYTE3ZTk3MDc5NzRlYWVmNDg4MzRjMDFkMzI2NTgxYmI5NzkgbGVnYWN5LXRydW5rCis2MjUxNyBkNThlYzM4ZTZkYjFhOTU4YjI4YTUzZmZjZmMzMmEwMWU5YmIzNTUxIGxlZ2FjeS10cnVuaworNjI1MTggYWVmMzUwMWQ4ZTc3NmU2OTA3ODQyZDA0MjA5NTFhYTJjYjgzZTEzZCBsZWdhY3ktdHJ1bmsKKzYyNTE5IDA2ZTY3Y2IyMjE1ODA4NmEwNGI5NDM0ZTA3MDY4N2VkN2EyNjk5NWQgcHkzaworNjI1MjEgZGFkODhjYjZlZjFmZGQ1OTUzYmU5NmJmODE3MzIwYTU2NDNkZGJmNSBsZWdhY3ktdHJ1bmsKKzYyNTIzIGVkYjNjM2Q2NjAwNjdlYWU1OTI4MjAzMjZiYjcwYjQ2OWY3ODgyOTUgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTI1IGM1ODk1Yjk4MWQ4ZjBmNGRiYjBjYmM3Y2MyNGQ2NGNiNzlkM2E5OGYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTMxIDZiN2M5MWQ5ZGM1MTFiZjE1OGIxNWM5ODQyMjNmYjZhNzM2NjVmMDIgbGVnYWN5LXRydW5rCis2MjUzNSBmMzY1YTAxOGFmNWI2OTQ2OTUwNjcyNTgxNTI0NjVmNWUyYmRkYzMxIGxlZ2FjeS10cnVuaworNjI1MzYgNzY3MDAwNWRhOGM1NjhiZWIzYmU0NjE0ZDE3YTRmYjg5MjRkZGIxNCBsZWdhY3ktdHJ1bmsKKzYyNTM3IGQ3ZDU2NzJmNWQ1ZTA1MGJiYzNkZTZlYTBmNmY2MDYxMzhhNWQzZTcgcHkzaworNjI1NDAgMDZhYTgwMmJmY2IxOGM1YjAxOWUyZjY1MTQzOTFiNjU0ODQ1MTc1MCBsZWdhY3ktdHJ1bmsKKzYyNTQ1IDNkOWRkY2UyZGE4NTIwNDc3MGNhYjc1N2Y5ZmEzMjY0NzIzNmM1MTYgbGVnYWN5LXRydW5rCis2MjU0NiBlYmM0MGU1MDA4Njk4YTU2ZDE3MTM0Yjg0NTY0ZDIzMTc2YjUzMjU0IGxlZ2FjeS10cnVuaworNjI1NDggMThlOWEzNzJhN2EzYTBjYzc5NTBmMDEyNjc5NWI4YTg4ZTQ0ODZjOCBsZWdhY3ktdHJ1bmsKKzYyNTQ5IDg0ZGYwODJkZDIxNjc4MzU4MTU4YTFkY2QwNWY5YjZkZWVjZWExYjAgbGVnYWN5LXRydW5rCis2MjU1MCA1OWRiNTc1YWUzNzQ2MjU2NWY0N2Q2YTQ1YTI1MDMzNTVhMGEzNTFmIGxlZ2FjeS10cnVuaworNjI1NTEgYzVkYzA1Y2QzODU4OWJjMzBhN2JkZmNhNmVkYWRjZDM3YjZkMTczZSBsZWdhY3ktdHJ1bmsKKzYyNTUzIDU3NmZhMjQ0MGEwYzhkOGY4ODlkM2FmYTU3NmZmMDc1Yjc0NjJiMDQgbGVnYWN5LXRydW5rCis2MjU1NCBkMmJiNWYxMzE4NzM4YjAwNjQ3NWZhN2RmMTNiYzgzYTU2ZWE5MjJjIGxlZ2FjeS10cnVuaworNjI1NTUgMDdhNGUxNzEwMjYyOTljZjI3YThmMGEyMzRkOWE1MWM3YThkYmQwMiBsZWdhY3ktdHJ1bmsKKzYyNTU2IGE1MTdlY2NjNzgzYjllMGM4MWEwNGU5ODA3OTlkZGQwZWRkMThkYTYgbGVnYWN5LXRydW5rCis2MjU1NyAxZWE0ZDFiMThhZWQ1OGQ0YjViM2RhOGQwNzA1Mjg0YTQzZGVjMDNjIGxlZ2FjeS10cnVuaworNjI1NTggNGU0NzU0OGVkZDM2NmQyYjExNmJmM2YxYmRkZmE5MWEwNGY1MjM0YiBsZWdhY3ktdHJ1bmsKKzYyNTU5IGZlZjZkNmJhNzhhNDAxN2E4ZDA3ZmUzNDk3NGMzOGMzNjBmOTFkN2IgbGVnYWN5LXRydW5rCis2MjU2OCBjMzRmMGU2MDlmYTZhZTQzMGRkMWM2ZDM2NDFlMzU2OGI0OTc0ZTc2IHB5M2sKKzYyNTY5IDhkM2FkOGFmNjkyYjVhMzRlZmZjODEzNzQwNzg1YTEwNzdiMTFlY2YgbGVnYWN5LXRydW5rCis2MjU3NCA2ZmVhZDRjZjc5MTExZGIwZmRmY2M3YmYzNGYyYWMzZjdjNjBiN2U4IGxlZ2FjeS10cnVuaworNjI1NzcgN2Y2MGIzMzdiMDQ5MmQ0ZmU3ZTE3Yjg5YjcxZjMwNmE2MjIwNWU3MyBsZWdhY3ktdHJ1bmsKKzYyNTgwIDAxNTRkZjI1MGVmNmI1MDk0YTU1ZWYyMGQ1YTNmMWNjM2ZjZjdkZTYgcHkzaworNjI1ODMgZTQyZDM5Nzc4ZWFkOWNjYjQ1ODc1YmIzNmYzOGZkMGRhYzc2NDgzOSBweTNrCis2MjU4NiAzN2Q2NDViMDE1MjMxNmU0MWIxMTg0MDI5ZDM2YmE2ZWY2YjNiYjAwIGxlZ2FjeS10cnVuaworNjI1ODcgN2I0MDgxYmVjNzgzNzg5Zjg2NzA3N2NhNzZhODlhY2M3ZWFiOTdiYSBweTNrCis2MjU4OSBjYmEyODFiMTZhODI0NWUxNTZmYzFmOWIzODEzYjdiNDg5ODJiNmQ3IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYyNTkwIGVmNDIxYTM2NWExZDRjNzAzMTIxZTdjNTFiODE5ZTA1Njc0MzU2ZTAgcHkzay1jdHlwZXMtcGVwMzExOAorNjI1OTIgZDZjNmYzNjZiMjIwNjJmZDNkZWYyYjQyYzFmMTU0NzE3YWNjMTY0NiBweTNrCis2MjU5MyA4ZjVjNzU5ZTAxOWM2NmNiZDBhMzQ1NzllN2Q2OGUwMDcyNjU3ZjRjIGxlZ2FjeS10cnVuaworNjI1OTUgM2QwZDNhNjgwODk2Y2RjZTc2NzkxNjFkNDIxY2IyMWZjODMxZDQ1MSBsZWdhY3ktdHJ1bmsKKzYyNTk3IDk0OGJlYTk2ZGQyMDFiMzIwYjZhOGViYjdmYjA2NGYwOGIzZDc0NDEgcHkzaworNjI1OTggYWYwZWYwNDQwMWJiMmU3OWI2NGY5Mjk1OTkyNjhmNWE2ZmY5MmIzMCBweTNrCis2MjU5OSA3YTZkNzQ3NGNlNmUwOGIwN2NiNmE1M2FkOGY3M2VjYjczMDE1MDdlIGxlZ2FjeS10cnVuaworNjI2MDAgYjEwMTU1NmI5OGVhZTYwOTllOTZkYTMzYWJhOGViZjk3NDNhZDIxZCBweTNrCis2MjYwMiAwMWJlMWM4ZjAwNmJkZDU2MzcxYWIwODk1NGQ5MDlhZTIzNWExNTE0IGxlZ2FjeS10cnVuaworNjI2MDMgMDE0NTM1NzE5NjY4ODVjM2Y0ZjdlZDY3M2JhMWFkY2ExZGY0NWJhNSBweTNrCis2MjYwNCAzMDM2ZTIxYWM2NjFkZGEwMTNlNjc3NzJkOWEzOWQ5N2EwMjg2MDE0IGxlZ2FjeS10cnVuaworNjI2MDUgMTQyMzgzNGI3MmQ4ZDhkMjZlMTczM2I4Nzc2YzEzMmYyZmJhNjIzMyBsZWdhY3ktdHJ1bmsKKzYyNjA2IDY4Y2ZjNTFlNDMzMWVmZTFiNzdlYmI1YjUxMThhOTJmNzQ3NjExYWYgbGVnYWN5LXRydW5rCis2MjYwOCA2NWFjYzU1ZjFhNjkwZmE0MDZmNzBkNzZmNzM2YjkwMjIzNDkzODQ2IGxlZ2FjeS10cnVuaworNjI2MTAgYTQwZDdlNjA1ZjllMTE3YTY2MTc4ZmY0N2E5N2FjMmI1YzhkNmQ2NCBweTNrCis2MjYxMSAzZjIxMTdkMzI3MWY3YzBmNjBkNDVkNzEyYWEzODljZjM5MzFjZWEzIHB5M2sKKzYyNjEyIGU0MmZlMTliYTZmZGYzN2U4ZjI2ZmE5OGQzMzQ0YTJiZmQzZDUzMDkgcHkzaworNjI2MTUgODdkMzEzN2MzMWQ0MzYxMDJkZjc2ZDBjYTMyYTNjZTlhNTIzMTQ3MSBweTNrCis2MjYxNiAzMzE1ZjZiNDQ0MDMwYjg3ODdiY2VhNDNkNjY1MDZjNDk5ODI1ZTIyIGxlZ2FjeS10cnVuaworNjI2MjAgNTZmODFlYTljYjc5NTBkNGU2MmQ1ZTc5NzllNmY5MThiODk4MjgzOCBweTNrCis2MjYyNCA4MGJkNGJhYTYzOTgxOTIwMzY1YTcyNTQ1NzMzNzQ0MDllNDk2NDVmIHB5M2sKKzYyNjI2IGVhMWE5Y2Y3MzVhNTY5NDU0MzM2OGQ4NDE3YzUyMTk4YTc3YTgwMDkgbGVnYWN5LXRydW5rCis2MjYyNyA1NDYwNmVhOWY0YzdiOTMzODQyZWJkNzBkMDUwZGMzZTNjZGEwYTRkIGxlZ2FjeS10cnVuaworNjI2MzYgMGJhMTJjMzJlMmI1Njk1OTAwODVlMjAxMGM5ZWUyZWQwYTYwNDZlNCBsZWdhY3ktdHJ1bmsKKzYyNjM4IGM0ZDkwZmE5MzVlYWE0MTMwNWYxOTQxYjU0ZmZiYjVlMDRhYzc4ZjQgbGVnYWN5LXRydW5rCis2MjY0NCBhMWM2ZjJhYjU5N2UwMzc5NjIxNDVhYjA4ZGQyMTVjNmZjMGRjYjVkIGxlZ2FjeS10cnVuaworNjI2NDUgMjBiNzA3ODY2NDU5YWRhNzRhMDYzOTA4YjhiY2FkOTZiZGRmMGQ0ZiBsZWdhY3ktdHJ1bmsKKzYyNjQ3IDFmZmVjMmE2ODdlOTU5NmY0OGFiYWEzOGYzMDM0YzllYzY3MzFiOTkgbGVnYWN5LXRydW5rCis2MjY0OCAzZjg0ZTZhZTM2ZGFkMjllMDkwYTRiNDc0NmEwM2JkNDhjYjI2NjdlIGxlZ2FjeS10cnVuaworNjI2NDkgYjU1YzU1NjdjYzc2NzMzZjQxZGMxMTk2ZWI1NTUxZjVlZTlkYmQxMCByZWxlYXNlMjUtbWFpbnQKKzYyNjUwIGViOWRhYjk1NmE2ZWI4YjgwZTVhZDRhZmRjMjMzODYzZTFkNmQ5YTQgcmVsZWFzZTI1LW1haW50Cis2MjY1MSA4MDYzNTQ4OWU4ZDgzMTQ0YjRjMDlkN2Y5NDRkMjQyZTQ3MWMyNTVhIGxlZ2FjeS10cnVuaworNjI2NTIgNmQ5NDk3NTk3YzRmM2ZlZmI0YzE4YTZjNTEzYjc3MjkyNWMyYjQ4NiBsZWdhY3ktdHJ1bmsKKzYyNjUzIGNjNjYwMjlkMmVmZTU5MzlhYmMyNjQ0OTQxNTU3YmMzYmU4NzIyZDcgbGVnYWN5LXRydW5rCis2MjY1NCBmZDI3YWM1ZmNjODE4MDhlOWFmZDkxZTZhZDc2NmIzZGRlNjgxYWRlIHB5M2sKKzYyNjU1IDAzMmEwYTBkM2ZhOTYwNmNmZTE4NzFkOWJmZjZhMjEyZTZhZGJjNTQgcHkzaworNjI2NTYgYTg1OWY4MzVlZjUzZGE4YTI2MWY3MjgwMTcxNzJlZGY4NWFkMDE5OSBsZWdhY3ktdHJ1bmsKKzYyNjU3IDBmZGVmMTQ5ODFhOGUzYmIwYTFjMmQwNDg3ZjUyYzdiM2I3NWE1ZTUgcHkzaworNjI2NTggYmQ5MTAwMGM4ZTczZGM3NzZhZjhiNmM2NzRkZjJjOGE5ZGY3NWY3MyBweTNrCis2MjY1OSAzZDQzNzc1MjE3MGI1MmRjMDQxNzgxMTkzODc2Y2UwZTRkYjFhYTZlIHJlbGVhc2UyNS1tYWludAorNjI2NjEgYmZhODJiNDkzMzM1NDA5NzFlNjg5ZjRmZDI3OWZhMjMyMTc5MDBiNSBsZWdhY3ktdHJ1bmsKKzYyNjYzIDBkZWI0YWIwNDI2ZTI4N2Q5NmUwOGMwMjM5NTVhNDgyOTk2Mjc0NDQgbGVnYWN5LXRydW5rCis2MjY2NiBlYzA5YWQ1YmVkMWFjY2ExMGMyY2Q2MWZkNGJiYmFmOTFhZjYyMWY2IGxlZ2FjeS10cnVuaworNjI2NjcgZWE1OTQzMDZlYTg1NDJiOThiZTA2ODYzN2IwNzEyYTc4MzJhMTcyMSBweTNrCis2MjY2OCA2OGIxZDQ0YjVmNzRhNzlmMDM2MDI1N2QzZGM4NzYxNTExYjZhZDQ0IHB5M2sKKzYyNjY5IGVhMzBmMDNiMjRmNDFmODIxNTM3YjZmM2MyZGIwYTA0YzAwZWU1MGMgcHkzaworNjI2NzEgOTQxOGRjNGE3Yjk4NWQ1Y2ZiYmRjYjlkMTVjYmI4ODAyMDY1ZWE3MCBsZWdhY3ktdHJ1bmsKKzYyNjc5IDViYjk0MDY1YjA3OTk5Y2UyZTM0Nzk2NTllN2UzNzA2MTZmNzBhYzIgcHkzaworNjI2ODAgODNjYzA5NjgyMDgxZGMwNDkzZTkyMjNiODUyNzEyZmZjOGE2ZTkzMiBsZWdhY3ktdHJ1bmsKKzYyNjgzIDMzOTBlYjc1OTFmNjEyOGIzZmQ2NjQ4ODY3MjRmNzE5MjljODAwNjYgcHkzaworNjI2ODQgYzk3ZTM2YWJjZGQ1OTU2ZjViMzc4MWRjNjkzM2ZmMzBkNzVjMDVhZiBsZWdhY3ktdHJ1bmsKKzYyNjg1IGFjYjJhOTM5NDI5NmE0NTc1MTQ0MTYxYTMzNWY4NThlYjI0YTlhYjcgcHkzaworNjI2ODYgMTg3MmUxZGMwMzVmYzMyOWI5ZThiOTlmMjNjM2YwN2ViMDRmZGU3ZCBsZWdhY3ktdHJ1bmsKKzYyNjg3IGI3YzY2ZDNlMmUyOGRiMDJkNmNjN2E3NzhlYmQ2NzNjYjJjZDYxZTIgbGVnYWN5LXRydW5rCis2MjY5NiBhOTRiOWRiOTIyM2ZjZDIwZDA0OTBlNTc1ZDNmNDE1ZTM3NzQ3YzQzIGxlZ2FjeS10cnVuaworNjI2OTggYWFhMGFiNDkwMTI2ZTAyZjE4NDA1NWNmYzI4MDQ3ZDA3M2IzNmMzNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI2OTkgZGU3NmJlMDJkYjQyNWIzZTZhNGY2MGI3MWY4NjE5ZmViYTliYmM4ZSBsZWdhY3ktdHJ1bmsKKzYyNzAwIDZkYjM5MmFjOWY0ZWIxNDJiNGI3ZGU3NDY0ZjQxZWRmNDYxMDMyODAgbGVnYWN5LXRydW5rCis2MjcwMSBiOTNhMDQxY2MyMjEzZTU4OWQ0MmE0ZTRhNzcyMmRhNGVhYWZkYjE5IGxlZ2FjeS10cnVuaworNjI3MDIgMjhiMDk5YWM0Y2Q4ZjdiOGM3NTFlNmQ0MzRiZDRjZjM4MjI3M2IzNiBsZWdhY3ktdHJ1bmsKKzYyNzAzIDZjNGVmZTUyZDU5NGQzZmY0ZmEwMWZhYmQyODc2OTgxZGQ1MWFmMDMgbGVnYWN5LXRydW5rCis2MjcwNiBjMDdmMTlhZjU1NGE5ZjYzMGQ3ZWJmYzE5NTAyZDlmNjRhYmQxZTMzIHRsZWUtYXN0LW9wdGltaXplCis2MjcwNyAyZTQ2MzQ0MmU1NzA2MDRjOTVkYThjYjQzZjY5OTk3MDQ5MDQ2YTBjIHRsZWUtYXN0LW9wdGltaXplCis2MjcxMSBmZTMwMGE5NzJmYjhkZjI4NzUwNDc1Njk1OGQwMjliNWFlZjhlODYzIGxlZ2FjeS10cnVuaworNjI3MTMgNzE3MmUxMWU5ZmM4YzY3NmRjZjYzZmZkOTk1NWY1ZDIwMjU5OWI1YSBsZWdhY3ktdHJ1bmsKKzYyNzE1IDY0MzQxNWY5MWE1MGM5MmZmOTM1Nzg5OTJmYThhNjg1MTlkN2U5MGQgbGVnYWN5LXRydW5rCis2MjcxNiAwMzFkZmU0NTU1ODVjY2RkMDc4OTdiOGU2ZDAwNGY3OWNhNDI2NzlhIHB5M2sKKzYyNzE3IGM3YzI1Y2M5OTYzZGQzMzI3ODM4YTUzOTU1ZWE4OWYyNDJlZDUzNzcgcHkzaworNjI3MTggMDVhODE3ZTI1ZjIwZDQyY2M3MGFhNmJlNmNkNzQ2NTJkMmUzNzVhMyBweTNrCis2MjcyMCBkOTA3MWZhODI0NGFmMzQzMzY2OWE3YzcwOTBlNmE1NzY2MDdhZWJmIGxlZ2FjeS10cnVuaworNjI3MjEgOGE5YjhiM2NlMmUxMjIyNTAzNzExMGMwNjk1ZGEwMTQxN2M4MWE1ZiBweTNrCis2MjcyMiA5YjEwYmY2NGYxMjQzMjE2YjYzMDcxMWM1YTgyOGMzOWMwODU4MDRhIGxlZ2FjeS10cnVuaworNjI3MjMgNGM5MGJlOGE0ZDM4MjdkZTRhNDMyNWE0ZGZhOWYxNDhlMmNmMTczYyBweTNrCis2MjcyNCA4ZTMzZjMxNmNlMTQwZGE5NzU4NjNlYTRlOTVkY2Q4YTBiNTQyMWZlIGxlZ2FjeS10cnVuaworNjI3MjUgMTVmMWQyMzJlYWU5MTM4NTdiODI0ZTg3MWExZDNlOTc2MmRiZTJkYyBweTNrCis2MjcyNiAxMGU4ZWY5NWIxMWY5ZGI2MTg0ZTU1NDA5MWZiOGVmNTM5NzFmY2MxIGxlZ2FjeS10cnVuaworNjI3MjcgODZmNzM4MzhhNGJiNzE1MDFmMDM4ZTM5NDRjNWVhNzM2OWI4ODU5OCBweTNrCis2MjcyOCA1NWJmOGQ2OTBlNjdhZjQ2MGJjYThlNWU1M2E0NjU3NGIyODliNzdhIGxlZ2FjeS10cnVuaworNjI3MzQgNGRlZDM1NzU0Y2I3MjFmNDk2MTIyMDhhMGViODg1MTkwMWZhZGQzMCBsZWdhY3ktdHJ1bmsKKzYyNzM2IDM0YTUzODBlZTI3NWFlMGNhMTcxNzE1YTY3ZmZhZTBmZTA1YWQyZmYgbGVnYWN5LXRydW5rCis2MjczNyA4OGEwOTgwNGJiYTM5NDMxNWZlOGEzNTNiNDA3MDVjZTc3ZjljODNiIGxlZ2FjeS10cnVuaworNjI3MzggYjc0YTNmOTQ2YTVlNjc4MTJlOWIwMmY0OTIzODAyODBkMTAwZjk3YSBweTNrCis2MjczOSBkYWMyMTg0M2NmNTM1MTRjNTdmODRlOTlmZmJiODNkZGVlNmYzZDcyIHB5M2sKKzYyNzQwIGUxOWY4N2E5ODc4YzI4OGQzZThjOWUyZDgxMDM3N2MxMzY2MWM4MDggbGVnYWN5LXRydW5rCis2Mjc0MSA5MWQ1ZjA4NDE3MDAwNjgxOTI2NWIxZDEyYTBlMjZlNjNkMGQwNDkwIHB5M2sKKzYyNzQyIGYyYTRkOGQ0ZjA2MzRjZGIyYzY5OGY1ZWE3NDc3N2RjZjhhYzcwODcgcHkzaworNjI3NDQgMjcyOWU5NzdmZGQ5ZWE3ZTNlZGFjNTMzMWI2OGYzZjc4MjYxYjU1NSBsZWdhY3ktdHJ1bmsKKzYyNzQ4IDcxMDZjYTg3MWJmZDFiNjc1Y2Y2ZWJjMjFjYWMwMDA5NTI0NjJiNzMgbGVnYWN5LXRydW5rCis2Mjc0OSAyZjM1MWZhNTNhNmIzZjBlYWZlODg4NmI5NGUwZGQ3MzY4YTQ1ZTQ2IGxlZ2FjeS10cnVuaworNjI3NTYgNWFlOGQ1NGQwOTUyOGY2NTU2MTgxZDVlYmZhYWM3MTE3N2YyMDJlZSBsZWdhY3ktdHJ1bmsKKzYyNzU3IDExZWQ0MDVkOTljYjg2ZjNiNWExNzg1ODVlNjlmMzJlOTQ0NWJhNzAgcmVsZWFzZTI1LW1haW50Cis2Mjc2NCAxZThiOGRmNGRmODMxNTNkZGFiMjc4NzY5OWNlYjZhOTZlYjBmMThjIHB5M2sKKzYyNzY1IGM4MmY2M2VmYmM0MDgzMWI0OWNiYmZiYzgzMjFhYmVkMTY3Nzc3ODUgcHkzaworNjI3NjkgYjBmYjU1ZWNlODlmYzNlY2NjYzU0YmNjZTU3NDQwMGY1YTI4MWFlOSBsZWdhY3ktdHJ1bmsKKzYyNzc0IGY4NDY4YmZkNDM1NzYwNGNmNDk5OGI5ODhjNDM0MGViN2NmNzVlNGQgbGVnYWN5LXRydW5rCis2Mjc3NSBkZGQ1ZjQyMzMyYjk4NTYzMjU3NmM3ODJlYmI1MmU2ZTRmM2U4ZjM1IGxlZ2FjeS10cnVuaworNjI3NzggY2RhODE2YzNhMWU0NmJlM2FmMmViN2Q4Y2UyOTJkZTgyOGQxZjM0ZCBweTNrCis2Mjc3OSAwMmE4MTQyZDgzZGIyODM3MzdmNTFmN2Y5OTUyNzA5NDE3OTUxZjU4IHB5M2sKKzYyNzg1IDkxMzBiNDhhNzEzMGUxNWE0OWM0ZTEyODQyNmJmZjE2MTRkZWJkOTQgbGVnYWN5LXRydW5rCis2Mjc4NyA0YjE5YjQxZWY2MDY0YzUzMDVjYWNiNzdhNWNiYWRmOGJjOGJmNmFiIGxlZ2FjeS10cnVuaworNjI3ODggMWEyZGJjODRiZGZjZjBhOGM0YzZkZTBiMDdkYjQ0ZWI2YmY3ZTMxZSBsZWdhY3ktdHJ1bmsKKzYyNzkwIGY0MDY0YjVjOGM1ZDJkZjRhMGRhNmYyZjUwNDJiNmVmOTFhYzE4ZmYgcHkzaworNjI3OTEgOTExYzg3ZjhlZDVlNTczYTZlMGY4NTRiMzczNzkzZDE1YmIwNjBiYSBweTNrCis2Mjc5MiAwYzJlNGI1NWY4MGI5N2I1NmQ3MWQwMzRkMTMyOTExZDAyNDE2NmMyIGxlZ2FjeS10cnVuaworNjI3OTMgZmZkYjVmNDEzOWZlN2E4NzJiMmQ3YzBiOGQzZmNmMjFlNmNiMDlkOSBsZWdhY3ktdHJ1bmsKKzYyNzk0IDEwYjEzOWQ4Nzg2MDIxYzA5NWFiMzU5NTNmYjg4YTA1NmNhN2I0ODYgcHkzaworNjI3OTcgY2VlYTQwZGFhODQ5MDc5YjUxNWVmODAyNGY0NDYwNDA4MGFjMTZjYSBsZWdhY3ktdHJ1bmsKKzYyNzk4IDdjODBiYWM3ZDc3NjU2Y2I3MWQ5Y2E2MWNlMTVmYjdlZmM4NDc0ZDIgcHkzaworNjI3OTkgYzhhYTIyMGM2Y2VlZjk1OGFkNWQ4ZDUzMjMxZWYwZTVmNzJhOTY5YSBsZWdhY3ktdHJ1bmsKKzYyODAwIDczN2ExOGIyZGVkMzY1ZjBiYmZjOTEwY2ExOGZkYzI0NmRjNzQ1ZjEgbGVnYWN5LXRydW5rCis2MjgwMSA3NGI5Yzg1MzYxZjg4ZTI1M2I5ZjdiYjQ5ZGZhZTA0NjYxOWI5YWQ3IHB5M2sKKzYyODAyIDc0ODZjMjlmOTNhM2VkZDExMjA2MThjNTQ5ZjZiMDM0YzRlM2Q2NmQgcHkzaworNjI4MDMgMGU1YTk2ZmM5NDIyYjRlMTM4NTUzNzFhNDJiMzkwMjg3M2RkOWZjMSBweTNrCis2MjgwNSA3N2RmOTkxZWE2Mzc5OGY1Yzk1YzM5MWY3ZTRhZDcxNDAyMzg4ZTIwIGxlZ2FjeS10cnVuaworNjI4MDYgZDE5NjUwODhiODVkZDczNzZmMGI3ODY4YWFlY2FmOGJkNDU0MWVjMSBweTNrCis2MjgwNyA4YjkzMWE3OTgyN2E5YjY1ZTAxMzBiN2ZjOWEwNTRjN2Q3NjAwYTZhIHB5M2sKKzYyODA4IDVmYmQ5N2YxYmMzNWUzYzk2ZTNhZmIwYzUyYWJmNGRkZDVjYmExM2EgcHkzaworNjI4MDkgMzhiOTRjMDk3YTU1MjZmNWFiYWMwMTRmNzRiNWY5MGZhZGZjN2UxNCBweTNrCis2MjgxMCBkN2UyMDI5YjNjYTRiZjExMzBjYTM5MWI0NmRhZWI4ZDg3MjYxNjFkIHB5M2sKKzYyODExIGI2MzU0NjJhNTc5OGYwM2U1NTJmMWNjMTAxNTZhYTUzZTAzYTA0MmUgbGVnYWN5LXRydW5rCis2MjgxMiA4MTU0NjQ5YzU1MTY2MjAxZTA5ZDBiNzA0YjRjYWQyZTdlMzk1MTc1IHB5M2sKKzYyODE1IGE5YWNmMThhOGU1NzUxMWM3YmVhODg2NGNhMzllMTg3Y2MwMzUwOTMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE2IDQzMDdlZWQxZjczYmU5YzRiN2ZiOWM1ZDdkZTMyOTUzODc1ODAzOGYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE4IGI5YTNhYmY1OWE0NTQ2ZjAwMmQ2NmU0MTgyODAxMTNjNTY5NzkwZTAgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE5IGE2NGY0MGI2MjE2OTYzMGM2N2ZhZjRjYmNhYmY2NDdlMWM2OTNiMDggdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIwIGJiOTU2ZjRlMzI2ZWM0NjE1NWYxOGY1Y2ViMjA2NWQzMDI2ZmE2MDIgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIxIGM1MzgxNTI2NjM2MGYwNWZmNWExZWEwNjU1YzUzYmI4MWRiYWI0YjYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIyIDRiMDM5ZWRmZWU2YmVlNDkyNjgxZTdkODUyZjUwMzhjMjJkNTdlN2QgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIzIDk3NDdkMTEzNzA4M2NhNTNiNzU2YWZkMGEyMTBjNjY5NjljZGJkNWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI1IDY3YmE5M2FkMDBmZGYxYjkxMzU0ZGJhMTE4MzJiMzZjNGJmNjlmMTcgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI2IDJjNDU1OGRmZjUzZDkwNjRhNzdhMTJiNzIwMDI4OGZiMmY2YWY4OWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI3IDQxZThlNzJhYTllZGIxYjBiOTZkMDliODE2ZGQzMjdmYTAyOWZmNDEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODQxIGVmNDdkZjI1NDIzYzc2YWFjYTQ0MjU0ZGFiMDliNmJiN2M5YWU1ZTQgbGVnYWN5LXRydW5rCis2Mjg0MiA5NTcwYmMxMjgzMTQ0NGEzYjgzMzU0ZjdlOGQ3Nzg1Y2JjMGExZmUwIGxlZ2FjeS10cnVuaworNjI4NDMgYWQ3NzUxYTk1ODA5OGQ3MTNkNmVlODJjZmMxNDA4NmExODEyZjMwMiBweTNrCis2Mjg0NCA4MzFhMzBjZDIzYTI4MjA1MmQ5YjExMmU5NzI4MDg1NWU5NTc5NTExIHB5M2sKKzYyODQ1IGUzNDU5YWQwMTM2ODZjYmVjZTczNjYxZWJmNDhjNjRiNWJkMDM3YTMgcHkzaworNjI4NDYgNmVjNTYwOGI2NjNjMmNmMjgwMzBhNGI3MGNjNDAyZGYzMTMwMjgxMiBweTNrCis2Mjg0NyBhY2Q2ODI3N2M0ZGQwMTI3YTc5ODIxMDM1ODQwM2RmZjViYmQ1NTVlIHB5M2sKKzYyODQ4IDJlZjFjMzgxMTM4ZDU3M2NmZDk0YmZlZTk0YTVmNmIxMWVlZjcyNzcgbGVnYWN5LXRydW5rCis2Mjg0OSAwZTc2YThmMzQ3Njk1YTM3NTBmYjY4MTFkNTVkNmRiYmQ3NzhjYmQ2IGxlZ2FjeS10cnVuaworNjI4NTMgYjEyNGUzMTYxNGVkOTY5MzM2Zjc1ZTFlMjc2YWE1OTM2MDc5MGZiOSBsZWdhY3ktdHJ1bmsKKzYyODU0IGM1NjI0MDJjMWMwODI5OTI2OWJlZjM2ODc1NmM4MjFiOGIxY2JhMWYgbGVnYWN5LXRydW5rCis2Mjg1NSBjNjdjMDk1NTRkMjMwMjA0M2ZiMzc4MDkxY2QwMzI1M2MzM2I3ZTkzIHJlbGVhc2UyNS1tYWludAorNjI4NTYgZTM1OTM1NDc1MTUzMzc3ZDY3MjdkNjRlNmM1MmY3MmMzYjg0MDE1YiBweTNrCis2Mjg1NyA4MTQ4MDY5MjYzYWExZjAyMTBjZGQwZDU4ZjE1OTNmYmFkNGU2ZWY2IHB5M2sKKzYyODU5IGFlZDA0MjM5YTNmYzI1ODUyMDUyZGM0NmYzOTE2ZDYwNWJmZTM2NTEgcHkzaworNjI4NjAgY2VmNWFhM2VkNzEzMzU0OTA0NzI4NjYxODdiNjM5ZmI1YTY2N2ZhOCBweTNrCis2Mjg2MSA0OGU5ZmIwYTcyMTc5OTg3N2YyNmVkYWVmMDFhYzZlNjAyOWI2ODEyIGxlZ2FjeS10cnVuaworNjI4NjIgNmI3OTcwYWEwZGRhMzI3ZjI1YTgzMTUxOTUxZDhhN2I5NjZlYWJjYyBsZWdhY3ktdHJ1bmsKKzYyODYzIDlmNDU5Nzk1NThhOWJjZDgyMTk2ZjIyYzcwMDlkMTVlZWNjMzQ0NGUgcHkzaworNjI4NjQgZDlkNGNlZjQyMWEyZGM0NGFjNDJhYjhkYzhiMWZhMDhiNGYzZGUwNSBweTNrCis2Mjg2NSBkNDQzMGU5MDIxYzIyM2U4ZmU1MDYwMjkyNmI3YzIxYjU5Y2ZkYTlkIGxlZ2FjeS10cnVuaworNjI4NjYgNzJiZTEzOTBhZTVmNDdiZjc4OWI0YTczZDE1ZmFlZDM3MTg0ZWZkYSBweTNrCis2Mjg2NiBlNjlmODRlZTRmM2E1NTAyMmUyZjI1MmVjZTJiYWQ5NDA3ZDIxNTVmIHB5M2sKKzYyODcxIDk4MWNhZjI0ZGQ4YTZhYWQ4YzM5MjlmZjBhZGFmZmIzZGI5NWRiMDQgcHkzaworNjI4NzIgMTZkZGRmZTBhOGNkYzQ2NjIzZTNjN2QwNTk3OTY0MTIxZjEwZTY1MyBweTNrCis2Mjg3MyBjOGI0OWQ4YzM5NjdlN2FlZGE0YWU3OTgwMzA2MTYzYWJlMTk0ZTAyIGxlZ2FjeS10cnVuaworNjI4NzQgZjJkNzcxZjM3MGJkOGUwYmEzNTg5ZmExNmUxZGNlMmE0YmI5NmU1NyBweTNrCis2Mjg3NiBjYTQxMDI0MTRhMzQ1Y2VlYzgwOWJmYTZiNTI5MGVkNjNiNjgzZDI4IHB5M2sKKzYyODc3IDExNDA3YzFmNjhjYTQ4NGMyOGIxZDk0NjkxZGI1ODg1N2FmM2ExZmEgcHkzaworNjI4NzggZWFhYzU2MTlhMjFmZmMwNTQ5Y2RmM2UzMmIyNjdmM2IzN2I4MWQxZCBweTNrCis2Mjg3OSAyMDI4ZmEyZmMxZGRmY2M5NGFlMmUxM2YxY2ZhYzY3MzIzZDZjYTdjIGxlZ2FjeS10cnVuaworNjI4ODAgZTk1ZGQyNWRmYjBjYmUwODA1ZWU5MzgzMmE2NTBlMGYzNTUwZDYzMCBweTNrCis2Mjg4MyA1YzViMzYzZDJmMTlhODFhOWVhYzVmMzgwMTUwNDZiZjk5MDhjYmE4IHB5M2sKKzYyODg0IDlmYmMyZGE1NGUyOTNkZTkxMzFjNTBjYzU0MThlYTEyNmFiNDdkMzkgbGVnYWN5LXRydW5rCis2Mjg4NSAwNDdkYTNmNmZkN2ZkOTRhMmVhZDc3MTUwNjQ0YjhmZjg5YTI2YzJjIHB5M2sKKzYyODg3IGNhYzZhMWEzMzRlMDRjYjA2Yzg3N2M5YmU1NmQ0NWI4Njk4ZTYzMDcgbGVnYWN5LXRydW5rCis2Mjg4OCBiNzEwOWEwY2QwZjlmNTdhNTFmZjViNDkyNWQwY2Q0YTNjMDVjZTdiIGxlZ2FjeS10cnVuaworNjI4ODkgYTc2NzBhZmI1YzA5MmQ5OTYxMzMyMTQ4OTQxNjBhN2U5M2E5NzE4NiBweTNrCis2Mjg5MiA2YWRhMTVkNzk5MGY3MjY4OTk3N2Y0M2E0OWMxNDg3NTIzMWUwMDZlIGxlZ2FjeS10cnVuaworNjI4OTMgYjVhNjc3Mjc4YjVmYTg1ODQ2N2MwYWVkZjAyNzQzNzk1YWFmMGU3OSBsZWdhY3ktdHJ1bmsKKzYyODk0IGI4ZTdhMTYxNjExYzE0ZjMyZGJiYmQ4Mzc1MzdjZDNjMGU0OTZmN2MgbGVnYWN5LXRydW5rCis2Mjg5NSAxZmIyNDZjYjI5YWU0MTFlZThmY2E4MmY1ZDE4MTBkNWU1NjY3MDI2IGxlZ2FjeS10cnVuaworNjI4OTYgZGZiMGJiNWZhYTZiYzlmNjM0YjA0MTIzNzVkYmZiYjk4YWEzNzYxNCBsZWdhY3ktdHJ1bmsKKzYyODk3IDZiZTY0NzE5YTUwOWFjY2JmNDBjNWZkNzNiZDkxMTg4MzVjM2EzYTEgcHkzaworNjI4OTggMmExNzNhOGIzYjEzZjhhZTE0NWI3YWQ0ODg4MTlkNzI3YmU1NjNmNSBweTNrCis2MjkwMCBmYjE5ODRmYjE4MmQzYjk2MTEwZTJjMTcxZjA2ZWExMWI4NGU4NzE5IGxlZ2FjeS10cnVuaworNjI5MDEgMjI0Y2FkODIzNTkwNWYwMWQxOGZhNTVmZTY0YjMzOGM2NDBiOWIyMiBweTNrCis2MjkwMyA1ZTRiZDgyNDk4NDYyNGViMjk5ZWJiZmZkMjJmYWRlZTg2ZjJjOGFiIHB5M2sKKzYyOTA0IGRjNTczZWUwZDkwNDE3Yjc5ZTI2ZTU4MWNhYTAzMmNhOTkxZjNhZDYgbGVnYWN5LXRydW5rCis2MjkwNSBhMTMwY2Y0OGFkNjdjYWVmMWIxMTMzOTRlZTkwODM2YzgxMDUyNDMzIHB5M2sKKzYyOTA2IDVkMTVhOGJjYzQ0NTY2MjU3YTczYWM1M2JlMWZlN2VkNTUyNGYyN2UgcHkzaworNjI5MDkgOGJmZTJiMDY1MjdkYWQwMzRkMzg4MmJkZGEyOGNlNTkyODVmNzExZCBweTNrCis2MjkxMiBiOTMwMDU3MTJlMzk5ZmYwYzJlZWRhZmNhM2ViNzIzYzUyZGIyNDJhIGxlZ2FjeS10cnVuaworNjI5MTMgNWI2ZWE0ZGJhNDRjOWNjZmUxZWJjYjA4NGMwNWY4YjFkZjNkMjA3YiBweTNrCis2MjkxNCA0ZDAwN2EzMWI0NjQ1M2Q3M2NiNzVkNDEzYzNjNDA3NDkyYzM1NmU4IGxlZ2FjeS10cnVuaworNjI5MTUgMzc2NzVmMGMzMzhhNjYwNWYxZTU5OTMwOTM0Y2M2MjFhNzIxNDRmNCBsZWdhY3ktdHJ1bmsKKzYyOTE3IDgxNmMyMWM3NjJjODUzZjk2NjA5ZGY3ODJlMWIyM2NiNDg0MzAxYzQgbGVnYWN5LXRydW5rCis2MjkxOCBlYmM5ZjY2ZmU5OTAyOTI4NjM0OWEzNDhiNGM2OTFlOWNmNjQ0MGVjIHB5M2sKKzYyOTIwIDk0NmZiYWU0YmFhYjU2NmI0OTVlZWM4YmY5OGUzODFiNjM1NzkzYWQgbGVnYWN5LXRydW5rCis2MjkyMSA0YmQ5ODk3ZGNlMDdjZmExMWI4YjQ1Y2NmNTZmNDVmZTI4NDdhNjU4IHB5M2sKKzYyOTIzIGE4OWJlMjUwNzJlM2RlN2YzZTgxZDUzMzYzZGIyN2FkZjFkMjQyYWMgbGVnYWN5LXRydW5rCis2MjkyNCA1ZmI4YTUwNGZhOTZmMTExNWI3NWRkNTgzMWY0YmUxM2Y4ZjAxMTliIHB5M2sKKzYyOTI3IDE1YzcyMjAyODYxNTVjMWI3Yjc5YmI3MzQwZjhkNjRlZDRiYzdmM2MgbGVnYWN5LXRydW5rCis2MjkyOCA1NGU2MjJlZjM1MDBlMjdmYjdkOWM5ZmNkYWQ3OTVhYmExMzhlMmNmIGxlZ2FjeS10cnVuaworNjI5MjkgODRhZjBjZmE3YjgxZDk0MzRlNzRhYWI5ZmMyMjc5NTkzOWE4MjBmYSBsZWdhY3ktdHJ1bmsKKzYyOTMwIGNkNmM2ZGViN2Y4NGU0ZWM0NDMzMTJjZjczNzk4ZGQ0OGY4ZTE0NDAgbGVnYWN5LXRydW5rCis2MjkzMSBjMjQ0MzhlOWFiNTRmYmEzNmVhMjBlY2Q1MWMxNTNlMGQwZGUwZmNhIGxlZ2FjeS10cnVuaworNjI5MzIgY2NjMzM3YjQ1YjJlMzFhMDBjZjQwMTNlOThjNjQ1ODdhMjdjMWVmZSBsZWdhY3ktdHJ1bmsKKzYyOTMzIGVmYjk3OWE0OTQ3ZDAwMzhjOWRmMGNmM2IwYWEwODU3ODMzYWJlMjUgbGVnYWN5LXRydW5rCis2MjkzNCBmM2Y2YTg5NWE1NTVkZjM2OTVjYzllZGZmZGZjZWZjZWViMDAwZTIwIGxlZ2FjeS10cnVuaworNjI5MzggMzk1NWM1MDJjZmEzNzIyZmEwOTk0MjE3ZjUyMjg0NDBkNWYxNmVlNSBweTNrCis2MjkzOSAxN2NkNjEyYjA2ZGExZjg0ZjJjMTM2NWUxMDA2ZDhiZWMwODkzNGU3IHB5M2sKKzYyOTQwIDhiNjc2ODVhOGJjM2VlNjc5MjNhMWI3ODgxYTAzN2M3ZjFlODFhZDUgcHkzaworNjI5NDMgOGJhZWJhMTNhZTkzZDQzZjBlNjM2OTI2YmUyOTJkNjkxZTllNWVmMSBsZWdhY3ktdHJ1bmsKKzYyOTQ0IDUxYmFiZTczYzBjYTM1ZjZhMzQ4Y2YxMjBiMDQwNmQ1YWVjYThmYTcgcHkzaworNjI5NDUgYTQ0NDk4NWE2NzVhZTRlYWU0NjBkMjk3NmJiNjk5ODJmOTdlYjIwYyBweTNrCis2Mjk0NiBiNDMyNTA2ZWZjZTdmZDk2ZWU4YWY2ODMxNDZkOGZhYTFiMjJiNjg4IGxlZ2FjeS10cnVuaworNjI5NDcgZTBjYTc0YjM2NGU0OWI1NTYxOGE4MjNkMmJkOWVlYjQxNTY0ZDkxMSBweTNrCis2Mjk0OCBmZDBiODk0YmM5MGM1MmE0NGY1NmVmMjY4NzA3NjQ3ZTU5ZjRkMWVkIGxlZ2FjeS10cnVuaworNjI5NDkgYmQyOTU0YzQ5MTY5OGMxNDJiYWY1MzZhZDNkMWFjOTkxNDQzODVjZiBsZWdhY3ktdHJ1bmsKKzYyOTUyIDQ0OTU0ZDY1YTczYTQ1ZGQ1MjVhMzFiNGRlYzVhYzQ0OTZjMWNkYTUgcHkzaworNjI5NTMgODdkODU0YmMxZTQ1ZTcxZjA5NzRhODY4MmQxMDllOWMwMDYyYTNiNiBweTNrCis2Mjk1NCBkZWM1MzFjMGFjZjliNjJmOWY4NTM0OTYwOTE5YzQ3ZWRiNzNmOTc1IGxlZ2FjeS10cnVuaworNjI5NTYgMzdiMjdhMjVhODQ3MDRhOGFiMDgyYTVkNGY4ZTkwN2JkMWM0MDYxMSBweTNrCis2Mjk1NyA4MDI1MTlmMDQ3NTQ1ZDQwMTEyOTcyMWQ3NDAzZTM2YmY3M2QzZDQxIGxlZ2FjeS10cnVuaworNjI5NTggZmU5Yjk3ZGJkMjMyZDJjZGFkZjg3OWFiN2Y2NmNhZmEzYTUyMjQzMyBsZWdhY3ktdHJ1bmsKKzYyOTYwIDRjNWVlMWIzODA0NTAxN2U4NjU3YjMzZmFkNWVhMWNmNjUzM2E1NjQgbGVnYWN5LXRydW5rCis2Mjk2MSA5MWZmZDlmM2NjZWM5MDEyMDZkYTI3OWViMWZhYTQwYmRkNTQwZmY0IHB5M2sKKzYyOTYyIGM1NmU4M2QwOGQwYjA1ODM1MzRhYjk0MGVhMDAyYWI3ZTlhOTViMTkgbGVnYWN5LXRydW5rCis2Mjk2MyAwN2EzNWM5YTVkM2ZiOGNmZGNmNDhlZjFiNmEzMTc5ZDBiOWMzODUxIGxlZ2FjeS10cnVuaworNjI5NjQgNDk5ODc1Y2I2YmEyYzQwZDI2MDQyZmJkMDRjNmQ5NWIzMTNlNTk3YyBweTNrCis2Mjk2NyA0MzkyNjk0ODU1Njk5MDk3MTQ3MDc2ZmI3ZjdhN2Y5OGM3Zjg3ZjM0IGxlZ2FjeS10cnVuaworNjI5NjggNTY3OWNlNjZlNzRiODgzOGQ1ZGI3N2Y3YzkyYWJhZWM4ZDY0YTAxNyBsZWdhY3ktdHJ1bmsKKzYyOTcwIDhkZTUxZGFhNTA2ZmQ4NTQ5NmZmYTkyMGZjYjFkYzUwMTA2NDI3NWQgcHkzaworNjI5NzEgYWE5MjUwZTZjNDA5MzRlMDU4MDVjMThmMmZjNjAyZDMyOWVkZjIzYyBsZWdhY3ktdHJ1bmsKKzYyOTcyIDc2ZWM2NzVlMjBiOGNiZmQxNTM2ZjlhOWRhM2U2M2RlNjAzZTU3YTYgcHkzaworNjI5NzQgMjNlYzMzZjY2NzM2MGU0YTE1MDllMDFhMDgwYTkxMGM0MjgwMGVlNCBsZWdhY3ktdHJ1bmsKKzYyOTc1IDg4NGY4NDI2Y2NjZjc4OTEwY2I5M2JkYzA1ODkwYTBkZmNjMDMyYzAgbGVnYWN5LXRydW5rCis2Mjk3NiBkMGY0YzI0NjY4ZjIzN2RhNjYzYzJmNDU4YTI1ODVkZDIwMjRjMDJkIGxlZ2FjeS10cnVuaworNjI5NzcgYmU4YzQzYTNmZDYyZmY2Mjk3NDc3YTZhMjY1ZmNkNGY0NWRjNjJiZiBsZWdhY3ktdHJ1bmsKKzYyOTc4IDM4OTM4YjcxNDAxODI0MDY4MjQ4N2JjMGY0MDZlY2VkZDcyN2VmYTYgcHkzaworNjI5NzkgZTNkNGRlOTM1MGZiNGRkYWRmODliNmZmNWRkYmJkNzdkMGY5YmFhMSBweTNrCis2Mjk4MiAyZWNmYzcwMTNlYjVjMzM2Y2QxMGIyMzljZWJiYTdiYmZmNTg0NTk1IGxlZ2FjeS10cnVuaworNjI5ODMgYTFmNDU4YjAxNDlmMDkwMjNhN2E3MGY2ZTQ0NjRhMjJiN2NmOGIxMyBsZWdhY3ktdHJ1bmsKKzYyOTg0IGFkN2QzMTlhZGY3NjdhYzZhNTc3NTBhNTMxNmIzMGRmN2NhOTE1YTUgcHkzaworNjI5ODUgNDFhOTc2NDlkZTYxNzU3YTVhNzA2OTgxMGNkMjg0NDQ0NzVhNDRiMiBsZWdhY3ktdHJ1bmsKKzYyOTg2IDEzMmY4MmQyNDAyOGVkN2Y3ODY1ZTc3MDc2OWE1YWM0MTU1ZTQwNDEgbGVnYWN5LXRydW5rCis2Mjk4NyA0NTE2NzRmODZkNzU0NGVhMjM1MGYwNjQ2NTZjNzNjOThkODNjOWI2IHB5M2sKKzYyOTg4IDc2NTRlYjVkMGE2NzAxZDIzYjQyMjE5MmFhNTc5MDA5MjUwNTJjZDYgcHkzaworNjI5OTIgYmM4YjIyNjYxMWRkNDNmYmJiOGMzMzI4MjJhMmZjNGZlYTU4ZGU0NSBsZWdhY3ktdHJ1bmsKKzYyOTkzIGIzOGVkN2MxY2FiMWMxOWU3MmRjMzYwN2RhNzlhMmFhYTIyZTEwYzAgbGVnYWN5LXRydW5rCis2Mjk5NCAyZDFlZjk0ODdjMzE1MzgzMmU5NzA4NzRiMTlkODg2ZTg2MDgxODljIGxlZ2FjeS10cnVuaworNjI5OTUgYmUzYzlmODg2NmU3YjcyYzkzYTlhNDMwMTNiMzRjN2YwZGZiN2YxNSBsZWdhY3ktdHJ1bmsKKzYyOTk2IGFhYzdhMjJiZWY4NDVlMmE1ZDMzNDhjZDI1MDNhOTY1MjFkNWZlMWEgbGVnYWN5LXRydW5rCis2Mjk5OCAyNzBmNTRlODJkMjA4MWIwMGFiY2RiMTUyMGQ1YmJlMzViOWZjYjBmIGxlZ2FjeS10cnVuaworNjMwMDAgNzYzZDcyZDAwMDI1N2EyODU3NGFjZDZkZWI5NDNiNzc5ODM3MmFmNiBsZWdhY3ktdHJ1bmsKKzYzMDAxIDM0MThmMmViY2U4NzIzMmYzMGM2NmViMDliODJiMDBlM2RkOGYzNTkgcHkzaworNjMwMDIgNmI0YmZmMjhjN2JhMmI1YmVhODQ1MGM0OGY1Mzc2NDY2YWFmYWViNSBsZWdhY3ktdHJ1bmsKKzYzMDAzIDg3ZGU3NThkYmQ2NDY1NWI2Yjc5NjI2OTBkY2ZmMmMzOTJiYWM1YTYgcHkzaworNjMwMDQgMzNkNGUwM2IyM2JhZGU4MTUwNTljNTgzZWIzMmQzOTkzNzdmYmNmMiBsZWdhY3ktdHJ1bmsKKzYzMDA1IDExYTBiMjIxZjM3MjY0MzA3NDdkODMxMTI3NDY5NjRkMmYwMGU2MTUgcHkzaworNjMwMDcgYjZiMmNlYTVkMzA2ZjdiOTcxNGFlOTMwMjg3YTI0MjRiY2FjZmZhYSBsZWdhY3ktdHJ1bmsKKzYzMDA4IDQyOGI2NmMwNGQzYTkxMWIyMzk0ODhmMzM1M2RmOGFhMWU3MGQ0M2UgbGVnYWN5LXRydW5rCis2MzAwOSA2MGIxOGIzOWEzYTJlODM5ZjZkNWYyZWYzMmU3YTYxYmE2NGNjMDJlIHB5M2sKKzYzMDExIDJkMDRlNTYwMTJlZGM2ZmRkODc2ZDhhMDFiY2UwMjQwZThkMDdhZTUgcHkzaworNjMwMTIgNmVkYWFhNzdhZjI3Njg2ZTI4MzczYjZjMWQyNGU1NzhmZTkzZWJhMSBweTNrCis2MzAxMyAwYzAyZTE1YTdjMWZjZDIwNTRhYTA0ZGQ3ZGE1N2ZlM2RlMTZiNDMzIGxlZ2FjeS10cnVuaworNjMwMTQgMmNhN2EyNzk4MTYxYzQwYzZhODAxMTQxMWY4YzNmN2E2NzZjMzJhNCBsZWdhY3ktdHJ1bmsKKzYzMDE1IGJlMWVkNjJkOGI4MGM3ZDA3MDhkOGY3Y2E0OWIwY2NiYWFlYzliZGMgcHkzaworNjMwMTcgYzdkNTMwZThiN2Y1M2JjZDNlYzEzY2JiMDQ1NTQ0YjJiYzI0NmU4YSBweTNrCis2MzAxOCBmMmE2M2VjNTA1NWU2YzI0N2U4MDBlNDFjYTVmMWJjN2JmNzljYTZhIGxlZ2FjeS10cnVuaworNjMwMTkgOTFmYWFlNDljYmViYWE1YzgyOTlkMzczYzAwZDNhNzRmZmM5MjM4NCBweTNrCis2MzAyMSAxZTQyN2JjMGY4MTg5NGZjNTFiZDAwODBkYmFmM2ExODY0YjcxMWVkIGxlZ2FjeS10cnVuaworNjMwMjIgYzBjNTdiZTk4ZWVkNmM0NGEzNDEzYjBjN2MxMGNmZGQzZTgzOWQzNiBweTNrCis2MzAyNSBjMTVjZjAxNDE1ZjkyNTY1ZWE0YWI2OTY2ZWUzYzFmNjJjMGEwYTAxIGxlZ2FjeS10cnVuaworNjMwMjYgZDhlMDAwZWM3Nzk2YmZjNjFlNjE1MTk3ZDNmMGY5NzM5ZjI4ZjY2OCBweTNrCis2MzAyNyA4OTJmOWIyOTU5YzlkMTY1NjFjNWU4MDAxNGQ0MDM3ZWRjYzY2YTg5IGxlZ2FjeS10cnVuaworNjMwMjggMzg0OTY4ZDRkNjU1ODZlMGVjMjdhY2ZiYWJjNGQyMjgzMTlmNTJiZSBsZWdhY3ktdHJ1bmsKKzYzMDI5IGFhYWU0ODliOWQ4MWMxYjQ4NDJjNDE0M2VhNTI2YTc2OTllMWYzMTggcHkzaworNjMwMzAgMmNhYzMxZmMxN2MyMWZhYWVmMzlmYTRiMTEzZTIwM2UxNGJiYmQ4MCBsZWdhY3ktdHJ1bmsKKzYzMDMxIGQyMzQ1MTE5YTJkYWJkYjE5ZjA1NmJkMWE3Yjg3MTQ5MTAzNDNlMTIgcHkzaworNjMwMzcgZmIxNGZmMDU3YzA5Njc2NmZkZDY2ZGRlNTU4NjlkZDcxYzQyOWFhNiBsZWdhY3ktdHJ1bmsKKzYzMDM4IDE2ZjE2ZmNlNTMwMjVmNjJjMTg2YmY4MGY5N2I5ZTAyM2I5ZDVlNTUgbGVnYWN5LXRydW5rCis2MzAzOSBmNjM4OGRjMDE5Y2M4MmY2Y2JjODUxYzRmNTg4MDVjNWM0OGYzMzYxIGxlZ2FjeS10cnVuaworNjMwNDAgMjI0ZTA3YjY1ODYxYzI1NmJlYzBmMDgzZjMxY2QwYWJlOWFhN2UwYSBsZWdhY3ktdHJ1bmsKKzYzMDQxIDljMThiYWE3NjBhZDBkMGRkOTE4ZWNhNzRiZTRmODNiZWY5MmVmMjMgbGVnYWN5LXRydW5rCis2MzA0MiBiNDA4MjdlYjRiODBiNzZlYzNhMDgxZDUyOTVmNDRjZTVjMDAxZDVjIGxlZ2FjeS10cnVuaworNjMwNDMgZmRlZjcxNzk3ZTgzMjMxYmNjMjM5NDljYWJlZDc1Mjc0ODAzY2Q1NSBsZWdhY3ktdHJ1bmsKKzYzMDQ0IGRkNTUxM2I0NzJkYzk3ZjkwOWE2ZGEzMjVhZDk4ZmJiNTVkMWZlMGIgcHkzaworNjMwNDUgNTI1NjZiNDQ1ZmM3NTU3MDMwMTVjOWFjODU2ZDI2NDI3NjMzMmU1NyBweTNrCis2MzA0NiBlNWFlYjNkZjE3NGU0OTdlZjVjZjM1NDgzZTJmOWFjMzExYzQzOTUzIGxlZ2FjeS10cnVuaworNjMwNDkgZDg4NTA3NTg4NzkwNDg5ZTViNzlkZmJiYmEwYjBkNGU4ODI1Y2FhMyBsZWdhY3ktdHJ1bmsKKzYzMDUwIDg3Nzc4MzMzM2VhZWRmZTUxYTMwMWYzZmY2YmZmYTU0OGUwYzc2NGIgbGVnYWN5LXRydW5rCis2MzA1MSA2YmQ2NjYwNzVlMTRjOGQ3ZTY4Yjk5NDdkMGUzM2IwYmRhOGE5ZjNmIGxlZ2FjeS10cnVuaworNjMwNTIgNWRiYmM0NDlmMDJiZTIyNWY5MDY4ZjBkMDk1MTI1ODU5YzYzOTA4YSBsZWdhY3ktdHJ1bmsKKzYzMDUzIGM3ZDFhMTcwYzk0YzM1Y2QwMTY1ZGU2NWZjODA0YWRmZTI1ZmQwMTIgbGVnYWN5LXRydW5rCis2MzA1NCBjMjEzNmMxNGRjZDc5NDA5ZDhlMTAyZmQ4YzM5YjU3ZDZhYWRhZDdkIHB5M2sKKzYzMDU1IGY0ZTYxZGNkYjZmODVhNGQ3MzU5NzlhY2IxOGMzZDM1ZmM1YjViOTIgbGVnYWN5LXRydW5rCis2MzA1NiBiMjliNDZhNDM5ZDlmMGM4ZTU1YmU0MDNiOTIxMDZiODBmNjY0ZDE3IHB5M2sKKzYzMDU3IDljNzY1ZjRlZDUxMjM0NTAyZjQ2MWEyYjFlNWFkZjFmM2RjMWJlMjAgbGVnYWN5LXRydW5rCis2MzA1OCBhZmFlZWRhZGJkYjM2YjM4YzFjYTY1YTc1YjM3OWI0ZmJhMDdlYmUzIGxlZ2FjeS10cnVuaworNjMwNTkgNGZiNmMwYzE2OWZmMGI1Y2MyNDIzOThlNzY2MmEwMjU3YmFiNDA0YyBsZWdhY3ktdHJ1bmsKKzYzMDYwIDBkZjYxNjE5M2I5ODgwNmI0NTlkZDljNmQ5N2M4OWExMWI4MWEwYzYgbGVnYWN5LXRydW5rCis2MzA2MSBhNzNlODdmMTVmZmE3NDllZTI4N2E3OTAzMmY0MjU2NTgwNDM2NzBhIGxlZ2FjeS10cnVuaworNjMwNjIgMDgxZjJhNjYyNjM0NjViNTk1N2RhMjI3MTJhZGIxNDI5YTUwYjYzNCBsZWdhY3ktdHJ1bmsKKzYzMDYzIDdmNzdkYjk1MGNiNDRlZmQ3NmE3ZGFlZGQ0NWNmZTZjNzYwMGQ3MjYgcHkzaworNjMwNjQgODE4Y2FlYmUzNzMzMTFlMTk0ODFjODE4ODc1YWM1NTRlODQ1ODdlMiBweTNrCis2MzA2NSAwNzU3MmE4MjU0MGZkZGU3MTcwZDMzZjc5YzE2ZDNlNTU5OGFhNDBjIHB5M2sKKzYzMDY2IGJlODdiNzcyNjg2NjBiNWQ4NThjNWU2MTFmMGFiY2M2MDg1MWUwMDcgbGVnYWN5LXRydW5rCis2MzA2NyBkZWRjZTdjYjdhNWRmZjdjYTIyMGViNTBkNjYxZjU0ZDQyNjMwZGU3IGxlZ2FjeS10cnVuaworNjMwNjggMWZkZmIyOWY0ZmI4MzYwOWNmNmRjOTJiMDQwZGNmNmU4YzRmZWE5ZiBsZWdhY3ktdHJ1bmsKKzYzMDY5IDVjY2QxNjVmMzBhNDUxMjMyOWJhZTE2MmY0ODNjMThhNmQxY2NjM2EgbGVnYWN5LXRydW5rCis2MzA3MCBiMTdiMjllNjBlOWJiZDhkYmU1MDgyOGFjODI4YTgyNTUzMzNjMGI1IGxlZ2FjeS10cnVuaworNjMwNzEgNDlmZjFmYzAwYzZjNTM0ZTFmNDFhZmNlYTIyYjY0NjYyNjIzOGQxZCByZWxlYXNlMjUtbWFpbnQKKzYzMDcyIDY3ZTQzNjNlYTJlMDY3NGU3ZmQ0NjIzZTk4ODVjODMwYTc3MjQ5NWMgcHkzaworNjMwNzMgYWIxOTBmNzFiOTE3Njk1NjA1MWExOGZlYzg0OWUwYjllNmQ3ZGRjZiBsZWdhY3ktdHJ1bmsKKzYzMDc0IGUzNDAxZjMxNmEzYjk0Yjg2ZGU0NWQzMTZmZGFlNjQ4NmJmOTg0ZTUgcHkzaworNjMwNzYgMjFhZTJiNjViYmJiMzY5N2UxNjg1YTQ1MDk1MzQzZmRlM2I1NzQ0NyBsZWdhY3ktdHJ1bmsKKzYzMDc3IDc2NjgxYTYzMDZhODA3MGUwMTY1MjNjY2QxMzczYWVkMDg4OTA4MmEgbGVnYWN5LXRydW5rCis2MzA3OCAyMDY3MDBkNzQ5ZjBmMzIzOWQwM2UyYWMzODY2MTdmNDdjN2Q0MmYzIGxlZ2FjeS10cnVuaworNjMwNzkgYmQyYzk1YzE2NWVhNGMwZDNkZWVkZTMyMjUwYTkzYmMwMmY1YzdlZCBweTNrCis2MzA4MCBhOTQ5NWEzZmUyZTBiNzgzZGFkNTFhZTBhMGZmMGRlODdkNDI1Nzg1IGxlZ2FjeS10cnVuaworNjMwODIgZTAzZDhkM2U2NzU0NGY3N2Q3MzkwZWNhY2Q4YzAyNjM4Mjk0N2MwNiBweTNrCis2MzA4MyBiNzFmY2ZkOTg2NmJhZWViMGRlZGY4YzI4OWM0OGU5MzQzMDFjMGFiIGxlZ2FjeS10cnVuaworNjMwODQgYWJlM2YzMDVmNmM5NjAxZGIyOTgwODUxODg5Y2ZjODMyYTdjY2U4MSBweTNrCis2MzA4NiA3ZTQ2OWUzY2ViZGE2ZTA5ODM3MTI5MjBkZmNjNTk3MWRkN2U4NzgwIGxlZ2FjeS10cnVuaworNjMwODcgYjcxMGQ3MTlhMDgyYWQ1OTU1YTY1ODgwYWNmYjZmYWVlMGU1ZGM0MSBweTNrCis2MzA4OCA4MTEzMTA0NmQxYjA5MjkwZmNiYzBjNDk1NWYyYjI5YmNlNDM5YjJjIHB5M2sKKzYzMDkxIDZjMTVkYjZjZTVkYWY2NGJjM2NjYmZlMzcxZTgxMzJlMThiNGU5MWYgcHkzaworNjMwOTIgZWQyYzE4ODhlMTQzMDE0MWY5YmUzMGU0ZGYzODBiYjg3ODZjOGI4OSBsZWdhY3ktdHJ1bmsKKzYzMDkzIGVmNGVjOTY4ZmRiNjY4MGVmMzM4ZjAzNmM2MjIxM2IzMDdmZDlmYmMgcHkzaworNjMwOTQgNzQxYjI2NjdhYzBiNzE0ZjZhZmRjMTEyMmIzNzk5MGNkODAzZDcwNiBsZWdhY3ktdHJ1bmsKKzYzMDk1IGYzZDBlYzBiNzM3ZWI5YzJiZmFlNzk4MjI1MzY0ZWI3YWM5MTBhYTggbGVnYWN5LXRydW5rCis2MzA5NiBjY2M2NjNhYTRhNzY0NGM3ZTFiNWUxYTFjNTQzYTE1OTFhYTI4NTA3IHB5M2sKKzYzMDk3IDZhMTliOWJlYTE4ZTdiZDJlMThmMGJlYWYwNGY1ZjI4Zjg5NGRlNDYgbGVnYWN5LXRydW5rCis2MzA5OCA4ZWE4ZmIxNGRmNzE1M2RjNzExYzA2MjdkOWUwZWVhZTdlNzExNmZiIGxlZ2FjeS10cnVuaworNjMwOTkgZTk0NTc0NDU1ZDlkZDA3NzNhOGVkOWQ4ZDUzYmJjMmZlZjM2NzJkZSBweTNrCis2MzEwMCBjOGI3NzAwN2ExYzE0NDMzZWNmZmVkMzg2YjlmOWQxZjBjMTcwNzZiIGxlZ2FjeS10cnVuaworNjMxMDIgMjJjZGI2ZWMzZTU2OTJhMjVkMjVhZmM4YjYzMTMwMWEzMDBmODQzMyBweTNrCis2MzEwNCBhNDI3N2MxYzk4YTg1NDEyZjg5MWUwNjMzZDMwMWU4ZWU0YTgzYWUyIGxlZ2FjeS10cnVuaworNjMxMDUgZDdjMjA3YjgwYzQwYWEyNmY2YTAxYTRjMTU4OTkwYzgxZTk0ZjAzMyBsZWdhY3ktdHJ1bmsKKzYzMTA2IDkwNjg2MDQ1ZmJhOGQxMmY1YmIwY2Q3NGYwYjJhY2ZhZGM2ZTczZTMgcHkzaworNjMxMDggYTlmZjcyODkwODJiMjBmYzkyYTA3MWQxZDA3ZTBhYjZjYWEzYzFhMSBsZWdhY3ktdHJ1bmsKKzYzMTA5IDBkNDk1NzU0MGM5NmU5Zjk3ZDE4ZWIzM2ZmNDE0YjM4YjQzYWFiYjIgcHkzaworNjMxMTQgYzJhYjdhMDZlZDI0YmVhZDRlYzYzNmVjNWEyNDk1ZDQzMmNhNTgwNCBsZWdhY3ktdHJ1bmsKKzYzMTE1IDUyNmQ4Y2Y3YTkyMDZlM2Y2NDQyMmYzMWFiM2U3NzNmN2Y0NGY5YzEgcHkzaworNjMxMTkgNGM4Mzc1NTc0YWE5ZTc0NjEwYTg5NjI5ODQ1ZDgxZWMzNmMxMjk1ZCBsZWdhY3ktdHJ1bmsKKzYzMTIyIDYyMmEyNTk2NzIyOGQ5YTA4MWI3ODNjODJhY2Y3MTU0NzI4ZmM5MmIgbGVnYWN5LXRydW5rCis2MzEyNCBmMGEyODVmYzIwMWQwMDVlNTAzYjQ2ZDgwMDE5MjM2YzM4MjZhYzIyIHB5M2sKKzYzMTI5IGJkZTM4YTdiMjMxODM5OTJlODEyODljM2RjYmU2NGNmMGFkYjI0YTggbGVnYWN5LXRydW5rCis2MzEzMiBhMzc1YjEzNDZlYjM3ZTMyNDZlZWY1OTZjOGQzODIwZjYxYTA2YmE4IGxlZ2FjeS10cnVuaworNjMxMzQgZGFmZGUyZWVlM2QwZDhhMTNlOTY5MmExNTQ0MTBiYmM4YjdjOTViNSBsZWdhY3ktdHJ1bmsKKzYzMTM2IGM5ZTVmYWE0ODJlOGJhZjFkZTliZTI1ZTBlYzYyOWU3ZmE2YmZjNDEgcHkzaworNjMxMzcgYjMwNWE5NmE0YmUyZTQ0YWExMTZlZGUwZDQxZjMxNWViZGVlOGRlNyBweTNrCis2MzE0MCBhY2E1YzFkMWM1Njk0YTNlYzA1NmYxMDIzYjFhNTk5OGE3MjE3MmNiIHB5M2sKKzYzMTQ0IGE5YWEzNDJhMzY3YTkyMmQyMzlmY2ViYjU0OTQ5YmRiNGMxYzI4MGQgcHkzaworNjMxNDUgMmYxNDUxOGYzMDBiOGZjMzNhOWVjNjYxOGY2NjQzZjRlYmFmYjMyZSBsZWdhY3ktdHJ1bmsKKzYzMTQ5IDc5OTMyMWU3ZTdiYjQzMjkxNzZiYTM3MWQ3MWFiMWI1ZTUyMWM5ZDIgbGVnYWN5LXRydW5rCis2MzE1MCBjMWE2OGY1NDBkNWJjM2IzYzU4NzNlN2QyMGE4MzZlNTAzNzY0ZmE2IGxlZ2FjeS10cnVuaworNjMxNTIgODM3ZGUyNGFjMWY3YTVmYmY1NzdkYTg0Yjc5MmU0YmFmOWZlY2FiYSBweTNrCis2MzE1MyA0YWM5Y2MxZDc3OTg0YmM5YzNlY2UzMzEwYzAwNTFkOWUxZDk3YzUxIGxlZ2FjeS10cnVuaworNjMxNTQgNjRkMTlmMjg1MWUxYmRmMjEzMzIyMGQ1MTY0NDNiNTE5MDc3YjgzZiBsZWdhY3ktdHJ1bmsKKzYzMTU2IDEyODBiOGVjOWRhMzg1MWY2YmFjOWQwYzI4YTEyYjI5M2NlNTZlMjQgcHkzaworNjMxNTggNWE3Y2NkNjVlNTliM2QyZWFmNzljNTNkOGM1N2Y5YzExMmYwMjc4ZCBsZWdhY3ktdHJ1bmsKKzYzMTU5IDA4OWM4ZDBkZjc3NDQ0ZDE1OTY0ZTgyOGE0MjE0ODUyNWRkZTE1ODAgbGVnYWN5LXRydW5rCis2MzE2MSBiYTIzZmMxNTc2MThiMzk5NzAzMGExNzZiM2NlNzRmY2NiODkzNTQ1IHB5M2sKKzYzMTYyIDM5ZjZmN2YxNzJjYThlNTQ3YzI4ODdmYmM0NGIwNmFmNmZhNGNmOGUgbGVnYWN5LXRydW5rCis2MzE2MyBmZDIzZTZkMTc3ZTlkYTZkN2I1MzRhNTU4NWM4NjMzYmRkOGExMmM3IHB5M2sKKzYzMTY0IDA3YTUzYmI4MmJhYTA1YmRiMTdjODM2NGJmZGM1N2IwZDZkYThlNDIgbGVnYWN5LXRydW5rCis2MzE2NSBkZjExYWZmMDkyY2Q4NGU5NWFhOGFhZjg1ZjU0NWFjMjZmY2ZjOWVjIHB5M2sKKzYzMTY2IDZhNzc4YzBhNTE3ZTYwZWJkODM3NjY0NGNjZTk0NzZjZDk5ZjQzZGQgbGVnYWN5LXRydW5rCis2MzE2OCBiM2VhYzNhN2ZkYzNjNzUxODQ5NThmMTVmNTZkNjBhNTk5ZTVmNjVkIHB5M2sKKzYzMTY5IGU5OTczOTAzNjYwNjlhNDk3NGY5NTlkYWU1NzIyZjhkNjQwMTVhNGEgcHkzaworNjMxNzAgZDI4MTBiOGFlZDZkMWZjMDc5MTY3MzA3ZGRiYWUzYTZjNTRjY2YyNiBsZWdhY3ktdHJ1bmsKKzYzMTcxIGZmOWIyMDU3NzIyY2I1MDZhOTQ4ZmEwOWFiMGI2ZWQ0ZGUzMjBiM2IgcHkzaworNjMxNzMgOTA5MTYzN2UzMmIxZTNiN2QyODExYTZkNTc0MWY4ZTM4YTNjN2FjNyBsZWdhY3ktdHJ1bmsKKzYzMTc0IDk5ZjUwYWY2OTJkMDI4YzEwNDE3YTA5NGFkNTY4ZTgzMjkzNDY0ZDkgbGVnYWN5LXRydW5rCis2MzE3NSA5MmQwMGY1ZjNjMGQwNDAxOTVlN2E5YjM4Nzk0MzlkZTM3MDE3ZDA2IGxlZ2FjeS10cnVuaworNjMxNzYgOWQ0NmMyODlkMTY2MDUxYWRjNjQ2ZGMyNzlkMmZhMDk1MmE4YWU1ZSBweTNrCis2MzE3NyBlNjQwMzliYmZlMjY4NjdlOTVkNGNkZWJlN2VhMTFlZTJiZjM2ZWExIGxlZ2FjeS10cnVuaworNjMxNzggMWU1NzNjMmNkOWJlNjFhMTgwMzU5NDgyMWYxZTBkNjkyMjk4YTA4OCBsZWdhY3ktdHJ1bmsKKzYzMTc5IDJlYmUyNzI3ZmM5MmFlNDA3YzY3NDgzNWYwMWM4ODkxNjA5NTE2NWQgbGVnYWN5LXRydW5rCis2MzE4MCA4YTQ5ZjhlZjdmODk0MjMzYThhMTBlZGVhN2NiOGJlNzBhOTIzYjRhIGxlZ2FjeS10cnVuaworNjMxODEgODk0MTQ0YjE3M2M5ZjYyZTE1MGQwZDk5MjU5ZjNiZjY2OWI1OGE1NiBweTNrCis2MzE4MiAwM2IxMjMzYmY1ZmUwMGM4NmZkZTkxZTU5ZDExYTViODYwZDYzMGM4IHB5M2sKKzYzMTgzIDgyNmFmZjk1Y2YwYmQxYjJiNDhjODQyODU0OGZmMDkzZTExN2Y5M2IgcHkzaworNjMxODQgNjViNzVmNzgzOGYzYjczMGVjNTdjYTNiODI5ODFkOTI1NjYyOTBlOSBweTNrCis2MzE4NiA1MWFmZDU2NmRiMmJkNDI2M2E0ODg3YjFhOWQ3YjEwYzhmMTY0NzVlIGxlZ2FjeS10cnVuaworNjMxODcgNmRmMDM5NGFiYmYxYmRhMmIwZDdlNTVmZDQ3NjVlNmJmYWEyYWNiYSBsZWdhY3ktdHJ1bmsKKzYzMTg4IDI4NDUxYjVlODE2ZmRiYTAyYmViYjZiNmI4NTM3MjI1ZWQ1YWQ4MWYgcHkzaworNjMxODkgNjI2NThiMGFjYTA4MjJlNGM5Njg1N2MxZTNjYTI5OTlkYzBiZWI0ZiBsZWdhY3ktdHJ1bmsKKzYzMTkwIGVlYWQwOGI4ZTFmZDA2M2UxZDNlYjQ4NTUzMjZlZjhlN2Q4ZWU1MTEgcHkzaworNjMxOTEgYTU5NjRlZTY2MTkzYTRiMDJhZGQwOTJhODk2ODk1MDk1NWEyODhkMiBsZWdhY3ktdHJ1bmsKKzYzMTkyIGRhNmVmMTEwYzM3MzUyNDJkNzE0MjZjYWMxYjRlYjQyMmRlZTQ2MDQgcHkzaworNjMxOTQgZThmNzQ4NDcyNzMwYzdiZGEwOTc5NTFmOGQ2MmM2OTJjOGY5NmI1NyBweTNrCis2MzE5NSA5MTFhN2JjZGMxN2U1OTEwY2QzZmU4ODgwNDI5MWNmODllZmY2Yzg5IGxlZ2FjeS10cnVuaworNjMxOTcgNzU1NjhjZGRhOTQ0NzA5ZmIxNjc0NjlmZjc1NTIwN2E0YjNiMzlmYyBweTNrCis2MzE5OCAzODRjNTRmYWRhYTJmYmQzZDQ2NjZkMmNlZjlmOWI3NzUzNDZiOWFkIHB5M2sKKzYzMTk5IGE5NTk0YTVjZGY3ZmI4NjJiNDQ5YmY3ODY4YzJjNWZkYzc0MjZkNmEgcHkzaworNjMyMDAgNTVkOGMzNTMyMmE3MGRiM2FlOTlhODFkYmVmMjU1ODgzZDYwMzdiMyBweTNrCis2MzIwMyBjMjZjMDJhNDIwMDgyNGJmZjI1ZWIxZDI4ODM3MDE2OTcyY2Q1MDA5IHB5M2sKKzYzMjA1IGVjZGVlZmE4YmI2YTg0MTYwOTVhYzg3ZGFmMmU0NzcxYmExNzNkMTYgcHkzaworNjMyMDcgNjlkYTdhNGYyZjhlMmQzMDliNGU3Y2NkNjE2ZmU0ZjE4M2YwZWYxNCBsZWdhY3ktdHJ1bmsKKzYzMjA4IDQ3NjkyZjZjODE1ZWRkYmE0ODRlMjJhMWQ3YTdkZDMyNDE2ZTZiZjEgbGVnYWN5LXRydW5rCis2MzIwOSA3YzhhY2FhMjdlYWUxZDQ1NWRjYWVlYTFiOGZkNDk1NTYwMmJjYzg0IGxlZ2FjeS10cnVuaworNjMyMTAgZTRlM2IzZWJhMjI2ZmQ4OWI2NzMwMjExOWZjNDE3N2JhMmM0ZDFiMyBsZWdhY3ktdHJ1bmsKKzYzMjExIGQyYzFlZDQwOGExZDc2YTY1NzAxNWY1MjNiNTJmZTg3NTFhMzRjMGUgbGVnYWN5LXRydW5rCis2MzIxMiA3NjQ3N2I5Nzg4NTA5YjQ5YTQ5MjZhODk4NDA0OTA4YzFiMTI5YWQyIGxlZ2FjeS10cnVuaworNjMyMTMgZjIyZWQ4MDI4OWQzMDE0Nzk2NzlmMjg1ZTFhYTY2ODlmMjliYWZiNSBsZWdhY3ktdHJ1bmsKKzYzMjE0IDQ5MDM4ZWUwZTViNWI1MzAwMzdiYzRhOWVhNGZkZTNjMjZjODVhMWUgbGVnYWN5LXRydW5rCis2MzIxNSA4MTIyYTMyNGI3YTU1MTlkZGFhNGI4NDk1ZDRlNTczOWRlYjIxMGRkIHB5M2sKKzYzMjE4IDYwM2E5MzVlYWFkYTk4NWFiNTJiMWY0MDBlODJiMWFkZWY2Yzc2N2QgbGVnYWN5LXRydW5rCis2MzIxOSBhMTc1ODVhNDVlZTdlYTBmMGM4NDkzOWU2Nzg5MTcyZThhMjg1NDgzIGxlZ2FjeS10cnVuaworNjMyMjAgN2I2ZTIyMmVhZGE3MGFiNjJlYjgwMjgxMGRjZjE3ZTAwNTQ1NmU5YiBsZWdhY3ktdHJ1bmsKKzYzMjIxIDVkZDZjNTFhZWVkZWE0ODhjM2QyODcwYjBkYThlOTAzNmExNWFkNTggbGVnYWN5LXRydW5rCis2MzIyMiA4YjIyM2QzNTFiMDk1OTJiMDNjZTc5NDAzNWFiMjRiYWEyM2RhOTgwIGxlZ2FjeS10cnVuaworNjMyMjUgNTYxZTVmNTAyNmViMGE0NGIzOGI1MGYzODRlZDdiYTJhNjRjOWE3OCBsZWdhY3ktdHJ1bmsKKzYzMjI2IDg3NjA5MTJhOWU5ZmUwNTkwNDU0N2YwODIyMzQzODI1MmFmYWYzMjcgcHkzaworNjMyMjggMDNkNjg3NWJkZTBlYmIxOTE3YjE4MDQ0NTA2ZWM4MzgwNTUxNWY4MiBsZWdhY3ktdHJ1bmsKKzYzMjMwIGU1MzZjNjUwMTQwMmMxMTdkMGVhNGZmODM5MGZlZDQ4YzlmMWI2MjUgcHkzaworNjMyMzEgOGZiOWJkNTk2MmU0NmZhMmZjNWRmZTAyNWRlZmNkMzkzYjA3MDA3ZSBweTNrCis2MzIzMyBmMmM0YWI3NGNjNjViY2ZmZDM3N2JmZjhjMTYwNmU2MmJmMDcyZDQ4IGxlZ2FjeS10cnVuaworNjMyMzUgOTA1YjYyNzFlZjExOGFjM2QyMDQwMGI4ZjdhZDhmNWE1MDgwZGM0NCBweTNrCis2MzIzNiA3MWFhOTAzZWI3YWMyMjQ2ZTliZTZjMzZlMGY1MjA5M2UwY2UzYmIzIGxlZ2FjeS10cnVuaworNjMyMzggODNlOTUwZjI5ZDQ0MzM2NmUyNWViY2QwNzZiZGZkZmYyNWJhNmM3ZCBweTNrCis2MzI0MCBhM2I0ZjFlNjVjYmVhZTU2NGZmZDRjOWUxMmMxMWYzMTQwMGYwYmNlIGxlZ2FjeS10cnVuaworNjMyNDEgNDJmYzkyMjEyMGQ5NmU4YzFlODE3OTBiZmE3YjEwY2FiZWY0ZjlkOSBweTNrCis2MzI0MiA5OTNkMGJjMDdlMDAyYTliOTU5ZGJlOWYyNWYyMDViZmFmNGUzNjFiIGxlZ2FjeS10cnVuaworNjMyNDMgYzU0NmM0MGZjZWNlMGE2NzdjMmYwMTdkM2RhNGJhMDQ3NTRkOGZkNCBweTNrCis2MzI0NCA5NTgyODZiMTVkZTA1MGQ5Y2NhMmE0NDg2NzgwNGYzNGIwMjdlMmYxIHRsZWUtYXN0LW9wdGltaXplCis2MzI0NiBmMjhiNzA2NDE1OTVmMmQxNmZkZjhmMDZlMDU1MGY3MzIyYzdmYTcyIHRsZWUtYXN0LW9wdGltaXplCis2MzI0NyAxNzk1NmRiYWQwZTQxZTFhNGVkZjYyNTkxYWQ0MjYzZmZhNzk4YWU0IGxlZ2FjeS10cnVuaworNjMyNDggNzA4MjE0ZjM1MWZlN2Q4YmRlNGE5ZDIyMTA1NDRjMzBmZTE3MmQ3OCBsZWdhY3ktdHJ1bmsKKzYzMjQ5IDdlMThkNjU5MzgyNDNhNTA3NWY2YzE3ZmE2ZDg4OWEwOTViNDE4NjIgbGVnYWN5LXRydW5rCis2MzI1MCBjMjI5ZTc1ZmMyMjQ5ZTZhZGU0M2IwNjVkMWRlZjY2OTNlMzEyNmQ0IHB5M2sKKzYzMjUxIDM1YTg4OTkyNTZjMmNhN2IyOTM5M2RiMjgxOTFkODFlMjMzZGRjNzMgcHkzaworNjMyNTUgNGViNTlkOGJhYzRkNjRjOGIzOGE5MDIxNjc2MjA3YjBkNmY2MTU4MSBsZWdhY3ktdHJ1bmsKKzYzMjU2IDA2NjNmMmZhYjkzNDUyYzdjMzkxNGM5NzQ4YWNlMmY4M2JkZDRkYmEgbGVnYWN5LXRydW5rCis2MzI1OCA0MTYyOGYzOGM1YTI4ODc0ZmQ2MGE4NjgxNDVmNWQyMDljN2UzYmM0IHB5M2sKKzYzMjU5IDZmMjU5YTljY2M4NDgxODg1MzQyN2IzNDZlMGZjYzFjZGJlYTBlZDggcHkzaworNjMyNjAgZjBhNDcwOTFjOGQ4NmRkMmYzYmVkYzlhOGI2MWFlYzFmODIzNWZkMiBsZWdhY3ktdHJ1bmsKKzYzMjYxIDFkZjQ2NjcwMmRlMmE4YWQyY2IzY2E3N2ExMDBiMmE0Y2U1YTFjN2QgcHkzaworNjMyNjIgYWFiOGI4ZDRiNmE1MDg1NWNmM2E5MTc4NWU0YTQ3ZWMzMmFmZWQ4ZSBsZWdhY3ktdHJ1bmsKKzYzMjYzIGQ1ZWFhN2RhZWMyZjQ3MzA1YzE1Yjg4ZjhhNjBkY2FkYWM0NTc1ZGUgcHkzaworNjMyNjUgMDU0ZmY0MTI4Zjc0NGVlZGMxZGUyZmQxOGI0ODUwZGEwYTFjMzIzYSBsZWdhY3ktdHJ1bmsKKzYzMjY3IDI3ZDY5ZGM3Mjc5MzIxZDBkOTQ0ZmQ0ZjIzMzU3MDY0NTZmMDhiMDMgcHkzaworNjMyNjggNWU4OTMyOTkxYWRmZDEyMWMzZTU1MzJhYmY1NzNlOGFmYTRhZGRjOCBsZWdhY3ktdHJ1bmsKKzYzMjcwIDNhYmE0NDI1NjI2NTc5ZWZlMDY5OGU2OTYyOGE2MjhmNGZlNjMxM2IgcHkzaworNjMyNzEgNjJkOWVjOWM5ZWZkMTAyYTc1NDI2NmQyMjBlNzZmNGQ5OTI4ZTNjYyBsZWdhY3ktdHJ1bmsKKzYzMjczIGY1MTNiYjdiOGQ5N2U1NWI4MWYzYjE0NWE1Yjg5ZjNmZWRkOGVhYmQgcHkzaworNjMyNzQgYTA5MmRjZTZlOWQ0YTk2MTAyODQzM2RkZTNiODRkMGZlM2E5ZGI2YiBsZWdhY3ktdHJ1bmsKKzYzMjc2IDNjYzBiZjdmMDRiNmY1NTEwZGZjNTI4YzUyOGJhZDY2N2FhYzExYjIgcHkzaworNjMyNzcgODc2ZDJmMGU5MmU0ZTNhMTU0MDhhNWZmOWQ2M2RhNGMwNGVkYzQyOCBsZWdhY3ktdHJ1bmsKKzYzMjc5IGU0YmI2ZjE3NGIwMDQ0NDdjZmUzNjUwMDhiYzg0Zjc5YmY3MmJkMmQgbGVnYWN5LXRydW5rCis2MzI4MCA2ZGM5MWIzNjZkOWZmZTcyYmEwMjQwNWI1OTBkYzc0ZDNlMjRmMDI0IHB5M2sKKzYzMjgyIDU3Y2YwMDFhYTJhMjRlODZjYmY4YTM0N2RlODg0NzI0MDlmMmZkMmUgbGVnYWN5LXRydW5rCis2MzI4NCBmY2Y1ZGFjNTEzOTRiOGJiNGZmN2UxM2NlMjQ4OGQ3MTBmMTFlY2IxIHB5M2sKKzYzMjg1IGJhZGEwZTg3MWFjMWNmMTllZjM5NzU5YzBjZWVjYTEwNTRlMjJlMDEgbGVnYWN5LXRydW5rCis2MzI4NyA1YWYzOGI5NWExN2ZhZTI5OWUzYTU5ZGE2NWRiYjNkNmFmMzMyNmQwIHB5M2sKKzYzMjg4IDk2YTg3NmFmOTMwYTQ3ODc3NzViM2ZmMzhkNGZmNmM3YzY1ODgzZjcgbGVnYWN5LXRydW5rCis2MzI5MCA4YTEwYTQxMTlmYzI3NTczYWZlYWNmOTU3MjZlMGIyNGI2Mjg4NDM4IHB5M2sKKzYzMjkxIDFiNDRlZDFhOTA0NjVlZTRhZGM0MDRhZmEzMTE1YTQxNjJiOGJlZTMgbGVnYWN5LXRydW5rCis2MzI5MyBkYzQwOThjYTgyM2UyODc5YmVmMzViZTcyZmFiMjBkNDkwZTZjZjgzIHB5M2sKKzYzMjk0IGQ0Yjc0M2JkZWJiMTZjNWM5MWFjNWU5NmJhM2I3OWU5M2MyZGFkYTMgbGVnYWN5LXRydW5rCis2MzI5NiBjZmE4YzYxOGVkMzUzNzA5YWEyMGJlNDAzM2ZkNzQxM2U0N2FiY2Y4IHB5M2sKKzYzMjk3IDgwNDM1YmM3YWFjNDgzOGY4OGI1YmZhNTQwYzIyOWEyMTgwYjBiYzkgbGVnYWN5LXRydW5rCis2MzI5OCAxZTU1YjJkMWM5M2VmMzU4N2NkYzI2YzcxZWYxM2MxZDFhZWI4N2IzIHB5M2sKKzYzMzAwIDU5YmNkZmQyNzUwMWZlYTRjZDEzMjUxZWY1YTAyNmQxYTcxNDQyZjkgbGVnYWN5LXRydW5rCis2MzMwMiA1Mjk4NzM5ZjBhNGRmYzE3ZjRiMWRiNDkxZWRhODI1MTEyZGI3OGUyIHB5M2sKKzYzMzAzIGQ0YWNlZDMzZDU3YTU5MjRjMzI4N2E5NWRjODk3ZDkxY2ExZTNmZmMgbGVnYWN5LXRydW5rCis2MzMwNSBlMTE2Y2EyNmQ4ZjFjYTZiYmMwMGM2OWEwOGNjYTJlOTlkMWE0N2NlIHB5M2sKKzYzMzA2IGVkNTMyY2E3YWU3NWNmZDY5YWU2YWI4MGUxNzA4N2NlMDU0NjkwYjYgbGVnYWN5LXRydW5rCis2MzMwOCBhN2MxYjMxNzAxMTM4MzJhZmE2ZWEwNDAxMTUxZGNmZmIwNWU0OTY1IGxlZ2FjeS10cnVuaworNjMzMTAgNWE0NjA4MjcyYzUwNmE2YzA0MjhkYTIzZTE2OTgzZmNlNmY2NTIyNyBweTNrCis2MzMxMSBmZGE0ZDQxYTA3NzM4Nzk1Njk3ODgwYzdmOWVjYTMwMjY1NWIwYTdlIGxlZ2FjeS10cnVuaworNjMzMTMgMWQ2MmQzMjYxMmQ2ZGNmYjJkMjY0NjJiNWVlZWM5YTM5MGY5YWQwMiBsZWdhY3ktdHJ1bmsKKzYzMzE1IGE4YTU3ZmY2ZjU2OGJjNGU5ZDM2ZDBlYTZjMGJjMTIyNmE1MjA1ZmMgbGVnYWN5LXRydW5rCis2MzMxNyAxMzU2YTQxODgzMGIzNGNjMThmZjM3MzVmYzBlY2U2NmI1NGM4NzA2IHB5M2sKKzYzMzE4IDYyOGRkNWVjNGRkMmU4YTc4NGEyMGEyYjNiOGFhZDA5MzE0ZmQ1YWUgcHkzaworNjMzMjAgMTU3M2M3NzZkZjgyZWM1NTVlOGJmNzg3OGZjY2NmOTI4MjFlNzRmNyBsZWdhY3ktdHJ1bmsKKzYzMzIzIGQ1OTI5Y2Y4NjhjYmJiNTIzMWIxOTE0M2U5YjM5YmMwOWY2M2E1NWEgbGVnYWN5LXRydW5rCis2MzMyNCA5MTg5NjIyNzI3MmE2OTJiNTFkNTBhMGI1MTNjMmM5MGU4YzkxNzcwIGxlZ2FjeS10cnVuaworNjMzMjUgOGUwMDE3OTg2ZjUwZWU2NGExN2U4N2Y4Y2NhMGE0ZDc4ZWMyMGZkMyBweTNrCis2MzMyNiAzOTE5NzlhZjY2MmJjNDhkYWQ2NzQ0NGU0YWVmMjZlZjlmOWNmNjkxIGxlZ2FjeS10cnVuaworNjMzMjcgZTY4ZTYxMDg2MmJlYjVmOWE1NzEyY2RkYjMzMmE5MzU5NWUyY2VmMCBsZWdhY3ktdHJ1bmsKKzYzMzMwIDg3YTc5MzUyMzQyYzYyMTVlYWNlMGY2Y2NlNDM2NjE3NTU1NjZjOGYgcHkzaworNjMzMzEgMDgxYzE1ODA2ZTI4N2MwMzY2MTZhNTA4MmNmN2E0YmViOTE1MDY5NyBweTNrCis2MzMzMiAwZDU0YzcwNTY0NjhiMzJhNjhhNTc3ZjM5MjM2NGIzZGQ5NmE1YWUzIGxlZ2FjeS10cnVuaworNjMzMzMgMzk3ZjI5ZGQ4MmJkYzVkYzRlZjNmZjViNzA2NjA1NTM0YWVjNzMxNyBsZWdhY3ktdHJ1bmsKKzYzMzM0IDMxY2M4ZTFhOGZkZjVmMjM3ZjVlOWE5Njk4OTM5OWZmOTJjMWY2YjUgcHkzaworNjMzMzUgOTYwYWRlODU2MDc4ZDY1NzEyYWQ2N2Y0MDY2ZWM0NjdkMDgyMmU3NiBweTNrCis2MzMzNiBhZTE2ZTk0YmIwM2FlOGVkZmQ3MDM2NDhlZTVjNDA1OGU2ZmQzZWU0IGxlZ2FjeS10cnVuaworNjMzMzcgMmI4Zjc0NGRiNzliNzIxNTg3YWMwNmRjYmE1NWQ3OGIzMjY1Mjg0ZCBweTNrCis2MzMzOCA2NzgwZjAxNTk4YTIzNDRmNzllNzNmMWQyNTYxN2QzZmI1M2UyOGE5IHB5M2sKKzYzMzM5IDhkOGUwNmY0YmUxZmY0YmY2ZTQyNTJkYWU0NTcwYTQzYmNhODI2ZGEgbGVnYWN5LXRydW5rCis2MzM0MCAwYzcxNDJjNTZkN2VkOWVmNTc1NThiOTgzMmMwYTY5NGNjZmM1YjIwIHB5M2sKKzYzMzQxIGE4YWUyYWEwOGU3ZmY1MzA1Zjg3NWVjOTJjNDk0NjAxMzM3NjBhN2QgcHkzaworNjMzNDIgM2MwM2U5YjQ2Njk4NDE3NWFmOGY4NjcwOGVhZGVkYzBlNzYxYzlkMyBweTNrCis2MzM0MyA1OTNiNjQ5OTA0Yjg2NjM2MDQwZWJiY2RiMWI0MWQxNjFjMzgzYTVjIGxlZ2FjeS10cnVuaworNjMzNDQgMzY1Njg3Mzk4NTE4N2M4ODEyZTNiZjY5MjYwZDdjZjI5NGQxYmY4YiBweTNrCis2MzM0NiAyZTJjNzEyZmUyNmQ2OTdkZDY2YzljZGEwMzVhNjIwZmJkN2M4YWY4IHB5M2sKKzYzMzQ3IDU3ZjYxZGFkN2IzYjRmM2YzOGI0ZTY4ZTZhZWQxZDczOTEyYzMwODEgbGVnYWN5LXRydW5rCis2MzM0OCAzNDA3YmY5ZGFjMzg3YTRjNGFiN2NkZjBiYWZkYWE2YTg4MWJjZTliIGxlZ2FjeS10cnVuaworNjMzNDkgNThhMGQ1NTI0ZjlhM2JhOTUwNjE1M2QxYmYwMmFmNDhkYWQ4NzhkZCBweTNrCis2MzM1MCA5OGY2ODcyNmRhMDJkNTBhNmI1OWNjNDhiMDEyMWJkNTcwN2Y4MDMxIHB5M2sKKzYzMzUyIGI2MzA3Mjk1NzFlNjY4ZjRlNGUwNzI2ODZhN2EyZmZhOGMwZmM5ZmQgcHkzaworNjMzNTQgOWFjMTEwNDNiMzk1MzYzZTE4ZWYwM2RmYWM5NmM3N2I3NjA3ZWFkOSBsZWdhY3ktdHJ1bmsKKzYzMzU1IDk0N2NhZWUyMzk5ZWYxZjg5MWQxNDIzOTA1NDFlYjcyZmQ4ZGU5ZTEgcHkzaworNjMzNTcgM2RmMDkwZWQ0ODEwM2Q2MjI5MjA5NDVmZTdmMDNlNzQ2YzljMmY0YiBsZWdhY3ktdHJ1bmsKKzYzMzU4IGQ2ZmU1MDIzMzYyNjBmNjAxMzQxODJkZTJiYzlkOWRlNjE3MjQwMzUgbGVnYWN5LXRydW5rCis2MzM1OSA0ZWE5OTMwOWU1MjU0YzhiNTZhMjMyZDhmNjUwNDgwYzE1ZDE4YmU1IHB5M2sKKzYzMzYwIDRmMWEwNzlkZjQyN2NiZDllODNhYThmZWFhOTAxYjliMWUzYWJhYTYgcHkzaworNjMzNjEgYjBiMzI3MzJmNjZlYjdiZTI2MGI3Y2QxNDRiZTNmOTk0MjM1NDQxNCBsZWdhY3ktdHJ1bmsKKzYzMzY0IGVkMTMwNDBhYzJlNmU1Zjc4NDc5OGZhZmYxOWRkYmQxZGQ1M2I5YWUgbGVnYWN5LXRydW5rCis2MzM2NSBmZjJkYzAyYmE0MWFhM2QxMTEzMzhhMzc0ZmFlZWY3MzBjZmQ0MzVjIGxlZ2FjeS10cnVuaworNjMzNjYgNDU2NTBjMjVhMDI4NjUyNjZmMzY3MzZmMjRjNTQ0YzMzYTQ5N2RlZiBsZWdhY3ktdHJ1bmsKKzYzMzY3IDU0ZmQwNDU4NTUwYzZhNzUwMzYyMTVkZmRhNTUwZDQ5MjgzNmViMjMgbGVnYWN5LXRydW5rCis2MzM2OCBhYThlMTMyNzliNWIxYWMxY2M1NWU1ZmY3NDdmZDRmMDYyMWM5OTg2IGxlZ2FjeS10cnVuaworNjMzNjkgYTJjZWY5ZTg5YjdjMmU2OTgzZTIzZDVkMDlmYTUyNWU3MDAyNDQ5YiBsZWdhY3ktdHJ1bmsKKzYzMzcwIDVkMWFmZjQ2Y2MwZGYxZTM4M2IzYmFmMWYwYTIyYTE1ZGI1NjJlMzYgbGVnYWN5LXRydW5rCis2MzM3MSBiMjQwM2Q0NzBiNjlkZDdjOGJmYmYwNjg1N2U3ZDkxNmFiNjE4ZDJlIHB5M2sKKzYzMzczIGRkMGJjYzIxNmZlMzU5MjBhZjQ0NmUyODU3MzU0Yzc5YzNlM2Y0MWQgbGVnYWN5LXRydW5rCis2MzM3NCAzYjgyN2YzNjQ3Y2IxODQ2OGFiNjQwNjhhNTk4MmE5ZjZlMzdiZjNhIGxlZ2FjeS10cnVuaworNjMzNzUgODkzYTRkYzE3YTkxYzVlYmExMzczNTM3MjViZTY2NmM1ZWE1ZTc1YiBweTNrCis2MzM3NiA4OGJiOWRmMzg1ZGMwZDc1MDYwMGVmMzZmODRjODViN2EzM2U0NGEwIGxlZ2FjeS10cnVuaworNjMzNzcgMGYxNTczNWMxODMxZjU0ZWEwZmFkNWMwYTFmZGIyN2RjNzc4NjhiMiBweTNrCis2MzM3OCA2Mzc0MWM3NTIxYWEwYzIyMzNjZmE4YWM0MWFlNTg0NTg5NGNkNmJmIHB5M2sKKzYzMzc5IDBlNjdlMjFhNDExMzIwYzc3MjJmYmFmM2M1NGQ3Y2Q1YjgxMzJhZTQgcHkzaworNjMzODAgNTMwNDA0NmJiMzU4ZDU2MDE1Y2I2OTc1MDVkZjMyYTczOWZiOTYxNiBsZWdhY3ktdHJ1bmsKKzYzMzgxIGFiZTM1YTg3YjAxZGEzMDMxMWI4OTczNWNlOTZlZGQ5MDc0MTRiZDcgbGVnYWN5LXRydW5rCis2MzM4MiA2MGI4NTkyNGVjNmQwMjhlNmEyZmI4N2M3NmI1YjQ0MGNlMTk3Y2Y0IGxlZ2FjeS10cnVuaworNjMzODQgY2U3YWE4OGI2NjllYTEwZGMxY2M3OTVhYzBiNGUwZjIyMDRlMjY3YyBsZWdhY3ktdHJ1bmsKKzYzMzg1IGEwMmJjMmE4NGQxOWNjZDBiODAyYjg0OGQyODQ3NmQ2MjAwMGYzNDMgcHkzaworNjMzODYgODgwZmU4ODc3ZGY5NzhiOWVjZTA5MjdkMjIyNzZhZTRiOTE3ZTZlNCBweTNrCis2MzM5MiBhYjgwYmJmYTZmMGMwODkyNTRjNWU1NmE5ZGZiMzFkNjFhZGVkZmRhIGxlZ2FjeS10cnVuaworNjMzOTMgYmU1ODFhY2VhNGU3Mzk5NmIzNzQ4Nzc3OTRlMWYxNDdkOTQ5ZDU5NCBweTNrCis2MzM5NSA2YWY2NDUxMjI5NGFkMDlkNzI3YjFmMGRiMTMwNGQwZDU1NjcyZDI2IGxlZ2FjeS10cnVuaworNjMzOTYgNDJiNzhlMGU2ODQ4MDczNDk2MjE1MDQyNDljNjVkMThiOGEzMDJjNyBsZWdhY3ktdHJ1bmsKKzYzMzk3IDg0YmI3MmQ5MGJjNzI1Mjk2MzgxNTNhN2ZkNWE4NWQ2ZDNmYmVkZjYgbGVnYWN5LXRydW5rCis2MzQwMSAwNjgwNzk3YWU0NTQ2MjllMDU3ZmYyMjNlMjZkYjMxMjMwMTE4ZWEzIHRsZWUtYXN0LW9wdGltaXplCis2MzQwMiAyMTQ0YzlmMzY1YzhmYWFmZjMxM2ZlNWQyYTUxMWY5YWI0MmVkYTFkIGxlZ2FjeS10cnVuaworNjM0MDMgMWNhOTY3NTY2ODgwZTgwNjQyMDNiYjIzYTc4MGY4N2I3Mjg1YzZkMiBsZWdhY3ktdHJ1bmsKKzYzNDA0IDZmYmQwNmRiNzA3NzYwMTZkMDM1ZTJjNTc1ODNiYjNiY2IwNTI3YTYgcmVsZWFzZTI1LW1haW50Cis2MzQwNSA2Yjc5NzczMTRjMDJmZDYxYjdmZWUyYWNkNzRjZmJlNTYyOGRiNDdiIGxlZ2FjeS10cnVuaworNjM0MDggM2JiZjQ0ZDMyMzYxMjJhY2I5MDc4MDE3YTQ5MzZiZmY4ZTMxZTdhYiBsZWdhY3ktdHJ1bmsKKzYzNDA5IGYyYzAzZDcxNTk3ZDQ4YjJjNGI5NjNiNjRkMGMyNjdmYWJhOTA4ZWUgbGVnYWN5LXRydW5rCis2MzQxMCA2OTRkMzZmYjZmNGRmYTI2NjgwYzQxNjIzY2U3MWQ4MDAwNjVkMDZlIGxlZ2FjeS10cnVuaworNjM0MTEgYTk3ZWIxNzdmM2E3NzljZDlhNGE5MGJiZjZjZjVhNTJiN2IxMmMwYSBsZWdhY3ktdHJ1bmsKKzYzNDEyIGFjOTNlZGMzOTZhNjRmOTRiMDI3ZjY0ZDM0MDM5MmE2YjhkYTI1ZGYgbGVnYWN5LXRydW5rCis2MzQxMyBiNjYwNTBkYjg0MWYwNWJhYjI4MjNmMTQ1ZjVlNTFjNDJmNDVkMTc2IGxlZ2FjeS10cnVuaworNjM0MTQgNjgzNmU4ZjFkZWRiY2Q0NmYwM2Q5Zjc5OTlkMjE4ZmYyNTkyMWQzMyBsZWdhY3ktdHJ1bmsKKzYzNDE1IDc0NjA0MTVkYThmZWM3NjkxMDI4NmI3ZTkzM2RiYzhkOWFhNTMzZmMgbGVnYWN5LXRydW5rCis2MzQxNiBmM2RkYTlkMzY2OGZkMzMyM2I3OTk4ZWRlMTdjNTIxZTZmZGNjNjYyIHB5M2sKKzYzNDE3IGQ2MzM0NGJhMTg3ODg4YjY3OTJiYTgzNjJhMGRkMDllMDZlZDJmOWEgcHkzaworNjM0MTggZWY0Y2NhMmQ2MTcxM2QzM2MyYTUwMjUyMzVkNDAzMGUzNjk1ZDAyYyBweTNrCis2MzQxOSAyNDk2MTg4OGFkOTU2YWNlODA3Mjc1NjJlNzU1N2M2YTI3ODlmNzgxIHB5M2sKKzYzNDIwIDhhNzQ2MTJmM2QyYmFlMWRjMjJiZjU2MDRmYzhjZDQxMmRlMDU2NzQgcHkzaworNjM0MjEgZDZlMWVhMjFjOTQ4ZWMyODg1MWY4N2VlMTFmNTIyOWE5ZTNhZWZiNyBsZWdhY3ktdHJ1bmsKKzYzNDIyIDkyNDBhNTlhMjVlOWRkYzQyMmMzNTg0ODMwN2ExM2IwNTdiYWE3MmYgbGVnYWN5LXRydW5rCis2MzQyMyBjY2UxYjI0M2MxMWQxMzYzZDgxNzEyMDRmZWY4ZWYzZGRkMTdiN2I1IHB5M2sKKzYzNDI1IDcxMThmYWRlNTc1YjllYzFlZDI5ODEwZGMzYmMzZjg2MmFmNjQyZGYgbGVnYWN5LXRydW5rCis2MzQyNiA2NGYzODczNDM4YjFjYjI2NDVkMTg3YmY0ZGRkYTRlZGZjZjU4MWFjIGxlZ2FjeS10cnVuaworNjM0MjcgNWNlOTA0YzkwZTYxOGM3NWIxNDJlM2QwYjQ0MWY1NWE2YmU0YjQ1ZSBweTNrCis2MzQyOCBkOTUzZWE1OGNjOGJjYTM1ZTQyYTk3ZmRmYWRmYmI2ZTA4NzFkZjkyIGxlZ2FjeS10cnVuaworNjM0MjkgN2ExZGMzZTdjNzliNTI0Mzk5ZWJhM2ZkODA5ZDMwMTBhNzBiMDUxNSBweTNrCis2MzQzMCA4MDFhMDlkZDBlYjhhYmRmOWIyZmViNzU5NWNkYTQ2MGFlYzE3MDVhIGxlZ2FjeS10cnVuaworNjM0MzEgYWM1OWZkZDgwZTQ1OWU2ODIwMGQyNmRhMGFhMWM0NmZkNzI5YWNiOSBweTNrCis2MzQzMiAwYWExYmRlOWQxOTRhOTdkNjI1N2Y0NDFlZGI0NjMxNWFhMzgwZDc1IGxlZ2FjeS10cnVuaworNjM0MzQgMzNjN2ZlODVlMzVkZmY2MDAyZDlmOWZkMmI5YzJlZTA3ZTk2NTE1YiBsZWdhY3ktdHJ1bmsKKzYzNDM1IDEyYzIyOWQwMjFjYzJjNjBhNDY2OWMyMjRlYWM3ODEyMzQyY2ZkNTQgcHkzaworNjM0MzggZjg2MmRmYWY5YTRiZTNhMzA1ZmI1ZWJkOWQ3NGU0MDcxODAyOTcxMSBsZWdhY3ktdHJ1bmsKKzYzNDM5IDcyOTZhMmZiNDc4NmRkYTkwN2I0NmVjZDg2MTljMThjZGY3NGY0N2UgcHkzaworNjM0NDAgM2Q1Y2RkYzZlNWU3ZmM1MDAzNjhiNTJjYTZjNmYwNDhkMjMxOTJkZSBsZWdhY3ktdHJ1bmsKKzYzNDQxIDU4NWY3Y2EzOGE4NWFmODA5NzEzNWM5MzcyZjUwNzI0N2E5Y2RjNzEgcHkzaworNjM0NDMgYmJkMzBjNDkyYTk5OGMzZWQ2ZTE3MDgwNzQyZWIyYjI2ZDVmYmNhMCBweTNrCis2MzQ0NCBjZGI3NWFmMjM4NWEzMWZkYTY5M2QxNjM5ZWZiODYxNjQ1OWVjYTRlIHB5M2sKKzYzNDQ1IDlmMzU0MDAxZWEyNTI3MTE1ZGE1ZjkyY2JjNTY1NDhkYmQ0NTY5NzMgbGVnYWN5LXRydW5rCis2MzQ0NiBlZmUyMmVlZjI2YmUzZTI3NWU3YjA4ZTUxZWVjNmY0NGU4MGVmMDQ4IGxlZ2FjeS10cnVuaworNjM0NDcgMjBiMWM1YzRlMzA0NDVmMmI2YTg3YzY4Y2YxMmFmMmM5ZWY2YjdiOCBsZWdhY3ktdHJ1bmsKKzYzNDQ4IGE5Mzg1MjlmNGQ2ZGQzYTIxODkxMzI3MjgwNzkwYmQ3MjBjMjgyMzQgcHkzaworNjM0NDkgMmU5ZjU3MmI3MzIyN2E4NTlhNDljZDIwZDQxNWZjZDFlYWM2MmI5NCBsZWdhY3ktdHJ1bmsKKzYzNDUwIGI4NmIyOWUwY2YzMjlkMTBjMTg2MzJmZGE0ODk3NzVhZDZlMjFhNWYgbGVnYWN5LXRydW5rCis2MzQ1MiAzMGY2MzJiMzY4NjhlOWQ3MGVhZDIzMTNkNTYxNWI0MTkyNWE5NDA5IGxlZ2FjeS10cnVuaworNjM0NTMgMzc0OTkyODdmNzU4YTcyZGIyZDJhOWIzOTAzZjBmZmFiMTg2MWNiYiBweTNrCis2MzQ1NCA2MWE2NzViYTc5MDYwMjU5YzdhOTkyMWQwMWQ5NDkzMWJhOGZiYWY3IGxlZ2FjeS10cnVuaworNjM0NTUgMzZjNzFkM2E2ZWY4YzFlODhmZGEyMTBkZWMzODRkZWFiY2Y1NjRhOCBweTNrCis2MzQ1NyAzMDcxYTMzN2Q5MjFmM2ViYWVlOTQyMjQ2NzdjNzdmNjRjZTgwYmQ2IGxlZ2FjeS10cnVuaworNjM0NTggNmE2Y2I5ZDRiZjk0NTAyZDM5ODhmM2ZmYWZkODA1YWExOTc4N2ViYiBsZWdhY3ktdHJ1bmsKKzYzNDU5IDc5NmNiOTNjOTcwN2Y3YmZjZjg5MjNiMTY3Yjk4ZWQ1YjM0YmNkNWUgbGVnYWN5LXRydW5rCis2MzQ2MCBjZDkxZGFmMDMyN2M2ZWQxZTI1MmNkNjIwOTEyMWMzNWVkYmZiYjQ0IGxlZ2FjeS10cnVuaworNjM0NjIgMTJjYTFlODIwMjgyYmY0OWM1ZDk3ZWVmZDk3NzI3YWExYzE5MDUyMyBweTNrCis2MzQ2MyA0ZWNjZThmZWQ2ZTFkYjY0M2ZhY2NkYWU2OTA4M2I2NzQyZmRjMDcxIGxlZ2FjeS10cnVuaworNjM0NjQgOTVjYjAwOTM2NmRjYjkzMDk1ZTU4NTJiMjkyM2U4YjU5YjQwYjliOSBsZWdhY3ktdHJ1bmsKKzYzNDY1IDhiNjI4Y2EyMThmM2Q2YzM2MjliZWVjYTU5MDc3YzE0M2FkZDk1MTMgbGVnYWN5LXRydW5rCis2MzQ2NiBhMWY3MDQzNWQ4ZTM3M2Y5NjBiOTgyM2VlMmZjNzJiNjNmZTk0YWU2IHB5M2sKKzYzNDY3IGNhOGQ4YzhmMjk2MDMyNTM2ZWVjMDg5OGZkZmYxNTBlOGY3ZjRiZjIgbGVnYWN5LXRydW5rCis2MzQ2OCA4NTMyNmZiNzU1ZTI5OTBhMWRjMGIwYTQ4ZDMyMWFkNjNmZDFkZjQ0IGxlZ2FjeS10cnVuaworNjM0NjkgZTgwODUwMDU1YjkzMTcyYzE0MGJhMjEyYWNjYTNhMWU3Y2IwYzllZiBsZWdhY3ktdHJ1bmsKKzYzNDcwIGI4M2Q3ZDAyOWUwZTE3NWViNDk1MTYyMDQ0ODcyNDkxNzEyMmRlZjEgbGVnYWN5LXRydW5rCis2MzQ3OSA2M2RkZDNlZTRhMmQxZDc4MjhhYWM5MDA1MGM0NzA0OWZjNzQyNGYwIHB5M2sKKzYzNDgwIDg1YmEwODdjMGNjNzRiMmNmNzVlMGRhMDAxMDc4ZmQ4NDBkMTAyODEgbGVnYWN5LXRydW5rCis2MzQ4MSA0NTRkMzhjMWY0N2U5MWE4MDI0ZTZhZmFjZGM0NjM2YzUxYjU1M2Y1IGxlZ2FjeS10cnVuaworNjM0ODIgZWFhYTE5ZTk0OTk4M2M3MTZiYjA1NmEwN2M3NjlhYjdlODM3MjgzOSBweTNrCis2MzQ4MyBkMTdmYWM4OTZhMGJjNmJmZmNmMDllYjE3NGNhOTBmMWNmYmE1MDFhIGxlZ2FjeS10cnVuaworNjM0ODQgNzc1NTcyMTZiYTMyMWExNjE2MThkN2I5NzMzODlmZWFhOTc1ZDcwMSBsZWdhY3ktdHJ1bmsKKzYzNDg1IGQ1ZGQ4YTg1Mjk3MDU2YWVjZDdhZmMxMWUxMWM1ZTNjOThmZjVmOGUgbGVnYWN5LXRydW5rCis2MzQ4NiA1Y2VjNDM2ZDY0YTI4MTJhZjc1MmEwYjlmMjVmNTYxNTkwMGQ4OWM3IGxlZ2FjeS10cnVuaworNjM0ODcgYjUzNjA0ZmFkNTRiMGU2NjI5MDFhN2JhNWI0MTFhNzdhNDBmMWE3MSBsZWdhY3ktdHJ1bmsKKzYzNDg4IGFlMTkxMjAyMzJiNGE4ZTMzOTA1NjY0ZTE1MzJlM2U4YjU4YTgzZDcgbGVnYWN5LXRydW5rCis2MzQ4OSA3ZmM5NmQ3ZWNmMmVkNzFjYzFmMTc2ZDJiOGZmY2JlMWI4NTBmNzRkIGxlZ2FjeS10cnVuaworNjM0OTAgNTFlMzI0YjU3M2IwOTk0NmI3ZjEyYTc1YmZkNWQ1YjcyMDA4NGU3NSBsZWdhY3ktdHJ1bmsKKzYzNDkxIGE4ZjE1ODNiNzhmNmZlZTcxNzZmN2NlMmQwOGYzMGNjMGNiMDg1OTAgbGVnYWN5LXRydW5rCis2MzQ5MiA0YWQ0YmVmOTFlOGU3ZjQ0ODllOTcxZTE2ODI5MDYwYzI0YTk0YmFjIHB5M2sKKzYzNDkzIGY0MTliMmU5NmE5ODdjMWQzNmM3OGI4Nzg5YTI2YzM4Y2VhYmQwNTEgbGVnYWN5LXRydW5rCis2MzQ5NCAxNzNlNWU4YjNlNTllZDJhNGEwYmFhMTBiOTkwNDE1YjA5NjI2NmNlIGxlZ2FjeS10cnVuaworNjM0OTUgMDkxMjUxMWI5ODk3NjJiZDQ5OWRkZTAyNTA3MzljMDcxMDhjYTFhZiBsZWdhY3ktdHJ1bmsKKzYzNDk2IDMyYmQxODcwOWRmZGYwMDRlYWMzOWEwZWEwZmYwYjc2NTM4YzM5MzQgbGVnYWN5LXRydW5rCis2MzQ5NyAxNGViODA0YjNmYzdkZjFjMzIzNmZjY2ZjMTk1M2RiMDBlMDQ0NTMyIGxlZ2FjeS10cnVuaworNjM0OTggNTlhYjJjZjAwMmZhOGI1YWQ2ODc4MmNhMWM1ODdlOWMzMmI2OGNhMiBsZWdhY3ktdHJ1bmsKKzYzNDk5IDUyYTY2MzczNDM3ZDMyMzdjNGY5YjJmMmVhZGNjNmIyYjgyNmY0YjQgbGVnYWN5LXRydW5rCis2MzUwMCAxMmM1NmQyZWI0ZDk3OTk1OTQwMzQwNTdhMTAxNjE1YjZjZTdmYmRiIGxlZ2FjeS10cnVuaworNjM1MDEgZGUxMWJmODQ0OTFkNmNlNDE5NTIxY2RhNmE0MjNmODBiYjIyMGFjZCBsZWdhY3ktdHJ1bmsKKzYzNTA3IDQ2YmQ4Y2ZhNzU0YzU4OWEzNjVmZjgxM2ZkNzEyZWExODIyM2UzYzQgbGVnYWN5LXRydW5rCis2MzUwOCAzMjkxY2U0OTI4YmM0NDYyNmM2ZjIwY2VlM2E2OTI1MThkNTMxMjdjIGxlZ2FjeS10cnVuaworNjM1MTEgMjJkMmZiNzYxYWMxZDM0OTI5OTdjMzNkMjFlYjEzMzVkNThkN2M3MyBsZWdhY3ktdHJ1bmsKKzYzNTEyIDljOTMwYTMyY2ViYjI1NzhlZDMxNDhjMjU1ZDZiN2ViZDBiZjkzMTMgcHkzaworNjM1MTMgNTM4ZTQxMGMwMDg4MzE3ZjBlYzI1ZmYzM2Y1ZWM0NzRlMDFlMGU2ZSBsZWdhY3ktdHJ1bmsKKzYzNTE0IDU1YTUwZDM5MWJhOWE4MzkyN2FlZjA2NmExM2E4MjRjZWJhMGZiZTcgcHkzaworNjM1MTYgMmQ3ZmE4NGM4NzhkYjU5MmJhNTk1ZmZhYzg3ZGZkNzA4YzJjZWU1NiBsZWdhY3ktdHJ1bmsKKzYzNTE3IGQyOTAwNTBlZDhiMjJhMmM2MTcyMDkyZTJhZWMxZTg0M2MyOTAwMWQgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNTE4IDdhYTlhZDY1ODAxNGE0M2JjNDYwNTU0ODY3ODgxZTZjMDRmOTlmMzMgcHkzaworNjM1MTkgOWRiY2EyNzU0YjQwNmMzYzIyZTY2MjJmYWExMDI5ZjdmOWU5MGJkNSBva2tvdG8tc2l6ZW9mCis2MzUyMCAxZDIyNzIzYTU3ODUyNDZkNmYyNzRiYmVmYjkwODc2NjViNmQ1NWE1IG9ra290by1zaXplb2YKKzYzNTIxIDM2MDc3NzY1ZTFjZjQ1OGEwYzcwOTg1NDY2MmUwMTQ4Mzg0Y2Q0YWMgb2trb3RvLXNpemVvZgorNjM1MjIgNzc5OGJjODZhYmEzMmExNWU3NjgyZTg5MjA3ZmUzNjYyNTBiMjAxNSBsZWdhY3ktdHJ1bmsKKzYzNTIzIDhjODFmYWEyMTBjMWRkZWYyMjAwZGYxNGQzZjZlOGQyODEzOTY3YzUgbGVnYWN5LXRydW5rCis2MzUyOCA1YmUyZDgyYWM1YWNkNTk1Nzg3N2Q4NzM3YmU1Y2NkNjJkYjAzMjU0IGxlZ2FjeS10cnVuaworNjM1MjkgY2RkMDAwMDYzMWNjNzg1YWUzODA4MTFmYzQ3YmFjODhlMGE2MzI0ZiBweTNrCis2MzUzMCAyYzM0ZjE5ZTM5MjJhNmFkMTQ4OTdiZmI3MzI4YzRiYTFmMjkyNjQ1IGxlZ2FjeS10cnVuaworNjM1MzEgYzZkYmM0MzIzYTIyZDI1ZTUwNTI5OGRlOTUyYjI1ZTI0YmE2Y2I1NyBsZWdhY3ktdHJ1bmsKKzYzNTM0IDgxYzNhNmY5ZDg1ZjBhM2RjMmE2M2M5NzZhZTg0ZjgwOWQ2ZDRiNjkgbGVnYWN5LXRydW5rCis2MzUzNyA0ZjZlYTVjNTlhYjMxYmE1ZjA1Yjk3OWRiOThjZTQwNmE1NjA4OTMxIGxlZ2FjeS10cnVuaworNjM1MzkgMzhhOTdkY2MyYzljNWE5M2VlOTBkYjQwMDYwY2ZhYzhjMDNhMmQ5NyBva2tvdG8tc2l6ZW9mCis2MzU0MCA3MTE0ZTFlZmUzZjk2NzRlOTJjZTlkMzY0Yjc0YzRmM2ZhOTQyMWZmIGxlZ2FjeS10cnVuaworNjM1NDEgYzUzNGI2OWFiODcxZDVhMTI4NjFiNGIyYWZiZDRhMGU2ZGM5NGU4MSBsZWdhY3ktdHJ1bmsKKzYzNTQyIDJmZmZkZWRiMTBmOGM0ODI1NTVjNTQxM2UyYzk5ZjZmMmU3NTc5Y2MgbGVnYWN5LXRydW5rCis2MzU0MyBlMTg1MjNmODQyZDdkMTM5NTBkZDk5OGEyMTViZTVmYTRmMDllMzBiIGxlZ2FjeS10cnVuaworNjM1NDQgNWEyOTU1MjQxMmZhMmJjNmVlOGEyMDJiNmI4NWIyNzcwNTgxNjcyMCBsZWdhY3ktdHJ1bmsKKzYzNTQ1IGJiMDQzMzJjN2YwMTc4MmJmYWYyOWIzMmRkYjE2MTU2YjdjOWYwOTkgbGVnYWN5LXRydW5rCis2MzU0NiA3MWRlZWU2Yjk0MWU5M2I4OTVjMWU0Y2RiYTY1NzZkOTA4OWZlMTJiIGxlZ2FjeS10cnVuaworNjM1NDcgOWZiYzQxYWJkZDRiZWUwYjhmNGU0NDE2MjQzYzk1ZjRmNDY1M2I0MiBsZWdhY3ktdHJ1bmsKKzYzNTQ4IDM0MmZiZGNjYjdkOTY5ZmZkZjcyZWE5YmMwYmU3MmMxZDViOTk0YzEgcHkzaworNjM1NDkgOTkxNzZiOWQ5MGIzN2ZmNmZkNzFiZDE0ZTAzNWY1ZmE3NTk1M2E1MiBsZWdhY3ktdHJ1bmsKKzYzNTUwIGUyYmVmNDRmNDU3ZGRjMjM3NDQwNjcwMmZhM2I1ZjM4ZmY2NDY3ODUgcHkzaworNjM1NTMgNTk0ODI4ZWEwM2ExMDVhZDQzZWNmNmEyNmEzMDE3YTIzNjQxN2I4OCBsZWdhY3ktdHJ1bmsKKzYzNTYxIGEzMGZlZGU4NzY0M2Q1YmIwMTZkYWVjNDZjYTI3N2ZiODUyZjA2ZjEgcmVsZWFzZTI1LW1haW50Cis2MzU2MiA1ZWM5NTI4YzkzZGVhYTU2ZGY5ODI1NzkyYTNkN2IzNzAxYzQ4NDBiIGxlZ2FjeS10cnVuaworNjM1NjMgNWQxOTI5OWVlMzQ2M2VkN2QzNzk4NDRlZjQyOGU5Y2I3OTE3OWQ1YiBsZWdhY3ktdHJ1bmsKKzYzNTY0IGM1YTg1ZTRmOWU4NjY2YjNkYWJmYTZjN2YzNjAyNzg5OWRhNDMzYjAgbGVnYWN5LXRydW5rCis2MzU2NSBhMjE4ZDVjYjI1OGIyMDgzMTMyODIzYTA5ZGRmOTJkOTU1OGIwYjFkIHB5M2sKKzYzNTY3IDQ2YzZiOTc4OWRkZWNjMzA2ODIwZjI2ZjBhNjkxZTk2YzU1NWEyYjUgbGVnYWN5LXRydW5rCis2MzU2OCAwMzRkNmM5ZTI2NzFmOWU1ZDMzYjM4YzUwYjgzNDBkODA2ZDMwZGM0IGxlZ2FjeS10cnVuaworNjM1NjkgMjdjMGQ3MzUxZWE4ZGZhYzRhZDMyNjdiM2JkNmQxMWM1ZmViZTQ3YSBsZWdhY3ktdHJ1bmsKKzYzNTcwIDcyN2ZkYjkwNjE5MTNlMjYyYjgzN2MyNDcxZjJjYTU2MzQ2YTljMzMgbGVnYWN5LXRydW5rCis2MzU3MiA1NTY4MDA1ZDIyMTczMjI1YjcwNjQxZWVlZDNmMmNjZmMxMmYwYmY3IHB5M2sKKzYzNTc1IDBkMGQ5NjQxZjliZDk3N2E1NTc5NTA1YTcwNWRjODVmYmNlNDkzM2QgbGVnYWN5LXRydW5rCis2MzU3NiA0NWZmNzM3NjcxZjYzMzlkYTljNTVhNGRmZTQ3ZjQ5YmNhZjQ0MjkwIGxlZ2FjeS10cnVuaworNjM1NzcgNmFiYzYzYzYxNTI2NWY5MWUyYTkwNmNhMTYyZmI2NGJhZmE3MDViNiBva2tvdG8tc2l6ZW9mCis2MzU3OCA5MDkxMmIxMGFlNzJmMzhjYWMzZDEyOWRhYjBmY2Y1MmI3NWVhYWJjIG9ra290by1zaXplb2YKKzYzNTc5IGZkMWEyZjQ5OTZlZjE2OTBjNTNmYjM4N2YwYjI1YWMyNjkwMzZjMmQgb2trb3RvLXNpemVvZgorNjM1ODYgMjhjZjk5YzE5M2M3ZDU2ZjIwMTM4ZDQ0NjU1YTdkZWQ1YjdmMjRhMSBsZWdhY3ktdHJ1bmsKKzYzNTg3IDBmNWYzMmJjZGM4ZmNmZGQxNTExNTBlZGZiMmQyYzVmMTU3MTE1NjEgbGVnYWN5LXRydW5rCis2MzU4OCAwNWFhMjFkNmRiZWJlNjI5OWZiZjk2NTRmN2YxOTkwZWM3M2Q2N2I0IGxlZ2FjeS10cnVuaworNjM1ODkgYmExZmE1MTFiNzJkMWZjNGIxNzU1NTAyZTk1NGY3ZjRmNDFmNWU5NSBsZWdhY3ktdHJ1bmsKKzYzNTkzIDIxOGExMDg2NzI4YWI2ODc3MDA3YzQxNGE0Njk0ZTMyYzJhZWZkY2Ygb2trb3RvLXNpemVvZgorNjM1OTQgODdiMTQ0MTg4OWE1MzMyZjE2OTY4Y2ZkYTkzYTE2MTMzYjZjNDZiZSBva2tvdG8tc2l6ZW9mCis2MzU5NSBmNWIwMjkwMjBlMDIzZmZkZmNlNWExNmI2ZDFjMzUyODVhNzE2YzVmIG9ra290by1zaXplb2YKKzYzNTk2IDY4MGJiOWRkNTgwNzQ0ZDFiN2Y0M2VjMmQxZTg5NWI0OTE4YTA4YjAgb2trb3RvLXNpemVvZgorNjM1OTcgMGZlY2QzODY3OTNlNjIwYThkMTFiNTE5OWQwNjhjYmY1MDA1NzFkNSBsZWdhY3ktdHJ1bmsKKzYzNTk4IDMzOWUxNzE4MzE1Y2Q4NjM0ZDc4YjViYzVmYzE5YWQ2NTc3NDI3MDQgbGVnYWN5LXRydW5rCis2MzU5OSAzNzY3YTVhYTk1NjAyNWI4ZjllYjBjMGViMDM3MjE4ZDgyZDEzNjM5IGxlZ2FjeS10cnVuaworNjM2MDAgY2IxYzg5YTQ0ZWRiNjUzNDQyYmNlOTNhMTlkMzY2NTk4MjEwMDQzYyBsZWdhY3ktdHJ1bmsKKzYzNjAxIDcxZmRiY2Q3YmFhOWE2YTc3NTMyYTRlY2NmYmY2ODkzNWMxMDBhZDIgbGVnYWN5LXRydW5rCis2MzYwMiAyNjBiNjJhYWZjYjQ5N2JkOTgwZGMzYzk1MmNiZDlkMjYyM2MxM2EyIHB5M2sKKzYzNjAzIDlhY2IzMTRiOTA3Mjc4ZjA0NjFiYTBlMGNhZTQ1YzUzNDM4NjgyNmUgbGVnYWN5LXRydW5rCis2MzYwNCA3M2IyNDEyN2Y3YjYzZGY5NzcyODM5NDkyZGE1ODJhMjI1MTQ3MzNmIGxlZ2FjeS10cnVuaworNjM2MDUgY2FmM2FjZGZlNWU0MzhkNjBjNjgyNzUyNWRhNTkxNjNjMzJkOWYyNCBsZWdhY3ktdHJ1bmsKKzYzNjA2IGFmZTE0OGE0YWQyN2RmYzUxNmI5NWFmNmFjZDg4MzZjYzU5NmExOGQgbGVnYWN5LXRydW5rCis2MzYwNyBlNTM0ZWUwYTRjZDA0NDFhNzAxY2MzOTE1NjM1YjYwOTMxMDZkNDU1IGxlZ2FjeS10cnVuaworNjM2MDkgODA2NTliOWE0Y2Q3ZDNiNjMxZDE2NmYyODQ2YWZhMTMyMTc3NzcxMyBweTNrCis2MzYxMCAxNTQ2YzFmYjhmODI4MzQ2NmM4Yjk3NWNjMDI1ZjgxMTI0YTFhMzJmIHB5M2sKKzYzNjExIGQxMjU5ZmZiMTAzYzI4Y2U1NWI5MjEzZTdmZDIxMGI4OGM2ZjVlY2EgbGVnYWN5LXRydW5rCis2MzYxNCBkNTU5MWMxNmI5OTdiMWEwM2ZlMTJlMjI5MDY5MGViYzFmMzcyMjdhIGxlZ2FjeS10cnVuaworNjM2MTUgNjBkZjhmNjU4NTc1YWNiZDFmMDI0ODhkODU0NDFmZWRkOWQzNzViYiBva2tvdG8tc2l6ZW9mCis2MzYxNiA4OTU3MDhiMDU2YjdiZDQyMTBkZjZmZWIxNTQxMmM1YWI0NWFhMjllIG9ra290by1zaXplb2YKKzYzNjE3IDk2NzAyNjI1Nzk2MTFmMWY5YTY2YmQzZDNkNjc2NDBiMjk3MDI2MjggbGVnYWN5LXRydW5rCis2MzYxOCAwMDkxMTllYjRkMmQ4MDAxOWU2OGNkNTI1OGQ0MWI3ODA0YTRkNjFlIGxlZ2FjeS10cnVuaworNjM2MTkgZDY4OGYzZjdjOGRmZDJlMGUzYzFlNWI2NDMwMTljZjBlYmY5YTcyNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM2MjAgNzcwZTRlMTMyNzc1YWEwYzVkYWE1NzUxMzc5ZGM3YjI5YWIxYWY3ZiBweTNrCis2MzYyMSA0OTkwNmQ0MzJiNDdiYWIwM2U0MTJkZTg4Y2Y2NWEzZGViYmI1ZDc1IHB5M2sKKzYzNjIyIDU2MGM5NzM5OGI4ZTUzNGVmNmQyZDEyMGViNWM4MWQ3NjBmODAzYjEgcHkzaworNjM2MjQgMzhiMWEwMTdkYmY2MDA3MWNhZmRmYzA0ODUwNDRlYTQ0YmI1ZTBkZCBweTNrCis2MzYyNSA4MTNlMGY4YTc0MWQ1OWJkNWNhN2I2NTA1NzY1NWViOWRkNzQyNTE3IGxlZ2FjeS10cnVuaworNjM2MjYgMjZiMzU5ZTIzN2I1NGQ5YTZkYjgwNTMyZTY0ODM0NGUwODJhNDFmNyByZWxlYXNlMjUtbWFpbnQKKzYzNjMwIDQ2ZjM1MWVlOWQ1ZWQ0MTMwMzRmMmU5ZjM3NTM0ZmY0MWEyODFkY2QgbGVnYWN5LXRydW5rCis2MzYzMSA3ZmUzYTg2NDhjZTI0MmY1YjJkNmNiZjE3MDNiZWU4YzRlYjk0NjdiIHB5M2sKKzYzNjM0IDZlZGM4MGQ0MjAyMTE0N2M1MmFiZjdmOTI1N2JlNDIzMWIyYmIyNTIgbGVnYWN5LXRydW5rCis2MzYzNSA5MzgyNmIzNWZhY2NlNjZiZGZlMWFjZTRhMGI3OWQxY2VjMDI2ZWZmIHB5M2sKKzYzNjM2IDgyNzI1NDM4NDUzYmE5Y2U2N2E2NjdjZmQwNWYxYzQ4YTJiNWU5ZWUgcHkzaworNjM2MzggMzE2NjExZmIxMjY4MmY3MGI0ZDU3NjE3MDA0N2Q4YTk4ZGE2OTgwZCBsZWdhY3ktdHJ1bmsKKzYzNjM5IDUxMTliYzc3YmQ2ZGRlMzMyNTg0NmM5MzFlNzBkYjRiMjYwMDAwNTggcHkzaworNjM2NDAgNDBhMTYzMGVmMmNmODQ2MWExZDE2ZjRhNzk2Y2FiYmRlNzk0MmQyMiBweTNrCis2MzY0MSA3ZGY0YmE0ODQwNThmZGNmMTExOWEyNGEwYTAxN2U3NTQ1MjYxZTU5IHB5M2sKKzYzNjQyIDFjNTFhYmViOTI1ZmU2ODQ1YWMyYmI0YzEwNjg2NjE2NWIzMzBmOGYgcHkzaworNjM2NDQgYWUwMTg2OWY2MmJlOGJlZjVlNjYyYmQ4MjAyZWJlNDI5OWZlYTFkYiBsZWdhY3ktdHJ1bmsKKzYzNjQ1IGQ3YmYyNjY5ZmU2NjA4OGE0NGY4ZjIyZGI2YWY4Zjc4ZWZiZjIxZDcgcHkzaworNjM2NDYgMDhjZTE5MmYyNGIwNDIzNTJiMzljYjA2MDQxNzExNmM2ZGJiNDAyNCBweTNrCis2MzY0NyBmNzYyYTlhYjY5ZGQxOGJlOTQwMmYyODMwZGQzNWE3NWE5YzhlM2Y3IHB5M2sKKzYzNjQ4IGM5ZDcxN2I1YjdhMjQ2YzRhMjZjMzYwMzBmMDIzZTk0MDk5MDAwYzMgcHkzaworNjM2NDkgNjU5NTNhZTk4MTIyNzkzZGY4NzMxMjFiNTY2NTM4NGM2NTZhM2M5YSBsZWdhY3ktdHJ1bmsKKzYzNjUyIDhjMmY1YWFjYzFiYzk4M2MwYzc0MTQ4Njc0MTRkMDkyY2RkZmI4ZjUgcHkzaworNjM2NTUgNzBmOWE1ZGIyNzljMjBmMjNlMThmNTFjYjYwNDdjY2IxYjE0NWFjNSBsZWdhY3ktdHJ1bmsKKzYzNjU2IGYyOGNiYWIxMWFjZDc0Y2IwMTc0ZjgxYmI3OTZkMTkxNjEzMWQ3MWIgcHkzaworNjM2NTggZTI0MjAyNjFkNGEzMDBjNTU4MTFjYTZhZDcwNjU5ZmY0ZmI1NDVjOSBva2tvdG8tc2l6ZW9mCis2MzY1OSA1NDExYjZhMjI2ZTVhYjE5NTI4NzU3MGVhN2FhZDM5NTljMmQ0ZGZjIG9ra290by1zaXplb2YKKzYzNjYwIDBmZDU1M2FkNTNmNjQ2NDE0MTZmOTQ2NDZlYzBmNjY4MDRmNGE0MzEgbGVnYWN5LXRydW5rCis2MzY2MiBhZmJkZTM2MGRkMWE5NWRhZmZjNjQ4YzBkNmJlMWUzZTM5Mjc3Nzg0IHB5M2sKKzYzNjYzIDZkM2UxMzMwYTNhYTg0YWQ3NDY1MzNlYmEyNDMyZTM0ODg5OGJiZjUgcHkzaworNjM2NjUgZTcyNWZmMTgzNDJiMTNmY2FjMGFmODZmYjdiNzFhNzk4OTQ3MDcxMiBsZWdhY3ktdHJ1bmsKKzYzNjY3IDM0NmE5OWRmNTg4OWFiYTRkYzk0ZDViZTQzM2RjOWU4YjVhYzZiZGUgcHkzaworNjM2NjkgMGE0NTUwODE0MzIwN2RkODJhZDYyOTdkNmRjNmFkZDdlODA4ZmZjYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM2NzAgMGI5NzQyNThlMTViODMyZjVhNmIwOWYxNmNiOGI4ZjA3MDYyYWZhZCBsZWdhY3ktdHJ1bmsKKzYzNjcxIGI5ZWFiNzQ5YmE2NjAwNzVmYjMzNWI5OTIxZjFjYzNiOGRjZGFlYmYgcHkzaworNjM2NzIgMDRiZDM2OTBmYjFmZTVhMzgxNTY0ZjY1ZmZkMzE0Nzg2YThmZWM5YiBsZWdhY3ktdHJ1bmsKKzYzNjczIGFiYWZjY2ZlNzUwMWMyMzFjZDg2YmIzZTQ0YjQxMWNiNjYzMjI1NjUgbGVnYWN5LXRydW5rCis2MzY3NCAzMjY0YWFmN2NmMzAzZjA1YmE3MjJmZDIzY2QyMmUyYjE5ZjUxYjVlIHB5M2sKKzYzNjc1IDRmZTE5MmQ0ODk2MDMyZjM1NjA2MDA1Y2RkZjFhMTFjNTNjZDgzZDggbGVnYWN5LXRydW5rCis2MzY3NiA2NTNkMDRmMzA0Mjg3NzFkNmFkYTU0YmJhNjRkZDgyOWNjNTMwYWU2IHB5M2sKKzYzNjc3IGU5MjM5YWQ3YjhjMDcwMjdjZGFiOWRlNTAzOGI0ZmY2MDk4ODZmNzcgbGVnYWN5LXRydW5rCis2MzY3OCA0ZDk4ZWJhZWQyNzgzNmY3NzJhN2NjMjljN2IwNzZjNGVjMWE2Yzg3IGxlZ2FjeS10cnVuaworNjM2NzkgMTk0YmJmMDRiMDE1NDQyNWMxNTNlZDkzNzNiMjk0ZGU3NGU2OWRiZiBsZWdhY3ktdHJ1bmsKKzYzNjgwIDJjY2IzNGQ1MzdkYjY0ZTY1MGVjMWUwM2EzODU2NjI1ZTRiMjljYjQgcHkzaworNjM2ODEgOTZiMzQyNjNlNDQ4ZDRjYjM3ZjVmYWEyZWEyMjkzMTY0MjQ3ZDgwZiBweTNrCis2MzY4MiAyM2FiNTg2YzQyN2EzN2UyMWY2MWRlMjc2ZjAzMmEyZTJkODIwNTg2IHB5M2sKKzYzNjgzIDgxMWE4MDY1MTIzMmU4ZDA4NTRlZjgyNjI4YzY1NmYwYTcwNjJmNTQgcHkzaworNjM2ODQgOGNjM2FkOGJmN2M0ZTY3YWQzOTZlNzEwNzM4NWVmMWUyYWI3NzE0NyBweTNrCis2MzY4NSBlM2UwYzFhNjUyMDQ5ZmU5ZmVjNzVmZmE3NWQxNzAzZDVjMGNiMzZjIGxlZ2FjeS10cnVuaworNjM2ODYgNzA4YTU2MTI3OWNhYjQ2MTFjMDBkMWMzZjQ5NzQwYzMwN2M5ZDAzMCBsZWdhY3ktdHJ1bmsKKzYzNjg3IDlhMGQ0ZGMwN2M4OTU0Y2FiZTQ4NzkzZDYwM2IxOWM1Y2Y0ZTY1MzcgcHkzaworNjM2ODggMzRlNDFmNGU5NjJmMTRjMWRhNTVkNDk0YjUzNDYxNjA5NWIzNzVhZCBsZWdhY3ktdHJ1bmsKKzYzNjg5IDRhYjNlN2FjOGJmNGFhMzY2MDQyMDgxN2RjNjU1NDQyYWQ4NjY4MmYgcHkzaworNjM2OTAgMTdiOGY0NDVkMDQzMWVkMGZjOTE2ZDE4MDI2NWMwNzhkZjJiMGJiZiBsZWdhY3ktdHJ1bmsKKzYzNjkxIDY2MmQxNWFmNTJkZjY2NjU0ZWI1NDZlYWM4ZGJiOGJmYjdlYjViODMgbGVnYWN5LXRydW5rCis2MzY5MiBhOTQ2YmY3NjY2NTQ0MDg2NWQwMmY4ZDQxNGVkMjU3ZTQ3NjI3OThlIHB5M2sKKzYzNjkzIGNlOWNkY2ViYWVmMDI0N2JiOGJhYzhmNmExYTYwOGIxNWUyZjA4ZGQgcHkzaworNjM2OTQgYTZkNjE3NzA4NjY1YWY2N2RlYzkwYTY5MTUxMjcyODgxMmFlNjhiYyBweTNrCis2MzY5NiA3MDEwNGEzZTFkOWQzOTk5MzI0MmM3YWQ4YmI1ZDY3YjNjMDg3OTVkIGxlZ2FjeS10cnVuaworNjM2OTcgYmRhMTU4NTlmNjU4ZjIyMTBmYTU4Y2U5ZGI1OTcxNjEyYWM3MzQ0NyBweTNrCis2MzY5OCBjNTYwNGJlN2FjZGZlMGEzNzc5YjJhZmM1MDRmZDljOGU1ODcxNmU2IGxlZ2FjeS10cnVuaworNjM2OTkgYmE4MDE1ZTIzNDg3MjA1NDQzYzJiNTY0YjFiOGM2ZTUyNmU0M2RhNiBweTNrCis2MzcwMCBlMWZjYzM4ODFjYjY4NzViNGRmNzFjMTMxMGUxNjRjM2RmYWY1YTcxIHB5M2sKKzYzNzAyIGUwMTdlMWZkZTM2OTJlMjllYWIwMDlmNTg0YWQ0NmRhOTAwYjRhNWUgcHkzaworNjM3MDMgMzk3NWVjMmIwZGUyYWYyNDI1NzVhOTkzOTQwOWZjYTM4NmY2ZjY2NiBweTNrCis2MzcwNCBmY2Q0NTZhZTUxNWJhODgxODZkMjE2OWY3MjgwYmU2MWEyY2Q3ZTBmIGxlZ2FjeS10cnVuaworNjM3MDUgMDI3Yzg4N2U5ZGE5MjM2ODdmYTY3YTg0NzllNDY4NDI5MGJiMWZiMiBweTNrCis2MzcwNiBiYzRkZjUxYzAxZDUyNTUxNzFlZDYyZmU5NGNiNTQ4YzJlOGIxNjQ3IHB5M2sKKzYzNzA3IDdjNWI1ZjBlYjMwZDk1MGI4ZjBlNTEyZjliZTA1ZjNiNzdkMDYyOWIgcHkzaworNjM3MDggZGJkOWFkNTJiNGQwZTlmY2YxMDcxOWIyYjVjNGNmZDM3M2EzMzc5MiBweTNrCis2MzcwOSA3OWM3ZTg0OGVhMTdjYzkxYzUyNjVmYzVlZWJkNjNmZTAxNGQ2MGYwIHB5M2sKKzYzNzEwIDZiOTczZDkzNmIwNzk3MTYwY2MxNmI1ZTQ3MTU2OGY1NmVlOGFlYmYgcHkzaworNjM3MTIgYzJhMGE3MDg0NjJlYmEyN2ExYjM1MDMwZWQzZjU0NjBlZWI3ODg0NSBweTNrCis2MzcxMyAwNjE5M2UzZGY0MTZmNWIyNzJjOTg1ZGY1NTM1MDNjZWYxOWZlM2Y3IHB5M2sKKzYzNzE0IDhmZjBiOTI1ZWE2NDg4NTk5NTZkOTliNjFhZGZjYzY5NjRhOTBhOWUgbGVnYWN5LXRydW5rCis2MzcxNSAwNTI1Y2Q1YjI1ODI5MDA2OGY3ZmRjY2RiYmUzNGI3YmNhY2MyY2NmIHB5M2sKKzYzNzE3IDZmMWE2MzJjYjJlNTMyYjgzZjljYjViN2FmOTc4ZmQyY2UxMmI2YzYgcHkzaworNjM3MTggM2M3MGQ2OGJlYjMwOTU3YTk3NjljN2YwYTNmZWZlMGM4MDI5MThmZCBsZWdhY3ktdHJ1bmsKKzYzNzE5IGY2MWI2YzMxMDAxY2I1ZmM2MjBlNTBmYTAzMWIzMDI2MjMwN2VkMjEgbGVnYWN5LXRydW5rCis2MzcyMCA3ODllMGYxNWMzN2I2ZjYyN2FhNTg1OGNjYmZjMzlhMTVjYTUxNDQzIHB5M2sKKzYzNzIxIDJmOTMxOTE2OWZlYzljNjMwZDgzMzhmMTk0YjE1MmU2ZTZjZmM2OWUgbGVnYWN5LXRydW5rCis2MzcyMiA1OTdkOGZkNTY5M2U0Mzk2MTcwYTU1MmFkZDM2YzAwY2FhYjgyNTRhIHB5M2sKKzYzNzI0IDI3M2U4ZGUzNDYwM2RjYTI3ZGVjNDU1MjZjMjMyMmFmMjA1ZmMyYzggbGVnYWN5LXRydW5rCis2MzcyNSBjNGE0NThlY2QyZWQ3ZjAwMmUxZGMwYWRiYzIyMTljZWI2MjA3OTI0IGxlZ2FjeS10cnVuaworNjM3MjYgZjZjODhmMTcyYmJlYzY4YzgyNTY5OGM4YWY2ZjAxNTRhNWZlMzg5MyBsZWdhY3ktdHJ1bmsKKzYzNzI3IGM5MWIzN2RiYmEzZjE4YmRjMzYwNDc2MzI5ODAwNmY5ZmIzMzc1MzYgcHkzaworNjM3MjggYThjYzhlNmYwYzFhNjkwMGI0OWQ2MTVlY2MxNzFkNWY1NjRjMmIwZiBsZWdhY3ktdHJ1bmsKKzYzNzMxIDYxYTU2OTdhNzYyNjUxZmZlZWJkMWI2NDgwMmI3YzI0MDA3NjdlNmIgcHkzaworNjM3MzIgMTQ3NGYyNTEyOGM0NGVjYTgwM2EzZTk1MGJkZDI2MTc4N2I4MTFhNiBsZWdhY3ktdHJ1bmsKKzYzNzM0IGUxYTRiZjkxYjJhZWRjNDBlNGQwYmI1NDMwYTU2NmExYTRjNGRiZTAgbGVnYWN5LXRydW5rCis2MzczNSAyMzM3OTY5NWI0ZGIyODBjNDdkY2JlNTMxMjQ5ZGI2OTQ0YmM1MGUyIHB5M2sKKzYzNzM2IDM0M2FhYWE4MDJlODEwNDJlNWVjOWQ1NzEwYTY1ZWNmYThjOTkzYzQgbGVnYWN5LXRydW5rCis2MzczNyBkYzI3YjNiNDZmMGRmYzIwYzk1ZmE4NjYyNDEzMTYxNjJmZjhlMzdjIHB5M2sKKzYzNzM4IGU0MTA0NTk3YzJhM2VmNzYyZDk2MjFiYjU5OTI0ZDU3NWViZDRkOTAgbGVnYWN5LXRydW5rCis2MzczOSA1MWM2M2I3ZWMxYThiY2VhODQzYzk2NWE3ZDQzYTZiZmZiMTU1YTMyIHB5M2sKKzYzNzQyIDUwMmU3MmYyOGU5ZWM3ZDU1MjQwZTUxZGMzYTIxODU0ZTg5YWNiMzUgbGVnYWN5LXRydW5rCis2Mzc0MyBmOTRhY2FiNzhhYTk5ZDdiZTM1M2RmNDEwYmY2Mjg4NDIzYzY2NzJhIG9ra290by1zaXplb2YKKzYzNzQ0IDNlYWE3MjM2NzEzZmExNzY1ZmZlMzYyZmFjMGQ2MGQ5NWE0ZGFjMzIgbGVnYWN5LXRydW5rCis2Mzc0NSA0YTdmMzQ4MGY0NTRkYjc2N2RlMjQyNGY5MDRjN2IwZTczOThmOWRlIGxlZ2FjeS10cnVuaworNjM3NDYgNGQzZTk1MzczZDllMjQwZjE1ZDYzY2I2YjVhODM2YjRhNDY5ZmE1ZCBva2tvdG8tc2l6ZW9mCis2Mzc0NyA0MzRmMWQ1YWNmZTRjZTg1ZWMzZDhmYzNjMjdlMGRkNDBkNjNjMjQ4IG9ra290by1zaXplb2YKKzYzNzQ4IDg0OTQ2ZjQ1NTNmMTM5OWZmNWE3YmY1ODgwMzJjYTY1MjQ0ZTM1MzMgb2trb3RvLXNpemVvZgorNjM3NDkgNDkzYjMyYzdkMTIxMjI3N2NjZjkwZDEzNTdkMmVlYjBjNDFmN2Q4NyBva2tvdG8tc2l6ZW9mCis2Mzc1MyA0ZWUyOWZmZDI4NTY4NjVhNTRhMWU1NGYyZThhZjEzZWNkMDgxOTZkIHB5M2sKKzYzNzU0IDc3ZjhhZThmYzcwYjRhMDliNTViYzljMzU3NzhkMDA3MDBmOWJkYzYgbGVnYWN5LXRydW5rCis2Mzc1NSA2N2Y0Yjc3NjdhMGFiMTFhYWQzYTY2OTY5NjU0MTU3OTljMTMxYmI3IGxlZ2FjeS10cnVuaworNjM3NTYgYjk3ZGQ1ODg5MjQ2OTlmYjNiNWUyMWRiNTQ4YmNkOTM5MGY0ZjUxOSBweTNrCis2Mzc1NyA5M2ZlOTEzZmFlNTU0N2ExOWMyMTNmNjAyYzcyYmYzMzk3N2E0NzAyIGxlZ2FjeS10cnVuaworNjM3NTggMDkwNjViMDEwYzk1MDhhNzc5YzBjM2YxMGEwMWU4ZDNjYzFhM2YzYyBsZWdhY3ktdHJ1bmsKKzYzNzYwIDdhZTc5ZTk2ZmM0MmY4ZjNlZmEwOWE4MGRjODZhZDI1NWQ5NWFjZmUgbGVnYWN5LXRydW5rCis2Mzc2MSAxMjUyNDdlY2U1NjI1MmE2ODFmNWQyNWIxMmNiMzYzNWMwMzliN2JkIG9ra290by1zaXplb2YKKzYzNzYyIGExY2I1NDMwOWI0ZDRmNDM2MGE4ZGEyYjE1MDk0ZDA1OWRmOWVmZTggcHkzaworNjM3NjMgZGNkNmJmYjBkYjQzOWM5ZDE2N2E3YWE0MjQyZDZlYjVlMTgwZDA1MSBva2tvdG8tc2l6ZW9mCis2Mzc2NCAyM2I5OGY3ZWY0NTQ3Njc4N2IxMzIxMGRmYThlOGI4ZGVhMDJjODliIG9ra290by1zaXplb2YKKzYzNzY1IDc5ZjMxMjdmMWQ3MjcwZGViMDYxMDg0ZWQ3Y2Y4ZDI4OTVhN2FlNDUgb2trb3RvLXNpemVvZgorNjM3NjYgMDcyYmZiYjY1NDg0ODVlNDNhYjNmYjM4OWE4MGMwMzhlMDEzNDE0NiBva2tvdG8tc2l6ZW9mCis2Mzc2NyAxNTY3NDZhNjNhNWM4ZjMzMjdjOGJlY2M3OGZmMjUyNTM3ZTQzY2YzIGxlZ2FjeS10cnVuaworNjM3NjggNzY1MjkzNmZhZDM5ZjhiN2UwZjZiZWQzM2VlMDJlNDczZGZjNTNhMSBweTNrCis2Mzc3NSA1ZTIzYjBmY2M3OGVlNmE0M2RjN2UzMjdlZjNkYTM4ZTkxOGVhNmNhIGxlZ2FjeS10cnVuaworNjM3NzYgMjljOTUzNmMwNGFkNDg3NjllZDk3MzZiYTI3N2E0Mjc0YjYwNmJmYyBsZWdhY3ktdHJ1bmsKKzYzNzc3IGI2Y2JlYzQ5OTc1NjIyZDY5NzI3YmMzOWU0NTUxYTc3M2M1NWIzMzMgcHkzaworNjM3NzkgYjE0YzRiNWJhYjA4ZDM2ZmZiOTI1Mjk2MGZhZDMwZjBjZDQ1MTE0ZCBweTNrCis2Mzc4MSAwMDE1NDU2N2Q1OTM1YjI4NGNhYzI1NzMyYmU4OTg4ZTAzNzMyMTdhIGxlZ2FjeS10cnVuaworNjM3ODIgZWY1MWZjZGEzNDhiZjkyM2RkOTgyZWE3MmJiMjM2NjdjMDYwMTIyMyBsZWdhY3ktdHJ1bmsKKzYzNzgzIDYzYjQ3NDU1NjFjMzQzNmVmNWQ3MjAzYWJkZDM2ZjljNTlmZmM4NjMgb2trb3RvLXNpemVvZgorNjM3ODQgOWU2ZTZiODE3ZjMyMDJlMzBkYmNjODg0OTVhZmE2NjVmZTMxMDQ0YiBsZWdhY3ktdHJ1bmsKKzYzNzg1IGZiMmQ5YjBiNDQ3MDMyYTFmN2RhZjM4MWY1ZWZkOTI5OTc5ZTBkNGMgb2trb3RvLXNpemVvZgorNjM3ODcgZTgxZDAyZDA5Njk3NGYxMzA1ZTUyNDE0MjEzOTgyMDlkNzAxYTg2OSBsZWdhY3ktdHJ1bmsKKzYzNzg4IGUyYzVhZTMwY2ZmZWFjZDQ4YTBlZmQ1NjFkM2QyMTY3NTExZTA2NjcgbGVnYWN5LXRydW5rCis2Mzc5MSBjNTk1ZGEwNTVmZDA5MjIxMmZhYTZjZDU2MzgxMWU2Y2UzNWU2NzAyIGxlZ2FjeS10cnVuaworNjM3OTIgYzkwY2RkODM1OTYwNmU0MzcxN2JhMGQ5ODAxOGYwYjE4MzdkYjM5MyBsZWdhY3ktdHJ1bmsKKzYzNzkzIDM5ODY5ODAzYmZhZWVkZDA2MDQzY2U0NzM4NDk1NmY4MDM5NTA5MWEgcHkzaworNjM3OTUgYWVhM2M1NTQzZDQzZjJiOWQ1MWMzNzg1Njc4M2JkY2QyOWI0ZTk1MCBweTNrCis2Mzc5NiAzNjZhNDM1NTExZGQ1ZDRhYzQwNTk0MjJkMDI0OGVkNDk5YTA4ZDM1IHB5M2sKKzYzNzk4IDFkMjliZmEyNzM2ODFiOTQyYWQ4OGVjODEyZTVhMmY0NGNmNTg0MDUgcHkzaworNjM3OTkgOTIyZTVhMjRjYzgyZTllZmRhNDg4Njc4MzI5NjZmZTdlZTcwNTllYSBsZWdhY3ktdHJ1bmsKKzYzODAwIDIzOTFkYTZjNDJlZjA4YTE2YzcxY2Q2YTZiOGRjMTJjNjQzNjlkNDYgbGVnYWN5LXRydW5rCis2MzgwMSAyNjNmZDZmYmFjYWM1ODQ1ZTk0NjI0NDEzMTFkYjFjMDJiODNiYmI3IHB5M2sKKzYzODAyIDg4MmFhMTQ2NjVlNDdmMWZkODgwNzc4MmQwNjQ0OTE4YTUwMzk1NTIgbGVnYWN5LXRydW5rCis2MzgwMyAwMTlkM2IxMTBhNmVlZTlhNGEzZDY2NTY0OTQ1NTIzMWZhOWY2ZTJlIHB5M2sKKzYzODA0IGNmNWYyNzMxZmM1NjA3MThjMWYzOTFiYjNiOWYxYjIzYzg1YmMyMDMgcHkzaworNjM4MDUgMWUxZGY4OTIwOTVhNzE0MTU0MTA0NWE0NmE2NmU2MGI2NWRiOGFkOCBsZWdhY3ktdHJ1bmsKKzYzODA2IGVhMjczYzhlM2VhYTMwNTQ0MGVkZjFlMTBlZDM2MDRmZmI2YjBjNTcgbGVnYWN5LXRydW5rCis2MzgwNyAzMzg2NWJiNTgzOTYyZjI1MzA1NjlhN2E0M2JmNWRhNzM5N2JhMDA2IGxlZ2FjeS10cnVuaworNjM4MDggZDY2MzljZDk1NzVmZjIwYWVlYzI5ZDBjOGEwZGRlNzcwNjM1YTE4YiBsZWdhY3ktdHJ1bmsKKzYzODA5IDZjZTQ0MzVmMTVhZDRlOGVkY2Y5ZjI4NzY1Y2YyYTA4MDBkYzRhYzcgcHkzaworNjM4MTAgMGU5MTY5MGRhZTJmNjM5NmNhZjQyMThjZTI0MTdjYzVlOTQ0MmQxOSBweTNrCis2MzgxMSBlY2E4ODI3MzExOTRjZGFjNDE1MTNlNzYwOTQzOTljOWYwOGQ2YTM3IHB5M2sKKzYzODE0IDQ3ZWY5YTgwNmNlOTdiZTc2OWE0MzExNTQyNWU4NDg3YjEwNjk3NjYgbGVnYWN5LXRydW5rCis2MzgxNSAwZGEyN2ZkZjAxOTIwNTc0OGZjNjY4MDdjN2U2YjBlYjk1MjA4MDJiIHB5M2sKKzYzODE2IGM0MWMzOTU0NThlYjAyOGMxZjg0NDk3MmIwOGY4NDE0OWE4NzA5MjQgcHkzaworNjM4MTcgYmJhMjlmNDYyYmNjNjkwNDk3M2JkZWQxN2M4MGVjZjhkNGFkZGIzYyBsZWdhY3ktdHJ1bmsKKzYzODE4IDEwNWFkNjEzMjVhYzFjMjJhMGM1MDg4MTQyOTYzZGI5ODI4N2FmOWIgbGVnYWN5LXRydW5rCis2MzgxOSAyMTUxMGNjMGMyZTQyYjdiZjBiNTc3ZjBjMjhmM2Q1Y2NhZWZjYWY5IGxlZ2FjeS10cnVuaworNjM4MjMgMGIyN2NlM2M2YjIxYzljYWY3OGY3NDY1NGUxZDcxYjg1YTk1N2UwZCBsZWdhY3ktdHJ1bmsKKzYzODI0IDNkY2Q3MDAwNDY5NmZkZjg3MzMwNDExOTA1ZDhjMGIxYjBiNjkwZTIgbGVnYWN5LXRydW5rCis2MzgyNSBhMmU3MmVjZGJlMDJiZTg3ZTA4ODdmNDcwNzkzNGU5OGQ5M2JjMDc5IHB5M2sKKzYzODI2IGMwNGFhNGFhYmUxN2ViZDk1YzhjOGRlMzcxMjI2ZWZhNWIxOTE0MjkgcHkzaworNjM4MjcgMmU4NzY5ZDVhNzg2Yjk1NDRjMmZiOTQ4NmQyZDBiZDFlYTliNWYyMSBsZWdhY3ktdHJ1bmsKKzYzODI4IGZmNmNjOWQ0ZmZkMzVhZTUxYWMxZjk2YTAzZDQzYTZkZjFhNTYwMzIgbGVnYWN5LXRydW5rCis2MzgyOSAwM2FmZTY5ODVlNWRmNzgwMjA2YjE5MDU4OGM2NDQ0NmU0ZTIwOTBjIGxlZ2FjeS10cnVuaworNjM4MjkgODJhNDdkNzhkMjc4Yjk3NjM1YjUxM2ViYjg5YThhZjUxZmJlYTM0OCBweTNrCis2MzgzMCBhZjM2ODVmYTljYTkxNDgyNTY1MmE0ZTViZGZkNjhkYWI3NTc3ZDg1IGxlZ2FjeS10cnVuaworNjM4MzEgNTFhODY1MzEyOGUzYWQ1ZjM5ZDU2NjNlYWRkMTU2OWEyYmYzZDU5NCBsZWdhY3ktdHJ1bmsKKzYzODM3IGJlZTI3MWU3NmEzZTUzMTFiNzEyYWU4ZDE3ZDIyY2VkZmUzZTIyYTEgYmVuamFtaW5wLXRlc3RpbmcKKzYzODM4IDA3NWM2YmQyMGYwNzgwNGRiNmZmOWZlOGUzY2E0MmQ4NGY5NDg2M2YgcmVsZWFzZTI1LW1haW50Cis2MzgzOSAwMTU2YzMzNmU2YjNkNTFlYWJmNmJhNTUyNjYzZmNlNzU5ZGQ1NTQ3IGxlZ2FjeS10cnVuaworNjM4NDMgMWJkZjA3NDA5NDAzYjRiNTU3ODI4NzFlNmRhMWFhYWU2ZDM2MmI2MiBweTNrCis2Mzg0NCAyZjVlZGUwMGZhOWVlMTdhYWY0NGNhMTFkNGYxNTQyZjE4MWJkMzEyIHB5M2sKKzYzODQ1IGM0ZTJlZjA5YTJmMDRiMjk3NDE0YzhhNmNmMzQyMTZjZjYwMjM2Y2QgcHkzaworNjM4NDYgMTA2MmI3ZGVjOTViN2E2N2EwZWRjOTg5ZmIxZDk2NGVjMjYxYzZlMSBsZWdhY3ktdHJ1bmsKKzYzODQ3IGQyMzYyZjk5YTQwMzY4Yzg5N2I1MzM0MjZkMjAyYzliODg4MGMwZTAgcHkzaworNjM4NDggNjIyY2FiYmFmMmJjZTk5N2Y1OWJkY2FmMWFlMzJlZGI4ZGMwMTljMSBsZWdhY3ktdHJ1bmsKKzYzODQ5IDJhNjNhYjM1OTVhMTllMjkzMWQzYjRkOWI4MjE0NWRmYjBlYThmMzEgbGVnYWN5LXRydW5rCis2Mzg1MCBlY2YyZWQwOTU4ODE1NTdlNmIyOGE3OTRiMDllMDNkNTQzN2RmMTc5IHB5M2sKKzYzODUxIGIxMzA0NGQ1NTRhZmRiMzEyMDgxZGUxYzQ4OGEwYzllMzI0ODA4ZGIgcHkzaworNjM4NTMgODNhMTAwMDJmZWRiZGE4NDk0MTYwMzI5NDhkM2I1NWE2MDg3NTE1OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTQgNjUzMDI2NDE0Mzc2YzgzYTZjZDhlODM2OGQxMDU1NzkxMmUwNDUyNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTYgODhiZDA3YzBhODQ3ZDAzNDExNzRlMjVlOGU2ODQ2YTBiZjI0YTczNiBsZWdhY3ktdHJ1bmsKKzYzODU3IGJlYTNjMWY1MmUwNWI4ODc0ZWIwMjAxMTNiMzdkY2E5YTg3N2MyYjggdGxlZS1hc3Qtb3B0aW1pemUKKzYzODU4IGU4Nzk3ZTZlMDdhNzQwNWVjNTA1Mzg1ODY0MGYxY2ZlM2VkZDhlYjIgbGVnYWN5LXRydW5rCis2Mzg1OSBhNjVmMDk1YjI3ZjNjYzQwODU2YzUxNzZhNTQxNWJiZjkwYmJlNjEyIGxlZ2FjeS10cnVuaworNjM4NjAgMzcwMjcyOWEyNDcwNzNhMDUyODgwODViNTQ2OWQ5OTM0NTUzMGY0NCBsZWdhY3ktdHJ1bmsKKzYzODYxIGZjZjlkOTVlZjUwZDc4YjMzMWY0Yzg2M2ExNDEyMjNiZmRhZTdjMjIgbGVnYWN5LXRydW5rCis2Mzg2MiBjZmI1NDkxMDAxZDAyYWU0YjgxNWYzYTRhYmQzNzlmZjUyZWEzY2VlIHB5M2sKKzYzODYzIGU3ZjBmZDgzNThmNWFlZjc0MTc5ODNkYWIzMDVmZDFjYTljYmM0ZWIgbGVnYWN5LXRydW5rCis2Mzg2NCA0ZGVkZWY0YzBkZmQyOTA5MjU5MDUxMzJkNjY2YzBjYjUxNWQ0MTczIHB5M2sKKzYzODY1IGMwZmU1NGEwMjhlMzY1OTIwMTNhZmZjZTg0ZDVmZGViNTNkNWE1NTcgbGVnYWN5LXRydW5rCis2Mzg2NiAzMTQ3NmRiOTlhYzMxZmYyYTg0MmM4ZDA1YTk4OWZkZWRjNzZhZDQ3IHB5M2sKKzYzODY3IDA2ZDc4NTZjYTlmNDZhOGZlYjk0YTJjYTExOTcyYzIzODQ0YmQyMjMgcHkzaworNjM4NjkgODIzYmU0YTI3NWUyYjk5ZTEyZTE4MmNmYWFiMmQ5NDg5MjY2MWVkMyBweTNrCis2Mzg3MSBjMGQ2MTZmMGFkODYzOWQyYzYwOWY4ODhmN2M2ZmYwOWNiYzM1ZTBmIGxlZ2FjeS10cnVuaworNjM4NzIgMzFkMmZmODY5NmJkYzhlYzIwYzkzN2Y0MjJlMThlOGM5ZmZkMDY0YiBweTNrCis2Mzg3MyAwYmYwOGRlMzM5YTBkMjEwM2FmMjE0OWIwYTM0NjE3YzI4OTZhZmFjIGxlZ2FjeS10cnVuaworNjM4NzQgZjE1MDE3N2ZmMWZmNzk0ZDI5ZGQzY2M0NjQxMTAyZWE1ZDZkOTQ1YiBweTNrCis2Mzg3NiBlYmJmODk1MDU2ZWE4YWNmMTFlNTdjNzhjOTU2YTc0NTAwZDM2OTAxIHB5M2sKKzYzODc5IGI2ZGQ0OWVlMDM1YjVkM2Q2YThmOGMwNDBjODE0ZTBhYmQ1YzVmMWQgbGVnYWN5LXRydW5rCis2Mzg4MSA2NDA0NDQ2ZTVhYTM2YjIxMGI3OGZhYjQ5Zjg1ZjdjZTZiMjIyOTI0IHJlbGVhc2UyNS1tYWludAorNjM4ODIgN2VhYWFkMDliNmNkZDRiN2Q5ODZiZmI5ZWYyNThkNzY1YWVmNjkyMyBsZWdhY3ktdHJ1bmsKKzYzODgzIDdkNjYxMTA0NjQwNDliMTAyYTBlZTlmOTYzM2U0YmE4MDk0MjQ4MjYgcmVsZWFzZTI1LW1haW50Cis2Mzg4NyAxMDBlMzI1MDliNTc3NjUzNmNhNmRjYWJmYjIyNjRkMDQ0MjFjZjU3IGxlZ2FjeS10cnVuaworNjM4ODggMDU4MDUzMWMzNzU1NWFkZTgzMWVmNzEyNmE4NzRlMGFhNzAyMmJjOSBsZWdhY3ktdHJ1bmsKKzYzODg5IDViYzdkYTY1MDNiMDVlYjc3NmUxNjE0YTM5ZDYyYjk4ZDk2MWMxOWEgcHkzaworNjM4OTAgNzkzNzNlMDcwZDQ4NjAwOWVmYWQ5MmQxMTg1YzZjZTQ1YWE2OTFhZCBweTNrCis2Mzg5MSBiYjJjNGJkYzNjNjgzYjQ4ZmE5ZTk1YmQ4MjgzZmQ5NDA0OGMyNGJkIHB5M2sKKzYzODkyIDFmMmYxNTc3YWU3ODE5Y2RiMDRmNDExYjkzYWYyNmJmNThhYjVlNTggcHkzaworNjM4OTMgYjZiNTM0YjgyOGIzMzliYmQ2ZWY3YmEwMjI1ZmM4ZWJiOTExMmMwMyBweTNrCis2Mzg5NCA2NWE2MDYwOGFiNWE1OWIwMjg0OTNjZjc1ODg0ZTE5NWU0NWFiOWUwIHRsZWUtYXN0LW9wdGltaXplCis2Mzg5NSBmOWViYWNhY2UzNWQzY2I1N2M2OWVhZmM1ZTA0N2NlYTFiOWFkOTlmIHB5M2sKKzYzODk2IGUwY2EwMjE4ZmYzM2MwMjRiNTFjMjE0YjUwMTZlMmM5Yzk0MDI5NjAgcHkzaworNjM4OTcgNDQ0MDI0N2I4YTQ0ODFkZmU2ZTRmM2YwMDUxMDQ0OGYzZjFkMGU0OSBsZWdhY3ktdHJ1bmsKKzYzODk4IDc3MDg4ZDQxYzc5MDFmY2QwYTAxYjQ0MjU5NWE2ZjFkY2ExMTdmYTggbGVnYWN5LXRydW5rCis2Mzg5OSBlZDQ3MWE4MDA5YTYzMTkxZjRkY2E5YjM1N2Q4MWJkZDM0M2M4NjE5IGxlZ2FjeS10cnVuaworNjM5MTAgNDdmZjI0YmM2MTE2NWQyZjMyNjc4MTk0MzJiMTU5MDQ2OTE5OGI2YyBsZWdhY3ktdHJ1bmsKKzYzOTExIGMyM2U2ZDUzMDBhMGEyNGM0YTUxMTFhMjQ1NDg4OGFhNTEzMTJhODQgcHkzaworNjM5MTIgMzk5OTE5ZTYxZDIzOGMyMjIwYzNjZmY4ZjAwMzMxZTJjMTMwZDYzYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5MTMgZjczZTZmNmQ5YmE2OTdjYTkyN2UzZGNiMzQ5ZGI4ZmIyODgwYTczNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5MTQgNTM1M2I1NTBjOTY5MmNlODg3ZDI2MGFkYTlkMDA0NTVjOWNkNWJkYyBsZWdhY3ktdHJ1bmsKKzYzOTE1IGE3NmU0OWIyMTlhMmNhMmM3NTRlNTU0NzU5NjYyOTVlMWRlNjY2NDggcHkzaworNjM5MTYgODZlZDk3OWRlODk4N2ZiMGRjMzE4ZDJlMDk3ZWU0NjkxMDRjYTNjZSByZWxlYXNlMjUtbWFpbnQKKzYzOTE3IDMyNThiYmZjNDU2ZTY3NGMxYTQ4ODRhMDQwOGRjZDc5YTcwNTJmODEgcHkzaworNjM5MTggZTRhMTg2NDM3NDQwNDJiNjMxNTgzY2VlODg2YTE4MmY0Y2E3NzE4NSBweTNrCis2MzkyOSBlZjBjY2NkZThjMjQ1Y2I1NTZmNDIxZjMyMGY5YTY4Y2JiYmY0MmM3IGxlZ2FjeS10cnVuaworNjM5MzAgNTcyZDgxZWNmMDBkNjBlM2Q2ZmQ5ZTVkMjhmNGExZGZmOTAxNzRiMCBva2tvdG8tc2l6ZW9mCis2MzkzMSBmODIxMTY2MDBjMGYxODFiY2I1MzlmYjg1NjQ2OTQ2ZTg5MDM2ZDdiIG9ra290by1zaXplb2YKKzYzOTMyIDJhMWM2OTc4ZGM1NzYxMGUwNWY3NmI5ZjUxZjQ3MjVmNWQyYzE0MGQgbGVnYWN5LXRydW5rCis2MzkzMyAyMWJlYjBkNWUzMjk5NTI0YjFhNDlmMmQ5Njg3NTczYTk2YmVmOWEzIHB5M2sKKzYzOTM0IGQ1N2FhNzUyYTQwMTE4Mjc3ZjYwYTFkMzk2NTI3YTliMjE4ODJlMjAgcHkzaworNjM5MzUgZDBmNzgzYmE3NjY5YTMwYzExYmFlMWYxMzVhYTgwYWJiZWNlMzBkOCBweTNrCis2MzkzNiBhNjU2MTlhZDU5ZjI4NzM4YmM1ZmM2OTg3MTQwYTE0YTBhNzcxZWQ0IHB5M2sKKzYzOTM3IDhmY2M5ZWMxODgyNDYzYWJmZTE5YWM5MWJkZWJiYjk0MGRjODU1YjEgcHkzaworNjM5NDAgNThmNGI2MDc3M2ZlNjA3Y2JlYzhjZmI3NTViZTQ4NGM3NTMyYWQ0MSBweTNrCis2Mzk0MiA4YWQ0ZWJkYmQzNzNhYTczOTM0MjgyYzUyMDM5ZTQ2ZGIxMTA2MzUyIGxlZ2FjeS10cnVuaworNjM5NDMgMTBmYjJkZWMzNjY1YjRiNTg3MzM2MWM0ZWVjNTBjMjEwZjE1MWY1NCBsZWdhY3ktdHJ1bmsKKzYzOTQ1IGIwZDQ3OTliMGRiODQ0ZTdkNzFhNDhkNjU1M2U4ZTk0M2Y0NzA5ZGMgbGVnYWN5LXRydW5rCis2Mzk0NyA4NDgwZjU0ZmNkNmRmNGMzMjRhMmZkNGViMWViMDQyMjE5MWVkYmUxIHB5M2sKKzYzOTQ4IDcxYmVkMjA4ZmU1MDQyNDJkZjczOTgzNGE1ZmM3NDNiNzdkYTU2NjYgbGVnYWN5LXRydW5rCis2Mzk1MCBlOTVjMTViYjk5NTAyYjdjMTc4NGU4ZjZiMjViYmJmMGEyMzgwZGFmIHB5M2sKKzYzOTU1IGMzNGUzNDA1NzcxNGEwMTFhYjk3ODc3NjA3OGI3ZjZhMWZmNTg4NmYgbGVnYWN5LXRydW5rCis2Mzk1NiA0NTRjN2IwYjY4YTg3YmM5NzgxYjMxYTU5YTA3NGRjYTI4ZWU1ZTJhIHRsZWUtYXN0LW9wdGltaXplCis2Mzk1NyBmMDRiMDU5ZTZjOTgyMTE1NWZkYzY3NTg5Mzg0NDQ4YTllYTU4ZjJiIHRsZWUtYXN0LW9wdGltaXplCis2Mzk2MSA3MzUyNTQzY2JhMDNjNDMxZWE3ZDE2NTJkYjBiYjAyNTJlMzAzZTBmIGxlZ2FjeS10cnVuaworNjM5NjIgYmJjZTE4ZDAwZDg3NTI1YWNhZjdiNzQyM2ExMDU4ZGE4MDAyMjAyMiBsZWdhY3ktdHJ1bmsKKzYzOTYzIDFkMGE4Y2FjMTVlZjA0ZTc1NmM2ZTdmYjI0OGQzMzNkOTIzODYwOWMgbGVnYWN5LXRydW5rCis2Mzk2NCA4ZTBiYzFmYzA5NWU1MGZjNDY3MmY5NDY3NmUyMmEyODllMDg1MGM0IHB5M2sKKzYzOTY1IGFkMTNjYjllOTRmMWI3NGY5ZGEwNDQ3ZmJjNmZmZjdlODk0Nzk2ZmMgbGVnYWN5LXRydW5rCis2Mzk2NiBmZDZmMzA2YzA0ZTAwYWYyYTgzYzRhMTI4MmI3YWQxOWQ4NTNmZmM5IHB5M2sKKzYzOTY3IDJhNDk2ZjFlYjlmMTY0Zjg1OGMyNmJkYzU3NzNjYjVkZGI0ODUyNDMgbGVnYWN5LXRydW5rCis2Mzk2OCAwZDdjY2I1MDAwN2NlMmMyMGY4MzdhNGRhYjkwMjI3NjcyNTZjMDdmIHB5M2sKKzYzOTcwIGI1NTMwOWVmNTRjNzczODdmZTNkZjdmOWZjNTJmZDViNjAxNmNhYTggbGVnYWN5LXRydW5rCis2Mzk3MSA5NDVkYTE3MjZjZjFhMDhkZjJhZTRlZjg0MTZkZWJmZjkzOTJjY2IzIGxlZ2FjeS10cnVuaworNjM5NzIgOWUyNzFjYjI1ZTU5Zjg5ZjI5NmZkNzEyMmNjN2I0MTM5Y2RhYTJhMiBsZWdhY3ktdHJ1bmsKKzYzOTczIGY3NDUzYjBiMzM5ZTA1ZTY3MGI1N2EzZTE0NzY5YTYxMDVlOTZhMDMgcHkzaworNjM5NzUgYjM4MmJlYjdiZTM2ZjI1MjZlYTRmNzI0ZTQwOGZkN2ViMDZhMzRkOSBsZWdhY3ktdHJ1bmsKKzYzOTc2IDc4ODBhNDI3NzE1ODJiY2U1Zjc1MTFlNjZmNDg1NmNjYWZjZTY0MzAgbGVnYWN5LXRydW5rCis2Mzk3NyA0ZjVlNmFhZjVhNmE4MGE2NTM5MDk1NWViZTRkYmI4OWYxMTgyNmRiIGxlZ2FjeS10cnVuaworNjM5NzggN2ExZDRlODIzM2Y4OTAzMTI4Mzg0YzU3MTI3NDY1OTRkN2Q5NjZjNSBweTNrCis2Mzk3OSAzMjU1ZjFmMTYwYWRlZGMxMDQxZTllYmFlNGRmNDM1MDQ4NDk2MjJkIHB5M2sKKzYzOTgwIDEzMGNlODZkNjFiNjc5MmU4MmExMGUzMmZhNDdkZGZlODZhYjI0YzYgcHkzaworNjM5ODEgZWJiZjAxMTU1MGNkNmE5NDRmOTAzYzg3YTkyYzBlMzY5MmNjZTE3YiBweTNrCis2Mzk4MiBhZjY4MGZkM2ZmZGM3NjM0ODgxY2ExZWMxMzQ4OTg1NTMwZTczYTJlIGxlZ2FjeS10cnVuaworNjM5ODMgOWVhMTA0ZjFlNWNkMjYzYzU2MTBiZDI5YzI3Yzg0OTljZjNmNWNjNyBweTNrCis2Mzk4NSBjYWE5MGNmNmJlOWEzZDU3ZDQ5ZjlmNzQxNWQxYWRhOWNkYmRkNTdhIHB5M2sKKzYzOTg2IDIyODRmYTg5YWIwOGQ1NTc3MTBmNDcxNTA4NWY4MTI1NTA3MmY1OTAgcHkzaworNjM5ODggMjIxMGY0MmU3Yzg5OGIzZGEyMzAwZTRjYjk2NjA1YTg1MDk0ZDg2ZCBsZWdhY3ktdHJ1bmsKKzYzOTg5IDI0OTU0ZWI4MGI5YjYxN2IzNDI1YjYyM2JlNTU1MmNhMGEyMjk0NzAgbGVnYWN5LXRydW5rCis2Mzk5MSBmMDg4NTA4ZjZkOTlkYWVmMmVjMjcxYmEwN2M3Y2U0MmFiMzA4YzZhIGxlZ2FjeS10cnVuaworNjM5OTQgYTAxOTNiMDhmMGViOGY3NTZmYmFlNzdkNmMxZDg5NzdhNzUyZTQxMyBweTNrCis2Mzk5NyBjOWE1ZjJlYjcyMGNjNTViNTQ5NGEyZDBiYjkyZDAwY2RjOTc4NzAwIGxlZ2FjeS10cnVuaworNjM5OTggYzg5NDM0Y2I5MTRkOGNjOTc0MTAwNDdlY2UwYTkyZmZmMzllZTk1ZSBsZWdhY3ktdHJ1bmsKKzY0MDAyIDNhZWJhYzdmMjcyNTJlNDQzNzcwZWRkNzM0ZjVmMzhhMzAxZmRlMDMgbGVnYWN5LXRydW5rCis2NDAwMyBiZjE0M2JlYjA4ZThlNjIxYTUyZDFhZGM5YWI5YmRjODg4OTU0NjhiIGxlZ2FjeS10cnVuaworNjQwMTIgOWZkYTA5MGMwNDVmNmUzMTQ0YTIzZDMzYTFjYWNiYTNjZThkMmRjNiBsZWdhY3ktdHJ1bmsKKzY0MDE0IGViZjZmNjM5ZTExNzg1ZGI0NWZhYjBjZjlkNzllYjU3MjJlMzNiZWQgbGVnYWN5LXRydW5rCis2NDAxNSA5YmVjZTU3Y2RjZTMxYjgwOTEyZGNmNjRlNTk2ZGU3MmM4YWU5YTlkIGxlZ2FjeS10cnVuaworNjQwMTYgYjMyZDdiODMyOThhOThlNDBiMzE3NzJmZDBiMTQ3NTRlZjM2NjU5OCBsZWdhY3ktdHJ1bmsKKzY0MDE4IDcyMDFjMDE5M2FkZWQ4M2JkZmM3Y2Y2ODNkNjI1ODNlNTVmM2JjMzIgbGVnYWN5LXRydW5rCis2NDAxOSA0MGYyZDVhNGZhZGNjMzNiZTIwOTAyMmIwODFiNDBhMDhiMjI5N2RhIGxlZ2FjeS10cnVuaworNjQwMjAgNjc3NTY0YTI3MDdhYWM3MWJiNDIxYWRiZjIwZTk5MjE3NDczZDA2ZiBweTNrCis2NDAyMSA1ZjY1YzgzM2RjODcwNmEyZDVkZGFlYWVlNmRhYmUzNTY5OGVlYTAxIGxlZ2FjeS10cnVuaworNjQwMjIgNGY3MGE5ZGUyODY1MTk2MDdlMmNjMTVmMGY0NGZiMmIzYzBlZGFmOCBsZWdhY3ktdHJ1bmsKKzY0MDIzIDdkMzYxM2RjM2YxY2NkZTUwY2ZhNjZlYjgzODEzNGRkOTA4NGVmNDggcHkzaworNjQwMjggNzhkM2QzNTk1NTVlYTViYWY1NzMxYzk5ZDg5MWYwY2JlOTZiYzE5ZiBsZWdhY3ktdHJ1bmsKKzY0MDMxIGYzZGY1MWI2MGRjMjYyM2I1NTY1NmJjY2RmNjFlOWQ4Zjg3NWRmYzUgbGVnYWN5LXRydW5rCis2NDAzMiAyMmNmY2ViMzMzOGU2OGFmODQ5MjEyZDE4OTg3MTdiMzk2ZDAxN2I2IHB5M2sKKzY0MDMzIGE3YjE2MjIyNzRiMzc1MmRmMGQ2YmFkNGI2YzA5MTljMTBkZDY5ZjQgcHkzaworNjQwMzQgNWQyNzQyZTM2ODg2ZjAxZGUwMzJhNWUzNTI1MzU0NmZhNWZjZjMwYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwMzUgMWZmZTZhYjg0YTFiOGVkYzI0ODkzOWZjNmQxMWRjYjhmZjZlM2M0MyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwMzYgMWMwMzA5MGIyYTBhMmZiZTYxNGM4ZTM0MmE2OGRkYWY1OWQ4OWYwOSBsZWdhY3ktdHJ1bmsKKzY0MDM3IDI0ZGYzNDM0Y2NmN2JjMjg0NWVlN2QyYzZjZTMyNTNkZTExNTlhY2EgbGVnYWN5LXRydW5rCis2NDAzOCBjOGUyOTU5ZThiMGYxOTJhNGIzMjE4YmZmOWE2MzFiNmI3ZDg0YmE2IHRsZWUtYXN0LW9wdGltaXplCis2NDA0MCAzMWFlZTY3MDE5YTJhZDRiNThjMDliMjgzMDY0MzZiZGI1MzMzMWJlIGxlZ2FjeS10cnVuaworNjQwNDEgMDI2NTEzYmUzOGRhYTc3YmQwYzg4MjRmOTk5N2E1OTE4ZDIxNzNjYSBweTNrCis2NDA0NCBkNTY0NTBkYjYwYTIzZjM0MzRkNmJkMDIwNzRlMWJmMzViYzcwNjRhIGxlZ2FjeS10cnVuaworNjQwNDUgNTMyNTNmMzYwMTRlMDAxZjFjZjEzY2FjMTllYWI3ZGE1YmMwMmUyMiBsZWdhY3ktdHJ1bmsKKzY0MDQ2IDk0ZTM2MzBkYWNhNzMwZmM4NWY0OGY1NzE0MzY5ZWM0ZGQyN2RiZDggcHkzaworNjQwNDcgMjQ2YTgwMjYzN2FkZjdlZDhjNjBiMzA3OWFhZWZjNjc5MmI5N2Y0YiBsZWdhY3ktdHJ1bmsKKzY0MDQ4IDUyMjk0YWY0YjY2M2NhZGE4ZTFmZDk4ODc5ZWRjNDkxOTk1NDZjNzQgbGVnYWN5LXRydW5rCis2NDA0OSA3YWNiN2U3YTVmMjgwOTA1MDRkOTYwMGIyYWVkZWViNjBmNGI1ODk1IHB5M2sKKzY0MDUwIDY0MjhjNGYxYWUwOTdhNDI1YzFiY2U0ZWZjMzJlZTkzMmQzMDcwMGUgbGVnYWN5LXRydW5rCis2NDA1MSBkNGNkNzIyM2FmM2JmMjljM2NhN2NkNWM3NjlhNzMxOWQ0MWYxZWZhIGxlZ2FjeS10cnVuaworNjQwNTIgNzcxZjdhODA0ODc0ZmQ3ZGEwYjNmY2VmODk1YzJmMDI1MzJhYjEzZiBsZWdhY3ktdHJ1bmsKKzY0MDUzIDAyMDU5MjY4YzgyNWZhMzYwZjEyMzVhMjE4NjY5OTM5OGFkMTA3Y2MgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDU0IDZjZmEyOTdjNjU1NTBjOWMyZjQyMjYzMDU4M2MyY2Q3YzlkOTU4NzMgbGVnYWN5LXRydW5rCis2NDA1NSAxMDU3N2UyNWY3OGY2YzJhMDVhMzIzNGMyNjNiN2ZhYWQ3ODQ5YzUyIGxlZ2FjeS10cnVuaworNjQwNTYgMmQ1ZjFkOTU2ZWY2YmNmNDJjYjdlYTU3NTBhZGY5N2Q5MTg3YjYwZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNTcgZGY5YjMzN2JhMzExMjQ4OWQyNWYzZmFkOTIyYjdiNDA1ZGFiMWJlZSBsZWdhY3ktdHJ1bmsKKzY0MDU4IDM5MzlmZjg5ODM0Y2Y2MGMzZjJlNTAzMjhkNmUwMzcwODA0NmFmYmIgbGVnYWN5LXRydW5rCis2NDA1OSAzMzQ5MmMyNDFkYWI1Y2E4MTJjOTBmZjRiY2U2YzVjN2Q1ZDVjN2EzIHB5M2sKKzY0MDYwIDEzOWVjZGJmNGYxOTZhMmU3M2JlNjBlM2E4ZDc5YzJiM2FjNjU2ZGUgcHkzaworNjQwNjEgYzFhZWI2Yzk0YWYxMGZiN2E4MTE5MjQ4NWM0MGQ4YmIwMWIzMjg3OSBweTNrCis2NDA2MiA1M2M2MGM3Y2NjZDk4MzRiYTkxYzc0Y2I0ODI2NDliY2Q0NDRlYmRhIGxlZ2FjeS10cnVuaworNjQwNjMgNDkyZjhlMTMwNWNmNjJlMDYxMmRjZDUzMjU5YjZjNTU4OTgxZDJiMCBsZWdhY3ktdHJ1bmsKKzY0MDY0IGVkNTcyZDI2MGZhNzE3MmIzMTY0OTE3YjAxM2U2OTY4MGQ2Mjc1YTAgbGVnYWN5LXRydW5rCis2NDA2NSA4OTU4N2VhMThlZDdlMTg3NGYxMWJhMzMyOWNlZWI2NTdiYjIzNWI0IGxlZ2FjeS10cnVuaworNjQwNjYgMjk2YWIxMDM4YjdmNzg4MDJlYjk3NDExOWQ4YzUyODY2Y2I3NDdhMSBsZWdhY3ktdHJ1bmsKKzY0MDY3IGY0OTg5NTE2YjRkNmEyODY3MTRmMGQ2ZDJmY2MwOGVjYTQ1MzI3NDUgbGVnYWN5LXRydW5rCis2NDA2OCBkYzlmNGQ2Y2QzZjE3MjY4M2VlMTkxYzI4OTM3NGNjNGM1NWJkMDkwIGxlZ2FjeS10cnVuaworNjQwNjkgY2Q1ZDI1ZGQ2MTMxMTJmN2JjOTVjMmRhYWNkMmU0MDgwZDk2YzZkMCBsZWdhY3ktdHJ1bmsKKzY0MDcwIDgxM2I4N2IxNmRjNTA5MDJmMzc4YjhkMTdjNmJkNWNlNGM1NjljYmIgbGVnYWN5LXRydW5rCis2NDA3MSBjMDA1NzZlMjAyZGFkY2ZkZjEzYTQ0OWRkMzM5NDI3ZTY5NWFhNjM3IGxlZ2FjeS10cnVuaworNjQwNzIgNzUyMTJiNDA4ZDdiYWJhMmMyYzJmMWRkYzQ1NWU5YzRhMWVhZDJmYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNzMgZDVjYzNjNWNjMTg4ZWMzMjllNTEzMGMzYTI0YjViMzQ5YjFkYzMzZSBweTNrCis2NDA3NCBkZmMzOGU1YWYxMmQyNjUyMDVmNmJmY2VkOWFjNWRhMWJkMDJiZGJmIHRsZWUtYXN0LW9wdGltaXplCis2NDA3NSA0MDg0YTg0ZTRkM2I3NDAwM2FkOGJlOTYzNjgyNTY4MTAyZGFmYWIxIHB5M2sKKzY0MDc2IGVlNzNhNmIyN2MzYWE0YTZiZjM1ZTFhOWJmYjBlODBhYzQzMWUzM2EgcHkzaworNjQwNzcgMDM2N2E5Mzc4OGRiYWExMmZjZmNjOWI4MTkzYzFkZWQxODY3ZWQ5OSBweTNrCis2NDA3OCA5MzBkOTMwOGIzMmFhNTY1YzhmY2NmMTk2NTBmYjQzYmYzMzVhOTc5IHRsZWUtYXN0LW9wdGltaXplCis2NDA3OSAwOWViOGQ2MjYyNmEwMjYzNDk5ZWNjMzZjN2YxZTEzYzYyYWE4YWQzIHB5M2sKKzY0MDgwIGJiZTIwNzdhNDAxYmM0OWIzNjgyMzFiODIwNjY0ZTM5YzdjMzIxNzcgbGVnYWN5LXRydW5rCis2NDA4MSA3ZDgyNGZkMTMxYWQ5OTMzOWJhZWU1OTczM2YyODIxZTY4ZTZkNjY4IHB5M2sKKzY0MDgyIDI2YTcyODNmN2YxNzljNGYxNDdiNTczZGMzNDI0N2YxYjI4OGZjNzcgcHkzaworNjQwODMgOTg4MjdhMjFlMzUyOWViNDU3NmJiODI2MTRhYzcxOGRkMmNmN2IwOCBweTNrCis2NDA4NCA5MWViMjQyMDRlMDhhNmMwZWNlOTFiZjFhYjhmNGNiMGE1YjMxN2EwIHB5M2sKKzY0MDg1IDI5MjViNTY4YWFjY2E2MDhmZjk3OTdmNmMzNjNkOWQ0OThmMWYyZmMgcHkzaworNjQwODYgYWNkYTQzMjUyNzEwMDE3YmE3OGYxNTUyNzc0YzExZjlmMmM4M2ViMiBsZWdhY3ktdHJ1bmsKKzY0MDg3IDJlYWUzMWEzZWY4OTMwMGFiYjEyY2RiMGE2ODVlMDg4OTNkZmJjYmIgcHkzaworNjQwODggYmQ1ODRmMTIxYzRiNTAyMjQ1MDJmYzhlNjNkOTU0YzAyMDk2MmUwNCBweTNrCis2NDA4OSBmZmM2YTJlZjc2ZThhZDcyNGMxNTQ0NmZkNzQxMjg5MDgyMzhkMjM3IGxlZ2FjeS10cnVuaworNjQwOTAgNmRkZTM5MWJlOTdkODhiN2MxYTNjZDNlZTU4MjUzMTgxMWRhOTUyYiBsZWdhY3ktdHJ1bmsKKzY0MDkxIGY1MjliZjJkZjQzNjhjYTg4ZmMyY2M5MmFhNjg5NzA3MmQ3YjcyYTUgcHkzaworNjQwOTIgYWZkM2I4ZWVlMmZiOTg4M2ExY2VmYTc5OTEzYzFhNDZkZjY0YzA3NSBweTNrCis2NDA5MyBlN2E5ZWFiMzYzYWRhYTU3MmI3NTExNzE3OTcwOWUxZTc3ZTdhNjMxIGxlZ2FjeS10cnVuaworNjQwOTQgODI0OGNjZmViNTM0MjliZDYyMjliZmQ2N2U5NzE2MTg4ZjIwMjc4ZCBweTNrCis2NDA5NSBlYzgyN2Y2ZTRjYzZiNjY4ZTgwOTRjNzQ5NGU0M2NkMDlhYmE2MWVmIGxlZ2FjeS10cnVuaworNjQwOTYgMGNhMjQxOGM3NzAyNTdmNWRjNzAwOGNkOTc2ODE4YzIwZmRmOTJmNSBweTNrCis2NDA5NyAyNzE4NDVmMzIzYmU0MzMyZmQ3MWY3MWFiODIxYzNlNDNiNjA4ZTYxIGxlZ2FjeS10cnVuaworNjQwOTggMDEzYmU2MzIwYjgyODZlNDg4YjAzMWQzYzk5ZjJiYjY5MWY4ZjY3MCBsZWdhY3ktdHJ1bmsKKzY0MTAwIDFlYWM4ZmYwMWQ3YjA2MDdlZGNkMjNkMDRlMzZlNTcwN2RlMzAzY2IgbGVnYWN5LXRydW5rCis2NDEwMSA3ZDcwYjU5ZWVhZjJkZDkwZDQ2ZGZjYmI5YWQyZWQyMzk0YTQwNWYwIGxlZ2FjeS10cnVuaworNjQxMDIgZGEzMDdiZWVlYmI5MjAyMDRiNGM3MDM0ODYxNWY0NmI4Yjg2OGYwYyBsZWdhY3ktdHJ1bmsKKzY0MTAzIDJhN2I2ZTk5Y2M1NGNlZWI0OGNlOWM3Y2YzNzU0NmFkYjkxM2ZlYWQgcHkzaworNjQxMDQgNDUxMWVjZDI1NjM0M2M2YjI0MDI4MmMzY2I4NTAzYmQyYWRiZjljZSBsZWdhY3ktdHJ1bmsKKzY0MTA1IGFjZGRiMDBiMWRlNWYwNDUxM2RkYmY2ZjBmZDE1NmRkYTIzZDBiMzkgbGVnYWN5LXRydW5rCis2NDEwNiBlODFkZWNjYjE3YzZiNjY3MmY2NzA5ZDhiYmEzMmU4NjAwZDg1NTUwIHB5M2sKKzY0MTA3IDk0ZjY0ZjExZmRkMDA5OGU0YWQ1YTNkNmY3YTAwNmYyZTVkYjAwYjkgcHkzaworNjQxMDggMjUxMTQzMTUxOWEyMjFiYzE4NjRkODBiMTg0MTlhMTIwYmNkZmM5ZiBweTNrCis2NDEwOSA4OGE0MmRiMzc3N2MyM2I5NDdjZWZiY2ExMjM0ZTgyNmRjY2VhODAxIHB5M2sKKzY0MTEwIGI4MmUwNTQ1ZDExMTU0YTllYzIwODE1MTEyNjE5MmI0YWI2ZWQ2MjcgcHkzaworNjQxMTEgYjgzM2E0MDA5OGMwMGY3OTk3NjY2ODZlNTU1YWUzMGUyNGJlYTU4YyBweTNrCis2NDExMiBiMGVmMDAxODdhN2VjMTY3YjgxNTE4YTBiMGFlM2U5NmNhN2Y2ZWNkIHB5M2sKKzY0MTEzIDI1NDNjNGM3OTU0MzNhNjMxNGQwMjE5ZTJjNGZmYmZlMDZhYWQ1M2YgbGVnYWN5LXRydW5rCis2NDExNCAxYzk2NGVkMzVlZjlmYjI3OWI2Y2MyZGNhMzlhZTBlZWY3Y2MxMjU1IGxlZ2FjeS10cnVuaworNjQxMTUgOGZlNDdiMmM4YmZlMzdhNDA3ZGNkMzJmYzJmMmY3OGMzZjA2NzY4OCBsZWdhY3ktdHJ1bmsKKzY0MTE2IGNiODQ5NGNlMTMzN2M4M2ZiNDM2NThkYTA4MTAxZmZhMmFlNGRmODMgbGVnYWN5LXRydW5rCis2NDExNyAwZjU1NjRmZDA0MGE5NGEzZWU5OTgxZTBjMTg0ZDBhMTFhMjM0Zjc1IGxlZ2FjeS10cnVuaworNjQxMTggMjQ1ZGNhMjY3MTJmNzYzMTIyNjI1YjM5NDIxMGViY2JmOTY5NDQ4MyBsZWdhY3ktdHJ1bmsKKzY0MTE5IDUxN2UxNDE3ZjdlMmNkOWU5OWEwZTgzNjEwMjg5MGQ5ZDQ5OTgyZTggbGVnYWN5LXRydW5rCis2NDEyMCBjZWY5ZjI3YTRjYzMzYTFmZjg1Zjg3MjFlMjhlNTQ4NDA4MDM4ZTQ1IGxlZ2FjeS10cnVuaworNjQxMjEgMjEyYTFmZWU2YmY5M2Y4Yjc0ZjgxZGQzNTY3YmY5NjRlNjI3ZWEyMCBweTNrCis2NDEyMiA1YzZjZGZjZDZlYWU0OWVmYTVjN2ExNTJiZjgyMDVmMGZhYTdmYzUzIHB5M2sKKzY0MTIzIDU3YzlhYmFiNDgzMmM4YjYyNGU3Y2JjYzhmY2ZlNzY2NzkyYzRkM2EgbGVnYWN5LXRydW5rCis2NDEyNCA0ZGQxMDAzNzA4OGMyODJkMTc2YjQ4MTY2ZDhkODg4YjdjMTdiODI2IHB5M2sKKzY0MTI1IGMzNDlmOWZiYzcwNDQ0YTdiMzg1YmJlNDliYzI3ZTA5ZGJjZTQ2YTEgbGVnYWN5LXRydW5rCis2NDEyNiBlMmViNzAyMzUzOTJmYjBkYmMxNDNlZjRjM2FlZTgyNGNkMTg1ZjFmIHB5M2sKKzY0MTI3IGI3NzJiZWUzYTEwZWYwYzA1MjJmMTU3MzAxYTgxY2QwYzgxZDliMDIgcHkzaworNjQxMjggOGRjNDMxMmEyZjc1Nzg1MGE0M2ZlNWZmOThkOTlkODc4NGE5ZGU3YiBsZWdhY3ktdHJ1bmsKKzY0MTI5IDkxMjFjNWNjNGYwNTQxMGZmZDIwYjgyNWU1ZjZiMjJiMzA4M2VlNzIgbGVnYWN5LXRydW5rCis2NDEzMCA3MmI0OTQ2YzQ0M2FlNDUyNjNkZmU5YTM1YmUxZjNjYmJlYWMwNzEyIGxlZ2FjeS10cnVuaworNjQxMzEgZTZiZWE3MmU5NDM3MDNlZWI4NjE1OWFjZTcxMDI3NGM4MmVjYTUzMSBsZWdhY3ktdHJ1bmsKKzY0MTMyIGU5MzU5OGJkN2Y0Mjg5Mjk2ZDAyNDMxNmJjMmM2ZTJjZDJjN2Q5ZjEgbGVnYWN5LXRydW5rCis2NDEzMyA2OTYzNDRlZjhiYzA0ODgxNWEwZGZkM2YyNDA2YmQwZWRjNGFlYjFhIGxlZ2FjeS10cnVuaworNjQxMzQgNmRkM2ViNDExNzBhNThkYWI1NzlkMTAyMTk2MzM2MmUzOGNiMDk3NyBweTNrCis2NDEzNSAyODIwMTA5YzhkNTUyOGY3ZDM3ZmNiYmM0NmVjYjM4MWNkNDE4YTZiIGxlZ2FjeS10cnVuaworNjQxMzYgY2M3MmY0MWZmMDE0MWE0N2FhNmNjOGNkMzc0YzE4ODBjYzE3MzRlZSBweTNrCis2NDEzNyAxNzdmMWFhZTNiYjQ0OTFjMDI2ZTNmZGNlN2Y0MWY4NjZiZDg1NTFjIHB5M2sKKzY0MTM4IGRhNDdlN2UxMzVhZTlmMzE2ODNhNGEyYjM2NTQwYmQ2N2ZiNjY0OTEgcHkzaworNjQxMzkgNmYzYzEzNTdhN2ZiZGU3ZmEyYzZjNzQ1MDk1MzM0NjMzZDk2NzllOSBsZWdhY3ktdHJ1bmsKKzY0MTQyIDY3MzUzMmFhMzc4YjFmOGZlYTYzMGVhYWQzYmExNWFkYmQ2YTIxOGQgbGVnYWN5LXRydW5rCis2NDE0MyA0NDVjZDZlYmEzMzFlOWQ1NmJlODBlZWU1MjBkYWU3MmYyZTZmMWI1IGxlZ2FjeS10cnVuaworNjQxNDQgMDQ1ZjgzYTFiODY0MWMyNGY2ZjQ0ZmY2OTI1YWI1ZjJhMTdkNjQzNSBweTNrCis2NDE0NSBkM2UyYThlN2JmNDU5MTIyZjIxM2QzMWQzZTM4YmYzYmE0N2FlOWExIHB5M2sKKzY0MTQ2IDMyZmVmNjMxZjc4OTM0YzA2YjlkYTEwY2E0ZmQ4NTUxOWE4ZDE4MzUgbGVnYWN5LXRydW5rCis2NDE0NyA3YTViYjU1M2RhMmIxNzJiYjNhY2UwZDRlMTUwYmY3MTZlYWYwNjc0IGxlZ2FjeS10cnVuaworNjQxNDggNGM2YjhiOTM5NzE4MTk3ZTI0ZDhmYmRlYmFlOTM5ODAyZjc1ZWE0OSBweTNrCis2NDE0OSA2YTdlYjBiNzAxOTgwOTlhODNjODBmZWJmMmQxODQ5MjlmYjlmMDBlIHB5M2sKKzY0MTUwIGI0NWE5NTM5MDYyMGFlNjcwNjM5ZGFkNzZkMzdmZThkNDUzY2JkMzMgbGVnYWN5LXRydW5rCis2NDE1MSBmNzUxZGFiNzEzMDI0ZDk0ZWFjYmQyZTZhNmIwYzU1MTYwMjI0ZmI4IHB5M2sKKzY0MTUyIGFmZGQ0OWM0NzU5OWQ4YmFmNTZmYjg1NzFhYzhhZDZjMzE1YjQ0ODMgcHkzaworNjQxNTMgOGIwZTJjOTZjZTgwZTA1Y2NlNzdlMzE5YjkyZDAyN2NmYjE5ZTM5NSBweTNrCis2NDE1NCAxYmZlYTk1NmQwZDcwOTlhZDliNTkzYWI5MTgxZDVlYzgyMDMwNGE3IHB5M2sKKzY0MTU1IGJmYjgyNzRlMzkzOWE5NDliNGMwYTM3OTk3N2MxYmY4YWY1OTc5ZDAgcHkzaworNjQxNTYgN2IzYTAyN2FiNzg1Yjg0NTBhMzFkZmVjYmFiZjIzZDQ1M2NkZWM0YSBweTNrCis2NDE1NyBkMTVkODY4MGEwMGE2MGNkMTlkYjhlNDVhMDM5ZTFlYzBmNDFiMTRhIHB5M2sKKzY0MTU4IGY1MjgxM2Y0MzE4OWQyM2MwODRhMDYzZDdlYjJhYjRjOWIyODZhYzcgcHkzaworNjQxNTkgYTAyMWZmMTE3MThiNmE5NWE4ZTFmMTc5NjlhYzU3NzM4M2ZmNzc2YiBweTNrCis2NDE2MCAzOGQxNzZlYmIyZmFiOTYzZmIzZWI1ZDZmZjEwMzUzMThlNTk5NTcwIHB5M2sKKzY0MTYxIDE4ZWFhMWQ1ZjM5NDI5ODE4ZTg0ZWU4ZmVlYzJmZTk4ZTFmMjYwYWEgcHkzaworNjQxNjIgNWFmMTUwODlhMTAwNjQ4YjY2ZjFkNjQxYjI2ZWFiOWJmYmNlMjUxYSBweTNrCis2NDE2MyA4MDk3NWU2MWY4YzhjZGU1YjUyOTlhYjlhNWRkZGNlMjVjNWQ1OGYxIHB5M2sKKzY0MTY0IGYzMWUzMmEyMDEzY2Y0MGE0OThiNzFhZjQyMzE3OTdmYmQ1ZTA3NjAgcHkzaworNjQxNjUgZjZhZWE4MDhiMzU3OTk5MzNkZTJmMDI1ZDU0ODljMzdhYWJhMTRkMyBsZWdhY3ktdHJ1bmsKKzY0MTY2IDUyNThkNGQ3ZGU3N2I0OTg2NWUwNTNkNzc1ZjE4NDhmYjA0NmMwMWIgcHkzaworNjQxNjcgNWY0YTUxZjYzOWYxZDVmZTczYTk4MDlkZDUxNjk2OTNhZGMwYTc2YiBweTNrCis2NDE2OCA5MWE4ODIwMGZkZjBkZDg5MzQ4Mzg4YjM1ZmRiNTIxZDFiMjQ5NjUyIHB5M2sKKzY0MTY5IDQ0MDE5ZTM3YWM5MjVlNTVlNDg5OWJmMjM1MTgyNDU3NGYxMzUzYjcgbGVnYWN5LXRydW5rCis2NDE3MSA2NTBiM2Y2ODQ1ZjkzMWU4YmMzMWU0ZGU4NzBiOGMxZGVhM2JmODk3IHB5M2sKKzY0MTc2IDVhOWNmZjdmZDA4ZjViNzkxN2Y3MDc2MGViZTBmMzc1ZDFiOTg3MTIgcHkzaworNjQxNzcgNTg3MGViZTI1ZGQwOTFhNWJkNThiYjUxYWQ3ZjM4ZWFlZDE0YmYxNiBweTNrCis2NDE3OSAzYTNlMjMxYjg2NmZiZTJhZmRmMzkwMWQwN2YxNjc4ZTA0MTVmMzVlIHB5M2sKKzY0MTgwIDBhZTUwYWE3ZDk3YzUyNzdlN2JmOGVmODVkOWJiYzhhNWFlYTlhNzggcHkzaworNjQxODQgYjM3NjliNmJhZTBmMGFkNzg3M2I2MDZmMWFjNjM0YmY1M2ZjNTNlYyBweTNrCis2NDE4NSAzZDY4NjllMmM5MmFjOTk2OWFjZThhNjhkMmQzOThjMjNkYjc1ZmRjIGxlZ2FjeS10cnVuaworNjQxODkgZTg2ZjM4NThkZjIwY2E5M2Q2ZWFjMDRiMDMzYzk1N2VhNzUxMWU5ZSBsZWdhY3ktdHJ1bmsKKzY0MTkwIDUwM2ZiM2M1ZTA4MTRjMTA1ZjJlNTk4ZTFhNzE2MTc0YzhhMTA1NjggcHkzaworNjQxOTEgMzAxN2U3OTRiYmI5YWMzNWQ0YThlZmNlNzhkMTkxMThmYWVkMmUxYyBsZWdhY3ktdHJ1bmsKKzY0MTk0IDQxNDE0OTNkZDNhMDU1NmFiYjIzNzBiZjBjY2I2ZjZjNTk5MDNmYjEgbGVnYWN5LXRydW5rCis2NDE5NSA0MTQ4NGQxODM5MGNmYzMwNjJkOTEyMzBhMGVkZDJkZDU4YzAwZDJkIGxlZ2FjeS10cnVuaworNjQxOTYgZjRmZjU4ZTM0NmVlNDkzZWJhNDJjZTM2MGQ4NDI1ODRhYjJkYTRhYyBsZWdhY3ktdHJ1bmsKKzY0MTk3IDk3Y2Q5NTM2N2Q2MGZmYjVkNzQxNjg4ZTgyNmMwNWU5ZDUwNjQ2NzkgbGVnYWN5LXRydW5rCis2NDIwMiBlMjRmMjZjM2NjZTQ2NDhlNzY3MTE4N2I4MzhiNzI4YzE4MWQxMTVmIGxlZ2FjeS10cnVuaworNjQyMDMgZDQwN2Y5NThjMTM3NGVjOWQ2NGY2NDExZmJhZGQyNGFhMzBkMWI2YSBweTNrCis2NDIwNCAxMDllOTc0OGM3ZjQzNTFiZjZmMmFkM2IzM2VjMmVkMTIyZDI1ZGZkIHB5M2sKKzY0MjA1IGZjZGY4MTRjOWIxMTI4YTIxOTNiOTQ3ZDRjZjJhYjZmYWQ1YzliY2IgcHkzaworNjQyMDYgNjU4NWZkMWQ5YWQ3MTIzZDZjYWE4Yzc0NGExZWNjYzRmYjZmMzQwNCBsZWdhY3ktdHJ1bmsKKzY0MjA3IDRiODY4MmVhMzdjMWY0MjQ4ZGQ2YzY5ZjlmZTU4ODU2ZTYxN2I4OGMgcHkzaworNjQyMDggZmQ3ZWIyNzQxMDEyMWM5NWQ4MDI4ZTU2N2FlZDE3OTI1ZDcyZmQyMSBweTNrCis2NDIwOSA1NzI2ZTkxNTdiZjAyZmI1ZDg3ZGQzN2YxYjQ2NDdiYzkzZmM2N2M3IHB5M2sKKzY0MjEwIDkyYjc5YjZkMWEzYjliYmQwZTE4YThhZmU1YWRhZDQ5OGIzZTAyNmEgcHkzaworNjQyMTIgZGI5OWY4NzUyNzEwNmNiNzNiZTZhN2QxNmI2ZjE0MTgzNmUyNjQ5NiBsZWdhY3ktdHJ1bmsKKzY0MjEzIDcxY2I3ZWE0ZjExMDM2NzUyNGZiM2IxYWI4ZGQzZTEzOGYwY2ZhODEgcHkzaworNjQyMTQgZmNmZTEwZjNkYzE0NmNmNTA1YWNlZmJmYmM5YmRmODZlN2M4M2Q3MSBsZWdhY3ktdHJ1bmsKKzY0MjE1IGIxZjRlYTRlYjU1NTYzOTkzNDFjZDZmZmVlNWQ0NmE0NzM5Mjg0MDQgcHkzaworNjQyMTYgOWM3OWVlNDlhMmQ5NTJiOGVhZmY5ODM2ZjAyY2Y5ZWYxZTcwODYxNSBweTNrCis2NDIxNyAzMTk4OGI0MDE1MzU3OTU0NmE1ZTIxM2U3NzdkOTU4YmQwOTMwMDY3IHB5M2sKKzY0MjE4IDEzMDcxYWRkOGY0OGFlNThjYTQ1YmJmMzhiNzcwZDM3NmZiYWMxNzAgcHkzaworNjQyMTkgZTMwYWYzMjY0YTBmNTczYWMxMDI4OWM3OGVjOTAyZTI2ZTE1ZjIxZiBsZWdhY3ktdHJ1bmsKKzY0MjIwIDVlYmNkZWIwY2IyNmM2N2E4NTFkODQzMTM1ZmRhMTZhNTY2MmJkMzggbGVnYWN5LXRydW5rCis2NDIyMSAxNDY0MzQ1YTE5NjgzYjc0YjVhZmRmYWEwMTBlMTFhNjA5ZjJhYWEzIGxlZ2FjeS10cnVuaworNjQyMjIgOGY2MWFlMDExMzBmODg5MzlkYTUzYzQwMjY2ZTI3MWU2ZTAzZjZjYSBweTNrCis2NDIyMyBkNWFhMjViZjkzNjAzZWI0ZTFhODI4MmZhNTU4NTY5ZjY3NzkxMWYyIGxlZ2FjeS10cnVuaworNjQyMjQgMzhkMDQ2N2Y1ZWM3NjlkNGQ0Y2NjODU4OWY3MzdlYmY0NDljNTQxYyBsZWdhY3ktdHJ1bmsKKzY0MjI1IDdhOGVlMDVjNjk3ZjUwZjEyMmRjMTBiMTE0NGY1YjI5M2RlNzI3ZDUgcHkzaworNjQyMjYgYTM1ZGE5NGUwNWZjNWE1OGVlYTdlNmMyODg1MDUzMTM0NGFiYWVlZSBsZWdhY3ktdHJ1bmsKKzY0MjI3IDhjNjA2OGYxNGVlOGNlZjEwMTNlMGUwY2JjMTRkNWJmYjE4ZTAyMDMgcHkzaworNjQyMjggYjVlMDI3NzVmZmZjYjNmYzRiOTlmNTE4MTgwOGY4YzdiMTM0Y2EyNiBweTNrCis2NDIyOSA2NDM0ZGQ3MDRkNjBlYTYwODAwMzgzYWViNjQwYjRlMTJmZTg4MGQ3IGxlZ2FjeS10cnVuaworNjQyMzAgMmRmYWEwNjgzYmU4YjY2M2QwNjAzODQ5NzJiMDJkMDNkYzE2ZjM4NyBsZWdhY3ktdHJ1bmsKKzY0MjMxIDRkYThiN2E4Y2YyZTk0YmJkYzU2NWU5MDI1OGZmYzAxYzlmMmRlZDIgcHkzaworNjQyMzIgYTEwNjg4YWRjZGQ2MjUzNmZiZDk1ZWMzYWNlOWQ5MWQ4ODM1NjBiOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyMzMgMTY4YzllOTY3NzJjNTc5NzJiZmE3OWJmYjg4Y2Q0NmUyYWFhY2UxMSBsZWdhY3ktdHJ1bmsKKzY0MjM0IDdmZDllOWNiZDcyMTUzYWQ4ZDVlZGY1ODU5YmViMjQ5ODRjN2EyZDMgcHkzaworNjQyMzUgYTMzM2M4NzcwZTMyMTMyNzM5ZGRiNTA0ZmM2MjU2YzhmN2Y1YzQwOSBsZWdhY3ktdHJ1bmsKKzY0MjM5IGZhYTdjYTUyNDI3MTg4NDIyZWQxMTdhZDczNjg3MWNiYzJkMGE3NzUgbGVnYWN5LXRydW5rCis2NDI0MCBjZGJmMTI5MTJkNGI4MmE0NDhlN2Y4NjdmNzM2MmJhNzAxMzgyMTZkIHB5M2sKKzY0MjQzIGY1MjU0OWZiNzRhMjY1MTkxMWE2ZDg5YjEyMTkxZGZlYmE4ZTgyYTUgbGVnYWN5LXRydW5rCis2NDI0NCBiOTA1Y2IyNzkzY2M5YWFmM2FkNWRiNDUzNDMzMjY0ZmQ4NDdiNzJlIGxlZ2FjeS10cnVuaworNjQyNDUgYmI4MTdhNWQ2OGI3YzMwODNkMjBmNzQ5NjRhNzBhYmY2ODlkNWJjOSBweTNrCis2NDI0NiBhNDUwZGEyNDAwODk2ZDI0MzNmMDNlZmNjYzU4ODRkMmI3NzczMDM2IGxlZ2FjeS10cnVuaworNjQyNDcgODcxNDdkYjgyZWIxZTMzMjI2M2YzYTk0ZWNmNWNjZjQ5MjQxNjU3ZCBweTNrCis2NDI0OCBhZjg4NzNkZjAzMjI1ZWMxMGZjZGE2NGY5ZDg4ZWNlYzFhMjYxZDMwIGxlZ2FjeS10cnVuaworNjQyNDkgOWI4ZmY3M2QwMTg4NTkzNzZjOTBmNjUyYjZmZDBiZmJjNjY3ZGIwZCBweTNrCis2NDI1MCBkMDExNjVmYWU5OGU5MDA0ZTNmODM1OWI5M2E2NjdkMTQ4YWM3ZTBhIGxlZ2FjeS10cnVuaworNjQyNTEgNDZlNTg0NjE1MGQ1ZTk1ZjhhMmExMjA0YmZlZGU5OGQ0MmJiMWZiZiBweTNrCis2NDI1MiA2ZDFkYzc2MWFiNGUwODg5ODlkNzU0NGI0ZTFkMmI3OWJkZjA0ZGU5IHB5M2sKKzY0MjUzIDEwNjk1NzgzNzlhMDEyY2QxYzlmOGMyNGE1MzlmMjBjOTQ3ZTNjODAgbGVnYWN5LXRydW5rCis2NDI1NCA0NDZkNWMyOTkwOGFhOTg1MmU4MzRiM2Y5ZjI5NGE2NjFlZThiZmVlIGxlZ2FjeS10cnVuaworNjQyNTUgMmYxNmNlYTIyNGY1Y2M0ODUyNDE5MjIzY2RmMGRiNjc0Y2NkZTFiNCBweTNrCis2NDI1NiBkZmY3NjJhZGY5ZDYxMTIyYTRlYjY2NWMwYTNhZWQ0YTYxZWIxNGQyIHB5M2sKKzY0MjU3IGYzNmYwOTJkYmU5Nzg0NmMyMjZlMTA5ODM2ZTI3YzViYzNlYzFjNWUgbGVnYWN5LXRydW5rCis2NDI1OCBhYmE1OGYyOGUxNjZiM2Y3YWU3Njk1Yjg1NWVlM2VmNDI4Nzc0YjE5IHB5M2sKKzY0MjU5IGYyZTJkNWI5NjRkZTM4YzFkNGEyOTkxMDg1N2VjOGYyNjVkMGM3M2UgcHkzaworNjQyNjAgMzdjZjVhMWU2MzllOTBlZmNjZGRjM2Y3YjFkNmFjYWUyOTVjNTQwYiBsZWdhY3ktdHJ1bmsKKzY0MjYxIDU3YWE4NzNkOTZmY2E4YjkyMDQwNzRmYzhmNDQzNTFjMmEzYTJiZWMgcHkzaworNjQyNjIgMDk1Yjg1ZDdhMDE0MWUzZjdlZmFkOTE1NmRiZmYyOTZiZDE4ODM0NCBsZWdhY3ktdHJ1bmsKKzY0MjYzIGU4ZGY5ZTQ4NzNiNDc4MDEzZmUyOTk3ZDU4NTllY2Q1ZGZkNjJkZTMgcHkzaworNjQyNjQgMTBhOGNlOGRiNmJmYjRmN2M2MTEwMmMzMWM1ZjAyYzdjYzI4ZjU1ZiBweTNrCis2NDI2NSA2ZjBmZTA2NmE4NGJiNTA0ZTRkYjQ3MWViZjVkZDVkOWZjNWVlYTJhIGxlZ2FjeS10cnVuaworNjQyNjYgNjFlNTI4NmQ5MzdjOGFjZWQ2OTFhYTFlMzZmMjMzNjA2NDBlOTgzYSBweTNrCis2NDI2NyBhYTI1MDMxODhiZjM0ZDg5MjhkNzExNTk1YWY0NDFiZDc2NWFmOTljIGxlZ2FjeS10cnVuaworNjQyNjggYzhmOGE1NzhjMDFiOThhZGRjYTIwZGM2ZjE2ZGQzOTUxMWI3ZDI2YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyNjkgZTljOTM1Y2Q3ODg4YWViZjkwZTA1NzllMjQ3ODEyMDZmYjYyYzAyYyBsZWdhY3ktdHJ1bmsKKzY0MjcwIDE4OTg2N2FhYmFmYTM3Nzg4M2ZmYjU4NTAzZjc4YjIzNTliZjJkNDEgbGVnYWN5LXRydW5rCis2NDI3MSBiNWJmMTY3OTBlM2M2OWQxZjU1ZDRhZGRhOThkNDkxZjEyYzAxMzczIGxlZ2FjeS10cnVuaworNjQyNzIgNTE2YzE5ZDg1OTFhOWI0NjAzNWQ4NTI1NWExMzJjMGIzZjk0MTAyMyBsZWdhY3ktdHJ1bmsKKzY0MjczIDk2YmZmN2UxMzdmYmQxMjMwZDNkNTg0NDZmMjgyNmQ3NzU4NTg3YzAgcHkzaworNjQyNzQgNGIxZTAxNTA1ZDRkMzdlOTlmMTdlYTJlYzQ0MTBjMGU2NzFmOGI0MiBweTNrCis2NDI3OCA5YWQ2OTEyN2U2YWE2NTRhMzZmNzdiZjQ4YmE2YTA1NGFmODg1NGE2IGxlZ2FjeS10cnVuaworNjQyODAgOTE1NWZmNzhmZDA2NGQ2ODBmNzMwOGYzZGZhYTc5MTE4Y2VhNjMwNSBsZWdhY3ktdHJ1bmsKKzY0MjgxIDdiYTc5MDFkYWQ3ZjhjNmI1YTBhMmNjNGY0MDY5M2MwNmFjZjI2YjUgcHkzaworNjQyODMgMjVmYTNkZDAyMWY1MmFiZTFhMjY5OTYwYzY5ZWQ0ZTM2YjhjMWY0ZiBweTNrCis2NDI4NCBiMzNlODMzNGY4MmY3OWUzMzc3YTA3ODc1NWE2N2U5NGUyNDczOWJlIHB5M2sKKzY0Mjg1IDVjYjUwZTdhOThhMjg1OGE5MTM3NDI4MDEyMTk4ZDUxOGQ5ZTgwYjUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjg2IDk5MWNhYWQ4MWEyZGE2ZjU1ZmMwMTY4MGU1OGU4NzcxMmU1NDdiZGIgbGVnYWN5LXRydW5rCis2NDI4NyA0ZTMwNGFkZWQ3YTg1MGI0YmY2NzFmZjg2Y2MwNzU2NmQwYWM4ODA0IHB5M2sKKzY0Mjg4IDYxM2RhZjdmOGU0ODZiNDcxMTY0MTEyYThiZTdiYjA2NTdiZjY1NWYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkxIDE0MzUwZTc1ZDAyYTRiZTJkYjJlZDFmZTdjZjQ4MTBhNDUzYWEyY2UgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkyIDM4NmE3Mjk4NGFmNWRjZjM1ZDBiMDQyMzBiOWJjOWIxZTBmMzY0MzQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkzIGY3N2Y4ZTc5OTcxNDk0ZmJmZmFkYWY0ZDc3Y2EwODY1ZWNkNDVjNTUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjk0IDI2ZTljODcxZDIzZmExMjgwZDEzM2VhOTkzZTZhM2YwOTIzZjI1OWIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjk2IDQwZDYwMWRlMjhkYzA4MTc2Njc1ZDEyMzY2ZjYxYTRhZmU2YjE3OTQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MzAwIDZmNmZlZDRmMDYyNmI0NzdhZWRiYmY4NGQ4MGMzZGNjNzczZmZlODQgcmVsZWFzZTI1LW1haW50Cis2NDMwMSBhNmQ3YmZjZDc0NTY5MWUwYTRkZGMwMWIyMmE5ZDA5NjNiNTI4MGZlIGxlZ2FjeS10cnVuaworNjQzMDIgZWUyODIzZTFmMjNiNjVmOGJkNDBmZTc4YmZjMDgwZGRiOWMyMTBiOCBweTNrCis2NDMwMyA0NjUwZWVmYjU4MzhlOWM5NjA0YjgxYmY2MDY3OTdiMTNiZmUxYzc3IGxlZ2FjeS10cnVuaworNjQzMDQgMzg0MzI4NjBiM2I0NjhjODY3NmVmMTRkMzU4NDAzNTlkMGE2OTFmZCByZWxlYXNlMjUtbWFpbnQKKzY0MzA5IGI4ZTljYzI4MDIyYzU0ZjQ3MTAwMjg0ZWJhNDA2MjBlMWU2NmIwMzcgbGVnYWN5LXRydW5rCis2NDMxMCA0ZWQxNjU5NDBiZGQwMTkyNTFkYjNhODhjNDcyNTI2MDAxNzExZTY3IHJlbGVhc2UyNS1tYWludAorNjQzMTEgNWM4NWQ1NWM0ZmIyYmRhNDk1ZWMzZDcwNGM4NTIxMTE4YmVmODUzZCBweTNrCis2NDMxMiA1NjZjNzEzN2FhOGRhZWM1NGI4YmVlMWZiMjgzOTU1MDk3ZDlmZDdmIHB5M2sKKzY0MzEzIDJlMTNmZmFiMTk5ZmZiYzJjODk2OGJmNTQ5MjBhNzZkYzM3NzRhZGQgbGVnYWN5LXRydW5rCis2NDMxNCA2MDliMDlhOWZlZWI0MWY3ZjIzMzUyZmZlOThkZTgxZDQyOGFlYWE2IHB5M2sKKzY0MzE2IDg0NTkwYTY0ZjNhMjI2NDMzNjg0MGJlOTBkMjlmYmRkNzg0OGY4NWIgcHkzaworNjQzMTcgZjhhODg5NGRhNzdhNGI3Mjc2NWI4ZmVjOThjMTc1M2M4ZDk0ZjkzNCBsZWdhY3ktdHJ1bmsKKzY0MzE4IGEyOWJmNjlmYjM0NDY0N2M2ZmYwMTczNmY1NzlmODJiMmYwMmE0MjcgcHkzaworNjQzMTkgMzAyYTZkNzYzMzc4NDA2NWUyMzFlZThkYTMwMGZmNzA2MTgyYTk1YyBweTNrCis2NDMyMCBjMDc0MThkZTNjZDMzMjhlYzk1MzU2NmZjYjExMDhkNzU5NWI1ODZhIGxlZ2FjeS10cnVuaworNjQzMjYgYjhjOWEzNTQzMzgxM2IyODM1ODlmNWFlNjk2ODBjYzBjYzQwOWU1ZSBsZWdhY3ktdHJ1bmsKKzY0MzI4IDk4ZDAxMmE4ZTQ0NWYwOGJjMjBkMThiZGQ4ODUzZjRiM2RjZTdiNTUgbGVnYWN5LXRydW5rCis2NDMzOCA4ZTg1YzQ2Y2Y2NzNjMjY3ZWFmZjJkMzEwOTA5NDVhNWVmMjc2Zjk1IGxlZ2FjeS10cnVuaworNjQzMzkgMjhhYmMyMDJjNzcxMDU5NzEyZTk3OWQyMjliZDg4NmQ5ZGE1Mzc3YyBsZWdhY3ktdHJ1bmsKKzY0MzQwIDBiMWMwMWVlYzc4ODUyOWZkZjI2MDM0ZTY4OTY0ODA3MDFkMDA0M2EgcHkzaworNjQzNDEgMDM2MzliMDljMzc2MDMyOGFhNmYxMWM0OTAxNGQ5MTlkZTg4MmNmMyBweTNrCis2NDM0MiA0MGE3NTkxM2YwNGE2NGI0ZmY4MWQwNGEyNmI2ZjdmM2Q1N2QxYTM5IGxlZ2FjeS10cnVuaworNjQzNDMgZjY0OTk2NzYwOTg0NzI4Mzk3ZTc2YjM4NWFiYTZmNDE4ZTE0YmNhMSBweTNrCis2NDM0NCA2ZjI3ZDUyZThkOTU2ZTMyMzc5NTY4NmFmYTE4OWZiMThiMTk4ZGQyIHB5M2sKKzY0MzQ1IDY4ZDg3YmMwNmZhMzcwZDI1YzAwZTk4ZTUwMGVkNWU5MmJiYzI1MTkgcHkzay11cmxsaWIKKzY0MzQ2IDg3MDAxMTg5OTk1YzFhZTA4YWQ2M2E2MTUwOTEzYmY0MjM5YmE0ZjggcHkzay11cmxsaWIKKzY0MzQ4IGY2NzI2ZjMyZWY3MDQ3N2JmM2EzOGRjYzg2MTdiY2E0NTQxOWY1YjcgcHkzaworNjQzNDkgY2EwNzQyMzJiODc5NzY3YTI4MWM3NmQ4YTIxZjNjMTRmMDc1MzA1MCBsZWdhY3ktdHJ1bmsKKzY0MzUxIGUzOWM4MTBhN2ViMjc3OTE4MDA1N2NhZmE5ZGQ5ODY4OTkyZThjYjAgcHkzaworNjQzNTIgZWY4ODNmYjRjMDc2ZGQ2Zjg3NWJjNTljOGE0ZWMyZWE3MTM0ZTgzYiBweTNrCis2NDM1MyA3MGQ3MmE3NWNjZjFlNmYwNmQ0MjAxZDczZDM5Zjg3Y2Y1ZjRhNzk5IHB5M2sKKzY0MzU0IDVmOTQzNTMxN2RlMTcwNTUyOTI5OWI0ZGIzMTg5NmU4OTdjN2Q3MDUgcHkzaworNjQzNTUgYTA1MjNjN2MxYzRmNzg0NWViNjU2M2U1ZWM1NDc5ZGQ4NTYwZGVlMCBweTNrCis2NDM1NiBhMTc0MTYxN2YwNmY0ZDU0Y2YxZjBjMzQ2YTVmMjNjMGRjM2JjODhhIGxlZ2FjeS10cnVuaworNjQzNTcgZGY1YmIwYTY1OTRiYjdiMTE3OTk2ZmYzNDU4NGY3NTBjNzhlMTY2ZCBweTNrCis2NDM1OCBhNGI4ZGJlMWI2MzM2ZjFiY2JhNzUwNzNjMzE0ZWM1NjEyNzE5MzQ4IGxlZ2FjeS10cnVuaworNjQzNTkgMTg3YTgxZGRhZjJiZGY4Y2VhMjVkOWExNmUxNjY0NWNiNmI1OTlkMCBweTNrCis2NDM2MCAwM2E5YTlkMzA4MWVkYWI2ODFmNTE4NzI2OTdhNTA1MjQ2ZTM2ZTAzIGxlZ2FjeS10cnVuaworNjQzNjEgYTQwOGEwNWQwZTI1MWI4YjYwOTY2N2Q2Yzk5NzU5MjJlN2Q3ODQxZSBsZWdhY3ktdHJ1bmsKKzY0MzYyIGQ1MmE3M2Q4ZDIwZjAzMmI5M2Q3NTg2ZjhlMGJkMGQwMjJlYzc5NWQgcHkzaworNjQzNjMgNjZjOGY3NmNhYzQ0NmQxYTQzZjdjNGQxNzgwOTMxMTMxZDRmMjQ2MyBweTNrLXVybGxpYgorNjQzNjQgYWM4NTRjZGUzMTM1ZTU3ZWMxZjRmYzk1YWU1ZDc0NDk1MGYzYzUzMSBweTNrCis2NDM2NSA1NjRjMjlhMGZhYjFhMDRmYTk0MmQyM2FjYzk0ZTRiMmJmZGZlZDg1IGxlZ2FjeS10cnVuaworNjQzNjYgMGIxNDlmYzQwMTg2ODZmYTI1NzRmMmFiZGVhNDViMGRjZWM2NDg5NCBweTNrLXVybGxpYgorNjQzNjcgMjhmNTY3YTQxM2Y0MTRiY2MwZTI0ZDBmOGU1OGJiY2Y3NDFmMGVlMyBweTNrLXVybGxpYgorNjQzNzAgYWIxMmUzYWQyZTY2NWYyZTJjNWFhZTliYjMxNjNkZjY1NDY0ZDFkYyBsZWdhY3ktdHJ1bmsKKzY0MzcxIGI0ZDgyMzQ4MzQyMWViNDA0YTcwNjVjOTI4MDkwNTQxZmYwZDQ0NDcgbGVnYWN5LXRydW5rCis2NDM3MiBhNjUwM2FlM2UxOWMxZmZjZjcxZTlkNWI5MjgzMjc1YmZhMTljMGIwIHB5M2sKKzY0Mzc1IDZiN2RkYzBmZGE5Mzc4Mjk1Zjc3ZjdiZTA4M2NkZGQ2MjFiNTkwMmMgbGVnYWN5LXRydW5rCis2NDM3NiA1NzAyZWRlNDIyN2E0MWJmZWNjMzI1MWJlNTZiZmRiZTY3YTRjNTEzIHB5M2sKKzY0Mzc3IDk1NDA1OTc5MTBiOTY5NWMxZmM2OWRmZjM3OTBkZDUwYzQwNTY4NGEgcHkzay11cmxsaWIKKzY0Mzc4IDRkYTc3MTU4OGJhMzEwMDY4OGQ1ZWE2MTY4MTc5NGMyNDJkNDgyYzEgbGVnYWN5LXRydW5rCis2NDM3OSAxNTg4ZTJmYTNlN2U3NGIyYmEyZjEyMzRiYzBiOTdjMTQwMzhkZTE2IHB5M2sKKzY0Mzg0IDZhZmRkNmZlNTUxMmRmNGRhMTUwNGMxM2IwMzI2YjE0M2JiMGMzNzkgcHkzay11cmxsaWIKKzY0Mzg1IDVhNDE2YTY0MTdkMzg5Y2NiZTI0Njg3ODU1YmY5N2JlZWNiM2QwNDEgcHkzaworNjQzODYgNzQ0ZjljODA5ZjMwM2Y0MDcxNWJiZjJkYWRiNmFlNjg1OTM0ZmFkYiBsZWdhY3ktdHJ1bmsKKzY0Mzg3IDAzMjI4MDhjMjBmZWU2ODU2MzA3ZDAzZjFjMjhjNWM4ZTFiMzBiZjUgbGVnYWN5LXRydW5rCis2NDM4OSA2OTA0MDA5MmI4ZjgzMTc2Yzk5M2U5MzI4MWQ5ZDBlN2U3MDIxOTE4IHB5M2sKKzY0MzkwIDJjMTA2ODMyOGI1YmE0NzZiMTcyODkxMzk5ODZmZjI2OWU4ZmE2NzQgcHkzaworNjQzOTEgMDdmOTQ3MjYwMTc4M2UxMmMyOGM4NzhhZjhjNDMwODRhNmRlNzM3NyBweTNrCis2NDM5MiBlYTE5NGM5YTZjMmY5ZGU0NDNhMTViZjI2OTIyMjk0ZGFlMzkwMGM3IGxlZ2FjeS10cnVuaworNjQzOTMgMmRkZDg2ZTM3MDBjMjBlZGNhZGIyODUyNmIzN2VlY2JlZGU5MzNlMSBweTNrCis2NDM5NCA1YmQ0M2ViOWU1MjBjMjc2Mjc5YzNmNzZhODEyODhhOTFlNWE1OWQwIHB5M2sKKzY0Mzk1IGEzMzVjNGQ2NDNiMWNmZTE0MTk3YTllZjE5NWM5YjI4MDRmNjA4ZmMgcHkzaworNjQzOTYgYjFlZDJiMDA1ZTNkYmVhZGRmNTQ2NGM1MDU1MjFjM2ZhNTk0MGMzMiBweTNrCis2NDM5NyAwNzMwMjI0ZWNmNWZlZTFiMDdjYTgzZGQ4YWIwMjY3YTE5MjU1MDlkIHB5M2sKKzY0Mzk4IDJmMmYzMmFmOGM0ZWU4ZjY1OThmNjMyZGM4MzcwMWEyMDcyNmQxMGEgbGVnYWN5LXRydW5rCis2NDM5OSAyNTgxZWUxZjI2ZjllNGI4ZGQzNjcyOWFkYmFjNzFmYjFiYTA2ZmI0IGxlZ2FjeS10cnVuaworNjQ0MDAgZWNmZjFhMWEwN2I1NTVmODVlODYxODc2ZjY2ZjJiNWQ1NGU5MzNlMSBsZWdhY3ktdHJ1bmsKKzY0NDA1IGIzNGJjNjM4YjhhN2M3OGIxOTBlM2Q5Zjg2YTU2OTM4MDcyMzEwY2MgcHkzaworNjQ0MDYgYmUwN2YzNzlkODdhZGYwZGQ2NGU2OGM2ZTY5ZjdkMDdjNWM5NmRmZSBsZWdhY3ktdHJ1bmsKKzY0NDA3IGE0YmU0YjE3NDc3MTFkZTE0ZTFiOWNhNTQ3ZWJkYjNjZDZiZTE4NGYgbGVnYWN5LXRydW5rCis2NDQwOCBlMTA3MDYyYWE5Y2Q3Nzg2ODdmN2FhMzk1YzgxZjViMzJhZTU4OWMzIGxlZ2FjeS10cnVuaworNjQ0MDkgOWFmMGQ2NWJjM2IyNzg0NjA2MDMzZTBmZjc1ZWUyYjU2MzY0Y2FlMiBsZWdhY3ktdHJ1bmsKKzY0NDExIDI3Yzc4Y2JmYTdjNjgxYjhhMzdiMjIzMTBkNTIxOGNlZDllMzU3YmQgcHkzaworNjQ0MTIgMGFlZWIyYjQ4MzQxYzc3Mjg0ZGQwZTJjNThlNTFlNDFhMWI5NzgzMyBsZWdhY3ktdHJ1bmsKKzY0NDEzIGRiNjJjNDQ4YTM0OWUyZjE1YzRjMmNjZWU4OTY5MWFmMjY3ODU5ZGEgbGVnYWN5LXRydW5rCis2NDQxNCBjYjg3MWY3MzZiZTAyNGE3NWY0YWU3OTM1YjhhNDhlNjRjNmM5MmU5IHB5M2sKKzY0NDE1IDJiZjQxMTJjZDY4MTVjNzAzZTM2NTUyNWU5YThhYjQzODk3Yzg5NjIgcHkzaworNjQ0MTYgYjQxOGRkMzlmNzk4YmVmODQ3MWZjMTljOGNkMDBkYzI3MTVmZGUzZSBsZWdhY3ktdHJ1bmsKKzY0NDE3IDU4ZjQzYWNlMjk1ZTVjMzk4MTk3YTMyZDNmMGQxYzc4OWQxMmM5YmMgbGVnYWN5LXRydW5rCis2NDQxOCA2YjRiMjkyYzNhMmRhOGRhYmQ3NjIxMWM3YTlkNjE0MWUxZDA3NGZlIHB5M2sKKzY0NDE5IDI1ZDZiMmQwZWU0MmVlOGE3ZjVhODViM2MwM2M1OTkzMTEyNDVkNmYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NDIwIDA3ZGNmMGVhNzg4MGY0MGY5MTE5NzM3NGZkOTUyZDI1NmJkNzU0ODEgbGVnYWN5LXRydW5rCis2NDQyMSBjMzkyNjNlOTRjMzMwNzRkNGI2ZmU1YWM0ZGVmNGUwNGI2MWRmMTBjIGxlZ2FjeS10cnVuaworNjQ0MjIgN2I5NmZhZTQwMGQ2MTg5ZTllMDY1MjUwNjVmYTFiNzU4OWVlZjVlZSBsZWdhY3ktdHJ1bmsKKzY0NDIzIDFiZmQ1ZTcxMmI5NGNhMTVlZGI5NDM2N2MwMmE0MzhmY2Q4MDg2MGMgcHkzaworNjQ0MjQgZWRjNzAxZDAwYjYyMjQxMjAyZDUyNWRlNzE1ODk5NTY2NjIyMWM3MSBsZWdhY3ktdHJ1bmsKKzY0NDI1IDcxN2U4YWVlNGE5ZDA3ZDdjZGE5ZjU4M2YzYTczODhjZWNmOWRjZDIgbGVnYWN5LXRydW5rCis2NDQyNiBkMWE0NjM1MGIwNDc2YzRmY2MzMzljMDQzMjA0ZDI5ODczMGY2MjRlIGxlZ2FjeS10cnVuaworNjQ0MjcgYmZkYTM5OGM5MTdlNWRhMjUwYTljNjA5Y2M2ODhmMmRjODk2YWZiOSBsZWdhY3ktdHJ1bmsKKzY0NDI4IGE3MTg2ZmVlNzU5NmI2NjNmNTM0NWM0YTRiMDk2NTZlMWU2OTdjNGQgbGVnYWN5LXRydW5rCis2NDQyOSA2MjllZWRjYmIyNjU4NTM1Mjg0NzliNDkwODI5YzFmYTA5Y2M5OGNmIGxlZ2FjeS10cnVuaworNjQ0MzEgZDhkYzZiMzdmZDc4OWVmNGY5Zjg5NTQ4MTljYmU3NWFkNjVmNjNhYyBsZWdhY3ktdHJ1bmsKKzY0NDMyIDVlYmVmZjgwNDI1YzU0OTliNGMzMmFjYjI5MmU2NWZjZWY5NzU5NmMgcHkzaworNjQ0MzMgNGUxY2FkYjc4NzFlZWNlMTQzOGE3ZTY2YWMwOTFhYzI3NmM2ZTE2NCBweTNrCis2NDQzNCBhMTA3YmMyZDhmMzQyN2Q5OTc2YjY5NGIwYzU1YjcwNjgzYzI1MWYzIGxlZ2FjeS10cnVuaworNjQ0MzUgYjMyMTAxYzE5YmY4NDg1NjMyMGNkZDM4MDEwZjM2YjczMTJlZmJhZSBsZWdhY3ktdHJ1bmsKKzY0NDM2IDRmZmE5YmJhN2M1ZjAwYjhjYWI3ZDQ4ZDFiZTlhMjVjYTkwZGI4NGIgbGVnYWN5LXRydW5rCis2NDQzNyAyNDUyMGU4MjQxMDcyZTc0MDE3OTFhNWQ2NTlmYjIyNmMwMDA0OGQwIGxlZ2FjeS10cnVuaworNjQ0MzggNDI2N2FkYWNkZDUyNzhhZDk3YWM1ODVmZjYxNGQxZTYzMDkyZjg3MyBsZWdhY3ktdHJ1bmsKKzY0NDM5IGEwNjdkYzA0MzhkNTMyYzU1MjM2ZjM0YTkwZWNmZTVkNTZmYTAwNDcgbGVnYWN5LXRydW5rCis2NDQ0MCA3NWI2YjI3MzdlYTcxOTM2OGI3ZjZhOGE2OGNlZmIzYTcyY2NmOGI3IGxlZ2FjeS10cnVuaworNjQ0NDEgYWM2ZWFiMjQ3M2M1YjZmMWUzMDIyZjQ0MmMzYWNjNzQ2NjU5OTM5MyBsZWdhY3ktdHJ1bmsKKzY0NDQyIDE2YjdjNTAwYjc1M2EzYzk2ZTYwNDhkMzM2M2U4OTQwMGI0ODZkMjUgbGVnYWN5LXRydW5rCis2NDQ0MyA5YzY3ZDNkY2U5MjVkOTRmZjU5NTdjMzM2MGYwNTc5NzA2OTUwY2Q0IGxlZ2FjeS10cnVuaworNjQ0NDQgYWVhZDBjNzgxY2JlZjYxMjZhMTFmOTUwZWQxMjI5MTljMGQ2ZmYzYyBweTNrCis2NDQ0NSA1NTZlNGY2ZWM5YTA4Y2FjZWFiNzhkNDY1ZWFlMTUzNjY2YTY3Y2M1IGxlZ2FjeS10cnVuaworNjQ0NDYgMDE2MTY2YjdiOTc2ZTMzZjBiYzY0MGE4YTQ3MmRjMzFmZDRhNjdkOCBsZWdhY3ktdHJ1bmsKKzY0NDQ3IDVlOGE3ZjlkOTUyMzkzMjFmODJlOTcyYmMxNmI2NmE1NDgyOGU4NTMgbGVnYWN5LXRydW5rCis2NDQ0OCA5NjgxNTI3MTk2M2Q1Y2FiMmFjM2MwY2I2NzUwOWRjMTE1MWY2MTUyIGxlZ2FjeS10cnVuaworNjQ0NDkgZTE3YjgxYTk1YWVkMmU4YTk4NTgyMzUwZjEzNDE1YTEyZmE0OGYyYiBweTNrCis2NDQ1MCA3MGUxYTM4Yzk4MDViNmE2YzE3YTQ5MmZjY2NlNGUyZjcyZWNmOTQ0IGxlZ2FjeS10cnVuaworNjQ0NTEgYzU3ZDFlOTU0ZDkzNDU3YzMxMzZkYWJmNWYxNmQ0YzI0ZjViMzgwOCBweTNrCis2NDQ1MiA5NmFkZjk2ZDg2MWE0NGQxYjI5ZTkxOWFmODBmZjA0MTk1YTM3M2M0IGxlZ2FjeS10cnVuaworNjQ0NTMgN2NkYmUwMWE0NTc2NGIyZTM4NDNiNTE4ODgzZjI2MjAwZTA0NmI3YSBsZWdhY3ktdHJ1bmsKKzY0NDU0IGFjMTU4Y2E2ODZjYjUxOWEzODAxMjJiOTI5YTRjYWZhM2UzOWFhZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NDU1IDhiNmMyODU2ZGJlNTEwMzdjMmZkNmVhMzVjMDQzY2FiOGYxMmM1MTUgbGVnYWN5LXRydW5rCis2NDQ1NiBlYjlmYWUyZmEzZjk2NjQyZWJiZjVhYzcxY2E1ZDcyNmI5MThiM2JhIGxlZ2FjeS10cnVuaworNjQ0NjEgNjVjMjM2NjNkMGJkNjk4MTMyZWM3OWYwMGI1MTRmMjM0NTExZTg4OCBsZWdhY3ktdHJ1bmsKKzY0NDYyIGRhNjg5M2UyMDA0ZjRjYTcwOTFkOTljNDNjY2Q3NGRkNjg1NGNkNTggbGVnYWN5LXRydW5rCis2NDQ2MyA2OGNmM2NiYjIxZDI1OGQ4ZTAyMjE2ZDRjY2UzYzdiOGQ2OWQ4ZTBkIHJlbGVhc2UyNS1tYWludAorNjQ0NjQgN2I1MWVhOGNjNTU4ZGJiMzRiNGM0MDI3MWFmZjJmMDJlMTVkYjk5ZCBsZWdhY3ktdHJ1bmsKKzY0NDY2IGIxMWIwOWMxZWZlZjJiZWIyMzU3ODNmM2Q2N2M0NTFlNDBlYTZkNjMgbGVnYWN5LXRydW5rCis2NDQ2OCA4OGJkOGVhYTUxNTJlZGM1Nzk3MjRjOWU1MzkwNjM1ZmM1YzMwNmEwIGxlZ2FjeS10cnVuaworNjQ0NzEgYTlhZDk5ZDBjNzIyNGJlMThhZGUyMzdlYTg0Y2IzNDczNDViOWNjYSBsZWdhY3ktdHJ1bmsKKzY0NDcyIGUwZjFlMWM1NjZkOWQ2NzU0MzJhMTZmNTUxODNjYzNjMTIxMTRhN2UgcHkzay11cmxsaWIKKzY0NDczIGY4NDY5MWY0ODljMzhjNjA4MzdhZDA1ZjEwMGE4Njk4YjRjNDRiZDYgcHkzay11cmxsaWIKKzY0NDc0IGRkOTA3ZDZhN2E4NWQxNjNjN2UxMjFjNWNlM2QwZmYzYzdmM2RjZDIgcHkzay11cmxsaWIKKzY0NDc1IGYwMDI3YmZkZjliYzQ0NTI1NmY0Nzk0ZTdhY2YyOTA5ZTc3NTM1ZGEgbGVnYWN5LXRydW5rCis2NDQ3NiAxZjY3MWM4NWRmMDQ3YzViNzUwMjZjMzQ2NDcyMjAxNTkyZDhkMmY2IHB5M2sKKzY0NDc3IDFkYmQ3YTUyMmEyMzY5ZjNiNTI5MDU2OWU2NjYxOGE4YjQ4ZDFkNTEgcHkzaworNjQ0NzggNmMwNGQxNDk5NGQwODgwMTNjNGI4MTZiYzhmZWM1NDdkYTVhNjFiZSBweTNrCis2NDQ3OSA5Njc2ODg0Nzk4ODMwZDgwMTY3NGFlZTVjOWM2Yjc0YzU2M2VlNWMxIHB5M2sKKzY0NDg5IDZlMDZkNGE4NmUzZDAzMjhkOGQyMDg0MDAzODY1YmE2MmFiYmZiN2QgbGVnYWN5LXRydW5rCis2NDQ5MCBiMDE1NjkzMTE0ZjY3OTdhYzRiMGYxYjFlMmUxZjMxYzYzM2M4YTk2IGxlZ2FjeS10cnVuaworNjQ0OTEgNzUyZTFhYmFmMTVhNTZiNWIzZmFlODQxZDcwYTk1MmJkY2I1MGQ5ZiBsZWdhY3ktdHJ1bmsKKzY0NDkyIDA5ODE3M2U4NDRkMTUyODUzYzUyOTYyN2FmOGZhNzM2YWQzZWI3ZWIgcHkzaworNjQ0OTUgNWQ1ZjcyODVmNWM1OWI0ZjUxNTY2NjI0YmU5NTc4YWNhNjcxYjBlZSBsZWdhY3ktdHJ1bmsKKzY0NDk2IGM4M2VlZjA3OGZkOWYwZWNhODhlZTU4NzNlOTA2NWMxNDU5ZTE2NjYgbGVnYWN5LXRydW5rCis2NDQ5NyBiMWJkY2JjOTdhMTRjMDk0YWIwNGU4MmIyMTY5ZjA4NmMyNmYxZjdlIHB5M2sKKzY0NDk4IDY4ZmQzYWI4NDg0ZWViN2QwYjVmMzYzMzcyNzhmZjZjZmViNGE4YjUgbGVnYWN5LXRydW5rCis2NDQ5OSAxMmJlNDRjNmE3MDJlOGIzYjdjYWFjOWY3N2YwYzQxMWQ4ZTgwNDkxIGxlZ2FjeS10cnVuaworNjQ1MDAgN2U3NDdkZTIzMWIzODI3MzdmNjMxOGYzYjIwNTBkM2Y1NjFmMGQ2MyBweTNrCis2NDUwMyAyMmZiZGRmMThkNDg4YTEwMDE4MzJlNzQ3NWE4YzU3ZTkyZDU1NWRiIHB5M2sKKzY0NTA2IDI3MGZmNmY0ZDk5ZjNmZDBkZjkyZmY3MjI3MDY5ZjI1ZTJiNTE0NGIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTA3IGQ4YWZhNDFjNjk2YWJiZGViMDNkMmRkY2M0NzcxZWM2YWNiMDkwN2YgcHkzaworNjQ1MDggM2I2ZmZjZmUyOTcxZTFmZDM5OWUwMmUxY2JmZmFiNmE0NmYxZWU3NyBsZWdhY3ktdHJ1bmsKKzY0NTA5IDk1NzRmZWQ5MzY4ODM2YTViZmY3NzkyZjJhN2Y5MzFlMjZmODBiN2MgcHkzaworNjQ1MTEgMGFmNmYwMzAwZWFmZjQ0M2Q2ODZiMmE1OGY3YmJmZTRiN2RlN2I4YyBsZWdhY3ktdHJ1bmsKKzY0NTE1IDc3ODhlOTg5M2I4NWJiOTFjNzczYzcxZDBhMzUzYTQ1ZDBlZDEyOWQgcHkzaworNjQ1MTYgM2FkYTQ2ZjIzMjFkYzI0NDY4MGI0NzJkYjBlMGIwYWIwMzgzYmYxYiBsZWdhY3ktdHJ1bmsKKzY0NTE3IDNjOGQzYjk4Y2ZkNzNjZDIyMzQ2YmFlZDdmN2Q1ZWExMmVhMTAwOGYgbGVnYWN5LXRydW5rCis2NDUxOCAzODBhYTJkMTYxZDM5Mjk3MjM4MDA4Y2U0ZGU4MWEwMWMwZmI5ZmQzIGxlZ2FjeS10cnVuaworNjQ1MTkgMGI1MmJkYzRjZDg5Mzk5OTFiOGE0YWFlOTc1MmE2MzBmMDE5MzEzNCBsZWdhY3ktdHJ1bmsKKzY0NTIwIDY0YWJiNjFlOWQ0ZjdmMDQ3M2Y3YjdmYTRjODgxMzYzMGZiNWMyZmMgbGVnYWN5LXRydW5rCis2NDUyMSA1N2M4MmNiMGZhZmZjZTliZmQyY2QxZDg5YmFmZTcxNjk0MzQyZjBiIHB5M2sKKzY0NTIyIDM3YTIxZDA5N2QzNGQzNTE0NWU2OGM2NWY5NjU3ZWMyMGM4MmI1ZjIgcHkzaworNjQ1MjMgZTVhNTFlZDllNjM0MjcwZTI0ZTMxMTNhMmIzYzMxNjRjZTYzNzhhYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MjQgZDFlODY0YTVjNjBjOGI0ZjJlMDc4ODgzZjM4N2NkN2UwNTQzNWMwNyBweTNrCis2NDUyNSBmZmJkNGUzMzNlMmY5YmQwZTNmMDg4MTViYWFmNjAxOTNhZGQ3NTE4IHRsZWUtYXN0LW9wdGltaXplCis2NDUyNiA3ZGUwMzg1NTA1MjNkYzJiMzg4ZjZkNDVkNTQyN2YzNzBkZWU0NjVkIGxlZ2FjeS10cnVuaworNjQ1MjcgYmRlMmFiOTQzNTkzYzNhOWFjMTgzN2U1YzRiOTBkZGYzMDJhZWNiNSBsZWdhY3ktdHJ1bmsKKzY0NTMyIGIyNjExNjQyNWIxMTQzNjAwNjUxZTdmNDgzNjUzM2JmZTRmYWY4MGUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTMzIDdlYjM3Mzc2NTdkMTJlZmM4MGMwMDJmM2FhOTZlYWJkMjY2ZDYzNTkgbGVnYWN5LXRydW5rCis2NDUzNSA4ODIxYjQwNWUwZTZjZjllODZhNDlhNTZhMDQ1N2ZmMzVkZGY0MjllIGxlZ2FjeS10cnVuaworNjQ1MzYgMDY0YjBiNzViYWQ1M2I1YmE3MzY3ZDFhOTJlNWVmNGQ2MTI3YjYzYSBweTNrCis2NDU0NCA4YzkyOWNlMGZiNDFjMDg2NTFlNWFiZDM1ZTg1N2Q4MjQ5MzA0YTVmIGxlZ2FjeS10cnVuaworNjQ1NDUgNzIzYzBmZjY5OGI3ZjU2ZjgzNWU0ZTUxZjEwNTRlNjkxMTdlYmYzNyBsZWdhY3ktdHJ1bmsKKzY0NTQ2IDdmYmMzNzRjOTU5ZDJkNzc5ZjVjZTY2NGYzNWVmNGZjMDgwNmY3ZTUgbGVnYWN5LXRydW5rCis2NDU0NyA1OGRjMzY3ZGMxZWEwMGJkM2NjODM1M2RjNGIyNjUyYjFjNDM5OTlkIGxlZ2FjeS10cnVuaworNjQ1NDggYzRiNzY2YWZhYzZmNjQ2ZTg3MWExMzE0ZDU0M2Y2NjFmZGFkMmEzZiBweTNrCis2NDU0OSBkYzQyZWZkNzI4ZWViODIyZDU2MzQyZTM2MzNiZThjN2M1MzI2MWFjIGxlZ2FjeS10cnVuaworNjQ1NTAgZWRkNDhiMDg0OTRkYTg5NmNiZmU1OGRkMzBiYWJjODRiNTM2NjEzMCBsZWdhY3ktdHJ1bmsKKzY0NTUxIGJmYWYxNDI5NTc5NDllMDQzYmQ4Y2ZlNmM3Y2RkOGU5ZmRmZmRjZjUgcHkzaworNjQ1NTIgNjA1YWI2ZjkyODM4OGFmNWYxZGZhYTkyMmM4OTVhNDlmZDA3OTE5MSBweTNrCis2NDU1MyBjNzEyYmNkMzIwM2I0Y2U5ODA0Y2FlZmEwMTc4YzhmNjdlMGIwYzgzIHB5M2sKKzY0NTU0IGM1NjA3MmVhYWNjMjYxOGExMzM5ZDhjYTI3ODAwZDkzMzE0Y2M4NDMgbGVnYWN5LXRydW5rCis2NDU1NSBhNjliZDNhYjlmOTk3Y2RiYWExOTYzNTdjYjVmMjcxMTZjNWQzMjQ2IGxlZ2FjeS10cnVuaworNjQ1NTYgNzI0MzQwMTNiMDMwZmRjOGQwNWEwZTI1ZmE4MmQ1MWNjMGVmMjU1YyBweTNrCis2NDU1NyA0M2Y2YmIwZWFjYjJmNDA4M2I5NjhiZmQ0YjdiNzE4NmMyOGFmYTI1IGxlZ2FjeS10cnVuaworNjQ1NTggNWI0Yzg3MDk5MDNkMDdhNTI1M2VlMTE0NjM0NjQ0YjM2ZmU0NjQ2MSBsZWdhY3ktdHJ1bmsKKzY0NTYxIDg4MzkyMDIxOTQyYTZkZmRjZWU4NmEzMTg2NGQ4NzZlYWEyNzc3ZjggbGVnYWN5LXRydW5rCis2NDU2MiBlZDVkYzEzYjg5OWJhMmQ2YjU0NWJmOGFhMTc5NGE4NWMxMjg3YmQzIHB5M2sKKzY0NTY1IDFjNGJkNTAyZGU2MjliMjkwZGM4NzFkMWZiMmIyMTI5NmE3NTliODUgbGVnYWN5LXRydW5rCis2NDU2NiA1MDg1OWFlNGFlYmJhNGJkNjJhMzY1YzhkOTk3NmZmMjEwOWYzMGNmIHB5M2sKKzY0NTY3IDg0MWFlMTc2N2I0YzU0ODM4YmUwNGJmMjUwN2VmOTY5ZDkwYTQ0N2YgbGVnYWN5LXRydW5rCis2NDU2OCAyNDhiOGFkZmNjOTdhMzhmNWYzODNlMGEwYjhiYTllMTVlMzhmOTExIGxlZ2FjeS10cnVuaworNjQ1NjkgOTAzYjZlMmEzMDRmYjBiMzA3Y2NlNGM5YTVmZGY3M2RmNjk4NjRmNiBweTNrCis2NDU3MCBiODU3NzA0NTk1OTFiODhiNjgyYjAyNjIyZjcwYzNmMzk1NWEzYzA1IGxlZ2FjeS10cnVuaworNjQ1NzEgMmM4ZTNjY2VhYzRlYjRlMDQwMWU0YTg1ZDFhOGFmYmE2MzJkYmEzOCBweTNrCis2NDU3MiBhZmNkNjhhODdlZWNhZDIxMTBlMWY4OTg1OGRmNTc5OTYxN2I0ZTA1IGxlZ2FjeS10cnVuaworNjQ1NzMgYmRiYjY2YmMzN2RjZTFiM2ZjYWNjZTI5ZDY3N2E1ODRhMTAyYjQyZSBweTNrCis2NDU3NiBhZmJkNTBhZDRmMzQ4NDA1ZDZiZDM1Yjk4MjdkNTMzNzJkY2FjOTE1IHB5M2sKKzY0NTc3IDFkZDEwYjA0ZGI0NzQxYjlmYzkzZDQyMjg1OWIyMGY0Nzc3ZGZkMzggbGVnYWN5LXRydW5rCis2NDU3OCA4YTI4MWJmYzA1OGQ3ZjBkMWVhOGY1MmQ5YjZjZDEyZjJjNTVlNmU4IGxlZ2FjeS10cnVuaworNjQ1ODAgMGZjNzg2MWVjZTVmNmNmMGU2MjNhYjc1NjdmOGZhZTczYWE1N2Q4MyBsZWdhY3ktdHJ1bmsKKzY0NTgxIDU1YWM2YzdjZWI1OTgzYzI1ZjFmYTk2ZDZmNWMyNDU5ZjYyNmZhZTEgcHkzaworNjQ1ODIgM2M0OWFmMmQ1YmYwYWZlNjVkMGE4MTEwNDNmMTdlZTUzZjNlNjY2YyBsZWdhY3ktdHJ1bmsKKzY0NTgzIGFkOWJlYjQxYWFjMTA1MDBmNzY1OTU3NTJkMTYxZTFiY2QwZDcxZDEgbGVnYWN5LXRydW5rCis2NDU4NCBlMTdhZGZhZjRmNjRjOWM0YTQxN2FiMDdhNjllY2IwODU5NGE2YjU0IHB5M2sKKzY0NTg1IGQ5NGZhNGNiNTJlNzM0OWE5ZDA5MGMzNzJiMTcyOTBhZjJkMWRjZDIgbGVnYWN5LXRydW5rCis2NDU4NiBlZjkyNzAzNzQ4NDQ0Y2NlOTE4ZTFjMjM2MzcxNmYxZDlmOWRjNGJhIHB5M2sKKzY0NTg3IGY1ZjcwZjIwYjY3OGY5NjZmNjZhNDFiZmZkN2MwMDllNTQyMTc3MDYgcHkzaworNjQ1ODggNGQyZDBhMjFkNDk0OGRhOWMyYzdiMWNmMjdmYjRkNDdmNGQ0NWE2MyBweTNrCis2NDU5MCBiZTU1YjdjMmM4ZTY5MjVjYmJlNjhmNThjMTVlMGU3OTQ2NTZmY2YwIGxlZ2FjeS10cnVuaworNjQ1OTIgNzNjYmNkZTc1ZTA1OGMzODc0NmVhY2VmZmU0MDkyZDkwNDQ1OWE2ZiBsZWdhY3ktdHJ1bmsKKzY0NTkzIDI5N2UxMjE4ZWZlNTA5ZjkzN2JmODE4NjgxNzk0M2RkNjMxMTZlMGYgbGVnYWN5LXRydW5rCis2NDU5NSBlMTQ3MzljNTg0MDEzNjkzNDc1YjYxODQzM2EyZjM4OGIzYjlhOTgwIGxlZ2FjeS10cnVuaworNjQ1OTYgMjU0MTJjNmQyNzc2MzU2NTgwZjgyNzAxNjU3OGU2N2Y4ZjIyZWI0NSBweTNrCis2NDU5NyA4MmM0NjgxY2Q5YmQwN2EzYWQ3ZWQ1YzFlNjFlZDQzYWEzMmQ2ODY3IGxlZ2FjeS10cnVuaworNjQ1OTggNzYwNDUxNWE4MTk4NWFiNzA3MjdjM2U0YWZjYmU3NWNmMDhjOGI4NSBsZWdhY3ktdHJ1bmsKKzY0NTk5IGE5MDBiYjFkZWQ5ZDliNmU3ZTk2ZmVkNWE5MDU1YWM5YjNhYWI4YWMgcHkzaworNjQ2MDAgYjlkMmZmNWUzZGNmYzBhZTllYWRlOTU1MTY3NjA1MWM0ZmQwZmM3MCBweTNrCis2NDYwMSA4Y2NiMzU3MzlhOTZmMjBiMmFkNzY2MGJjZDJlZTAzOTc4MjM2Y2FlIGxlZ2FjeS10cnVuaworNjQ2MDIgZTI5YjRjZTY0MWY5NDMxOTVmODUxYTgxNGIxYjRjNmJjNmZkYWI1MiBweTNrCis2NDYwNCBmZDc5YzRkOTc3NDVhZDFlY2RmYjc5OGUyNWI4MmEwNGJjNGUyOWU4IHB5M2stdXJsbGliCis2NDYwNSA4Y2ZiODliNjFjMmU1MWI3OTJiMWViZjM5ZmY2MGQyOTc2ZTI4MmU5IHB5M2stdXJsbGliCis2NDYwNiBiNmFkNjY0Y2FlNDk5ODgyNzJkYjhmZDNhMmE5NzRlNDYyYjU5N2YxIHB5M2stdXJsbGliCis2NDYwNyA3YjJmMjE4OTUzOTIzYzkwZTQxMWU5YjM2NjY2MTM2MWQ3MmNjYzA0IHB5M2stdXJsbGliCis2NDYwOCA3MzljYzlmZGVmZTVkNGFlYjY0MTcwOGI1ZTkwNjg1ZGRiYWY5MGQxIHB5M2stdXJsbGliCis2NDYwOSBhZDlmYjlmMWQ2ZDNiZGJhZjUzMTcwNDQ1MWQ2ZWVjYWFiYTJlZmQ3IHB5M2stdXJsbGliCis2NDYxMCA0MTZhNTZlYjI0ZjMzYWFkYmZjYzM4YzIxZmIxOTdmNDhhMzU0MjI0IHB5M2stdXJsbGliCis2NDYxMSA0NDZlM2RhYzBjMzFiZDQ5ZmIzNjY3OTgxODc3ZTY5MzZjNjNjZWYzIHRsZWUtYXN0LW9wdGltaXplCis2NDYxMiAzN2M3ZDE3NzQwY2NhNjg5NDI2MzU3MzE3ZGNlYWZkODNkMDFmNzA5IHRsZWUtYXN0LW9wdGltaXplCis2NDYxNSBlMjcxOTc2YWMzNzI0ZWEwYjE0MzM3ODY3ZTJlZjhkYTc5M2YxM2JkIHB5M2sKKzY0NjE2IDVmNzQ2OGFjMTRjZDg3YTVhMjEyMzJjNTljOWMxMTdlZDQwZWQxNjIgcHkzaworNjQ2MTcgOTEzYWEyNzRlZDc3YjU3ZDFjMzFmYjA5N2UxZTQ0ZjczY2M4ZDVlZSBweTNrCis2NDYxOCBhY2RmZmI1YjQzNTIyMTEzZGZkYjVkZDA1YmM4ZmJkOTZkM2M5ZWY0IHB5M2sKKzY0NjE5IGVlZDUzMTdhYzgzN2UyNjNkMzBlYTkwMDQ4ZjNmYmJlYzdjNGVhNzggcHkzaworNjQ2MjAgZjkyYzgwMDk1YzE0YzlkOTFiNDVjNWRkZWE1MTM0OWU1MTQxOTUxOSBweTNrCis2NDYyMSBiYjY1ZjliNzZjMWZhNTFhMDJkYzU4M2RkMDUxN2Y1MzhmN2UxZDlmIHB5M2sKKzY0NjIyIDgwMTA5ZDQwNDRjZGE0ZmU5MWU0YzRhNjdiNDkwMWRkMTQ5NGFlN2YgbGVnYWN5LXRydW5rCis2NDYyMyBlMTBlMjU3Y2JmNjE1ZWJiNjcxMGVkYmI2MGI2NDhlYmFlMzJlMDQ2IGxlZ2FjeS10cnVuaworNjQ2MjQgN2QxNTMwZmFjMWY2Njg0MTc2OTJjYzk0NDcxMmQ3MTg2YzYzYTcyZCBweTNrCis2NDYyNSBlNjhmZTkwZjE1YWIwMGUwMzIxODZmODU5MGVkMGNlNGViYmJkZDlkIGxlZ2FjeS10cnVuaworNjQ2MjYgNDIzMDk0MzdmMWNhMjVjMDE2MTM4NzQ5OGQyYjM2MTJmMjQxYzBkYiBweTNrCis2NDYyNyA3ZTI5OWFiMzVkOTVlMTk5ODk5OTc5MGRjNmQzOWQ4ZWJiNGEyMmZhIHB5M2sKKzY0NjMwIGNhMTM1M2JmZDQ4YTMyMzIzMDFkZWQ4MTc5ZDBmNTQ0Y2FhMjBhMzEgbGVnYWN5LXRydW5rCis2NDYzMSA3MDM1NzgxMTc3ODYyN2MxYTIwMTUxNTMzMDNkNmE2ZWJlZjA3M2RiIHB5M2sKKzY0NjMyIGQ2NjQwNDllY2FjYWQ4YmUxOTg5OTgyYjUwZTFjNGY5OTFjOGEzMjIgcHkzaworNjQ2MzMgN2RiZDZiNjA3NzA2YTM2M2JhYTZkOGYxMDg3OGFiZTVlNDZlNjUxOSBsZWdhY3ktdHJ1bmsKKzY0NjM0IDcwYTRlYzQxMjg4MjJhY2NiNDc1NGQ1NzUwZWZmNzI0NTc4MTVjN2UgcHkzaworNjQ2MzUgY2RhNTU2ZDIzOTI0NDdiOTkwNDAxNjk4YWZjOGFhNWVkMTM2OTZkYSBsZWdhY3ktdHJ1bmsKKzY0NjM2IDJkNDg3N2Y3NTAwZWZhYzM4MTIzZDRmOGJjNGNhMjUzNTNiOTE4MzUgcHkzaworNjQ2MzcgNmMzODYwOTE0MjkyYzZiZTgzMDZhZWM2MzY2Y2RjMDUyYjJkMzc4NiBweTNrCis2NDYzOCBhMDZhMGUxMTMyZWUwMmZiYWQxMWY4MjRjNzcyNTJhZGQ5ZmRhOTgyIGxlZ2FjeS10cnVuaworNjQ2MzkgNjBmZDA4ODY4MTFjNzVkNTk2MDcwZTY2ODJkMmQ4ZWE1N2M5OWE5NyByZWxlYXNlMjUtbWFpbnQKKzY0NjQwIDRhODMyOTUzNTIzNGQ3NWI1ZDc2YzRkYjg3ODIwMTEwZjNhYzY2ZDAgbGVnYWN5LXRydW5rCis2NDY0MSBlOGJlZTMwOTdkNDQwZTUzYmJmM2Y1ZTg5NjA1ODVlZWQ1YTRiNjQzIHJlbGVhc2UyNS1tYWludAorNjQ2NDcgNmNkM2NiZTA3MDM1ZTk0ZmRiYTg4M2RkYTQ3YWY5M2QwNWFkZjI5YiBsZWdhY3ktdHJ1bmsKKzY0NjQ5IDgwMTc1NDIwMWIxMTQxMjg2MmIzNTliMGUzOWI4MjJhYjY5OTJmYjAgbGVnYWN5LXRydW5rCis2NDY1MCAyZDAzNmI3OGRmYTQwYmQ2MTI1ZDJkNjFmOGUwNjFjNDRiNDkxZThjIHB5M2sKKzY0NjU0IGI3ZjNkOTcwZTQ0ZjAzMTcwZjM0NmNjOGFkYjg4NjQ1YmJjNzJmZjAgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjU1IDY1YWY1NDRkYTEyMWQ0ODUxNTE5NGQyZWQ4MTY5YTQxNjBjOTU3MzUgbGVnYWN5LXRydW5rCis2NDY1NiA1ZDhmNDcwMDViNzNlYjBjODU5NzBkNmFkMGIyYWMxOWY4NmEwMzljIGxlZ2FjeS10cnVuaworNjQ2NTggZjkyNzI0MGRlZjFiNzNjN2VkMTlkYjhiOTAwMmYyNTZlMTM4M2ZlMSBweTNrCis2NDY1OSBiMzljZWVjODFjMTc0ZjgxZGRlMTJkOWM4ODE5MGU2MTFmYTY3ZDlkIHB5M2sKKzY0NjYwIGUyMmRlYWViNmMxYjAyZjIxN2I3NDQyOTg5ODExZGFmOGVhY2MyMzIgcHkzaworNjQ2NjEgYWRmNDhmMmZhZGZjYmJlOTU3NGJiMzA2ZWVlNjkyMDA1OWQyYTQ0YiBweTNrCis2NDY2MiBkYWY5ZmFkN2M1NTE5MTM2ZTIyODljYTg5YTM3MWFhNDgwYWZhZTc2IHB5M2sKKzY0NjYzIDgzMmFlNTEzZDM0NDQ1MDE2NmE3ZjYwNWNlNDU3MmJmMmZjYjM3NmIgbGVnYWN5LXRydW5rCis2NDY2NCBlNGJiYjFkM2RkMTQ1YzhjODZjZmFjMDY1MTZhNTZlMjRkMDhkNTQxIGxlZ2FjeS10cnVuaworNjQ2NjUgMzA5NTQyZmQ3ZmU4ZDMzODA2NzViZjNjZjE0YTdjMTEzMzZkMWY2NyBsZWdhY3ktdHJ1bmsKKzY0NjY2IDgxZmQ4YThiYWE5YTczM2NiNTE5Y2EyZTgxMWQ5YTU4ZWI0NTM3NTAgcHkzaworNjQ2NzAgMTg5OWJlMzEyMmMyMjBlYzlmZDdiYzk5ODE4ODc2N2JkM2UwZTI5OCBweTNrCis2NDY3MSA1ZjRhODk4MGMxYWNiZjY5OTdjMGQ3ZjYzOGZmYTQwZDg1YzYyNTI2IHB5M2sKKzY0NjcyIDdlNTYwMTZhNjU2NTllMGQyZmUwYTBhMDY4OTljOTdjMjUyMTc4MzkgcHkzaworNjQ2NzMgNzBlMWQyYmJiYzMyZmFkMTU4ZDliMzJhNDIwMTM0YmIyNTdkYzExMiBsZWdhY3ktdHJ1bmsKKzY0Njc0IDQwMjVmNjM4OTExZmExOTYxZTExM2RiOWQwODgxN2YxOTEwM2Q2YjYgcHkzaworNjQ2NzYgYmQyMzM0MTIwYTMwZTdjNDcxYjQ3NTQzZjE3NjliNGJlZjRmMmY2YyBweTNrCis2NDY3NyA2OTAxZDVmZjBmN2FiNmE5MzAwZGM1NWVmYzY1NzFhY2RmMTAwMTNmIGxlZ2FjeS10cnVuaworNjQ2NzggZmIwMmZlZGZlNjQ3ZjJjODgyZjM0NGE2NzdlYjczNTZjNzUyOWQzYSBweTNrCis2NDY3OSAxZjhiZTI2ZDA5OGFjYTZiZWU2YmQxYjM3YTBlZGZhOThmNjhmOWFlIHB5M2sKKzY0NjgwIDk4ODYwY2ZhMTlmZDM4YmNmYmM4MDJkZGE0MjhiMjg2YjU3NmIxNGYgcmVsZWFzZTI1LW1haW50Cis2NDY4MSBhYTFmYmUzMjFhY2YxZjBhMmY0ZTQ0MGY5ZTQ5OTRlZTA3OTUxMDhjIHB5M2sKKzY0NjgyIDM1MGEyODliMGVkNDVjNDRlNDdlOGZiOWU5YTQxNDgxYzBiOTI5NjUgcHkzaworNjQ2ODMgZWY4ZDc0ODdhMDc3NzNjM2Y4MzI0MzU1NWI1MTMxNWNkZDdmYmJjNiBweTNrCis2NDY4NCBhNTcyM2E4MzY3ZTc2YTE4OTY2MzQ5ZDVjOThkMzIwYTU0YTBkYTI4IHB5M2sKKzY0Njg1IDQyMjRmZjc3YTFkZGNmZWYyNTBlMTlmNmE4YjhhMTI0ZmFlMjc2OTcgbGVnYWN5LXRydW5rCis2NDY4NiA4OTNkOTBiNzczMWJkMDE1ZjA2MWNjODc4MzNhZmYyZTlmNzgwNjQzIHB5M2sKKzY0Njg3IDdkMWU2MTQ5MmM3ZGZkNzhiMjFkNDExOTYzMjVmMWUxOTJmNDU2MzAgbGVnYWN5LXRydW5rCis2NDY4OCBhY2ZhZDg2NDBlMjFmZjliY2U0ZmViM2UzNWY0ZGRlZTJhYjM4MWMyIGxlZ2FjeS10cnVuaworNjQ2ODkgZTUwMjA0NjY2OGIxMDBjOGY2OTZmOTVhMDUwMmY0NjcyNzg4OTc5OSBsZWdhY3ktdHJ1bmsKKzY0NjkwIDgwN2Q2OTk1YmFmZDNlZWQyNjc0ZDllYTAwODY5MmQzMzM1MjNiOTggbGVnYWN5LXRydW5rCis2NDY5MSBjZGFhYzc5YTcyMzc2OGQ5MjgzMDEzNDYzZmI3NDQ3Njc5ZDI4N2NmIHB5M2sKKzY0NjkyIDJkMGMzNjQzMjIzZjY5MjY4NTA4NjMyMjM3YTI3NzMyNDYwOGY0ZmIgcHkzaworNjQ2OTYgNDBlY2I5MTMzOTllNjczMTM0YjY2NzRjZGZiMTJmOTIzYzQwYjhlYSBweTNrCis2NDcwMCBiMWIzYWY4MmFkZDZmYWQzYjI0MzM4MDZiNTk3ZjAwNjE2MmJhZjZmIHB5M2sKKzY0NzAxIDRlNjg1OWM2ZDM4YzhhMmNhYTkzNmE3MmRlMWIyMjM4MDZkNWYzMjEgcHkzaworNjQ3MDIgMTNjOTg1MmRlODFhM2QwMWEyOGY5MmY2MjIzZWZjOGUwOWE5ZTI2OSBsZWdhY3ktdHJ1bmsKKzY0NzA5IGVhN2NjMThjOWFjODZmMjMyY2NiZmE1YTkxZDI4YTA0OGFjODIyN2EgcHkzaworNjQ3MTYgZGM5YjNmMjg5MmI4YjBjNDllMzJiNDY4OGJlZDhiMmM1YzU4ZWEwMiBweTNrCis2NDcxNyAwNDgxNzc5M2I5NjI1YjI0NjA4ZGFhMTdhYjMyZTkxM2E5MTdlNzNhIHB5M2sKKzY0NzE4IGYyNzIwNjEwMWZmOTQzYzJhMDJlYjRiODUzYTQ0ZDY3ZGJhMjJmZDUgcHkzaworNjQ3MTkgYzkzNTk2ZWMxZDNkZTY2NWQzNjEwYzJjYmEzZDE4NGVkNTNjOTVkZCBsZWdhY3ktdHJ1bmsKKzY0NzIxIDZmMTMyYTI2YjIyZjc3Y2U0NGZmMTI4NmFmZjUyZDM1YWQ2Y2RlODYgbGVnYWN5LXRydW5rCis2NDcyMiBkNzUyNjY3MGZmMGFkZWVkZTgyZDhkMzJmMzI3ZjBmODFmM2EyODNhIGxlZ2FjeS10cnVuaworNjQ3MjcgM2IwMGU5ZjlkNjkyNTlmMmM1MzJmNWRhYzkxMWMxMmJjYjM4YTEzNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ3MjggOGYxMzQ2NTAyMjM0NWRkYjMwZmMxNjU0OTlmNjdmZjVlYmY4MDE4MyBweTNrCis2NDcyOSA0YmY4NDAzNWNiNWY1ODQxZWI3MDk3OGU2YjA1YjQzZjExODhmMmYwIGxlZ2FjeS10cnVuaworNjQ3MzUgZjc3MjQ3NmFkOTBkZjhlOTI3NjQwNGM5ZTA2N2I3OWEzOTM1MTZiZiBsZWdhY3ktdHJ1bmsKKzY0NzM2IDIyNzlkZDRhMmY3MzJiNzUzODc4OWRlZTQyNDdjMTRmNzg5M2ZkZDkgbGVnYWN5LXRydW5rCis2NDczNyA0NzIxZjI3ZWQ2YzI3ZTg3NTNkM2FhYzYwODkzYTAzYTQ5MDlmZDE0IGxlZ2FjeS10cnVuaworNjQ3MzggZmIyNzkyNDJmOTcxMDJkMGRhNzY1MjAwMzNhNmJkYTc5YmExYTJhYyBweTNrCis2NDc0MiA0ODAwZGQyMmY0NTU4MzhmMmQyMGI1ZTYwZDU0ZGE3YjdlN2YxMWJlIGxlZ2FjeS10cnVuaworNjQ3NDQgZDY2NTc5ZjkyNWM0NmY4NWI4YjFlOGRhNDFjZWI0YTM1NjEzMGI2MyBsZWdhY3ktdHJ1bmsKKzY0NzQ1IDI0NzYzNzNmNTU0ZDE1MzkxZjhiYjJiYTQ4M2Q4MGZhMjNkNzFhNjcgbGVnYWN5LXRydW5rCis2NDc0NiA0NWI2NzIzNjdiMWY3ZDUyMmMzY2RmMDVmNTBhMWY3OWI0OGFkMzlhIGxlZ2FjeS10cnVuaworNjQ3NDcgNGJhM2QwN2I4NzFmODczNDM3NDkzYmE2ZTM0YWU4MjlhY2FhYjY1MSBweTNrCis2NDc0OCA0YTcyYmUxZDVjMjE4MTFjODUzZjhmMGY5MGQ0YWZlZDE3YTIzZjlkIHB5M2sKKzY0NzQ5IDZhZTcxZjUyMmIyZjBhYmZlNmQwMDk1MmQ2ZWQxNWZhZmVlMjhhM2QgcHkzaworNjQ3NTEgZmEzNDA4ODM4MGY5YmYzMDljZDgxMDcyNjViZDYyMGFkYTQ4MGMxZCBweTNrCis2NDc1MiBhMDg4MmJmYWY1NGQ4ZDdkYTJmOWJlMzAxMjllYTAxZjc2NDI5OTlkIHB5M2sKKzY0NzUzIDA3MzgxMTljMWVmOGZkOTVhODgxMzIyZjljNWFlYTU2ZTJiODA5Y2QgbGVnYWN5LXRydW5rCis2NDc1NCBhMzEyZTAzYTA2MzMyNTFkMWZlM2QyNWQ3YTg2ZjZkYTY4NzFhM2Q3IHJlbGVhc2UyNS1tYWludAorNjQ3NTYgYzMxOTNiNzE1NmJiNjY1MDQxMzRmMjFhMGZmOTZmZjFkMWE4NjMzMCBsZWdhY3ktdHJ1bmsKKzY0NzU3IGMzYmMwNTIzNzI3MmVkZWUwMjE4NjJjYzc3NGJjZTQ2YzE4MGQwYTkgbGVnYWN5LXRydW5rCis2NDc1OCAyYjllMTMwZTIxYmM1NDYyOTc4OGI5NzVjOGNlYWMyMzJkOTQ3N2VjIGxlZ2FjeS10cnVuaworNjQ3NTkgNmM5YWYxNGQ3YjgxMzQ3NmUyMTk4MmI5NTZjMDVkMjE5MTdjOTdiZiBsZWdhY3ktdHJ1bmsKKzY0NzYwIDcxZDMxYWI3MzUwNzMxZmFjYjRmYzcwODgzNmM2ZTU2NThlOTNiOGQgbGVnYWN5LXRydW5rCis2NDc2MSAzYWU5MjljMGVlN2EyODVlYmJlNTZiOTdkNDRmYjMwOGY5YmFlMmZmIGxlZ2FjeS10cnVuaworNjQ3NjIgMGM2MmEyNzllNGRhZmQyMGEyMmU1MjE0YWMxMWY2NmMyMGZiN2M5OCBsZWdhY3ktdHJ1bmsKKzY0NzYzIDM5NDdiZmRkYTc2ZDI3Y2UyMmFjYmY1ZmY0ODczYWI0ZTk3ZjFjZDAgcHkzaworNjQ3NjQgNjQwYWY1NDRhODYxZjcwNGEzNjNhYWEzM2UxMjY4ODE3MzYzNDNkYyBweTNrCis2NDc2NSAyMjMxYTVjZWUzZjU2ZWM4MzEwMDg3MzhhMjkyZWZmMmM0NTkwOGIzIHB5M2sKKzY0NzY2IDQ2MTRhYzMxMmNjZWU5ODAyNmMyYTAyN2JlZmUxMmY2MDkwNGY0MDEgcHkzaworNjQ3NjcgMzBmYmY4ZTQ1NTQ5ZDAyOTY5NDAxNjg3MDczM2VlOWVjNTZkZDBjNCBsZWdhY3ktdHJ1bmsKKzY0NzY4IGQ3ZmQzMmNlMDdhYTYyYWY1ZWZlOTc2OTBiZTQ2NDg4N2E0YmNiYTYgbGVnYWN5LXRydW5rCis2NDc2OSBhMjQ0ZDZiMTQ1MDE4ZTgwZGRhNjMyZjg3NjQzNzBmNWQxZTNkZWY4IGxlZ2FjeS10cnVuaworNjQ3NzAgNWIyZjAzYmViZTNiYWY2YmI1OGMxOWIyN2U2NmQ1YTJmNmM1YzU5YSBweTNrCis2NDc3MSAwOGM1YzhjMTE0YjI5YThlODI5MDNiYzFmNzNlNjQxOTc2YzZjODc0IGxlZ2FjeS10cnVuaworNjQ3NzIgMjY3OTk4NjFkMzE4Y2UwN2E0NjNiN2E5NGFiOTZkNGQwOTVkN2FmOCBsZWdhY3ktdHJ1bmsKKzY0Nzc0IDY1ZjY5Y2JhZjRmMGQ1YjNiNmY4MGFhNjlhZjdjNjhiNjBhNTg2YTQgbGVnYWN5LXRydW5rCis2NDc3NSBiYzk0M2JiZmRiMWVjYjMzM2VlOGJhY2JhMmNlNDQ4MzhiOWFmODk5IGxlZ2FjeS10cnVuaworNjQ3ODEgODNmNGI3NzdkOTRjNWUzNTIzZTliZDZiNTAzNWM5ZmM5ZjFjZTYwZiBweTNrCis2NDc4OCBmOGI3NDM2MzI1OTNhYTQxMzdhM2RjMGEwZmFlMWNmNmEwOThjMDI0IGxlZ2FjeS10cnVuaworNjQ3OTEgMWJjNTQzOTQ0ZGFhMjhkZDBkYWNkZGQ5YTA2YmVmYzQyNzE3ZmIwMSBsZWdhY3ktdHJ1bmsKKzY0NzkyIDRjMDFkNzhlYzU5ZmZmNGYwMWU2MTM1NTYwNWRkNGQyMTgwNzA4NGEgcHkzaworNjQ3OTMgMzYxODg1NDRjNTYxMDI2ZjZmODNkNmVmYWZkOWI4NGFmNjdlOGJmNiBsZWdhY3ktdHJ1bmsKKzY0ODM1IGJlZDNkZmQ5OTI4MWU0MWU3NThjMTQ3YzcwMzgzNDU5NzY0ZDlmZWMgbGVnYWN5LXRydW5rCis2NDgzNiBjMzJlOTE2NTBjMTQ0YjkyN2RiYzIyMjU3OTdiMzE5MWJiYWJlMDMzIGxlZ2FjeS10cnVuaworNjQ4NDIgNjhjNzk2NGQyNTM0N2QyN2QxYmFhYzhkOTc4ZDA3MTNjYTI5NjJiOSBsZWdhY3ktdHJ1bmsKKzY0ODQ1IDhlNzM4M2NiZTU2ZTQ5YTdlZGQyNTI3ODI0ZmM2ZDRjMTY1NzYwMTEgbGVnYWN5LXRydW5rCis2NDg0NiBiZDQzNWU4YjJlMjgwMDZkZWVjNjQwMDdjMjQ3ZTVhNDg3NGI5ZTU2IGxlZ2FjeS10cnVuaworNjQ4NDkgMDVmZWQ5YmY0ODlkNzgzZTFjNDY2NjRmM2YxYjc5OTA1MTNmYzZiMiBsZWdhY3ktdHJ1bmsKKzY0ODUzIDdjZmMyOGFjMDcxNTIwMWM5MzZkN2E4NDI5OGU5YTVlMjY0YThlMjMgbGVnYWN5LXRydW5rCis2NDg1NCAxMjc0MjExYTM4OGY5YWQxZjg2NjY4OGQ5MDc4NTMzYjVlZjAyZTkyIGxlZ2FjeS10cnVuaworNjQ4NTUgMzI4ZjMzYmFmZmEzODI3ZDY4MTkzNDc2ZjdkYmI0YjAyNDlmMDk5YyBsZWdhY3ktdHJ1bmsKKzY0ODU2IGZkMDU0ZTczZTJmMjM5ZTMzNWY1NGZkZjQ2ZmI0NDM3ZjkyZTAxMjQgbGVnYWN5LXRydW5rCis2NDg1OCAxZDQ0ZTAwNGM5MWY4YTJlOTg1NWE3YjgxNWNiNWFjNTRkZTNkYTA4IGxlZ2FjeS10cnVuaworNjQ4NTkgNzYzMjVjMTlhZjg0MDg0ZDNmNDA4YzhkMGViN2ZiM2EyNjVlNWFkZiBsZWdhY3ktdHJ1bmsKKzY0ODYwIDFjZDRkNjI0NDRiNjE0MTQxNzI1M2YyYmViZWVmNjQ2NjNlOWU4OWMgcHkzaworNjQ4NjEgZTE2Mzg0ZTNlZTIyYTY2NDY2ZWZiNDk5OGRmNmUxMzZhYzhkZGU3MiBsZWdhY3ktdHJ1bmsKKzY0ODYyIDU0NWU0NDIzNmYyODZkNTZkYjJiOWU3Y2JkMTUzZmNiMzc4NGM2YjUgcHkzaworNjQ4NjUgYzAzYjIyM2MyYjY5MGI1YjUyMDA4ZTZhNjdjZjZmZTBkYWRhMWNhMSBsZWdhY3ktdHJ1bmsKKzY0ODY2IDM4MWFlMmFkODEwYjc2MzI3ZTNkOTJmOTMyYzNmYThjOTU3NWJiMDAgbGVnYWN5LXRydW5rCis2NDg2NyA1M2I1MWMyMTNiM2RiMDE4Yzc3MTA3N2ZhZTNiN2YxOTZiNjljODIzIHB5M2sKKzY0ODcxIGUyODZiZDBmNGUxYmRmNjAxMWVhNGM0OWY4NmQ3NWUxNzJhNGJlZDUgbGVnYWN5LXRydW5rCis2NDg4MCAxM2U1MjVkOTc0YjE1OGJmNmRhYTQyZThlM2Q5MjM0N2E4MWEzODU2IGxlZ2FjeS10cnVuaworNjQ4ODEgNGY4MDRlZTc3MmViMmZjYmNmZjJkMWQwZGI1YjFjODk2MTRjZTUzMyBsZWdhY3ktdHJ1bmsKKzY0ODgyIGZhZWE2ZTlkYTYzOWFmMWQwMWQyYTZiNDIzMjEzZWVjNjZlOTJhYTkgbGVnYWN5LXRydW5rCis2NDg4MyBjNjU5YjUzOGY3YmFjNTZhN2E3Yzk1MDVlOWVkZDVhZDBhN2Q0NTIwIHB5M2sKKzY0ODg0IGNkNzc2M2IwNTQ0NmYwMzg4NDRkYzMzZjMwZGFjZGRiNGU5NjhhNDcgcHkzaworNjQ4ODUgOGRhNWQzOGRkY2EzYjhkY2QxNGJlYTBlNmM0NzBkN2UyZjg2YmZiMCBsZWdhY3ktdHJ1bmsKKzY0ODg3IDkwYjZkMTlmMDZjMWQ5ZmYyOGVmNjgxMjhjZjA5NjRjZDU0YmNlM2QgdGxlZS1hc3Qtb3B0aW1pemUKKzY0ODg4IGE3NDdjZDA2NmYzMjExZjkwZGEwYjAwZmE0NDJiOWM1MjZlODc0OWUgbGVnYWN5LXRydW5rCis2NDg5NiBhZDMwOTEyMjc4NGNlZmY1NmJjNjY5NGUyN2UwZTAxMTc4MjgyNDQ3IHB5M2sKKzY0ODk3IDM4ZDNhNTBkZWZlYzk3ZjQ2NzllNzkxYmI0ZTJlNzE4ODIxNDM0MzggbGVnYWN5LXRydW5rCis2NDg5OSBkNmRmZmRiMzBiZGRkOGFkYmU4NDVmYTY3MGQ1ZTJkZGRkNjE0YTFmIHB5M2sKKzY0OTAwIGJjMjdjODk2N2NhYzFmYWZhYjViOTBmODM1MmFkYTJiZGI5MDMxYjggbGVnYWN5LXRydW5rCis2NDkwMSAyYzlkMGE3ZTNiYzRkM2RkM2ZmMDQ3OTA1ZDBjNDkxZmQ3NTJhYzRkIGxlZ2FjeS10cnVuaworNjQ5MDMgYmViMGZmNWEyYTBmNThjNTZiYmQ5ODk1NjY0NWQ2YWJiY2ViMzUxYyBsZWdhY3ktdHJ1bmsKKzY0OTA0IDVmMjQzMWRlNjNkMGE1MTQ4ZGQyZjNjYzQ2M2MzZjkyNjc1ZTliNjUgcHkzaworNjQ5MDUgMmVhODI5ZGQ2YjVhMWRlNzE1ZGQ3NDQzMzIyZmY0MzcxMDMxOTliMSByZWxlYXNlMjUtbWFpbnQKKzY0OTA2IDE5Y2RhYWQ3ODhiOTBmMGEzMDEwM2YyM2MyMjgxNmQ4ZjUyZDMyMzUgcHkzaworNjQ5MDcgNWVlMzNiOWRkZWNjNjkzNGY4N2Y2MTliMmI2MDc2YjNmNDdmZTFiNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MDggYTcwZDkwNWU1MDQxOGIxMTk0MmEwODhhNjIwMzA3NzhiMDc0MTNlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MDkgZTIyOTZiNTAwNjNkZjNlN2I5ZDRmYTcxMzk4N2IyYzYzZWU1MTc5MSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTAgYjM1YzhiMTk0MGFmNTIxMDBlOWUzYWU5NzkzM2Y2YTliZjM0NGIyNCBsZWdhY3ktdHJ1bmsKKzY0OTExIGI1Y2YwY2IwYzdjZTU4YjczMDM1ZDA1MGI5ZTZhYWJkMjhlODE3ZTQgcHkzaworNjQ5MTIgODY4NjU2MzI4MTUzOTU4NWJkYWI1NzhiZDE5YTliMDI0ZWU1NjYyYSBweTNrCis2NDkxMyA1YWFmYTIzY2JmZmM5OTY5MTYyY2IzMThhNDU5YzcyY2I1ZmMyMmRiIGxlZ2FjeS10cnVuaworNjQ5MTQgMjMyMTA0MGVjOTBiZTY3NGIzYjgyYmJjMjc1NjNkNTJlYzQ1MTcwYyBweTNrCis2NDkxNSBiOTA3NTJjNWU4YzE1M2M2OWE4ZTc3ZjI3YjAxYWZiMTIxMjBmYWU5IGxlZ2FjeS10cnVuaworNjQ5MTYgOGNmY2Y3OTMyNzI0NWNjNzAzMjNmMzc3MzliODU5YzM2ZGJhNDAxYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTcgYWIyY2ZkN2MzYmU4NzYyN2E2ZDI5NjlkY2FkZGI4N2ZmZmNhYTZmZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTggZTUzZTRhNzFmNTZmZDE4NmJkZTgzNjlkYTYzYTQzZWU5MGMzMDJkYSBweTNrCis2NDkyMCBkNjExYjAwOTFkNWY2NGVlYWZlYzU2NmZhNjQwMTU5YzE1ZTFiN2ZmIGxlZ2FjeS10cnVuaworNjQ5MjEgNWQ2MWFkMjE0YjljMDY5Yzg4YjFhMTk4ZjE3MjRhMjQ1MjcwZTMxOSBweTNrCis2NDkyMiAwNDE1NTA3MzgyMDFmZGZlNDQ2MWU3OTdlNzUzY2RkNWUwOGMyNjZkIGxlZ2FjeS10cnVuaworNjQ5MjMgOGQwYTk3NjgxNmYyZjlkZTc4MDM4ZWFmYWU0MGI4ZmFjNGRkZjJhNyBweTNrCis2NDkyNCAxOGJmMmFhYTg3YjVmMjRlN2IzMTQzZTAyNmRiNDc0MmY5ZjM5YTBhIHB5M2sKKzY0OTI1IGM1NzEwZjBkZWJhZTI3NTE1YTdkOGEzMDlkMTFkY2UxNDY3MGU5MGIgcHkzaworNjQ5MjYgZTVlMTJkMzEwNTdlZDUwNWJlYTc1MDI1YzhjNmZkZjBmMzM1ODYwMCBsZWdhY3ktdHJ1bmsKKzY0OTI3IDVhYzI2YjFmMjVkOTFlZWM0YmFiYTQ4OWIyMmFlZDBmYzJiYmRiMzQgbGVnYWN5LXRydW5rCis2NDkyOCA2YzEyMzdjYjVhYWE2NmJkY2U4ODVkMDkyMTFhN2RmNjU2Y2NmYTdlIGxlZ2FjeS10cnVuaworNjQ5MjkgOGJhY2UyMTRhZTU0YTIwYzkwYmFjYzk2MmFiOGZiNDk1NmQ1ZmE2NiBsZWdhY3ktdHJ1bmsKKzY0OTMwIGFmZThkNTE1YmZlMmU5Yzk5YWI3MmZhYjM3NjFjMTgxNWFkN2ZmYmMgbGVnYWN5LXRydW5rCis2NDkzMSA4MWUzNGQ3ZTRiYTBhN2ZhNjMxYmQzYTQxODBhMDczOWMyMzlhYjljIHB5M2sKKzY0OTMzIDZmZDhhMWQ4NDQ4YmNkMTY2ZmUzNzBjNDNjMmRjNGNjZmU2NGE4OGIgcHkzaworNjQ5MzQgYmUzZDMxMDZkYTZmMjQ1MWFiZWE2ZGIxZmM2N2U3Yzk5M2U1NDA4MyBweTNrCis2NDkzNSBhZmRkNjRlZGYxODllNWY5Njc5MzcyMTA2MjkyZDVkNDYzMTMxYmM4IHB5M2sKKzY0OTM4IDkyYjFjYWZhMzI2N2I2Njg4MDM5YTNjZDdiODI2ZjNhNTk5M2Q2MzMgbGVnYWN5LXRydW5rCis2NDkzOSA3YTMwYjNjNWNiNTdhN2JjOTZlYWI2YmMzYjQzMzM3ODQwZGNlY2NkIGxlZ2FjeS10cnVuaworNjQ5NDAgYzNiYzQzODg4MmNiODJmNGUyZTlkYzg0Mjg5YzI4M2NkY2RmMDQ3OSBsZWdhY3ktdHJ1bmsKKzY0OTQxIGFlMzRiOTUxYjMzNzc2MjZhYjRkN2ViMTc1MjkzNDc1NGY5OTI5YWIgbGVnYWN5LXRydW5rCis2NDk0NCAyYWQ3NDlkNTdlNjJjMDUwNTg0NzUyMGYxZjYxYzE3NmYzMTRhODJkIGxlZ2FjeS10cnVuaworNjQ5NDUgMmNjNGUxYzQ3NWY4MTNjMTRjYTAwMTA3ODY4N2MyYWI1YjhmMmRiYSBsZWdhY3ktdHJ1bmsKKzY0OTQ2IGMwYzA2ZmZhZWE4MzEwOTEzZTAzNGFjODRmMjcyZWFlYjE5ZDQ4NWUgcHkzaworNjQ5NDcgMTkzNjljN2Y1NzkxNGE1Y2Q0MmI2MDA4M2RkZWM1OTcwYjFhNzgxMiBweTNrCis2NDk1MyBlN2E2YTQ1MTVhYjBiMzliNTViMjQxYWRmMjE2ODVhY2E1MzM3YTg5IGxlZ2FjeS10cnVuaworNjQ5NTQgOTk4NjgyMDcyM2UwY2ZjNzI3MmRlODk5ZDgwYTFiNDAwZDVjOWE5NSBweTNrCis2NDk1NiAzZDg2ODI1NGZmN2VlZmQ2ZTNhMWZhYmMzNzE3Mzk3YTM3YzkxNzU1IHB5M2sKKzY0OTU4IGMyYjExNGQwZTFjZjRkNzM3ZDU5MDM1ODc0YjEzNWVlYzNmMmIxMGMgbGVnYWN5LXRydW5rCis2NDk1OSA3NDE5NTQ5OWU5MDkzY2E3NWVjMTFmMWE0YjRkYjUzZWE5MjE0MzZjIHB5M2sKKzY0OTYwIGQ0ZTQ3MzI5MWExN2NmYjM2Nzk4NjljZDRkNjYxOTQ4ZTdmY2E1YWYgcHkzaworNjQ5NjEgMmZiZTI4ZGVjYTJhMjg0Y2Q4NDMxMTVlNDJkMTJjYjhlNTc2Y2IzYSBsZWdhY3ktdHJ1bmsKKzY0OTYyIGY5YjgwYTgyMGEyNTY5Y2FiZDU4MmZjOThhNDFkOWRkOTQ0NjRmZDggbGVnYWN5LXRydW5rCis2NDk2MyA3ZDU3MGRmNWU5MGE0MTNiZTE3ODg3MDI3OWE0ZWU4ZmJhNDQyYjYzIHB5M2sKKzY0OTY1IDJlZTA5YWZlZTEyNjAyNTBmZDc4ZDAyNzViNzdlZWRlYTViZmYzYWIgcHkzaworNjQ5NjYgZGVkMjE3MDQzNzA3YzJmNWQ0MzY1YmQ4ZDg3OTI3OTRhMGU0NGMwNCBsZWdhY3ktdHJ1bmsKKzY0OTY3IGY0ZTdlZjQzMjlhOTU3ZTkyYWZiMTFhNGYwZWZjODJkYzZlZTZmZDkgcHkzaworNjQ5NjggMWZkYmEwOTc5MzJhZjg2ZmE0MTZlODMzYTcyZDZjYmQ5MjE1MThmMSBsZWdhY3ktdHJ1bmsKKzY0OTY5IGY4NzIzZWIxMDVhY2Q1ZmFkZTBkNmU2YmFmNTMyMjQzMjEzYjdmOTUgcHkzaworNjQ5NzAgZTI2YzcyNGQ1ZTIzZTM3NDhmODZlZTU3NTQwYzg2MmU0NGJhY2I0OCBweTNrCis2NDk3MSA5MTZkMzNlYzdiNWFmZWNjMGI0M2RkM2M1YzQ0ODM4NGYxMjU4MjE5IGxlZ2FjeS10cnVuaworNjQ5NzIgNDMyZDI3ODA4YmQxZWU2MzkzYTY5YWZkYjhiOTZjZjU0ZDNjOTA1ZSBweTNrCis2NDk3MyAxZjI0Y2VjMGYyZTFkNjhkMjY3ZDE3ODE4NmVhZjFjY2IxMzhjY2Y0IGxlZ2FjeS10cnVuaworNjQ5NzQgOTdiYTkzNmU4ZGY4NGNhNDdiMGM5NjFmZjIxZjVlNjA4YjRhNTc1MCBsZWdhY3ktdHJ1bmsKKzY0OTc1IGQwNDBhM2I2M2RmNDI1ODg2N2ExNmFlMDliZDNjZDEzZDljODY4OTYgcHkzaworNjQ5NzYgODc1YmViNGFkODg5MTUwYTYwNTgyMGY0M2Q0NmU0MTVkMTU0ZmQ0NyBsZWdhY3ktdHJ1bmsKKzY0OTc3IDM1MDA0ZDliZmQxNTYwNDA0NTMxYWZmMjJkYjk1OTM1NDQzYjk3NWYgbGVnYWN5LXRydW5rCis2NDk3OCBkYTJkMzYzMzc5ZjI2ZTRlNDRiZDE0ZGFkODVjMTAwZjIwNDRlNGFhIHB5M2sKKzY0OTc5IGE0NDgyYTFhMzBjNmQ5M2NjMzIzNDNjOGIxMjg2ZWQ4Mjc1ZWU3YjYgbGVnYWN5LXRydW5rCis2NDk4MCAxZTAwOTE3MDg4NzVhNzg1MTJmNDEzNzM1NDM4MjgxMGVhOGM5ZTMwIHB5M2sKKzY0OTgxIDljYjI4YWQ1YTQxYzAwMTI2OTBlNTk3MTU5NGIyNWJlNTYwYzExYTEgbGVnYWN5LXRydW5rCis2NDk4MiAwMWZiZTNmYzg4M2UwYWViMWVkZTMxNDM4MmJhOTNiNDM2NDY3NjkxIGxlZ2FjeS10cnVuaworNjQ5ODMgNTFjMGQzYTA3MWFkMDA3ODA2ZmM3ZDVkZmRmY2EyMmFjM2E4YzE4OCBsZWdhY3ktdHJ1bmsKKzY0OTg0IDNmYTQ0ZTVlNGUyYjFmMmNkNmQ4ZDQyNTgwZDQ1Zjc0OWUzODllMGIgbGVnYWN5LXRydW5rCis2NDk4NSBjNjYyZThjZmZkZGY2MWQ1YjZlNGM1ZGFhNjk5MmU5NDRiZjBmYjc1IHB5M2sKKzY0OTg2IGVmZjlkMTFjNDc2MjZhYmNlMDcyNjdhYjIyY2VmZThlNTczNDZlNGUgbGVnYWN5LXRydW5rCis2NDk4NyAzYTNhNWE0OTIxNDcxYzM0ODAxNDFmZGRiNDU3ZjcxY2E1YjJiNDExIHB5M2sKKzY0OTg4IDNiYjFmOGJiYTMzNjc2YTM1OTc3YTkzNjRkYzNjZmM5MTk2MmEyNmEgcmVsZWFzZTI1LW1haW50Cis2NDk4OSBiYmQwYzkwMDI3YmZiNzdiNDY4Y2VlZjMxNWZiMWY2MmIyNTdiN2M2IHB5M2sKKzY0OTkwIGJkNDg0MTA2OWM2ODQ4NThiMjcyZDIyNDhhYTU1ZjNlNjNmYzEwNDQgcHkzaworNjQ5OTEgZDE0ZDBiMTVlMThlNzBmN2U3NDg2OTUzODA1ZmU0Mjg1MDliOWQ3MyBweTNrCis2NDk5MiAzOGQ3MTliZWRkYmRkODYzNjUxYzkwYzFkMjYxZjFhNjQzODY2M2QzIHB5M2sKKzY0OTkzIGVhMjNlN2M1NjE1NDU2Y2NjNTlkM2IzZDdlMDFlNmY3MjFmMmVkYjggcHkzaworNjQ5OTQgZmNlZmY5NTRmMzgwNGM2MmIxY2U2NTVlMjRkYzkxMzRjMjMxZGNkYiBweTNrCis2NDk5NSA4ZTllNjUzODNhZmI2NTAyZTM5ZGU3NGQxNTA3NTBlOWIwNWVhMTI4IHB5M2sKKzY0OTk2IDY1ZTljMDEwMmVmOWM0YjA5NDdiOTBlZDIxNTgzOGFmMWI3MjNhOTUgcHkzaworNjQ5OTcgOTI2YjJhMTk2MDgzMTUyNzg1MDhiMTA1ZjA3N2NlZTRhMGJlMWU5ZCBweTNrCis2NDk5OCA5ZWJkM2YzODU1NzU5ZDU4YWVlNGViOGI5N2NlZjM3YmRhYjgyMzRlIHB5M2sKKzY0OTk5IGFjYTViMmU2YTY2ZjMyNGI3NDU0NmViODBmNTRmMjE4YzczNTUxMGQgcHkzaworNjUwMDAgZjU4ZTNhMGVhOTlhMTdiNzZjNWUwODZkZjg5NTg4Y2Q1MzgzMWNlMiBweTNrCis2NTAwNCA5YWEwNzgxNjE1ZmIxYzdhNzYwYWRiNmRkNWQ1MjY4MWRhMDJkYjg0IGxlZ2FjeS10cnVuaworNjUwMDUgYzBhYjJiYWZiMjY0NDBiNTlmOTg0OTA1YzY0MWEwNzY0NzRhNDY1NSBsZWdhY3ktdHJ1bmsKKzY1MDA2IGNlYTA2NmRlZGZkZmIyMDg4MjU5NmVhMzM5MzI3NjcxYjJhYzU2ZTEgcHkzaworNjUwMDcgY2EwZDYyMGNkNjNiMmE1ZmJkYWVkNDFiZTg2Njc3NTdmZDFmZGNhZiByZWxlYXNlMjUtbWFpbnQKKzY1MDA4IDJiYjg2NmQyODJiYWQ1NWRmZTY1ZTcxMzliMTI5MzNiZjgyYTliZjcgcHkzaworNjUwMDkgMTc3MzAyZmVhYjM2ODk1NWVlZDAzMjVlZTk1MThkYWY1YWE4OWI0NyBweTNrCis2NTAxMCBkZTBiZjYwZjEyNDVhYzczZTQ0YmIyNWUyYzU4ZWFlNmU1ZDA4MmFlIHB5M2sKKzY1MDExIDRmNmVkZWE0YjU1ODU2MTFjMTU0ZjVhMjBmYjBkMjc5N2NkMjc3NWMgcHkzaworNjUwMTIgYTUxOTFkN2VhNDA1NDBjMzE2MWU1YWNkNDk3MDJhNzAxMzRiOGM4NiBsZWdhY3ktdHJ1bmsKKzY1MDE2IDVmNmRjMmY4NmE4ODQ0MTc1YjJiOWIzYWRjMzc3ZjkxYjdlYWJlNmEgbGVnYWN5LXRydW5rCis2NTAxOSBlYzM4ZmJiYjhjY2ViZTFmMjY3MDkwN2U2ODkyNjgxNThmOGFmYmYxIGxlZ2FjeS10cnVuaworNjUwMjAgYjY0NWFhMmJjYTljYzcxMjE5YmMyMzM0OGNiMTA0MGI0ZTZjMWExOCBsZWdhY3ktdHJ1bmsKKzY1MDIxIDJlOTBmZWYyMjZlYTZjMjAyZGE3MDFkYjZhMjBlZGFkNzA4Y2Y2YTQgcHkzaworNjUwMjMgYTA5NjNlNDZmNDNlNWU3N2U5MjM1NWI1NTQ4N2YxZjQ3NmQ1ZTM2NiBsZWdhY3ktdHJ1bmsKKzY1MDI0IDY1NGZmNTc1NTQzNmFkNTNhNmRhMWMwZDEyYjE0YjU1NzRiYjJjM2MgcHkzaworNjUwMjYgNjU1MjI3Yzk4OGE3OGQ2ZDIyODNjMTRjOGY4YzFhYjc2MmE3OTg5YyBsZWdhY3ktdHJ1bmsKKzY1MDI3IGFjYWNhMTFkODBkYmM4NGQzMTA5YWQ4NmJkOTEwMzQ1NzYwMjc2NjYgcHkzaworNjUwMzAgNTlhYzVhZWYzYjJkMWZmM2MzYTZjNzZjOTQ0NTkyZGUxNWIyZTU2YyBweTNrCis2NTAzMSBiMmYzZGUzNThhZjQwODAzMjRkN2FmODQ1YWI4MjE1ZWY2Yjk4MDE2IHB5M2sKKzY1MDMyIDA5YmViOTZiYTIwZDQ3YzYzNDE3MjdlMWZlYzZmZDBjMTA2ZDRjODkgbGVnYWN5LXRydW5rCis2NTAzMyBlYzg1YjU4YWQyYmE0YTA4MGE2MDFiYjExYjg0NzZiOTY5OGU1MmVjIGxlZ2FjeS10cnVuaworNjUwMzQgNmM4YmFjOTEzYWFiZmNjMDhjNWZkNDdmNWNlNGU0YTRkNmRjYjhlNyBweTNrCis2NTAzNSBlYmU5MzIzMjkyNDY5OTdkNTM4MTIwYTM4YWVmN2E1NmVlMmMzODM2IGxlZ2FjeS10cnVuaworNjUwMzYgNjA0ZmViZDIwNGNiMmQzZTYzZjI5ZjE0YjkxZTdkNjk0ZjkyYWE0ZiBweTNrCis2NTAzNyBlYzk3YjdhYWQyMzFiZWNjZjdhMjc4M2U0YjQwMjg4OThjYWE5MzY2IGxlZ2FjeS10cnVuaworNjUwMzggZWZlNzA2YWFiMzJiOTFhZTI4M2FlZjFhZWZjYjY5NzM0MjZmMmRjYSBsZWdhY3ktdHJ1bmsKKzY1MDM5IDAxODA2Y2RlZGRkZTM2MDhiZjA0MTQ5NDBiZWU4MTk5ZGMxNTJhMWYgbGVnYWN5LXRydW5rCis2NTA0MCAwOTFkZjRjMDhkOTlhNGRlNTM1N2M5OTk4Zjg0ZTU2OTA5YThiYjk5IGxlZ2FjeS10cnVuaworNjUwNDEgZmJmMTY1YTc4OTUzNzNjYWQzMGNjNjBmMWYzNjVmMmIyMzdkNWY5YiBsZWdhY3ktdHJ1bmsKKzY1MDQyIDdlMDMwYjYyODI5NGRiMjI5YjhlMDcyNDE0YjU1YzcxNTdiNzExZDEgbGVnYWN5LXRydW5rCis2NTA0MyBiOTgyOGIyYTUxYzBmZjM1MWYxY2I2ZjM1MjJlNzVjODRmZTYxMzM2IHB5M2sKKzY1MDQ0IDkyMWM0YTgwOTkyMzgzMTdkNWRmOGYzZTI3NmZiYjk2NmFjNThjMTkgbGVnYWN5LXRydW5rCis2NTA0NSBkODdjZDVlNzM2NWFhODJhYzc3MTc1MzQzZmY4OTdjMmU5OTE3YjFhIHB5M2sKKzY1MDQ2IDc2OGJjZmY0YzBkYWVkYTY0N2RiZDI3NDQxMGQ4ZGY3MDEzZmVjZjUgbGVnYWN5LXRydW5rCis2NTA0NyBmMmM3Mjc5MjU4YzEyZGM0NjY5NmM0M2M1ZDkzNDRhZjMxMWRiMDBkIHB5M2sKKzY1MDQ4IGQzMWQ2MWY0NjQ5OGQxNDIxNzNmYmIyNTEyNmJhZGRjZjRlM2UzOGIgbGVnYWN5LXRydW5rCis2NTA1NSAzMGZkZDBjM2I2ZGUxYjgyMzVlNzVhYjU4MDA5MDZmOWM3YzQ0M2Y5IGxlZ2FjeS10cnVuaworNjUwNTYgOWM1NmNkOTdmZjRkZWUzMDk0NjhjMzUyMzBkYmI5ODU4NWE1ZjQ2ZCBweTNrCis2NTA1NyAyN2JjYTdmYWMzNjJkNzE1OTBkZDYzYmU4ZWE2MTUyNTRmNmM5MTc4IGxlZ2FjeS10cnVuaworNjUwNTggYzU5MTFhN2I1ZmEwMGJjMjc1ZjZjZDdmYjZkNzI5YThiNGU1ZWQ3YSBweTNrCis2NTA1OSA0NTIzM2Q0YzE4ZDIzYjA2MGFlZGUzYmI1ZjIzNmYzZWJhZWMyZmI1IGxlZ2FjeS10cnVuaworNjUwNjEgYTI5Yzg2Y2U3NjY4NzExMTNiZTI3NmM0Mjg2YjJhMWVmZjQyMTU4MSBsZWdhY3ktdHJ1bmsKKzY1MDYyIDFiZTViNmJlNDNjYjY5ODU0MmM4MzkyMTk2NzUyNDhkYjgyYWM1OWYgcHkzaworNjUwNjMgNzlmODRiYzJiMTQ5MjA4NWY3ZmQ2YzNkN2U2YWI2NTVlOWE0YjU2YSBweTNrCis2NTA2NCBkYmMyYjdhZDBjMjIxN2MwODBlZGMwMWM0Nzk3NjFhY2RlNGZiYjI5IHB5M2sKKzY1MDY1IGVlZmI5ODM3OTY0NGQ5YmY4NGM1ZTJmZWIzYTI1OWExNWEzNWI1MGQgcHkzaworNjUwNjYgNzhhMjlhMDUyMDc5ODJkMjZlNzNiYTAwNmIzZTQ0OWFhZmNiNzc2NSBweTNrCis2NTA2NyA5OTFjYWRkNDdkOTczMmYzMTEyMTFlZWJkZTkwZmE4ZTllN2Q5YTM0IHB5M2sKKzY1MDY4IDIwNjg3MTBiMzJjMzUxM2MyNDM2MmIwOGI1MTU5MzE2Mzk0NjRhYzUgcHkzaworNjUwNjkgZjI4M2UzYjVmOTE3YWIyNmI1MzhmNGU4YTA0NGZiMDdiNzg2OWFkYSBsZWdhY3ktdHJ1bmsKKzY1MDcwIDU2MDM4OGNkYTE2M2Q5M2RkOGM4NGY5YjA4YTIyZmViNDViZGEyZTEgbGVnYWN5LXRydW5rCis2NTA3MSA3YzZlYzdhODAxNmFkZmE3MzRmYjk3MjJjZTEwZGJhNjZjOWE4MWMxIHB5M2sKKzY1MDcyIGJhMzliNDBlYmYyZDkzMzljYWJjN2Q1ZjA0M2EwYWZiMDc5Nzc0NDcgcHkzaworNjUwNzMgODNkMGQ0Y2I3YTY2MWM5N2NmNTk4NDhiYzY2MTc2Zjk4OGU4OTJhNyBweTNrCis2NTA3NCAzZDUyNjUyNWIzZTgxZDk0YWE0ZjJlNGM2NzA4MWE1NjgzNDk4ZjVlIHB5M2sKKzY1MDc1IDVjMzMwMDk5OTRiNDYzNThkNmVmOTgzNTM3NGQ4Y2UzOGQyNWIzZmIgbGVnYWN5LXRydW5rCis2NTA3NyA2ZGQ1MjBlMWJjMGRiMzYxZmFhMWNkNjNlYWU0MTZjOTRjZjNlYWRmIGxlZ2FjeS10cnVuaworNjUwNzggNGRlYWRjOGY5ZTBhMzkzZWE2MWFhZGY4ZDlmZDk0ZTNlNmIyMDE4NiBweTNrCis2NTA3OSAwMzFiNWFkNTQ3ZTQyN2I0Mzc3OTRiODE4MWYyOTI0OTA2MmIwODNmIHB5M2sKKzY1MDgwIDE2ZWM0YmIxNGE2OGVhNDI4YWNmMDllYmYwYzkyOTgxZGEyNjQ2ZjMgcHkzaworNjUwODEgYTk2ODAyOWI2M2RiMTIxZjAwN2E3ZGM5MGFmODhhYzU4MmRkNDdlMSBweTNrCis2NTA4MiA4MWVjODI2M2JkNmUyNWM5YTg4NTVjZDBjZTlhZTg4MTczMjk3MmJlIGxlZ2FjeS10cnVuaworNjUwODMgNThkNGJmMzE3MjhmZjhiNDI5NjExYjNmNGIwZTQ5MjFiMDhhMWFjNiBsZWdhY3ktdHJ1bmsKKzY1MDg1IDE5ZTc3OWQwMjA1MzUzZmM4Y2UxOTAzNTczNGUzNzgyOGQyZDQzZDYgbGVnYWN5LXRydW5rCis2NTA4NiBiNzRlOWQwOWIxODA2OTNkMDBjYzViMzM0NmMxMDE0ZDE0NmMxNTcyIHB5M2sKKzY1MDkwIDc4ZWU2YmEyMDk5ZWU3ZDJjNmQ4YjViMjIzZmI5ZTExOWIzN2Q4NWEgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MDkxIDY0NGNhNDQ4Nzg4MWU4NzllMDEwZWY1M2ZmOTk0NjhmOWE4MzQwNWMgbGVnYWN5LXRydW5rCis2NTA5MiAwZWFlOWIyNWEyZWQwYmRlMDU5NTFiOWEwMGU1Yzk4MjcyYWQyOGQ2IGxlZ2FjeS10cnVuaworNjUwOTMgOGVjMTgzMGQ1NzE5OTczZTcwNzNhODFiODk4YjNhMTEwMzdjMWExMCBsZWdhY3ktdHJ1bmsKKzY1MDk0IDFhY2ZlNDI4ZThmMTliOTc5MGY0NTdkODJmY2RiNGMyZTRlYzNhZjYgbGVnYWN5LXRydW5rCis2NTA5NSBjZWM3MDRiNzliZGYxZjU1MDEzNjlmMTZkOWZkNzUyNzcwMDU5NTdiIGxlZ2FjeS10cnVuaworNjUwOTYgMjkyNTEzNWNhMDUwYTY0NDc1ZGRmMzJhYjBjMzc1NGU3OTRlNjA2NyBweTNrCis2NTA5NyA0ZWM1YTBlYzYzMWEwNTUzYzU1NjhkMzQ4YmI4M2FiOWQyY2UxYjUzIGxlZ2FjeS10cnVuaworNjUwOTggZTg1ZDU2OTBjMjk2ZWY2ZjMwZjVlOTczMGFhNjFiMGZkYTdjYTAyZSBsZWdhY3ktdHJ1bmsKKzY1MDk5IGFjMWNkNDZiZjdkNTdlOWI0ZDc0ZjJjZjBiNWIzMTEzNWNkZTFjNmQgbGVnYWN5LXRydW5rCis2NTEwMiAxYjIwYWZhNDhkNThhZTUxMjU0OTNmYzIzMzllMjk4ZjcwZmMyZTRkIGxlZ2FjeS10cnVuaworNjUxMDMgYzQzMjMwN2VjMDBkZDZkNjg4MWFiMDExZDQxNGE5MWU0ODYxMTFkNyBweTNrCis2NTEwNCA5NTc2YmI3MWEwMWI0OGMwY2Q0MDkzMGRlNjk3OGU2OGM1MTllMzEzIGxlZ2FjeS10cnVuaworNjUxMDYgZTdkNjRlODI5MDM1MjJiMzM2NzAzZmRmMWE4YzFjM2VkMmE2ZTJkOCBweTNrCis2NTEwOCA5YmRiNzQwNGVmZTc4ODlkYjhiZTc0M2ViODIzYzNmNjZlN2RkMTcxIHB5M2sKKzY1MTA5IDQ5NzI2ZGNhMTZkODExYzMxOGRjMzNmYTUyZWNhMjdhNTQ1ODU3OGUgbGVnYWN5LXRydW5rCis2NTExMSBiOTMxYTAyMjY0NjY1NmJmMTljZDU0ODJmMjBlMTJkNDhlNjU0Y2IwIGxlZ2FjeS10cnVuaworNjUxMTIgZjkwNDBkMTA3ZDY2NDdkZWY3OWRmZTM0OTI4ZTQxMzhlMDQ4MGY2NyBsZWdhY3ktdHJ1bmsKKzY1MTEzIDI5Nzk1MTMwNjQwMDUyMWI3ZDc4NDBiMmMxYjAwNzUwYjBlNWRmYmYgcHkzaworNjUxMTUgNmU3NzE2YTNiZGVjMTA2MGI4ZWI1M2FjNmE3N2MzOTJmMDU2ZjYyMSBweTNrCis2NTExOCBkZWNlMTdlZGJlZDA4YWI2OWM5MjIxZjg2OGJkMGQ0NTU2Y2Y2NzlkIHB5M2sKKzY1MTIwIGZlZmZlYzI2YzU2Y2I5NmRiY2VjMzJlN2Q5NmU1YmM5MTBmMjEyOWIgcHkzaworNjUxMjUgNDBkYjQ1YmZjMGYyY2RiY2NkZWZhNjVmYTY1NTkzOGQxN2I3N2JjZSBsZWdhY3ktdHJ1bmsKKzY1MTI2IDQ4ZTgzZTY2OTM1YTlhNmMzMzhhNTc5YTk1ZjAxMmY1NDFhNzk1NTcgcHkzaworNjUxMjcgYTVmZmUzNGM3MmM0ODk5ZGMwY2FlNzgzOWQyZmZjNmNmYTIzODc4NSBsZWdhY3ktdHJ1bmsKKzY1MTI4IGNhY2EzMzgzMmExYTUxMjdjMjI3ZmFiZjk5ZDk4MzU4MWY1ZjllZTEgbGVnYWN5LXRydW5rCis2NTEyOSBlNmJhNmY0MTQ2OWJmMzBiZWQ0YmVjYmJlMjUyZmFmNjRlYmY5MGViIHB5M2sKKzY1MTMwIDZjNWNkZGIyNjdmZTI0ZDU5ZDViMzFlYWUwZDBiMmMyZDU5NGRkYTQgcHkzaworNjUxMzEgN2FkNmU0Y2Q3NzEzNjZkOTQ1NTgzNzdhZTA4NmJjMDBjNmUxMTUxNSBsZWdhY3ktdHJ1bmsKKzY1MTMyIDQwYjBlMzMxOGE4YmJhZGQxNzQ0N2E2ODRkYzUyOTA4NDAxOTRhMGMgcHkzaworNjUxMzMgMzNjNmFmNjlhZTBmMTc1MzFkMmFlYTgzNDc2ODg3NDZkMGZhNTI3MCBsZWdhY3ktdHJ1bmsKKzY1MTM0IGU5MDdkYTgyNTE2OTE5MjllOGZlNTVmOGMyYmQzZjI0MjkxOTk1MGQgbGVnYWN5LXRydW5rCis2NTEzNSA0OWJlODgxMmQ0MzMwYWVkZTUwMGQwOGE5NjIyYThhYmIzNWZjNmRiIGxlZ2FjeS10cnVuaworNjUxMzYgOTZlYWZhYjQ4OTAxMmVkZjJkOTgxM2JmZWQxMDBiZWE0NmFjNDI2OCBsZWdhY3ktdHJ1bmsKKzY1MTM5IDdmNTQyMmQwNDA5Zjk0NDQ3ZTdlMTRlNmQxNGJmZmM4MzNhYjY2ODEgbGVnYWN5LXRydW5rCis2NTE0MCBkZmMzNzU4M2YyMDQ3NjdlY2FlNjllNDY1Y2VlMTYzZWMwOTlmYjc5IHB5M2sKKzY1MTQxIDk0OGU1YjMyMzMyOTFiZTE1MjU2Y2YxMDY4OWI1NjdmMzc1MTZmMGYgbGVnYWN5LXRydW5rCis2NTE0MiA0MDdlYjAwNDAwNDE0MWNhOGVmNjJhYzc4N2I5MTc0MzcyMDEzZmJjIHB5M2sKKzY1MTQ0IDg5ZjVjZmVjMDU3M2M1ZWEzMzEyYjc5OWM1MDBmZGYzMTFjOGJlYWEgcHkzaworNjUxNDcgN2MxNDdhNzZhMGIyNzI0Njc1ZDQ5MDQwMmJiNDRmOWY2ZjYwZTViMCBsZWdhY3ktdHJ1bmsKKzY1MTQ4IDhjZGIxODFhYTlhZmM2NzU4MDhlOTJjZjY2NmFmMTExM2YyMmUzYWYgcHkzaworNjUxNDkgNzBiZTY5YzkzZTMzYWE1M2U4ZWMyNWMxZDBhZjAyODgxMGY4ZmY3OCBsZWdhY3ktdHJ1bmsKKzY1MTUwIDQzYzY5MzQ1MTRkN2NjMzQyZTYzYTI0MjgwMmY5MmU3YzdjYjZiMGQgbGVnYWN5LXRydW5rCis2NTE1MSA4OTg5MjEzZjM4NmIyNmJlNDRkYmJjOGU0Y2QyYjFhY2FjZWU0NGZlIGxlZ2FjeS10cnVuaworNjUxNTIgNjQ0ZmE3YTI0MGM4Yjc5NjFkNmU3YWIyNGNjMmIwOTMzYWEwZTFiOCBsZWdhY3ktdHJ1bmsKKzY1MTUzIGJiMjYzNjg4MjUwM2RkMjZkZjJlZDc0ZjkwNGZlYmJiMmE2ZjBlZjMgcHkzaworNjUxNTUgZDI3ZTI4MDIwNzA5MmQ4NTA2YjI1ODM3NGJhNjdjZTM4YjZiODhmNCBsZWdhY3ktdHJ1bmsKKzY1MTU2IDFkNGNiMjZlYzg5ZmE2OWRhYzcxMTM5MzEzOGJhNWU1ZmQ5NjYzNTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTU3IDU3OGE0YjBhNTIyZDI2MGZkMTAwODU1MzRhMjY0MzkyODAyYzk1ODAgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTU4IDFlZDY5NGE3YWI2MDE0NzM5NDE0MDljOWUwNjNjZTNhOGZmYWRiYjMgbGVnYWN5LXRydW5rCis2NTE1OSBhOTdmZDVhM2IwOTBiNjljNjljY2U0MWUyZDFhZmE2MTU2OGEyNWJjIGxlZ2FjeS10cnVuaworNjUxNjAgNjA1MzUyNTBhNjJjNmE0MGY2ZGRjNTM0N2NhM2YxZWZkNTc3ZWY3MSBweTNrCis2NTE2MSA2MjgyM2VjYTg4MWJlNGE4N2VjNjBkYTBlYmUyYmI5MzAwMTNmOTc3IHB5M2sKKzY1MTYyIDdjY2NlMmE3Mzk0YTAyODJiZTQwYWJiNGU1Y2RmMTA5OGQ1ZTA5YjMgcHkzaworNjUxNjMgMzY0MTA2Nzk2YjIxMDQ3MmVhMjlkZjY4MjQ1MjAxOWY0N2JlNTIxZiBsZWdhY3ktdHJ1bmsKKzY1MTY0IGVjYzZiZTM4MGM1YmM4YTQ4MjBjZDI0MzM0OTIzZjAxYzg2NGE4NDQgcHkzaworNjUxNjggMDY4YzAwYmY1YTI0YWZmZjM2OTUxNDBiMjYzYTAyZDk1ZTZjYWU5NSBsZWdhY3ktdHJ1bmsKKzY1MTcxIDBhNzQxYzEzZmM4MWM2ZWMyOGVmOWJmYmRmZmUwYmZjMGI1NmE1OTMgcHkzaworNjUxNzIgM2Y2ZDQzZDU3NTVjYjliYWYzNDA4YTQ0MzA4NDcyYTJkNTk4MzIxYiBsZWdhY3ktdHJ1bmsKKzY1MTczIDkyMWI2NzU5Y2JkZTcwOWRiNjYyZmNlNWMxYmQwMGE5MzQwMWMzOWQgcHkzaworNjUxNzQgYTlkZmEwODUxYjA3MzhjNDEzZjYzNWVjYzI1Njc3NjBmYTYyZTcxMyBsZWdhY3ktdHJ1bmsKKzY1MTc1IDk3NWJiZGNjYzU1ZWQ1ODI5NTBiZTBhNTU2NDBjZDQ1MTNiZjRjYzggcHkzaworNjUxNzYgODMzMWJjNGU4Mjc4YzgzYmZjMTljZjhjNmVkZTNkNDhkMmE2MTZjNyBsZWdhY3ktdHJ1bmsKKzY1MTc3IGI4MzZiZjI1ZjE3NmEyOWYzYjYxYjliNzg3Y2IxZGE2ZDAzNDJjMTYgbGVnYWN5LXRydW5rCis2NTE3OCBiYTI3NjdiZDQ2MjA1Mjk5OTA2MDc2ZDNjZTNlMDM5OWEwM2NlMjQxIGxlZ2FjeS10cnVuaworNjUxNzkgZDg3OThkNWVjNGI5M2E1N2VhZGE3ZTZjZTYwZjkzYmQ3OWI1ZDg4MCBweTNrCis2NTE4MiA1ZDM4MzNlNmFhZTMwZWExYTlmNGJiYTkxODNiZWUzYzMzMTQyNDg2IGxlZ2FjeS10cnVuaworNjUxODMgM2I1YzI2MTNlZDA1ZGM5OTAxZTM0ZDk0NDgwMDgzNGNjZTA5YzViNyBsZWdhY3ktdHJ1bmsKKzY1MTg0IDk2YTllYmZlZTJjZDJjNzY0NWNmZjljYTlkZjgzM2E0YTQ1NDFkMDEgbGVnYWN5LXRydW5rCis2NTE4NSAxYTJmOGRkZTgxZWNjNDI4ZmU0ZmM2YzQ2MmI3MTNlYWU2ODQ2ZGRlIHB5M2sKKzY1MTg2IDczOWJiMDcyOGVmZTUyOTliYjNiYTcxYzgwMGRjODA0YjE3NjkyOTAgcHkzaworNjUxODcgZWE1M2VlOGE4MzMzMjFkOGU3MGZjNWJkZTEyNzc5YmEwMDU1OGQ2ZSBsZWdhY3ktdHJ1bmsKKzY1MTg4IDkwZmJiYmNlNzU3YWY4NzE1MWExN2Q3N2YyY2NhZGRmM2I5M2FjZjQgbGVnYWN5LXRydW5rCis2NTE4OSA5NTYxYWFlZGZiNzM4ZjA5ZmJhYzhhMmEyNTc3OWMxYzUzNjMxZjc1IGxlZ2FjeS10cnVuaworNjUxOTAgZGQzMTQ5MGQzZWI2ZGU4MjA1ZDg2ZGUwMDZjYWFkMDA1YzFmOTBmYyBsZWdhY3ktdHJ1bmsKKzY1MTkxIDgyMWU3M2Q3YmNjNTRhNGI4NWNiOGVkZDM5ZTczMDE1YmVhZjBiNjMgcHkzaworNjUxOTIgNjc5ZTNjMjcyZWMyNjJlMmRiZjFkODM5Nzc5OWEzMWY5MjJlYzIzNyBsZWdhY3ktdHJ1bmsKKzY1MTkzIDEwZjQxYWRjMGQyNGU2MDIyM2M1MWExZGM5ZGJkZDZiNmMyOWIzOGUgbGVnYWN5LXRydW5rCis2NTE5NCA3NjFkY2FhYWEwOWUyMTA1OTkwY2RmOGI4ZjZkMmRjZjJiYTQ5ZmQyIGxlZ2FjeS10cnVuaworNjUxOTUgNmNhOGFmNjQ3NDdiNTA4YzY1YzgwOTE0MTUzOWE2OWI3NmJmYTliMSBweTNrCis2NTE5NiAyMGI0YjgzYTU0YWVmZjEyMDE0NWFkZDVlOWQ5OTE5YzcxZGMyM2M4IHRsZWUtYXN0LW9wdGltaXplCis2NTE5NyBmY2JkOWY0ZjA5NWM0ZjAwZTA4NDg1YWEyY2QxZThmMTcwYTdhNWU0IHB5M2sKKzY1MTk4IDA0NDFkMzBkNjcyYmUwNjU3ZGQyZTVmMmY4NGZjZDM2M2ZhZjM1MDIgbGVnYWN5LXRydW5rCis2NTE5OSA4Mzc1YjNmNjQ3MGY2MGI5NDFkMWZiMGJjMGNkNzQzYjdhYzRmMmQ2IGxlZ2FjeS10cnVuaworNjUyMDEgMGQzN2FiMDBmNmQ2YzQ2ZDQ5YjQwNmQ2OGU2ZjhlZWYwZTg0MTQyOCBweTNrCis2NTIwMiBiZGRjMWExNzI0N2UzZjk1NzY2YTE0MzE1N2EwODVjZDgzZGNmY2JmIHB5M2sKKzY1MjAzIGFiMjIxNzdlYjZkYzQ5NTY2M2ExNGQ1NjQ1YTcxOGY2YThhNmY5MzggcHkzaworNjUyMDQgNDVmODhkN2JmMDU3NmMzNGRjNGEzZGU2NDhiYWM4ZjY2NGFiYmNlOSBweTNrCis2NTIwNSAxNzlhN2Y0MTYyNDBhZjVmNjJmN2NmOWRlOWNmY2Q2MDY5Zjc2NTU3IGxlZ2FjeS10cnVuaworNjUyMDYgYjUxY2Q1ZDM3OTVjZmI1MThjZTU1MDFlNmQxYjY3YWJjZGExZWVkMiBweTNrCis2NTIwNyAzZWZhMjA5MTZhOTA0M2Y5Y2RiMmM0ZmQyOGIxNDVmZTFjMDkwMjY3IHB5M2sKKzY1MjA4IDg4N2VlNmJkOTI4NGZiOWI2ZWFlNDFmYmMyM2VhYjQ3MzI5ZWU3ZWYgcHkzaworNjUyMDkgYjY4NzA0NDU3ZWZlZjEwZjI3Nzc1NmQwYmI3ZGFhNjkyNDk0OTZiZiBsZWdhY3ktdHJ1bmsKKzY1MjEwIDc1OWE3MzIzNTkxZWJkOTQwZDM3OGY4MTI3ZGFlN2YyNTQ1YjE1NmUgbGVnYWN5LXRydW5rCis2NTIxMSAzODUzODU2ZjdjNTA1NWQ3YTQzODM3ZjAyZDUzNGU2MzdkNzVhZmEwIGxlZ2FjeS10cnVuaworNjUyMTIgMDhkZGNhZDg1MTM0OGViNGY3MTFhNDQ5YWMyMGRmNDZhMTA0Y2UyMiBsZWdhY3ktdHJ1bmsKKzY1MjEzIDFiMWUxZjg3MmUwOTgzMWRhOTIzYTljYmRlYTc4OGY0ZjdmZDQ3ZTcgbGVnYWN5LXRydW5rCis2NTIxNCAwN2I4OTY1MzE0NWUwMzJhOGI0ODQwMjc2YTJkMGI2NTc0ZjU4YzdkIGxlZ2FjeS10cnVuaworNjUyMTUgNDIwM2I3ZjA4N2MxMDIzNjRiYTk4MzFkNGQxNWY0ZTUyMjY4OTFlNyBsZWdhY3ktdHJ1bmsKKzY1MjE2IDc0ZmIwZGYyOWE0ODc2YTM3NTUyYjI5OTU3ZWI2ODg4NDVkYjgyYzcgbGVnYWN5LXRydW5rCis2NTIxNyAyOTAwNzhlOWI2YTIwMmVkYzUyM2I1NWI5ZjQ4MTQ2OGQ1YTdlYjhhIGxlZ2FjeS10cnVuaworNjUyMTggMWM3OGFhN2VhMzM2MGYzOTJjNGY2ZjY4N2RmZGNjNzU3ZGVhNDgzZiBweTNrCis2NTIyMCAxY2U3ZTVjNWE3NjE3ZTk2NmJiNzQxMTFjODkxNGU0Y2FmMzc2NGFmIHB5M2sKKzY1MjIxIGQ5ZDQ5ZjY3Mzg5ZjYzOTlkYjA4ODQxNzY1ZGYxMjg1NTc4NjY5NGUgcHkzaworNjUyMjUgMTAxYmIxOGMxMGQ1NzVkY2MzMGEyMjQ0MWYzOTQzNWE1NTNmZjg1MSBsZWdhY3ktdHJ1bmsKKzY1MjI2IDc4MTYzMGUyNTU0MGEzNTYyOGM2YTY2Yjk2ZjI3ZTgzNmE1ZjQzY2UgbGVnYWN5LXRydW5rCis2NTIyNyAzNWE0NjJmZjk4NzMxNzNmZmI3NDJjMmY2ZjJiMmEwMjRhOTJlNGEwIGxlZ2FjeS10cnVuaworNjUyMjggYTAyOGMwYjJhY2VlNzg5NjAxMmNkMTg1ZTNmYjFhZDkwMWE5NjIxMyBweTNrCis2NTIzMCA4NjJjMGVhYjFjNTA5YjUwZTBhZmNkMTIxOGRiNDZiYjQxOGRlMWE0IHB5M2sKKzY1MjMxIDhmZjI1ZGIwMTA3ODI5MjFiMjk2N2QyMjJhMmU5MmY0NTM3ODY2NDEgcHkzaworNjUyMzMgMTgyZmNhMDI1Y2EwNGQ1NWNjNGFjZjdmOWIxODMzODNhNjBkMDE4NSBsZWdhY3ktdHJ1bmsKKzY1MjM0IGI3MWQ3NmJmNDUwNjZiZDg2OTI3MWJhMjIzNTBmZjU0NDU2NWQ0ZjQgcmVsZWFzZTI1LW1haW50Cis2NTIzNSA5NzJmNDg5YWUzNTZmNzVmZGJhMDY0MzE4MWQzMjg5MjA4N2MwODI5IGxlZ2FjeS10cnVuaworNjUyMzYgNTU2NDAxNTFlMGZjYzBlZDg0NGI1N2M5ODQzMDI1ZGU2NzBhODQzZSBweTNrCis2NTIzNyBiZTA3YzMwODNjZWFlMjkwYjkwMzhhYWI5MWFmNTYwZDZjNjk3NjhmIGxlZ2FjeS10cnVuaworNjUyMzggNzRlZWY4NWI0YjJjZGRlNzY0ZmFkMTYwZDQyNGQxMGFiNGJkNDJhNyBweTNrCis2NTIzOSAzMDBkZjZiMWU0YjBkNzdmNDIzNDRhNmM4Zjc0ZWMwMzRkNjc1NjJiIGxlZ2FjeS10cnVuaworNjUyNDAgOWE2ZjhmYjE3NWUwNTdiMTIxZjgyNmVhZmE0ZjcyN2ZmNDI2YjA0OSBsZWdhY3ktdHJ1bmsKKzY1MjQxIDMwNDg1YmMxNzI2ODA2MTVhMWVjOTdhMjAyMjRhZWYyNGVmYzRlZmEgbGVnYWN5LXRydW5rCis2NTI0MiA0OTdkMjI0MGUxZjBlOTZjOTE0ZTU2NDRlMzk0ZTZiYmQwN2UwNTU2IGxlZ2FjeS10cnVuaworNjUyNDMgZDNkNTg2MDE5YWZmZjBlNzU4OThmODAyNTE5YmYyNjNkNjZmOTljZSBweTNrCis2NTI0NCBiMjExN2IxODA0OWM0MmEwYzY3ODIzN2RiMGY1MTFmYTA3YmRhYmQ5IGxlZ2FjeS10cnVuaworNjUyNDUgNjEzYjI0MDE0YWZiYTFjYTc5NTVhYmNiODBlZTUyZjAwZTRlYjRjOCBsZWdhY3ktdHJ1bmsKKzY1MjQ2IDc2N2NjODllM2ZkZWM1OTM2YzQ2YzliNzA5MmI2MzUzYjA2OTZiZjAgbGVnYWN5LXRydW5rCis2NTI0NyA0YTQ2MjFhNjg3YTc4N2ViM2Y4M2I2ODdlNjAwNDE4OWYzM2FkODU3IGxlZ2FjeS10cnVuaworNjUyNDggMmQwZTA0MDAxZTgxYzM2YjY0ZTkwNzM2NGJhOTdkNWZmYWVhYjBlYSBsZWdhY3ktdHJ1bmsKKzY1MjUwIDJmYjU1ZmYwNjI3NWU2NWM3MDgyM2Y1OTVlMDRmMjkyNGUyNzg3NjUgcHkzaworNjUyNTEgN2IwODQ0ODEzMzg5M2JlOWIzMjRhYjEwYWNkZDNhNjg5MTZlMDRlMSBweTNrCis2NTI1MiA3MTUzMmFkN2YzZWRmNjA4ZDlhMWUxNDQ5M2E4Njc2MDY0NGQ3YjFjIHB5M2sKKzY1MjUzIDBjMTJhMzdkNWU1ZDNkNDY0OTNjZWFjOTFmNzIyN2NhM2RmZmYzNWYgbGVnYWN5LXRydW5rCis2NTI1NCBiOGQ0ZGJiMjkzOGE1OWExZjkzMGM2YzE0MmJhZjM0NDI3NDk5NDZlIHB5M2sKKzY1MjU1IDlmOWU1ZmU2M2VjMmNkNzQ1OTJiYTdiZGQzYzZkMzA1ODhjN2JhMjAgbGVnYWN5LXRydW5rCis2NTI1NiAzMTExYjY1NDNkZDllOGFlOGU0MGY2YmIzNWQxMTExY2JjZThkMTU4IGxlZ2FjeS10cnVuaworNjUyNTcgZjNiZjJlOWJiODY4YzZlNTBjZjA5YjYyNTgyZWEyYWVlNjA3NDA5NSBsZWdhY3ktdHJ1bmsKKzY1MjU4IGIwMWUyMGQzNzMwNDI1ODYyNjlmZTM1YTk4YWNlMmMzMTVkYzYzNjMgbGVnYWN5LXRydW5rCis2NTI1OSBlM2RhODY5ZGU5OGVhYjE1ZTRlZjBjZDJiNzZmMmFhMTVkM2MxZjYyIGxlZ2FjeS10cnVuaworNjUyNjEgMmRhNDJkY2JiOGNlYmIwNGVkYzUwMmQ0MjI2NzE1ZjYzZDBlYjk2MCByZWxlYXNlMjUtbWFpbnQKKzY1MjYyIGNjODRlZTY2NjdiNzBlNTg3ZDUxZTdlNGEyMjViYTA3NzM2N2RhZWMgcmVsZWFzZTI0LW1haW50Cis2NTI2MyA5NWRmMTE4ZjQyYzZmMjFiMDA3YWE1ZTgxMDFiYWE5M2I3Yjc2Yjg2IGxlZ2FjeS10cnVuaworNjUyNjQgMTUxYzFjZDk0YTQwMmJjMGU0ZTNmM2UwZmE4MzM0MTUxN2U0NGFiZSBweTNrCis2NTI2NiA4YWZjNGUyYzRjMDIzNmRkNTlmZjY2NWY2ZWQ1YTRjYzAzYjk1OWViIGxlZ2FjeS10cnVuaworNjUyNjcgNDBhNTczZjAxZmM0YTJkMTcxZmZhMTViYjVhODFlOGQ3ZTZhYjQ5NyBweTNrCis2NTI4NCBjY2JjODc3NGQ4MmI1NWM0MWZjNzAxMjI0YTY4Y2MxMWI2NmZiNzE0IGxlZ2FjeS10cnVuaworNjUyODUgNzkxYTYzMWEyYzdjODI4MTkyNzgxMWFmZjk2NjJlNjhlN2NiYTA5NyBweTNrCis2NTI4NiAyNjJkMmVhOGFiNTBkYTViZjRiMjYyNjI1M2I5NGRlZWQxNzRjNGE3IHB5M2sKKzY1Mjg3IDNhMjY3ZmU3MzgzYzQ4MTEyNjYwNzI4ZGVlMzE4NzlkODk0MjVlZTUgcHkzaworNjUyODkgNTAyMjhkMmIzMmMxNDExNGRmMmEyYWViZTllYWZkMjRjZWQ0MDdmMyBsZWdhY3ktdHJ1bmsKKzY1MjkyIDIxZWFjOTEzODI0OTViYmJlMDA4NDgxMTc0M2Q5OTkyYzZhZDY2ZTAgbGVnYWN5LXRydW5rCis2NTI5MyAwYzdmYWIwYjA1YzAzNjM3NmIzZTRjNzkxODVjZjdkN2UxOGM1MDFmIGxlZ2FjeS10cnVuaworNjUyOTYgNjg5YjVlOGFlNjlkNGIxNTM1YTFmNmE4NGE4ZTQzZDNjOTc2MDQzMCBsZWdhY3ktdHJ1bmsKKzY1Mjk3IDAwODM0MjUxOWU4NjU2Nzc3YzMyMzkzY2YzZTgxYjhjNzA4ZDg5ZDUgcHkzaworNjUyOTggZmQzMDhmMDM4YWZiYTc5N2I5Y2I1MGFlNGFjOTBmNDBkMDUxNjNiZSBweTNrCis2NTI5OSBiNDBlMTNiY2I5ZWE1ZTg2NTM4Y2Y3NDhiNWVkZmJkM2ZkYmQ3MTE4IGxlZ2FjeS10cnVuaworNjUzMDcgNDBlOTQ5YTY4MzQ0NjVhNDFjZGY3NjQ2OGRkYmE5OWNmNjQ2NjkzYSBsZWdhY3ktdHJ1bmsKKzY1MzA4IDhkMDVkZGE3MzVmODc5Yzk5NDBkYTdlNTNlYzg2NWQwMmY4NWI0ZGYgbGVnYWN5LXRydW5rCis2NTMwOSBiMzVjZTk1NGEzOTIxMGFiOTY0NGY5YWQ2MTA5ZjJmNWQyNjE3ODI3IGxlZ2FjeS10cnVuaworNjUzMTAgOGYzNjIwZjVkNjhhYWJkNTk5MGQwOWZjOTc5MGU2MzE5YjFiMGEwYyBsZWdhY3ktdHJ1bmsKKzY1MzExIDkwYzI1YjM2ZTBhZDY5NTc1Y2FjODg4NDYwY2M1YmQzZThjMmI5ZTMgcHkzaworNjUzMTIgODNjN2E4ZmFlYjc4ZTY5YjdkNWVmNjg0MTQyYjIxNTgxZWM1NTJiMyBsZWdhY3ktdHJ1bmsKKzY1MzEzIDEyZTNjMzhkMzE2ZTM4ZGMxM2MxNjdmZjIwYmM3Y2YzODIxNDBjNTMgcHkzaworNjUzMTQgN2Y4MjJiNWQzNjcwMTQ3ZjljMzE0ZmNmODYzMGExZWYxMjY0MDdlZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjUzMTUgNjdkMTc3YWFiOGE3YzVkYjAzYTJhZTA1NWU4MzIwYzk5MTA5YjMwMSBsZWdhY3ktdHJ1bmsKKzY1MzE4IDhhMTMzNjYzZWJkZTA5ZjY5ZmI1M2QyZjRjMzgwNTY5YTAyODEwMWUgbGVnYWN5LXRydW5rCis2NTMxOSA5MTU0NTUzZjg3NmJjN2MyNTYwNzUzMzMwMTBlNDA4NjA5MmY3N2QzIHB5M2sKKzY1MzIwIDBmYmRkYzA0YWVlMTU5YTRmY2UyMTYyYmRkYjIxNWNhNjYyMTZiZDggbGVnYWN5LXRydW5rCis2NTMyMSA1ZGI0MzI4NGVhN2FhYzI2YTE0N2M3MzhlNWEwODA5ODczNjAwMDIzIGxlZ2FjeS10cnVuaworNjUzMjIgMWVjMzhiNzA3Y2Q2YjE0OWU1Nzk4N2YyY2Q4M2MzOGJhODJkNGQ2NCBweTNrCis2NTMyMyA2ZjIzMmZjZmI2NTc2YzU1ZDRmYWQ3NTRjNThmMDlhODdiYjcwNmZmIGxlZ2FjeS10cnVuaworNjUzMjQgYmU3NTIxYWY4NDVhMGU4NGM2YzUwODk0MTdlNWIwMzZmYzUyOWM1OCBweTNrCis2NTMyNiAzNDc2MDNmNzk0ZDExYjU0YjA5OTMzYjNkN2U5NzZkMzZkNmMxMzFkIGxlZ2FjeS10cnVuaworNjUzMjcgMWRlNzE4YTMxMDA0ZTE5NjdlNWNkNTEzMmNkNGVkNmJkNjU2NGRlMSBweTNrCis2NTMyOCA0Y2ViYjVjODRkN2NmYmE4NmY4MWY2MDQ3Njg0YjhlOWY2ZTgwNGNjIGxlZ2FjeS10cnVuaworNjUzMjkgMDM3ODE4Y2FmYzM5MzU5OTYwNmVhMGY5YzE1ZWY1OTYwOTlmNDhhNSBweTNrCis2NTMzMCA0YzExZmMzYjMzYTIzM2ZiNGMyNmZmMzIzZjI2YzdlNWNkOTE5NDVhIHB5M2sKKzY1MzMxIDM1YjFhMjA0NzBkYjA3OWMwNDU3YzZhNGFiN2Q5NzM2NzJlNjllMTAgcHkzaworNjUzMzIgYjM5MDFjNTY2MGY3MWQwYTcyYzBmMTQ1NTcwN2IxNGIwMjQ1OTE0YiBweTNrCis2NTMzMyAxODczODhjMTE1MDUwYzk5MTA0MDgxNzVkMmY1ZjIyNGE5MTYwYmIzIHJlbGVhc2UyNC1tYWludAorNjUzMzQgMGFhZmQxYWU1MTIwOGExYjZjYzMxMjBiZWFhYjNhZGRmNTdjNDIzYiByZWxlYXNlMjUtbWFpbnQKKzY1MzM1IGM0ZDI0ZmM4YmE4YTJlYzY1YjJhNDNkODhhM2I1MmQ1MDBkYzQyMjMgbGVnYWN5LXRydW5rCis2NTMzNyAxM2IyZTExZjNjZjViZDc0MDZkYWZhNDhkZjFmY2JjMzdkMGQwZDIyIHB5M2sKKzY1MzM4IGZlYzk4NWNiZjUzZmFiMDU4Mzc5OTUzNzAwMTI0NjRkOTcwNjk4NDcgcHkzaworNjUzMzkgNDU1MDE0NGIxNTYwNjZmZmZjOGZhNmRlODg0ODBjMzE1NTQ5NmYwMCBsZWdhY3ktdHJ1bmsKKzY1MzQwIDU0MjhmN2ZhMTcxY2YxYmE5NjJjOGQ5YjY0ZDIyNGYzYWI5MzYxOTcgbGVnYWN5LXRydW5rCis2NTM0MSBkZTc1ZTcyODBiN2FhNjE4Y2NhNWRiZjcxYmVjMmUyZjk4MDVmN2JmIHB5M2sKKzY1MzQyIGE5NGYxMzZiNTI4MzgyYzM5NDI4Mzg1MTMyM2M4NTc4YzMwMDI5MGQgbGVnYWN5LXRydW5rCis2NTM0MyA2MzFjZDlhZTVjOGUyMmUyM2I3YWUyZmY2ZWU1MmZhZTU0ZDJmMTk2IHB5M2sKKzY1MzQ0IDRmZWNjOWI5OWQ5ODUyMmRmMmRmNTYzOTg3Zjc3MTVjOTJhZmM5YzUgcHkzaworNjUzNDUgYTQ3NmVmNWVlYmFkYmU0Mjk3NmUzM2VkODhkNWE1NThlMDZkOWNhMyBweTNrCis2NTM0NiBjNTllOTBkOGQxYzcwODIxY2UxMjI0ZTVmMjVhNzVhYzI0ZGI0OWI2IGxlZ2FjeS10cnVuaworNjUzNDcgM2MxNTVkNzgxM2NjMTc1Y2I5MTc5YTFiMmY0YmQxNDM3OWVkMmQ4NCBweTNrCis2NTM0OSBjMmI1YTBhYjMwNzA2Mzg2YjlmM2M5M2E4M2RlOTQ3NGVlNDYyNmI2IGxlZ2FjeS10cnVuaworNjUzNTAgNzBkNDBmOWFkMWQ3YWNkMjc4NGUzNjc1NmM0Yjg2OWRiN2NjMzM4MSBweTNrCis2NTM1MSAwZDJkMjZmZmUyMGViMjQ4YWMzNmUwMjgwMTQ5YjQ5MzEwZjdmNzljIGxlZ2FjeS10cnVuaworNjUzNTIgMTQ4MDIwYjVjNTMxMmUzOTgwM2EwMWZiYTE2N2M0NTQ4ZGY0ZDMwYyBweTNrCis2NTM1MyAxMTQwNzc0ZjY5YTU3MmM5NWE0MjAxYjFjYTk0MzhmYjlkYzQ1ZjhjIGxlZ2FjeS10cnVuaworNjUzNTQgZjFmYzdkOTM1MDlkM2ZlZDIxOTAxMWFmNTQ5YTg0YTBmZTVjM2I1YiBweTNrCis2NTM1NSA1ZDJjZDk2YTE5NmJmZDIyYTQzODNjMDU2OGNhYzJjMzFiNzcxODUzIGxlZ2FjeS10cnVuaworNjUzNjUgZjEyMWE5NjNhYjY5NGRiYmYzNzU4Y2JkYWZmNDZhYjJlYzMxMDQ5OCBweTNrCis2NTM2NiBlZmY0Yzk0YzAyY2QxZTEyZjg4YjA1MWI0NWQ3MzgwZDA2ODM5ZjJmIGxlZ2FjeS10cnVuaworNjUzNjcgYzBkZjFjNjQ3N2JiOTI3N2FmMzQ5Mjk4ODI2YTI5MjVhNmE0MDk5NSBweTNrCis2NTM2OCA5NWJjMGNmMzEyMDNjZjg3NzJiNzM3ZDIwMWVjZjhkMTg0MTFiMzkzIGxlZ2FjeS10cnVuaworNjUzNjkgY2MzNzE1NzBlMTQxMzIzZmEwNDdkMzhlNzJlMjc2NTA0MjE2YzZlMSBweTNrCis2NTM3MCAxMzgxNzc0MmE3ODEwYmExNDM2ZDljODAzYzc2NDNlNjhjODU5YTExIHB5M2sKKzY1MzcxIDE5YjZjNjM1ZjVjMWQzMzAwZTY5MTM4MzU3YTk4ZmFiMzZhZjhmNDAgcHkzaworNjUzNzYgMTUyMmYzZDViZTZlN2E5NDY5NzM0M2E1MTJlZjhiM2M3NDAxM2RjYiBsZWdhY3ktdHJ1bmsKKzY1Mzc4IGI4YThkMTEzMDc2ZmI5NDU4NGY5MTlhOTUxYzVkMzNlNzQ4YmExMDYgbGVnYWN5LXRydW5rCis2NTM3OSA0YjcyYzdmNjMwNzc0NWY3ODg2YmNmM2VmY2E5OWQ4ODc3MzIyMjk4IGxlZ2FjeS10cnVuaworNjUzODEgMTNlYmI0YjVkODlhYTg5YTA2NjE4NmNiZDE0Yzc3ZGQ1NTE3ZDkyZiBweTNrCis2NTM4MiA0NWJjZDk2ZTU2ZDFkNDIxZmFlNzZjNmM0YTMyN2M3ZDg2OGU0MDJjIGxlZ2FjeS10cnVuaworNjUzODMgMGFmZjNiZjBhMzQyNmYxMjQ0MTliODQwN2NhYzg4NjRmYmExYjUzNCBsZWdhY3ktdHJ1bmsKKzY1Mzg0IDY5MjJmODRhNzE1OGY5ZmM5MTU4YzRkNzRkMmY0YjJhN2RmNzEzM2QgcHkzaworNjUzODUgNmI3YzYxMDI3ZWIwNGZhMzcxOGU4N2RiNjc5Y2FlNTlmZGVkMTM3OCBsZWdhY3ktdHJ1bmsKKzY1Mzg2IDUyNzlkNzk2MTA5MzdhNWI0YzQ3NTAxMTk3ODEzYmU5NDNmN2QzYmIgbGVnYWN5LXRydW5rCis2NTM4NyA0YjFiYTUwZDNiZGY3YWRlMjU1YmM0ZGY3OTI1NTI3OTI5MTFhMjM0IGxlZ2FjeS10cnVuaworNjUzODggMTY2MGIzMzUzODIxMDJkYzZjYjM5MDUxNzIxNTBhYTRlNTcyNzgwMyBweTNrCis2NTM4OSBmOGQyYTMxODVkOWFhZmYzYzJmYTEyYjg3OTdkYjI0YzcyOWJiNGM3IHB5M2sKKzY1MzkwIDRmNDZmM2Y3MjMxYmZmODljMzk4MjlkOGQ3Y2Q1OTM0Mzk5NmUyZDcgcHkzaworNjUzOTEgZDIxYzBhMmI2YjExYTRlOWY2OWI0MzJkOGM1YmJlZmQ5ODMxM2VlNCBsZWdhY3ktdHJ1bmsKKzY1MzkyIDAwMThiMThmNWY0NjQwYTcyODc1NWU3NTc3NTUzZTlmZTE0MDBlZWIgcHkzaworNjUzOTMgZjBiZDM3ZWE2OTQwNWNiNDM1ZWUxY2ExYmJlZWUzM2RjYTE2NGVlYiBsZWdhY3ktdHJ1bmsKKzY1Mzk0IGI4OTQ1ZDhmMDBlYTI1MzAzZjg3YWRhYjRkYmYzY2Y0NjRhZTcwMTMgcHkzaworNjUzOTUgYTdiZjUwM2M4NTdlOWM3ZWYyM2FmZDhiNzFjNTFkMTdkYzYyN2M0NSBsZWdhY3ktdHJ1bmsKKzY1Mzk2IGU4Nzk2YjU1ZjgxYjA4ZDA1ZjJmNzJjNjE0ZjgxYmEyNWY0OGMwMzcgcHkzaworNjUzOTkgYmE4NGMxZTNkZDYwY2VmYjNjYTc2MWYyYjFiMWM4NzcwZDY3ODJhOCBsZWdhY3ktdHJ1bmsKKzY1NDAwIDRhNGMyMGEyMTY3YmIxODNlNTdhODRlNjFjNTkxYzUwOWM5OWI4NmQgcmVsZWFzZTI1LW1haW50Cis2NTQwMSBkNTg3YWE1ZTgyNGQ2NTE5YmNkYTViM2FjYzRmMDlmZGIwYjVhZWYzIHB5M2sKKzY1NDAyIGZlZGRhZjIxYzJhNDlmN2RmOTQ3NzVlNmZlY2VkY2YzN2QwYTc3ZDMgbGVnYWN5LXRydW5rCis2NTQwMyA3NDc1YjBmY2M1ZmYyYmMzZGUzMGU1Mzc3YzcyNWYwYmFiNTRlMjczIHB5M2sKKzY1NDA0IDY1NDQyNTQ2MTczZWE0MjgyMDI0MTdlODRkYzY2OWIxZTQyY2RjZDAgcHkzaworNjU0MTIgNzYzZmYxYmE5MWM3ZjJkM2U1OWIzMzE5ZGQ4YjA3Yzk3MTdjNzI4ZiBweTNrCis2NTQyMCBiZjUwMDg1ZmJjZDMyZDFjNDJkNDNlNmVjMzc2OTA2MzFlMDQwYWMzIHB5M2sKKzY1NDIyIDk3NjA3ZmNiN2IyNjE5NjFlYjY3OTM2MWNjNTcxOTk1NWVjZjBhNGEgbGVnYWN5LXRydW5rCis2NTQyMyBjYzQzYjk5OGY1YjUxODNjYjFiMTIyODRiNWM4YWRhNWMxMzQ1NzFkIGxlZ2FjeS10cnVuaworNjU0MjQgNDM3ZGRiYmNkZDI5NGI3MzVlNjkwYTQ1MDJmNDNjY2EyMGY0OTBjOCBweTNrCis2NTQyNSA0ZTZhMGFlMWE4ZTdhYWU5Njg0NzQ0ZjZhMmIyNDEwMDkwM2FhY2QwIGxlZ2FjeS10cnVuaworNjU0MjYgNzRjYzkzMmFkOGRiNjg2YjdiMGQwOGE3YTNlYjliMWU2MzRkMjI3YSBweTNrCis2NTQzMCA4ZjMyYjEzMjY5YjRiMWFlOTQ3ZGZlODA1NmU5ZmJlMDJkOGQ4ZjlkIGxlZ2FjeS10cnVuaworNjU0MzEgYmQ1MWNmNzE3NjI0NWIwZWViZjZkZGQ2ODE4ZjZmNTNiYjAzZDk0NyBweTNrCis2NTQzMiBlMDA3YWY3OWY2N2M2YTUxNzBhNWIyNmY5OTE2ODZkOWY1Y2UzOWJlIHB5M2sKKzY1NDMzIDFkYjQ4Mzk0ODEwNjc4OTM2MzgxY2FjYWYzMmEzMzhlMTZkNDM1YTIgcHkzaworNjU0MzcgM2U0NGRlYmMyYmM5MGE3NmIxZjYxODNkZmU5MjQxZmMxOTUxOGIyZCBsZWdhY3ktdHJ1bmsKKzY1NDM4IGRmNWIzOTRkMWUyNDM5Mjk1YTYyMDkwZTY5MjM2NTk0ZjU2ZTEyMDEgbGVnYWN5LXRydW5rCis2NTQzOSBlOTM0OTU2ZGRjZTM3MmMxZTIxZDc1N2NjNDBkZDA2MGIwMTgzZDE4IHB5M2sKKzY1NDQwIDRlNDVkMGNmYWY3MWI1MmJkMTM5MWM2MjkwZGUxM2NmZmZiYWIzMjYgbGVnYWN5LXRydW5rCis2NTQ0MSA4YzQ5YTNlOTBmNDBhODRmYjgzNDkzZGMzNWQxOTg2ZTI5YjZhMjY4IHB5M2sKKzY1NDQyIDE4MDNkZTVhZTBkYzM3MGRmMjM3MjI3NmQ1YjhmZmM0NmEwNzdlNDYgbGVnYWN5LXRydW5rCis2NTQ0MyAzM2RhYWU2MzM5ZWUzYTI3MGEyOTJkYjY3YzUxNjcyM2MwMzNhMWVmIHB5M2sKKzY1NDQ0IDk4NmNiZGFmMTU0ZmMyNzNiMzcyYmU5ODZjNDkxYTQ2N2Y0MTM2NDEgbGVnYWN5LXRydW5rCis2NTQ0NSA1ZjNlZjY0MDBhOTY3NjJlNjBjMjdlZDUxYTA1NWU2ZDc5MTFkYzdmIHB5M2sKKzY1NDQ2IDI1MTI4MjU4MDA0MWEyODA2ODcyODdkODRhOTliZmZjM2YyM2ZiMzQgbGVnYWN5LXRydW5rCis2NTQ0NyAwYzZiNmJkODVhY2FkMzczNzFiOTlmYWEzYzgxZmNlZDk3ODQ4NzVmIHB5M2sKKzY1NDQ5IDFmMjJkZTkzZGFmOGUzM2NmZDAwYzdhZTBlNTMzMDU3YWY3OGU4ZjggbGVnYWN5LXRydW5rCis2NTQ1MCA4MmQ0ZDZkZWUwMzQ3NWUzZTZhZmFhNGIwMzg3YjgzNWNkZjYxZWRlIHB5M2sKKzY1NDUxIGQ0ZGI1ZGVkNzZjZTFmYzE4YzRkY2MxNDY2MTY0ZDhhNDQ5MDMxZjUgbGVnYWN5LXRydW5rCis2NTQ1MiBkN2JhZTdiZDM5ZDZmMjMwNjIxNTAwZDcyZDRlODZhNzliMzQ4MDQ1IHB5M2sKKzY1NDUzIDJlOGNkZWUzNGQ5NzdlZWFiOGEzOWEzYTgyOWI1MGEyZjBkMjhiZTMgbGVnYWN5LXRydW5rCis2NTQ1NCBlMzYyMGI3M2E3ZDE0ZjczM2FjNTJjNDYxOThiNzUyMjgzZDVlZjRhIHB5M2sKKzY1NDU1IDM1ZTdkYzk3N2E2M2MzNjQ0NzNmMmM0MWE4NjdmODBjZTIxZGQ3ODYgbGVnYWN5LXRydW5rCis2NTQ1NiA4OTcyY2U1NjI0YjRkOTE2MDdjYWZlYjIwMjM1Mjc5ZGYwOTY5N2M3IHB5M2sKKzY1NDU3IGM3N2FjOGJkZDNmZWI0YzdjZGE5NDZlNDkxMzYzNTdjMGE0MWYyNDEgbGVnYWN5LXRydW5rCis2NTQ1OCA0MzIyYWYxYjZkM2Q2YmQ1ZWViMDE2NmU2YmQ1ODNkZDE3ZmNlNjA0IHB5M2sKKzY1NDU5IDI4OGNhMWM3Mjg4ODA5NGI1OTMyYmZiMjc3Mzc0ODQ5NzViZjE1YTkgbGVnYWN5LXRydW5rCis2NTQ2MCBkYzg1MGRhMDRiZDU0NzIxNmUzMTQ3M2Y2ODUwMWZhZTIxMmM2MmVmIHJlbGVhc2UyNS1tYWludAorNjU0NjEgMTUwOGNlYTJjNmI1NmU1ODAyMjJmODI5ZmI1NjQzMDgzNDIxNDAzNiByZWxlYXNlMjUtbWFpbnQKKzY1NDYyIDU2YjNiMmNjZmQ2ODhkOGE1NGU1MTI5OGQwYWNiYTVmNjAyZWE1NGEgbGVnYWN5LXRydW5rCis2NTQ2MyA1NWUzMjU4MDk0ZjAzMmQzYTYwMGI1YjRjYjcwZGIwMjAzYjg5OGU3IHB5M2sKKzY1NDY0IGZkZjNiNmY0OTlkYWUxZWE5NDAxOTk0OTAxOWUzNjFhNzA4MmEwMmIgbGVnYWN5LXRydW5rCis2NTQ2NSBkYWRhOTRhNTMyOWYyZjgyOGQzZTc5NmMzODljMWNiNTUyNTY0YzI0IHB5M2sKKzY1NDY2IDFjMjRhMDlhY2I5N2M5NDA4Zjk3NjZjNzA4ZTg1ZmMyZjExODQyOGQgcmVsZWFzZTI1LW1haW50Cis2NTQ2NyAyMWYxNDYzODdhNjNjZmI1YzkyODhkN2JiNWM4YjMyMmJkYmUwY2VjIGxlZ2FjeS10cnVuaworNjU0NjggOWRjYjFkMjhlZmJiOGYzOWYzYTU0ZDI0NjExMDI4YTc1ZjY5MjA3YyBweTNrCis2NTQ2OSA4YmQ1NjUwMTkzYzYwODRlMzM2ODUwMGFmNDQxYzg3ODMyMzc5YTdjIGxlZ2FjeS10cnVuaworNjU0NzIgNDBiZTM3ZTY5MTU4ZjZmY2Y2ZjkyOGJmODg0M2U1ZDI3YWQzZDk1NyBsZWdhY3ktdHJ1bmsKKzY1NDc1IDY0MWVkZWU0ZmNiMTRmMWQ2M2NlM2JlM2NkYmYyMWYxNmMxMTJhZDcgcmVsZWFzZTI1LW1haW50Cis2NTQ3NiBjMjM1YmE3MGU1OTRiMTQwNjc4YjU1ZDQ5MzhmYjQxOGFjNDM1ODlhIGxlZ2FjeS10cnVuaworNjU0NzcgZGYwYWMwNmNkZGNjM2U4YjVjMTBhNmRkYzBhZjlhYzIxMjFiMjhmZCBsZWdhY3ktdHJ1bmsKKzY1NDc4IDUxMzQwNmEzN2UzODUzNmZlZmY1ZGU0Mzk2NjQ2NGY0N2MxZjM0MTcgcHkzaworNjU0NzkgYmNmNDBjODE4OTFlMTBmOWQwZTM4MTU2YWE3YzdmODJmZWRmYmU2YyBweTNrCis2NTQ4MCBhYjRjOWMzODRkMzE4ODAyMzc0ZjA5MDFkYTIxNDVjYTQ3Y2ZjZGFkIGxlZ2FjeS10cnVuaworNjU0ODEgYThhODIzMmNiNTQxOWEyYmJkZDU4NTMwNGEzNzAzMWZiYjY3MTg5YiBsZWdhY3ktdHJ1bmsKKzY1NDgyIDU5ZjRmOTk0NzMwZmE3OWE4MTliODcyMDg1NWZkM2M3NGFjMGJhZTEgcHkzaworNjU0ODcgNDk0MTFkN2RjMjU3NDczYjA4ZGQ2MDQzNzVlODg4Y2RmNDIwMTFiNSBsZWdhY3ktdHJ1bmsKKzY1NDg4IGVhODNmZWU1NzQyMjMwYjk2NjQwYWNmMGJiMGI4ZWExN2RmZTdhZDMgbGVnYWN5LXRydW5rCis2NTQ5MCA2Yzg4ZGUzYzRkNGRkODUyYTZjNGE1NzIwNjA4OTQyZGUwZTUzNTdkIHB5M2sKKzY1NTAyIDIxNzQ1NTYzZTY4MGUwZDRjZmYxZGEzYzlmNWMzMzU2MTk5YjkyNzMgbGVnYWN5LXRydW5rCis2NTUwNiA2YmMzY2ZlMDk4Y2U0NTc4ZmIwZTcyMmQyNDlkZTliZTc2M2IwNjYyIGxlZ2FjeS10cnVuaworNjU1MDcgNTFmNWM4ZTg4NWNhOGM0OTgzZjEzYjA0NTljMzhhZTgxNDM2NDI5MCBweTNrCis2NTUwOCA5M2JjYzkyMDFlZTA3ZjczNzI0ZDU3MGJkMWMzNjM2ODlmMmQxODk1IGxlZ2FjeS10cnVuaworNjU1MDkgZmFjZDgxOTcyNTIzYjk2MzhlOWMzODkzYzJkZjA3Nzg2MzI3NWM3YyBweTNrCis2NTUxMCA0ZDg0MjdkMjVmODRlMWNjOTdkNjAzMGU0YjY1YmE5YjQ2ZWU2NjcxIGxlZ2FjeS10cnVuaworNjU1MTEgY2ZmODJiOTkwYTIyOThhMjkyY2U1MDEwNzgzZTY0Mjg3NDgzNDI0NyBweTNrCis2NTUxMiA0N2NkNDUxNjg2M2VlYTdiYmRkNjRhZmZmZDZlNDJjN2FjZDc4MjNlIGxlZ2FjeS10cnVuaworNjU1MTMgZTliNmU0NDg4ODcxZTlkMmQxY2M1NGFjMDQyZTVmZDA2OWI0MmVhOCBweTNrCis2NTUxNCA5NzlmMGE4OTkwM2YyOTM1ODJiM2VjZWU4YzYzZjI3MjJiMWI3MWY4IGxlZ2FjeS10cnVuaworNjU1MTUgNTdiOGM3NzhkYTA3MzRjMzE5MGRhYmY4MzIyMDkxNDMwMzc4N2U0ZCBweTNrCis2NTUxNiBmNzg0NmE3MWUzOGEyMTEwODYyODYzNjE0MzAyOGI4ZjI2M2MyNGEzIGxlZ2FjeS10cnVuaworNjU1MTcgM2QwODNlNjkyNjVlZjBjYzI3NTBhMmY3NzcxMjlhY2RjNjVlMzE3MSBweTNrCis2NTUxOCA2YzZhMDMwNTY3ZGQwNjMxMmFiZTQ2ZGNmY2NlMWQzM2M5NDdjOTI3IGxlZ2FjeS10cnVuaworNjU1MTkgY2YzMzFmZWYzMjkzYzcyMDBlOTdhZmE2ODUwOTZhZmU5MGFkZDBhNSBsZWdhY3ktdHJ1bmsKKzY1NTIwIDU5NGM5OWMwZjA3ODRhMmY2MDQwMDJlZjFlYTMyMTZlMGZhMzE0OTAgcHkzaworNjU1MjIgZGYyNzdlNjQyZTU4MDBiMzk0ZTI2ODhjZDZmN2QyZGI4OWUzMTkyOSBsZWdhY3ktdHJ1bmsKKzY1NTIzIDBkYTMwMmY3ZmU5NDMyYzczM2Q5MWZiMDhhMDRhMzkzN2Y1ZmRlMDkgcHkzaworNjU1MjQgMzgxYTcxZGYwNjBlNGY1OTMxOTM1NmVhN2M2ZDdmNjgxN2E3N2UyMCBsZWdhY3ktdHJ1bmsKKzY1NTI1IGZmYzFkOGY4YzVhZDAyNWI2ZTI5ZDBkYjhmZDg2Y2MyMGYyYzAyNmUgcHkzaworNjU1MjggOWZhYTg3OTAyMTE0MzRmNDU0NjU0YzBiYjY2YzkxMGUwNzY2ZTJjMyBsZWdhY3ktdHJ1bmsKKzY1NTM2IDY4ZGY4NDJkNjMzMDg0ZmRkNWM5ZTZiZmNlNTVjMmYyMTczZTU4NGIgbGVnYWN5LXRydW5rCis2NTUzOSA1Yjc3NGZlMDRjN2UxNzdlM2Q4YjNiMjMxNWUwYzgyMGNkMjgwYmIxIGxlZ2FjeS10cnVuaworNjU1NDMgYjY1NGQxNGNiOWQ5ZWUwZDQ3Y2YyM2U2YzE2NGM4ZjBjZWFlOTg3MiBsZWdhY3ktdHJ1bmsKKzY1NTQ0IGU1ZmMzZTE5OGRkYWMxYzdjNzljNTdhZTk5YTA3ZWFjOGMzY2IyYmQgbGVnYWN5LXRydW5rCis2NTU0NSAxNjM1ODkxYjE4ZTgxYWQ2ZmM5MTdjNmE0NDBlMGI2YWVkYzdkMjQ4IHB5M2sKKzY1NTU4IDIzNjYzNzM5MDQ1N2U2YjMxODFlYTZiNjJiNzY1ZjQ4YWE5MmM4M2EgbGVnYWN5LXRydW5rCis2NTU1OSA3OWVhMzQwZDFhNTlkYWZlMGM1ZDY0MTlkYWUwZGUxZGU5NWI4MWU3IHB5M2sKKzY1NTYwIDgzYTcyMTkzNjRiMTM2NzE4ODNkM2VmOTRhMDJjN2EwYTVlMTE4MDYgcHkzaworNjU1NjEgNTQ5MTA4ZTlhMGEzMjIzMTdiNTI4OTJkMzQyOWEwMGNmNWEwNTQ4NSBsZWdhY3ktdHJ1bmsKKzY1NTYyIDljY2MxNjgyZTE5Yjg3ODlmNDAyZDc3YWIxZmViNjA4MDVlM2Q0ODIgbGVnYWN5LXRydW5rCis2NTU2MyA1M2FkZTllNjhiNTYyZTMzYjRlNThlMzc1MzJkYWRkYjRkN2ExNmRkIGxlZ2FjeS10cnVuaworNjU1NjQgMTIzNzNmYTY4MDRlNGI5ZjYxZTBjMzU2NWU5N2ZhMWM4ZWIyNDMxOCBweTNrCis2NTU2NSAwM2RhZTAzN2IyYjcyNzU1NWQyOGRjMGQ2Zjc2Y2ZhOTY5MzNjMzEwIGxlZ2FjeS10cnVuaworNjU1NzggZjFmYzk0NzcyMmYyOWE0M2NiMjk3ZDQ5MTg2MTNjMmZlN2U2ZDkyYiBsZWdhY3ktdHJ1bmsKKzY1NTgwIDA0MmQxNmEwNTAxNjkxMWJmMDliY2M4ODE3YzhiMmFjZTkxY2ZhN2IgcHkzaworNjU1ODEgYzhjOWU3OGZjMDgyMzgwMWE3MzdiZjJjYjBjMDNkNTIwMDE5MzE4ZiBsZWdhY3ktdHJ1bmsKKzY1NTgyIDg1YjY3ZmI1NjcyYjk5ZjMxMjlkZTAzM2YwYzYwMWZlYjZkNjVmYTcgcHkzaworNjU1ODMgY2ZhZDNmN2Y1ZTYzOGVjMWRkODQ3MTY0ZjFiNzk1MDdjNjMwN2U3ZiBweTNrCis2NTU4NCAwYmY2YzQyYWI0ZTQyMzg1NmI4OTQ2MzhlYWM5MzE3OGNkM2E5NzZjIGxlZ2FjeS10cnVuaworNjU1ODUgMmIzZDQyZWZmZTViZTE2OWE3OWQ5MTU5YmY2NzQwYjE0NWQyYTY4ZiBweTNrCis2NTU4NiA2NDE2ZTYwNDRhMzAxNjc2ZjAyYTZhNWI5MmVmZGI4OWYyNjk4ZmYyIGxlZ2FjeS10cnVuaworNjU1ODcgYTZkNmMyZmFkMjIwMGVjZjlmMjY4NDM3ODUwMjM4OTdlMTIyMDUyNCBweTNrCis2NTU4OCA2NTkwMWZmZmZjNmFiZTVhMzBiZGQxY2QwMzEwOGU5YTc1YmM0MzBkIGxlZ2FjeS10cnVuaworNjU1ODkgNDg3ZTBkOWEzODFhODAwMDA2YWY3Njc0MjgxMGMxOTY0MWRlZTg0NCBweTNrCis2NTU5MSBlNmZlODNjMmUyNjIwNmY0YWFlNjJjMjMzNmU1OWZkZDg0Y2U0ZDk2IGxlZ2FjeS10cnVuaworNjU1OTIgYjJjNTA1ZDRhMjAzZDgyZDgwMmU1ZDg0NzRlZDYyZTMzM2Q5MzQ0MyBweTNrCis2NTU5MyBmZDdiOTNhMDFjMDRiN2U0ZWQxZDk3MzVkZTRhZjFmNzc2OGExOTY5IHB5M2sKKzY1NTk0IDk0OWI5YTJiOTg2NzYxMDk2MjcwZTEwZjVlNmFhMDJkNDM1YjM3ODYgcHkzaworNjU1OTUgZTJjNzA2Zjk5MDZjMzg1Yjk3OTM2ZWEwNTk2Yzg1MjY5MmZhMjhmZSBweTNrCis2NTYwMSA3MjI0ZmZmOTg4MjNiYzk4MzAwNzk5YjNjZjljNzY2ZTc2ZDY1NjVkIGxlZ2FjeS10cnVuaworNjU2MDUgNDc5Njc2OTBiNTg1NWVjOWNhMzMxYWViMjMxZWNlNDE4YTc1YTEzZSBsZWdhY3ktdHJ1bmsKKzY1NjA2IGFhZDU4MDlmYzQxOTU1YjE0MTFkYTc3NzBkOGY2NzgwYjY1Zjg1ZTcgbGVnYWN5LXRydW5rCis2NTYwNyBlZTBhNTJjOTgyZTVmNmFhNDVkZWYwOGEzY2NlOGJiNjBmMGZlMmZmIHB5M2sKKzY1NjA4IDYzYWVhOTljOTcxYTY3ZDhlYzBiZDljZjlkOWRmNjdjNzEwMmJkZmMgbGVnYWN5LXRydW5rCis2NTYwOSBkNjE1YWE5ZmRmMzYxMDQ4ZGUyZGIxNGZmMzAzMjk3YjBkMmQ3YTdjIGxlZ2FjeS10cnVuaworNjU2MTAgNmQ4ZDkyMGNkOTMyNDBhNDdjZDBiMjI2ZGI4MjE0NzczZGJjOGU2YSBsZWdhY3ktdHJ1bmsKKzY1NjExIDFhMTE3MTdhMTU0YjRkZjIzMDVkYzNiNGY5YmJlYjQ0ZWYzYThiNTIgcHkzaworNjU2MTIgZDM1Mjk2NDRjNjgyM2VjNGZhYzdkMWI4YTE3NDkwZTI4ODc4NjYwZSBweTNrCis2NTYxMyAzODhhNGJlN2Q2NzlhMTVmMWYyNTg2ZDgwMWNmODMxNjUyYTlmMWVkIGxlZ2FjeS10cnVuaworNjU2MTQgOTlmOWJlYTkwOWI1NTlhNzJmNDRjZTQ5MTE3NGRiZDg1ZjE0MDZhZSBweTNrCis2NTYxNSBiM2FiZmYxN2UyZGQxNzRkNDdmNTA5YTM4NTVjNTgxMDVkYWMwMTExIGxlZ2FjeS10cnVuaworNjU2MTYgYWNiOThkYmIxYjA0ZmVlMzUwOGQzMWJkMGM2NWJjMzIxMTA2ZGNiZSBweTNrCis2NTYxNyBiYzZhMzU3MmJjODk2ZDNiMTdmZTRjOWVlYjY0NzY3MTQ5Njc2OTczIGxlZ2FjeS10cnVuaworNjU2MTggOWY4NDMzOTZkZjg5OGRhZWIzNjAxMmIyMjk4YTllZWVlMjRkMGI3NCBweTNrCis2NTYxOSAzMDEzNWI2ZTM4ZmRhZjczMjIyMmUwOTI0YjIzOThhMDRiNWI3ZTU2IGxlZ2FjeS10cnVuaworNjU2MjAgMzNjZDZjNWQxYTA0YjFmOGQzODE5MTJkNGExY2RlODZkOTAzYWFkOSBweTNrCis2NTYyMiA1YTE1YTcwNDRlN2Q4ZDZiYThjMmE5YzMwM2EwNzE2MjhjYWY0ZjFmIGxlZ2FjeS10cnVuaworNjU2MjQgYWM4MTAzMzQxYjgwZTkwMjA1Y2RmYjRiMDZjZGQxYWI5NTc3ODQxYyByZWxlYXNlMjUtbWFpbnQKKzY1NjI2IDA1NGRjMTExYjFkOWMxMWE3MGQ3M2JlNjNkNzYzZDZmMzdhODFhY2YgcHkzaworNjU2MjcgNmU0ZjQ3YTY5ZWZhNzU0MjI3NGVlYWI2NDJhY2JjOTdhZWE0YTAwOCBweTNrCis2NTYzNyA2OTQ4MTRkN2IxMDQzYzEzNTBlYjQ4ZTNjYTNlZWIxNzFiNjAxYmY3IGxlZ2FjeS10cnVuaworNjU2MzggMGI2NzFiY2U2OTRlNDg5NzgyOTY0MWFlZWQ2MGU0OGZlZTRlNzBkZCByZWxlYXNlMjUtbWFpbnQKKzY1NjM5IGNlNTlkYWMzZmNhMjRjYjZhM2RlYmM4ODNkMmE3YTRjNWJkMzUwYTUgbGVnYWN5LXRydW5rCis2NTY0MSBjZjY5ODVjYjZkMTU2ZGRiYWNiMDE4ZDlhMDdlYjc4ZTFkNGMwMjgxIGxlZ2FjeS10cnVuaworNjU2NDIgNzUyN2RhMmIwNWU4YTk4ODM2ZDM5YjcwMjk5MTc4NzQyZTg5NjNjYyBsZWdhY3ktdHJ1bmsKKzY1NjQzIGQyMWQ4Y2JlNmJkNGRkNzQwYWUzNjkyY2I3NWFiYzVjNTZiNmYzMTUgcHkzaworNjU2NDQgMGFhZTcyZjhkZGE5MDQ5OTNkN2U4YmZjYzE2NDE2M2UyZWI0OGJiZSBsZWdhY3ktdHJ1bmsKKzY1NjQ1IDI5ZDkzNmE0Zjg4NTg4NmZkMDc1ZTA0NjZhNjkzOTAxM2FkZWQ3ODMgbGVnYWN5LXRydW5rCis2NTY0NyBlYmVhYTY1MzZkMzI4YTMxODgzZTQzMzc5NWNmMzc3ZGVhNjc1ZmM0IHB5M2sKKzY1NjQ4IDc3NzlhZjM4OGFlYzFhM2UwMDIzMjI1MjM3ZDllMGQxY2Y1NWJlYjQgcHkzaworNjU2NDkgZWY0MWRhZTMwZjM1ZDM2ZWQ0N2U5MmRmZGU4OTNmMzExNDMwNDNjZiByZWxlYXNlMjUtbWFpbnQKKzY1NjUwIGVlZmU0NDUwZjc3M2YyY2ZhMWY0NWQ0OTQzOTQxNzIyNzJhNzZhZjYgcmVsZWFzZTI1LW1haW50Cis2NTY1MSBkZDdlMmQ2OGI2ZGRkZjE2MDg5OTY3NDI5OGFlODA3Y2I5YTI0M2IxIHJlbGVhc2UyNS1tYWludAorNjU2NTIgYTMzOTNlNTgxYjE1Yjg0ZjkxOWNlMjhlZjFhYjE4Yjc3NTg3NDBiNyBsZWdhY3ktdHJ1bmsKKzY1NjUzIGIyMTlkNTU0MDRlNzZhYTY2NGUyYjk4NzM3MDU4MTMxZjBjYzgwZmUgbGVnYWN5LXRydW5rCis2NTY1NCBiOGM0YmYzOTM3OTRlOWIxZTc3Mzc4OGIwN2I5NDNhOTQ3YTk2NzVmIGxlZ2FjeS10cnVuaworNjU2NTUgNzlmYTNlMGMwOTg4OWFhY2JhYTAwODJiNjJkNzY0NGY3OWMyZGU4MSBsZWdhY3ktdHJ1bmsKKzY1NjU2IDNjOGVmMzQ2NjkyMzcxMjM4ZDEwMDI1NTZhYjUyMDlmYmI0YmNmNjMgcHkzaworNjU2NTcgNzAxNTE2NTU1MzkzNzM2ZjljNjk5ZWMzZTZjZTgyMzhlZGE5ZTdhZSBweTNrCis2NTY1OCBmMDQ3MjUzM2JmYzk4OTA2MzVmODkyODQ0Nzc3ZDczYjg3MmI1MmYzIGxlZ2FjeS10cnVuaworNjU2NTkgNzljMjkxNmZlNThlNDFlNzFjMjk3ODU2ODVjNmE5ZDhhNWNkMWYzMiBsZWdhY3ktdHJ1bmsKKzY1NjYxIGNkM2IwYjdmZDhlMWI3ZTJlM2NiM2VmMWNmZWM3MDJhNGRmMmQ2ZjQgcHkzaworNjU2NjIgMTMxZjg1YmI2OTMwMGM0OGU2ZDlmNmRhMjc1N2MyMjE0ZjhhMGM5NSByZWxlYXNlMjUtbWFpbnQKKzY1NjYzIGVjY2Q5NDI5NzAyZTRmNTczYmRmNDQyYjZmYmJiYThlOWM0ZTk0YTUgbGVnYWN5LXRydW5rCis2NTY2NCBkNzhlMjRiMTJmNjMzNmI4N2E1MTZiNTJkYjAzZGQwNDJiZDBmZWU4IHB5M2sKKzY1NjY1IDUwZmZmYzgwMDg0NTdhOWJlMGVjZWY4NjdhYWUxMjE0M2Y0MWU1MTkgbGVnYWN5LXRydW5rCis2NTY2NiA5ZDc4ZmQ2MGJmMmE1ZWFjZDc0NWFlMzRhZmM4NDYxNjhjYThjYTYyIHB5M2sKKzY1NjY3IDA2MDBmY2U2NzgzNTIyODhjZGI3Nzg3NjQzNzI4NDZlNGRlNzI1MTUgbGVnYWN5LXRydW5rCis2NTY2OCA0ZjFmZThmMTZlZjkzZDYzZjhmMzgxN2EyZTY5Y2U1ZmEwNWFmYmEzIGxlZ2FjeS10cnVuaworNjU2NjkgMDQ1NTZlMmE3OTg0Zjk0MTgxNjlkYTE1NmM0OTgxZDRiNmY5NTdmOCBweTNrCis2NTY3MCBmNjAyNmEzNzk4ZDQ0MDEzY2MwNzRmYmQ0YjExZTAyMzFkYjdlZDM1IHB5M2sKKzY1NjcxIDZiMTkwOGVhNmI1MzU0NGY2M2Q5ZWExZDVlYTBjOGRiYzUyYTRhOWUgcHkzaworNjU2NzIgNzBmMjc5NWQ2OTAyODI2MTUyZTkwYjhmYjU5ZWFlNTI5NzczYWM5YSBsZWdhY3ktdHJ1bmsKKzY1NjczIDYxZDUwZGE1ODE2YTM4NzIwYWI0NDkyZTAyNzAyY2VhNDE0OWFjZjAgcHkzaworNjU2NzQgZjEyNjBmNDMxMWVlNzhjODUxMzI5M2MyY2FkNDMxYzJjMzg1NDY2NSBweTNrCis2NTY3NiBhZGUzM2UxM2VjNjkzMDY2YzZkZDY3ZjkxYTUyZDUxZWU5NzhmNGNhIHB5M2sKKzY1Njc3IGU4NTA5YWM1MDFmMzI0ZDg1Nzc1ZTQwNGYwMWJkMmNmNDIzMWFlYjcgbGVnYWN5LXRydW5rCis2NTY3OCBiNzU2MjFhNDIwZWNiMjhlOTIzOTAwYTQwNzFlMDRkMTk5NmJmNzkwIGxlZ2FjeS10cnVuaworNjU2NzkgYWY3Mzg4YWQzMTY0ZWI3NGRkZGQ5ODUxMGMzMDBlMDUxZDQ0NWVjOCBsZWdhY3ktdHJ1bmsKKzY1NjgwIDI5M2RmODE1M2Y2MTg1OGVhY2JjYjlhMmM4YzgwNTA1M2VkOGM2ODMgcHkzaworNjU2ODEgZjhhMzQ2ZmNkMDQxOTYzMjFhYzZiMzczN2NjOWZiNzg3NzE4OWE1ZSBsZWdhY3ktdHJ1bmsKKzY1NjgyIDYzM2ZiMDI2MGFiMzIyNTQ0M2ZkZWUyZWNhY2Y2ZjgwODlhMTE0ZTMgbGVnYWN5LXRydW5rCis2NTY4MyAzNjUwYjFjZTRiZDg0NjQxMGRhNjhiZjRjZDQyYmExN2M0YzNmMWYwIGxlZ2FjeS10cnVuaworNjU2ODQgNjBlMGUwOTc2M2FiNjBkNDQwNmMwYmE5NWVjYzU3MzZjYjYxNmE2OCBsZWdhY3ktdHJ1bmsKKzY1Njg1IDEzNmY2MWI3NGU4ZmU5ZDFiNjJmZjJmNWE0Nzk0NjMxYzg5MGMyYjAgcHkzaworNjU2ODYgNjc5Mzg1NzVhZmM2Y2M2Y2U2ODU3ZmM1ZDU4NTYyMWQ3NWJjNzkxMCBsZWdhY3ktdHJ1bmsKKzY1Njg3IDU0YTJkYjhmZGM2MjZkZTk0ZTM0YWNlNGM0MGM3ODUwY2UwYzFhYmUgcHkzaworNjU2ODggMGE0MzM3NmJhYTZiZjJhOTA3ZjAyZDY5N2NmZTVjODBhOTVkMTY3NCBweTNrCis2NTY4OSBlOTYxY2MwMTQ2MTkxNDFkMjk2MjM4ZWI1MGFiNTRhNGJhODQwMzdlIHB5M2sKKzY1NjkwIGM2ZjBkZTVmMmM2ODUyM2Q2YjIyMmRiNjhjZjFjNzRmNWJjZDdjNjggcHkzaworNjU2OTEgOTIzMzI4NmM3ZWQwZGM1ZTcyYjgzOGNiY2U2NDA0MGJmYWZmYmNkZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU2OTIgMWQ4MTcxZDY0NDYzZWQwMjRlYmMzYjYxZDRkZjg4YTZkNzQ2OWQ5ZiBweTNrCis2NTY5MyBjZGQ4OTg0MzNkNTg4ZTMwZGY1Yjk4NmFhMzQ1MjdmNjQ1YmEyODMzIGxlZ2FjeS10cnVuaworNjU2OTQgYzA1Nzk4OWU4N2ViOWRkZWExODE1MTlmZjk5M2E4ODkzODg3YzI1MCBweTNrCis2NTcwMCAxODAwNjJlMzM5NTY5ODBkNTViNjBmNDNiY2JkMDlmMTkyMzE0MzkwIGxlZ2FjeS10cnVuaworNjU3MDIgODE2M2RhZWU3ODVkNDBhM2Q3ZmI1NWFkMGQ5ZmRiMTQwZjEyYTc3ZSBsZWdhY3ktdHJ1bmsKKzY1NzAzIGY2MjdmODAyMDFkMzlmZTE1ZWY5YjJlZjZkZjEzZGJiYjA5ZWE2NGYgbGVnYWN5LXRydW5rCis2NTcwNCBlNjFkZWI2OTBlNzA4NDAyZDQ1MmVhNmNmZTU3ZTE0Y2MxMWVlMTQxIHB5M2sKKzY1NzA1IGEzZjk1MGQxNWMwODNmNTZhZGQxYWYzZGEwMmRjMTQyOWYwOGU4ODYgcHkzaworNjU3MDYgYzM3ZjRiMDM2MzdmMjI2NTgzOTM0OTMyZDg5NDAyZTA0ODA5ZDZkNCBsZWdhY3ktdHJ1bmsKKzY1NzA3IDcxMDE0Njg1ZTBlNWY1Yjk5ZTNjNzFkNzg4MjlmYTk0NjE2ZGMwM2MgbGVnYWN5LXRydW5rCis2NTcwOSA3ODBlMTcwMzg5MDI5OWFiYWFlMTA0MzZhYjIwOWQ1MjBlZWIwNWUzIHB5M2sKKzY1NzEwIDE3MDI4NzNmMjQ5MmYyMzA1MjVhN2Y5MDYxZGFhYjA0ZmZiYTg5MDEgbGVnYWN5LXRydW5rCis2NTcxMSBjNmQ3OGY4Njk0MDVkNzUxNGQ0Y2E3MmIxMzk4Nzk5NGQ1ZGM5YzQwIHB5M2sKKzY1NzEyIDFlZDg2Y2UwYmViMjY2YTI3ZDlmY2NlMmY1MjE1NmFiOTU5ZTg0ZGUgcHkzaworNjU3MTMgZWFkMzU4Y2U0ZDhhYjA5ZmYyNzM4YmZhOGZhYzIwMjZlODVjZjZiZCBsZWdhY3ktdHJ1bmsKKzY1NzE0IDg3ODg2MTUxNWIxNjBjOWFiYjY3ZmZiMzZiNzk0MDQyYTQ5YWM4ZWMgcHkzaworNjU3MTUgOWZiMTBmM2QwZjg3MzA5ZTk1NDhjZTE0NDZlZGE5ZmE1NTdmOWE4OSBsZWdhY3ktdHJ1bmsKKzY1NzE2IDg5NGI0YWNmZmZlNDBkMGJiNWNlZDY3NGZhMGE1OGM4NDRmNWNiOTEgbGVnYWN5LXRydW5rCis2NTcxNyA4YzBmODUxOTZlMzdjMmUxMWRkZmMzNjc5MjVkYmVmNGYzOWMwMzZkIHB5M2sKKzY1NzE5IDkxOGE5MThhOTk5NmM2MDkwNzBlZDA5ZDQzYTkyYTdmZWUxM2FmZDEgbGVnYWN5LXRydW5rCis2NTcyMCBiOTczZmNjZDAyYTViOTA3ODFlYzI3MzQ0OGJlNjA5YjMzMGE3NjQyIHB5M2sKKzY1NzIxIGNhNGM1MTM1ODYyOTc4OGMxN2RhMTUwYTg4MmNmMjBjOTQyOTdkODIgbGVnYWN5LXRydW5rCis2NTcyMiAxZDY1YzhmNWMwOGUxMzgzNTdkZGExYzI0OWYwYWEwYTMyNjRhYzA3IHB5M2sKKzY1NzIzIDVkZjU2Y2Q1NTE5YTU2OTQ3ZDA0Y2Y4ZWJkMjc1NzAyYWM5MDJhODUgcHkzaworNjU3MjQgMmQ3NmFmN2Y3NzAyNjhhOTJkYjQ0NDA3OGE4MmI5ZjYxZWMzYTM5MyBsZWdhY3ktdHJ1bmsKKzY1NzI2IGI2MGUwOTI4ZGIzZWM3YTEwNTI0MDNiYjI4MjA1ZGZiNGI1MWFmZTUgbGVnYWN5LXRydW5rCis2NTczMSBlMGM2NTkyMmI4Nzg3ZGY4YTQyOWU1MDcwZTkwZDYwYjc3OWM5NDlmIHB5M2sKKzY1NzMyIDlkZTY4YWQ4NjA3OGMzNjFhYjMwYTE4YjJjNzY3NmM5ZDU3Y2JhYjMgbGVnYWN5LXRydW5rCis2NTczMyBhZWZiOGU5ZDM4NDRmMWU1ZWE4YWQzNmNkYzljMTZkMzMwMGU3M2U3IGxlZ2FjeS10cnVuaworNjU3MzQgMzFjMzlhNjJkM2Y5NjU1YTcyZjgwODAwNDcxYmM1ZjU3MDUzYzA5MyBweTNrCis2NTczNSBlYmE3NDU3ZjRiYjY5M2I5MGMxMTI2YTcwNWI3NzY2MTI1NWNlNDYxIHB5M2sKKzY1NzM2IDE1M2U5ZTY3ODY0NjRhMTg0MzczZTllYzlhMGZlMDA3ZDlhNDBmYmYgbGVnYWN5LXRydW5rCis2NTczNyBmZjg1NjUzNTQ1ZjVjYTcwZjRmMGVmMmIyZDM0N2U3Y2Q1YWM3YmExIGxlZ2FjeS10cnVuaworNjU3MzggZWIxZTY0ZTUzNWU2YTE3MTI2ZWZkYjRlOTAyOGMwOTU3ZGU3NzZjNSBsZWdhY3ktdHJ1bmsKKzY1NzM5IDVhMzVjOTYzZTc3MTIyZWE2YzM0OWFjOWU1ODZkNjU2MTk5MTUzZDQgbGVnYWN5LXRydW5rCis2NTc0MCBkOTlmZTU2ZjlmZjhkNjQxYzE2MDNlNzYxYTY4YmQwZDlmZDhkZmQxIHB5M2sKKzY1NzQxIGFmNGU0MGY4OTNiZDk1MGQwNDcxMzFmY2YyNTAzZWY5MDEzYTIwYWUgbGVnYWN5LXRydW5rCis2NTc0MiAyYmUxN2QzNjhhOWM1YjhmZTYwOGJmZjg1ZTc2NGJiNzViYjYyNjc3IGxlZ2FjeS10cnVuaworNjU3NDMgZjI0ZjI2YTEyMTg2NzVlZTA3NDIxZjhjMzM3ZTZjNTljYTgxOGQwMCBweTNrCis2NTc0NCA0OGRkZGZkMmZiZjNiYzAwMzQ3MWEyYmRhYjNlOGFjYjUwYzI3MmJlIHB5M2sKKzY1NzQ1IGFhZWYwOGFhMmE3ZWZmYmFjMjliMTM4N2VmMzg5NTNhYTY2YzY3MjAgbGVnYWN5LXRydW5rCis2NTc0NiA2MTJiMGMwZTVhMGYzM2Q4YjkyZDRhZjFmNTQyMjExYWEwNTY1MTIxIHB5M2sKKzY1NzQ3IGQ5ZDUxOGNkNDkzYzMyZWZhZmM4YTNiYzUyNTEyNDgyMjFmODRjNzIgcmVsZWFzZTI1LW1haW50Cis2NTc0OCBjNzQ4MWM3M2MxNjNhMTk3YTdmOTgyYTNlYjE4NmI2YmVkYjEwYmQxIGxlZ2FjeS10cnVuaworNjU3NDkgNDM1ZDY0ZmQxM2E5Y2Q5ZDRkMzA2ZTQzNjE0ZmE0ZmY1ZDlkOTM1OCByZWxlYXNlMjUtbWFpbnQKKzY1NzUwIGY0YzJlYWFkMDlmODQ1ZTEzODMwYzQ5ZWE4N2JmYTM1YTRmOWM0MDcgcHkzaworNjU3NTEgNDU1Njk4OTVmN2I1NjE0YWFkNTNmY2VjODNiOGRiM2E0ZDIxYjEzMiBweTNrCis2NTc1MiBkZGM2NWNkMmYwYmJiYWMzNWYxZGY0YzAxYTU2Mzk2OTI0NTJhNjk1IHRsZWUtYXN0LW9wdGltaXplCis2NTc1MyA5MGQwNDk5ODNmNWIzZGZlNmM3NzM2OTkwMjdkYjFmOGQ5OWQ0NTg0IHRsZWUtYXN0LW9wdGltaXplCis2NTc1NCAwNzQwOWU5ODVjMzljOWFhMTcxY2ZlYjhkZjE3NjE1NDc4MzIxNjEzIHRsZWUtYXN0LW9wdGltaXplCis2NTc1NSA5YzQ5ODkwNzIxOGZkN2U4MGIyZjMyMTkxMjU2OGYzMmQ0OWQ1OWQ2IHRsZWUtYXN0LW9wdGltaXplCis2NTc1NiBmYzFhMGFjZmNlZjgwOGJmM2NmNDM4MThhNTU0ODYzMTllZTE4MTVjIHRsZWUtYXN0LW9wdGltaXplCis2NTc1NyBkYTU4MzMzZWM3ZGE3NjFjNTExMmY3NzhlNTVhYmZmMDZjMTAxZmJhIHRsZWUtYXN0LW9wdGltaXplCis2NTc1OCA1MDQ5M2Y5ZGQ4YzcxYTRhNDcxYmNlZmNiNTliNGNmOGIxMTQ5OWQwIHRsZWUtYXN0LW9wdGltaXplCis2NTc1OSAxNmI5ZWUxZWVlMzFmYTI1OTQyODg1YTE4NDJlYjAyODA5MzVkNzc1IHRsZWUtYXN0LW9wdGltaXplCis2NTc2MCA5M2FiOWZkYTgwYWIwYzRhMGQ1MzYyOWY3NzZkYTA5ZTQ4NThjMTBmIHB5M2sKKzY1NzYxIGY0ODI4NzVlMmEwMzFhYWI2YzM0Njk4NWZhMDMyZjM5MmJhZTk2MDAgbGVnYWN5LXRydW5rCis2NTc2MiBmNGMyMjZjNjFiNzFjOGY2YjNlOGM2NGFiNzNhZTRjYmViMmJhMTE1IGxlZ2FjeS10cnVuaworNjU3NjMgMmY3ZTU3ZmMxZjNhNjY2YjU3MmNlYTM4ZmIzMTRkMzE4NDA4NmUxYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjQgYThmM2U2M2I0N2U0MjQyZDM5Mjc4M2U5YjAxNDdjNWFiNTIwMzk3OCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjUgM2RlNjllNmIyY2IyNTIxZDhmYjZiNWI1NmQ5YThiMGI3NGIwNDM0OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjYgYzUwNTliMTJkZGM2ZDE4NDZiMzA1MDA1Mzg1OGRlM2I3M2VlNjM1OCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjcgOWI5ODU2N2Q1ZGRlNTA3MDRhZThhNTZkM2FiZTA5YTE5NGU4Y2UxZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjggN2EwMzgwMjBjOGRkNjNlNmRiYWQyNmM2MzFjODRkNGExZjc0ZDhlNyBsZWdhY3ktdHJ1bmsKKzY1NzY5IGNhYmY5N2I4MjMzMDg2MWU1YjY1MTBiNGYyNjE0YmJjZWQyYjZlOGYgcHkzaworNjU3NzAgYjM3N2MxNDczMjNlYmY5ZTA4NjcyYjIxNGQ2NDAxZmUwZTM1ZmZiNCBweTNrCis2NTc3MSBlNGM5OGQ2MTU3YzcwMTk3YmI0YWM2YTRiNDJjZjVkZGNiZGFjOWM1IHB5M2sKKzY1NzcyIDcxYjUzZDZlYTdhNDVmZGI1ZTBkYjY1YWVhMTUzMjJjNDk0ODEyMDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzczIGQ3ZDcxMzlkNTg0MDZiNjU1Y2E5YmMxODJiYzQ5MzFmNzJlMTEzZjUgbGVnYWN5LXRydW5rCis2NTc3NCAxZDg4YWQ1ZjRkZWYzMzYzZjI0ODUxN2VkMzk1MDgxYTBkZGI4MzFiIHB5M2sKKzY1Nzc1IGMzNmNjZjJhNzFlMTZlNjE5NWZiNzczNGQ2YzMyMWRmY2FlOTJlZWQgbGVnYWN5LXRydW5rCis2NTc3NiBiMjlkZjM2NDJiOTdkM2I2ZmM1YmUxNTAwMDA3N2RjN2Q4MTRlMGI3IHB5M2sKKzY1Nzc3IDQwYzA3YTYxZTFjMjZjMWZmYTA0ZGQxOTUyYjk0NTU3MjE3ZjQ0ODggcHkzaworNjU3NzggMTJjM2EwMzM4OWU3ZjNlMjBhN2VjODJiNWM2NTIyYWVkZmUyYTljNCBweTNrCis2NTc3OSA0OTIxM2Q0MjljNjgxYTAxZGFlMGIzN2RhOWFlOThiOTlmMTdmOTEyIHB5M2sKKzY1NzgwIDJiZWJjMGE2ZDA0MjgwZDBjNzMyNjdmNWRkYmY0NzkyNDcwZTc5NmMgbGVnYWN5LXRydW5rCis2NTc4MSAwNjg5MWFlYzQxZGU2ZTY5YjcxYzU1NWViYmMzMmU4MjMxZDUxMjBhIHB5M2sKKzY1NzgyIDE5NWRhNmQwYzc3YzEwNjhlMjhhZDI5ODg5M2Q5OGM5ZDMyZTk3NDkgbGVnYWN5LXRydW5rCis2NTc4MyA4MGE5ZmY1OWViMDIwMmIyYzJjN2UzYjUyNTE2OTY3YTQ4Y2MxODY2IHB5M2sKKzY1Nzg1IDUzMGI0Y2IxOTQ0MjVhMjNhNDZhYzI4YzIxNGJmNTFkZGY5YzI5NjEgbGVnYWN5LXRydW5rCis2NTc4NyA3NTY1ODU0M2I5MTliZjUzNTQyODMzYzBiMjFiOTdiODc0MTBlMTM4IGxlZ2FjeS10cnVuaworNjU3ODggMjJhZDg4ZTVjMDAzYTQ2ZDM0ODFlZjFlNGQ2MzMwM2UyM2M0MmE0ZCBweTNrCis2NTc4OSA0M2ZhNTBiOWViMTI4ZmQ1ZjcwMmM1Mjc0MDg3OTNkMTc5Y2E2NjFlIHJlbGVhc2UyNS1tYWludAorNjU3OTAgNTUyOTUzMzA2ZDM0MmM1OGU2ODFjNzZkODc1MDc4NzA1N2U4YzUzOCByZWxlYXNlMjUtbWFpbnQKKzY1NzkxIDhkOTlkMDNhMDZlNDRhNzc0N2MxZDFjMGY1MjU5ZjhhNTk4MTE0YTAgbGVnYWN5LXRydW5rCis2NTc5MiBiMGM0YWI4MjMzZmE5YjVjZmJmY2JkODA1ODA5ZTk3ZjRlMmJkOTg5IHB5M2sKKzY1NzkzIGQ3ZmJlNzNmZTdmNzQ0NzhlZTcyNzUzMTVlNTFhNjRiNWNiYTMyMjYgbGVnYWN5LXRydW5rCis2NTc5NCBkZDk5MmI2NDAzZjRjZmRiODAzNWE0OGFmZGQzMzU2ODM0ODQ0YzhhIHB5M2sKKzY1Nzk1IDYyYzY5ZDg4ZTk4NWQ3Yzk3YTcwYzdiYTkzZmVlYjFlNTZkMGEwYWIgbGVnYWN5LXRydW5rCis2NTc5NiBlZGI1YTg1OTM3NDllNmNlYzlhZjgyNmIyMGMwODliMGM0MzAyZmM0IHB5M2sKKzY1Nzk3IDg5NTM4ZDVmYjgxYWRiMmZiMjA0MDM2YWJkMzdiYTJjMTQ0N2YzMjEgcHkzaworNjU3OTggOTlhMmVlNGUzYTA1NzNjMGY0YzUyZTRhNzA1Y2E4N2JiZjUxMjc1YSBsZWdhY3ktdHJ1bmsKKzY1Nzk5IDk1ZjFjN2RiODkyM2Y0OGJmNDRjNDc5NmE5YTc4Y2Y5N2E1NjdlMzQgcHkzaworNjU4MDAgMzUxYWQ2ODQwN2U3ZmYxZjQ1MTVkYTM5MzgwNjBmNTE2N2NiMThlOCBweTNrCis2NTgwMSBmMjg3YmViMzUyZmUxNjM5MzkwZmVjOWFhMzA0NzY0MTVmYmRmNTdhIHB5M2sKKzY1ODAyIDU1MDg4NjJhMWRlNTA1YzgwZDNiMzZmMmYwM2Y5MmY3MzRhY2FiNDYgbGVnYWN5LXRydW5rCis2NTgwMyA1YTg3YjBkMWNlOTFlMThhMzA1NzhkZmY3NjlkY2ViNDc0MTQ5MTFhIGxlZ2FjeS10cnVuaworNjU4MDQgNjAxOTRhYjJiNzU2MjViNGQzMjlhZTc3MWZiMDFjMDBmMWUxODNlZSBweTNrCis2NTgwNSAzMTk1YmQ2YjZkZDdjZGFlZmJlOGRmMTQ1NGQ4ZDg2NGMxNjlmMzM0IHB5M2sKKzY1ODA2IGZjOTBiNTgxNTE2ZWJkOGExOTIzMTgwZDRkZTQ3ZWQ5ZTQ3NzUyMDAgbGVnYWN5LXRydW5rCis2NTgwOCAxYTQxZDQ1NmQ4MDJiZmU0MTQ3NTRlNjJmNzBhMWY0MmIxNjI5ZDg1IHB5M2sKKzY1ODA5IDIxMTkyNzE0N2M2MDZlMmQ3ZDg1MDcyNzQ5NDc3MzlhNGUzYzY5M2MgbGVnYWN5LXRydW5rCis2NTgxMCAyMjU0YWE4MjRkNGRhM2JmZTNlMDk1MWM0NjFmOTNiZWIzZTViYzI2IGxlZ2FjeS10cnVuaworNjU4MTEgNzUxN2JkY2M3NjlhMWUxNzUwMGFlYTdiMmMxMjc4NTMzNjliYzhmNyBweTNrCis2NTgxMiA0MjA3MjE5YWNjN2E4MDM5YzNkZTQ1OWM1ZjczMzJjYWUxOWYyMjFlIGxlZ2FjeS10cnVuaworNjU4MTQgNGI0NTY0YmViNmRhMmUwYjEzNGY5M2FmMDFiNGYxMTNiZDU3ODRiNiBsZWdhY3ktdHJ1bmsKKzY1ODE3IDE3ZjAxMDUxN2IzMzUwNjA1MmU2YWNjMjg1NzkzNjc2N2E3MmZlODUgcHkzaworNjU4MTggMWQyOWU1M2NlMmFmNjY3ZjYxMGE1NWRlYjZlYWFlYjc3OWJkMTc1MCBsZWdhY3ktdHJ1bmsKKzY1ODE5IDc2NjIwMDEwZDc4Mjk4NjM3ZmJkNjNkMmRkYjQ0NWNiYWRhNTMzMjIgcHkzaworNjU4MjAgNWMwZTVmMmNiYzdkODljMGNiMGYwMDJlNzA4NzdiZWQ2ZDZmN2RlNyBweTNrCis2NTgyMSAyNjE0ZDUwMWRlOWFlZmMxN2VlNzg1MGNmM2M0ODU1Mjg4YWU0ZWUwIHB5M2sKKzY1ODIyIGUxNDNhOGYzNTI0MTdjZjA0OWNjOTBhZDE1MjBkMjFmNmViOGJiZmIgbGVnYWN5LXRydW5rCis2NTgyMyA0NzFhNGE4OGY1MWM2NGMwMzIzMTBhNzlmMTE4MmE4YjkzNzQ1ZjMzIHB5M2sKKzY1ODI0IDAyNGIyYjk4NDg2Njc2Y2M0MWI0ZTdjNzYzMjc4NzNhODdlN2M1M2MgbGVnYWN5LXRydW5rCis2NTgyNSAxZmRmYTM4MmFlMTMyZTEwM2I4NDk5YzdkODY1YTc2Mjk0NGVkMDg3IHB5M2sKKzY1ODI2IDlkMTg1NmFiYTlmMjQ5M2RhODE5NzVjOTYzOWQ3ODcwNjUzZDFmM2EgbGVnYWN5LXRydW5rCis2NTgyNyBkNjUzN2EzZTFiNzNjMDM5YmMzZGZjYzM2MTAxZTQ0MDhmNWMwZTMyIHB5M2sKKzY1ODI4IDI4ZDkzYzljM2EwMzAzNWNiMWQzYjUxMDZjNmFkYTZhMTUyMjlkY2UgbGVnYWN5LXRydW5rCis2NTgyOSBkYjU4OTI0MWU2Zjc0Yzg5NTVmNTYwNjZmNjhmODA2M2NjZjEyYzkzIGxlZ2FjeS10cnVuaworNjU4MzAgNmRkYTAxNjQzMTA2Y2ZiMmQyNzBiMGI1ODk5YWM4N2Y2OTQ0ZmZjMSBweTNrCis2NTgzMSA1OWQ5N2EzZWUyMTllNDYxNWM2MGEzOTljZTdkMTMxNTlmN2JlZWQ4IHB5M2sKKzY1ODMyIDkyZjRiYjM2NjM3YzM0ZTgyOTkzNmRhYmM5NWYyYzUwZDAxNGQxYzIgcHkzaworNjU4MzMgOGQ4ODM1MDU1M2MzZjVhNjc0OTUyOTIxM2E0NWRhM2JlMjQ3NWU0YyBweTNrCis2NTgzNCA4YTdhMjU0NTljNmYwMjE5YTIzOWVkMTIyMDU5YTBlNzdjYTUxMDk4IGxlZ2FjeS10cnVuaworNjU4MzUgZTEwNzEzYjJkNTQzMzhkOTg3OTEzNGE4OWZkZjkzOTEzOWQyMzhhMCByZWxlYXNlMjUtbWFpbnQKKzY1ODM2IDMyOTE0OTA0OGI5MGNjOTU2NThlMTMyMWNmMDJmM2I3ZjNlMTMyN2YgcHkzaworNjU4MzcgMmJhYzBkNDIxOTI5ZTQ1NjllOWFiYWUzNTI3NTY5ZDE1MDNhNDNjZCBweTNrCis2NTgzOCA0MjhkMzg0ZWQ2MjYzNDk5NmRlNWJkNzQ0OTQxMDIyZmMzYWU5ZjcyIHB5M2sKKzY1ODM5IDVjMTA1ZjlhNzhlOGUxZjk5OWNlZTExMmQzMmRiYmMzYTU3NzhmMmIgbGVnYWN5LXRydW5rCis2NTg0MCA5YTg5ZmI1ODA5OGI2YmE1Y2ZlMmQyZjNjNTE4YjU5ZjZkY2Q0YTJlIHB5M2sKKzY1ODQxIDU0MTM4ZWUyMGU1N2MyZTlhZDJkZmJjNDE4NjU1MWM3NTJkYjE4NzIgcHkzaworNjU4NDIgMDI3NWQ4MWUzMWQwOWNiZTM3YWM5YjJmNTE5ZjVkYmJjNzg2ZDVmYSBsZWdhY3ktdHJ1bmsKKzY1ODQzIDI5MWE2ZjIyMDM2MDcwYzVhMDMwNDFlMTk5MjExMmM5MGMzOTQwN2MgcHkzaworNjU4NDQgODNmNzc5ODUyNGYxYzcwMTlhYzEwOTkxMzEyNGY1YjA4NzlhNjE2YyBweTNrCis2NTg0NSBiMGUzYWM4NmNkZDgwMmEzMWY1ZTZmMjUzYTA3MTFkMzAwMjZhN2YxIHB5M2sKKzY1ODQ2IDdkNjQ4MDZmZWIxNTYwOGQ2YWYyZWVhOTgwMDc4MTc3MGQ1YjQ2YmYgbGVnYWN5LXRydW5rCis2NTg0NyA1ZTNmYWFlNmVmYzY3MTlkNDRiYzBlZGIzYjI3YmMzMjEzOGRmNTVjIHB5M2sKKzY1ODQ4IDE0ZjJhNGNiNTdkZTA0MzU3NmI4NzhiMjZmZDUwYTE4NmUyZTg0NGEgcHkzaworNjU4NDkgN2M4MWQ1YWE1ZjQxN2QwODU3NzY4NTJjMjJmY2QzYmQ3OTYyNGM2YiBweTNrCis2NTg1MCAxOGFhOTE5ZGYyNDVhYjlmZWYxMTg2MjllODFmYzJmZjRmY2EyZWU0IHB5M2sKKzY1ODUxIDk0YTdmYjMzYWZlYTUyOTAwODg3ZjcxMDg1NzA0ODZlNDg1YWQ1MGIgcHkzaworNjU4NTIgNDNhODg1ODQ0YWQ4ZDRlMTUxNmYwZGIyYWFkZWExMGQ0ZjQ0ZjhjMSBweTNrCis2NTg1NSA0ZGYxMjJhZGE3NmZhZjQ2ZGEzMGExODJkZTJiN2VlZmE2YjVlNThmIGxlZ2FjeS10cnVuaworNjU4NTYgODNlYjJhYWE1ZmFhYTQ0NTljYTY4MzA3YTI2M2QzNmNkNzBkOTMxNSBweTNrCis2NTg1NyAxNGU4MTliZWVlYWI4YzA0YWM2NGNlNjE1YzdkYTNkZDI2ZTEyNTFhIHB5M2sKKzY1ODU4IDIwOWE0NTgxYmQ5MTlhMDM1NDZiZmM5ZDAzN2ZmMGRmZjg2MDZjZTEgcmVsZWFzZTI1LW1haW50Cis2NTg1OSA3ZjAzOGE0NzAwYjFjMDgwNGVjMzk5NmVhYmM1Y2JmYjQxOTk5YzU5IGxlZ2FjeS10cnVuaworNjU4NjAgODNiMmQwN2I0NzViNTAzMDdiNDhmNmFmNTczOWUxNmJhYjY4NThiZiBweTNrCis2NTg2MSAyNDgwNjIyOTY1ZTYwMDhiNzhkNTA3NGMwODcyZGQ5NWVmZWY5OTU3IGxlZ2FjeS10cnVuaworNjU4NjIgNzUxMWYzZTY3MmEyOWYzNzI5NWRlNTNkODFlZDUwY2ZkNDEzNjIzYyBweTNrCis2NTg2MyBlYTNkMTNjZDdjMWU2YjZmNWU0ZGU2NzM3ZjY3MmMzNGU2MDU5YzFkIHB5M2sKKzY1ODY0IDdlYTgwNWQ4NzllMWFiNTdjYjI4NjIxODhhMjRkMTE4OTFkZTM0NTggbGVnYWN5LXRydW5rCis2NTg2NSAxYTA1OWFhZmU0OWYwZTRiOTk0ZWMxODQ0NzQ4ZWRlNGUzOTQ0ZDU4IGxlZ2FjeS10cnVuaworNjU4NjYgYWE2MTMyMDkzMzJkNTFhYjZlYzYyOWI4MmFlZjBkNzFiY2FjOTJlOCBweTNrCis2NTg2NyAyNWYwNmE3MDNmODlhOWU4OTZmNTUwODc0ZGFkMWNkM2U3NDMyZGM4IHB5M2sKKzY1ODY4IGJkMzdhMTg2NjM4ZjI4M2Q0M2RjYzVkNDNmYWMzNzRkNTllNjBjYzAgbGVnYWN5LXRydW5rCis2NTg2OSBmMDRiNzAzZjJkZGRhMWIxMTdhMTk1NTZiMDI5ZGU0Zjc2OTQxZmY3IGxlZ2FjeS10cnVuaworNjU4NzAgOTdhMjRjNjA5YzJlZTg4MDQwMDk4YTRjOGYzYjljYWJhMDJhYTVmOSBsZWdhY3ktdHJ1bmsKKzY1ODcxIDZkMjJlZThjNzNjYTM0OGMxMTRhNmZiNzkzMjJmZmI0ZDZiY2NlZTEgcHkzaworNjU4NzIgNDlmNTJlMjg1YTY0MDJiY2Q1ZjlkMGU1NTgwMDlkZDQ1YjdhZjJlYSBsZWdhY3ktdHJ1bmsKKzY1ODczIDJiODI5ZmZhNDgxYjU3NDFkMGUwNDgxZjMwNGMwNTk1YzNmODE2MWEgcHkzaworNjU4NzQgOTZhNGNkYTY1YzU1MmZmYWQ4M2MzYzhiNWNiNDkzYzhkMTlmZjQ1ZCBsZWdhY3ktdHJ1bmsKKzY1ODc1IDUxMDkxOTA3MzExOWY5MTllMjYyMzhkZWYxNTkyOTg5ZjA3YWVjZDAgcHkzaworNjU4NzcgNmFiYWRhMDVjMzEzMTM1OTEyNDZiMmFmNzhhMGJlNDdlYzY1ZDMyZiBweTNrCis2NTg3OCBmNDlkOTMxNGQ0MzkxMTFhMWZjMGIyNzVjMzc0OGJkMmU2MGJlZWU3IHJlbGVhc2UyNS1tYWludAorNjU4NzkgZWYxOTU1ODQ1NTA5NGZjMWFhYjgzYzBiZmYwNGI4ZDFhZTNjOTNlMSBweTNrCis2NTg4MCA0Yjg4MDY0NTYwNzg3MWMwMDVmOTA5YWFmZTIxMGVhYzhkMGZkYjY3IGxlZ2FjeS10cnVuaworNjU4ODEgYzc4MjNiMzUxZmJjYjc1NjQwMjkwYjk5ZWI5MDBmYTJhZTllMWI2MiBweTNrCis2NTg4MiA4MmM2OTZmMDQyNGE0N2U0NmE4YTNhOGI0MGM4ODUxNThlMGQ4NTFlIGxlZ2FjeS10cnVuaworNjU4ODMgOTllNzgzZWM3NzgxNTg3MWM2N2FjYjIxNjdjNjdkOWQ2NDFjMjJjMiBweTNrCis2NTg4NCBjMWE3ZmRiMjQ2MjhmMjQzZTFjZjMyZWIwMTc0MTg4OWMzMmYzMTU0IHB5M2sKKzY1ODg1IDUwNGU2ZDAzMGU4NGM3ZGZjNDU5ZjRlYjYyNmFiYmE2YjRlZjJlNTMgbGVnYWN5LXRydW5rCis2NTg4NiA1MDEyNTZjNTRjODRhNjQ4NTFlOGY2N2U2YzkwMTFjM2U1ZDg1MjU2IHB5M2sKKzY1ODg4IGY3YTYzOTZiNDk2ZjAyMmFjOTk1Njg2YWM1ZDE5YjU3M2RiM2VmMmYgcHkzaworNjU4OTAgZTc4MDI0YWYwY2YwM2E0N2ZkOTc1ODVmOTE0NDM2ZjhmMjIyOWYzMCBweTNrCis2NTg5MSBhOGY5OGE3MjczNzEyMTIyYWI5ZTc0Y2M3Mzg2ZTViYzczYjA3Nzg3IGxlZ2FjeS10cnVuaworNjU4OTIgYmVlNDAwMzM2ZmQ1YzdhMDQzNDA3ZDc5NTQwMmRkZThhZDhhYTIyNCBsZWdhY3ktdHJ1bmsKKzY1ODkzIGFiZGU0ZGIzMDdhNTljNTYxMTgzZGU3ZmVmY2QwMzY0OWMyNDkzM2EgbGVnYWN5LXRydW5rCis2NTg5NCAxYWYyMTEyMzY5MDQzMGRlMDcwMTJkYmQwODE1ZjI5YTk1YWM3MjNiIGxlZ2FjeS10cnVuaworNjU4OTUgOGYyMTU2YjE1YmI4ZTY5MGNiNDM2MjA2NzkxZTFmNmY2MzkxNTZlNiBweTNrCis2NTg5NiA2Y2Q3YjE4YmI3NDJhMzZhMmM1NGZjZTE1ZTg1Zjc3YzcwMTE0NmY5IHB5M2sKKzY1ODk3IDNhMTFlNzliOTQ3MTVkZGQ3MTAzNjVhMzk4ZWY2MTI3NTIwOGZjN2UgcHkzaworNjU4OTggMGZlNmNiMGMzMTBkNzI5ZGFkNTBiMzY1Y2I0MWFkNjFlOGUxOGRhMCBsZWdhY3ktdHJ1bmsKKzY1ODk5IDZkNmQzZTAzNzU1MDNjZDI1YmU3MjczNmM1YzZlNTg1ZjAwYWI5MWQgcHkzaworNjU5MDAgZDQyNjI5MTg1MzgyZWIzZDdjZmRhMWE3MGFmMzhhYjM0YTY2MmU1OSBsZWdhY3ktdHJ1bmsKKzY1OTAxIGMxMjVlNzVkMjFhMDQ4Nzc0ZjY1YzVhN2M4NGU2MzkxNzM2MzZhYzAgcHkzaworNjU5MDIgYTM2YjZjMWNlYzU2NzgyMjY5NjcxODQ2ZGY2NDcwY2Y3NDM0MDgwYSByZWxlYXNlMjUtbWFpbnQKKzY1OTAzIGU4OTQyMDRhZGZiZGFhYTI3ZDA1MzllYWQxNTkzNjhiYmMyNTA1NjQgcHkzaworNjU5MDQgYWU1YjczYzUyMDk3ZTZhMzQ2NmZkNWUwZWZlNDhiMTkwZTdhZDcxNSBweTNrCis2NTkwNSA1MWYyZjhmZWU1YzQ1MGQyMWZmNmFjODgwMTVlNzU3NjgzODJmMDExIHB5M2sKKzY1OTA2IDZjYzg5YzYwZjc0ZDZiOTc2NWY3NmU5NTRhNzUzMzMwNzc3Yzk3Y2IgcHkzaworNjU5MDcgNGY1MDIyODIzMTk5MGVhMWRlYjliODkzNzZjMGEwODU2MGYyNGJhMCBweTNrCis2NTkwOCA2N2NiMzM4ODAzNzdiYzNhZGUxYTU4Yzg5NjJkNmFlMjNlZmU1MDU2IGxlZ2FjeS10cnVuaworNjU5MDkgMTFlNzJlYmY5MDZhZWZlYmE2ZDgxM2Y1Mjc2NjhlY2Q5ZjdjYjMzMyBweTNrCis2NTkxMCAxYmU3ODkwY2Q3NTk3ODAxNmVmZDc1ODllYzY0Y2VkZmMxM2MwOGQ0IGxlZ2FjeS10cnVuaworNjU5MTEgYzAzMDI0ZGI4MDFmOTZhZDY1OTQwMTcwODA4MjhkM2I3NDBjNDA1NCByZWxlYXNlMjUtbWFpbnQKKzY1OTEyIDA0MGQ5NTgwNTAwY2RiNjcyMzk5Njk4NjBhMzhhOWU3MDFkMTRkODIgbGVnYWN5LXRydW5rCis2NTkxMyBlOTk2MTRjYTAyMDRiN2U2MDMxYmZjMjI3Zjg4MjY0ZDcwYWVlYmJjIHB5M2sKKzY1OTE0IDFjYjkwOGEwNDNiM2YwZjkzODM5NzdlNTk3Y2Y0YTZlZWI1YzAxNDEgbGVnYWN5LXRydW5rCis2NTkxNSA3NjA4YWZlMTFmYjk2MDQ5ZTdlNDE2ZmMwY2JmZjRiYWQ3MjExYjFjIHB5M2sKKzY1OTE2IDgxMzNmYmI3NDU4NzU0YTcyNWU2NzI1MDM2MDNiYjJlZDQ4MTgxZTggcmVsZWFzZTI1LW1haW50Cis2NTkxNyBiMTk5ZjM0MTllNjU4MDJiOWRkNjcyYmRmZDc5OGYxNmI2MGRhZjcwIGxlZ2FjeS10cnVuaworNjU5MTggYTE5ZDY3ZDc3YjIyZjc4N2JlMTY1YzUyMDk3OGUyYjZiOTlkYTYyOSBweTNrCis2NTkxOSA4OGNhNTE3NTQ2ZmQwMjM1N2NmNzIzM2RjOTQ3YmUwY2YzYjQ1MTU3IHB5M2sKKzY1OTIwIDAzM2Q2M2JmNzA4ZWEyYWQ0MWM1MmQ0Yjg0MTQ2ZGEyMzFmYTljNjggcHkzaworNjU5MjEgMDEzZDRkODQwN2NiOWY2OGU3NjU2ZDExZjYyYjc5MThhOTUyMWU0NSBweTNrCis2NTkyMiBjNjI4NjJkNzNmOWVjNjRkNjU1NDk0Y2YxZjYxNDQzNDQ2ZjJkZWEyIGxlZ2FjeS10cnVuaworNjU5MjMgNzMxNjQ1NjViOTIwZTIwNTk2ZDMzYTk5M2I5OWVkN2E3OTM3ZTc2NSBsZWdhY3ktdHJ1bmsKKzY1OTI2IDI3ZDE5YjY2NTAzNTc5ZDhiM2E0MWU1MmFjYWI5MDc5OWYyYmIzZGYgbGVnYWN5LXRydW5rCis2NTkyNyA1MDllMzBhNzk2OGUwMWJlMzI5ZWMxMjE1NDBiM2U3NTVmYzRlNTY2IHB5M2sKKzY1OTI4IGM0MTFjZjY5NDI4OTZjYzIxNjA4OWE2OTUwNjQ2ODQ0MzIyZjJlYTQgcHkzaworNjU5MjkgMDFiOWUxOGQ2OWFjNDQ5ZWU5NTlhYjU4YTFhMWE5ZmRjZjhiMWI0OSBweTNrCis2NTkzMiBhMGFiYWZmOTdlMDAxYTRiOTBlNDZkZjM2N2Q3ZjEyYWM1MGRiOWVlIHB5M2sKKzY1OTMzIDk1OWQxYWE4YjU4YWViZTMyNjMwZWYwMmJkNDJhZWFmZWYxOTYzM2IgcHkzaworNjU5NTggNTdhODczNTY0N2NmODc0NWQwYjYzMjY1MGFiNDg0NDMwMGNlNjQ4MyBsZWdhY3ktdHJ1bmsKKzY1OTU5IGE3NzAyMmRjM2Y2MWQyMjFkMTU4ZmE5ODE3ZjQwZjI1MjdhY2ZlMzAgcHkzaworNjU5NjQgZTM5ZDQ0YWRiNjE4MDZjOTY5MmMzYzBlMGEyMzI0NTY4N2E3NTM0ZCBsZWdhY3ktdHJ1bmsKKzY1OTY1IGE4ZDY5YzFhM2Y0ZWZkMzg3NjhhMzc5Mzg2M2JkZWUzZWNkNzI2NmEgcHkzaworNjU5NjkgNGZhYWJiMTg1NjJjNjNkNzI2ZDU2YTdjMGUwY2Q1NDVkOWYwOTYwNyBweTNrCis2NTk3MSA0YjFmMjYyY2ViZGY0MDAzMjcxOWYyNTM3ZjllOGIwZjEwZWZmNzM0IGxlZ2FjeS10cnVuaworNjU5NzIgMmRjNjQ2OWZjNGM0ZDRiM2M2YzczOGY4OTQ3NTFjMzRjODNmMTJjYyByZWxlYXNlMjUtbWFpbnQKKzY1OTczIDE5NDRkMzEwNDBlMzA2NjFiM2JjNmRjYzliYzAzOGIwNGNjMzNhNWYgcHkzaworNjU5NzUgYWZiZmQ4ZjIxNGRkMTMzN2Q2ZDE3NWM4Y2ZmYWZhZDJlN2E1MDFmMSBsZWdhY3ktdHJ1bmsKKzY1OTc2IDJhYTc5YWQ0ZWI4NTJkZGRkNmE3YWE1YTA1Mjc3ZTg5ZjA3YTc5MDggcHkzaworNjU5NzcgYmNlMDNmODdmNjVkYjFhMTA0NGExNGM5ODdhYzhhMGMwOTBmNTMxNiBsZWdhY3ktdHJ1bmsKKzY1OTc4IDQ2YzFiY2M0YzFkMzAzNzQwNTUzYWI2ODY0YmMwYWY1MmQ4NjMxNWUgbGVnYWN5LXRydW5rCis2NTk3OSBkOTUyZTc1M2M2MTFmNzVhYWNkZjU3NTJjNWMzNGU1NjUwMzQ5MjNmIHB5M2sKKzY1OTgwIDc0ODk5ZTZjODdhNWM1ZGE2YWViOWMzZTVlODE4MjU5N2FiZDA0ZjMgbGVnYWN5LXRydW5rCis2NTk4MiBmOTcwYTRmNzU2MGZmYTIwZTk0YjU1YTU4OTY3ZGRkNGZhYTg5ZjY4IGxlZ2FjeS10cnVuaworNjU5ODMgZTNlNTA3MzUwZWQ0ZDRkZTg4ZjFkYTE0M2RhMDE2MjQzODZmYjFmMyBweTNrCis2NTk4NCAyMDQ0MzFkNDRjZGM0OTI4NGMxYzNjZGQ4MTViZTdlZGNmNGY1OTk2IGxlZ2FjeS10cnVuaworNjU5ODUgY2ZkNzlhNGMxNjA0MzNkZDU0ODU2YzQyOGVmZDM0MWQ5NzVjZDExOCBweTNrCis2NTk4NiA3NWY2NGZkMWYxMTM3ODhiZWM0ZmU3ZWNlYTdkZmRiOGViYWFkZjFiIGxlZ2FjeS10cnVuaworNjU5ODggNjViMmRkNDZlMTcxMTg5N2I5MzEzY2JjODg0MWU5NzMxMjVkOGUyYSBweTNrCis2NTk5NCBiNTIxMzgzYjgxYTcxNTcxNWVhZjc4OTU3M2Q5OWE3NTNlZWE2YjhjIHB5M2sKKzY1OTk1IDk2OWVkYzNiNzA3ZjNiZmE4NDNiMTU3OTYyZWIyYzQ5OTQ4YWZjNmIgbGVnYWN5LXRydW5rCis2NTk5NiBlN2I4NTg5MGU5YjEwNzM1MDRkMTVkYzEzMGIyNTE5OWU3YmY2ZGM3IHB5M2sKKzY1OTk4IDU4N2NkNGY2NmMyZGNkOTVmYmM5NTE0MWNmYzY1ZjcxZjViODUyYWIgcHkzaworNjU5OTkgZGZlNTQ2YjY2ZWVmZDc1ODNhZDUxNmNkNjcyYTA3MTRkYmVjNjFjNiBweTNrCis2NjAwMCA3NmU3MWNlY2M0ZDMxM2NiYzBhNmYzZTI1MzMyODgxNTllODc2MDEzIGxlZ2FjeS10cnVuaworNjYwMDEgMDdlYzcyY2YxOWM3ZDYxYzhhMmQyNjgwZWYwMjk1OTlkZGRiYmViNyBweTNrCis2NjAwMiA3YmIxYzYwZWFmNjRmNTllNWJjZWM4NWY2MjY2ZjQyZjZmNzI3NmFmIHB5M2sKKzY2MDAzIDg1YzA4Y2YwOGIyYjVlZWY3NTNkNGVkZWMzYmYxOTc4ZDQwN2RlMmIgcmVsZWFzZTI1LW1haW50Cis2NjAwNCBlMTQ1NTJiNzMxN2JjYzk1NTk0M2JhYmRmMzU5MjMwNmU0YjJlMDE4IGxlZ2FjeS10cnVuaworNjYwMDUgNjgyZTlhNDJjMTVkNTNiNDBmMDJiZjM0YjJiY2M3Nzk5NjNlOTE0NCBweTNrCis2NjAwNiBiMTY4MmM2OTNiOWExNWQ4NzlkNjc1NTIxZjYxZDVkZDNkOTdhNzQzIGxlZ2FjeS10cnVuaworNjYwMDcgNWM3NWEzM2VmNWIyNzYzNjM3ZDg4ODNjNWQxY2E2YzU5MjdjZTRlMiBweTNrCis2NjAwOCBkMmJhMzZhN2E3MTI3NDVjYjhjNTcwMTM3NGVmYTI2ZjdlYThhOTYxIHB5M2sKKzY2MDA5IGFmYjk4MDhiMGYzMGZhMjViMzY2OGM3NDg1ZGNiMjFiMDEwZTA0NDEgcHkzaworNjYwMTAgYTI3MjAzNTNmMGQzNDlkNzQxZTliNThhYzIzZDJjMWMyYWU5YzVmNCBweTNrCis2NjAxMSA5ODRlMWM2MDI5NzkyYzlmMjk0NTc0YWE2ZDNjNTY2ODIzYTE2MWZlIGxlZ2FjeS10cnVuaworNjYwMTIgMmE2YWU3ZThjN2MzNmUwMzNmMjBiYWYzNTk2YTZmNmI2YjMxMmQyYSBsZWdhY3ktdHJ1bmsKKzY2MDEzIDZlYTFhNzIwYjA1N2VlMWJjOGVmMTY5ZTA1NDNiYzI3NjFiMzM4ZDIgbGVnYWN5LXRydW5rCis2NjAxNCA3MGVkYWM4OTBmMmI2ZGY2MmRjOTMwOGY3ZTA1MTRhOGRiM2NiODdhIGxlZ2FjeS10cnVuaworNjYwMTUgYzAwMTlkNDU1NTFkYzc1MGM3NjY2ZjIzMDk4MzdiMWQ1Yzc4YmU1MSBweTNrCis2NjAxNiBjOTVmMzg3ZWQxZjQyNmNlNjUyMWMwOGI2NTlmNmIxOGFmMzIzZDdkIHB5M2sKKzY2MDE3IDU4ZDI5NWU3ODAwZjdhNGYyZmI3YTJmMjFmNWNhMWY5OGUzMGEyNWYgbGVnYWN5LXRydW5rCis2NjAxOCBkZTk1NGRkNjc5N2I2ZTY3OTQ1ZGFlNzE5OWM3YjEyMTU3NGFmZmY5IGxlZ2FjeS10cnVuaworNjYwMTkgODgxMTk4M2RmY2FmOGIyMjZmNDM2NzNkM2Q4NjQ1MDU2MWRhZGM2NSBweTNrCis2NjAyMCAxYTQ5MjJmYTUxNjA2NTkyMWFjZDA3NDg3ZmNlYTIyZmM3NTNiOWIyIGxlZ2FjeS10cnVuaworNjYwMjEgNjc4YTBmMGU2MWJjNWQ2YmM1MjYxZWM3M2I3YTU1MTQyNmJjYTQ2OCBweTNrCis2NjAyMiAyYTQ3YjNiYjExZmQ4YmQ5ZWE5OGYyZTY3MTU3MDNkOTIwMjlmYjZiIHB5M2sKKzY2MDIzIGRmNjI0ZGY2ZWZhM2NkYTA0MWVhNGM0YTMwYmZiOTVmYjRkOGE1NGIgbGVnYWN5LXRydW5rCis2NjAyNCAzZGM0ZGZhM2ViYTE2OGNmYmE0MDE2ZjliZjdlMDM5ZDhjMzQyMzY3IHB5M2sKKzY2MDI2IDZmYWM2MzYxMzNmMDEwNmVlNGEyOWUxNDg2MjVhMjVhMDU5YjYxODUgbGVnYWN5LXRydW5rCis2NjAyNyA0ZmI3ZTdiMmM5NjJhYzA4NjliOWFkNGRkMjViYWYwYmM1ODY2OGQxIHB5M2sKKzY2MDI4IDllYjBjZDMwMzI2ZDhiNjU0NGJkYjBiYmZiYjk1YWNiZGI4NWZmZDIgbGVnYWN5LXRydW5rCis2NjAyOSBkZDE3N2Y1NzZiZThhOTVlNmUxYzhhOGExZWU5YTlkYTAzYjA1MjdiIHB5M2sKKzY2MDMwIDVhMjA1OTNhODE4ZmMyMzJhYmNmNjIzNTMxMjJmODY4NGY0MTA5ZTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2MDM0IDgyZjczYjBiNWEzMDhlOTgyYzUwMzIyZjlmY2RhMzk3M2I5ZjI4NDIgcHkzaworNjYwMzggNTQ4ZGNjYzQwMDhlZDkzNGJhZmFkNWY3YjcxMGNhNDJkYmJiMjFhYiBweTNrCis2NjAzOSBlZGQyY2E4OTRhNjdkYzZiNGY5Y2M5MmQ2OGZhNDVhNzc1OTUwMzM2IGxlZ2FjeS10cnVuaworNjYwNDAgMDNjMjNjNTA2NTRlNWUzYTYyYThmZWM2ZjRhN2ZiNGQxYjIxY2Y2YyBweTNrCis2NjA0MSA0ZGIxZjUwOTgxNzVhYmNjNTZlYWQ2ZjA1ZDg5MjFiNWMzZTRiYjJjIHB5M2sKKzY2MDQyIGQ2ZTg2YTk2ZjliMzUwODljYjJhOTc0NjA3M2QwNWM4YzBhYzZlMDUgcHkzaworNjYwNDMgZDAxYzFkNzY4ODQxNTM0MGUzMmI2YjczMTdmYzFmOTZhNzg4MDVkZCBsZWdhY3ktdHJ1bmsKKzY2MDQ0IDEyZDI3NjIwNzZiYWE2MTFmNzY5YmJlODA2ZmVkZDI1ODc2MDVmZWUgcHkzaworNjYwNDUgYzQyYmY5OGIyNjBmMzUyMDQ2ODQzODcyNTYyNDc0NDVlMDI1MzYwNSBsZWdhY3ktdHJ1bmsKKzY2MDQ2IGQ5ZmUyOWU5NWQ2MDE1Yjc4Mzc1NGM0MmRhYjc3MzcxMWE4NjUzYjcgcHkzaworNjYwNDcgZGU2ZmI5ZjM0NTEzMjc1ZDYzNmY1MDEyODQ3YzM2YTM2YzVjYTE5ZCBweTNrCis2NjA0OCA0N2E4MDFjMjlmMTNkNDhlNmMwZmNlNzRmZjk5ZDIzNDdiZGJlMjRhIGxlZ2FjeS10cnVuaworNjYwNDkgYWEzYzkwY2UxOTMyYmFlNzdjYTlhNjQ4ZDgxMWM4MTMxZjk3M2ZjMCBsZWdhY3ktdHJ1bmsKKzY2MDUwIGZkZDFlZTIwYWI4NmIwOTgwN2QxOWE0NDc4MTBkZGE2ZjA2MzlmNmUgdGxlZS1hc3Qtb3B0aW1pemUKKzY2MDUxIGYyN2NjZmRlYTgzNDAxMjAzOGNiYTA4MjdiMzZkNzQ3YjU5OTRmN2YgcHkzaworNjYwNTMgZWZjNDk4NjNjZDhmZjliYjM5ZDEzNmFlYjVlOGJkMjM5ZDAxZTI3YSBsZWdhY3ktdHJ1bmsKKzY2MDU0IDQ3MTkyZDBiNzMxZjEwNDk2ZjNlNjIzMmQ5OWI2NWE1MGNkNmM5MzcgcHkzaworNjYwNTUgNmNlYjdjODllNzc2YmE5MjQ0OTk3NjljNjk2OWI1ZTNiMDY3YTAxOSBweTNrCis2NjA1NiBjNTYyYzhkYWU0OWE2MDU4NzBlNmU4YWE2ZmE3YjhlMmVlOTE3Y2FlIHB5M2sKKzY2MDU3IDI3ZTE0MmQ5OWE3MTczOTM2YTY1OGZkYjAzY2VmODhjMTI2N2RiODYgcHkzaworNjYwNTggYmJmZmUwOTE0YzU2ZTYxMGYxMThlMTNiZWFhMDc5YjE5MThiZTE5MiBsZWdhY3ktdHJ1bmsKKzY2MDU5IDBjNjVjODAyNzUyYTJiODIwZDNlYjNiZGJmMGNjNjU3NjY2MjFiY2UgcHkzaworNjYwNjAgYThjNTM1ODBjNWVjNDcyMjVjMThmNGM1MWJhZmUxYzNkYjRhYjEzYSBsZWdhY3ktdHJ1bmsKKzY2MDYyIDMwODM0YjlhYTE5MzdmMWZmODJkNDg3NzQxMzEzZGE4NTA1MmEwYTggbGVnYWN5LXRydW5rCis2NjA2MyAwMTMxMzhjZGI4NzNiMmVjYzE3ZmE2YjQxNGNmMzRmNGE3MzRlZjhjIGxlZ2FjeS10cnVuaworNjYwNjQgMDNlMjE2ZGM4ZmVjY2I5MWE0MTI3NDI2MDM4ZGRjNzQwYjE3MDU4OCBweTNrCis2NjA2NSA1NmVkNDQ1ZmE2MWU2MDM0ZDQzYjI5Y2Q3MjUxOTU0NmYxOGIzYmY0IGxlZ2FjeS10cnVuaworNjYwNjcgOTZiYzU4OTZhMjQwNTUxY2RiNzY0MzZiZmNmN2I0OTc0MWI0NTFhMCBsZWdhY3ktdHJ1bmsKKzY2MDcxIGEyZjIwMjhiNzNlZDNhYmU1NjhhYjY5MGI0NmEwYzRiZTlhNDhlMGYgbGVnYWN5LXRydW5rCis2NjA3MiA4NGJkZDUzZTM5MDY0ODZkZWIxYzE2ZmYxZmUzODU3MzI0ZWYxN2MzIGxlZ2FjeS10cnVuaworNjYwNzMgOTYwNTg5ZDJhMTJkOWFkNDM3OGU1NzdjNzFmYWQ4Y2JkNmRlOGIwOSBsZWdhY3ktdHJ1bmsKKzY2MDc0IGZhN2I2MWQyYmIzZDdjYzdjYjc4MWU2MGZiYTkxNzJkNDJlNGQ0ZjUgbGVnYWN5LXRydW5rCis2NjA3NiAxMWQ4ZmEzYzg4ZDhlODM2ODFkYzNhZWM0MWJjNjFmZGY4MWJhMDdmIGxlZ2FjeS10cnVuaworNjYwNzcgNDhjNWViNTEzMzcwZDhmYThkNGUyZTQ5ZDljNTdhNWE0NDc2NjBiNyBweTNrCis2NjA3OCBiNTE1NjkwYjM3OWQ3ZGRlYWI1MjgzZWEzZTA1NzFjMzMwMGEyZGEzIHB5M2sKKzY2MDgwIGY2Nzk2M2NkNDM5NTNjYzFkOWVlMDUwYTFiMTVhYzhjNDI3OGVmOWMgbGVnYWN5LXRydW5rCis2NjA4MiBhMWQ5ZTgzYmM3NmRhM2FlZTI3ZGE0Zjk3ZGRlMmRhOTBmODY5MGE0IGxlZ2FjeS10cnVuaworNjYwODMgZWIxMzRlZWUzMjMyMjYwMDM3M2Y1NDhmNjg2YjM1YmY5MGRjMDc4NCBsZWdhY3ktdHJ1bmsKKzY2MDg0IDM2YWQ1ZTdlMzliNGZiZDk2Y2MxOTgxNGVkYzdlNzA2YTIyNWFhMTMgcHkzaworNjYwODUgOWMxNzVmODg2MGUyM2RmMzZlMThhMGQzMTgyZGEwZWVhNDhkMDhmZSBsZWdhY3ktdHJ1bmsKKzY2MDg2IDIyMWRlMTM5NDY4MTEzY2Y1ODkxMTFkODQ3MzI2NGMyYmIxM2Y4NDMgcHkzaworNjYwODggODFhMWExNTQ1MTcyMmI4MTk1ZjU3NzRhNmRjOTRkYzU1M2FkZmMzMSBsZWdhY3ktdHJ1bmsKKzY2MDg5IDVkYTZmMjFjZjgwNTk0MjFkMWQyNDY0ODRjZWRjYzRmOGRkNTViZmQgcHkzaworNjYwOTAgZmMxMWE5MDRmNmNkMTc5MGFmOTIwZTg0NjEyMzk4MTM0NWUzYjlkNyBsZWdhY3ktdHJ1bmsKKzY2MDkxIGJlZTZlYjc2Nzc0MjdmODNkYTk1NjZhYjY0YTRjYTcwZWM4MGUzYTEgbGVnYWN5LXRydW5rCis2NjA5MiA2MjRiNDRiN2NkZjI5MjE4NGZmNzQwMWI4MGQ2NzU1NGJkZDkxNWVkIGxlZ2FjeS10cnVuaworNjYwOTMgYmU2M2VjNzQ4ZWUwNjRhMjA2ZjNhY2NjMDJhYmIxYzE0N2EyZmJjMCBsZWdhY3ktdHJ1bmsKKzY2MDk0IDdlMTk0YjljYzBhMmI0ZDFmMjRkMGY0OWNlZGZmNWNmYjA5ZmJiYWUgcHkzaworNjYwOTUgYjRjMTRiNzBmZTBmODE5OWFjNGJmZDEyOTY5ZmJkNjYzYzA0YjNlMSByZWxlYXNlMjUtbWFpbnQKKzY2MDk3IDdiMzk1MDFiMGE3NjI0N2MwOTIwNmQ3MGViMzkzZTliMDgzZmViYTcgbGVnYWN5LXRydW5rCis2NjA5OCAxM2ZkZjk4ZWEyOTAwMTMwNzJlNzZhMWUwOTcyODgzYzQyMGM4NmFhIGxlZ2FjeS10cnVuaworNjYwOTkgMTc2YzQwOWZkNzQ3ZTgxMmEwNjcyZGRhYThkYWMwMDAxYWYwNTZlNyBsZWdhY3ktdHJ1bmsKKzY2MTAwIDhjZGE2MTVlZjIyYmI3NDhlMGVlMzU5NDQ4MTRlZDlhZjk4M2FmM2QgbGVnYWN5LXRydW5rCis2NjEwMiA1ZmEwZDMxYTY3MWI3ODEyYjBjZWY0ZTM5Mzc2MmE2M2ZiZjFjZTYwIHB5M2sKKzY2MTAzIDU3NjQ0MTUyN2Q0ZjdjYzNkYjcwNjkyZDM0NDZhMTlhMjJiMTE4OTEgbGVnYWN5LXRydW5rCis2NjEwNCBlZDU5ZjNiNjdiM2FlM2MxMTg3NGI4NzVlYjRjMmUzOWU2ODQzZjdiIGxlZ2FjeS10cnVuaworNjYxMDUgOWRiM2ZlNzgwYmZjNmExMDIwZTg0NmNlYWY1YTgwYzAyODhkMmVmMCBsZWdhY3ktdHJ1bmsKKzY2MTA2IDkyNTE1MzIyNTU3MGMzYjhlMjJjZTU4OTFkY2M5YjcxZjQ0NjkzYjggcHkzaworNjYxMTAgNTE5ZTA0NzU5OTFmNzZiODFkNTMwMTU4NDc1NjMxMDM5NTlhNmY5NSBsZWdhY3ktdHJ1bmsKKzY2MTExIDY5NmY1ZDg0MTlmMjA5Mzk1YjNmNjIxNzIzNDc5ZWQ2NTA5YzRlYjAgcHkzaworNjYxMTMgN2VjZWMxYjMwYzNmNDA1MzE3MTA1ZmQ4MzVkNThmMDE0MmM0YjNlMiBweTNrCis2NjExNCA5ODg2NjFmZmQxMDI5Y2IwMzdmNjI0ZmUyNDQ4YzEwOGNmODViOWJhIGxlZ2FjeS10cnVuaworNjYxMTUgNTFmNzk1Yzk1MzBlYzBiY2I0NDE2ZTlhOWM2YzBhYmQzMDU1YTFjYSBsZWdhY3ktdHJ1bmsKKzY2MTE2IGE1YTA3MWM4MGYyZDI1Mjk0ZTFiNDcyMzQxOTUwMmM5ODFiNTc0MjkgcHkzaworNjYxMTcgMTJmYjM2MjZlZTU5ZjE4ZGVmODI3ZTA1Mjk0ZDEyMTYzNGIxODRmMyBsZWdhY3ktdHJ1bmsKKzY2MTE4IDM3YTlmNjkwYTk0YTlhY2IzOTIzMjc1MTZlNDMyMzA1OTYzODU0NWEgbGVnYWN5LXRydW5rCis2NjExOSBiNTM2NWYzNDY0MGYyYzY2NGMxOTIyOTRlYjYwMzU1MjkxZmNlN2FjIGxlZ2FjeS10cnVuaworNjYxMjAgNjZlMWFmZDMzNDVmZGIwYmI0YzFmOTdhOWQxNGQwYzFjMGM4MThkNCBweTNrCis2NjEyMSAxNmMwM2Y3Y2JjMjIxZjk0MDVjMTM1OWJiMmE3M2ZmZDQ0ZjIyODkyIHJlbGVhc2UyNS1tYWludAorNjYxMjIgMzJjZTQwMmE3ZTNkZjIwYzBmNWNlNTBlOTM1NDg3NGIyNDBkYmNlYiBweTNrCis2NjEyMyBlNjAyMWFhZDJkZTJkNWVjOTk0ZjY3NjYxMDJkMWU1YjEyOGVlNWUwIGxlZ2FjeS10cnVuaworNjYxMjQgNjgwYjA3NmQwYzEzYTAzZjMzNGE2NzQ5ZmE0NDYzYTVlM2IxMTUxOSBweTNrCis2NjEyNiA0ZmM0ODBiZTFlNGQyYzY3OGEzOTJkNDNhMzlhNDg3NjJmMTlmOTM0IHB5M2sKKzY2MTI3IGJjNTg1YjRkNDYwNmI1MmMzYzdlNTFkOTYyZTVmZjE3OGY4YzhiNmIgbGVnYWN5LXRydW5rCis2NjEyOSA5ZWQzMjg3YmVlZjE4YTRiN2JhYmEwNDEwMWRiYzIyZGMzYWZkZjhmIHB5M2sKKzY2MTMwIGFiYTg1OThjNzg1Y2E1M2UzMzYyMWQwYThhYTRiYTM2NDE0OWNmMjAgcHkzaworNjYxMzEgMjM2ZmNmMjkzOWM3ZDUyMzg5MzRjNmUwZDgzMDA1YmQyZDFmNWQxNCBweTNrCis2NjEzMiAzYjk2MDgxMThmOGQ4N2I4ODExYjM3YTQ2YTA3NDkwOTUyNDkxZmY4IHB5M2sKKzY2MTM0IDhhMTA4ZDU0ZWYwM2NhYTFiOGQ3YmE4MjA3NjJkZjBhZWIzNTRiMDUgbGVnYWN5LXRydW5rCis2NjEzNSBkNTYzNjIxZDc2ZGI0Zjk0ZTc0NWViYzYyYjkyMTc4ZWEzM2RiMmNiIGxlZ2FjeS10cnVuaworNjYxMzYgY2QxODYzMDZmMzg1YWM4Y2ZiZTYxODc5ZjQ4NGNiMTFiZmYwOWQ1NCBsZWdhY3ktdHJ1bmsKKzY2MTM3IDhjNGY3NTA2NjFlYzM5NDQwNDlmMGJlNTA1MjBmNGQwNzE4OTgxZjkgbGVnYWN5LXRydW5rCis2NjEzOCA0YzE3NzBhNTVhODVlNWRhMzMzZTdlNGVkZTBhZTEzMDRjYjU4OGNjIHB5M2sKKzY2MTM5IGNhYTQxZTE2MWIwNDExZjQwNmM3M2UxOGU4OGNkODdmMTc1OTNiNDkgcHkzaworNjYxNDAgM2JkYzQ2ZmFlZjRkYThiMDZkMDcyOTVjY2ZhZDhjMDcyYzZjMTI3YyBweTNrCis2NjE0MSA0YjI4YmY1ZWUzOTNiNDNiYTQ5YmI4ZTg1NWM5ZDE2MDkwZDY1N2Q1IGxlZ2FjeS10cnVuaworNjYxNDIgOTllZTNiNzdiYzBkYjJmMmFlMmEzYTg3YjEwNTg0M2YwMDUwMTU5MCBsZWdhY3ktdHJ1bmsKKzY2MTQzIDE4OTc3NDNiMzE1ZGUyYWY1NGJiY2E3MDhjMmJhMjE3NTAxMGVlYzIgbGVnYWN5LXRydW5rCis2NjE0NCA0ZGE0Zjk2Nzk2NzI1NzQ0ZmMyZDQ4N2QyZjUyNWVjMzQzNDRiZmFlIGxlZ2FjeS10cnVuaworNjYxNDUgMzc3OWZjOWRmZTVmNzM4OTBhYWE0NmUzYzdlZjEyZTRlMDZmZDkwMCBsZWdhY3ktdHJ1bmsKKzY2MTQ2IDM4ODg5Y2I0NTE4ODEwNWQ3MWY4MzljNTM2YjU2Y2Y0MzFhZjU2N2EgcHkzaworNjYxNDcgN2E2ZTZhMDRlMjhkMTQ5MmJhMTFjMDc5M2NkODhlNDlkNTk4YTliNyBweTNrCis2NjE0OSBkODNjZTRiNTgxZTYxNTZkM2E3YmFlYTAxNjFkYjRhOWI0ZmU5ODI4IHB5M2sKKzY2MTUwIGQwZDUzZGU5ZDgyZTJmMWU5NzhjMDU1MWM0NzY1ZTM3MjcyNmY1ODQgbGVnYWN5LXRydW5rCis2NjE1NCAzODE3Yzk2ZmQ1NDA4YTBiM2Y0MTZlN2Q2MzJlZmY2OGE2ZDY4NzllIGxlZ2FjeS10cnVuaworNjYxNTUgMWMxNGNlMDg1NDE1MWVhMDRlMTYzMWI2NmMxOTRhYWE2YWYzNWYwMCBsZWdhY3ktdHJ1bmsKKzY2MTYwIGJhNWM0Y2UxMmJiZGYxNmQ1OTRlMDI2ODRiMmZhYzE5MWNjNjEyOGUgcHkzaworNjYxNjEgNzUwZGEyZDE4MDg5MmVhOThiMmUwZGFmZmUwZTNhYWViMzc2N2EyYyBweTNrCis2NjE2MiBjN2ZkMGU4ODFjNDUzMDNhZDlhNDEyOTAzY2E2MTEwODJhZWY0MTYzIGxlZ2FjeS10cnVuaworNjYxNjMgODhjOTNhOWI0MTM3M2FkMWNlMmE2ODkxMWU4M2Y2NDcxYTcyYmMzZSBweTNrCis2NjE2NiAzYjc0ZDE0NjJlM2EwZjdkNGQ2MzJhNTA5MjJhMDgzODY1MjYzMjNkIGxlZ2FjeS10cnVuaworNjYxNjcgZjFhZTY5Y2RkNGZmZGJmYWI2N2FjNjA4YzMzY2NmYTQ5MDdmYWE2ZCBsZWdhY3ktdHJ1bmsKKzY2MTY5IGQ4MjZhNzU1NzFiYzk3OWY5ZDA1OTc5ODcxODg3ZDIyMjJlNWQ5OTkgcHkzaworNjYxNzAgNzg0ZDI0YTVjZTdiYWNjZjk3YzQzOGIzOTRlNjE5ZWUwYmQxYzkxNiBweTNrCis2NjE3MSAyZDgwZDAwYjFlZjM2MDMzMGE3Y2UzNDg0NzhlMDYyNmY4MzlhMzdjIGxlZ2FjeS10cnVuaworNjYxNzIgM2JkOTAwMmU3NDFmZmMzMDY2MmIzZTgwYjk0ZjlhNzExN2NjMjE5MyBweTNrCis2NjE3NCBlMmVkYzFjMTFlNTA3NzQ0Mjk1MjUyZjAyODU3YTMyY2VkNjRhMjhmIGxlZ2FjeS10cnVuaworNjYxNzUgNjM1NmE1NDE0ZDAxOWNmYTk5YzQ0M2Q0YzM0N2JiOTg0ZmQyMzAxOCBsZWdhY3ktdHJ1bmsKKzY2MTc3IGJmMDQzZDBkYjdkZmM5ZmE5N2FhYmI1NWQyNDk4MjIzZDc4ZmZkNjUgbGVnYWN5LXRydW5rCis2NjE3OCA3NWM1YTJjOTM3NmU5YjQ1ZDY0MWM3NzExMzg3MjU3MGUwZGY0ODQ2IHB5M2sKKzY2MTc5IDJhNjBmN2I0MjMyOGRiMTRhMmU5N2I0ODk1MGNlY2I4YzVkNGZhNTMgbGVnYWN5LXRydW5rCis2NjE4MCA1ZmQzOWI4NGZjMjkyYzllNTA2ZmJmMGY0MDA5MTI0NGYyNDM2MzEzIGxlZ2FjeS10cnVuaworNjYxODEgNGM2ODNlYzQ0MTViM2M0YmZiYzdmZTdhODM2Yjk0OWNiN2JlZWEwMyBsZWdhY3ktdHJ1bmsKKzY2MTgyIGI5ZWQxNGViOWU4N2JmYzZhZjdkMzYxOWE1YjU2NzQwODRjMGE5MmYgbGVnYWN5LXRydW5rCis2NjE4MyAwZjY5MzBhNDMzNjI4YzdiNTVlMWEzNGQ4MzM2ZGVmZWY0ZDdhNzBlIHB5M2sKKzY2MTg0IDMzODMwOGM5Y2NjYmNhZjcwYjJjMzA1ZmEwZWJmYWQwYWI2YzEwYzAgbGVnYWN5LXRydW5rCis2NjE4NSAwNmY1NGUxMWEwOGI0YWI1MDFhMTA5N2RiN2Q2MTc3NDY1ODM0YTE5IHB5M2sKKzY2MTg2IDIyYWIxMDZlMzE4NmI1ODQ5NDYwZDFmZjNmOTY5YjI0ZjcwMzNlMTQgcHkzaworNjYxODcgZjgzZGNjZjQxN2YwZGE2ZDNkMDY3NWEyNWRmN2M5NDI0NzczNTUxOCBweTNrCis2NjE4OCA5MmEwMWZlMjRhZTA2NDFhZmVkMWE5ZTQyZWY4M2ZkMWU4MTEzZGMwIHB5M2sKKzY2MTg5IDYxNTQ1MTZiZTQ5Y2RjOTRmYjNiYTkzMzFhMjgyNzcwYTAxMzFmOGUgcHkzaworNjYxOTAgMTRmYzE2OTI2YzAzZmM4NTg5MjA5NzY2YmU2MmVkYmU5ODE3Y2ViMSBsZWdhY3ktdHJ1bmsKKzY2MTkyIDAxZjJkY2UwNmY3ZDEwMmZiOWQ0MzI2MzNhNzM1YTk1ZTYzMTdhZmEgbGVnYWN5LXRydW5rCis2NjE5MyBlNmM3YjZmYTA3NzFlNDBiODdiMDczYzI3ZjllMmIzZTY3MjkxN2U1IHB5M2sKKzY2MTk0IGE1Mzg2MTAxODY1Yjk3ZTBlMzg3Mzk4NmJiNDY5YmZlNjMxNmYxYmUgcHkzaworNjYxOTUgMTc3ZThhNjFhZjQ1YzUxNDBkZTA2Yjc2MjMzNWI2MDE4YjVjZWRlNCBweTNrCis2NjE5NiAyYjg1NWE5NDdmMGY1ZjYwNDQ4YzE2YmM0OTViYjg3NGY3MTFlOWIxIGxlZ2FjeS10cnVuaworNjYxOTcgZTBhYjViMjg2MTI0NTZjZTc4ZjkzYTZkNGQ0OWE4M2U4NjU2NDZlMyBsZWdhY3ktdHJ1bmsKKzY2MTk4IGU3YmNmZDcyMDg5OGFiYTQyNTc5ZDJhZDk1NzIxNDg0NjRlNzA5OTQgcHkzaworNjYxOTkgNjVlMjM2ODNjMDEwYzNkYTQ3MTljMTU5MDM1YjJlNjhkMjExN2NiYyBweTNrCis2NjIwMCBlMzg0N2U3YzI0ZTAzMmU0YTE0Nzc3YThjOGZlZmRlMTczNmM5ZDU1IHB5M2sKKzY2MjAxIDk5NTdhMzZmYzE2N2VjY2QzNzNjYzZkOTA5MWNhYWJlY2U2YzkyNTYgcHkzaworNjYyMDIgNWI3ODQ1ZWY0ZWZkMGQ5YWJjNGFjYTVmZjlmN2ZiNTMzNTY5NDA1MyBweTNrCis2NjIwMyBjNTMyMzRmZjYxYjAwZjRkZmVhMDlhYWVjMDAzZTU5NDQ4MzllNTcwIHB5M2sKKzY2MjA0IDgxMmVhMTA1YjFiMGVkMGI5ZjExMzA1ODJhYzZkOTcwZDJlYmQ5ZTYgcHkzaworNjYyMDUgZjcxYTg5MjhjMWI3Yjk2M2E3NjhiNDMxMDk0YWI3ZThkZTY4NzVjYiBweTNrCis2NjIwNyAxNDI0OWJjYjkzZDBjYTY1ZDlhOGE0YjZkY2IxMDk0M2I0MTdhNjFjIHB5M2sKKzY2MjA4IGM1YmU5NDg0YjE0YmQwN2FmNGU4ZDQ2M2FiOGE3YmEzODAxMGU5OGIgcHkzaworNjYyMDkgNDVjNDM4MDg5NzllOTU3NjM2ZWQzZDkwZjE0MjFhOTA5MjAyMGVhNyBweTNrCis2NjIxMCBkYzc3NGNlMDFjMWZhMmI1OTMyMjY1ZWNlYmVmOWIwOWQ0N2Q5MWYzIHB5M2sKKzY2MjExIDgzM2QzZWNmYmJmMDkxMDk0MzdiMDM2YjQ2ODQ4MjA1NTg2MjQ1NTAgbGVnYWN5LXRydW5rCis2NjIxMiBiMjY2NTg0NzZkNTU1OWYwMzFiOTQzYjgyYmMwOWY5Yjk2MGQ2YjVmIHB5M2sKKzY2MjEzIDMxNjkyMzY3NzNmMWI3NWIzMWRmY2VjMjg1MDc2ZTRlOTExYTA1ZDMgbGVnYWN5LXRydW5rCis2NjIxNCAyYzJiZWY4ZmZjYTEzOGZkZDNiMWIxZjMxNzkwYjAxNTJmYWUwNWFiIHJlbGVhc2UyNS1tYWludAorNjYyMTUgNWMxMGFmOGQzM2Y1Y2QyZGUzMmRjMTUwYzAyZTFkMTUwOTljNWUwOCBweTNrCis2NjIxNiA5NGNjMTFlYzdlYzIwMmUzMzY0Nzk1ZTcyOGFhZGI2OTUzY2MwZjFlIHB5M2sKKzY2MjE3IDViNzZhM2U0NWFiM2UwMWI3OWFjZWZmNGMwZDBjM2ExMmM3NjI2Y2YgbGVnYWN5LXRydW5rCis2NjIxOCBhZTJjMWIyNzVmZWIzYWFkYjJlMjQ0NTcyMzdiMzVlOGRmNzkyYTIyIHB5M2sKKzY2MjE5IDQ0NTJmZjFmYmM5ZDUxMzQyYzJkNWNmM2U1MWQxOTk5YzhmNmZmZDMgbGVnYWN5LXRydW5rCis2NjIyMCBiNzU3M2VmMjRjNzE5ZWMxNWJmYTM1MTIzMjJkNDMwMjk0NmQxYWEwIHJlbGVhc2UyNS1tYWludAorNjYyMjMgN2Y4ZWY5ODI5NGJjMTFjMzc1Y2U2MmJjZmUzNGJlYjk2ZjhjY2Y4OSBweTNrCis2NjIyNCAzZmEwNjZkMmEzOTdkYzcwODU0YWEzMmQ4MTcyM2U1N2E2MGMyMjRkIHB5M2sKKzY2MjI1IDZiMDRiYzQyYmFhNWJhN2E4ZDc2ZTNlMjVhZGY5NzlmNTEwMzlkY2UgcHkzaworNjYyMjYgYzYxODNhODk4ODBlNjI4MTNiNGQ0Y2RiNmJmN2U3YzVkNzM5NzQyMSBsZWdhY3ktdHJ1bmsKKzY2MjI3IGZkZDkzYmZhNmMxYmE1ZTc1Yjg5MGY5OGZlMDc3YzliYjQxYTBlOTQgcHkzaworNjYyMjggYTY2MjAzNDNlM2RiNDdmOGJlNmYyNjI0MGYxODVkZjI4ZDA0ZWRkMCBweTNrCis2NjIyOSA4YWZhNzcyM2FmYTc2YWQwN2EzODE0ODY4ZjQ4ZGVlN2UwZjdiNTYzIGxlZ2FjeS10cnVuaworNjYyMzAgYjQ4NjY0OWNhOGJjZTIwMTdhMmEzMjg0OWViYWE3YjNmYmUwNTI0MCBweTNrCis2NjIzMSA4OWE5YmMxODU4NmExNzMyZjFhZDIxNDhkZTUwNzY0MmQxNmVhMjQ5IGxlZ2FjeS10cnVuaworNjYyMzIgYjQ1ODY4ZmU0ODljYjIzOTNmZGEwZTE0NTMwYTBjODE2NDk4NjY0MCBsZWdhY3ktdHJ1bmsKKzY2MjMzIGU3ZTcwZTg4MTE2MGJhYjMzOTQ4Y2VlZTBkN2FlOWE0MTM2OWNmZDUgcHkzaworNjYyMzQgYTY3N2Q2OGU4MTA1YzlhZmRkOGE0MmUzZDIyMmJmMzMyOWZjYmIxZSBweTNrCis2NjIzNSA0MzMyMjBhNjBhOGQwMzUwZjQwNmUxYjE1ZjA3MTJkOWI3YjZjMTUxIGxlZ2FjeS10cnVuaworNjYyMzYgOTdiOWYwYmU5Mzg1MjQ5ZjMyYjY2NjJiZmVmZjM1YWY0ZGFhMjY0ZSBweTNrCis2NjIzNyBlNzQwOTY5NzM4ZWYxZjhhZjVmYmY4ZWM4NTQwOTE0OTQyNTI1NWQwIGxlZ2FjeS10cnVuaworNjYyMzggZWNkN2Y1OTBlMTQyNDc5YzE2ZWVhYWVkN2I1Zjc1YzhjMjM5OTM3ZSBweTNrCis2NjIzOSBkYWI3YWJiNzdlOGY4NTUzMmIyN2I2YzRjZjM2N2JlN2M3NjdlZDBlIHB5M2sKKzY2MjQwIGYzMjUxN2Y4NzZiNjdjMWM1ZjFjOGYyMTQxOGQ5YTQ0Y2YxZWJhYjQgbGVnYWN5LXRydW5rCis2NjI0MSAyNmJkZDk0YTQyOTM3NzZhMDc3ZGIxNDEwNTgwODk1ZDgwNDFhYzFlIHB5M2sKKzY2MjQyIGMzYjgxMTIxNGNlOGZhYWQwMTg2ODMzM2YyY2I0YjBhOWJjYTZhOTAgcHkzaworNjYyNDMgMjM4YTA4OWQ0MmJkNjJlMDg3NmU5YzNiMDVkZDAzYWQyOTRhYTExMiBweTNrCis2NjI0NCBkYzA3MDlhMmI0MmY1NzcyMzRhODYyODBmNTdmNWM0ZTI0OTAxNmVmIGxlZ2FjeS10cnVuaworNjYyNDYgNDg4MmU0YzQxY2UzZWZlYjViYzJmMzUzYWE4ZTdkNTkzNDA3MzYyNCBsZWdhY3ktdHJ1bmsKKzY2MjQ4IDE5MzM4MjQ3OTI1ZmM0Y2Y5Y2UzMTUzYzI2NzI2MWQzZTJlYWRkNDAgcHkzaworNjYyNDkgNzUxZjFiNTY5OWJhZGU0ZTgwNjU3YTgxMThhOGQxZThhMDkxNmI5NCBsZWdhY3ktdHJ1bmsKKzY2MjUwIDEyZWY3YTkyZTU5YmJiMjQ1ZDhjOTMzNzUwMDIxOGQ0NDYwZGU3MjUgbGVnYWN5LXRydW5rCis2NjI1NSA2NjIzMzZkNTY3YTllY2U2ZTFiMzhhZjQxNTVjN2MxM2E2MjRiZTA3IHB5M2sKKzY2MjYwIDZlNzFiMzk4YjZjY2RmZjY4M2FjMTIwMDEwMjRmMDBlZmJlNjRhOTYgcHkzaworNjYyNjEgZjgzNjgxNDJmOGQzYjQyOWYxMWM4NGFjOTkzOTJkMTAzYzMzOGVhZSBweTNrCis2NjI2MiAxNWRmMjk3MDVlMTgyYTEyNzYyOWY2NDZjZWNlMmY0ZDAyYzljODYwIGxlZ2FjeS10cnVuaworNjYyNjMgNGRkNTk4OTE0MzgzNDdjNTg0NDM2Zjg1OGRhNDVlNDEwMWI0OGYxMiBweTNrCis2NjI2NCA2NzAyOGY1YjMzMjFjYzNlOTUyM2QxNTcwZTNjMTdmNWU5YTdjMDIwIGxlZ2FjeS10cnVuaworNjYyNjYgYzFhOGY2YjY0OGVhNTFmMWNhOWEyZTU3ZDYyNTFhZjNhZTlmYjkzMCBweTNrCis2NjI2OCBiYjBmNzQyOGExNTA3ZGViYTcyMmYxYWNhOTllYzJiMjA5MGNlM2YwIGxlZ2FjeS10cnVuaworNjYyNjkgNjc0NmM2YmVlMjg2MDkzYzMxZWRiODkwZmRiZjIzNTk1NTU1OTMwYyBweTNrCis2NjI3MCBlMjdjZjdlZTI5NjhiM2ZhZTkwYTNlZDFkYWRmNGVjZmNlMmE1OTE0IGxlZ2FjeS10cnVuaworNjYyNzEgY2ExYThhYzQ3ZDA0NjFkMTMyYTczNGMzMTI1ZmJmYmIwYjY5MWQ0NSBweTNrCis2NjI3MiA0NDVjZTY1NzUxNjJlYmQzZjk5NGFmN2IxNjAwN2UwMmM4ZmEyOWM1IGxlZ2FjeS10cnVuaworNjYyNzMgOGZmZWMzNzIwNDBlNDdhOWIyNjA3MDIxOTE3NzQ1ZWU3NGJhNjhkNyBweTNrCis2NjI3NCAxNzlmOGQ4OWFkMTlhNmJhNGY0NGE2ZWRjOWZiNWZlMWU4N2ZhYTQ0IHB5M2sKKzY2Mjc1IGZkYTY4OTk3MGIzZjgyOGE2ZGEyMjUzYTRiY2JhYzJiNjM2MDA2NDcgbGVnYWN5LXRydW5rCis2NjI3NiAwMjYyN2I5MjVhNDNjNzE5NGI1ODI0YjFiMTBhZGY5YmUxYzhjODgxIHB5M2sKKzY2Mjc3IGZkYzA5NDhjOTVjZjE5NzliMDUwMjZiOTA5NmFjNDgyMTliYTY5ZmYgbGVnYWN5LXRydW5rCis2NjI3OCAxMzk1NWJjZDA4YmUxYTVhYWMyNTc1ODIwYmFmOTg2YTJmZTBiZjYxIHB5M2sKKzY2Mjc5IDc3ZTFiOTVmMTQxOGIxMzFkNDNiMWJmM2I2ZTNiZWI1ZGFjYjFmYWYgcmVsZWFzZTI1LW1haW50Cis2NjI4MSBjNmIwMmY3OWIyYmMzYTM1NjA5Y2JhZjhiMjA2MTM0Y2EyYmI4NDBhIGxlZ2FjeS10cnVuaworNjYyODIgMmVjYjU2ZTZlMGE2Y2QxMzJhYTkxMTQwYTQyNzUyZDc1NjU5N2U3NyBsZWdhY3ktdHJ1bmsKKzY2MjgzIDc1MTBkODczYjg4YzMwMzBlMTQ5OTI5Y2UyOGYzZDY5ZGVkNjExNTggbGVnYWN5LXRydW5rCis2NjI4NCAzZjJjNGNlMzJiYTQ3YTJkMzhhNDEyMmY5Yzg2MGVjNzg5NzEyYmFiIGxlZ2FjeS10cnVuaworNjYyODUgOTBjZmM2YjkyNmM2ZjU0NGI0ZGQ2NDI5ZjY3YTAyYmZhNmRmZmIwYSBweTNrCis2NjI4NiA0NzMzZDg0ZjM0ODhiNGRlMTFmZTUwYjkxNGQzM2IyMDY1NWU2NTM5IHB5M2sKKzY2Mjg3IDczNTM2YTU4YWI0MjYxZDJiNWI3NzZjZmYyOGZiZjU5MDY5NTc5NGYgcHkzaworNjYyODggOGNmYmIyZTI3NWQ5YzkxNTRhYTBlYzJiMWQ1MjU0NThlNTgzNDdjOCByZWxlYXNlMjUtbWFpbnQKKzY2Mjg5IDk4N2RiN2FmMDcwMDJhMTJjMDNlYmVmOWIyYTAxZDRlOWJlMmM2MTggcmVsZWFzZTI1LW1haW50Cis2NjI5MyA1MjNkNmQ3ZTU4MjVjMjdhYzA2M2E3MzkzYjllMTE0MWQzNDc2MmE3IHRsZWUtYXN0LW9wdGltaXplCis2NjI5NCAzYWY2YTcwMjA3MGI0M2E0ZWE0ZDQ1NWJjZjZlNTNiNjRkNDNkZTM0IGxlZ2FjeS10cnVuaworNjYyOTUgYTFjYWU5NTU1ZjVkZjgyODU5YzdkZGI2NWNkNzMzYjQzNDE5ZDIyNiBsZWdhY3ktdHJ1bmsKKzY2Mjk2IDJhYjA1MjkyMzdjYjFhNTAwMDhhOGMwNDU4MDU2Yjg0YjkyZDM5NmYgbGVnYWN5LXRydW5rCis2NjI5NyAyNjExZThhZTIzOGZkNmYxY2U2MzQ1OGJjYmExM2E1ZDAyNTJiM2E2IHB5M2sKKzY2Mjk4IGQ3OTQyMzgxNTBkMjJmYzRhYWYxMDNmZTY3MjRiNTc5ZGM0Yzk0ZDAgcHkzaworNjYyOTkgMDVlMjVkN2EwN2UxOTg3ZjU1YzE0NzZkOGQwODU1YTFkMzg5NTIyNCByZWxlYXNlMjUtbWFpbnQKKzY2MzAwIGE5MzQ3Y2I4YWMzODA2NzJkYWIyNjA0ODhjNmMxODRlYTg0OGE3ZDUgcmVsZWFzZTI1LW1haW50Cis2NjMwMSA3YjFmOGVkZTliNTM0M2U4Y2Y0NjliNmZiZDYwOTUxMmY4YzI2ZjBkIGxlZ2FjeS10cnVuaworNjYzMDIgZjA4NWYzOWE2ZjRkMTIyMzFlNmQ2NjlmYjg3MmNkZTBmNDk2YzE1NSBweTNrCis2NjMwMyAyNzFkY2UwOTE3YzEwNTc1NGMwMjYxMGIzNTljMzAwMjViZWI4MTE5IHB5M2sKKzY2MzA0IGFhMGVmNWRlMzQ1YTc4OGY3Y2NhZmQyNDBlM2JiZjE0NjE4YWM3MTcgbGVnYWN5LXRydW5rCis2NjMwNSA1NjhhYjU4MzcxOTRkODk5ZTExZmVkMDFjMjcwNWNiYzFhOTg4YTViIGxlZ2FjeS10cnVuaworNjYzMDYgZmU1MzYyZDkzNTQyNThlMTkxOWM5MGQwNjY4ZTA0MzUwZTY4NTgyNSBsZWdhY3ktdHJ1bmsKKzY2MzA3IGQ2MWI5NTZiMGJmNjQ0YzMwOWYwZGYyODU2NzhhY2NlMjk5OWQ0YWEgbGVnYWN5LXRydW5rCis2NjMwOCBkZTZlZWYzMWFhNWY3Mjk4ZTFhYTdjODNkYjY2MTllZGFhYWVlMmJkIHB5M2sKKzY2MzA5IDUwOTQxYmVmZjAzMjhiNGY2YjI2NWEwMzFkYWM3ZTc4NzI2NWM2ZDYgcHkzaworNjYzMTAgMzdiNzBjZDRhMGYwZDEwZmY5ODhhMDdmMDUyZGFiNWI0YjA4YWZlNiBsZWdhY3ktdHJ1bmsKKzY2MzExIGFjM2I2NzA0MzM2MWVhNjI5MjEzZWNmMjg1MzY2NGJhZTdmNGJmNDUgcHkzaworNjYzMTMgYmY0YmM5NzNlMmFhZmIzMzhmZjcwN2EyY2I5ZWUwZDYxODJiMDViOSBweTNrCis2NjMxNCA0NDcwMmUyNzM3NTA2YzUyN2JkYzNiMWM1MGEyOTg5M2YwZGE1MDNmIHB5M2sKKzY2MzE1IGM4NzEzZmIwNWY5ZTRlODM0MzE4ZTU0YTVkMGQ2NTkxNGJjMzcxMDcgcHkzaworNjYzMTYgOTczYmRiMmRiNmFjOTZlMjcwZmM1MzJjNzYxOThkM2RiZDdiZjNhOSBsZWdhY3ktdHJ1bmsKKzY2MzE3IDRkMTQ4YmI4NGEwNzdiMmE5ZmEzNzM0ZmY0ZDNlMzZhZjJlNjY1ODAgcHkzaworNjYzMTggODZhNDJlOWY3M2RjMjE5MzAxNjkyYTI3ZGU1ZmZjMzdkYTI4OGQyZiByZWxlYXNlMjUtbWFpbnQKKzY2MzE5IDIzYjQ1MmFjMWE1MGE0OWZjNDljNzIwMWZlNzVmOWMwM2NlZThmMmMgbGVnYWN5LXRydW5rCis2NjMyMCA5NjRkYjg3OWYxOTBlOWRjY2IxZDZmNWRjZTcxMDdjNWQxNTQ0MTYyIHB5M2sKKzY2MzIxIGZmOTZhMzEzY2QxYzgzOWJhMzFiMzU0MjMxZWNlZGFkZjQyMDc1YTggbGVnYWN5LXRydW5rCis2NjMyMiAzZTZlNTY1ZWUzMGFkY2I1ZWMwM2E1ODBlN2ZhMTk4YTI0ZGE5N2UyIHB5M2sKKzY2MzI2IGM0NmJjY2NmMmFmMmU0NzcyNTc0OTVkOWFkNWE2YjM3OTcwOTE0M2MgcHkzaworNjYzMzAgYjUyOGNiZWE2MGUxYzUxNWYwODAyNjlkNGEzOTNlNDA4YTY4NzE0ZCBweTNrCis2NjMzMSBmNzEyM2Q0NWQwYzQzZTlhZTBlODE2YTYwNzhkMmQwZDE1M2IzNTFmIHB5M2sKKzY2MzMyIDk3NDA0MGM4ZjM2OTYxMTA3NDlmOTAzNDk2NjcyZTM5NTcxOTBhZDYgbGVnYWN5LXRydW5rCis2NjMzMyBmNjY1MGYyNDc1OThlMmQ5ODZmODYyMGZiZDQzYTE3YzRjMzZlMzFmIHB5M2sKKzY2MzM0IDcwODdlYTgyOGRkYTJmYjU5MjcwNDJjNTQ5MTk2NjJhZmQ1MDY0ZjIgcHkzaworNjYzMzUgMGY0NDU3Y2YyNWIyY2ViYTA5OGY1NGJiOGM3MzlhMzZhZDJlOTg3OCBweTNrCis2NjMzNiA3NTY2MzdhM2FjNGJhMjYxMDE0MGExZTQzZGYwNDMwODNlZTM3M2IwIHB5M2sKKzY2MzM3IDM2YjJkNjc0ZmM4YzUzZmQ0MzAzYzNjNGY0YTdhMTU1YzVkYzViNTcgbGVnYWN5LXRydW5rCis2NjMzOCBjZDYxZDU0ZmM4YzA2NGQ3MzY3MTgxNmE5NjE0NzNjNmEyOWI2MmQyIHB5M2sKKzY2MzM5IDI5MDk0ODQyYjM3NzZhOWY4YmU5Yzk4NjYzYmI0ZDYwZDYwZDY5ZjkgcHkzaworNjYzNDAgYTkwYjI4NTQ1OGFiMDE3ZTFmZTI3NGYzNDQ5YjY5MzMzMDdkY2IxZSBweTNrCis2NjM0MiAxMzlmNmJhZWY2YzIzMDgzMTNhMTQyZjc1YTYzYTFkMjRjODNlNmNlIHB5M2sKKzY2MzQ0IDQyNDllNTgzOTdlZjAxYzFmMmUyYTdjMjgwZDJhMWZlYzZlMTlhYTAgcHkzaworNjYzNDcgNmYwODI3OGJmOGIxZjVlYTk4N2FlNTU5MWE5OGJiZGMyZWFmNjlhNCBsZWdhY3ktdHJ1bmsKKzY2MzQ4IGRjMGNhZTFlNmFkYjE1NjE5NDBkZDBiNjg3OTY4MzkxMzNhNWQwMmMgcHkzaworNjYzNDkgNDlhOTNjMDJhNmQyMTMxN2ZhNTI2MWY1ZDM0NWI3OWQ2N2UyODRmZCBweTNrCis2NjM1MCA3NTNhNzZiM2VlYTkxZGQxOWNhODliNjIxY2JiZTZkYzQ2OTUxZGExIGxlZ2FjeS10cnVuaworNjYzNTEgNWMwMzg4MWMyMDc1NTE1MjU1MmY2YTI4YmE1NTJmZGVkMzUyNGJjMyBweTNrCis2NjM1MiA3M2NjN2I2MzU1YjgxNzZhOTViNTU5MTg1ODliZTRlZmQ2YmUzZmMxIGxlZ2FjeS10cnVuaworNjYzNTcgZGMxOWExYjdjNWE2MzQ0ODA1MzU3Yzc2OGJmNWQ1YmFmZmMzOTdhMSBweTNrCis2NjM1OCAyYzJlM2E1NmM3YmNjODY3MjNjMTRkYThhOTQxOGFkM2U0NmJmNGMxIGxlZ2FjeS10cnVuaworNjYzNTkgZTkwYTNmMGE5OTI4YWQzZWI0ZWU3ZWFjOTYyMGU1Njc3ZDc3OTRjYSBweTNrCis2NjM2MiBjMzdjN2RiZDc4ODBkYjAzNDVjYTdlOTdhMjI2YjExY2JmNGM4NWNkIGxlZ2FjeS10cnVuaworNjYzNjMgZGM2MDI5M2IyOWQ1MTE5YmY2NzcyOTk2YWU3NTRkMTBkYjJjOWE5ZSBweTNrCis2NjM2NCA5NWFjNjk4MzU4YWJiMzRkODAzNGU0ZGY3YmVjNGYwN2U0YjVkODkyIGxlZ2FjeS10cnVuaworNjYzNjUgNzc1NjViZTFiOTU3NzBkMWYyNjQ0Nzc3ZTg4ZGE0YjM4NjlhZjRkZiBweTNrCis2NjM2NiA1MTMyNjZhNzVlYzMxZTExZTMzNzVkZTM2MzdjMjhmZTUwNzM2Mjc1IHB5M2sKKzY2MzY3IGYxMDBlZmNhMTQ4NzFiYjgyMWEzMWFlYzhkZDlkMWIwMjViZGRmZmQgbGVnYWN5LXRydW5rCis2NjM2OCAyNWYxNDEyOGE5N2MxOGU0NGJmZGY0MTg0YmQ5NzE4YTg1Nzk2MmNiIHB5M2sKKzY2MzY5IDJhYjg1YzM5MmE4ZGFlMDBhNWUxNzFkOGM2YmEwOTY5ZTI0N2E1MGEgbGVnYWN5LXRydW5rCis2NjM3MCBkZDk2MTQ0ZTZlODFmYTRlNmNjNThhYWUwNzAzNWE4OTRjY2IxZDM0IHB5M2sKKzY2MzcxIGY5Nzc3OTI2MmJhYzFiMzVlZGEzMDBiNmU3ZmUyNzBhYzA3MmUxNmYgcHkzaworNjYzNzIgYWY0MDIzOGE2OGI5NWNhMDgzYTdiYmM1N2Q0Nzg5MDQ2MjFmOTdmZSBweTNrCis2NjM3MyA1ODkwNzNjZWUwYWU0N2E2NmExMGI5YzVhZDAxMWUyMWU3YTIwM2ZiIHB5M2sKKzY2Mzc0IDM0OGEzMzA0OGViZjQ4ZmI1MDcyNTYzZjg2YmU3NDQyZjYzYzc0MjcgcHkzaworNjYzNzYgMTc0NzVlYjU1MDY3YWMxZDE5NTYwODFkZjJjZWRmNjE1MDE0NDFmZiBweTNrCis2NjM3NyAxNDU0NDkxMDlhMzFjYTE2YjM0Yjc5ZTI5ODUwOGJhYmI0MzYxZTBiIGxlZ2FjeS10cnVuaworNjYzNzggNmFlMmQ0YjUwN2EyNTJmNjFkNDMyNDA4MmRjYzIwOWRkYjZjZDI2OSBweTNrCis2NjM3OSBhNGRmNDkwM2IzNTU1NjRmMmE0N2U1MjE5YzQ1ODdlM2Q3NTQ1ODg3IGxlZ2FjeS10cnVuaworNjYzODAgZDI3ZGYwODNkNGU2NzRkOTcyZTk1NGM0NGQ3OGY2M2Q3NmNlMjViNSBweTNrCis2NjM4MSA1MWZmOTM0NTYyYzIzZWNhNmRjZjIxZWNlYWZiOTdiNWJiM2RiODE5IHB5M2sKKzY2MzgyIDg3NTMxMzAxYmE0OGM4N2UyOGNkYmRlYjEwNWJiZjFmZWU0N2RjOTMgcHkzaworNjYzODMgM2RjMzE4MDk2MzFmZTE3OTE1YzU2NmI0MTIyNmU4MmRjNmJjM2M5YiBsZWdhY3ktdHJ1bmsKKzY2Mzg0IDk2ZDYyNzZkODBlMjMyNDZiYTAxMjQzMWQwNzAzMDYwNTQ4MmI1YWQgcHkzaworNjYzODYgZjI4Yjk5OWE2OWY4M2I2NTAzNzFmNTdjZTQzMTlmYjM3NGVlNzc4YSBsZWdhY3ktdHJ1bmsKKzY2Mzg3IDg5YzJhNjk3Zjc3MmYwZmI2NWZlZmVjNDAzMWMxZGUwM2E0YjZlZTYgcHkzaworNjYzOTAgMGVmN2NiMzViMjE2NzI0Njc2NjRmY2JjMzIzNGVhMWRlMmRlNDY2YSBsZWdhY3ktdHJ1bmsKKzY2MzkxIDRjZDk3ZjhkZTY5ZTIwYTllNjQ1ZmNlOGIzNmU0Mjk5YTNkYzkyN2MgcHkzaworNjYzOTIgYzA1ZjVhYmVmNzhhZDUyNTJlMmJlZGE4ZTBkMTNlOTdlZDkwYjdlOCBweTNrCis2NjM5MyAyODAzNDdkMmY3NjUwMWUyMzk0NDVkZTZmMTVjY2JhYjU3ZmI0NDNlIHB5M2sKKzY2Mzk0IDBmY2Q0ZGIyM2RmZmViMzljNTRjNmEyYzE2NTIxNzM3OTdjYjIwMWEgbGVnYWN5LXRydW5rCis2NjQwNCBmZjE1ZTYyYTM0OWI3OGJkNzg5ZWFlNWIxN2JlNTk3NzAxNGM1OWFiIGxlZ2FjeS10cnVuaworNjY0MTIgNGM3N2QxMDE2ZjYwYWY0NTI2YzMzY2JkZDM5M2FlZDdlYWRlNTQzZCBsZWdhY3ktdHJ1bmsKKzY2NDE0IDc2YmM3NTc3MjczNmYzMmU5ZDM0MThhNWYxZjMxNTc1ZGE4MGYzYWEgbGVnYWN5LXRydW5rCis2NjQxNSAzODFlY2Y0NmRmYWU0NGI4M2UzYjhkYjRmMTBjZGI0YTBmZmY0MWZhIGxlZ2FjeS10cnVuaworNjY0MTYgMWViYjJhOGNjMDZjOTQ0NzFkNzJiNTQ3NmMyMDUwYzRkMTE1YTFhYSBsZWdhY3ktdHJ1bmsKKzY2NDE5IDRmN2RlMWNhOTJmZjgwNjcxZWEyMmE1ODNiMGI5YTljZTI2MTQ4MzUgbGVnYWN5LXRydW5rCis2NjQyMiA3MzhiYTgzMTlmNDkyMDRlNDk2MTljYjVlYzlhNTczZjdiNjE1ZjUxIGxlZ2FjeS10cnVuaworNjY0MjQgYzhkNDQ2ZWE5NmRhYmQzYmI0ZGQ3NjY1N2U2ZDkyYWUxMDI5Y2ViNiBsZWdhY3ktdHJ1bmsKKzY2NDI1IDA5MzJiOWJhYTdhNDU4ZjM1Y2Q3MWZmN2VmNzBhZjljZjk4MWMxNzMgbGVnYWN5LXRydW5rCis2NjQyNiBiYjNkMWJkMWUyOTMzZTdlMTFlYmRkYjljOWIxZmJiMjAzZjk3MGE0IGxlZ2FjeS10cnVuaworNjY0MjcgZTdjMjgwMGIyM2JmODJiNTY5MzljM2NiZGQ5ZjczYTEwYWUyMTMwNCBsZWdhY3ktdHJ1bmsKKzY2NDI4IDQxNTI0ZjllMmEyZjlmYjg1OWM5N2EzYzFkZDEzYTU1OTI4MGY2ZDIgbGVnYWN5LXRydW5rCis2NjQyOSA1Y2UwMTQzOGJhYWE1OTVjZjkxNTIxOTJiZWRkZDYwNTU3MGYwNmEwIGxlZ2FjeS10cnVuaworNjY0MzAgNTk2YTFhZDhmZWI2MWIyNTIzN2M5ZjdkMjI2Yjc4NjFjYTJlOTAzYSBsZWdhY3ktdHJ1bmsKKzY2NDMxIDc0MjY3MWM1ZDdjOTVjNjVhYmQzYTBlM2NkMjJiN2E3Y2M0ZTIwOGQgbGVnYWN5LXRydW5rCis2NjQzMiBjMGRhN2YyMzYxZWNkYzM4NWY5ZmIyZDIxZDk1OTUzN2Q0NzcxNzBkIGxlZ2FjeS10cnVuaworNjY0MzMgMDUxMzYyOTNmMGM4YmZkNWNkMjgzNTQ2MjlkZTVjMmNmN2VhMjIxYyBsZWdhY3ktdHJ1bmsKKzY2NDM0IGMzZjBmOTc4MzllMzgyNzdlZjVjOTUxMmJiOWZjYjBmMWFkNTZiMDkgbGVnYWN5LXRydW5rCis2NjQzNSA1MmVmOTViZGQ4MDFlNDRiZTRmZmJhMmI1NTA3YWFlYzdlYTQ3YzI1IGxlZ2FjeS10cnVuaworNjY0MzYgMDZmMzIzYWE3MmM0OTUwNzgwYmUxNjRjYzhkYzg1YzllYjUwOGE0NCBsZWdhY3ktdHJ1bmsKKzY2NDM3IDY3MDlmZjgyODdkOTg3ODRhYTQxYmQ5NjY2YmJiZjFkODVlMDE2ODAgcHkzaworNjY0MzkgNjY2NWViZmY2NGYxZjJjMjA2NjEyYzA4ODYxZjU3ZGYyZGM4N2IzOCBsZWdhY3ktdHJ1bmsKKzY2NDQwIDFlYWRkZDIzODhjYzI3NDcxZmI0MDIzZGIwN2YxOGMzNzQwM2NmMzkgcHkzaworNjY0NDEgMWFmMTY5NzBkYWMzZmQ0NTY1ZGVmYTIzMjg5MTFjODJiNzZhNTRiYyBsZWdhY3ktdHJ1bmsKKzY2NDQyIGQ0MDY5ODNlZDkyNzljY2M2NTljODZmYjJjYTFkMGIwZjQ3ODY2MGEgcHkzaworNjY0NDYgOGY4ODZhY2FhMTQyY2NhYTlkOWI2MjI4ODYyMGNiMWZiYjQ1OWQ4NyBweTNrCis2NjQ0NyBmZWI3YmRlMWE0ZDkzMDExNzA4NmEyODU2YmZjMGZhOTY2MmRmN2Y5IGxlZ2FjeS10cnVuaworNjY0NDggYzg3Yjg0ZGIyNDRjZjYzMGUzMDM3MDk3MzZjZDhkZmYxN2EyYTUyMSBweTNrCis2NjQ0OSAwOTVkZTViOTI5ZGRiYjU2NGRmOTU1NDk3NWUxMDJmOTliYTBlOWM2IHB5M2sKKzY2NDUwIDc1YjBkY2JjM2NjNzE4MTU4ODkwMzMyZWFlNGNlNzM0NTRkZWYyMTcgbGVnYWN5LXRydW5rCis2NjQ1MSAzYjA0OGUzMWRkOWU3N2FiZGY2YmQ1OTg5MmRkMTE4N2QyNWM2NzUxIHB5M2sKKzY2NDUyIDU5ZGI0YjNhMDZiMDFiNTJmNzhjNGU3NDliZjgyMzdhYzQ3ZGVkNGQgbGVnYWN5LXRydW5rCis2NjQ1MyA1NmQ1YzAzYjkyYjZjZWYxNTllYWY3ZmUzZTQwODJlYTQ5MmFhNjhmIGxlZ2FjeS10cnVuaworNjY0NTQgNDdkYjYyYmY2YWE3MGQ4ZThmNWFiZjllMGRhNWFhOWQ2ZTk5OTdiYyBweTNrCis2NjQ1NiA2MjcwMGJiN2Y3YjU5MDllYTc4Y2IwNzI5ZjU5NjY0YTI5MjU1MjIxIHB5M2sKKzY2NDU3IDJjNWJiNDYzNGQyZDllYzZhNzc3NjUyNmUxZDVmNTlhNDBiNTBjYzIgbGVnYWN5LXRydW5rCis2NjQ1OCBmOTk4MDAxNjZjMmI3M2UzM2I3MjJiZmQzNWFmZDc4NWUwMDMzNTFkIGxlZ2FjeS10cnVuaworNjY0NTkgY2RkZjVkNjQ3NmNmMTI3Yjg5NmY0MjM2NTQ2NjhhYmZhOTNlMDc4MSBsZWdhY3ktdHJ1bmsKKzY2NDYwIGU5NjkyMzIwNTRhMmMzOGI3MjVmZmNiYWIyYjQ4ZmMwNDJmY2VlOTMgbGVnYWN5LXRydW5rCis2NjQ2MSA2OTI5Yjc0MjcyYzQwZWY1MzIzY2I1NjgxMzBlMmJmZWMyM2NhYTBlIGxlZ2FjeS10cnVuaworNjY0NjIgNjJlNWY3M2QwNWI0OWY0MjdkNmJiZjVhODUxOGJmYTQ1NjkzMmQwNCBweTNrCis2NjQ2MyA2NGJlOWY5MDg2NGUxNGIzMzViNjRmZDFlMGQ1YzUzMzk1MTQ0MzkxIGxlZ2FjeS10cnVuaworNjY0NjQgMjYwNTQ2NWJiYTNjMThhMWFiMzBlNmJiYTZhZmVmYzNlMzE0NzA3NiBweTNrCis2NjQ2NSBhM2YwZDY2N2UyY2U1NTdiNzgzZTA3ODA4MTdkYjk3NmZhMDViMTMxIGxlZ2FjeS10cnVuaworNjY0NjYgM2E4MmU1MDI0NzQzMjgwMDVhNGRiNjY0ZWNhOThlYTFmMTFhZDVhNiBsZWdhY3ktdHJ1bmsKKzY2NDY3IGFhZWJkYzRjNDY5MDNiMzBmMjU4NTc4NmYzNzljNjgwNmQzMGZjNDUgbGVnYWN5LXRydW5rCis2NjQ2OCAwMmE2Y2M1ZDdhMjI3NmUxOTIzOTAwNTI4MmM0YmQ4NjllMTk2ZDViIGxlZ2FjeS10cnVuaworNjY0NjkgYmRiNjYwZGNhNzRkNmFmNGMyNmY2Mjc5N2YzNDI1ZDJkNjAyMjEzYSBweTNrCis2NjQ3MiBmOTc0ZTBmYTU0Y2FhNzdkMzYxMjllNWE0ZmJhN2JhOTJlMWQ4ZDM4IHB5M2sKKzY2NDczIDExNjdhZTY0NWU4YzAyNzU0M2FhMTliNGRkODY2OTVmNWU2YjY0YjAgbGVnYWN5LXRydW5rCis2NjQ3NCAyMGRmMDZlMWIyNjY5ZjU5MjhlZDZmNWI3MGUyOGY4OGExNTUwODk2IHB5M2sKKzY2NDc1IDY3MDQzZmI4YWVhNWMwZTgxMDUwNWZhY2YyMzNhYjRmNmM5ZTg1NDggcHkzaworNjY0NzYgMzMwMjA0NWJhZTk3ODk2MTFiZTA0NWEwNzc3YmY2ODE0NTdkNjliOCBweTNrCis2NjQ4MCBiYjJhMGEzN2ZhYTk3YmRiZWNiZGVmOTIxMjJjZDE0YzUwMjlhMTZiIHB5M2sKKzY2NDgzIGQxN2NjNGQxNzY2Y2ExM2FmNTRlMmE2ODQzYzQ4ZjBhYTVmNDI3MGQgbGVnYWN5LXRydW5rCis2NjQ4NCA0NDUzZTJjNmFhN2ZkMmU1NGE5NjZkOGI4NTg3ODIxYzE5ZDIzYjUzIGxlZ2FjeS10cnVuaworNjY0ODUgOTdmMjhkZmExNTQ5YjNjMWQwOTZhM2UwMDYwM2UyZjhiYzY3MmViZCBsZWdhY3ktdHJ1bmsKKzY2NDg3IGExYzE5ZjI2M2Y3OTU1ZmYxZjdhMGRlMjE4ZGVkNTY1MmI0NGU5MmQgbGVnYWN5LXRydW5rCis2NjQ4OCA1ZDJmMTYxMTk0NTk0YjFhYTg1NzMxMDNlNDE1Mzc2NmZiZTk4YjU3IGxlZ2FjeS10cnVuaworNjY0ODkgMmY5YjA2Zjk1YzlhNmE3ZDFmZTA5NTY5NTc0MDMwZDk2ZGExNzEwNSBsZWdhY3ktdHJ1bmsKKzY2NDkwIDdiMTY4NjAyZjQ0ZGIyYWZjNGJkY2I4ZDEyYmQ2ZWUwZWRlZmNiYmQgbGVnYWN5LXRydW5rCis2NjQ5MSBlMjQyOWUyMzI1NzZhNjY2ZmQyZjU0M2Q5NTZmZGQyOTk5YzA5NjczIGxlZ2FjeS10cnVuaworNjY0OTMgMzBlZjIyYTgwMjY3YzNkNjk4MjUzMGFiNmZlODgyMWNjMTIwNGM1YiBweTNrCis2NjQ5NCBhZjRjNGNmM2UwMWUwOTMyZTY0NDBhMjk1ZmNkMGU1YTljN2EzYmNjIHB5M2sKKzY2NDk2IDI2MDZkOWEwMGM3YjYyMjAwZjQ0MDY1YWVkNDA5Y2MwYTJiNzZmM2YgbGVnYWN5LXRydW5rCis2NjQ5NyA1ODgxODg0NjM2M2JiNWUwYzgxYWQ2MmQ2YWY0NjllNTVkYWM1YTMxIHJlbGVhc2UyNS1tYWludAorNjY0OTggZmUzNTViZDA1YzQ3NDM4MjU0NmNmODQ3YWI1Nzg2OGVjNWU5YzdiYSBsZWdhY3ktdHJ1bmsKKzY2NDk5IDUwN2VkZTljN2Y3ZjQ3NWRmYWZiZDRhNTJjMjJkNzY3ZDEwYTJiYzAgcHkzaworNjY1MDAgNWQ2MWM2NTQ4NDk3OTUwMTdkY2E0YzA5NjVjZjkwODdhNjg5NGMxMCBweTNrCis2NjUwMSA0MjhiMDUzYmIwOTgzOTM5MzMwMThiNzIxNTk0MTNkMGZiMGFlMzhjIHB5M2sKKzY2NTAyIGM2NzAzZjQ5ODliMzczMGY0Mzk1ZmE4MGI3MjUxMDA0N2UwYWFjMzggbGVnYWN5LXRydW5rCis2NjUwMyAwYWQ4Y2VhNjBiZmEwYjYwNDM4MjVhNmJlMzM5NzZmNGY4NTRjZGFhIHB5M2sKKzY2NTA0IDUyNTc5MjA5N2M2MzA4YTc4YTc2YjdiNWY1NmJiZDhhMjRjMjZhY2YgbGVnYWN5LXRydW5rCis2NjUwNSA1NTQ5YjVkZjhiY2JkZWE3MjFlZDFlOWNlNzE5NTRjMjYwM2Y2NmNjIGxlZ2FjeS10cnVuaworNjY1MDYgMGVlYzM0NzU1MDQxNGVlZmEzYjVmNTJhMGUxYjUzN2RmOWZjMzc0OSBsZWdhY3ktdHJ1bmsKKzY2NTAzIDQ5YjliOTk2NWYzMTJiYTE1ZmE3YTkyYmQ0ZGY1YzJjN2MzODM4N2QgcHkzaworNjY1MDggNzYzZTRiODQ4ODFjYzFiOTIwNzhiYjgwMjJiODJlYTFjNjUwZDczMSBsZWdhY3ktdHJ1bmsKKzY2NTA5IDY3MDBmZDgxMjViYTVlMGQxYzk2ODE0MWI1MTJiYTVkNGViYmI1NTAgcHkzaworNjY1MTAgOWZlNDY3ZmYwYzA4NjM0YjNjZGYyMWM5YTk2NjI0Y2E5NDc2ZWEyNSBsZWdhY3ktdHJ1bmsKKzY2NTEyIDVhNzFhNjA2OGUzMDM1ODQ2MjdiNzY1Y2FmZTJlNDJiYWNiZmJjZDcgbGVnYWN5LXRydW5rCis2NjUxMyBjNDVhNjk2NWJjNDY3NzdlNDAxN2I5NzUyMmNkZTdjZGIxNGU5YjNjIGxlZ2FjeS10cnVuaworNjY1MTQgNjI2MDMyNTk3NzEyMDMxMDEyNTBmZWFiZTNhYmI5ZjViYTgxM2NmYSBsZWdhY3ktdHJ1bmsKKzY2NTE1IDE1YWM0OTYwMmEwNjQ4YjFiNTZmOTEyMjFjNWYyNmRlYzdhY2Y3MmEgcHkzaworNjY1MTYgNTc4YWQ0OTFkNGE0ODZiZDAwMTdkNTg2ZDFmMDVjMzg2NTA5OTIyZSBsZWdhY3ktdHJ1bmsKKzY2NTE3IGMxMzcyOTMyYWU4N2NjOTU1NTcwZTI0OTcwODJjZjY2YzExYTA2YjYgcHkzaworNjY1MTggZjNlNWE4NTM0MjA2MjkzNjMwOTllNzM2YjVjYjIxMDUzNGM3NTdjYyBweTNrCis2NjUyMCBiNmE4MDMxODg0NTRkNzYzMmVjMjNhMjRiN2Y3MDNlYmE4NDJhYTViIHB5M2sKKzY2NTIxIGNjOWQ5ZDk2NmIxYTRmZjUwMmVmNGY2OGFlMGY4MGRmZWU1MDEzNTIgdGxlZS1hc3Qtb3B0aW1pemUKKzY2NTIyIGQ2YjhkNDZhMzQzMWJhYzRiYTQ2MGMzNGI4ZGZkNzZhNmZiMTk2OTQgcHkzaworNjY1MjMgNTBiMWU1NTc1NmE1MDdjNTFhZGUwZThhYmIzNmFmNzg3ZGU2NzBlZCBsZWdhY3ktdHJ1bmsKKzY2NTI0IDRmOWE5NzE0MGYwZWZiOWFlYzhhMzQzZjk3YjVlYjQ0NzZhNTAwODYgbGVnYWN5LXRydW5rCis2NjUyNSA2MWM2OGUyYzU3MWIwN2RjZTVhNjYwNDM2NWI3M2QzZmYwOGIzZTg3IGxlZ2FjeS10cnVuaworNjY1MjYgODViNDgwZWYyNjM1YzY3YTkyNDI0MDk3MjM2NWUxMTUyMGFkNmEyOCBsZWdhY3ktdHJ1bmsKKzY2NTI3IDhiMTdmOTJiYmM0ZGI2NjQzNTYyNGNkMGQ1Y2VkNTFjN2Y3NWE0ZjYgcHkzaworNjY1MjggNmI5ZjJjZTVmZTkyMmU4NmMwMjA2NDZhNTY4NGQzMThmZjFiZWQ4NSBweTNrCis2NjUyOSA3MDFkYjVlOTY3YjVkYjEyZjIwODMzNDYyYjMyZGVkZjMzM2FkNjZkIGxlZ2FjeS10cnVuaworNjY1MzAgYjg0MTU1MmE5YTczYjk0MWU0MWEwMGYzMTJhNDBhMmMzOTA3ZjhmYSBsZWdhY3ktdHJ1bmsKKzY2NTMxIGY3MWY2NGFlNjUxOTY2ZTUwNGUyYmY1ZDAzNjg3YTc4YmYyM2Y1YTYgcHkzaworNjY1MzIgZTUyYTM1OTVkZmRiYzUwNmU3YmRhMzc0OGQzZTcwMjJhZjAyYTBlOSBsZWdhY3ktdHJ1bmsKKzY2NTMzIDE3Nzc2ZGY2ZmRhMmNjMzA0MTYyMzNmM2QzZmUzOTNiYTdiMzEyOTQgcHkzaworNjY1MzQgYzJlMmU5MjYyYjk5YjIwOGNmYjZlOWM5YjU0MjdhMWY2MTQ3ZWY1OSBweTNrCis2NjUzNSA5MjNmYjQ1OGJkMGM2OWVmOWIxMTc4NjlhZDZlNGViNTJlMDVhMGEwIGxlZ2FjeS10cnVuaworNjY1MzggMzg2YTAzZWMxZmYwMTRkZjdiM2VkY2NjZmVkMzRmNDhmZjNiMzg4MiBsZWdhY3ktdHJ1bmsKKzY2NTM5IDU1Y2IzZTExYmRmNzRlNjYyN2ZjOGVjYjg5Yjk3NmE5ODI3NmNlNTEgbGVnYWN5LXRydW5rCis2NjU0MCBjMjAwNWMxY2Y2Y2RlOGE1NWY1NmExNGJlOWQyNTJmNTRiZmFjZDhmIHB5M2sKKzY2NTQxIDQ5OTJmZDQ5YTk4NWQ2NzhjYzRlMGI4MWE5OTA1M2VlZmM2ODk4NDQgcHkzaworNjY1NDIgMjVmODA5MTIzZGY2MDYzZjY2NWM1NjFiYmM2NjU0YzUyNTBiYWU5ZiBsZWdhY3ktdHJ1bmsKKzY2NTQzIGQxYWI4M2FkNWUyYjkzNGYzNDA0NTQ0NzdlZDg3NWU2YzI2ZTE5ZDIgcHkzaworNjY1NDQgNmI2NzljYTI0MzY5ZmExZDIzNGQyMWExMmM3NjE5OTcyYzEyY2IzYSBsZWdhY3ktdHJ1bmsKKzY2NTQ1IGYwYzI1ZTZiYmFkNTgwYjdjYWY2MDVlOTM5Yzc5ZTA4OGI1YTdlY2YgcHkzaworNjY1NDYgMzlhOTQ3MTk1NDU0ZGMyMDhiYzEyYTkzMmU4MjRhN2ZlNDNiNWM3NyBsZWdhY3ktdHJ1bmsKKzY2NTQ3IGMxNzc3MDA3NGE0YmU5NTQ5MTc5YWVjMjYzMGU4YzFiNGY0ZDRlMDkgcmVsZWFzZTI1LW1haW50Cis2NjU1MCA1NDYxM2JhMWRjYWRmNTAzN2E3NjM0N2VjMDM0MDNhMzg5MGVmNzBiIHB5M2sKKzY2NTUxIDZhZTI4YTUwM2M5ZDE2YTdkYjJkY2I5OWVlNDMwZjdlNDRmYzI0ZmIgcHkzaworNjY1NTIgZjNkYTU2ZTNmY2U0YjE0MmYyMzYxYThhZmI5N2IxYzRiYmMyZDMwZSBsZWdhY3ktdHJ1bmsKKzY2NTUzIDkyMmI5ZTAzYjI2MGVjNTkyZjE2NGY5MDA3NmZmNzM4NmRmMWE0MDEgbGVnYWN5LXRydW5rCis2NjU1NCBmZTY2MGU4YzYzYmE2OTBjZDU4YjkxNTM3MWQzMDM1YmEzZGU4ZTIyIGxlZ2FjeS10cnVuaworNjY1NTUgMDZjZjM1ZTZlMzA4ZWFiZmFlYTgzY2ExMzA1ZTRhMjdjOTMyYTZlNSBweTNrCis2NjU1NiBlODZlZDExMzUzNWNlZjBhOGI4OGI0ODdiY2IxMWEwNzQzNjgwZGVmIHB5M2sKKzY2NTU3IGVmNzVlYjNkYzQ4ZTgyMDJkZTkzOTIzNmM1YmU1ZjIxMjNmYjg3N2IgbGVnYWN5LXRydW5rCis2NjU1OCAyN2MxYmE3MTg2ZDhmNzI5YzQ3ZmM2YTZjMDRjOGFhYzcyMzQxMjBlIHB5M2sKKzY2NTU5IGRlOTBhNzJlM2UyMzQzOGE5YWVlM2I2NmRmMWZlNDc4OWY2YmU2MjMgcHkzaworNjY1NjAgMWQ1YzNiY2YzNWFkMzk4NmMwOGJiY2Y1YmY5Y2RlYjE0ZWUxZDQ2ZiBweTNrCis2NjU2MSAwMThiY2Q2NGMzM2U0ZjY4YzcwMmM0YjU3OWNkN2VlZmZlZTk3YTVhIGxlZ2FjeS10cnVuaworNjY1NjIgMGRlNWEzODhhMjYxODA0ZTc3ZmEwNjdkNThmYTNhZDkzMThmMjc5ZiBweTNrCis2NjU2MyA2NDYxNmU1ZDgwYjRiMjY0YjlhOWNmOTA4MzVkMjhmMThiMjk5NWRhIHB5M2sKKzY2NTY0IGY2ZGY1NjdjY2Q2Mjg5YTRkNjA1ZWM5MmRmYTEzYzg0ZTI3ZmY3ZGQgbGVnYWN5LXRydW5rCis2NjU2NSBiZTg5ZDJhMzRiMmY4OWEzMTdiYWZjZTA0ZjZiNDg0NTM4MDc2YjFmIHB5M2sKKzY2NTY2IGE1ZjI2YjNhMjZmZDllZThlNTRjYWMxNTNiMzcyOGE1MDUxM2QwYWIgbGVnYWN5LXRydW5rCis2NjU2NyBlZGY4YTZjNjkwMjhiNzc1ODk1YTFhZWE4ZTdhNzdmYTNkODg5YTY3IHB5M2sKKzY2NTY4IGYzZWIwMDA0ODdiOTM2MmMyZmNmNTQzZTM5OTk2N2Q0N2E4NWM0ODMgbGVnYWN5LXRydW5rCis2NjU2OSBmODQzMGI2ODc2ZmIzNmNmYTkwY2FlNmJhYmM0MjQ3NjdlZmUyZTJkIGxlZ2FjeS10cnVuaworNjY1NzAgYmJlMmUzNTg1MmNkNGQ4YTAyYzdjYTcyMmZmNWJkOTM4NTI3ZWVlMyBweTNrCis2NjU3NyBiM2MyOWRhOTM0ZjVlZGY4OGY2ZGUwYWRmZDM5MGY2NjM3M2ExMGI1IHB5M2sKKzY2NTgwIDI1ZGEwN2ZlMzYzMGMwMWI4OTkxOGYxMGM3Mzc5M2U4OTBhNzk4NDAgbGVnYWN5LXRydW5rCis2NjYxMCBkYjk5OWViMmJiZGM3NTlkMmI0OTcyN2NiNzUxYjAzMjQzODUxOTlmIGxlZ2FjeS10cnVuaworNjY2MTEgNjA2YWIyNWRkZWYxYjBiZTJmZGVlMzFkNThjNjkwZTNlYzI5OGZkYSBsZWdhY3ktdHJ1bmsKKzY2NjEyIDAxZmMwODNlMWRkZDM1MTAxYzJlMjM2MDU2MzQ2ZGI2ZWEyN2Y1ZTUgcmVsZWFzZTI1LW1haW50Cis2NjYxMyBhODcwYzNjNmE5YWQyNDEzNTg5MmM3N2U5ZmE1ODA3M2VmNmM3NTk0IHB5M2sKKzY2NjE0IDEyMGI0YmNmMDlmZjcyMGU2MzJmNGVkZTVkNzkxZTk0ZjllZTU4YmMgbGVnYWN5LXRydW5rCis2NjYxNSBhMDA2MjZmMmQ3MDU3OTIzNWFkMDEwNDJmMTM4MTA5MTQ5MmIxMzhhIHB5M2sKKzY2NjE2IDlkMWM1MzExNjhjYWQ3YTFlODk1ZjY3MGI4ODJhOTIxYzhjNjI2ODQgbGVnYWN5LXRydW5rCis2NjYxNyAwOTFhNmM1MjI3YTk0NzViYTNhZTZhM2YyMTEzM2Q0OGYwNmIzZjU5IHB5M2sKKzY2NjE4IGE5MWU3OGFiNGQ3ZDIwMzEzNmY4NmU4ZjBjOWFlYzMzZjhlMDBkMGIgbGVnYWN5LXRydW5rCis2NjYxOSAzZmViY2JmZDM2MDFjNDIzYTMxYjI3MDc0NWFmZTJhZTJkY2I2MTk5IHJlbGVhc2UyNS1tYWludAorNjY2MjAgNWU1YjE1YjY5MmUxNDE3ZjZhOThjZmIyOTAwYzFlZjg1MGY2MTM5NCBsZWdhY3ktdHJ1bmsKKzY2NjIxIGFjYzQ0YjdmYWRlMDlhNmZlNzJjMDk0MTRmNTgxZTQ0MTA3YTA4YmQgcHkzaworNjY2MjIgZGJhZWMyNDlkNTZmMTJiNWY4OTY5YTRlMzRiY2I1ZjgzZGIxZmQ1MyBweTNrCis2NjYyMyA3OGEyMWIyNzhlMWI5Yjc0YTgyZGVmNDFiZjVhNTNjNDQwNmRjMmUwIHB5M2sKKzY2NjI0IGYzMjNmYTRlNDhkNzlhMjg3MTQxMjZmZjc0MzhkMjg3ODgwMmU5MDAgbGVnYWN5LXRydW5rCis2NjYyNSBiNTUwZGU0Mjg1MWE4NWMxMDY2YzBkYzdmN2ZmYTQxNWEyNDIzNDVlIGxlZ2FjeS10cnVuaworNjY2MjYgYjIzMmUyZTllNzkzN2UzNDU3MzIyOTM2ZjkxOWUxZDBmYTYzZGM2MiByZWxlYXNlMjUtbWFpbnQKKzY2NjI3IDA2ZWJmMTJiZmE2MmNhNWI5ZWNhMmU3YWQ3MGQ2NTgyOGE5YzNlMmQgcmVsZWFzZTI1LW1haW50Cis2NjYyOCA0ZWVkZTVlNDhhZTY4NWFjN2JkOTU5MTJkMjdiNjdhNGExMzBhNWNmIGxlZ2FjeS10cnVuaworNjY2MjkgZTEzYzAzZTBjZTBiYjRjOTIzZDI2ZmQ3M2Y1NjY3MjUwMGZkMjFiNyBsZWdhY3ktdHJ1bmsKKzY2NjMwIGJiYWRiOTYwZmQ1YzFhOTc2OGYwOWQ5YmI3MWU3MDI3YjE2YzI1NTAgcHkzaworNjY2MzEgMzA0YmVhODczMWQyMWE0ZTA4ZWJkY2NmNjA1YWVmZmNiYjUyMzExYyBsZWdhY3ktdHJ1bmsKKzY2NjMyIGUwYzA2Y2FlZmJmZjMzZmE0NzA2Y2NlNTVlMzgwZjE1MDJhZjZjMGEgcmVsZWFzZTI1LW1haW50Cis2NjYzMyA2NDAzZjFlZGVjYzE5ZDI0YzRlYmFlYjYxNzVjNDllMTIxYTkyZDNlIHB5M2sKKzY2NjM0IGViMzVmY2JhNjU4ZWUyNWIzMTBiYTRhZDkyNDQzZWM2NjkwYjM3YjkgbGVnYWN5LXRydW5rCis2NjY0MyAwNzUwNDJjNzcyNGM3NGE0OWI2YjNlMDRmZDE0NDVhYzg3NGRkZmMzIGxlZ2FjeS10cnVuaworNjY2NDUgZGU3NWZiNGU4MDBjZWY5M2I5MjM0NTMzNmUwMDY4YWVmNTFkMGMxYyBsZWdhY3ktdHJ1bmsKKzY2NjUzIGNkYzdmNjM2Nzc4YjY5MjNkMGZmNzFlOTVmMzI2MDA2ZWZlMWQ2YjUgbGVnYWN5LXRydW5rCis2NjY1NCA4YTFkYmU1YzJiNzQ1YzE4NTViYTQwMTYzOGQ4ZGJmYjVmMjRmOTE0IGxlZ2FjeS10cnVuaworNjY2NTUgNTI4NDc2OGMyNjRjNTlkNTUwMzRhYzUxMWE2ZDBiYzg2NzNkN2Y3YSBweTNrCis2NjY1NiBkNzBiY2YzYjYyOGQ3YTJlZDYxOWJmOTNmNGViOTM5MDVjMGJiMDFlIHB5M2sKKzY2NjU3IDA2OTlhNzEyYTNkYmRkOGM1MmYxOGRhZDMwNjkxMjYxMzIxMmEwMGYgbGVnYWN5LXRydW5rCis2NjY1OCA3NjUxYjk0MTNjODU0Y2I2MGQwYzEwM2UzMWQ3MzRhOTEyMWExYmMyIHB5M2sKKzY2NjU5IDdhM2Y3NTJhZGYxY2Y4OTQ1MmI4ODM5YzY0MzFkZDkyNTE3YjBhYmMgcHkzaworNjY2NjAgNTMwYzgxNDE4YzI4MzhjYzgyMmE5OTBhMmEzZTNlYWJjMzNmOWM3MyBsZWdhY3ktdHJ1bmsKKzY2NjYxIDJjYTQxNTliYmU2NTQwNjYxNzNhOTI1MDFmOWUyNWQ0NmM5M2I3NDAgbGVnYWN5LXRydW5rCis2NjY2MiBjZTJmY2E0OGFjZTQzMjY2ODE4NTQ2MzEzYzlhMWQ1M2ZhODZmMzQxIGxlZ2FjeS10cnVuaworNjY2NjMgNzU1ZjM0YWI0MzhiMTkxNjdjMzcxMGQ1YjI0OGE2ZTM0YzI1NTljMiBsZWdhY3ktdHJ1bmsKKzY2NjY0IDIzMWYzYTI1Y2NmNWIyZGU4OGVkYTkwZjI0ZTYwOWRiOTA0MzAyZGIgbGVnYWN5LXRydW5rCis2NjY2NSBkYTA3MzQ4NGY1YWMzMDZjNThiY2M4MTk1ZDRkMDY3ZmY0YjQ3ZTNhIGxlZ2FjeS10cnVuaworNjY2NjYgNDg0NGNhYzA4NjUyNWQyYTk4NWY5NjkwMmE3YjgyYTZhZTk4ZjdjMSBweTNrCis2NjY2NyA2Y2M1YWNlOWY1MTNlMDA4MDBlMTAxYTc4MjU2ZTdkZTkyNWIwMWVjIGxlZ2FjeS10cnVuaworNjY2NjggZWM0MmY3OThmNTk3MzY0NDBhMDMxZmU2MmYyZDMzNzJkNTgyYmU2NyBweTNrCis2NjY2OSA1NmEzZmE0NDljNmM2YzEzNTY5ZjhjNGFkM2I5OWQzMDY3ZDAxN2E3IHB5M2sKKzY2NjcwIDUzYWNlMzk3YjljNWJiNWJmNTIzYzI4ZDkyYjMxMGVhZDc4NmQ5MzAgbGVnYWN5LXRydW5rCis2NjY3MSBkYmM2ZWRiYTcwYTdiNzY0YWE3NDY5YzIyMjM2Yzg1NmRhZGRiMWVkIGZpeC10ZXN0LWZ0cGxpYgorNjY2NzIgY2M2OWI5MzFhNjA4MmQ5ZDI0Mjc0OTI5YmVlMjQxOTAwMDFhOTczNiBmaXgtdGVzdC1mdHBsaWIKKzY2NjczIDVhOWE4M2NhZThmMWIyYWI5ZmY3MzUyNGM1NzY3Y2VhMWM2YTk0NmUgbGVnYWN5LXRydW5rCis2NjY3NSBjNWY1ZDZhMzEzZTk5NzNkZDRmMDk0Y2ZjZTkxNDcwOTAzZGNlNzc0IHB5M2sKKzY2Njc2IDY0YmE1MjQwYWYzMWE5MmJkODBhOTQxZjAzMmNmNzk2MGJkNGVjYmQgbGVnYWN5LXRydW5rCis2NjY3NyA3NGU3Zjk3ZGFkN2RlZGQxMDVhMTdhMmZjOGFiMGQ4MDNjYTBhMzcwIGxlZ2FjeS10cnVuaworNjY2NzggYTk1MDMwZjkzOWVkMDhkZWI5MzQzN2QwNmIyNjJkYTg1ZWUxMzcwZCByZWxlYXNlMjUtbWFpbnQKKzY2Njc5IDAyNDE3YjU2ZTRiMjFhOThjZDlkODZmYWQ2YzE5MzgwYzk1ZGQ0ZTUgcHkzaworNjY2ODAgZDU4NjE4NWE3YTUxNjdhZWUyYmRlOGRiOTk3NWM4OTdjOTAyZjQ1YSBweTNrCis2NjY4MSBjYWQxZDJhOGE5ZDNiOWIwZTA2NmQ4NDhhODZjYTM2MWNhOTI0NGU4IGxlZ2FjeS10cnVuaworNjY2ODIgNDA1MzZkZGMyNmExOWI4ZmVlMjUwZjQzNzMwNWNmMjU2NjM4MzdhNCBsZWdhY3ktdHJ1bmsKKzY2NjgzIDViMzUyOTQ4NTQyMThhOGNhZjE2MTZiMWY3ZWJkMmZhNjFkOGJmNDIgbGVnYWN5LXRydW5rCis2NjY4NCA2OWUxODRiOTkwZGM3N2IyZTU4YzIyZmZmM2FlOGJmM2YwNDdkNzdlIHB5M2sKKzY2Njg1IGVkYjVlZWNmM2JiOGJkZWI2ODU4OTZmNzI5ODc5MmM4NThiNTA4NzEgcmVsZWFzZTI1LW1haW50Cis2NjY4NiBkODhmMWYyZjAyMTM1ZjZlNDU3ZjQ3YjM4OTA2MTk3OTM5MzIwYjMzIGxlZ2FjeS10cnVuaworNjY2ODcgYWIzNGE2NDdlMjJmY2ViNTA0NTE0ZmZiYmUxZjA1ZWEzZTkyYjhmOCBweTNrCis2NjY4OCBiNDk2NGRmNjQzODQwZTQzYjFiYWQzNmI0M2I2YTExMDA4YThhNWI4IGxlZ2FjeS10cnVuaworNjY2ODkgZjRhZWIxMTNjOWVmYWRjZTY5NWI2ZGQ3ZDE4NjgzYzYyZmE0ZmEwMyBsZWdhY3ktdHJ1bmsKKzY2NjkwIDQxNTY1NTVmMzkxMTgxYmMwZDhmY2FjZTczNTNlNzA2MjczZmFjODYgcmVsZWFzZTI1LW1haW50Cis2NjY5MSAzNzYzMjdjYjY4MjEzYzRkMTQwMjE0MWQ1MmUwMDU2ZTRhMDBkZDBiIHB5M2sKKzY2NjkyIDdjNTY2MjQ1NDhmZDQ4MmY1YmFmZmRjZDA3ZTZhNTE5ZjU0YWM2YmUgcHkzaworNjY2OTMgNmE3MzEzNGY5NjAzMmVmMTE2MmU1ZmYyNzU5YjAyZWNlYzhkODY1NiBsZWdhY3ktdHJ1bmsKKzY2Njk0IGIyODAxYWNhOWQ2YjVmYmUxYTFhMGU4ZTg0ZDM0MzIxYmIyYmMxMzMgcHkzaworNjY2OTUgNTk4ZDE5OTM2MTg2YTM4MDQ0OGVlMzkxZmU0MGU1ODVhM2ZlNTg2YiBweTNrCis2NjY5NiBhZjZmZTlhZGIzOWMzZjNhZDUzOGI5NjMyODY3NDlhNTc5NzhiOGE5IGxlZ2FjeS10cnVuaworNjY2OTcgNmNlYWNkMDE1ZDY3OGE1M2MzMWVhY2FlOWM2OGU0M2UzYzlkOTE1MSBsZWdhY3ktdHJ1bmsKKzY2Njk4IGE0ZWQ1NGQ1NzY0YzkwNjMxYzBiN2I1NTAzNWYxYzBiNGExZjI2MzcgbGVnYWN5LXRydW5rCis2NjY5OSA2NzY1OTQ2ZTFhYzQ5ZmZiMzU0YmFiYTg1ZmZjMzgyMGJmMzA5MTAxIGxlZ2FjeS10cnVuaworNjY3MDAgN2YxZjllMThjZGZhMzI1YWU5NTY1MjU0NzBlMjIwNTc1OTU2ZDA3NyBsZWdhY3ktdHJ1bmsKKzY2NzAxIDg2MDQ1ZTFlZTU5NTBjNGEwMDA2MzFmZDZhZTY0ZDZhYTI3NGZiMWQgcmVsZWFzZTI1LW1haW50Cis2NjcwMiAxZjRlYTAyMjllYzY2OGNjMDU5MGJiOTVlNjIxOTYyZmEwOWEyOTIxIHB5M2sKKzY2NzAzIGVlZDRkNTMzMzMyZjBmZDkwMWFiMzBkMjkyZDVmYWY2YWFlOGI5MzYgbGVnYWN5LXRydW5rCis2NjcwNiBkMzE4MjM0YTAwZDc1ODZiOTVmZGQzNjkzNDRkMWY2YTIwMjcxNWE0IHRsZWUtYXN0LW9wdGltaXplCis2NjcwOCBlYTUzMTYzYjA2ZGUzMmE2ZmJiMzkwY2JiYjE0OTAxMzAxMWFiMTdjIGxlZ2FjeS10cnVuaworNjY3MTAgYjVmYjliMDAyZWMzMTczY2E5YTIzZDU2MGYyNDZiYWM4MDk0YWE4ZiBsZWdhY3ktdHJ1bmsKKzY2NzExIGFkYTZkN2Y3MWI1ZGYwNzZkOWUwYjM2ZWY3ZjBlZDIzZjY3ODg2NmQgcHkzaworNjY3MTQgNThhOTg4NGQyYmMzZDMzZjlkZjg1NTI4NTc3MDlkZmU5OWQxODM4NCBsZWdhY3ktdHJ1bmsKKzY2NzE1IDk1ZmZmNWE2YTI3NjUyMGIyZTdlMGY3NWZlMzAzZjQ5Mzc2NTY3YTUgbGVnYWN5LXRydW5rCis2NjcxNiBiYzRjYTgwYmI1ZmQ0YzkxYThiN2U3MDczZTdjNGQxY2MxYjQ3NzBkIGxlZ2FjeS10cnVuaworNjY3MTcgNTRjZDFjYzcwYTQ3OGQ4NTNlZjhjMzY0YTJlMDI3YjZmYTYwMjQ4MiByZWxlYXNlMjYtbWFpbnQKKzY2NzE4IDcyOTI4OTNmYzJjNWY4Yjg1MDgyN2NmMjQ4MjMyOTYwMTlkYmZlNWYgcmVsZWFzZTI2LW1haW50Cis2NjcyMSA3NDhlYzliMmFlZjEwMjdiZDkzM2RlNmY3ODliYWI4YmNhODgwZTYxIGxlZ2FjeS10cnVuaworNjY3MjIgOWQyZjI4MTgyODNkNWU4OWM0MTJkZDZmOTI5ZDU2ZGMwZGVhMDUxNSBsZWdhY3ktdHJ1bmsKKzY2NzIzIGE1ZjMwZDA2NDkzY2JkNGM5NWQ5YThkNmU0NmQ4MjE1MzZkNjZmYWUgcHkzaworNjY3MjQgODhlNjE4M2NkYjM4YzZiY2FmY2M2NDgxZTc1MDdiNjg5M2Q5MDVkZCByZWxlYXNlMjYtbWFpbnQKKzY2NzI1IDAzM2JiNWNhY2QwYTM0MTdiZTZmNGQ0NWMyMjc2MGJkMWYzMTUyMDQgZW1wdHkKKzY2NzI4IDZkZDg3ZGU4NTAzZDU2NTI2Y2NmOGUxNWQ3YmYzMTlkNjIxNjJmMmYgZW1wdHkKKzY2NzM2IDU2ZDE3ODg3NDgyMTMzZDliN2U1ZGQyODdhYjIyZmQxY2VhYTRmYjggcmVsZWFzZTI2LW1haW50Cis2NjczNyBlZWI1ZmEzZWY4ODlhMjIxOTBjNjU1OGMyYWRjZThmYzM0MDA4OWQ2IHB5M2sKKzY2NzM5IDljOTcxZDUyYTNjMzVmYWIyYWE2N2UzMzk3YTUzZTY3MTQ2MGViZDQgbGVnYWN5LXRydW5rCis2Njc0MCA4NzNkMWUzNjk3OWRhZTY3ZDk0ZTQ1NWI1OWUyODI1NGUyODE3YjUyIHJlbGVhc2UyNi1tYWludAorNjY3NDEgZjlmMDE0ODRlNDhiMDJjMWQxYzg4NjFjOTRmYWM4OGJhMmM3YzA0ZSBweTNrCis2Njc0MiAwNjhkOWI2MTRlN2JmZmFiNjhkZDI4MTEyYmIwZmYxMzhlOGY0MjAzIHJlbGVhc2UyNi1tYWludAorNjY3NDMgOGE3YzkzMGFiYWI2YTJjMjZlYWI2OTg5MWY0OWQ4YmU0OWFmZTVkZSBweTNrCis2Njc0NCBiOWFmYTdjOWNjMzVlMTVmYjY4YTlkNDAxYTZjMTJmM2Y2MTAxZDFjIGxlZ2FjeS10cnVuaworNjY3NDUgNzQyNmQ4ZDdjZTFiNGE1ZGFkZjU5ZGY3YTY2Y2NmOGVkNTQ3OWZiYSBsZWdhY3ktdHJ1bmsKKzY2NzQ2IDI4MWIyMWNhMDNmNjM2MzA0Zjk3ZTkzOGY2YmQ2MzgxNzAzZGI3OGIgcHkzaworNjY3NDcgMDEzODk1MjZiYTI1NTc5ZTM4NTU2YTJjMjgwMTA0YzFlZTI3ZTA2NSByZWxlYXNlMjYtbWFpbnQKKzY2NzQ4IDI3ZDdlZmEzZTFhYzAwNTUxOTJhOGJkNzQxMGQ0MmFkMzM2ODljZjYgbGVnYWN5LXRydW5rCis2Njc0OSA2NDJmMjBiMjI1Nzc5NTYyOGU2MzhhNzI0YmIwZjExZmM1MTE5NzQwIHJlbGVhc2UyNi1tYWludAorNjY3NTEgODY4OTNhMzk3ZGQwNTFkNGIxNTIzNWE5OGVjZTJkOGIyOGEzNGMxNiBweTNrCis2Njc1MiBmODEyYmMyYjZhN2JmZGY4NzJiZTE3ODU0MmU0YjIxOGQwMzJmYzliIGxlZ2FjeS10cnVuaworNjY3NTMgOTgxMzA2ZjRiNDA1MDExZTJlYzIwNWFmZGMwZTBjNWIyNjExZTFmYSBweTNrCis2Njc1NCAzYWVhYzRhNmEyY2ZjYjVhZTc3YmJhNzUyMGI5ODI5Yzg5MWJlMWY1IHB5M2sKKzY2NzU1IDQxOWU3MjFiM2NhOWUyMDMwNTI2OTIzODRhZTY5YmU5YzFkMGE2YjMgcHkzaworNjY3NTYgMjAwZGQxZDgyMGZjZjQ4NTkzZmU4M2I0YjI2NjA5NjkzMGUwYmRiMiBsZWdhY3ktdHJ1bmsKKzY2NzU3IDU3YjJkOWEyMjU5NGExNWQ1NzkwMmViY2JjOWY4MWQ4OGM5MWQyMTEgcHkzaworNjY3NTggNGY3NzIwMDRhODVkY2FjNTI2M2ZlOWVkYmM1NDI2NjdlNTY5MzY3NyBweTNrCis2Njc2MSA1NWY5MTRhZTkwZWQ2NGNhMDMwNTJlYzQ4MmFjZDBkNGUxNWVmZjljIHJlbGVhc2UyNi1tYWludAorNjY3NjIgMDM5MTBiODkyNjc5MWNkNjZkY2U0NWZmMjk1ZDEwZTcwZTIxMGI1MyByZWxlYXNlMjYtbWFpbnQKKzY2NzYzIDIyMjM2NTY4MmMxYmUyMDYyMzNhMTg5NzJjYWM0ZWQ3YTU4ZjM4ZjkgbGVnYWN5LXRydW5rCis2Njc2NCAxMDkxMDA4ZjJjYmQwN2Q0YTY3NDgzNDU0ODMxN2YwMzM0ZWMzZmI0IGxlZ2FjeS10cnVuaworNjY3NjUgMjgzZTU0MjY0YzBkNjdmZTRkZmJhZDI2MTgwOGYwMDBiNGY3Mjg5ZSBsZWdhY3ktdHJ1bmsKKzY2NzY2IGZhMDQwZDMwY2ZjYWE4YTYzMjc2NTk4ZWVlYWI3ZTJmYjJmZjA3ZjcgbGVnYWN5LXRydW5rCis2Njc2NyBlOGUxOTYzOTdmNDU3MWI0YjFkNjFmMWFmZDYxNjEyYjE5OTlmMjcwIGxlZ2FjeS10cnVuaworNjY3NjggNzQ5ODFkYzgzOWZkMjJmZmZhNjkwNmU4Zjg3YTlmOTgzMDY2NGViZSBsZWdhY3ktdHJ1bmsKKzY2NzY5IGU4MjI5OTJjZjZjZWNjY2ZkZjhhMjRiODEyMjUwMDI4MTlhMmZjNGMgcHkzaworNjY3NzAgOGVjODQ5NzYwNGM3N2U3ZjU1NDFkOThmNDZmZDE3OWYyMDlhZDIwZCBweTNrCis2Njc3MSBhOGY5NTk1YjlmNTUzNmRkOTc4YTA5OTdkNTY4MmI3ZDg5ZWQ1MzhkIGxlZ2FjeS10cnVuaworNjY3NzIgMDhjNDhlYTA1MDQ1YmIwM2ZhZDA2NWU0NTkwNjM0YjZhZWY2ZTExZSBsZWdhY3ktdHJ1bmsKKzY2NzczIGJmODFjYjg4OTJmNTFjZTczNjNlOTg5MzQyNzQ3M2QwMmU5YWI1NjggcHkzaworNjY3NzQgYjVmMzljOGE0NDIzOWU0Y2MwZmMzNzQ0ZDdlNWMwNDNkODFiYWE0OSBsZWdhY3ktdHJ1bmsKKzY2Nzc2IGY1YjljNmY0YzU5Yzc5MDVkMDA1YzEwZmMxNzc1MTU5ZGE5YmZmMGMgbGVnYWN5LXRydW5rCis2Njc3NyBlZjRiYjRkNWRmZGU5N2E2NWNhOGM0NzJmYWQ4ODI2NzY1MmNmYTU0IHB5M2sKKzY2Nzc4IDBiMWRiMjQyZDIzMmU0N2Y3ZTk1ZWM1MTk0YzY5OTg2NjEwYzM4YTAgcHkzaworNjY3NzkgODRjY2Y5MWEwNmNjNTQ1MmE1ZjhjNzM3NGNhNTkxZjk0YzVjMjAyOCBweTNrCis2Njc4MCA4YTg5MmNmMjVlN2FhNmIzNWY1YTMyNTIxY2MyYjMwZWM4ZTdhOTQxIHB5M2sKKzY2NzgxIDE2YTE5NGRhNzdkZTk2ZTU3N2MyN2Y3MTQ2Y2UxZTEwY2JlNzY5MzMgcHkzaworNjY3ODMgODQ0MmYxMzcyMGE0ZGMwZTY5NjViZDE0ZTRlNzA3NDBiNjYyY2UyMyBsZWdhY3ktdHJ1bmsKKzY2Nzg0IGJlMmY4NWJlNTY2ZTUxNjMyM2ZiNGM3ZTI2MTNkMmU1NjYwZDcyNjMgbGVnYWN5LXRydW5rCis2Njc4NSBjNTZmYmI3YzE2ODljYThiMGQ5YTQ3ZmRhYWI3YmNlMjg4YTZmZDY1IGxlZ2FjeS10cnVuaworNjY3ODYgODg1ZmRmNTk3MGNjNTYzYTVjMGFhYTY4NDM5ZGI4MGM1MmMxMTcyYSBsZWdhY3ktdHJ1bmsKKzY2Nzg3IGIyMWRlMDQyMTM5NWQ1MDgzMjQ3MjZmOTAyOWRjODdhZTg5NTJiMTUgbGVnYWN5LXRydW5rCis2Njc4OCA1ODA4YTdhZTAzYWNkOTA3ZjA5MDBiZGQyMjE1YjU4YWNiMGJlYzhkIHJlbGVhc2UyNi1tYWludAorNjY3ODkgMzU2ZTg4ZDRhZjMwMjNjN2JlYjE2Yjk3ZjRjMjQ2Y2Q2NzIyNTBmOSByZWxlYXNlMjYtbWFpbnQKKzY2NzkwIGU1OTFlNzVlODNhMmYxZjAyNzAyYzZhYjM2OWJhZTI5YmY2NTNhM2MgbGVnYWN5LXRydW5rCis2Njc5MSBmMjFhM2Q4NTg1YzY1NTQ0OWZkZGNjYTIxMmQxYWU0NDQ1OTM4Yjk1IGxlZ2FjeS10cnVuaworNjY3OTIgYWY3YTM5OWZjMjcyMjJjMjA2NzNhMTYyYjA3MmNkYzUyN2Y2MzBhZSBsZWdhY3ktdHJ1bmsKKzY2NzkzIDk4NGE4YmM2ZDk1NmYzNTUxNDQ2MDc5MmQ4MzViMjczYzQ2N2I5N2YgbGVnYWN5LXRydW5rCis2Njc5NCBmNzMxZjA5ZWE4Mzk0YzRlNDhjMzU5YTZkOTkxYmQ5OGIyNzhmMmQxIHB5M2sKKzY2Nzk1IGFjMzE2ZjI1MjI5YzkyMDRlMjY3Y2ZhMjJiOTZmOGRhZmY4NzY3OWQgcHkzaworNjY3OTcgNzNjZTNhMTEwNDZmYmRjMDA4YmNiMzRlZTgxYzQ5Mzg4ZGQyYzU3MSBsZWdhY3ktdHJ1bmsKKzY2Nzk4IGZmNWMzZGQ2OGQwN2MzODhhYWQyZjA5YmFkMGJjNjY1MzJmZTI0NTMgcHkzaworNjY3OTkgMDU2MDQ1NTViOGQ0MDBkYmJiMTcyZjg0ZjBmMmM1ODQ5NGJmZjcxZiByZWxlYXNlMjYtbWFpbnQKKzY2ODAwIDJlNzk0NzU3YmRjODRhYjc4YWQzNjQ2N2Y2OTEwZjIzMjcxOTU1YmQgcmVsZWFzZTI2LW1haW50Cis2NjgwMSBlMDk2YzUyY2Q1Y2E5YTEzZTUxOTRmY2QxZTJjZmQyNWQ3ZTIwMDQxIGxlZ2FjeS10cnVuaworNjY4MDIgOGY1YThlYTViYTc2ZWFhM2Y1ZmI2OTIxZjM3OGMyOGIxMWIyMDQ5NiBweTNrCis2NjgwMyBkYTk1NWMzMzk2NWI0OTIwMzI1MGRmM2E1ZDZiYTMzYmE1M2JiY2YxIGxlZ2FjeS10cnVuaworNjY4MDQgMzU2YTFmNmVmMzRmZDI4NzdhZWQ4YzdhZjc4MmM5ODVlOWNhZDljNCBsZWdhY3ktdHJ1bmsKKzY2ODA2IGM1YjI3ZGY3OWQ3ZDZkOWJmNmIyNTc2MjAxMGJiYTQzMGU2YzJjY2EgcHkzaworNjY4MDcgYzA0Nzg2NTE0NjBmY2FmZDdhOGUxOWIzZTQwMWUyNmE1OGFjMzdlMiBweTNrCis2NjgwOCA5ZTQxYzVlN2UzNjAxOTk2OWIwYjJlZDIzZDRkNWE2NmI5NGI5MjlmIHB5M2sKKzY2ODA5IDUyNGFjNzQ0YWUwNDM5NjY2NDAwOTMwOWYxMGFmYTI2OGJjMGU0NTQgbGVnYWN5LXRydW5rCis2NjgxMCBkYzk1ZTQ2ZjFmM2U4OWE5YmQ2MjBkMzQyN2U2Mjg1MDMzMjA5MjU0IGxlZ2FjeS10cnVuaworNjY4MTEgYzJkMDE5NmVhNThiZDQ2YmVlMzkwODQ3MmNmMjk4ZTZhMTk5ZDc1MCBweTNrCis2NjgxMiAwMmRkNWRiNjI5MGY0NWJlMmVlYTFlYmQ1NzNhZTlmY2I4OTFlNDU1IHB5M2sKKzY2ODEzIGM5MzNjODQ2N2JkZGFhZWViZjRhZmMyZjIzYjlmYTY0OGU1NzIzZWQgbGVnYWN5LXRydW5rCis2NjgxNCBjOWM3OGUwMGRmNjczZTY0MzU3M2U1YmM1YjAzNGZiNDUyM2YzODI2IGxlZ2FjeS10cnVuaworNjY4MTUgYzVhZTkzMmY2M2M5ZGEzNDhiNmFkNTI5Zjk1OTZjOWNmOTg2MTJkYSByZWxlYXNlMjYtbWFpbnQKKzY2ODE2IGY1MTE1YzEzMmQ0YWE2YjRkOTE3MDUwZDgwNTI0YzNjNmU1NDdmNzggcHkzaworNjY4MTcgZGZlMzEwYTQwMjQ1OGQxMTY2YjZiMGIxNGY4YmJmOTFjOTQxNGExZSBweTNrCis2NjgxOCA3YWVjMDAwMTVhOWUxNTg5NGRiZGU0OWNmZDIyYTgzYjU2ZTM3NzkyIHB5M2sKKzY2ODE5IGQ4YjRhNjFhYmYyNWY3MTVhZTNhNjY5NjAzMTQ4NTZlYTFkNjE0NmUgbGVnYWN5LXRydW5rCis2NjgyMCBkYmQyYjE4MTdhNzVkNDI4ZjA0MjFmNjhmZDNjNjIyMzkzMmI2YmYxIHJlbGVhc2UyNi1tYWludAorNjY4MjEgMTI1OTg0YjcxYTc2OGUyMDA1NTVlODRhMjM1ZGU2YmRiMjNiN2Y5ZSBweTNrCis2NjgyMiBlOTkxNTM4YjlhODc2Yzc3NGU2MDkwODg3MWJkYzgwODY4NmE4MDk5IGxlZ2FjeS10cnVuaworNjY4MjMgOWM3ZWQ3MGFhMmMzZmU0ZjhjZjRiOTQwYmUwMTQxMjI2MzIzNzhkYSBsZWdhY3ktdHJ1bmsKKzY2ODI0IDdlZmRkYWU1MGQyNTUwMzkxNTIxZWMzNjMyOTkwMzJhYjBlOGU1NDYgcmVsZWFzZTI2LW1haW50Cis2NjgyNSA2Njc5YzMyNTJmOWIwZWIyNWRkODMyY2IzOGQxMDY1NzRmMTY3OWJiIHJlbGVhc2UyNi1tYWludAorNjY4MjYgZGQ5N2RjNzlhZTBhMDVmMTRiN2RkYzE4MzgwZTRjNTlkZTRlZGRlMCBweTNrCis2NjgyNyA5MTU4NzgxOGFkYjgzODA0YTBkZWFkYWQ4YzY1N2IxODM0MzBmYjBlIHB5M2sKKzY2ODI4IGQyMTQwZGU3NjQ3OTRlN2U0ZjJhYjA0NTg4ODI1YTM5NGYyMjY4YTcgcHkzaworNjY4MjkgMWM5ODA1NTRiNTRiMmMxMGQ0YmI3ZWE4MDViZDRmOTU4OTJkM2ZiNCBweTNrCis2NjgzMCAwYjJmNzY1YmE0Zjc3NWNmNTljZDVlNDhhNWM1N2U5MmMzYzg2NDUzIHB5M2sKKzY2ODMxIDgyMDkxZGY2NTFiZTdhOTE3Njc3NzE5MzE5MzcxZmM1ZmYxMzExZjggcHkzaworNjY4MzIgY2I3ODhlMDg0NGU3ZjlkMDgyODU0YTIzZmQ1NDMzMzA3MzQzZmEwNCBsZWdhY3ktdHJ1bmsKKzY2ODMzIGNlN2I4YzMxN2RhMjBmOGE3NDVhNTJmOTM2NDE1MDI3N2VkY2U3MGUgcmVsZWFzZTI2LW1haW50Cis2NjgzNSBkZWVmMjg0ODIyZjc1ZDA3YTkyOGMxYTUyNWU4NjM3NjU2MTY4YjE0IGxlZ2FjeS10cnVuaworNjY4MzYgMjEwNjBhNTZkZWZjODgxZTY3N2ExMWQxMTM5M2ExZDA4YjQyMTc1ZCBsZWdhY3ktdHJ1bmsKKzY2ODM3IDZlN2I4NTNlODYxNjA5MzM0MjcyNzhkYjI3M2E1NWZkMGZlMDhkN2YgcmVsZWFzZTI2LW1haW50Cis2NjgzOCAxZTViMjA1MGVjNmFjZDQ4MmY4OTkzYTYxNTI0ZGM0NGYyZWY2OGY3IHB5M2sKKzY2ODM5IDU5ZGFhN2NmOGNhMDk3OTUyZDA5ZGI4NTMzYThiZDgzN2IzMDU4YmYgcHkzaworNjY4NDMgNjllYTEyZGI5YjI4YjU5ODMyMmQxYzY1N2FmNjY1YjlmMjczZGU2MiByZWxlYXNlMjUtbWFpbnQKKzY2ODQ0IDg2MGY2Mjg0OGFmMDJmYmQ4Mzg1NTdkMjgwNWUyYzM2ZWYzMjExOTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODUxIDAyMDVjZjBiMWFkYjlmYmUzY2I3ZGVmYWRlMzI4ZGU1ZTEyMWJlNjQgcmVsZWFzZTI2LW1haW50Cis2Njg1MiA5NGQxN2NmM2Q4YmJiZTAyNDJkMjJlNDg0OTMwMjUwZTlmYmVmODNmIGxlZ2FjeS10cnVuaworNjY4NTMgYjRmY2IyZjQ3MTAxY2JiZGUxMzNjZjUwYWIxNGI3YjY4NmQyNGM4NCBweTNrCis2Njg1NCA0ODQ1ODEwZjU4OGVhMjhmMDQ3MDMwMzNkMDg0YzllZTNhNzViMzkyIGxlZ2FjeS10cnVuaworNjY4NTUgNTc1ZjY1ZjAwYzZjMDkyM2MwYjI2ZWE5M2YwYzMxYzE0OGU0YWYwYSBsZWdhY3ktdHJ1bmsKKzY2ODU2IGQ0YjYxM2RhMzhkY2NmNjg5YjUxODU2MDI0NzVhYTE5YmJiZjE2YjQgbGVnYWN5LXRydW5rCis2Njg1NyAyYmYxYzFiZDhkOTZlYjBlYWYyOGM2NWZiNjhjYzExZWI5OTNjZWNlIGxlZ2FjeS10cnVuaworNjY4NTggOWMwZWQ0YWVjZmJkOTFkM2JjODI4ZjRhYmJhZTRlNjE5YTFmYzMxZiByZWxlYXNlMjYtbWFpbnQKKzY2ODU5IDUxODc2YTQwM2MwZGY5YmM1Njk3MDVjN2I5YjJlZTdjODY3YWM3MGUgcmVsZWFzZTI2LW1haW50Cis2Njg2MSBjZTY0Y2JhNTFjMmI3ZDllM2MwNmM1NTkyYjVmMDRkYTVjMTg4ZmFmIGxlZ2FjeS10cnVuaworNjY4NjIgMGRhM2MzMGZlOWI1MjNhYWYxN2M0MzBiMThiNjBlYjcwOWE5NzhhNyBsZWdhY3ktdHJ1bmsKKzY2ODYzIDU1MGQ3NTE2MGNjNGY3MzgxYjliNTFmMjVkZmUwNTU2YmQ0MzE0MzAgbGVnYWN5LXRydW5rCis2Njg2NSBhMDI1OGJhZWQwMDU3YzA2NTM1NDQxNzFmOWI3ZTYxNTExOWQwZDc3IHJlbGVhc2UyNi1tYWludAorNjY4NjYgMGUzNTlhZmMwNjQ2ODEyNTNkMDFkMDRjYTRmMGQ2NzMyMTgwNzM2NSBsZWdhY3ktdHJ1bmsKKzY2ODY3IDBiN2UwMjM4MDNmYjM3MmUwNDUyNTFkM2JmMTg1NmMwNDQ1YWU2MDcgcHkzaworNjY4NjggMmEyY2RiMjg1NjU2ZGUyZjNmNjkzM2Y1OTgzNjNiMjVlZGMxOGE5NSBsZWdhY3ktdHJ1bmsKKzY2ODY5IDY2NWZhMDU2MzJmN2FiNjgzY2M0ZmM1NDdiZDY3OTdhYWE4NzM4OGYgcmVsZWFzZTI2LW1haW50Cis2Njg3MCAwOGQ2ZGQ2ODRhNmIzMTBmM2Q0ZTFiODM5NzlmY2IzYTc2NmRjZDcxIGxlZ2FjeS10cnVuaworNjY4NzEgM2RkMTY1MWFmMzVkZDRiY2IyNThlZjI4YmRkMzRmZmMwNDA2YjVkZCBsZWdhY3ktdHJ1bmsKKzY2ODcyIDM0MmY3MDE4OWVhOWU1YjU4ZmM5Nzg1MDlmZTMxOTViYzJhYjNlM2IgbGVnYWN5LXRydW5rCis2Njg3MyBjMGFjNDc5ODRiMTEwNGRkYmMwYTA3NDBmZWQ0NzI3MmJjNjlmZjQ3IHB5M2sKKzY2ODc0IDc5NmIxYmI5NTU0Y2I3ZWE2MjUyNTYxMTBiZDRjNWExZmRjNTg5ZTkgbGVnYWN5LXRydW5rCis2Njg3NSA1YTA5MjEwMWYwNjk2M2UyNTBlNWJmMTRiODg5ZDk1NjVhZTc5YWNiIHB5M2sKKzY2ODc2IGJkZjRkYTVkMDRhZDliZTUzNThjMGY0YTJhZDU1ZWRiYzdiMWM0MTkgcHkzaworNjY4NzcgZDNkZTA4MmNhMDMxNGE5ZWE0YjE5Yzk0ZGJlYTIzM2ZlY2JkZDRlNiBweTNrCis2Njg3OCBlNjcwMmMxYTA3ZDc1MmIzZWU1OTQ3YjgxZjMwNzA2NDMzNmY2ODM1IGxlZ2FjeS10cnVuaworNjY4NzkgMTg3MDA0ZGY1NzljYjAyMTBkNzcxODhhM2YwNWYyOWYwZTU2ZWVlMiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4ODAgOTljNzhkNjBiZTEyNWUzZTM4ZTA0MDg1OTU4NTYxMzIyMGMyNWMzZiBweTNrCis2Njg4MSAyZjBkNzM4NGNjMWMwYTgzM2QxYmUxZThhZjdhMmM2MmZkYjdmY2ZiIGxlZ2FjeS10cnVuaworNjY4ODIgMDhhM2U2OGYxZmNiYjExY2I1YTA0Njg5NDFjZDZjMmNiMGIwNmRjZCByZWxlYXNlMjYtbWFpbnQKKzY2ODgzIDcxZmE3ZDNjYzRjNTlkYmVmNzY3MzRlOTg2YjE2ODYxZTk0YmEyZmEgcHkzaworNjY4ODcgOWZkZjhkOGRlMjg3NWE3ZDU1NmM5NTQwZmNiMzdiMjk5NmMzZmEyZCBsZWdhY3ktdHJ1bmsKKzY2ODkxIDYyYzI0ZDRhMWY4ZjYyMDlhMDJjYmRkYWYxYTAwMDU3YzczMzc4ZTYgbGVnYWN5LXRydW5rCis2Njg5MiBlMWE4OGU4Yjk2NDliZmFlN2VmYmY3OTBmYWZmOTY3NmEwYWM1NjI1IHJlbGVhc2UyNi1tYWludAorNjY4OTQgYjA5ZTcwNTNiNDcyYzM5NWUwNWE0YWI5YjRlZjVjOWM4Mzk5YWFlZCBsZWdhY3ktdHJ1bmsKKzY2ODk1IDVlNjY2MzI4NmFiYzU3YzliOGNhMjU1NTBiMTJjNTYwY2E1NDY5MjkgcHkzaworNjY4OTYgYWM4NmU5NTM1NThmNDQ2Y2Q0ZmY2NmI0MTI4MmYzM2ZiYzYzODllNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4OTcgMGYwYzIyODM1ODNlZWI4NzEwMmMxNzAxY2I2N2UzMjEyNzllMjE3ZiBweTNrCis2Njg5OCAyMzJhMjJjZmRlYThmYTk5M2ZiYTQ1N2Y4ODYxYmVkNjE5MjA1ZTQ5IHRsZWUtYXN0LW9wdGltaXplCis2Njg5OSA4NGYwMTc0MjBiOWI4ZTFiNmE5MTQxOTAxMDlmNzVkZjkxNjU1N2IwIHRsZWUtYXN0LW9wdGltaXplCis2NjkwMCBiYjUxMTU5ZTcxZGZjMzE1MmUwM2EyYjAwMjYyYTYxMDNlODRhMmNhIHRsZWUtYXN0LW9wdGltaXplCis2NjkwMSBkMTdjZmVlNGYyM2RlZmJlYTUzNmU2MDUwYWYwNDk0Mzk3MGNlZTgzIHB5M2sKKzY2OTAyIGZkY2M4YTMxMzUzNzQ0OGY0NjBjMjRiZWM1OWNhYmQ5MzdiODljZjkgbGVnYWN5LXRydW5rCis2NjkwMyA0MDlkYWI4YjFkMzQ0OTY5OTFmNTkyYWVhMDhmMmQwMmMyODNiYjQ1IGxlZ2FjeS10cnVuaworNjY5MDQgNDgxOTRkN2FmMzJmMDI2ODFhNzc2ZjBlY2U3NjcyN2Q1N2IyZTc4NyBweTNrCis2NjkwNSAwYWRmNmJkYjE3MGY5NzNjYTU3YWU4MDdmZGMzOTE4NjZkNjgxOGY0IGxlZ2FjeS10cnVuaworNjY5MDYgNDczN2U1ZGY1MGY0ZDdmZTllYTgyYjYzMDcwZjFjYWU3NjM5ZDYxMSBsZWdhY3ktdHJ1bmsKKzY2OTA4IDJhMTA5NmI0ODE3YTJmNmZlMmM0ZDBmMDNlN2U3MWRkZjZkNTc0M2YgcmVsZWFzZTI2LW1haW50Cis2NjkwOSA1YWZjOWZmYTgwYmI3OWVmNmIyYmMxM2MwYjA0MmM2MzhhMmQ4ZGE2IHB5M2sKKzY2OTExIDAxMTExYzQwNjE2ZjU5MGI5MWYyOWIyOWJhMDJjYWQ4OGU3ZGQzMTMgbGVnYWN5LXRydW5rCis2NjkxMiA5MmQwODkwMzM1YzI0OTQ4Y2EzMGNlMWNiMzVhZTZiZjFlYTg1ZmJmIGxlZ2FjeS10cnVuaworNjY5MTMgYjhmYzc5MGEyN2FlYzhiNjhiMzhiODAyMGFiNGZiZmI0MzdiM2I2YSBsZWdhY3ktdHJ1bmsKKzY2OTE0IDhkMmE2OTcxMWE5N2NlZDViYjA0M2FiZTQ5OWMxN2M5M2MzMWI4NWQgcmVsZWFzZTI1LW1haW50Cis2NjkyMCBkMDYxOWUyMTBhYzQyZmUwOTdjYzAyNTBjOGJjY2QwYjRlZWEzYzM3IHB5M2sKKzY2OTIyIDY5MzgyMTlkYzVhNjQ2NDg3YmZlYzgyOTYwOWYzYjE3NTdlY2YwYzQgbGVnYWN5LXRydW5rCis2NjkyNCBkN2E3Mjg0MjBiMDNhN2IzN2U4MTViM2Q4ZTQ1ZDc3YTMxY2M2OTA4IHJlbGVhc2UyNi1tYWludAorNjY5MjcgMTk5MjhlNDVkMThiMjE3YmVhZDk0MzVhNTQ3MDlkZWZlNzE0YWNiMyBsZWdhY3ktdHJ1bmsKKzY2OTI4IDlkZWRmYjhlNTY1YzQ0NWQ1MzRlMTcyYzBhOTQ4ZmEyYzgyYjVkYWMgbGVnYWN5LXRydW5rCis2NjkzMiAzYzNhYmQ1ZmM4MzM5MjM3MjQ3MmQzZDJkY2EwMzViYWNmMDgyNzUxIGxlZ2FjeS10cnVuaworNjY5MzQgMDBlNDY3ZGI2MTgyNTQzNmJkMGMwNTg1OTk5OWEwYmE5MjMxMjA0OCBweTNrCis2NjkzNiBhNTc4MTQ3YmI1YzEzMDU1OTRmMmVjYjBmNGM5ODVmZDU0OTczMDUwIGxlZ2FjeS10cnVuaworNjY5MzggNDYyMjUyMTFlNTAzYTE5NTRiYzgwNjFiYWMxMmVmNDMxNzI3MTQ2OSBsZWdhY3ktdHJ1bmsKKzY2OTM5IDI0MWUwMzM3MWM3ZTQyNjMyZTI3ZWYzMjIyMWNlNTdkMTg3YjAyZGIgbGVnYWN5LXRydW5rCis2Njk0MCA2MDI0ZTBjYWJhNjQ4MDJhZDkzMmJmY2NmMWU5NTdmYTBmNGZlOTY1IGxlZ2FjeS10cnVuaworNjY5NDEgNGUyZTY4ODRmZDI4ODc2MjJhYWViZjk1OWI2MTJmMjQ3ZGNkNWEyMiByZWxlYXNlMjYtbWFpbnQKKzY2OTQyIDhhODkxMzJiODU5ZjFlYjRjMjVkMmQ4NDdiNWUzMmIxMjMyMTZjODggbGVnYWN5LXRydW5rCis2Njk0MyBhNTNiYjgzMzBhNjRjNTFiY2MwYTQ4ZDY4YTI0NmNkZTQwNjM1M2VhIHB5M2sKKzY2OTQ0IDUwYzg4NmRhZWRmMGQ4MTVkNjQ5OTU4MjY1ZmMyZmFiMjY5ZDIzZGMgcHkzaworNjY5NDUgY2E3MjI3MWM2MjRjMmRmYmViYzBiNjAzMmYwMWI5MjQxM2MxNGMwNCBweTNrCis2Njk0NiAyYTM5MTBhOGRjMzc3YWZhZGMyMWIxZWM0MWJhYzVmMTYyOGZlOTNjIHB5M2sKKzY2OTQ3IDQ5MWVkODBhOGNjMTUxMDMxMGZjMzEyZTI2YjMyZmU4M2Y3ODk0NmMgcHkzaworNjY5NDggY2JjM2FmYzFlNDBhMjA5ZDhkNDcwMmZmZDRmZWQwYTI0NDdkMDU3ZSBweTNrCis2Njk0OSAyYzNhNmM5ZGZmNjJkNWM5NjAwNjc5Mjc0Yzk2Nzg4MGExNWJiMzdlIHB5M2sKKzY2OTUwIDY0NWZlNTZjMTE3YWE2M2Y5MWYwYzM0OTE5NzdhMDVkODFkOTMwNzAgcHkzaworNjY5NTEgNDgxYWQzZDlmZmQxYjY4ZGY4ZGE4NTc4ZTI1Nzk4MTk2MjNiNmYwZSBweTNrCis2Njk1NyBmNjdkZTYxYzJjZmE5MjM4ODNlYzQyZTE3M2NkMTdmNzcxOGRjYzNlIHB5M2sKKzY2OTU4IGI1NTVkNGQ5NTc1YzQ1OGU5N2MwNWU5NWI4Y2MzNmEyNzYzZjg1ODcgbGVnYWN5LXRydW5rCis2Njk1OSA2NmM1NDVmNzk2MjY5MzJjMWFiYTNiYmZjZTJiYTNmODExMTEzNjA2IHJlbGVhc2UyNi1tYWludAorNjY5NjAgZGZjZTYyYWIwN2JhMGExZjZjZTQ3MjlkMDYyMDdjYWFkMGVkMzQ0ZCBweTNrCis2Njk2MSA4M2QwOTQ1ZWVhNDIyODQwOTI2Nzc1Yjg1ZWRkZjMzZTYxNGU3NjI4IHB5M2sKKzY2OTYyIDAxMjFkZjNjZjVhMDEyYzJiODA2MGRlZWFjN2Y4MzM0ZmNlMTVlZWEgbGVnYWN5LXRydW5rCis2Njk2MyBiYzFmNDMyNTJjOTIyMGY5MmE2MDJlZTVkNzEzNjUwOTQwMWZjMjM2IHB5M2sKKzY2OTY0IDk2ZTc4NTRkN2M2ZTFhMTJiMmFlYzVlYjQ4ZDNjNmNlMzcwYzc0OTAgbGVnYWN5LXRydW5rCis2Njk3MCA2ODRiZjc5OTAwOTRiY2ZmMWQzODU0ZDIzZDVmZTQwOGRhY2NjODk2IHB5M2sKKzY2OTcxIGU4ODQxYzM0NjY1MTk0NzBkNDUwYTNmNDhhY2QwMGRlZDM2NDRhYjYgcHkzaworNjY5NzIgNTdlMmI1YzQ1Nzk1YTgwNTBlNzQ1MDMzNTMwNDA3YzFkMzlhNDA5MyByZWxlYXNlMjUtbWFpbnQKKzY2OTczIGRiZDU0YmFjMGI2ZjdjZWI1YTlhMWUxNGQzOWZkZjMyYTcxNWZhYWIgbGVnYWN5LXRydW5rCis2Njk3NCAyZTM4Y2E3MDliMWQyOTZjN2ZmYTgyMWZiMDJlYmU3MzIyNmE2OWNjIGxlZ2FjeS10cnVuaworNjY5NzUgM2ZmN2JiODMwNTE5YzI3ZGUxNWYwZDdhYTE4NTE4MDEyZjllY2ZhYiBweTNrCis2Njk3NiAyNmJjMGNkMDEwOGI0NWI2ZGVmMDk0YzkxMzY5M2Q1ZGY5NDY0NTJkIHB5M2sKKzY2OTc3IDZjZGUyYTA1MWIyNzlkMjEwYzU2NjBiYmUwY2QyNmE4M2I4OGJlNzYgbGVnYWN5LXRydW5rCis2Njk3OCA4OWJhMDFiNjE0ZWVkMzE4MDY5ODBiZDIyOTAxYmU3YTQwN2YyNmIyIHB5M2sKKzY2OTgzIDg3ZWY4OTYwODIzYTE4NDgxNmNlZjY1ZTUxNTI1NTJiYTU2MzU5NjIgcHkzaworNjY5ODQgODQ5NmY1NDAzYTgyMjUxMDcwNjZiMTdkMjU5NzZjMTc4NjY3OTMxNiBsZWdhY3ktdHJ1bmsKKzY2OTg2IDQxNTEzN2QwZTIwYTUyN2ZlMzFiY2ZiNGNjYzIzYmZiN2MyMTNkZWQgcmVsZWFzZTI2LW1haW50Cis2Njk4OSBjMjA4ZjVjMWU0ZmU3YjczMmIyNDU2ZTAyOWViODM3ZTdhYjMyZTZjIGxlZ2FjeS10cnVuaworNjY5OTAgYzFkY2ZmNzU5NzZlMDU0NmJmNzY0ZDgxMTkzMzA1ZGE1OTRiYzFlMCByZWxlYXNlMjYtbWFpbnQKKzY2OTkxIDFlYjE3MTIyYjRjY2I3ZGZjNWIxNmRjMWYyYzY0OGYwYjM5ZWMyYjEgcmVsZWFzZTI2LW1haW50Cis2Njk5MiA4MGQyZDQ2N2YyMzg4NmQ3ZDRmNzVmZWU4NDBlMzc5Nzg5MDg0NjhkIGxlZ2FjeS10cnVuaworNjY5OTMgZGRkMGY4Y2NlNTVjZDIwODJhNTViOWI2MmJhYzc4ZjAzODc4NzE2MCBweTNrCis2Njk5NCAwYWZhNzNkNGJmOTk0NzgxMzM5MWQxNTM3YTIzNzZjNjQyYWRkOTdjIGxlZ2FjeS10cnVuaworNjY5OTUgMTI0OTg0MGE0MmIyZGFlYTJhNWQ3NjkwNTdkNzZlMWI3NGJmMjliNSBsZWdhY3ktdHJ1bmsKKzY2OTk2IDE5Njg3ODMwMzM4ZmJiMGRhNjk3ZTE2N2Q2MTU3NTcwZjlmOTRjYTAgbGVnYWN5LXRydW5rCis2Njk5NyBkZjc0MjI0NjA2NjA2ODkxYjYxMmIxNmMxOWIwZDE3M2Q4NWY2ODFiIHJlbGVhc2UyNi1tYWludAorNjY5OTggNTQ3OWE4NzdiYTI4MjZhMGQwMGI5NWMwMWE5ZmI5ZTBkYzJkYjBjZSBsZWdhY3ktdHJ1bmsKKzY2OTk5IGQ4NDdjNGZiN2IzOTkzYjZiYzQ5NmI2NjllYjQzYWEzZTAzY2EzNTYgbGVnYWN5LXRydW5rCis2NzAwMCA3MTI4NGU5MTU3MDYzYmE3ZTk0MWM5ZGMwNzdiM2YwOGE4ZWMwMTYzIGxlZ2FjeS10cnVuaworNjcwMDEgYzZjMzI4NDJlNzFkYzQ3OTQyNWI0ODM2N2UzNDViNDI3ZmViNTFmMCByZWxlYXNlMjYtbWFpbnQKKzY3MDAyIDcxNGQzYzE0NDNhNzQ2ZDhmYWUzMTg0MWJlMmRjNjc5NDhhMDgwMGUgbGVnYWN5LXRydW5rCis2NzAwMyBiYmFiMTFjZGIxNzU2MTAwNjlkMWYzMTA5OGRlMjJjM2M5NzA4OTA1IHB5M2sKKzY3MDA0IDA1NzE1ZjBjZDdlNzc5NDM0YzM3ZTQyZmQ5MjY0MzhkNDg1MjdkOGYgcHkzaworNjcwMDUgODlhZTlkN2QxOGQ3YmNkZWY2MmE5ZjE4OGNmYWFkMTI2MDMzZTc3MyBsZWdhY3ktdHJ1bmsKKzY3MDA2IDJhODVlNWM5ZTFlMmE3N2Y3OGI3M2U3Y2ZjZmI0YmY3NGY2NWQwYjEgcHkzaworNjcwMDcgNjNmM2YwNDVmZTQ4YTBjNjRhMTI4MjlhZWM3YjRlMTdjMmY3ZTc3OCBsZWdhY3ktdHJ1bmsKKzY3MDA4IDBiYzJjZDJkOTU5ODJiMzI1OWFiMTcwNGU4YjM0MGUzMmRlOWY2MGEgcHkzaworNjcwMDkgOGI2NWQxM2MxNzdjNmJkYThjMDRjZTQ2YTI0ZWRiMzg5M2MxNmQ0NCByZWxlYXNlMjYtbWFpbnQKKzY3MDEwIDMxYTY5ZWQwOWZiYjQwZTE0ZjEyYTUzZjExOGQ5ZDFkMDk1ZTViNDYgcHkzaworNjcwMTEgODQyMGFmNmMzM2VkZDkzM2RhYTk5Y2FmZjliOGFkYzVjMDRhYjk4MiBweTNrCis2NzAxMiAyYTM4NzcxY2VjZGQ1YWQzNzQyMTVkNjg2ZTBiMWQ0N2FjNjQ4ZWE2IHB5M2sKKzY3MDEzIDY2MzQ1MzBhMDRlMDM0NTIxYTJmZDAwMTA2NTliNjk1NzgzYWI3ZGQgbGVnYWN5LXRydW5rCis2NzAxNCAxYTQ4N2FiMGQ2NWI3NDI5ZjVmMTcwMTE3OTkxZGMyMDU5M2E5YjMwIHB5M2sKKzY3MDE1IGJiZTM3MzIyMTJkNjRlNmYzYjAwMDY1YzQxMWMwNGMyMjczM2I3ZDIgbGVnYWN5LXRydW5rCis2NzAxOCBmNjY2ODhlNjlmNjZiZjVlYjI1ZGMzNmEzYTczMzJjYTM5OGU1NWFjIHB5M2sKKzY3MDI2IDRhNzQ1OTBmMzhkYTViMjBkNGQ1N2JiMDExOWIzYzI4NjNlYzA1ZjEgcHkzaworNjcwMjcgZGYyYmJkZTk2ODgwMmQ5Y2JhYjYzZjEzN2FlOGE1YWRjNDdjMzNhYyBweTNrCis2NzAyOCAxOTVjZDdlYmY2MmNkYmMxNTU2ZjllYThmNTdlMGNkMTY2YTkwZjkyIGxlZ2FjeS10cnVuaworNjcwMjkgODYwNzM3Yzk2ZTk3ODJhMjFkYzQwZGM5MzUwMTRkN2Y1YTBhYjM5NCBweTNrCis2NzAzMCBhNTc2OGJkNjI5MzhiOWRmOWM4NWEyYTBiMGYyM2NiNDY3ZjFlNGE3IGxlZ2FjeS10cnVuaworNjcwMzEgMGExODhhMmQ1MDQ4ODJhYTI5YmRlMDQ5YzM0YjI1NzhhNDdlYTM0NCBsZWdhY3ktdHJ1bmsKKzY3MDMyIDMwYzBiMjY2YWYwNjJjMTdjNjgxMDY3MjcyNjViYzM1ZmZlNmQ5MWIgcHkzaworNjcwMzMgZTgwZDllNmUyNmJiZDFmNjE3MWE3ZTE3ZWZlYTY3ZjM1Nzc2ZDk3YSByZWxlYXNlMjYtbWFpbnQKKzY3MDQwIDQwZmQ2ZWYwZWFhOGYzM2JjZWNlMzIwMzJkMjA5MGNjYzYyNjM1OWIgbGVnYWN5LXRydW5rCis2NzA0MSA4YmRlOGY1MWFkZTE0ZGU0OWNhY2EzMmI5MDhlYzlkMjZkZDYyODM2IGxlZ2FjeS10cnVuaworNjcwNDIgNDBkOGZiMTI5MzA2YWQ0ZjM4YzgxYjNiYTcxNDM5M2NiMzU5ZWYzYSBweTNrCis2NzA0MyA0YjcyNjUwMGE5Njk5Y2ZkMTk1MzkzNmQxZjNmMWIyMjUwODNiZTk1IHB5M2sKKzY3MDQ0IDgwNGU2MzY1ODE3YzRiMTJjYzFhZjRiZjc3ZGFhMDZlOThlMzAwNmUgbGVnYWN5LXRydW5rCis2NzA0NSAyYWE2OWI5ZDEyNzM4ZGYyMGYwOGJjNDBkZGQwNjlmZTEwYzgwMzI1IHB5M2sKKzY3MDQ2IDAyMWJjOWY4ODEwMzQ5ZGM4YmZlNjZhODQyZjhmMjMyOTAzY2U2NTEgbGVnYWN5LXRydW5rCis2NzA0NyAzNDg1ZDk1OTU3YzFkMmM1ODFlMDFmMTNiMmQ0OWJiZTY1MmEyZjRhIHJlbGVhc2UyNi1tYWludAorNjcwNDggNzExMzkwZDRhYzIxMzkwYjBjNmQxZGUyOTgzNzJlZjAzNDM0OWQyNiBweTNrCis2NzA0OSAyNGY2NWUzMDkwZTgwYTIyYWZkZTZhODkxNzQ5MTk4NDFlMzViOTEyIGxlZ2FjeS10cnVuaworNjcwNTAgYmIxMDljNGJlZDI3NmEzM2VhYWNjNmMwOTQwMTZjYWVmMWZlOWFjMiBweTNrCis2NzA1MSBjMGFmYzRlZWJhN2Q2YTg0MzM1NzU3OWM1MmI3NTk0MTIyNWM4ZTliIHB5M2sKKzY3MDUyIDZhMjBlOGMxNzQ1YTk4ODhmZjhhODAwNzIwYjFlZTFkOTc4YWYwMWQgbGVnYWN5LXRydW5rCis2NzA1MyBiM2RmNThmNzZlNDlkODdlMGNmM2Q5NzM0N2M4ZDI3NjcyYTk4ZGI2IHJlbGVhc2UyNi1tYWludAorNjcwNTQgZDJlYzZkNWIyZGI5NzAxYmEwNjI5NTMyNWU4NjU5MzlhNjlkMDcwYiBweTNrCis2NzA1NSA5ZmM1NzNmYmFmNWUzNGJkYWNkZjI0ZTQzMDlhZjhhYTJmYzc1ZmNhIHB5M2sKKzY3MDU2IGU4YzBhNWE2NDZjYTZjY2RhMDMxZWJmYWQwOTE1MTNhMjhiZWU5ZTEgcmVsZWFzZTI1LW1haW50Cis2NzA1NyBlZmVmNWZjNDVhOWE0NzcyNTBiZWZjZDdkZWZlYjRlZTA1MmJmOGY2IHB5M2sKKzY3MDU4IGMzMjMxMDI3MzdiYzIzY2I4ZmZlNDkxZmE5YWUzYTc5NjdlZWEyNGUgcmVsZWFzZTI2LW1haW50Cis2NzA1OSBhNWNhODk1MWJlZjE3MjliN2Y1ZDRkYjc2MzIyZmZhYTllNDAwYWEyIHB5M2sKKzY3MDYwIGIwY2NjYjU1OTQxYzQxNzBlMTk1YzJkMDhmNjUyNDBhM2NiZDVmYWEgbGVnYWN5LXRydW5rCis2NzA2MSA4MDQ1ZDU1OTZiMWM4YjkzMzQwNTcwNzRlMTljODI0NjkwZmM3MzU1IGxlZ2FjeS10cnVuaworNjcwNjIgOWM5N2JjODYxMjJhMGY3Yzc4MzIyNTg0YWE3YTZiZThlNTE4ZGM1YiBweTNrCis2NzA2MyAwNmNmMmNlYTM4N2I3ZTQ1MDNmYWJjOTZkNWRmOGQ1MTYwYjg0NjAxIHJlbGVhc2UyNi1tYWludAorNjcwNjQgM2UyZGU0ODRjZTM0MjE3YzZkYTQ3ZWJhYzE0OGNiMTBkYWQyZTAwMyBweTNrCis2NzA2NSA5NjQxOGY4MTJmMDY4MDBlMDc3OTZjNzkzMzZlNmIyYTM5NWQ0NDE5IGxlZ2FjeS10cnVuaworNjcwNjYgN2U0MDI2M2RiZmQzNDU0OTkyODVmYmM5MmY4MjRmMmY2NGI2ZjFjMCBsZWdhY3ktdHJ1bmsKKzY3MDY3IDZjYWMyZTMwNzdhMzRkNzJhM2UxODE5ZmI0YmJhYjUwNDJjZjY4ZjEgcmVsZWFzZTI2LW1haW50Cis2NzA2OCBmMzIzNGU0M2UxZmU4MGEyOTRhODUxNTg4MWJhNjk4MDE4Y2Y0MjkzIHB5M2sKKzY3MDY5IDk5MDZmNjk2Yjk0MTk1YWZhZjA1NjhkMWE4ZGY5Yjk1NjAyOWY1NDUgcHkzaworNjcwNzAgMGRmZGI1MmFiZGY5Zjk1ODdiMTA3ZmEyMzhmYTk4OGE3MjYyOWRkYiBsZWdhY3ktdHJ1bmsKKzY3MDc2IDU3OGFhNDNkYzQwMDQzMDc1MDE4ZTc3ZjkyYjZjMzIxYmNmYjMxM2UgdGxlZS1hc3Qtb3B0aW1pemUKKzY3MDc3IDkxYWI0MzU0NDQwZWZjODE0NGM1MjRhMzJjZDZjMjMzMGQ0ZDBjMzUgbGVnYWN5LXRydW5rCis2NzA3OCAyZWQzZjg5MjZiYjg5MWM5OWE4NGQxYzEwYzkwNzRiMGIxMWQxNWQzIHJlbGVhc2UyNi1tYWludAorNjcwNzkgNDVhYzUxOTZmYTY3OWRmYWUxOTk0ZTA4N2QxNjlmMTU3MzVhMjVhOCByZWxlYXNlMjUtbWFpbnQKKzY3MDgyIDExODRhYmM1Zjk2Yzk2ZDYxMmYzZTk2ZDEwNDFhY2YyNTA1NmQ5NzggbGVnYWN5LXRydW5rCis2NzA4MyAwMGU3MWNkODkxMjg0YTU3Y2VmMGE5NjU4NTdkMmU2Mzk0Nzk1ZGRjIHJlbGVhc2UyNi1tYWludAorNjcwODQgNDUwNDZmMDcyMjdhZDNhZjI3MWQ1MTdhZjI4YWJlNWIxOTY2OGM0OCByZWxlYXNlMjUtbWFpbnQKKzY3MDg4IGJkMGU5YTljZDI4M2E1NTQwYWVjZjlmMWEwYjg3NWI4NjExOWU1NmQgcHkzaworNjcwODkgMGRlYzU0YWE1M2VlNzVlMzdhZjZhMTgyYjU5YmUwMjEyYTlmNmRhNiBsZWdhY3ktdHJ1bmsKKzY3MDkwIGY4NDljNTliYmZkNzY0ZjAyNTNmNDk1OWNkMTM2YTA4OTRkMWVkMTIgcHkzaworNjcwOTEgMGM4ZmFmNmM4ZWIyOTYwZDRhYjczODAxYmIxYTgzMmQ2NzhkYzNiZiBsZWdhY3ktdHJ1bmsKKzY3MDkyIDVmODAxYWRkMjBmYmJjMzJjNjk5ZTQ1ZjllZjRhMTFiNjhjMTM0NGIgcHkzaworNjcwOTMgZjJiYjEzM2VmNTE3ZDQ1MGQwMmZhNmNmZmJiZjVlZWFhM2ZlZWRjMSBweTNrCis2NzA5NSBmNjdiMmM4ZmE5M2FkMjMyMmRkMjY5ZTdjMWE5ZDQ2YTYzM2ZlN2Y4IHB5M2sKKzY3MDk4IGU2OGU0MmIxN2U1ZTM0MTQ0OTAzZTkzYTRjNTkwNWE0NmJkZDA1ZWIgbGVnYWN5LXRydW5rCis2NzA5OSBhNTI5ZTNkYzY5NWE4YjZlZGRlNDhiYzFkZjg4ZmEwMjEyOTM0M2I4IHJlbGVhc2UyNi1tYWludAorNjcxMDAgYzA4OWViNjRlZTU3NmU1N2JkYWYzMmVjMzBlOGI2ZTMwMjBkOTA0NSBweTNrCis2NzEwMSA5NzJiNDA1NDZkNzk1NTRmM2E4OTcxZjBmMTZlZjI5MzgwMDdmYzI2IGxlZ2FjeS10cnVuaworNjcxMDIgNTBlNzgyMmM5NTg1ZmVmNTZlZDY2NjExZmFjNGI4NTQyYWRlM2U5MyByZWxlYXNlMjYtbWFpbnQKKzY3MTA2IDIzZDljYjc3N2Q5YTgxNmEyNTYyZGU4Yjc3ZmFlYzQ1YzNkNDgxMDUgcHkzaworNjcxMDcgOThmMzE3NTY0NjIwM2VmNGVhMzkwZDQzNDU0YmJkZTdlYWJmMzZmYyBweTNrCis2NzEwOCA0MDBmYmM4MDUyYWRlY2MxNzY5MjY4NWRiMzUzMzhiM2NiOTE1MTlhIHB5M2sKKzY3MTA5IDFiYzNkMWIzOWE0Yjc5NWUyNjY1M2Y3YzY2OWVkMDJhYzYxODNiMmYgcHkzaworNjcxMTAgZTJhNDcyZjNiNzdmNmMxMGVhNDU1MTdmMzkxOGM4ZWMxOTE5MDhmZCBweTNrCis2NzExMSA1YjRjYjhjZDUwNTFmN2EwMTM5NzliNDY0N2FiMWE4YjQ4YzAyZjVkIHB5M2sKKzY3MTEyIGFhNmU2NDk1OTlhZDA5MGRmOTEyZGE2NzE0ZDY4OGRjMzJiY2M3NDcgcHkzaworNjcxMTMgM2E5NDc2OGEyYThiZTVkMDkyODA2ZGM2OGE1YWIxYWVjYjE3MmEwZCBweTNrCis2NzExNCBkNzE5NmZiOTRmMjVmYzhkYTVjOTkzNDgwZDVlMDU1MTQxNDczYmU0IHB5M2sKKzY3MTE1IDZlMGEzNjEwNzhlNTIxNjhhYTVlYzkyYTc3YzM4OWI2NGIyMWNhOTMgcHkzaworNjcxMTcgMWMyM2U3MDAxNTA2NzQwNDRhMDZlYzcwN2MyYWQxZjI5MWNmNjI2NCBsZWdhY3ktdHJ1bmsKKzY3MTE4IDc5YzlhYjY0OThmZGZiOWRmZmEzMzI0NjRmZTQ4NzVhNzQxNGRmYWIgbGVnYWN5LXRydW5rCis2NzExOSA5YTNlOTI0M2M1MTg5YmU2NDU2MDI5M2ZiMzAyNzYzZTU1NWNmMTdlIGxlZ2FjeS10cnVuaworNjcxMjAgMjZmMDFlZWFmNTRlODBlOWNkYmJlYzBiODljOGYzZWFiOGFhODczZiBsZWdhY3ktdHJ1bmsKKzY3MTIxIGYzZjY1MGM3ZDNhYWM2M2NiYmY2NmJmMDVmNTZhZGVlN2Q3MjI4M2UgcmVsZWFzZTI2LW1haW50Cis2NzEyMiBmNzg2N2I3N2RjNTU3ODE4MWQxOTZiMmZmNGRhM2ZiNWYwMmU2NWQ3IHB5M2sKKzY3MTIzIDgzNzBlOWVmN2YwZmRjOTY3ZDk5YTZiOTJiNmI3YTJlMzcxZTBmNmUgbGVnYWN5LXRydW5rCis2NzEyNCA3ZTYzZmViMzBlYTVkZGM2OTA1OTkzMDE5YmVkMDk1YmQzMzNmMDZlIGxlZ2FjeS10cnVuaworNjcxMjUgMjEwYzU4NWY5NWJlZTZmNDU5ZDExMzQ2NGNmYmIyYzg3NjQ4OWY1ZCBsZWdhY3ktdHJ1bmsKKzY3MTI2IDEwNDUzN2E1NDE5NjUwZDM3OThmNWFmZDkwNzdlOGFlODgzYjNjMjkgcmVsZWFzZTI2LW1haW50Cis2NzEyNyAzMjU2MTg3OTI1ZDFlOTFlZjFlMzE4YjE5ZDJiM2VkZWY5ZmVkNzhlIHB5M2sKKzY3MTMyIDE0ZDQ0MTJkMmJmODQ4MTMwZWI5ZDZiNTFhZTAyYWE4ZDkwZTBjZWEgcHkzaworNjcxMzMgODI4MDk0ODU5MmJiMmNkZGQ4YTA1NDU1ODk2OTZkOTBjZmMwOTQ0MyBweTNrCis2NzEzNCA5NzRjYWYxNjdmZjA0NTI5NjJjMGI1MzJhNjBiY2RkYTg1NTc3N2Y2IHB5M2sKKzY3MTM2IDUzNGJlODA2NmMzNmE2YWZjMjYxYjViZmM3Yzc2MjAwZDU0ZGExYjggcHkzaworNjcxMzcgOGZhZTQ2NWEzOTYyN2I1OTAzODU0NjJlNjA5NWViNjNhZjQ1MjQwYSBweTNrCis2NzEzOCBhYzQyZGM5YTAyMDNlZmIzN2U2NWY3NzczN2ZkMTk0NGE5MTgwMzA5IHB5M2sKKzY3MTM5IDkyYmExMmY5MzI4MjM4NGEyMzhjMGZiMDU2OWU3Y2Y0OTFmMDMyZGUgcHkzaworNjcxNDEgZDJmNzMyM2ZiNzA5NjViZTYyMmFmZDRjYzdhNTQyMTg1MDU3OWM0YyBweTNrCis2NzE0MyBjOTgzZmE2OGQ2ZmYyNTVjZmM3YjJhNTkwNTE4OWMzYTU1NzNjM2U1IGxlZ2FjeS10cnVuaworNjcxNDQgNjIzOGI2Y2Y3N2YxMDU3Y2VhYzUxYTRkNjYxN2Y1OWI0MTgwZGZiZCByZWxlYXNlMjYtbWFpbnQKKzY3MTQ1IGVhODdlODgxNDM1OWIzOGU3NzE4YmIwMDhjNTA5OWNlMWE4OGNkN2MgcmVsZWFzZTI2LW1haW50Cis2NzE0NiA4MmNjYzdlNzdlYzU1NzNkNTY4ZDJmNTE1NmQ1ZmQ1YzkwZDNmZjEwIHJlbGVhc2UyNi1tYWludAorNjcxNDcgNDc5ZGFkOWRjOTZjMWU4ZGNmNjA0NmRjYzVjYmU5ZTE3ODI4ZjY0YiByZWxlYXNlMjYtbWFpbnQKKzY3MTQ4IDFmN2Y0MWYyMGFjNTk2NjZkODc3ZGZkYzkyNmJjMmQxNTEzMGIxMGUgcHkzaworNjcxNDkgOWRhNTI5YTNmZDVhZTc0MmQyOGFlZTVlZjNmODE3MTgyODc5OWNiMyBsZWdhY3ktdHJ1bmsKKzY3MTUwIGZhY2NiOThkOTQ3NGUzYzM1MDQwODNmMzQ3YzkxYTA3MmNiODJkNjcgcmVsZWFzZTI2LW1haW50Cis2NzE1MSBhY2I3OGVjZTU2YTllMTAyZmM5ZTY3NjI1YjJlNzRkOWNhYzU1MWNlIHB5M2sKKzY3MTU0IDMxNzM3MTdhODlmMzE3Y2E3MTM4ODI5MTExMjM4MjgyOGQwMjI2ZTAgbGVnYWN5LXRydW5rCis2NzE1NyA1NzE5MzgwNTQ3MjFkYjNmZmYzZTliMDkzYTllNTNiMWE5NzBkNGFhIGxlZ2FjeS10cnVuaworNjcxNTggMDA4YWNiMGNiYmZjMjllZThjOTRlMmQwMGVjNWVjMmQwMDg5YjI4ZSBsZWdhY3ktdHJ1bmsKKzY3MTU5IDU4MjM1YjlkYzNhZTI0Yzg5N2RiMWY3ZGY5NzlhNDg1NTZlMDMyZWUgbGVnYWN5LXRydW5rCis2NzE2MCA2ZjA2NTcxYThhZWZhZmU5NjcwOTI1N2I3ZjE3OWE0MWJmOGJmZjY5IHB5M2sKKzY3MTYxIGQwYWExMGZmMjhjNjU3MDA2NTcwYjM1YzgyOTVkNWE1NDBlYTU4ZmIgcHkzaworNjcxNjIgMjBhNDA4OTQ1MzlhNDhhMWE3YTFmZTZhYjQyYzVlZGI1ZjA3NGRlYyBsZWdhY3ktdHJ1bmsKKzY3MTYzIGQzNGNjYjAzNDFlYTUzYWE4NmJjMzcwZGFkMTY0NGQwZjEwOTYwZWQgbGVnYWN5LXRydW5rCis2NzE2NCBlZjg4MGUyY2M1NjhjY2NmOThiOGM5NDUzMmUwMzZjNTdlMmNiNzZjIHB5M2sKKzY3MTY1IDcxZjUzZDNkMTU1MTIxY2YwM2E4ZWI3NzA4OTBjM2YyMWMwNTkyMjQgcHkzaworNjcxNjYgYmM0Zjc0MmUyYzFkNTM4NDQ1MWNjNWRjZWQ1YjI5NTJmY2UyNTExZCBsZWdhY3ktdHJ1bmsKKzY3MTY3IGYwN2I4MmEzMjFmZTE5MDU1Mzc5ODQ3ZDU1N2U3YjhlNWRhOTk5MzAgcHkzaworNjcxNjggNzY4MzJjMDlkMmZkYzFiMDY5ZWJmMGY2MWEyNmM3NWE0NWZkMjM2ZSBweTNrCis2NzE3MSAyZTA4NTdiMGZjNjc1Nzg0NGE5ZTBkZGI1NjdiYTQ1Y2RmNzA5ZTI2IGxlZ2FjeS10cnVuaworNjcxNzIgY2RkZDkxODBiOGM4ODA2MjI3MDZhZDdiNDg4OWFiZWFkNTVkODU5MSBweTNrCis2NzE3NCAyMTExNTFmZGM5MjQ0NDJjY2MzY2FjZTVlYzBmY2E4YmQ0MWEzMGU3IHB5M2sKKzY3MTc1IDJiYjEyY2EyZmY0NGUxMWI4YzNkY2JhODQyNDY1N2FmOWViMzk2N2MgbGVnYWN5LXRydW5rCis2NzE3NiBjMmE3NWJhNDZmMTRkOWZjMjZkNGFlYzdlNmM5NGU1NTdiZDZjMDQ4IGxlZ2FjeS10cnVuaworNjcxODAgYWU4M2Q0YWEzZTBlZDk3NDNjYzAzZmIzYWM4YTk2NDViYTg2MDZiOCBsZWdhY3ktdHJ1bmsKKzY3MTgxIDJiMzM0MGI1Y2EzODZiNTI0NjdhNWJlZWIzZmFmNTc5MDBjYjkwOWYgcmVsZWFzZTI2LW1haW50Cis2NzE4MiBiMjQ4MWExNTM3NjM0OGZmODFiY2YxY2QwMDUxN2YzOWY0N2JlOWRkIHB5M2sKKzY3MTg0IGFjZjY5ZTA3OWI4NDZiNWMzZDg0ZTQwZTc5YTk0ZWMxYmE4ZmFlMzkgdGxlZS1hc3Qtb3B0aW1pemUKKzY3MTg1IDU0Y2I1MDFmNjIxNWFiZGNjZjllNDExNTUyYTBhZmUzMzY0YmEyNzMgcHkzaworNjcxODcgMjE4YTk4OTgxMTgzZDJhM2M3ZjNkMTU4NzllMGZhMTFjMDkyODQ4OCBweTNrCis2NzE4OCA2M2VhMjJiNThkNTQyNTkyMTk2NmRmMDU5Y2YyMmIzZWZmOGMxOWU0IHB5M2sKKzY3MTg5IDc0NDBhMzBhMmYxMzQwM2E0MjdlMTIwY2M2ZjFmNzg4MGJhZTJkNWQgbGVnYWN5LXRydW5rCis2NzE5MCBmYjcyNTM2NmY5YWM4YmVkNGUzMmQ2NmQ3ZWI5MjNhNTU1YzY4MjhhIHB5M2sKKzY3MTkyIGIwNzEzZmJjNTA2MWJhYTI1MmE0NDBiMjg4NjU3NGU5MmNlMDk4N2MgcHkzaworNjcxOTMgODExOTBjYjFjYWUyOTMwNmEyMjgyZDJlMTZhYzQ1MGQ2NWFkNjJlNCBweTNrCis2NzE5NCBmMmI0M2QyODI1MWRjZGMwMjBiOGZlZjYzODNlZDJjYTljNmQ4NjZjIHB5M2sKKzY3MTk1IDAzZTc0ZGQ5Y2M4M2Y1OTBmODVkOTAyNWEyOTY5MzY2ZDZjNTc3MzcgcmVsZWFzZTI0LW1haW50Cis2NzE5NiA4ZDZlMjQ5OTcyNmE1MjgxM2ExMzAxOWEwNmIyNzg5ODk3MWE1MGM5IHJlbGVhc2UyNC1tYWludAorNjcxOTcgNjFhMzMwNTA0NDNkMjBmMGQyNGFmOTIyNzkxMjgwNTZmOWU5YThiNiByZWxlYXNlMjQtbWFpbnQKKzY3MTk4IDk3ODFlZWYzMTkyYzZhYjJjY2IyNWNmOGJmMTE4NTZlMDllMGZlMjMgcmVsZWFzZTI0LW1haW50Cis2NzE5OSAyMDBjOGFhYjE5MTc2ZmJmNzE4NjBkNDcwMjZiZGJkYTY0YTc4NjEyIHJlbGVhc2UyNC1tYWludAorNjcyMDAgY2U3MjI0Y2Y4N2JhMjBmNDhjMGZlMGM4Zjk4NzMxYTk1ZWM5NjVmYyByZWxlYXNlMjQtbWFpbnQKKzY3MjAxIDIzMjg1ZmYxMGMwNGQ3OTFiNGU3MDFhNGRhNzIxMTU4ZDJkMGQ0ZDQgcHkzaworNjcyMDIgOWExM2U5NjY4ODljYjQ0Yzg3ZjZmODE0OGY2ZDFlMjE3MDBhMTk2MSBweTNrCis2NzIwMyBjZDA4YjAwYWNkNmExY2E1MzliMDI3MDBjMTQ1Njc1ODg5YjkwYzg2IHB5M2sKKzY3MjA0IDk4NjI4ZGM3MzBkYWU3NzBmNDE4MTA0Zjg3YjRiMzFjOWE0MGQ3MGYgcHkzaworNjcyMTYgNDk0YmI5NjcxMzkxNzkwNWVjY2VkNGQ0Mzk2YmQ5YmIxMzQ0NmZjNyByZWxlYXNlMjUtbWFpbnQKKzY3MjE3IDA1OWYxMTZhMjgxOTRmODgzNmJkMTlkOWNiNzdjYzIyNGU2YmQyYTcgcmVsZWFzZTI1LW1haW50Cis2NzIyNCBjMjc3MmNiZmUxODFlMWYzYTliNjJhYmJlNGE3YzMyNzI0NDc0NmI1IGxlZ2FjeS10cnVuaworNjcyMjUgMTY2MDBjYWNlMzE1ZGMyYzFkNzJmMzQwYjg3NDkxYjEwZTA2MzRmNCBsZWdhY3ktdHJ1bmsKKzY3MjI2IDBhZDA3MDc4NDMzYTM4NzljNTAwNjMwNmEyNWVkNzY1OTZhYmJmYzcgbGVnYWN5LXRydW5rCis2NzIyNyA0YzQ2MzIzYWZhYjZmOTljYmU5ZjM5Mjg2ZDhjOTVhOTM2NTcwN2JkIGxlZ2FjeS10cnVuaworNjcyMjggZGJlNGIxNmY4MDRiYTdiZDExMTUzYTkxYTRiNTZlYjA3MTU1MTU5YyByZWxlYXNlMjUtbWFpbnQKKzY3MjI5IDQyMGE1ZTgzZTAyZTdiNGMxNzVlYTc2NjhkNjIzZDQ5ZmFjZTllNDMgcmVsZWFzZTI2LW1haW50Cis2NzIzMiBjNzA3ZGEzNDM1NTc4Y2RiYTUwMjZiNTMwMWNkMzVjYTRhM2U4OGI4IHB5M2sKKzY3MjM0IGU3NGRkNTQxOGEzM2ZiMDAwYjkzMzhhOWEzNWM0ZGQ2ZTAwMmRiMzQgbGVnYWN5LXRydW5rCis2NzIzNSBiNDI4ZThmNmIxNDM0NjIzZjZlMWRmZmU4NDM0NDRhZDQwMjI1MGUxIHJlbGVhc2UyNi1tYWludAorNjcyMzYgN2RlMWIyYWQzODA0ODVkMGU5NzI5OGM2Y2I0OWMyMmNhODJhNDc4ZCByZWxlYXNlMjUtbWFpbnQKKzY3MjM3IGIwZmNiMTdmN2VmYTgxNTI2ZDY4NzAwZDRhNzRkY2FhODllZDk0MWQgcHkzaworNjcyNDEgMWU0NGVhNTE2ZTBlNzBjNWNhNTJkM2MzYjUxOGM1MDI4ZmI2ZjgzZSBweTNrCis2NzI0MiA2MjBhMzRkYzEwZjkwNjYzN2NlYzUwNmNmY2E5MGI4NWQ1ZmYxNWNhIHB5M2sKKzY3MjQzIDc1NTlhMzJjYzMwZWY5NjA1NGUwYWNkZDg5ODIyYjA2OWQ3OTUyNzcgbGVnYWN5LXRydW5rCis2NzI0NCA2NzRlZjRhN2NkNzMwMTc1ZjU4M2I3YzM3MDQ4NmMxMWUwZWZlZDJkIHB5M2sKKzY3MjQ1IDRiMzIxOTlhOGFmZWM1Nzg1ZGQ2YzllYjdiOTYwZDJjMzgwZGU3ZTMgbGVnYWN5LXRydW5rCis2NzI0NiAwODEzNWExZjNmNWQ4ODUwZGM1NWQ4M2UzNmY3OTc5ZGNjYjJkYTY2IGxlZ2FjeS10cnVuaworNjcyNDcgNzNiOWZlMWM1Mzk3M2QzZWZmMzdhNjg4ZGI5MjFhNDA0NTQ2MGQ5OCByZWxlYXNlMjYtbWFpbnQKKzY3MjQ4IDM1NmMzZTE4ZGE1ZTg0OGE5Zjk5MjJiNjcwN2Q3M2RmN2Q2M2RkNGIgcHkzaworNjcyNDkgYTVlNDFhNzk0OTU0NDM3OWFmZTdiMTMyZTUxOWM5YjE4Y2U5YzYxNyBweTNrCis2NzI1MCBmYzQ2YWJmMTcwZmRkOGQ3NWNkOWM2Yjk5NjM0MWIxYmQ1ZjNiMGRlIHJlbGVhc2UyNC1tYWludAorNjcyNTEgOTM2YTZlNjBmM2ViN2EzYmU0N2ZiYWMyNjk1YmE0NmZjMGQ1MGU1MSByZWxlYXNlMjUtbWFpbnQKKzY3MjUyIGYzOWFjZWJjZTYyOGJlMWY5OGM5MTA4YjM2MmE3ZTE2ZjEzNzRjZTkgcmVsZWFzZTI0LW1haW50Cis2NzI1MyBlZDBkYWMyNmIzOTZkYTNmYjc3NjQ0OWEwZTU2ZWNjYzQzZTQ5ODcxIHB5M2sKKzY3MjU2IGUyZDJhN2E2ZTgzMTVkYzgyNjdiMzZjNDhlZjcxYzBkZTQyZWJhNWYgcHkzaworNjcyNjYgZWE2ZWUyODIwNzUzYmNlZmVlNTJkYjc5MDYwMWYwOGU2ZjM5NWNiYiBsZWdhY3ktdHJ1bmsKKzY3MjY3IGQ2ZTY3OTg5ZmY1MTQ5NzM2MmZlM2ZkYjdkZThkYWY5YjBmN2JiMGMgcmVsZWFzZTI2LW1haW50Cis2NzI2OCBjNmQxNmIyYThlZmE0ZDU2MjZhZGFlOGUxNjE0OTE2MmU3OTJlYTBmIHJlbGVhc2UyNS1tYWludAorNjcyNjkgY2U2OTIzNTQ1ZTVlYzNhNjM5MGQ2NjI0YWRkODRhNjA0MGE5N2FmNiBweTNrCis2NzI3MCA2ZDZlMzhjZmYyNDQwZTJmOWZmZDQ2ZTFlZTI1NTAxZDYwOTI4NjAyIHJlbGVhc2UyNC1tYWludAorNjcyNzEgMGMwYmIxMDRlYzRiN2E3ZjZiZGI5OTkyYzU3ODYzYmJlOGQ2YTBmZSBweTNrCis2NzI3NyAyZDliMTczZGMzYTJlYjdhODA2ZTUxYjMzYzljYTk1Y2ZhZTgzN2IyIGxlZ2FjeS10cnVuaworNjcyNzggMTUzZmVkN2M3YjYwYjkwZDVlOTQ2NjM4OTJjOWVmZWZjYzgxMDQxMCBsZWdhY3ktdHJ1bmsKKzY3Mjc5IDcxYTUwZTY3NWZhMWU0NDhhZWY4YjZkZjJlNWI0MzU0MGExZTc5YzAgbGVnYWN5LXRydW5rCis2NzI4MCA3YmIyMDQ2MTJmYzY3NmJiYzdlZmUwZWE2MzRhYTQ5ODU5YWIwNWE2IHJlbGVhc2UyNi1tYWludAorNjcyODEgOGI5YmRhNWI4ZDRhOWQxYmEzYTdhMjliYTNlZmY3YmJkNTA0OGRlYiBweTNrCis2NzI4MiA3MjM4OTUwZDVjNjA0MDA3N2RhNzE1ZDgxZDViNzQxYzYzYzJjNzM4IHJlbGVhc2UyNi1tYWludAorNjcyODMgYmY2YTViZTgyN2I0YzJlNmQwY2E5Y2I2NzA5ZTcwODA1ODJlNDg2YSBsZWdhY3ktdHJ1bmsKKzY3Mjg0IDFmN2I2YzQwYzk5MDg5YTY2NWIxOWYxNzkzNmQzN2JjY2IwOTk4YzIgcmVsZWFzZTI2LW1haW50Cis2NzI4NSBhOTM3NmFkYzI4NGNlNzkwYzEwMzI4YjM2YTcwNGVkNmNhYzk2OTIyIHB5M2sKKzY3Mjg2IDA3MjJkNzFhZmEyZjI4NmVlNDUxZjQyOTEzNzlkMjEwMzkzZDJhOTQgcHkzaworNjcyODcgYTQ0Y2U1NTU2YTdmYzYzMDI3OTM0OTFhYTFhZGZmYWU5MzNiNGVhNiBsZWdhY3ktdHJ1bmsKKzY3Mjg4IGYwNGRmMTBlMjA1MDExZThiY2I0Y2I2MTI1ZWE4ZDQ1NjI5MDgwNzMgcmVsZWFzZTI2LW1haW50Cis2NzI4OSBmZmFlNTgzNzg1MWNiNGFhYjJiYzRjN2QyOGQwNDI5MzAxZGZlMjRkIGxlZ2FjeS10cnVuaworNjcyOTAgMWU3ZDMyMjI3NGM4M2VjNzdjOWY0MzgxNmVlMmQwOGNlMWY1ODU0MSBweTNrCis2NzI5MSA3YjE4Nzk5ZTk1MTk0NTgyOTRiOTdhNGViMTZjZjgxZGU1OGI3MmQ5IGxlZ2FjeS10cnVuaworNjcyOTIgZmRjOTMzOTUxOTY0NmY1Y2IzYWFiOTAwYWFiMzI3ZDg0M2ZhYmUzMSBweTNrCis2NzI5MyBjYWNjMDE4ZmEzNDFhYjVjNTc5NmQ1ZWZmNjJiZmRkOTJhZDAwYjZmIHJlbGVhc2UyNi1tYWludAorNjcyOTQgMDg4ZmRhZGY5NjA5ZDE5M2ViMTBmOGE0MGYwOWI1MGRmOTAxZmY5YyBweTNrCis2NzI5NSBhMjkwYTUxZmY4ZTI3ZDcyYjhkMWYxZmIzMGI5YWVjNzYyNjM5YjJmIGxlZ2FjeS10cnVuaworNjcyOTggMmRhM2ZjZDQ5MzVmMTU0Zjk0MTg2YjM1YzFlOTE4MDIzZTEzYmZlMCBweTNrCis2NzI5OSAyY2E5NjRkNzI0ZDVmZjlhMTY3NDY3NDUxOWIzNDM2ZDM4MDFjMWZiIHB5M2sKKzY3MzAwIDg0MTM2OWYzNzMzNDg2MWU5MDNmZmYzN2FjZTlmMWJjMTdiODE1OWYgcHkzaworNjczMDEgY2I4MDM5ZDgyYWYzZjE0MGY5NmNhMTMyMTljMGE2ZjFjZjJhYjhmYSBsZWdhY3ktdHJ1bmsKKzY3MzAyIDI0NjQ1ODcwNzc5YWI4Y2NhMzdlYWI5NjhhZDQxMTI0NWU3MmMzZWIgbGVnYWN5LXRydW5rCis2NzMwMyBmNDFjYjIwNmQwNjFlZDEzNTg2NzhlNDAwYzE5OGZjNjk5ZjIwZmQxIGxlZ2FjeS10cnVuaworNjczMDQgODhmZjQ1ZTU4ZTk0YjZiYTY1NTJkODhkZjI3NjFjYzY2ZTI0ZWFmNyBweTNrCis2NzMwNSBkYzFkYjQ2ZDBhNDRiOWI5YTNmNjhiNDYwMGRjMDFmN2NhYjUzNzlmIHB5M2sKKzY3MzA2IDVmZmQ2N2RmOGM5ZjA4MTk4NjBjYTBiNWYyMzhlZmQ1ZTY5MGRiNDYgcHkzaworNjczMDcgZWFkZTQ3ZGZjMWU0NzA0Nzg2NWQ1Y2FlMWM0YjVmODg0Mzc3MWQ3MCBsZWdhY3ktdHJ1bmsKKzY3MzA4IGY5NWZmOTZmZDc5MmYyZjFkZTMxZThiNDlkNzcxODY1YzgwN2E4NjYgcHkzaworNjczMDkgYmFjMDQwYjVlZjIyYTQyNDQ1ZTY0OGQ4ZTk2NjE0Y2RmMmFlMzYwMiBweTNrCis2NzMxMCA1NGU1ZDg1M2IwZGVjN2U3NGVmMzEyNjgzYWZjMWYwNTA3NTY0ZjZiIHB5M2sKKzY3MzExIDE1OWExMWIxZDI0NDUwYTRhNTFhNDFlODc4OTM2NDY5MjY1NWQyMzcgcHkzaworNjczMTIgZTgzYTYwYzY5ZDUzZjU1NTFhMzA2ZTc3YTZkMzhlOWIxMTQ4NTQ5NiBweTNrCis2NzMxMyAzNGZiNjY2ZmY1MmY0MTM0ZjMyZWVhNjg1OTVhZTZkNmJjMzhiMDBjIHB5M2sKKzY3MzE0IDdhYWEzYWZmZWNjMTUzMmUxMTA0YmMxN2YxZDg1OWI5NTE1NzNhYmIgcHkzaworNjczMTYgMzRiYzIyNzlkYzU2ZGZkYWIxZGEzMjc2YTUzYzI2MWY5OGE1YTIwNCBweTNrCis2NzMxNyBlZGE0NjdkNjViNjVlZmIyMTFjM2U0NDc1MzhjMTE4MjYxYjFlNTk2IHB5M2sKKzY3MzE4IDIzMjdkZDY4NDIxY2NmZmMwMDUzOGI3ZGY3ZjA3ZDg3ZGM3NmY4ODIgbGVnYWN5LXRydW5rCis2NzMxOSAzMjUwZmI3MWE5ZTA4YzA2YTg2ZWFiZjJiMTUwYWFiOWQzYmRhNTI5IHJlbGVhc2UyNi1tYWludAorNjczMjAgYjY0ZDA1M2FmZDg0ZGE5MTQwMjkzY2E4NTY3OWQwMWM4MjZkOGFjNCBsZWdhY3ktdHJ1bmsKKzY3MzIxIDBiY2FmYTY0ZWNjYjQ0MzU3ZGFjYWIzNTdlNTU0YWFjN2E5Yjc4ZDAgcmVsZWFzZTI2LW1haW50Cis2NzMyMiBmNDAzZDk0MTU3YjIxMGRjZDkzOGQyYzYzM2VhNDRjMTFkZjZiNjA2IHB5M2sKKzY3MzIzIDc4NDZmZTQ5NTIxMjkwMGQ2MTM0YTg3ZWE0NGJiOGMxZDFmZDYxN2MgcHkzaworNjczMjQgMGViNWFkZDMxNjBhMjQ5MDkwMTM3ZWNiMjFjYWNjZDhhZjEzMGFjMSBweTNrCis2NzMyNSA2YWVmMjhlYmJkNmMxMTc0Yjg2ZmQ4NTBhN2UyZDYyYjc3YzY5ZmQ5IHB5M2sKKzY3MzI2IGRjNGFjZjc1MzI5NjJkM2M5Yjg5ZWM0MDllZWRmOWMyMjY3ZjYzZjkgbGVnYWN5LXRydW5rCis2NzMyNyBiMTgwYjI3MWE3YjJiNDRmZDc2ZjQyZGMwZWUxYTY0ZWRmYTFmYjUwIHB5M2sKKzY3MzI4IDMxZDg4ZmZmYjk4YTEwNGE0ODM0OTgyMzYzOWJjMWMzYmYyODMxMmYgcHkzaworNjczMjkgOGYwYTE3NWYwNGJlYWFkNWQ0MDk5MDI2Njc1M2ZkNjM5Y2YwNzA1NSBweTNrCis2NzMzMCAzZjJkZGIzZGQxNDdhNWIzMjcyNjY2MDlmOGE4YTJjODQ0ZmQwOGRkIGxlZ2FjeS10cnVuaworNjczMzEgMmQ4YzFlYTdmOGI3ZWM0NWQ4YjkyODEyMmNiMTBhMzA4MWUwMWFkZSBweTNrCis2NzMzMiA1ZTIwMDdmYTNjZjgyYzZjNGM0ZDBkNDk0ZmEyYjIyNjNmOWQwYjMyIGxlZ2FjeS10cnVuaworNjczMzMgYTBmNGQ0NWZkNDRjZjZmMTg3OWM5NTIyMTg4YjkyNTg3YTJkMzg0MSBweTNrCis2NzMzNCBhNDIyMGM5MmY3Y2NmNDMzMDE2NmNlNmFlMDUzN2VjMDA4MzIwMTk3IHB5M2sKKzY3MzM1IDJkOTcwNjkwMTI0MTcxNzVhMzA4MTViNTFlZjAwN2M3NzlmYjY4ZGIgcHkzaworNjczMzYgNzg5YTNhYjBhZTllYTdmOTc5NGFkODEwZTc4NDE1MzM1MzkyZjRmNCBsZWdhY3ktdHJ1bmsKKzY3MzM3IGMwMDlmMDBhNDUwZmRhNzc0YjE5ODJiNWQyNzZkMTAzMzVkNjIzOTEgcHkzaworNjczMzggYjZhODI0NTk5MjBjZWYwYTIwMjkyN2MzMTVkNWUyZWNjNmE2NTllNiBweTNrCis2NzM0MCAxMzMyMWNiMmQ3NTIwMzEyZjhkNTIyMzgxZTA5N2E3MGExMjA4MjY5IHB5M2sKKzY3MzQxIDAzMGExNTM2OWVhYzc3Y2IzYmMyNjhjOGJhZTFhZDNjMGU2Mzc2NmQgcHkzaworNjczNDIgNWY3MDcwNmE4ZTY3MThmMWMyMjJlMGIyNGQxMDk3MmYzOWI2MzIyYiBsZWdhY3ktdHJ1bmsKKzY3MzQzIDVmZWNkMWU5NTMyNDk3OTBkM2JjOTYzMmU2OGYwMTJmNzI2NTg5ZTEgbGVnYWN5LXRydW5rCis2NzM0NCA1ZDliZTY1ZTc4OTFmNzIwNDUzOWQ0NTA2NjZhNTNiY2I1NjYzZDBhIHJlbGVhc2UyNi1tYWludAorNjczNDUgNjMwYzE3NGI0NjVlOTgxNjljNDI4ZTlmZTM1OWU2NTg3YjcwNTRlNCBweTNrCis2NzM0NiA3YzJiMWI1MmYxMzQyOGY5NTYxY2QxZTE1NjYxMDZhZGFmZGFmYmQ3IHB5M2sKKzY3MzQ3IDkzZDJkZDY0MWI3MDE5NDM0YzljYjFmMmMxMDhlNGFiY2I3OWE0YTAgcHkzaworNjczNDggOGEzZWFjN2Y5Y2Q2NDk3ZWIzNWRlNzdiMzRmNjk0YmExNjBkNWZlNiBsZWdhY3ktdHJ1bmsKKzY3MzQ5IDUzYTEyN2FlYTU2ZTkzNTk3MzE2ZWRkYWNmNzZmYTgzM2M1ZTMxMzMgbGVnYWN5LXRydW5rCis2NzM1MCBjOWQwZDRkYTlhYzk3ZGM2OTdlY2Q1ZjAzZmZiODIzMWNlZjI2Y2QwIHB5M2sKKzY3MzUxIDdiYmNhMjdkMzU1OWUyN2VkODZkNTgwZWI4NTlhNWQwNGYyZmNmNzcgcmVsZWFzZTI2LW1haW50Cis2NzM1MiA3NWU5OTIwMzUxZjI1ZTEzZDFhMjU2ODAyNmM3ZTVkOTYzZTIxMTJmIHJlbGVhc2UyNi1tYWludAorNjczNTMgZTcwNGVlZGQ3N2RjZGU3YTMzMTRjNWRmNWViZmJjYThmZGNiMjQ5ZiBsZWdhY3ktdHJ1bmsKKzY3MzU0IGQ3MzAzYWJjZjA2OTI4MmJmMjRlZWY3NDE3YzQyNzliMzYwZWYyODYgcHkzaworNjczNTUgY2E2NzNiYmRlMWEzZDgxYTViNDRhMmQwZjk3ZTA1YzNjZWMxZWM0YyBsZWdhY3ktdHJ1bmsKKzY3MzU5IDI0MTY1MDNhMzA3OGI1ZGYxY2ZlODE2MDJlYTcwODVhMTY1MTZlMTkgbGVnYWN5LXRydW5rCis2NzM2MSBmMWJiMjQxYmFkMjRiYmYwNjI2Mjg3ODZmNTJhZGRhZGIzNjcyN2YyIHB5M2sKKzY3MzYyIDRlYWIzNDAxNjBlMGEyMmNmZmFmMzkxMjU0YmRlYWFiOGMyNzg1OWQgbGVnYWN5LXRydW5rCis2NzM2MyAxZTkxOWQzNGM5ODI1MTYxYjg0OTEwMmI0NzNkOGMwMDc2ZWMyNDQwIHJlbGVhc2UyNi1tYWludAorNjczNjQgOWZlYWE2YTFiZjJjMjJiYWUzMWE3NGVmODZmNjJkMzE2OGRhNGVjMSBsZWdhY3ktdHJ1bmsKKzY3MzY1IDc1MWE4ZWZjNWQ0NjYyYWE5MmY3MzMxODI5NjEzNmQ0MzdkYTkwN2EgbGVnYWN5LXRydW5rCis2NzM2NiA5OTU5OGE2MWNjMzVmZDdhZjIyZTgyNDE1ZTlkYWU1ZjRmYjg2N2U2IHJlbGVhc2UyNi1tYWludAorNjczNjcgYzNmNDlhZGFjMmZlNjdlMTZiMGNmZTZmNDE5MmFlMDA0ZjM5ZmFiMyBsZWdhY3ktdHJ1bmsKKzY3MzY4IDA2ZmI2NDNmNjU1M2M0ZjRiMzZmMzhkOGYzNzMxMWQ0ODU2ZWQ4Y2MgbGVnYWN5LXRydW5rCis2NzM2OSBlNDk3NjA5MDlkMmJhNTA2YmQ5MzBiNzQwNjE5Nzc3YWVkNzlhYzY5IHB5M2sKKzY3MzcwIGI3MWNjMDAzZWY5ZjhhNTE1MGJlODZiOGNjM2I4NmQzNjdkMWI3ZjkgbGVnYWN5LXRydW5rCis2NzM3MiBkNjY2ODZlYjExZjYzMWE3ZjRkNDUxNmUyZGI4NTQ0MjUxMmVmMWU2IHB5M2sKKzY3MzczIGZmYWQ2YzBmMjUyZWIyMDgwYjJhZjY2MTQxYTgwNDg1MWQxODMwMWMgbGVnYWN5LXRydW5rCis2NzM3NCA5NmYzOGUzNTcxOTRlYzY4N2ZhNDRmMGMyZTg1MTA2MDFkOWRkMzAxIHJlbGVhc2UyNi1tYWludAorNjczNzUgNDBiNzI3N2U2NjVmMDE0NTJlOWJjZTk2OTY3NmM0MDcyZDRlZDY4ZSBweTNrCis2NzM3NiAwZDEwZDVhYjI4NDQwYTk0YjQxOGQ1MjM3OTBlY2Y3YTFkZTNkMDA4IGxlZ2FjeS10cnVuaworNjczNzcgZjM3YmY1NWRiNDE2Y2EzY2MwZGU4MTM5ZDk2YmRlMmY4YzE3NDkxNCBweTNrCis2NzM3OCA2YzA4NzFmMGM3YTY5ZDU0MmZmNTExMDJkZDE5MWNlZjVjYzc2MjVhIHB5M2sKKzY3MzgwIGRmZWRhMGQzZDYzNmQ0MDE3M2E3MWNkYTNjMDIzMzA1NTg0NjAwNjcgcHkzaworNjczODEgNGNmMDNlMTQyMDBjODlkMDU0ZDI4NWJjZTk1OGZlYWYyNjg1NWExMyBweTNrCis2NzM4MiBlZmI0OWRmMGQ4OTlkZjlkMmEyOWY2NjA1MWNhYmM3Y2U1MDZjODM5IHB5M2sKKzY3MzgzIDM1MjhiNWMxNjkzODc5OWI4OTVjMzM3YjIzNmRhODdiZTg1OGJjZjIgcHkzaworNjczODUgMzBkMDFhNWY1MTdlZDdiZTUxMjkzNzdjMjJlNjM5ZWY4ZTBmZTk5ZCBweTNrCis2NzM4OCAyZDNmMWQwYzJhMTBlY2Q1N2FhODgzODEzZTU3ZTI0Mzk0MWMzYmI5IHJlbGVhc2UyNS1tYWludAorNjczOTEgZDM3YjRmZTUxMzI4NzU0MWRlNWI4OTc1Y2E4OTc2N2E5NDE4NWU5ZiBweTNrCis2NzM5MyA5ZmQ5Y2Q4NTI2MzFhZDZmMzEzNzc3M2FjMTI3YTY2OWZiMmQ1ZDI5IHB5M2sKKzY3Mzk0IDY4ZjNiZWI3ZWVhZGYxYjAwMTk1OTFmNDIxZTg0ZTNkMzFmNzhlYTcgcHkzaworNjczOTUgNzM4OTVlYWRhOGJkMWIyMjMyNmY3YTkyMDc1M2U5NGRiNmMwMTBjNyBweTNrCis2NzM5NiBhMGNiZTQwZGFjOGYzZjQ3NWNiN2NlYTkwZjY5NDQyMzhhMzI3Mzk1IGxlZ2FjeS10cnVuaworNjczOTcgNTY4NGNlOTZlNjM5ZjdlZTA5OGYzM2MwZWQ0ZmZlZjQ2YmRjMmRhOSByZWxlYXNlMjYtbWFpbnQKKzY3Mzk4IDg1YjFkZTg1NWExM2ZhNGFmZjIwNTYyYWQ4NjAxOTk1YWNhNjk0MjEgbGVnYWN5LXRydW5rCis2NzQwMSBkZWIzMDY2OWMzNTVjMjhhMWE1YjhhYTU2NjdiZTc4ODliODI0YTNlIHB5M2sKKzY3NDAyIDc5N2JkMzMzZWY2YmEyMmU5ZjNhZThmMDllZmNiMWU4MzIxNjk0ZDggcHkzaworNjc0MDYgYTNhNWY2NDA0YWQ1YmEzY2UxM2NmNmYzZGNmYTUyNDk0NGQ5NDg2OSBweTNrCis2NzQwNyA1Y2JjM2RkNDQ5MTYxMDg1M2QzMTg5MTkzYzI2OTM2NWI1NzU5YTU1IGxlZ2FjeS10cnVuaworNjc0MDggMGE5OTRiMzJkZTlmZTUxNjIwYjQ3MWFkNDdmZDg2NTdiYmFjNGYxZiByZWxlYXNlMjYtbWFpbnQKKzY3NDA5IGY4MDQ0YjhmZjZlZWViYmFmYmNlZDA1Nzk1ODk4ZjU1NjFjMTFhYmUgcHkzaworNjc0MTAgOGIxNGZjNWU1ZjNmNWQzOWMzNDcyZmQxYjJhOWI0ODhhMzZjMmY5ZiBweTNrCis2NzQxMSAzOTdmYmQ2YzM0NzFhMzEwMDJjZTEwMjIwOGExYTc4NmMzMGQ0OWQ5IGxlZ2FjeS10cnVuaworNjc0MTIgYzU0NjQ5N2I0MjFhMWEyYzU2MzRlMTE1ZmY4NmZiZDhlYmU1MzAwNyByZWxlYXNlMjYtbWFpbnQKKzY3NDEzIGI1OGE0MzUwMDJjMTExZDkzODFlODQ4ZmIyYmQwNDE4ZjVmNmJkYzMgcmVsZWFzZTI2LW1haW50Cis2NzQxNCBmY2FlMTRiY2VhNzMyMzc4NWJlYzMxMDc2MGIwMzRiMWM5ZmY4NzUwIGxlZ2FjeS10cnVuaworNjc0MTUgMzgxYzYyODE5ZjJlYzgyOTc4YWNjOTEyYjAzNTY5MDc4NmY2MWI3ZCByZWxlYXNlMjYtbWFpbnQKKzY3NDE2IGM1MTI2MmFkNTYwM2RlOTcyYWRkNzlkNWJlYjkzNWUxYTAxNDU5OTQgcHkzaworNjc0MTcgMzgwM2I2YzRmZjhmMzIwMTA1MDY3ZDI1NGY4OTM4ZjA5MzQ5N2IyMCBweTNrCis2NzQxOCAwNmU2YzM5YWQ4MDI0Zjg3ZjlhOGE2NDQyYmY4ZDYzMmMzM2RkMGQ1IHB5M2sKKzY3NDE5IGNjOWVmYjlmOGU1N2Q4NGQwNzA5ZWI1NDE5MzhjODNhZjBjNDFjNjMgbGVnYWN5LXRydW5rCis2NzQyMCBiZjJkMTkyOTNkYjc3Y2EzYTBhYWEwZmMyYzExN2E1YjBkN2UyNjdiIHJlbGVhc2UyNi1tYWludAorNjc0MjEgYTkwMzUyZTU5Y2U2MWQzMmY0MzJkNGU5Yzg0NDgzMmM0NmYzNWY5NCBweTNrCis2NzQyMiAxOGFhNzI4ZTk1MmQ1MTFmOTJiMTE2N2E5NzllZDIyMzAwZTRhNDA1IHB5M2sKKzY3NDIzIDBiM2I0NGI4Yzc4MjYyNTdhMjc4MWZiYjk1NjhlZGJkYmU4ZjczYzUgbGVnYWN5LXRydW5rCis2NzQyNCA0NmI1Y2YzY2FkZTRhZjc1YzY1ZWNmZTEyMWMwN2U0ZWI3ZDhhODczIGxlZ2FjeS10cnVuaworNjc0MjUgMGZjZmUxOGZmOGY2ZDU3MDY4YWE0YjczZWQ4OWJiZTFlMTcxOWI4OCBweTNrCis2NzQyOCBjOGFlZDlhMzZlY2I3Zjk4YzQ4MDc4OWQzOGYzNzVlM2FkZGU0YjAwIGxlZ2FjeS10cnVuaworNjc0MjkgOGQzMjlkMmEzNjRhYjUyNWNiOWNmMmM5MTEyMGM2MDE0MjI5NjBkOSBweTNrCis2NzQzMCAwNjA3Yzk3YTgxMjRiNGUzODUxZjhmNGE0OTEyMTY0ZDc3MjYyY2M0IHJlbGVhc2UyNi1tYWludAorNjc0MzIgMjNiNDM0OGZkZjUyZmY2ZWNlMDU5ZWM3ZDFiMGQwZjU4Y2RkYjU4MyBsZWdhY3ktdHJ1bmsKKzY3NDM2IDU2MGIyZjUyOTUyYzg3YzRjODJkN2MxOTJmYzJiZjM1ODM4NjIyMmIgcHkzaworNjc0NDAgMDVjMTJmNmQxNDA0MDljMTA5OTgxZDc3ZDk4ZGU4ODJkZWQ1ZGNjMCBsZWdhY3ktdHJ1bmsKKzY3NDQxIGNjMjk0ZmM5MGY2YzRkY2VkOTE5YmRhNGRjYmUyMjY0YjU3MzgxZGQgbGVnYWN5LXRydW5rCis2NzQ0MiBlZjBjNWNhNDU0NDEyMzQ0Yzk2YTZjMjAyOGIwNzViMmMzZTUwMDEyIGxlZ2FjeS10cnVuaworNjc0NDMgODAzN2ZhN2FjZTllZWMzYzkwYjgyOGMxNTA2ZGQxZTg1OGRhNmViNCBweTNrCis2NzQ0NCBlMjlmNjZmZGI0MmMyMGY5YTdlM2QzMjY0NjFlNjhhM2JkNTI5OTVhIGxlZ2FjeS10cnVuaworNjc0NDUgZjlhYTg3ZWIzMzRjMWVkYzQ2M2E5ZWNiN2ExNTMxMjNhOGI3NzBkOCBsZWdhY3ktdHJ1bmsKKzY3NDQ2IDM1NjlmN2IwOTAyNTZlMGFhMGVjZjdlM2ExNDg5OTY3NGQxOGEyOWEgcHkzaworNjc0NDcgMjc3YThmMjk0NGI0MjM1YWVlY2Q0ZDcxNWZjMzI0YjlhMDgwOWFjOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjc0NDggYmVmM2M4NWE5MDhkNGNkZGQwYjFhZmQ2MTA2NTU2YjgyMjY4NWI3NyBweTNrCis2NzQ0OSBhMWRlOTFhZDkyODgyZGRiN2IyOWRlNGJjOGViM2RhOWZkYTRlY2RlIGxlZ2FjeS10cnVuaworNjc0NTAgN2ZkZjkzNmIzMGJmNmYyY2FkY2JlM2M1ZjQyMTU4MjI2ZDMxMjJlOSByZWxlYXNlMjYtbWFpbnQKKzY3NDUxIDNiZjE4YmU3Y2U1YTViNDg0MjdhZTY0ZTFiOThlOTQ0MjgyZDI0MWMgcHkzaworNjc0NTIgZjFlYmJjMTg2YzExMjc2M2RlZWExNjEyN2RmN2NlZDcwOTkyNGU5ZSByZWxlYXNlMjUtbWFpbnQKKzY3NDUzIDk0MmI0YTJjMmMxM2JlOWFmNTk2NjlmODhmN2JhNDVlZjQxNDAxZmQgcmVsZWFzZTI0LW1haW50Cis2NzQ1NCAzOWE1NmQzNTUzNzZhYWZmNDkyZTVmMTlmZjYzNWNmNDE1NjVjNzBhIGxlZ2FjeS10cnVuaworNjc0NTUgMzcxMmQxZjZiZmQ1NWI1YTU5OThiYzA0OWVlNjBkMzIyNzBiN2JhOCBsZWdhY3ktdHJ1bmsKKzY3NDU2IGI5NjJkMDRiYjdmMDMzNGFlZDFkZjhhNmNjZTFjYjZjNGI3NGU5ZmQgcmVsZWFzZTI2LW1haW50Cis2NzQ1NyA3ZWQzOGFhMTBkZTZhNTJlNjg2NDY4MWIzMzRlZGEzM2I3MDRmNmM5IGxlZ2FjeS10cnVuaworNjc0NTggMTg5ZGVmMDYyNTNjNmE3YTk3Mjg1YmQ0N2U5NTc0N2I1YTc0YWQyZCBsZWdhY3ktdHJ1bmsKKzY3NDU5IDAxZjZlYTdmN2E3NTgxZjRhNDk0ZmM5ZjZhZTg4ZGE4NDUyYjAzZmMgcmVsZWFzZTI2LW1haW50Cis2NzQ2MCA3NWE4Y2FhMjQxODY1OTU5ZTViNjVmZjM3ZTJkNWE5NmYzOTFlYTI4IHB5M2sKKzY3NDYxIGVkOGFkZmVmMjZjNjViM2E4ODZjODNiMGJkMzRhNjI2Nzg4ODFmNjcgcHkzaworNjc0NjIgNmU4OTEzNTNjZTk2NThlYmViZDNmNjdlNzkwYzI5YWM0MzJmYWIwZiBweTNrCis2NzQ2MyA2ODE3MzNiNDlmYTIzOThhZjhmYjgxZjk4Y2IzZTE2MWViNmI1NGMxIGxlZ2FjeS10cnVuaworNjc0NjQgNjBlNzc1ZWFhYWVlZThhOGVlYzZmMWM1YzY5NzIzMWNiZTBmOTEyYiBweTNrCis2NzQ2NSAzZTU5OTVmNmFiOGY2YTZjNDRlZThlYjRiYTg3MjkwMTE2NjY5ZGYzIHB5M2sKKzY3NDY2IGFiMTJkNzE2YTdhODFlZDRhMDRiYTY3MDMwMzkzYzc3Mzc0MDBjNWIgcmVsZWFzZTI2LW1haW50Cis2NzQ2NyA3ZjhmNzFkYzg2Yzc0MDk1YzZhOTFhNDFlM2Y3NjIzZjNmMThlODc3IGxlZ2FjeS10cnVuaworNjc0NjggMDczMmQxM2VkMDY3OGFkODU2NWI4ZTkwNDAwMjk0MmRiODAzNDFiOCBweTNrCis2NzQ2OSAwZjc3MjVlMTliYzNiOTNmMzI4MTg2NDI1MGZiZjU2MjgwODEwMTkwIHB5M2sKKzY3NDcwIDQ0NjFmMThmMjY0M2M4ZmM5OWYxMDJiNDFlMTc5MDcxOGQ5NTExOGUgcHkzaworNjc0NzEgYjFkMmFmNTJkODAxNTM0YThiZDgyYmU5NzQ0YmRkYWUzNDRmZGZmZCBweTNrCis2NzQ3MiBlZDg0NzZkN2Y2NGE1ZDYxNjUxODEwNjQyZDdhNGIzNDRlY2EzNmNkIHB5M2sKKzY3NDczIDA5YzJkMTVlNGQxZGI2MmM5OWZhMTM1NTFmZDU3ZTcwYmM0MTdmZmEgcmVsZWFzZTI2LW1haW50Cis2NzQ3NCBjMTgyZTNiOWU5ZmMzYWJkZmQ1MGRhNWI2ZmM1YmE3ZjdkZGNkNjhhIHB5M2sKKzY3NDc1IDQwZWM2ZDI4OTU1MmU3ZjMzOWNkZjA3N2Y1OTczMzVlNzI3MGQ3MDYgcHkzaworNjc0NzYgNmExMjFmMDRiYzdkZjZhMjQ5ZmE5OTkzNjAzOGIxZTdiZjBhNTEyZiBweTNrCis2NzQ3NyBkMTcyZGQ4ZDllMDllYmQ4OGY1MTQ4MWVjN2Q4NTkwM2FiNzc5ZWY3IHB5M2sKKzY3NDc4IDg2ZWUyZTBkNGQ0MTU0OTU1MDcwM2ZiNGM3ZjAyYWI2N2U0MTFlNTMgcHkzaworNjc0NzkgNzhiMGM4ZGUzYTk4ODM4MjEzMzgxZTA2NTQ2YjA0Y2ExNDljMzg4NCBweTNrCis2NzQ4MCA5YzgxYzNiNzExMTk1MmYxNGVhMjhlYjMyMTA2MWUyYTQyNGQ5OWY1IHB5M2sKKzY3NDgxIGNkZGEyMDkzZjZmNTMwOGI2MmJkMjk2MzQ5NWQxMmI2OTkxNTM1MjQgcHkzaworNjc0ODIgY2M1YTk1ZjBmNTZhNTM0ZjVmYjQzMGU5MDgwYjcyN2ZkNzM0MjVkNSBweTNrCis2NzQ4MyBjODI2ZTQ2MmZhNTFmNTNmMjE1ZGZiZjY2MTVhMmVlYjdkYjgwYTNmIHJlbGVhc2UyNi1tYWludAorNjc0ODQgNWQ0ZGZlZWRkNTEyYjMxOTQ0MzA4ZGNjNjlmZmY0MTQxMjMwMDVlMSBsZWdhY3ktdHJ1bmsKKzY3NDg1IDA0NTI2YTIyMmNhZjI0M2IzNTRhNTUwZDEzZDEwOGY2OThlNTM4OTkgcHkzaworNjc0ODcgY2Y0N2Y3YzdkZGIzMjZlMDY4YTk0NjhiYzRhNzE4N2EwNmNmYjg1NyBweTNrCis2NzQ4OCBkMWRlMzAyZTZlZmM1Mzg2MTY4MTE2NzIxZjVlY2IzZDFlY2RhMjk4IHB5M2sKKzY3NDg5IDgxY2E3YmI4ODA0ZjAyYzU4Y2I5OWUzYzYxOTIxNDNjMzlhYTA4ZmMgcHkzaworNjc0OTAgMTM3YjUwZWU5NmQ1YzFhZDE4MGFlNjQwNjk3YTljZDRhM2Q0YmFmYiBweTNrCis2NzQ5MSA1NGZlYWMzZDExNjkwNjQ5NzQzNmM1N2M3Yjg4NzgyMzQ1NjY3ZTk4IHB5M2sKKzY3NDkyIGY0NDdhMWRlMmZhZTliMDMzMmY5NzAzNTU0ZDJkYjMwNDczMjk0MmUgcHkzaworNjc0OTMgODQ1MzA1YTNkYTM2M2ViYmQ4ZmZjMzNhMjI0OTdjZWExNmU2YTMxZiBweTNrCis2NzQ5NCAzMzQ0ODA0ZjMyN2Q2ZTViNWUxZTJlZmEzZWUwNzk2MWE4YTA2YjZiIGxlZ2FjeS10cnVuaworNjc0OTUgNmE0Y2M2YmExYzE2YWVjYmIyZTlmZWUxM2ZkMWY4YTNhODk0MWZjMiBweTNrCis2NzQ5NiBhM2QwMjk5YjRiMWRhZmJhYTg5Zjc1OGZjZDM0YzU0ODVlYjQ3ZTVmIHB5M2sKKzY3NDk3IGM2YTRhMmNjNTYxMjZhMzk3NDVlZTdkZjgwNzJhZTA5MTI3ZjRhNGYgcHkzaworNjc0OTggNTg4YTk1ZWY3OTcxNzZhNTU3OGNjMzQxMzI5ZGFiZDdhYjQxY2U0ZSBsZWdhY3ktdHJ1bmsKKzY3NDk5IDEwN2Q0NTMxNzliZTJlZGU3ZTc4ZjdhYTg2NzhjMjJjNjIwNWJkNDMgcmVsZWFzZTMwLW1haW50Cis2NzUwMCA1MjM1ZGNkYTkwNzZmMjVhOWNkY2M3MjZhOWIzYWMzOTQ3OTFhYmRiIHB5M2sKKzY3NTAxIDJhNWVjMDYwYmI5OTgxOWI2ZDVkNWU1MWI2MGQ4ZGJhOTdiNGE2MWMgcmVsZWFzZTMwLW1haW50Cis2NzUwMiA1OWFkZmU0MzY5OGRjODQ4ZDgzMTE1MjdjMGRlMzQ0NGJlNmZkYTkwIHJlbGVhc2UzMC1tYWludAorNjc1MDMgYTY1MzIxNDYwMjcwN2JkZTBlNTEwNjRkN2M3Nzg5Y2UyOTVlNDQzMiByZWxlYXNlMzAtbWFpbnQKKzY3NTA0IDk4MDdiNzlhMTYyZTZmZmIwYmE0MmUyYzY5NTg0ODQ3YTZhN2UzYzIgcmVsZWFzZTMwLW1haW50Cis2NzUwNSA1ODljODhiMjBiNWI3ZTAwNzc5MTAxYzE3ZDE0OTFhMzNhOGZiOWM1IHJlbGVhc2UzMC1tYWludAorNjc1MDYgNjhhNmUzYWM0MWMxOGM4YTE5MGFkYTNhYTE3NjQ0YjYxMGRlMmM1NyByZWxlYXNlMzAtbWFpbnQKKzY3NTA3IDlhMmIwNjM4NzBhMzA5MWYyMzAxOWY3YmNjYzlkNDVhNjQxM2RiNDYgcHkzaworNjc1MDggNzViOGVlMDYyYjBkNGZjOTE3YjEzNzM5M2EyODlhMGY1NDhjMWNkNiBweTNrCis2NzUxMSA4NzhkNDA0NjhjNGU3ZDJkMTI5M2ZhYjZhNjk2NWFmMjFiMTRmOTI5IGxlZ2FjeS10cnVuaworNjc1MTIgZTA3YTMyMmVmNTkzNGNlMzViNDk2OTllMzkzOGUyMWZkMzEyNjMxMyByZWxlYXNlMzAtbWFpbnQKKzY3NTE1IGNhYmYzMDNlNzg3YWE1Y2Q3MjA5YjQwZTNiMmNhYmEzZWU3NWM1YTUgcmVsZWFzZTI2LW1haW50Cis2NzUxNiBjOWRhODVjMTk3MTliOTU0NmRhN2JmNmU2M2NhZjFjMDVjZDY0OTFlIHJlbGVhc2UyNi1tYWludAorNjc1MTcgNTMxNDU3Y2ZhM2UyNDNlMWZkMzA4NTQ5NTZlNTU2NGE1ODE1NTZiYiBweTNrCis2NzUxOCA3MWFjYTg1M2IyNDQyMTA2NmZkNDk0NzAzN2EwYmYzNTE4MGNhM2FmIHJlbGVhc2UzMC1tYWludAorNjc1MTkgZTc5M2ZjM2M4YWJlOTVlMzE5OGY4NDkxYzU0OWNiZWJmZTUxNGVjOSBweTNrCis2NzUyMSBmM2M0ODVlMmI0NTEzNjY1NzgzZGI5MTliOTk0YjE4ZWEzYzBiZDNkIGxlZ2FjeS10cnVuaworNjc1MjIgNDhmMjlkODk0YjNjYzdhZmJhZWI0YWY1MTEzMDgxYTc2NGJlMjMyOSBweTNrCis2NzUyMyA0MjU2MDM3NGFiMjUxYWJhZDM0NzNlM2QwZDI4NTIxODNlMzc3MzQ4IHB5M2sKKzY3NTI0IDA3ZWZjZTEwN2FhZWYyZTlkNGVjYjkxZWQyMjA2YzE4Njk0OGI1OGMgcmVsZWFzZTMwLW1haW50Cis2NzUyNSA4NTZmYzNlYTJkZGI4NzM5N2JjYzRhMzg4NmZjMjAxMzhjODU5ZjAzIHB5M2sKKzY3NTI2IDc1MjA3YTBhOWUxNTg0NTBlMDU5OTc1YjAxMmJiN2ZkMmY2MzFiMWYgcHkzaworNjc1MjcgNDU4ZDdiYzEyOTUwOTE5NzlhZGI2ODI4NGVhMTFhZjYxNTg1OWUxYiBweTNrCis2NzUyOCBlOGFiMjc1ODJiMTg0M2YxODJhMDQ3YTQ1NmUyZTFjOTljZjY0M2MxIGxlZ2FjeS10cnVuaworNjc1MjkgM2U2NTAwMzJhNWQxY2JiMTIyMTQ0MmI5Y2ZkMTJhNzI4ZDQ5YzBhYyBweTNrCis2NzUzMCBjMTE1YWQ1OGVhZGZlOWEwZmJkOGI2OTYzOGMyZTEzMmM5MDEwMmZlIHB5M2sKKzY3NTMxIGY2ZTUzYzMwYWU5NmM1YmMxZDM0YTA5NDA1ZjA0ZmM5MGEzOTYyNjAgbGVnYWN5LXRydW5rCis2NzUzMiAyMzE2ODAyNDRjMTdiMzIzMGM1YzBhOTM4Y2Q3ZTdjNjNlYmEzZTEyIGxlZ2FjeS10cnVuaworNjc1MzMgNzRiZmViMzY0YTIzYjM3ZmRiMzlkNjEwYjFhMDY1YWM5OTg2ZmEwMiByZWxlYXNlMjYtbWFpbnQKKzY3NTM0IDEwM2M2OGNjMjllNWUyZjY0YmIyOWY1NTQ5OWE4N2NhY2JlNDQxYWQgcHkzaworNjc1MzUgODllNzM4Yzc5MmMwYmM4ZGMxNjFlZmRjYzk2ZDhjYjY1M2RmMTZhYyByZWxlYXNlMzAtbWFpbnQKKzY3NTM2IDQ3OTBiMzFkOTI1Nzc3ZjJmMWM2NjgzZjU2NGIzYjFhOTU0MWI3NjIgbGVnYWN5LXRydW5rCis2NzUzNyA5ZjhlNTFmZGNlYTBmYmM2NmJjYjhkODFkYmQxODUxYjBkOTgyNzY1IGxlZ2FjeS10cnVuaworNjc1MzggY2Q1ZjU2YTgxY2NlMWQxNjVlM2RmYmM1YjhhNjBjODA5MGQwYTk2NCBsZWdhY3ktdHJ1bmsKKzY3NTM5IDNlY2E1YTczNjUxNjEwYWE5MzFlM2FkZThiN2E3M2RmNzdlYjBiMjUgcHkzaworNjc1NDAgMjdiYTA5OTU3NzUxNDNlYmE5MTQ1YWQ4NTc3YjJmMTkxNDJlMGZjNyByZWxlYXNlMzAtbWFpbnQKKzY3NTQxIDY5Mjk1NjNkYWQwMDNkNjUxZjYwZTNlYTFjOTY4Mjc0YzRkNmNhM2YgcHkzaworNjc1NDIgNjc4NjA3Y2UxMjJmYTg3NzdjMDRjZDI1ZjA4Nzc4NWUzOTEwNzJiZCByZWxlYXNlMzAtbWFpbnQKKzY3NTQzIDU4OWNkZTYxNGI1YmZlNGJjNjFkNmIwNTVjNmM1MjE0YzdlYmM2NjEgbGVnYWN5LXRydW5rCis2NzU0NCBkZWQ5OWU0ZjZiM2RiYzEwNTI1ZTg2MDMxN2JmOGUwMDRjMGQyNTgwIHB5M2sKKzY3NTQ1IGE5ZDAwNjdjYmVhNDYzNzVjZjIzMmZiYjZiYzYwZWVmOTljZWI0MzEgcHkzaworNjc1NDcgNTRjMTlhMWJiYWJkOWU1ZWM5OTVlMDgzNzA3ZDJjNWQzY2E5Mjk0MSByZWxlYXNlMjYtbWFpbnQKKzY3NTQ4IDRlMTNiMzdiMzcyM2I5MjE3M2Q4MDg4YzQ4MzM4ZTc3MWNkN2E3MzIgcHkzaworNjc1NDkgOWJiODZmN2ZiOTQ0Nzk1YWY5ZjkzZmMxMTA1YjhiOGI4ZWM3OTc3YiBweTNrCis2NzU1MCA4ZGQzNTZiMTRiMGQ3ZDU2ZTEyODMzNzcxNzQwMTM3OWJjOWI5ZDk5IHB5M2sKKzY3NTUxIDcyOWRiOTQ2NGVmNjg4YWEzM2JhMmM3OWNkNmIxOTI4ZWE1NzI4Y2EgcHkzaworNjc1NTIgYmRiMDJlYWQ3NTliOTc4M2M2YWYyZGJjZTBlNjUyODg5ZmM2NmZlNCBweTNrCis2NzU1MyA4NTE5MGZmMjI0ZTBjNDcxYTZhMTYyYmFkYzkzYzc1NjFkMDBkYmFkIGxlZ2FjeS10cnVuaworNjc1NTQgYzMxOWQyNDc0ZjU3ZTBmY2M4ZmU1OGJhZjAyMTJmNDNlM2MzMTE3MCBsZWdhY3ktdHJ1bmsKKzY3NTU1IDI3OTQ2ZjFlYjhmYTU3N2ViZTI4ZjQ3NmQ0Y2JlMDE5NDZmYTViNjAgcHkzaworNjc1NTYgYTBjZWEwMWVjZTUzY2U2ZWFmZjYzYTkxNzM1NWUwNTYyZTQwNDhiOSBsZWdhY3ktdHJ1bmsKKzY3NTU3IDc2NTk4NDFkMjcxNGRlZDBkY2ZmZjkyYTUzOTI2N2U0YzQ3MjQwMjIgbGVnYWN5LXRydW5rCis2NzU1OSA4NmQ4YTUyMmY0NDA3M2QxMjExMzY0MjJhNDY0ZThkNjRlOGRkZDNlIHB5M2sKKzY3NTYwIGI0N2I3ZDljNTkzNjA2YTdhMGExY2U2MDg1MDczN2U3MTYxYzBmMTIgcmVsZWFzZTMwLW1haW50Cis2NzU2MSA4OWJjMzFlMDY0ODkwYmY4YTVjOWVhNTg1YjI4NTVjNmMxYjRmMDQyIHJlbGVhc2UyNi1tYWludAorNjc1NjIgMDEzNzE4OTdjYjE5MDAzNWQ1NmJiZjRlNjNkMjFiN2JjZTUwYzc0YyByZWxlYXNlMjYtbWFpbnQKKzY3NTYzIDVlZjhiNWE3NGVmYTIxY2RiOWRhNTg3YTVhMDQ3NTBjYTEyZTk0M2QgcmVsZWFzZTI2LW1haW50Cis2NzU2NCA4NTlmNTUwYjQwMDNhY2ExZDI2ZmQ0ZTdiODdiYTQwOGMwZGU0ZmM2IHJlbGVhc2UyNi1tYWludAorNjc1NjUgM2M3ZWVmMTg3YmVhMzRkYWFkMWZmYTMzZDFlYzM4YjQxNTgyYmExYSByZWxlYXNlMjYtbWFpbnQKKzY3NTY2IGYwOGQxNDQ4YjkwZmY1ZDZjMDg1MzBmZTkwZTk4YzhmYjYzZWE4NmYgcmVsZWFzZTI2LW1haW50Cis2NzU2NyA2ZTUxZmUxYjdlZDllYTU0MmZhMmNlNmFlNmIzOTEwNGJjMzg4NmVjIHJlbGVhc2UyNi1tYWludAorNjc1NjggYTE3MmVhYTRkNWVjMTA0OTUzZDBjMWQzZGJhMGFkY2UzNzYyMjUxYSByZWxlYXNlMjYtbWFpbnQKKzY3NTY5IDExYmY1OWZlMTBiOTI0MTA3YjdkYTUyZWNmNTI2MjgzMGE0M2UxOTkgcmVsZWFzZTI2LW1haW50Cis2NzU3MCAyZTI2ZTgyMTlhYTQyMGM1NGViNWIwNDBmMTEwM2FmNWQ3ZDc2ZmMzIHJlbGVhc2UyNi1tYWludAorNjc1NzEgMzYzNmZlOTU3MzJjMTM3YTMxNGI5N2ZmZjFhNmUyZmJjOTllMjA1OSBsZWdhY3ktdHJ1bmsKKzY3NTcyIDIwYWIyMjYwZGM5M2JjMDcyZGI0N2RhYTk0MjY5NzA1MTM5MWFlMzIgbGVnYWN5LXRydW5rCis2NzU3MyBjNDM0Yjc3MTQ3N2JmYTFiNjQ3OGYxYjM5NGNjNDUzOGI1NDEzNGYzIHJlbGVhc2UyNi1tYWludAorNjc1NzQgYjM4ZWFiOGM5OTA0ZGE3ZjJiZGY3MTZiY2IwMTRiNTJmNzg0Y2Y3ZiBsZWdhY3ktdHJ1bmsKKzY3NTc1IDIwY2Q4Y2Y2MTM3M2Q5MzU3ZDNlZWY5ZDM2NGQ4ZTc3M2Y1MGVjODQgbGVnYWN5LXRydW5rCis2NzU3NiBjNDlkNmQ3YzE4MWUxZjJmNGI5Y2Q2ZWViYjlkNGQ3ZjczYjU1ODljIGxlZ2FjeS10cnVuaworNjc1NzggMTAwZTQxNjBhZGZiYTI5ZjNiYzAyOTJiNDA2MGZjZTAxY2JjZDdkOSBweTNrCis2NzU3OSA5NGI0Zjg4ZTVmNmJlNDQ0NWI1ZTRjZGQwODQxMGM3NjY1MDRjMWU0IGxlZ2FjeS10cnVuaworNjc1ODAgMDA3OTY0ODA5ODAzZmYzY2Q3ZWYwZmE1ZTkyOGQxNjdiMDMyMTlmMSBsZWdhY3ktdHJ1bmsKKzY3NTgxIDkyY2I2ZTVlYjQzY2U2MWYyNThhMGUwM2M5ODI2NzA3OWRmYzNkZTAgbGVnYWN5LXRydW5rCis2NzU4MyBhM2FiOTUzNDViNTJiMjRjMmE5NzVlZGQzMGI1ODI0NjE1Njg3MjliIGxlZ2FjeS10cnVuaworNjc1ODQgMDU1MDQ1ODJjZWQ2N2VkM2YyODAyNGQ5YjY2YzY5YmJmMjU0Y2ZjZiBsZWdhY3ktdHJ1bmsKKzY3NTg1IGMwNjE4M2IyZDA2ZjQ5MDQzNGRlZWRkOTcyNTE3YWU0YmEzM2M2ZjYgcHkzaworNjc1ODYgMDk4ZGJkOTczMTQ3N2M1YzY0NmIxZjkyZTVjNmQ3YjgzZTcwZDkwNSBweTNrCis2NzU4NyBmZjIyNjNkZTBkNmY0YWI1YmJjOTU2YWNhYTgxZDZhZTZhNTFlMzA4IGxlZ2FjeS10cnVuaworNjc1ODggN2E5MmExNjRmYzEyZjNjNGRkMDAwNzc3NDI1MmI2ZWFjNmY0MjU5ZCBweTNrCis2NzU4OSBkZTMwOTRiYjE0MjFkN2Q2N2I3ZjFlMDRjYmMwZjQ5N2ZmODBlMDQ0IHJlbGVhc2UzMC1tYWludAorNjc1OTAgNTdiNWM0NjM5YTVkMjNmNGVjZjVlYzE0M2Y0N2RiODZlYzdmNjFhZCBsZWdhY3ktdHJ1bmsKKzY3NTkxIGMwMzAxYjU0MzBkNTI0YjMzYzM0NDQzMjhmNzVmODMwZTYzMzFhZTMgbGVnYWN5LXRydW5rCis2NzU5MiAyMGExY2NhZGRjYWVlZTc3NjA4YWY2YmE1MGYwMjhhYzdmY2QxMTRmIHJlbGVhc2UyNi1tYWludAorNjc1OTMgYmJiMTAxYTVmOGNjZGU1ZGVjNTdkNTM5MDJiOWJmYzg0OWUxOWJkOSBweTNrCis2NzU5NCA2NTFkZmIzNDA1ZDIxOGY0YmMxNjA0MGIyZDA2ZDlmMTNkY2EwZmY1IHB5M2sKKzY3NTk1IDYyNGI5ZWFlZGI4MGYwOWFhY2JiZmFhODczODkwNjQyZDE1NmJkOWYgcHkzaworNjc1OTYgMjVmMjIyYmVmZWM0YmRhZWViM2E1YmM5NWY1MGE4OWZjNGFiY2Q1OCBweTNrCis2NzU5NyA3ZjA4MjBkNzMyOTkzN2E1MDQzOTczMTYzZDVhZWU3NjIyNDk4ZmU4IGxlZ2FjeS10cnVuaworNjc2MDAgNGM5ODQ0Y2YyYTNmNzg0ZTAzYmEyMWE1NjIxNTIzZGVjMzNjNTczOSByZWxlYXNlMzAtbWFpbnQKKzY3NjAxIDFmMmEzYjEzZTg2ZDdjNGJhODcwNzNlMDE4ZTYwY2ZkNDc1M2ZiMmUgbGVnYWN5LXRydW5rCis2NzYwMiBhYmEyY2UxNjNiNzE4ZDExYWEzY2M3OGIwNzYyYzA4NjUzNTQyYzkyIHJlbGVhc2UzMC1tYWludAorNjc2MDMgYjAxZGEyNmM0YmY5NDAwZDdlMTEwMTQ0ZWYxNzhiZjk2OGZhNjY1OCBweTNrCis2NzYwNSA4MzIzZjJkZjU2MTc0NzQ2ZGE0YTU0Y2M2YWM2NTMzYmJlMzE4YTc3IHB5M2sKKzY3NjA2IDJjNzhmODE1ZTE5MmFiZmY2ZTE0MjM1N2YwNDMzYTg3YjE2MDZhNGMgcHkzaworNjc2MDcgYWM0MmE4Zjc1ZjkyNWI3NmI5N2Y5YmUwYjVhYjc3NGJiYmY4MGU3MiBweTNrCis2NzYwOCBhOTA2ODIwM2FmZDVjMDAzYTQwZTU1NDgxODYyYzgwMjgwODZmMDdlIGxlZ2FjeS10cnVuaworNjc2MDkgN2MzYWYzMjAwZTM0YjcyNTc3MWJhYzc1MDUzNDYzNTQ0YjY1OTRjMyBweTNrCis2NzYxMCA2N2NlNzQ1YTc0N2E4ODQ0MTY0NGQ2NjNjYTk2Zjg4ODg5ZTNlNDRjIHB5M2sKKzY3NjExIGJhOGZlM2E0MGE1YmY3M2Q0NTMyNDY0MmJkM2Y1NTZjNjhhZjcxMDAgcHkzaworNjc2MTIgNjE5NjM1NDFjYmY1YmQ5ZmJmNzUyYTI2NjE4OTVmODFmYzQxNzBiMSBweTNrCis2NzYxMyBlMDA3M2I3NjUwY2MzY2FlOWI3MTFjY2ExYzA1NWEzZjRjYzU2ZWVkIHJlbGVhc2UyNi1tYWludAorNjc2MTQgZGQ1ZTFhMDQyZGJhNGZiYTNjOTQwZjc1NWFhMmY3YWY5MzY2YmE5NiBsZWdhY3ktdHJ1bmsKKzY3NjE1IDBiZTEwMzkxMzQ3YjljZGQwZWZlYzU3MmFkYWY2NmQ5NDE5NmM2ZDIgcmVsZWFzZTMwLW1haW50Cis2NzYxNiBiMTJkNmY2MDY2MThhYmZlZmRhNDU3YmNjY2RmOWVmN2M2OWI5NDU5IHB5M2sKKzY3NjE3IGNlMzYzODg3MjdhNzhiNzQ0ZTIzZGM3MzU1ZTMxM2U3ZWU5YzNkZGMgcHkzaworNjc2MTggNTJhZDhhNzI0NzJlODQ2NmNjMzZlNTcxNzVjYjE1ZWRkN2Q2ZDQyNiBweTNrCis2NzYxOSAxMzQ4ZGMyNDRjYTM0YjdiNjUxYjc5MTJmZDY2ZGEzMjUxMDg2MzU4IGxlZ2FjeS10cnVuaworNjc2MjAgM2RlNzIwY2QxNzY2YTUyZTNhY2NiMGJhZWZhMmRiMzFjMDBiNmFmMCBweTNrCis2NzYyMiA2ZGFiMjU4NzUyYzE4YjA0YTg3YzYyYjViODhjOWVkOWZmMTcxOGJjIHJlbGVhc2UyNi1tYWludAorNjc2MjMgMTY5M2ZkOTRkODI5ZDFmMTA3NzcxYzM0ZDg5M2IxMTFmOGI4NWY2MSByZWxlYXNlMzAtbWFpbnQKKzY3NjI0IDRiOWFkM2U3NDgzZTM1ZDAxOGI2YzM1MWFiM2MzNDc1NzM1YWYyNTAgcmVsZWFzZTMwLW1haW50Cis2NzYyNSBlZmY0YWFiOTU4NDc5NWExMTBiMjJkOTIyMGM4Nzc0MjRiY2Q3N2I3IHJlbGVhc2UzMC1tYWludAorNjc2MjYgZTlmOTNlMmY4ZmJjYThmZjk4NTRmMjA2NzdjYzE3OTQ3M2NiNzhmZCByZWxlYXNlMzAtbWFpbnQKKzY3NjI3IGIxNGY1ODdmNTEwZTY5ODIwMWFkMDAwMTUzMjIzOWJjODMyZWRhYmUgcmVsZWFzZTMwLW1haW50Cis2NzYyOCAwZmU0OWFlYzI1N2NiYTRlYjU0YmQwMzYxNzhmYTIwNTkxMGMyNTZmIGxlZ2FjeS10cnVuaworNjc2MjkgNmFhMDk4NWFiYmE4YzY4NGVjNjA5NTExMzljODU5ODNjYjM0ZGExMiByZWxlYXNlMjYtbWFpbnQKKzY3NjMxIDc4NzQzNzcxNDJmNjRjMWFkM2I0ZjA3NTQ0OTAyN2NiNTk0MGJhZWUgbGVnYWN5LXRydW5rCis2NzYzMiA1ZDBlOTNmMDM5OGEzY2Y0YzBmYWQ0ZjkzMmRkMzI3ZWQ0OWY0YmNkIHB5M2sKKzY3NjMzIGFlOTg2ODEwNThiMjQ3Y2EzMGI1YjRhNDVkNTQzZmY2OGUxNzU2ZmYgcmVsZWFzZTI2LW1haW50Cis2NzYzNCBlZWM5MjUyYjNkNDU0ODAxOGJhYmQxOTI3MzIwYTY2OTU0MmIwZGI0IHJlbGVhc2UyNi1tYWludAorNjc2MzUgZGFiZWQ2OWQ4YTJhYjJjZDI4YTcyOGE4ZGFkNDE3NmFhYWJmOTVmZSBweTNrCis2NzYzNiAxNzBhOTc2OGU3YWVlZjk0ZmU4MzhkYmE1ZGI4OWI4ZWQ1MjcyOWFkIHB5M2sKKzY3NjM3IDE1ODA3ZTI2MmViZjBmYTU4ZDM5YTEwMDE0N2U2NmNlYTI3ZjBjZmUgcHkzaworNjc2MzggYjhiZTlkMWYwZDQ1NWQzOGE2OGI3MmY2OWQ5NWY1ODI4ZTFjMThmNyBweTNrCis2NzYzOSAyMWE3ZThjMTE3MDcyNjJkMTEyYzg1ZmNiMDhiMWY2MTg0ZmRlYzFhIHB5M2sKKzY3NjQwIDBkM2RlYmNiOGQ0NDkxNDcwNGQzM2NkZDRlN2E4ZWUyZmYwZDhhMDMgcHkzaworNjc2NDEgNjBlZTkwMWI3MzUyOThlODJhYWI4MzJkM2QyODBkZDE2ZTAyOWI0ZCBweTNrCis2NzY0MiAwMjRhOTg5N2M2NTEwYWNkNjZmMDNiZWE4M2Q1YWI2ZTY5MDdmYjIzIHB5M2sKKzY3NjQzIDkyYzczNDgzYzFmN2E1YzIwOGY2MmMzYjViNGI1ZjBiM2RlYjMyMzcgcmVsZWFzZTMwLW1haW50Cis2NzY0NCBjN2FiZmFiNGRjZGI5ODllYzUyNWVjZDNjYThmZTJmZWJkYTZiOTA4IHJlbGVhc2UzMC1tYWludAorNjc2NDUgOTE3MDBkMjEyMWM4MmQzYTg1NTIxMGQ3M2ViZTk0ZGI3OTFjNTgyNiByZWxlYXNlMzAtbWFpbnQKKzY3NjQ2IDYzZWU2YTBmNzM1ODk5NTRjNzBlYzkxYjA2ZWJmOWE0MzVmOGI3YzQgcmVsZWFzZTMwLW1haW50Cis2NzY0NyBhODZjZGY0OWI4MjE0NDYyM2QzYzRlZGMwNTI5OGZkNzg1ZmYzOTQ5IHJlbGVhc2UzMC1tYWludAorNjc2NDggMDA5YjQ2NmNjNmNhOTQ1MmE4ZTRmNmY3MjUxNGRiNzA3OTlhN2Q1ZiByZWxlYXNlMzAtbWFpbnQKKzY3NjQ5IGUwN2JjMzc5ODk4MTI1ZWYwYTUyM2JhYWUwNGE0NjQwNWVkY2MyYTAgcmVsZWFzZTMwLW1haW50Cis2NzY1MCA4MjBjMTEyY2MyYTg2NWY3ZmJjYzY5MzU5YjJjMTFmOGMwZjQ3Y2RlIHB5M2sKKzY3NjUxIDcyNTE5MmM2NGMyODQ5Mjk3MDhhNDg4ZTU5MjdhMWJlNTFkYzQ4NWYgcmVsZWFzZTMwLW1haW50Cis2NzY1MyBjOGFhMzE1NGRiMGUzNjJjODQzZWI4ZTYyOGE1NGMxNmYzNGJlZTAwIHB5M2sKKzY3NjU0IGE5ZTMwMjUwZWQyMDY3ZmZlOWEyYjczNjRlMjM1OGVlMzU3YWM4NTkgbGVnYWN5LXRydW5rCis2NzY1NSA5ZTExYzkyZGE0NzZjZWQ1Yzg3MzlmM2EyMTA4YzNhYzMxNWE3OTNiIHB5M2sKKzY3NjU4IGY0YjE2YzAyZDFmNTllNjNkZTU4NmNlMGZlOGI5OTNhMGE5OGU4ZGMgbGVnYWN5LXRydW5rCis2NzY1OSBkY2E1N2NiMGMyMDAxYjBlM2U5MzA1Y2ZlMTc4ZGViZmZhYmEwZTQ5IGxlZ2FjeS10cnVuaworNjc2NjAgOTlkZDBkMDA3MjVhNTk1ZjlkZGU1ZDJjOTYzMWY2ZmM3NGNmOTg3NiByZWxlYXNlMjYtbWFpbnQKKzY3NjYxIGRjYWM4ODVkMDBmMWRhOWFmODJiMGM3YjY4OTA2NTNjYWE2YjhkMzggcHkzaworNjc2NjIgNDYzYmZhMDczMDgxMDBhMTk4NjYxMWRmOTQzNDA5ZTQyNjkwZmI0ZiBweTNrCis2NzY2MyA4YjlkMDhkYzg1MDA0OGIzMTY3NDUyZWQ1ZDgyZjRhMDMwNDBjNGY1IHB5M2staXNzdWUxNzE3Cis2NzY2NCAyNmEwOWQzODY2NGEwMWNmNTc2NWFlZDJjZjQwMjk1ODg5MmI1MjAxIHB5M2staXNzdWUxNzE3Cis2NzY2NSBkMDQwYzQzNWFkZThjOThkZGY0YzVmNDJkYzJkOGU5ODA5NGY1YjMxIHB5M2staXNzdWUxNzE3Cis2NzY2NiBkYzY5NmRlYjJjZjI2ZGEyNDA5OGQ5NjQwZWM3ZTljZDc5ZGFmYzU3IGxlZ2FjeS10cnVuaworNjc2NjcgODNkNjQyYTM0MzliM2U5OWQ3ZmQyODkyNTM0ZjcwMzI4NTkxZjQwZCByZWxlYXNlMzAtbWFpbnQKKzY3NjY4IDNkYWM5OTI4MTk0YjdhYjQyZDEzMWYxNTQ1YjIzNDU2YjVmZmRlNmEgcHkzay1pc3N1ZTE3MTcKKzY3NjY5IDA5M2U0ZmE1MGQ4NGI2NGQ3MmIyOGJkNzYxZTQ5ODA4N2JjYmFlYmQgcHkzay1pc3N1ZTE3MTcKKzY3NjcwIDA1Y2FmNDQwY2U4ZjAwYjE5N2Y5MDNhY2FjMDlkYTI4Zjg3YzFkNjUgcHkzay1pc3N1ZTE3MTcKKzY3NjcxIDM4ZTYxMTY4NDU0YjI1NmFmYWU4ZmZmMWY5N2FmOTdlZTMyZDAzNjcgcHkzay1pc3N1ZTE3MTcKKzY3NjcyIGI3OWQxZDc2ZjE5NWE3MWRiZjM2M2EzNjRkZDU4N2IyMThiNTU3MmQgcHkzay1pc3N1ZTE3MTcKKzY3Njc2IDYxY2I2YzRhYjIwZGI3NDZkMzcxNDcxZDQ4OTNlYjJiZmRlODgxYmQgbGVnYWN5LXRydW5rCis2NzY3NyBhZDY0NzcxNjY5NmM0ODhkZTRiOWYyMWEzNTQ3ZTQ5MTg2NTQ1OWU2IGxlZ2FjeS10cnVuaworNjc2ODAgZDQ3MGI5YTdlOWUxODk2ZGMxOWQ0NmJmMGMxMGQ0ZTMyYTdhOGQ3MCBweTNrLWlzc3VlMTcxNworNjc2ODEgOWZhMGE2NWVjZTIzYTI5MWVjZTA5MDE5N2Y1MDY1YWZlMzIwOThmNCBsZWdhY3ktdHJ1bmsKKzY3NjgyIDQwZjc1NjYxNTU0ZGI4MDc0MDY1ZTkxYzljNGVkYzFhY2JkNmJhMTQgcHkzaworNjc2ODMgZDllODI4ZTgzZDEyNWRlZjc2MjM1YzNkOThkNWY3M2FiZWY4ZGY2NiBweTNrCis2NzY4NCA2OTRkMDRlZDJiNDNkYWM2NTdhYmY1Y2NlODE3ZmYzNWYwMzg3YTlmIHJlbGVhc2UyNS1tYWludAorNjc2ODUgNjJjODljYmZiNTExYjg3MjUxNjliMzVlNDFmNGFjMGNmZDliMzc1ZSBsZWdhY3ktdHJ1bmsKKzY3Njg2IDk4YWJlOWNkZTdjZTc3NzFiNTZmMTk1YTJlNGQ3OWQxZGU4YTYxZjUgcmVsZWFzZTI1LW1haW50Cis2NzY4NyBhNmRkZDk0OTgzZWEzZDM4YTFjMTY0M2JiMTI5ZDA3YTU5NjdkYmQyIHJlbGVhc2UyNS1tYWludAorNjc2ODggOWExMGQ0NDA0YmQwMDJjZjUzNGFhMWY5NGNiNzI5Nzk1ZWYyZWRiMSBsZWdhY3ktdHJ1bmsKKzY3Njg5IDQ4MjM5ZjYyMDliMDY0ZGJlOWUwMGJmYjk5MGIzMGJkNzU4MDc1NTggcHkzaworNjc2OTAgMjY1MThkNDFhMTg2OGM0OTVjNDczYmE1MTExZDQ1NjAzNmQ0OThkZCByZWxlYXNlMzAtbWFpbnQKKzY3NjkxIDU5NjcwYjdiNzdhNmI1MzA3NzVkZGM3ZDQzMGM4ZTlhNmM0YjQ2MGEgcmVsZWFzZTI2LW1haW50Cis2NzY5MiA0YWY1ZTJhNjA5YWIzNThmYzkwMDg4NWJlMjE0OTRjYzkwYTA1ZDVlIGxlZ2FjeS10cnVuaworNjc2OTMgYjA4OWE1Nzc3ZDgwNmU3MTczOTI4ZDI1YTNlYzI4MWVhZmQ1ZmJhMyByZWxlYXNlMjUtbWFpbnQKKzY3Njk0IGFlODE5NzUxMDNiMDg5YzJhMDFlYzgwNjBmOGQ0ZDJhZGI2ZGNhNmIgbGVnYWN5LXRydW5rCis2NzY5NSAyMmFhN2RkMGVhODFiOTE4YTZkZjY3ZTc0ZDZiZjBlNTVjOGEwZmQ4IHB5M2sKKzY3Njk2IDJmOGMzMTdkZmYxN2U3ZjZhOTJhODEzMmJlYjQxNzA1YWVmYzYxN2EgcmVsZWFzZTI2LW1haW50Cis2NzY5NyBhYmY4MTViODBiNWQ1NTdhMDUzMzYwYjAzMmU0M2RkMTBhZmZiNGU3IHB5M2sKKzY3Njk4IGZiMjQ1NmEzNmE4M2E4ODUzZTJlMjc0YThmNWQ3M2ViYmU2ODA5ZTIgcmVsZWFzZTMwLW1haW50Cis2NzY5OSBlMzU0NjhiYzRkZjQxMWRkZDNiOGQ3ZjJlMzc1YmE4ZjMwYjJmOWUxIHJlbGVhc2UyNS1tYWludAorNjc3MDAgMjFkZTdhOTE0NmY3NGEwYzc4YTMzZWNlMGE4Y2M5YzA1MGI0ZDEwYSByZWxlYXNlMzAtbWFpbnQKKzY3NzAxIDAxYzAyM2Q5MjE4ZWJkOTkzNmRjMjZhNDliNTc0ZDQ1ZmQwYjUxZTEgcmVsZWFzZTI2LW1haW50Cis2NzcwMiA3MTY3OTc1NjQ2OWU5MDE5ZDJlYTUxNmQ2NzI0ZmQ5YTI5OTEzODQwIHB5M2sKKzY3NzAzIDljMzFhOTg3NDQ3ODhiZjZmZWEzYTYzNTgxN2Q4Nzg3ZjIxNTEzODcgcHkzaworNjc3MDQgZTRlMGZmN2RkYzg1ZWMxZTE1NjE5NzZiOTc4OGViNWMxNWExZmZlYSByZWxlYXNlMzAtbWFpbnQKKzY3NzA3IDBkZjBmZGZjOGUxYjJjMDNiMTBlMGUxYzgzZmI5OWM2MGZiYzkwODIgbGVnYWN5LXRydW5rCis2NzcwOCBhMjUyNTE1NGU0NGYyNDBlOTAzNTZhYjJhMzEzZmI2YmZhMWQxNjg1IHB5M2sKKzY3NzA5IDc3NmE2Y2FmYzIxYTM0ODE5NTkzMTMxOGU1NzdjY2MyNmY5NTE5NDIgcmVsZWFzZTI2LW1haW50Cis2NzcxMCAyMGE4NGUwNjMwNTI1NzIzMmZmNzg2ZWY5MjRiYjAzZTAxZmFlMzA4IHJlbGVhc2UzMC1tYWludAorNjc3MTEgZDkxZTYyODYyNzY0NTFiZDdiMmJjNGM5YmFmZmI4ZTZhNTYzNzEzNCBweTNrCis2NzcxMiAyNmU3ODk0MjE2NWUxMGZhNjY2MjkwMDNhYjdjZDBlYWEwYjhiZGU5IHJlbGVhc2UzMC1tYWludAorNjc3MTMgM2UxYzQ0OWQxMWUwZWFlMDAyYTJlMWVhNGNiMzBhM2IxODkxN2YwZiBweTNrCis2NzcxNCBkZjY2NDk5NTE0MTBlYzgzZDhlY2QyNjk5MGFjMThhMmU0MzNmNDM5IHJlbGVhc2UzMC1tYWludAorNjc3MTUgMzAwYjk1ZmE3YjRkM2Y5YjFkNDcxNzQwYjQ3M2UxOGM2MTRhZjhjMSBweTNrCis2NzcxNyBiNDU1MmUyZmZkNWE0MTg0NTJkMmMxMGMyNTg4ZDg2NjdkZjRmMTRmIGxlZ2FjeS10cnVuaworNjc3MTggZjliOTUyOTRhYzg1NzdhODQ2MWE5ZGUxYTYyNTYxZWVkZTU4MjliNCByZWxlYXNlMjYtbWFpbnQKKzY3NzE5IDU4NTVlM2UwZTg1YjE0OWM2YTgxMWZmNWEzZjY5ODljZGNkYjgwOGYgcHkzaworNjc3MjAgZmRlYzU3NjYxMWJkZmE2Mzc1YzI1MmMyM2UwN2Q5Nzk5ZGJiMTNmNCByZWxlYXNlMzAtbWFpbnQKKzY3NzIxIDMzYTFlMTAwOGU1NDBmYmU2NjU5ODA4OWViOTgxOGNlNzcxODJkMmUgcmVsZWFzZTMwLW1haW50Cis2NzcyMiBlZWVmNzFkZDNjY2UwMmY4YzY2OTU4OWYxZmQ0OTkwM2YzNDZmOWE3IHJlbGVhc2UyNi1tYWludAorNjc3MjQgNDY0NmMzMzUzMWRiMzAzZjliYmExMTM5MGFjZGU2NDY0YmYwZjZjNyBweTNrCis2NzcyNSAyNDVlNzg3YjkwZmMxMGVhOGZlZDgwZTM4OTUyOTMwNmRmMzFlYzBmIGxlZ2FjeS10cnVuaworNjc3MjYgNjFkMDY0MDlhNjYwNjkzYjQ3OGE2NTE2MzQ4OGFhZTBjMmIxMTgwNCByZWxlYXNlMjQtbWFpbnQKKzY3NzI3IDMzY2QwNjQ5MTg1ODUzZWVmN2MwYWFmMWVjMTg3ZThkYTk4YzAwNWIgcmVsZWFzZTI0LW1haW50Cis2NzcyOCBhNmMzYzcxNWUyYjcwNzQwYzRiNmI0ZjdkYzZmNDdiMTZhN2U1OTA1IHJlbGVhc2UyNC1tYWludAorNjc3MjkgZmI1ZjhhZmYyM2ZkMWNjYzFlNjEyZmZhNjMxOGE1ODRkYzMzNmZiNiByZWxlYXNlMjQtbWFpbnQKKzY3NzMxIDBiN2RjZGI1Y2EzYWFjODllMDUzYjY3OTJhNDFiYTk1MjYzOWQ2MGIgcmVsZWFzZTI1LW1haW50Cis2NzczMiAyZTIxY2VhNDM2NzA3MWMyNjQ5MjUwMzdjNmExMzc5MmY4YmI1YjhiIHJlbGVhc2UyNS1tYWludAorNjc3MzMgNGQyNDIyOTg5OTgxYWViY2ZjNjAxNWE2NzEyMWMwM2E3NjM2NTQzNSByZWxlYXNlMjUtbWFpbnQKKzY3NzM0IDljYWExZTVkZDgyYmRkMDJlNTk1NmNlMmUzNTA5NWQxOGMyMTQ0M2EgcmVsZWFzZTI1LW1haW50Cis2NzczNSAxZjFhMTE3NzY3NzQwMzMxZThiMTgwZTUzMDMxZTQzZThlMzNlNmI0IHJlbGVhc2UyNS1tYWludAorNjc3MzYgOGQ5MDJjNTEzYmEwZjg1OWY1NzQyYTJlZTRhYWVkYmNlYjMyMGVjOCByZWxlYXNlMjUtbWFpbnQKKzY3NzM3IDc2ZjE4OWVhNTUwOWYxYjI0OTdhNWQ1ZDg2NzcxZTg1MGUwMTE3NWQgcmVsZWFzZTI1LW1haW50Cis2NzczOCAzYTMzMmJmMDZkYTA2OWVmYTc4N2RlNDdiYThjZWZhZGQwMjVmYTA0IHJlbGVhc2UyNS1tYWludAorNjc3MzkgZTZkYmFkYWIwMWQ4YTg1MDFmODViMDMyY2FmMzYzZDMwYjQyYzM0ZiByZWxlYXNlMjUtbWFpbnQKKzY3NzQwIDVmNGY2YjdkYThjYmNhNTc0ZmViYWQ5M2Q0MzU4ZmRkYmExZWNhYjMgcmVsZWFzZTI1LW1haW50Cis2Nzc0MSAxMmRkMmNmNWUwYzgwMDI2NTA1YTgzZDgxNjczMDE1NTc0MTQ3MzQwIHJlbGVhc2UyNS1tYWludAorNjc3NDIgOTUzMGQzMzRkMjYyNDIxOWU3ZWUxYWVjYWYzMzUzMmU5MTAyNjZiYyByZWxlYXNlMjUtbWFpbnQKKzY3NzQzIDU4NDY4ZmNkZTA2ZTliZjUzYmE1OGQ1YzRmNDJlODllNzliOWEzNTEgcmVsZWFzZTI1LW1haW50Cis2Nzc0NCA4OGMwOGE2M2NiNzQxNTcwY2MyNTA5NmNlZTkxNDQxZjlhYjYzZjAzIHJlbGVhc2UyNC1tYWludAorNjc3NDUgNmU4MGVjNDEzMDk3M2RlNTVmNTA4NzM4YTA5YWM5ZmNiMzBkMDA0YyByZWxlYXNlMjUtbWFpbnQKKzY3NzQ2IGJiMWQ5YWU4MDJjMzE1MmQwZTMwYjBkZjNmODMwOTUwNzU4ZjFmMGMgbGVnYWN5LXRydW5rCis2Nzc0NyA3NDBjZTlhNTIzZmZjNGFjYzkxMTIwMDJiYzk5MjM0ZDg2Y2Q0M2UzIHB5M2sKKzY3NzQ4IGEwOTBhYWI1NzVjNmVmNmMzMjJkNDk0NzY3MDRlMjhkZDQ1ZWY4ZWIgbGVnYWN5LXRydW5rCis2Nzc0OSA5YzQyOGRjM2Q2ZmI3NzgyZTE4MDU3NGFiYjNiMzY1N2YyMjgzYWM0IHB5M2sKKzY3NzUwIGI1ZWZjYTMwNGQyYWY5MWUxY2QwZTZlNmZhOWUxMTBiMGUwNzAwMGQgbGVnYWN5LXRydW5rCis2Nzc1MSBmMjBlYjgwOTUzNWU5MWMwYjE0NDE2Y2M1NDQ3MzU3Y2ZjYmJlOTVjIGxlZ2FjeS10cnVuaworNjc3NTIgNDI2NGNmMDBhNzVjMGZlMjA2MmVkODQ2MjdmMDRlNDZmMzg3ODE4ZiByZWxlYXNlMjYtbWFpbnQKKzY3NzUzIGRkMWI4ZGEwMWQwMmQxOGJkM2RmN2MzY2VlMjI3NTYyODg3Yzg4M2IgcHkzaworNjc3NTQgMjUyOTI3YTJmMzJkNmZlMGZkMGNjZjM5YzVjNzM5MmE3ODE3YjUyMyByZWxlYXNlMzAtbWFpbnQKKzY3NzU1IGNjNzI3MjM5ZTUxYjE2NDcyMGZlZTYyNDNkMzE2NTZmNmRiZjFlZTQgcHkzaworNjc3NTkgZWIwNzAwOWM4NjYwNTgxMWU2OTM1YWJiZmU5ODE4OTA4NjBhNzRkMyBweTNrCis2Nzc2MCAxOGY5NmY2ODgzYWY1ZDUwOTI3ZTZiOTdkNDYzMzI3ZWYwMDI4NThhIHJlbGVhc2UzMC1tYWludAorNjc3NjEgNzAzM2IyODY4NWExM2JmNDU1NDQ1YTQxOGM5YjBjNWI5NjQwMDVhYyBsZWdhY3ktdHJ1bmsKKzY3NzYyIGIwOTUxNzhjMDQ5MjhhMzQ2YzAyYjhhNDc0MDQ3MDRiNzgyYmI2NzEgbGVnYWN5LXRydW5rCis2Nzc2MyAxOGJjZTJmMmE3YzU2YmFkNGNiMzY0ZjZmMWIwZGM2N2NjNzYxZGE5IHB5M2sKKzY3NzY0IGQxNTc0NmFiZjZjNzgzYzYyMmFmZTRiZDIzOTkwMDJkYzUzODdjMjQgcmVsZWFzZTI2LW1haW50Cis2Nzc3NyA1NzVmOTczZmYyNDQzM2UxNTJlODhhNDM0YzRjOGE2NzQ1MjRkMjUwIGxlZ2FjeS10cnVuaworNjc3NzkgNzJhN2FjMjE4ZWEzMjgzY2QxZDRiMTNiOGVmZDMyZjliYWZhYjJkNyBsZWdhY3ktdHJ1bmsKKzY3NzgwIDk2YWIwOGVkOTVhNDAyYWQ3ZjlmYmQ2YWRhMWM0MjE3YjA5ODE2MWQgcHkzaworNjc3ODEgNGRiNjZjMjBjYTY4ZTVhMThhMjY2NmQ1ZGZhNmQ2OWQ4NzUwYmE2YiBweTNrCis2Nzc4MiBlYTljNjAyNmFlN2VhMjQ2MmNmM2FmY2VlYmI1NTg1NzY5MWI4MDAxIHB5M2sKKzY3NzgzIGFkOTgyYzI2YzNkZDVmNGQ3NzlhNjU5MWE5ZTc0NmI3YzVjZTg2NDcgcHkzaworNjc3ODQgZTM2YmUxZWM3Mjk2NWMwMGU2YjBhNmZhMDdkMzA4YzdhYTNmZmU0ZiBsZWdhY3ktdHJ1bmsKKzY3Nzg1IDllOWZjYTk0ZDI4NjIxNjhmMTQwNjk4ZmE3Y2I3MjQxMDdkNjc2YWQgbGVnYWN5LXRydW5rCis2Nzc4NiAzMzM2ZTRiNzdhMDQxMmVhZTg3YWEzMmZhM2YwZmM0MjBmZWFmNThhIHB5M2sKKzY3Nzg3IGRjNmY5NzRmYjdkNGY4MzI0MzVkMDYxOWMzNTc3NGY4N2YyNzU1ZTAgbGVnYWN5LXRydW5rCis2Nzc4OCAxYWYyYjhiMGFkODhjYjk0NzljYjQ3ZGFiY2FkYjVmNTI2YzcyOGI2IGxlZ2FjeS10cnVuaworNjc3ODkgZGFjYWExZjQ0MTlkNzAzYzY4NjU4NmMyYWQ5ZTc2N2U4ZTJlNzY1MyBweTNrCis2Nzc5MCBhYjUxYzE1MDliYzA0YTQ2YmY5YTU0MzI5Y2ExY2JkYWEyOThiY2YxIGxlZ2FjeS10cnVuaworNjc3OTEgZWRkNzI0MzdjZWMzZjM1N2IyMGViYTBmNDAwMTNmN2U3ZTkxNmQyYiByZWxlYXNlMjYtbWFpbnQKKzY3NzkyIDdkYWI4ODA3MGJjN2RmYWQwODk1MDcwNGUyOTJkN2QyMTVhNzU4NWIgcHkzaworNjc3OTMgZWIyODc2YWUwNDc2OTYwZmU0NzY1NGUyZTkwZjMyYjIzMjE3YjU5MyByZWxlYXNlMzAtbWFpbnQKKzY3Nzk0IDIwZjE1YzBmMjFmODhhOWFmODg1YjdjMDVjMmYwODBiZTczMDk0YjcgcHkzaworNjc3OTUgNDgwNTc0NWQ1NTk5Mzc3YmY4YjljMzViNjM0NWMwY2JjYzU0YThiYyByZWxlYXNlMzAtbWFpbnQKKzY3Nzk2IDI5OTY4Mzk1ZjkyMDUzNjg5NTgwZGJhNjliZGRhZWNhYmZkNzVjN2EgcmVsZWFzZTI2LW1haW50Cis2Nzc5NyAxNGNkNTg4NTQ0ZmExYjFjOWEzNTk1YjMyYjgxYTE4ZTNmYWE2MWRlIGxlZ2FjeS10cnVuaworNjc3OTggZDUwZGFkMmIyNzUwNDJhZGVhZjMwOWE5NTZiM2FlOGIyNDcwMDEyNCBweTNrCis2NzgwMSA5NTQxYTJlY2M0ZmJiY2VlNGZjOGU2Mjg2N2U0ZjhlODBhZmFkMDZmIHJlbGVhc2UyNi1tYWludAorNjc4MDIgYjdkOWFkYzRjMzQzNzk2YmFlM2M4NzgwYWFiODI4ZWM4Mzc0YjFlNyBsZWdhY3ktdHJ1bmsKKzY3ODAzIDIyZmY5YTQ2Mjk4NzU1ZGU1ODdiNTk2YTlhNGM3Y2UzMzQxYmE5OTYgcHkzaworNjc4MDQgYTE3NWIxOWI0YmYyY2U5ODQxMGU2MWYyNzk5ZjJkZWFhN2Y0N2Y2OSByZWxlYXNlMzAtbWFpbnQKKzY3ODA2IDhjNDI0ZjExNmZiOGQwZWQ3NWQ3YTliMmU0YzI2ZWI3ZmJjNzhjODkgbGVnYWN5LXRydW5rCis2NzgwNyAyMWQzMzU3ZGNiZWM0MWZjNmZlMDBjMDQ5ODUxMThhYzg5MGZiMTM2IHJlbGVhc2UyNi1tYWludAorNjc4MTAgYTQzYTZkZjE4YmE0YmM2ODljMjIxOGRkMDQ2MDAxNzFhMmM4Yzc2YyBweTNrCis2NzgxMSBhZWYwNzMwZGY5YmEzMjdhOGUxNWQzNzJhZTczN2RmYjZlYzQyZTZmIHJlbGVhc2UzMC1tYWludAorNjc4MTMgNjg5ODdlOTMxMTkzZmFmNjlkMmJhYmQxMDQwNTcwNjg3NTQyOGIzZiByZWxlYXNlMjQtbWFpbnQKKzY3ODE0IDA3NDA3ZGUxODM5NDg4M2U0ZmRkNDZjYzljZjRkOWQxNmRjYWY0NTEgcHkzaworNjc4MTUgZDA2YjA0YzU3YjUzNjE4MDE4ZjcxYmJlYWQ5NTA5Y2JlMGMzNTUwOCByZWxlYXNlMzAtbWFpbnQKKzY3ODE4IDk0ZTc5ZDc4ZGZmMGRmYjVjNTNmNDk4NDJjN2RmNjVhZDViNzllNjYgbGVnYWN5LXRydW5rCis2NzgyMiBmMGRiMDZmNDlhNGUzMGU0OTY2NjI1MWY2NDhjZTk1ZTcwOWUxNTY5IGxlZ2FjeS10cnVuaworNjc4MjMgMzM2Njg2NDgxNDQ2NjAwMGY3OGFkOTc1YjhjN2RlYmI4YTIzOGU2NyBweTNrCis2NzgyNCA5MmUyMTY1MmYyZjRkMzJkYmJjZjZjNWFiMzlkZDRiYzAxMjZkYzI3IHB5M2sKKzY3ODI1IGNiYmUyNTg4NjY0ODdhNDA2MGVkZmE1MmM4ZDM5NjBhMWFjNjU0MmQgcmVsZWFzZTI1LW1haW50Cis2NzgzMiBmYzk3MjljODBiNzkxYTdjYmNlN2E2YjljNDY5YWFjYTUyMjhhODg0IGxlZ2FjeS10cnVuaworNjc4MzQgMTg5YjQ2MmVlOWQ0ZjI1YmZjMmQwMzBiNjkxODRhMDkwOGQ3NzIyNCBweTNrCis2NzgzOSAyZWU0NjUzOTI3ZjcyZjliYjNmZjE0YjMwODNkNGEyMDNkNjg0ZGZjIHB5M2sKKzY3ODQwIGRhZjZkM2FmNDBjNGI5MzlkZDFkY2YxNWE3Nzc5NWZjZjY3MzZmN2MgcHkzaworNjc4NDEgMDAxYTI1MTVkNTdiMDE4OGE0YWM0NWJlOWE4YzZmNGM3ZWFmMjRmZSBweTNrCis2Nzg0MiBhZWJmNzEyNGRkMzIyYThmYjU1OTRkNDZlOWE2NTFkYmU1YjZhOTFmIHJlbGVhc2UzMC1tYWludAorNjc4NDMgODJlNmZlMzcwNzgyOWY2NmY0ZDRmZDBjOGEzNWEwM2RjNTMwZGNiYSBweTNrCis2Nzg0NCAyNGI4MGI3OTc4ZWMyMTk0YzRmYzdlMTEwMGFhNDBiMWFmZTExZjczIGxlZ2FjeS10cnVuaworNjc4NDUgNTZiN2ViZjEyZWEzYWRmZDkwMzI0NjA2ZTBkYjE3Y2NmNjk0ODM1OCByZWxlYXNlMjYtbWFpbnQKKzY3ODQ2IDQ3ZWNiZTJkM2VlZmJjNTNjNzViYmMxYTZlZGU3M2RjZTM0OTRkOTYgcHkzaworNjc4NDcgYmYyMGMzODRiZTU2MzlhZWEwNTBlODAyYWNlODQxM2MwYzhjYmIzZSByZWxlYXNlMzAtbWFpbnQKKzY3ODQ4IDZmYTVmOTY5ZWZlNjQ3YTIzZjhmMmExYjQ2MjJmZDU1YzMyZWI4ZmMgbGVnYWN5LXRydW5rCis2Nzg0OSA1ZTgzOTI5ZjdlZWI2MWQ2ZTAwOWJiMWY0Njc5NjIzODFlZWQ1ZWZhIGxlZ2FjeS10cnVuaworNjc4NTAgOWExODkwOTgyNDg5ZTU0Njk5NzI0MDBjNjM3OWY0YjI5MTk5MTlmNCBsZWdhY3ktdHJ1bmsKKzY3ODUxIDBkYjkwN2E3MDcyMzYwOWFiMWE4NzA1ZGE3ZjBiNzM5ZjYxNmRlMDcgcHkzaworNjc4NTIgZjNmMWYxNDYyYzgyNTM2YmIyMzc5NmU3MGM4NTUyMjE0NGVlMjRkYiByZWxlYXNlMjQtbWFpbnQKKzY3ODUzIDQ4ZjI3MzczMzc5NTZlZTE1ZTM5MTBkNzgzZjJlZjc0MjQ5YjA2MzkgcmVsZWFzZTI0LW1haW50Cis2Nzg1NCA2MDg4NTZhN2U1NjhiODZlNTE2M2VhNmE4N2ViMDE2NzI4OGJjNjY4IHJlbGVhc2UyNS1tYWludAorNjc4NTUgM2NjMDU2ZDIxYzJmNDQzNWE1MzRkMjMzNDViYWQ5YzBhOWQ5YjNjYiByZWxlYXNlMjUtbWFpbnQKKzY3ODU2IGI1NjIzMTIyNDcyOGFiZjJjYjNlYWEzYjQ3YWZkNzgwOWY4NWRiOTMgcmVsZWFzZTI1LW1haW50Cis2Nzg1NyA0OTZkZmY0N2JjN2VmNmZjMWE2ZTE3NDIyNDc1OTlmMmM5ZDhkYmIzIGxlZ2FjeS10cnVuaworNjc4NTggOWJkZWIwYmUxZGFkNGRjOGIwZjE5ZDYxYzY2ZGY4OTllNjNlOWRmZCBweTNrCis2Nzg1OSAxYzk0ZTc5OGM4NWIxYTYxMzk0ODgyN2EwMDljNmFiYmMzMGNmNGY4IGxlZ2FjeS10cnVuaworNjc4NjAgNDI4ZjZjNGU4NDQ2MjEwZGMxMzk1YTZmMDFhY2NlNWQ4YjY1NjhlNyBweTNrCis2Nzg2MSBkMDI4MmEyOTJiMGFhOGMyNTI1MWNjZTQwYzlkNzg3ZDI4ZjYwY2IzIHJlbGVhc2UzMC1tYWludAorNjc4NjIgOWZiMmEyM2VhYzQzNWEyYmQwZDZmMjk0YTViZjA1YjlkNDhhNjNkNyBsZWdhY3ktdHJ1bmsKKzY3ODYzIDA2NDc5NDhiZTg0MGVmZDNiZTg5YWUwODhkYWEyNWE1NWU0OWExYmIgbGVnYWN5LXRydW5rCis2Nzg2NCA2NzAyMDRjZjIzZTIyNTZkMmJkY2Q0MjIyMWY3YTBhYzRmY2I1NmJmIGxlZ2FjeS10cnVuaworNjc4NjUgYTc2NTYxOGM3ZTk0NGYzZTA3MGE2NTI0ZGZmYWM4ZWU2YTQzYTJlMyBweTNrCis2Nzg2NiA0NjI3OWNlYmVhOWNmMTQzY2NiOTBjNDkzNzMzNjVjZWFlMGE3NzFmIHJlbGVhc2UyNC1tYWludAorNjc4NjcgNzczYWYxODYwOGUzYTYyYTQwOWU5MzNkYjQ4MDhmMDNiYWUwZDFlZSByZWxlYXNlMjUtbWFpbnQKKzY3ODY4IGVkYjJlZWZiNjg1NmY2ZmIwZjMxMTlkNThiZDkyNDQ4OWUwMTE0MTQgcmVsZWFzZTI2LW1haW50Cis2Nzg2OSA3OGZjMDk2ZTUwODUyOThmZDAxMWE1MzFkNjUyZGU0OTdiOWYyMzI1IHB5M2staXNzdWUxNzE3Cis2Nzg3MCA3ZmU3MmFlMTlhYjI5MGEzNGM0ODMxM2RiMGUxMGVhZmExZWU2Mzg2IHB5M2staXNzdWUxNzE3Cis2Nzg3MSA0NWJlYTU4NDY5NGUzNTBjZjJiOTEyNDE1YmRjNjgxYTVhZDIyMTYyIHB5M2sKKzY3ODcyIGVlOWM5Y2MwMjhjZTE1OTE5NTdlN2M4ZDcxMDE2ZTNkMmJmZmVlZjUgcHkzay1pc3N1ZTE3MTcKKzY3ODczIGFkMjQ2Y2I0ZjY2MmUyMTFjNDcwMWZlM2I5ZmRjYjYzOWM5OTQwODAgcmVsZWFzZTMwLW1haW50Cis2Nzg3NCA2ZTNlNTgyZmUzZjM4OGVkOGIwMjdjYWI1ZTZjY2I0ZDZlNTcyYWE3IHB5M2staXNzdWUxNzE3Cis2Nzg3NSAwYzBiOWFiYjU4NDI2ZGQ4YTY3ZDgwZDQ2YzU5N2ZiZDRmZjcxYmM4IHB5M2staXNzdWUxNzE3Cis2Nzg3NiA4YmI5YTg1NDYzOWI2OTA1ZTAzOWRlZjgzYTNiYTVhNzJkYWQxMTFiIHB5M2staXNzdWUxNzE3Cis2Nzg3NyBmYjk5M2YwOTNjYmY0M2JkZDFjMmJiYzRkNjE3NTM0MzhhYmNmYmM3IHB5M2staXNzdWUxNzE3Cis2Nzg3OCBhNjU0ZjFlMWJlMjMxZmQzM2I4OTA5MTVlYTUzNjg4NWJkN2M3Y2EwIHB5M2staXNzdWUxNzE3Cis2Nzg3OSAwZGNhMmI0NTc3NzVkNDcyNWRkNDgyMDJmNWY1ZjY3ZGE4OGY3MDlkIHB5M2staXNzdWUxNzE3Cis2Nzg4MCA1ODllZGY2MTVhZGI3MjYyZGY5Y2EzYmE3M2ZhZTVkMzE3MzE4YTY2IGxlZ2FjeS10cnVuaworNjc4ODEgYTdiMzU3ZjllOGE0OGVhZDYyZWQ2MWFmOWE4YzU4YzZjZjllNzI5NyBweTNrCis2Nzg4MiBjNGZmZmEwOTcyZTM2OGUwZDczOTk1YmZjODY5OGNmNmE5Y2IzM2Q4IGxlZ2FjeS10cnVuaworNjc4ODQgMWQ5NjFmZTU0YTZmOWQzYzE5NDEwNjdhMTMyNzI2YmZmNTVlMWRjMyBweTNrCis2Nzg4NSBmMzNkY2Y3ZTZlMWMzZWQ5NDVlYmI5YjliYjJjODNmODE3NzI2OGEyIGxlZ2FjeS10cnVuaworNjc4ODYgMDFiODA3NTM3OTE1NjUxYmMxNDNiZDEwMzIzNzE1NDAxYzA4YThlOCBweTNrCis2Nzg4NyBlODdhMjU2MTE4OGI1MzM1MjMxZmQ2ZWJhYmM3YjMyYTFiZmY5YjEwIHB5M2sKKzY3ODg4IDFhZGZhYmNiZTA3MzE3ZmFkNWRmZmRhZGVlYjU2MGIwYWQ2YmI4MTQgcmVsZWFzZTMwLW1haW50Cis2Nzg4OSAzYWIxMDJkOWNmNTYwNmE3NDk2ODMzNmMxOTNiMTExYjI2N2FiMGMzIGxlZ2FjeS10cnVuaworNjc4OTAgYWY1NmUzZjE0ZWI3NGIzMGQzOTczZDViZGNlMTIyMDdlYjE0ODdhMSBsZWdhY3ktdHJ1bmsKKzY3ODkxIDUyOTRiMjE0ZTFiZTk4ZTc5NzliYmRmOTgxMzUzNDYwYzZmNjliZGYgbGVnYWN5LXRydW5rCis2Nzg5MiA0ZmRhNGY1NDVmNzkwNjkwMTMzMjUxMzU2YWQ5MmQ4MmI4NTM0YmJjIGxlZ2FjeS10cnVuaworNjc4OTMgMTE2Njc2MTBlOWY1NmE3M2U4YjY4N2YwOTlkZWUxNjdhNjcxZjk5OCByZWxlYXNlMjYtbWFpbnQKKzY3ODk0IDUwMmY2MWQxZmJhZjRiNTFlYzAzZGVlYjc5ODVjNWY4ZjE1M2U5MjggcHkzay1pc3N1ZTE3MTcKKzY3ODk1IDFiZjcyN2UyYjA4ZmRlNGUwY2FiODY1MzgwMTY2MzQ4MTliMjBiZjMgbGVnYWN5LXRydW5rCis2Nzg5NiBlNDY3NTExM2QxMGVmYTczOWM1ZDhhYzMyZTMyYjRlZGJhNTNlMDNmIHJlbGVhc2UyNi1tYWludAorNjc4OTggZGU3YmJjNGQwYjFkMTcyNWYyMjkyMTIwZTQzNzk3ZTQ0ZTY5MzI2MCBsZWdhY3ktdHJ1bmsKKzY3OTAyIGQ3OWZkZDg0MjBmMzZlYzg1ZGJmNjQyZmFiNzBkOWFhMGQyMzljYTEgbGVnYWN5LXRydW5rCis2NzkwMyBjM2I5NzU5OWQ3YTE5NzRkMWYyODg1ZTk3ZDYxNDgxNWRhMDM3YjE4IHB5M2sKKzY3OTA0IDAzNzk5YmI0NDc3MjI4M2Q4MTBlNjIxZTM5ZWVlZWI5ZTM4YzA3YTIgbGVnYWN5LXRydW5rCis2NzkwNSBiZDNjNWRlNGNjNTQxYmYwOWRiNTEzOWE2N2U0Nzc1N2I1MGUyYzJiIGxlZ2FjeS10cnVuaworNjc5MDYgMjQxMDI3YjI0YjQ1ZDk0MzBhYzFlODE5MTQxMzE1NDQ0M2I5ZDlmNSBsZWdhY3ktdHJ1bmsKKzY3OTA3IDk0YzA1NDY2MzA2ZTIxZjMyMDYyM2IwMWQwYmYyOWYyM2FlOTVhZTcgbGVnYWN5LXRydW5rCis2NzkwOCA0YmRlY2FhNGVjYWIyYjZjNDU2MWRjNGU2NjU2MzY1OTc2ZDc0M2MxIGxlZ2FjeS10cnVuaworNjc5MDkgM2EyNTlhMWUxZDljNWUwOTE5ODdhMWVmOTQ2M2U5ZDZjZTUwNTgzZiByZWxlYXNlMjYtbWFpbnQKKzY3OTEwIGFjODhiMzQzMjA2NjBiMGQ5NWUwODgyNzcwN2E3MjgwMWU1OTE1ZmUgcHkzaworNjc5MTEgMzk2NTMxNGJiOTIyYzI3NjVjNTdiYzUxMDEwMDA5ZGU5N2EyYjYzZCByZWxlYXNlMzAtbWFpbnQKKzY3OTEyIDMxMzJlZDEyZWMxMDA2YzM3YmJjMjNlZGNmNTJiYmY3ODRjNWM1ZTMgbGVnYWN5LXRydW5rCis2NzkxMyAwNWUwMTA1MTVjNGJjNTcxMDIzMGRjNDY0Mjc1OTU0ODNhNmNiNTJlIHJlbGVhc2UyNS1tYWludAorNjc5MTQgMGY5YTdlZGI4ZTU4Yzg4MWUzZDU2NTAyMjQ1MDM5OTRlNjhkMjkxYyByZWxlYXNlMjUtbWFpbnQKKzY3OTE1IGFhNDVhMTc3M2Y2ZTBjZTRhNDc4N2RmNWUyZTVmODQ2ZmRiMTQ0ZWUgcmVsZWFzZTI1LW1haW50Cis2NzkxNiBhMGE2ZDk5MDkzMTJhZDljMWQ4NDRhZjY2ZTljOTE5MzFiOTM4NTJhIHJlbGVhc2UyNS1tYWludAorNjc5MTcgYzc0ZmQ3NTE4N2Q5MDQ4OTFlMjA0N2Y3N2I1NDMyOWVjZWNmMzUxYSByZWxlYXNlMjUtbWFpbnQKKzY3OTE4IDc5Mjk1NjQxZmNmMGJlNWQ3YzUyNmYyZmZmYzIzOGY2YWZkMWU0NWQgbGVnYWN5LXRydW5rCis2NzkyMCA4NzUxMjg4ZGRkOTYxYzYzODhhYmZiMTQ1MTllM2JiYjRjNGM3NzQ5IGxlZ2FjeS10cnVuaworNjc5MjEgMTAwOTdiZDY1NTY0ZjBkYmRjZDBmZDE2OGU2ZGVlZTJkNjk3MzNlMyBsZWdhY3ktdHJ1bmsKKzY3OTIzIDA2OWQ5NWRlZWE5MTU0ZTJhMzIwNTEwZTk0YmI3ZjcxNGM2NjI0NjggbGVnYWN5LXRydW5rCis2NzkyNCBlZmQ0MDAzZWU4ZWE1YWEzNDUwMjc2MGE3ZWEyOTYwNDcxMDI5NDk4IGxlZ2FjeS10cnVuaworNjc5MjUgNTAyNzkyNjM4MDFiNWNmZDI0ZGU4YjllYTg0Mjk0NzBlMzhhZWY1OCBweTNrCis2NzkyNiBmNmNkMWE3YTMxYmI4NjQ3NzViYTQ4M2U5NjRkZmQ0YzM3ZTA4NzQwIGxlZ2FjeS10cnVuaworNjc5MjcgMTEyYmEzZGY4NTFkMmZmNjM5MGVhMmU0YTgxYzE4MTU4OGVlYTRlMiBsZWdhY3ktdHJ1bmsKKzY3OTI5IDBjODUyYzExNmUyMzVkZjA1ZTFiZGNiZGFlMjUwNWI1ODQ4YmMyNGUgcHkzaworNjc5MzAgOTJiYzE0ZThiMzdlNmFjM2Q0NWUwOGE0YjBjOWE1NmJiNDdlZGFiZCBsZWdhY3ktdHJ1bmsKKzY3OTMxIGMzYjQzY2I2NzAzYzYyZjY2NzBjZmJlNTZlOGMxNjk3NDk0Y2YxZGQgcHkzaworNjc5MzIgZjg1OWQ4MjQzNjllYTlmYjA1ZWZlZGIyODc5MmMyMjMwOGE3OGYxYSBsZWdhY3ktdHJ1bmsKKzY3OTMzIGFkYjliNTQ3YzdmZTgzYTU4ZjU3NmFlNDU3MzIxODQ2MDhjODllN2YgcHkzaworNjc5MzQgZjZhZTdjYzllMmU4NWQ3NzZhMTQ0NzVlYjEwYThiNzVhNDRkOTA3MiBsZWdhY3ktdHJ1bmsKKzY3OTM1IDY5OWZkZDgyMTdmM2JhODJkMjkyYWRhMDIxZGIyMWRkZWQ2MjhkZDAgbGVnYWN5LXRydW5rCis2NzkzNiBkMjcwMjQ3NTU1OTNiOGY3OTIxMGMzYjliYzMxNjVlYTg2ZWY2Zjk1IHJlbGVhc2UyNi1tYWludAorNjc5MzcgMzAzYWQ0NWE5NjdmYzUxZWU3NjUxNDA5ZWQ0YTE2NzZiZGQ2ZTM3MiBweTNrCis2NzkzOCA2NjVjNGFjNDcwNzNlNzNmODlkZDgzMjAxZmQ5ZDY4YmJhYzNjM2M4IHB5M2sKKzY3OTM5IGRiNTBkYzAwNjFlZGViM2I1YzA2MmQwMWNlMTczOWM3NGE5ZTJjMmYgcHkzaworNjc5NDAgMmU1MzI2MmM1NWVhNjdlY2FlYTJkZTNhYmQyN2E2NzM4ZDdlNzVmOCBweTNrCis2Nzk0MSAxMTM3NTFhODk5MGM5NDg3MmQ5YjdkYTc1YjFmYTQ3OGYxNDk5Y2M0IHB5M2sKKzY3OTQyIDQwOGE5ZmY0ZjhiMmM4MWUzNmI2ZTM5MzM1MTJiZDhmZDdjOWVjNDggcHkzaworNjc5NDMgN2IxZDBjZWE5ODcwNjQ4MjUwN2RkMDMwN2E2YjgyZTE5NWVmM2JlZSBsZWdhY3ktdHJ1bmsKKzY3OTQ0IGZiMTUwZmNmMTY1ZDBmYTYzYTJmMzRlMTdmYzYxZjhhNGI2YjY1YTggcmVsZWFzZTI2LW1haW50Cis2Nzk0NSA0YmRmOWUzNDIyOTFhNjRlNWRmOWU3OGYzZDM5Mzk0MDVhYzYyNWNhIHB5M2sKKzY3OTQ2IDk0Zjk5NmJjNjRiM2JmODQ4NmYyYjU2NzEzYTI0OWY4N2JhYjBlZmMgbGVnYWN5LXRydW5rCis2Nzk0NyBmZWM3MmM5YjI3MWQ4OTY0NTI1NGNiNmIwNWU1MjkxMGRlOTQxYTc5IHB5M2sKKzY3OTQ4IGFkNzQ0N2ExNjViYmZhYjVjMDI2MmZhZmQxM2I3OTUwNjU5MjMwYTAgcHkzaworNjc5NDkgMWUxMjE0NDEwMzc1YWFkZWUxY2U2MzBkNGE5Yjk2Y2ZmNWUwOWNiMyBweTNrCis2Nzk1MCBkMjgxZWJmOGVhMzBmNDY5NTRjMTJhOGM4YmM2YTRlYTc3Nzk3NjcwIHB5M2sKKzY3OTUxIGU2NzM2MzJlMTg4NTY1M2MwZmU2YTRlMTFjZTU2MWVjZDM3ZThlOWQgcmVsZWFzZTI2LW1haW50Cis2Nzk1MiA0MWQ3ZDhmMDg1MmIyODQ3OWNkNWJlYTRkZGRkMTQ4ODk4ZTg3ZjJjIGxlZ2FjeS10cnVuaworNjc5NTMgZTJiYmJjMDZkOTJjODI2MWZmM2FjN2JhNWE5ZjU1MGFlNjYyNDdiYyBsZWdhY3ktdHJ1bmsKKzY3OTU0IDkzZGE5ZjE0ZTViNThiZGE1ZjIyOTMzMzMyNzQzNDBjNWRlNjVjYWIgbGVnYWN5LXRydW5rCis2Nzk1NSBhZmY2ZTlkZGRkOWY4MjlkNjVlNGViZjNiYWM5NjNkMTAyMWU3MWJhIGxlZ2FjeS10cnVuaworNjc5NTYgMzk5MWYzN2ViY2EzMWNjYzc3MTNkNjIwNmViOGVkMWMwOTg1ODRlMSBweTNrCis2Nzk1NyA3NWI0ZTMyMzQwYThhYjEwYjFiY2I2MDVmNTU0N2M0OTJmZGVjZTBlIGxlZ2FjeS10cnVuaworNjc5NTggMWI4ODkzMmRlZmRiMjhiNGQ3OTliMmU3OGI3YzlmMWU0ZDMxZWJmMSBsZWdhY3ktdHJ1bmsKKzY3OTU5IGJjZGZkYzM2OTU3MDg1MGEyM2E3ZmIxMTRmYTVjNDFjNzg2NDU1ZjMgcHkzaworNjc5NjAgYTI4ZjllNzUwYjY0ODMzZWZjOTNlYmY2OTlkZjYyZTE2MjhkMzVmYSBsZWdhY3ktdHJ1bmsKKzY3OTYxIGU5YTBkZTQ4Yjc0Nzg0ZDA1MDM3MTQ4MTE1ODY2MTBkOTA5Y2I5MzUgbGVnYWN5LXRydW5rCis2Nzk2MiAwMjQzMGU0NGQ1MGVjZGVlYmQxZmFlMDlkYWFlZDkwMTU5MTk4N2ZiIHB5M2sKKzY3OTYzIGZiZmExZDY3MjRkZThjMjFhMDIwMGQ2ZTBjZjM2YjgwOWVjZjM1YTYgbGVnYWN5LXRydW5rCis2Nzk2NCAxZWZhMTMwNGRmYjMyNTA5NWFmMjUxNDU0ZGFlM2IzYjYzZTczNGI2IHB5M2sKKzY3OTY1IGE5ZTVhYzRmMDkxY2Q1ZGMzZjY3YThhZTBhMDRkMmNkOTA1YjE4MDcgbGVnYWN5LXRydW5rCis2Nzk2NiBhNjQ5ODg0Yzc5YTgxNDY4YTZiYjNiY2M1NDI0MzBhMGFiYTI0MDZmIHB5M2sKKzY3OTY3IGNiMzUyNGI2NDA3ZjZlMzhjZWY1OTU3MjU4ZGFkNzBiOGU3OTJjNDIgbGVnYWN5LXRydW5rCis2Nzk2OCBlYTg3Y2MwNjhjNTZmNDhhMDk1OTU5Y2Y4NDVkZjViOWIxNGRjNTIxIHB5M2sKKzY3OTY5IDhiZmI0NjY0MTRhYzliNTc0Njc3NDAxZWM1ZjI4MTE0MTIzYTk4MDMgcHkzaworNjc5NzAgMDI3YTZmM2FjODc0NzdjNWVjOTQzNjY0MjE0MTk3NDFjZGYwNjNhZiBsZWdhY3ktdHJ1bmsKKzY3OTcxIDVlYzNlM2Q1NGFhNjVhZjI2MzgwNGZlNTIxNTU3ODI3NTQ5NTA4YTIgbGVnYWN5LXRydW5rCis2Nzk3MiBhNGE4OWQzZTQxYWY1OWM0YjU0Y2VhMTg3YTc4YjI5NmNjNzJlMDM5IHB5M2sKKzY3OTczIGRiMGRkY2UyOGQwZjgyNzM0ZmE2ZDY4OTQwZmRlYjdmZWQzNTlhYzMgbGVnYWN5LXRydW5rCis2Nzk3NCA3YTAxMTY4MGUxNTFiYTJlMjNlMjE3ZjFjMDMxMjg5NDdlMmExM2Q1IHB5M2sKKzY3OTc1IDQ0MjA3OGYwNzlhYTAyNTExYTdjMjRhODhjZTE2ZTljNWIzZGZiYTEgcmVsZWFzZTMwLW1haW50Cis2Nzk3NiA5ZGIzZDNkMzljYzNlNzU3NWE5MmJhYzE0MTVkZTk1ODgyMDI0ZDUwIGxlZ2FjeS10cnVuaworNjc5NzcgMWUwZDIwNWZlOGQ3MGU1ZjlmMWQ2MTMwZWM2MzBhYmFmYTc5NTI3MSByZWxlYXNlMjYtbWFpbnQKKzY3OTc4IDZhMDU2NmE1MTIxODRiZDU1NzlmYzQzY2UwZGZkMDE4NzBiYmQzOTEgbGVnYWN5LXRydW5rCis2Nzk3OSAzNDFiZjc2ZWI2ZWI3MmI1Mjg2NWQ0MzRhZmNjNmYyMDI1ZTJkMjZiIGxlZ2FjeS10cnVuaworNjc5ODAgMGVhNGJkNTlhNDBkNjZjNzEzNTE2OWI0ZTBiMDY2OGZmNzc3MWM1YyBsZWdhY3ktdHJ1bmsKKzY3OTgxIGU3NzIwNjEyYTc5Njk4NTkwOTJmMzM1YzVjNDc0N2Y0NTgzMzM2OGIgcHkzaworNjc5ODIgNjQxZDI3OTAzYmM1NzQ5YWUwZjdiMjcxZmI5NTdiZmY5NDlmNDllOCBsZWdhY3ktdHJ1bmsKKzY3OTgzIGJkZWQ1YmQ2MGU5NTRkYTY1MzVjYjJhMjY1NDRjOTViMTRlNjI1OTggcHkzaworNjc5ODUgN2M3NjI0YTMzZjhiMzIzMzQ0YjkxMDRhYWJhOTM5Mjc4YTQwNmUyOCBsZWdhY3ktdHJ1bmsKKzY3OTg2IDM3NTU0M2I5ODI0NDYwMjllZDNjNzRkOWRmOTlhM2YyNTY2MGYzMDUgcHkzay1pc3N1ZTE3MTcKKzY3OTg3IDczZGNiOGI0MjFmODBkMTk1YzZhMjc4MzMwMGFjZTljZDUxZWNlNDMgcmVsZWFzZTI2LW1haW50Cis2Nzk4OCAyZjE1ZDU5ZGZiODA0ODgwMThhYmU5YjNkZTMxMjM3Y2NkNzA4MDkyIGxlZ2FjeS10cnVuaworNjc5ODkgNDU3ZWM4ODRhZjA0NWMzNWU5ZDY5ZTkxYzQwNzZlZmM4OTczMDk4YiByZWxlYXNlMjYtbWFpbnQKKzY3OTkwIGUyZWJhYzA2MjQzMjIxM2NlNDJmODUxMmNiNzVjOWIzN2Y0MTJmZTUgbGVnYWN5LXRydW5rCis2Nzk5NSA2ZmI3ZDhmNDI3M2YyYjA3NTAyMTFhMjdkYjJhMGZjNTRiYmMwYzdmIGxlZ2FjeS10cnVuaworNjgwMDYgMmFkNjhkZDBhYzkwZjdhNDI5NzRiNmQyNDVlOTgxY2Q1YmJkNTFkYSBsZWdhY3ktdHJ1bmsKKzY4MDA3IDg3ZjU0MzJiOWVkYzhkOWE1MWU3MjAwZWU2YTdkZGYxYTM5MWNjNmQgcmVsZWFzZTI2LW1haW50Cis2ODAwOCBiOTVkZGU5NTk5NmE5YjNhMTQ3ZGJiZGNhYzI0YjQ1ZWVmY2IwYjU0IHB5M2sKKzY4MDA5IDg3Zjg2Y2NlNDNiMTUzNWJmYmFkYWExOTJiY2NlYjMyNTM4NmRmZjUgcmVsZWFzZTMwLW1haW50Cis2ODAxMCAzODM1N2UxZDIxZTZhYjk4MjllYTExNDFlNTgxYzhjZGEyYzE2MjJmIGxlZ2FjeS10cnVuaworNjgwMTEgYjllZmRkOGY4YjMwOTFlZmM4NzQyMzdkNGVjNTczMzY4YmM3ODQyZiByZWxlYXNlMjYtbWFpbnQKKzY4MDEyIDlmODM2MzA4ODUzNmE3Mjc4MTU2ZjA1OTc5ODI4MTAzNjcxMmYzMzggcHkzaworNjgwMTMgYTFhYmZlMDI3MDc0Yzk5NGU2ZTRjNjYyMTM4ZjZjNzhmMjg2MzIwMCByZWxlYXNlMzAtbWFpbnQKKzY4MDE0IDg5YTNmNWM5YjUwMzIyNGNlYTcxMDUwOGNjMmU5MTU0NTVmZDkxNTEgbGVnYWN5LXRydW5rCis2ODAxNSA3MWU3MzJjOTMyMzQ0NWEyMGQzMzMzNGNmMDYxYjRhYTdjYzg2YjExIHB5M2sKKzY4MDE2IDcwZGUyZTA5MWU1ODI2YzBkZjliMWI2YmJiZDJjODVlOTQ4NjJmY2UgbGVnYWN5LXRydW5rCis2ODAxNyAxOGQ4MTdhN2EzOWZhOWY4YWRlM2Q0MDI0OWUyMzExN2QzMGQ1NWYwIHB5M2sKKzY4MDE4IDM0YzczYTQ2M2IzNTVhOGIxMjE2MWNhYmVhMzQ3MmNjNGEwMjBjMDEgbGVnYWN5LXRydW5rCis2ODAxOSAyOTMyYjM3ZjFmMDQ0MjA1Y2VkYWNmM2Y0ZjdhOTk4YjcyMWJkZGE5IHJlbGVhc2UyNi1tYWludAorNjgwMjAgNDRlYTllYWM4YzViNTI1MjJjNGIwZGU4MDQ0YTdjZjdlNjAxMmEyYiBweTNrCis2ODAyMSA3ZjVhYTdlNTRhZDVhMTI0MjczYWZjYTg2MDc2NzI1OWNiYzJkNjQ5IHJlbGVhc2UzMC1tYWludAorNjgwMjIgZjdhM2YxNDE2MWUxNzU3N2NmZTUyMTY3ZGE5MTQ3MWEzMWY5ZmM1ZSBweTNrCis2ODAyMyBhZTFlMTE0MjM3Mjk1ZDlmZjFjMTUyN2I0MGYyNWM3NmUyYTBlY2Q0IHJlbGVhc2UzMC1tYWludAorNjgwMjcgMWFlYTgzZTBhZTlmMDJlYmM5Mzc1ZWZhMGQ3NjkwZGFiZDJiODQxYyBweTNrCis2ODAzMCBiYzFiMzc0Mzk1ZjQwMDAxYTkyZDhhYWQ0MTQ4NjEzYmI5NDA0MWZhIGxlZ2FjeS10cnVuaworNjgwMzEgM2Q0NDdiN2IxMzYzNGZmMzRjMGI5YzdkZTM0MWNhOWU4NWFlM2NkYiByZWxlYXNlMzAtbWFpbnQKKzY4MDMzIGYxNDYyZDkyNGE5YzIxZWU5ODA0ZGE2YjBhMjk3ODFjMDM2NDg1NDAgbGVnYWN5LXRydW5rCis2ODAzNSBhZDIwYjY5YjE4YjcwYjE4MjcxNTY2YThlYmI1MzQ1MTMzOWM4MzliIHJlbGVhc2UyNi1tYWludAorNjgwMzYgOWMwNmZiN2QxMjYwMmVjN2Q2Y2RlYjY4MDFhNjYwYmI0ZThkZTZmNyBweTNrCis2ODAzNyA4ZmE2MTFiYmIwNzdmZjcxMDkyNzU5YmQ1OGM2M2YxODE5OTgxNGFkIHJlbGVhc2UzMC1tYWludAorNjgwNTEgN2FhZWY0ZDVmODgwZTc4NjNmZDYwNjJlMmUzMWZlZGNkNGUxZTRmNCBsZWdhY3ktdHJ1bmsKKzY4MDUyIGU3ODJmOTcxMTZkYzFjZjEyODIxNDVlYWJkYmUyZWI1ZDQ1OTQ0ZjEgcmVsZWFzZTI2LW1haW50Cis2ODA1NyBmNzNmYzQ0MTc0NGYwNjU3ZDgwNzMzOGRiMTFlOWVlODYzYjQ2OGRhIGxlZ2FjeS10cnVuaworNjgwNTggNjE4ZDMzOTdmODg4Y2U1NDMyNTFmODI4Y2YyYjY0YmU0YTY0MWNlNSBweTNrCis2ODA1OSAyOGFlY2JmMWU4MzJiMDVmNjc5NGRhYzdlMWM1ZTlhNmM0M2ZhMmUxIHB5M2sKKzY4MDYwIDQzYWFjYmU2NDdjYjNmNDlhNTdlMDUyMWVmNjQ3YWJkMTc2MTBhMTcgcmVsZWFzZTMwLW1haW50Cis2ODA2MSA3Mjk5OTk5MjllZjRiNWJkNmFiMWQxNTMwNGNhMTRmMzU1NzNiZTI3IGxlZ2FjeS10cnVuaworNjgwNjIgMTE1NGQwMjQ1YjY2MTM4YjRkM2QzNzVkNTFmY2RhN2RmMjQ5ZTU3MyBweTNrCis2ODA2NCBhZmFiMzE5MjUyZTc5MjNkZjQxOGQwYjlmM2FjYTFhZGFjNDBjYWNhIHB5M2sKKzY4MDc0IGZhNmZjNTUyNmY3MWYxMjM0MTY0Njk2MDYzZGMzNDU4Y2Q1OTAyYWMgcHkzaworNjgwNzUgMmM4NDRjZmMzNzVhMzFjMjI4NmUzODIyOWU5YWIzYWQ2OGNiY2YyNSBweTNrCis2ODA3NiBjMzM4YmVlMjExNzM5NzA1NjcwNmUwZWI3OGM5ZGI0YzU2YTA0MTJmIHJlbGVhc2UzMC1tYWludAorNjgwODAgNzQzMTYzOGU3ZGQ4ZmFjYzQ1ZjliM2NkY2ZiNWNkNTY2YzY4YTEyNCByZWxlYXNlMzAtbWFpbnQKKzY4MDgxIDhhNDgzNDM5Y2I1NWZlYjNmZTkzY2YzZjA1NzI1OTNjNTJjOWIxMjUgbGVnYWN5LXRydW5rCis2ODA4MiBkODk3NWYyNGFmOGI1OGRmOWNlZGVmN2RmNDNmNmJiODljZGM3OWE1IHJlbGVhc2UyNi1tYWludAorNjgwODMgN2Q1NTBjYjUzNjllMDVhZTZjN2ExNzQ2N2I4YTBkOGUyOGM4ZTFlMiBweTNrCis2ODA4NCAzZTE4YjQ1OWQ0Yzg4NDFkZTc5MDM4OTc1MTE5MDQ3ZGU2YzA4NjVjIHJlbGVhc2UzMC1tYWludAorNjgwODkgYjc1ZDc2OTE1MWJhYThmMGExMTQ5ZGFhOGM0MzFjNzQ3NjNkMmVlMiBsZWdhY3ktdHJ1bmsKKzY4MDkwIDAyZmNkOWM1ZmVmYmY5ODBmYzAxNjhiYmVhNmM2ODE0YWIxNDU3YmUgcHkzaworNjgwOTEgZWY2NDljZTliNzgzOWEwNzQ3YzQxMDg3NzYzOWU1N2NhOTI2NzA1NSBweTNrCis2ODA5MiAwNmY0YzM3ZDY1Zjk2ODlhYTVjMjM4MGY5MGUyZmU2NTRjYzJiZWJkIGxlZ2FjeS10cnVuaworNjgwOTMgMTVhNjYyNjA4NWY0YTUxM2VlNDI0Yzc4ZTVjODJhZWEzYzUxMmNiMyBweTNrCis2ODA5NCA2ZDE2M2MyYWVmNTZiOGRhYWEyNGVkNDhkYWViNmY3YmE1ZjAzZDU5IHB5M2sKKzY4MDk1IDM4NTNjMTU1MzJjNGVkZTMzZGQ2OWE3NTdmMjFjNWYyMGM4Y2QzMDcgcmVsZWFzZTI2LW1haW50Cis2ODA5NiAwMjJkOTk5YzRkMWE5NGIxN2I0YWM4MWYwZWRmNzdiOTZlZTMwZjRiIHJlbGVhc2UzMC1tYWludAorNjgwOTcgOWMyYWM3ODY2NmQ0NTc4MzI1MGZmNjNiY2ZjMDAwY2JjNzg1NzM2OCBsZWdhY3ktdHJ1bmsKKzY4MDk4IGRjYmU5OWIwY2U4MzIyNzcxMzZjYTUyNTI0Njg5MDI4MDQzMThhZGQgcmVsZWFzZTI2LW1haW50Cis2ODA5OSAxYzVkOTQyMTI4YjY4ODA1N2ZmOTVmNTM0ZjhhZTc5OGJkNzMwNjUxIGxlZ2FjeS10cnVuaworNjgxMDAgYzQzMjI2ODc1YmQ0MTA3OWIyNTk4MGI2NGQ2YTNjZjNjZmEzYTFiNiByZWxlYXNlMjYtbWFpbnQKKzY4MTAxIDdlMWE5NWIyNmE1Y2E2Y2JkNDI5N2I2NWZhNDk5MDIzZDY0OWNiODQgcHkzaworNjgxMDIgNWNjMDczZDY2MWY3YjZkMzNiMmMzZWM1NDA2ZDY4OGEyNTFmZGZlYSByZWxlYXNlMzAtbWFpbnQKKzY4MTAzIDUwNzQ4MzBlOWI5OTQ2NDFmMTU1ZmE4OTViZWY5YWNjYWIxZDFjM2UgcHkzaworNjgxMDQgNzIzOWZiY2RjZDRmYmE2NWIxY2EzNGNhMzllNjk3MzExZDJlZTVjZSByZWxlYXNlMzAtbWFpbnQKKzY4MTEyIDEzZGFmOTlkYjAzNTc3MGE0Mjk4NzFjNDMzNjcwZjk0ZGZlYzI2NmQgbGVnYWN5LXRydW5rCis2ODExMyBiZjZmMmRmYzMxMGJhMTRkOTkzNTZhMTBhYzcxOTRiMjI4NTFjODFmIHB5M2sKKzY4MTE0IGQzMmE2NjlmOTZkYTk5M2UwOTNlNTg4ZDJkZTNiYTBlNTUwMGUxNjIgcmVsZWFzZTMwLW1haW50Cis2ODExNSA5MmFkOTY1NDQyNTI1ODA0YTdkYzY3NzdjNTAwNTZkMTExZTg3OTc0IGxlZ2FjeS10cnVuaworNjgxMTYgNTlmM2JmMmEzMjhkNDQ4NDJjNmMyOTkzZjA2ODk3MWU3NTFjNjNlOSBsZWdhY3ktdHJ1bmsKKzY4MTE3IDkyN2Y1ZDkwODdmNWExNWU1YTQ5NGFjOWRhZjM4NmNmYzY5NWZlOWUgbGVnYWN5LXRydW5rCis2ODExOCAzOTRlMzg5ZTg5ZjA5YTZlZjM4YTBiNGE1ODYyMzA2NGNiNDJhMTE1IGxlZ2FjeS10cnVuaworNjgxMTkgMjBlZGI3ZTUxNTlmNGRjMmY5MzUxZGFmZDBjMGJkOTBkNzMzMDE5MSBsZWdhY3ktdHJ1bmsKKzY4MTIwIGQxZTUzNmM2ZmEyY2IyMDVmNGFkZTNhNzA4MDFhMzFmZjJmMzU2MDEgbGVnYWN5LXRydW5rCis2ODEyMSA2ODNiM2Y4YjEyYjQ0YTIzNzg5ZjJjNGI3MTg0OWJiOTU0N2I4OGM1IGxlZ2FjeS10cnVuaworNjgxMjMgZjM1NDAzYTAxMWI5NGM1OGE5Y2I2NThjMDFhM2U2NzZkYTE4ZTc0MSBsZWdhY3ktdHJ1bmsKKzY4MTI0IDFjNGU2NzhhMWQzYjFlZGZiMTM3MmIxY2NhOWQxZWM5NWNjYTgxYTEgbGVnYWN5LXRydW5rCis2ODEyNSAxYjgyZjJiODJmZDkyMTFhZDUyNmYzZjhlOGZhOTM3NTQ0YjI4OWMyIGxlZ2FjeS10cnVuaworNjgxMjYgZTVkYmYzOGIxZGFjMWE3MWM4OWVkZmE0MTFkNGE0MWM5NDQ3MDJhZCBsZWdhY3ktdHJ1bmsKKzY4MTI3IDM2ZTk3OTNlYmI1ZDQ4M2M0ODBlMjMzYzk1OGQ5Nzg4OTlhM2Q5OTEgbGVnYWN5LXRydW5rCis2ODEyOCAwOTliNDhmZTkyMmEwZGYyNjdkMzk4NDQ4ZmM4Y2Y0YzZmY2RjNmZiIGxlZ2FjeS10cnVuaworNjgxMjkgY2FiODUwMWY4YWU2YjMzYjI5NWQyZmMwYjlkNGUwY2U5MTY1YzY5NyBweTNrCis2ODEzMCA4NDYzZmY4NjFhMjZkODRkNzI5OWNmZGEwNjAyMmMzZTUzNDkxYjgyIHJlbGVhc2UzMC1tYWludAorNjgxMzEgNDM2ZTYzMTdjN2I0YjkxMzQwMzNkMWMyNTA1MDkzZjcwOTgyNDBmYyByZWxlYXNlMjYtbWFpbnQKKzY4MTMyIDRmYmY1MmM5OWI2ZWQ0MzRkYjI0MGM3YTA5NTQ4MDU3YzIzOTg0MzUgcHkzaworNjgxMzMgYzdhNDVjYmEwNzg1ZDZjYTU2YjMzMjEyMzY5MGFmMzE2ZWEyNjYwYSBsZWdhY3ktdHJ1bmsKKzY4MTM0IDBlNWIyNGFkZTRhMjE3NmNlMGM1MTVjNGJlYzU4NjA0MzYyZmMzZGUgbGVnYWN5LXRydW5rCis2ODEzNSBkZjM5MjNjMzZlYzU5ZjdkMjM4ZjdhYzg4NGUwOGU5ZDJiYTA4ZmUwIHJlbGVhc2UyNi1tYWludAorNjgxMzYgMDZlMWY3ZDlkYTgzZGU1NDJhZDk0YTQ2NmJkZDg2ODczMjc3OGFjOCBweTNrCis2ODEzNyA5ZGQyZTI1N2FjN2MyMmU1ZjRiNDczMjc4MzhiMmUwMDk1OGYwMDhhIHB5M2sKKzY4MTM4IGJiMzEyMjNhYmZhYThjNWFkNjJkMjk1ODRiYThhZTlkMGY5MmQ3Y2UgcHkzaworNjgxMzkgOWY2MDRkMzNhNDJmNzBiZThlMDRhNDE2ZTQyZTA5Y2I0YTQ3MTE1YSBweTNrCis2ODE0MCAyYjEzZDIwMmE0N2Q3Mzg2YWNhNDQwMjQ0NDM4OGM3MDA2OWUyZTEzIHB5M2sKKzY4MTQxIGFkNGU1MmQxNTRmNGEyOTg4MzZkNzU3ZWY0MjAwZjcxNjdhZDJiODcgbGVnYWN5LXRydW5rCis2ODE0MiA1YzZmZWQ3M2I2YTkxODJhOTg1OGExYTg5N2NiZDdkNWExODE0ZTkwIGxlZ2FjeS10cnVuaworNjgxNDMgMmRlYmJlNjQ0NWUwZmQ5MWJjYTIyZmU0NjMwZTgzNzQxZjE5MDQ3MiBweTNrCis2ODE0NCA0ODAxOTY5ZGFkZWUzY2ZkN2YyZGU2NGFjZTMxYWRkZTFjNTVjOTg3IHJlbGVhc2UzMC1tYWludAorNjgxNDUgNjA5N2Y5N2IwZDIyMDczYmEwZTMyMDllNjgzYzhkNTA0YTQxYjcyMyBsZWdhY3ktdHJ1bmsKKzY4MTQ2IDQwZmE4Njg5ODFjY2Q4ZjdlNmYwYmUzOTg3ZTEzNTVjNmIyZDEwNTggbGVnYWN5LXRydW5rCis2ODE0NyBjYjM0NzljYTgxYWNjYWVhODQ4ZjRkZGY3M2ZiYjE5NWI1NmI2M2I2IHJlbGVhc2UyNi1tYWludAorNjgxNDggYmYxNzM0YzZiNmVkMjIzY2YxZDFjOTIxMmZkNWQzZTNhZTE0OTMyMiBsZWdhY3ktdHJ1bmsKKzY4MTQ5IDg0Y2IwMWM1NjQ4YjE3NGQwN2RiMzU2YjViZDAwNGQ4MzI5ODIwMTMgbGVnYWN5LXRydW5rCis2ODE1MCAyNTNlMWM3M2ZkZTY5Y2FlYjc4NDIwYTIxOTc4ZDQyNTUwYzRkYTJhIGxlZ2FjeS10cnVuaworNjgxNTEgNWM0ZjYzOWM5MjAwODk4NjJjMmYxZjBjNjU1MjBiOGFmNDcxNTUwYSByZWxlYXNlMjYtbWFpbnQKKzY4MTUyIDA4ZGJhN2Y5NzAzMDE5YTg5MDJlN2VjYTE4ZmQ1MTVlZDFmYmQ3MTIgcHkzaworNjgxNTMgMmYwMWY5OTVmNzA0MTJiNzAyM2Q1YjE5MTNkMGIyODg1OTM4ODM4OSBsZWdhY3ktdHJ1bmsKKzY4MTU0IDM0ZDUxYzMwYTRmNGJmMWM5MjM0ZGVlYWMyZmM0Zjc1MDNmMzgyNjIgcmVsZWFzZTI2LW1haW50Cis2ODE1NSA5NGNmYmY5M2Q3MWI0YzYxMjVhNjE4ZjY4YjEzZGVmMTI0YmZlZjk4IHB5M2sKKzY4MTU2IDFkY2IxOTIxNmI2NGQ2MjBhODBhYzRlYzBiM2I4MDVlMjcyOWQ0ZTEgbGVnYWN5LXRydW5rCis2ODE1NyBlN2FlZTdjOTlkM2I3N2MwYTdiMThlNGM3YTgxMWVkNzIyMGYwMDg1IHB5M2staXNzdWUxNzE3Cis2ODE1OCA3NTM5NTRkMTZlZDIxNjAxMmM0OWQzMDdiM2E5YzBmNzY2YTEyMzg4IGxlZ2FjeS10cnVuaworNjgxNTkgMjY5NmEzOWJjZjBiMDU3OThjMmQyNjVmNTcyMTdhNTVhZjRmZjllNyBsZWdhY3ktdHJ1bmsKKzY4MTYwIGM1MGIxMThlYWYzNDc3OTRiNGYyNGY5ZTk0MjA1ZDVkNjA1MjIzNDYgbGVnYWN5LXRydW5rCis2ODE2MSAzNTViYzEyMmMxNDU2NWNlMjBjZGM5ODk1ZGQwNDAzNjI2NjZkMGIxIGxlZ2FjeS10cnVuaworNjgxNjIgZGU3ZDE2N2I5ZmYxMGRhZjJiZWYzMGE3NzQ1NmY3ZjczYTk4ZTY0NyBsZWdhY3ktdHJ1bmsKKzY4MTYzIDY5YTI0MGU1ZjAxZGNmZjZmMzg0YjUzZGIyYzBjOTlhMjViOGVmYWYgbGVnYWN5LXRydW5rCis2ODE2NCBlMGM2NmJiYjQ4ZGE4M2VjNzUxNDc4MWJmYzJiMWZkZDZhN2MxYjFkIHJlbGVhc2UzMC1tYWludAorNjgxNjUgNDAwY2ZjYWE4ZDQ2ZWU4NWMxMWNiNjFiMDhhNWNlYjA2NmM5OGU0ZiBweTNrCis2ODE2NiBjYTg2YWJlMTU5MjYzOWE3NmUwYmE1ZTliNDczZDVlMmFjODA2MWM2IGxlZ2FjeS10cnVuaworNjgxNjcgZmYxMDY0NTMyNTRhMWRkOWZlOTA1YjU4NTQwYjM2YWYyMzJlMDJkNyBsZWdhY3ktdHJ1bmsKKzY4MTY4IGE1NDljOTI3MDc3NjczZWFkZTk1NGU3OTE4MmVkYjdhN2M5ZjJhNmMgcHkzaworNjgxNjkgYWJiY2U0OGI5YWU0MGE2OWFjYzZlNDI0MWJjOTRkMGEyMjQ0MzYzZiBweTNrCis2ODE3MCBiY2Y0NmYzM2JkOTA1MTZkNzNhYTdhNDliMDAxNGQ4MmU4ZDUwNzYzIHB5M2sKKzY4MTcxIDhlZGRkNjY1ZTliOWZiNmFmZWRkYzRiYjExYmU2YTgzYjJjZjg5MjAgbGVnYWN5LXRydW5rCis2ODE3MiA2MzZhMGFjOTYwN2I3YTNhNDBjYTBmY2JmMzA0NDFiYzEwZTYwMjgwIGxlZ2FjeS10cnVuaworNjgxNzMgMTI5N2JiNzFkYzY0YjE2YzIwODJlNmI3Y2FlMDBhM2E5ZGE5MTdiYSBsZWdhY3ktdHJ1bmsKKzY4MTc0IDY4YzlmOGI2NTg0ZDRiMWVlMWUyZmYwMWEwZjhhN2UxNGMyMGZmYTUgbGVnYWN5LXRydW5rCis2ODE3NSAyMDM4NGViZmM3MTZmMmUwYTlmNGE5MGI2YzdmZWZkMzNkY2U0NGZjIHB5M2sKKzY4MTc2IDA1ODhhOTg3OTNjZDA4NzVmMGU0NWQxZjhlMzBhZjg2YmVhM2FlNjQgbGVnYWN5LXRydW5rCis2ODE3NyBlYjM1OGRhZTBjY2FkOGE1YTU3ZWM3ZGUzNmM4YmYxM2U5NGQ4ZGNmIHJlbGVhc2UyNi1tYWludAorNjgxNzggMGM5NzI4MzcyZDA5OGFmNGNlNGY4OTkxOGIxMzkyMjk2NjkzYzNiNSBweTNrCis2ODE3OSAwMDUyZDIzZDM5ZjYxNWM3NjNlNzM1YzRlNjJhODI4MzQ1NjdkZmI1IGxlZ2FjeS10cnVuaworNjgxODAgMGUzOGM3MGI5Nzc2ZWE3YWMxZGJhZGM1Njk1NTgzMTRmNzdiNTY1ZSByZWxlYXNlMzAtbWFpbnQKKzY4MTgxIDkzMDEzMzk3OWQ3YTI5MWFkMDFjNTIzZTQ4ZmU0MTNlZTAwMDY1ZDQgcHkzaworNjgxODIgYWQ5MjEwNGQ1MDYwN2U3YTczM2M5NWNmZTU2NGVkZTIyYzAxOTRjZiBsZWdhY3ktdHJ1bmsKKzY4MTgzIDk0ZmYzZGUxZTFhNDViZWJmZmI1YzU3OGRkNzBlZDU4MTQ0OTJlMDggcmVsZWFzZTI2LW1haW50Cis2ODE4NCA1ZTE2NDk4OGJkNTFhZWFlZWQzODAxN2E3NTA2OTEyYTQ1M2ZjMzFhIHB5M2sKKzY4MTg1IGQzNjdiZTU0M2Y2Y2U4YWY0MDc2NGIxOWRlNzU2YmM4N2E2MWNkMDQgcmVsZWFzZTMwLW1haW50Cis2ODE4NiA0NDBhZGQ1MTZjZjFlMWI3MTNmZTgwNjk4YmZlZGUyODdkY2NjMTUxIHJlbGVhc2UyNi1tYWludAorNjgxODcgMzZkMDI3MDM3ODEyMzMzMjc4OGZiYjIyM2Q2ZDU4YWMzYWU5MDQ2NSByZWxlYXNlMjYtbWFpbnQKKzY4MTg4IGM0NWZlZDAzZjc0NzVjMmQyYmFjNWNlNDY2YTFlYjMxOGZkY2Q0MjMgcmVsZWFzZTI2LW1haW50Cis2ODE4OSBmYzk0YzljNDJjNmM4MDAwNjM1YTU1ZmM0NmFhNzIwZDhhNDVhMWZiIHJlbGVhc2UzMC1tYWludAorNjgxOTAgZmE1NWZhNDU1NmYwOTkxNGNkYTQxZWM0NjczN2IwZGVkMWIxM2YyOSByZWxlYXNlMjYtbWFpbnQKKzY4MTkxIGMyNzJmY2FjMjRhNGEyNWI1Y2E3NTRkOGZmNzQyNzIwMTViMDc1YjYgbGVnYWN5LXRydW5rCis2ODE5MiBmMmE1ZDc4MjhiODNlNzIwMGI2NDY4MjJhNDYzNjhlOTZhNTkwZjc1IHJlbGVhc2UyNi1tYWludAorNjgxOTMgNzM4ODY2MDkyNmFhMTQ5ZWJhYjFiYWUyYzdjOWNiZjRjNTcwY2U2OCBweTNrCis2ODE5NCAxMzRkMTczYjkzNTBiMmZlNDUzZDE4M2JhZjJmNzVmNGY2NzQwYjY4IHJlbGVhc2UzMC1tYWludAorNjgxOTUgNDI3ZDhiNzY1YTZhMDBiMDA2NzY3NzgwOTA3OTU3YTRjMjJkNTFkYiBsZWdhY3ktdHJ1bmsKKzY4MTk2IGE3ODhkNGYxMGI5NzgzY2U5M2JhZmIyZjVlYTM5YmE0NjJhZmU4MTYgbGVnYWN5LXRydW5rCis2ODE5NyBiOTkxZmU1ZjYzN2E4NWZlYWI4YWEwMDdlNDE5ZTA4ZDUwOTllYzAzIGxlZ2FjeS10cnVuaworNjgxOTggOGU3NzI4Njc2ZjdlODVhYWViYjFkODQ4MjNhMDQ1YmRiODgyNGEwMiBweTNrCis2ODE5OSBhOTJmNzFkNDZkYzRjMWMzMjkwNmMzYjEwNDkyOWU0ZjkxYjYwMmZkIHJlbGVhc2UyNi1tYWludAorNjgyMDAgMjlmNjQwNzdjNDJmODhkMWIwZDU0NWRhOTQ5NTk3ODlhYzE5NzhhNCBweTNrCis2ODIwMSA3OTM0NzIzZjdkYzRmYmRhMTUyNTUzOGJmOTY4Njg5YjhlODZhMTZlIHJlbGVhc2UzMC1tYWludAorNjgyMDIgMjYwNDVlZDBjMjZlMmNjZTFkNmY1YjFjNWZkYjI5MjcwOGY2OTFjZSByZWxlYXNlMzAtbWFpbnQKKzY4MjAzIGVjZjFiYjdiYWViMWVjNzZmODk4ODA1NTA1NjQ4ZmMwMzM4ODQ1YTEgbGVnYWN5LXRydW5rCis2ODIwNCA0ZDFhNjhiZDgwNzZjMGM2ZTM0NjVmNjI3ZTMyOWYxZjk2OWVlOGQxIHB5M2sKKzY4MjA1IDI1M2Y5ZTZlOWUwNzk5NzU0NGE5NTQxNTBhMDJkYWQ0Y2NlMDc0ODMgcHkzaworNjgyMDYgMTBjYzUzZTcxYjIxMjNkNTQ3OWQ4ZjBjZDM2ZmM3NjRjZTBiZWU1YiBweTNrCis2ODIwNyA5YTQyNWViMGY3ZWE1NGFiNGU0ODBjZGQzYzIzN2Y5M2IwNjE0ZjVmIHJlbGVhc2UzMC1tYWludAorNjgyMDggN2E2ZTNiYzYwYmE2ZGUxMjdiY2VlOTQ0YjEzMTYzZjgzOTQwNjYzOCBsZWdhY3ktdHJ1bmsKKzY4MjA5IGU3OGRjZDg3ZDczM2Y2ZjdiMjRhYjFhNjU5ZTY1MDk0NGViY2VmZGYgbGVnYWN5LXRydW5rCis2ODIxMCBhYTQ2Nzg3YjkzY2M2NTFhOGRmMjM3MjdhYjEwYzRlMWM3YTM0YzRmIGxlZ2FjeS10cnVuaworNjgyMTEgMTA0MDA1ZDA3ZWE1MTkwZTNkMjIwNmUyNjc2ZTBkNzUyYWEyZTc1MSBweTNrCis2ODIxMiA4NDVmYTdkMzY2NDIwOTBjMjQxOTBkNDQyZWI4N2U5MmExZWQzMDg1IHB5M2sKKzY4MjEzIGRlMjc3MTA3MGQ4NTJiMmM4M2MzNmZkOGU3OWQ2ZGY1M2YwYTg2NjUgcmVsZWFzZTMwLW1haW50Cis2ODIxNCA2ZTRkNmQzOTA1YTc5ZGYxYWU3M2Y3MmRiZDUyMTM1YjEwZmZiZDlmIGxlZ2FjeS10cnVuaworNjgyMTUgNjA4NTRiZGJjZjFlNWFmNzkwYzg4YTMxYjM2Yzk1MzU5ZjEzZjU1NSBsZWdhY3ktdHJ1bmsKKzY4MjE2IGIwNjZmYmI2YThiYzI5ZmFiZDFlZjhiNzY2OWY3NzVjZGY5NTk4Y2IgcHkzaworNjgyMTcgYzc1NzIwYzNlMTZlZTAyODNlYjFkNTgyYTQzMWQyMjMwYWNjNjJhMCBsZWdhY3ktdHJ1bmsKKzY4MjE4IDZlZmMxZGUzNDVmNWM5MTc3ZTQwNWRhYzdmNjc1YjFlYjc5ZTFkMjMgbGVnYWN5LXRydW5rCis2ODIxOSBmYjA5ODJjMzIxN2U0NTgwNDc3MmFjNmJkZjMzZmFmMDVmODNmYjNkIGxlZ2FjeS10cnVuaworNjgyMjAgYzUyMTc3ZjM2ODUyNzY0MGU3ZjIyOTliY2NkNTk4NDEwZGYyNjE5YyBsZWdhY3ktdHJ1bmsKKzY4MjIxIDdmYjQzMWZhNDk0NjAxODViOTQ3YjVkODVmZmMwMDc0NzY3MDcwYzIgbGVnYWN5LXRydW5rCis2ODIyMiA5ODkzMTRkN2NjNWVmYjJkZmNlZmI1NmMyY2VjMjRiYjk0Y2FiNTM5IGxlZ2FjeS10cnVuaworNjgyMjMgYzkxODRmNTA3MzRmYmI5NzRiZTM4MmYxMmM5MmFkYjgxNDU4MWNlMSBweTNrCis2ODIyNCA1YWIzMDYzY2FmNGMwODg3ODg0NDc2Zjg3YWRjZTJmNDIzMzExOTI2IHB5M2sKKzY4MjI1IDVmMjQ3NWZlNTIzOTk1MzNjZTBkZTRiYzIzOWYzZWVlNmMyMjM0NDYgcHkzaworNjgyMjYgYzNkM2I3NjBkOGJmYjBlZjUzMWEzNjRhY2Q2NzE3ZGQyODhiM2UxYiBweTNrCis2ODIyNyAwZTA1YjZjYTZhZmQzYmE3YzU5MWZhNDQ0ODBmODQ0NTY3MTdmZGNkIHB5M2sKKzY4MjI4IGU0NzliODZkYTExZGU2NGFlZDhlYzg5NGQxZmQ4OTAzNjMyZWYzMzggcHkzaworNjgyMjkgODNlZmMyNDY3ZmFmMzQ3Yjc2NmIzOTNjMWYxNDg5MjYzMmViZTk4YSBweTNrCis2ODIzMCAwNzJkZWRlZTc3ZmE2ZGQ0ODQ1Njk2N2FmNTcwZjY5YWE5OGM5YjI5IHJlbGVhc2UzMC1tYWludAorNjgyMzEgY2RkNWZhMDVjMTRkMDA5NTM2NzBlZmQ4YjYyNGU0MGJkZTg5OTlhZiBsZWdhY3ktdHJ1bmsKKzY4MjMyIDI0YTA5MzdkNzYyNDM0YmIzY2VkYjA4NDFiZjE5MWIwZDNiODk1NzcgbGVnYWN5LXRydW5rCis2ODIzMyBhZWU1NWNhMDRjOGZhMzAxZjgyZTVjZmE1ZjI0MTQyOTdlYTk1YWNmIHB5M2sKKzY4MjM0IGVlOWNlZDkyODQzYTdhNTk5MjI3ZGQ4ZTZiMDEzYTMwYWMzYTExNjkgcmVsZWFzZTI2LW1haW50Cis2ODIzNSA3MTNhM2EzOGY5NzVjYTFjNDM5ZDcyYTk1YjUxODY1ZWRiMDI3MGI1IHJlbGVhc2UyNi1tYWludAorNjgyMzYgZjg4NWM3NmYxZTk1NTEyMjZkODJlZDkyMzU0OTc2OWI3NzJkYzJkNSByZWxlYXNlMjYtbWFpbnQKKzY4MjM3IGRkYjczYTRkZmMyMDRkNTM5YjQwZGQ4YjZiOWRjZDE5MWY1OWM4ZmYgcHkzaworNjgyMzggNmRmM2QwOGI4OWU0NTBkYWQxNGE5YTIwODk5N2JlZWZiZmZmY2I2MSBsZWdhY3ktdHJ1bmsKKzY4MjM5IDIxZDdlOWU4NzU5MWM3Mjk1MzVmYjcxNWQyMDY5NmZhZGYxZDE3OGYgcmVsZWFzZTMwLW1haW50Cis2ODI0MCBiNTYzOWQyNDVhZDUzNTQ3OWQ3MTVhMjMzYmIwM2Q2MGE5ZTA0NGVmIGxlZ2FjeS10cnVuaworNjgyNDEgNzNkZWQ5NGZiOGJlYWIzOTg4MTg3ZGQ4MWEzMTM2YzY3Y2M5Yzc1NCBweTNrCis2ODI0MiA5MWNmOWVkNDZiNzIzMmUzNTVlMGNkOTk1YjhlMzk0NzA1Y2Y4Nzg5IHB5M2sKKzY4MjQzIGQzYzdlOWQ5YWRhN2MwNzIzYjNiMDBjODI2NTM1NjY3ZTQzMmQxZDcgbGVnYWN5LXRydW5rCis2ODI0NCA2YzhlZDY2NzQzMjg5MmYyNzNjNzhlODY1NWUzZjY3YWIxYWY4MTNkIHJlbGVhc2UzMC1tYWludAorNjgyNDUgYWYyMGRkMTljYzBkOTk4MDdmM2JhZjBlYjM0NWY5YWViOTUyYWEwZSBweTNrCis2ODI0NiA5MWE5MjMzOTczNDc4MzhlOWYyYTAwZDFiOTBjZTcxNThhOGEwZjZmIHB5M2sKKzY4MjQ3IGQwOTE0MzAwZTEyZWJjNWE4ZWUwZjRkZDRhNzVjZGJjNWE2YWYyZjkgcHkzaworNjgyNDggOGFhMTk1MzBmOWYyMjhmOWU4M2RiMjU2MzM5MmRiY2NhMjhkODI3NCBweTNrCis2ODI0OSA0NTBlY2JiNTZjN2I1MGViOTJhOGNlNmY5YzYyNTFlNzI3YjY4MzA0IHB5M2sKKzY4MjUwIDI4MzIxZGJkZmRjMGMwNmJkMzhlM2ExYjM4YTBkNjQ0NjAyMzQwZjkgcmVsZWFzZTMwLW1haW50Cis2ODI1MSA5NjE4ODAzMWIxYjU5NzZiYjdlYTBlNjg5ZTY0YzAzZjk0YmY3MmYxIHJlbGVhc2UzMC1tYWludAorNjgyNTIgNDIyOWE0YjE0ZjFkODkzYzM0YjdhMWQxOTY3NDI0NGM2MjhjMzkwOCByZWxlYXNlMzAtbWFpbnQKKzY4MjUzIDc4MjU3OGM5MmUxZDNhYmMxMjEwY2Y2ZTdkZjAzZTA5NWY2NmEzOTIgcmVsZWFzZTMwLW1haW50Cis2ODI1NCA1ZWJmODI2ODlkMzZiNGU1ZTkzNDg5ZThhNjY1NzE4M2Y2OWJjOTdjIHJlbGVhc2UzMC1tYWludAorNjgyNTUgZmQ0ZGE4NTVkNjAzZjVmN2Y1ODU0MzNlMWQ1NDMxYTI5MmU4NTJmMCByZWxlYXNlMzAtbWFpbnQKKzY4MjU2IGM5ZTVjMWZhMjg1ZTgzYWQ1Yzk1ZGU2YjBjYmI2NTgyODczNGY0MDYgcmVsZWFzZTMwLW1haW50Cis2ODI1NyBlODBjODA2Y2UwMmI0NjQ0MGZiMzJjYzAxMzI5NDgzOWIxODVlMDMzIHJlbGVhc2UzMC1tYWludAorNjgyNTggNDQzODdmMWEyOGEyMGI0NjY5ZTA1ZjIwZmYzNzg4ZWRkNzRiNzVjYyByZWxlYXNlMzAtbWFpbnQKKzY4MjU5IDkxZjJmYmEwMmE1MDIyMjg5ZjdkZTk2YjJhNjJlMWQyMjg0ODBmZDEgcmVsZWFzZTMwLW1haW50Cis2ODI2MCA4MWM0OWJhN2JjY2Y3Nzc5NjYyMmQxOTM1OTc0MjJjZWUyMmM0ZTU0IHJlbGVhc2UzMC1tYWludAorNjgyNjEgZmFkZjc4ZjVmOGFkMzZlZGU2MzVlNmJhNTRmYzQ4OWU5MTM1ZTI4OSByZWxlYXNlMzAtbWFpbnQKKzY4MjYyIGRiNDY0NDI2YTM2NTM3MjE3OWZiZDc4YmQwY2M5ZWNkN2I4ZDI2ZTMgcmVsZWFzZTMwLW1haW50Cis2ODI2MyAyNGIxOGU4N2Q2NjQ4OTE5MDg1MjQxNWExNzczMDNhMjUxNDU2MThkIHJlbGVhc2UzMC1tYWludAorNjgyNjQgMTU0ODM2MWJmZDJmM2JiNmY4NWVlZjVjNzY0MzdmZDFkOGNmMDUzZSByZWxlYXNlMzAtbWFpbnQKKzY4MjY1IGJhZGI0NzFkYmFlYmUwMWE4NWNjNDAwZDdjM2Q0MDQ5MjRlMWRmMzAgcmVsZWFzZTMwLW1haW50Cis2ODI2NiAyNzlhNTEwMDY4ODUwMGVkYjcyZGViOTdlMjcyODg2MTcxNzMxNTljIHJlbGVhc2UzMC1tYWludAorNjgyNjcgMDQ3ZGYwYTVmMTc0MzYwNGM2NjVmMjRhMjUxOTM2MGE1YWZjYmE5NyByZWxlYXNlMzAtbWFpbnQKKzY4MjY4IDVhNWIwYjJkMDFiOTNlYzlmYmE1NTFlMGYwNzViYzE1MjE5NjY2NDYgcmVsZWFzZTMwLW1haW50Cis2ODI2OSBiZDBlMzYxYmQ2NDIxNTFiN2IyMTIyYTVjY2MzMzgzOTVkOTc2YTMyIHJlbGVhc2UzMC1tYWludAorNjgyNzAgZmJmN2Y1M2Y0ODg4ZDI5MmY4YjFlZTQxMTEyY2I3Y2VjNzFhYTg1MSByZWxlYXNlMzAtbWFpbnQKKzY4MjcxIDZmMzBiOTcxNDhiNjU5YzA2ZGUzNDFhNDYwNGU4ZDE3NzI0MTNlM2UgcmVsZWFzZTMwLW1haW50Cis2ODI3MiA4NTFjMmYwNGY5NWQ1YWViYTQ5MGY3MGRjYTM5YzBjN2FmZmFiYWZhIHJlbGVhc2UzMC1tYWludAorNjgyNzMgYjk2ZDYxNjg4Yjg3Y2YwM2U0MDRmMDNlYTU0MTJlYjVlOGQ3ZGFmNSByZWxlYXNlMzAtbWFpbnQKKzY4Mjc0IGE2ZWUyZmY0ZGU0ZDg3M2ZmMjVmODE1NzFhMjZjMmRmNzA4YmYwZWYgcmVsZWFzZTMwLW1haW50Cis2ODI3NSA5M2NmM2E2ZWFkNjM5OGNlYWNkNDU1M2Q5NzUyNjk3NGVlMmFlMWQ1IHJlbGVhc2UzMC1tYWludAorNjgyNzYgMDViZjcwMDJlYzk0MjY1MTIwNzNhNTgzNDFhYzhlNzE2ZWIyNWVmOSBsZWdhY3ktdHJ1bmsKKzY4Mjc3IGFmYWMwY2FiYzNhZDIwNzIzNTA2YjFiYzE2MTZmOWI1ODFkOTNmYjMgcmVsZWFzZTMwLW1haW50Cis2ODI3OCBlYTdlMzA3ZGRkNTFhZjM1NGYxODUzY2JiMmE0MThjNzEwZGQzM2QyIHJlbGVhc2UzMC1tYWludAorNjgyNzkgN2FjMWY2YmU4YWQ1NTUyYjM1Nzc2MzVlNjhhNTc4OWQxYTVlMzZkNyByZWxlYXNlMjYtbWFpbnQKKzY4MjgwIGZiOTA1ODkwZDA0OWFhMzNhNDVlZWRjYzQ2NjkzMzQ1ODNkZjI3ZWQgcmVsZWFzZTMwLW1haW50Cis2ODI4MSA4YjJjMWEwYTlhMmI4MTM4ZTQwNWUxNmRlNTlhNWJhZjg4NzdmOTc1IHJlbGVhc2UzMC1tYWludAorNjgyODIgMjJiMTFjMjJjZWY4NDU5Nzk5ZGQyYjY2YTExZjA1M2YzYzc0N2RkZCByZWxlYXNlMzAtbWFpbnQKKzY4MjgzIDNiMDg2NzRiOWI0ODNmNzdjMjcwNjkyNGU2ZmY3ZjllMjk5ZGU0ZjggcmVsZWFzZTMwLW1haW50Cis2ODI4NCAxZWE1MDEzZDlkYWUwZjEyMTU0MzkyYzUzN2VkODFjNzAzM2E3MTQxIHJlbGVhc2UzMC1tYWludAorNjgyODUgOWVjOTlmZGY4MDRmMTgzNDc4MTViZGNkODA2YjAyNGNmNmRmNDY5NyBweTNrCis2ODI4NiA5NDAzZGVmYjY5ZmIxOWJmOWJkYjQyNTFmNTVmMTFlM2FmZjRmZmNkIHJlbGVhc2UzMC1tYWludAorNjgyODcgMWNhOGM2ODU5YTA3ODU0ODM1ZDlhYjdjY2U0NmNiMTU3NDVhNTQxYSByZWxlYXNlMzAtbWFpbnQKKzY4Mjg4IGJhZWRiMDY5ZTQyNTZiYWIzNDk2M2I5ZDdkNDc0NjQyZWQwYjRhZWMgbGVnYWN5LXRydW5rCis2ODI4OSA1MzY3OTg1OThhZjA4OGQzYTQwOTAzMDQ5ZmU5ZjI1ZTFlZGM4ZDlkIGxlZ2FjeS10cnVuaworNjgyOTAgZDQxYTg2ODc1MzMyYTc2YTQwYTNjZTBiNTBmZDdiNjIwY2Q4Yzc1NyBsZWdhY3ktdHJ1bmsKKzY4MjkxIDU0YTVhZmZiNmFmMDE4NTg2ODQ1ZWI3NjNlNWVmMzU0ZWEzY2M1OGIgbGVnYWN5LXRydW5rCis2ODI5MiBmNGVlMDAwNmVlMzkyZjRlZTY1MGNjZTM4ZDNiMjc1NzU3M2Y3NGYwIGxlZ2FjeS10cnVuaworNjgyOTMgZGEzNGYwMjY2NGVkYzlkNTIxODIwYzdmODVkNzc2MDlhYzBlOTJhNSBsZWdhY3ktdHJ1bmsKKzY4Mjk0IDA1N2NiNDZkZGFhZDdhOWU3MjM5Njg5NDk1OTM1Yjc0ZDc2ODkwZjQgcmVsZWFzZTI2LW1haW50Cis2ODI5NiBmODU0MzczYTY2ZTU1YmZkM2EyMjVhMzQ5MDdlYTc3NDI5NzYyZTliIGxlZ2FjeS10cnVuaworNjgyOTkgM2E1NDBlZDc5NWQzYjA2OGY4NDYyZjA1NzBhOTBjYTkyNWM0ZTEwOSBsZWdhY3ktdHJ1bmsKKzY4MzAwIGZhYzkzNTBiNDM3ZGM5ZGQxYzhmZTc1OWUxM2MzZjQ2ZWVlZTFhODYgcHkzaworNjgzMDEgMTE0NmI3YjBkNTE4YjNjNzllNTYzMWNjNmYxNWYyY2JlMmY2ZWFhMCBweTNrCis2ODMwMiA1ODRiMjYzYjk4ZGE2NGE0Yjc3YmI5NjNkNTY4NjlmNTRkNDgzYTQzIGxlZ2FjeS10cnVuaworNjgzMDMgOWQ1MDYzYjQxMWU4Nzk1NmI0M2Y3M2U2MzAxMzhkMGU5ZTUwY2NmYyBweTNrCis2ODMwNCBlMThmMzIyYjkzMWU3OTA2NDIxNTFiYjQ0ZTRhYzMwOTY4YzFmOTNjIGxlZ2FjeS10cnVuaworNjgzMDUgNmU0ZGRlMmU5NWY3ZDNjNDBkMTk3ZjllMGVmZjE0MWVjOGI0ZWZlMyBweTNrCis2ODMwOSAxM2YxODU3ZGQ5YmY1ZGE4ZTRlZmVmYmE4YTFmYzRmODM1MjhkYTU0IHB5M2sKKzY4MzEwIGMyNWU1YjYyMGE0Y2YyNDgxNzczZjhlMjc2NWExMDcxYTU4ZjRmOWIgcmVsZWFzZTMwLW1haW50Cis2ODMxMSA5MmNkMzU1MWZhMTMxYjc5OWM3YTFmNGY4NTYyMzdjNDU3Y2IzYjBkIGxlZ2FjeS10cnVuaworNjgzMTIgYmM5ZjgwZGRiYmUyNWY1MmY4YTc4Y2QwZmE3MDc1Yjc3OWU0NWUxMyBsZWdhY3ktdHJ1bmsKKzY4MzE0IDJjYWZlOTg5MTE3YTMzZGU3OTJkOTM2MjA2YzE4NzE0ZTg2MjZiNWQgbGVnYWN5LXRydW5rCis2ODMxNSA0NzQ3NDViN2ExMmE2Y2E5ZWU2NTJlNzlhMDIwYzNmY2VlMjhmMzg4IHB5M2sKKzY4MzE2IDQwYmEyYTEyNTNmYTRiZDRlMTQ2YjA1MGRmYTRmZDAwMzFjMGRlOTMgcHkzaworNjgzMTcgMDlhNDk4ZWIxODIwNTVkZWM2YjRmODZmNDNlYmJhNWRiNWIzNWI5NyBsZWdhY3ktdHJ1bmsKKzY4MzE4IGZkMGJiNjhhZDVjOGJjMWNmODUyMzg4ZjMzYzM4ODQ5MTdiYzNkOTggbGVnYWN5LXRydW5rCis2ODMxOSA5ZGUyMWU2MTU1NzdlOGZjNGIwZmI4YjA2NDJjOGFmNTMzOTE0OGQzIGxlZ2FjeS10cnVuaworNjgzMjAgMmJlNDkwYWJmMzMzM2MyMDEzOTUzZTQzNGU0NTY3MWE1N2U1NDdiZiByZWxlYXNlMjYtbWFpbnQKKzY4MzIxIDU0MzZlNTM0ZGE2ZTRhMzc4ZjljOGE3M2FkZmQyMzlkNjIxMjBkNzMgcHkzaworNjgzMjIgZGRhZWM0N2U2ZGQ5OWE2ZTFiNWZlMzQyYTA0ZWY1ZjEwYzhlOTljZSByZWxlYXNlMzAtbWFpbnQKKzY4MzIzIDZhNmYxMzhkNDE2MmNmMDBiZDQ3MmU1MjIwNTkzOGZkNzc2YmFiZjUgcHkzaworNjgzMjUgMTVjNGM5ZTMzMGU5MjBmYjZiMjUwMTMwMDRhODA5M2QzN2NjOWVlOSBsZWdhY3ktdHJ1bmsKKzY4MzI2IDg2ODVlNTg1NWE0Nzk3Mzk4ODY2MDM1NzA5MDIxNWM3OTk3ZGY3ODcgbGVnYWN5LXRydW5rCis2ODMyNyBlMTcxY2Q1M2FjNGI2ZWQ3NTc4Nzc3ZDQ2ZTFiOTliZGUwZTNjNzExIHB5M2sKKzY4MzM4IDc1OGQ4ZmI3YmQ5OTA4OTc1Mjg5NDM1OTFmOTUzY2MyYzZmYTNmMTAgbGVnYWN5LXRydW5rCis2ODMzOSA5MTc0ODk1OTcyY2IwOTFjMTMwOGRlNTQ1YWJkZjg2YzAxNjUyMmY0IHJlbGVhc2UyNi1tYWludAorNjgzNDEgNmQ5YjAzMzFkMDczYTNlZWY1NmViNTE1YjE5NmMwODQ2MjAwMGRlOSBweTNrCis2ODM0MiAyNTVlNjRhMTM3NTUxZGI1YWI2ODYwNmVhZmI1YTMyYjRhNWQ2ZTVkIHB5M2sKKzY4MzQzIDY0ZjkxZmYyNGZlNmMyNDgwMWM5MWRmMTM1ZjlmYjY5Y2NkMGMxNDAgcmVsZWFzZTI2LW1haW50Cis2ODM0NCA3MjdlZTE2NjUyMTlkZGM3ZGYyNmZlM2RhOTkxYTA0YTEyYzhmZmZkIGxlZ2FjeS10cnVuaworNjgzNDUgZTRhY2YwNzliNTA4ZGMwMTI1MWY0ZGM0NDlkOWI4ZmMyNjZhZWNhYiByZWxlYXNlMzAtbWFpbnQKKzY4MzU5IDQ1YWVmNTNmNWM3MWFjNGIzY2I4OTBkNDFjMWI5NzQ3MGNhODkyODAgcHkzaworNjgzNjAgZmMwMDAwNjgyYmZlN2MwZWQ0ZGZjMzAzN2U4MDBiMjBjMWU1YjAyYSBsZWdhY3ktdHJ1bmsKKzY4MzYxIGJlOWIxNWJmNjgyODMxY2FmYzM5NWFiMzgyNmJiNmQ0MTA5MWM2ZjcgbGVnYWN5LXRydW5rCis2ODM2MiA2MTcxOTk3NjliZDM4NGI1MTg0YmM0NmEyODY0ZTcxOGY5OGEyM2Y2IHJlbGVhc2UyNi1tYWludAorNjgzNjMgMmZmOTkxMGYxNTI2Yzg5MzQ3MjA0ZGJkOTcyMzliYWUwZTYxY2QyZCBweTNrCis2ODM2NCBlOTg3ZTBkZjhmNDhmNDEwMDU5MmE2NjdhNDIzMjJlZWI2ZmU2NDU1IHJlbGVhc2UzMC1tYWludAorNjgzNzMgODkzM2RlYmI5MzA4ZWI3MDQ4ZDc1NzVjZjRjMzQwNjAyYmNlOGQ2ZCBsZWdhY3ktdHJ1bmsKKzY4Mzc0IGE0YWY1ZTZmNmIxN2MzOTI0NmE3OWU2ZDRmZTQwZWUxM2U3OGZlNjkgcmVsZWFzZTI2LW1haW50Cis2ODM3NSA4MWQyMzY4NGY2OTRkZTExMTQzYWNmMmFmYjkxMjI3ODEzOWZlZTU0IHB5M2sKKzY4Mzc2IDAyNzZiOGZkZGRhN2Q1ZDU5NGZiMjBjNjdhYzgzY2RhNWE0OTBiODYgcmVsZWFzZTMwLW1haW50Cis2ODM3OCA4YTVhOTU5MTEwMGRlNzE3NGZhYTc4ZjM0MzcxNmU1Nzg1Y2Y0MjVjIGxlZ2FjeS10cnVuaworNjgzNzkgZmVkMmFlMWU1MGMyZmQ1NWY5NzMzMTQ5ZjVmOTE5YmFhNjgxNTk0MiBweTNrCis2ODM4MSBmMGUwYzM1MzZlMjI3MjUyYTA0M2U5MTlkOTMzZDJmNTY3MDIzMTFhIGxlZ2FjeS10cnVuaworNjgzODggNDRmMTRmZDRkOWMyNzMxMzkyZmI4ZDJlNTJjYWNlMmI1NmU4MGQ0OCBsZWdhY3ktdHJ1bmsKKzY4MzkzIDVhYzhmMGI1YTU5YmZjYzU3ZGU5ZDNlYTk0NmFjOTdlM2FmMGNhZTAgbGVnYWN5LXRydW5rCis2ODM5NCAwYjhkMmNmM2Y1NWI0MmIzYjg4NjY0OThlZDQ5YjM5NDhjZDJmYWRmIHJlbGVhc2UyNi1tYWludAorNjgzOTUgNzZmYTFkZTI3NDJhOThhMTI3ZjEyNjM4ZmE3M2YxOTI2YWM5YmE4NiBsZWdhY3ktdHJ1bmsKKzY4NDAxIGEyMjljYTNhMTJhZTJjNDZkYThkYWQxNzk0ZWI3ZTVjODMxYmVmOTMgcHkzaworNjg0MDIgZTZhMjk3OTBkNzVhZTBiYTdjZWZlMzdkZTM2Nzg0YWYzYTVkZGRjMiByZWxlYXNlMzAtbWFpbnQKKzY4NDA5IGFkYzQzMGMxNmI1N2I2YTc2YjdkY2NjOTc3NTE5ZGQ1Zjk2YTVhYWQgcHkzaworNjg0MTAgZmZmZDEwYzEyYTFiNzcyMzlmYjZiZTJlNzZlMmZkNzFkMWRjMmUxMyByZWxlYXNlMzAtbWFpbnQKKzY4NDExIGY5ZjVkOTA0N2EwNTQxZmExNmZmYjVlYzM2NDA1ZjBhZGE1NzhhYzcgcHkzaworNjg0MTUgYTNmMzI5ZjIzYjIzNmUzMzE1MzE4NjRkNTkxYWQzMjZiZmM3OTg2NCBsZWdhY3ktdHJ1bmsKKzY4NDE2IGVhNDMxOTQzYThkZTUyNjE3YmM1YTU1YTU3NjJlZDdhMDlmODNkNDUgcmVsZWFzZTI2LW1haW50Cis2ODQxNyA1ODlmNjg0NGQ4ZTBlYzNhYWVmMTlkMmM5YjYyNjlkMjJiMTI2NDQzIHB5M2sKKzY4NDE4IDM2OGRmMDA2MDc0MGM3MjYwMTcyMzI4Y2IzMjI2MDA4Y2MyNmY5OWQgcmVsZWFzZTMwLW1haW50Cis2ODQyMyBlZDNmZGJmMTA3NzU1NmYyZDAyZWRmZmM1ZmE1NTE1ZjE0Y2FkODA3IGxlZ2FjeS10cnVuaworNjg0MjQgZWRlYjkwMzhjNDA1YjExNDcwNGMzNWE0ODExNDk5M2QxNmZmMzQxYiBsZWdhY3ktdHJ1bmsKKzY4NDI1IGQ5N2FhOTQzYmViYjU1ZDM1OGNiMmFjMDYyOWFlOWM5MjgzMmYyZTMgbGVnYWN5LXRydW5rCis2ODQyNiBkOGI2NGM2NzZiY2IxZGU1ZjYyNTRmZDNjMWEzNjUzOGJjNzAyZWRiIGxlZ2FjeS10cnVuaworNjg0MjcgNWYyOTJkZWJkMjRjMzU0ZDI1Yjg2M2U4Nzk3YTExNzEwMTQ1OTVkYiBweTNrCis2ODQyOCBlNDk2ZmRiOTI3ZmE2MmQwNDgzYTMzOTVkZTFlZTU3OGY3YzA3NWI1IHJlbGVhc2UyNi1tYWludAorNjg0MjkgNWM2MjQ0ZDIxN2ZmMTFiOTczZGM4ZDViNGQwYmIwOGU3ZDljZWQ0OCBsZWdhY3ktdHJ1bmsKKzY4NDMwIDY5YTJhNGRiZDliNGY0ZGE0ZjQwNmQ1YWFkYzQ2NjZkYmMyMmFmZGUgbGVnYWN5LXRydW5rCis2ODQzMSA3MmZlNTFkNmY4MDBiY2U3N2NjNmM0NGM4OTFmMzcwMTBiYjNjMWJhIHJlbGVhc2UzMC1tYWludAorNjg0MzIgZWYzYTFlY2Q0NjYzZmU2NTRlMjkyZWEwMzFlMWY3NmY4YTU4OGVhYyBsZWdhY3ktdHJ1bmsKKzY4NDMzIGUzYzIxMjc5OTcwNmU2NmZhYzczYzc5YmEwZjRhM2VkMzAxNjBjZjkgcHkzaworNjg0MzQgNDgwZmNkZDgyMDE2MjA5ZGQ3Mjk5YWY1MzBlNGMzZGZlYjRmYWFjMyBweTNrCis2ODQzNSAzNjY4NmQ0ZDdlNzI3NWJjMjQ2MWYxMDE5ZjU2MjEyMDYyYWIzZDMyIGxlZ2FjeS10cnVuaworNjg0MzYgM2I5MzM1ODU1NDcxOTZhZWMwNDAxMDY2MTBhOGQ1ODE2NmMxMzAyZiBweTNrCis2ODQzNyAwYTY2ZTFkYzMwZjIyMzU2OTgzN2E3ZDFlZTlhMjhhNzQyZmQ1MjY4IHJlbGVhc2UyNi1tYWludAorNjg0MzggYzdjMzQ0YjYzZWNjZWJmNjMyNzNmYzhlMmFhN2I1YTgxZDkxZWVkOSBweTNrCis2ODQzOSA3Yjg2ZDZjYWMyYjE4NWUxYzU2MDFlNzdkYWUxZTA4MTZiMDc0MTRhIGxlZ2FjeS10cnVuaworNjg0NDAgZjEyN2JjYjBhYTcxMjI1ZmZiNGM1YWJkNzZhODNmZjhjZGYyNDVmNyBweTNrCis2ODQ0MSA5ZjA0MWJhM2U0YzkxZmMzM2YzY2EzOTJmN2YxMjcyYTA4OGRjNTYyIHJlbGVhc2UyNi1tYWludAorNjg0NDIgOWQwOTNlZjg5YzU2MDc1YmVmMGRjMGJkNTJmMGM2Yjg4N2U4ZDM1YiByZWxlYXNlMzAtbWFpbnQKKzY4NDQzIGNlMzczMzEzOWZhYzgwM2VmYTg0YTQ0ZGJlYjMzYjIzM2I2MTRhOWMgcHkzaworNjg0NDQgYzk0ZjAyNzlmZWRlOTc3YjI0Nzk1NjNkY2Q3MDk2Njc3MTU0NTFhNCByZWxlYXNlMzAtbWFpbnQKKzY4NDQ1IGNjZDk1YjFhYWRlOWQ0Yzk4ZGFjOTA1YzczM2E1OGYyZTRlYmFjMDkgcHkzaworNjg0NTAgYjczYmQ1YTc0YTI3ODgzN2JjMmEwMjI5N2NmODQyM2VmMTM0M2EzOSBsZWdhY3ktdHJ1bmsKKzY4NDUxIGJjMzBlMzk1YWExNGFkZWYwMDIzZDEwMjAzZTE1MzZkMzIwY2VjZGUgcHkzaworNjg0NTIgYjk4ZmU4ZGM4YWNkNmExMDQ1MGJkOWQzYWY4NjQxZDNlYWNmMDQyMSByZWxlYXNlMzAtbWFpbnQKKzY4NDUzIDM4ODZlNGM4OGZhNTk2ZDkwZTI0ODBiM2UxMjg1ZTMyYTAwNWJlZTAgcHkzaworNjg0NTQgOGM0OWZmMGNlMTdhZjM2ZWU4ZDBiODk0YTAyMjJkMjg0ODI0M2YxMSBweTNrCis2ODQ1NSBmZGNjYTg3OTNlYjlmN2UyNTExODEwZmIyZTEwMGNlZTYwNDE3OTg1IGxlZ2FjeS10cnVuaworNjg0NTYgOWIyNzZjZTM1Njk3YjI1NmE5Y2JlM2FmOWY5MTUwYThhNGVjNTFhNiByZWxlYXNlMzAtbWFpbnQKKzY4NDU3IGNhMDk4ZmMxOGVjNjA5ODAzNGJlMmU0ZjE0ZTRmMjc4NzhkOWJlNmEgbGVnYWN5LXRydW5rCis2ODQ1OCAwN2JiYzJlMjBhYTRiNTAyZmExZDc2NjQ1YTJlZTNmZTJkODkzMmE1IGxlZ2FjeS10cnVuaworNjg0NTkgZjFjYTVkZDU5YWNhODI2NGViOGJjNmI5NWUyMDk5NzE4MWMzOWI2MCBsZWdhY3ktdHJ1bmsKKzY4NDYwIGM4Zjc5M2UxNTliYmJiZTk3NWU3ZDBkYTQ2ZDliODg4YTAwNDliZTQgbGVnYWN5LXRydW5rCis2ODQ2MSBlNmY1NWM5ZWMzZDAxNGFmZTk0YzA4Yjc3NzgxNjNkNmRmMjRlZDdlIGxlZ2FjeS10cnVuaworNjg0NjIgNzkyNzYzMTZiOTRiMzhmM2RlZWFhOGIwMzcwMTNiOTNjYjYwYTVlYiBsZWdhY3ktdHJ1bmsKKzY4NDYzIDYyY2EyY2NjZGI2ZmMyMGVhMzMzYWY1ODc0ZGJmZmM4Yzg1MDY5MGUgcHkzaworNjg0NjQgOWMyYmQ2NDdiNjQ2NGViNjY1ZGRjMDIyOGU1NzAxMTFhNjU1N2I1OCByZWxlYXNlMzAtbWFpbnQKKzY4NDY1IDVkMGVhYzAxYTI4NWQ5OGVhMzgyZGE5NzAyNWI2NjVhYWYzYzMwM2QgcHkzaworNjg0NjYgYmM2NzBhOGRmNDRiYjJhMzhhMjQxYTQyM2U5ZjJiMTcyMzZkZDk2YiByZWxlYXNlMzAtbWFpbnQKKzY4NDY3IDkxZTM4NTFjOGNjN2NhMjI0M2E5NDU4NTFkYzVlNTZhYjM2NmEwYTEgcHkzaworNjg0NjggZTAwYjMyNDc0OWIwNGUyOTYzNWNiYjFjYWY2ZjAyNDkxMjJmMGM0NCBsZWdhY3ktdHJ1bmsKKzY4NDY5IDhhZjUxY2ZkZDVlOTBjMTA1MTEzMWM1MGExMmRkNTU3YzdkZjJhNDUgbGVnYWN5LXRydW5rCis2ODQ3MCAxZTA3MGI4M2NmYTk0YjcwYTUzZTRjMmIwMWI5NzkwNjc5MWQ5ZTU5IGxlZ2FjeS10cnVuaworNjg0NzEgOTM3ZjUwMGUwZjA2ZDA4MDdmZTRlMDVlMWQwYjdlM2YyYTdjZGFiZSByZWxlYXNlMjYtbWFpbnQKKzY4NDcyIGQ0NDgzZmVjZDY4NzNjMGVjYzQwNzRkNDMwZGYzNmVkOGY0YWZmYWIgcmVsZWFzZTI2LW1haW50Cis2ODQ3MyBjMzRkNzIxYzJkYzcyNDYyOWIyYWI1MWJmMTA1NTIzM2Q2NTAyNDU2IHJlbGVhc2UyNi1tYWludAorNjg0NzQgNjM4ZTMwOWVjYzk4YWU4MWEwYWRiN2Q1NzY1MGJkMDM5MGU4NWM2ZSBweTNrCis2ODQ3NSBhMGZmOTAwN2MyYWEzZTc4OGJjOTM0MDJkNTU0ODhlZWUwNmJmYzU5IHB5M2sKKzY4NDc2IDUzMDJmODA2NTM3YTdiYmMxZjZkZmJiZDE1MWMxNmYzMDA3NzQzZTEgbGVnYWN5LXRydW5rCis2ODQ3NyBkMzI2YTY3M2NiNjYwNWRmNGVhZmMxZDFmNDg4ZWMzNGFmZWFkMGExIHB5M2sKKzY4NDc4IDVjNmNiYjdhNjJiMDc2YmViNTFmZDUyNTgzMmYxNWE5N2I5YmI5ZGEgcmVsZWFzZTMwLW1haW50Cis2ODQ3OSBmYTkyMjk4NWFmNzMyMTdlYjhhZDgxZmRkOTA2NGEyYWYzN2UxM2NmIHB5M2sKKzY4NDgwIGRiZTM5ZWJkMzAyNTRmZWYzNTEyMmQzOGY5MGI0YzZhYWU1MmU4ZGUgbGVnYWN5LXRydW5rCis2ODQ4MSBjZGMyZmUxYmU4YTVlMjBkODkzZDZlZTA2NmZlMjM1ZmIyYjEzMTg2IGxlZ2FjeS10cnVuaworNjg0ODIgMmQ0NzFmZDg4YWZmYjI5NDg5MjhkZGRhYTIxZDE3YTBhNTE3NDM3OSBweTNrCis2ODQ4MyA4ZTYyM2I3OGFjYmY2YzBkNjYxZTQ2MzBhNWZiODcwMjUwY2IxMjhjIHB5M2sKKzY4NDg0IDVkNWQ5MDc0ZjRjYWQ0NTcwMmY0YTZmYmQ1MGJhZWM0NWJjZTYyODggbGVnYWN5LXRydW5rCis2ODQ4NSA5OWM0NDE2NDBmNzBjNzEwNGY3ODQ0MGY3OWVmMmY5NDQyNGZkOGQ1IGxlZ2FjeS10cnVuaworNjg0ODYgMTVhMDU2ZTBmODlmZWYyNjRhYjIwOWFhMWIwZTdlNWJiMGMyZDUwMSBweTNrCis2ODQ4NyA3NDQ0ZjU2NGUyN2QxZTlmNjU5YjNmOGE0NGYwNTdjN2Y0NjYxN2MyIGxlZ2FjeS10cnVuaworNjg0ODggOGRjYWIyNDM5N2E4ZDJmMDA3MDdlMGY0Y2VlNzcyZWZlYjg2MmVkMiBweTNrCis2ODQ4OSAyOTNhYzQ0ZDdmZjBkZjY2ZTRhNDAxZDExNjM3MGIyMDkwMGMyMGE4IHB5M2sKKzY4NDkwIDNiNWJlMGVlMzJlYWM5Nzk5MWI2N2FjNTY4NzliNDViYWZlYjQ5OGYgcmVsZWFzZTI2LW1haW50Cis2ODQ5MSBlOTVjM2FlYjRjODU4MzhkYTJhYTIwOWY2ZGM3MDI1MTg0M2E1YzFmIHB5M2sKKzY4NDkyIGVmNGJkNzcwOGFkN2IzZGMyODljNzMzZTIzYTVmYTYzZTY2NzE0ODAgcmVsZWFzZTMwLW1haW50Cis2ODQ5MyA0MGNhOGIyMTIyMDgxZGU1M2Y1MjM1YjZmNTEyMTQ1Y2ZiMzZlZDBiIGxlZ2FjeS10cnVuaworNjg0OTUgMTI4ZTIwZGE4OWViNDFmY2Y0YjZlNjEyYzkwODkyNGJlZWMwZWJlNSBsZWdhY3ktdHJ1bmsKKzY4NDk2IDU4NjFmNmUxMDg2MDc1M2QwZTc5OWEyNDU3NzdmODEzOGUwZjIyMDAgbGVnYWN5LXRydW5rCis2ODQ5NyA5NTU3NmQ4YWY3OTg5ZTM0MzViZjk1MDMwN2Q4MmNiODlmMjk0MzAzIHB5M2sKKzY4NDk4IDAyNDQ4Y2NmNDFlMDFhNTkwMzg2MGQwNGJhNWU3Nzg4OTc1MzExNDYgbGVnYWN5LXRydW5rCis2ODQ5OSA4ZTAzZGFhYWZjNzQxZGI4OTg4NmI4MTk0MTA0NzRhODQ2ZDM3YmEyIGxlZ2FjeS10cnVuaworNjg1MDAgZDg3Y2JmYzZjNWM2NzcxNDMxNWRjOTcwZDNmNzhlZDkzZjA3MDQzZiBweTNrCis2ODUwMSBiYmY0NjQyMTA5ODQwNDViYTE1MTlhMjJhZTZlMDc1OGNiOTY1ZGYwIGxlZ2FjeS10cnVuaworNjg1MDIgZWFmN2NlYjhhYjQ1NGEzZjAzYmY1MTM2N2U4ZGE0ZTQzY2QwOTgyZSBweTNrCis2ODUwOCA5ZTE4MWVlZGM5NWNhMmJiOWE1MDQ0YTE1NzY4NjAwNzcyMjBlMjEzIHB5M2sKKzY4NTA5IDA0OTY5NjNmY2ZlOWZiNjRjOTQ1OGMyMWQzNTYzNTkzMjIzNjFkMTEgcmVsZWFzZTMwLW1haW50Cis2ODUxMSA0ZDM1MGYyYjFmMmU4MzgwY2M1ZTg1ZGQ3YWI2NzI1ZjRhM2FkMDM4IHB5M2sKKzY4NTEyIDE5ZGZmZGVjNTU0N2FiOTQyZDRjY2RjYzA5ZDE1YjZhZWQ2ZDY4NGQgbGVnYWN5LXRydW5rCis2ODUxMyAwZjFlNGFiOTU2NTUxNzFmZjYxMGFmYjNjODZkMmVmNWVjZmMzNDE4IHJlbGVhc2UzMC1tYWludAorNjg1MTQgNDRlMGM2OWE1MzA0ODFkN2M3ODJjNmEwZjI1NzgxM2Q1Mjg0ZDAwZiBsZWdhY3ktdHJ1bmsKKzY4NTE1IDQzZWRjNjU4MWU0NGRmYzQ4MmNhYjQxOGUzYWRkY2U0YWU5Zjk4YzEgbGVnYWN5LXRydW5rCis2ODUxNiA5M2IyYTkxM2Q4YWNmZDA3M2JlNmE1ZjhkNjk0MDE3N2QyNmMyMmJkIHB5M2sKKzY4NTIxIGFiMDg2YWZkY2YwY2Y3ZTBmNDQ1ZjZmMjQ4OGRiOGQzZjg2NDRmYmIgbGVnYWN5LXRydW5rCis2ODUyMiAyZDg5NzcyY2MyNTY4OGE2ZmZjZDQyMjU4YTE2YmIwNmIyMTE0OTY1IHJlbGVhc2UyNi1tYWludAorNjg1MjMgMjkzNWNlZGU1OTRlMzc3ZmVjMWJmYWRmNjg3MTQyODA1N2Y4NjkxOCBsZWdhY3ktdHJ1bmsKKzY4NTI0IDc1NjYxYmY4Y2IyYzY3M2MzNjcxMzk3MGM4ODJiOWYwMWQ4ZDE3NjIgcmVsZWFzZTI2LW1haW50Cis2ODUyNSA5NWE0ZjUzMDhiZTI0Y2RlYWExOGI5NjgzNGQ3M2E2ZjQyNzc5ZWI4IHB5M2sKKzY4NTI2IGRjNDJhZGY4ODdiNTc1ZjA0MjJlM2UwZTVjMWZmZmVhMjFlZjc0YTQgcmVsZWFzZTMwLW1haW50Cis2ODUyNyBkODQxZmY2N2NjNjFiOGEyNTU4ZmE3NWEzZTBjZTA0Mjg0MWIzNjgzIGxlZ2FjeS10cnVuaworNjg1MjggNzA0NDNhZTc2YjEwNWM4MTljMDU3NGE4NWQ5ZmU4Mzk1NTUxMDFlYiBweTNrCis2ODUyOSA5MmJkMDE0MTU5MDY5N2I1OTMyMWMzN2I2YjQxMDU3ZjI4NDA1NjY0IHB5M2sKKzY4NTMwIDJmZmRmOGRkM2U4YjUwNjRhMjk1ZTQyNTlmMjU5NDhkMjI0ZjAxZGUgcmVsZWFzZTMwLW1haW50Cis2ODUzMiBkMDlkNmZlMzFiNjE5OTg3Zjc5ZmE5NDI0M2M5MDMzNGVmMmQxZTVlIGxlZ2FjeS10cnVuaworNjg1MzMgMjdkYjgyYTVjZGE5MTlkY2NhMjFmNGNmYzZkNDc5NmE5YTVlNjI4NyBweTNrCis2ODUzNCBiN2ZiZTM3ZWI4OTA0ZGY5Y2JmOTk4NWE1ZGNkYjNlMmIyODI0ZWJlIGxlZ2FjeS10cnVuaworNjg1MzUgNDkxZWM0MTFlNWM4ZmYzNmZkMTgxNDBiMmUzZmEwZGY0NjMwODEyZiBsZWdhY3ktdHJ1bmsKKzY4NTM2IDc1NDNmMTI4MjA3MzY5NGE0NjQ0ZDE1NzRiYmY5MDU0OWMzODEwMDcgbGVnYWN5LXRydW5rCis2ODUzNyAwZjFiM2YzMTFhZTAxMDJkMmY5NDg2YmI1MmQ5ZGUzMjg1OWZlYjg2IHB5M2sKKzY4NTM4IDZlZWE4MGJkY2JmNWU4ZjYxNjg4MDRmMmIwZDJmMGFiMmIwYjE3MDcgcHkzaworNjg1MzkgNWY0YzJkZTk1MDkxYjUyYzA2Y2NlZmQ5MjVkZDEzOGJjM2NiYTMzNSBweTNrCis2ODU0MCBhZDk2OTEzNTBjOTMxZGY2MTQ3OTVlMDEyMDVlODQ5YjJmNzg0OTJlIGxlZ2FjeS10cnVuaworNjg1NDEgZTgxNTRiZDMyMmNiNTY2MTJjMjQxZjgyYzY0N2U1MTk5ZWI3YmRkYyBweTNrCis2ODU0MiA4NTQwMjY4MDQwZmYwNDNmMDA4MmY0NzJhNmIyZWUwZmUzYzBiMzI0IGxlZ2FjeS10cnVuaworNjg1NDMgMmIyNzA3ZmY4YmI3YTlmMjVjNWNjMGZmODQwNWM2ZTlkNTUzOGZjOCBweTNrCis2ODU0NCBlNDBjZThmZmU2MzJkMTZjNmY2M2I3NGJhNjI1MjhjMjc3NWFlZTM0IGxlZ2FjeS10cnVuaworNjg1NDUgMzhlMThhODg0ZjNmZWU2NWQxMjA5Y2M3YjBmZTk4NjU3ZDllMjlmNiBsZWdhY3ktdHJ1bmsKKzY4NTQ2IDg3YWRjY2U0OGRlZmU2NGY1NGY4ZWI0MGUxYTRjZTAxODY3ZjU2YjkgbGVnYWN5LXRydW5rCis2ODU0NyBiYmNkNDYzNGFlNzMzYjJkODQxZDE3YWE4ZWY0NzQyMmQ3MDEyNzE1IGxlZ2FjeS10cnVuaworNjg1NTIgYmM5MmJiMjA4MTlmYzljYjU1NmNhYmI3NTdmN2ViYWYwODhjODAwMyBsZWdhY3ktdHJ1bmsKKzY4NTUzIGY1NWI4NTUzMjM5MjdiZDVlNTAyOWVmOTZkYTIwZjc2YWU2MDYwOWUgcHkzaworNjg1NTYgODcxYTFmZjQ2ZmE2OWMzZGQ2ZWE1NDgzMzIxNTI4M2VhNDQ2N2Q4YiByZWxlYXNlMzAtbWFpbnQKKzY4NTU5IDU5MzQ2MTJkNTA3MDViMDQ5YThiOWIzNzk3MDFhNjM3NThmNWVhZmEgbGVnYWN5LXRydW5rCis2ODU2MCBlOTc0OGRiNDc2MzU3Y2M2MTQyZmI5YzFkMDI2MzFiZTI4M2Q5YWZkIGxlZ2FjeS10cnVuaworNjg1NjEgYzk5Y2UwMTY0Njk5YzNkNGY2YjU4ZGQwYWEyYTdhNTUxYzE4MmRkOSBweTNrCis2ODU2MiBmNDU5OTdkOWFjNTU1NjE4YWRkMWMwYzY2Y2E5ZTc5MTkxYTdjMzQ5IGxlZ2FjeS10cnVuaworNjg1NjMgMTJhNzg3YjQ0ZGI1NDQ5ZjAwZjAxMzU1MWM2MzM3NmY4YjdjMzMzZSBsZWdhY3ktdHJ1bmsKKzY4NTY0IDJjMDNjNzU4MGFhMzhiZDM2ZjMyNmMwNDgwODBhZDZiNDczZjhjNjkgcHkzaworNjg1NjUgYmExNTIxZjI0NzQ5MDQzNDYyNTVjNTM4MmNlNmZjYmUyMTExNTQ0OCBsZWdhY3ktdHJ1bmsKKzY4NTY2IGUzMDExNDFlOTFiMTA0NjdlZDFlMDdkYzRiMzQzMDYyMTRkMWU2MjcgbGVnYWN5LXRydW5rCis2ODU2NyBlNWY5OTZjZGEzMjE2ZTRiMDExZGI1ZTAyM2QyZWMxYTdiYjE4MzMyIGxlZ2FjeS10cnVuaworNjg1NjggYTE5ZDU5NmQzNTAwY2ZhNjA1NTM0YzQxYWIxYWNjNTYzNGU5MzQ4NSBsZWdhY3ktdHJ1bmsKKzY4NTY5IDJhODJiZDI5ZWMxODg4NThkOWU4ZjZhYTk1ZWQyYmFjYTRkNTI0ZGIgbGVnYWN5LXRydW5rCis2ODU3MCA0NTRiNjk2YzFkNzMwZTJjNjZlMjU3ZGNjN2Q0ZmIyMGMxMWVlNDFlIGxlZ2FjeS10cnVuaworNjg1NzEgYzc3NmI2ZDgxNGMyM2U4YmFiYzdhMmVmMjYxMjEyZTkxYmRlYzE0YiBsZWdhY3ktdHJ1bmsKKzY4NTcyIDU5YjEyMTJhNGRiZjNmZTAxMzIyZjJlYzg2OWFjZjA3YWZkMmY2MDMgbGVnYWN5LXRydW5rCis2ODU3NSBiZThlOTU4ZGVlOTRjZWQ0YWU2YzU0NzAwNjk0ZTQ5ZjQ3NjdlOGQ2IGxlZ2FjeS10cnVuaworNjg1NzkgMDhhYzQ0MDQwOGM5ZDMyYTZlZjQzZDNiMGFmMDJkMmNhY2NkYWEwNiBsZWdhY3ktdHJ1bmsKKzY4NTgwIDlhNWQxNDVmMTlhNTEyYjZiNTgzZWRlYzg5NjBlNDJjYzA1ZjU4OTQgbGVnYWN5LXRydW5rCis2ODU4MSA0Mzk5ZTNmMTBiMTliMGExNzBhOGNiMmMxM2FjNGM2NTJjYTI2YjM2IHB5M2sKKzY4NTgyIDZlMzNhZWFlZTc3ZGQzOTY4MDU3YTg4ODUwODA3OTkzYzVkZGQ2NGYgbGVnYWN5LXRydW5rCis2ODU4MyBmNTcxODQ0YmVmNWM5YThlODA3NzBkYjM0YWE2NjI2NmQ0ODUzOTNiIHJlbGVhc2UzMC1tYWludAorNjg1ODQgYTM0OTRhNWIwNDk1NjQ2Y2VjOTdiNTE2OTVjZWRjMWUzY2YyYzRhYiBsZWdhY3ktdHJ1bmsKKzY4NTg1IDAyYWIxNjE0MjNhNTg2ZDI0ZDBmMGQ2MzZkYjM4ZmZjYzEyY2Q5MDIgcHkzaworNjg1ODYgNDEzY2NhM2ViZTgyZTAyMTdlYjI5NWI4YmZiY2Q1MzczNTYyN2RiMCBweTNrCis2ODU4NyAwMjI5MDU1YzhiZTA2ZjEwMWQzZGRhNzNhMDhlN2JkYjBmOWFiZTY1IHB5M2sKKzY4NTg4IDA5NDMzNDRhNTI2MWJjNzYwODM3YmZiODZlMmJhNmViZjE1OGY1YTMgcmVsZWFzZTMwLW1haW50Cis2ODU4OSAwOGYzZmU2OTE1MWFjNmQwNDQ5MzY4MTJjN2I1NzBkNDhkZTk5ZTRlIGxlZ2FjeS10cnVuaworNjg1OTAgZmFiNTAxMjc3YmMyYzNjMzI5YzBjNjRmMzJjODc1YjA2YTI1ODQ4ZiBweTNrCis2ODU5MSBkZGEzMTA3ZjZiYzdhN2JiNjAwMDE0NjM4MGIyMGExNDJkM2IyMzQzIHB5M2sKKzY4NTkyIGE4NThiNjFkYjMyNGQ3ZWQzYzZlZjQ5YjcxOGQ3ZGMzNzkyOGRhODAgbGVnYWN5LXRydW5rCis2ODU5MyBlNDZhMDZhMjY0YjMyZGRiNGE2ZWIxMjY4OTIyNTIxZWMyYzM0MGEzIHB5M2sKKzY4NTk0IDBmZGNlMzk5ZGNkZTBhMjNjODE3OTFjZTY3YTM4MWRhMWIzMzRhMDIgcmVsZWFzZTI2LW1haW50Cis2ODU5NiA2NWMxOTM4ZmI5ZmZmMjc4YWNjNGNlNjUyYTFkNTQ4YWI1MTZmOTk4IGxlZ2FjeS10cnVuaworNjg1OTcgYmNmNjY2M2M1YzA0OGJhOWExN2FjNGViN2IzZWQyNjcxZjEwMGM0NyBsZWdhY3ktdHJ1bmsKKzY4NTk5IDJkNDUzYjIyMWJlY2Q3ZTRlYWFkMGVlM2MyZmJiMTc4NzU4Nzc4MWEgcmVsZWFzZTI2LW1haW50Cis2ODYwMCAwZWYxZTY2NGE0YTQ1YTI5MGRhYTI5ZmI4ZDhlYzYxNzI1OTJiOWE5IHJlbGVhc2UyNi1tYWludAorNjg2MDEgZTExYzk5ZTFlNmU3ZWM4MDE2MmNjODgxMGZkNzgwM2ZlNzM4ZmM1MSByZWxlYXNlMjYtbWFpbnQKKzY4NjAyIDJkNWE5YzdlOWI0ZTMwYjlkYjE5MWE2MzRjOTc5YmJkZjY1ZGUxYTcgcmVsZWFzZTI2LW1haW50Cis2ODYwMyA0ODMyYTBiMTI4N2I3YzZiNzljNDY2MzkwNWIxNjM3NTE1YTk5N2MzIGxlZ2FjeS10cnVuaworNjg2MDQgZDJjYzI2YmRhNmE5MzVlODhhNzMxZjI0NjQ5ZjI5NmQ5ZmYwNDNlYyBsZWdhY3ktdHJ1bmsKKzY4NjA1IDA0MTMxYzcwMmQxNzI2MDY2ZDQ2MTFjMmY0N2I3YjdhNWEzMmZkNjYgbGVnYWN5LXRydW5rCis2ODYwNiAwZTA1ZTA3OGJjZWQzMzI2YWNhOTc3MDg4ZGQ5MzlhZGIwYjEyNzhlIHB5M2sKKzY4NjA3IDhkZjgxOTQxZGUwNWNkNTliOTY4NzM5MDFlZjhkZmEyYjBiMTEzMGEgbGVnYWN5LXRydW5rCis2ODYwOSBjZmY0ZmM1MmM3MDhmZDNjMDEzMDI1OGY2YTQ1ZTExM2JmNDFkYWQxIHRsZWUtYXN0LW9wdGltaXplCis2ODYxMCA2NmI4MWFjYWNiYzA1MjgzZjJmZTYxMjFjMGVlNGY4ZTI2OGI3MGI4IGxlZ2FjeS10cnVuaworNjg2MTEgMzM3OGVhZmQyN2RmNTlhNTcwZmFhNWVhZjMyYzE0ZjIwMWM2NDJlZSBsZWdhY3ktdHJ1bmsKKzY4NjEyIGFlNWVkMTU3NzRiNGY1N2FkOWE3MmEyYTFmMWJjNzRhYzczMDYwNTggbGVnYWN5LXRydW5rCis2ODYxMyBlYmZlOTE3ZDBlZWEyZDc1ZmJkNmQ0Mzg1ZTNjMTJjYjkzODAzNTk5IGxlZ2FjeS10cnVuaworNjg2MTQgZDAwODZjMTc2ZTgyNGUxZDNlYjM5OGFiYjg2OWVkODAxMjI0ZmM2YSByZWxlYXNlMjYtbWFpbnQKKzY4NjE1IGIxN2VjNGM0YTdjMzg1MDBhZWJkYTkzMDdiZDY5NmMwYjFmMjM4OTMgcHkzaworNjg2MTYgYmI4NmYyZWQxOGFhYjBlMmMyNDBiMzE1YjU0ZjM4Mjg2NmE0MjMyOSByZWxlYXNlMzAtbWFpbnQKKzY4NjE4IGJlNTlhMjNiN2MwNDE1YWVjMWQ4NDAzNGY2ZWZkMjQyYjE1NjUxYjggbGVnYWN5LXRydW5rCis2ODYxOSBlODNhYjk1ZTljODdiZGI5Mzg4MjhlMjU5OWY3ODIzZjE3ODU3ZTBkIHB5M2sKKzY4NjIwIDQyN2U0M2QwZTAzMWNmNWMwYmNjNWU2NDM5ZTQ0ZDAwNTgzNTFmZTIgcmVsZWFzZTMwLW1haW50Cis2ODYyMSA2ZGRlMGRmM2JiNGVjYjdjYzJhYzk1YzUwYWQyZWVlZGYxMjZlODFkIGxlZ2FjeS10cnVuaworNjg2MjIgNjViZWJlNGExYWEzZjkxZjUxM2VjN2M1ZmJiOWQ2NmYyNDcxYmRiZCBsZWdhY3ktdHJ1bmsKKzY4NjIzIDg4NGNkM2YxOWIyMGVjNmY5NTNmNTI5MzYyNDRjMTcxMDZmZmRhNGQgbGVnYWN5LXRydW5rCis2ODYyNCAyNjgwYTRiZWFlYTE4NjlhMDQ2OTdlYTIwMWI1MGJjMmMyMzdmMDkxIGxlZ2FjeS10cnVuaworNjg2MjggYWRiMjM2OWViN2JiZDA2MmY0MTllOTMyMWMwNWRiMTcwNGU1OTVhOSBsZWdhY3ktdHJ1bmsKKzY4NjI5IDEyYTViNjdkNTY3ZDIyMWU5ZDQ1MTM4MzVmOWZhNjhmN2JiYzkwZTEgcHkzaworNjg2MzAgYzY5OTVkYWU5OGE2OWM4M2YzZjQ4MWY0OTYwNmZiYTE3M2NkMmE4NSBweTNrCis2ODYzMSBhMDRiMWM3MTY3YmFkZGRmYTgyZTkyNzZmMjFlYjcyNzMzZmNmNjQ0IHJlbGVhc2UzMC1tYWludAorNjg2MzMgOGJlMTU5ZDZmZDQwNDNjYzZmNjFjYWRmYzZhMzRkMWRiMTFiYzllYiBsZWdhY3ktdHJ1bmsKKzY4NjM4IDJjYzQyZWZkZDNmZWRlNTFjYmRmNzE5NjE0N2IzMjdkNGJmNzY1MzggcHkzaworNjg2MzkgYzEwZjZmMTE2YWYwYzFhOGZkMTM2NjQ2YWIwNTAzYjA1OGQ1MjRhZSByZWxlYXNlMzAtbWFpbnQKKzY4NjQzIDc0OWE2Yjg1MzM3NmI2OTVkNjZkYWYyNTE5YTIzMTE0OTUxN2U2ZDYgcHkzaworNjg2NDcgMGIxYThmNTYxMTdhYzc5ZjgxMTlkMTIwODJlZDRmZmQwMmUxMDJmMyBweTNrCis2ODY0OCBjYjI5MDQ4MmExYTdmOTg5ZDRkOWUzZDIyZjk4NGQ0ZWNkZjA3YzZiIGxlZ2FjeS10cnVuaworNjg2NDkgMWUyZDdmMDc1MzI2YThhYmYzMzcwZGJlZjk0NzY3NjUwNjU2MDc2MiBsZWdhY3ktdHJ1bmsKKzY4NjUwIDFiODE3NzJjZDU5ZDc4OTk3MzMxNDIzMGU4ZmZlMGQ1Y2MxNTMxNzkgcHkzaworNjg2NTEgZGYzZmE0MGZkYmVkYTNhOTc5ZWYwMDJlZWNjM2M3MTUwYmVjMTk1OSBweTNrCis2ODY1MiA3YmM4ZTJlZWQ2OTBiYzA0NzFkYTE4ZTA2YjA3NjllM2MyMDRmODY5IHB5M2sKKzY4NjUzIDU3ZWRmODM1ZGVhMzY2MTMzNmI0YjQ3OWQ5N2Q0OGZlZjJkYWNjODYgcHkzaworNjg2NjEgZGMzMWJlNTBjNDA1MzRjNDhhMDI3N2YzMjNkOGM5NzIyZGI5MTdkNSBsZWdhY3ktdHJ1bmsKKzY4NjYyIDFhYWQ3ZDJlODk0NTk0ODU4Mzk1ZWI5NmY5ZjcxMjdjZTU5ZWQxZWMgcHkzaworNjg2NjMgNDg2ZTI1NzljOTc4YjlkMjgwOTRiNjc3OTllYmYzM2NmMTQ4YmI3NiByZWxlYXNlMjYtbWFpbnQKKzY4NjY0IDhkZmUzYzRhYmQ1YjExNjYwZTA1NmY5MGI2N2MyN2ZjYmEyODVkNzMgcmVsZWFzZTMwLW1haW50Cis2ODY2NSAyN2JhODAzYmRlYTkwNTcxYmVmMWI3YjNhMGI4YzQ3MmRmOGNkYmM3IGxlZ2FjeS10cnVuaworNjg2NjYgYWYwMmI2ZTQyMTQyYjM0NmEyMDY5NjIxMWM5MWI1ZTg2MmNlNjg3ZSByZWxlYXNlMzAtbWFpbnQKKzY4NjY3IGUxNThjNzA1MTFmZWFkYjlmZTU1MzdhN2ZkZjdhNDMzZTIwOTc1ZjMgbGVnYWN5LXRydW5rCis2ODY2OSBlNTZjNWYzYjZlMThmYTY5NjE4YjMxMTIyNzNhOGVjMjQyM2VkODlmIHB5M2sKKzY4NjcyIDQzZTBiMWVlMWMxYjkyN2RmZmQ3MDI3ODg3NGY5MTJmYWVlOTdiY2MgcmVsZWFzZTMwLW1haW50Cis2ODY3NSBhNjBiODZhNzNlMjA0MjZiZDI4MGZmYmRhZTcyYjA5N2FiNTcwNjdlIHB5M2sKKzY4Njc2IDM1YmY4ZjdhOGVkY2MyZDQ5MWNlZWU1OGRiODFiZWQ0ODIwZGFkOWQgbGVnYWN5LXRydW5rCis2ODY3NyBkYjIxZDEyMWJhNTNmNWQzMzJiODYzNWMzNjYwNzc4MGQ2ZGE3MTYxIHB5M2sKKzY4Njc4IGJiOWM2NTI0ZmRjYTQ1OTE5MTViMWQ5N2NhODNmNmM0NTgxMGMwOTYgbGVnYWN5LXRydW5rCis2ODY3OSA1NjIwNTJhMDM0NzZmOTc3YjI3NjA4NTU0ODQ5ZGQ0MmFlNTkzYzYyIGlvLWMKKzY4NjgwIGEwMjljNTc5MGU0MWZjMmM3YzBiMTEwNDcyZWFjNTdkM2E0NjlkMGQgaW8tYworNjg2ODEgZDcyMjBmZWI3ZDBiODgwYjU0MWI0NGVjZjhhYzYyNDlmNTljZDVkYSByZWxlYXNlMzAtbWFpbnQKKzY4NjgyIGYzOTY5ZjRmNDllMzY3YTc0ZmJlMmQ4NmYxMDNmNTIzMTYwNzljNjUgaW8tYworNjg2ODMgYjNjMTliNjc2ZjU4NjgzYmY0NDIyOGRiYWE4MGU5NDI4ZjVlZTU5ZCBpby1jCis2ODY4NCA2MjY4MjQ4NzIwZDY2NGNhMWQ2NDQ3ODlkZjZmZjRkNDVkMTkxNTllIGlvLWMKKzY4Njg1IDNjNTU1MWE5NGM3Yzk5ODhhOTJiNTM0Yzg1NzY3NWJhZDczZWU3ZmUgaW8tYworNjg2ODYgZDk2ZjUzZjY3N2RiZWQwYzdlMGZhMTRlOWRkNjc0OWZhNWFkMTAzOSBweTNrCis2ODY4NyA4YWI3MGVjMmFmNWJjMzA4YWQ3NmRjZjliNWFkMDRhM2UzZTgxM2FhIGlvLWMKKzY4Njg4IDBkZGMyMWRmOTc5OWI5YzYzYWFkM2Q0YzVlNDdkYTVhOGRkM2JmNWYgaW8tYworNjg2ODkgYWVkMGM3OTgwOWU0OWYwZmJjN2VmZDljZjMxYTBkM2U4OTVhODJiNiBpby1jCis2ODY5MCA3NTAwOWQ0ODYzYzlkMzQzNDVjNzE3NDE5MjE3NjUxY2NmYWExYTA4IHB5M2sKKzY4NjkxIDI5ZWRmMjZiOWMyM2VmZGRmMGQzZjBhN2FlMTBmYjQzZDcyOWU1YWMgcHkzaworNjg2OTIgOTlmM2MzNGQ3MzI4ZTJjMWFhMmQzZTRlMmM3ZWM4ZGI5ZGRlYTAyYyByZWxlYXNlMzAtbWFpbnQKKzY4NjkzIDhlYTE3ZjI3ZGE2N2QyNDFjMGRhNGZiMmRhZDRkYTA4YTU3MTAzZTEgaW8tYworNjg2OTUgNTA3ODc0ZjY1NWFjYmE0MjdmMTRhYzkxYzIwNWFjMDgxZjJhODViMCBweTNrCis2ODY5NiAzM2M0ZjQyM2FlYmYyMTI3N2M3MzdhNjEyZDJiZTA4YzM3OWYyYjI3IHB5M2sKKzY4Njk3IGZhNjUxYTFjMzRjYzY4YTg2MTg2ZjkxMmI0ODJkNzUzY2NmYmU1NDEgcmVsZWFzZTMwLW1haW50Cis2ODY5OCBhYWM1MWI3MGM3NGNiMmIwZjA4ZDU0OGY0MTFiMTIzNjZlNzQ4ZGY3IHB5M2sKKzY4Njk5IGUzNTA0MzM1ZjQ4MGE3MWMzYjhhYzNlYzU1MmQ3MWE0ZTMwYTE4NjggcmVsZWFzZTMwLW1haW50Cis2ODcwMCA0Mjg4NTQ2YTQyMzhjMmU0OGRkYmRiNGRmMzVlZjMzMmJiNmUxMWJlIHB5M2sKKzY4NzAxIDZlOTdkNzFkNjFjMjVjYjFiMzk4ZTViYmY1NWNkM2IxYTc0ODI0NGQgcHkzaworNjg3MDIgMWNlMWJmYmU3MDUxZGUxN2NkY2M3MjYyMDA5MmM2YjU1NmZlYTU1NyBweTNrCis2ODcwMyA5YzdmMTk4ZjliMjUyMGY5MDU0NGVmYmZmMjRiNjYzNmI3YWM1ZGMzIHJlbGVhc2UzMC1tYWludAorNjg3MDQgMjBiZDExNzhmYzY0MmQ2OTU2MGI0NTdhYzAyOTZiN2NlNmI3MWExZiBpby1jCis2ODcwNSBiOWNiMzY0NjVkZDJhMDdkMWYwOTdkN2MzNzczNGJmMjdhM2I2MTgxIGxlZ2FjeS10cnVuaworNjg3MDYgMTBjMzhiYzY3MzdkZWI0ZTJkYjg0NGM5M2Y4ODkxNjVmZDA3ZDZkMyBsZWdhY3ktdHJ1bmsKKzY4NzA3IGU1NTRiOGJiZGVlYWE5MjJkMDA0ZDM0MTE1Y2YzZWQ3YmVmNTdhODggcHkzaworNjg3MDggYjRiYWE3MjUyODRhNmQyOGI5ZTRjMDBlMGQyMDdhNWIwZjRiZGVkOSBsZWdhY3ktdHJ1bmsKKzY4NzA5IDA5OTYyNzFlMjFkOGM0YzkzZTIwODQwMzg5YzM4YjFlZWY3NjNjNGQgcHkzaworNjg3MTAgOWUyYWQ0NDAxOTZiZjI0NDBhMDQ3Y2QzZGVhZjkxYjhiOTI0NDhjZiByZWxlYXNlMzAtbWFpbnQKKzY4NzExIGU5MWY2NGY1ZDk1NTgyMWE4ZjE5NWYxYTUwYzU0NzAxZWRlN2VjZDUgcmVsZWFzZTI2LW1haW50Cis2ODcxMiBjODYzNDdhYzY2NjM1MjIxYmM1ODI2ZjFiY2UyODk2ZDUyMzE3MTk5IHB5M2sKKzY4NzE2IDQwOGM4ZGNmMDI0OGExNjkxN2VkODViZjY2MTA1YzgyMGI3YzE2MDIgcHkzaworNjg3MTcgNDQ0MjQ5NTdlYWRmNjcwNTM3NDJiZGNkZjY4MmY3ZDdhMTNmZjVkOSBweTNrCis2ODcxOCAxODlkNTA4MzAyOTcwNTUyNWJiNGY5YjhlZmVjMjMwNzMwMzA4YTFmIGxlZ2FjeS10cnVuaworNjg3MTkgOGYzMmJhNTJiMjBkODkzNTk4YmJkY2I4NDA5MGU4Y2QwODdjODM2YyBweTNrCis2ODcyMCBkMmRjNmQwNDNjMjFkYTk3MDhhMDk3N2VjYjNjZTczODAxZTRiYzhmIGxlZ2FjeS10cnVuaworNjg3MjEgYmJkYTMxZGQ5Nzk3NWJkZDM1YzMxNGM4MWNiNDM4YTIzN2NiZmYwMyBsZWdhY3ktdHJ1bmsKKzY4NzIyIDliYmI5YWMwNjFjMGQ0OGZkNDg5YTEzYjNjNzhjYTY2NjVhMzcxZjUgbGVnYWN5LXRydW5rCis2ODcyMyA4MzI1ZWIwNDE5MjEwYzJiNjc3ZTA3YzZkOTlkNWYxZGM5ZDczMzNlIHJlbGVhc2UzMC1tYWludAorNjg3MjQgZjZhZWZiYmQ3MDQ1ZTlkY2JiODU0NDY5MmRiZmExNDc4ODUyNTVlZiBsZWdhY3ktdHJ1bmsKKzY4NzI1IDExY2JmMzljMzE2ZjdmNzQ1YjI2YTAwYjZlYzkzMDBmNjNkYmFjNWUgbGVnYWN5LXRydW5rCis2ODcyNiBkNzE1ODM4NjA2MzQ2NzBiODNjMzMzMzhmNjUyZTJjYWNhMGM3MGFkIGxlZ2FjeS10cnVuaworNjg3MjcgZTdkNmU1ZjUxOWVmMjU4MTFiOWEwODZlMmMxYTdjMTExNTc4NDhjZSBsZWdhY3ktdHJ1bmsKKzY4NzI4IDhkYzQ3OWI2M2UwMzY3M2IyODQyNjVkMDZjMjc3MzMzNDVhNzE1OWEgcHkzaworNjg3MjkgYTgxOTkyN2MyYTEzOThjOGRmMTAwMzdmOTM1ZGU2OTdkNjFhOTUyOSBweTNrCis2ODczMCBmM2JhNWY5OWRhNTBkMGIzNjNkNzlhMGI3ZmUyNTFhZjk4NGY3MGQ1IHB5M2sKKzY4NzMxIGI5MmU2OTVkNTYxZTVhODEwNzgzOGExZmNjZjIyYjk4MTM5MTAyNzMgcmVsZWFzZTMwLW1haW50Cis2ODczMiA3NTg3Nzk5Y2FlMWNiMGQzMTg1MTBhOTg4ZTkzOTllNzFhOWI3NjNiIHB5M2sKKzY4NzMzIDdlNWNmYmE1NGUzNDgwMWNmZmYxZmNkNjY3YmVjZGY2MmM4MDRkMDIgcmVsZWFzZTMwLW1haW50Cis2ODczNCA2YTc2YWJkNjE2ZGVkYjE2NDE5OTAwZTk2Y2M1MWNlOTY5NDM0NTY3IHJlbGVhc2UyNi1tYWludAorNjg3MzUgYWUzYTEwNjMwNmE4MDhiMzg0ZWJjNjI2MjM5ODIyMGM5NzBmNjEzYyByZWxlYXNlMzAtbWFpbnQKKzY4NzM2IDUwZjVjMjlmY2UyNmQzMWNiODRkNmI0N2FhYTZhNGY1Y2Y0YTE3YjMgcHkzaworNjg3MzcgYzFjNDRhMGFiNDM4ZTZhYjI3ODc3OTRlNzhiYTRmMWU5OThjOTc5YSBsZWdhY3ktdHJ1bmsKKzY4NzM4IGM1MTNjNjkxMThkY2E2MTQ0MjFmMTkzYmNjYTExYTc5YTgwOGY4MDkgcmVsZWFzZTMwLW1haW50Cis2ODczOSA1YjQ4ZDYwMDA5MTY3NjI2ODE2ZTk1OTRkNGM1NjMxNWRiNTE3ZmNkIGxlZ2FjeS10cnVuaworNjg3NDAgOWVjYmQ5YTEwMWQ4MzdkMTU3MzE0MjZmYzhiMTFkODg5N2RiOWMwOCBweTNrCis2ODc0MSA0OWQ5NzA4ZDdlYTM5YWVhMTY2NzcwZTZkYzMzZGExZTNhZWJhODQzIGlvLWMKKzY4NzQyIGM5ZTVjMmNhNjJjM2UyYzNlOWNmODQxMDU0YTQwNDM0ODI0NzdjYjkgaW8tYworNjg3NDMgOWY2Mjc0ZmQ3YTlkZjdjMzdhODIwYmJmMjZiNGUyNTBhZWQxNTJiMyBpby1jCis2ODc0NCBlMTRlYzZkMThhYjgxZjUyM2VhZjNkMzVhZmY5OGU2MjhjMDMyYWJjIHB5M2sKKzY4NzQ1IDFlYzM1YmVlZDJkMDE0ZGNmNjExYWNjMDA2MmM3NDg1ZTU4N2ExNGMgaW8tYworNjg3NDYgOWY0NWZhMjdiODM4YWUwYjY5ZjcwMjU4MjQyNTI1YWE3NDk0ZDkyZiBweTNrCis2ODc0NyBiYWQzNmY0OTIwODFlN2RkMWIzOTNkZGViYmUzYzZhZGIwNzNmY2RiIGlvLWMKKzY4NzQ4IDU4MWQ4NjAyZjNmNzQyZjQwMzEyODM2MDU4NzBhZTgyMmJlOTczYTIgcmVsZWFzZTMwLW1haW50Cis2ODc0OSAxYjIyOWU3ZDgxOGJkNTI3NDc5NDAxNTdjZjA3MWMzNmRlOGI5ODcxIHB5M2sKKzY4NzUwIDA3ODhkNDViZjdhNDdlOTQ3MGQyN2JhMWM1MDNlYmM5ZWJiNzYwZDUgbGVnYWN5LXRydW5rCis2ODc1MSBmYjdmMjMxY2NkM2VjNzc3MWNlZjExZWRkZGNkZDNkNGYyYTRjNDlhIHB5M2sKKzY4NzUyIDU5ZGUwNjU0NzIzMmE0OTI4YzNiZGJmNTY4MTU3MGQwYjE3MWUwNzcgaW8tYworNjg3NTMgNTllZjMxNWJmMDBlZmNmYTUyNGQ0MjVlMDhiMDBmM2Q3MDQ4YWY0MSBpby1jCis2ODc1NCA2NTgxOGNmZDQ4MjY1ZmQyMjEzZDExZWM5NzczNzc0MmJlZDQxZGNlIGlvLWMKKzY4NzU1IGE5OTFiZTZhMTExZDg2ODRmZmVjZDliYzRmNTI2N2IwODhjMWZkMzcgbGVnYWN5LXRydW5rCis2ODc1NiAxYzE2ZWRhMzEwOWU1NDU0ZjQzYzA0NGI0ZTM5NTNmMTgzYjUzYzBmIGlvLWMKKzY4NzU3IDFmYWVkN2NlZDI0MjQ1OGU3ZjZkNWFhYjc3YjdjMWQ5YmUzOTY3M2MgaW8tYworNjg3NTggNjVlZjQ2MjkyMWY3MzkyNmRiNzM5ZmZjZmUxZWQ1MGU0Mzc5ZjU1YiBpby1jCis2ODc1OSBlMTA4Yzk4MDZjYzNmMjEwMmVmMzg4YTVmNGU2YmY1OGYzOGJjYTg5IHJlbGVhc2UzMC1tYWludAorNjg3NjAgYTY2MTE2MTVjNzZiYWZmNWM5MTBhYmIwZWJjN2FkMzYxOWQ1ODIyYiBsZWdhY3ktdHJ1bmsKKzY4NzYxIDYxMTQ2MWE4Yzc4NTFiZDA1NTBiMjg4Y2U5YWIwODM1Zjc0ODM5NWQgcHkzaworNjg3NjIgMWMxN2Q1Y2IxNWRkNTk4YWM2Y2E0OWE5YzRkM2ZjYWFmMzFlMDFhYSBweTNrCis2ODc2MyAzOTE4N2IzZTEyZTA1MTI5YjM3OGY1MTJiNDIyNDBlODU0NDJiNDFkIGxlZ2FjeS10cnVuaworNjg3NjQgMDYxYzUxMjk1ZDMyNmRkYTQ1ZWQ5MDdiMjRjYWRlMDZjZTVjYjA0MyBsZWdhY3ktdHJ1bmsKKzY4NzY1IDE4NDQxYjhmNzAwMGMwNTFkOTNjMDM5ZjI0Yzc1ZGE3MjExMDcxNzEgcmVsZWFzZTI2LW1haW50Cis2ODc2NiBlN2MxMDBhZjgxZWMyOGJlZmE1MzI0NDc4MGJhY2RkYjc3ZTc2MTc1IGxlZ2FjeS10cnVuaworNjg3NjcgMzUyZjI5ZGI1ZWJmNjBiODc4MDY4ZDZkODkxYmZjYzIzYjhiMWFkNiBweTNrCis2ODc2OCA5NWU4ZDg1NTk0YmM5MmQwZjQ4NmNhZDYwMmQwNDEyYzdiMTQ1NDdlIGxlZ2FjeS10cnVuaworNjg3NjkgZmFlOTZiYzkxOTY4NDc5NWU5YTEwYzFlY2IwNWE3OTUzZDg3MTEyMCBweTNrCis2ODc3MCBiYTM0ZGVhNWQxOGMzZjNhMGNlNjI5YzdmZGJiZGVkMWQ1YjU4OGQwIHB5M2sKKzY4NzcxIDQ4OGU4ZTZmMWNkYzYzM2QyMTFiYWYwY2JiMzkxZjY3MDcwODU1NjUgcmVsZWFzZTMwLW1haW50Cis2ODc3MiA2ZWRkMjlhMzQzNTQ4ZjIyZDE2ZjkyOGJkN2QwNjk1YTIzMzhkYWZkIGxlZ2FjeS10cnVuaworNjg3NzMgN2NmYjU5ZTM5NzgyNjA5MDQyYTUyODU3NzQ3YjdjNjg5MTBlMDQyYyBsZWdhY3ktdHJ1bmsKKzY4Nzc0IGFlYjJiZGUyMDNhYWNkOWYwMzllY2I3M2YzMzg0YWZhMmYxZjc2MzcgcmVsZWFzZTI2LW1haW50Cis2ODc3NiBhYWY5NmVmYzYxZTU0MmRiMzI2YTJmNjZiZDZiZGM4MjBmY2RiOWJkIGxlZ2FjeS10cnVuaworNjg3NzcgMDE1ZWE3YjIxOTUwYTM4M2M5YTM2MDdhMThlMTUxMzQ3MTUwNmZkYyBsZWdhY3ktdHJ1bmsKKzY4Nzc4IGEyZjU4MjA0ZTY4MGI4N2FlMzRmOTI4YjFhNDBlMzAzMDIwNDlhNWMgcHkzaworNjg3NzkgZmExMmM4ZTVhZThhY2JhODY2ZWU3NjU4ZDEyYmY3ZTY1ZjA5NDhmNCBsZWdhY3ktdHJ1bmsKKzY4NzgwIDc1YmNlYzAxMWVlZjZkMmRhNWE2NmI2OTU0MjRiYjNiMjdjNDE5YzIgcHkzaworNjg3ODEgNjExZDk1NzBiNGNhYjI0ZjZlMWQ5OTViMmU2MDA1MzIyY2IwYTNiMiByZWxlYXNlMzAtbWFpbnQKKzY4NzgyIDE5ZmE2ZjlhYjViNTAwNzNhYjMyZGY2ZjM1MmI2YWQ2MTJhYTZkMTUgcHkzaworNjg3ODMgY2FhNzlkMjM4OTE3MmFlYWY0ODkwMzRiZjA3NjQ4MTJhMGQ0MGMxNSByZWxlYXNlMjYtbWFpbnQKKzY4Nzg0IGFmMzZiYTEyM2MxZDJhY2ZhMjQ3NDhiNTE5OTQ2N2JiYzA2ZTRkOGEgcmVsZWFzZTMwLW1haW50Cis2ODc4NSBjM2EwZWU1MWQ4Njc4MTMwYzUwOTA2NGNkZmVlN2MzMDEwYzgzZjEwIGxlZ2FjeS10cnVuaworNjg3ODYgMmY1NGVlZmQwMDczYTE3YTM2ZDljNDc4MTcxMzM0MGY1OGRkNzk0MSBweTNrCis2ODc4NyA2MDY3YTFlNjI4OWExMzU3YzdmOTkxM2JkZWJjYTFlM2Y4ZWRjZmRlIGxlZ2FjeS10cnVuaworNjg3ODggNTM3ZThkNzI4NDI0Njk0OWM1OWQ4YTAxNzQ4ZTc2NTU5MDgwZmMwMyBweTNrCis2ODc4OSAxOTFiN2IzZGRmNGZhNGNkYmE1YTMzMWI3Y2QzYTUxYTYwMDhkY2MwIGxlZ2FjeS10cnVuaworNjg3OTAgMzgwMjFiOGUxNGFhYjEyNzZmMDcyYzEwZWQ5YzIyNzA3YWM5MWI4OSBweTNrCis2ODc5MSBhNjNmN2NmMzc5M2FiZmUwYWM2N2EzMzBiNzVmNjBiMzg5NzA3Y2Q3IHB5M2sKKzY4NzkyIDM5MDY2OGUyMDYyOGU0MGM4MzJkNGMyNWZhZmIzNjA2YTQ1OTJhYTYgbGVnYWN5LXRydW5rCis2ODc5MyA4ZDY2YjgyYTEwYTMwODhjNjBhZGY4NDY0MDlmYTdhZjYzNTY1ZWVlIGxlZ2FjeS10cnVuaworNjg3OTQgNmE2YjU5MDkxMmZlNmYzMjI3NjczOWExNTgyNGMxNzBjYjIwNWJjNiBweTNrCis2ODc5NSA1ZGQ4Nzk4NjdjZGUyMDI2MGYzOTBiYmU5ODMyZTMxZGM2MjM4YmZmIHB5M2sKKzY4Nzk2IDVjM2JmMzFkMDRmZDZhOGQ3MTk2OTNmMWY4MmZmNzViMjY1YmE2YmMgcmVsZWFzZTMwLW1haW50Cis2ODc5NyBmZTI4NzFhYWI5ZDk4ODQ4ZDNlMjA2OTk5NGQzMWFiMGE4MjFkMmE2IGxlZ2FjeS10cnVuaworNjg3OTggMjM0NGNlZjdmZjQ0NDc0NTRkOTYxYTg1NDhiYzE3YjY4NWRjYWUwMiBweTNrCis2ODc5OSA1YTA0MWQ5YTUxY2Q2NmZiZWM1MjM0NTM1YmM5NDUxZGQxYWFkODI4IHB5M2sKKzY4ODAwIGNjOWRlMTk3ZGY3ZTExOTFkMTZmNjFkMzlhOTg4MDkxNjY0YzViMjIgcmVsZWFzZTMwLW1haW50Cis2ODgwMSBjYzA3OGE1NzVlZWQzMDdjZDg5MDMzYzczMTE5YjZkNzMyYmMxZDNjIGxlZ2FjeS10cnVuaworNjg4MDIgMWE2NGQyZjU2Yjc5OGZmNjAzOTZhNjEyM2RhYTI4MDI4NTIyOTM1MCBweTNrCis2ODgwMyBhODMyNjdhZDJmZDI3MjA1NGMxYWZkNGY5ZjBjMmNmZGJjZTEwYWMzIGxlZ2FjeS10cnVuaworNjg4MDQgZmI3MWMxNTYyMGVlNmY5OTlkOTViMzJjMDhkNjgzNDk4NjU2ODA5MyBweTNrCis2ODgwNSBkYmMxNGFjZGRlMzdmMTg4OTdhYjEzMmI4NzFjOWM2NGU4NGMwZTRmIGxlZ2FjeS10cnVuaworNjg4MDYgMWYxNDg0MjQ4OGYwOGZhYjhmY2I4NDVhMjRkZDdhMWYxNjc3YzQ5ZCBweTNrCis2ODgwNyA2MWYxY2IxNmU3YjQyZTc5NmVmYTMwY2MzMDk2NjdjMjRiYzU2Y2Q4IGxlZ2FjeS10cnVuaworNjg4MDggMzZlMjY2YjJlNDYwOThlYmMzMWQwYzg0OTI4YjYwNjExZDYwZmZkOCBweTNrCis2ODgwOSBjN2JiMzMyMDc0OTVhOGNiMWM3MmJmYzdiYmFiMTAwNDA1YTNjY2Q2IHB5M2sKKzY4ODEwIGRkNTYyNDQzOWJlNTA4ZmQ0NDJlYTQ0NTY0ZTc2ZThjMGMxNGNmNmUgcHkzaworNjg4MTEgNzMzMzg4YWNmMGI2NWNiNzliZmNhNjQyYzkzYWMyNmI3MmRjN2NiMiBsZWdhY3ktdHJ1bmsKKzY4ODEyIGYxMzUyNzQ4NGJhM2FiNDRmNmExYzM0NTIwZTI2ZjFkYzFlMzgzYzMgaW8tYworNjg4MTMgNDI0YTUwOWJlYmZlYTIwMzBmOGU1NmIwYzM5MmQ2MDg5MmEzNWQxMiBsZWdhY3ktdHJ1bmsKKzY4ODE0IGQxZGUwNzc0NDdhYTRmMzRhMzFjZGNmMDAxOTM0MTc2OTI5M2JhMmYgcHkzaworNjg4MTUgMzJhMjJmYTEzYjk5Yzc5NjAzMGU1ODIxMGVmYTE0M2Q0NDMwNjllZCBweTNrCis2ODgxNiBiMjBlMjE4ZDZmMDBmNzg4YmNhNGQ1YTg1NGI2ZjQzOWRmNjUwNjAyIGlvLWMKKzY4ODE3IDVhODgwYmRhNmE2Yjc4NWY0NTUyNGRhN2IwNjdmMzQxYTVmODJkMWMgaW8tYworNjg4MTggYTU3ZDEwZDZiYzg5MzFmMDAwMjA2MTc2ZDUwNWFhMGYyY2ExOWVhNSByZWxlYXNlMzAtbWFpbnQKKzY4ODE5IGFiMGIzODVhZWZjM2U5YjYwNDEyMmMzYzVkOTgxODY4M2MxYmJmMDUgcHkzaworNjg4MjAgOWYyOTRlYjM4MTkwZTY0MzRkNTUzNTUxMjk0NGVjNGFkMmQ2NTAzNiBpby1jCis2ODgyMSBjNzc1MjA3Y2VkYWQ3OTQwNTYwOTU2NDlhNmYwYjcyMDA0YzFjNGU2IGlvLWMKKzY4ODIyIDUzOTAxZTY2OTFjMzgyNDhmMTFkNGNiNWNlOTkyYTVkZDRlMzJlYWQgaW8tYworNjg4MjMgMGU3OWQ1YTM3MjMzODIwMzYzZjZhYjkzM2Y3NzQxYzdlOGM0ZTE1MyBpby1jCis2ODgyNCBjOTRmOThjNTc1M2Y5NzBiNWYxMTI2ZTg2M2M4OGIyNDAzNjRlMWNjIGlvLWMKKzY4ODI1IDdlZDliZWVkODcxNTUzMzE5MjVjYTA5YWY3NmYzMzVhYzA5MmVjMzcgaW8tYworNjg4MjYgNzY2ZGU0OTZhNDJkN2YwZDFhNzQyYThiODg0NjA5ZjdlNGExNGQ0ZCBsZWdhY3ktdHJ1bmsKKzY4ODI3IDdjMzBhYjAxMzRhMWZlNjM0NmZhYmZhMWM3MGY3Y2QzNzgzZjFiYWQgcmVsZWFzZTI2LW1haW50Cis2ODgyOCAyYjNlY2RlMTc2ZmU1MDE3OTNjNTUwNTAyODA1YWQ3NDM2OTU4ZWVhIGlvLWMKKzY4ODI5IDI1MmY4MjRiYjgwYjNhYzIxNzA5ZmM5ZDc1ZTk1OWZkYjBjZDY1MTEgbGVnYWN5LXRydW5rCis2ODgzMCBjYzViNDYwZmYxYWIxMjRmMjJjM2UyZDhhZTY4YjMxNTE0MmU0OWYyIHJlbGVhc2UyNi1tYWludAorNjg4MzEgMTJlOWM1ZjcyNjU5MDQ5ZWJmMDMyNjAyZTMwNDhjOTlhMjJiMWQxNSBsZWdhY3ktdHJ1bmsKKzY4ODMyIDM1ZmI0YTI2MGEyNTNkOGY3NTA4ZmE2MDZiMzM4MmI3ZDM5M2I1MjUgcHkzaworNjg4MzMgNjY5MjhkYWQ4MWNhMTQ5YjUxMGYxM2Y0Y2NjNTg2MGIyZjAxZDVlZiBweTNrCis2ODgzNCA3MTA2ZmY1NmU5ZDhiZGY2OTZkNmExOGRkODg4Y2Y4MTczOGMxMzZkIHJlbGVhc2UzMC1tYWludAorNjg4MzUgYjg4Y2M3ZTJiZmI0YzMxM2Q1MGJiYWJlMjk0MGEwOGI3NGU2MDg3ZCBsZWdhY3ktdHJ1bmsKKzY4ODM2IDBhZDhjNTZhN2E3MGQwY2IwOTE0MDVmYmQyZjM1ODZhYTRhN2FiMjQgcHkzaworNjg4MzcgNzYyZjlmMTg5ZTJlODYyNzg4NDViNTEyZjJhM2VhMmQ0YzE4MjA1YyByZWxlYXNlMjYtbWFpbnQKKzY4ODM4IGYwYzk1NTM3OGNhM2M1MWVmZmNhYWU1MzEwNzc1NTI5ODNkMzcyMjMgcmVsZWFzZTMwLW1haW50Cis2ODgzOSBkMjc0MDYyODE2ZmY2NThjOGQyYTM0NzYzMGRmMmM0ZTczZWY0ZjE4IGxlZ2FjeS10cnVuaworNjg4NDAgMGVjMzU0NzAzZDAxY2FhNGJmZDgxMmZjZjQ0ODMxNDQ0YWYxZGFjNyBsZWdhY3ktdHJ1bmsKKzY4ODQxIGE5OWRlY2VkZjcyZDIyMGE1NjBmMmQ4Mjc0MWJlMDU1Y2FhYWU0N2EgcHkzaworNjg4NDIgODc2M2NmMmY3ZTBjNTVmZmQ4MDE1MzIyZjhjMjIyMTUzMjY1NDZjMCBsZWdhY3ktdHJ1bmsKKzY4ODQzIDhiZjIwNGFmOTY5MTBlNjRiODdlOWUxOGNmZTY1NmJkODExMWZlOWQgbGVnYWN5LXRydW5rCis2ODg0NCA3MzAwZDZmYmQ5MTRkYmQ3NGRhZGQ1ODBlNjZmMzAxNjQxNzNkYzQzIHB5M2sKKzY4ODQ1IGNiZTU0NjUxZTNiOTg1Mzc4NGU5ZWEzNGY0Y2Q0NjQwMmZlMGU1OGUgbGVnYWN5LXRydW5rCis2ODg0NiAzZjYxZjgwZTkxMzBkMTc1MzhhNmYyYTdjYTIzMGI2NjhhY2M0ODFkIHB5M2sKKzY4ODQ3IDQwOTJhNDAyZWQzZTc1NWEyMDQ5OTcyY2I0NzJlNGY4OThjNmMxOGUgcHkzaworNjg4NDggZWM3MGIzOTNlMTczZjg0ZGQwZTllMTQ4NjdiZWI3ZDc5YjYzMjNlNCBweTNrCis2ODg1MCAzYzVhOGEzNDc5OTA3ZjBkMzgzMDA0N2E4ZmZmZTIzYTA1OThlYTFmIGxlZ2FjeS10cnVuaworNjg4NTEgMDUzZjNlODI2NjAxNmVjOWEwZjQyZjczMmVhMmQyYmI5OTY3NWM3NyBweTNrCis2ODg1MyAzZjEzYzY1YWVjMDU2YjNmZTU0NjYxMDQwZDQ0MzY0MTM1MGRlYzdiIGxlZ2FjeS10cnVuaworNjg4NTQgZjVkN2QwNjA5MTFhZTE5MzgzMzQyYzY1OGJlNzUwNDk1MmQ3ZTI4ZSBweTNrCis2ODg1NSBiNDBlNGI1MjlmNjliYWQ4OTlkZmJmNDkwMTBhN2JiNTk1MjgyMjllIHB5M2sKKzY4ODU2IGVjNmYyOTYwOGJmMDlmZDQ0OWRlNmViZTE0NDczMzhiMWQwMWE4NWYgcmVsZWFzZTMwLW1haW50Cis2ODg1NyA4YWVkNzg4YmZjYzgzYzc1MWRiYWZjZDY0MjcxMGU4YWIzNmYzYmFjIHB5M2sKKzY4ODU4IDFmMGEzYWM4YmY4NWRlNDQwNGZmNGRiYjgwNzgyMTgwOGNjNjNmNzEgcmVsZWFzZTMwLW1haW50Cis2ODg1OSBkZTJkYzA5ZTFmN2U2NjExZGY0MmE4NjNmZTU4NDljMzQyYWRjYTZjIGxlZ2FjeS10cnVuaworNjg4NjAgMjczNWZhYzZiMGQ0ZDNmZjJlMDBmMmUyZmNlMjE3YTJmMTlhZmRiZCBweTNrCis2ODg2MSBlNGM4NmRjMTgxZTlhMjA0NGUwNDUwZjYyNDA3M2U4MzY5MzhlOTQzIHB5M2sKKzY4ODYyIGIwYjYyMWYyYWY1ZGRmYzUyZmFkMzllYjAwYjhiNDIwOTdjZWE3YjkgbGVnYWN5LXRydW5rCis2ODg2MyA3MmJjZjBhMGNiMzFkNDFhMzdiM2E5NzRlNDBlZTNmOGQ1MDRkZDg5IHB5M2sKKzY4ODY0IDA5NDBhNGYyNTA2ZTc3ODI0NjA2MGNiODNkZmJjOTQwNDdhZDQ5ZjkgcHkzaworNjg4NjUgZGQ2MzhiN2U3NDdlM2ZhNTVlNmE1YTZiZWE1YTdhZTg4ZTRhZTcxNiBweTNrCis2ODg2NiAwOWMxNzEyN2E0Yzk5MjAxZmM1N2JiZmRlY2ZiYTQ4MzZjNzhmMTU5IHB5M2sKKzY4ODY3IGM5NTQ0NTBmN2FiZmNjMjUxY2Q5MDJiMmE0ZjQ0NDNjMjM5YWY4YzAgcHkzaworNjg4NjggMDRjOTVmYzM3NjVmZWQ3YzU4YThmNDMyOTc1NTU5NjczY2NiMTdjNiBweTNrCis2ODg2OSBhY2U3NWIwNmE2Zjc0ZGM1OTZjYThmNGFlNDYzYTJkZTkzOWZjMGZjIHB5M2sKKzY4ODcwIGFlYWEyMzdlYmFkN2Y3OTViNzJjYjBjODg5ZmY5ZjdlOTJmYTUwYTkgcHkzaworNjg4NzIgM2JmNzdlYTFkYjNlMjNkZWI5NDMwMzA3MTRjNjk0ZWM1OTFmNTZkYyBweTNrCis2ODg3MyBhODIzYzlmM2E0NTJiYzIxOTE4NGZkNmI5YjUwYWIzZjRlNTJiZjhkIHB5M2sKKzY4ODc0IGIwZDU5M2Q0MTIxMjBjN2FmMTU4OTU1YmZlMjBkYmI3MmYwMGU2YzUgbGVnYWN5LXRydW5rCis2ODg3NSA4NTdkNjYzNDFmZjk0MDgyOTM4ZjFkOThiZjJkODNmZDMyYzFmMzA3IHB5M2sKKzY4ODc2IDA4ZTliZWQ2YTFmODVmOWU1NjQ2NWRkODY2YTNiMTYyZjIzNzA5NmIgaW8tYworNjg4NzcgMWFmNGZhMThiY2MyMDY1YWU0MWM4ZjNkNzA1YzcyMTU4NmRjNzFjYSBpby1jCis2ODg3OCA1MmZmMDU3OWE0MWYxOWFmNDhhYTQ0MmIzN2ZmNDBiOTdmZjY2M2FmIHB5M2sKKzY4ODgxIGE0ZjI1YzM4MGY5NmI3ZjNmZjIwNjk1MjhkZDhlODRmZTJjYzE4ZDYgbGVnYWN5LXRydW5rCis2ODg4MiA1YzczMTJjZTVkYmQwNjJlODgyMDYyNTI1MTI0YWEwMzk4MjcyMTQ0IHB5M2sKKzY4ODgzIDA0OGViNWE4MzQzYmUwOWNhNzQzYWJmYzRmYzI1N2JjOTdkNTQ5MmYgcHkzaworNjg4ODQgYmQ3NGU4NjZmOWNhZjgxN2M3ZWRhMDk5OWFhNmM0MTE0YzIwYzNjOCBsZWdhY3ktdHJ1bmsKKzY4ODg1IGZjMzhmMmVjZDJhYzI3NzNkZjhmNjZlYTA3MzAzNDMxZjQ3ODU3YTcgbGVnYWN5LXRydW5rCis2ODg4NiA2Zjc2MWU1NzE0ZTA5MTlkNGEyNzY3YWQ5MDZjNTkxNDJiNDE2ZWE2IHJlbGVhc2UyNi1tYWludAorNjg4ODcgY2VmMGZjYzkxNTU5ZWJiNWQxNjBlYzkxOTFkY2I5ZTkwMjZjMWI1ZCBweTNrCis2ODg4OCBjOWI5YTUwNDFlZjUyMWY1NmIxZGQ0ZDdjMzg5NzNhNDZmZTY0ZTFiIHJlbGVhc2UzMC1tYWludAorNjg4ODkgNTQwNjExYWU2MWI4NmZhZGFhMzM5NDRiZmE4MmQ3NzEzMzBjOGZlYiBweTNrCis2ODg5MCA0ZWFjOTk0MTUzOGM1YmRlYzhkMjk4ODU2ODIwZGYxNGJlMjNmYzJhIGxlZ2FjeS10cnVuaworNjg4OTEgZGIwZmZlZWU2ZTUwNzAzNjk4NWM2MmJmZDA4OTIzZjI4Y2E5MjQ5ZCByZWxlYXNlMjYtbWFpbnQKKzY4ODkyIDI1MDM0YzgzMjhjN2NmN2FkNTFhNGU4MTI1MTE2MjBhY2JhNDE3ZWYgbGVnYWN5LXRydW5rCis2ODg5MyBmMWFmNDA4MDRhZGU5M2I5YjNiNWEyZDE1YzAwYjM3MTBkMDI4ODNmIGxlZ2FjeS10cnVuaworNjg4OTQgNTEzMmExM2YxNjlhMzQxNGJlZjc1Y2Y0NTBhZWEzM2IyOTI3MmIyNCByZWxlYXNlMjYtbWFpbnQKKzY4ODk1IDI3ZDJmYTE5MDg0YTU4MmU0Njg2M2U2N2YwZTI3MWRjYTJjM2U1MmEgcHkzaworNjg4OTYgN2VlNmZhMDYwMmJlOTI3MTJiMDRkZTJkZjNmMmFjMzJkZGMzZWQ3ZCByZWxlYXNlMzAtbWFpbnQKKzY4ODk3IGExYTUyODczZjlmY2YwNjVjYjgzOGI0ZWMxOGYyMmQ1NmY5MTVjZDMgbGVnYWN5LXRydW5rCis2ODg5OCBmZWI0YTA5MmI4NzFjNjdlY2RmNGMzZmQwNjg4MjBkNTk5ZjFjNmEzIHB5M2sKKzY4ODk5IGE2YTYzNjljZmJjY2RhZGY4YTZlNTk0ZjVlM2Q1YWE4NzRmZmQ3NmQgcmVsZWFzZTI2LW1haW50Cis2ODkwMCA5OWYwYjAyNjU1MTZiMjQzOTZkMzM2NDZmZDk1YTIxMWIzZjQwMzZkIHB5M2sKKzY4OTAxIDU5ZDVlNzBmMzQ5NDIzMGRiZDAxNzFjNzVhMzYwODM5ZTY5Nzc5NTMgcmVsZWFzZTMwLW1haW50Cis2ODkwMiA1NzhkZDc4ZmI1NTczNTJkYTg5ODQyODI0Y2Y5YWExNmYzMjQ1YWE0IHJlbGVhc2UzMC1tYWludAorNjg5MDMgNmQ1NTE3OTc1ZmQyNDU3MzRhZTVmMmZmOTk1ZTM5NzM5ZWEzOTk4YSBsZWdhY3ktdHJ1bmsKKzY4OTA0IDg0M2MxNzg2OGI1MmI0ZjQ4ZWFmZTQ4NTZiOGEzYTdlMDQyNWZhZTcgcmVsZWFzZTMwLW1haW50Cis2ODkwNiA4NjNjZTZjMDM2MTc5ZjRjNzRmYTlmNzBiY2I4ZTcxODU2NWI5MGEyIGxlZ2FjeS10cnVuaworNjg5MDcgMDEzOTY0ODUyNmQ5YThmY2Y3YzEzODMwOGM3YjBlMjQzMDBiZWY0NSByZWxlYXNlMjYtbWFpbnQKKzY4OTA4IDlhNDVlMmNhZDZhMWYzZjFiNGZlMzIwYmQ1ODlkYmIzYThmMmUzNzcgcHkzaworNjg5MDkgZjdmM2Q4NDFkYTJjNmMxZmE2ZTAwMTdkNTkyNTcyMDZjYmY1MDk2NCByZWxlYXNlMzAtbWFpbnQKKzY4OTE1IGY1YmU2Y2FlYWQwM2Q4OTBjYjUxYmRkZjlkMjJhYWMyNDNlNmRlMGQgbGVnYWN5LXRydW5rCis2ODkxNiA0ZThmMjhiM2VhMGE4ZWZhMDM1NzMwNzNlMDc0ZGM1ODVhNTM4MTA2IHB5M2sKKzY4OTE4IGVhNTc2N2ViZDkwMzJhZDhhOGJiNDhhZTkxNThkOTgwMDU3ZWViMDYgcHkzaworNjg5MTkgYzI2ZjFhZjI2YmZjMjJhZjlhMDk1MzNiOWU5MWNiOTMzZWZkZjcxZiBweTNrCis2ODkyMCBjNGM0ZTRiMWRjMWFlNjMxZWY5ODU5MWE4ZjIxNTJjMDU1MGI1Y2YwIGxlZ2FjeS10cnVuaworNjg5MjEgOTljMTBkNjQ3ZjMyNmY2MzYxOGIyZDhjOTFlMTljZmJhN2M5MTE2MCByZWxlYXNlMjYtbWFpbnQKKzY4OTIyIGZkOGFmNDZkMzYxNTQzYzc0ZjU2NzU4ZWY2ZDAxMmRlYTMyYzY0NTMgcHkzaworNjg5MjMgMmM3ZDM1Njk4ODJkZTM1Y2VlYTM1ZGFhOTZlYjA4NGE5YTMyNWExMiByZWxlYXNlMzAtbWFpbnQKKzY4OTI0IGQ4NmUyMzMxOGI0MTVkZmFkZDNiMjEzY2M4OTY5NTI4Nzc4OWFlZTggcHkzaworNjg5MjUgNTUxMjU3YzgwNThhZjAzYTc0NmIwYzA1MWY3NDliMzE4MzU1MzZiMyBsZWdhY3ktdHJ1bmsKKzY4OTI2IGUzY2VlYjdlYjkwMTBlZTdmZGRlNGExMzU5NGFiZTlkMmVlODkwMDEgcHkzaworNjg5MjcgMjFjZjk2Y2MyMjE2M2E5NTY5MzhjNjEwNmNiODVlYmJkNDM2M2E2MyBsZWdhY3ktdHJ1bmsKKzY4OTI4IDI4MTlhNDcwNmM4MTEyZjRiYTZjNjJhN2UzNzMxMzFmYTkyZGFhOGIgcHkzaworNjg5MjkgN2Q1ZmE1MjM0MWUyMzIzMDBjYjdiOTMwODU3YjA5OTcyZTI1ZjkwYSBsZWdhY3ktdHJ1bmsKKzY4OTMwIDc1ZDBmNjE4ZTFkZWM1YWY4ZGQ4ODJkOTdmYWI3NzkzYTJhYTg0OGMgcmVsZWFzZTI2LW1haW50Cis2ODkzMSA1MGY0MGYyYzM3ZGRhNTdmNGMzODRhMWI4YmRlMDk2YTlhYmUwOGQ1IHB5M2sKKzY4OTMyIGNjODEzMGFmYjAzOTEyMmI5NDEzNTExMzRkNDRjODdkNjFhMzI1ZjMgcmVsZWFzZTMwLW1haW50Cis2ODkzMyA3YTU3NTllODU2Mzk0ZmQ0NzNiZGY5YzVhODQwZjVjNzMxODIyODM4IGxlZ2FjeS10cnVuaworNjg5MzQgNDcxYmUyYzY0NTdlZWEzNTI1MjgwOGI5MTI4NTYxYTFkMmRjNDYxOSByZWxlYXNlMjYtbWFpbnQKKzY4OTM1IDAxMTMyMTk1ZjU2MjUxNThlNzhmMjZhMWM3N2FmYjkxZGIxYjM4YmYgcHkzaworNjg5MzYgMzM2OWE1YWNhZjc5ODM2NWFmNGM3ODExODU3NjFhNDU1MTk1ZWZhMiByZWxlYXNlMzAtbWFpbnQKKzY4OTM3IGM5ZmVhMzViODczZWExYTc4MzYyM2MxZWM2MzljYThhMWRiNjAzMGUgcHkzaworNjg5MzggMTBmNGExNjA0Mzg4OTFjZmQwZTUzZmQ1Y2FlMzY1OTc3NzE4MjljZSBweTNrLWlzc3VlMTcxNworNjg5NDAgZTBkOWM2NTlmN2E2YzBlMjc4OTEzNjRiOWQwZjM3MTRlOTNkMmI1NSBweTNrLWlzc3VlMTcxNworNjg5NDEgMTRhY2UyMDU0NDdiYmUyMzhlYWQ2NDU4YTMzMDE4YWZlZjg0ZWNiMiBsZWdhY3ktdHJ1bmsKKzY4OTQyIGU0NzA1ZmY2MjZmMDhiNDk0ZGQ4MmMwZjcxNGVmODg1OGI1Y2E4MDQgbGVnYWN5LXRydW5rCis2ODk0MyBhNTIyOTIzN2ViNTBjYmYzNjhmOTAwNjJmOTA3ZjY3ZTU4ZWNmZjRkIGxlZ2FjeS10cnVuaworNjg5NDUgNGU4MmZiMWFlYjAyMjJhMGY4YzQ4MGM1MmY4ODg5ODc5MjI3NDgxMyBsZWdhY3ktdHJ1bmsKKzY4OTQ2IDZhOTFiM2FkY2FkNmU2MDcyYTQxN2FhMDBlNzJjOTQ3Nzg0NjA3YjIgcmVsZWFzZTI2LW1haW50Cis2ODk0NyBjODUxZWQwY2Y2NWZiYzZlYjM4ZWRhMjA5NWRjOGNmODczOWMwNDFlIGxlZ2FjeS10cnVuaworNjg5NDggMDk2YjQ4ODQzOGU5MjRlYzg5ZTdjMjg0NzVjNDVlMzAyMDJmZmU1ZCByZWxlYXNlMjYtbWFpbnQKKzY4OTQ5IGMxNTVjYjM4Zjc2ZDBlNjgwNTU4ZjhjZDAxMDhjZjdmNTg4ZDY1YmIgcHkzaworNjg5NTAgNDVhNTI3NmU1ZGNjNjVlYmUyZDdkNmQzNDhjYzJlZjg5OWVmNDU2MCByZWxlYXNlMzAtbWFpbnQKKzY4OTUxIDIxZmIxMDE0Mjk0Y2M2N2UyNjczY2FkYWRjNmI2Y2JmNmIwOTIzODUgbGVnYWN5LXRydW5rCis2ODk1MyBiNGFjZTJiNmMyOGYwZjQyMTUxMjhjNzZmNWFiOTcxNDVjYTEwZDNiIGxlZ2FjeS10cnVuaworNjg5NTQgZmI5ZDJkMmE0MzU5NTY3MjBiNjc4MGRkNGE5ZGUyNzMxYzM3Y2E5MiBweTNrCis2ODk1NSBkZmFjZWM4YmE2ZGI0ZTk2MTIyNDhlZDhlZmVmNzg3Njk1ZGNhZTY1IHJlbGVhc2UyNi1tYWludAorNjg5NTYgYjk0ZTllZDM1NTljMjczNDEzM2RkOGMwZjE0OGQyMzVhYmMxNmFjMiBweTNrCis2ODk1NyBjNGQzMWY5Nzk5MGU5NWMyOTAwOGQ1NThiNjViMGU1NDYwNDc5YzA5IHB5M2sKKzY4OTU4IDA0YTMzYzQ3YWJiNWYxMTc3M2IwYjkwZTkzODIyZWIxNWU3NjkyMmYgcmVsZWFzZTI2LW1haW50Cis2ODk1OSA1MjAzNzk0YzdlYTIxNDcyZGY2Y2RmMTE2ZDkxMThkNTViNTgwNGFlIHJlbGVhc2UzMC1tYWludAorNjg5NjAgMzVjNjkzN2MwMTI3NWMxZTAyMjZhZjZmOGFjNmNlZmYwYjdjNDFmYSBweTNrCis2ODk2MSBhZDFkYjBhZTk4YzZhODc5YTllYjhhYTNhZWI1MDY4MzcxMzFhMTdhIHB5M2sKKzY4OTYyIDFjNTBhMTdjMGYyMWM5NjI3OTE1YjE2NTkzZDIyNDcyYTk5ZGIxYTYgcmVsZWFzZTMwLW1haW50Cis2ODk2MyA2OTYwNTIzZmFkYzFlNGJmYjQ0YTY2NzdhZDNkMGViYWExYThmMTNlIHB5M2sKKzY4OTY0IGQ1MTMwMjRmNTE3NzViYWE1ZTgwMjg3OGE5M2MwMzY1MDg4ZjI4N2QgbGVnYWN5LXRydW5rCis2ODk2NSBiODg1MDYwNmQ5MjFhMGFlODM4OWRkNzYxYTBhZWY2MzM4MDMwNzIxIHB5M2sKKzY4OTY2IDAyZTFjNWNlNmE2OWY5NmVjMTgxM2RmMDJjYjBjZDUxMmFkYTVjY2EgcmVsZWFzZTMwLW1haW50Cis2ODk2NyAzNmZiYWY3NTM4Y2VjMjViZGE4MGMzOGUwNzE2YTM4MmYyNmZhMDAyIHJlbGVhc2UyNi1tYWludAorNjg5NjggZDQyMzc0ZDBhYTU4NGJhOWZhOTQwNjhjNTRlZmQ0MjIyNzM4Y2I4ZSByZWxlYXNlMjYtbWFpbnQKKzY4OTY5IGQzNjJkYTk4ZDBkZTg1NmE2NGEwNmJmY2MxYmY3MGFmNmMxNzJhYzAgcHkzaworNjg5NzAgYjA0ODk2Y2FhMjliZTliYmVlYjg3NDAzYTIwMDk2Y2M5MTkzNTRlMSByZWxlYXNlMzAtbWFpbnQKKzY4OTczIGM5NGEyMzdiZjQ5NzAwMGM3OWYzMWM4OTAxYWYxMzQ0NzkwMDA5N2QgbGVnYWN5LXRydW5rCis2ODk3NCAyMDA4MjkyNTVhNmE3ZmE3YWI1MmQwMzdlMjQ3MThiNmRjZGM3MWFiIGxlZ2FjeS10cnVuaworNjg5NzUgMmVhNzVmNjBkOWU1ZDFkYTRlYTk3YzA3NTdhZDI0ZWJkMWMyY2QyNiBsZWdhY3ktdHJ1bmsKKzY4OTc2IGNhOGVhNTJiNDVjMzM4YWZlNzg5ZGUwNTIyODkxNDExZTg3YjQzNjQgcmVsZWFzZTI2LW1haW50Cis2ODk3NyA5OGYyMjNlY2U4ZjI3Mjk3MGY1OTlhZjU1OGIxNjM2OGE5ZTVhNTlkIHB5M2sKKzY4OTc4IDA2ODdkNDQ3ZGU2MWZmOGRhYzk2Yjk2NWY2YjRjNmM3MWZiMzQwZjQgbGVnYWN5LXRydW5rCis2ODk3OSBlMTk4ODA3YzU1ODY3YjI3NDRkY2I2Y2UzMWE4ZjYzZmQzNGE4YTMxIHJlbGVhc2UyNi1tYWludAorNjg5ODAgODU3ZGY2YzA5ZTEyZjljYzE1NThhOGYzN2IzYmNkNjk0MjBlNmEzMCBweTNrCis2ODk4MSA5NGMyZGM1ZjQ0NmQ2NzZhY2VlNTRmOWYzMThlZDdiZGQ2YmY1YTljIHB5M2sKKzY4OTgyIDE0YzNhYjliZDcwNjFmNjEwYzIwYmI4ZDRkYzEyOTMwNTdhMWQxODIgcmVsZWFzZTMwLW1haW50Cis2ODk4MyBjMjNlNDBkMWFiYmM4ZDkxZWM0NmExYTRiOGY5YzQ3ZjI5Njk4MzRmIHJlbGVhc2UzMC1tYWludAorNjg5ODQgODAyNTA2NjQ1NjY2NGRkYzQ5OWM4ZDY4ZGJhOWQyZjQzMTBlYWJjNyByZWxlYXNlMjYtbWFpbnQKKzY4OTg1IDJjYjBjNTJkNzc5ZmMyM2JlMGZjMmJhZGY0MjljNjdmZDUzYzlhMDkgbGVnYWN5LXRydW5rCis2ODk4NiBmNTcyOTE3MTgzZmEyZWNjMmFmNGU3NzdhMjZlOTFjZmU1OTVmYzJhIHB5M2sKKzY4OTg3IGYxMzhmYmUyOTQ1ZTU1ODliMGEyZDQyZGY4MjUwNzUxNWZkZTIzMjEgcmVsZWFzZTMwLW1haW50Cis2ODk5MSBmMDg1YWFhNDZkODc0OGZkNThkZWVkMDc2Y2JkOTMwNzA1ZTFlMTYzIHB5M2sKKzY4OTkyIGZmZTczMmRhZGIwZDhkOTg0MWQ4OTdiOWM3MmExZTA3YTNlMjU5YmIgcHkzaworNjg5OTMgMjU5ZmE4ZjY0YTk3ZTYyNDQ3ZDZlODE4MzRlOWY1MWNhYzJiMzA5ZSBweTNrCis2ODk5NSA0NDUxMjMxMWYyYmM4MjAwNzBiODA1ZDYyZDQ0YjgwOWUxMmQ4YTdhIHB5M2sKKzY4OTk2IDk2ZDI5NmM3OGZiYTg2NmFhOWY2OGU3NzdlZjY4ZDJkNzhhNmIzN2QgcHkzaworNjg5OTcgNTY3OWJiOWI1MTkwYzkxYWMxYWIxMjgxZDFiNTQ0MGMxOTExNmZlNiBweTNrCis2ODk5OCA2YzBiYjU0OGE5NDZjN2I3ZTk1ZWJiNzhjMWQ1YTgyNmY3NTBiNDQ3IGxlZ2FjeS10cnVuaworNjg5OTkgNzcyMGUzNjNjMWM4Y2VkNzc4ZjAzZjZkMzYyMGY3M2MzNjFmMDM5NCBweTNrCis2OTAwMCA4NGQ2NDhjZGRjMzM0NjBhZDdlMmI2MjIwMzI5MTdhYzBiNGNkMjAxIHB5M2sKKzY5MDAxIGI3Y2U2NzVmZWJiOTAzY2FhYTBhMDU3OGQ5OWUyNDMxN2QxY2FmNDMgbGVnYWN5LXRydW5rCis2OTAwMiBmMTFhNDEwOTU3MjZmOTkzNWFkZTQ3NzljOWE5NDA3ZmZlOGUwYjZlIHB5M2sKKzY5MDAzIDMzMjkxZTFlODdlYzc0M2Y4NWJiN2ExZjU2YWUxNDI0ZjE4ZjI2OWQgbGVnYWN5LXRydW5rCis2OTAwNCA0MDA1MDExZDNhMDllY2E5OWUxMTI4NTE5MTEyMmVjYzU1ZjEyNWFiIHB5M2sKKzY5MDA1IDdlODMzY2RlYjI0MTc0NTg2YTUxZDA5ZDE3MzAwZDg2NDhhMjRhODIgcHkzaworNjkwMDYgNGI4N2YzMTk3OGI3ZTIxNzZjNjhkYjY4ZDk1ZWMwNWNlNDdhMDkyOSByZWxlYXNlMzAtbWFpbnQKKzY5MDA3IDQ4YjcwMzdmZjIwZTg1YjY4OGUwYmI3NDVhN2UwYjkwZGRkNGU0MjkgcHkzaworNjkwMDggN2YwZTRlNDI3ZWEzZDcwYWU4ZGFkNGNmZDc4NjU1ZjdjYjUyMzUxMCByZWxlYXNlMzAtbWFpbnQKKzY5MDA5IDk4YTg1NWM5N2ZmMjE0ZmFhYmEwY2NjMzAyODk0ODZhMzg0MjcwN2IgcmVsZWFzZTI2LW1haW50Cis2OTAxMCBkMTcwZmRmNGJkZmI0NTIyYTY0NDMzZDM4Zjk5ZTQ4NDY1NGIxMmUyIGxlZ2FjeS10cnVuaworNjkwMTEgMTQ2MzFjNjI3ZTAzNzQyZDhlOWQ4MWU2MjE3NjA4YmVmMTc4MjJjOCBweTNrCis2OTAxMiAzZTRjODcyZDAyNDY3YTU3MTZhNWZiNGQyYmQ5Yjk3NmRiZTkwMTFlIGxlZ2FjeS10cnVuaworNjkwMTMgMzQwMjdlOGQwNDRmMDNjODg5YWNkOThkOTM1OWM4OGYyNGQzM2E3NyBweTNrCis2OTAxNCBhMjg3NjVmZDMyZjAwYTU4N2Y4MmE2YmJjNWRiYTUwYWIwYTc5Nzk1IGxlZ2FjeS10cnVuaworNjkwMTUgN2VkOWNjYzBiNTE5N2U3MzFiODk4MzBkNTRlMjAwYTczMjJhZDEzNSBweTNrCis2OTAxNiA4Y2QzY2VkMWVkMjk5OWRlNjBjOWM5NjczYThkMWQwOWM3YzI3NzU0IHJlbGVhc2UzMC1tYWludAorNjkwMTcgZTcxOGQyOTg3NGQ3NWM3ZjY1N2E2ODZjOWY3ZjkyYzkzNzhiZWFiZSByZWxlYXNlMjYtbWFpbnQKKzY5MDE4IDIyNTRjZDMyMDBmMDYwMmRhMWY2NzZhYTQ2ZDQ5ODljYmMzYzliM2UgbGVnYWN5LXRydW5rCis2OTAxOSA1MzI0NGM0ZWVmMjIzZTFlZTkxMmQ1MGZjYjZmNDM2OTE5ZDM4YzgxIHB5M2sKKzY5MDIwIDU0N2I3YTE3YzM3OTllNzcyMDVlMTEzOWMyMGM0MDJkMDY1Mjc4N2QgcHkzaworNjkwMjEgYTZiMDI1MjNiOTAzNWY1Y2MxNDkwNmRjZjVkNGVkNDRiYTE1OWEwYyByZWxlYXNlMzAtbWFpbnQKKzY5MDIyIDFiMzIwZmZjMGRiOGNhZTgzMDg4Yjk5NTRmM2Y3NjQ2MmI5Yzc4NjUgcHkzaworNjkwMjMgOWE0ZmRiY2YyZDlmMmFjNzViYmE4ZDRkOTkzMDdkM2QzZjM4ODY5ZCBsZWdhY3ktdHJ1bmsKKzY5MDI0IGZjNTEwMjZhYmRlNmM2ZDY1YWVjMDVhN2Y4ZGE4ZTc5ZTA3NmNkMzUgcHkzaworNjkwMjUgNzRhYTQzZGQ4NzVkZDllNWQ3OThjNDYwZDRiNGE0OGMwZjU1MTE5NSBweTNrCis2OTAyNiBhZGJkNzdhOTBiZGViNWFjMWRjYTNkMDA3YzhkZmQ1NDg2ZTk3Njk3IHJlbGVhc2UzMC1tYWludAorNjkwMzEgYzVhNTJhZWMyZGRmOTFlMTNlMGU3ZjMwOTEwMmYyOWUxZDBiMzBmNSBweTNrLWlzc3VlMTcxNworNjkwMzIgYjZkZTY5MTJmZTE0NmJhNmJlZDIwNThkZjU2ZWM1NThmOTBlYWM2YSBweTNrCis2OTAzMyBkMmMwNjdmOWY5OGI5NWQyMTljZjQ0ODBmY2U1MzNhNzA1Y2M1MGFkIHJlbGVhc2UzMC1tYWludAorNjkwMzQgNWZlYjk3NmIxOGFhYzhjZTkxZjZlYmFhOTAxNDM5NjRmOTQwMTkwYyBweTNrLWlzc3VlMTcxNworNjkwMzUgYmVhNmI3YTBiOWEyMmY4OTUxOTRkMjYzODRhNDY3NmNkMjlmOTQ4OSBweTNrCis2OTAzNiAyYTZlMGJjNGJjMDMxOWFmYTRlNjg3MWE1MTk0YmRjYmU1M2RmMzdmIGlvLWMKKzY5MDM3IDIzMWM0ZTQ5MGIxZjU5Zjc0ZGE1ZTkzODRhOGMwYWY0ZTFlNGIyNmIgaW8tYworNjkwMzggNjJjYTgxZGQyYWU4ODcyOTZkZWM1NzEzYWQzZTBjNTAxZjM3YjQ1NSBsZWdhY3ktdHJ1bmsKKzY5MDM5IGI2NzQ3MDZmM2IxMGVkZTJjNmU1NDJkNDQyOTJhZDhjZWQ5ODgwYTUgbGVnYWN5LXRydW5rCis2OTA0MCAxNDM0ZDFiYzY2N2Y3MjgyOTZkNjYzNzVhMmUxNzU2ZjEwNDFiNTdmIHJlbGVhc2UyNi1tYWludAorNjkwNDEgYWIxMTQ2NTUxMjU1MjMxYWFhODc2Yzg0NmFhZGZlZmUzODJiMmVjNiBweTNrCis2OTA0MyAwNTIyY2ZlZTg3OWExMWQzM2Q0YzFkOWYwZjAzYjI3MTQ4NDkyZWVkIHJlbGVhc2UzMC1tYWludAorNjkwNDQgODQwMDI4MjI2ZWQ1M2ViNmYzYjU0ZTRmZDFiNTBkODA5MGI3NWM1ZSBpby1jCis2OTA0NSAwNGNhNTdiYjcxMDgzOTM5Mzk0ZDMzMGQzMzhjNjUxYjBmMmZiMDU4IHB5M2staXNzdWUxNzE3Cis2OTA0NiA0YWI1MDhhNWNkN2VkMGEzNTIxODM1Njk2ZmYyYjU5NjMwNWI2YjAwIHB5M2staXNzdWUxNzE3Cis2OTA1MCBjMTAxZjc4YWVkOGI1MWIzODUyNGE4OGY3NDljM2U4ODIzN2FiYjNkIGxlZ2FjeS10cnVuaworNjkwNTEgYzkwOTNkNDE1OTBlZWEyMjQzYzliMGVjOTQzMjU4YmRmNDg4OWY0OCBweTNrCis2OTA1MyBmMDZkOTAwMjcyOTk0ODY0YjI1ZmE1NzdiMzc2ODczZGNkYzEyMjQzIGxlZ2FjeS10cnVuaworNjkwNTUgZDY5MDEyOWQ3ZGFjMjU1NjJlOWNkZWY5ZDVmYTkwODE2ZWEzNWYxYiBweTNrCis2OTA1NiBmZDRiZWJmOWRkZGVlN2FjOTc3NzdlYWU3ODFmODBkYWQ5YmNjZDg4IHJlbGVhc2UyNi1tYWludAorNjkwNTcgMzk3NTcyNWE4NWI1MTg0YWI3MjU1ZmVmN2IzZDFjZmE4MmU3ZGIzYSByZWxlYXNlMzAtbWFpbnQKKzY5MDU4IDhkNjAzZTQ5Mzg0NmY4N2IwYWMwMjY2MWM3MjJlZjRhYjdjYThlYTIgcHkzay1pc3N1ZTE3MTcKKzY5MDU5IGJmZjk5YTgxODI0YTcwOTY0ZDJkMWVkMjc0YTkyNWFiZGQ4MWNhZWQgcHkzay1pc3N1ZTE3MTcKKzY5MDYwIGNhNGRiZTRhZTYyOWY0MzE0MjU5Y2U4OGM0MThjMDlhODUxZDcyYjMgbGVnYWN5LXRydW5rCis2OTA2MSA5NDYzNDBmYjExNGI1MzBmMzRlMWU0ZGY4NDFhMTI5OGE4MzM4MjExIGxlZ2FjeS10cnVuaworNjkwNjIgMTg4NGQwODhlMGFjY2VjZjhiMTNiYTM4Mzc1Yjk5MWU2ZjQ0NzlkMiBsZWdhY3ktdHJ1bmsKKzY5MDYzIDBhOGE3YzQ1N2YxYmJmOWJlYzk2Yjk5ODhkY2NiMTBjZDgwNTBjMjQgbGVnYWN5LXRydW5rCis2OTA2NCA1ZmM2MDdiNmU0MmQ3Yjc5YTc2ZjM3ZTE3OWM2MWY0MDk2MjI3OTA3IHB5M2sKKzY5MDY1IDczYmEwZjRkYjBkNTkxMGRjZjIyODYxZGZhMDExYjc3Y2NiNGM2Y2UgcmVsZWFzZTMwLW1haW50Cis2OTA2NiBkOGM1MjJkNjAwZTRlM2U0OTYwNmE2MTQ2MmE4OTUyOTA1MzdiMWNlIHJlbGVhc2UyNi1tYWludAorNjkwNjcgNDQ0N2JjMWY1YTUxMjE0ZjYwZjY4OTYzYTllOWY4OWNlOGFjN2U1YSByZWxlYXNlMzAtbWFpbnQKKzY5MDY4IDk3NDJlOGE0ZGNhMWYwY2MzOWI2NTA4MzAzOWQxNWE0MjE1YTM5MGIgcHkzaworNjkwNjkgOWMxZjA2YjI3M2Y3MmM1NjIzZTkxZjA5NDE3ZjFlMmNlMGQ5YmQ1MyByZWxlYXNlMzAtbWFpbnQKKzY5MDcwIDk0NDA0NjgwODM1OTNjNTIyZGI5ODRlOTlhZDJmZjEwOTQ4NGMwZjEgbGVnYWN5LXRydW5rCis2OTA3MSA5YzVhZWY5ZjFmYTcyN2U3OWEyYmIyMjU0NGE2NGNkMDAwYzQ3NjI2IHJlbGVhc2UyNi1tYWludAorNjkwNzIgZjBhMWJmMjQ5MDEwNWVkZDg4NjVhYjNhZWQxNDU1ODgwMzdlOWE3YiBweTNrCis2OTA3MyAwMWI5YzVkOTllYmUyMzQ0MjFkNmRhMDA2ODFkZmJmMDZlMDFiNDg0IHJlbGVhc2UzMC1tYWludAorNjkwNzQgNTE5YjIxZjg5MWViZDVhYThiOTliZDI2YjAxZDE2NzY4MzM4ZGM4OSBsZWdhY3ktdHJ1bmsKKzY5MDc1IGJiNjM5MTU4Mjk2ZTc2NTYyNmEyODFjNWViMzc5MDY2NDIzMzc1ZTcgcHkzaworNjkwNzYgZDg3N2RiZmQ0YmY5MzllMTI5NTZlZmNjODAwNDI5MjBjNGQ1ZWQ3YSByZWxlYXNlMjYtbWFpbnQKKzY5MDc3IGJlZGM2ODQ2ODQ0ZGJmMGY1OTE0YTQ0Mjg1YzliZmE3ZTY1NDYzY2MgcmVsZWFzZTMwLW1haW50Cis2OTA3OCAyMzg0YzA0ZWRiYjYwYmI2Y2RkMjllNzM3NDMxYWM5ZjMyNmJiMGU5IGxlZ2FjeS10cnVuaworNjkwNzkgYTMzMDQxOTBkOGFhYWE5MTUwODdjYzViNGZjYTY5MWEyNTcyNmU2OCBsZWdhY3ktdHJ1bmsKKzY5MDgwIDlhOWQyNmU4NDJiMzMxNWE2N2IxNzczNjEyYjYwZDM5YzE0NDkwNGIgbGVnYWN5LXRydW5rCis2OTA4MSAzMjI4OTI5ZWNiNmQ4NDgzMzc5ZDI5ZjZkMGQyMjY5ZTQ3YzdjMDI3IHB5M2sKKzY5MDgyIGQ2NmUxYWJiM2E5OGNmZDZjN2JiODYwNTk0NjU5N2ZiMjNhN2JkOGIgcHkzaworNjkwODMgN2FkOTk2ZWUzMzM0MWRmMDY4MWYzNDk5MDNlYzAxMzNlNmFiYjA1YSBsZWdhY3ktdHJ1bmsKKzY5MDg0IDcyNWIyMDg3MzBhNTkzNDkxNGY5N2FkNzM5NzAwMGQ0MzY0MTYzNDggcmVsZWFzZTI2LW1haW50Cis2OTA4NSAwN2ZmMjgxYmUwMmM1NTc2YWFjNDBkNjA0NDFmMDI1ZGE3ZjgxMjNkIGxlZ2FjeS10cnVuaworNjkwODYgNGY2MDdjM2FlOGUyZDE3M2YyYWE4M2FiMDgzOTYwMDY0MDFhYjhhNCBweTNrCis2OTA4NyA3Y2IzNTFjOWNmNDAyNDdlMjY5MzcyZTdhYTg5NDEwNTRmNTAxZDkwIGxlZ2FjeS10cnVuaworNjkwODggNGI4OTc2ZWE2OTY2MGE4YjI0NDQ1ZTc3NTBkNTQwZTc5NjdmODA4NiBweTNrCis2OTA4OSA5ZWI4NGZjNDM2ZmMxYjNhNWE0YzZhYmJiNDNlMGY2Y2YwMzRmOGJkIHB5M2sKKzY5MDkwIDRhYmNmOWQxYjkzODBmYmEwMTZlODhhNDkwNDhkOGE3NjRlNmNkMGQgcmVsZWFzZTI2LW1haW50Cis2OTA5MSAxNGU1YjZlODM2ODAwZjgyYTk5NzdlNDExZWIxZjA1OGQ3Y2UwYWE0IHJlbGVhc2UzMC1tYWludAorNjkwOTIgMGI2NjdlMzkzZWIzNDg3MDFmYmMxYWFmNjEwNzU1NzI1ZjRiOTZjYSBweTNrCis2OTA5MyA5NjkzNDZkYmYzMWUyMDRjNjE2ZGY2Y2YwNzYwZGY2MjBiNjhiNWE0IHJlbGVhc2UzMC1tYWludAorNjkwOTQgZGFhZThjMzI0YmUxYjkxOTEzZjU0Y2ZkY2FlNjk3YzQ1M2VlZTI3MiBsZWdhY3ktdHJ1bmsKKzY5MDk1IGQxNjI5YTk1OWNiODUwNDY5ZjZiY2QxY2RjM2M5YmEzM2E2NWE2NmUgcmVsZWFzZTI2LW1haW50Cis2OTA5NiA0NjNmNmMxMmYxZDRjMjUxMTNmNjBlM2I3MDljOWRmMzgxODM1Mjc0IHB5M2sKKzY5MDk3IGQ4NTcxNDU3NGM4YTUwMzViMGQ5NDBiNGVjNjU4OTRhZTc3NWRiMmIgcmVsZWFzZTMwLW1haW50Cis2OTA5OCBiY2I2YWQxY2I1NWRmYTMyYTQyNDJkNmUzOGM5YWM1Y2RlYzJmMWVjIHB5M2sKKzY5MDk5IGFmOTRlZjM4YjVjMGYyN2JjZTk1ZDA5MTA0NTQ4NTgwNjYwMzhmNWQgcmVsZWFzZTMwLW1haW50Cis2OTEwMCAzYzI5MGJjMjFkMmMzZGFiOTVmY2E2YTk5Y2U3OWRjZDJmMDQzNDc4IGxlZ2FjeS10cnVuaworNjkxMDEgZTQ4YzU5MTRkYTgxOGZjOTExNzY3YWU3YmE2NGRiODFhOTZhMzQxNiBweTNrCis2OTEwMiBlMmRjYWQ1NmU0MGUwMzE3NDllN2QzODAwOGQ3YmM3Y2M1Mjk2YTAxIHJlbGVhc2UyNi1tYWludAorNjkxMDMgNWQwZWFlYjQxMzRkN2VjOWQzNzg3YmJhM2U5MjdkM2Q4OGVjNjZjMyByZWxlYXNlMzAtbWFpbnQKKzY5MTA0IDRhNGE3NDM3YzVlMWNmNjZhZDRmZjI1NjZlZTg1ODcxM2Y3YzMzOTQgaW8tYworNjkxMDUgOTFlZDNlY2UwYzc2YTJiMjQ1YjA3NGNmNjFmYmM2NWQ1ODZhNzhiOSBweTNrCis2OTEwNiBmYzU4NmIzODE5ODczZTYzZjk3NWYzYTYyMmI1NDNkZDQyYmYzMTk3IGxlZ2FjeS10cnVuaworNjkxMDcgYzI2MjhiZmU2YTY4NDhmMjg3ZTFjOTJjNjQyYTY4NjcxM2ZmMWE2ZCByZWxlYXNlMjYtbWFpbnQKKzY5MTA4IGMzNzhjNGY0YTc5NjllMWZkMDU1OTc3YWY5Y2MzYjc4N2E0MTdkNGIgcHkzaworNjkxMDkgMjBmNGFmY2QzYjI3ZWU2MzAwYzhmZjkxOTIwYzBkZTJiNjBmMWIyYyByZWxlYXNlMzAtbWFpbnQKKzY5MTEwIGI4OGQzNzcwMTFmNTBkYTlkMzRiOTg3Y2Y0MzZmZDc0OTliNWJkNGQgcHkzaworNjkxMTEgYjQ4YjVkZGFkYTg5NDhlOGM5NTMyNTk2Yzg3ZTBiZmNiNWJhOGMyMCBweTNrCis2OTExMiA2YTI4OTZkOTIzZTNhMmMyNmI5MjZlOTNjODI2MDY1NjYzZjllOTJjIGxlZ2FjeS10cnVuaworNjkxMTMgNGFiMzgxYWVhNjU4MDIwYmYyZDQ2YzQ1NGYyYTdiODUzNjY3N2VkZSBsZWdhY3ktdHJ1bmsKKzY5MTE0IGUyMjcwNTRkNDk2ZGZlODRlYzc0M2IxYmU5ZTJhYjg5OTZhMDI3MGQgcHkzaworNjkxMTUgYTAzOGU4ZmI2N2MyMTBlY2UxOGNhYmE2NzIzYjc4N2IzMTQwZjI4YyBpby1jCis2OTExNiA3Yjc5Njg4NjI2ZTRlZjBkYmM5MWQ2MmNhZTQyNmRhNjVkNThjZmE2IHB5M2sKKzY5MTE3IDk4NjdjODQ5NTMwYmJiZjI2N2JjODA5ZmViMzE2M2IwNThjMDExZTcgcHkzaworNjkxMTggOGMyYzcyY2YyYTBjZmI2MmZiMzAzY2E2M2Y1ZWVmYTVjNmZmOTcxZiBweTNrCis2OTExOSA2MTc4NzUzMzM5NWMwZGFhZGFhYWQ1NTdiZWI0ZjIwNzhmZThhYTYxIHJlbGVhc2UzMC1tYWludAorNjkxMjAgZTY3ZGM0ZGI5NjRjODlhNjc2NGQ0ODNiYWE0NzRmNWVkNDQzMzMxZiBweTNrCis2OTEyMSAzYzJiMzVhMTA1OTNiZDY4Y2Y4ZmY3OWRkNmYzMWY1YTcyYTQzZjFlIHJlbGVhc2UzMC1tYWludAorNjkxMjQgMzU5Mzk0YjYzYTIzODhhYzI3YzA5OGNlZWYyZjQ4YmVhMjA2MTUzMiByZWxlYXNlMzAtbWFpbnQKKzY5MTI1IDdmYzBhZDExYjBhZjA3NGIwNTRhMTFjMDZjMzZjZGExYWFjMmM5ODggcHkzay1pc3N1ZTE3MTcKKzY5MTI2IDM3OGJjMThkMjM1MDliYmYxOWM4ZjdhNWI1YWU4MWM4NTI1YWUzYTggcHkzay1pc3N1ZTE3MTcKKzY5MTI3IDIzOTQ0ZjFkNTNmZGZiOWNkMDAwZGJhOGFiNzI2YzNhYzQyZmY4OTIgcHkzay1pc3N1ZTE3MTcKKzY5MTI5IDRjOWVhNjQ3ZWFmNDIxZGU1NzY5MmQwZWYzNjE3ZDNlZTIwOTJkNjggbGVnYWN5LXRydW5rCis2OTEzMCBjNWUyODI4NWI3NGQwMTIzMjFiNTZjN2I3YTNmOWVmYmQzYzZlYzdiIGxlZ2FjeS10cnVuaworNjkxMzEgNzU0MDMxNGZmMjY3YjRkNWVlMDNjZDUzOWYyYTAyZWJkZGMwNjdhNSBsZWdhY3ktdHJ1bmsKKzY5MTMyIDAyYTkwZGMwYzI5YThhZjY1YjBiMmI5MTE2ZTZjNDBiNGJhNjQ2NWEgcHkzaworNjkxMzMgZGYwOTA1OTdhZmFhZjBmNzc4YjVjM2I2MWE3NTFmZDJmNzk1MWZjNyBweTNrCis2OTEzNCBiZTU3MzU0ZGRiMTE0NDYyMzBhY2JiNGIxOWFmZTU3MTI5MWFlNDE1IGxlZ2FjeS10cnVuaworNjkxMzUgZGNmZDQzNjU2N2NlZjk0ODdkZDkwYTU0N2E3ZWJhM2YxZmRhNDY5ZCByZWxlYXNlMjYtbWFpbnQKKzY5MTM2IDQzMTcxZjU1N2FmODBmZWEwYzhlMGEyYTM2OWQxZDdkMGJkODUxMzcgcHkzaworNjkxMzcgYzA2ZmFhODE5NmIzYTA3ZTY2YTcwZjdkOGUyYmUxMDcxODFiMTRlZCByZWxlYXNlMzAtbWFpbnQKKzY5MTM4IDFjMGE1YTk4MjdmYTk3ZjZlMWI5NTFmNjA2MDc1OWY5YzRhYWI5NjQgcHkzaworNjkxMzkgNWY2ZDIyNWUzYzFkYWMwOWFiYjczZWY1ODhlNjM0OGE4ZjQxNDIyNiBsZWdhY3ktdHJ1bmsKKzY5MTQwIDk0MjZlZWI3ZjRlNmE1MWNjZGMwZDBkMzYwZjI4MjhlYjc4ZDk2NTIgbGVnYWN5LXRydW5rCis2OTE0MSA5ZDNjMmNlODZmNDI4ZTIxZmM0ZWIxODNhYTIzOGJlZTI2NzA5Mzc2IGxlZ2FjeS10cnVuaworNjkxNDMgMGNhYTAwMmY1ZjNkMjU4ZTRkNWQ0MmExZDhiNzE4NDNmOWU0NzBjZSBsZWdhY3ktdHJ1bmsKKzY5MTQ2IDEwZGFlZTNhMzYwOTc4YjkzOTM2MGM4MTMxNWU0YjhjZDc2NWY2NjIgbGVnYWN5LXRydW5rCis2OTE0OSBjZDVkYjQzZGJiNjViOTE3MDIxMjAxYjM2OTRiMWE3ZmNmNzQ2MjQzIGxlZ2FjeS10cnVuaworNjkxNTAgMTdkNDAxYWQ2YTIxNTlmZjhjMGE3NGI4ZjY4YWQ2NzlmZGI1ZTI3ZCBweTNrCis2OTE1MSBiYzJkOTRmZDkxMGMwYzgzNTA4OTMxZjdlODRlYTY1ZDEyZGI2OWE2IHB5M2sKKzY5MTUyIDFmMjkyMmJhNWEyYTEwMTg5NWYyOTVhOTMzOTQ0ZTUyNzk4NzMzZWUgcmVsZWFzZTI2LW1haW50Cis2OTE1MyA0YzIwNTgzNTA4MzM4Y2Y5MGE0OTVkNGVjOTFlMzc4MmY0MzRhODk2IHJlbGVhc2UzMC1tYWludAorNjkxNTQgYWEwN2ExMjMxOTRhMGI3ODljNjNjYjQ3Zjc4ODY2YmZjMmFhMTdlMyBsZWdhY3ktdHJ1bmsKKzY5MTU1IDczOTgxYmNkYTVhMmJiY2FhNThhZjRiNGRiNzAwZWY1ZGM4NTY1MzEgbGVnYWN5LXRydW5rCis2OTE1NiBlYjI2MDdhNjUxNmU2N2JjYTQ1MDhhMmRhZWQ2MzgxZjdiNjcxMjVkIGxlZ2FjeS10cnVuaworNjkxNTcgYmM5MmQ4M2U1NTA4Mjg3N2RmZmU1MjAyMzg2NDJhMmRlNDViMmJiMCBsZWdhY3ktdHJ1bmsKKzY5MTU4IDg2NzJiMGY2NTc1ZDNiMWNjNmFlY2YxMDM4Yjg5OTljNzNlNjY0MTYgbGVnYWN5LXRydW5rCis2OTE1OSA5YTI0NGFmYTFhOWExODJmNGE4N2Q5NTdiNDA4M2ZkZDcyNzk1MTc5IGxlZ2FjeS10cnVuaworNjkxNjAgYjQ3Nzk1OGRmOTc4ZWQxYWNjZDQxZWMyMTNiNjJkNjExOTVlN2E0MyByZWxlYXNlMjYtbWFpbnQKKzY5MTYxIGZlYjk5MzQzMDdiOWI3ODk1ZWJmNDFhNDI3ZjA2NDVkYmYyZjc4NGQgbGVnYWN5LXRydW5rCis2OTE2MiAxNDg0MjE3MmIxNTIyZjliYTBiZmQ0ZGE1MWEyOTBiYTM3NzUzN2VlIHJlbGVhc2UyNi1tYWludAorNjkxNjMgYjhjZTk3OWNkZGNlMjA2YzcxYzA2ODdmNDdlZDc3MmFjMjU3MTAzNSByZWxlYXNlMzAtbWFpbnQKKzY5MTY0IDM5NTRjOWI5MGI1MjdhMTEwMmVkZTdlNmU4M2M1ZmFjNWU2MjU4MjMgcHkzaworNjkxNjUgMDZiYmNiNzkyZjA0ZTBhMzRkNzI1NDFiYTUyN2IwMjIyMmMzZmVkNyBweTNrCis2OTE2NiA4ZDNmN2RkOWI2Y2NlMDUzZGJlYTAwNmRjYTA4NDQzZjcxMTEyNGE3IHB5M2sKKzY5MTY3IDUwYmQyYzE4ZWZmMDY1Mjk1YzA5YjhkNDQ5OWRjNTVlZGE2ODc4YTQgcHkzaworNjkxNjggODE1NTg5ZDYyYTlhZTIwMWE5MDQ1NGRjNjhiMTI5MTU0NjgzMDI5ZiBweTNrCis2OTE2OSBkMjZkOTc4ZDAwNjY0ODY4YzBjY2I4ZmU5NmVjMDU0MzgxYzA0NmQ0IGxlZ2FjeS10cnVuaworNjkxNzAgNGIzMjQ2YzgzZTNmMmNjYWM3NDE1NjFjYmE1YTQ3ZGYyMmQ5ZGY2MCBweTNrCis2OTE3MSA0MjdmNGE3NGY1MzhhYmY0NjczMWNkODVlOGFkZDlmZWZkNGQyNzRiIHB5M2sKKzY5MTcyIGQ4NWVmMjZlZmQxMDM3NmJiMjEzNWUxZTE4YTdjZjA2YmRmMGY3MmQgcHkzaworNjkxNzMgMTM0ZmJjZTExMWU5YjljMmQ4MWVlMDQ4ZDg4YTMxOWY4Mjg1OWEwZCBweTNrCis2OTE3NCBkZWVkZGRjN2UwYjRkOTFlM2U5ZDYxMTU4YmUyOTA5NDg0NTJlODMwIHB5M2sKKzY5MTc2IDM4NmViNGI1Y2JiM2FjNjFmYjVlOGI3MDdjM2RlZmU2MWRmNzVlYzMgcHkzaworNjkxNzcgZmJiMTdjYWI1NzE2ZTM5MzdkMzUwZmQ0NzJiNjc0MjFiOTMwYzRhZiBweTNrCis2OTE3OCA2YmNmODRkNjM3OTc1MmJlODZkMWY5YjM0OTkzOGU3ZDdmNWMwZDE1IHB5M2sKKzY5MTc5IDc2NjQwNWMwNGJkYzI5NDQ1MzNjNGRhNjgyMDg2YjFmNjBmNmNkYWYgcHkzaworNjkxODEgN2M5MWY0NzliZDBkOTEwYmY5ZDRjMzQ0OTNkMGE0MWUwOGI4OGZjNiBweTNrCis2OTE4MiBlOTY3NWQ3MmUzZTNiOTQwM2RlNDBjMmQxMTEzZjE1MTBkZDIxNmZjIHJlbGVhc2UzMC1tYWludAorNjkxODMgZTY2MzA3NWZkMWFlNGE5OTgwMGU2NzUwNzhjYWYyYmE2Zjc5MDM3NiBweTNrLWlzc3VlMTcxNworNjkxODQgOWNhMzRjMThlMWJkM2ExZWYxYTMxODU0NjM1OTliODE3ZWMyOGU3OSBweTNrCis2OTE4NSAwMTYyY2Q0ZjU1YmUzMWQxYmVkMmFmZjVhN2RjNjkzZGQ5ZjlhMDg4IHJlbGVhc2UzMC1tYWludAorNjkxODYgZjAwODk0MTNjMTJmZDQzZTgyYzU1ZTlhOTUxMmMxNmFiYzM5YjllZiBweTNrLWlzc3VlMTcxNworNjkxODggYmE5NGQ3YzA5NWU4MGY4OWJlMjliMjIzM2RiZjMzYWM4NWI5Nzg3OCBweTNrCis2OTE4OSA0MTBkZmQ0MjNlZjEyYjNjMzQ3ZjRkZTljZTczYTVmNThhNmY4MjBlIHJlbGVhc2UzMC1tYWludAorNjkxOTAgZTJkYjE1MTk2YTU0YjUzOTAyOTQ2MjgwNjMxZDk5ZjVmM2E1NjYwZSBweTNrCis2OTE5MSAyMzU4Mjk5NTY0ZWE4MDQ5ZjhiY2ExYWExNTZmMWUwZDQ2YWE1ZjYzIHJlbGVhc2UzMC1tYWludAorNjkxOTIgZTk0NTc4MjQ3Nzc0MGM4ZmMxOWE5ZGZkMDA4NWNlMzNjYjFkOTBiOCBweTNrCis2OTE5MyBmZGFlNGU3NDlkMmIzODA5ZjA1Nzk4NDFmYTU5NzAzNjE3YWJjN2Q3IHJlbGVhc2UzMC1tYWludAorNjkxOTQgNTdkN2Q2YzJiMTFiY2M1NDk1ZjdlODljOWRjNTRmYTNlMmRjZmIwOSBpby1jCis2OTE5NSA0N2Q3NDcxMjRhM2UwYzRiYzcwODliZDcwNmViMmU1MWQ0N2JlMmVkIGxlZ2FjeS10cnVuaworNjkxOTYgYWVmMjlhOWVkNDkxODQ3MmNmMmI0NzNlMGY5M2QxOGYyMDZiYWE4NyByZWxlYXNlMjYtbWFpbnQKKzY5MTk3IDhjNDQxMGQwNjdlZTdhMTljN2I2YzY3Zjg4YjM4YWUxYWIzMjkzYzMgcHkzaworNjkxOTggYWUwMjZkMjU5ZDQxMTEzOGU1MGYwNzE0NzcxOWNjYjE5YTk2YWUzZiBweTNrCis2OTIwMCA5MjM2MzUxYjUyOWE0Y2JkYmE4Yjg1NmI3YTZkNTI4ZDFmYWI1YWVmIGxlZ2FjeS10cnVuaworNjkyMDEgYzA4M2MyNzRmOWFmZWNjYWQ4MmI4YjQ3YjMwNjczMDJiOTdiYmM1MiByZWxlYXNlMjYtbWFpbnQKKzY5MjAyIDJjMTkyNzJkOGU1NjU4NmUxOTdhMmIxNDRlNzBhOTlhOGI5MTU5MTEgcHkzaworNjkyMDMgNmU1Y2E5OGEzMGFjMzg1MzEwNWRkMWViNzA1NWIzOTYyNjY4YzY2MCByZWxlYXNlMzAtbWFpbnQKKzY5MjA1IDAxYjNhY2QxMDlkYmI1NjI0ODI3NGY3NTE0ZmMyMDBhYmFlNzAzZjAgbGVnYWN5LXRydW5rCis2OTIwNiAyYWRmOWVkNmJhN2U4OTc0ZTc3MjhlYTE5OWE4MjliOTE0MTU3Y2FlIHJlbGVhc2UyNi1tYWludAorNjkyMDcgZmY2ODNhOTI4NDE5MzQwZDVhMDMxODNlNTY3MWI3YzUzNTE0MGI2NiBweTNrCis2OTIwOCA4N2E5ODVhMWI1YzlkMGRjMjZhMTdmZDJkZGJmOThlNmJmZTEwYTg0IHJlbGVhc2UzMC1tYWludAorNjkyMDkgMDUwNzRjODgzNzM4NDdhM2JlYzRmM2RlMDhlMjNjZTA3YWMzNTE2NSBweTNrCis2OTIxMCA2MzM4NmFlNzdmNzkzZjgxZjcwYTc1ODk4ZWJkNzZhMTI2NzcxMzI1IHB5M2sKKzY5MjExIGZhNzlmMTIyYTFiMjVmM2U0MzIxMzdjY2UxYmY0MmU4YjE3ODg0MTkgbGVnYWN5LXRydW5rCis2OTIxMiA3YjdhNjM5Yjk2MGY1YzJkM2NiODM3MDIxOTg1ZjU2NjRjOGQ2NmViIGxlZ2FjeS10cnVuaworNjkyMTMgMGMzMjBmOGU3ZTIwMzQ1ODczMjJmOGM5YmZmNmUzZDMzNWRkYWUwMiBweTNrCis2OTIxNCBkZWJkMTRjNDg5YjkyMTlhNTQ4ZmMzMjAwMmY0YTRlZTgzZDJhNDFkIHB5M2sKKzY5MjE1IDg3ZmJiZjIyYWRmMzdiYTc4Y2Y4Y2ViMTI0MzcyNzI3ZWIyZjExNGUgcmVsZWFzZTMwLW1haW50Cis2OTIxNiA1YzcwMmE3ZDRjNDA5YWZjYzIzMWQ5M2FkZTQ5ZmRlNzUyMTYyMDhhIHB5M2staXNzdWUxNzE3Cis2OTIxNyA0MGZmODNlMDIzOTUzMWVjMzhmNmViZDE5NGQ4ZDdmNjI1ZDZlOWY0IGxlZ2FjeS10cnVuaworNjkyMTggOTA4MjFjN2FkODc0Zjg5MzM0NzlkOTkyOTZjNDg0NTQxNGZkNjgxMSBweTNrCis2OTIxOSA5OTEzYzQ3MTUyNjEwNjc0MjY1MGM2OGI5OWY0ZGFhZjRhYmIwZjQyIGxlZ2FjeS10cnVuaworNjkyMjAgZmFlMTc1OGEyMzQ2NTE4NzAyZTFmOTY2YzhkNTM2OGE2YTUwNjlkNCByZWxlYXNlMjYtbWFpbnQKKzY5MjIxIDYzMGE0MzQ1MWQwNGFhMGE0ZGExNDVhN2ViYzgxNDJjZTYyNjEzMGEgcmVsZWFzZTMwLW1haW50Cis2OTIyMiBhOTUzNDM5MWZmZjlmMWNiZTAxNWJiZWRkZDk3ODk0YjAzNjNjODRjIHB5M2sKKzY5MjIzIDM2MmQ5NmRiZTkyYzU0MTAyZjEyZjA2ZDI5ZDNlMWEyYTZiY2UxYzUgcmVsZWFzZTMwLW1haW50Cis2OTIyNCA3ODZjMTI3ODU3MmNjNmYzNzhiNThlZTEwZGIwMTJiZmQ5NThmMDEwIHB5M2sKKzY5MjI1IGMyMWQ4Y2RjY2FlMTBlNzJjNjFlMWU3ZTU5Mjk5YWYwM2FiZTMyZjMgcmVsZWFzZTMwLW1haW50Cis2OTIyNiAxNDc5ZGIyZWY5Y2Q1M2I1ZWYxOTAxNDRjNGU0NzJlMTVkOWFhYjViIHB5M2staXNzdWUxNzE3Cis2OTIyNyA2YzhlZGRmMjQwMzVkMzRjYzljMmQ2YzlmMmIxN2UxNGZiMjg5MjhiIGxlZ2FjeS10cnVuaworNjkyMjggY2E3MWE0NGQ1NDMyMjI5Yjg3MDNmZTJjODJjMjEzMDE3NTZkMjVjZiByZWxlYXNlMjYtbWFpbnQKKzY5MjI5IDYyNTFiOWQzMjFhZjhkOTVmYjQyMmE3ZjdkNzQ1ZTY1YTcyYjA5NTcgcHkzaworNjkyMzAgNzQ0MzhmYzExZDA1ZGNkYTk3YTA5YzEyZjYwYTJkOTU5ZjgzNjkzNyByZWxlYXNlMzAtbWFpbnQKKzY5MjMzIGY1ZDE0MzRmNGQzZjk3ZTNjMzY4MmE1YzU3MTJmZDE1YTFlNjZjZjYgcHkzaworNjkyMzQgOThmNGM5MDY4Nzc1MDcxMGZiNGUxYTZjOTYyYzA0MjVhNzE0MTBiZCBweTNrCis2OTIzNiBjODIwNzI1MjY1YWIxOTA5MGJjYWQxNjE3YTliZThhYjY4YzJlY2RmIHJlbGVhc2UzMC1tYWludAorNjkyMzcgZDNlNmYyNjAyMzAwY2FlYTc2NWQ0YTA1MTMzNzhmNjJkMmQzYjZhYSBsZWdhY3ktdHJ1bmsKKzY5MjM4IDM4ODBhMTU5MjEzN2U2OGI4OTFjODQ4MTc2YTE5ZTE2NjRmMmUyYTYgcmVsZWFzZTI2LW1haW50Cis2OTIzOSA2NzY1NDEwNmVlNzk1NzRhNmY0YTg4ZDhjNWI0ZTZhZmUzYmNkOGNiIHB5M2sKKzY5MjQwIDczNTRmMWFmYWVjYjQ1YjE0MWEwNDA5Mjk4ZTc5NmZmMjZkYjExMGEgbGVnYWN5LXRydW5rCis2OTI0MSA3YmE0MWMwOTE3ZmY3YjEwNDA2ZWY0YmM5OGE2NGIwOTYwZTgxYjk1IHJlbGVhc2UyNi1tYWludAorNjkyNDIgNWMyNTQ3OTVhYTA3YTcyNzE4Y2MwNmM4NmY2MTE2OGZiMTZkNTEzNyBsZWdhY3ktdHJ1bmsKKzY5MjQzIGFlYTkwZjVmMzk4YmRlYzBjM2NhMzZlMTc2MDEyM2MyYmJhNDJiOWQgcmVsZWFzZTI2LW1haW50Cis2OTI0NCBhMWE3MWQ1MTVkZDJmZDlmOWI1MGQ5YTJkZmNmNDMwNWM4MmRjOTljIHJlbGVhc2UyNi1tYWludAorNjkyNDUgMGYzYWFiYWU0Y2M2NDY1OTkyMjljZGE5YjVmZGQ2MTg0ZjNiMDI3NyByZWxlYXNlMzAtbWFpbnQKKzY5MjQ2IDViNzEzMDQ1ZWE5MDZlMGZlMjFiYmYxYTE2NGUzMTg5MzlhMDcyMWYgcHkzaworNjkyNDcgZjM3NzI3NzQ4MmFiNTg2MDgwMjcyMzUwNGM5NjQxYzhjYzY2YmJhNSBweTNrCis2OTI0OCBmMzUxZmI3ZWExNzk2YWMwOTRhYWVhYjQ2YjBjODdhMDU2ZjA5MWRjIHJlbGVhc2UzMC1tYWludAorNjkyNDkgODU3YTNmOWRhOTE1MzE1OWU1MjE2ZmZlYmE1M2ZkN2IxYmYxZDEyNyBweTNrCis2OTI1MSBjNTEzZTcyOGUyNGNiZjU2NjhkOGQ4YmEwMTYxYWRjMDNlODJjMTdlIHB5M2sKKzY5MjUyIGUyMGY1YTY4NGFlZmE1ODhiNDUwYjMzMGE0YjZhMWEyY2I2NWViYjkgbGVnYWN5LXRydW5rCis2OTI1MyBlYzY5ZGIyNGRlMTkwYTdlOTIyNDNkMDc2ZDAxODAzNWI4Y2YyYmE0IGxlZ2FjeS10cnVuaworNjkyNTQgOGIwODgyYzY3YjZjZmUxZjA4NTJjNjJlMGExYzJkYmE0ZmE0MThjMCBweTNrCis2OTI1NSBlNWFiYWZhZTM2MDQ1YzVlYmJjZjQyNzE3ZTNhN2EwMTYyNDBhMWU5IHJlbGVhc2UyNi1tYWludAorNjkyNTcgNzU1MjFjMTIzNjEzYWNhYmI3ZWRmMmNjNGM0ZjYyOTM2NTI1ZmJiZiBsZWdhY3ktdHJ1bmsKKzY5MjU5IDVmMzM1NGM1MmU4YjhhYWFlNGExNzQ0NDQyZWJiMzA1OWVhMjQ3MDcgcHkzaworNjkyNjAgZTk3MDdjYzM2ODlkMzhkYmFhZDAwZTQ5NDdlMzFjYjU5MmQzZWFhZSBsZWdhY3ktdHJ1bmsKKzY5MjYxIDhjMDE5ODc3NGVkNmRhYmVmM2ZlNWFjYWMzMjlhOWQ1YTQ1OTM5OGUgcHkzaworNjkyNjIgMWU3YTA2YTdmNWU3OGIwNzUxY2Q5NDU2MzkzNWQ1ZDc1NjhiNzk2MyBsZWdhY3ktdHJ1bmsKKzY5MjY4IGI1ODZjYTNhMzA2MjI1MmFhOThhNjI0NTcxZmI3MGVhODg5MGYwNjggbGVnYWN5LXRydW5rCis2OTI3MSA0ODQ1YWJmNTcyZjE0NmI4NGZiYTYyMTNhMTQxMWNlZGY5NzY1MzEzIGxlZ2FjeS10cnVuaworNjkyNzIgZWM2MzRlNTdiYzU4NjIzNjdjMGY4YmU4OTIxMDRiNzkyNzQ5MGI1NyBsZWdhY3ktdHJ1bmsKKzY5MjczIGY3NDUyODc3NmMxMTVmNDNlYTEzZWYwMmRmM2E0ZWIyMzZjMmRlMTYgbGVnYWN5LXRydW5rCis2OTI3NCAyNDU2NmU0OTk3YWUyZjY3NWU2YmM4ZmE1MDA0MTI2OGFhODFkN2U2IHB5M2sKKzY5Mjc1IGNlMDRlMzZmMmE1NTk5Mjk2YjQ3NGNkYmE3MTJiOWYyNmQyZDg5ODUgcmVsZWFzZTI2LW1haW50Cis2OTI3NiAyYjYwM2Y3MjMyNjA1ZGYzNTdmZjAwNTVhN2U1MzAzNTU0MGE1MjlhIGxlZ2FjeS10cnVuaworNjkyNzcgNDczZWIzNzBkZTJjZmQ2NmFiZmJmZjYxZmY1NzdjZjBmY2NjNzYxNiByZWxlYXNlMjYtbWFpbnQKKzY5Mjc4IGM5MWI3NmQ4ZWMwYTk3MTY1ZTU4Yzk2MGQ2YTc5YjkxZWU5MzNjZmIgcmVsZWFzZTMwLW1haW50Cis2OTI3OSBhYTJlYjBmMjQyZmZkOTU4OGJjYzQ3MTI4MjYzMjA4YzdlZGU2NDNmIHB5M2sKKzY5MjgwIDhlMTVkZjM3MjZlMTIwOWEwMWIxM2YxMmVmZThiYjM5NTdlN2JlOWQgcHkzaworNjkyODEgNTNkNjQ0NWM2YzVhOGQ5ODYwM2U3YzNkMzMzODg5ZTlhYWY1NGE5MSBweTNrCis2OTI4MiBiNDYxODVkN2U5NWE3YTBjMzMxZjI3NjgzNGZmNWNiNTZjMDIwNjUwIHB5M2sKKzY5MjgzIDM3OGFiYjI4MWUzMTVjZDA4NDAwZGJmMjRmNWYyOTZjNTEyZTRkN2IgcHkzaworNjkyODQgOGIxOGIzODkwZTMxNjA5NGNkZDAxYmFjNzIwMjE5NTQyNzQ1YTRjOSBweTNrCis2OTI4NSBlMjE0YmRkNTUyZmMyNmY0ZjZiMmMwY2FjNjM0Zjg4MmI2ODhkNjEwIGxlZ2FjeS10cnVuaworNjkyODYgNWE5NDI0ODkzYjVmZDFkNmVjNTg5NDNkZDIxZjVhYzQ2OGI0ZDhkMyByZWxlYXNlMjYtbWFpbnQKKzY5Mjg3IDIzMzNhNTdmZWI5ODUwMmRlMGIwYWJmMjBiYmQxM2UzZTAxZDkwMzUgcHkzaworNjkyODggMWIyMzNjODNmMmE5YjgxYWNmMGVmMmZkNDgyOWY2NDNmNWU4MzllOSBsZWdhY3ktdHJ1bmsKKzY5Mjg5IGNhNDIzMDA4ZmE0YWU2NTBmYzJkZDBiM2EzNTVlODdjNzZiYTM2NGEgbGVnYWN5LXRydW5rCis2OTI5MCA5MjE3YjNhNDc1Mjg2MjgwZjA2MWE3YWYxOWY0NjdkNzQ5YTIwZDQ2IHB5M2sKKzY5MjkxIDQ0NTJlYjA1N2NjNGNkYWVkNGY5ZTgxNTZiNzQxYjE3MmY1ODBmYjcgcHkzaworNjkyOTIgM2YyNzdiNTY1Zjc2ZWM2OGQyN2ZjZGU4YTc4NjdkNjhmOGQzNDBkZSBweTNrCis2OTI5MyA4YWE3MWMxOWRjYjgwOGNhODFjNmMyYzNkMWI0YTE3NTQ4ZmQ5YmY1IGxlZ2FjeS10cnVuaworNjkyOTQgMThkMzcyOWUyYmFjMDEyYzI3ZmI3YjMxZWE3NTcwMWNhOTZlODIwMyBweTNrCis2OTI5NSBiMTI2Y2U3MDdhMzQ2ZTgwM2Y3MzdkY2JjYjg0ODc0Nzg1OWI5ZGVlIGxlZ2FjeS10cnVuaworNjkyOTYgNTJmNzhiYjI2YmY1MGYzNGU2YzJiYmYwMDVlYjM0NWJkZTBlNzQ2OSBweTNrCis2OTI5NyBlZWFhMjU5MDY5YTMzYmY5MjA1YmNiMGUyM2NkMDlhYTllMThjZmI1IGxlZ2FjeS10cnVuaworNjkyOTggOGY4OTEwZjNiNjUxYzI4M2VkYTQ3OWZhZWZhMzk2ZmRiYTE2M2NmNSBsZWdhY3ktdHJ1bmsKKzY5Mjk5IDhjODgwYmJiZTY4NWMyMjAxNjNkMTZiZDFkMjBkZjNiODI0ODkyOTggbGVnYWN5LXRydW5rCis2OTMwMCAwYzlkNTk5ODM0YjhiNGNjNGNlZWExYzA1NGVmYWQxOTE2ODZhZjg3IGxlZ2FjeS10cnVuaworNjkzMDEgNDU3OTU3YTdkNmJhOWJhZjlhY2IyMDhjYWEwZTIyNjc0YTNkYTUxYyBsZWdhY3ktdHJ1bmsKKzY5MzAyIGY0MDEyZTc4MjYwYzVkOTA0NGYwMTg3OWM4NzU4OTZkNzFlZDhiYjAgbGVnYWN5LXRydW5rCis2OTMwMyBiZjNiOGUzMDIxM2Y2YWZlZTQwMDc1OTliNjAwYTg4NGRmNWY5YTU4IGxlZ2FjeS10cnVuaworNjkzMDQgZjBlNWY4NTg5YTBjM2Q0NjYzY2YyNTE5YjUwYmFkZTRjZThmN2Y3NSBsZWdhY3ktdHJ1bmsKKzY5MzA1IDkwYTRjNjY2Zjc3YTg1NzMyOTE1M2UwNzgzYWJlMTE1ZWJkNzRiODAgbGVnYWN5LXRydW5rCis2OTMwNiA0MWM3MWFkNDdmODkzZDMyZGYwMGYyMDZiOGQyYjE1NDEwNDg1ZjBhIHB5M2sKKzY5MzA3IDMyMWYyN2E0MTRlODU0YWRlZjUwZjRlZDhmYzA0NGNjZDYwYmY1MTIgcHkzaworNjkzMDggNzYyMzk3OThhNjA4NDlkOWVjMzdiYjVlM2VlNTYyMTVhM2FiMGJmZSBweTNrCis2OTMxMyAzZmMyNWFlMTg5ZTk2OGE1MDc2ZmI5YWYxMjFjODM1NmY1ZmM2ODNhIHB5M2sKKzY5MzE1IGUwNWM2YmU2YWYxMDBhODk3YjkzYjc0YTM3M2YwNzBjZTViNjc3ZGMgbGVnYWN5LXRydW5rCis2OTMxNiA0NjZlYjk3ODRlOGJhOTA4YWE0YjYyZTlkNTA0MDE5NzM4NTlmOTdhIGxlZ2FjeS10cnVuaworNjkzMTcgZWYzYzZkOWI0ZmVjYTY3N2I5NDZkNDUzODNkZjMzNGVjY2ZhMzA3ZCByZWxlYXNlMjYtbWFpbnQKKzY5MzE4IDk5N2IyNjMyYzliNzVhMWNiNjgyMGRlMmE4ZDEyNmMxOWI4YTNjNWQgcHkzaworNjkzMTkgZmRlMDNlNzViYzEwMGFkZGJhM2Q4ZTg5MjU1MTE1YjZlNDRjNTYwNCByZWxlYXNlMzAtbWFpbnQKKzY5MzIwIGRjODVjYTQxMjA3OWY3ODNhZGFiMjMzNWQ4MWQzZDQ4MGViYTcyNjAgcHkzaworNjkzMjEgZTU0MjVhZjYwZjMwNDE2MTUwNzIwMzNhOTJkMzUzMGZmMjAxYjcwMiBweTNrCis2OTMyMiBhMTg5M2M2OTE4Nzk0ZDBmNGIyNzFlZDllMmJmZmM3OTYxNjA5ZmFkIGxlZ2FjeS10cnVuaworNjkzMjMgZTZhMTQ2ODg1ODBlZjRkZDYyN2VjYmE2YjQwNzY1MjQxOTRkNmEzNSBweTNrCis2OTMyNCA1MGQ4OTQzNmFlYWI3M2RlZWIwYmEzN2ZkZGY2MDBiNGM2NGJiODYzIGxlZ2FjeS10cnVuaworNjkzMjUgMTY3MTAwNDgzOWY4YmZmZTI5ZWIwN2ViOGUxZjExY2UyMWViOThlNiByZWxlYXNlMjYtbWFpbnQKKzY5MzI2IDdlMWEzODU4NDdhOThkYjhmNTM1ZGVmMjg2MDY0ODliZTU2NWU2MTYgcHkzaworNjkzMjggMzc0MzFjZDEyYmYyNzRhZGM2OThiYWVlM2ZlNzAxY2JhOWViNGM3NCByZWxlYXNlMzAtbWFpbnQKKzY5MzMwIDIxYzNlMzUzMTUwNDYzNjFhMDBjN2NlM2ZkNTMyOTJmYmEwZmE1MDEgbGVnYWN5LXRydW5rCis2OTMzMSBlMjM5ZTk3N2JiMzJhMmQzYTYxNjIwZjYwNTI0NWJkNWQyN2I5OWMxIGxlZ2FjeS10cnVuaworNjkzMzIgYTNlYTY1YmZlMzcwNmE0NmU4NTg5YjM1MWJhMDQzOWU5MWNlNWEwZiBsZWdhY3ktdHJ1bmsKKzY5MzMzIGY3OGQ3ZWJiOTZkYTg0YzYyODUxYzVjYjI4YzEwZmEzMWQ2MjY3YmUgcmVsZWFzZTI2LW1haW50Cis2OTMzNCBjNTAyMmIxMDY0ZWE2NmVlMzUwN2VlMGE2YWIxYTMwOTVmYzlkODY3IHJlbGVhc2UyNi1tYWludAorNjkzMzUgZTQzOWY5NzIyYTczNDlkZmZlNWNmYjA3MjgyYjE4Y2FjNDg4ZTIyOSBweTNrCis2OTMzNiA1NDBmYmU1YzgxNjNmNDk4ZjY4MDk0MmVhNmQ2ZmVhNmUyY2QwODdiIHB5M2sKKzY5MzM3IDdiOGZhMjY1Mjg2NjkxMDdkMWJmMzQzMTNjYzZhYjg1OTg2ZDkzODQgcmVsZWFzZTI2LW1haW50Cis2OTMzOCBkYjhlZmM5NDAxNmY0ZGRjYzNjMjA5NjcyZTIwZWU1OTFlYzZhZGEzIHJlbGVhc2UzMC1tYWludAorNjkzMzkgZDE4NTUwMjk4YWY4NzczMDBmMzQ1MTEzZmQ2ZmEyYTM0Y2U3NDk4OCByZWxlYXNlMzAtbWFpbnQKKzY5MzQyIGZkZWNiOTE4MjYwNDBkZmE3Njk3Y2M2MmVmZGE3MWU2NjhlMDBjMmYgbGVnYWN5LXRydW5rCis2OTM0MyAxM2YxMzUyYTNmODc0M2UzOWM2MmEwYmRiNmQxNTBkNTA4ZDRkMDg3IHJlbGVhc2UyNi1tYWludAorNjkzNDQgMjA3MDk3NjkxOTcyNzRhYjAyMmRhNTgwNzE5NzY3ZTY5Y2RkMTRiNSBweTNrCis2OTM0NSA5YzQ2ZDEwOTAwN2U2YzhmMmQ5OTc5NjIxZDg5ZGQ2NTEzNzk1MmE2IHJlbGVhc2UzMC1tYWludAorNjkzNDYgNGNjNDlkOTc4ZWMyM2FhNTVmYmFhMzBhYWZmODNlZWVmMzRkNzQ0MCBweTNrCis2OTM0NyBiYmMxYzY4MTUzYWJkZWIyZTk3NGNjMGRmMjc4M2QwYTkwNThkYWIzIHJlbGVhc2UzMC1tYWludAorNjkzNDggMGY3NTExNTMzMDdmNDY5ZTNkYzBhODIwOWY2ZmE0Y2I1YzJmMzA4ZiBsZWdhY3ktdHJ1bmsKKzY5MzQ5IGM0YzYxMmQ5NWE5YjZkOTYzNjA0OTI2N2VkMTVmYzZjOTZhY2U3ZjIgcHkzaworNjkzNTAgN2UyOGEyYjBjMWIxZjE5YjUzZTgzNGY4YzcyM2IxMzhjMWJlNjZlZCBweTNrCis2OTM1MiBhMDBlNWRjZWExNmM4ZTA0ODg0NWY5MWMzOTI5NzkyMDM3Y2MwNzE4IHB5M2sKKzY5MzUzIDdhMDUyNTYxMzY0NDdlMGU1ZWMxMjU4MTQzZDY5MjMxYmRiZGMyNWQgcmVsZWFzZTMwLW1haW50Cis2OTM1NCBmOTgxZTA1NTdjMzUwN2NiNDZmNWM5OTlhODY2OGYzZGZmMGM5YTYyIHB5M2sKKzY5MzU1IDA1ZDFjYjA1M2Q0N2U0ZmNhZDgxMDI1NDcxMWU5OWVmMWY4MTMyZWQgcmVsZWFzZTMwLW1haW50Cis2OTM1NiBjYzgyNTMxMTYyNzU4MGIxMDE0YTMwYmRiODVmN2NlOWVjNmY3ZjE0IGxlZ2FjeS10cnVuaworNjkzNTcgZjM4NzgzNGNlNWRjZDM0ZTcxMzE2MjZkNjNlMjVhYjRhODY5NWJmZCByZWxlYXNlMjYtbWFpbnQKKzY5MzU4IDU0ZTQwOWMyZjQ4ZDZhMTI2MGIxNDg1YWRkOTBlYTg3MDk1ZTg1MDMgcHkzaworNjkzNTkgZmI0NTExMWYyNDRlYjVlOWFjNjIzOGUyMDQ2NGQ4M2U4YjdhNmQ3NSByZWxlYXNlMzAtbWFpbnQKKzY5MzYwIDE4M2E2YzI5YmY5YzE4ZGY1OWJiODEyZTg3NjZiYWU5YjI4ZTYwMGUgbGVnYWN5LXRydW5rCis2OTM2MSA2ZjQwNzY4ZDA5MDlkNjlhNDYyZTU0ZTQ2MWUzYWE4ZTQ5ZDdkNTUyIHJlbGVhc2UyNi1tYWludAorNjkzNjIgYjQ4MjBmY2VkYTI0MWIyNWQ3ZjkxNjBmMjlkZmRmMjU1MGYwODEzMyBweTNrCis2OTM2MyBkYjQ2ZjgyZDBhMWQxZGU0MzZkMmYxYjA0ZjJmMGI2Y2U0NWQ5ZTdiIHJlbGVhc2UzMC1tYWludAorNjkzNjQgNDMyN2RmYTY4MTE4Zjk5YjFiOTc4MDM3MjBjZDk0OTJhNTA0N2JjMCBsZWdhY3ktdHJ1bmsKKzY5MzY1IDE4MjEwYWZkMDA1YTcxMDg0NWJiNDY1MDM4MjI4NWJlNzYwMjc3MjMgbGVnYWN5LXRydW5rCis2OTM2NiBjOWFmZmJhMDY5ZWFlNTk1NDM2NWVlNDE5NjU0NWZkODA5YmQ5ZDZmIGxlZ2FjeS10cnVuaworNjkzNjcgMjhlNDMwZjE0YzBkY2Y0MzM3NjIxYmFjN2EyOGZkM2U0MTJmMWI3MSByZWxlYXNlMjYtbWFpbnQKKzY5MzY4IDE5ZGIzNzliYWNmODMzNzcyODJiMjE0N2IyN2Q4MjM3MzY3ZTRiMjUgcHkzaworNjkzNjkgZjJkZjEwYmE2MDU0ODVmM2QwNjI4ZDI1NDQ0MDJmYzM0YTE3YjE5YSByZWxlYXNlMzAtbWFpbnQKKzY5MzcwIDk2ZmU0NWRlN2YyNmZlZmE2NWQ1OGVkYzEyODJkYjNjNWE0ZWY1NzkgcHkzaworNjkzNzEgMWNlMDM2Yjg4MDkzNjQwMWVhMTU5YmFlZGZjMjkyM2JlNTE2NzYzOCByZWxlYXNlMzAtbWFpbnQKKzY5MzcyIGQxZTU0MDdkNTUwOWJhZDhjZjE3NjU3M2Y5NTk4MTM4YzA5OTljZDQgcHkzaworNjkzNzMgNDJmYWE4MDU0YzNkY2JhMmIxNjk4ZDFhYThhNjVhYjcwMzBlNjgyNSBsZWdhY3ktdHJ1bmsKKzY5Mzc0IGJhYTg4ZTllOTc2NmNhOGQ5MjQ2NWExMzA4MGQ0NWQ1YzVkYmNiNzggbGVnYWN5LXRydW5rCis2OTM3NSAyYTQwZDk4MWM2NTJhMmMzY2VmYTdiODRhOGJlMzdjOTBmYWQ5OWMwIHB5M2sKKzY5Mzc2IGQ0NjEzZTk3MDQ5OGE0YWI1ZTZjYTZhNDhiNjU2MTUzNWFiNWIwNjkgbGVnYWN5LXRydW5rCis2OTM3NyA5ODU2YzRmYWFjMDQ4MWJkNzA0ZmUzMjYxMGRhZDk4MDczMjRmM2VhIGxlZ2FjeS10cnVuaworNjkzNzggYjRlMTU0YzhhMzhhNTViN2M5MjI3Nzg2ODVkMmYwZDRiNTc3NThjZiByZWxlYXNlMjYtbWFpbnQKKzY5Mzc5IGQyZGU1ZGEwZjU2MzRmYjgzZmQ4NjgwODViOGM1MzM5MzIzNTdkYTAgcHkzaworNjkzODAgNThiN2RjOWM5NTU3YjdiZDkyZDQ5N2RmMTAxNjU4NWFmODFlZDM5YiBweTNrCis2OTM4MSBjMDI4OTVhM2VkNmQ1N2YzZjg2YjQ0YzA2YmU3MGJlMjdjNmY0ODI2IHJlbGVhc2UzMC1tYWludAorNjkzODIgZTE3YjM3YzM1YzdiYjI0MDUxZGM5NWI1YjQ5Y2MyYzY2MzBjOWRiMCByZWxlYXNlMzAtbWFpbnQKKzY5MzgzIDAzYWRkZDE0ZTZmMmMzMWNlN2Y5NWM4MzIzOGIyZTQ0ZDVkYTc0OTQgcmVsZWFzZTMwLW1haW50Cis2OTM4NCA4MTk3MTY2YWExOWI3ZGMzM2U0N2M5MGMzODBlNjYyYzk2NGY0YmVlIHJlbGVhc2UyNi1tYWludAorNjkzODUgYTcxMzJkYjY5MDkyMThmMDIxZTAzZjAxNDU5MmI2YjY3NTNlMWEzNSBsZWdhY3ktdHJ1bmsKKzY5Mzg2IDdhZDFhYjk5MDZlZTVhYWQ4ZGZmODQ4ZWZlOWJlMTcyMjI3YWVkOTQgcmVsZWFzZTI2LW1haW50Cis2OTM4NyBiMDkxYmY4MzQyMjZhMzlhMDI5MmRkMGQ0ZWNjNWFlOTJiNDNmOTQ0IHB5M2sKKzY5Mzg4IDZlOTNkZDU3OGNiODY2MGZmZTBhMThiYzEzYjA4OGRhNzlmMGVlNzAgcmVsZWFzZTMwLW1haW50Cis2OTM4OSAwMTUxYzUxNGRmNTY5ZWYxYjE4NTJkNGZkYTdlMTNjNzNjYjQ4NWFkIGxlZ2FjeS10cnVuaworNjkzOTAgMjA3ZDBlYTk1M2RmMTg1NTBjZmQ3MGRhMDA4YmE1NTFlNDg4MjlmYyByZWxlYXNlMjYtbWFpbnQKKzY5MzkxIDBiMzgxYjQyM2NkZjcyMzljYzFiMTg3NzEzNDU0M2IzZmRjMzFhZjUgcmVsZWFzZTMwLW1haW50Cis2OTM5MiA2NmVjYTEzZWRlMTgzYzJlMjgwZGQ4YWE2YmJlZDM4ODI2MzZmOTJhIHB5M2sKKzY5MzkzIDgxMTU0Njc3MGQyMGY2MGNkNDRmODI3OTFiNDUzOTgyNTYwYTM0MDAgcmVsZWFzZTMwLW1haW50Cis2OTM5NCA0ODA5YWZhODVhOWI2YmU5YmE2MzAyOTI0ZGUwNWI5ZTdhZGZlZmJkIGxlZ2FjeS10cnVuaworNjkzOTUgN2ExMzU2ZDJhZWVmMzNiODYxYmZiNjcwMmNjMTFhODgyZTVkMGM2MiBweTNrCis2OTM5NiBhYjYwYmRjNzA3MTA2Yjk4ZTFiNTZiNzU1OGQ5ZTM3YjNkOGRiMTVlIHB5M2sKKzY5Mzk3IDY2ZGE1MjgzMzM0ZjA2MWIxZDM4MDVhNmRkN2EyMjIzMzk0ZWQyM2IgcHkzaworNjkzOTggMzg5NjEzM2M5NWNiYThmY2QwMGI0ODEyZDk0NzU4MzM4N2VhNDNhNiBweTNrCis2OTM5OSA1Y2RjNWYwYzEzNGM4ZTY0NTdmNDQ4MDE5MDZjNDI3MWNiOTY1MGE4IHB5M2sKKzY5NDAwIDMyOTU3OTBhNjViZTdmY2E3OWE4OThkYmJkOTY5MDA1M2M4MTE1OGEgcHkzaworNjk0MDEgYmM1OGE2MWY4MTdiZjkyOGZiODY3YWRhMTI3NmExOWMzMzY1OGFiNSBweTNrCis2OTQwMiA0M2QzYTk1ZWQ2NjIxOTcyMDAxZmRiMDNjNWY3ZTk2NGI4MmJiMWE1IHB5M2sKKzY5NDAzIGVlZjM5YjQzOTZmZmU0NjFmNjU2ZTM0YTE3ODFmODFkOTUyOWM0MWYgcHkzaworNjk0MDQgMmYxZWZmZjA2NmIzODgyZDcwMzFjMDdlMTZjOTY1NjRjOWJmODIxZSBsZWdhY3ktdHJ1bmsKKzY5NDA1IDAyNTA3ODgyN2I1NDA4NmM3MTRlOGI3MmRiM2JjZGYzMmRiZThlMzUgcmVsZWFzZTI2LW1haW50Cis2OTQwNiA4Y2Q4ZTIzNjg4MjIxMWU0YmE4NjM5Njk4YjExNzkwZWQxMTRiNGE5IHB5M2sKKzY5NDA3IDkyZmEzOWI5YWYxM2M4MzYxZDUyNDc5YmUyNjlmOTQ2ZmJlYjU3NGQgcHkzaworNjk0MDggODczMTdhODg5ZGIwNDRhNjQxNjZmOGY2NGZhMjM5ZmI2NmFjMTg3NyByZWxlYXNlMzAtbWFpbnQKKzY5NDA5IDY5YjI2ZTk5MGViODYxMGZkMGFlZjkwNWI0YTg2NTE4YTBiYTZkOWMgbGVnYWN5LXRydW5rCis2OTQxMCA5OWUyNjRmZTIzODMwYjNjNmEyMzVlY2FkNmI1YzQ4NmI4ZGZlODczIGxlZ2FjeS10cnVuaworNjk0MTEgYzIxZmI1ZWZjNjM4ZGEyNWVmNDE4NmVhMWRiZTQ1NWFhMmE5NDEzMCBweTNrCis2OTQxMiA5MDFjYjIwN2IxZDMxN2U2OGUxODE4NTI3N2MzZTgzMzNlOGE1MTc1IHJlbGVhc2UzMC1tYWludAorNjk0MTMgNDk0ZGEyYzcxOTAyZDNiNmEyOTJmNGU5OTUzODA3ZmRmNWQ1Mjg3MCBsZWdhY3ktdHJ1bmsKKzY5NDE0IDk4OTlhZmUwZmY4YzE4Y2ZkOTNlY2RkZmMxMjBhODZmODA5ZTE1ZDAgbGVnYWN5LXRydW5rCis2OTQxNSAwYWIzNjc5NmRkNzk1ODkwYzhiYzY0MDY3MzgyZmI1M2Y0M2NkODM5IGxlZ2FjeS10cnVuaworNjk0MTYgMzIwY2Q3MWUyYzU2MmNhZDczYTdkOWNjMGRiZmVmZTA0NTRlYjUzMSBweTNrCis2OTQxNyAxMDBhZTZhOGJjMmRiMzk2N2NlNjhjNTNkYzllOWYxODgwNGQwY2IzIGxlZ2FjeS10cnVuaworNjk0MTggY2NjNzE4OGZkZDI4ZmMzZDIyMDc3Y2UwYjA0YTY3NWQ5ZDk0NjFjYiBweTNrCis2OTQxOSA1Y2NlOTlhYTFmNThhYzdiOTIxM2UzZjUyMjUyZWQ2Yjg0OGRkZjQyIGxlZ2FjeS10cnVuaworNjk0MjAgNTcwOGExZTAxNjQ1OTBlNjA5NDFjNDAzYmFiMjEzNjEyY2U3YjI2YyBsZWdhY3ktdHJ1bmsKKzY5NDIxIDJkMzU0ZjRkNzdiY2JjNmM3NWE3NDBkOGZiNTBmOGM4N2U3NGI2ZjQgcHkzaworNjk0MjIgMTc1OGRlZDQ0YjRlMGZiYjQ3MWU2MTNmNzY5MGEyZWM2ZjMxOGU3NSByZWxlYXNlMjYtbWFpbnQKKzY5NDIzIGY4NWVjZDc1NjQxMTRhMjAyMDE0YTlmNDVhYTQ4MjgyNDI2N2VhM2EgcmVsZWFzZTMwLW1haW50Cis2OTQyNSAxMTdlMTUyZTUxM2E2NTBjZGIxODQyNDk1ZWQzYmQ3YzJiYTYyN2E4IGxlZ2FjeS10cnVuaworNjk0MjYgNzRkMTk2YzU0MmY3OGFiOGE5NDljZTZmODc2MmMwMTgyZmEzNzVjYyBweTNrCis2OTQyNyAxY2M2MWM3OWI5Y2VhZmFmMmIwZTNlNzM5YzRkNjcxZjMyZjNkOGEyIHJlbGVhc2UyNi1tYWludAorNjk0MjggZThmYTEwYzY2ZDE4M2UwZTliN2I3YjYzZGI2Yjk0YzYyNjQ1MTI1MiByZWxlYXNlMzAtbWFpbnQKKzY5NDI5IDUwMWIxZjAzNWYyOTkwYjgyYzZmYjZmODVmNjJhODc5MGUyYWNmMDIgcHkzaworNjk0MzEgMGVkMjJmMWFlZDA0NjM5NDA4MGU5ZWFhZWI1NmVkOGUxZWEzMTY4ZCBweTNrCis2OTQzMiA3YmZhNjQ0OTJkMDAxNjBhNGUwZjc3MjI3MjY2NzViYmMxMWNlYzg0IHJlbGVhc2UzMC1tYWludAorNjk0MzMgYzU5MzVjNzQ5N2ZiNjMxZjQxZDY1NjZkMDNkZDgwZjliMmRhZTY3MCBsZWdhY3ktdHJ1bmsKKzY5NDM0IDRjN2VkNDBkYjgxZWFiYWZhOTMwZDQ2ZDYzZGY3NzFjNDg1ODYyZDQgcHkzaworNjk0MzUgMGViNDA1ZDAxZTA4M2QzZTA2NmU4ODFlZmUzMzFlOWNjMDg3NWY5MyBsZWdhY3ktdHJ1bmsKKzY5NDM2IGJiYjgzNTBkZGJkMjU5ZDE2ZmM3ZWJhMDY5YTdlNDg1MGFhMGRhMDcgbGVnYWN5LXRydW5rCis2OTQzNyA1ODQ5YTRmOTA0YTJhMDMyNThmZDhjYmZjMmVkNGI0YmQ0MzRiODFjIHJlbGVhc2UyNi1tYWludAorNjk0MzggOTQ1Y2I5NWIzNWJmNTVjYWI1ZWJiMDRhOGZlOWY2YTIzNDU4ZWUwNCBweTNrCis2OTQzOSA0MzEzYjRkNGJkYzczZDE2YmZlNTk5MjgzZjIxNGI0YjdmMzJkOTY0IHJlbGVhc2UzMC1tYWludAorNjk0NDAgMjI0ZDBlZmNiZjZjOTQ4ZDI3MTJjOWM5NDBmMmViNmEzNDA0YmIyNSBweTNrCis2OTQ0MSBmZDc0YjBjMDY5MjdjOTA0OTIzMjIyMWI3ZTc5NzlhYzY0MGQzZDY3IHJlbGVhc2UzMC1tYWludAorNjk0NDIgYzMzMmY3YjQ1NjQ3MjNjYTAzMWM4YzRlMzRhMGU3ZmNiYjUwNjcwNyBsZWdhY3ktdHJ1bmsKKzY5NDQzIDk5NGZlNGRmNGFmNzBmNTdhMjA4YzE4MTg1MDIzMjc1NDQyODQ1OTggbGVnYWN5LXRydW5rCis2OTQ0NCA2NTUwZGI0OTJmMjg4YTc3MmNhNmIyNTk0NmUzMjE3YWJiZGNmYzIxIHB5M2sKKzY5NDQ3IGU0OTAxM2YxZDgzMTQzYjFhMmIyMTQxYWY0NmVkMTdlYWY1OWU3MzYgbGVnYWN5LXRydW5rCis2OTQ0OCBjMTdmOTI4MWE4NTZiMWRhOTk1MWU0YWI0ODVmYTgyODEyNDk1NDI2IHJlbGVhc2UyNi1tYWludAorNjk0NDkgNGVhMTIyOTczOTE0M2U4NTI2MWRjNzE1MjA3MjFhZDkxMTJkYjE3OCByZWxlYXNlMjYtbWFpbnQKKzY5NDUwIDM2YmM4ZDBlMDFiZjczNTExNDY2NDIzMTU5N2Y4NmM0NjdkNzM4YzYgaW8tYworNjk0NTEgOGNmYTEwOGU3YmRjM2I5YzU0MGFjNDY5MGY5Y2JhMGYyODA4NjQ1ZCBweTNrCis2OTQ1MiBkYTAwNzBjZjQ2NTQ0ZjJkOGZkZWNjNmM3NDA5ZjE2NjA5MmQ0YTQxIHJlbGVhc2UzMC1tYWludAorNjk0NTkgZTQyM2QwN2YwOGFmMGE3YzUzYTFhOTcyYjhhNmU0NDNkMDY0YWZlMCBsZWdhY3ktdHJ1bmsKKzY5NDYwIGRjZmZjNzIzODFlNzM0ZjNkYTdlNGYxMzllYzc5ZTI4OWQ3MjIyYzIgbGVnYWN5LXRydW5rCis2OTQ2MSA3YmJkY2U1YzkyNTA1MjYxNTM2ZjExY2M3OTEwMWJlMmVlMTYzMmRjIGxlZ2FjeS10cnVuaworNjk0NjIgZTQ1NTI1MTk1MzE3ZDM5OTRlYjJiNjYxM2NkODZkY2RhZGRjYjg0YSByZWxlYXNlMjYtbWFpbnQKKzY5NDYzIDQ3MjQ1YWUzMjExYmE2OWVkNGRmZGM5ZTdjMTcwZmMyNzc3ZDVhMmIgcHkzaworNjk0NjQgNjYzY2U3NGQ1MTc1N2Q0NjM1YjE0OGU2NDllYzQ3YTcxZDRhZDcyOCByZWxlYXNlMzAtbWFpbnQKKzY5NDY1IGY5ZjJlZDc5YjAwZmMyYmYxNTgzMDJmNmNjMjQ5NTA4NTA0NTIxMDEgcHkzaworNjk0NjYgMTU0ZTdjNDc0YWFkMDQ3YzliZGM1YWNhZjllNTVkZGZlNzVkNDFjYiBsZWdhY3ktdHJ1bmsKKzY5NDY3IDY3NDViZGFhOWI0OWI1OTM2ZGRkODQzMDEwOGFhMmRkNzAxMjhlZjQgbGVnYWN5LXRydW5rCis2OTQ2OSBhYzYyNDMyZmIzNDFkN2VjZmQwOTdkMmFmZTllYjFkNmRiMDQ4NDhkIHJlbGVhc2UyNi1tYWludAorNjk0NzAgYmRkZTQ0YWY5NzQ0MDZmMzRlNmIxNTBkMmQxMTA4YTY0MTNhNzJkYSBsZWdhY3ktdHJ1bmsKKzY5NDcxIDFhN2RkOWQyZTdlYzNlMTA5ZDE1NDUzZDNhNTRkNjQyNGQ4ZWE4YzcgcHkzaworNjk0NzIgNjJhMWVkNmU2MzZhYzFlNTZhMDUzY2YwMjhjZjA5ZTU1YmY2Mzc4OCByZWxlYXNlMzAtbWFpbnQKKzY5NDczIGZiYmJjMjU5YjVjZTg4ZGEyOTIzMGMwZWVjOTUwMzY5NTk3YzdlODAgbGVnYWN5LXRydW5rCis2OTQ3NCBkN2M0ZDA3MWRhZmFmMTlhYzVjMmIzMWY1YTYzMzQ5YjY5ZDYzNjYzIGxlZ2FjeS10cnVuaworNjk0NzUgMjk4ODA2ZjY0ZGZhMzY0NmQ5MzEwNTZiZTA1ZDI3YTI3NzQ4ODkzYSBweTNrCis2OTQ3NiA0ZTdiYTY3Y2ZhMDUzNzM5ZjdjNmUwMmM5MTZlNjVlMDhhYjM2NzM5IHB5M2sKKzY5NDc3IDg3MjFjMjEzYjZmNDRkMGU0OTczNzBlN2Q0ZjcyZTIyNDI1Y2I0MmIgcHkzaworNjk0NzggODc4MjBmYzY1ZDdjOTg5OTA3ZGQ1ZGJkM2U0M2Y5NmQwZjk3NzYyNyByZWxlYXNlMzAtbWFpbnQKKzY5NDc5IGE5MGM5Mjk4ZGJiNDg4YzljYzBhYTMyZGNkZTg4NGJhMDUzODdiZmIgcmVsZWFzZTI2LW1haW50Cis2OTQ4MCBiZWVmODgxOGE2NmMyMWJlNTgxMjc4YWM2MTNhZjEyMTRmODFlZTJiIGxlZ2FjeS10cnVuaworNjk0ODEgNTg0YzQ3ZDhjOTNmMWE3NTRmYWNkMjc2YjM5YTEwODA3MWQyZTA0YSBsZWdhY3ktdHJ1bmsKKzY5NDgyIDVlN2Q3ZmQxZGE1YTdmYWViNWU0YmVhYzJhYmFlZjE2NGYyNmEwMDggcHkzaworNjk0ODMgYWM5ZWY3NDMxYzhmMTM0YzIwNzJiZDVmZmU3NDVjOTE3OGVkMDIyNSBweTNrCis2OTQ4NCBlNzU5ZGE5M2RmNjQ3ZjI1MmZjNDVjMjExNDI2NTQ5N2RhNjAyZmM5IHB5M2sKKzY5NDg1IGM2MWYyNGZmMDU1ZTQwZDEzMzNjYzkzOGI4YzBhYzdiMDRkZTRkMjAgbGVnYWN5LXRydW5rCis2OTQ4NiAxMzA3YTY2YTM4ZjhkNDg3ZjE2NGMyYWE3N2ZmMjZiOWFkNTkwMjJhIHJlbGVhc2UyNi1tYWludAorNjk0ODcgOGEyOGQ5OWY3ODRkNzdhYzQxZmM3MWUzYjhhMmE0YjllMzU0YzZhMSBweTNrCis2OTQ4OCAzNDIzZjY0N2I1NGE2NWMyY2MxY2RjODc4MDI5NTQzZTZhYWI3ZTYzIHJlbGVhc2UzMC1tYWludAorNjk0ODkgZGFiODA2MzUwMzZlODgyMjgyNzc1NWI3YTJjMWZkNjMyZTMwOGYzNiBsZWdhY3ktdHJ1bmsKKzY5NDkwIDJhZTc3MGVlNjI4NDE3MDE4YzQ3MDhjY2FjOGNjYTY0NjJkMjM2N2QgbGVnYWN5LXRydW5rCis2OTQ5MSAzODY0MjM4NWIxZTBhZjE0MzBhODAxY2VjMTBmNzM1ZWE4M2E0YzlhIHB5M2sKKzY5NDkyIDYzMTZmMzc2YjgxNGJiMWRlM2UxMjJlMGUxZWFkNDFjMTEwM2JjZDYgcmVsZWFzZTMwLW1haW50Cis2OTQ5MyBiZGIxY2E5YWJjZTM2MmQ4OGY4OWJiMTU0Zjg0YmYyOWFiZGU5ZTFkIHJlbGVhc2UyNi1tYWludAorNjk0OTQgMWZlYzBiYjUwOWEyYjVlNDgyYmQ4NzE0MTgyZWI2NWFmODFlODFiYiBsZWdhY3ktdHJ1bmsKKzY5NDk1IDA0MTU0MTdjZmQ0ODNiOTlmZGQ0MGJmMTY5NjQ0YjY1ZjM4M2I2ZDUgbGVnYWN5LXRydW5rCis2OTQ5NiBmMGM3NDAyY2MwMDA2OTNhN2NkMjM0OTYzOTNiZjVmMmVmNGE5OGFlIHJlbGVhc2UyNi1tYWludAorNjk0OTcgMDhlMGYwM2JhODE3MjhjMWU4YzVlM2RhMmUzZDI0NGNjZTYyNGU5NSBweTNrCis2OTQ5OCAyMDYwOWZjMTNhMTM1NzU0YmJjODExNDk3ZDRhM2YzN2RlZmIyNjQ2IGxlZ2FjeS10cnVuaworNjk0OTkgYTAwNzQ1NDgwMTIwZGY5MDc3NzAwMWI0NzVkOGRkNGE2ZDBjMGRkMiBweTNrCis2OTUwMCAwNThkY2E3M2VlMzAyOTUxZmUwZmQyYTE4ODliYWZkODQwNmMyOTUwIGxlZ2FjeS10cnVuaworNjk1MDEgOTRkOWQ1MjU0MDFjMTYzZWZkZTA4OWM2NWVjNGNmNzI4NTgyMzE5MCBweTNrCis2OTUwMiA3ZDZjZGYzMzVhNTcwMjkwYWIwOGMzMjBjMjRmMTg5NTg4NzRiOGMzIHJlbGVhc2UyNi1tYWludAorNjk1MDMgZmZiOWNmOTRjOWYxMzk5ZmI2ODJhMjJjM2VkN2ZmMDkwNjljOGZlMSByZWxlYXNlMzAtbWFpbnQKKzY5NTA0IGYzNThiYTNkMWU1MzYzNzI3ZGNmNWUyNTc2MTIwOGY2MmUxZTM5ODcgcmVsZWFzZTMwLW1haW50Cis2OTUwNSA5NWJiNzczOWUzODZjYmI4OTI1NWIzYzE0YTlmZmMzOTY4MWY4N2YyIGxlZ2FjeS10cnVuaworNjk1MDYgZDNlODhmNzc4Y2RjMTY1YWRlNzdkYWMwNjE5NWQ1YzZiZTg3OGQyYSByZWxlYXNlMjYtbWFpbnQKKzY5NTA3IDZkYmUzZjlhMDQwY2I4ZTRlNGQ2MDM1MDc5YTNkZjVkZTBiYTE5MzEgcHkzaworNjk1MDggOTcyZTg2MTdkZmRhNmQ4NWE4MjcyN2E3NjQxZjAxMzJkMWVjZWMyYSByZWxlYXNlMzAtbWFpbnQKKzY5NTA5IDgzNTE1YmQyODYyNmQ0Mjk1ZmNhMzNmZjI0MDMwZTA4OGRlNDc4MzQgbGVnYWN5LXRydW5rCis2OTUxMCA3MmVlNDJjYzk1MzBmM2Y2ZjZmZGRjYzBjMWU0ZTAzZWVhYWVmMTYxIHJlbGVhc2UyNi1tYWludAorNjk1MTEgNTE5NmVhZmNiZDcyYzYyZWZiMjEzYjRiZmIzZjE2MWNmZjQ4OGVjNyByZWxlYXNlMzAtbWFpbnQKKzY5NTEyIDI4YmY0NTdmYjM0ZDBiOWMyNzI1ZGQzMWZjY2RlODNkMjdkZmM0MDcgcHkzaworNjk1MTMgYWY0NjlkYzE1ZmE3YmJkOTRkYzE1Zjc3Yzg2ZWFjM2E1NTkzN2QxNiBweTNrCis2OTUxNCA3YmIzZDUxNWI2NzdlYWYyZGZkMmJmNjIxNzUwMGNlMmFmMGRlNWQ4IHJlbGVhc2UzMC1tYWludAorNjk1MTUgOWMwYTRmYmI1NmI5MGFkMzc0Mzc0MTA0MGFkMDBjZDg1MTA0MDhmZiBweTNrCis2OTUxNiBkYmRkOTRjZDA3ZmI0NmFjMDUyNTJiNjUxYWJjMTlkYmUzMzIyZjQ0IGxlZ2FjeS10cnVuaworNjk1MTcgN2Q4OTcwNjRhNmVmYjZkNjcyM2Y5ZTk1YjI0NTBiNjNmY2U1MWI1YiBweTNrCis2OTUxOCA0ZDliNTJmY2I1ZGY5ZDk5ZDE0MmQ0NDUxYzk5OWMyOTQwZWY2OTQwIHJlbGVhc2UzMC1tYWludAorNjk1MTkgZWRjZjk5NmYwN2U5OGZmYTE4NjQ2YmM5MTAyZGQzNDNlZTcxM2UyOCBsZWdhY3ktdHJ1bmsKKzY5NTIwIDI5YTllODVmMzBiZjdmODcxODU5Y2Q4NTNkZTdiNjAzNDgxMzk5ZGIgbGVnYWN5LXRydW5rCis2OTUyMSBkNjk3NjliNGZkMjBhNDU4MjI0OTc3MjM1NDRlOWI4OTZlMjcxYmIzIGxlZ2FjeS10cnVuaworNjk1MjIgY2JkNTNmZjQ5NTU3MGI4YTY1YTM4YTU3NTg2ZDBlODMyMjdkNGQ5OCBsZWdhY3ktdHJ1bmsKKzY5NTIzIGIwZGIxMDkwODljOTY4ZWRiNjg3YjQ2YjgzZTQ0NWE5ZGFiOGFhNzQgcHkzaworNjk1MjQgMmFjMDJkYWVmMmVlMzhlOThmMWE4MDk4Mjk4YmY4Mzc0MDQ3ZDM5NSBweTNrCis2OTUyNSA0MzU4NWRiZjYxZDU3YTE4OWU4NzMwY2M0ZDFiNWVkMWNhNmYwYzUzIGxlZ2FjeS10cnVuaworNjk1MjYgY2I4MTkwYTFiZmFiOWM1MzlmOGVmYzkzMjM4ZjI5NjBkMGFhNmMyOCBweTNrCis2OTUyNyAyYmY1ZWQ2NzFkMDJjMTE2MmI2OGQ2ZmRiYzU5Y2E3M2JkMTg0NTlmIHJlbGVhc2UyNi1tYWludAorNjk1MjggZGY2OWJjY2RkMzYzYmYyNzQyMDQxZWI1OTRlMDdhNjU0NmYyN2I5MCBsZWdhY3ktdHJ1bmsKKzY5NTI5IDdkMjljNmU4YmEwNTU4MDc1MTM5ZGY4YThkZjJkYjA1YWNkNWQyOWQgcHkzaworNjk1MzAgMDk5ZTk2MDY3NmI5ZjA2NGQxOWYwNDYxYTg0MTUzYjM5ZjBkMmJjMyBsZWdhY3ktdHJ1bmsKKzY5NTMxIDFhZTM0YTQ4YjczOTIwMDhjNzdkZWVjNDg5ZDgzMzEyZTAxYTk2MDYgcHkzaworNjk1MzIgOTY3N2RkMGIwOWU2YjYyN2Y3YTQ2NzgwMDJmNzk2N2NhM2U1NjBlYyBweTNrCis2OTUzMyA3ZmE4YjdhMmY1MGEyMTVlNDc2MTZmMmRkODVjZDdhNDE2OGMyZDVlIHJlbGVhc2UzMC1tYWludAorNjk1MzQgMjE3NDI1ZWEyNzY5YzI4MTU1YzA4ZjVlZjMwMGMwMmFiNDNmNzdiZiBweTNrCis2OTUzNSA5MmRkYmE1Nzc5Zjk0OTQ4YWIzNDQ0YjE0YjgyMTg1NjE2YzU3YjgwIHJlbGVhc2UzMC1tYWludAorNjk1MzYgODYxMDA4ZGVlZDk3YTNmZDg3OGMxM2ViYjk3MWI3MDVlNDZkZDVkYyBweTNrCis2OTUzNyA1YjUwMTE5NmZjMzgzZmMzMjNhZjQwZmY4MDg2ZWQ5YzU3MmY5YmY2IHJlbGVhc2UzMC1tYWludAorNjk1MzggNjU5ZDg4OTA0ZjVmYjMzZTcwNjNlODFlMTdmOTgzNzcwZmJhNTA1YyBweTNrCis2OTUzOSAwOGNjNTc0YWY0ZjYwOWVjMjI3NDljOWQyY2IyOTYyNzVlMjUyMTkyIHJlbGVhc2UzMC1tYWludAorNjk1NDAgMTg5Njk2YzQ2YzBlN2Y0ZmEyNTEwMWY0NjcxZTQ3Y2QyMzc0MzAxMCBweTNrCis2OTU0MSBjYWI0ZTJlNDg0YTJiZTYwOGFlMmEzNmM3YjlhMWQzYmJlYWE4M2VlIHJlbGVhc2UzMC1tYWludAorNjk1NDIgODNiZDJkMTc0Y2M4ZDAyZTcyNWYwNzE2ZmI1MzQxZjEzZmEyM2YxOCBweTNrCis2OTU0MyAyN2M1ODlmMDlhMjE3NGZmOTJjNmFjNTY1N2NhYzc0MjYzODhlMmE2IHJlbGVhc2UzMC1tYWludAorNjk1NDQgOTcxYmI0N2ZmNzBiNjExMjE5MjMxMGZhNWI4ZWVlM2FmOTQ0M2U3YSBweTNrCis2OTU0NSBhY2RiMzIzNDFkODdhMzE3OTc5ZmM2OTM4Mjk4MDdlNjlhM2M2MDdlIHJlbGVhc2UzMC1tYWludAorNjk1NDYgYTBkOGM2MTZmMzQwNWNiOTQxMmE5MmY5NzdjMjM4MmUxZjY3MzVhYiBsZWdhY3ktdHJ1bmsKKzY5NTQ3IGMwOWI1MDE1MTZiZDBjYzc2MjBhZmMyMGNjZjY0OGU1NzEwN2Q1ZDkgcHkzaworNjk1NDggNWQyODQwNTA4MGVkZmYzOTJjNzU0MjNhNWZiZDYzZTE4NmQ0ODQzNCByZWxlYXNlMzAtbWFpbnQKKzY5NTQ5IDMxNjQ1ZWFkNGMzNWJiNDNiZWUyYzFhZDBiYTk2Y2UzMDcwMTI5NGMgcmVsZWFzZTI2LW1haW50Cis2OTU1MCA5YTkzMmY5MmYzOTQ5OTdhYjM1ZDhiZjkyZmZjOTAwNGQ2ZjU3ZjM0IHJlbGVhc2UzMC1tYWludAorNjk1NTEgNjY0MWQ4MjhkNzYyZDY1MWM1ZjljYTJiYmExNzI4ZmRkY2U1ZDU2ZiBsZWdhY3ktdHJ1bmsKKzY5NTUyIDEzMzI4ZjExYWQyOTU2NjFiODk0OTZmNWFkY2Q1MWJlZTM1NzhkY2EgcmVsZWFzZTI2LW1haW50Cis2OTU1MyAzZWY1YTBjNWU2YjU3ZmQ5NTkzY2M1OGIzYjZhNTBhYzBhYmMwNGZhIHB5M2sKKzY5NTU0IGUzNzUwNzFmOTUwZWM3NTdlYzk5OWRmN2RjOTU1YzFkYzI2OTM0YTUgcmVsZWFzZTMwLW1haW50Cis2OTU1NSBjZTI5ZmFlZDdmNjllMjBkM2JjMWUyYTk4NDE3ZTc2NzA3NWViY2E3IHJlbGVhc2UzMC1tYWludAorNjk1NTYgZTUwMmUyYmYzNWU4NmRiZmEzYjU4OGVmMjg4OGViZWFhMDAzN2U3MCByZWxlYXNlMzAtbWFpbnQKKzY5NTU3IGNkNDJlODVjYWZlN2VkNmM1YzJkYjY1ODI2NzZjMTVhNjhlOWM3YmYgcmVsZWFzZTMwLW1haW50Cis2OTU1OCAwN2Y5ZTAwNDhiMGJkZGYxMjg2YThmMWFjODhjMmI5MzJjZjZjNTBkIHJlbGVhc2UzMC1tYWludAorNjk1NTkgZTJlYTBmODNmMDM5NDJiZDhkMTNmOGQ0YTI5YjM1N2M4NGY1YzRjNSBweTNrCis2OTU2MCA2NDhlMDdkZDA4MjU4ZjYwZjBhNTkzNTU2NmZjMWM0YmRlNDkxNTA2IHB5M2sKKzY5NTYxIDFlN2FjMTRlNDkzODdlYjY0NDIxMWMwNTc3M2YxYjczMDg4YjAzY2EgbGVnYWN5LXRydW5rCis2OTU2MiBlNmE4YTE2NDIzM2E0M2I1OWQ0NTU5NTM3YjFiOWU4MDgxNGY4M2Q4IGxlZ2FjeS10cnVuaworNjk1NjMgOGQzNmFiMDkzZDQ1NmMyNGQxOGVkYTNiY2QwMzJlYzUzZjJlOWEzZSByZWxlYXNlMjYtbWFpbnQKKzY5NTY0IDQ3YTc5ZDdlZWVkYzkwNmRmZjMwYTQwNzA4YmM0ZDljZmYxYTFlZmMgcmVsZWFzZTI2LW1haW50Cis2OTU2NSAzYmQ0YWUyNmIzNjQ5N2VmOGE5YmEwNDNiY2M5MTljYjcxZTM2MzMyIHB5M2sKKzY5NTY2IGJkMmI3NzlmNWYzMTIzNDI3NzZjMDhmMDE5MTA1MDdiODQzNDVlNDEgbGVnYWN5LXRydW5rCis2OTU2NyAyMTAyNzc0ZTdhMmQ5M2EwM2I3ODE1NThkYWJjNDg1MTYwNDcwM2U4IHJlbGVhc2UyNi1tYWludAorNjk1NjggYjhmMTBjNmZhZDUyODU0MTQ4ZjJhZjc1Y2Y0YmVjYzRhMjY1NmM2YyBweTNrCis2OTU2OSA3MmY2ZjE3MDFlZTFhYTRiMDM5ZmNjMTNkMTY3ZDgxOTlmZjgzMTYzIHJlbGVhc2UzMC1tYWludAorNjk1NzAgN2Y0YTExNWFhZTZkOTU0ZGEwYjQ1OGQ3NGNiYjc0NTNlNWJlMzVmMCBsZWdhY3ktdHJ1bmsKKzY5NTcxIGE0MWU4ZmY2NTE4YzIwMzU5ZGJkYTJmNDEyMmQ3OWZmMDk5NTEwMTMgcHkzaworNjk1NzIgNTI4NTFiOWQ5NzU5MDExZGVmODU5OTVlNDY4NDY5YTE0OTAwODE3NyBweTNrCis2OTU3MyAwOTQ2Y2ZkNjg1Nzk5OTk4N2E2YjM4YTc1ZjBmNjU0YTI2YzYzYWNjIGxlZ2FjeS10cnVuaworNjk1NzQgNjhiOGFmNDk0YmUyODBmZTBjYjQ1NzYwZWQ3ODhkMDYyNjhjYTVjYSBweTNrCis2OTU3NSBjYTFkOTlkOWQ2OTFlZGRiMzRmNmRlZTU3MWVhOTA2NTZhZWNkNzk0IHB5M2sKKzY5NTc2IGMwMTRhM2IxYWQzMTU1YjEyZTNhMWRkZjZlYjVhYjc1MTcxOWJjZGMgbGVnYWN5LXRydW5rCis2OTU3NyBhODNmMTBlZGI2ZmYxNTkyOGFmZjYzZmM5M2NkN2E1MmQ1YzQ5ZGM0IHB5M2sKKzY5NTc4IGJmNDE5Y2ZkN2IwYWI5NGIwODk4ZjFkODk3YjNlYjkxYjM2NDJmNzAgbGVnYWN5LXRydW5rCis2OTU3OSA1MTJjNWE1ZGUwMGI4MGIyODk2MDAwNDEyNjQ2MjNkZWI1Yzg5NGJmIGxlZ2FjeS10cnVuaworNjk1ODAgNjlmZGY4ODhmMTEzYTc2Y2NiMzRkNjcyYjU5ZmRlNTUzMWY5ZGI2MyBsZWdhY3ktdHJ1bmsKKzY5NTgxIGVjMzBiMWZjYzFiM2RmZjg3YmM3MzM3Y2Q1N2Y5NGVkODM4OWI2ZjEgcHkzaworNjk1ODIgNWE3MmVlZDFlYjFhNzk1Zjk5ZDM5ZmU5NmQzOTlkNDFhNmNjMTUzNCBsZWdhY3ktdHJ1bmsKKzY5NTgzIDA4ZGY0ZjU1ODNmZjUyYzI4NGE3YmNkYTFkMTg2MmExM2IxZmFiYjkgbGVnYWN5LXRydW5rCis2OTU4NCBmZjA5NmQ2YTkyMjJiY2I5MjNkMGJkZGQwYmM0ZjE5YWFmYjIxM2NlIHB5M2sKKzY5NTg1IGM2ZmY0N2IzZWI5OWZiZDJiMjQyYjA2Y2JlYjY3NGJjYjM2Y2M5ODIgbGVnYWN5LXRydW5rCis2OTU4NiBhOTNiMTlhMmY4ZDkzNDkxOGE5ZDY1ODBmY2Y3NDBhNjNiYWJkNDZkIHJlbGVhc2UyNi1tYWludAorNjk1ODcgNDI4MzhiNGQ2YWExYjc2NDJhNTAzMjRjOTVlNTI5ODNjMDdhMDVhOCBweTNrCis2OTU4OCBhZTE2ZTJiODZmZWI1MjIzY2E3MDhhZDNmY2E1NzI1MThmZmRmOTIwIHJlbGVhc2UzMC1tYWludAorNjk1ODkgMDJjM2ViMWNhMGQ1ZjBkNGVjZjA3MmQxN2IyZjM1N2Y0YzJiYTk3MSBsZWdhY3ktdHJ1bmsKKzY5NTkxIDA1OTBjMGI3NmU2NDYxZTViY2E2NjM2OGMyYmY3M2FmNzFhNzdiY2MgbGVnYWN5LXRydW5rCis2OTU5MiA4N2FiNmJjMjEzNDViYWQwODU2NjBhOGQwY2NhMThjNGJlMjk0NTQ2IHB5M2sKKzY5NTkzIGRmY2Y2OTBhNjdjOGU5MDk5NTc1YjU5OTc2MDlhNzc4YjA2ZjJiODUgbGVnYWN5LXRydW5rCis2OTU5NCBkMzY2M2YwOWQ3NjQ1YTNjMzYwZWRhZGY3MDgxNzcxMjYzYTc3ZmExIGxlZ2FjeS10cnVuaworNjk1OTUgNTEyMDcwZGE3NDMzZGQzNzhiZTIyZmRjYmY4Y2ZjZDJlOTg5ZWY0OSByZWxlYXNlMjYtbWFpbnQKKzY5NTk2IDYxMzVmZjcyNDNkZDc5NmUyM2NjMzU1YTViY2E4ODEyNTFiMTQzMTcgcHkzaworNjk1OTcgOGNiOGVjY2Q2NjMzOWM5NjNlYTY0NmNlNmVmMWU4MTY1ODEwNGFmZCByZWxlYXNlMzAtbWFpbnQKKzY5NTk4IDhkYzI4YTEyNmIyYzgwMWVlYTAwY2YzOGM3YzAxZjgzNmZlN2JlMmUgbGVnYWN5LXRydW5rCis2OTU5OSA5Yzc1ODA2YmVjNjRhZjkxZTZlOGFiOTYyZDM3NmJlZDRkNzk2ZGZjIHJlbGVhc2UyNi1tYWludAorNjk2MDAgNDBlZDU3ODNlMjRhMmRhNWY1NGEwNTQ4MWYyZDY4MTAwMjQwZjJhMiBweTNrCis2OTYwMSA2MTYxMzhlZWYyMjRiY2QwNmM4MzM0OGEyOWI1YjY4MGNlYWEyMmEyIHJlbGVhc2UzMC1tYWludAorNjk2MDIgZTVjYTBiZGIzOTBmZDc4MTUzMmYyMTdlNGMyMDdiYzUxYWQ0M2E1MiBsZWdhY3ktdHJ1bmsKKzY5NjAzIGU5MWIwNGRiNmQxOTY4MGIyZWJlNjg1ZTQxMGE2ZmU0YmQyYzI5MjEgcHkzaworNjk2MDQgYzU2MDdjZjc2ODAxMjc1ZDU0YjA0Njg0M2QwNGM3ZTQ2Y2M5ZjQ2ZSBsZWdhY3ktdHJ1bmsKKzY5NjA2IDljYzc2NzU4ZWUwOWMwNzUxMzNjYjRjYjQ5ODY0YmIyNjM1Mzg0MDAgcmVsZWFzZTMwLW1haW50Cis2OTYwNyAyYTI2M2Q2NmQ2NTk3ODAwMTVmMWUzNTNiZDE2MDEzN2Q5NzcyZWU4IHB5M2sKKzY5NjA4IGY0M2Y4NjdkNWViNjBhNGQzMjNlM2MyZWFjZDBmZjA3YWMyYjZmNGIgcmVsZWFzZTMwLW1haW50Cis2OTYwOSBlNTUyMjg3NWI5OGMyNmE2MjVmNzU1MzkwYzZmNzIzZDYzZjMwMDFmIGxlZ2FjeS10cnVuaworNjk2MTAgOTQ5OGU3ZDViMjY1OTlmZTZhZjZlMmVkNzA3MWU0OTI5MGFlMmIwNCBsZWdhY3ktdHJ1bmsKKzY5NjExIDZhN2EwZTFlMjdiYzA0NDhkZTM4OWExOGUxYTc3MzExMDhkZGEyZWIgcmVsZWFzZTI2LW1haW50Cis2OTYxMiA3MWE2OGRjY2EwNDRlMzJlZmVkZTBjMmEwYTE4Y2ZkZmVmNWQ0YWYwIHJlbGVhc2UyNi1tYWludAorNjk2MTMgZTEzZWQ0ODQ0MjJlODE1NWZiMjY1YjljYzhmYjBmOWQ3Y2YwZjc2ZiBweTNrCis2OTYxNCBiYjk5ZWRhMzhjMWI4MmVlYmM3YTJjYzI0NmE5ZjkwMGQyNTkyZmJmIHB5M2sKKzY5NjE1IDNjZWE0MDUxZGNkYjZjMGU2Y2I0ZTNlZTdiZGYxYTdjOGE4OGY1MTEgcmVsZWFzZTMwLW1haW50Cis2OTYxNyBkNDA4MzhjNWE0MjA2ZmU5YjNkNTc4YjhiZGJjNDZhMWI1MzU2NDdlIGxlZ2FjeS10cnVuaworNjk2MTggOTY5Mzc4ZWE0Yzc3NzFjN2Y1MTEzMWRjYTI4ZmZiMDUxM2IzODE4MSBweTNrCis2OTYxOSA5ZDdhMTMxZGNiNzg5NWEwMmYwYzM3Njk3NDU5ZmRhYmM3YzQzYTI5IGxlZ2FjeS10cnVuaworNjk2MjAgNTU2OTkwYmI0ZjBhY2FjN2RjOTllZmM5ODc5NGZlYWMwMzNlZjI1MyBsZWdhY3ktdHJ1bmsKKzY5NjIxIDE1ZDhiMmRiMmJlNDU3YTQ2NmQ3MTlkNjE1YTdhYTI2NzI4ZjBlNDYgcmVsZWFzZTI2LW1haW50Cis2OTYyNSBmNjdiNDhhMTUxM2ViYmFhZjZiN2M2YTE1NjY2MDlkZDA0OTc0YWQ2IGlvLWMKKzY5NjI2IDhhZTViMGM1YzI0ZDJhZTdlMmFhNWI4MzUzYzA4NTU3YzY0NmU0MWUgaW8tYworNjk2MjcgYzE3Y2Q5YmVjM2Q4NTBlNDA3OTM5YzMyODZkMDJhNDllODYyMjcxOSBpby1jCis2OTYyOCBhZGU0NTUxMWI1NjViMWViYzk1MzYzZjNjOTYwOWQ0NmVjOTZhMDA0IGlvLWMKKzY5NjI5IDc3MzA2YWQ5MzBhMzM0ZWJjM2U3ZWU0ZTc4NGM3N2MxNDYzOTlhNWQgaW8tYworNjk2MzAgNWZkM2FkNTQ5OTE3Y2I0MzkyNmQ5N2ExYTc2MzE3MjUzMjg0YjEyMyBweTNrCis2OTYzMSBlZjJjYmE4MGM5NzViYjVkOTkxMWM5YjliYmQ1ODE5ODZkNjE0MTdjIHB5M2sKKzY5NjMzIDNmN2UwNzNkYWQ3YjVmNDdkMTNhNWNlMDFlYjBhODZjYmI3NGE2ZDQgbGVnYWN5LXRydW5rCis2OTYzNCBiNTVhM2I1ZDcwMDg4Mjk5ZGEwOWM5Y2NlZjQyZGYxYmFmNzk4ZDFlIGxlZ2FjeS10cnVuaworNjk2MzUgYjhjNDY2NGE2NTM5MTZlMjE2NDk3YmNjYTZhZDQ5MGE0MWU3ZjEzMSBweTNrCis2OTYzNiA1ZjIyNTdiNzdhYjA5OTFkZDgwN2IyOWE2N2ZlYjk3NGJhYTQ0ZjBlIGlvLWMKKzY5NjM3IDc5YzIzMTFmMzNjYzFlMmZhMWRlZDQ5ZWNjMjA4ZTk3YTNkNTcyM2QgcHkzaworNjk2MzggM2Y0NzU3NDVhM2MzMDU4OTg5ZWRiZjZhNWNhMjUyNjliYzE4ZmFiNCBpby1jCis2OTYzOSBhZjdkNzgwZjdhMGJlNGJhMDRiYzdmNTUzODRhZDY1NjU5MGE2MmE0IGxlZ2FjeS10cnVuaworNjk2NDAgNjVlMDc1NWU5YmJjOWQ3ZmQ0MDAwOTQwZmNhNGYwZWViMWE2ZmIwOSBweTNrCis2OTY0MSBhYWRlZjIxODhjZWI2ZmI2YmEwNGViOTU3NGFkNzdmZDA4OGY3MmQzIGlvLWMKKzY5NjQyIDJjNGEzMzFjZDMyYThkNzdiM2Q2YTJjNjQyZjE0YzE0ZGIzMGQwNDkgaW8tYworNjk2NDMgOTQ4Nzk0YWM1YTUyYmUyNzBmY2FkNDhhZDRiYmViMDY4ZDI0MmIyZCBweTNrCis2OTY0NCA4YzZkNjg4ZTRmMTYxMDliYzVjYmE2OTk3YzUwOTk5MDAxNTI2MTM2IGlvLWMKKzY5NjQ1IDk1ZDc3NWQ5YWI0N2M3N2VkZGI4YjEwOTEzOWI3NTZlNDExYWIxNzcgaW8tYworNjk2NDYgNGZlMjg4NWQwNjU0OTNiNTFjNTBlYjVlZTA1YjAzZGQxNzYxN2NkNSBpby1jCis2OTY0NyA0MGM5NTQxZTYxZmM4OTY1ZmYxOTAyZmNiY2ZjMTc4ODhkYjNkNjJkIGlvLWMKKzY5NjQ4IDk4ZGQyMDU3ZTA4OGJiNGYyMjBlYjRjZGRlMzU4Y2QwMmExMGNjOWQgaW8tYworNjk2NDkgOTFhM2NjZTY4ZTliNDYxMGVlYzA5YjU3ZmNkYTBiZDYyYjRmZDZlMiBpby1jCis2OTY1MCBkOWMxZDliMTMzNzQ4MzBkYTliMTc5MTgxYjYwZGRhZTAzYjgxMzAzIGlvLWMKKzY5NjUxIGRiM2NhZTEyOGQ5MWVhZTVlNGYxOGMxY2ViMWEzZmI1YTU2YWVlM2UgaW8tYworNjk2NTIgMTkyMDE0ODc3OWQ0NDZiYjhlOTZhYzQ4OTYyNzNmZWFiODNjMjZlMCBpby1jCis2OTY1MyA5ZjUzOWQ4Y2Q5MDQyYTNjMzk5OTZhY2E1M2EwYjczNmRhOTllZjA0IGlvLWMKKzY5NjU0IDI4Y2ExZGY1NDVlMjM2NjczZTVmYTU2MzdlNmEzNzVmY2NlMWVhM2IgaW8tYworNjk2NTYgMjQwNmM3ZGQ5ODg0MTA4NjU4MmQ5NGIxOTY1YzZjMGIxZTAwNTFiNCBpby1jCis2OTY1NyBhMjZkYjMxNDRhZTcxMzA0NTIzODE4NDQzM2E2ZWRkNWJmMzljNDhkIGlvLWMKKzY5NjU4IDRiMTIxYmJjYzkyYWZhMDE4ZWQwODRkZTdhYjE0ZDIxYjlhZTExZGMgaW8tYworNjk2NTkgZjNhZjQ5OTJiODBiODNkOWEwZDk0ZjFkYzYzZTQ0YjVkZTE3MjBjNSBpby1jCis2OTY2MCA2ZGEzMGUzYWJjMGRkMDBkOWNlYWQ5MjM2YzE1ZWVmYTllZjNiOWVmIGlvLWMKKzY5NjYxIDJjNzE5MDJiMzc3NDdkNjk3NTgzMGQ5M2RlY2JjY2MzNmZmMzc4YzAgaW8tYworNjk2NjIgZjRjNDljZjYwMWEyY2RjNmUxNDNjZDUwZTcwZjM0MTljZDhhMmIzZiBweTNrCis2OTY2NCBhNDUwYzg2ZmMyYmMwNDY4NTViODYyYTg5ZDQ2NTFjZTM2ZjY5MDI3IHB5M2sKKzY5NjY1IGM1NzI1NGE5YzFhMzIzMDIzNTFjNTQxNGQ5MGU5ZGNjMDk3YjU2YWYgcmVsZWFzZTMwLW1haW50Cis2OTY2NiAwNzZjNDc5MTMxMzQ5ZDQ3NWFkN2Y5NTRmZTA1MWNiNWNhZDNjMTc4IGxlZ2FjeS10cnVuaworNjk2NjcgOTg1NzVmOWE0ZWQzODU4MjA2Zjg2MWE3YWQ1YzA0OTQwMjk2MDQ5YiBweTNrCis2OTY2OCBhNWM2MjE1YTQ1YWYwOWUxNzg4MjZmMTljYTFiYTVmMzQ3MzAyZTVmIHJlbGVhc2UyNi1tYWludAorNjk2NjkgMGU1NWFjZDFhNDI2NjlkMmRhYTIwZmNiNmNiNzRiODMwZGY5MDkwOCByZWxlYXNlMzAtbWFpbnQKKzY5NjcxIGU4NzNmODA4NDY0YTMzNjM3NjljNzEzYTVmNjAwZmQ5MGE2ODY5OTIgaW8tYworNjk2NzIgNmExMThjYzRmM2I3OGUxOTkzMDU4YTY2MWIxNjI0ZjUwNjQyMjBiNiBsZWdhY3ktdHJ1bmsKKzY5Njc0IDUxZGIxODA4NGVjYmFhZDUwODQ3YTY5YjZiN2JlZjhjM2E1NTk2OTkgcHkzaworNjk2NzUgYjM5ZDU0MDU4YTJiYmY3OTUxN2I5ODY0MGM0Y2ZhZjNmYWY0NDY1MiBweTNrCis2OTY3NiA2MjdkYjU5MDMxYmViMDEyNjJlNzEyNWI5NjZlZmQ3OWZhODIyOGE2IHB5M2sKKzY5Njc3IDRkNjFmYmJiNDVkNzQxNzRhZTZiNGUxY2RkYTIwMGJmZjlmMDA4ZDkgaW8tYworNjk2ODIgZGY3YzZiZDFiNjA5MmI4NTY2YjFlYzFkMTEwMDNiMWZlZjg5M2IyNCBweTNrCis2OTY4MyA1ZGNhYTJlMWJjODY5YTZkNjc4YjZlODIzY2VjODZiNzM1OWU0ZDllIHJlbGVhc2UzMC1tYWludAorNjk2ODUgMGViYmNmNTk4OGRiYzE4M2ViZWE3YzBjZDMyM2RiMzc0NjFhM2ViOSBsZWdhY3ktdHJ1bmsKKzY5Njg2IDAwM2UwMDc5N2U5MTAwYjE1MGRhYTYwODRkNGJkMjYzNDRjMGM5NGYgcHkzaworNjk2ODcgODZiNjBkMDUwNjJiYThkYmUzMDQxZGQwNzcxOWZlZTY4ZTMxYWJkMiBweTNrCis2OTY4OCAyN2Q0M2Q2NmJkMDljZWVjMWVjYmIzMWM1NjY0OGViZWE0ZWExNmVmIGxlZ2FjeS10cnVuaworNjk2ODkgMTU0OTQ4ZTJmZDFjNTdmMTk0MjY3NWY0YTJiYjllYWMyZjk0ZWViZSBsZWdhY3ktdHJ1bmsKKzY5NjkwIDA5MjM1ODg5YzU0ZDE0ZTZhNjY4YzY5YTdlNjU1ZmIxMTQ0Y2Y5NDMgbGVnYWN5LXRydW5rCis2OTY5MSBmMzA4OTUzYzcwMWZjNGY2MTg5OWNmZWU5ODUyN2RhZGNkMGUxODZhIHB5M2sKKzY5NjkyIDk4MmY5ZTI5MjVhNDVjNTQwNjQ4ZGQxYjg5YjVlYjkyNDY4OTk0ZGIgbGVnYWN5LXRydW5rCis2OTY5MyBhYjRkYTJlZGIyODhkZWE1ODBkYmU3OTljMTNhMjhhZDlmZDZiOWNlIGxlZ2FjeS10cnVuaworNjk2OTQgZTc4YmE4ODAwZTJjZTAxZWFjNDA4NGU5YWVkNDY1NDVmMWEyOWZjOCByZWxlYXNlMjYtbWFpbnQKKzY5Njk1IDUyMjdmOGM0MTgzZWY1MWViNGZjNGQ1NGQxYTAxNjFmNGExMjk4ZDAgcmVsZWFzZTI2LW1haW50Cis2OTY5NiA1NGNmNjhmYzczMTI3ZWUxMzdmMDFiZGYyMTliY2M0MDMzZjI1YWI5IHB5M2sKKzY5Njk3IDI5YjE0OWJjMzEzMDE2MjllODY5MTZhYTk2NzAyNzk1Y2YyZjFhYjIgcHkzaworNjk2OTggMjczMjY4NTIyZTVlZTkyODcwODE1OWI2MTEwMzQwNTA4YzllZTFkMiByZWxlYXNlMzAtbWFpbnQKKzY5Njk5IDBjODc0Nzk5YTE5MGQ1MDRkMWQwMzNmYzY4OTYyYmQ0NzE2YmZjZTMgcmVsZWFzZTMwLW1haW50Cis2OTcwMCA3MTAxNzcyZWFlODA1ZmVmOTExMjA5Y2I3ZTI5MDAwNDVjNzRhNGE0IGxlZ2FjeS10cnVuaworNjk3MDEgZjUwNWViYTcyNmM4NjUzYzdmNzU0NzZkYzc3NmFiNWMxOWFmOTdmYSByZWxlYXNlMjYtbWFpbnQKKzY5NzAyIGRiYTJmYWYwOTkwNjQ5NTVkZDdlNWE4ZWFjM2Y5NjE3YzZlN2I5MzggcHkzaworNjk3MDMgMDFkM2I2ODYzMzg3ZGJiNTk2ZWFmMGZhZTRmYTU0N2Y4NTcxY2I5YiBsZWdhY3ktdHJ1bmsKKzY5NzA0IDA3ZmFkMzAxMDI1ZjAxOWVlMzI2MTc0NWRmY2JkNTY5MDg3Y2VlZjMgbGVnYWN5LXRydW5rCis2OTcwNiBkZDIyMTBiMmRjMjJjYmVkNGEwMzJmMGVlYjRjZTVmMjgyYjZiNmUxIHB5M2sKKzY5NzA3IDE0N2ZjZWJhY2I1YmIwZDE4OTBiNjE5ZmRhMWVmN2UzYTdlMWMzMDkgcHkzaworNjk3MDggMTllNzY4NWQ5Yjk0NmYyNTg0N2IwOGE4Y2E5MTQ3YWE2YjI4YzBjOSBweTNrCis2OTcwOSA0NGZkMmNjOWU5Y2M3NDY3OWIyYzY1YjMxNDI2NDMyODRmZjY2NTU0IGxlZ2FjeS10cnVuaworNjk3MTAgMjcyNjhlZjA0NzA4ZDhlM2MzMGE0ZDY2ZmM3MWE2MWU1YmYwMjRlNSBsZWdhY3ktdHJ1bmsKKzY5NzExIGQ3NzI2NzgyNTM2ZDk1MDE2YTZhNzViNmUxNWI4MDA0YzBjM2Y4ZjggcmVsZWFzZTI2LW1haW50Cis2OTcxMiAyNTdjOThmYTU1ZDc2Y2VhOWJhYWIzMTQ4YjE5NTZkYmMyNGQyZjg4IHB5M2sKKzY5NzEzIGU1NDhkZjM2MTg4ZWY3MzUyODQ4YzFkY2NhZjhhZjI2NDNiODZmYzcgcmVsZWFzZTMwLW1haW50Cis2OTcxNCAwYzZjMDU3MmMyNDczYzBkMjY3Y2ZiM2Q0OWJmNTZkYzA1YTg1M2JmIGxlZ2FjeS10cnVuaworNjk3MTUgZDk4MmI5NWJlM2UyMTgwZDU1NWZhOGY5YmZiYmY2YTE2YWY5MDhiZiBsZWdhY3ktdHJ1bmsKKzY5NzE2IDc5OGExNmFiZjU0NjA4ODYxMGZlNTBiOWQ0ZDMwYTIxZTkwM2FkZGMgbGVnYWN5LXRydW5rCis2OTcxNyBkNjc0MGE5NmE3MGFkYWMxNmE3NjNlMDdhNjc1NmI0ZTg5YjZlZGE4IGxlZ2FjeS10cnVuaworNjk3MTggOWFkNjYyYTQzZWIzNTBlNDdhN2NhNmVmYTY3NWFiNzkwMDdkZTkzNyBsZWdhY3ktdHJ1bmsKKzY5NzIxIDg1NDA3ZDA0Nzc4MjA5ODI2MzA1YWRmNTI2NmU5ZDg2MmQ5ZGJmM2IgcmVsZWFzZTI2LW1haW50Cis2OTcyMiAwOWU2MzIxNGYwYmY4NjUwNmY5Y2JmNTI3Y2I2MzY0ODYwMDhhNDFhIHB5M2sKKzY5NzIzIGZiODYwNmUwODZlYTg0NDVmNjlmZDY2MjA3ZDgzZGU4YmE5NjgwYjEgcHkzaworNjk3MjQgOTJlNDJiMWIwYTZlZWMwZjExNzc2ODliM2MwMTZhZTA4YmQwM2QwYSBsZWdhY3ktdHJ1bmsKKzY5NzI1IGQ3ODYwYmIwYjE1YTBiZmQxMzUyYWI2NmM5ZWEzZDhlYzIwOWViZmQgcmVsZWFzZTI2LW1haW50Cis2OTcyNiA2MDVmZmMwNTJiNDE5NWUzMzQwMTljNjBmYTVkNTg1YWUyMzA0MjkxIHB5M2sKKzY5NzI3IDIwNWEyYjRjMWZhNTQ2NTU4NDQxYTE4MzgzNzAwOGRlNzc0YTJiY2QgcmVsZWFzZTMwLW1haW50Cis2OTcyOCAxZmY0YjQxYTU3YzEyNmQwZjk0NjZjMDA0NDNhYzQ4ZTJjOWI2NWViIGxlZ2FjeS10cnVuaworNjk3MjkgZTdlNTQ0Y2QyYzJiOTQ2MmE5MjRkMWFhMjFkOGU3ZDQ4ZGNmMzdiYiBsZWdhY3ktdHJ1bmsKKzY5NzMwIDZlYTdkMzcxNGJkZjc4ZjI4NDU0MzlkNWZkNWRhZTUyOTc0MzI4ZTMgbGVnYWN5LXRydW5rCis2OTczMSA1NTE5YjlkY2M5YjZiNjQ0N2FmMDIwM2RhZjAyM2Y0OTZkMDBjODNhIGxlZ2FjeS10cnVuaworNjk3MzQgMzlmMDljOWVkNWE1YjNlZDZjM2YxMTk1NTNmODk4YjI3M2FjYjZkZiByZWxlYXNlMjYtbWFpbnQKKzY5NzM2IDI4NzhiZjgxNWRhMWU4YmFjOGJjZDc0NzRlNTM4NDVjNTU2OTc2M2QgcHkzaworNjk3MzcgY2IwYWRlMzM1NTUxNTYwYzE1Njg5ZTI4MDI4Yzg4MTFjZDE1MDM5ZSByZWxlYXNlMzAtbWFpbnQKKzY5NzM5IDcyZDEzZWNmNGZjYTc1ZmIyNTZhYjcyM2QyM2QyNjQ3MGY5MzM5NTggbGVnYWN5LXRydW5rCis2OTc0MCA3NmQ3N2FlOTdiMzhmZjYwNzNlZWNlZWFhZGRhM2VjOWFiNjNlYmI0IHB5M2sKKzY5NzQxIDc1NTlhMDNjYmQzMGFiNzUxYjc0ZmRjN2VkNDk4OGZmNzUxMTk2ZTkgcmVsZWFzZTI2LW1haW50Cis2OTc0MyA5YmZmMTMwZDc5MmRlYTQ3MWYyZWE5Y2YxZTYwYWQ3MjllYzFlMzk1IGxlZ2FjeS10cnVuaworNjk3NDQgZWU3MDExODYzOTQzMjY3ZGZjNTBlZDU1NWFmNmJmMmVmMGI0YTljNCByZWxlYXNlMjYtbWFpbnQKKzY5NzQ1IDhhMjkyNTQzZTg3MTk5NzQxMDZiNDFiNzkwNzI0NWE2ZmZhYTc1NjAgcHkzaworNjk3NDYgYjJmZjIxYmJiOWM1NDA0NDc2NmIzZjhjMzg0Zjg0ZjJmMGQ5MThjNyByZWxlYXNlMjYtbWFpbnQKKzY5NzQ3IDdjN2I4MDVkMGQwYThkYWY3ZmY0ZjY1OGRlMGM3YTIxNWY5ZmRhYmIgcHkzaworNjk3NDggNzQ4ZGZlOWJiODU3ZmMxZWZhNzAyMTVhMDg1OTQzMjg3ZTJiNjVjMCBsZWdhY3ktdHJ1bmsKKzY5NzQ5IDg1ZmU4ODc2MTRjZTQ0MjBlOTAxY2YxMTZmNjg5ZDgxNjMxNmNjMzIgcHkzaworNjk3NTAgZTI2MGQ2ZGFmNzg0OGQ4NDAwZDdkMzk1ZWQ2ZjA1MTkxNTBmMTdlNCBweTNrCis2OTc1MSBkMjVmYzAyMDkyOTU1MDM2YTcwMzZmYjE1N2M5ZWM4YzYxOTZlNTk2IGxlZ2FjeS10cnVuaworNjk3NTIgM2RiZGJjNWU2ZDg1YWQ1ZWExM2E1MTA0ZWU1YWEyYWNhMDQ0N2JiMyBweTNrCis2OTc1MyAwM2YwN2Q4ZjA2ZTQ2YzAzYWJmMmRiOThjZDg3NThlYjM1Y2ZkMDZlIHB5M2sKKzY5NzU0IDMzZDVkN2RhYThjNzQ2OWYxM2NjOTJlZTBmZGM1ZDI3Yzg2ODk0YTYgcHkzaworNjk3NTUgNDk3ZWFiNzliMWJlOGU5MTcyNWEzZTMxY2Q0N2E1OTAxODRmNGI5YyBweTNrCis2OTc1NiBhOTc3NGI2MWU1MmQzZDhkNmFjNTM5MjE4NTVlNzE3ZDFhOTQwNWJkIHJlbGVhc2UzMC1tYWludAorNjk3NTcgMzAyMjYzZTNjOGYxZDJjNTVjN2QxYTIxZTRjNjhhZmU0OWQ1NzMxMiBsZWdhY3ktdHJ1bmsKKzY5NzU4IGQ0N2MyNThhMWUxY2VmYmViNWQ1YzM5OWZkOTY4NjdiZDJhN2U0Y2UgcmVsZWFzZTI2LW1haW50Cis2OTc1OSBhYjQwYzc2MTM5YWI0ZDc3YzkyMGVmOTllNTE2YjBlN2JlNjdlMGQwIHB5M2sKKzY5NzYwIDJmNTI1NzQ5NGEyZTBmZWIyNmEyMjQyYTViNTcxZTMzYWY4YTlkYzEgcmVsZWFzZTMwLW1haW50Cis2OTc2MSA1NTllNGZjMzFjOGE3M2I1ZjY0ZjMyZDA4M2Y1Y2RmOWE5YTM1ZTUwIGxlZ2FjeS10cnVuaworNjk3NjIgZWE0N2NlZjY3ODM3YjBlZWQ1YzU5YjQ3OWIzZDk2YTljNjAxYzlmYiByZWxlYXNlMjYtbWFpbnQKKzY5NzYzIDkwMDFkOWM4ZjcxZTA1MTdhM2VlM2MzMjExMjM0ZWQ4ZmQ5N2EzOTMgcHkzaworNjk3NjQgZDY3M2RhOTE1OTE0ZDdjNTkxMzQ0YzkzMzhhZDliYmRkNDcyYTIyZiByZWxlYXNlMzAtbWFpbnQKKzY5NzY1IDk4MDBhYjIzNmMwOWQ0NTVjZDYyYWNiNzFhMDM4MjA0ZTNhZGQ3ZTUgbGVnYWN5LXRydW5rCis2OTc2NiBmMGVhYzQ1MmE2Y2FmZDE4ZmEwODkxMmIyN2M4MWYyZDU4NjUzOWI0IHJlbGVhc2UyNi1tYWludAorNjk3NjcgYmQ0NjcxNzkyZDUwMTZlNWU4MTQ3NjhhZmI1NzM1NmE2ZGY3MDQzNiByZWxlYXNlMzAtbWFpbnQKKzY5NzY4IDQzNDJjMGEyZjJkYzljYWQ0NDhiMTZkNWQ5Mjg1ZmFiMGUxNzMyMjIgcHkzaworNjk3NjkgODQ2OGI1MmY1ZWUyYzM3N2NkYmUyNzMxNWIxZjA5NTExYjZhYTc1NiBsZWdhY3ktdHJ1bmsKKzY5NzcwIDAwZjdiZTAyYWUxZjFjMmQwMDkzYmQzY2YzM2NiYjBlNDliNTQzZjUgbGVnYWN5LXRydW5rCis2OTc3MSA3OGUzMTFmMjc3YTcwMjdlMWRiNTAyZjkyMTY2ZjRmNWQ0YWUyMTIyIHB5M2sKKzY5NzcyIDhjMTNmNDMwZTE2MDZhMDg1NGU2YzNlZjRhMWM1ZDAzMGJkY2FiNTQgbGVnYWN5LXRydW5rCis2OTc3MyA4MzNkZGZlYzBiYzQ1NmJlMDQ4OGE1ZTlmYzFjNjgwNTU4NmEwZjk1IHB5M2sKKzY5Nzc2IGMwMmMyYTkwOGNiMDk4ZjFmOGZkZDNmYzgwMzNmNWI4MGE3MjFmYmUgbGVnYWN5LXRydW5rCis2OTc3NyA0Mzg1OTI4OTBlMmI3ZWY1OTI5YTAxZWVhMDkwZDkxZWMzZWNjNDZkIGxlZ2FjeS10cnVuaworNjk3OTMgMjc5MzM3NTNhMzg3ZjkxYTgyYzk0ZWNmZmIzNDg1YTkxMjllNDhmYyBweTNrCis2OTc5NCA2N2VlZDgxYmE3NGZhNmEzMGE4MDZlNDQ1NmQ3Zjc1YjJjMGZlZjZlIHB5M2sKKzY5Nzk1IDk4MTVkYTQzYTFjZWZhNDZkMGExZDgxMTcwOTdiYjgzOTg5NjZmYWYgbGVnYWN5LXRydW5rCis2OTc5NiBjMWJmMDM3ZmVlZmUwNmIxZWNlOTAwOTgxMWM1YzQwNWM5YTJjMzFlIHJlbGVhc2UzMC1tYWludAorNjk3OTcgNjI0YjU1ZDBkNmI3MmRiMTEzZjQwNTA2Yzc2MjdkMjM1ZGQwNjdhMiBweTNrCis2OTc5OCAyZjNhZmFjZjlmMGI3MmNjZDYwODdiODI4OThiMWY1ZTdhNDI4OTJhIHB5M2sKKzY5Nzk5IDE0MDhmZWVjMDA4NDlhZWUwNTg2ZjlhZmQyYjEwZGQyOTE2NjQxNjQgcmVsZWFzZTMwLW1haW50Cis2OTgwMCBkYjhkYjMxZmRiNGM0N2MwMWZlMGY0ZGQ3NWI2YTA5NGFkZmYzOGM1IHB5M2sKKzY5ODAxIDBiOThlMzc5MWI5ZWM4NzIwY2E3ODJiZDVhY2M0NTUwNTBjNTIxNmQgcmVsZWFzZTMwLW1haW50Cis2OTgwMyA1YTE3ODg4YzUxNTEzZTk1ZGE4MTE2YTA3ZTJjZmJkNzFkNzBiN2QxIGxlZ2FjeS10cnVuaworNjk4MDQgZWYxOWNhMDEzZTE2ZWUxNTFkODM5YTkyZjRiODMxZjEyOWY0NTc3NCBsZWdhY3ktdHJ1bmsKKzY5ODA1IDA4MjQwOTMxNGIwMDdhODhiM2UwN2E2ZGQxNzY0OTJiOGVjM2Y0NzQgbGVnYWN5LXRydW5rCis2OTgwNiA2NWEzZjU1NWZhYjczZGE0ZTc0ZWI0NWJmNjEyYjBhN2M2NDViZTI1IGxlZ2FjeS10cnVuaworNjk4MDcgMTY0YmE3ZmZhMGVlZTU0NGI0YzNlMTM0NzY4YmMyODEwMWM4NmZjMyByZWxlYXNlMjYtbWFpbnQKKzY5ODA4IDkyNTBjOGM2MWE5MTA5NWE5NWVmNTZkM2NjMjE2OGY1ZGU2ZTRhOWQgcHkzaworNjk4MDkgNGQzYmFhYzJlMWEyMGRiNTJiMTc3OWJhNWYxY2YzOGQ1NjA4YWM2ZCByZWxlYXNlMzAtbWFpbnQKKzY5ODExIDA4NDhlYmI4ZjljODhjOTI3MGRlNjcyZmExNTZhNDZiNGU2Y2RkZDggbGVnYWN5LXRydW5rCis2OTgxMiBjNmVkNWJmZTM5NjlhMzhiNGMwN2Y3MTgzY2FmMzBhYmRmZjdmYjU2IGlvLWMKKzY5ODEzIGUwOGU0MDk4YTRlNzliNDE3YzU1ZWUzZDEzNzNjZGNiYmI3NTEzNTEgaW8tYworNjk4MTQgNDA4MmVkYThiNDY2M2IxNDUxNmNlNjk2MGMwNTIzOTJjNmE5NzllNyBpby1jCis2OTgxNSA3ZjgzYWZmNjhjMTY2Y2Q4NGUzMmVlYzE2ZjYyZGU5NWI3YmU1MTc3IGlvLWMKKzY5ODE2IDFhYWM3NTIwNDM3YTZmZDRhNzU3NDk5MDdlNjdmNzdmNmI2Mjk5MTYgbGVnYWN5LXRydW5rCis2OTgxNyBjMDVjMzBmYzExOGJlMTAwOWVlZmFiYmY0NDU0Mjc4NDY2YjJhNjJhIGlvLWMKKzY5ODE4IDZjZTk2Y2U0ZDlhZmU0MTU2ZDYxMDIwNDE4M2QyMTgzZDJiZmQ2ZDYgcmVsZWFzZTI2LW1haW50Cis2OTgxOSA1ZjU5NWFjOGFlZmMzOTYyZjllYzAyNWYzMDRlOTA4ZGIzYjcxMjhlIHB5M2sKKzY5ODIwIGUwODE1ZmVlMjRmNmUzODBiMjYyM2VmNjUxZjFkNDc1ZmFhNzhlMjAgcmVsZWFzZTMwLW1haW50Cis2OTgyMSA2N2JjZmYyOTNhMjFhZDVmZWI1NzUxYzM4N2EwNzg1NzQ0MmE5ZGZlIHB5M2sKKzY5ODIyIDM3ZTRkZjlmZGFhNmQ0MDAwNTdiZWVmZTAyYWEzMGJiM2YyODBlYTQgcmVsZWFzZTMwLW1haW50Cis2OTgyNyBhZGIxMTMzZDg5MmFiNmZjMmY0MmM3YzlmNmMwOThmYTQ3ZWE2NGNkIGlvLWMKKzY5ODI4IGM2MTgyY2M3ZTZkNzBlMDMzMWM0MTExNWEyYjAxZjNjZWRjYjU0Y2YgaW8tYworNjk4MjkgNzAyYzNiOTgwM2U4Yzc1M2Q3MWZiNzJjNzBjODA0OTIxOWUwMGM0YiBpby1jCis2OTgzMCA2ZmQ4OTBiMjBkNjNmYzdhZDhiMGQ1YzkwMzcxNWVmYzM0YzU5NzBhIGlvLWMKKzY5ODMxIGRjYzE2MWUxYWY3ZWNlMjdhZDUzM2NjNGNlZjYyZjk0ZTk2ZDI0MGYgcHkzaworNjk4MzIgNDFlMzhhNjFiYzRiNDkxNjdmMmQ1OWJmMWE1NjdlYWQ4ZGZiNjAwNCBweTNrCis2OTgzMyBhMWZhZmY3NGZmODllMmRhYWMwNDg4OTAxNTRmMThkYmJhYWVjOTg5IHB5M2sKKzY5ODM0IDcxNDliN2VlZjE1M2Q3YjM3ZTJlNDVhZDUzMDExMDJlNTJlMGYyMTYgcHkzaworNjk4MzUgNzRhMmZmNDA1MThhZTY2NTNiMTg4NmNiNzNhNDcxOWFhZGI2MTc3OSBweTNrCis2OTgzNiBlZTcwMjk3MTBjMDUwZGIyMjZkM2JmODQ0MjBhOWMzOWM5NjkzNGQ2IHB5M2sKKzY5ODM3IDNlMjdkNjA2ZDYyNWY4ZTkxN2ZjNWUxZjU2NTliMGJkZWNlN2VlN2IgbGVnYWN5LXRydW5rCis2OTgzOCAzMjZmNmZhY2MxYWE0ZjQzNmI3M2Q4Y2MwZDMxYmM2ODgwZGEyMTgwIGxlZ2FjeS10cnVuaworNjk4MzkgYTViYTljMTdmOGI5ZDUwZTA5YzBmMTRhZDA2NjBhZGZjNGE1ZjZlMSBpby1jCis2OTg0MCA5ZTZmYmE1YWNjZTQ2YmY4NDcxMWJmZGZhZWZiYjc3YTFhNWQ0ZTQzIGxlZ2FjeS10cnVuaworNjk4NDEgYzI3MmUzMTVkZDg3MjA2YTlkOTc2YzEwNGJmMTYxZDc2YzE3ZjIyYyBpby1jCis2OTg0MiA5NTU3NmJmM2FkNzM1ODk2OTM4NDk5YTVmNmFhMDZiMmM2MDYwNDA3IGlvLWMKKzY5ODQzIDM3NmQ4MDhlMWMwNWZhYWFkOWU1MDAyZWU1YWYwMjllNDNmYmE5NWMgaW8tYworNjk4NDQgNTE0NDViMDQwOTg2MTc2MjY0ZDUwZmZiNjc4MmZmN2FlMzQzMDQwYSBpby1jCis2OTg0NSAzZjAyM2ZiODNmMmI5YjlhMWI0YTg0ODllNWQ2Y2UwNzA0ZTFlNDIwIGlvLWMKKzY5ODQ2IGFmOWI2YzQzODA0ZTFlOWM0OTMzMmNhNjYzNDM2M2QwOGFlMmYyYWMgbGVnYWN5LXRydW5rCis2OTg0NyBkMDZhM2ViZjMwNmZhOTQ1ZTQzZjU5ZGYwNjM3MDVhM2Y0YzNkY2NkIHB5M2sKKzY5ODQ4IDZiYTU1ODhlZjY0NTg3ZjIyYTRlNDFjOGU2M2Q4YzE5MGIwNDg2YWQgaW8tYworNjk4NDkgZWM0OTA5MzJkOTFjYjUyZGIxMmNlMzYzM2Q3MzQ3MTg5ODczMjEyNiBweTNrCis2OTg1MCBjMjk1MmMyYjVhNGFlNjhlNzMzMjc5YzZhZmI4NGZjNDJjYWU5Nzk0IGlvLWMKKzY5ODUxIGFhMjlkMDk2NzEwNTg5ZTY3NmVhODIxZTEwY2FiZjJkNmQ3OTc2MDkgcHkzaworNjk4NTIgOTk4OGU5ZjAwNDA4ZjY1OTIyNzlhZTZkNjc0MjE4ODMxYzQyOGJkOSBpby1jCis2OTg1MyA4YTgyNWExN2NiMjczNTgyYmZmZjk0YzA1Y2RjNWVlOTM4ODdkZTYwIHB5M2sKKzY5ODU0IDdhZThhODcyODQyMWZlNWYzMjQ4MGMxMWU4NGNjZWM4YjYwNTE4NzkgaW8tYworNjk4NTUgOTZhYmI0MzllMmQwN2QwY2JhYTg3YWQ3YjViNmIxNWFjYzAzN2M2NyBsZWdhY3ktdHJ1bmsKKzY5ODU2IDZhNWJlZTE4OTNhZDgzNmMxMTIwNDA4YTI5ZWE1ZTc0MWIwMmRkOTEgcHkzaworNjk4NTcgOTE4MjY0ZmYwMmUxYzA5ZWFjNDk0NDdjMzRjNzVlZmExZGY2MmI0YyBweTNrCis2OTg1OCA1YmUyNGE1NmYwOTE4YWRkYzZmZTUyMjIyODU4MjlmZWY3Mjg5MzMyIHB5M2sKKzY5ODU5IDc2NTcxOTg2YTJmNDIwODI2NjM3NmJmMGViMjRhMjkxY2FmZWMwNDUgcmVsZWFzZTMwLW1haW50Cis2OTg2MCA4ZTdhNGE3NzQxMzg0MjZkZDdkMDRkMzJkODdhMTUxYmFkZjI4NmE1IGlvLWMKKzY5ODYxIGVjZDhlZjRlNzllNmI3MWIxMWJjYjIzNGEzYTM2NmVjZTdjYWQ2MGIgbGVnYWN5LXRydW5rCis2OTg2MiBjMzMwNGE0YjY0ZWExYTdlNTU4YzIyZWQzMWRjZWZlNWM1ZWM5Mzc5IHJlbGVhc2UyNi1tYWludAorNjk4NjMgODQ2MGU1ZWUwNmMzOTE1ZGU3ODI1ODEyMzFhZmU3NjUzNDU4MWM3YiBweTNrCis2OTg2NCAzY2ExZmI2MjJmNWE0YjhhNzU3ZjA4OTE1M2MwOThkMTk0YTY0NjQzIHJlbGVhc2UzMC1tYWludAorNjk4NjUgMDAyZGFjYTY2ZjlmNmJkZmI5ZDE5NzJmY2E3ZWQ5OGM0YmM3Y2Q2ZiBpby1jCis2OTg2NiBlZDVjZDkwNGYyMDA3YzVjZWU1Njk5MzY2NDM1YjE1YjUyMTM1ZWYxIGlvLWMKKzY5ODY4IDVmZmQ5MzI4MGE3MWI0MDdhYzg1NDllMTczNzc3NDRmMWQyZDQxY2MgaW8tYworNjk4NjkgYTBlZGExZTIyOGI4ZjhmMzU0YTQwZGZmNzc3ODIyNTE5Nzc0YTVjYSBweTNrCis2OTg3MCAwYWI4YmVmNjcxYTNkZjU5OGEwMDg5NTg0Y2VjYTExNDhjZTc4OGFiIGxlZ2FjeS10cnVuaworNjk4NzEgYzIwMWM4Y2YzY2I0MGMyNjZiOGNkNjY0YjQ3MTViYTRmOGYwYmJhYyBsZWdhY3ktdHJ1bmsKKzY5ODcyIDViNWRjY2M1MGUxMmM0NjRiMTkwNGMyOTQ0MzZlZDlkMDQ0MGU4MWYgaW8tYworNjk4NzMgNDk5MTRiM2UzYWE4MTAwZjUxMDVhNzU2MDA0MjFmYzRkMWNiYTZlNiBpby1jCis2OTg3NCBiMzUxNWVkMjgxMzUwNDE2MGM2YTczM2QwNTg2MTA4NTE0OGE3Yzk2IGxlZ2FjeS10cnVuaworNjk4NzUgZDM2Mjk2NjczOTc0YTAyMmRhNzk2MTc3MzcyOTg2YTIyNDY0ZDE4NiByZWxlYXNlMjYtbWFpbnQKKzY5ODc2IGU4OWM3ZWQxY2ZmZjQ4MGZlNWQ0MzQxMjFkOWQ1M2RlYzdkNjYwNDcgcHkzaworNjk4NzcgYWEzMDIxNjk5YzU5YWI4MGE5YTlkY2QwNTcyNjU5MGM4YmMwNjdiZCByZWxlYXNlMzAtbWFpbnQKKzY5ODc4IGNkMmVlODE5MDk1N2M5NDcwMGY5MzU3ZmU4YWViOWU2NWFiYTE2MWQgbGVnYWN5LXRydW5rCis2OTg3OSAzMzlmNWMxZWYwZWRmNDMzMmFhZDlkYjExYmVmZjYzNTg0M2ZmNzgxIHJlbGVhc2UyNi1tYWludAorNjk4ODAgMGE1YzI2ZDBiZTU0MGRjYzAyZDM5NmU4NzQ1MThjYzNiYTExODU4NyBweTNrCis2OTg4MSA2MjBlNzQyY2RmNjhhNzQ1YjA2MDE4NzViZWVhZjdmNmViMTIwMjkxIGxlZ2FjeS10cnVuaworNjk4ODIgMGVmZmRhNTQ4MTllMmM0NjdiZDliMjZiY2Q2OTBhYTFkYmQ1ZWNlOCByZWxlYXNlMjYtbWFpbnQKKzY5ODgzIGU1ZTVjYTA0OTFiODQwODI1YTAyZmQ2ZWZjZDMwODAzNmI5ZGIzNjAgcHkzaworNjk4ODQgMTNhMWNiZjExYTIxZWFkMTdmZjI0ZWE4YjFlNmEzNDkwMDlmNTlhYSByZWxlYXNlMzAtbWFpbnQKKzY5ODg1IGQyMmQ2ZTlmNzkxYzJjZjczNjY4N2M1MDlhMzhiMTA3OTFiNWY1NzYgaW8tYworNjk4ODggY2UwYTk1YWY2YjFkNDFiYmMyOTA3ZDNhNDhkMTc5MTA1ZjcxYmMxNSBpby1jCis2OTg4OSAyNzJhYzY1NGZkMWFmMjAwNzRlOGM3ZTgwNzRlODA5YzY4NWU0NWFmIGxlZ2FjeS10cnVuaworNjk4OTAgZmI3YmU0NWE5NDQxOGVmNjFjYTcwMzY4ZGM1ZDA5NzdhMmQ0NGNlYyBweTNrCis2OTg5MSAzZGY4YmUwMzYzMjQzZTBhOGVlZWU4ZmQ5YTAxYjMwZDU0YzY5Yjk4IGlvLWMKKzY5ODkyIDlmNmNiMDQzN2JlODIzNDNlZmNiZjk4Njg1YzRhN2E1ZjMzODkyNzIgaW8tYworNjk4OTMgNDQ0OTZjZDBiYzc4MDNlNDg1MThjMzU2Yzk5YWExZTc4ZDU1ZDYzNSBpby1jCis2OTg5NCBkYjE0ZWNhMDE2MzUwNmRjZmFmYWIzMWJkYTg3NTIwNGRiYzA5YjZjIHB5M2sKKzY5ODk1IGI2MWYzM2FmMzc0YmNhNzJiOGI0ZmVlZjBjNTExODFlNWQ1YmRmNmIgcHkzaworNjk4OTYgOGE0ZGMwMDg4ZTg2MjZiNTZjZGY5ZmQ3NWRhMDIzYTZlZmM4NDE2YyBsZWdhY3ktdHJ1bmsKKzY5ODk3IDMyMTliMzRhMzMyMDYxMjg5NGZhYTRjOWYyOTVjMTY3NzI2Nzg2NTEgcHkzaworNjk4OTggYTM2NjY4OGE4ZjBkM2M5ZTJkZTQ3MTZiMDA4MGYzMjI0NzFiNzI2ZCByZWxlYXNlMjYtbWFpbnQKKzY5ODk5IGM4ZDA2ZGZkNGMzOWY1Yzk2ZTBkYTc4OTkxNjg5MDliZTYyMzg5NWMgcmVsZWFzZTMwLW1haW50Cis2OTkwMCA1YmRiOWM2NDJjY2NkMTYyZThmMzk3MWRlNDJmODdiYTZmZWMxNjQ2IHJlbGVhc2UyNi1tYWludAorNjk5MDEgM2U3NzMzY2YyNzllMzRkYTVmYWM5MzBiNGE4YzAwMWUyYTQzNGVkZCBsZWdhY3ktdHJ1bmsKKzY5OTAyIDJiZjEzMzdjM2E2MDVkY2EwNDBmOTE2ZWUzZjQzZTY1ODcyZTJlMTQgbGVnYWN5LXRydW5rCis2OTkwMyAxZjFlMjJlZjU1NjA5YWUxNTg3OTk3NjU4ODY2NWY3ZDI4MDE4YjEwIHJlbGVhc2UyNi1tYWludAorNjk5MDQgNWM4NTlhZWE0NmI5YzdkY2E1NWQ0MWNhMTRlZTAwMTc1N2E1ODcxOSBweTNrCis2OTkwNSAwYTU5OGRiZWQ2NzkyNjZmNjNmMTk2ZDkzMGJiOTkxZjMwYjE2NmY5IGxlZ2FjeS10cnVuaworNjk5MDYgMDE3NGI5MzY2OWNkNDg4OWU1NzdjMWMwYWY4YjkyMzQ2MGRjYjA5OCByZWxlYXNlMjYtbWFpbnQKKzY5OTA3IDE2Y2NhMzBjZjNlYjgzYjFlMjYwNWYzMjk0ZDE2ZjJlNzcyNjAzOGQgbGVnYWN5LXRydW5rCis2OTkwOCBhMGZlY2JlNzM2MTZmNjI4M2UzZGUwZjY5OTkyYmI3OGMzY2I0M2M2IGxlZ2FjeS10cnVuaworNjk5MDkgMDUwNDA4N2EyNzIzNmIzNzg1MDIwOTAyNTdjNjYzYTZkMDIyYjc4NiBweTNrCis2OTkxMCBjMWYwMjZlMDg3NWUwNDliMDhjMjc1ZGU5NTVkZjY2NmY2N2E4ZWNiIHJlbGVhc2UzMC1tYWludAorNjk5MTEgOWZlNTMxNTY1NDNjZjUyZjgyYjE2ZmQzNzlhMjcwNzU5NGY1ZjM3MyBpby1jCis2OTkxMiBmOWVhZDJlMWEwM2NmZDhjMjNjODhlYWM0Y2M1ZTQxM2JjNTg2NDAzIHJlbGVhc2UyNi1tYWludAorNjk5MTMgYmMzYjA3M2FkMTQ2ZDU5MTU5Y2Q0NzczNGY2NDFiNjhmNjIzNjk1NyBpby1jCis2OTkxNCBhNTJlMTQ1NDU1NjE0ZTdmY2I2NzMxODE4OTY4OWZhOTNlZTRjZWJmIGlvLWMKKzY5OTE1IDY2Y2U4MGU4ZTUzNzk4ZTgxOTk2NjAyNjNjOWM2YzQ4ZTBmNzhkY2UgaW8tYworNjk5MTYgZWYzYTZjMTY4Mzc0YzQ4ZGMwMTNhOGM0MTBkY2ZmZTQ4ZDYzZmExMiBpby1jCis2OTkxNyA4MzY2NGU3ZjcwOGFiMzk3Y2RkYmI5NmQ3NWZlYWUxZTA2ZTk5MzZmIHJlbGVhc2UzMC1tYWludAorNjk5MTggOTQ5NDFiMDU5ODAwZTM0NmIxNTcxYmNjMTQ5YTQ4ZWNlZGQxMzFkZCByZWxlYXNlMjYtbWFpbnQKKzY5OTI0IGZhNzQ3NjYwZDRkNDE2OGNkNWIyM2JiYzcwOThiMDUzZWRiNWIxOGUgbGVnYWN5LXRydW5rCis2OTkyNiAwNGYzY2YzMmFhNzdmODM2MDkwNmUxMjE1NmRiN2Y0ZjBkNmQ4MTgzIHB5M2sKKzY5OTI3IDVjNzRlNDBkMTkyNmU1YTZlODQ4Mzc5MDgzMzllOTNhODM0MGM2ODEgbGVnYWN5LXRydW5rCis2OTkyOSBiMWU2MGI0N2UxNjAxN2E2YTFmYzJiMGY3ODZkMTM3MDk2OTFmZWI2IHJlbGVhc2UzMC1tYWludAorNjk5MzAgNTYxNzQ3MTAzN2JjN2FmNWNjYmE2YjY5OGI2ZjcwNDcwYmVjYzcwNCBweTNrCis2OTkzMSA4M2ZhMjc0ODNmZGM5MzkxYmM0MGM3ZDNjNmY1ZTY0NzlkZjI0MWZhIHJlbGVhc2UzMC1tYWludAorNjk5MzIgNTk1MmQ0MTE4OWFkMWFmMTExMTNmYzg4MDBhZTc2MmQ5MjU2MjNiYyByZWxlYXNlMjYtbWFpbnQKKzY5OTMzIDkwNDEyZGZkYWJhMzA2YTI0OTRkYmEwNDRjNjNlMWJmNzRmZWRhODQgcmVsZWFzZTMwLW1haW50Cis2OTkzNCAxMmM2OWVmNDNkZGU4MzJhYzBkN2YyMmJjMzEzNjg4Nzg4ODBiYWRiIHB5M2sKKzY5OTM1IGMwYjliYzI1Y2ViYmUzOTk3YWIzYjg1NDVjNTllMDAxMTI5ZTI2ZmEgcHkzaworNjk5MzYgYmM3MGVjOTdlMzlmYWY1NzY2OWZkMDFjZjdjOTNjNzFiNzU4ZWFmNyByZWxlYXNlMzAtbWFpbnQKKzY5OTM3IDljMjVhMDc5MDAyMmMwNjE3NWJhNmY1YmRiODA3ZWNhNDZiZTI5ZDYgbGVnYWN5LXRydW5rCis2OTkzOCBmYWY5NjgyMTJmMzFkNmEwN2FiZmY3ZmQ3NGQzZTcwMGNjMzE3OTgxIHJlbGVhc2UyNi1tYWludAorNjk5MzkgNTc0ZmVmNTNhN2UzZGU0OWUyOTE4OTU3NzEyNThkMTcxMDhlY2FkZSByZWxlYXNlMzAtbWFpbnQKKzY5OTQ2IDQ1YjQ0YmQzMmY0MTY1ZDE2OWMzMWJlOTYyNmJjNjliYThjNGY0NzMgbGVnYWN5LXRydW5rCis2OTk0NyBhOGJiODJmNWZkNjQ3YWQ3MGMzYjAyODY1MGY5YjZjODhjODhlMGFkIGxlZ2FjeS10cnVuaworNjk5NDggMmY2YjM0ZjY3ZWYwMjAxNjU5ZWZkYWQ1N2Y3OTFiZjEzYjMwMDI4MCBweTNrCis2OTk0OSAyZTI1NzcxZDcyMDIxNjFmMjU0MGY5MzFiZjA1ODEwOGZlODU2NTIxIHB5M2sKKzY5OTUxIDYwZDA5YTcxNjU1NjgwYmQ3NmMyMTUxYzhhYTFjMzgwYzY1MGEzMjYgcHkzaworNjk5NTIgMWQyNDczOTUxMWM5YzkyOWZlZmJjZjAyNmE5YmFiODhjYzY1N2E4MiBsZWdhY3ktdHJ1bmsKKzY5OTUzIGI4YzRhMzc5M2QwZjUxMmE3ZjBkOWEyOGNjMDEyZmVjYmFlZGI5MTkgbGVnYWN5LXRydW5rCis2OTk1NCBhN2ZkZjY5Y2FlMTM1YzBhYzQ5Y2ZiY2ExMDcwMDdkZmMwYWQxODViIHJlbGVhc2UyNi1tYWludAorNjk5NTUgNDZjYmU2N2I5NjYxZjcxMTlkYzY4OWIwYjRhMzFiMjdkMzA5YjFhZSBsZWdhY3ktdHJ1bmsKKzY5OTU2IGRjMzE1ZGY3ZTgwODYzMjc5NWM4MTgyZWRjNDliMjg5ZDQ4MDMzMTQgcmVsZWFzZTI2LW1haW50Cis2OTk1NyA2NTc2MmEwNmI4OGYzY2YzMDMxMzU4YWIxZTAzZDZkMTNjYzc4YjYyIHB5M2sKKzY5OTU4IDMzN2JkNTA5NDU1YTE5NzE4NzAzNzVhNTk1ZTUwMzIxNjQ1YWJmNmQgcmVsZWFzZTMwLW1haW50Cis2OTk1OSAxNzdiYTEyMmJiMWIwMmMzYTMzMmIzMTVkOWI1OWJlNTU1NjFkNzllIGxlZ2FjeS10cnVuaworNjk5NjAgMjliMTJhODliMmEwNmM4MDViMTU3MjU1ODA4MDgzOTc4ZjE0OTAwNyByZWxlYXNlMjYtbWFpbnQKKzY5OTYxIDY0M2Q4ZDRmYzhlYmNjNjkxNTVkMzQxNjM1N2FhZGNhOWMwNTMzODggcHkzaworNjk5NjIgMDhhMjk2YTg4YzNlMGIzNGIxNjFlOWI5NTA4NmExODE3OTVhZWZmYiBpby1jCis2OTk2MyA4ZTBjZWI5ZjVjMmE3M2YzNGZkMjU5NjM3YTJmODdlYjgyYzkyNjRhIGlvLWMKKzY5OTc0IDQyMWEwMzY5ZjIzOTRhNGE0NzYzYWMyNWI1MjRmN2JhMGViZTg2NWMgbGVnYWN5LXRydW5rCis2OTk3NSBhYzI2NzY1ZmIxYmI4YjA0NjFlZjViNThhOGU0NDBkYzhkNTIxMjFhIHB5M2sKKzY5OTc2IDcwMmYxODk5MTYxZTE5NDFkMzUwNDVhMGM3ZjQxYWQzYmVmZGQwN2QgbGVnYWN5LXRydW5rCis2OTk3NyA2OTJjOGE5ODgwMjY0YjJlNmZjZjEwMjJhN2VkYWUyMjIwZTA0NzA0IHB5M2sKKzY5OTc4IDAyZWVjZGIxNzM1ODA3OWNlMDczNmYyZWVkZTczNGMyZGFmZWFhNWEgcmVsZWFzZTMwLW1haW50Cis2OTk3OSBmN2IwMzAxMDE2MmM0MTE3ZDdkN2NjYWVlZmY0ZTVkMzFmYzRmY2EwIHJlbGVhc2UyNi1tYWludAorNjk5ODEgMGVlM2I5YTdmMjA5N2U5ZGE3NzY3ZjlkNzVlNGJlZTM3N2FhNzQ0NiBsZWdhY3ktdHJ1bmsKKzY5OTgyIGQ3OGIyOGEzNTI0YzVhYWU2YWE1YmUzZDViZThhODgxMzM5MGIxNzQgcHkzaworNjk5ODMgYzA3ZDdmZDI3NDY5OTBlMDI3NzliZGJlNDg2ZTRjMDk5NjU2OGZlNyBsZWdhY3ktdHJ1bmsKKzY5OTg0IDg4NzM4NTRiYjVmOTA3MmU1YjczYjYzNzg3NDQ4ZDQwY2U2NzI5ZGEgcmVsZWFzZTI2LW1haW50Cis2OTk4NSBjODAwNDgyMTVkZTU4MDBiMDZkMzRmYmZmMjM2YTlkOWQwOTAwMDc5IHJlbGVhc2UzMC1tYWludAorNjk5ODYgMDUyZmI1MWY4ZGNmM2I3OTI1ODlmOWQ4MGM2NzU2YjljNjFkNzA1ZCBweTNrCis2OTk4NyAzZWNkNDg0NzU2YjAyM2IzZmE4MDI0Nzg0MGM3YjM4NTMzMGE2NGFiIGxlZ2FjeS10cnVuaworNjk5ODkgZTg3MmY1ODdmMTkwMWE3NDI4ZTllYWViOWJmOTI1NTdkOGU2ZTMzZSBweTNrCis2OTk5MCBlOTliNTZkYTQzMmFmNmQxZDU2YjMyMTc3ODRlOTBiN2QyYThhZmFlIHB5M2sKKzY5OTkxIDMyM2E1YThkMTBmYzg2MDAyYjkzMTFmNWFlNzhlMzg5MWUwZTM0YTUgcmVsZWFzZTMwLW1haW50Cis2OTk5NCA2OTgxNzVmZThiM2RlOTkwZDNiNmI3MmNjYzVlYTAyNDkyNjY2NGNkIGxlZ2FjeS10cnVuaworNjk5OTUgM2Y3M2I3YWYxMzFjMTVkMjk3YmQyNjMxZDA0NmU1NzI5MzYzM2ZjYSBweTNrCis2OTk5NiAzNzIyY2U0NTgzMTg5NDdhOWYyNWJkODg5OWJlYjIwNmNkZGU2NTZiIHB5M2sKKzY5OTk3IGExYjNkMDIxNjgyMGE5ZDYyODE4NzA1MDQ2Yzc4MmE4MWJmYmY2ODggcmVsZWFzZTMwLW1haW50Cis2OTk5OCA2MzI2NjY2OTFkM2Q0ODA4MzA1M2M2ZDhjMDdhOTE1MWU0ODJlYjkxIGxlZ2FjeS10cnVuaworNjk5OTkgNThiYmViMzNmNTgzMzMxYzY2MDhhZmZhNjMyYTczMWQxYTliZjA4OCBsZWdhY3ktdHJ1bmsKKzcwMDAwIDcxMmFhNWJiN2I0OGQ1ZDdjZWMzYTBjOTQwN2ZlMjdlZDNmZWZmZWMgbGVnYWN5LXRydW5rCis3MDAwMSA4NjIyODk0N2I2NWQxZjkwNmY4OGQyMzNmM2YwYjU4ZGEyZjdlODRhIHB5M2sKKzcwMDAyIDE0OWRjNGJjOGVjYTAzMTIzMDg3NjAxY2UwYmZjYTg1OGRkOTUyMWUgbGVnYWN5LXRydW5rCis3MDAwMyA4YjRkYTFmNDkzODQ1Y2EwNzgyMzEwMjJhOTFjYmM5MWY1Y2E5YzkwIGxlZ2FjeS10cnVuaworNzAwMDQgZjE3MDcyOWUzMDM4MmQ5YzAyNTllZmI3MTE3ZTUxYmZjNmVmNzM3ZiByZWxlYXNlMjYtbWFpbnQKKzcwMDA1IGYyZTZhNWVhMTBmZTBhMDk2OGFiYjA4ODI1ODk3YjQ3NTJjZGM1ZTMgcHkzaworNzAwMDYgMzY5NWNhZmVmNThkOTM0NGVhMjljYTU2OTdkYWVlMGMwOTA3NWRhMSByZWxlYXNlMzAtbWFpbnQKKzcwMDA3IGI3YjIzODg3ZmJkZTY4MTUwZTc1NGQ4N2E2MjY0Yzk1NGU2Y2EyMGUgbGVnYWN5LXRydW5rCis3MDAwOCBlYzFmOGViNGRhNTk0ZjVlZDk0MDc5NGI0ODE2N2VkMzYwNTJjZmE2IHJlbGVhc2UyNi1tYWludAorNzAwMDkgZTlkMDNmNmIwZDU5MDU2ZmE5NTQ2YTFlMjc1NWEyMTIyNTdmZmFjYSBweTNrCis3MDAxMCAyMjhmODlhZTU1YjEwMDgyN2JjMDkwNTliZmQzNjY2MDY1NDEyNGVhIHJlbGVhc2UzMC1tYWludAorNzAwMTEgMmI2MGI0NjUxM2QyNjNmOTIwNWZiZjRjZjk4ODU2N2Q3ZThlODJjMSBsZWdhY3ktdHJ1bmsKKzcwMDE1IGM0ZjI3ZTU0NmNmNTE3NWU1MmRjMzY1N2JmZGM1ZmYyZjcxMzkyMGMgcHkzaworNzAwMTYgMTA1YTUzMTdlNjhlMTI5MDk5ZmY5ZTk0MWUyMGRlMmZmMzkyZjZkZSBsZWdhY3ktdHJ1bmsKKzcwMDE3IDhiNjg5Njg4NzljNzBkZjEwYTAyZTAyZTNiYTY2OTNjY2QzMzg2ZDIgbGVnYWN5LXRydW5rCis3MDAxOCAxNjczZDk1NzMxMWEwYmI0YTkzM2Q2YmE0YWNmYmIxYjk5MGVkZmEyIHJlbGVhc2UyNi1tYWludAorNzAwMTkgNGZkODBlNjZiMTA3MjJmM2Q0MGYzNzc0NTNhMmYxNjRkNzYxYWM0ZSBweTNrCis3MDAyMCBkYjFkYmYwNTcxNDdhNGE5OTY0OTljN2IxYjA3M2Y5MTgzMWZmOWQ4IHJlbGVhc2UzMC1tYWludAorNzAwMjIgODY2Zjc0N2MxOTZmMTM3NGQ5ZGZmMDU1ZWQ4ZGZkYjMxZTI5M2QxYSBsZWdhY3ktdHJ1bmsKKzcwMDIzIDgwMDNhMmZiNjI1YmExMDM4N2RjOTExZTU5YTBmNjNhMjk3NjdmY2MgbGVnYWN5LXRydW5rCis3MDAyNCA1ZGFjMDgxZTczMGQwODA1Y2E1NDhkOTVkODA4ODQ5ZjYzYzVkMDgwIHB5M2sKKzcwMDI1IGViMDNlNWFlNzEwOWE2OTc0Y2MyMThhZGQ3ZmI1N2EyYTJkN2ZhODggbGVnYWN5LXRydW5rCis3MDAyNiA4Mzk5ODM1OTUzMzgyOTJhMzQwZDQ2MDM2YjQ1ODllZTBmNzlkZWVjIGxlZ2FjeS10cnVuaworNzAwMjcgMWY4NDcwNmU4MTZjMmU3MGVjZjYwMjZiODZkNzU0YjE2ZDgyOTMyNyBweTNrCis3MDAyOCAxZjBkZTQ5NGJjMTMxMDc2ZDQ1NGUzMWUzY2Y0N2ViMjYzYjcyMjI4IHB5M2sKKzcwMDI5IDliNjJjYjY1Mzg5MjI3NjVhODI0YzljYjQ1YzcxOWFmZTU5N2JmNDUgcHkzaworNzAwMzAgYTVmMDM3MTg1MGZmNTRmNDVmMmEyNzllNjIwNWQzZGI1ZTI1Y2YxOCByZWxlYXNlMzAtbWFpbnQKKzcwMDMzIGIzMDZjNzJmZmQ3MDEwZWQxYTZjNzY3ZjlmNGQxZThiNDRjNzRlMDAgaW8tYworNzAwMzUgZDE1NTZiODE5NWYyOGFkNDU3MjM2ZTk5OTMwNWI4MDIzN2Y3ZDIwZCBpby1jCis3MDAzNyBlMDk0MmM2NzUzNzI4Yjc0YmY2Y2NhYTlmMWZlZDBlOTBjMzIxOTUxIHB5M2sKKzcwMDM4IGI3MWRmNDRkNWJiZjBhNmFiY2ExMjA4Y2JjYWJmY2ViMzg4MDFhMDUgaW8tYworNzAwNDEgZmM4M2NhMWFjMTEwODgxM2UxYWZlYzRkYjAyZGMyMzEyOWM2Zjk4MyBpby1jCis3MDA0MiAzNWMxZDUyNjA3Yzg0ZjlmNzIxNjY5ZTYzMTFmYTRjODhlNmM4ZjEyIGlvLWMKKzcwMDQzIGQyNDUzM2ZiM2Y0N2ExOWZkMDRkY2FiMzZmNmIyMTlmMDJlMDA3M2EgaW8tYworNzAwNDQgZjc1ZmI5ZjQ3MWQwOWIyNWNkZGIwYzU4NWQ2NWUyZWYzZWYwY2E3NiBpby1jCis3MDA0NSAzMTQ3YjNiNzhkY2Y3ZWIzMDU2MjY4NDlmZDNiMjU1OWY1ODU1OWU4IGlvLWMKKzcwMDQ2IGEyNjVmNTk5NjFmNjZhM2RlYmM0MzNkMTRlNTMyOWFiMTA1M2JlZDkgaW8tYworNzAwNDcgYzg0ZGNhYzdlNjlhMTg1MGU4NWZkYzZmN2RmYzAxMzlkNzYwYmMwMCBpby1jCis3MDA0OCBmMzM5ZGE4Mzg1OGQ5OTEwNDQ0NGMwMDdhYzljZjM3ZmU3Y2QxMWRmIGlvLWMKKzcwMDQ5IDc4OWZmOGJkMTkwYTViODAxNWQ1MTcyMjU5Yjg2ZTBhMTEzZDliZGUgbGVnYWN5LXRydW5rCis3MDA1MCBiZTVhOWM4NGY2YmNjYTdlYzQ5YWQ2ZDMyODBlYTI1MWQwNTE5OGMyIHJlbGVhc2UyNi1tYWludAorNzAwNTEgMjA2MDM4MTIxYWRlYzk3NTUzNTdiMzUwZmJmODAyM2FiM2NjOGM5NyBweTNrCis3MDA1MiA5ZGU1ZDYyYWQ0MDIyOGVmNjJlMjdlY2FlOGFlNzRhNDJkNDMxYzZlIGxlZ2FjeS10cnVuaworNzAwNTMgYmE2YzMwNmNmMmNlZTc3MWZjYzE0Mjk1NDFlY2ZiNTA3NjQ2YzhhYyBweTNrCis3MDA1NCA5MDAzN2Y5N2Q4NzA3YmNmZGRmODA4M2VlNTEyYzUwZWNlZDA2YTg1IHJlbGVhc2UyNi1tYWludAorNzAwNTUgNzU5ZGJhY2U1MWQyZWQxYmVkYjY0MDU0YWZlMmNiYTZhMWNjYzAyNCByZWxlYXNlMzAtbWFpbnQKKzcwMDU2IDI5ZDY1MmUzZjJkMzJhYjljZjgzYmJlNDRlNmFiZmI5OWYyMDI4NmEgbGVnYWN5LXRydW5rCis3MDA1NyAwZTZmYWYyN2I1MzFmMjczZTE3MjI2Yzc4ZTg0MDM2YmFiYjUyOWY4IHB5M2sKKzcwMDU4IGM2NGQ0YThhZTJiMmVjYjgwOWFjNmQ4NWY0ZTVjMzg2YTE3ZWEzMTIgcmVsZWFzZTMwLW1haW50Cis3MDA1OSAyYTBmODRhYzQ5ZjA5MDNjMzFkZDU1OWFhZTA0NWY4NDNjNjJlZjNhIHJlbGVhc2UyNi1tYWludAorNzAwNjEgNjcyNDI1YmUzODhhNjkyMWRjOGE3NmFiZjgzZDQxOTJjYTFmNjVkOCBsZWdhY3ktdHJ1bmsKKzcwMDYyIDRlMTU1NjAxMjU4NDU4M2ExODY4OWJjNWI3ODcwNmIyNjY3YzNmY2UgbGVnYWN5LXRydW5rCis3MDA2MyA3OWU2NmMxMWRjODBjYTJhMGFkODBiMDVlYTc1NDkzZTE5MjZkZGUyIHB5M2sKKzcwMDY0IGFlMjI2MzFhNzg3YzQ5YjlmNDllMTUyZDg5ZWFmYmY1YWVlMDhlNzEgcmVsZWFzZTMwLW1haW50Cis3MDA2NSA2NzY1NjdlMmE3MTE5MjEyNmYwMzQyZGNhNWZjYTdiYjg3MDYwNjY2IHJlbGVhc2UyNi1tYWludAorNzAwNjcgZDFhMzE0ZTBlZmY3MjAwMzVmYmQ0NTIyMGNkZjlhOGU3ZGEzNTdhYSBpby1jCis3MDA2OCA2MDExYzA5MmUyMTM0NmVlN2IzNWI2NjRmYzUzMzdiNjE5NzZmODUxIGlvLWMKKzcwMDY5IDdmYWNhNjk1OGRhYzAyZGFiOTAzODNjYzcwZDQ3NjlhZjc3ZDQzNjAgaW8tYworNzAwNzAgMGFkM2RlMjE2ZTgzZTQzZmZlYTVmYTdlNjMwZmM2Y2M3MjQ2NWFjOCBpby1jCis3MDA3MSBlZjhmZTkwODg2OTY4YjFlYjQ2OGNiOTFlYmFlMTAzZjc3M2ZhMTdmIGxlZ2FjeS10cnVuaworNzAwNzIgNzVmZjY2OWJmOTk2ZGVhOWYwZTNiY2I4NmE1NDQzNmRiY2YzZjJkZiBweTNrCis3MDA3MyBiNDIxNDQxZWU2NzljNWU4YzNiMTI3NGU1ZjEyMTFjNjhjNjUxNDU2IHJlbGVhc2UzMC1tYWludAorNzAwNzQgZTQyODdkOGM5NzQxN2FlNTI2MGJjYzkyNWJhYWE0NzAzYmQ3YTU1YiBpby1jCis3MDA3NSA5ZjMwMDM2MTI0ZjY3OGEwMzZlMGEwMWMwMzhhN2QxOGRiZDdkZWZjIGlvLWMKKzcwMDc2IGUxY2U2NjZkNzQwNWE2MzdlNDA4NWExMTc0ZGIxMmY3NzE2MGNmMWMgcHkzaworNzAwNzcgZmMyYTZmNmQzNmFjYTUxZTVjMjYyNWFjZTUyOTM4NmY0MWU5OTg4YyBweTNrCis3MDA3OCBkNzA3NzNjOWFkYWQyZDFhNzkwYTJiNDQzMDRkMTU1Y2I1NjQwNzcwIGxlZ2FjeS10cnVuaworNzAwNzkgNWRmNjZkZmE2ZjY0YWM2NmIyM2E5N2IyZDEyZmNlOWVmN2IxYWIxNyBweTNrCis3MDA4MCAyYTQ1ODEwNmFmYmZlMzViOTZmMzgwYTEzMDJkMDBkZTAwNTFhMDcyIHJlbGVhc2UyNi1tYWludAorNzAwODEgMmM1OTAzYTAyYjM2M2EzOGUzYzgwNDk4ZTZiOThjMjAyOWJhMTU3OSBsZWdhY3ktdHJ1bmsKKzcwMDgyIDYxMmZjNmVlNjhmNzQ1MTg1OTk5ZWY3YWMwMzczNDNlOGFkZTVlMmQgcmVsZWFzZTI2LW1haW50Cis3MDA4MyBiNzYzMmRmMTEyMWZiNzIzNWZmYjMzZDRlMGExODZkMWE2NTQ3YzZiIHJlbGVhc2UzMC1tYWludAorNzAwODQgNmZkMjMxOTE3ZWY3YzIzMWUzOGI0YjM0YWU2NGZjNGU0YmUzZWRkYSBweTNrCis3MDA4NiBhNmMyNGFhY2U4Y2JkNzQxMzJlNmRjNTM1OGVmNjU3MjhmMmZiZWM2IGxlZ2FjeS10cnVuaworNzAwODcgMmNlYjJhNzY4ODBkNWZmMzE0MGI5NWZjMTEyMGNhNjk4NjU3NzQ4NiByZWxlYXNlMjYtbWFpbnQKKzcwMDg4IGFkYzliYjQ0ZWM0NzEwMWRmMTk4ZGFhYzdlMGIzMmQxNDRhYmNlOTcgbGVnYWN5LXRydW5rCis3MDA4OSA5OTE5YzFmNDc5NWVmODUxOWNiNzRiYTk4ZTU3ZDYzYTAyMThmNzE3IHB5M2sKKzcwMDkwIDhmNWQ4ZjI3YzZmY2RjOWRiNTA1MDkyNzc3NzAxNmNmNWQ0ZWExMmMgbGVnYWN5LXRydW5rCis3MDA5MSBkY2QzYmMyZTIzNzczYzAwZDhkY2RiNDdmYzY1Yjk4ODMzZTViYWM1IHB5M2sKKzcwMDkyIDYwZmNmZDEzN2E3MjkyY2YyZmViZGI2NjY1ZmE1ZDQzN2U1YzM4MmYgcmVsZWFzZTI2LW1haW50Cis3MDA5MyAwOGE0YTNmOWM1MGU5YzAxNTVkOTg2YjRmNWYwZDdmOWM0YTM0Yjg3IHJlbGVhc2UzMC1tYWludAorNzAwOTQgMGI5N2ZmYjgxMWEwMTIxMmE3NTQ4NDQwYmU5YzMyNTk0ODQxYjA5NSBsZWdhY3ktdHJ1bmsKKzcwMDk1IDE5YzFhMWNlYjEyOTU1OWVjMzY0YTRmNTg2ODg5MjBkOWVmYTlmMzggcmVsZWFzZTI2LW1haW50Cis3MDA5NiBjMmE4YTUyYjgxMWRjOGM1ZDk4OGI3YWM2NzZkOTFiYmM0MjI1MWM0IHB5M2sKKzcwMDk3IGRlMTEzYjZkMjZkMzI3NDAxYzM4NzgyY2NjYzhhNTNmOGVjOGY0MWIgcmVsZWFzZTMwLW1haW50Cis3MDA5OCBkNWYxMzRhM2E4MTZjNzA5MzFmMTU2YzI3MDc5YjcwYTMyZmFiOTZmIHB5M2sKKzcwMDk5IDhlMDNiZmU3ZWYzMzFhOWEzOTQ0MjhjN2YzYjg0MjgzMDNhMzA3NWIgcHkzaworNzAxMDEgYzkxMGY2ZTNiYjI4NzE5ODFjYmEzOGI0MjU5MDI5NDY3MWQ4MGMyMyBweTNrCis3MDEwMiBjYTg3YzQ3MDdiZmRkZDg3MzkwZWExODBlYzNiZDIwNzYwYmM5YWE1IHB5M2sKKzcwMTA0IDg1YWNhNDNkYWJjNDkzMDMyY2M5NDI0NTU2MjRjZDRiOGI3ZjJhMzkgcHkzaworNzAxMDUgZDUxM2NlMjkxZmJkMjJmYTg2YmIxYThiMWU4NjkxMzVlNTI3OGJjOCBweTNrCis3MDEwNiBkYjI5YTNmYmNiYTBmZGZmZDk1YWVhOTg0ZmFjYjAyNDk2MWVlNjJjIHB5M2sKKzcwMTA3IDg3MTE1YzcyNzEwMmI0MjA1NjJjZGJlOGE4NzRhZGMwNGM2MTU1YmYgbGVnYWN5LXRydW5rCis3MDEwOCAyZDY5ZDBkM2E5Y2E1ZTNmMDY0OTE1ODY1MDRiYjE4MDcyOTgyMTFhIHJlbGVhc2UyNi1tYWludAorNzAxMDkgOWM1NmViMTdmMzM0ZmNmOTU4ZjQ2ZjBhZDZjNDk2ZTEzZTMzZThhMSBweTNrCis3MDExMCA0ZGE1ZjBkZWQzNjIyZTEyZTE2YjlhYjhmYTY0YWM5ODAwY2M2OWM1IHJlbGVhc2UzMC1tYWludAorNzAxMTEgMTE2ZDkwZWYzMTY0OTQ5NDk5NDI1YmI4YzM1NjA3MTQ1ZTJmNzJhNSBweTNrCis3MDExMiAzNzRhOWFlNWRkMGY0MmE0YzQ0NmNjZjVkMjk5Yjg4ODMyYmY2OTM2IGlvLWMKKzcwMTEzIDhmZTI5ODhjZjU1MDkyYzgzMmE4MGRlYmJmY2VlZDgwYzlmMzhhNjUgcHkzaworNzAxMTQgN2IxNzQxZDY4MDllODk2M2I1YTg4ODhhNzI4Y2ExYmZlZjY5OWMzNCBweTNrCis3MDExNSAwNDU4NzMwZWIwMzhiOTdmZjYyOGNjNjVkYzY0MWE1YzcyNmIwNTA0IGlvLWMKKzcwMTE2IDE3ZWExOGRmY2FhNTVkMmZhNmNlNDU4MDA5NzZhYjEzMzMxMWQwOTcgcHkzaworNzAxMTcgZDM0MmE3MjViMmQ1ODk4YmUzNWI3NTU0OGVmYzkxMDFiN2M1ZWZmZiBweTNrCis3MDExOCAwMzgzMjM1NmMwOTY3NDQ4ZTE4OTgxNjI4OTgyNjhlMTA5NWY4NzUzIHB5M2sKKzcwMTE5IDZjMDhiZmU3OGZmZmViMmI2NTQ3YWY0ODU5MmEzYzAzZThjYWNhZjAgbGVnYWN5LXRydW5rCis3MDEyMCA0YTRkYTk2OGRlMmE5OGM4NzU2ZjllYTJhOTQ5ZmQzNWYwMzNmN2ZmIGxlZ2FjeS10cnVuaworNzAxMjEgMGM2MzU1NzRiMTM5ZTBjY2RhMjgzMjkzODkyOTA3ZjUxYWZiODE2NCBsZWdhY3ktdHJ1bmsKKzcwMTIyIDZiMWIyZTdhMDZlOTdkNTlmNGNlM2ViNmVlMjZkNGZhYTI4ODVmZDggbGVnYWN5LXRydW5rCis3MDEyMyBiMzczYjk5NjJjMzVhYzJkNDA0NTFiMzg4NGFjMmEyYTdjM2E0YTk3IGxlZ2FjeS10cnVuaworNzAxMjQgNGQwNzhkNTIyZjI1OTc1MmQ3YTYxNzI3YWM4Y2NjODBiOWQ4NzJkZCBweTNrCis3MDEyNSBmZDA4ZTk0NDlhNDM4ODNkNGQ0ZDBjNjUwMDczYmM2NmJhYmQ0NThmIHB5M2sKKzcwMTI2IDhmN2JlNDg3N2E2MDZmMDBhOTVhNWZkNTM5MTU5ZjMxYzIzOTdkMzYgbGVnYWN5LXRydW5rCis3MDEyNyBlOGFmNGUyNGYwOGY4ZDRkNmY1ZmNhZmEyMjdjYmU3N2ViNTNkNTU4IHB5M2sKKzcwMTI4IDI1OTZkZGRiZDA1N2I3ZGYwMmY1ZjA3MzkyODVlMDI2NzQ4ODExMTAgcHkzaworNzAxMjkgNWFkODhiOTE5MzE4YTU0NTM1MzhmN2JmOWJiN2UyZGY4NjIzZGE1OSBweTNrCis3MDEzMCAwYTYwOWJhNTRmNWM2NTk0NWM0Zjk5Zjg2NGU3YmZlOTExMTkzYTFjIHB5M2sKKzcwMTMxIDk4MjUwMjgyNmY3ODk4NzY2ZTI5ZGRlNjA1Y2UzNDFiMzkxMDViOTUgbGVnYWN5LXRydW5rCis3MDEzMiBhZTcxZGY5Mzk0ZGFjOGJjZDAyMTVlMDYwNGU2NjBhN2ZhNTRlZDM2IGxlZ2FjeS10cnVuaworNzAxMzMgMTE3NzI1ODZiYzQzOTdlZDY4NWVmNGNlYWVhYmNlOGU2ZjIyMThkMCBpby1jCis3MDEzNCA3MzhmYWQzOGE0YmZlNWI2MmNhYzgxODc5MTM5YzBhZjg5YTM5OWI2IHB5M2sKKzcwMTM1IDViNGU4ZjRlOWNiZDYyZTk4ZDVjZGQ0ZGNmZDZmODE5NGQ1NzFmMWUgaW8tYworNzAxMzYgNjFkMjBlOTE5YTllNjZmOTUzMzUyYjRhZjJlYjZmMjJlNmMyNTVjMiBsZWdhY3ktdHJ1bmsKKzcwMTM3IDgwMjMzZGYyNGY4Y2FkNWFiMmVlYmVkNDI0YTIxZGU1OTQ2NGFhZTIgbGVnYWN5LXRydW5rCis3MDEzOCA5MjBhNDFkNTgxYjU5ZWVmMzQzNzZkMGJhNzVhN2VkYmRiZjU4ZjViIHB5M2sKKzcwMTM5IGU2NzNmOTM5MjQwMmQ3NTU0Nzc2N2JlNDJiYjZiNzU0ZTU5N2Q0YjYgcHkzaworNzAxNDAgYzk2ZTFhYjRkYWIzYWEwNTM4N2M1Yjk5ODc3ZWZjNzlkYjg1MzkzMiBpby1jCis3MDE0MSAzOGFhNmYzNmNlNGZjMTAxYzFjMDljNzg2YmZjZWUyMDM4NjQwZTM2IHB5M2sKKzcwMTQyIGQ3NzE3MmViNmZlNzg5ZDMzYjkxNWMzZWEyZGZkZTM4ODEwYTliOGUgcHkzaworNzAxNDMgM2I4ODViOTJhZjZjZGNkNDE4MjRmOTY1OTJhMDU3OWQ4OWZiZjM5OCBweTNrCis3MDE0NCA3N2VmYmIzYzMxMTBjMDI5Nzc0ZjdmZDdjZWNlZjNjZjk4ZDdhMjdkIHB5M2sKKzcwMTQ1IDAxZjgzYmI0YTFjNGQyYmY5NzZjZTEyNjRlNWY4ZTNjNTVkNTZkYTUgbGVnYWN5LXRydW5rCis3MDE0NiBmNjMyYTRlNmVlMzE0MmNmZGFiNzIwYWI1OGUzNjJjYWY0M2Q0YzVkIHJlbGVhc2UzMC1tYWludAorNzAxNDcgNzExMTg0NWMyZjVlM2EyMmU1MTkwZDI4NGY2MDhmYmNlNWQ1MjNiNyByZWxlYXNlMjYtbWFpbnQKKzcwMTQ4IDdkNjkwNzBhM2Q3ODNkZWIwZjEyNDAxZTBlNThjYjYwMmVhZjhlMWYgcHkzaworNzAxNDkgNzc4NTk5Y2U4MWExNGM2OGE2YzdkYmQ5NWJiMGU3OGY2YTM4Yzc4OSBsZWdhY3ktdHJ1bmsKKzcwMTUwIDhhM2RhZGNjZDIwNzUzYWFhNDg1N2RlZjIzNjMzODNmMjJkZGY5MTAgcHkzaworNzAxNTEgNzFkYWUyMmUxODFkOTgzZTI5NGNhY2Y4YjI4Yzc5YmI2MGRiOTA0MyBweTNrCis3MDE1MiAzMDQ5YWMxN2UyNTZiYjMwYjc5ZjExMzRhMzdiNjU3ZTMwZDNiNzhiIHB5M2sKKzcwMTUzIDU4ZGI0ZGViN2FiMTZkNzdkYTA5YjIwNTQ0MjViMWVlYjg0MWRkYTkgbGVnYWN5LXRydW5rCis3MDE1NCBlYmUxMDgxMGViZWRlY2JmZmVjNzk2OGNlZWY5MWVkZmM5NjY4NTMxIHB5M2sKKzcwMTU1IDAxNTlhYzJiYzc4N2M0OTk4MzVkZDc4NDMwZDM3NjI2MDA3NzJiYzUgcHkzaworNzAxNTYgZTM3YmIzMDI1NWYzMTE3MzYwMzk5Y2M0MGJhYmNhN2Y3MmE3ZTNlYyBweTNrCis3MDE1NyA0NTYzZTYxMjA1NDRjMDc4MWY4ZWY0OWI2ZjAxNDhjMjViNTY4NTIzIHB5M2sKKzcwMTU4IDE5NGZkNDAxOTIyZTYwN2RiOTExNzhjNzY5NjM2OTcwYjlkMjZmYTMgcmVsZWFzZTMwLW1haW50Cis3MDE1OSBmODY3MGE3ZGEyMjk2YjAwYmU5YTVkN2E3OTY4NTkxMjEyY2RhOGJlIHB5M2sKKzcwMTYwIDc2OGFlZWEyYmMwZmRiYTM3M2QwNTFlM2Y0OTY5M2UyMGNmYmRjZjEgcHkzaworNzAxNjEgNTVmM2I4ODFjZWQyNjM3MWM2OTVmZTBjNTU5NzZiZTJkYjAzYmVkOCBweTNrCis3MDE2MiAwYTUzM2RjMWRlYjIyNzcyNDllMWFjYjRiYzQxMzRhYTdmNWI4NDg0IHB5M2sKKzcwMTYzIDc2YTU3OWI2YmFkZTk1ZDFlYTE5NGQ0ZjU4YTgyODIwN2ZmYmRlOTUgcHkzaworNzAxNjYgMGMwMjg2ODViNDRjM2JiNGExMGIxNjEyZWMwYjA4OTA2MDVmYmM5YyBsZWdhY3ktdHJ1bmsKKzcwMTY3IDI0MDIzMWFjNzljZmQwMTcxZDA4NzU4MjZmMDZjMjcyZjdjMWMwZGQgbGVnYWN5LXRydW5rCis3MDE2OCBlYjJjMzVkZDIyNWFiMzQ0Mzk4MmQ5MjY3ZWM4MDZiOTQ4NTdlYmEwIHJlbGVhc2UyNi1tYWludAorNzAxNjkgZmE5Y2M0ZDQxODVmN2ZkMmM5ZDEyNDlkZjA3ZjNkZWJhYTM1YzFiZCBsZWdhY3ktdHJ1bmsKKzcwMTcwIGNlMmI3NTlkYzdmMzVmMTZmYjZkMjRlODM0N2ExYTlhZmJiYzI3NmEgcmVsZWFzZTI2LW1haW50Cis3MDE3MSA0ZDBkNjE1ZDM3ODRjMmQxODQ3YzQzNWQ0MjIxNzhjNzNhMDRjOTZhIGxlZ2FjeS10cnVuaworNzAxNzIgMjYyOWM0N2ZhNmJjZTRmNDg3Y2MzODc4MDdhZmFhYTEyOGIwYjFkOSBsZWdhY3ktdHJ1bmsKKzcwMTczIGM4YThlYzg3ZmYxZjJmM2UzMjcyMmMxMDBlNDM1NzNkYTQzYmE3MzEgcmVsZWFzZTI2LW1haW50Cis3MDE3NCA0MWU0MDcyODY2MTA1ZDc5NDk5MGZiODUzOTYzZTQ0NTExOTE4YzI3IHB5M2sKKzcwMTc1IDMwZWVhZGM0NjUyMGZiZTQ2NmFmNjRmZjM3YzE1NjIzYjNiZjVjYjEgcmVsZWFzZTMwLW1haW50Cis3MDE3NiAzOWU5YTIwYjdkN2Y1MDU0ZWJlZDljYjI0NDlhNjFmNWFiZjZkZWVlIGxlZ2FjeS10cnVuaworNzAxNzcgZGMzZDI0ODI0YjYwMjdhN2NmMzc1N2EyZjZiODk5ZjJlNGI0YmYzMyByZWxlYXNlMjYtbWFpbnQKKzcwMTc4IDI3NjI0NGZmY2FlZWUxY2ZhNDYyYWE1MGZlZmRkZmY1ZjY2YmU4OGYgbGVnYWN5LXRydW5rCis3MDE3OSA1ZjI0NWM3MDBiYmIxNTBhNWFhYjUyY2E0YmZkYmUxNmI1Y2Q2YWNlIHB5M2sKKzcwMTgwIDRiNTQzMWZiMmU5MjAyMWRiOGQ0Mjg2NGUyMTA5YjA2MjlhMzE3OTQgcmVsZWFzZTMwLW1haW50Cis3MDE4MSBmYmM3NzU5NzYzYjJjOGMwYmQ2NzM3YTFkMzRjYTFiMTA5NzBlYzFlIHB5M2sKKzcwMTgyIGVlYWE4N2ZjM2JmZDBjYjc1Yzc3ZTlmZTMyNjE1MDRmYjEyNmY5MDAgcmVsZWFzZTMwLW1haW50Cis3MDE4MyA3NTc5MjkyOGZjZTg5YmNhMWU4YzUwMWRjYTc3MzcwYTRlZjlhMWYxIGxlZ2FjeS10cnVuaworNzAxODQgMzNlOWExNDVmZDM4MzU3ZWQ0MmE1MmViZjUwY2IyZTk5YTYzZDg2MCBweTNrCis3MDE4NSA5OWI2OGQ3ZDdhODkyZjI5OWEyMDY0MWJkYzczNDdiMDI4NzM4NDk4IHB5M2sKKzcwMTg2IGZkZGVlNTQ1NjAxM2FjMDFlNWZmNTlmYjZlZjVlZjkwOTFlYWU5OTggcHkzaworNzAxODcgMWZjMWM0MWQxMzZmNGJjZDg5NmZhMGNhYzViMjMzNzc1ZWVjNmQ1ZCBweTNrCis3MDE4OCBmNDhhZjc3ZWU4NGUyMDgyOGJkNTNiNjZhMmFiMGY1N2NmNGQxZmYzIGxlZ2FjeS10cnVuaworNzAxODkgNzllYTA2Njc2MDRiMzcyMmYyZDJjZDE2YTBmMDk5NjFmZjc4MDJkOCBsZWdhY3ktdHJ1bmsKKzcwMTkwIGNkZDNmNjBkOTk3NGY0NDc2OWNmNzlkYzU5NzRhOThiYWQzMTZkYWMgcmVsZWFzZTI2LW1haW50Cis3MDE5MSAyNzViYmVlMTQ2YWIwNWJmNDg3ZjA5YjRhY2IzNDE5YzZhZjMzNzkxIHB5M2sKKzcwMTkyIGE4YjlhYTAyODg5OWJlOTU5MGJhMGIwZjgzN2UyMTRmYmM0YTkwNjEgcmVsZWFzZTMwLW1haW50Cis3MDE5MyA5Y2QzNTVhNzk4NDU2ZjgwODM3YmQ4NGI0MzMyODg0ZmUzZmQ1ZjgyIGxlZ2FjeS10cnVuaworNzAxOTQgZDAxZGM4NDdiNTg2MjFjMmU1NDVkOWNjNzQ0MzIxOWY5OGQxNjg2MyByZWxlYXNlMjYtbWFpbnQKKzcwMTk1IDdiMjc5Njc4YTZhMWRiNDRhMDc4YTgzYjQ0NWY5ZGYzMTcyMDQ3NTQgcHkzaworNzAxOTYgMjY5ODQ0NTBjN2U5YTgxODlhOGJlZjA3MTBlOTc5NTRkMDBjMDljNCByZWxlYXNlMzAtbWFpbnQKKzcwMTk3IGFmZWZiNzcxNjRhZDNiZjJkYzE3NGUwN2Y2ZDBhOWUxOTRiNzA3ODIgbGVnYWN5LXRydW5rCis3MDE5OCA3NzU4MjljZjAwZDJhYmVjNGI0Y2RiNTYxOTUyMzE0NzIwZGM0Y2E4IHB5M2sKKzcwMTk5IDhkYmQxYjk2ZmE2YjY5MGZkN2RjMzkxNWQxMGJlMmI1Zjc5MTc1ZDkgcmVsZWFzZTI1LW1haW50Cis3MDIwMCBjNzcyMzYyNmU0ZTEwNjgwODM3YTYzY2UyNGMwODBkZjJlM2Y0NGM1IHJlbGVhc2UyNS1tYWludAorNzAyMDEgMWY5ZGU1Mzk4M2MxNTUxMzE4MGUxMzQ2NzU3MmU0NjVhMWUzYmQ2OCBweTNrCis3MDIwMiBiZWJjNGVlZjllODkzYzQwMTkyYzhhZWEyZWRjODk2NmExNzlkMWQ1IHB5M2sKKzcwMjAzIDlmYTc5NDk2NDFkMzAwOWJiNjE5ODVhYmVjZmU5MmIzYWI0N2YwNjcgcHkzaworNzAyMDQgNGEzYjQ0YzIxYjRmM2RhN2M4MmQ1YjUzMjFmYTU2YTMxODZmYThkZiByZWxlYXNlMzAtbWFpbnQKKzcwMjA1IDNiOWY1ZmE4YmNjZDkxZDJkM2QyMWE0YzdlMTYzYmMwM2NhNTgwNDkgcHkzaworNzAyMDcgY2FiYjBkZGNiODhlNGE3ZTMxMGVmYTQ2ZTQ3ZGQxMjIzNTMyYWQ2NyByZWxlYXNlMzAtbWFpbnQKKzcwMjA4IDBmNmY3ODdmMTAzYjI4YjQzMjM1ODZkMTczNDQ2MTQzNjI4MzExMzYgcHkzaworNzAyMDkgYWVmNWNmZTczMzU4ZDQ4ZmZkYWQ5MjJiMzFiMDBjMGFmODcyODZlNyBweTNrCis3MDIxMCBmNWI4MWJlNTkxNTk0NmUzZjkyMjRkNmQ5YmI2YWJhYzk1ZWRmN2FlIHB5M2sKKzcwMjExIDkwYTY2OTE1Y2E5MTk3MDBhMjQ5OTVhNjYwYzY2MDllZjc2ZjJmZWMgcHkzaworNzAyMTIgNDY1MGVjZGZjZmI2NDIzN2QyOWMyMjkyNDM4MzJkNGJlODEyOWRkMyBsZWdhY3ktdHJ1bmsKKzcwMjEzIDJiMmI1MWYzMDQwNzk5NzdmYTE4OTVlNzIzMGM4YjdkYzBiMDIxMzYgcmVsZWFzZTI2LW1haW50Cis3MDIxNCBmY2M2MjExZTBkNzEwNWUzZjdiYjkzY2E3YTE2ZjE5NzdhYjQxNWE4IHB5M2sKKzcwMjE1IDZmMGQyMTEzZGQyMjI2MDBlZjkwZmU0NDU4ZWRjMmZkZjhjMDFmOTUgcmVsZWFzZTMwLW1haW50Cis3MDIxNiBhOTlmYTc2NzEzZmM2Njg5Y2VjMDY1NDU2OTIzMmNkNWMyOTlkYjNmIHB5M2sKKzcwMjE3IGJiYmM5NzQ2YzcwZGM0MDZiOWUwOGVlM2E3MDU1MmY4Y2NkMWQ4YzIgcmVsZWFzZTMwLW1haW50Cis3MDIxOCA0MzNlMTE2YzMzNWRiYjJlY2M4NjMwNTA1OWE5NjhjODkyNjIwNGQxIGxlZ2FjeS10cnVuaworNzAyMTkgMTE0ODUwZjczZTNhNWViZTcxNWUyNWZmMmUxYTE1N2E5NTY1ZGI1ZiBsZWdhY3ktdHJ1bmsKKzcwMjIwIDRlNzQ0OTM0OGMxYTRkNWRlMTEzNmQ4NGJkMThiNWM1MjdlZTkyOWQgcmVsZWFzZTI2LW1haW50Cis3MDIyMSAwM2M4MGUwNzQyYzM0NDA4YjAxZjUxOTVjMzRlOTI2Nzk3OGI0YmUzIHB5M2sKKzcwMjIyIDEwNjY3NzZlMjgyMDM2MjRjYzE5MmQxMzcyOTk3OWI4YmUyNjVjYTQgcmVsZWFzZTMwLW1haW50Cis3MDIyMyBjNzllYzYzZTZjMDhlZDNlOTQ2YTM0MmRiZTEyNjk0OGQ1MDMwMzY0IGxlZ2FjeS10cnVuaworNzAyMjQgYjljZDY5MzkyNjY2N2QxODY0ZDllMmU3N2JjYmQxMDM5N2VkNmMyYSByZWxlYXNlMjYtbWFpbnQKKzcwMjI1IDZkYmIyYzFjMDkwMDlkNjYyMjBlZTZkMjAzOTIwYWM2MzBkN2RiMGUgcHkzaworNzAyMjYgZjUxNDVhYmQ0YmEyNmIxMGE5OGNkNjIxMzg2OGY0ZDNlZTNmYTUyNiByZWxlYXNlMzAtbWFpbnQKKzcwMjI3IGU5ZTQ2YWRlNjFjNzg2ODQ5N2QzZmYyODdmNTA0Y2FlMzc2ZjAxZDIgcHkzaworNzAyMjggYTVlMzJjMDZlMTRiMTI4N2M4ZWM2OTI0NmE1OTdkNWE2ZmFhZmFjZiByZWxlYXNlMzAtbWFpbnQKKzcwMjI5IGE4OWZkYmIyM2E0YTc4NTZjN2M2ZDIyM2Y4OGJmZjBhZjlhMWEzZDAgcHkzaworNzAyMzAgYmMxY2UzNjg5ODZlNDViMWZhZjk2ZjkzOTk1ZGY0NmJjZDc1ZTdiOCBweTNrCis3MDIzMSAzNmQ3ZmFhNWZmOTYxNGU2MjdkZjBiZGQ1YzY3YzhkYmYxNzU4MDQ1IHB5M2sKKzcwMjMyIGFiYTQ0MDRmNWQ5ZmY1MTllZWQ5YmYzMGEwZTcxNmYxNjEwOTUyYjUgcHkzaworNzAyMzMgYmZjMmZhNGM4NDQ0OWI2MWQ5ZGIxYTM3ZmI2Yjc3NDNiYTU4NzMwNCBweTNrCis3MDIzNCBmN2IwNmE5NjU5Yjg1MzA1YTgxYWIzMDU4YmRkZmJlZGQ1NGQ4ZmM5IHB5M2sKKzcwMjM1IDQzNzA0NGU2MmQzZDNiZDQ5NDY1MjQzMGE1MGY2OTk3YWMwODlhMWMgbGVnYWN5LXRydW5rCis3MDI0NCA5ZjJmODZkZjViMjY0OGNhNjlhMWI3NTlhZmQ3OGY5YzlkNjI4ODYyIGxlZ2FjeS10cnVuaworNzAyNDUgNTY5ODNjZmRmNWQ0ZTJlOGQ5OGRhZTJhMDhjYTE1ZGMzNjg3M2RkNiBweTNrCis3MDI0NiBkY2UyOGM2YjllODVhMjhkOGRhMmM5ZTBhOGQ2YTk3MDBiMDkxMDM5IHB5M2sKKzcwMjQ3IDIwMzNkNDVhNWI5OTY4MWUxNDBkZmEzYzQxNGE0OTQxMDQyYWNhOGUgcHkzaworNzAyNDggODk1ZjY4ZWNiMDU1YzNmMTU2NjU2MDBhNTMxOTQ1YzA3YzU0Y2VmZCBweTNrCis3MDI0OSA4MzZlNGRhZGY2ZDJjYzY1YjhkMGY0NTZlOTQyYjExNTEzNDkyZmIxIHB5M2sKKzcwMjUxIDEwNDVmZDYzZmE3MzM1ZmY5MTVjNTZkYjg1NDVhNmM4ZTQzZWIyMWQgcHkzaworNzAyNTIgY2YwOTNhNzYzMDUzM2NmYmRhNDc4Y2ZlZTc1MmIxZWU1MzYxZTI2YiBweTNrCis3MDI1MyA2NTM3MWRmNDFhY2E2MjQxZWU4ODEzMDU0YjBiN2U2YzQ1OTg3MWZjIHB5M2sKKzcwMjU0IDU1NDA3NDlhMjliYjg3MzA2YWM1ZjkzZjg4Yzk2NGFhZTMyMTUwMmUgcHkzaworNzAyNTUgNzBkZWNiNTgwZGQ5MWYwY2E3M2RmMTJhNmUwNDY5NmVjNGE0MjY1ZiBweTNrCis3MDI1NiBjMDZmMDJhNWU5NjI3YjE5MDg1ZjY2M2U1MTg5ODg0ZjUwNTc1MjQ2IHB5M2sKKzcwMjU5IGJjMDJkZTI3ODc0OTAzYWJkOTMwYTQ0MTZjZWYwMDZlMmMzOWIxMWEgcHkzaworNzAyNjAgYjliZDJlM2Y3OWJhOGE2NTg1Mjk5NjYyYTU0N2QwNTZmZWVhNmIwZiBweTNrCis3MDI2MSA1OTgyNTNkYjFmNWQxMTJjMzgyM2U4NGUwYmRkMzI1YmFhNWFiZDYyIGxlZ2FjeS10cnVuaworNzAyNjIgNGQ3ZjYzYWM5ZDI0NjU4ODhhZWRlYzQ2MDllNjY5MDdmYTVlMjFiMiBweTNrCis3MDI2MyBiMWVjZmY1ZTI3MDQwNDIyYzM2YTY5OTgyMjU3MDQ2OTJlOTFiYWRmIHJlbGVhc2UyNi1tYWludAorNzAyNjQgNTAzOTc2Y2UzMzczZTU4OWJjMTBiY2EwMzgyNjBlN2M0OTFkMTQyMSByZWxlYXNlMzAtbWFpbnQKKzcwMjY1IGY0NjdkNDdmNmRlNTJhZGY2M2ZkNGQxZDIxNWFiMmFhYmY2ZWM2NGYgcHkzaworNzAyNjYgN2ZjYjc4NWVjMGY1MjdkNDhiMjBkY2IxOGRhNWVhOTFkMmNlZjUwZiByZWxlYXNlMzAtbWFpbnQKKzcwMjY3IDk3YWM4M2U0NTI3MDYxYjkxY2EwYzdkZmRhNzY1NjA0OGQzNzJhMzAgbGVnYWN5LXRydW5rCis3MDI2OCA1NDU3ZTQ2ZDlkZmQ0NjI5YTY4MTU1N2QwNjljM2FhYTM2NzFkMTg1IHJlbGVhc2UyNi1tYWludAorNzAyNjkgYzE1NDIzZjlmYWMzNTBmMzkyOGExNjliOGYwMDVlNzM1MGM0MTkyMCBweTNrCis3MDI3MCAzZTY3NmJmMjgzMTAzZWUwMTZmN2M5ODE4MzdlNjliNmRhZTQyMzU3IHJlbGVhc2UzMC1tYWludAorNzAyNzEgNjM0NTZkMmJmNWEwODkxN2M5MTFjMzk2MWE0NjE1NmU3MjliNjEwZCBsZWdhY3ktdHJ1bmsKKzcwMjcyIDVjOTFhNmUxODU2NGYwNGYzMzRkNmIxNmU3MGRhZjdmMzk2MjYzMjggcmVsZWFzZTI2LW1haW50Cis3MDI3MyBiY2ZiN2Q2NzkxNjE1OWJjZmE0NTc1MmE0NGY2ZWJjYTNjMTA3ZjE1IGxlZ2FjeS10cnVuaworNzAyNzQgN2Y3MDc0OTI4YzY4MTQyZDgwNTI2NzQ1YjlhNTVmN2I1NzkwZWQ4MyBweTNrCis3MDI3NSAxYTgzOTFjYzRiNDRjZDY2ZWE5ODQyNTVhMWIwYmExYTUzMWQ5M2E4IGxlZ2FjeS10cnVuaworNzAyODAgNzlmZTA3ZTEzMzg4ZWM3YTg0OGNhMjJlNDNmNTVlNTI3OWU2YjNhZCBweTNrCis3MDI4MSA0MjU1M2UzNWY4ZTRiNDk2NjViOWIwNGUxZWU4Njg0ZWU5MDczZTBlIGxlZ2FjeS10cnVuaworNzAyODIgM2I0MzU3N2UxOTcxYzhjMTM4MGFmMGNiMmExN2IzOWFkZjljN2E0MiBweTNrCis3MDI4MyA3Y2JkNDRjMjAzY2Y5NWNhYTc2MDRiZmZjNTQ1YzJlZWI5YjcxMDdhIHB5M2sKKzcwMjg0IDhlZDNjYmFjMTZiZjU2NTNmYTQyYzMyMjhiNzlhYTljNGQ3ZGE5ZmMgcmVsZWFzZTMwLW1haW50Cis3MDI4NSBkYWI0NTk3MWM1Njg4NDFkMjM4NTA4NzZhZjQxZjQxMGU4ODIwYzBlIHJlbGVhc2UzMC1tYWludAorNzAyODYgZjgwNGI4YTI1MTE1ZTdiMjFlYTMxNDAzZjNmYTAzNjkwYWY3YTQzYiBsZWdhY3ktdHJ1bmsKKzcwMjg3IGFlMzAwNmM3ZDViMDE5OWM1NmY4MGU2NGU0NmU3MWFiN2Q1ZGNiZmQgcHkzaworNzAyODggODlkOGFmMjU5MzUzMjc0ZTc3MDEwMTliZGE5NTEwNmNmMTk2MTAzOCByZWxlYXNlMzAtbWFpbnQKKzcwMjg5IDU2M2I0Zjg4M2VkODhiMTY2Mjc4N2NiOTEwNWQwYzQyMzdhZWRjOWQgcmVsZWFzZTI2LW1haW50Cis3MDI5MCA1NGNmYWNhYzZkMGExNTVkMThlZDhmYzYzYWU4NDdjNDNkNzc0MTNmIGxlZ2FjeS10cnVuaworNzAyOTEgMDMwODBmYTA4ZGZlN2NjZGYxNWJjZTE1YjRjNzBiZGMxNDZkZmMzMCBweTNrCis3MDI5MiA1YmM5ZjZjYzU2MWUwNDE3YTQzMzg0OWY0NTBhZWEzZDg3ODU3OWMzIGxlZ2FjeS10cnVuaworNzAyOTMgNGZkZGNkNGU4ZWI1MTk4NjNjYTBhNjRhMzM0ZDM1MTEyYjJlYjU2NyBsZWdhY3ktdHJ1bmsKKzcwMjk0IGFmZDcxMThjOGNjZmI0MGNhNTZlN2QzZjExNWIwYjRjYWRiYzQ2MWUgcHkzaworNzAyOTUgZGNiZmZlOTE4YTZmOGVjNmVkN2ZhMTU4YWQ5Y2JjMjRhYjVhZTBmMiBsZWdhY3ktdHJ1bmsKKzcwMjk2IGFiN2E3MjE1ZTQ2MzY5NTBmMGFjZDg5OTlhM2M3NTk1M2ZiMTgxZmUgbGVnYWN5LXRydW5rCis3MDI5NyBjNWUyM2I5Y2VkY2M5OTc0MDM3NjgwNDNmNGRiNmY1NDkwYTQxNzU2IHB5M2sKKzcwMjk4IGIwOTExYjVhMDAyZWQ4NDFiNmNmMjVjZDgwNGU5ZTg0MmEwNThjMGUgbGVnYWN5LXRydW5rCis3MDI5OSAyMTg1MGQ2ZDViNGQ0MGE5NmVjMjg4ODYwNGFjZDM5OTgxYjhmZWU4IHB5M2sKKzcwMzAwIDAzODI5MDFjNmViZDI3OTQ2MTE3MzZhZmVjZjhhN2ExMzhjZjU5MWQgbGVnYWN5LXRydW5rCis3MDMwMSAzYzA0ZDM0YzA0OTcxN2NlOGJjZGU5YzNiNjdkOTM1NTVkYzQzNDM5IHJlbGVhc2UyNi1tYWludAorNzAzMDIgNDMyMmU2ZGQyYTZjOWVkNjQ4MmUxOTljNGFjMzM2ODBlM2Q4MzcwNiByZWxlYXNlMjYtbWFpbnQKKzcwMzAzIDBjN2RhYzdlMmZiMDgxMTJjMzcwMTc1ZDFmNzkzMGE1ZTI4MmRkNjIgcHkzaworNzAzMDUgYTYwZmFjYzlmN2NmNTU1YjI1NGMwY2Y3NTgyZmM1MDg5ZDMwNTczZiBsZWdhY3ktdHJ1bmsKKzcwMzA2IGY1MWEyOGIxMDQyNjUxNDUxMGUzM2U1YmRmYzUwMmFiMGJlZjM2OWQgcHkzaworNzAzMDcgY2JjYjIxNDFhZWU1OWU4NGI5N2RmOWZhOGVkYWY5ODM1MWM3MDNkMSBweTNrCis3MDMwOCAzZWNmNmMzY2M4MWUwZWI3ZmRmNDVmNDU2NTk3YTNkZmMzZDNiMzdlIGxlZ2FjeS10cnVuaworNzAzMDkgOGIwYjllZTU4ZjY3YjgxYWFiZWRjYWUzMTJkZjY1ODkxNjk4ODVhMiByZWxlYXNlMjYtbWFpbnQKKzcwMzEwIDQ4ZmU2MjMxNzFhNDBkNTNjNmYyNjE2NDVkMTUxZjdmNTQ3OTM1ZTIgcHkzaworNzAzMTEgODc1ODgxZmY2OWE0ZDU0OGFjYzk2Y2NlNzFkZGFiM2M4NTBmMmZlOCByZWxlYXNlMzAtbWFpbnQKKzcwMzE1IGJlYjc4ODI5MWM3YTE2YTZmMzc5ZWQ4ZWEyMDAwYzA4ZWU4NjJlYjUgbGVnYWN5LXRydW5rCis3MDMxNiA1ZGZjNDViZGE5NmQwOTUwY2UyNGQ5ZTZjYTk4NjIxNTUxMTJhZWRkIHB5M2sKKzcwMzE3IDM0MDBjYjEwZDljZjdkNDYxZWVmM2QxYThhZjA4ZmFiZjY3ZTdkZTMgcHkzaworNzAzMTggMWViNTdiZGRmYjM4YmU5ZDY5OThmZWUwYzk5NWU0NzIwZGJmOTgzYyByZWxlYXNlMzAtbWFpbnQKKzcwMzE5IDFkOGU0YmNlY2YyYWFhOTQxM2E2MzBhZDU3MTA5M2EwYmIzODRlYjQgbGVnYWN5LXRydW5rCis3MDMyMCBiZjY3ZTVhODkzZjhlYzBiNTQ2ZGEyNzExNTEwYTg2MDMyNTVmYTZjIHJlbGVhc2UyNi1tYWludAorNzAzMzEgNmIwMjRmZjViNThmNmIyZDJmNDcwZTFiZGIyZjc1NWJhMGE0Y2ZkNyBweTNrCis3MDMzMiAyZThlODk3YTEyNDQ3ZjFjMmFmNDNiZmU0NmE5MmMwMDdlMThlNmE5IHB5M2sKKzcwMzMzIDFhOGJiYzVmYjNlZmMyNWNjYmVhNzg0MDcyOTE0ZmEzNmFlYThkMmMgcHkzaworNzAzMzUgZjE4OGRkNjg2MjBlNmE0YWRiMTg1YWQ3MWFlMWEwMzJhNjhjZTI5OCBweTNrCis3MDMzNiAwNGE1YjY0Mzg1MjY0ZTk2MzhjM2UzYjQ0M2U5YzBjOGZiNzBhOTQ1IHB5M2sKKzcwMzQyIDBlODg1ODJhYTNjZTcwNGEyMDdkMjYzMjM4YTdlZTY3YzY3OWY5MzggbGVnYWN5LXRydW5rCis3MDM0MyBlNWU2NGEwYzRhYTJjMzFlNTM3ZmQxMzlmOWVmZGFmYmFlYWFlOGM4IHB5M2sKKzcwMzQ0IGIzNjNlMjk3NTZmZjI1ODYzYzk4OTcxZDliYmY1YTBiZTk2Mjg5OWUgcHkzaworNzAzNDYgNDgwNDgzYzNkOTNlMzEzOGY3MWUwN2E1YWNlYTc4YjlkZjg0NGUyMyByZWxlYXNlMjYtbWFpbnQKKzcwMzQ3IDIyNzQ3ZTg3NGY0NmI5MDUwNmM2ZGJkNjNmN2RjNTZkZWY2MzEzMWYgcmVsZWFzZTMwLW1haW50Cis3MDM0OCA2MzJhYTU2ODQ3NGM5ODRmMTI2ZjkwYzkzZGUwMzlhY2U0ZGQ4OGE5IHJlbGVhc2UyNi1tYWludAorNzAzNDkgOGIxMjhlMDVlYzc0NTU5ZDgyMTUwYTY4NWRhZTdhNThiMTQ4MDg1MSBweTNrCis3MDM1MCA3OTBjYjk4ZjhiNGZiZjA1ZDg4MmY1MzRkZjIwMDJjNDllZDZlNjI5IHJlbGVhc2UzMC1tYWludAorNzAzNTIgYTU5OTQ3NWI2OWMzMDA4MDFiYjlhMTgyZTFmNGNlYmRiZGM4YzgxNyBweTNrCis3MDM1MyAxZjhkMTFjZDQ2ODQyMDE5YTkyYjRlZTE5NDI5ZmE4MmNhNjhiMWM4IHJlbGVhc2UzMC1tYWludAorNzAzNTYgODYxY2Q0NmVlYWVlN2Y1MzZhNDI3NjM5YmRhZDIwN2RmZDg1MmFmYyBsZWdhY3ktdHJ1bmsKKzcwMzU3IGE0YzliMGIwYThlNGJkNzQ3Mjg4ZmZhMTY2NmM4YTdlY2E2MmFmYTYgcHkzaworNzAzNTggMzE2NTlmOTM3NjEzY2Y2NjNlYWZjMDcyMTBhMjY4YjA0NjVkODNjMyByZWxlYXNlMjYtbWFpbnQKKzcwMzU5IGYyN2NhYWNiNzQyNjc5ZTUwZGQ5MDY3OWJhN2Y3N2Y2OWRjMWYwNjAgcmVsZWFzZTMwLW1haW50Cis3MDM2NCAzZjE4ZDYwOWFjMWJkODcyMTlkZWZhNDhmZWJiZjhhZjE1ODVkNzI2IGxlZ2FjeS10cnVuaworNzAzNjUgYzVmZWIwNThmZmM0YTYxZDU5N2I4ZWUwOGYzNTk5YmEyMjQxMTRkNyByZWxlYXNlMjYtbWFpbnQKKzcwMzY2IDFjMGEwZjdiNGY3NmY5ZDU4ZDE2NzQ1ZjI0YWVmZjZiMDkyZDNiNTQgcHkzaworNzAzNjcgNzM3N2E0ZDk1YTQ0Y2ExMzgwYzM3NWU0YjljZmQ0NzUxNmNmNTFjNSByZWxlYXNlMzAtbWFpbnQKKzcwMzY4IDFmOTZkNzMzYTc0MzkwZTYxNjJjM2QzZGJjYWEwYmJmMTk3MzIwYjUgbGVnYWN5LXRydW5rCis3MDM2OSA0ZTFhMTU3NmYxZTVjZjU2OGMwYTMwNjJhOTQ4MjI5ZDRlOWE0MWM1IHJlbGVhc2UyNi1tYWludAorNzAzNzAgYzFkYzg3YmQ4ODNjOWU3ZWI5NzZlMDJhNmY4Mjc0MWYxOTUxZTdlOSBweTNrCis3MDM3MiAwYjE5YmEzMTgwNzFiMWRlMWQ1YTJhYWZiZTc0ZjY4NjcyNjNmMjIyIHB5M2sKKzcwMzczIDYyZjlkYWQ2MjhkZWZjMTkzMjRiMjA3MGIzNmQ1MzJkY2Q4M2YzOGUgcHkzaworNzAzNzUgNjljZDYxNWI3NmZiZDQ2NmQ2Nzc0ZmRmNjYwN2Y0YThjZWEzZWM4MCBweTNrCis3MDM3NiBlOGZkNzk3NjNiY2NjZWI4YzJmNjdkNjdjMTdkZmM1ZjIwNzcxZjc2IHB5M2sKKzcwMzc3IDcwZjVmOTExM2FlMTFlYzgwZGMzM2Q4ODkzNDdjYzk3NzBhMDYzYzggcHkzaworNzAzNzggYmVhZjAwYzk4YjcxZTYzMTNjNmM1Y2QwMzExZjRiZGU1OGUwNDYzOCBsZWdhY3ktdHJ1bmsKKzcwMzc5IDM3ZDc2YjVhODI3YmEzYTI1Y2I2MjczNTQxNjQzNWU2MzRlYTQzNTEgcmVsZWFzZTI2LW1haW50Cis3MDM4MCA0ZTkyN2ZhZjMwZWFlZWMxYTRiYzJhYWIwZDA2NDhkM2Q1NDIwZjNmIHB5M2sKKzcwMzgxIGVmN2U0N2ViMmI2OTc1ZDViNWMyZmFiN2M3YzAyMzY5NWZjNzNiMzggcmVsZWFzZTMwLW1haW50Cis3MDM4NSA0NDJiZGZlOTNiMjkyMWE5Y2E5YmE1MWNiNDliZTk2NWMyYzBhN2FhIGxlZ2FjeS10cnVuaworNzAzODYgMjNhMzk2OTdmZDY3ZTg1ODQxNzcyZGFkYjE2YzJlYjIyMjJmMzg3ZiBsZWdhY3ktdHJ1bmsKKzcwMzg3IDFiZTA5YzVjNjhlOThiNGY3YzhmODljODk5MmU5ZTRhMDA1NDBiNjQgbGVnYWN5LXRydW5rCis3MDM4OSBkZTdlNDcxNmQ5Y2JhOTdlYmFhNTYyN2VlN2NjNGFhMzM2Yjc2ODI3IGxlZ2FjeS10cnVuaworNzAzOTAgNjg1NTFiMmE1ZmFhMjgwM2U0M2ZjM2NkY2IxOWQ2ZDI2ZmQ0ZWRjYiBsZWdhY3ktdHJ1bmsKKzcwMzkyIDJmZTViYWY4OTU2OTU4MWQ4NWQyM2EwNTY4YmJiNGVhNmE1NmUxNGMgbGVnYWN5LXRydW5rCis3MDM5MyAwZDE5ZTExNjgzZmZlYjc1ZTRlZDk1YTM5NGQwODM4OGNkMjljZjkxIGxlZ2FjeS10cnVuaworNzAzOTUgNGU5NGVhYjZjN2EyZDBkZWQxMDYwMWZjYTY2NjUzMzg4YWJhMmM0MSBsZWdhY3ktdHJ1bmsKKzcwMzk3IDEyZWJkYThmYjZiMzAwYWYyN2E2YjRlOGU3MTJjZDczYzhkMjgxOWUgbGVnYWN5LXRydW5rCis3MDM5OCAwYmUxYzFmMTI3ZTA0MDc3OWNmM2JlNDhhZTlkNzc2Y2VhN2JkZTQ3IHB5M2sKKzcwNDAwIDZiZjBmM2FiMDI3OWFjMTM3MWUwMGQ2NzBkOTkwZmY3MTU3YmQwOGEgbGVnYWN5LXRydW5rCis3MDQwNSBlNGQ5ODQ0YWJhMjUwMWE5Yjc4ZWU0NDRjMTRmMDBjNjAwNDgyOWE4IGxlZ2FjeS10cnVuaworNzA0MDYgY2JhNjA5MzgzMDc4MWNiOWFiZDFlYzYwYWUyZDM4M2JmZDNkNGVmYSBsZWdhY3ktdHJ1bmsKKzcwNDE4IGNjZWRlZjI4ZmUwNDIwMjM3MmU5NDY1NjlkYmIxYWI0NmM4OGJhZmEgbGVnYWN5LXRydW5rCis3MDQyNCBhMzE5M2MwNDE0OTZkZWNkZmI2ZDkyMjk3YjMyNzUwZjg4NGQwODY3IHB5M2sKKzcwNDMwIDZiNzM4YjZmN2ZjNjc4YjU0MTI3YzhjMGIyYWVlZGFjZGQ1YjU0YmYgbGVnYWN5LXRydW5rCis3MDQzMSBmZDRjODM5MjgwODA5YWNhYTVkOWI5ZjljZTQyODEwZTI1NmJlOWE0IHJlbGVhc2UyNi1tYWludAorNzA0MzIgMzlmNGZhNTFhY2ZiODA3Yjg5ZTM0NDJlYzFiYTk4OGRiMzI3Njc4NyBweTNrCis3MDQzMyBjMzU3ZDc5MjY0ZjhjYmY0ZjVkNzAyYjA5ZWQ5M2I0NDgzYWFjOTk3IHJlbGVhc2UzMC1tYWludAorNzA0MzQgN2MzZmUxYTRhMmNlMzQ4OGJlZGFmNTBhMDBlMjU2Mzg0MmI1N2Q5ZiBweTNrCis3MDQzNSAxNTcyNDdlYjc5M2RiYmU2NzU2YWYwM2FiM2I5MDc1NjE3OWZlMmZhIHJlbGVhc2UzMC1tYWludAorNzA0MzggMTcxZWQ2ZmZjODZjNjRjOTY5NmU3YWNmODA5MWU5MzY2NzkwMDExNiBsZWdhY3ktdHJ1bmsKKzcwNDM5IDVkZWU5M2E5NzU1OGUxODFlN2UyOGE2ZmJhOWNmYWVmMjgyNzdmZDAgbGVnYWN5LXRydW5rCis3MDQ0MCAxMmUxNGU2ZjFmMmRiMWVkNzVjNWUzNDg0ZmIxZjYyYzk4MGIyZDMyIHB5M2sKKzcwNDQxIGFkNGE3MmIwOGQzZTQxMGU3ZTUzYmJkNWVhYmZmYjE1MzQ3Y2I5MTggcmVsZWFzZTMwLW1haW50Cis3MDQ0MiBjYWMyMDczNzNhMzRmNzRjNmRkMTZlODA4ZTFmYjAyNTY1NjI4MzAyIHJlbGVhc2UyNi1tYWludAorNzA0NDMgZDk1ZTVhZGQzY2E0Y2NlMzI5MDhmYjcwMWZkOGRkYzBjYTNjODdjNiBsZWdhY3ktdHJ1bmsKKzcwNDQ0IDJkOTRjOGZlZDM3NmY3NmI4ZmU5NmUyODc0ODZmMDExMDg4MzgwYmIgbGVnYWN5LXRydW5rCis3MDQ0NSBmY2RmZmQ4NWE4YmQzZWJlMGVhOGI5YmMwODE0MGQ1MzM0ZGUzNGU4IHB5M2sKKzcwNDQ2IDIwN2E0YzI3YTkxNmFkOWQwYTJiNGEyNDI4ZGVmYWY2Y2JlZDhkOWQgcmVsZWFzZTI2LW1haW50Cis3MDQ0NyBhNTI3NDA1YTljMTA2MTA4MzI0OTJmNmE5ZWI4OWM3MzgyMDM2MDEyIHJlbGVhc2UzMC1tYWludAorNzA0NDggYzM0MGUzZjQ5YmYzNjQ5ZTc3YWNhNjJiZjZiZmVhMDIxZjIwMWQxMCBsZWdhY3ktdHJ1bmsKKzcwNDQ5IDU4YjI4NmUxNWViY2U0Y2RmOTljZDQwMmRjNTcxMDg4YmM3OTg1MjcgcmVsZWFzZTI2LW1haW50Cis3MDQ1MCA1OTM4MGIzOTBjNDA2MjQ5YTA0ODY0OWNiMmM2ZjBiNGU0MDFiMTM4IHB5M2sKKzcwNDUxIDZmZTY0MDFkYTUxZjljYWNiYWYwNjZmYjI1OGFmNjZhM2I1NDQ4ZTggcmVsZWFzZTMwLW1haW50Cis3MDQ1MiA3OTY0MmI1ODgxZTBhNmIyMjJkNzk2ZDE2MDQyZWY0YjhkOTQ0OTJkIHB5M2sKKzcwNDUzIGRhNDg0MGIyYmEwNjEyZjc0YzAyZTNkMjUyNmM0YzczNDFhNGMyOWUgcmVsZWFzZTMwLW1haW50Cis3MDQ1NCBjNzNkZDI1YzAxYzEyMDQxMDcwZTExMDJiZDczMGU5NzkwNDFjN2JiIGxlZ2FjeS10cnVuaworNzA0NTUgNmJhNWVlNWEyMjA5NDNhMzA3MjM3NzZiMDYyZTZmN2Q2MmU2OTg2OCByZWxlYXNlMjYtbWFpbnQKKzcwNDU2IDdkOGZkNzk1NWQxNTU3NDA3YjE0ZjQ2ZWYxMjQ1MzMxZjU4MmY3YzQgcHkzaworNzA0NTcgM2VlMjU5NDY5YmE4MjgwNDY4ZDczNjc3OTY2MmE3NDRhZDgwMTZjZSBsZWdhY3ktdHJ1bmsKKzcwNDU4IDdiNTM2MGZhM2UxOWYyOTA2YmY0ZWQwMzVmYzJhOGIzNjBkYmFkMTUgcmVsZWFzZTI2LW1haW50Cis3MDQ1OSBiYjVkZTI0YTM0M2Y2OTcxNWIyNGY5OTQxYTgwZWVkOWU4NDJlODhjIHB5M2sKKzcwNDYwIDlmNDYyOGI0NjU1YjBiZTk4MjAxNWQ2ZmVmZGJjMDdkMDlhNjBiN2IgcmVsZWFzZTMwLW1haW50Cis3MDQ2MSBmZmU0YjlhMTAzNWNkMzY4OTE0NmE0OTEwYzNjMmNhMmMyNWU3NzJmIHB5M2sKKzcwNDYyIDM3MDMxN2ZiOTUxNTU2MTgzOGRlNWQ2NTBkOTQ3Nzc0MzJmNzMzNWYgcmVsZWFzZTMwLW1haW50Cis3MDQ2MyBkMmI3ODg3ZjhjOWFlYzEwMWNiOWZhYzE3NmNiZjZiN2RkNjY0YzY5IGxlZ2FjeS10cnVuaworNzA0NjQgOTJmZWZjZGRiZmU4NDAxNTFhOWRlMWE1MjkyZDgwZjUwNjM4MGE1MSBsZWdhY3ktdHJ1bmsKKzcwNDY1IGZiODBiMjgxZTA1YWEwYWFmZWI0ZjBmODQ0NWFkNzAyM2YxMWRhNjMgcmVsZWFzZTI2LW1haW50Cis3MDQ2NiA3Y2ZiYmYyZDI5NGU1MTJhMzdjYTE3NTE5NDRmOWRlY2EzYWZhNTdmIGxlZ2FjeS10cnVuaworNzA0NjggZTJjMWNiZGEyYTk1NzI1YTExMmNhYTQzOWI0OTY4MGYxYTUzOGI4YyBsZWdhY3ktdHJ1bmsKKzcwNDcwIDFmNzNlMDk4NGQ1NTllN2RhNzI5NWRjMzBjMjc3NjNiZWM4OGMxYzQgbGVnYWN5LXRydW5rCis3MDQ3MSBhMTFhNjc2ZmU2YzA1YWFiZTI5NTQyYzAwMjE5YmJiZWVlYWQ5MGZjIGxlZ2FjeS10cnVuaworNzA0NzIgZWFkM2RlNDhhYWRkNzk2ZmNiNWQzZmY2YjcwMzM5NWQzMDMyYzFlMSBsZWdhY3ktdHJ1bmsKKzcwNDczIDhmZDE3MjFjMzJjNDc1YzM0YjE5NmIyYzAyODE5Y2RjODFkNmQyNTUgbGVnYWN5LXRydW5rCis3MDQ3NCAxMTAwYTUwNmVkY2YwNTEwNjkyNjhmYmE3MzhlMGM2ODJkMmVmZDM1IHB5M2sKKzcwNDc1IDI5MGM3NTEzZTEyNTM3NWFlMzk2OGY4OTQ2ZWFjYmIxZTJmMjViMWQgbGVnYWN5LXRydW5rCis3MDQ3NiA0MjJlMmU2NzYzZTlhMTdlZjZhMGMyMzg2M2Y0OTg4OGY4OGM4NjBjIHB5M2sKKzcwNDc3IDRmZGIxMGRiYzczNjc2YzYwYmI4ZDJhMDIxNDEzMWNmOGFkNTRkNTYgbGVnYWN5LXRydW5rCis3MDQ3OCA2NjQ2OWI2NWQ1NDg0NDRjYmY4YzE5ZTVlNGNkNDI2YTYzNmE0OTViIHB5M2sKKzcwNDc5IDliMzU4ZWFlNTMyYTYyMWY1MjQ1NTY4ZTJiYzljZmJmYTYyMDMxN2UgbGVnYWN5LXRydW5rCis3MDQ4MCBkMWMwZjU1MDQwYmFkNTI0YjE2ZjYxNjgwYTJlMDZhNTc3ZTA2YWEwIHB5M2sKKzcwNDgxIGU3Y2Y0NjlkMGUxMjgzYjcyYmZjM2Y3NjY2ZjdhNTM1MDJjYTU5NDAgcmVsZWFzZTI2LW1haW50Cis3MDQ4MiA1YTAyZjBjZjNjMzgxZWQ1Y2NkMThhOGRkOGNlZDZiOGM4ZjgwYjg4IHB5M2sKKzcwNDgzIDM5NTlkNTA0YjU0YzM1Mzg4ZGU4ZWYyNTJhOTZmOGU1ZDhhYTBjYTggcmVsZWFzZTMwLW1haW50Cis3MDQ4NSA3ODdmMjViMTI3ZWU2MWQwYTdhN2Y1ZGRmYTlmZWU4ZWMxYzBlZWU1IGxlZ2FjeS10cnVuaworNzA0ODYgNzNmZGMwNzY4MWUzN2YwYjk0OThhYTc1MDkzZWJiMmJkMzRiZWNmMyByZWxlYXNlMjYtbWFpbnQKKzcwNDg3IDUwNTc3YWUyYzBjMGM1MzkzMzFjZDU3ZTNkMGExYWNkMjBjNTVhZWIgcmVsZWFzZTMwLW1haW50Cis3MDQ4OCAyMjczN2U5NWY2Zjc1NTQ0MmE1MDE5NjVhMzMyN2E4YzA3MDdmN2FhIHB5M2sKKzcwNDg5IDZjMGMxNWEyZWQyZDNmZTk0OGE0NjZkZjE0MDY4ODA2ODVjOTQzNTcgbGVnYWN5LXRydW5rCis3MDQ5MCBhNDcwZDBhMDI1NmU3NDJmMmM5ZjdhNzUyOTU5MDEyN2RkZWNmZmEwIHJlbGVhc2UyNi1tYWludAorNzA0OTEgZDkyYTZkZWM4YmZlZDc1MjE5ZTY1ZWVlNjNjN2YxOWUzOTgwNGMwZiBweTNrCis3MDQ5MiBiYzY4MWU1M2Y5NGUwNmFkZDAyZGEwZjQyNmEyODYzZTZhOWRhNTRhIHJlbGVhc2UzMC1tYWludAorNzA0OTMgYzViNzk1OGY0MjkyMDZlMDk1ZWU4YzE2MDM4ZGY5Yjc5N2E4YTY4ZSByZWxlYXNlMjYtbWFpbnQKKzcwNDk0IDJhM2FmMjExZjBlMTFmYTc0Mzc1ZjI0OTFkNmQ5YTcwNDM4ZTExNzIgcHkzaworNzA0OTUgYzdiMmNjODM1OGY2NjU2ZTJjN2ViNTAyOGM4NDQ0NWMzYWIzMjkxZiBweTNrCis3MDQ5NyA1Y2FjZTc1YmNiMDU2Y2M2MjcyNmYwMWY0Njc2YmVlNDFkNzUxMDA2IHB5M2sKKzcwNDk4IDVhYTYzZGRkMTUxMzQ1NGE3N2Y0MTQ2MWVlZTAwMTQ4N2QyZjhjZjkgcmVsZWFzZTMwLW1haW50Cis3MDQ5OSBiODQ2ZDcwOWNiNzYzMjcwMWIwMTUyZDU4YzFhNGI4NjhlYTE0NjYzIGxlZ2FjeS10cnVuaworNzA1MDAgMDI5MjgxMjEzMzhkOTMxZTQwMjE1OTczYWRjZDYzNjhiZWJmZTZlNiBweTNrCis3MDUwMSA1YzU4MjM2NjdkZGQ1Y2VlZGU5NDM1ZjIwOTk4MWI5NTE2MjJmMDkyIHJlbGVhc2UzMC1tYWludAorNzA1MDIgYjg5MzRkZDkyNjdkZTAzYmQ3NmY5OTE4NmI4ZDc1YTFkNmY2Mzg5NyByZWxlYXNlMjYtbWFpbnQKKzcwNTAzIDJkNmZmNWNkMjYwMDEyNDZhMThmNTY3NWJlYTYwZmU2ZTdmMmU2YWQgcHkzaworNzA1MDQgZjI3NzdlYTk1NGNhMjViZWYxYzJlOTE0ZjhmYjEzYmI5YWQ0N2M2MSByZWxlYXNlMzAtbWFpbnQKKzcwNTA2IDViMWYwMmRjNjlhMzkxOTA1ZTcwYjAzNzc3Yjg1YjNmODg1ODUyNDIgcHkzaworNzA1MDcgM2FiMmU1MmQ4ZDE5NjljMTQzYWYwMGYxNmIxYzBjMmJjMDRkZDYxNiBweTNrCis3MDUwOCBlNDFmNWE4OWY1YzA2ZTk5YmY2NDZmNjI3NjdiZWEwMDE2ZDQ2Mjc4IHB5M2sKKzcwNTA5IGM2Njg4ZTkxNTZiNTkxN2VlZDg2NTUzMTY3ZmFiZDBkMjAyYmU1NWQgcmVsZWFzZTMwLW1haW50Cis3MDUxMCAxOGQ2NTY1MTIzNWU0ODkxMzJkMWI4NDg2MmU1ZmQxNTE3NWJhYjA5IHB5M2sKKzcwNTE4IGZiMjFlYWJhOTRmNjg5ZWVkMjdjOTljZGFhOTFiOTMwMDdhOTE5OTcgbGVnYWN5LXRydW5rCis3MDUxOSBkMWIwYmQ0OGJhMTU2MzgxYjc5ZjlmMWU0NGNkMzg2Y2Q0N2JhYTgwIHJlbGVhc2UyNi1tYWludAorNzA1MjAgYzg3ZTU4MjYyZDViY2IzZWQyMzU0MjllMTM3MmEwNjA1MTM1Y2YzMSBweTNrCis3MDUyMSBlZmQxN2NiNTgyM2E5OGZlYTYwMTY5MTI2NWQ5N2E0M2MxNDE0ODUxIGxlZ2FjeS10cnVuaworNzA1MjIgNzUyZjJlM2U0NzU3N2ZiMDMwM2VmMDA4OTZmNTg0N2YxZTIyZjhhNCByZWxlYXNlMjYtbWFpbnQKKzcwNTIzIDQ0NWQ0MDQyNzBlYWFiZjE4YmY2MzBmOWIxMGQzMjExNzUxNjUzN2QgbGVnYWN5LXRydW5rCis3MDUyNCA4NTZlZDQxODc2OGMxOTA2OGFhNzFhMjA0MDAwOWQxMmE4ZjM1NDFkIHJlbGVhc2UyNi1tYWludAorNzA1MjUgMDk1ZDg3NGEzMDU0OWZhYmZlZGZlYTJlZDEyNjliNDU1NDZmY2QzZiBweTNrCis3MDUyNiA0MzViOGJhMWE5MDIzNDRhNTFlNGMwZTM4YmQzMzY1YWVjOWJhZGQ1IHJlbGVhc2UzMC1tYWludAorNzA1MjcgZGQ5ZmRkYjA3MjBkYWY5YjJjYjk1NzkyYmQ3ZDdkNjQ1OGQ4MzE3ZiByZWxlYXNlMjUtbWFpbnQKKzcwNTI4IDZjYjg0MzA3NWU2OTExZjJkY2JhODZmMTAxMmU4MzEwNjM4MWZhNTAgcmVsZWFzZTI2LW1haW50Cis3MDUyOSA1ZjhjOGM5MThmOWIwMjliNGU5N2M3MmFjZTYzMzQ0MjJjMmRiYmYzIHJlbGVhc2UzMC1tYWludAorNzA1MzAgYWIzODk4NzdmMTUyZjRjODliZTIwNWI4ZDQxZmE3ZDI1NGRkYWEwOCByZWxlYXNlMjUtbWFpbnQKKzcwNTMxIDFmNzJhYzkwOTQwOGRjNDE0MjA2MTdlMTRkMWU5ZTJhMTcxN2Y2OTcgbGVnYWN5LXRydW5rCis3MDUzMiA0NDI2ZTQ5MjI2NGYwN2FkYTUxNmU1NzM4NzA3MGRhZmYwZTYxYzEzIHB5M2sKKzcwNTMzIDExOWUzZmM2Y2RmMzU4MWQ4OTVmM2I4YjI1ZjQ2M2E1Yjg2MTZiNTMgbGVnYWN5LXRydW5rCis3MDUzNCBiMTYyN2U3ZTY3OGQ3ZDk1OTZkNWNkYjU0YTVhOTlkOWE3YTM2MzEyIHB5M2sKKzcwNTM1IDg4OTc0Y2E1MDAzZmY5ZGFjZjYxMGJhZjliNDMwNzhmMjgyY2I1NmQgcHkzaworNzA1MzYgMDVhZTljY2ZmNTE0NGM3NTg1MDVjMDgzNjNmMTA0NjYyMTQ5MWFjNCBweTNrCis3MDUzNyA4N2NiOTUwNTkxYmVlMWI4YWNjNGYyZDZkMjZlOGM4ZDE1YzU1OTA4IHJlbGVhc2UzMC1tYWludAorNzA1MzggNjg3ZTc1MWMyODhlNmZhNTRmOGNkMDMzYTg3MjAxY2NkYjc1ZWQ3MCBsZWdhY3ktdHJ1bmsKKzcwNTM5IDEzZjg4N2U1ZmEwZDc1MDI1NWZlZmE2YzUxZjVhYjJmM2E3M2I0ODggcHkzaworNzA1NDIgYTU0ZWYxOGFiMGQ4OWRjZDFmODczNGY1NGJlNDQ5NmJkMWUyZWRmYSBsZWdhY3ktdHJ1bmsKKzcwNTQzIGVkZDQzMDJjY2VhZmVlZThiM2MwZTFhMTIzYWMwY2JkMTRmYzczMDAgcmVsZWFzZTI2LW1haW50Cis3MDU0NCBhMWRkYjRkZTg1YTUzNjgxOTU4YjcwNzIyYzJkM2E5MjZiMDFhM2RjIGxlZ2FjeS10cnVuaworNzA1NDUgNjBkMDZjOThhNjA1YjExMDI1OWQwNTU2MjRkYzJiNjJkM2VlODYxMiBweTNrCis3MDU0NiAwZTQ5OGE5ZmRlM2MyMjkzZjg4YjllMWNlOTczZDZiN2ZhN2ZhM2RmIGxlZ2FjeS10cnVuaworNzA1NDcgYTFkMTZkOThhYTQwZGFmMGVhYzQ0OWVkMTM5ZDU5ZTBmNjAzOGNkMiBweTNrCis3MDU0OCBjNzA5MTBhYzQ5MmQ3OTg0NjJiNjgzYWI5NjY1Nzc5YjY4ZGYxMTBkIHJlbGVhc2UzMC1tYWludAorNzA1NDkgOTRiZDA2NjZmZmE3OTMzZjUxZjljMjBkZTFiODZhODM0NTI3MTU0YSBweTNrCis3MDU1MCBiMzc5MTMwOWU2OTA0YzczYjkwYzUwNDI0MzA4MjUxNjRjMTcyNzJiIGxlZ2FjeS10cnVuaworNzA1NTEgNjdmYjkwMzJkNDNhNDdiZGFmOTljNjM4ZTkxNjI2MDBkODI4Y2QzNSBweTNrCis3MDU1MiBmNmVkYzY4NmJkZTc1MzNhOTAwMzE4M2UyN2U0OTFhNDJmOGFhNWFjIGxlZ2FjeS10cnVuaworNzA1NTMgN2VkZDE0M2NkNGU0MmYzOTg1MTNmYmU5ZDI3NGJlZDcwYjVmMTYxNiBsZWdhY3ktdHJ1bmsKKzcwNTU0IGRjYTNkNjcyNzU4ZTNjZGM1M2Q0ZWViYjFjOTE2YTY1ODcxZGZhY2QgbGVnYWN5LXRydW5rCis3MDU1NSBlNGFhNTMwZTU3NjBiOGFjZmI4NDBjNzJmODk3MzgzZWY2ODE4YmE4IGxlZ2FjeS10cnVuaworNzA1NTYgMTA4NDVlMTVlZDliMWI2MDE4MTFmYmJjNmI2N2Y3MWE4YjMwMjYzZCBweTNrCis3MDU1NyBkNzQ3NjEyZjhhMmZlZTk4YTM1NTQyNjg3MmQwMTJhMjgxMGEzNmYwIHB5M2sKKzcwNTU4IDY4YWMyNTUyZjQ0ZTE5ZjVmNTg2MDUwZmUwOTA5OWNjZmI0MDkwNGQgbGVnYWN5LXRydW5rCis3MDU1OSA2ZDVjOGE1MDY5YjBmZmZjOWYyYzA5MWU4NjQ3Y2Y5NWM5MDY4NDg4IHB5M2sKKzcwNTYwIGFlZGE5MmYxYWI5YjU3MDNiYmMyNzZlOTc0ZTM0OThiNGIwNzQwY2QgcmVsZWFzZTMwLW1haW50Cis3MDU2MSA1NWYxNTA5YzQ1YjY3ZjBjYzVjODU4ZGM1NjVlYzEzM2EwMjE2ZGVkIGxlZ2FjeS10cnVuaworNzA1NjIgNTg2OTRjNzZkNzZkODE1ZjhhNGI2ZjhhNmIyMDg4NTNmMDFkYTk1OCBsZWdhY3ktdHJ1bmsKKzcwNTYzIDAwMjdjMDgzYTBkNGI0MDRjZWM3NThlYzhjZmJmNDIzYzBiMThkYWUgbGVnYWN5LXRydW5rCis3MDU2NCBlYzNlMjlmMTYwZGZkMTAxMjZlYTE4YmQ0ZTk5ZTc0ZDUyM2RiYWUwIGxlZ2FjeS10cnVuaworNzA1NjUgNzAxZjY4ZjhiN2NmNzUzZjk0NjAxNDEyM2IxNzUzOTYwZTQ1Yzc1ZSByZWxlYXNlMjYtbWFpbnQKKzcwNTY2IGEyZjZiMmIzODJiNGMxMWNkMWFmMDhhMmY4YjhhODFmY2UxYTU2MzcgcHkzaworNzA1NjcgOTg2YWNjZTI2NjQxMGJkYWI3YmFlMzY3YWY5ZTUyZWE0YTUwY2U5NiByZWxlYXNlMzAtbWFpbnQKKzcwNTY4IGYwYTUwNzQxNGU4Y2M3ODY3NzdiNmJhY2E0ZmMwZWEyZGZjYjZlYzYgbGVnYWN5LXRydW5rCis3MDU2OSAyM2MxMmFjN2YzMTczNmM2Njc0ZDIxYjg0YzFkMzM4ZjE0M2FmNjkwIGxlZ2FjeS10cnVuaworNzA1NzAgNmVkYjc0MjE2MzhjMGIyMWNiMGFhZDVjNTAzOTJjNjc0MDRkYzFlNiBsZWdhY3ktdHJ1bmsKKzcwNTcxIDEyYWRiODE5NzY0NzljNDAzMTY0NzUzMjkwZWFhMWE4ZTNjNTdiMjEgbGVnYWN5LXRydW5rCis3MDU3MiBhOGE4Y2Y5YjI4MTgzZDQ0ZDcwMzcyOGM4YWQ0Mzc0MDY0OTY4NmQzIHB5M2sKKzcwNTczIDliNTk5YjYwMTJmYTU0ZGY3MmE4ZjE4MzRkZDViNWEyMDc1OTFjYTggcHkzaworNzA1NzQgZDIxMzQxMzNiZjBjOTk1MjQ4MzY5OWQwZDI3N2ExMWY5NDljY2YzNSBsZWdhY3ktdHJ1bmsKKzcwNTc1IDgyMGYzNDc1YjA4ZDdmMmM3NDEyMjYzNjllZjc5ODIxOGE0MTk3ZWYgcHkzaworNzA1NzYgMTFkNTRjN2UwODliODg1MTA4YWEyYjllYjljOTU5MzU5ODAyODNiOCByZWxlYXNlMzAtbWFpbnQKKzcwNTc3IGE4ZGE4YWNkYTEyODY3ZDQ3NGFlOTQzMjk0MGQ1MzQ0OGUwNmM2NWUgcHkzaworNzA1NzggYTk1MTVmMjliMzhjODczMmZkM2I1NjY5ZWFmMTY2ZDljZWQzZTE5NCBsZWdhY3ktdHJ1bmsKKzcwNTc5IDI0OTRmZmQ2MGVhZTk5ZDBlNTZiNjEwOTc4MmM2YjI3MDE3YzZiNTAgcHkzaworNzA1ODAgNjBiOTdmYzhmMDZkYTM2YTQ5MTY3NGNhNDhiMzg3OTUyMjMyNDJjMyBweTNrCis3MDU4MSAwMDZjODFmOWIwZTgwZWQ2MGUxZDA5MjdhZTVmODQxZjNlNzk5NGE3IHB5M2sKKzcwNTgyIDJjYzkwMGJkNmJiMDE2MmNkMGYyYjkzNjcwZDY3ZmM1YjBiYjkzNjMgcHkzaworNzA1ODMgYmE0MjQwMTZkYjc0Njk2MDNkNTdmZTEzNWM5N2M3MGI4OGI5MWZiNyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg0IDc5MmE3ZjkzOWZkZGVhYzFhMWNlZGMxNmVhZjgxNWEzMDBiYTMyNjcgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NSAzYWRiMzk3NGU3NzdjMDkwNzI0NDlkMWYzNmYwOWVhMjY0ZGIwYWY2IG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODYgOGFkMjUxZGE0NzQyNzRmMTdhYjA5M2JkZjU1OGEyYTkzMzM0MTc2YyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg3IGZkYzgwNmM3N2NkNmU0MjE1ZjVmNmQxMGJmNWZmNWQzYmRiOWYxMWEgcHkzaworNzA1ODggM2RmN2YxMThlNTA0MjJmNmEzOGQ0ODFlZGNiMjU0Y2FiZjAyZTExZSBsZWdhY3ktdHJ1bmsKKzcwNTg5IGVmZmZjN2VhYWQ2ZDMzZTc0ZTU3M2RjNzcxNWE2MTg0MjZhZGQ5NDIgbGVnYWN5LXRydW5rCis3MDU5MCA1ZDZjMGZjODdhNzE4ZWIzNjQzZmZmMTczYmRlNzNiMmRlY2Y2NjNiIGxlZ2FjeS10cnVuaworNzA1OTEgMDYwZWE5NzVkNTk3MTI5NzYxNDBiNDcyZWIwNzUxNjM3NWE0ZDczNiBweTNrCis3MDU5MiA0MWUzNDRlNTcxYTE2MDIzNjEzYWYxMDMzOWE0YWMyNzJiMDQ1MzcxIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1OTMgNzNmNGU4YWRmZWJmZDhkMjVkYTAxZGQ3ZGYzY2I0NDE0NDQxMDBlYSBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTk0IDdkMGUzYThjMmU5ZTFiMTZjZDAzYjY4ODBhMzZiNTFjNTljOWI4MmYgbGVnYWN5LXRydW5rCis3MDU5NSA5Zjg5NzY1NjVmODI2ZWUwZTlhN2UyNGQ4ZDk1ZjY4MTRkN2I0MWU2IGxlZ2FjeS10cnVuaworNzA1OTYgOGNkNjE3YzNlNzRiMDI4ZWQzNzIxNzIxZTkxOGUyMzBiNzg1MDhkMSByZWxlYXNlMjYtbWFpbnQKKzcwNTk4IGVlMGY3NTFiODAyMDAzYzUzYWQ1N2EwYWQ1NjdiOTVkOGUyY2Y5YTEgbGVnYWN5LXRydW5rCis3MDU5OSAxZmJlYzI5Zjg5ZThkMDJjNTE1ZmM0NWYyN2U5MDNkODBmYzgzNDE3IGxlZ2FjeS10cnVuaworNzA2MDAgYTY3NmQzNmMwN2RkNTM5OWRiMGExYmNhZGVhMTc4OTcwNTZmMDg4ZiBweTNrCis3MDYwMSBmNWQ2NzBmY2RiZTk2YmM3ZjQyMWI4YjQyOGEyOWU3Zjk3YzJjYjNhIGxlZ2FjeS10cnVuaworNzA2MDIgZjI3NzA0ZjQ1ZDRhZjMzMTM0MzNjMmZkOGQzYzFiZTk0ZGVkYTFhMCBweTNrCis3MDYwMyA4YjVhODBmNTMzMTdmODk5ZTc5OTEyZGQxMGQ0MzcxYTZhMGY5NzI5IHB5M2sKKzcwNjA0IGI2Zjg2MTMyMWI0NWNmMGZkYWE0ZGE1ZWEwZDBkNzQwMTRmN2Y5MGIgcHkzaworNzA2MDUgM2ZkYzRhYTM2ZDc2NzA3OGFkOGQyYjM2ZWMwMWNlYjM2MGE2MzAzNiBsZWdhY3ktdHJ1bmsKKzcwNjA2IDYxZWY2NTlhYjc5OWRmNjIzN2RlMjcwOThjNWZmZGNjZTY4ZjM4NjkgcHkzaworNzA2MDcgMzM4MjljNzkxYmY2MjI3MGM2ZTgyYmYyM2U0ZGMzZDRmYzkyODFkNSBweTNrCis3MDYwOCBhMTBkOTk1MTNmOWU5ZWUzYTA1N2VmMjhjZjRmODhiMWRkMjQ3ODQ0IHB5M2sKKzcwNjA5IGNjMTNjYzIyNGZmNTY4YmUxMWI2Y2Y2YTZiM2RiMWFhNTZlMGViYTcgcHkzaworNzA2MTAgMDdiNmZjZGY3Zjk0OTk0ZTllYWU2YjRhYzhiODVmN2QwNTY2MDkzNiBweTNrCis3MDYxMSAxZTIzMzU5NjJiYWQ4NTQ2YTFlMTFmZjlkZDhmYTBjMDYxMTRkNGMxIGxlZ2FjeS10cnVuaworNzA2MTIgNzhmZWRjMzQyYTZiMTA3ZGJjMWI3MjIwODJjZjc5ZmFkNzBmMmU4OSBsZWdhY3ktdHJ1bmsKKzcwNjEzIDBhMDUyYTI4NzNiMjQxOWRmNjlkODg3Mjg0NjkwNDg2ZjE4N2Q5NmEgbGVnYWN5LXRydW5rCis3MDYxNCAwMDdlOWM4NmZiNTViNWUwODg0YjZjYTVhMTgzZDI3NTg1NmMxYTVlIGxlZ2FjeS10cnVuaworNzA2MTUgNGZlNzYyNDlhOTA5MDcwZWRkMWU5ZjVkMjM4MmU1MDgxYWMyMDE1NiBsZWdhY3ktdHJ1bmsKKzcwNjE2IDU1NzI5MGZmYTc4NDc2OGU3YTk0M2U3OTVhODRhNWJjNmQ1MjFhY2IgbGVnYWN5LXRydW5rCis3MDYxNyA5Y2NmODJlNjUzMzI4ZjFkODM5NDQzZjhjZmNmZjhmOWRiMDAyZDBjIGxlZ2FjeS10cnVuaworNzA2MTggZTYwMDliOWNkOTA4NGZmY2FmZTBiMjUzOGI2OTMwZTM2OTlmZWFhNiBsZWdhY3ktdHJ1bmsKKzcwNjE5IDE0Y2M5MmFlOTRjOTA0ZDBhY2UzMTNhOWRjOTNiODAwMzc1ZTA1NTkgbGVnYWN5LXRydW5rCis3MDYyMCAyMjhjZmI2ZTI5MDBjMTQ0NmNhMDYyZjU4ODJmMTBlMGNmNGFlYzAxIGxlZ2FjeS10cnVuaworNzA2MjEgNzZiZjM0MWFjMjAyMzdiMjQ4OWVkNjJmYmY3MTdhZGQ1M2JkN2FkOCBsZWdhY3ktdHJ1bmsKKzcwNjIyIDUwMjM4NDk0ZjBmMDVkZWQ1MzJiNTM1OTJjZGQ4NmRlOGY5MTM3ZDMgcHkzaworNzA2MjMgNzA1NTQ1ZWMzMjQzZDQyNzI1NGNmZTE3Y2FhNzIyOGZjNmY2OGZjZiBsZWdhY3ktdHJ1bmsKKzcwNjI0IGYyNmMxY2Q2Yzk4NTAwNWZlZDE1OWQ3ZTE0NjFlYjEzZTBhYzA4ODkgbGVnYWN5LXRydW5rCis3MDYyNSBlZGY2MjcyNjFjN2I1NThiMGY5YzFmMWRjNTU2ZDlkMDgyZjVjNjZiIHB5M2sKKzcwNjI2IGRhZGJlMDE0YmRhNGUyNzUwZTJlZGYyNWRiMTAyNDFkYjg1YTRlZTQgbGVnYWN5LXRydW5rCis3MDYyNyBkMjI3NTg0YzFjN2Q4ZTcwNjQ3Yjk2ODhiZDQzMDdlNzJmNDFlOGI4IGxlZ2FjeS10cnVuaworNzA2MjggZGFmNjYxZDA1NDQyYTdhZGQ4OGEzMzZlYzViNmFmNzBkODA5MDcwMSBweTNrCis3MDYyOSBjYTAyYmQ4Yzk2ZjI5OGJmOWEyYTcwYzg1MzJiZDQ2OGQwMzc1YThiIHJlbGVhc2UzMC1tYWludAorNzA2MzAgNDc1ODA4Njk4ZWFmYWFiNjBkNzU5MGUyODA4YjdlMDM3Zjg5M2NjYSByZWxlYXNlMzAtbWFpbnQKKzcwNjMxIDc1ZTNmZTNjMDcyNjcwZDA2YjhhMWI4NDY4NDE3ZDgyMDJmYTZmOGQgcHkzaworNzA2MzMgZWU0YTAwNmQwMTcxZWMxNDRhZThhNjk0MTBlYTg4NGI4ZDg4MDZmNSBweTNrCis3MDYzNCAxMGE4NGM2MzhlZGExMjk1NjhlNjI2Y2JjNWZlMGJmZTE3YjdkODY4IHB5M2sKKzcwNjM1IDhkNjkxOGFmMjMyYmFmN2U4ZThkMjAyMTg2YWIzZmJjNzVlYjgyNTYgcHkzaworNzA2MzggOGI2OTE2OTBiYWJkNzA4MDc2NGU0YWYzNmQ2YzZhOTE5MzZmOTgyNiBweTNrCis3MDYzOSA5YWI3NTQxMTA0MzE1ZmFlYWM5OTVkMzQ4NTQzZTQ3MTk1MzE3ZDAyIHB5M2sKKzcwNjQwIDQyNjVkNmM3YzA3NDNjZDI5OTNmYjdhOTYxZGE1ZjM4Nzk0MDA3MDkgcHkzaworNzA2NDEgZmJhZDQyYzQ1YzljYjZjNDFmOTBkNWU1YjViZTM5ZDdkYzZmNTc4OCBsZWdhY3ktdHJ1bmsKKzcwNjQyIDdhZmY4YTc2NmUyNTA2ZGE3NmFhMzY3NDVmZWY5YWYwYzRjYjgxODcgbGVnYWN5LXRydW5rCis3MDY0MyBhNzI2Zjc5Mjg1NjE4NTQyZGJhNmQ3ZDQ2MGE5YTJmYTFiZTE4OTliIHB5M2sKKzcwNjQ3IDlkZjVkMDY5NDkyMWE2MmQ4MGIxODM1YjExMzFjZDUxNWIwM2Y0YzYgbGVnYWN5LXRydW5rCis3MDY0OCBiNzNjZGFjNmEwYzM4Yzg1YTg2NDY0YTJhYmU5MGY3MDA4MjdiOWRmIGxlZ2FjeS10cnVuaworNzA2NDkgYmI5MGVjNjdmMzE0ODU3MjY3ZmU1NDY5MTIwMmRiMDA1YzQxMDVlYyBweTNrCis3MDY1MCBkYTQ1NmY0MmViZTdlN2E4ZWE5MTEyNGU3OTVlOGFmNWViOWNlYjAwIGxlZ2FjeS10cnVuaworNzA2NTEgM2FkZDQwMGU0MTlmZjAzMjFlZTk4NWY4MzM0YWZiZDkxYzRkNGQzYSBsZWdhY3ktdHJ1bmsKKzcwNjUyIDFmNWRiOTQzN2RiODhjNWVjZDdmZmZjMmQ3ZDc2MmRjYmJlNTdhMDMgbGVnYWN5LXRydW5rCis3MDY1MyA0OTgzZmQxOTUwMzY2YmNhOWVjOTM2NWJjZmM2MmY0YjVhZTFiMzU3IHB5M2sKKzcwNjU0IGJkZmM0YjNhOTM0NzE5NTFjODExMzI4MDUzMjg4ZWRiODM2MzRkN2UgcmVsZWFzZTI2LW1haW50Cis3MDY1NSAzOTE4NzFmNmMxNjQyYmQ2OGFkNDgxZDdmMzhkNDJhZjBhZDRkZGNjIHB5M2sKKzcwNjU2IDVlZjFjMWQ3NGM1MTIyN2FkNzYwYjkzZjE2Y2E1YTZmYjIzNzk4NzggbGVnYWN5LXRydW5rCis3MDY1OCA5NzZiMDc5OTk1ODk5Yjc5YjA1NWJlNGQxODY4OGEwYWU0YzY0NDhlIHB5M2sKKzcwNjYwIDM3NDliODhkYmI2MTI3NWY1YjRlYjM4ODVkNDRjMmQ4M2ZmYmQ1M2EgbGVnYWN5LXRydW5rCis3MDY2MSA1NWQ1NDIzYmE5ODdjZWNlNjQyNjQ2NTM4NTExZmQyZWI2MDk0NmU4IGxlZ2FjeS10cnVuaworNzA2NjIgZDRlNzQ3MGJkNjYwNDJjMmFiOTRjYzE1ZWEzOTRlZjNmNDYzMGIwMiBweTNrCis3MDY2MyAxNTBmNTY4ZDFiYTJkMDBiNDQ2YmIyYzRhM2NjNzliODdlMmUxMDZjIHB5M2sKKzcwNjY0IDNhNmQyN2Q4MDgyMjk1ZTJlNTAxODY3YzMxMmUzMzZhZjBjMTMxMTIgcHkzaworNzA2NjUgMWI3MjczYWVkMzZjZWQwYmY3YTZiMDc4YzkxMTY3NzhhZjZjNWQ1MyByZWxlYXNlMzAtbWFpbnQKKzcwNjY2IGQwNTkzOTI2M2EwZTUxNWEwMDJlZTNkZDk0ZmRiOWYxMzI0MDc1OWMgcHkzaworNzA2NjcgYjc5NDMxOWMxMjVlYjQ1Y2FkMDMwZGVhYmMyOWE5NzY1NGFmNjAzZCByZWxlYXNlMzAtbWFpbnQKKzcwNjY4IGQ1NWUwNWIwNmU0YTJiMGU3ZmQwZmU2M2I3ODllYWY0YjI2NjQ5YmQgbGVnYWN5LXRydW5rCis3MDY2OSA3YWRkNDIzYWY5NzEwOThmMzk2ZTNhOWI4MzQ2M2NmMmFjMDIwY2U0IGxlZ2FjeS10cnVuaworNzA2NzEgMzZiMzU5MmYzMDIzYjg3NDIxNWMxMGQ1NmZkM2ZlMWNhNDQ4YWI4MyBsZWdhY3ktdHJ1bmsKKzcwNjcyIDkxMzRhMjA5MTAxM2M1ZmEzOTk2MzVhNDY2YmMzNzA2OTRhNzdjNTkgbGVnYWN5LXRydW5rCis3MDY3MyBlMzE0Yjk2ZmI1YWQzNjI5MmZjYWQ5YzZhNTc2N2NhMDA3MzNjMjZhIHB5M2sKKzcwNjc0IGU5ODkxNTk4YTQzMzQ2NGMyNzQ5MmJjYzcwMGE0NjEzMGI2YzY5MjcgbGVnYWN5LXRydW5rCis3MDY3NSBlZjYxMmJlNzcxZWRjZWZiNWVmNDlkYTg0OGNlYTIxZTA0ZTcwYzhmIHB5M2sKKzcwNjc2IDAwMTI4OGE2OGU4YjA3NDg0YmI0ZjVlMWEzN2FlMzAxZjQ2ZjE2YzMgcHkzaworNzA2NzcgNDZhNDVlY2NjOWY3MDFmYWNhYjYzMGUzNzc2NjJlZTRkNjFlZmRjNyByZWxlYXNlMzAtbWFpbnQKKzcwNjc4IDAxOTgxNWJjMzdlYWYxMmQ5ZDhhNDc4MmM0NjE1NzdiMzIwZDA1MTIgbGVnYWN5LXRydW5rCis3MDY3OSA0MjNjOTQ3N2Q2ZWZlNmVjODA3OGM5NTIzZmExYjk5MDVmMDM1MGQ3IHJlbGVhc2UyNi1tYWludAorNzA2ODAgMDJmMjk0YTI4MjA2ZmIwY2Y3OWU3MTdhZmQ1MmQyZmUwMDZhMjEzMSBweTNrCis3MDY4MSBmNDlhOTdhOTc5ZWIwOTA4ZTAzYTgyMzc5OGMxMWU2M2Y3ZTAyMTY5IHJlbGVhc2UzMC1tYWludAorNzA2ODIgMWFmYjM2NWYyNDQ4MjIyN2U5YjNmYzg1MzA2NTgyMWNjNTI1YzAxYSBsZWdhY3ktdHJ1bmsKKzcwNjgzIDZlNTkxZDRkYzZjOTZmYjRmMDU0MGM5OThjNzgzOTk2NmYzODU4N2EgcmVsZWFzZTI2LW1haW50Cis3MDY4NCBmMDViNmQ5YWRiZTY0Nzc1NzY0YWI4NjQ5ODg4ZmZkMWZmNTQ2OWRhIGxlZ2FjeS10cnVuaworNzA2ODUgYmFmYWQ2MWNmMzAyNjJkNzcyZGQ2NTEwMzUwNDE4NTE5Y2JmMmE5ZCByZWxlYXNlMjYtbWFpbnQKKzcwNjg2IGU1MDg0ZDUxNDgwOWVmMDFjNjJkNDI5Zjc0N2MzODIxM2NjOWJkNDAgcHkzaworNzA2ODcgYjBjNWRmOGM4NGEzNDQwNGQ1MTM0NmQ5NGI1NTNiZTE4OTFhYTcxNSByZWxlYXNlMzAtbWFpbnQKKzcwNjg4IGYxNzFiYWM5Zjk2MWQxZDcxMzdmZDRlMGZmY2E0ZDMxYWI2YzAwYzYgcHkzaworNzA2ODkgOTgwN2MyNmNiYzk5ZmExZTAxNTVkZjk1ODIwN2Y4NjkzZWQ0MjM4OSByZWxlYXNlMzAtbWFpbnQKKzcwNjkwIGEzYjhkMTkxZWM2ODEyZWViNWJkMmY2OTY5MmNmNTgyZWZhMzE2ZDkgcHkzaworNzA2OTEgMDUwN2FhYjVmYjExOWY1OTBlMjkwMGEzNDYzZjI3NjQ4YzAxZWFlNSBsZWdhY3ktdHJ1bmsKKzcwNjkyIGJhZWU5MDUyMTExMGRhMjU1YjhhY2UwMmU4ZjM3ZjlkM2Y1MzkwNDAgcHkzaworNzA2OTMgYmVmMDBjYTQzZWZhZTZkOWJkYzJiYzhlM2YyNDVmYjQ3MzA5ZjNjMyByZWxlYXNlMzAtbWFpbnQKKzcwNjk0IDkyYmMxZGRiYzU3MjRmNGUxZmVkYWIwZmNhMWM5NmU0ZWEwOWYxMTQgcHkzaworNzA2OTUgOTc1YjIwMzk5YzhkMDI5Y2JlZGJiZTE3YjJlYmQ5NWJmMmU0Zjk1NSBweTNrCis3MDY5NiA3YjVmYmJlN2IwMDljNGYyYmRkZmM4YjBkODQ2YTM2YWE2N2RkYWQyIHB5M2sKKzcwNjk3IDZlMWM0YTI5NjNlNGM0MWQ2MzJmMjY0OTM3MGVhMmE2N2I1MjY3ZjEgbGVnYWN5LXRydW5rCis3MDY5OCA5YzIzYzU0ZTZiMTU5Njc0NmJhMzhhNTZlNTdmNzRlNTI5NzE4OWY4IGxlZ2FjeS10cnVuaworNzA3MDAgNmFkOWIwMWY5NWY5OTkxYTZlNDA0MTFiZjk4NGU1NTk3NzY5Y2UyOSBsZWdhY3ktdHJ1bmsKKzcwNzAxIDcxYjY5YTg3M2QyMTMxNjcwODJjMTNkNDVlMmRmOWE2ZWY1YzRjNDUgbGVnYWN5LXRydW5rCis3MDcwMiA2ODVmMTc5MWZiYzU5YTk3NDE1OTc4OWIzZWU5ZTI4YzM5ZjEwYTA1IGxlZ2FjeS10cnVuaworNzA3MDMgYTdhZTczYTM3ODA1OTRmMzM3YTE1MjE5OGQ0OWMwZmJmOWRiZjFjMSBsZWdhY3ktdHJ1bmsKKzcwNzA0IDJkODM2NDlhOTRiNzVhYzY0NTRmNTIxZjQwNWIxZTBkOTRiMGQ2MDQgbGVnYWN5LXRydW5rCis3MDcwNiBmY2U4ZjIzODQ1MmUxY2FkOWY1ODBjNGU5N2RjMTUxMTk4YTAxYjYxIGxlZ2FjeS10cnVuaworNzA3MDcgMTFjMzM1YTk2ZjYwZjFkOWNkYzJhYjhmMjYwMWQwYjQxM2FmODkzNCBweTNrCis3MDcwOCA5ZTRiYjk0MWExZWE1NWM1MGEwZmRiN2Y5NDljODE4NzA5OWFkZGZiIHJlbGVhc2UzMC1tYWludAorNzA3MDkgMDA1NzEzOTQxYTE5M2EwNjkyODkxNmEwNDZmNzVkMTU1ZDc5ZjYwNSBweTNrCis3MDcxMCBjYzAyYzljMjkwYTk0ODRiYjkyNjlhZWZhOTcxNDI5ZTUxMjQ0YThiIHJlbGVhc2UyNi1tYWludAorNzA3MTEgYjlkNmZkZjBmYmIzNjFmOThhOTNhMjA3NDk5MTg5NTIxZTdmODMxNSBsZWdhY3ktdHJ1bmsKKzcwNzEyIDg0ZTk5ZWZjNjdiMmIxYTBmYWNiZmNjYmJiM2Y5ZDAzODYyY2YwNzcgbGVnYWN5LXRydW5rCis3MDcxMyBmNWMyYmNiMDk0N2I4YWE1NmY5NjM5NmY2ZTFjOGJmMGE0MGNiM2I0IGxlZ2FjeS10cnVuaworNzA3MTQgMTRjYWUxMTYwNjlkM2NmNWRjNzg3YjliMGYyZDZhNTJlNzg5OWQyZSBsZWdhY3ktdHJ1bmsKKzcwNzE1IDFiN2NjY2EzNGYyZmE2OGZjOWM1ZWM4MzVmZjUyZjkwYjU0MDlmMTMgcmVsZWFzZTI2LW1haW50Cis3MDcxNiBhYWFmMzI2OTQ4NzZhNzY5YjA5MDgxZThiNDU3OTAzNzBkNzFhMTI3IGxlZ2FjeS10cnVuaworNzA3MTcgOTY1MjMwYjMzNzlmMWI4MjVjMmYwMDlhNjA3ODE0MDc4YmRjODYzYSBsZWdhY3ktdHJ1bmsKKzcwNzE4IGI5YzQ5OWU5Zjc0ZGE5NWI5ZDgzMWU0OTFkOGE4MDlhNWJhM2EyY2YgcHkzaworNzA3MTkgYjRhNGY0YjYwOGFiYjFkMGRmMDVhYTc4NzBmNDM3MjU4YzAyOTk0MCBsZWdhY3ktdHJ1bmsKKzcwNzIwIGFjMTY0YjU0YzhhOGEzYzE2YzQzNTUyNzU1NTA2YTQ0ZGViMzU4MDQgcmVsZWFzZTI2LW1haW50Cis3MDcyMSBiNGFkNTk0OGUxOTdiMjZiNDk2NGE4YzE1MWVmZWVkYzUyZTJiNGFiIHJlbGVhc2UyNi1tYWludAorNzA3MjIgMTAxNGYwYWJkYjU3MjEwM2NmNzk3ZTIzMTZlNmJkMDVmY2I4N2U3MCByZWxlYXNlMjYtbWFpbnQKKzcwNzIzIDQyZTg3ZmY5ZjY1ZGJkMjY3NGU5ZjcyOWIwMGJlYjE1OTNiNjQxMWUgbGVnYWN5LXRydW5rCis3MDcyNCBlYjU1MmE1OTA5ZmI4ZDIxNzZkYzU5ZGIyZWI0ZWI2N2U1YTZlM2E5IHB5M2sKKzcwNzI1IDM5YjYyYjJjYjJjNzYwMjNlMGQzOTAwYmFlNWVmNTY0ZjM3MjUwYjAgcHkzaworNzA3MjcgOGRmNGUwYzA2ZTk0MDI2M2EyODRlZjlmODhlNGJmZDJiZDk1Yjg1ZCBsZWdhY3ktdHJ1bmsKKzcwNzI4IDJkMzhkZTAwMmJiZWJiZjA5N2I5NjViYWMzYWY2OTg5Y2U1ZDFjMWEgcmVsZWFzZTI2LW1haW50Cis3MDcyOSAwOGJmMzE4NDhhNDIyYWMxOTE2YzYwZTQxMjY0OWI1N2IxNjMxM2Q3IHB5M2sKKzcwNzMwIDJiZmY5MTIxYmUwZjY0YzllNDc4YzYzYmU4NDhmZjUzNWVmYzFiZDUgbGVnYWN5LXRydW5rCis3MDczMSAxNzViYTc2ZTljMmI3NGIyOGNkMGMyOTA2OGEyMzhlOTNjMzNjY2UxIHJlbGVhc2UyNi1tYWludAorNzA3MzIgOTg2NTU5ZGE1NGRlMTQxMDRhNGFlMGQxYzA3ODQzNzRjMzgxMmVmZCBweTNrCis3MDczMyA4MWFhNDBhYjM0NmQ5NjE2YjAyODM1OGYyZmRlNzg5NDA2ZWZlYTRkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3MzQgZjJjOTBmZDA1ZDY2ZGM5Yzc4ZDExYzA2MDk0ZDJhN2Q3Y2NjOWU2ZSBsZWdhY3ktdHJ1bmsKKzcwNzM1IDE0ZTI3NTBlMjUwNmU1NjZiNTMyMjkzN2M3ZWU1N2MyZGIyZGNiYTMgbGVnYWN5LXRydW5rCis3MDczNiAzOTUyMzQ2MWVmN2UyNDcwMzVlOGYzZWIwMzg4ZTA0YzhiNGY1MTAzIHB5M2sKKzcwNzM3IDk3NGMyYmVmMjgwMGYwYWRlNGE1OGQyZWNiYTkwNTZiNjhlZjA4ZDUgbGVnYWN5LXRydW5rCis3MDczOCA1NzMwODUwMTVhYTg5MzQ2NzQ5ZDI0NTZmMzk4MWJlOWUzMjM1OGJkIHJlbGVhc2UyNi1tYWludAorNzA3MzkgODU3YmU1ZDk1MTIwOGNhZTBhMTA3ZDlhZDFiMGMwNjgyODkzNGU0NCBweTNrCis3MDc0MCAzNzZiODIxZGI0MjhiOGY3NWQ1ZTJjNDFhZTlkYTk3MDZmMDk1NjczIHB5M2sKKzcwNzQxIGRkOTdkM2MzZmM2NjE4ZjQzZmJhYTc5MjUwNzRhOWY1MzkzOThiZGYgbGVnYWN5LXRydW5rCis3MDc0MiAzYjViY2I5M2JkMTE5ZGI4NmQzN2YxZmQ0ZjIwZGU5MmMyMTViODIwIHB5M2sKKzcwNzQzIDBlMzhiOTQxZDllNDkwYmViNmEzMDJmMmQ2NzJmZGUyYzU4YTJkM2QgcmVsZWFzZTI2LW1haW50Cis3MDc0NCA1NGExMDc2MzgzODk1NTgzYjlkMWQxOTAyOTVkYTFjZmM0ZTc0NjI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NDUgMmU1ZTAwMWQ3ZDM2YWQzYjQ1MjE0Yzk1NTRmM2RhNDU2NjEzNzExNiBweTNrCis3MDc0NiA5OTgyOWM5MDgwNTgxMjc4M2VkM2I4MTg4ZGU3YjQyMDEwZTQwYTA4IGxlZ2FjeS10cnVuaworNzA3NDcgMTBhNjNiOTMwY2JhZTE0ZjAwMzQ0OTRiMGQxZDMyMzFlMjI4M2E1MiBsZWdhY3ktdHJ1bmsKKzcwNzQ4IDI2OGI4ZWIzMWY0OTM2ZTJlZmFkYzQ4NzEwZmU5MmUwY2M4MmIxOWMgcmVsZWFzZTI2LW1haW50Cis3MDc0OSA1MmMzNmU0NTBhNDhhYzVjYTY1YjYzODdkNWQ5MjVjYWFmMTdiZjZkIHB5M2sKKzcwNzUwIDc1NzFhYWMzZTBjMjBhMzczYTI1ZmJmNTZjNTRmNTc1NDE2NmU4ZjEgcHkzaworNzA3NTEgYjhlODdlZGYyZjY2Mjg3MmZiNTZlMzA2YTI0MTg1YWI1ZTA3OTU5MCBweTNrCis3MDc1MiBlY2E5MzkwMjJiODMyZTM3YjdkNjhmMGQ2MzYxNDMxOTAwNDg3YjdkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NTMgYzM3MWMwOTI0ZjM1M2M5YTkxNjY0NDJmZWIzOTBmODg4NjU3ZDdjOSBweTNrCis3MDc1NCBkZTYzY2JjNTYxYjY4ZTZhYzhiYTZmYTk1NjQzYWFmMzBkMGIzYjY0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NTUgNDVhNzE3NDUwOTYxYzY4Yzk4ZGE4MTU3YTM5OWNmOGQwZWQxNWVlNSBweTNrCis3MDc1NiA3ODBkNjQwMWVlZDZkNWZmYWE1MDkwYWNhZmZlZDhmNjE0MzM2ODAxIHJlbGVhc2UzMC1tYWludAorNzA3NTcgMmZmODlmMGYxZDE5MDJiODE3MTI2NWJkNjBlNGIwYTZjNTIwMDdjZSBsZWdhY3ktdHJ1bmsKKzcwNzU4IGZjZmMyYzk5NGE0YWEwZTc0ZDk0MGQ4YWEwMGU1NTg1NGNkZTVlMTYgbGVnYWN5LXRydW5rCis3MDc1OSA4MzRhM2E5NmQzYWI0ODNiYWFhYjFhOTVkMGUyYzllZmU4NjJjOTZmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjAgZTlmZjBlZmNmZmE5MDhhZDhjZjA3Y2IzNWQ3YjU5ODk5M2RhYzBhMCBweTNrCis3MDc2MSAxZTc4YjNkY2NhNDJhZjNjZmQ3ZmUxZGUzZDI1YTEyNzhhNjJiMWM1IHJlbGVhc2UyNi1tYWludAorNzA3NjIgODAyNzFjZTA5YTY2ZmJkOTliODMzZjc1OGIwMWE2YmQ0YzU3MzdkOSBweTNrCis3MDc2MyA5NGJhMmZhZDkzNzhhNjQzYTRhYzYzZTAxMDdiM2E0NjEyNjNmZmUwIHJlbGVhc2UzMC1tYWludAorNzA3NjQgODBlYzUwZDEzODU3ZjI4OTQyNmUzN2M2Yzk1NDhiZjI4YzJkMGM3ZSBsZWdhY3ktdHJ1bmsKKzcwNzY1IDQyMzlmYTU2MjczNWFiMTE1NGI4OGJlZjc3ZTkwODc4NmYyMzBmNTEgbGVnYWN5LXRydW5rCis3MDc2NiA1NmEwOWRkMGUwZjMzMDE0N2UzZjE5YTM0Y2M2ZjU1OGM4ZDEzYjg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjcgZjZiMDUwNWEyMmIzOWQ5NjQ3MjJkMzYxZjhmZTdjNDZmNjEwNjU0ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzY4IDQzZWJhNzg5MTU4ZmRjYTM5YjExZjMyMmVkMTc3ZDhlODM1YzU2YTEgbGVnYWN5LXRydW5rCis3MDc2OSAyZjIyMjcxY2Y5MjQ5OGI4MmJkZmU1MmY5YzIzMTYzYjNlMTlkNGI3IGxlZ2FjeS10cnVuaworNzA3NzAgYTI4ODcxMDlmMzQwNjhlZDBmYzA2YTU0ZDVlODBlOWQxZmI1ZjNkYyBsZWdhY3ktdHJ1bmsKKzcwNzcxIDBhZmI1ZDg5NDY2MTY0ZmRkOGU5YWI2MDczNWY2ZTA5ODg5Yjg0NGEgbGVnYWN5LXRydW5rCis3MDc3MiA1ZGViMjcwNDJlNWE3OWUyNDdlM2FkYzkxY2M2MGI2YjM0ZWIwMDc2IGxlZ2FjeS10cnVuaworNzA3NzMgM2Y4MWQ5OTQ1ZTgyYTBlOTgxYmJhMTM5YmJmYmYyM2NlM2RjOTJiMiBsZWdhY3ktdHJ1bmsKKzcwNzc0IDlkMTc4Y2I1NDY2YTBkNzQyY2E4YTY2MTc1ZWZmMThiMmMzY2Q1YTQgcHkzaworNzA3NzUgZjRjNWUzYTY0YmUyM2E0ZWNhZmRiY2Q4ZjZjNzhhMDczNjkyMzNmOCBsZWdhY3ktdHJ1bmsKKzcwNzc2IDVlY2UwNzg1ZGY4MTNkNTVjY2FhYWRhNDc4ODQ1YjVmMTVkNGZhOTIgbGVnYWN5LXRydW5rCis3MDc3NyBlMDEyNGY1NDBlZTU2NDhlYTkwMzIzY2M3MTQ0YWNhOTExZjE4NWFlIGxlZ2FjeS10cnVuaworNzA3NzggODk3NmVjMmNkZmU1ZGI3ZTg1YjQ2ZTIwYTc2ZmU4NjIxMDZmOWI5NiBsZWdhY3ktdHJ1bmsKKzcwNzc5IGU0ZWZjYjI5OTBlMjVlYjVlYzBlMzk3MTdkY2I1ZTQ2YWVkNTE4ZjUgbGVnYWN5LXRydW5rCis3MDc4MCA5NzA0OTZkYjE0YmNkYjkxN2JjMjk2MzE4ODBlMjY0NTExYWE5NjJhIHB5M2sKKzcwNzgxIGRjYWMwNDU5MjMwMjg0ODQzZGFmMjNiYmU1YWRiNTg5YTVlNTBmYzYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc4MiAwZDYyY2M1YjQ4ZDVjZWNlNDk3NDZmNjE3YTkyODhlNmY1ZmQ0NzFkIHB5M2sKKzcwNzgzIGVhNGM1YzNiYzdhYmI4YzMwYzUyNDllOGZjMDE0YjRkNzEyZjU1MzkgbGVnYWN5LXRydW5rCis3MDc4NCAxMWE0NTY0NzdlODI1ODczM2YzMjU4OWY3YTJiNGZlZGM2Y2ZiOGNmIHJlbGVhc2UyNi1tYWludAorNzA3ODUgODAzZDAyNzNjYmY3YzA5MDU2OTBlNjViMTI2NTNjZGM1ZjRkYjJmMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzg2IDc1ZWMxMmIyNDQ0OGUyYjRkYzFjZDU1ZGY0YmIwNjExNTYyMDI2M2YgcHkzaworNzA3ODcgODlkZWEzZGY0Y2I1NzUwYmFmN2VmYTUxZDNkZjc3NjhhYzBiZWYxNiBweTNrCis3MDc4OCBjNjk5NTQ3MDUzYTk4YzE5N2I5YTMxNjBkMTEzYjBjMTVlYzMxMGNmIGxlZ2FjeS10cnVuaworNzA3ODkgMTA0Y2NkMDY0NjFhODg5YTM2ZTRiNDMwOWFhOGMzNDY2MDU1ZTBkNyBsZWdhY3ktdHJ1bmsKKzcwNzkwIGYyOGU2Zjc4MjFiMzFiNzQ2ZTJmNmNiM2ZkOTdjZDI4MmY0MjRkZTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5MSBjMWEzY2VjMGFjZDQyN2YzMThhMWZkMzAyNTIzYzUxMGI2YzkyOGRlIHB5M2sKKzcwNzkyIDcyYmJiMGY4YjA5YTcyMTRiZmQwMTE5YjFjMzllNDJmNWJkNDJjODAgbGVnYWN5LXRydW5rCis3MDc5MyAyNmIxYWQwOWQxYTcyMzdmMmEwZGI1MmIyYWZiOWZjOGIzNTk0ZjcyIHJlbGVhc2UyNi1tYWludAorNzA3OTQgZWUyMjJjNGQxMjlhMmY2ODViOGI5MjY0ZjJhNGZhMjlkMzA2MGVhYiBweTNrCis3MDc5NSA1MjE5NWZjYWIxOTNkNjk0N2UzYmNlZDIxOWYzZmZlOTEzNDQwZTM5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3OTYgMzgwOTNjYmVkNmE2ZGM2Mzc4ZDRjNmQ2NjgxZDU0ZTI3MDAyNTkzYyBweTNrCis3MDc5NyBkMTJiMDJhYmU2ZGNiNDdhYjJhMTk0YzE2N2VkMjE2NWE4ZWJjY2FiIHB5M2sKKzcwNzk4IDIzMWQ2MWM0M2U5Y2RmZGQ3NjQ1ZWE0M2ZlNTVlMDJlYmFlNjIyZTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5OSAzZGE5ZGMwYzY1YzZiMWYwYWQ0MmYwNmViODI2NzcwMWFlNDYyMzQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MDAgYTkxY2YwZGVmYmQ2NzY2OGU0YzM3ZjZlYzE4NGJmMDFiYmUyNjRkOSBsZWdhY3ktdHJ1bmsKKzcwODAxIGQ0Zjg2NjczOWJiMjRjMzQxMmVkNzRkMzUxYWUyYTZhYjFjMTQwMzAgbGVnYWN5LXRydW5rCis3MDgwMiA5NjJlYmE2MjI5OWZiODg4ODdlZDA4ZmE3NGExNDY4OTRlMDBlOTVkIGxlZ2FjeS10cnVuaworNzA4MDMgMjM1NjIyNjE3NDk3MWViODFmN2FlMDYzMmU4YTkwMjJmZWZiZTYyZSByZWxlYXNlMjYtbWFpbnQKKzcwODA0IGVjZjg0MjRkNzQyMjBiNDAwNjlmYjk1YmNmOTk3YmFiN2JkN2QxZDMgcmVsZWFzZTI2LW1haW50Cis3MDgwNSBkMjQ3NWQ4MDY5YWNkYzZmODcyN2NlM2Y4NTYwYTZjYjdiODBkYmY4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MDYgZTQ3NzhlYThlNGIyOGQ1NDZjOTM3Y2UwMjExNjIyOTUyY2JkNDcyZCBweTNrCis3MDgwNyA2ZjQ2MGI3YWNmOGY0YmNhNzEwYTkwODU4N2FjMzdlMjA4NDZjMjY1IGxlZ2FjeS10cnVuaworNzA4MDggYzk4YTcxZTk5MTYyYWNjODZhMmU0MGEyYjAzOGM4MTRiZWJiY2Q0MCBweTNrCis3MDgwOSAwN2Q2NTE3MWE4MDA2OTExYzc5NzM0NWEzNTIxZDE1NzUzOWVlNDliIGxlZ2FjeS10cnVuaworNzA4MTAgNGFkYWI3MjQzMzM5OTViYTE3YjM1N2JkNjVmZmFkODc0YzhlMjEwMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODExIGVlZDRjN2ZhM2UwNTg3NDJkYjE4MWM5YzE2MWQwMzE2MzM4ZmFkMzcgcmVsZWFzZTMwLW1haW50Cis3MDgxMiA4OTlhYTJkMTg5ODQ3YjdmNWM5NThhOGFlMWM5N2IyZGQ0YjIzM2EzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MTMgNjkxMDc5MmZjZDRiNjQ1OWUzZmMyNGVmMTMzYzZkMzM4ZTllNjE5ZiByZWxlYXNlMjYtbWFpbnQKKzcwODE0IDRlZWIxNGE5YzVkMmQ3MWM1MTJkM2M3ZmQyYWYwZDgxZGI5M2QyMDQgcmVsZWFzZTI2LW1haW50Cis3MDgxNSA5ZWNlYjYxODI3NGE1MjFmYzU1YzBiNWQxZmM4ZTExMWI5MWJmNmQ2IHB5M2sKKzcwODE2IDkzMmExZTUxNGMxNjIzNGZjY2I0MjNkZjdhYjNjMmYxYTAzMDhkMDQgcHkzaworNzA4MTcgMjFjMTU5NGFjMzY5ZmEwOWFiN2VmOWQzOGNmMzJmODc5MmE4MGY5NSBweTNrCis3MDgxOCBjMmIwMTRiNTViYWMyNDFlMWY4MjkyNjI0NjJlYjA0ZDFkMGI1NzE5IHB5M2sKKzcwODE5IDIyNDJjMmU2YzczYWM2ZDY5MTA0NmNjY2U3ZTAzYjBlNjhmZmM2MzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgyMCAwNWY5MGNlY2IyYTI5ZTBkZTA1NGNkOWM2ODQ0ZDZmNmNlNjgxNGNlIHJlbGVhc2UyNi1tYWludAorNzA4MjEgNjY5NGYzYTFiNmU3Mjc5ZWU4YmM2NzQ0ZmMwM2E5MWQ3MjRkODk3YSBsZWdhY3ktdHJ1bmsKKzcwODIyIDIzNDUxYjA5ZjE1YjkyM2E4MWRhYjhkMDhhOGQ2YTZhYjliYjFlZjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgyMyAyYjQzNjMxMGZjOGJiMDU4OTljNmY0NGE0ZmNkOWMyY2YwOTIxNTRkIHB5M2sKKzcwODI0IDQ0MzYzOTFkMmE5ZjI0YmU4MjEwN2U3MjEyMmQwMmI4Yzg0MzE0NjggbGVnYWN5LXRydW5rCis3MDgyNSBhYTdjZjMyODNkNmUwNjI2ZDBlOWYwOGRlYWYzOTZkZTA5YzgyZWJmIGxlZ2FjeS10cnVuaworNzA4MjYgNDg1N2NjYTQ1YWE1NDMwODA4MDc0NmUxN2MwMzYwZjZkN2Y5OTBjZSBweTNrCis3MDgyNyAzOThlYzk0MDI3N2Y2NDc2Y2RiYzJlMmEzZTY2MGM3ODQ0MzBkNzYwIHB5M2sKKzcwODI4IGUxMjk0NDZkZmJmOWExYzJkM2FjOTIyNTc3ODE5MGE4MjBkZjNhYjcgbGVnYWN5LXRydW5rCis3MDgyOSA1MTQyOWExOTZjNzVhZTIzYTMyODgzYmRlYjEzYzk2YWM3OTE5ZWEyIHB5M2sKKzcwODMwIGFlNjBlNGMyMGFlMzNmODQ2NDYyZWQ1MmJiM2M0OWVmM2U4NGMwMjAgbGVnYWN5LXRydW5rCis3MDgzMSBkOGNlYjI2YzY2YzQ4YzJkZmRkNTE4M2YwMjlmM2U2OTVmZjcyMTdjIHJlbGVhc2UzMC1tYWludAorNzA4MzIgZGFmZDk4MmRmY2Y0YTBlMjNhZDU3MzZmM2I2MDBiZjU5NzFiMjg4YyBsZWdhY3ktdHJ1bmsKKzcwODMzIDUzNGZhZjkxODdlODQwMGEwYWE1M2UwYWM2YmEzZjEwODBhNGVhMTcgcHkzaworNzA4MzQgMzc1Mjg3MzI3Y2U5ZWZjNzAzMzEzYTA2ZWVjYzlmNDcwMTA1NTE0OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODM1IGQxODZkMzUzY2M4MTcwZmFlMWFlNzAyMzYxNWRjYjk1MzY1ZGRiNzMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgzNiBiOTg1MjNiZTBhMTU3MDlmYWI5MzEwNzBmNWJjMGVkNjQxNjVlZjRiIGxlZ2FjeS10cnVuaworNzA4MzcgMTFkNmU1MzhhMjc5YjRhMjg3ODRkYThlZDJhY2Q1ZTBhZWM2MjViYyBsZWdhY3ktdHJ1bmsKKzcwODM4IGEzYjJhOTcwNmZjMzZlMjJjMTg1NDJhMTgyMGZkYjViY2RiZmMwZTMgbGVnYWN5LXRydW5rCis3MDgzOSA2YTZkZDhhYjNmMjI4N2VkNjcwMTliNjJiY2JhMGYzYjEyNTIwN2U1IHB5M2sKKzcwODQwIGEzOThhMmY3NWQ0NDRmZjVkMTM0ZGNhYTJiNjhmOGU0OWIyOWQ1ZGYgcHkzaworNzA4NDEgMWQxZWIxNDliMzIzNzFiMTEyZWNjOGQyZDI5N2RlYzM0ZTA1YjQwNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODQyIDcwNzI5ZTczNTNkYjAzNTQ4NGYxZmU5ZDViNTA3ZGM4Mjc1ZTYyNWMgbGVnYWN5LXRydW5rCis3MDg0MyAyZDgwYzI3OTc1MDEyZGYyOTkwYmRiZjE3OWE1MDZlYmI2NTdkZjI5IHB5M2sKKzcwODQ0IGRiNTAxODdiNGMwY2I5MTViNmU1M2ZiMDQzMGY1YWIwNjY2NjRhNmYgbGVnYWN5LXRydW5rCis3MDg0NSA2MjU5ZjgwZGMyNGQ2MDg0NGI2NzJhOThlNWQxMjA4ZTZjMDJlNDk2IHB5M2sKKzcwODQ2IDg0MDAzMmQ5ZWZkNjJjYWI3ZjhmMjU1OWE1N2VjOTQyOTgyN2Y2YjUgcHkzaworNzA4NDkgODcxNzEyODNkMDJmOGRkZjMxNjc0NGYwZGU5M2UyN2U1Zjg2MTlkMCBsZWdhY3ktdHJ1bmsKKzcwODUwIDZkZGJkZmRiN2E4NmQ5YWQ4MGU4ZmU1Zjg1ODkwMTgwNzgxYTU1NTEgcmVsZWFzZTI2LW1haW50Cis3MDg1MSBkNDk1YTExYzc2ZTk4ODVlYWI0ZDhiMzg3NjE3YzU5ZTE0M2VlMDI3IGxlZ2FjeS10cnVuaworNzA4NTIgNzY2M2M0OWM5YmY2ZGNjN2FmMzk5Nzk4MzhlMzkxNGJiYTBiZDQ2YiBsZWdhY3ktdHJ1bmsKKzcwODUzIDA4Yzg2ZjQ1YWM5MTU1YzVjZWQ3N2VjY2U3YTY2OTAzMzRlY2I2MzEgcHkzaworNzA4NTQgZmVhNzRkOWIyYTVmMzI2MTdmOTkwNzJhMDc0NTE1MmNkMjA4ZjZjNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODU1IDYxNTQ4YjNlNGNhODNlZjE3YzgzYmEyYTIzYThjZjRkNTRhMDFiNDAgbGVnYWN5LXRydW5rCis3MDg1NiA3NjQxYTNmMGIyZWMzNWVjYjg3MGJiZGE2NWRlZjIyZDlmODMyOTVjIGxlZ2FjeS10cnVuaworNzA4NTcgZTVkOGYwYzBkNjM0MDYxMzI1ZDE1NGFhZjhlMTdlZjBmMmQzYzllYSBsZWdhY3ktdHJ1bmsKKzcwODU4IGEwMjBlNjk4MzhiYTcyYWU4ODU3MTNkMzJjMDUyNzM2NGE1NDNiNWEgbGVnYWN5LXRydW5rCis3MDg1OSBkMDI3NTU3NGM3Y2ZlM2FlN2RkZjk1NGJjNDNkMGRmY2FjYTdiNzliIHJlbGVhc2UyNi1tYWludAorNzA4NjAgM2Q1OTgxNzUwNjhjYmIyYzhhNDAzZWIwNGE2MTYzNjc2ODNiMDZjYyBweTNrCis3MDg2MSBlZjI4MTZjNTZhYzJlZTY3MjkxMTJmZDliNWQ3NzUxYmRiYzk1Nzk3IHB5M2sKKzcwODYyIDhmNTFkZDA5ZjNmMjNjN2ZhZGU5OGQyNmRkMmQ5YWE2OWRiMDBjOTUgcHkzaworNzA4NjMgMTUxNmZhMjIzZmMxNGI0MjkyZjA2MWQ4MjQ4NGZiN2U1OWViMTY1NiBweTNrCis3MDg2NCA1MTBlZDA1N2I5NWZhODZjNjA1ZjQ4YTg1OGI2NmFmODM1MTg5ZGYyIGxlZ2FjeS10cnVuaworNzA4NjUgNTQ2YzUwMjFmMDI3OGUzMzBkZDU2M2M0ODZlNWVhNzNiMTBiMjA5NiBweTNrCis3MDg2NiBlMTYwN2Y2ZDliZTg3NTc5OGEyNTdhMDJhZDE0MTNhYzQ1MDQwNmRhIGxlZ2FjeS10cnVuaworNzA4NjcgZTcwYTZjNDZiM2FiNDBmMzNiZWUzOWVhNzA4YmU2MmEwYzZlY2Q3YiBsZWdhY3ktdHJ1bmsKKzcwODY4IGY0YjkwMDE1ZWYwMDk5MjI2OGE2OWU0YzljMTQ2YjFmMGJjMzhlYjUgbGVnYWN5LXRydW5rCis3MDg2OSBkM2UzMWJkNTQzMGFiNjlhYWVkNjU0Mzg2YzFkNDFlZjRkNTRiZTQ3IGxlZ2FjeS10cnVuaworNzA4NzAgMDJkYjJkMzQwMTMzNGIzNWNlYjk3MjQ4YzFjMWRiYWNmYTE5NzhmYyBsZWdhY3ktdHJ1bmsKKzcwODcxIDUzYzFiNWY2Njk2NTJmZmQxNTI4MGQ5NWYwMjJmNzBjYTAwYjcyMTYgbGVnYWN5LXRydW5rCis3MDg3MiBlNmIzZTY5NmRiY2U4ZDQ0YzNmNThmOTFhOTI1NWJiYjQyMTAxNjg3IGxlZ2FjeS10cnVuaworNzA4NzMgNjA5NmVhODFkZTBiN2E5MzhmNDI2MGEyMTlhZTBiNDJiOTE5OGU2OSBsZWdhY3ktdHJ1bmsKKzcwODc0IDY4YjdlODIxN2M3ZTUwNDYxOTNhMTFlNzQ2NTFkZTg2NTJiOGMzNTYgbGVnYWN5LXRydW5rCis3MDg3NSA0NWJhNDc1ZDRlOThjNzI1NjY3MGYwMWM1N2U0NmI5M2VkZDc3ZDM3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NzYgYjJhZGI3ZWJkYjU0ZjI3OTBiMGQwNzI0MTRiMTg2Yzk4OTMyMDEyOCBsZWdhY3ktdHJ1bmsKKzcwODc3IDExMjY2OWRmZjA0YWJhZjM1MWYyNTIyNWIwZjJjNTE3NjNmMDQxOWYgbGVnYWN5LXRydW5rCis3MDg3OCBhYjliN2Q1ZGI5MzU4ZmIzZGRiN2E2ZGZiMmE2ZDRkMGFjZjM1NTgyIGxlZ2FjeS10cnVuaworNzA4NzkgM2FlYTc1YTM0MzM3M2ZkOTY5MDJlZTc2NzM0YWUzMjZkZTBlNjM0OCBsZWdhY3ktdHJ1bmsKKzcwODgwIDBjMTdmN2JlZTJhMDY5MGRlNjVkODlkOTk0OWVhNWFjZGFjNjJiMmIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg4MSBkOWM4ZDFhNWRkZWUyMzU1ODk1NzU5ZTcyMTJhMGViMTc1ZTNkZDgwIHJlbGVhc2UyNi1tYWludAorNzA4ODIgOWY4ZDZkZTg5MDM1MjFhYjY5MmQxNGZhZDA0MTBiNTdkZGRmMzE4ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODgzIGI1YWE4YWE3OGMwZjFjMTE0MzA2NDcwNjQyOGMxYmViNTBkNWQ1OWQgbGVnYWN5LXRydW5rCis3MDg4NCBhNTMwMWVkYWE3MDRjYjMwY2I2NjIzNjZkNmJlMzc1ZWFkMDlhODg3IHB5M2sKKzcwODg1IDFkN2E3NzJiM2IxODM3YmU5MGJkMDczZDExMWJjMjAxM2M4ZjA2ZDUgbGVnYWN5LXRydW5rCis3MDg4NiAyYjljOTE2Njg3Nzc0ZjZhMzNlNzZlYjJlYWZjYzExNjVmY2E5NTE5IGxlZ2FjeS10cnVuaworNzA4ODcgMDliNzBkNTg4OGJmYjRhMjE1MGUzNmM4YmU0ZGU5MDU0NWFlMTFmZiByZWxlYXNlMzAtbWFpbnQKKzcwODg4IGVmYWE2N2JiM2YwNmZhOGU0MTZhNjNjZjU1NzdiMjlhODNjMjcwYjMgbGVnYWN5LXRydW5rCis3MDg4OSBjYjA5NjkwNzFmMmFkOTRjOWY1ODQ3YzcwMDkwN2NhZmYyNzU2ZDcwIGxlZ2FjeS10cnVuaworNzA4OTAgOTYwOWVkN2RlYWY4OTA1MzA3MThhMGVhN2FiZGMwMTZmYjY3MTFmZSBsZWdhY3ktdHJ1bmsKKzcwODkxIDA3YzVjMGQ5ZTcwMDBhY2QxZmU0MTk4ODRjYmUyNDFjNmEzZGEzNzIgbGVnYWN5LXRydW5rCis3MDg5MiAyMWIyN2UxMTVkZDI1MDBiNjM2YzRjOGNlNDI2MjFjOTViNmQ3Zjg5IGxlZ2FjeS10cnVuaworNzA4OTMgZmJkNDA1NDgxMzBkZTdjYjYwYzI2MjAyOTNlMWExZjkxZTRiMDdkNCBsZWdhY3ktdHJ1bmsKKzcwODk0IDU3NDQ0NjhlNjA5YmRiZjU4ZGYxNjY2MmYxNGI5NDYwNjIzMGQyYjYgbGVnYWN5LXRydW5rCis3MDg5NSA4MGZmODVkODdmNjc1YmRjYTZjYjg5NWUzMTEyMTZhNTEyNTg5MWNlIHJlbGVhc2UyNi1tYWludAorNzA4OTYgZjZkOWMyMDg5MTcwNzQxNzIyYWNjOWIzNjdlOTM3MWNjNGUyNzRiYyBsZWdhY3ktdHJ1bmsKKzcwODk3IDU4N2ZjZmJlMDhiNjM4OTg3YTlhMGZhZjhlNDA3MDlmMWQwMDM1MmMgbGVnYWN5LXRydW5rCis3MDg5OCA2NjQwOTk2ZjA0ZTc0NzFiZjRkNjdmOGU5YzdmMmRiMDZjZDVlMWQzIHB5M2sKKzcwODk5IDNiZjlhZTQzNzYwNmM0YTJjNmIzMmNhNmU5OTNmMzcwNDdlZWI2NjMgcmVsZWFzZTMwLW1haW50Cis3MDkwMCAyMWJhMGIzZmU4MTlmZDZjMzdlNzgyMTI2OTgwYTQ0M2M4ZTMzYTBhIHJlbGVhc2UyNi1tYWludAorNzA5MDEgMGQwODNmYjA2NjVkZjk3YjAzMjExYzQ0OGE2OTk2Yjk0N2RhMTVmYSBsZWdhY3ktdHJ1bmsKKzcwOTAyIGZhOTI0M2JmNTI1Njg2NjIyYjNkNjI5NjEyMWJlYmJmMWM1MDJjYjIgbGVnYWN5LXRydW5rCis3MDkwMyBlNTI4NmJlMjRlZDUxMDZhY2M4NGEzNWY2NmVkNjllNjRkODgwNmRkIGxlZ2FjeS10cnVuaworNzA5MDQgN2RmMjQ0MTEwZGQ1ZmExNzk1ZThiM2FhNjg3YTEyZDdhMjU1Y2ZjZiBsZWdhY3ktdHJ1bmsKKzcwOTA1IGI2NTc5NzhkNTZhZDZlMjEzYzc4YzQ3Mzg0Yzk5ZWM0MWUwMmZkMWQgbGVnYWN5LXRydW5rCis3MDkwNiA1ZjNmZTFmMjZiMzZkMDlkOGYwZDM4MzYxZjc2Y2U4OTZkMjQ0NGQzIGxlZ2FjeS10cnVuaworNzA5MDcgMTgzOWI4NTUzYTJkYmRjYWU5ZWFlYjgwOWMxNGUwOGU5YTUwNmFjMiBsZWdhY3ktdHJ1bmsKKzcwOTA4IDVjZjc0MTM3YzBmODYwOGNkYTk4ODRiMzE0MjQ5OTBhYjAyNzQ1NDQgbGVnYWN5LXRydW5rCis3MDkwOSBlMjgxOGI5Zjk2NGJlODJhOGU2NTc2NmVjZTM1ODBlMzU3MDQ1YTZmIHJlbGVhc2UyNi1tYWludAorNzA5MTAgNTg1NmZhZTAwOWU4NmQ1NjNjYTM1MTBiZjQ1YWVlNjFlOTQyMTBlNCBsZWdhY3ktdHJ1bmsKKzcwOTExIDFlMDUzNDMxOWEzZWU3ZTY3NTE0ZjRkYjhkNzUzODUwYzAxYzc3OGEgcmVsZWFzZTI2LW1haW50Cis3MDkxMiA5Yjk2YmQwOTA5MDhhNjc5MzhiMTc1N2FiMmVmNTlhZWFiZTM0ZWZiIGxlZ2FjeS10cnVuaworNzA5MTMgMTExMzUyMTEyYWZhOGVmMmI4YjgyMmNhNzYzYzFjNjAwODhjNmZjYiBweTNrCis3MDkxNCBmN2IxMWJmMDFhMTI2NGQyMjIzNjcyMTg5YmJkYTUxYjY5MzAyZmUxIHB5M2sKKzcwOTE1IDY5NjQ2ZjljZDcwYjUxMTg1Zjc1MmY3M2NhNWNiYWQ4NGZlZTYyOTggbGVnYWN5LXRydW5rCis3MDkxNiBmYTNiMmVkMjBkODU3MjhmMjNjZDA3MWNjMWMyYmY4OWY3ZmVkYzZlIHJlbGVhc2UzMC1tYWludAorNzA5MTcgOTE0YTVkZWQxYmUzYzlmNmY2MGVmYjY4N2VmYjBjYzA1ZWZlYmQyNyBweTNrCis3MDkxOCBmZmExM2FmZjI5ZGIxZGMwMDc2M2Q4YzYwMjc4OWE0ZDI5MjVmOWRhIGxlZ2FjeS10cnVuaworNzA5MTkgODg0M2E4NDI3YThjODJhZjExODY5Yjc1ZWE1ZjdjZjgxNjAwMzc0OSByZWxlYXNlMzAtbWFpbnQKKzcwOTIwIDgyYWRlZGZkMjMyNGY0YjM5MGQ5NTNiMmU5NzQ0ZjlhOGY0ZWZkZDUgbGVnYWN5LXRydW5rCis3MDkyMSBmNzU4ZGQyYTg5Njg5YmMyMDA2NGFjYmE2NzdjM2EwNjBhM2QwMWUzIHB5M2sKKzcwOTIyIDk4MWE5YjNkOTdmM2FmZTJkNzJhZjY4OWE5MGE2M2VlNmM1YzdlMjkgbGVnYWN5LXRydW5rCis3MDkyMyBkM2Y1YTlmMDQxZDg0MGNmZjE0ODE0ZDVlNTIxZTNjOTU5ZDVjMWQ3IHJlbGVhc2UyNi1tYWludAorNzA5MjQgMzBkODc0YjFjNGE3MjM0M2VmNjQ3OGViYTExNmZjMTRkMDkyNDhkMyBweTNrCis3MDkyNSAwMDJmYTkyMDVhYWUxYWJkODQzNWQxM2YyYTQ3M2ZiN2E4MjgyMTE5IHB5M2sKKzcwOTI2IDdhNzdlNGJlYWU2NjVkODA3MzNiYmE3MjNkZGU1NWI4NWE3YWJhNDIgcmVsZWFzZTMwLW1haW50Cis3MDkyNyA3NjU1MTQyZjUyMjQxNGFiOTI5ZTkxZDM5YzI1MDZkZmQ4MTVkNzRjIGxlZ2FjeS10cnVuaworNzA5MjggYjQwMjZhYzc4MTE0NjUzNTc1MmFhOGY3OTczYzQwYjE0N2Q5YTI2YSBweTNrCis3MDkyOSBmODQzNDA4ODY5MzZjYjJlODVjY2Y5ZjRmZTZiMmQ1YTg4MGVlZTcwIHB5M2sKKzcwOTMwIDU3MDQ0YTM2NTJkOGI0MmUwODJlYTlhMGJmNTE0MzBlYTI1OWMyYWUgbGVnYWN5LXRydW5rCis3MDkzMSAxODRjYTYyOTMyMThmOTZmNDJhNjcyOTE0OTY3MDMxNGJhMDE4YTkyIGxlZ2FjeS10cnVuaworNzA5MzIgMDRkNDE4OGZiNDExNjA1ZTk1YmE0MGVmZWExMWNjZDg0NTRkZDYzNSBweTNrCis3MDkzMyAxYWMxMTkzYTYxZDJmNWY3ZDI4NGFlOWMwMDk5ODFjNDgzZDc1MDZlIGxlZ2FjeS10cnVuaworNzA5MzQgZTU1NWZkOGM0YjZlZTc5ZWYwMzQyYTE2NjU1NTdjZTA0MzdiZDRjYiBsZWdhY3ktdHJ1bmsKKzcwOTM1IGQ4NTA5MGE0ODBiYTRhYjBiYTRhZmE0NWNjNWRmYmJjM2UwYzdiZGUgcHkzaworNzA5MzYgNTEzZDk2YmYwZDcwMzUyNmQyMWM1MjYxYjRmMjQyMDA1NWFjMjYyMyBsZWdhY3ktdHJ1bmsKKzcwOTM3IDFiYTY1YTkxZTU2YmU5Y2JmYjE2NGY0NmM3MzkzMWZhN2NkOGQzMWIgcHkzaworNzA5MzggNzlhNDIwNjE3NjQxM2NkYWY4ZGMxYTMxZjI1NWZmN2NmZmM5YmRjMyBweTNrCis3MDkzOSBjYzJjNzEzM2RhNGY1ZjQ3NjJiODJiNTY1YWIzOGJkN2MyODZmZDQ0IGxlZ2FjeS10cnVuaworNzA5NDAgNzYyMzU1ODBhYTNkNDdjMDQ0YjdjOWMyM2ZlN2Y0NzU4Mzg3NDhlMSBsZWdhY3ktdHJ1bmsKKzcwOTQxIGZmYTgxYmQyZWM3MmQ2N2RjNjMxMzk1NTdkNWNjNTkwNTczY2M4MDYgcHkzaworNzA5NDIgYWNmYzE4Y2RjZGZiNzcyYmU0NmZkN2M3NjdhZWM3MmI4OTQyYTRmZSBweTNrCis3MDk0MyAwODJiMjUwZDVlZTUwZmRiOTE0ZTk5MTk0ZDcxN2QzMWIwZTk5NTFlIHB5M2sKKzcwOTQ0IGZhN2MzNzY1ZDEwZmY0YzNlZmNhOTFhYjIxZjdiOGQwYTBmZTk0NWEgbGVnYWN5LXRydW5rCis3MDk0NSAwNTMwYWFkZmY2OTZkMWI2NmM2NjdjYmQxOWIxMGQyY2MyNTkwZWM1IHB5M2sKKzcwOTQ4IDczNDdkOTE2ZjEzYWU0Y2UxOTIzNDY0MWNmMWNjNGQ1MzNkNTE0MmIgcHkzaworNzA5NTAgZGE3NDQ4ZWJjZThiMTE4NjU3NzgyOGIyMTQ1OWZhY2Y0NGU1OWEyNSByZWxlYXNlMjYtbWFpbnQKKzcwOTUxIGRjNTNmMzcwY2E5ZDc0NzUzYTk1MDA1NTdlOGRjM2JlMDJmNWViYzUgbGVnYWN5LXRydW5rCis3MDk1MiAxOTE5MGUwNThkNTk0MzA1ZjA5MTQ0MGRjZjQ3YjEzZTU5YzFmZGU2IHB5M2sKKzcwOTUzIDk3ZmQwZDc2YWU5Y2U3YjFmNTRlYmM4ZWM0ODZmNzc2N2U4YzI1MTMgbGVnYWN5LXRydW5rCis3MDk1NCAwMjdhM2FkYzBkOGY1NjIwMDBmMjQ2YTA3NGJjYzE4ZDZjMTM4YjNlIGxlZ2FjeS10cnVuaworNzA5NTUgYWJmNmRhZDdkNjRmZTI4Mzg1MjdhMGY0NjI4Zjg3NGZlOWU4MjdhZCBweTNrCis3MDk1NiA3NmQ2MWMxMjYyM2NmOTFlNzg1NWQ2YzA3YWNjZTFjZDFjMjc4MzA3IGxlZ2FjeS10cnVuaworNzA5NTcgNDZmMWNlNzYxOTllYjQ1MTk5ZmRlMTM0ODkxMjY1MDI1Y2FjYjc2MiBweTNrCis3MDk1OCBkZjVjYjM4MzZiMjgyYWViMmUyYWUzNjExMWRiZjhlNGNkZTlkYjczIGxlZ2FjeS10cnVuaworNzA5NTkgY2UwZTI4ZGNjYmMyMjhhYmI5ZThhMTc0NjI2MDZmM2E3N2JlNjIxNyBweTNrCis3MDk2MCA4YjUxZDk2MzYwYjAzYzVjNjUyMWI1MGJlMGRjOWNhNDk0YTdkNWE4IGxlZ2FjeS10cnVuaworNzA5NjEgYzNmMDdiNjc3YWZhNjc0OTM2ZDFlYTM0OGE2OTExMWIxYzA2ZGQxOCByZWxlYXNlMjYtbWFpbnQKKzcwOTYyIGU5ZmM1MjJhYWU5YTczOWM1MzczMWMyMmJiOWJkZGQzZTAzYmIzZmIgbGVnYWN5LXRydW5rCis3MDk2MyAzNDU2NjcxYTcyYmMxNjZiNTExODIzM2U3MDA2NDE2ZThhMGE5M2MwIGxlZ2FjeS10cnVuaworNzA5NjQgMThiZDNjZjUyODdmZjAwODlkZGM3NmE5OGNkNDI4NTdhMmUwNTQ4MSBsZWdhY3ktdHJ1bmsKKzcwOTY1IGI1ZDIzZmE5YjhhNDg0N2YyMzliN2FiNDljZTE2MzQ5ZTc0MTA3ZmEgbGVnYWN5LXRydW5rCis3MDk2NiAyODdkZjNhMDlmMzUzMGUzNTViN2M2ZTcyZDU0NTEzYWQ3ZDdkZTMxIHB5M2sKKzcwOTY4IGU4ZWYxM2M5ODU5NzA5YzVkNWI2MzI3M2JlODI2OWMzYTBkN2MzYTEgbGVnYWN5LXRydW5rCis3MDk2OSAyZTRkYmIzOTU0MTdjYjZkNDAzZDQ1ZWI3ZWU0ODA0MmZhN2IxYjczIGxlZ2FjeS10cnVuaworNzA5NzAgYzMzN2YyMDI4ZDhjNzdlMDc2ZWU3MGY1MjU5YTQxYTAzZWNjNDQ1YSByZWxlYXNlMjYtbWFpbnQKKzcwOTcxIDE2YzE0NDI2MjM3NDYyMjJiMDMwZmE4YmEwNmFkY2Q2YTNiNmUxZDQgcmVsZWFzZTI2LW1haW50Cis3MDk3MyBjZTNiNWNhZjQ1MjJjOGExOTgwMmFmMWUxZGY1MTZiZTc4ZDY4OWIwIHJlbGVhc2UzMC1tYWludAorNzA5NzQgOGRmZjQwNjQwM2JlMmZmN2U0MGJjNjJjZTdjYjJlNTU2ZDc0NWYxMiBweTNrCis3MDk3NSBiODE0YjBjMzUzNDcxY2ZiNGI3NDcyMDgzMmE0NWZlNTZhZjMwYjljIGxlZ2FjeS10cnVuaworNzA5NzYgMmQ5NWMwMTQxMjE0Zjg0ZTQ4NWIwMmM4ZWNmYzRlZjlhNmY3OTBiMCBweTNrCis3MDk3OCBjZWY4YjgyNTlhYzk4ZWI5NzlmZjBjYmEyMTYxNTY0Y2Q0OTEwMTY2IHB5M2sKKzcwOTc5IDdlMmJiYjRkYmY4NzU5ZTE1NDFkNzVjM2I0MDM4OGE4MjUxMzgzNjMgbGVnYWN5LXRydW5rCis3MDk4MCBhNzMzNzNjY2NjYzIxZTBkZjI1M2FlZWRjMzU0MTNkMjg3MzU5ZDFiIGxlZ2FjeS10cnVuaworNzA5ODEgNDJkYTcxNTRiMjcwYmJkOTc5MjliMzFkYWE5NzQzNzRkZDNiN2UwZCBsZWdhY3ktdHJ1bmsKKzcwOTgyIDY3NTQxNWM1YjkxMjU3OTM4ZGFlMGVlMmNhYzY5Yzc4YjNhNGEyMGYgcHkzaworNzA5ODMgNmI2YWM2YWM1NTY2YTg0NTc0YzU4Mjc2MzUwZDkyYzVhZGYxYjQ3NiBweTNrCis3MDk4NCBkN2Y0NzhjNjgxYjllMzA1ZThmZmEzMjhkZjY4YTg0ZDZhYzBjMDk0IHB5M2sKKzcwOTg1IGY4YWE4ZDNkNjYwNzhlOWJhMDAwYjkzYTNhZWJiYTg5NzU5MzdmM2YgcmVsZWFzZTI2LW1haW50Cis3MDk4NiBlOWU4N2QxYTM4OWM1M2QwYmI3NTE4YWM5NzQyMzdjOGEwOWRmMGRlIGxlZ2FjeS10cnVuaworNzA5ODcgZjE1ZTdhOTMxMzM0ZDUwMGU1N2NkNTM0ODJkMWUwMWIxMDU3MDJmNyBweTNrCis3MDk4OCBhZmZjZjA3MDU0MzlhNWI2ZDZiYmIzMjQ5NzlmYTc3NjM4YWZiY2ExIHB5M2sKKzcwOTg5IGY5NDI4OTNmYTRkOGQ5MmI2NGI2ZTFmYTg3NjcxNTZjNDRiM2QzOWUgcmVsZWFzZTI2LW1haW50Cis3MDk5MCBkYTJjNmRkMjZlODhkYWQwMjI0NWNhYjYyMTcwOTRkOTc1ZWU0ZDRiIHJlbGVhc2UzMC1tYWludAorNzA5OTIgOWU1NzliYWI3NmYxYzU3MmE1MjA2MWFhZTcwZTIwNDZhNzUyY2RhMiBsZWdhY3ktdHJ1bmsKKzcwOTkzIDUxMDJiYmY0YWI3NDk1YzU5MThiMjczZjFjZmEwMWRhNGI2NmViZjAgbGVnYWN5LXRydW5rCis3MDk5NCA5ODU2YjViZTI2YzRjYWJkOTFjM2ExN2VmZTNlYmMyODBjMGE2NzU0IGxlZ2FjeS10cnVuaworNzA5OTUgM2IzNGM5Mzc0OTU1MmIwMzIzMzEwZjVlMWRhM2E3NzVmNGU5YWUyYSBsZWdhY3ktdHJ1bmsKKzcwOTk2IDllZDlkMjA0MTMwNjY1NDQxYzhmZWUzYTdmNGUwYWFhMGE0MDI1OTUgcHkzaworNzA5OTcgODNmOWUzZDEwZWRjNDg4ZmM3OGUxMWVkNjEyMjM1ZWY4MWU5ZTc3YyBsZWdhY3ktdHJ1bmsKKzcwOTk4IGUzYTE5NjlmZGJlNWUwYWZlOTkwYmE4NDE0MGFjNGY2NGEzNzAzODYgbGVnYWN5LXRydW5rCis3MTAwMCAxZTFkYWRiYmRkMDFiOTc5MzkyNDYzN2M0ZDJiYjM4ZmE5NjllNTNhIHB5M2sKKzcxMDAxIGNmNzNmYjVjYzNhYzlkODNiZWNkYTRjZmUzOWIyZDM3ZWIyZTczMmQgbGVnYWN5LXRydW5rCis3MTAwMiBiNDNmMTRjMTAzYmJjM2FhZDE4MzMzMzVkMWFhYTI3NDc2YzRhMWUzIHB5M2sKKzcxMDA0IDJkZmMzMzcxNzQ5MzhmODU1YjViMzA4NTQ1YzM3NjFmM2FjYTc3MWIgbGVnYWN5LXRydW5rCis3MTAwNSA3NTViYjFmOWIwZTU4NmZmZjE0NzU4MTBmMTNhZjc1NGZkNDk4Nzk0IHB5M2sKKzcxMDA2IDFiOGQ2OGRhZTU3MjEyNTUzMzM5ZDVmOTc4ZTNkNGQzOGJkOTJjNDEgbGVnYWN5LXRydW5rCis3MTAwNyBlYjYyMjE3YmJiNTM3MzdiZTc0YzcwYWI3MzEzYjIzYzE4ZDBhN2Q3IHB5M2sKKzcxMDA4IDg1MDNhM2QwMjU0ZDhmNjQ3MGJlYTM3MjA0MGJmZmM4OWRlOThkZWUgbGVnYWN5LXRydW5rCis3MTAwOSBkMzQzZTgwMmIyNzYwYWE3MDBjZjJmZjdmMTdjYWMzNmNlNTQwNDc3IGxlZ2FjeS10cnVuaworNzEwMTAgMDgwZmRmYzQzZjk0MTg2ODY0N2QzOTI3MGQwMTA5NjUwZDRiYmE0OCBsZWdhY3ktdHJ1bmsKKzcxMDExIDM2ZjI1YmZiM2ExYmNjZGQ0NDNkNzI4ZjMyYTU3NTdmYTc3YmYwZTIgbGVnYWN5LXRydW5rCis3MTAxMiBjNWE3ZWJlYzU5ODQ3YWZkNTZkNDY5YjQ2NzJmZTQ2NzU0NjM1ZDllIHB5M2sKKzcxMDEzIGE3M2Q3MzI2MzExZGQ4Yzk1MDcxNTY2YmFhMTM1NjA1ODgwODRlMDMgcHkzaworNzEwMTQgZjM5MDQ2NDYzOWZiZTg1ODAxMWIwYzY2MGIzYjYwNzU0MGQxMzk2NiBsZWdhY3ktdHJ1bmsKKzcxMDE1IDQ3NWJhNDNjY2NiMWU1MjJkM2I5NTU2OGYxNDE1OTA3MzdjOWI0ZGYgcHkzaworNzEwMTYgYzAxMzhiMmQ0ZWVkYzk5MDUwMGJiYmZlMWNmZTRkNTRkY2E4NTFlOCBweTNrCis3MTAxNyA5MjZmZDIxN2UyZGNhMTI1MzEwNGEwMTZlMDUxODliNTk2YjRlYjU5IHB5M2sKKzcxMDE4IDMzZWIxNjk3YzM4MmRlODU4M2E5YmVmZjYxMGQzY2I1NTFiOGE5ZjEgcHkzaworNzEwMTkgMzVjM2UxZDdjZmRmNjE0NzE3MzExOGM0NDBhZjViODJkYzZhOWUyYyBsZWdhY3ktdHJ1bmsKKzcxMDIwIGJjMTViNDgzZDM4NDZkYTBkOWVhMzA2Yjc0YjdiYzFkOGQ4ZTg5N2QgcHkzaworNzEwMjEgYTBlMjExYjA0YjJlMGM4NGQwMjU0NmMxZDU5NDUxY2MxZjJkYTRhYSBweTNrCis3MTAyMiAxMDg2ZDdlZThiMGIzZmVmZDcwNzhlMjVkMzVmOWJhYTIxNGM5ZDc4IGxlZ2FjeS10cnVuaworNzEwMjMgYjk4NDQ1NjE5NmFmMjY5ZDEzZjVhOTQ3ZTM4MjhiNGYwMjg3NWZmMiBsZWdhY3ktdHJ1bmsKKzcxMDI0IDdlODZmYTI1NWZjMjI1Y2Q3MjBiMTZmOGFiNjJlZDI0YjIyMDJiYzIgbGVnYWN5LXRydW5rCis3MTAyNSA5MDY5MGViODUzODBiZDNiOGMyMTMwNGY4MGJjMzYyNDkzNTVkZTI5IHJlbGVhc2UzMC1tYWludAorNzEwMjYgZjYzNGM1NDU1YjRmM2FiNTA1MWIyNjNkNTYzMjJlYzBlMzJlMjA5YSBsZWdhY3ktdHJ1bmsKKzcxMDI3IDNlMWE4MDUyNWYxOGEwMTExZWE4MTY0YzU2M2Q0NTcyYWMzNzZjZmMgcHkzaworNzEwMjggOTUzNTUzYWU4Yjg0ZmYwZWY5ODNkOGMyMGZiZDAyYWM4OTFlOGE2YyByZWxlYXNlMjYtbWFpbnQKKzcxMDI5IGMzMzk1OTM5Mjk1M2IwMWFmZTYyMTkzM2NiOTlhZjFlZTA0ZjlkMGQgbGVnYWN5LXRydW5rCis3MTAzMCAzN2ZmZWFjM2ExYTY4ZDZmZjU3Yjc2ZDAzMTVhYTgwYTc4Yzc2NTk4IHB5M2sKKzcxMDMxIDFlZjNkYTZjNDM0Y2ZiMjI5N2IyZDJhYTI3MzBhNTk2OGRmZTc5MzggbGVnYWN5LXRydW5rCis3MTAzMiAxYjUwZjc4Y2RkY2JiODcxYTQzMjgyOTkzYjQzZTZiMzJiZmE0OWRhIGxlZ2FjeS10cnVuaworNzEwMzMgZmQ1ZWUzZDBmNTUyOGY2NTZkNjg2YTY5NjUxNDhhZjg5YmU5NzIyYSBsZWdhY3ktdHJ1bmsKKzcxMDM0IDU0ZTA5M2JkODg3ZWE3NGQzMDNhNWI3MTI2NTZjZWI2ZWU4N2U2ZDQgcHkzaworNzEwMzYgMjNhMmUxNTg0YzAyYWYyZWY0ZjkyMzNlOTdiNDUzOTdhMTUyMDA4ZiBsZWdhY3ktdHJ1bmsKKzcxMDM3IDhkODRmMjIwZmYyNzcwOGUwNzU3Yzk1ZDllOTUyNDA0MDc3NzQ4MzQgbGVnYWN5LXRydW5rCis3MTAzOCA1ZjE3OWY2ZjA3ZTBmZjgzNDg1NDgwODdhYWExYjBmZTU1MDVmZjc1IHB5M2sKKzcxMDM5IGZjYmUxYWQyNGQ0MTBlZDdkODMxZGU0OGRkOWJmMjBkZWM1ZjhmMjcgcmVsZWFzZTI2LW1haW50Cis3MTA0MCAwYmM2MmQ3ZGJmNTQ5MmY0MjA0ZDY2MmU2MGMwZDBjNjZhNGQ2MjQ2IHJlbGVhc2UzMC1tYWludAorNzEwNDEgNzFmNjEyOWRkYWQ0NjZmOTYzZGE4YzBkNDI5ZTMwODYwYWUyNmE0MiBsZWdhY3ktdHJ1bmsKKzcxMDQyIDUzOTE2YWFjY2YyY2MyM2M4NjU3NDkyMDFiMmIwOTEzNjVhODVjYmUgcHkzaworNzEwNDMgMWFiZjllMzBjMTlmOWYyMmVlMjhmZTIxZWI1MzVjNTNhNGMyM2M0ZSBsZWdhY3ktdHJ1bmsKKzcxMDQ1IGFjZGQxMWUzOWYwYjAyMjU3NDFhZTAyZmQyNDFhNGQ5YjlkNmYwNDkgcHkzaworNzEwNDYgYzU4OTQ4M2E3MmFjYTU1NGNkYWU5Y2YyNTQ5OWNjMjAyYjRlNTBjZCBsZWdhY3ktdHJ1bmsKKzcxMDQ3IDM1ODBkM2MwNzJhZTUwMzJiMTNhZGEzODRlNjlhOWRiYWZmMzUyMzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA0OCBhMzNiYzgxODNlNGMxNzY4MjY5YjU0YTI1ZTVlNjYzOTE0OTZjZjI5IHJlbGVhc2UyNi1tYWludAorNzEwNDkgMmUyMjM4Njg4MzJhODFmZmY5ZjczYjBkMzFlNDNlMWU4MGUyNmU3ZiByZWxlYXNlMjYtbWFpbnQKKzcxMDUzIDc1OWY0M2M5Nzg4NzhhZjkxNTA3NTZiODZlMjRkM2FhYjNmODhiODggcHkzaworNzEwNTQgOTQ4OWE5ZTdhZmQ0MzgzMjY0NGI2NTExNDA1NjhhYjAzNjM2MDYzYiBweTNrCis3MTA1NiBjODAxYTY3Y2UyOTJlNmNiYjg0Yjg2ODhhOGFjZTZhOWRkZDJjMzNkIGxlZ2FjeS10cnVuaworNzEwNTcgZjgxNDI0OTcyYWQxMTg3N2NkMTJjNzQ3MTUwZDUzNzgyZGRlODNjYSBweTNrCis3MTA1OCA1NGIyY2QyMWFiNDZjZTRlZGIxYjY3OWE1MmZiYWYyYjMzNGZiYjQzIGxlZ2FjeS10cnVuaworNzEwNTkgN2ZhMGY4MWQ2MDdlNzFhZTZmZjJiOTkwZjgwMmU2ZDdhMzVjZmYwZiBsZWdhY3ktdHJ1bmsKKzcxMDYwIGNkZDU0NzE0NzU2NjdmYzA5ODVjZTM1MjljMTBjNThhNzRjYTBhNjMgcmVsZWFzZTI2LW1haW50Cis3MTA2MSBkMWM1MzY3ZDU3ZDY1NTYxOGMwMTAxZTJjZGVkNTBlOWIzMmM1N2I0IHB5M2sKKzcxMDYyIGUwMmM1YjRlNGU5MmVkYzkwYTAzNjFmOTI4NDBiNDFiZTI2NjMxYTYgcmVsZWFzZTMwLW1haW50Cis3MTA2MyA5OGMzNDQ5ZGEzNjkzYmQyZmJlMjJjYmFkZWNhZWE5YTRhNzI5NmE3IHB5M2sKKzcxMDY0IDFiNDgzOTExYjJlNjY4ZTA0MGMzMzQxNGNmOWMxM2U4NGEzMmE5YTMgcHkzaworNzEwNjUgYmVkNTI0ZWMwODUwY2ViNmQ0NzdmYzgxYjI3ZjcxMjM3YmYxOGRjOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDY2IDY2NDY0ZGIzODJiMTRkNWJjMDQ2ZDEwZjhlMzQ3ZDQ0ZTdmNzJmYTEgcHkzaworNzEwNjcgOWI1MzVjZTk5ZDJkYWE3YmQyMWEzYTliNTMwMTJkYjRkMzExN2M4ZCBweTNrCis3MTA2OCBkMjhlYTJlZTcwNzBkMzYwNTA1MDU4MDEzMThjOTk5ZDhlYzE5MTJiIHJlbGVhc2UzMC1tYWludAorNzEwNjkgNjcyZmQ3YTQxZDM1ZjJiZDhhOGYxYTE4MmJiZWM4ZTA2YjQzZmExMCByZWxlYXNlMzAtbWFpbnQKKzcxMDcwIDc1ZWZkNzU3NDM0Yjg1Zjg1YzVlN2YyMjVmZTBjZjFhYzM3YWJmNjMgbGVnYWN5LXRydW5rCis3MTA3MSBiM2Q1ZjY4NWQyN2FjY2E1ZWE2Njk4NDIyOTkyMTc2NzlhNDYwNjExIHB5M2sKKzcxMDcyIGNiZTE5MTMwYjJlYjYzMTEzNjY2ZTg3YjY1NDY1NTllMTQzODFkZTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA3MyAyMGU3YWE0MmQ2ZmU0ZDk4MTczYzE5NzM1YzIyNTQ5OWFkNmNkNWIyIGxlZ2FjeS10cnVuaworNzEwNzQgZjEzZWU4YWM2ZDU0NTI3NzUxZDI4MWIzOThhMWI1OTg1ZGM0MTdlOCBweTNrCis3MTA3NSBmM2M0ZmYyMTRiMTFlYzZmMTIzOWNmYjZkMDE1NTQwYmMwOWRmOGNjIGxlZ2FjeS10cnVuaworNzEwNzYgNWMzN2FiMDdhN2RjMzQxOTg4MjZlY2ZmMzVhNzRhZTkzODQwZGYyMyBweTNrCis3MTA3NyA5YmUyZTE2YTcxZGY1YjY1NTg0MzQ0ZmIxMWExMmM1YzE4NjhkZDI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNzggMzliZTlhYzg5YmU5OGZmY2MyOWY4ZTJiZWJjMWQ0YTUxNTRkNmNlNiBsZWdhY3ktdHJ1bmsKKzcxMDc5IGY2MjAyYjNlZjhlYTk4ZTRlMGJlMmJiYWZlYmYxNDNkODM5MDRkNWQgcHkzaworNzEwODAgMTgzZDYwNzJlMWU1ZGY5M2Y4Y2ZmMzkwYjFmODQ3YjNkNjlhMDhhNiByZWxlYXNlMjYtbWFpbnQKKzcxMDgxIDFiZjY3MTIxN2FiZjNjZjc5ZjdlZWJhMmMxNjJiZTRlYzU4YzgzNjUgcmVsZWFzZTMwLW1haW50Cis3MTA4MiBkY2IzNjhmYjZhZGJmYWU1YWU4YzljMzMxOGEyNmRlNWU1Y2YyOWJkIGxlZ2FjeS10cnVuaworNzEwODMgOTg2ODZmMzA3ZGU0MjZjNjA5ZmNkZTBkOTE4ZjMzMzE1MmRiMzZkMiByZWxlYXNlMjYtbWFpbnQKKzcxMDg0IGNiZmJmZjIzM2VmNWMxN2NmNmRlYTllNDhiMTRiZGNjNjlmNDU1ODAgcHkzaworNzEwODUgMmEyN2Y5YWRhOGUzM2U0Nzk0ODExZjFjNzI3NDM5NjZhMjgyNDA4OCByZWxlYXNlMjYtbWFpbnQKKzcxMDg2IGNhYzIwOWNmNWU0Y2M3MzkwMjMzOWU4NzAzMTdjNTlmOTU1ODIwOTUgcmVsZWFzZTMwLW1haW50Cis3MTA4NyBhZTQ4MmU1MmExNmJjMDg5ZTkxNWVlYzBiMGIzMTk0ZDVmYjNjNGNmIHB5M2sKKzcxMDg4IDRlNWZlOGI2ZDEwMWM4ZjM2MWQ2NGI3MDE4ZDE1ZDZkMDdmNzFkMWEgcHkzaworNzEwODkgYjQxYzI5ZGViZGY2OWE3OTA5MjZjZDI5OWMzMDc1NjNmYTUyMzNkZCBweTNrCis3MTA5MCA2OTY2MmJjM2E5ZjZiNmQzMjA4NzFiZTljOTA2ZmY2NDNlMmJmNWI4IHB5M2sKKzcxMDkxIDY0M2Y0NGFkMzg3ZmI0NjQzMGIwNjVhZmE4NjY1ZTY5NjBlZTI2MDEgcHkzaworNzEwOTIgOGEyNmY5NjIwYjIxMThkN2JiMjQyZTAwZTEwODc1NTc3OWJmYzdhYiBweTNrCis3MTA5MyA0NzU3ZGRhYTg5N2RlYzkzZjJmNWEzZDFiODk5ZGQxN2MyMDU0MTBmIHB5M2sKKzcxMDk0IDY4OTQzNDQ1NGNiOGU1MzEyODhjNTJlODgzOGFlNGQ0YmVhYmVlNjUgbGVnYWN5LXRydW5rCis3MTA5NSBhOTgwOTEwNjZlMDFiMjA2Mzg4MTQ3ZmM1ZmNlMDZlNDVjYjlhMDJlIHB5M2sKKzcxMDk2IDI4MDk2ZWQ3MzE1M2VkNjk2ODcwYmFkZWNiMGQ4MjllMGRkNzRjODYgcHkzaworNzEwOTcgYzJmOWUxMzU0MmFiMmFjMmY5NWQwZjBkYTY5YjM1MDFmZmI4N2YzMyByZWxlYXNlMzAtbWFpbnQKKzcxMTAxIDE1YzhlOWRkMTk5NjdmZDAxMTE3MTdmY2NjNjhmYTIyMzU1ZDM3MTcgbGVnYWN5LXRydW5rCis3MTEwMiA1ZjU1ODdmM2M0ZDU1YWJjMjNkMWVkYzZhMmU0ZjlkMDJlZWEwZTk5IGxlZ2FjeS10cnVuaworNzExMDMgNDQ5NTRlNmExMzUzMjNiNDQwMTcwMWY0Y2FmNGFkY2FhOTJhMTU0NiBsZWdhY3ktdHJ1bmsKKzcxMTA0IGZhYTM0NzNlNDUzNDQ4NGJjMjNmZGJlMDIxNjE5OTM5YjE3Y2E1YTcgcmVsZWFzZTI2LW1haW50Cis3MTEwNSBjM2M2YjczNzRiZGEyZWQ4ZDcxY2E5Y2YzMzJiODg0ZTc5ZGFkNWIyIHJlbGVhc2UyNi1tYWludAorNzExMDYgZDE5ZDg5MDEzOGYxZWNiMWY4NDkyY2YzNjljMDVhNWE3ZjEzODcyOSBsZWdhY3ktdHJ1bmsKKzcxMTA3IDJkZjE1MTdkODY4YzlhZjA3MGE4NTU1MjkyZTgyNDY1NTE5MGJiNjkgcHkzaworNzExMDggN2JmNjBkN2IwOWU5YTIwNjJkMjU1NjA4NzlhZGI3NWI1Yzg4Y2IzZSBweTNrCis3MTEwOSBiNGYxNTdmOGU0YTdiOThiNTAyOTVkZjUwYmZiNjk5YTI3YTBiZWU0IHB5M2sKKzcxMTEwIDFmZGI1NjU5ZWUwODk2ODJjMWRkNWZmZDM4NGNiM2QyYWFjNGM2NjIgcHkzaworNzExMTIgMDU1YjMwMjdkNTY4Yjk2Mzk0MTMyMTZjNzI2NjE4MDRkN2RiNmIyNCBweTNrCis3MTExMyA2Y2YxNmVhOGExNmRlNmI3MzQ3ZTNlYjVkN2I2NDFkZWU1ZDNmMDgwIHB5M2sKKzcxMTE0IGI0ZGVmZGQ3ZjQzMWI1MTY5YzA2NmQzNTk3NWRiMzUwY2VkMTNhZmUgcHkzaworNzExMTUgZmEyYWFjNDM0ZDA2MzY1NmM3N2U5YTUzYTE2NTcyOTYwNzcyMGFmOSBweTNrCis3MTExNiBmYjdiNzcyN2E3MzFhYzYwOWQ4MzRiZmQ0MjJmNTE1NWYyZDdiYTBhIHB5M2sKKzcxMTE3IDUxNzRjY2ZiMDFiODIxMzk1Mjk0ODdiMDZhMDY4NDkwMGRjMTljNmUgcmVsZWFzZTMwLW1haW50Cis3MTExOCA0OTI1MTk2YTJmZDhiZDUyMmMwZDA5NWI0MTFlNTdlMDM5MDY1YzRmIHB5M2sKKzcxMTE5IGYxMjFiZDk1NmFlMDUxMDlmMzVmN2JlMzNhMzhmYzI5NjY2ZjY1ZjkgbGVnYWN5LXRydW5rCis3MTEyMCA5MDQxOWUxYjQ2NTZiNThmYmQ2OWNkMjQ3Zjk1ODA1N2ZlMGNjYTA1IHJlbGVhc2UzMC1tYWludAorNzExMjEgOGI1M2I5NjliNjI4MWQ4MDE3YzQwOGQzYzYzOTYwZWFiMTZkNjA4MiByZWxlYXNlMjYtbWFpbnQKKzcxMTIyIDU0N2EyMzhhMmFjNDkyNTgxZDM5NTcwMzZmMzIzZGZmOTc5OTBjMjYgcHkzaworNzExMjMgMTQ2YThmZGRiYmEyNzc4Nzc5NDBmNWEzOTNkMTg2NzY2ZGRhYmM0OCBsZWdhY3ktdHJ1bmsKKzcxMTI0IGIzODdjYTdkMGZlNjJjZmVkYmE1NDhjMzQzOTUxOGIwZWY1NzliMjEgcmVsZWFzZTI2LW1haW50Cis3MTEyNSBhMWJlYjE2Y2YyMzY5NGQ4ZTJkMGY0YzNkMGRlZjQ4Y2Y3ZjAxMjdiIHB5M2sKKzcxMTI2IGJjMDg0YTk3MzE4YjkzMzQzNzFmM2ZjYzg4ODY5NThlNWFlOWUwNmYgbGVnYWN5LXRydW5rCis3MTEyNyA1ZjY2ZGVhZDExNzVhMDhkODRiY2RjYzc2YWM0YzEzZjdlOWQyNTYyIGxlZ2FjeS10cnVuaworNzExMjggYzRjYWNiYzliM2ZkMjQ0MjNmZTljNjY5OTczYjRjMjE4ZTc1OWM0OSBweTNrCis3MTEyOSBhODBlMmVhMzg5ZTMwYjNmMDc3MzMyYjJiYzRkMDdiY2QxZDRlMDE5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzAgNTQ0N2UxZjdkYmZmNGNiNjg2NTlkMGY4ZTI5ZjIwYTQzNGU2Nzg5MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMxIDI0NzRmYTljMzg1NTkzMjE2MmNhZjMyZjQzZTNkZjFkYzE0MWMwZTMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMiA3ZDg3ZTdjMDZiNTlkMDQ0MDlhY2FhMjA4N2FmOWU0MDIxZGFkZjAxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzMgNDhhMDJkNWY1ZDQyOGQyZGI5ZGJlMDg1Y2YxZGExMmYzZjQ1MTk2ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM0IDI0ZjFhOTg5MmQ0OWNiZTk1OTE3ZTc1YzE1NDlhMTc1MzU5MmU3NTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNSA0MjIyNDhlNmI3M2I5MGQzZjc1ZGI2NjM4NGQyOWYyOWU3NmJlMTFiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzYgODE3NWJjMDMxMzRlMzJiOGFiMDNkZjg0NzQ1ZjU4OWE0ZWQyYWM1MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM3IDY2MWJkNTU4MzYzMjEwYzFkZjM4ZWQwYjAzMzFhY2FmZDkxZThkYmQgcHkzaworNzExMzggZTI1NDJhN2Q0YWNmY2Y3NmZkNmQ1YTk0NjRlOGRjYTAzOTQ1OTZiZSBweTNrCis3MTEzOSBjOWU0OGUwMDhiYjUzNmE0NmE3Zjk2NDYxNjAwZmYyNTAxMzIyNjJjIHB5M2sKKzcxMTQwIDY4MzAwZGExMmRmZTBkYzhiZGExOWIwZGRiMDU2NmFlN2NkOWQyOTAgcHkzaworNzExNDEgOTQxNTAxNzUxOTY5MTJkYTc4MTRkZmFhMDYxNTQ2ZTAxOTUzZGVjZSBweTNrCis3MTE0MiA2MDE5ZmIxZGE5ZTExMzUwYjViOGY2OGI2NWM2ZWJjODc0YTlhMTBjIHB5M2sKKzcxMTQzIGNhOGNlYmE3MzcxNDdmY2RmMzBiMDI2NTY3NWM5OWVlNDNhMTRlMWIgcHkzaworNzExNDQgZDYzOGVjZGUzNTcyNTk0NGJkZTU3OTIzOTdiYjgyMTQ4OTFmNjc3OCBweTNrCis3MTE0NSA3NGNmMjBhNjFiZWNiNjcyNjBjM2EzOWZhMGFlMzdlYTVkYzIxMGM2IHJlbGVhc2UyNi1tYWludAorNzExNDYgNzE2YWNjZDRiNjAzZTkyNjQ4MzMwYzZmOWM0MWUwMzRmZjJhZTRlZiBweTNrCis3MTE0NyA5M2U5MjQwOWNiNDY4ZTk2ZDM5ZTg4YzVhYmRiNTAxOWJmN2ExYjBiIHB5M2sKKzcxMTQ4IGQzNmFmZDA1OGQ4YmI2Y2U1MGQ0MjU3ZmM4ZWZiMTczOTc2M2FhNTYgcHkzaworNzExNDkgZjY1ZjAxMTgzMzFjMjkxODA1NTc3MTA2MzUyZTNmNTNkNzgxNzZjZiBsZWdhY3ktdHJ1bmsKKzcxMTUwIGU3NDVjZWY4ZjQwNzViYzkzNzIzNzdmYzFmMWFjOWZlYmJlMmQyNGEgbGVnYWN5LXRydW5rCis3MTE1MSA2MWI1MTFkMDVlZTk0NzIyNDdjNjIzNDc1NWY5Mjk4ZjNmNmYxNmFjIHB5M2sKKzcxMTUyIDYzNDUwMmJlOGRjY2JkZTU0YTQ1N2U4YzkyNmU2NmUzNDQxODdmMDMgbGVnYWN5LXRydW5rCis3MTE1MyBjYjU4Yzk3Mzk4NWM5YzJlZDFiOWE1MDRkYTYxZjlmNGQwOWNjNTVjIHJlbGVhc2UyNi1tYWludAorNzExNTQgNzNhN2U2YWJhN2IyMTJmMGU5MTAzNWNmMWRlYjNiNTRmMzdmZjk2ZCBweTNrCis3MTE1NSAzNzM0NmRmMmI4ODRmZGVmMzc3NzQ0ZmU4NTY0NGMwZTdhY2JlNjgzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNTYgOGM3YzVhMzU4ZGI5NWU0MWVlMWYwYmE2NmJiMTU5YjNlY2M5ZTNjZSBweTNrCis3MTE1NyAxNzc4NDE4NWFkOTM1MjUxZmVmNjNkYzYyODZkMDUyN2Y0NWE0MDY3IHB5M2sKKzcxMTU4IGU2NTY4YjNjMmFlNzViNjc0NDU1MjEwOGYyN2M0MTQ4MDA1MjgwNDkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE1OSAyZjUyYTNkMTg1YTMwZDdmZjljZjJhYWUxZWM1ZjQwYjJiNDdmZGM3IGxlZ2FjeS10cnVuaworNzExNjAgM2VmOTc1NmZmZGFjZGEyMTU0Y2Y0MGUxNTY2MDI5NmQ2MjUxNDkzYiByZWxlYXNlMjYtbWFpbnQKKzcxMTYxIGJkNzRjNGVkMDNhNDZlZTEzNmY0NWE0ZTU5YWU0YjU5MjQzZjZhMDIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2MiAxZGYzN2YwOTc0N2M0YTljNzc3ZTEzOTk3YmVkM2QzNWI3ZTFjZWJmIHB5M2sKKzcxMTYzIDcxMzU1ZGRmMzczZWQ5ZDdjOWYzMzJhZjMzOGU4ODNmNTRlM2Y1OTAgbGVnYWN5LXRydW5rCis3MTE2NCBhOGYxN2NkODJkODlmMDIxMjQ5OTM2ZjgxNjk5MGIyMjRmZTJkNjJlIHJlbGVhc2UyNi1tYWludAorNzExNjUgYWE4OTMwNjcyYWE0ZDgyM2EyNWZmNzgzMjcxMTgzODU4ODQyMDE5NiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY2IDFmODA3OWVjZDM3MDBjODY1YWIyMDFlNDcyMWIzZGJiMmMzZDMwNjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2NyA3M2IwMTZlYzViOGZhNzhhYzU4NjEzOTJiYTAzZGIyMTZhYmFiZWJjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjggMzQ3NmFkNzU5MGI3ODBjOGM1YzE2MTQ0NDc1YzA4MTQzNmE4MDBiYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY5IGM1MGMwNzliMDllYjY3MTY2MTkzNTIxZDk5MjBjNDkxMDhjZGNlMDUgcHkzaworNzExNzAgMjhlMzBhNWM2MzlkN2YwZGNlNjE2MGEyZjdkYWZhNWNjZTRhNjM4YiBweTNrCis3MTE3MSBhZGJkZTVjM2I1ZmU0ZGY0MGM3ZjlmZjYzZDE3ZjExMzgzYjNlZjY2IHB5M2sKKzcxMTcyIDQ1OGViZTRmNWE1ODhmNjg2MWQyNDI4ZmMyZGI5M2Q2ODBhZDhhZjQgcHkzaworNzExNzMgN2VlMWNlZmE2ZDYyYjkyOWExYzVlNGFiMzZkZjk5ZDVlYjkxM2NkMiBweTNrCis3MTE3NCA1OGE3YzUwOTQ1MjMwOTdmNjI3MDdjMmRkODc3NzBlY2RkYzBhOTA0IHB5M2sKKzcxMTc1IGEzYmJkZDkzYjM4OWE2NjUyNDBjNTJjMGY4M2M3NGZkOGYwOTM1OWQgbGVnYWN5LXRydW5rCis3MTE3NiBkN2M5NzU1YjYxNzczMzAwNDBhMjY1MTNiMGZmYjM0Yjg4MzdhYjFhIHB5M2sKKzcxMTc3IGNiNDc4MTUyNDcwNDk2ZGViY2I5NTNkZmQ3ODgxZjUzOGU3N2M4NTggcHkzaworNzExNzggMmFhZGMxYWZjOWExOTRkMGEwY2Y3MTE1ZDEwZDExYjdkM2RhYmM5NyBweTNrCis3MTE3OSA1MzQ3NzQwZDRkNWRkNGViMzE5OGZmZjI3NjI3ZDI2NmZjMzFlYWY4IGxlZ2FjeS10cnVuaworNzExODAgZDJlMTU2MjlmYzI5N2EwMDcxN2ZiZjg0YzI3M2JlMjExYjA4ZmYxYiBweTNrCis3MTE4MSA3YzJhMDRlMjE4ZjIxYjkzZDBjN2Q1NzZjZTZlMjZmZTc1YmE2NGIzIHJlbGVhc2UyNi1tYWludAorNzExODIgNDZiNmI4NDE1ZGVlNzZjZmFhYzE1MzZiMzNkYjdiOWU1YzdkYTliNiByZWxlYXNlMzAtbWFpbnQKKzcxMTgzIGIxNGU5ZWM5ZDk5ZjVlY2MxYjYxYTMyY2M3YmNjOWViNjQ0OWQ1NDggcHkzaworNzExODQgOWE5MTJhNTcxNjRmNjViYjUxM2FiZTllMjM4YTUzNDQ1NGU4ZWUwNiBweTNrCis3MTE4NSA2OGE5ZTZlMzhhZmE4ZGQ5MmFhNTFiYzRjNzBjZWNjNTcwMTBkZDdlIHB5M2sKKzcxMTg2IGMxN2VmMTRiZGY0MWNhYTNlYWQ0NmM5NjI5NmIwMDc3YTI3OWM3NWQgcHkzaworNzExODcgMzU2MzBjM2VkZDMzYzgwOTBiNTQ3N2E3OWMyODgzYjk5ZTI3M2ZhNCBweTNrCis3MTE4OCBmZjc5MzNmNDRjNDE2MmY1OTQ0YTA4ZGU3YWU3OTJjNTE5ZmVhODNhIHB5M2sKKzcxMTg5IGFhY2Y1MDk0YTFiNTgwZmVjZWNlNGE2MTRlNzQzNWMwNjFjZDM4OTcgcHkzaworNzExOTAgMWQ3OTNlZTE1YjZmNmU4ZDhkMTM5MjRlOTFhODdhZTM4NTE1ZWRlYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTkxIDQ5YWVmNDE0MWI5M2YyODc1M2Y3Y2FhNTVlOGI0ZWY4NzI5ZDU1NzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5MiA1YmM4Y2YzZDkwYjM1NTMxMjgzMzU3YWIwNjJhZGFiN2ZhYjBkZTVhIHB5M2sKKzcxMTkzIGEwMTRkYzQ3YjU1MmViN2UzNzJiNzQxZmU4ZGViZWVkNTUxYTVjOWIgcHkzaworNzExOTQgZWU0MzBlNTA3NWRiMmFkZjgxMjRlNmI5NDkxNmE4OWNhNDFkMzE3MSBweTNrCis3MTE5NSA5ZWY3YmY0ZDg1OTA4NjM5OTI4YmIxNWY4ODdhNGIxMjM4YWEzOTcxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTYgNmRlODYzNmNkODE3MzFlOTQzNTA5MzhkZjZhNjY5YzAxNzQwM2NmOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTk3IGI0ZWY1MDJmY2NhMDI4N2VjYzc5NDVkMjI5NTRjY2RjMTIyNjYwNmYgcHkzaworNzExOTkgYmRjNTc0NzgyOTE5ZDc4YzExNTIwZDQzNzc0NDI1NjFiMDNiNTc4MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjAwIGUwMmJkZDYwODVmZmJlYjViNmQyOTkwNmNmYTQ2Njc4NmI5MjZiY2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIwMSA3NjEwNDhhMGE4ZDk5Yjk2NzBkZWJkNTg2M2I0Y2ZmM2UyZDE3ZDM2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMDIgMzI3MjYzZmQyZTY2NjNhMTFjZjZiMzRlZTQ2YzFhYWJjN2Q0ZjRiNiBweTNrCis3MTIwMyAxOWIwZGIxMzU0ZjcwZTc2YjlhNTdjOTBiYzA2ZTc3MTlhZTQ3MDUwIGxlZ2FjeS10cnVuaworNzEyMDQgZDkwMDI0NjIwNTY4N2U5MWQxNDE1MzE3YmNkOWQyZDIzZDA0NjA0OCByZWxlYXNlMjYtbWFpbnQKKzcxMjA1IGZkY2ZjYTcxNWJmM2RhZDBkZThiYjQ2NDQ2Mzk5MDk0NTlmNzI4ZmIgcHkzaworNzEyMDYgZTZlNWEwZTQzNTQzNDZiNTNkOTdiN2ZhODgzODU3NDI4ZDVhZTU2ZiBsZWdhY3ktdHJ1bmsKKzcxMjA3IDBmZTM4YmJkOTczY2RmMWIzY2E1YjNkMGQzNWI3MzM2MzI5ZjkwNDQgcHkzaworNzEyMDggZGU1ZjE4NjM5YTZjZTFmYzM5ZjM2NmIwZmI3NTY1NTY3YmFiNDcwNyBsZWdhY3ktdHJ1bmsKKzcxMjA5IDc4ZjMxMGI5NjFjMDJmY2JjNzIzYjBkYjA2NjM4ZjFkNTJhMmY1OWUgcHkzaworNzEyMTAgOTM4NGI0M2Q0MjZmZWU1ZmE0ZDU1ZGU1NmU1MjVkMzhmZDhhOTQ3MCBsZWdhY3ktdHJ1bmsKKzcxMjExIGFkZGQ3NTNiYTRkOTZiNzM2NmJkMzhiYTU5NzVkZmJiOTM3ZmRiZmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIxMiAxOGYxYzU2Y2E2ZmRiZjBkMzBlOGE0YjQ4YWMzNDRkOWNjMjAzYTUxIGxlZ2FjeS10cnVuaworNzEyMTMgMGY3NzA4YjAxMjhjMDdhZWE0NDU1Nzc5NDNkMjNjMzdhMzUyNWRmZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjE0IDFlZjAyZWY0OGM0MjRiZmM4OWYzNTRjYzhmODk1OTIyOTJmZTAwYTUgbGVnYWN5LXRydW5rCis3MTIxNSA1ZThkZTZjM2UwMDI3NTI2MjMyNjY1ZDNiNGIxMGQxZTJkNDExNWQ0IGxlZ2FjeS10cnVuaworNzEyMTYgZTQyMWE5MmIyNTIwNzhkYTdmYTYwYWY1MGQ2OTgzY2ZhYWRlOTE4MyBsZWdhY3ktdHJ1bmsKKzcxMjE3IDAwMDZiMmFkYzdlNDA3ODM5Yjg2NmRjZDgyY2FmZjg2MTM0ODdlOTUgbGVnYWN5LXRydW5rCis3MTIxOCA1ODdhMmFlZDM5ZjJlZDNkYTQxMDQ2YmRmMzM4NjViN2RiNzM2ZTkyIHJlbGVhc2UyNi1tYWludAorNzEyMTkgZWI4NDUzMDU3N2E1M2EyOTljZWU2YTc0YTUwOWM2MzI2ZWNmZmFjZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjIwIGY1Y2IzYjMzYjc5NDFhNzA0YTI5ZjFmYzYyNTUzMTdmMWYxNTIzMjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyMSBmNTUwZTI0NjMwNjI5OTNhZTljYmFiZDVlOGY1NmM1NmNjMjgzZDJiIGxlZ2FjeS10cnVuaworNzEyMjIgMmJiYjYwYzAwZWI3MjU3ODIyNDBjMzgwZGQyZjY5N2MxNWIzMzIxYSBsZWdhY3ktdHJ1bmsKKzcxMjIzIDAxZjRlODgwM2VjZGUwMDYxNDBmNDc2ODA3Njc0NmQyZGE4MWEwNDMgcHkzaworNzEyMjQgOThmNDIzOTI4MzViNjlhZWQ1ZmJmODAzZjdiOWYzNTMyODMyMjkwMiBweTNrCis3MTIyNSBhN2M3NGUwOWRlM2RmMGFlMDAxNmM1ZDJmY2I3YzI2MTZlMDcwZDA3IGxlZ2FjeS10cnVuaworNzEyMjYgMTUyZTA4ZGZjMWFmNWU1N2E0ZTMyMmM0OGE0OTQ4YzRlNzA1MTk4OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjI3IDU4ZDE3MTc4MGZkODk1NDUzOWNiNTYxZjQyMGNiMTkxYTc4NWNlOWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyOCA1Y2JkYjUxNTdmYTc2YzUwMDdiNGY2ZTczNWFjN2NmNmE0MDZlMDZjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjkgYmZmYTc3Njk2OTI2ZGNmNTkxYzFmZTM3MmUwMDlmYmYyODkxZGJiMiBsZWdhY3ktdHJ1bmsKKzcxMjMwIGViMzJhMTUzN2RkN2Y4YjllZmQzN2Q2M2RlY2UzNDJmZjk0MTI5MjYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzMSBmMWNlYzM3Njk4ZmU4ZDA0MTk0NTVhYjFkNDEwMGMxMDA0MTg4NTI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzIgNjYzNTRiZGRkY2Y3NmRkNGYzMTg4YjI0ZTEwNDA0ZjhlNzJiNjUwNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjMzIDFjYmVhYmY4ODhhMTQ2NDJjMWMxMGQ2ODI4YTMxYzc5OTgzNzY1ZDYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzNCBlYjk0NTE3ZGZiZDZkN2FmYjBlYmI5ODJiZmMxMzQ0OGFkMTdkMDhjIGxlZ2FjeS10cnVuaworNzEyMzUgODVjNWNlNmQ3ZjljN2NiMDliNjIxNGY0MDQ4ZDk2NzM2YWZmMTI3NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjM2IGVkNzgzM2Q0ODJjODFmMmU3N2ZmOGM0ZTlkNWQ5MmViYjAyNDJkOTkgcmVsZWFzZTMwLW1haW50Cis3MTIzNyA5NzZiMzA1YWFkZDI5ZTBlMmZmOTAyZjllMzdlZDU0ODA0NTE3YzRhIGxlZ2FjeS10cnVuaworNzEyMzggNmVhZjk3NzIxZDNkOGFkMWYxMTBjZjljNWMxZWQxMTgwMmI4N2Y1YiBsZWdhY3ktdHJ1bmsKKzcxMjM5IDM3ZDZhZjZmODVhYWM0ZGQ4ZDQ0N2Q5ZWUxZTE0MmU4N2EwZWQ5M2YgcHkzaworNzEyNDAgOGM2MWU3Y2FhMDZjZjc4MGE0NTg3NTI2NzgyOTllZDM3ZmRhNTNiYSBsZWdhY3ktdHJ1bmsKKzcxMjQxIGRhMWU1NDgzYWNhMDEzNmE1YjVkOGRkZWI5MDkxN2FlNGY4Zjk0MWUgbGVnYWN5LXRydW5rCis3MTI0MiAzYmJjNjg0NDlmOTRlN2ViYzJhMTFiYzA4ZjQ2YTM0MDEyNzAxYThjIHB5M2sKKzcxMjQzIDEzZWYxMTkwZWRhOWQ2NGUxNWJkZTgxYjI5N2YzNzUxMjc5Y2I3ZDcgbGVnYWN5LXRydW5rCis3MTI0NCAyNGVkNWQ4NTE3MjBjZWUwZTAyYWQ1YTJhZDc2N2EzMTRlY2E3YmExIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDUgOGNlOWVkYzg4OTY5YjhkOGUxZmQzMTgzNjc3NTU0NzM1MWI5YjdkMiByZWxlYXNlMzAtbWFpbnQKKzcxMjQ2IGI5MDg3YjY0NWNlZmJjNDNiYzM5YzdjMjBhMDM3ODY2YWNmYjVhYTAgcmVsZWFzZTMwLW1haW50Cis3MTI0NyA3NjEyYWE4OWJmMDYwZWNkMmNiNWM3Y2M2NGFhN2QyN2M4YmY2NmEwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDggYTdlNWI5ZDkwYjEyNWZjZTZlZDdkMGMwYjNiM2RjZWQ0YzdlMDhjMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjQ5IDhkMjI4NzNlOWIyNmQxZDU5Y2YwZDM3NTgxZmI1YjE1YjY4MjBlZTEgbGVnYWN5LXRydW5rCis3MTI1MCA0M2M4ODlmZWRhNDBiMTE3NjIzOTk3NzExZDYzYTFmMmZlY2E4YmM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNTEgYmQxMzM2YTNhNjg2M2FlMjc1MWNhMjY0NzdjYTNhZGY2M2RkMjgyOCBsZWdhY3ktdHJ1bmsKKzcxMjUzIGIyYzY4ZGY5NDQ2MzlkZDQzNGFkM2IzOGMzNDRjYWI4MTE4YzkyNTYgbGVnYWN5LXRydW5rCis3MTI1NCBlNzQwODMzMDFhMzZlMDg3NTVjNDlhZWM4YWYxNmZiZTA1NWI4N2U1IHB5M2sKKzcxMjU1IGExNmEwNDU2OTc4ZjdlZjdlOThiMzJjYTc2NzJmNjk3ZTI4YzVhMWIgbGVnYWN5LXRydW5rCis3MTI1NiBjZmQ3MTM2OTQxYTA5OTkyM2Y4OTBjMmIxODVmZWYzZGE5ODgwN2Q1IHJlbGVhc2UyNi1tYWludAorNzEyNTcgZWNiMjEwM2JhMDI3OWZmNTdjZjQyYWQzNDI0N2YyNzYxODIwNWU5MyByZWxlYXNlMzAtbWFpbnQKKzcxMjU5IDdiNGVmMGI4N2RkY2ZmOTMxMzVjYzEwMzQ0MTQ3NTA5OGQ1NWUxMDAgcHkzaworNzEyNjEgNzkyYmI4ODUwMjlmYmZiMjg1ZmM5ZDM5NjU5ZjNkMmU5YmE4OTcyOSBweTNrCis3MTI2MiA0ZDk3NjExZDFjY2E0OGExNGZmYTFiNjkzODk1NjY0MzJjODM5ZjllIHB5M2sKKzcxMjYzIDY3MmIwYzA0MWJhNjM4NGFkODRiM2JjM2M2NjliZDM4OWEyZGU0ZTIgbGVnYWN5LXRydW5rCis3MTI2NCBjOWVjZDQ1YTVlYTJmMTAzYTM0ZTQ4Y2RlYTA5MThjMWU5YmFiODg3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNjUgMTRlMDBmMGY3OGI3NGNmNDEwNGY3NWM5ZmEwYzIwMWZmNzk1ZDZiMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjY2IDJkMDBmZjNkMmY1YTNjNWNjYTgzNThmZDUxYmIzYjUwMWVmZThmZGQgbGVnYWN5LXRydW5rCis3MTI2NyBhMTRkZWI5NDgwZjRkMzIwZGFkMmM2MjMzYWNmZDQ0Nzg0ZGVjNjRlIHB5M2sKKzcxMjY4IGY4YzU3NmZhYTlhZDEzZTlhYTY2MDYzYjhiOGRmOTBjZTViODUzOWMgbGVnYWN5LXRydW5rCis3MTI2OSA1NGQ1ZjI5ODZhZjQyY2RkNzhiYjcyNmFmMGZjMDc5NzgxNzY5YWRmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNzAgZmIyZWE4YmIzYTMzZGM3NmZkODU0MTQyZGY4ODE3NDA2YjQ2M2U0MiByZWxlYXNlMjYtbWFpbnQKKzcxMjcxIGIwNDI5YzdmYTcxYWFlZDVjYzkzMjY5NmUwOTNkNWE1MjQ2YzEyODEgbGVnYWN5LXRydW5rCis3MTI3MiA0YWNiYmIzZTY1ZTJiMDU4MjFkNDM2ODllZTNhZjViYTU3MzA0MzQxIHJlbGVhc2UyNi1tYWludAorNzEyNzMgMjUxYmZkMmQ5OTZhMmRmZjhjYzEzMjY0YWE4NWJmYWU1OGIxODQ2MiByZWxlYXNlMjYtbWFpbnQKKzcxMjc0IGQzODg3ZGZlNjYxZjkzNjJjM2UyY2ZjMTM0MzI0MjJlNjBlMTQ1OTcgcHkzaworNzEyNzUgMzg4OWQ5NTI4NjAxZTNiZTE4YTYyYjg0ODYzNmE2MGIyZDQ1MGM1OCByZWxlYXNlMjYtbWFpbnQKKzcxMjc2IDk2OWFkMTBhOGE3MjU3MGI4MWM1ODRhNWE0YTEzYmJjNGE5MGUyMmUgcmVsZWFzZTI2LW1haW50Cis3MTI3NyBkMDg4NDM2YWMzNmIxMGE5ZjMzY2VlOTE4ZjgxOGQxN2QwY2M0OWIxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNzggODIzN2RlNjMyZDZmNjgxNWEzNjg4MmY5NjQ1M2U0YTliZTJkODFhMCByZWxlYXNlMjYtbWFpbnQKKzcxMjc5IDhiNTMxNTAxMzRmNWRiMTRkMjIzZGUwYTIzYjlmZGYwNWE3NTY1MmYgcmVsZWFzZTI2LW1haW50Cis3MTI4MCA5YTRiMTkzMzBhYTkzMWFiZDM1ODYxZmNmZWU2MjRmZjRlMGM0NDEyIGxlZ2FjeS10cnVuaworNzEyODEgN2U3ODEzYWRhMmQxODFjNDcyNDliNzlhOTNmZGVmMzNmOGZhMGQwYiByZWxlYXNlMjYtbWFpbnQKKzcxMjgyIGYzYjI2YTcyOWU4MmY4ZmZmYjE3NGQ0OTNjNjljNmU5OWFiODkwNTggcmVsZWFzZTI2LW1haW50Cis3MTI4MyBmNjdhNGYxZjIzMGQ3NDBmZGVjYmE1M2IzNTk0ZjhmZGY5MzI0MDlmIHJlbGVhc2UyNi1tYWludAorNzEyODQgOTM0ZDljM2NiYTQxODRiNzQwMjY5MzhlNjdmNGU3ODk3YzY2MjdiYyBweTNrCis3MTI4NSBiNjkzNDlkNGI5ZTg4MzE2Yjc1ZGM4Mjg2NDc1NjRkNDlmNDZiNzA1IHJlbGVhc2UzMC1tYWludAorNzEyODYgZDZkZTY4NDRmZDcxNDFiMzZjNjQ2ZDA2MGI4OTc3NTU2NjhjZjJmNyBsZWdhY3ktdHJ1bmsKKzcxMjg3IDI0ZmE3ZGRkNGRjY2U0OGIxZGVkZjEwZDY3ZWFkMzBjNWQ5YzNmY2UgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI4OCAxZDhjYjc2ZTcxOWI3ZTA1MDg0MjkxYjJjOGQyY2MyMTVjOTFiZTQ5IHJlbGVhc2UyNi1tYWludAorNzEyODkgYjM2YjAwYWUyOWZmYmY2ZTU1M2JjNjQ0MjcwZTNhNzJmNmM4NWNlYSBweTNrCis3MTI5MCBiMzNiZGQyNDE0MDIzNTg5YzZlZmNhZGE1ZWUyMjU0MDUzYzFmNTFiIHJlbGVhc2UyNi1tYWludAorNzEyOTEgNDMzZGUzZDU5NjA3OGQxYWU1NWFkMjU5NzRmMDg3YWIwODJiNWE5MCBsZWdhY3ktdHJ1bmsKKzcxMjkyIDBjNmIxNmEyZjkxYjc1ZWYyMTcwYTM2YmQ1OWYyYTdmODYyNWU2ZGUgcmVsZWFzZTI2LW1haW50Cis3MTI5MyA1NDhjYTM0MzU3Y2RhZTVjN2YxOTU1MmIxYTZjZjJiYzdjOWFkZGQ3IHB5M2sKKzcxMjk0IGRhMGMxZjc0Y2EyMDBiYzhhMWZiYWYwMWEyZWQ0YjI2MGRiYzI5OTggcmVsZWFzZTMwLW1haW50Cis3MTI5NSA0Yjg4MWI0YTkwZTk1ZWVkN2ZkNDUyNmM5OWFmYjFmYjIxNTEwZTkzIGxlZ2FjeS10cnVuaworNzEyOTYgMzY0YmQwMDJiN2Y4Njc5ZmVjMTNiYjUxZjEyODMwMmRjMGIwYjFmNSByZWxlYXNlMjYtbWFpbnQKKzcxMjk3IDVhN2EzM2M5NGQwMDFjOGJkYzdjODg2NmZiZDJhNTM1OTY0NDY3MmYgcHkzaworNzEyOTggZWMyZTRiNWEwZTkwZGM0ZDYwZGMwMjQxZjA5MTJlZWQyMzExODQ1MyByZWxlYXNlMzAtbWFpbnQKKzcxMjk5IGQzNmE0ZjkyMDM3ODNmYTk5YWRmOGVjMzk3M2E1YjZkMGJhYTRiYjIgbGVnYWN5LXRydW5rCis3MTMwMCA0MTRhMzExODFlOWRjMzgwMWNiNzNmYTcwZTE3NzZkZGMxMDAyZjEzIGxlZ2FjeS10cnVuaworNzEzMDEgNzM2MDA1MTU5OTliY2EwZjFkZTA0OTY0MzkyNTA2ZDY1OWE1M2JhNyByZWxlYXNlMjYtbWFpbnQKKzcxMzAyIGUzNjM5NThmY2Q3MGE0M2FkMDdiMzlkZjk5OTU1MmQwZmExY2VmYzEgbGVnYWN5LXRydW5rCis3MTMwMyBjNmM0Mzk4MjkzYmQ2ODJiMzU1ZjEwNTBiYjE2YmIzZTE4YzhiNDBmIGxlZ2FjeS10cnVuaworNzEzMDQgOTg2MjAxYWNhNjhiNDM0NGJmYmEzOWRmOGNmOTQxNDc0NDhmZTNlNyByZWxlYXNlMjYtbWFpbnQKKzcxMzA1IDIwNzllZGQ1Mjg1ODc0MmNhZDkxYjE5MzE5Y2NmMjFkNmI4Nzc0OTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwNiBlZmM3ZTEzYTc1NDIzMjViYjNmNzMwOWZiZWJiMjRlYzU0ODdkNzU3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDcgYjQ4ODFmOGVjNzA2ZjgxMjEzYmZiY2VjMWQ4ZmQ3MWIzYjA0NDA1YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA4IDg1OTI2NzdlYjM1MmNmODVjNjA1NWI5ZGJmZDkwNTdlN2ViNjdmYjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwOSAwNjZmYTBiYTgyOTAwZmJjMjQ5ODcyZjJhZTc0YTE5ZGRiOTdmZmQ0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTAgN2MwZmYwZGU2Mjk1NmYxNzc3ZWM3MzE2NjU2MjhkNDM2MTg0MjdmMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzExIDk5Njg3ZDUxYmUwYTE0MjcxZmE2MmE5Y2Y3MmRkNzVmMjkxMWZkYjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMiBlMDEyOTg2YmU0ZjRlNTJmOWFjMTY4ZGFmZWY1ZDg0NTQ5YWVkYTQxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTMgNTI2ZGIyOGYxMDBkMjEyNWJiODM1NTUzNGU1OGIyNmFiZWE3MzI1ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE0IDMwYjUwY2JlNWM1ZTVmYzhmOWU5ZjBlZDBhMmExMTA2Y2MxZDAyNjMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxNSBmN2Y3MDEzOWVmNTcwZGZiM2M2NDk3YjYxMzZhMWY5ZWI5NWQ5YjA0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTYgY2VlMWE4NmM2OWMxNWU2NDljMWQ3NTU5YjkzNDAyNTlmNjQyZjliYyBweTNrCis3MTMxNyAwMjYzNTQ2MDI2MWU5YWYxYTkzN2M5ZjYwY2YwZDViYWU4YmIxZWJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTggOTg2NDUyYjUyNmExZGY2Y2UwYTgzM2Y0MDMxNWNiMDFlMGQ2YzMwMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE5IDA2ZmE4N2YzZWMzNjI3MWZkMDQ3NDBmMzE4OWEwMDllZmRhOWM4NWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMCA1NTYwYTA2OGMwNTc5NWZhMDUwMDUyMTdiZmIzODk1ZmU3MWE4ZmMzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjEgZTRlZWIwZGFmNjI1NDZjZmQzNzY3Mzc3ZWI2MmFjNzFkMGVlZjMwNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIyIDQ1ZmQyMjcwYWUxYjhjMWQwODk0OTlhMmFkOTIxMWM1NjdmMjg4MWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMyBjNWUwYzZmNjU2ZTYzNjg1ZTFhOTg2MGM2YmVlMWU2YzA5MjYzOTJmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjQgMDc2YzcyMjExNTYxMTE5NjU5NjQwYTAyNjdlNjYxOWRlM2Y2ZWMwMSByZWxlYXNlMzAtbWFpbnQKKzcxMzI1IGI5ODQ5ZWZiMjc1NDVjNjgzZDQyNGRiZDg2NDZlMDQyZmViOGNiODcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyNiA4ZDY5NzYzYTIzMTdiNTQwNjE4ZmNmYjBhYTBjYjdjYjVmZGVmNDY4IHB5M2sKKzcxMzI3IGQzNDcwYmM2ZDE5MThkYTk3ODU3NmY5ZjVkOGVlMTg3ZDQ3OWU5NTIgcmVsZWFzZTMwLW1haW50Cis3MTMyOCA0YTY3ZDY5MTQ3MjU4NTE1MDczNDU4MGI5Yjg2NWU1ZDBhNzE3ZTdjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjkgZDgxOTg1MTgyYTM2ZDYwODYwYWQ0ZWU2NDMyZDRjNzYzYjQwNDgzMCBsZWdhY3ktdHJ1bmsKKzcxMzMwIDkyMGIwNzkwOTYwMDNkNGY3NGQ2ZTczMWVkOGU5ZDNlN2FlOTFmYWYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMzMSA1YjAxZmU1MTNmOTI4NjRmZjViZDY5MTdlOGYwODA2Mzg4MDI3ZjRlIHJlbGVhc2UyNi1tYWludAorNzEzMzIgNTU0OWU4ZmYyOGQyY2VjN2EzYjI3YmUxNjU1MjNhY2QzZTcxY2QwNCBweTNrCis3MTMzMyBmNjY0MDZmMjYwNDQxZjMwZjg2YWM2YTNmMmQyNGRjMmYwMGRiYWRmIHB5M2sKKzcxMzM0IGEwZWRkOTFlOWM2ZjMxMjYyYmIzZmExMjQyNGEwNTg4NjM0ZDE4NzUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMzNSBmODI0ZGM2MDEwNmYxMDhmMmM2NTliMmQwZWRkY2EwODVlZGM5MDk1IGxlZ2FjeS10cnVuaworNzEzMzYgNjA5M2ZkYzVlZTk2MmRlMGNlZTlmYmIyNjZiMmQ4NjVmOWJhYjhhOSBweTNrCis3MTMzNyA3YTM5ZjdlNDJiZDk3Y2ZmMjZiYzkxMzM1MzU5YTU0NzBhZTRlNzIwIHB5M2sKKzcxMzM5IGYzOTFkZjkzYzlhYmQ0OWY3ZDAyMGRkNTJkNDE3MzVjYjUyMjQ1ZWQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0MSAzNzQ0ZWZhNDU2NjgxZWE4NDdkODNjM2U3NTY2NWM4N2RjOTk5YzUzIHB5M2sKKzcxMzQyIDk3NjhkYTg2Y2Y4ZTMyYWY2MTc5NWYyYjc0ODIzZDUwZjE5N2FhNTYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0MyAyOGJhZTVjYTUyMThkMDRiMmFjNDg1MmY4YjM4NjY0YzMzMTA4M2MwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNDUgNjkxMTRhMzU2Y2YwZGE3MmViZjQzZDQ1NWMxNTgxZDI0OWI4YjZmYyByZWxlYXNlMjYtbWFpbnQKKzcxMzQ2IDhmYmI5OTM2ZDRkYTJiMTc4MjkzOTc4MDA4NjZiN2RmOWVhY2ZiZjkgcmVsZWFzZTI2LW1haW50Cis3MTM0NyA2ZmNkMTBlYTk5OGE5MjZkNTM3YzA2NDU2MGViMGQ0NGY2ZTc5Mzk3IHB5M2sKKzcxMzQ4IGRhNzNjNDNlNjkxZWRmODc1ZDFhNzIyM2Y5MWFhZDdlODFjYjRlMjkgcHkzaworNzEzNDkgNzE2ZjU5NThiNWYwZGEwYTYxZmQyNzE4MDAzMmZmY2VlYjY5ODU4MCBweTNrCis3MTM1MCA2ZjRhMDg4ZDM1OWQ2Y2U2Zjk3OTg5Zjg0MzYwNzE5NjAxYzBlYzdjIHB5M2sKKzcxMzUxIGMzN2JiMWI3YTQ3YTg0M2UyMGQ4MGZjZTZlODY3N2EzNGFkZWUzMDggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM1MiA0OWIyNDkyMmViMmRkZjU3ZjkzMzIxZmE1NzE0NDk4MGEzMjVkYTcyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNTMgNjc0YjIwMDAyMjRjYzg5ZTdjYmMxYWU0ZDEwZWQ1ODkyNjMyYjMyOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzU0IDMxNTgyNDg1ZmJmY2QxNTM0NzFmMGQ4OTJkOWZmYWQyYzM1NTAzNzMgcHkzaworNzEzNTUgMTUzOTE3YzAwMWJlZmFmZDI2YWQzN2VjMjUxMTlhNzA3ZTExOThiMCBweTNrCis3MTM1NiBmOTI1MzM5MjVlYTY2MjcwNWFiYTBiMDdiZDY1MzJjMDgxN2Y0MzBhIHB5M2sKKzcxMzU3IDk0ODMyNDU1ZTM3ZDU5MGNjYWQ3ODQwMTlkYmU4MWE2YzI0NDRiMzggcHkzaworNzEzNTggNzVkZWY3ZWQ5ZDVmYzYzZjkwNWFiYjJkZDgwMzlhN2FiYzRiNTc4NyByZWxlYXNlMjYtbWFpbnQKKzcxMzU5IGMzOWMxYzI5NzhmOTRmNWI0Zjg0MmM5NmFhNDUzOGUxMTQyMzU5ZWUgcmVsZWFzZTMwLW1haW50Cis3MTM2MCAyYjA4MzE0NmFjZjVjMjY2ODg0NmQ1NmY3YTRhYmZmMzJmMDM5YjE3IHJlbGVhc2UzMC1tYWludAorNzEzNjEgYjUwZjExYjhjYWQ3ZjQxZWFlY2RlMTM0OTE0NGEwNGQ0MjQ4OTQ4OSBsZWdhY3ktdHJ1bmsKKzcxMzYyIDkwZDMyMzgxYTM0MGZiZTQyNWNlMGQ3MTliZmM0ZDI5MjJlYjliZTQgcmVsZWFzZTI2LW1haW50Cis3MTM2MyAwMWYxYWU4MzYzMWFlODJiZDg1OThhMTFjMTdlM2Y5YjNmNTZjMzhhIHJlbGVhc2UyNi1tYWludAorNzEzNjQgMjc1YzBiYTc0ODU4OWU4YTY3ZjFkNmExYTJiMjc1YTM2YmEzM2UzZiByZWxlYXNlMjYtbWFpbnQKKzcxMzY1IDVlOGMzZTc0NTFmZmI3OWNlMTE4ZmMyOTdkODZlYzNkYzAxMGNmOTkgbGVnYWN5LXRydW5rCis3MTM2NiA5YWI1MjQxNzBmNjgyZjMzMmJhMGJiYTgxNTY1YTgyYTFlODAxYWQ4IHJlbGVhc2UyNi1tYWludAorNzEzNjcgZmNlM2FkNGIyM2Q2MGMzNWVmZmQ1YmFiZTlmYzJkNGE3ZmNlNzU5MCBsZWdhY3ktdHJ1bmsKKzcxMzY4IDVjZTIzY2ZiOThjN2Y1ZmJkZjYyMDcwNzZlZGU2YjFjMTNkZTY3ZDEgcHkzaworNzEzNjkgYzg0MjAxMTg5Mzg3M2VhZjBiODc3NzgyZDQ0ODUxOTFmNzQyNTE1NiByZWxlYXNlMzAtbWFpbnQKKzcxMzcwIGUyMzI1MmE4ZmY1OTI2ZmNmYzFkZWY4Nzk0OWRjZGU2ZWE0MTU4ZTQgbGVnYWN5LXRydW5rCis3MTM3MSA1YTQ5NDYyM2NmM2E4MTRiOWUyZTBiYjc2NjgzNWI0YWViM2Q4NDI1IHJlbGVhc2UyNi1tYWludAorNzEzNzIgNmM0NmQ2ZGIyZmQ2YTlmYjFiNTc4MGQzNDczMjdjZTQxZmMxN2NiYSBweTNrCis3MTM3MyBkMTZjYWRhOTYzNzAxOTA3MzgwNTFmYzU3MzJiZjkzY2FhMjFiYmVmIHJlbGVhc2UyNi1tYWludAorNzEzNzQgYmEzYTllYmNlODFlN2MyY2FhZjJhYmZlNjExYjdjOTlmMGQ0NWMzMiBweTNrCis3MTM3NSAzNzk5NzAzMDk0NzU1NjRmOWE2ZDg5MzFhZWU3ZjkwZTZiNTE1NzA1IHJlbGVhc2UzMC1tYWludAorNzEzNzYgYmM3OWJlZjU1YWE4MDZlODMxNTRkNjQ5YTIyZGY4MWQwMGIwZTk4MCBweTNrCis3MTM3NyA0MWU3MjAyZTlmOTMwNDZkZmQ1M2ZiM2NiZGE3NTdkYTZiZDY5N2RjIGxlZ2FjeS10cnVuaworNzEzNzggMjQ4YWRmY2JiNzE1NDRjNmE1NzM1MGZlNzhhNmNjMWZlYTU3ZDBjNiBweTNrCis3MTM3OSBkYjE4ZTc4YjkyZDg2YTAzMWYwYmIwY2YxOTBiODhmOTg2YWM4MTJlIHB5M2sKKzcxMzgwIDBhMWNkYTFlN2MxYzc5Njg3MzFjY2ZiZDIxODlmMDNkMWVmMjg4ZTIgbGVnYWN5LXRydW5rCis3MTM4MSBkMDQ0OTBiZWUyZWQ0OGQyYjlkYjY3OTljODQyNThkMDJjMDFlMWZhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzODIgMDkxNzA2ZTE0MDU2MDdhNzYzM2M4NzE3MGY4ODAxOWU5NGZlNGY1NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzgzIGFlNWY1MTU2Yjg4MjY2YWRlNGFhODM4ODRkNDkwNGJkMmZjMGQ1MTYgcHkzaworNzEzODQgZjcxMDU1NTA1M2JmMmY4ZjYyZTAzNjA1Y2JlMDgyMGFhODExOWZjNiBweTNrCis3MTM4NSAxMDk5NDEwMTU3MDMzMDc0YjdlYmFiOWU1YTg0MDAyM2E3Nzc3OWQ3IGxlZ2FjeS10cnVuaworNzEzODYgMjUxZWY5OWRmYjRjNDAxYTg0ZTg5MGM5OTBjZDIwMWJmZGMzYTQ4OSBweTNrCis3MTM4NyA3NGQ5Zjc1ZDlkYzFmY2ZkMGY0NGZkZGRjNzU4NDYwNzRiNmFhMmRhIHB5M2sKKzcxMzg4IDE5ZjdkM2FiZTdjZGUyN2ZmYTE0NjJiOTg1MjI5NzdhYjI0MDg4NGQgcHkzaworNzEzODkgZGYwZWQ5ZWI3OWMzNjU0NWYxY2YxMzJiMTJjMDFkZDI1NmJjZTQ3NSBsZWdhY3ktdHJ1bmsKKzcxMzkwIGZkMTgwYmY0NzIyN2ZkNmE2ZTM0NWI0ZmFhY2JhNDVlMTJkN2MyNGUgcHkzaworNzEzOTEgYTk4YzUwOTA4NGViMzU2MmNjNjZjZmJkNjNmZTgyNWFlYTQ4NWE3YyBweTNrCis3MTM5MiA3Yjg5NjJmNjU5MThiM2U0OTU5N2MyMzc2YjRjYmYzMTYyMjhmMjc0IGxlZ2FjeS10cnVuaworNzEzOTMgNjFlMzdlZmZhZTNhZWFmMzBlODc4NDYxNTRkMThjNWI1ZmQxYzk5NiBweTNrCis3MTM5NCBmZDE2ZTU3OTA5NmUzYTM5MGZkZmZhMDFkNjA3NjE4NTM3YzMwMGIyIHB5M2sKKzcxMzk1IDBiYzA1MjRkMTdjZWJjMjIxYTkwOWM1ZjM2NzQwMDdiZmRmYmQwMmYgbGVnYWN5LXRydW5rCis3MTM5NiAwMjIyNGNiMjFkN2NiOTVlYjQ1MWMzMzI1Y2RlYjYzYzhmZGE2NGY2IGxlZ2FjeS10cnVuaworNzEzOTcgYjE0MDRhODY4ZDhmNDhlZDU3ZWJjNTk3ODJhYTVhNDFiZDVmOTc3NCBsZWdhY3ktdHJ1bmsKKzcxMzk4IDVhOGViYWJhMWEwOWVmZGZlNjQzMmRkYzhmYzcyNTE3ZDkwODFhYmMgbGVnYWN5LXRydW5rCis3MTM5OSBhZmYyYjE1Y2NjNjg0OWFkMWM2MzZkYTAxM2ZmYjg4NTUxODNlMjlkIHB5M2sKKzcxNDAwIDY3ZDlkNjE2MGMxMzRjZGQ4ZmQ4ZWQ3MmMxY2ZmYmVlODQ5ZDllMTAgcHkzaworNzE0MDEgZDM1YzY0ODZhZDk0YTY4NTk2MDM3NzZmZTZmYzM1OGM0MjExMmNlZSBweTNrCis3MTQwMiA2M2I1NzUxM2IxYmRkNDAxMjBhMzM0OWFmMzdlYmI1ZjlhMmJjNzEwIHB5M2sKKzcxNDAzIGQ5MDg4ZWZkNTU4YmQwYjM1OGRiMTdjZjU5ZWFkOTc1ZTQ3N2I3NDkgcHkzaworNzE0MDQgMTgwNTNjZjYxMTVhNTJhNzcwMDRiNTE1OGQ1MTEwOGQ4OTJmM2M2OSBweTNrCis3MTQwNSBjMjMzNjk1N2M1MzU0ZGMwYjIzODYwZmU1MWMzNWI4MjQwYjMxZDEwIGxlZ2FjeS10cnVuaworNzE0MDYgMzA4NjQyN2IwNzA5MjJkYzRhZmY5YWVhMDY4N2RjNWRjYmQ2MzdmMiBsZWdhY3ktdHJ1bmsKKzcxNDA3IDFjYzk0OTk3Y2ZhN2VkYzVmYTk5MTQ1OGY4MWE0ODEwMGIyNzlhZjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQwOCA5YTczMTdjZTZkYjk5NGFhZTIwYWJlYThlNmNhODVhOTNlYjcyNzUxIGxlZ2FjeS10cnVuaworNzE0MDkgNTM2NzYxYzJiNmE0YTIwZDU0NzkzYWUxNTAzMjZjMGYyYTdhMmE1MyBsZWdhY3ktdHJ1bmsKKzcxNDEzIDQwZWZmM2IxODJlNGQyZmY5MWJjMzBmYmQ0MTk1Yzg4NjAyNjI1ZTAgbGVnYWN5LXRydW5rCis3MTQxNCBkZmE5MWRmZWQwYjA1NDk2YzIxNmQzODIwYzBlMmFlMzBiNDQ2ZjgxIGxlZ2FjeS10cnVuaworNzE0MTUgYTc4OGZhY2VlNmVmNGQ3ODM3ZDAyZDBiYWQ3N2Y1ZGFhZTY2OTNlMiBweTNrCis3MTQxNiA1YWQyMDQzMTJiY2MzMDZiNDgxMmRhOWY1ODdlMzc2ODFkMjJiMDg0IHB5M2sKKzcxNDE3IDJiYTMzYzM0ZGMxYTc5NjQ2YTcyNmQ2M2IxMTM4NjAyMTI1MmUxNjMgcmVsZWFzZTMwLW1haW50Cis3MTQxOCAwN2MzYWMzMGRhODcwNDQxOWJkNTZhMGZhMzA1ZTU4ZGQ3MjU2YWRlIHJlbGVhc2UyNi1tYWludAorNzE0MTkgYWRlNWMyNzE5OGRiZWYwYzk2MjkyYTcwNTdmNmZhYjk0NzU4YTdhNyBsZWdhY3ktdHJ1bmsKKzcxNDIwIGJjOTRiODMyM2IzOWIyOWJkMzc1MzY1ZWIyNWI3ODliODY0ZGE0Y2IgcHkzaworNzE0MjEgZjcwYjNiNWY1MzgwY2U1NDU4NDlkZTVhZmIwNDdlMTIyNGM0YmQzNiBweTNrCis3MTQyMiA3OWU1N2M4NjZiNWY0ZTJmYzFkZTgwYzQ1YTdmYWEwY2ZjOThmMmQ3IHJlbGVhc2UyNi1tYWludAorNzE0MjMgYjRiMjUxMWUwM2M3NTMwYTlhMzRkNTA1NTY2NTBkZmU3MjNmZTQxZSByZWxlYXNlMzAtbWFpbnQKKzcxNDI0IGQzNjEwZTMzOTJjZjQ5YTM1YjI0MTdlN2Y3OGJmMGY1MGZjMmVhYjYgbGVnYWN5LXRydW5rCis3MTQyNSAwOTUwM2NlNjZmZjEyM2FjZjAyZTczMjkzNDc3MGY3YmY1ZGI0Zjk0IGxlZ2FjeS10cnVuaworNzE0MjggOGE0NTYzZDNiNWU4ODk1Yjk4Y2IxZDc4NGRjZWIyZjVlZWE0NTA1ZSBsZWdhY3ktdHJ1bmsKKzcxNDI5IGEyMWM4NDhhZDYxZWM0NDg2OTQ4NzY1ZmU4Nzc2ZTA5ZWE2YWVmYzYgbGVnYWN5LXRydW5rCis3MTQzMCA0MGViOTllODkzNWM2NGRlNGY3ZDU5MDc5ZjU3Yzg0MDUxMGE2NmFkIGxlZ2FjeS10cnVuaworNzE0MzEgYTZmZjE3YTQyYWQzMWM3YTk3ZjU3ZjAwNGYzYzI1YjgyOWNjMjIwOCBweTNrCis3MTQzMiAxMDYzNDgxYTM2ZjhhMmEyYTJhNDVkMTRhOTQxNTEyMmI4ZjUwZjI1IHJlbGVhc2UyNi1tYWludAorNzE0MzMgYTRiYzgwZjVkNmEwZjZiY2M1MTliZjJiZTBkZjA4MTFjNWFjZWEyOCByZWxlYXNlMzAtbWFpbnQKKzcxNDM0IGNiYWExYmMzNTBiYTIwNTk4YmVkM2M5YWRjMzkxYmEyZTBjMjJkMmEgcHkzaworNzE0MzUgNWYzNWM1M2EzYWQ3YjhlMTBlZjFkM2E4MWU3YzM4OWE0N2IzOGNmMiBsZWdhY3ktdHJ1bmsKKzcxNDM2IGY5Njg5ZDE1MGJiOWZkODJjMzMyMTZiNjNiODQ2NjVjMjk4MmQwZjcgcHkzaworNzE0MzcgMGI5ZTY4OTcxYTFlMmY5MjBhMDk1Nzg4Yjg0ZGM1ODJhNjJhZGQ4ZSBweTNrCis3MTQzOCA5ZWE5NTc0ZGFhNWJmNjk0Y2E1NzcxNDY1N2FiZmM0NjlkMTE0NTgyIHJlbGVhc2UzMC1tYWludAorNzE0MzkgNGE3ZGI0MTJmZGQyYWY4ZTJmMDE5YWY1MGE2YzNjYjE5ZmZlOTAxOSByZWxlYXNlMjYtbWFpbnQKKzcxNDQwIGFhOWIwYTZkN2FkZGQ2YTExMDU3OWU1NGZhZGY5OWI3NWMwNmI3NzMgcmVsZWFzZTI2LW1haW50Cis3MTQ0MSAwODljNzIxMDdkN2IxYzYxMjUyYTgzMDEyYzMwOTRiMGYwYTgxMWRlIGxlZ2FjeS10cnVuaworNzE0NDIgOTE2OTQzY2Y1MjQzNmY3NzQzY2UzOTAwNDhiY2IwYTI0ZGMxNWUzYyBweTNrCis3MTQ0MyBkYmI5YjcxNzZlZWYwYzZlMDY1NTVhYWZlYWZiYTMwZmJkZWExNzRkIGxlZ2FjeS10cnVuaworNzE0NDQgOWQ5MmVlYmI3YzMwNTAzZGMwMDZiNzk4NGViYTIzYjA4Njc2ZTRkOCBweTNrCis3MTQ0NSBiNjE0YTUxZjQ0MjM2YTZmOGFkZmYwOTcwNmZkNTEwMWYzMTZlMjNhIHB5M2sKKzcxNDQ2IDZiZjQyNmU1NTFkNTcyZTBjMmNlNTFmYTljZjJhYjk5NDE5ZmYwODQgcHkzaworNzE0NDcgMDMyNzUwNGE0ZjZhMWFlNDc0MTAzMThjNDg2MTliYTRjNzg0NTA3ZCByZWxlYXNlMjYtbWFpbnQKKzcxNDQ4IDRjZGRlZjE0NDQyODI0NGNmMGY4ZTBlMmNlNGNmNDZmYzY4NzA5YjQgbGVnYWN5LXRydW5rCis3MTQ0OSAzMjM2NmIzZTBjYTk5MDcyNTI2NzlkYTc2OTc1MTk0YzNmOGYyYmI4IHJlbGVhc2UyNi1tYWludAorNzE0NTAgMGMxMWMzNDE4ZDg5ZDQ4NmQzZWQxOThjODBlMjkwNjc2MDY0MzNiNCByZWxlYXNlMjYtbWFpbnQKKzcxNDUxIDlhODk5OTk3NzM2Mzk5NGUzYTk4NjhkMzRhYjEzMjg2MWVkZWFhNTMgcHkzaworNzE0NTIgYjkxMjUxNWZlOWNlMjJlYTdhYjkwY2Y5ZDg3YjVmOTBkNjcyZTc2MCByZWxlYXNlMzAtbWFpbnQKKzcxNDUzIDI3OTdlNWU2MDA4ZjBmZTRiYWMyM2FkZTdiNmM0ZmU2ZWU4MTQwZDIgcmVsZWFzZTMwLW1haW50Cis3MTQ1NCAxNWQ2MDc1YzA4NWIxZTAzYjI4M2YwNzdkODc1NmQ4NTMyMzNiYjgwIHB5M2sKKzcxNDU1IGM5NTAyNmMyZjJiYTBjM2UxZTBkNjU2ZGIwN2NhMjJkNjA3NTkyYjQgcmVsZWFzZTMwLW1haW50Cis3MTQ1NiBmMGY2MDg5MmNiYTFjOTM4MDJjNzE1MDVmMTA0YjBlNDI1NTQ4OGMzIHJlbGVhc2UyNi1tYWludAorNzE0NTcgMDZiNjQxNzhhMzBkMGZjYjA4NjRjYWU0ZGRkZjVmYTYyMzQ5N2Y3MiBweTNrCis3MTQ1OCAwYmU2M2M3NTA0MWFkZjdjNDY0NzU0MTlmNTgzMDFiZDFmNjI2MDNmIHJlbGVhc2UzMC1tYWludAorNzE0NTkgMWE4YmRlMThkMzUzNTM5OTNkZjdhMmE1Y2I1Y2VmZDM0ZDhkZWM3NSByZWxlYXNlMjYtbWFpbnQKKzcxNDYwIDc4YTk3MzlkYWZhNDEzZmMyM2NiOGUzZGY1NDJiNjRlZTM5YWRjN2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2MSBmNzI0OTc0YjhkODliMzM1YTk0YjQ2Yzg3ZmNlODIzZGIwMzIzZmQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjIgN2UyMjljYTBiOTJhNWU4NjJiNDY3MDcyNjViYjFhYTIxYWU1NzdjYyBsZWdhY3ktdHJ1bmsKKzcxNDYzIGQ5MzkyMGEyNWRhNGM4YzZjMmU1NzVjYzk4MWY5ZjM1MDM2YjFhYjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2NCA4ZjEzYTQxNGQ4NDMyOTU4ZTVkNzE2YjMxMjkyNGI3YWJiNzViODg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjUgZmI0MWZlNjdlMDYxYTI5YzQ0ODA5ZWVlN2U2ODdjY2U2ZGY4OWRmZSBsZWdhY3ktdHJ1bmsKKzcxNDY2IDFjNTJiMTQ1NGYxZTIwMmZhYTFjZmRjYTgxZWMyZmU3ZTNmZjUzYzYgcmVsZWFzZTI2LW1haW50Cis3MTQ2NyA0NDExMjI0Y2I4MDY4OGI0MWJlZjdmMDUyNWM4YjYzZjNmNjVkNjViIGxlZ2FjeS10cnVuaworNzE0NjggMmEwM2NkMDRkOGY0MDg2MWIyMGM2Y2M3MmZhYjcyODljZDQyOTE2MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDY5IGY2NTJmZTE2NDllZDhmMzg1YmI0NjY3NzUyMGM2Y2I4MzI5NTZlZjIgcHkzaworNzE0NzAgZjM5ZDMzNzUyNTgyMTU1YzZjYTcxYWUyM2IxZTE0NDI5ZGNjZjNmZCByZWxlYXNlMjYtbWFpbnQKKzcxNDcxIDhiMmNkZmQ1YWFiNmZjMzNlMGEwYTQ2ODIyMTVlZDMxZDM2NTIzNDcgcHkzaworNzE0NzIgZWYzNTkyZTllMDFlNWQ1OWZlZTYwZTJjM2Q5ODU5OTYzYWUyY2U5OSByZWxlYXNlMzAtbWFpbnQKKzcxNDczIGVjMjM5Y2ZhM2U2MTc4NTgwNGVlNDY0NTg1OTNiZjFmZTBmODQ1NDEgbGVnYWN5LXRydW5rCis3MTQ3NCBiZjJlZWQ4NjVhOGE0YzM1OTIwYjY2NzYwMjg0NTllMDkyODIzYzExIHJlbGVhc2UyNi1tYWludAorNzE0NzUgNGEzNWM4YTViZTQ2ZmU5Y2NhNTYyZjIwMTc0ZmRmYjk2MTBjZDViYiBweTNrCis3MTQ3NiAwMDAzYjViNGYwYzAzNDljNDU1NTA1ZmViOTBmZDk4MjI1YjEzNmFmIHJlbGVhc2UzMC1tYWludAorNzE0NzcgNjMyODliODJjODQ5MDMwMTBhODMwOTUxN2ZkNzg3ZWFkNjdhMDRlZSByZWxlYXNlMzAtbWFpbnQKKzcxNDc4IDkwMzU2OWIxMzJjMjQ3ODgwNWFmMDQxMTYzNWJjY2JiMjVkZWU5ZDggbGVnYWN5LXRydW5rCis3MTQ3OSAyZTM4YzYxN2ZkM2VjY2ViYzFlYjM0NzI1YzdmYmFjOTI4OGE3ZGU3IHJlbGVhc2UyNi1tYWludAorNzE0ODAgMzQ1NWZkNzg0NjdlNjU4MzdiNzNhOGQ4YTUwMDYxYmRiMDE3MThkYyBweTNrCis3MTQ4MSAzNzMyN2QxOTEyYTgxNDY4NjMxODBiNDg0NDk5NzkwNDczZjA2MzM3IHJlbGVhc2UzMC1tYWludAorNzE0ODIgNTI4MmM2NmQ4OTcyNWJkNDc2NWIzNWZiYWZmMmQxYjA5MzRhYmQyMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDgzIDJmOWM3YjkwYTc5NTgwYThlNGIxNGU3YzFhOWZkNjA5NGFhYWVjNTYgcHkzaworNzE0ODQgZjM3NmEzY2ExN2QzN2Y5YTMyYTVhNjhjYjJmZmVmNDdmZDA4ZmI5NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg1IDJkMzcyMDk4ODVlMjdlYjlkNDk3ZWQzZTljMzRlY2NkZWUzYTc5N2YgbGVnYWN5LXRydW5rCis3MTQ4NiA4ODYxMjk4NTg2YzEwZjFjNWJlNTk0NjA5YmJlN2E5MTA5OTc3Zjk4IGxlZ2FjeS10cnVuaworNzE0ODcgZDBiNzQ0MzAzYjg0ZTMyNTRiYjA1OWU0ODliMDcyMzM3NDU5ZmUzNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg4IGM5NDlkZGM0OTRlYjg2NmFlZDY4MjZjNzQ4NWRkZWY4MWQzMDhiZTkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ4OSAyOTcwNTBhYjdhY2E0NzY5Njk1YTJmM2VmMmNkNDZlN2IzNWU2NTc0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0OTAgZjM0MjgxZGI0N2U2MWFiYmE5ZGEzMzljNmRiMTUyZTcwNmQ3ZDMzOCBsZWdhY3ktdHJ1bmsKKzcxNDkxIDM2Mjk5ODI4NjYzNWQwNGZhN2YzZmY1YTkxMDk3YWU1YjZiZDQzYmIgcHkzaworNzE0OTIgNGFmMzExNDBkZTI5ZGFhZmE0ZTkxMWE5ZDQ4MGNlM2JmYWRmY2IwOSBsZWdhY3ktdHJ1bmsKKzcxNDkzIDE5ODkzNDkzNzliNWFjNWQ3YzM1OWY2OTA3ZDg1ZDBiYzE2YThmYWIgcHkzaworNzE0OTQgZDVkZGQzNDIxYzlhZTY4YzRiMjMxNDkzY2YxN2YzNDIyMmUyZDAzMSBsZWdhY3ktdHJ1bmsKKzcxNDk1IDdlOTc4Y2E0MjkzMGE5MDZiMGNjYmYzYzIzN2Q3OGQ2ZTYzODE0ZWUgcHkzaworNzE0OTYgM2IxYjYxNDI2OTBhYTNiMzNkNWIwZTIyZjU0NTY5YjNjN2YxNGU0MSBweTNrCis3MTQ5NyAwMzdmNWY3ZTdhYjFlNmRhMDZmMzNiZTJmODIwOWFmYzMyNjVlMjdmIHB5M2sKKzcxNDk4IGZlNWQwN2JlYjVkMzdmODc3ZDc0YmIxZTQ3ZDIwNzMzOTkzM2M1ZmIgbGVnYWN5LXRydW5rCis3MTQ5OSBiYjgxNjRkYjFiZGE2N2Y2YzRjNGJjMzdjMjFlM2Y4OGE4OWVhMmU2IHJlbGVhc2UyNi1tYWludAorNzE1MDAgNDg0ODU2MDRlZDQ4N2IxZGQ0M2FkMDMwODI1NzZjZTVhMzUyYTk3ZSBweTNrCis3MTUwMSBjYWRmOTU1YmMxOGJkMTVlMjg1OTdjYWY3OWM2MDY0MmRjYzdjNjkyIHB5M2sKKzcxNTAyIGYyMjFmY2UzZDZiYTM4Y2ZkOGM4OGYwNDI2OGU4YTQ2YmFlMWQ3Y2IgcHkzaworNzE1MDMgMDIxZDhjODJmMjg0NDdmZTQ3OGQ0MjEwODUxZjMwM2I5ODZmZTFiMiBsZWdhY3ktdHJ1bmsKKzcxNTA0IDkzZDRmOTgyNjE1ZjI2NGUwZGY5NjMxNGU1NTRiMTUxMWY2MGYzMWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUwNSBkMjNlODRlNDE4Y2U4ZDczYTExYTE4M2VkYmY5ZDEwY2NmY2ZiMzIxIHB5M2sKKzcxNTA2IDRlMDhiMThlMzhmYmUxNGZkMzRiMWRmOGU1ODAxY2Y0ZGI1NzkyNzcgcHkzaworNzE1MDcgYWQzZjNkMzA0OTYzY2RmYjIyOGQxZGZjNzIxYTVhMGZkNDA2NmJjNiBsZWdhY3ktdHJ1bmsKKzcxNTA4IDIxZWY0NzU4Y2FjZDQzMGZhZThhMjBlNTQ1ZTk2MmYxY2ZiZmVjNmQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUwOSBhODI0NDMxMjUyZTBmMjYxZDUyMzkxYTQ4MDIxYjAwNzVhMzM1MTBiIGxlZ2FjeS10cnVuaworNzE1MTAgMjkzZGM1ZjA4ZTk5MGUzZDM2NWI5ZTI1MTY4ZWEzZjdkODhhMDQ5NSByZWxlYXNlMjYtbWFpbnQKKzcxNTExIGUwNzIzY2NlZTc0ZGYxMWRiNzk2N2M4ZWE1YmQyZTY1MWE4OTIxYTggcHkzaworNzE1MTIgYTQ4ZmNlYjBmMGIzZmZkMGJmYjllZGE4ZDVmMzc3ZjU3YzIxMDFhOCByZWxlYXNlMzAtbWFpbnQKKzcxNTEzIDc1NGEzZjczZmYwN2ZhNTZkZWYzMGU5NWVlYmRkOTdiOWNmYmQyYTkgbGVnYWN5LXRydW5rCis3MTUxNCAzYjI1OTExYzZhNGVhNmE4ZTA2YWU2YWYzNmU5MDdkY2EwMDIyY2VmIHJlbGVhc2UyNi1tYWludAorNzE1MTUgMTY4NDgyZWFmYjU2MWRiODc5NzQ1ZWU5YjRlOTk3NTVjMmViY2Y2MCBweTNrCis3MTUxNiBlMmI5YjJiYzcwYjBlY2ZmMGIyNjlkYjI5MGViM2E0Y2Q4MDU5OTM5IHJlbGVhc2UzMC1tYWludAorNzE1MTcgNzEzZWY2OGU3ZmZkMDBhNTI2ZWU3MGZiMDQwZGU2MjZlNjgxOGFlZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTE4IDRjYTE0NzFiZDFjZDM2ODYwOTk1MzJkNTExYzdmMjViMTZlNWQ0NjMgcHkzaworNzE1MTkgZjRkNTUzZWM5ZGRjOTdlNzIzMzk4MjdiZDE4NzI2ZjdjNGQ4ZTg4MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTIwIGQ3YzU3ZTE2YjczYzVmM2RmZmY2M2VhODg3NDljMWQ4ZGExNzJiYTIgcHkzaworNzE1MjEgNDQwN2U0ZDA3MDg0MjFkZTgzYTZmMGI0NmE1MGM4N2MyNzFiNTZjZSBweTNrCis3MTUyMiAxY2IzYmNjZTgzMTY3Y2RkMmVhMGJkMTFiNjg1MTcwYzJlNzFlYjBjIHJlbGVhc2UzMC1tYWludAorNzE1MjMgMjYwNjlkM2I2ODkxOWFkZDk1MTE5NDNkYzYzYTdjNGNiY2U3YjI2ZSBsZWdhY3ktdHJ1bmsKKzcxNTI0IDQ2MTY3YWQzYWI5M2ZhODQ3MDUwNWFkZjExYzMyYjMyYjZiYTEyODIgcmVsZWFzZTI2LW1haW50Cis3MTUyNSBjOTE2Zjg1NGZhZWIyYjg1ZTNiZmY4ZGI5MTFmYzNlM2ZiYTk4YzdkIHB5M2sKKzcxNTI2IDg4NjdhNWI2MGE5MTMzNDZhOWFiOTBhYTE0NGUyOTU4NTU5MmMwYzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUyNyA2NTA2Y2MzM2ViYWRjMTk0YmE4N2Y5Y2RlNGZmYzRlZTNhMTFlYTE0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MjggNTM2ZjE4MGY2NmE3NzYxYzU1ZmU4NTcyOTU0YjkwOTcxOGQ0YTEwYSBsZWdhY3ktdHJ1bmsKKzcxNTI5IDE0MDkyOGM2Y2Y1MWYwMTNmODBhODZiNjk2ZmY3MGFiYjg0MjBjNmQgcmVsZWFzZTI2LW1haW50Cis3MTUzMCA4YzgyYjdjNTFiZGRlMzBhNWFmNGM0ZDAwNWUxZGI5MmZjYTAwOTFiIHB5M2sKKzcxNTMxIDQyNzI5ZWRkYmI2YzBiMDMyZTlmYmRlYjE2MmFhYzZmNzNiNjU4YWUgcmVsZWFzZTMwLW1haW50Cis3MTUzMiBkMGE3M2NmNDYxODBkNDEyYTc1NDU3NmMwYmIxZmNkMWMwMzg5ZGIxIHJlbGVhc2UzMC1tYWludAorNzE1MzMgMDk4ODg1YzZiMTAxZDA4NTc4YWZlZWFmMjQzMDhhYmMyYzgzN2I1ZSBsZWdhY3ktdHJ1bmsKKzcxNTM0IGJiYjYzYzcxYTk4MzE5MTQzNDE2MDU1NmVlNzJmZjgxZjM5NTNkODAgcmVsZWFzZTI2LW1haW50Cis3MTUzNSA5M2EyZDgwY2QzNGQwMzgwMTRkMmE3YmZlMzBmYWQzODQ4OGFjMzBkIHB5M2sKKzcxNTM2IDY2ZGE1MTRlM2ZhMzk1MjkwMGE5ZmI4OTZkNjRhZDZmYWE2NDQxODUgcmVsZWFzZTMwLW1haW50Cis3MTUzNyBhMjQ5MmI0ZTUwNWRmM2ZjMzM3YWQyNWZmNjhjOTI4NzgzMjc2YzVjIGxlZ2FjeS10cnVuaworNzE1MzggODMyMjhiYmU1OTA2Nzg4MTRlNGU0NGZmMjQxMzU0Zjk2MDI4Nzg3ZiByZWxlYXNlMjYtbWFpbnQKKzcxNTM5IDdlMzE5ZWVmYWI4YzhlZjg0ZTU0ZDI0ZTkwNzg2YmNhMWUwYTExZjkgbGVnYWN5LXRydW5rCis3MTU0MCA0ODBmN2VjM2I4Njk2MDhmZmRiODgyMmNkY2NlZTVhMmI1Y2EzOTVkIGxlZ2FjeS10cnVuaworNzE1NDEgMmVlYzU3YWJjNTIzOGYzOTdiMmU3ZjczZmFlMzhlMzhkMzlkMTdhOCBweTNrCis3MTU0MiBlOWUyYWUzYmZiYzE0MDQzMzBjMWM0NTMyOTg2NmJmZjE1OTM0N2Y4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDMgOGJjNGJjODdjODg1OWU1ODkxN2QzNzk4YjA0Njk1NTg2NzhhZGYwYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQ0IGFlNzQxNDIwODlkMmJiZmYyNjkzZTRiMGJlNWRkMGIyMTUzNjU3ODUgbGVnYWN5LXRydW5rCis3MTU0NSBkYTBmN2ZjNzg3ZDgyNmQ4Y2RmN2ZjMjNmNzYyZDQ3YWVkNTY3ZTRiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDYgYmM1YzVkN2EyYTE0NzlhMDU3NmQzNzk4ODk5MjZjZmFmNGNhYzEwMSBsZWdhY3ktdHJ1bmsKKzcxNTQ3IDdkNDQ5OTcxMWE3ZDVhZGIyYzM5NjdlMDUzZmIyYzI5MjNmY2JiYjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0OCA2MjJhYmY2YWM5N2ZhYjM5MGQzMmEzMTg5OTFhMmIxOWViNDUzODNkIGxlZ2FjeS10cnVuaworNzE1NDkgMTJhOGQxOTQ3MTY3OTE0YWQwMzliNGUxZjQwOGUxMGEyNWRjNjE1YiByZWxlYXNlMjYtbWFpbnQKKzcxNTUwIDU0NzI3ODk2NTFlMTYxMTAyMjhlZTYxZGNjZDljZDBlOTQwZDFhNWEgcHkzaworNzE1NTEgYzc0MGZlZmFlMWJhYjBlOTFkMWYwYmJlNTcyMzI0NGM2N2NjZGQ3YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTUyIDQ2MDdmNTRlNzY5MzZiODdkYWM3ODhiNGM3YmVmOGIxOTA5MzJiNmQgcmVsZWFzZTMwLW1haW50Cis3MTU1MyBhYjc1ZGEyNjZlNTdjNTVlNzc3MDI0ZmJiODRhNmEzMDA4ZGM0ODM1IGxlZ2FjeS10cnVuaworNzE1NTQgMzc3MDY1MmViMGU1MDk4YmYxYzQyNjA0MTE5MTBjNGM5M2ViNTMyMSBsZWdhY3ktdHJ1bmsKKzcxNTU1IDllM2M5NzZkYTVmNDA1MjdkMzllNzE0ZDIxY2VjYjdlY2UyYzJkYTEgbGVnYWN5LXRydW5rCis3MTU1NiA1ZWYxOGYwZjQzMTA5MWQwNWMyYjRiMjYxZTA5YTE4MDU5ZDg1ZmUwIHB5M2sKKzcxNTU3IDZmOGZjNmIxNjdlYThiMDEwODE0ODU5NDMzOGI2NzY0OWIwOTRhZjIgcmVsZWFzZTMwLW1haW50Cis3MTU1OCBlNDljZDRmNDdmNzYyMGIwMjdlOTZiYzI4MDJhNjY4YjA2NzU3ZmIyIHJlbGVhc2UyNi1tYWludAorNzE1NTkgOTUxMzJjYzIyZWU1YWI3YjhkYWVjNjE2MmViMzJkODI2MzJkMzA4NyBweTNrCis3MTU2MCBmYmMzN2ZiZDk0MTVmZjVkNDRlNzJjNWYxMWY1OGMxNGQ4ZWQ1NDEzIGxlZ2FjeS10cnVuaworNzE1NjIgMGU0NjlkYTY3ZDYzYTVmNDhiNWZlMWY0YzBjOTZhNjU0YzFmZTZhZSByZWxlYXNlMjYtbWFpbnQKKzcxNTYzIDk5MGYyNTc5ZWFmZWM5NTA1ZWIwMzNhYjMxYjlmOGIzNDMxMmNlMzggbGVnYWN5LXRydW5rCis3MTU2NCAxZGM1M2UwYTE0N2E3MDQzNmJkOTYzNmY2MWFjZThlODY0YzYyOGZkIGxlZ2FjeS10cnVuaworNzE1NjUgNTMwOThmMjcwYmJkYTAzZjcyZWJhMDhlNjU2N2VlM2Y1MTc3OWY2ZiBweTNrCis3MTU2NiA5M2QyYmVmY2EwYTU0ZmVlNzZhOTkwNzczNTE2OTBhZTdkMTg1N2NlIHJlbGVhc2UyNi1tYWludAorNzE1NjcgYWFjNzBhM2JhMjUwZjNhNDZhMmM5MTJkOTA4Y2ZmOWNjNGUzZWM2NCByZWxlYXNlMzAtbWFpbnQKKzcxNTY4IDc0YTRhMjdlYTI5MWNiMWZlNjljZWFlYTAwNjNiNmI3MzA0YWVmZjcgcHkzaworNzE1NjkgOGExNzMwNTdkOTAzMWM1MmY4ZTE2ZDgyNTVmNzhiNjI1MmNmN2E4YiBsZWdhY3ktdHJ1bmsKKzcxNTcwIDNiYTY1ZWU0MWZlN2VhOGRmZGQzOTM4NTNjZDkzOTI0OTgxYzI3MjAgcmVsZWFzZTI2LW1haW50Cis3MTU3MSA4ZWVlOTRjNzRlOWM5ODdjOTJlMjc4YzBmMmIwZWVkYWY2ZTBhNGU5IHB5M2sKKzcxNTcyIDU2YWMzZDUwOTUyYzg3N2QwMWEwNWYzNzQ0MWNhZmNmOTUyMDliODAgbGVnYWN5LXRydW5rCis3MTU3MyA3NzRmN2JjYWQyMmM2OWY2N2QzMWU1MzA1MTk1MzMxMTE5YjFhMjllIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzUgOWZkNjZhMjFhYmQxOTY3ZDNmMDg0MTRkMTk5YTY4NWM5YWEwNDA0ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc2IDI4ZWE1NGE2YmI2NDYyNTllYTYzZGZhY2UzNWY5MTIxZWNkZWY4NTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3NyBjNjZkNGUzMDZmYjY4NTIxMjQyOTcxNTJhMmNkYTdlMzNmYmIwNGYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzggYTRjYzQ2Y2FiNmE3NDMxMmJhY2E3MjA4ZDdmNDhkY2I2NTQ5ODUyNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc5IGM4ZmIzOThlY2EyMzczMzY0N2RkZmNlNDBlNmFmNDg4NGFjMmJjOGIgbGVnYWN5LXRydW5rCis3MTU4MCA1N2I4ZGM0YTg4ODhmZjkxMzM2YTMzNzZhZTlhZGNjOTNhMTk1YzhkIHB5M2sKKzcxNTgxIGNjZjBlNjQwOTUzNmQ4YzJjODZiNmQwNTEwODMzMWM1MDY5MmE5N2MgcHkzaworNzE1ODIgNThiNzQ5NjdhNTQyNWNiNzFkMTFlNDY2MjE4ZDFiNDEwZDliYzg2OCByZWxlYXNlMzAtbWFpbnQKKzcxNTgzIGM5N2U0NWU5MDU5OWU2NWE4NWUwOGZiMzQ4NDk5ZDg0NDgzNjIzODAgcmVsZWFzZTMwLW1haW50Cis3MTU4NCAxNzdlMTA3MzA1MmM4NTliZWUxN2VkMjVkNDQ1NjMwNzA3MTE5ODM5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1ODUgNDcwMzk2NWRhMmNlYTlmZjg0M2MyMGYxNzUxZTMzZGM3ZmJjNGFkZSBsZWdhY3ktdHJ1bmsKKzcxNTg2IGUwOWE2NzFhNTkwYjdiYTVlMjc2NDY0MDc5ZjJiZmJhM2Y0MTljNDYgcmVsZWFzZTI2LW1haW50Cis3MTU4NyBlMDNiYTVmNmY0OTQwNjAzZTA3NTlhZjM2ZmUxMmQxOThhNGYzMzUyIHB5M2sKKzcxNTg4IDg1YmMyNTM3ZTgzZTNkOTYyNDVmOTZkYmU2YmQ3MWE3ZDc3ZDNlNDMgcmVsZWFzZTMwLW1haW50Cis3MTU4OSA3YmFhNjhkNjZjOGZjNzk5ODQzMzUwZmQwMDg0YjUzM2VlZDM2NDAwIGxlZ2FjeS10cnVuaworNzE1OTAgNzFmNDhhZGFkODkyM2U3ZDllNzkxZDZiMzZkZjFjMzVkNmIzN2UzZSBweTNrCis3MTU5MSA2MDUxMzgwODU3N2YzMjM5NGYyOTdlOGNjMmVhM2M3Y2M2ZDM1OTBhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTUgMDk2NzY3YjE4NDUwMTg2NThmNGEzZmRkM2VmMzQ2MjY1Nzc1MjM5MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTk2IGU3ZGJmZDAyM2ZmNTIxZWVmOTNjZDMzZTYxMzRkYjY5ZjA2MzYxNDYgcmVsZWFzZTMwLW1haW50Cis3MTU5NyA3OTQ1MjVlZDY0ZmQ0MjNiYzVjYTEzMWU3MGJhMTRjYTkxMGFiYTg1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTggZGFkM2QyYjlhODc1M2Y0NWYxOTZiNzAwNjQ0Y2Y5ZWZjMjZiY2Q4ZSBweTNrCis3MTU5OSBjMTdjNWJhOWJiNmNjN2JmNzZhMjUzMzQwY2RhZWRmZGE0ZGIwMzNhIHB5M2sKKzcxNjAwIDRmZWJhMDlhODI2YmE5OWU1YjQ4MjcwN2IzZDk2NDNlYmEzNDE1NmYgcmVsZWFzZTI2LW1haW50Cis3MTYwMSA2OThmYTAyNGU3ZDIzOWYzYWRiN2EwM2Y3N2UzNTc4N2U2ZjA0OTkzIHJlbGVhc2UyNi1tYWludAorNzE2MDIgNmQ5NWQ5NzkzZmNmNTAwMDIwNzM5NDVlNGFlYjBkM2VmMTUwZmE1ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjAzIDJmZDA4ODMwYTkzZjEzMjgxOTA1MDVkZDhjMTk2NzM1MzJkNTBiN2EgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwNCA1NDI4M2I0YTE2NTdmY2ZiNmZkNDdhZDQzZWQ3M2QwNWZkM2Q3ZGI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDUgYWQzYWNjZGUwZWU3YTdiYzVlMDg5Mjc3ZGRlOTcxOGQ4MTFlNjg1NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjA2IDBiN2U0MTQxODM0MzMyNjZiZTdlNjliZDM2NDcyOWY0NTMyYWY4YWYgcHkzaworNzE2MDcgZmQ3ZjM2ZWFkMGM4MTcwYmZlYTYzZDlmNTcwMWVmYmMxZmYyZWQxMCBsZWdhY3ktdHJ1bmsKKzcxNjA4IDlkZjVkZGMxOThhODAwYmVhMjRhMjA2YTk2Zjc0MWVhMDRkMjAwNmUgcHkzaworNzE2MTEgMTY3MDRiMTVkZjNlYmU3ZDUzZDVkYTA2MmVkMWI0M2VlMDAyMWEwMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjEyIGMyNDNiMTBhYjczMDU1MjVlNTBmODUzMWEyYzlhOGQxZmIxYWZhOTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxMyAyOTcyOWI5MDhhODIwZGNhYzMwZjhjMGYwNjQ0Mjk5NWZjNTUzMGNmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTQgYjhmNDFkYjhmNmFkYTA4YTU3ZTFmMzc3MjJkZjg4MmFjZDAxM2U5OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE1IGFiZWZjYTJmZDkyZTIxZDNjMzc2NWE2ZDdhMmFhOGI5Njk5YjE1ZWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxNiBhNzRlMTAxOTE4NTRkMjFhMDYxNThmMzQ2NjQxNGYzNjFjMmRmMjBiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTggNDA4NzYxY2EzZDk2NjNiNmVhZDU4ZDc3Yjk0Zjk3Y2QwMGRlYjk5OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE5IDYxOWRjYWM4ZDM4OTA5NjViNDQ3NzJkY2Y3N2E3YzUyM2NiNGQxOGUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMCAyY2EyMDlmM2FhYTI5NDE1MWJiMzdjZTdmZmM4NTA3ODBmNWM5OTk0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjEgMTJiZGIzOTcyZTJhN2FhNWNmYzJjYWQzNjI3YzI2OGJiNzQ3MjY1MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIyIGQ4ODFiMDZkY2EzODhhZmJlZWQ5MTgxN2Y5YTE1NTUzODhhZjhjYjQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMyA2NzM0MGZkNmFjOGEzYmE4ODg0MWVmMzllZWQwOTM1MTQwNzUzNjYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjQgMmQ2MTE2ZWVmMmIzNjdiM2Y5MmI4Nzg4OTE4OWQ3OGI2ZWE4Yjc1ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjI1IGNlNjdlNzgzYTZlZDIzZDg2MzYyZjU4ZDQ2Nzk0NjMzMzVlNDRkOTMgcmVsZWFzZTI2LW1haW50Cis3MTYyNiAwN2QyMzllZWFhNjJlZjkxYjU5NGJhNTRjYTlhZjRmNzkwYzg1Y2UzIHB5M2sKKzcxNjI3IDViMTA4ZWJiZmMwODNlN2ZkMzFmNzMxNjM1OTQyNzgxOWQ4ZDhiZDkgbGVnYWN5LXRydW5rCis3MTYyOCA0NDE5ZTA2MjE5Y2FiODkyY2Q1NjkxMDM0M2MwZjJlNjkyNDBjMzU0IHB5M2sKKzcxNjI5IGRmMjYzOGI5YmVlMmVkYzBmNjM2ZjRlMzFlMDUzNjkwMDE5MjQzNGEgcmVsZWFzZTMwLW1haW50Cis3MTYzMCA2YmNkYzEzMWY1M2NiZTMxMDg3NjEwOGY5OTg2YzU2NTRkOTE4ZTBhIHJlbGVhc2UyNi1tYWludAorNzE2MzEgNDYyODIxN2IwMTNjNDA0ZmZmMGY2ZmIyNGRlYmJjMDFkOTZlZWM0MiBsZWdhY3ktdHJ1bmsKKzcxNjMyIDdhNjlmZmM0ZjRhZTM2NmM1ZTI1MzA2NjlhZGVmNjJmMzU3YTgyMmQgcmVsZWFzZTI2LW1haW50Cis3MTYzMyAyMGNmN2Y4YTU0MDUyZmEwMmEyYzdlYTliY2RiZTEwNDFhMjI3MTNkIHB5M2sKKzcxNjM0IGYzMjVlZGZlMGMzYWNiYzBiYjlmZDM0MGFhNTAwYzBiZDFiMDdmZmIgcmVsZWFzZTMwLW1haW50Cis3MTYzNSBjNTRiNzg0YTU2ZDU1YWRkYjk0ZWMyZGZmNTAyZDU3MTk0YTIxMWU0IHJlbGVhc2UyNi1tYWludAorNzE2MzYgNWZmOTAzMzJmOTEwZTNiN2Q2YjI4MDY5NjEwODIwZTdiMTcxNGM3ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjM3IGVlYmU1ZjdkYWYxZTc4YjA0OWYzNmFjYWM3MGU1MjMwNDMyNmNlYjEgcmVsZWFzZTI2LW1haW50Cis3MTYzOCA0M2VmNzRiZmM1Njk2MTlhOTJlODFjMDBlOTFhM2RiYWI0NTdmMTJkIHB5M2sKKzcxNjM5IGFjOTNjM2Q4ZTE5MjA1Yjg3ZDhjNzdhNjg2ZTIyNDY3OTBkYWFmZGMgcmVsZWFzZTI2LW1haW50Cis3MTY0MCA0OGI1ZmFkOWNlMWIyODRiYTc1ZjJlMWQ2NWI4MGRjNzMwNjRmZTIzIGxlZ2FjeS10cnVuaworNzE2NDEgNzdmOTA5YWMzZTEwMjI5NjhkNjA1MWFkZmE3NGEzZDhhZDM5MDJmNCBsZWdhY3ktdHJ1bmsKKzcxNjQyIGQzZjAyMDQwMGZmMjdlZmEzM2FlYzY4MmE5OTc2ZjdkZDA1N2FiMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0MyBjNTI0YmZlZTcwM2FlNTJjOGE3NDMyMDVlMmI2NzRmZGU2MjdkYzI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDQgM2ExMWEyYWQ4ZjdiODA4ZTYwYzg2OGEzYzZkNmJiMmUyYmU1ZjQ0YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ1IGE2NzkwYTNiODBjM2EyNDBiM2NhOWNhZTMyZGJiYTUwNmVkZDFlNGQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NiBjZTRmN2Y0ODliZDM2MWFjODk2NjRlOWY1OTk3MWE4YjY3YzRhZGUyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDcgNDUwMGFkYzMxYmUzYjhhZWMwNWQzYTEwNTBjMWMxOTE3NmUxNGViNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ4IGVkZWJjODkzYjAyY2UwZmIyNzE0M2IxMDFkYjRjMWU0ZmZkN2U3ODMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0OSBkYjczMDRiZmJmN2RjM2NmNzA2MmQ2NWQyMjY1ZjI5OTE5OWIxZWQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NTAgYTI4YWY1NWM2ZTU4ZjAyYThkZDFkZmRmYzczMTYyZWFmYjUzY2FjYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjUxIDVkNDcyOWM0NzAzMzU4ZDRmZGE3NjgxYjQ0MjJmZjIxOThiNDgyYmYgbGVnYWN5LXRydW5rCis3MTY1MiA3M2JiNDk0NTE4ZGQ2ZDM5MDVjODM1NjhiYTFiOWJmM2ZhODc3MTk0IHB5M2sKKzcxNjUzIDFmNWY5OTI4MDFmOWY2OWMyYWY5MDZhOWMyYjkyYmEzZjY2YzE3NTQgbGVnYWN5LXRydW5rCis3MTY1NCA4ZjY1MzU2NzI5MWYwYmJiYTNmYjM3ZTI0YTRkZmUwYWNjOWNiZTk3IHJlbGVhc2UzMC1tYWludAorNzE2NTUgZjBhMTZlMWRlZWExM2Q4OGJiYWUxOGFmZjQ4MzdjYzFjZTdjZjFmOSByZWxlYXNlMjYtbWFpbnQKKzcxNjU2IDk3NWJlMWViM2ViZjM3ZGI1YzFjMGFhNDNkMTkxMGEyODI2NjRmODYgcHkzaworNzE2NTcgNzNiZmNiMzk4ODg2MmFiODNiZjUwN2QxNWY3NTJmODkyOWZhN2QwZSBsZWdhY3ktdHJ1bmsKKzcxNjU4IGNmMTkwZmYyYTcyYzRjNDc2MmZmNzgzNjA2YjE3NGI4NWU5YjA3ZDEgcmVsZWFzZTI2LW1haW50Cis3MTY1OSBhNjNiNDZhZGUyYjdiNjFjN2QwNjE1MWM3MzdkNGU4N2NhMWY0OTFhIHJlbGVhc2UzMC1tYWludAorNzE2NjAgOTJmN2E0NjBmZjgyOGRkYWJlZTc4MDMzOWQ0MTZhZDkzYzdhNDQ2NyByZWxlYXNlMjYtbWFpbnQKKzcxNjYxIGYwMjIyOGQxZjkwODBjMmJlZjlmY2Q1YTdiZGU3NGUxNDJkNDQzYWUgcmVsZWFzZTI2LW1haW50Cis3MTY2MiA4OWRlYjZiYzgyZTRiZjg1MDRhOWJjMTNmOWU2ZDc2NTE3YmZmN2MyIGxlZ2FjeS10cnVuaworNzE2NjMgOTdhZTdhNzA5YzFkNDExYTUxMjc2ZmM3OGE3ZjE5ZjJhZTk5MmU0ZiBweTNrCis3MTY2NCA4NjZhOGJlZWMwNjU1MDllMTY2YjRiMGNkNjE0YzRkMDIzMzA2OWE2IHJlbGVhc2UzMC1tYWludAorNzE2NjUgYjY1M2VhYjEzYjczMjg2ZTk3NWRhZDkyYTliZTc2OGIxYTQzZWE3NSBweTNrCis3MTY2NiAwN2M2YjA4ODk2OGIyMDU5ZGMyZGM4ZDZlODNjYzhiNjNlZGNmNzFmIHJlbGVhc2UzMC1tYWludAorNzE2NjcgMDdjMTExNDY5NWU5OWYyZjViMWIxZWU1OTI0Njc2M2YxOTI3NDI0YyBweTNrCis3MTY2OCBkODRhZDk3M2NkZTI1ZjY2NWMzZjI2YjZhNjZmN2M1NTJkMjJlZGY3IHB5M2sKKzcxNjY5IGNjNTU2NTQxNWFkYTQxN2RjYTM3NzI0NzJhNGM5NjIwNDlmMGRkM2UgcHkzaworNzE2NzAgOTczZjRkN2FhODdjZmZkYWE2OGEyOGNjZjZjMTEwNmY3NTIzZGY3MyBweTNrCis3MTY3MSAwY2Y3Nzk5ZmExOTAyYTdjMDIwMTY1Yjk2MTIyNjE5ZTVhYjgwYTVhIHB5M2sKKzcxNjcyIDAwZTA1NzEzNmZjNjc3ZDU0M2ZlYzA2OTkxNjM0ZjIyOGM5YWFiMWYgcHkzaworNzE2NzMgMGVmNWNlZGRiMWMzZGJhNDFiZDMyYjU2NGQ4MGNlZjJlYjYyY2ZmZiBweTNrCis3MTY3NCBjNjBjMWQzOWE5NTE2NTFjMGJhMGMyYTUwZTQyZWE2NzhmNWU1ZjI4IGxlZ2FjeS10cnVuaworNzE2NzUgOThhNTBhNDlkYzg2NTBiYzk1N2RmMjIwMjg3OTBjYzMyMjdjZDdiOSByZWxlYXNlMjYtbWFpbnQKKzcxNjc2IDIxMjQ5NWIwNDEwYzMzZWZlNGUxMDM2MmE3MGEzNjlkOTEyOWY2ZWMgcmVsZWFzZTI2LW1haW50Cis3MTY3NyA5ZWFiMDU3M2Q4NDU0ODE3YjZlMzIyNjJhZjNlNmFjMTI3ZWQ1ODE5IHB5M2sKKzcxNjc4IDhlNTFmYWU5YmI3NTQyOWQ0ZDQzMjU2MmI1OTdkMmUzOTJhMGNiMGQgcmVsZWFzZTMwLW1haW50Cis3MTY3OSA4MmEyZWY1OTYzZTBmMDk1Y2ZjYzNiNjk4MDM4MzFkMTg2YTY4YTQyIHJlbGVhc2UzMC1tYWludAorNzE2ODAgZGIyOTJlYmE3ZWMxYWFiMTZmNTRjNDVmMTAwZjc0NTJhY2Y2YWYyYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjgxIGM3NDI5MjBjNDVmNzcxYzRiNzZhMmM3ZTM0OWE5MjYwNDlmNDgzZWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY4MiA2ODc0ZDcwNTQ2MDQzMjU3YmJjZjEzMjY1ODE2M2E5MjdkN2VkYWU0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2ODMgOTA4YzYzOTgwZWVjZTA2Y2IzYjY0MzE5ZTQ5NjE4MTRlZjFkY2UwYiByZWxlYXNlMzAtbWFpbnQKKzcxNjg0IGFiMDZhMzhiNTkwY2M0OTc4ZDdkMTIzOTcxYzQxNTQ2MjgxZGQxOWEgcHkzaworNzE2ODUgYTcwOWJiNWRmYWY1MTE2NTUwMGVlZWY2YjE1YmNjNzEyMjUwODAxMiByZWxlYXNlMzAtbWFpbnQKKzcxNjg3IDk4NjJkNTI3MmQ4NTdhYTc4NDQwMTJiMjg4ZTFkZmQyOWEwZjAyM2YgcHkzaworNzE2ODggNjZmZGNmYTk0MDBiMDFlY2RkNDM3M2ZkOTY3ZTNlZDMwMzU4YzRjZiBweTNrCis3MTY4OSBmZTk5YTU2MmI3MDg1YjI4NDM2Yjg1OWFjOTE5YjU0ZTIwYTQyZDQxIHB5M2sKKzcxNjkwIDI2OTUxZTU5NTg5MzFiOGQyOTMyZTA4ZTZkNzVlOTk4MmIyYWE5MWUgcHkzaworNzE2OTEgOGQ4ZjJmOThhNzUyYTc2NWRkYjA1YTU3ZTQ0MzhlNDdjZDRhZjk0OSBweTNrCis3MTY5MiAxMzkxNmJiMmVmZjA3Y2M0MzdlN2RjNzA1NDA1MTBmOGQ5YmVmY2QwIHB5M2sKKzcxNjkzIDNlMzE4YzRhZjk2MWMzYTA5NjkzZDdkOTc3ZmMzMTY0N2NiOTM0OTEgcHkzaworNzE2OTQgMjQ5ZDUwMGE3NzlhODdjODhhM2NmNzkyZDdkYzY1MzA1Yjk4OTc1NSByZWxlYXNlMzAtbWFpbnQKKzcxNjk2IDAyY2I0MjBkODYyZTY5YWUyMGQ4NjBkMzJmZDY5YTMyMzU2YmE5ODAgbGVnYWN5LXRydW5rCis3MTY5NyA4NThiOWQwOGUzNGI0ZWRlZTRhOGUzNjlmMjgwNjYzMGZjODlhMDVjIHB5M2sKKzcxNjk4IGM4NGM3NTUyNWJiMzVhZWYyZjBkZWYyZThiNzlkMGMwMjc2ZTA5MGUgcHkzaworNzE2OTkgZDg5NWE0MmRmYzk4OTJkYTZiMDQ4ZjBjZjI0OGQyNmI4YjNkMjE2ZSByZWxlYXNlMzAtbWFpbnQKKzcxNzAwIGQ2ZGE2NDYzNTRkMjFlNzFkZDY1YTQ5ZTBmYmNlNzYwOGFkMGRlYWIgcmVsZWFzZTMwLW1haW50Cis3MTcwMSBkNDNkNjQyNTJkMzYxMWQ5NjdiYTc5YzcwODNiZjA2NDQyOTQ3ZWFmIHB5M2sKKzcxNzAyIDJlZDBkN2UxZDE3NzM1Nzg4YjQ0NmNhMTk1ZTcxOGM1ODNmODY3NGEgcmVsZWFzZTMwLW1haW50Cis3MTcwMyBmZTE1NTI2ZWJlOGJmNjg3OTg1ZGViMzIwZjNiMjlmOWFjZDUwYTgyIHB5M2sKKzcxNzA0IGM1Yzg2ODBlZTBiMWMxZmE0Y2ZlNzRhNWVhNGQwMWVjZTFmODE0ODYgcHkzaworNzE3MDUgYWQ1YzdlYWNjZWExMTI1MmVmODQyZTc5MDc1ZmQ0ODVkMTE0MGYyNSBsZWdhY3ktdHJ1bmsKKzcxNzA2IDgyMDliNmMzMmU2MTJiYzQ1N2RkNjJmZjU1YjE4YjI2MmU2MGJiYWIgcHkzaworNzE3MDcgOGE4ZGM3Zjg1NDNlODdjZjY2MWY4NzA1ODI4YmZkY2JmNjAyNjMzOCByZWxlYXNlMjYtbWFpbnQKKzcxNzA4IDM0MTIxNTZmYjhlZjZhNzFmYzQzYTgyYWYxYzBlMWQ2NTZlZjQwY2IgcmVsZWFzZTMwLW1haW50Cis3MTcwOSA3OWE2YzYzYWM1YjBkMjBlY2U5YWI5ZWMwOGQ5YmNiZjc3YzJmNGEyIHJlbGVhc2UzMC1tYWludAorNzE3MTAgOTZkODJmYWNkODkwZTlmNmQ4ZTgyMjk3M2E5ZTMzN2RjZmFjODc0ZiBsZWdhY3ktdHJ1bmsKKzcxNzExIDZhN2ZhMDRkODExMWU0ODEzYjM0NzViOTE3MTRlOGIwZjVjNTg3NzEgcHkzaworNzE3MTIgNTY4ODdhMmE5MGFlZjYzOTMwMTVmYTMzMmNkODFkNDlhZGQzN2IwOCByZWxlYXNlMjYtbWFpbnQKKzcxNzEzIGZiMDhmNjBhYjUxMTE3YzhkNDZiOWNiN2E5MmJlYzI0NGE0ZTI4YTYgcHkzaworNzE3MTQgNGZhNDc2ODZjMGQ3MGZkZWMzMDEyNzQwOTQ0ODU4OTgxNmU1MmJkYiBweTNrCis3MTcxNSA5MzIyMzYwM2M5OTIyMDZiOGZkOTgyNTdhMjc1NWYwYWZmZDM1ZmE5IGxlZ2FjeS10cnVuaworNzE3MTYgNGQ5OTgyMDdjZmMzZTljYzMyODFlMGExZWY5OTJlYjQ5OTYyYmEwNCByZWxlYXNlMjYtbWFpbnQKKzcxNzE3IDcyYTcwMDBhODYwOTQyYzUwOTZjZmE4ZTVkZGQxZjNkMDdjMGNlMDUgcHkzaworNzE3MTggYTRmMTE3ZTkyMGZkYTYwZTBmZWM2ZjhiMzcyM2RmNjhiMGZlMGEwZiBweTNrCis3MTcxOSBjNGU5YTg3NWM5YTU0ZmI3MmNjYjlhNjMwZmUzN2MxNDVjYTY3N2U3IGxlZ2FjeS10cnVuaworNzE3MjAgZGRhMTRhZmExMmI4NWIwZDdhMGM1NmQwOWM5NDRlZTI4M2IyZjYwZSBweTNrCis3MTcyMSA5NzU1ZDhkZDMzNjZhY2NkMjQ2MjFmNDk0NzNkN2EzNjFhMGJiZmE3IGxlZ2FjeS10cnVuaworNzE3MjIgNzc5MGI4NWU3MDA5YmU3YWQyMWExNWNmOWY4ZTQ3ZTQ4NWZjN2M4YyBsZWdhY3ktdHJ1bmsKKzcxNzIzIDI4NjQ1YTk2MTAwNDI0MDZhNjVlOTU5YzlmNTAwOTE0ZWU4ZjZlNzcgcHkzaworNzE3MjQgYzI3N2NmNDE5M2QxMWM3Njk5OTRmZDJmZDY4NWFjZWUwOGRkNjBlNSBweTNrCis3MTcyNSAzZThkYzU5ZDY0ZGU0NDQwMzY0NWMyZWRjNDRkNjZlNzk2Mjk2ZmY2IGxlZ2FjeS10cnVuaworNzE3MjYgMzI5Y2IwMmYxOGU2ZjIyZTRlN2VkNTAzZmNmODRjN2JiNDYwNzQyYiByZWxlYXNlMjYtbWFpbnQKKzcxNzI3IDZlYzNkZjM3NWY1YTgyNjY3NjNmNDc5NjJhODMwMDEzMzNkMWI3M2UgcHkzaworNzE3MjggY2YyMWU5ZDI5MDYyZjE2YTc1ODJmMDExYTk3NGYyZmU1YmIzYmEzMiByZWxlYXNlMzAtbWFpbnQKKzcxNzI5IDcyZmY0NGMwNTI5NWI5NTVjNDYzY2VhMmUyYTRlMmE1ODNkY2IzOGMgbGVnYWN5LXRydW5rCis3MTczMCBhNmQzMjQxMzZlMDE0NWIyOTU4ZjlhYWNlMjE1NTg2N2JhMmQxNzdmIHJlbGVhc2UzMC1tYWludAorNzE3MzEgYTgyYjUzZGJjNjU2NTVkYWFlMTVkNTJjNGRlYjdjNWM5MDY3ODI5MCBweTNrCis3MTczMiAxYmNkNTVkYjM1ZGVkNjE4OWZlYjhjNWE1ODdiOWE5OTA3OWYxYjVmIHJlbGVhc2UzMC1tYWludAorNzE3MzMgY2Y2MjIyY2EwYmNjMDZkNjNjNTU2OWZjZjIyMzFhZTA0M2JkNzc5NCBweTNrCis3MTczNCA1ODkxNWZjNTc2YWFjZTNlY2EzZjAzMWFlYzg1OTg0MTYyNmY4ZjBhIGxlZ2FjeS10cnVuaworNzE3MzUgYWRjNzdhNWQ2YTk2MjZlNjk0MjkwZTdmOGEwZmU0MDVhODVlNzIxMyByZWxlYXNlMjYtbWFpbnQKKzcxNzM2IGQ3NGI5YThlNjZmNjAzNmMxNmI0NGQzY2YzNzM2ZDlhNDNjMDJmYjUgcHkzaworNzE3MzcgZDk5NTAzYjZmMjM4YWVjMjYyODM5NmVmYWU1YzQ5NmEzMzRmNDNjZiBweTNrCis3MTczOCA3NTU3NzE2YjZiMWNiOTRiZTk3NDliMGFhYzdhNGUwZTIwM2UxYjllIGxlZ2FjeS10cnVuaworNzE3MzkgNDhiZjQyYzJmZjdhODAzOGFiOTAzNGQ0ZjFkZTNiZDM1YjhiMGIxNyBsZWdhY3ktdHJ1bmsKKzcxNzQwIDdkMmM4MjIyNjljNzRjZjQ0ODRlMDFiNjYxMTkzZjE1YWE4YTdjZmUgbGVnYWN5LXRydW5rCis3MTc0MSA0MWE3NWRkOWRmNzhmNDU3ZGVhOGZmZDQyMDIxZmFjNzdlMTEwNjAwIHB5M2sKKzcxNzQyIGI3YjhmYmQwMTBjYTliMDI1MDZlNjUyMTgzZjY3OGIzYmUzODM2ZTQgcHkzaworNzE3NDMgZDUwZDRmMDljZGY3ZDc1MmQ3NGYwYjg2ZmZhMWIzMmFiZDU3NWYzMiBsZWdhY3ktdHJ1bmsKKzcxNzQ0IGI3YzQxMmQxYTVjYzQ2YjhlNjkzN2UxN2UzYTJmMDVjMTk0OTBhOWUgcmVsZWFzZTI2LW1haW50Cis3MTc0NSA2MDcyOWVlODQ4MjI1ODQ2MjdlZGNmM2VmOGIxYTY0N2MwMDIyZWYxIHB5M2sKKzcxNzQ2IGUyYzc4NWZmMGE1MGZmMDU1YWYyZWRlZDA4MWUyOTc3OWM3MTY4ZDggcmVsZWFzZTMwLW1haW50Cis3MTc0NyA0NGVmOGE3M2E4YjdiY2NjMjkyODIyN2NlMjNjYzY1MmQ2MmEzN2ZmIHB5M2sKKzcxNzQ4IDE3MzdhYTE1MTMxMDg2NzgzZjc4MzRlYjlmYjBlYjJkMTBlYTc3YzAgcmVsZWFzZTMwLW1haW50Cis3MTc0OSAzZjI5MjBhYTkxMGNiMzk0MzBlODNmZWU0NjFlMmFkNTMxMzQwZDY1IHJlbGVhc2UzMC1tYWludAorNzE3NTAgMTM4MDc3MDNhZmQwZjU4MzQ5ZTM4MjM4YzgyNDJmMDg0YjdjZDNhZCBsZWdhY3ktdHJ1bmsKKzcxNzUxIDAzOTc2YTEwODcwMDgzZGM5NWM5NzllN2M2MTVhYWJkYTQ0NjJiMmYgcmVsZWFzZTI2LW1haW50Cis3MTc1MiAwYjNiOGVkMzYyMjQ2NDA5NWU1Y2M0N2UyMjU1MTFjNzZkMzQ1ZGQ3IHB5M2sKKzcxNzUzIDJiMTdjOTk2ODk4MWIyMWNmZGY2MTA0ZTQ1NTJkMTQwZDVmN2U0ODggcmVsZWFzZTMwLW1haW50Cis3MTc1NCA0NTI3YzE1MmRhYTkzOWMyZWU1ZTRhNmIxZTUwNWQ1MDBmY2Y5NzViIHB5M2sKKzcxNzU1IDIyNzk2N2ZlNDRhNDI2Yzk0NDQyMTU1OGM5MWIwN2RmMzU4NWQzZTQgcmVsZWFzZTMwLW1haW50Cis3MTc1NiA0MmJmNTZlMzQ4MjU5NmJhNTA3MmIxZTViNjU2YzA4ODk3N2JhNmY2IHJlbGVhc2UyNi1tYWludAorNzE3NTcgODUzM2NmYzI0MjBhZGMxMzY2YTk0MDQyMGMxN2ZkZGE3NzQ3MzYzMSBweTNrCis3MTc1OCAwNGZmZTZiNjE3MDkxMDY3MmYwNWZkYTJjMTNlZmRhNWQ2MjRjMGUwIGxlZ2FjeS10cnVuaworNzE3NTkgY2RiNjAxNDQxZDA0NTUyMWQ4ZWQwYTIyOTZiNzI3MTNmNzk1YWRkYiBsZWdhY3ktdHJ1bmsKKzcxNzYwIGEyZDQyMzEwMTQyYmU4MTM4ZWE2MjJkZGFmZjM0ZTgwZDI1Zjk1YmUgcmVsZWFzZTI2LW1haW50Cis3MTc2MSBlNDIwMjBhNTIyMGFlOTliNGFmZmUwZWViNTZmNjM1NTljMTEwYTdhIHB5M2sKKzcxNzYyIDA1Mzc1YzJlMDc0MjQwMDZhNTVmMTljNTNmYWEwZGUwZjVhN2IxODYgcHkzaworNzE3NjMgODA5MWUwNTY2ZmUzMjBmMmM1ZjgxMzQxNjVjMjBjNThjZGM4M2JhYiByZWxlYXNlMzAtbWFpbnQKKzcxNzY0IDM3MDkzZTk0YWZjNzc4YzkwYjRiYTc1MDNiOGIwY2E3ZWZmY2E2ZjYgcmVsZWFzZTMwLW1haW50Cis3MTc2NSA5NmVlZDczODdjZWEzODkwZWI1OWI2YzUxMWNkMTc2ZDY1ODdlMzRlIHJlbGVhc2UyNi1tYWludAorNzE3NjYgODdmYjcyMTMyZDZiZGZhMTE1NzE5NjdhYmI0YjcyODlkMzYwMDNlMSBsZWdhY3ktdHJ1bmsKKzcxNzY3IDEzNzgxYjBmNzQ1YTYxODkwZTRkMDllNmIyNGVhMmY5N2I4N2Q1N2QgcmVsZWFzZTI2LW1haW50Cis3MTc2OCBhYTU0NGE1NDc1M2JhOGY2ODIwZTc3MjEzNDhhNjY2ZDdkMzkxNTgzIHB5M2sKKzcxNzY5IGJkMTg4ZmYzNDJhNGM2ODkxZTJjMGU3Mjk3ZTJlM2Y0NzIxZWQzODIgcmVsZWFzZTMwLW1haW50Cis3MTc3MCA3M2FhMzc1NmMwYjI2YjAxMTM5MjY1ODI0NGI3NGY1YzEzNDFmZThlIHJlbGVhc2UyNi1tYWludAorNzE3NzEgNDU1ZjQwZDE3MzhlOGMwNjkyNmE5YjdhZTQ5NzYyY2E1MDA1ZjkzYyBsZWdhY3ktdHJ1bmsKKzcxNzcyIDhmMjhjZTdiOGU2OWExNDE1MTk1YjRjMDViZWYzOWY0Y2Y4ZDVmMDkgbGVnYWN5LXRydW5rCis3MTc3MyA0MTI5M2ZhNmYwZGQ0M2E2OGY4OTg2NTY5ZGFhNDVmY2Q5M2UxNWFmIHB5M2sKKzcxNzc0IGQwYjEzMzYzYWEyMTQ1NmFlMDBhNzc4MGRlMzViZDRmZGRhYTFmYTUgcmVsZWFzZTI2LW1haW50Cis3MTc3NSAyN2FjOGM4NzQxY2Q1OTJiOTBkZWZlYjhhMDk3MTBjZTZmZDRhODU3IHJlbGVhc2UzMC1tYWludAorNzE3NzYgY2VlMWZjMDc2MzQ0M2I0ZTg3YmYxYTczYTM0OGE4MmM3NmJmODNmNiBsZWdhY3ktdHJ1bmsKKzcxNzc3IDljZWFlMjhhYjI3MDQwMTFhMWU5MGI4Mzg2NTQ2N2M5YmI2MTc1NzEgcmVsZWFzZTI2LW1haW50Cis3MTc3OCBkZWQ0NjczNTI1NTM3OWFkOGE0NGZhNGM4Y2JmZjllM2VmMGQwMTk0IHB5M2sKKzcxNzc5IDkzYzkyOWEyZmFjN2Q3MjI5ZWZjMmFlNzQ3YWQwYjc1MTcxOTJlOGIgcHkzaworNzE3ODAgYzhhNzU3MTBhYjI1MDE3MzBkY2EzMDNlN2EyNGY0Zjg4MzBkZmY3MSBsZWdhY3ktdHJ1bmsKKzcxNzgxIDcyYzk4YjRiZjBiNTY4MTkyYzM3YjUwZjVmNDlkODJiNzczYzk3NjYgcHkzaworNzE3ODIgNjk2ZGQyMjgxODQxNTYxZWZmNGVjMDcyZDdhMTdmY2NkM2NmNmNkNyBweTNrCis3MTc4MyBlZDNmNTFmMmFiZmJiNzI5Y2FjNjExMmI0YWMwNTNiMTAwNmRhY2FjIHB5M2sKKzcxNzg0IGE2OGUyZGM1ZjUxNDRkMjJkODg5ZGFiNzNiNDA5NjM4NTRmOTZhOWQgcmVsZWFzZTMwLW1haW50Cis3MTc4NSBkZTYzYjdlODUwMGRjMmY5MDg1NGNkMzU5MzM0NjgwMTVjODFiOWYxIGxlZ2FjeS10cnVuaworNzE3ODYgZjQ0ZDQyYTExYjliNDNhM2NkODkwNGMyOTcyZDk5MWIwMmE4YWZmNyBsZWdhY3ktdHJ1bmsKKzcxNzg3IDc3MzM2ZDgyYWI5NTBiNjhiOWU1YzJhOGY4NTljMTEwMDc0NmFmMjIgbGVnYWN5LXRydW5rCis3MTc4OCBjMzA2ODFjNjZiM2ZlZjI2NTRiNTI0ZGMyNzY2M2Y0MjUzOThjODBhIGxlZ2FjeS10cnVuaworNzE3ODkgYzJlNGE3YWQwNWYyYjQ3NTk2ODVkN2JmZmZmMDZmNDJlNDJlN2E1NiByZWxlYXNlMjYtbWFpbnQKKzcxNzkwIDQxNGJhOGVmYzgwNDZhZTRhZWVlNTE2MDY3YmE4Nzk4OGY1MjQ0MjIgcHkzaworNzE3OTEgMmIwNTdkMmI5OGViMDc0ZjJjMTFmMmMxZTM3ZTg2ZDk1MGQ1MGM1YSByZWxlYXNlMzAtbWFpbnQKKzcxNzkyIGIwZmVhM2FlM2I2ZWY1NjIwZDk2ODMyNDc5ODBmYzRlOWIzNmNkNGQgcHkzaworNzE3OTQgZjlmMjNmMzZjMzZjYThmNDFkMGVjNWU3N2E5ZDlkNDVmYjFjYTZlNSBsZWdhY3ktdHJ1bmsKKzcxNzk1IDc4YmZkNDQ4MTc2MzMxYzhiMjNmM2Y3Zjk5ZmEwMWQyOTUxMmMyNjMgcmVsZWFzZTI2LW1haW50Cis3MTc5NiBjNWUwZDliZWViZjkyMzA4NTMwNjcwMTVhYzkxNzE1NzIxYzgxOWE5IGxlZ2FjeS10cnVuaworNzE3OTcgNjE4ZDJlM2FjYTYyZWJkYTFmZTgyNmMzOTI0NWM5ZjZmYzE0ODhlNiByZWxlYXNlMjYtbWFpbnQKKzcxNzk4IDYxMTUxOGQ2ODBkZWMyNGFiZDJiZGZlZDZhZjQwNDcyYmI0MjdhZjkgcHkzaworNzE3OTkgZTk1OTVjYjVjNzg2MGJhZWJhMDNiNTUyMGRiYjY4MTk3MDgxMTY1ZSBsZWdhY3ktdHJ1bmsKKzcxODAwIDMzMGRiOTU0ZTU5MzRlMDliMmJiNjQ5Mjc2ZDY1NzdmYTVlNTZkMjAgcmVsZWFzZTI2LW1haW50Cis3MTgwMSBiNWRmMDk0ZDg5NDFkMmRhNDg5NmVjOWU4MDg2ZjRhOTliNjAzNGE5IHB5M2sKKzcxODAyIDQ0YThhNTI1ZWNlYjgwNjdmODQyMTFlYzA4ZjRlNzM0ODY1OThlYWIgbGVnYWN5LXRydW5rCis3MTgwMyA2ZjQyZGU3MmMyZGNlODhjYTEwZDYzYTU4NDA2OTY2YmRkMWVjYzJjIHJlbGVhc2UzMC1tYWludAorNzE4MDQgNTEzZGM2ZmE2MWMwYjcwYTZiNWRmMWZjNjUwYWM1ZTg3MjNmYWUyMiBweTNrCis3MTgwNSBjNmU4YzY1NzE1ODg3NmY3ZjIxMzk4YjJjYjQ1M2E1N2QyNTFkZTA0IHJlbGVhc2UzMC1tYWludAorNzE4MDYgOWJmNGIzZWIwNDQ3MjY5OTEzNTM4ZTY3ZDRjZTEzMTAzZmQ0M2Q2OCBweTNrCis3MTgwNyAyNGQ4MWZjYjBlMzMzNWYyZTJhNGUyZWE0MmQ1ODk0MGUxZDUxNzYxIHJlbGVhc2UzMC1tYWludAorNzE4MDggODU1OTdlNTU2NjhjZDBjOTM4YjJlNmJmNDkxYTMxMzE0M2U4Yzg5NSBsZWdhY3ktdHJ1bmsKKzcxODA5IDFmMWVjYTY4MTY3NWEzOWU1YTEzMjIwYmVmM2ZjMDM1YzIzYzcwOTQgcmVsZWFzZTI2LW1haW50Cis3MTgxMCAxYTEyOTEzODQ5Mjg5MzJkZjUzYjcyMmRlMDZhMGIwNTQzMjM2YmQyIHB5M2sKKzcxODEyIDJkMDliY2Y3MDM5NTU1ODQ1ZTQ0MmE1YzU4ODE1YzNiYmI3ZjJkYTMgbGVnYWN5LXRydW5rCis3MTgxNCAxNzAwNTVkN2I0OTQyYjIzYjY5YmIyZjgzNmE3ZTk2ZjI5M2Y1ZWQ2IGxlZ2FjeS10cnVuaworNzE4MTUgZmY5ZWRjYjM2ODc4ZWU4NjFlOTNjYWQ3YmFjZTlmZjZhZTJjYTUzZSBsZWdhY3ktdHJ1bmsKKzcxODE2IDYyOTJiZDI2MzJlMmJkZDdkNThkZWYwN2FmOWI3YzI0ZTE1NjE5YTAgbGVnYWN5LXRydW5rCis3MTgxNyA0MWJjMzNlZTE3MzA0ZmE2YjFlYmI2M2E0MmIxNWM4YzY1MWY3ZGVlIGxlZ2FjeS10cnVuaworNzE4MTggMzMwMTE1MTM3NDE0NzVjZGQ3MjA2ZGQzYjViZjg5OWRlYzE5NjQ3MiBweTNrCis3MTgxOSBkMjk1MjU0ZDg0YjdmNjVmZTdmNjFhN2E3ZDViYmE1ZTEwN2E5ZDVmIHJlbGVhc2UzMC1tYWludAorNzE4MjAgNWJiZDJlNmQ2MTI2MjBlNGZlZWUzMTIwZTFkMDdlNTkwNWM2MzczOSBweTNrCis3MTgyMSBhN2M0YTM3YzlkZjA3NzE2OGQ3M2VhY2FlNjhkY2IxYTg1MGI1MDQxIHJlbGVhc2UzMC1tYWludAorNzE4MjIgODI5NWI3YjI5NGJkNjJkYmJlZGQzZmMxZDJkYTMzMzlkY2ZjZTM4OSBweTNrCis3MTgyMyA4MzAwYjI3NGZkZDNjY2Y4ZDIxODExNTdjMmE4ODA3OWFjMTQ5ZWQ5IHB5M2sKKzcxODI0IDMzMzEyYjkxMDc3MzQwMWRkNTM1NGJkOWNkZTc2OGI1Mjc4MjA4YjUgbGVnYWN5LXRydW5rCis3MTgyNSBmZGUwMTVhMmM4YjNlYmUyNDk2YjQ1NmExZGJmMTk4Y2Y1ZTA1OTA4IHJlbGVhc2UyNi1tYWludAorNzE4MjYgMzJiMjQ3MzAwZmY5ZDMyMzkxOTFjMThjM2U1NDkwZDlkMWJhNDZmNyBweTNrCis3MTgyNyAwNzYxZWUyOGI2ZWQ2MjQwMmFmMGViZjU2YjVmNTY2YjMxYjVhNTBmIGxlZ2FjeS10cnVuaworNzE4MjggZDU1NzMyMGRlODU2Y2JiMjEzOTRkN2VjYTUxM2JhY2U1ZjMyNmRkNSByZWxlYXNlMjYtbWFpbnQKKzcxODI5IDA2ZGIxZDlkMjU1ZmY3YzdkNDVkNDYzYTViNjM2ZjA3YmI4YTZhMjIgcHkzaworNzE4MzAgMWZjOWI2NTA4NzIzMjI5MjUzNjQ0MDNkOTJjNjQ4ZjA5MmFlZTBhNiBweTNrCis3MTgzMSBlYzg0MmNjNjEwZTZmMTRmM2UxMmEyNWQyZjBkNDkzY2VjNGY3ZTI4IHJlbGVhc2UzMC1tYWludAorNzE4MzIgMTE0MDU5YzI2Nzk0ZjFhZDdjNDJlMWMxNTk2NmU5ODU5N2E0NjZmOCBsZWdhY3ktdHJ1bmsKKzcxODMzIGExYTZmNWQyYjNkY2I1ZTUyMzlhOGU0NGVhNGNhMWI3MzQyZDA2MzIgcmVsZWFzZTI2LW1haW50Cis3MTgzNCA1OWExZmI5Mzk1Nzc0Y2ViM2I3OGEzZjBhYTVlNTk2OWU4Mzc5NzNiIHB5M2sKKzcxODM1IDQ2YTMyZDQ0NjNjODNhNmZiZDAyN2ViNTQzMmViMmNlYmY3NDQ4NTggcmVsZWFzZTMwLW1haW50Cis3MTgzNyAxMzNjNjYwMjdmMzNlNGMyZjYzMTEzODk1ZGNiODlmMWQ5ZjM4MGRkIGxlZ2FjeS10cnVuaworNzE4MzggMzIyMjY3NzZmODY2MTM0NjgyODkyMjhjZDAyMDEyZjExYzUwMTFlYiBsZWdhY3ktdHJ1bmsKKzcxODM5IDU0YjQ0ODlmMWMyODRkNjEyNzU3MGNkN2M2YzI3NzcyOTNkOWNiZDQgcHkzaworNzE4NDAgZmE0ZjE4ZWRlMjYwYmE3OTIzOWZmZGZjZjM1ZGIwNDM4ZDdkYTg2YSByZWxlYXNlMjYtbWFpbnQKKzcxODQxIGE2NWUzYzA3MjYwZTllYjA3ODFkNTVhZGRkMTQ4NzAyOGM5Y2IxMTkgcmVsZWFzZTMwLW1haW50Cis3MTg0MiAxMTY3ODdmOWI5ZmNkYmY4MTIxNzM5OGMxMWE1NGE1ODI1MDZlMmE3IGxlZ2FjeS10cnVuaworNzE4NDMgNjNjYjVjOTFjZTIxNDhjNWQwNWZjZGEyYTcyNzY4YWUzZGI4NmE5MCBweTNrCis3MTg0NCBmZjdiNGU1ODJjNDkwODNmNzFiNDJiOWQ3MTQ2ZGJhMjI1MmNiMDExIHB5M2sKKzcxODQ1IGQ4ODAyYjA1NTQ3NDMwMjllMTU0ODY2MWFjY2MzOTJkMGEzNzJkZDkgcmVsZWFzZTMwLW1haW50Cis3MTg0NiA0M2U0NmU0ZTAyZjAzNjBiMzNkNzNmMGE4NjAxOTA0ZTM4YTU1YWViIHB5M2sKKzcxODQ3IGZiYjFkZjI1NDFjMzZhMDljZTliZTU3N2NhYjYwOTM0MmFkMzM2ZjAgbGVnYWN5LXRydW5rCis3MTg0OCA5NjkxZTczNDU5NjRkYTE5ZGY1MmZhODg5Mjc2MmYwZmMzYWNhM2Q2IHB5M2sKKzcxODQ5IDA5Njg5MjEyYjNlYjI4MTk0YWE4MTE4NjljNzg2MDAwYmYyMDQ1ZmMgcmVsZWFzZTMwLW1haW50Cis3MTg1MCAyZWY1NGU4YTQ0ZGQ0ODk5ZWQ5MWRhNWVlNmRiZTNkMDk0M2UwOTc1IHB5M2sKKzcxODUxIDAwYTkyNzgxNWRjZDYyZDQ2OTQ4YmM0OGMzZmRhMjNmNWEwYTQxOTggcmVsZWFzZTI2LW1haW50Cis3MTg1MyBkNTFlNGY2MmJjOGMwNDU1OGQyMDhhZjljZDQzMDQ1MTkzZTI4ZGJhIGxlZ2FjeS10cnVuaworNzE4NTQgMDJmM2Y4NWUzOTM2YjhjMDAwOGVhZGUzMzM2YzcxMGJjNGU2MTZlZiBweTNrCis3MTg1NSBjNjJjYzJhNTc2NGI2MzQyMmViNWQyNmIzNDVlZjkxMDE5NmUxZDM0IHB5M2sKKzcxODU2IGI1ZTJiY2JiZmE3NDAyYzI2OTQ4NGRlNzg2N2Q5MDljMWRkOWFjNzMgcmVsZWFzZTMwLW1haW50Cis3MTg1NyAwZjU1ZTA5YzE2YjU2ODA2MGFjMWIyYmEwMzY1Y2ZlNTVmZmNlZmQzIHB5M2sKKzcxODU4IDI5OGYyOGFmZjE4ZDIzOTQwYjk5Y2ZiODA4MjZhMjMxZDI0MDE3ZGMgcHkzaworNzE4NTkgYjJmY2IzZjIyNGRlMmZlM2FmMDdiMmM0N2E1OTZhZDAzYmNlZmIzNCByZWxlYXNlMzAtbWFpbnQKKzcxODYwIDMxODk1MTg5MGFiYjU3YzM5NTMwNDYyOWJkNTFiMjE1MTYyNmJiZmUgbGVnYWN5LXRydW5rCis3MTg2MSA2NDI5MTBhMDFkN2YzOTAwZjAwZDRjM2Q0YzIyZmIzZmZmZmU3MTQ5IHJlbGVhc2UyNi1tYWludAorNzE4NjIgMmUzNzE5MGY4ZWE3ZDQ5Y2FjYjg5NmE4N2QyNzdlYjdhN2MzYmU4YiBweTNrCis3MTg2MyBmZGIyYmU0NzFhM2ZkYmQwMzY4ZDBjMDA2NGUyNGRjMzg5NWFhNTBhIHJlbGVhc2UzMC1tYWludAorNzE4NjkgNWZkMGRhMmE5Nzc4ZTE2OGZmNWM3NGNiNDlmNWU1N2NlZWE5NGM2NyBsZWdhY3ktdHJ1bmsKKzcxODcwIGEzNGQ5NDVjMDdlZGIzZWNiZThmN2YwMDUwYzhhNGUzZGU0MDM3YmQgcHkzaworNzE4NzEgODBkYTUyNDY2ZmU4N2RlNWI2MzMzNTk1MTUwYzQ1MDU5ZjMzOGMyYyByZWxlYXNlMjYtbWFpbnQKKzcxODcyIGE1ZWM1N2U4NWY2NWMxOGNjMzAzNjViZTIzMGY2NDM1NjIzMmE0YTEgcmVsZWFzZTMwLW1haW50Cis3MTg3MyA5Zjk0MTIxOTI0MDJkOWY1OTE3NzNkNjg0N2E1ZjU5OTA4M2RkYzBkIGxlZ2FjeS10cnVuaworNzE4NzQgOTU1NmU5M2YyYWJiNDk5YjZmMzgzOWVmZWZhZjFlZTg3Mzg2Y2FhNiBsZWdhY3ktdHJ1bmsKKzcxODc1IDVhNDZhODIyMDZlN2JiZjM5ODQ1YWY1MjllZTM1YzBkZTE5NjgwYzcgbGVnYWN5LXRydW5rCis3MTg3NiBiMzY2YTQ5NmQ0OTllYjE5MTc3MGJiZWQ2Y2NkMDE5Mzc4NWIwYjdhIHJlbGVhc2UyNi1tYWludAorNzE4NzggODhhNzg4N2Q3ZmQ0YWY5NmMzODhiMzIzMTczYWRjOTM4Yjk3YTgwMCBsZWdhY3ktdHJ1bmsKKzcxODc5IGNlNDdkZWUxYjU0NDIzY2FjYTJiODQ1MDU5MDAwMDJmYTczOTlhZWMgcHkzaworNzE4ODAgYzU3MTA4ZGVmM2UzYmU5OTdiNDY0ZDU1MDc0ZTJjMmI2NGM4YzExMiByZWxlYXNlMjYtbWFpbnQKKzcxODgxIGQzNTMzN2Y2NTAxNTk5OWNjYzMzMTkwYjM5YmI1NWY2NDU1ZTE4MmUgcHkzaworNzE4ODIgYWQwYzI2OTcyYjIyMjE3NTlkMjdjMTUyM2QzMDlkZGJiMDY5ZTZmZSBsZWdhY3ktdHJ1bmsKKzcxODg0IGFkMDNiYjVkMGY3ZGJiYzVjZmM1NTQ4M2ExMDdiMjQ3YjUyNmY2YmEgbGVnYWN5LXRydW5rCis3MTg4NSA2ZGM5ODA1Y2IwZmE5Nzc5YWRhOWJmNmZmZTU1YWZlMGQwZGZjMDgzIHJlbGVhc2UzMC1tYWludAorNzE4ODYgM2NjNWZjMzMzMmY2YWJjY2I5OTMxMWI1MTk3MzM1ZmU4ZTczZmQyZiBweTNrCis3MTg4NyA4MDZiYzQ2NTFiOWRlMzVlZTYwZmU2NmM0MzQxYmEzYmQxZjY2YmNiIHJlbGVhc2UyNi1tYWludAorNzE4ODggY2FkYjY5ZTFkYzlhNjJmY2I0NzRjMzE1NmYzOGZhODcxNDc1MzkyYSByZWxlYXNlMzAtbWFpbnQKKzcxODg5IDE4MzdlOGUyMjkyNzc3MTExNTNjNGFlMDJlMGFkNGQzMzdhYmIwODIgcmVsZWFzZTMwLW1haW50Cis3MTg5MCAwNWRlODY0MDc3YmE5YjgzZTg5Y2Y5NTg3M2VkZTc1MTc1NDk2N2UwIGxlZ2FjeS10cnVuaworNzE4OTEgNTg3YzhlMzkxN2M2YTgyNWYyOTA4ZjU5Zjg1ODY1MzA3NjcyYTJhZiByZWxlYXNlMjYtbWFpbnQKKzcxODkyIGQzZmU2ZTk2NDg0Yzk3Y2Q0ZTAwNzQxYTM3N2YyNWM0MmI2ZDU1NmMgcmVsZWFzZTMwLW1haW50Cis3MTg5MyBlYWJlNmNmOTczNGM4MzJiMjk2YWY4ZDMzYTk2MmU3ZGE3YjQ2MTY2IGxlZ2FjeS10cnVuaworNzE4OTQgYTJlZjRkZDU1Y2YyNTYxOTRiZjhjZGY0Y2Y1OTlhYWUzNDYyZmQ2ZiBsZWdhY3ktdHJ1bmsKKzcxODk1IGYwOGY3NzYwODJlY2NiM2E3ZTNjMTM4ZDBkZmEwMWZjNWJmYzM2MjcgcmVsZWFzZTI2LW1haW50Cis3MTg5NiBmZjI5ZTk2NmFiYjY1YTkyMDYyYjg5ZTI2OGY0NzU2ODY0MDgyZjBjIHB5M2sKKzcxODk3IDJmOGU1MzVmOWE5YmZhNDQxYTczMWIzOGNhNjA0NTMzYzU5MjcwZGEgcmVsZWFzZTMwLW1haW50Cis3MTg5OCBiYjg3NmExMzNiZGYzYTdhOWRkNThjMjdmOGQ3NzI2MDM4ODFmYWE0IGxlZ2FjeS10cnVuaworNzE4OTkgNjc2ZGFhMWVmMjIzNzEyOWUzNjgwZTA0MjYyMmJhZmZlMjBkMmMzMSBsZWdhY3ktdHJ1bmsKKzcxOTAwIDMwNWZmYWRmODMxNWIzYjU4ZDMzNjAxYTU4Y2QzYmE3ZDM2YTdlNGUgbGVnYWN5LXRydW5rCis3MTkwMSBkZGNjMmE2ZmRlM2FlM2I5NzM2MTM0NGUyNTBiOTllNWU4YWZiZTA0IGxlZ2FjeS10cnVuaworNzE5MDIgYzc1NmYzMGJjNDJhN2U2NGMwNGM1NmY4N2I3ODA1MWRlNDcwOWU0ZCBsZWdhY3ktdHJ1bmsKKzcxOTAzIDg1MjQ2ZTRlMTQyODNlNmUxOWYzNDJjMDVkMDhhY2UwODJiYTMwMzcgbGVnYWN5LXRydW5rCis3MTkwNCAxNDY3Y2JjMjIzZTYwMDc5OTI0ZTcyMWFjZWQ4NjM3OWEyZWI5MmIyIGxlZ2FjeS10cnVuaworNzE5MDYgMjQ4MGVhNzUwNjhmYTIxZTRkMTFhM2IzYjFlZjljNmUxNmIyNGRiNiBsZWdhY3ktdHJ1bmsKKzcxOTA3IDcxYjdiNDkyMTUxMjFmNThkMDkxY2VlNmU1NzBmZTAxNTA1YTY0YWUgcHkzaworNzE5MDggNGFmMDZiMmJjM2NjMjVlYTZkM2ZiYjJmN2FlYmRiMDVhMGJkZDhjMyByZWxlYXNlMjYtbWFpbnQKKzcxOTA5IGM2YmY1MmUxNTNiNGEzZDIzYTEyZTUxNjA5MjYyNzUyMGY0ZDZjODEgcmVsZWFzZTI2LW1haW50Cis3MTkxMCA4NWNjOTUxMmI2MGM1Mzc4MTY5YTEzMjNkZDU5MWQ5NTE4MzU4NDYxIGxlZ2FjeS10cnVuaworNzE5MTEgN2NkMjNiMmVhYTkzYmVkZTI1OGU2NGFiZTc3Yzg4ZjIyNjgxOWY5YSByZWxlYXNlMjYtbWFpbnQKKzcxOTEyIDA4M2NlYTBmMjdhMmMyMTNhNzQ1MTNlMzlkYzIxZjllMzVhZTQ4YWYgcHkzaworNzE5MTMgMDA2YTQwYjVlMGMzYjVmOWVmMmVhZjRkYjk4MTczYzE0MDEzYjBhNCByZWxlYXNlMzAtbWFpbnQKKzcxOTE0IDE3OWY0NTkzYmQzZWQwODFmYjNlNzcwYzMzMjdhNDFiNDM4ZWNiMjUgbGVnYWN5LXRydW5rCis3MTkxNSAzZDA3YzliMjM5NTE0MmIwMmE1NDI0NzkxMzkwZmNjNDgwOGRjMmY1IGxlZ2FjeS10cnVuaworNzE5MTYgZjg4MzA2YzgyNjVlM2RkYzBiMjk4ZWJhMjVhNTU0ODE1Mzc2ZGFkYSBsZWdhY3ktdHJ1bmsKKzcxOTE3IDYyYjMxODUzNTllMzY1YTM3OGNmYmQ2OWE4YzY3ZThjZWFlMWE0ZDUgbGVnYWN5LXRydW5rCis3MTkxOCAzYjQ5ZDMwY2E1NDEzYmMwOWM3MzhhYTdjZjY4NDMwMTNmNmRjMDc3IGxlZ2FjeS10cnVuaworNzE5MTkgMmUyOTdiMWVjOTM1NjBmMTMyMGFjZGRlOTdmYTIwYjgzN2RiZmIyMSBsZWdhY3ktdHJ1bmsKKzcxOTIwIDY5NGRhZjhjZGY5OTM4YmYyYmVhOGMwYjM3ODc2ZDJhYzIzMjExYmYgbGVnYWN5LXRydW5rCis3MTkyMSA2MjU1YTcyYTRjMWU5ZWFiYjliMGU0ZWEzMGI5NzlkMDU1NGFhYjc1IGxlZ2FjeS10cnVuaworNzE5MjIgOGZiYTI1ODRmMzhiZWEyMzM1ZmRhMDhkZGYxNDYyYzIyZTJiZmZiNiBsZWdhY3ktdHJ1bmsKKzcxOTIzIDYzMjg2MjQyZGQ5ZGIxNDQ1ZTRmOTIzMDUyOTlhYjQ3MDIxZTY2ZWIgbGVnYWN5LXRydW5rCis3MTkyNCBjYTJmMWUzNGY1NjJkMWIyOTE2Y2E1YjBiYWE3YzFiZmFhNTk0ZjI0IHB5M2sKKzcxOTI1IDdiYjFhNGNkNWVlNWI4NmM2Y2ZkMmZkZTE1Yzk3N2I2YzRiMzg5OTEgbGVnYWN5LXRydW5rCis3MTkyNiBlZGQ4ZjBkNTJiMzhlMmU1MGNkNjAyMzAxOWExZDVkNWM2N2ZiNmJlIGxlZ2FjeS10cnVuaworNzE5MjcgNDU2YjJhMDZkMDE3MDBmNzA2NWRiYTE4NTUwNDlkOGY2YzBjNmUyYSBsZWdhY3ktdHJ1bmsKKzcxOTI4IGM3ZWE4MjZmYWQ3NzM0N2VlODUyZWU5NGYzMmE3MDhlZGNjODI2ZjUgbGVnYWN5LXRydW5rCis3MTkyOSAyNWMyMGE3N2YzNzMzZDk0MDBkOTFiMzVjMDc4ZDBmMDk4OGJhMzdhIGxlZ2FjeS10cnVuaworNzE5MzAgMGFkNDE1MDk0YTA1MDYxOGQ4NTgzNzlkMjYzZWRkNmQzODM1NzYxZCBweTNrCis3MTkzMSAxMjc5MTgxMjc4OGRmZTllYTVjNTNmNGIwMjE4MzUyYzQ4YTIzNzJjIGxlZ2FjeS10cnVuaworNzE5MzIgZWNhY2E3MTc3ZjY2OTYxYzY5NDEyZTUwZmE5MzA4YWU2YmI0Y2U0MiBsZWdhY3ktdHJ1bmsKKzcxOTMzIDRlNWFkNTY2YmZiYjVhOTM5YjI0ZWIzMjQwYmM0MDBkYTMyMzk3ZjYgbGVnYWN5LXRydW5rCis3MTkzNCBhMDdhOWI3NTlmMjdjMjU2ZmYzYzM1YzVjM2IwOGJjOTRmNGNkZDM5IGxlZ2FjeS10cnVuaworNzE5MzUgOWM5ODYwNTA3MjY1MDQ4M2U4MjRiZmM2ODBmMzg1MzI0Y2NlZmM5NiBweTNrCis3MTkzNiBmMTE0MmRlNDNlN2RlYThmZGYzNzJlZmJjMGViMTc5MDMxNzdhZWIzIHB5M2sKKzcxOTM3IDgxYWViOGJjNjU5ZDU3MGY2MzYxN2QxYjgwYWEyN2VlMjlhZWUyMDggbGVnYWN5LXRydW5rCis3MTkzOCA2OTQ3YmMzZGQ0MzMyMTY0MmZjMjhhNTVjY2U3MWQ0ZjhlNjMyYzk2IGxlZ2FjeS10cnVuaworNzE5MzkgMzBiMDNlMWRlYThiYjcxMjA4NzgxYzIwYzJhZTQ2MWExZjQ1MjI3NCByZWxlYXNlMjYtbWFpbnQKKzcxOTQwIDJjZGRhZjhkM2MzZTBjOTkzMTA3ZTM5NDU2NzBhYjkzZTU1NGZjMDEgcHkzaworNzE5NDEgYTNkNDhiMmU5NTdkZTk3MWMwOTU1ZjllYjMxMTg0MjUyNTFmODBiMSByZWxlYXNlMzAtbWFpbnQKKzcxOTQyIGVmMGFjNDI2OTkzNDBiNWQ4ODcxNWJlZjY5MTU2ZTQ1ZjM0NGFhYzEgcmVsZWFzZTMwLW1haW50Cis3MTk0MyA5MzMyOTdlYmFjN2JhYzIwZjlhYTYyZjlhMjNjYmMwMjBiOGI3MDkzIHB5M2sKKzcxOTQ0IDc1MDEwY2FlMDQ3OTAwNzY4ODJhZjI3OWI4YjQ0NWZiOTNjMzM3ODAgcmVsZWFzZTMwLW1haW50Cis3MTk0NyA3MmJkNDUwZDUzOWYxNTdlNjdlYjZlMWI3ZGRlMWVmNjNlM2I0OGE4IGxlZ2FjeS10cnVuaworNzE5NDggYzkyZTkzYTU0Mjk4YTgzMDRmMWVjZTE1NGY0ZDE1OWE2YWMyYzVjYSByZWxlYXNlMjYtbWFpbnQKKzcxOTQ5IDhmZGNkZjBiNTA4MGVhOTJlNWFlZDk1ZDgzZmJhMWQyMDlkYmMzZjIgcHkzaworNzE5NTAgOTEyNDM4NjU1ZjkzMDQwNDhiZjhjYjhjZWQ5MzNhZjVkMjNjNzZjYSByZWxlYXNlMzAtbWFpbnQKKzcxOTUyIGEzYTI0NmRhMTQ0YjdkMzZiYjJiYjdlY2ZjYWE2NDIwMmU4MTMwMzggcHkzaworNzE5NTMgOWRhMWNmY2QyYWNmN2Y2N2QyOTEwMjk0NjdkODE4NTUzZTJiMjI4OCByZWxlYXNlMzAtbWFpbnQKKzcxOTU0IDEzMzgxOWFlODBmYThhY2UxODE1NjNhOWEyZmMxM2I3OGMxMmJhYzQgcHkzaworNzE5NTUgMWMyZDExYTdlYjIzZjQxMjM0ZWYxNDIzMmE3NWQ1MGJlZjM0YWI3MiBsZWdhY3ktdHJ1bmsKKzcxOTU2IDE3MjkxM2UxNzAxOWVkMjk2MDE1Nzg0ZmI2N2ZmY2Q3ODYzY2Q0MjcgbGVnYWN5LXRydW5rCis3MTk1NyA3M2I1MDJmNTc2OTA1OWMwOTQ1ZGUzOGUwMjA0ODgyYjIyOGQzZWQ4IGxlZ2FjeS10cnVuaworNzE5NTggMDA2OTRlMGMyZTZiMmViMzFjYmZiMTVjZWI0NTc0MWQyMmUzNGU1MyBsZWdhY3ktdHJ1bmsKKzcxOTU5IDU5YzQxMTQzNzliMzRhN2I5Y2VjZmFjZDYwODkzOGFhODI2N2U3MGQgbGVnYWN5LXRydW5rCis3MTk2MCA2NDExMGMwYWQ1MzA1ZTdiNzI1ZmI5YjdhZjMwMmY5ZGFlZGE3ZWY3IGxlZ2FjeS10cnVuaworNzE5NjEgZGIwMzAxNmJmNjUzOWY0NmRkMDQ2NTRiNjdmNmU5ZDRhMzE4MTMzMCBsZWdhY3ktdHJ1bmsKKzcxOTYyIGExNWMyOGJmYmIzOGM4NmJiYjY3YWYzM2RlNjNlNjU2NTY0MjFhODcgbGVnYWN5LXRydW5rCis3MTk2MyA3NTk2MzM3MmI3MTQ5ZDk2NjE0YWVmMDk0NjY5ZmZhNDBjYWM2Y2ExIGxlZ2FjeS10cnVuaworNzE5NjQgNTlhMWIwMmRlOTA2NzEyMGYyZDQ0MDRhYjkxNDE2ZjlhYWQxMDhlNyByZWxlYXNlMjYtbWFpbnQKKzcxOTY1IDc4MzVhZGEzY2RhMmM2YWJkNmI4ZjUwYmViNWQxMTRmMDM1ODdkMzggcHkzaworNzE5NjYgMWE1ZDFkMWM5NDc4YTk0ZDM5ODg3NDg5ZDdjOGNiZTIxYjhhNzVjZSByZWxlYXNlMzAtbWFpbnQKKzcxOTY3IGY3NjU3MjEwOGRkN2E0NTI4MDZlYzUxYmZiMTc3Y2U0Y2JjNjkzYmIgcHkzaworNzE5NjggYjQ1YTMyMzU1ZDM3OGNjYzg4NDE0ZWY3NjNiYzBlZjFhZmRlYTU5ZCByZWxlYXNlMzAtbWFpbnQKKzcxOTY5IDAxYzMzNjNhMzU3ZjlmZjcxNjhiMWRjNjIzZGNjMjc2ZDliMTRlMGUgbGVnYWN5LXRydW5rCis3MTk3MCA0NjMzZjg1MzdiYjc3YzdmNTFjNGUzZGQ2NDVkMjE4NjdiMmZiZmVkIHJlbGVhc2UyNi1tYWludAorNzE5NzEgMzkxMjBjYzdlMzIxZWU4MDg2MDlkNTE4NDI1N2ZmZTZkZDA4YmExNyBweTNrCis3MTk3MiBmYjRiYjBhMzg1NmUxYjA0OTIyMDZhZDkxNDA5OTI0NDg3ZDEyZmJhIGxlZ2FjeS10cnVuaworNzE5NzMgMzU1YmViMGJkMDJiZWEzODdkY2IzOTcyYTA3ODZkZWQ1NmE0NzU2YSByZWxlYXNlMjYtbWFpbnQKKzcxOTc0IDcyMzc3MzA0MjVmYjM3M2ZkMmJkZWFjNTQ3OTFhY2YwY2QzYTExNTUgcHkzaworNzE5NzUgOTUxYTYyYjg2ZGU4Yjk5Y2U0NmRlZmI2NzkwNzcxYTQ1Y2ExNGEyYiByZWxlYXNlMzAtbWFpbnQKKzcxOTc2IGJmYjQ3YmMxZDA1MTE0NDE4YWQ3YWQ4YTYwNmFlYWI3OGRmM2E4ZjEgbGVnYWN5LXRydW5rCis3MTk3NyBmN2VjY2Y3NjljMWFlMmRmOWY1OGYwZWVlMjg4MzJhYzY4M2E5NTYxIHJlbGVhc2UyNi1tYWludAorNzE5NzggNzg1ZWEyOTlmZTIzNmRiNjEzM2Y0OTg3MzVjYzM4MjQ4OGQyZmJlNCBweTNrCis3MTk3OSAzMTYyZWIwOWMyYzNkZGE3ZGUyZTI0MTZmMDI5Y2YzMmYxYzYzZTE3IHB5M2sKKzcxOTgwIDAyMWMzOWEzN2VkZjc2MTVkYWNmNGRhNDAyMjQxYTNlNDJhODVkY2YgcmVsZWFzZTMwLW1haW50Cis3MTk4MSA1NGVlNmZkMTgxZjJjYTczMzU1NTIzYTVmZTY1NDhmYWZhYzhjNDUxIHB5M2sKKzcxOTgzIDlmNjBlZGJhNWFlYWJmZmI3MDM1ZjkxZTI4ZTNhYWIyNDIxYjQ4ZGIgcHkzaworNzE5ODQgYWJkYzE3NjRkOGU1YTFhZDAxYzdlYzgzMmU3ZGE4MDM0NTI1YmMwYyBsZWdhY3ktdHJ1bmsKKzcxOTg1IDA2ODhlOGIyNDYzMjZhMDY4MDYxZTIxNjM1YTZkOTZkMmY5MGVkNTMgcmVsZWFzZTI2LW1haW50Cis3MTk4NiAwYjE2NzRmMjdiNzBmYTA0Yzg1MTNjNjgyYWU0NzQ3NmNkODY5YjE4IHB5M2sKKzcxOTg3IDVkNGZjMTY2YTNkNDYxNDA2ODMwMGJlYTE0YTQ0ZWU3MDI5YjE4YzcgcHkzaworNzE5ODggNDU2ZTU4NDMwMjAyMDZjN2Q3ZjUzYTc2ODcyMjU4M2NjMjc1ZmJkZCByZWxlYXNlMzAtbWFpbnQKKzcxOTg5IGRlMWQwZjcxZTIwOWI1MmIwZDI2NTI0ZWE4ZjI3Yjg0NDE5ZjQ1OGQgcHkzaworNzE5OTAgZWNjM2ViMTU2NDg4OGM4NGE2ZTI1MTQ4NjdkYWU0NTVmNjQ1NjI0MiByZWxlYXNlMzAtbWFpbnQKKzcxOTkxIDM4M2UzMmFiNjA3YzRhYzFiZTM3NmY5Y2MzMDM0YmI1Mzg4YTNlNzkgcHkzaworNzE5OTIgZTBkNDVkMzJmYjgyNDQyNjg4ZjczODlmNDY3ZjQwYmEzNGFmNzJhMCBweTNrCis3MTk5MyAzNWQ3M2E5ODgwMzlmZDEzMzZlZjA3OTZlZmRkOGI4NzdhZGVlYzEwIHJlbGVhc2UzMC1tYWludAorNzE5OTQgY2FmMmI5MWVmMDZhNTljZjg0NGE5ZGYyNWZhNGUxMGNkMzNjZTZiNiBweTNrCis3MTk5NSBkMmNmZDNkM2JjNTQ4ZjRmOTVhZjc5ZWQzMTI5MTZmOTBjZmY3NDAxIGxlZ2FjeS10cnVuaworNzE5OTYgYzQyYjdkZDE1NTA1Y2U5ODE2MWM5ZWQzZGZjYmRmMDVkMGE5YThjOCBweTNrCis3MTk5OCBkMzFiZThjOWM4YTI5YmY5MWNlNzQzYjYzMjFhNTI0NDdkOGUyNmZkIHB5M2sKKzcxOTk5IDFmY2ExYzkzMjY5NjI1MTczZWYzOTYyNmZjYjE4YzUyYjU4Y2YwYTggcHkzaworNzIwMDAgZmI4OTk4MzM1M2FkM2MzY2Y4ZmRhMWFjMjA0YjRjOWVmOWY3NDRkZSBweTNrCis3MjAwMSBkMDU5NGU3YTQ1ZDYzNjkzNzJkOWU1YmI4YTViYjNhOTRhN2E3M2MwIHB5M2sKKzcyMDAyIDk4YWE2MzFkYWMyYmNkMDFkYzZkMjJmZmNlMDdlMTM2ZTdhN2M3NWIgcHkzaworNzIwMDMgNTUzY2FmNmJhZTQ3ZTEwYWRhOTQ1ZjU0ODU3OGRjYzA4MjJmZWYwMCBweTNrCis3MjAwNCA5NzNkMjRmNDRiMDdmNjA4ODYxZmE2NTQ1MzM1ZGU0NDNhMTA3NzI4IGxlZ2FjeS10cnVuaworNzIwMDUgMjkzYWRhMWRiZmRhZGUyNDUzZGFhZjIwNjE3YmU3MWY1YTA3YjQ2YSByZWxlYXNlMjYtbWFpbnQKKzcyMDA2IDE3NTQwYTE2NDc5Nzk5NTY1ODYwNWQwZTA0NDAxYmRkZWJiY2Q2MDIgcHkzaworNzIwMDcgZDA1MTM0YTRmMDJjZTU5Mjg4ZTk2NjFiNDM4ZDc2NmVlMThhMjdkNCBsZWdhY3ktdHJ1bmsKKzcyMDA4IGY1MjE1OWY4NzMzMmJiYmYyMThmMWE0YzdmYjAxZjA3NDg5ZTMyOTQgbGVnYWN5LXRydW5rCis3MjAwOSA1NzgxMjk0NGM5NjFiNzg5NDQ1YTZkZWY1MmYzMmE4MzliNzRiZDQ1IGxlZ2FjeS10cnVuaworNzIwMTAgY2MwZGZmMmJmMWMyZTZkNTNmYzQ2ZTYwMTZmZjIxMzQ5ZDgxYTUwOCBsZWdhY3ktdHJ1bmsKKzcyMDExIGJmN2YzNDA3MzQxOGJlZGEzNmY3Y2Y1YjEyNjI3ZGFiYTNlZWQ4M2IgcHkzaworNzIwMTIgMTFhNTQ1MmUzMzA1ZTYwNzRjNWRmMmJjYzJmYzcyODMwZWJhYzhkMSBweTNrCis3MjAxMyA5YjQ1MWZhNTg1MDNhNTM0MGI5N2E5NDgxYjVlYjgyYjU5ZTMxZTMyIHB5M2sKKzcyMDE0IGQzN2E0YzVkNmQyYjUzOGIxZjEzNDZkNjgxOGY3MjRjNjUyYzNhZGEgcHkzaworNzIwMTUgMzYyYjRhZTIxMjlhNGYyMmIwYzE5YTdjYmViNjhlNGQ3NzMyOTdiOSBweTNrCis3MjAxNiA4MDY4YWI1MTYzMmQ2MTMxZTYzM2RlNWJmYzRiNmU3YzQzMmI2OWI5IHB5M2sKKzcyMDE3IDc0MzIxMWI2MGM5NDY3ZjE4YTQ0YmQwYzk1YmExOTU2N2ZhZDM3NWEgcHkzaworNzIwMTggY2U3YzM1M2ExZTk2YmRhMDhjMGE5MTQxM2E2ZjBiNzhmNjJkYTExNyBweTNrCis3MjAxOSA3ZmFhOGE3Zjg2M2UxY2ZkZTFiOTBlNzExNzNmZTI3ZDMxYmJmZWI1IHB5M2sKKzcyMDIwIDk4ODg5ZWYxNTc5NTg4NGY0MmQ2OGI0YjBmYTBiNWI0Y2E3YmJmNDAgcHkzaworNzIwMjEgZTQ4Zjg2MGE1Y2FjMjBiNThlOTgxOGE0ZmM4YTVmMjhjMWJkOTE1ZCBweTNrCis3MjAyMiA2YmJkYTE4NTE3MzJlMTU1MGNlNjJkNzFhMTcxMDJmZmIxNTE4NjQ5IHB5M2sKKzcyMDIzIDIxODAwMDhkMDJlZWEyYzNhNzQ1ZjBlZjQwYWNiYTQ5OTYxODI2Y2YgcHkzaworNzIwMjQgZWE0ZTE5MmQ5NDE0N2I0OGE1MTdmNTQ2MzBlYWQ4NTFhODAwNzM5NiBweTNrCis3MjAyNSA0YWJjNGNhNDQ2MWZkYmVkMDE0MTFhOWNjZmU2Y2ZlY2Y3MTg3ZTcyIHB5M2sKKzcyMDI2IGQ1ODAxNzU5OTdjZDUwOWNhODIwMThkOWNhMWRkMGY4OWZmMTAzNTcgcHkzaworNzIwMjcgZjk0M2Q4MjRjOGMzNWRkNzYyZGMzYTMwOTBiMTJlYzY3MzBmYWE0YiBweTNrCis3MjAyOCBmMmQ3MTBlNDc5ZTJlZGE3MjFmMzE2ODc0YjMwZmY2MDczYWQ4MDg5IHB5M2sKKzcyMDI5IDcxYTJhYWQ1YmFkNjU1ZmU0ZTE2YmJmOTczNjUzNjdjODg1MzFjZmYgcHkzaworNzIwMzAgMjkzNTRjNDk1MGU0OTQ2ODNjN2E4NDc3ODM1NjcwMGE4MmY0MmQ4MyBweTNrCis3MjAzMSAwMWQwYmQ5NTBjY2QxMzQ0NTNkZTFkMThhY2ZmOWNhNjQ4OGY1NTI4IHB5M2sKKzcyMDMyIDQxZmExYTEwNjM3M2FkYjI1ZDM4OGQ4MTllNWIxOGJjOGE5MGExNjggcHkzaworNzIwMzMgYzI1ZTVhOTU1NGY1MzA5MDY2YWFmZWJiNWVmNDhmZTI3YzNlYjM2MiBweTNrCis3MjAzNCA5NzUwNjY3MmFmZTNmYjUyNDJjNTg4M2E4ODQ2NjEwNmJiNGRiYTkyIHB5M2sKKzcyMDM1IDJjZTI2YzQ2NzljYjk3NTgzYjIzZmUzMmMyYjI5MmU2ZWQ4NjBjYTMgcHkzaworNzIwMzYgYzZjNGMwNjNkODc0MGVmMjUyMDFmYTkzYTg1MjJlODIzY2U5OTE0MSBsZWdhY3ktdHJ1bmsKKzcyMDM3IDllMDk3ODNjZTIyODhkZWZhZDEwMmZkNDIyMjJhY2QzZjg4ZDVjZmIgbGVnYWN5LXRydW5rCis3MjAzOCA1ZDc1MjAzYzg3MTM5MmNlZmI2YTMzZmEwMDUyMjY5MTljYTFmZjgzIGxlZ2FjeS10cnVuaworNzIwMzkgYjRlYmIzMDBlNjExOWMwZmJmYzcxY2M2NjdiMWVkZTM4N2Y2NThiMCBweTNrCis3MjA0MCA0YmRkODQ3YjU3YzI3YTI1YTJlZGQ2N2RmNGRhNjRjNDJlNGIwZGRhIGxlZ2FjeS10cnVuaworNzIwNDEgMWY5NWJhNGQxZWNiMTg1OTg2MjE1YzE4ZmJmZmQ4Y2FjMThkNWNlNiByZWxlYXNlMjYtbWFpbnQKKzcyMDQyIDFhNDUxZmY2NTgzYzU0OGY4YjA2NjQ3MTM1MmU0NDUxNjY3YjQ1ZGUgcHkzaworNzIwNDMgNzhkZmJhZjYzYjE3YzkzOThhMTQyMmMyMWMyOThkM2E4NDI0NWUwYyByZWxlYXNlMzAtbWFpbnQKKzcyMDQ0IDRiNGI1OWYyNzhiZjMzOGNiMjUzMjI2ZGQ0YmQ4MGUyZWQ0YjJiNzIgcHkzaworNzIwNDUgYjBjY2YyYWNmYTFlNjkwODA4OWVmZGI5Y2IwNjIxNmIyOTU0N2E1ZiBsZWdhY3ktdHJ1bmsKKzcyMDQ2IDU0Mjc5MTYzMzg5ZDQ1ZjQ3ZWM1YjkyN2FhNjllYzc4OTYzYzRkOGEgcHkzaworNzIwNDcgODQ1MzdkZWY0NTUwNTAxOTYxMWRmOTNkNWE1OTdlOGZmYjRjNjcxYiByZWxlYXNlMzAtbWFpbnQKKzcyMDQ4IDdjMzk1NzRhZDAzNzU0MTZhMmFhYWFhNDI2NGFlNTBkODRlMGFlZjAgcmVsZWFzZTI2LW1haW50Cis3MjA0OSA3OGZkMTVlMDUyNTg0MDcwY2EyY2UyZDJkMWI5ZTA5OTQwZjU3OWYxIHB5M2sKKzcyMDUwIGU1NmZkYmE2MWU5NzVmMTE4NDkzMTY4MGI3OGYyMmNhOWQ3MTZjZmYgcHkzaworNzIwNTEgMzg1MjJlYTJhZGQwYTg3NjI2ZTMxN2Q5Y2MyY2QzNjg0ZGE1YmI3YSByZWxlYXNlMzAtbWFpbnQKKzcyMDUyIDFjMDYwZDVjNDdjZjBhZWRhYzdjN2U0ZjJhYTUwZDdkZWE0NTg4YTUgbGVnYWN5LXRydW5rCis3MjA1MyAyYjM5NDVkNzU1YTdmZTYxYjc4ZjVkZTJlMDkzYjYyOWU3ZWQwNTNjIGxlZ2FjeS10cnVuaworNzIwNTQgMDE5MjQ0ZjRiMGQwZDBlNWQ5MzJmNmU1NDAxYjExZTRkYzgxM2M2ZCBsZWdhY3ktdHJ1bmsKKzcyMDU1IDQyM2Y4ZjliMDdiMTRhODU0NGM1ZmYzMzA5YTZkMjg5ZGNkYTI4NGEgcHkzaworNzIwNTYgZDliOTQyMmI0MDljODk4NDAxZjk4MGZkYzhmMzRiYzkxOGIxYThmOCBsZWdhY3ktdHJ1bmsKKzcyMDU3IDk3Y2ZmNTkzYTI1N2U5ZDViYTU4MWY1OWRlNGExNmZkN2IyZmE5MzkgcmVsZWFzZTI2LW1haW50Cis3MjA1OCA2ZjE1ODhmYjc1OTVlMWIyMGZlNmQ2ZjVjNzg1NmU1NDgxMGIzODUyIHB5M2sKKzcyMDU5IGIwYWU5ZmZjNzc3OWZkNzUwM2RjNGZiZDQyMTE1ZThjMzA2OTNmNWUgcmVsZWFzZTMwLW1haW50Cis3MjA2MCAzMjQ2MGIwNGU3YjZlMGQ1MDc3MjkyYTc2NWNlYTViODk1MTNhZDFkIGxlZ2FjeS10cnVuaworNzIwNjIgN2IyMDZlMmMwMDkyYzRiMmJiODFmZjM5ODQxM2Q0NDg5MDliOGZkMyBweTNrCis3MjA2MyA0YWYyYmRjOWIxYjczNTU3OTVmNjk3NzJkYTRjYjgzMGNmYmRlMjJjIHJlbGVhc2UyNi1tYWludAorNzIwNjQgY2FiY2VmN2U2ZjI1NmNkMTgyNThhNTFiNTUwNmYyNDk5YTg2MTk2OCByZWxlYXNlMzAtbWFpbnQKKzcyMDY1IDFlYzRiZjNkZGRhNmY1ZWQyOTNhOWI5YmRkZDkzZjU3NjljZjRlZWQgcmVsZWFzZTI2LW1haW50Cis3MjA2NiBkY2JjMjIwM2JkZjM2Mjc2YjJjOGQwNzE2OTUyOWRlZWZkNzA3ODIzIHJlbGVhc2UyNi1tYWludAorNzIwNjcgZDY1ZGIxNjllM2FkNzE1MTZlMDRhOGVlYzdiYmZlM2NlNmJiN2YyZiByZWxlYXNlMjYtbWFpbnQKKzcyMDY4IDNmMTVhMDZkMDA0NzNhYzk0NjMyYTM4ZjEyNDRlYjRiZjlmYjRkZmQgcmVsZWFzZTI2LW1haW50Cis3MjA2OSBiZjA1MjIyYzA3NDAwZTIxYjYyZGU5MTBlYzZhYThhZGViNmNmZGU4IHJlbGVhc2UyNi1tYWludAorNzIwNzAgZjdhMzllNjE5ZTBhMWY2MmY4NTUwYzUzMDQ0NmYyNmJiNTU2NTAyMiByZWxlYXNlMjYtbWFpbnQKKzcyMDcxIDAyZDZmM2E2OTc3Zjc4YjU4ODVlMWUyZDQ0OTgxMTAxYzA3NWZmY2QgcmVsZWFzZTI2LW1haW50Cis3MjA3MiBmMjQ2NzE1Mjg5ODBlN2MzNDMyNzA4ZTE1MjgxYzIzYjkzYmRmYzdlIHJlbGVhc2UyNi1tYWludAorNzIwNzMgNzE0Zjk1ZWE2YjhmNmM4Yzc4ZWU0Yjg5N2JkOTBlMjBlMGI2M2Y3YiByZWxlYXNlMjYtbWFpbnQKKzcyMDc0IDM2ZWI1MzdhYmIxNzkzNjJmNGFmZTNiNGUxNjhjZWFiNzBjNTc3ODMgcmVsZWFzZTI2LW1haW50Cis3MjA3NSA1MDNmMGY0MWYzNWY5MWFmNDI1NGEwYTRhODg5OGJkZWEwZWJkYmZjIHJlbGVhc2UyNi1tYWludAorNzIwNzYgYjI4ZGRlYmJkODM1NTc1OTg5Y2U0NTM1MzIxZjQxMWIyMDJjNGJhMSByZWxlYXNlMjYtbWFpbnQKKzcyMDc3IDZmMTBkNTI1ZTNiODRiNTMwMmE0N2I1YWFiNzQwNjk2NzNjN2JjYjggcmVsZWFzZTI2LW1haW50Cis3MjA3OCAzMTY2ZGVkNmJjNGEyNmMyZDE5YTA4OTQ2ODkxMTFjMjc1M2E4ODM2IHJlbGVhc2UyNi1tYWludAorNzIwNzkgOWRjMzRlZjIyNzM1MzgyN2E0MzdhYjE0NGE5Y2FlOTk3YWFlOTJkNSBsZWdhY3ktdHJ1bmsKKzcyMDgwIDkwMDBmOTY2Y2NiYmJmMDM1ODVmYmQ0ZTQzMmJjOWNkYjAwMDMyNmIgcmVsZWFzZTI2LW1haW50Cis3MjA4MSBlMjg0M2I2NDE3NWVjZDY5NGYwZGU3OGYxZTE4ZDI0M2UxY2FlZjg1IGxlZ2FjeS10cnVuaworNzIwODIgYzhmOTQwMDdiMWM0NmUwZTE5ZTNlMDNhMjM3NWNjZGExNTZmZTM0ZiBweTNrCis3MjA4MyAyMzJkMjI1MGQ3MDM1NWRmZDMwMzFkZTUwOGQxOGM4N2ZiNzE5MDJiIHJlbGVhc2UyNi1tYWludAorNzIwODQgMDI1YmExMmM3ZGE1NDE4ODA4ZjA0ZjdmZjdkNGNiNzQzMGIwYzMxZCByZWxlYXNlMzAtbWFpbnQKKzcyMDg1IDc0NTkwMjNmZjg2MWFlNWZhY2ZhNTYyMWM2OTBkNWQ0MGExODAxZjAgbGVnYWN5LXRydW5rCis3MjA4NiA3ZmRhNWFmMmFmN2QxMGM2NmRkNjY0ZDg2OWE2YmEzMmFmMzJmMmQ2IHB5M2sKKzcyMDg3IGEzOGQ2Y2Q5YWE2MzY5Y2ZmZTMyZjBmMzJjMjY3N2ExZDVhYTYxNTEgcHkzaworNzIwODkgMTQ2OWZiMWFlYTkyNGRkY2ZjOGY2ZDcyOWIwNDNhM2NjZmZmNmJjOSBweTNrCis3MjA5MSAzYjRjZWE0M2Y5ZTYzOTkyYzIxZGQ5MWZmOGE5MjAwMWIzNjJhNzZhIHJlbGVhc2UzMC1tYWludAorNzIwOTMgODE3ZDhiMjhjZDZiM2UyNjMzNjZkNmY1MmNjNmFiNDRhNjE5MzI2MyByZWxlYXNlMjYtbWFpbnQKKzcyMDk0IDljMmFjMWVmM2E2ZmU0ZDdmMzdhMzI1MTZjNmZmMmU4MGE5ZmExNzUgbGVnYWN5LXRydW5rCis3MjA5NSBiNDA4OTQyZmI0MzUzOThlOWEyMWIyNjgyZDEzMzQ3NDBhOTBkZDUwIHJlbGVhc2UyNi1tYWludAorNzIwOTYgNjliZWEyNmVjODdiOTkzN2U1NjU4N2Y0NTE2ZGFhNWQ1MTE4MTBiMSBweTNrCis3MjA5NyBjZWE2NDFmZjQ1MzRjMzkwZGJhNDMyOTAyYmNhM2I0YzQ2ZmMyZDZlIHJlbGVhc2UzMC1tYWludAorNzIwOTggM2RmYmFjNzk5Y2Y1MWM5MWJhMDlkNjJhMGI4NzM3NGU0ODEyMWI3YiBweTNrCis3MjA5OSAwMjA2ODg3N2MxOTBiM2Q3NzlhYWM2ZjNiNGQwNTIwZDY2NDUzZTI1IHJlbGVhc2UzMC1tYWludAorNzIxMDAgNGVmN2Y5M2Q2MWExYThkNzA1ZjZlODhiYjVlZTVkYzNjZGEwNzE5NSBsZWdhY3ktdHJ1bmsKKzcyMTAxIDg2MTdlODEwMTZiNmIwYzFjODlkYzk0M2NiYzdmMDQ2NzM4ODc2YjEgbGVnYWN5LXRydW5rCis3MjEwMiA1ZjgxYzQ1YmRmNmQxMDE4MDgwNmE0M2I2MWM5NTM4NDY2NThmMjU0IHB5M2sKKzcyMTAzIGJhNjM4ZDNhNDlkMTVmNWRmNjk4YTVkY2ZlNGE4MTExYWIxNjczMzYgcmVsZWFzZTI2LW1haW50Cis3MjEwNCBlOTVjODc4YWM3OWFlN2Q3OTk5NjM1N2Q0N2UxN2EwNGZlYTg1Y2NhIHB5M2sKKzcyMTA1IDczNzAyYWJlMWNiOTcxODQ4M2I1MDMzYzRhMzdmZjVhZjFkODdmMTYgcmVsZWFzZTMwLW1haW50Cis3MjEwNiBiODYzM2M3ODkzZmVmNDAyZWQ0NjY5YmUzNTdjNDg0MzJiMDEzZDg1IHJlbGVhc2UzMC1tYWludAorNzIxMDcgMmVmMmNiNTc3M2ZlMmU0ZWFlYWRjZGI0MThiZWRkODY1Njk5ZTUyMCBsZWdhY3ktdHJ1bmsKKzcyMTA5IDM3NTk4MzliOWZhNTQ4YmNlMGQ0MDBiY2VhMmVmOTFmYWI4MTAwZGUgcHkzaworNzIxMTAgMjE4MDMwNzViNDExMTU3ODA2ZDc1N2ZmNDllZDkzOGMwZDFiODMyNCByZWxlYXNlMzAtbWFpbnQKKzcyMTExIGFlN2Y4MmJiZjE2YzhlNmRmM2FkMzAzMmY4MDQ3ZWJkMThkYmE1MDYgbGVnYWN5LXRydW5rCis3MjExNCBhMzgxNGRjOTliODBkMWMyM2Q5Y2RlYzhjZDVmMDk3YzYxZjM4NDg5IGxlZ2FjeS10cnVuaworNzIxMTUgM2Q2YmM0MjY0NmI1MWUwYzJmM2JkMzIyMDA4ZjA2ODA1NWNjMjRlNyBsZWdhY3ktdHJ1bmsKKzcyMTE2IGM4NTVkZjdjNmJiNTkxMDUwYmM4YTAyMzE4M2U1NzVhNTM1YWQ0NTkgcmVsZWFzZTI2LW1haW50Cis3MjExNyBjY2Y3ODUzYjA3OTMyNDRiZmZjNTQyZjhkNGVhMjc2NmMzNTMyY2MzIGxlZ2FjeS10cnVuaworNzIxMTggNjQ3YTA0MGRmNGQxMWNkNDcxOTk5OTBkM2EyYjJjMmEzMWNmNmQ2ZiBweTNrCis3MjExOSBhM2ZjY2NlZTg5NTdhMGU2YTFhNGQ1N2JiYWIzNzc0YzUzOTEzMjdkIGxlZ2FjeS10cnVuaworNzIxMjAgNDJlZjc2ZjU0NGZiZjIxYjZlNjM0MDMwNTllNjMyMDA1NDNmM2RmOSByZWxlYXNlMjYtbWFpbnQKKzcyMTIxIGZlMDYyMTg3NjI0Y2JlNzNjMzE3N2Q2ZDAzMWQ2ODI3ZTAwZmUyOTggcHkzaworNzIxMjIgNzYxN2ZhNzE2NGRlNmRjNzE0MGFiOWU5YWQ4YjBjMTg2YzE2MzFiMCByZWxlYXNlMzAtbWFpbnQKKzcyMTIzIGNjZWJiYWQ1ZjhkZmZlOWZkOGRiZjFjNjk1OWUyMjhhYzZhZmNjMzEgcHkzaworNzIxMjQgOTNmZTYxMWNiZDNhYTEyZjFmZGZlMGUyMTNjNTI1MzI4MmNmNTA0MSByZWxlYXNlMzAtbWFpbnQKKzcyMTI1IGIzOWNiMjkyMTk0NTczZDFiYjQwYTM4ZjFjZmY2NzJmMWQ0ZjgxNTYgcHkzaworNzIxMjYgNDc2MjM5NGZjMjZjNTJjMTliOTMwMGY4MDQ4OGQyMzZiMTVlZmVhYSBsZWdhY3ktdHJ1bmsKKzcyMTI3IDVkOTc3MWQ3Y2M0NmM3ZjI4YjQ2MGMxNmNlZDAxZWM0ODJkYmQ3YjEgbGVnYWN5LXRydW5rCis3MjEyOCA4YTg1OWFjN2U1YjgxZTE5YmVjY2FlMDZkZDRmYzk1ZjM0NTU5ZDIyIHJlbGVhc2UyNi1tYWludAorNzIxMjkgZTI3NDQ5ZGU2MWRiNjQ4YzU0NzcwYTZjODgwYzAzMjY0YWMwYWM3MiBweTNrCis3MjEzMCBlODk0NDMzYzY0NjQwZjE5Nzg3YzA2ZGNhNWE3YTk2MTY0MDFkMjJkIHB5M2sKKzcyMTMxIDI3YzZiNjNkMWRiMzU1ZjY4NzcxNzVkM2RjMTc2YzkwYTdkZjQwMWYgbGVnYWN5LXRydW5rCis3MjEzMiA0MTEzNzRjNWFhNDIyNzhkMzBmMTZhMDcyMTFiYWRhZWI1ZjVmMjI1IGxlZ2FjeS10cnVuaworNzIxMzMgOTRjZGZkMDdkNGY0OGQ3Mjg1MjQ4YzdjMDNiZTBlNDhkNWY0YmE3MyBsZWdhY3ktdHJ1bmsKKzcyMTM0IDc5ZGM4ZDU4OGViMzA2NmMyOThiZjQ3OWU5MDdhODU3YWFlYzU5NjYgbGVnYWN5LXRydW5rCis3MjEzNSBkNjgyYzkzNDY4NDgwODgzMjgyNTg0MjQ2MzY0NGMyYzkyYjZmMGEyIGxlZ2FjeS10cnVuaworNzIxMzYgMGYyYjMzNTY2OGVlYmM4ZmRhOWEzYjEyMDg2MGJhMDMxNThlODgzMiBweTNrCis3MjEzNyAzNGU3YzFiMTQ0OTUwMWExODNlMWQ4YjFhMThkZGU4NWJiOThmODU5IGxlZ2FjeS10cnVuaworNzIxMzggYTFlZmFmMDE1MTAwMTc0NzBiZmNkYWVhODE0MWNjMTRjZWY1OGZiYSByZWxlYXNlMjYtbWFpbnQKKzcyMTM5IDQwZDM0MzFkYjI0MDg1NWM0M2ZiNWFiZGE4ZTFmMjg3NzZiMTFiYjQgcHkzaworNzIxNDAgMmNkZTBkMDAzZmZjMDNlODAxMGExYTZkYTFmZWZkNzE0MGNmZDhkZSBweTNrCis3MjE0MSBkNjY4OGVkMDQwY2YzNmI0Y2MyMTZmNjRjMzU4MTc3NWFjYmM2ODhhIHJlbGVhc2UzMC1tYWludAorNzIxNDQgYzRhMWM0ODg0MDU2ZDQ5YjhkODFlYWFlYTg1ZGVmNzk4NGQzYWUyZiBweTNrCis3MjE0OSBhYmM4MGY4YjBkZmRjMWZmZGQ1YzhkMWZmMDBkMjc0ZmQzNzVhYjQxIGxlZ2FjeS10cnVuaworNzIxNTMgZWQ4YzEzOTVkMDMzMGNkZjc0NmEyYjVlZWYyNjFjNDdhNWI3YzBmNCBwZXAtMDM4MworNzIxNTUgMjk2NTZhMDNjY2UyZmE0YzEwNGQ4MDgyOWYxZGNiZGE4NGYwMjk0NCBsZWdhY3ktdHJ1bmsKKzcyMTU2IGJjNjBkZTIzMjIwMzFjZWQ1YjQ3ODk5MWY3YjJhMDU3MzNlMjczZTMgcHkzaworNzIxNTcgNGI4NmU1M2Y5MDA2ZjYxNzJhOWI5Y2QyNmQyNDQ2Yzc5MzQ4MWNmNiBwZXAtMDM4MworNzIxNTggYmRhYjdjY2RjN2I0ODY0MTFjZDQ4NDY4YjJmZWFlYjlhMTlmMTM4OCBwZXAtMDM4MworNzIxNTkgZTdhOWUyZmQ3MTNmMDI0MTcwYTg0NTE2ZDM2YTk1NTI1Y2RkNmQ2NCBsZWdhY3ktdHJ1bmsKKzcyMTYwIDA5MzVlMjRjODFjMDhkNWRkYjc2MjczNDAzMzMyZDkwNjFiM2QyNjAgcHkzaworNzIxNjEgZTA4ZTgwZTc2OGMxMWYwOTRmMWI0MDcwNzM5NTM0MjFiZjZhMTg3MyBweTNrCis3MjE2MiBhODBiM2JiNGQxYjBkYjI2NTY4NzZiMWUzZjAzNGNlMTEwMzQyMWYzIHJlbGVhc2UzMC1tYWludAorNzIxNjQgNTRjN2JhM2RkZmM2NTZlZjFkZDM5YmVmYTQ3M2JiMzQ3ODE2MWRlNiBwZXAtMDM4MworNzIxNjUgNjBkMGYzNzNhODk0NmEyMGEwZDAyOGI4MDRkYmNlNGQ1ZDI1YmZmOSBweTNrCis3MjE2NiBhZWI5MTQxOTNiNDVhNjBhMWQ3ZGQ0ZjFhYTMxN2QxODI4OTQyZTU5IHJlbGVhc2UzMC1tYWludAorNzIxNjcgODU1NDI3MTVhMjQ5MGJkNjFiNGU1ZDYwMzE4YzRmNjE0NDVlNDZjNyBsZWdhY3ktdHJ1bmsKKzcyMTY4IDYzNDgwYjkyYTVlMTI1ZjhkOWJmMDMxNjdkOTNhNWEyODhjMTA2YjIgcmVsZWFzZTI2LW1haW50Cis3MjE3MCA5NmMwNGU2YTZkODgyZDM2YzUyMDc1NGExN2FmZDFiZGY4OWI0YzE2IHBlcC0wMzgzCis3MjE3MSBjYzY5ZDNkZmY4N2EyMjJhYTc1ZWE0NDlmNGNkYzJlNGJlZDUzODZhIHBlcC0wMzgzCis3MjE3MiA1YzU1YjljODA4NDZhNGQxZmEzMTQ2ZWVkMjZlOTEyYjI0ZDJhZDUxIHB5M2sKKzcyMTczIDk2M2YwZjUxOTcwOTU1ZWM3NDQyMzAxZjlhMGM5OWMwNzk5ODkyNjcgbGVnYWN5LXRydW5rCis3MjE3NCA5ODY1MWU0ZjY1ZmU1OWFhMDc1OWNkNTlhMDgwNmI1NDc5NjY5NjViIHJlbGVhc2UzMC1tYWludAorNzIxNzUgYmMwNGNlYmNhN2U2YjQyOTgzY2U3ZjhkMDFlODg3NmQ5MmFjYjExYiBweTNrCis3MjE3NiA4OWQ1ZWY4MmMwMDY3NzBjZjNiZjY4YWYyNGNkZDQ1MmZlZjE3OGFiIHB5M2sKKzcyMTc3IDAxYWVkNDgxOTZiMDI4ZWI5MWE4ZDc4Nzg4MDUwZThjYWFiYTI3ZGYgcHkzaworNzIxNzggNDA5NDQ4ZDQ1NWUzZTQyNjBlYWZjOWM3MTExYzZjZTVjMWVlODQ2NiBsZWdhY3ktdHJ1bmsKKzcyMTc5IDk2MGVmMDBkNTIxNDE3NzlkODI0OWRmYWRiYjM2N2UyZjk4YWNhOWQgcHkzaworNzIxODAgYjE4YmQxYTQ5NGM3MWYwNTU5NjI1NDQxZDY5YjA0NjM5ZTgyMWJhNSBsZWdhY3ktdHJ1bmsKKzcyMTgxIDIyODAzNjVlYWE3MmMxMDc0NmQ3NDNiZjcxZDBiODQ2NGUxNTZlODUgcHkzaworNzIxODIgOTUwNjFkYTA2Y2I4NDViNzkwM2Y0YmI1OTRjNmFkZDhmMDA1ZmI0MyByZWxlYXNlMjYtbWFpbnQKKzcyMTgzIDg5NjNjZDg1OGFkNjEwNmE2M2M1MzA3ZmVlMDM5ZWE0M2IxM2Q5ZDkgbGVnYWN5LXRydW5rCis3MjE4NCA4ZmIxOWNhNjJlNzBkZmM1Zjk2NzllZWM3Yjc1M2VkNjkxNzkxOWFiIGxlZ2FjeS10cnVuaworNzIxODUgMTM1NWRhYzIzOGZlY2FlYjgyNzMxYzE2ZjI3MWEyYTAzMTMwMzY4ZSBweTNrCis3MjE4NiAwZDgxN2U4ZWQzZWJmOWRmN2FiYWZmYTA5MmFiYWI1NTQyMTRiZjg3IHB5M2sKKzcyMTg3IDQyZDI4ZTVkYzdjYjE0Yzk0NTBjMmY2MmExZGI2YjVmNDExMDc3NWMgcHkzaworNzIxODggZWI4MTE1YWJmZjVlNTUyMTU0ZmRmMGZhMTA2NjFiODUzNTA1MWZjZSBwZXAtMDM4MworNzIxODkgMjNiYzRiMzkxYzEwMjI5YjY5NDE4YTE0MGM2ZjQzZjE4OTQxNTZmNiBsZWdhY3ktdHJ1bmsKKzcyMTkwIDBjOGJmZGRiZmNhMjY2Njc1ZjNiZTFjZDQzN2MwMWMyYmJlYWRmMTkgcmVsZWFzZTI2LW1haW50Cis3MjE5MSA5ZDg0MGE1OGEwZDVkMWI2YWJjOGZlMmM1YTYyMGI4N2IzYzMxZmM2IGxlZ2FjeS10cnVuaworNzIxOTIgNTExYTM3ZWYxYTQxMGZmNGQyNWY3NDgxOTRkZGIzYmM2MjNlYmUwZCBweTNrCis3MjE5MyAwNTEwMTlmMGRkOWZlMzlhNWFkOGMzNDFmOGYxMzM0OGFkMTgxMDQ1IHJlbGVhc2UzMC1tYWludAorNzIxOTQgZjY4NmFjZWQwMmEzZTRkNDNjMzQ4YzYzYWQ2ZDI3ODMyY2JjNWRmNyBweTNrCis3MjE5NSBlMTljYzNlYmI1OGEwYmU2MjQ0YTQzN2FkNDA4NGNjZGZjMjQ2MWQ2IHB5M2sKKzcyMTk2IDIwNmNjZjlhYTAyNWYwMTY0NWZjMWJmOTFkN2FjYjcyZWM3NzcwYzggcHkzaworNzIxOTcgZTYyYmM1N2E2MmVhYmEwYWFiZTg2NDJjNzNhOGVmYmQwMmQ1OTVkNiBsZWdhY3ktdHJ1bmsKKzcyMTk4IDAyYjYxNTM4OWQzZWY1MDZhY2Q1MDM5ZTBiNzcyODZhZWFiMDc5NTcgbGVnYWN5LXRydW5rCis3MjE5OSBkN2I1MWViZjZkZTQyNDM2OWZmNWQ1NjM2YTE1YjQ5Y2U5MTY2MGFhIGxlZ2FjeS10cnVuaworNzIyMDAgMWI3MWE1NzBmNTRlYWNmZDg2MDJiNDE2OTQxZGI0OWQwMTY3NjI2MiBsZWdhY3ktdHJ1bmsKKzcyMjAxIDFhODQ5ZWU1ZjA4Y2M4NjQxNjgyMWI4Y2JhMTcyOTMwYWU1ODRiODggcHkzaworNzIyMDIgNWFhZjI0ZWM0M2RjMTBhZmE0YWU3NTZjNTY5OTA2YTA1N2M1ZDIxZSBsZWdhY3ktdHJ1bmsKKzcyMjAzIDkwM2U4MGYzZTgxMThlZjI3YzgxYWNiNGU4OTU2YjA2MTQ0ODRhODkgcHkzaworNzIyMDQgMTFiMWZjOTkyMWJkMGUwM2QxMTQ3ZjZlZThiZGM3MGIzZTI4NDYwZSBweTNrCis3MjIwNSBmMjc3YTg0MDcxZjE0ZWUyODU3YjRmYTFhNDFmOGY0ZTFhYzEyMTk4IHJlbGVhc2UyNi1tYWludAorNzIyMDYgMjFiZGE2MTFmMGU0MDBkNzUwZTU5ZmQ4NmY2ZDMyYTBiYjM0ODg3YSByZWxlYXNlMzAtbWFpbnQKKzcyMjA3IGVjM2ZjNjQ2MzFkOTllZWZhMWVmMDE5NGRlZjE4ZTg1NDY5NGM3NDYgcHkzaworNzIyMDggNTJhNzdlZjA2OWNkYmEzYTEyZmU3NzYzZTM3OTQwN2UzOGU5ZGIzMyBweTNrCis3MjIwOSA2NjIwMGE3NmRlMjY2MmI0NzE1NjVjODM1Zjk2OTYxY2VlMzg3YzMwIHJlbGVhc2UzMC1tYWludAorNzIyMTAgOWI1NWU5Yjk5YTQzNmJkYTM1N2RjYzkyMmY5ODViNGQ0NmM1YWM2ZiBsZWdhY3ktdHJ1bmsKKzcyMjExIDVmZTkwNGZmYzZiODIzYzRmOWIyMTZiOGE4ZjA3NTM3ZTMxMTU5NTAgcHkzaworNzIyMTIgYmUzYzA3YWRkZTk1ZGE0MzVlZmJkNmI0MTI3YjQ4YjQ5OTM2NWE0NSBweTNrCis3MjIxMyBlMGNlZGU3ZjUyMWI0MzlmZTk4MTA4NWI2YmMyMDgyMDNjODgxNzhjIGxlZ2FjeS10cnVuaworNzIyMTQgYTg5MzE5NDE1NWEyMjUyM2ZiNzRjODY5ODRiMjY1ZjZhZWMxNmFkMSBwZXAtMDM4MworNzIyMTUgNGY2NWVlMWY0ODQ4ZjY5YmY0ZTdjOTI2NDY0YzNkMzEzMTM0OTM4OCBwZXAtMDM4MworNzIyMTYgNTg3MDUwODJlN2M4NWNiNzVmNjRkNmFlYzFlYTkyZjk4ZGRkNDEwZSBwZXAtMDM4MworNzIyMTcgNTJhODlkNzIzYjZiYzEyZDgzNzNmZjE3ZjI1Y2U1MjliMWU2MzUxZiBweTNrCis3MjIxOCAwZWNjNWI5MDY0Nzc5NTIzNWQ2ZGY5ZTc0ZjM4YTkwM2NkMTNlMjE1IHB5M2sKKzcyMjE5IDdiY2UwNTJmMGU3YjcxZTRlZjYzYzJiZDQ4YWRlNzY2MzMxZTdmNjQgbGVnYWN5LXRydW5rCis3MjIyMCBjNWYxNGRiZWE0M2ZiY2NjZmFiN2NkYjc5MTk5NGQxMjA0MjIwNTExIHB5M2sKKzcyMjIxIGIwNmYxMWYzYjY1YjBkODg1OWVkZThjZWNhMDRmZjI2ZGNlZmEwMTIgbGVnYWN5LXRydW5rCis3MjIyMiBiYTQ1ZTEyNjU3NGRhMWQ2YmY2MWQ0YmU3MTA5YzlhZjQzOTM3YjhjIHB5M2sKKzcyMjIzIGU1NDE0MWQ2M2UwMTg3NGJhMmI4OTAwMjVkODIwZGFiZTBiN2YyNzEgbGVnYWN5LXRydW5rCis3MjIyNCA2NGQ5YTllN2Y2OGVjZDQyMGEyOTRhOTJmOWZmZTI1MWE2ZGExNGZmIHB5M2sKKzcyMjI1IDMwM2I3ZWU4ZTdmZWYyYmFmM2VhYzFiZmM0YzgyYjI0NzQ1NDExZWUgbGVnYWN5LXRydW5rCis3MjIyNiAwMDFhYzU5YzFlNjcyY2UzZGE2NGJjMWM4NGUzY2FkMzRiYmUyZmNhIGxlZ2FjeS10cnVuaworNzIyMjcgOWZlZjFmMTY1N2M4YTc1NTE0YzNkMjhjZDM2MWFmNDA1ZWQ0MWY4NiBsZWdhY3ktdHJ1bmsKKzcyMjI4IDM1OGFiMWZmYWE4MDg0ZWE3NzNiMWFhOTFjM2E4ZDczODkwZTc4NjkgcHkzaworNzIyMjkgYWVlMmIxMGRiYWI5MzhlYzJhYTU0ZDE4MDcxYmRjNmFkMDhkYmU0NiBweTNrCis3MjIzMCA3ZmZkOTYyNWM5MWNmZDc5ODQzNjUxZDVhMmIwOTkzNDBlZWFmMzc1IHBlcC0wMzgzCis3MjIzMSAwMDA2M2FkZjA1NTg0NTY1OGI3ZGIyMDFlNDZiYWUzMjI5YzJjOWUyIHBlcC0wMzgzCis3MjIzMiAwNzA5YzZkMzY5ZGU2NzA3Y2M2OWE4N2I1M2RkMzk5YWFjNGYzOTUxIHBlcC0wMzgzCis3MjIzNSA3NjRlYWU1MjA4ODA4ZjVmMDRhMzI2YWUwYjA3NjEwMjBiM2JmZWY0IHBlcC0wMzgzCis3MjIzNiA5YjEwN2E3OTdkZjg5ZTA4NjNkN2QzZjc3ZGQxOWQ2MGY2ZGU2NTAzIHBlcC0wMzgzCis3MjIzNyBkNmIzYjc0YmRhMGU1YWVjYmYzZjY0NThlNDk1OGMyM2EzMmYzZjA4IGxlZ2FjeS10cnVuaworNzIyMzggNTI2YjBkYzA5MTM4MjFjZDcwNzgxNGQwZTc2NGM5ZmU2ZjMwYTAzOSBweTNrCis3MjIzOSBmNzgwMTY5OTgxNWMxMjQzZmY5OWVhODE3ZDYzZWE0MjZkNWMwNmFjIHB5M2sKKzcyMjQwIDY4NzdhMWY0YTA5MjdmZWM2NWUxYmEzZWQ4ZTYzMTU4NjViODZiNjIgcGVwLTAzODMKKzcyMjQxIGFlMjRkZTQ4YWRjNDFkMTE5NmU4YmExYjRiMjQyZjMxZTJlYWYyMTYgbGVnYWN5LXRydW5rCis3MjI0MiBiZDZkMjU3YTkxMzBmNzg2Y2M1YzZmMmY3MmI1YTI3Mjg1MmQ5N2E1IHB5M2sKKzcyMjQzIDg3ZmMxMTYyZDlmNGI2OTQwOWM5YjJjOTUxNDc2ODNhMzg2ZjljM2EgcGVwLTAzODMKKzcyMjQ0IGFiZjU3NGU5ZjFkM2Q1OWQ3OTc1ZTFlZjVmNWY0Yjk0NmFmMzQwMDMgcGVwLTAzODMKKzcyMjQ1IDM5NDQ2MmVhYjY1ZGIwNTI3NGE2ZjY2NDQ1YWM4MTgyODZhZjlhOTkgcmVsZWFzZTMwLW1haW50Cis3MjI0NiBhNjc3ODNkODEyZjZlNmNkMzc3NGZiMTRiYzFiMWY2ZTcwZTQ0N2M2IGxlZ2FjeS10cnVuaworNzIyNDcgMzMyNzBhZDZhZGVmODJmNjA1M2JjM2JjOGU4OTlmNTk1ZjY3NWZkYSBwZXAtMDM4MworNzIyNDggMTNhODJhNzEwZjE5YjQzOTgwMGE4YzllNDk5Zjk0MWE3ZmRmNThiYyBweTNrCis3MjI0OSBmNzBlOTFmNWZjOWNmZjI0OGI2YzJlMTZhYmY5Yjk0ZTQ0ZjdmYzE4IHJlbGVhc2UzMC1tYWludAorNzIyNTAgNjNkZGNlOWZhZjRhOTg3ZWI0YThmODkyODFlMmQwZTdmOTViNzFjNyBsZWdhY3ktdHJ1bmsKKzcyMjUxIDRhNzZkNmQyOTdjZWJlNWUzYjA5YTEyOWE1YTM5ODc5ZjA4NGQ3MjIgcmVsZWFzZTI2LW1haW50Cis3MjI1MiBmYjUyMWY5OTZkZTEzYmRhNzUxZGQ4YTllNzEyYzc2YjVjMjY0MTQyIHB5M2sKKzcyMjUzIDFmMDBiYzFkMTE1YTBiZjQwZmEwMmQ5YjUwNjA4ODMwMDczMTFhNjUgbGVnYWN5LXRydW5rCis3MjI1NCA1YjI4ZGViYTFjZDZiN2EwMTNiNjVlYWFhOGEzYjllZDczYzc1ZTQxIHJlbGVhc2UyNi1tYWludAorNzIyNTUgZTJiNTUzZDcyMDVmMzliZWIxMDVkZGZkODdmMGQyZDNmODRiM2MxNCBweTNrCis3MjI1NiBhOGI1YTViOWE0OWFhZDIxODM5MWJhMmFjMzhiYWFjMWZhMzE0ODBlIHJlbGVhc2UzMC1tYWludAorNzIyNTcgNGY4NjdmMTQ5NGQ1NWU5YzFmMDA5MTgwMzUwNzRkN2E1NjdiNGMyYSBsZWdhY3ktdHJ1bmsKKzcyMjU4IGM2Zjk5ZDRjODEyMmUxMmNiNGNiN2M4NmU2NmVlZjg5NWQ0ZmJhNjQgcmVsZWFzZTI2LW1haW50Cis3MjI1OSAwYjdlZWZlN2I2ZDE3ZDhmNGNhMmE4MWUxZjJmMDk4ZGFhY2M3ZDUxIHB5M2sKKzcyMjYwIDFjMjdlY2JlZDhjNDFhNzEyOWViNGEzYTg4Mjk1NzM5NDg1ODZmN2MgbGVnYWN5LXRydW5rCis3MjI2MSBjZTk0NzIwMGI3Njg4YTkzODRkM2ZlOWM0NzE1NGEwZTdjMjQwNGI4IHJlbGVhc2UzMC1tYWludAorNzIyNjIgMThhNWFlOTZhZTVjOWEzZmRlMWRmYmY2ODBiM2I1MTkzMzE4MjE3OSByZWxlYXNlMjYtbWFpbnQKKzcyMjYzIGU0YWY5NzFiOTE4NDU2MDk4MTJmOTExNjNmOGQ0MGJmMDdhMmFiNDkgbGVnYWN5LXRydW5rCis3MjI2NCA1YWRlMGRlNzRiNWE5MTNhMGE3MThkNGIxYjJiNDUyNmJiOWFlNzU4IHJlbGVhc2UyNi1tYWludAorNzIyNjUgZDdiYmRlOTM2ZDYyOTA1YWRhNzI5NTZhOWQ5NmU3MDBhYzRmNWJmNSBweTNrCis3MjI2NiA4MzQ2ZDNjN2M0ZTIzYjg5ZThjYTc4MzIwYjVjNGFjMWJlYWE4YjFiIHJlbGVhc2UzMC1tYWludAorNzIyNjcgZTRmZjQyNzM0OTNiZDA0OGJlMGRjOWY3OWI4OTYzODNiOGQ4YTg1NiBsZWdhY3ktdHJ1bmsKKzcyMjY4IDRjZDQzN2RmYWNlODk4MzJiZThhMjEyYmU4NjUzY2QxMDBlMmNlNWIgcHkzaworNzIyNjkgNjZmNzUwMDhjM2E4NzI1MDI5MzY4MmQ4ZWIyMmY5ZDFlOWU5MmU1NSBsZWdhY3ktdHJ1bmsKKzcyMjcwIGQ4ZDY3YWE3NTUyNTIwMWQ4Yzg5YWM5NjAwZmJhNWI4NDM1M2Y2MjggcHkzaworNzIyNzEgZTY4Njg1Y2YzNjUxZDk5ODc2NmNjNDFhMWZmMDZlYmY1N2EyMTZmYSBwZXAtMDM4MworNzIyNzIgZGIyODM5MGNhNjE3MjYwNjUxZjk2ZDgzNDJhMjdiMGQwMzljMzJlYiBwZXAtMDM4MworNzIyNzMgZDZjYmFlYTk3NTY5OGViZjc5NTg0ZTZkNmE4YjU5ZTBhYjU4MTZhZCBsZWdhY3ktdHJ1bmsKKzcyMjc0IDJjZDlhZWU2ZjYyNDYwMzI4ODVmNTU0NjEyMzc0YjY5ZjAyMjY2OGYgcHkzaworNzIyNzUgYmMxZDE5NjgzNmE0ZmJhOGJjMTE2ZWRlM2UxMGE5MTI3NDg2NmJmNyByZWxlYXNlMjYtbWFpbnQKKzcyMjc2IDNjYjViN2Q1NjMwOTgxY2YyNDY3OTFiMzFmZDA1ZjRlNjhmYjAzMDkgcmVsZWFzZTMwLW1haW50Cis3MjI3NyA2OTIzMWNlZmQ4MGQzZmFmZWIyZDU0Yjg1MmZkMjNiOTdjNmFlNjZhIHJlbGVhc2UzMC1tYWludAorNzIyNzggYWQxMmQ4ZjQxNGM3MzYxYTk4NWUyZjE4MDQwMWNlOWYxZWI1NDc2ZCBsZWdhY3ktdHJ1bmsKKzcyMjc5IDMwODhkMmViZjdiZTVlYTNkMTMwZDhhZjgxMjM0N2Q2ZTQzNzZjNWIgcmVsZWFzZTI2LW1haW50Cis3MjI4MCBmZTU0ZjM5NDU5OWMyNTM1ODgxOTBkOTYxODYxMDczY2NhYjVkODYyIHB5M2sKKzcyMjgxIDczYWY5MDIwNmNiZTMyNGI5OTYzYWU1Njg4OGNjZGZkYTI5MWI3ODAgcmVsZWFzZTMwLW1haW50Cis3MjI4MiA1Y2I4NWVmZjhjMDM1YWVhYTA0MDlmM2M1OTEzNzc4MmZlMmZiOGQwIHB5M2sKKzcyMjgzIDEyZDhmZDQ5OTcyMmMyZGNlNGJiYjFiNzk0Njk5YzAxYzE3MDc1MTcgbGVnYWN5LXRydW5rCis3MjI4NCA1MzhhN2Q1ODMwNjQ1ZDBhNzYxNGI0ZjBjNmQ0YzcwOWY2OTQ4NTMyIGxlZ2FjeS10cnVuaworNzIyODUgOWI5NTkwMDA3ZTgyNDk4MWI1ZGE0OGE5MGM1ODg3MjY1YmVmNGIxZCBweTNrCis3MjI4NiAxMDAzODFjNWU3M2FiYjdmMGNiODc2OWFjNDJkNzFhM2QwYzgxYWZmIHB5M2sKKzcyMjg3IDQ3OTEyMTZiZmMxZWJkYjllODY5NTNjOTcxNTQ3NWVhNGM1ZjJkMzcgcHkzaworNzIyODggNzVkNDFmNDYwODUyMTA5MTdiYzNhNGVmMDg4YmIzYTM2NjJjNTQwOSBsZWdhY3ktdHJ1bmsKKzcyMjg5IDgyZmZkZmJjNDJlNTY5NjQ5ZGNkNGNhOWM4NzJiZjcyNjUxYjhjZDcgcHkzaworNzIyOTAgZjcyMjg5MmI2MGFlM2JlYWZkYzdmNjEwNGE4MmVlNGViN2RjMGI4NyBsZWdhY3ktdHJ1bmsKKzcyMjkxIGJkNDkxYjVhODgwODY5OGI2NTg1ZWYxZjI3NTQwYTdhNjE2ZGRjMTMgcHkzaworNzIyOTIgNWNjZWM0YjM2NjQ2ZDExN2FmYjdiZTZlMzg5NzUyODI2NDU4MjM4MyBsZWdhY3ktdHJ1bmsKKzcyMjkzIDMxMGRhYTk5ZDYwNzNkMzNmY2YwN2IxNGNkMjE3NzFlOThiYzMyNzIgcHkzaworNzIyOTQgYzJkMTA3ZTA3ODM5NzQ1MmNlODZlNWUxNDAxNGU0MmY4MzllYWMzMSBweTNrCis3MjI5NSA1Mzk5YmU3YTM5YmEzNzE3YmQ4MDFkNWM2YTQ5NzgyZDU4Yzk3OTVhIGxlZ2FjeS10cnVuaworNzIyOTYgNzU3NDNhYWVlNTA0MGMwYjNiYmQyMTZlYmZlODc3OGMyNTgyNDMzMCBweTNrCis3MjI5NyBkMzc0N2IwYTJmMzYxYWE0ZDcwYzQwZjhkYjgxOGIwYWZlNTZhYzZlIHJlbGVhc2UyNi1tYWludAorNzIyOTggM2IwOWYzMzJmMWZhM2I0MjFiMWYzZTIxN2JjNzgzZTFlNmM0NWEyYyBweTNrCis3MjI5OSBiMzMxOWMwODRkMjU3MWMzMDM4MzEwMTc1ZWQzOWNjNWNjZTk3NWFhIGxlZ2FjeS10cnVuaworNzIzMDAgZGQ5MzhhMmNjMmYwYzc0YTcwN2JmZjU5M2VmYmJhYjMzYzM1YjNhMiBweTNrCis3MjMwMSA1YmVjYzg2NTQ4MTIyMDgyYzFjOTE5M2UyYTg2ZWY4NTAyZmM1MDNiIHB5M2sKKzcyMzAyIGJiYTdlZTlkYWVlMDY0NTg5Yzk3MzE1NjgzNzdjNDFhZGM3YWJkNTYgcmVsZWFzZTI2LW1haW50Cis3MjMwMyA2MzlhNzlmYTZhMjM4YTY1MmM5NDhmMTQwMDY3MzI5MDc5MTE3MTRjIGxlZ2FjeS10cnVuaworNzIzMDQgYWViNDA1MGNkNDMxODUyNjJmYzg5ZWI3Y2NmNjllMmFiOTYxYWE5YyByZWxlYXNlMzAtbWFpbnQKKzcyMzA1IDRmY2ZjNTNmY2M3NGJkNmNlOTk1ZmNkZWM1MzkwNWQwODE4NmMyZWYgcmVsZWFzZTI2LW1haW50Cis3MjMwNiAyNDE2ZjE2NmRlNGIwMGUyYWI3YjAwYmJlZjY1MTE0OTdmNmU5MzRmIGxlZ2FjeS10cnVuaworNzIzMDcgYjFlYTVmNzMxM2ZkZTU0ZDMxZjUzODVmMWVhNjcxZDExZWZiOTkwOCBweTNrCis3MjMwOCAwYmY1YmIyZjNjMDg5ODZkYzA2MGQwYWE0ZmI3MDgzM2IxYmVhOTYxIHJlbGVhc2UzMC1tYWludAorNzIzMDkgNjY2ODJmYzE3MmU5MGU5OGU4YTE0NzRhZTE1ZjBmMWVkZmVlNzU1YSBweTNrCis3MjMxMCA3MzIxZDQ1MTBiNDFiYWJjZTNmOWMyYTQ3NDg4NjhiZDJiZTRkNDAyIHBlcC0wMzgzCis3MjMxMSA0ZGQ1YTZhOTNlNzA4OGMwM2IyYWMxNjA3ZGI5YjM1NmJiOTQ1MTY3IHBlcC0wMzgzCis3MjMxMiA2ZTEwYjcwYTQxMTAzNzYwMjk0ZDEzMDBjOWViYmUyODEwNjg1NmQ0IHBlcC0wMzgzCis3MjMxMyBhYzIwOWYxMzJiMTdiMjg0MDE0ZDRhMTBjZjk3YmE3N2RlOGI3Y2I3IHB5M2sKKzcyMzE0IDRlNTgzNGIzMjJjMTBhMmNmMDEwZjNkNDRlNGJlZDg2YzRlNTkwYjMgbGVnYWN5LXRydW5rCis3MjMxNSAyZTA0NGM5ZjRiNDA1Zjc5NjI4MDhiZTA5MzMxMTU1ZWJjZTc5ZTIwIHB5M2sKKzcyMzE2IGIwMGNlNmYwZmEzYTljZmI5MzdjNmFkYTFkYmE2OGUyYjQ2ZmYxN2EgcHkzaworNzIzMTcgMWU4MmJlZjY4ZjRkZmU4N2Q2ZWQyODkwYzdlMTEyZGE1ZWMwNWFhNiBweTNrCis3MjMxOCA1ZGZkMjI5MDYzNDExZmY2MWMzNzFkNjZhM2NkYjhiZjNlZmYxYjY0IHB5M2sKKzcyMzE5IGRkNDg5ZjQ3NTdiZTgyNjliZTk2ZWJhY2EzNmViMDMxNDVmYjdlMGUgbGVnYWN5LXRydW5rCis3MjMyMCBhZjhmODQzMjU3OTczZjE4Yjk4ODA0NDIxNWU0NzQ2ZmVkMWY3ZGFmIGxlZ2FjeS10cnVuaworNzIzMjEgYjEyYTQ0ZWVmNDBiNmM1OTI3MDZlYzNmNWI2NjM3MDkyZTc2YzkzNSBweTNrCis3MjMyMiBjNDliYzMzMDMyN2NmMjllY2U1YTEwZGVhYWMyNTJiZmMxNmM1NjE2IGxlZ2FjeS10cnVuaworNzIzMjMgNTg1NzQyODhhNWJmZWE5ZGVhYzYxMDdlMzNiMjdkNzJhNjYyZGNjYyBweTNrCis3MjMyNCA0YzYzNjcwNjM5ZWM3MGI1YWE2YjY0ZTVkYmJmYmU5YmFlY2Y0M2EzIGxlZ2FjeS10cnVuaworNzIzMjUgNThhYTBhZDc3MjUzZDc3NTRjNjhlOWE5NjEwMGYzYjc3YjFmZWU1ZSBweTNrCis3MjMyNiA1ODc4Y2E3ODRhODQ5NmU0ZDVmNGNkNWJmZmMwODgyOGEwOGY4NTRjIGxlZ2FjeS10cnVuaworNzIzMjcgMzNiYmRkM2VlYTQzZDlmY2VjZTVlZjRjN2RmN2UzOWNmN2U5MDRlYyBweTNrCis3MjMyOCA5Zjg1MzJhMGYxYWJjYzQ2MWI2MDAwOWZiMTU1MWZkN2QyODJlZjgxIGxlZ2FjeS10cnVuaworNzIzMjkgZWM1ZjAzZDFlODE5ODkzMTNmMGFjMTc3YzJmYmNhZDEyNDRmYjViOCBweTNrCis3MjMzMCBmNmJmZmI5ZTgzNGY5OWU2MDgwNjY4ZDE5ZTcwMTU5OGUwNDkxYTJkIHB5M2sKKzcyMzMxIDE2N2NkMzc4YjViZDhiMzdlNjc2NmIzZGE1ZGMwZDgyOWFjMzg2M2EgcHkzaworNzIzMzIgMmNjMTE2OTNhMTgwZWQ3NDE3ODQzMDlkZGVhNzY0YTQ5NDRjOWUzNSByZWxlYXNlMzAtbWFpbnQKKzcyMzMzIGM2Mzc2ZDNmYTk2ODc4MTdiMmE0MWJmNTY5ZWRjMDU0OWNlNmJhOTIgcHkzaworNzIzMzQgZDE3Y2M3MmZmZTgwNzY3MWQ0OTYwZDUxYmFlMDUyMWZjZGEwYzhkMyByZWxlYXNlMzAtbWFpbnQKKzcyMzM1IDlmNmI4Y2UyMDIzZjBjMjQ0ZmIxYTEyMWZkZDU3NDNmN2ExMGM0ZjggbGVnYWN5LXRydW5rCis3MjMzNiAyMTViN2I2NmU2MmRmMjg1ZTE1ZDkxN2FiMmRmMjk4YzRiZDM3N2Q2IHB5M2sKKzcyMzM3IDRmM2VkYjZhZjhjMWJiZDNiMzg1NTI1YzZkMDBjZDUzODQ3NWQ0Y2EgcmVsZWFzZTI2LW1haW50Cis3MjMzOCA5NzYwMzUzNjYwNjU3YWFhMjFkMmNkMzdjYzliMWYwNTAwYTFiNjgyIHJlbGVhc2UzMC1tYWludAorNzIzMzkgY2E0NTBiMjgyN2VmMzgwOWIzNDk3ZmVhYzE4YzAyZmFkNDhiZjQzZSBweTNrCis3MjM0MCBkODYwMWU4YjNhYmU5MWViYTA3ZDMyNWYxNzM0Nzc0N2NkMjk5ZDk1IHB5M2sKKzcyMzQxIGE3Yzk5ZTM0ZTIzOWUyMTcyYTY3YzgwNzUyNzcxZmJkNzBjOTZmZWEgcHkzaworNzIzNDIgOGU4Yjk1OTA5MTdhZDk0YzViODJjNjM5NTczOGExNDcwN2ExMzJlZiByZWxlYXNlMzAtbWFpbnQKKzcyMzQzIDdlYTc4NzBkZDk2NmQyMjE2ZDUxNDRkNzNiYWQ1MTVkYzAzZjQwOWIgbGVnYWN5LXRydW5rCis3MjM0NCBlYTJhOTAwODJjODM3NTI4MzkyNTExMGRkOWI5ZmNmMTQ1NjNmZjUxIGxlZ2FjeS10cnVuaworNzIzNDUgNmQ2NGNkNjlmMzg0NGE1NWVkYjczNGIzYmFjNWJlZTBjZmFjY2Y3ZiByZWxlYXNlMjYtbWFpbnQKKzcyMzQ2IDk4NzQyMWQzZjhhZTQwYjZkOTA1ZmNjYjJmNzdmYzVmZTU1ZDk2NzQgcHkzaworNzIzNDcgYjAzNzU1NjdmYWU4MGE0NmNhYzhjMTI1ZmQ1ODk2YzM0MjI4N2Y0NSByZWxlYXNlMzAtbWFpbnQKKzcyMzQ4IDFkOGYyNGQ0MGMyYzY4ZmI5YjNlYzQ0MWNiMTc1MDQ2YzljODAyMWEgbGVnYWN5LXRydW5rCis3MjM0OSA0ZDVmMDY2NTc1ZWQ1MGQ5MDE5NjFhMzMxM2EzOGIwZjlkN2FiMDA5IHJlbGVhc2UyNi1tYWludAorNzIzNTAgYjk3N2FmMTljNmYwMTM3ZmU0N2E3NTYxYTNiYzIxMWNhYzhmOGRlNyBweTNrCis3MjM1MSBiYmUyYWE0MzE2OTIzMjM2MDVmZGUxYWJlNGMyMzQ5NzVlZDNjY2U3IHB5M2sKKzcyMzUyIDU4MWI1NjRkOGZjM2IyZmU2N2NjZDNhZTBjMjU1MjIwNDA4MWVjODAgbGVnYWN5LXRydW5rCis3MjM1MyBhODVlNjc1NmRlZDJjZmU3ZTJiMThjZGRjZDQ5OGM5YzE2ZDZlZTY4IHJlbGVhc2UyNi1tYWludAorNzIzNTQgZTAxNzlmMDhkMzRmMjIwMzE0M2U5NDI5ZTZmYmFjNTJjNjZiNjc4ZCBweTNrCis3MjM1NSBkM2ZmYjM3MDJjM2FmNjNmYTUwZWEwNmZhNTMyNjQyMmEzZWM2YmNkIHJlbGVhc2UzMC1tYWludAorNzIzNTcgOGY3Y2Y1Y2IyMWJiNTgzYWI0ZTVhZWRiMmY0MjMwNGIwZWI0ZmM0MiBsZWdhY3ktdHJ1bmsKKzcyMzU4IDAyNmQzOTBlZWNjMTk2YWQwNTE0Y2MxODcxMGY1ODc1MmQwMmU5YjkgcHkzaworNzIzNTkgMTVkM2JkZTcwZDg3YjAwMGVjY2U5NDk3YzM1ODlkNGVjZTczN2U0NyBweTNrCis3MjM2MCBmMGZiNGRkZmYxYWJkYWFhMzM1NmZkNmQzM2FjYTM5MDA3M2U5ZGVhIHJlbGVhc2UzMC1tYWludAorNzIzNjEgYWU2ODUwODY5ZDUyZjRmNmVjNzgyYWIzNGNjODA4ZjVlNjgyMjZlYSBsZWdhY3ktdHJ1bmsKKzcyMzYyIDI1OTJjNmE5ZGRkNmM0NGVjZDk1OWVmZDZjMjc5NTJlZWU5M2Q2NTYgcHkzaworNzIzNjMgOTExZGY4MmJjMjVkZmI2MmZhZWY2ZWExYjlkMGNmNzA0MTdiYjk3YyBweTNrCis3MjM2NCA1YjkwMjFjMTk1MTJiYjJlM2EzYmQwMTMyNTJkMjhmOTI4ZjgzNTMzIHB5M2sKKzcyMzY1IDU0ZGM1Nzc3YmRmYmZlNjM2OWQ4M2Y3Mjc4YjI4NDZjMzhhODg2YjkgcHkzaworNzIzNjYgN2JhZjRjYzEzYmNmZjY4YmI1YjRmYjk4ODJkMmRmYmVkZjc1ZGQ3OSBweTNrCis3MjM2NyAzYjVjNDAwYzlkY2Q0NTEwMzVkODdjNDIzMDY4NmJiYmZkZTVkZDY1IGxlZ2FjeS10cnVuaworNzIzNjggZmIxMGI4OGFmZDQwMWU4MTIxMmE1Y2FjZTRiMTY4ZTE4NjcxM2I3MyBsZWdhY3ktdHJ1bmsKKzcyMzY5IDViNGIwOWU4ZjMyYmE5Y2JlNWUxYWI3N2I3NzQ1ODE4Njc2Mjc0NDQgcHkzaworNzIzNzAgYTIzMDNhNzRhNzYxMGM4ZTJjNmE2M2RkMjE5ZWViYjg2YmYyYTJmZCBweTNrCis3MjM3MSBiNjY2ZTcyZjYwMmZhODUyOGQ4MzAwYWRiNGEwODE1OTY3ZDM5YWZkIHB5M2sKKzcyMzcyIDk4OTU0ODNlOTYwMTNhNTJjZmYyZDgxOTdmYzU0ZTg4Njk3YTlhZDggcHkzaworNzIzNzMgOWM0ZDkyOWY0MDU5OTQxNzE5MWMzZjQ1YzVjMzNiYmJlNmM4ZDdlMCBweTNrCis3MjM3NCA0YjFhOWFmZmUzNGNkNGY5MjEyZGU3YjUyM2FkN2EwYTkzODgyMmJlIHB5M2sKKzcyMzc1IGViM2FmYmQ2YWFhOTZlZjY3NjAyYmJjMDBlOTYxNmVlZGU0ODAwMDggbGVnYWN5LXRydW5rCis3MjM3NiA0ZjE3Mzg0YWU4Y2JmZTQ2OGMwMTEyZWQ3ZTgyNGE5ZjZmODlhYzUxIHB5M2sKKzcyMzc3IDBmNmE3ODVjZjI4NmUzZDFkODNhNWU3YzQyNGYyNzlhZmIxZTY4ODIgbGVnYWN5LXRydW5rCis3MjM3OCA1NTZkMTEzMTRhZDVjZjkxMzgyYzRmZjkyYWIxZGJkNWNkYmE2MDBmIHJlbGVhc2UyNi1tYWludAorNzIzNzkgNTdlOWIxYjA4MzhlNTJkZTk0MGNkMDQ3MTM0ZWE4NDQ3MGM1YmQyZCBweTNrCis3MjM4MCBhODE1YWNjZDg5ZTQwYjM0MWE1ZDYwZjVkMDIwMTkzYWE4MWI0Yzg0IHJlbGVhc2UzMC1tYWludAorNzIzODEgODU3NzVkMTAwYTMyYzU5ZjJjYmQyYTEyY2VmMzZjMGI0MTBlNGZlNyByZWxlYXNlMjYtbWFpbnQKKzcyMzgyIGU2MjA3MDFhM2VjODY0MGFmYzZhNDMyMzBhNTU4MWViMTNjMjQ0MzcgbGVnYWN5LXRydW5rCis3MjM4MyBhZWM2MmU5Y2M2ZThlZWZhNmExZTFiY2NkYjMzNDZjN2ZhNWFjMGQyIHJlbGVhc2UyNi1tYWludAorNzIzODUgYmNiYjk0ZDY5MmVmZDcxMjk2MmQ0ZWE5YmMyMjQ1YTJlZDJjYzcwOCBweTNrCis3MjM4NyAyOTAyNWI1MzAwNDY2ODUwMGQwODliZGE1OWY4ODkyYzY0NDQ2YjA4IHB5M2sKKzcyMzg4IGNhYzJhNWY0YjlmYWUxMjg0Yjk5Y2ZkZTQwOWVhODdjZDc5ZmYzZGYgbGVnYWN5LXRydW5rCis3MjM4OSBjNmVmZTU4ZWVmNjY1N2VlNGI5ZjI4OTk0OWVmZTFjNjZjYmQ4YmQ4IHJlbGVhc2UyNi1tYWludAorNzIzOTAgZjFhM2RlOWRmNDI1ZGI0YzNmMWI2NzkxMzEwNDg0N2NhOWI4ZDdjMyBweTNrCis3MjM5MSBmYjdkMTIxOTZjMzVjMmI1ZjVkYWFiY2NkNDI5Y2VlY2U5NTFjNjcyIHJlbGVhc2UzMC1tYWludAorNzIzOTIgMzU1OTdkM2RiZDA4MjAyY2M4ODcxZDFlYzEzZDE4MDQ3YmFlNDU4MCBsZWdhY3ktdHJ1bmsKKzcyMzkzIDAzODhhNDI3MjU5OGUzODY0ZTk1NTllOTExYjZhYWYwMDcwMzAxZGEgcmVsZWFzZTI2LW1haW50Cis3MjM5NCAwYzUyNmQxODk1MjcyYjlhNTI1N2Y4MmExYzE0Yjg3MzcyMTFmNTNjIHB5M2sKKzcyMzk1IGFkYzhlYzdmN2QyMzAxOWYwMjlhNzc1ZjIxNDI2YjUzYmUwZWVlYmQgcmVsZWFzZTMwLW1haW50Cis3MjM5NiBkZjNmNWRiNTI4ZjAwYjM3MWY3MTYxYTViZGMwZDZmYWM4MTkzZjhkIHB5M2sKKzcyMzk3IDdjYjZkZjAwNjk5ZjRiMzRkNzE5YmY2YzhmY2I0MjNmZDc4ODQ0MjkgcHkzaworNzIzOTggMDRiZGM5NDQ3MThhZjllZWZmMTc5OGJkZDVkMTY3NGVjYzlhMTQzYyBweTNrCis3MjM5OSA5YzY1NDA0MDQwMGRlZmE0YzI5YmJlNjNlMDQ3MGY1MzdjZTFkYzRjIGxlZ2FjeS10cnVuaworNzI0MDAgMGI5ZDdjY2VkOTM3MWQ3ZmI0Yzg1M2Y1ZGEzMzJmNjRiODExMGEyNSBweTNrCis3MjQwMSAwMzRlMGZjZDY5NGU4ODFhNThhZTRmMWNhYzk5ZWRmYTc0MDExYjY4IHJlbGVhc2UyNi1tYWludAorNzI0MDIgZWNlN2U3YTgwMDQzYzE1ODI1MTE0YjQzYTg4MzY0M2Y3YzBmYTcxNCByZWxlYXNlMzAtbWFpbnQKKzcyNDAzIGM1MmU1NTVjOTE4ZDliYmM0ZmE2MDJhZjk1NzM3YTMwYjE5NjA5NzYgcmVsZWFzZTMwLW1haW50Cis3MjQwNCA3ZGNhMjUwMzQzZWE0MWM5NjM5OGViNjhhZWU0ZmNiZDVhZDhmN2Y2IGxlZ2FjeS10cnVuaworNzI0MDUgNGE4NDcwMDY2NGQ5MjYyMWFmZThiNDFkOGEzMWZmOGUwNTZhMmYzOSByZWxlYXNlMjYtbWFpbnQKKzcyNDA2IDQ2MzQyZmZhMjk2MzUzZjM1MDdlZTc5NDAxZjdjMTA3ODkyNjRlMmYgbGVnYWN5LXRydW5rCis3MjQwNyBjMGFkMjNhZTJhM2UxY2NlNDU5MjAwNmQ5YTBiNjZhODZjOWFlMzc3IHJlbGVhc2UyNi1tYWludAorNzI0MDggNjNiMjNiZDM5MDRkZTcxNjljNjJjZjBlYmEzNzc5MzU3NWU4OGY2OSBweTNrCis3MjQwOSBjYTU1N2Y4NTBlZWU2NGNkM2YyZmIxMTBhMDhiNTg0Yzg2NGEyOGZjIHJlbGVhc2UzMC1tYWludAorNzI0MTAgN2E2N2I2NDdiOWU3Nzc3OWVjZWIyMGEzNDgxOTIyZTllMDk4M2FkYyBweTNrCis3MjQxMiBiNjMwMjA3OTdmOTY3OGFkYWY0ZDJjM2UyNjU3NGE5ZWVmMmVmMDI4IHB5M2sKKzcyNDE0IGE2Mjk5MjQxZmJkOWJjYzYwNTk3ZDU0NmMwNmQ0NDNmYzY2MjcyZTYgcHkzaworNzI0MTUgM2FhYWJiMzEwMmU4ZTc1OWE4OTk3MTk4MTNlZGE1OTkzNjk4MTY5NSBsZWdhY3ktdHJ1bmsKKzcyNDE2IDM3NmZlMTU4NjI3NjAwMDdiMDc0Y2Q0ZWMzY2Y2ZTdlNTVkMTQzOGQgcmVsZWFzZTI2LW1haW50Cis3MjQxNyAyMDU4NjkwYTUzZTEyY2UyZTJjNzEwMzA1YzNiYjQwZWFhYmIzMTg5IHB5M2sKKzcyNDE4IDY1ZDhkYjViZWIyMDEyMjE5Y2JmZjE3MzllNDQ3MTdkZWM5MTQ0YjYgbGVnYWN5LXRydW5rCis3MjQxOSAyYTBmYWNhM2RlZWU1OTgzYTUwZGUxNDExMjZmZDMzM2MxOWJhZTEyIGxlZ2FjeS10cnVuaworNzI0MjEgNzcxNDI5ODVjNjQxMGE1MzUwNGRmNzc0MjFiNjVjYWQxZjYwMTFlMCBweTNrCis3MjQyMiBhN2NhZjI5ZDE0MDYzM2M0NTNjYTc4Mjc4MmNmOTgzMDcyYTU0NWZmIGxlZ2FjeS10cnVuaworNzI0MjMgZmFjNTFhMDIyYmY1MDkzMDQwM2VmOWE2ZjFmYWNiMmM5ODRiMDg0MCBweTNrCis3MjQyNSA4NWI5ZGY1MjVlMTA3MGY2MzhhZTU0MGQ4OWM4MTVlMDVkMmEwZTk3IGxlZ2FjeS10cnVuaworNzI0MjYgMjM4Y2FmY2MyNTE1ZjVkYjAzZDBhNTE2OGViZTBlNzZmYWY0MWE2NyBsZWdhY3ktdHJ1bmsKKzcyNDI3IDYyYmU1YWM5ODlmNGY4NmMwNGIyNDg5ZmI5NGE3OWJmYzY1M2Y4NTYgcHkzaworNzI0MjggYTgxOTBlODgxZmRmZjJhZjYzY2UyM2NjOTA5NTA0MDEyNzU2MDU1NCByZWxlYXNlMzAtbWFpbnQKKzcyNDI5IDdhM2JkMTc5YjE4MGRjYzE4OTVkMjg5N2UyYWUxM2I5ZjE0NDUyNDEgcmVsZWFzZTI2LW1haW50Cis3MjQzNCA2YzhiMzgwZGI3MjdmYzIyMWMyMjY4N2UzYmJkMWRmMzQ4YTc2NGNjIGxlZ2FjeS10cnVuaworNzI0MzUgZTdmZTIxN2NlMDE1N2RkODE0NGVhYWY3ZjYzMzJlZDA3MDI1MTU3NSBweTNrCis3MjQzNiBmODc1ODM1M2M2YzIwMmI2YzU2YjZlZTdjMDRkMzVkODIzYTQwZmFiIHJlbGVhc2UyNi1tYWludAorNzI0MzcgNTcwZDNlNThlZWE5NThiMjFhMDNmMzg4NGMyN2U3NDJhMGFhYTAyOSByZWxlYXNlMzAtbWFpbnQKKzcyNDM4IDBlZjI0MmYyN2Q3Njk5NzdhMjZjZjEyN2Y4OTFmMTNlODFlYjI0NmQgcHkzaworNzI0MzkgZDc4MDM3YzE2MjI1MDA3MjhmMTRjNGM5ZjQ2NDRiYzEwNjhiOTM4OSBsZWdhY3ktdHJ1bmsKKzcyNDQwIDU1MDJmZjJmYmRkNjNkMjdmZWE2OTJhZGIwMDJkMTI2ZWQ5NWZmM2YgcmVsZWFzZTI2LW1haW50Cis3MjQ0MSBjNjkzMDAzYjE1ZTIxZDA0NTBmNzZlMzMxMzMwZWUyYzA0N2RhNjFmIHB5M2sKKzcyNDQyIGFhYzQwNTVkMDY2YTAzZTM5NGZkMzE1Mjc0ZmMyMmIxNzhkNDhmZjQgcmVsZWFzZTMwLW1haW50Cis3MjQ0MyA0YzNhODRlNTRkMDgyNjgxNmE5MDNlYjMzN2NiMzAwNzkzZDFkOGQ4IGxlZ2FjeS10cnVuaworNzI0NDQgMGQ1ZTJhOTI4NmEyYTRiODUzZWNlMzUxMzNiMmMzM2IzNzQ1MTVhNiBweTNrCis3MjQ0NSA5MTQzZDIwZDhiMjYzOWQzODZjMWZmNjg4NjhhMTI2NjM1OTA1NjI0IGxlZ2FjeS10cnVuaworNzI0NDYgMTk4YjY4YWUyYzJkZjUzNzNhMDc3ZGYyZWEwNmFhNzAxYjIzOGI2ZCBweTNrCis3MjQ0NyBmNWY1MDdiNTVkNDY1Nzk1MTVlNGU1MDVjY2RjYzUzMjJhZmQ2NzNkIHJlbGVhc2UzMC1tYWludAorNzI0NDggOGYzZGE3MTM0Y2E1ZjA3YTM2NWNiMDJlNjVmODczM2I2MTZkYmQ5YiByZWxlYXNlMjYtbWFpbnQKKzcyNDQ5IGU1NjcxMmUxODZmOWRmOGM1YjYxZWRiMDRjNmMwNDdhMWFkZmMxODggcmVsZWFzZTI2LW1haW50Cis3MjQ1MCAyZGYyZDFmMDlkNTg1ZDcyZjQyZGNmYjE2ZGE4Mzg1OWZhMTVmM2MzIHB5M2sKKzcyNDUxIDZhNzE1NzI3ZjE5Zjc1NWMzYjQ1Mzg4NjAwODhjOWFjN2ZhYjBjMGUgbGVnYWN5LXRydW5rCis3MjQ1MiA0N2IzZmVlYTRlMWE1MWMyMDE5ZDk2ZjlhMmIyNTUyMTA3MWFkNTI3IHJlbGVhc2UyNi1tYWludAorNzI0NTMgYzE0MmU0NTM4OTQxZTYzZGQwYjI0N2JjOGZjMzdhYTYwZjk3OGY3OSByZWxlYXNlMzAtbWFpbnQKKzcyNDU0IDExYWQ2NTQ1ODA5YWM3YmZjNTE5MWFmYzdjOTU0NTE3YWQ0NGVmNjYgbGVnYWN5LXRydW5rCis3MjQ1NSBiM2IxNTU1ODNlMDU1ZDM5ODE3ZGRiODhmZDc5NTMwNTI1ODg0N2RmIHB5M2sKKzcyNDU2IDE3Zjc3NzRmNzRkZGViNmI0NDBiZTE0Mzk5NWIwNWJjZTBkYzg5YmYgcmVsZWFzZTI2LW1haW50Cis3MjQ1NyAxY2QxYjIxNDUyZDM5NTI2Njg1OWY2YzVlZGVjN2Q2NmE4ZDIyNjFiIHJlbGVhc2UzMC1tYWludAorNzI0NTggYTAxNWEyOTg1NDNkZGViMThjMjdlODczNTZkNDM3YmYwYTJlZTZiMCBsZWdhY3ktdHJ1bmsKKzcyNDU5IDA0NmJkMmE0MTMyMmZhZWFkYTdkOGZjN2NjOWRmZGQzYmZiYjM4ZDMgcHkzaworNzI0NjAgYTM2ZmEyY2U2MWIxZjNjYjY4NDZmNTcyZjU0NzllM2Y1YTlmMDk0MCByZWxlYXNlMjYtbWFpbnQKKzcyNDYxIDFlY2RjYTExZWI5ZWMyODY0MDM2MzQ0Yzg1YTliNTY2ZmI4ZmVjMzkgbGVnYWN5LXRydW5rCis3MjQ2MiAyOTkzZjA0OWUyYzk1MzMzZTZkNzI5MjIyNDYzNjBlNzQyNzIwN2YyIHB5M2sKKzcyNDYzIDU0MjBkYWUzNTVmNzNjNjM1MDFjZjlhNzI2NWNlYTc2ZGI4MWQxYmUgcHkzaworNzI0NjQgMzc0OTdhNzc5M2IyZmY3M2IwODFhYzYwNmM5ZmRiMTM1MjA5MWRmNiBsZWdhY3ktdHJ1bmsKKzcyNDY1IGYxZmY4N2I5YjQzNzNiMmI0YzhjZDQwYTgyMjBmM2QyNzRmZWJiYjcgcHkzaworNzI0NjYgMjM4NTAyNDYwNzk1YmM2MGZlNzk3MzRjMDFhNTEzMzI4ZDBhMjY5ZCBweTNrCis3MjQ2NyA2NmVjYzg5NmI3ZTczYTA1NGIxNjYzYThhZjE5MmFkNmYzMDJjOWU0IGxlZ2FjeS10cnVuaworNzI0NjggOWM3YmNiN2U3NDhjMTYyNDdkZTQ5NGU3MjFiYTQyZTFlNzkzZTcyZiBsZWdhY3ktdHJ1bmsKKzcyNDY5IGE2ZTZhNTdjY2NjMjlhNGU1NWU5MzkyNGRmZjg0NDM4MGU5YWMyYzkgbGVnYWN5LXRydW5rCis3MjQ3MCA1MjgwZjc1NWI0OGExNGI0MWEyODRhNjczYTFiN2ZkNzA4NmNlMzZiIHB5M2sKKzcyNDcxIDY5NGVlMjBjOGM3NDNiZWI2OWFhMTcxNGU1YmY2MzFkOGRmOGJkYzEgcHkzaworNzI0NzIgYmE0ZTZhM2FmNTY0ZWQ3MGZlYmU4N2M5Zjc2NTNiNWVjOTE2Y2NjZCByZWxlYXNlMzAtbWFpbnQKKzcyNDczIDVlYTU0NjM1NzIyNmRkYWRmNDE1ZGUzNWFjZDI3ZmQ2M2M0NWU5MmEgcmVsZWFzZTMwLW1haW50Cis3MjQ3NCAxNzEyNTIzZjkzNmM1MGNlNTBjYTdiZDcyNzhlYzNjN2JkNjVhZmIwIGxlZ2FjeS10cnVuaworNzI0NzUgNWYyMTU3NDc5NzQ5NWQ1NjA2YmE1ODkwZjMwMzJkMjM3MmQ0MDViZCBweTNrCis3MjQ3NiBkNGVmYzczMzg3MDZiYzRiYWU5NzU0NjdjNWRiMjI5NjQxMDcyMzAzIGxlZ2FjeS10cnVuaworNzI0NzcgN2E5ZTA4MWVjZTRjM2RhMWM0NjBhNDc4OGYyY2U4OTk2OGQ4N2FkOSBweTNrCis3MjQ3OCBjYjdiZTYzYjkxZDg1ZWE4YWVmZWUxNjVlOTdmZGZlNGU4NzNjNmE4IHB5M2sKKzcyNDc5IDBkYWU3ZmVmZWQ0NDA1Yzg0MmU0ZDFkMzJlZGY0MmMxNTNiNzQ2MjUgbGVnYWN5LXRydW5rCis3MjQ4MCA4Yjk4OTdkMTVjZmM4MGNlZTZlODAxNjBmZDU0YTJkM2VkYTU4N2ExIHB5M2sKKzcyNDgxIDIwODY5ZDk3OGI4YjQzMDlhOTJiMjdiYTc5YjY3M2Y4ZDg2YjExZTQgcmVsZWFzZTI2LW1haW50Cis3MjQ4MiBiODY3Y2UzNzVlOThjZDBkMjMzZDY3NDVkNjgxZmYyOTJkYWRkNWY4IHB5M2sKKzcyNDgzIGY0OTUwMDk2ZTdkN2I0Nzc4ODk2NDBiYmZhYmIwZDQ0YmM5ZTA2M2QgcmVsZWFzZTMwLW1haW50Cis3MjQ4NCAwNjdhNjM5ZDVmNzY1OTIyYjNjNGFmOGQ0Mjc4ZjFmMzAwMjFlN2EwIHB5M2sKKzcyNDg1IDA3MjJmMjA0ZDI2ZTA0NWJlZWZlZGI5NjBkZTBiOWU1NTc3NDVmNWYgcHkzaworNzI0ODYgZjkxN2FhZTc0MWQ1ZTYxZmZmZGUxZTk2ZGIyMjlhYTRhYjFiOTI3ZCByZWxlYXNlMzAtbWFpbnQKKzcyNDg3IGExNzEwNDhkYWY3NmY0MjU3NzcwODBhM2I2OWUyMmZmZDBiMDY1NjUgbGVnYWN5LXRydW5rCis3MjQ4OCA5ZWY2ODNkNDFjOWIyMjI5N2JjYzRiMDVjOTY1ZDZmYWJjM2U3MzJiIGxlZ2FjeS10cnVuaworNzI0ODkgNTEwZmZjNWRiMjMyNTg5Yzc2OTNhNGVhYzg4MjFkMzVmY2ZkYmNjZiBsZWdhY3ktdHJ1bmsKKzcyNDkwIDQ0NmExNWExYmVlOGZkMDY5NDQwOGNmYzQ0NmMxMGE2N2Q1MGQwMWYgcHkzaworNzI0OTQgMTE5ZTQzMjM0MDBkMDFjODIyZWIxZTBjNzVmYTVlZjBlNmJjYjYxNSBsZWdhY3ktdHJ1bmsKKzcyNDk1IDczOTg2YTljYTFkNjNkZmI1OTU0ZjY5ODllOGZjZTY2YzViMGUzOGYgbGVnYWN5LXRydW5rCis3MjQ5NiAxZDc5NDhjYjU0MzAwMGFmM2QxZmYxNDYwNjM3YWE2MzZiNTQzYTg4IHB5M2sKKzcyNDk3IGNjZmRhMTRkMTU1NDgxZjRlNDg3MGVlYjJhZTc1ZmY0NzY2MjMwZDggbGVnYWN5LXRydW5rCis3MjQ5OCBkNjY2MDNkZDNiMmQ3MThhYmUxZjc2Njc3MzdjZTBiNjViODZhMzIxIHJlbGVhc2UyNi1tYWludAorNzI1MDAgZjlkOWVlYzZiZTY3MDE3ODQ3ZmQ3ZDdjMjc3ZmM0ZDM4YmFmNzIwZCBsZWdhY3ktdHJ1bmsKKzcyNTAxIDlmNzEzZjYwNWY2MGVmZDVmNDRiNWJjNWYxZDM3MDk4YzYyMDk2Y2UgcmVsZWFzZTI2LW1haW50Cis3MjUwMiAzNmZjMDc5ODQxN2YxNGU2ZDZjM2M0MzU0NTcxN2E5ODVkNDk5MzViIHB5M2sKKzcyNTAzIDk5ZGQyOWUyNGJkZTNkNGVlNWQwNjlmMGRjOTY2NGNhYzc0N2MzYzUgcmVsZWFzZTMwLW1haW50Cis3MjUwNCA5NjJiNGZmNzZjY2EyMTM0NTc1MzNjOGFkNzYxNTRiYmFjMDU2YjRkIHB5M2sKKzcyNTA1IDkyMDdkNDI5MjAzYTFjNWE5NjUyZDgzOTk4OWE1NDQwZmI2ZThjNmUgcmVsZWFzZTMwLW1haW50Cis3MjUwNiAwNzJhOGE3Y2U5NzNjZGRlNDY0ZTg5NTBmNDE0ZGI1MzIwNWQ4MjUzIGxlZ2FjeS10cnVuaworNzI1MDcgZWI2ZWI0OWRiYWU5ZWM3ZGNmMjIxZTQ2YjdlODI3ZTBkNmQ4YzJjNSByZWxlYXNlMjYtbWFpbnQKKzcyNTA4IGY5MGIzZWVjN2MzMjc4YzVmOTBkYWFmMzg4NjMyYzE1MmIwYmMxYzYgbGVnYWN5LXRydW5rCis3MjUwOSA1ZGQzYjM4YTA5Nzc4YTY2NzNjYmZjNmUwOGY3Yjg2ZTUxNGIyYzFiIGxlZ2FjeS10cnVuaworNzI1MTAgYjc5MjBlMTgzNDIyOGY1ZWY3ODRiYmIyYTZmY2QzMjQyYTJlMWI5NSBsZWdhY3ktdHJ1bmsKKzcyNTExIGFmZDYyZWIxNjkyZWYxYWNiYWJlYjFjOWEwNTlmMWNkNjMwYzkxOGEgcHkzaworNzI1MTIgMzBlZGQ3ZjYxMDFiZDlhN2Y2ZGE5M2YyYmFkMDg3MjM5OGYzYTc5NyBsZWdhY3ktdHJ1bmsKKzcyNTEzIDMyN2UyM2E2YTYxMDIwYWUwZTFhZjY4NWNlODc3MzU3YmJkN2M2NDEgcHkzaworNzI1MTQgMjYxZjU5NDAxNGM2MjI1YTNlOTVjNjUxNTcwYzY2ZWI2OGZhMTY0YSBweTNrCis3MjUxNSAxYjE1YTU3ZTFmMDJmNGJiZTAxMzVhMjVhOGJkZTIxMTVmYTkxZTIyIHB5M2sKKzcyNTE2IGQyYjE3NjE2MWFiZjBiMzY2Y2VmYzZlMzc2ZjVmNDIyNDJkODhjNGEgbGVnYWN5LXRydW5rCis3MjUxNyA3MmE1MDM5NGMyZGRlODM5YjczNmNjMDk0ZjBkZWQ1MjQxZmJjOTZhIGxlZ2FjeS10cnVuaworNzI1MTggYWE0MWM4Yzk2MDU1MDA2ZjA3M2ZiZmI3OTUxOWFlOTgwOWVhZDRhNCBsZWdhY3ktdHJ1bmsKKzcyNTE5IDJiNDA2NTM4ODY2ZDkwOTE3NmRmMmU5OTYwNmFmZjQ5ODBkMDgxZTMgcHkzaworNzI1MjAgMjliNTE4ZjI5NmRlMDNlOGU0NzI3OGM5NDY0MjU0MjI5Zjg0YTFhOCBweTNrCis3MjUyMSAwNTZhYTc2OWRhODkxYTEwZjJlNzY0NWRmZDMwMDI2NjkyN2I2NjMwIHB5M2sKKzcyNTIyIDU3MDJkMmRhZDBmOWVjOGVlMGU3NWJlMGQyNDc0YTIzODRkNmFiMGIgcHkzaworNzI1MjQgMTMxMTc3MjhkMDg2ZGE0MjU5ZDQ1ZjM5MTY0ZDk4MzU0NmFjZGJjZCBweTNrCis3MjUyNSBhN2M1M2ZhZDEzYmMzNmQyMjAyY2I2MTEyYzAwYmYzY2I4OTM4Y2VjIGxlZ2FjeS10cnVuaworNzI1MjYgM2U4NGQ2MDEyNmI3ZTAyOWMwODJkMDkxZDhjYzQ5Nzc0YzhkNzk5NyBsZWdhY3ktdHJ1bmsKKzcyNTI4IGZiY2RhZTNlMGNhMWJlYzEwZjRkZWRkOTliMzUyYzRiM2JjYmVmZjggcHkzaworNzI1MjkgN2MyOWJmYmZkMzUyNDRkMDRjNDM5NDU4NTE1MWMwMTk3ODM3NDhjMSBweTNrCis3MjUzMCA0MWMwOWUxNDJiZDAwNmUyMDlmZmYxNDQ5MGI1MTNhMTc3ZWZmOTBiIHB5M2sKKzcyNTMxIGU5MWE3N2E0ODJlYmU0ZTFkYTk1ZTVkZDU0ZDlkZTk4NGM3OTIwYWQgbGVnYWN5LXRydW5rCis3MjUzMiAzNWU5ODAzYTJmNGU0NWU0NGRlOThhNWYzOTcwMmI3ZWNlYjM0MDIyIHJlbGVhc2UyNi1tYWludAorNzI1MzMgMDUwNzQyYmI2MGQ1YjE3Mzc0YTE5ZDVhYWRkMmNhYzAxMmQzMWEwNyBweTNrCis3MjUzNCA5ZTY3YzJmOTk5YzljY2M2M2Q3NzE0ZTY3MjBmYjViZTcxNTNiMzdjIHJlbGVhc2UzMC1tYWludAorNzI1MzUgYzYwY2RhMzQxOGI1NGY2NTA4Y2FmMjE3Y2JhMzZhNTg1NTU2NmU4ZSBsZWdhY3ktdHJ1bmsKKzcyNTM2IDhhMDQ3NzdiNTljYmQwYWU4NTNiMWY2ZDA2MmNmMzY5YmJkN2UyMGMgcmVsZWFzZTI2LW1haW50Cis3MjUzNyA1MjI0YTI1OGQ1YmIwNGUyMDc5YjMzMDNiMWQ1MmQ0ZmMzZWVmNDYzIHB5M2sKKzcyNTM4IDlhNmY1ZTA1MzFhNjMxODYzMDRkMmEyZmM2OTFiMzc1ZjMzZTlmYjcgcmVsZWFzZTMwLW1haW50Cis3MjUzOSAxYmVjNjRiOGRkMTc2YWE5NTM2ZmNmNTFjYTNmYTY1NWJmMmFhOWVhIGxlZ2FjeS10cnVuaworNzI1NDAgYWM0ODk0NjkzNDExZDQxN2VlYTJlNTM2ZGNjYjZjNzg1MWJjMGYzMSByZWxlYXNlMjYtbWFpbnQKKzcyNTQxIDg4OGRhYTAwM2ZjM2NlMzU4YmZmN2QyZjZlOGU1NjE3Nzg1NTU5NTQgcHkzaworNzI1NDIgODZhM2M5YTljNmRlNDFhYWI3YjgxZGRhZjg0NmQ2OWQzNDg3MDc5OCByZWxlYXNlMzAtbWFpbnQKKzcyNTQzIDE3YzUzZmEzNzg5MDE2NzEwZGNhMWRjMjIzNzJjZDJjZTAwODkwYzIgbGVnYWN5LXRydW5rCis3MjU0NCA4ODAzYWUwZGYzZjNhNTU2ZTQyOTdmNTE2NmMxYTY3NmQ3NDI0ODQyIHJlbGVhc2UyNi1tYWludAorNzI1NDUgMjQxZGFhMjU5YWY5NmMzZTkyMTc3NjZkMTJmN2QyOGQ1N2IyYjM1ZSBweTNrCis3MjU0NiAyODFkMmUyM2JkYjJkM2ZjMjU5NzFmZjkwNzU0OGYwNGY3YzRlYWRmIHJlbGVhc2UzMC1tYWludAorNzI1NDcgMTkyN2U4ZDc5MTQ3Nzk1N2QxOTk3OWE1MjBlNTQ5ZTEyZTMxNjkwNCBsZWdhY3ktdHJ1bmsKKzcyNTQ4IDRhZTAxYTI0MTY1MGQ1NjQ4ZjgzZGU4ZjE0NzBlM2Y3NWRiYjljNzAgcmVsZWFzZTI2LW1haW50Cis3MjU0OSBmOTgyMjg5ZjkzY2ZiOGUzNDgwYjc1MmFlMjY5OWJhZWI5OGRlNzllIHB5M2sKKzcyNTUwIGJkY2QwNWE4MWFjYmEwZWUzODhiZTgwZTM1MjZhN2Q0NzcyZDllOWMgcmVsZWFzZTMwLW1haW50Cis3MjU1MSA2MzBlNjgxMTAwZTA4ZTQ5MmE4NTAyOWNjYTg3YWRjYmIwZDlhNmMyIGxlZ2FjeS10cnVuaworNzI1NTIgZDY1ZDcxODlkZTMyY2QzZWE1NjNlNDYzNTViZTE0YjI4NzVkMWVlZiBsZWdhY3ktdHJ1bmsKKzcyNTUzIGM3NDcxYzkxMWFkMjRlZTNkYWYxZTY5OWEzMjc0Mjk2YWQyMWI0NDcgcHkzaworNzI1NTQgZWEyZTQyNWQxZjYwMGNiMWJmYTdlYjUzNjY0MDMxODQzNjEwNzJhOSByZWxlYXNlMjYtbWFpbnQKKzcyNTU1IGQwMmIwZTcwNzM3N2QzZWM2NjFhNjkzNzQzY2M0YTRkODJjZDA5ZjUgcmVsZWFzZTMwLW1haW50Cis3MjU1NiA2ZTdjN2Y0MjQ0MzZiNjc4ODJiNzRiOTM5YzhjYjBmZTllZGYyMTQzIHB5M2sKKzcyNTU3IDM0MTY3MjE0ODBiMjFjNWY5NjJhMzZiYzk5MjIxMWE3MmVkYjFiNmYgcHkzaworNzI1NTggNGViY2QwMTRmM2QwNmEwNzFkZjYxNDQ0OGU3NzU5ZmJmYTQ1MzE2NCBsZWdhY3ktdHJ1bmsKKzcyNTU5IDA0OTViYzQ3Y2QwODZhOTdiY2RjODg0MzVlNjM2MDYyOTgyZWU2OGUgcHkzaworNzI1NjAgNGI0MTc0M2Y2NTI3Y2JjOGYzMTQ0ZmI4NTUzYTM4MzI5MzkzYjU0OSBsZWdhY3ktdHJ1bmsKKzcyNTYxIDYxYzViZGIyOTRmOTUxODVhOWRlZmNlNWE1ZDBmM2I2ODg1NjYyOTggcmVsZWFzZTI2LW1haW50Cis3MjU2MiBmMjAwOTM3MTljMGVmZjEwNTZjODY1MmJjMjA2OWU1N2JmNGVlZDk3IHB5M2sKKzcyNTY0IDExOWY0MjMyYWY0NjE4MGE2NDg2OTczYzY5YmNhYjZlZDQzMmQxNDAgbGVnYWN5LXRydW5rCis3MjU2NSA5NDE0YzJiMTkyM2VkZWE4ZDM1Y2M3OTUwYzQzNWU0ZGY0NjMyYWU2IHB5M2sKKzcyNTY2IDM1YzZkNDA3ZDNjOWVkNDBiMDIzZGUwYTQzYThiOGYzZTViNTJhM2EgcmVsZWFzZTI2LW1haW50Cis3MjU2NyBlOWVkY2FmNDI1NDczZDlmMWFhNjNkODQzZjU1ZDgyNzFkMDg1ZTIwIHJlbGVhc2UzMC1tYWludAorNzI1NjggYzJlMmI0N2E4N2MxNDdiNDRiYjdjNWNjYzAyNWQ5NmIyNzU1Yjc4NyBweTNrCis3MjU2OSA4YTdlODRhZTQ2YzVkZDg1NmYzOTE5YTdlNDcxZmRjNjNhYzgyNjFiIHJlbGVhc2UzMC1tYWludAorNzI1NzAgY2NmY2EyNTg3ODg1M2U5MTdjZjMxNzNkNWQzYzFhMDUwNDk2ZjJhMSBsZWdhY3ktdHJ1bmsKKzcyNTcxIDIyMjc3ZGZmYzU3MWNhZTdmYmQ4MWE1MzU4NTQzYjQxYzBkY2I5NDEgbGVnYWN5LXRydW5rCis3MjU3MiA4OTMwNTQ4YWY3MzRlMDI2ZjI2YmQ0YzBhMTI4YTRkYmY4Zjg2OGM2IGxlZ2FjeS10cnVuaworNzI1NzMgODQ2MTZlYmYyYjRmYzA4N2I4ODc2ZDA4ZjU0ZmQ4ZGE4NGExODNhNCByZWxlYXNlMjYtbWFpbnQKKzcyNTc0IDVkMGY1YzU3MTM1Nzk3ZTk3ODViYWJkZDQwYjFmYzgzZWNkNWY0MjMgcHkzaworNzI1NzUgYTI2YWY4NWFiODk1MGI1ZjJjNzEwODRlNmZjZTFjZWQ0MTJjOWQwYSByZWxlYXNlMzAtbWFpbnQKKzcyNTc2IDU5Y2I5YzA3NGUwOTdhYzdjMmI3ZWI0NGMyMmYyNzFlM2IyYTg1NDYgcHkzaworNzI1NzcgOTQyZjJkNmQ1YzVjYzNjNmQyZDJlYzVjMDcxYjViMTg0OWNjMzM5MyBsZWdhY3ktdHJ1bmsKKzcyNTc4IGJkODBmYjgzNmI5ZTlmZDg1OGFkNWJiZDUwYTRlZTczOTliNWQ0YmIgcmVsZWFzZTI2LW1haW50Cis3MjU3OSA1NDYwNDY4OGIzZTk3YmQzMGYzMDZlN2QzYTcyOWNiMDk0OTQyNWUxIHB5M2sKKzcyNTgwIDEzNTczMDM0MTE0ODdjNTlkYzQ2NWJhZGVkYjZhZDdiZmM1YzFiN2EgcmVsZWFzZTMwLW1haW50Cis3MjU4MSAyNTgyMTk2NDZlM2FkYjlkZWMyMDBiNGE3ODNkMzdjMjc4YThmZDgxIHJlbGVhc2UzMC1tYWludAorNzI1ODIgZGZlNTg2NWU1Zjk4MDljYzVlNGJhZjcxMzc1MDVlNjQxYTk2Mzk1YyBsZWdhY3ktdHJ1bmsKKzcyNTgzIGJlYWMwYjQxY2ZiMTRmZWMxMDI2NDgxM2JkZmVhNGE2MGE1ZDI5OTIgbGVnYWN5LXRydW5rCis3MjU4NCBlZmUxMmFhOGVmMTljZDE1MWE2MDBkMWI0M2I2MTQzZWI1MzA5NDE5IHB5M2sKKzcyNTg1IGU4MjA5YWI0OTY5MTRlMjgzODA0NTI0NmIwMDliNDlmYzBkNzliYjIgbGVnYWN5LXRydW5rCis3MjU4NiAxNWE4ZjRmMmJjODQ4NDVlMjM5ZTMwZTVmMTFiNmFlNzg0MmRmN2UxIHJlbGVhc2UyNi1tYWludAorNzI1ODcgOTI0ZGJiN2ZjNmM1N2ZiMDYxYjhhYTY0NzUyMWI1NTk1NTdkYTJhOCBweTNrCis3MjU4OCBiNjM4NTcwMzcwM2UxY2M3ODFkMzVjZGVlNDg5NzhjMWU0YWIwOWJmIHJlbGVhc2UzMC1tYWludAorNzI1ODkgNWZjZTE0ZTFkNzAzMmMyY2VlMzMwM2U5NWIxOGI3OTljMGU5ZDJlOSBweTNrCis3MjU5MCA3OGZiN2Y4Y2QzNDkyMmRmMTU3MWUyYWU5MDVjNjRhYTdhYjY1ZTJlIHB5M2sKKzcyNTkxIGMyYzhkMGRkZjE4NzdhOWJhZTRlNzI1YjFlNzU1ZjJjMzllNTljYWYgcmVsZWFzZTMwLW1haW50Cis3MjU5MiBkODViZDQ5OWYzZjRlY2U3YTBkMmMwNzAzY2I5YTZkYTc1ODg5ZWY1IHB5M2sKKzcyNTkzIGQyMjEyNGM2NDRmZmE0Yjg0NTAzYzg2NmFjMDQ0NGZlN2NhZTgwYmEgbGVnYWN5LXRydW5rCis3MjU5NCA3MzVlZDE3OGRmYWU1MjViZWMxOTQ5MjE4ZWQyODRhOGRlNzEyZmM4IHJlbGVhc2UyNi1tYWludAorNzI1OTUgMmMxZDhmMmQzODM5OGZmMjk1YTY4MmI3ZmZkNjU5OGQ2YzUwOGZkZiBweTNrCis3MjU5NiAwNTQ2ODA1YjMwMjJhMDY1ZjgyNTE3MGUzMzg3ZmY5NzI5ZWU0NmU4IHJlbGVhc2UzMC1tYWludAorNzI1OTcgNjQxOTgyOGVmNjVhYzQ4MTNjYzEwNTkwNzk3MmVkODQwN2FjNDM4MCBsZWdhY3ktdHJ1bmsKKzcyNTk4IDRlYmU2YjI2MGM1NWJiYzAzNDI0ZjY3NGRmM2FmYjM1ZDYxYWM0OWUgcmVsZWFzZTI2LW1haW50Cis3MjU5OSAxOWU5NTk2MjYxMDlmMzI0NTgzYTdiMmZjNTdhOTg1YmFlZDI0N2Q4IHB5M2sKKzcyNjAwIDJkNmZmNGE5NDk1M2NmOTQzNWNjY2RkNjZkNTdkZTgxOThkMGNiZTAgcmVsZWFzZTMwLW1haW50Cis3MjYwMSBiYmI5MTFmN2MwYzI5ZjNjYWMyN2ZiMjNmMzBkZDJkZDUwNzk0NWIyIGxlZ2FjeS10cnVuaworNzI2MDIgZjUwZWRkNGJiNDhmODNiODgyOGY4ZWRlN2M4NjBhODg4YTRhZTliMyByZWxlYXNlMjYtbWFpbnQKKzcyNjAzIDY4OGQ5NGU4NmNhMjg4ZGQ0NWJhZDM0OTY0NTVmMjg3ZGI4ZDgzNjEgcHkzaworNzI2MDQgMzViYTY1ZjFjYzgxNzk2MzVkZjA2MDA1N2UyNDUzNDJlN2MyMDBiMyByZWxlYXNlMzAtbWFpbnQKKzcyNjA1IDM0N2U1OWVhMWE3MWRhNjgxZGJmZTZiNDM4OWUyMTc1NDY3MjM2ZjUgbGVnYWN5LXRydW5rCis3MjYwNiAzMTk1MjQ1MjQ4NWJmYTJiNDYwYTQ1Y2RkMjdhNGU5YmI2ZGMzMjE4IHJlbGVhc2UyNi1tYWludAorNzI2MDcgZTlhN2FlZThlODAwNDFlMTBkMjQ2MTM4NTBkZjBkNjFmYzhhZWQ2OCBweTNrCis3MjYwOCBiZDJmN2UxM2ZkNzNlZGZkMDRlZDdmNWNmNWUzMDYyMzEwNGE1MzUyIHJlbGVhc2UzMC1tYWludAorNzI2MDkgMDIzMTg3NmYzMTA0M2QxODg2MTM4MDJhYjY1NmZmZWZiNDJiYTUyMSBweTNrCis3MjYxMCBjNTE4MDgyNjkyMTRkMjIzMDgwZGI2NGQ1YmVhZGVhNjFlNDVhMTE5IGxlZ2FjeS10cnVuaworNzI2MTEgOTEzNzdkYTU0ZWRlOTU4NGFlYzA0YzE5NTU5YmY2ZGNiMTMyYmFjMSByZWxlYXNlMjYtbWFpbnQKKzcyNjEyIDg4MmQ5Nzk1NDUyNjBhYjU2MDg0ZjdhMDc3YWE1YmJkZWZmZGJmMDcgbGVnYWN5LXRydW5rCis3MjYxMyA4ZjZlOTEyMzcwMjc0MjI4MDNhZGI3ZDVkOWRiODkwZmY1OTM5NGQ3IHJlbGVhc2UyNi1tYWludAorNzI2MTQgMzIzZTFkODQ4YjVmZmZhZjcyMTdjNzU1NTA2ODE4Y2FjNWQwOGNiYiBweTNrCis3MjYxNSA4YzdjYzE2ZGM3OWM0OGVkNzVjYjdmYmYyNGEzOWZlMGM1ODNiMzE3IHJlbGVhc2UzMC1tYWludAorNzI2MTYgYTZjNGNkZmRhOWQ2ZDUwNzk1NmQ3MmMxMjVlZjBkMjdkNDZjYjFiYSBsZWdhY3ktdHJ1bmsKKzcyNjE4IGJmNjk5MDI2NDU4ZTQ5MDI0YTk4YTA2ZjIwYzg2MjBjZTU1YWIzOTAgbGVnYWN5LXRydW5rCis3MjYxOSBkZGVlNGQwNWZhMTdlYTFkYTcxY2MxNjg2Y2EzNjFhNmM0OTFjN2VjIHJlbGVhc2UyNi1tYWludAorNzI2MjAgNzgxNGJlNjk2N2I4YmEwODg1ODFmZGNhMDllOGU4YTFjMDk2NjM1MSBweTNrCis3MjYyMSBiZWNhNmQ3Y2NjOTA3NzFlY2RlOTk2MTc1NzVjODgzMDY2M2E4ODhiIHJlbGVhc2UzMC1tYWludAorNzI2MjIgM2E1ZjZiNjMzNDk5MzQ5NDY5NjAyN2I3NzRlZTk4YTgzNjAwYmUzYSBweTNrCis3MjYyMyBhNjllN2NjMDQ5YmI1ZWM5OWU3ODRlOTM5OTZkZWYxNGUyODMxOWY0IHJlbGVhc2UzMC1tYWludAorNzI2MjQgNjdiYWYyYzE3MzY5Zjg0ZjZlNmMzODU5ZDk0MzkxMDI3ODI5MjhlZCBsZWdhY3ktdHJ1bmsKKzcyNjI1IGIwNWQ0NzlkMWNiMGFkZmFiYTg5ZTg1MTE4YWZlMTYzMGFlYTk1NjkgcmVsZWFzZTI2LW1haW50Cis3MjYyNiAzOTFkYjgwZDFhZjRjZjI2Y2JiYjNhOWM4YjQzMDYwMWI3NWY1ODAwIHB5M2sKKzcyNjI3IDM3ZjkwZjJmNDAzNDlhOGNmMGVmZmI2YWU4MGQxMjRjYTJmZDg0YjEgcmVsZWFzZTMwLW1haW50Cis3MjYyOCAxZDA0OGM5ZjQzZGM2NmEwMmI2MmM4N2M3MjJjOThkODUwYjhmOTUyIHB5M2sKKzcyNjI5IGFhNzdmZDg2MjZiYTk3NzcxMGM3MjM2Njg2NzI1ZGY5NDU3NzY1NTIgcHkzaworNzI2MzAgZTk2MjEyOTY2NWQ4MDQ0NzViMmJmMTE2NTY5YTM5ZTUzZjNmOGQzYiBsZWdhY3ktdHJ1bmsKKzcyNjMxIDkwYTgxMDJkN2VmYmQ2OTAwZGQxM2FiODA2ZjY5NmI1Y2M3ZmFlMDcgcHkzaworNzI2MzIgYzcyZDRmY2UzMDAwNTk3ZGMxMjU5MTIzMDVkZmFhNjEzODAxZGRmMiByZWxlYXNlMjYtbWFpbnQKKzcyNjMzIDZkNjkxNDE3N2Y2MDI2NmI1ZGEwNDQ3MzM5OGQ2YzA3NTRhZGI5Y2EgcHkzaworNzI2MzQgOTEwMzA5Mjc2Mzc2NzRkZjViMTMyMTk3Yzg2ZWMwYWE2ZjRmZjRlYSByZWxlYXNlMzAtbWFpbnQKKzcyNjM1IDA3YjVmMjBkMDI1YTg3Zjc5M2I2YTMxMmY5NDcwN2RmYWQ3MWE4YWIgcHkzaworNzI2MzYgMzhlMzU0NjA5Y2YyZDU2NjJmZmM4OGMwNTkyNWNiYjc1MTJkMjA0NiBsZWdhY3ktdHJ1bmsKKzcyNjM3IDJhN2NlMTNjZWEyNTA4M2Y5OTYyZWFlMWJhNzUwOWRmZDc1MGJlZWUgcmVsZWFzZTI2LW1haW50Cis3MjYzOCBlNjkxMjBiZTY1YzQ1Mjc5MDlkOWExZjAyOTEwNDk3ZjFkMTQwN2MyIHB5M2sKKzcyNjM5IDBmY2YyYWNkZTQ3MzZkMmFkZTA4ZjY3ZjJkZTM0M2Y2OWFhOWE3MjggcmVsZWFzZTMwLW1haW50Cis3MjY0MCBlNGQ5MzdmNzg5YTExMzE0ZmUxYmQyZThiMGVhZGZjMzE0YjAzYjdkIGxlZ2FjeS10cnVuaworNzI2NDEgNzNkOWI5NzM1NDI0OGE5MGE4ODJmNTQxZmY3MjExNjVjMDgxMWE0NCByZWxlYXNlMjYtbWFpbnQKKzcyNjQyIDNjNGIxYjQ1MDFjMWI0ZDg3MjMyYjRiNGE4N2I0NWE1MTE3NWQ1MWIgcmVsZWFzZTI2LW1haW50Cis3MjY0MyA2YmU1ODU0ZTVkZjdhYWJhZDYyNDg1YTczMTdhNzkxMDkwYzI5MTQ3IHB5M2sKKzcyNjQ0IDdlM2Q3YjUyMjRiMWVhYjZhZWFkMjIzZTAyNDE5ODkyM2EzYzRlOTUgcHkzaworNzI2NDUgOTFlYThmY2Q0NTdlNWMxNDIzNGI5Njg4ZDg5NmM0NDFkYzExMDEwZiBsZWdhY3ktdHJ1bmsKKzcyNjQ2IGFiMzBiMjM3YjYwMDA5YjcyN2Y4Y2FiYzhjYjIzYjU0ZjkyZjA4Y2MgcmVsZWFzZTMwLW1haW50Cis3MjY0OCAxN2QxOTQ2NTQwZDQ3ODcxOTYwMmVhNTRiYjY4OGZhZjAxNTRjMjhlIHB5M2sKKzcyNjQ5IGVlMjE1NjQ5ZmFlMDYwOGNjNGU5MjVmMzNhNDkyOGZkZWYxYzJiNDAgcHkzaworNzI2NTQgZmIwMTk3MTk0OWE1NTQ1NTAyMGQ0ZWEwMzcwZjI0NjA5ZDc4ZGYxMyBsZWdhY3ktdHJ1bmsKKzcyNjU1IGU0NTE4NmVkYWM5MTlhZGJhYTc2NDk5ODdjZjMzZWEwMTFjYjMxYTggbGVnYWN5LXRydW5rCis3MjY1NiBmNzZmMjNhZjIyOTVhZTUzNjg1OGZjYjVhNDM1ZjQ1MDY3MzIzMTk2IHB5M2sKKzcyNjU3IDlkNTAzNzA3NDQ0ZTQxODc4YjVmNmI4MzNjZTYzNjQyNzg1NzU3NmMgcHkzaworNzI2NTggYjYwMGU1MTAzYzYzZTIzZWJkNmI4NjliNjk4NTU4ZjRlMDViMDNlNCBsZWdhY3ktdHJ1bmsKKzcyNjU5IGIzM2I0MjQ5YjE4NTg1MjIwOGNkODVhMTFmOTYxNTg4NWY4ZDZlNjMgcHkzaworNzI2NjAgZTNkZmNkMWZlMjEwZDY1NWU2OTZlYzgxZjNhNDhkNDZlMGNmYTU1OSBweTNrCis3MjY2MSBhN2MzNGY3MjhmMGU4YWQxMzlhYWY1MzVhNTI2ZDlmMDFmMGZjMDY3IGxlZ2FjeS10cnVuaworNzI2NjIgOTNlZDY4Yjk5OWU3NTdjZWU5ODI4MjU1MzM2YWU0ZDVkZDJjZWVmMSBsZWdhY3ktdHJ1bmsKKzcyNjYzIDg4ZDk2NWJlODYxNzI1ZGZmMjE1MzYyYjBiMDAyOGEwYmRhZTk5MGMgcmVsZWFzZTI2LW1haW50Cis3MjY2NCBkOTAyZjM0OTQ0OTk2MDhjMmVjMDQzNDZkYzQ2NmY3MjEwZTQ2MWVjIHB5M2sKKzcyNjY1IGRkOTE1OGZiMDg2NzgzZjQ4ZjkxZGM5MTY5YjQyYWM4MTllNTc0M2QgcHkzaworNzI2NjYgOWJiMmExMzcxZGRjNDAwNTE4ZjIwZGE2NzFlNTc4Njc3NTIzNDMxYiBweTNrCis3MjY2NyBlNWYyODg3NmFlNmM5M2JhZTllODcwZWI0ZDY4MTNiNDQ3YjVhZThkIHB5M2sKKzcyNjY4IDBkOGRiODFhNzg2YzY4YWNmMWFmZTM3YTFlZDhkYTc3Y2Q4Nzc3NzMgcHkzaworNzI2NjkgYzQwZjE4N2FmNmRkYmNmNzk4YTE3NGEyYzM4Y2I2NGRjNjA3MThmZSBsZWdhY3ktdHJ1bmsKKzcyNjcwIDg1ZmI0YzIyOWE5Y2VjMjFjODEzNTQ2ZTI5ODY2NjJkNjk5MGU0ZTIgcHkzaworNzI2NzEgYjQyNjFkYTRlYTUwYzM3NmY0MDg0NmZlNWVlOTYyNjEwOGI5OGYwYSBsZWdhY3ktdHJ1bmsKKzcyNjcyIGNkNGE3ODI3ZWRiNjhhNTY5ZDBkYzZhNWU2MjYzNGZmNmFlODVmNWIgcHkzaworNzI2NzMgMThiMmYyY2QwNzQxZjRhMjNkM2QwZTkyM2FmZDlhNDY2MzU0YjYzYiBweTNrCis3MjY3NCA5NjEwOTQ3MDUzNzAyOTBjYzVmZDc4Mzg5ZjgyNTYwMTBkOWExYzMxIHB5M2sKKzcyNjc1IDkwZTJiZmU0ZjYwZTdhMjUyNDJkMmI1YjI4MTdhODhiOTI3NTk4NjUgbGVnYWN5LXRydW5rCis3MjY3NiAzNGI2MGI3MzZhZDMzZDU0ODM2NjVlOWQwMzlkN2IxNTZjMjEyMjgzIGxlZ2FjeS10cnVuaworNzI2NzcgMmNhMTE4Y2FhZTcxNmE3Yzc2ZDlmMGI4ZGFlZjhhNjVlMDE3M2ZkYSBsZWdhY3ktdHJ1bmsKKzcyNjc4IDc5MDk5MmJlZGQ2MWQxZTdhZmMxMmZkY2VjODViNjRiZmUwZDViOWQgbGVnYWN5LXRydW5rCis3MjY3OSA4ZThlODdjMWVjYjdlYzU3ZGUxNTAzYzFkNGUwODExOTk3ZDcyZmM2IGxlZ2FjeS10cnVuaworNzI2ODEgZDUxNGE4YjdhZTc4YWUyYWJhYzUwZDdlMjMzN2VmN2ZhNmEyZDJkZCBsZWdhY3ktdHJ1bmsKKzcyNjgyIDQzZmM0NWQzY2IyMTZiNWU1NDg2NTgxM2U5OTVlYWFhMTljMTdhOWIgcmVsZWFzZTI2LW1haW50Cis3MjY4MyBhYzY2MGVhMzVmNTI1ZGEzNjJjMWJiNjBmZjJjNTBjNTUxYTljNGQyIHB5M2sKKzcyNjg0IGMzZDRkOTNjODllMjU3ZWU2Y2EwMzk2YWIxN2U4ZGYzOTg1ZDhhNDkgcmVsZWFzZTMwLW1haW50Cis3MjY4NiBmMWJmNTM4Nzg2YjdjOWViYjVjMjFhNTE3ZTBkY2RlYmM4OWNkOWZiIGxlZ2FjeS10cnVuaworNzI2ODcgOTg4Y2E5OGQ5MTk2MmJmYjAyZmViYTY0YWE2MWIwNDNjYjkxYzc4OCByZWxlYXNlMjYtbWFpbnQKKzcyNjg4IGNhNzg0N2QzYzQ1MTk0ZjBiODk0Y2Y0NDU0YjNmZjNlYmM0YjU5OWYgcHkzaworNzI2ODkgMWY4YWNjZDFmNDJhZDAwNGVmYmMyZDI1Y2E4NWY0OGU3ODJiYTcwZiBsZWdhY3ktdHJ1bmsKKzcyNjkwIGFlMDA2Mzg2ZWMzOTNiMjYzNGYzYTY2ZmY2MzRlMDJkYjc2OWM1MzIgbGVnYWN5LXRydW5rCis3MjY5MSBmOWY5OTdjMWZkODEzYzc1MzBhNTU2YWY2NjBjMTY3N2Y3ZTdkZmY3IHB5M2sKKzcyNjkyIDY5NTY3YTA1ZDVlNjU3MzZkYzMwNGJiNzk1N2Q5OTM4NGRjYTM5ZmIgbGVnYWN5LXRydW5rCis3MjY5MyAzYWE2YTg2M2ZmMDY5MWU1OGNkYjI1OTJiMmM0MDUyMmU5OWRlYjg3IGxlZ2FjeS10cnVuaworNzI2OTQgMWNiODA0YTJlMDM4Nzk2OTdhMmQ0YWE4OTkyYjBkZjQyZWRiZGU2OCBsZWdhY3ktdHJ1bmsKKzcyNjk1IGExOThlOGQzNmVjM2I1NzgwMWNmMjkzMjJlMzYzNTA0N2Q1ZTVmZjkgcHkzaworNzI2OTYgYTUzNTk2MDk0NDQ0MTM4NmU0NDQ3ZDgwZTg3ZTFlNjQ5MjRlMDMyMSBsZWdhY3ktdHJ1bmsKKzcyNjk3IDgzZGQyYjI1MmEyNzY0NmM4YWExNTZjOTQ4YjExNmI5NGYzMjgyOTYgcHkzaworNzI2OTggZDY0ZDQ3ZWU1NGExODE2OGZkOTJmMmViNDEzMzhlYzJjMDBiZTZhYyBsZWdhY3ktdHJ1bmsKKzcyNjk5IGRjZGE0NDhjYTY2ZTg3MjZiNjY4ZjZlZTQwNmNiNGU3Y2NmMjFiZDMgbGVnYWN5LXRydW5rCis3MjcwMCAwZTNhY2U5Zjc1MTZkYjRmZjVkZjkzYjkwM2Y2MWRkMjgzMTFmNThjIHJlbGVhc2UyNi1tYWludAorNzI3MDEgNzdjZmVmNTk2ZDMzNTBiNTk3MDJkZjFkNDUzMmUzYmQ3MTAyYzU5MyBweTNrCis3MjcwMiA5MDFiNGZmZmVhMWY4MGRlY2FiNzI0ZTM0MzI2ODlmYzc1MjY3ZjEwIHJlbGVhc2UzMC1tYWludAorNzI3MDMgOWI5MmQyYjg2YmFhZWYyMTE0ZTA4Zjg4MGU1ZGU5NDdhOTI3ODAyMSBsZWdhY3ktdHJ1bmsKKzcyNzA0IGQyNzMyZWE5OWJhMDg4ODNmNThjYzJiNGNjYjViNjlhYzc2M2M1MjAgcHkzaworNzI3MDUgZThmMWEwMDc3NzFhYTkwYjhmMDkyYzk1MTIwMzJjNGVmMDIxNTA1MCBweTNrCis3MjcwNiBiMjJiMmRhYWViNDRmMzllOWIzMjc0Y2NmMDlhMTFlOWRlM2RiMDA0IHB5M2sKKzcyNzA3IGQ4NDFmOTcyNDNiNTc0YWQ4NTMzZTY5NDA4NzkwOTg4ZTJiNmFmYzAgcHkzaworNzI3MDggYjUyYjkyZjMxZmE4ODljMWE1NDhhZWVlMWJjZjBjNzZhZDhhZWEzZCBsZWdhY3ktdHJ1bmsKKzcyNzA5IGY0M2ZjMTE5M2MyYWIzODg0NzU2OWRlYTU5ZDY3MDA5MGU5MTRkNTkgcHkzaworNzI3MTAgZTljMDhmZmE5ODk1MTM1YThlMWQ5MzIxMDM3YTYxNTNhNjk1MDJlMSBsZWdhY3ktdHJ1bmsKKzcyNzExIDEwY2ExMWU1OThlNjkzY2YzNzI2ODI0Y2M3MDgyM2NiMGIwNjgyYzYgcHkzaworNzI3MTIgYzViOTgyYWYyMDlkN2JjMzhiMzZjOTAyZDc4YWIzY2M5MGIyMmIwZSBsZWdhY3ktdHJ1bmsKKzcyNzEzIGZlOGQzZmQ2NmQyNjRlYzIwOTIzYWY5ZGJkODhjZjZmZDliYWM3MDggbGVnYWN5LXRydW5rCis3MjcxNCBiNmI0NTRiMDZhN2IzNWNhMTFhMGEyNjUxNjc4NmI2YjUzOWRmNzFlIHJlbGVhc2UyNi1tYWludAorNzI3MTUgZmM3OTM1ZGU4ZThhZGE4YzZjOTRkMzUzOTY4ZTVhNzVhYmQ2MTUxNSBweTNrCis3MjcxNiBkNDA3Mjk3NTVlZGZjYzI3MmVlY2FkM2YwMTkwMDIzNDg4ZmEzOGQ4IHJlbGVhc2UzMC1tYWludAorNzI3MTcgMzViY2U4MGEyNWY4OTk4NmFlYmNhMTQ3ODJmMjRmMzU1Yjk1NDc1NyByZWxlYXNlMzAtbWFpbnQKKzcyNzE4IDk5YjQwMDg2MTU0M2VhNDQyMTY3Y2Y5NmY5MmUyYzhmYzJlYTlhNDIgbGVnYWN5LXRydW5rCis3MjcxOSBhZGJjNjYyZmY0YzFkMjhhYmJkMDUyMWRiNTcyYTBmYzFiYTE3ZjVlIHB5M2sKKzcyNzIwIDBlOGM4YjBkODY2OWU0OWQ1ODFiNTg0MjBiM2UyOGNhYmNkNzAzYzQgcmVsZWFzZTMwLW1haW50Cis3MjcyMSBmMjUzODE4M2QyNjIxZmEwMDlhZTJjZGQ3MmQyODExYjMzM2U5MWQ1IGxlZ2FjeS10cnVuaworNzI3MjIgOWQ4MWUyYzQzOGRiOTcxYjVjYjA5YTkwNWVlYjFhZjNhMTZhOGZlOCByZWxlYXNlMjYtbWFpbnQKKzcyNzIzIGUyMjE3MzYxZWIzN2E3YmM4NGYxNzEyNmVkYzhmNmVmYWQ4MmMwZWQgcHkzaworNzI3MjQgMTA4ZTkwYjg5MjNlYTJlYTk1Y2UwY2IxODg4Y2JlYzlkMTMyNmU1ZSByZWxlYXNlMjYtbWFpbnQKKzcyNzI1IDgwNmVmM2ExZjg1OGQxNDI2YmRjMzBiNDkzZDI0OWRkOWE2YjRjMjkgcHkzaworNzI3MjYgMzY3OGIyZDM2MGM2OTg1NDg5ZDUwNjExOTY5YjNiYzgxNTYxMTA4OCByZWxlYXNlMzAtbWFpbnQKKzcyNzI3IGRmMzgyNjQ3MmUzYmY5MWNkZWQ3Yjk0MGVkMmM1YjhlODZkYjI5YWIgbGVnYWN5LXRydW5rCis3MjcyOCBmMGIwOWQwNTM5YzA5OTU3NGY4NTQyNTk1YmQxOTE5MGNkYWViMDlhIHJlbGVhc2UyNi1tYWludAorNzI3MjkgNTZhZGY4NjRmMzgwOGRkMjI4YmNhODRhOWE5ODlkZjk2ZTYxZGY2MSBweTNrCis3MjczMCA4ZmZlYWY2NDk5NzA4ZWQ2Zjc2Y2IwMzRjZGEzOGMyMjNmNDAyOTU1IGxlZ2FjeS10cnVuaworNzI3MzEgYzAwOWIyYjM0ODFmOWNmYzVlZDYyMTk5YTU5ZTAwNDQ0YmMzY2YyZCByZWxlYXNlMjYtbWFpbnQKKzcyNzMyIDg3ODMwNDYxYWI0Mjk3MmM4MWYzNmUyNmU5MGFkYjZhZGVlOTJkNGUgcHkzaworNzI3MzMgNzZhOWY5Y2I0MzhmNTA5M2YzZWIwNjFhZDZiY2QzYmRjYWYwOWM2MyByZWxlYXNlMzAtbWFpbnQKKzcyNzM0IDcxMTZkZTNkYmU5ODNhNmRmMzk1MjdjMGViMjJiNTAxYzY0YzMwZTcgcmVsZWFzZTMwLW1haW50Cis3MjczNSBmNjVkZTM2ZjE4NWM1Y2Q1MDNmZDYwMjRkMzE0NzVjZmE4Nzc5ZjI4IHB5M2sKKzcyNzM2IDE3OGY3MGZjNDc4ZDc5NmI2YTlhOWVlMjdjOGNjY2EzMzIxMzFjZTkgbGVnYWN5LXRydW5rCis3MjczNyAzYmZkYjhkNzI1NjBmY2ZiMmRjN2EwYTIzOTU5MzQ0YTA0MTZlOGE5IHJlbGVhc2UyNi1tYWludAorNzI3MzggZmI1OWE1MjY0YWUyNWM5NTA4OGI1NWIzNDc2ODhhZmViYmEzODdkMCBweTNrCis3MjczOSA4MWM1NzkwMGExODI1YTgwM2E4ZmQ4YmEwNTNmMDZiOGVlMzhiZDI4IHJlbGVhc2UzMC1tYWludAorNzI3NDAgZmJiMzMzOTBiMjU0OWIyZjRlMDUwOTVjNjZlOGIxZTg4N2YxN2JmYyBweTNrCis3Mjc0MSA5MDRhMWJkMzVlMDA4OTJiNTRjODcwZjQ0ZWUyMmE5ZTVmZjAyNTQwIHB5M2sKKzcyNzQyIGQxNDNlYjYyNGNmNWUyZmJmYjljMmQzZmJlMmZmMDIxNGNhMzFjMTQgcHkzaworNzI3NDMgNzRiNjc0OGI2M2Y1ZmNhYjFmMzBkYjc3ZmM2ZmQwNDU2M2E5ZmIyMiBweTNrCis3Mjc0NCBkMDk5NGE0MmI1OTc1YjI2MGU3NWI4MDEzMDQ4N2E4YTdjMWE2NTEwIHB5M2sKKzcyNzQ1IDQxYTY5MjYyN2VlYjNjNTMzODA0N2YxNDdhMTljZjc2OTdhYWZkZWYgbGVnYWN5LXRydW5rCis3Mjc0NiA3Y2IwYTQ1NDdmMGEwZjgzMmJmNjZlNzM2YzNlOGViNmEzMmM3ZTNlIGxlZ2FjeS10cnVuaworNzI3NDcgMGZmYzk1NTg3ZDdjNDU2MDM0MDVhYmJjODk3MDQ1MWM5ZjE1YmM0OCByZWxlYXNlMjYtbWFpbnQKKzcyNzQ4IDE3ZDA3OGM1ZDY1YjUyMjk5ZjExYmNjODZmNTQwNmE5NTRhNGViOTUgcHkzaworNzI3NTAgNThkM2M0NTRiYzM3MjQzOGI3YTI4MTY1NmI3MzY3ZmJhYTE2OGQ2MyBsZWdhY3ktdHJ1bmsKKzcyNzUxIGY5MzViOTU5ODAzOThkMGQxYWY0MjVmMTIxZmViZTExZmNkYmFhZWEgcHkzaworNzI3NTUgYTdhZDE2OTY4NjZiNGRkOTY5MmYxZDQ1MTFiOGQwNjc5Y2JjYzA3ZiByZWxlYXNlMzAtbWFpbnQKKzcyNzU3IDJiN2NiNDJkZGUxMTY3ZjA1Nzc1NzA1ODg0NTk4YzRmMDY5NmJmMGYgcHkzaworNzI3NTggZTNiYjZiNjJiZDBmNTA3NWQ1N2M5ZTMxYzE0ZTJiZjRiZjYxYjYzNSBsZWdhY3ktdHJ1bmsKKzcyNzU5IGQ0NzNmYmE0ZWM2NzU3YjA4NTQwMzgyNGFmMWQwYzZmOTA0NzYxNzMgcmVsZWFzZTI2LW1haW50Cis3Mjc2MCA5NGQyODNkM2QwMGJmNzRiNzE3NTA3NDBhMjlkNWZjMzQ0NjEwOTEyIHB5M2sKKzcyNzYxIDZhMzU5ZmQyNDY2OTNmNDlhZjY0MGIwYzNhMjNkNjY1MWFjNzUxNWUgcmVsZWFzZTI2LW1haW50Cis3Mjc2MiAxNzBkZGY5NjBmZGRkOGQ5MzkyMDU3OTQxODk5Nzk1ZjU2ODc0NzI5IHJlbGVhc2UzMC1tYWludAorNzI3NjMgNzFlYzRmYzY4M2FmOTI2MzRiYzMwOTcwODM5MGJhOTE4Y2Q2MDkzOCByZWxlYXNlMzAtbWFpbnQKKzcyNzY0IDE0M2FlY2M4MGI2YjZkNWIwMzQzNTZjOWQ3YWQ2ZjAwZjI1ZmMyM2QgbGVnYWN5LXRydW5rCis3Mjc2NSAyZDA2YTMyYTEyZTM3MDZmZTBiNWQzMWMwNjVjYTE0MTI0OTBlMzM4IHJlbGVhc2UyNi1tYWludAorNzI3NjYgNzM3YjNkNGFjYmI5ZmI3MDE3YWU0MmZlOGMwNjNmN2EyZGZkOWVmNCBweTNrCis3Mjc2NyA2OGRjZTY1NTA2ZDlmYWFiMDI2ZDNkNGQ2ZGY5NTU4OGIzZTg5MmQxIHJlbGVhc2UzMC1tYWludAorNzI3NjggOGQyNjFiNzZkYTQ2YmY5NGI2MGVmMWYzMGUxMjMwZWVhZjEzMThhMiBsZWdhY3ktdHJ1bmsKKzcyNzY5IGNlZTgwZDA2ZjdjZTljNDYzOGFkZmIxYWVmNWI4Y2UxYzA5NmI4ZGYgcmVsZWFzZTI2LW1haW50Cis3Mjc3MCA5YTA3ZTlkNjA5M2FkYTQyZTExZDQ4ZDAyN2M2MDk2OWRlY2I3MWNlIHB5M2sKKzcyNzcxIDdmZjdiZWYzMjkxMTY5NDQzMWMxNzcwYjVmYjdkNjU5NzRhNWI1ZjUgcmVsZWFzZTMwLW1haW50Cis3Mjc3MiAwMGViYmYxY2U5MzYwMjY4MDI5YTJhZjI3OTlmNmJhMTNlZWU2ZjJlIHB5M2sKKzcyNzczIGFlMjBmMWViZWMyMWNjZWEzODkzOGE2YmY2ODE1ZTAwYjBiMmNlNTMgcmVsZWFzZTMwLW1haW50Cis3Mjc3NCBkYWNhZDQyODM2ZGQ2MDBjNzg5NGMwZjQ4YWE1MGQwMmNmMjU3OTgxIGxlZ2FjeS10cnVuaworNzI3NzUgYzEzNjg4N2RiN2VmZjRjYjAxZmMzZTFlMzRkYzVlOTlkODY1YjdjOSByZWxlYXNlMjYtbWFpbnQKKzcyNzc2IGQ4MzUwZDA0NGNmMjI4Y2Q2ZjlmN2NkYjc2NzIzMWQzMTIzMzE0MTEgbGVnYWN5LXRydW5rCis3Mjc3NyA2Mzk1MzQ3YzAyNzYyNmFkM2ZkN2I1ZDM1MDc3OWU5NTg3MjUxMmU4IGxlZ2FjeS10cnVuaworNzI3NzggOTQ1YzY1NzQ0N2QyMWU2Njc4ZDg0NTY1MGMwOWUxY2VmZGQxYzIyNCBweTNrCis3Mjc3OSA4ZjE3MzYzYjkzZTZlZDFjNGE3Y2IyNmYxYjY2M2QyMmRhMjkxZjlmIHB5M2sKKzcyNzgxIDg4M2FjZTdlYTQ0NjY2NDBlYTFlN2Y2ZTYzNDFlYjZhZGVlOTU2MzIgbGVnYWN5LXRydW5rCis3Mjc4MiAyOTAxYjEzZmJkN2U2MmU0ZjZiMjI4YmY4Y2EyYTJiODM4NDJjNWQ5IHJlbGVhc2UyNi1tYWludAorNzI3ODMgOTM5NGE4MmQ4ZGUxNjk1ZjJlMTk4YjRjYTAzMzYyMzA5N2Q4YzRmNSBweTNrCis3Mjc4NCA2OWU5NDM0ZTQ1MGFkZWJkY2EyYTc5MTYyZWY0MzUxMzIyOTc0NzI1IHJlbGVhc2UzMC1tYWludAorNzI3ODUgZjc2NTBhMGU5MGFkYjVmNmM4NGZmNDJhMTBjNGEyMWRiYzRhMThiNyBweTNrCis3Mjc4NiA3NGJkYjBlNTIxMmJkZjIyMTZkNTE0YTM3N2ViNjQ2ODU5MTFlZjlhIGxlZ2FjeS10cnVuaworNzI3ODcgNzZjNDQxNGQxMGE2YzFjMTYyZTQ1NDVhM2MwZTVjNGM1MjE4MTE2MyBsZWdhY3ktdHJ1bmsKKzcyNzg4IDZmZDAwOWVjMjI0YTczOWY4ZmQxZGRjYzE1NTlhYzEwZmFmNTBjNDEgcHkzaworNzI3ODkgYWIyM2ZmMjA0N2FhMGQ4YTlhOTVkNjQ3NDRkNjg2ZTIwMWRiMTE3YSBsZWdhY3ktdHJ1bmsKKzcyNzkwIGM3ZmQ3NDFjNzJlYmViZGY0YzJhNDdjOWM3ZWQxZjBhMzYyZTU1NzkgcHkzaworNzI3OTEgMDU2MjgzYTVjNWRhMDAyZWRkYTFmYjZmZjZkYjBlMDZhYzczZTVmZSBsZWdhY3ktdHJ1bmsKKzcyNzkyIGYyNzVkNmEwYTFkMTc3OTczZTQxNDBhYmEwMzExOTQwNmM4ZjExZTkgbGVnYWN5LXRydW5rCis3Mjc5MyA2ZmFiOGJkMTVkNzEwZDg1MTc3ZmY3ZjFiZTJhODNmNWJjMDI4Y2YzIHB5M2sKKzcyNzk0IGE1MmNlY2FiZmZkNGMzMjgwMDEwNDNlNTk0YjgzMWMzNGJhNDQ0Y2UgbGVnYWN5LXRydW5rCis3Mjc5NSBiZGRmMTFlNjIyMDAwMmE5MmY2NTYwMDcwYjk3ODU3ZGVkYjY4MzRjIHB5M2sKKzcyNzk2IDRjZWVlZmI4NTU1ZTYzOWFhOWY4ODdlNDFjMTRlYzBmMjFjMmM2YmYgbGVnYWN5LXRydW5rCis3Mjc5NyBhZDc3MjI2MTExYjI2MzBhZGIzNjU1YjNkNWUxNjMxNDBiMTcyNjJiIHJlbGVhc2UyNi1tYWludAorNzI3OTggMDgzYmEyNDkwNWFkOTE5NzgyOGYyNGE1NjFmZGRmNjMxY2NkMGZiNSByZWxlYXNlMzAtbWFpbnQKKzcyNzk5IDRmYTRjYTQ1MDNjOGRmNjFlNzliZTA0ZDM1MGJhZDM5NjkyODZmNmYgbGVnYWN5LXRydW5rCis3MjgwMCA3ZTJhNmMxZGM5ZDIyMzYzZjkxYjkyY2FlYTRmM2RkNThiZGNlOTYwIHB5M2sKKzcyODAxIDZlNDBhZGQzZWUwMmE3YWVjYzMwNzYxZWE4NTc2NDllZTk3ODM3ZDAgbGVnYWN5LXRydW5rCis3MjgwMiAwMjNhMzQyOGYxYWVmNjhkNDdmYWM3MjFkMmE5ODU0MGI5ODc5ZTgyIGxlZ2FjeS10cnVuaworNzI4MDMgNjcwZmEwYzBmZjlhZjJlNjcxMWZmZGY3ZGUzYzgwNzI2MWFkZTg0NCBweTNrCis3MjgwNCA4OTIxMzA0YjVmOTIyYTQxNWJkYjdhMGRkMjRiMGI5NzAyYTg2ZGMxIHJlbGVhc2UzMC1tYWludAorNzI4MDUgZDJjY2Q4OWU4ZTZiOTUxM2QyZThjNjQ5ZWQ2NmU5MmE4YjgwMjY5YiBsZWdhY3ktdHJ1bmsKKzcyODA2IDM3OWU2M2JjYmQwNDQ4ZjZhMjA2NzFlYzY5ZTM4MjRkZDRlZjhhZWIgcHkzaworNzI4MDcgOTNmNGE5YWQyNmY2OGQzM2JmODFiODJhMDkzNGY2NDExOGZjMTRiZiByZWxlYXNlMjYtbWFpbnQKKzcyODA4IGIzMzI2ZmU2MzJlNWE3OTNlMTk2ZDkxNGVkMzgwYzJhNmI1NDYwNjAgcmVsZWFzZTI2LW1haW50Cis3MjgwOSAyZDZmZmY5ZmU4YWI3MzZmZjIxYTU4YWFmOWU2ZmU1OWJlMGE4ZDRjIHB5M2sKKzcyODEwIDQ1MDFiNjM4ZmMzZjI5NDBkMzJiZWI2YWY2NjE1ZmIxYjc3NzhmYTcgcHkzaworNzI4MTEgOWQ2NDU3ZjNhM2VkZjQ1YTBlMmM5NDllZmIwZmQ0OGRmNTM2NWVkYyByZWxlYXNlMzAtbWFpbnQKKzcyODEyIGViOWIxYWMzZDlkODcwNDZmZWZjZTU2NjhjZjMwYTE5YWUyM2UxZDggbGVnYWN5LXRydW5rCis3MjgxMyBjYzA1NTczNTYwMTRiZDVlYmQ3ZjJhNzUxZDczZTlmNjljMTI1NGViIGxlZ2FjeS10cnVuaworNzI4MTQgZDYxYWIwNDRmZGY0ZDE4MGI1NGU0MThkNzQ5OTcxYjg0MWUwMTBlYSBweTNrCis3MjgxNSA2MDQ0NDQ1MDJlYTAyNzdmMzg4MDM1ODQyMDVlNWQ5OGY1MjdkYzFkIHJlbGVhc2UzMC1tYWludAorNzI4MTYgMmMzNWI4MTZhYzBkYWFkYWI5YzBjMDgyMGFlYjYxZGE0MWQ5NTA3NSByZWxlYXNlMjYtbWFpbnQKKzcyODE3IDFiNjJiZmZkMmVmMmUwZDVmZTJiZmE0MjhjY2U4YmQ2ODY4M2U5YzIgbGVnYWN5LXRydW5rCis3MjgxOCA0MmRiYmVlNjZjMzIyYWM2NDU5MGY1MWMyNGQ2Y2Y4ZDk5YjJjNDQ2IHJlbGVhc2UyNi1tYWludAorNzI4MTkgNGZiY2U2ZDNmZTg2MWRlN2NkNWE3NjBjOTUwNzRiMTljOGI3YmJmYyBweTNrCis3MjgyMCBmYWUzYTc3ZDIwMzIxOTE5N2MwYzZlOTJjOTU5NjRlYzhiNGZkMGFkIGxlZ2FjeS10cnVuaworNzI4MjEgYjY2ZGFmYjQwNjQ5NDMzNWU4YjMzZWU1YjEyNGM1MjAwNjliM2ZkZSBweTNrCis3MjgyMiA2MDc0ZmI0MTE2MjE2ZDEyM2U3YWVlOTY3ODY4NjY4NTNjMGIxZTY4IGxlZ2FjeS10cnVuaworNzI4MjMgYzgzYTE3MmVlOTMxZTU3OWMzNzJjOGI5NjkwYTJmMGY3MDdmMmEyMiBsZWdhY3ktdHJ1bmsKKzcyODI0IGRmZTg4ZDIwMjE4MGVkZDlmZjU5YjQ1M2Y1YmZlZTEzZGY2MjQ3ZmUgbGVnYWN5LXRydW5rCis3MjgyNSBhYWIxMTdlNmJiMTZjMjdhMmIxMDFhNThhMGYyZWU3MWIzYzI3YWEwIHJlbGVhc2UyNi1tYWludAorNzI4MjYgYzQwODA3NDczYTM3OWQ0MWIzYjM1ZmIzYTk5MDY5NjQ4NjYwYWJiZiBsZWdhY3ktdHJ1bmsKKzcyODI3IDg0MGEwOWRlNjhjM2QxNDU4ZGRmZTU0OTI0MTZmZTVlNWIxNWE3MzIgbGVnYWN5LXRydW5rCis3MjgyOCBmMjI3ZmYzNGUzM2Q0OGYyMzQxZTUzZGQxNTM5OWI5Yzc3Y2E5OTJlIGxlZ2FjeS10cnVuaworNzI4MjkgMzU0MDQ1YmI3MzI2MTU4OWJkZTM1M2QxNzNmMDJjYjk0MzQ4MjYwZSBweTNrCis3MjgzMCA3M2RjNzI4NDk4NTNkMTRhMTU2MDdhNGJiZGMzZjE5Y2FjZDQ4YjZkIGxlZ2FjeS10cnVuaworNzI4MzEgZGM0N2Y3YzY1ZDMwOGFkOTRhMDc4ZTg1NjZmMzFiMTM0OTAwODA1MiBweTNrCis3MjgzMiA2MzY0ZTkxMWU0Y2IzNjFmZWQ1NDQ5YmE0MjljY2FiOGJmNzM1ODY1IHB5M2sKKzcyODMzIDI1OWM4NjU1YzU5MjMwM2E1NGUwMjdiMDEyOGQ2NWIzNTYxZDc3OTcgbGVnYWN5LXRydW5rCis3MjgzNSA5ODdiYjczNGUzNzZjMTg3ZDgxYjUxMGY0OTcyYzU2MzNkOTk1YWJjIGxlZ2FjeS10cnVuaworNzI4MzYgZTVkZDI0MjlhY2IzM2VhYTBkYmY2YzE5YWFiZjNhYjY4NDc4NWYzZSBweTNrCis3MjgzNyA4YmVkNmU2YmI5ODQyYjFkMzYyZDRlZmFmMDI2YjIxNDc1ZThlZTliIHJlbGVhc2UyNi1tYWludAorNzI4MzggZDBlYTc4ZTkyNGE2OTFhYTQ4OGQxODVlZmY0NzA4M2YyMTAxODQwZiBsZWdhY3ktdHJ1bmsKKzcyODM5IDA0YTRiN2RmMmQ0ZDMwZjY5MTZlM2YwZjZmMzA4MzFjMzFkNTJkZGIgbGVnYWN5LXRydW5rCis3Mjg0MCBjOGUxZDdmMjI1MmM0ZjBjNDg4NGEyNDU3MDk5ZDU5MjZmM2M0MGQyIHJlbGVhc2UyNi1tYWludAorNzI4NDEgZjI0NTRkNzEyOThhY2Q1OWYzY2EyNDliMDU0ZWZjNmU1ZDBhYWU4NCBweTNrCis3Mjg0MiBhYjFiNWFjMzQ0ZDc5OGM4MTQyMzZiNDQwNjk5ZTMwOTViNzU0MjhjIHJlbGVhc2UzMC1tYWludAorNzI4NDMgZWIyMGM5NTAwNmM3NjNjM2ZhMmVjOWM3N2E1Y2E5ZjIyNzdkZmE3ZiByZWxlYXNlMzAtbWFpbnQKKzcyODQ0IDI1M2VjYWU2NDc4YTRjNTc5NWFiZGU1ZjhiOTUyMTkxYTNhZDg3MTcgcHkzaworNzI4NDUgNDM1YmNhMDc4MWUzZGJiODA2NTY0MzM2NjlhZjk4NDNjMTU0ZmM0YSByZWxlYXNlMzAtbWFpbnQKKzcyODQ4IDczZjYyNzMxYjFlNmU0ZTlkNDVjYzczNzNiMGJjNjRkYTg3YWJmZDEgbGVnYWN5LXRydW5rCis3Mjg0OSBkMmQwMjhmNjVjN2M2MjE0ZjRiM2VkNWZkYWUyN2M0MDIzMDE3MWNiIHJlbGVhc2UyNi1tYWludAorNzI4NTAgMmJjYWMwOGNmYzZkYmQ5NjZkNjY5OWM3NDRlMDI4ZmQ1ZWI4OTQ4ZiBweTNrCis3Mjg1MSBlOTY1NzNlN2M1MTg3ZGU4YTdmODM0MWQwNjk1ZjMyYzBhNWI0ZjUxIHJlbGVhc2UzMC1tYWludAorNzI4NTIgYzA4YmJiODQwNjJlMDE1NWQ0NTJjOGQ3MGJmMzM3NzU1NzkxYzhjYyBsZWdhY3ktdHJ1bmsKKzcyODUzIDNlN2JjNzQ5MzRhMWM3MDc2NjYyNDg3NzI4MzRkODFlM2I2ODI4YTYgcmVsZWFzZTI2LW1haW50Cis3Mjg1NCBkNWM1ODJmNDZiYzk0YzhjNDcwMjUwMTJhMGUxMzlmZTE2YjA5MDYwIHB5M2sKKzcyODU1IDdjYzBmYjA3Njg0NzFhODRjNjk1ODQ1NWY3YTA4ZjU2YzM0ZTQ4N2MgbGVnYWN5LXRydW5rCis3Mjg1NiAxYjY4OWQ1Nzg4OGQ1NWU1MTE0YmY0YjQ2MzAyNmYwMWRiNjNmMWNiIHB5M2sKKzcyODU3IGUwNjQ1NGMyY2MwYmZmYWVjYjQyMWU4MzJmYzFiYTg4MzViMDUwN2IgcHkzaworNzI4NTggYjFlMzUxY2M1OWI3NDc1YTI2ZDBhOWUxMTcxOWVhNDRkMDA5ZGM5YyByZWxlYXNlMjYtbWFpbnQKKzcyODU5IDU0YmJmZDQxYmU2NjhkZmMyM2MwODM1MTAyMTFhY2NkYTdlNTQxMzMgbGVnYWN5LXRydW5rCis3Mjg2MCA5ZmQxZDU0ZjYxN2NmMGY3ZGMwNDUwODM2OTZiMzdiNTExYzkyMDU3IHJlbGVhc2UyNi1tYWludAorNzI4NjEgZGRjOWExNmZiZWE4ZGI5YWZkYTUyZDg1ZjU3YWYwYWZkMzUzZGU0ZSBweTNrCis3Mjg2MiBlNzhlMGJkYmJhYzQ4MTc2OGRhMDI1OGFjYzE4ZTczNGJjNGQyYTFlIHB5M2sKKzcyODYzIDBhNzhlZmZiNWUwYjUyMDQzZjJiNDc4YjUyY2I5NThlOTM4NDEwMDggcHkzaworNzI4NjQgYmYyODQzMDg4NTY3MTdkYjA0ZDlkZTVkZmE0NDJjMWZiNDBmOWRiZSBweTNrCis3Mjg2NSBmOWQyNjA4ZTI0ZThhMzdiNGI3ZmNmYjdlNjgyZTQ2MGRmMWU2N2JjIHB5M2sKKzcyODY2IDk5N2VmNjhiZmExNTE3OTBkN2UxODNmYmNlN2Y0MWE5MTkwMjk2ZDQgcHkzaworNzI4NjggMzNhN2NiMjBmNTU4Y2E1M2M1MDgxMGY1NDEwYWI5Y2Q5OWZjNDVjYSBweTNrCis3Mjg2OSAyNTJkODFhNGY2OWQyZWNiNjRhYWY5ZTJjY2EzMmY4MTYxNTdkMjI2IHB5M2sKKzcyODcwIDg0NjI3N2E0MjI0OTEwNDU1ODNkMTc1YzRlZmQ4OTBlNGU1MmI0NzEgcHkzaworNzI4NzEgMTUwOTg2YWIzZGIyODRjZmQzOGQ2N2ExYWNlMmYwNGMyNzgwYmFlNCBsZWdhY3ktdHJ1bmsKKzcyODcyIGIyNzhiNGJkZmYxZTIyMzk1YzUwZWRhNGYzZTQ3ODY3NTU5NTA3NjkgbGVnYWN5LXRydW5rCis3Mjg3MyBlMTdjMThhNmNhZWM0NzVkYzYzOGU5MTQ2NTM4ZTFjNzRlZTgwNGYyIHJlbGVhc2UyNi1tYWludAorNzI4NzQgODk2MzFmNjI3ODEwZThkNjIyMWU3N2JmY2NkNTM1MDU1NmVlZmQ5OSBweTNrCis3Mjg3NSBiZDJmYjFiZTEzMGVmNGZiZjM2Yjg3ZThiNDkwNmY4NGUwNTE2MDMxIHJlbGVhc2UzMC1tYWludAorNzI4NzYgZGJhNzY3YmMzMTU1ZmQyYmE0MzY4N2ZmY2Q3NDZlOWU5NmRiYmNmYyBsZWdhY3ktdHJ1bmsKKzcyODc3IGY5OWYzZDhjNTFkNThmYmYwZjRjMGQzMTE4ZTM1NmRhZWViM2UxZWIgcmVsZWFzZTMwLW1haW50Cis3Mjg3OCBkOWNlM2U3NDA2NzY1NTY5OGJhMDY3Nzk1ZTZhYTc5YmNkN2E2NTUxIGxlZ2FjeS10cnVuaworNzI4NzkgZGRkZjQyNGJkNjY5NjhjMDU5NWQ0MmVmNDQ0ZmM1ZjY0ZDViZTEzZCBsZWdhY3ktdHJ1bmsKKzcyODgwIGU3YjRhNDQzZjc2NGFlZmJkZTFmMWFiZjM0YWZhZGRlZmM2MmNkZjMgbGVnYWN5LXRydW5rCis3Mjg4MSA2MWJiZTVjOTA1MWJmZWYyYzM5YWM4MjM5Yjc0MTUwMTI1ZTI3NzBjIHB5M2sKKzcyODgyIGE1ODBhMmVlMzEyODQzODY3ZTQ2ZDI0OTA0ZDNmMmZkYjk5MDkzMTggbGVnYWN5LXRydW5rCis3Mjg4MyA2MjVhMDA2YTI1M2I4ZjE2NDFkZTg4MDY3MTQ1NmQ5MjZhODQzMWY3IHJlbGVhc2UyNi1tYWludAorNzI4ODQgOTg5NzhlNGZkNjBmYTFjYzc2MjE0OTU4ODEyN2MzOWZhNmY5NDRlOCBweTNrCis3Mjg4NSA4MzNlNDZjMTQ5OWJkNzgxMmExM2EzNjYzNjZkNTljMWU3NDljODExIHB5M2sKKzcyODg2IDQ4Yjc1ZWIwMjQzNGNhNjMxNDY4ZTExMzdmYmFhZGM0OTE2ZDE5MGMgcmVsZWFzZTI2LW1haW50Cis3Mjg4NyAzNDI4YWNkMzFlNDU2NDI1NzA2Y2VkOGNiZGVkYzdhMTQ4MTA5NTg0IGxlZ2FjeS10cnVuaworNzI4ODggMWUyYzNlN2ZlNjNjZjQ3YjQyZGE4ZDk0YzczMjkxYzgzMjdhZjcxNCByZWxlYXNlMjYtbWFpbnQKKzcyODg5IDNkMzA1ZGVjZTU2NzRkYzZkZDM0Mjk1MThkM2I1OTMwZGMyMTllZTAgcHkzaworNzI4OTAgNWRjMzNmNDY3ZmY0NmYyZjYzMDdkYTVlM2EyNjEwYzRjY2I3ZmI3NiBsZWdhY3ktdHJ1bmsKKzcyODkxIDljNzQ0ZGZjZjRkZTc2NWU3NzIzYjc1NWJmOTJiNTM3YjBkMGQxZTcgbGVnYWN5LXRydW5rCis3Mjg5MiBiNWUwMDBkMDNiMmM0ZjkyNmZjODJiYmQxYTA0ZWZjOWFlNDAzYWRiIHB5M2sKKzcyODkzIDNiZTM3ZWM0M2MxYmIzODVmYTViZmQ2MDI4NzUxNGNlYzYxNzFiNDMgbGVnYWN5LXRydW5rCis3Mjg5NCBlNjdiMWQwNzFlZDYxZjVmZGZiODAzNmNmNzBhM2JhMzQ5ZDBlMmEwIHJlbGVhc2UyNi1tYWludAorNzI4OTUgNTM4ZjRlNzc0YzE4ZTI3ZjY1ZWMyMjExYTQ2NjJkM2NlMTRmNGQ5ZCBweTNrCis3Mjg5NiAxZjQzNzU2MTljOWMzZDljMjI0NzU0NzMyN2M1Yzc0Nzk3ODgxYjE3IHJlbGVhc2UzMC1tYWludAorNzI4OTcgYjA1Zjg0YWQ4ZWNiMGMzZTBkOWVmZjFlM2IwN2ExMDU5MzA2OGUxYyByZWxlYXNlMjYtbWFpbnQKKzcyODk4IGY4Y2FkZmI0YTFhMjM3MzgzZTI2NDFjNjU2MTg4MmFhM2U3MGJkYjEgbGVnYWN5LXRydW5rCis3Mjg5OSA4MDI0MTc1ZTNjYzY5OTliMWFiNmFhOWZhMmIwNjIzMTJmYzBkOTJmIHB5M2sKKzcyOTAwIGJmZTQwMjg1OTNlMTExOGUxNWQ3YWNlNWNjMzBmOGJhMTU2N2FlMDAgbGVnYWN5LXRydW5rCis3MjkwMSAwNDY4OGFhNTY0Yzg1ZWYyYmI2NTBlY2I0NWQ5MmU3YTY2MDc1MDNlIHB5M2sKKzcyOTAyIDU2NTQxM2VlOWMxYjM2ZDY3ZmY2M2I2ZmY2ZDhmMTE1ZjZmZTQ4YmEgcHkzaworNzI5MDMgZDc1MDc5ZGUyZTQ2ZTQwMGIyMjhlZTk5OGZlMzliOGYzY2NhMTNlYSBsZWdhY3ktdHJ1bmsKKzcyOTA0IDczOTFkODhiM2Q4MmNkMTgyN2E4NDU0ODExNjUwNDM1YzcyNjU5MWIgcHkzaworNzI5MDUgYjljNzhmYjZkNzFkYmQxNjYyYjEyZGMxNWU0NjEyZDFkMDZlZWZhMCBsZWdhY3ktdHJ1bmsKKzcyOTA2IGViMGNkODNjODRhYmZmMzQ3NDQ3YjZhZGNiZjE1MzUzMGU5NjExMjEgcHkzaworNzI5MDcgMGM2MTdiN2E3MjdhZTBhYWFhYzllZGU2YjI5MmI2MWYxZWE1MzU0NSBsZWdhY3ktdHJ1bmsKKzcyOTA4IGRiMjEyODY5ZDgxNDZjZGFiOTBhY2VhMDBlOWZlYjQ4ZWMyMDMxNmUgcHkzaworNzI5MDkgYzc0OTY3ZmViMDIxYWE3YTk4ZjkyYWE2ZmFmMjRmMGQzYjUzMWQyMSBsZWdhY3ktdHJ1bmsKKzcyOTEwIDVhYjJmNmNhNjVhYWZhMDA4Yjc2NWVjMTQ2ZjdlNDViYjdkMjhkMDkgcHkzaworNzI5MTIgMTQ1Mzc2ZGYzYWQ3MjhmNzA1MmZkZDhiNmViYTYwMGE4MzE3ZmVjZSBsZWdhY3ktdHJ1bmsKKzcyOTEzIGYyOWJlNzEwYzE3NGQxYzM0Mzc3NzFkMTY5ODY1MTkxODcwMjljY2UgcHkzaworNzI5MTggMzlkM2E3NWZhODIxODQxMDJmMzQ2ODVkNWI2MzljOGRmN2ExNGUxZSBweTNrCis3MjkxOSA1YWVhNjAzYjIzMDg5M2UyY2E4Nzg3MTYzZDQzNTdkMTA5M2JjMmFjIHB5M2sKKzcyOTIwIDBkNzQ2MWMwNjNlNzllZGJiYmJjMzgxYWJiMmRjNzE4NjQ4NzdmMjggbGVnYWN5LXRydW5rCis3MjkyMSAxNDgwZmEzZmNhYjQwMTE0NTFlNTk5ZWQ2MmY3MTI1MzY1NmIyMDBkIGxlZ2FjeS10cnVuaworNzI5MjIgNWRkMWY2YjE0OTM5MWZhN2ZjM2ExZmFmZDMzYmUwOTJmZjYyZTU0YyBweTNrCis3MjkyMyBkYWRkODk3MGIzMDM3NTZiYzczNzZmNjM1MTYzY2I0NDQ5NDc2ZTc1IGxlZ2FjeS10cnVuaworNzI5MjQgMTY3NTlmNjJlYjIyNmNkNzAxZTAxY2ExZDc1YTUwZjQ2YjU3YjdiNyBsZWdhY3ktdHJ1bmsKKzcyOTI1IDI4N2NlMzBkMDhiNTQ0MDg0NmU2MTM2OTBlZWE1ZmVkOTQyOTVkNGMgcHkzaworNzI5MjYgNjk5ZGE2YzQ2N2RjMzhjNzdiMzI1YWMxMjBkYmRmMDU0M2YyZDJkNiBweTNrCis3MjkyNyAzNTU0MDRlYTExNDNmZWE3OTNjZjUyOThiZGE1NjlmZDQxY2IxYjRmIHB5M2sKKzcyOTI4IDRkNjc0NTI5MjJmOTNmZTdiZTRkZWE5MTE5MGI4NWU4YjdiNjUyODIgcHkzaworNzI5MjkgODRhNjBlNzEwNTUzMDgzY2I0NGE2ZDg5MTExMTRkMTU5MGE5NGU5OSBweTNrCis3MjkzMCBhYWMyNmRlOGI1ZDBlNGQ2ZTFmMmE2MTU0ZmMyZTk4NzE5MDBkYmQyIGxlZ2FjeS10cnVuaworNzI5MzEgZDNkYWFkMGU3ZjZmNTc4N2NmN2ZlYzg0YTZjZDAyNjBiMWUyMzljMyByZWxlYXNlMjYtbWFpbnQKKzcyOTMyIGNkZmQwMTdjZWU5MDhjOGZjMzUzOTFmZGZhZTY4NjE2N2Q5OGZlZTEgbGVnYWN5LXRydW5rCis3MjkzMyAzYjYxMjU2OWQ1MzYxZjcxN2MxODM5MWU4MGYyZTZhMGU5NzliYmY3IHJlbGVhc2UyNi1tYWludAorNzI5MzQgOTgzZDI1NjkxYjY4ZDgwZjg4NWM5MTdhNGRlYWFlOWFhNDI0N2QyNiBweTNrCis3MjkzNSBhMjdhNzM5Y2VmN2Y4NzlhYmU4YWQxMjYzZjk5MmI4M2E1YWM5ZDk2IHJlbGVhc2UyNi1tYWludAorNzI5MzYgMDI1ODM1MWRmYTYwNDQ5MmY0NWExNzc4NTcyZjQ3ZGIwYTQzYzI2ZCByZWxlYXNlMjYtbWFpbnQKKzcyOTM3IGFjYzA3ODY2YjIzMzAzZmRlZTY1ZThkZjBjYjRkZWEzNzU0NTcxY2UgcmVsZWFzZTI2LW1haW50Cis3MjkzOCAzNDI1N2E3NzNlYzBkY2QzNjlkYmIzM2EyZDZmMTM2N2U0MzM3MjFkIHJlbGVhc2UyNi1tYWludAorNzI5MzkgNjU2NDYzODJlNGUwM2RlOWVmMTViZThjOGEwNTc1ODYzM2I3YTkwZCByZWxlYXNlMjYtbWFpbnQKKzcyOTQwIGJhMzA1ZmU4ZTgzMTIwMzQ3NDQ5ZmIzNTk0NDQ1MTAyZWJlYmU5MjUgbGVnYWN5LXRydW5rCis3Mjk0MSAxY2NiNmQ2MjU3MTczMDUzYzMxZjg2MWI4M2ZiYjIzODI5YmMyNjcwIHB5M2sKKzcyOTQyIDkwMTJmZjdkNzVhMjE2NWQxYmU4MWYxNjIxZmU5NmEyYzFmYjg2ZmMgcHkzaworNzI5NDMgMjcyMWJlN2JlMzY1N2E0MjdlMThmYWY4YjgwNTBmNzY1MTljNzI1MyBweTNrCis3Mjk0NSAyOWU1YzAxNjVlMTM1MTZhYTI5NzMzY2FmOTA2M2FkMDA1Y2YyMDQ4IHB5M2sKKzcyOTQ2IDg4MzA1ZDczOWFlNTI2ZTNjNzlhODViMjhiYTJhOWVkY2ViMjYwYWUgbGVnYWN5LXRydW5rCis3Mjk0NyBkNzFmYTZjNDY4Y2M4YjFkODdjMTI2YzRiNGM2ZGExMTRjNDAwOWVlIHB5M2sKKzcyOTQ4IGZkZjNlYjc4MjJlNDU2YmQ1MjE0NWQ5NWVmZmMzNTYzOTc2OThhMTAgcHkzaworNzI5NDkgYTRkZDkyMTdlYTEzMWNmMWYzNzY1YjQwZTQ0M2JhOGQ2M2M1YzIxNSBweTNrCis3Mjk1MiA0N2RkMjkwZDJkNzQ1YjQ0MzY0NjZkNWM5ZGQ0YTkyM2I0ZmM2ZThjIHB5M2sKKzcyOTUzIDBlNzYxMDJmNDc4YjU3NzVkNDRkZjlhNjUwZThhMWU5NmQ3YzRjMzcgcHkzaworNzI5NTQgZjEzYmNkOTIyZjc2MDI5Y2Q1NjI3ZTg3ZWM3MzFjOTJmOTgzMTlmZSByZWxlYXNlMzAtbWFpbnQKKzcyOTU1IDNmNzllY2FiNWU1Mjk3NDI0OTA0OWU0YWNjNzAwNGY5ZmQ1NTJlM2EgcmVsZWFzZTI2LW1haW50Cis3Mjk1NiAyM2EzNzNjOGVjMWIzODhiNzAzNzYxZmY0OTJjZDRjZWU3NjE0ODJiIGxlZ2FjeS10cnVuaworNzI5NTcgYmE2Mzc2ZGZmNmM0ZjgxMTViMjliYzQ3MzNkYTkxMzI2Y2JjYmE1YyBsZWdhY3ktdHJ1bmsKKzcyOTU4IDdiNGI5MjFmMzMzNTY3NzM2NDEzNTEzMGQ5ZGU1MGRlZjRmMTdiZGMgbGVnYWN5LXRydW5rCis3Mjk1OSA2YWI5MzQ3MDAxMWJiOTRmZGQ1ZWYwZTc0MWE1NjcwOGVlNGMwZjBiIHB5M2sKKzcyOTYwIDQ4NjBmNzQ5M2I5MTQ3OWY2NDNlNWE3ODY1MzdiZjU3OTc4MDg2YzggcHkzaworNzI5NjEgMWMwNzhiYmNhMjMzZDc2MTA2NDgyYjM3NGYwYmVjMjQwNjY2NGM4MiBweTNrCis3Mjk2MiAxZDA5NmQxYjk4ZmQxM2UwMjdlZGI1ZjliYmIwYzY3NzdjMjFmNzQxIHB5M2sKKzcyOTYzIDIyZmQ5Njc1MThlZWMwMzFmM2JjN2M3N2I3NGE0Mjc4ZWM3ZWM5ZjQgcHkzaworNzI5NjQgYjYxZTZhZDVhZTcwZTlmNTJjNDY0ZTc5NzA4Y2U0MTI0MTk2MDY1NiBweTNrCis3Mjk2NSA4Y2IzNDk4NzNjZGFlMmJkNzhkYmEzYzc5MzgyMjM4Y2Q0Yjk1MjZjIHB5M2sKKzcyOTY2IDE1NGNhMzc3ZjUzYzdiNTBlNWM2NzkyMWM0NDI1Yzg4YTZlNDMzMzkgbGVnYWN5LXRydW5rCis3Mjk2NyA5YjhiNjBiYzBmNWI3MzE4MmYzYzY2NjBiZmFmOTJhZDM3M2ViZDY3IHJlbGVhc2UyNi1tYWludAorNzI5NjggYWY0ZmQyMzY1NGNlYjNmNDE5ZWNlNmYwM2E5ZmI5ZDU2ZGQwNGU3NiBweTNrCis3Mjk2OSA0Yzc3ZjllMWExOWRjZTgxOTZmZDgxMDNjMmFjMGQ1YjVlYmZlOWNiIHB5M2sKKzcyOTcwIDgzN2FkYjc2YTBlMWFjMGJjMjE0N2QyMDdkYTUzN2RkMTlkNzVjMjcgcmVsZWFzZTMwLW1haW50Cis3Mjk3MSAxMzkyMWY1MjY4NDgzMGEzYjgxNGE2OWY5OTgxMWIwNTlkYzhjYTA5IGxlZ2FjeS10cnVuaworNzI5NzIgZTZlM2EwZTkxYmVhYzNkMTI3YjVlZjIxZjE0ZjAwNGI0YmU3NTEzMiBsZWdhY3ktdHJ1bmsKKzcyOTczIDgyMWY3ZDQyYmY3NDIyYTBmZGU2ODNiZTdiZWFiYmY3ODY3YjJjNjAgbGVnYWN5LXRydW5rCis3Mjk3NCBmYzRlMjQ0M2Y1MDk2NGU5NjQ2MjZjNzY5Y2FkMzA4YzNmZTM3NmM0IHJlbGVhc2UyNi1tYWludAorNzI5NzUgNjAzODcwMjI4ZGFjNTRlMWE5NmM0OWRlM2Q1YmMwNzVlODIwOTk0NSBweTNrCis3Mjk3NiA2MGQ0OWIzZmQzYmZkMmI3NjM0NDMwNmExMGI3MTkwNTJmYzJhMDU4IHJlbGVhc2UyNi1tYWludAorNzI5NzcgMTAyOWQ5YWFkNDkxYzhmODI2Yzk2Njc3ODFkMTI2MmVhM2NmNWYyZCBweTNrCis3Mjk3OCAxZDNiMWJlNmE4YjI2YmYyNDk5ZDJjZTY0NDdkMjQ2YzFkNDM3ZWRlIHJlbGVhc2UzMC1tYWludAorNzI5NzkgNzBmYjg0ODg3MGFjZDQxNGFjYzU3YzE4ZjRhODVlZjQ5ZGMzN2RiZSBsZWdhY3ktdHJ1bmsKKzcyOTgwIGE2YjczZDgwZmJlMjc1YTlmNjNhN2Q3ZmNlN2MwMDc3MGYzOTZlYzggcHkzaworNzI5ODEgMTFhNTRkYWJmYjFjZDVkMzM3OGM0M2ZjNzk4NGRiNWEwMDZkZWE1MiBsZWdhY3ktdHJ1bmsKKzcyOTgyIDhiMjk5NjUyYjFlODVmN2QxMmU4NGVhMWYzMGI4MjliZjBhMjE1OTMgcmVsZWFzZTI2LW1haW50Cis3Mjk4MyA5ZGRmYTZlMDVmYjBkYTExOTk0MzQyMWExMmI5ZGMyODkwYTg1MzkwIHB5M2sKKzcyOTg0IGFjMGI4NWY2ODI5N2JkMzBmMWU1MGUyOWU3YWJlYmJkMzU2YWQ3ZjYgcHkzaworNzI5ODUgNWIyMTAwZTQ2ZDNiNDhhMDJmMDRjMGRkYjFhZjc0ODUyZDNlMjRhNCByZWxlYXNlMzAtbWFpbnQKKzcyOTg2IDYwNTZjOTZjMmQzMjc1NTg3MGE2ODVkZTliNzExZjE3NGFjMjgxNDEgbGVnYWN5LXRydW5rCis3Mjk4NyBlZDBhOWQ2ODQwMjI2OWE4OTJjMDQxNzcxMjM2YjRmZjZjNDI3Njg5IHJlbGVhc2UyNi1tYWludAorNzI5ODggOTk2NzM3OTI3MGEwOTQxM2EzNWI4ZWIyZmI5ZmIyNGJkMWU4NDg3MyBweTNrCis3Mjk4OSBjZTk5ZThlMjJiMWVhYzA5NjA3M2ZkMzcxNzU5NTI3NTdlNmMwNTM5IHJlbGVhc2UzMC1tYWludAorNzI5OTAgYjAwNDA0OTRiNGE2OWFhYzk2Y2E5MTY5ZDJjMGZlNzVjODI0YjE2OCBweTNrCis3Mjk5MSBmNTVkOGRlZDJkMDVlNWFjZWNiZjYxYWM0M2QyMzk0OTlhYWI4NzgzIHJlbGVhc2UzMC1tYWludAorNzI5OTIgYjcyNmZmZDQ5NTI0NTBkMjJiZjk4Yjk0ZjVkNWYxMjJjNTc1ZTU3OCBsZWdhY3ktdHJ1bmsKKzcyOTkzIGU5MGIwNjdkODNmMjUxNjRhYjY0ZTk1NjVmOTJlNDczYTFkYWVhYTQgcmVsZWFzZTI2LW1haW50Cis3Mjk5NSAzZWI1MjJkYzMzMzdkZWEyMWYyNzRlZDNkOWZiM2Y4MmMzMTg0ZWFmIHB5M2sKKzcyOTk2IDQwMzUzODMzOTRlY2ZhYTZhNzI1MGNmZTg2ZDZiMmI1ZDQxODIzY2IgcHkzaworNzI5OTcgYmMyNTE2ODEwY2M0MTEzYzEwZDgyZjI4MzdjYTNjYzU2ZDcxNWYwMCBweTNrCis3Mjk5OCBhMGEyNWRlZWNkYjIzNmUzNTUxYTdiOTc2NmNjY2FjZWFhMjE5MDQzIHB5M2sKKzcyOTk5IDYxOGU0NmE2OWYyNzhmMDQyMDM2OWRhZGQ4YjdjNDk1YWExMTUxYzggcHkzaworNzMwMDAgMmQzYzJjZjFiNTFlMzRjYzg3NzJkNzFiZDcxOTYyMzA3ODMyMWNjMSBweTNrCis3MzAwMSA4OGJkODc2MGIzNDJlYzg3YjdhYmYwODUwNDgzMTM3NDIzOTY1YmFjIGxlZ2FjeS10cnVuaworNzMwMDIgMjYwYzhlZDNmNWRmOTdhNjUzNWY3NDVmZDE2ZTQ4ZDZmNmE5MjBiZiBsZWdhY3ktdHJ1bmsKKzczMDA0IDFkOGYyNGJmNDM5OTYzMzYwZmNjMTM2ODkzMmVmYjljMTc5ZjA0ZTggbGVnYWN5LXRydW5rCis3MzAwNSBmM2M4NzFiZGVhNTcxZDZkNjljZDhkNDM3NWMxODY1NmZjNzQ0ZmMwIHB5M2sKKzczMDA2IGQ3NWFiMTY0MTNkYTQyYzE0N2JlYThhMjQ3NWVjNDM3NWNiNGY1YWEgbGVnYWN5LXRydW5rCis3MzAwOCAxZmExMzc5NDIwODVkZmQxZjIxM2NhZjVkYzAwMDk4M2U3OGI0ZjZjIGxlZ2FjeS10cnVuaworNzMwMDkgNzdiOTEyNGYxYzhjMTRkOGU3NmMyOGI5YWRiYTFkYTdhZWQ3ZDJjOCByZWxlYXNlMjYtbWFpbnQKKzczMDEwIGQzOWMxOTAzMTZlNzY5ZDljZmQ2MDUwNWYwNjRjZDA4MmI1NmJmZTYgcHkzaworNzMwMTEgNDljMGIwY2E1MTEzYjkzMzgzMTg2MTNmNjgxMjIxNjYwOWViZTRjYiByZWxlYXNlMzAtbWFpbnQKKzczMDEyIGM1ZDM0OTU4MmU5Y2FlN2IwM2Y1NDE2OTY3ZWI4ZmU3NjFkMzU0N2MgcmVsZWFzZTI2LW1haW50Cis3MzAxMyBiNjdhYmQ1MWIyNzA0YzBhY2JiMGY3Mjg0MmU5ZDk1MzIyZTZlMDFhIHJlbGVhc2UzMC1tYWludAorNzMwMTQgMTFkZTM1ZGEyODFjMTc1NWVlOTczOWExZjhhYTljN2ZkNDhlYzcwYyBweTNrCis3MzAxNSAyOGQ2NDE5MmFiNWEyY2Y3MmE5YmQ2YmQ5MTM5MDA3NTE4Y2RjMjQ3IHB5M2sKKzczMDE2IDljMTdlMzY2OTMzNmFjYTcwZWU1YjlmODk1Y2RjNmFlNmUyNmE4ODEgbGVnYWN5LXRydW5rCis3MzAxNyA3NmYxYmU5ZDI4MTgyYmY0OWIzMWUyODQ2ZWRhMmQxZTUyMTYxNTJlIHJlbGVhc2UyNi1tYWludAorNzMwMTggMTM0ZDEyYzJlNzQ1MDBlOGZhMmJkYmI0YmY1MDA4ZDU2MGJmNWJjMSBweTNrCis3MzAxOSAyMzU2ZTk4NWVjZTgzNWYxYmRlM2ZjODdlNDJkMDk4MmMzNmQ2ZWRjIHJlbGVhc2UzMC1tYWludAorNzMwMjAgZWM1ZDIyOGE4M2VmY2EyMWY1N2FkNzU1ZTFmMDQzZmRiMDRkNzNmYSBweTNrCis3MzAyMSBhNWE4OWM2MGQzMmU0ZWVmZjQ2NjkwNjhlNDQzYWJhNTA2ZGEyY2JlIHB5M2sKKzczMDIyIDY0NzUwMDY1ZWNkNGQxYzI5M2JlMTIyYTJlZTE1MDQ2MTE0ODU0YzUgbGVnYWN5LXRydW5rCis3MzAyMyAyNWEzMTU1ZGFjNzZjNTE2Mzk3NGM5ZWFmOWM2Yjc2MWJjY2Q1NjViIHJlbGVhc2UyNi1tYWludAorNzMwMjQgOWE0Y2UxZTcxYWQ4MTY1MTYyMTA5ZmJkMWIyNzY4OTk1Njg4OTNiMiBweTNrCis3MzAyNSA0ZWQyZWUwYjIyOTBhMDY0NmFkODE5ZmQ4Y2I4ZTgxMzNjZjI4ZTU2IHJlbGVhc2UzMC1tYWludAorNzMwMjYgZTQ3NDU4MzhmNjU1YjVmOTUxYjM1NGVhMTNiNDcwOTBiOWY0ZGJhNiBsZWdhY3ktdHJ1bmsKKzczMDI3IDdhMTM0NzFmNGU5YmQxZGNlNTJjYWY4NTU1NjJmZDc4ZGIwN2E2Y2QgbGVnYWN5LXRydW5rCis3MzAyOCAxNDZhMzliMjU4NDU4NWY3YjkyNGFhZWU5MGZmZjFkYTRiNzk4OWM5IHB5M2sKKzczMDI5IGM4ZmUzMDNjZWRhNDUxNThjNzFmZTc5ZGM0ZTkzYTdhZGU2MTI1NjUgbGVnYWN5LXRydW5rCis3MzAzMCA2ZTJhOGJkYWE1NDAyMDhjZDM5MDZiZTg4ZGQzYjc4NTMyNDQwMzdhIHJlbGVhc2UzMC1tYWludAorNzMwMzEgYjJlY2QyYmRmMTk1MmI5MTQxODVkODNmOGNkYjMwMTdhZGQxNGEzYyBsZWdhY3ktdHJ1bmsKKzczMDMyIDZkNGM0N2ZlYzQ0OWRhYmQ1ZmYyMzEwN2JlZjhlMjNjYWM3ZDYyZGYgcHkzaworNzMwMzUgMWE1MjFjMDZhNzBkYjUxNmEyNWQ2MmJmZGNlZDI3NzE2MWUxNjMwOSBweTNrCis3MzA0MiA2ZDZiNGQzNzgxZjI3NTg0YzUwNTIyNmMwOGJiYWZhMmMyMmQ0NWU2IGxlZ2FjeS10cnVuaworNzMwNDMgNjljZDgwZjhlMTMzYTI0MDIyMDNmZjYzZDYyYWJkNWIxYjNhMWZhMCBweTNrCis3MzA0NCBmNWQzZmYwM2RkNWJjZGQ1NTBmMWEyZjVkYTcyMjA1MjJkMjUxNjkyIHB5M2sKKzczMDQ1IDViYjVlOTM0MzViMDRlMTE4MTEwODAwZTg3ZGY2NTA1Nzc2NWY1OGMgbGVnYWN5LXRydW5rCis3MzA0NiA0MzFjYTUzOTlhMjQ0ODZjMGZmOGM4ZDQ1Njk4NDAzZjRiN2Q3YTdiIGxlZ2FjeS10cnVuaworNzMwNDcgYzYyYjY1MjI1MWQ4OTljMTM4N2Q1NTQ2ODVlNjdmZDdhYmE2YjgxZSBsZWdhY3ktdHJ1bmsKKzczMDQ4IDhkMmYzOWMyMWU5ZTUyZjJjNTAzYzRkZmQwODVkZjFhMmI2NGNiMTAgbGVnYWN5LXRydW5rCis3MzA0OSBiMDFhZWZmNzJiNjUyYTdmMTk5ODcxNjE5YmQ0YzAzYjE1NjViMzgxIGxlZ2FjeS10cnVuaworNzMwNTMgNTUzYzgxNTFjOWM2ZTAyNWE2NzJkNTNmYmM0MTQ2NGYwYTM2Y2JlZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwNTQgNDk1Y2YzYzI1ZWIxNDNiMDIyZjZmMjk5Mzg5NTIwMzllOTk5YjY1MCBweTNrCis3MzA1NSAyMzQ2MmIzODE3MWQ2OWVjZmEwOWNiMDUxZWE2NTUzYjVkMjQ1NGZkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA1NiA0MzUzZmQwODQzY2IzMWIzNTZhZGM1MGY5M2QyMjBlMmU3MjU1ZWYyIHB5M2sKKzczMDU3IDNmZmJhNmFkMzE5YzJlYWVmNTJlYTk0MjIwNDBmNTgwNjdmZDFmNDcgcHkzaworNzMwNTggY2E5YmU4ZmMwMjVkYzI3NzNjZGM0M2M1ZmUyNDU4YmMyNjQzY2M5NSBweTNrCis3MzA2MCBlNDc1Y2M3MWYxODhhNGE1OWZiNDEwYmI1ZjI5NGFhMzkwOGVkMzM0IGxlZ2FjeS10cnVuaworNzMwNjEgOTE2MmNkZjM0ZGZiZjQ1NjJiY2FlYjU5ZGIzODgxNTQ2NjcxYjQxZiBweTNrCis3MzA2MiBiNDA0MzA3OTIyYzZlOGM1MDhkZDA3NDY5MTkwYjhmNWExNTAxZDVmIHB5M2sKKzczMDYzIDQ5NDg1Zjk4YTMwODNiYzFjMTgyNDZkMjYyYWU1NTc0NzRkYmIyZDQgcHkzaworNzMwNjQgYTI1M2ZlYTg1YWYxNWNhOTllMDMzYTAwNTRhM2QxOWU2OWQ5MjQ5YSBsZWdhY3ktdHJ1bmsKKzczMDY1IGZhMmY5MTc5MDZlNzNiN2QxZGQ2Nzg0ZGNhNmZmZDk1YTFiODJmZjkgbGVnYWN5LXRydW5rCis3MzA2NiA0ZTk2ZDdkYWY3OWY0YzViNDQ2MmVmN2JmNGQ0ZjZlZTcyNzgzZWFiIHB5M2sKKzczMDY3IDExNDM1NGIxZTBlNTdkOGRjNjQyOTdlNzAwMDc2Yjc2MjA2NjkxODAgcmVsZWFzZTI2LW1haW50Cis3MzA2OCA3NTY2MjE4MTlmNWE1MWY0MTQ2YWM3YzVmOGUwMDRkOGZkZDNiYWQ4IGxlZ2FjeS10cnVuaworNzMwNjkgNWRlYzcyNDdiMjQ5NmViODVjOGFlMDliYmE5OTkyZTkwOGY4MjYwOSBsZWdhY3ktdHJ1bmsKKzczMDcwIGJmMGJkNmVhMWM3MmU1NTBlODA5NGJiOTUzMGQxYTJmNjFlMDZhODcgcHkzaworNzMwNzEgMWI0M2U2ZjJkMzI4YTk3MWY4MDk0ZGIzMmNlOTg5NWI0ZmJlYjc0MSBsZWdhY3ktdHJ1bmsKKzczMDcyIGQ3NGI4ZWRkN2E4Y2YwNDA2MDQ3ZjhmZmYwYTE1MjkzNDE1MzViODkgbGVnYWN5LXRydW5rCis3MzA3MyBlZjA3ODVjZmE2YWY1MWI2MmM0NzZmMmI5N2FhYjcxZjUzYTNhMTE2IGxlZ2FjeS10cnVuaworNzMwNzQgYmJiMGI0ZjhiNWUxMWFmNTE2NzY3YThmOTAyNTBlNzQyMTI5YjEzZiBsZWdhY3ktdHJ1bmsKKzczMDc1IDgxYmFmNzZkMDc5NzczZDY3NDdjZTUwODNiYmRmNzJlNzQ0MDRhZmYgcHkzaworNzMwNzYgNTE5ZjgwYjFmNWUzYTY0M2Q0M2VlYzE1MTdlZmQwYjI2YzA1YTJlNyBsZWdhY3ktdHJ1bmsKKzczMDc3IDA3MDUzMGU5ZjE4ZjI5ODQyMjRmNTM3NDJkNTQ0OGQ4YjRiZDFhOTAgbGVnYWN5LXRydW5rCis3MzA3OCBjM2EyNjU1NmRkMTRhZDJiNTk0ODE3YWM0OWJkNjlmZmUxOWQyNDAxIHJlbGVhc2UyNi1tYWludAorNzMwNzkgZjE0YjUwNWQzOWY0YWU4YTliNTUwOTIzZTAxNzgyZjJkOTU2NzBhNyBweTNrCis3MzA4MCBmNTFlYWFlZDZjNzFhNjBkNjEzZmZiY2M3YTFmMzVlMTBiN2E4Yzk5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4MSAyYWZmNzAwZTBjYTkxOGMwZDNiNGFiZTY3NmZiMTg4ZjljYWQxNmViIHJlbGVhc2UzMC1tYWludAorNzMwODIgYTZhNzRiOWE3Y2QzNzJiMDMyMzgxNmEzNjEyNTc3YmI0MDc2OGRlZiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODMgNWRiMDU1NmVkMTIyMzViYmZlMWRlYTM0ZmU0ZmNkMTQ2YmU1MTg4YyBsZWdhY3ktdHJ1bmsKKzczMDg0IDdiNzcyZWQ1MzZjNzY5Y2U5Y2UwMjEyNjZiNTVjNjA3OTI2ZGViZTYgcHkzaworNzMwODUgNzVlMTJjNWU0ZWFmYmExYTM0YjI0ZjA3ZTdlMDNiNjRkNjQzMWM3MyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODYgNTJkMjU4ZWIwMTc2ZmFmNDFkZjY2NzNiZGU1MjY1OWZjYTJhYzViZSBweTNrCis3MzA4NyBiNGRkNDI4M2ZmODIwZGRhMjNkZmQxNGM3N2U2M2UwNWQzYzY5MzgyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4OCAxZTJjMDM3MWNlNTczN2RhNDZkYjBiNDdiMWViZmY5OGJhYzMxMjExIHB5M2sKKzczMDg5IGY1MTdmMmU0ZmIzYmI1NmNiNjc0OTk3ZDljZDRjYTg4ZTFlYWQ3MzAgbGVnYWN5LXRydW5rCis3MzA5MCA1MGYzMTMwOGI1MGFlZDY1MTRmNjUwZGYyNGFkNDIxNzI5YWE5ZDYzIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NCA0MjExODEwZGM3OWNlN2FkN2UxOTRlNzBhODkwNzM1YmVmM2QxZDg1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NSA1N2EyZDI3MTNmMTk1M2EwY2E1NDI4OTI3ZTFiYzQ3Y2QyNjZjNjRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NyA1MjhjMDkzYWI5ODZkMjA3Zjg0ZWY2OTBhNzU3YzQ4YTVmNDcwMzRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5OCA3NTdhN2MwZjY3OWUzYmFmMzk1ZTA2OTVhOTg1NmEyZTI3OWE1MDhiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEwMSA2MDAxNjlhZTU2ODFkM2E5NThhOTkwNmViNjFhYWE3Y2NkZmFiZTJkIGxlZ2FjeS10cnVuaworNzMxMDIgZmI3OWVlNDU3NzU0MjgwOWEwNzgxOGU0MjA1OGZiYWU3YmYyZmMzNyBweTNrCis3MzEwMyA3YzQ0NDA1MzhhYmIyNDJmOTViMDQ0MzY0MzhkOTBlZTgzMjdkMjVjIHB5M2sKKzczMTA0IDg1NjdkZjNhNDNiNjEyMzBmMGU4MGY4YzBmMGUwOTc0Zjc5NWU1YzAgcmVsZWFzZTI2LW1haW50Cis3MzEwNSBjMDUxYmE2MTdmMDQ2MTk5MGFjYWUyMmQwMTZiNjM3ZDIwN2ZmNGY0IHJlbGVhc2UzMC1tYWludAorNzMxMDYgNjg0NmY5NWY4ZTA3N2E5YWQ0NTg3NWUzYWZmOTQ3ODEyZmNiYTljMCBweTNrCis3MzEwNyAxOGIzZDViMzdkODNmYmU2MjZhMTVmYTMyMzI1NTgzMmMyOWI1NTBkIHB5M2sKKzczMTA4IGM2Nzg1NGYxY2Y3OTMxNWU3MjQ4ODQwMWIxMjI0YTVkZDgxNzZhNzggcHkzaworNzMxMDkgNDQyNzg1OWQ4MTdhNzJjMzMyYzRlMDgwODc4ODY0YWI3ZjVkNmY0OSBsZWdhY3ktdHJ1bmsKKzczMTEwIDhjMTMwNjcxYzg0MjUzMjdmYmViY2FmMzYwZTAyOTE5ODdiM2ViMTEgcHkzaworNzMxMTEgOTM4Y2MxNmU3ZjhkZWJkOWU3OTM0OWYxY2E2NTVlNjY5NTJmZTBjOSBweTNrCis3MzExMiAzNTIyYzJiMGQ1MWQ0N2RlM2NmNmQ2NWQ5YTUxZjYwZDcwOTRmYmNhIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzExMyBiYmY4ZjI1ZWIzNzdiMjAxNTIxMmIyMDMyOGM1YTJkOWM1OTczM2M1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzExNCBjMzdhZTU2MmVmODIyZGQ1NTYwYWZmMTQzMzFkMjhiMDk1Y2JkMDEzIGxlZ2FjeS10cnVuaworNzMxMTUgMWRmY2M1M2U4MzZhMGU2MDI5MDQyYjFjZDFjMTRhM2U4ZTk2NTQ4NiBweTNrCis3MzExNiBkMGU5NjA3OWI2YWNhOWE5YjViYTU5YjQ4Y2YwZmE3MmZlZWUwNDM3IHB5M2sKKzczMTE3IGE4ZDljYzkzMjY3NTYxN2E1NDA1YzVkMGFhYWE5YTM0NTU2MTg1MjIgcHkzaworNzMxMTggNTIyOTVlYmNjYTMxMjQ0ZDAxZDQ1ZjYwZjI3ZTY0Nzc2N2JjZTBkMiByZWxlYXNlMjYtbWFpbnQKKzczMTE5IGE1NjNiY2YxYTYyZDJmNjljNDhkMjliMzk0N2Y0NWU1NTViYzUzMTYgcmVsZWFzZTI2LW1haW50Cis3MzEyMCBlMjVmYzM3NzY3MDQ3MDIyM2Q2NjA3ZGNhYWIyMzM0OWJiZDdkMWMwIHJlbGVhc2UzMC1tYWludAorNzMxMjEgZDUwNzFkOWY3NDA4YmRiODhkNTdiYzVlYzcyZDc2YjIxMDRmMzYyOCBsZWdhY3ktdHJ1bmsKKzczMTIyIDVmOGRlYzg0NmY0NmRlOWI4MTQ3Yjk5MTNmMDlmN2FkMmZiM2E2ZWUgcmVsZWFzZTI2LW1haW50Cis3MzEyMyA1NDI5NTI3ZTNhMjg4ZmQyMWE1ZDYxZWM0ZWE0ZTZhZjU1NzY2OTdiIHB5M2sKKzczMTI0IDQ5OTNlMTEwZmQ3Nzg1ODQ4YjhhMzZhYjQ1MWZkMTc5N2QwNmEyMTcgcmVsZWFzZTMwLW1haW50Cis3MzEyNSBjZWQzODBiNDAwMDQzNjJhN2E5YWM1MzgwYmY0OTAwY2QwM2FhNmMzIHB5M2sKKzczMTI2IGJmNGNmZTUxYjRiNTIxNzQ1MjUxZjZkZWU3MWI3N2Q2N2UwNGUwMmQgcHkzaworNzMxMjcgNjI1NDJiYjg4NzNhMWIzN2Y3YThiMGY0OGMwNDU3MTFkOTI2MTU2YiBweTNrCis3MzEyOCAyYzAwYmRhYWQ3YTlmZmZlMWE3Zjk1NzNiZWFkZWRkM2UxNmMzYmU1IHB5M2sKKzczMTI5IDhjODUwNDcxNWI4YTM4NzlkNTRiMDNkNDRiZjc5NjJiNzc0MDQxOGUgbGVnYWN5LXRydW5rCis3MzEzMCBkYjg4YTY3ZTM4ZWVhMWEzMWZiM2UwODllZDhkZWQwZTVjMGYzODJjIHJlbGVhc2UyNi1tYWludAorNzMxMzEgMjk5MDQ0MGEyMGY0MmExMDdkMDRjYjMyMTkxOTQ2YzQxNzlkYzg1ZiBweTNrCis3MzEzMiA3ZmE4MzI5MjdiOTFjODY0MTQ0NjFkODk0YzQ5ZmFiYmIyODM5ODVlIHJlbGVhc2UzMC1tYWludAorNzMxMzMgN2Q0Nzc1NTY4MGQ3ODQzM2I3MjcxODc5MTZiNjk0MGMwNWE2OWI5ZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMzQgZTEzYTRmNjJiNmNhY2NkYWRhYmE2OTlmZGZiNjNiNWY5ODRhYjUzZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMzUgMTI4MTQ3ZGNiYzFkNTExMzc5NTNiNjQ1ODNiZjczMTZjODE2Yjg1NyBsZWdhY3ktdHJ1bmsKKzczMTM2IDNkMTJmYjljZWQ5MjZjYWU3NWRhNjRhY2ViZTNlYzk1MzU5MTU0YzAgcHkzaworNzMxMzcgZjhiNWExNTMyYmVjNTYwNDRjOWVlMTU4ZGIwODYzMWJkN2ZiZDM1ZSBweTNrCis3MzEzOCBmMGY4NGFmMTU5NTdiYzgzYzZlM2U1YjgxMjc1MzE5NmIwNDIyYWUyIGxlZ2FjeS10cnVuaworNzMxMzkgYmE4MjIyODM5OTM4ZGIwNjk0MmYwNDE5YjBmYmQ2NzRjZmYxNDA5YyByZWxlYXNlMjYtbWFpbnQKKzczMTQwIDcyMzRhODNhOGIxOWZkOGYxNTUwZWQwNWEwN2MxZDIwODQxMDkyNjggcHkzaworNzMxNDEgMDQ0OWNiZTlhYzlkNmI1OTU1MDFjM2FlN2MxYjVlOTMxZjIzZDc0OSByZWxlYXNlMzAtbWFpbnQKKzczMTQyIDFlNzJhNTQwYzFhYTY3ODczNjVkMGFkYjYzY2E5ZjBkOTE2YWQ1NGEgcHkzaworNzMxNDMgNjIxYTU5YmIzNDA0NWJhYmIyZGYyOTMzMDA4MzI3YWU1YWZhNzBiMiBweTNrCis3MzE0NCA4ODViMGE5MmI1MDYyNjJmYzdkOThiOTYzYzBkODA3MDMyN2JkNWEwIHJlbGVhc2UzMC1tYWludAorNzMxNDUgZTgwZTI1ZTZhMTg3YjRjNWQ1YzQ1YWU0ZjAzM2I3MmVjYTM0YTQ1ZCBsZWdhY3ktdHJ1bmsKKzczMTQ2IDkwNDg5ZjI2N2IzMDBkYTRkOTVkZjRiNWE3MWVlOTRiZjkyMjgyZWMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTQ3IDQyODNiYzhjOTMwNjUxY2EzMTI4MDE4MzE0YmVmZWY1NmIzNjI5OTcgbGVnYWN5LXRydW5rCis3MzE0OCBiMmY5NjIzODU5NjlhMjA4YzJjMWNjY2YwYjVmODRlZDc5MmZmZjdjIHJlbGVhc2UyNi1tYWludAorNzMxNDkgNWU0ZDA3MDU2NWU3MjhjOTMyNGU2MzhlMjljNzY1YzY3YTBlZTFiOCBweTNrCis3MzE1MCBmNjMyZTAyYzI2NDJlOGExN2ZmYjFiNWI5OTg2MDAwYTVlMDQ5N2Y4IHJlbGVhc2UzMC1tYWludAorNzMxNTEgYjdiNzM1Mjk5NGM4ODQwNTBlYjU3MTc2MWFkM2M2ZGZlYTI2YmIyYiBsZWdhY3ktdHJ1bmsKKzczMTUyIGNmZTU3N2FhMTU2YWNjNGVkMDQ5NmFmMTEzMmJkMDg5NzRiMTFhYmIgcmVsZWFzZTI2LW1haW50Cis3MzE1NyAyZjdkOWFiZDY1NWJhYjlkMjJiNGFmZmYxYTAzOWFlYWU0NjA0MThiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE1OSAzMmE0OWQxMDgwMWVkMWVjYmQ1MGEzNTMxN2M5NjUzZDdkMzQwNjQ1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE2MCBjZjE5Y2MwNmIwOTMwOGRkMDZmNmIzMDEwYTQyOTVmZWU5OWFlNmE4IHB5M2sKKzczMTYxIDMzYThiYTkyNWM5MjA5Zjg1YzAwMGE2MGY5NDE1NGE4MTg1ZmE2YjMgcHkzaworNzMxNjIgNTFmZWNiYjdmYzg3MjY1ZmUwYzJjN2Q3MjU0MDM1OTM5YWQ2M2RmNCBweTNrCis3MzE2MyA0YTI3NzFmNmI5ZGQ3ODUwNDYzZmRkMTJlNWI4MjNlZTI2NDVlNGM1IGxlZ2FjeS10cnVuaworNzMxNjQgMmZiYzcwMzkzODJkMWM1OGYyODA2NmNmOGJlNmNmMzNiMjc0MTYyYiBweTNrCis3MzE2NSAyZDUwMGQ3YjIwYmU2ODZjNjJiZGM4YWYxZWMwOWIwNGU3MmIzYzg3IHB5M2sKKzczMTY2IDk4ZDhiOGI3NDlmNDc0NjVlMGRjMzJiMWRhMWVlMWI5MzE2MzkyNDAgbGVnYWN5LXRydW5rCis3MzE2NyAxNmU0NWQ4Yjc5NTdlN2VlMDAzMzQ1NGYzMGUyZDFjNTgyMzhhNzM3IHJlbGVhc2UyNi1tYWludAorNzMxNjggZmNiMjU4MGMxYWIzZThiMzI5YWE5NGQ2YTRjODE5NjFjZWZmOTZjZSBweTNrCis3MzE2OSBlMWE0NjYwMmI5ZDcyYWIwNjY1MjU4ZDIyMzYzYzViNjU1YjAxYjI3IHJlbGVhc2UzMC1tYWludAorNzMxNzAgMWEwMjliN2M5NzcwNTI3N2Q3ODlmN2NlMzhiNzg2NGVmNDM5MjJjMSBsZWdhY3ktdHJ1bmsKKzczMTcxIDY1ZjU2MWEzZTI5MWI4MGU3YWQzMTgxODRjMzI3MGVkMDU5MmY0MDMgcmVsZWFzZTI2LW1haW50Cis3MzE3MiBhZTU4NWNkNWNhNTRiM2ZiNDdhODU2YmIxNjIzZDMxOWQyZWUxNTZiIHB5M2sKKzczMTczIDYyNTQ0Yzk0NmVkYTJhZjFkNDM4NGE1MGY0MjcwMzFkNDYyOGJmZDQgcmVsZWFzZTMwLW1haW50Cis3MzE3NCBiOGIzMmZkY2MyOGQ0MWUzODM0ZWViM2EyZDQwMmI0ZDczYzY3MWI4IGxlZ2FjeS10cnVuaworNzMxNzUgOWMyZTA3YThkMjMwMmQzZjY5ZWUwMzY0NjZjYTQ4OTA3ZTQ4ZjdiNiByZWxlYXNlMjYtbWFpbnQKKzczMTc2IDdjMGU3OWU3MWNjZGM1YjNkYjdhMDFjZTZjOTQ2ZGIzMjBkMDk3MjggcHkzaworNzMxNzcgMDMwYTNmZTRiNjA0NTIxZTBlYTAxMDFmZmQ5NjUzMWM5MTIzY2Y3MSBweTNrCis3MzE3OCBiMDFjY2FjMzA0NzM1MDllMGMwMmFlNDBhMTBiYTZjNzRiYzkyMzY1IHB5M2sKKzczMTgyIGU4NmJjY2ViYzA3NTg2ZTg0ZjhjOTY4MGMzMTIzYjA5YzQyZDUxNmMgbGVnYWN5LXRydW5rCis3MzE4MyBiZmFhZjJmNGIyZTViZDViMDcxOTkxYzgxMjQzZjFlZjdkNzFiNDY3IHB5M2sKKzczMTg0IGJjNzRiMmY2MTE1OTU4OTBjMWM0ZDAyODJlNmJkN2MwOGFiZjMzNDAgbGVnYWN5LXRydW5rCis3MzE4NSBhMjk4NDJlNWUxMzhjMzc1MWI3YjVjYWNhZmQ5MTA5NjI4MWI1M2QzIHB5M2sKKzczMTg2IDVhMzJmM2QwNjE1OGMzZTRlMDIzOGE3NmU1MTZjYWRiM2Y1ODkzYTYgbGVnYWN5LXRydW5rCis3MzE4NyAxNGE0YjZmYjAwZmViYTgxODk5OGE5YTI5YzNiN2MzMWY2MjMwMTIxIHB5M2sKKzczMTg4IGFiZDEzYWNmZjVkYmUyYmE5NGZjMDNkYjlhODlhYjZhZTQzOTU0NDUgcmVsZWFzZTMwLW1haW50Cis3MzE5MCA0NDM5YjIyY2Y2ZWFmZGU3OTNjMTNjZjk4OGQxYjg2MDlmOGViNjI4IGxlZ2FjeS10cnVuaworNzMxOTEgMjg3ODg3MTk4ZTJmYTcyNGZmNDZjOGEyYjY2NTYyYzM4OWE1MmRiOSBweTNrCis3MzE5NCAwYzk0YzVjYTU1ZDU3ZjUzMTcyNWZhZmQzMzBlMWExZGRmNjQ4MDQyIHB5M2sKKzczMTk1IGY0OGEwNTIxNDI4MWMwODMzMTliMDBjNzllZmM1MjQ3MzM3ZWI4OWMgcHkzaworNzMxOTYgZDA0Mzc4ZjlmZGI0NTZiNzEwNDJiNmQ2OWY1YmM4MTQ0NDNlNGI0NiBsZWdhY3ktdHJ1bmsKKzczMTk3IDdkZjI5MjlhM2QwNmZjNDg1MmE1NTI0NzcwYWUxMzcxMTFiZmNlZDEgbGVnYWN5LXRydW5rCis3MzE5OCBiNzgyZmQwNWE4MDY0MjUyZTVlNjA4YWIwNzE3OGE4MDU3YTIyMjQ1IHJlbGVhc2UyNi1tYWludAorNzMxOTkgMGQ4ZWQ5ZTU1OGYyOGUzMmI4NThkYzQ2ZTgxMWVhMmUxZDMyYjJhMSBweTNrCis3MzIwMCBhZmY5N2U1MGEyMDYwYTc3YjRlZWIwODk2NjM4MTMwZjUzMzE5ZWVmIHJlbGVhc2UzMC1tYWludAorNzMyMDEgOTdhMGE4NTg5MDE0ZDdlZDJhNjIwMWZiMDBhOTU3ZDM4OThkMjViNyBsZWdhY3ktdHJ1bmsKKzczMjAyIDAwZDU3NzJjODY4NjYyNTI0NmMyYTM5ZmE0NjNmMGY3ZDlhNzQ4MzQgcHkzaworNzMyMDMgNWVjZGI4Mjk0MzRmOTg2M2I5YWRiM2MzOTg2ZTBlMGIxNGE0Y2VkZSBweTNrCis3MzIwNCAxOGQ4MjNlOGI2MDJjZWRlNjdlMjg2MmY0M2IxZmQ5ZGQ4ZDNiMWExIHB5M2sKKzczMjA2IGQ1YmYwOGM4NjFhNjQyNWU4ZjBkYWJjMDI2MTQyNDIyOWY3ZmUzOGYgbGVnYWN5LXRydW5rCis3MzIwOCAzZjYyMTE0MGVmYzRhMmUyM2U5YWI1MGE1ZjBhMGFmYmQ5MjgyMjdmIHB5M2sKKzczMjEwIDhmYTRjY2E5YTIyY2U0OTMwNjNkZmIxNzQxMDcxNDY5YmM3YmNmYzAgcHkzaworNzMyMTEgMDMxYjk2M2YyYmMyNzZkNWZlMDA1MjRkZjlkNDQ4ZWI4N2YyNDM4YiBweTNrCis3MzIxMiA4NDMxNzhjZjA4OTlkN2M5ZmU2ZTg0Y2Y5ODhhMDg2MDI4OTc0ZTczIGxlZ2FjeS10cnVuaworNzMyMTMgMGUwNTRjNjU3MDYyNDAyZDM3OGFiNDVkZDBkOTU1NGVmMjI3NmI0NyBsZWdhY3ktdHJ1bmsKKzczMjE0IGU5YjBkYjU1M2QwMWZhODBmMzk0NGY4MzYzMDVhNTU2OTY1ZjBjYTEgcHkzaworNzMyMTUgM2M0MTU3MzQ5MGNiODVjNzdhMmU5ZDg5YTY5MWFkOGJiMzI1YjU3OSBsZWdhY3ktdHJ1bmsKKzczMjE2IDUwYmVhNTMzOWYxODIyYzlkZjllOGExZjNmNzdlZTM3OTA0OWRhNWIgcHkzaworNzMyMTcgNzQyNDYxMjliZDIyMzNhY2FhZGU5MjNkOTFkNjU1ZmM0YTAwM2VlZSBsZWdhY3ktdHJ1bmsKKzczMjE4IGRkYjUwYzNiODZmMmUzZDFiZWMzZDU1MmIyNGMyMjdkNGFmNGU1NmUgcHkzaworNzMyMjMgMGIwNzUzMTY3M2FjZDJiNDVhZDVkMWE3MDlhNGEzMTVlNjA2YzE5MCBweTNrCis3MzIyNCBhMDdlYTgyYTViYjBjYzgxOTM4ZWQ4NTg0MjE4ZjJiZjg1MDY5NGRhIGxlZ2FjeS10cnVuaworNzMyMjcgMzljYjAxYjBmYzY0OGYzMWZhZTExNTNiY2NhYjY0MmQwOTQ1OWFhZSByZWxlYXNlMjYtbWFpbnQKKzczMjI4IDY4NmMxNWI4Njc0ODk4Y2NlOTkyNTBmNzc1YzIwZmY5ZjEyYmRlYTEgcHkzaworNzMyMjkgZWVmNWQxY2U2ZjRiNzBkOWJjZjIzNDM4ZmZjZDljOTY5ZjcxOTgzYiByZWxlYXNlMzAtbWFpbnQKKzczMjMwIGQ0NTI2OTk1NmVmZmUyMmRhY2Q1ZWNkZjFkNDZhMDVlNTEwZGM3NjUgcHkzaworNzMyMzIgZWQ2ZWQzYzgzOWY1YmM5M2FhYWQzZWMwNDdkMGY0YmQxNGQ3NDljMyBsZWdhY3ktdHJ1bmsKKzczMjMzIDNhNzg0YjIxNzIyMDlmM2M5MjQ0MDZiMWFjZDk0MWU3YzMxNGUyM2YgcHkzaworNzMyMzYgMDgwNWVhMjExMTIyMGU0MGJlNDFkOTYyNjg4YTJjMjYwOWJmNmY4MiBweTNrCis3MzIzNyBkOTkyMjgyOWMyMDQzNDgyNmM5YjAyMzI5NWE1ZDEwMDQ1ZTUxMzE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzIzOCAwM2JlYWQ3Mjk0N2VmOWI1YWZkYzU0ZjE4M2FmYjE2ZGUxYzQ2ZWU2IGxlZ2FjeS10cnVuaworNzMyNDAgODEwYzI1ZjE5Y2Q5NGIyYjkwMzAzNDUzZGRjZmNlNGZjNThjYjZjOSBsZWdhY3ktdHJ1bmsKKzczMjQxIGViZWI0ZDY3ZGJhZTk2Njk3MDdkYjMyOGZjODdlMDIzMTFiOGRjNDEgcHkzaworNzMyNDIgYzJjZWM1NmQwYjhhMTE1YWMyM2Q0NTY4ODIxNjhiZjIxNmEzOTY1OCByZWxlYXNlMjYtbWFpbnQKKzczMjQzIGNlZWYwYTc4YmY4NzlmMzAxNzQ0ZWI1YmYyNDQ3ZTNjMzU5NGJkNDEgbGVnYWN5LXRydW5rCis3MzI0NSAwOTRmZDMzNWE0NzEwMjA0NWIwZDc3ZGNhMDI5OWY2NzJhMjBjYjc2IHJlbGVhc2UyNi1tYWludAorNzMyNDYgZWY3NDMxMmQ3MjE1NWY3MTgwZDI4ZWIwMTMzNjAxODgzMmRjNDllYyBweTNrCis3MzI0NyBlNGE3YzQ4ZGU2MDNiZGQwZTAwYzEwMjgzMDdiZTRkM2MyMGE1YzhkIGxlZ2FjeS10cnVuaworNzMyNDggYWU5YjVkNGYxMjI5YWQ2YzJlNDJmMDc2NTRlZjU4YjBhOGQ5NmE3MSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNTAgNjAyNTU5ZmE1Mjk3ZDUxOTFjMjQ2MjdmMDExY2IzNjc4MDFjYWRmMSBsZWdhY3ktdHJ1bmsKKzczMjUxIGRhMzNiZWQ1ZDhjNDg2MjlkMjBlNzAwY2M3NzIyMWQ1ZTJjZjM0ZjIgcHkzaworNzMyNTIgMTEyZTFiYjU3ZTdiMmRmYTU3ZjAxNjU3MzI2NDEzZWUxMzA5ZmZiZCBsZWdhY3ktdHJ1bmsKKzczMjUzIDljMDkxNTQ0ZTFkZjI3OGVlYTc0ZGVlOGYxNDk4NmQ2NDU1MmUyMTQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjU0IDU3OGJhZjdkMzExNDczMjAxYjkyNGNjYjYwMzI2MWQ3Mzc4MDkyZjYgcHkzaworNzMyNTcgODFhNWIxZWM5MTA1YWFiN2JjYzNjYTA2MGI2YTExMDVhODEyMWMzMSBsZWdhY3ktdHJ1bmsKKzczMjU4IDEyODUzZGIzZWVhMzdjZWQ1NjIwMWI4ZGYwYWI2ZGUyOWExNjFlNzIgbGVnYWN5LXRydW5rCis3MzI1OSAxZjhkOTg3MjBhY2NjOTk5ZDAxOWQ3YTNkNzAxNjFiNDk5YjAyZWYyIHB5M2sKKzczMjYwIDg4ODhhNmZlOWRkN2YyOTBkOTNmNmU4NzhhOTBmYjQ4MmQ0ZTI4ODAgbGVnYWN5LXRydW5rCis3MzI2MSA5NTQ3ZjRiYmQ1YTQ1Zjg1OTgxMGM5ZTkwMTI2M2ZjOWIzOTU4YjkyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2MiAzMmUzNDQ4M2U2ZGI3MjMzZWU0ZTQxODM3NGNlNDQ1ODRkYzRiZGMyIHB5M2sKKzczMjYzIGNlODk1OTJhOTNhNDM2ZTJhMWE1ZTg3YWVkZjE5N2ZmODg0Y2U3OWUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY0IDMxN2ExNzU4NDA1ODAzN2M4YmY1NjNhMDdjZGM2ZjIzY2I4ZjFmNzYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY1IDc4N2YyN2VkNzJjMjhkM2M3YjUxNTg4NGMxZjNjNGY0NTUwZDk4ZDcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY2IDE5ZDhhM2E0ZTE0OTYwMmU1ZDlmZjYyMTdlMTRhMjMwYWRhZWFkMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY3IDdlZTU3OTlhN2I1MTk1NjEyZTJlNjNlNDdkNTE0MDZmM2ZlZmI3YmQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY4IDNkODM1N2NjZjU4MzFlZmQ5ZjYzNTk0ZGE5ZDQwZjhmNTMzYWEyYjUgcHkzaworNzMyNjkgZmFmYjk5MWJlYTZiMWIwNzk3ZTU4M2UyYWFiZDViMmI2MWRmYTA2NyBweTNrCis3MzI3MCA3ODNkNDA0NGRjMmRmOTI5YTU4Y2Q4NDA2MWUxNjQzMTUyYzQ4Y2FjIGxlZ2FjeS10cnVuaworNzMyNzEgMGViZTg4OWYxMDZmZTlkZmUwNzIxNTk2NDM0NGU2ZTUyNzVhNGI5MCBweTNrCis3MzI3MiBkYTY4NzFiOWQ4ODRjNGU4N2EyODcwNWI2YmU0N2RmYWE1NWU2MDY4IGxlZ2FjeS10cnVuaworNzMyNzMgNjZhNWJiM2Q4YThkODJkOGY5MWRjMDRhMGMxZjY3MjY0ZTk3YTMxOSBweTNrCis3MzI3NCBkNjc5YjYwOTA3Zjc2OThiMGMwYTljMTNjMzg5YjlkYWFjMjUwY2ExIHB5M2sKKzczMjc1IDNlMmI4ZGU0YjE2Y2M4MmRhYTcwOWMyMTFlNDRiMjdlZWJhMDNkYjMgbGVnYWN5LXRydW5rCis3MzI3NiAwNmY1ZjQyNmI4NDkxMTg2ZDVlODQyZjgxZGY2ODc1NjVlYTI4ZGRkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI3NyA4ODliNWZkOGRhMzA5YTU1Y2RhZDI2NTZhZjQ3MWJmYTY4YzVmZDgxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI3OCA4NTE2MzZiNjJhZDk1YWI3Y2NlZGJmNDU2NDE4ZWNmNzQ5Y2E0YWI0IGxlZ2FjeS10cnVuaworNzMyNzkgZDk0NWU2ZGU1MjI3YjZiYmIyYmY3YWU0NzAxMDEwN2I4YmU2NGViNiBsZWdhY3ktdHJ1bmsKKzczMjgwIGQ3OWZkZTEwNDFiZGMwYWY3NGY5MDhhNzQ4NjgxZmE5MTA2OTJlODIgbGVnYWN5LXRydW5rCis3MzI4MSAwNTRlYTQ3ZDZjYzczODM2ZDM3ZWU5NzQ1N2Q1YWYwNzFiODkzNTY5IGxlZ2FjeS10cnVuaworNzMyODIgMGFiZjU2MmIxZTZjZjZlODhlZmVlOGRhODE3MWNiY2EzNDFjMTZhOCBsZWdhY3ktdHJ1bmsKKzczMjgzIGY3YzllNzM0MjA4NDAwODJkMjc2ZjM3ZWY2MDQwYThkMDMwNWE5YjEgcHkzaworNzMyODQgNmJmYjU5NTIxMTM2NDdkMzY1M2Q4ZDMyZjIwMWFmYzBjNTAxOWU4NyBweTNrCis3MzI4NSBmMDAxOWZmNmIzZTViMzM0YmVkMGQwMTc4Yjk3OWIyNmM4NTBlODEyIHB5M2sKKzczMjg2IDFlZjE0MjFhNjEyMjU1MzBiNDI3ZWQ1MTY3YTFhYWM1YTYzZDdjNzggbGVnYWN5LXRydW5rCis3MzI4NyBlZjY1Y2M0MDJjOTIzMTYyYWI1NDJmN2EzMDgxMjQyOTI1YjBjZWU2IHB5M2sKKzczMjg4IGNmOGZmYWI0OTAwMzM1YTc3ZWFkNTI5ZDZhZjY2MWVkZTQ1ZjE1ZTQgcHkzaworNzMyODkgOTg1NTIxMzFmNjQxYmMzYjMxNDRlZmM4NzlhNDc5MjhkYTg0Y2U2NyBweTNrCis3MzI5MCA1NWRkOWVkMjNlZWFlY2YyODBhYWI1Zjk1ZDBhYzMyYmYwNmY2ZjgwIHB5M2sKKzczMjkxIDhmOTI4NzkyNTQ3Y2FmNGU2MDNiYjhmYTkxODM3MjU2ZjVmODIwN2YgcHkzaworNzMyOTMgMjdlMDg5Y2FiNzI5YTFkZmY0OTE3NGUyYTg5N2I4ZTE3ZTI5MDAyZiBweTNrCis3MzI5NCBiNTA0ZDZkMzRmY2Q3MDgwZjE2N2Q5Mzg0ZTQyMGEyY2U5N2Q1M2VhIGxlZ2FjeS10cnVuaworNzMyOTUgN2FkMmYyMmYxM2U2YTAwYzQ4ZGI3MGY1YzdjNTk1OTcyNDYwMDkyNiBweTNrCis3MzI5NiA2OTg1NTdjYzVkYzUwN2Y4YjIyNTgyNzNiZjU2M2Y3YTNmZmNmOTJhIGxlZ2FjeS10cnVuaworNzMyOTcgYzAxN2QxOTE2NzMxNDE3MzZiNWM3MDdiNGRjYmFkNjE3ZTdkM2M2YyBweTNrCis3MzI5OSBjYTUxOTk2MDk5ZmRkMjQ3NDQ4ZjYzYjc1YTNiYzk2NGRkODMzMzYzIGxlZ2FjeS10cnVuaworNzMzMDAgMjc5NWQ2ZmIyMWUyNjJkOWM3MDJmNDMyMjQ5ZjkyYmEwODU2ZTZhZiBweTNrCis3MzMwMSA1NDE4OWQ1YTY2NzQ3OTc0NDVkN2NjNTkxNzIwYjFjODk2ZDJlOTI2IHB5M2sKKzczMzAyIDI1NWRiNzBiYjMxNmFjMGUyZmVhZDM5MTNjYzE0MDBhY2YxZTExNmUgcHkzaworNzMzMDMgY2ViMjYyZDQ0ZDc0NjQxNDZkNjNiODRiZTQ0NGFjMmUyNjU5MzUxYSBsZWdhY3ktdHJ1bmsKKzczMzA0IDcxY2I2MDI5ZTg5Mjc5NTBlNzVkNGZhYzA3MGFhODgwZjU5N2Y2NGEgcHkzaworNzMzMDUgMWM3ZWI1YjYyMjlkZGY1MjkxMmQ3MWNjNDkyYTc2NWEyNmY0MmFhMSBsZWdhY3ktdHJ1bmsKKzczMzA2IDM1YzVjMWUwN2E0NGNmMzA3NWQzNjIyNjlmYjkwNjU4MDU3NTI5YTAgcmVsZWFzZTI2LW1haW50Cis3MzMwNyBmZDBhZDExNWUyMzgyOWFiOTZjOGMyZTZmMTlhNTZjNTk5NzYzN2JhIHB5M2sKKzczMzA4IDg2YjMyZTFmZDk5ZjBjN2Y4MWU5NTUzNjIzOTlmOTE2MzI3NDAwZDUgbGVnYWN5LXRydW5rCis3MzMxMiAxYjg2MDJjMzhmZDBjN2FhYTc4Njk0Yjc4YmQxYmI5YWQ5NTIzZDhhIGxlZ2FjeS10cnVuaworNzMzMTMgYzRhODFjZTNjODkzMjcwMjBjNzZiM2FkNTE3ZThmZmFmZWNhOWFmNSBsZWdhY3ktdHJ1bmsKKzczMzE0IGVhMzBhYWNiMzE4MTYzN2U4ZjllMDA5Y2NhZDI1NDRlMGE0ZjQ5ZDEgbGVnYWN5LXRydW5rCis3MzMxNSA4NzUzNGJmZDFiZThiN2JkZDIwYzkwYzgyMWZhY2FhNmI4OTA3ZWFmIHJlbGVhc2UyNi1tYWludAorNzMzMTYgZDJkNTRkYzhlNDAwZmFhNjE0MGJiZDBlMTY1NjNmNWE3YTRkM2JmNSBweTNrCis3MzMxNyA1MTc3YjY3ODBjYjc0MmYwMjMxZDUwYWJhZjhjYzFiZjkwMWVhNjBiIGxlZ2FjeS10cnVuaworNzMzMTggYjk2YzlkOGQ1Zjk4NWRiNmUzOGJiNjllYWNiNTZhZjZmZmI4Yjc3YyBsZWdhY3ktdHJ1bmsKKzczMzE5IDc2MGE4ODY2YWVmZmEyNDEwYTczNGYyMzA1OTY2ZDIxY2Q4N2VkZTEgcHkzaworNzMzMjAgYWIzYTIxMzM2YTg0ZDZiNzg4ZDU0ZDUxZGU0YjAxYmI3ODY5NGIxZSBweTNrCis3MzMyMSA0NDYwMzBmMzEwYTk1MTVjN2ExNmQ4OWY2MjJjMmQ4YjNmNzZhMTUzIGxlZ2FjeS10cnVuaworNzMzMjIgOTFkNGM1MTRlNzhjMDI5OTFlNWNmZWI2ZGU4YjUzOTQxNmFlMjY0NiBweTNrCis3MzMyMyBmNTgyODc0MmI0NmZlZDI0NzhkMWJjNGM4NGIwNDEzZWE3NjM2NGMwIHJlbGVhc2UzMC1tYWludAorNzMzMjQgZDQ5ZDQ4ZjMzNWM5MDA5YmFiZDBjYzZkNzc5YzFlZThlMTE0OGQwMyBsZWdhY3ktdHJ1bmsKKzczMzI1IDkxNDVmNThmNzQ5OTlhNzMzMGIxYjA1OWM3Y2IzNDEwNjY4NjFkZTYgbGVnYWN5LXRydW5rCis3MzMyNiBmYTY3YmY2NzRhZjM2M2U0NDY0NTVmOGRhNGRiNDJhNjVlYzViY2MyIGxlZ2FjeS10cnVuaworNzMzMjcgZWM4NDVjNGUzZDczNmI2YTkwZGM2NWNkZmQyNzc3YTljNGYzZGQxZSBweTNrCis3MzMyOCBiOGQxNjBhZDFjOTI1NjM2NTQ4MGY0Mzk2YTUwYzU4MWQ2ZWUxZWI3IGxlZ2FjeS10cnVuaworNzMzMjkgNjYyOTdhMDc0ZDhiZTljMDQ1MTc3OTJiOWRlZjFkYzAxNmZmZDQ4ZSByZWxlYXNlMzAtbWFpbnQKKzczMzMwIDA0ODA3MDA1NTNhYjIzZmNlZTg1ZjYzNzlmNTA1YjBmMGM5ZDcxMmEgcHkzaworNzMzMzEgNzQ0ZTk4NGYxODQxYWEwNWY1MDk0Y2ZmMDI2MTc4MjZhYWVhMmZiOSBsZWdhY3ktdHJ1bmsKKzczMzMyIDRmZDNhNGFlZWU0NzNlNzEwNzM4MjdiNGJiNGU0YThlMzRiMDA0YzkgcHkzaworNzMzMzMgMTNhOTg3NGQ4ZjQ3NmE0MmRiM2Y1NWYwMGI3M2YyN2I2ZTdkOWRiOCBweTNrCis3MzMzNCBiNjA5NWRjOGYzNWMwNzBjNDdlODIyMThiMWQzYWY3M2QzMGMyNTY1IGxlZ2FjeS10cnVuaworNzMzMzUgNGFjZDkzNmNmNmI2Zjk3MjcyNjBiYTViNDUyYjE3MzdkZjcwNTdhYSBsZWdhY3ktdHJ1bmsKKzczMzM2IGVkZjNkZGFhMzQ2YmZkMTJiMDU2NmY4YmZiODQ3ZTA3OTIyODJiZTkgbGVnYWN5LXRydW5rCis3MzMzNyAwM2QzOGEyYWJjNDZhOThiYjJlYzM0NmI5NWZkYjk5NjU3Njg1ZGUxIHJlbGVhc2UyNi1tYWludAorNzMzMzggNjU3YThhZTBiYmM5NDY3ODg0ZTQ5MDY1YWI0NzEyMzIzOTJjOTg0MyBweTNrCis3MzMzOSBmNDFiMjg1ZjJiNTlhY2ZlOGM2ZWE2MTAzY2Q1MDI2NzI0YmZjMTU5IHJlbGVhc2UzMC1tYWludAorNzMzNDAgMjcxOWE4OGMyMjk0ZjQwNGQxZGMyYjIwNmY0YWEyMGIxYTcxODIwYSBsZWdhY3ktdHJ1bmsKKzczMzQxIDY1NzkzYWNjMDA5NTAwMmZhMGY2MjJhYzFkOTIyYjVjY2FmZDYxZGQgbGVnYWN5LXRydW5rCis3MzM0MiAwYWRmMGZhNzk5M2JjZWE0MGIxYzRkZjVmNTY2MDA5ODJmZmQwMGFmIHJlbGVhc2UyNi1tYWludAorNzMzNDMgOGIzYWUzYTM4MjUwNzYxNDg3ZTlkNmI5MWU5MTZiYWU4NGUwNDAwZSBweTNrCis3MzM0NCBmNjMxNDc1YTI2NDJiM2IzOGI0NzVkZGM1YjMxNTViZTEzNmZjODNiIHJlbGVhc2UzMC1tYWludAorNzMzNDUgYjQ2MzVkYTMxMDk5OTIyODg5Mzc0NjQwYTZkNTFhZjNmMWM4YjdhMSBsZWdhY3ktdHJ1bmsKKzczMzQ2IDgwZWYzYjdhNGUwZGY0NWExZGUyMGM0ODY1YWY1ZjI1ZDZjYmFhYWEgcmVsZWFzZTI2LW1haW50Cis3MzM0NyA0NzU1Zjg5OGI5ZmUwZDQ5YzFkNjU2NWNkNmY1NDA2ZmIxMWFmOWI1IHB5M2sKKzczMzQ4IDBkZTY2ZmNlZjBmYTg5NzJlOTQzZjFkNzBlZDE0ZTM4ZjFkMjkxOWYgbGVnYWN5LXRydW5rCis3MzM0OSBlYzU5MTdmNzdhYzBlNjg4ZmYyNjM5OTY5ZmY4YTIyMjQ1ODBmMTZjIHJlbGVhc2UyNi1tYWludAorNzMzNTAgYTJmMjM3NmUxZDIwMWEyODhkNjUxOTc2NGM5MjZkNjUwNGIwOGEyZiBsZWdhY3ktdHJ1bmsKKzczMzUxIDYwMDM2ZTUwY2QxODY3NTU0N2Q5NWE4MzAyZTc3MmQ4MzVmYTU2MzAgcHkzaworNzMzNTIgMDAzMWJhMjEzOTBhMWIzYWVmOGM5OTk0MmI4ZGI0YmY5OTAzYjUzMSByZWxlYXNlMzAtbWFpbnQKKzczMzUzIDExMjg4MjM5NzlkZGU5NDMyNWJjMzJhMjVjYjYxYjc3OGEzYmE4NjAgbGVnYWN5LXRydW5rCis3MzM1NCAwZDliZDkxZWI4NWNiNWM0ZTQ0YTE4ZjI5YzJmMmI2NWYzOGY3YmFkIGxlZ2FjeS10cnVuaworNzMzNTUgMjA5YTUzOWViZmY4MDZjMjljNjMyNzllMDZiY2FjMDhhZmYwMTdjOSByZWxlYXNlMjYtbWFpbnQKKzczMzU2IDMyNDRmYzQ3NzNmNTc3MjVlZjNkYWVmMGRkYmQ3OTA5MjBiNjQ3NjUgcHkzaworNzMzNTcgYmI2M2ZkOTc5ZmNkMGE4MTQ0N2E2NzBlZjFlZDUyMDkxOWU4MDJiMCByZWxlYXNlMjYtbWFpbnQKKzczMzU4IDVhMzk4NWU1ZGFlM2I1NzMwMzZlOWVhNWVhM2UzNzUyYjJkOTExMjMgcmVsZWFzZTMwLW1haW50Cis3MzM1OSAxNDAxODJhY2NkMWY1ODE3ZWExOTZkZTk0MjcwMGViMjBkMWViOTI3IHB5M2sKKzczMzYwIDQxNzlhM2U2NjEyMzFmOTNjYzU1MDI3NmU1MWQ5ZTkwODU0NGEwZDggcHkzaworNzMzNjEgOTZhMGMzZjZlZjhiZWEyNzI4OTU1YzllNWYwYTdiNTM2Nzg4ZjBiYyBsZWdhY3ktdHJ1bmsKKzczMzYyIDAyNzQ0NDgxMGUzZjM5Y2IzNThlNjExNDQ4MTRjNTA5NWY1NDAzMTIgbGVnYWN5LXRydW5rCis3MzM2MyBhMWUwNjgxYWNiMzZmMWI3YTc4NzNhNDM0MDhlNjI5Yzg3YzdmYzk2IGxlZ2FjeS10cnVuaworNzMzNjQgNDFlNmNmNjg1ZWQxNmIyOWRlNzg5YTg2MWJkZWNjODg1ODM3MWM5NSBweTNrCis3MzM2NiAyMDE3MGJkMGFmMjU0ZGVkOTdhMWZkNzMzZWFjZTFlMDUyYjVkOGYyIHJlbGVhc2UzMC1tYWludAorNzMzNjcgNzI4ODlhMGI4ZjMyMmE3MzhmMTZkZWY4ODU2YzVmZGM2NWNiN2RmNSBsZWdhY3ktdHJ1bmsKKzczMzY4IDllZTllN2FhOGFiYzI0NDI1ODVkOWQ3YTlmYTI5OGJkMjA3NmUxNzYgcmVsZWFzZTI2LW1haW50Cis3MzM2OSBlMjA0MWM1YzYwMDYzZjkzZGVkMGMxNzdiMzAxOTQ2OWJhNzMxNDVjIHB5M2sKKzczMzcwIDc3MDA0MDhmNjVmYzQxZmZmNjM1NjE2MTgwZDc1NDJiMTc0YTg5NzkgbGVnYWN5LXRydW5rCis3MzM3MSBkNjZjYWZkNmJjMjFiMDk4ZDhmNzIwZGVmZjQ3MTViZDY1NDM4NTVmIHJlbGVhc2UzMC1tYWludAorNzMzNzIgNWVhODUwN2Q5YmUxMmEwZjY1Njc0YWY2YmIwYzE4ODIyMDk0ZDZlZCBsZWdhY3ktdHJ1bmsKKzczMzczIDYwYTBhZjMyYTY2M2UyYWQyNjU4NzY2MGRiNDI4YTI1Nzc5NTI3MTkgcmVsZWFzZTI2LW1haW50Cis3MzM3NCAxMmJmODdjZDI3NDMwZTBhZGY3MzY4ZmZiOTY1NjcyOTVkYjY0ZWQ1IHB5M2sKKzczMzc1IDRmOGE0NGI1MWQwYzFlYWQ0ZGM1M2ZlODUwYThiOTI1MTA5ZDc4ZWYgcHkzaworNzMzNzYgNTMwNmI4NGQ0ZmNlZWM2OWZhNzY4MTgwM2U1MzAwZGJkZTg4Zjc1MCBsZWdhY3ktdHJ1bmsKKzczMzc3IDYzNzBkNzFlM2NhMzI3MTg2MmE1OTI2MzA4N2ZjZGNlYWJjYzdiZTUgcHkzaworNzMzNzggNTVkMjJiMDI0NDY0ZGIyNWE1Y2M1MGQ2NGQxMTVmZDI2OGM3NWMxNiBweTNrCis3MzM4MCAwZTFiM2MyNGQzZTI3YTY2ZjJlOGQ3OGVlNzU0NTE1YzM1ZjEzNDVjIHB5M2sKKzczMzgxIDlmM2EyNTc0M2YwM2ZiNTBhOWYxMGI0ZGY2ZjJlMTcyZmVhZTIzMjYgcmVsZWFzZTMwLW1haW50Cis3MzM4MiBiYTEwMjU0MGVhMzczODhhYzA5NTVlOWQ4YTUyZDhmZWUwOGZmYTdmIGxlZ2FjeS10cnVuaworNzMzODMgN2NmODllZDkwZjlkMDY0YWU0YTFkMmM4OTg0ZDIwOTgwZDRmODNhOSByZWxlYXNlMjYtbWFpbnQKKzczMzg0IGRhZTliZTYzNzliM2U1ODQxODdkYTg2ZGVlMjY3OTAzYmE1YzRlMTMgcHkzaworNzMzODUgZmNiY2Q5MzEzMzhiODkzOWU5MjVkNjFmMmRlZTU5ZjhiZDBhMWQ0OSBweTNrCis3MzM4NyBjOTQ5NGM4ODc4OGY1Yjg1MmJkMmVmOWY3MThlY2FjNmFhYzI4MmY1IHB5M2sKKzczMzg5IGY1NzY4MDc0OGVjYmQ2OTU1Yzc2OTUxMGQ3ZDc0OGFlN2I4NDNkNmIgcHkzaworNzMzOTAgNjUyNTUxYWU0NzY3MDJmMzZhZjI1ZDY5ZjNkZjY4YWYxNjI2MDRhNiBsZWdhY3ktdHJ1bmsKKzczMzkxIDA3ZTJlZTJmZDM2ZDMyZmJjNGY1ZGJlZjQwYzM3M2NkNWVjMjk0M2MgcHkzaworNzMzOTIgNjQ5MmI2ZWNlNTk4N2FiZTRjMWY0MDY2ZmJhNzc0ZDZhMzAyYmY4MSBweTNrCis3MzM5MyBmMzQ3NTRhNzQ1YWUyYTJhODQ1Nzg5MzA3NTczNmUwZTE3OTZiNGU1IGxlZ2FjeS10cnVuaworNzMzOTQgNzYwYTcxMGViNmMxNTY1NGE5OWE1MjgyY2E5OGFiOWE3M2JjN2JhOSBsZWdhY3ktdHJ1bmsKKzczMzk1IDAxN2I0YjY0NGZhZjI0NTMxM2E0YTU3NzhjODU0ZTFhN2YyYjg5YTYgbGVnYWN5LXRydW5rCis3MzM5NiBjZGYyNTJjODc0MzM2YjA1YzFhYTQ1OWY0ODc5NWIyNDZlOGQ0NWUzIGxlZ2FjeS10cnVuaworNzMzOTcgMjRjOGQxYWFiYWRlMzE5OTM1YmQzYjdmMDVkNjQ1Y2I4OTBmZTgwMSBsZWdhY3ktdHJ1bmsKKzczMzk4IDkyMWU1NjlkMTIxNTc3ZjViMDM3NDY3YzkyNDQ0ZjQ4NWZmOTZjYTQgbGVnYWN5LXRydW5rCis3MzM5OSBkODMzOGE5YTFlM2E4ODEwMGRlNDMzMzZmOGZjNmQ0NTkzYTI2MWQyIHJlbGVhc2UyNi1tYWludAorNzM0MDAgZWI2MWNjYTVmNTRkZTNhYWFkYzQ4MjY1ZmYyZDQ5OTg4YzY2YjYxNSBsZWdhY3ktdHJ1bmsKKzczNDAxIGJlZTQ2ZmYwZTU3ODM1YWYzNDhmMTMxZjYyNjlmNmJiMjMwMWQ5YjUgbGVnYWN5LXRydW5rCis3MzQwMiA0NTNmZTQ4ODQyZDBiMTA4NDVhY2IzNWZlNTkwM2VkNzVjOTU4ZTE0IGxlZ2FjeS10cnVuaworNzM0MDMgNzVjNGQzYmM2Y2M4ODQwMzc3Zjk4ZDEzMGM2MWYwZDQ4Zjg1MWFhZCByZWxlYXNlMzAtbWFpbnQKKzczNDA0IDBjMzU3ZTNmYzNkMDE3YzY2YTk0MDE3Y2RhNzVkZTM2ODZjYzQzOWMgbGVnYWN5LXRydW5rCis3MzQwNSA3ODhlMTM5N2NlNzc3NDU4ZmIwZGM4ZjNhMGU5NmI1OGJlNGE4Y2YwIGxlZ2FjeS10cnVuaworNzM0MDYgYjQzMzk4ZWE1NDlkZTQ0MGU2Mjg1M2M1OGUwYjg4M2U2M2VkOTNiZCByZWxlYXNlMjYtbWFpbnQKKzczNDA3IDQ3ZTMzNjVlMjE3N2U4OGEwYTk5ZGUxMmEzMmY0NDU5NWFiYzVjM2MgcmVsZWFzZTMwLW1haW50Cis3MzQwOCAwMzJjMmU1ZTA2MTRmMzcwZTgwZjk2YTUzMDQ0NjliNDY1ZDE0OTJlIHB5M2sKKzczNDA5IDA0Y2NlYzA0NDFiMmE2Mzk0YWI5NGQ2YTY0MDUyNGQwMTQxZWM5NmIgbGVnYWN5LXRydW5rCis3MzQxMCAwM2E4NDhkMWNiNjgyNzZhODhhMDZmYjc2NzNiYzFhZGQ0YTUzYjA5IHB5M2sKKzczNDExIDI1ZWRjNWY3MmE3MmVhM2M5M2Q2NjNjZWY3NWZiOTg1MDQ0ZWZlOWMgcHkzaworNzM0MTIgMGI4N2U0MzhlMWI1M2UzZjgxMmNhZDk2M2E3ZmRiNjVkMTk4YmEyZiBweTNrCis3MzQxMyAxOWU1ZGZjZTBmYmIwMjk1YmQ5MDVkYzU3NDRiY2FjNTBmNmVlZDg0IHB5M2sKKzczNDE1IDI2ZjhhZTZmMDM3ZDZiNWUyM2MyMGU0NWViNzY2YTkxYWRkMWZlODYgbGVnYWN5LXRydW5rCis3MzQxNiBhNzY0ZGI2NDAyODQyYmM3NjE4NGExZmVjYTMyNzgyNjhhZjA1MmQ5IHB5M2sKKzczNDE3IDkxMjQyMzEzNTQ4MzgxNjA2ZWNiZDc3YzZlYjhkNTQxNmY1ODBjZjQgbGVnYWN5LXRydW5rCis3MzQxOCAyMjEyNzQwZjQ1NDQ2OWJlODExODc1Yjk1MjcxNWVkYTJmMjg0MzgxIGxlZ2FjeS10cnVuaworNzM0MTkgY2I2NjQ3M2NiYmY4OGQ5ZjAxODU3MWFiYWViMTdiYTllNjQ4MGVhMCBsZWdhY3ktdHJ1bmsKKzczNDIwIDNlYjg1MTA4MDhjOWQwZTQzMzBiNDRlNDdhYTliMWI1MzRmNzhlYTAgbGVnYWN5LXRydW5rCis3MzQyMSA0MGM4YzM1NDkyZjE0YTI4OTc2NTRmZWFkNzQxNGQzY2MxNzM4OTM1IGxlZ2FjeS10cnVuaworNzM0MjIgMjQ3ZjhkMjY4ZDU4YzQxYTI0NDYyYjNkZDc3M2E2NjQyNDhjYjVjNSBsZWdhY3ktdHJ1bmsKKzczNDIzIGYxMThhYWI2NTBkZDNlOWMyNGZhZmNjMzIzMjMyMDBlN2UxNWIwNjUgbGVnYWN5LXRydW5rCis3MzQyNCAwYmUzNzdlNjA4MDFiNmFmZWIzMjlmMmY0NzAwOWJlZjBhNjNkMGNiIHB5M2sKKzczNDI1IDAxNTEwMjlkZTFkOTE3NDBjNGUxNWZlNzE3NDdkYTJjMGZmZDMwM2YgbGVnYWN5LXRydW5rCis3MzQyNiAzYzhmNGY3ZTRhNjJlYjFkMGUwYTNhOTE4MTYxMTgxZWJjYzA5MDk4IHJlbGVhc2UyNi1tYWludAorNzM0MjcgZTQxMTljOTBiZjI5NTM4ZDAwMmJhZjlkZTlmZGFkNTczZDgxZDQ3YiBweTNrCis3MzQyOCA5MDNlZmJmNTExYjRmZWUxNzk0OWFiMjRmZGY0ZWI5ODFlOThmZmQyIHJlbGVhc2UzMC1tYWludAorNzM0MjkgOTAwMGEwODExNTk5NDFiZmU3YWZlZjI1ZjJhNGVkYTVmZTEyYWMwMSBweTNrCis3MzQzMCA0NjU4ZmNhYWZjNzMyODgzZmE5NzM3MDgyNDEwNTI4Zjc5ZmNlZjVkIHB5M2sKKzczNDMxIGI2MzRkMGVjOGQzNTE1ODMwN2U4MGI3MTNlNzVlZDBiZGQ4OWYyYmYgcHkzaworNzM0MzIgMzExMTA3NDQzY2MxMzZiMGMzYjUwZTU3ZmIxN2UxNTJjNmQyNWJlMyBsZWdhY3ktdHJ1bmsKKzczNDMzIGQ4YWE0ODU0ODVhNmNmOGFhMGM0NzNkNTEwMDBiNmZlNWNjNmE3M2IgbGVnYWN5LXRydW5rCis3MzQzNCBlMTgzMThmOTg1ZWQyZTFjZWQ2NmYwYTYyMGU3OWY3ZDIzMDM0ZDBmIHB5M2sKKzczNDM1IDFiM2ExOTAzN2Y3NjQxMzVkMTRiODIxY2FlMTc4ZjBhNDU0M2JlNzIgbGVnYWN5LXRydW5rCis3MzQzNiA0MzczZjBlNGViMjEzMmI5MWRlOTc5YTVkMDFjNzk2MWRkNjk1OTRiIGxlZ2FjeS10cnVuaworNzM0MzcgYzdhYzcwYTk0NGI1MDFkOTFmMDdmN2Q0ODkyZGYwMjNkMGNkMzIxNyByZWxlYXNlMjYtbWFpbnQKKzczNDM5IDRhNTBmMGJkYzgwNjNhN2E2OTk2YTUwNjJiOTQxYzRmNjE0MTJlYTAgbGVnYWN5LXRydW5rCis3MzQ0MSAyMDM0M2FhMmEzZWI3OTNkMTRmZDE0YjhmODAwYjljZjNjODBjZmI3IGxlZ2FjeS10cnVuaworNzM0NDIgY2I1YWU0NDAxZWJmZGM2OTMyOTIxYzc5YTc3N2JiOWUzMmEzODg4OSByZWxlYXNlMjYtbWFpbnQKKzczNDQzIDk4MTRkN2Y2NTlhMDBlZGZhNzcxYjkyN2I5YjliMWM2NjIxNTRkYTAgcHkzaworNzM0NDQgMjc3ZmQwNjRiNTMwMWE2MGE2ZTA4YmMyNGI1NzUzNzg3MDU3NzQ0YSByZWxlYXNlMzAtbWFpbnQKKzczNDQ1IDA3NmRiNGRlMDM3YWIxMDFlZDBlN2JmMWZmN2QyOGVmMWRiY2IzYzEgbGVnYWN5LXRydW5rCis3MzQ0NiBhZDJhNTk2MDEyNmRhMjFlZDY3ZDE4NWQ0NmU5ZDBlYTBhZWJhY2VkIHJlbGVhc2UyNi1tYWludAorNzM0NDcgNDVjMDVmZGQ5YjMyYThmNjVkODhmN2U1NmEwODZhZmFlMzIzYmZhOCBsZWdhY3ktdHJ1bmsKKzczNDQ4IDMzZmVmZGU3OTNiMGNjNGVmYWIyMjY2YmJkYjczNmNkYzg2OGYxOTUgbGVnYWN5LXRydW5rCis3MzQ0OSBlZWE0ZDIzN2MxNmQ3NTExMTM5Y2IxMmFlZWQ2NWE3NWViMWUyYTA0IHB5M2sKKzczNDUwIDg2NTUwNmYzNmU1ODhkZGU1MzAyNTUyMGM2OGVhNTZmOTVlMzU4OTYgcHkzaworNzM0NTEgOTgyZjdiYTBlMTRhMjdmNmEwZmZjYmJhZWYwY2RjMDlmN2VkYWFjMSBsZWdhY3ktdHJ1bmsKKzczNDUyIDM5MDJlNGY3NGVlMjgxN2EyMWI2ZDAzZTk5Nzg3MGU0YjczZmU1NWUgcmVsZWFzZTI2LW1haW50Cis3MzQ1MyBmMDE5NWRhYWRmZmJiMjU4ZjY5NGFkODdiM2U1NTlkN2I2YTVhZjljIHB5M2sKKzczNDU0IDA5ZTVmODhjOWJkYmVkNDZhZWM0ZTk0YzAzZmU0NGRjYWNlZWQwZmEgcHkzaworNzM0NTUgYzU2ODJjZTIzNDY3NTliOGNhMDNhM2MwMTVkZWEyYzRkMjUxMjI3MiByZWxlYXNlMzAtbWFpbnQKKzczNDU2IDZiNjcwMWJhMTIxMWVhNWY4ODJmNzZjZTExYTEzMDJkYTA4YWUwZTIgcHkzaworNzM0NTcgNGM2Y2RiYTFiMGJiM2NhMDM0Yzc1NzgwMzBiZTBhYjlkMDE5OTlmMSBsZWdhY3ktdHJ1bmsKKzczNDU4IGMzODdkYTgzN2M0YTIzZmZiZTc3YWE1YWNjMTJkYmQ4N2U1NzlhNmYgcHkzaworNzM0NTkgYzE5ODZiYjQzMDBiNzIyYmZhYmFhYmY4MGI1MzVkOWYxZTA0ODk2ZSBsZWdhY3ktdHJ1bmsKKzczNDYwIDZmMzA1NGFmYTFhMGQ4YWIxMGY5YjYwZTRjMWI2OTc2MTJlNjEyODggbGVnYWN5LXRydW5rCis3MzQ2MSBhNWYzMWIzMGM3YzNjY2QyOWNiZWI1MDAwY2Q4OWQyZDI4MDk0YmRjIGxlZ2FjeS10cnVuaworNzM0NjIgYjBjYjNjYmRmYzQ3YWI5YjRhYTgyMDg2YjYzYzFiZjRlNGU2MzdkNyBsZWdhY3ktdHJ1bmsKKzczNDYzIDIyYzc5MzQxZTU4MGNhMmMzYzViMGM0NmVkMjc2YmQxZTk4MDA3ZTYgbGVnYWN5LXRydW5rCis3MzQ2NCBkMTFkYmNmODQzZGY4YzA0Y2RkZTg0YzJlOThhNDVkYzE0OGRlN2RhIHB5M2sKKzczNDY1IDMzNDg5MTE3ZGE5YzU2MDljNmQ4NTA2ODA1Njk5OTcyYzYyODY3OTYgbGVnYWN5LXRydW5rCis3MzQ2NiBkNGM2NmZmMTI5YzJjODMzMDU4NzI1YjBhYmI2MjYyYjU0MzQ4MzllIHB5M2sKKzczNDY3IGFkNmY2YzI2MTg3Zjk0NGE4OTNhZTAwZWJmMWQwOGIxNTFlNmMxOTUgcmVsZWFzZTI2LW1haW50Cis3MzQ2OCA3ZWRjMzc4ODNlOGExZDZkM2UxNWM5NmM2OTM1OGFjNTE2Njk1NzVmIHJlbGVhc2UzMC1tYWludAorNzM0NjkgMzE1ZDdhZTQyZWE3MDI1MzUyNzU2MmMxOWFkMjMzZWNjNTEyZjRhMSBweTNrCis3MzQ3MCBhNzVlMThkODE2NmFjMmFmZmExMWYzZDU2ZDE0MzQwYWE0ZTI4MjUxIHB5M2sKKzczNDcxIGEyMzBmOGQ5YjQxOTI4YzUyY2Y4YjIzZWY2ZTBiYmEyNDc4NjU0ZWEgbGVnYWN5LXRydW5rCis3MzQ3MiAzNzIyM2VmNGQ0NzBkNDcxN2QwNDQwZjk0NzFkZjdjNWYzZGI0NjM2IGxlZ2FjeS10cnVuaworNzM0NzMgOThhNjZmYTAxZTBhNGQwYTg2MDUxYjUyMGE0ZTc1YzhhNjlkMDEyNiBweTNrCis3MzQ3NCBiODE4OTNkMzdlN2E5ZTk1OTAwYzgyNGM5ZGU3YmIwYjM5NjY1YjkwIHB5M2sKKzczNDgwIGRjYzk2MmI0ZDhmZjkzMGRlMGEzNTQ4OWQzNGJjZGRhNGRkNjI0ZDIgbGVnYWN5LXRydW5rCis3MzQ4MSBlMjVhNGQyN2MzOGI2MDY2MDZmN2NmZjEyMDFkNDUzMzQ0MmJlYTBjIHJlbGVhc2UyNi1tYWludAorNzM0ODIgNWZhZmNiMzJmMDYyMjdjZDlmNTc4M2FlODZlNjU5YjJhNzlkNDRiNyBweTNrCis3MzQ4NSBlN2QzOGM0MDgzNjE5YjNjZGUzZTBiNmI3YzFlMDM5NTMyMDlmZjJjIGxlZ2FjeS10cnVuaworNzM0ODYgNmRkNTA3Yjk1MmNmOTA0NWU1ZTA0YmZlZTM4NzQ0NzQwZTRmZjI1OSBsZWdhY3ktdHJ1bmsKKzczNDg3IDA3MjQ5ODg5YTc3M2YxODQ0ZTM3MGRjMTI4NzAwM2Y4ZjA3OGRhMzUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDg4IGUxYzIzMGYwMmZlYjlmZGVjZTc4YzBkOTAzODJkMDdkZjcxMWI1NTYgbGVnYWN5LXRydW5rCis3MzQ4OSA5MTNjOWJmOThkNjA5MDE2YTAxZWM2NzA3ZWQ3M2Q0N2U4ZGI2M2M4IGxlZ2FjeS10cnVuaworNzM0OTAgN2QyNDVhNDIzZTk2YzY3YzZjYjQwYTk5MjQ4NjkzODQ1OTE4YThiMSBsZWdhY3ktdHJ1bmsKKzczNDkxIDAxZDEwNzA1YTcxYjFhMjE0ZjMyY2Y3ZDA0YTViMmE0NjgxYzE0ZjUgcmVsZWFzZTI2LW1haW50Cis3MzQ5MiAzZTQ1NDBiN2ZlYzlmMWFlNGYwYTU4MjJlNzUxYTY2NjE2NmZlODFiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ5MyBmMzIzYzI4MGRmNTg2YTQ5MmRjNTM3NTI2N2Q2MzUyNmE0N2RiYTE1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ5NSBkNjYyMjc4OWFkMjc1NjIwZmFkY2UwMzY1ZWI5ODFmNWE2MTdlZGIyIGxlZ2FjeS10cnVuaworNzM0OTYgNDBhZmI2NTUzNmRhMjZiMTdjYzllODZmMDdmMWZmZDBiMmJhNDdiZCBsZWdhY3ktdHJ1bmsKKzczNDk3IGE5NTBhNDQzNGY4YmJmYTc1ODA1NWQwMGJlNDg0NzZlMTUwNDJhZDYgcHkzaworNzM0OTggZDNiNDRjZTU0M2FlNDQ1MTVlYjRmMWQ5NWVlODlmMGVlMzU2NTEyNyBweTNrCis3MzQ5OSAxMWMxNmJlNGQyMWMyMTNjZTIyY2I1NjI5NTllM2NmZDk1YmJkMjU3IGxlZ2FjeS10cnVuaworNzM1MDAgZTQ4YmE5Y2U4ODM2MjQ1ZWI2NWJkN2Y2OTFmMmU4MmUzYTczMGEzOCBweTNrCis3MzUwMSA4NzAwMDg5ZWNjZDRkM2UyYzgxMTc0YzU3NTM2MTBhNjE1MDMzMmUzIGxlZ2FjeS10cnVuaworNzM1MDIgOTE3NDk3ZTI1MDljZDY2ZmJiNmRhMThjYmI0Mzg3NGIxMGM2NmE2YyBsZWdhY3ktdHJ1bmsKKzczNTAzIGM0ZmIwNzEyMTQ3ZmQyZTVhZDk3ODE5YzRiMmY3ZGFkMWE5ODg1MTQgcHkzaworNzM1MDUgYWNjNThiNTkzYmJjMWJiYmViYzI5ODBkZjk3NDY4NDJmOTMyZGY1ZCBweTNrCis3MzUwNiBiYzYxZDIzMWE2NTI2YmM5NjdjNWZmM2I3ZTM5ZDUyYzEzMDAzZWVmIHB5M2sKKzczNTA5IGUzM2I2NTYyNzE4OGJmYzBiMzI3MzQxMTk1MmVlZGMxMTU3MzU3Y2YgbGVnYWN5LXRydW5rCis3MzUxMCA1Y2I0ZTUxYTQ0MDg1MTI3Y2FhYmIxOTRjMWE0NDRiNWMxNzRlNDg2IHB5M2sKKzczNTExIDhhZDdmYzgwOWY2ODRmOWI3ZjFjNTQ1NGZiZTM1ZWE2YThkOWQ2NWMgbGVnYWN5LXRydW5rCis3MzUxMyAzODY5MjJiNjI5YzM5MDU0ZTA5MmRlMmYxNTdhMmYwZTFjYzQ4YzhlIGxlZ2FjeS10cnVuaworNzM1MTQgNTE0ZmM5MzY2ZjJkYmJmMjQyZTg5ZjFiNWRhNzY4MWIwNzg1ZWI5ZCBsZWdhY3ktdHJ1bmsKKzczNTE1IDE3MzJhNTRhMDI3MjU4ODJiMmVlZjBkMjZiMmE3ZGI5YjU4ZDk5ODUgcHkzaworNzM1MTggZGMzODE3YThmNTUyZWI2OGY0YWQ2MGIyNmEzYTk3OTc0YTRjZjA3NSBsZWdhY3ktdHJ1bmsKKzczNTE5IDgwZDBmMjAyYjllZjJhNjNmMWI0NGMxMTQ3NmRhYmEyMzk5Y2I0ZjAgbGVnYWN5LXRydW5rCis3MzUyMCA0NTUwNmJlNDQ1MTQ2NjIxOWYxYzgyMTYyNTQ5MjkwYjZmZDUyNGM3IHB5M2sKKzczNTI0IGRmZDliOWU3MWIyZWIyYjZkODQxYWM4MjMxODZjYzA5OWEzYzMzNDMgcmVsZWFzZTI2LW1haW50Cis3MzUyNiBkYmZlMGFiY2Q4OTNhMjYzYTEyN2YzZTI5NjI1ODA0M2ZmODhlZjgyIHJlbGVhc2UzMC1tYWludAorNzM1MjkgYzk0NTk0ZTZlZGI3MzI4MzlmMWU1MmJlODc5MmI2NzAyNzc2YjVmYiBsZWdhY3ktdHJ1bmsKKzczNTMwIGU3MzcxMzUzYTMwMjBlZDE3YzQ1ZDMzMWVkMzliMWJiYTEzYzYwMzIgcmVsZWFzZTI2LW1haW50Cis3MzUzMSBiNGQwYzAyMGUzNTc3MGZlOTQxMDc2NjMwMTdlMDViOGRjZmFiZmI0IHB5M2sKKzczNTMyIGY2NWFkYWQzOTg4ZDRhYTczMDdjYjQyNDk3MGY4OWIxMGE1NTk3MjkgbGVnYWN5LXRydW5rCis3MzUzMyBhNmExYTYxZjcyYmY4M2U5ZTQ0OTY4ZWEwMGViMWNlZTA2MGViMmY0IHB5M2sKKzczNTM0IDA3ZjcxMWQ4N2ZmZGJhYmMxZWJmNzgwOTJkNGY3NmUwMjUxMzgwZTEgbGVnYWN5LXRydW5rCis3MzUzNSBkMTYyOTQ2OTc2NThlY2NhOGExNGNhN2I4N2ZiZWJkYzdkOGJiZjBkIHB5M2sKKzczNTM2IGFkNjA3Mzc4YTRlZmRkMzI4NTk5YzU5ZjRiODFiMmYyYThlYzIwZjggbGVnYWN5LXRydW5rCis3MzUzNyA5NWU1NzkxZmMzYzkyZDdkYjc1NGQ0ZmYzMTM1N2M5Mjg5NTc0MjhlIGxlZ2FjeS10cnVuaworNzM1MzggN2ExMzE1YTk5MmYwYjZlYzBhMmFkNDVjYTc2MDc5OGE3ZmZkYzlmNyBweTNrCis3MzUzOSBjYjNkMzIzNDM4ZDkyMjVlMzczODAwMGNjYTRmN2Y2MjQ1YTkyNjhiIHB5M2sKKzczNTQwIGJkYzk3NTk0ZTUwOThhOGY2ZDkxYjlmNTQzNDE0NWVmMThmMmVkOTMgbGVnYWN5LXRydW5rCis3MzU0MSBiOTJiODkyYzQzNjAzNzUyNGQ5MzlhZjgxZGNhNmZhMGRmN2IzYTI1IHB5M2sKKzczNTQyIDZhMzFjNGUwZGZjMTJhOWFhYTg4MzlkNWI1NzU3MTZjYzg0OGM3ZmMgcHkzaworNzM1NDQgMmFlZWQ0ZWNhZDViODdkODU0ZTUxNDFlNzBmOTFlNDU2Nzc2OTgwMiBsZWdhY3ktdHJ1bmsKKzczNTQ1IGY2Y2IyOTMyMDIyY2FmNGRjZDY5ZDVkMjBkYTIwOWU4Mjg0MWUxZTkgcHkzaworNzM1NDYgYTIwYTM3N2NjMzI3YTgyZGU3OTMwMGY4YzA0Mzc5ZDNiYTkxMGM1ZSBsZWdhY3ktdHJ1bmsKKzczNTQ3IDhhOTc2Y2Q1N2NhNjUxMTQyYzJiNTM3ZmI5Y2I1YzdjY2M5MDI0YjEgcHkzaworNzM1NDggZjMxOGFkZmUyMjY0YWU2YWEyZjZhYWY2ZWY0MDczMzk3OGFhMWJhMCBweTNrCis3MzU0OSBmNGQ4NGM0ZjI4OWJkYTlkYzVlZjQyZDNjNmJlNWIxYTE5NTRkMDcyIHJlbGVhc2UzMC1tYWludAorNzM1NTEgNzlhNjMwZGE4ZjAwZTA2NTk5ZjZhMWIxYjhjMzdjY2JhMDY2MjJhNiBweTNrCis3MzU1MiA1NWIzMDNkNWRkNTUxNWUxOGM5MmY2ZmQzN2ZhZDA4YmZhMGFhN2NjIHB5M2sKKzczNTU0IDNmZTJkMWQzN2NmMWYwNjM0MjNlODM2ZDJiZGUyMGZmMWE0OWI5ODkgbGVnYWN5LXRydW5rCis3MzU1NSA0NDg2OTkxNTZkZmVhMzVjOTY3ZWM4MzlhZWU0MDRhOTZlZDE5NTIxIHB5M2sKKzczNTU2IGExYTZlNmRiZGQ2YTcyZjA2NmE3MjBlOGZmMjgyOTlkY2ZhYTY3MmMgcHkzaworNzM1NTcgMjczNTg5M2MzODc0NzQ0MzQ3NmQzOTkzYzk0MjUwOWVmMmE3ZGY2YSBsZWdhY3ktdHJ1bmsKKzczNTU4IGE5MzdmMDQwOTU5MjgxZWJhYWIzNDM3NThmNWNlOGI0NWE2YjJiZjggcHkzaworNzM1NTkgNTJjODY4NzM2ODNlYWU5Y2U5OWI0ZWFhYjc2ZWM4ZDFhN2RlY2NkOCByZWxlYXNlMjYtbWFpbnQKKzczNTYwIGU2OTBiNzM2YWY0NzgxMzc2Yzk5ZTVlMWJjNWFmYjc0NTFhZWVjOTMgcHkzaworNzM1NjEgYTU3OTkyYTYzY2FhMDdlODgxY2MyYzdmYWY3MWQxYjk4YjY2NWJhOCByZWxlYXNlMjYtbWFpbnQKKzczNTYyIGNmOWNlYjZmNWEzYTdhZjY1YmQ0N2E0MjhkNGFiZTU3YTE2YzViMzAgcHkzaworNzM1NjMgODg4MmY4ZmU4MjNjNjRiMzU3NDQ4YzIyOWEyYmYwNGI5MmQ5MjlmOSBsZWdhY3ktdHJ1bmsKKzczNTY0IGE2NjYxMzRlNmMwYzIzNGIwOTZmMjljNGNjZmMwZmY3OTRjY2I1MTIgbGVnYWN5LXRydW5rCis3MzU2NSAwZmYwYTM5NmZkYTgzN2IzMWEyMDU0YWE4MzA0MmJiMDFlYmUwNGZiIGxlZ2FjeS10cnVuaworNzM1NjYgMDE3MGM5NjFmMjkwNTRhZjUzYjg3ZTg5MjYxOWYyNDI3YTdkM2UwMCBweTNrCis3MzU2NyAyNTNkYzdiZTVkMWFiYjRjMTc5NWNlYzg0NWExNmMyODI3ODE4NDNjIHJlbGVhc2UzMC1tYWludAorNzM1NjggZDA0ODc3MzkxZTgwN2NmZjY2OGZlOWU2ZjQ4YjRjOTExMDhjMjNlYyByZWxlYXNlMjYtbWFpbnQKKzczNTcxIDE1MGUzZmViZGYxNzg1ZTQ4ZGRlNDEwZmQ2N2UwM2ExZGJlZWQzZmEgcHkzaworNzM1NzIgMTJlOTYwY2MzN2Q2MWVkNmQwNzcxNGI1ZmJhMGNkOGZhZTUzMzVmMyBweTNrCis3MzU3MyBhNjlhMDMxYWMxNDAyZGVkZThiMWVmODAwOTY0MzZiY2E2ZDM3MWYzIHB5M2sKKzczNTc0IDdjOWUxYzllYzVkZmY4MjBhM2UyNjFjZjkyYzRiOTVlNTY4N2RkMjQgcHkzaworNzM1NzUgNGFjY2M4YTNmOWFmZTg2ZmNkNDY2YzI2OWQwZjJlYzEwNTE2NTU2NCBsZWdhY3ktdHJ1bmsKKzczNTc2IDgzMWJlZWUyMmE5ZmNhY2ExOWUzODlhZDEwNTk3MzZlYzM5ZDIyMTYgbGVnYWN5LXRydW5rCis3MzU3NyA5ZDAwZmQwMDg3ZmY5MTY1ZGQ5ZmY5ZmRkNmY5ZDE2OWE2YjdiMTE2IGxlZ2FjeS10cnVuaworNzM1NzggYzNkNWQzYzhlNDliYThiMmQ5OTM0N2UxZWZiM2Q4N2RiMTUyNjA0MyByZWxlYXNlMjYtbWFpbnQKKzczNTc5IDI1ZDg1ZTQ0ODZhY2YxMDMzMWQ0MzY1ZGZjNDg0MmM5M2NmNTE4MzQgcmVsZWFzZTMxLW1haW50Cis3MzU4MCBhMjRmMDk2MDZiODMyNjk4ZTI2YWZiMzNkNjQzOTc1NTFmZDE3NjkzIHB5M2sKKzczNTgxIDc3ZmI3ZDNjNmRkZTdhNGY1N2M3MDRiZGZmMmIxMGE1NTE5MzZhYjkgcHkzaworNzM1ODIgOTYwMzM0NDM1ODU1OGNjNjVmNzM4NmI4Njg0YjBmM2FmOTk1YzhhZSBweTNrCis3MzU4MyA1ZjQ5ZWE4ZjU5MDhjZmRjZTQ4YjFiMzQxY2Y0ZjgxMjZkZDJmNTc2IHJlbGVhc2UzMS1tYWludAorNzM1ODQgYjY3NjE1OTQ1NjgxNTQ3NmU3OWJhOTI3M2IyNGRlYzkwNzk1YTJmNiByZWxlYXNlMzEtbWFpbnQKKzczNTg1IDRkNDc2ZjZmMWJlM2IyMTVkYjFkMWQyMDg3NDM4ZmQ4YTEyNjgxMTcgcHkzaworNzM1ODYgNmRjODg0YjJkZWE3YWFjMjM4NjA4NDI1Y2NjNTc5NzA1NWYzYTE5OSByZWxlYXNlMzEtbWFpbnQKKzczNTg3IDQ2Y2YyZTVhNTdkNGY3YjA5MGI2ZTg3YWJkNGJjYTdlNmMxNDg5ODAgcmVsZWFzZTMxLW1haW50Cis3MzU4OCBkYzc0NTYzOTc4ZGY0OTU0YzNhNmU2OTVlMzBiZTcyMjUxODA3OTIwIHJlbGVhc2UzMS1tYWludAorNzM1ODkgMTY1MWUyZjM2YWYxMmFlYWVkZjIyOGUzM2YzZDlkYTNiMjZiMjc3MSByZWxlYXNlMzEtbWFpbnQKKzczNTkwIDA3MGUxZTE1YzUxNjFlYjg4M2I2ZjMxZGQ4YmY0ZmExMTg4NTFkOGUgcHkzaworNzM1OTEgMmRhMDVmODBkMzY1YWU5ZjU1Zjc1MzE3ZWZmM2NlNThkNDk1MjEyZiByZWxlYXNlMzEtbWFpbnQKKzczNTkyIDFkM2JkZGZhODUwOTBjYzU2MGM0Zjk4N2EyMzg2NWEzODZmMWI1NGUgcHkzaworNzM1OTMgNThmMmIyN2M5MWExNGNiOTc1YzkwMDcyMTNhN2MzZDVkMmU3M2VhZiBweTNrCis3MzU5NCBlMjUyMmU0ZDJkYzhiZjJmODI0NTJhODVlODJmMzI4MmJlMmNhNjY3IHB5M2sKKzczNTk1IDViM2QwYmZjOGQyODkxYmM0MTBkZDJhMTY5ZjI0ZGFjZDkzMjZlOTEgbGVnYWN5LXRydW5rCis3MzU5NiAxZjYwNTgzYjYyODdjZjFjYWNlMjBkYTQ5OGVlMWE1Nzk3NGFiYjA5IGxlZ2FjeS10cnVuaworNzM1OTcgM2FhZjJlMDY1ZGIwNTQwMTgwMzcwNWVkNGJmYTNmZDJmOTAzMGRmOCBweTNrCis3MzU5OCBmNGVlYTBkMjE2NWRhZGNmMWU4YTExNGUzMmEyYTc3MjcxYzI1MzM4IGxlZ2FjeS10cnVuaworNzM1OTkgMWY0ZjRkOWVjNzkzMDdhZGExYWVkM2YxNGUwY2NjZmE4MGRiN2I4NiByZWxlYXNlMjYtbWFpbnQKKzczNjAwIGM1MzU3ODM2YzA3OWQ3NmZlZjhiODIwN2I1MTUwZDQzNDJkMWIyNTggcHkzaworNzM2MDEgYWM3OGVlZWI0NmMyOTVmMGI2NWI5Y2I4NzYzZThjZDRmNjBiNTQ0YyByZWxlYXNlMzAtbWFpbnQKKzczNjAyIDEwYTIyOWM4YmVhZGI5NzZlZjFjMWI3MTg3ZTkwY2YwMjBlOWQ3MTMgcmVsZWFzZTMxLW1haW50Cis3MzYwMyA1NThlZDcyZDRkMzNiYmMzODYwMTY1OWFiNjMwYmE1M2I0YmVhZTI2IGxlZ2FjeS10cnVuaworNzM2MDQgYzQxZmUxMzNkODg3MzMwNTJlYWU2OWI3MTliOWY2MTEzYmVjZjhiNiBweTNrCis3MzYwNSAwOGQwNTg1NjIxNGEzNTgxY2I3YWU2ZTEzMjY1NWUxZGZkMTlhZTZhIGxlZ2FjeS10cnVuaworNzM2MDYgMTE3ZTg1Y2JmMTY5YjRiODA0YjFjMDRiNWQ4MDA0OWQwOWQxOGQ4OSBsZWdhY3ktdHJ1bmsKKzczNjA3IDU0ZWQyNzkxYmIxNWI4YzcyZTA1MzE5OWUxNWUwMDFkMDhjYzBkNzggcHkzaworNzM2MDggZWUyNTNlYjZmMDhjMDQ5MjBmYjIyNWM2ZmI5MmQ2N2I3YjIzYjczMSByZWxlYXNlMzEtbWFpbnQKKzczNjA5IDZlOGQ2MzM0NGQzZTMwZDk3YzgxMGE2YWQzM2NlOTJiMGRlMTk2YjIgcHkzaworNzM2MTAgNGEyMjVkZTg5MjMzNjI3Yzg1MWUyMzIyMzNiMDcyMzc3N2E2ZTQwZiByZWxlYXNlMzEtbWFpbnQKKzczNjExIDU0NGM1YmFkMTYwNzdmYWRkZTA5ZmJlNWMwNTNhNzBkYjY1MjY5ZTEgcHkzaworNzM2MTIgMjYwMmI1NmFkMDJkYzY4MjA3MjkxNTc4OTQ4MjU0OTllMDkyOGRjOSBweTNrCis3MzYxMyBiNTVhNzhiMzliZDVlZDZmYmM5ZTIzNDZjNmFlMGZmNjZiNzQxMDAwIHB5M2sKKzczNjE0IGRlODY2ZjQ3ZDM4YTg1N2Q3ODQyZGJhMGVhYWI2ZTFjY2JmODk2ZmEgbGVnYWN5LXRydW5rCis3MzYxNSAzNjg0Nzg4NTlmZTNhYWY5YzI2MzMzZGYzMzk4ZTM4ZWFiY2ZmYjUzIGxlZ2FjeS10cnVuaworNzM2MTYgYWE5NTBmNzk2MmZkYzZhNTM2ZmUzMmQ3MTgxMmI0YjM4MjJkMThkZSBweTNrCis3MzYxNyAwYzMxOWUwM2Q5YTEwYTllZWNhZDJhM2M2OGRjMWUwM2U2MGFjMTU1IHB5M2sKKzczNjE4IGM5ZTY1ZTQ5MzY1ZGMzOGJkNjc4OTA0NGU1MTU2NTBhMmY1Njk3YmUgcHkzaworNzM2MTkgY2I2MDBlMDM0MzdkNjQwZTFlMTg4NTNkNGZmMmQ3NjYwMmNiZjU5OSByZWxlYXNlMzEtbWFpbnQKKzczNjIwIDY1NDQwNzc0NmJlMGE4ZjM3YTc4ZmIwOTE3NjE4YWRhOTYxZjk0MTcgcHkzaworNzM2MjEgOTEwOWI0MjJjMTM4ZmM0YmVjMjIyMGZkMzNlMmZiMmZhNmEyYmJjYSBweTNrCis3MzYyMiAyMjI4OTE2YWI0Nzg4ZjlhZTllYmJkMjk3NTA2MzUyZDFmMjk2ZDdjIHB5M2sKKzczNjIzIDFlNTU4OWExN2NmMDdlZDk1ZTk0M2RiOTQ3ZDM0ZjMzNTVlNmQ3MzggcHkzaworNzM2MjQgN2MyODdkMzAwMjNjMzU1OTAwYTIyYzc4MDBhM2E5Njk0YmRkYTExMiBweTNrCis3MzYyNSBmOTRjMDlhYTQ0NDQzYmFmZGVhMTk5NjAzZWFjMjA5NDY3MTkzMDliIHJlbGVhc2UzMS1tYWludAorNzM2MjYgMDcwNGYxNWI0NjgyNzFiNjA5Y2E0YTRhMDAxYzI0Mzc1NzUwMjkxNCBweTNrCis3MzYyNyA0MTE4ODRkMDFmOGIwZjk2YWQ0ZDgxMTE4OWE0ZmJhM2FlZjQyYWRmIGxlZ2FjeS10cnVuaworNzM2MjggNGRiNGFmMGNmODJjNWI4YTA2Y2ZiNTYyY2ZmMGQwOTg2YTczOWUyNCBweTNrCis3MzYyOSA1YzcwMmE0ZDc1ZTQ0NWQ1MmY2ZDdjZjMwOGY2Y2NmMDYyOGRiMzkxIHB5M2sKKzczNjMyIDY3NmU3NGMyMGM2ZWEzZDY1ODZiNDdiNGUxZGY0ZDZjYTFiZDM3OTMgcHkzaworNzM2MzMgMGNjMjFjOTc1MWYxNDc1ZDU0ZTA4ZTdlOTE2MDM0OGM2MDViODQxMiByZWxlYXNlMzEtbWFpbnQKKzczNjM0IGRiOTFhMDQ1MzA1MGMyOGQxNTRkNDZkZDU2ZTI2NWQxYmRlMjZjODMgcmVsZWFzZTMwLW1haW50Cis3MzYzNSBiMzJkMTM2ZjNlMjAwNGU3OWU0ZDZkYWJiYTIxZmZlZGQwNWVjMGYzIHB5M2sKKzczNjM2IDFhOTg0NzIzNDBmYTBkODhhZTMxMThjMGIxY2NhYjdiMmNlYTk0YTggcHkzaworNzM2MzcgZTMwMjVhNGMwYWQ3ODUzM2ZhNTI1OThjYmNkZGZiNjM0ZWE3MTA4ZSByZWxlYXNlMzEtbWFpbnQKKzczNjM4IGZmZDdjZjVjNzI4NWY4OWQzYTBmMmZmZGRiMGE2YWZjZmJiNzAzNzAgbGVnYWN5LXRydW5rCis3MzYzOSA1MmM0OGRlZGU1Zjc3ZjViNjA1ODg4ZmQ4OGMzNDU5NDZiMjRjNmY4IHB5M2sKKzczNjQwIGFiOTFmYTVkMGM1Y2MyMjI1NTllNTUyYjY3MzhlYTMyNGIxYzhlNmUgcHkzaworNzM2NDEgZDk0YjNlZDVkNTM2NWM0NzQzMTg5NmY4Mzc5NDY0NjFlNGM5YzMzNyByZWxlYXNlMzEtbWFpbnQKKzczNjQyIGE1MTFmZTUxNjZmZDc3OGRhYjY2NzAwMjA5NDc5YzRlYjllMzlkN2IgcHkzaworNzM2NDMgZDc0OTZjYzEwZGZlZWVhMDcxOWQwNjE5ZTQwOTU1YzhiZjIxNzg2YyByZWxlYXNlMzEtbWFpbnQKKzczNjQ0IDBmN2RjNTcwNGM1OTA2NTk0ZWE2ZWRiODkxNWRjYjUxN2FiZDgwZTMgcmVsZWFzZTMwLW1haW50Cis3MzY0NSBmNDdjZTExZTA3MmI2MTU1Nzg1ZmEyNzg4MTI3MGIwOWZmNzhlMzJhIHB5M2sKKzczNjQ2IDY2Y2M1MDg5MDg5NGMxM2ViMTk2OWU3NjUwOGY0MTVmNDE1NGI1NDAgcHkzaworNzM2NDcgNTYzY2M0ZGNjNzAzMjkwYjcwYTkyYWQwZTRmNDg0MGQyYzRiMTdmZCBweTNrCis3MzY0OCA1Mjg0MGJlNDI1MzBmNzYzMDdkYzQyOGNkOWI1YjM5MmY2NzlmYzgwIHB5M2sKKzczNjQ5IGEzN2JiNTlkNGI1M2E5Mjg2ZWM3ZjQ2M2FlM2MyZjBmYmQ3ZDFmYWIgcHkzaworNzM2NTAgMDljNDRjOTMzOTQyYjQ0ODhhNjA5MzQwYmRhN2QxM2MyODJiNWViZiBweTNrCis3MzY1MSA0MzY5ODIyNDE0YzNhYmJjMDczMDQ0ZGRhYzQ0NzlhYjc2N2JiMjhmIHB5M2sKKzczNjUyIDAwODAwMjhmNWNhMDAxMjNlZjEyNDAyMTkwNzVkMzJiMjFjMjU0ZGIgcmVsZWFzZTMwLW1haW50Cis3MzY1MyBhOTI1MmI4ODQ3ZjA3ZDc2NjMxZDE1NDYxN2EwMGFiMjJhMjIyNjg0IGxlZ2FjeS10cnVuaworNzM2NTQgZGNmNzEyMWVkYjJlODVkMDBkZTAxNjI4OTRkMmNhYmU1ZmFiM2U4NCByZWxlYXNlMjYtbWFpbnQKKzczNjU1IGZkYzIxMGE4YTMyOGUyNWNlYTE0MTNmOGQ1MTAxNDI1YzMyZTg1NzIgcHkzaworNzM2NTYgM2Y0NjY4YjQ5ZjExZTM5YmRjYTliMzdlZjVhNjgzZmYyYWQ1MWRiNiBweTNrCis3MzY1NyA1MjBmMTMxMGFlNjEzOTAyNDhkM2VjZmRiNjAxZDY4N2YyZmE3NzVlIHB5M2sKKzczNjU4IDUyN2JhZGUzMDQzYjIzYTc3YjdkNjEwNTNkMTFmZWQ4MzUyZTI5MDUgcHkzaworNzM2NTkgZDUxMDE3ZGNiYTI0N2Y4OTUxZmFiYTM2OTA4MGQ0NWQ0OGJkMjc3ZSByZWxlYXNlMzEtbWFpbnQKKzczNjYwIGYzZGFmZmQ0Y2IyOGM2MjhlMmY5ZjU4NWZjN2UxNzQxYWIzNGI2ZDEgbGVnYWN5LXRydW5rCis3MzY2MSA5ODI5YjQyMzk5ZTU2ZDliMmFkNDA0YzNhN2VkNTRmMjg5YmYzN2VlIHB5M2sKKzczNjYyIDUwODgwNjRkNjE3MDY1ODZmNjhhYzUxY2ZjMDk5MmQ2Y2M0NWFkMzMgcmVsZWFzZTMxLW1haW50Cis3MzY2MyA3MDQ4OTQ4NjQ2YjA4N2VmMDNiYTQ1MWVhZGFlMjlhODk4NmUzOWYxIHB5M2sKKzczNjY0IGM0NWUzMzEyMzhhZTc5NmFlYjBhZjhmMzcwZGM2YmRiMDMyNzVjNTAgcHkzaworNzM2NjUgMTY0ZDY0YjM5YWMwNmMwMTg3YmY5NmI3YzMxYzkwODY0MjUwYTk4NSBsZWdhY3ktdHJ1bmsKKzczNjY2IDdlY2MwNzVkMTcxZjdhMjFjNWQ0MjA2MzViMjAxNjQ5YWE2YzIxNjkgcHkzaworNzM2NjcgMzgwYWY5ZTgwYzJlOGVmZDhiZjZiOTliOGM2YmRhZmVmZmE5YWIzZiByZWxlYXNlMzEtbWFpbnQKKzczNjY5IGE2NjRhNDQ0M2EzOTQ4NDUwYWRiNGVkNGY2MDU2MTNiMTk2MmEzNzYgbGVnYWN5LXRydW5rCis3MzY3MCA2NWFkYmE5NWQ3ZTBlNzNmMmM3ZWU3ZjM5NjVkZTY4YWJjYzQ5NTZkIHJlbGVhc2UyNi1tYWludAorNzM2NzEgMGQwNTVhMDYyY2NlMWUwMjE4MzczNzVmZjVkNTY4ZDE4YTQyNjNjNCBweTNrCis3MzY3MiAyOTdmZGVhZjU4MjIyNTAwOTMwMjkzMDY0MDgxZTdjZjUzZGFiODM1IHJlbGVhc2UzMS1tYWludAorNzM2NzMgZGI2ZDJjZTM4MzBhZjZkNmE0NWNiNjQwNDMxOWY4MDIzOTY2ZjQ1MiBweTNrCis3MzY3NCA5NDYzYTEwMjUxNWYzZDM5OTJjM2RmZmQ5MDQ5MmY2NGE1NTczMTViIHJlbGVhc2UzMS1tYWludAorNzM2NzUgNGUzNTU2NDUzZmJjY2I2OGRmMDk4OTgwN2I5YTkzMTk2ZTc5NDcyZCBsZWdhY3ktdHJ1bmsKKzczNjc2IGE3OWY3NGQ2ZjViMzk1MDg2Y2EzMjM5YzZlODUxNTIzMDNlZThlYTcgcHkzaworNzM2NzcgNmU3YTE2YTY0NDJmNmM4NDNiNmVhOTlmMDQ0OGUxYzE3OTNlNmRmOCBsZWdhY3ktdHJ1bmsKKzczNjc4IDhmMjNiZDEwOTJmYzI0ZjAzNmI5MTgyYzJmNTliNjdhNWE4Nzk2ODkgcHkzaworNzM2NzkgMWI4YTAxZGM3ZjQ1YTRjOGQyNDA1MmUxNWUwODRhOWIyZTk1NzE3NiBsZWdhY3ktdHJ1bmsKKzczNjgwIDYyOTY3NDQ0OGQ4NGZiYmYyZDljMjQyMDE1MDFhODRjNWEyZjlhOTkgcHkzaworNzM2ODEgMjEwYTUxZWZkYzgyNjcwZDkwZGU0YzY4NWNhNmZlODU2NWY2NTUzMyBsZWdhY3ktdHJ1bmsKKzczNjgyIGEyNzU4M2M4MzZiMjI4ZjMzMmQ0MzRhNDZlNzFlOTMxY2U0ZTE4M2MgcmVsZWFzZTI2LW1haW50Cis3MzY4MyBlMGQyN2I3NmEyZThkMTQ0ZTMxODNhYzQ5MDQ3NWQ1NDMzMDA5ZjY1IGxlZ2FjeS10cnVuaworNzM2ODQgNzljMmVkNjFhMDI1M2QzOTk0ZDE4OTYyYTYwNzk0OGQ3MTI4NmM3YiBweTNrCis3MzY4NSA1MTM5ZThiMGYyMWM3MzIzODFkODg5OWFlZGU2Y2IxOTBiYmZmZmIwIHJlbGVhc2UzMS1tYWludAorNzM2ODYgNzBlZGEwMmM3YTk4ZTMxYmQ4MzRjNDdlZDhjNDU3ZWFjYjQ2MzA4ZSBsZWdhY3ktdHJ1bmsKKzczNjg3IGU3OGI5OWIwNDhiYWE4N2M3OGNjZjJmZDYyODYzNjQ5MDU0MWJlNGUgcHkzaworNzM2ODggM2RjYzhmYzQzNTRlZmJlOTI1NjkyNmJmNjg0Yjc4YThhZjcyNjhkZCBsZWdhY3ktdHJ1bmsKKzczNjg5IDM5MTVkZWQyZDYwZjFmYTZmNzlmMTU4MDc0YTg2ZGUxZmU2NzQzN2IgcHkzaworNzM2OTAgNjgxMDJlN2UxZWI3ZDMzNjdiZDhkOWQxNzI1NjE3N2VjNjY2NGU0MyByZWxlYXNlMjYtbWFpbnQKKzczNjkxIDQ4N2Q2ZjAxODQyYTkzZmRjMzFiZGFlNzBjYmE5Y2QxNTA5YTRmYjQgcmVsZWFzZTMwLW1haW50Cis3MzY5MiA1MTRjYWU2MmNjZGE1ZjA3MzZlNDU0OTUxYTkwZmU4N2M0NjMwZmNlIHJlbGVhc2UzMS1tYWludAorNzM2OTMgNTkxNzg1Y2VkY2M4YTVlN2NkMmZlMzFlYTU5MWIyNzUzMTI3OTU2ZiBsZWdhY3ktdHJ1bmsKKzczNjk0IDNkNTRjYmZkMzgwOTllZDQ4ZmNjNmQ1MGI0ZmM5YTM4YzlkNzIxNjggbGVnYWN5LXRydW5rCis3MzY5NSA3ZTM5MjAyOGEwOWVkYTAyZmNhODY5OWU1NDNkYzliYWFkNGU2NDY3IHB5M2sKKzczNjk2IDkzMjAzM2MzMDRlZjcyMDU0OTc3OTIwODdlYTM2OWMzMWFkYmUzYTIgcmVsZWFzZTMxLW1haW50Cis3MzY5NyBkMmIxZjVlZjJhZTNkMmRlYTAzYmE2ODYyOTVkNDMzYzg5M2Y2ZjE0IGxlZ2FjeS10cnVuaworNzM2OTggMDFlMTI1ZDMxOWQ0ODE4MDNkMDZjNzcwMzE5NDQ4NmRlZmQxNDYxNyBweTNrCis3MzY5OSAyOWZhYzg4NDg0ODlmZDY2YmJkNzdkMDI5NDFiM2U0ZjM4MGNkNmEzIHJlbGVhc2UzMS1tYWludAorNzM3MDAgZDNkNmNjYzlhYmI0MTM3ODRlZTRhNDNlN2RkYWQ4NWVlNDA4Y2EzMyBweTNrCis3MzcwMSBjMDY1ZjMzZDljOWNmOWI2YWEwNzAxNDRmMTExMmZjOTViNmViNjg2IGxlZ2FjeS10cnVuaworNzM3MDIgNWI2NjM5MDc1YzQ3OWNlOGZjMGM1YzRhNWJmY2UyYTFmZTkyYjIxMCBweTNrCis3MzcwMyAzMmY3MTEyMGVhNTUwNDRmODMyMWVmZjBiMzc4NTJmNzFhMjU4MjY3IHJlbGVhc2UzMS1tYWludAorNzM3MDQgMGFlMTIwMmU1MzYyMGU1OTRjODQ3ZjY5NTM0NzI4YzVlYWI5YmI3ZiBsZWdhY3ktdHJ1bmsKKzczNzA1IDQzZmVjYzM5NDM3YjMyY2UzMWMyY2I0YzUwZTQ2ZTkyNzA5N2U1ODMgbGVnYWN5LXRydW5rCis3MzcwNiAwOGI3NjI5MzQ0ODhhMjU4NWNmMWE4OGE5NjZiMTkzYzE1ZThiZDllIGxlZ2FjeS10cnVuaworNzM3MDcgODQ4Yzg2ZjRiZWQ2MDYwYmVlZTFhYmQyNGIwYjcyYWVlZjQwZGVmNCBsZWdhY3ktdHJ1bmsKKzczNzA4IDcwYWRmMGY2OGZiY2ExY2U3NzhmM2RjMDEwMWQ5ZGUzZGQ2M2M4ZDcgbGVnYWN5LXRydW5rCis3MzcxMCAyZmFmMmZhMmE0MjM1NTczYTVhMjY5YWYyZWVkOTVlOTA1MzQ0Njg5IGxlZ2FjeS10cnVuaworNzM3MTEgOTlkNTJkOGFkMDI2NmVmNmE0MGNhMTMwNTMxMjVlY2EyNzJjZjgyZiBweTNrCis3MzcxMiA0ZjkwZGRjNmMzYjY0YWM4MTg4MDdiM2I4YmQ2NTM4MGQzNDdkMzcxIGxlZ2FjeS10cnVuaworNzM3MTMgMzgzNjk5ODQ1Yzk5YjFiOTM3MTcwNjMyMTZmYzkyN2Y0Y2QxYzlmNSBsZWdhY3ktdHJ1bmsKKzczNzE0IDY3NjhiMjM1MGM1NzZhNjZkMjJkMzdiYTI4YTlkZjIyNmZlNzNhOTQgbGVnYWN5LXRydW5rCis3MzcxNSBhZGY2NmI1MjAyMmRhZDU4NWE1NGJkNmY0MWY1YzA2MWMwODYxZGMyIHB5M2sKKzczNzE2IDNlMDAxZWViODM4MWI5MzYxYTM0NTYwZTIwY2Y2NDU0ZDMzNTE0YzEgcHkzaworNzM3MTcgZTg4Y2Q0MmZmMjgyZGJjNmNlYjJlMmE4ZTE1M2FjNTJlMjI2ZWE4YSBsZWdhY3ktdHJ1bmsKKzczNzE4IGM0MGQ2ZmVkNmI2YmE1NWUyY2ZmYzlhNTkyYjU5ZjkyODhlZDMxNmMgcHkzaworNzM3MTkgZGQ0NzBiNzEyOTAxNDczNTZlNjBhMmE5MzM3M2Y4OTJiMDY1NDE5MyBweTNrCis3MzcyMCA2ZDUwNzVlY2MxNGMwYTMzOTY1ZjY3NzUzOTQ2MWJkMWFlNTNlNTVkIGxlZ2FjeS10cnVuaworNzM3MjEgMWM3NjkyZDI1MDlmYTAxMGQ1ZTE0ZDA3ZDNmMGJkNzNlZTYyZjhmZiBweTNrCis3MzcyMyBmMmI2NWJkNjdkZjI1ZGE5N2EyYTM0YzQwZjIwZDY5NWE3NzE3YTc3IHB5M2sKKzczNzI0IGVkMmEzMzYyMDRkNmFjM2FhMTdmZTkwNmU4YmZiODUwMmZhODhkYWYgcHkzaworNzM3MjUgNTUwMmYyNTVjMjdjZWE1NDEzMzYxMGE5YThmNjkyMzI2MDBlMjYzZCBsZWdhY3ktdHJ1bmsKKzczNzI2IDc2NTRmYTg1N2IwM2MyYWI2N2I5ZDQ5OTZjNDQ4MDIwMjQ4ZDRiZjkgcmVsZWFzZTMxLW1haW50Cis3MzcyNyA5MjMwYzNhODBkY2FkMzhlNWIyY2M2NWU3ZjA3YWY2N2Q4NTMwNDY1IHB5M2sKKzczNzI4IDcyYWQxMTk3ZjBmZjk3YTgzZmM0NzVlNjM3N2Y2ZWYwMTYyNmIzYmYgcmVsZWFzZTMxLW1haW50Cis3MzcyOSA0YjYyNzk2MWI0NDczNjM5Zjk0ZmZhMmIzNmNiMGFlOGRmZmU3ZjI5IHB5M2sKKzczNzMwIGEwN2ZkNDdkZjc2YjMyNjVlYWVjYzk4Y2I5NGZiMDNiMGVmNzQ4MGYgcHkzaworNzM3MzEgZTNmYTJkZGJiM2EzMTUwOTAxMGNmMzU2OWJjYTUzNWY4ZjJhODc3NCBweTNrCis3MzczMiA3ZTQyODMzNjJkMjc3ZmFhYzNlMDZlZDVlYTA5OTllMjdkZjBjNTA3IHB5M2sKKzczNzMzIGU4MDg1OTQ2MWRlOGNkMGM0YWI5NGVmZmRmNmNjZjNjMTgyMjNkMzkgcHkzaworNzM3MzQgYjE2OGRjY2VlNjAyNjQ0YWEyNzY2NzA4OGY3MDllYjBmNzRiZDVkZCBweTNrCis3MzczNSBjMjQyNzBmNTQ1YjhmYTZmYjZlYTcwZTYxODRlNjBhMzYyYjM0MThkIHB5M2sKKzczNzM2IDQzZjIyNWM3Yjc3ZWM0NzM1ODUwZmE5MTdiZGFkYzIzMTVjNjgxMjMgcHkzaworNzM3MzcgOWNkNzlkZWU1YmNlNGJlZmU5MTNhYzlmODA4YzVjYjE4YzA3YzdmZSBweTNrCis3MzczOCBlMGVkNjI3ZWE2Nzk0ODU0NjMzNTJhMGYwNjk4YWM2OTUwMzExNzE5IGxlZ2FjeS10cnVuaworNzM3MzkgZjBlZWFkZGFmODNhNGE4ZmEwYWQ1NWI4YTQ3YmI4ZTQzMTg5MTkxNCBweTNrCis3Mzc0MCAxNTFiN2Q1MzZiNWM0NWJiMjM0NWZkNzlmZmU3OGQyYWQ4Nzc1MzQxIHB5M2sKKzczNzQyIDM2NmM4YTRlNWE0NmEwYTFjNzFiMmRlOTRmMjA5MjQzOTUzNWUxZGIgcHkzaworNzM3NDQgNzRmYzQ3NmZlNzI4MzNkMGYxNTQ4ZjljNmFkZWY3ZTk1ZGI4MmJmZiBsZWdhY3ktdHJ1bmsKKzczNzQ2IGYyYTUyNmNjM2YyYWYyNjc1MDc0MTExOGZlNTg3ZWU5Nzk0YTc3M2EgcHkzaworNzM3NDcgNjUxODExNGZiMDYzODFmOTU3MmIwY2M4ZTcyNjBhMjRlYzBkZTA4ZSBweTNrCis3Mzc0OCAwYzZmZDU1NjE0OWRiMmY2NzY3ODZkNDYzMDk4MTBhNzY1NDMwN2UwIHJlbGVhc2UzMS1tYWludAorNzM3NDkgY2M0M2U5MjNlZjk2MTdkZWM1YTEwYzdjYmQwZTMxZTdmYmNiNjYxOCBweTNrCis3Mzc1MCA2MjEwZGVkZDJjZjc5NTQ5M2FjMmUyMjg5OTY1YWY2YjhkZDczMGU5IGxlZ2FjeS10cnVuaworNzM3NTYgOWJkZGJhNmU3NjRlNmQ0NTVjMTU1N2JjN2MzZTMzNGI1NmM5MzRlNiBsZWdhY3ktdHJ1bmsKKzczNzU3IDQ2NjMxNjNlNjQ0OTQyZTJiOTQ2OWZlYTUwODNiMjE2YTEzNjQ5MWYgbGVnYWN5LXRydW5rCis3Mzc1OCA1Yzg5YjkyNzNlNjExMmZlN2ZjZmI3NmM0ODE2ZmUyMzUxNDI0NDdlIHJlbGVhc2UyNi1tYWludAorNzM3NTkgY2E1M2Y4NmZlNjdkYjJjOGUyMWQxMDk4MGVhYTM3YzMyNjM3OWNiZCBweTNrCis3Mzc2MCA2Y2MxODVmNDJiZjY2YWI1N2NmNDFiYzM4NzZmZjY3OTQ0N2FjMzhlIHJlbGVhc2UzMC1tYWludAorNzM3NjEgM2JkZTgxZTdjOWY0MDNjZTg2MWEwYWMxYjU0NTEwMTIxOTU3OTJlMSByZWxlYXNlMzEtbWFpbnQKKzczNzYyIDVkNzQ5YmRkYTk3OWNhZDNhNzA3MTM3OTA3YTA5ZmE0ZmUxOWY2YmMgbGVnYWN5LXRydW5rCis3Mzc2MyAyYThkYWZjODQ1MjhjNzhlNzBlMjI1MzlhYTdlM2Y1NWU4ZTBjMjA3IHJlbGVhc2UyNi1tYWludAorNzM3NjQgN2Q1MTQ5MTU1MTVlNWM2ZDAzZWUyMmMwMDA3NzY1NGMxYzYyZDIyNCBweTNrCis3Mzc2NSBkYTY5ODA3OTk2Mzk5MDhmNGFkZTEyMGRhODU5OTc3NGU5YWQ0N2RlIHJlbGVhc2UzMC1tYWludAorNzM3NjYgMWQ0OGM3MDFmMDdjNjE0NmZmY2U3MTg3M2I5Y2U2Y2JkNmM5MzUwNiByZWxlYXNlMzEtbWFpbnQKKzczNzY3IGVkY2ZlM2I4ZjczNjE2NzE5NDUzNzY3M2MyMjdmYTQ0Nzk2YzkzYjkgbGVnYWN5LXRydW5rCis3Mzc2OCBmMTQ5ZjU3Zjc3ZDZmZTgwMDc4MjMxOTAwZjMxYjI1MDc2NzE0NGE4IHB5M2sKKzczNzY5IGU1YzgyOTBjNzk0OWJkNjAwYmZmNjI2MTE4NjZiYzQ4YTRmODdlMjQgcmVsZWFzZTMxLW1haW50Cis3Mzc3MCA3NGMwYTc4MTE0YWU0ZTIzMGRhMmU4YjRmMmEzZTE3MDhhYWNkMTM4IHJlbGVhc2UyNi1tYWludAorNzM3NzMgNTZjNjY0YjkxNTQ1YjgxODEzZmJiNWM4NTA1YTljZDRmOThmMjczMyBsZWdhY3ktdHJ1bmsKKzczNzc0IGZlYTU3MTY0YmQ3OTFjZWQ0NTJlNWYzMjc0YjA1ZDcxMTBiNmQwOGIgbGVnYWN5LXRydW5rCis3Mzc3NSA3ZGMwZDJjNGI1MjAyMzA2YjJlYjFjYWJhY2Q5MjhkZWE4ZTQ1MTBkIHJlbGVhc2UyNi1tYWludAorNzM3NzYgMDY1M2MxYTBjYjFlMTI2NGQ1ZTM4Zjk1YzFmMDczMjgwMTM2OGQ4MyBsZWdhY3ktdHJ1bmsKKzczNzc3IDE3ODM4ODNlNzZkNzc5OTMyYWZmN2YwNDkxY2QzNmUxZDQ3MjYwOTcgcHkzaworNzM3NzggZWE0NGExNjViOWNlNTQ2ZDIxYTlkY2VjOTYzZWU2NmIyYzc5N2NlZiBsZWdhY3ktdHJ1bmsKKzczNzc5IGY2NWQ2MjQ3MzQ2NWIxNTRjNTcwMTM2YjQ2OGFhM2ZjMTJmYjZmMGUgcmVsZWFzZTI2LW1haW50Cis3Mzc4MCA0NjZhNzFmYzYyNWMxZTZkMzE4MmU0MTIzN2I4MjAzYzk0ZDdlMDc3IHB5M2sKKzczNzgxIGZiNTQyZWQ5MWU3ZjU1YjgwN2ZhZTYxZTM2NmZlZmNkMWU0YjQwMzkgbGVnYWN5LXRydW5rCis3Mzc4MiAyNjI1NWYyOWE3ZTQ5ZDM3NzI5ZDc5ZTFhZWNjMTI4YjY2ZDI1ZDRmIHB5M2sKKzczNzgzIGNjNmI5MWMzZDcxOWI2OWNiNzdiMGY0MDQ5MDZjYzRjY2U2Y2E0MDIgcHkzaworNzM3ODQgZWE5MzNjMjRhZDEwMzNkODYxMzQ3MzBjNzljOTMwMjhhOGE3ZjI4NiBweTNrCis3Mzc4NSA2NWU0MWJjYmMyNWQ0ZDA2YzQwMGYzNDNmZTFkYTMxMzAyYzc5N2Y2IHJlbGVhc2UzMS1tYWludAorNzM3ODYgN2I3NThmODA4MzMwNWIzMzAyNzg2MmI0YTBhMTE3M2I5ZjgwMzIxYiBsZWdhY3ktdHJ1bmsKKzczNzg4IDUyMmFkOWVlZDU1OGU3OGFiZjBlY2MyODFjNGJhYTA0NDVhYzQ4YjQgcHkzaworNzM3ODkgNTZhMjc2Mzk2ZTE1ZjljNzk1M2EzM2NjYTMxMzhmMGE1NzAwNTEyZiByZWxlYXNlMzEtbWFpbnQKKzczNzkwIDg1Njc3YTJjNzg1NWQyMjE0MzRkNGIwYTUzMDFiYmNlODc1MmJhNDMgbGVnYWN5LXRydW5rCis3Mzc5MSBlZWViMzVmMjg4MTJjZTVlODRjMGI5ODZiOGJhODJkZWRkMmRjYjQ0IHJlbGVhc2UyNi1tYWludAorNzM3OTIgODk2ODY3NzNhNjE5YTc3MGNkOGYxZTA0MDE4NjdkMGRmMzg3YjBhNCBweTNrCis3Mzc5MyBkOGM4M2NjMGQzZmQ4YzU0YzdjNTcyN2FkYzgyYTA2Mjg3NzMwZjY1IHJlbGVhc2UzMS1tYWludAorNzM4MDEgYTUwMTU3M2MyM2YyYTU3ODY2MTg3Y2I3MWFmNjExNjk0OTBjNzc1MyBsZWdhY3ktdHJ1bmsKKzczODAyIDQyN2ZiNjMzYzRjY2VhZjY2NjMxOTdmNDVmZjE3ODQ3MDRlMTg2Y2IgcmVsZWFzZTI2LW1haW50Cis3MzgwMyA0NmE5YjE4YTFhMTc2ZTExMzIxM2VhYzRiMTQxZGE4NDE5NmIxODlmIHB5M2sKKzczODA0IDg3NzYzYzk3ZjY4ZWEzZjA0YTA5MDg5NzBhNGE0NmY2NGMwNTFiZDYgcmVsZWFzZTMxLW1haW50Cis3MzgwNSA4NTRjMDk0OGIwOGQwNDE4ZDZlMWU2NzY4ZWQ0ODFmNTBmZGYzN2ZhIHB5M2sKKzczODA3IDU5YzY2YWRlM2MyNjgyMmFhODhmOWYwMmQxNWRkMGZlNTgwOTg1M2EgcHkzaworNzM4MDggZmM2YWRmZmY5YTllZmQ1MjcxMTNhZWY5OWEwMmM2NTQ0NTAzMzBiMSByZWxlYXNlMzEtbWFpbnQKKzczODA5IDFjNTI5MjE4YmE5NjQ0NDAwMjM4Zjk2M2YxYTA4NDQ3Y2Y4YWJiYTIgcHkzaworNzM4MTAgM2EyMTQ2MjJjOTQzY2E0YThkMDBkMDQ3MzhiMTkyOTU3OTg5MTdmNCByZWxlYXNlMzEtbWFpbnQKKzczODEyIGY2ZmE1ZmIwMTBiZjdmY2FkNjliMTYyNGY1MmE4NzdmMjViNzgyYjMgbGVnYWN5LXRydW5rCis3MzgxMyAwYTQ2ZTBlM2ZjMDc0ODUzZDgyYzVlNTA2NGE0MjdkYWI5YjQ0ZDlhIHJlbGVhc2UyNi1tYWludAorNzM4MTQgN2IwZTc5N2Y2YjJjODZlYzMwZDNlNmI2MTcxODE0NTBmN2M4NmMyZCBsZWdhY3ktdHJ1bmsKKzczODE1IGIyYzc3Njg1N2RjNGM4NzNmZjU5ZWZjN2ZjODllNTM5OTJkMmJkNTMgbGVnYWN5LXRydW5rCis3MzgxNiA4ODQyZjRlMmZiMWI3NGRiMDY4ZGYwN2ZlNTk4NGY3N2NhZjY0ZWNiIHJlbGVhc2UyNi1tYWludAorNzM4MTcgZGZiOTg1YThkZTZmNjVjOTYzZWU0YzU3YTFjMGU5ZmY3MDZlOGJhZiBweTNrCis3MzgxOCA5YzlmZTlhYWZiYTZkNmQwOGRkZmZkMDRlNzdlN2Q0Y2NjOWRkYTM2IGxlZ2FjeS10cnVuaworNzM4MTkgMDFhZjdiNTJlMGRiNTllMzUyZjFjOGUwZDVkN2VlZGJjZDMxNDU4MyBsZWdhY3ktdHJ1bmsKKzczODIwIGM3ZGEwZGM2ZWIwYzZjNDQwYjJhMjFhNWQxOWQyNTk3MGI3NDNmZTIgcHkzaworNzM4MjEgOGE3YzIwNjZhOWIyZTYxNGQ1MjMzOTQ2M2E0MDU4ZWVlOTg0OTg5ZSBsZWdhY3ktdHJ1bmsKKzczODIyIDQ2MTc4ODNhYzFmMzNmY2VjNDBmYjdhOGRiNzJmNWI5ZTZjZTYwMzYgbGVnYWN5LXRydW5rCis3MzgyMyBjMmY0MjcwYmUzNjI5MmQ1NGY3ZTUzOWQ2Yzk1YjUxYzc5NDMyMmRiIHB5M2sKKzczODI0IDBlMzkxYmYzZWI5ZGY5Y2FiOGE4NjYyNTVhOTExMGU0ZGEwYmJhOTEgbGVnYWN5LXRydW5rCis3MzgyNSA5ODA4ZTM4ZmRlNzJiNmIzMmJiYmU2MWFmNDZkNTQwNTdjNjQ1YjI3IGxlZ2FjeS10cnVuaworNzM4MjYgNTQwZmQ0NjE2M2QxYzliZTRjNWIwMWJjMDQ3M2RhYjVhNTNiZTllMSBsZWdhY3ktdHJ1bmsKKzczODI3IDUyYWFhNzdhNWRiZmM3ZmNhNDkxZmFiZDg5MWUwYWY5ZDE5M2RjMzkgbGVnYWN5LXRydW5rCis3MzgyOCAwOGI1OGNiZWNlNzllZWRmOTY4YjNkMGI1MzAwZmQxNDY2YjVjYWJjIHB5M2sKKzczODI5IDA0OTEyMjdlNTQwZWNlNTlmNmZiY2U4MDcyMTMwNzhjYjU3YzU5MTggcmVsZWFzZTMxLW1haW50Cis3MzgzMCA4M2NlMzMyYTI4MzRmOWJmODQ3ZGQ3NDNlNmNjODhhNGIxZTVlOGZjIHJlbGVhc2UzMS1tYWludAorNzM4MzEgZjg4MjY5NmZkMTM0Zjc3MTc3NGJiMzNiYjMzODdhZmZkNGFiNmY5OSByZWxlYXNlMjYtbWFpbnQKKzczODMyIDA2YjM2MGEzM2Q1NzExZTMxMGYxOTI2ZDRhNjViMTUwYmE0ZDIyYzkgcHkzaworNzM4MzMgN2I5YWQ5YWFhOTAyNGMxNGY2ZjViNDQzNDU5Y2IxMWEyNzIxZGFmYyBweTNrCis3MzgzNCBkMTFkODk5YWFiMWQ4MGU0YWIyNzU4ZmVmZDVhYjkzNjBhODM2NmU1IGxlZ2FjeS10cnVuaworNzM4MzUgN2RkOGRiZDI3MDMzMzgzZWExYjcyNGIxODBjODk0NDE1M2Q0ZWE3MSBweTNrCis3MzgzNiA4NjhmZjM3ZjVhODAxMjQ3Njc4MWU5YjUwNGFmOGRjZmU3MTAyYjdlIHJlbGVhc2UzMS1tYWludAorNzM4MzcgMWRlYTdlZDY4NjdkN2M3ZDA4NTAyY2EyMDljZmUxNjRmNGVhMjA3OCByZWxlYXNlMjYtbWFpbnQKKzczODM4IDc4OTg3YmNmMWFiZmIwODM1NGMyNDI4OGFiZjFjMzgwMWE2MDk2ZjYgcHkzaworNzM4MzkgN2ZmMTQwNWNjYjY0YmI1MWM0ZTE5YzE5ODIzNzI1NTIyYTg0MWVlNCBsZWdhY3ktdHJ1bmsKKzczODQxIDQ0ZmNkYmI2MjAzOGIxMTVmM2U5NzFmZmU5ZjY0Y2VlZTAwNGMxMmYgbGVnYWN5LXRydW5rCis3Mzg0MyBmNzQyYzA4NzUyODg3ZDM4OGQwMDMwNTQ0NDQ5NDRiZTRlZjcwMzY4IHB5M2sKKzczODQ0IDRmZjRhYThkNjU4MzI5OTIwNzY4MzA4M2RkNjE2MmQ0MGU4MmZiNGUgcHkzaworNzM4NDUgYzIzMzYxNWIzNGFhYjhlNTA1N2EyZTg4Y2RkY2I0MDAxN2JiNTM2MiBweTNrCis3Mzg0NiA0NjZjYTk2YmUxODI0MDA5YTBkNGI3YTMzYTBmYWRhN2E4YmZkMTEwIGxlZ2FjeS10cnVuaworNzM4NDcgNzdlYmVhY2MxMDdhODA2MGU5ZjEyMmI1MmVhZTljMDM5YTgxNDZhZSBsZWdhY3ktdHJ1bmsKKzczODUwIDhlODE1NzQ0NWE1NTY1NzI0ZjI3NjYxZTFlNGVkMmIzNTE5NzJkYzYgcHkzaworNzM4NTEgYWI0MzRmMGRjYjE1ZDk4NGU5ZTYzMzNlMzY5OTk4ZDgxZmQ5MzUzZSBweTNrCis3Mzg1MiBhNzZiMzRjZmM4OTdjMTAyNmY3YmYwMGNmOTI0M2IxMTc1YTRkYTMwIHB5M2sKKzczODUzIGE0MGEyMjY2MWU1MDQ4N2QyYTczODc5OTM1NDBlYmFjMDg0YTYwZDcgcHkzaworNzM4NTQgYzZmMTM5MzRmNGM2NjliNDAzZTQ4MmQzYzNhYmMzNTcwYTQ5MDMyMyBsZWdhY3ktdHJ1bmsKKzczODU1IDEwYTZjYTJjMGNjYjI3MjdhMjU4NmZhOGY0NzFlM2FkNjM3OTE4NDkgcHkzaworNzM4NTYgMjZmNjBmZDQ3YWQzZmE0ZDQyNDgyN2EyM2QwMjNmYTBhMzE0ZTZmZCBweTNrCis3Mzg1NyA4NWRiNmE1NDNiM2U0NGJhZjBlNjE2OGMyM2NmMTZhOGU1Mzk2ZjczIHB5M2sKKzczODU4IDFmYzM3ZmVjYWY4ZjMzZjc3NzMwZWI4OGEzOTIyMjBmMjFmNDI3YWIgbGVnYWN5LXRydW5rCis3Mzg1OSAyNDQ0NmRjODdmNzNlN2RmMDdlMmZkYjY1N2ExZTEzMDUxYWE2ODhlIHJlbGVhc2UyNi1tYWludAorNzM4NjAgMDUyMmU1NzFjZTc0OTRmYTdmNzViMGI2ZDZhYmI3MzQzMzY0ZWM5ZSBweTNrCis3Mzg2MiA3YmI3NzU4ZTZkNjRiOGY5MGZmMjU3Y2I3NjhmNzNlM2M1YTU3MmNhIHB5M2sKKzczODYzIDQyNjM5NGRiYmNlZTIyZjg3MTFkZTY5YmRiM2U2ZDNiZDM5Y2FlZmIgbGVnYWN5LXRydW5rCis3Mzg2NCBiNDZhYmMyZjJhMWZiYWNhZWMwM2U5Mjk5OWM2ZmMxMDZhMDY5YzQ1IGxlZ2FjeS10cnVuaworNzM4NjUgZDFlZGE3MGIzODNlOWVlYmQzOWEwZTIxOGJlMGExNDI0YTcxZGEzZiByZWxlYXNlMjYtbWFpbnQKKzczODY2IGMyM2E4ZjFjZmFiOGZhY2ExYmMxMDYzZThiNDgxMDE5YWMwYTkwMDYgcHkzaworNzM4NjcgNDlmZjIzNDIwOTE5YjQxZWMwYjg3OTQwMjQ2ZmIwOWU4Mzk4NDIyNSByZWxlYXNlMzEtbWFpbnQKKzczODY4IDc0OWNmMDZjZDA3MDk5YTYwZTNmYjUwMDI4ZDBjZDE4YzM1YTA0YTUgcHkzaworNzM4NjkgNTljZjVmODA4YzI0YTk5OWUzNzUwYzhkY2FiNjg5NDMxYWIxN2RiZSByZWxlYXNlMzEtbWFpbnQKKzczODcwIGU5ZmM4OTQ3YzQ5YTU1NjM4YTllYTRjM2UzMjZjOWNkZDRhZmQwZWMgbGVnYWN5LXRydW5rCis3Mzg3MSAzOGQ2ZTRlNTFhZjA4OTUxYjBlOTZmODk2MDc5ZTUwZGNkNmJhZDY4IGxlZ2FjeS10cnVuaworNzM4NzIgMWNlZjdlNzE2MjQ3OGI4Zjg2ZmRmZWY5YWNkZGM0YTA3NWZhZmU3MSBweTNrCis3Mzg3MyAzMDYzNzE0ZmY5ZjMxYzBmYWI2YTE4MTdhMmY4NjBkYTZkMDhmYzAwIGxlZ2FjeS10cnVuaworNzM4NzQgNjM4ZWExMzRhYTgyZDcyYTJhYzIwYmFmMjE4ZTBmNGY5ZTgyMGJmZSBweTNrCis3Mzg3NSBkZTU4ZjYxMzg2YzNiNDllNTVmYzNkYzlhYTRlOGIyMjc2MjUwNTNmIHJlbGVhc2UyNi1tYWludAorNzM4NzYgNDE2ODEzOGMzNzFlNWQzNTEwNGY3Yjc1NjA1NzUyNGYwZDk0ZjBiZCByZWxlYXNlMzEtbWFpbnQKKzczODc3IDRlYTgxMzBlZTA5ZTg0YjQ0NDE2OTE3ZGExMmMxZDZjMTUwMjg1OTUgbGVnYWN5LXRydW5rCis3Mzg3OCA4MTAwMmM3NjAwYmQ1ZDMyMDE5ZWM4NjEyOTkwOGI1M2M4MWYzOTg3IHB5M2sKKzczODc5IGFkZmQ2YjczZDM2NDc0MWI0ZDg5NzlhMTA2NGY0MzhhM2Y0MWRlYmQgbGVnYWN5LXRydW5rCis3Mzg4MCA4ODBiNTBiY2ExYjE5MjJmN2QyYjRlMWViNDUzMDliODZkYjNiOWY0IGxlZ2FjeS10cnVuaworNzM4ODEgOTllMzBhZjQxMTY5ZjA1YTc1NjE1MmJmOTMwYWZmOGQ2Y2I2NWU4ZiByZWxlYXNlMjYtbWFpbnQKKzczODgyIGVlMTU2ZWM1ZWZiZjk2ZDAwZDU0NjBlZmE5N2NhMDAwOWFiZjRlZTUgcHkzaworNzM4ODMgMWY0OGNiZDQzMjI2ZDI2ZWQ1NjFmNzQ4MTViMTgxYWI4NTU5YmRlZCByZWxlYXNlMzEtbWFpbnQKKzczODg0IDdmYTIxYmRjMzQ4YjRmNmExYjdhODIyZjU3YjUxNDc4MzNhNTliOTQgbGVnYWN5LXRydW5rCis3Mzg4NSAxZmQ4MzliODMzMGExYjY0NTJhMDdjODRmMDE2ZjNhNTA2MWQyYWE1IHJlbGVhc2UyNi1tYWludAorNzM4ODYgZGU2YzQ4ZDczYjcxNmVlYWYzYmNhN2NjMGE1MzIxOWEzYjdkNTFmNSBweTNrCis3Mzg4NyBmYTA4MGM0ZjUzOWE5ZWE5OGI5ZWE0MDY0Zjc5OTc5NmI5ZDI3ZDk1IHJlbGVhc2UyNi1tYWludAorNzM4ODggODk3YmRlZDgwMDIwNmE2ZjU1MjNkMjE5MGM1YWMxYmYwMDBhM2Q4MCBsZWdhY3ktdHJ1bmsKKzczODg5IDhhODQ0YTViMTZkYmJmOTkzMjM0NDBiYzgzMzM2YmUzZGYxNGM5MzIgcmVsZWFzZTI2LW1haW50Cis3Mzg5MCA4NjBhMDY5ZDEyNmM5YmFmNjBhYTEwNWYxYzU5NWU0ZmMwYWQxZjkzIHB5M2sKKzczODkxIGIzZmI1ZTZiN2U4MmQ2M2ZiYzY3YTdlMWMyODlkZjJjMDY2ZDM0NmQgbGVnYWN5LXRydW5rCis3Mzg5MiBmMDJlNDcxMjE4Yjc3OTFkNDA5ZDUzZDcxYmFjMzBlZjU0ZjU3YzU0IHJlbGVhc2UyNi1tYWludAorNzM4OTMgOGJlZjNhMjY3ZTFlZTg0ZjNmN2E2ZTNjN2U0YjhhNmVlMmRjN2FiZiBweTNrCis3Mzg5NCBkOWIxOWIzN2Y4MWFlY2I4MzFhZjBmOTgzMTU0YWM0OWU4Nzg1OWIxIHB5M2sKKzczODk1IDI3YjUxNjI2MzI2OTE2ZTc0NzZhMTQyYWNmODBjMDdjNmE5YWQzYmIgbGVnYWN5LXRydW5rCis3Mzg5NiBkNjFjNGRjZjYxODk4ZGJiNzI1ZDkxMjYwNWEwMTAwOWM3ZWE5YTM3IHB5M2sKKzczODk3IGQ1OTkyNTRjMjAzYmM2OTdiNmJhYmNiMDJjZWRlN2RjNTBlZGU5NGIgcmVsZWFzZTMxLW1haW50Cis3Mzg5OCBiYTA0NTlmMmMwY2I0MDA1Y2RkYjA0MDZkODI0MDQ5ZGRlMmU1ZjljIHJlbGVhc2UyNi1tYWludAorNzM4OTkgYmU3MzZiNDkwYWIyYzhiY2Q1OTJhYWNiMzJmMmNjMjdiOWRlNTc3ZiBsZWdhY3ktdHJ1bmsKKzczOTAwIDQ2OGE0MGFkZjU2ZjVlM2Y0NTUwNzFkZjJjYjFlN2UzYTc5YWEwNDMgbGVnYWN5LXRydW5rCis3MzkwMSBjOTJiOTM3NzU1NjkwYjk0NGU4NjlhMTYyMTA3YWIyZTZiNDMxZjc2IGxlZ2FjeS10cnVuaworNzM5MDIgOWFmZWFlMGJhYmY5YzRmNjU4ZmIzZTNiNzIyZDU0ZjI0OTQxYjE3MCByZWxlYXNlMjYtbWFpbnQKKzczOTAzIDEzYzVjZjQ4OTc5N2M0NWI2YmFkODhiNmE0ZDM1MDUyZDJjMmQ4NWEgcHkzaworNzM5MDQgODI5MDUxOTE5OWVjMmZiN2EwOWVjN2Q4YTg2YzE4MDI0ZDEwMzE4YyByZWxlYXNlMzEtbWFpbnQKKzczOTA1IDRmMWIyYTQ1N2U4M2NlMTM0YTM2MGVlNmNjNjA5MjgyYmFmOGQ4NjUgbGVnYWN5LXRydW5rCis3MzkwNiAwZjA2NWI0OGFjZjk1MTI5ZDI3NzdlMmQyYTdhYzE3NzI3MzM0MDljIGxlZ2FjeS10cnVuaworNzM5MDcgNWY0NTM1MjI1ODE5YmVlMTQ5NTMzNzk5MDNlZjU1NTA4ZTI3NjNmNiBsZWdhY3ktdHJ1bmsKKzczOTA4IDVkOWIzMjMwMTgxNTQyMzg4ZjBjNjA1NjdlZTI4NDk2YmJmMmIzNzggbGVnYWN5LXRydW5rCis3MzkwOSBkYTJjMTQ3ZTkyOWQwYTFkMGIxYjA2ODEzODAxODMyOWUyNmY5Yzg3IHB5M2sKKzczOTEwIDVhMjhhOTVkZWMxOTMwNWU3ZWIwZmY2MTRiY2Q5OTAwZDZmNzdhYWUgcmVsZWFzZTI2LW1haW50Cis3MzkxMSA4YTc3ZWRlNGUxNzVhOGM2NGQyZjdlMDVjMWU0ZjgxZjAzMmU3Mjk0IHB5M2sKKzczOTEyIDRhZTFlOTZlOTM3NzRjMDdlZTQ0MWVhNTRjYWEyYmYzYjc5OTcyM2QgcmVsZWFzZTI2LW1haW50Cis3MzkxMyBjNDdlZjRlMTA3ZGY5MDhjNzE4ZTliNTE0ZmJkMWFkYTMwNmY2ODk3IHB5M2sKKzczOTE0IGI1M2U0MmU1MGM0MTUzMmM4YzkwNDMwYWE4Nzk2ZGQ4OTQxYjQxZDcgcmVsZWFzZTI2LW1haW50Cis3MzkxNSAzODk4ZDUyMGYxMDdmZjQwMWQ3ZDBiYmRlMzQ0Njk4MzY0ZTcwMzMzIHJlbGVhc2UzMS1tYWludAorNzM5MTYgNTYwOTM1MmZlYTEyMGU1OWQyMThlNTBmNjU0YjRmNWEyZTNhZmRiOCBsZWdhY3ktdHJ1bmsKKzczOTE3IGU4OWZhYWFmYTNlZWEyNDk5ZTJjN2QwMjFkM2FhZmU4YzRmZGYwNTkgcHkzaworNzM5MTggMGIyYWJhN2FjMWZhZjYwMDRkOGE5NWI3ZGMyMWIxZTkzMDY1YTQwMyBweTNrCis3MzkxOSBhZWRjMjIwY2M5YmY4OTExMjI5YmZlYWQ0NzJhMTQxM2NjYzhkNWZlIHB5M2sKKzczOTIwIDAxMTM3ZTNiOWViZThmOGQ1YWNkMDU5YTIxNzBlYzhhYWFiYzM2MmMgcmVsZWFzZTMxLW1haW50Cis3MzkyMSA4NzdiZDdkNTBkODk3ZjRlNmZmYTgyYjBmOWI4M2JiYmE3NzNjZmY0IGxlZ2FjeS10cnVuaworNzM5MjIgNmYwZTU5ZmFiNjJjZmYyNTdlYTc3YWY1MjI2NTc1MzE1ODE0NjkyZCByZWxlYXNlMjYtbWFpbnQKKzczOTIzIDYyNjQxMzI3MjQ2NDliYTQ2NTY0MzI2ODhlNWQ3YzIyYWFhYmQ3M2UgcHkzaworNzM5MjQgZDBiM2FmNTY1ZWFhNWE5MGVhZDRiOTVkNGE1MzRmZWI1Njg2ZGYyYyByZWxlYXNlMzEtbWFpbnQKKzczOTI1IGU1M2QwMzFlNTRkNDc1YzQwNjcwZTA0MTc4N2Y4YTMzMjMxOGMzMjUgbGVnYWN5LXRydW5rCis3MzkyNiAwM2I4NjYwNmNlMGEyYTc4YmM1ZTU5MWUwOWUzMWYzNjM5ZmFlYWYyIGxlZ2FjeS10cnVuaworNzM5MjcgOWI1ZDI4MThlMmQwZTcwMjc3OWM4NDFmODQ1YmFjNWU2MmFhMTA4MiByZWxlYXNlMjYtbWFpbnQKKzczOTI4IDEzOTM0N2IwMGMxOGY3OWMwMTY5NjllZDFjZjgzNjhmYzc0Y2VkYTIgcHkzaworNzM5MjkgMmZkNzRjNTAyNjAwMzY5MTExZGZlMDJiMWEzNjlmYTJkZDc4Y2U4ZCByZWxlYXNlMzEtbWFpbnQKKzczOTMwIDE0Y2QxOWZlYWYyMGQ4NTkwZTVkNmQ3Y2JlMmFkZGE5N2FhMzAzMWQgbGVnYWN5LXRydW5rCis3MzkzMSBjZGRkNTE2NGRiMDNjYTc0ZTBiM2FkYTA0MmM2Mjc1MzZmZjRhM2FiIGxlZ2FjeS10cnVuaworNzM5MzIgYjFjNjM3MmE4MDkyYzNlYjg3MWM3OTVhYTI2YTBlMjM1MTc3NGY4MSBsZWdhY3ktdHJ1bmsKKzczOTMzIDIyMTcxOGU3NTdiYWZhZDA1YmZlZTUyYmQzOWYzNzlkOGU2MDkyMTggbGVnYWN5LXRydW5rCis3MzkzNCBmZWFhYTdjYzAyZDEyMmNmMDBiZTE5YjljOTRhNzI3ZTc5OTVhNjU1IHB5M2sKKzczOTM1IGU1MzZhM2IzYThkMGU1YjBhNzMxMjVmMmFmMzY2MTFjNGQxMmRiZTcgcmVsZWFzZTMxLW1haW50Cis3MzkzNiBlMjAwZWU5Y2NjNGJlZDYxMjZiZjJkZDZjZTYzYTNhNWRiOGM1OTJkIHB5M2sKKzczOTM3IGFjYWEwYzg3ZDQwMWYzNTkzYzNjN2QxMDM5OTAxNGFjNzM4OWNhYTkgbGVnYWN5LXRydW5rCis3MzkzOCA3YjI0Njk0NWZjOGNiMGRiNTZmNjJkMGU2ZjRmNDg3MmMyZGFmNTQ5IGxlZ2FjeS10cnVuaworNzM5MzkgYjI4ZGFkZDIwZDliN2I0OWVkMDZjNjk4MGQ5YWM2MGFhMjRkMmY1YiBsZWdhY3ktdHJ1bmsKKzczOTQwIDU5YzM0YTkxYzU0ZDlmZDBjNDk4N2JiNTEzZWUzNDZkMWUyYjVkNDcgbGVnYWN5LXRydW5rCis3Mzk0MSA4NDFhMWU2OGI0ZWRjY2NiMjE4NGZiY2IyMWM1ZjNmYzM5OGUwOTcxIHB5M2sKKzczOTQyIDY3ZjVlMDFkNWE2YTcxZTI1Nzg3NmRmZTA1YzViMTY4NWM2N2VkODQgcHkzaworNzM5NDMgODA2NjE2MDhkNGUyMDU3Y2NkYzQ3NDdkMTIxOGJkMTM1ZTUwMWQ5YyBweTNrCis3Mzk0NCA0YzVlMDc1ZjU0NzNkYTU2M2NkOWVhNDY1NjcyMmFmN2RiYjk5MmU1IGxlZ2FjeS10cnVuaworNzM5NDUgZjNiZjA4MzI5ZjA3OTY2YjVjZTA5ZjQyZmYyMDU2MDJkZjZiZmE3NyBsZWdhY3ktdHJ1bmsKKzczOTQ2IDgyMmEwMmI3MWJiZWIyYzM3YjdiOWM4YjQ2MTQwODVhN2ZiMjM4ZDEgbGVnYWN5LXRydW5rCis3Mzk0NyBjNjRmOWRjM2M2YTQ5ODViMzk0NWQ0Nzk3NDAyM2QzNGE0MzdiNDc0IHJlbGVhc2UyNi1tYWludAorNzM5NDggNTdiMzU5MWYwY2IyMzJhNDdmMjU4N2E5NzBmMzE3MTVkZjZlZGQ5ZSBweTNrCis3Mzk0OSA1NmNjZWYzNDIwZTc4MTMzMzYwOWI5MTU2MzBmODczYThiNzE4ZTQ0IHJlbGVhc2UzMS1tYWludAorNzM5NTAgZDI3ZmRjNzAzNzljMjZhMTA5YWM2NmVlZmZlYjYzMWY2OTRmMGJkZSBweTNrCis3Mzk1MSAwYjUwZTY4NDFhODFiZGJlOGU4OTZhNWM0OWJhMDc1ZDkwMDEwNWM0IGxlZ2FjeS10cnVuaworNzM5NTIgODY4MjAyMjVhNGQ1YWZiNzYyZGU5YWZkMDM2Mjk5ZDgwMDg1MDI2NiBsZWdhY3ktdHJ1bmsKKzczOTUzIGExYjc5Nzc4ZjIyZTNlMjRjYTMyYzU1OWM4ZjFhMDJmNWE3MjAxN2EgcmVsZWFzZTI2LW1haW50Cis3Mzk1NCAzZGFkZjM0NTNkMDU1MDlkNjhjNGUzNTg0MDYyNmQxNGRhNzcwZGI4IGxlZ2FjeS10cnVuaworNzM5NTUgOTNiNDhhYjkwZWFkMGU1YzVmNmFhNmJjNzYyZjMxYzJmY2Y4YjJlZCByZWxlYXNlMjYtbWFpbnQKKzczOTU2IDEwMjhhOTkxYjY4ZWMzZTZjNmNkYWYzODIwOTdlMDQ1ZjFiYTQ5NTkgcHkzaworNzM5NjEgMGM4MTI4NzBhOTc1ZWMwYjg2OTY3ZjFlOWQ0ZGU0NWE5MWQ3NGMwMSBweTNrCis3Mzk2MiAyNjMwYzA3NWI1N2NiMzU3Y2FhMzkyNGMwMDg4ZTQwYjYyMTg5NGU5IGxlZ2FjeS10cnVuaworNzM5NjMgNDkzYzdmOTUwYTJiOWI1YmE4MTVkZDU5NWZjMzVjYTM5MmNmZTAxNSBsZWdhY3ktdHJ1bmsKKzczOTcwIDg0OGE1YWM5MjRiOWI1MDA4YjAwNWY0ODhjNTEzNTJiY2U4NmFiYzkgbGVnYWN5LXRydW5rCis3Mzk3MSAyYTM5OGVkZWIwOGQ5NTNjNDM2MjQ2NzZmOTAzMjdiMGVhMTVlMGVlIHJlbGVhc2UyNi1tYWludAorNzM5NzUgZDBmMjI1ODY1YmU2NTYzY2I4MzBiMGQyYTA0NGQ0ZGE2NzI1MDYyMyBweTNrCis3Mzk3NiAzMTg3NjNlY2M0YjMwNDNhNjExOTZlMTgyN2I3ZTk3ZWNlYzczNjE1IHJlbGVhc2UzMS1tYWludAorNzM5NzggNTdlOWYyZDM2N2E4MWQzNWJkN2IyZDBhNjBhMjYxYWZhZTkzMjQwZiBweTNrCis3Mzk3OSBhY2RhNjkyYTg0N2ZjZTllOTUyNzc2NWI2MTAzYWJjNTlkNDU0MTRjIGxlZ2FjeS10cnVuaworNzM5ODAgZjNiOWM1MGE3YWFkNWMwMGYwZDViMzI0NzQ4YjFjMDQ1YzA5OTJmNSBweTNrCis3Mzk4MiA4OGFjYzEwY2FhNmUxMWZiY2U5YWY3ZjQ5NWMxNDVmZWY4ZjJhYjYzIHJlbGVhc2UzMS1tYWludAorNzM5ODMgNWJlMDRlMjMxN2U4ZDEyYThiZTI4MjU3MmVlNzdkMjBhYTBkZWEwZiBweTNrCis3Mzk4NSAwMTBhNDhlOTQyMjM3MjI3ZjA3MzMzMTVlMjExMzE2N2RiYTU3MTJhIGxlZ2FjeS10cnVuaworNzM5ODYgZDA3NmU2NWE5MGQ2YzE5Mzg1YTk1ZmU3OWNlZDg1YjNlNTRlODkyYSBsZWdhY3ktdHJ1bmsKKzczOTg3IDJiNjdjYjkyNWJiMTllODY5OWY0OTZlNDA4ZmFjZDQxMjhiY2E1MWQgcHkzaworNzM5ODggOTUwN2U0YjliOTg4NTg4NTI5ZDc1Mzk2YjkyMGNhNjBhY2QzYTM3NSBsZWdhY3ktdHJ1bmsKKzczOTg5IGI3NGUzOTI2MjgxNTEzYTIwOTIwMTZkZDRlZjY2YTZmMzY0OTBmOTAgbGVnYWN5LXRydW5rCis3Mzk5MCBiMWQzNGRmZmZlMmRlMDFlYzgwZDUxNDM1ZjUwNTgzNTk4ZWQ0N2E5IGxlZ2FjeS10cnVuaworNzM5OTEgZTE3MmE4ODY1MGNmOWFlNTcxNmRkYmQxZTdmZWI2NGZiZTUzOTViYiBsZWdhY3ktdHJ1bmsKKzczOTkyIGJkNzRlMmM5NzM0ODlhODZmMWRkODdjNDM3NGUwNDIyMDgxMTA5N2QgcHkzaworNzM5OTMgNGQyYjUzMjVlZTQ4ZTg1ZGMyMmI5MjhkYzQ1ZGFmODMzNzNlNzE5YyBweTNrCis3Mzk5NCBkYWFiY2JmMjQxNWRkMGEzODkzOWUxMmY0YzFlYjFmOGQ3ZTJlYzU0IGxlZ2FjeS10cnVuaworNzM5OTUgMzJkNDg2NjJhYTVmMzYzMDUyODZlMzRiYjVjMzRkNjI3ZThhNTUwMyBsZWdhY3ktdHJ1bmsKKzczOTk2IDhlYmI5MGRjM2IwNDUwYjM5YmQ4YTliZDBiMjg1ZWZiMGFlMDk5MWEgcHkzaworNzM5OTcgN2JlYzZiNDA3NGY1ODQ3MWUzNDE3ZWFkZTU1MmNkOTU5NDNlMTVhMyByZWxlYXNlMjYtbWFpbnQKKzczOTk4IDczN2E2YjMzNzUwNTYzYzAyZjc1MDYxMzBlMmUwNWE0NmQxM2U5YWYgbGVnYWN5LXRydW5rCis3Mzk5OSA2ZDk2MjVkZDkyZTdlYmM1YWNmNTk0MTQ5MmNmNTFmMWMwYjg1N2I0IHB5M2sKKzc0MDAwIDQxZWIxMTI5MDE0MmU3NjM1NjJmMjg1MzRjMzQ5YjE5ZTU1Yzc1MTQgbGVnYWN5LXRydW5rCis3NDAwMSBhYTIyZTdmMzI1MTc4MmE3Y2U2ZjYwZjQ1NDYwOWE4ODc3ZmY1N2JmIGxlZ2FjeS10cnVuaworNzQwMDIgNzJjNWUxNzNhYWM1YTY4MWM5NTc3MGNmZjg3OTIzMDJjM2JjMzVjNCBsZWdhY3ktdHJ1bmsKKzc0MDAzIGVmMWIxMTk4MzM4YmZhZDcwNDg3OGYwNWU5NDI3Y2ZjNzVlN2QzMWEgcHkzaworNzQwMDQgMTI0MzlhMDMzOTg4YTRlZTIxODExYjQ2NGM3NzM4ZDFjZmY5MDc4NCBweTNrCis3NDAwNSAyOWU3YTRkZDQxN2NhMjU1ZmZkODk3Nzc0MDEyOGEwZmU1ODNlNTdhIGxlZ2FjeS10cnVuaworNzQwMDYgMGVkNDA1YzA1Y2MzMDRiZmY1N2Q4NGZlN2E1ZjQyYjgzZmQyMmY5OCBsZWdhY3ktdHJ1bmsKKzc0MDA3IDk4YmJiOTYzNDY3MmE1ODFkZmM5OTBmN2NjZDEyY2MwN2E5ZWYxYzUgbGVnYWN5LXRydW5rCis3NDAwOCAyMDczYTk4OWMwMTkyNmIxMzNmZjIyMjZhODBkZWYxNzRlNDJlOTVmIGxlZ2FjeS10cnVuaworNzQwMDkgOGM2NjA2YjMyY2IxYzkwZjM1MGU2NWIzODEwMzQ2MGFkMWQ1YmQ4NCBweTNrCis3NDAxMCA4N2IzMTIxY2U1ODBlZjIxM2RjYWEyYmMyY2VjOTQxOTk4MDg4ZmFlIHB5M2sKKzc0MDExIDkzOTA2YjM5ZmZlY2M0YjE1MDZmZmM3OGZlZDYzOGQwYWQ1ZDg3NzYgbGVnYWN5LXRydW5rCis3NDAxMiBhNTBlYjU5NmE2ZDNkMWMyZTc0MDM2ZmM0Y2FiZDU4ZjQ3MWI2ZjY0IHB5M2sKKzc0MDEzIGVkYzcxNGZmZTZjY2MzYTMzYjg5NGVjZmI1ZGM5NDU0NzAwZmNjMWIgcHkzaworNzQwMTQgM2EzMTYyNDNiZDZjNmY1ZjYzNTExNGFmMDkxYTU3MmFkOGQ4ZGRiNiBsZWdhY3ktdHJ1bmsKKzc0MDE1IGE4OTIyNzIzYTkyZDAwMWYyNDNjNDZhOWNhYjg4ZGU3MTU3NjMwZDEgcHkzaworNzQwMTYgNzNkY2QxODNmYWUyZDZkNjg4YTQ1OTM2NzE1MmEyNmIwMTFiYmM3MCBweTNrCis3NDAxNyBkMTM0MGE1MGExYjMwNzZhNWQ1YTkyMDVhNmY2MDdjYzAzYmVmYzdiIHB5M2sKKzc0MDE4IGJkNDMxYTBlNjgyNzQ5ZjQyZDhlOTlhZTQ1YzBlNDY4OWY0MjAwZWQgcHkzaworNzQwMTkgMWZkMGY1Njk3YjQwZGJjMWJmZTJlNDExNjVmMzNiNWI0MzI0NWVkZCBsZWdhY3ktdHJ1bmsKKzc0MDIwIDY5YTA0ZGJkNWYwYTI3ZDk1MDY4ZDFjZDZlY2I4MjczMTE1ZTU1NDkgbGVnYWN5LXRydW5rCis3NDAyMSBkYzA4NGY0MDAzYmJiZjY4MGJjN2Y4NDA4ODczMWE3ODRjMTM2MjE5IGxlZ2FjeS10cnVuaworNzQwMjIgOTgyNzE0NjhhYjA3YTE4OWY2NzgzOTRiZDM5YmI4ZGZmMjRlNDUwMCBsZWdhY3ktdHJ1bmsKKzc0MDIzIDMzNzBkNjA4ZTVhYTQ4NTYzOGNlOWMyMGI4YjgxYTlkYzc1ODhjYjkgbGVnYWN5LXRydW5rCis3NDAyNCAzODY0NTJiMmQ5ZDU3MzM3ODQ2NDlhOTc4MzZjZjA0MTM2NWQzOTE5IGxlZ2FjeS10cnVuaworNzQwMjUgMDc3NTBjNTVmZDU1ZmI4MDUxNDYxMzg3YjI2YmUzNTMwMDBjYTY3MCByZWxlYXNlMjYtbWFpbnQKKzc0MDI2IDliMTdkNTQ2OTgyMWIzZjhlMWUxZDMyZWViNjZiOGIxZGMxNjljYmUgcHkzaworNzQwMjcgZjk3OGRkZGI5YjcxZmQ4OGJkY2NlMGRlNjhmOWNhZDY3OTQwZThlYyByZWxlYXNlMzEtbWFpbnQKKzc0MDI4IGFiNjNhMjYyYTExM2I5NTRlYjE5YzdjZTI5MjU5MzQ3ZGQxODI2NTcgbGVnYWN5LXRydW5rCis3NDAyOSA3ZjE1NDdmNjZjY2YzMGMxZTFiZjAwZTc3ZWE4OGQ0MDIwZGRjZGQwIGxlZ2FjeS10cnVuaworNzQwMzAgZmM4ZmI4ZWZmMjBlYzg2MzgwOGU3YzY2ZTZkNjM0MzIwZGEzMWZkOSBweTNrCis3NDAzMSBlODMwZTgzZjBmNWFlNGJiODY5OTg4YzQyZjhiOWNiNWU0YzEwM2U0IGxlZ2FjeS10cnVuaworNzQwMzIgMGNhODBhMmM3N2ZmZGU4ODU0MzY3MjI4OTg3MWIzZTg0MDc0YTA1ZiBsZWdhY3ktdHJ1bmsKKzc0MDMzIGNmYTAwNGMxZmQ5NWQ3NjJhMDMxOGI1MTRjNGIyMjkzNjdhZDQxNTEgbGVnYWN5LXRydW5rCis3NDAzNCBiMTZhZTY5ZDY0ODRhNzA1MjNiNjE5YmJiZDI0ZTY2MzIwZjFjNjBhIHB5M2sKKzc0MDM1IGU2MjFlM2UzMTk2ZWE0MWZkYzMxYjNiMjBiMThjYzhhNzIxZjcxOTAgcHkzaworNzQwMzYgY2IzYWE4YmNkN2IwMmQ4YTAxZTc2YmQ2OWE1ZjRkMjRlMWI0YjdmYSBweTNrCis3NDAzNyBkY2U0N2MxMGQzZmFlMWZlZjJmYzJmZjUwODA0ODI3NTUzNjFiNTgwIHB5M2sKKzc0MDM4IGQyMDc5ZDVhZGNmYWE0NGExZWY1MWRiNWQ2NzJmZTMwNmQxZjZiNzMgbGVnYWN5LXRydW5rCis3NDAzOSA3ZjZkMDNiNTk4NjVjMzE3MGIzMTA4ZmYzYjNhNGYyNmQ5Y2UyN2RiIGxlZ2FjeS10cnVuaworNzQwNDAgMmRhYjhkNjNlYjU1NTY4M2ViZDQ5YzE4MGEyY2MzYWZiNzg5YjE4NSBsZWdhY3ktdHJ1bmsKKzc0MDQxIDllNzUyOWVmNDRkNDM1ZDE5OGRkYzI2Mjc5ODZkNTM1MzBlZmQ5ZTQgcHkzaworNzQwNDIgMTJhMTNlNTM4YTExZDk5NGY4ZmQ1NmRjZjJkMTdiYzQ2ZmIyZjMyMSBsZWdhY3ktdHJ1bmsKKzc0MDQzIDEzMGYxOTExZDE0NjViNDYwNDRlOWI5MDE2NjFiYzMyZGRlNTdlZDMgcmVsZWFzZTI2LW1haW50Cis3NDA0NCAyN2U3MGQ4MWFkNTc1ZWJlMjMxYTc2NGJkYmUxZDRiZjNjODljMWYxIGxlZ2FjeS10cnVuaworNzQwNDUgYjdiODI2ZjY1ZTc1ZGJlY2Y1YTQ0N2M4ZDk2MmNlNWVhMTM4MzM0YiBweTNrCis3NDA0NiA5MDZlZDExOWNiMTliNDJjYWQyNDdlNDU3MjQ4OTRhNWVjNmRkODZiIHB5M2sKKzc0MDQ3IDg1MTFjN2MwZDNlZmZiY2JmZWIzZjZjZDA5Y2VjY2M4YWU2OWM1ZmIgcmVsZWFzZTMxLW1haW50Cis3NDA0OCAwMWFiY2QzNzMwMTQ1ZjkzZGYzYjJmZDE4ZGRlMTM0N2U0ODk4NDliIGxlZ2FjeS10cnVuaworNzQwNDkgMTA3ZTRmYjkzNjA1ZmQ4OTAxNTE3NmZlZjU3ZjBjZTUxY2JkNzRmMSBweTNrCis3NDA1MCAxZWM1YzI2NmQzOTBkZjYxZmE4OTIwMWNhNDFhY2VlYTZiYzBiNmEyIHB5M2sKKzc0MDUxIGEyOWJhYmI1NDg4NGI1MTZkYWU2MTYxOGFjNGM0YzVhMzZkMjdkNTggbGVnYWN5LXRydW5rCis3NDA1MiA1ZDdkODUyNDA0MjYzMmQzZDkxNmFiMzVlZTQzZDYxMTAzZjlmYzJiIGxlZ2FjeS10cnVuaworNzQwNTMgNTkzOTIxODBiZjQ0NWVjZTFiOGUzYWJhZWU3NGU0YmIwMWQ4NzYxZSBweTNrCis3NDA1NCBiNDI4N2ZmMTY0ZTViYzkzOTE0OTk2NDgzNzVhMzU0ZWJkNzI5MzQyIHB5M2sKKzc0MDU1IDcyNGRmZWFiM2U5YjkxNTkwYWFkZTE4Y2U4NzliMzgwMzdkNzQxN2UgcHkzaworNzQwNTYgMmZjZGY5Njc3OTdkZTY1NDY5ZTlhYmZiOGMyNDdkYjU5NzI4MmIzOCBweTNrCis3NDA1NyAxYzU3ZGViZjk3YmMyNzRkMTZmYTIyZWU5ZmY5ODNmYmQ5MmEwMDIzIHB5M2sKKzc0MDU4IGMwNzViOTc0YzM1Y2E0ZDEyZmM5MThmNGJkMmZkY2E0MDc2N2U4MDAgcHkzaworNzQwNTkgYTA2MTY5YTg3MmIzNDg5Y2JjNGI1ZGFhMDEwZTU0M2ZlNWUzZjQ5YiBweTNrCis3NDA2MCAxZGI5N2NlNGE4NTBhMGNlMWMyZGQ0NTczZDhkZGU1ZWNlN2U4ZGRhIHB5M2sKKzc0MDYxIDIwY2MwZWFhODkyNjQ2N2ViYWJmN2RkN2UzYmQ0ZGZjMTU1MmNmNzcgcHkzaworNzQwNjIgNzYzZTUxMjk2NWZhNzgwMjRhY2I5MWM5N2NjOGJhNzczOTBkNjRiMCBweTNrCis3NDA2MyBlYThmZjhkNjI5MjhhM2NiYzQ0NmQwZTI0MmZmY2FlODM1OWQ5ZWY1IHB5M2sKKzc0MDY0IDhhYTgwYjcxNWM1MWM3NmU3NGY5MzNmNGFhOTAzNWI2MmNiNzc2YjkgcHkzaworNzQwNjYgMzZhN2U5NmU5MGZiM2EyNjUyMDVhNTM3ZTY3NmQ2YzA1YjkyZjU4ZSBweTNrCis3NDA2NyBkYjViM2QzMTg2NDkzM2I5YWMzYzVkZjIzM2UwYzg2N2Q4MzM1MGEzIGxlZ2FjeS10cnVuaworNzQwNjggZmUyYjAyNmRkZjIxY2QxZTVlN2Q2ZmE4NGUyZTEyM2FhOTlmODExMiBweTNrCis3NDA2OSBlMjM5MWQzNjBhYzI0NzkxOWM0NTc1M2I5MWYzOWM1ODEzNzhiYzRiIGxlZ2FjeS10cnVuaworNzQwNzAgYmNkYjdiMTg3ZmFhMDU0M2NjNGRhMTZlNzk4ODQ1ZGYzNTc2ZmFhZiBweTNrCis3NDA3MSBhYjI0ZmY2NDZkYTg4ZjU1YzQzYmU1YzQ1M2RlZDhkN2U3OGIzNGE0IHB5M2sKKzc0MDcyIDZlMDc1ZWU0OGQ0YmFlYTIyZmViZjFjYTI3NDcyMGUyYTRjODgxYWQgbGVnYWN5LXRydW5rCis3NDA3MyBiYTczOGFmMTRkZmNkNDFiMzJkNTdjNTI2NjNkYzUyNjcwMDhiYWE3IHB5M2sKKzc0MDc0IDU4YjUxMmVkZmRiYjQxYWQwZmFiZjdlZWY4YzZlYTgwOGJhYTA3M2QgbGVnYWN5LXRydW5rCis3NDA3NSAyNTkxMzhhOTg4YTUyNzBhMWQ4NzE4ZGM5MjFmOGE1ZmY0YTZlNGNlIGxlZ2FjeS10cnVuaworNzQwNzYgNWVlMmU5NjVkYTZlZGUxMzNjMjEwMTE1NTIwOWVjMDMxZmMwN2EyOSBweTNrCis3NDA3NyAwYWE1MzIxMTdhNGJiNjlmMDdjNjNhZTQ3YzVlYTQzMDNjYTNiNzgxIGxlZ2FjeS10cnVuaworNzQwNzggYjA1MTA1NWI1OWYxOTQyY2NhM2I2MTU2NDcyZDgxMDdkNzc5MzIzMiBweTNrCis3NDA3OSBhMTllYjk2MzdmZjdlZGZmYTE1YTZkZDY5MDZhOGI0NmQzZmZmYTI0IHJlbGVhc2UzMS1tYWludAorNzQwODAgOWRjNWFhNjJiZTcyZmY4N2JmOGY5OTkzNTZlMjJlNWUxYjkxOTBmMCBsZWdhY3ktdHJ1bmsKKzc0MDgxIDY2YmFiZTYzMTAzN2Y3NDY3NzcxYWU5NGZiNDdiMTQwNjIyZjc2MGIgcmVsZWFzZTI2LW1haW50Cis3NDA4MiBkZTFkNTIwNjlkMmRmY2I3MjZjOTg1MmRhNzc0YWE2NTcxMGRkYzY5IHB5M2sKKzc0MDgzIDM3NTU2M2M2ZDMyNDRhMTlkNzg5Y2MwNmI5NWU1MzhjZWQyNzViN2MgbGVnYWN5LXRydW5rCis3NDA4NCA1NGIxZjgwMjRiYzgzYzM2MzQ4MDRkZGY1YTg5MGQ5MjU2ZTU5MmRkIHB5M2sKKzc0MDg1IGYyMDcwNTg3NWU4MDY1MDk3NTJhNmU1MzJjNGQ3MWE0NzVjNDJkYTUgcmVsZWFzZTI2LW1haW50Cis3NDA4NiBjNzA0MjEyNzE5NmE1MTVmYWVmMjllMmUwNGNjZWQyNzUyOWRjNmM4IHJlbGVhc2UzMS1tYWludAorNzQwODcgNGYxNzhlNTk1ODEzMTJlNzhkZTE3ZTQ3NjEwZjI4NGM5ZjJmNmJiNiBweTNrCis3NDA4OCBlZTBiOWE5MzFjOTRhNDk2NDQ3YTdlMzc4YjA5ZGE4ZWJmOWQ0YTA4IHJlbGVhc2UzMS1tYWludAorNzQwODkgYzMzNmIzMDM4ZDA1NDY0MmFlNDc3YTI2MzcxM2U0MWUzMzNiOGNiMCBsZWdhY3ktdHJ1bmsKKzc0MDkwIDQ2MTJhMmFjZGYyZjYwN2Q3NDMyYjNkZWVjMjkzN2RiNTUwMGRmNzMgcHkzaworNzQwOTEgNjIzNmFkYjM2NjE4MWQ2MjViYTNkYzZiNjU2ZjQ5MGEzMDkxOTg0MSByZWxlYXNlMjYtbWFpbnQKKzc0MDkyIGQ2MGI1NTllZWFkOWYyOTc0ODc5ZGY1OTRkYzE4OWM3YjU4ZDZjYzYgcmVsZWFzZTMxLW1haW50Cis3NDA5MyAzNjYzNmZhNTRmMzMzMzlhY2I3NjViYTY4MGU2MzViMDFkNjRiZDY2IHJlbGVhc2UyNi1tYWludAorNzQwOTQgNmFkMjU2MTI0MDgwNDNhMGRhYmU5Y2ZkN2M5NjgwZTczYjdkMGQzOSBweTNrCis3NDA5NSBmMzExMzk1NDg3Yzk3MGYyZWE4NTJhYTlhZTcwNTFiYTAwODYwMzkyIGxlZ2FjeS10cnVuaworNzQwOTYgZWMxZjMyYjcyYWJlODEzMjY3OTQ4NTMwMzQ3YmY3NzI5MTM3ZWZiYSBweTNrCis3NDA5NyBhZjk3N2U5NGUyZmRkNGUzYzc0ZWU1M2YyZWRlNjRjMjk5NmZhZWQ3IHB5M2sKKzc0MDk4IDNhNjEzZTAwZjY2ZDM0OGJjM2NhZTIyYWIyYjY1ODFiMTlmODQ5MjggbGVnYWN5LXRydW5rCis3NDA5OSBlNjI5NTdhMGVlMTQyMzdkMDM5ZmNhNjIyODAxMTY3NGNmY2UyNjViIHB5M2sKKzc0MTAwIGVlYWQ3ODA3ZGY3Y2MwNzhmY2VhOTljNWZiZTljMWU2YTE4NGVjZWYgbGVnYWN5LXRydW5rCis3NDEwMSBjMGFjYWUxOWI0ODc2NzZhNzYxNzcwODgwYjdhMzk2YmRjZGRhYzNmIHB5M2sKKzc0MTAyIGVhZjRhMDA0ODRiZGJkODNlZDAyMTJkMGU0YTQ3Y2ZmZTdhNGFmYTIgcHkzaworNzQxMDMgYWUyYzA1NmM0NmQzNDQ3MDNlMmQ5YmQ1M2JlZjI1MGExZDhiODRlNSBweTNrCis3NDEwNCA4MWM4YjMwNDE2M2UzYWRhZDhmNWNkMjhlOGFkNjI4N2Q4ZGJhZGE0IHJlbGVhc2UzMS1tYWludAorNzQxMDUgMGFmOTQwN2M4OGQyZTZlZjFiNDExNTA3Y2YzMjQ3N2VkODlmOGJkMyByZWxlYXNlMzEtbWFpbnQKKzc0MTA2IDVjZjY4ZDNiNjUzMjQ4OTlmNWZjNDBkMGZmNDkzYTQ5MjBkZDU0N2IgcHkzaworNzQxMDcgYTY0MGJiM2I5YzJiYjZiZDJiNzBhZGQ3NjhlZDNkZTJmMjFjMzMxMyBweTNrCis3NDEwOCBmNTAyOTA3OTdmYjUwYTUzMGQ4N2JjZGRkNzI3OTY4ZWY2NzEwNDdlIHJlbGVhc2UzMS1tYWludAorNzQxMDkgZmU3OTg4YTU3MGRmZjIxM2UwMDdkNTI2ODM0MzFkYmQ1OTk5MWFkYSByZWxlYXNlMzEtbWFpbnQKKzc0MTEwIGRmYWY2ZGUyYzhjZTdhMzQ0ZWE4N2Y4OGVmNzFhMmRiOTBjZWU2NWUgcHkzaworNzQxMTEgZDgyNmEwY2MyYzBlMGU2MWY3OWFiMzJlMTY2MWUxMjNkZmJjZjJlYSBsZWdhY3ktdHJ1bmsKKzc0MTEyIGQxZDgyNTRjNGVkNWM2Zjg4OWNjZDQ5NGVmZTU1NGMyYTczMGFjMjQgcmVsZWFzZTI2LW1haW50Cis3NDExNCA3MzJmNzJjYmFmN2Q4NGNjY2Y2MTNkNWFlOTA4ZWViMTFkY2VmMzMzIGxlZ2FjeS10cnVuaworNzQxMTUgMGFjZjI0OTAxNWNhNGNiM2QwOTU4MTMzZjkyY2JkNTlkN2M5NTBkZCBweTNrCis3NDExNyAwMWI3NjNjZWI0MDg3M2U4OTM0Zjc3ZDgzOWRmNWUzOWU2NTQxNGJjIGxlZ2FjeS10cnVuaworNzQxMTggYWFjZGM3MzVmMTliMTg1YzJmZDIxMTcwMWMxYTQ2M2Q2N2U3Y2ZiMSBweTNrCis3NDExOSA3YmY4ZmMyMDAzN2ExY2IyMWIwM2QxZGYwODg2MzUyYTg5ZWIyMWI5IGxlZ2FjeS10cnVuaworNzQxMjAgODYwZTcxMmUzMmUwZGZmOGJmMzBkZmVkMmRhM2ZhYmI2NjlhYmI5NCBweTNrCis3NDEyMyAwMWUyZTlhZGQwNzBmYjQyMjM1YmE4ZmZiYWZkMjgxNDJlNTFjYTVkIGxlZ2FjeS10cnVuaworNzQxMjQgMzgzMmNmMDM2ODdiYjM5NTBhNWMyNWFmOTFlM2E5MDYzMGU4MmU0NyBweTNrCis3NDEyNSBjYzlmZWZjZGQ1MzNjNGI3M2E3ZjM0MmE4MGJhZTYyM2Y1ZjQ1ZjJkIHB5M2sKKzc0MTI2IGNmYWIxMWRkM2U3M2U1ODZmMDE0MzkzNGIyMjA0MzQ5OWU3ZjQyZmUgcHkzaworNzQxMjggNjNmZDE3YmE5ODc1MzA2Mjk3OGJhMTFjNTlhZWU5YzEyMmI3MDY5NSBweTNrCis3NDEyOSAyY2Y5ZDE4ZDNkZjU0YzlmYzdiMTg4NzI4ZGJkMWQzMThjODk1NDFmIHB5M2sKKzc0MTMwIDBiMWYxZDdiMmU2ZGZkMDU5NmNlNDQyOWE4MWY3NjJjNmM3ZTI1NjkgcHkzaworNzQxMzEgM2M0NDkwYWQwMWNmMDc2ZGEwNDk2MmYyOTI2ODFjYjQ0M2NiMGY4MyBweTNrCis3NDEzMiA3OTcxOGVlMDM5ODYyOWFjNDFjMDMyZDdjMDlkODAzZDc4ZTE2NGUxIHB5M2sKKzc0MTMzIGViYzk4NTZhOWJkYjI2MDFmNDMxZDYzYWE5ODhlMmM2OTdiY2MxYjcgcHkzaworNzQxMzQgNTYxMzY0YTM0YjBjNDZkMTM0NGZlMjlmODBhZDJiY2VmYmYwNmIwMiBsZWdhY3ktdHJ1bmsKKzc0MTM1IDBhMjBlZGYzZjdkYjg5ZWI4ZGVmNjc2OGZhOTUzMzg4NjYyMDFiMTYgcHkzaworNzQxMzYgNmY4NzM2NzM3OTk0ZGMxMTlhOTgzNDVlOTZkNmUyZWYwYWViZTA0MCByZWxlYXNlMzEtbWFpbnQKKzc0MTM3IDlmZjViZDE2MDE2YjQwN2M2Nzk3NGJhMjZlYTAwZTA4NWQzOTBhZTAgcmVsZWFzZTMxLW1haW50Cis3NDEzOCAyMWU1ODMxY2JhZThhYmJjMzM5YWUyOGQxNTZiYWE5Y2I0NGNjN2VmIHJlbGVhc2UzMS1tYWludAorNzQxMzkgMzgxNWFiZWQ5Mjc5YjhkODExYzg0YmM0ZjVlOGFiMTk5YTZiNjVlNCBsZWdhY3ktdHJ1bmsKKzc0MTQwIGMyOGU2MWM1YmRmODI5ZmMwZmQ0N2E0Y2RiYThlZTk3YjY5ODZlYTcgcHkzaworNzQxNDEgOTQ5OWMyMzJlZGI3M2ZiNzAyNjlmOTU3MjEwNmI0NGI5ZjQ1ZjU4NyByZWxlYXNlMzEtbWFpbnQKKzc0MTQyIDRkZjcwNTAwZGJlMzRkNTc4YjgwY2MxNTYwODRmMzExNDVmZjVkZGIgcmVsZWFzZTI2LW1haW50Cis3NDE0MyAwM2Y1YzY3ZGYxOGUyYjZjNTRkODI1MjFiOGZjNjVmNjJmYzNjMzA2IHJlbGVhc2UzMS1tYWludAorNzQxNDQgOGQ2ZWFkMmFjY2EwMDRmNTcwNTdhMDE1MjA2NzE3MTI1NThhNjMxZSByZWxlYXNlMjYtbWFpbnQKKzc0MTQ1IGZkYTkwNjJlYmZhNGM4NzFlOWNhN2M3OGY1MGMwMTVlNDIyMWU5ZGYgcmVsZWFzZTI2LW1haW50Cis3NDE0NiBjZGM3NDlkOWMwMjFiOTdlYzY3ZWM3NDE5MGZkMWUwZjVlZTc2MjhkIHJlbGVhc2UyNi1tYWludAorNzQxNDcgN2RjZTQwNGZjOGViNWIzM2MzMDZiNTg1OTczMWFjOTU2NGNmMjg1MyBsZWdhY3ktdHJ1bmsKKzc0MTQ4IDM2MTJhNGVjYTVkNTFjY2FiMWVmYzc4ZjJmNmIwYjM3ODJkZmZlYmEgbGVnYWN5LXRydW5rCis3NDE0OSBiNDBlZWI4ZjY5Y2E3YmI2NDU5MmM2OWZhZmZkZWIxMmJlMDdjNmMwIHB5M2sKKzc0MTUwIGMzMGZhOGM1ZTMyNDZmOTZjMDlhYzllODBlZDNlM2ExMTEyNzcyNmIgbGVnYWN5LXRydW5rCis3NDE1MSBlNDA1MDZlZGNiM2UxNTdhMDllZTcyMGQwMjc0NzE1MzEwNzQ4MzdlIHB5M2sKKzc0MTUyIDZiYjAxODg3ZjQ3NTY3Njc2MTFmMjgxMzllNWY2ODI0NGU5MzM3MWUgbGVnYWN5LXRydW5rCis3NDE1MyAyNGEyYWNmMTI5MWM5NDEzNzIyZjMxYTNhNTY1MTdkYjAwMWY3YmQzIHB5M2sKKzc0MTU0IGFiZmQ1Zjc4ZjQ2NmFlMTcwMzAwODU4ZDZkMzdkOWI2YWQ5ZDA1YzkgcHkzaworNzQxNTUgZDc0N2Q1MmY5YTY2OTA2ZTUyYzE3Y2UzMzQ5NTFkMThlZTE2MTk1YyBweTNrCis3NDE1NiBmNzkwNDMzNjk2MjVmZjlmNmYyOGIyNGQzMTYwNWJiZmE0OGQ0ZTFkIHB5M2sKKzc0MTU3IGQ2ODJjYTg4OGUyNzk0YjE3YTU2ZjE5YWVhMmVmM2NlNDA3NjljNDYgcHkzaworNzQxNTggNTM4ODUwYjM4OTMxMDkwNzFjNTE0ODBhODQ4OGM1MjI5MDFjMjdiNCBweTNrCis3NDE1OSBiN2FhYmJhODRlZTFhMGE5OWFkYjAyODNkZDZjNzllMDIxYjdmNGU5IHB5M2sKKzc0MTYwIDU5ZTVmMjk5ZGFhMDIwYzVjYmVlZTI0NTg0MjdlYzQ2M2E5MmRjMDAgcHkzaworNzQxNjEgZWM4NWE1MWRlOWNmNDhlOTAyOGU5NTIxNzllNGU4MDM5NjUyODk0NCBweTNrCis3NDE2MiBkZjVhNzA4NjA3ODEwYmYwOTYzODUzNzE5OThjYjk0Zjg1ZWU5MmRjIHB5M2sKKzc0MTYzIGNjOWExYTNlM2ZiODFlNDMyODZjNGMzY2I4MGJjOGZkOTNkNjVhY2MgbGVnYWN5LXRydW5rCis3NDE2NCAxZWNiMDdlMTFhMmRjYzYxZmUzZTUyMzFjNDIzM2NmYzlmODJjYWExIHB5M2sKKzc0MTY1IDljMjExMWNmZDk3NDM2ZGIyYTIyNGZmMzFkYjgwMGEzYmI5YzZlNjQgcmVsZWFzZTMxLW1haW50Cis3NDE2NiAwNzYzNDYwYjBiMzgxZGZlZDYxZGYyYzA3ODBkNTg2OGU3ZjQxZTQwIHJlbGVhc2UyNi1tYWludAorNzQxNjcgMTQ4MGZhZTNiNzAzZmNkN2QwMDRkNmU5ODJiYWMzYjA4MGQwMTAwNyBsZWdhY3ktdHJ1bmsKKzc0MTY4IDc0YWFlYjljMzVmYmQxMTRlYTIxYjNhYmRiZTk5YWZjZjM2MWFhNmMgcmVsZWFzZTI2LW1haW50Cis3NDE2OSBjYjQ2YTBkNzg5YzY3MGY1NGE4ZDkwZjQwMWMyODFhNDE0ODYzYmUxIHB5M2sKKzc0MTcwIDI1Y2Y3NzVhNzE1MTlmZmY2MDYwYjk1N2U1OWIyMWJkNTk4OGE1YTYgcmVsZWFzZTMxLW1haW50Cis3NDE3MSAwM2NmNGNiNGExNTAxZDVhMzY5YmNmYjJkYzQ0OTI4ZGU0NGZmMWVhIHB5M2sKKzc0MTcyIDkwOGIzOTc2NGM3MzhkNzE1YzlhYmNmYWYwYmY2OGU0M2Y4YjdmODkgcmVsZWFzZTMxLW1haW50Cis3NDE3MyAxMzI3YWY1NmVhNDlhYjg1YjFiMjM1Mjk1MGE4NjMxOGM1ZWZjZmMxIGxlZ2FjeS10cnVuaworNzQxNzQgZTY1MGE5ZDY0YWI1YzZlMjhiZGY4ZTQ2OWI4ZWZlNGUwYTAwOWZmMiBweTNrCis3NDE3NSA5NGZjNDMzYzQzNzM0NmFiNjI4MDQyMWZkZmIzZWM4YjVlYTUwNGYyIGxlZ2FjeS10cnVuaworNzQxNzYgYTBlYWNiNWY5ZDhhYTM1MmE2ZTYyZWJhMjY3OGVlZTQyYjgzNDBlMiByZWxlYXNlMjYtbWFpbnQKKzc0MTc3IGRmMTc0NDMxOTQ2NmM4Y2JmODc0ZThlYzliZDdiZTNjNjUzZDUwMWMgcHkzaworNzQxNzggMjYwZmI0MjFhYzA3YTE0MDg5NTA4MGUzNjIwYjVkZjhjOGZmZjNkNiByZWxlYXNlMzEtbWFpbnQKKzc0MTc5IDlkZGEwMmFmYThlZDAwN2M3YTEzODcyNjQwZjQyODc3YzVjNGY4MTEgbGVnYWN5LXRydW5rCis3NDE4MCAwMjVhNjQyOGE3NjRmNWU0NTA5MTkyYjc4MjdjMmUxYjg1MjM5MTJiIHB5M2sKKzc0MTgxIGI5NjQwNjU1MTJiMTU1N2FkZGFmYTJiNWY0Yjk5OWJiZTg4ZjdkMGQgcHkzaworNzQxODIgYjExYTc1MjRlNTU4ZjFjYTNmMjJkODBkZjlhM2M1NGZkZTUzZjQ0MyBweTNrCis3NDE4MyAyMDc1NDFjOTg3NDQyZDZiYmJmOWY2ZGY0ZjhkMDU2NDk4MWYwM2E1IHB5M2sKKzc0MTg0IDc0MjJkNzg5ZmRjYTliMmU5MWJjMGM1ODlmY2JjYTgxYWI4YzA0MDQgbGVnYWN5LXRydW5rCis3NDE4NSA5Nzc2MDJiM2UxNDBkY2JkYTM5MTkxOTZiN2NhMWUxZTE2NTNlMzdiIGxlZ2FjeS10cnVuaworNzQxODYgZWNhMDIwN2JiNzdmMDkxYTk5NDU4NDZjODk2YWI0MjYyN2I0YjZhNSBweTNrCis3NDE4NyAyZTk0NzI0NTk1OGIwMWM5ZTMyYmJlMmJmNGM5ZjExOWM2OTk4MjkwIGxlZ2FjeS10cnVuaworNzQxODggNjA1MjM0MThmOGM4ZTk1NTE3OTJmM2VlMWM0NzQ1NmVlMTRhMzRmMCBsZWdhY3ktdHJ1bmsKKzc0MTg5IDJmYjEwNTc3YzYyMWUyOWZmYjk1ZTQ1MmJjNWIyNTgyMTQyZTk3NTIgbGVnYWN5LXRydW5rCis3NDE5MCA4NjhiNGU2MzliNWFiMWI4ZTcxYTZhZDgyYzMyYzBmNWM2YTg3OWU1IHJlbGVhc2UyNi1tYWludAorNzQxOTEgYjc3YmI1MzIxMTA4ODkxZWYyNjQ3NzQ4MzFjODg0NmIyMTZjMjQ1OCBweTNrCis3NDE5MiBjMDBiMDg4NDJkN2ZkNGJkMzEzOGI0OTdlNjkyMDEyZDk3ODUyMjQyIGxlZ2FjeS10cnVuaworNzQxOTMgZTk5MDEzYTlkMmY5Y2E0ZTBjMzYzZGMwYWRmNDA2YWU1NmFjNDJiMSBsZWdhY3ktdHJ1bmsKKzc0MTk0IGQ5OGI4YTZlYzJiODRjNWI3ODAxMTczNDYwNGVhNTZjNGRkNGYxNjggbGVnYWN5LXRydW5rCis3NDE5NSA2MWEwNjViMzAwMWQ4N2Q1NmIzOWJjMDdhZWRjMmQxNzliYzE5YjM5IHB5M2sKKzc0MTk2IDc1OTYyMmQwYWUyODQ3NTZhNGFkZmU4YTIzYzQ5ZWZiOGVhMDUwM2UgcHkzaworNzQxOTcgY2ZmYjFlOTYzZGQ4YTA3NzIyMTFjMDc1NGRiYWRmNzcyMDFmNmYyZSBsZWdhY3ktdHJ1bmsKKzc0MTk4IGQxZWM5NWFlMGFjMjg0NmJkOGM5NmUyYzU4YzZjZjNjNTg1OGRlOTUgcHkzaworNzQxOTkgYTE0YzA4ZjhlNzdiNWY4ZDlmZDEzZWQ4YWU2NWU3NDM0YmQzODkwNCBweTNrCis3NDIwMCA3ZDQ2MDgwMDZjZmFjMzdjYzkwODQ5YTEyYWU1ZTg0OWZlMjRiNjFlIGxlZ2FjeS10cnVuaworNzQyMDEgNmM3YjRiNDcwODI3NzVhYjdiZDc2ZTQ5YzE0MTNmNGM3MGMzOTg1NyBsZWdhY3ktdHJ1bmsKKzc0MjAyIDRiMTIxNmY0ZmNiNWIwYzIyMTEwNjA3ODhiYWU5ZTFhOTRkNzAxYTEgcHkzaworNzQyMDMgMGY1N2IzMGExNTJmNDYxOTFkYTZjMjhmOWViNjYzMWRlZjc3ZjgwZCByZWxlYXNlMjYtbWFpbnQKKzc0MjA0IDUxMTJhNTZkZjk3N2ExYzFmOWY5ODQ0MGIzMjU5NThkYmNiNGRjYzMgcmVsZWFzZTMxLW1haW50Cis3NDIwNSA3MjRhMTAxMWU4OTdhN2I5ZjMyYWUyN2Q0MTAxYTg5NzhlNWQzMTYyIGxlZ2FjeS10cnVuaworNzQyMDYgMGI4OTNjNmVhZDRjNzM2ZmU5ZDhjMjg3MmJjNjM5YmYwMTJjZGIwMyByZWxlYXNlMzEtbWFpbnQKKzc0MjA3IDFiZGU4NDU1MjIyYzM0ODlhNmYzYjI4YTRhZDk3ZmE4Y2YwMzVmNDIgbGVnYWN5LXRydW5rCis3NDIwOCBhNTU2MzRjZTgxMTgzOGRlODBjZWY0MTFhYzA4NjhiZTk0ZTgxMzAyIHJlbGVhc2UzMC1tYWludAorNzQyMDkgYmJkMWQ5MGQxNThhYmRkZDU1MTkwM2FlNzQ3OGE1N2M5ZjdhODRiMiBsZWdhY3ktdHJ1bmsKKzc0MjEwIDQyZGIxY2YzOWFmZGJhYzUwYzI4NTFjNTI1M2JhMjI3YzIzZDIzNDcgbGVnYWN5LXRydW5rCis3NDIxMSA2Nzg5ZDg0MDYyMWY0ZDBkY2M2ZTU1NGQ5OTZjZWU5ZDFkNzU4YmQ5IHB5M2sKKzc0MjEyIDJmOGEzNjJlMzczZDk1MGNjOWI4MGVmMDQ1ZjUwYWRjMWUxZjFmNTAgcHkzaworNzQyMTMgMTViNjFmMzI3ZDUwOTVkYmE4YjVjYjJkYmUwYzE1Y2Y5MmYzZTQ4ZCBweTNrCis3NDIxNCA5YmYyMDY4NTdkN2U3OWNlMmQ5ZjUwYjEyMTBkMjM1NTI3ODEyNDMwIHB5M2sKKzc0MjE1IGMxMDc3M2JiYWZhMDM1OTNlNmI2MDJkNTVlMWI1MWVjNGNjMDY5MDkgcmVsZWFzZTI2LW1haW50Cis3NDIxNiBiNzFlZWI5MDcwOTM3YjU2MmYyNzIzM2VlZDUzZTgwNjU2MjQ4OTllIGxlZ2FjeS10cnVuaworNzQyMTcgMGYwMTYzZjhjNWI1NmNmZDJmZmY1YTlmOWJjODM3NGUyZTM2NWI5OSBweTNrCis3NDIxOCA4OWViZTQzMjQ0YWViZjZiYzNjYmYxZTc3MzE1NzUyYWZjMGI3YWZiIHJlbGVhc2UyNi1tYWludAorNzQyMTkgMGQyMDNjYTNhYzc4ZWRmMDQ1OWVjYjRjYjU1MjI5MGJmYjc4OTU5OSBsZWdhY3ktdHJ1bmsKKzc0MjIwIGE5YjUwN2VjZGE0YzlkMjcyYjMzMzg3MThjZjM2MjFkY2U0ZmE0ZDAgcmVsZWFzZTI2LW1haW50Cis3NDIyMSA4YzIxZmZmYjA2YzQ2MTRhY2FiYjc5MTFlN2E2MGQ0ZDk3OWVhZDc5IHB5M2sKKzc0MjIyIGZjNDY5YWY2ZWI3MDI2YmU4ZGFjOGM3YTJjYzE5MjU0MzZjY2ZjMjIgcHkzaworNzQyMjMgMDZiODZhNmUyOGYxYTE0MzU3ZWQ0NzU4YTcxY2RlNDFhZDNiZTkwOSByZWxlYXNlMzEtbWFpbnQKKzc0MjI0IDc0ZGM3YmI0ZjQ2NDNiM2Q2ZmU4MDIyN2E1OWFmMmY2OWIyMmRjYmMgcHkzaworNzQyMjUgNjA3Y2QxMTlmZTRiOTc4YTNkOWY1MWY1Mjg3ZTMyMDE0NTI4YmNhNyBsZWdhY3ktdHJ1bmsKKzc0MjI2IDEzMjZlZjg2ZjNlNDBkMzI2ZjZjY2Y1ZTJmMjc3Y2M1YWZkOWI0ZjkgcHkzaworNzQyMjcgYjM0Y2FlNzg2Y2IwM2U0NjcyNDJiZjU0OGNlYmZkYzQ2MGViNzVjMSByZWxlYXNlMzEtbWFpbnQKKzc0MjI4IGM4NTNhM2QyYTE5ZDM1OTJkZjIyOTEwMjNjOTkxOWZjYWE4ZmU4MGMgbGVnYWN5LXRydW5rCis3NDIyOSA3MjEyZTNlMGNkMTc1MDcwNzUyMjRmZjAwNWI2OTI3M2IzNWZiOWJhIHJlbGVhc2UyNi1tYWludAorNzQyMzAgMGY4YjU2ZWYwZjdmNGRlMTk3MGViNGQwODc4OGExYTIzZGRkYThmMSBsZWdhY3ktdHJ1bmsKKzc0MjMxIDdmZDlhZGM4MTI4MDBjMTM1ZGYwZDI2YjQ1MzNjYTg4N2E0NzUxMzYgcmVsZWFzZTI2LW1haW50Cis3NDIzMiA0NDMxODIxMGIwM2M3MGFiZWQyZWQ3NjUxMTY3OGYzODk0YjY1MjVhIHB5M2sKKzc0MjMzIDAxZjg0OGVhMTEwYWUzZDU5MGM0YjJmMzBmYWZmZDMxZjkzNWUwZWIgcmVsZWFzZTMxLW1haW50Cis3NDIzNCBkYTk4Y2JlYmRhY2JhMjlkMDY2NDhlOWIzYTdhZjQzZjViNWI1MTg1IGxlZ2FjeS10cnVuaworNzQyMzUgYmIwYjdkMGU1NTBkODBhODc5ODI3NmRkY2RmMDllMWI0MTU1ZTNhZSByZWxlYXNlMjYtbWFpbnQKKzc0MjM2IDA3ZGJkZjAzZThmNTAzMDcyOThhMmYxNTEwY2EyYzc3MWRlYzBiOWUgcHkzaworNzQyMzcgM2Q0NTM2N2NjNjJhYTdmZmI5OTIyYTQ2OTBiNTJhZGEzNjY4YWExMyBweTNrCis3NDIzOCBhZGY0ODRkZjY3OTQ4ZTQ4YjE2MjU2YmUxZWQ3ZTdkNDE4ZjBhZTU3IHJlbGVhc2UzMS1tYWludAorNzQyMzkgYWE5ZmY0N2JkMWM4ZWU1NjU0OWIxNWU3YWViOGY1MGE5ZmI5ZmQxMiBsZWdhY3ktdHJ1bmsKKzc0MjQwIDU2YjJkYTkzYWQ5YzgyMzJkZTVhYTBiOTVlYjMyZjI3MWUzOTA1ODUgbGVnYWN5LXRydW5rCis3NDI0MSA4OWFkMjBhMzJhMjYwMzEwNzg2MzVlYjY3ZGYwYTQ3M2QxZjQzZDQ1IHJlbGVhc2UyNi1tYWludAorNzQyNDIgYmNkMzllZmZkMzFlMzc4NmZkYjZiMzY1ODdlYTIxZmEyMDJiOTZjMSBweTNrCis3NDI0MyA4ODk4ZjI4ZTZkMmMxYTk1NGE2NWE2YjBmMDQ0NGE3NmExYzk1NWY0IGxlZ2FjeS10cnVuaworNzQyNDQgNTcyYzE4N2RmNjEyZTI3NmEyNzNmNjdjOTVmODgwM2ZkYTMwZDI5YiBweTNrCis3NDI0NSAxZGZkNmY0MDczMzZjYTAyNzMzYWU0NTI5MjI4YjkzYWRhZmIwYzhkIGxlZ2FjeS10cnVuaworNzQyNDYgNWUwNTg4OTA5NmNkMDgwZTcxMjIwMjM2ZmYzNTcwODhhMWMwY2FlNSBweTNrCis3NDI0NyA4YTAxN2QzY2I5MjhhZTcyZWEwMTBiOTNhNjQyOTA4YTQxOWYzN2UwIHB5M2sKKzc0MjQ4IDlmZmZkM2VkYjY2ODlmZGFkMjU1NDQyNzkyYmZiMGM4ZmJkMjUwMTQgcmVsZWFzZTI2LW1haW50Cis3NDI0OSBhNWQwMjVhZDIxYzhlYTE0ZmFkMzgwYWQwMmI5MzJlMzIyOWFlOGU0IHB5M2sKKzc0MjUwIGYzNTdlMjYwM2Q5M2JlYjE1ZmFjYzU3YTNmN2ZjYmZiNDQ0ZDNjYjggcmVsZWFzZTMxLW1haW50Cis3NDI1MSA2MGIzMWYwZGIwMTYzODQ2YWUyYTJhNmY2NzllNTZhYjI5MmVlNGI2IHJlbGVhc2UzMS1tYWludAorNzQyNTIgZWUyNTQ1OWU5YjkxZmFjYWM0NzZkNDdkMWI2Y2IyNjVjMTJkNDJiZiBsZWdhY3ktdHJ1bmsKKzc0MjUzIDNlZDE1OTNkZDE3NDcyMDI3NmJhNzEyNThjMTAzYmNjNTVkNmQxMmYgbGVnYWN5LXRydW5rCis3NDI1NCAxNTY4M2MwZWFmMjg2MzJkNjI3ZWEwYTUyMGJmZjYxZWE4Yjc4MjhhIHB5M2sKKzc0MjU1IDY0YWY0MTYwY2YxZWI5ZjkzZGRhYzg3NjczY2EwMDQ1ZWViZTgxMTYgcmVsZWFzZTMwLW1haW50Cis3NDI1NiBmYTE0ZjgxMzIyY2UwNzE4NzhmM2Q2Y2QyNWI2MDA0MzNmMGM3ZTU2IGxlZ2FjeS10cnVuaworNzQyNTcgMWRmMjgxYzllMTgyMWZjOWM1MGRlYzg3ZjhmMWM3MzlhNzc4NWVkZiBweTNrCis3NDI1OCAxMzc1OTlhY2I4YmFhMzE4MDA3NjJjN2ZkNTFmYzdjNDBiY2M0M2YzIGxlZ2FjeS10cnVuaworNzQyNTkgOTM4ODNmMzc4N2I1NzliOTc4MTE0MjE4MjBiODM5YmM5MjhiNWZlYiBsZWdhY3ktdHJ1bmsKKzc0MjYwIDRmZTU4MDFiZjcxMjE3YmE0NzY4ODQxNmUyMWY4ODhkY2I3MWEzYTMgbGVnYWN5LXRydW5rCis3NDI2MSA1YmU0YzA5ZTRhNjY2MjhlNDk4Y2EzYTUzOGRkNmVhMTc3YTY5MDUzIGxlZ2FjeS10cnVuaworNzQyNjIgN2FhMGQ2ZmE2MzU5ZjE3OGEzNGY2MTNmN2QzNDI1NTdmN2E3NzZkMyBweTNrCis3NDI2MyBkMjlkMWQ4ZTJjZDYzNjlmMTIxNGNiNjA2ZjFmNjJmZjNkYWE2MTllIHB5M2sKKzc0MjY0IDNlMGNlOTRjMmUxZTBmMTA0MTc5NDBkZmUzYzhhMTIzZDViNzU4MzcgcHkzaworNzQyNjUgYmQwM2Q2ZDJlZmIwOTUwZGMzNzc3OWFjMzc2YTlkZDM0MzFhNzcxNyBsZWdhY3ktdHJ1bmsKKzc0MjY2IDRkNDRmMmEzOGU1MWVmMjA4MjE0ODdmZjgxNzk3MTQ1NmZjN2Q5ZGMgcmVsZWFzZTI2LW1haW50Cis3NDI2NyAwNTM1NzQxYjU3YmIyMGI2ZDY0NzViM2RkZDVjZTI4ZmZhMzg4ZGRiIHB5M2sKKzc0MjY4IDY1MDUwZTgyNmE5NmRiNTYwNWVkN2RiMzJiMzQwNjA3YjE4YzJmNWUgcmVsZWFzZTMxLW1haW50Cis3NDI2OSAxNmZhNTcwNjI5ZTNmNDRjY2NiNzkwZDJmMDczY2JkY2M0ZWE0OThhIGxlZ2FjeS10cnVuaworNzQyNzAgMTk2MTFhMjljOGRlN2U4MTEyMTAyNzQ0YzE0ZjM3YmRiMWNhNjMyZCByZWxlYXNlMjYtbWFpbnQKKzc0MjcxIDU1ZTAyZmE3YTExYzBlYTk5YTA0ZGQ2MDNhMzc0NjE1NjcyMWRlZGIgcHkzaworNzQyNzIgMDQxMjE2MTU5NTVhMjhjMDUzNmRlOGNkNDcwYjJlN2VkN2U5NDFiZSByZWxlYXNlMzEtbWFpbnQKKzc0MjczIDJjN2UwNzZiNGNhOWQ4MjhlM2EzMTU3ZTVhZmNjNWZhM2QxNjRjNDkgcmVsZWFzZTI2LW1haW50Cis3NDI3NyAzYWYzZmIxNjg2MzgzYWYxZWFmMTRiNGYxNjAxZjA5NmRlNjhhMTYwIGxlZ2FjeS10cnVuaworNzQyNzggODNiNDZhNTk4OGIwZWI1MTBkZTQyMzg4OTdkNDk4ZTc3MWUxNjgxMyBweTNrCis3NDI3OSA3NDZhODE4YmRkMzUyYjZhOTQ4NTkzMzI1NzVhMTBlMmI0MTZiNGExIHB5M2sKKzc0MjgwIDg4MjU1Y2I0NTM0ZGFkNWU0ZTY1YmUyOTg5ODA4ZGUwNDAxOWY0NzIgcmVsZWFzZTMxLW1haW50Cis3NDI4MSA3YzIzZjBiY2NhODVjZWM1ODMwMTYxNDI5ZmRmYmM1YTM1YmFkM2M1IGxlZ2FjeS10cnVuaworNzQyODIgOGI0OGIyODJlYmE5Mzk2MGMwNGNiYzRhNWVkZjYwMjRlYTFlNzlhNiByZWxlYXNlMjYtbWFpbnQKKzc0MjgzIDRhZTA0ZTBmNjg1MDM4ZTRkNjlkZDk2YzJmNjE5NzM4OTFhZTMxZmMgcHkzaworNzQyODQgNzk3ODllODlmZjc4NDg1YTNmZDdjNWY4YTYwYWM2NjNmYTE5ZGVmOCByZWxlYXNlMzEtbWFpbnQKKzc0Mjg1IGQyNTM3MzI2NjcyOTc2Mzc2OGMyNTJkYTk5MTdjM2FmMmQ5MDU2MzcgbGVnYWN5LXRydW5rCis3NDI4NiBmNDJlMDdhYjMyNmVjNWFkODk2OWJmNTQ3Yzk4Nzk1NGY3Zjk1YmU1IHJlbGVhc2UyNi1tYWludAorNzQyODcgNDZmOWJlMjUwOTEyZjYxMzVkMGUwNzQ4YjA5OTg3ZTMwZjYxMzE4MSBweTNrCis3NDI4OCBjZmJlZmRjYzI2ZGIyZjUyZjI5ODcwZDA2YzlhMzAwZjJkZjBhMmM2IHJlbGVhc2UzMS1tYWludAorNzQyODkgZTFhYzU0YmIwOGVkMjljMjkzMzUxZWU1NjVkZTBmZTNlMDk4NDFkNyBweTNrCis3NDI5MCAwOGVjYTZlOGIwYmVmYmIxYzhkZDM5MDAzNGM0MGZiZGYyNTYzYzQ1IHJlbGVhc2UzMS1tYWludAorNzQyOTEgNDZlNDZhMGU2MjJlNjAyZjBlMjk0Y2U1ZjU2YTU1YjQyYmE0YzdiMSBsZWdhY3ktdHJ1bmsKKzc0MjkyIDAwMjk0NmI1MmZjM2U3ZTc2MzI0MDY2ZDY1NTBmZGViNDA0YmQyZjEgcmVsZWFzZTI2LW1haW50Cis3NDI5MyBkOTljYWRmMGU1ZjBjOTYxNDcyOTEyMDNmOTBlYTQ0N2M4NmIzYmQ3IHB5M2sKKzc0Mjk0IGNmYTdlOTQzZmZjM2ZmMDE5NGY0NzlkZTMwZTBhNzE2MTdkYWRhNjMgcmVsZWFzZTMxLW1haW50Cis3NDI5NyA1MDJjZTI4ZmViYWFiNzRjZDI2NDU1YTlkYTI1NWM2ZTFiNDQyNTAyIHB5M2sKKzc0Mjk4IGZhNmZkMWVkNzM3ODgzYTk3YzJiODZlNWY0YzBhZTM0NjYxYjVhMzkgcmVsZWFzZTMxLW1haW50Cis3NDI5OSBkZDRkYTc1ZWJjOTcxNWRiOTMzOTIzY2Y1ODc5NGZjZTVlZmJlZTkwIHJlbGVhc2UyNi1tYWludAorNzQzMDAgMjcxZDM4MmRjYWJkZmZjMmVlZjI0YzNiNWZjOWZlNWE5ODBhNTVkNyBsZWdhY3ktdHJ1bmsKKzc0MzAxIDY1OGRlODQzODFkN2YzN2M0ZjJlN2RhNTZlMWNkMDJjNDNjN2ZkNmQgcmVsZWFzZTMxLW1haW50Cis3NDMwMiA1MzQ1ZTNiYzllNDE2MmJmZjVkZDhhNTIwODVkM2NlMTFhNDA3ZmE2IHB5M2sKKzc0MzAzIGEwZTFkNjI3YjcxODM1NTUwZGI0MjI4NTM5Zjk2MjBjMDE4MmYwZTkgbGVnYWN5LXRydW5rCis3NDMwNCAzNDI3N2RhMzhlMzg4Yjc5ZDg4NDE3YjFiODk3YzFmNWZiZGRmNTkxIHJlbGVhc2UyNi1tYWludAorNzQzMDUgY2Q5ZmE4MWVhNDgwMTM4OTkxODBjOWRkYWIxY2I2YzhhYWE0YzMyNiBweTNrCis3NDMwNiA4ODQ4YzQ5ZWQ1ZjU3NzQ3NDg5YTQwZTQzZjNlMDEyNDdlNGMyZTI2IHJlbGVhc2UzMS1tYWludAorNzQzMDcgMmZhZTgwOTQ1MGNkMTFmNzEwYTZmN2E1ZTFkZDk2MmE1ZWYyNWQ0YSBsZWdhY3ktdHJ1bmsKKzc0MzA4IDZhMDVlYzQ5M2NlOWUzZjE4YzY5ZWRjMjMwNGM3MzUyNWI5NjViNWEgcmVsZWFzZTI2LW1haW50Cis3NDMwOSBlODAyNWI4NWFiMTgyN2M2NTAzNGM5ZmNmNThhNGI3NGZiZjY5OGU1IHB5M2sKKzc0MzEwIDNmZjE3MjVmODM3ZWFlMTY2ZTBkOWM0N2MzNDI1YTI2ZGJlMzMwNTggcmVsZWFzZTMxLW1haW50Cis3NDMxMSA1ZGUxOWM1MDExY2E5MzY3NDEwOTM2NjU4OWY3OGJhNzllYWQyNDEwIHB5M2sKKzc0MzEyIDVkODc1ZmFkZjYzZjUzNThjNzNjNjlhOWM1M2Q2ZWI4OTI2MzEzMWQgbGVnYWN5LXRydW5rCis3NDMxMyBiMTc3NTE4N2FhMzBlNzM3MmUxODM3NDY3OWNhNDBiOGE5MTZjYWQzIHB5M2sKKzc0MzE0IDA4Mzg2Yzc5ZTM0ZjBmY2RjMjc0MzljYmUzMTlkMGMzMzhiNGM3ODQgcmVsZWFzZTI2LW1haW50Cis3NDMxNSBlYjIyNDQyMTk0MTk5OTI1ZWU3ZjYwNmUzOTk0YzgzZGU5OGI1NmExIHJlbGVhc2UzMS1tYWludAorNzQzMTYgOWE0M2ZhYzg3NjBjMmY5M2Y5NzJjMDM0YzRlMTBkOTQxODZlMmRhMyBweTNrCis3NDMxNyBjOGY0YzEzMmQ2ZGIwNGU5YTQzZTgxNzRjOTVjMzc3ZGU4OTE5ZjU3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMxOCA2NDI0ODVkYmZmYmFhMTAzMGYzYjE5OThiYzhjNjBmN2MwNjcxZmJmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMxOSBiZDFiY2NkOGUzNDRiOWZkZDQzY2UxMzY2YTU2MmQwODI2M2JkYTczIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMCBiYTgwMmMwYjUzOGE3OTY5MjM3NjZiM2VhYTg5M2E2ZGMxMjg4NjRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMSBmY2VhN2JhNGIwMzRkY2IyNDQwODE0ZWZiOWI4ZDBiZjhjYjgxYmUzIGxlZ2FjeS10cnVuaworNzQzMjIgNzU5NDJiYzc0ZjcxMjMxMzMyZmNlNmI2ZjIzMmU1MjQ0ZWY1NzAwMCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjMgMGM0ZWU2MmRmMGUxOTBiZTZlMGYyOGVjMTg1MzBhOTFkOTM3MTU5ZiBsZWdhY3ktdHJ1bmsKKzc0MzI0IDE5MmUzNDQ0Yjg4OGZhNDUzMWY0ZjA4OWU5MzFhMTg0M2U3Y2Q5OWEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzI1IGU1NzMzZDU4ZmRiMTVhNzgwNGFjNjlhNGUxMTlhOWExZTQzNzU2YTkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzI2IDVhMTMwYjc1ODViMWNlNWM1MTUyNTFkMzg2YmVmZTUwNzAxNDc1YmMgbGVnYWN5LXRydW5rCis3NDMyNyA2NWQxNjgyZGNkNWUwZTU4YjBkYWIyYzE1MWYzOWE0YmE0ZDM0M2Q3IHJlbGVhc2UyNi1tYWludAorNzQzMjggMWJlM2Q0MjdhY2EyNDQ2NmEwYmIxMGFiY2Y1MmM1OWVkYWMyZWQ0NSBsZWdhY3ktdHJ1bmsKKzc0MzI5IDA2Y2U5ZDg0NjhjMmYwNjY5ZTllNmIwYjE4NGY4NTFhYzY1ZGUzNWMgcmVsZWFzZTI2LW1haW50Cis3NDMzMCA3ZjNmNmI1NWU0N2EyOGM3ZmNlNGRmMTU5Zjk4NTZjYjIwZTRhOGEyIHB5M2sKKzc0MzMxIDlmZGYxODJmMTlhOTEzZDEzOTM1OGI3YjJiZmNiZjE3NGU5YmI2ZGIgcmVsZWFzZTMxLW1haW50Cis3NDMzMiA5M2E5NmQ2ZGZmYjVlOTMyZGFlMGM1NTA2YjA5ZDg4NzA5M2M1NjRmIGxlZ2FjeS10cnVuaworNzQzMzMgN2I2NmNkMDJkNjBiYTgwMWE1MDk4NzhiZmRjMjRiNjU3ZTQ2MTY0ZSBsZWdhY3ktdHJ1bmsKKzc0MzM0IDMxNTk3MjZkMGU2NTljYzY4NWJjZjhmZWFmOTJkZjRlYjJiOTI4ZjMgcHkzaworNzQzMzUgNGYyMDRlYjc2ZTA3YTI2YTY2N2Y5MzAyY2Q0M2Y0YmUwMzMwNDBhNSBweTNrCis3NDMzNiAyZjY0MWUzMzdjOWY5NmE5MjlkNDNiODU1OTQ0MmZlZjFkNGU4YTIzIGxlZ2FjeS10cnVuaworNzQzMzcgMDBmZDYyOTdlYmU3YjBkZjhlMWEwOGI2ZmI5MDhiNjcyZjUyZmM5MCByZWxlYXNlMjYtbWFpbnQKKzc0MzM4IGYxMzYwMmE4NGRhYWFmZDZmMmMyMTgwNjQwNzU4ZTNkNTFlNTU1YjQgcHkzaworNzQzMzkgMzA4ODc5ZWM5MDIzNGRlMzVjNWNiZjAxMDg0YTAwODQ5ODU4NTEwMSByZWxlYXNlMzEtbWFpbnQKKzc0MzQwIDE5ZTdjOTk2ZTY3YWViZTQ4M2ZjNDIxNmU1NDU5OGZhOTRhNDcyMzcgcHkzaworNzQzNDEgZWZhODgxMWIyNTBhM2M2NTlmNWFhNTYwZDkzYzRhNTczYTJmNDgyMCByZWxlYXNlMzEtbWFpbnQKKzc0MzQ4IDg1YzBkOGQ4M2NiZmZiNjJhYjgzODYyNTIwMjliNmU5OTAzNDUyZjkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzQ5IGIwMDJlOTJhMzZmNzc0NjhmOGY2NjhiZTEwY2YwM2U1NGEwMGVlZTggdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUwIDQxMmE4NWNlNTg0NGFkOGQ2ZTkwMmI3YzBhMjJiMTYxODBlNmM1MGUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUxIDk0ZDhjMzQxZmI0MmYyMjQwZWM5MTI2MGNlYTg1YTg3M2E5OGQ0NjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUyIGNkMjBhOWVkODRlNWEzYmYxMGRmYjQ2ODIyMTJjNDMwODc1MzVmZTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUzIDExMjg2YjQ1M2ZjZmZiMzk1NTczNDIxM2NhNDE4YTZiM2Q5YjAyMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzU0IGU0YTY3NDRjZTRhOWQ3YWY5NTczNjYwNzA1NzE4NTEwNTgwNjBiMjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzU1IGNhNmU5MDQ3MGQ5NmZkM2FjYzI2ZjI1ZWQxODVkMGFjMTMzNGQxYWEgbGVnYWN5LXRydW5rCis3NDM1NiAzNjFhMDNhZDNjMzczYmM1Yzc1N2Y2ZmVjMjFmOTJmMWVhNWQyNTU1IHB5M2sKKzc0MzU3IGJiZWE5ODE0OGUxMjY2MTA0NTFlMTNiNTQ0YTY0YmI5NDQzZjQzYjMgcHkzaworNzQzNTggNWM4YjIyMzhhMmY1MjRjOGQ3NDQ3MTUxNWUxZTJkYjM4YzAwNjdkMyByZWxlYXNlMzEtbWFpbnQKKzc0MzYwIGU1YWViZDAzOGYwYzJhZDI1ZTVkNmQxNTkwZDZkYTgzODYwYzMzMmIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYxIDJjNjRlOWJmYjFiNjY2NWU2YmViZjRhYjQyNmY0MTg0NWUyNWNkZDIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYyIGIwMTNiM2M4YzljN2Y1ZDllZTMwZjViN2FkMWZiNzJmMThhZGY3M2IgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYzIGMxOWU3OTBkOTQyZjc5MDlkNjZhY2JhOGUyOTYwNjdjMzJjZTAwOTAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzY0IDAwMjVlMDcyZmU5N2FkNzkyYjdlNWRjMWQ3MWNhNmUzZDBiZjdkMDEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzY1IDEyM2M5NWZlMDRiNjA4MzA1M2Q2MTg2YjRhMzU4OWIzZTU0ZTcwYmEgbGVnYWN5LXRydW5rCis3NDM2NiBlZjU2NTM1ZjUzNTYxODA4ZTUzMTgxZTQzZDc5YzcwMGRlMTkyZmMyIHB5M2sKKzc0MzY3IDRhMWFiMmQ3MDM4NTlhNGI4Yzk4MDgyNWQ0NTEyMjM5MGE1YmQwOTEgcmVsZWFzZTMxLW1haW50Cis3NDM2OCA5ODQ5ODVlYTI0YzRkY2UyOTQ5NmQ0NDkzODgwMTg1ZTg2OGFiNTkyIHB5M2sKKzc0MzY5IDRhOWI4NTkxNjQ5ZmJkNmU0NDQxZWVkY2IwYjY4YzJiNGFjNDYxNzUgcmVsZWFzZTMxLW1haW50Cis3NDM3MCBlMDBiNTBhM2Q0OTlkNWUxZDRhMDRkMDNiMGM1MjM5MDgzZGZmYTJmIHJlbGVhc2UzMS1tYWludAorNzQzNzEgN2I0OTVjOGYyYTI0MGVhODA3NTA0YzU4ZGNkZTE3Mjg4MzQxODFlNSByZWxlYXNlMzEtbWFpbnQKKzc0MzcyIDFhY2QwMjc3ZDIyNTMwZTVjMTJiOTk5MjVlZmQwOWE0Y2Q3ZjI4YjYgcmVsZWFzZTMxLW1haW50Cis3NDM3MyBhNDkyYjJiYzk1MWI0MzRlNTc1OTkxODkzMWU4ZWM2Nzg3MjU4MDgwIHJlbGVhc2UzMS1tYWludAorNzQzNzQgNTA5NWE1Mjc2ZDhjMjY2NzBjYjEwZTM2NTdhODRlZmUyMDI0YWEzNyByZWxlYXNlMzEtbWFpbnQKKzc0Mzc1IDVmYmFjMDljMGU5MWRiMmZhYjY0NGM5ZTBlYjg1N2FhZGI4M2Y1YzMgcmVsZWFzZTMxLW1haW50Cis3NDM3NiA1OGMxMGNmMDQ2MTY3ZTEwMDFhYTVlOGUwM2NkMDgxOTdkOTMyZWJjIHJlbGVhc2UzMS1tYWludAorNzQzNzcgZGFkMGE1NGY1YTU4M2ViOTNkOTM0YTNkODYzY2UwZmQ5Y2I0ZTQwZiByZWxlYXNlMzEtbWFpbnQKKzc0Mzc4IDU5YjZiODU1N2EzMzI5ZjBjNjIyMGI1ZmU5ZTJmZmMyYmUzMGFkZjEgcmVsZWFzZTMxLW1haW50Cis3NDM3OSAxN2U3MTQ4NTI4N2Y3MWYxNmIwZTUyNDVhNjUwMTlhZWFjZDQ0NWY5IHJlbGVhc2UzMS1tYWludAorNzQzODAgNTQ2YWExMzRkNzczN2EzMDcxZWM0YWFiNTZmYjUxMzliMjZiNTIzZCByZWxlYXNlMzEtbWFpbnQKKzc0MzgxIDc3MGE5M2M3YWJmZjc3YTc3NDA0NzNkOGJiNDJlNTBmZWIzYmJkMzAgcmVsZWFzZTMxLW1haW50Cis3NDM4MiBjNGQ2Yjc3YzM0NjgxNTRmNmNmMTQ2OTAxNTk4Y2YzN2YxNzNjMjgyIHJlbGVhc2UzMS1tYWludAorNzQzODMgMTA5NDBiY2VkYzk5ZTQ3ODU1ZjNjYjNlNTkzZTY5NDFkOWViNWE2YSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg0IDBiYjIzMjA3OGI4Y2I4MTVmMDk4MzkwYzFjMTE3NDU5ZDc4MjY3NjEgcmVsZWFzZTMxLW1haW50Cis3NDM4NSBkN2YzY2RmMmIwN2Y3ODlhMWFjYTY3ZGI2NTNiYTljY2Y4NTQ2YzAwIHJlbGVhc2UzMS1tYWludAorNzQzODYgMGY3YTZlYjE4MjIzMTc0ZDY0NjY0M2I1NmI4YjE2NjgyOWQ5MTk1MiByZWxlYXNlMzEtbWFpbnQKKzc0Mzg3IDdlZTdmZGNlYTBkNzE2ZmE5YWJmM2QxODk1NWM1MWNhODE0YmUwMTUgcmVsZWFzZTMxLW1haW50Cis3NDM4OCBlZmU4MDhhNWY1OWU4ODk3YjU1NjM5Yjg4NWVkYWU4OWY5OTgzM2FlIHJlbGVhc2UzMS1tYWludAorNzQzODkgNzQzZmEyODJkNzQ4MTM4NDk5MDA0NDhmYWYwNmNlN2QzZjdhMjQ1YiByZWxlYXNlMzEtbWFpbnQKKzc0MzkwIGNlNjY0MjIxOGZmZWMxYThjYzY5MTRjMzAzZTY3ZDQ3NDlhNzk2MzUgcmVsZWFzZTMxLW1haW50Cis3NDM5MSAzNGVhNTg4YWMzYzU4ODNjYTYxM2Y0NjNmZjk1ZWJmMWZlODhjZjFhIHJlbGVhc2UzMS1tYWludAorNzQzOTIgOTRjMjhiYTY1NmJlMDdkNDNlM2EwNmQzYzQzOGU1MDM4ZDViNmE3NCByZWxlYXNlMzEtbWFpbnQKKzc0MzkzIDY4MGFkOGVlZDMzYjI3ZDkwYTE2MzQyMmVjNzQzMzA2NThkNjIxMzggcmVsZWFzZTMxLW1haW50Cis3NDM5NCAxMmZlYzczY2I4ZTUzZDk2MDkxYTNjMzRiZGZiMTIxYWZiNDhmMTcxIHJlbGVhc2UzMS1tYWludAorNzQzOTUgNmUyYmEyMzc2ODMzYjZiZjFjODViZmE2ZDQ3Y2JhZWRkNDM4NDgzMiByZWxlYXNlMzEtbWFpbnQKKzc0Mzk2IDdlNTE0MTcwNDZhYjg3MTBiODAwZjJjMWI3YzlmMzIwNmVkOTNmZjUgcmVsZWFzZTMxLW1haW50Cis3NDM5NyBmZjZlZWEwMTdhN2Y0NjQxODQyYjFmZjI4OWU1ZWU5MzI2NjU1YWMwIHJlbGVhc2UzMS1tYWludAorNzQzOTggNTQxNGZmNzM4OWVlOTgxZWQ3MmU4MDQ4MzE2NWJiNGUwYzNmZDVjYyBweTNrCis3NDM5OSA4N2ZkZjI3OTVhN2NkNDQzNjg0M2FlMWRkNDA3MzI2NGMwM2FiMjUxIHJlbGVhc2UzMS1tYWludAorNzQ0MDAgOWQ0MDU4NmE2YWZjZGUwMWVmY2ZiNmZhOTU2MzRjYzAwZGFjY2VmNSByZWxlYXNlMzEtbWFpbnQKKzc0NDAxIGY3MjQzMTk5ZDBiMWNjYjEyZGVhZjY1OGQ1ZGUxYjE1Y2YzNzkyMjIgcmVsZWFzZTMxLW1haW50Cis3NDQwMiA0ZDM4ZTUxZTdjZGM5YTk3OTQzZjY3ODUzZmMyOWUxMTBkMTkzYjdkIHJlbGVhc2UzMS1tYWludAorNzQ0MDMgMDA1MGI1NzExZmFhNmI3YjhlYmFlZWVjN2Q3NjFkZjVkM2NhNDgyZCBweTNrCis3NDQwNCBlMDUzMjJlZmNhODU3YTlmNTFjMGE0YzU4MWU2YTBjMjhmZGI2MzM4IGxlZ2FjeS10cnVuaworNzQ0MDUgYmUzNDUzMWM2ZDBiNzQ5Zjg1OTlmODVlZDAzNGRlOGVjZDBhMzI5NCBweTNrCis3NDQwNiA1NmU4YzIyZGY3MWYzMTY2OTc2NWQyMmM0MzkyZDBlZGVjNjhlNjY2IHJlbGVhc2UzMS1tYWludAorNzQ0MDcgOTFlNDBlYjQxOTU2YTA0NWQxMDIxMjcxZmU1Y2YyNGY1MjE3ZDE3ZiByZWxlYXNlMzEtbWFpbnQKKzc0NDA4IGEyNjdjNjA0NDY1ZjM3NGQ2Mzg5NGI5NTc4NTE5MzY0YjQyMmM1OGUgcmVsZWFzZTMxLW1haW50Cis3NDQwOSAwMTQ4NDE3ZTEzMDFkODkzZDhkNDUxM2U1MTcwYzJlMzI5NGQ5ZGJkIHJlbGVhc2UzMS1tYWludAorNzQ0MTAgYmUzNDNhZjQ5MDk5OTUzNTUyMjUwNmVjM2Q0M2U0MmY5YmRlOTYxMyByZWxlYXNlMzEtbWFpbnQKKzc0NDExIGFmMTEwYTQ4ZDE1NDdmYWE2ZTRkZTI1MGU1YTY4MTlkYTY4NzA0YmUgbGVnYWN5LXRydW5rCis3NDQxMiA3ODVlYzM0NDc2YmFmYTU4NTY2ZTc3Njc0M2U4YTk5ZmYxNDc4N2FjIHB5M2sKKzc0NDEzIGUzZDUxMzE5YjlkMGVjODM3Y2MxMzc2ZGM1NzE5ODBmY2Q3NGE2ODAgcmVsZWFzZTMxLW1haW50Cis3NDQxNCAxMjI0YWEzZmI2YTBkNDY3NjgxYWNiMGFiN2RkNzBkZjczY2QyM2I2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQxNSA3YzhmNDgxMTYwYzIyZTA3MTJiNWVjYTMxZmU4ZjE5ODBkYzViNTVkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQxNyBmMmExMmY1MjU5ZTdlZGQyMjNjNzUwZTA1ZWY1NjE2MmQ2YTUzNDVlIHJlbGVhc2UzMS1tYWludAorNzQ0MTggZjhkYjQ5M2RkODRmYjgzMGQ5YWNiNDBjYjM0NGFlNjBmZjI5ZTNiOSByZWxlYXNlMzEtbWFpbnQKKzc0NDIwIGZhZjhhMTAwOTkwZDY2Y2Q1MTAxZDQ4N2JiZjlhZTgwN2QwMmUyM2IgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIxIDNhMzVlMzNiMDcxYmQ0ZWQyNzZhMWEwZDlkMDA1NjAyZjNhMmI0MWQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIyIDliYzk1ODhlYjY0YzE5MTA2ODIzYWZhNWY3ZjI2NjlhYmNhYzViOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIzIDM4MWM2ZjliNzRhZWFlNmNjM2ZhNWRmYWE5YjY4YzA5M2NlZTQ1ZjAgcmVsZWFzZTMxLW1haW50Cis3NDQyNCA0OTYyOTEwMzc1ODIwOTY2MmViMzk2Mzc4NGMxY2MwNDU1ZWY4MTg0IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQyNSBmYjU4NTdmOTAzZmU5Mzc1YWJkYTMzYWMwNTQ3NzlkMWNhODNlZTRjIHJlbGVhc2UzMS1tYWludAorNzQ0MjYgZmJmOGI3OTFjZTgxMWI0OTAzYzQyMGI1NWY4OGNkNTA5NDI2MmY4MiBsZWdhY3ktdHJ1bmsKKzc0NDI3IDM1ZWZiMTA1NGVjNmNlY2E3MjAxN2E1ODcyNjNjYjZhOTI1NzM0MGIgcmVsZWFzZTMxLW1haW50Cis3NDQyOCBhMWFkMTkyZjhkZjU2NDM3MzkwYzJhZDg4Y2QxMzJkOTYwYjA2MjBkIHJlbGVhc2UzMS1tYWludAorNzQ0MjkgOTc1MjJlMjdiMDVkMGM4MjM4ZGQ3NGY1NTdmOTRjMzVhNmIyNmNkNSBsZWdhY3ktdHJ1bmsKKzc0NDMwIDlhNmJlYjFhOTM5NzU3M2RkZjlkOGQ5OGJkMTY0YWM1Y2MyNDg4NjEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDMxIGVlYWZkODcxNjQxMGE2YzRkYzNiNzk4YTMzZTNkNTc0YTM2N2UwNDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDMyIDZhYzE0NzhkOWIwZTY2MTk4ZjlmYzY3OTc1MjBiOWFmOTU1OTJmZGIgcmVsZWFzZTI2LW1haW50Cis3NDQzMyA1MTUyYjUzNjYxMmU0ODc4ZmQwMGQ1NzY3YTVhNzIxYTQ3NzhjMzE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzNCAwMWRiNDEwZjJmMjA3ZmYwMDVlNTlhN2I5M2QzYmIxMDIzOGQxYTdmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzNSA4OTkyN2Y1ZTgzZDZmNzk0NTEyNjkyNTZhMzVjNWQxOWMyOTc4Y2E5IHB5M2sKKzc0NDM2IGQ1YTYyZGQ5MDc4OTg4NzgwM2I5NTAxNzBjZGQzNjc4NDY4NjVjMmYgcmVsZWFzZTMxLW1haW50Cis3NDQzNyBhNWU2ZjNmZjJlMmY2NDc5OWY4YzA2YzBkYjhmMTdlMjdmYjQ5ZDAwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzOCA0OWE0Mjg2Njk3ODhkNjc4ZDUyNmM2NjdmNmZmMzlhNjY2MTZiNjYyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzOSA0Mjc1OWE2ZWU5OGFjNWQzNmFjMjA2ZDEwOGM1MTAzMjkzZDM4YWY3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MCAxZmM4OTAxNGJkODNkYjA4YjVlNWE5YmU4ZDcwODVjYmIxYjAwMWM5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MSBmZTI4NjQ1YTYxMjI2ZjgwNTUyMTgzN2Y1ODI0YjhjZjJkNzQ2ZTY3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MiBiZWIxMmJiNzc5MWJmNzc5MzNhMjc3ZjI3NGRlNzQ3ODkzZDk2ZTU5IHJlbGVhc2UyNi1tYWludAorNzQ0NDMgMWZiN2UyZjdmMGJiNGUyNGNiZWE4YTNkNjM3NTMwN2JlOTY2ODVhZCBweTNrCis3NDQ0NCA1ZWEzZDQ2NzU2NGE1MmExZTkxODNiNmVjZGIyOGI2YzUwMmJkMDA2IHJlbGVhc2UzMS1tYWludAorNzQ0NDUgNTFlNWE0MTRiM2MyNDdmMmY3NWE1MzgwZGExZmJjODkwMmExNWNjNSBsZWdhY3ktdHJ1bmsKKzc0NDQ2IGEwZjgwZGMwOWRmZTIyODlmOGM0NTIxNjNkNjdhZjI4YTJkNzkxN2UgbGVnYWN5LXRydW5rCis3NDQ0NyBjNmQzMjc2NmU5NGM4MGI0NmEyYzY4M2Q2NmYyNjY0ZGY3ZjE2Yzg5IGxlZ2FjeS10cnVuaworNzQ0NDggYjdhNTcxZDRhYWE3ZTFmNGE0YmI2ZjdhNTA3ODI4ZGFmYTc5OTNmMSBsZWdhY3ktdHJ1bmsKKzc0NDQ5IGFlODE3ZmE0ZTYwNTY2ZWFjYjQyODY3Zjk0MmY5YmJjZTI3MTNhMWUgbGVnYWN5LXRydW5rCis3NDQ1MCBlNGE4M2U5MTUyMWEzNjlkYzhkODI3NjNiMzViNDg4OGMxMzgwMDE3IHB5M2sKKzc0NDUxIGQ3MjRjYThjNTgyMzQ3YjNhMTA0MDdmZDQ2YzUyZWYyYjdkZGIzMTQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDUyIDQxYjAxYmI5MDZlMzk2OWNkZmFhYzY1MjBlYTU4YTRhZWQ0YmRlZjggdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDUzIGQ3MTQwYmJjNjQ3M2JlNDliN2I2Mjk4MTZlNmY5OWE2NzgyM2E1NDkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU0IGQ0NGUzYWE0MmE1YmM3ODE3MjYzN2ZhYzY4NTYwYjQ2ODMwODk1ZTAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU1IDAwMjA4NzE4N2IyZmY2NzBmYzA3MTM2NzYwYWIwZDkzN2E0ZDQ4MzQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU2IGY5MWMxZDI4ODM0MzQ4OTU2NmRhYTdkN2FkZTVkMmQyNmNlZTY4MmIgcmVsZWFzZTI2LW1haW50Cis3NDQ1NyAxMTNjMGI4NmZkNzQ5YTdmY2JmODZhYzk5YzYwNjE4YzY0ZmU5ZjRlIGxlZ2FjeS10cnVuaworNzQ0NTggYmMxYzQwMzA1NGUxYzc3ZmE3MjBlYTc4OTZjZDk3YTM3ODQ1NzJmOSByZWxlYXNlMjYtbWFpbnQKKzc0NDU5IDMwOTYzY2ZiNjlmZDgyMGJiODBkNmQzZTVmOGI0NDRkMjc4NTJlZTkgcHkzaworNzQ0NjAgNGM1MWM0YmZmYjIxYTcwZjkxZTdmOTEwZTMxOWRiMGI3MzY4YWZhMCByZWxlYXNlMzEtbWFpbnQKKzc0NDYxIDY0M2M2Yzc2ODRiMTY1YzhmMjY4OThhMGIyMjQxMWRhMzhkYzEzMjYgcHkzaworNzQ0NjIgMjI3N2ViY2VkYTQzYTZjMTg1YTNlZGE5ODEwMTdmYjhmZTcwNTQ0OSByZWxlYXNlMjYtbWFpbnQKKzc0NDYzIDEzNzdhOGMyNjc5MjI1NzY0MTFlM2ViOWVhMzNkOTY5M2Q0OTUxMWUgbGVnYWN5LXRydW5rCis3NDQ2NCAxZTI4NzcwMjY0MzVlYmRiM2FlYzJkY2JhZmNmZDljN2Y2ZWYwMjQzIGxlZ2FjeS10cnVuaworNzQ0NjUgMDA1MzAyODdiZGI1MTEzMWU5NTY2ZTZlNjBkOWRlYWNhMmI1YmQ3OCBsZWdhY3ktdHJ1bmsKKzc0NDY2IDM4NDMzNGQ4Yjk4NzViZTYyODEyOTBjOTRiMjVmZDNiMDE5ZTEwZjIgcHkzaworNzQ0NjcgMGZjZjQwYTE0MGU1ZWRiYzA5NzY1NTZkMzIwYjg0ZjZjNTk3MjZiYyBsZWdhY3ktdHJ1bmsKKzc0NDY4IDE5ZmMwZDA1ZmE3YTQ5YmQ1ZDNkZWU5ODdjNDBmYzJhZGE3YWUyZGYgcHkzaworNzQ0NjkgZmI3ZDVlZTkwOGE1MDJhOTY1MGJiZmQ3ZTRlZmNlZGQ5MzE2ZDMzNiBweTNrCis3NDQ3MCA2YWMyYTY0ZTgyNmJlNDU0NDg2MmYyMzkxYmYzMTk0ZGVjNmVlMGEwIHJlbGVhc2UzMS1tYWludAorNzQ0NzEgMTIyN2U3Y2MxZDliMThjZGU4ODIyYjQyNTVmZTI1NzgxZmM0NWEwOCBsZWdhY3ktdHJ1bmsKKzc0NDcyIGM2MzBiZjA1Y2UzOGRmZTJlNzIwOTA1NjRhNGI2NTMzNDQyOGM2OWMgbGVnYWN5LXRydW5rCis3NDQ3MyBiZWMzNDA1ZTA3M2YzNDJmOTg4MTJiZjA3NjNkODA1MTdlN2RmY2E1IHB5M2sKKzc0NDc0IDZhZmE1YmJkYzM3NTRiNjQ2NWY4NDgyN2U4ZjM5ZjRkMDE4YjVjZDQgcHkzaworNzQ0NzUgZDdlMWQzOTc4ZGQ2MDA1M2JlOGYwNzUzMjUwNjk1MGJmZWYyOWQ5ZSBsZWdhY3ktdHJ1bmsKKzc0NDc2IGU1MjAwOWUyMjAxN2Q1MWE0MGNkZThlYjgwMTg1NjA3YzM3YTc4MzggcHkzaworNzQ0NzcgNmRhNmVkZmE2Mjk2YzJiZDBhOWZjZTIzNzVmMjA0NGFiZjVlY2JmOSBsZWdhY3ktdHJ1bmsKKzc0NDc4IDQ5NWVlZmYzYjlmZjBkYmJmOWM0ZjQwOWMxOGE1MzljYzNmMTg3ZjkgcHkzaworNzQ0NzkgNzQ2ZjEwZTA2MjRlOWYzZTQ3OTI5ODkxZWJkODY1OWM0ODM0ODUzZSBsZWdhY3ktdHJ1bmsKKzc0NDgwIDhiOWMwZjU3M2FiMjljNDFjNmM1ZmRjY2E4MmExZmUwZmY1MzU1YWYgcmVsZWFzZTMxLW1haW50Cis3NDQ4MSA1ZWY2YmMwMDUyMGFiMDE4ZDg3YWE5N2IzZTcwMzcwMTM0MmJmODE5IHJlbGVhc2UzMS1tYWludAorNzQ0ODIgZGEyMWI0ODBmZjA1MjM1NTZiYzc4ZTk5ZWY3OTIxMzFkZTU3NTE2MSBweTNrCis3NDQ4MyBkZWZmZTZhYTQzZDExNGU4YmY1ZWUxMzkwZjhkOGU5MjFkMzRjODIyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NCAzNGM2ZjZkMjY5NzZkM2E2OWZlNDZmYmE5Y2UxZTc0ZDM0MDQ1Y2QzIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NSA0Mjg2MzJhNTkwYWRhY2UzYjg3YTQ3MGFlYjVlMzM2MWI4NmNlYTZiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NiA3ODc1ZGVhYzQxMGM5YzNiZjQwNDFkZTdkOWRmY2JhZjg3ZWQwNGE2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NyBmNmUxN2FlYjkyYWJjODhlMGQ1NGJjZTM4ZDE2Yzg2NTBiOWQ5MzA1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4OCA0MmIyNTY3OTRlNmM1MTIxOWJmZmRmMWYxMDRiMjBkZGFkYmNlNTlkIGxlZ2FjeS10cnVuaworNzQ0ODkgNGQwODgxOGI2YzRhMWQ4ODczYjBkODNhZDZiY2IzZjI0YTE1MWU1OSBweTNrCis3NDQ5MCAyMTdiY2I4NjAzYWFkMTVjOTM3NTQ4ZjVmNzhkNDFjYjYxNWUyNzFiIGxlZ2FjeS10cnVuaworNzQ0OTEgMGIwN2MwM2E1ZjNjMzY4NDQwMTUwNzUwNDFmMGEwYjRkMTBhMWFkYyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0OTIgNGVhYzEzMmZhYzk0Yjg0ZjJiYjQxMzM3YWJhMmZiOWJlZjQ3YjRlNSBsZWdhY3ktdHJ1bmsKKzc0NDkzIDM4NGY5NjVlMTJjZGYxZDg4OWFhZjBlOTgyNDIwN2I1MDlhMzM4YTggbGVnYWN5LXRydW5rCis3NDQ5NCA2YjA4OGRjZjI1ZjhjODliYWE4OGQ5MDE2YjhkZThlZmQ1MTk1NDM5IHB5M2sKKzc0NDk1IDJhYWY3ZDE0MWJkMGZlZDk2ZjlhMjdiZDk3ODRiNjk4NzA4NjQ2MzEgbGVnYWN5LXRydW5rCis3NDQ5NiAyODIxZTVlNzZlODI5MWMyNzhmYThkOWQwNWY5Y2Q2ZGUxOGZhZTkwIHB5M2sKKzc0NDk3IGI1NjNhYjAxNzFkOTIzOGIxZGM4ZTViZDk1MzhhYTAzMjViY2M5MmUgcmVsZWFzZTI2LW1haW50Cis3NDQ5OCBlM2EwZDRiMGQ3YWEwMjA5MmMzN2MyOTQ0Mzc1NGVkYjk5OWE3NWU3IHJlbGVhc2UyNi1tYWludAorNzQ0OTkgYzg3YWFjY2M3MGI2MTgwMDAyN2YyOWZhZWYzYWI4YjkwNTQzMzkwMiByZWxlYXNlMzEtbWFpbnQKKzc0NTAwIGQ0MjhiYzE4NGUxZmJkYzA5YWM4NDhhYzAyNzljMGZkNzc0MmUwMTQgcmVsZWFzZTMxLW1haW50Cis3NDUwMSBlYjEwMDk5MzY2ZWE1MjI2MDQwYTY0MGFkOWE0YWVjYmFiNGVlMjI2IGxlZ2FjeS10cnVuaworNzQ1MDIgMjRjOTUzZjNmOGRhZjJjOTU5NDdiYjgwMzdkYmJiMDQ0YWMzMGMyMyByZWxlYXNlMjYtbWFpbnQKKzc0NTAzIGFlMmY3NWFhM2ZhYTk0NDQxYWY5MmE2OGY5YzM2MmM2YWRjMDZjZDggbGVnYWN5LXRydW5rCis3NDUwNCA5NTE2NjNjMDMwYjQ4YzhjYWJlMjc1Y2JmZjA5MTliNjM1OGExODMxIHB5M2sKKzc0NTA1IDNiZjAzYWQ0YTZhMDZmODVmNDY2NzUyMzk2ZDcwZmRjNmExYWVlOWEgcmVsZWFzZTI2LW1haW50Cis3NDUwNiBkODc0MDY0NmEwMzFjY2NkYWM2YjM0ZGMzNzkwMzM2MmY4MjA3MjI2IHJlbGVhc2UzMS1tYWludAorNzQ1MDcgNzNmNDMyY2Q4MmRlOGM3MGU4ZTk3ODM2NDNhMzg3MzQyYTFjZDdkNiBsZWdhY3ktdHJ1bmsKKzc0NTA4IGFkOTMwMDY3YzEyNGZiY2NjYzkyZjQzYzQ1NWFjMTNjZmU4YWI3NjAgbGVnYWN5LXRydW5rCis3NDUwOSAzN2YyZjM2N2FkOGJiYzU3NWM1NTY2NzBmYjI3MWQzMjhlNDM0ZTgwIGxlZ2FjeS10cnVuaworNzQ1MTAgY2QxODFhNmY0ZGQ3Mzc1MTFhMjgwODE5NmRjYWNmNGFlNDM2MWIwOSBsZWdhY3ktdHJ1bmsKKzc0NTExIGY4MDEyZmRkYTZkM2RlMGU1MTEzMjk5Y2Q5YWZkZGYyNGRlY2NkNjkgbGVnYWN5LXRydW5rCis3NDUxMiBmNzQ2NmFjMWRkNzI1ZjdmODViM2ZiNDgzYmUzYzExMGExOTQzNzZiIHB5M2sKKzc0NTEzIDJjZmJkZThjYmY4ODYxODczNTA3MWE1NDdlZDZiZmM1YmQwNGNlMWUgbGVnYWN5LXRydW5rCis3NDUxNCAwMzFlNDMxNjRiNzY4ZDE5ZTc1Njg0ZjRlMjhjZTliYzljYjM1OGZhIHJlbGVhc2UyNi1tYWludAorNzQ1MTUgZTAxYTE5OTA3MTcxMTE4NzVjNDYzMTkwMzYwNzc5MDMzMThmYmQ0OCByZWxlYXNlMzAtbWFpbnQKKzc0NTE2IGY1ZTcwMTFmYmZmMTIwNWY5YjQ1ZWI4NzU1Njg3MTcxM2U4MWU2NTAgcmVsZWFzZTMxLW1haW50Cis3NDUxNyA2NTBkZjBlYzBjMTJmNmYxOGI1YTIwYjlmM2E5Yjk2YjFjOTg3NDllIGxlZ2FjeS10cnVuaworNzQ1MTggM2FiYmQ3MjA5YmU4NTAwNWRiYzNjZWE0NzIxMjVjZTgwNGQ1ZWU5ZSBweTNrCis3NDUxOSBjZDBjOGFjOWNiNDk0MzE3ZjYyMGJjMTdlYzZhNGU5ZDNmZjBkNmM5IGxlZ2FjeS10cnVuaworNzQ1MjEgZmVmZDllYjdhODIyZGNmZTI4YmM2MTY1ZGJiOWEwYThlZWY0OGViZSBweTNrCis3NDUyMiBjN2NkMjdmNjY1ZDFkZGM3NzJkYzBkNDNiMThhY2ViOGYwYTE4NDE3IGxlZ2FjeS10cnVuaworNzQ1MjMgZTQ3MWQ2ZDMyNzI0YWE2ZTIzMDUxZmY5NTYxNjMwY2IyOGNhNGFhNCBsZWdhY3ktdHJ1bmsKKzc0NTI0IGUyMWM0YzUyN2U2NjFlYTFhOTRiMDMwZWU4M2IyZjA1NmM3MDk1ZGUgbGVnYWN5LXRydW5rCis3NDUyNiA5NzQ1NTNmYjU5ZGNiMzNjYjUyODBmNjRmYzhhZjYyMjBmNTY5Mjk4IGxlZ2FjeS10cnVuaworNzQ1MjcgMDJkNDA4OWYzMWRkY2NjNzdlMWI5ZTI1MDQwYmU0NDgyYmI2ZGE4MCByZWxlYXNlMjYtbWFpbnQKKzc0NTI4IDM4Yjk3YzNlOThiZGFhNTZhYTg3YmQ1MGQxNzVlY2M4ZjQ1MTI2MDUgcHkzaworNzQ1MjkgODZlZjc0YzRhZDk3N2IzMzA1MjI2NzNmYmIzYTg5NGI1ZTQxNDZkZiBweTNrCis3NDUzMCAwZTU1ZmNjYjE5ZWM1NWQzMDNkZjQyZGY0ZjQ2ZmJiMDFhYjg2MzM2IHJlbGVhc2UzMS1tYWludAorNzQ1MzEgNDg3MWY4MWQ3MTMyMDA0YzNmOGQzMzhhMWNhMGJlM2QwYzg1ODE1NiBsZWdhY3ktdHJ1bmsKKzc0NTMyIDU5NGUxOTdlZDYzZDUyZWZjOTlhZDY3Y2NiYzhhOGRlNmM0ZTdiOGQgcHkzaworNzQ1MzMgZjM0MDg3NjBkNDZlNWM1YWE2OTJlOGNmZDkzZWEwZjk0NjM3M2MxZCBsZWdhY3ktdHJ1bmsKKzc0NTM0IGJjMTY3MDkyYzk4Y2I4ZWMxMTU5ODhlYzBhYWI3YjA4YjEyZjNmNmMgcmVsZWFzZTI2LW1haW50Cis3NDUzNSAxM2YxOWZiOTNmOGVjZDdhYmNlMjI2MGMwMWZhNTY1MzdiZDI4MzBkIHB5M2sKKzc0NTM2IGE4ODk0MWUyYmYyNzNkMjljZjg0NGEwZDI5NjJjZGFiZjFmOWI4YzYgcmVsZWFzZTMxLW1haW50Cis3NDUzNyAxNTQ1Y2Y3MzcyYWY5NjgxNzUzOTIwZDFhYzUyZGZlNzhmNzlmZGZjIGxlZ2FjeS10cnVuaworNzQ1MzggNWQ3ZjYwYmZmZThmYzVjNjQ3YjA0ZWU1NGViZGNmZWQ0YWQzOTAyYiByZWxlYXNlMjYtbWFpbnQKKzc0NTM5IGM0ZDU4MWU3MDljYTU0YWYzNTEyNmJhMGEzZTdlYTExZDkzMzRkNzkgcmVsZWFzZTI2LW1haW50Cis3NDU0MCBjZmE3YWU3MTdhOTBiNmM5ZjFmNWVhYTliMmI1NjdjZTM1YzM2NzVlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDU0MSBjNDAzYjY2ZDkyYjBmYTIzYmE5MjkzOWM2NDE5OWE3NzI0Y2JiODIyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDU0MiA5YTA5NjliNmY4ZTVlNjMyNmQyYjVkZDM0M2NiNjVkNWRjNmQyNzNhIGxlZ2FjeS10cnVuaworNzQ1NDMgYzRkOGNiYWZkOGM4OTA2MWZiOTI0Y2Y4Y2FjNzk5ZTFhNTA3ZGJlNiBsZWdhY3ktdHJ1bmsKKzc0NTQ0IDY3NWEzYzE4MjRmNDA1OTEwOGExMDRlOTVmZmM2MDFlMmQxNmQ2Y2QgbGVnYWN5LXRydW5rCis3NDU0NSAwOTE4MzEyYTJkN2I5YWIxODJhMWI0NDViOTk1M2U4YzQ5MzA1MmI4IGxlZ2FjeS10cnVuaworNzQ1NDYgZmZjZmM5OTBlNGNhMTljYTc4N2Q0ZTQ2NDQyYWI2ZGM1M2JjNmY5YyBsZWdhY3ktdHJ1bmsKKzc0NTQ3IDkyZTM4NThjY2E3MGFlNmNhNGE2NTdhMDQyZWFjYzVhNGU2NWI0ZDIgbGVnYWN5LXRydW5rCis3NDU0OCBlYzhkMjVlMDUwMGE4OGM3ODJkNmUwMDRhMjBmZjYxZDA1YThkNWEwIGxlZ2FjeS10cnVuaworNzQ1NDkgZGI4NmQzY2MxZTZiOTE1ZjI4ZDdhMTUxOTA2MTYyYjQ5ZDkxZjBjMyBsZWdhY3ktdHJ1bmsKKzc0NTUwIGI2MDEzNGVlNWViNDVjM2ZiZTY1MTIzYTQyYTJkNmUwZjNlZDAyMDAgbGVnYWN5LXRydW5rCis3NDU1MSBmNzVmMjc5YmNkMzQwNDlkNDJjNTExNDMyMjUxYWQ5MzQ0ODUxODBjIHB5M2sKKzc0NTUyIGQ5MWFmZjIwNmRmZGUwMzBiZTk2YTVjYWQ3NDc1ZmQxNWQwNTkyMWQgcmVsZWFzZTMxLW1haW50Cis3NDU1MyBkMDNlNTI4ZWY5NDZhYTdjNGU5MzQ3YTJmYTM2Y2QwOWNiMWMxYzQ1IGxlZ2FjeS10cnVuaworNzQ1NTQgNDhkZjQwN2I2MDY4Mjc3MDVkYjJjODZlMTcwYTA3MjAxNGI2OWY2MiBsZWdhY3ktdHJ1bmsKKzc0NTU1IDE0YzVmYWIzZWNiZjQ2NmM0ZTY0YzFkOGU5NmMzMDNmMmQ5MGUyMDUgbGVnYWN5LXRydW5rCis3NDU1NiA4MDA1OGRmZTQ2OWQ5Yzc3ZWJiMmEwM2FhNTVlNWQwZDE2N2MyYjQyIGxlZ2FjeS10cnVuaworNzQ1NTggYWUwMGEzYTgwNDczOTMzODg2OTUyMWNjYjE0ZTljOTRhMGQ3ZDk4YyBsZWdhY3ktdHJ1bmsKKzc0NTU5IDBkOWI1NTZhNDM3ODA2OWI4MjRjNGZkODRhNDViMDFkNzMzNmViMjQgcHkzaworNzQ1NjAgNzM1MzIyYWE3MWQxYWU2ZTI1MWEwOWFjYmM2MTkyMTM4YjBhYjZkNiBweTNrCis3NDU2MSBiNjVlYmVkMDZlYjA0NTlkYTE3NGQ1NzJmMzEwZDc0YmFlYWRhNzExIHB5M2sKKzc0NTYyIGI4OWY1ODJlZTc4YThiODBhNDU2NWQ1MmYyM2VmYTE2N2M5OTFiYWYgcHkzaworNzQ1NjMgZTIxMzAzY2FjMTIwNWM0NTkzZDI2OWU4MjA1Mjk5NWZmN2RkNDhiMCBweTNrCis3NDU2NCBmMjliNTlhNDkyNDYxZTMxZTFjNzM0MDJmNjg1MTQzMTIzMjFhYTMwIGxlZ2FjeS10cnVuaworNzQ1NjUgMWYxYjRjMDNlODkyYWEwNDU4OGRiNWFiOTA1ZjNiOTJiNjc1MjQ2ZSByZWxlYXNlMjYtbWFpbnQKKzc0NTY2IGQyMTA3N2U2MzlmZGQxYmQ0ZWFmMDViYTAzYTUzOTlhNzE4Y2NiYTIgcHkzaworNzQ1NjcgMDk0YTZmMTU4NjQxNzQyMDFhYWE3Mzc4NDRjMTliYjhmYWYyOTdkMiByZWxlYXNlMzEtbWFpbnQKKzc0NTY5IGI2YmYyYTVmNDlkZGRkMGI3N2VmOWQzZDAzMTAyNmQyM2NmZTdhNWEgbGVnYWN5LXRydW5rCis3NDU3MCAwMjk1MGQ1ODA4MDhiYTFlZWM1NTZlNTAzNDEwMjY5ZDRkMDkzMWU0IGxlZ2FjeS10cnVuaworNzQ1NzEgNWY5ZTEzMDY2ZDM2Njc0YTIzNjI2Mjg2MThiMzAxMzA3NzI5NjFkZiBsZWdhY3ktdHJ1bmsKKzc0NTcyIDMzY2U0YzViYzJlNTYwY2NiYTQ0NmUyZjVhMWFlODRhZjI1NzMxMjEgcmVsZWFzZTI2LW1haW50Cis3NDU3MyA5YTc4ZTNkOTA2MTcxYzcyMThhMWExNmRmOTcyYTMwNTM2YjgzZmIzIHB5M2sKKzc0NTc0IDQ3NGE4ZTA2ZTk2NjFhMDJhNTJkOWI3ODA0ODQ0YzcxMGRjMGUzNDcgcmVsZWFzZTMxLW1haW50Cis3NDU3NSA2MDZlOTdjYWViNzczNmY1YmFhZWRjZjVkZjFmYWNlMTI3MzJkOTg1IGxlZ2FjeS10cnVuaworNzQ1NzYgYmZiMjMzNzQ1MWU5YWM1YmVkMWQ3NmJiNjc4Zjk2MzYxMWE1Mjk0NSByZWxlYXNlMjYtbWFpbnQKKzc0NTc3IDZkZWNhNzNiZDUxMmRmY2MzOGMxNDViNDYxYTYzOWNkYjNhOTMxNmUgcHkzaworNzQ1NzggMDQ4YTkxMzgxYmQ4MGFlMWMwYzlhMWRmZmQxMzIzOTkxY2U3MjMyZiBsZWdhY3ktdHJ1bmsKKzc0NTc5IDdkZTIwN2RkNDczOTkyNjQ5MTQ2MjU3NzQ2ODExYjE3YzcyMjdmODEgcmVsZWFzZTI2LW1haW50Cis3NDU4MCBhNGViYWI4NDVmNzI0MWVmNDIzYzc0MzQ1MjY0NTU3MjFhMDlhNWU4IHB5M2sKKzc0NTgxIGQ0MDM3ZmI4NTZkMjEwOGFhZTg5ZjlmNDAyZjg2MWU0M2RjYThmZWQgbGVnYWN5LXRydW5rCis3NDU4MiAxYjkxMjc4NzE3MjMyMDU4OTUwYTdmYWFhMWIxODY3MDQxMGQ3OGY4IHB5M2sKKzc0NTgzIGU5YmFhMmRlOGJiNGVjZGJiMDA1NWMzZTUwM2Q5ZDFiOGJlMjE3ZmUgcmVsZWFzZTMxLW1haW50Cis3NDU4NCBlNGMyY2JkM2JmOTM4MzNjZjA3Y2JlMTE5ZWMyMjZkM2RmNmQ3NDkzIHB5M2sKKzc0NTg1IDY4YzkyZWQ4ZDk2MDRkMzBhNTMyMDcxY2FmMTc4ZjJmODZkZTM3YzkgcHkzaworNzQ1ODYgZDgyODAzNjRjNTgxNGY4NDE1ZTVhMzRhNWRhYzdiYjcwZTBlNzM4ZSByZWxlYXNlMzEtbWFpbnQKKzc0NTg3IDFmNzcyZjhmZWM5MjJiZjU0N2M2YjlkZjVmOWUzNjQ5ZDMwOTA3NTYgcHkzaworNzQ1ODggNmZhOGE4MTE4ZGYwYzNmZGJjZGQ3ZjRiNmIxYzAyMDA5MTllNTk3ZiBsZWdhY3ktdHJ1bmsKKzc0NTg5IGFlZGM0ZWMyZmUyNDAwNzc3NzFiMTFhMWZjYTdhMzIwY2NiY2ZmYjAgcHkzaworNzQ1OTAgYjRmYzhjYmZlMWVlOTFmMGM0ZWY4ODU3MjZiN2ExYjg2NDk5MGRhZSBsZWdhY3ktdHJ1bmsKKzc0NTkxIDA4MDkwYjVlOTZjMmZjZTc3MjBlNzYzZGU2MjQzOGE1YWJiMWUxZDYgcHkzaworNzQ1OTIgNjk2MTZlMjI4NzI4ZTNkOWNhNWVhNzI4NjdjYjU3MzFlZmY2Y2YzOCBweTNrCis3NDU5MyA1OGU2MzE5N2Q0ZWFiMzExOGRmYjg5ZDNkNTE2OGNiNTAyNzg0MjI5IHB5M2sKKzc0NTk0IDM2OGJmYzE4YTdhMTM5YWI5NWQ2NmFlMmZkMDVjNWZiYTU1NGFlOGMgcHkzaworNzQ1OTUgYmY1MDBkODg1Nzk2NmFhZjU4N2IzYTJjNTNkNjdiY2NhNzg0NmJlOSBweTNrCis3NDU5NiA1NjAwMDhkMDk4ZGRjNzE5ZTIwMzMxYzRlZDYzYTI5NDE0MjFiNzI3IHB5M2sKKzc0NTk3IDg2ZmE0M2M2ZDU3YzY2MWZiOGM0MGVhNTY0OWZjYWI2N2M0Mzc3ODEgcHkzaworNzQ1OTggODAxYWE1MmIxMjE3MDU5OGY3ODhmYzRlYzMwMDgyNGZhYjUxMWNiMyBweTNrCis3NDU5OSA5OWRjMjJlZjFkZjA0ODgwYjhiZmYzYWE1NjkxNDA1N2I3ZjMwNjViIHB5M2sKKzc0NjAwIDM5YmNiZjMxNmRiYTY3Yjc5MDA3ZjNkNDI3MWRhMTQ3YzY4ZjNhNzQgcmVsZWFzZTI2LW1haW50Cis3NDYwMSA5NDI0OWQxNDI1YTNmZGI2NzRjYTFkYzNlZGMyNTYzNzBmOWMyMjI0IHB5M2sKKzc0NjAyIDAyNzAwN2I0M2YxNjU2MGRmMmI4NDMxMWRhNzkzYjBjNzc0NTlhNDUgcHkzaworNzQ2MDMgNzhiODZmOGJmNWM0NTljMTc1ZGVhZjg1ZmM0ZTYzZDNmZmEyYTkwMCBsZWdhY3ktdHJ1bmsKKzc0NjA0IDQzYTY2Njc2OGY0NzRiNTYxZmM2NGJmYWY3MmViY2VmMzM2ODU5YjAgbGVnYWN5LXRydW5rCis3NDYwNSAzNWExNjIzYzEwMjM5MDg4YjAyNmM5NTE2MTk5YTA0YmQyMDI2MzA1IHB5M2sKKzc0NjA2IGU4MTQ1M2JiMDc4OTNmN2U2NGE2NDk2NGYxODUyNTAzYmYzYTA5ZjMgcmVsZWFzZTMxLW1haW50Cis3NDYwNyAwNWFkOWVjNjMwODc3NDkzNjM5OTY4OGRmYTEyMjNkMTYxODc1ZDYzIHJlbGVhc2UyNi1tYWludAorNzQ2MDggYWNmMjE1YmJlNzAyZTA1NTcwZDRjYzJjYzNkNDg3OGRlM2Y3NzIwOSBsZWdhY3ktdHJ1bmsKKzc0NjA5IDExYjQ1NTM1YTFiM2U2MTljZTZkYjdmYWFmMjY5OGQ5ZjIzYjg1ZDIgcHkzaworNzQ2MTEgODQ5OTI4ZDc1ZDZlMzk4OGUxYzg1YzlhYjZiNDY3NzQ5Y2U0ZGQzNiBweTNrCis3NDYxMyAwN2MyMzgwNmNjYzZjMmVkYmUwNmNiNDI5M2Y3ZjFlOTU1NmM4N2FlIHB5M2sKKzc0NjE0IGJhNWIyNjgzYzA2NDBjNjAxMzJiNTg5ZjRlMTUwZGQ4NzQwOWFjM2YgbGVnYWN5LXRydW5rCis3NDYxNSBlNWI0NjNhNjFlZTI2OWVhOGNmMDk0MzY0NzIyMGQ5MzZhOTc2MTBmIHB5M2sKKzc0NjE2IGVkN2RiYzkyMmQwNWM5ZjQ1ZTE3ZjcwOTc4NzgzMWE2NzM4MzdiNzkgbGVnYWN5LXRydW5rCis3NDYxNyBlMTU3Y2ViNTRhNDM4YjExNjU5OGU5NGZkYTQxNGFjYmNkMjhhNDNiIGxlZ2FjeS10cnVuaworNzQ2MTggYjc0YTdhM2U0MWM1NzJkZjM5ODA3MmY1ZmY0OWU1ODFjNjEyNzgxMSBsZWdhY3ktdHJ1bmsKKzc0NjE5IGQ1MTJjYmI4NWFlMDAxZDM5NmM4ZDlkZDQ2NTFiYWM3NjYzNzI4ZWMgcHkzaworNzQ2MjAgODE4YmE4OTg1MjgxMDQzNWUxNjgzNTkyNDFkMjFmYmNlMzMxZTAyNSBweTNrCis3NDYyMSA2NmY0OGJjOTQ4MTQ4NzUxYmFhNzgzNTVmYTc2MjAwMzhlMmExODM4IGxlZ2FjeS10cnVuaworNzQ2MjIgYWM3NTVjNTY2MTM2ZDUxMzA3NjEzMmZjYjMwOGFkZTVhNjk4YzU2YiBweTNrCis3NDYyMyAwMDg4ODQ0ZDAxMDlhNGY3YjczZjdlNzI5YmFjOTRiN2JkZWZjY2NhIHB5M2sKKzc0NjI0IGFmYmIyYjJmZjZmNzgxMGQ5NWVhNzQ0OGFkZjEyZDc4YTU5OTE1OGEgcmVsZWFzZTMxLW1haW50Cis3NDYyNSA1ZDJiNjZlMDE5NjhhM2ZhYWUzZjFhMjQ1Yjc0MzdmMjBmYzE4YzdhIGxlZ2FjeS10cnVuaworNzQ2MjcgZmQ4YTU4OTAwOGFjMjBlNDUxODc1ZTE1OGU5OTg4NzMzNTg0NjRkNSBweTNrCis3NDYyOCBhNDdhYTExMGZjYWNmODRhZWQ0NGQyODlmZjIyNjVhMzc5OTZjNDM3IHB5M2sKKzc0NjI5IDZiODJiYTMwNGE3ZWRlODc2YTBiNzdlYTdmZWMzZTIwZGExYjNhYzUgcHkzaworNzQ2MzAgMTA2ZWU0ZWI1OTcwNWRjZWZmM2ZiNGJjNGUyMmU5NWFiZWFhODk5MiBweTNrCis3NDYzMSA5ZmZhOGY4ODc3NTA5NDg3ZWUyNThhMmRjY2RlMmVmOTRiZjRkOTdhIGxlZ2FjeS10cnVuaworNzQ2MzIgZTBjZWYwMjMzMDIwM2U0NmIyMTgxOTYwNWZkNjFiNDYzYWJkYjBmMiBsZWdhY3ktdHJ1bmsKKzc0NjMzIGJiOTAwNTFiNDM0YzAzZWU3MzNiZmJiYjk2ZGYwOGY2ODVhNWE5ZWEgbGVnYWN5LXRydW5rCis3NDYzNCA2MzcxZTJkMGRlYTAwOTE2ZjhhZjg1ZGExZDY3NGViODI5ZjIwOGNlIHB5M2sKKzc0NjM1IGQ1NWM5YTA2MzI1OGFlNzkzYjY0Njc4MzcxZDI0NDQ1ZWUyYTMxZGYgbGVnYWN5LXRydW5rCis3NDYzNiBlYjY3M2E0MDFiOWQ1NTA4NjFiNTAyYWY0MmE5MWM2MDQ1NmZmYjUyIGxlZ2FjeS10cnVuaworNzQ2MzcgOTVlNTczOGNiMzA5ODE4MThhNWJjODNmYmRlN2M1NDhhOGMwNDdkNiBsZWdhY3ktdHJ1bmsKKzc0NjM4IDc2YWViYzVlYTQ1Y2JhZDM2MTVkZjVmZDAwYTFmZGQ0NDNlYWM3ZjMgcHkzaworNzQ2MzkgM2I5ZTc1MzExZTQzMGEzNjZmOTliODBmN2I5ZjliZDJkOTZiZDQzOCBweTNrCis3NDY0MCBjZTdlMDAzODk5NmY0YjRmODM5ZDljNWI0OTA4MGY2YjlkODU1Y2JmIGxlZ2FjeS10cnVuaworNzQ2NDEgMWYwM2YyOTIwYzYxNzFlODc1NTg5MTU1ZTRjMTFhMmFlOWI3OWE0ZiBweTNrCis3NDY0MiA3N2FiOTNjYTA2NWUzNjdhZjFmMTQ5MTk1ZTdjOTY4MDY5NDFkYThmIHJlbGVhc2UzMS1tYWludAorNzQ2NDMgN2QzOWUyMTNiNzU2MzY3ZjhhMWM4MmFkMjc3MGMzNzBmN2U1NjNiMyBsZWdhY3ktdHJ1bmsKKzc0NjQ0IDYxZGJjMWQxYjgwNGQ2Mjg0ZjZmYjQyM2UxMWMyNTdmMDMxNzBkMDUgbGVnYWN5LXRydW5rCis3NDY0NSBhMDdmMzBkN2QwZjFjZWYwODU1MTNhYTRjMjE4NjJkOWYzODdkMDIyIHB5M2sKKzc0NjQ2IDI1YjEzZjc4MmZmZTg0OGExZDNlMDIxMzU5NGYzOTdjMTIyMzc0OTkgcHkzaworNzQ2NDcgYzUxNzIxZDY0NDUxYTQ5MmIyZmI4Y2Q4OTRkNjU3MWZmYjhhYmQxYSBsZWdhY3ktdHJ1bmsKKzc0NjQ4IDYzYjZhOTFhZDlkOTdkYzg4OGVkOTBkYWU2NGY2NTBhMzk0OWQ1ZDUgcHkzaworNzQ2NDkgMTdlODNmMDE2OWU4MWZmMWRhZTMwODlhYzFjZWVlZjliMDlhZGMzMSBweTNrCis3NDY1MCA2NzU4YmYyMDAyZGFiN2MxNjdiNGE3NzkyYjhiMGQ5OTE3Y2MzOTBkIGxlZ2FjeS10cnVuaworNzQ2NTEgOGE4ZTNjMTY2OGEwOTk3NDQxZTMxYWRjNzFjYzdmZDM4ODczZDk4MSBweTNrCis3NDY1MiAxNTAxYTEzNjBjZTRlNDg1NzViZTQ3YzRmMDVmN2ZhZGZlMWJlMDA4IGxlZ2FjeS10cnVuaworNzQ2NTMgMjBiZmMxZDM1OTg5YzA0NTA5NzU2NjlkNmYxOGMzMDBmMTk0NmMxNyBsZWdhY3ktdHJ1bmsKKzc0NjU0IGMyMTY1YmUwMDE3MWE2ODM5NDNiNWE0ZWFmZmY1MzA3YzFlOGFmNjggcHkzaworNzQ2NTUgNzdkYjI1Yzc1MjZhMTI5ZTRjMmNlMDQ5NzBkOWU2YWU2YmM1NThhOCBsZWdhY3ktdHJ1bmsKKzc0NjU2IGU4NDQxODUwNzkwZjg2ZGQ4MTJmNGEzMjBkNzRjYTYxZGI5YzViOGQgbGVnYWN5LXRydW5rCis3NDY1NyA3NTgzN2NmZTlmZmJmOWFmYWRjZTY5NjUzOTQwNDNmNmUzMTUyN2VhIHJlbGVhc2UyNi1tYWludAorNzQ2NTggZDU2N2Q5NjNjYjM3MDRhOGMzOGQ3ODlmMTUzMDMzNjVkNzdhMDJhMCBweTNrCis3NDY1OSAwZjZkYzJlNmYwOTFlNDEyMjcxZDU5NDA1MmUyNzA2NDIwZWQzMmI1IHB5M2sKKzc0NjYwIDNiMGIzNzAxNGFhZWIxNzljNzFiNmU3YmNiZmUxYjEzNTY4NmIzM2MgcmVsZWFzZTI2LW1haW50Cis3NDY2MSA0ZGRjMDU5OGRmNzlmNjMwNWE3MjVhMzAzYTk4YTQyZTRmM2M0ZDc5IHB5M2sKKzc0NjYyIDI2NmQ3ZGMzZDY1NTEwM2NhNGE2YjZmMDQwNzViYThhZDk0MTZmZTEgcmVsZWFzZTMxLW1haW50Cis3NDY2MyBmZmJiOGZmZjM1MjBlZjhhMGIxZjEzODEzZTQ1MGIxMzI3Y2E3MTYxIHJlbGVhc2UzMS1tYWludAorNzQ2NjQgNmY3ZTcxOTJmZWJiMGZkMTlhODE2MjFlMzhkNGUwMTdhZThjOGM0YSBweTNrCis3NDY2NSA3ODM3MDViMDQyNTgwZTMxMDA1ODhkZjVlM2JlYmIxOTZkMWEzYzY5IHJlbGVhc2UzMS1tYWludAorNzQ2NjYgZDE5MTE0NDkyMjg2MDBiYTZmOWRjMzhiMGMyODI1YWFhMTE3YjUwMiBsZWdhY3ktdHJ1bmsKKzc0NjY3IDFkNDM4MTJhYWRiNjE4ODcxNzAxMjBjMGViNjg1OWM4ZjZjMmI0ZGUgbGVnYWN5LXRydW5rCis3NDY2OCAzYzdjOWI4MWUzNjE0NDQ1MWRhZTQ3NDJjZjdhN2I3ZDRiYjE3MzdjIHJlbGVhc2UyNi1tYWludAorNzQ2NjkgNjIzMTQ3YTJiNWIxYWI0Mzc3Y2MxN2NlM2IxODRkY2JjMWQyYzBiNyBweTNrCis3NDY3MCBkYzYyZGQzMzI2ZWQwYmUyM2YyMDY3OTBhNjRjZGMzMjNmOWQ1Mjk3IHJlbGVhc2UzMS1tYWludAorNzQ2NzEgOTA2NDkwYWI2YWZmYjRlZWRkYzM5Yzk1MmQ1MzNmNzNmN2Q4ODRlZSBsZWdhY3ktdHJ1bmsKKzc0NjcyIDM0NDk2YmVkOTM2NWY1ZGQ1YmI5Nzk5ZWNkMDkwNzJkOTMzNTVlYjUgbGVnYWN5LXRydW5rCis3NDY3MyA1ZDk3NjFlNDQ1NTU4N2Y1YTczMTgxMWEyNmY4OGE4ZmQzN2U4MWI2IGxlZ2FjeS10cnVuaworNzQ2NzQgZDYyN2IwZmYxZDE3ZTVlZTRiODY3YWE2NjczNGI5Mjk5NmU1Mzk2MiByZWxlYXNlMjYtbWFpbnQKKzc0Njc1IDE5N2MyYWU1MWNjNjEyYTk1NmQzYTRjZWQ3ZmVkNTQ1MGNjMjI3NjggcHkzaworNzQ2NzYgMWY0ZjM0MmJmZTJlODFkZTc4YTkzOWQzMzQ3Zjk4MGVlNDc4YWIyYyByZWxlYXNlMzEtbWFpbnQKKzc0Njc3IDIwYjlhZjFmMDBjODc1M2NhODhlYmI3MmIwMzJiNGMyOGNlOWRhZDEgbGVnYWN5LXRydW5rCis3NDY3OCA5NTkwMGRiZDVkZDMzZjUyMTI2MWE1NWRhNmVjNWM3ZGExOTcyMWI3IHJlbGVhc2UyNi1tYWludAorNzQ2NzkgYTE1MmNjY2E1Mzg5NjJlZWU0ODI1NWY1NzdiYmMyZjQ5MTM2YWYxNCBweTNrCis3NDY4MCA0ZjA5ODgwYmViYmJhNmNiM2QyMzEyYTM3MWU4YWM1MTg4YWU4ZDFkIHJlbGVhc2UzMS1tYWludAorNzQ2ODEgODk5YmJjYmFmOWE2ZWE4NTE1YzhiZmIxMmEwMWQ2MDg5Y2RmOTkzMCByZWxlYXNlMjYtbWFpbnQKKzc0NjgyIGRiMTVjN2FmMDE0ZmEwODcyNTU2MzYzOWZmZjJhMTgxNGY3YWIxMWUgcHkzaworNzQ2ODMgMGM0OTRlNTc4N2RmNmJkMGQwOTcxNTM1ZDZiMmY0ZGZjY2VjNWNkMSByZWxlYXNlMzEtbWFpbnQKKzc0Njg0IDM0YTdhOTE1ODM3MjNiNThmOTM5MjIzMGFkNmZjMTY5NTc0YmViNDYgbGVnYWN5LXRydW5rCis3NDY4NSA3ZTc2OWZkZGU0MzlmZmM4MDVkNDEzY2VjYmE1OWU4YmViZGYyY2U2IHJlbGVhc2UyNi1tYWludAorNzQ2ODYgOWU3Yjc4MzJmZDQ1MTI3OGE3ZWZjOTcyMjg4YjFlYzUxMjFhYjMwMiByZWxlYXNlMjYtbWFpbnQKKzc0Njg3IDkyZjE2Yzg3ODg5ZGEwZjQyZGUzZWFiYTY2ZmJmM2QwZmUyMWNjNzkgcHkzaworNzQ2ODggNjU3MmQyZWZjOGIyOWFhYWYyODBkODRjZDM1YWMyN2RlNDQwYTYwNCByZWxlYXNlMzEtbWFpbnQKKzc0Njg5IGM2NjQ1NWE0MTZlYzdiZmQ5MzQwMTAyYzgxNzFmZjE3ZmZiYmU4ZmQgbGVnYWN5LXRydW5rCis3NDY5MCA1M2M0ZWZkMTcwYzA1MTdmMTYxYTViMDc4Mzg2Zjc5MzAzMTI2YmVmIHJlbGVhc2UyNi1tYWludAorNzQ2OTEgNzUwMDA5NmJmMWEwN2ViMDY0YzU4OGQ4N2MyNGNmYjBmZjU2OTg0NCBweTNrCis3NDY5MiA4NjkwMWNhZTZiNjQ4M2Y5YTJkNTZlYTNlZTM0MDZhNzViMzI3OTQ1IHJlbGVhc2UzMS1tYWludAorNzQ2OTMgZDMwYTNkNTc3MTY0ZWJjZGE4MmFkMmJhZjg2OTMwNTAwODhhNWY2ZCBsZWdhY3ktdHJ1bmsKKzc0Njk0IGE3MGU3MmVmYzJhZDY5Y2RiOThhMzZmZGNlMjMzODAzNzEwMTEzNmEgcmVsZWFzZTI2LW1haW50Cis3NDY5NSA1ZTExMDg1NDVlNzg3NGE0OWMxNzc0M2RlM2RhNDc0YmQyYzVmODhjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDY5NiBlZDJjNWUwMDc0MTFkMDk2ZDkzODM0YTFlYWVkYzYxMTZiYjJhZTI1IHB5M2sKKzc0Njk3IDQ4MDNlNzZmMjBjNTZmZTllOTljOWI1YmI0Mjk4OGFlNTUyNzBiZmYgcmVsZWFzZTMxLW1haW50Cis3NDY5OCA3OTBjMDE5ZjY0MDM4ODczMDMwOTA4MmJmZjU1ZGM3NzM1ZDJhZjQ5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDY5OSBkYzcyMTdjYjczYjdiM2JmMjcwY2ZmM2E4MGNjNDRiZmY3ZjdiN2JhIGxlZ2FjeS10cnVuaworNzQ3MDEgZjY0NTcwZDBmNzFkOWRiZDcwMDUwNjRhMzQ2NDQ3ODU2NGUwYzY1ZiBsZWdhY3ktdHJ1bmsKKzc0NzAyIDM3ZjVkMTc4NWJiM2ZlOGMyNzM5NjVlZmIzMDNjOGI3NjI2YmNmYzkgbGVnYWN5LXRydW5rCis3NDcwMyAzMDBkYTNjY2Y5ZmMzZjcxNGYxZDU5ODE1YWZiNjQxYjE4NjQzMjlhIHB5M2sKKzc0NzA0IDBmNzMzM2FjYTQ1NTMyMzEwYzZmNTc4MzQyMzBkMDQzZWRhMmNlZDcgbGVnYWN5LXRydW5rCis3NDcwNSBlODk1ZWY4MmMwODZjY2I4M2JkMTY1NDM0YmRjZTRjOTA2MDI1MDgwIHJlbGVhc2UyNi1tYWludAorNzQ3MDYgOGE4ZDQ2N2M4OWNjZWEwNGIxN2Q4MjdlZDg4ZGEyNjhkOTM4YjRmMSBweTNrCis3NDcwNyAwZGQwYjBkZTVlMzFmMDFiNjQ3Yzk3MjQyYTk5Mjk5YmYzZjJlMTdhIHJlbGVhc2UzMS1tYWludAorNzQ3MDggZDQxMDI0NTkzOTMxZjY5YWE3NjczNDhjYmI1NGU5YWM1ZTQ1YjdhYyBsZWdhY3ktdHJ1bmsKKzc0NzA5IDVmNWVhNzQ3ZTMxYTFhZmQ5ZGVlYjVmM2Q0YTZiY2RhNmMyNGY2ZGQgcHkzaworNzQ3MTAgY2ViNzU4MTk1Mzc3MTZjNWFhN2U1M2VjOTdhNDhkMDRkN2VmM2FjMyByZWxlYXNlMzEtbWFpbnQKKzc0NzExIDY2YTJkZTBkNDI4ZTY1ZGI0ZTY1NzhkMDg0NGYwMTQ5YWE0YjhlOGYgcmVsZWFzZTI2LW1haW50Cis3NDcxMiA2ZmU5ZGZiMTM5YzMxYzc1NDI4MGExMzAxMTBmYzRmYzYzYzEzZmQ1IHJlbGVhc2UyNi1tYWludAorNzQ3MTMgMWQxZDJkYjQ1NmQ4NmUyNjdjMDU0MGUyZGQ4ZjZkNTJhYTA4YWEyYiBweTNrCis3NDcxNCBkZTYyN2NmZWVkMTQ2NmM3YzkyMWViMjRjMjY0N2Q5NzhjOTZhOWUzIHJlbGVhc2UzMS1tYWludAorNzQ3MTUgZmQzNGZmYzhmODA0MmYzZTc2YjhkMjkxODA0MzA4ZGZmNTJiODI3YyBsZWdhY3ktdHJ1bmsKKzc0NzE3IDkxZGM2MzIyNzIyZGY4YjJhYzhjYzJkNTQ4MTVjOTBmOWQ4YTc5OWUgcmVsZWFzZTI2LW1haW50Cis3NDcxOCBmYzlhMDA3OTk3OTVjNGQwNDNiYWZkZDgzMDAzNTEyODFmYjMwZDQ2IHJlbGVhc2UyNi1tYWludAorNzQ3MTkgZTJmYTA2MDUwOGRhMDUzYzU3NDNlMmQ1MTc3MmMzOWZhNTY5MDIyNyByZWxlYXNlMzEtbWFpbnQKKzc0NzIwIGRkNmE5YmMzOTk0NjNmMDYyZWRjODA3MTE5ZWYwMDRkZDRkZTM0NDEgcmVsZWFzZTMxLW1haW50Cis3NDcyMSBlMDQwOWYwMzgyMmZiMzBmN2RmYTg1OTgzNDk5NGExOTI4MTA3ZGIwIGxlZ2FjeS10cnVuaworNzQ3MjMgNDBmZDhmZDk2ZDk2Y2RhMWNlN2M4MjY1ZDA3NTk2ZmYzMDg4NjQ2NSBsZWdhY3ktdHJ1bmsKKzc0NzI0IDMyZTg1ZDUwYzUyZGJjYjQzYTk3MWJmZGQ4N2JhM2NmNTkzNTUzNmIgcmVsZWFzZTI2LW1haW50Cis3NDcyNSAwYmM3NTlmNmRlZDVjOGZiZWFhNGU5MDA5YTFlYjIxM2ZmYjhkOGI1IHB5M2sKKzc0NzI2IGUwMTc4YjhhZWFmMDc5OGZiNmM0MzY0YmFiZjVmMzNjMzRiOGFhMTYgcmVsZWFzZTMxLW1haW50Cis3NDcyNyA5MzFhZjY2MTFhZTljZTQ1NGU3MWM1ZmUyYmY1YWM2ZDMwMTVlNDEwIGxlZ2FjeS10cnVuaworNzQ3MjggNjdkZTQyY2EwYTI2YTcwNDFiZjQyNmZhZGE3NjZkNjcxOWZiOWRmOSBsZWdhY3ktdHJ1bmsKKzc0NzI5IDRiNjM5ZjViN2QzZWJlZTBhMGFlZTQxYWM4MmRkZjQ1YzBkNjA3NGEgcmVsZWFzZTI2LW1haW50Cis3NDczMCA2ZmE5NDZkMDc1ZjRhYzM0NzA5ODdiZDAxMThiMjdiYzZhMzAyODJjIHB5M2sKKzc0NzMxIGQ1ZmM1MTg5MTk5N2RhZWY5OGMzMDUwYWQ2NWU1ZjMzNTEyYjVlZDIgcmVsZWFzZTMxLW1haW50Cis3NDczMiBlMWVmY2E2MWVlNGVkOWY5MzU2OTIxNTZkYWUzNGQzYmQ1N2FmNzQ2IHJlbGVhc2UyNi1tYWludAorNzQ3MzMgNWRlYzhhMTJlNDU1YWU5OGU3MDJhMWQ5MTM5ZDM3MmY3YTEzMjY2ZiBsZWdhY3ktdHJ1bmsKKzc0NzM0IDhmNmNmMzljOTZkZDYyMzYwMzAxMGQzODVkYzM2MzU2ODg0N2QxMzggbGVnYWN5LXRydW5rCis3NDczNSAwMGQ2Y2I2MjU2NjdmMzcxNGI0YWRiNzRhYThiZmUyYjkxMmMwODU4IHJlbGVhc2UyNi1tYWludAorNzQ3MzcgYWI3ZmQ0YmMzODI4ZjhjZTA3Njk1ODcxMzk4MmFhZWM4YjY2ZDdlNSBsZWdhY3ktdHJ1bmsKKzc0NzM4IDI1YTYxN2NhODNlMjM5MjU0NzQwNzQ5NDM2MzkxNGIxNjRkODQyMGUgcHkzaworNzQ3MzkgNWQxNTI5NmEyYTRlMWM3NWJkNWVjN2M5Y2ZkNTQ2OGFjMDZiMWU4YyBsZWdhY3ktdHJ1bmsKKzc0NzQwIDgzNWZjODU3N2RjNzkwZTJlZTQ1ZWM1Mjk4YTMzZjJlOGMxOTRlYjIgcHkzaworNzQ3NDEgN2YyYTg3OTQzOTlhMWU2MGM0MDlmMzc0NWU0NWM1YmMyZjNhMzk5NCBweTNrCis3NDc0MiAwZjZkYjAwMmIzYTFmZWM5OTg5MzJkMDZlZGE1NzZmMTRlNmM3ZDJkIHJlbGVhc2UzMS1tYWludAorNzQ3NDMgOTU4MGJiYmI1NTJlMTNhMDExMGQyYzhiNmQxYjUyZTUxZGI2MWZhNyBweTNrCis3NDc0NCA2YWZmZDZkZGEyMjlkMTQ2Yzg2MjM4NzFhZDRmNDk4Y2M5MmQ0NTY5IHB5M2sKKzc0NzQ1IDdlNmY2MTRhNmFkMThjMmNmMmFjYTFiZDk1YTc0Y2ExNjc3MmU2YjMgcHkzaworNzQ3NDYgZDRlM2FmMzQzZTMyMGE5Mjk5OTlmMTM2ZGZlZTM2OTgxOTFhYjk1OSBweTNrCis3NDc0NyAzZmIxYzFmYmUyNmNhZWY0ZDRkNTQ0ZDQyM2FjOTYzMzcwM2FhZDU0IHJlbGVhc2UzMS1tYWludAorNzQ3NDggNjIyNTAyMWJkYzM2YjE4MDljNGE4ZTQyZjA1MTNkMzczYTkyMTc4NyBweTNrCis3NDc0OSA5MmRhYTljNDFkNTYxZGQwMWRkZTY0NjZjMDI1ZGNmZGE4NWRiOGFhIHB5M2sKKzc0NzUwIGVjZDIyODUwZDIwMWNhNGJmMjc3NDEyZDY3ZDExNTljYzkyYTAxMTcgbGVnYWN5LXRydW5rCis3NDc1MSA1MWJhYWQyOGZlN2ExNDFlZDRkODAxNGZhYjEyYTM5MWQ5Y2NjZDM1IHB5M2sKKzc0NzUyIDZiZjI1MzlkM2JhYTQyMWUxOWI2ODQwMWU2ZGM2NjJiNDcwZDJkNDIgcmVsZWFzZTI2LW1haW50Cis3NDc1MyBkOWE2NjkwNWYwM2U5NWMyMDg4MmI3ZWM0ZjhhMjExNTU0ZDRlYTEwIHJlbGVhc2UzMS1tYWludAorNzQ3NTQgMzliZTNlZjgyZDIzMzZlMzI3M2YwZDUyZDA2M2MzMGYxZDc3NTg0NyBsZWdhY3ktdHJ1bmsKKzc0NzU1IDUxMTFkMzI5OTc0MTYwYzlkYzM1ZGI1YWRiYTJkZTA2YjQ0MTk4NzkgcHkzaworNzQ3NTYgM2RmOTkxNGVmYzg0ZTM5MzhjMjg0YzFhYWFjOGRjOTM1MDgyYWM1NiByZWxlYXNlMzEtbWFpbnQKKzc0NzU3IDJjOWVjNGU3ZDhjMjEwYjc3Mjc2YTU4YTZhOGZiODM2MzRmMGMyZWEgbGVnYWN5LXRydW5rCis3NDc1OCBmYWQwMjUxMzI0ZDdhYTE0NzMwOGRlNGY0ODEzODVkYzA1ZTMzZTRjIHJlbGVhc2UyNi1tYWludAorNzQ3NTkgZmZmNTliMGFkZDk4YTU2MTU3NGU3NjQwZjMzMTA3ZDgxZWYzMzFkZCBweTNrCis3NDc2MCAwNzgxYWNmZGM5NDVkOTFlYmNkM2EwOTI3ZDdjODQ4MzYzNjQ5NTRmIHB5M2sKKzc0NzYxIDhiYzRjOGNhYzdkNzIyZmJiNmRkMWQ5OWVlNWMzMzllNDIzNTQ5NzQgcmVsZWFzZTMxLW1haW50Cis3NDc2MiA3ZDljYzRiY2Q3NzYwZTU0MWZlNGJjYzg0MDliOTFmYTY4MmFkOTFmIHB5M2sKKzc0NzYzIGQwYmRiMTkzMGQ0OWU0ZTJhOTM4Mzk1MDkzZWE4MDRmODBiMDJjNzIgcHkzaworNzQ3NjQgZGQwMjc5MTY2NmUwNWI4MDRkNDdmY2E0MTdhMDY4ZDE0ODU2OGU4OCBweTNrCis3NDc2NSAyMjkzMGFmNGRkZjczNGZjOWJhNWJlZjgxM2E2NDU3YWNiNWFlY2QxIHB5M2sKKzc0NzY2IDkxMTk0NjdhYTg0ZTgyOGUzNDk3NmJhYTcxY2RkZTU1NDczOTBmNGYgcmVsZWFzZTMxLW1haW50Cis3NDc2NyBmM2EzMDA4M2ZkOTY0ZmMyNTI3YWQ0YzBlZDUxNTkzYzJjY2E1YzZmIHJlbGVhc2UzMS1tYWludAorNzQ3NjggM2M1N2QyNmI0MGM0NjdiYTY2ZGFlNjIwNzAxMTkyMGFjZTJiNzg0YiByZWxlYXNlMzEtbWFpbnQKKzc0NzY5IDY1OTQwNjZlNTA0MTY5NDE4Mzc1ZGQ5MDgyMTE3YzQ1OWQ2Yzg0NzIgbGVnYWN5LXRydW5rCis3NDc3MCBmNDRmNDZmZThkYTUyZTM4MGNiMTA5YTgzZmM1Y2RlY2M1N2E3MDgxIHJlbGVhc2UyNi1tYWludAorNzQ3NzEgZDdhZThiMDczOWU0N2FlNjRkODc1MjE3MzM4YjFkOGQzYWEwYWVmNSBweTNrCis3NDc3MiAzMTY5MjFjYzkwNGE1ZGIyZTU1OWE3MzY0ZDdkMzBkNTQzNjY4MzI5IHJlbGVhc2UzMS1tYWludAorNzQ3NzMgMGMwYTZjZmQ0YmUyMjBjODUwOGFkMTljOWVjNGNiNmVjOGRiMGI4MyBsZWdhY3ktdHJ1bmsKKzc0Nzc0IGFhYTZiNzI0YTRmY2U0NjEyZWM4MjhiM2Q0ZDA1OTllNjI3ZWUyM2IgcmVsZWFzZTI2LW1haW50Cis3NDc3NSA0M2RhNTNlNTAyZTE1ZGM0NGFkYTNlM2RmODdiODY0YTNkNDM1M2M4IHB5M2sKKzc0Nzc2IDgzOTNhOTAyMTZiMzg2YzQzZGY0MjIxMGNlNWI3MWNkYWQ5MDk0ZDcgcmVsZWFzZTMxLW1haW50Cis3NDc3NyBiYjVmYzE1YjAzNGNlM2E5NDFiYTljOGY2NWQ3Mjg2OGEyMDdhZDAzIHJlbGVhc2UzMS1tYWludAorNzQ3NzggMWEzOWE0ZGQyNzdjNDk3NDdiMDAwNGNkYjQxMDJmZGY1MGRkZTcxMyByZWxlYXNlMjYtbWFpbnQKKzc0Nzc5IDlhY2U4NjI5OWJiOGJmNGJlMTU5NzJiNDVmNDFkOTNlYWJhZjkyMzkgbGVnYWN5LXRydW5rCis3NDc4MCBlOGQ2ODFjNDQ4ZDcyZGRhNjRhMmY3OThkMjJlZmU0ZDgxYTRiZWFmIGxlZ2FjeS10cnVuaworNzQ3ODEgYWVmZjMzMTljNDE4YjQwN2JkNmM5NzRkMmEzMDZhYWZjOTQxMjcxZSBsZWdhY3ktdHJ1bmsKKzc0NzgyIDcxNWU2OTcyNTNmMjRhYzViYjZlNTg5YjhjZWY2NDg2ZTc2Mjc1ZWQgbGVnYWN5LXRydW5rCis3NDc4MyA5ZjFkNmQxZGJiMDA4MGM2ZTU1YzczNGQ4YTg0MGNiZWY5Y2RjY2NiIGxlZ2FjeS10cnVuaworNzQ3ODQgMWExYWY5ZmJkODMxNzk5YjE2MzY3YWUwZTRlMGIxNjc3MjA0MWFmNiBsZWdhY3ktdHJ1bmsKKzc0Nzg1IDI1MTNhZmY0NDVjMmM5ZWMxNTYzNDgwZmQxZGI3MWE0ODE4ZTZhYTQgbGVnYWN5LXRydW5rCis3NDc4NiA3NjQzZTI3MzA0Mzc2NGU2ZTA2NDUwNDNhMWZhNmRlOTY1OWM5NzdkIGxlZ2FjeS10cnVuaworNzQ3ODcgOTU4NGI4ZTIyZjc2ZmJhODJjZjFlZjgzMTA0MGE2MjU0YzY1Y2NlNyBsZWdhY3ktdHJ1bmsKKzc0Nzg4IDZkNDVmYmM4NWJkZjNmZGI0MjBkZTU1YTAxM2Q1OGJhNzVjMDQwZmIgcHkzaworNzQ3ODkgOWIyYTQyZmJkMDRiNDJkYWVhNWFiZGJjMDlmYTA0ZDI4YTViNjI1ZSByZWxlYXNlMzEtbWFpbnQKKzc0NzkwIGMwNGE3YzM2NTVmYzBkYjdjZTQ4OWE2YmM3YTMyNzUxNjkwYmFkOGMgcmVsZWFzZTI2LW1haW50Cis3NDc5MSA2ODU1OTUxYWZmMTk5ZTI4ZDg1MDA1YTZiYjgwZmYwNzI3NDlmM2FiIGxlZ2FjeS10cnVuaworNzQ3OTIgY2Y0ZTA4MTU4NDZjNTg0YzkwOWE2NGZmZmYwN2Y0NmY3NDVjYTM3YSBweTNrCis3NDc5MyAzYWZmNTk3OTEwYzQxYjlmMmFmMGJlYTU4MjBmMDFhODRlNDE2MDU5IGxlZ2FjeS10cnVuaworNzQ3OTQgOGM3NzcxZGNlMDQ3NGE4N2YyZTZiN2E0NTIxNTJjYTUyMmMyZDU3OCBweTNrCis3NDc5NSBkOWI1YjdkZDgyYTIyMjRiZGI1MmNhYWE0YzM4YTkxNzBjOTEwNTY5IGxlZ2FjeS10cnVuaworNzQ3OTYgMWYxZjZiZmQ0ZGZiMDQ0NDdiZmE5ZTRjNTUxMmQzNDRkZGJiN2IyZSByZWxlYXNlMzEtbWFpbnQKKzc0Nzk3IDRhYjNiNWVhZTg5Nzk4MjI4NGVlYjhmMjc2NGFhOWJmZDczNzEwZTcgcmVsZWFzZTI2LW1haW50Cis3NDc5OCA5YWQ2ZDcyYmNkYTViNTQ3YmZiNTJiNWZlMTFjODc1YWNmMWU4ZTRlIGxlZ2FjeS10cnVuaworNzQ3OTkgMjFlOTA3YTM4MzZmM2M5ZTM3NGUxYzNhYjE0ZjJhYWZhNzU1MjIxYSBsZWdhY3ktdHJ1bmsKKzc0ODAwIDc4NDdiNDA5Yjc5YzFjYjc0NWMyYmMzN2E0ODQ0MjZlN2NjODZiMTIgcmVsZWFzZTI2LW1haW50Cis3NDgwMSA0Y2NjZjNjZTE1YTA5YzYyN2RhNmQ0M2E1MDc5MWI1ZWY0OTJkMzkwIHJlbGVhc2UyNi1tYWludAorNzQ4MDIgZGE4NTNlOTgzZjA4MjRmM2ZiNWM3Yzk2ZjFlM2IwMTNhM2I5OTIzZSBweTNrCis3NDgwMyAyZDU3NWYxNmJjZWNkOWY2ZTA4Mzc4NGIzMzdiYzIzYWQyZGUzNzE1IHJlbGVhc2UzMS1tYWludAorNzQ4MDQgODUwZGFmZDRhMjQ1M2Q1MjQ2MTAxODMxNzdlOTZiZmJkN2ViNDNiYiBweTNrCis3NDgwNSA0ZTdmNmJjODEwYjM2MGQ5ZTg1NzQ4M2U4NDNjYzJkYTM0YmM4ZTg3IHJlbGVhc2UzMS1tYWludAorNzQ4MDYgYmQ0MjAzODhlNmIxZGExODk4NWE4NzQzNjA2OGYzOGIyZGRhNmI3MCBsZWdhY3ktdHJ1bmsKKzc0ODA3IGE2ZGYwNzRkMmUwOTNmYmIwYjJhNWIyM2I4YjU2Y2ZhMjZiYmVlODUgcmVsZWFzZTI2LW1haW50Cis3NDgwOCA5NDYyNDA0ZGY0ZTEwY2ZkYTFlYmZkZmM2YWZhYzY4MDRlNDM3Nzc5IHB5M2sKKzc0ODA5IGFiNGE4N2ZlZjFhZTZlNGE4NGU3ZDgwNGNjZjkxZDJjY2MzZGNiYTkgcmVsZWFzZTMxLW1haW50Cis3NDgxMCBhMzNmOTZiNDNmMjRhY2IyMTYzYzZjNWNmNjM1YTViNzQyOTVkNDI3IHB5M2sKKzc0ODExIDQxMDJiNWYyYTJmMWUzY2U2NGZkMGJjNjU3ZjgwN2JiZmJjMGFiZmUgbGVnYWN5LXRydW5rCis3NDgxMiA4NTE5ZTI4YjI4NGY3OTRhYjZmNjIwNmRiN2FhYzExZDdkMzZjNDEwIGxlZ2FjeS10cnVuaworNzQ4MTMgYTJiYWIyZDIzNzQ2YjU1MmM5ZjhmOGJjMmNlNzUwOGEyNTcyYTE1MSBweTNrCis3NDgxNCA1NjBjMDU0YTAxYWEyZmZlMTJmZmNmYmI3YTMzZGQwNzNmNDc0ODEzIHJlbGVhc2UzMS1tYWludAorNzQ4MTUgN2Q0YzNjMDgzZjM2MTk3ZjJmMzhkZTM0NjFlZGE1OGJhZWNhMDA2MiBweTNrCis3NDgxNiA4ODVkYTE0NmZlYTVhM2RmYTM1ZDliODUyZWI0Njk3Njk1ZmI3YzMwIHJlbGVhc2UzMS1tYWludAorNzQ4MTcgNTA3YmE5N2EyZWVlZjMzOTQ1NWNiZWM2OTdjODA2Yjk2YjdiOGU3MiBsZWdhY3ktdHJ1bmsKKzc0ODE4IGJiNmFkZTUxYTBiNjIzOGQxMzVjNGE2MGJiNjJiYjI0YjE1MTJhZDUgbGVnYWN5LXRydW5rCis3NDgxOSAyZWJlOGM4MWFmZjA2OTI4YzdiZWEzODQ3YTNhNzRkM2MwZjk5MmVlIGxlZ2FjeS10cnVuaworNzQ4MjAgYzJkZTMyODY2ZDBlM2Q2NDBhYmU5MmIzNDdjYTg1NDExMzkxZDQ3YyBsZWdhY3ktdHJ1bmsKKzc0ODIxIGMwMTdhNDUwZjRhNTc2OGZiNTA2MzFhNTE5NDEwMzNjMjQ0MmYxNWQgcHkzaworNzQ4MjIgZDRjMjdkYTQ2ZGNhMGY3OTliYTQ1ZTRjMGU4ZmI0ZjU2MTZjZmYxYyBsZWdhY3ktdHJ1bmsKKzc0ODIzIDc0MmNlNThhMzE3MWJjMTJlZTQ2MDM1MDZhZTllZGMxNmU5ZDQ3MzkgbGVnYWN5LXRydW5rCis3NDgyNCAzZTE5M2QwYjFhYmE4OWQ0YmRhYWQ0YzM2MjBmODcyNDU2Zjg3OTczIGxlZ2FjeS10cnVuaworNzQ4MjUgMzM4NWU2MTgyMTEyOTQ5YTcyZDRiNDk1YWJiMDdiNzBmYmE0ZDA0ZSBsZWdhY3ktdHJ1bmsKKzc0ODI2IDRlNjFkN2JkMWIzNjQ2YmEzZmEyOTA5ZTRjMTYyZTE5MzM5ZGRjNmYgcHkzaworNzQ4MjcgOTZiNjQ1NzUyYzMzNDc1YjM5NjZkYzUyNTEyYmVkZjgzMmI2YTYwZSByZWxlYXNlMjYtbWFpbnQKKzc0ODI4IDI2ZGYwYjg1NmJjYmM0ODAzZjZhMDU3ZDMxOGQyNGFmNDUwNzM3YzYgcHkzaworNzQ4MjkgNGNiZGFiNjAxYjg3ZmYzOGI0ZWZkMmJjMzhlNjAyNDQwZDRlZDg0MyBweTNrCis3NDgzMCA0YjY0ZGIzNmYwOWI4ZmRkYzI2MjY2ZjA3YTc1NDg5NzY3NDljOGMwIHB5M2sKKzc0ODMxIDMxYzIzNmM1M2IwMjQ1N2U0ZjljYTE3ZmI4ZGVkZDRkNWJiMzliNzUgcHkzaworNzQ4MzIgZjEzOTE0NDJiZDBiNWQ4ODMzN2EwZDVmZDAxNjUwYjJmZDA3YmRiMCBsZWdhY3ktdHJ1bmsKKzc0ODMzIDliMDAzYmJjYTVkYmY1YzgyYzU1NWFkNWIyZTk5YzIwNmY1MmM5MWEgcHkzaworNzQ4MzQgZDgwNzIyMDZmZGM2MWVhNjkyOWI2NTMwZjk5MWUzNWUzMDFlYmUwNiBweTNrCis3NDgzNSBiNmUzOWVlYTFiYmY2ZWYzZmIzMTU1Y2YwYTRkNTEzY2Q3YzdlOWEwIHB5M2sKKzc0ODM2IGZhOTEyNzBiNjA4N2IwZmRmMzkzY2MwODViZThkYzhlNjA5OWI3MGYgcmVsZWFzZTMxLW1haW50Cis3NDgzNyBiZTRkNDIwMDlmN2U1YmNiN2JlZWViMzQwMjNlNjZjMDMzMDU0ODgwIHJlbGVhc2UzMS1tYWludAorNzQ4MzggMzI0NDhmOGE2YzYzNmYzOWE2MTc5ODVkMTM3YTU2YWRiOWFjMzQ3OCBsZWdhY3ktdHJ1bmsKKzc0ODM5IDdhM2VkMWI0MzQxMDk3NTNhNTdkZTgyZDdhOWMzM2IyN2U2OTRkNzggbGVnYWN5LXRydW5rCis3NDg0MCAzMzRjNjBmNTEyNTk0YzgzNzZmYzMwZjUyOWUwMzk3YTE4ODBlNmQyIHB5M2sKKzc0ODQxIGIwZDAzZmEwNzNlYzVkMTY3YTAxNjQ3ZmZmMzYyNTM5NjJkMTc4NGYgbGVnYWN5LXRydW5rCis3NDg0MiAxYWQ5ZjJiZGEyMGEyNmM3NDMyNjFlM2FhMDJlZWVhYjA3NTgzYjc1IHJlbGVhc2UyNi1tYWludAorNzQ4NDMgM2FjZDMxZWFkYmI4ODA3MDQ1Y2RhMDk2YjdmNDE0MTY0YzZhM2QxMSBsZWdhY3ktdHJ1bmsKKzc0ODQ0IDY2MWM4YTkzODkyZmY3YzEwZGRlMDFmMGQ4YTVlYjYxZWNjZmVjNDAgcmVsZWFzZTI2LW1haW50Cis3NDg0NSAwZjA5ZDM4Zjg1MmU4NDdhODZhNTdiZDFjMmViZjg0Mjk5ODQyNjMzIGxlZ2FjeS10cnVuaworNzQ4NDYgNzhmZjlhNzRjYjRlOWI3ZGFhMTYxMTZlZDA2NjA2NjFiYzMwOGFjMCBweTNrCis3NDg0NyAxYjE4OTY3ZmJkNDA4MTA2OTFlYTU4MjhjOGUwMTdkMTk0NDJiYTA0IHJlbGVhc2UzMS1tYWludAorNzQ4NDggOGFiMzA0MDM0MDIxYTU3NzBmNzMwZjExN2U4ZjZlODU3NWZhMGZmNSByZWxlYXNlMjYtbWFpbnQKKzc0ODQ5IGZhYjk5ZThkMjhjMzI3NWJlZDI1MzAwZDZiYmY5ZDNkOGI0ZGMzOGQgbGVnYWN5LXRydW5rCis3NDg1MCBhZTFiMWNmNDdjMGNhMWYzMzVlYzdhYzM4NjNlZDBmMDk4MTJmZjY5IHJlbGVhc2UyNi1tYWludAorNzQ4NTEgMWUwOWRjNjhjOGYzNjM4YmY2Y2JkODMxNTY1ZmYyMGJhZDRkNGViYyBweTNrCis3NDg1MiAyZTk4NThjMGQzNjRkMWNlNGJkZjAwMjhiYTRlYTY4NjFkYzk0ZmUxIHJlbGVhc2UzMS1tYWludAorNzQ4NTMgYTJjYmI5NDIxYTExNDNhYzVhZjAzMjc4NTI1ZDdkMTYzYTg3Y2Q1MiBsZWdhY3ktdHJ1bmsKKzc0ODU0IDkwNjllNTJjMGJlZGMyNTMzMmYwMjI5OTUzYzg1YzUwYWQzNjNkMTIgcmVsZWFzZTI2LW1haW50Cis3NDg1NSBjOGNiOWVmMGNkMGEwNGQ5YmQwMGQwMTBjNmE5NGJmODk2MjgxNTE3IHB5M2sKKzc0ODU2IDQ2NjI1YmNhMGNmYjU2ZjQ5ZWZlY2JkYjg5ZTkzNjFhNDQxM2M4NWYgcHkzaworNzQ4NTcgNzZlMDhiOTFkOThlMGFkYjc0MDg3YzZmN2U1ZGE5MGUyZmZmMThiNCByZWxlYXNlMzEtbWFpbnQKKzc0ODU4IGNkYWViMjUxZDQ4OGJlMzY0NTE0M2Q0NzZmZTkzMGEwMDMzNjkxZTAgcHkzaworNzQ4NTkgMTczYmVkMGUwNGM0ODk2NTJlNTcyZmE5ZTAzZWNkYmVkNGI4MjY0NyByZWxlYXNlMzEtbWFpbnQKKzc0ODYwIDc3Yjk2YTU0MjRhMmM2NTJmNzVkZmEzZTM3YjY3NDczYjg4MmQzMTggbGVnYWN5LXRydW5rCis3NDg2MSA3YzRkNTI4NjAxMzFiNmRhOWNiZTQ5ZTFiMWRiOThmZjcxYWMwYmNlIGxlZ2FjeS10cnVuaworNzQ4NjIgOWExMDk3MTQwM2E1YWQwZDQ5YzE3ZmM3MTEzZjI0OTVmYzhjN2NmOCBsZWdhY3ktdHJ1bmsKKzc0ODYzIDdmNzI2MTE1YmEyOWEwZTYwNDYxNDgzMDI4YTI1NWYxMmEwNjhlMDggbGVnYWN5LXRydW5rCis3NDg2NCAxNzJiMmQzNmRhNzdjZDI4MzEzNjgyZTZmMmZkOWQxY2U4NGRmY2RhIHB5M2sKKzc0ODY1IDQyZjg4MDgzZGRiZGYzZTE4ZjUxYjMwNGYwMWJlOTM2OGYzODhmNjkgbGVnYWN5LXRydW5rCis3NDg2OCA1ZmVkNWU4ZWE5Y2MzMzMyNjdmYzdkNjg4MmJiNDc1ZWQ5NDlmMmE4IGxlZ2FjeS10cnVuaworNzQ4NjkgMzhhNTJiNjcyNDI5MjYwMzBkMGJkNDkxNDM4NzkwNGQ3NTA3NTVjMiBsZWdhY3ktdHJ1bmsKKzc0ODcwIDBmZjM3ZTIwMDI5MmM5MzZiZjY5NDRhNGFjOWJjZDA1ZDk0ZjNkNTggcmVsZWFzZTI2LW1haW50Cis3NDg3MSAxMmYxNDVkNzU1MTNlYjk4NmFhNzhmMDQ5MzYxMzdiZTc2NjlkODM3IHB5M2sKKzc0ODcyIGE5ODA5ZjNiMTY0ZmZhNmYwZDhlZjMwZmNhNjE4ZDIwMjgzYzI1YjEgcmVsZWFzZTMxLW1haW50Cis3NDg3MyA4YzNiMmRkYTQ3MDM2MGU1MjI1MWQzNjVmZTE3NGI2MzBlOGI5YmY0IGxlZ2FjeS10cnVuaworNzQ4NzQgZGM5MjJhODljY2YxMGMzOGZkNmRhNWEwZGJhZDdiNDAwMjk0ZWIzZSByZWxlYXNlMjYtbWFpbnQKKzc0ODc1IDBhNTgwZGM3YWYxMzc2NDA0NTUzZmY3NTNmMTYwYTVhNzc2NTE1NWUgcHkzaworNzQ4NzYgNmY0Yjg1MmI4MmYxNzUwN2M1OWFlYWFkZDI5OTdiNTZjZTQ3OWY4NSBsZWdhY3ktdHJ1bmsKKzc0ODc3IDlhY2I4ZWI3MmE5MmZhNWY1MzE4N2I2MmY5YTMyOTlhZGViMWUwYjIgbGVnYWN5LXRydW5rCis3NDg3OCBjYTkyMGMxNmIyMDU3ZThlNDU1MjExMTAyMzk2YjI5M2RkYWQyMmUwIGxlZ2FjeS10cnVuaworNzQ4NzkgZTBkNWMwYzM4MDhjZTE4ZDBmOTEyZGExM2VkMDdmNzIxNGZkZTczMCBweTNrCis3NDg4MCBhMjdhYmQzNTNlZDFjYTEzNGM4OTczY2M2ZTRkNGFjMGRhOTViMGNlIHJlbGVhc2UzMS1tYWludAorNzQ4ODEgYjFiNjE1YTkxMWYwMzFmMGJhNGQzY2Q5OTk4YjM2OGZmNjE4YmQ1NiBweTNrCis3NDg4MiBlNDk3NGU5NWZhNjQ5ZWVmNjg1ZmUyODAyNWNkYWZlNzhmOTE4M2E3IHB5M2sKKzc0ODgzIGIzOThhZmVmZDM2OTY3YTJiZmIxZjhjZTkxYjliZTgwMWQ2NjdjN2QgcHkzaworNzQ4ODQgYmEyMjhlNWMzZGFmNzk2Yzg2Nzg4MDlkNjFmYmUxYzM2NmU2ZjZiZSBweTNrCis3NDg4NSA5Y2VlYjYwMmRkYTNiOWI2ZTI2NDY5OTZhZDZjNzEyMWRlYTAxYTEyIHB5M2sKKzc0ODg2IDBlNDRkY2MwYjIwZDM5ZDcxOTNjNjUzYWYyMDg0MTVjZTEzN2RmNmMgbGVnYWN5LXRydW5rCis3NDg4NyAyZWExZmMyNjg1NDI1MmM3Y2QyMjNhOTdhMzhhMzFkNjY0MGE5ZWVkIHJlbGVhc2UyNi1tYWludAorNzQ4ODggZDNlZTczOGZkY2RiMTdjZmMzNmQ0YjI5NGVjOWNiZDEwODVmODBkYiBweTNrCis3NDg4OSAwNzJlM2UzMGI1MGNjMjFkYjIyY2YzNTkyNzdlNzNmMTgyNzI5ZTI1IHB5M2sKKzc0ODkwIDU0N2Q0MWIxZGU5NzM4MWJlNTMxMmZmMmNjNjJiNmFlYmZkYzljOTIgcmVsZWFzZTMxLW1haW50Cis3NDg5MSAxYzU0NmNmM2ViMTBkNmQ2ZWNjNDMyMTNkNmE0ZDgyNDZhNzIxMjIzIHB5M2sKKzc0ODkyIGQ2MDFmZTM3ZmM1NGNlMDE4ZjM3NmI0M2JjODdhMmY2MGI0MDhmMmMgcHkzaworNzQ4OTMgZmQyZjRhZTkzZDAxMjdlZGZjNTkzNjk5ODgwMTdmMWRkNzU3MzIxZiBweTNrCis3NDg5NCBiNjNjNzE4MDYxOGUzNDhhNDI3Y2RjNTIyZWE5OWE5NDZhZTczZWNkIHB5M2sKKzc0ODk1IDk5M2VlMzllOGJjZmVmYTlkYTVlMDk1YzdkYmRjNmI1ODRhZDI0ZWEgcHkzaworNzQ4OTYgYmFlOWY0ODIzYjhlMTFiNTQ2NDg0NzcyZTc1ZWJlM2RmNTNjOWVmOSBsZWdhY3ktdHJ1bmsKKzc0ODk3IDVhMWU4Nzk4MzJmZTMzYzc3MTY1NmFiNjEwMjlmYjAwZmUwMDQzMGYgcHkzaworNzQ4OTggOTgxNzkxNWViZGViYzUxYTgxOWM5NGI1NzAwZGM0MTU3NDJiOTZjYSByZWxlYXNlMzEtbWFpbnQKKzc0ODk5IGRlMzM1N2MyNjBiNjA3Y2FjZjM2ZTc5NTVlNTFmMDM1YWFlYjRkNGYgcmVsZWFzZTMxLW1haW50Cis3NDkwMCBkYTA0YjE1MmE2ZmUzZjY2ZmI5NDUzOGNmOGY1NDRhYjliN2NiZjZmIHB5M2sKKzc0OTAxIGIzMjZlN2Q2NjQxMzRhODNlZGZhZTBkN2M2ZDQ0ZTQwMjJkZTVhNTggbGVnYWN5LXRydW5rCis3NDkwMiA3YTVjMTE5Yjg2NjkwMmY2MjA2MmNmYTMyMzA2ZjZjOWZmZGUyN2Q3IHJlbGVhc2UyNi1tYWludAorNzQ5MDMgODRmMWM5NWI0ZTk3NDhmOWE1NDk5M2NhNjY5ZWYyZWU1N2Q4OGEyMyBsZWdhY3ktdHJ1bmsKKzc0OTA0IDZmY2EzNTM1MmY3Yjc4MTY0YmYyYjMzOGMyMTYxZDVmNTZjOGU2OWMgcmVsZWFzZTI2LW1haW50Cis3NDkwNSA0ZjE1YTEzMWFiMDcxOTVjY2NjODM1Mzg3M2NkNjk3YzYyYzBhMDAwIHB5M2sKKzc0OTA2IGM3NmY4NDM4MzhhNWZhMDU3NWRkZmI0ODE3OWM4YjQyZDNiM2E2MjggcHkzaworNzQ5MDcgMzI4OWZmYzA1Y2M3ODQ0OTQ1MTNlMmVlN2U2MGFmYTA1MjE1OTNhMyBweTNrCis3NDkwOCBiMzVkZDFiNjI0OGUzOTM5Njg1OWI5MDQwOTk0YWIyZDI1NGViYjBhIGxlZ2FjeS10cnVuaworNzQ5MDkgYTQ0MmMyNTA0YTU3ZTFiNWI3MTdiNzg4NTYxZjBiMjY5ZjM5ZWZhYSByZWxlYXNlMzEtbWFpbnQKKzc0OTEwIDM3ZTk2MjQ2YmRhMWM2NDkyNjkyMWJlMjMyNTIyNTA2ZjJiNmM0ODcgcHkzaworNzQ5MTEgZGE4MTg2MTY4NGU4OTNhNjQ0ZjczYzcxNTA5MmQ4MDgwNzhmOTJjMyByZWxlYXNlMzEtbWFpbnQKKzc0OTEyIDFkMmU2YzQ0MWE1M2YwMTVmODY5MTJiM2QyMDRkNDk2MGJhOGY1YTEgbGVnYWN5LXRydW5rCis3NDkxMyA3N2UwN2FmNmY4N2EzYzg0NTU4MTQyODQwMDRiNTVjYjJiYzM4N2Y1IGxlZ2FjeS10cnVuaworNzQ5MTQgZDRlMDM2YzZjNjBkNGE0MDBkZjY4NjJiZTBiMWZmZTJlNGUzMzFjNiBweTNrCis3NDkxNSA4NWVmMWMwNGQ4ZGRmNWNlYThhYTk2Zjc3MGMxMjBkNTNmN2VkNzVjIHJlbGVhc2UyNi1tYWludAorNzQ5MTYgNTE3NDhkZmNiNDQ0YzcwMDQ0ZTU0YjkxMGY5Y2IzMTU4YjQ3MjZkMyByZWxlYXNlMzEtbWFpbnQKKzc0OTE3IDk5MzFlMTc3ZGE4MTM4ZWIwOWI4MjhiYjliNGRhOGRhNTAxYmU1ODQgbGVnYWN5LXRydW5rCis3NDkxOCAzNzUzOGI1NTBmNjg1YWYzODFjMzRhZTM2OTVmMGFiYjBhNmM0MDY0IHB5M2sKKzc0OTE5IGZkMTg3NzQ1MzA2MDYyNTI3MzdkMzk0YmM1N2IyNTBmYmExZGMxNmMgcmVsZWFzZTI2LW1haW50Cis3NDkyMCBkMWQzYTA3YTBlZDdmNDlmMGY2MTEzZTAyZTZmZjNkMDhjNDIwODExIHJlbGVhc2UzMS1tYWludAorNzQ5MjEgM2M4M2EzY2FjZDc3OTg1YmU4MzU1ZDNjYmVlYWZkZGRjMDAwMTVhZSBsZWdhY3ktdHJ1bmsKKzc0OTIyIDA0M2ZkZGE3MDZhMzc2ZmNmYzMyNTM4NTkyODMyOTIwOWQ4ZDQyMjIgcHkzaworNzQ5MjMgODIyYTI5Zjc2NjBiNTE3ZmVkNjdkYzA0YjVhMGQ4N2JlNjg0MzY3ZCByZWxlYXNlMzEtbWFpbnQKKzc0OTI0IGI0Y2E1OTQ4NDkxNDNkNjU2M2VjNzE1YjNkOTljNTRiMTY0ZmVjYTUgcmVsZWFzZTI2LW1haW50Cis3NDkyNSBmMjU1NWFkNWZlMDllYTAwMGM2MGFhYzI5ZGI1YjQzMjJjNmFhZTJlIGxlZ2FjeS10cnVuaworNzQ5MjYgMjIxMWFkM2U3YmJlZDRiOTM4NjhiODVkN2JhZmFmODQ1N2U3ZDcyYyByZWxlYXNlMjYtbWFpbnQKKzc0OTI3IGIwZTUxMDVmZjk3YmI5Y2M0ZjJhYjlhMjlmNmZmNTE0NGVhYTlkODYgcHkzaworNzQ5MjggN2IyYmQzOWIyMWNkMWM2YmFkNTlkMjA0YjE2OWZiZGIyYTkyYjY0YSByZWxlYXNlMzEtbWFpbnQKKzc0OTI5IGY2NGMwZWI4Y2M2MjA5ZjRjMjRiZmY1YzMzZmJhZDIwZDc4MzY5NDIgbGVnYWN5LXRydW5rCis3NDkzMCBmZGEyOTJmMzE2MzI0MjJjNjVkZGMxZWU3MjU0MjMzNGY2NDNiZjQzIGxlZ2FjeS10cnVuaworNzQ5MzEgZjEyY2U3YWRiZDMwMDA5MGQ0MmI4YTMyMTNmYzY0ZWYwNDg1NjdhYiBweTNrCis3NDkzMiA2MTZhNjY5YzkwMjNmZTc0NzNhNzViMDk3OTNjMjc1OWU2YTlkNGI5IHB5M2sKKzc0OTMzIGI0YmI0YmI4Njg5Mjg5OTY1M2M5YzE2Mjc1MDIyMWQ4Yzk4N2E5ZjggbGVnYWN5LXRydW5rCis3NDkzNCBkZTY1OTA4OTczZDAyNDM5MWVkOWMxZWRjZWZmOWQ0MzczMmI2YjcxIHB5M2sKKzc0OTM1IDFiN2JkYWUwMjE3OTQ3MGVlYjIyYjE4NzQxZWY2NTM3ZjJhZDMzN2QgcHkzaworNzQ5MzYgY2MzMjliYjE5ZGE1ZjFhOWZjMzg1MzYyOGNmY2ExZTQ2M2VhZWExNSBsZWdhY3ktdHJ1bmsKKzc0OTM3IDI0M2ZhZjBmNWY1ZTQzMTAzNWViNDMyNGQ0ZWI2ZDIwYmM4MmNjNjUgbGVnYWN5LXRydW5rCis3NDkzOCBhMmIyY2MwZmE3YWQ0ZDBmNDk0YTQwMGVmZDFmMWJlNjg3NDRhMjA0IHB5M2sKKzc0OTM5IGNmNzVjMGQyZTNjNzZiMTJkODkzYzY5NGY5YmYxYTE1MDlhYmFjZDEgcHkzaworNzQ5NDAgYzViMTUwMDE3MmY4OWNmNzU1YTIxMzNhMjIzODA2NDAwNTEzZjAxYyBweTNrCis3NDk0MSA4MzE1MjVmMTVjNTcwMjkxMjJhMTJhYTNjZDY0Y2IxZDI0YmZkOTVhIHB5M2sKKzc0OTQyIDA3NTIxMzlmM2RhMWQzYWNlNzI3ZjEwYzkxOWRmNGYxZDcwMDQwMmIgcHkzaworNzQ5NDMgNmEyNzhlNGQ5ZjYxOGRiMmQyYmI1NzQ4ZWQ1NjUxMzMyNzA0MWNhZiBsZWdhY3ktdHJ1bmsKKzc0OTQ0IDMwY2M0ZjA3MzI5MmVlYTI2ZDFmMTMxNWZiMTE0MzYxNDFlZGI1YmMgcHkzaworNzQ5NDUgNThiYTg1YzBkNGIwYjBmZTlhMGY4MmE4MGM5ZjU4NmRjN2JiOWI1MCByZWxlYXNlMjYtbWFpbnQKKzc0OTQ2IDQ1MTQ1YWViNjMzMTBiMjMyMjNmM2RjMjI0NGU1YmNlYWI1ZWY2MjkgbGVnYWN5LXRydW5rCis3NDk0NyAwMDA3MDI0ZTllMjM0OGU3ODM1N2Y5ZjhlNTY3OGU0NmU1NmMxYTNlIHJlbGVhc2UyNi1tYWludAorNzQ5NDggNGM3MzQ5YjlkMTU5YTdhZGEzNTAxZWJjMTkxYTg4MWQ2ZGM0YTNlZSBsZWdhY3ktdHJ1bmsKKzc0OTQ5IDFlYjQyNDI1NzM0NWNkYjc2YmViYzE0OTM2ZDM0MTc3ZDFkOTVmNmMgcHkzaworNzQ5NTAgMWIxODM2Y2ZjZjI2MmE5MDgxODlhZDRjNTI5ZWE2YTQ2NzE3YmM5NiByZWxlYXNlMjYtbWFpbnQKKzc0OTUxIDgwYTM4Zjg5M2I3ZjNmMDhlNjQ5MjczOThkZjVlMmRlZDQ5YTdmYmIgcmVsZWFzZTMxLW1haW50Cis3NDk1MiBhMDlkYTU2ZTQ3OTY5ZWZhZTEzYmFkZTk4M2VkMDU5ODQxYmY0ZTM5IGxlZ2FjeS10cnVuaworNzQ5NTMgMzliNDYzMDc5N2ZhY2U3ZjRjMDRhYWE3OGQ3MGRiYWMyM2NhYWZiNSBsZWdhY3ktdHJ1bmsKKzc0OTU0IDY3OTFjMmIxYTdkYzk4OGRmMTYwYTA4MjZmOGNiM2M2MDQ2ZDQzZDMgbGVnYWN5LXRydW5rCis3NDk1NSA0MTZiNjQ1NTA3ZDBhODQzOTg5ZGZhNjUyYmJhZDhkYmExZGQxNjI3IGxlZ2FjeS10cnVuaworNzQ5NTYgOGNjYzIzYWZlYTNkMTg5Njk5OGYyYzIzZDkyYTU4MDYyZDFiNGQwYSBweTNrCis3NDk1NyBlYTY5N2NkZTY4ODIzNGY3YjJiYzVlMGZkNTIwZDcwMmE3MmVlMDNkIHJlbGVhc2UzMS1tYWludAorNzQ5NTggZjU0ZDMxZTVmZDRkNmYwMGJkOTU5YzFhNGRjYjdiZjY0ZWYyNDI2NCBsZWdhY3ktdHJ1bmsKKzc0OTU5IDJjNWE3NzUwYjcxZDgyMWQwOTAxNGUzOWNmZjIyYWVjMDYxMWU3ZmYgcmVsZWFzZTI2LW1haW50Cis3NDk2MCBiZDg0ZjQyYzM2MzM5NThiOWQ1MmNhMTNhMzJmNTNjZWFmOGExNWVlIHB5M2sKKzc0OTYxIDUyMmJlMzZiMjljZDIxNDgxYjhkYjI1NjVjNjA0YzlmNWI5NDVkZTMgcmVsZWFzZTMxLW1haW50Cis3NDk2MiAyZGRkZGM2NDFhOTg3M2YwMmZhOWY4M2YxZTZmYTIyZjdlZDJlMGNiIGxlZ2FjeS10cnVuaworNzQ5NjMgMjcxN2Q4NWFiYTJlNmJjM2U3MzA5MTU2ZWEzMzMxMGM2YTBkMTU4MyByZWxlYXNlMjYtbWFpbnQKKzc0OTY0IGU1NjFmMTBjN2IzMTE5MjhiZTc2MDkxYmFlMjZlMDNjYmNlNWMyNTcgbGVnYWN5LXRydW5rCis3NDk2NSBkMTMxOTU2NTMzYmYxY2Q5Y2E4ODM3ZTE2ZjFmZTU0MWI0ZTEzMmU1IHJlbGVhc2UyNi1tYWludAorNzQ5NjYgNjllZTE1MDFiMTAyNjljM2Y3ZWQzMWEwMzkyY2IxODM5YTdhZmY4NSBsZWdhY3ktdHJ1bmsKKzc0OTY3IDQzNmNhNzc1ZjI2Y2FhODg0OWU0ZjliZGY3YjkyMDMzYTcxYWZkOGIgcmVsZWFzZTI2LW1haW50Cis3NDk2OCAyMjU0OGM3ZWFmMzc1YmQ3NmUzYzcwNWYxMGEwZDNlMTRjOWVkOTgwIHB5M2sKKzc0OTY5IGIzZDI1ZTZmNjZmMTJkZTU2NDk3NDU2YzVjYTIzYmFkNDMxOWM5YmYgcmVsZWFzZTMxLW1haW50Cis3NDk3MCBiMGEyZmJhMDA0NTg2MTE5MDhhOGRiYmM2YTgyZDMxZjBkYjcyMTJhIGxlZ2FjeS10cnVuaworNzQ5NzEgMWM1MGRjMjEzMzEyZGM2NDU3MzM3OTM1ZDI3OTVkOWZkZjNiNmFkYyBweTNrCis3NDk3MiBkOGMyNDhhNTkzMTA1MGExZjk3NWMzZmY5Yjc2NDk4MmY3NDMwODlkIGxlZ2FjeS10cnVuaworNzQ5NzMgOTgxMDRhYjg1OWZhOTY3YjVhYjRiNWFjOWRlNGQ5MGI4MWE5OGI1ZCByZWxlYXNlMjYtbWFpbnQKKzc0OTc0IDgwNmM2MzYzODVmY2NkYmFiYjU4Njg4MTRkMWFkMjI4NGJjM2UxNzQgcHkzaworNzQ5NzUgN2UzOTg1ZmFmOWE4YWNmZTAyN2IwZDhiODkzZWFhNzgwYTM5MWI3ZiByZWxlYXNlMzEtbWFpbnQKKzc0OTc2IDdhM2ZkZDkzYjU2NjRkYTI1MTRmZmIzYTQ5NWM1ZDEwMWQ5ZDIyYjMgcmVsZWFzZTI2LW1haW50Cis3NDk3NyAxZGI2ZWU5ZDdiZTdhMWQ2YzUzM2FhMDdiYTI1YjA5ODVjNmU3ZjVjIHJlbGVhc2UyNi1tYWludAorNzQ5NzggZGI5N2MwNDJjYzFlZDViOTVkYTg4NDRhMzk1MDdlNGNjZTEzMjhkYiBsZWdhY3ktdHJ1bmsKKzc0OTc5IGNiMzQyOGIxZjRhZjI5YjI1YjQ4ZDI5NzY1NWFlMmVhODQwYmNiN2EgcHkzaworNzQ5ODAgMzM5M2ZmYzBkZTQ0ZTZhM2NiY2JiZDJjYTczZDc5NGI1ZmEzZjVjNiByZWxlYXNlMzEtbWFpbnQKKzc0OTgxIDkyMzQzMDVkMzc0MDM4N2E3MzI2ZDM0OWE0N2UzNTYxMDg5MDcyMjkgbGVnYWN5LXRydW5rCis3NDk4MiA2ZDhiNTRiMjFiODc3ZWZmY2NiMmIxNTU0Mjk0ODRiMWMzOTJkN2U1IHJlbGVhc2UyNi1tYWludAorNzQ5ODMgMjczYzIzNDgwMGMxODQxZDMwYmJlN2I2NDg1MWI3ZDBiN2I4YzEwYSByZWxlYXNlMjYtbWFpbnQKKzc0OTg0IGNjM2Q4YWZmNDU5NTYwY2E0NGY4ODU1MzFlM2U3NWEyMzdkZTBhNjMgbGVnYWN5LXRydW5rCis3NDk4NSBjNTk0OWUxMmM2OTI5ZWQ4ZGI2MWI0ZjUwYWVkZDZlYzQ3ZTJjOGQ0IHJlbGVhc2UyNi1tYWludAorNzQ5ODYgOWM5MTY1YmQyOTNhZTI0OTg2NjFiYzcwNTY5ZmNhMGEyNTYxOTk3ZCBweTNrCis3NDk4NyBjNjNmODkyM2UyNGY2OGI2ZWYzYmVhMmQ1ZTU4MDIxMTdmNGJmOTkyIHJlbGVhc2UzMS1tYWludAorNzQ5ODggMmRmOGJlZGVjNmQzMzM4YzM3ZGY3NjMwYzU1Yjk4N2ZlM2VmM2Q5YyBsZWdhY3ktdHJ1bmsKKzc0OTg5IGE5Y2UxNTg5ZDY5NGQyOTg2NTU5YjViZGRlOTc1NzUwODljZjZiNGIgcmVsZWFzZTI2LW1haW50Cis3NDk5MCA3YzQzNDY4N2I0MjkzOTZlMTdhYTVlMjExZGMyYmI5Mzc2ZDE2MmIzIHB5M2sKKzc0OTkxIDQwMDhhMDEzN2RlN2IwZDY4MDIxYWFlODg0NjdiZTgxZTcyNWVhMDkgcmVsZWFzZTMxLW1haW50Cis3NDk5MiBkNjI3YzU4OTJmZDU0OGVmNDYzYmY1MTAzMWEzYzc1ZTEyNTMwY2FmIGxlZ2FjeS10cnVuaworNzQ5OTMgNWM4NzAwY2M5ZDE2ZWQyNmI5NGM0ZmFlNWJmMTNkOTcwMGU0NjJhNCByZWxlYXNlMjYtbWFpbnQKKzc0OTk0IDdhNzY0MmFiMTFiMzkyN2NkMjJhNDdlZjllMzIyZjkzYWNjOWY3NGEgbGVnYWN5LXRydW5rCis3NDk5NSA2MjdiMzQ5ZGYwZThlMjc5MTdlYzRmZTdlMTM0NTA5N2MwNjI0MWYzIHJlbGVhc2UyNi1tYWludAorNzQ5OTYgMDE4ZjJlYWUyNTI2ZmUyNGRkZDQ5ZDNkNDBmMWI2Zjg3YjYxZWIxNCBweTNrCis3NDk5NyBmOGU2OTZlNGNmZjFkODA0YjRjZTZhMDY1Mjc5N2NjMzBkZWRiYjc1IGxlZ2FjeS10cnVuaworNzQ5OTggYWY3YTEyMDBmYjNmMzVmMDFkNDIwZmFmNzViM2Y1YjM2ZTUwMjEzZCByZWxlYXNlMjYtbWFpbnQKKzc0OTk5IDRiODNlYTZmYzViZGUyMTYyNzMzZTE1OTc1N2QwNDRjY2RhNzJlMWIgcHkzaworNzUwMDAgM2EzZTE0NWQ1NTJjNWM5YjAyOTNhMmE3ZjFlYTM4MzA3ZGRmMzA1NSByZWxlYXNlMzEtbWFpbnQKKzc1MDAxIDFmZmU2ZmIxOWExOGRkMDk4OWJhY2E4NTU3NWEyNTljNTQ1YWZjMzAgcmVsZWFzZTMxLW1haW50Cis3NTAwMiA3NDM1ZDU5MWEzMjU4M2FlMTI2MWFiOWRlZGUxYTQ0ZDUyM2Y4MWYyIHJlbGVhc2UzMS1tYWludAorNzUwMDMgYjc3N2UwZjBiNTdjYTIxMTkwOGQzNDM2MzA4MmU3ZTQ1MzFkNTgyNCBsZWdhY3ktdHJ1bmsKKzc1MDA0IDVmNjNiNTE0MjcyNTIwZmI5NzAwYzYyZmU1YjI4NjE5OGZjMjUwNmUgcmVsZWFzZTI2LW1haW50Cis3NTAwNSBiNzM0ZDZiNTE4NTI5NGM1Yzg0MzBlMmJlMjlhZGUzYjVkNWQ5OTUzIHB5M2sKKzc1MDA2IDM1N2M3NWQ1OWNlOTk0YmQ2NjQ0ODBmMDMxNDdjNjY1NTgyMTE3NjYgcmVsZWFzZTMxLW1haW50Cis3NTAwNyBmNzNjZGFlMTk3YzRkMWUyYTA4YTRiMzMzNWJhY2VhYTY0NDIzNmIzIGxlZ2FjeS10cnVuaworNzUwMDggNzhlMDBlYjQ1ZGJiNDBkOGFmNGVhOGVlZDkwZDMzNmRkODM1ZTlkOSByZWxlYXNlMjYtbWFpbnQKKzc1MDA5IDFmNWY3ODgxOGM1MWU4MzRkMjhiZTA0ODdjOWFhZjMwZjAyNDExNjMgcHkzaworNzUwMTAgODJkNzk3ZmY5YWEzYzM4YmY3ZjI5NjhhMzliNjFjZjVhMTJmMGFiNSByZWxlYXNlMzEtbWFpbnQKKzc1MDExIDRjZTRkYTg0N2Q5M2YwNTAzZDI5MDRkMjM3Njk1NWQxN2Y0MzZhN2QgbGVnYWN5LXRydW5rCis3NTAxMiBjMjM5MmE3OTcxNWQ2MWQ2YTIxMGFjNjJhOTRjZGY5YzkxYWMzMGU3IHB5M2sKKzc1MDEzIDU3NGE1MzJmYjQwYjE4NmU4ZTdiYTNmYTU3NjZmYmY1OWI4MWIyYmIgcHkzaworNzUwMTQgYWZkYTA4Nzc2M2FmMWVkZWQ5ZTEyNzg0MGMxNzQ0NTgyOTQ4NTIxMCByZWxlYXNlMzEtbWFpbnQKKzc1MDE1IDc3MTkxZjNhMWQyN2RkYzcwMTQ5NTliN2MyYzE3N2MwYTcxN2JhNWQgbGVnYWN5LXRydW5rCis3NTAxNiA1YjhiMThiMDBkNGNmZjA1ZWNmM2UwODQyMWM0ZjMzODUwNmE1ZmM4IHB5M2sKKzc1MDE3IDU1NTdiYzhjYmY2NWY5OTRjZTYxNTIzOGM5MGQ1NGFjN2U2ZjM2YzUgbGVnYWN5LXRydW5rCis3NTAxOCAwNmNlMjdhODJlOTllN2ZlM2VkODRjNDU2MTMxMmQ0ZTZjNTFiMTkzIHJlbGVhc2UyNi1tYWludAorNzUwMTkgY2FkYmZjNzNhM2IwZDY2MmYxYTY0MGRkMTI5YzgyM2FiYmNiMjM3NiBsZWdhY3ktdHJ1bmsKKzc1MDIwIDljNmE5ODNjZjZhOTNlNWNlN2ZmZTlhNTNmZjFlNDVhOGVjMzJjZmIgbGVnYWN5LXRydW5rCis3NTAyMSAyYWU5M2VhYzQyMGUyYWI5YTljNmNmOTRjYzljNmI1ZmM4YzY3YmUyIHB5M2sKKzc1MDIyIDRjYTExNWYzM2I2YjhmOTY4MzNhZGMzOTlhMTRiOWUwY2Q0MzIyNzIgbGVnYWN5LXRydW5rCis3NTAyMyA0YWE3ZGU2NjEzN2ZjYzNmMzZkYjFkMDVlODc3ZmU0ODUwZmYwMmZhIHJlbGVhc2UyNi1tYWludAorNzUwMjQgMzIyOGJhZmJlNmM5Mzg2NThiOWU4NGIzNTQ0NjAwYWRkZTcyYWEzOSBsZWdhY3ktdHJ1bmsKKzc1MDI1IDJkMzRhNzRmMDAxNzIwNmZlOGQ3MGNhNzA3ZTNmMzUxMjMyZThhMzMgcmVsZWFzZTI2LW1haW50Cis3NTAyNiBjYWUwNTNjOWY5Y2FjZTRiZmVhOGVjNTJkOTJkYzg4YzQyNzE1NjIxIHB5M2sKKzc1MDI3IGIxOWE4YWRkMTEyZjg4MmQ1Y2YwOTMyOTMzZGQxNWYwM2Y0NTdhZTAgcmVsZWFzZTMxLW1haW50Cis3NTAyOCBkNTk5YTNmMmU3MmQ2ZTBjNDNlNTdhM2E4ZGJkMzYyNzdhYjE3MDg2IHB5M2sKKzc1MDI5IDFkMGQ2Zjc0Mzc4YzZiNTJjN2JhNzQ1Mzc3ODIwMTFmZDY2ZDMyMmUgcmVsZWFzZTMxLW1haW50Cis3NTAzMCA2MDBlZDJkZDc2NzI4OTE5NzdkZDg0Yjk5NDIwNWExYWU0NTE0ODdhIHB5M2sKKzc1MDMxIDljYWM4YmE2ZjRhOWRjNTllY2U4ZjJhZTJiZjFmMzAzZTIyZjc0ZjIgcmVsZWFzZTMxLW1haW50Cis3NTAzMiBjMjRmMDAwMTgyZjQ1NTVjZDU5ZWI4NmE4MDE1OWY2ZmZmY2Y0M2Q0IGxlZ2FjeS10cnVuaworNzUwMzMgNjg4OTlkYzExN2ViMzVmZDM5NmJmYjRiMGQwN2IzZGI2ZTYwYjY2MyByZWxlYXNlMjYtbWFpbnQKKzc1MDM4IDU4NGRiMDNlNTI0ODA3YTRlNzllNTAzYjliMzNlZjM2YWM5NjBiMzkgcmVsZWFzZTI2LW1haW50Cis3NTAzOSBiNGFiNDllMjgzMDUxMDNjOTI1MWRmNDNjMzI2Njk2OWEzZDEyNWEzIGxlZ2FjeS10cnVuaworNzUwNDAgOWRhZjg4NDBhNDczZTA4ZTU0NzA0NTJhNzgwNGFkYTc1YTQzYmEwZCByZWxlYXNlMjYtbWFpbnQKKzc1MDQxIDUzYTZiMzllZTRiNjZkOTQzYzM3NWRjMjU4MjJkYjc1MTMyNjRhNTcgcHkzaworNzUwNDIgM2ZkN2YxMjI1NTZhOTYxYTVhOWRmNWM3ZTE3MWJjYmI2NzlmODJhYyByZWxlYXNlMzEtbWFpbnQKKzc1MDQzIDdmN2NmYWEzODMyZTNlMjVhM2RhZmQ4ZTA2YzA3ZGNjNjU3OTc4YmQgcmVsZWFzZTMxLW1haW50Cis3NTA0NSAxZDBmNDE2ZDRiYTY0MmYzNWU4YjAxMjA3MTI2YjQwZmNiZTgyNDExIHB5M2sKKzc1MDQ2IDg5NjY3MGQ0MWM5Zjc0YjMxYTgyMjc0MjE5MzA3MTFiZDQ5ZWUxMGYgcmVsZWFzZTMxLW1haW50Cis3NTA0NyBmOWE3MGYyMjU2MjUwZTcxYWEzMGJhMzMzZGY3NmY4YzMwMTBjMTliIGxlZ2FjeS10cnVuaworNzUwNDggNzg1ZWNjYzAyNWFjNmU5ZmRkMDczN2QxMzcwZjNjMmEwNmY3MDQ3NiByZWxlYXNlMjYtbWFpbnQKKzc1MDQ5IDY1NmQxZDQwZmVjYmZjNTU5YzVmN2RhODEwZDhkOGUzNGQwOTEyNzEgcHkzaworNzUwNTAgNTkyYmI4MjU5YzU0Mjc4MDQ1YTNhYzE1OGU3MmQ1OWI1N2JkOTNlYSByZWxlYXNlMzEtbWFpbnQKKzc1MDUxIDBmNGU5NWZmODU5ZDJjYWM2MDA4NGQzNTVkNzMwZDZiMWI2ZTY1NzkgcHkzaworNzUwNTIgMjhlMmNlMDBmNTQ1YmY0ZTU3YTdhZWFhYzQ0ZDNjZGM4OTU5YjRmYyByZWxlYXNlMzEtbWFpbnQKKzc1MDU0IDNkZWY5NTJiNTE1YzJiNDU4ZDk0ZDIwNGZmOGFlY2Y1MTgyZTYwNTcgbGVnYWN5LXRydW5rCis3NTA1NSAzNTY3ZTg3MTU3ZDgzNjMxYTE2M2E5MWFiMzQ4M2M3NzRmODNhMWExIGxlZ2FjeS10cnVuaworNzUwNTYgZTA3M2ZjODhkYzg5NDdmMjEwMTZlZDBkNTgxOWM2MTE1MDdjZWMzOCByZWxlYXNlMjYtbWFpbnQKKzc1MDU3IDhlYTkyMWM3ZDEwZmExMjM3MGY1OTk3MTc1NGY1MmM5YTgyMjM2YmQgcHkzaworNzUwNTggYTA3NTY4YzdhODJhY2E1MjdhZjBhYjk2M2FhMTY5ZDAxMWIzOGUyYSByZWxlYXNlMzEtbWFpbnQKKzc1MDU5IDUwYjE4YWU4Y2VjNDQ5MjdlNGFlYTk5M2RkZDY0YjBhMTEwYzYxMjcgcHkzaworNzUwNjAgMTQ5YmVkMjE3MzVlMDc0YWUzMWNmYWNmN2VkYTlmYmMzNDE1OWRmYSByZWxlYXNlMzEtbWFpbnQKKzc1MDYxIDFiOWYxNGU1ZTllNTA3ZDc4ZTZiNWQ4MDhiNWU1YTE0NjA1NjNmMzAgcHkzaworNzUwNjIgOGNjODJkYzZiYmIwMjNmMWVjNzg0YjJjMDE0NzIyYWVmNWFmYTg5OCBweTNrCis3NTA2MyAyNjQ0ZjU0ZTM2NzYzZTM4NjY1ZDE5NGEyM2Y3YzMxY2Q5MDY0MzNiIHJlbGVhc2UzMS1tYWludAorNzUwNjQgYmE4NDFiYTAwZDA2MjIyZDA5YmVkZWNhMTc2YzhjMzM5ZTI2ZGY4NCBweTNrCis3NTA2NSA3ODFlZjk1Y2I3ODE4NzZjZmUxNGJlZDVmN2E5NTY1NmZiYmE3Y2EwIHJlbGVhc2UzMS1tYWludAorNzUwNjYgMmJmYWRkYjE5YzNhMWM2NWJiYWZkZDYwZGVlMWZmN2NhNTI5ODZhYiBsZWdhY3ktdHJ1bmsKKzc1MDY3IDAwYTVjZjM3NDMxNDYyNDAxYTFkNzYyN2RiNGMzZTZlNWNiMzE0ZWYgcHkzaworNzUwNjggODVlMWRkZGU1NjllMjYzYWM0ODVjMDFiY2I3ZmQyZTk1ODU1Y2I0ZiBsZWdhY3ktdHJ1bmsKKzc1MDY5IGU5OTAyNGVkZGZiNDVjNjMzYjliOWE5NTc4ZWVhM2Y5Zjc5ZjJhMDcgcmVsZWFzZTI2LW1haW50Cis3NTA3MCA4OWZhMjY0MTcxNWQzNDlhOTQyOTVjMjZiYTFhNzk3MDQ2YjJiYjQxIGxlZ2FjeS10cnVuaworNzUwNzEgYWNiZmM2OWI1NWYzZTBkNjQ4MDdjZWQ5YzY2ZGZiNDkwZDM5NmRkZCByZWxlYXNlMjYtbWFpbnQKKzc1MDcyIDA3NmIyMzMzNTI2MzdlMjJjOTUxYThhYmUwY2UyMGI3Njc3NDFkM2MgcHkzaworNzUwNzMgYmY5YmVmNzBmN2U4YWM2MjkxZDY4NWIxMDcwMDZiNTBhNDZjYjA0NSByZWxlYXNlMzEtbWFpbnQKKzc1MDc0IDIwMDZhMmY0ODEyZDc2N2Y2OWVmN2NmYzBmOTY4NTkwZWMxMzE5Y2EgcHkzaworNzUwNzUgZjNjNTk1MjE0YWJjNDAwNjFkODI3YzEyZDYzZGI1ZWY4OWI5N2FlYiByZWxlYXNlMzEtbWFpbnQKKzc1MDc2IDczOTE0MzZkOGE3NDg5ZDQ2MWIyNzhhYzk1ZWVmZDQzOTVjNzIyN2MgbGVnYWN5LXRydW5rCis3NTA3OCBkZDQ1NjQ5NjkwOWNkNGNjYWVmM2Q3ZjY2NjNjMDNlNTk1NzI1YWQxIHB5M2sKKzc1MDc5IGIwNTBlYTdiYWY0MGRlYmM5NGFjMWQ2MzMzYmJhYzExNDFhMTg4ZTAgcHkzaworNzUwODAgN2VlMTQwYjdlZjkzYmFmZGFjYThkZmI1MzQyNjY2NTE0MTYxMWFjOSBweTNrCis3NTA4MiAwNDUzZDE4YzYzYTRlODU4MTc2ZTkzMzkyM2RkNGY1MjhjNGFkYjQyIHB5M2sKKzc1MDgzIGQ2ODg5ZGEwNjUyYzdmODZiYjM4MzdhZTQzNDM5NDU1NzZjNDU0YWIgcmVsZWFzZTI2LW1haW50Cis3NTA4NCA1NDYxMDFhNjY3N2M4NGUzMzk3ZmI2YmE0MmFmNWVjNTg0YWNmMDEwIGxlZ2FjeS10cnVuaworNzUwODUgYjBlOTYxOWIzMWQ4ZDBhMWQ4NzI3MjYxYjRkNTM2YTNkOTA4ZDQzYSByZWxlYXNlMjYtbWFpbnQKKzc1MDg2IGZjYjMxYmUyMTM2ZDY0ZDA0NmE1NDg5MTczYjkyZjdiYWM2MWFlZTcgcHkzaworNzUwODcgYzBkOTU2MjVmMTdkZTc4ZmRkNzQ2NThjYzYyZDlhMDNhNDhiNWVhYiByZWxlYXNlMjYtbWFpbnQKKzc1MDg5IDFhNjVkZGQ3ZDllMTUxZGYxM2U3ZjI3YjdkMTE0YzkzNGU1OTMxNmYgcmVsZWFzZTI2LW1haW50Cis3NTA5MCBmM2ZhMzk2N2Y0NDY0MWY1ODlhMGRiNjE5Y2QzODk3NDRlZTA5NTBhIHB5M2sKKzc1MDkxIDNkZWMzYjc3Yjc4NzViYzM3MWFlYWY0ZDAxMDlkZjhmOTllYWM4MjUgbGVnYWN5LXRydW5rCis3NTA5MiBhMDQxMDg0YzFmZGQ2NjI3MGQ4NjBiZTFlMzIzODQzYzUwYzMzODU4IHJlbGVhc2UyNi1tYWludAorNzUwOTMgOTEwZGE1NDVlMTdiYzVmMWE0NDEwYmMyOWVhNzg5MmZjM2FhNzlmNyBweTNrCis3NTA5NCA3ZDAyNmY3MDY0NTBkOTgwM2Q0ZmJhZGMwMTBkZjU4MTYyYjJhYjBjIHJlbGVhc2UzMS1tYWludAorNzUwOTUgYmI4Yjc3MGNlODkwZTkxYmRmZjNlNTYyODcyNzhlZGFhZjZkNWJlYSBsZWdhY3ktdHJ1bmsKKzc1MDk4IGYwNGExZjIwMjNlY2I2ODgxYmYxNWQ2OTEzNjcwYjZlZGExODcwYTIgbGVnYWN5LXRydW5rCis3NTEwMCBkZWJiMjQ1ZWJiNDAxOGQxOGI4M2NkMDcxMDI0YjQ0NGRhMDQ5OThjIHB5M2sKKzc1MTAyIGM3NjY3NGMyZDc0ZDAzOWY5MTZmZDU3YjcwM2RkZWJkNDVmMmQ4YTIgbGVnYWN5LXRydW5rCis3NTEwMyBlOTUyMTg2MDUzMDBlZDA2NGRjOGU1OWQ3NGRkYmJjMWQzZjhkYTk2IGxlZ2FjeS10cnVuaworNzUxMDQgYWI0OWUwYWM4YzhmMTMxZTJjM2Q1Y2I3YWQ3ZDU5ZGI0MDcyNjFiYiBsZWdhY3ktdHJ1bmsKKzc1MTA1IGI2YWZmN2E1OTgwMzAwOWQ4ZmZjOWZiMGFjYjU2ZDk4NmRhZjllMTcgcHkzaworNzUxMDYgOTQ1NzI5NDljMWNhNGJkZTEzMzgxNzhhODliNzg1YzJjOGUxNWE5ZSBsZWdhY3ktdHJ1bmsKKzc1MTA3IGQxMDhmZTc3YzA2YzI1NmNlZWFlODkyY2FkMzJmMjJmMTllZjYwZmUgcHkzaworNzUxMDggNzAxM2UzNjUxMWE4Y2VkZWZiODFlYjllNWIyMTc4MTBlZGRhMTg1OCBweTNrCis3NTEwOSA4OTI3NzE4YzE5OGZmN2I3YTlmNjVjYTY3Njk1MTc1NDZlYTczOTQ3IHB5M2sKKzc1MTEwIDNhYjQ2NGZkNWUwMWE1ZGRkYTZlYmE2ODdiODhkYjUyYTg5NTg2MTAgbGVnYWN5LXRydW5rCis3NTExMSA1MjMxZWM1MTJjN2FmZDA0YTFlNTY2ODg4MzE4OWUzNjE5OTE5ZGE4IGxlZ2FjeS10cnVuaworNzUxMTIgY2Y5MGFhNTdiMjBiYzM2NzUyMTY5NThhMTFhZDNlNGI0ZDk0MTI4MyByZWxlYXNlMjYtbWFpbnQKKzc1MTEzIDk5ZTM2ZjQ3Y2EwZjc2NmY0MTEwMWIzYzBiYjJiYmFjZjY2MzJhYjIgcHkzaworNzUxMTQgNGVjOTE1YTViYjRlMGNmYzgwOGZmZmNhZmVhMDFkMTVmNzM2NWExYyByZWxlYXNlMzEtbWFpbnQKKzc1MTE1IDdmNjk1ZGQ2NGY5MDFkMzJmMmVkNWU1NjViODEyMjlhZWIwMWY5NDMgbGVnYWN5LXRydW5rCis3NTExNiA1NmI1MzAwMjliYWNmNmFiMjhlODVhMDBkMjAwNGNmYzM2YTQyYmE5IHJlbGVhc2UyNi1tYWludAorNzUxMTcgYjUwZGQxN2RmZTI2MmE0NzI1ZjRhZTNlNmU0NzBhMWZkNDAwZDM1ZSBsZWdhY3ktdHJ1bmsKKzc1MTE4IDUwYzMwYTgyODRmYmI0Y2U0Y2FiMjBiOTQ0MjQyMTM4N2VhMjE3N2UgcHkzaworNzUxMTkgNDdiODJmYmRjMmJiMWUwMGYwMzY5NjdlNTEyNGIwYTRiZGQ3OTRkOSBweTNrCis3NTEyMCAyMDEyNGViODgxMWJiZmM4NTZjMmE4Y2E2MmYyYTkzZTZmMjMzNzg3IHJlbGVhc2UyNi1tYWludAorNzUxMjEgYjk4NWJjZGI4YjkxNGIzY2FkNGU3NGZiNDAwOTUzMDlkMGFiZWJiOCByZWxlYXNlMzEtbWFpbnQKKzc1MTIyIDgyNTAyMTgyNTQ2MzkwZWFhYWJjZTkyNjdmM2EwNzJjN2EzOTQxNjMgcmVsZWFzZTI2LW1haW50Cis3NTEyMyBlZWJmM2Q1MWQzYTQ2ZjM1ODJlZDQ3YjMyYWY1ZDBlY2RiY2QwNzUxIGxlZ2FjeS10cnVuaworNzUxMjQgZWU5YTU1MWE4NzVlZDRmZTZkNWNlNGJiOWI0Y2JkZjViNGY2NGJhNCByZWxlYXNlMjYtbWFpbnQKKzc1MTI1IGM2M2UwNjM4N2I4ZmNkZjZhMWUyOGViNjQyNjRhNmM2NmUzODZmNGMgcHkzaworNzUxMjYgNzRiMThhMjY3Y2Q3NTJhZGEzYjNkYjRlZmRmZTJkNTJjZTdlNTFlNiByZWxlYXNlMzEtbWFpbnQKKzc1MTI3IGVkZDlhNWUzY2FmYjZmMDk2ZTFhMjY2MDNiZjcyNzBiYTI3NDg2N2YgcmVsZWFzZTI1LW1haW50Cis3NTEyOCAzNTc3YWY1MTJkZjU3MzAzM2Y1YjhlMThmZTgzNDdhZDI2MzZkZjE5IHB5M2sKKzc1MTI5IGYyNmI4MDJjMDAzZTVjMDAzNTQwNzQ2ZTg0MWI3ZmIyN2QwODhkNzggbGVnYWN5LXRydW5rCis3NTEzMCBhOGQwZTc2NGUzNGIxY2EyZWRjYjQ1ZmUxYzdhYWFjMzRjNzczMGY1IHJlbGVhc2UyNi1tYWludAorNzUxMzEgZTViODEyMTJmZGZkNzE3NjlmNDEyZmFmZDU0YmFhODgzYjM4YmU4NCBsZWdhY3ktdHJ1bmsKKzc1MTMyIDk4NjcwOWMyNDUzMTg5NDA3MDFkMWJmYTE3NjMxOGY1ZmQ5OGI2YmQgcmVsZWFzZTI2LW1haW50Cis3NTEzMyA0ZDc0NzM0NDk1Y2ZkNjY4N2QxMTkzNWI5MTIzNmQ4OWU3NTliMjgxIHB5M2sKKzc1MTM0IGUwZjIzNDExNmFiMTQ5ODM1NjkyOTRlZmNhZjNkMTNhMGRiMjUyODEgbGVnYWN5LXRydW5rCis3NTEzNSAyZTJjMTQyYmJlYWE5OWFjMTczYzhkODRjZDYxYmI1MWZiMWRkNmM2IHJlbGVhc2UyNi1tYWludAorNzUxMzYgMTg0Mzg4NmIyYjFkODYwYjA4Y2Y5NmJmOGUzNDYyYjg4NjU2MWRhNiByZWxlYXNlMjYtbWFpbnQKKzc1MTM3IDFmNzM2MWM3NDIzNGM1Y2NjMjQ0YmIwMTUyNjcyOTYwMDFjZWM5YjEgcHkzaworNzUxMzggZTcyYTczYWQ3ZTI5NGNiZWZmYTFmNWM1YjkwYTg4Njc5ZWVmNjJkMyByZWxlYXNlMjYtbWFpbnQKKzc1MTM5IDhlOWJkYzZhMTAwZmEwODZiZDQ2NmZiYTZmMmFjNjJjMzBiYjI5MmQgbGVnYWN5LXRydW5rCis3NTE0MCAxOWE0YTYyM2Q4YjcwNDRjMmIxYjllMjUxYjJjOGIwOGE0MjQyNGZjIHJlbGVhc2UzMS1tYWludAorNzUxNDEgOTFmOWRmNTM2N2MxYTVmMWM2MTQ2Y2Y4NGU5NmRiMzkxNzFmNWE3MCBsZWdhY3ktdHJ1bmsKKzc1MTQyIGExN2NkOWZjZGQ0NjllZDFmMzg1MDkyY2Q4MDgxNDZiZjFmMjA2MGIgcmVsZWFzZTMxLW1haW50Cis3NTE0MyAxZWEwM2Y4NmUwODEzZGQ4MGU1OWYwYTY3NTUyYjJmNWE4ZDExNTU3IGxlZ2FjeS10cnVuaworNzUxNDQgN2UxODU2MTY3YzRhODJlYzE3NTQwMjk4Y2M4MjU4M2U1OGU3NDAwMiByZWxlYXNlMjYtbWFpbnQKKzc1MTQ1IGJhMTk2NjJlYjIyMWI4M2U2MzgxOGVlNGIxM2ExNDJmMzMxNGQyODMgcHkzaworNzUxNDYgMDhlNTkwNzZkODZiMmNhZTBkZmUyN2NmNTU5MGZiOTNlODE2MGE1MCByZWxlYXNlMzEtbWFpbnQKKzc1MTQ3IGY5OWJjYTZhYjBkY2M4NWU3OGE0ZmMwOTU5M2M3Y2IzMjQxMWIzYWYgbGVnYWN5LXRydW5rCis3NTE0OCBkYWQ3NDUzZDBkMDg2MmJiNzMwMjU1Mzc4OGY4NWI0ZTFjMzEzNjM3IHJlbGVhc2UyNi1tYWludAorNzUxNDkgZGY1OGZmMmRlMDliYTIxODVjMjExOWYyNjRiNjM4ZTk3OWM3ZDI1MyBsZWdhY3ktdHJ1bmsKKzc1MTUwIDY3MTZjNWY4YzYwZDVjZTU0NjAzNGE1NGE4MzQzMjg1MzU4NTM5MDUgcmVsZWFzZTI2LW1haW50Cis3NTE1MSAxODczNTQyYzAwMDAwYzRiN2NlMmM3OTkyZDFmMmQ4N2Y4NjYyMzJhIHJlbGVhc2UyNi1tYWludAorNzUxNTIgMGVmZmRiMzljNDdiN2EwN2IxOTk3YTVkYmI1YmVlNjY3NjYxM2UzZiByZWxlYXNlMjYtbWFpbnQKKzc1MTU0IDdiY2FmMDY0ZTI0MDU2NzRkOGI1NmUwYjRlY2JmMTg2NTAyMjU5OTkgcmVsZWFzZTI2LW1haW50Cis3NTE1NSA1YWNhZTQ2YWY4NDNmYThjM2FkOTEyNzFhNDFiMGQwYmRlMzJkZGM3IHJlbGVhc2UyNi1tYWludAorNzUxNTYgZDkxMjA5ZDgyNTFkZTYwNTMwYzA2NmE1NmY0NDk3NDEyZWI0NTRmOCByZWxlYXNlMjYtbWFpbnQKKzc1MTU3IDVmMjQ1ZGE3MmFlYmI0ZDI3N2ZlYTQ0YjNiZTBiYzQzNTVlMDUyNjMgbGVnYWN5LXRydW5rCis3NTE1OCAxYzAxNmYwZTk0YmFjMWY2NDI5MGY5YjJjZDg2OTFkZGYxZTJlZWY0IHB5M2sKKzc1MTYwIDE2Yzk4NWRhYWViMDlkNjUzYjY0Y2ZlYjc2ZDQ4NGY4OTk0N2NmNTIgcmVsZWFzZTMxLW1haW50Cis3NTE2MSBlN2U0NTI0NDlhNWVhYzlhOGFjY2JiZmNhNzU1MDE4M2QxYjMzOTNmIHB5M2sKKzc1MTYyIDcwM2RlNTVlMDBiODVkNjdlZTA0ZDczOGFkMTQzOTUzMTkwNGYyMTIgcmVsZWFzZTMxLW1haW50Cis3NTE2MyAwODQ1ODBhMzQ5YjcxMTM3ODY1NzYyMTVmYmZmNGI1Y2I5MWQ3Njg1IHB5M2sKKzc1MTY0IDMzOWI4MjMyMWY4ZWY2MzlhMWNiNDhmNDAzYjY1MGNiMjFlNWNlZmQgbGVnYWN5LXRydW5rCis3NTE2NSAzZTI4ODE2YWEwYTIzMjVhNzI3ZWY2MWJiYTE1Y2I1ODliNTM4MmNjIGxlZ2FjeS10cnVuaworNzUxNjYgODA3YjBkNTk3MzE0YjJmNDRiNTVmNzEwOWYyMDRiZWUwMGQ3NDUxNyBsZWdhY3ktdHJ1bmsKKzc1MTY3IDkyMTdiZDBjYzNmY2Q1MDM4MDM0MmMzMzEzYTIyMTAzNGU5YThhODUgcHkzaworNzUxNjggMTA2NDU1NTIzN2UyMThjZmQzOWYwOTZlMDMxODEzYzAxN2NiZDUyNyBweTNrCis3NTE2OSBlMWQ2OTUxYmYzOWQ3ZGZjZGE2MGFhZmNmZmZlYWVlYjhiMDU2OWZiIHJlbGVhc2UzMS1tYWludAorNzUxNzAgNWVjMTVkYTFmYzQyMjA1YTFlMTNlMTljMGYzN2I0NWI5MGUzMDdhMiByZWxlYXNlMzEtbWFpbnQKKzc1MTcxIDExN2IzMDhiZTMyMTQzNmI2YmE5MTlhOTAxMWM4MzM4Yzg0Nzc0NTAgbGVnYWN5LXRydW5rCis3NTE3MiBjZTIxNGVlNDExNjQ5MjhhMzBiNjZkZGVmYjRlMWEwOGE5ZThiYjRhIHJlbGVhc2UyNi1tYWludAorNzUxNzMgMTcwMGE3ODk3M2NkODE0NmIwYjgyZWNlMTkxZmQxZjM1NmZkMzk0MSBweTNrCis3NTE3NCAyYzdiMWQ1YzhiNjViMWNlYzFlMjllYmMzMjU3OTRjMzMzNDI1NzBmIHB5M2sKKzc1MTc1IGRjMzUwMGQzOWVmMTQ4OTkxODFiMzAwZjZmYjVlNDYwYjcyYmE4MzYgbGVnYWN5LXRydW5rCis3NTE3NiBmZThiOWI3M2Q5YWYwZDRkNmY0Y2QyOTYzZDM4OWNkZTBjNmE3NzQxIHJlbGVhc2UzMS1tYWludAorNzUxNzcgZTMwNGQ5ZjM0ZDE1Mjg3MDUzMGIyZDgxMDk4NGI3MzhiYTcwYWM4ZCBweTNrCis3NTE3OCBmZTk2NGIzYzk2NjJjNzcyZWU0MGMzNzg3NGVjNmQ1NjVkMjY1NjFjIHJlbGVhc2UzMS1tYWludAorNzUxNzkgOWYxOThiMGYzNjdmYmEwNGRhYzM2MWJhMGEzYTVlNGJjMzFjMjZjMyByZWxlYXNlMzEtbWFpbnQKKzc1MTgwIGU2YTVlYmU1YWVkZDhlZTMwMmJkNDIzY2Q0Y2RiMmE5MjZlODZmMzQgbGVnYWN5LXRydW5rCis3NTE4MSA3ODNlNmNjMmFiNjIzNTE5NmI5MjcwNTBiNmFhOWI1Y2M5MjEyZGM5IGxlZ2FjeS10cnVuaworNzUxODMgMDBjMzM5NmQ3YThjNGFiNGMyYzg0MWQ2MTAxM2EwNzNhZTkyMWQwZiByZWxlYXNlMjYtbWFpbnQKKzc1MTg0IDhlN2E2OTI3ODc5ODE1ODg3MzJmNjUwYWMyZmNhYTUwMzcyYTBjMmEgcmVsZWFzZTI2LW1haW50Cis3NTE4NyBjODUwY2U5NzdiYjk4MmQ3MjUxZDNmN2ZhNDczMGJlNGNmYjVmNmEyIHJlbGVhc2UyNi1tYWludAorNzUxOTEgNGM1OTk4M2JiMDU3OTY2NTcwNjE2YzJjM2ZkMjA5NTRjMjZmOWM2YiByZWxlYXNlMjYtbWFpbnQKKzc1MTkyIGMyYzkwZDFmM2MzM2VjNjk3MjRlNjlmODMyZDRjMzRhNWNmNmYxMDUgbGVnYWN5LXRydW5rCis3NTE5MyA3MjkwMTQwY2QzMzAyNzA0NDQ0MGE2M2IxZDU2YjgyMGE5ZDA2MDA5IHJlbGVhc2UyNi1tYWludAorNzUxOTQgYzQxMTkyODZmYWE3NWQ3ZGU5ZTIxZDEwNzdjNmMzYTdlYzZiZGJlNSBweTNrCis3NTE5NSA5YjFlYjVlNzVlMTU5ZTdlN2VkM2UzZjk4NTM2Njk5NDgzZjA2OGQ0IHJlbGVhc2UzMS1tYWludAorNzUxOTYgN2Q3Zjk3ODNjODZkYjE0OTNmMzU2MDQzODk1ZDg4ZGE5ODNjN2UyZiBsZWdhY3ktdHJ1bmsKKzc1MTk3IDY3NDA5YmM5OWZhMmJjZjAwMDE0MGNhMDNmYTlmNWQ0ZWFhNTIxMzMgcmVsZWFzZTI2LW1haW50Cis3NTE5OCA3N2VlMjIwNjg2Y2M1MDJiYjAyOTU5YjkxNDZjYTBjODM5NTc4YjMwIHB5M2sKKzc1MTk5IDI3NWQ2MGY5M2QzYzVmNjE5MDhlOGQ3ZDM1ZmVhOTIwMTI3NDMxYTAgcmVsZWFzZTI2LW1haW50Cis3NTIwMiA0MzEzNTBmMjFkODdlOWQ4ZWM3MGM2ZjVhYzY1YzMyM2ZiYWU3MGFmIHJlbGVhc2UyNi1tYWludAorNzUyMDMgOTEzMGZlOWM1OGJmOTdkZjhkNDNmZDIzMzY0YWYwNTZiZjJhNzBiMSByZWxlYXNlMjYtbWFpbnQKKzc1MjA0IGZjNzRkNTFhNjc5NzQxYTlkNTM2YzBhYTVkNDg4ZTdhMzRmZjk0N2EgcmVsZWFzZTI2LW1haW50Cis3NTIwNSBkNDEzNjA5MGFjMzRmOTFlZGExMWU3ZTM0ZDkzM2NmNjA0YWY1NzA0IGxlZ2FjeS10cnVuaworNzUyMDYgMjVjZmI3MGJjZDVlOWRkMDhjZjBlNTkwZGY0NTc2NTVmMTNmOTM0YSByZWxlYXNlMjYtbWFpbnQKKzc1MjA3IDNlZTA0ZWE5Y2M2ZTJmNzMxZjc1MTNmMmE1ZGU3Mjc4ODhhMGJlOTIgcHkzaworNzUyMDggOTQ2Y2VjYWY2NGMxZjFkMDc3ZjY2YzAyMGY2NTM3Zjg3M2M3OTkzMyByZWxlYXNlMzEtbWFpbnQKKzc1MjA5IDUzODRjOGVlNGEyNmNlMDFlNzcwNGFmMzlkYjhhZjNmZTdmMmZiZDcgbGVnYWN5LXRydW5rCis3NTIxMCAzOWI5OTk0ZTg2NjkzYjM1MWQyYzNlZjlhYzJhZjVmMmJjNmZjYTAzIHB5M2sKKzc1MjExIDI4ZmJjYzc5YzIwYTkzYzZhNjUyOTkwYzFmZTM0NDBkYjM5MmUzNTggcmVsZWFzZTI2LW1haW50Cis3NTIxMiA2ZDBkZmUzYTEzY2ExOGFiMzRiNTNkZDYzZjQyZDUyOTAyZGE5MGEzIHB5M2sKKzc1MjE0IDg0OWZiMjdjNTU5NDY2MjQ0YmUyYzM4M2ZhOGFlZDE2ZDY1Y2Y0NGEgcHkzaworNzUyMTUgNTIyN2VhYmRiYjY0NzU4NjA4YjUxYjhlNDE4ZTA1OTM4ZDMxY2Y0NSByZWxlYXNlMzEtbWFpbnQKKzc1MjE2IDUzZjE3Y2M3YmZmNjdjNmMwYzhlZTM2MDliMWQzODA3MTE2YjkzNDYgcHkzaworNzUyMTcgZDU0OTM2NmRkMjE4YjMyNDBjM2FiYWYzZDhlZDQ5NzZjMTkxYWQyYyByZWxlYXNlMzEtbWFpbnQKKzc1MjE4IDE1MGNkYWVhNThlYzY5MTZhYzUxOWQwOTMzN2IzZDNlNmRiY2IyNDcgcmVsZWFzZTMxLW1haW50Cis3NTIyMCA2Y2ZmNjgyYTMwOTgxZmUyMDMzNTM4MTY0NDZkMDY3OThhOGI1ZTE4IHB5M2sKKzc1MjIxIDVjMGE3ODAwMjE1YTY3NDNiZjE3YmZjYzRiNzkyZTE5NjA3M2RlYmUgcmVsZWFzZTMxLW1haW50Cis3NTIyMyBjY2ViNjJlYjFjZjE4MzJiMjc2MmJkZmVhZjdjOWYxZWM1YWM4NjI0IGxlZ2FjeS10cnVuaworNzUyMjQgNDVmY2UzMTBkNDc5MmNjM2Y5YWQzMzYxMTg2NTJlODY2NTBmNDE2NyBweTNrCis3NTIyNiA0ZjQ5YmQyZTdjNThkMjk4NDlkMjM3ZmFlNjgwZmQ4NjRkMDQzYmNhIHJlbGVhc2UzMS1tYWludAorNzUyMjggMjE4Y2RkNmM2ODQyODVkODJiOGIwODNhNDgwMjg1NzRhYmExMzgxNiByZWxlYXNlMjYtbWFpbnQKKzc1MjI5IGQ1ZDhjYjk4ZWIyYWVlYTA5ZDk4NTMwYWFjZDU5NTQ4NTA2NTJmY2UgcmVsZWFzZTI2LW1haW50Cis3NTIzMCBmNDA1NmY4ZmVlYzI2YmQyOTI1MzZkZjYxOGVmYWFkODA5NTM1MmVlIGxlZ2FjeS10cnVuaworNzUyMzEgNDFiYjVlMmRjOTQ3YWMzZjdjNGFmOTQ2YzAxYTE0ZTBiMGFkMDY3YiBweTNrCis3NTIzMiBjOWJkNjJlZmU2Y2U1NTI0ZTE3NGQxMDYzZDE2NWI4YzliZTBiMzYzIHJlbGVhc2UzMS1tYWludAorNzUyMzMgYmVjMmU0NDVlMjI0YjY1YTBkZjEyMWQ2MWY5OTllODBkNGIzMTIwYyBweTNrCis3NTIzNCA1YmNlM2E1OWJmZDJjNWVmYzdiYThmYzcxYmY3OWVjZWZkMTRjOWFiIHJlbGVhc2UzMS1tYWludAorNzUyMzYgYmIyYTEyM2NkZDdiYjJhZjU4MDE5MjFkODM1MzNiMGM0OGIxZTA0OSBsZWdhY3ktdHJ1bmsKKzc1MjM3IDMyMWMyMjA3ZDVmOGZhOTQ1YjUyOTE3ZDRhODQ1OWJiZTEwNzc0MmQgcmVsZWFzZTI2LW1haW50Cis3NTIzOCA5MTlhMjdkZGI0YTMyMTE4NmIxMzM0NWEzNTg5MjIzMmU5YjFiNmMxIHB5M2sKKzc1MjM5IDA1Mzg5MDE0YmY0NDQ5Y2RhMDYyNWNlMmE0YjI2NGViMGE5NzBlZmYgcmVsZWFzZTMxLW1haW50Cis3NTI0MCBhMmNhYmIzNjI1N2YzYmMwMTMwNWY5NWQ4YzAzMmQzNTNiNjNjNjAxIHJlbGVhc2UyNi1tYWludAorNzUyNDEgYzIxOWY3MjYxZDk4NjM1NjMxMTZkNTQ0N2RjNjc3NmYzZmU4YWFjZSBweTNrCis3NTI0MiA5MjJjMTEyMmM5MjViNmFlNTYyZjE4ZmU3MjBhOTkwN2ExZGQ0Yzg0IHB5M2sKKzc1MjQzIDhkYmIwZmMzOTk4YWQwODkwNDI0MTU1MjRiN2VjZWMyOWY1ZjBkODMgcHkzaworNzUyNDQgYzgyNzcxMGJjZGZkYjJmNjFjNDE4ZWM3NDRiYzNiYzllY2JiNTQ4NiBweTNrCis3NTI0NSAxMzhjN2ZjMTliNWQ2ZWVjNGZjMzQwY2I2NGRmOTY4ZjAwMGM5ZTM3IHB5M2sKKzc1MjQ2IDJiN2UwZWFhYzY0ZWRkNDAwMGEzZjZjNDRkMzlhNjQ1NWQ5OGVjN2EgcHkzaworNzUyNDcgMmU0ZDdhNDBjMmRkN2UxMzNiNzFhOTg3OTc0Nzk5NmE3YjlkZTIzZCByZWxlYXNlMzEtbWFpbnQKKzc1MjQ4IGIwYjllNTkyOGRhOTlkZGRhMmI3NWM3NGM0YzY2Y2RlODJkMjA5NjcgcHkzaworNzUyNDkgNmIyM2IwZWJhNDA1MTY1YTBiMWEyZGM5YjY3ZGQ3OGY2YzVkMDMxYyByZWxlYXNlMzEtbWFpbnQKKzc1MjUwIDdhYTRhNDIxMTUyZjkyNGUxMWYxMDcyMWNhMzEwMWJiMjhlNWY0ODYgcmVsZWFzZTI2LW1haW50Cis3NTI1MSAzOGJlMjYzOTAzNTUwMDRiNjFhNWMwMjBkNjczNDM5MDYzODkyNGE3IHJlbGVhc2UyNi1tYWludAorNzUyNTIgNDkwMTkwY2I0YTU3NzIyODY3MzM0NmRkNjVlMTk3NWU2OTY4OTU5MSByZWxlYXNlMjYtbWFpbnQKKzc1MjUzIDI3OGNmNWM4ZjFmYTk3YzI2NjhjOTM5MTJmMzM2ODRlZGM4NDQwZGUgcmVsZWFzZTI2LW1haW50Cis3NTI1NCBkNTI1MGRhMDA1Y2E3MzlmMmVhODY4ZjNjZDI4OTAwMzk2ZmIwNGIwIHJlbGVhc2UyNi1tYWludAorNzUyNTUgOTc0YzAzYzk4ODg0ODA2Y2ZkMzg0YzI2ZGI2MDdmZTViYTJiY2RiMSBsZWdhY3ktdHJ1bmsKKzc1MjU2IDI5YzAxOTZiMWJkZDdiNTE3NjBjMTI2ZmIzYTcwODcwYTcyNThjMjggcmVsZWFzZTI2LW1haW50Cis3NTI1NyBhMDFmNDEzZWEwOGI2ZDkxN2I1N2Y3YTBjMGYwMmQ0NzhkY2MyYjk2IHBlcDM3MAorNzUyNTggYjRkMWJlNzEwMmIzMWIwMTEzN2NmMTcyN2I4NThiNDI2MTZjYmZhYyBsZWdhY3ktdHJ1bmsKKzc1MjU5IGY3ZWVhNjJiMDhiMDVhM2I5MmE5ZGY3YWVjZDFkYWQ3ZjI0ODdhODcgcHkzaworNzUyNjAgZWU5MDIwMTYyNDNhMjllNzdkZDJlNmRhYWQ1MWZkM2JjMTJhMmY1OCBsZWdhY3ktdHJ1bmsKKzc1MjYxIDk4N2U1OTZjZjU3MzczZTlmYzMxMTZhZjEzNGE3MmE3MWQ4Y2ZiYTMgbGVnYWN5LXRydW5rCis3NTI2MiAxYzdmMmI5YTE2NzgyYzA2YzUxMDU0ZDc1N2I4YTc1MDA2ODM4MzMyIGxlZ2FjeS10cnVuaworNzUyNjMgMmZhOWZmZTZkMTQ1MWQ3ZmVkZWRmZDM4YjEyNDBiNWQxZjAwZjllZSBsZWdhY3ktdHJ1bmsKKzc1MjY0IGQyZjk1OTExNTQyODZlNTRmMjEyNDNjZDMyYjdjMDNkOWZlNDZjODMgbGVnYWN5LXRydW5rCis3NTI2NSBhMTJlNzAxZDk3Y2FjNzg3ZjE1ZTVmNDkzM2IxYThmNTZkNGI5ZmQ3IGxlZ2FjeS10cnVuaworNzUyNjYgYTQ1OTUwNzI2YmRmYmFkYmVlMTU1ZWRiODA1ZDczM2UyMDNjZmIxZiBsZWdhY3ktdHJ1bmsKKzc1MjY3IGE2ZTdlZDUyZGY5YjMxN2U2YWM4ODBhMmI2YTFiNmYxOWFkMzYyNDYgbGVnYWN5LXRydW5rCis3NTI2OCBjOWQ5YjdkMDk0MjJmN2E2YTkyMDIxMDgxZjgwMDNhOWJmZWNlMjhjIGxlZ2FjeS10cnVuaworNzUyNjkgYTRhMzI0YzJhMDBjNzgwODRlYWRkZDAwM2I2NTZlMzY2YzY4MDQ2NyByZWxlYXNlMjYtbWFpbnQKKzc1MjcwIDI1YWE5MGE2ODY1YjYzMTMzOTYyZGQ2NDYyNmM1M2M3YjZmZDQ3ZDUgcmVsZWFzZTI2LW1haW50Cis3NTI3MSA0MzNmNzI3ZTVlODIzZjAwZDEwMjNiNDM5MDJlYmIzOGZjMmY5MjJkIHJlbGVhc2UyNi1tYWludAorNzUyNzIgYTk4NjQ0MTcyODZiOTNkNWNiNTY5NDcxYTI5ODE2MTUxN2Q1ZDQxYyBsZWdhY3ktdHJ1bmsKKzc1MjczIDVlM2Y2ZThkNmFlNTk1NTk3YzY0ZDVjYWVhMDc5NDI1NGZjNGIzNWIgbGVnYWN5LXRydW5rCis3NTI3NCA2YzkxZDE4MDMxODI2ODE2YTk5MTE5YTM5ZmNjNGY0ZjRlNjllN2RhIHB5M2sKKzc1Mjc1IGM1YTNkNDMxNDY3NjlkYTM2NzcwOGMxMWJjNGM0NzM4Yzk5ZTFkYzkgbGVnYWN5LXRydW5rCis3NTI3NiAzMjk2OTM1Mjk5Y2U2MjdkNzkyMTBjNjFmNTY5NmJlNmUwNjg5OTc3IHB5M2sKKzc1Mjc3IGRjMDQ3ZDlhYmY3YjZjZjkwZmRjMTJiZGU4NjE3YjlhMDBiZThmMGIgcmVsZWFzZTMxLW1haW50Cis3NTI3OSA2MTU1Yjk1OWZmNzJiZGY1ZWYzY2EwZjBmMTljZTQ2NjYyYTk5OTRhIHB5M2sKKzc1MjgwIGY5OWIzZmMwMWZjMDY4OTZjMzkyOTJiNDk1YjBiYmRmYmEwNjEwMWIgcmVsZWFzZTMxLW1haW50Cis3NTI4MSBjNDVjZTI4NWY1NTJiOTYzZTQyODYxNTI1ZmQxMmJjMGNjZjBhOWQ4IGxlZ2FjeS10cnVuaworNzUyODIgYjc4NTIxYWU3YTYyNDVlNDhiZDVjODgyZGJlNTlmMzdmNTU4YjA4NyByZWxlYXNlMjYtbWFpbnQKKzc1MjgzIGU3NTljYTI1NzAxZDlhNjY3ZGRiODcyYmJhNWI1Nzc3ZTc2NmVmN2QgbGVnYWN5LXRydW5rCis3NTI4NCAyNDliMGJlNzk3YTgyZTJlZGY2M2M3ODMwZTVmYTM2NzBiYzU3MmZiIHB5M2sKKzc1Mjg1IGRkOTRmMWQ4YzlhNWNhNDQ2OTYzNDkwNjcwMTdmYmJmMjNiMWQ4MzcgcmVsZWFzZTMxLW1haW50Cis3NTI4NiA0OGFiMmU2MmRlOGJjNmJkMzY1YWMxYTAxNDMxMTlhNjVhYjA2MTc4IGxlZ2FjeS10cnVuaworNzUyODcgZWY3MzQ2NDQ4YjYwMGRmY2VlYjU0YWYxMDAzZDBmN2UwMjU0ZDFmOCBweTNrCis3NTI4OCAzMDcyZjk0MGYzNWEzNmI2ZDQ5ZjVlMjRlZjFmZGQ1NWI4ODlhMWJiIHJlbGVhc2UzMS1tYWludAorNzUyODkgOTZhZmYyYzJhOWExZDViNzJlMGY0ZjFkMGMxZWQ3OTU4ZDA3OGM1ZiBsZWdhY3ktdHJ1bmsKKzc1MjkwIGNiNDlmMmViMDQ1NzlmODdhZmJlY2E3MDlkMDZlNzZiY2YyYTA2MzUgcHkzaworNzUyOTEgOWY2MzFhM2JiNTQ5M2ZhZDk5ODE3OTI5ZDg5OTgxM2Y4MGIwZWJkMCByZWxlYXNlMzEtbWFpbnQKKzc1MjkyIGQ3OTAyMDJjMTUxZGIwYzZmYjQzNTI5ODhmZDgxN2NmZWZmNTRiYTggbGVnYWN5LXRydW5rCis3NTI5MyBhYmJjNzk3NTc1YzQyMzcwYTllY2UxYmNkYjQ1MDYxYzhlZDE1NWQyIGxlZ2FjeS10cnVuaworNzUyOTQgZWIwYzM5ZjYyZGUxOWNjN2MyNDdkNjQ0OTA5OGNjOWZlMGI1NDg1MCByZWxlYXNlMzEtbWFpbnQKKzc1Mjk2IDU0NThjMjBhYTBjZjgzOTViZjRkYjQ5YjFjMTk2ODU3ZGZlMzUwOTcgcHkzaworNzUyOTcgOTQ2ZTNhZjAwYjBiOGYxM2I2OGY5N2Q4N2FmNWIyZTNlYjc2ZDUxZCBweTNrCis3NTI5OCAyYzYwZTk0NjA2MmVjMGFmYWEyMWQzYmVhN2I3MjQzZjYzNTk2YmJiIHB5M2sKKzc1Mjk5IDI1ZTUxYzViMDY5NmU4NWM0OTAxYjY5NmVkN2EyNDVkYzY2YWE5NmIgcHkzaworNzUzMDAgODk2YTRmYjEzZjM1YzkxZGZmYjA1NGRmODVlZWE4MmRlM2U5ZGU3NSBsZWdhY3ktdHJ1bmsKKzc1MzAxIDFlYzhjN2ZiODgwN2I1YWZjZjZjNTM2NTQwYTY4YTU4MTU1ODg5OGIgbGVnYWN5LXRydW5rCis3NTMwMiAxMmNkOTRkMzk4NzQ2NDhlYjBmM2NmYjUzN2NlZGZjMGRkMDBmMjMxIHJlbGVhc2UzMS1tYWludAorNzUzMDQgNTdlZTA3OTNlNDYyN2I4MGNlMTJiNmZmNDAzNGZlYTdhZGM0NWQ3NSBsZWdhY3ktdHJ1bmsKKzc1MzA1IDY4NDk2MGZiMWNiZjY0ZTg1Nzk3OWNjMmE5Njg1ZjA2NzE2YmMxMTkgbGVnYWN5LXRydW5rCis3NTMwNiBhYjQyMDMzZmRmZGJlNWFiNGUxMjZlZTVlMWE4MDgxZWMxY2UwMjMxIHB5M2sKKzc1MzA3IDkxYWEwNDQxMDEzOTBjZWQzOThhYWQ2MWU3MTAwMWEwNjcwZDE1OWEgcHkzaworNzUzMDggMjgzNjkzOWU3YzU0N2ZmZWQ0MDY0NmUxMjJmZjNhYmQwZWIyMzYyYiByZWxlYXNlMzEtbWFpbnQKKzc1MzA5IDI5OTA4ZjJiYzkzZmQ4Y2RlYzM1NzRjZTQ3MGE1YWQwMWVmMDU3YmIgcHkzaworNzUzMTAgNmQwOTJhNTFlMTg3ZTQ1MjJkNmJkZTgzNTg0OWNjMjYxNTBmNmYwZSBsZWdhY3ktdHJ1bmsKKzc1MzEwIDRmOTEzMTJkNmVjMmFiMzVlN2FiODIyYTgzZGEwMDkyMzBmMTI0YWEgcHkzaworNzUzMTEgYjVlYTQ3NzNhZmYxMDIxYTM1NjExYmVhMjFkMGU0YmE5Njc0ZTM1NSBweTNrCis3NTMxMiBhMmYwMmExMjVmZWIwYjk2OWQ4Mzg2NGEwZTk0N2Y3OWE5ODE0M2E4IGxlZ2FjeS10cnVuaworNzUzMTMgMzJjMzVmOWIyNDVjODdjMGMwNzlmODQxYjlkN2M1ZDVjNmZjYThjMyBsZWdhY3ktdHJ1bmsKKzc1MzE0IGQ3M2YyMjE1ZWZjMTlmOTIzNzI2OGY4YjQ3MzM4ZDU4YTM5YzgwZTAgcHkzaworNzUzMTUgMzNiMDQxMzUwMDM0MmFmNzBjMjhiOWNkMzU0OTBjMWE1NGJkNTdjMyBsZWdhY3ktdHJ1bmsKKzc1MzE2IGVmMzFiMDRkZTUwNTYyZmZjNDUwYTZhMWQ0MGUwYWVlZjg4ZDc2YWEgcHkzaworNzUzMTcgMzkzMWM3OGFmMTE3NWIzYzc0MjRmMzMxM2RmMDBjYjlmMDVlZGNlZCBweTNrCis3NTMxOCBmZjhjODZhMjRiMTU4ZmJhZTFjZjQ1NDg1NWZmNThjODZmMDM0MTRhIGxlZ2FjeS10cnVuaworNzUzMTkgMzU2MTljZmNkMGI1YmY1YTQzMDAxZjYyMTNmYjJkMmYzMzhkODQ1OCBweTNrCis3NTMyMCAyMjBmN2RlZmZiYWZiNTc2MDJiYTczNWY0MzNiMmVkMDcwMTMzZmJkIHB5M2sKKzc1MzIxIDQyYTZhMjI0OTQ3NGNhNmIyMGMxMTA0YWFlODZiYTA3OGQ1ZjI1N2YgbGVnYWN5LXRydW5rCis3NTMyMiAzNDk5OWExYWVhOWIyNjE3NjEzZmMwZWJjMTU5YmYyMTFkNjBmN2ZiIGxlZ2FjeS10cnVuaworNzUzMjMgYmZhNjBkZjc2OTI5MGExMjNlMzZiY2VlNDJkMGJmMDVhMzU0MTQxZCBweTNrCis3NTMyNCA0NDMxNDlmYjM1NzQ4ZjVjZGNmYmE4OTlhOTcyNmRmMjkxZGY1ZDBlIHB5M2sKKzc1MzI1IDY1ODdlYTZkM2U3ODQ1ZGVmOWEyM2M1MmEyMTI1YjQ4MmFiNzUwOGYgbGVnYWN5LXRydW5rCis3NTMyNiBmMzJmZWRhNjVjODU2YWU0YWQyNTg0ZGQ4YzA3Nzc0ZmRlZTA4MmNkIHB5M2sKKzc1MzI3IDQ1ODE1M2Q1ZDgyZDZmNzFjN2ZlOGRiNDIxNmVhOGU0OGY2OWViMjYgbGVnYWN5LXRydW5rCis3NTMyOCAyMTY4YjlkNDllM2IxOTA4YjJjMTJmYWRhODVkZDU0NmZhY2MzYzI2IHB5M2sKKzc1MzI5IDU1OTdiYTcwYTMzNmM4NjVmMDZhOGExOTAyZDMyMTY5NzM3OWQ4MDQgbGVnYWN5LXRydW5rCis3NTMzMCBmNzZlMmU2Mzc3MzAxODlhNGNmMTYwOGVmNGY0N2YxYTI1Zjk3ZDc3IHB5M2sKKzc1MzMzIDI0ZTkyY2VmMjY2NDYzNTlmZTAyNjEzYzYwMzFjYjljMWFjNTdjYmQgbGVnYWN5LXRydW5rCis3NTMzNCBiOTQyYzcwNmUzMzgxMjI4YzJhZjc5Y2RiOWE4YjI1NTAwMTI1ZjQ0IHB5M2sKKzc1MzM1IDY5NmFjZWI3NjM1Yjk5OTY1NTc4Y2E1N2E5OGZmNGYzYjhkM2ZmOGMgcmVsZWFzZTI2LW1haW50Cis3NTMzNiA4Njc2MzMzMzBhOTM4ZTc0NjM5OTdmOTU0MjgwMzdlMzBkN2JhM2M2IHJlbGVhc2UzMS1tYWludAorNzUzMzcgNjE5NGZkNzU0MzIzOThmOGU1ZWJlODkyMWEwMjZiOTAyZWJhZjJmMiBsZWdhY3ktdHJ1bmsKKzc1MzM4IDg2YjY4NGM5Njk0MjRiMmVhZTZmOWQ2NTFhNGQwYTM1MTdmYzNlOGUgcHkzaworNzUzMzkgMzEzMGI3ZTgxMmIwNGVhZjM5ODg0MDYzZDVjZjVmNTNlM2MxODMzNSBsZWdhY3ktdHJ1bmsKKzc1MzQwIDg5YjRiYjBhYTVhY2Y4Mzg2MjllNjEwOTNmM2UzNjM0YjNjYTFlYWQgcHkzaworNzUzNDEgNGRkMDkwMTAwZWNhZmI1YjY5Mjg5NDFkMGMxNmVlM2IxNmZmMDAwYyBweTNrCis3NTM0MiAzZWQ2NTcxNmQ3YWQyNDJjOTk5NmNiNmEwMWY0ODYwYjcwMjdiZWYyIGxlZ2FjeS10cnVuaworNzUzNDMgNWMzNjVhYWIxMGQxY2UzMGZlNzQ1MDY3MGViZDU2YWU5ODBlYjRkYyBweTNrCis3NTM0NCBjMTA1Yjk4ZTY0OWRlOWE0NTg0M2U4MzYzMzVlMjA2OTMzMDFkODhjIGxlZ2FjeS10cnVuaworNzUzNDUgMGFkN2Y5Yzk1MmIwOGNhMTI4OTBiNGFkNGIwMzQzOGFhODcxOWRiNyBweTNrCis3NTM0NiA0YmEyN2QxOGRkOTJkYWFmYjczYjE3ZjlmZjU5NTU0Nzg1NjQ0N2NiIGxlZ2FjeS10cnVuaworNzUzNDcgYmRlOGEzOTYyMjhjMmFhYzIxZTQzOWNiMmNiMTA3OThlOGE0MmY1OSBweTNrCis3NTM0OCBhMTVjN2Q1MGIzY2I2NGUwMTZlZDIzZTM4YjdmMTMyZmFjZDkzNDk1IGxlZ2FjeS10cnVuaworNzUzNDkgMzk3ZTAyZTBiZTkzMTRiNTQyMTAzZmQ1NmQ0OThhMmEwNGUzNmIxMyBweTNrCis3NTM1MCBjYTAxOGUyYmI4NjU0YjliNTk0ZjZhN2E0YTQ3MWEyMDQyZjYzM2JiIGxlZ2FjeS10cnVuaworNzUzNTEgNTJkNjk3M2NiZDk0ZWIzMzQ0YjAzNzNjMmQ2YmEzMTNlYjFiZGFlYiBsZWdhY3ktdHJ1bmsKKzc1MzUyIDUzYzgzYTEzMmUxZWEyMWJiNmM2NmFlOTRiZjQ0Mjc0Nzk4MDJhMzMgcHkzaworNzUzNTMgNjk4ZTBlNjljNzY1N2IyNjljMGU0ZjEyODYwN2RlYWJjOTQzNThhNSBweTNrCis3NTM1NCA2YTVlMGM5MTNjN2NlYmFhYzhmYTQxN2YzNTY4NzQwMzg1OWU4MDY0IGxlZ2FjeS10cnVuaworNzUzNTUgOTIwNDA4ZTYwMzAzMjEzMzdiOTEzYTFjMzlmYjFiZWNkYTMyZmQ3MCBweTNrCis3NTM1NiBlNDYxOWNmOWU2MmNiZTEyOGY5ZWFhYjJjMWNkNGM5OTI1ZjZjNWQzIGxlZ2FjeS10cnVuaworNzUzNTcgOGVlNDUxNzljNTAzOTg3YjAzYjA3ZjFhNTFiN2NmOTcwYTljNTdkNyBweTNrCis3NTM1OCBhNWQ3YjUyNzc5NTE5M2NjNmFhYzZjMWQ5MWViNzA4ZWZiZjY0M2M0IGxlZ2FjeS10cnVuaworNzUzNTkgMTUyMWE2NTdhODVhZDliNTYwMTg5NzdjNTU5YjAwNDhhYzQxMjVhNyBweTNrCis3NTM2MiAyMDViOTZlZmI3OTAwYTEyOGU3MzBjM2M2Yzg5MmZlOWNiMTc4NDI2IHB5M2sKKzc1MzYzIDMyMDA4ZDIzZjZjYjQ4YTFlZGEwYjI3ZjFiMWFmNjg4YjBlYTc3ZmQgbGVnYWN5LXRydW5rCis3NTM2NSA5Zjc2NTExOGQ5Yjk3MTM5ZDZlNjgzZjhiZjY2MzU3Yjg1ODlkYTJkIGxlZ2FjeS10cnVuaworNzUzNjcgMjIwMDhkOTM0ZTYzNzU5MmM0NzI3Y2JhOTJmMTY2YTE5MzJkODdhMSBsZWdhY3ktdHJ1bmsKKzc1MzY5IDQzYWQ1NTQ2MTViNmQyMDBjNjJmZWQ3NTY0ZWY2ODM1MTQ3OTczZTAgcHkzaworNzUzNzAgMDUwNzQ4Y2U1YWQ5ZWFlMjQyODJlYWFiNjdjNjhiZGFkODNkZGUzNiBsZWdhY3ktdHJ1bmsKKzc1MzcxIDRiNWQzOThlYjg2NjY0MzNkZWZkZjhkN2EyMzdjMjZjODJmOGU4MzQgbGVnYWN5LXRydW5rCis3NTM3MiA5YTJjMzdjMzJiN2U3MTgwYTczMTVkYWE4Y2M0OGJmNTkzNzIwZDJmIGxlZ2FjeS10cnVuaworNzUzNzMgY2RkYjYyMGYwY2RhMGFlMTRiMzExYjgzNDc4ZGZkNTU1ZjUwYmVhMCBweTNrCis3NTM3NCAxNjg4NDc5NTUzMjQ5NGJkNmVlMDE3ODE2YWQ2ZDQ4YzZlN2Y0OTg5IHB5M2sKKzc1Mzc2IDM5MjJlNzM0YzliYjczMmY5ZjRlNGRmOThjZTc5YmM1MmYxODBiODkgbGVnYWN5LXRydW5rCis3NTM5MCBmNTlkYTljOTM0MjVhOWY5Y2Y2MTdjODdjYWMwNDg1OGFhNWFlZTllIHJlbGVhc2UyNi1tYWludAorNzUzOTEgOTVhNjk2NDBlYmQzYmQxNzk3ZmE4YmEyYWEyZjcwMWE3Mjc1MTdkMSBsZWdhY3ktdHJ1bmsKKzc1MzkyIDlkMTdiYjRmMTE3MGZhYjIxMGY3ODc4ODIzM2IyMjE4ZjU2ODQyZGEgbGVnYWN5LXRydW5rCis3NTM5MyAyMDllMzgyNTRhZThiODc4ZDM0NTM1NGZlZjBkZTI5ZTllMjEyNTc4IHB5M2sKKzc1Mzk0IDliZDZhN2FlZTEzY2E4MGU4NTY5NzllZTM5NzlmYWQyM2M1ZTYxNjAgbGVnYWN5LXRydW5rCis3NTM5NSAyYTc1ODM3MThkMjUzZmQ1YTBkYTI2Y2Y5ODA1ODBmMzY1ODlkMmVmIHJlbGVhc2UyNi1tYWludAorNzUzOTYgN2ZlOGE4MzEzYTViMmU3ZTIzNDIyZWZhY2Y5Njc2ZmIzNWViZDY0ZCBsZWdhY3ktdHJ1bmsKKzc1Mzk3IGU4ZTEwMzQ4OGZiMzdlMzBiOWRmZjhmNGE4MWY2MDc2YzEyNDZjYTQgcHkzaworNzU0MDAgYmRiZGE3YTk0YzMzM2UwMzY1ZGY2MTkyYzM5NDBhNzM5MDdkODRjZSBsZWdhY3ktdHJ1bmsKKzc1NDAxIDc3NTYxY2QzOWZkMzk3YmQzZmFjZTMyZWVlNWE5NmNiYjk0MzZlNjYgcmVsZWFzZTMxLW1haW50Cis3NTQwMiAwMzg1NDczMmE2YzI4ZTczOWQ1NTQ2ZjI0YjlhYTcyZTFlMDA1YmRlIGxlZ2FjeS10cnVuaworNzU0MDMgMTgzNDc0YmIwMjEzOGRhODhjM2I0OTZjNTJhN2IxYjBhMDVkYTRjYSBsZWdhY3ktdHJ1bmsKKzc1NDA0IDYzNTA4ZWM3Njg0MGFhNjQ4MjA5ODc1NzFhNzg5NWVhZGQxMGNmMGIgcHkzaworNzU0MDUgZGM3NWQxN2RkMzA0YTUwNmJkMTU3ZTVjMmE0ZWFlZmYzMTdjYWNlMCBsZWdhY3ktdHJ1bmsKKzc1NDA2IDY3YmIxN2MyZTg2ODUyMTlmYWIzYzdiZmIyMDBjMDZlNGRkODUwYzIgcmVsZWFzZTMxLW1haW50Cis3NTQwNyAyNDdkNWE1ZWFmYTUzNDM5NzViOTlmM2VlOThmYTRjMWQ5NDU4MTY4IGxlZ2FjeS10cnVuaworNzU0MDggNThlNTc2MzFiZThjYjYzOGVkMzFlNGI0MjI5YTAzNmU0NzdhOTI4ZCBsZWdhY3ktdHJ1bmsKKzc1NDA5IDM4NmE0ZDdjM2M5OWNmYTQ5MjQzYzM4Yzg1ZmE0NDQ5YmZmNzhkNjggbGVnYWN5LXRydW5rCis3NTQxMCBjZGNkODA1ZWVlODVkNjUwNTczMDIxMTIyZTA2MjVmYjZmZjcyMmEyIGxlZ2FjeS10cnVuaworNzU0MTEgZTg1MzJjYzhhMTRlNDk3NGY4YTNmMjc0YzJjM2VjN2MzYjA0Yjk4OSBsZWdhY3ktdHJ1bmsKKzc1NDEyIDllNzE4ZDhmNzFlOGYwMTRhNjc3NmJhMmMxY2FiNTc2ZDhlNzBiNjYgbGVnYWN5LXRydW5rCis3NTQxMyA0ZWUzNDNjNGJjNDlkMDdlM2VlNjY1YjEyYzYwMjM1OTk3YzVmNjAyIGxlZ2FjeS10cnVuaworNzU0MTUgNmQ1MGM0YzFhOGIzNDZmZTAzNjRmMjM3ZmMyODBjYWIxYWFhMjc4ZCBsZWdhY3ktdHJ1bmsKKzc1NDE2IDVkZmM1OGYzOWI5ZjU0MjE5MGU2OWQ3MGNhMjI3Y2RmZWNjMzhiNDUgcHkzaworNzU0MTcgYmY4YzliZjcxMTVjOTNhMjMwZjlmYjlmMzM4ZjQ5OWIyYTVkY2MxYyBsZWdhY3ktdHJ1bmsKKzc1NDE4IGQyNDI5OGRmMmE2NjIwNmJkMDM4NThkOTNlNzM0YzA2YTUxNTA1YWIgbGVnYWN5LXRydW5rCis3NTQxOSA5MzM1MGFjYjU0MjViYTRmMDBiNWNkODA4YzdjNjA0ZWU3YTUwMjgxIGxlZ2FjeS10cnVuaworNzU0MjAgNjRlMTlhNjg5ODg2MTdlZjU0NWZkNDUxODBkMGY4ODcyZWFlMTRlMSBsZWdhY3ktdHJ1bmsKKzc1NDIxIGZlMzhkM2MxNzg4OGM4YzBlYmVhMTNiOGFhZTFmMWZjZGUyZDIwN2IgbGVnYWN5LXRydW5rCis3NTQyMiAxNmRiMmE5MzIyNDg5YzM5ZWJmMmIwNWQ3YjYwNmYzOTRmYjBhYTY3IHB5M2sKKzc1NDIzIDUwYjdmNTY4MTRmOWUzZWEzYzYxMGIxZmViMjZhNTdlZDEwM2Q5MWIgbGVnYWN5LXRydW5rCis3NTQyNCBkMGYwMDVlNmZhZGQwNjRkNzUwMzBhOWFkYmFmYjEyZTdhMjZjYTdkIGxlZ2FjeS10cnVuaworNzU0MjUgOTA0NGY2NGIxMGFlMDZiOGMwMWFmM2NkNDc4NmYyZWUyNzQxNDY0OCByZWxlYXNlMjYtbWFpbnQKKzc1NDI5IGZhNjE4OGM0N2I2M2ZjNTI1ZDgzOWM4Nzk1YjI1ZDJmMzU3NmFkMDAgbGVnYWN5LXRydW5rCis3NTQzMCA0NWI2MjcyNTM3N2E2MTI4NTk3ZGJjZmRjNmQ5ZmY1ZTc0Y2RlMTYxIGxlZ2FjeS10cnVuaworNzU0MzEgYTRiMTkyMmEzMDc0OTIxODRhYTQ0Njk0ZDkyOGNiNTFjMTI0ZDkwZSBsZWdhY3ktdHJ1bmsKKzc1NDMyIGUwMGM3ODg2OWIzY2QzNTY4ZDE3N2VhZDI3MTA5YmYxMTg1MmQ2Y2UgbGVnYWN5LXRydW5rCis3NTQzMyA5ODNlZWZiZjY2NDkzNDBlNzdkYjI1MjAwZWMxOTcyMzQzNmI3MzljIGxlZ2FjeS10cnVuaworNzU0MzQgZTRhMGI4NzM5ZTViOGFiN2JmOWU0ZmE2ZWJmZmZkYTczZjQ2N2EzYyBsZWdhY3ktdHJ1bmsKKzc1NDM1IDNiMzdiOGRkNzZkNzUwMjVmMTQxMjQ3ZWY0ZDk1M2ZjYjYyMTlmYjEgcHkzaworNzU0MzYgZWM1MDhjODlhZDM2ODIwNzhjZTQzYzA3ZGQ2NWRkMmRkZGQ0YzQ3MiBsZWdhY3ktdHJ1bmsKKzc1NDM3IDIwZDA5NTQ5YjgyYzBiOTliNzcwYzExNDgwMmQ3ZDhiODlkMjVhOTMgbGVnYWN5LXRydW5rCis3NTQzOCAxNjE3YzExNTU2YWZhMjhjMWJjYWI1NDgyNDkwYTVmM2YxZGZiMGRiIGxlZ2FjeS10cnVuaworNzU0MzkgN2U1ODQ5NDIwNGM4ZjZlNDNkZGViMDlhOTY3NDhhZWM0Nzg0M2MzNiBweTNrCis3NTQ0MCAyNzU0ZDY0MTgwZDFkYzU1N2RhYjI5NzlhNzkyNThhODcwZDRkNjAyIGxlZ2FjeS10cnVuaworNzU0NDEgM2JjNmZiM2MwY2NkMDlhMDUwNzRmYmEyZmE0ZTdiMzM0MjFmZDg3OSBweTNrCis3NTQ0NSBkOWU0OGFiNjI1NjJjMTRmMDNiMjUyYmIxMTljZjNiOGQ4MjZhZjM1IGxlZ2FjeS10cnVuaworNzU0NDUgZDk2MzA1MTdjNzBjMTk1MDQyMmFjN2UxMjJmZTEzODlmZjFjMWYxNSBweTNrCis3NTQ0NiA3ZmExNGJlOGFkNzNjYjM1NzU3NjY1ZDgxMzgxZTE3MzBkNGQxYzU2IGxlZ2FjeS10cnVuaworNzU0NDcgOGRmYTg0M2M4MzUwMWEwZTVkYjlkYWYzYzc0MTJiZjY4ZTA4ZjRlYiByZWxlYXNlMjYtbWFpbnQKKzc1NDQ4IDI0ZDMyMWZkM2QxYTIwYjE0NzQ2NDhlYjFiM2Q0YmRmMjI0NWEyNWQgcHkzaworNzU0NTAgOWU0MmNjMTkyYTQ0NjU5ZjQ4MmI4NzcwYWFiZjNkMmQ3ZWY0OGI4NyBsZWdhY3ktdHJ1bmsKKzc1NDUxIDc2MDA0MzZkYjJhOWI4NjliOWYwMzBmNGI2OGUwZjdjOGU5MWQ0ZmMgcHkzaworNzU0NTIgMjZiMTFlNmZlNWUzMWM2N2ViZmY4OGNmZTY5YzRkZTBhZTgzYzhjZSByZWxlYXNlMzEtbWFpbnQKKzc1NDUzIDM2NThjMGE5NTg5MjJhZjkyNmYzOTk3Njc0ZmIxZmM3Yzc1N2Q4MWQgbGVnYWN5LXRydW5rCis3NTQ1NCA2MjRmODFiNWVjMjRmNzczYmIwMWYwNzk0NjVkOGRjN2FiZTViY2Q3IGxlZ2FjeS10cnVuaworNzU0NTUgN2Q3MWM1MWZjMzA4YzFiMjY1M2I5ZjIzZDM3YzQxZTQ1OWExNzU0NCBweTNrCis3NTQ1NiA1ZWE2Y2QyODM5Y2M3YzEwMjc2ZTlhMjc1YzE2ZjUwMmQ5OWE3NTM0IGxlZ2FjeS10cnVuaworNzU0NTcgOWMwNmM3MzA5NzY1NjZjNGVkOWE5MTExYjllYWRmYjdhOTA4YjBmMSBsZWdhY3ktdHJ1bmsKKzc1NDU4IDUyOTk1NzlmNTc5YTg1NGFmYjhlMDcxNzMzMjMwNGRjYTdlMjZjNjkgbGVnYWN5LXRydW5rCis3NTQ1OSA0YzFmZjdiMjQ4MmVlMThhNGU5OGYwMDNiY2Y1OWU4NjkyNTc0ODk2IGxlZ2FjeS10cnVuaworNzU0NjEgYTEwODhiYjRmY2Y4YTZkMjEzNDY3ZWY4MTg0MDhkYjBiZDgxOTc4ZiBsZWdhY3ktdHJ1bmsKKzc1NDYyIDIwNDhkMDRkZWFiNDJjNTU1YjgzNWJhN2I0MTlkNGEyOGQ5YzE5MmMgbGVnYWN5LXRydW5rCis3NTQ2MyA4MTQzM2E2NzZhOGJhZmUxZmUzNjVmOWRjMzgwYjIyYWZkNWI5YjBjIGxlZ2FjeS10cnVuaworNzU0NjUgYjgxOGE3YTcwYTQ3NzgxMWExZjEwYTQzYmJjZmZlNDRlZDU1Yzc0YiBsZWdhY3ktdHJ1bmsKKzc1NDY2IDlmMDUzZTU1MGM5Nzc2OGIwZmFkZjgyOTViMDI0NmQzZDQzMTY2MjYgbGVnYWN5LXRydW5rCis3NTQ2NyA5OTMyMDdkY2UzOTU1YjQwOGY2YTZhMjUxNTg1MTlkNjA5ODk0NWJiIGxlZ2FjeS10cnVuaworNzU0NjggMDA3NTA1Y2MxZTJjNzM1NmY2NGFkNWVmZjRkYWU2YjU0ZDlkMjg5NSBsZWdhY3ktdHJ1bmsKKzc1NDcwIGFjM2M2MzJlMWMxM2MzMWM2NjBiNzkyMjNmZjczZTk5M2M1MGYwODMgbGVnYWN5LXRydW5rCis3NTQ3MSBlNmRlYjE1YzVhZTZhMDZmYzFkNDZhOTFiMzI3NDdmN2RmNjYxYmVmIHB5M2sKKzc1NDcyIDM1NGZhNTYxYWFkZjZjZGExMDU2OGNhNTk4ZTNhNDEwN2NlM2NiNzIgcHkzaworNzU0NzMgNDllM2Q0YWM2OWM2Zjk4MGMzNTM1NWIwMDVjODE3NDhmMjM5ZGVlYyByZWxlYXNlMzEtbWFpbnQKKzc1NDc0IDhhNmI2MTQ4NGE5ODRiOGE4ZmQxODk3MDdhYWJmYWI1N2Q2OWQwNGUgbGVnYWN5LXRydW5rCis3NTQ3NSBjMzdjYTlhY2QxZjlhYWNiOWVlYjM4MGYxNzkyYzQ2M2RmYTk2YTMxIHJlbGVhc2UyNi1tYWludAorNzU0NzYgMzBiYjRjMzU1NTlkNjE2NTFlNzUxZTcxODI1NzQ0Y2ZjY2I3NWQ1MSBweTNrCis3NTQ3NyBkMDc5ODc3ZGEzMzVlNjM4MjhmOTc3OTQ2NTNlODExM2FjYjUzOTJiIHJlbGVhc2UzMS1tYWludAorNzU0NzggODRjMTY4MDhiYTJjODFkYTJlZWJjYzBiY2RhZTI3ZGM1ODAzNzBkOCBsZWdhY3ktdHJ1bmsKKzc1NDc5IGQ5NDQ0MDAxMTRlNTAwZDVjNjI5YTVmZWVlZjMzYmI1ODJjNTg1NzkgcmVsZWFzZTI2LW1haW50Cis3NTQ4MCBhYTUzYTJkNGVmMmZjYmU5YjM4YTA1MWI2Yjc4YWU3YTY3ODk0ZjYxIHJlbGVhc2UyNi1tYWludAorNzU0ODEgNWU3YzVjOTRjNTcyMWExNmI5N2MyM2NjZGEzMDE0NzgyMGYwMTg1NSBsZWdhY3ktdHJ1bmsKKzc1NDgyIDM0OWMwMzM3ODk2YTI3MmY2MDZmOTBlZTY2ZTA2YTg2MDI2MTc3N2YgbGVnYWN5LXRydW5rCis3NTQ4MyBlZDdkZWMxMzY0MzBmZTU1YjY1YjliZmI3MzhiNzNmN2ExODQ3MTJlIHJlbGVhc2UyNi1tYWludAorNzU0ODQgNzc3YmQ1ZGQxZDlhYzU0MWEyYTNhOTM3ZmJhOTI2OGM5YmYyZTNhNSBsZWdhY3ktdHJ1bmsKKzc1NDg1IGU2N2ViOTY2MDA0MTc5ZmViZGJmOTg3NDFhYWYzZThkZjIxMDJhYWMgbGVnYWN5LXRydW5rCis3NTQ4NiA3N2VjYzVlNGY2NjRjNzE0MjRlNGQ1MWFhNWYxMzYzYTE2MDkyY2IxIGxlZ2FjeS10cnVuaworNzU0ODcgMjkyOGYxZThiMzg1ODE1NDIzYWQyZTg5YjVkOGM5MDE3MTA1MjA2MCBweTNrCis3NTQ4OCBjYjUzYjFmYTcyMDZmMmY1MjA1MDUyNzlkNWQ4NTU0NGViNmJmYzNkIHB5M2sKKzc1NDg5IDNkYmM2MjA3Y2JmNmRlNGZmYTUxY2EwYjljOTdkYjEyZGUwMzg2MzUgbGVnYWN5LXRydW5rCis3NTQ5MCA4OTNjMmE0Yzk1NDQ0NTVmNzk4NzE4ODAxZTlmODdhMjFkZWYwNDk2IHJlbGVhc2UyNi1tYWludAorNzU0OTEgZGUyZDk5YWE0NmVhZmY0ODNhOWY1Y2FiMjkwMjcxYTFkZTRlNTY2NiBweTNrCis3NTQ5MiAyYjYzNTk3MDkxODhiMTFiNjlmMzE3ZWIwZWRkM2NkZDRiMDFlOTYyIHJlbGVhc2UzMS1tYWludAorNzU0OTMgMDk4YmEzYTYzNzMwY2E2ZDc2NGJiYWRmNTlmMGNmYTc0YmM2MTAwMSBweTNrCis3NTQ5NCA1Mzk3MDAyZjdlNWU4ZmI5MTgxMjFkMGQwZjYwMzc0NzI1Y2Y3YzhmIHJlbGVhc2UzMS1tYWludAorNzU0OTUgMGY5ZThkM2VjYWMzOGM1NzYwNzBmNTU1NTI5YTc5ZjY5MjJjMWQ1OCBweTNrCis3NTQ5NiAyYzYwYWM0ZWQ2NWY2OTAwYjg0YWJhYWNjOWE5MjQzYmU0MzRiYWUyIHB5M2sKKzc1NDk3IGVhMWZkYWZiZTRmZTI0NThhYzE3Mjg3ZTBkNmM3MDllZDAwZmNlNWMgcmVsZWFzZTI2LW1haW50Cis3NTQ5OCBiZmU3NTZlYjA5ZmFhZDA1ZTdhZDBhOWE1YTA4ZGM2N2JlMTNmYmFmIHJlbGVhc2UyNi1tYWludAorNzU0OTkgYTBlNDFkZmI5NzJiNTE4NzgzMzljZmFiMWYxNzQ5ZDkwNWJmNWVkNyBsZWdhY3ktdHJ1bmsKKzc1NTAwIDM4NjQxNGI4NDZlYmNjZGNjNzg0ZWQ1ZDc3MDEzMGNjZTY1MjNkZGUgcHkzaworNzU1MDEgMjVlZjZmNDgxOGEwNTc4OTRiZDlkNzcwZmY5NzQ4OTdjMDg1NjQxNyBsZWdhY3ktdHJ1bmsKKzc1NTAzIDA2OTk5MjUzOTg3YmI1Mzg1ZTcxOTcyZTUwYWRhNjUxMDM0M2Y5MTUgbGVnYWN5LXRydW5rCis3NTUwNCAyYTY4NTNhMTNhMmY3OTdkOWI4NDJmYzI2MDk4MTcyZGU3MDhhNDRjIHB5M2sKKzc1NTA1IDNjY2QxZDZmMDVhNmI1YzcwYzVhNWQ5OGY0ZjNjNGExMTg2NjBiMTQgcmVsZWFzZTMxLW1haW50Cis3NTUwNiBkMTY2NmNjN2JjNzRmM2FkOWZlNGZjZjFmMGI4ZTQ5MWU5ZGJhNTJhIGxlZ2FjeS10cnVuaworNzU1MDcgZDg5ZTRhNGUwYjIwN2ZkYjQwYzZmOTkyNzU4M2NhZGI5NTQwNmYxMSByZWxlYXNlMjYtbWFpbnQKKzc1NTA4IGVkOTkwMjZlMDdmY2RkZTg4NmM3YTFjNDA3YWZhOTllMzA4NWQ3ZDcgcHkzaworNzU1MTAgNzljYjA3ZmEzNmVjMTBlMDAzYzZhMDU2M2E5MWNlZWRjYzE4YWMyZiBsZWdhY3ktdHJ1bmsKKzc1NTExIDY3NDljOGFkYzQ5ODU3Y2RkYzIxZWVkNmM3ZGVmMDZlYjhjNmE3NjIgcmVsZWFzZTI2LW1haW50Cis3NTUxMiBlNjQ0ZWU0ZTc2YzdiY2Y3YWMxZjRlNTU1N2MxNjU0ZmMwMDNlM2RhIHB5M2sKKzc1NTEzIGY0MjYzYTliZDhhZGRhNzNhZDRhNTQ1YjIxYWQ1NmIzMTkzOGMwMGEgcHkzaworNzU1MTQgOTgyNWVjMjI4ZWZiMTJjYjJiZjY3ODEzYjY5NzhjZjI2MTRiNTFlZiByZWxlYXNlMzEtbWFpbnQKKzc1NTE1IDM3MTkzN2JhNmZhNjJjYjBiYzhmNTc3NmNlNjlkODZjMTRmNjg3OGIgcmVsZWFzZTI2LW1haW50Cis3NTUxNiBkOGE3YjMxNGZjNTA1MDEyNTM5ZmJkZTVkMWQ1Y2EzOGQ1MjhjZTI5IHJlbGVhc2UyNi1tYWludAorNzU1MTcgNzE4ODAwMjlmZTc1NjJhNDM4MGUyMGNhOWRlMWJhMzIzODlmMWQxOSByZWxlYXNlMjYtbWFpbnQKKzc1NTE4IGYzMDY2N2NkNDA0M2M0M2I4OWUwMzQ4OTBlOGIwNDY2OGNlNDBmNzggbGVnYWN5LXRydW5rCis3NTUxOSAxNjBmMTZhOTFlZTczODVhNTBiMzZhMTNmMWFiZDI1ODNiMzgyNWM2IHB5M2sKKzc1NTIwIGJkNmRlZTZhNzhjMzk1ZWM2MTdlYjQxZjI2YmJhZDEwYTZlODdmYWQgcmVsZWFzZTI2LW1haW50Cis3NTUyMSA0MjMwM2M4Y2FiMzE1ZWJlNzBhOWJjNGM4YjExMWM3MWU0NzI2YmZkIHJlbGVhc2UzMS1tYWludAorNzU1MjIgNGE5NTQyYWNjZDEzMzQ1ZTc1ZTBiZmZkOTdkZjU1Y2ZlMTg1YTY1MCBweTNrCis3NTUyMyA2NzBlMjIyYWZkNDgxN2QzOGFlMWJiOGU5NjQ5NmQ3NGQyNDk0NTY0IHJlbGVhc2UzMS1tYWludAorNzU1MjQgM2RhYWNkOTg5MjVkNzg2Nzc3ODA5NTIxN2RmYTdhNzE3NTZkYTNiNSBsZWdhY3ktdHJ1bmsKKzc1NTI1IDczMjcyYmQ5NGQ3YjAzYTE5OTc4YWRlODRmYmYwMDg5NzFiYzY4MTkgcHkzaworNzU1MjYgMzQxODJmOTg1ODliOGM5YTIzOTBiOTA2YTM2ZjczNmI3MDA0YTc5MyBweTNrCis3NTUyNyBmNzQwMzBiYTY2MTA4OGY2ZTI5MjA3OWEwNzk4Y2E5ZDk2YjI0YjJhIHJlbGVhc2UzMS1tYWludAorNzU1MjggOTBjMTBkY2IyOTEzMzkyMjIxOGE3ZTFkNmQyOWUyNDg5NjE4NzA3NiBsZWdhY3ktdHJ1bmsKKzc1NTI5IDQzZDBiNDcxMDZkZjhiOGVlZGVkODU3OWYxZjY0N2NkOGQxMDNmOTcgbGVnYWN5LXRydW5rCis3NTUzMCA1NTQxZTQyZTFjODExZDFkYmU0NmUzOTNlMzcyM2EwYTY0YzRkOWZhIHB5M2sKKzc1NTMxIDg1Njg1ZTdkNzJjNzE4NGJjNmI3MzlhNTgyZDBlYThjZmUxYjFiZTkgbGVnYWN5LXRydW5rCis3NTUzMiA1NDAzMWVjZTQzYTMzYWNhMTZkYzA5ZjMyYTEyNDc3ZTNlYTZiNTZiIGxlZ2FjeS10cnVuaworNzU1MzMgY2FmM2M5M2QwMTkzNmE0YjJlNDdhZTYyZTg1ZTc4Y2Y1OWFhNTVmMiBweTNrCis3NTUzNCBlNmM0ZGJiNWRiMDJlNTA4YTQ5ZTc5N2ZhZjkzNDYzNjA1MDMxOTBjIHJlbGVhc2UzMS1tYWludAorNzU1MzUgN2FkNmU3OGE5YzdkY2RiMTU2ZGVkYTJjYzQ1NWEyNjhjODI1ZjZlMyBweTNrCis3NTUzNiBjZWM3ZjRjNTg1NDQxNDI5MGY3NTZlNTYwNDM3Nzk5YWY3NzZiOTBmIHJlbGVhc2UzMS1tYWludAorNzU1MzcgZWRmMjI2MzdiZDkwOGQzN2M5NzQwODU5MTZkNmI3OTY2NGU3MWUxZiBweTNrCis3NTUzOCAyZjE0YjBmNDU1MWFmMmEyOTAwNzM3ZWMxYjQ5ZWQxNjRhNWRiZDQ4IHB5M2sKKzc1NTM5IDkxZWU4MWYxYTUyNDJiNjZlNWJjOWY1ZTUyNjAwMGY2MjNiZWY5YzYgcHkzaworNzU1NDEgN2FlNmQ1ZTRmNzk4MzVlN2I0MDdmOGE3MmQwOGFmMzI3YzIzZDI2OCByZWxlYXNlMzEtbWFpbnQKKzc1NTQyIDk1YmQ3MGQ1ZDcxNWNmMDhkYjUzMWQ1ZTdjNzIwYTk1Y2RmZDdkZDkgcHkzaworNzU1NTEgYmRjMzkwNzIxZjk3NWM4ZDlmNjEwZTNhZjg1NDA5NDA2OWI3ZWFiYyBsZWdhY3ktdHJ1bmsKKzc1NTU2IGEyMTk5ODg5M2IxZGU0NjYzZGJlZjFiOGQ5ZDA3ZTI5NTdlNDgwMzAgcHkzaworNzU1NTcgOTQxZjFiZTQyM2FhMTg4NzFlYmQ5ZjUxYWRhMWUzNmVmMWRkMDA5MiByZWxlYXNlMzEtbWFpbnQKKzc1NTYxIDFiNjAyYTJkODFlZjUxOGI3ZTI4NzI0MmExNjcyYjU2ZTFkYzgwY2YgbGVnYWN5LXRydW5rCis3NTU2MiA2ZTRhNDkwZTcxNDcxM2VjMDRhN2U0NTgxM2M1MGMwNjg1ZDhkZjRkIHB5M2sKKzc1NTYzIDI2MDA3Mzk1NjA3ZTg5ZGMzZjk5NjExMDk4NDhjMGMzMGIzZGYxYWEgcmVsZWFzZTMxLW1haW50Cis3NTU3MCAxMjA3OWMzZDRiNzc5Y2NjZmJmMmUzYWQzMDViMTkzY2UzN2VlYTk1IGxlZ2FjeS10cnVuaworNzU1NzEgYmY3NjI0MTIwZWM3ZmUxYWFlMDg2YmRhMGJlMjM4OTYwZWUzZWQ4YSBweTNrCis3NTU3MiAwMjk5OTUxMzkxZTM2YWQyMzE1ZGQ0MGY1ZjRmNTg0M2FmNzNmNDE5IGxlZ2FjeS10cnVuaworNzU1NzMgYjNiZWZlMGYyYjhkZGMyZGU0N2JmMzNmYTM5NThkZDZjYzM5MGYyZCBweTNrCis3NTU3NCAzY2ZkMjBjZDY0NTlmNWNjNDJmY2JhMWYwNjJjODRiN2YzMjA3NmU1IGxlZ2FjeS10cnVuaworNzU1NzYgMTdjZTk0YWVlNzA0NmFiOTBmMjgxNGJmMzY3NDljNDdhOWNjM2QxMiBweTNrCis3NTU3NyAxZTcwMzVmYTYxNTRjNmY2NWYwNjBmNmQ5YTUyYzNiMTI5NDU4OGU5IHB5M2sKKzc1NTc4IDI5YjNlMTI2YzBjMjQ2NzJmN2Y0MzhhMTQ4ZWM1YzM4NjgxMzMwZWIgcmVsZWFzZTMxLW1haW50Cis3NTU4MCAxYjk0NDQ5N2U4MWUxZGJmZGYyNTgyMGQ1ZTVjNzA4OTE5OTUwNTVmIGxlZ2FjeS10cnVuaworNzU1ODEgOGMxYjYxZTc0NjNhNDFmN2YxZDdlNmM2ODkwNDBiYWMyNzVjMjU1MCBweTNrCis3NTU4NCA1ZDhiMmQ2ZGNkNjIyOWRlYTJjNGI1N2YxOGRjNGI5NTI3NjA3Mzc1IHJlbGVhc2UyNi1tYWludAorNzU1ODYgNzE2ZWMzZWQzZmNmOGZhZjVlM2RiOGJhNWFmMTkzOTEyMDE0YWMxMyBsZWdhY3ktdHJ1bmsKKzc1NTg2IDQxNGUwM2MxNDgxNTlmNDliZDZkZWJmZTVjYThiYmNkOGZkZTA3OTcgcHkzaworNzU1ODkgZWJlMTljNGM3MWY1NzA2Yzk3ZTJiYTdiODNhYTgzZTc4NzJlNmE5NiBsZWdhY3ktdHJ1bmsKKzc1NTkwIGE5YmE2MzdkNGRjZDM3NTY1NGM0YmMyMDE0YzM5MDRlMjIxOWRhNjkgbGVnYWN5LXRydW5rCis3NTU5MSA5NzgzNDljMDc0Y2UwODI4YmY1NWMwMWEyYWExZTYwNDMzNjAyMDU3IGxlZ2FjeS10cnVuaworNzU1OTIgZmU4NWVmMjdkYzQ3OTFlNjZkZjU0YzlkMTcwOTU0NTc1NjRiNmJiMCBsZWdhY3ktdHJ1bmsKKzc1NTkzIDVkZTFhYzI0MmJmYjU2M2Y0NDVmNzM2YjU2NDhkNzVmOGFhMTdjZWMgbGVnYWN5LXRydW5rCis3NTU5NCA1OGJkYTEyMDVhY2Q5ZDg5MWMzNGUzODk4NTdjNGZiMmJhYzcwMDdhIGxlZ2FjeS10cnVuaworNzU1OTUgMGJhOWIyMTcxODFlZDhjNTYwNTgzYzk4ZjkwZTljNmFlMmVkMmQ0MyBsZWdhY3ktdHJ1bmsKKzc1NTk2IDNjMjZjNmI0ZGI1MDBiN2NjYWY0MGYxMWJlNTBmOGZiNGQ4M2IzNzggbGVnYWN5LXRydW5rCis3NTYwMCAwN2VmNTk3NjZiMDI2ZTAzMjE0OThlNjMyNGEwMTgxNTRmMmJhZmUxIGxlZ2FjeS10cnVuaworNzU2MDEgMjdlYWFjMDdjNWQ2YTg5YTFhNjFhMDc2NzY1NDNlZTgwZGRhNmVkZCBweTNrCis3NTYwMiBmNTU1NjhiMzk5MjU2YzI3MzE4Mzc4YTFkZWNkNzI5NGY3MjM1OGIwIGxlZ2FjeS10cnVuaworNzU2MDMgMDY1MzQ4NjkzNWI2NDE2OGRlMzQ0ZDBhNTIwNjg2YTAxYmQ4MDljYiBsZWdhY3ktdHJ1bmsKKzc1NjA0IGJhY2Q0ZDQyMjU2YjY2NzhmODU4MTA5ZDRmYjcxMWJjNDMzMDBlN2YgbGVnYWN5LXRydW5rCis3NTYwNSA3MmE1ZmM3OTBkMDFmYzIzMjI4NmJlYzc3ODZjN2ZkYTg3NmRkZDc0IGxlZ2FjeS10cnVuaworNzU2MDYgOGE1OGE3ZWM5MmRjNTZkNjlmZDg5YjVhNWE0YTI3OGRiNTM1MjEzZiBsZWdhY3ktdHJ1bmsKKzc1NjA3IDRjZmFmNmFlYzVlYmM1NTk5MDVmMjljNjRlOGY3YjUzZmIzZDNhMTUgbGVnYWN5LXRydW5rCis3NTYwOSBjNDM4OGU3ZTc3ZTlmNjZmNjQxMjA2MDFjZjYwZTc3ODQxY2IyYTQyIHB5M2sKKzc1NjEwIDU2OWEwZDE3MGZhYzcyMDM0NTIyZGI2OGU0OTU0YWU5ZDVjODRkNzMgbGVnYWN5LXRydW5rCis3NTYxMSAxYjg4ODM0MzAxMzkxMWZkZmI2ZTM1NTc5ZjBhMTJjNDllN2M3YWQxIGxlZ2FjeS10cnVuaworNzU2MTIgYTE3YjU4YTQ4NmY0MGI1ODUxYzY0OTZlMzAyNTJjZjkzYzUzMTVjZCBsZWdhY3ktdHJ1bmsKKzc1NjEzIDlmZmExNTEzMDk4NDY1MzE1ZTdjOTc1NWY2NjFmYzVkN2ZmZTk1ZmUgbGVnYWN5LXRydW5rCis3NTYxNSA2ODI3OWMxMzNmZDk5MjJkNDYxNzYwNjYxZmYwMjlkMjkyNzk3MDY4IHB5M2sKKzc1NjE2IDMyMWU2MzVjOWFiODI2YThhZmE1ZjNmNDY4ZDA1NjQ1NjUzOTIyNWMgbGVnYWN5LXRydW5rCis3NTYxNyBmM2I3YmQ2ZTdhZGQ5ZmE3MTdmMTExYzhlMzY5MjQ5MWYyYWRhNGU0IGxlZ2FjeS10cnVuaworNzU2MjAgZGIyMWMzYzAwOWRiMzkzY2UyN2Q5NzM3YTExODFhMjYwODliNmQyOSBsZWdhY3ktdHJ1bmsKKzc1NjIxIDNjMDY2NDQ4MGY3YTE2MGJlM2E0MDNkN2NhMTc0NGY0NDE5YWU1MjcgcmVsZWFzZTI2LW1haW50Cis3NTYyMiA4ODE5NThkYTIxOWE3YTM0ZDgwMTdkZjExMzFjNDJkMmMxNjVkZDE3IHB5M2sKKzc1NjIzIDZkMjcyZmQxY2RkMWU3YjQ1Y2RiZDI4NDc4ZDE5ZjlkZTVlMDcwZTIgbGVnYWN5LXRydW5rCis3NTYyNCA5MmRkZTI4MjE1M2RlZjU0YjQ2NDlkMGQ0NzgyMzliYzc0Zjg5MTIzIGxlZ2FjeS10cnVuaworNzU2MjUgOWViNzllOTQyMDRkMjY1Yzg5ZjQ3OTM4ZjkxZmU1ODM3NDA0YWZiOCBweTNrCis3NTYyNiA2MjAwODVhYjQ5NWI0MTY0ODQxYTMxZTM3OTFiZWZmMTIwNWQ4MzdiIHJlbGVhc2UzMS1tYWludAorNzU2MjcgYjExZjAyY2IxMTI0NGY3ZDJmNTVlZWExNWNkYTVhNmY2M2U2OTliYyBsZWdhY3ktdHJ1bmsKKzc1NjMzIDlkZjMzOTM3MTcxZjY1MTZjYjUwNzExYzM0NTNiYjk0N2ZlM2NiZWYgbGVnYWN5LXRydW5rCis3NTYzNCBmMDkxNDQ0ZGVlYTAxMDQwZmYyZjgzYjhlMGJmMDE2ZWJkOTU2YjJlIHB5M2sKKzc1NjM1IDk2ZDZjMTQ2Y2ZhOTE3NjFhODViZjM2NDIzNTZjZDMxYjFhODY1YjEgcmVsZWFzZTMxLW1haW50Cis3NTY0MCBmMzhkYWJmMjQwY2JhZWM0MTUzZjRjNDdkYTVlODliZmUyMjk3YzZlIGxlZ2FjeS10cnVuaworNzU2NDEgMzViYjQzMzg2NzM0NGZlMzI3YmU3MTNmYWQ4MGZhNzA0ZDBiZTM5YSBweTNrCis3NTY0MiAxNjFkMzMyYWZjODg0ZDdhNzQ3MjRiY2I0ZDkwNDQwYjEzNjczMTg5IHJlbGVhc2UzMS1tYWludAorNzU2NDcgODBmMjI5M2ZkNjZhYzg1MWI2YTQ4NWU3ODAxNDg3YTZkZGJjNjY3ZCBsZWdhY3ktdHJ1bmsKKzc1NjQ4IDEwZTcyOTM5ZDJjZjkxNjZkYjVkOGEzMDdhZjk4ZjFkMmMzZGQ1YjkgbGVnYWN5LXRydW5rCis3NTY0OSA5YTkxZDQ1MmEwZjg4ZjdlODY1ZmE2MmEyN2FiZWQyZWE2NDc0NWVmIHB5M2sKKzc1NjUwIDJmMzA3YzdhZGI4ZmM1YjEwNzc1MjcyMWZmZWM0MjIxNDE1OGYwMDMgbGVnYWN5LXRydW5rCis3NTY1MSAyMTQ2YmJkZjRlZDdkYTM4YjlkMmQwZTAyYjYxNWQwNmFjMTMzYWE0IGxlZ2FjeS10cnVuaworNzU2NTIgMGM5Y2ZjN2YxZTk1Yjc3ZjVjOGM4NzVjYmJmMzZhY2ViODQ0ODk1ZCBweTNrCis3NTY1MyBlYjkyNWFkYmE4ZjkwMTRjNGMyMWUzYjRmNGM1OTJjOTBkNWY4ZDRiIGxlZ2FjeS10cnVuaworNzU2NTQgMjY0NjA5ZmJkYTQ4MTU2MzdiNThhYzQ1YjliNDRlZDQwMWMxNGU3NCBsZWdhY3ktdHJ1bmsKKzc1NjU1IGFlMDJiMTY4MTYyY2U4ZjRkZGVhMjE0MGExNjI0OThjMjNiMTBkNDQgbGVnYWN5LXRydW5rCis3NTY1NiBjNzA0NzUwZTZmM2U1YjA1MDZlMTc0Y2QyZmE0YTZjOWZiNDk3YTI0IHB5M2sKKzc1NjU3IDZkMjljZTlkY2E5MDJkYTNmMjFlY2IwNzUxZjIxNDYxNmQ1ZmJiMWMgbGVnYWN5LXRydW5rCis3NTY1OCAyYWIwOGM5MTk2NDgyNGNmMDVhYzk1Yzg1YmFkZDM5Y2FlN2ZjYzcyIGxlZ2FjeS10cnVuaworNzU2NTkgMjRkNDNhOTE0MmQyNWFmMGViMjAyM2Q0MDAyOWY5MWI5M2Y1N2RlNCBsZWdhY3ktdHJ1bmsKKzc1NjYwIGRhYmUxZjkyY2EyNzQzNzc3OWExODM3ODM3Y2YzZWI3NDBjZGUyYjQgbGVnYWN5LXRydW5rCis3NTY2MSA3MjA2NmU1Yjk0MjE3ZTEzODZhOTg1NjU4ZjM3ODRlOTBhYzQxYzJlIHB5M2sKKzc1NjYyIGNiZTM5M2ZhNDRmOTYyODg3N2IzMzBlNzJlN2MyNDkzOGMxMjRlYTkgcHkzaworNzU2NjMgNTY3YjBmMzRiMWViMTNlMzIzMmY3MTNlYWEyZTk2ZThmZmJmN2NiMiByZWxlYXNlMzEtbWFpbnQKKzc1NjY0IDA2ZTY2MzY2MThkNzIxYjgzZDQ0MWRjZmE2OWNmZDdjMjk1MTUyN2UgbGVnYWN5LXRydW5rCis3NTY2NSBjYzg4YTcwMzQyOGQwMTFmMmJhODRmZTNlMzljNTZmYTVjZmMwOTU3IHB5M2sKKzc1NjY2IGFhY2VlOTc0OWQxNTQzNWE5NzFjNzk0NmJmZDBjMDdlODNiZTUwMmIgbGVnYWN5LXRydW5rCis3NTY2NyA5MmYwYTFjYTRlOTg2ODQzZDNjYjE2NzJmNmI1NTEyMjEzNjg5OTE3IHB5M2sKKzc1NjY4IDBjMzg0MDhhZDgxOWUwZTRiMjQ3MWIzM2RhYzZlNjI2NmVjMDQ0ZjMgcHkzaworNzU2NjkgYjJjOGI5ODQyNTBhYWY5MTc5YzMxMTE5NjIyZmRiYzdiZDM5N2RkZSBsZWdhY3ktdHJ1bmsKKzc1NjcwIDRkNjVmMTIyYjJiM2I3ZjRmYWRhZTRlMGU1MTgzM2IwMTE4MTkzM2EgbGVnYWN5LXRydW5rCis3NTY3MSBkYWQyMmExZWQyOGIyZjZmNWI1NzFjODdkNmQ3OWZjYzdhZWJiNGE0IGxlZ2FjeS10cnVuaworNzU2NzIgNWNmMzI0MzMxNWI1YmI4YThiN2UwM2E3NGUzOTg1YmRjMjA4MTZhNSBsZWdhY3ktdHJ1bmsKKzc1NjczIGYwMjE5OTFlY2Y4ZDZiMzFlMGZmZDlmMDY1MjllMTczYTMyMjI2YmQgcHkzaworNzU2NzUgZWRmMzVjM2E0OGFiOGIyNGEyYjU3NjBhMTZjNzdlYTA0ZWQ3MmI5OCBsZWdhY3ktdHJ1bmsKKzc1Njc2IDQzZDQ3Y2I2Njg4Y2ZkZTA5OTUwOTZjOTZkNDMzZTRjODMyZjVjOTMgcHkzaworNzU2NzcgY2I3MjFjMzE5NWZjNzRkZjczMmQyOTJjNDk1N2JiZGM3ZGFjYjI5YyByZWxlYXNlMjYtbWFpbnQKKzc1Njc4IDE0YjU1YTRlODcyNWFjOGMzMzQ0M2U2NjYyMGJkM2RhODI0YTY5NjQgcHkzaworNzU2ODAgYjU0ZGE1Y2FhYjM2NTA1MDExNjZhMTM5NmQ3NzAxYmYyZjhiNjY3NSBweTNrCis3NTY4MiAwYzEyMzhjYWJlOTIxNWViY2RkYTVlMWU5N2UyNWFhMDA2ODZmMDkwIHB5M2sKKzc1Njg0IGY1YzU2M2E3ZGU3NWQzOTJjYjI0ZTkyYjE1MTc2Mzg0OWVlNjAzZjAgcHkzaworNzU2ODYgNmNhNjQyZDRmNDJmZDVmODcwNTQ2NjhlMWMxMGM3YWIwODA1YTM0NyBweTNrCis3NTY4NyBjNzFiYTVkMWYxN2QyMmYxNjg3NWNmZWYxOTI3YjNlNmZhZTNkZDhlIHB5M2sKKzc1Njk2IGQzZjZmYmViZWFjOTAzZDUzOTdlMDkxMTk0Mzc0ZWIxMWIxMTIxMTkgbGVnYWN5LXRydW5rCis3NTY5NyBmYmU2YjI2NWJkMWEwOTUzYjY4N2YyNzI5ZTg0ZDE0MTM1MWI4MTAzIGxlZ2FjeS10cnVuaworNzU2OTggNDgzNGE0Mjg1NDExYjkxMjM5Nzc0NzJmZDYwNGZiNTA1MWVlZmE2NyBweTNrCis3NTY5OSBhMzUzZTEwOGM3ZTQyMzlkNGEzOTY0OGY1ZDgyNzUxMWRjNTQyOTY0IHJlbGVhc2UyNi1tYWludAorNzU3MDAgOTc3MzZjNzg5MGE2YjUzNmFjYmE0ODAyZWQ2OTAyNzBhNThjNGM5ZiByZWxlYXNlMzEtbWFpbnQKKzc1NzAxIGRkNDY2YWMxOTJiZTlkZWZkOTBlYmYzNmU4ZjFiMWI0YTg2OWU1ZTQgcmVsZWFzZTMxLW1haW50Cis3NTcwMiA4YWM5MDcwMTU2MDU5NTVlM2M5MDY0MjE4ODM3OGUzOTMxZTY4NDQxIHJlbGVhc2UzMS1tYWludAorNzU3MDMgZjhlNjVjYTNmZDM5Y2QwYjNlMTlkOTYxMGY0OTVlNWY1NjI3YWQyOCBweTNrCis3NTcwNCBjYjljNTdlMmViZDM0NzkzMGYwMjA5ZjRjMjliNDMwMTIxMTI4MTY0IHB5M2sKKzc1NzA1IGEzY2I4MTJkODBmOTA3NmM1YjNhMDM0YTI4OGY5MzFhYTAzNmZhMGYgcmVsZWFzZTMxLW1haW50Cis3NTcwNiA4ODAzYzNkNjFkYTI3NWM3MWNhYmU5ZTlkMDI3NGRhYzk5MDJlMmMwIHJlbGVhc2UyNi1tYWludAorNzU3MDcgZWM0YTFiNGVjYjMxNDA4ODQ0YWY4NGM2NzIyNGZkNTAxYjUzYjQ4MSByZWxlYXNlMjYtbWFpbnQKKzc1NzA4IGI1MTk2MDhhOTcwMWYwMTA4ZTdhMTYxODNjZGRkNWVmMzFkMzViY2UgcmVsZWFzZTMxLW1haW50Cis3NTcwOSA3YjYwMzY4MGJmMjk1YTIwMDI0NGQwYTRkNjNlNTg0ZTcyZjMyMWUwIHB5M2sKKzc1NzEwIGQzY2Y4ZWI4NzI3NGE2YzY0ZjE2MmM3OTRmNGQ1YmUxYWNkZjE1YzYgcHkzaworNzU3MTEgNzZjNjY2OTBkMWVlYTUzNzZlOTI4ODkxOTAzZmI1YWNmYTI2OGI3YiBsZWdhY3ktdHJ1bmsKKzc1NzEyIDhlZmY3NTlkMDgwZjlkYjFkN2JkN2JmMzhhNjhhNWFhODgzZjYzMTUgcHkzaworNzU3MTMgOTcxMzkzZjYwYmQ4NzRkYzQ4MTY1YmJkN2FkNDg2MjQ3MDA1MDIwZCByZWxlYXNlMzEtbWFpbnQKKzc1NzE0IDZlNGQ4OTY4ZTI0Njk2YmRhOTI4Zjk0NWYzMDRkNTVjZTFhNTBlZWUgbGVnYWN5LXRydW5rCis3NTcxNSA3ZGM1N2I5OTFkODNiZGRkMmM1ZjUyYWQ2ZDYwOGU3NWZhYzhmNWNhIHB5M2sKKzc1NzE2IGY1OTg4NDNmMzY5NWJjY2MxZjhjMzA5YzllY2Q2MzFlZmEwODhhYTMgcHkzaworNzU3MTcgMDk1YWY5OWU2YjY0MGY1Mjc3ODQ1ODdhYjZiOWRlMmE5Zjk4MWVkMCBsZWdhY3ktdHJ1bmsKKzc1NzE4IDM4YTU3NTRiMzAzNzcxZDgxNWQ0M2Y1MGIzZTI3OGE4NzUyMGY1MDYgbGVnYWN5LXRydW5rCis3NTcxOSBmNGM3ZmQ4NWYyMzI0MDk2NGE0MTM0MmU5YzY4MTVmOTAxMDZjMDc3IHB5M2sKKzc1NzIwIDM4ZmRhM2E0MmMwYjNmNThmNmE3NmNjMTIxNGI3ZWY5MGU1MDllYzkgbGVnYWN5LXRydW5rCis3NTcyMSBkYTk2YjNmZWFmNTI1Yjc2MWZjYTY0ZjI5ZjFkYTQ5ZDRhYmMzZWZiIHB5M2sKKzc1NzIyIDc0NDcyZGEwOWY2Y2RkZWI4NTE5Zjc2ZTY3Y2Q4YTViNDExNTczN2UgbGVnYWN5LXRydW5rCis3NTcyMyBiNTVjMmVlZTM0OGI1NjM2NjFkNjEwYzljYmRiNzY0ZjJkNjQ3NGZlIHB5M2sKKzc1NzI1IGYzYmY5MmNkMTE5MTc0YzM5YzBhNjg3ZTdmY2Y1NDIxZmFjMjhhZDAgbGVnYWN5LXRydW5rCis3NTcyNiA0NTAxMDVkZDljYTc0NTNkYzNjMGE3ZDIyMDY5MmI4NzhjMjdhYzM2IHB5M2sKKzc1NzI3IDZkYTBhZTY4MGZiNjAyZGNmYTY5YzRiNjAzNjc5YWU2OTJmZjZiYTggcmVsZWFzZTMxLW1haW50Cis3NTcyOCAwM2UxZGJlMmY0ZDU5YzgzODllYTQ1MjQ4NWRjZjgwYTZhZWJlNTQzIGxlZ2FjeS10cnVuaworNzU3MjkgYjUwNDE3NTZmZDkxNDNjODA1YmQ1YmI1ZTk1ZDFhYWEzMjQ1NDU1OCBweTNrCis3NTczMCA0MWJlMmM2OTYxOWIyYzZjNjcxMDJlYzdiYThhZmZlNTgzYjE4ZjFkIGxlZ2FjeS10cnVuaworNzU3MzEgYzU2NDE5Y2JkZDQ4NjQzNzE5Y2QzMzk5MTBiN2UwOGM4ZDI0ZWFiMSBsZWdhY3ktdHJ1bmsKKzc1NzMyIDZkMjM5NmVhN2IwM2I0NGI3NDdmYjFjNDI1ZmQ5MDMxOTg5Y2EyZTMgcHkzaworNzU3MzMgZTU1ZmZiODdjYjcwMmNjNWYzNTY5YjA4ODc1NmM2MDYwYTA2NTBhOCBweTNrCis3NTczNyA0Y2JlYTllNzgzNTY4MTgxMzFhZmE4NzRiYzJhY2Y5NjAwMGMxZDA4IHB5M2sKKzc1NzM4IDVhOGU4MTU5NGYwZjE2MWUzODNiODM3MjAyOWExOGI5NTNiMTM2NDMgcHkzaworNzU3MzkgMGIxYTA4ODAxMmM3NGEyMTdjNmQ5NzI2ZWRjMzVlMGIyOTY5NzhjMyBsZWdhY3ktdHJ1bmsKKzc1NzQwIDg3NTUwMDZlZGY5NzNkY2FiNTZhMjRlOGE4ZTNiMjBiZjIyZjEyNjAgcHkzaworNzU3NDEgODk2Zjk0NTQxZjcyZWYzNWJhZTE1MWQzMDFmMTc1ZmY3YzMzZmZkOCBweTNrCis3NTc0MiA0MjI1MmQ2ZDEwMzBhMmMyZjI0YjdlODc1NDVkNjdjYjQzYTA4MDgxIGxlZ2FjeS10cnVuaworNzU3NDMgYTc3ODE3MWM5M2RlNWVjNjliMWMzOGY1ODBkODcyMDhmODM0ZjUwZiBsZWdhY3ktdHJ1bmsKKzc1NzQ0IGJlNTRiNDA0ODc5ZTY1YWU5NTE2ZjliYzgwNjgwNzdlMzMzMDc2NGEgcHkzaworNzU3NDUgOTFhMGMzYzYwMjA5NGU1MWFhZmI5MzkyMDE0MjM3NzljYWViY2I1ZSBsZWdhY3ktdHJ1bmsKKzc1NzQ2IDU1ZDhhOTExN2RlNzgwZmY5YjlhZWMyYjlmOGViYmU3NzNhMWNmZjAgcHkzaworNzU3NDcgMTlhODMyYjg0NjRhMmVmOTAxM2Y4OTA3Y2MzNDE2YmRiYmEwYzQwMyByZWxlYXNlMjYtbWFpbnQKKzc1NzQ4IDQxNjlkM2NlY2I5ZGNkMjcyOTY5YzQ3NTAyNTI5MmJhNDYwOTEwMDggcmVsZWFzZTI2LW1haW50Cis3NTc0OSAyYWJjM2I0YmNlN2NmNTZhNWVhNGViOWZmOGQ0MjMyN2NhNjkzMTgzIHJlbGVhc2UyNi1tYWludAorNzU3NTAgMTdhY2RkNjU5ZWU5ZTUwZjBkYzlhMjhmZjk0YTE5YTBkNzgwY2UyOSByZWxlYXNlMjYtbWFpbnQKKzc1NzUxIGEwZWY0ZWY1ZmM4ODc1YWJmNzUzNDQyNjdjMjYzNjdjMzgyNWNiMzkgcmVsZWFzZTI2LW1haW50Cis3NTc1MiBmOWNmZWEyMDE1YjIwYTYxNDk3ZmVmMGY1MGNiOTRiOTIxZTJjNzY4IHJlbGVhc2UzMS1tYWludAorNzU3NTMgODE3ODFkMWUyZmI5Y2QyODE0ZTlmODgxZTFhZWQ2YjA4NDVhMDVhMiByZWxlYXNlMjYtbWFpbnQKKzc1NzU0IGMxYzBhMGM3ZjdiYzMwMjRmNTg5NWZjODYzNmQ4Mzg2ZDMyMzdkNjUgcmVsZWFzZTI2LW1haW50Cis3NTc1NSA1MjQ1MjY3NDVmMmU5OTQ3ZTUwYzVlNDMyZDJkNGVjY2NkNjRiZDhiIHJlbGVhc2UyNi1tYWludAorNzU3NTYgZmFjNGUzZmQ3NDdhY2YyYzkxNzA4YmFjOWEyZDBiNDdhZjczMDFiYSByZWxlYXNlMjYtbWFpbnQKKzc1NzU3IDI1MGJjODI0MmU3ZWFiZmU0NWZkZDgwYjYzMjc2N2Q4MjM5MWQ3MzAgcmVsZWFzZTI2LW1haW50Cis3NTc1OCAzZDU0MDQ2OTU4NWJlODNiOGMwMWIwNDZhNDc4ZTFhMzc1MGI4OTk2IHJlbGVhc2UyNi1tYWludAorNzU3NTkgODMwOWFkNmFlNGMwZTc4OGEyNDNjYzQ0MjkxNDRiZTY5NTNmZWE3NSByZWxlYXNlMjYtbWFpbnQKKzc1NzYwIGM3ZGNjMjIzZjkyNWQzOTQ2MWIxZTg3OWNkNzY0NzM4NmE0OWMwOTcgcmVsZWFzZTI2LW1haW50Cis3NTc2MSAzNTUzOTU0Mzg3ZmE1YjI2NjVkYzFmODdhZDQ2YjkzMmM4MGNhOTUwIHJlbGVhc2UyNi1tYWludAorNzU3NjIgMjZlYzhkYmQ2ZjY5N2VlZjNkZDg3ZjE4NzM4NTQzODZhOTIyZGMzOCByZWxlYXNlMjYtbWFpbnQKKzc1NzYzIGI3MThmMzE4OGM3NmZkYzM5YjIzOWYyMjRjNGRhYTU5YTQwNDU4MzkgcmVsZWFzZTI2LW1haW50Cis3NTc2NCA0N2UyYzE0YjE1MDMzNTAzZDEzNzg5ODIwOGRkODI1YTNiNmRjYWVhIHJlbGVhc2UyNi1tYWludAorNzU3NjUgY2NiZjdlYmVmNDc1MTI3MmZjMWJkY2Y1NDBiN2YzNzU2MzM3YzQ0ZiByZWxlYXNlMjYtbWFpbnQKKzc1NzY2IGM3NjM3YjY2YjM0YmJlMzdhMmZkZTc2ZTQ2Yzc5NTRkOTI3MzJiOTYgcmVsZWFzZTI2LW1haW50Cis3NTc2NyAwZGQ1ZDM2NzIxMzRkOGU1YTJiMTE2MTdlNWVmYmI0YTU3YjYyMTI4IHJlbGVhc2UyNi1tYWludAorNzU3NjggZjAwY2NmOGUxMzVlMTBhM2EyNWNiZDhiNzY2NTc1MWZkN2M3NmZhZiByZWxlYXNlMjYtbWFpbnQKKzc1NzY5IGUzZTUzYjg5YzE3ODQyOTUzMzExZTlmMjdhNjRiZjRhMjQzNmE1MWMgcmVsZWFzZTI2LW1haW50Cis3NTc3MCA2ZDQyZjFlZWY0NWQ5ZGJlNzY1MTU2MzEwYjc5MjY0MWY4ZDFhODAyIHJlbGVhc2UyNi1tYWludAorNzU3NzEgYmI4MTg4NzM2YTI5YjRhNjQxNDBmMTE1NzQzZmE3Mjc1Y2QzZjViMSByZWxlYXNlMjYtbWFpbnQKKzc1NzcyIDc4NmFiYWJhNDYyZDFlNzRkNjgzYjVmMzZmODEyNmRiNjNmNGI2MGIgcmVsZWFzZTI2LW1haW50Cis3NTc3MyBjODYzMGY3MzA5MDcxOGViMjZkMWU2N2E4YTIwN2ExMzc0ZGFhMjQ2IHJlbGVhc2UyNi1tYWludAorNzU3NzQgMTMxNDcyN2MwOWFlN2E2OTM1NGM5NzVhOTRlOTY3MGYzMDhjN2Y3YyByZWxlYXNlMjYtbWFpbnQKKzc1Nzc1IDA5NmI0MmNjYjI1OGY1YzYzZDBkZmZmMDk2NTU5YzVkOTJhZWUwMDcgcmVsZWFzZTI2LW1haW50Cis3NTc3NiA4YWRmOGVmN2E0ZGJhYWM4YTBjODBiZTNjMDViNGUxYzUzNGI2OTJkIHJlbGVhc2UyNi1tYWludAorNzU3NzcgMDdlM2MwYjQxZDUwMDNjYzVhODU2YTc5Mjc0M2IwOWZjMDY2OGJkZCByZWxlYXNlMjYtbWFpbnQKKzc1Nzc4IDY4ZjcyODhkMTU1Y2UzYzE3ZmUyM2ZmN2ZhMDFiY2Y4MDk2NWFkZmEgcmVsZWFzZTI2LW1haW50Cis3NTc3OSAwZDUxYTVkNTZiNWEyMjE1OWRjNmQwYmZiNWY5ZDgzMjlmZjdmOTM0IHJlbGVhc2UyNi1tYWludAorNzU3ODAgYTFiMDkzNmIwMjdjZjNmMDZhOWU0ZTU5MDY4OWM0ZGE2Y2M2OTJjYSByZWxlYXNlMjYtbWFpbnQKKzc1NzgxIDVkOTNjNzU0MDU3Y2YyNjY3NWMwZjRjNjQzMTIyNDNmODAwODE2YjggcmVsZWFzZTI2LW1haW50Cis3NTc4MiAxMjdkNjIzMzk2YWI5M2FjOTdhMDViMWRlNDEwOTBjOTNjYzYwZDJjIHJlbGVhc2UyNi1tYWludAorNzU3ODMgZmFiNjYwYzJlZjg4ODdiY2M4YjM5ZmIwODBkZWY0OGFmYzVkMjIxMiByZWxlYXNlMjYtbWFpbnQKKzc1Nzg0IDY2ZGU3MTExMjMwYWI0NWQ0OTM2ZmIzMjg1NGI5OWQ1NGNmOTM2ODEgcmVsZWFzZTI2LW1haW50Cis3NTc4NSA2YjA1ZDQ4Y2NhMjg3MjA2MzIwMzM2OTEyYmY2NDQ2ODU1MTA2Nzk2IHJlbGVhc2UyNi1tYWludAorNzU3ODYgM2UxNWEwN2EzMmZhZjlkNDA0Y2YyMmU2YzQ2ODBlMTYzNTg4ZGFiMCByZWxlYXNlMjYtbWFpbnQKKzc1Nzg3IDliMjRkMDEwMTMzZjBhNjEyZjI5YzNjMzYyMTRkZmZkYTUyZjE2YmEgcmVsZWFzZTI2LW1haW50Cis3NTc4OCA4NWFhNzA2ZjcxMjZkMjExNDA2OTk5MTBmODc3ZjA5MzkxNzEyNTExIHJlbGVhc2UyNi1tYWludAorNzU3ODkgNDg1MjEyMzNiZDZlOGQ0ZDllMjQ3MDY2ZTFmZmI0ZDI4YzVmOTg0ZCByZWxlYXNlMjYtbWFpbnQKKzc1NzkwIGM0YzQyOWIwOGE1NzU5OTIyYjEyYzU4Nzk4NGVlZTRjYmMzMGRkMGYgcmVsZWFzZTI2LW1haW50Cis3NTc5MSBlZjMxOTQ3NDkzNzcwMDAzOGY0YTE0Zjg2ODExNDY0MGRlMTcwYjhkIHJlbGVhc2UyNi1tYWludAorNzU3OTIgYjdiODk3MGNkNWE1NzY0MDRkNGU4MjAzMDQwNjA1NTc4YTM5OGY1MCByZWxlYXNlMjYtbWFpbnQKKzc1NzkzIDI4ODUyNTBiYTVmNDlmNTVkZmFlN2M5MDk4OTc0YTk4MGYxYWNiYmEgcmVsZWFzZTI2LW1haW50Cis3NTc5NCA0MDJkYWRjN2I0YTg2MjQyM2VlZTExYjQ1OWIyNjFlNzM5MzUxNGI3IHJlbGVhc2UyNi1tYWludAorNzU3OTUgMWQ2OGIxZGM0MTA5MzZmYjg3MjFlODhlODQ2NzEzNmQ3MjUzMzIwMCBsZWdhY3ktdHJ1bmsKKzc1Nzk2IDhkOWVmNWE3OWJjN2E1OTMxOGQ1MmFmYTQ0YjU3YTllNTM4ZDZkOTUgcmVsZWFzZTI2LW1haW50Cis3NTc5NyAzMDM1OWMzM2I2ZjY3N2YwYzRjNTQ4NjU3MzI3Mzk4Nzc0MzQzYzVlIHB5M2sKKzc1Nzk4IDk3ZDdjZDM2NWRkNTM0NGY1MWE1OTBkOWYyNTIyOWZiMWQ2OTJhNWQgcmVsZWFzZTI2LW1haW50Cis3NTc5OSA1OThiOWJlZTc0ZWM4ODJjMmZiMjEwMjVkZWI3MjNjZTAxOGViNzAxIHJlbGVhc2UyNi1tYWludAorNzU4MDAgNzI4NDUwN2JhZGIyYTA5NzVmMThkNzhhMWY4NGY4ZDgyY2VkYzUzOSByZWxlYXNlMjYtbWFpbnQKKzc1ODAxIDgxYjYzYWI2ZDQ1ZmI0YjNmMDdkNjMwNThkNjZiMDZkM2MwN2ZiYzggcmVsZWFzZTI2LW1haW50Cis3NTgwMiA1YjI5NTMzMDgzMGEwOTY4NjRmOTdkYWNmMWQ1M2RiNDg0ODQ1MjNkIHJlbGVhc2UyNi1tYWludAorNzU4MDMgZTk0MDhjYjNlMjc0ZTE1MDI1MzBlYzM1Yjc3MDQ1NmMxYWY1ZmFhZCByZWxlYXNlMjYtbWFpbnQKKzc1ODA0IGJkNzc2ZTAxOTkzYWNiOTFhMDA4OWRmYTg0ZGQwNzAxYWE2Y2Q5NDQgcmVsZWFzZTI2LW1haW50Cis3NTgwNSA5ZWQ4OTkxYTkxNDFjNjQwOTBkYzI1Yzk2MTliNzgwNTAzMzliNzYyIHJlbGVhc2UyNi1tYWludAorNzU4MDYgNjcwY2FhOTc3NWY2MGFiM2RlNTY2MjJmZmZjZTkwOWY1ZDIyOTlkMiByZWxlYXNlMjYtbWFpbnQKKzc1ODA3IDc2NGFlMmVjNGE3MDYzMWIyMzQwNjBhZWI1NDNjMGNjMWU1Yjg2ZTkgcmVsZWFzZTMxLW1haW50Cis3NTgwOCBhMDVlMWE1NzM2M2Q3NWExMTdlMmUwNjU4YzUwYjdiYTVhMDcxNjZmIHJlbGVhc2UzMS1tYWludAorNzU4MDkgYmU1MzQ4YjA1NGI0ZjVjMGExZDgyNmMwN2VlYzU5N2U3NTg2ZDNhOCByZWxlYXNlMjYtbWFpbnQKKzc1ODEwIDAwZTQ1ZDIxZjI1YmY4NWE0N2JiYzRiMjIxMGZjZDdkYjYxY2M2NzkgcmVsZWFzZTI2LW1haW50Cis3NTgxMSAxYzMyYjk1ZmU1NzhlNzBiZjU0NTJiMDcxZGNiOWJhYTZhMjRlMjdjIHJlbGVhc2UyNi1tYWludAorNzU4MTIgYjk3ZThjZWJlOGVkYTVkMWJjMjRjMjhlZGFjMWVjNGIyNDAxZTQxNSByZWxlYXNlMzEtbWFpbnQKKzc1ODEzIGU1MGJhMmE4MTk3MzY3MjkxMjdmZjk3YzYzODM2ZTZhNDUwZDEwZjggcmVsZWFzZTI2LW1haW50Cis3NTgxNCBlNGJjZmUyZTZkNTc2YzBlN2IyMTBlZjZkM2U5M2U5MzJiMjJjZjM2IHJlbGVhc2UzMS1tYWludAorNzU4MTUgMDk3YzM2MGI0YmE1OWExYzljMTQwODdhMWI2OGViYzhlYThlNjE5NiByZWxlYXNlMjYtbWFpbnQKKzc1ODE2IDYwNGRiOWE4M2QxODc3ZTNjNmFhYTAxOTY0ZmE1YmE5OTJjNzUzMzggcmVsZWFzZTMxLW1haW50Cis3NTgxNyBlZjA4MjUzZjI5MGJhYmYxMWIxNGM4MGE4MTgzZWIxYTk4ZDMzN2I1IHJlbGVhc2UzMS1tYWludAorNzU4MTggM2E5OTIyOTJjY2Q4NWYxNmY0YzY3OTA2Nzk3OGE2ZmRjNmU0NzMwOSBsZWdhY3ktdHJ1bmsKKzc1ODE5IDI1YmMzZDY5ZThhZmUzMDE1NmRjNWRkYTM0NjkzYmJlM2NiZjdhZjEgcmVsZWFzZTI2LW1haW50Cis3NTgyMCAxOWY3NmZhYmE5NjU0ZGRmZGQzYzU2Mjg1YTliN2U3YWMyMGNlMzVjIHB5M2sKKzc1ODIxIDg2NTMxZGU3NTg5NGYxZmEyMjRlNzM0YmEwZTk1NGRlNmUyOWM3NDEgcmVsZWFzZTMxLW1haW50Cis3NTgyMiA1OTUwNWU3ZTcwNzMyYTFlYjI5Y2QxNzliYmI3MmIzNTIwMjU1Yjg0IHJlbGVhc2UyNi1tYWludAorNzU4MjMgZTQ3MzFmZDI3ZDkxNjgwNTE0ODIzMmNlNTY4OWNkOTFkNGI5NjJlOSByZWxlYXNlMjYtbWFpbnQKKzc1ODI0IGU5OWFkZmM5MmRjMmVmNTczMTE1MjNlNDRjODdiNmIxMjUxOWJjZDkgbGVnYWN5LXRydW5rCis3NTgyNSAzNTk2MmI1NDE1OTU3ZWRkMzA2Zjg2ZmM5MDlmYzhkNzVjNjQyYTM1IHJlbGVhc2UzMS1tYWludAorNzU4MjYgNDJmZDc4NTUzNDdlODU5MWE0MWRhM2Y0OTFlMGIwMGEwMzRkZTM4NiBsZWdhY3ktdHJ1bmsKKzc1ODI3IDYzMmRkYjI3NTMyMWRlMjVhZjdiZmFjMGI3MzhhOWRlMDk5ZDljYjIgcmVsZWFzZTMxLW1haW50Cis3NTgyOCBmOGZhMzY4MGM1ZDM1NTgyMjUyZGVjMTkyNjk2OGM4OGJmMGY2YjBiIHJlbGVhc2UyNi1tYWludAorNzU4MjkgNjI5ZDQ1YmE0NmQ3OWNmMzBmNDA1NjFiNDhmY2E0YTQ3YmM1NTMwMSByZWxlYXNlMjYtbWFpbnQKKzc1ODMwIGUxYmJjNjIzMmYyOWQwYTM4OTEyMzk1MTU1MzE2MWQzZmU3ODVmZWQgcmVsZWFzZTMxLW1haW50Cis3NTgzMSBmOGVkODQ0MGNkYjQ1ZmExYjNmNGQzZmJlNmI1MDY5NzAzYWI2YTMyIHJlbGVhc2UzMS1tYWludAorNzU4MzIgMTA3NTE3OTQ1MWI1NjNiNzU5MTExZmQ4ZDI0MzM2Y2I1YzM3YWU1ZSByZWxlYXNlMjYtbWFpbnQKKzc1ODMzIGFlOTRmNjg1NTMxMDBjMDg2Yzc3MmI0NGIwMzJhNGFmMDg0Nzc3OWQgcmVsZWFzZTMxLW1haW50Cis3NTgzNCBiNDBmYTgyNmUxY2YwZDhjM2E3ZTdlN2JiYzVmMzQ3MGJkMWRlODU4IHB5M2sKKzc1ODM1IDU4MGFjMTUxMTY1MjNjMWRkYWIxMjVkOTJlOWI3ZmY0MGQ3MDM0MTMgcmVsZWFzZTMxLW1haW50Cis3NTgzNiA4YTc3NGFmZTk5MDA5MGI5OWE5MTUxNDViYjNmNDc5Y2Y4NjQwNjQ0IHB5M2sKKzc1ODM3IGM3ZmYyZmNkMmI2YmYwZTdlOTZmNjViNzc0NjEyMDUxMGVmY2U4OTMgcmVsZWFzZTI2LW1haW50Cis3NTgzOCAyNjlmMWQ5Yzg2Y2QyMjZhMjg4ZmQyNzkxYTRiZTY1MWEwZThiZWI2IGxlZ2FjeS10cnVuaworNzU4MzkgOGZiOGZkM2I2N2NmNjQzODg3MTZkNzZkM2YyYjhhNzBlMzYxYmQ0MyBweTNrCis3NTg0MCA5MzZhYWExMjQ5MmM3MDZiMzFmMGNhMTE0NzAzZDVjNmRjYjk1ZmM5IHJlbGVhc2UyNi1tYWludAorNzU4NDIgYjMxZmNiYWIwNTIwYzQ4M2M1MGE1NmQxNWU1NWViNjM5ZjVjYjcyYiBsZWdhY3ktdHJ1bmsKKzc1ODQzIDk1NWQ4ZmExMmFkNTRiNWFjYjg2MDBhZjMwMjIzOGE0ODllNzhhOWUgcHkzaworNzU4NDQgNWM1NDE0YThjN2MyNDcxNjliYmU1Njc0YzAyNWI2NzY4YjZkOWUyMiBsZWdhY3ktdHJ1bmsKKzc1ODQ1IGUxZDQxMjQ4OTEwN2I1MzBhNjc1N2E2NGI1NzJiNTU4YjAzOTE2YzkgcHkzaworNzU4NDYgMTQwZDg4ZDFiMTc5OGZiMmY3Yzg1YzI0ZmEzODA4NjhjYTMxNjYxYiBsZWdhY3ktdHJ1bmsKKzc1ODQ3IGUyNTliMzRhMGI4ODE0NDI3OTM3Nzc0MDYwMWU2YWVjOTg3YzQ0MTMgcHkzaworNzU4NDggMTFmYzE2MGQ1M2M0ZGNhNTFmNWI3YTU1MmNjOTFlZGYxZTkyNTg2NSByZWxlYXNlMjYtbWFpbnQKKzc1ODQ5IDQzYmZmNjkwM2FhNWEzNTRiYzA3ODViODJjNzUyZTY1MTI3NWNjNmEgbGVnYWN5LXRydW5rCis3NTg1MCBkN2NjMGViM2YyMzRmODQwYzZmMDlmOTA0Y2E4MDlkZGU0ODI2NGY2IHB5M2sKKzc1ODUxIDVmNjFiZDNhYTQyN2IyMmRjODkwNzM2ZTUzNzAyOTIyNjAwOWFlNGYgbGVnYWN5LXRydW5rCis3NTg1MiBlNGJmYmU5Yjc0Yzg5MjkyZTQ4OWVkMzQyZWUwNTIxZWUyYzUxMjU3IHB5M2sKKzc1ODUzIGQ5ZDY5MDYwZjVlNGJkYzNjMTFkZWZjMGE2NmRkZTZjYTBkZDgzZWQgcmVsZWFzZTMxLW1haW50Cis3NTg1NCAxYmRhNDYwMmY5MzlhMmYzZDEyMTdjOTY3Yzc5ZDZiMTA0NDZlMmU3IHJlbGVhc2UyNi1tYWludAorNzU4NTUgNWM4ODc3OTQ3M2I5Mjk2Mzg0ZDQ5ZDFlYzMyMDljYWZkMGVhMzUxOCBsZWdhY3ktdHJ1bmsKKzc1ODU2IGFmNzhmZGE1N2FmODY0ZjllOGU1ZDE2ZDAyNTk4OTMwMzc5ZjM3MmUgcHkzaworNzU4NTcgMDIxZDNhMzhiZDM2YTRhMDc4NDJhN2FhODA0YmQwN2MyODc3MmIxNiByZWxlYXNlMzEtbWFpbnQKKzc1ODU4IDAyOWQ2OTY1OWI1Zjk5NTQ4ZmY0ZThjNzJlMDliYTI1OGJjOWI3N2EgcmVsZWFzZTMxLW1haW50Cis3NTg1OSBjZWY1Y2IyNzBmZGY3Yzk2NmM2MmE1MTI4NTJmNzM0ZjA3OTc2YTRkIHJlbGVhc2UzMS1tYWludAorNzU4NjAgMGRmNDdiMWIzMGI4YTA3OTgxOTk1Y2JiM2Q2Y2I0ZDdjN2VjYjZmYyBsZWdhY3ktdHJ1bmsKKzc1ODYxIDgxNDFlYzgxYWQyZDM4ODhmMjM5OWJiYzZlOGMwN2JjY2M4YjVhNzAgcHkzaworNzU4NjIgNzBlYjZhMTNhYmNkNjg1NjYwNWNmYmNiMjY0YTZmYWNiMzQwNWU2YyByZWxlYXNlMzEtbWFpbnQKKzc1ODYzIGIwODVmZDA2MTFkZTBlODFmMWU3ZGUxMWNjNzQ0ZjUzNGI0ZGVhYmEgcmVsZWFzZTMxLW1haW50Cis3NTg2NCAyZjFjNTJkOWZlZWNhZGEyNGI3MjVmMzJhYjQzZjE4NGI1ODM2YjM3IHJlbGVhc2UzMS1tYWludAorNzU4NjYgOTg5OWVjYTljODU3ZDkxZDUyZWI3MDNkNDdkMmI1YzQ4ODZlNWIyZCBsZWdhY3ktdHJ1bmsKKzc1ODY3IDE4NTIwNGQ1NDFmZTU2ZTMxNjhlNTFjMTJhYWMwODZhYTA2OTU5ODMgbGVnYWN5LXRydW5rCis3NTg2OCA0MTFiNmFjYmNmMTJlNzYyNzI4OTUzYTA0ZDVhYTM1MTc5MDFjYWM2IGxlZ2FjeS10cnVuaworNzU4NjkgYjRiYWVjMWU2YTBjMzM4YWZlMWRhNGM5MDMzNGZjMjM4NzQ2NjcwZSBweTNrCis3NTg3MCBmNWM3MmFjYTZiNjBhM2IwNTZkMjExYTIwY2UxODY5ZjI5YjhjNTlmIHB5M2sKKzc1ODcxIDNhZTRkMzY2NzkyMGZjMzRhYWYzOTU2YTExMmVkZTM5NjllNjc5NGUgbGVnYWN5LXRydW5rCis3NTg3MiBmYjFiZmE5Y2FiZjMzYmM2ZTQ4NGNkNjUzYzFhMDdlZGY0MzkxYTgwIHJlbGVhc2UyNi1tYWludAorNzU4NzMgNDVhMjdmOTYxYWExZGY0ZTk3ZTc2YzNiYzYwMDQxZjQwZDI0Nzg5NSBweTNrCis3NTg3NCAyMDRmMzNkNDI3NjJiMjQxMzU4YjIxNmU2OWYzZGE1NGRmZGJhODMzIGxlZ2FjeS10cnVuaworNzU4NzUgMzk1OWZhMTA5NzE4ZWMzN2YwZjEwMzQzZTNhODFmNzNmZDhmMzFlNCByZWxlYXNlMzEtbWFpbnQKKzc1ODc2IGM5MjY4ZmVhODEwNDkxMjdlYzUzNjE0M2Q5ZjE2NzYwYWY2YjNiMzggcHkzaworNzU4NzcgYmVjMjY2ZjZkNTA4MWUyNTk1Y2NhZWY5YTBhNWNlYWI5YjYzNmJiNSBweTNrCis3NTg3OCBiNmNjMDEzNGFmMzE0MGUxMTZkYjE1MDQzNmMzYjNjMjMwM2Y1MzU3IHJlbGVhc2UzMS1tYWludAorNzU4NzkgMjFhM2Y4M2Q5OWFiZjdkN2E5ZWE2MWUxMjdlMGJkZGNlZGQwMmE1YSBsZWdhY3ktdHJ1bmsKKzc1ODgwIDEyOGRhZjY2OTljY2EyOGQzMzM3ZWZiNGQ4NWM1NmUzNjQ5NjQ4NWUgcmVsZWFzZTI2LW1haW50Cis3NTg4MSAzOTI3ZTBlMTM4MjQxMjZlNzMxMjQzZWRmNzdkY2MzZWMzYWZmN2JhIHB5M2sKKzc1ODgyIDE1OGIyMTFlNmZhOGMxYzg4YjZmMTI2NDI2NDgxYzgyZjFmZTk0MDcgcmVsZWFzZTMxLW1haW50Cis3NTg4MyBmMTAxMDQwNTEzMzliOGFiNjc3MTVjNGY1MWJmZjg2NDEwM2ZhOWE4IGxlZ2FjeS10cnVuaworNzU4ODQgNDRmNjQ0NzJlOTIyMWI3ZWMzOTZhMzk5YmU2ZjUxNThjZTBhMTIwNCByZWxlYXNlMjYtbWFpbnQKKzc1ODg1IDEyNDM4OWY0ZWJhZGMzOWM1OGM0MDFlMjhlNTYxOGM0YzBlMjY4NGQgcHkzaworNzU4ODYgNjkwYzU2NWMxNWE5ZTFmZjIyY2YxZjg3MmEyNzllZDlhMmU2N2U0MCByZWxlYXNlMzEtbWFpbnQKKzc1ODg3IDY5NDljZTc4YzA2NTU4MWU4M2NjMGE3MjU2OWE5ZDYyZWE3ZTVkNGIgbGVnYWN5LXRydW5rCis3NTg4OCA3ZTY2ZmZkYmNiZWZmYmY2YTQyZmU4OTlhNWRkZmJmNjk1ODlhNmIwIHJlbGVhc2UyNi1tYWludAorNzU4ODkgZDBkN2UxNWI0OTUzNWEwMDkwY2RmZGU2NjZhMzA2MGFlZWZkMmM2ZCBweTNrCis3NTg5MCA1ZTRkMWI0ZjYyZmExZDA4Nzg1ZmJiOGQxYjU4MDg0ZGU3OWZmOTc5IHB5M2sKKzc1ODkxIGFkNjExMjljNDQyMjI1NjkyZGMyNTBiNGRiYTY2ZDlkZjYzMDNhZDEgcmVsZWFzZTMxLW1haW50Cis3NTg5MiBlMWRjYTk3MmZhMzVkMzFhNTQ2Y2I3MDhmNjY3YThkYWY3YTZjMjNjIHJlbGVhc2UzMS1tYWludAorNzU4OTMgZmM1YTc3MTg0MzNhODU0NGYxZWU1MzMwNjkzNTA4NDVhZDc5YzUyZCBsZWdhY3ktdHJ1bmsKKzc1ODk0IDY0YWQzNjUwNzk0NDY2ZTg0Y2NjNTIyYjNkYzkwMTY4MmJkZTNlZWMgcmVsZWFzZTI2LW1haW50Cis3NTg5NSAxNzc3OWE5NGU4MjUwODZiNjYzMWNmZWI3ZjMwM2RmYTk3Y2ZmNmEzIHB5M2sKKzc1ODk2IDBmMjlhYTJkNDg0NGY3MTc0NzlmYjk4MmIwNDFlOWI1YjUyYzIzNDYgcmVsZWFzZTMxLW1haW50Cis3NTg5NyA3MTU3NGZlNDk1NzY3YjExODc0MTdmNzA2YzY2YzdmMjcxMTQ5ZDIyIHJlbGVhc2UyNi1tYWludAorNzU4OTggMDNkNzZiZGY5MzYyYWE1NDJmMzlkMDA1ODZiZGExM2Q3MDc3ODE2MyByZWxlYXNlMjYtbWFpbnQKKzc1ODk5IDllMjRmZDZhNTVmMDhlYTU3MjcxYjNhMDViNjQ2ZWI1YjgzNDQ0Y2UgcmVsZWFzZTI2LW1haW50Cis3NTkwMCAwNDRhNjhiYzBkMmVmYjk2MjNlMjZiMzYwYjdjZmVkYzEyZTllMThjIHJlbGVhc2UyNi1tYWludAorNzU5MDEgYzE4MjI0OTg4YmIxYzg2Zjg0NDVmN2MwN2IyODZjMmZkZGYxNTZmNSBsZWdhY3ktdHJ1bmsKKzc1OTAyIGNkOWY3MmZiYTUzYjAzMTUwMzU3NDI3OTA2ODFmYWJmYTYzMmZlOGQgcmVsZWFzZTI2LW1haW50Cis3NTkwMyBlZjZhYjVkMGEwMDZhOWJjMWRjZDAzMjRmYTc5OWU3MzhjOGEwZGZiIHB5M2sKKzc1OTA0IDUyYjI3YzA4MTY4NjhhODA1NWY2MjUyZGYzNWQxNjM1NjVkNzU5ZDMgcmVsZWFzZTMxLW1haW50Cis3NTkwNSBhYWZhNjZjNTc0NDRlM2IyNWNhZmVkMDFiYjBmN2FhOWM5YjgzYjdlIGxlZ2FjeS10cnVuaworNzU5MDYgMWU5ZWVjNzM0NDdmMjhhMGQwZWI2ZTFhMzE0MDY0M2ZlNGIxMmE4YSByZWxlYXNlMjYtbWFpbnQKKzc1OTA3IDkwYzcxNDZkZGY0MjE5Zjk0MzM0M2QxMTIwMTIwYzgxZjFhZTIwZTcgcHkzaworNzU5MDggNzZkMDQyMTQzOGFjMzZmNGE1YzM5YWZkMmU2OGQzY2E5MjE1YWY3ZCByZWxlYXNlMzEtbWFpbnQKKzc1OTA5IGU3Y2UyNTFiM2JmYjZkNGQxNjViMjYwZWExNmRjMGZlMzIwMWE0ZDUgbGVnYWN5LXRydW5rCis3NTkxMCBlNzUwYjkwYmQ5ODJiMzM1MmFjODg3Yzc0ODcyMGQ5NmFjNzMxYWJkIHJlbGVhc2UyNi1tYWludAorNzU5MTEgNDRkZTNhNDAyNDAxNDU5OGU0ZjRhMGJkNWJiOTI2NGExNzJkYTQyMyBweTNrCis3NTkxMiBhMWRlYzU3YmVhNWRjMjYwNTE3ZjYzYjdlOWI1ZDc3ZjJjNjBhN2I5IHJlbGVhc2UzMS1tYWludAorNzU5MTMgMmE5NjFkN2YyMDI4YmIzNTE4M2ZkNjZiNDUyNGEyZDQ0NWI1YjdkMSBsZWdhY3ktdHJ1bmsKKzc1OTE0IDg0YjhhMmI4ZTlhZTUxZTAwOTYyZWNmY2QzMjk1YzM1YTAwNTA1YWIgcHkzaworNzU5MTUgYjZiZTMwMDJkM2NhMmVjN2Q0ZjIxNjQ3NmZiN2Y3NTJkZjVhMTJhYyByZWxlYXNlMjYtbWFpbnQKKzc1OTIwIDIxNDdjMmViY2VkODU5M2Q2NmJlOGRkY2Q1N2NiY2RjOWRhOTk2YmUgbGVnYWN5LXRydW5rCis3NTkyMSAyMGUyMWMxNTVjMDU2MmY2NGZhNzNhZDMyMzczNzBiOTdmMGMwZDIxIHJlbGVhc2UyNi1tYWludAorNzU5MjIgMDY2Njg1ZjY5ODNhZDQwZWRiMmFhYTUxZTMzNmQzNDE2NGRiYjk3MCBweTNrCis3NTkyMyBhNzk1NTI5YjA5Yzk2NmEyN2VmYTQxZjI3NjE4MmE0OWQzNDFlMzNmIHJlbGVhc2UzMS1tYWludAorNzU5MjcgOWU4MmYxN2IyYzhkYTIzMDNmOWRjYzE0ZDM1ZGYzYjZjNWU3YWRiZSByZWxlYXNlMzEtbWFpbnQKKzc1OTI4IGRiNGRmZGM3NDAyOWFkOTg0NjUyYzEzNTIwNjFmMWQwMjBlN2RlZDYgcHkzaworNzU5MjkgODQwMmU0NzdlYjQ4N2RkNGQwMjkxMzljOTkyMmM2ZjFlMGUyMWI0MCBsZWdhY3ktdHJ1bmsKKzc1OTI5IGUzNThhZjI1NjliOThjMTNhNDc4ODY2MGRjYmU3YWY1N2IyYTUxODYgcmVsZWFzZTI2LW1haW50Cis3NTkyOSA0NDg5MDlhOTQwYzA0ZGEwM2IzOWY1OGQzZWFmNzQ5MjMzNmZjYjgzIHB5M2sKKzc1OTMwIGYzMmRjODRhODc2Y2M1OTkxYjY3ZjliOGU3OGRmNmNhOTQwMTkxMWYgcmVsZWFzZTMxLW1haW50Cis3NTkzMSA4NDQxODBiN2U2ZmYwZTBmYTg3MjUyYjQzZjI0MzM3Zjg5NDBmZGMyIGxlZ2FjeS10cnVuaworNzU5MzIgYzcxNWY4MjU1NWE0YzkzNDk2ZWE4MmI5NGMxYjdmYzgxZGIxN2U4OCBweTNrCis3NTkzMyBlODA5OTgyNjI5YzRkODNkZjcyMDdiNjZjYTY2OTkwYzc4YzI3NWM1IHJlbGVhc2UyNi1tYWludAorNzU5MzQgMDMyZDk3NDkwNDdkN2UxM2RlNjM1MmFjNjA5NDRlNmNiNWRlZWM4OSByZWxlYXNlMjYtbWFpbnQKKzc1OTM1IGI1NzFjNjY4NTIyOWYzYzA4MTgzNDlhZWZiNjQ4Y2EwODA2NDJkZWQgbGVnYWN5LXRydW5rCis3NTkzNiAzY2ZlY2JjN2FlOTVhN2Y2Mjk4MDkyY2QyODcwZDI3ZmYyNDk5MWNjIHJlbGVhc2UyNi1tYWludAorNzU5MzcgOGNmZjk0OTMyM2M5ZTY2YmMxOGRjZTkyNGU0OWM0YmRhNzcxZjk5MyBweTNrCis3NTkzOCBiMDA5YTM4NzY5OWIzMmQxYzQ0YWNhMmNiOTJkZWZhYTFkZTRjODRkIHJlbGVhc2UzMS1tYWludAorNzU5MzkgNTVlNTA4ZTI1MzVjOWEzMzQ4MjhmMjA0NTQ2YWZlOTNmMTc1MzBiMiBsZWdhY3ktdHJ1bmsKKzc1OTQwIGZmYzdkOWVhMjRkOTAyMmZmNmU3NmRiYWNjNzBjMjI2MzdkNzJlZTQgcmVsZWFzZTI2LW1haW50Cis3NTk0MSBhYWEyYjA3YzJjNDI1OGI0MTQ3MGQ1M2ZjODY4NTM0NGVjYjk2ZDFlIHB5M2sKKzc1OTQyIDA1ZmQ0OGRjMmFkYTliZjBiZjE5NTE2MzkzZTEyNDFmOTYwYWIwMDIgcmVsZWFzZTMxLW1haW50Cis3NTk0MyAxNWYxODcyNDA3YmUyNjQ2YTEwMWZkYjRkNGMxNGI5NzQ2ZjYyYzQyIGxlZ2FjeS10cnVuaworNzU5NDQgNjNlYjI4ODM5MjZiMmQ1YjgwMjRiNTIwNDYxMmRhM2YwZGZjNTZlYSBsZWdhY3ktdHJ1bmsKKzc1OTQ1IGQ1YTM0ZWYyZmNhN2MzMjExNzRjYzBhMzRiOTRkNjkyOGM2MDFiMmYgbGVnYWN5LXRydW5rCis3NTk0NiA1M2UzODAwNWQ1MDdjNGJhN2ViNmNjZmYzOWZiZGZkMTE0OGJhMmUzIHJlbGVhc2UyNi1tYWludAorNzU5NDcgZWJkZGNlZDJjOWM0ZDQ4NDVkMDkwMDYxNjVlYmRlYjg1OTZkNjY5MyBweTNrCis3NTk0OCAwZWQ0YmY0MzBkNGU1ZWUwYTdiOGFiYjFiYzUxOGVmZjgxYjBiOWQ3IHJlbGVhc2UzMS1tYWludAorNzU5NTIgYzZkNjIzNDBhZWJmMGMzMTkwZjU5NjMyM2Q0ZDAyMzNlMmRlZmJiNSBsZWdhY3ktdHJ1bmsKKzc1OTUzIGU2NjVkMjE3MGU4NTJiMTlkNjA5YjIyZmVhOTQzMDJlNjNmZGE2MmEgbGVnYWN5LXRydW5rCis3NTk1NCA1ZjVlM2M3ZGE4Y2I0NWZlNzRhMWNjMTM3ZDRkMTc5ZjQ3NmI0MzdmIGxlZ2FjeS10cnVuaworNzU5NTUgN2UwMjM3MWFhNTA2MDJmMDk4MTU0Y2E1OTgzNWMwNjc5Yjk4NjU5NSBsZWdhY3ktdHJ1bmsKKzc1OTU2IDQxMWYyNTJhMjk0YTRmZTIxODY2MTZjN2IyNDdmN2MzM2M4MDAzYjQgbGVnYWN5LXRydW5rCis3NTk1NyA5ZGRiZDY5ODE1Y2E3YTA5NmM3NDFmODY1ZGM3NDQ0OWZkNzFjMjgxIGxlZ2FjeS10cnVuaworNzU5NTggMjlmZTVlN2JkNmVlMTkwMGE4NTMxMDFiZmMyYTJlMTBlNTFmMjMzZCBsZWdhY3ktdHJ1bmsKKzc1OTU5IDZjZjg0ZTVhNmRkN2U1NTU4OGY1M2Q3YzY3MjhhNGM1MTZlMzI0M2QgcHkzaworNzU5NjAgZTExZDI0NjdkMTI2Nzk3YjlmM2RlYTc4ZTI0MTgwZmI5MjAxMGE1NCBsZWdhY3ktdHJ1bmsKKzc1OTYxIDcxM2UyMWE1NDcxZWQ3NjM2NDJjODU2MGZiZGEzOThkNTBjYzQwZDYgcHkzaworNzU5NjIgYWNhZmE1MTQyYmY5MThmNDYwZjcxYTc3Yjg2OWFkMDJkZWExYmVjMCBsZWdhY3ktdHJ1bmsKKzc1OTYzIGMxNDY5MjUyMzRmMDNhYzA5YzRmMGViNTEzMzViZjZhMDdiNDAxNDggbGVnYWN5LXRydW5rCis3NTk2NCBhMTgzYzgyYjYyODk0N2NmZTM5ODdmZGM1OTQ1OWU2YzAzMDA0NjhlIHB5M2sKKzc1OTY1IGU4N2E2Njk4YTMwNWE2NDUwMTI3NjcwOWE2Y2Y5ZTQyNGQyYThhMDYgcHkzaworNzU5NjYgZmQyMThhYjBlMjJlZmU1M2I4MzE0ZGNiYTlhOGMzYTJiZjlkZDdjNyBweTNrCis3NTk2NyAzMzg2MWNhMWZiMmIxMTgxNjAyM2NkM2Q3M2E5OWEzZTUzN2Y1YTQzIGxlZ2FjeS10cnVuaworNzU5NjggMDU2NDcwNDY4ZmUyOWUxOGVmMWUyYTQ3M2Y0YTIyNDllMGJlOTVmMyBweTNrCis3NTk2OSBkNTZiMTAzNDkwYTU1YjAwM2JjYWQ2NjJmNDg3ZDc5NDAxNzhiZDk5IGxlZ2FjeS10cnVuaworNzU5NzAgYmY5M2U0ZGY3YmZiMWU2MzI0OTI1ODM2NGZhMjgwYWU3MWFiZWVkZSBweTNrCis3NTk3MSA4ZDM2ZGViMzU2ZjE5ZjRiOGM4MDNlZjkwM2E5ZTk3MWU5ZTQyZDFkIGxlZ2FjeS10cnVuaworNzU5NzQgN2M4Njk5M2IxM2M5ZmQ3NGQ0MjFhNzRjYjgzMzQ4M2ZmMjU2MTg4ZCBsZWdhY3ktdHJ1bmsKKzc1OTc1IGI0ZTkzMzliNDk5ZDU1MjVhYzVlZDU0MDk5ZmZmOWUyNDA3YWRkODcgcmVsZWFzZTI2LW1haW50Cis3NTk3NiBmY2Y4YTQ4Njc5MjA2M2RlNjViMDJhMTQ3YzM5YzUwNjVkZGViM2YzIHB5M2sKKzc1OTc3IDZjYjUzMjQ4ZTViZTRiMDZiMzViZmQxZDMzZGVhOWY1NDI5MjRkYWIgcHkzaworNzU5NzggNmE2ZjMyYjBmYWJkMGQ4ZWQzM2ZjYzE1MzdmNjVmNGEwYzQ2YzI1YyByZWxlYXNlMzEtbWFpbnQKKzc1OTc5IGJhYjNlM2NkNzZmMWQ1MjQ1MTE2ZTI3Y2MwNzkxZTc1ZjJkYzkyMWQgbGVnYWN5LXRydW5rCis3NTk4MCAxN2RjMGI1M2I0OGVkYjFhZTFjMDg5OGU1MWRkYjQxYmFhMWFhYTZkIHJlbGVhc2UyNi1tYWludAorNzU5ODEgMTgyZmUwYWY2MDRlMzVhZjZiMWI2MjMzZDc3NjNiZmFkNjBhZjEzZiBweTNrCis3NTk4MiBmNTk0MzEzYjkzNjQ1YWIyNGY4MTJmMDc3OTdlOTRkYTNiOWVhOTMzIGxlZ2FjeS10cnVuaworNzU5ODMgZmI0OThhMGRlMGI5NWFiNjFhZjNkYzEyMTkwYzE0ZjdmOWM2MGEzNCByZWxlYXNlMjYtbWFpbnQKKzc1OTg0IDVhOTkwMDNjOWI4M2Q4NDJmMWI5OTU5ZjMzMjY4YmZjNmVhODBhNjggcHkzaworNzU5ODUgMjY0YTczNWE4YWY3NzY3OTdkY2JkMWIwN2ZhNzI0Y2ZkNTU5Yzk4YSByZWxlYXNlMzEtbWFpbnQKKzc1OTg2IGU5Yjg3NzU2YWQzYjNjMjllODliMmM5MjkzZDI5NmI0YzA2ZDRmMzAgbGVnYWN5LXRydW5rCis3NTk4NyA3ZWNkM2UzYzk1NjQyNzEwZDkwMWYyNTg2ZTcwOGQzMTFlYTU5MWFmIHJlbGVhc2UyNi1tYWludAorNzU5ODggOGQ2NzcyNWNiYjRlMzVkOGQ4NTBhMzRhNDU1OGI5NWM4NTk2NDVjMSBweTNrCis3NTk4OSA3MDQ5YjJjODZmMDYxMGQxMTQ5YWUzMzliMjE2NWM5YjdkNjVlZjk2IHJlbGVhc2UzMS1tYWludAorNzU5OTEgNGNiYzNmZTkzNjcxZDkxNWIwNjk5YzVkZTczMWI3NGY3MjEwOTE3OSBsZWdhY3ktdHJ1bmsKKzc1OTkyIDg5ZTlkMDU4NDg5MDNlNTZiM2MxNTM5MTk2MGM1ODkwMGVjMmVmMjUgcHkzaworNzU5OTMgYWIzODY5MGZlMDFjZjkzNWJhZmJkMjEzMThkNGI0ZjRhZjIyYmY4ZSByZWxlYXNlMjYtbWFpbnQKKzc1OTk1IDcxYjNhYThhNzMyMGZlNDBjYzIwZDhiNzQwNzBhM2VhY2VkMmJiODQgbGVnYWN5LXRydW5rCis3NTk5NiAzNzI0NmI0YzNjY2UzOWVlNTgyMWRhZjcwMWFlNGZmMmI2NWRjMDkwIHJlbGVhc2UyNi1tYWludAorNzU5OTcgMTgyY2QwNGUyOWRiMTE4N2Q5NjY3OTkyYTU4ZDc3ODEwNmM1M2VkYiBweTNrCis3NTk5OCA0NzE3ODA0YmI1N2RjNzUwYmQ1NzBjZTM2MWM1NWYyOWRkMDk3ZDhlIHJlbGVhc2UzMS1tYWludAorNzU5OTkgOWYzZjgzZGY2OTc1YmU2ZjBjY2IwOWE3NTRjYjkwODAyZGNhOWFjOCBsZWdhY3ktdHJ1bmsKKzc2MDAwIDg0NmYyNmFkNTgwMDAyM2I2ZGVhNzY2YmM3YmNhZWZjOGI2YmUzNGYgbGVnYWN5LXRydW5rCis3NjAwMSAyOTEzODY0ZGRiZTk1ODllYTI5NmNkM2EwZDlhMjQzZTMxODdlMTdhIGxlZ2FjeS10cnVuaworNzYwMDIgNDJiYjNlMzYxM2Y2YzkwYTFiNTc2NWNhZWViMGMxZDlmNjJiZWNiYiBweTNrCis3NjAwMyBmODNiNDg5NjI3Mzk5M2FiN2YxMTRhZjA4ZmNlN2VlZDUwOWNlMWRhIGxlZ2FjeS10cnVuaworNzYwMDQgMDJmNWM2MDA4MzI3YWZlNTU1NjU2ODMwMWE5YjU4ZTdmOWQ4NThiZCByZWxlYXNlMjYtbWFpbnQKKzc2MDA3IDIxMWU3YjViOTk5YzFhM2Q5MWQ2MzlhMDU3YjViYzM5ODc2N2ViNmUgbGVnYWN5LXRydW5rCis3NjAwOCA3MDAwMmYyN2QyODFlZjZiZWRlODFkNmIwNDVmNjdkZThmOGNlNDYyIHB5M2sKKzc2MDEwIDQwMjY5NmFjNGY5ODJjZmIyN2ViYjhmZmQ0NWY1MDI5M2FhNjdlNjAgcHkzaworNzYwMTEgYjBlNGVmYjgzZDYwYzc3ZjI5OTg0MDE4Yjg2M2E3ZmFlMjJjNzg5ZSByZWxlYXNlMzEtbWFpbnQKKzc2MDEyIGZmOGUzNTllMjgwODQzMjU4ZDNiMmVhY2FhZDI5NDZiZWQ0Yzc3ODMgbGVnYWN5LXRydW5rCis3NjAxMyA2YjRjNzMyMGJhM2ExN2YyNDIyYmRkYzQzNjYyNDA5ZWUzOTBmNjUwIHB5M2sKKzc2MDE0IGI2OTAxNzc2MjIwOGFhYTZmMmU4OTNjY2Q4OTUwMTgxNjVlOTUxMDkgcmVsZWFzZTI2LW1haW50Cis3NjAxNSA1OTI1OTAwZWRmMTZmMGM5NGI1YmMxODlhZDFhYWM4YzNlNzA4YzgxIHJlbGVhc2UyNi1tYWludAorNzYwMTYgNzU3Yjk3YzYxNjkxZTI5MjMwOTY1ZjU3YjljYTJjMzhhOWZmNDk5OSBsZWdhY3ktdHJ1bmsKKzc2MDE3IDViOTVlNGVhYzdhOGI5OGE5YTY4YjEzYWZlOTZlY2NlNjlkOThjNTAgcHkzaworNzYwMTggZWQxNjZmZjdkOTUyMzgxYzQ1ZGYyMWQwYzM1MTkxYzMzMGIzODVlYiByZWxlYXNlMjYtbWFpbnQKKzc2MDE5IDEwZmUyMGZkNmZiM2Q4YzhhZGE3ZmZmNjJmMjA2NjliODBkZjIzYzIgcmVsZWFzZTMxLW1haW50Cis3NjAyMCA0ZGI4NDA0NWE3ZjAwNzFhMGE4MmEwZjFmNDgwODM5NDczNGI1Y2RmIHB5M2sKKzc2MDIxIGRhNmFkOThkNWRhZWYzMDhhM2U0MGFlY2I1ZDk1NGFlMTllMTg3MjUgcmVsZWFzZTI2LW1haW50Cis3NjAyMiBjNzhhMDBhMWQ2ZGIxODMwYTE4NTc0Y2YxODdiMWY4YjgyOGI1MTVjIHJlbGVhc2UyNi1tYWludAorNzYwMjMgOTNjN2Y2NTA5MzdmN2U5NTc4YTYxNGM3YWFjZjdjYTU0YjU4YTVmZiByZWxlYXNlMjYtbWFpbnQKKzc2MDI0IDkwMTI1OWJjMGI2MmVhMDE5ZmZhNmE1MDkwYjY0NmQwN2JjZGIzM2UgcmVsZWFzZTMxLW1haW50Cis3NjAyNSBiN2U3NjI3N2Y1NDUyNjdhZjgwZGIwZDlmNTdkOWFiM2FlM2JhMjE3IGxlZ2FjeS10cnVuaworNzYwMjYgMWFhNmI2OGU4NTIzMDQxN2MzYTc5YzJmMDNhNDRjZGYxNTM5MDQ5ZCBweTNrCis3NjAyNyA2NThlYjU4ZDJlNjhiNzU0MDgzNTQzMmY2NjM0NjY4OWQ5MWU1MGFkIHJlbGVhc2UzMS1tYWludAorNzYwMjggYzc4NWFmYTZmOTVjNTY0OWQwZjY1M2E1ZDhlNDc4YmNkNTgyZDlmOSBsZWdhY3ktdHJ1bmsKKzc2MDI5IDMwMzlhNGFkN2UzOWExMWFjYjc2ZGY4Y2ExNWZmYTA4MzQ4OWZkNmQgbGVnYWN5LXRydW5rCis3NjAzMCBkZGMxNDFkOWVmMWIxYmYzMWI4NTIxZWJjYzJmZTQzZDkwZjA3YjczIHB5M2sKKzc2MDMxIDM4NzE5YjhlMGM5ZjcwZTJmMjkxMmVmZTRjZjc0MjJhODdlZjIwZDYgcHkzaworNzYwMzIgMzhlYjZhOGFkYzI0MmIwMjQ0YjBhMjFmZmJhOTRhNGZmMjg3NzM0NCBweTNrCis3NjAzMyA4Y2E0ZDc3NjgwYzZkMjQyMTQ2OTk1N2ZmYzIxOWQ0YzAxYjE1NjRjIGxlZ2FjeS10cnVuaworNzYwMzQgNTFiOTk3M2Y3NjFlYzQwMGM3NDZkZWEzM2Y2ZjViOTJlNTM3OGQzNyBsZWdhY3ktdHJ1bmsKKzc2MDM1IDU3NTQyYjUwMmQzMjIzYTZiNTFlMjgzOTMxYTM4OWNiZjczMWE2OWUgcmVsZWFzZTI2LW1haW50Cis3NjAzNiAzYmY3NjFkZjgwMmFhZGRhYjkwYjJlYjAxNzBjZDMwOGVlMjJiMWJmIHB5M2sKKzc2MDM3IGEwMWU2Y2VmMTI1NmM5MTM5Yzk2MzE3NmYwMTJhMDhlMjM4NzNlODMgbGVnYWN5LXRydW5rCis3NjAzOCAzNDRjNDdkZjM2M2Y4YjljMjhhMDYwMjkyNTU5NjMzMmEzNmJkNjRkIHJlbGVhc2UyNi1tYWludAorNzYwMzkgNDU4MGZlMDcxOWU3MDJkMjE2MTNlNDE2ZjRkNmE1YjUwNTE3YjRmMSByZWxlYXNlMzEtbWFpbnQKKzc2MDQwIGZkMDU0MjcxNmE4MDU1MWZhMmQ4OTA1ZjM0MjM5YjI5YmZjZjBlOTggcHkzaworNzYwNDEgYjU5MWZjODcyMWYyZmRjNTA1ODY2MWM5OWYzNjZlNTM5NDUzMjU5MyByZWxlYXNlMzEtbWFpbnQKKzc2MDQyIDZkYzRmYWE0NWNiZDA4OTAxMGRmNWE5Y2MzMGM5MTZiMDdmODNkNjUgbGVnYWN5LXRydW5rCis3NjA0MyAyOGZlZjcyNjQ0YjdjNjQ0NGNlNWIyOWRiOGEwYjM1YzBlZmNkYjY2IHB5M2sKKzc2MDQ0IDRhODQ1OWUzMjkxOTIzMmJlZWNmNTMwM2JmMmMzNjI1YWM3ZDcyNDAgcmVsZWFzZTI2LW1haW50Cis3NjA0NSA2ZTQ4OWQzZDczYjg4MDQ5MTUzN2FlYWY0YWVmYWVmYTYyZTgxNjAzIHJlbGVhc2UzMS1tYWludAorNzYwNDYgMWUxYmUxYTM5YTc5MmVmNzYwZDY5MjRiYzAxZTYzYzdjY2IwOWNmMSByZWxlYXNlMjYtbWFpbnQKKzc2MDQ3IGYwMTMwMmU2YWNkNTQ0NjEzNTU2OWI3NTM0Mjk1Y2QzNDg0MTdkOTggbGVnYWN5LXRydW5rCis3NjA0OCA1ZDZlZDA4ODNiZjU3OWMzZjg1M2YxMjRhNjQxNDhiZjMzZTYzODczIHB5M2sKKzc2MDQ5IGE1ZTQ3M2U5NWJjZWFkNWM1ZGIzZDc2ZmZkZTFjNTJhMjQ1NDRiYmEgcmVsZWFzZTI2LW1haW50Cis3NjA1MCA0NTNmNTQ3OGE2OTFkZDFkZjlkNWI0ZjBmMGVhZTE4OWRlNmUzMTEzIGxlZ2FjeS10cnVuaworNzYwNTEgYjkxOTM3MGYxODIwZmRiYTE1NThiOWE3MzllY2NjYjc2YzJlYjZlYSBsZWdhY3ktdHJ1bmsKKzc2MDUyIDY5OGRlNTAxNzk5ZDk5MzVhYzJkNjg2YjYzMDgwOTc3Yzg2ZDBjMGIgbGVnYWN5LXRydW5rCis3NjA1MyBkMmQ4Y2FiYjllM2E5MjNhYjEwMzdiMGRlOGNjZjZiOWVkNDdjNjMwIGxlZ2FjeS10cnVuaworNzYwNTQgOTZhODUzZmFlODNiMjM3NGM4MGI5ZTA0NDJhZTMxNTkyM2Y3MDlkZSBsZWdhY3ktdHJ1bmsKKzc2MDU1IDE0MDJjNzUyNzU2NTVmZGEzYTE4Zjk2MjY2MzRlNjQyZWRjNWViMGMgcHkzaworNzYwNTYgOGEwZDNjNjlhZTIxYWRiZGE0YzA4NmJjODU0NTY2MmI5NTRjNTU4OSByZWxlYXNlMzEtbWFpbnQKKzc2MDU3IDg4YTM2NDZlZjMyYzJhNzgyYmI0MTliYzFmYzQ2YThmODY4NDc4NWMgbGVnYWN5LXRydW5rCis3NjA1OCBlNjA4ZjU4ZDVkMThiNjFkNDJkNDA1NTQyNmI2ZTMxNjNiMjdiNjk1IGxlZ2FjeS10cnVuaworNzYwNjIgOTRlMWIxNGVjODA0YjhhYzkyOTBiMjA1Mjg2NTgzNzRkZmZjYzUzMCBsZWdhY3ktdHJ1bmsKKzc2MDYzIDk1OWM2OGQxZDI4YTBhMGM3MmVmYTBlZGJkNzc1YmJlYTAyZjc2ZTIgcHkzaworNzYwNjQgM2NmZDY5NTY0ZThmMDc2ZmQ2YmQ4NTk0YTdiMWVkMDgwMmIyYjk0NSBsZWdhY3ktdHJ1bmsKKzc2MDY2IGYyOTYwZjExNmU3N2EyZWJhZDUxMDM3ZTIyYTA5YjdhN2EzMGMyYTAgbGVnYWN5LXRydW5rCis3NjA2NyBiZWU4OTk0YjEzZGVkYjgxNzAzOTliY2IyNGEwNjg2MDA1NDliODY4IGxlZ2FjeS10cnVuaworNzYwNjggYTNmMjFjZWU2NGQxZjEyOGE2MzViZDFjMmM0ZDYyN2IzMGU1MDFlOCBweTNrCis3NjA2OSBhODA4NmIzMTRjZDA3ZTZjM2ViOTIwOWIyZDM1ZjFmM2M0ZTQ3ODNmIHJlbGVhc2UzMS1tYWludAorNzYwNzEgMjAxYTQxOWU5ZTA2NjBiZTQ0OGJmMTI2N2M5YmM4ZDFlMTdhNzUxMCBsZWdhY3ktdHJ1bmsKKzc2MDcyIDY1YjExMjFhMjQ3M2ZkMjFlNjJlOWI0YmM5YjEzYzE2MjY0Y2NhMGEgcHkzaworNzYwNzMgNmMxM2JmMzVkMTY2MTE3NGFiZWVlOGVmMGNhYjAxNWIxODY5MjBjOSByZWxlYXNlMjYtbWFpbnQKKzc2MDc0IDMyMDFmYWIzNTIyMGY3ODUyOTlkZDgyOGU1NjE0ODhiNDY3MjljYzcgcmVsZWFzZTI2LW1haW50Cis3NjA3NSBjOTAwOGEzZTdmN2ZkMjM0OGI5NWE0OGE0MmE2NWM5NWIwYmY3NTMxIGxlZ2FjeS10cnVuaworNzYwNzYgNjg1YTI0YTZmOTg2ODQ3ZjI0MjBjYTE1NjYyMjQwZjI3MjMzNGIzMSBweTNrCis3NjA3NyAzMmM3ZDk4MTAzYmFlYzFhMzcxY2ZjZTIxOTg2Zjc0N2I0MDNhYmQ4IHJlbGVhc2UyNi1tYWludAorNzYwNzggYjQxMWNlNTg0YjdmZjA0MWE5YTNkZmE2ZTM1OTE4MTUzMGUxNmZjMSByZWxlYXNlMzEtbWFpbnQKKzc2MDgwIDYyZGNkOWZkZDdiMzRlZTY3MmE3MjE4NjRiYzYwNmUyNDY5MzkwM2MgcmVsZWFzZTI2LW1haW50Cis3NjA4MSBiYjM3YzdjMjZmYTQ4NjUxNTI3MGZjMDRhZDVkYzA1Y2YzMzAzZTZhIHJlbGVhc2UyNi1tYWludAorNzYwODIgMTlhNTczYzQ0YWUxMWMyYmMyZGE1MTNiMzA0YzI3YjgxZDljM2NiNyBsZWdhY3ktdHJ1bmsKKzc2MDgzIDkyY2M3ZWQ4M2U5YzAxYTE4M2U4NGJmMzUzYWE2NWIyNzYwYjljNzIgcmVsZWFzZTI2LW1haW50Cis3NjA4NCA3ZmQ5MGU1YTBhZDVmOWIzMzIwNDVkMzBkYjUxYmZlY2E2ZWI0MWY5IHB5M2sKKzc2MDg1IGZlODA4ZDY2NDgzZDdiNWU5ZGRjYjA2NmU4YzFlYWQ4M2Y0OTA4NWUgcmVsZWFzZTMxLW1haW50Cis3NjA4NiA4YzgwN2IzYTkwNTIzMjI3MDU3MmM1YjFmOWJlMzM5ZWRmYTlkMTJkIGxlZ2FjeS10cnVuaworNzYwODcgNTllOWFkY2E3NzFiMzRhYWY0NDc5M2E0MDdiOWViY2NiY2VhMjExYyByZWxlYXNlMjYtbWFpbnQKKzc2MDg4IDFkZjkwZTIyYmI3MDYxZTRlNzcyNmFkZWY5YWU4YzEzYzY4ZTU1ZjAgcHkzaworNzYwODkgOWFmMmU5NDQzOWQxYjQ0NmYxMDY1NzhjN2E1ZmYzMjIxMjcxZjdkOCByZWxlYXNlMzEtbWFpbnQKKzc2MDkwIDFlOGEzM2Y2MThmYjA2M2Y3NGNhNmI2YzdhOTRjY2E3NjRiMTE3MmIgcHkzaworNzYwOTEgZmZhZjY2NWQyZDNlNWQ1NmFlZGUwYmM5OTMwN2UwZGZjMTc5MDYyNSByZWxlYXNlMzEtbWFpbnQKKzc2MDkzIDQyZmEzZTA5YjZlNzlkMzFmOGZlMWYzOTQ3ZTkyYjdkMTMzYjZkZjEgcmVsZWFzZTI2LW1haW50Cis3NjA5NCAzMzY0YWNiYWExNTNjZWNmZTNjYmIzMWY2MWNmZTRkNzE0OWFlNzA2IHB5M2sKKzc2MDk1IGVkYTk3OWM5OGE3ZmJlMDNkNjdkMGM2ZGRiNzJlMzAyNDM0MmZlYzQgbGVnYWN5LXRydW5rCis3NjA5NiBjOTRlM2JmODM5MmJhMDM1M2JhNTFlOTliZWZhZjYxOTYyNjA0NDQ4IHJlbGVhc2UyNi1tYWludAorNzYwOTcgMWYxNzU4ODQ4YzZjYjM4MGRjNDFjNDIwYTM3ZGYzMjYwODhmZWE0ZiBweTNrCis3NjEwMCBmOTViNWZhYTEzY2Y1ZjRmNmY5OTRmN2E3ZDRiNTU5OTU4ZThkOGM3IHJlbGVhc2UyNi1tYWludAorNzYxMDEgNTE4Njk4MTRiYTlhOGY5ZGRiNzQzZDcwZTY5MTQyZWIyZmIyNzBlNiBsZWdhY3ktdHJ1bmsKKzc2MTAyIGVhNzM4ZmYxODAxNjYzYmEzMmUzMzQ1MGI5MjQxMDIyYWFiNDFiN2QgcmVsZWFzZTI2LW1haW50Cis3NjEwMyA2MDVkMmY0Yzc1Mzk0OWQyYjlhMzhmZDU3NDBlNjlkMzNmOWEwODgyIHB5M2sKKzc2MTA0IGM4YmZjNGRhZmYzZDhmNDhmMzRjNjE0OGNhZTY5YWMwNTkzY2E5MjEgcmVsZWFzZTMxLW1haW50Cis3NjEwNSBmNWQ2ODYwNGM2Yjk1MmE4ZTE2YzBiOWFhMjI5ZGM5MGJkNzkyNTI3IGxlZ2FjeS10cnVuaworNzYxMDYgZDE2MTQ0MjY5ZDU1OGQ2NzFmMjVhY2U3MTRiOTA0OGZlOTQ0YTIyYyB0YXJla19zeXNjb25maWcKKzc2MTA3IDI5OGY2YjM0MTI1ZDM1OGUzZDg1NmUyYTE1N2ZiY2NkY2IwOTY1NjEgdGFyZWtfc3lzY29uZmlnCis3NjEwOCAwNjhmOTQzMGNjMjQwYjA5NWUyNTI5M2UyMmUyMTljYTcwNzc5YTJjIGxlZ2FjeS10cnVuaworNzYxMTEgZjg5YTkzYTc3OGE4MWQwNjhkYzg5MjYxZDRlN2ZhMjJjOWJkNTgxMSBweTNrCis3NjExMyBkM2E4MTA1MTY2M2I2YjU2YjhjZGM3NGVjNDIyMDIwYjAyZDliNGRkIHB5M2sKKzc2MTE0IDQ0NDk4OWNlNWY3NzE0OGNiZWE0MjhiMzQ5OGVmMWRhNmM2MDhmY2IgcHkzaworNzYxMTUgOTNjNzUyODc1MDMzY2M1ZGRlYjMxZmE1MjE2OWE4MDRmNWVkZjRkMCByZWxlYXNlMzEtbWFpbnQKKzc2MTE2IDYzYzllNjNlMGRlM2YwMmFiNmYxZDAzMjZiNGQ4OWQwNjI2Y2QwOWQgbGVnYWN5LXRydW5rCis3NjExNyBmZDc4MjgwNTE4NjU1MWE5OGUxMDUxMjhjNTE1ZWFmZGYwZDZmNTI4IGxlZ2FjeS10cnVuaworNzYxMTggMmViYWQzZGZjZGUzNzYyN2VlMTI5NTUyZGJjYjVhNDNmMjhjMGNmOCByZWxlYXNlMjYtbWFpbnQKKzc2MTE5IDBjYjk0MzkwMGU1MzFlNGZhMmUyMjRmNDAxZDU0YzBiZTRiZTBhYmIgcHkzaworNzYxMjAgNGVhMGE4MGVkNzZhNjM5MmMxYzU1ZmUyZjkwMzRmNjJhNTFiMjljNiByZWxlYXNlMzEtbWFpbnQKKzc2MTIxIGExYzk0ZjA3NjFkNDEzYmFkNmYxMDhlMDY1ZDdiYzgyOWYyMjk0MjIgcmVsZWFzZTI2LW1haW50Cis3NjEyNCAzNWRkZmI0NDcxNjhkMDZmNDQ2MmEzOWRhYTk5NWM5N2RjODQwZGFkIHB5M2sKKzc2MTI2IGQzYTc2MzYzOTJhZjU1NGQxZWVmNjI1ZTQ2YmZmYzYxZTllMzM3OTEgbGVnYWN5LXRydW5rCis3NjEyOSBlM2ZmMzk3NmJiYWNlZjc1MjNhNTgzM2IxMjk0ODFiNWM5NjdiZGYyIGxlZ2FjeS10cnVuaworNzYxMzIgODU1MmEyNjc3MmU2ZmMxYmQ4MWI2NjA2ZmM2Mjg2NDI0MDAxOTQ2ZCBsZWdhY3ktdHJ1bmsKKzc2MTMzIDZkYjIyMGFmOGNhM2ZlYzkwNDY3OWNlNzVlOWMxZjIwNGI3MWI4ZWMgcHkzaworNzYxMzYgZDM0NmZmYjhjZmQ3NDMzMTljZGE4NWZjY2UzNTY3YjA3N2I5NTFjYiByZWxlYXNlMzEtbWFpbnQKKzc2MTM3IGNkMzYwYWM1OGNkMmVhMDZjNmE5MGIyMzNhNjE3N2MyZjZlMTk5M2MgbGVnYWN5LXRydW5rCis3NjEzOCBlMGRkZWRhMGQ5YzMzZjg0MjUxMDI0YTA1Njk3ZDgyYjhlYWYwODEzIHB5M2sKKzc2MTM5IDkzMDlkYWFmMzJkMTgwNzAyNmVjMzY2ZTVjMGRkMzI3N2JlMzQ2OTggbGVnYWN5LXRydW5rCis3NjE0MCA4MThiMGIyODdhYTQyNDRiN2NhN2M3ZjViNjgzYmI5ODczMjZiMGQ4IGxlZ2FjeS10cnVuaworNzYxNDEgNDJkNGNmODI3YjllODljODNmY2FlM2FiNGU3NjFiZTJjMDNlZGE0NSBsZWdhY3ktdHJ1bmsKKzc2MTQyIDkyYmRjM2M3ZDVhNDNlZjNkOWFmOGMxMjhiMmM1ZjY5Njc4M2ZmZTIgcHkzaworNzYxNDMgMWEzMDg2MGJjYTAzN2Y4NDEwOTRiMjI5YzMyNWZjOWUzMmNiOGRhMiBsZWdhY3ktdHJ1bmsKKzc2MTQ2IDI3ZTEyMGY5MjA4YjNhYThjMGM4OTFhNWRhM2YxZjlkZmEyODQ1ODkgcHkzaworNzYxNDcgZTI1Mjg4YmI2ZmFmMTdhZTgyNDBlNWI5NGQ4NWJhMWQ2ODI0ZTA5MyByZWxlYXNlMzEtbWFpbnQKKzc2MTQ4IDZmNWY0ODFkNjE5YzJjZGJiZWJjMzVlOWI5ZDhhYTNhODFmZDM0ODEgbGVnYWN5LXRydW5rCis3NjE0OSAwNGNmOTVjZjk0OTZmZmY1MGIxZjJlZjM2NjhjYTc5MjJmYTgyNTVkIHB5M2sKKzc2MTUwIDNhMGU2OTAwMTIxNTQzYTRiZjUxNjQ4ZDdiZDNiZDE1ZmM5MWQ3ZmMgcmVsZWFzZTI2LW1haW50Cis3NjE1MSAzODFhNjJmMWU2MzVmMmMwMjE0NGRkOTFkNGY5M2E0OTkwNWQ0MjkyIHJlbGVhc2UzMS1tYWludAorNzYxNTQgNjM3NzBhNWEwYzc5ZGYyYjRkMjNmNzRkOTA3YmRlZDg1NTY3OTI4NiBsZWdhY3ktdHJ1bmsKKzc2MTU1IDJlNGU0NzcyMTljNTczZjVjYWIwZjM0OWQ5YWU3ZDMzYWVlNGU2ZTQgcHkzaworNzYxNTYgZGNkNjg4N2I4YTI3NzQ3ZGE4YjQyNzM2ZTNjYTFhZDVmNGE3NDFlNCBweTNrCis3NjE1NyA5NzllYjFiYmY2ZTZlNDZkYTI3MDk1NmU5NDMxZTI4Nzk4MTZkZTNmIHJlbGVhc2UzMS1tYWludAorNzYxNTggZDYxYjI0Yzg3Njc0NDc1Njk1NGZmZDAwOWUxOWIyYzQyYzMxZGJkZSBweTNrCis3NjE1OSA0ODk4OWVjZmY4MDQ3YmJlNDQwZTdhMTQ3MzExYjQzOTE3MTliZWU4IHJlbGVhc2UzMS1tYWludAorNzYxNjIgNjlkNjFhZjVhOTU4OTM2NDZlZDI1NjYyZjc0YWYwYTExZjBiMzBlNSBsZWdhY3ktdHJ1bmsKKzc2MTYzIGQ5NzA1OWU5ZTg1MmVhYzJiODU2M2FjZGQzYmZhMTg0ZWU4Y2NiOTcgbGVnYWN5LXRydW5rCis3NjE2NCBmMTkwMzE1ZjE4NWVhN2FiZTRmYzNjMTVlYjI0ZTE3ZTA2MDRlYjc2IHJlbGVhc2UyNi1tYWludAorNzYxNjUgZWQxMWIzMTVkMzZhMzg4N2YxNjQwMDUwNzIzN2RhM2UyMGMxNjNlOCBweTNrCis3NjE2NiAxNDQ3ZDc1ZGVmOGIyNTc4MTBmMjA4YTYwODUyNWE0NTJlYWQyNjczIHJlbGVhc2UzMS1tYWludAorNzYxNjggYzc2ZDVmYmViNjkxOTMzOWNkMmJkNTlhMjIzZTI5N2RkZTFmMGQ3OCBsZWdhY3ktdHJ1bmsKKzc2MTY5IDI2N2E0MThlYmJjOWI2NGEwYjM1Zjg3YmFlYzk4ZTcxNWE5NzQyZDUgcmVsZWFzZTI2LW1haW50Cis3NjE3MCBhN2FjNGRiZGU1ZGI2MjBiYTIwMGZkYzhjY2RjZGI3NWZkOTI0OTkyIHB5M2sKKzc2MTcxIDY2N2Q5Nzc5Y2FkNmFmZjY2MDQ3OWEzZjEyNTcwMDhkMjVhMjJmMGEgcmVsZWFzZTMxLW1haW50Cis3NjE3MiBmYmY0MWIxMTI0ZDhlY2FmMWU3ZDhkN2VkMDVjYjQ0M2NlZmQyOGRiIGxlZ2FjeS10cnVuaworNzYxNzMgZWQ4YjI5NjkxMTllMjZhZTY4MjY5NjQ2ZGJiNDFjOTNmYjY0YTljZCBweTNrCis3NjE3NCAwZWI1NmE4ZTYyNjJmM2I5ZDIwYWUzOTUwMzUzNTI0NTdkMjJjN2E0IHJlbGVhc2UyNi1tYWludAorNzYxNzUgZmUzMzU2MmQxZjk1YTBmZGNiOTgwMTAyYjk4NDk4NThkMjRjYjU0NyByZWxlYXNlMzEtbWFpbnQKKzc2MTc2IDJkMzk0ZDJkMmQzN2Q3ZGFhMWM2YjgxMzYzMzliY2QwNDQxM2I3NzUgbGVnYWN5LXRydW5rCis3NjE3NyAwNTBhNjVhM2RmNTM4YjI4NzlhM2U4ZjhjMGQxZTJkZGEwMTg2YTU4IHB5M2sKKzc2MTc4IGJmY2FiMWJhMGY1MWNiM2NlNTE4OTg1YjMxNTE1NDhjMGQzM2U5N2QgcmVsZWFzZTMxLW1haW50Cis3NjE3OSBiY2EwMjdiNmRmNTMzZDZkYzNhYjMxM2E2YWNlZjRmMDkwYjUxOWJkIHJlbGVhc2UyNi1tYWludAorNzYxODIgZmJmY2NlMTEyNGFlMjcwYTQ2YzRhOGIzYmJhNTNmMjA1Zjg5MTIzNSBsZWdhY3ktdHJ1bmsKKzc2MTgzIDUyMTQwNzM4ZDZjM2I1ZWVkNmE0MmQ2MWEwM2U0NDM0NTc3ZjVlMWYgcmVsZWFzZTI2LW1haW50Cis3NjE4NCA4YmZiMzJiNWZlNmQ0ZDJmOTY0ZGQ5ZGZmZTcyZjVmNjQyZjc3MzRmIHJlbGVhc2UyNi1tYWludAorNzYxODUgZGQ5Zjg1YTVmMTM0N2NmYjE2MjI2ODRmMGVhNjI0NjNlYzg5YzE0OSBweTNrCis3NjE4NiA5MjE5YTk2MmFkMWMzMDdhZTFjNzhlZmU5MmNkMzdkYjA2ZDI2MTQ5IHJlbGVhc2UzMS1tYWludAorNzYxODcgZmZmNTU4Mjg2YWFlM2ZlMzZhZDJjNjkzNzQ3ZmYzYzJiODQzZDk0OSByZWxlYXNlMzEtbWFpbnQKKzc2MTg4IDIzY2M3NTljZmFlMzU4MjUyN2YzYjUyZWQ4MmYyNWNjMTY1NmFmZGIgcHkzaworNzYxODkgNmQ5MWFhYWRkZGQwODFkZTczZTRmMjliNmU3MzQzN2FjNGRiN2JiMyBweTNrCis3NjE5MCA4NjdkMmYyNzM1Yjg5MDU1NzYwMWI5NDI1Nzg0NjVkODM2NjNkZWFkIGxlZ2FjeS10cnVuaworNzYxOTQgY2EwMjE3YzUyYThiZjM4NGIzNDNkYWIyZjM4MzBjNWRjNzk4MGE1OSBsZWdhY3ktdHJ1bmsKKzc2MTk1IGZkZDY0ODRmMTIxMGQ2MGMxNjhlMjM3NjZiZDM0MmRlOGE2NmYyMTcgcHkzaworNzYxOTYgY2I1OTA1ODA2ZGU4ZGM4NzcyODgyZjkyNGM1ZWM5MTFiNjNlMjZhZiBsZWdhY3ktdHJ1bmsKKzc2MTk3IDk3YzMxODcxNDA3MGY2ZjE3ZGY3ZTY4NWU2ZjdlYWI2Y2IyYTQzZTMgcHkzaworNzYxOTggZmU2YjliYWJlNGJlOTE2ZjQ4NDkwNWU1M2YxZjI1YTA1Y2FjMGZkZSBweTNrCis3NjE5OSA5NzZjYzUwNGQ5OWYyODM4NWI1ZDJhZmQ4MWJiM2QyODU1YzkzNzVlIGxlZ2FjeS10cnVuaworNzYyMDAgMTA3NjRmZmU3NTQzY2U5YmMxMmY2M2FjNDFkNDVlOTY2MTM5MjllYSBweTNrCis3NjIwMSBiMWE3NzVhYTA3MTBkNDk2MWVhZWQxMzg1MDRlNzRiMGU4N2M3YjBkIHB5M2sKKzc2MjAyIDRlYmRkMmUwYWFhZGU3NTNkYzM0ZTBlNzEyNzY1NjdjY2FmNTg5NTEgcHkzaworNzYyMDggNTRiOGQ3ODBjOWI5OWUwYmI1NzJkNDljNmY3ZGFkN2Y2ZjEwNjUwMCBsZWdhY3ktdHJ1bmsKKzc2MjA5IDI5NTBkOTc3MTM5NTllNzBjZjVlOTVjODk2MDFiMGI2Y2U4ZjE4NzkgcmVsZWFzZTI2LW1haW50Cis3NjIxMCAxMmUwYzllYTMwNGVlZWI1NjgxYjc4NTQ4NzkyOWY1NjRjZWUxYTVlIHB5M2sKKzc2MjExIGM4NWViNTk0NjYxNDU2NWJkM2Y5ZjI4ZmZlMGU1ZTNmYTNmOTQ5YzcgcmVsZWFzZTMxLW1haW50Cis3NjIxMiA3OTVlZjQ2MzQ5ZTUwMWNiYzkzNGY5MTUwNDY5ZjFmNjFiYTFjMGJmIGxlZ2FjeS10cnVuaworNzYyMTMgMjE0ODg1MWYwODJhMTkwMGE2MGM3M2ZiNTcyYzJjMTcyZWVkOGMxNyByZWxlYXNlMjYtbWFpbnQKKzc2MjE0IDI1N2NiNjFiZjQxYjU2N2JjMjkzMDAxMGIzOTNjYTA4NGFhNTEzNTcgbGVnYWN5LXRydW5rCis3NjIxNSBjZTlmNTVhZDU0NmUxNGE1NDc4ZDMyMGI1Njc4ZTRiNzJiMTZkOGE0IHJlbGVhc2UyNi1tYWludAorNzYyMTYgYzcxN2ZlOTkzMDg1Y2RhYTFmYmM5NGVjYTlhNmNlYjgyMmViZWQwMCBweTNrCis3NjIxNyAzM2JlODJmYTI3N2FjOWExZWE1MDBlOWNjNWIzYTZhMTQ2OWQzODQ5IGxlZ2FjeS10cnVuaworNzYyMTggNDNmMzJkYjFiZjQ2ZmI2ZTA0YzZkYWQzZTVkMDQwNjFjNTkwYTViOCByZWxlYXNlMjYtbWFpbnQKKzc2MjE5IDgxMTY2ZDdiNDE0YzhhZjI3OGQ3OWExMGJmMjg4ZjM5YzA4MTRhZWEgcHkzaworNzYyMjAgMTM4YzFmNzQ4MDRkNjhjNmY1NjFhYTEyYjBjZDlkZTQ1YzY5M2E0MiByZWxlYXNlMzEtbWFpbnQKKzc2MjIxIDFjMjc4ODhhOTU1ZmU5YzZkOTFlMTExZTVmNDhhMjRmYzdlOGZiZmUgcHkzaworNzYyMjMgZDQ0ZmVhMjNmZDU3ZmQ1YjcyZjIyNTRhMTMyMmM0YTIzNDRkZmVhYyBsZWdhY3ktdHJ1bmsKKzc2MjI0IDk0Y2QxODVmNTNiNDc2MTM2ZTE0MjM1MGQ3N2MwY2VkZTZlYzBlOWIgbGVnYWN5LXRydW5rCis3NjIyNSA1NzA3N2RmMDJmOWFjYmM3OTMwZjNjMjFkNmYzZDkzNmJjMjYzMDI3IHJlbGVhc2UyNi1tYWludAorNzYyMjYgNWMwZDRiM2VjZDY1ZDE4ZjIxYTgwMjBhOTA3NDVlZGM1M2MzN2E3MCBweTNrCis3NjIyNyA0ZjFjN2I3YmZjYmRhNDAzYWFkYzM3MTRjZjIxNjg3MWY3ODQyNTdkIHJlbGVhc2UzMS1tYWludAorNzYyMjggY2QwNDM2YzM0ZWY0NmRlMGY0NGYwNTkzZGI0MGIxOGFlMTVmOWUzOSByZWxlYXNlMzEtbWFpbnQKKzc2MjI5IGY5YTUwY2VkZTZhOTIyYjA2N2Q2ZDZjZTk2ODAyNjJmNDI1MmExZDggcHkzaworNzYyMzAgODlmNDI5MzhkNWNjYjczM2MzMzZhNGQ1MTQxNjNmNDFmZmU0MjhjMiBsZWdhY3ktdHJ1bmsKKzc2MjMxIDEyOGRkNmRlMTM0Y2E4OWMyYzc5OGNmYmQzMWNmMmQ0YjZhNjllZjIgbGVnYWN5LXRydW5rCis3NjIzMiBiMmQ5MGMxYzYzN2RjNTdmOTc1ODIxODhkNGYyZDU1ZWE3MmQ4NmNlIHB5M2sKKzc2MjMzIDc2M2QyZmY3OGFlN2U4YzQ1MjlhNjFmM2U0Y2I2NTVjMTFiNDUxNDUgcHkzaworNzYyMzQgN2NlYjVlYjQ2MmM1MDNmOTZmMGZiOWUxMTIxMmNhY2UyMzY1OTNjNCBweTNrCis3NjIzNSBiMzU0YzFiNmI0NzY3YzM3YjRjMzgzNjI1NWI3YWZjMDJkYTdmNTM0IHB5M2sKKzc2MjM2IGEwOTUxZjExYmUzZDc2ZTZkYTk5OTU0MzVhZmNlNTQ5NWYxMDE1MzEgcmVsZWFzZTMxLW1haW50Cis3NjIzNyBiN2Y3M2IwMmQ2ZDI0OGNlZDgyYjZlMTE3YjVhNzAxNDYyMjExYjIxIHB5M2sKKzc2MjM4IGIyMTg4MzY1NzNmYWNlODdmNGY3Yzc0MzZjOWQ2ZTU3MjZmNDc4NmQgcHkzaworNzYyMzkgOTg1NzllOTUyYjU0YWY5N2QwYThjNmQzMzEwODAwOGI1MTIzOTU0MSBweTNrCis3NjI0MCA2ODU1MjdhZTQzN2RmOTJhOGY0Y2E0MzBlMWVjMzE4NzgyM2I2ODE5IHB5M2sKKzc2MjQxIDM1N2UzOTcwMDQ4OTc4M2U3YTBkY2Y0Njg3YWQxNWExNDliODY5YWQgcmVsZWFzZTMxLW1haW50Cis3NjI0MiA4ZTZiNDc4YTcwNTNlZWIzZmZmYjM0MzMzOGUwODI4ZWEzNmJlZjczIHB5M2sKKzc2MjQzIDY1ZTIzMDg1ZTNjYWRkZGJjZDA1YzA0MjU2ZTAxNDRmMmE1MzQxYzUgbGVnYWN5LXRydW5rCis3NjI0NCAzMjMzNWJhM2FhMGJiMTYyNjFjMDE3NWVkNmQzMDdhZmFhYWI5ZWE4IHB5M2sKKzc2MjQ1IDE5NmYyYWI5NzcxOGNiZGI2YjllMWViMzY1YWYxZmZmZWJhN2M2MTQgbGVnYWN5LXRydW5rCis3NjI0NiBiODE0NWQ2ZGI3ZDQzZDcwMWQ1NTEwNmZjZWY4NGNlMDlkYmI4ZTdmIHJlbGVhc2UyNi1tYWludAorNzYyNDcgYzYxM2M3MjRlMzE1OWFmODYxMTkzY2Y0M2NiZGMxNzJkOWI5ZTc4OCBweTNrCis3NjI0OCA5MGYxZjU3MzIxODU5ZDBjNjVmYWQ0NjU3OTA2NDJhMTM5NWM4NGUwIHJlbGVhc2UzMS1tYWludAorNzYyNDkgNWM5MDUwNDgxMzA5ZDhiNjgxMzRlYzJhYjRhYjdiZTVhZjIwODJkYyBsZWdhY3ktdHJ1bmsKKzc2MjUxIDI3N2I4OWQ1YjMyMDk3NDgwMjA1MmZhMWRjY2RhYTcwYzFlODZhZmYgcHkzaworNzYyNTMgYTFkZjUyNGZjYmM2MjJiMDc5Y2Y5YThmMjE5YjM4YWMyY2JlZjBlMCBweTNrCis3NjI1NSBmMDAxM2FkZTljMWFkMzZmYzEwNGQwOTljMzQ4NTQ4YjNkN2Q1MzVhIGxlZ2FjeS10cnVuaworNzYyNTYgYWE2NGE1MGFkNDkwNWU3OTNjZjViNjdmNThiZGVmYjYxZjIxYTE3NSBweTNrCis3NjI1NyBhMmNiN2QyNzIxYTNlNGU0ZThhMmRkOWRhNWFkMmEzZjA2N2UxYTlkIHJlbGVhc2UyNi1tYWludAorNzYyNTggMjA3YTQ2MjYxM2YzZjNlMjc1MTY4NjEwYWU0ZGM2OTdiOWM3Y2Q5OSByZWxlYXNlMzEtbWFpbnQKKzc2MjU5IDNmMmE3NmZhMjQ5NmIyYTE1YzJkZTYxMTM0YTI2NTlkNjkwOTliZmQgbGVnYWN5LXRydW5rCis3NjI2MCBjMWMxZjI4YWNiMDUzMjc5MTk5YmUzYjU5YjYzZDAzMGRkM2UwZjkwIGxlZ2FjeS10cnVuaworNzYyNjEgYjJhYjA4YzkzYTAyODI5ZjY0ZGI4YzRjZjUyZDZlNzBlMzZiMTNjMSBweTNrCis3NjI2MiA5MmY5MTcwNDM5MTk5OWZkMzA3MmQ3ZDcyMTdkNTlhNTZiMzQ4YWUzIHJlbGVhc2UyNi1tYWludAorNzYyNjMgYmVjNTg5YjQ0YWFlN2E2YzMxOGQ2NGY2Mzk1ZmViZDc5ZWJiOTEzMiByZWxlYXNlMzEtbWFpbnQKKzc2MjY0IDU1NTA0NTU0MTc5NGU4M2ZlNTc2MGM1YzQ3OGJiYTE4MjY2MzkyN2YgcHkzaworNzYyNjUgM2RiMWZjM2NlZmQwZjg2M2Y3YmU1NTk2NmU5ZDEzZDFjMzZjM2MzYyBsZWdhY3ktdHJ1bmsKKzc2MjY2IDk0ZjI3MDVkZWY1Y2Y2NTY2ODNlYjM4NmMxMDM1ZWVjNTY5ZTU4YzIgcHkzaworNzYyNjcgN2Q0YWI4Y2QwMDIzOTU1NDMyODYyODRlMDQ1ZjU2NzYxYmQ1ZDRlNyByZWxlYXNlMjYtbWFpbnQKKzc2MjY4IDU2ZTcwMWY4MjQ1ZTU2MzZhMGZmZjlkOWRmOWRhYzhlNTRmN2U3MmQgcHkzaworNzYyNjkgZmE2MDI3MGFiNzlhZTVjOGRkZGM4NTJhOTM0ODZkZTlmNGQxODhlNCByZWxlYXNlMjYtbWFpbnQKKzc2MjcwIDEyNTdhNTk3YzhmYWRhMDU3ZDYxNDZkYjI2OTFhZWNjY2JmMTYwOTEgcHkzaworNzYyNzEgM2Q5MDJkNjdhZjljYTA5MmIyZDc0M2M3YWFkMzVhNTgzMWI2NmQ1YiByZWxlYXNlMzEtbWFpbnQKKzc2MjcyIDc5ZWE0YjFlZjA0ZjI3ZGU1N2E3NTQ5NWJiMjE5OTM5YWFiMzQxNDcgcHkzaworNzYyNzMgN2Q2YmFkNWMyZDY0ZTA2YjJlMjdlZTg3ZGRlYjZjMzAwNTA0NWVlNiByZWxlYXNlMzEtbWFpbnQKKzc2Mjc2IDFhM2QzOTZkMWI2ZmNiZjU0MmJlNTkyNzQ0ZTQ4YTM4OWM4YTgxYmUgbGVnYWN5LXRydW5rCis3NjI3NyA1M2VlOGVjYzE4YTUyMmE4MjIzY2FjZGY1MTViOGNhYmU5ZDI4YjMyIGxlZ2FjeS10cnVuaworNzYyNzggYmI0ZmRhMjJlNjU3ODA4YmUwNGZmNjU5NDE4ZjRlMmZlYjU2N2NlNSByZWxlYXNlMjYtbWFpbnQKKzc2Mjc5IGM3NzdlNGI0NTUwMDRlMjgyNmQwMjllMDJiYmNiYjBiODMwN2VhOGQgcHkzaworNzYyODAgODc2ODhmZjZhY2NjNGRkNmNlNDUwZDcyZDYyZDViZjZlMTE0NjZmNyBweTNrCis3NjI4MSAwNWE4OWM4NjYzY2M3MmU4NDVmZWNkNDY4ZGFjYmI5MTBkMmE4ZjQ5IHJlbGVhc2UzMS1tYWludAorNzYyODIgMDVjNGViMDA4OWM1ZjFlNTEyYmMwMDQxYTg0NGIxZTU1MzVmNjBlOSBsZWdhY3ktdHJ1bmsKKzc2MjgzIDNiMGIxOWI1M2QzMmJmNTU5ODU1NzZiN2U3ZjZmNjI0ZmY5Mzg1ZWUgcmVsZWFzZTI2LW1haW50Cis3NjI4NCA1OTVlYzFkOTBiMmZlZmM2NDEwMGM4MTczNDlmYmIzODhmMGZhMTc1IHB5M2sKKzc2Mjg1IGZiN2ZjODMwMjcyMWQwMDhkMDc1YWRkNzM1ZmMwYWZjOGMxMzI0M2IgcmVsZWFzZTMxLW1haW50Cis3NjI4NiA0MDg4MWRiMzE2ODkzMzkyZGMyZTdlZDE4YTRhMWM1MTA1OWIzMmU4IGxlZ2FjeS10cnVuaworNzYyODcgNmE3ZmMyZTg1NjVmNzNhN2Y0NmM5MzYyYzM4ZWZhMzM5YTc4NmZkZiByZWxlYXNlMjYtbWFpbnQKKzc2Mjg4IDU5MDRhYmI3ZWVmN2IzYzhlY2M5MmI2OWQ1YjBhMjMzZWE4YWM3NzIgbGVnYWN5LXRydW5rCis3NjI4OSA0OWE1ZjFjYjFiMjU0NzBhZDFhOTI0ZWJjMjc2MWFkNWNhZDUxNDIwIHJlbGVhc2UyNi1tYWludAorNzYyOTAgZjY0MGY1NWU4ODczODU3ODlmNDlkMmUyNzZkZjAxZjNiNjcyNGE2YiBweTNrCis3NjI5MSA1YjA1YjVlOWE4ZTliNzQyYThjYzhkZDZmYzA1YTJhOTZjZGQ0OTQzIHJlbGVhc2UzMS1tYWludAorNzYyOTIgMzcwZDIxOGEwMWJjMzJkOWZiNzk2NDk5NjJkMjczZjdhNmE5MTQzNCBweTNrCis3NjI5MyAyYWE2MmZjZTBiZjg2NTM2MWVhYThlZGYxZGMxMjk5YjFmMzE4MzVjIHB5M2sKKzc2Mjk0IGIyYTM5MGM1ZGU1Zjg5MzFkMWM4ZTNkYTRmM2RjNTAzNjJmNjM4OWMgcmVsZWFzZTMxLW1haW50Cis3NjI5NSA2MmI4ZGU5ODNiMjY0MmI4Nzk0MjlkZWU5ZTI0OGEzMjE2NmNkNjBkIGxlZ2FjeS10cnVuaworNzYyOTYgYzIxN2UwMzMxZDRiMmUzYThkNTRmMjYzN2ZhY2QwZDEwMGY2OWM5OSByZWxlYXNlMjYtbWFpbnQKKzc2Mjk3IGM0NThmODEzYTcwOTRiZmYwNTgwYzM4YWI5YWU5YTBiYmI4ZDcyZDYgcHkzaworNzYyOTggM2ViZjkwN2RiMDI4ZTEyYmE3YzE3M2ZlMjI3YmY5YWI5ZTYwNjEwZCBweTNrCis3NjI5OSA5NTA1YWZlODgyM2Y5NGMwNzkxYjRlN2EyMzA4NmJhYWQwNTc0MTA5IHJlbGVhc2UzMS1tYWludAorNzYzMDAgMDY5YjY2Y2ZhZDNmZDlmNjVkZTcwODQyN2ZkMjE4NzZmNWVhYzBjZCBsZWdhY3ktdHJ1bmsKKzc2MzAxIDc4NTIzMWMxYzU1YTkxOTE1NjdiYjczMzg0ZDBhZmVmYTU5YTQwMmIgcHkzaworNzYzMDIgMmVjYzU5MzZiMWYyMzMzZjgzZDMzMmRlZjgzMTcyOWQyMTFmMzQzMCByZWxlYXNlMjYtbWFpbnQKKzc2MzAzIGYxMzVmZGI3M2Q4ODU0MzdiN2NiNTlkNGM4NTc1YzNmODdiMzc5MWQgcmVsZWFzZTMxLW1haW50Cis3NjMwNCBjNTA5OTgxOGUwZDRlNTkwY2RlMzdhNjdmYzk1MzJkMTJhZDZlMGUxIHB5M2sKKzc2MzA1IGFiYWYzNzI0YmU3MTE3ODZlMjE2MGJhZmFjNjg4YjQ1N2VkY2E5ZGQgcmVsZWFzZTMxLW1haW50Cis3NjMwNiBhZmIzMzQ4YjM3MTU2MjMyZjIwMTU5YjliNzQ2ZmU4ZjAxNGI3N2VjIGxlZ2FjeS10cnVuaworNzYzMDcgMTUwNjEwY2FlODA0OTI5ZGM4ZDUzMGQ0NzljMDJkZGI5MGUwMWQ4MyBweTNrCis3NjMwOCA1MTAyODcwOWFiYzMyN2NmNzc1NmZmYzQwYWYwZTQ0MzYwMjUwMDQ5IGxlZ2FjeS10cnVuaworNzYzMDkgODM2NjQyMjQwNDY0YWJkNGE4ZTAxZmIwZWNjMzZkZjE1NDRiMTBmNiBsZWdhY3ktdHJ1bmsKKzc2MzEwIDIzYzEzOGM0ZWMwNWVjMTIyZjhhNTFjYjBhNjI2NTVlNjZiYjZkNmMgcHkzaworNzYzMTEgMTU0ZmIyNzBhODIwZjNjZDAwMjllYmM0MWE2YTY0M2E2NTE4YjlmMSByZWxlYXNlMzEtbWFpbnQKKzc2MzEyIGViMWMwM2EzN2EwMjk1ZDVhYTZkZTNlMTk2ZjQ1YmFhNTAyNWRhZTYgbGVnYWN5LXRydW5rCis3NjMxMyBjMDg0MjNkNzBiOWYyMWE3MTE2Mzk3M2IwOWQ1NDUwYjkxYWU3YTNiIHJlbGVhc2UyNi1tYWludAorNzYzMTQgZGY1MzY0ZmMwZTVjOWQ0OTAwYjc2MGU3YTRiMGNlY2RjMGM1Y2Q4MSBweTNrCis3NjMxNSAyNWI2NDBkMjM0Zjk1NTVjM2JkMTUxZTI4ZTQ5N2I0YjgyYWEwZGE2IHJlbGVhc2UzMS1tYWludAorNzYzMTYgMjUwZTFmNDc1NTY4YWEyZTZjZTI2NjEyNGFmOGFhMmU1MTY0ZTVmZSB0YXJla19zeXNjb25maWcKKzc2MzE3IDY2NGY2MzAxOTQwZjgzMmU2M2Y1YWY2MjNiMTM3MDY2NzQ1ZDY1OTggdGFyZWtfc3lzY29uZmlnCis3NjMxOCA2MTU0NTI5MGNiNTE0NDk2NTc2YjJmNTVmMTc4MjQwMWZjMzdiYTJhIHB5M2sKKzc2MzE5IGViMjM1ZWI0NWQzMjliZDM2MzQwZGMyYzQ3NzQ1NGE2ZjNkNWI2OTUgcHkzaworNzYzMjAgZjExMTJjMjcwMGIxZTY1MTEyYTlmYzViNTg5MjlmNzNiMjM5YmM5NSByZWxlYXNlMzEtbWFpbnQKKzc2MzIxIDQwMWQyMjM3MDViNzc4MWZjODlkODE2ZjM3NzcyZDEyNzQ3ZDExYmQgbGVnYWN5LXRydW5rCis3NjMyMiAxZTAzZmU1YTExYjQyZjJkMGM1YjY4N2E4OTZlODM0NTY1NGNlOWZhIGxlZ2FjeS10cnVuaworNzYzMjMgOTY3MGZlNmU2ZDE0ZGNhYWEzZjAwOTc0NTgyZTgyOGYyOTczOTM0OCByZWxlYXNlMjYtbWFpbnQKKzc2MzI0IGZkNDE3Y2Q2NDM0MTg1YWI2MGQ3MDk1NDkxNDM5YTBkZDI2M2NhMmUgcHkzaworNzYzMjUgZjYyOTMwZDBmYTcyZDI1NTQwNDVkNzU2YTgzNjcyODBmNmZkOTcxZSByZWxlYXNlMzEtbWFpbnQKKzc2MzI2IGM4NDdjNjg0YzJjNWVhMDkyYjY2MDJjMDZmNTZiN2RiMWRiYmFkNDMgbGVnYWN5LXRydW5rCis3NjMyNyBkM2IzYThhODA5MGZhMTlkYWI4NTM1NWY1Y2Y1N2NlY2MxMTJhYjFjIHJlbGVhc2UyNi1tYWludAorNzYzMjggYWM3NjhjOGUxM2FjYTg4YWQ2YjU3N2U4YTJmMDhmZDExNDY3NGYzZiBweTNrCis3NjMyOSAyZDNjZGE2YjhjOTUyMjEzZjM3ZjBjZjlhNTk4N2Q3OWM3ZDcwNzgzIHJlbGVhc2UzMS1tYWludAorNzYzMzAgZjY4MGMxZmI3ODA0ZjgzMjI1ZmRkMGJiNjU3NDJhYmYyZWE5Y2Q0ZiBsZWdhY3ktdHJ1bmsKKzc2MzMxIGQxMjc2NzllY2ZhYTZkZTQ5NTQ1OGNmM2U4NjMzOGQyYWFkMWQxOWYgcmVsZWFzZTI2LW1haW50Cis3NjMzMiA5ZDkzNDJjYmY5MzUzZTRlNTkyMTk2M2I0ZmUwY2U2Y2I4MDA0MDAyIHB5M2sKKzc2MzMzIGNlYjNiMzZkZDY4MWVjYzA4MjRlYjY4MDE3M2RiMDUzOGM3YzU4ZmQgbGVnYWN5LXRydW5rCis3NjMzNCBjNWExMjJjYjEyODhhNmM0N2E5NjZmZTFkYWRmMzlhM2RjYzg1YTQxIHJlbGVhc2UyNi1tYWludAorNzYzMzUgNDM5MWEyMmFiMWYwNGE5Mzg2OGNlYzVkNzI2YzEwZjU4YWVmNTQzZiBweTNrCis3NjMzNyA0YWE0YzE5ZGZhZWRlY2Y3ZDQxYjNjNGQwMGU5Y2E2NTFkMDg2N2M3IGxlZ2FjeS10cnVuaworNzYzMzggYWRmOTI3NGQzZWRjNDEzZmMyNmRmMDdkM2VmMjhhNTM2ZmYzNDllYSBweTNrCis3NjM0MSBmOTNiMmE2OGRmYjQyMDc0ZmY2ZDM3OWU2ZjYzOGQ0OGExYTgwMWZjIHB5M2sKKzc2MzUwIDM0OWI5N2ZmNGMyYjc4MzI0ZmFmM2Q0NzM4ZTZlYWZmYjM3ZTA5NjYgbGVnYWN5LXRydW5rCis3NjM1MSA3MTgzZDZiOTMwYmE5MTI0YWNmOGI0MTBjZTEwZDJkMWM4YzRlMGIwIHB5M2sKKzc2MzUzIDI2MjgyMTZiYzY2ZDQ3NmY3NzY5M2Q4MmM3MjE0NjAwZjIwYTk4ODIgcmVsZWFzZTI2LW1haW50Cis3NjM1OCBhNzdhMmQ3Y2VkN2RkN2MyZTNjZWM4MDA3N2VlYTEwMjg2ZDFiOTBmIGxlZ2FjeS10cnVuaworNzYzNTkgMTg0ZWI5MGIyZTNkNzVmYjkxYzQwZjkyMTRlZTY3MDM3MjlhMTlmOCByZWxlYXNlMjYtbWFpbnQKKzc2MzYwIGQ2YzIxMDY3NzliOTBjZTJjYjA5NDY3NmQyYjEyNWM5MmM3MWNlNGIgcHkzaworNzYzNjEgM2M2MjAzMWIyNTA2ZGVjZDU3ZTc1YzM1MWVjZTk3MjI2NWIwOTEyMyByZWxlYXNlMzEtbWFpbnQKKzc2MzYyIDNkMmIwNmFhN2IzNmZhMGM2NGI2M2M3NGMzZDlkMDAwNjIzY2IzMjggbGVnYWN5LXRydW5rCis3NjM2MyBmMDE0OGQ5MmRiN2ZmNTA2MzMzNzNjMzgwZjBiMDE2YjZhMWY4N2IxIHJlbGVhc2UyNi1tYWludAorNzYzNjQgZWRhNTZkMDc3NWJhY2Q3ZGIyZmM2NjE5NTk5Mjc2YWM2YWMwNjAyZiBweTNrCis3NjM2NSAyNGFiOTFmYjI1YWJmMDdlZGFhYTQzNTFkOTlkNTAwZjQ3YmQ2NGUyIHJlbGVhc2UzMS1tYWludAorNzYzNjYgM2QxOGNkMWQwNGE0NDY4ZjE4MWYyMDg3NmY0Yjc1NDY4NmFiMzBmZiBsZWdhY3ktdHJ1bmsKKzc2MzY3IDRlZDEzMmQ2YmI3MDAxMjM4ZjJjMTMwNzE1OTJiYWMzNzEwMDdlMmIgbGVnYWN5LXRydW5rCis3NjM2OCA2ZTNjYzNhZGYxZGM0NDBhM2IyZGMxOGIyNjM2M2JhYzc1MzBiODQxIHB5M2sKKzc2MzY5IGE3ZjYxOTRiNzhjYzkyZDI4MDg4YzdhNGMxOWIzYjBlNzZjYTE3MGMgcHkzaworNzYzNzAgZWQ1NGExYTkxNGI0YzY2MDUzMDBlMmJlMGEyNmM1NWRmNWFmN2RmMSByZWxlYXNlMjYtbWFpbnQKKzc2MzcxIDVlZjM0YjI5NzY2Y2YxYTI3NjMxN2Y4OWNiZDI0ZDIyYmE3YmRlZWYgcmVsZWFzZTI2LW1haW50Cis3NjM3MiAyYzVjNjY4N2YxYzhlYjU0MGYwZjBhNzk2ZTNjZmNkZjAwZjFhYTdmIHJlbGVhc2UzMC1tYWludAorNzYzNzMgOTJlMDZjZGJlYWI5YjY4NDI1ZWMyZjljNTIyNTc3YTYwNGVkNzRkMSBsZWdhY3ktdHJ1bmsKKzc2Mzc0IDUwZDM1NTMyNGM1MDYzMjdkZGFkYzczNjJlYzAxMWVmY2MyMGVjMDcgcmVsZWFzZTI2LW1haW50Cis3NjM3NSBiOTZmNzhjZTgzODMzOTNiYzFkYmY0NDEwYzRhZDRiZThmMDc4MGUxIHB5M2sKKzc2Mzc2IDMzM2RkYTMxYmQ3MzMxZWU2MTE3YzIxOTI0ZjdhY2Y2YjdlMGRlMzEgbGVnYWN5LXRydW5rCis3NjM3NyA0MWQyOWMxN2ZkNDA1ZDZhZTEzMmQwYmUzYjllMmJiNDE5NGZiMzJkIGxlZ2FjeS10cnVuaworNzYzNzggNDYzM2VkMjM3OTcwZDc0NmY4NGI5MWZjMDBkZTI1NjQ3YTlkMzY2ZSByZWxlYXNlMjYtbWFpbnQKKzc2Mzc5IDFlNTM0ZDc5NTBmODBlODkzMzcxNjg3ZWE1ZWJhYWMwMWMxN2JiMzEgbGVnYWN5LXRydW5rCis3NjM4MCA5ZWQwMmRmNzJiZDYyZjNlNzEyZmRlYjQzNzBmN2JlZWRlMzY0MTY2IGxlZ2FjeS10cnVuaworNzYzODEgZDhiY2M5ZGUxNjA1NGM3OWU4NDBmM2Y2OGViN2FhYjM2NzFiNTgwYSBsZWdhY3ktdHJ1bmsKKzc2MzgyIDBiY2MxMmM0NjAxNWE0ODg4NTU3Y2RhYzllMWQyMGUyNDVmN2M0YWEgbGVnYWN5LXRydW5rCis3NjM4MyAwNWFmMDQ5MDBiNmI5MWUyZWQwMGRjNDM1OWY1MGZhY2RhMDM3YTlkIHB5M2sKKzc2Mzg0IDcxNWMwYmFhOGIyYzhjNzhhY2Q1YWRiYjI3ZjMyNTNjMTc0YzhjNGUgcmVsZWFzZTI2LW1haW50Cis3NjM4NSA1ZTVjOTdiOWM4Mjc5ZjYyYzgzODA4MzYyYjdkZDMxMWQ5NTRlMjJjIHB5M2sKKzc2Mzg2IGEzNDViYjUwZWMwZjg4YzVkYThkMzFiMDEyODI5NDc4ZmM5ZmYyOTkgcmVsZWFzZTI2LW1haW50Cis3NjM4NyBkODAxOWQxZDU2ZjMzNGY1MmU5NmI3ODFiYmM0YWJjNDcyMTRiMTk3IHJlbGVhc2UzMS1tYWludAorNzYzODggZWQ1OTA3NzgzOGFkZTk5MjdhZjZkNDkyMDc1M2MxMDZkOTBiZjA4NSByZWxlYXNlMzEtbWFpbnQKKzc2Mzg5IGIzMWEzM2MzNmYwODc0Y2ExNzE2OGExNGVhNjdkNWU3NGFhNmQwNGEgcmVsZWFzZTMxLW1haW50Cis3NjM5MCBiOGEwYjMzM2U0NjllMWE4OThmMzE0M2EwNzhlMTcxYTg5MDdmZjMxIHB5M2sKKzc2MzkxIDhkMDZlNDUwYmM5OGNiNmE0ZjczYmE5Y2ZhZjJkYTk3OGM2ZjczYzMgcHkzaworNzYzOTIgZjE1MjY2NzIwMGFlOTA0MjRjZjJmZGNiNWRhMGI4NjYwNGM4YzU1MSBsZWdhY3ktdHJ1bmsKKzc2MzkzIGE3OTBmODRmYmFmYTI4MThlZTZkOThhMTZhMWM1MDY1MGI2ZTgyYzAgcmVsZWFzZTMxLW1haW50Cis3NjM5NCBmNzNkMTM3Y2ZiZDA0NmY3YTRhZGE2MTBlYzU4NTIyNGI3NDkzYmI3IHJlbGVhc2UyNi1tYWludAorNzYzOTUgODc5M2ZmOGY0ODI2MWQ5MTQ2ZDQ4ODBjYzRmNWVkNzYxZDFiZjIzMyBsZWdhY3ktdHJ1bmsKKzc2Mzk2IDE2NmY3YTNiNzNmYzYwYzYzNmQ2NjJhYWJhMDJlZjlmM2RhNzRiM2EgcHkzaworNzYzOTcgNDJhYWVkYWVmYmNiNjVlMGI5NTY5ZTc3NWY2YzUyYmRjMGY2MGUwNSByZWxlYXNlMzEtbWFpbnQKKzc2Mzk4IGQ1Nzc5ZTE1OWRkYjFhOGRhMjFjN2NiNzZjN2E1OGZmZGQ2YzBiYmMgcmVsZWFzZTI2LW1haW50Cis3NjM5OSBjMGRmYTliZDVjN2Y4MjMzYjgyNjVkOTJlNDhkMzRiMWNmMTZjY2FlIGxlZ2FjeS10cnVuaworNzY0MDAgNGI2YjQ5NDNkNjlhNDBiMGI0OWE5MmMzZWRiM2RhZTE0MTE3M2UyYSByZWxlYXNlMjYtbWFpbnQKKzc2NDAxIGY1N2YwYzZhYWU5ZDgyZDgzYmNjZmQ5MTRjNTQwNjYzZDQxZmE0MTcgcHkzaworNzY0MDIgYWI1YjdlMGE5MTMxYWRiYzNmYWFmZmI4ZGI3ZDg4YjAwMjVlMDVhZiByZWxlYXNlMzEtbWFpbnQKKzc2NDAzIGMwNzlmY2JmYzc2MTdiNmI5ODFlYzZjZmVkZmY0OWU4Y2U2ZWJlMzMgbGVnYWN5LXRydW5rCis3NjQwNCA1YjU0MzI1ZWY2ZjU3NjMxMzhhY2VkYTk1MTEyZjFiMzJmZDQyZTA2IHJlbGVhc2UyNi1tYWludAorNzY0MDUgMzk5ODljNjZkYjE3OGEyMThiNTkxM2Y4NTczMzhlYzI3OWZlMjk3NSBweTNrCis3NjQwNiBhOTJlZjEzNmQ5ZDBjZmY5MTZiODNhYTUxY2RlMjU5Mzg0MjhiYzc3IHJlbGVhc2UzMS1tYWludAorNzY0MDcgNGZhZTgxNjhjNDNiMTMxODhlMzBjNDExMDhkMDUzN2IyODRhN2ViZSBsZWdhY3ktdHJ1bmsKKzc2NDA4IGI5NmFlM2Q4YWRmZDEwOGFiMzdlOGIwMjEyNzA4M2Q4NjBlMWI5MzUgcmVsZWFzZTI2LW1haW50Cis3NjQwOSAyZGQ3OTQyZGNmZDUzOTBhNjZmOTMxNTQ4YWY4YjcwMzU1YjI0YzNhIHB5M2sKKzc2NDEwIDI0ZDFlMDZjNjI5YzFhODYwZjlkYzVmNWUyMjNiMThiMWRmOGY4MzMgcmVsZWFzZTMxLW1haW50Cis3NjQxMSA2N2MwZjkyY2U1NWM3N2JhMmU2Y2Y3ZWFkYTQ0ZmFiNWY1OGJkZmViIGxlZ2FjeS10cnVuaworNzY0MTIgYTRkOWEzZGJjNTMzZmIyZWYyZTFmZDcwYzVhMmU2NDM2ZjMyNGEwOCByZWxlYXNlMjYtbWFpbnQKKzc2NDEzIDk4YWIzYWRiMDQ1Y2UyNmVhNmRmNjlkNDE2Zjk1YjA0NDAwMGM4OTMgcHkzaworNzY0MTQgMjI1NGM3ZGE5Nzc4ODA0NjMzMGVkOTFkNDRjOTBkYWVlODdiM2Y5NyBweTNrCis3NjQxNSA4MjM4MDgxNmU3ZGIzYjI2NDcxYzA2ODA2NTFiYWE5YzgzOTg2ZDU0IHJlbGVhc2UzMS1tYWludAorNzY0MTYgZWQzMGJjZmZhMTQ2NzJmMGUzMzQ5ZmMwNzdjZTU5ZGU3N2IwOTYwYSBsZWdhY3ktdHJ1bmsKKzc2NDE3IDZhYTUyOGM1MDEyODRjNWY3YzJkMTViMmEzOTY0MjEyMTdiNzM0N2UgbGVnYWN5LXRydW5rCis3NjQxOCA0NzViZjhiNTg0YTkyM2IwNDhmMjM4NzJmM2NlOWRiYjZkY2YyMTg0IHB5M2sKKzc2NDE5IGY5ZjM5NTBiNWVjNzU2NTIwNzFlNTE3OTkyMzQ4MGJjMWQxYzkxMDAgcmVsZWFzZTI2LW1haW50Cis3NjQyMCAxYzM1Mjc1MGViZjIzZjk1MTY2ODYzNmY4MTUzNzhkZTM4M2RhNDY3IGxlZ2FjeS10cnVuaworNzY0MjEgZjJkYTQ4OGI0YjdiMzkzNTZlMzQwNjdiZDJlZmRiNTQ3NTdlMmE0NyBweTNrCis3NjQyMiBjZDViMTVjMjlhMzk2ZWU5OWNkMGJiZjg0NGJhMzUzNGIzM2ZlYjg1IHJlbGVhc2UyNi1tYWludAorNzY0MjMgNmUzNzAwMTNmM2EwYTU5YTc5OTQ4YjYzM2IyZWU1YmYyOGNhZTNiNSBsZWdhY3ktdHJ1bmsKKzc2NDI0IDEzNzExNWUzOTVkOGRkZmI1N2VmZDQyMDRhZjRlMTE2YWRiZDZmODAgbGVnYWN5LXRydW5rCis3NjQyNSAxOGFmMGNlMGE1OGJkOGI2YmJjNzJhMjgwYTFjZGNiOTg5ZWEwZjBjIHB5M2sKKzc2NDI2IGVhZWJlMjQ2MDM3N2M1NWJhYzIwNzg5NWFlNTliZDI2YWEwMDU2NjQgcmVsZWFzZTI2LW1haW50Cis3NjQyNyBmZDZlMmFiYWUxNGU0MmY1MmZmNjg1ZmIyZDY1MDQ0MzVjMTI0ZjMxIHJlbGVhc2UzMS1tYWludAorNzY0MjggZTJiMmNlZWZhODJhY2ZkYjVhOThiOTQwYTNkMDQwMDMwOWNiYWZlYiBsZWdhY3ktdHJ1bmsKKzc2NDI5IGU4M2UzZGI2MmZjNzhkNGUzZmRhYThmMzY1ZGU3YzMzMjdjNGQ3MmUgbGVnYWN5LXRydW5rCis3NjQzMCBlM2M5OTRjMjlhMjI5MjdhMjk4NjljYjQwNWJhYTY1YzAyYzVhMWZiIGxlZ2FjeS10cnVuaworNzY0MzEgYjgxZDYwMTEwZjg2Zjc3ODEyMjllNWQwM2JkMDEwMjMxYTA2YmUyNiBsZWdhY3ktdHJ1bmsKKzc2NDMyIDJlM2VjM2JiNGJlN2NiZmQyYTZkZWJlMTAyNmFmMmZhNTMyNzM1NmUgbGVnYWN5LXRydW5rCis3NjQzMyAxZDkyM2ViYjQ3NjAwZjhhMzFjNjg4YjFlZmI2M2ZkZWEzYzJmZTNlIGxlZ2FjeS10cnVuaworNzY0MzQgN2E1Y2I0ZGVjZjZmMjhlOGE1ZjA5ZDkxNGFjYmUxZDI4N2E1Y2NhOCBsZWdhY3ktdHJ1bmsKKzc2NDM1IGI4YmQ1MzYwODQxYmFhNWRlNWI5ZmMxMThkY2QzMjMwYzVmOGU2NjUgcHkzaworNzY0MzYgNWFlZWVlMGVhZTVmY2Y1MzZiZTMzZDg2NzBmYWIyNDZjOTgyODE2NSByZWxlYXNlMjYtbWFpbnQKKzc2NDM3IDYzOWJhMDM2YzIwOTQ4YzQ4OGViN2Y5NDM3YTIzZjZjN2YxMmJjYzQgcmVsZWFzZTMxLW1haW50Cis3NjQzOCBhZjg4YjFkMjViZjI4ZWJjOTU1MWU5NTE4MDE5YzZhZTEwMGRlNDYwIGxlZ2FjeS10cnVuaworNzY0MzkgNTEzYzRiMTU3NWYyNjcwMmJjMzFmZWZlNzA0MWZmNDVhZDkxODYxMSBweTNrCis3NjQ0MCA0Yzg3MDhhNzkxZTYwMzJlMDI4Y2Q5NTRiNDQwNDk0N2Y2ODk2YzQxIHB5M2sKKzc2NDQxIDRkNTU2YzI3OTI2YTYxYzczMjc2N2FlZjIwMjMyYjJlMjlhZjE3MDMgcmVsZWFzZTMxLW1haW50Cis3NjQ0MiBkY2JjYzhjMTQxNzkzNTAwNzc3NTRkNzMyZTA2Y2VkNGMxNjQyZjVhIHRhcmVrX3N5c2NvbmZpZworNzY0NDMgNGUyNzBlYWI0NTJkZjMwODE0MGE5YjVkNzZjMDU2OTNmNTAxNjc0YSBsZWdhY3ktdHJ1bmsKKzc2NDQ0IGQ2Zjg1NTJmY2U3OWZhZmQ0YWExZTNjODZlODU2Y2NkMDJiMzAxZjEgcHkzaworNzY0NDUgYmM3NjQzYTdhNWU3YjI4N2ZmM2M5ODc2MzcyY2I2ZGI4MDZkMjhiNiByZWxlYXNlMjYtbWFpbnQKKzc2NDQ2IDBlZWIzYTNlNzllZjg4OGY3MmE4YmE3YTMxMGM4OTdkN2UyZGVmMTEgcmVsZWFzZTMxLW1haW50Cis3NjQ0OCBlYzUyYzQxOWI4MjRlMWM1ZTA4ZjNhOWJkNDc4MmNlMDY5MzllZDJiIHB5M2sKKzc2NDQ5IDM3M2Q0MmYyNmU5NjZhN2RhODA0OTE5NmUzNGQzNWEzNjI4NjhjOTEgcmVsZWFzZTMxLW1haW50Cis3NjQ1MiBkZTA3ODgwYTUzZmZhNzkwNGIzM2UzM2RhMDY1ZjM1ZWYyMTAxYjI3IGxlZ2FjeS10cnVuaworNzY0NTMgZDZjZTE4YWQ4NDY3MTY5ZTE4MmVhN2UyMTVkOTA5YjQwZThmMzYyZCBweTNrCis3NjQ1NCA1NmYxOTA4MWQ3YmNlOTdlY2QyYWMwYTVmODJlMzE3NGZlZjQ5NTdlIHJlbGVhc2UyNi1tYWludAorNzY0NTUgZTFkNzMyNTI3YzdlMzQ0NTdiNzlkZjA3MDYwNGNiOGNhNzllNGUzYSByZWxlYXNlMzEtbWFpbnQKKzc2NDU2IDI0OGM0ZmE1ZmUwYzk4Nzk1YTgzNjFjYmIzODUzZmFmMmNkYzhmNDQgbGVnYWN5LXRydW5rCis3NjQ1NyAwODY5ZTFhYjU3MmUzN2MzMzU0OWEyYmQ3NzIxM2Y2NDdiYjQzM2Y4IHJlbGVhc2UyNi1tYWludAorNzY0NTggYzQ4ZmQ2M2MyZjYxYTA4YjAyMmQyN2EzM2ZkMTI4NDA2MWM1MGZhZiBweTNrCis3NjQ1OSAwOTg0MDk5YTk0MzEzYjJlZmViZDUxMGFiYTUxMGExNmI1MDY0Mjc2IHJlbGVhc2UzMS1tYWludAorNzY0NjAgNzA0MjE0YjljYjc2Yzc3M2QxMDk1ZTc1MDFjOTZmNTY2MTk3NDhkNSBsZWdhY3ktdHJ1bmsKKzc2NDYxIDI2MzllYTdiOTJlZDA0YzY5NmU0ZDc1MGQyMTMxZmU5YjkxZGFlZmUgcmVsZWFzZTI2LW1haW50Cis3NjQ2MiBhZGE1ZjZlZWUxY2IxMjFkNDM3MmJhMmQzOWJkY2I3YzhiNGExZTYzIHB5M2sKKzc2NDYzIGMyZWNjYTVmZjY1OTNjZGIwOWI0MGM0MTUyNDU5MjdiMTRlOTUyNWYgcmVsZWFzZTMxLW1haW50Cis3NjQ2NCBmNTU0ZGZmZjc0NTA1NzY1NmY1Y2E3MzIwZDg3ZjZkZTM2YjUyNTViIGxlZ2FjeS10cnVuaworNzY0NjUgODA4ZjljMGQ0YWM0MDBjYmY1YjIwMzljMDM3YjFjYTRjYTRmNWZjZCBsZWdhY3ktdHJ1bmsKKzc2NDY2IDVjZDk1ZTU3NzcyYzgwYzdmYmI3NWVhZTViZWY3OGJjNzQ2MThkYzAgcmVsZWFzZTI2LW1haW50Cis3NjQ2NyBjOGQ2OWEwNmIzM2JiZjYxNjQ5YTkwZDM2NzcyMWI1Y2U3NDYyY2ZkIHB5M2sKKzc2NDY4IDgxOGNkNDBkZjg2NWYyNjc4MzEzMGQ1MDNhMmI2NTA1NTIxNTc2NzkgcmVsZWFzZTI2LW1haW50Cis3NjQ2OSBhYTk2MjdjNDEyMjJjYWEyYTRhMmZiNmMxZDA4ODA3MjFlNjMzMzdmIHB5M2sKKzc2NDcwIDNhMmIxNDlhZTY2ZTgxNWYwODNmMjM2YzAzMmNiOTk0MzUwMTkwODkgcmVsZWFzZTMxLW1haW50Cis3NjQ3MSBmMDE3YTM0ODY0ZTJiYTUzNzAyOTg2OWQ3YTg5ZjQ3ZDZiNGFhOWE4IGxlZ2FjeS10cnVuaworNzY0NzIgYTdlYjFhZTRlOTE5MDRiYmU0OWZjM2M0ZWFmNGUxZTBmZjU1MjZkNSBsZWdhY3ktdHJ1bmsKKzc2NDczIDMwMTdkODJmMDc1YWNkYjExNGE2YzllYjBlNTE2MzgyYWUyNDU1NjcgcmVsZWFzZTI2LW1haW50Cis3NjQ3NCAwOGEwYzk1ODhmMTNmMGY1ODVjNzlkMTFmMjA2NmUxNjViYTQyZjlmIHB5M2sKKzc2NDgzIGI5YjY4M2VlZGVlMTE2NzkwYzAxZDc1YjU1NjFiZmYwMTAyZTgwYzYgbGVnYWN5LXRydW5rCis3NjQ4NCA1MTE2ZWY3NzlhODAxZjFjZGIxMmFiMmU3OGVmNmUyNzQ5OTUwZTEzIHJlbGVhc2UyNi1tYWludAorNzY0ODUgMzU3YWQ5MGI4MTE0Y2Y0MGY3MmJjODg4Y2VlYzdhNjRmYTg2N2NlYiBweTNrCis3NjQ4NiBiN2ZiZWYwNzdlYWUxM2NiNTBiZmFlODhhYmM5NDZmY2FmOTk0N2Y0IHJlbGVhc2UzMS1tYWludAorNzY0ODcgMzk0OGI0YzcyOWQ3YWU5NGFkNzVmNjQxZmM0M2ZjNzRiNjY5ZWJlMCBsZWdhY3ktdHJ1bmsKKzc2NDg4IDUxNmM2MjJhNGY5ZTEzODJjMjZkMzc2N2IxNzA5ZjhlZjM4MzAxZTEgcHkzaworNzY0ODkgMzM3ZWJiODI5YjhjYTJlMzc3MjE0MWE4NGEzZTc4NGM5MjVmM2I2OCBsZWdhY3ktdHJ1bmsKKzc2NDkwIDlkY2EzODQ3NDg1NDljODZkODQ2ZDFlNWVkMzMwYTYwOWFlNTZlZTggcmVsZWFzZTI2LW1haW50Cis3NjQ5MSA1MzVlMDhjZTQzZjU3OWNjNmU5NjRlN2JlZTgwYmE0ZmY3MWQ1NGQ3IHB5M2sKKzc2NDkyIDU4YjExOTFlNDUxZmEwMDNmZTMzOWFlMzk0NTUyM2MwZWRhYmVkMjYgcmVsZWFzZTMxLW1haW50Cis3NjQ5MyA2ZjA0OGIxZTUyODA2MjMyM2Y5ZTUxYjkwZjY4ZjY0OTc5MjdhMGI4IHJlbGVhc2UzMS1tYWludAorNzY0OTQgNzY1OTA5ZmM3ZGVjOTZlM2VlNGUxMTgzOTk4MTY2MDVmNzg1N2E5OCByZWxlYXNlMzEtbWFpbnQKKzc2NDk1IGZiZWY1ZmNjYjBjODhmOWNmYmQwNzU3NjUxMDVlMjQzNTkzNWMwMmIgbGVnYWN5LXRydW5rCis3NjQ5NiA4M2Q5NGU3MmYwMWNmZmEwYjI2MWRkNTVjZjlhYTQ0NGVkOGZhODFhIHJlbGVhc2UyNi1tYWludAorNzY0OTcgZmI3OTk0YjI5MTAxNzNhNGM3YWUxNDIxMWIwN2IwOWFkY2FhOWJmMiBweTNrCis3NjQ5OCAxN2U1OTBiZTRjNWFhMmE2NjhlZTQ5MWEzN2FiMTk4NGY0YWVjY2U0IGxlZ2FjeS10cnVuaworNzY0OTkgY2IzZWFjNDIxY2Y5NmVmOGUxODM3NGExZTIyZjIxOGNhMmEyMjlmYyBsZWdhY3ktdHJ1bmsKKzc2NTAwIGI1MWZkYTc1NGY1YTVlMzE3MDRiM2ZlMzEzYzlhZmE3N2Y4MjJmZGMgcmVsZWFzZTI2LW1haW50Cis3NjUwMSA5ZTc5YTZhZmEzZjUzMTAwYjZhYTQxYThhZDY4MWUzZmYwMWNjMzY5IHB5M2sKKzc2NTAyIDJjZDFmYjEwNDIzMzQ4MWExMGU1NzBmNzY5N2NhYjg0Mzg5ODc5ZjQgbGVnYWN5LXRydW5rCis3NjUwMyA5MDI4MjgwNGNkNTAxNjdlYTBjMjhiNDliZmJjOTE0MDY5M2Q4Yzk5IHB5M2sKKzc2NTA0IGFkNTE2OWUwNWRjM2IzOGE2OThmZDYzOTRlYWNhZmMwMTUwNzc0ZmMgcmVsZWFzZTI2LW1haW50Cis3NjUwNSAwMThiMjBiMDM5YTg1NGI1YTE2ZWNmODBmYjczNWM3ZjE4OWZiYzFiIHJlbGVhc2UzMS1tYWludAorNzY1MDcgNWVhMjI2ZDMyZjZkNzdlNTgxOTdlNTZiM2UzYTVkNmM2ZDk4YzlkZSBsZWdhY3ktdHJ1bmsKKzc2NTA4IDFkMTU3ZTJjZTk0OTNmNDgzNDg2ZmFkMjkxMzFlNjc4OTQ4ZjBjYmEgbGVnYWN5LXRydW5rCis3NjUwOSA4NWNkOTM1MjU1Njg3ZDNiODAzZjQ5ODY1ODQ0MzQ1MzYyYzU3MjM0IGxlZ2FjeS10cnVuaworNzY1MTMgYzc3MzJmODg5YzQ1NDhhZTcwY2Y5YmQxODhlMzNhYmI4ZmRkM2I3OCBweTNrCis3NjUxNCAwMjJjZDBmM2M1NThlZGRlMTY5ZjZiYTU2MmM3ZDE0MTUzNTZjYjQzIHB5M2sKKzc2NTE1IDBkYjY3MTUzZDI1ZjE0YzNlOTdjN2Q4YmYxMDk2Yjg5MWJlMDY4OTcgcHkzaworNzY1MTYgMTM4NmQwZTllMGZjN2E0ZDYxN2Q4MGIwYmRhYjFiNDBkZTYzZDQ3NiBweTNrCis3NjUxNyA0MWJkMzEyMzg2NGQ4OWQzNTExYmJiNzc1ZTVmZTQyZmZhM2VlZTZlIGxlZ2FjeS10cnVuaworNzY1MTggZTViYzM4MmNjZjc1YjFlZDhhMzBjYTdmYjVkMjQ4OGQyMzE2MzM2MSBweTNrCis3NjUxOSA1MDg2NTRjZWUxMzdhOGVkMTU4MTVhZTczMGVkZjgwYTE4Y2EwNDEwIHJlbGVhc2UzMS1tYWludAorNzY1MjAgZTYxMzNkMTU0Zjk4MTljNjQ5ZDhlYWRiY2JmZTQyZTQ4Y2YyMWUwNSBweTNrCis3NjUyMSBmZWE1MzI1OGFiN2ViZWVkMTA4ZGM5NzFlYTkzNjJhYWU0ZmZhZWU4IHJlbGVhc2UyNi1tYWludAorNzY1MjIgZGY4NmM0MjBlOTdhMGNjMTU3YzY4N2U4ZjNiODJhYzJjMDVlZDdkZSBsZWdhY3ktdHJ1bmsKKzc2NTIzIDg1ZTFlMTNiNDk4YTcyYzAzMmQ4MGQ5MmY2YTlmZTU0ZWM2OGY4YmEgcmVsZWFzZTMxLW1haW50Cis3NjUyNCAyZDM4OGQxYTgzZjQyZTI0NDZhZWY4ZThjYzFmZTRmMjQ0NjlhZDk3IHB5M2sKKzc2NTI1IGExZDE2NmFiMThjNDRiYTYzNjNhY2NiOWVmMmZmYTRmMDQ0ZjM4YzAgcHkzaworNzY1MjkgYTY5ODFmNGE3NGExZDg2NmMwOWI1OWVlN2NhMDYwM2M5NGVjMGFmZiBsZWdhY3ktdHJ1bmsKKzc2NTMwIGE4NTQ3MWM0NzUxNDhkZjA2NzdhOTEyMTlmMTY2YzhiOGQyMTVkNzcgcHkzaworNzY1MzEgNjFlNmNlNzE4NTAwODljMGQ0ODI5NjhkMWFhMTdiMjg4MjRhMjEyMyBsZWdhY3ktdHJ1bmsKKzc2NTMyIDNmNzFlYmU5MWY5MDU1MDVjOWU1MGU2NTZiNjkwNTg4NWYwOGEzYzYgcHkzaworNzY1MzQgYzU0NThiYTM4OWQ3NjU5ZjhlOTEyMTQ1ZjhjNDRjZTA3ZjU2NTVjYSBsZWdhY3ktdHJ1bmsKKzc2NTM1IDdiNzRhYmI4MDM1NjhkYmU3ZjUzMDhmOTMzYWIyYzk0MzlkNWQ1YTcgbGVnYWN5LXRydW5rCis3NjUzNiA3NDIzMGU1YWIzNzM5MDU1OWM5YTQyZjIyZTMxNTdmZjcyZjg4ZmIzIHB5M2sKKzc2NTM4IDQ1MjFmNTk5OGU3YzYyZTk0MTM2MDM5OTgzOWZlODNlOWZjY2FkMTIgbGVnYWN5LXRydW5rCis3NjU0NiBhOGFiNjNmZDMwOTg5N2MwMDM1ZDJjMzczYzM2ZjAxODdiMTA4MzM4IGxlZ2FjeS10cnVuaworNzY1NDcgYzkzNjkwOTJmZWZjZDQ0NWI5YzU2M2RlZmZhMmMxZGYwYTYwZTQyNyBweTNrCis3NjU0OCAxMzc0OGYzZGRjN2I1NDliNGViNmQ2NmE2NTk5NTIxZDY2NDRmMTliIGxlZ2FjeS10cnVuaworNzY1NDkgYzdkN2Q1Y2E4NDQ2NGYyYWNkN2MwNGRhZDFmZjU0ODlhNWZmOTEzNSBweTNrCis3NjU1MCA5ODhkYjBiYmVlM2EzZTBhOTQ2NjZlY2Q5MDQxMGQ1Yzk0OTZjNzdlIGxlZ2FjeS10cnVuaworNzY1NTEgNjcyMWQzM2YzY2QxZjNhYzZkZDE2YmYyNDhjYmFlNzI3ZmI3N2JkMSBsZWdhY3ktdHJ1bmsKKzc2NTUxIDUzNjY5Y2JmMGVkMmE5YjI0OTczM2VmMDY5ZGUxNGIzN2I3MTVlYjggcmVsZWFzZTI2LW1haW50Cis3NjU1MSA3MjZkMTJkYmExZjYwZTNkYjE0ZmYyNDQwNGYzMTZjYjgwYTU4ZDdmIHB5M2sKKzc2NTUyIDRlZjdiM2UyZDZhOGIwYjBhOWI3YzhjMmU5OGYzNDQ5ZTZlMDNkMmYgcHkzaworNzY1NTQgNTI3YjdjMDc1ODQ5ZmJmNjQ1ODdhNTQ2YzM0MjcyZDk5YjZlNGMwNiByZWxlYXNlMjUtbWFpbnQKKzc2NTU1IDU3NGRkOGFjYTkxNGU0NDNiNjY3NWVlN2I1YjZkZTkwODg1ZjE5MzQgcmVsZWFzZTI0LW1haW50Cis3NjU1NiA2ZTc0MDNhZDUzMzVlYTRkMTJkMjZlMWFlYzAyNzUzYWJlNjViY2UxIGxlZ2FjeS10cnVuaworNzY1NTcgZmRlNTEzMGJmNmNkYmQzMmM5ZjRhYThmNTNlMjBhYmJhYjIwZjM4MyBweTNrCis3NjU1OCAzMzk4NjY0ODYzMGJjNGMwOWYwMWZkYTE3NGQxYmMwMjQ2MWQ2ODJiIGxlZ2FjeS10cnVuaworNzY1NTkgMTgwMjRkMjk4NjljYjFmNWQ1ZTA5MDFlYzIwYWJiYjQ3YmVkNmY4ZCBsZWdhY3ktdHJ1bmsKKzc2NTYwIGM0YzNmZDU5M2IwYWMyOTZkMzg1MmFhNmM0ZTBhNWQyODdmYTRiZDUgcHkzaworNzY1NjEgMjk3ZGY3N2JhMzk2NDcwNjk2ZmE1ZWIyN2Y3ZmFiMTgzYzE4Nzc5MSBsZWdhY3ktdHJ1bmsKKzc2NTYyIDY5NmQ5NjE1YTIzODNiOTUzYmFhNjc2ZDIyNDExNGRiYThiMzdlZjUgcmVsZWFzZTI2LW1haW50Cis3NjU2MyA1YjYwN2NkOGM3MWJiNThkYTNmYzg3OTZlNzdiMTAzYzIwY2ZiODNkIHB5M2sKKzc2NTY0IDNkMTE1NzgyZmUxYmIwNGYxMWE4M2UzNGQwYWU0NzM0M2UyN2E3ZDAgcmVsZWFzZTMxLW1haW50Cis3NjU2NSAwYzE5YmU0NTBlNjdhMDFlYzRhMmQ2ZjEyM2Y3YTRjN2IwZTU4ZWY5IHJlbGVhc2UyNi1tYWludAorNzY1NjYgY2I4MzYzMDFkYjYwNTdlZGRjZTQyOWIzMjBhMGQ0NDQ3MGM5NzNiYSBweTNrCis3NjU2NyAzZDc3ZDdjMTZjOTA5Nzk2YzdmMmFmMzdlYjFlZmJkZjg4Njk3NTIwIHJlbGVhc2UzMS1tYWludAorNzY1NjggMTRlZTc1Yjg2YTVmMDQxZDUzMWJjYjQxZTYyOTQ3YmRlZWNmYzdkMSBsZWdhY3ktdHJ1bmsKKzc2NTY5IDkzNmI2ZjA2NTU5MzhiZWMwNDI3YzM5YTJmMjg2NzM5NjMzZDg4MDcgcmVsZWFzZTI2LW1haW50Cis3NjU3MCA5ZmQ4ZTk1YjRmY2UxN2RiMzU1ZWZmYzExOWQyNzE4Y2MyMTgwNDNiIHB5M2sKKzc2NTcxIDgzYzcwMmMxN2UwMjE4ZGY5NjU5MmViMjdhOTdhOGJhNjNjNzQ3ZTAgbGVnYWN5LXRydW5rCis3NjU3MiA5MTZhM2QzNTA3NDFjN2Y2Y2ZlODg2MDg4MmI0MDkyOWJkYWQxYjBhIHB5M2sKKzc2NTczIDE0OWMxYTdlNzJjMTU0NzJmMjliOTI4MGRjZjc4ZmM5NTUzMjRiYTEgcHkzaworNzY1NzQgNGJlZDc5NmVlMGQ3ODY5YWQyZmYwMDExN2VlZDFjZDk4YjNhMTdkZSByZWxlYXNlMzEtbWFpbnQKKzc2NTc1IGUwNmMzZjYyZmNjOThjMDEyNmEyMmEwZmRmMWJiNjZlMmExNWQ5NWMgbGVnYWN5LXRydW5rCis3NjU3NiA4MzM1MmVkOTIyOWEzZjYzMGEyMzgxMjMwN2M4YTk0N2U1ZmRhOWY1IHJlbGVhc2UyNi1tYWludAorNzY1NzcgYjBmYzU0YzVkMjM0ZjdhNDkwZjk1NTA0OWFmODc1MDVlMjdiMjkyNyBweTNrCis3NjU3OCBmMmUxYWM3NTBmMTE4NTM0ZWQwMjg1OTEzZWYzNWQwYzE1NTg5NjQ4IHJlbGVhc2UzMS1tYWludAorNzY1ODMgOTMwYWVkZWQ5MDBkYzlkN2E3Mzk5YTNkZDZmMjEzODdmYzlhYWY1MiBsZWdhY3ktdHJ1bmsKKzc2NTg0IDlmYjZkNTQxNGRkODgyZTgzOTk2NTRlZTBlMDAzZDdhMTFhY2M5NjggcmVsZWFzZTI2LW1haW50Cis3NjU4NSAwZWFmNWM5ZWRkNzI4ZjI3Yzk4ODIzOWNiYzIyYzkyMzk5MjNkOGFiIHB5M2sKKzc2NTg2IDkxNWEwNDRiZTgzNGNhZDJkZDRjNDViMTJmY2RjODVhNTM4ZDdkMTcgcHkzaworNzY1ODcgZThkNTUwYTg5ZjBiYTExYTY1MzVkYjcxYThmMzM0ZGNkYjQ1YTBkZiByZWxlYXNlMzEtbWFpbnQKKzc2NTg4IGE5NDkyNTVkNDUwZmJhMTY2ZGQwZWFjYWE0YThlMDVlOWRjNzZlNDcgbGVnYWN5LXRydW5rCis3NjU4OSA2Y2Q0NWY1Y2FiNThhNzNjOTQzNmIxNjcyOTQ4MWM0ZDU1MDlmMWIzIHJlbGVhc2UyNi1tYWludAorNzY1OTAgZTk2MDY5YTEzMjdmOTM2YjVlNzgxZjQ5NDIxZjQwZjE1OTRmNjYxOSBweTNrCis3NjU5MSAyMThhN2ViNDBkMjZlMzgzNGEwMjU5YTgxOWMxOGE4ZTI2M2M4ZmQzIGxlZ2FjeS10cnVuaworNzY1OTIgZDUxMDEyZmUwOWIzNDI2MjA2ZDAyM2FlMzg3NTRjNTRhNjU3NTUxZSByZWxlYXNlMzEtbWFpbnQKKzc2NTkzIDZiZGVkZTE4ZmM4MGRmNmQ2YjZmOGI3YTkwZTc1ZTA2NWIyOWNkZGIgcHkzaworNzY1OTQgOWU1MWExNDk5OGEyYTYwMWJiY2EzNTM1OTI4NzgyOTUxN2E2Mjk5NCByZWxlYXNlMzEtbWFpbnQKKzc2NTk1IGYzN2Y2YjliMjI0YjA3OTA1ZWQ4ZTI4ZTVkYmY0Y2Y2ODAyMjE5ZTIgcHkzaworNzY1OTYgNzRhYzhjMTI3YTZmZjE2ZWEwMWFlMTFlZWEwODlkN2Y4MzU2YWQwNyByZWxlYXNlMzEtbWFpbnQKKzc2NTk5IDFmZjJjM2VkYzEzY2U4NzJmYjFiY2Y2ZjYwZDVkMjM3MTZlNTY4ZjAgcmVsZWFzZTI2LW1haW50Cis3NjYwMCAyODE2NjUwZDc2ODhjMzAzODRmNzNlOTgxNTNlODc5NmY4ODA0Y2FhIGxlZ2FjeS10cnVuaworNzY2MDEgODRlM2QzNmRhNGMyNzBjNmVmMzZkMzk4ZDI4NDg5YzQ3Yzg1ZDgyYSB0YXJla19zeXNjb25maWcKKzc2NjAyIDBjZjk5MTU4ZmE2MzYwMDE3MjdmZjg1ZGJjMDNmZGExYzAzNTI5YjMgbGVnYWN5LXRydW5rCis3NjYwMyAzMTVlNmFlNjRiZWY3YWNkODUzOWUwODRlN2Y2ODVlNGRjYzZiNTAwIGxlZ2FjeS10cnVuaworNzY2MDQgZmYyYWVmYzk3ODgxZjI1ODQ0MzVmYTExNWZiOGM2MzU4NDZjMWMzOCByZWxlYXNlMjYtbWFpbnQKKzc2NjA1IGUzMjBmODhhNjVjOWFjYjM4OWY2Yjg0ZGI5OTkwOTM4ZTFjZWQwNWMgbGVnYWN5LXRydW5rCis3NjYwNiBkZGFiM2RhOTQ3M2RiNTg3NjI1M2MwYjE3ZjgyZDU2MDJjNWRiMDY3IHJlbGVhc2UyNi1tYWludAorNzY2MDcgODg5NmM0ODQ3NDIzZDU4YmRjMWJkZDMzYzFiNDJlMWJkZWM2ZmFhNiBweTNrCis3NjYwOCAwYTYxMzc5NDRlNjFhMDc2N2RjNmE1ZGZkZmNiZWM3NGZjYThhN2E0IHJlbGVhc2UzMS1tYWludAorNzY2MDkgNjUzNmExY2Q0N2NkM2VlODFmNTc1ZTM5NzRmNzg2ODM1YTYzY2Y3YyBweTNrCis3NjYyMyBkOTllZjQ2NGVmMzNmZWY2MzBjYTg3MmZmN2Y4N2Y0NTM5NzJlODJlIGxlZ2FjeS10cnVuaworNzY2MjQgNGQ3Y2RmN2E2Yzc1ZGI1Zjc3YWY4YmVmYTAxNGUyZmI1NGVmMGU3OCBweTNrCis3NjYyNSAxYjJhZmNjM2NjZjM4YTgzYjcxNTNhYmE4YWVlM2NmZjAwY2Y5MWJkIGxlZ2FjeS10cnVuaworNzY2MjYgNWQyYzlkODg3N2RkYjlhM2FlYjE1MTNkZTZhNTFkZDRmNjg1YTA1YiBweTNrCis3NjYyNyAyODAzNjk2Nzc2MDJjNmJlNjkzNmYwOGM0NDRmMTI1ODdlNmJjODRlIHJlbGVhc2UzMS1tYWludAorNzY2MjggY2Y5YzY0OWRjYzRmNGYyMTkxNGFhNTA0MDk0MmI4OGQ4MGRkNTE5YiBsZWdhY3ktdHJ1bmsKKzc2NjI5IDhmNmVlZTQyZjgxMGRjZDYzMGNjNGNjYmY2MzkxYjRkYzVmY2M1YzAgbGVnYWN5LXRydW5rCis3NjYzMCBjYmI2ZTkyYzFhMGRkMjU0MTliNDM1MzlmMDgxMzFhZDAzZWY2ZTczIHJlbGVhc2UyNi1tYWludAorNzY2MzEgZDkzOThiZGQ0MTNhMDMyNTMyYTVmNDM0YmFiZjU3OTkwODgzYTlkOCBweTNrCis3NjYzMiAwZmY0NzAzNGM2OTFjYWIzYzI3YjhiNjU1OThmZTI4NDNkYTRiYTk1IGxlZ2FjeS10cnVuaworNzY2MzMgZDY4YTYwMDUyYzY2NTA2NWQ3NTYwMmU3YzExNzFkYjNhZWI0MjUzNiByZWxlYXNlMjYtbWFpbnQKKzc2NjM0IGI0MDUxMmNlYzJkNmM5ZjAzN2QzN2VjYmViNzY3ZTNhZWIzM2ZiM2IgcHkzaworNzY2MzUgYWNmZDU2MTViNTJjMTRjODJjYTE0OGM4ZTEwNmRjMjQ4ZjllNThkNSByZWxlYXNlMzEtbWFpbnQKKzc2NjM2IGE1NGMxOTgwMmFjY2NhZmE5OGQxZjU2ODRhODUzYmQ4YzZmZDI0YWUgbGVnYWN5LXRydW5rCis3NjYzNyBlOWRhYzNlZmYzMTc0M2I1MTUyZDg3NGUwOWU4NTRhYWRjYTdhMWU3IHB5M2sKKzc2NjQwIGQ3Y2M5MDE3YWM0YzY2MDE5NWUxNTQzMzIyN2JkYTE0MWVlMDAxNmQgbGVnYWN5LXRydW5rCis3NjY0MSAwYWY4MTgxZGE1Y2U1MTUxNjE4Y2E5ZjU4MzcxYjIzMGRkY2I5ZWI2IHB5M2sKKzc2NjQyIDI2MmEyY2VhZjA1ZjFjZGQ2ZWU4NzZkNTJlODhiYTJiNTA1ZTJhN2UgbGVnYWN5LXRydW5rCis3NjY0MyAxNWFjMzE5MWY5YmUwNWE0NWJmZTA3ZTdiZDYyNWNhMGM2ZmU0MjgzIHB5M2sKKzc2NjQ0IDgxODA5MjVjNzViYTUxOWNiNDU1MTk1Y2Q0OTlmNzliOTQwNGI0MmQgbGVnYWN5LXRydW5rCis3NjY0NSBiNzlkMDQyMGMyMDQwZDgyZDdlODY2N2E5NzY1ODIzNzE2NTRlYmY1IHB5M2sKKzc2NjQ2IDVjNjgxZWNjOTk2N2M0MWRmOWU3N2VjYzU0NDk3NTIwNTdmN2QxYzUgcHkzaworNzY2NDcgYjYwZjJiMmI5YzA0NTRkMzQxZWFiZTM1MTYzMmJlNGFhZTQwYTdkMCByZWxlYXNlMzEtbWFpbnQKKzc2NjQ4IDc1ZTFiOGMwNWY0M2Q0YWU0MmQ0YWUwZjQ5MWY2NTQ1Y2FjYTFjNDMgbGVnYWN5LXRydW5rCis3NjY0OSA5MTcwNThlZWE0NDAyNDk5Y2ZmMjY0ODE3ZDUzZGE3ZmUyMTIwZTQyIHJlbGVhc2UyNi1tYWludAorNzY2NTAgZmRmN2QwZWM5ZDA0MWI0NTFjNWIxNjAxZDA4Y2IwZWEyZjA1N2VkZSBweTNrCis3NjY1MSBiNWNkM2QyZWMwMjc2ZDI0OTAzODI2NWIwYjRkNjgxNjkwZDY1NjQxIGxlZ2FjeS10cnVuaworNzY2NTIgOTY5NTRlN2RkOWI2ZTIxYzY4ZTU1NTA4ZjgzYWQwM2Y5NjY0YjI2NiByZWxlYXNlMjYtbWFpbnQKKzc2NjUzIDExNDM0YjYyZDhjZDgwNjJmZWRhMTU4Y2ZmMzQ4MGI4NGI5M2VjODkgcHkzaworNzY2NDcgZWY5ZjQzMmU0ZDM5ZGNkOTQyMmNhYWIzOTE5YTZlZmM0MTNkZTJhYiByZWxlYXNlMzEtbWFpbnQKKzc2NjU1IDFmYTE4NTQwMzFhYTJhNDYyOTY2NjM4MTU5NDY0NzU4NmI4Nzg5Y2QgbGVnYWN5LXRydW5rCis3NjY1NiBmMDQyZGI0MzQ2MzgzOTJjOTM5NzY1NDRkYThiN2YzNWVjN2RlYTZlIHB5M2sKKzc2NjQ3IGQwMGVjMjYwZDYyYWE5YzliMWM0MDQxYjAzZTM3NmM1YzAyNDM2ODAgcmVsZWFzZTMxLW1haW50Cis3NjY1OCBiOGUyOTIzNjllYThiODJjZjE5ZTVjMjY1MmUzODllYzY0YWNiZGJhIHJlbGVhc2UzMS1tYWludAorNzY2NTkgZDMxYjMzNTBhYWRiZTYzMGUwYTI2MjdjMTJiM2MwZWJkMzZmNWI3ZSBsZWdhY3ktdHJ1bmsKKzc2NjYwIDFlZTFmYTdiZWNmMmFkMjNlZTI5YjIxYjQxNTczYmM0ODNmMDcyNDMgcmVsZWFzZTI2LW1haW50Cis3NjY2MSA1OThkZThlNmM0OGIzNDZjMmU2ZmU4MzU2NWZiNDQ3MjAzM2ZkMzA1IHB5M2sKKzc2NjYyIDlkZjRkNWI1MjYwOWNmZTRkYjVhMGNkNzRiYTIzZWViNDc4MzAzNGIgcmVsZWFzZTMxLW1haW50Cis3NjY2MyA3MzMxMzg4NTgxNTc0ZTdlYmIzNTBiNGNiMjZmNTcxMzEyMWQ3NDllIHB5M2sKKzc2NjY0IDNlYzZiNTFjZGJkZGJiNzE2M2YzYTlkNmZlMzY0MTgyNjlhM2U4NTEgcmVsZWFzZTMxLW1haW50Cis3NjY2NSAwNDBjMzhlZDIyNTE1Zjk3MzQyODcxNWE1ZjE0NDNkNzVhODc2Y2ZjIGxlZ2FjeS10cnVuaworNzY2NjYgZDU4N2E0ZTViYTVhNTk0OTFlMjUwMDlmYjM5MWVjMmE5NjMwNzM3YyByZWxlYXNlMjYtbWFpbnQKKzc2NjY3IDczYTkxMjU3MDNjMzJhYzI0NjEzZmM4ZjhkNjE4YmIxYWMwYzdkYTQgcHkzaworNzY2NjggNTVjODMyYmQzMjMzM2ExYWYwMDE3OTZlOWM0NTQwODFkZGQwYjNmZiBsZWdhY3ktdHJ1bmsKKzc2NjY5IGQzMDgwMjllOWFkMjJiNWI4ZmE0ODkxMTQ0NjQ3MzEwMDQ3NzYzYmMgcmVsZWFzZTI2LW1haW50Cis3NjY3MCAwZmU4OTg3NWVkZWYzNDc2ZGMyNGFmZTI5ZWI1M2IwNjBmYjEwMDEzIHB5M2sKKzc2NjcxIDAxNDhmNzZkNmZjZGZkOWYyNTE5NmFhYTAzMTRhYThhNzNkMWRmYTUgcmVsZWFzZTMxLW1haW50Cis3NjY3MiA2YmI2M2JlNzI5OWNiNjNjYmU0MjBkMzA5Y2I0Y2ZiZTMxYjQ0MjIzIGxlZ2FjeS10cnVuaworNzY2NzMgNGQ3NDQ1Y2EzMDUxNGVmZjk1Y2E5MjY0YmNjNmMzNWY3ZWNlNTlhZiBsZWdhY3ktdHJ1bmsKKzc2Njc0IGI0MTA3ZWIwMGI0MjcxZmI3M2E5ZTFiNzM2ZDRmMjM0NjA5NTA3NzggbGVnYWN5LXRydW5rCis3NjY3NSBiOWU5ZDU0MGM5MGQzMTI5NmI0NWIyYmZkMWI1NzkxNDY4MGFiNmI2IGxlZ2FjeS10cnVuaworNzY2NzYgMzZhMGRkMjFjNWI0M2Q5YWU4NjljYzNhNTZkNDA3N2EwMmRhOWI4ZSBsZWdhY3ktdHJ1bmsKKzc2Njc3IGUxOWRlOTQzM2E0YmZlOGNmYTM4NmMxYmI4NWUwNzRlYjlkMDRjNTMgcHkzaworNzY2NzkgMjU1MzJjOTkzMmRmZmE3ZDkyZTQzNzdiNTFkNzViNmY5YjdmZTUzMiBsZWdhY3ktdHJ1bmsKKzc2NjgwIGVhYjEyM2RjMTA3ZjY0ZGMyZmUxMWYyNzNkZWY3OGIxODQ0NGQ0NTQgcHkzaworNzY2ODEgMWM5MmZiYjNiYWYyNmFjNWZiZWE1ZjQ3NTQzYWI4NzU5YTJkZDIyNSBweTNrCis3NjY4MiBhZDE0NTU1ODIyNmI4N2FlYzcwMmYwOTQ4YWU2MTE4YTMyZmZkNDM2IHJlbGVhc2UzMS1tYWludAorNzY2ODMgNjg1NjU4MTdjMTdmOTViZTQ0MWFjN2M5MDYyZmM1NWIxMjI4MTIwYyByZWxlYXNlMzEtbWFpbnQKKzc2Njg0IDZhNDhhMDkxYzBkMzg2Yzk0NmFhOTRmMDZkNmJkZGQ4YjlkN2Y2YWIgbGVnYWN5LXRydW5rCis3NjY4NSAxYzJlY2Q1OWQ2NWFmOTlkNzUwNDUzNmU2YmY4MTU5N2NlYTEyZTM2IHJlbGVhc2UyNi1tYWludAorNzY2ODYgOWU3NTE2MDFmNTM4MjdlMGVhN2UzMTMwM2Y1ZjZhZmM2Mzk0MGYwYyBweTNrCis3NjY4NyA1Njg2MThiNWY2ZmQ1ZDQ1NWNkMDhkZjRhMmI0ZGRhMDdmMjdkZGY2IHJlbGVhc2UzMS1tYWludAorNzY2ODggYTZiMWU2OTU5MzgyZTM1ZjQwYzE5MTU5N2VkM2RiYzgyODE0MDZhYSBweTNrCis3NjY4OSBlZWE4MDNkMjM1ZDM0MWNjNWJhYWIwYTg3ZGZjN2Y3MDEzODhlNWQzIGxlZ2FjeS10cnVuaworNzY2OTAgYmUxY2JjMTVkOWY1MWNjY2ZhY2NmYTcwMTY0MjZhNzc2NmFjMWU4OCBsZWdhY3ktdHJ1bmsKKzc2NjkwIGY5YmRiY2M4ZDFlOGU2ZWM4YzQ1ODA5ZjJiZDQwMzhkYmE0NjJiYTIgcHkzaworNzY2OTEgNjA3ZjUxOGJkM2NmYjgwYjBmZDZhYzc0NzZiZTVhMTU4MzlkMDY5NSBsZWdhY3ktdHJ1bmsKKzc2NjkxIGJhYzhlYTJiNmRhMzU4ODRlYWU5YWZjMTI5YjdlYTJjMTk2ZWJkZjkgcHkzaworNzY2OTIgODlmNmE3NTQ2MmIyN2VkYjE1MTIwYTg4MGZiNmEwMDk1MzBmN2NjMiBsZWdhY3ktdHJ1bmsKKzc2NjkzIDZlZjRiY2M0YTQ1MDIxNjZiNmM4MzRiMmI2YjI5YTFlZTMxMTVjNzYgcHkzaworNzY2OTQgNTZmY2UxODhjNmJlMDdlZmY5NDhiYTU2NWMxMzM2ZjVjYjAzZWViMCBwZXAtMDM4MworNzY2OTUgYzBmOGU0YTIzZGRmNGI5NDk1MjRhODU1ZDNiYTMyMmI4YjM2MjBkYSBwZXAtMDM4MworNzY2OTYgNjg1NTIyYzZmMzBmYmUxYjE2NTNmYTNjNDJkN2NkYmQ1ZDE4ZWEyNSBwZXAtMDM4NAorNzY2OTcgOWM1OTdiMGE2YTliNzFmODgwM2Y2NGUzNzhiZGFmNGQ0NzcwZmNhZiBsZWdhY3ktdHJ1bmsKKzc2Njk4IDM1ZjNhMTljNDI2NWE3NmM4MmE5YmZmZjBjOWZlN2ZiYTViNDgyNjYgcHkzaworNzY2OTkgZjVhNDQ3YjNmMjZlYmY0OTViZDU3MWNmN2U4ZjU5YTc5OTA1OTY4MSByZWxlYXNlMzEtbWFpbnQKKzc2NzAxIDQ1MDgxODYxZWY3NGFmZjg2OGYwMWU2OWJhNmE4YmFmYzc0NTdhMWUgbGVnYWN5LXRydW5rCis3NjcwMiAyNWFlZGU2MmZjMTcyYTY2OThlYzAzNjYyZDQyOGM4MmM4MWYyZGQyIGxlZ2FjeS10cnVuaworNzY3MDMgMjc1MDk3M2UzODkzYzQzYmE4YjFjYjRhMDVkZTBlM2JjM2UwNGIzZCByZWxlYXNlMjYtbWFpbnQKKzc2NzA0IDk4ODc5YzhkNTNmMTY1ZGM4YzgwMGQ4ZDg0Y2RmZTE2MDNmOWRiNWYgbGVnYWN5LXRydW5rCis3NjcwNSA1MWM1YzkxMmVjM2ViNDJlMTY5YjA1OGZkNTQyYWZjODFmODU4MzU2IHJlbGVhc2UyNi1tYWludAorNzY3MDYgZDliNGY2ZWEzZTM5NzViM2I0OWQ4NWVmZTY0NjhjYmY0ZmE2OGQxOCBweTNrCis3NjcwNyA3NjQ3YjE0ZWZlNzFmYTkzNjVmYjQyZTA5MWNlYWVhOWE4MzQyYTQ3IHJlbGVhc2UzMS1tYWludAorNzY3MDggZGIyOGFlYjJmYjdhN2JiYTIyYzZiNmM2ZTE4OTI5MzA2MjI5M2VjNSBsZWdhY3ktdHJ1bmsKKzc2NzA5IDQwNzQ2OTU2YjM3OTJiMzU3ODUzYzIzNDgyMjJmMmI3MTJmYWQ5YTkgcmVsZWFzZTI2LW1haW50Cis3NjcxMCA2ODNkNWM5N2U0NzZkZTQ5OWZlY2Y4NmY5MDRiNDg2NWM0OTJmYWViIHB5M2sKKzc2NzExIDZlZmI0NmMyYjNjM2FkZGFlMmE1YjM0YjkwOGJiYmViYWQ4Yjg4ZmUgcmVsZWFzZTMxLW1haW50Cis3NjcxMiAyNGZmYjBhM2FlNGJhOTM0Njg3ZGZjYzcwZTAwMzQ3NDQxY2Y3N2JlIGxlZ2FjeS10cnVuaworNzY3MTMgNDBjMzYyYTU4ZTdmMGFhMTA0NzVhZDE2ZmJlMzhlY2Y2NTI1ZTAxZSBweTNrCis3NjcxNCBjZjBjNjliZTAxMWE1ODdjYzFjYTc3ZGM1NDA3NzAzOTI3M2JmMWVlIHJlbGVhc2UzMS1tYWludAorNzY3MTUgODNhNzYxOTM5OTc1MzNhMjc0ZDNiOTMwYjc1ODY4MGYzMTI3N2Q4MiByZWxlYXNlMjYtbWFpbnQKKzc2NzE2IDgzYzJiZjMxOTFkODVhNDhhMDFhODRlODYxODQyOWVhNmY3Y2UyNGMgbGVnYWN5LXRydW5rCis3NjcxNyA1Yjg2ODNhOTVlYWVjNjVmMDM5ZTc4Y2QxNjUzMmRlOWQwNTNkNjNkIHB5M2sKKzc2NzE4IGU3MjhhZTg5YWU2OWQ4OGM4NWQzMDk2OTRiZDA1NmZjMmJkM2Y2NmEgbGVnYWN5LXRydW5rCis3NjcxOSA1ZThiNzQ0OWY5NjE1YzMwN2Q1ZmIyMWNiNmYxZjEyZDYwYjJhZmI0IHB5M2sKKzc2NzIwIDZjNjQyNTU2MzkxODI4MjhiNjYwZmFhMTNlYjAyMTdjNDBmZDg3MTYgbGVnYWN5LXRydW5rCis3NjcyMSAyYzUyZDRkM2U1NGFlZDVjNDc2YmExOWZlNDcwMmI5YmFiOTM2ODlkIHB5M2sKKzc2NzIzIGU2MzQ3MDM4ZGY5NzZmY2M0M2EwOGQ3MGU3YThhY2YyZWY1ZTNlYTAgcHkzaworNzY3MjQgY2NjNTQwNmNiMzgxZGZiOTU1ZjZiZmRlMmI3YmYwODA1ZjY1NjUyYyByZWxlYXNlMzEtbWFpbnQKKzc2NzI1IDczOGIzOWIxMmRjOGYwNTA1NWRiYWM0M2M5ZTcwNDUyMzNlYjlhNjUgcHkzaworNzY3MjYgZWZlYWJlZTZlMDYxYWM0OTkzYTQxY2I3N2EwNWFlNjUzNmQzN2YwMiBsZWdhY3ktdHJ1bmsKKzc2NzI3IDc1MGU3NWQ5MzAyMTU1NTBkZGZjYTdhMjY1MWM1ODg5NzNhZmRlMGUgbGVnYWN5LXRydW5rCis3NjcyOCAwYTc2YWIzYTY3M2M2ZmQ2ZTIwYzkzNDViMTMxMDBhNzdjMDgzMzQwIHB5M2sKKzc2NzI5IDgxNjMwM2EwNzc2Mjc3OGZkMTJlNWQwOTBmZGRmOWI0NjFkNjU4YzEgcHkzaworNzY3MzAgMjczZWYwOWZlODA0OGUwZDQyOTkxMmMxZDBkMTczMGEzMzIxN2YyYiBweTNrCis3NjczMSA4YjhhZWUyMWQ4NWU2YTkyZGUxZjBkMzNlY2ZlMTlkMTlmMjhhODVlIHB5M2sKKzc2NzMyIDg5NzRhYjY4NWJhZTA2NDBlMGNkNTYxZmRlYmNmYzU0MDNkNWU2MjQgcHkzaworNzY3MzMgMTY2OTFiYzhiMTg5NGM0ODRkNzJiOGZhNDgwY2M4NmQ3YjE4OWU1OCBsZWdhY3ktdHJ1bmsKKzc2NzM0IGJjNzE2ZDhmNDM0NWQ2YTQzOWYyNjZmNjgzYzVhMjQ4NGU5ODM5NjEgcmVsZWFzZTMxLW1haW50Cis3NjczNSBiNWE0YWNiZWFhYTE2MWFlZjI1MDI1MDdlNmU5YjUzM2VjNmQzMWM0IHJlbGVhc2UyNi1tYWludAorNzY3MzYgNTdhZTVkNDRlNzMxZmJjMjQ0YTRkNWU4NWNmZDBkYjA4M2E5YWU4MiBsZWdhY3ktdHJ1bmsKKzc2NzM3IDgyNzZkMDBkMzEwMGY1YWY2NjE1YzUyMWMxOWQyNmYxNmM2N2MzMTggbGVnYWN5LXRydW5rCis3NjczOCA4YjY2ODljMGU1YTZlNmM1OGI5ZmY1M2RkODNlYTZlZDE1Y2RiZDEwIGxlZ2FjeS10cnVuaworNzY3MzkgYjI3ZDk0NjM4OWU3NjdlNjQ2NzFlNWE1MDZlZTAyYmQzMGFmMzU4OCByZWxlYXNlMjYtbWFpbnQKKzc2NzQwIDYzMTY5Y2I5ZTQ5YTAxZjExYzY0YTg1MzY1ODVmZjZhOTYwODQxNWEgbGVnYWN5LXRydW5rCis3Njc0MSA5MmY3YzRlZTZhYWRmYzhjZjEzMDQ3MTA2MTJjNzcwYjRlMjZhNGEwIHB5M2sKKzc2NzQyIDc1MmU4NjA4ZTEzMWI3MWRhMmZkMWZhYjlmNzRkY2MyZmQ2MGUxZTUgcmVsZWFzZTI2LW1haW50Cis3Njc0MyBhNDQwOWNmNmI1NTY0YTZiZTNkYjRmNDllMGZkMjJhNDFhYzI3YmUyIHJlbGVhc2UzMS1tYWludAorNzY3NDYgOTIxMWE1ZDdkMGI0MjQ2ODYxNWU3MjcyNGUzNDc4ZDlmNjRkZWM0NCBsZWdhY3ktdHJ1bmsKKzc2NzQ3IDM3NGQ0ZTlhYWIwNTJiNWZmOWM1Nzg2MDBmOTZjZjRkZTY4OGM5Y2QgcmVsZWFzZTI2LW1haW50Cis3Njc0OCA2ZjlhZDA0MThmNzBmMTk2Nzk5YWEwMzIwYjQ5MTVlMzUyYzVkZTY3IHB5M2sKKzc2NzQ5IDRlZTIyNjg5MGI1OTkwOWQ3OGMwOTcwOWRjMjkyNzE5YzFiNzNlMjggcmVsZWFzZTMxLW1haW50Cis3Njc1MCBkMjhmYmFjMzdlMjAyZjU3ZmMxODI3NGRlNmMzODE3NDc4OWFkMDIxIGxlZ2FjeS10cnVuaworNzY3NTEgZTI5YTQ1MzMxZGVhOGI1NDhiM2VkMzYyZWU3OGVhMTg3MDMwYTEyYyByZWxlYXNlMjYtbWFpbnQKKzc2NzUyIDY2ZmIxZTI3NjJkMzQyM2Q3ZjNhOTZhN2JiOGQ1MWE3ODY4ZDZiZTUgcHkzaworNzY3NTMgNzU2MmUzNzZkOWI1NTFlN2EzZDUwZjgzNzA2NzllNzAwZGVlZGMxNiByZWxlYXNlMzEtbWFpbnQKKzc2NzU0IGFlOTM5NjI2MDgzNTllZGJjMjkzMWQ4Y2IxZGM0Nzc5OThmYzQ4ZTggbGVnYWN5LXRydW5rCis3Njc1NCBhNmJmMDdmZmY2ZmNiZmU4ZDQ5MDUxODY3NmQ4YmJmNzJhYmIyMmY2IHJlbGVhc2UyNC1tYWludAorNzY3NTQgMGNkN2FjOGM2YmIzYmJjZGUwMmRkNzBiYTllMmM5NTlkZWQ2ZTcyOSByZWxlYXNlMjYtbWFpbnQKKzc2NzU0IDE5YjRlMWY2NDQzZTE5OTkzMzBiYmEzMGJmZmUwNTk0ZWNkYjEzNWIgcmVsZWFzZTI1LW1haW50Cis3Njc1NCA5YjZiMWMxYzFiMzMwZjEyMTkxNDRiYzU0YjljM2M2NzM4MjhmZTQwIHB5M2sKKzc2NzU1IGNiMjJlYWVlODZjOTBjMGZhMzIyOWZkZGJlMGI1MTYwZDRkZTkyODUgbGVnYWN5LXRydW5rCis3Njc1NiA5YjgzYmZlZmM1ZTdmNmZhZWU0ODUzYWY5Y2Y0YTI5ZmFlMzE2ZGU2IHJlbGVhc2UyNC1tYWludAorNzY3NTYgYmJhYjYwMmRhMTE0OWE2OTcyYjc1NjY3ZjkxNTBjNDEzOTM1YzNjMCByZWxlYXNlMjYtbWFpbnQKKzc2NzU2IGU3MDA0ZGEyOWY1MTJkZGI0NjNiZDQ3MWU3ZGFlMTc4N2E3ZDk1NDEgcmVsZWFzZTI1LW1haW50Cis3Njc1NiAzNzhiYjcwNWJlOTA0YmIyZGQ4ZGNhNGI3ZjQyNGZkZjUyZWE2NTkxIHB5M2sKKzc2NzU3IDdjYjczZTdjMTc2ZDMwY2Q3YjczOWQ5Y2E5YmUyZTQ2NTljMDEwMGQgcHkzaworNzY3NTggMTZjZDIxYmEyNjhhNDk2OWRmYWNjNjcyMDQyYTRlOTE2OTJkNGY3MSByZWxlYXNlMzEtbWFpbnQKKzc2NzU5IGFlZThlYjdmNWYwMjFlNjI4YTIwYjU3Y2M1MWZjN2Q3YmU0ZWNkOTUgcmVsZWFzZTI2LW1haW50Cis3Njc2MSAyNTZlOWYwMGQwNjFlZjhkNTQ2NGU3MGNhOTFlOGU2NGMzZDgzZWVjIHJlbGVhc2UyNi1tYWludAorNzY3NjIgNGQ1MWFhNTcyZThjOWFiZTlmOWU2Yjk2NWZiNmY0MzJhOTdlYzI0NiByZWxlYXNlMzEtbWFpbnQKKzc2NzYzIDJmZmQxOWEyMjRkNDFmYTQ2MzBlNDQzZWFkYjU0YTg0YWY3ZWJlYWIgbGVnYWN5LXRydW5rCis3Njc2NCBkOTc4NTkwOWMzYTcyYjc1NmRlZjI2OTZkODFmMTYwZDRiYzEzYzA4IHB5M2sKKzc2NzY1IDc5ZTBkYmI2YzRiODhjODY0MTdmZTY5OWRkZmZjYjc3ZDdhOGQ3YTIgcmVsZWFzZTMxLW1haW50Cis3Njc2NiA4NjkwYTdlZmY4MmExZTNkOGFkNTdkMGQwZDdjMWI4NWI4NjM5ZDgwIHJlbGVhc2UyNi1tYWludAorNzY3NzAgYWQ5MTdiOGZkNjRjZjYwMTQ3MjEzY2Q4NzhlZTVlZTNlMTg4YjhkZiBweTNrCis3Njc3MSBiN2VjNGFmY2ZjM2YwYmRmODgwYjM1YjFiZjM1M2U5ZDIyODRmNjM3IHB5M2sKKzc2NzcyIDczYTZiOWIwNTQzZjRjODAxMzE1MjUyZjBlMjA5MTdlMDEzMTQzZWIgcmVsZWFzZTMxLW1haW50Cis3Njc3MyA4MDQ4NTY5ZWI1M2Y1ZjcxZTEyNWU4MjdhOGNjYjE0NDU0MTNjOGFmIHB5M2sKKzc2Nzc0IDIwYjdkZWI1M2Q0ZTU4YjI5NGQ2OGY5ZTZkOGU1ZjVlNmVhZTljMzAgbGVnYWN5LXRydW5rCis3Njc3NSAyYjkzNGQ0NjY5OTNkZDFiNzFjOGNhYTMwOTQxMmY4NzkzZGFlZTc1IHJlbGVhc2UyNi1tYWludAorNzY3NzYgMDg3ZmU1ZmExMTNjMWZkMTBkOWI1NDc3OWJiM2FhOGFhOTBjNjQ3MyBweTNrCis3Njc3NyBkOGM1ZTM4NTE1YjZjZGM1MjMwOTU1Y2IxOTAwMjkyMDVjZmJjYTE1IHB5M2sKKzc2Nzc4IDE1NThkYzY5YWFjZjI2ZDg2MGViN2VmYzZjZjYzMzY2YzllNTdiNTggcmVsZWFzZTMxLW1haW50Cis3Njc3OSBhNzY5YTliMzRmYmMyYzVhY2EyYWM3OWRjNmNlZmMwMGM1ZGMyZDhhIHB5M2sKKzc2NzgwIDQ5Mzc4MGVhMzVjZjgyMWFhN2E4MzRkMjUwNjFjMTE1YmQ4ZDVhNjQgbGVnYWN5LXRydW5rCis3Njc4MSBlZDJiNjg4M2ZjOTY3MzRiMWJjMTUzN2YzMzJlY2YwY2NmMWM2Mzk5IHJlbGVhc2UyNi1tYWludAorNzY3ODIgNDZjMjI5NzQyYzY0MjEzZmYwZDhiNGQ3NGQwYTI5NGZkOWQ0N2E1OCBweTNrCis3Njc4MyA4YzQ3ZDdkMmEwMjNiNTE5MTJjZTlmMmRkZDRjODNjYWM3M2RkOTgyIHJlbGVhc2UzMS1tYWludAorNzY3ODUgMTE0MjM3MTliYWJiNDA0NWU4ZTBjZTRhZGNmNDYyY2NhM2FjY2Q1YyBsZWdhY3ktdHJ1bmsKKzc2Nzg2IDQ2NDg1MWJmMjJmZGViNTAwNzdlMTRhMGFlMjhmM2ZlYzM1MmRkMTAgcmVsZWFzZTI2LW1haW50Cis3Njc4NyAyZmRjZDczYzMyYWFiYjkyNmU1MDlmZjMyMTIwODNhYzA3ZWVmN2NhIHB5M2sKKzc2Nzg4IDU0ODMzNWNiMDA3YjFmZTg3NGZlZWUwZjI0ZGMzMTRmMTY5ZTg2ODggcHkzaworNzY3ODkgNGE5ZTQzYTNiOTg1MzNhYTcwNTBjMTI0ZDM5ODcwYjBhODFhY2Q1YSBweTNrCis3Njc5MCBjOTE1ZmY1OTFhMmYzMzQxZDhjODJiYWFiYmRhMGNlNmNkNDI0Y2RjIHJlbGVhc2UzMS1tYWludAorNzY3OTEgMTZjZWRkZTlhZjAwOTA0YzQ1MGUyZDBiOWFiYjNiMWFhODJiMTUwMyBsZWdhY3ktdHJ1bmsKKzc2NzkyIGM3MDg3ZWExYzIxZGRkM2EzZWQ2MTFlMWI5NDVjODkzMjkwYWY3MDkgcmVsZWFzZTI2LW1haW50Cis3Njc5MyBlN2M5NGNiNzI2Nzg5OTFiYWI3YmE1MjVjMGI4ZGJiMDM1OTEzNjU5IHB5M2sKKzc2Nzk0IGNiMjYyOTllMGU1MjdiODhkNWQzZDQ5Njk1ZWM0Mzg4NmI2NTBlYmEgbGVnYWN5LXRydW5rCis3Njc5NSBjMmU5NGVmMGQ3ZTU4NTc3MmZlYjZmODVkYjMyY2Q2YTM5YzcxNDA0IHB5M2sKKzc2Nzk2IDBkYmVjY2Q3ZTBlNmZhZWRkMWZkMmI2NjdlNzFlZWUwZGI2MmMzYjAgcmVsZWFzZTI2LW1haW50Cis3Njc5NyA0MmUzMTFhNDc2ZTgwYjEwNGJmMTY1MTQxNjVlYWU1MDMyZjAyN2NjIHB5M2sKKzc2Nzk4IDIxNWRkZmYxOTljMWI2N2NlNzgyZWM3NDZlMTkxNjQ2Zjg5ZDE1NGQgbGVnYWN5LXRydW5rCis3Njc5OSAyN2M2M2Q2NTI2MjA5YTdiODJiODAzNTBlM2RmOTVhYjg0ZWM2NzM2IGxlZ2FjeS10cnVuaworNzY4MDAgMTM5MmUzNmFmMWIyNmEyM2IwN2UwYzFjZDlhZmI2MmNiN2IyZTZkYyBweTNrCis3NjgwMSA2MDUyNzUxYTA0YzgyMzI3MmFlYTNlZjE5YmRhYTgzYTZkMWRjMDEyIHJlbGVhc2UyNi1tYWludAorNzY4MDIgYTc0ZTA0ZmM5M2ViOWRjZmNkMzMwMjU5OTMwZDBjYzY4NTdjNDU3NSByZWxlYXNlMzEtbWFpbnQKKzc2ODAzIDY1NGM2ODUzNjk3NTE0NjUyNGFiYTRjNWVhZTk1ZDFiNDJkYzZjZTEgcmVsZWFzZTI2LW1haW50Cis3NjgwNCA3Y2NkMjI4Yjg5NWNjOWYwOGRiNTVjMmUwZGM0YjlmNzhhYjc1MGIxIGxlZ2FjeS10cnVuaworNzY4MDUgNTRmODQ1NThhZDJiMmY2NzExMDc3NDY0MzFmZWQyY2YwYTBkNmQwOSBsZWdhY3ktdHJ1bmsKKzc2ODA2IDI0YThhMjljOGE0YTA0NmU2NDRmM2ZhM2ZiMDZjM2EyMmMxNGQ5YTUgcHkzaworNzY4MDcgM2E3ZDU0MDQzYWJhOGVmOTgwNDY5ZGYyOTMxNDgxYjQ5ZTY2ZTkxZiBsZWdhY3ktdHJ1bmsKKzc2ODA4IDEyMDYzYTdiNmEyYTI5ZWRiYmQ4OGU2ODMxNTAwMzY5YzZiNDhkMWYgcHkzaworNzY4MDkgMzVkZjY3Nzk4OWNiOTU1MTA0YTJiMTBiYmYxODhlMzk2OTViMjg4OCByZWxlYXNlMzEtbWFpbnQKKzc2ODEwIGZjNzBjOGQ3NDNkYjcyZTZhOWQyYjhmNDg1ZmZlODFjYzgwMzJkYjUgcHkzaworNzY4MTEgNjIxMDZiNmY1NTk2Yzg5M2M3NmE0ODc3YzljNGFlNGU5YTI0YjcyOCByZWxlYXNlMzEtbWFpbnQKKzc2ODEyIDdjNDIxMjQ0ZTZlYThmMGQzMjNiZDAzNTVmNGY1ZDk1OTJhZDVkNWEgcHkzaworNzY4MTMgNTM2ZTQ2ZWQxMGFjZjQzNjIwMDdhZjBjZjIwOGY2ZjFkYmY4M2M2NiBsZWdhY3ktdHJ1bmsKKzc2ODE0IGIzYTM2NDE5MmMwYWQ5N2M4YzMwMDY0Mjg4ZWMwMWUzMDc3ZTZhYTQgcmVsZWFzZTMxLW1haW50Cis3NjgxNSBiYzkzNDA5OGNhYTEwMWUxODE5OTk1ZTM3MWUyNTdhMzJhNzNjYTJiIHB5M2sKKzc2ODE2IDA1NmZmYjhlMTdiM2Y1NGYwOTYwNmEzZmYwMzc2MmE3M2M1ZDIyNjEgcmVsZWFzZTI2LW1haW50Cis3NjgxNyBkZDUzOTFkNGJiNjgwZDRmODQ0OWM4MGQyY2Q5ZGE5OTgwMjZmZTYxIHJlbGVhc2UzMS1tYWludAorNzY4MTggNmIyODUyMjE5N2RiMTBlNDRkOGNlOTYzZDk4ZTM4MDg3YzE5NzMwOCByZWxlYXNlMzEtbWFpbnQKKzc2ODE5IDlmMzU3Yzk2ZjI0NmU4ODQwNTQyNzg2ZGNmMGU0ZmNhMGE2NWU0MWYgbGVnYWN5LXRydW5rCis3NjgyMCA3MmVmM2RiNWM2YjM3YjI4MTQ3YzE2MGQwNGQ1ODE0YTM3NmZkYTZhIHB5M2sKKzc2ODIxIGU1ZjIwMTNiMjlhMTk3ZTFjZjhiM2FkZjNmMTA2OWViMjM1YTVmMjggcmVsZWFzZTMxLW1haW50Cis3NjgyMiA2ZTEzMWUwNzEzMTA1ZDA5YmFkMzQ0YjhjMTVmZWNhNzA5MDQ2OGRhIGxlZ2FjeS10cnVuaworNzY4MjMgZGExZmNlNTQwODg1ZTFkNzVhZDZhY2NhNDc1NjIyNGUyNGRkMThmYyBweTNrCis3NjgyNCA0MGYzYjhiODNjYzZhM2U5Y2JhNWViNGRkMzZiYjU4MjczZTQwNjc1IGxlZ2FjeS10cnVuaworNzY4MjUgNzcwNWFjMjE4Yzg3MGI1MTVmM2E0MGNhYjk0ODc4Y2E1ZWYzZDM4YiBweTNrCis3NjgyNiBjMGM4NjFkMzhjNGZkYWVmNmJhZDhlYzRhMTA0ODQ1OTQ1MjExZDQxIGxlZ2FjeS10cnVuaworNzY4MjcgMzU0Njc3OWIyMWM3MDgzZTUyODRkNDk3YWE1ZDk5ZjNhY2RlYjZiMiByZWxlYXNlMjYtbWFpbnQKKzc2ODI4IDY4MjQ5ZWQ4ODA5ZTgxMzNjODNhNDZjYmU5N2RkYTEyYWI0YTRhNzAgcHkzaworNzY4MjkgYmM1NWY1ZDUwZGVjODcwYTk0NjU3MGQ4MjNjNjZhMDEzYzY1OTQwMyByZWxlYXNlMzEtbWFpbnQKKzc2ODMwIDUxMDNmNjhjY2E2OTA5NWU3MGNkNzM2NDJiMDJkOGQ0MWI3MzFkYzIgbGVnYWN5LXRydW5rCis3NjgzMSAyYjhmNDg1YjBkMDM5N2UxMjUwMmEzYzkzMDYzMjM3MGJhN2NmZjY2IGxlZ2FjeS10cnVuaworNzY4MzIgNzZiZDViZGNlY2NkZmQ5NjZlYzJiOGIwYzM2NzZmMWIxMDViZjYxYSBweTNrCis3NjgzMyBkMmUxNDY1M2E0M2M5OTVjN2Y2MjJjNDE1ODVkZWVmZWM4MjkzZWUyIHJlbGVhc2UyNi1tYWludAorNzY4MzQgZDg5OWYyOGRiYjhlOTdjMjEwOTYyZjgwMGY5Mzk2NDA2MjVjMzU5MiBweTNrCis3NjgzNSAwZWVlYTc2NTZjMjJmMDMwZWQwMWQ1ZjAzY2RlYTk2MjBmMjhkNjVlIHJlbGVhc2UzMS1tYWludAorNzY4MzYgNDljNjhhMmIwNTg1MmM1NDkxNWNhYmM5MjdlYTgzYzQ3NGRlYTNkZiBweTNrCis3NjgzNyBiYzBhNmU0Y2UxYjBiYmYxZTM4ZDY2ZDM5MDJhMTViN2JjYjJhZWJhIHJlbGVhc2UyNi1tYWludAorNzY4MzggOTE5ZTIxNDI3MjZlZmUyYmEwYmQxNTU0NDA0Nzg4MGQyYTdiN2EwMCByZWxlYXNlMzEtbWFpbnQKKzc2ODQwIGZhNGYyM2IxODJkZTY3OTFhYmZmODdhNTYzNDM3YjM2NjAwMjZlMmYgbGVnYWN5LXRydW5rCis3Njg0MiAxNTkyZTg5NTFiMmJkMzU0NDQ0Yjk4ODBlMjM2YzcyMDRiZGVjOGYyIHJlbGVhc2UyNi1tYWludAorNzY4NDMgMzI5ZWYyOTRjYzJkYjU2ZDQyZDgyZDgyMDljNzE2YjIwNjY0Zjc4YiBweTNrCis3Njg0NCBlOWNlYmJlOWRlNWMzMWFmOTMwYzBjMWY4Y2I2OGRhNjJhNGQxOTcxIHJlbGVhc2UzMS1tYWludAorNzY4NDUgOTYwZTllODRjYTU5NzU1YzZiNWRkYWQyZTY5ZGUzNzAyMTQ2NzRjMSBweTNrCis3Njg0NiA3YzNjMDBlNzZjMjQ4OGI2NmU5ZGMyMTUzZGU3NDgxMmFhNzM2ZDNlIHJlbGVhc2UzMS1tYWludAorNzY4NDcgNjY2NDBmYzYwN2NhMDYzNTU4OGQ2MDUyZjliY2E2NTA5Y2JiNzIxMiBsZWdhY3ktdHJ1bmsKKzc2ODQ4IGQ4NjIwMDBmMWIwMTU1M2Y5N2UyNjc2ZGM2MDQzMDgzOGUwYWFmNzAgcmVsZWFzZTI2LW1haW50Cis3Njg0OSAyNGI2ODUzMTg2MzNiM2EzZTI5MzRlYjEwZWQyYThhMzhkYTNhYjk4IGxlZ2FjeS10cnVuaworNzY4NTAgZTUwZTQ5ZDYxZmVhNWYzNDM5MGIyYjk5N2Y4NDliZmFjY2IyMmM5YiBweTNrCis3Njg1MSBhOWI2ZjI3ZDFlMjkwZWM5N2NjMTVkNTllMWY1NGJjNmNlY2FjM2QxIGxlZ2FjeS10cnVuaworNzY4NTIgYzJlNGNmYmIzOThjYjg1ZjExYjMzZmNlZjQ4NWM4NTNiMTg1ODE2YiBsZWdhY3ktdHJ1bmsKKzc2ODUzIDk0MjgyM2RkZDgxOGZjMzg5MmIxODgwY2EzNzNhMGU0MzZmZDkwZDIgcmVsZWFzZTI2LW1haW50Cis3Njg1NCA5N2FiZDdhYWJhZGMyOGUyODgzNGRiNjNlZjQ4ZTMxZmE1YWIwYTJmIHJlbGVhc2UyNi1tYWludAorNzY4NTUgN2ViMDUwYzBlNjU0NjdjMGQxZWZhMDkxMzk5MzhlZGY5YjAwYWI0OSBweTNrCis3Njg1NiAyYmQwZjM5MTU5Mzg0MGM3NjFhYmFiOTlmOTYwMTk4ZjdmNGRkMjY2IGxlZ2FjeS10cnVuaworNzY4NTcgOWZlMTVjMWY5OWNjOWIwYzlmMmVjYWIwZjE3MjM2MGM2OTdkM2E4OCBweTNrCis3Njg1OCA0ZmNiZTBlYTliMzE3ODEzODVjNTc2NTQ3NDg3OWQ1YjJmMzFhNTgzIHJlbGVhc2UyNi1tYWludAorNzY4NTkgYmY2OWMzZjJiNzc4ZTQwM2M0NWU1NDgzYWY2YjRiOWZkNTZhZTgzZiByZWxlYXNlMzEtbWFpbnQKKzc2ODYxIGIyMDZhZDhjZjViZjJlNDQ3NWU1NmYxZmM4OWY3NzNlNmJhNDk5OWMgbGVnYWN5LXRydW5rCis3Njg2MiAyMmExZWE5MGZhYTYxNzczNzY2OTlhNDQ0NjM4ZGZkYzc2YjE4OGM3IHJlbGVhc2UyNi1tYWludAorNzY4NjMgYjQ1Y2ExMWI5YTNlYzc0OGVhNGRjMGI3NTRmYjVmOTI0MDk0NGQyMSBweTNrCis3Njg2NCA1NGE1MDJkYjNiOGNlMGQ5M2RjZmE2ZjM2ODk3YmMxYjQ3Njc5MjhhIHJlbGVhc2UzMS1tYWludAorNzY4NjUgYjM1NmVkOTU2NGU2OGMyYzIyMGQ4ZTIwYWE3ZDFjNjRiNmE3MTUyZCBsZWdhY3ktdHJ1bmsKKzc2ODY2IDBhMWMzOWM1ZjFiOWM5ZTQzMTAwYmUyY2ViYjI0NmFjMmYzMGEyNzMgcmVsZWFzZTI2LW1haW50Cis3Njg2NyBiMTg5NjYyMGMyOTZkMmJmMmNhZjhjNzczNGVlYTdmYTRiZjRlMmE1IHB5M2sKKzc2ODY4IGIxM2Y3MTUzOWFhYzAwYTZkY2E0YjgxZDljNmRiZWEyYzE3ZWMzY2QgcmVsZWFzZTMxLW1haW50Cis3Njg2OSA2MmFmY2ZhM2ZlMTg4YjdiN2E0OGYzNTg1NmNhZjYxZDc1NWMwODU4IGxlZ2FjeS10cnVuaworNzY4NzAgYmI2NjRkMjE5MzliNjg4ZGZhZmQ0MGI0OTk2YzU2YTJiYTBhYzM0OSB0YXJla19zeXNjb25maWcKKzc2ODc0IGUyNmVlOGRkZDI5ZDEzYzcwOWExN2JhZGU5MGM5Njk0NTg1NGQ0NjggcmVsZWFzZTI2LW1haW50Cis3Njg3NSA1MWQzN2VmNDNlMWU5ZGU1ODEzYzRmMzhiNjI0ZDM1MGYwYWEwYTU5IHB5M2sKKzc2ODc2IDBkMzlkYWIwNTYyMmU3YjFlMzFhY2YzYjViNzA4OWZhNDdkYWUwYzIgcmVsZWFzZTMxLW1haW50Cis3Njg3NyAwMTk0OTFiMjZiMzZjZmU3MDE4YmY0ZDIxM2E1MjFkOTBjY2E4NTg2IHJlbGVhc2UyNi1tYWludAorNzY4NzggZDM1MGFmYzMzN2RjNjRjNDdjZmFjNzg5NDVmZDg5MjhjYWUyOWNhNiBsZWdhY3ktdHJ1bmsKKzc2ODc5IDFlODE2NGI1ZjM2ZGJhZjJhNTllOWMwZjJiMWNjMWFmOGFiMzcyMjAgcHkzaworNzY4ODAgZTVkZjlhMWRhYjZhMDgzYjU1ZTYwYWIxNjgzMWM0ZGI4MThkMjRlYiByZWxlYXNlMjYtbWFpbnQKKzc2ODgxIDY0ZjVmMzc1ZDA3M2VjNjI5YTgzZTNkOWE0ODhlNGEyZGIwMmZhZjQgcmVsZWFzZTMxLW1haW50Cis3Njg4MiA3NjUyMzM0NmUyMGQ3NmQ1YTlmMzQ0MDRjYjc5ZTM2ZTdlYjEwODZkIGxlZ2FjeS10cnVuaworNzY4ODMgZDEwNmJhNjEyNmExOGVjMGI5MTBkYjNmZjBlNTMwNjZmNWM0OTljMCBsZWdhY3ktdHJ1bmsKKzc2ODg0IDcyMzQ2MGI5MGFkZDE0YWMwMDRiNDU1NDNlZWI1MjE5MTAzN2ZkNjIgcHkzaworNzY4ODUgMGVlYzYzM2VmMGUzMjBlMjc3OTNkOGNiNDY0ZDgzZGM2NWYxYmM5YiBweTNrCis3Njg4NiA5NjEzZWM0MWFlYWFhMDU2NjIyZmQ5NWFmYjE2MWVmNzQxOWUyOTdlIGxlZ2FjeS10cnVuaworNzY4ODcgYTM0OWRiZWFiYWVlNWEyZmQ2MWZkNjBhYjg2NjdmNDQ5N2QxMjM5MyBweTNrCis3Njg4OCA1YjM3NThlZTQzNTY2Zjk5M2JiOGViMDc0YjdlMDVmYmMyZmMyMjY3IHB5M2sKKzc2ODg5IDM2MjE4YjY4MWQ5ZWRiMTY3ZTMxODdmMjdhMTE4NGM5MTFjMTgyNWMgcHkzaworNzY4OTAgZGRkMWRiNWQyZmUwMGU2ODliYzE1NmZjNzNiMGNkODc4YTUxYmRhNiBweTNrCis3Njg5MSAyNjIxMzBkNzAzMDZjYmNiYzEyOGE0MDQyNDJiZjhhMGQ5YzY5M2I2IGxlZ2FjeS10cnVuaworNzY4OTIgYjhjYTYxZDZlMjYyM2E1Y2YwMmUwODM1YjIxOWY5Nzk3MWM4MzRmMiBsZWdhY3ktdHJ1bmsKKzc2ODkzIDJkNzVkYTY1ZDI5MGU1ZGU1ZDk0MDY5YjUwMThmMThlYzc0NzNlN2YgcHkzaworNzY4OTQgYWVlZjJmMjdmOWYwY2Y2YzlhNTQxZWUyOTdjMGJhNDI0N2ViMTc0NyByZWxlYXNlMzEtbWFpbnQKKzc2ODk1IDdiYWE1NWI2ZThjOTE4OGQwMjg5NDNiOTg2MWZmYzhmMmM1YjRkOGEgcHkzaworNzY4OTYgMTAxMzIwODk5MDQxN2Y0ZWUwYmEwYTE3ZWYxMmI3MDVhMzUyYjJjNyBsZWdhY3ktdHJ1bmsKKzc2ODk3IDZkNDdiMjQ5NDcxMzdkMWUxYmExODY5MjdlMDQxYjdhZTNmYWIzMDUgcmVsZWFzZTI2LW1haW50Cis3Njg5OCA3N2UyMzEzMTM1ZGQ5YmEwMThiYTY5ZTY4YWJkYTkzYzYwM2JlZjY3IGxlZ2FjeS10cnVuaworNzY4OTkgOWI4NDcwOThjYmY5MzA2ZjM0Y2IwYmZlZjBlOTFkZWJkYzYzNTQwOSByZWxlYXNlMjYtbWFpbnQKKzc2OTAwIDE4ZWIwMDkxNGFlZTViYWNhOThjZDI4NDVlZWNiNTU4MWQ4Njg4MWUgcHkzaworNzY5MDEgNmY5YzA3NDZmMWUyMDUwNjhhODM2YTk0YWIwM2IyZTU2MTk5ZjVmYiByZWxlYXNlMzEtbWFpbnQKKzc2OTAyIGEwODg0MGNlODhkMzRjMWYwMzc5ZGZhOWEyZjg1OTEzYTlhMDhhOWQgcHkzaworNzY5MDMgZWQ0ZDVjZDQ3ZWU5NjEwMjA3YzRjMGQ1ZTkxNjczNDIxNGFiNTQ2NCByZWxlYXNlMzEtbWFpbnQKKzc2OTA0IGY3ZjVlMWQyN2UwNjMwMmU1NTMyZmUxZGJjMWI5YWMxYTQ4ZjA0Y2UgbGVnYWN5LXRydW5rCis3NjkwNSA4OTk5Njc1NWNmMzllNzBiYzQ2ZTc0Yzg1Mzg5NjNlYjk3MGMzM2Y4IHJlbGVhc2UyNi1tYWludAorNzY5MDYgYTQ2ZGQ4ZGEzYzMwODI3YzExMDE4ZmUwYTYxMGQ5ODY4MWIwOWJmMCBweTNrCis3NjkwNyBlMjNmNWVjOTMzMTU4NTdkNzIyOWI3YmQyZDZiMWI0OTcwMjg2NWYyIHJlbGVhc2UzMS1tYWludAorNzY5MDggMTA5NzBmNjRiYTMzMWIxODliZDhlOTU0MmY5NTkxMzIzZGQwNmNmMyBsZWdhY3ktdHJ1bmsKKzc2OTA5IDcwY2MyODhmOTE5ZTE3ZWE2MDIzNjM5YTk1MzIyZTc0NjYzYmFkNmQgcmVsZWFzZTI2LW1haW50Cis3NjkxMCA3MjRhMGRhODVjNDJjYWU3OTA4NmJkNzg0OWQ2ZTg5ZmZkOTE4MDIyIHB5M2sKKzc2OTExIGRjMWFhZGY5ZmE0YTNjNmNlMjQ2MDBlN2RkNmJkZDYyNzUzOWI0YjkgcmVsZWFzZTMxLW1haW50Cis3NjkxMiA5Yzk1NzUyZWRlMTI1M2E5MzIwZmRjZGM3N2UxNGVlZDNlYWY5NTc1IGxlZ2FjeS10cnVuaworNzY5MTMgNTMxYjExYTZhMTI1NWNkZWFmNGRhMDRiNGM2ZWFkZGI5NzU1ZmNkMiBweTNrCis3NjkxNCBlYmViMmU3NzYzZjVhM2E1ODNiZTVlNzhiNTBiMDhjMTc1ZTRjZTIzIHB5M2sKKzc2OTE1IGVkMTMxMmNkYjliMjBhOTlmMDQzMTdlNWMxZDkxMGY3NzE2Nzk4MTkgcmVsZWFzZTMxLW1haW50Cis3NjkxNiA1Y2NjNWQ0MDY4YzFhZWUyNjI4NjY0YTQzNDg0Nzk0ZTIwNGVlNDhiIGxlZ2FjeS10cnVuaworNzY5MTcgNTNmMjFmMDhhZjBkNDRjNzc0ZDRjZjgyMWNlMjE2M2UwMmU4ZDNhNSBweTNrCis3NjkxOCBkNTE1MGIyOTM0ZmE2MGQzNzQxYmY1MzYxY2E1MjkyMDY4NzI3YTE4IHJlbGVhc2UyNi1tYWludAorNzY5MTkgNmY2MDBlOTJhMGY1MjdkYTZlNWY3YjJhNzk3OGIzYWQ4ZDEyZmU0MyByZWxlYXNlMzEtbWFpbnQKKzc2OTIwIDg5NmJmNDk2MjhhYmZkM2IwZmQ4ODVjNDdiODFkNjAyOTViZmQ4Y2QgbGVnYWN5LXRydW5rCis3NjkyMSBjY2EwOTdlYTI3YjljMWQ4NjgzZmU0MmJiN2EyM2I1MmQxNGUyOWM5IHB5M2sKKzc2OTIyIGU5ZGE4MTJmNGZmZjQzMTQ0MjI5ZTE0NGZlZDgxOWRlZTY2NTY3YmEgcHkzaworNzY5MjMgMjA4OWQ5YzFhZTEzZTFiM2JhMGQ3NDgzNmM5ZmVlOTM5NWE2OTc5NyBweTNrCis3NjkyNCA5ZTRjOTAxZjAwOTNjZmYwNGM3YzY4ZWRmZjNmMTVmNTI1ZGIyMWU1IGxlZ2FjeS10cnVuaworNzY5MjUgZDg5MGM4ZmZhZDAyZjdjMDNmMjI4MDhlNTk4ZmIxZmRiZmM1NzQ2NSBsZWdhY3ktdHJ1bmsKKzc2OTI2IGM5YTViM2E0NjBmZjYzZmQ3NTBlMjY0YzU5NjhjZGI2N2VkZjJiMDYgcHkzaworNzY5MjcgNjUwYjMyNjQwM2NkMjZiZjVmMmU3OTUzMDg5MTlmMDgwOGY2NmM5OSBsZWdhY3ktdHJ1bmsKKzc2OTI4IDFmOGIzNjMyMDIxOGI4NDQ1MmU0NDMwMDBkODdhNzIyOThjYzU4YmUgcHkzaworNzY5MjkgNzg0YmRjN2IxOWFhZjNhMWNjZmViZTkzYzJkNzA3NzVhM2MyYzYwMyByZWxlYXNlMjYtbWFpbnQKKzc2OTMwIDc5NDFhOWY4NjVjMjI4M2MzYzNjMTJlNzMwMjEzMDkxYWVjYzdkYzEgbGVnYWN5LXRydW5rCis3NjkzMSA2ZDc0NjRkYmI3MTRiMTRlYTdjMmUxM2JjMjhhNTdhMzhkYWI4MGQyIHB5M2sKKzc2OTMyIDM5MTQ5ZDIyNWVjN2ExNTIzY2UyYTg1NTAyOTBjMzgwZTlmZTU3ZWUgcmVsZWFzZTI2LW1haW50Cis3NjkzMyAwMjA1NGFmYTM2MmYxYjM2NGE4OTU2ZmQxYjU2YWIxYzU3NjZhYTA4IHJlbGVhc2UzMS1tYWludAorNzY5MzQgMDQ1ODhlZmYyNWExOTA5NThhMzU3MzE0YTg3M2E2MGJkNWNlMTQ4OSBsZWdhY3ktdHJ1bmsKKzc2OTM1IDFjMmIzZjc5NWQxYjIzZTIxOWIwNGRhNGFjODJmNzhiM2FkZDhiZWEgbGVnYWN5LXRydW5rCis3NjkzNiAxZGFhYzJjZWVkYmYyNWMyNmNhOGQwNjczOWMzMzVmNjg5OTU4MDQ0IHJlbGVhc2UyNi1tYWludAorNzY5MzcgY2IwNWNjZDc1OTk2YmNjMDE2NWUwMGU4NDIyMWIyZWU5YjFkMzdlZCBweTNrCis3NjkzOCA1ODEzMzcxNDE4OWNhYTg1ODQzYmZlZTU0ZTMwMDg0ODdjZDUxN2ZlIHJlbGVhc2UzMS1tYWludAorNzY5MzkgNjYzMGUzNmFmOWMzOWIwNjI0Y2FjMTU0ZGNhMjNhNTZmOWNlMzJiZSBsZWdhY3ktdHJ1bmsKKzc2OTQwIDU1MDA1M2JhYWZmYTc5ZDRjNDVlNzI3ODdiZWY1YzU4OGE2NDhlMTggcmVsZWFzZTI2LW1haW50Cis3Njk0MSA0YWNlMDhhYWMzNzYzOWMzNjU1MDgzZjFmZTNmZmI1NGJmYzg3MjY0IGxlZ2FjeS10cnVuaworNzY5NDIgZDg1NjIwMDJmOGU1YzFiNmJjZGE2MWJiOTM4OTRiMzQ0MWZiNDU1YiByZWxlYXNlMjYtbWFpbnQKKzc2OTQzIDQ2NTgwOTQxNmE4MmYwYmYxZTkwOGI4ZTBkMGZhZWNmMTMzMWVlYWEgcHkzaworNzY5NDQgNGQ0MzBlNTVhZDdjNThhZGVhNDlmZDNjNGZhNmYzY2FjMGIwZjhlYSByZWxlYXNlMzEtbWFpbnQKKzc2OTQ1IDZjMWIyMDY1ZDM1Y2IzYmNmZTFjZWNkMGIxMmY3YTA3Y2M5ZDE5ZWUgbGVnYWN5LXRydW5rCis3Njk0NiBiZjJlZmY2MGVhZTJiYWExNzdkOTFlN2M4YWZjYmQ0NmQ1ZGRkZGVhIHJlbGVhc2UyNi1tYWludAorNzY5NDcgOTljMGFiM2NkMWY5NTY5ODA3ZTc3YTE4MjExNzNlYjFkNDIzMTU2ZSBweTNrCis3Njk0OCA3OTcxN2I3ZDM3OWRiZmZlYmI2NzY2OGNiOTkwMjE4OTlhODcxMTEwIGxlZ2FjeS10cnVuaworNzY5NDkgYjFkNzJkODk0NjIxN2IxMTMxODI5OGQ1NTQzNDBlYWQxM2QyMDA1NSByZWxlYXNlMjYtbWFpbnQKKzc2OTUwIDA4ZGYxYzllYTY0M2I1NWNjYWM2NDEwNGJiODRhMjIzYmRhMzIzYmUgcHkzaworNzY5NTEgZDAyNWY0OTg3MzE5MWEwMzQyNThhMDI2ZmE5NzllZTBkN2NkYjYyYyByZWxlYXNlMzEtbWFpbnQKKzc2OTUyIDA5NmIxZDk5Nzg1MzhiYjJjODg2MGE0MzdiMDY3ZmZjNzhlMmIyMTEgbGVnYWN5LXRydW5rCis3Njk1MyAxNzcyMTk1NDA1ZTdlYTc1N2U0OWUwZmY1NjQ2MGIzZTkyN2U4ZWYzIHJlbGVhc2UyNi1tYWludAorNzY5NTQgZWE1ZTU0YmQ2Mjc0YzMzNDg2OWZjNTFhMTVjY2ZkZTA1NDhmMmUyZCBweTNrCis3Njk1NSA4NmI1ZGYwNDYzNGMwNjZlMzM2ZDFmNzNlMzczY2IwZWJjZjBiOGQ3IHJlbGVhc2UzMS1tYWludAorNzY5NTYgM2UyYjc5NjVhZGE5OTdiZWFlNDAyYWMwZjU1ZGUxYjQyM2VmOTc0MCBsZWdhY3ktdHJ1bmsKKzc2OTU3IDBlZTJhZTc1Y2U4ZjQ4Yjc5YmJiM2Y3OGI5YTQ0OTMwOTZmNDQ4MGYgcmVsZWFzZTI2LW1haW50Cis3Njk1OCAzOWFiMWEzNmIyMDk4NjZhMjUxZDBkZWMyODNiOGJkMWUxOTY5ZDc1IHB5M2sKKzc2OTU5IDA5YzE3MWZhNTkzNWExZTA4ZmQyMmMxMmEwMDFkYWJhNmQyMTU2MjggcmVsZWFzZTMxLW1haW50Cis3Njk2MyAyOGRlODNmMTdkMDg5ZTQ1NDdkYTYzNjEzOGUyODU0NDViNmRlNmFhIGxlZ2FjeS10cnVuaworNzY5NjQgYTdjNGM3MTdhOWM3ODgxYWNiMzAyNTIzZTAwMDA1OTM1MDc1NDJmMiByZWxlYXNlMjYtbWFpbnQKKzc2OTY1IDQ4YTk5Y2Y4MThjOTJkZWY2MDgzYzhhYWI5OGFhYjZkYjFjOGNjNGYgcHkzaworNzY5NjcgN2IyZWFhMzRiODZiMzY3MDc4Zjc4Njg2ZTYwNDU1Y2EzZDEwMDA4YSBsZWdhY3ktdHJ1bmsKKzc2OTY4IDZkMDllM2ZkZjg0MGNiZDgxYjg4OTc2OGJkZGQzZjA1MzJjMTUwNTEgbGVnYWN5LXRydW5rCis3Njk2OSA3NjEzZGVmMDk5ZDBiYzBhZjQyYjZjZGI3ODgwNmNiYzljN2IzZDkyIHJlbGVhc2UyNi1tYWludAorNzY5NzAgODA3MTk1OWJjMzA2YzUxZTQ2NTY2NmMyNmEyZTY1YzA5OGMwMjk0MyBweTNrCis3Njk3MSA1MGYzMDQ2ZDRmYTAwMjU4ZmYyNmQ1ZTRmYTIzMmM4MmEzODhjYzVlIHB5M2sKKzc2OTcyIDhjODZjZDgwYWUyNjFhMGI3OWI1NDJjYzJiNjYxOTY4Mzg3OTFkNmQgcmVsZWFzZTMxLW1haW50Cis3Njk3MyAxM2U2MmNmMDJiYzNhMTA4MjIyOGM4MDc4MzNkMGQ1OGY4OTViNzk3IGxlZ2FjeS10cnVuaworNzY5NzQgMDljNGYxYjk0MzljOWRlN2U1ZGQ5NTI5YTdiOGI0Y2IyN2Q0NmFiOCByZWxlYXNlMjYtbWFpbnQKKzc2OTc1IGQ3NjEwZWM5NWJjZTI4Y2RmODE3YWMwY2E4YWZmNTE4NTAxNjk5OTAgcHkzaworNzY5NzYgNzU1OWI3MGY5ODk5MzhkMWZiMWNjMTAxZWMwNjBjNDRiM2ExY2NhOSByZWxlYXNlMzEtbWFpbnQKKzc2OTc4IDdmNWNiYzI4ZjQzMzNjOWI0M2EzNjhlY2VmZTVjYjU3NTI2NGE0MjkgbGVnYWN5LXRydW5rCis3Njk3OSBlNzMwMDFhZmM1NmYwNmRjZjVhNjUxZWQwYWFiMWQ5OGE5NWZjODdiIHJlbGVhc2UyNi1tYWludAorNzY5ODAgOTc1MWRkY2MxODgyODNhYjgyZjg1YTk1OTU2NWFhNDY5NjM5OGU3NyBweTNrCis3Njk4MSAzN2EwNTk4ZDMzMmY3NTM4YjBkM2I0Njk5MzU1MTRmMWMwMWU2MWFiIHJlbGVhc2UzMS1tYWludAorNzY5ODIgMmU0ODQxOTBjZWI1YTE5OTQ4MDMzYWI2ZmYwMWYxYzY3N2Y3OWMyOSBsZWdhY3ktdHJ1bmsKKzc2OTgzIDFhMjViNDIwZWMwMGNjNGY5NmRmY2JlYWI2MTFhZjYyY2JmZDc5YzkgcHkzaworNzY5ODQgNjA2YTQ1ZGJkMTBjZTVlM2U1YzZjN2RhMmJhMmFkODRmNWEyYmQ5MyBsZWdhY3ktdHJ1bmsKKzc2OTg1IDM1MjQ5ZTk1NjNhYWYxOTBkMzBjNTVmZGFhM2IzZWNlNjViNDRjN2UgcmVsZWFzZTI2LW1haW50Cis3Njk4NiBkYjE5N2IyOGUwNDU0NDNiNWFmYzY5ODc2ZTA0ZjM4OTNiMzY0ZmJlIHB5M2sKKzc2OTg3IDIwZmNlYmQwY2I1ZGQ4NmZlNTViYWQyOTA2MjMxNGVmY2RhM2E4MzkgcmVsZWFzZTMxLW1haW50Cis3Njk4OCBhZWQzMjE4NzY0OTA5ZWUzYTFmN2M3NGU1ZmEyZTNmMTA4Y2Y1YzE1IHJlbGVhc2UyNi1tYWludAorNzY5ODkgNGQzYjliNGNhZmYwNmIzNWU1ZTIwZjE3M2U4NmQyNjhjODlkOGViZiBsZWdhY3ktdHJ1bmsKKzc2OTkwIDQ0MmQyYjlkODFlMDk4ZjE4MTczODgwMGRlN2Q0YzZhNWRiMzIzOTQgbGVnYWN5LXRydW5rCis3Njk5MSBmMzExNTBkODQ3YzNmZTQzYjQxODZhNDcyNjcyMTJhNjQ3ZDIyOWUzIGxlZ2FjeS10cnVuaworNzY5OTIgYmU3ODg2NjBhOTM5MzM4ZjYxMDE0ZjE2YzQyMjE0MTFmMTM2NDc1OSByZWxlYXNlMjYtbWFpbnQKKzc2OTkzIDA3YTI4MzA4Y2ViYjA2OTQxM2NiZWYwYjBkMjY2ZDVjZjFmZmFjMmMgcHkzaworNzY5OTQgNjVkZTBiZWUwZmYyZWNiYWU2NWE4NmFmNzI0YjZhYmE5YmIyMjM3ZiBweTNrCis3Njk5NSBiOTkyN2VlZTJhNjlmYTgyMjVjN2I5ZjI3ZTMxZmQwOGE3ODlhNDc2IHJlbGVhc2UzMS1tYWludAorNzY5OTYgMzBiZWRiYzI5NzYzNTIzMjU1MWFiZjE4MjY4MGMxYjBkNGJlZTY3ZiBsZWdhY3ktdHJ1bmsKKzc2OTk3IDZjODEzMDE1MmU4OGEyMDFlNTA2NWNjYmZlZjQ4YWE5MjY1YWE2MGIgcmVsZWFzZTI2LW1haW50Cis3Njk5OCBjZjc0ZDlhZjg5NWE2OTRiZjBjZmVjMmU4ODVkMmY3ZTQwN2FjYzNiIGxlZ2FjeS10cnVuaworNzY5OTkgMTUyMDY5NzkyMDIwMWIwMjg5ZDgxZGZiYmJhMWM4NDgyYzQ2MmI3YSBweTNrCis3NzAwMCA5ZGM1NzNiNmY4ZjVmYTdmNGM3YzZjNjZkZWVjZTM0MzQwZGRmZDNiIHJlbGVhc2UyNi1tYWludAorNzcwMDEgNTNlMzIxMjU5NTU2ZTVjMGE1Y2U5YjdlY2ZkOGJlYTZmZmM5MWY0YSBsZWdhY3ktdHJ1bmsKKzc3MDAyIDA3MmMzZDBmMDUxZTliOGJjMDU2ZjgyODQwYzg5ZjI3NmFmZDE0ZmQgcHkzaworNzcwMDMgZGYyNjEwOTNiMzFjZjRkZGRjODEwNmE1ZmU4YzlmMDk3NjJhMmU3YiBweTNrCis3NzAwNCBiZDI4NzQ1YzZmZTcwZDcyNzg4NjJlYTdkZjg0YmIxOGNjOGY5MzY3IHJlbGVhc2UzMS1tYWludAorNzcwMDcgYmE3NGQ1ODc3NGI3MGY2YTZjODc2NjY2NjEyN2NmMTc5YjMwNTU4ZCBsZWdhY3ktdHJ1bmsKKzc3MDA4IDE4YThiMmJmYzljMmViYzhhYjRkNGJkMDIxNmFlODhhNmJiNjJmMWQgcmVsZWFzZTI2LW1haW50Cis3NzAwOSA0MjlhM2UzOGU0NmJmNWQ3ODU3M2Y3YTNjMzhlZTNlNjY3ZDA3NGU5IHB5M2sKKzc3MDEyIDkzZDVjZGYxYzQ1NzNlODZhNDkzMmRmN2M0ZWJhMjlkNzY1YmY3NTYgcHkzaworNzcwMTMgM2E3MzZhZDY2MWZiNjQzYzM4M2FhZjdiYTU0MThiY2UwM2QzZDk0YyByZWxlYXNlMjYtbWFpbnQKKzc3MDE0IDI1MTg2MGRiMzQ5M2YzOGNiODA3Zjk3ZmZhZmVlMGE4MzFiMmUzM2EgbGVnYWN5LXRydW5rCis3NzAxNSAyNDAwNmNhNTYyZDVhYjk1Y2ZlZDU4NTc2ODQ5NDRjMmU3NjQ5YThiIHJlbGVhc2UyNi1tYWludAorNzcwMTYgNGFhMGQ4MTZlZTViYTA1ZDM1YzMyZDE4Mjg3ZDllM2E4NWNmYzEzOCBweTNrCis3NzAxNyA4MDIxYjkwYjU2ZWRiYjdmNDhjYWU0MmUzNDY3MDM0NTI3MzRiZDNkIHJlbGVhc2UzMS1tYWludAorNzcwMTggMWM0ZTg5NTIxODQ3ZTAwMzgyMjM5YjJhZmM5M2MyOTg4OGNmOWJhMSBsZWdhY3ktdHJ1bmsKKzc3MDE5IDEzZTJmOGE3NDljNDY0MjBhOWIwYTBlNTljOTU4ODVlMDk1N2E0OTMgcmVsZWFzZTI2LW1haW50Cis3NzAyMCA4ODYyNzVmZmFmZDZiM2M2NTYzOGY2ZGJlOWMwNmE2NzRiMjk4NTI3IHB5M2sKKzc3MDIxIGU3NTdmYTc3OTYwMWY1MDUzZTQwMmI5YmFiMzJhNTg5NjBhZjE3YWYgcmVsZWFzZTMxLW1haW50Cis3NzAyMiBkZjJjZmNmOWEwNzM4ZTFlYTg0MTc1MmU1MDBhNDc5NDlkYjY4MWM2IGxlZ2FjeS10cnVuaworNzcwMjMgMWY4NmUwZTQ2OTY5ZmE0MjIzMTNkYzUzZmMxMjE4ZDk4Y2Y3MTE1YyByZWxlYXNlMjYtbWFpbnQKKzc3MDI0IDU1OTQyNTMzMzE3ODdlMTIwNDIwOWQ0Y2I1NDI2MzA4NmViZWQ3YzkgcHkzaworNzcwMjUgZDFmMWEwNTkxNTRiYTlmMTIzMDgxNGJhN2MxN2NhM2YxMjk0NGQwNSByZWxlYXNlMzEtbWFpbnQKKzc3MDI2IGNhMjRlYTFhMmFlMmVkODcyNjI1YWFjNDQ5OTNiNDQxODVkNjkxNWUgbGVnYWN5LXRydW5rCis3NzAyNyAxZGY3M2JmMzhjNTViODU3ZGI4MDIxMWJhNDFmYThiNGUzNzEyNzQ2IHJlbGVhc2UyNi1tYWludAorNzcwMjggMzVkZTU3ZjUxNTk5NTczNDk0Y2Y3YTJkOGU3Mjc1YjY2YTc2YmZkOSBweTNrCis3NzAyOSA3MWU2YTBkZmFmYzg0NzE2ZjQ2N2U5ZTMzMjE5NGM3NTMzOWU5ZWZkIHJlbGVhc2UzMS1tYWludAorNzcwMzAgOWRhMGNmMmRmZmNjOWVhNThjNTIwMTk3MTQxMDljYWRlMTY2ZDU5YiBsZWdhY3ktdHJ1bmsKKzc3MDMxIGFhZWI2NWJhYjNjMDUxZmI1YmI4ZDQ4ZTNiZWUyNDM3YzlhYWM2NWQgbGVnYWN5LXRydW5rCis3NzAzMiA5NGU5NTdjZmRhMzgzYWY5OGY4ZDE4ODUyYTE2Y2MwZjVjMGUyMGM5IHB5M2sKKzc3MDMzIDQ2MzcxYjI4ZmRkMTE4NTFjZTUwMTUwMTQ0MDdhNTM0Zjg2MmE3OTEgbGVnYWN5LXRydW5rCis3NzAzNCBiYzVlYzUwYzUwZjllYWIzMzM0NTc0MDFjZDUzZjM2ZTYxMTI0MDg3IHJlbGVhc2UyNi1tYWludAorNzcwMzUgM2M0MTI0NDdlZmIyMDMwYjQ2NjU4NWI2M2I0NTljNTZiOTMyZTI0NiBweTNrCis3NzAzNiBlN2RjYzc0ODVkMGJkODFjNThmODEwN2EwNGZkN2NjNGQ0MDFhMTFjIHJlbGVhc2UzMS1tYWludAorNzcwMzcgMDg1NTgxODg0ZTZmNjMyMmVhY2QxNGI3NWNiOTAwNmY4NTM2Yjk0MyBsZWdhY3ktdHJ1bmsKKzc3MDM4IDg3MGE0NmM4YTY3MDVkYjI4Y2Q5YzhmYTYwNzViODI4YjdhZGNkMTQgbGVnYWN5LXRydW5rCis3NzAzOSAwZWY5NGRhNzViZmRhNmQ3M2U4ODI3NzliYzEzNWQ4NTU4NzNjYTJkIHB5M2sKKzc3MDQwIDQyN2MyMTQzZTJjOWJhMWY4N2M5NjIxNzc1MTQ3OWI3ZjdlYzQ5YmQgcmVsZWFzZTI2LW1haW50Cis3NzA0MSA4NDI2MzQyNzZkMDExZGNiMWY0MmYwY2EzYjQ2M2JmMWFmMTk1YjJkIGxlZ2FjeS10cnVuaworNzcwNDIgM2I4NmIyM2M1OGZlNDQwYmIwZDg4YzI3ZTI0MzM2MzI4ZDM4OTY1NyByZWxlYXNlMjYtbWFpbnQKKzc3MDQzIDcyNjMyM2ZkODdjYTUwYzYwODk0ZTg1Nzc1MmFiZjFlNmJlMTIwZTggcHkzaworNzcwNDQgMzQzNGU2YjExYTkyMThlZThlYWVlYzdiNWJhNGQ1MjE1YjM1YzNjYSByZWxlYXNlMzEtbWFpbnQKKzc3MDQ1IDg2Mzg3YjhiOWFmOGI5ZDVmZjYzYWIzOGEzOThmM2VmZmQwNzUzMDkgbGVnYWN5LXRydW5rCis3NzA0NiA5NDI0Yjg0YTJlYzk1MmEzMGI5NDMwMmZlOGM3N2E0OTJiNDZkYzIyIHJlbGVhc2UyNi1tYWludAorNzcwNDcgZjU2MGUxYTc3NDRlZmFkNjJiOTgyYjk2OTczNWM4NzE2MzljNWZiNSBweTNrCis3NzA0OCA5NjI4ZWI3ZTk4ZGZiNzgwMTBhNjcwM2EwOTQ2ZTAxZGQwMWI0YzEzIHJlbGVhc2UzMS1tYWludAorNzcwNDkgZGI3OTY1NjcxMDljYjRlY2VmZTI5NjQ4NzZiMmZmMjZiODQ5NWY3YiBweTNrCis3NzA1MCA2Y2ExYjliNzhjM2ZkNzliYjcxZjcxZjY5MDhhMWNhOWRhNjE5YTViIGxlZ2FjeS10cnVuaworNzcwNTEgZTVjNGM5NzEyNjYxYWYzZTJlODA1MjgyZGRkOWY2NTVjOTAwZGViMSByZWxlYXNlMjYtbWFpbnQKKzc3MDUyIDQ5ZGYzY2Y5MTlmN2RiY2VmZmQyNWI4YzE4OTg3NDJmMzgyMTNlOGUgcHkzaworNzcwNTMgMjEwNjExMmY1YjA3NjM4ZWNiNGI4ZjllYTVhMGNlNGRjYjVjMjg5MSByZWxlYXNlMzEtbWFpbnQKKzc3MDU3IDVkYzVkNmM2ZjY0MTc4OTgzNmNlNTlkNGY1M2NlN2YzNjBiMWU0ZjMgcHkzaworNzcwNTggNjQ2NzY0OTk0MTIwMDkzZDAwNmE2MmViNTBkOWE4MzAyNmIwN2FjMCBsZWdhY3ktdHJ1bmsKKzc3MDU5IDE1MTI5YzgwYjJmZWQ3YzUwMDQyNGM2MDE0NGQ1YzdhMWY3ZDA2OTEgcmVsZWFzZTI2LW1haW50Cis3NzA2MCA2ODgxMWRmZTcwNmNlOTRkMzFlNDFlYTA1NGMxNjljZGRlZTQ4ODI1IHB5M2sKKzc3MDYxIGUzNzJhODA1NmM5ZDUzN2Q2ZmQ0OTQxYWY1MTA2NTQyMDE4N2MyZTEgcmVsZWFzZTMxLW1haW50Cis3NzA2MiBjNGU2MDk4ODgzNGRmMGZkNDM3YWUzNDIyZGEwY2FiNGFjZDZmY2UwIGxlZ2FjeS10cnVuaworNzcwNjMgYWFhNWFiN2I5NDJhOGU0NDUzZjEzMTBkY2FkZDljNWU1N2IwMDZiZiBweTNrCis3NzA2NCA1NjBiODc2NjkxOWQ1ZDE1YzQ0MmExMmM5OTk3OWRmYjUxYTJmODJhIHJlbGVhc2UyNi1tYWludAorNzcwNjUgMjI5MDc4ZTQ3MDEwYzhjOGE3YmNkMDc5YzhkMDRmN2U4YTAzOTE2YSByZWxlYXNlMzEtbWFpbnQKKzc3MDY2IGViMGJiYWJhMDM2MWI3NDZmYmE5NzBlZGI1ODk5NTcyYzliMGY3ZjEgbGVnYWN5LXRydW5rCis3NzA2NyBkZDY3MjZjOTc4YzY2Njk4ZjRkNjkwNTM4ZDgyOTYyZDY2ZTJhZWNiIHB5M2sKKzc3MDY4IDk1NzI4OTAyOWMwNTM0ZTVkZTI0ZmNhOTI3MmNhZjgwZmMyNjI0ODggcmVsZWFzZTI2LW1haW50Cis3NzA2OSA4NWU3ODFmNTk5YmM4YTk0ZjU2N2IxYTM2NDA0ZmNkYWRmYjI3MTFhIHJlbGVhc2UzMS1tYWludAorNzcwNzAgOGU4MmZiMDQzYWU4Nzg1OWU5ZGNiNWZlMDBhNzAwZGM4NTExZDE5MSBsZWdhY3ktdHJ1bmsKKzc3MDcxIGFkN2U0MTQxYTNlYjgzZjg2YzZjNTY5MDQwZGUzNTNiMTc1NDQ0ZDUgbGVnYWN5LXRydW5rCis3NzA3MiA3MzM2NWJiMjZmZDY1MGNjMDQ2MGNmMzVkNzFmZDBiNmIxODhlZmM0IHB5M2sKKzc3MDczIDFlMzcxODBlZWNhZWE0NDNmMTQ4ZjRiMzc5MGJiNjE0YmQ1Y2MzZmEgcmVsZWFzZTI2LW1haW50Cis3NzA3NCA1YTkzNzEwMTdlZGY5YTFhNTAxM2ZmOGEwMWQwYTlhZWYzZWRlYTBlIHJlbGVhc2UzMS1tYWludAorNzcwODEgNTI1ZjY3YmVlYjg5YzdmYTIwY2FmYzllODcxODZlZTAwMTEyNjdhYSBsZWdhY3ktdHJ1bmsKKzc3MDgyIDMwNzQxZWY2NTYxNzM4ZGY3MGNiZTI3NTk4NzUwZGU0MDRlY2UwYmEgcHkzaworNzcwODMgNTc0MzNiODMzYjJhOGRmMzQxMTQ1ZWQwZTMyOWQ5OWM2M2M1MWZmMSBweTNrCis3NzA4NCBjYmUxYmJlNTQ0YzllNDZiZGExNTc4ZjM2MGIxNzMxNWFjYzk0MzA2IGxlZ2FjeS10cnVuaworNzcwODUgYTExYThlNTNjNDk1Y2U4YmM3NzEyMzU1ZGJkZjU2ZDhmNWNjNDY3YyBweTNrCis3NzA4NiBmZTA0NTlkYzk4ODlmOTM3NmU2ZGUxYTUxNDEzM2M5MDUyOTM4ZTMwIGxlZ2FjeS10cnVuaworNzcwODcgZmZkODAwZWY0NmVhMDU0ZTkyZWZiNDkwNmNkMjdmMTQzMTYzZThmNiBweTNrCis3NzA4OCBjZjM5YzVlNDYyZjk0YmNlNTgxNWIyZDY4YjBiYWI1M2FkZjViYWUyIGxlZ2FjeS10cnVuaworNzcwODkgYzE5NzJlZWYzNTc5NWNlMmQ0YTEzMTA0MjE3M2YyODdhMTFlM2UwZCBweTNrCis3NzA5MCBjMTRhMDE0YWY5NTRlYmFjZjA0MGM2OWM2NGE3MDUxYzE2M2ViZWNhIHJlbGVhc2UzMS1tYWludAorNzcwOTEgNWU4NGFiZmRmZWFiZDc1YTUxNWM0NjhhMThjM2UyMTY4ODFlMWIwYyByZWxlYXNlMjYtbWFpbnQKKzc3MDkyIDliNGI0M2E4YzkxMzA1OTU1MGZjZjg2ZTVjODdiOGViZDA4MGQ0YzIgbGVnYWN5LXRydW5rCis3NzA5NiAzNzQxOTFlMTBhNDViZTZkNTY4MjNhY2ExNzY4OWNkYjJmYWZhZGEzIGxlZ2FjeS10cnVuaworNzcxMDIgNWM4YzRkMmY4YjcxMjBkMWRlYThiOTUxYzljYTBkYjkwODRjMzc2MSBsZWdhY3ktdHJ1bmsKKzc3MTAzIGY3NjRlNDEyNmEyMzFiYTBiN2NjNjhiNWJlNDhkMTA1N2FlZjdkZGYgcHkzaworNzcxMDQgM2I0NmYyZDNiNzVkMDJmMzU2YzFhZmJlY2EzZmI1Y2FmZDY3YTdkMiBsZWdhY3ktdHJ1bmsKKzc3MTA1IGVjOGJiMTUxNGQ2NzFhNjNiZDdjNzNjYjM1ZGViZGM5NjAwZWYzZmEgcHkzaworNzcxMDYgMTVlYWM3NjVjYzM1ZDk0ZDFjYTk4NzQ2MDQyMTJiNTBlNmQ4NWVhZCBweTNrCis3NzEwNyAwNDk4MDI3NzEyYmY0MmMzMGQ3MmI5YzY4ZWQ5MzViZWRlYTUyZjcxIHJlbGVhc2UzMS1tYWludAorNzcxMDggM2FlYTU3ZGMyMWE5YjFkM2I4NjE0OGFmNTBkY2RlYjg3ODAxZGNlNiBsZWdhY3ktdHJ1bmsKKzc3MTA5IDM4ZjU5M2E4M2NmYzg0MjNmNDgwZDhkNmI5YTEzNmQ4ZGU5ZmE3NzEgbGVnYWN5LXRydW5rCis3NzExMCA4YWQzMzk5MjIwMmFlYTNhNmEwMTc4MmUwMjEzMTM1MjU5M2UzMGEyIHB5M2sKKzc3MTExIGFiZTUwMDhiOTNlOWE0YzczMmVjNTMxNGRhZGQ2NTg2MjM0YjQxMjcgbGVnYWN5LXRydW5rCis3NzExMiA2MWE3NzBmN2I5NTFiM2Y5MjA3ZTdkNjZjOThlNGM5MDBjYmE5ZTJmIHJlbGVhc2UzMS1tYWludAorNzcxMTMgNTc0NTZmMTY5NDJkOTkwMGU5NDUzNjYwNmRhODJkZWJhZGRjNTk0YiBweTNrCis3NzExNCA3MGQ3NDczYWZjZmVmNjdiOTY2MmRhMmMxY2M1NGMxY2E0MmU3ZmYwIHJlbGVhc2UyNi1tYWludAorNzcxMTUgNzIzM2JjMzRmZDQ0ZTI4OGZiZTZlMTVmZGQ3MzdmOWU1MjkyMWM3ZiBsZWdhY3ktdHJ1bmsKKzc3MTE2IGU0ODRmZGE0NjJhNjBiNzAwNjEwZGFiODU5ODBiODI2ZTdhZWVhYTggbGVnYWN5LXRydW5rCis3NzExNyBiZDZiMDNmYjcxYTA2NDY2OWIwYThkMjJlMDY4NTZmOGI4YzM3MmYwIHB5M2sKKzc3MTE4IDI1OWVkNWNiOTNlYWNkZmM0OTEwYmExM2EyNDFlMzJhZjU3NjYxMjYgcmVsZWFzZTI2LW1haW50Cis3NzExOSBlYWZhMDUzYWYwNTcwZGIwN2FiNzQ1NWQ1OWYyYWU0ZGE3NzU1M2RlIHJlbGVhc2UzMS1tYWludAorNzcxMjAgZWJkMDYxODM4ZmIxNzQ1NWY5ODVmYmM1NmQzMzBlNmU1ODE5MGYzMyBsZWdhY3ktdHJ1bmsKKzc3MTIxIDVlMGE5NDcxNjAxZjYzNDkzYmJmZGFlOTg0YmM0Nzc1ZWI1NTgyN2YgcHkzaworNzcxMjIgOGM2MGE5NTVkMDJjMGEyZDI0OTg2YjdjYzUyOGQ3ZGQ4NWNmNTVkZiBsZWdhY3ktdHJ1bmsKKzc3MTI0IGUzZjU5MTRkOWJiM2ZlYTdmODljNTVjNWZkMzFhNmRhNzA1OGQ2NmUgcHkzaworNzcxMjUgMjNmNDY3MTUxNzU2YTdjODNlODczNWYxMTMxMzdhZjEyZGFmMGVhNiByZWxlYXNlMjYtbWFpbnQKKzc3MTI2IGM1MDJlYzI0MzQ1ODhiOGJjZTgwOTk2YzViYjFjMDI3M2U2OTkxZTkgbGVnYWN5LXRydW5rCis3NzEyNyA3OTBlOGZjZjUxNzk1ZjMyYWE1OGRmOWUyZjVmOTE3NjlkNmFlYjU1IGxlZ2FjeS10cnVuaworNzcxMjggNmZkZTExZjRkODQyNjY2ZjMxOWViODg3M2VkNDVjMDc5NWVjZGUxZiBsZWdhY3ktdHJ1bmsKKzc3MTI5IGZiNjcxZGYwZjVjYzk2NmE4MTczNTNlZjkzN2NhYjY1MWNlOTViMjYgcHkzaworNzcxMzAgZTUzZTU1MjUyYmE4NGJjZTBlOWJmMTMzZTBiYmVkMDYxMWQ1NGRmZSBsZWdhY3ktdHJ1bmsKKzc3MTMxIDkyYTU4YjgwMTIyMDY3MzM0OTc3YTU5MGNmODFkMzBjYTMxYmIwNDYgcmVsZWFzZTI2LW1haW50Cis3NzEzMiAxOWYyMzU5OTQ0ZWI0MzVkMWI2ZTUyNzY0NTk2MjU4NWIxNTAyNTM4IHB5M2sKKzc3MTMzIDI0NGI5NzlkNTQ0YzEyNDg0NjQwMTg2ZTlhNzQzNTA3OTE0MGUwMDUgcmVsZWFzZTI2LW1haW50Cis3NzEzNCBkNGFjM2E4MDAwYzc1MTg4ZDAyOWQ3NTEzOWM3YjUyMGU3ZTk0YjNjIHJlbGVhc2UzMS1tYWludAorNzcxMzUgYTdmNmE1M2RhYTEyZDFiNWM2NTZmYmUzN2I5ZDI1ZGRiNTE5M2NmMCByZWxlYXNlMzEtbWFpbnQKKzc3MTM2IDRmMDk4OGU4ZmNiMTU2ZGRlYmM0NDllZDQxMWE1MzIwOTVlODE3NjEgbGVnYWN5LXRydW5rCis3NzEzOSBhYzVmZDg5MDk5OThmZWQ5ZjYyOGY1YzVjY2EyOWFkNmNiMDMzMTdkIGxlZ2FjeS10cnVuaworNzcxNDAgMzg1N2NkNGQ1YjM1OTczYjViOTMzMjIzYjllMjZhYzJlOGM0N2M1NiBsZWdhY3ktdHJ1bmsKKzc3MTQxIDJhYTBkOWYwMWQ0NzUzYjU2NTA5Y2Y1ZTA5YjBiZDU5NmVjNzM5YWQgcmVsZWFzZTI2LW1haW50Cis3NzE0MiA2MjQ4YjdmZGVjMGRiYjU5ZjlkN2E0NDM3MTY0NzM3MDVlNWIwNGRhIHB5M2sKKzc3MTQ1IGFkNjA5ZDBmNTE1MDk3NDJhMTQyZmVlYWFhYWUwYWU5MzNhZTUzMzIgbGVnYWN5LXRydW5rCis3NzE0NiA3NDBkYmFlMmUzMGNmZmQwMTIwNGQ4M2IyNDNjN2NlYjlmYzZkYjk3IHB5M2sKKzc3MTQ3IDE3NGEyOGM5ZmI0MDcwMjUwZjFkZTExNGE2OTAxOWQ1YWY0NjBkOTMgcmVsZWFzZTMxLW1haW50Cis3NzE0OCA1YWQ1YTFkNjEyZTVkMTQ4YzdlZjU2OTdlMTI2MmI0NDNiMDYzN2MyIHJlbGVhc2UyNi1tYWludAorNzcxNDkgOWNiMjc1ZGI0ZDZkNTg0YzE5MmVlZGNlMjYxNWExZTVmODhkNTBmNiBweTNrCis3NzE1MCAwMGZlNjg5ZjJiNzhkNTVjNTM2MjBmOTBhNWNlMmQ4Njg1ZjMyOTI4IHJlbGVhc2UzMS1tYWludAorNzcxNTEgOGQ5YzkzNDBiMTJlMTZjOGMzNTU1MGFhMzVjOTQ3YjhmZTNmMjM0YSBsZWdhY3ktdHJ1bmsKKzc3MTUyIDczNjFlZTJkZGZkYjdhNDQwZWI1M2FjMjRhNTNiZjYxNGM4M2U5ODcgbGVnYWN5LXRydW5rCis3NzE1NSBkYjYyOTc3YzU3MTNmOTBhN2NlN2M4MDljYzA3ZGQ4MDcxZjUzYTQyIGxlZ2FjeS10cnVuaworNzcxNTcgYWUxOWMyODdlOWMwZjg1NTZhMWVhNGEyZTcyNDFiNDEzYjU2NDk1NSBsZWdhY3ktdHJ1bmsKKzc3MTU5IDk2YTIzNzFiMTE0YjlkY2FjZWMyYjExNGNhMzc0MzI1YmQyZGE3YWYgcmVsZWFzZTI2LW1haW50Cis3NzE2MCA4MWNmMjRlNWNlOTI4ZTljOTAzYTllNjNhYjY0M2FjMjgwNTliYTdmIGxlZ2FjeS10cnVuaworNzcxNjEgNmMxOWE2YTY5N2E2MTFkNGNhNmQxMzFiNTAyYWFlMDllNjBkZmUwMyBweTNrCis3NzE2MiA0NmY0YjdiNWI0ZGRlNDdlYTliNWFiZGViM2E2MDk5MTZhNDQzNjViIHJlbGVhc2UzMS1tYWludAorNzcxNjMgOGRjNmRmYTQxZmQ1NjVjZWFjNzYxZmVmMWMwYjc4NWI1ZWJkZDVlMiBweTNrCis3NzE2NCAyNTI4NTgyZDY4ZjZiZjY5NjY0MmJiNWNlN2RiY2I2NTlmNzAwZjMyIHJlbGVhc2UzMS1tYWludAorNzcxNjUgMzZhZWQ5ZTM2NDJkYzRkMzM2NzhlN2FmNTZlMmRiNDEyMDY4ODNjMyByZWxlYXNlMjYtbWFpbnQKKzc3MTY3IGVmYTU5NzYzMzAxMGVmZTNjOGIzNmEwNDE1Y2Y4OTE4OTg3N2E0OWMgcHkzaworNzcxNjggOTgwYzc5ZmJkNGM1ZGY0NWNjMmYxM2ZjOTJiMjE1ZmJlODY1Mzg5YiBweTNrCis3NzE2OSA4ZmVlMmFiNTNlNzE2YWNlYzlmZDk3NmY4ODhhNmJiYjcwYWE5MDNlIGxlZ2FjeS10cnVuaworNzcxNzAgMjI4YmJhMmQxZjNmNzUwODZmNzEyYWRlNzFlMzA4NDNmNDc5MTJjMSBweTNrCis3NzE3MSBlMDc4NTc5OTg0YTRlNGZjMTM4MjlhNzVlMzYyNTBiNTBjZjAyY2ZkIHJlbGVhc2UzMS1tYWludAorNzcxNzIgYjNkMzdlYjk2MzIyMzU0NjMyNjMzMjlmNTRjMWQ5ZWEyM2U5N2UyZSBweTNrCis3NzE3MyA0ZDZkOTUyZmUyODgxMTgzMzQ3MjBlMTE4YzQzOTQwYjQ1MjY3MzY0IHB5M2sKKzc3MTc0IGQ1MmE3MTc5ZWVjZWUyZWQ1Yzg2ZjU5ZTYwOWQ0YjJkNTU2NTNkMjMgcHkzaworNzcxNzYgNDQzZjcxZGQ1Y2YwMmFiZDk1MTQ3MzRiNTM3MjM3NzcxZTEyNTVlOCBweTNrCis3NzE3NyBhOTJmMGEwYWZlNTY3NDk5ZDhhYzJkZTJhYmIwZWUwYTFmYzRkNWYwIHJlbGVhc2UzMS1tYWludAorNzcxNzggMzg0YTdhMzcwOWRjOGY5ZTBlZDhhNjgyZmU2ZDFmMjcyZTAzZWY3OCBsZWdhY3ktdHJ1bmsKKzc3MTc5IGJmOTdhY2Y4ZWNiMTg3MGMxZGY4YzA5ZGRmOWY2YzI5OGIwZDk1NjQgcHkzaworNzcxODAgN2M2MzA5MzFjYzgzMWM3ZTZiNzQ0NDliZTBlNWQ2MWJhOTRiNmVkYSBsZWdhY3ktdHJ1bmsKKzc3MTgxIDIzNmRjZjE3MWI3NDZmMjIzZDJlZDA0ZTRkZDg3YjkxNzk2NjI1MzUgbGVnYWN5LXRydW5rCis3NzE4MiAxZTkyZmU1OTM5MTZkYzBjZTM2MzMwZWIwNDViNjlkNWIwMjU3MDRkIHJlbGVhc2UyNi1tYWludAorNzcxODMgZGJhYTRlZWVhZWI4ZDI2ZmE5ZDFkMDY3MjMwYjVhYWZkNjhhMGRhZCBweTNrCis3NzE4NCA1YWZhMTY5MTQyOTVlNWY3ZDZkNDg1YWYxOWViOTMwODQzOTZmMmEyIHB5M2sKKzc3MTg1IDI1YWE0M2U0MzAyYmY1ZGIzYzM5MmVlYWNlYjcyZTMyYWY2OTM5OGMgbGVnYWN5LXRydW5rCis3NzE4NiA3ZDZiZmY3MjIxOTUwZmU4ZDIyZDBiYzIyZjZhOTJhYjMzMDFiMGQxIGxlZ2FjeS10cnVuaworNzcxODcgODU2YTQ1YzBiNmM0MWM2NTg4NmI3MGM3MmUzMTI0ZmM5ZGQwNjk1ZiBsZWdhY3ktdHJ1bmsKKzc3MTg4IDViNDcxODQ3ZjZlYTZlYzczN2UzYmNiOTFkZjIwMGI1MDI4M2Q2MDcgbGVnYWN5LXRydW5rCis3NzE4OSBhYjQwYjkzNmJkMWMxNDMxNzg2NDg5OTk3ODBkYWVhYTJlZTIzNGRiIGxlZ2FjeS10cnVuaworNzcxOTAgZTYyYmUwODQ3OGJjZGFiNjg0OGVjOTdhMGMxZmQ1ZTFiMWU2MjkyNCBweTNrCis3NzE5MSAxNjY2ZWU4ZGFmOWIxMjQ5MzAxYWZlY2YwNjhhYjVkZDEzY2I4NWM2IHJlbGVhc2UyNi1tYWludAorNzcxOTIgNTMxMDBkYjM1MTI4NGY3YjUwZWI3NmQxZDA5MzhiNTMyODFkNmI0ZSByZWxlYXNlMzEtbWFpbnQKKzc3MTkzIDg0YjAwZTZiZDY5YjIxZmUzZjRiNGYyMjAxNjNkOGJmZDc0NmExZjIgbGVnYWN5LXRydW5rCis3NzE5NCA2MjEyZWRjMjJjYmRmOGNlOWFkZGIyNTRmZTZiNzNiMWYwN2U4MDEyIHJlbGVhc2UyNi1tYWludAorNzcxOTUgYmFiZmMwNjEyMTJjMTc0M2YzMTE1YWZkYTMxNzcxYWVhMWM4MDllOCByZWxlYXNlMjYtbWFpbnQKKzc3MTk2IGQ4ZTY0YTg0NDczY2RkNTRhOWMxMzFkMjY3YzBiYjMyNTU3YzMxMmYgcHkzaworNzcxOTcgM2UyMmM3ZTlmMzA3Y2IxYzkzZjUzOGRhZTE5ODViZjZmYzI2ODk3YiByZWxlYXNlMzEtbWFpbnQKKzc3MTk4IGU0NTUzYjYwN2I0M2RmYzE3Y2IzNGMzODI0NDYxMjA3NzAzODk0YWYgbGVnYWN5LXRydW5rCis3NzE5OSA0MmNmYjcyN2ZmNDg1YTc4ZmI1MzkyMWFiMDhkZmM5YTQ2YTlhYWVhIHJlbGVhc2UyNi1tYWludAorNzcyMDAgZTIyNjFiNjFkZjA2NjA1YjJiZDViNDkyZmRkNTE2NmVkMTI0MTcyMSBweTNrCis3NzIwMSA3MWJiODQyYjc5YWIyZTMwYTYwZWM0OGJiNzU2YTczZDZmZDc0OWZmIHB5M2sKKzc3MjAyIDIxMmE3MjI4NjRhMWFlODc3NGY1MmE5MjZmZDkxMWM1NmExODA3YWMgcmVsZWFzZTMxLW1haW50Cis3NzIwMyAwYmU0NWI1Y2YwZDYzZGMzMjRiZjc1NDljNWIzYWUxMjQ2YTk4MDdlIGxlZ2FjeS10cnVuaworNzcyMDQgZmNlNjYxMTI0MWQxMDkyY2ExYjdkNmUzMzU0YTZmODgwMjI1ZGI2OCBsZWdhY3ktdHJ1bmsKKzc3MjA1IDFkMGZkZTU5ZGRlYThmYTRmMWQwYjZmZjNhMmYwMTQ2ZjU4ZmEwYjkgcmVsZWFzZTI2LW1haW50Cis3NzIwNiA2OGE3NTRhYmNmYjY4YjNiMDMxY2E2OWFkNGI4Yjg4MjY3MmVhNmFiIHB5M2sKKzc3MjA3IGMwMjZiOTEwYTVlNDg2NWVlMmYyYThjOTU3MjBiNjQ0NDcyZTlhMTkgcHkzaworNzcyMDggZmM3NWE5OThhZGJmZWE3NDc1Mzk5NDM3OTE5NmMyYjJmODJlNGEzYyByZWxlYXNlMzEtbWFpbnQKKzc3MjA5IGFkYjkyMWYwNGI4Nzc1NzQwM2ZhYjhiYjI5YjMyZGJhNTJjODhlZjMgbGVnYWN5LXRydW5rCis3NzIxMCBmZjJhYmI5NGM2OGViZjUyZTJhNTliZmU3NDQzYWQzY2UzMTE4M2JlIHRhcmVrX3N5c2NvbmZpZworNzcyMTEgOWE1NWIxMTczZDIwMDZjNDY4NGJlMTkyNmUxZmY0MmQwNzg0M2YwNSB0YXJla19zeXNjb25maWcKKzc3MjEyIGYwMjg4MTMzMjM0MmExYTc2ZjAzNzFiMDAxNTQxYTIyMjk5ZWEwMWIgbGVnYWN5LXRydW5rCis3NzIxMyBiYWE3MGQ0MWM5YmRiNWJlZDBkNzRkYzA5OWQ2MTAzODcxZGYyMzk0IGxlZ2FjeS10cnVuaworNzcyMTQgOTQxOGY0YjAxMDQ1MWY3YjRkMWZkMDJiNWViMDBmYjdmOTM0MmM3MCBsZWdhY3ktdHJ1bmsKKzc3MjE1IGMzNTA3NWYyYThmMzBlNWFmZGMzYmVlZjllZmZkNjBhYTcxZWFkYzkgbGVnYWN5LXRydW5rCis3NzIxNiBiMGRkNmMyMWRjYmY0NDgzYjFiMDVlYjVhYjA0YTlhNTRkYzAzYjIxIHB5M2sKKzc3MjE3IDRmZmI5MzM4OTI1Njg3ODdhZjEzNTE4Njk2NmU0ZGJlM2U4ZDI3NjcgcmVsZWFzZTMxLW1haW50Cis3NzIxOCAyZGUyNGJiMzNjYzU3YzUwY2ZhNjRjMDU0MjA5N2E1M2FlZTJkNzFlIGxlZ2FjeS10cnVuaworNzcyMTkgMTM5NGE0MDNkYzg5ZTViNDJhYjQ0MmY2Mjc2MTYxYzlkYWVlYzE4MyByZWxlYXNlMjYtbWFpbnQKKzc3MjIwIDc4Y2E2OWNmYzg5NzhiNzM5OTlmM2MxNDQ1NjRhODkyYTE2ODQ3MDkgcHkzaworNzcyMjEgZjA5ZWI5MmVkMGFiMmFmNTUxYTY3YjFlZmIyMTJmMWVmMTIzMzIxOCByZWxlYXNlMzEtbWFpbnQKKzc3MjIyIGFjNTI4YThhMzZjZjVjNTM0MmM4M2M3Njk0ZTZmM2I0NDg0NDhkYzMgbGVnYWN5LXRydW5rCis3NzIyMyA3NDdiMDFhMDUzMDA2ODc2YzM5ODlhYTAyNTg1YmIxN2Y4MWMzMDJhIHJlbGVhc2UyNi1tYWludAorNzcyMjQgYTcyOGZhNDgxYWQ0Mzg4NzRhZTYzZTFhNmQ3Y2FlYWNiNTljYmQ3NSBweTNrCis3NzIyNiBiNWMxY2ZkYzY4YjkyOWY0NDlhNWU1ZWE2NmNiMGZjODY5NjNlOGIzIGxlZ2FjeS10cnVuaworNzcyMjcgNmM4YzA0MGMxNDQzYjc1MmEyYzY0ODNjNTJjZjA5MzJjNjI4MTM0MSBsZWdhY3ktdHJ1bmsKKzc3MjI4IDE4YmQxYzY3ZjVlMmQ0YmY4MTE2MTU1ZTY1NWU4N2I3YTg4N2MwMjMgcHkzaworNzcyMjkgYjhlMzhkMGE1MmQ3ZTEyNzg4YjA5MmRiYjM1OTQ4NDFmOGM5MmY1NiBsZWdhY3ktdHJ1bmsKKzc3MjMwIDZkMTcwMjVjODRjMTRlNGE4ZjMxZWI0M2NjYWQ3ZTFmYzM1MDZjMDcgbGVnYWN5LXRydW5rCis3NzIzMSBmYzg3YTJmYzQ3YTU5NWVhYmI1NmY1ZDExOWQ1ODAwODI0NmZiMDIyIHJlbGVhc2UyNi1tYWludAorNzcyMzIgYmQyNGUxZTkwZjdjYzI2NmZmOGIzMzllOTUyY2Y2OTIwOWI4NWVlOCBweTNrCis3NzIzMyBhZGM5Y2RjMDJkZjEwMDljODg3MzQ2ZTI3ZGFlNDQxNTQ5NGFlMTU5IHJlbGVhc2UzMS1tYWludAorNzcyMzQgMjdjOTQ2ZmY3NmEzYTkyYzk5MDliYThjMzk0ZjViMjQzYzY4ZDJlMiBsZWdhY3ktdHJ1bmsKKzc3MjM1IDU4YTViYjk3MWU5NTJiN2E1ZTY5MjQ4MTU3N2I5YWNmMjZkYjU0MzYgcmVsZWFzZTI2LW1haW50Cis3NzIzNiBjMmZiMDc3NDI0NDVjZjg4ZmZlYWQxZjQyNDk0YTYwNjZhMTIxZTlkIHB5M2sKKzc3MjM3IDQ2ZDYwZTVmZjEwM2U5NWM0NTFhMTQ0NTRlZTA5MzdiYzVhMDJmNDMgcHkzaworNzcyMzggMzkwZDY3NGVkNGM3MzI0Nzg2Mzg5OWMzMGNmNzI4NzIxZDA0YzFjMCByZWxlYXNlMzEtbWFpbnQKKzc3MjQxIGRkZjYxY2Q3NzVlMDE5ZDRiZjNjYTk3MzgxNGQyYjVmMWM1YzNhMGYgbGVnYWN5LXRydW5rCis3NzI0MiA2MjYzYTZmYmY3ZDkzNDNmODVjZjI1NGUwY2UzZTIwNGM5ZWYzNWMxIGxlZ2FjeS10cnVuaworNzcyNDMgMmQ1YWI0ZDA4Yzg4NTBiNGZhN2ZiZDMxYTkwOGMxNjBkMTM3YWY4MyBweTNrCis3NzI0NCBhMzI2NjFiMzM0ZjY3NjgzODM5YTNlZjM3ZGY2OTQ4MzRhODJhZDhhIHJlbGVhc2UyNi1tYWludAorNzcyNDUgMzEzMjY1ZDRlMDMyODEyZWZjNzgwM2ViYjViMzc2YTY4MWEzN2E1OSByZWxlYXNlMzEtbWFpbnQKKzc3MjQ2IGExMDM1Y2I0YTkyNWZjODIxNzllNDZkNDE3ZWFiZTlmOTBlY2M1NDIgcHkzaworNzcyNDcgZjVlNDk2YTg0MTdmMzE1YzRhM2JlNDE4ZjY1NTdhN2U4YzE2NDJhYSBsZWdhY3ktdHJ1bmsKKzc3MjQ4IGE2YWNlMzBjYjkxMjI0YTk1YTI4MTg1ZWVmZmVhMTMyM2Q3ZGY0MjggcHkzaworNzcyNDkgNGFjZDhmYWVhMmQ5MzNiNDk3NzAzOTE0YzJhYWJiNWQwOGYwODU1MCBsZWdhY3ktdHJ1bmsKKzc3MjUwIGNjOTdhOTZlNGEwOTA4MjY3NTY3NWYyMDhiNDZkYjAxYmMzNDdkODAgcHkzaworNzcyNTEgOTI2MTE4NDE3OTc5MmE4ODAxZTU0YjVmYzIxMjg0ZjhhNGQ3YmViZSBsZWdhY3ktdHJ1bmsKKzc3MjUyIGZmNWJjMmZhMzhkNjZlZWM5ZWRkYjgwMjFmZGNjMDQ3ODg3Y2RmNWQgbGVnYWN5LXRydW5rCis3NzI1MyBiZTI3ZWEyYjM2NzlmMDRhNzRjNmMwZTZiNmY3YmQ0NmE0MzZjNDQyIHB5M2sKKzc3MjU0IGViOTVmZDk1ZTY1ZWRlYmI5OGFiODBhMDY2OTUwOWJkYmUyMDI1N2UgbGVnYWN5LXRydW5rCis3NzI1NSA1N2I5OTZjM2Q4ZmZiMzhkYzliMmY3OTA4NzgzOWNjZDA1MWY5Y2RkIHB5M2sKKzc3MjU2IGU5ODEyYjgxNmZmZGIxNzk1YzMwZmU1YjJlYTgxYTg1NDM2NmU5OWUgbGVnYWN5LXRydW5rCis3NzI1NyA5MWE1N2NjMDAyMGU0YWFjNmZmOTNkMzJkMjE2MmY5YTJiMDgyMzk4IGxlZ2FjeS10cnVuaworNzcyNTggMmEyMzk5NTM0NTkxN2NhNzI2ZDJmMTYyOTFiMWM3OTBiY2QzNDM0YiBweTNrCis3NzI1OSAzODU2Yzc2NGUxZjUyYzIwNGVkODEzNTcyZTFiZmI3ODMwNTU2ZGRkIHB5M2sKKzc3MjYwIGZlMTE3ZTVkMTNhMWZjYWVlNmEwYjdlYThhYTY0N2I5YTU5ZmEzN2YgbGVnYWN5LXRydW5rCis3NzI2MSBhYmJkYzMxZWE3OTA3YjA1NGQwMWM2N2YwNmE1MzE2ZDAzNGU4ZTY3IHB5M2sKKzc3MjYyIGZkOTE3NDRiMWNhYWI0OWQwZmI3YjRiMDM4ZDg4ZWU5OTYzNDI4NTQgbGVnYWN5LXRydW5rCis3NzI2MyA3MmUzZTg1YmFjOGIwZGMwMjljNWM1NDU2YTZiYzI0NmE0YmFjNjZiIGxlZ2FjeS10cnVuaworNzcyNjQgYTE5YWQyOTkwOTVmMjdkYjAyYTVhZmY0ODhkM2RkNjhhNzUzOGExZiBsZWdhY3ktdHJ1bmsKKzc3MjY1IGIwMzg2ZmU2NTBjNzU5NjBmZDM5NjljMDgzNmUzNmE5ZTUxOGY0MGEgcHkzaworNzcyNjYgOGM0YTcwN2MwYmQ4ZWVjNjk5YTBlMDI0Y2JmNmQwY2RhMzRjZjkxYyBsZWdhY3ktdHJ1bmsKKzc3MjY3IGMzYWRjZmFjMDc3MjI4NjJiNjIyYTFlZDkzODE0NTIyYTkyZTVkMzcgbGVnYWN5LXRydW5rCis3NzI2OCBhMGZjZTk2NjVmNDRhZDlmMTNiY2ZmM2Y4MTU2M2QxYjE2OTk2M2VkIHJlbGVhc2UyNi1tYWludAorNzcyNjkgMjQwMmYyOTFlODAxOWJhZWI5YmE5MDhhOTZkYjUxNTY0MWM0NTMyMiBweTNrCis3NzI3MCBlNTQ0MzRkMmUyYTdkMzdlMjRiMjQ0NTc5NTc1Y2I1ZGYzYzhmYjAzIHJlbGVhc2UzMS1tYWludAorNzcyNzEgZjZlMzQwMDE0Zjk2OTY5ZGY2ZmRmNTk3MzkzZWI1NTc3ODU4ZTQ4NSBsZWdhY3ktdHJ1bmsKKzc3MjcyIGViOTI0ZmFkOTI3MjA2MjBkOTQ4NjJhNmNiY2U1NzU5NDRlNWU0ZjggcmVsZWFzZTI2LW1haW50Cis3NzI3MyAwM2JmZTMyZWY4NDljYTg2M2Q2ODQwMzgxMGRmNmQ2NjQ1OWM5OTYyIHB5M2sKKzc3Mjc0IDM1MWZjNDI1MGMxYjBjN2E2NTk5ZDgyNWVhZDdmZjY1YTJkZTQ5N2QgcmVsZWFzZTMxLW1haW50Cis3NzI3NSAwZjhhNTg3OTI1NjNjMzM1NGJhMWViMzhkYTk5NTY1M2ZjZTlhMDY4IGxlZ2FjeS10cnVuaworNzcyNzYgOWI5YWRjNDJjNzNhMmFlYmIxNDhjZTRmY2M0YWY2Zjk3Y2I4ZmQ5YiBweTNrCis3NzI3NyA5YzFmMzA2ZmIwZGZhNTg0OGI1MzAzN2RhYjNmNDQ0MGQ1ZDk1NmQ3IHJlbGVhc2UyNi1tYWludAorNzcyNzggNzQ0ZTM5MWU0MmZkZjE2MDBlNWQ1MDdmNDU1NGRjMTE5ODY1YWYzYiByZWxlYXNlMzEtbWFpbnQKKzc3Mjc5IDUxNzQ5YjZkNjJkM2ViMmE0MDBmOGMzMzViNjY3ZGU5ZjZmMmViOTYgbGVnYWN5LXRydW5rCis3NzI4MCA5MGYxZTkyZGI2ZjIyNTU4ZTNlYzRjMzI5MWEyMWY5Y2M2NTdjZjJkIHJlbGVhc2UyNi1tYWludAorNzcyODEgYjU1ODUwMDcwYTU1MThlMzcxMmExZmNhNzliNjg1YjdiZmZiMjM5MSBweTNrCis3NzI4MiAyMzRiZWFhZmQwYzZkZDJhMDRmMzI2MThkNjNhYWJkNDEzN2QyOGEwIHJlbGVhc2UzMS1tYWludAorNzcyODMgMDZjOTY4ZWI0YjQwM2MyODU1MzI1MGQyNDEyYzFkNmM0MjcwZmZkZSBweTNrCis3NzI4NCA3YmNlNzI2ZWM0NDBiMTZkYzFlOThlMDk1MmVmOTQ3ZTQ4NDhjMzExIGxlZ2FjeS10cnVuaworNzcyODUgMzkxMTUyNGFmYzJkNmYxZmU4MjI2ZjRmZmYwMjM2NWNkMzVhNjE0NyBweTNrCis3NzI4NiBjNzI2NTIxNDViMjM1ZDczNzJjODhjY2UzMGE3M2ExMzc4YjliYzE5IGxlZ2FjeS10cnVuaworNzcyODcgZWNjOGE0NTg5NGM5NDFmYTJhZjFjNmI2MjRhODA2OTUzZmE4ZjM5YyBweTNrCis3NzI4OCBjODU3YjU2Njk5YjU3MmQ2YWI2OGJkOGQ1YjQyNjBjN2Q1ODhhNTRlIGxlZ2FjeS10cnVuaworNzcyODkgYzU4MDJhYjllMzRlNzE1NGY0Y2Q1MGI2NzU0YmQwYTdiZjFmY2FiZiBweTNrCis3NzI5MCBmYzgzM2VkYmE3Njk5ZmJiY2NlYWQ4ZmI4NDU1ZjU1MzRmNGNkNWVlIGxlZ2FjeS10cnVuaworNzcyOTEgMmNiZGFiMjQ5ODU4OTcwZDg0MjNiOGI3OTI0N2YxYzU5NjJiMzExZSBweTNrCis3NzI5MiA0YmMyNmE4MGU3MzdlYTNkM2Q1NTZiZTkzNjY0NDk4ZmY1YjY1NjZjIGxlZ2FjeS10cnVuaworNzcyOTMgZjdlMDliYTBjYjU1YTNmM2I5NjIyOWNiYjMxMmNiMmZlMTU1Y2JmNSBsZWdhY3ktdHJ1bmsKKzc3Mjk0IDYwNDlmZTQwMjJmZmE0NjdjMGYwNTQ2ODFhN2Y2MzFhYjM1Y2NlMDMgcHkzaworNzcyOTUgZDM5OWY2ZGM5ZWU0ODM5ZjNlZDM3MzRmZDg2MDAzNmYxMzEyN2VkYiBweTNrCis3NzI5NiAwZmYyZGFhODNkMGQ3ZDUzZWIzOWQ3ZWVkMmNiN2I0NjVlZGViYjk3IHB5M2sKKzc3Mjk3IGVmYmFjN2QzYTM2ODUwNDRmYjVjMmQ4NzM5OTk2MjllMjc1NTk1MWYgcHkzaworNzcyOTggMGZjZWY5ZDM5NTk0MDFiMTg0YWRjMmE5MTJhMjFiNmY5NjgxOGNiNSBsZWdhY3ktdHJ1bmsKKzc3Mjk5IDU5YzQ3MTQxODcxODVmMDkxZDgwODE1NzA4MzY2N2Y3MTNjMGVjZDUgcHkzaworNzczMDAgMmY2NzYyNTg4NmY2MDAzNTU3ZWI3ZjlhOGQ0ODE5NmU0Nzk2N2JmZiBweTNrCis3NzMwMSBkNTcyOTFmNWU2NjgxMWMxYjE5OTU0MDYxMmNjZmY5MzI5ODY2Nzg4IHJlbGVhc2UzMS1tYWludAorNzczMDIgOGNhMzc3ODUzMzIxZTNlZDZhNzE0MWNiYmY1NzczZDJlZjdhZGJlZCBsZWdhY3ktdHJ1bmsKKzc3MzAzIDRmYjhlYWYxNGYwOWNiMTlmN2Y3OTQ1MzI0NWZhZWRjZjg5OWE1OTYgcmVsZWFzZTI2LW1haW50Cis3NzMwNCBlMWYxMzEzY2U2ZGExOGY3MmY5MDQwZTVlNjk2NmYyODU4ZjQxOTA5IHB5M2sKKzc3MzA1IDcwZjZmYTMwODRlNjdkZDg4Mjg4NjdjMDY2NDIxMGNiZTE0NzQ0NTIgcmVsZWFzZTMxLW1haW50Cis3NzMwNiBhZmY1ZGU1Y2M0NDEwZmQ4ZDEyZWZhYmE2NzkxNWEyNjE5NmJhNDcyIGxlZ2FjeS10cnVuaworNzczMDcgMGZlMjVlMDdiNzdiM2NjYWQxYjM3OWJkYmY4ZDUzZWRkNmMxMzUzNiByZWxlYXNlMjYtbWFpbnQKKzc3MzA4IDMxNzUyY2EwMDdjZjJmM2U0MGI1M2MyZjA3Y2ZmYzAyMTFiMDFiMDAgcHkzaworNzczMDkgZmEyYjI3ZmE1NDE5ZTgxZjlmYzU0ZGQ4ZDQwZWRjZTlkNWYxYzIyYiByZWxlYXNlMzEtbWFpbnQKKzc3MzEwIDQ0MmUxNzBiNTZjM2Y3ZjQ5ZmRhZWYzMGExMTlhZGM5NTZhMzQwNzIgbGVnYWN5LXRydW5rCis3NzMxMSBlNjIyYjJjZmVmMTJkNmZmMTkzODY1ZGE0YjliZDNmYmQ0ZWNiZTAyIGxlZ2FjeS10cnVuaworNzczMTIgNzc2NjQ3ZTNmYjA3ZGQyNGM0YjhjZjliZDM5M2QyOTEzZmU0NDNmNiBweTNrCis3NzMxMyBiMDU3NDNjZTVlOTQzMmZmNTY3NTkzMGEzYWVmYzdiYjljMjZmOTdjIGxlZ2FjeS10cnVuaworNzczMTQgNGFhYjAyOTU0ZGUxZDlkY2RkNDIxNDEwMjY2ZTI3Zjg1M2E1NGQ3NyBweTNrCis3NzMxNSAyMmUwZmMyMGU5MTEzM2Q4NzNjZTg1ZDhlYWQyNmZmMzgyYzIzYjIxIHJlbGVhc2UzMS1tYWludAorNzczMTYgMmNkYmE1MTY3ZGYxYTE1NTg4NDU0ODY1NTJiNWRiMzdiODFiM2JjOCBweTNrCis3NzMxNyBhMmQ2ZDM0NTQ3MGU5NGEzODA2ODVhYjA1N2NlMmFkZTE1OTA4Yjc4IGxlZ2FjeS10cnVuaworNzczMTkgM2VjZWVmMzc4MDY1YTU1YTk3ZDZiMmQyMmQ1YzY3NWNiODBhM2IxMCByZWxlYXNlMjYtbWFpbnQKKzc3MzIyIGY5ZDJjMzQyNmUxNDhjNTExNWEzMzI4NmZmYTNhMDE2YTVkZjczM2MgcHkzay1jZGVjaW1hbAorNzczMjMgZDZiYTM3ZTMyNzc2MzcwNjdkZDgyYTU4Y2Q1NzFmYTQxZGQ1MjU4NSBweTNrLWNkZWNpbWFsCis3NzMyNCA4ODJjOWU3MTFhMmQwNTkzZjRjYmQ1ZmQzYzA5NjUwODQxMTZjZWY0IGxlZ2FjeS10cnVuaworNzczMjUgODZiZjQ0MGJmOWJmMzU3YWNkY2I0MzA3NjNkMWRjZTdlZjdiZDM3MCByZWxlYXNlMjYtbWFpbnQKKzc3MzI2IDYxM2I5OGQwZDg4YmUwMmY3ZDU0N2UyMDgyM2RlMzg0NTJhZTgwMTQgcHkzaworNzczMjcgMDdhNzQ5ZjA2NmExMTcxZjM1YjM2NGU4MjJmZDI4YzkzZTQ0ZjExMyByZWxlYXNlMzEtbWFpbnQKKzc3MzI4IGExOTAxNzExYjIyNWI0MDM5YmNhOGVmMTU5N2FlMmJkZWE4N2E5M2MgcHkzay1jZGVjaW1hbAorNzczMjkgMzA3MDY2ZjAyYWM1MmE0MjMzZDdiNzk4YmU1MjUxZTAxN2JmYTU5YyBweTNrLWNkZWNpbWFsCis3NzMzMSBmNTYwYTgxN2JmY2I1MTI1MjA0NjI4NTk2NjM3MDhlYmFjNDZmNDNkIGxlZ2FjeS10cnVuaworNzczMzIgOGU4MmRkNTUyMmYwMzljNzhmODZjMDE2MWRmZjMzOTNmOWY4Njg2YiBsZWdhY3ktdHJ1bmsKKzc3MzMzIGE4ZmJmMjk0ZDIyZTVjNWZkOTg0ZjVkMWNjNjgyM2E2YzRiZDYwOTYgbGVnYWN5LXRydW5rCis3NzMzNCA5OWU3YzFiOGIxZTFlZTE5ODM5N2IyM2U0Y2MwMTE2MjIzNzE2NmUzIHJlbGVhc2UyNi1tYWludAorNzczMzUgYjNiYjhiM2U1ZTRlYmE1ZTY4YWEyMjljZjllMzVkMjNlYTc2YWM0MiByZWxlYXNlMzEtbWFpbnQKKzc3MzM2IDBmYTllZTRlYWI4ODc0M2Y1ODAyMGUzOTI2NjgyOTRkNGNlM2E4MGMgcmVsZWFzZTI2LW1haW50Cis3NzMzNyA2YWQ1M2Y2NzA1NmE4NDIwNzQ3YmMxYTlhMmY5ZDJkMWM5YzQ1OTc1IGxlZ2FjeS10cnVuaworNzczMzggMjVjMWU1N2NhMWIzZTE4OTdkOGZjM2EyZmI3ODZjN2ZjYmE5NGJjOSBsZWdhY3ktdHJ1bmsKKzc3MzM5IDYxNDRjZDRkNDIxYmEzMjZkY2FhYTg0ZmE2Y2IyNWMxNGM1YWNmMjkgbGVnYWN5LXRydW5rCis3NzM0MCBjNjE4MTM3ZjNmZDNiN2Q0OTViMTlkOTlmMTQyMTFjMmI3ZGU4ZDk1IHJlbGVhc2UyNi1tYWludAorNzczNDEgN2IxMjU0NTczNjU2NGJjOTk3MDc1NjM4MjlhYzA1YmY4YTA4OWNmMSBweTNrCis3NzM0MiA4NzE2MTA2OWVlZjIzZmNlZTI3YTVhZTNjNGY2NzE4MGRlMTcxNGM3IHB5M2stY2RlY2ltYWwKKzc3MzQ0IDMxNWI1OGNiMTNhNjM3YzlkZjUxMGE2N2E0YjljZjdhOTYzMmRhYTMgcHkzay1jZGVjaW1hbAorNzczNDUgZDg4ZTNmNTk4YWE0MTJjZjNjM2Q3Yjc3ODM1MGRiOGE3MmRkMDlmNiBweTNrLWNkZWNpbWFsCis3NzM0NiBkZTczYjg1OGRlMTFkMjEzOWNjNGY2NGZkZGNhNDg2YWQyMTZmYmI0IHB5M2stY2RlY2ltYWwKKzc3MzQ3IGZlNWVjOThkZTlkYTFlNzMwOWRmNTQwN2I3MTIwMmQ1YjFmOTgwNmQgcHkzay1jZGVjaW1hbAorNzczNDggYjgyNjk0MTA3MTUxYzI4YTVlMWNjNDA2ZDgxNzBlMDg0ODg1YmNjNSBweTNrLWNkZWNpbWFsCis3NzM0OSAyMjQ1ODg0Yzg2ZTYxNTcxYmQyN2RiNzA4M2MwZjU4Yzk4NjIwOTlkIHB5M2stY2RlY2ltYWwKKzc3MzUwIGUxM2QwNzI0M2M3M2EwYzgyYzA4YWRiMDFkNGQ4NmY5NjVhNTk5ODQgcHkzay1jZGVjaW1hbAorNzczNTEgNzQwYTc4N2RjNTlhMGIyM2Y0Y2NkNmY2ZmNiNjFlYzZjOWY3MWJkMyBweTNrLWNkZWNpbWFsCis3NzM1MiAxNTkwNGQ1Yjk4ZGI0NzYwMGE1Yjg5OTNkZWZhOTdkMDFhZjI0MTUyIGxlZ2FjeS10cnVuaworNzczNTMgMjJhMzI5MmNmNjcyMmM3ZDBlZGY0NGVhZmQ1YWI4MzRmMmUzNjYxMCBsZWdhY3ktdHJ1bmsKKzc3MzU0IGUwYjdlODFhY2Y2ZjMzMjVjOTcxOTY4OTJiOTQ2OTcwOGI2NTgyOTkgbGVnYWN5LXRydW5rCis3NzM1NSA4OTAzZWE2YTllNjQ3OTE1Njc0NTVhNGZhYWFmNGVhYjMwYzkxZTJmIHB5M2sKKzc3MzU2IGQzOTQyMGEyN2U2NDYwOGM2MDc3Njk1ZjE0MmIxZDZhMmRhMDVkYTkgcmVsZWFzZTMxLW1haW50Cis3NzM1NyBhZmU2ZGRlODBhYmIzOWQ2MTg2NGJhYTA3NGY1MDg1Y2QyMDRjN2EzIHJlbGVhc2UyNi1tYWludAorNzczNTggNTE4YWNiMTJmMzU3ZWJhMDBkZGFjMWU4OWE2MWNmODRjZWZlZjc5NSBweTNrLWNkZWNpbWFsCis3NzM1OSBhNjRjZmVmMWRhMDc1MzdmMzY3MTRmZTMxZDBkZmI0MjExMTVhOGU0IGxlZ2FjeS10cnVuaworNzczNjAgZjIxZjJjOTMzMjllYjA4Nzg4OGQ1OGVmZWJmNGM5ZDYyYjljYmZhNyBsZWdhY3ktdHJ1bmsKKzc3MzYyIDEwYjY2NzhmNWMwNGIzYjYwNWI1NDhmZWJiZjY4YWE2NjdkY2ZhNDEgbGVnYWN5LXRydW5rCis3NzM2MyAzNWZlMjA2OWFiMWQ5ZWE4NGZkYThjN2Q1MjA1M2JmNmQ3OTM2YWZhIHB5M2sKKzc3MzY0IDU5ZTFiMDMwNmMwZTg2YjRjZGY0Yzc4NTk0ZWJhMjBhNWI1OTg3MzQgcmVsZWFzZTI2LW1haW50Cis3NzM2NSA4NGNhYWM3MWQ3OWJkM2U5ZWU3ZTc0ZTVjY2JiOGEzYzhkNTEyZGIyIHB5M2sKKzc3MzY2IGIwZWQzNWM5OWRjNmQ5YTAzZjJkMWIyMzkzYzAyZTE3MWUwZTI2MTcgcmVsZWFzZTMxLW1haW50Cis3NzM2NyA3YTY3NTE1YmY4ZTMwOGI2ODRmMDhiZWY4MDc1NTZjMzk3NzEzNTNlIHJlbGVhc2UyNi1tYWludAorNzczNjggN2NhZjU0Y2U1MjllN2QyMWIzY2M0ZjRlYjAxMmZkNDliZmYzMzZjZiBsZWdhY3ktdHJ1bmsKKzc3MzY5IDBkZDFhYTMzMjY1ZjM4YzI0NjZkYzc1ZjliMjA3MWEyZmRmYjdkNTYgbGVnYWN5LXRydW5rCis3NzM3MCA5ZThkNzc1MGU0NzBiOGUwMjk3YTgwOTZjNzdlNTExZmFlZTQ5MWM4IGxlZ2FjeS10cnVuaworNzczNzEgYmI3MjcwMzAwMDQ3ZjQ0Mzg2NTE4ZWMzYTVjMTYzYjZlYjAzZGRlMCBsZWdhY3ktdHJ1bmsKKzc3MzcyIDBjN2VhZDAzNGEwM2E5MmVkNWQ1ZDc3OWIyNjhmNTMyZDRmZjllZTIgcmVsZWFzZTI2LW1haW50Cis3NzM3MyBkYTNmZDdhNzc5YWNkMjc4MDdkZmI0OTRjNWVjZjJmODI4YTQ2OGVmIHB5M2sKKzc3Mzc0IGYzZmU1NzllOGYxNDdhZjE1OTNiMjk2MDQzMTNhMGZhYTIxMThiN2MgbGVnYWN5LXRydW5rCis3NzM3NSBmNWNlYmYxMWQ1ZTA4OTUxODI4MDdmOGQ4MDk3YjhlY2Q1MjkzOWUwIHB5M2sKKzc3Mzc2IGFjNDkzMWFiMDM2OWU2M2RkZTBiZmZlZDJlMTVlZDczMDFjNDc3OTIgcmVsZWFzZTI2LW1haW50Cis3NzM3NyA2MTUwMjcxMGZjZTlmMzY5MzRlOTcxMDE3YzVjYTAzNTNlMTkwYjlmIGxlZ2FjeS10cnVuaworNzczNzggMWJkYTFmNmI4NWQ0YWUwYWM5NzlkNGIwNzA5ZTUzZGNmZWM2MjJkYyByZWxlYXNlMjYtbWFpbnQKKzc3Mzc5IGQ4NDY4MjA4ZTg4MjQ2MDllNGQ0ODgwZDYzNmExYWNhNjQxNTgyMjQgcmVsZWFzZTI2LW1haW50Cis3NzM4MCBhMWZiNTc1NTMxYjEwMzRiODg2NTIyNWU4ODNiMTEyNzg3ODU0NThhIHB5M2sKKzc3MzgxIGI3NzQ5NWM3N2FlNDA3YTJlMTQ0ZTYyOWMzOWY1NTRkZDQxMzU4NmIgcmVsZWFzZTMxLW1haW50Cis3NzM4MiBhZWU1YTFmMzJiMDBiZjYwMWY1YzYyYmU2Y2E2NGU3YjdjNWI0ZDg4IGxlZ2FjeS10cnVuaworNzczODMgNDQxYmZjZDU1ZjJkOWI3YTM0YjlkYjc3ZDU1ZTMzNjk0ZWI3NWQwMSBweTNrCis3NzM4NCBhZGM4NWViYzcyNzFjYzIyZTI0ZTgxNjc4MmJiMmI4ZDdmYTNhNmIzIGxlZ2FjeS10cnVuaworNzczODUgYjM4NmU1M2RmOTA2OTJjNmEyNmE5ZTNiNTcwYzQyY2VmYTllZjEzMSBsZWdhY3ktdHJ1bmsKKzc3Mzg2IGU1N2NmYzUyNjY1NmY2NmQzZmMzZWEwYmE3YzkyMjc2YzRkZjliYzUgbGVnYWN5LXRydW5rCis3NzM4NyA1YWIyYmMyZjZkYjgxNWVlNTE0NGY4ODg4NGRmOWY0MDVkNWExYWIyIHB5M2sKKzc3Mzg4IGFmMWVkMTk3MTdlZjM5YzkzMjI3MGIyZmJkNDgzNDBkMDQyNTZiNDUgcHkzaworNzczODkgODlhOWRkOGM2MjhkNGMwNTQxYzE5ODgxYjA1ZDIzNjQyODRlNmEzMyBweTNrCis3NzM5MCBhYWRmYzMxYjNmMTQxZjM4OWZlZTRjNWVmYWNlMzVlZjBhNzQ5MGYyIHJlbGVhc2UzMS1tYWludAorNzczOTEgNDY3NWYxMWZiMTI1ZDY5ZTkwYmJmOGI0MTQ4NTY2Mzc2MmZiMzViOCBsZWdhY3ktdHJ1bmsKKzc3MzkyIGI0MDdlOGJlY2E0YTQ3ZTQwYmE0YWE2ZmE0MjAxYmQyZGZkNmRjZDkgcmVsZWFzZTI2LW1haW50Cis3NzM5MyBmMmQ1NDA5NmRjOGMyODM5MzkwODFjNmFhODBkZGU2ZmI0ZjhkODNiIHB5M2sKKzc3Mzk0IGY5YzBjNDExZjgwY2NkMTY2MjhiZTQwZDE3OWNjOWU5NjU1NTI4NTYgcHkzaworNzczOTUgYWI4OGRhYTRkMmNlMmMxZjNkZDY0ZmQwYzQwOTdlY2VmMDFjYTczNiBweTNrCis3NzM5NiBhN2FiMWFiZGViOTIwYTU0YzczOTk4Yzc3NmQ4MWQ5ZWYyZTYyNmRhIHB5M2sKKzc3Mzk3IGMxYmVjMmRiMWZjZDczNWU3MDJhZmNkM2Y1NWZiZjBiMGVmNzllMWMgcmVsZWFzZTMxLW1haW50Cis3NzM5OCA3ZTJhZjRlNTcwMzlmYmI2NzFiNGI2Zjk3MTQyMGJiYzEzYzRmYjQ0IHB5M2sKKzc3Mzk5IDY3ZjdhMGU5ZTIzMzI0MzljNzAzMmFjNGY5ZjQ3NWQ2OGVlNjJjZjMgcHkzaworNzc0MDAgYzJmZGYyNTMyOWZmMzBjZjhkNjhjMGMwZTdjZjQ3OWQ3YjIwMzc0NSBsZWdhY3ktdHJ1bmsKKzc3NDAxIDJjZmYzYmNlNDA5NjcyODM3OGIwMWE3NzM4OTI0ZDk2ZDNmZWE1NjAgbGVnYWN5LXRydW5rCis3NzQwMiAxZjE3NzgxOGYxZDBhNzM0ZmM2MTQyMmMzYmYyMjg5YTI0ODY2NTEzIGxlZ2FjeS10cnVuaworNzc0MDMgNzU1MGI0YjkwNWM3MDdjZmRiZjQ3ZmI2NWQ1MzA4NmE3ZDA0ODkyYSBsZWdhY3ktdHJ1bmsKKzc3NDA0IDNmYTY3MDdkZjk4Y2MwNGM5MjQ2MmY5Mjk2MjM1NDE0N2NkNWY4NGYgcmVsZWFzZTI2LW1haW50Cis3NzQwNSA3OGMzZWI1YzA1ZmIyODYzMzU1Yjk4MDE1Mzk1ZmI2Njk0MWJmMDZiIHB5M2sKKzc3NDA2IGU3ZmEzOTU5OTM1NTQxYTljYjFjNTJlMmJiZmFlYjMxOTFmNGZiYmIgcmVsZWFzZTMxLW1haW50Cis3NzQwNyAzMzk4YThiNzQzM2QwNjI2ZTc2MGY5ZmVhOGExYWI3N2MwN2FjNDAzIHB5M2sKKzc3NDA4IDQwNWM5YjYzOWUwNTUxNzgzOTdmNGEyYzY2NGNkYjU3NzdkYjNlZDEgcHkzaworNzc0MDkgZmJmNDk4N2U1MTRhMjcyODNmMTkyY2Y3NTY1NDlkNjBjNDdhZDk3MyByZWxlYXNlMzEtbWFpbnQKKzc3NDEwIDNlMTcxMjIyMWZhNjg2N2Y1ZGJlMzEzMTMwZDhlYjRjMDkxMTRlZWUgbGVnYWN5LXRydW5rCis3NzQxMSBhNjY2Njc3MDRhYjBlNmU4MWZjNjljOTRiMDI0YjJjYTg4ZTEwYjJhIGxlZ2FjeS10cnVuaworNzc0MTIgOTdhNDA0MTc5ZTU5ZDQ4ZTgwZDEyYjkxMWY5NjM2N2FiZGNmOTcyYSBsZWdhY3ktdHJ1bmsKKzc3NDEzIDI1NDI1NTdhMTJiZDcwY2QyN2NlYmYyNjQyZWQ4MDAyYjUyZDVhMzYgcmVsZWFzZTI2LW1haW50Cis3NzQxNCA3MWYyNDkxZDhmMmY0YTU3YTgzMDUxNmJmY2M0YWFlODI3NzFlMThmIHB5M2sKKzc3NDE1IDY4ZmE5NTNiNWU3NmIxNDFmZDc1NzVmZjJmYTNlNWQ1YmJlMmYwZWQgcmVsZWFzZTMxLW1haW50Cis3NzQxNiBjYzMyZDU3ZTA2YjA0MTc2MWJhYmM1OWM5MjBhZWUzMzY3OTY1OWI5IHJlbGVhc2UyNi1tYWludAorNzc0MTcgZjAwMTA5ZTE2ZWFiOTA4MzAwZmU4ZmU5MDNmMjBjOWQ0MzhmZDNjNiBweTNrCis3NzQxOCBkZDMxYjFjMDMzYjJiMGFhYjAyNzBlYTljZjRlOTFkODY1Zjc5Y2M1IHJlbGVhc2UzMS1tYWludAorNzc0MjAgZGNlNzRhODczMGY1N2NlYmMwNzNlNDQ1YWJkZTIyM2VjMGI3Y2NiNyBsZWdhY3ktdHJ1bmsKKzc3NDIxIDMzZTQwMjkwOWNmMjliYTBlZjNkMTgzMTU5Mzk3YmVhMTZkM2Y5MGEgbGVnYWN5LXRydW5rCis3NzQyMiBlZGZlZDBlMzJjZWRmM2I4NGM2ZTk5OTA1MjQ4NmE3NTBhM2Y1YmVlIGxlZ2FjeS10cnVuaworNzc0MjMgOGE1YWM5ZmY1MDU3ZjBlNjZmNjU2ODVjNGVlNTM2Mjc1ZGI5NTFjMyBsZWdhY3ktdHJ1bmsKKzc3NDI0IDJmOTM2Yjc4MzFiNjdjZmU3Y2ZkNzA0ODg1YzNjZDVmM2I1MzkyOTUgbGVnYWN5LXRydW5rCis3NzQyNSA4YTMyMDY5NGU1M2I1ZmM3OTU2NjVlNjMyNjBjMmMxMDdjY2ZmZjI4IHJlbGVhc2UyNi1tYWludAorNzc0MjYgMDVmYjcxZjAyNTNkOGRhMjJhNTNkYjRiZjkwNzA2ZjcyZjAyN2IxNiBsZWdhY3ktdHJ1bmsKKzc3NDI3IDhmNWNkM2ViN2M3MzRjZjY2ZWZjNWU2ZjgwZTBlNDY4NjcwZDdlOTMgcHkzaworNzc0MjggZDk4MDVhOTYzNTFjMDYwMWFhZGYwMzM4ZTAwMjY5NTBiNDJlZWQxOSBsZWdhY3ktdHJ1bmsKKzc3NDI5IGI0Y2UwYzhiMGJjZmZlODllNGUyMjgzNzNjY2MzNjYxOTRhZmNlNGIgcHkzaworNzc0MzAgOWM4NTJhMzFlODdjZTAxZjZmYzAyYTllMGNhNWU4NjdmZTNjYzJjNSByZWxlYXNlMzEtbWFpbnQKKzc3NDMxIDNlZWMyZTlkNjQ5M2Y1NWEwZDJmOTIyYWQzNjdlMjI5MTZkODYxNjEgbGVnYWN5LXRydW5rCis3NzQzMiAyMzVjODI2NDM0NzRjODk3MzAwZDM0ODU4MGFlM2YyNDk5OTBmYWM1IHJlbGVhc2UyNi1tYWludAorNzc0MzMgMzJlYWI0NDNhOTZiMTM1MWQwZjRiMTliNTI3YTYyYWQ2MGUyNTcyZCBweTNrCis3NzQzNCAzZWIyOWFjN2IyMGE2NGM5MWNjNzQ1MjdlMDM5YmRhZTVhY2Y4OTRmIHJlbGVhc2UzMS1tYWludAorNzc0MzYgZjIzNThkMzNmMTA5ZGRkZDVkZjgzMzk5MmFlMjMwZWMxZjI1MjYxYiByZWxlYXNlMjYtbWFpbnQKKzc3NDM3IGVmYTU4NjdkOGExNGQxOWNiOTNkN2YzNTQxNjljMzdjZmMxZThkZTQgcHkzaworNzc0MzggZTMwZmNiOTU2YjVmY2YyMmIxZGI2MGNkZmZjYzcxNjcwZTkyZTJhZSBsZWdhY3ktdHJ1bmsKKzc3NDM5IDQxY2VhNjZhMjQyNmE1NDYwZTE1MWUyMTA3NTllZDA2NzRjYWUzMGMgcmVsZWFzZTI2LW1haW50Cis3NzQ0MCA5ZjkwZGIyNzYwZDliODFlYmExN2MyMjM4Yjg2NjNmMjdjZGI2ZDkxIHB5M2sKKzc3NDQxIGQwOGQ4NmVhZDM3NWEyMmRiYjgzMDIwMTE2YjBkMGQwNGZjYWNkYjYgcHkzaworNzc0NDIgOGZkMTJlYTYzYzZhYzZlMmQ1ZDYzOTc0MDFhOGNlM2E3Nzg0NWQ3OCBsZWdhY3ktdHJ1bmsKKzc3NDQzIDJmNTRmN2U5YzJiMTliNjJiNTk1NDRjNDQxNGU3YmE5ZmYyOTg2ZmMgcmVsZWFzZTI2LW1haW50Cis3NzQ0NCA3Y2UyMjU4ZGVlOGE1ODljNjQ2MjhjNjZhMDIxNTI3MTY1NTBmZGNjIHB5M2sKKzc3NDQ1IDdkN2I1NzY1YjQ2ZjdjNGUxMjIxMjYwZDBkZjQ5OTQxNmQzNTRiOGEgbGVnYWN5LXRydW5rCis3NzQ0NiAxY2NhOGQ4ZjllZTUwZTZiYzY2NmJmNmE0MDA3M2RlZTViZWZmNjFmIHJlbGVhc2UyNi1tYWludAorNzc0NDcgYzVkYmVmYmM5MzIxMmNiNzVlMmU4OWFhNDgwMTVmMzFmNmE0MWJlMSBweTNrCis3NzQ0OCAyM2YyMWY0ODIyOTQ4NTVlYWI5YWJkN2M2ZjBhZTExNTMzYWNhZDc3IGxlZ2FjeS10cnVuaworNzc0NDkgYjc2NDk3MzNhMzU0NWU0MWFjODFiZmQ3NDAyZDUzNDZkNmQyNThhOCBweTNrCis3NzQ1MCAyYTlmNjZkZjRkYzQ2NzkzNjNmNWQzMzU5YTM1OTVmYWI4MDdlZjE0IGxlZ2FjeS10cnVuaworNzc0NTEgYjRmMzAxY2VhMTE1NmE0Y2JmOWU4YzYwNjhlMTEyMWIzN2I1NDkyOCBsZWdhY3ktdHJ1bmsKKzc3NDUyIGMzMmQzYjA4ZmNkYzE1NTk4NzZiNmJiYjMwMDQzMzY3NjY1MDgzOWMgcHkzaworNzc0NTMgYmUzMmY2MTExODNiOTAzZjQ2NTM3ZDY1NDEyZGE5MTRlOWNkNTRiZiByZWxlYXNlMzEtbWFpbnQKKzc3NDU0IGY1ZmQwMWJhNDdiZTBiN2U4ODIyOTQ1NDQyZDE2YmRjMjY3Mjg1NWMgcmVsZWFzZTI2LW1haW50Cis3NzQ1NSBiODBkMjk2Mjk3OGM4Y2YxOWQyZTViZDZjNTlmZWIwZjNlZGFiNWJhIGxlZ2FjeS10cnVuaworNzc0NTYgMmE5Y2ZlMmNlNTliNDBiYzk5OTc2M2MwZjVmYmUwZTk1ZmE0YWUyMSByZWxlYXNlMjYtbWFpbnQKKzc3NDU3IDY2MmRmZmMxYjM0ZDNmNjBkNWY2MTYwNzk3ZGVlMDU0M2MxODQ4OGUgcHkzaworNzc0NTggN2I1ZjVhZjRmNWFjYjJkZWZjYThlZTM3MTA3NmI4NWYzZmViMDUwMCByZWxlYXNlMzEtbWFpbnQKKzc3NDU5IGE2YmY2OGU2ZTgyNGM3OTAxODZhMjg2NDViNTc0YTQzZjAwYzQ4YmYgcHkzaworNzc0NjAgM2MwYTQzM2IyNmUxZmNhMWY0ODVkNjA2OWE0YTc0MDY0Yzg1MDZkZSByZWxlYXNlMzEtbWFpbnQKKzc3NDYxIDY2ZjFkNGE0Yzc5OTRmOTNiMmI0MTJiNTc3OTdiZDUwODc5OWNhYTEgbGVnYWN5LXRydW5rCis3NzQ2MiA1Y2ExOTQ4YThmZDY5MzIyMmU0NzVkMGJlOWRiYjQ1OTY0ZWU5ZjNlIHB5M2sKKzc3NDYzIGQ1MTM1ODY0NWU2MDYzNzU5OTMxNjE4MDE0ZjAzNmZmM2NkMWZjZTYgbGVnYWN5LXRydW5rCis3NzQ2NCA4NTM3YzM3MzZlOTk2NzdlYzViMjQ3NWZmMjE5NWUyYWQyZTQyNDRkIHB5M2sKKzc3NDY1IGQxZmQwYTM0YmIzNjgyOTAwMDVmZTY1NjM0ZTVjODk3YmYyY2I2NmUgcHkzaworNzc0NjYgYmFkMWFlM2ZkMDYwNzNhMjlmZDJjNGZjZWM3ODk1ZWU4MmRmYTYzNiBsZWdhY3ktdHJ1bmsKKzc3NDY3IDMxMjUwYzM0ODMzYTQ0MjJmYWE3YTA3OTJmOTRiYTJjMzcxODI2YTIgbGVnYWN5LXRydW5rCis3NzQ2OCAxNWIwNjY4ZjBkYzU5N2ZlNjRkMWEyZTRhOTAyNzQxOTk5MDBjNWExIHB5M2sKKzc3NDY5IDYyMmY3OWJiYTUyMzFhODNjNmU4YzBiZjg5MDA4NGIzZDIxYmJmODEgbGVnYWN5LXRydW5rCis3NzQ3MCA5MjI1ZWE2NzdjNGIyNzEzNzkwMDFjNDk3YzAxNzkyNzE1MDZkM2JlIGxlZ2FjeS10cnVuaworNzc0NzEgZTVlNTVmZmU5ZjczOGIwOGQzZTgxOTZiMjJmNGNmZWFiMjViYTFmOSBweTNrCis3NzQ3MiBiMjFlZmMwY2ZlOGJiZTU1MjA5NzgyODA3NDgzYTUyODc4MTk0YjA3IGxlZ2FjeS10cnVuaworNzc0NzMgOGUyN2QzYjhkMmVjNDU5NjhmMGFkNmMwN2I2Y2EzNDU3ZGEyZDE3YyBsZWdhY3ktdHJ1bmsKKzc3NDc0IGFiOTA1Zjc0YmYxMTdhMWE2OGQwN2U4NWI2MjAwYjdiYWExMDU0MTcgcHkzaworNzc0NzUgYzViNmE1YjgzYWI1ZGM2NzI3MDczZjFhMjA4Njc4MGJlNDRjYmU5NiBsZWdhY3ktdHJ1bmsKKzc3NDc2IDlmYzdmMjk3ZDEzMmI5YTVhMTI5MzFlMWFiNzUxMWYyYzFlNDY5ZmMgcHkzaworNzc0NzcgNTcxMDIyODNhYjVlY2Y1NTMzOWQwZjhhOTI2OGRmY2I2ODA1Y2RmNyBsZWdhY3ktdHJ1bmsKKzc3NDc4IGM1YTBhNWQ2YWNiMDdiYTljMjM4NjA0YjIzOGFjYWM4ZjM1ZTQwZjAgbGVnYWN5LXRydW5rCis3NzQ3OSA0ZjRmMDAxYzgxZjU1OWUzNGZhZWNkMDE5NTdjOWNiODhiMmRiZDAyIHB5M2sKKzc3NDgwIDQ3OGFiYzdiY2FhYWRjYTMzNjMzMzZmMzhmMmJmNjgwNzQ4YjU5ZDQgcmVsZWFzZTMxLW1haW50Cis3NzQ4MSAwZjk3NGJiMjM4ZWRhYTNmMWMyZDFlYmZmYzRkZTQwNWE0YmRmY2FkIGxlZ2FjeS10cnVuaworNzc0ODIgYzdmMzNkNTIxNmY5YzQwYzIyYTAxOTdjZGQ4ODk5NWQwODc1MjI4NiBsZWdhY3ktdHJ1bmsKKzc3NDgzIGIzOWEwMjE5ZjcyN2U5M2I0ZDY5MWMxNzI4M2RlMjVmYmQ0YzRhN2UgbGVnYWN5LXRydW5rCis3NzQ4NCAxMDMwNjc4MGU1YzBjZjVkZGY3MzQ1Y2ZjYjcyYzMxNmNiOGZlNDg4IGxlZ2FjeS10cnVuaworNzc0ODUgMjAxYjQ2MWExMmJkZmIxYzgyZGM3MDAxMDQ0ZDBkZjUwYTI2NTA4MiBweTNrCis3NzQ4NiBlOGY4NDYxZDZkMWRmNTFmMTY4ZjlhYmFkNGQyMjhjN2QzOTk0M2U4IGxlZ2FjeS10cnVuaworNzc0ODcgYzQzMGU2NjRlNjA1YmZlMGQ2MmUyNDA0ZGQyNzFmYmFhYTBlMWNlNyBsZWdhY3ktdHJ1bmsKKzc3NDg4IDAzZmE2MWEzN2UyZDUyZDAwMWJlOTA3MjY2YjZhOGEzODI2OWRkZWUgcmVsZWFzZTI2LW1haW50Cis3NzQ5MCBhZjE4MDk4MTNkZTk2ZDY0MzFmMWFhOWU0OWVhN2ZjNDVmZjIzNTVjIGxlZ2FjeS10cnVuaworNzc0OTEgNzZmYjdkYmQ3Mzg4NDIzMmUzMGFlMWNhMDA5YTE2YzRiODYyNWJlOSBsZWdhY3ktdHJ1bmsKKzc3NDkyIDkyMzg0ZDdmNDI1YTU5OGVkZmYyOTI4MjFhOTRlNTFiNmE2NGY1ZGIgbGVnYWN5LXRydW5rCis3NzQ5MyAxNjgyYjk2MmU4ZGVlMWM4ZjU5ZWI5NTFkYWQyOGRlNjdkN2VlNDFlIGxlZ2FjeS10cnVuaworNzc0OTQgY2UxMWMxMjcwYjY5MDZmOTQyOGE2NWY5M2MzMTVhN2ZlMDhjNzRiYyBweTNrCis3NzQ5NSBkNzU4ZWIyYzgyOGU4NmE2MjE4ZWNiMWZjMTRlZmM2YTkxZThiZGUwIHJlbGVhc2UyNi1tYWludAorNzc0OTYgOWJhYjNkN2FiNGY1MWI3M2U5NjQ2NjUxZDUxMTA1NGYzMDdhNjUxMyByZWxlYXNlMzEtbWFpbnQKKzc3NDk3IGIzZjUwZDZjYjY0MDZiYTJiYzMyOTY0MjJkYTQ4NjEzMjA1Zjk5Y2EgbGVnYWN5LXRydW5rCis3NzQ5OCBkMTQwZjQ5MDFhNDIzODA2ZTlmYWJlZTc2ZmNkMDg3N2NiNWJlMWE3IHB5M2sKKzc3NDk5IDllNzNiZTVmYTgwZjg2Y2M1YzAyOTk2YTIwMDIxMGIxNWEzY2NhZTMgbGVnYWN5LXRydW5rCis3NzUwMCAzNTQ2OWU3OWZmODA0NmZlMmExM2M4MmY2MTk5MWQ2Y2ZlODA0ZGY2IHJlbGVhc2UyNi1tYWludAorNzc1MDEgZWI4NGY3MjE3YzY1ZDkyNzhlNGNmMGM2NjAxZmNiODU4OTA4MGU2YSBweTNrCis3NzUwMiA4MDQxM2MxODJhMjhiNjgwMGU3Mzk3MTIyNWIxMmE1N2E0MzBjZjMxIHJlbGVhc2UzMS1tYWludAorNzc1MDMgNjU3ZjE2NTgyOTQzNzM5YjkwNmY2NmY3ZWZhZDQwMTQ0OTJjOGIxYyByZWxlYXNlMjUtbWFpbnQKKzc3NTA0IGM3NmQ0MWU3NDRjMjMxOTAzMDA4OTUzNmNiYmY1ZTU1YmEzYjE2NjMgcmVsZWFzZTI1LW1haW50Cis3NzUwNSBkM2JlYTE2NjlmMmQ4OTNmMjhkNzUxN2NjNGRkMmQ0NTc1NDM3YTEwIGxlZ2FjeS10cnVuaworNzc1MDYgZWVmMmViYzA4MWRlZTAwNmY2ZTM3MWJjOTgwMjVjMDc3NDUyZTNkZSBsZWdhY3ktdHJ1bmsKKzc3NTA3IGJlMGJmMGJiZDk0YWZmZWM1NDE2NGYwNjVjZTQyYzNlNmVlMjhlMzEgcmVsZWFzZTI2LW1haW50Cis3NzUwOCBiMzA0OGE1MmUzYzg1YWM4MzIzNWI3YjlkNTE1ZjE1NDJlYjIyMjBhIHB5M2sKKzc3NTA5IDNhYWVmMmVkZmRiMzU1ZGU1OGJkZDJlMTFlODQ4MjFmYmNiMmJiZTIgcmVsZWFzZTMxLW1haW50Cis3NzUxMCAxZjg0ZGRhZmI2YTM5MmM0YjAwMTEzNTU2ZmUwN2Q2OTJhNzcyMTgwIGxlZ2FjeS10cnVuaworNzc1MTEgNzg2MTBiNDhjMzk2YzE2NGYzNWE3MzVmMDRkNTY3ZDEzZmI5NWYyOCBsZWdhY3ktdHJ1bmsKKzc3NTEyIGVmMGQwNGRlNGE0M2Y5ZTBjODQwZDUwMjFjNmM2ZWRjYmYyMzZhYmIgcmVsZWFzZTI2LW1haW50Cis3NzUxMyAwODJkMGVhZjhkZGFkYzljNzk1OGQ4ZWYwOWE3NzViYjMyNzU2MDcyIGxlZ2FjeS10cnVuaworNzc1MTQgNzYwNzY2NTliMjI0OWUwNDQxN2ZiOGU5NDJhZTM5MmZlNzYyYTE3NCByZWxlYXNlMjYtbWFpbnQKKzc3NTE1IGY0N2QxOTllZTY2OTdmMGY2MDQ2M2JiYjBiZDdmZmQyNjczMjUxYTQgbGVnYWN5LXRydW5rCis3NzUxNiAyMDA2ZmQ4MTZkMjI1MjAyYzA0NmJiZmE2Mjg0YWJkYWZiNTNiNjAzIHB5M2sKKzc3NTE3IDkwMDYyNDViMTlhZmY5Y2ZmYzAwMDFhNjBmOWY5YTBlMmE5ZGJlNGUgbGVnYWN5LXRydW5rCis3NzUxOCA0Mjg4YzQwYzg0NDA3NWIzY2RlMTdkODRlYTcwZGZiY2JjM2MzMzkyIHJlbGVhc2UyNi1tYWludAorNzc1MTkgNTY3M2RjM2I2NDMyZTRjOTBjOTg1YjUxZTRjYWIzODRiYjA1NTFhNSBsZWdhY3ktdHJ1bmsKKzc3NTIwIGVhZmFiYWQ1ZTYwMWVlZDU1NTEyMDdlOTdhZjFhYjBmYWI2MDUzZWYgcHkzaworNzc1MjEgMTg5YTVhYmIyMzIzZTFjZjM1Zjk4YjkxNTRiYjI2OGIxMDRiYjE3YSBweTNrCis3NzUyMiAzMmQ2YTk0Y2QwZmEzOWZlNTg4Y2JjN2NlMTllOWM5OTk1MmZkYTUwIHJlbGVhc2UzMS1tYWludAorNzc1MjMgYTE2YjI0YjI1YWMzMWE3YmY4OTViYTdiYjg0YmNjOTZhOTk1NTc3ZCBweTNrCis3NzUyNCAwZmFiM2MyZGQzMTRjZmFmODMxYjZlYzEwYjlmODg5ZjdjODQxZjEzIHJlbGVhc2UzMS1tYWludAorNzc1MjUgMjY5YzA5OTIxYmIyZmE0N2JhZWQ0MWYxMGFmZDQ3OTU3ZWQ3ZTkyOSBsZWdhY3ktdHJ1bmsKKzc3NTI2IDA4OTUwNDBhZGVmZjUyNjJiNGEwZTFiYjU0OTI0ZjMzNzU4MDVkMjggcmVsZWFzZTI2LW1haW50Cis3NzUyNyBmMjIxODNlNjg4NWM5OTRjN2M2OTkyYmRlZjllNTc2OWQwNWYzOTUxIHJlbGVhc2UyNi1tYWludAorNzc1MjggMTFhZDQyYTc4NmEyMTM5NjRmYTM2YjlkNTEyNWUyMzRkMTY0NzQ1NiBsZWdhY3ktdHJ1bmsKKzc3NTI5IGQxNDkzY2Q5MTMwMDZkNTNhZDA2NjRlOWZmOGViYzI4ZWEwZTA3ZGEgcHkzaworNzc1MzAgOGUxNzlhMGZjYjVlYjhiNTQ0MTliMGU2NGJkZDVhYWUzYzAwZmMzMyBsZWdhY3ktdHJ1bmsKKzc3NTMyIGNhMDBhY2M5YzMwNGViN2E5ZmZhNDg1ZjYxODllMGE4NzhiMTBjMTggcmVsZWFzZTI2LW1haW50Cis3NzUzMyA1YzMyZjNiNjVkMjE2ZmIzNGRkNzk0YTNiMDE1NzBjNGZhNTNkNDhjIGxlZ2FjeS10cnVuaworNzc1MzQgMTc0YmRhYjAyNGViODM1MDAzOTUxNDE3ZGIyMDE1ZDFmNTY1ZjM1OCByZWxlYXNlMzEtbWFpbnQKKzc3NTM1IDYzNTFkM2Q1M2RlZDM3ODBkZGJmM2ViNDZhZTkxZTAyM2NiMzY5MGYgcHkzaworNzc1MzcgZDgxZTQ4ODQ2YjRlYmY4YTJmOGYyMTViMjY0MmRiNTY3MTYyOTQyMCByZWxlYXNlMzEtbWFpbnQKKzc3NTM4IDI5YTE0MTBjZDdkYzgyYzUxMDA3YmE1OTI4YjFkYmY1MDc4NDM5MmIgcmVsZWFzZTI2LW1haW50Cis3NzUzOSAxZWE3ZmJkOTkyOTQ1NDM4OTU1M2NjMzE0MThmYzAxN2FhNmU2OGY2IHB5M2sKKzc3NTQyIGI1ZWU0NzgyMWY0YmQ4N2NjYzFiZDk3M2M3ZmM4YmYyZGIyNmY2ODUgcHkzaworNzc1NDMgZWQ4YjBlZTFjNTMxMWNlZmFkZDEyYjZlMzU3ZmNjZTIwM2Q0MTI3NyBweTNrCis3NzU0NCBhNmNjNDIxMmNkNTdlMzBkMzVhMWRlZTA1OWViODJiZGE5OWQxZDdhIGxlZ2FjeS10cnVuaworNzc1NDYgYTRhM2U2ODg0NDZlNGVlMjUxYjhlYTJmYTY5OTk2M2QwZjA4NjVkMiByZWxlYXNlMzEtbWFpbnQKKzc3NTQ3IGUzNTNmNWQ3OWY0Y2M5MzRmMmY2ODE3NzE4ZWZkMjAzZDFhMDRiMjkgcmVsZWFzZTI2LW1haW50Cis3NzU0OCA4MWIzMTQ1MDYxZDk4Y2VjNGMyZmZmMjRmODQyOThjMWQzNzU4NTIyIGxlZ2FjeS10cnVuaworNzc1NDkgZmI3M2FhMjQ1MDE0YWI5NjVlZTE2OWQxNjVjM2VlMzVkOGJkNDkxOSBweTNrCis3NzU1MCA1MzY2ZDU3NWUyY2QxZDI0YmFhZjNkOWRmM2JiZWE4ZDg4YTgxMzk5IGxlZ2FjeS10cnVuaworNzc1NTEgNjBlMDY5YzU4YTM1ZGMyMmNlOGViMmE1M2JmOTQ2MzMxZDNkMTk5MCBweTNrCis3NzU1MiA3YWVjZmE0NDMyZGYzYThkZWFlOTY1MTg3MmMwM2M4YWVmMTBhOTVlIHJlbGVhc2UzMS1tYWludAorNzc1NTUgNzA3ZDhjYTVlYTBiMDIzYjBiM2U1MWVjYTQ5OTNkZGZhZDk0OTljMSByZWxlYXNlMjYtbWFpbnQKKzc3NTU3IDkzZmExMGJlZjFlMjJmZjk1OWJmNzA4ZGE3OThkN2Q0YzYxM2U0ZTMgcmVsZWFzZTMxLW1haW50Cis3NzU1OSA5MmE2MmRmZmE0MDQ5Y2M3ODQwMTE0MmRhMTNiMTk4Y2JmYTdmNmM1IHJlbGVhc2UyNi1tYWludAorNzc1NjEgMzVmN2UyMzA5N2Q4MzBhNmRjZWQ3YTQwYWYyYTg4YTQ4M2UxZTFmOSBsZWdhY3ktdHJ1bmsKKzc3NTY2IDkzMDQ2NGYzMjIwNDY1M2FmY2I0NDA3OWQwYjBiODc5NDlmY2FkOTMgbGVnYWN5LXRydW5rCis3NzU2NyAyM2YxMmNiZjEyMmMxMzE0N2EwNDg5Zjg3OWVjMTgxNGFjNzliODE2IHJlbGVhc2UyNi1tYWludAorNzc1NjggMWFlMzM3OWMwMjA4ZjZlYzhmNGNhMjRlOTVmOGMzZGZkZjgxMzlmOCBweTNrCis3NzU2OSBhMzA2ODBiY2I3NTg5Y2JlZmQ2YWNiYWFiZTI2NTUyMDU4YmEzMDUyIHJlbGVhc2UzMS1tYWludAorNzc1NzAgNDU0N2E5YmZmN2M3N2U3NzM3MGRiY2NiYjFhODYwYjY2MTA4MTZmZCBsZWdhY3ktdHJ1bmsKKzc3NTcxIDY2ZTU3ZWI1OTk1MTA4MTgyNzY0YWM0ZDQ1NmM5MzRhNjgwNTBlNzEgcHkzaworNzc1NzIgYTlmYjIwMzcwOGM0MTE5NzYwNDliNDYxMGE4NzljNzEwOTgyNGI2NiByZWxlYXNlMzEtbWFpbnQKKzc3NTczIDFjZWZmYjNjOGNiMmU1NWM5Yzg0MTI4YTBjY2FiZjg4OWM3NmYwMjkgbGVnYWN5LXRydW5rCis3NzU3NCAzYmQ2ZGYxMWQxZDZjMjZhMjRkZGFlMTc0MDc1ZDBmMGMwZDJhN2Y5IHJlbGVhc2UyNi1tYWludAorNzc1NzUgZGYwMjAwNzllMjg4OWQ0MGFlMjJjODU1ODRmMTg0OWViMzBhOWRjOSBsZWdhY3ktdHJ1bmsKKzc3NTc2IDhmNzk3MWI4MjBhNDM1YjEwNWUxZTQ3MWYwMWFmMGQ2NGZjNTdmMWIgcHkzaworNzc1NzcgZmIzMzdjYjQ2YjlkZTg1ZmZkNTJhNmJiMGRkN2JhNTQ5OTEyMDMyZiByZWxlYXNlMzEtbWFpbnQKKzc3NTc4IDczMjJjNTY5MTI5NGQ0ZGMyNTc2NWQ4YWViYmMzMDE4ZjI2NjZmMjcgbGVnYWN5LXRydW5rCis3NzU3OSBiOTg4OGMxMzM5ZGY1MjBiYWVjYzliOGM4YTQxYmZmMDY2MjBiOTY5IHB5M2sKKzc3NTgwIDZlYzE0YmM2YWIwYzliNTY1ZDQ5ODExNjQwMDM3OTEwOWY3ODMzN2EgcmVsZWFzZTMxLW1haW50Cis3NzU4MSA4MDA1NTljOWQ1MDRiZmVhMWI0OTZmYTQxNDVkNGUwZWY1YTRhYTNlIGxlZ2FjeS10cnVuaworNzc1ODIgZDYwYjdiMmM0YTFmNTE3NGQ4OWZiY2E4NmU2Y2UwMWI0OTFiZDNhNSByZWxlYXNlMjYtbWFpbnQKKzc3NTgzIGExMTdjYjkyNmQyMDdlMDlhZTI5MzExMWYwYzU5ZWExNTE2NzIzYTcgcHkzaworNzc1ODQgOGU5Njc3MDA3YTFlOGMzYzM0YzE3YWI4NTJhOGY3Yjg2OWU3N2Q4ZCByZWxlYXNlMzEtbWFpbnQKKzc3NTg1IDBjOGNiZGJhZmFhZGRhN2FlN2VlMTliYjVlY2M1NGQ5YjFkNGUyOTEgbGVnYWN5LXRydW5rCis3NzU4NiBjMjQ3NTI2ZDVhNWIwMzQyY2RiODNiY2JiYmJjNWI4ZTg3OTIwZDZiIHJlbGVhc2UzMS1tYWludAorNzc1ODcgYTQ4NWZjZGZlODU5NjAzODljYTk1NWE3ZTU2Njc3Y2E2Y2M3ZGZhNSBsZWdhY3ktdHJ1bmsKKzc3NTg4IDNiNDllZjZiMDlmZmEwYTk1OGEyODFkMzYyZjI3NWZmMWU5ZTVlZmYgbGVnYWN5LXRydW5rCis3NzU4OSA1YzljNTNhNzIxYTU1NGJmYjAyNWYxNGIwZGQ2NTIyM2NhYmY0ZmIyIGxlZ2FjeS10cnVuaworNzc1OTAgM2U2Mjk0NzE4NTBhZmU4Mzk5ZjdhNzRhODJlNTM2MWU5ZjNhOTNlMiBweTNrCis3NzU5MSA2MDM2ZDc4NjliZDFmODQxMTZkZGUxMzVjYzIyMzQ0ZWNjZWU5NWFiIHJlbGVhc2UzMS1tYWludAorNzc1OTIgYmIxMGYzZmZhZTAyODFkMzY5YWMyYjc0ODIwN2IyOTZhMzY0NjgyZSByZWxlYXNlMjYtbWFpbnQKKzc3NTkzIDNhYWRjZTM5ZDM0NTJkOWI5NmVhMzlmM2ZkNGQ1ZGFmOGViYzkyZWEgbGVnYWN5LXRydW5rCis3NzU5NSBmZWFjYWE2ZTQwYjg0YjcwNDgxOGZlNjEyZjhlNGU4OGMxYjFkZmJjIGxlZ2FjeS10cnVuaworNzc1OTYgYTlkNTE4ZmFkYTU5OTU2NWVjYzgxZDVmZmVlNTVlMTE1NWFmMDg5ZCByZWxlYXNlMjYtbWFpbnQKKzc3NTk3IDEyMWRlZWQ1OTY4ZWU2OGU0MWU4ZDRmMjllZTE4MTNlNmJiMDZiYTUgcHkzaworNzc1OTggZDU5Zjc2ZDZiNzk1NzdkYzFhM2RjMWMyOGYwZjgxMDBlYmE0NTFlMSByZWxlYXNlMzEtbWFpbnQKKzc3NTk5IGVjMTkyNjQzYWRjYmEyOWE2ZWJkYWU0ZGMzN2IzMTg3N2I0NWJkOGUgbGVnYWN5LXRydW5rCis3NzYwMCA4NmEzNWU1OWI2YjE5NTg1ZTRjNGEyYTA3ZjA1NTVmNWYwZDdiNmVkIGxlZ2FjeS10cnVuaworNzc2MDEgOWU1OWJlMWQwYzM3MTBiYjFlYWYyMzRhODgxODY4NTZlYzQzYmIyMSBsZWdhY3ktdHJ1bmsKKzc3NjAyIDJkZWYxZGZkZjFmNjM5OGJkMGQ5NWYxMjM1MTcxMWQzOTJmNTljZDEgcHkzaworNzc2MDMgMTZjZGMxNWU1ZDc1YmIxYjMwNjg0MWI4YjllYzI3MGMyMGY4MDRmYiBsZWdhY3ktdHJ1bmsKKzc3NjA0IGY2YTYyNmYzNDg0MGZhMGMzZjVlYmFkOGI4NjAyODgwYjZiZGM3NzAgcHkzaworNzc2MDcgZGY0ZDIxNThmYTA0ODYxZDVmMWY0MzExNWRjY2JlODQ2OTRhYTAxMCBsZWdhY3ktdHJ1bmsKKzc3NjA4IDc1YmZhNWRhMWJlYjUyNTI3ZDc0YmUwYzkxY2UwMzAyNjI2Njc3NTkgbGVnYWN5LXRydW5rCis3NzYwOSBmODBlNmJkNGZkNGU2YTdjYzRhNjE1ZWMxNjNhOWE3MDIwNzZhMzMxIGxlZ2FjeS10cnVuaworNzc2MTQgYmFjODIxZGZmZWE4MDRmMWVmOTE2ZjMwZGRjNWY1NmRkYzZlMjdjMCBsZWdhY3ktdHJ1bmsKKzc3NjE1IDVkYmJjNDNjNTkxYjkyZDcyNWI3ZDkxMDE2MWY1NjcwMzgxODNhZDkgbGVnYWN5LXRydW5rCis3NzYxNiA4ODYzMjBmMWJhODJhMDVhMmQ3ZGIwMWYyZDkwMTZmMDcwOTBmYjdiIGxlZ2FjeS10cnVuaworNzc2MjIgNzNmZWNkNGU3ZmVjMzRlOTM4ODMyMDQwNDE2MWVjNmI3ZDg0NGY2OSBweTNrLWNkZWNpbWFsCis3NzYyMyAyNjVlYjI1MGU0YTU4MTc1ODgyZWJhMjVlYjkyNzUyMjQxNzZmNjNhIHB5M2stY2RlY2ltYWwKKzc3NjI0IDljNTYzYTRmM2Y5YTI0NGI0YWNmYTFhODljNmEyNTg5NWYyZTgzYzQgcHkzay1jZGVjaW1hbAorNzc2MjUgNDY0YTIzNjc2NTQwOTgyYWYwMDllMGY4MWMxMjdlYzdkNDBhMDZhMCBweTNrLWNkZWNpbWFsCis3NzYyNiA4NzUyNWJkNDlhOWQ2MTU0M2QwNWIxZmJlOTQwYTNlMGM4YWJjOTdmIHB5M2stY2RlY2ltYWwKKzc3NjI3IGQ2NmM2ZWJiYzYxNzQwZjBkYjU2ZWJhZGIzMGUwMDhjMmQ0M2EwZTQgcHkzay1jZGVjaW1hbAorNzc2MjggODBiMDc4ZDA1NTc3MzY2MTlhOTFlYmY1M2EzN2JkNWU5YWQ0NjIzOSBweTNrLWNkZWNpbWFsCis3NzYyOSBkODI4Y2M5MWMwOWI1MDgwNzExZDJkYzU0MzBhNDI2YTRkZjIxZDFiIHB5M2stY2RlY2ltYWwKKzc3NjMwIDEzYmI5YTk3ZTFjNTAyNGI1ODRiMGIxNDMxMTE0MDUyZjdhNjM3ZWUgcHkzay1jZGVjaW1hbAorNzc2MzEgNTE3MTJjNDJjNWZiMWY3NmJjMWEyODk3OGFiYWMzNjY5ZGFlOGQzMyBweTNrLWNkZWNpbWFsCis3NzYzMiBjZWMxNDBmNzJkMDNmYmVmZDJhNDNhZGQwNWQ1MzRhMzkxZGYwMzRiIHB5M2stY2RlY2ltYWwKKzc3NjMzIGMxZGNlOTU5NmU3NzFiOWI0MjE5N2ZkYmIyNTk3YWViNDBhYzkxMjggcHkzay1jZGVjaW1hbAorNzc2MzQgMDRkZWEwMDYwMjU3YmZhMjdlMmQxYmQyNDczMDA2YjgwNGM3OGE0YyBweTNrLWNkZWNpbWFsCis3NzYzNSA0MGEzYmU3OGJjOTliZDA5N2E5YjE1OTMzNmFmZGJkMzdjMjYyZmJmIHB5M2stY2RlY2ltYWwKKzc3NjM2IDczZTNlZTQ2M2M5NDg3NzBkOGUxNmUzOTc0MGY0YTMxNGFhYjNjYTkgcHkzay1jZGVjaW1hbAorNzc2MzcgMDAyZjdhYjM1ZTE3ZDA2ZWU1OWRlMjg0N2QzOGMwZGRiNTUxNzJhMSBweTNrLWNkZWNpbWFsCis3NzYzOCAzZGY5YjQwZmY0ZmNlOTZiODFhZDIyMTQyNWNlMzgzYWE0ZWQxZTgzIHB5M2stY2RlY2ltYWwKKzc3NjM5IGY2NDZhYWE5MWIwZTdjZDI4NGM4NjhmNjk1N2Q4MWM1MDNhOWJkNjUgcHkzay1jZGVjaW1hbAorNzc2NDAgZmYzNTYzYmJiYjgwMzliYWViNTYzNTc4YjMzZjIwMDNlZmQxNGMxMSBweTNrLWNkZWNpbWFsCis3NzY0MSA5Y2YyMGJkMTUxNmI5Yzk1ZmRlMzRmM2JiZDBhYzYzOWUxOTFiODA1IHB5M2stY2RlY2ltYWwKKzc3NjQyIGVlZjc2YzgxMmJjYmRjYWY4OWQzMjM0MzgwNTI4NmQyNDM5ODRkMGIgcHkzay1jZGVjaW1hbAorNzc2NDMgYzE0Yzk0NTMxMjczN2JjYmZjNmY3NTc4ZmJiNGM1OTg5Nzg1YjhmZSBweTNrLWNkZWNpbWFsCis3NzY0NCBiNDcxZTA3YTIzNzVjNmEyODcyY2JjZTMxODkzNTYxZWZiMTE3ZGQxIHB5M2stY2RlY2ltYWwKKzc3NjQ1IGI0YWYyMTQ1Njc4YjhlOTJjZTI2NjEwM2YxOGZiZTU2MWExOGI4OTQgcHkzay1jZGVjaW1hbAorNzc2NDYgNjk0YWZmMTY3NzdmODA0ZmJjMGFmN2NkOTFiODFkNDEzZjkxODQzNiBweTNrLWNkZWNpbWFsCis3NzY0NyA3ZDE5OTY3MjdkMDg0ZDg3YjYyYzFmZWRiOGNmMDI4YTc2ZGI2Nzk4IHB5M2stY2RlY2ltYWwKKzc3NjQ4IGRiYzAwZmUzNzc3MTlkNDRhZGYzNmIwMmExNmNjZjY0MTViYThjZGUgcHkzay1jZGVjaW1hbAorNzc2NDkgMWNhYmRmMjg5MzhlZTRlZjBkZjkxYzBkMTE0MWM3MTNmYzg3ODdiZSBweTNrLWNkZWNpbWFsCis3NzY1MCAwYmQyYjA3MjA4MzI5ODVjOGMxNDQ4MTAxODA0MWNiZDkzMGI0ZTRkIHB5M2stY2RlY2ltYWwKKzc3NjUxIDkzMWVjNTU4OTI3MTY0YjA3NWQ0ODExYjM4NjU2MTNhZjM2YzBiZjQgcHkzay1jZGVjaW1hbAorNzc2NTIgMGJhYzNkYjRkNWUyOGM3OGFjM2M2MzZlZDE4ZWFlNzI2OWUxODA3ZSBweTNrLWNkZWNpbWFsCis3NzY1MyA2MzI2M2NjZGIwODFhYTJhYmU2ZTQwMDdkNjI0ZGVhNTZkMTgxNzNmIHB5M2stY2RlY2ltYWwKKzc3NjU0IDZkODk2ZTQyNGEzZGE0MzZlODM5NTA5Zjg2YzYyMGQwYmQzYWZlMWQgcHkzay1jZGVjaW1hbAorNzc2NTUgYjIyMTRlZTI3OTg3OTQ4MWZjNmMzYjg0Y2M3NTgyOTc0NWNiNzc0NiBweTNrLWNkZWNpbWFsCis3NzY1NiAwODEzZTg5ZDAxOTNmNjc5OTNmODY1N2Y1YmYyMmQxODVlYzE5OTA0IHB5M2stY2RlY2ltYWwKKzc3NjU3IDRhZDAzZjcxZDFlMTNjZDUzMGRlYzlmNGU4OGNkZTE0N2YwYzU2ZTcgcHkzay1jZGVjaW1hbAorNzc2NTggNTc3YzA5OWFkYTg4MTcwMTk3NzgzN2RlNTkwYWM2ZjNjZTBmMTJhNCBweTNrLWNkZWNpbWFsCis3NzY1OSBmMDQwODYzN2JlNzdmMjk5NzllODc3MWI3YzAyMzM4MDFmYjQxNDEzIHB5M2stY2RlY2ltYWwKKzc3NjYwIGIxOThiMGUyMWQ2MmNjNjhkNmVhY2E4YzM1NWU5ODA3NmZlMGY2ZDAgcHkzay1jZGVjaW1hbAorNzc2NjEgZDQyYTg1NDYzZjljZjQyOGUyNGRkNDVmMTMzMDgwZjNkNzc4ODJlNyBweTNrLWNkZWNpbWFsCis3NzY2MiA1ZWVjM2IxMWU0MWUxOTM3ZGEwOTA4NDQzZDlmMjc2MDAzMDAzZGUzIHB5M2stY2RlY2ltYWwKKzc3NjYzIGUwM2I5YmRjZDQwNWU4ZDk0YmMxYTM3ZWUwOTk2N2I1MmU1YjM1ODQgbGVnYWN5LXRydW5rCis3NzY2NCBhZTZmYjA1YjRjMTlkZTYzMzdmODdjOTQ4NjE4NWQyMzJiYWRhNjYwIHB5M2stY2RlY2ltYWwKKzc3NjY1IDc4MmE0MGZmM2YwZGMyMmNiNjY1NGQ4M2NlMWI5YWQ5MTBmNDc1ODIgcmVsZWFzZTI1LW1haW50Cis3NzY2NiBmMzRmOGFlNzY0NmU3MDYzOWFlNDI5YTUxNzJjNWE2YWZmOWRlY2VhIHJlbGVhc2UyNS1tYWludAorNzc2NjcgNGY5NWI0MzUyMTc5YzgyZDgzOTdlNTM5ZTRiZTBkYmFkMmY4MzNjNSBsZWdhY3ktdHJ1bmsKKzc3NjY4IDA1OWUxZmQ3ODY1Y2ZlN2I1ZWExNzllZjI3ZTk0YzEwZmU1OWViY2MgcHkzay1jZGVjaW1hbAorNzc2NjkgZmVlN2E4OGIwNmQxZmVjOTU5ZDczZGIzZWQ4ZGNmYTE1YjIxODFmMiByZWxlYXNlMjYtbWFpbnQKKzc3NjcwIGYzOGMxMTk2ZDlmZjE3ZTRmMzhkMmQxNWE0MGZhNmJjODE3NGRjZDYgcHkzaworNzc2NzEgZjFhY2QwMTcyNWUwMTg2NTFkMGJhODJlZDc1YzE1ZWI4MDVlYmUwMSByZWxlYXNlMzEtbWFpbnQKKzc3NjcyIGZiZTZlY2I5MWM0YmU1OTU5ODRjMTc0NjRiNjk0OGE1NGUzYmI2MjIgbGVnYWN5LXRydW5rCis3NzY3MyAyMmNkZWM3ZjQ0YzUyZjJiYzZhOGIyYjMzYzMyMmQ1ZGEzMjBiOTQ0IHJlbGVhc2UyNi1tYWludAorNzc2NzQgY2FhNjRkYzQ0ZDE2ZWZjMmE4YmU2MTEzYTZjMzBmNjQxYzMxMDNkNyBweTNrCis3NzY3NSBmNTY4MzgzYWNjOWY4MDI5MGQwYmMzZTBkNzQzYjEwNzMxMmZjNmQ5IGxlZ2FjeS10cnVuaworNzc2NzYgYTk5NmQ2NmZhZWQwY2EyZGRkYjZiNmU2NDA3NmI3NDU3YjVlYzRmNiByZWxlYXNlMjYtbWFpbnQKKzc3Njc3IDVjMjM2NzA0ZGFmMTVhOTA4M2E1ZDZkYjM4NGUwNDQwY2I2MjJkOWQgcHkzaworNzc2NzggYjYzNmNjNzJkMmRlNzNiM2YxOWYxOWY3MWVhMzc4OTlkNDA1MGI1OCByZWxlYXNlMzEtbWFpbnQKKzc3Njc5IGY4NTM5YjQ5N2Q0YWExMzJhNjUxNWEyM2QwOGYzMThhNmZjZDI2NzAgbGVnYWN5LXRydW5rCis3NzY4MCA5ZTEyNGU2NDAyYmM3MjFkN2FjMGM4YWNmZTQ1MGI2YjliOWY0MmRiIGxlZ2FjeS10cnVuaworNzc2ODEgZWQ0MDI3ZTY2NjAwNmU3Mzg2ODIwNWFhNTkyOTE1MDA4ZTI3MTIyNyByZWxlYXNlMjYtbWFpbnQKKzc3NjgyIDFmNzE1YTM3N2VkMDlkMjVlNWFkYzczOTY3ODdhZmI1M2NkNzBlNTYgcHkzaworNzc2ODMgNGNmZGM4YjdmYjNhZjI2Zjc1OGQ1ODk0MDA5MmJhYzc1Nzg1MTA3YiByZWxlYXNlMzEtbWFpbnQKKzc3Njg0IGY2ZmNlYzI4YWY5ZTQ1OTY0NmRlMzFlNWEzYWMxZTUyYmNlNzZlMDYgcmVsZWFzZTI2LW1haW50Cis3NzY4NSBmZTQ4ODRiMDQxYjkzZDgyNzUxYjg1MzNjMzIyNThlMGY2YWVkZjVkIHB5M2stY2RlY2ltYWwKKzc3Njg2IGQwZDA1NzlkZDFkMTNjZjMyN2ZkZDQwZmJjMDdmYTJlMWZlYTBmOWEgcHkzay1jZGVjaW1hbAorNzc2ODcgNGU2OTlkN2MzMmVjZjhiYTAyNGM5M2JmNWQwNmZlNmU0Nzc0NzQ3YSBweTNrLWNkZWNpbWFsCis3NzY4OCAyY2Y0MWQ4Zjc4N2FhMTA5OTU5MDhhNTA5Y2NkZGU5ZWY4NTMxNDE3IHB5M2stY2RlY2ltYWwKKzc3Njg5IGFkYzk4YmYxNTNlYzA0YmFiN2RkMGVhY2E5NjNmODczOGZmMGM4YjcgcHkzay1jZGVjaW1hbAorNzc2OTAgMDFjZTdhODU4ZGFkYjIzYTUyMzg0OGRiOTMwM2ZlZWE1Yjk4ZDc3ZSBweTNrLWNkZWNpbWFsCis3NzY5MSA2Yjc2MTgxN2I3MTc0MWFhMmYwNDU2ODFlNDc4NDdiNzRiZjhjNTc2IGxlZ2FjeS10cnVuaworNzc2OTIgMzFjZGU2ZTYzYzAzZDhiMzljYzYzODZkYTVhOGI0NTNhNDI4ODRjNiBweTNrLWNkZWNpbWFsCis3NzY5MyA2MDdlMjUyNWMwNTA3ZDUzMjkxNzYxYjlhMDkzNjk1OWRkMmNmZjJkIHB5M2stY2RlY2ltYWwKKzc3Njk0IDBlYzYwMzUzNjU2ZTA0MTMzODZlZjhmMTA1ZmM3YTM3ZDZjYTZlMGUgcHkzay1jZGVjaW1hbAorNzc2OTUgY2VjMmYyODExMTgyMzdmNTE3MDllOWFlMzMzZGE0N2IyNzg3OGVhYyBweTNrLWNkZWNpbWFsCis3NzY5NiBkMGU0YmQ3NmM2OTI3NDM2ZTY4NjJiMzE0YmMxZTU4YTA1MjhjYjgwIHB5M2stY2RlY2ltYWwKKzc3Njk3IGQzYjgzZmRiYzgxYTQ0MTg3YWU3NjkwZDJiNWE3NTNmNTkxNjdlODggbGVnYWN5LXRydW5rCis3NzY5OCA3YTlmMzZjYzZkZjExYWVkMjc0Y2M5OWVlMTAzN2ZlZWUzZjQxYjVkIGxlZ2FjeS10cnVuaworNzc2OTkgYTY3OGZlMWM5YzhiZTkzNjE0MWQyMTkwMTg1Y2M3MDA3ZWIzYTJmNCByZWxlYXNlMjYtbWFpbnQKKzc3NzAwIDY4MDA2NjYzYTg1MjMyYjk2ZWFmNWI5YTkxYWY1YjM0MjU1MjRlNTUgcHkzaworNzc3MDEgNzg3YzY4MGYxZmU4OGNmODU2ODQ3YTVmYjU1NDAyNDIzYzVjMzc2ZiByZWxlYXNlMzEtbWFpbnQKKzc3NzAyIGY2NjljZjEwMGViYmVkM2ZlYzg1MzczYmI2OWZjYWE0ZTc1NWNjOGMgbGVnYWN5LXRydW5rCis3NzcwMyA5NzA1ZWYzZmRiMjI3ODE3ZTVlODA1ZWM2OTJhNjg3ZTlhY2Q5OTAwIGxlZ2FjeS10cnVuaworNzc3MDQgZmE2OWU4OTFlZGY0ZTdjZGZkYmQzZDM4NzY1OTY1NTVjNTgzNjM1ZCBsZWdhY3ktdHJ1bmsKKzc3NzA1IGFjNmU5NjBhMDE0ZDgyYWUyZDY5ZmJhMGY3YzFkNDkwOTkwMTAzMTMgcmVsZWFzZTI2LW1haW50Cis3NzcwNiAyZGQ2NGMyNDg1NGM5MTBkMTI3NjRjOGI2ZWUwYTk4NzYxMzE4NmRhIGxlZ2FjeS10cnVuaworNzc3MDcgYmIxYzMzZWZmZjkzMjkzZmVhMTljNDBkMWE0NWEzYzYxYjUxNWZlYyByZWxlYXNlMjYtbWFpbnQKKzc3NzA4IDMwMWVkNjllZGRjNGVhY2NjMWFiODIxNjAzZjdhYTg4NTdlNDg3MTkgcHkzaworNzc3MDkgOTAyMjNlMzQ1OGViMzM5ZGYwMjM2ZTQ0NTY0MmMwM2NhY2NmOTJkNCByZWxlYXNlMzEtbWFpbnQKKzc3NzEwIDFlYTZjZWJiZDgxOGY3ZDU3MTJmMmUxYzM1ZjU5YjAzZTU5MzMyMmIgcHkzay1jZGVjaW1hbAorNzc3MTEgZjBmMjIxZTFhN2MwMzBmN2Y3ZGQ5NWJjNzllODNlNzliZDA0ZWQ3YyBweTNrCis3NzcxMiBiYWQ1ZTAzZTI0NDVlM2U1NDY2Mjc2MDFiMjlhNjI1NjYyMTQ5ZDczIGxlZ2FjeS10cnVuaworNzc3MTMgZDc3Yzk0N2ZmN2RiNWFlZWYyMTQzY2E5YWVjMzU5NmFiNjVhNDA4NyBsZWdhY3ktdHJ1bmsKKzc3NzE0IGI0MGE1YTU2OGU3NmU0NGIwZDY2NTExOWFiYjUzNTJjZGIzMGFkYTIgbGVnYWN5LXRydW5rCis3NzcxNSAxNzg5MTU2NmE0NzhjNDI0OTRhMDRkODA4ZDY0YTQ1MTQ4YWNhZjg3IGxlZ2FjeS10cnVuaworNzc3MTYgNWFiMzAxMmY5MGI3NGM4MDU0NjBkMDgzZDBlMTMwMTdkMzVhOTk0MiBweTNrCis3NzcxNyA4MDdkODNmNTdiYzg4MzlkNTc1YTRmMmY1ZjE1ZTBjOWMxM2E5YjMyIGxlZ2FjeS10cnVuaworNzc3MTggNWRiODJhNTdkZGQwNjZiZTZlNDVjZmI2MjdkYmQwNmU1YTc1ZjY1OCByZWxlYXNlMjYtbWFpbnQKKzc3NzE5IDM5NDdmZGNhMmY0MGRmZmMxZTAzYTg5ZDNiODQ4OTkwNDJjZGU3NDEgcmVsZWFzZTI2LW1haW50Cis3NzcyMCBmZmM0YTQ0YmZkYjk4ZjNmOWQ3MGUzMjFmZTZhZTBkMzdiOWFkNTI5IHB5M2sKKzc3NzIxIDg3NjU2ZTgzZGMxOTY4MzIxNmI0NTZjNGY1YjVkODE5ODE1ZmU2OWIgcmVsZWFzZTI2LW1haW50Cis3NzcyMiBiZTEyZDM2MjE1MTk1NTNlMjA5NDcyZTQ0MGEyNjJjYmMzYzcwOWFmIHB5M2sKKzc3NzIzIDhjM2QyYTcxZWQwMTVlZWMxMWU4OGYyZDRhMWEyMTJhYmZhMWU1Y2QgcmVsZWFzZTMxLW1haW50Cis3NzcyNCAyZDcyMzljYWQ3MTMyYmU1YmRiM2RiMmJjNjhhYTc1OGRjNTEzN2RiIHJlbGVhc2UyNi1tYWludAorNzc3MjUgMWRjOTFlOWRkNWMxM2E0YmMyZDNiYjdkNGI1ODk2YWIyNjRmMjMyNSByZWxlYXNlMjUtbWFpbnQKKzc3NzI2IDIzMjUzM2Y3MWFiZDZmNmRhOTljZGUzMTJmMjlmNGI4MDM0NmNkYWMgcmVsZWFzZTI1LW1haW50Cis3NzcyNyA2ZmZjZGFmYTAxMTg5OTQ0ODVhMTc0Y2U0MTI4MzE0MWI4MzQxMjFiIGxlZ2FjeS10cnVuaworNzc3MjggNzFhY2Q0NDgyZTY1NWI3ZDFhMTM3NjQzNzFiN2U1OTBlYTQ0NzdjMiBweTNrCis3NzcyOSBkYWIzNGI2MGE3MmUxYWEyMzQ0MGQ2Y2MyZDQyMzA0MWJhMDMwZmQ1IGxlZ2FjeS10cnVuaworNzc3MzAgZTk4ZWU5NDVlMjYyNzMwNDc5ODNiMzY2MGFlMGI5MjI3MTE4NmZkMSByZWxlYXNlMjYtbWFpbnQKKzc3NzMxIGMxMGFjZTViNzZjZTk1NGQwYzQyNWJlYjFhNmRjMmIyYmYyNmUzNTcgcHkzaworNzc3MzIgZmZiOTQ5MjBlZmYzYWI5N2IyZTBlYjQ2NDg3YzIyNTVjNmRkZmNlMSByZWxlYXNlMzEtbWFpbnQKKzc3NzMzIDY4ZDFjODFmZmYyZWE0MzgyNjNhY2IxYTQ0MjJmOGM4NWZkMGZjNjMgbGVnYWN5LXRydW5rCis3NzczNCBlYWI2Y2RlMmEzMWM4NDVhZjk1YTM4MjZjYTU4NWY1N2QwOGUxNDg1IHJlbGVhc2UyNi1tYWludAorNzc3MzUgNWMxZDdhM2JhMjljMTZlZWM3ODc1NDIxYTBkZGRiMmU3ZTZiMzAxOSBsZWdhY3ktdHJ1bmsKKzc3NzM2IGEyNTY3OTFhYTE5ZDBmOGZlMWFlM2Q0ZjI3ZWI4MWE1MTkxYzAyNTcgcmVsZWFzZTI2LW1haW50Cis3NzczNyAwY2NlNjBiNjhlNDY1YzA5MTQ0YjQwZDQ3OTFlMmZhOTI5Yzk1OWQyIHB5M2sKKzc3NzM4IDZhMDU3MGVlMjM2NmVkNmRlNjUxZDg1MTE3ZjVkYzcxNzBiMzFhNzkgcmVsZWFzZTMxLW1haW50Cis3NzczOSA2N2ZmMDQwNzQyNzAzMjExOTgxZmM2ZTM3OTFlMmExYjZiZWMwYjYxIGxlZ2FjeS10cnVuaworNzc3NDAgZmJmZTVlNDIzNDlmNmEzZTAyZDY5YmVkOGZmZjk1Yzk2Zjc0MDhmNCBsZWdhY3ktdHJ1bmsKKzc3NzQxIDI0MThhMGE5YTlhOTI1YzdkYjk5NDEyZmFiNWNjZTIzYWU3Y2Q5MTAgbGVnYWN5LXRydW5rCis3Nzc0MyA1ZTg5MzBmMzcwZDU0NTdlMzA0OTk5ZGI3ODkxM2UwY2E1NmNlN2IyIGxlZ2FjeS10cnVuaworNzc3NDQgZmY2NjMyNGY1MmExMjQyMmQzZGZiOWI4YzQ5YjZiOTEyMTM5ZTUwMSByZWxlYXNlMjYtbWFpbnQKKzc3NzQ1IDA4MzU3ZDk4NzgyYjlkM2U5YWFlNmQ3NzA5MjYyYzViNTNlMjI2NTEgcHkzaworNzc3NDYgMjM1OTMzZDRkYThlZGUwOTNjM2RjN2QxODg0ZjhhMTI1MzMyNTc2OSByZWxlYXNlMzEtbWFpbnQKKzc3NzQ3IDY5ODVjMGU4NWI0YmM4YWNkNTUyNjYzNzFlMmVmYmMyNmNmNTZlMDkgcmVsZWFzZTI2LW1haW50Cis3Nzc0OCA3OGMwYWMwN2FhOWViMjc2ZTY1OTJjZmNlNTVjODUxZDZhNjEzN2E2IHJlbGVhc2UzMS1tYWludAorNzc3NDkgOGRkNDlhODZhZGFhNTQ4MzFmYTk5ZjE2NWJhNTk2MWEwYWM2MmJhNCBsZWdhY3ktdHJ1bmsKKzc3NzUwIDc3MjM4OTUwYzZkZDQwNWY3MjZiMTIzN2VmYjc1ZTNiOTQxZmQ1YTIgcHkzaworNzc3NTEgMWYxNjVjNDQwMzA2NGI0MWVlNjdlOWFiN2YzNjU2ZDczZWM4N2MyNyByZWxlYXNlMjYtbWFpbnQKKzc3NzUyIDYyMDg4MzZmZWRmOTlhNTQ2Mjg0NmI4MzU4ODc2YmFiZjliOTM2MDcgbGVnYWN5LXRydW5rCis3Nzc1MyAzZTBmZWQyNWMwYWU1OWM3ZDA3MDZkMzRjMGY3YWRmMDJiMzIwMjYwIHJlbGVhc2UyNi1tYWludAorNzc3NTUgMjJhZWExMzFiNmFmYzE5MTljZDc3NTAxZjVhZWM3Njk2YmFlNzg0YSBsZWdhY3ktdHJ1bmsKKzc3NzU2IDJiZGU2ZDRhMTBlZGVkZmE1ZjZlMGY3ZGE3MWY2NjM1OTllM2FhMWQgbGVnYWN5LXRydW5rCis3Nzc1NyA3NDExODdiZmM2MTAyZWU1MTI0NzBjYmRkZWM0ZGMxOTVhNDgzYmM5IHJlbGVhc2UyNi1tYWludAorNzc3NTkgNTgyNjZmMWEyZTdmM2UzNjE2ZTExM2IwNzZkOTkyNzZlNmY3MDJjNyBsZWdhY3ktdHJ1bmsKKzc3NzYwIGIyNWI3OGNlNzk4ZGM4N2VjYzdjYzAxOGVjOTIwOGZjZDY1ZGI3MGUgcmVsZWFzZTI2LW1haW50Cis3Nzc2MSBmOWZkMTc5NWZjZjc0ZTEzZDkwOTJiNmE3OWMwMzQ0ZjY4ODA5NjFmIGxlZ2FjeS10cnVuaworNzc3NjIgMTBhZDdkOGU1ZDE3MTVhNTQ1Y2UxOWRiMzVmNjE5OGYyODkxMGRjZiByZWxlYXNlMjYtbWFpbnQKKzc3NzYzIGJjMmI4OGJlYWU0NWRhOGQ5N2VkNTg1Y2ZlMWU2Mzk0NmE3MTk5ZDUgbGVnYWN5LXRydW5rCis3Nzc2NCA5MDdmZjEzYmQ0ZTJlMTQ1NjM2MzA2ZGMwNjQxMmYyNmM0ODAwMzUwIHJlbGVhc2UyNi1tYWludAorNzc3NjUgNzM3OWNmNzBmZDYwM2FmNWY4ZWNjNzc5NTBkMTI3MmM0YzRiYTQ3ZCBweTNrCis3Nzc2NiA4MjMyYjEwZTM0ZTEzODhiZGFlYTMyOGNhM2MxN2Q0NGFmMjQ5MmI3IHJlbGVhc2UzMS1tYWludAorNzc3NjcgOTJlNmU4ZDkwNGEyOWVkZWMzMGIwOWI4OWQ0Yzk1YjJjMDI0MmNmOSBsZWdhY3ktdHJ1bmsKKzc3NzY4IDNjMGNkN2E3ZGI4ZWUzMDE3MWNjNGJkMDRmNzczMzI5YzNkOTU4ZmMgcmVsZWFzZTI2LW1haW50Cis3Nzc2OSA4MDU2MjA1MWJiNzBhYjU3MTA2NTIxMTg5ZDU4M2MxZWYyZGQ4YWNiIHB5M2sKKzc3NzcwIGQ4MTVkZDJmYjViZjkxODYyNzM0ZGE1NTVkNGI1NTE2NjRhNzE1ZjYgcmVsZWFzZTMxLW1haW50Cis3Nzc3MSAyNzQ2YzIxN2RkOWUwYTg0Y2RhNTdjOTMxZTRkM2ExNTJjYTVmYzEyIGxlZ2FjeS10cnVuaworNzc3NzIgZmRlOTcxOWUyMDU2ZjQzYWVhNTYzNjJiMWMwMTQyMjdiMDEwZGQxNCByZWxlYXNlMjYtbWFpbnQKKzc3NzczIGRmMzM1OTkxODUxN2QyMTYyYTNiOTZiZDczNzY2MTg3Y2NjY2I3NDYgcHkzaworNzc3NzQgMGRkZjhkOTY5MGU1YWU3ZDFkMjRiZGVkY2E4NmEwZjlhNmMzMGVjZiByZWxlYXNlMzEtbWFpbnQKKzc3Nzc1IDY3MjZhZWI4NjdiOTAwMjBjYWRiY2I5MDhmNDk4NDE4ZjI2MDVjNWMgbGVnYWN5LXRydW5rCis3Nzc3NiA0OTgzMTFmZDg4MjJjZTc5YWNkZTQ5ODQwMDU1NWE3MmFhZTdmM2FkIHJlbGVhc2UyNi1tYWludAorNzc3NzcgMzRlMmQ1MTYyY2U5M2MyMTIzMjFmODdiYmE1Yzg1MDNjOTU4M2I1YyBweTNrCis3Nzc3OCBhZmQyMGQzZDg1ZGM4OGY0NmNiY2I0N2NiMjQyZjRhMzE0YTFhMTA5IHJlbGVhc2UzMS1tYWludAorNzc3NzkgNzVkMjRiMjQ1MmE1OWIzNTZmNGNkZjRkYzAwMzI2ZjhlOGJhZTFkYyBweTNrCis3Nzc4MCAxMjA1NDYzNDZmOTM5Nzk0NjA0ODkxNGNkM2FiZjI1MTNlZTIxMjg5IHJlbGVhc2UzMS1tYWludAorNzc3ODEgNzQ4ZTI4MmUwOTFjZTQzZjZhMjc1NGY3ZGI4ZGQzMDk4ZGQxMjYzZCBweTNrCis3Nzc4MiAxZGQ4MjMyZDRlY2I5ODFjNDU0NmQ4YWQ2Y2IxMjU1MGRiNjgxODA3IHB5M2sKKzc3NzgzIGQ0ZTIyZmQ1MjhlMmEyZTI2NTE3OWExNDFkNjc5MzVmNmFkYmRlZmMgcmVsZWFzZTMxLW1haW50Cis3Nzc4NCBmNmY5ZWU4M2VjYmYzYzQ3NWZhNDU3OTEzMmE4MGUxYzU0MDVmMzliIGxlZ2FjeS10cnVuaworNzc3ODUgZGM3MTQ3ZDFiN2Q5NGRiZjI5OTNhMGM4YWMyZTFhMTY0ZjVkM2Y1YyByZWxlYXNlMjYtbWFpbnQKKzc3Nzg2IDk2ZDVjNzAzMTQ0MDUyOTM1MTg2OTg1MTlmOTAwMjk3NzM4ZDdkMjQgcHkzaworNzc3ODcgZTIwZTAyZmMxNDQ3ZmM3MzJlZTU3N2QxYTViM2ZkNTJiNjhhYWU1OCByZWxlYXNlMzEtbWFpbnQKKzc3Nzg4IGFkN2E2MTU3NGJkNjg5ZTYwNjgzNzNlZWQ5NTE4N2E4NWM4MTY3ZTUgbGVnYWN5LXRydW5rCis3Nzc4OSA5NTc1Y2UwZGIyMDQ3YzFjNTY2YWE2ZTk4OWQ5NjEyNmEyYmU5YjE1IGxlZ2FjeS10cnVuaworNzc3OTAgYThhNGJjNjliZWExMjI1MGRmZjUyZmZkYTBkOTljMTZiMmJmY2JmZSByZWxlYXNlMjYtbWFpbnQKKzc3NzkxIGU2NjBjYjUyYmYwMDYwZGNjNzFiMGE1OWY3YTg4MGYzZWExMDFlYjggcHkzaworNzc3OTIgMmJmZWVmNjI5OTM2MjgwNDQxYjJiZTYzMzk0NWZlZGUxNTk5MWI5YyBweTNrCis3Nzc5MyAyMDA3MDg4MGVhNDgzMzRiMWZjZTE0NzkwNjAyZDQ3OTkzZTA5NTk2IHJlbGVhc2UzMS1tYWludAorNzc3OTQgZGViZTYxNjczYThiMTA1YmViYjIxOGIwNzUxYjc4ZmNkN2JkNjhjNCBsZWdhY3ktdHJ1bmsKKzc3Nzk1IDdhMzZjYTA0NzQyZGE5YjI4YzY0YzFmMjNmZTU5NDQ5YTJiZjU5ZmIgcHkzaworNzc3OTYgZjk4OWY0ZjMwMjQ1MjI3ZDlhMTk0MTVmZjUwODAxNzc2ZTk5YWE0OCBsZWdhY3ktdHJ1bmsKKzc3Nzk3IDRmOGIyYTE3M2M4ZGM1YzNhNGVkZGQwNjBkNDU0ZTNhNmU3OGY1YjAgcHkzaworNzc3OTggMWEwMDgxYjg1YzA0ODk1ZGFlMjdlMmZmNzkzOTdhZmU1MTRkMjJhZCBsZWdhY3ktdHJ1bmsKKzc3Nzk5IDAxMWQ5NjdjMWEwNDk2NmIwZGVmMmQzYjdmNDkwMDU4YTFjOWFiODcgcmVsZWFzZTI2LW1haW50Cis3NzgwMCBmNDFkMzUzZWI2NjAyNjZkZmY1YWM2Y2U3NzQ1NzgxY2I1ZmYwYzkwIHB5M2sKKzc3ODAxIDZhNDc5MmNiZjRjOWYzNjlhNWU0YWM4YmU1ZmRlODdhZjljMWVmNGUgcmVsZWFzZTMxLW1haW50Cis3NzgwMiAwYmQ2MTZkZmM5Nzc4NWEzMTE2ZDg3YTdmNThjMDE1NDhhNmY5ZWNjIHJlbGVhc2UyNi1tYWludAorNzc4MDMgN2ZiNzY0NGEwYmM2OGE3NTg5ODU1ZjU5YTM3NWFiNWM5ZjVlMDJhMCBweTNrCis3NzgwNCAzZjM2YzllNmE1YWY3ZjI0NDU2NTBhOTc4NzNlNTI3ODAzYzMzODY1IHJlbGVhc2UzMS1tYWludAorNzc4MDUgMWFiYzIxOTFiZWFmNDk0YzkzYTZiYWZmMzI1NGQ5ZDFiZDEzY2YyMiByZWxlYXNlMjQtbWFpbnQKKzc3ODA2IGE1ZTY4YWI3ODk1YmQ4MWM2N2ZkMDAxNGRmNzUyMTJlN2YyMzU1ZGMgbGVnYWN5LXRydW5rCis3NzgwNyA2NzEwYTQzZjE5M2YwZjg0ODBkODMxYzlkZTVmZTdjNjg0YTYyYjFlIHJlbGVhc2UyNi1tYWludAorNzc4MDggNGNmNWFlNzBjYjExOWViMmI0YWJlYzJlZGQyOGMwOTAwMjdhZTQ1NSBweTNrCis3NzgwOSBmNjA2NDc0YTIxMGQxY2U4YWMzYzkxZTRiOGZkZjU4ZmFiYzllYjYwIGxlZ2FjeS10cnVuaworNzc4MTAgMjQ1ZjM2MjgyMTEzNmM3OTBmNjBkYWM3M2JjYjZjMmY5YzkzYzIzNiBweTNrCis3NzgxMSA2NThlYjVhZTQ2MTU4MTI2MDI2ZGRjYTlkYmFlNmYxYTQ1MDhiYWI1IGxlZ2FjeS10cnVuaworNzc4MTIgODJhZDc4NzExZWRiNTI5ZDNlYTViMzhjYmM0NjE2NDhkNGFjY2ZiYSBsZWdhY3ktdHJ1bmsKKzc3ODEzIDMyMTg3MGI1ZDAzMGFkMDY1YzVkMjBjZTE5YjhkYWQ0NjVmOGM1MTQgcHkzaworNzc4MTQgZjJmNTlkN2I0NjE0NjBjYTA1ZTYwYjQwMTg4YWJlMGM1MGNhMmFmNyByZWxlYXNlMjYtbWFpbnQKKzc3ODE1IDU0NzI1ZTJlOGFkZDBlOTE0MWU2ZDYzMTkwYmM0NmM0ZjA0YzBhZjcgbGVnYWN5LXRydW5rCis3NzgxOCA1YWE5MDI0OGE5OWY4ZmFlYzc5Y2UxOWQ4OTM1NDk0NjdjODQyNmFhIHB5M2sKKzc3ODE5IDM4YjkwZmUzNDYyMzdlOWE5M2MwYmVkZDdiNDYxMTIxMTY3NjZkMzIgcHkzaworNzc4MjAgMGQ0YjA1ODlmYmM3MjMzMjU4MDBlNmNjNDQ1ODczMjdkZmU0YzRlNSByZWxlYXNlMzEtbWFpbnQKKzc3ODIxIGM1Nzk5OGUzYmUzM2FmOTJkMWExYjhkMmFkYTNjYTk0ZDQ3ZTI0MzcgbGVnYWN5LXRydW5rCis3NzgyMiAzY2U4NjBiOWU3MzIzN2E0MmY5ZDg1MmYxOTFkY2ZlYWU3MTFkMmRiIHJlbGVhc2UyNi1tYWludAorNzc4MjMgMmIwOGRlOWExZmEwMTIwMGY5MDljZTQwZjNiMzIwYzUyYmFmYzZjZCBweTNrCis3NzgyNCA2ZGU2NDg5NmM2Zjg4MTgxZTIzOTMxN2ZjNGJiMjM0YWFkNTkyYmQ4IHJlbGVhc2UzMS1tYWludAorNzc4MjUgMmRhYjQ3NjA2YWI2M2NkYTgyZWY5ZDNmMjIxYWNmMDE1ZTFjYzY0YyBweTNrCis3NzgyNiAzYjY1MDY4MDg3YzYyZjUwODJmMjM2MTRlZmE3ODZkNjBlZDZmZjg4IHJlbGVhc2UyNi1tYWludAorNzc4MjcgMjBmMGRhMzFmYTJjZDc5YjNkMDE4OTMyMGViNzZhNWZiYjUwMmUzNCByZWxlYXNlMzEtbWFpbnQKKzc3ODI4IDg3OTEwMWEwYjU3OTcwMjUxZTlmZDM1MTc5ZGQzYzE3Njg1MmU4MjEgbGVnYWN5LXRydW5rCis3NzgzMCAyNzVjZDlmZTA0ZjFiZjk2ZDUxZTg4N2E0MzBlZTllYzAxNzM1ODkwIHJlbGVhc2UyNi1tYWludAorNzc4MzEgZGRlMjBhZTY3ZjlmMzNhYjA5MGI5ZjQ1YjIyY2I3Yjc4ZGU4NTM4NiBweTNrCis3NzgzMiA4ZWYyNTIzYzNhNWM1NzIxMDIzYzI4YTJjN2VhYWNiMjgxYWY2MjAxIHJlbGVhc2UzMS1tYWludAorNzc4MzMgYTJjOTE3Mzc4NDExZTIzZWE5OTEwYmI4ZGZiNmZlNDM2ZWY2OTg1MCByZWxlYXNlMzEtbWFpbnQKKzc3ODM0IDYwODUzYzFhYzU2MmQyNTk4OTBkZGY0NzI1OGI1NWZkNGRjMWJmODEgbGVnYWN5LXRydW5rCis3NzgzNSBlYmY0ZjIyNmFlZWY5ZGViZmU2YmQ1NDg4YjNhZDhmMmEyMTcxNzc5IHB5M2sKKzc3ODM2IGQwMTQ2MjNlY2Y3MjBjMmRmNDUwOGVjMWFjMjVjNzVlZTBiODE0NjMgbGVnYWN5LXRydW5rCis3NzgzNyBmMjBmOGZjNmNmYWUzNDQxZDAxOWU4YmJmNDYxM2IwOTE0NzIxMDc0IHJlbGVhc2UyNi1tYWludAorNzc4MzggZDZmYjM3OGQ3NjVhZjkxNWUzZmIwZjIxN2ZlOWRiZDIxMGIzYTkyMCBweTNrCis3NzgzOSAxMDllYzA2YmJjZjFiODA1MTFmNDQ3MTc4YTdiYTk0YWY0NTI4OTZmIHJlbGVhc2UzMS1tYWludAorNzc4NDAgZTBhZDFmM2M5MWFmMjJjY2FlOWRkMzYwMmE4OWRkZGI1MThhYzM4ZCBweTNrCis3Nzg0MSBiZmMxM2NlNjJmYWIwZGI0MmQyZTU5OGNjODdjMGY5MDIyNWE4ZmE4IGxlZ2FjeS10cnVuaworNzc4NDIgNjI5NWUxNjMwM2E3MTgzZDZjNTNlZDFiYmU2MzdmYWM3ODAyZWYwZSBsZWdhY3ktdHJ1bmsKKzc3ODQzIDU4OTNlZjlhOWI4NGJmODhiMGExZGY4OTQ5NmNkMzE4NzZkZTQwYzMgcHkzaworNzc4NDQgZWZjMjAzMGNlNmIxNmQ4OGVjMzhhMTIzMWYwYTFiNzQ0Zjg4N2M3NyByZWxlYXNlMjYtbWFpbnQKKzc3ODQ1IDc0NTBlMDNhNTAxZGJiOWJmN2MxYzI4ZGE4YTlhNzJmZGYwMzcyZTIgcmVsZWFzZTMxLW1haW50Cis3Nzg0NiA4NmI4ZjRjYjkyM2FjMzM4ZDg0OGJlZTA3NTIxY2VhYjUzNmQ0NmM2IGxlZ2FjeS10cnVuaworNzc4NDcgYzBjNzZkNDhjZDJiOGVjMTk4MmZjOTQyZjk4NDkwOTBkMjdmMWZlYyByZWxlYXNlMjYtbWFpbnQKKzc3ODQ4IDVjNDdjZDE3MzZjMTYyYTBkNWFiMWMzMWQyMDUzMTg4MWFmMTEyN2IgcHkzaworNzc4NDkgZDM0ZDNiOGY5ZGVlNGUxN2FiMzlkZWZlNTU0OGJlZTY3MGRkZmM4ZCByZWxlYXNlMzEtbWFpbnQKKzc3ODUwIDM5MzMyYzBhZjg1NjVlYTk0YmIzOTkwY2NmNWM2NTRhZTIwMjQ1YzMgbGVnYWN5LXRydW5rCis3Nzg1MSA4MjRlNWVjZjkwMjI1YjU5ZjM2MmQ2NzkxZDllYzQyYWUyOGM1ZTExIGxlZ2FjeS10cnVuaworNzc4NTIgOTM0ZDQ5NThhNDE1MWFmZTU5ODYzNmEwYWNiOTIwN2E4NzE1N2RhYyBweTNrCis3Nzg1MyBkNzlhYTViNjY5NzFjOWYxYzI5MGFkZTE0MzBmNTAxNWVhMzliYzhlIHJlbGVhc2UyNi1tYWludAorNzc4NTQgMDE5ZjUyYWUwZmU4Y2NiOWZiY2JkNGQzYTQ5Yzg5MzVlMDg1Yzg3ZiByZWxlYXNlMzEtbWFpbnQKKzc3ODU3IDJiZjczNTdkMTIyYzI2YzEzMTk4ZWRiOTg4ZTFhNGY1MjJmNTM0ZTEgcHkzaworNzc4NTggZDIxYjA1ZmY5MjBhZmFmMDIzZGE2NTJlY2ZhOWQ0Y2Q2YmUwMWUxYiBsZWdhY3ktdHJ1bmsKKzc3ODU5IDVhN2Q3ZWViODhjMTEzMjVhNWRkNTNjNDgxZTc3Mjg3OTkzYWU4NzkgcHkzaworNzc4NjAgMDkwZmMzOWNlNWVjMzVkZDVhNDJmMzYxYjA3ZmVlZTYwNzE4NDc4YSByZWxlYXNlMzEtbWFpbnQKKzc3ODYxIDk3NmVjNDVkOTA5MGFmODRkOTBkNDgyZmFhNTQxNzVhNGVhYzA4YWYgcHkzaworNzc4NjIgNjkwOGJhNDQ1ZDJiMzVjMzkwZDgxN2YyM2U3Njk0OGNkNDUxYzVlYyBweTNrCis3Nzg2MyBmNTYyMDdiOTM2Y2MzNTk0ODViNGE4ZGU2YWVhNTFjNDQwMGQ2NDMyIHJlbGVhc2UzMS1tYWludAorNzc4NjQgZTk1NjU3MGJjM2I5ZjA0ZDlmOTU0NWJhN2NkMzc4OTZmZTdjYzAxOCByZWxlYXNlMjYtbWFpbnQKKzc3ODY1IGZjNWVjN2UwNDE3NzNjZmI1MmYyMzgwYjlhNGIxNTk1YmMyN2Q3ZGEgcmVsZWFzZTI2LW1haW50Cis3Nzg2NiBmZTA4NmFiYjRhZWJlOWU2MDkwOGE1NWNmNTIwZWEwZGE3MmY0MGMyIGxlZ2FjeS10cnVuaworNzc4NjcgNjhjNTZjNGI4NjMxY2JkOWM4NzcyNzM0NDlhNWY2ZWUyZDYxZTkxNyBsZWdhY3ktdHJ1bmsKKzc3ODcxIGYwYmM2ZDhhYTIxZTAyNTNjMmQyZGRlY2YwMWViMDhhYzc5NDFmY2EgbGVnYWN5LXRydW5rCis3Nzg3MiA3MDk4YTQ2ZjBiNzVlNWFhY2ZhZjgxZDY1ZDcyZTM2MTNiMDIzNTMyIHJlbGVhc2UyNS1tYWludAorNzc4NzMgMzhjOWNjY2JiZTVhNGFjZDQwMDUxNTdhY2ExZjZjZTg1OTQyMWYwZSByZWxlYXNlMjUtbWFpbnQKKzc3ODc0IGEyMDQ3NzRkOWM3MGJkZGMyY2ZiODA3NTc1YWQ1YzQ2YmI4YWE4NzQgcmVsZWFzZTI1LW1haW50Cis3Nzg3NSAyZGRiZTYyYTY4MjBmYTVkN2I3MjM2NTU4MjQ4YzQ2YjA4ZTQ3MDQwIGxlZ2FjeS10cnVuaworNzc4NzYgNmU2YjU5NDEzYTEzODk5Yjc1ZGZiMWIwYzlhOTdiMjhlYzc2MjBkNyByZWxlYXNlMjYtbWFpbnQKKzc3ODc3IDU2NmQ1Yzk1N2MxOTc1OTcyMzUzN2EzNzk5ODcwMTFhMWY2OThkNDcgcHkzaworNzc4NzggY2UwZDRkYzQ4OGQyOTA1ZGNhMTkxZmQzZWM3NDBkNTM2YzIxN2RhZiByZWxlYXNlMzEtbWFpbnQKKzc3ODc5IGY2Mjg0MmMyNWJkODMzZmQ2NjE3Mjg2ZDBmM2NiNGFkZTE5NmZjNDIgbGVnYWN5LXRydW5rCis3Nzg4MCA2YjMzZWE5NDg4OTY2MTgxMWUwOWY2MjgyZjk4ZmNjNGNmZmEzNzEyIHJlbGVhc2UyNi1tYWludAorNzc4ODEgZmQ1ODAxYjgzODhkMTU3MjJhMDQ3ZmNlZDQ4ZWI3ZTA3MGU1ZTkxYSBweTNrCis3Nzg4MiA5ODFhMzlmMzU5MTRkNDBjMmI2NGU0YzIzMGNjNTZiNzJjYWMxYzU3IHJlbGVhc2UzMS1tYWludAorNzc4ODMgNjliZmZhM2M3ODJlMzI1ODk0ZWY1NWZjZWE2OGY1NWVhODA1OGMwOCBweTNrCis3Nzg4NCAxZTQ3YmQ2YmJlZDU0Zjg0NGRkZDJhYzJjZjlmMGMxMmVlYTJmNTM5IHB5M2sKKzc3ODg1IGE3M2I5MmQxZTlmZDU4MmU3NWFhMDZiNWYzODRmODg5YWZjMTg1YzUgbGVnYWN5LXRydW5rCis3Nzg4NiAwNTA4ZWFkMThkNmY1YTA5MmU5ZDk1MGM3MmMxNDY3MDU1MDllZWYzIGxlZ2FjeS10cnVuaworNzc4ODcgNTZhMjIwODI3MjA5Y2JiMzNkMjBkNDQ1MTM3OThiYzI5ODNjYTBjNSBsZWdhY3ktdHJ1bmsKKzc3ODg4IDE1OWRhOWE0MmZlZjFjNmFiMDJiOTJmYmNjMDYzNWJlMDI1NDM0NGMgcHkzaworNzc4ODkgYmNiYjkwNDhmNDgwMzczYWY5YzhiN2IzNGMxZTNmZGU5ODFlNmNhNCBsZWdhY3ktdHJ1bmsKKzc3ODkwIDc3MTMwZjJmZTk0NGU0YWNkMTBmMDM1YjY3OTRhNDJkMTJiMWVhOTEgbGVnYWN5LXRydW5rCis3Nzg5MSBlZjU2MzljNzE5NjQzNWNlMGJlN2U0ZTMxMWZkMTUzYzViZDViMzNlIHJlbGVhc2UyNi1tYWludAorNzc4OTIgMjQ2NjVhOWQ4ODFhZGUyNTY5N2E3NGM0ZDE5OGRhN2VkZjQ3ODc0NCBsZWdhY3ktdHJ1bmsKKzc3ODkzIDc1YmIyZjE2OTFjMGVhOThiMTc2ZTYzMmZiOTAxMTRiM2JmYTNjNGYgcmVsZWFzZTI2LW1haW50Cis3Nzg5NCAzOGUzMDdmYjgzOTg1NmFjOTcwZWZiYzJjNzBjZmZhNjdiODRkNjE3IHB5M2sKKzc3ODk1IDMxMWRiN2E2OGE4MjkzNmQxMzRhZGQ3NDc3NjgyZGFmN2RkMzFjNzIgcHkzaworNzc4OTYgYzdlMzJiNGUzODc0YmJiY2UwNDgzODhkNWVmMzlhZGZjYjEyMjQ3NSBweTNrCis3Nzg5NyBkODg3ZGI1MDFhMjIxMWFhMzRkNzFlMWJmNzBhMWZmM2VhOTNhMzUxIHJlbGVhc2UzMS1tYWludAorNzc4OTggZmQyNGRlZGJhNTllYTVmMGUwMTNjZDA5YzVlMTBhNDcwYjk2NmQwNSBsZWdhY3ktdHJ1bmsKKzc3ODk5IGIyZGJmMTFlMmFjNGNlZjA0NWQwM2VhYzQ0ZTlhYjMwNTY5NDk1ZDggcmVsZWFzZTI2LW1haW50Cis3NzkwMCA4NjA0ZTlhMjU3Y2M4ZmNhODUwZGRiNjJkYjY2NjM1OTYzYWJjOWUyIHB5M2sKKzc3OTAxIGM3ZGNiZDY1YzIxMzUyM2UzNDM2ZDU2ZDk4N2RmMDg3ODVhYzRjM2EgcmVsZWFzZTMxLW1haW50Cis3NzkwMiBjOTc5NTdmNWNkZjkyNDVhMmU5NDg4NGE3ZmUzNjMwZjA5ZTZmMjBhIGxlZ2FjeS10cnVuaworNzc5MTAgYWY0OThhYjJhZmI0YTVkMTZhZDU4NmE4YThjMjk1ZDM2OTdjZjAyNiBsZWdhY3ktdHJ1bmsKKzc3OTExIDY1MmUwYjc0ODg1YWM3NzgxODIwYjA3NWRkYmZlMjhiNGQyYWM0NTAgbGVnYWN5LXRydW5rCis3NzkxMiBkMDUxNzc5YzViYmQ2ZGFkOGY0NGU5Y2ZlOTMwZThkZjUyZWM1NGFiIGxlZ2FjeS10cnVuaworNzc5MTMgNWJhZGViZGI0MzhjZWY3NTViYzBkNDQ0YjU2YTVkMzI2OWJmODY3ZSBsZWdhY3ktdHJ1bmsKKzc3OTE0IDRjYmZmMDEzOWY1YjgwODlmOGEwYThjZDcyMWU1M2E4ZDc4Y2YxOWIgbGVnYWN5LXRydW5rCis3NzkxNSA1MjViNmM1ZDViMTJjY2ZhNjZlZjQxZmRlNjUyMGVjYjNlZDgyNWE3IHJlbGVhc2UyNi1tYWludAorNzc5MTYgYzM3Zjk5YjU0ZDdjZjQ1M2U5MmY2Mzk3OWNlZWE0NGIwYThhY2ExOSBsZWdhY3ktdHJ1bmsKKzc3OTE3IGM3NzAzYjY0OTUxNmI3MzAzNjBiYWI0YzE2NDNkNzNkNWEzM2M5M2MgcmVsZWFzZTI2LW1haW50Cis3NzkxOCBjZDAwYTk0MTg2YzkzNDk3N2E1M2FmYzQzYTIxNmY5M2EyODY3NDgwIHB5M2sKKzc3OTE5IGYzZjA4ZWU4M2M1NTg2MzhhZGQ0YWMyMzUzOTI0ODViNzIxMjA3NzYgbGVnYWN5LXRydW5rCis3NzkyMCBkZjJiOWE2ZDI4YWVmODViOWEyZTU2MjY0YTgzODA2YTM2MGFhMDYyIHJlbGVhc2UzMS1tYWludAorNzc5MjEgOTkyY2FlMjQ2YTBjN2ZhN2RhZGIzMWM5Njk2OWYzOTVmYjE2ZGU4MyBsZWdhY3ktdHJ1bmsKKzc3OTIyIDdjYjE0YjUyMmY4MWNiYzZiMGU5OTc5MzFjZjBkN2RmOTYwNWFlNGQgbGVnYWN5LXRydW5rCis3NzkyMyA2ZmQyYjgxNDdmMmEzN2U1YWFjYWE0MDU4ZGY2NDQ2NTYwYWJkMTI0IHB5M2sKKzc3OTI0IDAwZDc4MzhlYWYzYWQzNmU3OTllZjYzMzM0M2EyYzIxZDExOWRhNGYgcmVsZWFzZTMxLW1haW50Cis3NzkyNSBkMzEyN2Y2ZGUxNmMwODdkOTFmZmRkYWNmMWU0ZmI3YTcxYWVmM2UzIHB5M2sKKzc3OTI2IDdjZDE4MmJlZTYzMGMzMzUwMzJkOWM0OTYxMjgwNWNiZDJkYWQ1NmYgcHkzaworNzc5MjcgMDhjZjRiMzUzMWM5NDY0OGUwZWQ4MTY5ZjA4YjM2YjdiNzUzMDAxMiByZWxlYXNlMzEtbWFpbnQKKzc3OTI4IDM4MDk0Mjg5MmRjMGUwZWJhMzllZjQzZTkzZmQyNTlkZTMyYTEzYTcgcHkzaworNzc5MjkgYjdmZWNlMTViYTVmYjk4NzQ4NTRkZmYzOGQ3YzA1MGEzODk1MDkxNiByZWxlYXNlMzEtbWFpbnQKKzc3OTMwIGI4ODhkYjc2NDVhYThjZmYyN2VlNjc4NzAxM2MzNzA5MGI3NGI2NWEgbGVnYWN5LXRydW5rCis3NzkzMSBlYjk4N2M5ZGYzNzhmYzQ2Yjk4NzNhYTMzOTVjZWQzMDljZDU1NDk0IHJlbGVhc2UyNi1tYWludAorNzc5MzIgYTg3ZmNlMDNhMzRkZDIwNDQ5NzhhYWEwNmQ5MTRjNzAyNjczMjBkOCBweTNrCis3NzkzMyA5NjdiZmQzNjk3MzY2OTczMTEzZTA3MDJiMGJlYzY1ODkyMWQyZWQzIHJlbGVhc2UzMS1tYWludAorNzc5MzQgOWIzNTFjYjllZjk4MzM5NTRlZDQwZmQ5NzFkN2Q5MTc3OTZkNWYxYSBweTNrCis3NzkzNSBlZjgxNzg0Nzc1NjdmN2MwNGE5Y2IyN2NmN2M2YWIwNGU3YjQ2MjEzIHB5M2sKKzc3OTM2IGNjYzZlNWQ1YTNiMzg3OTBkNTI3N2Y3NGE1M2M0YjkyY2ZlZmY2YTcgbGVnYWN5LXRydW5rCis3NzkzNyA5OTNmNzAzYTYxYmFlMDhlOTEwY2E3YTdiODZhNTIwMTg4ZDA4ZDQ0IHB5M2sKKzc3OTM4IDJiMWQ2NjVlNjYyODQ2ODZjMDUyOTllMDJhNzBlZTEwMjc5YWM5ODQgcmVsZWFzZTMxLW1haW50Cis3NzkzOSBkYWJiNzczNDg1MDFhYTE2ZDI2YTZjMGIwOTk2YWM4MDQxOWFjZTZjIHB5M2sKKzc3OTQwIDU0ZDAyNWIyZjQ1YTlmM2UxN2UwMzZjNDg2NjZlYzBkZDNlNGRlNjMgcHkzaworNzc5NDEgNzJlY2ZmZmU5ZjAyNTY2YWM3NmI5ZTBjYTQ2NmUxNWFmYWFjOTQxMCBweTNrCis3Nzk0MiBmZjA0MDg4MGQxYmU5ODQ5MmFkZWJmNzU4YWY5N2FmOTdhMmQwZmE3IGxlZ2FjeS10cnVuaworNzc5NDMgNDU4N2IwNjJiOGQwNjVjYjc5MDZkZDQzZDUwZDg4MTk4NWRkYjdhNCBsZWdhY3ktdHJ1bmsKKzc3OTQ0IGNlNGI4NGMwMmU1YTc1NTZjODRmZjljNmU4ZjhiNWYxYTM0MWRlNWQgbGVnYWN5LXRydW5rCis3Nzk0NSAzMjM0NGM1Y2Y5MzJlYTMyNjg4MmFjYzExY2ZiZGNkZTVjMTYzMGMxIHJlbGVhc2UyNi1tYWludAorNzc5NDYgNzQ0MmRiNTQ3NjQ1ZTIwZTM0YTBjYWNlZTMyZjc0OTM4ZGMzNzFjNCBweTNrCis3Nzk0NyAwZDdlNWVkYzQ1MjY4MDg3MTkyM2NlZjc4NTViNjkxMzE4MTIyOTcwIHJlbGVhc2UzMS1tYWludAorNzc5NDggOGQ4MDVjNmMyZGIzN2JlNjc5YzVmYzEyY2NiNDNmMjc3MjA2NDc3ZiBweTNrCis3Nzk0OSAzOWM4YjQ3ODI0YzUwOTE1NDY4OWJjNjM5YTVkYTNkYmZlNWI4NDNhIGxlZ2FjeS10cnVuaworNzc5NTAgMWM3ZmVhYzBkNmQ2Mzg4YmM2YjZkYTJlMWVjYjc1NTRlOTAxY2NmMyBweTNrCis3Nzk1MSA4YTJlYjc3NjEyMzA5NzBhZGFhY2QxMDkzYzJkOGE5ODM3MjFjZDFiIHJlbGVhc2UzMS1tYWludAorNzc5NTIgNGFlOGI5Y2E0MGZmZTdhY2E3MjA5ZjZhYjQwMmQyMGY0ZTcyYjEzNiBsZWdhY3ktdHJ1bmsKKzc3OTU0IGQ3NWY4ODdkYTc3MmY4MWVjZDQ2MmNhNmQ2NzI3NjJmMTBmMWQxMGYgcmVsZWFzZTI2LW1haW50Cis3Nzk1NSBhNjRhMDEzNGU2NmNlMDg5YzVlMTQyMjUwOTRkNzdhMGE1NTNkODM1IHJlbGVhc2UyNi1tYWludAorNzc5NTYgYTdhNzcwYmNlOTNkMjVmMTQwY2U2MWUyODM2NWRmYmViZmM5ZDk3ZSBsZWdhY3ktdHJ1bmsKKzc3OTU3IDMwZTQyNDZlZTgwMzI4NTA5MTRkMzEyZWEyMDA3YjA3YmMzZjIyODUgbGVnYWN5LXRydW5rCis3Nzk1OCBmYmExYzc4ZjEwNGU5YzM5NzkzNzk5ZDY4NWI0ZmZiZWQyMWE4NTZiIHB5M2sKKzc3OTU5IDNjMTg4ZWQ4ZTUyMWVlMzdjNDE0ZTEzNWYwZWNmZDJkNjkwMmMyZGEgbGVnYWN5LXRydW5rCis3Nzk2MCA3MDNhMDRlMjljZTYzNDIzZTE2ZGExYWY0NmZlMjVmZWUwMmJmMGU4IGxlZ2FjeS10cnVuaworNzc5NjEgYzcyNTRlOGJjMWRiZDFmZDQxNzgxNTJhYzVhZTgxNTE3ZmIwYmM3YyByZWxlYXNlMjYtbWFpbnQKKzc3OTYyIDBjMmIwODk4NjQzZTI5NmQxZWZmZjYyM2NiNTY3NjQzNTJkZWVkMWEgcHkzaworNzc5NjMgNTE0YjU2ZWZkODlhMjQzOWQ4NDhkZjJhMjNkZjRjMmEyYTYxOTU3MCByZWxlYXNlMzEtbWFpbnQKKzc3OTY1IGVlYjhhOTljYTBjNWEyZjhmMTkzZTQ3NzBkYWYzNmMzZTFjZWI1OTIgcHkzaworNzc5NjYgMmY4MjkzOTZhNTRlMzdiZWRjYTkyNGJkZDAwMWEwZWI1NWJjMjFiOSByZWxlYXNlMzEtbWFpbnQKKzc3OTY3IGY0NDE0MjJmNmY1NTc0Yzk1Y2M2MDlmM2U2ZDgzZTViZGNkZDhhZDYgbGVnYWN5LXRydW5rCis3Nzk2OCAzYzAyMDM0OTlhZTUzNWM1ZTU1N2RjZjFjMTQwNDQ2MDU5ODIxYzk0IGxlZ2FjeS10cnVuaworNzc5NjkgYmI2ZjgzYjliYTQ5ZTAyZjIwY2M5ZTA1YmZlY2IzZGRkNDE2M2QxNyBsZWdhY3ktdHJ1bmsKKzc3OTcwIDU0ZTk3NTU4MmM2NTRhODg0NjU2ZTllNjAzYzIxZThhMDc0YmJjM2QgbGVnYWN5LXRydW5rCis3Nzk3MSA0NTFlZDMyY2ZjNTA2MjQyMzNiODk1M2U4YzFlOTA1MzIxZTY1OGUzIHJlbGVhc2UyNi1tYWludAorNzc5NzIgMzdmNjI2NGQxYWEzMzk4OTFiMzZkNjgxNjRiNjYxYmI1YTM0M2IzYyBweTNrCis3Nzk3MyA0YWFiMTRhZjVlMmRmNzIwNWUwYjgzY2UxODUwNjIxMTg3ODE0YzQ0IGxlZ2FjeS10cnVuaworNzc5NzQgMzJlMGYxYWEzNGJjZjczMTIwY2VhNWM0MWI0ZDY3ZjY1ZTIyNzNhYyByZWxlYXNlMzEtbWFpbnQKKzc3OTc1IDc4MTNjNDA5NDJlOTk0YTk0YTNiYjY1NjBjZTViMGVlNzUxY2EzMzYgcmVsZWFzZTI2LW1haW50Cis3Nzk3NiBlZTA4ZmI4MzViZjEyYWE4NTMwMDlhN2I3OGI1NTRiZmFmZDVlNzFiIHB5M2sKKzc3OTc3IDE1MTUwY2Q4ZmQzNjUzNDlmYzRhNGE4NTU1NzU3YzhmYmI3MjZkMmQgcmVsZWFzZTMxLW1haW50Cis3Nzk3OSAzMDRjZThmY2MzMmExZjgzMDgyZmJkZjQ1ZDY1ODc3YWVlM2U2OTQ1IGxlZ2FjeS10cnVuaworNzc5ODAgZGU1ZmE5MjVkZmVhNjE1MTMyODdiMDY5OTMzZWJhNmY1MjdkMzY4NCBsZWdhY3ktdHJ1bmsKKzc3OTgxIDgxZjJlY2QzYjEzZThmZGYyYzgxNzM3OWQwNzEwNmJmODcwZmU3MGMgcHkzaworNzc5ODIgYzFhN2M5NDljMTEwMGQ4ZmFkZGU1MDVjZGI0NjZmZjllZGYzOTUwZCBweTNrCis3Nzk4MyA3NmNmNjBlMmQwMDU3OTZmNjAwMmI1ODA3ZDRiODEwOWM5NGU5MjMzIGxlZ2FjeS10cnVuaworNzc5ODQgY2ZhODdkNDY2YzA0NDgwM2UyMDkxYjc4NmJmNDExZmE3YTZhOTYzZCBweTNrCis3Nzk4NSBiNWFkMjE5MGRjZThjMGY2ZWRlOWJmZmYwYmM4YTY5NzY5NDZiNWZhIGxlZ2FjeS10cnVuaworNzc5ODYgZTFiZGViZDEzNjg1OWVlZGExYWI5MzhhMGVhMGFhNmNmZDA3NDQ4YSBsZWdhY3ktdHJ1bmsKKzc3OTg3IDQyNmNjNWYyYWQyNDIwYTBiYjQ5NjMxMDE0ZDFkZmUyODM2MGE1MGUgcHkzaworNzc5ODggNTU1MDU4NDJlOTczOWVhMGUzZWViODI2OThmMDExN2FjNWYyNzMyMiByZWxlYXNlMzEtbWFpbnQKKzc3OTg5IDdjOTMzNjgzMDEwZGNiMjlhOGUzZjc4MjExYjI0NzNlYmQ3YTI0N2IgbGVnYWN5LXRydW5rCis3Nzk5MCBlYjU1MGU4Mzk0NjA5NzhmMDA2N2VmZDdjYjE2ZTI0NDc2ZmNmZTAyIHJlbGVhc2UyNi1tYWludAorNzc5OTEgNTEzYzRhMjYwMGE4YmUwNzYzNmQ4Yzk0NWM1MWFjY2I0ODVhOTgzMiBweTNrCis3Nzk5MiA1ZTUxODM1Zjg1OTUxMmVkMmMyNDhiYzExMzcyZjJmMTAzMTE5ODlmIGxlZ2FjeS10cnVuaworNzc5OTMgMWNmMTZjZTQxNWVhZTA2ZTQ2MTY5OTBhNmY2YjA0M2FlNGNkMjg5NyByZWxlYXNlMjYtbWFpbnQKKzc3OTk0IGIxMWI4MDMwMjY4ZGRjM2EwZWMwNDcwOWU0ZGEzMmMzYmE2ZmRlMTEgcHkzaworNzc5OTUgOTc5YzNiNjI1MDgzOTdhYzk4NzVlNDgzN2FjMzY0NzhlMjIxN2MwMyBweTNrCis3Nzk5NiAxMWI3YzgxMDgxNmJlZjQ4OTI4N2RiZjI1MzhjMTI3MGVmYmM3YjVlIHJlbGVhc2UzMS1tYWludAorNzc5OTcgMzJhMzYwYjEzZmEzMjA2YWViNDQ0ZmI3OTg5MjM1NzVjZTRmZDdmYSBsZWdhY3ktdHJ1bmsKKzc3OTk4IGNkMzFhOWQ2N2ViMTM5ZjUzMDYxYzQ4NjBmMGI1ZmRhMTIyMWM3OTggcHkzaworNzc5OTkgMjc0MTZjZTYyYWM2YjExNDBiZmMxNTJmMDk5ODlhODdkOWQ4ZDg1NiBsZWdhY3ktdHJ1bmsKKzc4MDAwIGMwM2M5M2FjODE1MWMzMzIxN2UxZmZlMDFjNWJlZTRiYWIwY2VkMWUgcHkzaworNzgwMDEgMmE3MGM3MmI4N2M3ZjEyZjlkMDllYWI4MzIxNzgzYmQ5MjY2MTQyMiBsZWdhY3ktdHJ1bmsKKzc4MDAyIGVkZWE0OGIxMjBlMzM5YmViNWRiYTJmNGFlYjk1MTlmZjY3YjJjZGQgcHkzaworNzgwMDMgM2RkOTIxYTE5MGI4ZTFjNjBmNWNiNjY2MWJmNjg5MTRlN2QzNDJiYyBsZWdhY3ktdHJ1bmsKKzc4MDA0IDQyYWM4Y2IxM2VkMGRmODAzZWYzN2NiM2ZjNzI0ODUwM2ExMGM3YjUgcHkzaworNzgwMDUgYTEzZThkMWQzNzk4YzUwMTgzM2ZlNmE2NjE1YmI0ZTczYjZiODI5OSBsZWdhY3ktdHJ1bmsKKzc4MDA2IGZmMGZjZDUxNTRkMzMxNjY3ZDVhODU2M2Q0Zjk1ZTk4NzcyZDM2NmEgcHkzaworNzgwMDcgZTlkYmJjZDRhZDQwYWE3Zjg2OGMzZjZiMTE1Yjc2MjVmZTc4YWNkNiBsZWdhY3ktdHJ1bmsKKzc4MDA4IDk0ZDE0ODBiYzU2MzA0MWMyMmQxNWQ1NDg4MTA2YmM1YTE3OGYyMTIgcHkzaworNzgwMDkgNzhlNzk5MmYyODU3OWZhNWQzMjVjOGNlYjc3ZjkyNWM4MGViOTFhNCBsZWdhY3ktdHJ1bmsKKzc4MDEwIDBkOGYyMGU0NmMxZmExOTQ3NDZhMmEzMzM3MGM0ZTdmZjQ1NDhhMmEgbGVnYWN5LXRydW5rCis3ODAxMSA3OGM4OGIwNzc4NDMxYTcwYTJjMmI2OWNkYzFiMzUxMmZhNjY1ZWNiIHB5M2sKKzc4MDEyIDhlNTlmOWY3ODhmNWIwNGU2MDU2NTFlZWI3MWFkZGUxNTI1MTZmZmUgcmVsZWFzZTI2LW1haW50Cis3ODAxMyBmYWIzODA2NzQ5NTk2ZjMxMWFmOTQ1NzI2MWY5NTNlMmQzNjU5YTgzIHJlbGVhc2UyNi1tYWludAorNzgwMTQgMmI4ZjQ1OGJiY2Y1OGU4ZDcxYWY2ZmI0Y2NhZDRiNDY1Y2UxMjE3YiBsZWdhY3ktdHJ1bmsKKzc4MDE1IDEzZjY5NWFiOTExMWNjNjlkZjEwMTMxMTJlMmJhYTNkNGIyMDAyNDggcmVsZWFzZTI2LW1haW50Cis3ODAxNiAwZWI0MjI2MjRkYjVlZmEzYmY4MmE4ODNiZDU4Yzc3NDAzMDg2YzhmIHB5M2sKKzc4MDE3IDljZWUwODc5MTVhYTFkYjJkODQzN2EzNjhmODkzZjA1NDcyODZlMWMgcmVsZWFzZTMxLW1haW50Cis3ODAxOCA1MGJkOWNkMmVkNDgxNDNiN2I4OWQ0NDM4NzM2NzI2NGQ5MmM1NjAwIGxlZ2FjeS10cnVuaworNzgwMTkgNzFlMDg5MjY1YjI4NTNjY2JiM2Y1MjQwOTliMzdiZTg3NDAzNjM5YyBsZWdhY3ktdHJ1bmsKKzc4MDIwIDQxODA1NTdiN2E5YmI5ZGQ1MzQxYTE4YWYxOTlmODQzZjE5OWU0NmUgbGVnYWN5LXRydW5rCis3ODAyMSBmZTgzMmM1ZDMwNjZiMTYzMjdkM2QyZDI1MzY4NTNlZTVkMTVkYTViIGxlZ2FjeS10cnVuaworNzgwMjIgNWU5YWI0YzI1YjkxNGE4YjY2ODkwODA5NjgwZjg5ZWVjZjNlZTc2OCBsZWdhY3ktdHJ1bmsKKzc4MDIzIDgyY2UzYTA4NTcxYzk1MjdhZmI1ODk5MzBkMDg3ZTJhNDRiYWIxOTYgcHkzaworNzgwMjQgNDAwMmYxYzQ2Yjg2OWNlMzdkMzBkYzY5ZWU4YzUwYzk4YjlmNjI3YSBsZWdhY3ktdHJ1bmsKKzc4MDI1IDYzYjNhNjVhZmY1MmE4ZTJlZmY4OWQyM2VhN2Y5MzM1MGI2YWFjM2YgcHkzaworNzgwMjYgYWQ2ODNjZWRmYmIzYTljMjkyNmE2ZjI2ZDQwZDRmZjNhYTVhMjM5MCByZWxlYXNlMjYtbWFpbnQKKzc4MDI3IDIyMmI2ZDgwZTc2OTI0MDAxZjJmMzhkZmEwMzcwZmY5OGE3YzFmOWMgcmVsZWFzZTI2LW1haW50Cis3ODAyOCBkZDIyMzBhOGM0MWRhMTE3ZTE1NmFhYzA5NThjYmQ0MWNhOGQ4ZGQ4IGxlZ2FjeS10cnVuaworNzgwMjkgY2FjZjIwN2ZiZGVkNDNjNGI0MDZjNDIwYjIxYTFiOWIxOTQ1NWMwYyBsZWdhY3ktdHJ1bmsKKzc4MDMwIGU5Y2IzZmQzNDFlOTgyZTUzMzI1MjdiZDkxOTk4NDczNTc3ZDdjZmEgbGVnYWN5LXRydW5rCis3ODAzMSA4N2Q4Yjk1ZjU2NzU2MDYxNTBjZTJlNmZlYzM1OTU5YTIwNmExYzRlIGxlZ2FjeS10cnVuaworNzgwMzIgZDdkNDhhMzBhZGYzMDM0YjhiODY3ODYyMzUxMDAzNjZjZjA3YzYzMCBsZWdhY3ktdHJ1bmsKKzc4MDMzIDYwOWZhMThiMjRiZmNjNmFiODRiOWVlMTNiNTA0OTJlNGQyYmExNmQgbGVnYWN5LXRydW5rCis3ODAzNCA4MWIyMzA2ZTZiZjMxYmUzZGY0MWZkZGRjMDViN2VkNjJiNTFlYTY4IHB5M2sKKzc4MDM1IGYyYzkxYmY1YjdiOTY2MWU2NjBmMjg5MjMzZTg0Y2IzYzhjYmJlNjkgbGVnYWN5LXRydW5rCis3ODAzNiA2Y2E5ZDk2ZjE0MGU5MDQyOTUxNGJhY2UwYTk0OTU3MDFiMDc3MWZkIGxlZ2FjeS10cnVuaworNzgwMzcgY2MzNjdjMDc3MjQ1OGQzZWRjMDgxNjk1MDUyNTIzZmUyODk4ZDExYiBsZWdhY3ktdHJ1bmsKKzc4MDM4IGVmOGYxYzJjYjUxZjkwYjViYTZhZDY5N2Q2NjdkMGQxYzU0ZTQ4MGEgbGVnYWN5LXRydW5rCis3ODAzOSBlNGFlNzlkNTNlMjM3YTM1ZTk1N2QyZTU1ZDU5Y2JmNWRlZjc4ZjgzIGxlZ2FjeS10cnVuaworNzgwNDAgODczODc1NjU3YWQwZjNmMjJiZTI4NDkxNDE2MDYwZDAyNjM1NGJiNiBsZWdhY3ktdHJ1bmsKKzc4MDQxIDJiYTc2NzdiZmE5NTE0OGJjNDZlNmQ4YTQ0Y2NmYzYwYjRhZDlhZDcgbGVnYWN5LXRydW5rCis3ODA0MiA3MzQ2NTdiNGIzZTVjZjgwNWE2ZmFhNGM0OWJmZjNiYjQxMjljODkyIGxlZ2FjeS10cnVuaworNzgwNDMgMDNiYWY2ZGYzMmQyNjhlMzE5ZDBiYzFjOThhYjljN2Y0ZWRhYzQzNCBsZWdhY3ktdHJ1bmsKKzc4MDQ0IDU1MTQ0Y2FlMDJiYWIxZDUxMzc4NzNmODk3YTVlODhlYmUyMmYzMzkgcmVsZWFzZTI2LW1haW50Cis3ODA0NSAwYjQyZTFhYTRhOGJiYjMwZjUwODE0ODRmZjkyZDBiZDk0NTQwOWRiIHB5M2sKKzc4MDQ2IDIyMzU4NzAwYTRkMGJiYjQ3NzA2NTRmYjUxNDNjZTU1YmI5ZTM3OTcgbGVnYWN5LXRydW5rCis3ODA0NyBhMmFiMjZjNWYwOGI1YTQ4YjczNzZlYTI4MGU3ZjJhYThhOGQxMmU3IHJlbGVhc2UzMS1tYWludAorNzgwNDggMjFhNDcxYzM0NGUzYTA1OWZhZGJjOWRkZjBlMWRiMDZjMDI3NDQ0NiBsZWdhY3ktdHJ1bmsKKzc4MDQ5IGI3YTVkZjE0MDg2OWU3YWQ2NmE2NGFlNzJmZDgzMjk1MWRjZTFhMjEgbGVnYWN5LXRydW5rCis3ODA1MCBjNThlZDI1NTRmNWM4NzM2YmQwMTIxYTFkYmUwOGU1MTRiNjAzNmJkIGxlZ2FjeS10cnVuaworNzgwNTEgZWRlMGYwNWRjNmMwODE2ZjM1NzQ0MjJkYzJkM2Q4OGVlZDQ4ZWEwZSBsZWdhY3ktdHJ1bmsKKzc4MDUyIGE2NmViOGE2M2Q1YjZhODU5Y2ViZGVlNDBhMDY4MDM1MjdiODlmMWQgbGVnYWN5LXRydW5rCis3ODA1MyAxMDEwMWNmODlkMjA0YThlN2Y3NDM4N2FmMTdjNjQ3YzAzYTAxNjkwIGxlZ2FjeS10cnVuaworNzgwNTQgN2MyNGZlZmMyY2Q0YjFjMzViZTM3NWQ0NDkwYjVhNWRkNmJhMDEzOSBsZWdhY3ktdHJ1bmsKKzc4MDU1IDZiODJhMjMyMzUwMTJhNzRhMzdmMDhmODRiNjYyNDFlOTgzZjg0MGUgbGVnYWN5LXRydW5rCis3ODA1NiBmNGM1MWFlMTY3YzU1MmQ1MzYwY2U0MWU4OTg0ZjQ1YzQ2MGUzZjAyIGxlZ2FjeS10cnVuaworNzgwNTcgODIxNGQ0ZmMzMjM0MzY1Yjc2ZDZkM2M2Y2I1NzhkODM4M2EzOTdjMCByZWxlYXNlMjYtbWFpbnQKKzc4MDU4IGZkZWMzMGFlYjkzZjNhZjM3YmNlY2FkYmE0MjFiODM3ZTFlMDhjMjAgcHkzaworNzgwNTkgNTJiYjQwMzI4NjNlMTYyMTdkYTI2YTMyZDk3NzdjZjk3NWI5MDM4YSBsZWdhY3ktdHJ1bmsKKzc4MDYwIDkzN2ViMGZlMWY5YzFjMzNlMzI2MmE4MmRhMjBkMzQwMmM1OTRlZjggcmVsZWFzZTMxLW1haW50Cis3ODA2MSAzZDM3NTMwMTExNWRiM2MwMWIxMWI0NjUxZjJlYWQ4YWNhMzZmZTJiIGxlZ2FjeS10cnVuaworNzgwNjIgNmE2ZmMwYzA5MWNkZWZjNjVlOTc3MzdkZDk1ZmMxOTJlZDFiNTI1NyByZWxlYXNlMjYtbWFpbnQKKzc4MDYzIDRhY2JiYjVhNDhmY2QwMWNjYzNjODM4ZDBhNTk2ODdkMjRhMzc2YjcgcHkzaworNzgwNjQgYjQ3YmNjYTAwMTVhYzYwZDUyMjQ5YTc5MGYzYTBhZTc2YzY0OTkzNCByZWxlYXNlMzEtbWFpbnQKKzc4MDY1IGRlNTNiYWE1YWM3ZGU4YjMxYjRiNmQ0MjUxNDlhYmE2NDhkOGI0NDggcmVsZWFzZTI2LW1haW50Cis3ODA2NiAzNzc2YzMxYzBlODIwOGJhNzA1M2NkMDNlZGE5MDI5ZGEyODliZmY0IHB5M2sKKzc4MDY3IGM5NjQ1N2RmNDBlMGQ5Y2FiYTMwOTdmYTk3NTc4ZjQ0ZmZiN2U1NTkgcmVsZWFzZTI2LW1haW50Cis3ODA2OCA0ZTQwYTI5MTE3NTA5MzFhZTAzM2Y3MjczNWVjZjcxOTJhNWJlMmFjIHJlbGVhc2UzMS1tYWludAorNzgwNjkgMTBmMTlkMWMzYjc3MThiZjlmNTg3MzJhYWExNDdhOGUzYTQ2N2M2NiByZWxlYXNlMjYtbWFpbnQKKzc4MDcwIDc5YzAyMmQ3NzIxM2MyNGEyMmNkMGNkZTEzZjNkNWMwMGYxYTAxMzcgcmVsZWFzZTI2LW1haW50Cis3ODA3MSBjYTY3YzM3Y2QyNmRjMDBiODhlMGZjMmFhOWY5MTk3ZTVlNmRkNDg1IHJlbGVhc2UyNi1tYWludAorNzgwNzIgMTk3ZjI0M2RkYWI1M2U4ODg5MGE1YmZiNDFmMjk2ZDkyN2Q4MjUwZiByZWxlYXNlMjYtbWFpbnQKKzc4MDczIGIwYzc0M2M3ZDdlZWFmMGI0YzRiMWEwNTMyNjc1OWM3MjU4ZjY5MjEgcHkzaworNzgwNzQgN2QwN2RhMmI3ZGNhYjczZjBiZTM2NjQ4NjEzMDI0MWFmODczNmJjZSByZWxlYXNlMzEtbWFpbnQKKzc4MDc1IGI2ZGY3NWMxN2UwMmRjMDkwNjFiYzViOTY2OTc4NGM4N2YwZTMyMzUgbGVnYWN5LXRydW5rCis3ODA3NiA1Njk0NDQ0ZmQ1ZDJlOWZlN2U2Y2YxZTM1ZTc0NjQ0YTlhNzdiYWQxIGxlZ2FjeS10cnVuaworNzgwNzcgNTNmODNmMjAyYTZkNjg0Njk4ZDE0ZGQzYjc0Yzg5NDAxZjk2Y2RlMyBsZWdhY3ktdHJ1bmsKKzc4MDc4IDkxODk4MDNmODM0MDc4NjNkNDY5YTY5ZGYwMzk3M2FiMzM3Mzg5NWIgbGVnYWN5LXRydW5rCis3ODA3OSBiMTE2ZmZiY2QxYjA3MTE5YTE2NDE2N2U1OGM1MjlhNmE1ZmQwZDk0IGxlZ2FjeS10cnVuaworNzgwODAgZDUzMGE3MmI0NmZjODJiOWM4OGEwNjI0YjhmOWMyM2FmM2ExZjNmMyBsZWdhY3ktdHJ1bmsKKzc4MDgxIDg3Y2Q4OTNjYjhiYTI2ZDI1Mzk5YWUzYTJiZjkzYzk4MDRhZTcwZjcgbGVnYWN5LXRydW5rCis3ODA4MiAyMTgwNGRjN2FmZjRiNDE5YjBlZWRlYjNmZDAwNjViMDZiODdjZmUwIGxlZ2FjeS10cnVuaworNzgwODMgZGZkNDZhNWRiODcyYmViZmRmNWMxNWE2NTg1ZjQ2YjYzMzNmNzA2NyByZWxlYXNlMjYtbWFpbnQKKzc4MDg0IDBjZmU4MzZjNGE4ZDA2MTA0YjIwZTNjNzRkY2I5MTI4YTljMjlhYmQgcmVsZWFzZTI2LW1haW50Cis3ODA4NSA2YTg5MmNlZGYzYTQzYWYyNTAzZTA4ZWI3ZTIxYjUzNTA4NmM0NzZiIGxlZ2FjeS10cnVuaworNzgwODYgODZhODRiZTMzZTZhYTg2YzNjN2RlMmUxNmZiZWVmYzMzODY2MDRkMCBsZWdhY3ktdHJ1bmsKKzc4MDg3IDFiZTcxMTQ0NzNlYjVhOWZlNzE4ZGQ0ZDllYzRkN2UwMTFiZDI5YTYgcHkzaworNzgwODggYmQ1ZWUxM2ZkZGExZWNkODA1OTU0YzYxYzRmZjczYjA2ZGI0M2VhNiBsZWdhY3ktdHJ1bmsKKzc4MDg5IDU3ZmY3NzAyZWM3NGU3YjhmYmIzMDVjZGYwMTdjNGQzYjY2NjBhMzkgcmVsZWFzZTI2LW1haW50Cis3ODA5MCAwY2Y5N2FkMmZkMWY2MWE4ZGY1YjVhYTI2Y2I5YTIxYTk3YTk5MGEzIHB5M2sKKzc4MDkxIDY0MDA0YTk4NjJlNDcyMWQ1ODY4NDFiNjAyMzdlMDM4OTA0ZTFmOWYgbGVnYWN5LXRydW5rCis3ODA5MiA4MGUwMjFmZTM0ZWQ3YjNiOTA0OWYyZDQ5OTc0NTBjNTc4MmE2MWY3IHJlbGVhc2UzMS1tYWludAorNzgwOTMgNzBlMTE1YzM0Zjk3MDhhNDIxZjFjOGNmNDE2ZGYyNjBjYTI1NzRmNCBsZWdhY3ktdHJ1bmsKKzc4MDk0IDNkOTRiMWU3NzljNTgyOTJiNTYzZmY2YTExNDg1ZmZiNDljZjM5YjIgbGVnYWN5LXRydW5rCis3ODA5NSBiODM0YzhlZThlN2M5MmRkYjQ0MGFlZGNiYzg2ZDlmZGI0MjE5MDQ5IHB5M2sKKzc4MDk2IGYxMDhmNjI3NTg1NTU2NzQ3NDdiZmI5ZTIxNTQ2NGQ2ODRiYzg2YmMgcmVsZWFzZTI2LW1haW50Cis3ODA5NyBhMjgwODQ0YjY4ZjQ4NTU0Y2Y4NjBjNjQ4N2Q5YjA1NTM2Mjc4MWM0IGxlZ2FjeS10cnVuaworNzgwOTggZmFjYTk3YzVmMDM4MDQ2MTE2NDYzYjYzMWI2NmRhMGM3ODQxMDZjZiBweTNrCis3ODA5OSAxM2ZjYWE3OTMyNGJiODUxNGUyYzNiYThjYjFhMTJhYjU1YzQ0ZDljIGxlZ2FjeS10cnVuaworNzgxMDAgM2YzOTBmNDhiMTEzMTRlZGE0NmVjZjRmNGQ0NmFkZjgwOWNhYzYyMSBweTNrCis3ODEwMSBjOGMwYWExZmQ0YTZkNTI5ZTAzMDc3NTZiZDdkMjQxNDY4ZDIwYmQ5IGxlZ2FjeS10cnVuaworNzgxMDIgYzg2ZDkzYWVjZDdhMjUwMmQ5Yjc1NjM3NWJkNWYwN2UxNjliNzVlNSBsZWdhY3ktdHJ1bmsKKzc4MTAzIGQ4NGRhY2RiMmQxMjUyNDk4MGE2OTFlNTQ4MjIyYzcyYjhjYjNiZjYgbGVnYWN5LXRydW5rCis3ODEwNCA2MDBhYjljZWU0MDM1MGU2M2ZjMDQyY2UyY2M2ZDYxZDVjZTcyZThiIGxlZ2FjeS10cnVuaworNzgxMDUgNGJjZjk2ODI5ZDFhM2Q4OTdmNDFlN2RhNWU1NmUxMWM0ODExMzYwZSBsZWdhY3ktdHJ1bmsKKzc4MTA2IDkzNjc2YWU5N2M2OGI1M2U2YTA5NjhjMzQxNTk5YTBhZmUzNWNmZmEgbGVnYWN5LXRydW5rCis3ODEwNyA0ODRkYTEzZjEyNTM1M2M3Yzg0OWU2ZDBmMzEyYzFlOGJmZjRlZDQ1IGxlZ2FjeS10cnVuaworNzgxMDggZGJmMDNlYjdjMTJlZDQyMGNlNjhkNDdhOWMxN2UxN2ZlNGM4NGNiOCBsZWdhY3ktdHJ1bmsKKzc4MTA5IGE5OGIxMzYwOGQyM2E0NWRiMDYyNmVhMjk5N2JiYjg2OTgzM2FhNTUgbGVnYWN5LXRydW5rCis3ODExMCBlN2U4OWI0NTgzNDE4Yjk0MWQ1Mjk5Y2Y4ODlkOTI3ZTFhYzE5MDhmIHB5M2sKKzc4MTExIDM3ZTg5ZGViZWY2YTNkZTQ5NzBmYTRiMzk2ZGYzODA2M2ZkZmRjODggcmVsZWFzZTMxLW1haW50Cis3ODExMiA3NTg5NjA1ZGFlZDEwNDJhZjk5MzI1MTRjY2Q4ZGZiOTdjOWRhYTJmIGxlZ2FjeS10cnVuaworNzgxMTMgYTkxZmZjOTY0NGViOWU2ZjI2ODcyMTRhNzVhNDA3YWE2OGM5OWFhMCBsZWdhY3ktdHJ1bmsKKzc4MTE0IDQ3ZmE1NGRhYjM4Y2E3MGJkNjNhNDVhZDlkYjA5MzhjNzM1YzU2MGYgbGVnYWN5LXRydW5rCis3ODExNSA0ZTBkYjQ0NTY0YjE3M2QwOWY4YTdhNWMwMTI4YTQ0MWNiY2FlYjQwIGxlZ2FjeS10cnVuaworNzgxMTYgZjQ4YzQ3MWFjOGM5ZTBlOThiYmExNjhmMTNhMzE3NjRmNjY3ODIxYiBsZWdhY3ktdHJ1bmsKKzc4MTE3IDk2YzI2NzAzYjQ5MGE0YjU3OTdjMjMyNTM0ODQzMTY3MGZlZjQ4YTEgbGVnYWN5LXRydW5rCis3ODExOCA4YmU4ZDVkYjk2YTI1Y2FkOGU5YzI2NGE2M2RlY2Q2ZjlmM2M3ZDg0IHB5M2sKKzc4MTE5IDU5ZTE2MmI5ZjIyNTQzZjc0OGI1ODJlMWUyMjZmNDZhOWQ3NWJjMzEgbGVnYWN5LXRydW5rCis3ODEyMCAzZWVmMzllN2I3NGYzMjI5NGM4MWU2MWRlYzhhZDE3MzY4ZDgxMDg3IHB5M2sKKzc4MTIxIGU1YzU2NDY1OTIwMzczNmIxMzQzODg5ZTVjMmRhMDEyNGRlMDM4ODAgcHkzaworNzgxMjMgZWE4Y2MxMzk1MWIwYmJhNWM0ODIwY2NkM2FiZmMxM2ViOWI1M2RmZCBweTNrCis3ODEyNCA2YTZlZGRiNDU5OTY3YjEwMDBlNjQ3MDlkMGQyZjJjN2FlNDVhYTllIHJlbGVhc2UzMS1tYWludAorNzgxMjUgMjY1Mjg1OTEyMTdjZjM3M2UzNTZkNTgwZmZiMTdmNDFlZGQwMTQzMiBsZWdhY3ktdHJ1bmsKKzc4MTI2IGJkYmUxMzc5ZjNlYWY3ZjJmZGM5NmM2MWYxMDhiMmYzMWE1OTkxZTQgcHkzaworNzgxMzAgMGJlYjdjODI5NGM3ZjQzOWMyNDM4ZDIwZDU4YzUzMzE5ZjFjZWY4NSBsZWdhY3ktdHJ1bmsKKzc4MTMxIDBhZjY5OWYwOWVlM2UyY2QwNWI0OGJkOGRjM2RkZWY3NGQ3YzVlMTAgbGVnYWN5LXRydW5rCis3ODEzMiA2MWQxNzAxZDljNjYyZWNiMzk0NDI4NDMyNDEzZjFhOTE4Nzg1Yzk2IGxlZ2FjeS10cnVuaworNzgxMzMgMTE2NTk1OTRmOTgyMjVlZWUzNTEwNDRmMTcyMTU5NjFiMGRhMDc2YiBweTNrCis3ODEzNCBjNTI5ZTUxZjgzNzc1OGRiZDVhMTlmYWQ4NzM2NWE0MWU3MjBjMDA0IHB5M2sKKzc4MTM1IDVkY2VjYWMxYzhkNjc1ZWMwMTgzNGYzODQ5Zjc0NDRiN2Q0Y2JjOTcgcHkzaworNzgxMzYgZDFlMmY3OTRkMDIwNjQyNWZkOWY3N2FjNWVlMGIyNDYwMGIyMmM5NCBsZWdhY3ktdHJ1bmsKKzc4MTM3IDE3MmZkYjFkNzMzN2FkYjRiYzhjMTBmNDc5NTI1ZThhMWQ2M2RkMDMgbGVnYWN5LXRydW5rCis3ODEzOCBjMmJkYmQ5MzViNWU1MGNiNjdiMGM3YmJiMmE0ODFiMzk2YmU1MTVlIHJlbGVhc2UyNi1tYWludAorNzgxMzkgYTcxZGVhODk4NzdkODk2ZjY2MDkwZjdkMWZiZjgyNjRmZTQ3ZDMxYyBweTNrCis3ODE0MCA2ODdjYTRiMzc0ZjRjNzU2OGI0MDk2MjE5MjJjOWUyZjZlM2Q2NjI4IHJlbGVhc2UzMS1tYWludAorNzgxNDEgYzQ1ZGNiZGNhYjg3MzYyZGFjNmI0ZDdjYzI2MDk4OGJkYThiNGU2YSBsZWdhY3ktdHJ1bmsKKzc4MTQyIGJmZDQ3OThiMWY3N2UwMGRiNmE3OWQ4MTNjNmI3NjMzOTU2NmM3NGIgbGVnYWN5LXRydW5rCis3ODE0MyAxNGVlM2Q0YzdiZDVjODU0ZTNiNjYzYzRkYmIwM2Y0MTQ3NGM2MDk1IHJlbGVhc2UyNi1tYWludAorNzgxNDQgODNjOGRmYjU0NDIxMjBlYmUxZDk4Y2I4ZmExMjgxMjM5MzRlYTVkMSBweTNrCis3ODE0NSBmYjA5ODBlMWE0Y2U0MmY2YzM0MzQ0ZWQ1YzI0ZDE5ODQzZTNjM2IyIHB5M2sKKzc4MTQ2IDVlZmZiZDU1MjFlM2Y2ZWY1N2E1MTI2ZDMzMmQ3NDA3ZWQwZGI1NjYgcmVsZWFzZTMxLW1haW50Cis3ODE0NyAyMzZhYjQ4ZWRkMGNlYTQ5ODg4ZDM5ODA4NjliOWU0MjVkZTViYzUyIHJlbGVhc2UyNi1tYWludAorNzgxNDggMmI5YjIxYjgzMGQ5MjQ2MDM1ZGQ4ZDYzNzQ4NGMwNWNlOGJhODZlNCBsZWdhY3ktdHJ1bmsKKzc4MTQ5IDQ3MTIzOTE1ZWEyMGQ5MGRmZmEzNzdmYmFmNDZmMGU4MzBjYTdkNjggcHkzaworNzgxNTAgM2JkNjViMzQ2YmZjYTE2Nzc4ZWI2MTgwOTRhMzEzZjg5MjhkZTY5OCBsZWdhY3ktdHJ1bmsKKzc4MTUxIDZhZTUwYzJjMGFiOWYzYjgxNDg4NTA0M2U1MjQ0ZGM1Mjc4ZTliNGUgcmVsZWFzZTI2LW1haW50Cis3ODE1MiBmMTU2YjVlNzNiMGQxYTEzMzkzNWYxNWY3OWViYzkxNGFmYTYwNDgwIHB5M2sKKzc4MTUzIDhjZjA3YTY1ZDZmODU1OGY5Y2I0NzUxYjZjNTQxNTVkNjU0NzYzMTEgcmVsZWFzZTMxLW1haW50Cis3ODE1NCA4MmFhOTY4YTk1MDRhNmIzNTIzNTdmODM5NzExZGIyZTQyZjAwYjI1IGxlZ2FjeS10cnVuaworNzgxNTUgMzM0NTJkOTUzMDFmMTYwNzM3NWVlM2UzNjhhYzRjNzFlYmJlZTA3NSByZWxlYXNlMjYtbWFpbnQKKzc4MTU2IDU5MDI5NDQ5NWU1ZjJkMzA2MTYwOGMxNTQ3MDVjNGI1NTk3ZWRkZTggcHkzaworNzgxNTcgMzc4OGFiMjhjY2FkNzBlNmU0ODg5MzViOGMxNDM2ZTgwYTRmNmUwYyByZWxlYXNlMzEtbWFpbnQKKzc4MTU4IDU2ZmUxNjY5OGVlODI4OGFhMTA0MWUzYTE3NWQwMmRmOWEzZTM5MDIgbGVnYWN5LXRydW5rCis3ODE1OSA3YjE2MmM2YTkzNDRmYzAyZGQ5NjUyNGU2NWU1ZTllOWUxOTdhY2U5IHB5M2sKKzc4MTYwIDZmNjliOGZjMmJhM2VmNjhhNzBkNWI1YzJiZTk4NmU5ZDEyZTc0NjggcHkzaworNzgxNjEgMTIxOGEyYTIyNTNjY2EzNDNhYTdjMDEyZWUwYTkwNjUxOTc3NWU0NCByZWxlYXNlMzEtbWFpbnQKKzc4MTYyIDY5NGM5N2EyY2RkYzE2ZGIzMWVlMzJjYzJlY2Q1NGNhYjRkNzllNWYgbGVnYWN5LXRydW5rCis3ODE2MyAyMjk2YzVlNmFkMGRlNjZiYzY0MzVlNzc0ZmYxZTkwYmUwY2I3ZDFhIHJlbGVhc2UyNi1tYWludAorNzgxNjQgODEyOTQ2MmNhYTMwN2E1ODkxYzY4ZjcwYmYyNGQ4YWEzMjRkZTkzYiBweTNrCis3ODE2NSA1MzdiNjY3YWQ0NTAwM2M4ZDY2N2Q2ZjBjODA3ODJlMmY2YTUxYThhIHJlbGVhc2UzMS1tYWludAorNzgxNjYgYjFjOWQ2YmNmM2Q0Yzg0MmMwNjk3MGNiODE5YTA3MjZhNWIzYjY2ZCBsZWdhY3ktdHJ1bmsKKzc4MTY3IDZhY2I5YWZjNzVjZGU0YWNkODYwOGYzYTM3YzIxOTRlZmQzZDUwZjkgcHkzaworNzgxNjggMzM0N2I0ZWVhYjQwNGU3ZDkzMzA3ZDM5OGZmY2RmODY2NmNlMWJlZiByZWxlYXNlMjYtbWFpbnQKKzc4MTY5IDI2M2E4ZjkwNTc4ZDA2ZmRmNzUxYjczYTE4ZmFkMzdjNTliMmFkNDIgcmVsZWFzZTMxLW1haW50Cis3ODE3MiBkNDM3NDAyNDc1MDMzMmJkMDlhMTdmMTRhZjdhOTM1NDkyNDhkYWEyIHB5M2sKKzc4MTczIDMyYTRlZTI0ODA2OTQzNGUwOGY4NWZhMzA5MmZkZWNhMDY1OGE4YjIgcHkzaworNzgxNzQgNDE1NzkyMDA3ZmY5ZWViMzdlNjgzMDU2OGI3YmRlNDk2OGE0MTE2MSByZWxlYXNlMzEtbWFpbnQKKzc4MTc2IDhjNGMzOTFjYWFlYmY1NzYxNzM0NGY5Y2ZkMjVhMzQ3YjViMzk5OGIgbGVnYWN5LXRydW5rCis3ODE3NyBhMzM3NWEwZmZlMmU0NTkwNDNlZTIxNTE2MzQ5OTEwOTcyZmU4ZTE4IHJlbGVhc2UyNi1tYWludAorNzgxNzggNzBmNDU2YmY3NjM4N2Q0OTkwMmQzOWFmZmYyMjlhMDQ0OGQwNDQxOCBweTNrCis3ODE3OSBlMGViOTc3M2FmODE4MzRkM2Q1OThhMzYxMzQyNTgyOWQxYTU3NDI2IHJlbGVhc2UzMS1tYWludAorNzgxODAgYTc5NmYyOGFjZWUyZTc1ZGIxOTdjMDI0YjMwMzBiNzRjNWViODNhMiBweTNrCis3ODE4MSA2OGJlNDQ0Mjg5MDllZDM0YzdmZjYyMGY5MmJlYzg0NTU1OTA5MDExIHJlbGVhc2UzMS1tYWludAorNzgxODIgZGMxMzA0ZjA0NWE2MGU1MjQ2NDk2MDcwYTdmNzYwYjU1MjEzMGI5MSBsZWdhY3ktdHJ1bmsKKzc4MTgzIGEwZWZjZjliNmVkZDU0MmU2ZTVlNjdhZmNhMWRiZDRkZmVmNzg1NGIgbGVnYWN5LXRydW5rCis3ODE4NCAyMDIyZWRlOGNhMGM2MWY0NGZkZjQ0YzAxNmViMDI3ODVmMzE0MmZhIGxlZ2FjeS10cnVuaworNzgxODUgOTAxZmNhYWU1Mjc1Y2Q4NDRlYzViNzg3ZGNjOTYxMDE3Yzc5OTE5NyBweTNrCis3ODE4NiA4NzU2YzNkZTZkMjRiOGUyMjllNDkzZTBjMTZlNWU0M2IyYTBhNmM1IHJlbGVhc2UyNi1tYWludAorNzgxODcgZDI5MWI4MzA0MmZiNmM5OGUxYTRjNDBiZDJiNTVkODI5OGNiZGI5YyByZWxlYXNlMzEtbWFpbnQKKzc4MTg4IDMxZjU4ZDljNzAxNmVjOGY5NmQwNjUxOWZmNzhkN2Q0OGY0ZmViYmIgbGVnYWN5LXRydW5rCis3ODE4OSA1ZTZlZGI0ZTc2ZjU4MzcwMTEwYzYwMGEwMDM5MWQxMmY0YTU4NTg4IGxlZ2FjeS10cnVuaworNzgxOTAgNmIyOWI5Zjk2ODA1OTljYjY1NjFlMGY3OTA5MzExMzRhNjRmZmVlYiByZWxlYXNlMjYtbWFpbnQKKzc4MTkxIGVmNzQ3NjRhNjMyMDk4MzYxMDQzMWIzMTYxNGI1YTNlNjQ1M2U4ZGYgcmVsZWFzZTI2LW1haW50Cis3ODE5MiAzYmFhYmQxZDY4YTI4NmY0MzNhZGRiNDIyZDVmZjMwZDBhNmIwZWE3IHB5M2sKKzc4MTkzIDAyOTMxODI0NjlhNzczNGRkMzJlNDhkOGFiZjNlNGNiNGQ4NTlhMjQgcmVsZWFzZTMxLW1haW50Cis3ODE5NCA0MTFiMzI5OTM4ZGM0Y2FkNzgxNDEzODBmMjQzOGFjNTE0N2IxZmI1IGxlZ2FjeS10cnVuaworNzgxOTUgMTcyNWZiYWJlNzNiZDQwNWEwODUyMGFjNzc4Mzk4ZjY3OTQ0MzQ3MSByZWxlYXNlMjYtbWFpbnQKKzc4MTk2IDdhZTQzYzA1MTE2ZDNmOTM2YTNjMjJlZjhhNDQzZjk0ZjI5MWEwZDcgcHkzaworNzgxOTcgNjM3NGUxODU5MzQ2NDE3ZDUyNTA5ODY3NzhhZDZlNDU0ZTJjMjlhNCByZWxlYXNlMzEtbWFpbnQKKzc4MTk4IGI2NDFjMWFhNjQzZTE5MjhjYTkwNGJkMDdmMzE0MDQxNjZhMTZjZjIgbGVnYWN5LXRydW5rCis3ODE5OSA0NjVjMDQ3ZWYzMTFjMGNjNDBmMGU3ZDNiYWE1MmVhMDM3NzM5YzhlIHJlbGVhc2UyNi1tYWludAorNzgyMDAgNzdkODU5MDI2OTE5Y2U0YWJlOGUyMzZkYTNlZmQ4OGNiOThjYmE4YSBweTNrCis3ODIwMSA0ZjZjMWI4Mjc3ZWI0MzZlY2JiZGE1MDgwNjQ4ZjdlMjI2MDliYjhjIHJlbGVhc2UzMS1tYWludAorNzgyMDIgN2E1NmYyY2FlM2VjZDdkYTI3NjJmZDg4OTYyODJkNWI3YTk2OWQ2MCBsZWdhY3ktdHJ1bmsKKzc4MjAzIDE1YjA0OWZhYzE5MWE0MDY1Y2IwODZjOGM3Nzk1NzdmOTE5NTVmYjYgcmVsZWFzZTI2LW1haW50Cis3ODIwNCBkNGZiYjdlNTNjOTI5MmI5NGRmYTgyZjVlNGQyMzVkOWU3YTk5ZDMxIHB5M2sKKzc4MjA1IGI3MzI2ZjliNTk5YjcwZjM1MWU3OWFjMTM0YjAyMWI0Zjg4MGFiMjggcmVsZWFzZTMxLW1haW50Cis3ODIwNiBlYmZkMGVhZWJlMjcxMThmMjlhNGY3YWJlNzg4OGM0MjBlMmU0NTkxIGxlZ2FjeS10cnVuaworNzgyMDcgYmZiM2U4NGY4NWZmZjU5ZWYzNGM4OTVlMmJkOTIxODI1YzQ1YTE2MiBsZWdhY3ktdHJ1bmsKKzc4MjA4IGVlY2YxYmVmMDUyZDNkYTUxMTIzZDI4NWI4M2QxOGI0YzQxYTVlMTcgcmVsZWFzZTI2LW1haW50Cis3ODIwOSA1OGIzMGRiY2Y5OWM0OGQ2Yjg1ZTc1MzNiZTBiZDBhMDY3MjNhNzQ0IHB5M2sKKzc4MjEwIGE2NzFlZTNiYmNiNDk4ZTc0OTQ2M2VmNGQ4OTM3Yjc3NDY4Y2Q4MTkgcmVsZWFzZTMxLW1haW50Cis3ODIxMSAwZGJlMjkzMGVlM2YwZGQyNTkwZDUwYjMzNGJkMzEwOGEwNTU5ZjNkIGxlZ2FjeS10cnVuaworNzgyMTIgYTI3MjQ0NGYwZWYwYzkwMjJmMzdlYzg2ZmQ0NTdlZmY1YzYyZGQ4YiBweTNrCis3ODIxMyAyMjUzNTU3ZDZmYTJmZTYxMTJlODNjMjM1ZDQ5MDk1Yzc5MDJiOTUyIGxlZ2FjeS10cnVuaworNzgyMTQgNGMwYmUzN2I0NmIwMzY4YzAzYjRkN2JlYmViYzhjYjY3NmMwYWU5MSBweTNrCis3ODIxNSBkZmM2N2FkNGRjZWU1N2I2NjYyN2NiMGY4ZDhkZDQxMWE2NDJkZGI1IGxlZ2FjeS10cnVuaworNzgyMTYgOGYwMmM1NGFjMmFjOGE3MGZlNzEyZDkwY2JlMzBiZmM3NTQ3MGIyYSBsZWdhY3ktdHJ1bmsKKzc4MjE3IGUzZDA3MTIzM2JlZmMwYWUxNTM2MmI3NTM3ZDNjMTBmOWZjOGY0OWMgbGVnYWN5LXRydW5rCis3ODIxOCBlYTFhZGM2ODM1Y2NkMTkyZmQzODlhYzk0NmU5Y2IxNWFjNzE2Mzc1IGxlZ2FjeS10cnVuaworNzgyMTkgZjIyNWQ1ZTZlMGU1MGIwY2ZjZmUyMDg0OGU1ZjZhYWEwNWRmMjNjYSBweTNrCis3ODIyMCA5M2UzZTZjNTE1MTM3NTdlYjgxNTMzODgxN2VhZDU1YzQxMDIwNzhmIHB5M2sKKzc4MjIxIDlhNTgxYzAyMTBmMmVmNzc3N2JhZTI4ZmVmMzY3OWEyMTBjYmU2MzYgcmVsZWFzZTI2LW1haW50Cis3ODIyMiA0MWM1ZThlZmVhYTNjNThjOTI1OWExZGIzYTc5ZjBlN2E2OTI1ODJhIHJlbGVhc2UzMS1tYWludAorNzgyMjMgZmI4YzAzODhlMzg1ZTRlZDljODQzMGUzMmJjMDlhOGNlMmJmMDU3MSByZWxlYXNlMzEtbWFpbnQKKzc4MjI0IDk5MmZkMDU0N2ZmOGQ1N2Q4NGYzOGVhNWE2NDBlODI2YWI1ZTk2MDggcmVsZWFzZTI2LW1haW50Cis3ODIyNSAyODZhZjMwOGMxYmJhYWE4OGExMTVlMDgzODk0NGFjNjc3NWRkMGNmIHB5M2sKKzc4MjI2IDhhOWVmMmNmNzk0ZmU2ZTZjYjcwYmZiODJhNmY3NDZmNmViOTM2ZmMgcmVsZWFzZTMxLW1haW50Cis3ODIyNyA1OTdkNmQzNjJkZGU0MGQ4MGZiNzE3ZGIzMzg3OTk1MjM4NTA1NzA5IGxlZ2FjeS10cnVuaworNzgyMjkgNWFhOWY4M2RkMDBkOWZlMmQ0YzI0NGQyOWFlYjBlOTAwNzkwMTk3OSBsZWdhY3ktdHJ1bmsKKzc4MjMwIDcyZjQ2Y2JmYTU3YWFkMjIzN2I2ZjI4ZmI4ZWNhNWI3ZDgyZWRmMjYgcHkzaworNzgyMzEgNWU2MTRlYWFhNTA1MWFiOTRlYjJhMTMxYjM3ZDZlYTBmOWJjODc2MyBweTNrCis3ODIzMiA2ZTc0ZDNlNTFkMzNlOWY3OTFhNjFmZGQ0ZTVlZjAzNzkzMmYzMjU0IGxlZ2FjeS10cnVuaworNzgyMzMgNGZjOGI2ZmU0YWY4NjdhMmJhZmRjNGM4NzQwYmRmYzIzYjMwYmFmMyBweTNrCis3ODIzNCA3ZGE3ZjliZmRhYWMwMTc4OWQ3ZDM0NWE3ZWEzMDQ4NjlkNmEwMGMyIGxlZ2FjeS10cnVuaworNzgyMzUgYzQ4NWU1NWFhZjk2NWY1NDY1OTY5YTYwN2RjZjBkYWQxNjc4YTMxZSByZWxlYXNlMjYtbWFpbnQKKzc4MjM2IDhiMTZmMTQwODI0OWU5YWUyZjk5YTY1MTg4MGViOGIxY2E2NGVmMjQgcHkzaworNzgyMzcgZjcyNWNmMTIzMzRiOTdjMDExMjliYjk4Zjk1YWVlOTMyZDYzYzk5OSByZWxlYXNlMzEtbWFpbnQKKzc4MjM4IDA5MDZjNmY2NDg0NzQ0OWE3YTNhNTAzMGZmOWRhMDc1OTdjMTdkMzkgcHkzaworNzgyMzkgNDc0ZWM1Njg1YTJkZjBlZWNmNzNiNzA5OGM1YTI3YmNlMzhjNzJiYiBweTNrCis3ODI0MCAzYzcwNDQ2MWVhZGEwOWNiOWUzN2Y4YjQ5Yjk2NjA3ZWQxMDU3N2UxIHJlbGVhc2UzMS1tYWludAorNzgyNDEgZjk4MTdlYzhiNTRjMDRiMzYzZjQyOTVlZWNmOGQ0ODhiZDFlMDA0NSBweTNrCis3ODI0MiA2NzRjMjdkODdlYTk5MjFiNWJkMGZmNTNhOTdhZTEyNTMxNDFmMmU0IHB5M2sKKzc4MjQzIDFiZjA0M2VkYjhkNTc0ZmFlZTU5NmIzMDM5N2Y5YWQ4NzUyOWNjNDUgcHkzaworNzgyNDQgNTI4MjM4MjBkY2UxM2U4ZDFmMjk5Y2Y1MDgxYjM0ODM1N2MxOTMwMSByZWxlYXNlMzEtbWFpbnQKKzc4MjQ1IGU3NDIzYmVkMGVjNDNlMmE0NGZmYWMwOTI1MTYxZjYyMmRjMzE1NDUgbGVnYWN5LXRydW5rCis3ODI0NiA4ZDg3MWUwZmE3MDE4NjIyMGI0NDhhMTU2NGZhMjMyZGZhNmM0YWJlIGxlZ2FjeS10cnVuaworNzgyNDcgZWFmOGE5M2NkYmZmNGNhODYzZTYyNzRjZmUyODI2Y2JiYjRhYTMwMiBsZWdhY3ktdHJ1bmsKKzc4MjQ4IDdhYjYzODg0ZDY4YjZmNTdmNjczNTQ1M2IwNzY0Y2JkY2VmMDc0M2MgcmVsZWFzZTI2LW1haW50Cis3ODI0OSAzYTcxMzJmNjU2MjMxMzY4MTA4NGI4OTIzNWE4N2JhOTk4MzkyMGFhIGxlZ2FjeS10cnVuaworNzgyNTAgYWNiMjdiOTc5MjNhM2E3ZWE0MjkzZmY5YjkwMzNjODFiY2Y1YzU3YiBweTNrCis3ODI1MyBkZTRjYTg4MTRlMGQ4ODMxN2Y0YzdhM2YwMjgyMDIzODBjMzJkZjY3IHB5M2stY2RlY2ltYWwKKzc4MjU0IDU1N2U0NTc5OTdhODE2NGNlMjc2MTcwYjdmMmZkN2ExYWRhODc3YjUgcHkzay1jZGVjaW1hbAorNzgyNTUgYmE0MDdjM2Q4MjBjZDg1NmRjM2FjZTc2YzkwN2Y2MDQ4YmMyNDQ5NSBweTNrLWNkZWNpbWFsCis3ODI1NiA4NjcyNzBkM2NhODk4OTA0YzI1MzkzZWY5ZDA3YWQ0OGMyNGJlYzQ2IHB5M2stY2RlY2ltYWwKKzc4MjU3IGFjNWMyY2ZlYTQyZjZkMDY3YzAxMWI0ZTFlODBhMmI5N2E1NWE5MzAgcHkzay1jZGVjaW1hbAorNzgyNTggOWZjYzAzMGE4ZTcwMWI4MTE1YWY4NDFiYWI5ZmU4ZmU2Nzc5YjMxZiBweTNrLWNkZWNpbWFsCis3ODI1OSAzZTdkZDIwNjg1ZDg4NWE4YTdhNjQ4OGEwMTVmOGEyZjM0ZGMyYzE1IHB5M2stY2RlY2ltYWwKKzc4MjYwIGY2N2JjZDRlY2JlZWZkNTZhNWE0MTMxYWJlYWU4YjgwMDU4MDgwY2YgcHkzay1jZGVjaW1hbAorNzgyNjEgNjZmOTc1MGJjNmZmMzYxZGNlZDZkYzc3Y2E0OWFjNzUwZDJhYmY3MyBweTNrLWNkZWNpbWFsCis3ODI2MiBmYmMxNTk1MzFiZTFjYzVjMDZjM2VhOWY2OGMyOTBkODVhNzIzZmE1IHB5M2stY2RlY2ltYWwKKzc4MjYzIDEyOWJiYzY2MzliZDg3ZjA5NjljY2Y1Nzg1M2FiZDBhOWM0NmEzYTggcHkzay1jZGVjaW1hbAorNzgyNjQgYmFkZDRlNzA1NzMzYWJmNDM1NDlhZWMzNjUzNGY5YmJmMDhmYzhjOSBweTNrLWNkZWNpbWFsCis3ODI2NSA0MjA5YzM5OGM5Mjk3YWE1NWI5YjBlYWE5MGE5ODhmNWQwNzA3ZTliIHB5M2stY2RlY2ltYWwKKzc4MjY2IGUwZTNmNjM0MTU3MDQ2ZjkwMWNiMjkyMWUwM2FkODM4NTNmYzgwYWYgcHkzay1jZGVjaW1hbAorNzgyNjggM2MxMmJkZjZjYzZkMTdmM2IwODdlOTY0NDAyYmE4YThlZDM2NGE5OCBsZWdhY3ktdHJ1bmsKKzc4MjY5IGFiMjFhMDQ4MWQ3MjY0ZTYxNTE0OTkwNjZiYjU2ZGQwMzljNjgyYmUgcmVsZWFzZTI2LW1haW50Cis3ODI3MCBkMzJkMDNkNDE5NDc2ODdiMGQyNmY4ZTU3YjkzOGY4NjJlNTQyN2FhIHB5M2sKKzc4MjcxIGI5ODM3NzlmMjEyMWI4NTQ1MTFhOTUwZjI3NDc2YjJlZGE0OWNhZmUgcmVsZWFzZTMxLW1haW50Cis3ODI3MiBkY2RhOTg1YzY0MDM0MjgwOGNlN2RiMDc2YWNhYjJiZTE5NWM2ZjIyIGxlZ2FjeS10cnVuaworNzgyNzMgYWYwMGY3MGExZmYxMDQ0YzI3Y2VkMWY5ZTFkMGFkNGEyZjdjYTY1YyByZWxlYXNlMjYtbWFpbnQKKzc4Mjc0IGRiODZiZjM5Y2NhYTY4ZjNiZjNmOWU3MWMxNzYyOGMyZmZjMzBkMjMgbGVnYWN5LXRydW5rCis3ODI3NSBkM2FlMDQxZTdiOGMyNmVkOTVkNGE3NzJlZjljYzg3Y2U3OGI2MTUzIHJlbGVhc2UyNi1tYWludAorNzgyNzYgMzc5MGYzZWRhMWM1NmI4YWM2ZmJlY2U0Nzc5MzExMzIxOWUwOTVkYSBweTNrCis3ODI3NyAzOTBiMGU3MDdmNTRiNWRjMDlhYzE3MTQ3NDNiNmMwZDMzMDA3YjA0IHJlbGVhc2UzMS1tYWludAorNzgyNzkgMWIyNDJmYjMzYmU3MTIzY2FhNjUwMGUzZjhjYjgzZTIxOTE2ZDNkNCByZWxlYXNlMjYtbWFpbnQKKzc4MjgwIGM4ZWE3NTU5OGZkNmQyZTQwYzIzNDljYTA4NjIyNjQ0NzUxODA4OTUgbGVnYWN5LXRydW5rCis3ODI4MSBiOTIyZTFlYmUzODAyMjY5MTlmNDE0NTUzODc5NTczZjlkNmYwNmRlIGxlZ2FjeS10cnVuaworNzgyODIgMGVkMTkzNzY5YTVmMWVkYmY1NTcxOTAwNTBlZTIzNmUwMWYwZDNkOCByZWxlYXNlMjYtbWFpbnQKKzc4MjgzIDAzNDA4MDRhZDcxM2UwNDg2NGJiOWFjMTVkYmMyZDc2ODAwY2U2ZGEgcHkzaworNzgyODQgNGYzMDQ0NTJiYmY2OWFhZmUwNmE5YjZmYjk5YjJiZDRiMDNhNGEwNCByZWxlYXNlMzEtbWFpbnQKKzc4Mjg1IDgwYjYxMmNkOTRhNGU3ZGUxZGUyOTkwYTBiZjJmMTQzNzgwNDhhMGMgcmVsZWFzZTI2LW1haW50Cis3ODI4NiA1MDMzYTQyOTVjOTZhZWI3MmEwM2MzODU3MjQ5MzA1NTYyZTAyZjQzIHB5M2sKKzc4Mjg3IGUxNDRjNjNlMWZhNjExMjRlMzc3MWYyZjU1NTk3ODMwZTliMTI4YjMgbGVnYWN5LXRydW5rCis3ODI4OCAwZDNjOTcxZWIyMDY5NzU5YmI3MjY3OTlmY2U4YjZmMzQ1YTIwZTI1IGxlZ2FjeS10cnVuaworNzgyODkgMjBiODU3YmIxMGI4MDg1ZDkyY2Y1MTkzMmU4MDZkNWJlZDk0NjNhMSBweTNrCis3ODI5MCBiNzQ5YTc5YTUxY2NiNGNiYTcyZDQ3NjFlNTM4NWY1NGUxM2JkOGE0IHB5M2sKKzc4MjkxIDBkMmQ2NjA2MTMwM2JkNWI1ZDA5YjYyODI0ZWM4OGI2NWE5YzQ2ZDAgcmVsZWFzZTMxLW1haW50Cis3ODI5MiAxNzIwZWUwODNlZWVmNjRmYzA5YWQzZWRiOTcwOWYyMzUxYzNmZDk3IHJlbGVhc2UyNi1tYWludAorNzgyOTMgNmQ2YmU2NWQzODgxZmI2MjFjNjA4NDBlYWQ0YWU1MTQwYTc0NTVmOSBweTNrLWNkZWNpbWFsCis3ODI5NiA5NmE0YWExZjMxYzEzNjkxMDM0ZjE0NmMzNDk0YjkwOGU1Y2RmMTEwIGxlZ2FjeS10cnVuaworNzgyOTcgYWI2ZmQ5ZTQ1NDM2MjA0MjFjZDkzNWQ4OGU0NjJiZWZhYmJhZmZhNyBsZWdhY3ktdHJ1bmsKKzc4Mjk5IDU4MWUyMWQ3YTE5Mjg1N2E1NWU4MGI0YTJjNTM4ZWI2ZTQxNzg0ODMgbGVnYWN5LXRydW5rCis3ODMwMCBjYzBlNjljOGYwYzIzNzI5ZjQ0MzhmMmU0NDBhODJhNzZiNzAyYzlhIHJlbGVhc2UyNi1tYWludAorNzgzMDEgZjhkZGZjZWQyYTM0N2E3Yzc4OWE2YzhjYzcxYjQ4ZTBhMWZkNmJhNSBweTNrCis3ODMwMiAwMzY5YmJhYTVkMmRmYmY5YWExZjc1ZGU1NzQ2NGY4MDEwMDkyNDg4IHJlbGVhc2UzMS1tYWludAorNzgzMDMgM2RlOWJhY2FkOTViYzJiYTRjMmQxMWE1ODZmYTQ1N2NkMmI0NTE2MCBsZWdhY3ktdHJ1bmsKKzc4MzA0IDhiNzQ1NWUwMWExMTE1MGQ3YzcxYmI2YTkxNWY5Nzc0ZTc1M2E1ZDUgcmVsZWFzZTI2LW1haW50Cis3ODMwNSBmODYxMmQ0MTBlMmM0MThiMjhlYTE4ZGRlN2RmYTc2ODJjYmI0NTk3IHB5M2sKKzc4MzA2IGYwYWNmMjEzOGE5NjZhN2UzZWU3ZDk2YmMwMjVhMTlmYzA4MzJjMjAgcHkzaworNzgzMDcgMjA0NTRmYjBiZTZlZjc3NDRkYmUxZGE4MTA5ODY4ZWQ4YzVjZjQxNSByZWxlYXNlMzEtbWFpbnQKKzc4MzA4IGMyNTRlNTRhYzg1NjQ2ZmRkZjk5OWRhODk1NTc5NGVhZjM4NjliZjcgbGVnYWN5LXRydW5rCis3ODMwOSBjMWE0ZjI3YWU4ZmU4MzY2ODhkN2FlZTkzMDc5ZTMwNzFlNTQxNDQyIHB5M2sKKzc4MzEwIDE1ZDhlZDk0OGZiNTYxMWI0YWY2ZWQwZDU5ZjFjNTcxOTJiZWMxZGEgcmVsZWFzZTMxLW1haW50Cis3ODMxMSA5ZWNlM2RkMWU5MDEwZDMyNmZiOTA3MjhkZDQxZjIyMzgyNzU3ODhlIHB5M2sKKzc4MzEyIDUwZjhiZjYxNzA2YTQ2MGFiYjY3YzVhNDBkN2RiZmJmOThiN2NiNmYgbGVnYWN5LXRydW5rCis3ODMxMyBjNDVlYzNiMTFiYmE5ZWQ4MjRhZTdlYjhiMzllZTdjYWRhNTk0NzBjIHJlbGVhc2UyNi1tYWludAorNzgzMTQgNTIyN2E1NWVkNzE0MmJkOTk1MzFjZmVkNmIwZDhhYTMwZTgyYTJkOCBweTNrCis3ODMxNSBhZTY1YzdkMzVmMjdhYTJiOGI4MTcwMDZhNzc0YWU2MjI1YTI4Y2JkIHJlbGVhc2UzMS1tYWludAorNzgzMTYgMzhmNzMyODJmMDM4MzBiMDJiNTQzY2Y3OWUyZmEwMjU3ODYwZDY4NiBweTNrCis3ODMxNyA1ZDc3NDFlMWU2NzI4NmUxMzg4MWQ2OGU4MzIwMDMwY2QyZTRlNDYxIHJlbGVhc2UzMS1tYWludAorNzgzMTggMjMxMTUwMTVlNWI5NmU3NDFhODYxYmE1MmQ4MDA0ODE2YTgxNDVkYiBsZWdhY3ktdHJ1bmsKKzc4MzE5IDMxYzdkZWY5YmY1MWU3OGJjYWViMGUzNTMwMTU0NzU4NzRhNzkyNTEgbGVnYWN5LXRydW5rCis3ODMyMCAxMzJkNDIzNDgyMTZjNzNlZGNmNjQ3NGUxYWE5MWE5YWZhMzc4ZjE5IHB5M2sKKzc4MzIxIDJlYjEzNjU4ZjU3M2E5YmI2ZWVkMDQ3NDAxNDkyNDE2OGRlMTExNmUgcmVsZWFzZTI2LW1haW50Cis3ODMyMiA4ZjJkMTAwMTRjMDg0NjRmOTA2YTJkOTE1NDUxNzI5YjI5YzVkYTEzIHB5M2sKKzc4MzIzIDdhMGMzMGU3ZTRjYWYwNDY5ZGU1ZmM1NmZlNGFkZTJjZTU5MzhiOTggcmVsZWFzZTMxLW1haW50Cis3ODMyNCBkN2MzMzc3ZjhhN2I2NzQyZjc2MDBlMzI0Zjg0ZmJjMTg0OWQxNGRhIHJlbGVhc2UyNi1tYWludAorNzgzMjUgYzg4YjY2MDJmODJkNzVmNmYwZGMyMjhhNDI2NGU0YWRmOWQ5ODVlZSBweTNrCis3ODMyNiBhNjA4ZmMzNzhkOTIyMWQ0NDIwYTE1ZGVkODdkM2I2MDI1YzllNmM2IHJlbGVhc2UzMS1tYWludAorNzgzMjcgNDkwMmVhMDI1NjMwNzk5NWJjOTlkNTRkMTA0Y2YyMjAyNTFjOGJiNCBsZWdhY3ktdHJ1bmsKKzc4MzI4IDUzMmRhODY5NzNjZDRhMWQ5NmQxZWVmNTE3ZjFlZDM5M2JkN2ZiZDMgbGVnYWN5LXRydW5rCis3ODMyOSBmZjg0ZTA4OTNjYjFhYjZmN2Y2ZDQ0NzM1NWJiMjhkN2FlMjQ5YTRlIGxlZ2FjeS10cnVuaworNzgzMzAgOTc5YWMxN2VjODIzZDA2ZjY1NGVkY2YxMmFkYmRjNTA0OTU5MWZkMiByZWxlYXNlMjYtbWFpbnQKKzc4MzMxIDQwY2IyMjMzZjcyNmYxYzYwZmMyM2UxMjczMGUwY2RmM2I4NWQ5MTAgbGVnYWN5LXRydW5rCis3ODMzMiBmZDk0ODg4NTQwODg3NzNjYzQ0MjdlOTMyMDk0MzdlMjE0MWMwNzA1IGxlZ2FjeS10cnVuaworNzgzMzMgNWM0NDY2YjE2ZDZkNTc2ZTMxNTNmM2NkNDNmNGI0MDQ4ZDE0MDIwZiBweTNrCis3ODMzNCA3M2NkODM3MDZiYzQ1NDJkMzc4OGMwMmU1ZjU4YmM1YjVmZjk0YjllIHJlbGVhc2UzMS1tYWludAorNzgzMzUgMzM1N2I4ZWJiMjU5NWMzMzUyNGM1NGY5OGU5MGQ2Y2I3ODY5ZGRhMyBweTNrCis3ODMzNiBlYTAyZWNlMzIzZmUwZTg0NDQxNjM5NjdmOTAyMjRlMGRlMDhjNzk2IGxlZ2FjeS10cnVuaworNzgzMzcgZWY3MzJjM2RiNjNkYzU5Zjg0NmM1ZDRmNjU4MzRhYjRjZDkzMjI0NiBweTNrCis3ODMzOCBiZDEzZWVlZGMzYjAzY2MwMzVjMzk2NTNhMTdlYjg0YTE3MzFmZDVkIGxlZ2FjeS10cnVuaworNzgzMzkgMDQ3ZjE5OTc3YzQyODQzNmMyYWRjZWU5MmU4OGU5NzdjMzdjNzEyNSBsZWdhY3ktdHJ1bmsKKzc4MzQwIGI4M2Y5NzE2ZjEzNWI4NjdmODk3MjQ1NGUwNzE2ZTUyNDFmYzk5NmMgcHkzaworNzgzNDEgZDI4OGU1NDkxYmNhYWJjMDE2Y2RmNWNiNGFjY2YxNmIxOTg2MTMwNCByZWxlYXNlMzEtbWFpbnQKKzc4MzQyIDdmYjAxM2ZmMDE0ZjE5NWU4NTFkYjU4OTc5MGQ1NjNmYTU5ZTViNTkgcmVsZWFzZTI2LW1haW50Cis3ODM0MyA1ZmNiMGUwYmU4OWU5YjEwMTIxMzFlN2I1ZDA5OGUzYWYyNjliMTQ4IGxlZ2FjeS10cnVuaworNzgzNDQgODdmMWI4ZmZjMjhkNzVkZTE2NTM2MDgyZWQ5M2ViNWI2NGE2NDdhMyByZWxlYXNlMjYtbWFpbnQKKzc4MzQ1IDc3ZDg3N2QwYmYwNmQ5M2VkNDM1M2IzOTI5OTQ0M2UwNTVhZjEwMWYgbGVnYWN5LXRydW5rCis3ODM0NiAzMWNiNjFlMGYyYmMwMDg2NmVjZDYxODIwMTc0MGI1ODk3OWNhOTcwIGxlZ2FjeS10cnVuaworNzgzNDcgOWI1ODA2YTAwOGU3MTRlYzJlZWQ2M2NkY2I2ODdmN2ZmYTFjNjZmNCBweTNrCis3ODM0OCA5ZDU1YjE3YTNjNjQ3YWYyNTE2ZGFiODc1MjYzYTU0YTJjYmUyYTBmIGxlZ2FjeS10cnVuaworNzgzNDkgMTUyODZkOWYxYThlMzgwMzI1YzcwOWFmYmViNTJkMTQ1ZjI3OGJmZSBsZWdhY3ktdHJ1bmsKKzc4MzUwIDhjMGU0ODk2ZGJmYzUyNDU2MjU5MGEwMzEzY2VmMzU3YzI4NzI0M2YgcHkzaworNzgzNTEgYTRjNDVmOGU3MGFhZTFmMzk5MzMwNDAzODAzMDE0MmJjZDYyNDA4ZiBsZWdhY3ktdHJ1bmsKKzc4MzUyIDhlOGM0NWFiNDRkY2Y3ZjdlYTcyODJmYTk2MjE2ZjAwNmUxYmE1ZjcgcmVsZWFzZTMxLW1haW50Cis3ODM1MyA1NzY3ZDkyNDlmNTg5MjNlMzMzMzU2NzU4NTFkN2RmOTFhODczNTQ4IHJlbGVhc2UzMS1tYWludAorNzgzNTQgMGJkMTczNmUzMjk3M2Q2NjE4MDY2ZDUyZDBhMDM0MmI3NjdkOWYwYSBsZWdhY3ktdHJ1bmsKKzc4MzU1IGZjNGIwMDVjYmQyOGY0MjMwOWYwNTVhZmFhZTIzZTNjNzYwMGFkODMgcmVsZWFzZTI2LW1haW50Cis3ODM1NiBmYzI4NmZlNDY2MTIzMzBjYjJhNGFhZmQ4MmQ3MmM2NDQzNGYzNGQ2IHJlbGVhc2UyNi1tYWludAorNzgzNTcgYTVmYWFhYjk5NWM0MmM5YTYzMzE0NjM1MzRkZDQxOTU3MWVlN2NlNCBweTNrCis3ODM1OCBiNGM2Yjc2OTRmMGMyZWM4MzE5OWZhNDk5YTUzZmVhOTgzMmVjMzYzIHJlbGVhc2UzMS1tYWludAorNzgzNTkgYWMzNmVjOGJhZTZjNjUwNjg4NjA2YjkyZGY0NDExZDcyYzA1MjI5NSBsZWdhY3ktdHJ1bmsKKzc4MzYwIDQ2MGNlOWU4NDgzODNlNWY0ZmZlNjgyZTJjMTRiMmQxZTA1YWM2MzUgbGVnYWN5LXRydW5rCis3ODM2MSA0YTExODFlYzQwMzY0ZmZhNTRhNzk2NzY1NDNlZjhlOWFlZTU4NTMxIHJlbGVhc2UyNi1tYWludAorNzgzNjIgYTFkMDc4Yjg4MjQ3MmE0MjQ5MTY0MGNhNTNiZjRkOWQ2YjlhYjJjYSBweTNrCis3ODM2MyAxMzljMTA0OGYzMWJkNTAwYTg4NjFmODM0OGI0MThjYmMyMjJmMzY5IHJlbGVhc2UzMS1tYWludAorNzgzNjQgYjUyZTNmZjBhNGM4YjIzZWI2OGNiNzRlNTA0YmFjMjk5NGUxZTU4ZSBsZWdhY3ktdHJ1bmsKKzc4MzY1IDhjOTMwZTRkNTFiZDI5MGUyMDE3YzQ5MmJhZDE2ZmY3YTk5ZjE1ODYgcmVsZWFzZTI2LW1haW50Cis3ODM2NiBkZjU2YmExY2IwYWYyODI1OGE4Yjg4OWE3NWVkYTcwZDg3MzVlMzNmIHB5M2sKKzc4MzY3IDkyNjcwY2MxYTZiYzQwMmRkMTFhZDUxMDJhY2QxODI4ZmMxODZhODIgbGVnYWN5LXRydW5rCis3ODM2OCBmZWM1NWY1Mjc3NWNlNzc1MTg1M2UyNDZkMjFlMzQwNDk1ZjliMTA4IHJlbGVhc2UyNi1tYWludAorNzgzNjkgYmY4ZDlmMDM1OWMxMjI2MDNlYjY3OTNmYjU2MzhhZDI5ODc2ZmZlYSBweTNrCis3ODM3MCAyNDNjYzgwZDRhMDY3YjQ5MzQ5MWZhOWYzMTI3Yjc5OTI5YTA2MzMyIHJlbGVhc2UzMS1tYWludAorNzgzNzEgNzZhYzdhMWQ3MWI3NWVhZTZlYTc1MTVlYjg3NjkxMjVkYTQ5YTM4NyByZWxlYXNlMzEtbWFpbnQKKzc4MzcyIDhhNTZiODJjMTI4NDUyOTExZDViZGIwM2JhZWVlNzExMTQ5ZmY5NTkgbGVnYWN5LXRydW5rCis3ODM3MyBkYTM3M2RhYzI0MTVlMzJiYzI1ZmUzYzlmYzNlZjFhMjM0OWMyNTdiIGxlZ2FjeS10cnVuaworNzgzNzQgODliYzI4ZjIwMDIxZmI0NjAyYTRkZWM3MzQ1MGYzOWE1ZTA2NzlmOSByZWxlYXNlMjYtbWFpbnQKKzc4Mzc1IDg2OTBkMDhkOTUzZjk3ZTU1OGNmMTdhZmJlOTQzNDcyYTYwY2U0YjAgcHkzaworNzgzNzYgMGY1NGQ0MzI3MzRjNzY2NTg4MzhjODVhZTAyYzgyMzUxYWI4ZTIwMyByZWxlYXNlMzEtbWFpbnQKKzc4Mzc3IDFkZDFlYWRhNDZjMmQ3MGRlYWQ0ZWZmMjM0MjMwYWM3MTliZDU4OWUgbGVnYWN5LXRydW5rCis3ODM3OCBiZDRjOTE2ZjBlZmE1ZDFlZjY3ZDM3MmU4MjQ5M2ZiNDU2OWFlMWZkIGxlZ2FjeS10cnVuaworNzgzNzkgOWUxY2ExYzExOTAyMWM0ODEyYmU0MTg3MTZiNzdiY2UyZWRiYzlkZiBsZWdhY3ktdHJ1bmsKKzc4MzgwIGIxNzgxNGJlMDVmMWMxZjVhNjcyNThkMWYzZjg1MzM2MmQwODU0MDQgbGVnYWN5LXRydW5rCis3ODM4MSBlMmE0NDQ1YjBlN2MzMDBkMGE3MjAyZWE5NjE0YjM1OTk0YTM0ZGZjIHJlbGVhc2UyNi1tYWludAorNzgzODIgOWZkODAzYWJlMTQxYzk0NjhiOGZhNjdlYzNiOTNhODRkNzgyNWNiNiBweTNrCis3ODM4MyBiOTA4YTQwZjAwMjA1MDkxMzJjMWQ0YmFmMTRiMmQ3MDZiMzczNzUxIHJlbGVhc2UzMS1tYWludAorNzgzODQgZGRhNTE2NWEyMzc0ZTdkODY2MThjZDc3MTQ0ODgyMThhOWQ4ZGRiNiBsZWdhY3ktdHJ1bmsKKzc4Mzg1IDI4NzQ1MGIyZDdhNzhkNWQwZDMzMjM3Mjk0Njk0MGZkOTZjMWJiNDAgbGVnYWN5LXRydW5rCis3ODM4NiBlYTY4ZDc1NTI5YjExY2ZjZGMxN2U3M2IwYWVhODkwNGZmMGRhYzRiIGxlZ2FjeS10cnVuaworNzgzODggNzdkZTdiMWJjZDU5ZGE3ZTY3NjhkZDgwNGI0OWZiYTM0YzBkZWQ5MiBweTNrCis3ODM4OSBhYjEwNzkzYTQ2YTcwMWMyZTgzYjNjMDM0YmZmOTg1NDk2NDgyNTQ4IHB5M2sKKzc4MzkwIDEyNDk3MDcyZjlkYWNlMjBjZTdiMmJiNWNjZjA4OTQ3M2Y2MzlhMzAgcmVsZWFzZTMxLW1haW50Cis3ODM5MSBmY2YyMTJhOTNkZDQyZjA0ZjNlMGZkN2MyYzk1MGFkN2E2NGNmNWI3IHJlbGVhc2UyNi1tYWludAorNzgzOTIgMzJiMjEwNjFlZTlmZmYyNTRjMzIyMjRjYjZmMmM1OWQ1ZGNmZTczNCBsZWdhY3ktdHJ1bmsKKzc4MzkzIGRmNTcxOWMyOThkYjJkOGZiYmI5MTkzNjBlYmU3ZGFiMjc0YzlkZmUgbGVnYWN5LXRydW5rCis3ODM5NCA3NzgwNDgyYTY0ZGE2OWY2MTY2ZjliY2Q3Yjk0ODdhMDJjYTExNzFjIHJlbGVhc2UyNi1tYWludAorNzgzOTUgNDRlZTRmMjcxZDdhZWJmOGFmMjBmMGJkODlmNDcxOTY3NTYzODkxYiBweTNrCis3ODM5NyA3OThlMGQwYzcyNDZkZGIyMDdjMjc1ZDJkYTlhNWQzZTU4OGExYTNhIHB5M2sKKzc4Mzk5IDQxMGMxYzgwZDY2M2FiM2I5ZGU5OTNmYzYyMmYyNGMyYzZjODY1MDYgbGVnYWN5LXRydW5rCis3ODQwMCA4ZDNmZjJmYmJlNGI0YTQ5YTFiM2VlZDE5ZWI1YjU0MGZhNzAzZDc0IHB5M2sKKzc4NDAxIDY5NmY3NjdlNzdmZjhiOTljMjYyNjUzOTdmODcxNzMzYmNmZjA0ZGEgcmVsZWFzZTMxLW1haW50Cis3ODQwMiA2NzgyNTZlODBmYzYwMWQzYjM2ZWM2MzEyNmMyMWY3NmMzNDE5Y2QyIHJlbGVhc2UyNi1tYWludAorNzg0MDMgZTg1NDEyZjU0NGM4M2UyMzNmMmFiYTkwOWQ0N2Q1NGJhZGQ5ODVhOSBsZWdhY3ktdHJ1bmsKKzc4NDA0IDk1NGI4ZTI3NjY3NDYzMjFlZjc0YzZiMzExMGU1ZjM1NmVkYjY2YTUgcmVsZWFzZTI2LW1haW50Cis3ODQwNSBlODAzMjdjYjY4NDY4MWQ0ZjVjNDY2MDBhZmEzODQ5NmY4MTM0YzdlIHB5M2sKKzc4NDA2IDEwN2M0YzZlYzY0OTUxZmE4ODcwZTU5MDFiMDY0MmU4YmQxMWYxNzIgcmVsZWFzZTMxLW1haW50Cis3ODQwOCBhNWY2ZGQxODkyODJmMDFkYTY0OWZkN2E5ZmM5MjIyMWI0YTZkYWEwIGxlZ2FjeS10cnVuaworNzg0MDkgYTlhNDM4MTAwZjhkNGIyY2FiODA1ZTM3M2E0NDM1NzIyNDFkMjMyOCByZWxlYXNlMjYtbWFpbnQKKzc4NDEwIGE5OTQ1YWZjYzRlZDRkNzJiY2JkZTZiZDljMWVlYTBkOGU2NGMzY2YgcHkzaworNzg0MTEgMTc3MTlkMzk1ZjFlNmRlNDdmMGY4N2E4OWYxZTA2YTQyZjc0MzE2MCByZWxlYXNlMzEtbWFpbnQKKzc4NDEyIGM0NjVkMjE0Mzg3NGRjYWY1ZmM5ZTViNzI4YjBjNWMwNzdjNDk3YzQgbGVnYWN5LXRydW5rCis3ODQxMyAwNzk1ZGQ3YjJjOWQxYjI0MDEyYzliY2Q3ZTM2Mjg4NTQzODQ1OTVlIHJlbGVhc2UyNi1tYWludAorNzg0MTQgODIwZWFmOTM4ODA0NWJjZDMyMzllY2Y0Yjk0MDU0MzJiNzRmN2UxNSBweTNrCis3ODQxNSA0Zjc1MDNhZWVhODVmYzg1YzA1M2I1ODJhZjE4YjQ4Y2U4MDk0MjM2IGxlZ2FjeS10cnVuaworNzg0MTYgOWViYmNiN2EzOTg5NzBjYzlkZGE1YmQ5Y2U4YTA5OWFhMGQyMmIxYyBsZWdhY3ktdHJ1bmsKKzc4NDE3IDQ1MjEyYTI0N2VkNGQ1ZDRhYzQ5MDAwNjNjNjgyNWJlNWUyYzRiNjQgbGVnYWN5LXRydW5rCis3ODQxOCAyYjgyYjE2YTYzNzU2YzQ2OTVhYzljNjZlODdjM2UzYjIyMjVlMGE2IGxlZ2FjeS10cnVuaworNzg0MTkgNWFjMzQ5YzMyMmZkM2ZmYzc1N2ZjNjRhNGFiNjhjM2NjODUxOTg5ZCByZWxlYXNlMjYtbWFpbnQKKzc4NDIwIDU5ZWNlYTEzNzY5YjM5ODgwM2IyZWI4YTE3ZDZjZmY5NzgwNGYxZTQgcHkzaworNzg0MjEgYzhlZjkwNmIxMWI4ODMyMDE3YTU1YTIzNzI4MGE3MzYwOGE4ZTI5OSByZWxlYXNlMzEtbWFpbnQKKzc4NDIyIDU2ZjRkNmM1MTQ1MDE2ZTVhNWZmMmRjOWEwZjc3YTk3MDU5YjhiNmMgbGVnYWN5LXRydW5rCis3ODQyMyA5MjI1YjRmOGNiMWU3M2M4MTE1YWM1ZGRiY2Y3YjUzMDZmYWZiM2Q1IHJlbGVhc2UyNi1tYWludAorNzg0MjQgYWY1ODdiNGI1OTA5MTk0ZjMzZTEyZTYzMjllMjgyNzNiZTc5ZjY2ZCBsZWdhY3ktdHJ1bmsKKzc4NDI1IGMwZmExNDUzNzBlNDFmNDEwMjg0OTUxMTE4OTlkYjM0NWM3MWUyYjMgcmVsZWFzZTI2LW1haW50Cis3ODQyNiAzZDRkYjFmNWIzYjE1NWQ1YmY3NDdmMWRkMmY1ODgwNDFjZTg0NWIwIHB5M2sKKzc4NDI3IGU3MDlmNmY2ZjQ1Y2E5Y2Q5ZmRlMmZiOWZlNThiYjczNjE0ZDcxYmMgcHkzaworNzg0MjggNWY5OTM5YWYyZjcxYWNmZGNlZmU1NmM2YjQyMGRlM2EwMjYwZmVlZSByZWxlYXNlMzEtbWFpbnQKKzc4NDI5IGFmOWU2ZWRiYjBmZjc5NmFiZmE1NTYyOGJkODdhYzA3MWZhNzI1ODggcmVsZWFzZTMxLW1haW50Cis3ODQzMCBlNDdhNjRmOWNjNzdiZmVhY2VmMDA2M2Q2MWE0NTZmNGU2Yjg5NzQwIGxlZ2FjeS10cnVuaworNzg0MzEgMzE4MTI1NWUyOGM5OWY5NmQ4MzMzZDU3MDZkNmVkYjZjZDc3Y2QxOCBsZWdhY3ktdHJ1bmsKKzc4NDMyIGM5NTBmYWM3NDExYmE2NDBjOTNhMWQ0YjBjNmIyNDM3ZGI5MTNiNTQgcmVsZWFzZTI2LW1haW50Cis3ODQzMyAyODc4OGY3MmQ4YzBmZTVkYTVjOTY1NTdmYzk1YWY2MGU5MTYyMDlmIHB5M2sKKzc4NDM0IDk0ZTJiNjkwMjk2OTZkMGEwYTAyMDk5ZDg4MjkwNGY2MDVmOTA4YTkgcmVsZWFzZTMxLW1haW50Cis3ODQzNSBiN2RlN2M1YWZhMDQyOTNjNzE5M2E1MDNhMWU3NGQyYTEyYjIxYTgyIHB5M2sKKzc4NDM2IDE5Y2Y1MjZiZWZhNDY5YjU5Y2JmY2Y5YWYxYTAwYzFlNjEzMWY5MDggcmVsZWFzZTMxLW1haW50Cis3ODQzNyAxMjIyMWI2Y2M4Y2RjN2QwODhhY2VmNGZjZDg1ZGMxMzYzNGVjYWQ3IHB5M2sKKzc4NDM4IGY1ZWExMjY0YjdhZTE3ODdmM2EwYTkyMDEwZTJhMWUwYmUwZjliNWEgcmVsZWFzZTMxLW1haW50Cis3ODQ0MCAzODNmNDA5NzVjNzVjM2MzMWNlZTliNDFjMzNhODZlMGNkMTVjMDY2IGxlZ2FjeS10cnVuaworNzg0NDEgYmQ4MzU3YTkxZDNlNjM5MjYxYmExZDExZDIyYjg0MDgyYTA4MGYwOCByZWxlYXNlMjYtbWFpbnQKKzc4NDQyIDg1YmY4NDQ2OWEzMmM5ZGU0NmU0OWZjOWZkMzg0ZGYwYjhiM2UwMTQgcHkzaworNzg0NDMgMjE4MzI3N2NiYWIxODc2NmQ3YWIxMzM4ZjI2NDI4OTJhYzdkM2UxOCByZWxlYXNlMzEtbWFpbnQKKzc4NDQ0IGFjY2FiNGJhYjYzNGNkNjFjNmMzMDg2NjUzODllZjVkNWMwYjVjNWQgbGVnYWN5LXRydW5rCis3ODQ0NSBlY2ZlOWNmYWEzMzQ3MzExMzRhOTU3YWU1NzM1MDcwMmJmZGJjMTc4IHJlbGVhc2UyNi1tYWludAorNzg0NDYgODlhNTBhMTE4MjAxOTEyZGU3ZTY4N2Q3OTI3NDBkMWNiOTg4NTM2OCBweTNrCis3ODQ0NyA1ZjA0ZTBjZDgxNzE3OTAzYjYzMDI2M2QwNjY3YmRkMTMxYmM2ZTVhIHJlbGVhc2UzMS1tYWludAorNzg0NDkgNmMxNGMyNzkyNWI5ZTU4M2Q3N2U5YjQ0MWQ0MDJhMWUxNDVjYTg4NCBsZWdhY3ktdHJ1bmsKKzc4NDUwIGFhY2MwZDQ4ZDQ0ZDdlMTA1YjZjZjg4NjM2YzJkZmIwNzA5YzBkMTcgcmVsZWFzZTI2LW1haW50Cis3ODQ1MSA4NTUzZDQyYzk0YjFhOWZjYWVjZDc1ZjBhNGIzNzk4ZTE0MTRhYjU1IHB5M2sKKzc4NDU0IDFhNjJmNDg5YTY4YTBhOTM2NjI5OGRjZGQ3MjU1NjhhMTk2YjA1NzggbGVnYWN5LXRydW5rCis3ODQ1NSA0NzgwZTAzNzdlMTBmNjhkMWIzOGZkNTI1MGE0OTI4YjIzODg1MDZkIHB5M2sKKzc4NDU2IGUxYmMwMDIyYjIzYjJkOTEwYTIzYjg1ZjNmNjZiY2EyZmQ2ODRlMTAgcHkzaworNzg0NTcgOTViM2JiNmI5ZmFhYjljNDhmNzdlNTk4ZDE2MGU0MzVjNTRiN2MzYyBsZWdhY3ktdHJ1bmsKKzc4NDU4IDNhYjc0MDk0MDVmYTNhM2I5MmJkZGI3ZWIxNzEyYmIyMzUyYmFmMzIgcmVsZWFzZTI2LW1haW50Cis3ODQ1OSBjMTJiOTU1MzUwOTQ4ODM5ZTY3MjBlY2QwOTlkODBlZGVmNWExMjI4IHB5M2sKKzc4NDYwIDA4M2M4ZTUzNTRhZGIzM2I3OTYzYmQwMzk0NmY0NjdjMjNlNmNhNzggcmVsZWFzZTMxLW1haW50Cis3ODQ2MSA3ZTNjNDczNTRkYTM0MjZlN2JjZmYyM2YwYmRjMmFmZWY1ZDFkMmRiIGxlZ2FjeS10cnVuaworNzg0NjIgN2QzNDNkNWJmYjNmMWNkZmM4Mzk2NzNjYmYyNTMwMTA1MDMxYWVmMiBweTNrCis3ODQ2MyBhZDJmNWVhY2QyYTAzNmQ0ZTg0YWI0MDlkMjk4NGNhNTM5M2U5YjlhIGxlZ2FjeS10cnVuaworNzg0NjQgOWFjMzUyMTVhZjRhOGM5N2MyYmUyZDk3NDMxYzc4YmE5MjFiNzExOCBweTNrCis3ODQ2NSAzZGNkY2EwMDcwOTU1NjZlNDI2NjE3NjM3NzcxZDgyYzc5YzQzOWJkIGxlZ2FjeS10cnVuaworNzg0NjYgMjUyZjFlMjNlOTg2MDMxNjg0ZGM4MjZjMGIzNDJlMzZjMzJlNTQzZSByZWxlYXNlMjYtbWFpbnQKKzc4NDY3IDhiMjA0OGJjYTMzYzFkNDNlMTlhYjRjN2YxNjM3ZTBkZTc2NmI3NjYgbGVnYWN5LXRydW5rCis3ODQ2OCA1MzVlMjE1NWFmMWE4MmUxMDM0YWM4MTUwOWIwMjUxZDRmM2I5ZDE0IGxlZ2FjeS10cnVuaworNzg0NjkgZGMxY2Q4ZWRmYTQ2NTcyZTFlNjkxMDRjYzE4MTYwMzEzMjFmZGZhNiBweTNrCis3ODQ3MCA2MDQzZDBiZDhiZjcwYTU3NGQ4MjdlNjU0ZWM2NDVlZDVkYjU0OTk1IHB5M2sKKzc4NDcxIDYyYmFiZjQ1NjAwNWI2N2NkZGVkNjIwODJkZTc1YTcxZTcxNDc1ZDAgcmVsZWFzZTI2LW1haW50Cis3ODQ3MiA5NDg2ZmY0MDJhY2MzODgxOTRkMjg3NWQ0ZmFmMGRmMjZlNWYzYWFjIHJlbGVhc2UyNi1tYWludAorNzg0NzMgMzMzZmU4ZDc5MzI5OGJjMTZkY2JjMTZiMDhmNWMxNGNjYmJiYTQwMSBweTNrCis3ODQ3NCA3ODc0ZDEzYzlhYTc2N2E3ODgxMGI0MGRhNTNiZmYyMjVkNjQ1MDliIHJlbGVhc2UzMS1tYWludAorNzg0NzUgOGU2NDYxNWE0Yzg2MzVmYWVkNGM3NGM1ZGJjYzRhZTdiMTJlMjE2NyByZWxlYXNlMzEtbWFpbnQKKzc4NDc2IDJmMmQyMjU3Nzc0MjgwNmJlNjE2Zjk2YTY3NDA1NThlYzkxN2U5NGQgcHkzaworNzg0NzcgNWUyYTU4NDMwN2JhOTg3YzhjMTExMjQyZDY5YzdmYzZiNTRkOTczNiByZWxlYXNlMzEtbWFpbnQKKzc4NDc4IDIzMWM4OGVlODg4NWMxMDMwZTk2MDZmMjc2MTg4YWFkMjY1NWFkMTcgcHkzaworNzg0NzkgMzI3MGJhMWJlYzc2YTM4OWIwNzNjMzExOWVmODQ0ODBhYjU5NWFjMCByZWxlYXNlMjYtbWFpbnQKKzc4NDgwIDJiNjhlMzE0MmQxN2U4MzNmNjE2ZjE1MTc5OWM1M2VjOTVlMjYxZDQgcHkzaworNzg0ODEgNTZmNTM3YmVkYWZlZDlmZjdkYTg1YTdhOTNhNDg4ZDUzNjg4Yjg3MCBweTNrCis3ODQ4MiA0MDcwZjRjZjhjNzcyY2Q1MzllMmI2N2UxZjY0MTJjNDIyZjI3NjVlIGxlZ2FjeS10cnVuaworNzg0ODMgNDA2NmI0NWQyOGFiMjhiZDZlMjVkZjY5M2M1YTNjZmEyYzkxODM0OSByZWxlYXNlMjYtbWFpbnQKKzc4NDg0IGU1NDAzMjNkODdhOGIyMDIyYTNlNWRjNmU3N2Q4MTgwNzg1MTFmNzIgcHkzaworNzg0ODUgMGQ1OTBlNWU4NDBjNjM1YjJiNWZlNzAxZmJhMjlkMTY0MDJmYWZmOSByZWxlYXNlMzEtbWFpbnQKKzc4NDg2IGFiYTlmNjU0MWFkNjk4M2I1MDQ5YzczOTU4ZjA4YzUwMDNkMTIwZGEgbGVnYWN5LXRydW5rCis3ODQ4NyAyYTBhYzliZGU5OWFmZDAyN2MzZDdjMmFkYzg2OThjNjQ3MTI1MTJjIHB5M2sKKzc4NDg4IGQwYzJiOWMyYmFiYjBlZDk2Njg5N2RiYzEwNThkYzNjMDUwYzJhZDUgbGVnYWN5LXRydW5rCis3ODQ4OSAwYjQ4NDY0ODkwNTVhY2U0ZmI2NzM3ODJhODlmMmRkNDI1MzUxNWJlIGxlZ2FjeS10cnVuaworNzg0OTAgZjEzOWNhMDM0YzNiNzUwMzgwNGVhNTZhMDVjZTk3ODNmYWYzMWNiNyByZWxlYXNlMjYtbWFpbnQKKzc4NDkxIGJmMTQ2ZjEwM2VlNjczZjJjMjc4N2E0N2JhMzA1YzY0NzJmNGUwN2YgcHkzaworNzg0OTIgMDE5NGQ4YTZiMWVmZmM0MjA2NjY0NzdlYmU3MDVjNDVlOWFkYTUzMiByZWxlYXNlMzEtbWFpbnQKKzc4NDkzIGFlMDlhYjI2ODZlZDA0OTQ2MTJkNDhiZThiMDVhODJkMDBhZGJjMjYgcHkzaworNzg0OTQgODkxZTc5ZDc3MGQ4OGU2N2IwNGI3NmI1YTQ4YzA0OTQxMTQ2MjhhOSByZWxlYXNlMjYtbWFpbnQKKzc4NDk1IDgxNTA5MmE1ZTVjMTI5ODNhODM2YTY3NjE0Y2FhMGZiNTA5ZDQ3ODYgcmVsZWFzZTMxLW1haW50Cis3ODQ5NiBkNjJiZGQ4NGRmMGEzYmRhNWVlMjNhOTkyMThiZTVlNjA1MWM1NTdhIGxlZ2FjeS10cnVuaworNzg0OTcgNzc1OTM3YTM0Zjk2NjJiMzg4NTQ3ZjE3YTEzNjdjOWQ5YmRiODE3ZiBsZWdhY3ktdHJ1bmsKKzc4NDk4IDg2NDAyZmEwYzViODhlY2Y5ZWMwNTM0ODMyYTJmMTg2NWE1ZjdiZmIgcmVsZWFzZTI2LW1haW50Cis3ODQ5OSA1NjBmM2Y0ZWU5YTdkODE5ZTdhNjNjZGRjZjM5OThlZjk3YTE5NzUxIHB5M2sKKzc4NTAwIDU2MjA1ZjU0N2I3NDYwNTljNTc4N2IwMzU0OTczOWIzMDI3NDFhZmMgcHkzaworNzg1MDIgODg3MTNjMGVkMDEwMjVhODA0NTQ0ZmFlMTIwMmU4ZDlmNjcxYjE0NyByZWxlYXNlMzEtbWFpbnQKKzc4NTA1IDgxZDY4MzNjNjI3OGJlZmQwMTIzMGY1ZjhmNTI0MmY4MTUxZmFiNDMgcHkzaworNzg1MDYgODhmMTQ3ZDI2MzcyNjFmNjMzNzUzZGIwOGY2MmVjMjFjMzdjZGQ3MiBweTNrCis3ODUwNyBhOWUxZjFkMzRjOTY3MWJiZWUxNWFjZTRjOTEyYjAzYzUyMjU4NDI5IHJlbGVhc2UzMS1tYWludAorNzg1MDggNjc5ZjUyYjhhZWY0YzZkMmY2OWQyOWIwZDRhMDRmZmE0YTZkOWUzMyBsZWdhY3ktdHJ1bmsKKzc4NTA5IDgxZGNjMGM4NDVkZmI2NjhlYWMwMTg4YzVjMWY2OTc3MjMxNjAyMWMgbGVnYWN5LXRydW5rCis3ODUxMCAwMWM1OGNlZjgyZDQ4YTlhOGFiMTYyN2VjZjcyMTY0MzA3ZTE5N2M4IHB5M2sKKzc4NTExIDVkOWYzYWZiYzRlNGJjMGM1MTNlZTZhMTUxNjczOGY1M2U0YTEzYjMgbGVnYWN5LXRydW5rCis3ODUxMiAxM2ZmOWZkYjg0MzFiNzI5M2YzMWJkYTRiODE3YzZiMzczZTZkNzkzIHJlbGVhc2UyNi1tYWludAorNzg1MTMgZjM3ODYzYTdlZDY3N2E4NzEzMmU3OWI4ZDA2MDAwODFkMGIxMzRmYSBweTNrCis3ODUxNCAyMDgwYWI4ODBhODBlZDBiYWZlY2YwMTI3OThiNWYwMTZjZTUxYjkxIHJlbGVhc2UzMS1tYWludAorNzg1MTUgNzk5YmM0OTY0YTFkOTMwMmQ2Y2E3NDFhNTEyMTg1NmMzMWRkMzVkYyBsZWdhY3ktdHJ1bmsKKzc4NTE2IDc1MDgwMjc1OTIxYjhlODZiNTQ1OTc3NjUxOTIzYjY5ZGE5ODRhNDYgbGVnYWN5LXRydW5rCis3ODUxNyBlYWJmYTc3OGIwNzZiNjBlODU1YTIwNmUxMTFkZWU0MzQ1NjA4MmQ5IGxlZ2FjeS10cnVuaworNzg1MTggMmNkZWM4NDhiNzRjNjE0MDEyNmQxNDdhZWFjZGFjZjJjYjBjOGEzYyByZWxlYXNlMjYtbWFpbnQKKzc4NTE5IDk4ZTljNGZmZDM0M2FmMWNlYzUwNDZkZDBlODVkY2QxN2VjODllOTIgcHkzaworNzg1MjAgOWU4MTEzZTc2YWRiZjAxNDU0Y2RhZjBiYzM1NDM2NTRhYjhiN2U5MyByZWxlYXNlMzEtbWFpbnQKKzc4NTIxIDhlM2QwM2I4MDkwYmNiMjFkYWNlY2QxZDlmZmIzZTUyMDgwYjQzZjMgcmVsZWFzZTMxLW1haW50Cis3ODUyMiAxYzZmYzcwZjQ5ZDFhYmVlZjkxNjQ4ZDQyOWFlNDg1NjNlYTJjMGQ0IGxlZ2FjeS10cnVuaworNzg1MjMgNmU2NjRiY2M5NThkNjBmMjFlNzhkY2YxMGY4NDBmZDM1YzczMTAxOCBsZWdhY3ktdHJ1bmsKKzc4NTI0IDU1Nzc4ODU1Y2QyNWE5YWU4ZmI2Njc1ZTlmOGMyOTI3ZGI5ODlmNWQgcHkzaworNzg1MjUgMTI0NjlmMjA2NTZiZWUwNTc5NTEwZTg3Y2ZlYjllZTQ4MzdmNjkzZCByZWxlYXNlMjYtbWFpbnQKKzc4NTI2IDFmMTU4MjM4ZmE3NjRkNzAwYWM5ZmNkZTc0OGIwZWE0YTdiMzRmMzAgcmVsZWFzZTMxLW1haW50Cis3ODUyNyA0YWZjNTBkMTU1NDQ1ZDAxZDJjOTNkNmNhODZjZWZjNjM5YjcwMmYzIGxlZ2FjeS10cnVuaworNzg1MjggZTFiNzBjNmRmOWU3NzNkZmQ3MDI5MWI4ZGQ1ZWMxYzEwY2NmNDMxYSBsZWdhY3ktdHJ1bmsKKzc4NTI5IDliNGUwY2Q3ODE3YWRhMWUyZjMxMzM0OTdlN2QyMDFkNmQ4ZGNlMWUgcHkzaworNzg1MzAgMzcwZTFhMWMyMzg2OWRmODE5ZDMxYjQ0YWE5ZjMyZGYyMjg0OGY5OCBweTNrCis3ODUzMSAwNzdmMmI4YjNlNTcyOTA5MzNkZDkyYmNlNGI1MGYwMzIwMjc2MjQ3IGxlZ2FjeS10cnVuaworNzg1MzIgODU0YjM0YTA2ODk2ZmQ2ZTQ3YTE2ZThkZTNlNGMyOGYwYzMzNDQ5YSBsZWdhY3ktdHJ1bmsKKzc4NTMzIDkyNGNhMjk1YjE0NjAwMDI2MzBiMGEzN2QxZjAyZTgzYTAyNzliYjYgcHkzaworNzg1MzQgZDFjNjI4ODJjNzNiZDBkYzRmZjJhMTU2NDFkY2QzMDMwMjdkOWU4OCByZWxlYXNlMzEtbWFpbnQKKzc4NTM1IGY1M2ZlMzNlMDNlYTFiNDliZjc2OTZiYTI0YzllMzNhZGJjZTZiMDUgcmVsZWFzZTI2LW1haW50Cis3ODUzNiBjNDU4MDViYTMyM2Y3ZmFhOWFhMTcwMjM4N2IwZTFlNDIzZDgxMmU0IGxlZ2FjeS10cnVuaworNzg1MzcgOTQxZTFiZjA0ZjU1MzJlMTJmMGZmYzkwMjdkYmYwZjNiNTI2ZTZjNyByZWxlYXNlMjYtbWFpbnQKKzc4NTM4IGYwMjgzYmI2MjM2MTRhZDk1MmFmYWE3Y2VjZDNjOWY2YjIzYTMwNzQgcHkzaworNzg1MzkgNzgzZjA5YjA4NzA2ZWEzMGUyMGM1ZjBlNDYzNjZhMmIyMzg4MTcyZiByZWxlYXNlMzEtbWFpbnQKKzc4NTQwIDAyNjVjZGM4ZDViYjBjZWJiNGQ5MWNjNDkzMjY3NDg0ZTFhNzQ0YzIgcmVsZWFzZTI2LW1haW50Cis3ODU0MSA4ZDQ4ZjliNTk2ODliYTQ2OTgyNjU1N2E4ZGRkOTg2YmQ0Y2RlM2Y1IHB5M2sKKzc4NTQyIDliNzIyNzdkNmIzMGE3YzA4YzlkNmQwYjZiZDJmOWMxNDI1MTM4MGUgcmVsZWFzZTMxLW1haW50Cis3ODU0MyBkNWY1MGFlNGYxZjc4ZTE5OWYxMzczOTFhZGY0OGM3ZWYyYmI4MzhiIHJlbGVhc2UyNi1tYWludAorNzg1NDQgZjViYWM0NzM3MDY5YTQxM2U4OTJkN2E1MTA3ODk1ZGMxZDZiMWRiMiBsZWdhY3ktdHJ1bmsKKzc4NTQ1IDZmYWZiNjRlYzMyODA4ZDIzOWRkNWQwYzUwZjU2ZTZkNDc3NzIzOTEgcHkzaworNzg1NDYgNTg5MDA0YjIyZjU0YzEzNDdlN2ZlYzM1NmE3ZGYzMTBmNDVhYTRlYyBsZWdhY3ktdHJ1bmsKKzc4NTQ3IGFmZjY5MmJkYjZkYjEwNzk3ODMzMTkxZjM2YWYzMmY4MzI1ODFjYzEgcmVsZWFzZTI2LW1haW50Cis3ODU0OCA4ODdkZTVkZmQ5NjAxNWFkNDQwMjljYTFlYmZiNDQ0ZWIwNWU1MmE5IHB5M2sKKzc4NTQ5IGRjODQ2YTIxMWM2NThhYWFlMGYwOTA4ZTNjMjhhNzQxMGFmMDFjYzcgcmVsZWFzZTMxLW1haW50Cis3ODU1MCA0NmFlMTY0YjE1YmE5MWRjNjQ5MWU5MWE4NjhiMmQyNzFjMzMxN2M2IGxlZ2FjeS10cnVuaworNzg1NTEgNGUzMDQzMTA5NzQ5ZjI5NTc0NjY4ZTQ0NjVlNDliY2NiYjk3YmY3YiByZWxlYXNlMjYtbWFpbnQKKzc4NTUyIDU4YzM1NDk1YTkzNDM4N2QwNjRlZGY1OTYzNGFkNzNjYjhmZTI4ZTQgcHkzaworNzg1NTQgNGJjNWIwNDFkM2FhNmJiZTA5MDFkZjIyNjdlNThiODg4ODc3N2M5NSByZWxlYXNlMjYtbWFpbnQKKzc4NTU1IDQwYTQwNmVlZGNhYzkyZTExYTkyMzU5ZGQ2NzRkZmNhYzU3OTJhZTkgcmVsZWFzZTMxLW1haW50Cis3ODU1NiBkNTYxNWVlZTU2M2U1NjQwNTM3ZGU5OGQyYmJiYTFjNzQwYWU4NmYwIHB5M2sKKzc4NTU3IGNkZjU5NjA0YTE3NDRkNmI1M2JiNzI5ZTk5NDY3NjJmZWM5YzllMzUgcmVsZWFzZTMxLW1haW50Cis3ODU1OCA4YjdiNWM5ZTY3ZjRkNjcwM2E3ODcxNGU1NDQ5OGY4OGFiMzMxZjg0IGxlZ2FjeS10cnVuaworNzg1NTkgOTEyN2Q3MDczMGM1YjBkNjFmMDM3YTEwMWYzYWMwNmY3MDIzZDg4MiBsZWdhY3ktdHJ1bmsKKzc4NTYwIDA0NTkwZWM2ZjM3ZGRmNjU3NTAyOTUwODk3NjZkOTI5YjMxNzVjODcgcmVsZWFzZTI2LW1haW50Cis3ODU2MSA0Mzg2ODBiZTU0NzJiN2FjMjJlNjc2NjQ3ODg1MzJmYWE3MzUzNzRmIGxlZ2FjeS10cnVuaworNzg1NjIgMzlhNTAzYzg4MDAyYThmNjFlYzcwMmZjZTU2YjY1M2Q4OGYzZTU5NSBsZWdhY3ktdHJ1bmsKKzc4NTYzIGZiZGUxMWQxYzFmNWIzYjc5ZmQ1M2M3MGIzZjk2OTcyYTdlOTM4NDAgbGVnYWN5LXRydW5rCis3ODU2NCA5MzQyMzliMjY4YWRjMzU3YmMwOTU0NTUzNGVmMzgwZmFmYmY4NDZjIHJlbGVhc2UyNi1tYWludAorNzg1NjUgYzhiMjYyNzZjNTg3Nzk4NWI0YjI0NTBhOGM1NGE3ZTI4ODEyZjVmOSByZWxlYXNlMjYtbWFpbnQKKzc4NTY2IDg5ZjQyYjY4MWNlNTU3NzMyN2Y4MDQxMDMyZjYxNDY4YTMzYzE2ZTUgbGVnYWN5LXRydW5rCis3ODU2NyA2OWExMDNlZmFlOGQ0ZWI2OTQyMTliOGI1MmE3MjgxNDIwZjg4MWZiIHJlbGVhc2UyNi1tYWludAorNzg1NjggZjk5ZTdhZTcxMmIwYjI0ZjNlZWNkNGNjNTEyMWZiMjI4ZTNiZGI0YyBweTNrCis3ODU2OSA4NDk4ZjBkOWYwMjYzNjJlOWFlMTE1NDUxNmNlYTcyOGE5MWViOWZlIHJlbGVhc2UzMS1tYWludAorNzg1NzAgYWNhMTg4OTcwYzQ3ZDA2ZWIzMDY3NzI2MWQ5YjQxZDEwMDIzYzkxYSByZWxlYXNlMjYtbWFpbnQKKzc4NTcxIDJjOWJmMjE4Y2UyOTg3OGY0NzE4NDU4OTliZWMzYzdkY2Y3MGNhNGIgcmVsZWFzZTI2LW1haW50Cis3ODU3MiBjOWY2OGU0MmFiNzk2YTNiYWI0ZjhjZjNjYzY5Y2UxMDUwM2NiOTkwIHJlbGVhc2UyNi1tYWludAorNzg1NzMgMTExMDEzZGQ1YThhYTBlZTBlMjUxN2NmYjYyZWFiOWI4MDg3NGQ0OCByZWxlYXNlMjYtbWFpbnQKKzc4NTc0IDRmMTg5NDVmYjhiMTdmZGJjNDRiZmM4Mjc4NzY0Yzg2ZWNmNTllZjMgbGVnYWN5LXRydW5rCis3ODU3NiA4M2VmNjc1MjYwMTFhZmY0ZmQ5NGIxMDM4ZTAzNjFmNDdiODgyODBhIGxlZ2FjeS10cnVuaworNzg1NzcgZjkyM2ZlNTVhNDBjM2I3NWU5NTBiYTQyNGNkMmEyZjcyNWQzYTI2YiBweTNrCis3ODU3OCA3NTVkN2EzYTZiYjc1NmUzYTYyM2MyOTVhYzkyNzMyYzM1NTc1NjM5IHJlbGVhc2UyNi1tYWludAorNzg1NzkgMzhiMDJkZDJkNDU5YmFjNjYxMDhiM2IxN2Y4MGNjZTQ0MzRjZjBhYyByZWxlYXNlMzEtbWFpbnQKKzc4NTgwIDQ3MjhhYTJjOGExMjg0NWEyOGQzNzhkZWU5OGRiYWFhOWUyMjE1N2IgbGVnYWN5LXRydW5rCis3ODU4MSA3YTg5ZTFlYzRmMDA1Y2UwZTEzOWUyM2MxZDU3ZjIyMTU5MzkwOTk2IGxlZ2FjeS10cnVuaworNzg1ODIgNmQ1YzMxZjI0YTIxYjJkODRmNmE4YzYxZGI0ZjcyYTIyODY3NGMzYyBsZWdhY3ktdHJ1bmsKKzc4NTgzIDZiOTY4ZTJmMDVkZGIwZDkwMzFhYjVkYjU0MDU1M2JjMmE5MDFkNzcgcHkzaworNzg1ODUgMWFjYjY0M2IyY2Y0NDVhMDA5Y2RiN2E1NWFkMTNmYzUyOTVkZWFlOSBsZWdhY3ktdHJ1bmsKKzc4NTg2IGU2NGM0YjQzZWIzYzI3Njg5MjQyMjUyODNjM2Q2OTI0M2JmZTZjMDEgbGVnYWN5LXRydW5rCis3ODU4NyA0Y2E4M2M1Yjg1NTFiZmVjYmI4YzA3MGNkNGVhNzU5YjhjODZmODVlIGxlZ2FjeS10cnVuaworNzg1ODggODQwMWRlNjVlMTJhMjE4YzA0YjQ2MzgwMDUxNmU4NDk5MTg2ZjM5MSBsZWdhY3ktdHJ1bmsKKzc4NTg5IGRhYmRlZWM0ZjljMWQzMzE5NTQ2NzhmMmZlZGY2NTlmZTRiMWVhM2IgbGVnYWN5LXRydW5rCis3ODU5MCA4MmVkYTM0NWE1ZjZlMTNkOWNlYjYwOGU4MmRhNDIzZDk2MTQwYjExIGxlZ2FjeS10cnVuaworNzg1OTEgNGI3YjY5NTNjZDA2NDk3MGY1MDY3Y2ZjY2Y5M2MzYTQ4YjEwMDYxZiBsZWdhY3ktdHJ1bmsKKzc4NTkyIDEzN2EyMWZjZDM4NTBhYjk1OTg2MzRjOGVmMGNjMGE1ZmVlNjE0YmYgbGVnYWN5LXRydW5rCis3ODU5MyA4M2U3ZWUxODUxNjIzY2NhZTM2YzI0MjljYTk5MGRiNDBiYTQ3ODIwIGxlZ2FjeS10cnVuaworNzg1OTQgOTcwZmI0YThlNjU0YWM5YmY3OWQ0OTNjMGU2ZWRjMWI2MDI5YzU1OSBsZWdhY3ktdHJ1bmsKKzc4NTk1IDEyYmNiNjk5MzhiM2MwMTI3NzdjMjQ1MDU1NWRiYmJjYTRiMTc4YjUgcHkzaworNzg1OTYgYzMxYTdjMGM2Mzk5ODU1ZTlmODRhODYxN2E4ZDk5YjMwYmZiN2IwNyBsZWdhY3ktdHJ1bmsKKzc4NTk3IDVjNjdjMWVmOGFkM2Y0NGY2ZDY2YTI0YjcxZjEzZDZkYTExY2JlNjAgcmVsZWFzZTI2LW1haW50Cis3ODU5OCAwMWQ2YTE0YWJhNjUxNzZmYjA5NjhmZjJiMzM4ZjFjMWE3ZDYwNGY5IHB5M2sKKzc4NTk5IDk1MWM5N2UyODc4ZDcxZDgyNDI1YzE5YzA0MzM5ZDRmOGUwZDllMmEgcmVsZWFzZTMxLW1haW50Cis3ODYwMCA4ZDcyMTQ3ZjQ0MmNmOWQ1YTJmNzc0NmFiYTljNDJiMDc0N2I3MTZlIGxlZ2FjeS10cnVuaworNzg2MDEgZWJhOTQyZTc3ODk1N2ExMTYxNGE0MzY2ZTQyMzFkZjAwOTM1OTc5MCBsZWdhY3ktdHJ1bmsKKzc4NjAyIGIzMGY4Y2U4MjE2NzdkOTMwZjcwNGRlNTExYTlkNmJjN2JhMTRlZWIgcHkzaworNzg2MDMgYjA0NDQwNWQ2MmU1NWMxZTU1MDJiY2UzMWE2ZmFjYTVmODNjZmMyMiBsZWdhY3ktdHJ1bmsKKzc4NjA0IGY1NDExMTI1MjQ1ZWUyNzNmNzMxNjU5Y2U1MzVkNGQ1MDA1YzE0YmQgbGVnYWN5LXRydW5rCis3ODYwNSAyZDI0MTc2NWU2MzE3NGY3OTkzNGMzYTVmMWUxZDM5MGNmNGRiNjZkIHB5M2sKKzc4NjA2IGFhYjViNzZhYTA1OTdkODE0OTk3ZjhmYjlmZGJiNmY1ZGYxYjE3YTQgbGVnYWN5LXRydW5rCis3ODYwNyA2ODE1OTdkMGM1OGRmMTA3MGVhZDIyOGVlZTAxNjk1ZDAxMGU0N2U4IHB5M2sKKzc4NjA4IGQ0YTE4OGRhYzIyMjg1NjkwZjllYzU5NzUyOTZmNGFjNTFmZTIwNzQgcHkzaworNzg2MDkgNjUzNzc2MWMzMTAxODNmMDQzOWNjZWM4NjAzNjkwYTllZmM5YjQzOSByZWxlYXNlMzEtbWFpbnQKKzc4NjEwIDdlZWM2MjM4ZTE1YWM0ZTdmYTIyM2FiMWZiNGNjMGJmYWNjMmRhOTQgbGVnYWN5LXRydW5rCis3ODYxMSAwODY4NDYzODFlOGYzZDZmYjBlMGUxOWM2Njc4MmE4ZThkNDdhYTM0IHB5M2sKKzc4NjEyIDFlNGM0YjIzNWE4OWRkNzU0ZjA1MzQxODU3YjdjNWU4YTljMDBjNTIgcmVsZWFzZTMxLW1haW50Cis3ODYxMyAyNWMwZjRkN2FlNTY5ZTQzZmI0YjNhNjIwZWI5ZTg3NTJmZGEyMmM5IGxlZ2FjeS10cnVuaworNzg2MTQgMzhjZWY4ZGVhZTIyZWYwMTczM2ViNzFkZGZhZmE2NjA4Yjk1YzI1YSBsZWdhY3ktdHJ1bmsKKzc4NjE1IDU4NGVjN2E3MjU1YjI0MGU5ZjU3ZmM0MDU2ZjBlNzMzNjJjZWIwNDYgcHkzaworNzg2MTYgYmQ5Yzc5OTNlZTc1ZTM2NTlkOWM2M2Y0MDhiMWY0M2E3Nzk2ZjE2NCBweTNrCis3ODYxOSBiZmYwNTA0NTAyODNlYzc1YzZjZTBhYjA5NTYyMDRiYzYwYTRjNjBlIHJlbGVhc2UyNi1tYWludAorNzg2MjAgYjg3NTBjNzJiOWJjNDdmY2I2YmFlMTFhMGM2MzZlZTI0ZTNlZjdmMyBsZWdhY3ktdHJ1bmsKKzc4NjIxIDY4N2Q4NTE3YTBjMzhjZmEyZTY2NjA2ZmNiMjQ4ZTVlNTZjZmRmZTIgcmVsZWFzZTI2LW1haW50Cis3ODYyMiAyOWZhYzRiMWE1MWU3NjNkM2YwNzI5NDM5MjFjZjBhYzNmMjhlNTJhIHB5M2sKKzc4NjIzIDhhY2UyZWFkNTUyMzdiMWU3MmM2ZjM0ZDg4NDNmOThlMDYwOTdmMDggbGVnYWN5LXRydW5rCis3ODYyNCA0YjQxM2RmYTI3Zjk5MmE3YmUyMzIxODM0YzY5Y2RlZTBhMWQ2OTkzIHJlbGVhc2UzMS1tYWludAorNzg2MjUgYzUzY2M2YmQ2YjYxMzA4MDYwNzEwOTUwOTQ0NjdiYzM2ZTZjM2YyZiByZWxlYXNlMjYtbWFpbnQKKzc4NjI2IGM0ZmNhNzc4YjU3M2E1MjY2MmQ2YTAzNjc0MWM1NzI1MjUxNDUzMWQgcHkzaworNzg2MjcgYjk5OTk4NDUzZDUyM2FlMTBlYmJhM2RmYjFkNGE5ZGY3NTAwZDQ2YyByZWxlYXNlMjYtbWFpbnQKKzc4NjI4IGRlMDZiNTlhYTQzYzdmOWFhNThkMWFjZWQ4ZDZkNmFjZWQ0ODk2YjggcmVsZWFzZTMxLW1haW50Cis3ODYyOSA1YmIyOTVhOTRiMGY3ZDA0ZDRhMjc4MzRiYmNhZTIwY2IxODUzNzljIHJlbGVhc2UyNi1tYWludAorNzg2MzAgYzM1OWQ1YWNkYzRiNWI0MDdjODBkNThkMWMyYjAyZDBmMjQ1NTlkZSByZWxlYXNlMjYtbWFpbnQKKzc4NjMyIDZmMWUyZmZkN2JkZTg5ZTBhYmYzZjlkYmM5MjdkNjA1Y2QzOGY5ZTEgcHkzaworNzg2MzMgZGZhNzQ5MTE0MGQ5NGM2ZTFlMmUzNDAzNDlkNTJjYjBjNzA5Mjc2MiByZWxlYXNlMzEtbWFpbnQKKzc4NjM0IGRmMDI3MGJlZjk3MThmNGIyMDQzNmQzZDQyN2M4NDZmYTZkM2YwZmQgbGVnYWN5LXRydW5rCis3ODYzNSA4Njc4NTM0MjQyYTA5MzhkYTE3YTZkYTIyNGRkZjgyZTg3NWZhMDYzIGxlZ2FjeS10cnVuaworNzg2MzYgYmZlYTZjMjAyZWRlNTc2NzdhY2I1M2Q1NGNlNzgxYjAxOWQ5NWNiMyBweTNrCis3ODYzNyA2MGU3ZTZkM2U0NWE4OTA3YmU5MWE4MDcwNWVhMWFjNDk5MmNjYzg1IHJlbGVhc2UzMS1tYWludAorNzg2MzggN2Y1MDA2NDFjMDZhMWQ5NGM3MzUwYmI5OTI5ZDU1NTU5Mzc4NzZkZiBsZWdhY3ktdHJ1bmsKKzc4NjM5IGRkODUyNzM5OTU4MjNhYTYyYjhjZGEwZTgzMjQ5MTdhOGFiNDIwNjMgcHkzaworNzg2NDAgZDdhNjJjMTY1MDViMTJjY2MyNjc4NDYwZDQ5YjZlYjdlNDcwODM3NCByZWxlYXNlMzEtbWFpbnQKKzc4NjQxIGQ1ZmJkYTAzYzYwMzNjZTFhZWEwNDVjMTVlZDIwNjBmZjM5ZWVmM2QgbGVnYWN5LXRydW5rCis3ODY0MiA5OTQ0ZTUxMDRhNTU5NzAzOTkwM2YzOGY4ZDU0OTNkZmM1ZGFiNzViIHB5M2sKKzc4NjQzIDc1OTU5MjFhMTQ3NDgyZjIxMDYwYWMxYjUxOTU2MDI5NThjOTgzMjIgcmVsZWFzZTMxLW1haW50Cis3ODY0NCA0NjFkOWNkMTk1YjczYjMwNjY3MjY4OGYyMzAyYWIxMmJhMGFmNzBhIGxlZ2FjeS10cnVuaworNzg2NDUgNzc5MDBlN2RlYWE1ODcwMDVkZjEyZjJlZmU0ODRiMDZhZjdlZTVkMCBweTNrCis3ODY0NiAyNjI2OWRmYzIyYWI0N2U0MTE0ZWQ3ZGRmNDEyMGEzMzg1ZjE3ZjM4IGxlZ2FjeS10cnVuaworNzg2NDcgMGIyN2MzZjE4Y2IzODZmNTYyNDc3ZjM0ZmZiNmY4ZmU0MDEwODlmMCBweTNrCis3ODY0OCBmZDhmZGQzODg5NjNhOTYyMWQ4ZGI1ZmQwNjhmZDA2YTUyMjhlMWFmIHJlbGVhc2UzMS1tYWludAorNzg2NDkgMzAyZGJjNmM0ODA3MWVkZDQ0ZDdlNWZhZDM2YTAzNTM2ZGEyNmI0OSBweTNrCis3ODY1MCBiNmNhYjIxZDgwYjk1YjY3YTA1ZjMwOWUxYzViZGJmZWJhOWQyOWRmIHJlbGVhc2UzMS1tYWludAorNzg2NTEgYTNjMDA1NjZjMmQ1OWMyZGY5MWU3Y2Q0NzdkMDRkMGY0NTAxNmNiNSByZWxlYXNlMjYtbWFpbnQKKzc4NjUyIDg0MTMwYzIyNjVkY2E2ZjkyMDcyYzhhNjEzMjgyOWRhYjJmZWNlNmUgbGVnYWN5LXRydW5rCis3ODY1MyAyOTVkNTlmYTZlNjJlMWQyYzUxOTE4YWYzZDk3ZDc4ZTcyNzkzZjlhIGxlZ2FjeS10cnVuaworNzg2NTQgZGI0ZGExZWRmMzRmNWEyNTFmNWQwNDE0YmM0YjA0OWUwZDE5YzAxOSBweTNrCis3ODY1NSA2ZmFjYmMxODNhNGExZmY3Y2M2Y2FhNWJlZmE1MTRmZGUyNTliZjA3IHB5M2sKKzc4NjU2IDk4N2JhMzdhNTQ5NDNhZDQzOTUzODMwYzY5YjA2MWFjNmI5MTNkNDEgbGVnYWN5LXRydW5rCis3ODY1NyBlZWExNWZiMDI0NGUyZWI1NjEzYjk5MjFlMTQ0ZDdlYmU0OTg5MDlhIHB5M2sKKzc4NjU4IDk1MWZlYzE5NmVkYzcwYTlkYWRjNDY0YjM4ZGRlNjMzZGNlN2JlOTYgcmVsZWFzZTMxLW1haW50Cis3ODY1OSBmODM1ZTI4MjdkMWFhNjMwM2I3MDRjNzhmZGFhOTAwYTlmZTk0Y2QxIHJlbGVhc2UyNi1tYWludAorNzg2NjAgMDJhZWZjNDI1N2RlNzZmNjNlZTBiNmMzMTY5N2VhMGQ2OGIwMmRlNiBsZWdhY3ktdHJ1bmsKKzc4NjYxIGNlOGJlNjRiMzRhOGE2ZDEzZjQ0YzVlYjI2NTIxNDY1NGZmYzMyNTQgbGVnYWN5LXRydW5rCis3ODY2MiBkOGIyZmE4ODc4OGIxZjZiM2Q3M2RlY2IyYjYzMDVhYzY1MWRjNzVhIGxlZ2FjeS10cnVuaworNzg2NjMgMDQ5NTVlN2ViNTk3MDZmYjg2MjMwMjVmNjA0MGQxNTA1MGZkMWVhZSBweTNrCis3ODY2NCAzMTllNjIxNWM1NmNiOTk1ZWJmOGFjNWI5OTk5YmNlMmViZDVlOTI4IHB5M2sKKzc4NjY1IDRkZjMzZTgzZjI2ZjEwYjU3YjU3NDEyOWZjN2IyMzM5ZmZkMDlhODkgcmVsZWFzZTMxLW1haW50Cis3ODY2NiBhZDIyYmMyMmRkZGNiZWYzNjE5MTY5NmEwMDQyOWM3YTYwOGQ1MDFhIGxlZ2FjeS10cnVuaworNzg2NjcgMzU3NGM1ZmUyMDdjNDY2MTMzNzY4OWNlNTA0ZGQ5MWE5NjM0YWJiZSBsZWdhY3ktdHJ1bmsKKzc4NjY4IDY5YjJhYmI5NTM0ODc3ZGRkNjUyNjJmYWFjMGZlNWYyNjg0MGYwNTQgcmVsZWFzZTI2LW1haW50Cis3ODY2OSA4MWRjMTcyYmZkYWJkY2YzNDU2MWI4OGZjZTI1Yzk5NGFlMjA3NjA3IHJlbGVhc2UyNi1tYWludAorNzg2NzAgNzU1NzE1YjNjZjIzYTNlOTA3MjkwY2JlNzBiMTc5MWFmY2UxMDNjYyBweTNrCis3ODY3MSA0NWM0YjZkNmUyYTUzNGNlN2JjNjJmYTVjYmRiYTI2M2I4MWJmOTMzIGxlZ2FjeS10cnVuaworNzg2NzIgMDIxY2I0ZjQ1NTlhNWZhYWM0YmYxYTZlOWJiNGViOGI4NGQ3YzQyYiBweTNrCis3ODY3MyA1YjgxOWVjNGUyMDVmYzBmZDlkMTJkNDZkZjA0OWMwNTQ5N2FiMWVkIGxlZ2FjeS10cnVuaworNzg2NzQgNDMyZjhiYTY3MzgxODEyYjQ3YmQ4YTBhZmY2NWEwNmRiMDdjZDA0MCBweTNrCis3ODY3NSBmZWY0ZTI1M2U4OGFmMzVjMTJiN2JkMjQ4NzNlNjAzYmNmZGQ3YjY2IGxlZ2FjeS10cnVuaworNzg2NzYgMGZjYTM5N2Q1MGY3ZmU2NDQ3NDYyNzY0NzRhNzY0MWQ3MDJiOTNjNSBweTNrCis3ODY3OCA3YjQ4ZWJhYWRiNjAwMGNmYjU0NmY2YWE3MjhlOTQ0NTU3NGU4ZGYwIGxlZ2FjeS10cnVuaworNzg2ODAgN2U5NmIwYmNiYTI3ZWQ3OWQ5OTQ2MzNlMDM5NTllY2Y1YTBmMjdkZCBsZWdhY3ktdHJ1bmsKKzc4NjgyIDAxOTc1OTkxNmE5YmE3YTI0YzkxZDBhYjcwM2Q4NDY2ZTMyYjI4N2UgbGVnYWN5LXRydW5rCis3ODY4MyBlNTAzMDMzZTMxNDM2Yjk0OWNhZGU0Nzg5ZDJkYTM2ZGNlMWFhMmFlIGxlZ2FjeS10cnVuaworNzg2ODQgODI0NDYzYzQ0ODk4NDQwNThkN2JjY2QxZTdmMWI2MTFlYTY1OWZiZiBweTNrCis3ODY4NSA3Y2Q3ZmY2YjBhZGIyODkxMjU4MmNlMDlmZWVhZWMyZmE4YWE4ZGEzIHJlbGVhc2UyNi1tYWludAorNzg2ODYgOGI4NjRhYTc4ZTkyNTE3YTNkZjQwOWY2ZWQ2ZGRlNGQ0ZTVmYmRmMyByZWxlYXNlMzEtbWFpbnQKKzc4Njg3IGFlN2YyNmQyNGUxZGNmNzQ5N2ZlMjliN2RmOGJkNTcxZWQyOWFjN2UgcHkzaworNzg2ODggMDRkM2FlNTJmZjczMDJhMzg3OWJiYmIzYjZmNDIxZDk0MDU1Y2M1YiBsZWdhY3ktdHJ1bmsKKzc4Njg5IDMyNjE5OTk2YTAxNDhjNGQ3OTYzMTY4ODFjM2I5OTBmN2YxOTQ3MzcgcHkzaworNzg2OTAgYzJkOWQ1MGYzN2M1OWI2MzNiNGNiOGE5NTkwNGFiNzk0Y2U1MmM2MiBsZWdhY3ktdHJ1bmsKKzc4NjkxIDkxZmIzOTRjMDRkNjNkOTlmZWUyYWNkZjhjNzI2ZmZiMjM3NGM1YWMgcHkzaworNzg2OTIgODE0NzcxOTJjZjdhOTlhMjI5Zjk2Mzg3Yjk2YjdmYTBiNTllZWY5MSBweTNrCis3ODY5MyBjZWQ1ZjFmNDE0YjAwYzY1NDdkMzM3ZDJkZjQ2MGIwMDBlMTI2NzcwIHJlbGVhc2UzMS1tYWludAorNzg2OTQgZmQxNTVhMzY4ZjViZDQ2NWQ2NTMxMzE3NzIwNWMwMmY2NmExZDA5ZCBsZWdhY3ktdHJ1bmsKKzc4Njk1IDgxNzUyMmUzNTJkNjZmNmQ1NDhiOGIyMGUwMTM2NmFhMjgwOWVkODUgcHkzaworNzg2OTYgMTlmMzBiNDIyY2EzZmQxN2JhOTQ0ODI3OTc3NWIwZWIxZmNlOWY4NiBweTNrCis3ODY5NyA1MDQ4MDgzZTk5ZmZjZTQzMDkzYTdlZGYyZjU3OGIzZjYyZWFlMGE1IHB5M2sKKzc4Njk4IDMwMDNjMTY1NmUyYWRlZWI1ZmFmNWJiMjAyMGNhNjUyYzMzM2JkM2IgcHkzaworNzg2OTkgYmY1ODZiMjc3NmY2N2NjOGVjZDNmOWVkYzYxNGE1ODlmYjA1ZWRjZiByZWxlYXNlMjYtbWFpbnQKKzc4NzAwIGVjY2E3MDNiYzBkZjRkYjQ1ZWJjOTU2YzhkNzMyMTg2NmE4NTNhY2YgcmVsZWFzZTMxLW1haW50Cis3ODcwMSAzMTk3ZWNjMDk0NGExN2Y1NTk0MzBiZDNhNDFjYTQ4Yzk5N2I3MjUzIGxlZ2FjeS10cnVuaworNzg3MDIgZDllNmYzMTg1NjhmYzkzNjNhMzQ2Zjc2MGEwMzcwOTcwNWQ5YjRhNSBweTNrCis3ODcwMyBjYzcwZjY4ZTljMTExM2M5N2ZhNGIwNjcyMWIzYzQ3N2UzMGU2Y2ZjIGxlZ2FjeS10cnVuaworNzg3MDQgNDU0ZWZmODQwYmQ0MjJhZjA5ZjBlYjI1MDk3YzUwMTBiNTA4MzVlNCBsZWdhY3ktdHJ1bmsKKzc4NzA1IDhkYzQwYzYzNzYxYzhmZGNiNTU5NGU1MzVkZjQxZTE0NTQ4N2QxZmEgcHkzaworNzg3MDYgMjVlOWRkYmNlMTBhYmU0ZmJlZTM4OTc3NGYzNDI3MDQzZmY4N2U0MSBsZWdhY3ktdHJ1bmsKKzc4NzA3IDJiNTA4YWEyYTQzNmJjNTViMjQ3NTQ1N2U0MjgzZjY0ZWYzZmU2YWUgbGVnYWN5LXRydW5rCis3ODcwOCAyZDVjYTI4MDVlYTVmMWJjZDc3NDhlNmE5NzQzYzQ2YzRiNzIzYzcxIHB5M2sKKzc4NzA5IDMyYWM0MjhjZDE4YjM0MmU0ZDliNmJiOTc4OWVjYjc4YWRjZTE5Y2YgbGVnYWN5LXRydW5rCis3ODcxMCAyMTU2MzhmY2YwOWJhMDg2MzIwZDgxY2M2NWY3NTBiYjdiMTY2YzBmIGxlZ2FjeS10cnVuaworNzg3MTEgNWQ1YmNhNmVjYjE1MTg0MjkzZjUzNDQwZjBkOTViODIyYTJjYjZmMiBweTNrCis3ODcxMiA1YzMxNzY3NzVlODczMGNiM2Q3YzMwNDI5OGVhMzg1YjZkYzNjN2Y5IGxlZ2FjeS10cnVuaworNzg3MTMgNGExMTlkODRkMGI1NzU3NDNiMDE3N2JjZjk4NmVhMWIwODVjNmM5OCBsZWdhY3ktdHJ1bmsKKzc4NzE0IGI2OGE5YThjMmMxZjQ5ZjJjMDE4YzE2MTFlOTViMjdkZDJmODg5MzEgcmVsZWFzZTI2LW1haW50Cis3ODcxNSA2NzQzMDg3NWMxYTAzNjMxYWVlYzE0MDhkYTk3MDc4NWRlMGFmN2Y4IHB5M2sKKzc4NzE2IGFhNDg1MjY0NTFkMTcwNTZlMTAzZjExNTQyOGE1ZGQxN2QwYjEwYTggcmVsZWFzZTMxLW1haW50Cis3ODcxNyA1YWEzYmZjNDhjYmRlYmI4ZWU1YmU5ODMwYmVmOGYyNzFiYTE1NmQ1IGxlZ2FjeS10cnVuaworNzg3MTggYmIwOGEzZWMxNTRkYTczNzY1ZTExNDY2NTg3MDFhYzIxNTdlYmFmYyBsZWdhY3ktdHJ1bmsKKzc4NzE5IDViMTc2NDM3NDU0NWEzZjJkZjE3MzVmMTlhMThhN2IwZWQ0Y2U0N2YgbGVnYWN5LXRydW5rCis3ODcyMCA5NjZlYjFiOWU5ZGJjM2RiZjhkY2UwMzQ1YjM5OGQxZGY2NDc2ODQyIGxlZ2FjeS10cnVuaworNzg3MjEgNzQ0NGQzNDhkNzcxZjBmOTgxYzM4MDM2YWNhZTJkNmRjODgxYTY3NSBsZWdhY3ktdHJ1bmsKKzc4NzIyIDQ4YTZjMjYyMTIyNjVjNTNiNmRmZmI3YmFjNTRlMDk0YzVmZmIwNjIgbGVnYWN5LXRydW5rCis3ODcyMyA0ODZjMWM5ZWUwMDZjMDY3YWVmNGZiNGQwN2E4ZWZiZWY5NGU3ZTE2IHB5M2sKKzc4NzI0IGVmZTUyOGVlOTU4YTZiMjFkNWQ1ODU2NDc0MWJhM2U1MWNhYjBjY2IgcHkzaworNzg3MjUgMjRjNmE1ODNhODY2YWM4ZDIwNWRhM2QxMDVjYzdiYzI5MTI3MzRjNyBweTNrCis3ODcyNiA0YzVjNWI0NjY4YjRhNmFkNDhiNjhiNzAwMzllNzExOWI3MGE2NDVjIGxlZ2FjeS10cnVuaworNzg3MjcgZjM2MmNkNGJkMmM1MWM2Y2MwNTQ5MjUyNjY2OTI3ZTVjMjFkNDhjZCBweTNrCis3ODcyOCAxMjBkNmNjZjI2YjA0ZTk5NDY4YzE2NGExODRhMDhlMDJmMmM2ZmE0IGxlZ2FjeS10cnVuaworNzg3MjkgOTI1OGY0MDVhN2FjNDY2YjQ4NTcyYWRhMDIzZDhkYzllNGRiODc2MyBweTNrCis3ODczMCA5N2NhOWIxNGE2NjA3YmVjN2JmYmM2OWUwYjU3OTg1NjE1NjZiNjQyIHJlbGVhc2UzMS1tYWludAorNzg3MzEgZDBiYmJmM2M1NWY1ZTAxNWMzOWExMDUxZDBiYzQ1YWUzY2M5ZWM1YiBsZWdhY3ktdHJ1bmsKKzc4NzMyIGJkZjZkNzY4YThjYzVmOGZhZDA3NWM4ZDM4M2QyZWQwMDU5N2RmYjQgbGVnYWN5LXRydW5rCis3ODczMyBjMmNmNmM3MTcwYzUxNTJiMDUyODJiOGIzNjU5Y2Q5NTI2OTM0MTRkIHB5M2sKKzc4NzM0IGViZGMyYWE3MzBjMGJkMWMyNzM3MWMzMmU3NGU1Y2EwMzg4MjM4NWUgbGVnYWN5LXRydW5rCis3ODczNSBhMDdmNzBmYzgyYTExMDJmMWJiNWRhZDJlMzE4M2ZkZTQ2MzNmM2IxIGxlZ2FjeS10cnVuaworNzg3MzYgZThjMTE4OTE1NzYyZTc3MTlmNTY5MzhhYmVlNGZlMGVjMDU2ZjYzOSBsZWdhY3ktdHJ1bmsKKzc4NzM3IDVhOTYzMWI5ZGQyMjc2MTdiNjNiMmY3NmMwNzAwM2FhMmMwOGE1ODUgcmVsZWFzZTMxLW1haW50Cis3ODczOCBkMmUxMDI3ZWRkZTg0YTAyODUzZmNmOTc5MGYzMTFmMTBmNDZjZjBhIGxlZ2FjeS10cnVuaworNzg3MzkgZGNmYmMzNGIyZTNjNmFiNzk5ZTZmNmE5NWQ1MjJjOGYxM2Y5MmJhMiBweTNrCis3ODc0MCBmOWVhOTE3YWZmMTNmMmFhZWUzMjVkODM4N2JjYjdhNWJjY2JmMjJkIGxlZ2FjeS10cnVuaworNzg3NDEgMTQ5YjhiODc1MTRkMTA0MTZiNTk4ODg0ZGI1Zjc0NjUxZjYyNWIzOCByZWxlYXNlMzEtbWFpbnQKKzc4NzQyIDIxMjQ3ODY0MGIxYzI2MzUzNWZkMGNiZmE2ZDdkNWRmYTg4NGY3YzUgcmVsZWFzZTMxLW1haW50Cis3ODc0MyAxNmEyNmQ0Mzc0ZTQ2YmZjOTc3ZWVlNDFlMDgwNGViNWY4MGQ2MGJiIGxlZ2FjeS10cnVuaworNzg3NDQgNGZhOTZhOTEzODA4NzFiNjhlMWI4NGU3YTg3NTc4ZTdhMTE4YmU3MyByZWxlYXNlMzEtbWFpbnQKKzc4NzQ1IGFkMjU2YTZjNjU5OTBjOGEzNTM4N2IwZDNjOTJhYzBmZjljMjEwOGYgcHkzaworNzg3NDYgMzE3ZDBjNDNhYjJiNmJjODY0NDM1YjQ1ZmY2NTBjNWUzNzVkZjAyYiBsZWdhY3ktdHJ1bmsKKzc4NzQ3IGY3MzU2MTEyN2Y1N2UzZTIzODczZTlhNWUwNDFhMmJjZGIxNTVkMTggcHkzaworNzg3NDggZTZkMTQxNTg3NThlMThiNjNhZjUyYmQwYjU5MTY3MmIyNTI0MmUyNCByZWxlYXNlMjYtbWFpbnQKKzc4NzQ5IDA4MDJiYzk3M2IzMjRkYTI1MWJjZmZjMTNhZDNhOWJmNTBmZmE2MDkgbGVnYWN5LXRydW5rCis3ODc1MCBjZTk3M2I1Yzc3OWYwMzA0YWQzYWEyMGU1ZTYzMjIzNDVhYmZlNWQxIHB5M2sKKzc4NzUxIGMxNmIzN2IxODkxYjAwYzA2NTc5MTQyMWUxZDAzNTdlMGEyMGQ2NjAgbGVnYWN5LXRydW5rCis3ODc1MiBlZTg4MDI4MTViYWQyYjdmZjlmNTYwZjkwYWZjZWMzZTVkZjczYTkwIHB5M2sKKzc4NzUzIGNkZTI2ODdlMzdjMTY1MDkyNjdmODM1MzY5NzE4OTJiMTRjNzRmYzIgcmVsZWFzZTMxLW1haW50Cis3ODc1NCA0ZjAyMTc5NDkzYzI1ZDFmY2JkMTk1NWMwYjA3YTRlYjBlN2E4OWYxIHJlbGVhc2UyNi1tYWludAorNzg3NTUgMjk5MGJkM2FlODgzOGE3NmVmZjE5ZGY5MWQwZmY3YzQwY2RlODJkYyBsZWdhY3ktdHJ1bmsKKzc4NzU2IDQ5YTBhOTUwZDIxOWIyMmI5ZjVmOWRjYTAyNzVmOTQ0Y2ZhY2M3MzMgcHkzaworNzg3NTcgZTJkNDEwNzlkMDU5NjdlNWJiNmE2Zjg3Y2I5NzMwNTg4OWJhNWZhOSBsZWdhY3ktdHJ1bmsKKzc4NzU4IGUyM2NiYTAzY2M0YjMzZDllMTNmNThkMDIxYmNiY2Y4MDE4YWIyYmYgbGVnYWN5LXRydW5rCis3ODc1OSAyNzQyMmQxNzMxZTllNDY5NjQ4ZjY5NjYxMjczMDMxMTI4ZWNhNzM2IGxlZ2FjeS10cnVuaworNzg3NjAgMTc0YjA4NzliN2QwZWNhY2IyNmI3NTNmYjZhOWE1Zjk1OTk5ZDYxMSBsZWdhY3ktdHJ1bmsKKzc4NzYxIDcxZTRhYjIxMzQ2ZDQxZTUwNDExMjg1ODI0OTdhNzI3OGNiMzRmZmIgbGVnYWN5LXRydW5rCis3ODc2MiBjZmI0NDJkNzAyY2Q0NzFhNjUwMmE5ZDJmYjY2ZThhYTFlZjY3NjQ1IGxlZ2FjeS10cnVuaworNzg3NjMgMGEyNzNjYTEwZmE1ZTRkZmU2NTYxODQ5ZGQ4MTk5MzY4NzkyYzUyYSBweTNrCis3ODc2NCA0YTZiZTg2NGM2Yjg5YjE3YzYzNjhkOTgzNTcwYWM5MmQ0MTEzODZhIGxlZ2FjeS10cnVuaworNzg3NjUgODVjOTVmZDVkN2UzYTA0NGEyMDQwY2QxNTU4NTFhYWFmNjg0ZmNkZCBweTNrCis3ODc2NiBlZGFhZmNhODc0MzFjN2NkZmMxNTk5MDJjODRhMzhjZmExNjQzYjZkIHB5M2sKKzc4NzY3IGFiN2M4N2VkNWNhZGQwNGJhOTNlNzhlMjVjYzdjMTI4NTdiMDFlZTMgbGVnYWN5LXRydW5rCis3ODc2OCBkYTE5ODk0OTQ2ZTFmNjEyYzFlYzQwNDU2ODA0MjE2ZDA5Njc1ZTUyIHJlbGVhc2UzMS1tYWludAorNzg3NjkgZTQ1ZmYwMjc0ODJmZTQ4NzkzZGQ3ZmUyYjE1N2U0NmQyNzU4ODY2YSBsZWdhY3ktdHJ1bmsKKzc4NzcwIDhmMmMzNjBkMDIxNGI1MDQ1MDgyNzY3ZjYzODRhOTU4ZWJhMzBmMTMgbGVnYWN5LXRydW5rCis3ODc3MSA1YjFkYTMyYzlkNGUyZDRiMGQ4N2Q5NzczN2JiMDQwYzhlMGQyMjI4IGxlZ2FjeS10cnVuaworNzg3NzIgYzc1MjA2NGZjMjYyNzIxNDllMmJlYTA3NTg3YzVmNDNiNGYxMGM1ZSBsZWdhY3ktdHJ1bmsKKzc4NzczIDM3YTg0MjQ5YWEwNDc3N2IxNjA0YWVkYjE0N2Q5OGViNjJlMTE5OGMgbGVnYWN5LXRydW5rCis3ODc3NCA4NWVhNDU0YTEzZGNkYTEzNjNkZmE2MTZhOTVhZTNkYmIxZDcyM2Y2IGxlZ2FjeS10cnVuaworNzg3NzUgMTMxYzIxMDhkMmIxYWY5ODdlZDg3YjJjZTQ3YTE3YTI5OTY4YWMwYiBsZWdhY3ktdHJ1bmsKKzc4Nzc2IDQ2NjAzODdiOWIzNTIzMzE2OGI4ZjdkZDA4ZGVlNjcxMTkwYjAzMmIgbGVnYWN5LXRydW5rCis3ODc3NyA0MWFlZjA2MmQ1MjkzMWY1YzZlNDMzODlhZDBiZTJjNzMzNWQyZmVjIGxlZ2FjeS10cnVuaworNzg3NzggZGE3MTQ2NGQyY2ZmMjE4ZTUwZjYwMWI0NzIwZmI5NTc3Mzc4MjUyYyBsZWdhY3ktdHJ1bmsKKzc4Nzc5IDU3NWIxMmIxOThhMTY0NGE5OTFhZTNiZTczNzMwMWQyYTU3YTVmYmIgbGVnYWN5LXRydW5rCis3ODc4MCAwZjQ2OGUyZDkzZDBhZDFkMDYyMjdiZDExNmFhYWY2YzdhMjA3N2UwIHB5M2sKKzc4NzgxIGM2NzZmZjBkODQ5NWY1Nzg3N2M0YjQ2NmJhNjJkMDNkNDg4YWE1ODEgcmVsZWFzZTI2LW1haW50Cis3ODc4MiBjNmVkMzMwMzVkNjkyYWYwNTYyY2FkOWIwNWJlYWYyOTQ1YTQyZDQ0IHB5M2sKKzc4NzgzIGRhM2M1ZWZlNDI1MmRkMjMzMDA1NTBmMDk5NjQ1OTgxODMzMDFhZjIgcmVsZWFzZTMxLW1haW50Cis3ODc4NCBiMGI4MGVjMmUzYTBmZTBiNzVkZDQ5MGRjZjQzYmIzMzlkMTM2YjNkIGxlZ2FjeS10cnVuaworNzg3ODUgMzlkNzA0NzgwN2Q1Mjk1YTZkNDhhZDk0MzQ4MzhmMGRiMzdkZmQ3NyByZWxlYXNlMjYtbWFpbnQKKzc4Nzg2IDQ0NWY4MDFjYTJkMGI0MjkxYzUyYWNkNzkyNzRjOThhOGEzNjI1YTEgcHkzaworNzg3ODcgNTVmNmEzZDVjMTc3OTU3MzdhZDY5NGI2NDAyODkxMjcwM2VjMWNkZCBsZWdhY3ktdHJ1bmsKKzc4Nzg4IDY2NzE5MzJiZDhiOGJmZDIwODE0NjVkZGI2N2E2OGVhNzVmMzE3ZWUgbGVnYWN5LXRydW5rCis3ODc4OSBhM2Y2MTc4MzU0ZjVkYzFjMDc1NDM2OGIxYjc0OTgwZmI1NGM3YTg5IGxlZ2FjeS10cnVuaworNzg3OTAgOTZlMDAxMWVhMGE0NGNhNmE5NzRiYWRiNDMxNWIwNzkyMmRjNDY3YiBsZWdhY3ktdHJ1bmsKKzc4NzkxIDJhYzRmNGY3ZTM5MTE2MWNhMDIxMzc2NmMzZWU5MzZmNGJjM2YxZWYgbGVnYWN5LXRydW5rCis3ODc5MiBhMmYxYzE1Y2FlNmM0MDVlMjFlODQxNWZmYjgzNTYzOTM2MmE2OTNkIHB5M2sKKzc4NzkzIDczM2NjYzNmM2E2ODA1YjExYmY1ZDYzOGJkY2UwZDhlMjEzOTBjOGIgcHkzaworNzg3OTQgMTQ2MTZkZjkyNDA3OWQxMTUyZGFlYmViZjQ4MzE0ZDI0NzhiNDFkNiBsZWdhY3ktdHJ1bmsKKzc4Nzk1IGNkZmRlZmVjOTlhYmNkYTE0ZGNkYWE3ZjQxNTFlODA1ZjgwMTYzYzIgcHkzaworNzg3OTYgNjhlMDUwNzYzMmE5MWY3OTAwNmJiNjhjNDNjZjg4NzdlZjc0NDlkYyBweTNrCis3ODc5NyBhYzgwODg0ZGRjYzMyNjY5NDgzMzk3NDZhYjY1YWMwNTRjMzAxMjVhIHB5M2sKKzc4Nzk4IDAyNGM1M2E4NjUyMWY5MGMwMDQyMTJjZjc3NDkwMTcwMWFiNjZkZmYgcHkzaworNzg3OTkgYjNlNjY3M2I2YWU0ZDFlMDg4MmVhZGZmNzI1NmNlNjU0M2RjZjU5NSBweTNrCis3ODgwMCBkOTI4NzhiYmE3YmJmNzBmZWNiM2JhZTM3NGY3MmFhYTkwNGZjZjAxIGxlZ2FjeS10cnVuaworNzg4MDEgODk1Y2ZlYmRlMTcyN2JhN2Q1Nzk4Y2NlYWIyZWIwZmM5OGI2ZjFkZSBweTNrCis3ODgwMiBjNTU3YTU0YWQ2ZDFmODdmYWVlMDQ1ZTA4YjliZTk0ZWZkYjM0Yzc2IGxlZ2FjeS10cnVuaworNzg4MDMgMWNkYTNkNzc3N2FlN2UzZDU1YWEwZjU2MWQ0MjJkMmQyYzQ1OGNjMyBweTNrCis3ODgwNCBjODcwMzk2YjZhZTFhMTFhOTVhNDU3OWQ0Yzk1N2U3YTA5MTc3ZDRhIHB5M2sKKzc4ODA1IDU5YTE1NzNiODNhYzQ2YjE4ZTE4NGM3Y2I2OTY4M2FiZTVmMTY4YTIgcmVsZWFzZTI2LW1haW50Cis3ODgwNiBmMTI2ODJhZjU1N2I2MWFhN2UwMzk0ZjEzNDI2NTViNWZiMTRiYWJiIGxlZ2FjeS10cnVuaworNzg4MDcgMmE0ZTkyZWZmMzBhNzQyYTdlYTQ1OWY4ODQxZmI1YzMyMGIyYzQ4ZCBweTNrCis3ODgwOCBlNDIxNTVjNDc0OTRhZmZkYzY1YjdjMzAxOWU4NTVlMDJiYTQ3YTAzIHB5M2sKKzc4ODA5IDg4ZDI2NWRlN2RhZTIwNmQwY2RiYmIyMzY5Y2NkNmQ5MmNkZTYzYTkgcmVsZWFzZTMxLW1haW50Cis3ODgxMCAyZWVmOWIwZWJkNWNkZjk1ODRmZDcxZDc2Y2YxOGMwNzg0ZmJjNjIzIGxlZ2FjeS10cnVuaworNzg4MTEgNTY2NzlhZmFmMDdkYjJhZDg2MGE4NzAwNjViZWZiM2E3ZWQwZThkNiBsZWdhY3ktdHJ1bmsKKzc4ODEyIDFmNWRhNTVlZTdkN2YwMDI2NjgzOTAzMzM3YWVmZTNlMTQyM2QwZjYgbGVnYWN5LXRydW5rCis3ODgxMyBlMjc2MmY0OTUzOTM1ZTUxYTA3ZWM5ZDY1ZGQ1ZmQyODdiYWU0ZDZkIHJlbGVhc2UyNi1tYWludAorNzg4MTQgYmJmMmVkZDc1MmI2MzJmMDg5Njk3Mzk3M2Q0MDU1NTE2ZjVlMzM0NyBsZWdhY3ktdHJ1bmsKKzc4ODE1IDI2OWExMmE1MDEyM2YzYmQ5NGNhNGE5ZTJlMjNhMDAzMDYxNGY4ZGQgbGVnYWN5LXRydW5rCis3ODgxNiAzYzhlMjAwMDQzZDY5ZTg5ZTliYTZlYjllYWM1MjQyYmUxMzUyOTAwIHJlbGVhc2UyNi1tYWludAorNzg4MTcgNTVmNGRlNWUzNzhhODllYjkyODhjNzg2OWFhZjc5YzFiNmYyOTcxNCBsZWdhY3ktdHJ1bmsKKzc4ODE4IDY1MzM0MzAzZmRkM2ZhMjY2Y2Q2YjBkNzk1MzJiZWE3MWVmMmM2YjkgcHkzaworNzg4MTkgNmQ5YmUxYTk3YzE3MjJlNmE5MWQ2YjIxNTAyZjFlYTUwZjlmNTIxMiBsZWdhY3ktdHJ1bmsKKzc4ODIwIGRmYjIzOWM1MDA4OTJmZWM5NTc3ZDQzYmM4MTI0YzUzZTg0YzRmNDggcmVsZWFzZTI2LW1haW50Cis3ODgyMSA5ZGQxZWNiNWEyNGMxYjQ0MjI3NTMzOWEwMmQ1N2ZiZmJjYzZhOGIyIHB5M2sKKzc4ODIyIGZhNDYzMDkxNjY5OTA0NjM1N2E1YWMxNjg4NGYzZmM0N2JkMGVhYTYgcmVsZWFzZTI2LW1haW50Cis3ODgyMyAwMTdhYWZlODMyNmZhYzZlYTE4ZGM3MjVkMzgxMjhlOWRlODY1Nzg5IHJlbGVhc2UyNi1tYWludAorNzg4MjQgNTMwYjcxY2QzYjI5NjEyZTk4ZDZiZTEwODFmZjY4M2U1MzBjMWIxZiBweTNrLWppdAorNzg4MjUgYmMwY2M2NzcxY2FhNzg5MjQwMjk2ZDc2M2VmZjIxMDUzNzQ3YWY0YiByZWxlYXNlMzEtbWFpbnQKKzc4ODI2IDQ0Njg2NjZkMDFjNGJhNTFhNjcyOTAxZmM5NzEwZWZjZGU2MmYyY2MgbGVnYWN5LXRydW5rCis3ODgyNyA1NTUxZmU2NjY3MGMyNDRkMGQ0NTBhZjlmMGNmY2FiZDZiNmZjYWFkIGxlZ2FjeS10cnVuaworNzg4MjggYWRiYjM3ZDNkMGU1MDNkMWIwN2JmNjYzYjkwZjc4ZTkyYzhmZTE2ZCBsZWdhY3ktdHJ1bmsKKzc4ODI5IDEzNWNkODA2NGQ2ZmI4NWU4NDlmN2JhM2MzOWRhNTE4M2RlYTNiYTUgcHkzaworNzg4MzAgNWI0YTY2ZDYwMWMzYTQ0NjMwMjM0ZWRkODQzZDZmMTlmODg3ODhjMiBsZWdhY3ktdHJ1bmsKKzc4ODMxIDA1M2VmNmU4M2NlZDdjNWQzODhlNDBkNWIwNWM2ZDg2MzJjOTMwOTIgcHkzaworNzg4MzIgYWQ4ZjYzZDlkY2Q4MDM0OGQxYmU3OGI2YmNmZTY5NWE1MTdmYTYyMCBsZWdhY3ktdHJ1bmsKKzc4ODMzIDZlMzdlMTI3NTgxYjRjMTAzMGM5YzA4NzQ4OTUzNjM2YWIwMzU3OGIgbGVnYWN5LXRydW5rCis3ODgzNCBhMTExMDI0YTBiY2I2YzcyZDQzMDEzNmEyMzEwNzc1M2ZjYTg0MGFjIHB5M2sKKzc4ODM1IDhiMjQ2ZTg1NjBkYjVkMDFhZTgxZjk5ZmU5ZGNlYWExZjM2ZDk0ZDMgbGVnYWN5LXRydW5rCis3ODgzNiBlNTM2N2Q2N2E3ZjhhYmI3ODZmMjk1MGU4NThhZGEwODkxMTBlNTlmIGxlZ2FjeS10cnVuaworNzg4MzcgYjhlZGUwZmVlNjFhMTM5ZmJmZjc5MTdhMjg3NGIwNjk4ODdkZDg5ZSBsZWdhY3ktdHJ1bmsKKzc4ODM4IDgzMWUzMGMwZmQ3MzA2ODVhY2UyNTM0YWJiMWVhNmZjYmNiYWU2N2YgbGVnYWN5LXRydW5rCis3ODgzOSA5MDNkM2U2MzNhOTI1N2M5M2Q4MzFmY2Q5MGYyNmVhNDRkMzczY2FjIGxlZ2FjeS10cnVuaworNzg4NDEgMDZhZDMyYzAzNDg2NGI2YWQ4OTRjZGUwMTFmOWIzMjI5ZmZhYTRiOSBsZWdhY3ktdHJ1bmsKKzc4ODQyIDkzNDczNzliZDVmYjk3ZDNlNjNlN2U0MzlmM2Q4ZDE0MDNmOTY2MGQgbGVnYWN5LXRydW5rCis3ODg0MyBiNjJmNzZhZDQzMGUyODAyMmViNzY5Zjc1NDI4ODQ1MzM3YzZjMzYzIHB5M2sKKzc4ODQ0IDRkZDA4YTVjY2E4YWQ5YzRhNjY1NDZmMjEyMmQ4MGEyYzFiZTM2YmUgbGVnYWN5LXRydW5rCis3ODg0NSAyMDE2MGI0NjFjZDNhZWIzMDQ2ZmFmOTllOGZkNGFhYTM1NTY1NWVjIHB5M2sKKzc4ODQ2IGVmNDhlNDhmMDY2ZTk5OTE1NzM1NjgyYjI5YTViMTIzYjM0Y2ZkMjMgbGVnYWN5LXRydW5rCis3ODg0NyAzZWQ5NTQ5MGJhOWQzZGM3MjhjMGE5YmVmNTVmMzViNzc2NGEzNzgwIGxlZ2FjeS10cnVuaworNzg4NDggNmVhMGE1OGVkODM3NjkwNGRiOTkxYmU4NTg2Y2ZlYTA5NTg4MTAxNyBweTNrCis3ODg0OSA0OTEyY2YzYjAxOTBiMzZkYWU1YjRhY2E3NzA2Mjc3NzA2NWRlMTY5IHB5M2sKKzc4ODUwIGZjZmUzMjQ2NjNhNjE3MTdhNDliNTgyZDQ1ZTQxNzIyZTViYzczNDkgcHkzaworNzg4NTEgNWM1ZGU4YWNiMzNjMWE1MTE2OTMwZWE4NjM5ZGY4YzAyN2Q2NDNjOSBweTNrCis3ODg1MiA5YzJkOTE5MDE0ZDA3YWFkYmU2MTRiMTM4ODcyOGEwNzVmNDczNjFlIHB5M2sKKzc4ODUzIGE1NjZlNTNmMTA2ZDYwZmVhYmFjYTkwNDUyOWFlNmI3ZDVkMGE3ODkgbGVnYWN5LXRydW5rCis3ODg1NSAxMzVhYTdlZGY3OTJiODM3NDlhZmEzOTQ1ZjMyYTc0Yzg3NDU4NzQ3IGxlZ2FjeS10cnVuaworNzg4NTkgNTM5NGQ4MWM0NTEzYmFiODdjMmEzMmQ4MWQ0YmUzNmNhNDdiODk4NCBsZWdhY3ktdHJ1bmsKKzc4ODYwIDYyZDdmMDQ5NzAzYjQ4MzA1NzhiYTEwZDdkZDUwNGZiNTNlOTg3ZmIgbGVnYWN5LXRydW5rCis3ODg2MSA5MDI3YjE1ZjliYjc2MmE1NzRlYmYxZDhhZGZhNDA5NTdlNjM3MzEwIHB5M2sKKzc4ODYyIDk5NDg3MTQ1MzJmOTIxMTVhMDA1NDAyOTlkZTliMTRlY2U0ZTM0ZjEgcHkzaworNzg4NjMgZGQ0OGUzZjMyZGU1NTRmM2VhNjMzMzU0YjlkNmQ2ZGJkZjBlYmE0YSBweTNrCis3ODg2OCAyMzZmYjBhZjQ0MDQ5NzA5NjgzYWJiNTFkZjIwNWQ5NjA3NTFkMWJkIHB5M2sKKzc4ODY5IGIwNTZiYzc2N2FlMWViMThmOTI4NWFjYjJkMTVhZTk2MTBmNzhkMjAgcHkzaworNzg4NzAgMjZiMTk4MDlkODJlOGYzN2E2MjViMTk0OTQ4ZGU1ZWVjMmQwZjQyNyBsZWdhY3ktdHJ1bmsKKzc4ODcxIDY5YjcxYzMzODk5MjViMTM2NTg4YjAwOTEyMjEzZDI5MDc3ZGM1MzUgcHkzaworNzg4NzIgNDIyNjFjNmNhNTY0MzAxZjJkZWZjYmY4MTA4NTdlZGFjYjNmYjRiZSBweTNrCis3ODg3MyAxYmNiNDY1NDcyYmU1OWE4MzZjYTM2NDRjMmZiNjc2NWUzZjZmMDZjIHB5M2sKKzc4ODc1IGY0OWQyNGI0NDU2ZWM5ZTk0MWEyODUzYzQwMjNmMTAyZDNmZmM1NDQgcHkzaworNzg4NzYgMDZmZGM1ZTBjMmMyNDNjODNjNWJlOWE0NmZjZGNiODkyMmRiYWE1NyBweTNrCis3ODg3NyBjOWRkODIzYzE0NmQxYjZmMjJmZmM4MzFkZThlMGQ2NjQzMTFiMThmIHJlbGVhc2UyNi1tYWludAorNzg4ODAgYWM3NTRmYWViNjNlODhmNWUxMWRkMmVkMDE1ZTA0YmQ1ZjJiZjQ3NiBsZWdhY3ktdHJ1bmsKKzc4ODgxIDgyYTIzMDQ3MTk0YmZkMDU4NmMzYmQ2NjBkZTkxYTUxOWVjZjQ2MmYgcmVsZWFzZTI2LW1haW50Cis3ODg4MiAwN2FkYjA5NDQwZWY4OTY2NTI0OGU1NjU4YTk0MmE5ZTExMWY4ZjhjIHB5M2sKKzc4ODgzIDZhZTA5MGZkOTlmZTNiMTMzMjA3MjRiMzM1OWQ3N2E1NjQ5MWJkMGMgcmVsZWFzZTMxLW1haW50Cis3ODg4NCAyNzNlYjVjMWI5Yjk3MzVhZTYzZjVmOGEwYjAzNmQ4YTNhYWVhMTBmIHB5M2sKKzc4ODg1IDkwMGZjYWNjNjQwMzRhMTc0Y2E5NGM3MTI2ZWM0NWQwYzUzNDU5NDMgcmVsZWFzZTMxLW1haW50Cis3ODg4NiAxZTAxZWY5NzU4OTk5ZjZmY2ZmZjAxNDQ3ZmEwZGI3M2E3NzE0YmRhIGxlZ2FjeS10cnVuaworNzg4ODcgNzZmMDdjY2Q3ZGI1Yzc1ZWVjMmZhNmJiYzkzZGU1NWFiYzU2MWZiMSBsZWdhY3ktdHJ1bmsKKzc4ODg4IDY3MjY0NjM2NDZmYjQwODhlZjMyMzM3NmNmY2Y0NDMyMWY5Zjc1MjMgcHkzaworNzg4ODkgOTgwODA4ZGUzMGM5MWVmMzU5NTI4ZjU3MjQ0MzJiZDdhYjk2ZjA0MiByZWxlYXNlMjYtbWFpbnQKKzc4ODkwIGU0NzQzODZmZjk2ZTg4NTlhOTkyZTM5MmNhMzAyMGVkZDk0OGEzYzAgcmVsZWFzZTMxLW1haW50Cis3ODg5MSBmODA4YjE2Y2NmZDZhZGUzMWFkNTM0Y2Y3YTUwN2Y4ZjAyMGNlZmU5IHB5M2sKKzc4ODkyIGQ2ZjIwNGQ0MDY5NWViZWY2MTNhZDRmZGVkN2YxZDM0ZDZhYTMxZTUgcmVsZWFzZTMxLW1haW50Cis3ODg5MyBjMWZiMDdhNTdjOGQ2NzlhMzI3Yjg3YmU3MTQyOTg2YzI3YzYyZGQyIHB5M2sKKzc4ODk0IGMyMWIzZTMyZWQ3YjhlMmU2YTU0MTQ2ZWI2MTM0NWNjMWE5MGEyN2QgcHkzaworNzg4OTUgNWRjYzM2MTlkNmQxZGE4M2EwOGRkNDAzYmM1ZDM3NjQ5NGM4YmU1MSBsZWdhY3ktdHJ1bmsKKzc4ODk2IDY3MzUzZmI0MDVlYzkyYmUxMDhkNTliMjUyZjdkYzRjMDExMDdiODMgcHkzaworNzg4OTcgMjJjODc3MGY5OTIzOTZiM2NkYTFiZWVjYjQxZGQ5ZmVkODQ2ZThmNCByZWxlYXNlMzEtbWFpbnQKKzc4ODk4IDFlZTI0NTJjZTk0MjY2MTZlNTIyNjAxMzMyNTBlNDFiOWY3MDg5ZTIgbGVnYWN5LXRydW5rCis3ODg5OSBmNDBhODA4NTI0ODAzNWIxNzFiM2Q2YzczMzgwZTJjMzdjOGJjM2MwIHB5M2sKKzc4OTAwIGUxMGQ2MWNhMzY4ZWRmYWRmYzZkYjUwMzNmNGM3ZmRkZGExYWFlZDAgbGVnYWN5LXRydW5rCis3ODkwMSA3N2M1YzkwYmVlZjAyOGQ4Yzk4ZDQzMDlmZjAyYjZjMDM2ZTE3MDRlIHB5M2sKKzc4OTAyIGY2NTk3N2RjZjIxYWNhZDAzZTFlNjRiNDU0NmNlZjQyOGY4OWUyZTQgcHkzaworNzg5MDMgNGZiZjNlNzA4ZmM0MDFiNzE1Zjg5MGUxZWI5YmJmN2M5Y2IzYjdkNyByZWxlYXNlMzEtbWFpbnQKKzc4OTA0IGIzZWU1ZmVkOGRhNDgxMDRmZDc5ZWEwY2Y5ODRmMmZhODBiMDcwOGEgcmVsZWFzZTMxLW1haW50Cis3ODkwNSA4MDI4MzcwOTcxOTE3NjkyNmU4NDJmYjEyYTIyZDQ2MzU3OTcxY2I1IHJlbGVhc2UyNi1tYWludAorNzg5MDYgOTBkYWEwN2E0M2JmZTk0N2JkNWMyNDE3MzVlOTNjN2E4NDVlMTI5ZiByZWxlYXNlMzEtbWFpbnQKKzc4OTA3IDVhMTZiZjZkYTk4OTJmODVkYWNiMTM2NWI2MjNiOGYwOGI2N2RjNWQgcmVsZWFzZTI2LW1haW50Cis3ODkwOCBmMjU1YTQ2YjMxNWFmNjI5NWQ5NTE3NDdkMDU3MjM1NzU0NmM2Nzk4IGxlZ2FjeS10cnVuaworNzg5MTAgZGE5NGYxNjY2ZGExOGQxN2MyYThjNTdiNTZlMDQyODU5Nzc2MWZhZCBsZWdhY3ktdHJ1bmsKKzc4OTExIDU1ZWNkYjc5YzY2MDJkZDZlNGZlZmJmYzA0YmJkOWI2MTlhZGI0ZTUgcHkzaworNzg5MTIgYjFiMjJjNjAyMjJiNDAwMmVhNzBlM2Y3YzBjY2U5NTI4NjE2ZGU1ZSByZWxlYXNlMzEtbWFpbnQKKzc4OTEzIDQ2MDgyM2M2NzVmODkzOGJiMWY1NGFlOWU3NWMzNTgzZDUxN2M1YTAgcmVsZWFzZTI2LW1haW50Cis3ODkxNCA0M2NhNjdiZDcwMGE2OTgxMDNhNjUyYmEyMTUwYzNmY2RlZDNhMzgwIHJlbGVhc2UyNi1tYWludAorNzg5MTUgYWQwMTdkMWI4MDcyZTBmYTg4ZDY3YjYzZWFkYTQzMDYzY2UwZjgwYiBweTNrCis3ODkxNiA1YTZlODk3MDY0ZDZiYjE5MjA4NTkxZDhkNTAzNGEzZTBlMmM2MWRiIHJlbGVhc2UzMS1tYWludAorNzg5MTcgNmQ1YWJmZjdmYzMxMzk4YjFkZmM2ZWJkYzExY2JmZjE3ZTNlZjYxMCBsZWdhY3ktdHJ1bmsKKzc4OTE4IGQxZWRmMjgyNDAwODI1ZjFkMTRiMWM4ZmU3MmFlZWRjY2UzZDRiNTAgcHkzaworNzg5MTkgMjdhYTQ2ZDAyMTRhYmMwMDY0NDEwMGEzOThmMWY1YjcxZDAzNmVjMCBsZWdhY3ktdHJ1bmsKKzc4OTIwIGE3YjU4ZjFlOGFmMDg1ZDg3NDVkYjg3YzZkMWNiNGNhNjE5NGRhNjQgcHkzaworNzg5MjEgYjg3OGEwYWQ0ZDhjNmI0Y2I2NWRhODJjNjVkNzVhOTI5MGMxYjZlNyBsZWdhY3ktdHJ1bmsKKzc4OTIyIDUxZDI2ZjMxYmNlOTU1MmI2MjJjY2Y1ZTBkZWZmNTgyMmU1YzcxZDYgbGVnYWN5LXRydW5rCis3ODkyMyBlMWQ1MWNkMzE1ZDA4NTM0MTZiNmEyZGNkZGJhNWYyNWVjMjQ5N2ZkIHJlbGVhc2UyNi1tYWludAorNzg5MjQgMzJjNWFkMjk2NjNjZGUzNzQyY2FkMTA5YmYwZTBhMmVkMzQ3Yjk4ZSBweTNrCis3ODkyNSAxOWU5NjYwZDlhYTUxMmZlMzQ2YmE0MjRmNTM1NTdmOTE2ODNlYzlkIHJlbGVhc2UzMS1tYWludAorNzg5MjYgZTgwOGZjNTQ4Y2Q2NjVjOWE2MTQyZTUwODI4N2I2YWFjNDI0MTcyOSBsZWdhY3ktdHJ1bmsKKzc4OTI3IDAwMjZlNDQzNjJlNTdkMDRlNTQ4NWI0YmEzZGExYzQ2Y2ZmZmI3MjUgcHkzaworNzg5MjkgNjc3NGU4YzZjMzlmMzg0Y2U1N2I4Zjg1MGRkYjY1ZGUyNzcxMTZjNSBweTNrCis3ODkzMCA4NTkyOTZhNzA5MmYwY2JiNmYxYzEyYmUxMmRjYzNlZmFjY2FkNGZlIHB5M2sKKzc4OTMxIGUwYTE3NzBkZjUyNzg2MTJlZGVjNDMzYjQxMTVlYjg4YWUxMTY0ODEgcmVsZWFzZTI2LW1haW50Cis3ODkzMiA3MjhlZjAwNzJkYWYyMmQ4OWYzYzgzMThmZmI4ZDg0YmZjMmQ4M2NkIGxlZ2FjeS10cnVuaworNzg5MzMgMjkwOWE0Y2IxYmE3MmYxM2NkNTAzOTg0Mzc0ZTFhNzA5NDEwMjU4MCBweTNrCis3ODkzNCBhZGMzOTBlNjY4OTA0MDFkNzYxZjE3NzRmYzA4YjU2NzdkZWFiOTVjIGxlZ2FjeS10cnVuaworNzg5MzUgY2MxMzIxMjEyZTczNDYwY2JiMWU1ZTlkOTA3MDBmOWY5NjFhMzk4MCByZWxlYXNlMjYtbWFpbnQKKzc4OTM2IGQ2ZTI3ZmEyMmY0MmEyNjZjNjZlZWI2MzhkMDU2Y2MwMmVhMWY4MWIgcmVsZWFzZTI2LW1haW50Cis3ODkzNyA1ZmU1YTI2ZTMxNjllODljZGE5NTgwYmJmODlmMzdmZjk5YWQ2NzU4IGxlZ2FjeS10cnVuaworNzg5MzggZDM5MDVhOWY0MGY0MDU5ZDJkNWI5N2IyNTc3ZDUxMmM3ZmZlYmMzNyBweTNrCis3ODkzOSAwYjQ1N2YxNDk3NjFkYjZhYWY3MGMyOGRlMjUwNWIwZWYyNGU1MzBmIGxlZ2FjeS10cnVuaworNzg5NDAgMWE4MTBjZTEzZGJkN2M0M2JjN2I3MzIzMzc5Y2M0NWUxYjc1MjNmOSBweTNrCis3ODk0MSA5Njk2OTMyYWQ4Mjc1ZTczZmE5N2M1MDgwYTZlYWIxMWU2Y2FlM2E4IHB5M2sKKzc4OTQyIDdhMThjMjc2Mjg4NjE2NTQzMDlhZGRhNDQzYWFjOGIyNzYzODdiZTUgcHkzaworNzg5NDMgZDMwZWI0MjJjNTY0YmY2MWEwYzNkODBkMDgyMjFmOWFhMjA0MjE2MCBweTNrCis3ODk0NCA0NjFiODliOTU1NWQwY2E5MzJjNTlmNDIxM2QxZTI4NTM5OGIyMjM5IGxlZ2FjeS10cnVuaworNzg5NDUgZjA5N2YyYmEyMzI5MzcyNzMzM2E2ZmI5OGU1YWM1YzNjYzE0ZTYwYyBweTNrCis3ODk0NiA3Njg3MjJiMmFlMGE1OTg0MDc5MGRlMTUwMjVkZDU3N2JhMjMzYmM3IHB5M2sKKzc4OTQ3IDM3MmQxZGU4NmRlOWY4NjMwZGU2ODg2Yzk3OTJlNjAzOGJjNTU5OGMgcHkzaworNzg5NDggM2Q2ODA5NDlmNzU1ZDg2YmE5YWU3MTIzNGI1MzE4NTAyNDBiN2FhNiBweTNrCis3ODk0OSBmMTI3MGUwMGY1ODc4NzZjM2NhZjFhZWE1Njk3ZjBjNDQzMDQyODFiIGxlZ2FjeS10cnVuaworNzg5NTAgZGY4ZjgxZGY4NTk1Y2U1Zjk0ZDRiNTNiNGQ5MWY2ODEyOWY2NDU0NiBweTNrCis3ODk1MSAzMDhjZmY3ZGY2NGYxNzRlZGU4NjlhMzZhYmI5MGUwZjI0MzU3OTc5IHJlbGVhc2UzMS1tYWludAorNzg5NTIgNDAzZDBhMjdiZDU2ZWU1NTM2NGM3Y2ZmYzRhYjgwZjBiNDA5MzllYSBsZWdhY3ktdHJ1bmsKKzc4OTU0IGU3ZjExZjQ0ZDUxNDU1ZjQyY2YyZTg3OGRkYzE0ZDhkNTM5NjljYjQgbGVnYWN5LXRydW5rCis3ODk1NSA3N2M3MWYyNThkZjdjYTc1Zjg1YjQ5ODdiNTM1OTc3MjYzODRhNWZmIHB5M2sKKzc4OTU2IDViNzU0ZTg4Mjg1N2NmZDFiMzM0NWY0MzEyZGQ4ODI1OWEzY2E4ZTIgcHkzaworNzg5NTcgYjkzY2ZhZmNkY2FkN2MzM2NiOTUzNjg4ZDBlMTExNTZhZDMwZWJiMSBweTNrCis3ODk1OCA5Y2Y3MDJjOTFhOWU4YWVmODQ5M2YzYTVmNTBmNzQ1YjY4NWZiMGJjIHB5M2sKKzc4OTU5IGU3YjVmYzg2NDZhYmZhOTAxZTcyYTMzYWMzOThhZjllZDUyZWQ3NjkgcHkzaworNzg5NjAgYzhjY2I0ZTBjNmZlYTdkM2QwMzNkMmU3YmQ0NjU5ODhmMmU1ZGY0NiBweTNrCis3ODk2MSBjNDVmMjE3MDVlY2I3OWUzNDFiZmI0YzM5M2YxYzU3NTIzYjUzNmIyIHB5M2sKKzc4OTYyIDhhOTA5ZTZkMmNhZmE3OTNlZmU0N2JiNDE2MjM1NTAwMzdhM2FhNjcgbGVnYWN5LXRydW5rCis3ODk2MyBjMTZlMDc1NWZjZDdkMDc4ZDQ2NTE0OTQ2NTY2YjBiOTQyZTFjOTYxIHB5M2sKKzc4OTY0IGI1NzBjNWI5YjJlZjM1NDg0MzY3ZTU2MTQ1MzAxOTA5OWRiNGJhYzMgbGVnYWN5LXRydW5rCis3ODk2NSA1OWUyMjNhMDU2ODBmYTI5MWJmZDMzZTMxMzFjNjc0MTk3NWEwMjEzIHB5M2sKKzc4OTY2IGQzNjBmMzdhNGI1OTVmYjlhMzQ1MzA1NzVkMWZlNDVlOTZkNzYyODggbGVnYWN5LXRydW5rCis3ODk2NyA4ZjE5OTNiODY2Zjc5MDIxNDgwMWMwY2MxODFkNGIzMGFiN2I4YzI4IHB5M2sKKzc4OTY4IGVlZmQ1MjFmMTljZTA1ZjM5Zjc0YjAyYzcxOTJiNmJmMmE4MGNiMGMgbGVnYWN5LXRydW5rCis3ODk2OSBiYjA2YWE5MTgzODIxZDQ1MjI3YjM4MmY5NzI4MGFlMGE5NmIwMmQzIGxlZ2FjeS10cnVuaworNzg5NzAgMDhjNTQ3M2JlZGNjMzkzZWZlNTRmMmVjYTUxZTExYThhYzExMTk4ZiBsZWdhY3ktdHJ1bmsKKzc4OTcxIGUxZGUwODBjNDU1NmQzOTUwMDA0YjY0MzQ1OGJhYTRjMDk4OWFlYTEgbGVnYWN5LXRydW5rCis3ODk3MiBiNzRmMWJiODhlNjA5NGYzMzNiODJjNzhjNmQ1YTZiZGEyMmIxZDQzIGxlZ2FjeS10cnVuaworNzg5NzMgYWRiNWU5MjhiZGUyMGY3MmU2NTYxZTBlMGZmZTBiY2QyZmU5NzU1YSBweTNrCis3ODk3NCAzOGYyZjUyNjJiMjAzYWQ1NmYxMDk4MGQ2YTc1YjRhYjA4NTBhZTY0IGxlZ2FjeS10cnVuaworNzg5NzUgMzdhZDQwYTI4ZDNiZjQwYjljNzAyMGJlNGRlOTQ5NjFiYWFhOGUyMiBweTNrCis3ODk3NiA5NWYyMWIyYzIxNmMwOGZkZDk2YjFmYjY1MDliMGRjYjFkODY0MGVlIGxlZ2FjeS10cnVuaworNzg5NzcgOGUzOGI3YmVmNzAwMDQyZmY2Y2UzZmEwYWY5NThiNTJlMDE4ZWM0MSBweTNrCis3ODk3OCBkYjM3OWE5MGI0NmU0MDQwMmQ0NTBiMDRmYjBkYWNiNmZjNjkwNTYxIHB5M2sKKzc4OTc5IDczZTQyYzBmNWM5OWU1MjFmZGJmMWU4MDk5YzcwZmMzZmNiOTAyMTggbGVnYWN5LXRydW5rCis3ODk4MCBiODkwMGExZDk4MzUzMDg4YzUxMGFiMTYxMjY1ZGFmNDRmNTc0ZjkzIHB5M2sKKzc4OTgxIGEyZGJhNmZlM2ZiZTVhODhjYWEyMjQ2NGFmNTM2NzdjMmIzMTAwNjggcmVsZWFzZTMxLW1haW50Cis3ODk4MiA4YWE1NTMwZTg0MDczZDg4ZmJhZWJkMzE3N2U4MjFhZWNjNzgzOTcyIGxlZ2FjeS10cnVuaworNzg5ODMgZWViOWJmMTUyNWJhYzhhYWRkYzM1MDBjY2U0NDdjODhhMTg4Mjk2YSBsZWdhY3ktdHJ1bmsKKzc4OTg1IGMxOWI0YmZiODA2YWE4YzE1MTVkODM3ZjFkOWM0ODFkMTg1MWNjMTIgbGVnYWN5LXRydW5rCis3ODk4NiBjNGRkMzBiNWQwN2VhY2ZiM2VhZWQ0NDdlODVhOWUxMTVjNjc3ZGNmIGxlZ2FjeS10cnVuaworNzg5ODcgNTk5MzExNzljNWUyYzU4MjNkMTYyZDI3NjBiN2JjMjg1OGE3ZDRhNyBweTNrCis3ODk4OCA3OTg0NWUzZDVjYWMyMWU1ZWEzNjZkOGRjNmExMTQ4YmNjZmQzZTJiIGxlZ2FjeS10cnVuaworNzg5ODkgOWZmYzhmMDUxNWNkZWM2MDg0ZmU1ZWUyYTgxZDM3NWYwNjhkYTY4MSBweTNrCis3ODk5MCA5MjNjODczOWNhODYxNzRmZWY5MjQ4ZDY1MGU4NDAxNzMyMmE3YjYyIHJlbGVhc2UzMS1tYWludAorNzg5OTEgODUyNzk5YmIzZmIxM2NjMWJhNzViNDgxNTEzNzVmNzEzNjMxNTBiNSBweTNrCis3ODk5MiA0MjU3MmUzNDcxMDhhMmQxZGQ3NTM5NWE2NzA2MzYyOGI0N2Y2Y2Q5IHB5M2sKKzc4OTkzIGI0NTMzYjU4MGZjOWVjMWEzZGE1NTVmNWFkODM4ZDY0OGYxM2Y3MWUgcHkzaworNzg5OTQgNzQ1MTQwMDBmODM3NWQ2NDc5OTllNTZkNjMwMjNmZmUyOGY5ZWU1MSBweTNrCis3ODk5NSA2NjFjYTBiMDVhMzFlNzU1YmMzMWViMGJhMjI3NTQxNjkyNGZhZjUzIHB5M2staml0Cis3ODk5NiBiZjRhNGFjZWZiMmY4NzA4YjM4OTI2NzY5NGQ3OWZiNDFjMGY1ZTNkIGxlZ2FjeS10cnVuaworNzg5OTcgYzk2NmU2ZmQ2MTc4YjEzZGQ0MzdlNmM1OGRiZWI2YzU4ZWM5OGU0NCBweTNrCis3ODk5OCA5NWIyNjljODY4ZGFjOTQ1YjFhY2RkZWE2YjQ0M2VlZTcyNGFmZDI0IHB5M2staml0Cis3OTAwOSBhYTYzMjk0M2I4YmRkYWQxMTJlYTcwYTBlNWViNDk2YTU2OTRiZTI1IHB5M2sKKzc5MDEwIDk3YjY2MmIxMGZmODM5MGU0MTkxNzRjY2FhYmFlNjQ2ZTE5YmU3OGUgcHkzay1qaXQKKzc5MDExIDJlMTZjOTYzNDAxZGUwM2IwNjllYzc5M2NlMDJhMjFhNzI2NjdiNGIgcHkzay1qaXQKKzc5MDEyIGJjNjViODZmYWU5NDYyZTdkOGE2YmU4ZjkzZDExYmQ2ZWRjN2YwZDUgcHkzay1qaXQKKzc5MDEzIDE5MGVhZGFlYWJjNTJhZDdkZmQyNTMwZDc1NjZkMWU5YTYzN2I1MmUgbGVnYWN5LXRydW5rCis3OTAxNCAwZjA4MDk2MWVjZWYxMzFiMDRmMjM4MmY0OWE2OGEwMGJiNmI4ZjcyIHB5M2sKKzc5MDE1IDNiZTNhYzAxOWJkYjA0ZTQzOTBkMTk2MTc4Yjc4OGQxYWQ1ZDM3MmUgcHkzay1qaXQKKzc5MDE2IDIwNjRiZjYyYTM5Zjc4NjhiM2MzNzQwYTk0ZDA1MjNhZjEyOTVmMjMgbGVnYWN5LXRydW5rCis3OTAxNyBiYWM3MmYxMWE5OGM1NmMzNjA3OGUyZWRlMzJiMDUxYTU4MDg3ZTUzIHB5M2sKKzc5MDE4IDMwZjI4MzAzOWUwZTk5YTc1N2QwODAzMDNlMDI4OGIxYWM0NWExNWMgbGVnYWN5LXRydW5rCis3OTAxOSA0NDA3YWM0YzYzNjBiZTQxZjBiZWFlNzkwM2NiNDk2ZjJiZTk1MTBjIHB5M2sKKzc5MDIwIDU4ZTNiYzIxYzJkZDcwMWViNDJhNTc1YzdlMGFiMDU2MWZkMzkzMGYgcHkzaworNzkwMjEgNzA2NTU5ZDNhYzU5MDhlY2FhN2Q0NzBkODU2MTY2NWRlMWNkOWJhZiBweTNrLWppdAorNzkwMjIgNjljMGQ1ZWEyZTFlM2MzYjQ3MGU4ZTQ2ZTNkNzhmMDNmODIzYTZjMyBweTNrCis3OTAyMyA1Yjg4OGY1OTBmZTI0Y2IyMzRlMTI2ZmM0Y2ZiZGNhMTI3Y2M3YmYxIGxlZ2FjeS10cnVuaworNzkwMjQgNTgyNzgwZWRkMGU4OGEzYmM2NTMzNjY5ZTA1MGU1NzA0NmUzMmQ3YyBsZWdhY3ktdHJ1bmsKKzc5MDI1IDgwMzhhZjFlMjA2NTVlYjYzM2NlNjhiNDE5MGNhYWM2ZjQxNDhkY2UgcHkzaworNzkwMjYgOGE0NjkzZDUxN2ZlY2YxYTNjODQ5MTU3MDc3MjQwNjM2OTBiZTk5ZCBsZWdhY3ktdHJ1bmsKKzc5MDI3IDdmMTYyYTMwOTQ5Nzg1ZDhiZTEwMTkzZDg2Mzg0ZDdkM2U2ZDBkOWIgbGVnYWN5LXRydW5rCis3OTAyOCAzNDY1ODJmODVmYWY4ODQ3ZjViMmY1YjFkOTFhODJlNWZkNjgzNTRlIHB5M2staml0Cis3OTAyOSAxMGI3NjA2YTkzZWQwMzkxYTIzMzU1ZWMzNDAzZjhlZGZjM2QxZGVhIHB5M2staml0Cis3OTAzMCA5YjQ2MjU3MDAyNTFiNzQwMDZjZjI0NWFiY2RmNmQwMmQ4OGNlYjFmIGxlZ2FjeS10cnVuaworNzkwMzEgN2RmM2UxM2QzZTUwOWUwZjJiMDk5OGNjN2FjOTliZDY3MTY3Y2NhNyBsZWdhY3ktdHJ1bmsKKzc5MDMyIDc0MDliNWE3YzgxYTZmMDYyZmU3MzY3NDgxZDBmNTYxODMwYTdkZWEgbGVnYWN5LXRydW5rCis3OTAzMyA4MGRjNGQxMzFkODVkZDMzMTIwZjllYWFlZDgzOWY1MWFiNjhkMjgzIHB5M2sKKzc5MDM0IGI4NzkyMDljMjAyZmQzMzM4ODEwMmE0ZTM0OTg2YTUyNWRmNmQ0YTEgbGVnYWN5LXRydW5rCis3OTAzNSA1MjQ3OWUwNDU0ZTkwY2ZjZWM5M2UzMzJhMjk0NGIwNjZlYjNmMTk4IHB5M2sKKzc5MDM2IDBhYzE5MTkwYTcxMGZhNzczNGNkZmM2ZjRjM2Q2M2I0ZjM3ZmIxNDYgcHkzaworNzkwMzcgZTNiZTFmMWFkNjFlZTExNTJlZTIzZWI5ZmNmNjQxMmY4OTNmM2E4YSBweTNrLWppdAorNzkwMzggNTMxZDMwMjNiNDhiN2NlZDAzNDhmZDEwNjNiZTgyMDJkODkyMGFlYyBsZWdhY3ktdHJ1bmsKKzc5MDM5IDQzNWZhMjE1ZDMzZjA4YTY4YjY5ZDg1ZDMwMWYyNzEwMmQwM2YyYjYgbGVnYWN5LXRydW5rCis3OTA0MCBkNjJjYTFlYWNjYjlkYWJmN2NkMTU0YzU3ZDM2OWE3NjE2NmU4ODE2IHB5M2sKKzc5MDQxIGVhMjc4ZDljMGIyYWEzM2YzNDg4MGFjODJkZjFiMjJiYjQ5YzFjNmQgcHkzaworNzkwNDIgYjFhZTRmODM3N2ZiNmUzMWU1MGRhNTRhZjJlYzRjMTk0NjNjZDk1ZSBweTNrLWppdAorNzkwNDMgZjcyMjBjYTExMzYzYzljN2NhMzAzOGE1ODZiNzcyMTQ1YjE3ZGIzYiBweTNrLWppdAorNzkwNDQgODU1NWE0Y2I3YzRjYjYzNjg0ZjQ0OTRkYmRkZDZlOGQ5YjM2MTYzOCBsZWdhY3ktdHJ1bmsKKzc5MDQ1IDE1YmRiOTRjODA1NWNkZTlhMDFmYjc3MDJhMjYzNTZhN2Y2NGQ4MGUgcHkzaworNzkwNDYgYmZlOWVlMDJmNGMwN2UxY2I3MTZlMDJkNzhhMzAwN2YyYmE1YWM0OSBweTNrLWppdAorNzkwNDcgYTFiNmE1NGUyYjZhNTFjNTM1N2Q0MzAyMWY5Y2JhZTNhMWJjZTQ3NyBsZWdhY3ktdHJ1bmsKKzc5MDQ4IGQ5ZWM0YzhjZTY5NTQyYzVmYTYzZWVkMDBhYTc1N2E5ZWQzOGYwZmMgcHkzaworNzkwNDkgNzZmOWUzYjZjNTg0ZTQ4YzFkOGM5ZjQyMTA5YWE2MzRhYjM3NTU0ZiBsZWdhY3ktdHJ1bmsKKzc5MDUwIDQ4NWZlMjBkYWIxMjFjYjQ2OTE0ZGYzYWZhNWE1MzAzYjQ5NjE3NGIgcHkzaworNzkwNTEgNDI5NDYyZDRjYTBjMjAwYzVkMjIzYmFiMTc2NmUyOTA0ZDk3Y2Y3OSBsZWdhY3ktdHJ1bmsKKzc5MDUyIDQ2MTgzYmY0ZjE0MzY5MDVhOTViOTFhODhmMGY5Yjk4M2IzODI0N2MgcHkzaworNzkwNTMgNDY1Njg0NmE4OWIyNjc1YTI3NTNjZGU3MWRiMzE0MGM1ODY3YWNmOCByZWxlYXNlMzEtbWFpbnQKKzc5MDU0IDJjZmE0NDk3MTg4ZmVmNDU1MGI0ZDVhYzBjY2U3YmEzZTY1YWM3NGYgcmVsZWFzZTMxLW1haW50Cis3OTA1NSBkMWRiZTVkZjE3OTFmMjkxODZjNzU4MTc4ZmE3MGNlM2I4Y2RlNGQ1IGxlZ2FjeS10cnVuaworNzkwNTYgODcxMjVkNzY0N2Q2ODViMTNhZjc2Njg1YjNjN2Q0YWNjMjFlNmYxZiBsZWdhY3ktdHJ1bmsKKzc5MDU3IGQ3YjllMjk0MWUxNDVkN2RkZGJhMTM0OGJlYmM3MDMxNjAyMjA2MmIgcHkzaworNzkwNTggMjVkZTcxNjdhMDU1OGY5YTM2MDAyMzg3NjQwMzk4MzYwNDFmNjA0MSByZWxlYXNlMzEtbWFpbnQKKzc5MDU5IDM0NGNiNmE0ZWY3ZGFkN2JlNDcxMzg1YzVkOWYzMTViMzFlNzMwMWUgbGVnYWN5LXRydW5rCis3OTA2MCAyMmY1ODlhOGUzYWI5OGU2YWFhZDY2M2Y1MTBmZTZiMDRkMTgxZTdmIGxlZ2FjeS10cnVuaworNzkwNjEgM2Y0YzdjNGVlZjYyYWY4MjNiMjJjYjZhM2E5Y2U1Y2JjMGY3NzQ1MSBweTNrCis3OTA2MiAwMzg1MmViMDhkYjE2MTQ2ODhjYTZiNzE1MGE2MTU4YTI4ZTYyZDhlIHB5M2sKKzc5MDYzIDk5YWY0YjQ0ZTdlNDkwMzkwODE3YTU5N2E1NDI1NDZkNzQ5ZTY5OGUgcmVsZWFzZTI2LW1haW50Cis3OTA2NCAxNmFhYjAyZWQ5OWM2N2VjMjYyYjk3YTI5OGYzMjdhMjIyYzU5MmYzIHJlbGVhc2UyNi1tYWludAorNzkwNjUgYTVkYjBkZjMyMzgyMDk0M2Q2OTRhNjBkOTIzNWZiMTlkNTZkNDFlZSBweTNrCis3OTA2NiA3MmE4MDlkMTY1ZjQzNmNjOTA4ZGIxN2Q5OWY5ZmZhMGEzNmRlZWEwIHB5M2sKKzc5MDY3IDE1Yjg3ZWExNDEzZDZlODAyMGQzY2M1ZDYwNzZkMzRiMmU2YjNhNTEgcHkzaworNzkwNjggZTE1YThhNDc2NDk0YmI5NDJhZDhkNDJhMzFmNTFiMTEzNzg2MzA0MyBweTNrCis3OTA2OSA0ZjA5ZDViMTQ3NWZmYWMzNTY2MDMxZjA2N2Q3ODdkZmNhNmEyYWI4IHB5M2sKKzc5MDcwIDM3YjFiOTBkZTVjMTU1ZDkzYjNhMDI4NWUyM2ZmMTE0N2JlOWM0YzAgbGVnYWN5LXRydW5rCis3OTA3MSBlZWE3MmI4MWEyM2M2NWNjYmY2MDViODZkYTlkZGMwMmY0MWVhNDE1IHB5M2sKKzc5MDcyIDk2ZWZlYmRhNGVhMmM5NmQzMWViNjY4NWE5ZGVjZDZhMWJhNjdjMzEgcHkzay1qaXQKKzc5MDczIGZiYzNmMTY5MWFkODlkNWM0ODM4YTI2NTNmZGNhOTE2ZjZhZjJmZTAgbGVnYWN5LXRydW5rCis3OTA3NCAwYjFlNTIyODA3ZjJjN2IxZGQxNzFhNzA4ZmYxM2FjMzIxMTA5YjRmIHB5M2sKKzc5MDc1IDkxMDM4NTViODI2YmQ0Nzc3MjQ0OTA2NjY0MDczZDk4OTllMjQ1YWYgcHkzaworNzkwNzYgYjhiNDljODIzZmU0NDViZThkOGJlMjJhMzVhZjE3MzIwOThjY2I1ZiByZWxlYXNlMzEtbWFpbnQKKzc5MDc4IGEwYTY3YzJmYjdmZjZlNDAzOTkwZTBhOWIyMWExZTRkYTA4ODc1YTIgbGVnYWN5LXRydW5rCis3OTA3OSA4ZmExMjg0Y2UwMGU1OTAwMjdhNDRlNWUyZjQ2MDgxZGE0MTJkYjc1IHB5M2staml0Cis3OTA4MCBkZDEyZjc4OGE1NDRkZjY2ZjA5MTkwODdmNzFlNWQzNjc5OWQ5ZmU1IHB5M2sKKzc5MDgxIDQ3MWQwN2QyYTIzZjVlZjdlZDI4YmFhOTI0OTZlMzVmZjgwYzM4ODQgcHkzay1qaXQKKzc5MDgyIGEyNDFlNDE1ODg4MjNlNzExYmYxZDM5NzlmYTJmNDZiZmZkNWMwNzkgbGVnYWN5LXRydW5rCis3OTA4MyBkOTQ0MTE0MDMwOTNiYjBiYzdkODI5ZTY5ZTczNzU0MTg3ZDI0NmNkIHB5M2sKKzc5MDg0IDc3Zjg1M2ZlM2NmMjYxNDNkZWE1OTgyM2U4ZmZmYTUwNWQxNDZlZTUgbGVnYWN5LXRydW5rCis3OTA4NiA1MGUwNmI2YWI5NTY1ZGY2N2EyZWViMGYyYTczNWVhY2Q3NTE2OTNhIGxlZ2FjeS10cnVuaworNzkwODcgZDFjM2FiYzhlMGMyOWM2MGM3NmU2NzQ5YjgyZDQxOWY5NmJlODU3NCBweTNrCis3OTA4OCA3OTFiYTIwMWJhYTk3NzZiZmMyOGMwMDI0MjMxMDJlNTc2NTBhNTM4IHB5M2sKKzc5MDkyIDQyODVlYTMzYTVkZmU1MjFmYmMwMWY2YWExNzE0N2EwMTEwMGIwNWEgcHkzaworNzkwOTMgYjlmZmE5ZmQxMDFiNWI5YzQ5YzAzODJjNjUyNDE0YmI5ZTNhYThmMiBweTNrCis3OTA5NCA4YTI4YmU0NWMyNDIzY2JjMTA1MDE0ZTFiMzhjYTljNThkNjJmNjYyIHB5M2sKKzc5MDk1IDVmYmQ5YzYzODljNzUzYWUyYzEzMDM5NTlmMDkyYjZhYzU3OGIwZDkgcHkzaworNzkwOTYgNGIzNTZjMWIyNWY2NmQ5MDliYWMzMmMwZDE3MDNjODFjYjllNmU2MyBsZWdhY3ktdHJ1bmsKKzc5MDk3IDAwZGFhOGI3MzZjYzdmYzViODMxYWNmYmU4ZmNhZTlmZTQ0ZTZlNTUgcHkzaworNzkwOTggYjYzODdmNDNjZGRiZDljM2NkZGFiOGEwZmU0NzliNGNjZjAwMTQ5ZiBsZWdhY3ktdHJ1bmsKKzc5MDk5IDkxNDMxYjA1ODQ3OGVjMTg1ODY3Yzc1Yzg4MDZkMWU3MDVhYWMyMTggcHkzaworNzkxMDAgMDdjNzY2NGYyMWExODk5MTk2NTE0Yzg1MTNjMDM3YzBkNjI1Y2Y3NyBsZWdhY3ktdHJ1bmsKKzc5MTAxIDI1MTJjMmFkNWRlNzA1YmI2MTRhZGQyZmU2MDIyODA2MDU2YWJkNDIgbGVnYWN5LXRydW5rCis3OTEwMiA0NTg3ZTFmNzRlZDg1ZDEyOGU1MjhlNzdkMzFjNjNhNDgwYjVkMzc2IHB5M2sKKzc5MTAzIDJiMWIwMzc5NzE4YjQ5ZDc3MmFhZDE2MzVjN2E2NGI5NDhiMWQ3MGQgcHkzaworNzkxMDQgNjMwY2U2MmM5NDZlZjQ3YWM0NDJmZWZjYmQwYTY3M2YwZTUxMTFmNiBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5MTA1IDgzYTc2ODlmMWJiNWQzMzJhZGE5NTQzYmRhZjU1MGNmZTU0MDI2OGQgbGVnYWN5LXRydW5rCis3OTEwNiA5OTZhMzE5MjBkNDhjMDkwNzgxYTU3MmUwZTk0MWUwNjkzZWI5ODcxIGxlZ2FjeS10cnVuaworNzkxMDcgMThmOTRlMjNjYTgwYTY3NDdlNTlhZmQzMzA1ZTk1YjZkYzQ2MjcxMSBweTNrCis3OTEwOCAzZjkwNTM1OThjYTBkNTdiNzNmZTkxY2ZkNDAzNGZjMzhhMjEwMWVhIHB5M2sKKzc5MTA5IGE4ZTM5Nzc5ZmVkZjI0ZTdiNjA2MTQ4ZjU5MDhmNmYzNjA3NTM3MmQgcHkzaworNzkxMTAgMmQ2ODNiOGUzZjUwMmY4NjBkMTkwOWYzYzY0YTBiMWM5MzQ2OWZjZCBweTNrCis3OTExMSA0NzQxZjZkZDdjNjlhMGIyOTQxMTAzYmRjNTc2NjZhMTQ5OGIyNzY5IHB5M2sKKzc5MTEyIDIyNDU5MWJhNmExODRmOTRkYzIxZGVhYjVmZjc0NTViYTIxMDY1ZjMgcHkzaworNzkxMTMgMWUwZDE4ZTlmOGMxYmM4OWIyNjg3YzRhOWNkODIyY2I5YmI3N2YyYyBweTNrCis3OTExNCAwZjAwZGE2OTA0YTY1NzgxNTFhZWUyMDJhZTlhZmJkZWRiYTdkNWNlIHB5M2staml0Cis3OTExNSA5YWIwN2FiZTIzMGRiOThiMThkNDZmZTJhZTBhZTI4ZDdmOTRiNmE0IGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzkxMTYgZTQzMjMzZDgwMDY0ZjU4M2RjYmE4MWY1ZTk3NmYxMjEyNGMyOWY3YiBweTNrCis3OTExNyAwMmUyMTU3NmRhMDM3NzM5MGI0YmE5ZDBlYzUyZTgxYTI1ZDBiZDdlIHJlbGVhc2UzMS1tYWludAorNzkxMTggYzNjN2EzYmU0MGIzNTY2ZTMxYjEyOTVhZGI0YjNmMDJmMDE1NWVlNyBweTNrLWppdAorNzkxMTkgYWNjM2UzNTgzZmFjOTg4YTI0MmY5ODVkNTU0NWQ4NjFhM2QyZTBiYyBweTNrCis3OTEyMCA5ZmYxMDM1ZjYyMzY1ZWJmMGQ4ZWM1NjQ3MzMyZWZmMzU4NjhkYjQ1IHJlbGVhc2UzMS1tYWludAorNzkxMjEgM2QzOGMwMDMyY2VhYTk1ZmJkZmFhOTM5ZmE4MzAxMTUzNGNmMmQyNyByZWxlYXNlMzEtbWFpbnQKKzc5MTIyIGYwZWZhYWIwNDM4MTlhYjVmZjdkMDFmNmZiZDQwMzY2N2VjNWY4YzIgcmVsZWFzZTI2LW1haW50Cis3OTEyMyBmZTQxMTU2OTJmNzZjMTA2Yzg5YjZhMjMzY2E3NDdlY2VlMWYyZGYzIGxlZ2FjeS10cnVuaworNzkxMjQgOWFjYjdjMTU2MDc1ODE5N2VmNTJlOGQxZmI1OWVjMDhmZThkMWZkNiBweTNrCis3OTEyNSBhNWY3OTZmYjYxYTEwMjY0ZGFjMmZiMjJkZTZjNmQ4ZGM1MDk0MDAwIGxlZ2FjeS10cnVuaworNzkxMjYgNzA2OTU3ZDZlY2RmZjUwYTc4OWIzMGU4YjI5ODBhN2UwYjRhYzgyNSBweTNrCis3OTEyNyAxM2ZmODViMTBkYjBlNTczNDBlNzdjOTk0ZWFhOTlhZTdjNTgzZmUzIGxlZ2FjeS10cnVuaworNzkxMjggNzRiYjBmNjJiMzJlN2M3MmU2YjBmY2EwODhlNTMyYTFmYjQ4Njc3ZiBweTNrCis3OTEyOSAxMDljNGU2MmVjMjM1NzcyZjNkYWZhNGZjMjQyN2MyNDU3YjZkNzFjIHJlbGVhc2UyNi1tYWludAorNzkxMzAgNWE1NWEzMjYxMTY0NGRhOWNjYWQ0M2FhNjMzODE5ZmQ1MGIzNjI1MiByZWxlYXNlMjYtbWFpbnQKKzc5MTMxIDBlM2MxMGJjZGJhNDFkMjdiMjNkZmM5OWExYTk5NmI3YjE3MTJhNTggcmVsZWFzZTI2LW1haW50Cis3OTEzMiBhNjgyYjcwODdhY2JiM2Y5ZmU1MzhlZDg5NWI3ZGFmYmY4NmFhNjY4IGxlZ2FjeS10cnVuaworNzkxMzYgMTgwMzc0YmYyZDUyOWRmMzQ1NDQ4ZmJiOTA2ZTBkNmY5YWEwMDBiOCBweTNrCis3OTEzOCAzN2M5YWI3ZDQ4ZjFmNDc0ZmJhOWJmZjFlM2NkNjkxMGU4MDQ3ZjQyIGxlZ2FjeS10cnVuaworNzkxMzkgNjY1MWVmYjc1ZDllYTJhOWI2ZmY1N2YzYWNkYzhhZWJkODdlMmQ5ZCBsZWdhY3ktdHJ1bmsKKzc5MTQwIGUwNzZlNTU4MzRkOWYyMTEzMmFhZmU2OTZlNTE3NWZhM2EyOGM5NWIgcHkzaworNzkxNDEgZTUyM2JjMWMzMDM0NDQ1ZmM4YmY1N2Y5YzI5NTBjMTIxZDI1ODViYyBweTNrCis3OTE0MiBlODY3MjAwM2FlODRmZjEyYTU4ODRmYjEyZmNmYWZlOTU5YTcxNTc3IHJlbGVhc2UyNi1tYWludAorNzkxNDMgODVjYmU0NGIzOTI1ZjgzMmFkYTA3MDM5NmE5MTY2ZjYwNzAyMTE5OCBweTNrCis3OTE0NCA2MzU4NjU5MmEzYTA2OTU0ZTA5NjA4ZTU3N2Y3ZGFjYjdmOTE4NTM1IHB5M2sKKzc5MTQ1IGE2MTJjOGI2MWI0YWE4NGE3ZjhlZjM0MGJhOGE1M2NjNTg1NTIyMzQgcHkzaworNzkxNDYgZjc3Zjg1MDFkYTdmYWI5NDQ0OTc0YTFkZjUxOWZkNjg3OTdiYTBhYyByZWxlYXNlMzEtbWFpbnQKKzc5MTQ3IDk2MGVmYTMyN2M1ZDljMThkZjk5NTQzN2IwYWM1NTBjYjg5YzlmODUgcmVsZWFzZTMxLW1haW50Cis3OTE0OCA3YzkyNjgxNDY5ZjdiYjQ1NTMxYTMxZDU1ODk2ZGQxMzFjYmM3YzdiIHJlbGVhc2UzMS1tYWludAorNzkxNDkgMzUyZDYxYTY5ZjU5NWJhNDg5ZTllN2UwYjRlYThkNjQyN2FhMjM5NyBweTNrCis3OTE1MCBlZGFkOTQ4YjRkNjZmYWIzMWIwMjM0YTQxODEyYzM5NDRlMDZiMGY5IHB5M2sKKzc5MTUxIDU1NGUwZjQzNWQwOGFiYjcwNDE1ZmFiZTc1ZTE4MjY4ZTlhNjFmZGMgcHkzaworNzkxNTIgNjIyM2MzZmQ2MWYwOWQ3MzBmYjgwYjA2ZDM1NmY3ZTgxNDMwOWY0YyBweTNrCis3OTE1MyA4YTkyMGE4OTA5YTA4YmUzOTBjNDI4MjcwNTg5YzJhZWU1MjY0YmFlIHB5M2sKKzc5MTU0IGFlOWUxMzc0MTFmMWYzOGYyNzI0NTU0ZTE5ZjVhYmI4MjcyNjI3ZWUgcHkzaworNzkxNTUgZDg3MDBiNGYxYjlmNTE1MjUwNmM2ZGFlN2EzNTE1NWJmOTRhZmJlOCBweTNrCis3OTE1NiA0ZjcxOWJlN2M4NzU4NWY1YjE1NzgwM2ZkYjAwMDRkMGVmMGRlYzU1IGxlZ2FjeS10cnVuaworNzkxNTcgZTYxOTA0N2EyZjM2NjA4ZWE5NmZlOTQzMjVlZTIyZTFmODJiMmNkZiBweTNrCis3OTE1OCBhOWE4MDdiN2NkNDM5ZmM5N2U0NDA2MGUyZjQ3ZjgxMDM0MzExMmY5IHB5M2sKKzc5MTU5IDBlMDYzMmM1NDNlNDE0NGYyMmYzMWQ1YjkwOGZjZGJhZTk0ZWNmMzMgbGVnYWN5LXRydW5rCis3OTE2MCA3MTFkNTE3MzdlZTZiZTlmNmVjYWY0YWZiNmIwNTkyZTVmNWM3NDAxIGxlZ2FjeS10cnVuaworNzkxNjEgZGJjNTgwNGU4Mjg1ODVjNDIxMDM0MzQ4OWViZjgyMWYyOGQxYTk3MiBweTNrCis3OTE2MiA2YjZmZmQ1MjZlM2JlNGVkOTk5MjFjY2I5NGQ2ZTNjMDhjYTg3YjYwIHJlbGVhc2UyNi1tYWludAorNzkxNjMgYTdiODlmMmFjMWRhNmE1ZTI0NWU3OTNlMGFjYjdhZTk4YTg4ODZiMCBsZWdhY3ktdHJ1bmsKKzc5MTY0IGRjYjlmNDI3MDQ0MWFmN2VkYjBiYWRkZjZkNzU5MWIwOGQ1OGY3OWMgbGVnYWN5LXRydW5rCis3OTE2NSBjOGM4NDAxNjI4MDQ5Zjk3ZDhhNmRkZmY0NmJkMzAwM2Y4MmY4MDZhIGxlZ2FjeS10cnVuaworNzkxNjYgN2RkY2Y3ZDI4MzZhYWMzMmE1MzNmMTA2MzFhZTgxYTJmNzhjZTlhOSBweTNrCis3OTE2NyAzNTY2MzY2Yjg5Y2YxNTk5NDMwNWU5ZDE3Njc5NzAzNjJiNTlkZDkxIHJlbGVhc2UzMS1tYWludAorNzkxNjggNGJkMWFjMTEzMmNkZmQ1MDU5Zjc4ZWZmZDQ1MzlkNzU0YTgyYjNlYSBsZWdhY3ktdHJ1bmsKKzc5MTY5IGYwNzY2Y2ZmN2Y1OTY4ZWFiMzhiODk4MDQyZWU4OTc4MmIyZDlhMGYgbGVnYWN5LXRydW5rCis3OTE3MCBmODU3ZDRlZDA3NzQ3NTkzNjg3ZGMzNjVjZDk5ZThmN2U5YmJhMWNlIHB5M2sKKzc5MTcxIDEwYmQxZDBmNjJkZTJkYzg4NTk2NjMxYWNjOWM0ZmY2YmYyMzZmNjkgcHkzaworNzkxNzIgZWE0ZTY4OTI4ZmY1NmI2ZjU0MzkyY2JhMGUzYzQ1NjRjYWZkNDE3YyBsZWdhY3ktdHJ1bmsKKzc5MTczIDFhZTQ3NGM5YzM0ZTZiYzgxNWZiNzc2NWFhYTM2ZjVjNjYwM2Y1OGIgbGVnYWN5LXRydW5rCis3OTE3NCAyYzllMGFiM2YwYzdlZmQ5MWZjZmMzN2MyMDllNzk0M2I0MzQwNjExIHJlbGVhc2UyNi1tYWludAorNzkxNzUgNmExMjU0ZTIwYzg5NjdiZTkzOGU5ZWE4YjkzOGUyYjkzMjk0MmE5NiBweTNrCis3OTE3NiBjYjBlMzcyNmQ5MWRhYjA1ZjQ1ZDEzMDMyNzZmNTQ5YjU0YWM4NzBkIGxlZ2FjeS10cnVuaworNzkxNzcgMzFmMGQ5ZmNkYjQ1YzE3ZTdkMGJhNjk3MTZmYzdjNzFjNjg4OGNmMCBweTNrCis3OTE3OCBhYzk2MmJjNDFlODVmYzkzM2JmNzZiYTc2MTY3Y2U5MjBmYjUwNTlkIGxlZ2FjeS10cnVuaworNzkxNzkgYmM1ZTBkMmUxNzlkMDA4NmViMWMxNjlkMjQxNDQxODNmMjlhNjExMyBsZWdhY3ktdHJ1bmsKKzc5MTgwIDQ1NWVmNzAxNWJhODAyZGEwOGVlNzk2MTdiNTZkMTA5YTAyZGQ0NTMgcHkzaworNzkxODEgOTUwYzEwMzBmODE2NDA3ZjFiNGIwMzE0MzA4Y2Q3NDAzNTkxODFiYiBsZWdhY3ktdHJ1bmsKKzc5MTgyIDU3NWVjNzczZGRhNDBjZjg4M2I2ZjJlZmYxYWM3ZWU3MzlmMTAxOTAgcHkzaworNzkxODMgMjg4NmY2YWE1ZWY2MTlhNGJkMTY1ZTdhMzM4NTdiNjk0OGIwNzgyYiBweTNrCis3OTE4NCA0MTQwNDRkYmYzNDM5NDMxNmE0MzA4ZjBlMGM1NTU0ZjJkYzVlMWE4IGxlZ2FjeS10cnVuaworNzkxODUgZDRmYTJlYWFiNWZhOGE1NmMwM2IzZjAyZTRjZDIxNzVmODllNTE5YSBsZWdhY3ktdHJ1bmsKKzc5MTg2IGMxMWYxY2VjYmViMzVhMTg2ZTI2ZTZlYmJiNWEzZmNlNjMwMTQ2ZDkgcHkzaworNzkxODcgYzNiOWMzMzMzMDFjN2I3ZjZmNTMwM2M2OGM5OTUzZTIwYzkxZWVlMSBsZWdhY3ktdHJ1bmsKKzc5MTg4IGU4MjNlMjdjMjI1ZWFhMDYxNzM5YTYyMDdiMTEzOWNiMzE5OTgyODYgbGVnYWN5LXRydW5rCis3OTE4OSBkZDY4ZTA0ZWUyZTg2MjM0OTY4NjY3MDQ5YWExNTA3MGRmMjM3ODQzIGxlZ2FjeS10cnVuaworNzkxOTAgNjIwOTEyZjgzMDgyNmU5NWVjMDAwOGJkNDg2OGUzOGEyNjhlOTQ5NyByZWxlYXNlMjYtbWFpbnQKKzc5MTkxIDk4ZTQxNjYwNTc0YzNkZWQzYWY2MGE4ZDdlYmMzOWEwNzMwM2NmZjYgbGVnYWN5LXRydW5rCis3OTE5MiBkZWZhYWQyMDE3YjVjYzA4OWU3NGZiOGY0YjkxMTE4Y2UxYTk1OTRiIGxlZ2FjeS10cnVuaworNzkxOTMgZmNlZjRkYTMxZTI0NWJkMDMwNTIwM2ZjMDE2MGFkMDZmZmEzOTdmZiBweTNrCis3OTE5NCAyMmM2YTI3NjRjYWI1ZmY4MGEyNzlmNDZlY2M2ODA4OGY5YzM3Mzg4IGxlZ2FjeS10cnVuaworNzkxOTUgNjNmM2E5NGY1ZTlkNTA1ODVmNDA5OTA2YjQ0MmMyNjdmOTkyNjg2YSBsZWdhY3ktdHJ1bmsKKzc5MTk2IDQ0ZmZiODA5MmVkNjI5MDMzMGM1NDBlYzE4MjMxMDdhMjhlZjY0NGMgcHkzaworNzkxOTcgYjI1ZDEwMjRmMzk0NjhlNDM5Yjk0YzZmNzg4NzA3ZWU0ODBhYmJjMCByZWxlYXNlMjYtbWFpbnQKKzc5MTk4IGM2ZjZiZTUzMTdhZDM2MTk2YmEwZjEwZDhlMjJlYWY5ZDY3ZWU1NWIgcmVsZWFzZTI2LW1haW50Cis3OTE5OSA4ZTQxZjE3OTRkNDQ5NWI4Y2IyMjQ2ZTU4ZjgwM2NiMGU0YWIwZWI5IHJlbGVhc2UyNi1tYWludAorNzkyMDAgMGZiNmQzNDIwMTZkZDVjOGEyNmJkZjI4ZGI4N2NmNTQzYzU4NmViZSByZWxlYXNlMjYtbWFpbnQKKzc5MjAxIDhmMTIwMmNhODg4ZTk1YmIyNWY5ZGY3NGIxNWJkYzJiYmJkNTcyZjkgcmVsZWFzZTI2LW1haW50Cis3OTIwMiAxMmUyMDc1ZGJiZTBlMWYzNWMwMDc4ZWFkNzNmNTljYzg5OGJjNjRlIHJlbGVhc2UyNi1tYWludAorNzkyMDMgNTgxMjYzYWY1ODIwZmQxZDY0YWI3ZTJiNDUxNzQ1MTY1ODM3MDc0MiByZWxlYXNlMjYtbWFpbnQKKzc5MjA0IDhkOGM5YmYyYTA0ZTI3ZjU2YzZhM2FlNjlhMTllNGQ0NDk4OWJjOWYgcmVsZWFzZTI2LW1haW50Cis3OTIwNSA2NDNiZjlmZjIyOGZlNDgwZDgwY2IyMmEyOTIwZjViYTE0YTI3MjZhIGxlZ2FjeS10cnVuaworNzkyMDYgYjllMjdkZTg1ZTRiYzg2ODI4OTlkMDhmM2I0ZjIxM2E2NzFkNTJhNyByZWxlYXNlMjYtbWFpbnQKKzc5MjA3IGUwNjJkZDM1NzE0MTkyYTMxOGU5YzUyMTBlMzk1N2FjYzM1OGYyZmUgbGVnYWN5LXRydW5rCis3OTIwOCAwOWFhODcyZjc5ZmM1ZjNmOWU3OGI4NmUyYTdhNmMwYTUxZmZhN2VkIGxlZ2FjeS10cnVuaworNzkyMDkgZWM4NGZiY2RmN2NiYjUxOTQxNGM0MzM0M2QwNjQxYzE1ZjM4MjkyMyBweTNrCis3OTIxMCA5M2Y3MjBlOTUxOGFkYmRkYTY4MGZiM2U1ZGY5OTU3Nzk3NjE0ZGQ5IHJlbGVhc2UyNi1tYWludAorNzkyMTEgZWRjOTJiY2U0ZDZlMmQ5M2FiZjQ1MWJiOTQ1NmNlOWYzYmViNDhmZiByZWxlYXNlMjYtbWFpbnQKKzc5MjEyIGNmNThiNzMzMjJmOGM0YjBiYzQyNjUxYTUwOTA2OWFmYTA3Y2ZhZDMgbGVnYWN5LXRydW5rCis3OTIxMyAzOGU5YjlkYTAxNjQyZWJiNDY4YmJjZTAyM2NiMjRmZDhhNGYyY2U3IHJlbGVhc2UyNi1tYWludAorNzkyMTQgNzU5ODUxN2IxMjE4MDdmYWIwNTAwNDU3NTllNWZlNzBjMDg5NDI3NiByZWxlYXNlMjYtbWFpbnQKKzc5MjE1IDY0YTAyYjEzM2U3MjNhOTQ2Njk4NDA4Mzc1NDJlMjY2OTI1MzQ2NmIgcmVsZWFzZTMxLW1haW50Cis3OTIxNiA5ZWFiYmE2ZGVkMDk2MmIxYThlMWU5NTMyNDIxZDQzNmE1YmYyMDVlIHJlbGVhc2UyNi1tYWludAorNzkyMTcgNDVkMjI4NGNjMDYzZGU1YzkzZGQ0MzNiZDVjMjc1OTJlMzcxODdmZiByZWxlYXNlMjYtbWFpbnQKKzc5MjE4IDc2NzgxMTM4NWZhNmZkZjc4NmQ2ZWZkZmFmYTc1ZmIyZGQ3NjQxMDIgbGVnYWN5LXRydW5rCis3OTIxOSBkYjk2MWJhMzdjZmU0NDQ2OWM2OGU1MjJmZmZiZTk1MWVmYTZiMjNjIGxlZ2FjeS10cnVuaworNzkyMjAgZWYxZjM4OGY0ODNmYjg1MDAxNmE2MDAzZGNmMTBhYWI3ZmM5ZTA3YyByZWxlYXNlMjYtbWFpbnQKKzc5MjIxIGM2OTQ2MThkYWI1NDNjMmY4NzBjMWEyNjAxNjFlMWQxNzAyMGUwYTAgcHkzaworNzkyMjIgYzkyY2E4YmExZDk3NTBmNjU5NzA3MmE4ZjU5ZDFhYmU2YjdjZDY3MiByZWxlYXNlMzEtbWFpbnQKKzc5MjIzIGQxMzk4ZmYwMWEwNzRiNGMwMTk0Nzg3NmE2NmRjMDk4ZjI4NDNmZmUgcmVsZWFzZTI2LW1haW50Cis3OTIyNCBhYzIzMTRiNWY5NjI4ODI1NTY5MjZmNWU5MTc5ZDcxYjE2ZTYwNTE0IHJlbGVhc2UyNi1tYWludAorNzkyMjUgNTNkYmQ4OTZjNmM2OTJmNDI0YzE2NTIyZjBhYjk5ODQyNDUzMzQyNyByZWxlYXNlMjYtbWFpbnQKKzc5MjI2IDFiZjQ4YTVkZGVhZDUzNjMzNTQxOWFlMTVmYmNkMmZkOGYxNmJlOWYgbGVnYWN5LXRydW5rCis3OTIyNyBmOTZjODI5M2RkN2Y4OGQ4N2JlODIzZjA0Mzk2ZTMyNmYzYjU3OWFmIHJlbGVhc2UyNi1tYWludAorNzkyMjggZGI5NGFlZGViMGUwNGFhMTFiZTRmMWQ1NjE3ZDE2MTFmOGJmZTU3NiBsZWdhY3ktdHJ1bmsKKzc5MjI5IDlmNjE4NzUwMDY0ZWVjZGFlZDg2YTU4ZDlkZmUxZTNhOGFhNzVkOTUgcmVsZWFzZTI2LW1haW50Cis3OTIzMCAwZDFjZGQxNGM5ZmExOTYxOGJlYTVmNmNkYWQyNzk5YWE5Nzk4ZmIzIGxlZ2FjeS10cnVuaworNzkyMzEgYTBiNmYyODcxMWU1ZWU4M2U0YWEzYTNhNTZkZTVlNjc1NTk0YWM2ZCByZWxlYXNlMjYtbWFpbnQKKzc5MjMyIDBjMzQ0ODI3ZTA0OGYyNjkzNzJmZTYyM2IwZDQ1ZTliZDk2NTEyNTYgbGVnYWN5LXRydW5rCis3OTIzMyBjN2E2MTU0NDYwZmJkYTllZGI3ZTlhNzcwODNjMDg1OWY2MWEyOWNlIGxlZ2FjeS10cnVuaworNzkyMzQgOTJmMjU2MTc0MTU0MWE0MTgxYjBjZDBjYmEzYzRhZjgyYTcyMTFiMCByZWxlYXNlMzEtbWFpbnQKKzc5MjM1IDY1MWE4ZTVjNDYwZmE5ZDIwYjgzZGVhMzBlNDFhOGQzZWIzNjMxMTEgbGVnYWN5LXRydW5rCis3OTIzNiBjMDczZjNjMzI3NmVmM2RmNGZhYWI4YmM5M2NmYjg5MWZmYTliYzAyIHJlbGVhc2UzMS1tYWludAorNzkyMzcgZGJhZDFjMDY2OGM5ZjhjZmQ4MzRjOGYzOTFiMmI2NjJmMmQ5Mzk0OSBsZWdhY3ktdHJ1bmsKKzc5MjM4IDdlM2I0OTA4NzdjZWNkYmE2ODc4NDU4YjZiZTQwNzJhYWQ2YWVkZTAgcmVsZWFzZTMxLW1haW50Cis3OTIzOSBlYzZhOTk1ZWNmYmY4MjRiNzJiZjYxYTFlZDFlY2U5NDRjNTA2MTVhIHB5M2sKKzc5MjQwIDk3MTRmOGE3N2IxNjBmYjYxZWEzNjlkZDUwZjI0M2M3ZTNkNmE3ZDkgcmVsZWFzZTMxLW1haW50Cis3OTI0MSBiYWM4YTA0MjcwZmNmMTYzYWFiMjA0YzkyNGRlODQzNjgyNzdjOGI3IHJlbGVhc2UzMS1tYWludAorNzkyNDIgNDhmNDBhMTc4NWNhYWYyZjNhZWE0N2U4NWRhNTQ3YzFmYmRiODk1NiBweTNrCis3OTI0MyA0MWIyMjUwNjdmNGQxMjg3NjUzMDIwY2RmY2EzYWI1ZmIyYTU0YTA3IHB5M2sKKzc5MjQ0IGQwYmRkMDk4NTYzNzQ4NjZhZGU1NTBkOGU5NDk0ODVjNTZjMTMxY2YgcHkzaworNzkyNDUgMzgzM2NmMzNjYTYxNzQ5NzEyNWVhOWVmMmY2MTZjOWNhNTY4ZDIwOCBweTNrCis3OTI0NiA0MjkzYzMzNjY4ZGY3ZDYyNmUzNGY2YjA4ODYwYzM4ZmRjZmI1MDFiIHJlbGVhc2UzMS1tYWludAorNzkyNDcgYzJkMmUyNmJjZjdmZDI1ZmU5MWE0M2YxY2I4NzgzNDI1YmYwMDAyYSByZWxlYXNlMzEtbWFpbnQKKzc5MjQ4IDY3ZjNmN2U1MzY2YmM3ZTNiOWMxNTZiMWZhN2QzOWE0NzAxNDBiODYgcmVsZWFzZTI2LW1haW50Cis3OTI0OSBhMzY2ZDYzMWE2MjlhNGFjYTYwN2ZmNDNhMWE5NTRkNmYzYWNjYmMyIHJlbGVhc2UzMS1tYWludAorNzkyNTAgZTE2YTI3YjU1MmE2ZTM0NGU1YzQwMzRkMzE4OTZiZDdiZGNlZTA3MyByZWxlYXNlMzEtbWFpbnQKKzc5MjUxIGZiYWNmOTcyZmE0NGU2OTU2YTk0ZWZhNWNhMmUyMzJlNTdmNDEwYmEgcHkzaworNzkyNTIgN2U2ZDcxNTFmZGU4NzRjYTZkMWIzYzAzMTJlZjg5Y2U1MGU2MzRmOSBweTNrCis3OTI1MyAyZDJmMjM4NzJkOTBhMTAwMzBjY2JkZTVmZDBlYmQwZmRjYzE3MWJmIHB5M2sKKzc5MjU1IGM1M2Y2YTNkMmQzYjBiZTQxN2MzYTU1ZTllNzM5MTE0YWFiM2M4NjcgcHkzaworNzkyNTYgMTNhNDQ4MDEyYTg0ZTdkMzFlMjgxYWRlMGY5NTBjNWNjZTEyZjlkZSBweTNrCis3OTI1NyA4MjZkMDU0NjkwY2I4ZGE2YTU4M2M4YmFkNTU1ZWI3N2E0OWE3NDA5IHB5M2sKKzc5MjU4IGQ5YjhmMjczYWI4ZGE2ZDE2MGM4MjlmOGE4M2EwZDAyMDZhMTJlZWMgcHkzaworNzkyNTkgOTAyMTdhODY2NDJkMDdiYWUwMjY1OWFiM2QyMTdhYmU5OTZjMzIzZSBweTNrCis3OTI2MCA3ZjgxNmY2YjVkMGIwOTQwNzQxNzEwYzZhMGVkYmYzZTRhMTg5NTQxIHB5M2sKKzc5MjYxIDVjMDkyZDRiNDk5Y2YyNzhjZmVkMzU2NmNhZjQ5NThmZmM1NjYwZDUgcmVsZWFzZTMxLW1haW50Cis3OTI2MiA4MWRjMDIyOTg2MTRiYTE2ZDUyMWViZmYxYjUyZWVmNDU5ODdmZjJlIHB5M2sKKzc5MjYzIDI4NThjYWU1NDBlNDExYjgyMDE3NGI5OTQ4OThmZGExNWUxMjU3OTAgbGVnYWN5LXRydW5rCis3OTI2NCBmOTA5NzM5NjJlYWYxYzQxYzQ0ZWM0YTc3ZWZmNGRkNWMwNTUyMzk5IHB5M2sKKzc5MjY1IDg0Y2MxM2ExNDRmZmJkNTIyOGE1MDYwNjYxZDJhMWFmYWQ5Zjk4NTUgbGVnYWN5LXRydW5rCis3OTI2NiBiNGQ4ZmE0ZDAwNDljM2FkNjAzYzdmNjE0ODg4ODM2N2E4Mzk4ZjJkIGxlZ2FjeS10cnVuaworNzkyNjcgNjU3ZDAyYTUwM2ZhNWQ1NjNmMDZhMWE4NjRhYzkxYWFmMDhkNzczNyBweTNrCis3OTI2OCBlYjBmZjcxM2E1ZTljMTRlYzg5N2UwYjZkYWUyNzFjMTZiNDM3YmQ3IGxlZ2FjeS10cnVuaworNzkyNjkgMzdjMGUyOGQxYWQ0ZWZlMzEwMDA0ZDNlOWMzZDBhYmQxNDJkMzRmYiBweTNrCis3OTI3MCAwMTYxOTY0NjQ5YzM4YTY0ZGE2MDc5MjdlZjM4ZTMwMGUyZmZhYTQyIGxlZ2FjeS10cnVuaworNzkyNzEgMjI5ZjI1MmJjZTc3MzZlNjY0N2MzODY1NjIzZTU2MDk4ODE2MzRjZSBweTNrCis3OTI3MiAxMDZiZWUzZjFmZTUxNjM2ZTExYTZjNjA5M2U4NWYyZDJlN2ZjN2ZhIHJlbGVhc2UzMS1tYWludAorNzkyNzMgOGMzYjEyMGYyNTk2MmRlYzBhNmQ2ZTkzYTExNDZjMTYxMjlmMTk5NCBweTNrCis3OTI3NCAzZGM2ODgyYTcyN2Q3M2E2NmQ5ZTRkNjJlYmE2YmI4NzcwZDJiNjc4IGxlZ2FjeS10cnVuaworNzkyNzUgNzY5ODFlZTUwYjQ4MmZlYjM3ZGM4M2Y5Njk4NTMwNzAyMjFiMTUzMSBweTNrCis3OTI3NiAyZDYxNzg0ODBjYzcxMjZhN2VjYzRhMjY3YjdjNjJhM2U0ZDMxNTlmIHB5M2sKKzc5Mjc3IDM2ZTlmMzhlOGEzYzJlZWYyZWYyNmFjYzNlNDU3YjIwY2U4NWE4MGUgcmVsZWFzZTMxLW1haW50Cis3OTI3OCA1MmNmN2U2NWRhZDE0YmFiMjYxYzgwMDgzOTNlOWUxZTQ4MDJkZGIyIGxlZ2FjeS10cnVuaworNzkyNzkgNWIzYTYwMWVkMjA1YjViNDAzZmMzNTIxODA5OWEzODFkZGNhZjJlMCBsZWdhY3ktdHJ1bmsKKzc5MjgwIDJiNjFlZWQyOGZhZTRlOTFkMGI5YTc5NjVlNjE4MTYyNzQxYjQzZGQgbGVnYWN5LXRydW5rCis3OTI4MSA3YWQ1NjIzZjQxMzIxZGI0NWI1NTM3ZDUwMmZiYTI0MjIzNmRiNjhiIHB5M2sKKzc5MjgyIDg0NDA1YzIyZTRjN2ZmZDk4OTE1NWQ4ZjY4ZmIwMzFlZWJiNTNjYTMgcmVsZWFzZTMxLW1haW50Cis3OTI4MyA2MTUxZDA5Y2UwMzk0OTMxMTNkY2Y5ZWQxZWMwOTEwZjk3Y2U4ZGRiIHJlbGVhc2UyNi1tYWludAorNzkyODQgMTVkZTUzOTA3MDdkYTQ0Njk0MDEzMTY1Nzk0YmY5M2RmYWFiNzU0MiBsZWdhY3ktdHJ1bmsKKzc5Mjg1IDk2YTI0MWQ0YTBhYjE3MTI2MTk1MWY0MDczOGVmMTUzODVmZmMwOGQgbGVnYWN5LXRydW5rCis3OTI4NiBlMmE5NjkzYjU1NWVkNjg1MTJjNTc0NWYzZmJkZDZhZWYxODlkMjdiIGxlZ2FjeS10cnVuaworNzkyODcgNWY1ZDQ3MzZkZTc0YWQ2ZGZlMjFlNmExMjQ2NTBlMmQ5MGQ4MmJmYiBweTNrCis3OTI4OCAyMjRiNzBkM2QxZDQ0ZTU2MDBhODA1MmU4NjAzMGU0NTAxMDYyMGZhIGxlZ2FjeS10cnVuaworNzkyODkgYzkzNzUyMWVkNzA5MmE4MWY3MmRmMmU4ZWZjZTJiNGY0NDAzNzQyOCBweTNrCis3OTI5MCA5ZmJlMjM3MGRjMDIxN2E4ZDM4YzA5OTcyZjY5Yjc3ZTc0Zjk4NDY3IHJlbGVhc2UzMS1tYWludAorNzkyOTEgN2Y0MzVjMzg1ZGEyNWM0ZjVjYzg5YzMzYjE3NDhmYjNiNWJkZWZiZCByZWxlYXNlMjYtbWFpbnQKKzc5MjkyIDAxYjU3NTE1ZjE5NTY4NDA3YmE0MmVkODIxMmJlZGM5ZWE1M2EyNjkgbGVnYWN5LXRydW5rCis3OTI5MyA4MDZhOGNhZmM5OTc3YWY3ZjViNjc2M2M1ZWVjMzI4YTQxMWM4ZTM4IGxlZ2FjeS10cnVuaworNzkyOTQgNmRmNzk5YTJjMjRlNGEyNDZlMmY4NzM2ZWEzZDIyYTQ1YmQ4MWM4YyBsZWdhY3ktdHJ1bmsKKzc5Mjk1IGNmYzU3NzAyYWY3ZmQ5NWI5YTI1OWM2M2M3NDUxNWUxM2I1MjNhZjEgbGVnYWN5LXRydW5rCis3OTI5NiA3NjdiMDgzMTY1OWUwMjdhNjljNjY0NWE1MTUwYjAzODViZjExYjFmIGxlZ2FjeS10cnVuaworNzkyOTcgZjAwMTQ1NTQxNjZmOTNjM2JkNzY5NzczMGFmZDJkNTg5ZGQ2ODZlNiBsZWdhY3ktdHJ1bmsKKzc5Mjk4IGI3ODcyYjBlOGFiMjQxZTM3OWRkNDk1Nzc2NjhmZTE2MDMxOGFlZjYgcHkzaworNzkyOTkgNzNjYWEzNjFmOWNkZTE0YmMyYTgxMTUzOGM5NjY2NTczYjNjYzQyNCBsZWdhY3ktdHJ1bmsKKzc5MzAwIGUzZmRmZGIxYThmZjhmYzZhZDYyOGYwZTk4NDJjODg5YTk2NjlkYmMgcmVsZWFzZTI2LW1haW50Cis3OTMwMSAyZTBkNThhZGFkYmUwZWI0MzhhNmQ1YjFiZjExMGYwZmQ3Y2YwNDBlIHB5M2sKKzc5MzAyIDFkYzE4NDEyYTdlZTVmMDM3ZGQxYjBiZWZlNTU0YTRiYTE3Y2E5ZGUgcmVsZWFzZTMxLW1haW50Cis3OTMwMyAzYzRkZmU4NmVjMmI2NDgyNGFlYmIxNWRkNzI0Y2Y3M2ZmYTBkMjBiIHB5M2staml0Cis3OTMwNiAwYTEyM2NkZWQyYzk3M2I3YjFmYTlhMWZmOGY1MmJhZDMxZTZhMjc3IGxlZ2FjeS10cnVuaworNzkzMDcgODBiZWVjOGZiNzQwM2YyMDY5YjIwY2EyMDliNjM0Njk2ZTRiNTRkNCBsZWdhY3ktdHJ1bmsKKzc5MzA4IDViNjc5YzI0OWUzYzFjZDY3MGViZDU1MGU3NzExYTU4NjkxNzdhODEgcmVsZWFzZTI2LW1haW50Cis3OTMxMCA0NzdkMzZlNWQ5MTM5NWUxM2Q0MzBiNjhkODNlODU0NzgwN2EwZmYxIGxlZ2FjeS10cnVuaworNzkzMTEgOGYwMTZhODAxNjQyZjlmOTNlODJjY2FlNzA3ZTNiYmNjYTYzNWVjNiBsZWdhY3ktdHJ1bmsKKzc5MzEyIGUwMGRkMDcwNTZhYWYzOTcyZGFjN2NmMmJkZjI4NmQwMmU3ZTdlYzEgcmVsZWFzZTI2LW1haW50Cis3OTMxNCAwZjQyZjM0YzE2ZTgyYjEwYzMzM2NkZGIyZTgwNjc3OTg1ZmM2MzcwIGxlZ2FjeS10cnVuaworNzkzMTUgNjVmZjUyNmUwNWViYmQ1NTI0ZmRhNjlhZDQyYmEwMjc2ZTRiMGNjYiBweTNrCis3OTMxNiBjZDk4NDhjZjE4NDdhZGIxY2NiOTg1MTJjNTYyMDhmZjkwZjg0M2M3IGxlZ2FjeS10cnVuaworNzkzMTcgMzI0NGVmYjZkODhmODhhYWYxYmRmNmQxNmVlOGNiMjRlZWQ3YzkxMSBweTNrCis3OTMxOCA1NDM1ODgwNzEzYTc4M2ZhNWE2NmEzZjEyZTRhZDg4N2U0ZWJmMTY3IHJlbGVhc2UzMS1tYWludAorNzkzMTkgMTc4MTY5NTg4NmRjZTg4N2FhNzBkNzQyZTc0Y2ExOTRjMzNhM2Y1YiBweTNrCis3OTMyMCA2ODRjZDczODE1MzVhNWEyMDkxYThjNDY5NWRkMjA3YjJjNWJkNzBiIGxlZ2FjeS10cnVuaworNzkzMjEgOGU5OWI2MDAwZjBkZmUzM2QxZDllNTIzMmI4YWJkOWE5ZjIyN2EyNiBweTNrCis3OTMyMiBhOWRiNTFjZjFmYmM0ZGVkZDM2ZmFkZjk2NTcyZGQzMWQ2YTg4ODY0IHJlbGVhc2UyNi1tYWludAorNzkzMjMgZjQyOGY2NmY3ZTliYjY2ZDA5MDgzY2NlY2I3MWYwNzc5OGE5OTEwMCByZWxlYXNlMzEtbWFpbnQKKzc5MzI1IDEyZWU0NjQzNWQwMTcxZmEwOTBiODc1MWYwOTczYTJkMmY3ZDNlM2YgbGVnYWN5LXRydW5rCis3OTMyNiBmYjNkYTU2ZDU0OGYwZDI4ODJhMzA3ZDQ0M2Y4ZTE0N2JmZDcwYTFjIHJlbGVhc2UyNi1tYWludAorNzkzMjcgOTJjOTMyNDYyNWI2YTVhMDAxYzBjODYzZTZhODI5ZjM3ODJkZjIyMiBweTNrCis3OTMyOCA4ZTc2ZTQ2YzE5OTQ3NTc4OTA2ZDdmNDRmNjc0MTFhN2Y5NGQ4OTM5IHJlbGVhc2UzMS1tYWludAorNzkzMjkgYjAxZWZmNGVmZmQ3ZWZhNDI1ODNkNGUwMDNlMzNmODJhOWVmZThlMiBsZWdhY3ktdHJ1bmsKKzc5MzMwIGZhNWUyOTljZTA5MWM2NzZmMGNkMmFhNzZhNDk0NGFmZjYwZTcwMzMgcmVsZWFzZTI2LW1haW50Cis3OTMzMSBhNzAyNjQ4YzhmNDEwNDkzYzJhZjQwNmQwMTEzOWIyZTJkYzFiZGY4IHJlbGVhc2UyNi1tYWludAorNzkzMzIgM2JhMjM3YTMyNmMyN2I5Y2JlY2MzMDRkZmZjNTQ3NTgzMzBlYmQ2MSByZWxlYXNlMzEtbWFpbnQKKzc5MzMzIDU2ZGQ1ZDUwNzBhNWE0NTQxYzdlNTllYWRkMmZhNWFkYjM4OTgxYWMgcHkzaworNzkzMzQgYjBlYjlmNmYyZDEwYjFmMzI5NWI2OGUzNDQxZWE2YmMzMjA0MmE3ZCBsZWdhY3ktdHJ1bmsKKzc5MzM1IGYyMGU4YjkxZjZlOGRhOTkyYjFmMWE3N2NmNTc0M2U3NDc0ZTczYjkgcmVsZWFzZTMxLW1haW50Cis3OTMzNiAxMDI2MjNkNjg0M2ZjNDkxZDFkZmVlMTZmMjdmMTk5MWY3ZTg5MTkyIHJlbGVhc2UyNi1tYWludAorNzkzMzcgNmUxZGFkODUzMDA3YTJhMzRlYmJmMmVmNTBlMjNmODc2YWQxZDI0MiByZWxlYXNlMjYtbWFpbnQKKzc5MzM4IDY2NTk1ZDQ4NGVhOGQ1ZmM3NzY0MDYxZDgyODNmMDVhMTAwMzdmYjggcmVsZWFzZTI2LW1haW50Cis3OTMzOSA0OTg2Y2YwYTkxYjhlOWNiY2Y0ZmVlNmI0OTUyNzFjZGRkMDNhYzVhIHJlbGVhc2UyNi1tYWludAorNzkzNDAgZTliOTU4ZTgzOTFiZDJlMzQ4NGE4YWNiMTcxYTliNmIyNDUwMTM0NCByZWxlYXNlMjYtbWFpbnQKKzc5MzQxIDE1NTZlNjk3YjJkNzBiMWEzNjA0ZTI2MmIxMzgxZDliMmY5OTM4ZDQgcmVsZWFzZTI2LW1haW50Cis3OTM0MiBmODRmODM5NjNhNzhhZDY0MzQzODZiMTY5NWJjNDRiNTEzNDk5OTk5IHJlbGVhc2UyNi1tYWludAorNzkzNDMgMjdmOTcyNDQ2OThlZGEwNjA5MjUzOTRjZWVlMTNjNTVkM2RhNTdhZSByZWxlYXNlMjYtbWFpbnQKKzc5MzQ0IGIyMTRjYThlYjZiZDBhYmU1ZjExZTAzZTVmNWY1ZTE1NGU4NjJiNjkgbGVnYWN5LXRydW5rCis3OTM0NSA1MmQ4NDU4MzFhZTg2NGUwMGQ1MmQyYjkwNWVlMjUzN2IwZmYxNzI4IHJlbGVhc2UyNi1tYWludAorNzkzNDYgMjg5MDA2ZGM0NmVlMjRiNDY2MmJhMTRhZjlmMTg5ZTcyM2MwMGViNyBsZWdhY3ktdHJ1bmsKKzc5MzQ3IDgxYjc1MDkyNDA5MTZlZGM2MjdlNzEyM2QxZDZmNTUzODEwMjcxMGIgcmVsZWFzZTMxLW1haW50Cis3OTM0OCA5ODhlMDQ1N2UzMTMzOTZjZDUxNDU4YTBiYzRkZmRhNWIyOTY1NWU1IHJlbGVhc2UyNi1tYWludAorNzkzNDkgNzIwMTE4MTM2MGZkZjI3ZDBkMTVjNDM1NGI3NTUyNGEyNGNmYjc2YyBsZWdhY3ktdHJ1bmsKKzc5MzUwIDM3ZGE5YmM0NjE3NDJmYzRlNDA2OGQ4NjczYWNmOWNmYjYyOTU1OWMgbGVnYWN5LXRydW5rCis3OTM1MSBjYzhlMzY5NjJiYWNlNmM1MzlmMjI1YzExMDg1ZTgzMTk2NTQwM2I2IGxlZ2FjeS10cnVuaworNzkzNTIgOTc2Mjg0ODQ5ZTlkODE0MTBjZTA2NGIxOWVlMWZkNWJmY2JkNmU0NyBweTNrCis3OTM1MyBkNjBiZmIxYjljMDUyZTczZTg0MDM3ZTFhOGJmYmQ5YTE4MWQyMzYzIHJlbGVhc2UyNi1tYWludAorNzkzNTQgZTkxYTA4NmI0MTc4M2U3Mzc0Y2Q1ODU5YmI5ODZkOWQ4NDliYjdhNCByZWxlYXNlMzEtbWFpbnQKKzc5MzU1IDVhYWNjNzY4MGQzZjcyYmZmMmM2MjU1ZTdlNWM5YmQxMjFkODY5ZDcgcHkzay1qaXQKKzc5MzU2IDQ0Njk2NDgyYWM0MmFiY2U2YjhlOGE0OTQ1YTllNmQ4NzBmZWI4NDQgcHkzay1qaXQKKzc5MzU4IDFlNzQxZWIzMGIxNzA0YTM1MzZkODY3MThhNGMxNjZmZDRmNDY2YzIgbGVnYWN5LXRydW5rCis3OTM1OSA2NTdlN2QyMTMwNTI4OWNjNDAxYmRlMmU5YmNkNzQ0YWVjZmFjMzJiIHJlbGVhc2UyNi1tYWludAorNzkzNjAgNTA1Y2ZmMTI1YTAzYzY5OTdhODU4NzIwOGZlZjliMDA3NWQxNmYzNCBweTNrCis3OTM2MSAwMzE2ZTZhMjhhNTUzNTg3MWIzYWI3YzUzNTlmYzZiZTdhZDMwZmRiIHJlbGVhc2UzMS1tYWludAorNzkzNjIgZGU4NGE2ZDBlNjk3MGMwZTg5MGNjZDU3OWFiNmViMWY3NDhmMTJhMiBsZWdhY3ktdHJ1bmsKKzc5MzYzIDRiYzhmOTY1M2U4ZTJiZDczYTcwZDE5YWFmOTIyZTkwNWE0MDI5MGMgcmVsZWFzZTI2LW1haW50Cis3OTM2NCA1OTkzZGE2ZDI0MDk1MTUxYTMxNjEyNGZjYTc3NGQ1YjVlNzI1NjUxIHB5M2sKKzc5MzY1IDE5NTdjMjg5NDI5MjViYjhkZWZmYmFlYmEwNDI3NjU2YmQ2NjQ5ZWYgcmVsZWFzZTMxLW1haW50Cis3OTM2NiAwM2VhYjk5OGIwN2ExNWEyNjc4ZGE0ZDA4N2E4NjYxZmUxMjUzMGFkIHB5M2staml0Cis3OTM2NyA2MmZiMDg2YTM5NzU4MmEyMDZmZmUwNzA1YTU4YmRhYjBjNzA3YjI2IHB5M2staml0Cis3OTM2OCBjZDBjYTU2Yjc4ODBlOGM0NWZhNDk2NjcwNTFkZDZkYzc5Yzk1NThlIHB5M2sKKzc5MzY5IDIzZGE1NjYwN2IzM2ZhZWY5MDJlMmE5NDIzM2MzZGJmNGIwNzJkZmMgcmVsZWFzZTMxLW1haW50Cis3OTM3MyBkOGY4NTUzMzNmYjQ4Yjk4NjUyMzExOWJkZWQ0N2I0OTQzYzZlNzE2IGxlZ2FjeS10cnVuaworNzkzNzQgZDJkZWFhNzBmYWRiNDVjYzQwMTc0OWNkZjY5NGIxMzJhZDIxY2I2ZiBsZWdhY3ktdHJ1bmsKKzc5Mzc1IDBhYmZhMjYwN2Y1NGViODY1N2UzMmRmNTMyOTQxNWZkOGUyZDZmYzMgcHkzaworNzkzNzYgOTM0Y2JlNzM2ODAzNzJjZTI4NTVhMjk4ZjcyNGUxODIyNDc4ZWNlZSBsZWdhY3ktdHJ1bmsKKzc5Mzc4IDUzMmQ3MTQyMGY0NjE1NTg1MjQ0YWVkYmQ5M2JjNTU3YjA5MGM1ZmYgbGVnYWN5LXRydW5rCis3OTM3OSAyMjllYThjY2M1NTMwNzVjNjQ0N2ZhYzI2OWRkYjM2NmUxNzA2NGJkIGxlZ2FjeS10cnVuaworNzkzODAgODNmYTRmODk5NTY4ODJmNWViMDdjYTY1MjY4OTcwZGY0YjgyMDFhNiBweTNrCis3OTM4MSAxNzljNjQ3Mzg2MzMwYjE4YmQyMzY2NzVhOWVkMjBiZmExMzk3NmI1IGxlZ2FjeS10cnVuaworNzkzODIgNjIzODVkOWI3ZGEwNDM4YzgyNjZmYTI1ZTA5MDQ0NzFiYzEyNzdmNCBsZWdhY3ktdHJ1bmsKKzc5Mzg0IDc0MzBmYTdlZWE4Y2I5ZjkwMDQxM2U5NTQ2NWQwMWI1MjVmYWQxZDEgbGVnYWN5LXRydW5rCis3OTM4NSA0Y2ViNWRjMzVjYzY1YTY0ZmE5NGJjYTFjNzNlNjQ1ZjRhNTk1OGEzIGxlZ2FjeS10cnVuaworNzkzODYgY2FjNjYxZGI3Nzk1ZjE5YzZiZjBiN2YxZmVlNzdlOTU4ZDZlOGM5OSBweTNrCis3OTM4NyA0OTZkNzYzNjA3NjM5NDViNmUxMmM5ODFiOWM1NDA0ZDMxZjU0YWU2IGxlZ2FjeS10cnVuaworNzkzODggMmUwODEzZDY3MzhkYmY0Y2FlNmFiOWRjM2VhNjM2NWQyNTViYjdhMyBsZWdhY3ktdHJ1bmsKKzc5Mzg5IDcyNTFlNzM3YTVkOGNhYmQ2ZGJmNzI0YTE0YjlmMzdhMWM3Mzg4NWUgcHkzaworNzkzOTAgOWNhYWFmZDU5OWQ2NTM0M2IxNGYwM2ViM2ZlMTViMDRjMTM5ODhkZCByZWxlYXNlMjYtbWFpbnQKKzc5MzkxIGMzYzM0Zjg0Nzk5OGEwMDY2NTc3NjBkMDc2ZmM4YmU4MjY4OGU3ZTcgcmVsZWFzZTMxLW1haW50Cis3OTM5MiA0YjhkZWNiNDU3MmNkNzAyZThiNzgwMjU4MjkzMzk5MTgxMjE3M2M0IGxlZ2FjeS10cnVuaworNzkzOTMgZThiMDhkNzczZTc4NWY4NzJkMjVjY2MwODZkNGQxYTQ4MGNkMTVkMSBweTNrCis3OTM5NCAwMzA5NjIwOTIzNzNlOTU0Mjk1ZTkwYzE5YWRkYjc4NTVjMGU5Njc4IHJlbGVhc2UzMS1tYWludAorNzkzOTUgMjQ4YTdhZGU0NDRmYmVmNTRmMTViOGM0NTg2NWM2NzEzMDA1YjAxYyBsZWdhY3ktdHJ1bmsKKzc5Mzk2IGVkOWEzZGJjMzEyZTliMGE1MmI2ZjgyZTcyMGNkYWQ1MzEwMGNmNzkgcmVsZWFzZTI2LW1haW50Cis3OTM5NyBkMTFmYmM3OTY0OTlhMzM4ZDA0MDJiODg5YTkwNGRhOTU0MTM4YzM5IGxlZ2FjeS10cnVuaworNzkzOTggZDY4OTNjNzBkZjZhNDdkMTgxYWM1N2MzYjY4NmU1NTg0ZGQ1YmMwMCBweTNrCis3OTM5OSBlYjFiNjQ2OGU5Nzc0NmY2MzA5N2YyZjgwNmEzYzllOTliZTNjZDZjIHJlbGVhc2UzMS1tYWludAorNzk0MDAgNWQ1NDY5MmI2ZGMzZTNlM2U5ZDRjMDk2OGNmMjJmNTA4MzcxMTYzZiBweTNrCis3OTQwMSAwOWE3YTE5ZTdjYjliMDkzOGYwMmUwOTdlZjU3YzQxNzM1MDdlODFiIHB5M2sKKzc5NDAyIDNiNGU5ZmE5YzFlOGRjMWEzMWE0NGM4OWU3NTY4NmNjNzIzNzExOWQgbGVnYWN5LXRydW5rCis3OTQwMyA1ZjlhNzA2NGQ2MmFhMDA1OTM2MDMwMTQ1M2Q4OTEyMzU4NjUwYWIwIGxlZ2FjeS10cnVuaworNzk0MDQgNGVmNjVlMjM5NmFlOWE1ZWVhYzQ0ZWQ3NDI1NWVkYjk3NjdkYTA5ZiByZWxlYXNlMzEtbWFpbnQKKzc5NDA1IDRmODQxZGY4Yzk3NjZmOTM1ZTk5Mzc0YzNiNGI4MGU3MDY3ZTE2ZDQgcmVsZWFzZTI2LW1haW50Cis3OTQwNiBlNWRkOWY5ODY0NDBjODgyZmJmNGMwZTk5ZTcxN2E1OGVmMmQ4ZmNmIGxlZ2FjeS10cnVuaworNzk0MDcgMGRmZDYyMDc2ZGVkNDFlMjA5ZjU4MzQxYTY0MDc2ZjU1ZTE0N2UyOSBweTNrCis3OTQwOCBlMWE4NGYyMjE1MzdkM2IzNjc1MzgyZjk3Y2UxZGFlYjQyNTVjOWIyIGxlZ2FjeS10cnVuaworNzk0MDkgMWFhNjg0NjcyY2U2ZmE2NmI0NDM5OTUwNDM4MWY5ZTMyNjUyMTUwZiBweTNrCis3OTQxMCBlMThkMzgyMDEyODA1NzdlMTQyZjQ4MTM3MDIzZTk5ZDM3N2VmMmJjIGxlZ2FjeS10cnVuaworNzk0MTEgYzk5YzM3OWNlZDJmYzA1ZjI5NzI3YmEyNmY4YTAyOGZjZGZlMmExYSBweTNrCis3OTQxMiBkNmNhOWNkMWI0MTFlNjUxMTAxMWE1ZDkxZTczODJiYjdlMWE5MGM4IGxlZ2FjeS10cnVuaworNzk0MTMgNzMyOTMxMmZjYmQ3YTUyNGRhYjAzYmJhYmJiNTZmZGI5NzBlNzhhOCBsZWdhY3ktdHJ1bmsKKzc5NDE0IGZjYzEwODMzYTFjOWI1YTVmMGVkYTkzY2E5OWVjN2NmZDg1MTg2MTQgcHkzaworNzk0MjAgZTI3NzBiZjMyZGNmNjgzOTdkMmM1Y2JmZDZhNTY5YzE3OTkwNmE2ZiBweTNrCis3OTQyMSA5MzgyODRjZGExNWJmNTgxMjIyMDNlZWRmN2Q5MDE3ZDQ3ZTI0MjMzIHJlbGVhc2UzMS1tYWludAorNzk0MjQgMTQ0MzI3MjRkMGZlN2ZhYWJhMDk5MjNjN2NlMjJhZjkzMWUwNGEwYyBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5NDI1IGU2YjllZjQ5ZTMzZjlmM2IxMWY2NDc3OWQ3ZTY4ZDQ4OTM4OTU3MTkgbGVnYWN5LXRydW5rCis3OTQyNiBlMGI4ZWNhMjI1MjkzNTk2OWUyZGI0N2VmMTBjZjM5MTBjZDlkZWJlIGxlZ2FjeS10cnVuaworNzk0MjcgMzhlNDEwMDUwZGM3YzE1ZDVlMDRiMGZmMjhkZjcxZDU0M2NlZjI2MyBsZWdhY3ktdHJ1bmsKKzc5NDI4IDE2YTdkMzI2MDViYjgzMmRhMGIxMDUyNDhkNGU3YjMyOTJkNGU1YjUgbGVnYWN5LXRydW5rCis3OTQyOSAxYTBlMjE3MDYzYjc1NDI4YzdhZDIwZDAxODg2OThkYjA1ZjE0MDAxIHB5M2sKKzc5NDMwIDg3MDE1ODFmYjQ1NTA2MzczN2M5YjEwZWFhNjM1YzQ0MzE0NzdhOWEgbGVnYWN5LXRydW5rCis3OTQzMSAxODhmODYwNzU5YzE0MDQ4ODM5NjBkM2M3ZmY5YTNhYTExYWNjNDlmIHJlbGVhc2UyNi1tYWludAorNzk0MzIgZDgxODdlZDk0MzI1NjBlMzczYzRhYzkyNTJkNzAwZWYwMzNhMmM2MSBsZWdhY3ktdHJ1bmsKKzc5NDMzIGI5MDcyMmQzYWVmYTBiZWJlZDY2ZmQ2YjdlNWM0ZGQ0YmQ5NzcyODAgbGVnYWN5LXRydW5rCis3OTQzNCA4MjYzN2U2NjhjYTFjY2I2YjQxYzBhMDJlMWQ0MDQ0NmY2MzY1NjdkIHB5M2sKKzc5NDM1IDAzMGQ2YmYxZDk5NTZmNzcwZjk4MWNkMmZiYzZkNzY1MmM3NjFjNGIgcmVsZWFzZTMxLW1haW50Cis3OTQzNiA5NWE3OGEyZDcwMGQ4MGNiODA3Mzk0MzY4YTM3YThlZDlhZDU0ZDJmIGxlZ2FjeS10cnVuaworNzk0MzcgOTQyMWY2N2I2YzJhMTQ2MGI1YWFiM2EwNDAzZTY5NDRkNWYyZDU3MiBsZWdhY3ktdHJ1bmsKKzc5NDQyIDIwYmFmNjNiMDk0Y2QwYmQ2NzI5ZTQxNjA2YmUzYzFiYTc5YmU4YzUgbGVnYWN5LXRydW5rCis3OTQ0MyAyZWNiOGU5OTYwZmMzYTg3MWI3NTQyMjY2MDhjMDMyZjc2NDIwMzI5IGxlZ2FjeS10cnVuaworNzk0NDggYzhlY2FiYmU4MDE2OTk5MDRiMTE1MDI3NzZhMjQxNDk0OTE4NWJiMyBsZWdhY3ktdHJ1bmsKKzc5NDQ5IGU0MDdlYmE4ZTM4ZDQ0OWY4MTgzMjkzYmUyOTUyYWQyYmRmZjYzZmQgcHkzaworNzk0NTAgYWNiMWRjNjY4YTk3YmI4ZTQzMDlmNmIxOWMzZjVlOTFkZWQwNjI5MiBsZWdhY3ktdHJ1bmsKKzc5NDUxIDRiYmFmZGY0ZDVjMWJlYmIyYTIwNjNjMTBjMTNmZGM4MDQ0ODBlODggcmVsZWFzZTI2LW1haW50Cis3OTQ1MiA2NjBiOWYyNGVkYWM4ZTM3MTU5NDllNzY0NjllOGQ1NmMzNzBlMzJlIHB5M2sKKzc5NDUzIDUyNmJiMDgyYzA1NTI1YzkzZmZmMTFiMTI5OThkZWQ0NTNiMmIwYWQgcmVsZWFzZTMxLW1haW50Cis3OTQ1NCA1NjQxNjkxNTE1MTBjZmU5MWZiZTBiODdkYjIxNzJkMzcxNDE5N2IxIHB5M2sKKzc5NDU1IGU1ZmUyZjYyNTk4M2NjNmYzZjMxYmRjOThmMzFiYWNiMTYyNjQ3YjQgbGVnYWN5LXRydW5rCis3OTQ1NiAwZjZhMGIxZGI0ZTJiMWVjMGI3Yzk0OTVhZjFlZWExNjMyY2ZjOTMyIHB5M2sKKzc5NDU3IGIyMjdkYjlhMDAyOTc0NGJiY2ZiMTIyMDhlYjA3ODY3MGY5MTExMDAgbGVnYWN5LXRydW5rCis3OTQ1OCA4YzVjNWU4NmZiMjI3YTYyN2I2OGUwYzA3NzgzOWVlMTE2OWRhODA0IHB5M2sKKzc5NDU5IDBlN2FlNTNiNGU3OTAyNGNjYWU2YTMzZGFhYzk3YjI2OTE1N2I3OTUgcmVsZWFzZTI2LW1haW50Cis3OTQ2MCBlODExYWEwOTRmMTk0Mjk1N2U0OGRiNjg5ZjI3MThiMjIzYTlmOTc2IHJlbGVhc2UzMS1tYWludAorNzk0NjEgOTE3MGFhOTQ0ZjI5MzM0NWJkNmY4ZGE3NmM3YWEwMTljYTRkZWI1ZSBweTNrCis3OTQ2MiBlMTE4M2ExMzdkOGNhOGY0ZDdiMTVhNzUxZDVkNjgxYTQxZjRjZGU0IHB5M2sKKzc5NDYzIGFiMzA3ZjdkZWZhMWVjNzlkM2I2YTZkOTk3YTU2NTgzZTIwMzgxMmIgcHkzaworNzk0NjQgMjI5NDZkMDBlZWNjZWY3ZTQ2Yzc0ZGVlYzNlNjU4OGFhNjQyOTA4NyBsZWdhY3ktdHJ1bmsKKzc5NDY1IGY5NmFkODAwNzEyZWU2MWY0YWExMjkwYzU5NjM4MTJjYjZlOTFkYzQgcHkzaworNzk0NjYgODZiNzFmNDBlOGFhZTI3MDRkMDhmNWU2ZTdjYjcyY2FiMGY0ZDliYyBweTNrCis3OTQ2NyA3MWE0NWVjYzRkYzkxMWVkMDNiYTI3NmIzMjBmM2RkN2EzZjBlMmIxIHB5M2sKKzc5NDY4IDMwOWUyZDNlOGRjYzIxYWU3MGQzNDhmNWIwNTBmZThmNmQ5YjZhYzIgbGVnYWN5LXRydW5rCis3OTQ2OSA4ZTZhMTYxNTdmYWYxYmRmNTQ0YjQ1Njc1NDhlMmVkYTNkOWVmYTlkIHB5M2sKKzc5NDcxIGEyYWE2ZGRmZThlMjk1OGFjYTZlNjIzMDRmNTgwMTRhM2E5MjJmMzMgbGVnYWN5LXRydW5rCis3OTQ3MiBkYjVhM2EyNzdjMGI1ODBlYmY1MWZjNGEzMTkyMDFkMDZkMGM1OWExIHB5M2sKKzc5NDczIGJiMmNhMWI2MzMyMWE3OGI0MTMzNDdhZDhmNGNhYmUwZTRjZTk0YTAgcHkzaworNzk0NzQgNDBmNzg3YjE1MWFjNmMwNTM1YTczNTZlMWZkMjY0NTFlNjMyMjYzNiBweTNrCis3OTQ3NSAyYjYzMjE5MTVlOTJiNjFhNmM4NjllNzk3NDA4ZDU2ZWFkOWQ2M2EyIHJlbGVhc2UyNi1tYWludAorNzk0NzYgMGJjMDQ1MjVhZjYzOGJkMDA0YjExMDQ1NWNmZDUzMmQ2MzNiZDE0NCByZWxlYXNlMjYtbWFpbnQKKzc5NDc3IDYwMDA5NjMyZWQxMTlmN2JkZjM5OTg1ZTY3MmJkNWNhNTlkNmVjODAgcmVsZWFzZTMxLW1haW50Cis3OTQ3OCA4ZWUyYmY4MjFmNjI2NzEzZjk4YmI0OWQ3YmI1ZDEwNDQzOTFlOGFkIHJlbGVhc2UzMS1tYWludAorNzk0NzkgZTYzZDQ2NzhmY2E3M2YyNGQ0MmUxNDcyZmJiNmVhYTU2OTE4ZWQ5NyByZWxlYXNlMzEtbWFpbnQKKzc5NDgwIGJiOGJkMzM1OGJjYTAyY2U1YTcwMWJiYjZhN2I2NDgxY2EwMmU4MmEgbGVnYWN5LXRydW5rCis3OTQ4MSBiZWE3NWZmNjUxMTQ2ZGFhZDAwMmQ0MWQ4Nzg5NzY3NTZlNTJiZGJjIGxlZ2FjeS10cnVuaworNzk0ODIgZDQ5MzUyNDI2ZGU1MTMzM2QzN2U2NjUxNDE4Y2RmYjMwMDA5ZWE2YyByZWxlYXNlMjYtbWFpbnQKKzc5NDgzIDIxM2EwYWUyZGI2NWIyZTI1MTk5ZTAxMDViNDJlMDgwODE5YmM3NjEgbGVnYWN5LXRydW5rCis3OTQ4NCAyYTMxMGE0NDhhMGE3ZTIwMTQ1YzJiY2Q4OTFkYjg2ODdiMzBhYTJjIHB5M2sKKzc5NDg1IDUxYjJhZjljNDY5ZWI0YTk1MzZjZDA5ZGIwYjI4MWQxNTk0YWJhMDkgcmVsZWFzZTMxLW1haW50Cis3OTQ4NiAyZDA2YzZjN2U3MzI3ZGViZGNmNmZhY2UxZmRkMDk1Y2VlZDg4ZmRlIHJlbGVhc2UzMC1tYWludAorNzk0OTAgYmJiMzQwNTAxZjI5ZmMwZjMzNjYwNDEzN2YxNTM5YTNmMDE2ZDMyZiByZWxlYXNlMzEtbWFpbnQKKzc5NDkxIDliOWZkMjk5MDcyZDhmY2MzODQ2NzVkODliZjg1NGJhNWEyYTY2YTcgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTQ5MiBjM2M4MmQ4MDQwZDZmNGVmNjYzYmJkOTBhNWU2NWU4OGRhMTFlZmNlIHJlbGVhc2UyNi1tYWludAorNzk0OTMgMDRjYzA3NWJkZGY1YmI5OTYzZWY1MjA1NDJhZjc3OTdjMmZiNTE3YyBsZWdhY3ktdHJ1bmsKKzc5NDk0IDY2ZTc1N2Q4ZWE5MzRjZWVjMWQ2YjcwNzk1OTRlNjBmMzQxZGVkYTUgbGVnYWN5LXRydW5rCis3OTQ5NSA3NzM5YWVlZmRiYzAxNDRjNjlkYjk3NmY5MmE5M2UxMDM5YTc5NmEyIHJlbGVhc2UyNi1tYWludAorNzk0OTYgYzk2ZDI3ODY3N2FmM2NkMDhkOGJkYzBjNDhkNjYyY2ZjZGM4MDNlMyBsZWdhY3ktdHJ1bmsKKzc5NDk3IDMzMjljMDVlNmUzMTkzNzliODhhYzQ5MDkxZTQwNWQ3N2MxNTcyMGMgbGVnYWN5LXRydW5rCis3OTQ5OCBlNGU0YmJkMzlhMjEzY2NlOGNiZWQ3OWE3NGE5YjJlMzA3NGFjYzMwIGxlZ2FjeS10cnVuaworNzk0OTkgNDBhMmU3YWM4YTQ3ZTIyYTAxNTYzNzVlOWE2YjYyNThiOTc4YmVjNyBweTNrCis3OTUwMCBhMTRhMjA1YWIxZmI4NDkwMWQ1YmU2ZTFmY2Q2NTExYTRjZDhkYzYyIGxlZ2FjeS10cnVuaworNzk1MDEgYmM2ODE0YzM0ZDVmMjBlM2U5NWE0OTBlNWRhNGE2ZjNjYWU3ZDVmNSBweTNrCis3OTUwMiBmNjk3NjlhYjBlYjgxNjY3MzVlNTVkNjM2ZDY5MTg5YzQ3ZjkzMmYyIGxlZ2FjeS10cnVuaworNzk1MDMgNWUwZmY2NTI4NGZhMjA4OWIwNGUzNmM2MWIyMWEyMjM3MzZjMjFlOSBweTNrCis3OTUwNCAxZDAwMjdkMzRhNTFlMjFjOTkyMjg0ZWIzMTU0NmI3NWQ5MWJmZmM5IGxlZ2FjeS10cnVuaworNzk1MDUgMTM2MTg3NzU4NWYyYzQ5MWViYjBlMDdlNmEwNTQwYzkyYzE2NWE2MyBweTNrCis3OTUwNiBiZjNjNDhmMjQxN2M0NDcxM2Q0MzQ4MDk4YzBhZTFhNzg4NjFhNjk4IHB5M2sKKzc5NTA3IGRkZDU1MDk1MWI4M2ZiMTcwYjAxZGU3Zjg4ZjFiNzMzZDFhODVhNjIgcHkzaworNzk1MDggNGRkNmViNmJlODJmZDUyZjBiZTc2OGZkMzZlNzg1MjFlODRjMWE4YiBweTNrCis3OTUwOSA2MzI2OWM0MTg1YzUyZTY5ZDY1N2YyY2IwYWM0NWNmMWM0MDEzMzBmIGxlZ2FjeS10cnVuaworNzk1MTAgMGMwMjU4NGM0ZTUzNGZlN2YzODVjMTgxZjQ2MzAwZjJkMDk2MzVjZiByZWxlYXNlMzEtbWFpbnQKKzc5NTExIGE2MDk1NGViNTE4Yjk4NDlhOTI3MzI0NDgwMmRiMjFlMTIzMzVjNTIgbGVnYWN5LXRydW5rCis3OTUxMiA5NjUxYzg0YzUyMGQ5ZThiYTVkYzkzMzQ1ZTVlZmVhNGU2YzllNTgxIHJlbGVhc2UzMS1tYWludAorNzk1MTQgNjBmOTEyNGZkZWFjMDUxMDg5ZGVkODBlMWU4MTg0ZTI5YmEyZWY5NSByZWxlYXNlMjYtbWFpbnQKKzc5NTE1IDQxOWZmNzAyNDQ3ODM4OWUwZmY1MDg2ZWJlNGY1YTQ2YWMxZWM5NTkgbGVnYWN5LXRydW5rCis3OTUxOCAzNGQ4MjIxOTZkOGJkMGQ2YWJkMDg2MThiOTVkMjEyNTdkMjA2MDU2IGxlZ2FjeS10cnVuaworNzk1MTkgZWY2ZWJjMDZhNzg2ZGMwMGEzODkxZjc5NDFmZWRmMDc4ZDIzOTI1NiByZWxlYXNlMjYtbWFpbnQKKzc5NTIwIGZmZTdjNzkxYjViOTQ4NzhmNGFhZTNlMGQ3NzE3OWI0ZTE3MjA2YzkgcHkzaworNzk1MjEgMTMyMzIxMmRhMTU0MDA0YWZlNzI4NzNjYTZmMDQ2ZmE1YTVhZTk0YyByZWxlYXNlMzEtbWFpbnQKKzc5NTIyIDVlOWVhZGM3NmU4N2VmN2JlNmQyYWFjNDFlYWNjNTZmZmM0NWZjMDcgbGVnYWN5LXRydW5rCis3OTUyMyBjYWQxMjY0MjhmNDhkNzhiOTdkYTc3MWZhYjVkNGI3NjJkODljODhhIHJlbGVhc2UyNi1tYWludAorNzk1MjQgNTdkOGQ3ZjMxN2Y1MDFiNDE1NWE5OTQ1MjEyMWEzMjhjZGVhOTU2YSByZWxlYXNlMjYtbWFpbnQKKzc5NTI1IGZkNWMwZWEyODcwYmFjNGIwZDFjOTI5OWYwMmNiZTc1YzRhZDA3ZDcgcHkzaworNzk1MjYgZTRmOTY5MDEyZTY4M2NhZTJlZDg5MTgyYzZlNTEzYjgxZjRiODJiOSByZWxlYXNlMzEtbWFpbnQKKzc5NTI3IGQ1N2NmMWFhMmRkNGQwMGMzYzM3MGFlM2RjNTk3YThkMDA2MzI0YzUgcmVsZWFzZTMxLW1haW50Cis3OTUyOCA5OWU1MjMxMzJhZWE0M2Q3OGE3NjRlMTA0YzkxYzYwNzc5NDFiNDUwIGxlZ2FjeS10cnVuaworNzk1MjkgODdiYzBmMTA4NzAyMTM5MTA3MjllNTFiMzMwOTRiMmFhMDliMDI5NCBsZWdhY3ktdHJ1bmsKKzc5NTMwIGEyZTYyNzgyN2JmMzUwOWFiNGE2NzgxYmZmYjZlM2U4NTI3MzAxMTAgcmVsZWFzZTI2LW1haW50Cis3OTUzMSAwMWU4YjEzZmE5OWE1NjVkYzVhOWVlMjU5ZjAxMjM4Y2U2NDYxNjcyIHB5M2sKKzc5NTMyIGVjYjlhNjYwOWJiMWM1NDUwOWJiOGM4ZjFmNzdhMzg2MjJmMTc4ZjUgcmVsZWFzZTMxLW1haW50Cis3OTUzMyA1OTIwZjlhNWUyMmQ4ZDMzYzExMjQ0YjgxNWZlMjIyOGI1MzBmOTI2IGxlZ2FjeS10cnVuaworNzk1MzQgODMyMDIyZjYzYmNiZDY3NTU0MDg4MThkOGE2MWI2ZmE4NjRiMzNhMiBsZWdhY3ktdHJ1bmsKKzc5NTM1IDdiOGJhMDE5Y2QxNWI1MjA5ODdhMzgxNTllM2RiZWFkYTRjZThjMDIgbGVnYWN5LXRydW5rCis3OTUzNiA0ZmNhYWQzZjY2OWIyM2Y2YmUzYTcwNjE5ODU4Y2E3ZThmYmU1Y2Q3IHB5M2sKKzc5NTM3IDU3MGVhZTE0ODFlYjYwMTFmYzA5ZmMyYmMzN2VjNDRlY2FjMmE4YTMgbGVnYWN5LXRydW5rCis3OTUzOCBjMzZmMjNkYTg4YzFhYTU0M2ZkNmM0NmFjZTZhOTYyOWJlM2U1YjJkIHB5M2sKKzc5NTM5IDM3NDhiY2E0ZDg2OThhYjA3Yzc2MDg0MTI0MWNiMTdkMGQwMmI3OGMgbGVnYWN5LXRydW5rCis3OTU0MCAyNWE3Y2UwMjMwNmNkZjFkM2MxMmI5ZmYyODc5OTViOTZlZGJlYTRkIGxlZ2FjeS10cnVuaworNzk1NDEgZDAwZjJlYTI1ZDIwYTQxZjI0NmQ2NjgwZjVmMzFjN2M3ZDMyM2JlZiBsZWdhY3ktdHJ1bmsKKzc5NTQyIDdiNjdjMzQyOTE3Y2NlNjkxMDQ3YTdhNTAwYmMwMWNiODdiZWRmNDIgbGVnYWN5LXRydW5rCis3OTU0MyAxM2E4MTEyZWNhNTJmYzNjZjRjOGRlNmI5YzMxOWNlOWU4MTIxM2FhIGxlZ2FjeS10cnVuaworNzk1NDQgYTRkYWQyMThjNmUzNDU2ODVkNzVhNzJhNDFhOTdjM2IyNTVjYjQ3YiByZWxlYXNlMjYtbWFpbnQKKzc5NTQ1IDFlMmM5ZmVhN2NiZTAxMGE2ZGRiZWJmOWMzMTYzZGYxY2U0YWMzODYgcHkzaworNzk1NDYgNWNjODJjY2U0NTIxNWZjN2U3ZjhhMzFkZmM5MmYzYTBkMDRlYWI2NyByZWxlYXNlMzEtbWFpbnQKKzc5NTQ3IGM3OTY1YmQ1ZDIwMDRlMmM3ZjMzMjlkYzI4NGI2YzU0ODAxMzIzNjQgcmVsZWFzZTI2LW1haW50Cis3OTU0OCA2ZGUzZGUzYWI3MWY3NTM2YThhMTA4ZmQ2NWFhNDE5ZDA3YzUyYmU0IGxlZ2FjeS10cnVuaworNzk1NDkgODgyZDY4MWQ1MGEwMDRlZWM0NDZhODI3NDA3Mzc4MjQxMWQzMWE1NyBsZWdhY3ktdHJ1bmsKKzc5NTUwIDU0YjBhNmY3NWVkNTc5NTA2ZDZiYTBjODUxYzlkODA2YTM5MWEzNGMgcHkzay1jZGVjaW1hbAorNzk1NTEgNzhlMjA5Nzc5MmJlZWFkMWM4MmM5NDk5ZTEzOTA5ZWE5MjUxYjJmZCBweTNrLWNkZWNpbWFsCis3OTU1MiBmZDhmZWY2YWZlZmQ4Y2RiZmQ0YWMyNTUyMmM4ODVhNzAwODU4OTExIHB5M2stY2RlY2ltYWwKKzc5NTUzIGU5NWY4NzU1ZmYxZTNmNjYzNGYyYmU3YzJhNTVjMTllM2IyZTdhZDAgcHkzaworNzk1NTQgYjRkZWFlYWI5NmU3OGQzZGNlMjM1NjM5M2Q1Nzk3ZWI5MWI2ZDVkZiByZWxlYXNlMzEtbWFpbnQKKzc5NTU1IDZkZjZjMTlmYmFlMzU4YzQ1ODE4ZjMzZTgzMGE2MmViMzMyMTNmMjMgbGVnYWN5LXRydW5rCis3OTU1NiAwNGU3NzViMzNlOWUyYTM3ZWM1YjIzNTU0YTVkMzE0OTg4YTdiNzEzIHB5M2sKKzc5NTU3IDk2MjAxZjQ4OGNjM2NlMjg0ZmUwMGJmOWFiMmYwZDM3M2RlZDJmNTEgbGVnYWN5LXRydW5rCis3OTU1OCBhNDA0ZTM3MDJmNzlmMjhjMDJjMzk2ZWM1NmFlNjEzZmJiOGY5ZjA0IGxlZ2FjeS10cnVuaworNzk1NjAgYzhhNjAxZTc0NGNmNjg4MzBkZDY0MzBmNjIzN2JjYWE2ZTU3MWQxNiByZWxlYXNlMjYtbWFpbnQKKzc5NTYzIGYxNzE3MTI4ODBjOGViZDJmNDUwNjM4MTY1M2VhOTY4NWJlNjI5MjUgcHkzay1qaXQKKzc5NTY0IDZkMzQxNWMxNWI4YmY5MjA4YmM0ODA4NGUzNzQxOWM5YTBlN2FmMDAgcmVsZWFzZTMxLW1haW50Cis3OTU2NSAxYmVhNTQwNGUwODdjMGU1ZmI1MzgwNzAxYmE5NGI5Y2E4ZmJkYmYxIHB5M2sKKzc5NTY4IDUxMmI4MDI1MDc4OWI3NzI4YzE1ZWIwMTgzZmYyN2VhNWI3MTQ5MDggcmVsZWFzZTI2LW1haW50Cis3OTU2OSAyNDc4YzM4ZmVmZjc0OWY4ZTZhZjU4MzZkNmE3YjQ3YTY3NWYzN2E0IGxlZ2FjeS10cnVuaworNzk1NzAgNWJhZDgxOGQxNGYyODczZjM5MzlmYTdiMzZmZjY4YWYxNWQzYmQyNSByZWxlYXNlMzEtbWFpbnQKKzc5NTcxIDNmNDQ4MjUyNmY1NWEyNjg3ODdhMDFkMjc4YjM1ZjQ4NjljZGNjN2YgcHkzaworNzk1NzIgMzg4MDZkZjA1ZDA5ZDZkZWY4YzY0Nzc4NGI4YTkzNDkzODQ4OWIxNCByZWxlYXNlMzEtbWFpbnQKKzc5NTczIDRkOWQ5NzYwYzg4YmVmNmQ3MDIzMzc3ZTRjMjRkZDBjZDY3NDg4NmUgcHkzaworNzk1NzQgNDE1YzRiYjQ1ZmU2ODc3NGY0YjA4ZDU4NmU4Nzg3MTVmNDM5NGRmNSByZWxlYXNlMjYtbWFpbnQKKzc5NTc1IGI2NDczMTU0YTcwYmMzMzE1ZWU1YTczYmE3NmUwZTRhZjQyNDE4ZDIgbGVnYWN5LXRydW5rCis3OTU3NiBlYWIzNjE2MTdmNmE3ZDA0MTlkYTQ4YzkxMzE2MmNjMzIyMDFmNTRiIGxlZ2FjeS10cnVuaworNzk1NzcgYmFjNGIyODlmNzlhYWQ1MzA2Yzg0NjY2ODEzZTY3NjIzZjgwNjI3NyBsZWdhY3ktdHJ1bmsKKzc5NTc4IGViOWZkYTkwZGE2ZWQ4NGQ1NDdjYjljNTljNjMxZDY3ZTMyNzI0YjEgbGVnYWN5LXRydW5rCis3OTU3OSBmMzg5MTliYjI2Y2M3MTE5ZmQ1YTg5ZGMyN2MzZDY1ZjY4OThkZmNmIGxlZ2FjeS10cnVuaworNzk1ODAgN2E0YTBjNjllM2E1ZjIzZmYyN2JmZDcyM2NiNzhhMTFiZjMzNzE4NyBsZWdhY3ktdHJ1bmsKKzc5NTgxIGI1N2RhNGE0YTNlZDk1ZWJkMWVhYTY2ODZlZDRlM2E5MmUzMzJkMDkgcHkzaworNzk1ODIgZTgxY2E4OGQ0NzhjYzU1ODMyMTllM2ZhNjNiMjkzNTNkM2U2YjNiNSBsZWdhY3ktdHJ1bmsKKzc5NTgzIDEzMDYwMzNkOGFkMmFiNzE5YWM4MzljMTRjODIyZjY5MzUwNjVhYzcgbGVnYWN5LXRydW5rCis3OTU4NSBlMzVmZWI5OTViZDk2YzQ1MGIyYTBkM2NjYzJjNDBjNTRlZWZiMjI5IGxlZ2FjeS10cnVuaworNzk1ODYgYzViMjA2NDVlOTMzNTBjNzQyYjg4NzVlZWZkZGJlMGMyN2ZhZjFjYSBsZWdhY3ktdHJ1bmsKKzc5NTg3IGY3NzU1NmZlYmVjODIwY2YyMDM1NjFjZWJmM2Q5M2E3ZWQyMDk5ZDcgbGVnYWN5LXRydW5rCis3OTU4OCBhZTdjZjU3OGRlNWFkZGUwMDM5NmY1ZDVjYjM5NjkwNTdhZWMxODJjIGxlZ2FjeS10cnVuaworNzk1ODkgMTdmMDhkNjVjYzBkODFkZDQ3NDJkNWJmOWQ2YmY3ZTU1ZmI0ZDcwMCBsZWdhY3ktdHJ1bmsKKzc5NTkwIDU3ZjRjOTkwODJkZjU2MDk3MTYzZGRmYjA3YTdjMGViOWE3NDgwNWMgbGVnYWN5LXRydW5rCis3OTU5MSA0OGZkNjljMmEyYjQ5NGYyYjEwYjA5ZDg1YzNjNjdiNjFlMDMxNTAwIHB5M2sKKzc5NTkyIDFkZjM0ZmE0OTFiZGEwNGIwMjJiNTZjMmZhY2E1ZDYyNjYyNWIxNTMgbGVnYWN5LXRydW5rCis3OTU5MyBkNzdlMzg0NjBlM2NhN2Q2YjJjOGRlYjkwZTJiZDg5Zjk0NzIzNDdkIHB5M2sKKzc5NTk0IDRiNTVjZWE1NTA2Nzc2ZmFkODhjZWQzODAxNTMwMDc1YzNiYzEyYjAgcHkzaworNzk1OTUgNTE0OWQ0ODRkNTZhYzgxZGI3NWRkMWYzNThlYTU0OTU1ODhmYjhlNSBweTNrLWNkZWNpbWFsCis3OTU5NiAyMDQ5N2Q4NWUwMTEyZWMzZTRjODFmZWIxNTRmM2IzMjkwMWZlNzFlIGxlZ2FjeS10cnVuaworNzk1OTcgM2YxZDZlZDQ4MGRkODFiMDQzM2I0NzFiZDRhNzBhMTQ0ZmI5NDVhMyBweTNrLWNkZWNpbWFsCis3OTU5OCBlODA1MmE2MGJiYjdiNmVmMzJmMGI3MDRlYTdkNDI2NDdkNWY5MGI1IHJlbGVhc2UyNi1tYWludAorNzk1OTkgY2ZiYTU5YzM4MzQxNWMyOTJhNTY0MTAzNDFjYjU3MTQ2ZGVlYWIxZiBweTNrLWNkZWNpbWFsCis3OTYwMCA4NzBmZjYyMjBhMGI5OWIwNDIwYzNjZTFiNjZmZTMyOTk3ZDM4YjMwIHB5M2sKKzc5NjAxIDI3Nzg1ODNiZTIxZDYyY2VlYTg0ZjNlMDg4NWI1ZDc1MGQ3YzIxYWEgcmVsZWFzZTI2LW1haW50Cis3OTYwMiBkMTEwMWFhOTg0YzA3NWJjN2RjNmVlMjlkYzcwN2FlYWI5MjFiMDcyIHB5M2sKKzc5NjAzIDRhYzA1ZDFmNjBjMTgwNjhiNjQ4NDYxOTM0ZWEwMTM5NjQ3YmU4OTIgbGVnYWN5LXRydW5rCis3OTYwNCA2NmRiMDNhNzA3Njc5YzY5YTdlNzAwNmNjNDIzNWY3YmIyZDg4OTlkIHB5M2sKKzc5NjA1IDY5OTI0NjdiYjhiNTljNjMxMGQ0YjUxODg5YTVhZDYwOTAzODQxOGMgcHkzaworNzk2MDYgNDNhODM3ZDI3MjhhMTM0MWYwNDZmMDE5MWZhZjc4ZTQ3MmQ3YjU4NCBsZWdhY3ktdHJ1bmsKKzc5NjA3IDFmZjhkZDY3YmU4MjI3YTc3MDBmODgyZDFjMTViYjI1YTExN2M1NjUgbGVnYWN5LXRydW5rCis3OTYwOCAyZjVkYzJmYTBlNTZhMjUxMDFiMzBhZmRmY2Y0YzA1MzgzNjhiM2RhIGxlZ2FjeS10cnVuaworNzk2MDkgY2NhNGI3MmY0NTBiNjQ3ODY3MmE4OGRlZDk5ZWEzMjE0OGI4ZjZmNiBsZWdhY3ktdHJ1bmsKKzc5NjEwIDI1NWE0MDFjMTliMDVhYWU2YTYyZmE1MDI5MjEyOTIzZTJlNzc3ZWIgcHkzaworNzk2MTEgZWZlYmI3YmNhZThiMTY0YjAyNTEwNTNjOTI5YjIwZDdiYjU1NDVhYSBweTNrCis3OTYxMiBiNDc5NmVmY2E3MTY0ZmZmY2MyY2EyMTg0MDgxMzc1YjAzYjdiZDkyIHJlbGVhc2UyNi1tYWludAorNzk2MTMgYTFkYWJmNGU4ODY2NTYxYmI1NzU3ZjNhYmM2NGZmMDhjODg2ZWI1NiBweTNrCis3OTYxNCA3ZGM4Yjg4YmIxNWE0MWU0YjY2ZWI4ZTllMjNmMzg2YTc1YjA0NjI4IHJlbGVhc2UyNi1tYWludAorNzk2MTUgOGQ3MzE3YzkyNGNlZjgyNDI2OWVlZGQyMWU1NjgzODM0MTE1ODA5ZSBweTNrCis3OTYxNiBlZWVhMzQwMTRjODAyNjg2ZDU2YmUxODI0OTAxYjBiODRlNmQyOTUzIGxlZ2FjeS10cnVuaworNzk2MTcgMjc4ZTdlY2MwZjc3ZWYwZGU2MjNhMTNiMzMzZTQ2NmQwNjY0MjY0MiBsZWdhY3ktdHJ1bmsKKzc5NjE4IDlkNTBiY2QzZjBjOWNhODViNzgyZTM0OGU0ZDdjOTY4NWVlYzY2ZjAgbGVnYWN5LXRydW5rCis3OTYxOSA3YzkyMzgwODVhNWNlMGEyNmUyMTBhMzU1MjM5NmIwZDUxZGUwOWVmIHJlbGVhc2UyNi1tYWludAorNzk2MjAgMzc3YjI2ZDg3NmUwZGZlN2FlNTkxZWM2ZWQ2ZGUzZjBlZmU0YWNkMiBsZWdhY3ktdHJ1bmsKKzc5NjIxIDUzYWZjZGM5YWUwYWJjNjkxMGMzNWMyNTEwMmY4YmMxNzVjZThmMzcgcHkzaworNzk2MjIgZjc2YzNkZWM4NThiN2I5Yzg1MTAzN2ZlZDg3YWExZDNiYjk5ZjVhZSBsZWdhY3ktdHJ1bmsKKzc5NjIzIDcwYjdlNGE3ZjdjZTIwYjJlNzcxMTMzNjNiNzllOWNhYTc1MzUwZjcgbGVnYWN5LXRydW5rCis3OTYyNCBhYWI2NDI4M2QwMGExZmU2ZTQ0Mzk5NGIyYzM5MTA0N2I5ZjQxZDkyIGxlZ2FjeS10cnVuaworNzk2MjUgODRlY2IzNWEwNmJkZGY2Y2ExODZjNjkyYTU1ODc4ZTM2N2FlM2VmYiBsZWdhY3ktdHJ1bmsKKzc5NjI2IDFiNWQ1ZTc0ZjczOGY0MWE0NzQ4ZGJjZDcxNzYzYTYzNzE2ZjAwMDcgbGVnYWN5LXRydW5rCis3OTYyNyBmMGJiMTBjZTA1Yzc3MjY2NzBjNTEzZWNlNDQwMTVmMGEyNDMxODk3IHJlbGVhc2UyNi1tYWludAorNzk2MjggYWVhMzE5ZWEyNmE4ZTkwMzIzZTNjNTE3ODMyZWFkZTYxM2E0Zjc3ZSBweTNrCis3OTYyOSBmZmEwYWE3MGM3NDY4M2Y0NTBiOGZjNjlkZGU0ZjNiMWNiM2ExZWE5IGxlZ2FjeS10cnVuaworNzk2MzAgNzY1OTQzYzExMTViOTViZmRhM2M4MjhkNWIwZGUxZDY5OGEwZjA1MSBsZWdhY3ktdHJ1bmsKKzc5NjMxIGMzNGRkY2EzNjc4NmMxYzRkNzE4NWVlMzFiOWVjNzU5YTk2OTA1NDkgcHkzaworNzk2MzIgNTQ2MmM1YTkxZjhkY2I5ZGM4ZjQzZjUxZTI4OGI0YmQzYjE2NzBkYiBsZWdhY3ktdHJ1bmsKKzc5NjMzIDBhYjg5ZThiZGVkYzU3NjZkZTIxN2NhMjQ3ZTg2MzBlMjAwYTY1MmEgbGVnYWN5LXRydW5rCis3OTYzNCBhN2U5ZjhlMzU1M2Y3Y2E1Njk3MzFjMGE0NzYyY2Q2YTVkMGRjMWYzIGxlZ2FjeS10cnVuaworNzk2MzUgZDQ3OTllZTY0YzIzYjFjNTg0YjIyNDI3OWRkZTFmMzdkMGY3N2UwZCBsZWdhY3ktdHJ1bmsKKzc5NjM2IDQ4NzdjMTE1OTE1M2Y1ZWZkOTlkY2NjNWFiOGQyZjc3YjNlNGE0OGQgbGVnYWN5LXRydW5rCis3OTYzNyA0ZWQwNGEzOWMwYTkxYjkzZDU2YWY2ZWJmNTExZjM0ZTBkNzU5MDYyIGxlZ2FjeS10cnVuaworNzk2MzggNTQ5NjUwM2I4YjFhYmQ3MmYwM2Q0ODY1OGYwNjIyYzlkMjRiNmM4YSByZWxlYXNlMzEtbWFpbnQKKzc5NjM5IDg2ZjY5OTc2NjAxNjJjYmRkYTAxOTJjM2VjMDk3OTA4NzI0YTY5ZjEgbGVnYWN5LXRydW5rCis3OTY0MCBkMzg1ODk1OGRmZjUzZTYyNDM1MjIxYWIxOTU4N2Q1MzBlOTgyZTMxIGxlZ2FjeS10cnVuaworNzk2NDEgYjUyOWExNDJjYzQ5ZTZmMzEwYWI3NDYyZmQyZmYyMjYxYjViNGM0MCBweTNrCis3OTY0MiBkMzM0YTdhNTY4NDQ5OGNlN2VlOTU5YTQ4MDBiNjAzMDE5ODEyNjNmIGxlZ2FjeS10cnVuaworNzk2NDMgZWJjZWI3Nzk2N2RlODYzNDhhMTJmYWUwMDM5NDZkZTI5OTBjOTE2NSBsZWdhY3ktdHJ1bmsKKzc5NjQ0IDZkNDgzNWE4MWI2MzJhZDAyMGY2YjBiOGQ0OGI2MWFkZGJmZDAzYWUgbGVnYWN5LXRydW5rCis3OTY0NSBmYTY0MWQ2MDU0Njg4NGZkOWMwNjIxMTlmYWI3ZGFlYjc0YzAwZDcyIHB5M2sKKzc5NjQ2IDY2YjYwYTZlODE5ODQ2ZjZiZTBlYTY3OTE1OWZhMGJkNmM1ZDc2ZDIgcmVsZWFzZTI2LW1haW50Cis3OTY0NyBhODhlMGY2YWI5NDVhMTY2OTMxM2E0YTIwYWI4NWExM2M2ZTk5NWVjIHJlbGVhc2UzMS1tYWludAorNzk2NDggODllODdiYThhYjRlMGIwZjUzMTY0ZGRiMjFiM2RmMWQ0ZDgxMWNmYiBsZWdhY3ktdHJ1bmsKKzc5NjQ5IDZmZTVkYzE3NWMyNjRkZjJhYjEyMjUzODdhYmQ5MGVmZTVhOWI4OTIgbGVnYWN5LXRydW5rCis3OTY1MCBmZGQwMTM3NDMyZjg1MzczOWY0MTVmNzg1MGRiY2I5YzVmODI5NmU5IGxlZ2FjeS10cnVuaworNzk2NTEgNWViY2E2MjI4OTAzNmIzN2JjYjdmZDRlMDhiNDg5N2RhMTIxNTQ2NyBsZWdhY3ktdHJ1bmsKKzc5NjUyIDUwYjJjMGZlNWUyN2IzOWMyMzRjMTlmMmUzM2Y5ZTJhMzg3MDI2MjcgbGVnYWN5LXRydW5rCis3OTY1MyAxNTRkY2ZhMzJiMjAxYWVjZGFiNzZmNWZjZWMzYzhkOGVhNjJjYjNjIHJlbGVhc2UyNi1tYWludAorNzk2NTQgYTcwN2NhMjYwMzQxYjVmNmYyODBhNzI1NGVhNmE4ODQxOGQ2ZmU1YyBsZWdhY3ktdHJ1bmsKKzc5NjU1IDYyOWU3YjNjOGIyZDk3NmRjNzBmNjRlM2M3YWUxYjk3NTQyNDI1MWEgcmVsZWFzZTI2LW1haW50Cis3OTY1NiBlYTRjNmMwNjg5NTAwOWQwZTAzZjk3M2EwMjcwNjI2ZjgzYmNlY2FlIHB5M2sKKzc5NjU3IDY1OGIzOWU2NmRlZmVkNmY2ZGVmN2M2ZTMzMjFlMjJlMjIxY2MxMmQgcHkzaworNzk2NTggZDVmMmM3NDI1YjRhOTQ3ZWU4NTFiZmQ1NGMyOTJiZjljOGVjNmRkMiByZWxlYXNlMzEtbWFpbnQKKzc5NjU5IDQ0ZDMyYTZjOWUzNTdhMzNhYzYyNjM5YTc5OTMwMTc5MzQ1MGQwNDUgcmVsZWFzZTMxLW1haW50Cis3OTY2MCBkYTdiMDAwNmE3OTk3ZTc3YjVkNzhmZjNjODNlYzhlNTY2OGU5YmVkIGxlZ2FjeS10cnVuaworNzk2NjEgYWQ5NGFmOTEyOWNjYTNkZGRlNjI2ODgyNTg0NDMzOTdkYTIyZTEyYiBsZWdhY3ktdHJ1bmsKKzc5NjYyIDdjYTZhMzQzMWY5ZTI3Y2ExMTRmZjdjNDNiMzBjNGVjMThmM2Y4NTkgcHkzaworNzk2NjMgZTQ3YTZmZjViNTIwZjBkMWU1M2Q4MGM0ZDNlZWEwOTVlMGI3MzgyYiByZWxlYXNlMjYtbWFpbnQKKzc5NjY0IDI4MTFiZTk1YzhjODQ0OGFlZWM5OWI2ZTg2Y2QyNmZlYzUwNzhkYmMgcmVsZWFzZTI2LW1haW50Cis3OTY2NSBjNTRkZDNlZWVkNTZiM2YyY2VlMGVkYTQyNmYzYmRkZjE3ODcxMWI0IHB5M2sKKzc5NjY2IDhjOGJkYzExZTliOTkyOWM1NTExN2NiODg5MWNkNWRkYTFlZTE4YjcgcmVsZWFzZTMxLW1haW50Cis3OTY2NyAxZDQ4NGM0ZGJmNjA0Y2RiZDcxZDhkN2NmNGQwNjE5ZTdmZmI0MzdhIHJlbGVhc2UyNi1tYWludAorNzk2NjggNTA3ODIyMGJkMWVhNjMyMGJjMjc5ZmUxNTk3ZTk3MWRmMzgyOWM5MCBweTNrCis3OTY2OSAzMzRkNDU2MmM4NzVhOTAyMTU3OWQ0ZWNhZTU2N2IzOTA2MWY2ZDE2IHJlbGVhc2UzMS1tYWludAorNzk2NzAgY2Y4MDM3NzE4NGZmYWE2ODY0NDMxZTM1NDBjOWNlYjZiMWVhYTAzMSBweTNrCis3OTY3MSBjMmIyMTdmZTRlZDQ1NDgxZWI2OTJlY2ViYTg5MjJiZmRkZThiNTA2IHJlbGVhc2UzMS1tYWludAorNzk2NzIgYzBiNjI5OWI5M2VlYmU4NjZiZGRiYTg3NzRkMmJjZjhlYmVmY2I3MiByZWxlYXNlMjYtbWFpbnQKKzc5NjczIGIxYzAwYzdkM2M4NTVkNTE3MjY0NzZkZmE1NmYwNGIyODY4YTZmMWQgbGVnYWN5LXRydW5rCis3OTY3NCAwNTQwYTk2Mjg2OTg4YTRkYWE3MzQxMmI5ZDM3NzcwMTY4N2JhZmQxIGxlZ2FjeS10cnVuaworNzk2NzUgY2YzNGZjMWU4NDEzZTE3Yzk3ZmJlOWQzMDNkNDViMzlmMzQ4YWNjMyByZWxlYXNlMjYtbWFpbnQKKzc5Njc2IGIxOTQxY2ZmZmE1Yzg1MTYxZmEyMjAzMGI5ZTAxMmQzZGY1MDQzYWYgcHkzaworNzk2NzcgZDMxZTI2OWFhY2RlYmQwODI0OTM3MDU4NWU4YmJkY2Y4M2ViMjVlMCByZWxlYXNlMzEtbWFpbnQKKzc5Njc4IGE2NjU0NWRiM2IwNjk4YTk5MTc3NTRiNmEzZmE1ZmZhNTQwMDFjMDEgbGVnYWN5LXRydW5rCis3OTY3OSBlYjA0OWMzYzA4M2ZjODIxNDM2NDNhMDJiZjI0MTIyZWI3Nzg3ZGQ0IGxlZ2FjeS10cnVuaworNzk2ODAgMjc0NTFhOTY3NjUwMGQwNzQ2N2Y4N2I5Y2IyYThhOGZkOWQ4NzMxMiByZWxlYXNlMjYtbWFpbnQKKzc5NjgxIDUzZWUzOGU2MzhiZjkwZTk4M2U4YWY5MzM2Y2E3YjZiNTU0ZjA3ZWUgcHkzaworNzk2ODIgM2IxZDBhM2FkZmZmYWU3NDlkY2UyODhhMTc5MmVkOTdlZWY4Y2M4ZSByZWxlYXNlMzEtbWFpbnQKKzc5NjgzIGJkNTEyMWJmNjk5NmQwYzNlOWUxNWI3N2UxNDEyZjcxNDEwNDgzMDUgcHkzaworNzk2ODQgYmE0ODJmNDg4N2Y3ZDY4MDJjMmU4MTY3MTdmMTliMzUwNGU5MGYyNiByZWxlYXNlMzEtbWFpbnQKKzc5Njg1IGE1ODRmMjQzMTgwZDUyYTZkNmMyMmMxMDNlNzJkZDc3MzNkYTc2NzkgbGVnYWN5LXRydW5rCis3OTY4NiA3ZDI3MjQ4OGI2M2M5YTQyZjIzOGViNzcxZGQyZjkyNjM1Yjc1MjBjIHJlbGVhc2UyNi1tYWludAorNzk2ODcgNTgwZjJmNWJhODVmMzY1MTgxNjgxM2VjNzczNjk4YjJiNWI3YmI2OCByZWxlYXNlMzEtbWFpbnQKKzc5Njg4IDliMjRhYTM2YzA2ZjgzZTNiYjQxZmQ3ZjU1M2RlZDZjM2Y3NDNhYjEgcHkzaworNzk2ODkgZDE1MjM1ZDIxMzdjMTQ4NTgxZDI5NjQ5ZjJmMjc5MmQ5NGQ5NWMwNyBweTNrCis3OTY5MCBlYTEwY2I2MTM5MGFlYTIwZmJkOTY4YzAzNWRjNTJmMTUwOGU0ZGUyIHJlbGVhc2UzMS1tYWludAorNzk2OTEgNGE2ZTIwMTM1NDcwNjhmMDc3MGI3YmMyNjgyYmJkMDY0YjgwYjdjNCByZWxlYXNlMzEtbWFpbnQKKzc5NjkyIGM2Njk5NWJlZmU0MjQyMWI1NmU5MGFmMzQ3YTRlZDQxNTljNzQ5YjAgcmVsZWFzZTI2LW1haW50Cis3OTY5MyBiNjJhNjgyMTE3ZTAwZjM4NTI5MGE1ZTRkYWNiODVlZGZlZWE0OTU4IGxlZ2FjeS10cnVuaworNzk2OTQgMzUyN2Q2NTc5ZWMyOTBmZDkwZDliNGZjNDdlNmE3Mjc1MWZlNDViMiBweTNrCis3OTY5NSBkNWFiZDhkZmQ0ZjRiYWEwYWJmYmM4ZTYyZGU5NTMxNGQ1YWY5NzEyIGxlZ2FjeS10cnVuaworNzk2OTYgMDZhNDZmOTUxOTRlZjE0MTUxY2VjYzY1NjFiZDlhNjk0OTNjYmNmNSBweTNrCis3OTY5NyA4YWI5NjBiNjExYTZmMWI5MWJlYzg4YWIzMWI5MGZmZjI4NjEyNDMyIGxlZ2FjeS10cnVuaworNzk2OTggMzllZmQzZmM1OWVmYTdmMDhjMDg5ZGQyMDQxODRmYjQyNDA1MmJmNiBsZWdhY3ktdHJ1bmsKKzc5Njk5IDg3NjY2Mzc2ZDhiMDUwNDI2YWVmOTUzNTQzNTg4YzdhOGY0M2Q0ZGEgbGVnYWN5LXRydW5rCis3OTcwMCA0MGJjOGIxY2E5MzI5ODlmN2ExZjc3YjJhMmIxZjdiNTc2YmRhZjg5IHJlbGVhc2UyNi1tYWludAorNzk3MDEgM2EwZjUyNWI1OWI1OTc0OGMxNDAyZjQ0M2ExMDgyOTFmYzBmMGY5OCBweTNrCis3OTcwMiA4NmJmMzhlYTMxMjM2ZTNiZWFlMDkwNjlhODc1Y2I4MDIwOTk5Yzc2IHJlbGVhc2UzMS1tYWludAorNzk3MDMgYWExMjFhMzlhOTU2NzBlNDg2MjZhMGE3N2JkODZkY2FhNDdhNDMxMSBweTNrCis3OTcwNCBkYTM0ZDFmNDNjYjAwMDVmZmY5ZDhlZDc2YTFkMTdhNGY1NTcxNjAzIGxlZ2FjeS10cnVuaworNzk3MDUgN2ViOTA3Yzg1NGI0MmFkOWRiYmIxODI1NmI4ZjRhNDg4OWZiNGZkNCBweTNrCis3OTcwNiBjMjFiYzgwYzgzZjYyZmRkMTYxOWUwMTE3YzVjYzFiNTI2ZjZkZmYzIGxlZ2FjeS10cnVuaworNzk3MDcgYjI2MjVhY2MyNDg0ZTUwZWI2MDIzNWJkYTQ1ZmU5YTg3NTRkYTAyYiBsZWdhY3ktdHJ1bmsKKzc5NzA4IDJlNTU5YzBhZDhjMzQyOGZmMjZjMmZmMmVlZDcyODM1MjcxYTU4NmYgcHkzaworNzk3MDkgNjE5OTBmNzYzNDg1OTMwZTc5M2ViOWNmYzlkOTg3MjY4OTIzZDU5ZSByZWxlYXNlMjYtbWFpbnQKKzc5NzEwIGUxNDYxMzEyNGNjMTQyODg4NDA3ZTcwOWY2YjIzMjM0ZGYwMWNkN2QgbGVnYWN5LXRydW5rCis3OTcxMSA2NjE1OGU0ZmQwMjI3ZTQwNWU2YTJiOWZiNWQ4Y2ZkMDY5NDBjYWRjIGxlZ2FjeS10cnVuaworNzk3MTIgYTE4NDIyN2NmYjk0M2EwYzBkMDI1MjBhYWEwOWE4OTViY2Y3ZTMzNyBsZWdhY3ktdHJ1bmsKKzc5NzEzIGM3M2E2NThkYTZmYWMzNDQwMzJkYzQyODJiNDk5ODM5YzQ0Njc5NGMgbGVnYWN5LXRydW5rCis3OTcxNCBlMjlhMmUwM2U3MzllNjY2OWVkYzZhYTlkYzY5NTFiNGQ3ZWNmYWMxIGxlZ2FjeS10cnVuaworNzk3MTUgM2Y3ODY0YzFjZjNmNjE1NDNkNGQxN2E3ODVjMjU4ZmMzY2RkZTIxNiBweTNrCis3OTcxNiAzNDViNmFiMzJkNjU0ZjQ2NjRlODAyNmFkMDY0ZjAzODg4ODE5OTAzIGxlZ2FjeS10cnVuaworNzk3MTcgODJjMjAzNGI4MDk1Zjg0NDAzNDkxZjllZmNhMmZiZTM2MWIwMzA3MiBsZWdhY3ktdHJ1bmsKKzc5NzE4IGVlMzQyNWQxYzY4OGNmZDgxNWNjNTVjNjQzZjhmNjAzYTFmYTAyZTQgbGVnYWN5LXRydW5rCis3OTcxOSA0ZDg0ZTNmYTMzM2EyMWY4OWRmNzQ3NjExYWU0MTM4MTM0YTlmNmU4IGxlZ2FjeS10cnVuaworNzk3MjAgOWI1MDBhMmM4NTlkMDZmYjY3MTQzZGFiMTJiZThmNDllMjQ0M2E1MSBweTNrCis3OTcyMSBjOGY5NTUwMDNiMmMxYzVhMzc2YjNjZTcxOTNlY2U1ZTMxMjFlNjA1IHB5M2sKKzc5NzIyIDZhMjRkZWZjYzAwYjJjYjk4MDVhODJmN2Q3NTNkMTU4ZGEyYWUwYzIgbGVnYWN5LXRydW5rCis3OTcyMyA5NjVlYzYzNTZkNWQ4NDQ0MjBkZjA0NmI2ZjY1ZmFjY2ExN2MzNTJiIGxlZ2FjeS10cnVuaworNzk3MjQgODFjMmY1OTJlODA4MTBhODQ2NjFiZjJiODYxOWYzMDMyNjIyYTM5MCBweTNrCis3OTcyNSAzYzRjMGE3MTZhMThhNDhmZDUzZjBkNDJhOTAzOThlYjQ5MzhiMzE4IGxlZ2FjeS10cnVuaworNzk3MjYgMGNmYWJlZDQ2NjY5Y2U5ZDBhODRhNjFhZDRiMWM5NzkxYjg1Mjc2MCBweTNrCis3OTcyOCBkYTkzOWFiMmJmZTI3NzdhODA5NDFmMzA2Y2E3YzU5OGMyNzcxZWM0IHB5M2sKKzc5NzI5IDM5OTIxMDI2M2U3MTBjMDdhOGYxYzAxOGY3NDVhOTc1N2IxZWU5MDIgcHkzaworNzk3MzAgZWI0MTY3NjcyMTYzYzhlMzFlMDQxM2QyMzg5NjllMGQ5YTdlM2Q5MCBsZWdhY3ktdHJ1bmsKKzc5NzMxIDBkNTY3Y2U1ZWNlNGE0MzFkZmQxYjViNGZiODI1YWI2YTI3Y2U2YzggcHkzaworNzk3MzIgMzk1YTI3YTQ0YTllNDI0NmQ4ZmNiZTQ3NTU1NGQ1NDE4MTc5YjE1NSByZWxlYXNlMzEtbWFpbnQKKzc5NzMzIGQ1ODYyZDEyZDkyYWI0ZDQ0ZWE5YzMwYjYwODg4ZmJmYzExNjVjYmYgbGVnYWN5LXRydW5rCis3OTczNCBmOWMzNjhmZTFhY2YzMDhlMzI0YWJkNzBiN2M4NzgxMjRiYzc3ZjE0IHJlbGVhc2UyNi1tYWludAorNzk3MzUgNjc3N2NmYWI1MTUyZTJjZGZmZWNiZmM2OWJhOTJmZmU2ZGRkOTA0YSBsZWdhY3ktdHJ1bmsKKzc5NzM2IDllZTk3YTRhYjE1YzBjOWI3Y2M5NTE0NTdmNTRmMDQ1ZjhhM2RlYTcgcmVsZWFzZTI2LW1haW50Cis3OTczNyAyZGE1MTNiNDcyY2JlNTBkZTRmNjQ4YjM0MzYxZjgxOTJiODMyMGM1IHB5M2sKKzc5NzM4IGE4ZGRlMDI1YTZmOTlmMDFmMGI3OGExZGVmYWQxZmU1NzhiMjRjZGQgcmVsZWFzZTMxLW1haW50Cis3OTczOSAwZGVmMjhkYjc3OTk3ZWVjMzQwNDc4ZTlhODlmNDY1YWQ0MWMxMDNkIHB5M2sKKzc5NzQwIDQ2MGY0MWJkMGUzNGFjZWU2NDVjNDQxYmI3YjU1ODBiZWFlYWFlYzcgbGVnYWN5LXRydW5rCis3OTc0MSA1NzE1ZGUyYTQwNTEwNTFlMmFlMTg3MjI4MTczMWJhN2I2ZDhjMTkxIHJlbGVhc2UyNi1tYWludAorNzk3NDIgNThkYzRmMzE2ZmY2NDZjZGMzMTg2Zjc2YmMwODQ1ZDMzMDRiZDk5NiBweTNrCis3OTc0MyA4MWZlMWQ0NWFlNzdmYTQyYzkzMTA0NTRkZWVkOTQyZmU5Y2QyZWExIHJlbGVhc2UzMS1tYWludAorNzk3NDQgNWNhOGU0MTUwNGI2ZjkyNzlhNmQ1ZTY0YjBkMWJmMjBjZDU5MDIwZSBsZWdhY3ktdHJ1bmsKKzc5NzQ1IGMzOTllOTNiZjBlNDVkYzJiNzFhYjFmNDkzNDcwYTBhMzU4NDc1ZmMgbGVnYWN5LXRydW5rCis3OTc0NiA3MjQwOWIyMzE5NjczM2EzNDNmN2Y2NjYzMmZiNzhjMzA4YzYwYjcwIHB5M2sKKzc5NzQ3IGMxYjg3ZTEzZTlkM2ZmMTVjNGUxZmI1MjJmMTUwMTdmY2I1MjllMjkgcHkzay1jZGVjaW1hbAorNzk3NTAgMWU2ZjI2ODAxNmU0NzM5NGFlMWFiNWFiMTc5NzI0MDA2NjRkNTQ3YiBsZWdhY3ktdHJ1bmsKKzc5NzUxIGVjMWE1NDEyZmY5MGRlYWUzZWRmZWI0MTRmZTgxZjEyZjFkOTM2YzYgbGVnYWN5LXRydW5rCis3OTc1MiA3YWMzZDg4ZTM1YzIxMGZmMmUyMWFkM2Q0M2JkMGJkMjE2NGQ4OGViIHB5M2sKKzc5NzUzIDhlMDY0MTc4NTUwNzQ1M2YxNjRkMTI5MWQ2OTExNWQ1MTE3NmZkMmEgcmVsZWFzZTI2LW1haW50Cis3OTc1NCBkYzYzNDExYTAxMDRlYmE0MmJmNmYyOWM0ZWNjZTI2NWZlYTU4ZWNmIHJlbGVhc2UzMS1tYWludAorNzk3NTUgNWRkYTNmMzJhMmNlMmRkMDFmYjZjMzY4MTk5MTE2NWJmMDA5OWVlMCBsZWdhY3ktdHJ1bmsKKzc5NzU2IDhhYTI5NmZhNmQ2YzUzYTA3NGEzYjMwMGJkZTJkNTBiZjZjMDAxYTEgbGVnYWN5LXRydW5rCis3OTc1NyA0NWRkOWJmMzYxZWMwMzE1ZjE4OTdiNzM1ZDRmNzdjNTU0NGU2NDhjIHB5M2sKKzc5NzU4IDkzMDdkZWVlZTQxMmEyMjNmMTRmNTgzMTI4MjQwZmZjNTM4MDc1YjIgcmVsZWFzZTI2LW1haW50Cis3OTc1OSBmNDE2ZjJjMmMwOTllODQ3NTM3ZjU4OTNkOGFiNzI0MDVkMGFkYWExIHJlbGVhc2UzMS1tYWludAorNzk3NjAgYjZjNmY0MmNkZGRlNWRmNGRlZGFmNWJkZmMwZjYwYmYyNWVkZDRiZCBsZWdhY3ktdHJ1bmsKKzc5NzYxIDAyMjVkMjlmMGJkOThlMzM1MDEzZTE2YzE0NTY5ZDNkNzllYTZmOTEgbGVnYWN5LXRydW5rCis3OTc2MiBhY2M5MDBkYzE4NGJhOWIwYzYyZjU4MmY4ZjdjZWRjYTc2ZTIyZWNlIGxlZ2FjeS10cnVuaworNzk3NjMgMGVjZTk4Yjg1M2Q1MTA0MWQ1OWJmMGZhMTJjM2YxY2JhODM4YWZmNCBsZWdhY3ktdHJ1bmsKKzc5NzY0IGE2NjFjOTZiOGQxMGVjZjdiOGI5OWQ1ZDdjOWU2OGY4ODZkNmZmNWUgcHkzaworNzk3NjUgZmIyZDY0YTRkODcyYzMyYzUzN2U3NmM1Njg5MjVlYzE3NmQzNDNiMSBweTNrCis3OTc2NiBiNjlkY2Y2MzUwMmM0ZGYyNDJmOTkxMzJmZTZkZGU0NTc4MTJlNDNlIHJlbGVhc2UyNi1tYWludAorNzk3NjcgYzA0YTYyMjJjYzdkZDU5ZGYyNzViMmM5MjRiNGI5N2Y3ZjhkZmUzZSByZWxlYXNlMzEtbWFpbnQKKzc5NzY4IGE5MDNiYjM1ZWY0ZjUzNTc1MGUwNzJiNzkwYjllYWY0ZGY4ZGM2OTkgbGVnYWN5LXRydW5rCis3OTc2OSBjNTRjZmU4MjhiODRhM2NkMGExMDVlMWFlMDc5MzkyYjQ2YmFmNGFkIGxlZ2FjeS10cnVuaworNzk3NzAgODAwNDM1N2Q1YmNjMDM3MmU1MjE4NmZiYTJlY2M0YTI5Y2UzMmJjNiBweTNrCis3OTc3MSA3MTc3OWY0YTIwNzgyOTRiNThkZjI3NjM3NjE4YWUyZTcyNmE0OTZkIHB5M2sKKzc5NzcyIDMzYTAyZTRhYzRjMmYxZTdlOTdiZGU0NTEwOTVhNzRlMmIwYTMyYjYgcmVsZWFzZTI2LW1haW50Cis3OTc3MyA4OTNjNzRkNTQ3ZWU3MzgwNjJiNjZkNWUzYmYzMjM3ZGVhYWVkZTc2IHB5M2sKKzc5Nzc0IDFhYmYzN2RiMjU3ZDk4OGRiZjYwMzYxMDdiMTdjMDUxMzQ4ODViYmMgbGVnYWN5LXRydW5rCis3OTc3NSAyM2RiYzhhM2I5N2E5OTk5NmE3ZmIwNjgzZDg3OTY1YzhkNGYwZmM2IHJlbGVhc2UyNi1tYWludAorNzk3NzYgNjBjYTg5ODNkZDNiMWUyNWZmMzQzMDc4YzM2YjFiMmE5YmFhM2EyYiByZWxlYXNlMzEtbWFpbnQKKzc5Nzc3IDUzNTIyMDRjOGU4OGM1YmQxZmU3YTlhZTAxNzVhYTY1ZWFiY2ZkMmIgbGVnYWN5LXRydW5rCis3OTc3OCBlNjgxNWUxYjc1MDJjNjQwOWU0ZmQ3ZDBlYWUwMjM3MDExZTc0N2E5IGxlZ2FjeS10cnVuaworNzk3NzkgMWNjNGQyZGI1Y2Q2YmRiM2I0NmNmYjRjMDg0MWQwMDIxMTEwZmRhNiBsZWdhY3ktdHJ1bmsKKzc5NzgwIGNmZTVmYTM0ZGI0NjY2NGM0ZmU5ODMwYjE0NWRiZDMxMWFkYmE3MjQgcHkzaworNzk3ODEgYzQwZmJmZmY2ZDdhYmM4OGQyMGEwMTZlYjJjYjAzYTE1OTRjODEwMSBsZWdhY3ktdHJ1bmsKKzc5NzgyIDdmNjkxODFiNjUyYzBhOWJmYjU3ZjZkOTRmMmRmNjMyMTVhNjhlZWYgcmVsZWFzZTI2LW1haW50Cis3OTc4MyAwMmJkMmY2MGJhNWQ4ZDUyZjM2ODIyMDZmZTIyNWM0ZDc0ZDZlY2IyIHB5M2sKKzc5Nzg0IDI3M2NkYTJiMDA1MzgxMmJhZWZkMjIzNWIyZmU4NmE1ZmRmMzgyMzAgcmVsZWFzZTMxLW1haW50Cis3OTc4NSBmZGNiZWI5ZjM3NGM3MTVlNmZmZjFjODNiYWM0Y2RhYjA1NDU2OTY5IHJlbGVhc2UzMS1tYWludAorNzk3ODYgOTdlOTVjOWQyNmRhYmYyMTRmOGJjNGQ0NzgzMjE5ZmVmOWE1ZDZmYiBsZWdhY3ktdHJ1bmsKKzc5Nzg3IGU0YmRjMjk2ZmM4ZTQyN2IwNTcyNjNjNmE3ZDllYmIxZjNmYzk4ZWEgcmVsZWFzZTI2LW1haW50Cis3OTc4OCBlOTRkNDQ2YzZkMGVmOTM5Yzk5ZTJhNGM4YjM5ZGZhOGE0M2I5YTc1IGxlZ2FjeS10cnVuaworNzk3ODkgNzJjMGUxNWMwM2IyNGEyMzNhYWY0ZjdhZDBkYWQ5ZTE1ZDgxNmExMiByZWxlYXNlMjYtbWFpbnQKKzc5NzkwIDI0Y2I0MTEyYjczMTEzMDlhMjA2ZWU5Y2JkZTVkMGZjMDQ5OTNlYmEgcHkzaworNzk3OTEgMzJhOGI1MjBkNzY3ZDdjOWM0NzQxYjk5ZGQ1YmY2M2ZjNmZhNTI5ZSByZWxlYXNlMzEtbWFpbnQKKzc5NzkyIDI4YjgyMzk4M2ZjZTlkNzM5YjBkMTdkYmE5NGY4NWRlYTRmZDAyMDEgbGVnYWN5LXRydW5rCis3OTc5MyA2YmVlNDNlYTdjMDBlM2FhYzMzMWM2M2YxOWFlNjA1YjY1MjkxMGFlIGxlZ2FjeS10cnVuaworNzk3OTQgZjg3ZDJiMWJhNDI5MGMzMDM4MjI5NjYyNmMwY2ZkMTljMDFlOTlhNSBsZWdhY3ktdHJ1bmsKKzc5Nzk1IGMyYjA5M2Q2ODBjZjMyMzEzNGI0OWEyZGFmZTE1YzMwNjBhYTExNzEgbGVnYWN5LXRydW5rCis3OTc5NiAyZDBjZTMwNzgwOWI0ZDA2M2NjZDQ5YTk0MjcxNTNhNjFjMTg4ZTU3IHJlbGVhc2UyNi1tYWludAorNzk3OTcgMTFkZTJjMjhkMWEwOTEwNjU3NzZkY2VjMWVmZWRjYWRhNmE0NjA4NiBsZWdhY3ktdHJ1bmsKKzc5Nzk4IDcwODhkMTgzNDc3ODRmMjkwODYxZjJhOWZlMWU2MGViNjg4ZWRjM2QgcmVsZWFzZTI2LW1haW50Cis3OTc5OSA5ZWM1OThiNDdkYTRkYmM3MGU5YzgxYjcyZmY1MDhhNjYxZjFjNTc1IHB5M2sKKzc5ODAwIGE3YjUzYWQ3YWQ5NzI2Y2UyNTY1OTM3ZWUyMWY0MWFkYTljYTBkZTggcmVsZWFzZTMxLW1haW50Cis3OTgwMSAwYTUzYzI1NGExOTM3ZGMwN2EyZGZiN2U2NTBlNzViZTFkYTMxZmY4IGxlZ2FjeS10cnVuaworNzk4MDIgZTc3YjJmZjI0ZGRiMTRmOTU4NmFmN2I2NjY5OTFlMjMyNzM4ZGRhMiByZWxlYXNlMjYtbWFpbnQKKzc5ODAzIDdmMmQ3YmZiMDU2NzA2Y2YzNzgxMmY5OTE4YWMyNGNjZjZlOTEyZDMgbGVnYWN5LXRydW5rCis3OTgwNCBhY2U3MTE1NTBiNTk3ZWNhZmFmMjcxYTkzZTI0OTgzYzcwNDkzNTMwIGxlZ2FjeS10cnVuaworNzk4MDUgOWRlNTYzMGZjNjFiYTAwOWM4MWI1MWIxZmI1YTk4OTgyYzM4N2UxNSBweTNrCis3OTgwNiA4ZjQ1ZDM3YzU1YTE0MmJmNjNmM2UxY2I1YzIyZmY0MzU3ZDk2NTEwIHJlbGVhc2UyNi1tYWludAorNzk4MDcgNTg2ZTFjZTlmMjQzYzg0YTVmNWIzNzFkYzc4MjhiNmRlMTA2MmQ4MiByZWxlYXNlMzEtbWFpbnQKKzc5ODA4IDNjOWYwODg3ZWUzZjlhZWE5ZmI1MjIwNWJmOWYwNzQ4ZTUyNDY5YzcgbGVnYWN5LXRydW5rCis3OTgwOSA1ZGFhNzRiY2Y2YTE1OTA5MmFkYTEwNGQ2MDUxMmY5ZjVhNTdlNTJmIGxlZ2FjeS10cnVuaworNzk4MTAgM2NlNjZjNjkyMmFiYWRiYTNkODllYzQxMTU4NmMzZWNlYzBkNGVlYiBweTNrCis3OTgxMSA5ZmQ4ODUyZWNkZDRjMjAyZTkxMTkwOWVjMWVlMWZjYWQ0ZTM4YzkyIGxlZ2FjeS10cnVuaworNzk4MTIgNjY0MTczOTg0ZjJkM2EyMWZhYTRjOTc2OGJlMDYzMjc0NjUxZTE3ZSBsZWdhY3ktdHJ1bmsKKzc5ODEzIDllNWU5ZDhmYTg0NzRmZDFiNWZiOWJhMDAxZDA2MTZjYzA3NzhhOGIgcHkzaworNzk4MTQgMjVjMjg1MmJmZDE1YjU0MjkxMmUxNzU5MmVlYTIwMjBmYmZjMTZmOSBweTNrCis3OTgxNSAxYWRjZjRhNDY4NTYwNmU1YmZiNWEyNmNlMzhjNTRkNTBhNmE5YjY3IHB5M2staml0Cis3OTgxNiBjNWJlNTM3YjViYTkwOWQ5OTViZjQwMWUxMzU0MWY2OWUyOGQ1MzljIHB5M2staml0Cis3OTgxNyA5MjIwNzlmNzI0YTYyMGMyM2E5MDQyZjM0ZTdkZmQyYWRmMmMzMmU3IGxlZ2FjeS10cnVuaworNzk4MTggOTQyNjJkMGUwNjRhNWVhODhmMzM3ZjUwZTBjZjkyZWQyZmM5MDNkOSBsZWdhY3ktdHJ1bmsKKzc5ODE5IGVlZWE3OGRmOGEzYzcyZjQ3MzY3YTk0MDZmNTFjMDk2ZDYwMTAwMDkgcHkzaworNzk4MjAgOTYwMDYyNWMxNWFmYTljMGE0MjBiODgxMTQ3MjFiNGJhMjlhMWU5ZSBsZWdhY3ktdHJ1bmsKKzc5ODIxIGMxMDAyNGFiZDExOGZmY2FmY2M3ZGRmZTI2OGYxNzdiZDE4MjA3NWMgcmVsZWFzZTMxLW1haW50Cis3OTgyMiAyZmZiMjI0YzYxZjZjN2QwYmIyYjg2Y2Y0NTIwZmYyYmI1YjExMGZjIGxlZ2FjeS10cnVuaworNzk4MjMgMjZjNmRlMThjZDMwYjVkYjBjNDc5NTYyOGYyYjMzZDA3M2VlYTkwMSBweTNrCis3OTgyNCAzNjdhYzQ4YmYwODVhNWEzYjNiYTFiM2NjMTZhOTNiN2EzZWNhZTQ1IHJlbGVhc2UyNi1tYWludAorNzk4MjUgYTBjMDgzZTFkMzFmZGQyZjkzZDNhNDZiZmE0NzU4ZTQ1YmYxZDM5NiByZWxlYXNlMzEtbWFpbnQKKzc5ODI2IDk1YmY5N2RjYzU5MTkyNjAyMzg0ZmY5ZDlmZDMyYmI5YWRhNTUzOTQgbGVnYWN5LXRydW5rCis3OTgyNyA3Mjc0NjFkNjZkMTAyMjRkYzc5MGYzMDM5MTIxM2Y2ZDM0OTk2MTllIHJlbGVhc2UyNi1tYWludAorNzk4MjggN2Q4OWQwZGFlOThlNTU3MThlYmI0YTQ2MTEzMGQwNGE2ZWVjMmNjNyBsZWdhY3ktdHJ1bmsKKzc5ODI5IGE2NWE5NGIwMDkwMmVjMjJjYmVmOGFjYzhhMjE0N2I1Y2EwZTY3ZTYgcHkzaworNzk4MzAgMzc3NWE0ZmQxMWMyYTczY2ZhMTljMDZmNTFhOTM0YmIyMTZmNmIxOSByZWxlYXNlMjYtbWFpbnQKKzc5ODMxIGQ0ODgwMWI4NjM4MDFmNzBmZjU1ZDBhOGRlZDllMDdkMjhlMTkxMzMgcHkzaworNzk4MzIgMmI5M2UzMTY1OTYxZTFhOTIzMGRjM2FkZDk0YTFhNTEyYzM5OWJmNCByZWxlYXNlMzEtbWFpbnQKKzc5ODMzIDU3NmIwZTg3MzZjN2ZlYTc0YTdmY2MzNmJkYzMxNmI5MzM5YWQ5ZDAgbGVnYWN5LXRydW5rCis3OTgzNCBmMWVhMDNlMzdmZjZlY2I3ZjEyNDAxMWQ0N2M4NDY3ZmY2OTUwZWY1IHJlbGVhc2UyNi1tYWludAorNzk4MzUgN2M3NmE3YjQxMTYwMzVjOTZjOWNjZWIzYzVkZTI0MTYwZjY4Njg0NCBweTNrCis3OTgzNiA2ZmViNWFkZDc2MmFjNmUxOTUxNGExYjRiNjE4YWJhMTA2YmM0NDA5IHJlbGVhc2UzMS1tYWludAorNzk4MzcgYjY2ZmM4OGZhOTZkMWJiNzY2MjM4M2EyNGM5ZmM2NjQ4OThlOGIzYyBsZWdhY3ktdHJ1bmsKKzc5ODM4IDY0ZmRmNjZmNjliMGI3OGI1NGMyYWIyZGZkYzMzM2IzMTZiNzBiNjkgcmVsZWFzZTMxLW1haW50Cis3OTgzOSA3Nzc0ZDYwYTg5YTkyOGU1YzYxMWM5N2QwZjE3MDhjZGU1ZjUxY2EzIHB5M2sKKzc5ODQwIDY5NmNiNTQ5NmEwYjg2ZDJkYzkwMmZhNzEwNGRhZDk3YjgzZWM2ZTIgcmVsZWFzZTMxLW1haW50Cis3OTg0MSBjNjczMzllMzcxYTliMjVkMWQzOTNiMzUxYmRmNDRmMTQ4YTA1MTI3IHB5M2sKKzc5ODQzIGM4Y2ZiMWQwNzQyOWNhMTExYTI5M2JmNTIyYzU0ZGVmYmM5NDU2NmIgbGVnYWN5LXRydW5rCis3OTg0NCBiODg4NDJmNjUzNGRlNDhlMTZjMTNlYTFjYjAxNjY5ZmY4MTQ1OWRiIGxlZ2FjeS10cnVuaworNzk4NDUgYjYxMDhmNzIwZjY5ODMzYTM0Y2I2ODliZmFiZjEyYzE4YjBhN2NhNyBweTNrCis3OTg0NiBmMTk0YTNjZWVmYWFjMDBkMWQyMWU3MTkxMDQ1YjhlYTA2MjdjZTY2IHJlbGVhc2UyNi1tYWludAorNzk4NDcgMmYyODgzMmRjMzZjM2IwMWE4N2NlMjI2YTg2NjE2MzZjOGYyNGI0MSByZWxlYXNlMzEtbWFpbnQKKzc5ODQ4IGE3M2Q2MDQ1MWI0OTBjNmExYTcyZmZiMWJlNzRmZWIyZjlhYTJhNTggbGVnYWN5LXRydW5rCis3OTg0OSAyMGE1OWJhZGFmYTFjMjIxNGNhNmNiOWJlYWFhOGFlMDIwZGI0ZWQ4IHB5M2sKKzc5ODUwIDNjZTRhYWMyMDkzNTc3NjAzNWYwN2EzMjJhYzVlODRkODcwNjQ4MDggcmVsZWFzZTI2LW1haW50Cis3OTg1MSBkNTFhMmM3Y2M4MTFhMTJhODUyNGUzMTQ2NTBhNGIxOGQ5NjBjY2M2IHJlbGVhc2UzMS1tYWludAorNzk4NTIgNWIwZjFkNWJkNTVhOTdjMDA2YmVkMTMwMTU0NzdkZWNiMjU5MGIzNiBsZWdhY3ktdHJ1bmsKKzc5ODUzIGJiY2M1NGFjYmQ4YTJkOTA1NGE3Y2I3NzE5MGNlYTVjMzVhMTA1MmUgcHkzaworNzk4NTQgMzMyN2RmMzJjMTE3Y2FjMmIxZjI1NTUxNGI1ZjU4NWIwMzM0Njc5NiByZWxlYXNlMjYtbWFpbnQKKzc5ODU1IDYzYWY0OTZiMTQ5Mzk0NzNmZTY2NzBkMWEzMmRkZWU4MDQ2NWQ5YmEgcmVsZWFzZTMxLW1haW50Cis3OTg1NiBmNGVjNDA3M2JkMmU1OTY4MGQxZTU1OTY2ZjBjMzA0YTc0ZGQ1MTlmIGxlZ2FjeS10cnVuaworNzk4NTcgY2U5NzliNjRiMjNhNzkwYmE0MTZlMjY0NTIyYWEzOTY1ZGQyMGVjOCBweTNrCis3OTg1OCBhMzFmODBkNWQxYTE2ZWJmNGQ3NzE4NTQyMWNhMDMzYzc3MWUzNjMwIGxlZ2FjeS10cnVuaworNzk4NTkgMDFjMWFhM2E0OWE3Y2QxZjU1ZjQyYzdlNjBhNWY3MmI2YWVkYzVjMSByZWxlYXNlMjYtbWFpbnQKKzc5ODYwIDU2OWI4NTlhZGUyMDc3MzAyZTZkNTliZmViMDFiZThlMGNmYWI0NjYgcHkzaworNzk4NjEgODI3M2Y4OTk0YTg4ODBhZjNhODcxYjRmMzJkZjM3YThmYTViOGFjZCByZWxlYXNlMzEtbWFpbnQKKzc5ODYyIDljNDhhYjcyOGNlMGQ0ZjMxNTdiOGRhOWFkMTI4NzZhZjIxMTBlNTggbGVnYWN5LXRydW5rCis3OTg2MyAyYjRmY2ZjMzVmMTIyM2UwYTU2MzRhMDUyMjFlYzA4ZTFmMjU2NTJmIHB5M2staml0Cis3OTg2NCA3MTI5NzBiMDE5ZjcwY2IyMTFjNzAzOTlkZDEwZjVlMDc3MTMwMGE0IHB5M2sKKzc5ODY1IDZjMWFkZTllYTFlNDQ1NGQ2ZjNhMTYyM2FkOTQ3OTY4M2I4ZWE2ODQgcHkzay1qaXQKKzc5ODY2IDliYThjNmU1MmZhMGRkZmI3ZjQzYWIyZjgwMDNkYzIzOTExMDNmNDYgbGVnYWN5LXRydW5rCis3OTg2NyBiZTA0NGI4YzM0M2EzNWY1OTM1NjE4MzY1OTMyODJiOGQxYTM5N2E5IGxlZ2FjeS10cnVuaworNzk4NjggYmE1ZWM3NTYwOTMzMzdlMzExNDRiYjIxYzFhY2Y2YzA2ZWYxNTNlMSBweTNrCis3OTg2OSBlZWMyZGIwOWE2YzEyMzkxZjNiMjVlMjk5NTQ0YTQ3YzUwNzRkYzYwIHJlbGVhc2UyNi1tYWludAorNzk4NzAgODFkOTBjZWVlM2JkZmE3ZmQ1YzZkMjE1OThiN2VlODU5YzMxODc0ZiByZWxlYXNlMzEtbWFpbnQKKzc5ODcxIDg5MmRiMThjNzgxNTQ4MjBiNDFmMDBkYjBjZDQwNTU0NjY5YmVmNDYgbGVnYWN5LXRydW5rCis3OTg3MiAxYTZmM2QzNmJiZDk2MWIwNDY0OTY3MTNmN2U1NjkwYWE4ODhhNTQ2IHJlbGVhc2UyNi1tYWludAorNzk4NzMgODJhZjExM2UwMjBiOTdhZjc3NDUwZDgxYjk4NTRhNjc3NDY1NTc3MSBweTNrCis3OTg3NCBlM2NmOTc3ZTJlNjQ2N2U1OWRlZTIxN2M3NTllMGI3OWEyNWE3NzMyIHJlbGVhc2UzMS1tYWludAorNzk4NzUgOGQ4ZjdlMDgyZWY2YTg0Y2UxMjA0MDg3MDdhOGM2NzY0ZTRkMDg5YiBsZWdhY3ktdHJ1bmsKKzc5ODc2IDljZTUzMTYxYzNhOWRkZGFmMjMyMGJmNGE1YzdjYTkzZGE5MWE4OTUgbGVnYWN5LXRydW5rCis3OTg3NyBmYjZjZDhhZDhmNjllNmIwYTAxZjZlMTNlNzU5ODRmYTZiYjZlNDdlIGxlZ2FjeS10cnVuaworNzk4NzggYzA5NTdkYWRhNWMyN2RmNjJmNDNmYmU4YTA3NDlkN2E3ZjJlZTRkMCBsZWdhY3ktdHJ1bmsKKzc5ODc5IGQ3OTU5OWIyMWU4MTE1Y2Y5NjdhMzJlOTM2MWUwZmJkNmQwY2QyZWYgbGVnYWN5LXRydW5rCis3OTg4MCBjOWU0ZTEyZTljYjZlMDZkNTczZDllNzZlNDg5NTIyYTZkMDY4ODA0IGxlZ2FjeS10cnVuaworNzk4ODEgZjM2OWRiMGQ1ODQ1NjU5NDI1N2MzMzAzODAxMjQ2N2FiZTdhMGE4MCBweTNrCis3OTg4MiAxMGYxZTYzYjJiMzc0ODM4MTBjNTQxOTY5YzkxYTk3MGY1NTI1NTRjIHB5M2sKKzc5ODgzIGI2MTlhYmNlMDI2OTc3NmIxYTMyZDA2ZjZjZTk3YjU0ZjA3NmI5MmIgcmVsZWFzZTI2LW1haW50Cis3OTg4NCA4NWVkNzQwYmUzMjNkNzFmYmM5MGYxZWVlOGMzMTMyZWI3OTY5NDRjIHB5M2sKKzc5ODg1IGQwYTc0YjY1MDVkM2M3ZGU1MDk5YTY5NTI1NTQ4ZWIzYjBiMTcxOGEgbGVnYWN5LXRydW5rCis3OTg4NiAxYzliZWZkZTgzODVlODM3ODFkNzU3ZTIzNWQyYTVhNTJjZDM5NDRmIHB5M2sKKzc5ODg3IDdlNTViMjFjNjY1OGI1ZTNhMDg0NDE2MWE2ZWMwY2JhM2VjMmVlYzggcmVsZWFzZTI2LW1haW50Cis3OTg4OCBkZGI3MzI0Mzk2N2JiMmFjNDhjOGY4N2UyZjEwN2YwMDRlNTgzMDJlIGxlZ2FjeS10cnVuaworNzk4ODkgZThhYTlhN2RhZjAzMjg1YTI2ODNjOWJjOTY5MjYxMjhjMTc2N2RlZiByZWxlYXNlMzEtbWFpbnQKKzc5ODkwIDIwZGFkMjAwNThlNDI5Nzg1OTBhYjdhZTU4M2NlMGQ1MGQ5ZWUzYWMgbGVnYWN5LXRydW5rCis3OTg5MSBhOGU5MGNlY2M2OWUxNTgyN2E5YzUzODY1NmNmOTZkNzYxYzA2OTQxIHJlbGVhc2UzMS1tYWludAorNzk4OTIgYzMxYzQzZDZhZDc5Mjk4OWUxZDNjOTNhMzE4NWMwM2FmZjc3ZmI2NSBsZWdhY3ktdHJ1bmsKKzc5ODk0IDdiMDA0NTRiYmZlMGE2MTYwYjk2YTgwZWUwNDI5NGZjYmIzMGQ5ZDAgbGVnYWN5LXRydW5rCis3OTg5NSAyNWMzYjNhYmYzZTdjOGI1M2Q5NTgwYTM4Yzk3NzU5YjcyZGFmMGQ3IGxlZ2FjeS10cnVuaworNzk4OTYgY2IwYjg0MDBlN2M0ZjljYzU5NjNkZWRmNjdlYTYwNDQ1NTNiZDdmMCBsZWdhY3ktdHJ1bmsKKzc5ODk3IDM4YjI0MjRmODVlOGFjMGQ4M2QzMDkxZGNmYmM2OWQ1ZGVlMmU4MDUgcmVsZWFzZTI2LW1haW50Cis3OTg5OCBhMzliZjM4ZjJlMGMxNzc1ODY5MzZmMmFlYmI1Mzc3NWJmYTg2YWNkIGxlZ2FjeS10cnVuaworNzk4OTkgMmU4ZDJkN2M0M2MwYjU4ZWNmYjg2OGRjMzc0MzViYzdlZDI1MTkzZSBsZWdhY3ktdHJ1bmsKKzc5OTAwIDczZTVlM2VhZGQ4OTNlMDA5ODVmZjhjYjA3OTE4Yjk3ZjY1MGE3MTYgbGVnYWN5LXRydW5rCis3OTkwMSBhYzA3OGE4YzNlMWFmMDlkM2VlYWRjYzkxZjQwMDhjY2NlMzQ0NjEyIHB5M2sKKzc5OTAyIDc2NjBjNTNkNTcxOWZlNzM0ZWUzZjllMzE1OTUxN2IzYzE1MWQwMjIgbGVnYWN5LXRydW5rCis3OTkwMyA4MjI3YjY0ZThkNzg4ZTIyZDhjYWIxOGExODhmNDFkNGYyNmQyYTlhIGxlZ2FjeS10cnVuaworNzk5MDQgYjg5OTgxMjhkZTA4YjU0ZjE2YzU5NzE2YjA5ZTRjOTc3NmM2MjgxZSBweTNrLWNkZWNpbWFsCis3OTkwNSBlMjQ0NGYyODc5YjQzNWI3ODdiMzA0ODQ2MGU3NDQyZjJmZTc3YjRkIHB5M2stY2RlY2ltYWwKKzc5OTA2IDhlNWM3MWM3NmU4ZmExMmYyOTJlYWJhOGM0OWJkODZkZWE4Y2U5N2YgcHkzaworNzk5MDcgNmYxOTU5ZjY2ZDY5MGEzNzMxYzFhODdiY2M4YTYzMTQwMTk1OGFhYyBsZWdhY3ktdHJ1bmsKKzc5OTA4IDI0Y2U0YTAwODliZTMyOWMxY2Y5OWY1M2JiNWNkMzBjYWMzNzAyNzIgbGVnYWN5LXRydW5rCis3OTkwOSA3Y2JmZjBiMWViNWQxODdhNjJiMjIyNWRiMzQ4Y2I2YmQ0OWI3MzQxIHB5M2stY2RlY2ltYWwKKzc5OTEwIGExNjI4YmQ5N2JiNjg1NGY5MzVhNDJiZjgyZDJmOTM2MjQxZmE3MzQgbGVnYWN5LXRydW5rCis3OTkxMiBhNzkyYjljYjBkN2FhYmExZGRlMDAxNDczZGU2OWFiYzlkMWU0Mjc5IHB5M2sKKzc5OTEzIDI0ZDdmNTU0MDBkM2ExYWI5NDgwOGZmODU0ZmE1OWUxZTllYzlhN2EgcmVsZWFzZTI2LW1haW50Cis3OTkxNCA4MzdmM2JiMTU3NWZiODhmY2QxOThlNDdhNTYwZWUxNTczN2RhMTRkIHJlbGVhc2UzMS1tYWludAorNzk5MTUgNDk5MTliMzFmZjIwMDc2NmNmMjk2YTA1OGU4NzgxMTIyODc4NjdmNyBsZWdhY3ktdHJ1bmsKKzc5OTE4IDM1YTlkYTAzOTY2MzAzMWUwZWUyNTdjYTExYzlmNzlhZDg3NGYyYzYgbGVnYWN5LXRydW5rCis3OTkxOSBhNWVkMDM3NzNlNGRlYjc1Y2VjN2FkNWQ5Yzc3ZTI5NmU3MDUzYzc4IHJlbGVhc2UyNi1tYWludAorNzk5MjAgYTViN2RjYjlhZjhmYTI4NTdkMjlkNzdlNjlhYWRkMjM2YzlkY2I4ZiBsZWdhY3ktdHJ1bmsKKzc5OTIxIDNlYzE5MzFmZDI1NjRiNTk4ODRjYjdlZjViYjk2NGQxNTc0ZmM5OGEgcmVsZWFzZTMxLW1haW50Cis3OTkyMiA0NjRmNjY5NjIwZmFkNjUxNzUyODM0ZTNhZTVhZDNiNzMxZTQyZjg2IHB5M2sKKzc5OTIzIDVlMDM4ZmQyYzE0MzI4NWZiNDhmOGJkZmI3YWQ4NTlmY2UwNmFiZDEgbGVnYWN5LXRydW5rCis3OTkyNCBjMDBiMDcxOGZkNTMzYTcyMGU5MWI2MGI1MTc2MDYwZWJjNjdjYTQ3IGxlZ2FjeS10cnVuaworNzk5MjUgN2E0ZDAyNmI2MzkwMDI0MzRmNWJmOTk1NTZjNjdkODMyOTAzYTRhNiBsZWdhY3ktdHJ1bmsKKzc5OTI2IGVkMjYxNjMwNzBmNThjMWVlODdjNDM0MWZjN2JhNWQ3ZGViZWUwOGUgbGVnYWN5LXRydW5rCis3OTkyNyAzYWU3MDc4ZDQyNzhiMmU3ZTVkYjg3Y2ZkNDkwY2JkYTZkODgxMjMxIGxlZ2FjeS10cnVuaworNzk5MjggNjE1NTBhMTMwMmIwN2E3MzE0MzZhODRiMmQ4NmViMmJhYjNiMmZiMCBsZWdhY3ktdHJ1bmsKKzc5OTI5IDRjYzE3NThkY2RmNzhjMjcyZjY5OWQxZWU0OTI2ZWFmNTIzNjhmNmYgbGVnYWN5LXRydW5rCis3OTkzMCAyYmFmMWNlZTcxZjJiNjcwODRhYmNlMTc1ZDY2ZjA1ZDk1ZjlkYTA1IGxlZ2FjeS10cnVuaworNzk5MzEgODA1NTEyMzI5Yzc1MzRjNDM0ZmFlMDNhMDg3NzZkYTVmNGUwNjgzOCBweTNrCis3OTkzMiA1NWZkNGU5ODdiMjBlMDcwYjJhMjI5ZGY5YjAyZjA1ODFhYWJlYmI5IGxlZ2FjeS10cnVuaworNzk5MzMgOGM2ZTRiN2FkMTU4YmVhMjk4NzcyN2RlYmI5ZGExZWUyYjc4N2Y2OSBweTNrCis3OTkzNCAwNTkyZTc4NDE3Nzc3NGY5OTlmYmRhYWNmMWI0MWY0ZDY4ZDEzYzEzIGxlZ2FjeS10cnVuaworNzk5MzUgOTdiNTg4ZWU2MmYwZmI0NjNkNjVmYmVkZDE1N2ZmMmQ5NTZlNzk3MCBsZWdhY3ktdHJ1bmsKKzc5OTM2IGYzNGNiNTAxZjhmN2UzMjYzNGM3OTMxNDFmYWRhYzRhODBhNTdhYzcgbGVnYWN5LXRydW5rCis3OTkzNyA1NzBkOWFjODRkNzc3YTk5NGRmZTFkZmVlMDhjYjkxNWQ5OWI2NzdjIGxlZ2FjeS10cnVuaworNzk5MzggNzMwMWRhNDkxZDViYjViNDZiYzg1MDhkOWEzYWNmMWFmYTFhMTQ3NSBsZWdhY3ktdHJ1bmsKKzc5OTM5IDM0ODA5Y2ZkODYwMTY4NTJlYjk5ZWM2NzgzMzA1YTE3YTA4NWVmOWYgbGVnYWN5LXRydW5rCis3OTk0MCA1Zjg3ODJhYTBmOGMyOGEzNGJjN2IwMDk4YWQ2YWViOTAzMjRmMzQ2IHJlbGVhc2UyNi1tYWludAorNzk5NDEgNDQxNjgyMjRhYzYxMDgwN2FhZTI4ODM2ZTg0Y2Q0YmVmZTFmYWU0ZSBsZWdhY3ktdHJ1bmsKKzc5OTQyIDhmODllZjkwOTAwOWI1MWE1NDY4NTMwMWRkYTU3Y2E0NmIwMTNlNWIgbGVnYWN5LXRydW5rCis3OTk0MyBkMDA3ZjVlNWUxZjAxOWEyODAxYzE1NjIxZjM2ZmQwOTdkYzY3ZTFhIGxlZ2FjeS10cnVuaworNzk5NDQgY2Y3YzliYTJkZTZlOTQzNGJkNWM2OTRiYWI0N2YwMzcyNzNjMDE0NCBsZWdhY3ktdHJ1bmsKKzc5OTQ1IDRmZWMyZTVlMzM5OGFjYmQ5NDQ4N2M5YzEzN2NkNzA0MmZlOGQ5NWIgbGVnYWN5LXRydW5rCis3OTk0NiBlMGUzNTVhZTk5YjI2MjZlYzYwMzkyODVmYTJhZDRmYTQ3Yjg2ZDBhIHB5M2sKKzc5OTQ3IDAwNjFlOWUzMjljMDU2YTAwMzQ3ZGVkOWJmMzQyYzZlODc4ODFhNTcgbGVnYWN5LXRydW5rCis3OTk0OCA3OTEyMzY2YjQ4ZDhiMDZkMTdmOGM0NWM0OTNiODA3Yzc0YjY2NWQzIHB5M2sKKzc5OTQ5IDk5MjZlMTJiZjQ4NTA2NGQxZWJhYzg0NWY5YjY3Mzc3MzdlNTRiYzMgbGVnYWN5LXRydW5rCis3OTk1MCBlMTU5M2UxZTY1MmVlYzg3YjU1NDU0M2E2MTZjM2JhN2NlNTVmMWU5IHJlbGVhc2UyNi1tYWludAorNzk5NTEgNjljMzcyMDNmZmMxZDc5MDYxNzU4YzgxY2YyYmI0MDE4YWE1MmQ1NiBsZWdhY3ktdHJ1bmsKKzc5OTUyIGYyNDRmZWU5ODlhOTgxY2ViZDBhZGRkYTIxYzM1MGIxN2VmYjk3NmEgbGVnYWN5LXRydW5rCis3OTk1MyA4NGFhZDY3MDQ2MGU1MDc3OWRlMjEwOTc0ZDI4NjNlYjY0OTYxNjc4IHB5M2sKKzc5OTU0IDkwMjgwMzNlNmZjYzNkNDgyNzEwYzMxNTAyMWEwYzE3MzQ3YTZlOTMgbGVnYWN5LXRydW5rCis3OTk1NSBmNDcwNTc2Mzc4N2I1ODlkMGNlYmY2OTBhYjNhMzVhOGYxZGY2ODMyIHB5M2sKKzc5OTU2IGE2NWY5MWJiYzJmYjI5NWI5YWYwOWRlZTA0Nzk4N2RiZDQ5YjdiMTcgcHkzaworNzk5NTcgMzBjODAwMjI4NzRlN2M5MDU0ZTQzMDEwMWYxYWRiN2NiZTEzODM2MiBweTNrCis3OTk1OCA2NmFkMjY3YTczYmY2MmEwYzkxYTQ3NjczMTA5NThhYjU1MTM2OThkIHB5M2sKKzc5OTU5IGQzOTk1NTIxNmMwN2EyY2ZkOWVmNDJhY2U3NGVjOTEzODVjM2FkNGEgcmVsZWFzZTI2LW1haW50Cis3OTk2MCBjMmUxZGUzZjExZmMxYjI3NmFiZDIyNTc1NDkxODM1MzNhYTc4MzBjIHB5M2sKKzc5OTYxIDAyN2Q1NzVjNjg5YzEwMjA5YjQyZmFhMGJiN2EyMWEyZWIyNTIwOTMgcmVsZWFzZTMxLW1haW50Cis3OTk2MiBiNGExNTVlNGQzMTI5MmRjMGEyOGVmMThkYTg0MjEzOWRjYjViOTYyIGxlZ2FjeS10cnVuaworNzk5NjMgOGVkOTk2ZGMwZTUyMDliYWE2Y2U1NmRiMTgzOTA4NmQwMGFlYTVlZSBsZWdhY3ktdHJ1bmsKKzc5OTY0IDlmOWNiMWM1N2YyYTdkY2QzNzFiYTg3MzJiN2JkM2VhZGYwOGM1NWQgcHkzaworNzk5NjUgYzQxNDc4NDczZWFlYWU1MmZkOGU5NDY0YTc0MTRhMmQyZGZlNGIxZCBweTNrCis3OTk2NiBhODRkZGQ4ZGU5ZDFkYmEwMmIzYjFjOTM0NWM3NzIxOTZlNDk4ZTA2IHB5M2sKKzc5OTY3IGRkNDNlMGM5MzE3NWNhNjRiMWViYjBkYWQ3MDAxMDY5MmM4OTZlMTEgcHkzaworNzk5NjggNGFkOTUyYTZhZjk1NzFkMTQ3ZDBhZGMwZTZmMzE2ODZhZjU4NmNiNSBweTNrCis3OTk2OSBiNGY2MGRmMzFiMTQxMmVlZjM2MTQ5ZWU0ZGM1NmJmNzZmOGQxMjliIHB5M2sKKzc5OTcwIGUzNTE1NzkxMzdmM2U0MjRjMGI3MGE4MTNmNWQ0ZWEyZDgxM2RiM2UgcHkzaworNzk5NzEgZmQzY2FlYTkyY2Q5ZjkxZWM4ZGJhNDdhNGY3MDE3YWM4NWM5MjA2MCBweTNrCis3OTk3MiBjYjZmMmM4OWY0MzcyY2MzNjZkMzZkNzY4MTY5MmUyYWU3ODhlNzY3IHB5M2sKKzc5OTczIDA5M2UyYjcxNTY0NTc0OTE5MTc3ZGRhOGQ5OGY1ZTFmOWE1MmY5MTEgcHkzaworNzk5NzQgZDY1NDM3NDkyNDI2MTk3MDgyMjQ5ODQ1ZmY4ZjEzOTEwYmQ4ODgzMCBweTNrCis3OTk3NSBmNWM0ZmMwZDMzNzMzNmRjMzZhNTQyZGZlMTE0Nzc3NjhhMWU0ZTAwIHB5M2sKKzc5OTc2IDFhNjJiZWVkOGQxNWVmOGRhZWY0NTlmZjg3MTVlMTI2ZDdkYjBlMjIgcHkzaworNzk5NzcgM2I2ODhkYTE4ZjUzZTM5NTFhMWM2ZGVlOWUwYWVmZjM0NDg2Njg4ZiBsZWdhY3ktdHJ1bmsKKzc5OTc4IDc1ZjkyMDlmM2ZiOTkwZjk5MDc5OTJmODRiYjMzZTk4ZDQ0ZjEyZTMgcHkzaworNzk5NzkgYWMwNjFlZjE0ODdlNDdiNjk3YjNiYTIyMzk0Mzk4NmZkN2ZjNDRhNyBsZWdhY3ktdHJ1bmsKKzc5OTgwIDlkZTI2MWNmNWJjMjk5NmM2OTUyZDZmYTgzOGY2MmZkNjhiODdiYjEgcHkzaworNzk5ODEgYWZiYmM5ODNlMGJkMDQxMjk1NGE1YzViYzNiMjkwNmJiMTkxY2NkMSBweTNrCis3OTk4MiBkMDNmNWFjYjRiODdlZjZlNWYxODNkZjU4NGU2MTUzOWFmNjJiYTdlIGxlZ2FjeS10cnVuaworNzk5ODMgNjEwYjY4NWUwNTI1YmQ2YzQxNzQwZmQwODk2N2ZhOTFiMWU0YmNlYyBweTNrCis3OTk4NCBhMjkyOTFjZTRmY2UzYzFkODQyZGYzMmQ4OWQwMWY2NTMyMjczMGE1IHJlbGVhc2UyNi1tYWludAorNzk5ODUgZWRlYjA3YzQxMWFmMjk0NzVjMGY0NTIyMjAzZWJhODVmYTMzZjk5OCByZWxlYXNlMzEtbWFpbnQKKzc5OTg2IGU0NzViNzcxZGQ0YzBmOThkMTRmYzMxNjgwZTZmNmMyZjJhN2NkZGEgbGVnYWN5LXRydW5rCis3OTk4NyAyYWU1ZjYwZTI3Yzk5NTZkYWVkYzYwMTEwMmU0NDRhNGUxZGI2Mzg4IGxlZ2FjeS10cnVuaworNzk5ODggNTY4MGJhMmRjOWMyNmVlY2ViNjQ3MDNlNGNmOWEwOGE4MjBjMzJmOCBsZWdhY3ktdHJ1bmsKKzc5OTg5IGJhZTM3OTAzZjc5NzVkNjc3OGNhM2M1MjRlYWIxZmRiNjQ5OTkzNTMgcmVsZWFzZTI2LW1haW50Cis3OTk5MCBhZDJmZjFjMzZiMWFjMTZjZThmODRhYTkyNjUwZmI0Y2E1YjU5YWE3IHB5M2sKKzc5OTkxIGRlNTE1MTQwYjVmYmU0YzRiMGNiZWE5YjMwODY0MzliYjdjZDU2ZjggcmVsZWFzZTMxLW1haW50Cis3OTk5MiBmZWRiMWY5MzIyZGYzYzNmYTExMGFkNzljM2Q0ZTNhYTI2YjI2MTUwIHB5M2sKKzc5OTkzIDgxZDBlYTZkMmRhMzdhMzM5MWU4MTllNmY2N2JjNGE4YThjMmFmNjIgcmVsZWFzZTMxLW1haW50Cis3OTk5NCBlNjk3MmYxYzlkNmQwMTY3MTVjOWM0MWJmOGNlMGRmZTk5ZjhjNDUxIGxlZ2FjeS10cnVuaworNzk5OTUgNjMxNDRmMTQ1NGQyMDBmOTE3YjExMGYxZWY0ZDhhMGRjYmIzY2RhNSBsZWdhY3ktdHJ1bmsKKzc5OTk2IDQyZTYwNTdjZjI4ZmQ3YzkzZTMxODhlZjA4NDEzMWRkZGE1ZGE0ZDggcHkzaworNzk5OTcgODYwZmNlZGEyZDg5NDBiNTQwNzc2MTg4ZGVlYzRlZTc5YmEzYzQ4MCBweTNrCis3OTk5OCA0ZjEyZGNiOWNlNmYxMTc3ZDk3ZmQyZDI3ZjI4MzEyMzhiNmU3ZjA3IHJlbGVhc2UzMS1tYWludAorNzk5OTkgODEwNTkzOTA4NTI3Nzc0MDQ3MDBkNTI1NTgzMzRiMDM2NmEwODc1ZSBweTNrCis4MDAwMCA5OGExNWZjMzhiOGJmMzFlN2Y3OGY3ZDdmYTM3Y2VhOWU5N2NmMGNhIGxlZ2FjeS10cnVuaworODAwMDEgMTE2M2NkOGMzOTU2ZGIzMjMxZTlhMTM0ZTA5MTYyZTNjNDliMzhhMiByZWxlYXNlMjYtbWFpbnQKKzgwMDAyIDkxZWJjZmY1YmIyNGMwYzhiNDQ3OTM4NWRmNjEzZmMwNWY5ZmUyZmUgcHkzaworODAwMDMgNTU3NjY1NGU0YjkxYTU1YzljZjkwMzAwODU4MGQ2YTlkMWJmYmI4ZCByZWxlYXNlMzEtbWFpbnQKKzgwMDA0IDcxM2YxZjZiZjMzOWJlZjdmZjM0NGQxYTFhYTY1MjJhNzdiNzlhMTcgbGVnYWN5LXRydW5rCis4MDAwNSA5ZDEwMzkwNDg0OThhODhlYmUxNTU3NjAyZDA1NjJhYTEzNzZmMmJmIHJlbGVhc2UyNi1tYWludAorODAwMDYgYjgxZDgzYTg5OWYzNjc5ZmRhZDc4NTVjZTE2MDc2YjBiNTVkOTEzOCBweTNrCis4MDAwNyA1N2JiZmNlOGIyNzg4OGY3NjU3Mjg0OWJhYmVkZTk2MmViOWQ1ODc5IHJlbGVhc2UzMS1tYWludAorODAwMDggYTJmNWIzYjE5ZWIyN2VlOTFmNjA1MzBiYjA3MzUzMGM5YTYzYzg0OSBweTNrCis4MDAwOSAxOTUwNzBlODVjZTE1MjA3ZTc2MTIwZTg1M2EwMGRmMTc4MDY0MmU1IGxlZ2FjeS10cnVuaworODAwMTAgZjFjMDM2ZGUxOWI3ZDE2NTUzMThmOTZhMjZlMTcwYjQ2ZTFiMjE3NSBweTNrCis4MDAxMSA4OTc1MmMwM2YzNDJjZTY0NzFkYjYxMzU4Y2U5Yjk1ZDE3OGRkYTRlIHJlbGVhc2UyNi1tYWludAorODAwMTIgNzdjNDllNzM1MjQ5NzlhYWQ0MGNlMDMxMDI5NzQxNWM0OWIyM2Q0MiByZWxlYXNlMzEtbWFpbnQKKzgwMDEzIGQ0NTA3ZjYxNTMxZGNhNGE4NjUzZDgyZWJkZTRkYjQ1YmZhM2ZkZjcgbGVnYWN5LXRydW5rCis4MDAxNCBiNTM2YThhOTZmYTlhMmQ3NzIxZDUxYzJkNWMxZGU2NDBkNTg4ZDQ4IGxlZ2FjeS10cnVuaworODAwMTUgMDkxNTg4OTRhM2IwNWYyYjNlZWVlMzAyNDlhZmM4MzAwYTZhMzI4MiBsZWdhY3ktdHJ1bmsKKzgwMDE2IGQ0ODY3MDU4OTJhYjZlMWI2MmJjMGVjZjA5MjM1MDY0MjAxYjQ1ZWIgcHkzaworODAwMTcgMGExY2EwZDc0NGE0MjY5YzUzNmVjODYzMDNlZGY4ZDM2YmJiYzVmOCBsZWdhY3ktdHJ1bmsKKzgwMDE5IDFhOTBmZTM3YjU5ZDczNmMzNGM5OTJmOTQ5YmFmMjNmOTVkMmU5ZjMgcHkzaworODAwMjAgNjBhN2U1OGExMGRhZGJmNGU2NWI5N2ViNDMxOGE3ODRjNjU5OTk3NCBweTNrCis4MDAyMSA1MjM3NzIzNWQwNTUyMTEwY2ZkMzA0MmExNDY0YzYwMmE3NjYxNWNiIHJlbGVhc2UzMS1tYWludAorODAwMjIgNjNiNTgxMjRhNTU0YTM2ZjFhN2MzYzAzZmQ1NmQ0MDQ3YTUxZGFhOCBsZWdhY3ktdHJ1bmsKKzgwMDIzIDdhMzkwZWI1MGRmMTM0MzIzMmI2NzVmMGIwN2I3NjkyOWQyNmQwYjQgcHkzaworODAwMjQgNjUxZWRmZDJkYjM4ODgyZjg1ZDg4OTBkNThjYjkwNGRlNWE3YmY5ZiBsZWdhY3ktdHJ1bmsKKzgwMDI2IDVlOGU2ZTdlZWRiMjE0YzUxMjFmNzk5YTcwZjA5NTRhYjcxYzA5MjUgbGVnYWN5LXRydW5rCis4MDAyNyBhOGJlYjYxNDkyMmY5MDJjOTY0OTM4OGVlNjA0NDY2ZjBlYWIyMzhmIHB5M2sKKzgwMDI4IDI1MTczMjA5MjYwMTM1NGYyZmM5ZTJhYTExNDQ3YmJkOWViNWI3OTcgcmVsZWFzZTMxLW1haW50Cis4MDAyOSAwMTVlOGY3ZjUyNjRmNGQxMTE0MmQyNmQ1N2EwNjJmYjJkMGVmNDNmIHJlbGVhc2UyNi1tYWludAorODAwMzAgNDdhNTdkZjY5ODk2ZmNmMGY1Nzc4ZDQzNGVjZmE4ZTJlZDFhZDQxNiBsZWdhY3ktdHJ1bmsKKzgwMDMxIDc5OTQyNjlhZDNhMWZhNzhkYTQ5YzYwMDUzZDU3NzE1N2I4YjI0ZTYgcHkzaworODAwMzIgYjhmMjk3Y2RmYWRlZjFmZGU0ZTZjODA5MWVjYjlkZWE4ZjcyMjZkYyByZWxlYXNlMzEtbWFpbnQKKzgwMDMzIGRmMmU5ZThkNDI4ZWNmZGIzOWRlM2JhZWFmZTY2MDNjMzQzMmQ2NGYgcHkzay1pc3N1ZTQ5NzAKKzgwMDM0IGI5MmI1N2ZmYjMxZTE2OGVmNTIxN2FlMTlmYWQyNDI1NjU4YWQ5MDcgcHkzay1pc3N1ZTQ5NzAKKzgwMDM1IDc2OThkMWExMGIwMWMwMjNjZGU2NDRmMjk3NzJjZGJlM2YzMDZkMDYgbGVnYWN5LXRydW5rCis4MDAzNiA3YmNlZTcxNzBkN2JjMzcyMGQ5Mzc5NDJjYTAzN2MwMWRmYzgwYTUxIHB5M2sKKzgwMDM3IDZmZmU2ZjhjYTA5MTY0NjM4NDI5YWIzZmUyZTE0NDA3MzllYWYzNzcgcHkzay1pc3N1ZTQ5NzAKKzgwMDM4IGE1Yzg4NmVhNGY2ZjMxOWNjMzgzZDhkOWQ3MDYxOTJkYmZhNWYxYjYgcmVsZWFzZTI2LW1haW50Cis4MDAzOSBkNmRlZTNhZDI1OWI1NmJlZGM3ZTgyM2RhMDAzZmUyOTZjYzIxNmIxIHJlbGVhc2UzMS1tYWludAorODAwNDAgZDRlMjEwMzIzZjcxMzc0MDI2NmM4NjVmYmVjNzZhMzczMDFiNzM2OSBweTNrCis4MDA0MSAzNDFhNmJkY2NkMmU3MmEzODhjZTc2YjVmNGQyYWVjZWY5N2NiMzEyIHJlbGVhc2UzMS1tYWludAorODAwNDIgYTkyMTNmOTFhYjE2OTgxOGI3Zjk1ZDFhODkzMTgyMzE4YzFkNDMzMSBweTNrLWlzc3VlNDk3MAorODAwNDMgMDgyNGYyNjg2MWJhYmMzZjIxMmE5ZDM2YjI3MTMwNjFlNTg5ZjJkZiBweTNrLWlzc3VlNDk3MAorODAwNDQgNzAyYjZjOTllNzU3YzcxMDY0MWQ0ODgwNTAzZTNkMjFlNjFjODc1MCBweTNrCis4MDA0NSA3ZTBjZTVmNjNhM2JjYTQ5YWQzMTFmZTgxMTEwMzVhY2U2Yzg3OWM3IHB5M2staXNzdWU0OTcwCis4MDA0NiBiNGM2NTM0MzJjYjY3NGM2NjkyMjZmNzM1YWQwOTRkNTFjNDc0NGE1IHJlbGVhc2UzMS1tYWludAorODAwNDcgMWRkNGVmZGVmZmYxNTg3NjNiNTc2YTc1NGMyY2JkZDNmYzcxOTdkZCBweTNrLWlzc3VlNDk3MAorODAwNDggYjk1YmEwY2MxYjdlNTExOTNlOGFlZTI4NGE1YTM3YWQwZGI2YjY3NCBweTNrLWlzc3VlNDk3MAorODAwNDkgNWM5OWZkYjdkYTczNzVkMzA2MDkyM2ZiMWU0YmVhMDE1ZDQwZGQ1MyBweTNrLWlzc3VlNDk3MAorODAwNTAgY2I4NzQ1ZmE2NTg4NDI5MWQyMGU1NThmZjBkMmE3MzM0N2YxN2U5OSBweTNrLWlzc3VlNDk3MAorODAwNTEgMzZiMDA1YmMwODhmZjUyYWFhYWNmZTZjMTk3YmMxNjE4ZTg2NGZhYSBweTNrLWlzc3VlNDk3MAorODAwNTIgZjFhMmYzYjZiZmM2NDg1M2Y3MWJiYzgyM2VhM2ZjZmYwODI3NmYzMyBweTNrLWlzc3VlNDk3MAorODAwNTQgNWI2ZmU3ZDM1OThiY2UyMmFjNTEyYzg0MzNmNGVkY2M0YmQ1OGQ2ZCBweTNrLWlzc3VlNDk3MAorODAwNTUgZTk4NGY5ZTE1NjY2Y2U2ZDMyZWVhMTNjMTEwM2YwZTkyNWQ1MjFmNiBweTNrLWlzc3VlNDk3MAorODAwNTYgNTE3Y2M0ZDU5ZTEyZTI0MTg1OGI5MTk2ZWZiNmJmNDJmYTU1NjQ2NiBweTNrLWlzc3VlNDk3MAorODAwNTcgOTllOWM4ZDY5MGFiOTQ4MDcxM2NhNzVkYjA5ZDQyZmQ2ODg1MWM5NSBweTNrLWlzc3VlNDk3MAorODAwNTggMjg1NTM1NjRmMWM2NmE0NjA3MmJlN2YwN2U3NGRiNTE2N2VlOTBhNSBweTNrLWlzc3VlNDk3MAorODAwNTkgZmQ3YTEzZjBlYmJkZGM0MGE4NmI4MzBhOGZlNDMyNWY2M2VmYzQ2MyBweTNrLWlzc3VlNDk3MAorODAwNjAgODY5M2ZjMDZhYzhlYzhlMWRjZmIyODU2YjdjMGM1YmQ2MjU5NDM0OCBsZWdhY3ktdHJ1bmsKKzgwMDYxIDczNWJlZDZjOGUzNjFkODQ3MThmMWI2ZTk2NWJhZjMzMjYxZTY3ODcgcHkzaworODAwNjIgNjQ5M2FlNzI3OTFkMzdiY2YxN2MwMmEzOWU0NTgwOTI4MzUzY2NkYSBsZWdhY3ktdHJ1bmsKKzgwMDYzIDQ1MGM2OTIxMDU4MWU5NGNlZDg4YTFhYmFmOWEyYTNlNzcyMzRjZDUgcmVsZWFzZTI2LW1haW50Cis4MDA2NCA2YmJmMDdhM2UwMWI1YzA4MjVhOGQxODhjMzI2ZWU5NzQ3Njk4ZmMyIGxlZ2FjeS10cnVuaworODAwNjUgYmFlNzk3NjUxNjBkMjIwZDYxMjk2ZmUxNjkzOTc3MzI0NzYzNzIxYyBsZWdhY3ktdHJ1bmsKKzgwMDY2IDYyZDExNzg1MjA0ZjQwODU2ZjJjM2VjZmYyOGE1ZWU1YTdkOTBlOTIgcHkzaworODAwNjcgMzY0ZjFhYzMyMjY0ZWY3ZDQ0ZGFhNTE5OWUwMDAwODVkNmUyM2M2OSBsZWdhY3ktdHJ1bmsKKzgwMDY4IDIxMjY3YmYwNzIwZTAxNjYxYjczZTEwYjgxNzQwOWE2YjdlNmZlYmUgbGVnYWN5LXRydW5rCis4MDA2OSBmYTkzMDBmY2IwMDQwODdlMjhlMDc1MzU0YzZjMDU3ZGM0YzVmNzJiIGxlZ2FjeS10cnVuaworODAwNzAgNjEwMmQ4Njg2YWFlZGE3OWY2MGQ3YTA2NGExNDllYzM5NjYwM2RmZCBsZWdhY3ktdHJ1bmsKKzgwMDcxIDAxZDFmZDc3NWQxNmI1NjlmMmNmYmYwYjE5NjRiNzZkNWRkNjViMmQgcHkzaworODAwNzIgMjIxNjNkOGNhZjNlMzNjYmU1ZGE5Y2ZmNjdkZDJiYjM2ZDIyMmFkMiBweTNrLWlzc3VlNDk3MAorODAwNzMgOTA2OWNhNTFlNjE0ODI4MzZhNTM2Nzg1MzJjNjEzZWNlMTYwNGEzOSBweTNrLWlzc3VlNDk3MAorODAwNzQgZDQ0M2Q4NWY2MmMxNzdkNjUxMThkZDg4MmY0MDkxNDY2ZGZkMmU5ZCBweTNrLWlzc3VlNDk3MAorODAwNzUgY2ExMWM4MzBmNWNjOWRhY2RmZDU5M2EwMGYxNDQ2ZmE4ZmY1YWU2YyBweTNrCis4MDA3NiBiMTI3NmZjZGMzYmQ3NTAyMGIwMjQwNTFiOGIwZjY2NTVjZjk2YWNlIHB5M2staXNzdWU0OTcwCis4MDA3OCBjZGJjYTdjMzQzMWQyNmYxODU2OGI4ZDcyMmRkMmVmYjFhMTdmY2U1IHB5M2sKKzgwMDc5IGQzNTFlMTVmZWUyOGYwOWRkZDk2NjgxMDZmZTlhZWFiYmNkMzBlN2IgcmVsZWFzZTMxLW1haW50Cis4MDA4MCBiNDA0MzZiY2Y0YjJiNDZkNTM2M2MxNDkzZGQxNTg4MmFkOWRiZmUxIGxlZ2FjeS10cnVuaworODAwODEgYzVhNGQ5ZDcyZjk4MjE5MjM2ZTI1OTFlMjg1MzEzZTE3ZjEyN2RjYSBsZWdhY3ktdHJ1bmsKKzgwMDgyIDdlODZmNDQyMTJkNjU1YTU0YjI1NGQ3MDhlZTQyMGE2MGNhMWMwNzMgbGVnYWN5LXRydW5rCis4MDA4MyAxNGYzMTBhNmU0OTI4NmM3YWVmOTU3NDFiMmNkOWRjODZjNTcyZjI1IHB5M2sKKzgwMDg0IDQ4NWUzNGVjMWExYThiOTYzNmVjOGVlNGUyNmQ5ODg0NDM0Y2E4NDQgbGVnYWN5LXRydW5rCis4MDA4NSA3NjQ5NDYzOTkzNTJkZjBjY2I3OWFkN2M4MmZmOTNjMDI0ZmYzYTVlIGxlZ2FjeS10cnVuaworODAwODYgNDIyOTY2MmVkZTg3MmRiZWMwMjdkNWJjMjU0MjlkYjlhZjcyYjVmMyBsZWdhY3ktdHJ1bmsKKzgwMDg4IDNhNDQ3M2JlZWFmNTIzOTVlZGQ1NTJjNjdkZDk4MzMyMDJjODkyMGIgbGVnYWN5LXRydW5rCis4MDA4OSBmNGJkM2IyY2IwMDBlYjMyNTc5YWIwMTQ3NDAzYzM1YWRlN2YyNTZmIHNpZ25hbGZkLWlzc3VlODQwNworODAwOTAgNWU4NTFiMjllZDk1YjE4N2QyNDFmMmEwZTgwNDJhZmY0NTY2MTIzMCBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwMDkxIGMxZDFmMDAwYjQwNGU2NTFkZWZkYWJkYjZlNmQ5NzhjMDJlOWE5NTkgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDA5MiA3M2Q3OGZlZjkxZDcwZmEyZmUyNmVjNzkxMzA4NjcyZTNkNmFiMDlkIHB5M2sKKzgwMDkzIDVmYTQwMmE0NmY1YTdmN2UzNjA2OGI1MzI2Y2ZmMGJmNzYxOTk2NmMgcmVsZWFzZTMxLW1haW50Cis4MDA5OCAzMjQwMTY3MTg2MjE4MDg3ZjUwMDNmZDUwNzdiMTVlYWFiZDQzMzIyIGxlZ2FjeS10cnVuaworODAxMDAgZjk4YmQ4NWFlYmIwZjUzNzE4NzU4ZDUxZTkzY2NjZjcyYmJlMzkwZiBweTNrLWppdAorODAxMDEgN2I5ZTMyOGY3NTMzMjFkMGI5N2ZlNzRiY2VhM2U0YTc2N2UxODk5MiBsZWdhY3ktdHJ1bmsKKzgwMTAyIDUxYjg1NTE2ZDdmOTNhODNkMjNhNGIwODQ0YzkyMDg3MDhlNWIyM2QgcHkzaworODAxMDMgMzVhYjVjYmQ3ZTc5MGMwMjNlNTg5MjU5MDNiZjU1NjVmNWYyMTJiNiByZWxlYXNlMzEtbWFpbnQKKzgwMTA0IDgyMGI3ZTBhNmYzOGIxYjU0MTRjZTBiOTJlZjE4NGZkNDJkNzQ1NTkgcmVsZWFzZTMxLW1haW50Cis4MDEwNSAxMzdiNDI0ZTJmNzg0YmQ5ZGI4NDU2NTVhNzJkNTQwNTAxYzMwMTIwIHB5M2sKKzgwMTA2IDgxMjk3OTc1ZDI1M2U5Y2YzN2JlNGZmYmQwZGI0ZGNhYjNkMDZiNTUgcHkzaworODAxMDcgYWZiMjVjMmQwNTYxOTRjZGZjZWQ4ZTRmMGU0OTExOTRlZmZjYmFjZCByZWxlYXNlMzEtbWFpbnQKKzgwMTA4IDAwNTUxMGFjMDk5NWI2ZmZhYzIwODAwMTk3MjE0MDJhYmI3MGRiNmUgcHkzaworODAxMDkgODdkMTIwYjllZmYyYWUzNmZiNDJiZjZlYTc2NjE0MTIyMTRlNzY2YSBweTNrCis4MDExMCA1NDdmMzBhMGQ0YjFlZDY1NjhlMjVkZWM5NjNmMzYyZWYzM2ZjOTczIHJlbGVhc2UzMS1tYWludAorODAxMTEgNGNiYjBmZGViZjczN2NhZGI0MGFjZWY5MmViYjAyZDc2NzA1MzU0MCBweTNrCis4MDExMiA5NTE3OGUxN2U5NjEwY2Q4MDQxMzg2YmEwY2NlODAyOGJiN2YxNGJmIHB5M2sKKzgwMTEzIGJkYWEyODlkOWYxOTlkOGUxZTZmOTRlM2Y2MzU3N2M4MmIzNDdmYzEgcmVsZWFzZTMxLW1haW50Cis4MDExNCAwNDQyZTdhNDE4Y2ViZmMzOTQ3ZDdkM2Y1OTdjZTEzOGNkM2QxY2YyIHB5M2sKKzgwMTE1IDExNjQwYzFhNDYyODhhODZlMGU0ODA0MzBkMDQ1YTY1OGMwZjY4YTMgcHkzaworODAxMTYgMTViMDljY2ZhYzdjZmRlZWY2YzQ1YzRjOWM0NDg0YTBiMzRjYjc1ZCBweTNrCis4MDExNyA2MzM1Y2YzNDVhZmFlODEzYjJjNWIwZjUwNDAyMDU2ZGI4MWNlMjMyIHJlbGVhc2UzMS1tYWludAorODAxMTggNDRhNzUwN2Y2ZGI1NDI3ZjU3ZGI5NTVlZGEwYTE3MWEyYjc2MjVkYiByZWxlYXNlMzEtbWFpbnQKKzgwMTE5IGNjMTBhMTUyNzUyMWQxMDZiOGVhM2E5NzlkNGZhMjM5NzJlZjBmNTAgcmVsZWFzZTMxLW1haW50Cis4MDEyMCA0NWFlZGNhZTljNDc5YzIwNjY2MDRhZGE2OWNlODY2ZDgzNjQ0YWUwIGxlZ2FjeS10cnVuaworODAxMjEgOGFiNWJiYWU1ZWZlOWU4NDlmMDg4NWNjMTQzNDFmM2Q2MWIzMjc0NSBsZWdhY3ktdHJ1bmsKKzgwMTIyIDgxYmJkNTY3MGVjMzllYzcyNzIxY2VmNTMwYmJkZDZmYTVkOWUxNzkgcHkzaworODAxMjMgNjNiODE1Y2M2ZjRiMWZkOWIwMThlMmI5MjJhZWUwM2JkZDU1ZjVkNiBsZWdhY3ktdHJ1bmsKKzgwMTI0IDM2OTZkMTdhMTBiM2E0NTI4MWVkMGFkOTIwMmM3NzllNjYxZjQxMmYgbGVnYWN5LXRydW5rCis4MDEyNSBhNzQ5MWQ0N2Q0NTQ2ZmRjMmJmOGUwNmVmNDNiZGYwOTg5Y2EyMTgyIHB5M2sKKzgwMTI2IGNlNjI0Y2NhMjAyYWU5MTRmMjg4OWY3OTM5YmI0Y2Y4MmRhZWEzY2IgbGVnYWN5LXRydW5rCis4MDEyNyA0NjBhOTg0YTllZDU3MDdkMmZhMzQ3YTdiYjY0ZDU0OTQ2Mjc4N2FhIHJlbGVhc2UyNi1tYWludAorODAxMjggNzczNDA4Y2E1ZWU2MzNmZmRhYzBjOWZkZjAwMWJiNGViN2VkYWE0ZSBweTNrCis4MDEyOSA3ODRhMDIyNjY0ZTNhMmMxOWIyNTM2NzlkNDM2MjE5ZDc0N2JkMmI2IGxlZ2FjeS10cnVuaworODAxMzAgMGEwMWEzZWExNDBhOTdlMDQ4MmRhM2Y4YmY0ZjgzODc1ZmZhY2I4MyBweTNrCis4MDEzMSA2OGZkNzBhOWU3N2FmZGNlN2VlOWM2NzMyMDZmMjQxYTZlNDIyOWU3IHJlbGVhc2UyNi1tYWludAorODAxMzMgNWUxZGJjM2FlNzY3OTdiNzc3NjA4NzA1MWI3M2MzOGY1MzcyODEzZiByZWxlYXNlMzEtbWFpbnQKKzgwMTM0IDFhMzMwNGNlOWEyZTdhZmE2YWRlM2RjZTBhMGQxOWFiMzdlMDI0ZDEgcmVsZWFzZTMxLW1haW50Cis4MDEzNSBkYzc2NWJjYTI0YWRkODRmYjVkZTU5NTAxMWVjZjljZTg3Y2E5YWM2IHB5M2sKKzgwMTM2IGU1MzkwZmVkY2I2YjE2MmMzZGRjYWUyMTlmNWM3NTAzMjE2NGE0YzIgcmVsZWFzZTMxLW1haW50Cis4MDEzNyA3YjY5ZTYzMGQyMzc3OTBiNTY4NWY5ZjIwODMwNGY4ZjQ3OTc0MjYzIHB5M2sKKzgwMTM4IGM1MzJhZmIwZmE4OTI4MDJlMTNmZmNmZmU5YjU0M2Q0ZTQ4MTY5ZTEgcHkzaworODAxNDAgMDQ2Zjk3ZWQ1Njc5NGVmZGU3NTJkOGRiODNhMjc1ODRhZTQ2YjM4YSBweTNrCis4MDE0MSAwZTM2Y2MwZDZhYjAyMDMzNjk5MjEzOTVhYTExNjJlMjJkNmVlZGZiIHB5M2sKKzgwMTQyIDczNGRkMmVkYTFjYzRjYTRiYTYwMTNhZjVmNjk2NGE3NWFjODNkZDcgcHkzay1qaXQKKzgwMTQzIDczMjFjN2Q2NDJhZGRhOTk1ODMzMjdjNzZiMGU0NmY3OWNkMmQxYzAgcHkzaworODAxNDQgMjVlMzVlMzgzOGM3NzU5ZmQ3ZjdjNjhiMjdjZGIxZWE0ZTBlODljNSBsZWdhY3ktdHJ1bmsKKzgwMTQ2IDdiMDY1NjkyOWNkYjkyNDUyNTBiYjRjZDMwNTQxZDgwNzNmMjFkNjAgbGVnYWN5LXRydW5rCis4MDE0NyAyOTM4YmY4OTk4NjM4OTVhNGQyYTJjODljNGJiYmQ3ZTc3MjhlNzcxIHJlbGVhc2UyNi1tYWludAorODAxNDggNGYxMjIwZjNlMmM3ZGI4YTI2NzUxYTQ0YmEwYWIxYzQwOTE2YzEzMiBweTNrCis4MDE0OSA0ZDAyMDg2NjFiMWY3Mzg3YTRjOWQ0ZDVjMmUxNzhmZjUwMWI1OGY5IHJlbGVhc2UzMS1tYWludAorODAxNTAgMzg0ZGQ0NDlhNGVlODgyZWI5MDBhY2U4Y2RlZDMzN2VjNjBhYjhmOSBsZWdhY3ktdHJ1bmsKKzgwMTUxIDc0NjJlNzUyZjBmYTI4YmFiZGM5MDk5NTE4OGY5ODA2MDQ0MGEwMTAgbGVnYWN5LXRydW5rCis4MDE1MiAzM2Q0NzlhMzg2NjZhYzU5NWYzZGRiYjFkMTIzYzIzMTkwMTkwMDEzIGxlZ2FjeS10cnVuaworODAxNTMgZjJlMmIxOTZkYjkyMmMyNzhkNzUwMTAyNWQyZTczNGRmYmI3NDNkMSBweTNrCis4MDE1NCBlNWY2ZGUxOGI3MTU2ZTVjMTQyOGMwMDZkNTIwYjczODk4YWI2ZTMxIHB5M2sKKzgwMTU1IGNjMzgyZjM5YjM5OGNmOTk4MWYxODA4MmRlM2NmZGVkM2M3OTI3ZjIgbGVnYWN5LXRydW5rCis4MDE1NiBkN2Q1Yzc2NTQ1ZmIzN2Y1YzA1ZWQ0MGRjY2I5N2Y0YmY1NzE4YWZhIGxlZ2FjeS10cnVuaworODAxNTcgYmFjOTkyMjlkYTJkY2E5NGI2M2NmZWJhYmQ2ZmU5MWU0YTkyZGU3ZiBweTNrCis4MDE1OCA5YWNlNTViMjlmN2U5Y2UwYmI2ZDIzYjM0NTI2YTBlNWQ1N2IyNTc1IHB5M2sKKzgwMTU5IGViMzBlNjYyZmQ2YWMxMjc3M2JhMzNlZWJjMjliYTEwOTA3NTg2ZmYgcHkzaworODAxNjAgZjczMDcxMmQ5N2I4ZGRjMmI2MmU2MzYxZDhkMWVlM2YyNGVhYTcxNCByZWxlYXNlMzEtbWFpbnQKKzgwMTYxIGQ0MTllNzM3MzM3MDIxNjViYzUzNmZlYWUwMzE3ZGI3YjFmNmU5OTIgcHkzaworODAxNjIgMzE2YmVjM2YxOGVjOTE1MTBkY2UzNzcwMTM3MGRiYTRjMjZhMzNiMSByZWxlYXNlMzEtbWFpbnQKKzgwMTYzIDBmMzdhZmI4YTlmMmMwZTlmNTUwNmEzZGQ5OWFjNTA0ZDFhN2UzYmEgcHkzaworODAxNjQgZDNlYWI0NTk3Mzk1MWI4YzA2ZWYwMmI5ZTgyZTAwZTE0NTZiZDc1YiByZWxlYXNlMzEtbWFpbnQKKzgwMTY2IDdjOTBhYzE5NGU0MDgyZDYwMzMyOGMxZGNlOTZkN2FhODAwOGIyYjQgbGVnYWN5LXRydW5rCis4MDE2NyBlMDg3YjVkM2QxOTFjMjEwNTg3YzczMGM5OTI1MDVkOTk5NDMyNmMxIHB5M2sKKzgwMTY4IGVhNDJhZjk2OGQ5ZDA1NWEyYzk4NDk1ZTJjZTU4MGRmZGQyYThmYjEgcmVsZWFzZTI2LW1haW50Cis4MDE2OSA4ZWZiY2NlMDc1N2RmNjA0N2MxODk2ZmJhMTQ0MzdmZTUzZDg3ZDQxIHJlbGVhc2UyNi1tYWludAorODAxNzAgN2UyNzBkY2Y0YmQ1OTBiYjlmNTA0OThiMmZlZTIwMzUzZjY0ODI4MiBweTNrCis4MDE3MSAwYzBkODE5ZWRiOWRjZjY5N2NjZjIzMDhhMWJlZTViYzVhODE0ODU2IGxlZ2FjeS10cnVuaworODAxNzIgYTA3ZjYwODI1ZTFhYjlhMWJmMTAyODkxZGY4ZDBkOGRiNzBiOTNkMiBsZWdhY3ktdHJ1bmsKKzgwMTczIGE3ZTY5YTVmMjMzNzg0NjEwZTA3ODc5YzU1NGIwOWI1ZDExNmY3ZDYgcmVsZWFzZTI2LW1haW50Cis4MDE3NCA2Y2JlODY0NTcxN2QzZTk5ZGQyYTU2ODMxYjRkYjk3YWM3NmMxYzdhIHJlbGVhc2UyNi1tYWludAorODAxNzUgNjU0ZTFjYzliNGZmNTZhOGY1ZTVhNDliMmI3YmVjNzhhYzVjZmFlMCByZWxlYXNlMzEtbWFpbnQKKzgwMTc2IGZhOGEwM2RmYzJkMWNiNmM2MzZlYjYxMmZjNzAyNTViZGFjOWFjOGMgcHkzaworODAxNzcgMTNkODZmYzY5OTQwODFiZWE5MTE2YzBiODM5NmJlZGYwOGY2MDIyMyByZWxlYXNlMzEtbWFpbnQKKzgwMTc4IDJmNTQ3NTZhZWIxMTY2YzdmMGIxODUwMDljNGUxM2NiMGE3NDliYWEgbGVnYWN5LXRydW5rCis4MDE3OSAyMjczN2E5OWJmOGM0NDRiYzRhZmYzZmJiOTQ2OTIyYThmZDc1OGQ2IGxlZ2FjeS10cnVuaworODAxODAgNmNiMWM0ODA0ZjljOGIxZWNmNzI5NTVjNTQ1ZTZlNGQ4Y2M2MWY3ZSByZWxlYXNlMjYtbWFpbnQKKzgwMTgxIGZlNmI2YzE4OWJiNDE1M2Q1Y2FiYTBkMTVkYzc1MjZiYzU0ZDdmODkgcHkzaworODAxODIgMWYzZDJlNjEyYjQ0YWI3N2UxODFiNDEzMDE5Mjk5OWQzODBiNzU2ZSBweTNrCis4MDE4MyBmYjNlNDAwYzJjZGE0MDg1OTI0OTViOTJhZDYzMGYyN2ZhMjg0M2E4IHJlbGVhc2UzMS1tYWludAorODAxODQgNDUwNWViNTdiNGNhN2RmODAxOTQwZGQwY2U5NzJkZmRjMWJhOTE2NCByZWxlYXNlMjYtbWFpbnQKKzgwMTg1IGJlZGQ2ZWUwM2U2MDRlNzU2OWM2ZjgwZDY4NmMyNDRiMjYyMzZlNjEgcHkzaworODAxODYgZjc2MmM2YTU0YmZjYzc2YzZjNTJlOTY5YTcwZmVjNTUyMjJjYTRiNSByZWxlYXNlMzEtbWFpbnQKKzgwMTg3IGE5NmZkMGU4NzRiNDk4YTRlNjQ4MjdlMGExZGU2MmUyYjA1N2EyYjMgbGVnYWN5LXRydW5rCis4MDE4OCBiY2E1NzQzNzYxMjcyZGQxZWFiMzI1ODYxYmRkYzBlYWRiM2I5NDI1IHJlbGVhc2UyNi1tYWludAorODAxODkgNzI2N2UwYWNlMzNjMTc0MjUwYTdmYzU2ZmM2OTU0ZmZhNWUxYWFhYiBsZWdhY3ktdHJ1bmsKKzgwMTkwIDA0M2YxNDMwNGRlZDA0NzM1NzAyYzFlNDkyMzJkOWEyMzY4ZGY0OGEgcHkzaworODAxOTEgMmNmYjEwYTZjMmI1ZDcwYjUzZmQ3NWQ2YWYwNDE0NTZjZTczNWIzOSBweTNrCis4MDE5MiA5ZDM1YWZkODgyMWYwMDc1YThiNDM3Zjk2NDNiMzM4ZmRkZTBkYTZjIHJlbGVhc2UzMS1tYWludAorODAxOTMgYTUyY2I5OTFmNTRjMWIyNzVjYjk4MjJjYjYwODkyMjdlNTVkZWEyOCByZWxlYXNlMjYtbWFpbnQKKzgwMTk0IDc2NjQ5ZWQ0NWM2MzdiYWY5NGU0OTE0MTE0OWQ3NmY4N2FkNTk4MTIgbGVnYWN5LXRydW5rCis4MDE5NSAwNjQ0Y2EzZmUzMGEwNGVmNjZjMzBiZDQ3NzUyODY5ZmU5OWFiMTc5IHB5M2sKKzgwMTk2IDQ3NzRkNTllZWY3YjM3NjIxM2M4ZWY5MTlmMTQxZjBmYjExZTNjYmYgcHkzaworODAxOTcgMjhmYzMxNjg4YjdjMTAzMWYyNTZhMTc0ZGE3MGNmMGExMjdkYTdlMSByZWxlYXNlMzEtbWFpbnQKKzgwMTk4IDlhYWMxZDNkODczZDE4MGViNDRkZDlhZTYwNThlNzA4ODgyOTJmNWQgcHkzaworODAxOTkgNDg1YzNmMDlhMDliNDhmOGEzZTk5OTIyNjA2ODdlZjA2YTVjMjdmMyByZWxlYXNlMzEtbWFpbnQKKzgwMjAwIDkzODZlM2RkNTcwMGM3MDgxYzFjNzAzMWEwMGMyNjRmNjE5ZWNiYjcgcHkzaworODAyMDEgMThhMTk1NjMzYjU5OWVkYzFmMTBjNjYxZGNkZTc0NDczODJkNDRmMiByZWxlYXNlMzEtbWFpbnQKKzgwMjAyIDhmNWM0ODBmNmQ2ZjU5NTE1ZjhmODBhZGI2ZGYxYmRkYzJjM2Q3ODYgbGVnYWN5LXRydW5rCis4MDIwMyBjZjU3NTZlYzZlZDdkN2Y0MmI0ZjU4Y2FjMjQ5MTA3NDdmYmE4MWM1IHJlbGVhc2UyNi1tYWludAorODAyMDQgYWE3MDdmMTNjNDAyOGEyNzQxMDFhZGZlNTQyYzg0NDdlMzQwMmE3ZiByZWxlYXNlMzEtbWFpbnQKKzgwMjA1IGE3Mjc3OTY3MmYxNTlmMzFjMDE5YjIyNTk2YmUwMDI4MzI0OTVjYWEgcHkzaworODAyMDYgY2Y4MDY5OGYyNzU2ODI4YWFhNGRhMzljMzkyMTllZWViZjJmZDdkNSBweTNrCis4MDIwNyBiODc1MDIxY2Q5OTM3MDIxMDBkNGQ5ZjZlMmZhNDUxZjQxNDkzOTk5IHB5M2sKKzgwMjA4IDJkZWI3OGJjNWQzODU5MjEzMjczZmRhODdhZWU3ODFjY2M0NTE5MDEgcmVsZWFzZTI2LW1haW50Cis4MDIwOSA2ZTJlMmI2MjY4NWVkN2E5YzA3MGNjNmYzNTI5NTE3NjYxNGFjOTEwIHJlbGVhc2UyNi1tYWludAorODAyMTAgNDFlMmYwNTRkNTM5MDFjYTgyMzkzMDllNWU2MWY3ZTJhMzMwZmFkNiByZWxlYXNlMjYtbWFpbnQKKzgwMjExIDdhNTY0ZDc0ZmQ0YThhMzc4OTE5ZGU1YjVhY2ZkOTkxYzZhNDBmYTYgcHkzaworODAyMTIgNzg5NjEyY2QwOTcwNWZkMjcxZDU3MmFhNTQyNDc5ZjM0ZTc5ODY0MSBweTNrCis4MDIxMyA4MzY4MmU3ZDU5YTY0NDM5MWU2MGI4MzRmODkyMmFiNDU1OGI3ZTUxIHJlbGVhc2UyNi1tYWludAorODAyMTQgY2U2MDVlOTUwMDA4MDZjZTI3NTQ0NDJiMjAzYjg3OTA1YzE1MWY1MCByZWxlYXNlMjYtbWFpbnQKKzgwMjE1IDQwOTJlNDU2NmRiM2ZmMjYxOWMyMDIyNjc0MmYyZTkzODIyY2UyODIgbGVnYWN5LXRydW5rCis4MDIxNiA3ZjkyNjMyZjkxMmQ2YzdhMzQ2MWI2NTE1NjNjYzA0Njg1YTUxZjRlIHJlbGVhc2UyNi1tYWludAorODAyMTcgYjUxNGY4MzExZjI4NTVkNWQ1ZTU2YjhlMDRjM2Y5ZDhlZGNhNmM0ZiBweTNrCis4MDIxOCBiY2ZiNmJhZGZmODg0MWJjMGU0Y2MwMGQyYTYxOTliZGVmZTkyNzJjIGxlZ2FjeS10cnVuaworODAyMTkgNzE4NjBjZGI0ODg2OTFlNjAxNDdkMzk3ZjEwNjk0NzNkNTUxYzc0ZSBweTNrCis4MDIyMCAxZjAyYjQzZTA5MDg5MjQ3Y2JkYWJkMDM2NTA0NmQyMjZlZDE0NThiIHJlbGVhc2UzMS1tYWludAorODAyMjEgMmYzMTFkYWIwNjk3MzU4MGIzNTU4MmUxNGEyNzVhNWJjZTc0YTgyYiBsZWdhY3ktdHJ1bmsKKzgwMjIyIDk4YjJjZDEwYWIwNWYwMWQyYTZjZWUyYTc3ZWZlNjc3MTEwMzhmNDMgcmVsZWFzZTI2LW1haW50Cis4MDIyMyBmNzdlMzdhZmM4NzBhNDM4Y2RjNzAzMjdjMDQxMDRiMWE2YmU1Y2ViIHJlbGVhc2UyNi1tYWludAorODAyMjQgN2FkNmVhOTdkNDQwMjMxNTg2NzAxYTA1YTgxMTBhNjQ1NWJhOTczYyBweTNrCis4MDIyNSAzMDFmYmU4YmZhZDE4NTllMTc1Y2YwMWUwN2VjODlmNjRhYzBhMDE1IHJlbGVhc2UzMS1tYWludAorODAyMjYgMzIyODUzMTM4OTZjODQwMTAyZjllMzFjZWU0ZjEzMWMxZDNiNTliYiBsZWdhY3ktdHJ1bmsKKzgwMjI3IDdmZWY4Nzk2Zjc3NzA0MmQ3YjgyYjVkODNkNTdlYjk2YzkzYTEzMDQgcmVsZWFzZTI2LW1haW50Cis4MDIyOCAzOWI1NjFjNTNlOWFkN2JiZjYxYzBhOGFjYjA4YzlhNTNkMzZkYzZlIHB5M2sKKzgwMjI5IGMxM2Y4MjVmZGVhYjc2YjI0OTBkNzQyNDUwOTQ3ZWIwZmE2OThjNmYgcmVsZWFzZTMxLW1haW50Cis4MDIzMCBiZTE3YmRhNWE2NThlMmFiMWI5OTVhMzZjZDJmYjBlOWMxMGQxYWZhIHB5M2sKKzgwMjMxIDM1OTk1NGNmMGNjZGE5ZDBlMmZjMDYwODVlZDgwZjY2NTlhMDBlMjEgcmVsZWFzZTMxLW1haW50Cis4MDIzMiA1OTI3ZmRmNWQ0OGM1YWVlZTE3YTI4MmQwYzVjYmIyMzFhMzJkMmQyIGxlZ2FjeS10cnVuaworODAyMzMgOGM5ODI4YzE1MDQwOWYyN2YxMWVhM2YyMGI2NTk3M2NjNjU3MWM0YiBweTNrCis4MDIzNCBiZjhkNTQwMmFiZmYyOWY1NDZjZDIzNTJmMmZkODk2MjgxOTliMWUxIHJlbGVhc2UyNi1tYWludAorODAyMzUgMWZiNjA4MTQyMDQwNGY1ZGFlYjc1OWQ2ZWNkYzZmZjE4ZGRjNTgxMCByZWxlYXNlMzEtbWFpbnQKKzgwMjM2IDVmNWVlOTRmMTkyNjNkZjdlNTYwOThiYzczYzJiNTMwMDZkZTNiN2MgbGVnYWN5LXRydW5rCis4MDIzNyBjMjM3YmYzZDA0M2NhYWQwYmJjNTAwOTEzNzRiZTk0NWFkMjhhNTM3IHJlbGVhc2UyNi1tYWludAorODAyMzggZWY3M2FjNzFlMjk1MDJmNmRjZWZmM2EzNjk0MTdiOTRkYmU1ZWFhNCBsZWdhY3ktdHJ1bmsKKzgwMjM5IGUwZmNhM2U3Y2ViOTRiZGM1NzQxMWY2NzEzOWU3NTlhMzkxZWE2YjEgcmVsZWFzZTI2LW1haW50Cis4MDI0MCA2MjAzZjQ3MTY1ODVmMmVlNThjZmNmNTU3Y2I4YzZlOTM5OGM3MTY3IHB5M2sKKzgwMjQxIDhkMDhmZGM5N2FhNGM1MzNjZWZhOGIwODRkZDY4YzYzZDhlYzE1ZTUgcmVsZWFzZTMxLW1haW50Cis4MDI0MiBkYzczZWUyYThiOWVjNmIwYmI1NzhhMGUwNjhkMWJlOWZkMTdkMzIzIGxlZ2FjeS10cnVuaworODAyNDMgNzI1YmU4Zjk0MThiODNlNDI0ZTNjYzQ1M2NmY2ViOTgwZWI1ZGIwOCBsZWdhY3ktdHJ1bmsKKzgwMjQ0IDgyZGUwYjQ4OGYyZGQ3MzFjZDYwMDU1OTAyYjdlNWNhZDZkNmRlODUgcHkzaworODAyNDUgYjAxODMxOWE2MTViMzUyMzBjNmVjNTA0YjllOTQyODQyOWU0NzIzNiByZWxlYXNlMzEtbWFpbnQKKzgwMjQ2IGYyNzMyY2NjMTJiNDcwZDQ5NGYyYThlZDkxNTc0N2ZmMjZiZGIyYTEgcHkzaworODAyNDcgMzk3Mzg5ODA1NmI2MGZjYjZhODAyMjFjZTI0YWZmNzBmNDVlM2EwMCByZWxlYXNlMzEtbWFpbnQKKzgwMjQ4IDc2MzgyMjNmMmUwMmU5NTEyMzc4YWY4ODBhNjZkMDUwNDU5YWRjYzkgcHkzaworODAyNDkgOGRlMjg1Y2FkYjI0MDMzMDVkMmFhYWNiMDFhYTYzODFmMTExNDIxYiByZWxlYXNlMzEtbWFpbnQKKzgwMjUwIGFlMjc4MTkyMmE2ZGU1NzE1Zjk1MjRlNzhiYzBmYmYwMmZjZTc2ZDMgcmVsZWFzZTMxLW1haW50Cis4MDI1MSBjZWEzOGVmNjA3MDBlZjFiOGFmN2QyYmNkYjYwYTllZTNmNjgyMDc1IHB5M2sKKzgwMjUyIDgyNzYzYjIwMGE3OTM3OTU2MDhmODcwNzg3OTE1YjRkNDdmODFmMmYgcmVsZWFzZTMxLW1haW50Cis4MDI1MyBkYTg3MDQ5OTMwMDE2ZmI1MjA3NTQ0NjYzMGIzOTg5N2MxMzgwZDlmIHB5M2sKKzgwMjU0IGJiOGZlNzlkYzVjYjM1MmZhNGFhMzBhODQ3YzNlYzUyYjNiMzUxMDYgcmVsZWFzZTI2LW1haW50Cis4MDI1NSA3ZDM0MzJiMDdlYTFhNjJkZmE4MjdjMzM1MDg0MzQ5OWVlMGQyZjE4IHJlbGVhc2UzMS1tYWludAorODAyNTYgYmUxMGY0ZmFhZjEyY2ExNDBiNmYxZjg5M2IyOWRiM2JmOGNkNGI2NiBweTNrCis4MDI1NyBjMmZkZGRiMmI0YTU1YWZmZjVhMjM1ZGRhMTIyMDA2ZWNjMTRiNzMwIHJlbGVhc2UzMS1tYWludAorODAyNTggNDBhM2E2MzNjNTY0ODRmZDY4ZjE1MGRjN2EwZDExYzM4NGNmZGJkMyByZWxlYXNlMjYtbWFpbnQKKzgwMjU5IDM4NzQyOGZhNjlmY2RiMGU1MmQwMTFlYjMyZjk1OGZhMTIxZWNjNTIgcHkzaworODAyNjAgZTc3M2UyNGIxNGU2YmZlNzU1ZjMxZjUzMzhhM2ViZmVmZjVkZWZiMCByZWxlYXNlMzEtbWFpbnQKKzgwMjYxIDdjZmE3OTc1YWIwZTE5ZTAyMzYzY2UwNTliZjFiYTQ3MDUyZWZkYTQgcHkzaworODAyNjIgN2NhMTI3MmY0M2EzNGFlM2FhYzM4Mjk2YTk2YWEyMDczODhkNDFjNiByZWxlYXNlMzEtbWFpbnQKKzgwMjYzIDczYTYxNjVkMDAyYmQ0NjQ0ZTY5MzUyYmU3NDJkNWZkNGQzYjM0ODcgcHkzaworODAyNjQgZDA3MTIwMWYyNjEyZDY3ZWYzMDcyODBjYzIzNjc2ZDNkMjQ4ZTA4MiByZWxlYXNlMzEtbWFpbnQKKzgwMjY1IDZlY2E3ZmJkNTM5ZWRmMTBmYmIwOTNjZjcyNGNiNDUwMThjYmQ1MWQgbGVnYWN5LXRydW5rCis4MDI2NiBhZTI3MmQyMTJhOWRhY2FmZDZkOTE0ZDQ5M2ZlMGYwNmRlY2Q4YzMwIHB5M2sKKzgwMjY3IDRlNWM2YjI5ZDkyOTVmZTcxOTdmMDE5Y2JjZTdjMzI1NjEzNWRlZTkgcmVsZWFzZTI2LW1haW50Cis4MDI2OSAxZmQyNzA5ZWQzZmRiOWUwMTMxNzQyNzQ5OGNmNTY0NTIyYzBhZmY1IHJlbGVhc2UzMS1tYWludAorODAyNzAgZjg4ZWExYjRmZGJlN2M5Njk5OGFiMmY3ODc5YTMyNjEwNWJmNjhiMyBsZWdhY3ktdHJ1bmsKKzgwMjcxIGUzMTdlODRlOGExYWExYTlkYjk4ZDQyMzQxYTBhMjIzYWE0ZTMwMzEgcmVsZWFzZTI2LW1haW50Cis4MDI3MiAwNzAzNWRlMDVkNGJkNGZjYjAyODI1MmMxMmIyMGU0MzFiMTc1NGMwIHB5M2sKKzgwMjczIDBmMDFiZDYyMDg0ZWZhNmE1ZWUxYThhNDE1NTBlZTZjNjczOWY3NjUgcHkzaworODAyNzQgNmRhNzE3YmZlNDI1Nzg0ZWVmMTRmNmI1M2Y1Y2UxODk4YTc2NTFkMCBsZWdhY3ktdHJ1bmsKKzgwMjc1IDUwNmZhZGRjOGE5ZTcyZjg5M2JmNWNkYmJjZjQyZTg3ODU3ZDQ4MzIgcHkzaworODAyNzYgNTdkMDk3OTUwOTY4NzM2YjQ0OTRmYzI0Y2E1YWQ3MjNjNzE3M2IzMiBweTNrCis4MDI3NyA3YzhlYjJiYTkxMjk4YjllZjY4MDQyOTM5Zjc0ZGE1NTNlNDkxMDdkIGxlZ2FjeS10cnVuaworODAyNzggZDFkMjA5ZjJjODAzOWQ4N2MwNmRlMGU1OTE4MTAxMWU4NzYyYWZmZiBweTNrCis4MDI3OSBkN2ZlZmZhNzhmYTAxNjc0OTVmZGI1ZjQ4MDIwNmU2ZjhmNjExNTAwIGxlZ2FjeS10cnVuaworODAyODAgZDA5Zjg0MjU4ZTUyMmRkZjdjMjcxZWM0OGQ1M2RlZmU0YzUzOTJiZSBweTNrCis4MDI4MSBhMjJmMmFlODU2NDUyNTE4NWU0OGZmZGUyMzAzYjI5M2M0NmI2MDA5IHJlbGVhc2UyNi1tYWludAorODAyODIgNGRkY2E3ZmQzNjM5MTkwMDhlZTU2YmRmODVkNjlmYTJlMzgyN2MyZSBsZWdhY3ktdHJ1bmsKKzgwMjg2IGJkNDVlMDExMDk5MDE0ZWFlYmE2YTM3YmRjYzQ4ZGM2N2E2ZjRmNmUgcHkzaworODAyODcgMjU5ZWZlNWI5NjFiMWRjZmZkNDM0MWRhZDFhOGJmMDRmYzg5N2NjOSByZWxlYXNlMzEtbWFpbnQKKzgwMjg4IDg2ZDA4Y2I2YmE1YzFhNGRmMzcxNDEzNTIyNWUyZDYzYzQ4OTlhZmYgbGVnYWN5LXRydW5rCis4MDI4OSAxOWE5YTQ1N2E0N2FjNjAzMTU5ZDE2M2E0NDNjYzJmMDM0OTgxZWY5IHB5M2sKKzgwMjkwIDhiMzZmNzE3NTIzODZiOWQ2NzVmZDUxZGMyODhkOGYxMGUyZGNiOTIgcHkzaworODAyOTEgYWYyN2M1YTlmZWI4MTQ4NmNlNTEwYzExYzJiNmFkMDgwNWRkOWVmOCBweTNrCis4MDI5MiA4YjM0NDVkZmE3MThlY2YxN2U5ODYzOGI4YzkwNWIwMWIzNTVmNzEyIHJlbGVhc2UzMS1tYWludAorODAyOTMgZjM0ZmIxNTEwY2JjNTA1NTZiZjljM2I5OWI3Yzk1MGRlMTlmZWRkOCBweTNrCis4MDI5NCBjY2UwYTViMjAxNWUyNDllMTcyOTFiYjFiZGJlNGU1ZTE0YmQ1MGE3IHJlbGVhc2UzMS1tYWludAorODAyOTUgZjQwNDdiNWEwZjU0YmQ1M2Y1NThkYWJjZjFmODBjMjg4YWRmNTk0YSByZWxlYXNlMjYtbWFpbnQKKzgwMjk2IDQ3M2EwZjY3ODgwNjEyNjJhM2MxOTg4YTU3OWUxYTg3OTIyNGVmMTggcHkzaworODAyOTcgZDk1YWNlNTI4ZDY1NzI2ZTI2MjFlMTQ1MjU4NGExNDhkODY4ODk0YyByZWxlYXNlMzEtbWFpbnQKKzgwMjk4IGY1YWZhZGI3NDVkYTFhMzFkMzBmYzk3OWY0OWNhY2MzMTM2Mjg3ZmMgbGVnYWN5LXRydW5rCis4MDI5OSAxYjQzZWUxZWUzZDg4NTI1ZDFhYjhiYmM3MGI5ODUzYTdhYTdiZDlmIHB5M2sKKzgwMzAwIGEyYTRkOWRjNzg4NGY0ZWY0OWE5NjZhZDBlODdkNmVhY2JkNDFiMGUgcHkzaworODAzMDEgNzAzOWM2MDQ0YWI2NTM0ZmFiMTc1ZmRkYWY0Yzk2ZmY5ODllMzQyYyBsZWdhY3ktdHJ1bmsKKzgwMzAyIDliOTJlNzY3MTEzNTg1NzE4YmRiZDcwNDViZTc1YzA1M2IxYTViNmQgcHkzaworODAzMDMgOGUyYTc4ODQ5MjlkYTJkMWY3OTYyNTY3ZGQ5MTdhODE3MjAxYTg3YiBweTNrCis4MDMwNCA5NWNjYWZjMTQ0NzU4MTYxNWM3YTdmNjJmYjc5ZjQ1ZTY5YmY1YjVkIHB5M2stY2RlY2ltYWwKKzgwMzA1IDhhOTFjYjM2ZTA5NGNjYzg5N2EzODg3NWJhMzM0MDdhYzc4ZTJkZDQgcHkzay1jZGVjaW1hbAorODAzMDYgMmRiMDZmYWU4YzJlYWQ2NTRmYjlmNjZkNmUwYTEwMDllMGYyODFhNiBsZWdhY3ktdHJ1bmsKKzgwMzA3IDk0MjU0MjMxYWE2YWY5OTQ3ZjU4MWZlYWEzMjMwMzMwMzJlNTFlODEgcmVsZWFzZTI2LW1haW50Cis4MDMwOCA4MTlkODEzNDc1MjI4ZTcyYzA3NDJkYzVmYWI3NzkwMGE1ZGZhZmJhIHJlbGVhc2UyNi1tYWludAorODAzMDkgYzI5MDViMGVmMWQyNGQ0Y2Q5ZTdlMzcxYzA4M2ViOWFjNWI3NGJjOSBweTNrCis4MDMxMCAwYTdhMjViYmIzNGY3MmI0ZWI2Y2IwMzY1NzQ0YWYzNWRiZjRjOGI2IHJlbGVhc2UzMS1tYWludAorODAzMTEgNmQ4MzZiMTBlMzcwOTg2ZTkwMTgwOGYzN2U1N2E3MjczYTA1ODYwZSBweTNrCis4MDMxMiBhNTU4MjdiMGVjM2JiOTUzNDUzNzNiZTYzNmJkYTQ5NDRiNGVmYmYzIHB5M2sKKzgwMzE0IGM5MWZiNTA2ZjA4ZGYwOTQ1Y2JmOThjOTVhZWMyOTkxMDU4ZTFiNWMgbGVnYWN5LXRydW5rCis4MDMxNSBjMWQ4YTAwNTVmZGE2ZTQwYTNmNmY3MjNlMGQ3NjBlYmU0MDE1NTVjIGxlZ2FjeS10cnVuaworODAzMTYgOWQ4NmYwNzAxZDljOTg4N2Y2Njc4YzlhZTAwYTY5ZDcyNGJlODk1ZCByZWxlYXNlMjYtbWFpbnQKKzgwMzE3IGYzNmEwZWJlYjE2MzkxNTdmZDc5ZmY3NmJiYjg0N2U5NWE4YTBjZjAgcHkzaworODAzMTggYTBiOGFmMWJlNTYwYmRhZDYwNzVlYzRlYTAzY2UzZjIwMTc5MTZjZCByZWxlYXNlMzEtbWFpbnQKKzgwMzIwIDliYTAzNzgzZWNlM2NiNDVkYWRmYzRlYzI3YmI4YzM3OGRhZGQwOGQgbGVnYWN5LXRydW5rCis4MDMyMSA4ZTQyNDc0MTE3NTQyNDJjMzY0MWZlZmExMjc5NTRlNWQ3NjU2NDU1IHB5M2sKKzgwMzIyIDhhNWIyZDA2Mjk4ZDdmNzBlYjQzYmU4YjgyMjc5MzU2OWJjYmU0YWMgbGVnYWN5LXRydW5rCis4MDMyMyBhM2NlMjc1YmYwOTU3M2I2MjE1NGVkMTE2YmZlY2I3ODJlNDE2ZTU3IHB5M2sKKzgwMzI0IDg4OGM3NWExYmU1NTIxOWJmMzcwMzhjNTEyZTYyZmFkNjlmN2I1MjAgcHkzaworODAzMjUgNzY4Y2UxMDc5OWYyZDg1M2M0ZTRmMDE2MTY3MWJjN2Y3ODBjZGY2YSBsZWdhY3ktdHJ1bmsKKzgwMzI2IDkyYTYzM2EzMGFjYjZjYTEyNTI2N2MyODdmY2UyZTNjY2Q0YmQ1ZmUgcHkzaworODAzMjcgNjdiODFjMzI4NGY5YjA4NWYyZjY2YTIyYzhkMTBjOGI3YjUyNDA0OSBweTNrCis4MDMyOCAxYzEwNWIzNzA3NDYwNTMwNTJlMDI0OTE1Y2IwMDRjMWRhZWM5MzIzIHB5M2sKKzgwMzI5IGUwOTFkOTdkNTBkNTgzMDRkYmU0NTAyNDljMzc3ZDY5ZWMwMGE5OGIgcHkzaworODAzMzAgMDczNzlmZTc1YzU3MDdmZGYwNmQ2NWVmM2U0ODU1NDY2MmMyY2UwMCByZWxlYXNlMjYtbWFpbnQKKzgwMzMxIDU3YWEzMTAxMmNhNTFjYzNkYTgzNWNiODllZjYzZDQxM2Y3MWZiYTAgcHkzaworODAzMzIgOTI2Njk5NjVjOTk3MTk0YzJjZDk5ZDExYjVjNjNjZDBlOTM0YWJiMCByZWxlYXNlMzEtbWFpbnQKKzgwMzMzIGIxOWM2MTZkNWI0YWQ4ZWYxMDgzMjg4MzQyY2U5YjdjZTViYThkOTIgcHkzaworODAzMzQgN2Q0OWYwMjFjODQyMDkzYjBjZDgyZjFkNDU5NmE4ZTgwY2ExZDc3YSBweTNrCis4MDMzNSA5ZjRmNjcwYjE0OGNiYTYxNjRjYjUwYWMwNDQwMzJlZjZmZGFlZGZhIHB5M2sKKzgwMzM2IDJiMDlkODIxYmNlMWU4OTdiOWY2MDk3NjczOTQzMTM2MDgzYTQ3MjMgbGVnYWN5LXRydW5rCis4MDMzNyBjYWQ0ZTA5ZjAyYTEzMzA3ZGIwM2Q4OTkxNjA4NzViMTkyYjhiOTU1IHB5M2sKKzgwMzM4IDRiMDFlODBkNmMxZmY2OGZmZDYxY2RkNTQ4NDczYzQ2YWY0NzYxYTkgcmVsZWFzZTI2LW1haW50Cis4MDMzOSBiMzg3NWQxYjM4NDczOTMzZTgwYjAyNDg3YTgzNWJhOGJjNjgzMTIwIHJlbGVhc2UzMS1tYWludAorODAzNDAgMTg2YmMzYjgwZjU3MTIyOWFkNTNlZWYwOTkwNDI0MjViNmU3ZDNmMiByZWxlYXNlMjYtbWFpbnQKKzgwMzQxIDk0YjY0OTQwZGFjNDY0YzdjM2M2MzE5ODRlMmExZWI0ZTAxYjZlODQgcmVsZWFzZTMxLW1haW50Cis4MDM0MiA1NGYxNTAyMDI4OGE0NmM2ZmU2MzA4NmMzMzkwNDc3NTRmZjIwNmQ0IHB5M2sKKzgwMzQzIDIzNDA5NTk1MTM3MDcxY2FkM2U3MWRiMzNiY2U4Nzc5ZjA3YmJlYzMgcHkzaworODAzNDQgNWM2MjVhMDQ4ZjlhNTZiYjNiMjk2YzQ2YzFmNWIwMDhmMWE3OTllYSBweTNrLWNkZWNpbWFsCis4MDM0NiAxMDRlOGM4MDFlNWQzODE5YzRlMWM4NzhkZmEyZTlhZmY1NTJiZjYxIHB5M2sKKzgwMzQ3IGM0NDk4MTdmNGI1NGRkNDk0ZGQzYzRhMzU1M2ZjOWFiMWFiMDZlNTEgcmVsZWFzZTMxLW1haW50Cis4MDM0OCA2YjdlMjAwMDBmOTc2Njc3YTY3NWI5MGQzMzZmYjExOGRjZTZhMTIxIHB5M2stY2RlY2ltYWwKKzgwMzQ5IDNmMjc3M2FlODQ0OGFkMjI5MTc0ZTM5YWQzM2YzZjdjOWQ1OWQ5YWQgcHkzaworODAzNTAgNTQ3ODAwNDJkMWU3ZDc0MzU2N2U3N2I2YmRjMjgzNTJmMGJjZTc2YSBsZWdhY3ktdHJ1bmsKKzgwMzUxIDhjMDUxN2Y1MGM0ZTk0OTIwMzUwZThkYWM4ZjVhNTJjNmIyNWRmOGEgcmVsZWFzZTMxLW1haW50Cis4MDM1MiBkZTM5NDUxMDFhNmUwMGI2MWM1MTkxODFmNGEwN2EwNzlkNDNiOTI0IHJlbGVhc2UyNi1tYWludAorODAzNTMgN2ZjMjRiNGU1ZmVkYzhlNGI4MDQ2MzJjMjIyYjEyM2FiZWU4OTAzZiBweTNrCis4MDM1NCA4ODk5ZjQwODA0M2M0Nzc1NTAxMmNiMmEyZTZjOTY0Y2FhYjQzMmUwIHJlbGVhc2UzMS1tYWludAorODAzNTUgM2Q3MzdmMmFiOTAxNDBkMDA4MzljZjQxMDljZWExOGNiOWJjZjQwNSBsZWdhY3ktdHJ1bmsKKzgwMzU2IDJjM2Q3YmQ3MTYzNjQ4YTA5MzBiOGIxOTU2NDhmNzUwYTdlZDljNDcgcHkzay1jZGVjaW1hbAorODAzNTcgNzM2Y2Y3NTFmZjRmNWE1NzNlMmMxMTNkYzJlMzVkMTNhOGI0MDZkMSBsZWdhY3ktdHJ1bmsKKzgwMzU4IDBlNjRiYTMyMjkyYmE1N2YyYjJhZThjZWY1NGZlNzZmM2QzMjA5YTYgcmVsZWFzZTI2LW1haW50Cis4MDM1OSBiM2QyMGQ0NDY2Mzg5ODJlNWY2ODNlMTBkZGYwMzQ2ZjkyMGQ4YzY4IHB5M2sKKzgwMzYwIGRiNzE2YTc0YjUxN2ZjNWQ5MmYyNWMzMDRmMjExZjkwZTcyN2Y4MTkgcmVsZWFzZTMxLW1haW50Cis4MDM2MSBkZDE4Y2NjYjU1YjA4ZDllOTljYjNiMGY4M2QxYzc4NzIyMDg2ZTkyIHB5M2sKKzgwMzYyIDlkYzg2NGVmNjQyNWQ1ZWU4MmY4NDI2OWI4Yzc5YzQ2MmQxYmFjNjYgbGVnYWN5LXRydW5rCis4MDM2MyA5MTdkNmE3NGZkNGYzYTQ4NGI0MTliMjk2MjFkNTE4N2YzNmY5ZDE1IHJlbGVhc2UzMS1tYWludAorODAzNjQgODdjOThmYjc3OGI0ZmQwMmNmY2RlYWEwMmIxYzVmM2I5OGU1NTJmNCBweTNrCis4MDM2NSA1YjcyNmM2MDFlMjIxNjFhNmEwY2I2M2Q3ODU0ZWMyZDUzOGRjOTJlIHJlbGVhc2UyNi1tYWludAorODAzNjYgM2E4YTYxODRmNDBhNTRlZDdlZDk4ZDkwYThjYzhmYTRlM2MzMTg5NyBweTNrCis4MDM2NyAyNjkwMmQ5YmUwMzNjNmMwMmE4OTU3NGQwNzdiYTQ3MWRmOWM0ZDdjIHJlbGVhc2UzMS1tYWludAorODAzNjggYzAxM2E3MTgyOWJmMjNmYzc3MTNlYjg5YWYxNjliY2MxYWM3ZmY1NiBweTNrCis4MDM2OSA0YWQ5MDQ2MDI0NjFiYTBjYzkxNDQ3YTFlM2RhNzFhMjA4N2U3YjdhIHB5M2sKKzgwMzcwIDU5YWQyNDRmZTI5NDI5MDA1Mjc5MDVlMjFlMzZjOTY1NTQ0MDkxNzEgcHkzaworODAzNzEgODdkOTg4MjM1YzUxOGU3MmZlYzFmYThhYTA2MWMzMWNiYmY2YWIwMyByZWxlYXNlMzEtbWFpbnQKKzgwMzcyIDMxZDI4ZjA0YjgyMzU1OTZiZGIyNzRjN2NiY2IxNzc2MTVlY2Q1NGMgcmVsZWFzZTMxLW1haW50Cis4MDM3MyA4OGM3ZGQzZDc1NzliNmNiOGI4ZmJhNjI1MjFjYzU2ZTM3MDUzNTFiIHB5M2stY2RlY2ltYWwKKzgwMzc0IDY2YzlhOTU5YzA3ZWZlMTYwNGFkZjFiYWE2NTM5ODBiZWI3NDIyMTcgbGVnYWN5LXRydW5rCis4MDM3NSBiNjZmYTc3NzBiYmRmY2ZjZGNiMTczMTg4OTE3YjE1ODM4ODg5OGE4IGxlZ2FjeS10cnVuaworODAzNzYgOTYxOTBiNWIzZjZkYjg4ZWUzNGM0MWY3NGEwODU1Mzc1MjcyOGQwOSBweTNrLWNkZWNpbWFsCis4MDM3NyA1ODk2M2E3NjU0NzFkN2YxOGZhM2M2MzBiNjU2OTg2ZDJlOWZjNjZmIGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODAzNzggZjYzMmEzODYxZDEyNTViNmE0MDMzYmI3Mjk0N2JmYzc1NDg3YjA3NiByZWxlYXNlMjYtbWFpbnQKKzgwMzc5IGI0NWRkYTBiNTM4ZmFhYmUxZjU1NGY4YjcyZjYyNDBjNTM5MDhlYWMgcHkzaworODAzODAgNGI3ZjNhZTIyYzhmZGY4ZjkzMjMwZmUwODEzMjdkNzI1YjJhNGQ0MyByZWxlYXNlMzEtbWFpbnQKKzgwMzgxIGM0YjUzNDMzNzM1YTJmODg1ZjdjZGIzZTgxYmRmNWUyNTZmNGNlMDQgcmVsZWFzZTMxLW1haW50Cis4MDM4MiBkMmZhZDQyMTBkZDVmYjViNDI4ODhkNGNiN2ViYzZhZjg5MGJmYWZiIHB5M2sKKzgwMzgzIDE0OWJhZGY3M2JjYWQxNjMyOGUxMTY3YzE5ZTEwOTVlYTM4ZDFjMDAgcmVsZWFzZTMxLW1haW50Cis4MDM4NCAyZmU0NzM4ZWViMjM2MTllOThjZThmMDAwMTRlMjRiOWVkZGUyN2FiIHB5M2sKKzgwMzg1IGIwNWQwMjViYzBkZjZhYzBiYzc1YTJlMGJlZDgxMTNlMzVkYWJjNjIgcmVsZWFzZTMxLW1haW50Cis4MDM4NiBiYTEyZjkyMTM0YmE0OTE5NWUwMWU1NDZmOWE3ZWM2MWJlMjJhYjY1IGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODAzODggYThlMDkzYTI0MDk0OTI0OWIxNGQwYzEzOTNhMzA2MmJmOTkwM2JhZCBsZWdhY3ktdHJ1bmsKKzgwMzg5IGVkYzdmMzMwNTEwNTBlNGYzNzZhODhiMWYxZDEyN2JiYzcxYjM3NTQgcmVsZWFzZTI2LW1haW50Cis4MDM5MCA0NzM4MDFhZTllOGVkNzg5MzA1M2FhMWQ0MzE1ZTI1ZGJiMDU4NGYzIHB5M2sKKzgwMzkxIDU0NTI2ZWVjOGJjNmU2NDcwNjYxZThiY2Q4YjI1NmQ4OTJkYjJmMmUgcmVsZWFzZTMxLW1haW50Cis4MDM5MiBjOWEzMmVkZDJiYTdjODk0MjYxNTZhZTU4MjY1NDZjMWFjZDI0ODA0IGxlZ2FjeS10cnVuaworODAzOTMgOGRkMTI0MTIzODAxMGM4NTA2ZGQ3MWQwMjkyODk1ODU2ZjIxZTRkOCBweTNrLWppdAorODAzOTQgMWQxOGQ3M2YyOWI1M2QxNzlhNjUwOWU5ZGYxNjkxMzE2ZDMwNTU2MSBweTNrCis4MDM5NSA5MjI4YzZhYzZjYzY3OGUzYjg2ZTYyOTczNzk5OWFjNDRjOTBlYWJlIHB5M2stY2RlY2ltYWwKKzgwMzk2IDVhNTI0YzZkNGU4MzUyMzQ2OTk0MTU5ODY0OTE4OWVmYjQ0NmExZjkgbGVnYWN5LXRydW5rCis4MDM5NyAzZGQ2MDYzNTNhYjQzYjk2MDNjMTUwZmViMWVlZGJmZmM2MjhjYTZkIGxlZ2FjeS10cnVuaworODAzOTggMDUyZDQ4NTE1Yzc2MmZlNzdjMzM3ZDQ4ODcyMzcxM2Q0MjU1YmJmYiBweTNrLWNkZWNpbWFsCis4MDM5OSBiNGVkMTcyN2RmNzRjYzBjYzNjMGExYzI2NTg4OTc3YTkwZjZmM2NlIHB5M2stY2RlY2ltYWwKKzgwNDAxIDU2Mjk2Nzg4MWRjNTI1ZGViYzJhMDFiZmE0N2QzY2UzY2YwZGJlYjMgcHkzaworODA0MDIgZTY1NjRkYTAxNzE4YTViMjVmZDQ5NzE5ZWZjOGY3Mjg2MmJmYzIwMyBweTNrCis4MDQwMyBkMmM1MTJkMGVjYjYyYTM0OGMyZTliMjM2NzMzZGNjYWUyM2NlODJmIHJlbGVhc2UzMS1tYWludAorODA0MDQgODZmYWRhZWJjZjY2ZDNhMDEwNzcwMjY5ZjNkMmFhOGRhYmRiMWZmNiBweTNrCis4MDQwNSBjNmI0ZjRmMmI5YThiNzA0MDZiN2UwOTM0ODVjNTc1NWYxZGVlNzRlIHJlbGVhc2UzMS1tYWludAorODA0MDggMjI1ODI1MGMxZmJiM2U3YzE1ZjJiMzU1Nzk1MjdjZmQyYWE5ODMyZSBweTNrCis4MDQwOSBkNDI2YmJmZDViZDc5MmViOTE4M2Y1M2I3Mzg3NDQ3ZGE3ZTYzMzY2IHB5M2sKKzgwNDEwIGZmZjgxZDcyNjI4ZTNmZmExMGI1Zjg0MDJlNWIwMDFjMmZjM2I5YjEgcmVsZWFzZTMxLW1haW50Cis4MDQxMSBlNzYwNmMxNTQxZjhiNDlmMjBiYTA5NThlZWMwM2I3ZTA2MzI0NGU5IGxlZ2FjeS10cnVuaworODA0MTIgYTA1OWVhOTY2YjhjZmQxNTc4ZjJlMzRlMTEwMzUwYjgxM2I2M2I3MyBsZWdhY3ktdHJ1bmsKKzgwNDEzIDg0MjhlYWEyZDNhZDEwMWNhM2IyNGZjNWU0ZmY2YjFiMjIwZGU0MWYgcHkzaworODA0MTQgODFlZjFlODQ1MmZiMDU5ZDkxNWFiNzUxYWQ1MDUzYTllZTMzOTNlYSByZWxlYXNlMzEtbWFpbnQKKzgwNDE1IDYxMmU4NmFiMDVmMTMxYjZhMDAyOTc4OGE3M2Q2OTVmOTgxMDUwY2EgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDQxNiA1MmNkN2UwNDBmZWYwZDE2MmI4NzcwN2I0YWZiN2JlOTRkZTdlMzU2IHB5M2sKKzgwNDE3IDYxMGE4ZWZhODhkYjY1NjFiMzc4YjcyMWYzZDdkZjljNzhkN2VmNzkgcmVsZWFzZTMxLW1haW50Cis4MDQxOSAwZWMxNmQ4MzE5OTA1ODRmYjMyN2UwYTg4NTljODI0NmMwMzc0NzJlIHJlbGVhc2UyNi1tYWludAorODA0MjAgZmM5Nzc4NGU1Y2MyMWYyOWU1NjZiNjFjYjEzMGM3ODdjYjE1MGU3MiByZWxlYXNlMzEtbWFpbnQKKzgwNDIxIGRjOGM4ZDU0NTA0ZTE4NDM1NzM4MGFjZjE1ZWM1ODdhMzFhYjJjYzAgcHkzaworODA0MjIgNjdhNjA0ODI5Yzk3MGM3YmI2MWFhNDk4NDIxMmE0MTY1ZmJkZDQ4YiByZWxlYXNlMzEtbWFpbnQKKzgwNDIzIDJjMzFkYWM2OTRmZjA0M2M4YTdjOGNlNTEzNzA0NTExZTAyZjc4OWYgbGVnYWN5LXRydW5rCis4MDQyNCBlNzlhNmM4MDI5MzQxODlmNjlhNzczZmJiNDM1ZDJjZGFmNWUyNTNmIHB5M2sKKzgwNDI1IDc0ZTQ5ZmI1YmExMmIyZTNhYzM5YjhlYjQ2ODljNDIzMWZkY2M1N2YgcmVsZWFzZTI2LW1haW50Cis4MDQyNiA4MWFhMDAyODRiZDIxMTkwMGNlZjBjOTA2OWY2NTFmNzI1ZjViNGJhIHB5M2sKKzgwNDI3IDU0ZTVhYjI5YjMwYmZmNDM2MGYyYmY5NzViOTEwNzRmZjNlNTYwYWQgcmVsZWFzZTMxLW1haW50Cis4MDQyOCBkN2M3ODNlZjQ1NDg2ZmViODQ3ODkwYjQ3NjdhNDU0YTYyYzg0YzViIGxlZ2FjeS10cnVuaworODA0MjkgNzY5MTg5OWUxODVmMjc3MTM2MGU2ZjY3ZGJjNmU5OGM3OTAwMzA4YiBweTNrCis4MDQzMCA5NWM1ZTA5NGIzODA2NGQ1NGUzY2VlNjI0NDkxNjBkN2IwYjllMTBmIHJlbGVhc2UzMS1tYWludAorODA0MzEgMDY4YTJlNzE1N2FjZWNiZDZjMzE5MmIyMDhhZDRjYjBmYzE3YWM5YiByZWxlYXNlMjYtbWFpbnQKKzgwNDMyIGNhMGNiYWM3Yjg5ODFjZGYwYWEzMTFhYzZlOTg4ZGQ1ZTNiN2ZkMDggbGVnYWN5LXRydW5rCis4MDQzMyA1ODdkZjBkNzQ3ODUzM2E4ZDA5ZmQ4YmNkMDU1MzNiOWRhZjMwNGE1IGxlZ2FjeS10cnVuaworODA0MzQgNjcyYWRmYzVkYjQ3OTliYmM3NDgzNjViZDgyNDVjZjBmMWQ0MzYwZSBsZWdhY3ktdHJ1bmsKKzgwNDM1IDY1ZDZjN2JjNWQ1YTQ2NDdiN2I2YzBjNDQ2YTNkMDYyODQzM2FjMDcgcmVsZWFzZTI2LW1haW50Cis4MDQzNiA4MDgxMGQ4MjMxOGZkMDczYTQ5ZjIwNDYwODFhOGZmODljMDY0YjZlIHB5M2sKKzgwNDM3IGQ4MWVmZjExOGQ4MThlZjYxZjgyM2Q5YWM5NjVhY2E4MzMwMjg4MDkgcmVsZWFzZTMxLW1haW50Cis4MDQzOCA1ZTY5NTE5YzRlMzdkYjJlMThiNjA0NDQ2NzY2NjYzYTk1ODUwZTU1IHJlbGVhc2UyNi1tYWludAorODA0MzkgM2I4MzQxZDA1MjE2ZWM4OGY5NThhNmQ2Y2I4Nzc1OWRhZjBlNWJjNyBsZWdhY3ktdHJ1bmsKKzgwNDQwIDJhNzY4ZWEwNjAyMzBlNWM4NGE4MTRlOGIxOTZiNzg5YWUyNDk3MDAgcmVsZWFzZTI2LW1haW50Cis4MDQ0MSA2NDQ2MWY2OGExMGUwMWFiZmFiMWY1MmQ3MzNjOTI3NWViYmNmODYxIHB5M2sKKzgwNDQyIDkxZjkxNjhhYWRkMGUzM2Y0ODJiYzk1M2I2MWI1M2YzOTFjMjRhYTMgcmVsZWFzZTMxLW1haW50Cis4MDQ0MyBmNGZlNTNmODY2Mjc1NjUyZWMxODY2MWE5YzNiY2NkMTIyODk4YWVkIGxlZ2FjeS10cnVuaworODA0NDQgZTlkODg4YzA4YmY4YTE2YTY3Y2Q0MWY1ZmM4M2QwYjhlMGU2NzcxNSBweTNrCis4MDQ0NSBjMzlhY2JiNjNlYzNmNTFjOWRjZjNhZTAxOWNhMTczMmI3YzYzNWQwIGxlZ2FjeS10cnVuaworODA0NDYgMjRmZjg3NDBlNDgxMGJjNzYyNWVhOGY2OTcxMmE0OGUwMTE3MTU2NCByZWxlYXNlMjYtbWFpbnQKKzgwNDQ3IDNhOWEyMmQ3YjIyZTgxMjZlYzNjYmU5NTE0MjhjZjA1Mjk5MDA1MTkgcHkzaworODA0NDggN2JkMzg0NzJlYTIxMjI1MTAzZWY0ZjExODdjMjA0OTZjMjkwN2ZjZSByZWxlYXNlMzEtbWFpbnQKKzgwNDQ5IGU0YzFlYmNiNDYwNDhlMTdmY2YzN2E5YTZkYWI4YWJlMmIwMjAyNTAgcHkzaworODA0NTAgNzkxMjhlZmU4YTk5M2ExYzY3YTU1NzEwNzQyYmMwZDZhYjM3MjgzMiBweTNrCis4MDQ1MSBhMDlkN2Y0MTRjZDE1YzE2MjdkNjExMjYzOWFlYTIyZjNlNjVlMDYxIGxlZ2FjeS10cnVuaworODA0NTIgNzZhMDUyZWVkZWU2N2Y0MTk1YzFiZWQyM2Y4YWU4OWU3ODllY2VjOCBsZWdhY3ktdHJ1bmsKKzgwNDUzIGNlNDkxNmNhMDZkZDAzN2NhMTIyMDFlNThiOTM2ZmRkZmQ0MTdhNzIgcmVsZWFzZTI2LW1haW50Cis4MDQ1NCBhNTFhZDhmMDliNmY3ZjE2ZjE0OTEzNDQ1M2M0MzZhNjg1NmM0Y2ZlIHB5M2sKKzgwNDU1IDVlZDM0ZjNmNmMzNTUxYzI1MjViYTkxMjY3OWUzMjU4YzY5ODk4NTUgcmVsZWFzZTMxLW1haW50Cis4MDQ1NiBhOTE5NjExOWQzMzViMmUwYzIxY2YzMTY1YTAwOGUwYWJlZTYwNzc5IHB5M2sKKzgwNDU3IDBmZjhhZGRlNjA5Y2Y5ZTE3N2U4ZDUwYWJiZjAyMWU2YTRmMWM1MTUgcmVsZWFzZTMxLW1haW50Cis4MDQ1OCA2YWZmOWIwYTI4OGQ1ZjQ1NTA0NDIwNmEyNTY4MjFhZTkyNDQwYzQ2IGxlZ2FjeS10cnVuaworODA0NTkgN2UyMjI5ODc3NDU5ZmUzNTIyNTgzY2UyOGY5MjJmZDlkNzY3OTUyOSBweTNrCis4MDQ2MCBkNWVjZTQ4ZTE2MDZkZmVlNjJiMDY5OGU3MmYyMjcwNjAwNDg5MjlmIGxlZ2FjeS10cnVuaworODA0NjEgOTIwZjM0MTA2YzM0NGM2ZjkyZTA3ZTgzNTU5ZDQ1YjU3N2ViZjYwMyBsZWdhY3ktdHJ1bmsKKzgwNDYyIDQ2OTg5Y2NjNjUyOTU5Y2RmZmY3YzFjZTY3ZjkzYmJjY2ZiZjAwNmYgcmVsZWFzZTI2LW1haW50Cis4MDQ2MyAwZjg3YmU2MzMzZGEzNzAwOGZlMTEyYjY3NmFhN2VjNjY4MWNjMmZmIHB5M2sKKzgwNDY0IGQwNTNiYjNkNzg0MmNiYTFmYzQ1MjMwMmM5MzM2MGFhZDdmMzk5ZmUgcmVsZWFzZTMxLW1haW50Cis4MDQ2NSBlYWY1NjJmNTgwN2RlMTkxZDQxMTczYThhNTFiNzUzNjUxYWUxNmYzIGxlZ2FjeS10cnVuaworODA0NjYgMDYzMjJhYmE4NGZhZjU3N2IyMjVlNmVjNzRkZjM2MTE3NTg3ODc0NCBsZWdhY3ktdHJ1bmsKKzgwNDY3IDk4MDhkYjk3OTg1NDExNDkwYTUxNTYwMDY2YWE1YTZjMGZkOWU2MTkgbGVnYWN5LXRydW5rCis4MDQ2OCBiZWJjYzIyNGM3YzJjM2JlNzI5Nzc4OGNmMzQ0NWZlZjIzZjVkODBiIGxlZ2FjeS10cnVuaworODA0NjkgNWUyZDYxNzUxZDk4MDlmMzI1NWFiZDUwNjFhMzVjZmZmMGE0ODFmYSBsZWdhY3ktdHJ1bmsKKzgwNDcwIDAzNjNjNjk3ZTBkYTMwODA4YzgwOTFhYWVhNGYzMWZkMzJhZTFmNTcgbGVnYWN5LXRydW5rCis4MDQ3MSBjMmZmZDIwZDZjZjg5NmU5ZmMwYTY0Y2NjMjBjZTlkZDk3ZGY4OTRhIHJlbGVhc2UyNi1tYWludAorODA0NzIgZWRlMTZhMjc5MmI0Yzg1OTczM2ZlMzdhOTRkODk5ZjcwZjJjMGRlMSBweTNrCis4MDQ3MyAwM2YzMWY3ZTc2Mjc2YWRiOTMyNDQ3OGE1MDNkNTEwNGI0ZTZjMTJhIHJlbGVhc2UzMS1tYWludAorODA0NzQgZDIzZjYyNmE3Mzc5OTFhYTI0OGJiMTUwMGNlNGJlN2ZjODljODhlYSBweTNrCis4MDQ3NSBmZTBjNDdkZDVmODRmMTQwYTY3N2I3YWYwYTk5Njg0NDZlMGIxNWZlIHB5M2sKKzgwNDc2IDZmYjM4NDdkMzllZjM5YTA1Nzg1MmZjMWNjMWEyYjUyZDlmYzQ5MTAgbGVnYWN5LXRydW5rCis4MDQ3NyBjMzZjODM2ZmY0NjUxMjY1Y2UzNGFlYmNlZDdjNjM5MDFiYzhlNmJlIHB5M2sKKzgwNDc4IGI5ZjIxMDJhZDVmMDI2ODVmNmNlNmYzZDRhN2Y0ZDQ0OGIyZjMxMzcgcHkzaworODA0NzkgZWRmZDBlMWI5NzU0ZDdlNWQ1OTIxN2M3NGUwMmY2NWU0NDU4MzA1ZiBweTNrCis4MDQ4MCA1YWMwYWFlMjhmNGMwMjJkZTJhN2JiZmU5ZWRkNTE5M2YxNzg1ODJlIGxlZ2FjeS10cnVuaworODA0ODEgOTZjYTUwY2IyNjEzNTkzYWZiMjNkN2VhODFiMWQ1OWExNTZiZjA4OCBweTNrCis4MDQ4MiBkODA0ZGQ5NTczN2MzYWYzZTFlOGRlNmJjNTdhZjAyNzFlMzI4NTYxIHJlbGVhc2UyNi1tYWludAorODA0ODMgYzFmYjdkNWVlNDM3M2I5NGE5MTFjZDNkYjA4NGQyNGZkMGFkODg5YyBweTNrCis4MDQ4NCA1ZjE5NjIyMjA3OTI4ODA5Y2JiNjQ3Mjc3MzY1MWEwM2QwMmE5NTY2IGxlZ2FjeS10cnVuaworODA0ODUgZTk4MjY2YzUxYTBlMDhlMWFlZGMxMWRlOGQ1ZTg0ZDI1MmI0NzhlZiBweTNrCis4MDQ4NiBlYTQzZjdmNmU4NGNmOTVmN2M5NDU3YmNiYTExZTgzM2JhYmRhNGM0IHJlbGVhc2UyNi1tYWludAorODA0ODcgZjUyM2U0MGRmOWM1NjhmN2JkNzQxY2JmYzZkOTdmMWVlZGYwOWM2NCBweTNrCis4MDQ4OCBjMDIxNDRiMWM5OGNhMGExZjI1NzZiZDRkZThlZmI2Njc4YzY2N2M4IHJlbGVhc2UyNi1tYWludAorODA0ODkgNjU0OGMyMzY3NmE2ODdhYTJkZWNhM2ZmMWZlZGUzYTI4NTU5OTVlNCBweTNrCis4MDQ5MCBlZjBhODk4MWMzNzAzMWMwZDVmNDA4NTdhOTljMmVmOTViZGU1ZjAyIHJlbGVhc2UzMS1tYWludAorODA0OTEgOTE2NTIzMmU2ZDFhZTQ0YzcwM2M2YzcxYzU4NjAwMWUyMzAyY2IwMiByZWxlYXNlMzEtbWFpbnQKKzgwNDkyIDhjNzE3OTEyNTgwMzI0ZTdmZDExMzVhOWI2MjczZTQzNjAwNDlmNGIgbGVnYWN5LXRydW5rCis4MDQ5MyAyYTAzMGMxY2U5NzJkNTg3MDM3MDNhOTZmNjRkODYzNWJhZjZjYmUxIHB5M2sKKzgwNDk0IGI3MTgyNjI0OWZiZTEzYzdhMzRkZmMxZGE0ZTVmMGVmYWY3M2JjOTQgcmVsZWFzZTMxLW1haW50Cis4MDQ5NSBhYTY4NTRhNmY2ZDFkMDg0YWUwYjVmN2Y2MTQ1Yjg0YmRlYzVhMmY0IHJlbGVhc2UzMS1tYWludAorODA0OTYgZDJhNGU5NmI1NGE2Y2ZlNTc5Y2Q0MjUxMzYwYzEyM2ExOGY4OTRlMyBsZWdhY3ktdHJ1bmsKKzgwNDk3IGFiOGZlOTQ3NzMyMzQzZDJlNDc3YmE1NjY1ZTRkZGY0YjNiZDI1Y2UgcHkzaworODA1MDEgZWZkNzA1NTNhMDk4OTIzMmZmMWY2YjQ3YmRmM2I1M2MwMGY1N2M2ZiBweTNrCis4MDUwMiBjMDNhM2M2YTQ1NjI2MGI2ZjhjMDU1ZDlmNDFkMTRhOTVjZDg4ODljIHB5M2sKKzgwNTAzIGQ2M2JiMzVkZTJmMDBhYTM4M2IwZTNhNGI0Yzk5YzIzMTg0OTgyMDEgbGVnYWN5LXRydW5rCis4MDUwNCAwNDhmNmE5MmJkZTNhNmI4ZDc1M2IwYzFhMWM4NDVlOTRhODczMzUxIHJlbGVhc2UyNi1tYWludAorODA1MDUgMTBkYWY2MzRlMjRmNDgyNjk4YWNmNzk0ZTc0NmVkZWQzMzk2NjQ1YyBweTNrCis4MDUwNiBjZjIwNGE3Mzc4M2Q4NWRiYzA0ZGI0YmM4ZTU5YjFlYWU0NTY3YjM3IHJlbGVhc2UzMS1tYWludAorODA1MDcgN2ZjMjExZGYzZDViMjA1MDRhNGRhYjIyZGY5ZjFlNjg1ZTIyOGFjYiBsZWdhY3ktdHJ1bmsKKzgwNTA4IDg2MDA3MzUwNWFjYTMyOWQ0MGJjOWZhMGViZTExNDMwZGFiMDNiOWQgcmVsZWFzZTI2LW1haW50Cis4MDUwOSAzZmU4Y2Y3ODczNTMwMzc0ODRmM2Q2Y2QxMGQ2YjBhOTU2ZmFhNTZkIHB5M2sKKzgwNTEwIGI4NzdkMmQwNGMxNDY3NWIxMjBlODRmZGI0NzE3YmJiMDA2ZDYyNTkgcmVsZWFzZTMxLW1haW50Cis4MDUxMiAzMDkwMzVjMjJkY2RjY2ZiNmJjZGVjNmIwNjI1YWQ1ZjNmYjBmNDgxIGxlZ2FjeS10cnVuaworODA1MTUgM2IyNDRlYjIwZmExM2IxOGYxNTEzYTRhNzAxYmNmZTNmZGYwOTg4MiBweTNrCis4MDUxNiBkNTU5MGE5ODdjYjA2ZTBjMjE0MTM0NzM1Yzk1ODQyM2E2NDRjOWZhIHJlbGVhc2UzMS1tYWludAorODA1MTcgZGQ0NjY0OTQ1NDZkZGUzNzI2YWM1ZDg0ZmMyZDZkZDRkNGRlYTAyOSBweTNrCis4MDUxOCAxMWM5YWRhZWY5NmIwYmMzNjFhZDk1YWM2YzhiZDA3OGM2Mzk1MGI0IHJlbGVhc2UzMS1tYWludAorODA1MTkgMTU3MWYwOWY0YTI3NzVkZDM4NmE2NGUwNDQ2NjIxZWUyMWRmNzNlNyBsZWdhY3ktdHJ1bmsKKzgwNTIwIDc4NGNmYmFhMjI5ZjE2MGNkYjZhMGZmYWU5OTM2ZjZmZDY0MzViZTggcHkzaworODA1MjEgODNiOTMwMzZlYzNkN2M2NWJkYTM5NjdjMzQ0N2M3NzYxMzUxNWU3YSBweTNrCis4MDUyMiAxOGIyZGJiYmM1YjI1MjM3MjVjMDJhOGIxZTAwZGQyZTJmZGViZTdjIGxlZ2FjeS10cnVuaworODA1MjMgYzA3ZDJlNWFjZjY1YzFmMzZhZWQ2ODA0YmViNTE3MTUwOWU0YzAyOCByZWxlYXNlMjYtbWFpbnQKKzgwNTI0IDIyZGU2YzcxY2RiNDE1MjE2ZWRmN2YzZjMzNDhiMWRjMWMxNmI1NTQgcHkzaworODA1MjUgNDZhYWU0MDY3NDJkOWYxNjNmYmNiNGI0YzNkZmMyN2Q1MTA4YTM1MyByZWxlYXNlMzEtbWFpbnQKKzgwNTI2IDcxMjMwMTUwNjczMGQ3NDIxM2YwZDRkNDJkMGM4NTM4NTMzNmVkMDEgbGVnYWN5LXRydW5rCis4MDUyNyA2ZGE5ZWFmYjFkYWFkYmVkYmMwMzBkMTc1Y2NlMGE2YjA0MTQ2MWFlIHJlbGVhc2UyNi1tYWludAorODA1MjggZTI1Yzc4YTgyYTA4M2I4ZmI5OTZlMWU1MThlY2IyNTk2ZTI1ZWYzYyBweTNrCis4MDUyOSBkNDQ3YzYwZmI0ZDg4NmM0Y2Q3NzNlOGFjNTAzMzhmMjQ1YTE1MTA3IGxlZ2FjeS10cnVuaworODA1MzAgMWUxYjIzNTFjZjEyZmI0NTgyYzkzN2VhMmM3ZmU5OThjNGVlOWMzNiByZWxlYXNlMzEtbWFpbnQKKzgwNTMxIGZmZTk5ZjUyMmQ4NjNiY2E5YTQxYmFkOTc2MmZjMmFlNWM0MDQxYzcgcmVsZWFzZTI2LW1haW50Cis4MDUzMiBkNjI3MDhhZTI2YTU1MzZjMGEwNTc3NzUzM2VkMjMzMmFiMDIyZmI0IHB5M2sKKzgwNTMzIGM4Njk0MDhkNGQzZWRkYzE4NDA5NjRmMTdhMjAzN2JkNWJiNGNjNjQgcmVsZWFzZTMxLW1haW50Cis4MDUzNCA2MWFlNjY0ZGU1NmJhMDVhMTc0OTYyNTYwNzZiZjlhOGUwMDIyNzM4IGxlZ2FjeS10cnVuaworODA1MzUgOTY5ZWY1ZWI4MGM0MzUzMjczNzA3NjRiYThkOTAyZDA1ODBlNjk2YSByZWxlYXNlMjYtbWFpbnQKKzgwNTM2IGYxMGEzNzg3OGQ4NDJkMjcyMTlhZWY2ZjFhMTVlNDI0MjExYmE2YzAgcHkzaworODA1MzcgNzExNTJjZTcwMWVhNWQ0MmY4Njc3NWI4ZmE4NWE0OWEyYjAxYWMxNiByZWxlYXNlMzEtbWFpbnQKKzgwNTM4IDVjMzgyYmZjMDE1YTY2NGRiOThlOGZkMTc2NzYyNjA1ZmQ4MmY0NWIgcmVsZWFzZTI2LW1haW50Cis4MDUzOSA2YTkwZGM5NjdmZWQwMGMxMzc2YjgwMWJkMWRiZWQ4MmQ2M2FiYjNlIHJlbGVhc2UzMS1tYWludAorODA1NDAgNDQ4ZWY5MDAwODFjZTJjODg2YzM4NmY4N2M5ZjkzYWNiODUwNGE3ZiBsZWdhY3ktdHJ1bmsKKzgwNTQxIGVlZjRiOTU0ZDY0NDM5MGU0N2ZhOWIyYzI1ZDNjYWM4ZGI3YzRlM2EgcmVsZWFzZTI2LW1haW50Cis4MDU0MiBjYWZlZjc0NTRkZjllY2FlNjljYjFlMzlmNTNhYzNjZjJkNmFiZmNjIHB5M2sKKzgwNTQzIDE2NGIzYWNhZDlkYWNhMTNlMDBmOWQwOWUyYjI4YTdlZTNkMmQ1ZGMgcmVsZWFzZTMxLW1haW50Cis4MDU0NCBhZGMwNzk3YmE5MjEyZjMxZWRkNzE3MmY5ODhjYWJkM2UzOTQ1NzdhIGxlZ2FjeS10cnVuaworODA1NDUgMzY5MWQ3NWIwNjI2Mzg0MTY0ZWQ4MzMyMTI2ODc1NDAyN2I1Y2UzMCBweTNrCis4MDU0NiA2ZWNiM2M4M2ZlODFiZjA1NjIxZDFlZGUzNDQ0OWU3NDJkMzgzOWM4IGxlZ2FjeS10cnVuaworODA1NDcgMTdjYzJmNTMyNTYzMTNhYjlkNTM0OGUwMDJiODhiMTdkZDAxMzFmZCBsZWdhY3ktdHJ1bmsKKzgwNTQ4IGNjYjFkNWVmMDRkNmE5MjJjZGYzYzU4NzljMTU3NDYzMjMxYTdmODkgbGVnYWN5LXRydW5rCis4MDU0OSBhZTZmNTg2NWIzODYwNDFkMWQ4YjBmNGEzNDhhN2QzYjYwZjRmMTM2IGxlZ2FjeS10cnVuaworODA1NTAgMWFiMjQ5NDFjOTk2YWZlOTcwOWVlNDc0Y2IyMWQxMWY4ZWFkNjhkYSBweTNrCis4MDU1MSAzYjY5NzkwNTVmNWFlMTg5NDc1M2I1MTk1NzQ5OGFmM2NhOGEzNWYxIHB5M2sKKzgwNTUyIDZkOWQ4NTQ1ODYxZWVhNGI0ZjkzZTYxMjM4ZWFiYTk0OWMyYTg2NWEgbGVnYWN5LXRydW5rCis4MDU1MyAxMzc5MTY1NDNlZmFlNzg4MjZhNTNmMGQ0MzI5OTIxNzk3NGE1Y2JiIGxlZ2FjeS10cnVuaworODA1NTQgYzdhNTgyMmJmMjk0ODczNjM4ZTI3OTFmZDU0MzMxODYxZDMxMDFhOSBsZWdhY3ktdHJ1bmsKKzgwNTU1IDA3Y2U1YWYzMTdlZTJiM2JlMjk2YzgxZjQxMzY0ZGI5ZmQ3MTE4ZDMgbGVnYWN5LXRydW5rCis4MDU1NiBmYjEwZWYwZWZhMjM1NTJiZTdlZmRiOTMyNzk2MGM2ZTYwZWU1ZDc3IGxlZ2FjeS10cnVuaworODA1NTcgZmQzYWJmODJhYzk2MDVjYTI4YWNjOGEwNTFmZDMzMjNmZTJkMmU4MyBsZWdhY3ktdHJ1bmsKKzgwNTU4IDMxNmI1NzAxN2QwZjI1NzRjMjAwYjlmZDA0NzE4YmNlYWFiMmZmZjYgcmVsZWFzZTI2LW1haW50Cis4MDU1OSA4YzY0Njk2N2JhNmI3ZjM5NDg0MWU2MzA2ZjY3NDU4Y2ZmMzJiOTdlIHB5M2sKKzgwNTYwIDgyNzkyMGM1NDZhZjU4MDRmNjU3Y2IyZDMyY2RmOWEwZDRjOGE5YzkgcmVsZWFzZTMxLW1haW50Cis4MDU2MSA0YTY5ZDMyYTE3YjkwNzZlNzI2MDg3YzcyZDM5MTZjNTQyZDEzMzUyIGxlZ2FjeS10cnVuaworODA1NjIgNDU3MjFiOWNhMjIwNDE0NDU0NWU3OTA1MGM2ZWUwYTllMGFkMGQxMyBweTNrCis4MDU2MyA4MWQ3MDMzZDk1YTM1ZTQzYTgwMTFiZTg3MTM3YzYyNGQ0YTlhYTIxIHJlbGVhc2UyNi1tYWludAorODA1NjQgYjg4YWExM2NlYWYyNTQxYTQ2YWQxNDg3NDk4NzQ1ZmU4ZTNmNjMzNiBsZWdhY3ktdHJ1bmsKKzgwNTY1IDk2N2Y3YmMyZGNjODYzNTQxZjEyZDc2YTNhZTNiOTA0YmNkNzJhMTAgbGVnYWN5LXRydW5rCis4MDU2NiA4MmQ0ODcyNDEzMDY3Yjk2MDQ0OTMxZjU0ZDYyMGU1MjJiN2Q1MDQwIGxlZ2FjeS10cnVuaworODA1NjcgYjBmMzQyYWI1MDk1MThhNmMwMjU2YWIxZDU2MDgzZWI4NmMyNGVlMyByZWxlYXNlMzEtbWFpbnQKKzgwNTY4IGYwOTBiZDcyYWNkODJhNjEwNDExOWFmNjBlYTA4ZjQ4OTcwNzNmYTAgbGVnYWN5LXRydW5rCis4MDU2OSAwZGMyMTE1ZjZiYmVhZGYwODcyMjJkM2I1OTJkYzNlN2FkMmVlOWQyIGxlZ2FjeS10cnVuaworODA1NzAgYmFlZmQ3YjQyNWYxNzgxY2I1MTllYzM5NTk3NTI4YjIwYjY4YzZlYSBsZWdhY3ktdHJ1bmsKKzgwNTcxIDNhMDQ4NDIwMDAzNDM4ZjU3NmQyMDg3OGIyMjA5NmViMjJkNDE2NTEgbGVnYWN5LXRydW5rCis4MDU3NCBlODRhNGNkZTc5YzdjYTBiNjEzYjJiNDczNDY4OGI5ZjUxZDBiNzA0IGxlZ2FjeS10cnVuaworODA1NzUgZWM3NzE1ZWEyYzc1MTJiZWRjMjIzNDU1MjY4YzAyNzc2ZjJiYjRkMCByZWxlYXNlMjYtbWFpbnQKKzgwNTc2IDY1YmUxZTY3OGU2M2UyNjhjN2Y2ZDAzNDEyOTA3OGNmYjZiNTdhOTUgcHkzaworODA1NzcgZDc0ZWQ3ZTIxZTYyOTFhOWZmZWM5YTBhZDE5OGEyMWIwOGRlZTQwOCByZWxlYXNlMzEtbWFpbnQKKzgwNTc4IDUxZTMwYjkxNmZjNDk3Y2ZlYmFlY2VhNWQ2OWVhN2NkN2I4MTliYzggbGVnYWN5LXRydW5rCis4MDU3OSAyMjBkNDc2N2ZhOTc4MWJiZDU2OTc5ZWFkMTc4MzIzZGVkZGEyMTg5IGxlZ2FjeS10cnVuaworODA1ODAgMGI1YzQ4Yzc2MjI0M2U3ZmFjNTk1N2ExYmVhZDdmYmNjNTc0YTliNSBsZWdhY3ktdHJ1bmsKKzgwNTgxIGM5ZTQwY2VkYzhiYzI1ZmVmY2Q5NmYxYmFkOGJjNzk4NzcxZjY3MzUgbGVnYWN5LXRydW5rCis4MDU4MiBmZjFhNTkzZjhkMjNjMWY3Nzg4MmNkZGEzY2VlY2Q0NDE1NTIxN2YzIHB5M2sKKzgwNTgzIDU3NTQ4Y2NlMWVhMDVhYjYxNDQ0YTY3ZDRlM2M0ODg4N2JmOGRlNDYgbGVnYWN5LXRydW5rCis4MDU4NCAxZTFjYzY3MmViZGQyNzY1ZjNhOGZkOWY4MWFhZThkNzkwYTI1M2VhIHJlbGVhc2UyNi1tYWludAorODA1ODUgMDRhMThlNTljYzJjNDA0ZDAyZDQzZjAzMDI5MzQ0ZDI1ODM0MWY4MyBweTNrCis4MDU4NiBjZDg4ZjVmZTJkMDY1MjMwMGQ5MzgzYmU4NmUyODg0YzhkZmRhNDYzIHJlbGVhc2UzMS1tYWludAorODA1ODcgZmQ3ZWM2MDdlMTAxYTU5NDNjMmQ0OWExNzE5OGVmNGEzOWZjOGU3MCBweTNrCis4MDU4OCA2OTUwZWFiNTFmZmU2MTdkYTAxMzQyODdjM2E4YzVkMDUzMGQ5MzFjIHJlbGVhc2UzMS1tYWludAorODA1ODkgYTQzNzc2NTUzYWI1MzA3ODNjYjRjZGMxNjc3OWVmY2Q1ZThmNGJjZSBweTNrCis4MDU5MCAwNWZlMTM3YjdlZmYwMzU2ODY4YzU5MDBjM2FkMTAzODQ4M2U0OGZhIHJlbGVhc2UzMS1tYWludAorODA1OTEgNzIxNjkyZWQ0YTdjYTk5ZTlkOTlkZGU3YTExZDczOTc2Yzk4N2JlMSBsZWdhY3ktdHJ1bmsKKzgwNTkyIDk3Y2U2Y2U2YTI4OTQ4YmM2ZjQ1NWM4ODNiYjZmNmEzNTcxMWY1ZjggbGVnYWN5LXRydW5rCis4MDU5MyAwZjY1ZmJlNjZlM2EzYmY5YTY4YWM0ODkzNjhjNjE5NjA4N2FjNzQ0IHJlbGVhc2UyNi1tYWludAorODA1OTQgNTliMmFkYjUyYjE2YjE4OTMyMzQ2NGQyMGYyN2QzYmZjNzUzNGM5MCBweTNrCis4MDU5NSBlN2YwNWRiNWYzYjAzMjc0NDY4YzhmZWFmYmM2NjIyMmMyM2JiYjM0IHJlbGVhc2UzMS1tYWludAorODA1OTYgODA3ZmNhYzRmMTdiNTNhNDZhNjNhMWIyM2MwNTIxYTJmZGRkYzg5NSBsZWdhY3ktdHJ1bmsKKzgwNTk3IGVhODNhNjFmNjQzMGUxYTVlM2I3YTYwZmUzN2ZlODhmNWYwMjM4ZDEgcmVsZWFzZTI2LW1haW50Cis4MDU5OCAwZjNmOGI5ZWI2ZmY4ZGIxZGE5NzYwYzg4ZWFmMzlkMjI3YThjN2I5IHB5M2sKKzgwNTk5IDFkMmIzMjJjNDZiZTM0NWQwZmZhN2IxYjhlMmM3ODQ4MGZlOTM2YjAgcmVsZWFzZTMxLW1haW50Cis4MDYwMCA0OTNiYjQ1ODVlMzgwZjA5OTBhNWEwNTE0NzMyZThlODQ5YzViNmY1IHB5M2sKKzgwNjAxIGQ5YWZhNWQxMjFlYTdiNjg5NTc5YjMyNmY5Y2JhYTJiYTdhNWIwOGYgcmVsZWFzZTMxLW1haW50Cis4MDYwMiA5NGUzZTk4OWFlMjNmN2RjNGI3NzI3YTE3MTE3Yjc4ZWI5MWRkYzUyIHJlbGVhc2UyNi1tYWludAorODA2MDMgMTg1ZGUzMWM4YTZjOWE5NDZlYjI5OGQ0OTJiOTUxMTAyZWNmZDc3NiBweTNrCis4MDYwNCAwMDczMTlhOWM4ODhjZmQ2NTAwZDM5NzE1ZTQyZWZiMjljZTBlZDZhIHJlbGVhc2UzMS1tYWludAorODA2MDUgNWY4ODMwOTM1ZDc0NDQ5NDI2YzhlNDMzYTAwOTQzYmE3YmI4NTZjZCBsZWdhY3ktdHJ1bmsKKzgwNjA2IDU5M2EyMjU1MDI3NTdkMzlmNTU4M2E1MTdiN2ZiMDM1OWY3MTY4NWIgbGVnYWN5LXRydW5rCis4MDYwNyAyZDVjMzQ1ZjM0Yjk5Y2M4NzNhYjhkOWJkNWZiNWNkMTdjNDA2MjgxIGxlZ2FjeS10cnVuaworODA2MDggMDFiZGQ1M2Y3NDg5OWVkOGE0MTczNjk1YTE3YjM5OGU0ZTEwODhmMiBsZWdhY3ktdHJ1bmsKKzgwNjA5IDg0MDA5MTNmY2M1NTVkNjY0YTJkZjE3MTg1ZGVkYTNhNzIzYjljN2MgbGVnYWN5LXRydW5rCis4MDYxMCAzNDMxZTEzMzkxM2M5Y2Y4NGU5Yzc2ZjA3ZjY3ZmU1OGI1ZGQxYTBkIGxlZ2FjeS10cnVuaworODA2MTEgNDg2ZmU4MmJhZmI4NGY3ODVmZjg1MmJkMGMxNWZlNWQ2MjFmODA2NCByZWxlYXNlMjYtbWFpbnQKKzgwNjEyIDc3ODEyMWIyMzg4YjNkMTVmZDc5ODIyOTgwMzllZjI4YmNmYWMxNjEgcHkzaworODA2MTMgZTkxOGI4NGVmOTY4Y2M4OTA1NWZmMjJhY2MwMWJmN2Y5ODJjNjUyOCByZWxlYXNlMzEtbWFpbnQKKzgwNjE0IDRiNTcwMTkxNTBhOGIzZGNlZmNlYTdjMjZiMjU1NDRlOWFiMDI5M2EgcHkzaworODA2MTUgNzdkZGI4ZDNjNDMzNTRkNWUzYTkwM2MwNmYwOGM1NmVlN2UxMmRiYiByZWxlYXNlMzEtbWFpbnQKKzgwNjE2IDRkOTYzNGI4NDQ5YmI4ZDQ4NDNhMTExODI0MjAyMzViZGRhMmFkNTYgbGVnYWN5LXRydW5rCis4MDYxNyA2Y2RhNjAxZjRjNTg1NmZhNjIyNWFiYzE5YzdhYjc5ODA4ZWEwMzU0IHJlbGVhc2UyNi1tYWludAorODA2MTggOWU1MDU3MjAxNWFkNWIxOTE1NTc2OGNhNzhlZjA1MWQ0NjgxOTVjZSBweTNrCis4MDYxOSA0MDUyMzdiMTExMDQyNTM4NDEwODVjNzUzYzVhMzU4NjY1NWZhNDZkIHJlbGVhc2UzMS1tYWludAorODA2MjAgZWM2ZTllMGUzMTZkMjg5Y2Q1OWQyNDBiNDgyZjVhNzM4NGNhYjk5ZSBsZWdhY3ktdHJ1bmsKKzgwNjIzIDQ3ZmM2ZmU1ZTQ1NGZjZDE4ZDk2MzdhYzNkYzc4YWU4ODc5NjUxODAgcmVsZWFzZTI2LW1haW50Cis4MDYyNCBmYzgyMmFmMTFiYmM2OGI2ODFhYWFhYzlkNGYwNTQwZGQ4YzQ0Mzc3IHB5M2sKKzgwNjI1IGQ2NmRiMWIyMmQxMDk4OTQ5NmE5MWJjN2NiMjBhMDE5NzNmMGI0NjcgcmVsZWFzZTMxLW1haW50Cis4MDYyNiA0ZGRmYjVkZDRiYjc5NGJhNjBlODU2ZWViYzBjODRlNDVjNDE5NmNjIHB5M2sKKzgwNjI3IGM0ODJiNDFhZTg1NTRmYTRjMzdjMTEzMzViM2UwOGQyMjFjNjYxOWQgbGVnYWN5LXRydW5rCis4MDYyOCAwNmUwMTEwYjA4MjA4YjkxY2RiNGEzZWIxMjIwYTVlNjA2YjkyNGVhIHJlbGVhc2UyNi1tYWludAorODA2MjkgZjYyNzAwMjdlNDk5ZjE5NmIwMGQ1Yzk4MzZlOGJmYmRlYzRiM2ZjNiBweTNrCis4MDYzMCBhY2UzNDUzNzc4MDAwY2MwM2RiNTY1Y2YyNTRhMjg1MzQwZGFmM2Y4IHJlbGVhc2UzMS1tYWludAorODA2MzEgYzkwODgxOTI3YmFkYTZkOTA5YWM1ZDRmZDI1ZjVhYWQ3MTc4NmViMiBsZWdhY3ktdHJ1bmsKKzgwNjMyIGI2YjNlNGY3NzdjOTZlNmIzNWE3NzIyOTRlYzU4YWExNDNlZDljODAgcmVsZWFzZTI2LW1haW50Cis4MDYzMyA5Y2M2OTNmOWE1ZGUwM2Q3YTZhZmQ0YmVhNjMxY2NjZDQzZDg2ZDJhIHB5M2sKKzgwNjM0IGYzMmI4YTNhZTlkNjAyOTRlMzEwZWJkZDI4ODQ0YWRmNzZmZjQ1OTMgcmVsZWFzZTMxLW1haW50Cis4MDY0MCAzNmE0MTc5ODEwZjBiNjcwZmU0NzgwYzg5MTlkNDkxNDBmMjIwY2ZhIHB5M2sKKzgwNjQxIDY5OTA0OWIzYzdkNzEzZjM4OWY4ZmJkODM3YTljMmY4YmQ1YTJkYjEgcmVsZWFzZTMxLW1haW50Cis4MDY0MiAyZDJhODU4ZmUzZTE5NGNmOWQwOTNmYzM3Y2I1NWMxNTA0Yzk3YmY5IGxlZ2FjeS10cnVuaworODA2NDMgN2UzNjFhNmEyYWM4MjJlNzUxMzk2MThiNTJmMDcxZTM3ZGFjZDhiYiBsZWdhY3ktdHJ1bmsKKzgwNjQ0IGZlNWEwMDZhZjUyYmRlNzJjZjI4NDAxZGYyMzEyMjVlZTdmZmMxYWMgbGVnYWN5LXRydW5rCis4MDY0NSA5ZmNlY2U0MDVlMjk1MTFkYjQ4Y2Y0ZjZkN2Y0Nzc1YWY0MGIyMDllIGxlZ2FjeS10cnVuaworODA2NDYgNWE0ODg2NWJiYzFlNmIwM2NkNjk1MzRlZmU2YTk0ZDBlMWJjNzE4ZSBsZWdhY3ktdHJ1bmsKKzgwNjQ3IGMyZTBiOTNmODY5ZjQxY2M1YTQ1NTZjZmYxZjBhNWQ5OTg1YmNkYzYgbGVnYWN5LXRydW5rCis4MDY0OCBiZmQyNTQxZDhlYzVhMzUwOTgwMjI5YTE0OTY4ZTY5ODRkZjA2YTI0IHB5M2sKKzgwNjQ5IDEwMjA2Y2IyM2M4MDIxYmZiOTMzMTM2Y2E3NTk2OWQ4NGY0NzI4ODAgbGVnYWN5LXRydW5rCis4MDY1MCA2MjFkMmU5ODRkMTg3NmQwOGRkZTZiYjBiMTg4MzczYmQyY2U2YTY5IHJlbGVhc2UyNi1tYWludAorODA2NTEgMmQzYWJhOGNmNmEzNDhjNjdhMjg4YmE1YjBkMTU1NjExYjIyM2VjNyBsZWdhY3ktdHJ1bmsKKzgwNjUyIDJiZGI4ZWJmYzRhOTUyM2Q1OTUxY2RjMWJlNzUwNTc1MTk1Y2RmMWIgbGVnYWN5LXRydW5rCis4MDY1MyAxYjg5NDU5NDQ5MGZiZTM5ZjBmMmU2ZDZmZDVmODcwOWVjYmI2NThiIGxlZ2FjeS10cnVuaworODA2NTQgN2EzNWUwYjhhZTA4YzViNTI3NDQ4YzE1NWEwMzZkNjZiZDU1MzZiZCByZWxlYXNlMjYtbWFpbnQKKzgwNjU1IGU0N2FlYTg2ZjcxNDMzNGVmYWExMjA0ZWQxMTVlYTJiZjNlZWRkM2MgcHkzaworODA2NTYgMDkxZDk3N2M0ZDM3NDNjZDk0N2MyMTEwMWQ3YTIwYjRmMjcxNWZlYSByZWxlYXNlMzEtbWFpbnQKKzgwNjU3IGJjNjIzMGM2NmMxNDFlMGFiYmUyMTEzMDBjNzA5NjdmZDRjMmZjMmYgbGVnYWN5LXRydW5rCis4MDY1OCAwMGFjNDY4OGNkY2QwZjNkMzNlMjY4ZjIxMjM0Y2Q1MDQ3YzNjOTQ5IHJlbGVhc2UyNi1tYWludAorODA2NTkgN2E5ZDE3MmExNWU5MDllMWQ0M2Y0YjA2Yzk1ODU1OGVkYTUwYjEyNiBweTNrCis4MDY2MCBhZjgxMDQzMWJkYWM5ZjMyYTVkNWM1ZjU1MjZhZDM0ZTViMjYwOWExIHJlbGVhc2UzMS1tYWludAorODA2NjEgNTkxZGU2YzlmZmU5NDc0OGY1NGJmMTc1M2ZiMTQ5ZmNlOTZiMTEwYiBweTNrCis4MDY2MiA1MWNkNTNkM2Y2MDBiZmM1NTQ1NDA5YzM2NzE0ZThjZWZkODVkZTI5IHJlbGVhc2UzMS1tYWludAorODA2NjMgNzc0MjMwMDc4OTI2ZWY3ZjZlNDNkMTE5MWMzMjUxODg3M2U5YjRjZSBweTNrCis4MDY2NCBiMjVlNGJhNGFmNjE2ZTkzM2E5MGVmOTc2OTU5MTQ3ZjRiMTgwMjYyIHJlbGVhc2UzMS1tYWludAorODA2NjUgOGZjOTg3Y2FjOTEzZjJjZGFkNDgyNGZhYTQ2ZGQxOThjYTVhYTQzOCBsZWdhY3ktdHJ1bmsKKzgwNjY2IDNlNDUxMzk0N2M1N2JmM2JkZTE3MTNlNjc2MmRlMzNkZmFmOWFiOWMgcHkzaworODA2NjkgM2M0Y2Q3ZGRmMWQwMTc0NjY0YjBlODYwNTgzN2EwNTU1NTdhMTczMyBsZWdhY3ktdHJ1bmsKKzgwNjcwIDNlYjZlYWQ5OWE2MWFkMTI4MGUyODU4NDQ0NTJmMmE1ODU0MTUxYjIgcmVsZWFzZTI2LW1haW50Cis4MDY3MSBjOTA2MGMxYzFmOTA1NDI2OGRiYzgyMGQyNDU4YjIyOTk2YzE4YjlkIHB5M2sKKzgwNjcyIDhlMzRkNTliYWRmOThmN2Q2MmZiYzliOTQyYThiNWQyM2FhYjFlYWUgcmVsZWFzZTMxLW1haW50Cis4MDY3NCBhYjY0MjM3OWRkYzAyOTQ1NmEyYWM4MDFlMGE0ZWUxZjM5NjYxZGYyIGxlZ2FjeS10cnVuaworODA2NzUgYWJmYzdlZDM1NWU0ZTExMmVmYmYzMTVhNDFkYjljZGM5NzAwOTU0NSBsZWdhY3ktdHJ1bmsKKzgwNjc2IDViNmE3ZjJhMDVjNmQxNmQyNTkxNDljZTM5YjRlMzAwMjUyZDZhMWMgcmVsZWFzZTI2LW1haW50Cis4MDY3NyA1NWUwZWNjYzdmNDZmMzQ3ZGY0MDBmM2E0ODIyMWU2NzI3YTRlNzAyIHB5M2sKKzgwNjc4IDUyYTNhYjVlOGU4Y2Y2NTlkNzAwOWIxYWRlNjEyYzZiYzZlZjM2NmMgcmVsZWFzZTMxLW1haW50Cis4MDY4MSAzZWJhYzBlNDYwZTAzOWUzOTg0YzY5NDA4MzdkZjU3ZDZmYzE0YmZlIGxlZ2FjeS10cnVuaworODA2ODIgMjQ1ZTQzM2Q2MGViNWRjNTNlMTFkM2YxYmY1ZjhhODRmNDQ1YjE1ZCByZWxlYXNlMjYtbWFpbnQKKzgwNjgzIDE5MzA0ZDgyM2M4NzQ3YzA5N2E0NWExMDcwMGJjMDA1N2I3ODk2M2QgcHkzaworODA2ODQgODJkYTI5MGZmNzIyM2U2YmJhZDE2M2M1Njk4MmM2ZWRkZTYyMTgyZCBsZWdhY3ktdHJ1bmsKKzgwNjg1IDJkYjRiMzAwYTQyMDg1NjQyYzU1ZDg3NWZiOWJlMjYwZGMxYzhmYWQgbGVnYWN5LXRydW5rCis4MDY4NiA1OGJlM2FmMTMwZTI2YTllYjk0ZTM0ODdiZjU1NWEwMDc3ZTY0YWE0IGxlZ2FjeS10cnVuaworODA2ODcgZjg5YmExMGY5NzM0OTU5OWU3MGJiOTBjMmE3MWZmOWNhOTljMmY5ZiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwNjg4IGUyOGZlZGYzNjM1OTY5NGQzMDk4NzY0ZDMwNzlkNzI4OTgxMjM2ZmEgcHkzaworODA2ODkgMjEzNTVkYWFmMjNhNDZkYjk3NmMyOTE0Mjg2ZmI2ODM3MWEwOGYxOSByZWxlYXNlMzEtbWFpbnQKKzgwNjkwIDdiMzA3YTMwMjc0NDc1OGQyMGUyMDIyMTAyZmIwMzQ2NWEyNzNjODAgbGVnYWN5LXRydW5rCis4MDY5MSBmMGUyMWFjNzk1ZjQ3NWMzODk2OGQzNTZlMDc4MmMwYjQ4YWZkMTU3IHJlbGVhc2UyNi1tYWludAorODA2OTIgZmRhMWRkYWUwNDljNjc2ZWExNDQ2ZWU1Y2JkOGRiODhkNDBmMDRkOSBweTNrCis4MDY5MyA0Njg1NzA5ZmFiM2UxMzc3MDY1MTE3MGFlYmQxZjBlZGE1MzRmZjkyIHJlbGVhc2UzMS1tYWludAorODA2OTQgOWY0Y2EwMDYxMGUzMzhiMTBjNGNhZDQ5OGVmNjdiMjA5MTcxYTRhZSBweTNrCis4MDY5NSBmZDI2ZWI5ZmIwZjkyYTRhMzlhOTQyYTFiNDdiMzQzZjhmNjY0MWJkIGxlZ2FjeS10cnVuaworODA2OTYgOTRiNTJlNWNiZTI5NDNiZWI0ZGE1NjEzMjg2Y2U5ZDBkODBiMDlhZCByZWxlYXNlMjYtbWFpbnQKKzgwNjk3IGFiZjIyMDFkYzM3Y2JlZjFjMDQxOGFmOTYwNzFmNGZhMDNlM2VlNmEgcHkzaworODA2OTggMjEzNjlkMTg5ZDllNDc5ZjQzMGYzNjI4OTUzYzI4ZWMwNjMwM2Y0ZSBsZWdhY3ktdHJ1bmsKKzgwNjk5IDdkOThlMGVhOWRiMzU0ZTMwOTNjZTVlNzczNTU1Njk5NzhiMTUyZjcgcHkzaworODA3MDAgZDk1ZGYyNjIyZjlmNWI3NzQ3OTc4OGY4ZGFiYjYwMjM1OTQwNGM3OCBsZWdhY3ktdHJ1bmsKKzgwNzAxIGIxZGQ3NzE1NDVlMjEyN2UzZDlmZDcwNDE4ZGY0OGFjZTEzYzM3ZTQgcmVsZWFzZTI2LW1haW50Cis4MDcwMiA0MzEyNjc2MjZhMDM1Y2U0ZTkyODk4YTZiNDRjMzYyZGM1ZGUxZjVmIHJlbGVhc2UzMS1tYWludAorODA3MDMgY2YwMzYxYzAyNTUxZDA5ZTJhMGZjNjU2YmYyNWE1ODJkNzNmYzkxYSBweTNrCis4MDcwNCBiM2MzYjEyNDYwZDQ4MTEwOTFlZjBjZDE0YTgxMmU4Y2ZjOGRiZjJhIGxlZ2FjeS10cnVuaworODA3MDUgOGI3NTMyOTkyNDY0MmViOTllMDU2MDQxN2RiZDIyMTdmZmJlNmRkNCBweTNrCis4MDcwNiBjNjJiMWQwMjU1MWFlMjg2NDE2YTYzYTk0YTU2M2U3ZDZmN2Y2MzNkIHJlbGVhc2UyNi1tYWludAorODA3MDcgYTc3NDY3YmNhZGUwYjc4M2E5ODE1MGJhMDYxNWM5M2VhMTkxNmUxOCByZWxlYXNlMzEtbWFpbnQKKzgwNzA4IDAzYzMyMDkyZDI2NjgyODFjMmJhY2JkYjA4NDAyNWIzMjdmMzQ1YzAgbGVnYWN5LXRydW5rCis4MDcwOSA2MmI5YTc0MzEwNDdmNmU5OWQwNzI5NjRiNDRhYzNiMTEwYmE5MzgzIHB5M2sKKzgwNzEwIGQwNjJiOGU3OTA1MjFlMTNmN2Y5M2E5NmYyNzNmN2ZiNzY1YjVjOGIgbGVnYWN5LXRydW5rCis4MDcxMSBiN2ZjYjJhZjhjYjQwOGRlNjdhYmU4NTFlMDAwOGQzOTY2OTY0MDdkIHJlbGVhc2UzMS1tYWludAorODA3MTIgNTZkODMxZTZmNTA4ODFhZGRkZTg1MjRjN2JiYTAwMjYyYjYwMDk5OSBsZWdhY3ktdHJ1bmsKKzgwNzEzIDQ3NjdjNjY2YjI1YjA4YjNiZjU5YjRkYTFmZTc2NzQxYTU3MzYyN2YgcmVsZWFzZTI2LW1haW50Cis4MDcxNCA1ZDRhNTY1NTU3NWYyYzRjNmRhNGVlNmFjYWYwM2I5MmEzMWYxOWJiIHB5M2sKKzgwNzE1IDNlZDI4ZjI4NDY2ZjYwNmExNmFkMjRmODg4MWY2NTk3NDBkZmUwYzcgcmVsZWFzZTMxLW1haW50Cis4MDcxNiBmOTkyY2VkMzJjMjA1NzhhMjkzMDFjZmZlMjMyNjgzNWNkODMwZWIyIGxlZ2FjeS10cnVuaworODA3MTcgZDkyZmY3MDgxYjIwMzlkNmNjODU1OWMxYjIzM2IwYmVlMTVjNzQ5ZCByZWxlYXNlMjYtbWFpbnQKKzgwNzE4IGYwMjU1ZWY0ZGJlYmQxZjIzOGVkNTkxYmYwNzZkYzNhOTQ5YTdiYzMgcHkzaworODA3MTkgN2FhZjU5ZDhlZjBiZmJiNGFkYmQ5YTRmYzM0YzMzMjVmY2M2MjQ5YiByZWxlYXNlMzEtbWFpbnQKKzgwNzIwIDliNDM4YmIwNmQ0ZDYyM2UyZTIzNThjNTY3NzZiYjI5MGFmNjJmMTEgbGVnYWN5LXRydW5rCis4MDcyMSBmZTNiZjM5OWExOWMxMjY3MzdlYjQ1ODI0YTkyNDU3YTJhZjhjOWU4IHJlbGVhc2UyNi1tYWludAorODA3MjIgODFjZWY1Yjc0ZjFhN2FlNTk4MzdlMmI5Yzc4ZTBlMDM0MTU3OTE1OSBweTNrCis4MDcyMyBjYTAxYWJkOGFkODcxNmZjMzcxNjJjNDBhMjhhOGE4Yjg0NTVkYzdlIHJlbGVhc2UzMS1tYWludAorODA3MjQgNGZkM2FiNWZhNzFkNjA2YWU3ZTI4MDMxMjkyOThkZTdiZWFmMzJmMCBweTNrCis4MDcyNiA2ODUwYWE3ODZjMTg3NjdlN2EzZDI0ZDNlOTJkMzZkOWM1NWI4ZTkzIHB5M2sKKzgwNzI3IDUxMmQ2MWE2OTJlNGViMzdlZDU3M2ZiN2MwOTEwN2IxNTg0YTQ3MTkgcHkzaworODA3MjggMTM4YmI1YzkzMDc0N2ZhZWI2NGU0ODNlMzdmMjA1ZDRhNGRjNDY1ZCBweTNrCis4MDcyOSAxOGNjMDVlODI3NTIyNzFlNjY0YjUzZmJlNjA0NTE2ZDU0NWJkYTljIHJlbGVhc2UzMS1tYWludAorODA3MzAgZTk5MTBkMTkzMjE0NmUwYTUzOTIxMzRkZjA2NDBiMjg2ZWM5MTM1MiBweTNrLWppdAorODA3MzEgMTgxY2QxNDkyY2IwYzc1YmE5N2RiMzIwMTlmYmI4MTM3MzEzOGEyMSBsZWdhY3ktdHJ1bmsKKzgwNzMyIGExMTg5MDUyNzIyOTlmYjVlNmEyMDA3MzQ5YTBhYWY3MDQ2NjRkMWQgbGVnYWN5LXRydW5rCis4MDczMyAwMmUxODdiYWFmNTE0ZDdiOTYyYzNhMDRlNGFjMzE5YTk3N2VjZDUxIGxlZ2FjeS10cnVuaworODA3MzQgMGNmODBiNzBmODM4YTAzODFhMzJjZjdiNTVmMzY0ODQ1ZDAzNGRjNyBsZWdhY3ktdHJ1bmsKKzgwNzM1IDk4MmVlYzlhOGMyODg1M2FmZDVlNGQ4Zjk4OTQwNzBlOGQ1OGZlYzcgbGVnYWN5LXRydW5rCis4MDczNiBlYjQ3MGI4NWU2N2FmYTY1ZmEzYmQzMDAyMzc5ZjE0MWQzZGVkYWM2IGxlZ2FjeS10cnVuaworODA3MzcgN2VlNTYyY2NlYTgwMmMxMzY5ODdmMWIyZjkwYTk5ZDJkOTk0NDk3YSBsZWdhY3ktdHJ1bmsKKzgwNzM4IDYzNjU5MWY0YzIxNjJhOTEwMDAzMmZmMDBhZmY0ODlkZGMxYzI2ZDggbGVnYWN5LXRydW5rCis4MDczOSA4MTQyNDUzZGI4MGNhMDAxYjUxNzhkZmQ2M2NkM2NlZDYzNWMxZDgyIGxlZ2FjeS10cnVuaworODA3NDAgN2M2MmU3MmQ4NTZiMjkyMzI3ZWJkMjg5YTAyYWVmZTBmNzljNzBiYSBweTNrCis4MDc0MSBmNjU2OWUzNGJkMjgxYWExZTIxZWIxMTc5MzgyNWNkMTIzNGU0MDliIGxlZ2FjeS10cnVuaworODA3NDIgNzY5NWY2YTdlM2EzYjY0MjYyZjcyZjk5ZTUzMzgzNzRmN2I2MzEzYyBsZWdhY3ktdHJ1bmsKKzgwNzQzIDY2ZmJjYTI4N2EwMTE4NDJjMTAxYjY2MmYyNDkyNDJhNmJkZjE1NDAgbGVnYWN5LXRydW5rCis4MDc0NCAzYzc2ODNkNmEzYzQ3MTM2NGUyOTgzNjU2ZTJlODU1MmU1ODdiMjNmIGxlZ2FjeS10cnVuaworODA3NDUgODVkNjkzZTVmMjI5M2JiNDFhMTUyZjEyNDFlMTUyNWIzMzI1YWZkZiBsZWdhY3ktdHJ1bmsKKzgwNzQ2IDU1YTU5M2NjMzI4MDNiYzc0ZGJiZmFmM2M2OWE0MTUxYWQ2NjA4ODggbGVnYWN5LXRydW5rCis4MDc0NyBjZDMzZDZjZDIxMDE5NTY0MzM5NTJhZmQzMmMyNmQ1YjdiYjNkODgxIGxlZ2FjeS10cnVuaworODA3NDggZTBlZTA5NTFlOTUzZjE1MWNmM2ZjMDhjN2EwOWY3NTI0NWQ1NTM5MiBsZWdhY3ktdHJ1bmsKKzgwNzQ5IDVlYzE1NWVjN2RiMjcwYTRlNTBlZmJhODliMDVjZDgxZDJjMjU0OWQgbGVnYWN5LXRydW5rCis4MDc1MCBkMTc2YWE0NzMyODc1Njc4ZjRkZWVkNDhjOGQwNWEwZjU3MTE4ZWJkIHB5M2sKKzgwNzUxIGE1MTUzN2U3MDRhOWI0NDRlNmNlNTk4NGM4MDJjYzg5NWJjNmVlMTYgcHkzaworODA3NTIgYjc2MGY2ZmY4OWVhYjI3YTI0Y2I1MGU1YmZlYzVlNGViNGM5OWVjOSBsZWdhY3ktdHJ1bmsKKzgwNzUzIGMwZWEwNzkyNTQwMDI4NGZmNDljMWVlNzE0ZTlkYzI1M2FmNTZhOWUgbGVnYWN5LXRydW5rCis4MDc1NCBlY2MzMmUyZjQ2NTY2ZTVkZWM5ZjY5YjQ4MjI1MzJmNTE5NDAwYjFjIHJlbGVhc2UyNi1tYWludAorODA3NTUgMTgzMzRmMjNmNjg2ZmMyNTg5NjQwMjRkNzBiOWMxNDY2N2U3ZTY1MCBweTNrCis4MDc1NiAxMTQzOTcyZjA0YmJkNTc3ODgwZjFjM2JiMjAyYzAxNDQxMjMxYzZlIHJlbGVhc2UzMS1tYWludAorODA3NTcgMWI0YjUwNmFhMDQyNzY5ZjkwYWZhMTFhMWYzNDY2ZjA0NTQzNmRmYSBweTNrCis4MDc1OCBmNTUwZWQ4OTM5OGY1OGU1MWFkOTVlMmU1MjRlNzkyZmM3ZGFjNGNlIGxlZ2FjeS10cnVuaworODA3NTkgNmY0NjY4Yjk3ZDY4NDAzNTQzOWJkZjM4ZjU5MTk0Mzc0YmMxZTE2MiBsZWdhY3ktdHJ1bmsKKzgwNzYwIGM3NDI5OWRlODAxYWJhMzViMzYyMDk0OTUyMDdjZGQ4NTM5ODg2MTMgcHkzaworODA3NjEgZjM4NGUxMWMxYmI1ZjY4YTg3N2Q4YTk1M2Q3ZWQ3YjNkZTlmZTM0MyBsZWdhY3ktdHJ1bmsKKzgwNzYyIDM5MDdkNTI2NDhhMGYyNTYxMzM1ZTcwZWI4MTA4ZTg3ZDgwODExYjIgbGVnYWN5LXRydW5rCis4MDc2MyBhZGMyZWJkYTc2MzZhYWZiZGM3NTAxY2IwNzZjNzc2OTU4ODM3YTNiIHJlbGVhc2UyNi1tYWludAorODA3NjQgMGE0Y2E4OTJhNTllNWU5Mjk4MTkxM2Y3NjgwNTllODA1YWU5MDYxNiBweTNrCis4MDc2NSA5YmE2ZmNlYzRmMTQ5ZTE3YTIyMTI3NTRlNWM5Mzk0YjYxNGUwNzJhIHJlbGVhc2UzMS1tYWludAorODA3NjYgZDkyMjgwNTE3MzA1MzcxYzA1MmJmMTJlNGRiNjdjYWRkN2UwZDI3YyBsZWdhY3ktdHJ1bmsKKzgwNzY3IDhjOWI3ODViMTg0OWQwNmIzZDdhZGRkYzQ1MDE4OGQ2ZDJmNmE2M2IgcHkzaworODA3NzEgZDQ5ZjEzMTBlMjNmOTAyYWQ4YWUzN2U4ZDU3NTA0N2U0ZDYwN2MzZSBweTNrCis4MDc3MiA2ZTRiZmNmMjA4MGM3MTYxNjZhY2U0N2FiYjJkZGY5NDRkYzk5NTZiIHB5M2sKKzgwNzczIGNmNDg1MzUxMzJlMGRjMDdlZDBlM2I3YjAyYjI1Mjc0OWE3ZTJjNzIgcHkzaworODA3NzQgZTAxMDVmZDUyMDMyOTE3ZTMwMDU5NWYzNjA1ZTVhZmQ1ZDMyZjY5NiByZWxlYXNlMzEtbWFpbnQKKzgwNzc1IGQ3NGFjN2NjYTYwNzcwYTExMmRhYTNkMmU3ODY1YjMzMDZhYzY3OGIgcHkzaworODA3NzYgMTM0YTYzYWYyMmE5YTU4YTg2NTZjMjgxZTczZWE3ZjkxYTJhNTk2ZiByZWxlYXNlMzEtbWFpbnQKKzgwNzc3IGJiNTFlNGJiZmY4YzI4YjIyM2NkZTAxMThlMjk1MDBhNDBmMmE2NDQgbGVnYWN5LXRydW5rCis4MDc3OCBkZDYwZGUyZmFlM2NmNmQzYWRhMmM2ZDg1MTI5NDQ0NjBjYTg5ODE3IHB5M2sKKzgwNzc5IDQzODBlMDQzNDNlZTk4NWE3YTk5YTA2OTdmMjY4NjBkNDhhN2I1ODQgcmVsZWFzZTI2LW1haW50Cis4MDc4MSBiN2FlM2E2YjFkODRiMjc0MGE3MjY0M2E3ZmQ2YjNhNWFiN2RjOWVlIHB5M2sKKzgwNzgyIGY0NDExYTNjZGYxMzliYWM3NzllMmJlZGQxZDc2NzAxOWY4MTJmNzggbGVnYWN5LXRydW5rCis4MDc4MyAzMWEzMmU0ZTAyNTZmZjliMTNiMTU0YzhiNWFhZmE0ZmIwMWQ4MzBjIHB5M2sKKzgwNzg0IGRjNjg1MjA5ODhhN2Y5Yjk2YTI1MDA0M2I3ZWRmNjg5YmMwZDJjYjcgbGVnYWN5LXRydW5rCis4MDc4NSA4MTNkYWVlOTRmNzM4M2YxZWExMzRhMWZkMWVlNTdmZDU4MWU5OGZiIHJlbGVhc2UyNi1tYWludAorODA3ODYgZmJiNWNkMzQ1YjQyZTkxZGMyM2ZkMzk2NzFmMzhiMWVlYTI2YjZjYSBweTNrCis4MDc4NyA3YjI5OTQwNGU3ODEwY2Q2Yjk2Njk5MjhkZjI0OTRjZmI3ZDk3ZTVhIGxlZ2FjeS10cnVuaworODA3ODggZjA1YTI5ODkzNzllYzlhNmIzMzUzYzI2ZTgzODcwZDg3MjRiOWM4NyByZWxlYXNlMzEtbWFpbnQKKzgwNzg5IDZkYjliYTQyZTQ2ODcyMzgwZTA5YmY3NTRhMGE1ZTY4NjFjOTBiNDQgbGVnYWN5LXRydW5rCis4MDc5MCAzNTIyMWMwMTU4YjVhNzJmZDE0ZjIzYzZlNTkwYTUyZTk5NGQyMjExIHB5M2sKKzgwNzkxIGNjYWRlNTc3MjY3NDY0Mzc1Nzc4OGRlNDNkYWQyOTVhNWQ1ZTAxZGQgcmVsZWFzZTI2LW1haW50Cis4MDc5MiA1MGE0ZWMzNzM2MWQwMGRlNDBiMTg4ZmQ3ZDg3YmM4OWIyNzA5NWZlIHJlbGVhc2UzMS1tYWludAorODA3OTMgYjYwOGUyZWQ5Zjc1ODkxYmJmZGY0NzUyYWQwM2M4YzRlNjNmNjkxMSBsZWdhY3ktdHJ1bmsKKzgwNzk0IDRiNjhkNmM4Y2Q1MmM0ZTA2ZjdhN2Q1OGU1Y2I1NzRjMmU2OWU3YTUgbGVnYWN5LXRydW5rCis4MDc5NSAzNTkzMmEyNGJlODUwOWNkOWI2MjdiN2VkOGU2ZTBhNTNkMTExMDlhIHB5M2sKKzgwNzk2IGQ0YWEzNTkwNzgwODc2MmRlZDA5OGY4ZTFlNDg1ZWZiZGNkZmUxNTkgbGVnYWN5LXRydW5rCis4MDc5NyA2MjdmMTE0NDBiODllNjIyNWJiNDg3OThlOTBmMmU4OTMwYzAwYjUyIHJlbGVhc2UyNi1tYWludAorODA3OTggNzQ4M2VjYjYyMWUwZjYwYmQ4ODFjN2UwMzUxODQ1OTlhNDlhZDdlYiBweTNrCis4MDc5OSA4ZWU4MGMyZjk5MjY3OWM3YmVlYmQyYjIwMTU0MWExYWI0Yjc2YWViIHJlbGVhc2UzMS1tYWludAorODA4MDAgNTc1ZTkzOGE4Y2E1MjViMjNlODBjZmQ4MzgwYmI1ZGM1NTg0NjU2ZCBsZWdhY3ktdHJ1bmsKKzgwODAxIDE4OWEyZGUzZTAzNDVmMDQ0ZTU4MDQwMjc4OGJhZjI4ZDNiOWE4ODAgcmVsZWFzZTI2LW1haW50Cis4MDgwMiAzM2FjMTA5ZGUwY2MyZDIwMDRhNGIwOWE0ZjRiNmQ2ZDQ1YjlmMzY1IGxlZ2FjeS10cnVuaworODA4MDMgODBkMDU2MzAyNjNhZGQyNThlZTNhNzVlMmZhMzgwMmM1Nzg5ZGExNyBweTNrCis4MDgwNCBmNjc4NWJjZTU0YjUzMzJkZTVlNTZmNzkxNjMyYzU2OTMwOWU3ODZiIGxlZ2FjeS10cnVuaworODA4MDUgMWY3NTA2ZjIzNzcxNmZhMDg1YTJhNGFiZWJjMGM0YWEzZjA0NTlkZCBweTNrCis4MDgwNiA5MGY0YjYyZDQ3NTlkMDQ4YTUzODc2NDI2NzJjNTUxYjc1M2MxMGVmIHB5M2sKKzgwODA3IDY4OTkxMzkzMDFjOWU4N2MzOTBjMGVlYzI3MzAzZmYwNDM4YmNmMTkgbGVnYWN5LXRydW5rCis4MDgwOCAzYjU4ZjI0NDFjYzg3ZmRkNmI2Y2E2YjVmMzI0NWU3YjI0NGRmODU3IGxlZ2FjeS10cnVuaworODA4MDkgOTQ1MzhiMDQ0Y2JlZmFiMGU5NDY3ZTJiZDcxOTNhNTZhNzdkOTNmYiBsZWdhY3ktdHJ1bmsKKzgwODEwIGY5NWMyNTliODBiM2NlNWFkNTU5ZjlmODQ2ZTE3NjJiYzY1MzgwMzEgbGVnYWN5LXRydW5rCis4MDgxMSA3YmU4MTI5ZWUwZmQyMWRkMTg5OTA1MGE0OTk1MTg5NWQ5OWVlMDQ0IGxlZ2FjeS10cnVuaworODA4MTIgNDdhMjcwMGMwMGI0OWQ4NjVkMWNkMjk0ZDk2YzkyMjMzZjkwMGNmMSBsZWdhY3ktdHJ1bmsKKzgwODEzIDVjZWEyNzI3NWFmMTI1ODJiMDc4YzMzOTZiMzIzZTZjOGE3ZGMyYzYgbGVnYWN5LXRydW5rCis4MDgxNCAyZDhmYTc0ZjkyNjNlNDAwMTI5ZGI1M2M0MTQyNGUwOTU4NWNhZTk2IGxlZ2FjeS10cnVuaworODA4MTUgZmZmNDM5ZjA4OWZlNTVhYjU0YjhjNzM5NGZlMjFiOTQwNTlmNDYzMiBsZWdhY3ktdHJ1bmsKKzgwODE2IDZmYjZmYTgwMjIyMWU3ZjU4NGEzZGJmNmI5ZDI0Y2Q4MTg1OGUxMGIgbGVnYWN5LXRydW5rCis4MDgxNyA4NDVjNmQ4MDAzMDI0NDZjYTgzYjg0ZjBiMGNiNTA3ODBlNzE2NjA1IGxlZ2FjeS10cnVuaworODA4MTggNzdiNzg2MDc2MDBlNTI0ZDJlODY3ZGQ1NGQ4YjY0NTUwZjRiYTEyYSBsZWdhY3ktdHJ1bmsKKzgwODE5IDNmZTRjMzRmNzhjMDI5Zjc4ZThlMzMzOWRjZjFjYzg5MDkyNTIzZmYgbGVnYWN5LXRydW5rCis4MDgyMCA5NWM0MDBiOWQ3NGNhMzdhNmZjNzI3YzkwOGZhMDBiMzJhODA3Y2JmIGxlZ2FjeS10cnVuaworODA4MjEgMGQxNDgyN2JjYzBkZmE5ZWUyMGQzMmQ4OGM0NTFkODljODljZWQ5MyBsZWdhY3ktdHJ1bmsKKzgwODIyIDhlM2I1ZmJjMWU0MWJmMWIzZjcwNmE0MzlhY2E2NjUzNWZiNDc5OTcgbGVnYWN5LXRydW5rCis4MDgyMyAwMzc4ZjZlMzQ2ZjAzMjU5ODcwNjc3NTA2YTdlZGFhMmJiYTQ5ZGYyIGxlZ2FjeS10cnVuaworODA4MjQgODg0NjZlZjFmMGNkZTY4MTgwOGJkMzIzNzY0YjQ0OWJiYWE5Y2VhZCBweTNrCis4MDgyNSA4YmYzNDU5NGI2NmYzMTUzYjk4MGU4NmI4NDkwOTgxMTgwMGI5ZDkxIHJlbGVhc2UzMS1tYWludAorODA4MjYgZjMzMDkwNDJhMGIzMWJlZTE2YzIzZDk5MzM1Mjk3YjliNmVkYmNlYiBsZWdhY3ktdHJ1bmsKKzgwODI3IDAzYmE2MGQxZTQ5MmEzOTg0NTU3MDEwNmUyOTJiM2Y1Y2I0ZTdlNTQgcmVsZWFzZTI2LW1haW50Cis4MDgyOCA5NDQ5MzhhYmIyNmNlMDYwOWYwNDMwZDg0MzY2ZTMzZDkzZDEyY2NlIHB5M2sKKzgwODI5IGY0Y2ViNGFlMDI0N2RiYTMyNjIyODExZjczNWJiYWU3NzMwYTEwNDIgcmVsZWFzZTMxLW1haW50Cis4MDgzMCAyNmI4MWM0ZTVmYmE0N2U0YzY2ODAzYzNhODk2NTk1NTY0OWU0MjUxIGxlZ2FjeS10cnVuaworODA4MzEgZjBmYTk0NGIxNWMwY2YxZjg3MDYwZGFmM2Y5Mjc3YjIwMmU1OGViNiByZWxlYXNlMjYtbWFpbnQKKzgwODMyIDliZWEzN2E4NTA4ODRjZGQyMjc5MWM5NGEwNDBmMmZkYzNkMmRiYTAgbGVnYWN5LXRydW5rCis4MDgzMyBjNDI0Mjk5YjM4ODRiNDBjNzZhOTBmYjdiNTc3ZjA3ZjZhMjMwY2MxIHB5M2sKKzgwODM0IDhiNWRkZTJjMzFmYjNmNjY2MDVmM2M5NTZjOTFiZjQ0MGY2YWFiYTMgcHkzaworODA4MzUgNzhlN2ZjMDFjNTFhYzU4MzVmNGQ1M2IzZjFlMTE2YzJjMjlkODI0MCByZWxlYXNlMzEtbWFpbnQKKzgwODM2IDVkY2EwYTNmYjk5M2M0MDVlZTNhNWFkYTJmYmYzOTcyZDAwZTJlNTIgcHkzaworODA4MzcgZTNlNDY2ZjUzZjllZjBhMTQyMmRlNjY3OWRkYTRlMjc3MjAzMTM3MSBsZWdhY3ktdHJ1bmsKKzgwODM4IDk5NWViOTZjYWU2ODZiZWYzNTc3OGYwZTRiOTVhYWYyOTc4NWEyNWYgcmVsZWFzZTI2LW1haW50Cis4MDgzOSBiMzAzYzM1MjU0ZGU0MTMxN2Q5Yzg3MDQ0ODFjYjM4NzdhMWE3NmMyIGxlZ2FjeS10cnVuaworODA4NDAgNjU1OGQ5NmFkZTAzYWQzMzg2Yjk1ZjI0NGIyZGViOGM1ZGQ1ZGE2MCBweTNrCis4MDg0MSAyZjMxMzAwOGE0MWQ0NWYyYTZlY2ZmNjRhYzYzMmJkNWU1YTJkZTg0IHJlbGVhc2UzMS1tYWludAorODA4NDIgNjNkNWI5ZDM4YjE3NmZhNGIxMzU3YTAxMWRkNjNjZjk2YjI0MDFmNyBweTNrCis4MDg0MyA4YWZkNmYyOGFjYTlkMjJhZTliZWU2MmE1MjkwNzNhNmI1YjJlMjk4IGxlZ2FjeS10cnVuaworODA4NDQgZjExZDRkMmI0NGI2N2Q0YTFhNzI0MDkxNmRmMzkyMzU4YTBlMDYzNSBsZWdhY3ktdHJ1bmsKKzgwODQ1IGUxMTQ2YjI1Zjc3MzIyNDg2NDMzYzg3NjdkZGUyM2FiZWYwYTFmZTAgbGVnYWN5LXRydW5rCis4MDg0NiAxY2ZiMjI5ODQ0YTc4YzU0MjIyNjI3ZjE3OWQ2ZGUzMTQzMTc1MTA4IHB5M2sKKzgwODQ3IGU1MDNiYjhiM2Y2MTViMzZmMzcyNzJhZDczZTA5ODgxYjM1MzkzNTUgcmVsZWFzZTI2LW1haW50Cis4MDg0OCBkYzJhYWM2MjRmZjhmOWI2MzZiZWVmZDM0MTBiYzBjMjczMWIzZGU1IHJlbGVhc2UzMS1tYWludAorODA4NDkgMDE2ZGJhYjM1MWYyZTEzZTZkMGM2ZjYzMmVlMjJhYzc5Mzc0OWYxMCBsZWdhY3ktdHJ1bmsKKzgwODUwIDg1Y2MzZWRjN2Q0NmU0MjY0NGJjZThiYjU3NDFkYTI2ZGEzNTYxMjYgcmVsZWFzZTI2LW1haW50Cis4MDg1MSBhYTdlNmI5Y2FiNmQ0OTJkYzZmNzBmOGExNDI1ZmU4NjE2YmIxYTg1IHB5M2sKKzgwODUyIGUyMTgwM2M0ZjFlZWY1Zjg5MjZiZWY2ZTY1ZTQ5ZWNmMTgzYjY1NzIgbGVnYWN5LXRydW5rCis4MDg1MyBkMmE0NDAwNTc4YTVjNzNlZDZlN2U2ZjNhZjIyMzJmZDYwZTk3YTM1IHJlbGVhc2UzMS1tYWludAorODA4NTQgODk0MmU5NjI4NmRjNjQxNzdlZWIyZWNkMjMzZWYxNzU1ZmJjZGEwYyBsZWdhY3ktdHJ1bmsKKzgwODU1IDhiNjQxNTk3OTJiYmIxZjcxNjhiMTZiYTBlZGM2NTBjZjRkMGEzNTQgcHkzaworODA4NTYgNWI1NWRjOTU1NGZjYmQ3N2UwN2QxYmViNjNmZmQxOTFlMTJmNmU0MCByZWxlYXNlMzEtbWFpbnQKKzgwODU3IDBlZDFlYmU1YmMyZmM5M2NmMGYwMjEzMjAyZTE0MzZiMWY2NjM2MmIgbGVnYWN5LXRydW5rCis4MDg1OCBlNGEwYmEyNTFjNGE0ZmRkMDU4NWVkNDZiYTdmODJkYThlNGQxZDA2IHJlbGVhc2UyNi1tYWludAorODA4NTkgYjkyZWY4ZWJjY2I5NzYwYjRhZTQ5NmZlNTk3ZWY4Y2EwMTA4ZjVhZiBweTNrCis4MDg2MCAzOWEyYmU0MTI3ZGQ0NDIyNWNhZTI1ODhkNzQ4MjBlZTFiNjdkYjFlIHJlbGVhc2UzMS1tYWludAorODA4NjEgM2NiY2MyNzQ1OTcyOTJkMWM0NGM3N2E0ZDAxMzI4YjgyODYyMDhkMyBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODYyIDk5NjVlZjgyNWM3ZjdiMmQ4NTkwZGNhMzI2ZDZiNDllYjI4NTZkMGIgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2MyAyZDhhM2JiOGZiNjA4YTczYTI3MGJlNTViMWM4ZGEzNDZmNzdkZTcwIHNpZ25hbGZkLWlzc3VlODQwNworODA4NjQgM2RhNjczODhiOTZhMzdkMTYxZTVhNTVhNzkwN2I5NGY2NDYzZDJiNSBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODY2IDYyNTRjMDI4YzYzZDI0MDBlZmQxYTkzMzYzYWY2NmJhYjc1MDU0ZDMgbGVnYWN5LXRydW5rCis4MDg2NyBlYTcwMDFjM2YwMDBmZjY5MTM3OTQzNGI1Y2UwMDU0ZTljYWVjYTBkIHJlbGVhc2UyNi1tYWludAorODA4NjggMjE2NmI2M2I2ZmRmODZmNmI5ZmQxOGY4MzIyMWFjNjFlMDdhMDVmOCByZWxlYXNlMzEtbWFpbnQKKzgwODY5IGI0YjMyMmIyZTk4Yjk5MDE2OTRiYmVkOWU2MmNkNjU1ZjM0ZTJjYmMgbGVnYWN5LXRydW5rCis4MDg3MCAzNDZjNGMyZTM4NmU3NDM1YzVkYWRkZTYxMjJhNTNhMmM2NTYxMGIxIGxlZ2FjeS10cnVuaworODA4NzEgY2ViZTI4NTcwMDA2OTBlZjIxYjI1ZTQyYzIwYTQ1N2EwMjMzMTg1MiBweTNrCis4MDg3MiA0Y2RjZmYwZTlhMzZlZDhkZWFhMjc2NTNkYWMwYzljMGMyZTlmMTM2IGxlZ2FjeS10cnVuaworODA4NzMgNmIyN2E5NWMyYzUyMjgxNGE2ZTkxZjNhM2IyY2FlNDBmZjI3M2MxNSBsZWdhY3ktdHJ1bmsKKzgwODc0IGU0ZTU0ODZlY2NiZTBlNjM3MmI0OGQzMTQwOThlN2FiMjdmMjhhMzQgbGVnYWN5LXRydW5rCis4MDg3NSBjYzkyNTAyZGU0Yzk1MTE0NGIyY2U3YmZmNDQ5MmQ5NjkyNDUzMjhkIGxlZ2FjeS10cnVuaworODA4NzYgM2I0OTA5NjNmOTJjODc0ODYzY2MxNzEyZmZjMTMxMTg3YmZmMTgxZCBweTNrCis4MDg3NyAyOTdlMjMzMjhjNmM2OTU4MGJhODE4Yjc4NWIwNmQwMWRjN2NmODNkIHNpZ25hbGZkLWlzc3VlODQwNworODA4NzggNTRlZmFmNmQyZjg5MmE5NWE2NzgyMTZlMjE4NGI3MGM0NGI5ZTFjOCByZWxlYXNlMjYtbWFpbnQKKzgwODc5IDBhODM5NjliNmYzNWRiMTZlYjJiNmM4OTI5ZTQ0YWFlYzY3ZGQzNDUgcmVsZWFzZTMxLW1haW50Cis4MDg4MCA5YWY5NjBmYmFjY2M1ZTRlNTFhNzZiOGUzNTRlM2EwY2NjOWNkYzUwIGxlZ2FjeS10cnVuaworODA4ODEgNTNmOWI4NDg4MmEwNTY5NTQwN2Q1YWJlZTQyNzZhOWY2N2U1ZWNhZSBweTNrCis4MDg4MiBhYjBiMjg1NWM5ZTQyOTEzYTJkNWUxNmJjNjdhYzM5ZTAwNWRhNTY4IGxlZ2FjeS10cnVuaworODA4ODMgYWRlODI5M2JhNDg3YTE5NGI0NjgxNWE0YzdkYWVmNTcwNzcyMGQ3MCBweTNrCis4MDg4NCAyZDNhZTEyYWQwOTM2OGRjNzA1OTliZDMyMGM5MzM1ZWU0MTI4MmU2IHB5M2staml0Cis4MDg4NSA3ZTViZGY1OWE0ODcxMzYwZTVjMDRkYjFhMTYwY2M3YTA5OTc5OWI4IHB5M2sKKzgwODg2IDY5M2Y3NGM0MmU1ZWY5ZGIzYTZjMjk3ZDI5ZTQ4ZjQzMGRiMzEyMWIgcmVsZWFzZTMxLW1haW50Cis4MDg4NyA5ZDc2YWY5NWMxNjZkYTkyN2NkOGIyMzlmYTBkZmRiOTA2MjI5ZjVmIHB5M2sKKzgwODg4IDhhZDFjNzRkNTkwOTczMTU1NDAxYTZhMTQ2ZDdmN2M3MjFhYmZkODkgcHkzaworODA4ODkgMmFhNjA1MTY4ZjExMmUxMDM2OTk2MWQ2Y2Q4M2RjYzcwYWIxZDI5YSBweTNrCis4MDg5MCBmMTgyZTA5MjJkYzc0NzZmMzY1ZDdkYmQxZDU0MTBiNTMxODk0NDZjIHB5M2sKKzgwODkxIGY0MjMwNzY1ZGRiYjE3OGRmNTgwNDQyNDJhZDdmMDBiMTkwMTY1ZWEgcHkzaworODA4OTIgNTQ4ZmE4ZWRiN2YwZmI3OTgzOTIyMDA1Yjg4OWJmNjJiNDRjMjQxNSBweTNrCis4MDg5MyA1YWI0YjRlZmNmNjFmMzdkNTJlMTYzYjNiZTIyODU4ZWVkYjlkNDc1IHB5M2sKKzgwODk0IGExYzlhOTEyNjBkOTFhM2FmNWQ4MDBjNjY3ZWNlMDMyMTczY2IxMTEgbGVnYWN5LXRydW5rCis4MDg5NSBhNDkyNTZiMjI2OTU3YTMwOTNmMTdlYmRlNzY5NzM2NzFiMzE1NTQ0IGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODA4OTYgYjBiN2JhMjZiZTZjMTkxNzgxMjEwYTAzMjQ5ZTFmNDgzNDQ4YzUyNCBsZWdhY3ktdHJ1bmsKKzgwODk3IDVmYjM5NzdmYjM0MWUzN2JjOTk0NzRjNTE5Y2U3MmRmNDMwNWY0MTcgcHkzaworODA4OTggODNjNWYyN2FmNTdjOTJjZTA0MzdkNjkwNGQwNjdkOThlM2ZlZGZkZCByZWxlYXNlMjYtbWFpbnQKKzgwODk5IGNhNzdlZDczOTgyNzAxOWYyMmUxM2QwNDkzNzRjOWFjMDM3MjBmOTUgcmVsZWFzZTMxLW1haW50Cis4MDkwMCAwYjA5NzFkYWY1OGMwMDcwNzI0OTA1ZDgzNTM5OWE3ZjUwMTc4ZmE0IHB5M2sKKzgwOTAxIGQ2MTUxNDg4NzI2ZjhhZTc2NDY1MDMzMGFmZjQ2ZmU2ZTRhZWJmZjEgcmVsZWFzZTMxLW1haW50Cis4MDkwMiA1MjYwMTA0ZGI5OWQ3NDM0MDZiMTU1NjVhMmNlNWJiNDhlMDYwNjNjIHB5M2sKKzgwOTAzIDA2OWU3ZWZhNjQ1YjUxMDc2NWVlNTBiNzZmNzczZGZiNzdhNDM4N2UgcmVsZWFzZTMxLW1haW50Cis4MDkwNCA1OTgxYjJkYTEzMWExMjczNDA0ZGFkMmVhN2NkZDE4NTkwMTAyNWZmIHB5M2sKKzgwOTA1IDQyN2M3NTAwYjJiNzBjOWZjOWY1MjQ2NWVjY2NlNGJhMjk0YzVhYmUgcHkzaworODA5MDYgMjQ1OWVlNmFjN2M3YWFlMDJlMDhlNjA5MTBhZWNjZTYxNGM0YTkzNSByZWxlYXNlMzEtbWFpbnQKKzgwOTA3IDE2MzIxODM0MTU2YTA0MGU4MjcwNjhhMTFkMjg2ZTIwOGE0ODdmNTggbGVnYWN5LXRydW5rCis4MDkwOCA1YzkwOTQ3OTJkMWFjY2Y0MDllYWU0ODc2ZGI5OWE3NmM4ZjNjMTcwIGxlZ2FjeS10cnVuaworODA5MDkgNDkwZDFjMjAzNmU5NjM1NjFlNjhjNTU4NDk5MTFiODkwZDFmYTQ2NiByZWxlYXNlMjYtbWFpbnQKKzgwOTEwIGZlN2U1NmY5ODZjZDQ1MGZlMjRjNTM0ZmRlMThkMTQ1MDQxMmRjZjMgcHkzaworODA5MTEgZTNhM2VkNjE0YzdlMDllMzMyNmE3YjIwNjg0OGZlZDZjMDk3MDQ0YiByZWxlYXNlMzEtbWFpbnQKKzgwOTEyIDYxYzRjYTk0YTM2NjgyOGQyZGRiNjVhYzU0NmM4MWM0MDI4OWIyOWEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5MTMgZTA0NmFkYjEwNDc5N2Y0M2Q0NjU3ODMyZjVjN2U1Yzk2N2E0ZGI0OCBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDkxNCBlMjk5NDJlYTJmZGY4NDFmMTRlOWE3YTE3MzE3MzQzNGY5OWI5NDRiIHNpZ25hbGZkLWlzc3VlODQwNworODA5MTUgMTliZWU4ZWE0OGQ4YWI1N2I1Mjk3MzQ0MzFhYjgxMDNkZWRmNmRiNSBsZWdhY3ktdHJ1bmsKKzgwOTE2IGQwMmIzMTczYzNjNWI5MjEwYzJjMTJlODYxN2E4OGFjNDYxNzg2ZTggbGVnYWN5LXRydW5rCis4MDkxNyAzNTMyOGYwNjkyMWNlOWNmNTkwMDZhMzQ3ZmFjNTNmOWQxYTIzZjYxIHJlbGVhc2UyNi1tYWludAorODA5MTggNWEzOGU3ZTE2YmY4Y2I5MTg4NGQzZTI4YmNiZGVmMGQzMmQ2MTE1MiBsZWdhY3ktdHJ1bmsKKzgwOTE5IGZhY2M2OTE3NTlhMWMzMTk2OWI1YmI0MzM1YWZkYzAxYmRkMmIyZmYgcHkzaworODA5MjAgNzk2N2JjN2IwMThkNGFlNjE4NWNiYThhZTIxNTBjYjhhMGEyMzVhZSBsZWdhY3ktdHJ1bmsKKzgwOTIxIDlkYWJmYzE5ZDFhYzRmZjhmNGVjOWNlMTRmYTlkMGVhYTI4YjYyODcgcHkzaworODA5MjMgZjczN2Q2Y2JiMDQ1NjFmYTM5MjdkZDUyZTk3MTg4Y2MyMjgyM2E2YiBweTNrCis4MDkyNCBmNTBkNWNhNDY5MGNiNjc5OTI0MmFjZDQyNDJkZmViZjdmMzk0ZmM5IHJlbGVhc2UzMS1tYWludAorODA5MjUgNzFhYTA5OGEwODJlMjYyMzllOWZjMWQ3OTU2YTg1MTE1ZGRkMzQwZiBweTNrCis4MDkyNiBiNjAyNjc2Y2FkY2Q4NWI1YTk4Mjc0MjM2YzQwYjZjNDgzYTkwZjEyIGxlZ2FjeS10cnVuaworODA5MjcgZjE4OTgxOTA0NTA3OWY4YWMyMGYyZTg2ZDkyMWVmNWUzNzhjY2UyZiByZWxlYXNlMjYtbWFpbnQKKzgwOTI4IGJjYjBjZjkyNDY5M2JmMDViZWQyNDNhNmY1OGU2MzJjNzA5ZjI4ZGUgcHkzaworODA5MjkgMzY4MzcxZmE3ZjVjMzY3ZDQ0NThlMmExNGI2N2JlMmFmMjJhZDg5OSByZWxlYXNlMzEtbWFpbnQKKzgwOTMwIDgzOTk1MzU4MGI2ZGZjYzVlMjI5ZGQ5NzU1ZmY4NmE0MTQyYTlhMGMgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDkzMSA2NTQ2MWE3MDU0OTY3ZDg5MmE1NGViYzJhMDgwMWM5ODhlMGFlN2VlIHJlbGVhc2UzMS1tYWludAorODA5MzIgMjZlZGFiOTg5ZDJmODg1NTRmYjg2MjRlNmI5ZjZhYTZkMjU4MTNiZiBsZWdhY3ktdHJ1bmsKKzgwOTMzIGY1OGI5ZGVjZTI1ZWI4YmRlOTk0MjFiNGZlMzExOGI1YmIyZjA5ODkgcHkzaworODA5MzQgOWZlNTYyYTJmMGUzMTQ1ZDgzYTJiNTA0MmY4ZTliNDRhZjNiYmM5NSBsZWdhY3ktdHJ1bmsKKzgwOTM1IGU5MmZiOTVmMjMxNzgyZTA3MWI4NDFjZDVjNDY4NGRkYmNmYjhkYjggcmVsZWFzZTI2LW1haW50Cis4MDkzNiBiNGZhZjk5YzY0MmY3NTEwNjRkZjE2MDliYmNjNGE3OTZkNTdiZTA4IHB5M2sKKzgwOTM4IDgyNTg5MzdlMTM5YzIyNjNkNzdhOGFlOTFiZTlhNWM5OGU4YzQ5ZDcgcHkzaworODA5MzkgNDhkNzk1OTE2N2RlZjdkYmU5YTlmNTYxM2UzMGYwYTU5NDYyNGQxYyBsZWdhY3ktdHJ1bmsKKzgwOTQwIDIzYmQ2MWM3ZGJiY2Q1NTY5ODZiMzNhNDRiNDA5MmQ5OTU3NGFiMTcgcHkzaworODA5NDEgYzdkMDY3ODk1MmQzZGI4Yzc5MWY2NzJmYjY4MzU1ODdlMjUwZWQyYSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0MiAwZTM5ODJhZTI4MWQ4MjM3NWQ3MmFhMjM4ZGE5N2ZhZjIzMzgxNWM2IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQzIGM4NjdkOTkxZTkxZjBkMjI0NTFjZGQzM2EyNmNjNjViYzM5MzU5ZmEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDQgZDZkYTM4MTk3N2NlNTE2ZTRiNDE2N2Q0YzZiMmMwNzFmOGVmMTc0YSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0NSBhOTAzNzIyNDlmZDM1ZGY2NjY0MzcyYWQzMGQwMDdjYzVhZGIzMjE2IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQ2IGNiZGQwMTNkYWY2ZDYxNGRjMjJmNDliYzQzNzc1ZjNjOTJmODA0MWUgbGVnYWN5LXRydW5rCis4MDk0NyBlMmJjY2QzNzJjZDYzYmJjNmU0Y2QzOTRjMmIyOTkyOTU5MzU1OTNiIHB5M2sKKzgwOTQ4IDg1YWMyN2ZhOTEzZmJhYWUyZTdhMDAwNjFjYTBmYjIwNjM4MTcyNDQgcHkzaworODA5NDkgMDdhNDdhNTE0NTQ4N2FiNzc4NGJhOTEzODdiYzliZjkyZDUwNDA2YiBweTNrCis4MDk1MCBhNzc0MzdiZGUzMWFmMzFjN2U0YjliNzkyYzRmZWFlYWRiMzgwZjEzIHB5M2sKKzgwOTUxIDFhYmIzZDNlM2U4ZGY1MmY2ZmRhZWU4YTQ1ZDE3NzcyYzU4MzAyZTEgbGVnYWN5LXRydW5rCis4MDk1MiBjYmExZDIxZWFiM2QyY2RlODJkYjkxNjY0OTM0ZjA1NDA5OWE0ZDBjIGxlZ2FjeS10cnVuaworODA5NTMgNzRhZTBlYjkzMmRlYWRhZjNlMmUzZTU1NDJkNjBlYTc0YWJmZTU1ZCBsZWdhY3ktdHJ1bmsKKzgwOTU0IDUzZDc2MjMwZmExODZmNTZiZDdhOGZjZjE1ZjhhZTc1NGFmYmI1NTQgcmVsZWFzZTI2LW1haW50Cis4MDk1NSA3ZTZmMWU4MGIzYzY1NjdlNzBhMGQ2N2Q4ZWNkMmFhZTdkNjliNWM1IHB5M2sKKzgwOTU2IDQ2NDRjZmYyNTI1YmUwZGU3ZTEzYjM5YjQwMjk4Nzc3NTFkMjQ0YWUgcmVsZWFzZTMxLW1haW50Cis4MDk1NyBmODUxZTdiNmUwZDVjNWQwYTkxOTZjMWY1NGI5ZjM5MWYyMmQ3MDdhIGxlZ2FjeS10cnVuaworODA5NTggYmVkZTg1MDdmMGFjZDRjOGFjZmZhYWRjNDIwY2YwYzVmM2E1YTk1OCByZWxlYXNlMjYtbWFpbnQKKzgwOTU5IGRiMTMzNmNjODUxYzJhODVkYjBjZjFiNjI0M2RhOTcxNzFlZTdjZWUgcHkzaworODA5NjAgMzI0Zjg5ODg2YTFjYjZkYTMyYmUyMTkxZDFkMTJiZGNkZWQ1ZmVkNyByZWxlYXNlMzEtbWFpbnQKKzgwOTYxIGQwNmVmMzBhNDQxZWRiNWJhZDU3ZDJhY2Y5MGQ0ZWJhZDJiZjRkNDAgbGVnYWN5LXRydW5rCis4MDk2MiBiN2EwZjAyMWZmN2Q5NzM1ODc4OGZkNDY5MmE3NWQzMjAyN2M3ZmFjIHB5M2sKKzgwOTYzIGMxNDIzYjBhOTMyOTM2NzY0NTM0OGRkOWIzODUzNjkxYzgxN2NiZjggbGVnYWN5LXRydW5rCis4MDk2NCA0ZjdlNTA4OWZjOTdhZTdhZjgzZmVlOTJlZGY4MDNhNWRkOTlhYzIzIGxlZ2FjeS10cnVuaworODA5NjUgYWZlMjU5MjM1NGQ5N2JjNTFhZTRkOTcxNzE0M2RiMTUzNGU4MTI0YyBsZWdhY3ktdHJ1bmsKKzgwOTY2IDRhOTQwZDk5ZWM4NGIxYjJhYmJhYWEwYzkyNDQyN2EzMmIwM2RmNWMgbGVnYWN5LXRydW5rCis4MDk2NyA5MzAzOTViMmRlOTAzNmIwZTcyN2Q4MjQwMTBlZjVmNWEyZjdmZTczIGxlZ2FjeS10cnVuaworODA5NjggM2ZhZTdjYjQ5MjA5NWIxMjkxZTYxMjkwMDUxODRiYmZmZTUxYTUzOCBweTNrCis4MDk2OSBjNWZkZTRhNDJjYjBhNWUxNTdhNmMxY2ZmZmI3NTA0N2Y1ZDkyODZhIGxlZ2FjeS10cnVuaworODA5NzAgZjYxNGRiZWMyZjRmNzkyZDdkMjdkNzhjYzU3MmZkZDkzMWQxMGUwYyBsZWdhY3ktdHJ1bmsKKzgwOTcxIDIyN2ZhN2RiNTBkZWQwM2E4NTQ2N2IwMTUzZGIxMWUyMzIzNWY2MTEgcHkzaworODA5NzIgMGQ5NzMyZjYwNzc2OTI5MzRkY2Q0ODkwODA1NWQxYzk5MzcwMzE2ZCByZWxlYXNlMzEtbWFpbnQKKzgwOTczIGIxMGMzYTI0ZDJmOWRiOGZkNDFkOGNjZDU0NDM0ZGNhMzM4NTQ0NTYgcHkzaworODA5NzQgNjNkNmY1ZmVkYmYzMTQ1NjViMjljNzhiNDBjOGFkMzIzYTBiMDk3ZiBsZWdhY3ktdHJ1bmsKKzgwOTc1IDE3ZDIxZTllNjMyMDEzM2ZjMmU5MjI2MDU4MzBiYTQ4ZTg4YmQxY2YgcHkzaworODA5NzYgYjk0YzEzM2RiNDUxNjYyYmFkMjkzMGUxNmU1MzQzNWUxNzRiNDI3MSBsZWdhY3ktdHJ1bmsKKzgwOTc3IDAyNzAxNTExYjc1OTZjMDAxOGVkNDVkNzE2ZTI1YjMxMDFkOWY0ZTggbGVnYWN5LXRydW5rCis4MDk3OCAzM2NiNWI5OTJkMzkyZWFmMDQzZWViYzg2ZDk2MDU2NWNmNmQ5NDI3IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTc5IGI3ZjAyYzY3MGJkN2M0Zjg2YjI3OWUwNTEzYTIyY2Q3YTRmM2YyMjkgcHkzaworODA5ODAgNzAzZjhiMTFiMjUwYmRmMzc0NGNmN2Y5OTI2NTAzZGQyMDI5NWFhYSBsZWdhY3ktdHJ1bmsKKzgwOTgxIDlmNDY3YzYyZDk1NDA4ZTQxMmM5OGMyYjAyMmVjN2MyZDIzNzI4MjMgcHkzaworODA5ODIgMjg1MjIwZjI0Y2M4ZjNhM2VlNTI2MWQ3MzBlNDQwZmIzY2I5ODQyMCBsZWdhY3ktdHJ1bmsKKzgwOTgzIDQ3ODQ3MWNjZjdmZDE5ZWM2M2E5MDMxZjI1ZTZhY2RlNTllNmZmMTQgcHkzaworODA5ODQgYmUxYWRmM2M4YTMzMmM1YWYyYjM4NGE0NzliZmIyM2Q3NGYzZmFlYiByZWxlYXNlMzEtbWFpbnQKKzgwOTg1IGUyNjNhYzJiZTRmZDQyMDY4Mjg0ZDA4ODRmYjYzY2Q0NDhkNWNlOGMgbGVnYWN5LXRydW5rCis4MDk4NiAyZjdhYjkyMjEyMWE0MGI3MWNhZDZkYThjNmI1NGVhMjZhYjNjYzQ4IGxlZ2FjeS10cnVuaworODA5ODcgMzI5M2RhODNkZjFlMzA4NmI4MmUwN2FlMzUwNWE2MjdlYTNlMGJmMCBsZWdhY3ktdHJ1bmsKKzgwOTg4IGU0MzU4ODhiODgyNWU1N2YyNjY3MWU0ZjY0N2ZhYzU1NDBmNzQ0YTYgcmVsZWFzZTMxLW1haW50Cis4MDk4OSBjYWZiNjIyNWRlZDg2ZTZkMjFlZTM5OGJhODk2YmNmNmZmNGViMTMwIHB5M2sKKzgwOTkwIDc0MzM1NWUzZWY0YWIxMWJjMmQzNTFjMDZjODEwNWUxNzkwNjBmMDcgbGVnYWN5LXRydW5rCis4MDk5MSA4ZmY4ZjBhNTI2ZGQwN2I3NDI5Y2VmYTU2MjM0NjZmMTA1OGQwYjM1IGxlZ2FjeS10cnVuaworODA5OTIgZjJjYjNhZjU1NjJmYmQ5MDRiYjYxNTJiNjlmMTQxYzM2ODAxYTE5MiBweTNrCis4MDk5MyBkY2NkZmJlNTc3YmE1NzJkNjY0NjA3OWZjNjc3NDVlNGQ2MzMzOTU0IHB5M2sKKzgwOTk0IDI0ZWM3MjU5NDE5NjVhOTFmZTMxMjFkNDM1NzZlZWU1MDQ1MzYyMzEgcmVsZWFzZTI2LW1haW50Cis4MDk5NSAzMWI5NDEyY2FkMDFiZDAzZmM1ZjI3NzVmMWExMDIzY2VhMjEzOTY4IHJlbGVhc2UzMS1tYWludAorODA5OTYgZjIxOTRlNjg4ODFlYmY0Mzc2MTlhYzBiZjk1MDlmNDc4ZmFkN2EwZSBsZWdhY3ktdHJ1bmsKKzgwOTk3IGQ2ZGY3NDk3ODBjNTQ3OTNjNzVmNDQzNzE0OTFjNmIwYmI0NWZkMDMgbGVnYWN5LXRydW5rCis4MDk5OCA2YmI5ODkxZDQyNzViZDQyYTY5YjNkOTAzZDEzYjY4NzU0M2M5MTVkIGxlZ2FjeS10cnVuaworODA5OTkgODhjZjU3NmY5Y2VlYTI1ZjFmNzlmYmIyOWQ4MGJiZmFjZmZkMmU2ZSBweTNrCis4MTAwMCBmMGY0MTE4Yzc2ZTk5MGY2ZmFhM2EzYTZjM2RkZTE1MTY1N2JkYjU3IGxlZ2FjeS10cnVuaworODEwMDEgZjE5MWQ1ZjgwZWIwNDFiYWRlNTU0MjYxN2ZlNTc1YmQ5ZGNmNTQzYiBweTNrCis4MTAwMiBiZWQwNDQ5MjM5OGRlZDYwNjM2ZjVhMjFhODY4OTg1OWFjZmZiYjJjIGxlZ2FjeS10cnVuaworODEwMDMgNjYzYjM5ZDRhN2VmN2Q2Nzg3YjJlYmJlYTgwMGIxOWRmMmExNzEzYiBweTNrCis4MTAwNCA0ZGE3ZmJhMzM3MGZjYTBlODk5NDE4OWYxMjhjNWZiNGVlNjhjZGU5IGxlZ2FjeS10cnVuaworODEwMDUgZmNiMjFkMmNlYjczYjI5MzM5MTQ1MDc1ZmY0OGNjYzQxYTFiNmZjZSBweTNrCis4MTAwNiBhYjlhZTU2NzZhZGFlNzI1MWY1ZGExMmRiOTZlNGQ3NDRlMTkwMDY5IHB5M2sKKzgxMDA3IDQzNWE4MzU1ZGFiNmJlZmM0NzE0MWRjMjE2YzEwZGIwZjJiMWVjYTYgbGVnYWN5LXRydW5rCis4MTAwOCA2ZmE4ZTEzODFiNDk5M2IxNTM2MGYxZDhlOGQyNWY5ZTg0OTYwNGU5IGxlZ2FjeS10cnVuaworODEwMDkgMTE3YjRiODFiODY0MDJmZjI5OWQ3ODhmNjMyYmU5ZmM0YTA2NGJiMSBweTNrCis4MTAxMCAyZTliYzYxYzFjMWVjNzE4OGNmZGU2YTgxNzkyMTY4Y2UxYzA0YjIxIHB5M2sKKzgxMDExIGZiNzE5MDQ5MDQ0ZmNjOGFkNzkxM2QyZmYzNDY3MGY1ODA0M2VkOGMgcmVsZWFzZTI2LW1haW50Cis4MTAxMiAyYzllMDk1ZDUyZjAwZGQ2M2IzYTlkNzcxNzI0M2U5ZDQ4ZWY0ZDgxIGxlZ2FjeS10cnVuaworODEwMTMgNTBmYTNmNGM4MjliMzQxYjZhYWIwMDI5NDVmYTlkNGIyYzU5OTcxMyBsZWdhY3ktdHJ1bmsKKzgxMDE0IGRkMWM4ZmYyZTk5MDMwODE3NDAwOWNjNWVkY2MwY2U5MmM3NTliOGIgcHkzaworODEwMTUgMTEzOWI1ZDk5NmIwMDQxNDkyYjBjMDRmNzhmZjYwZTg0MTlkNmY4NSByZWxlYXNlMzEtbWFpbnQKKzgxMDE2IGI5NjZkNTgzNWQzYjExMGFlMzUxZWVhYTlkMWIzNTIzZjYyM2VkNTggcHkzaworODEwMTcgZDMxNWE3OWYxZWNjZWU1NDUyY2JiMTVhNDc5MmQyNjg2YjI1OGZiYyBweTNrCis4MTAxOCA2Nzc1MTFlZGYwNWM3ODNhOWVjOTNlM2MxZjBmZWRiOGEwNDEzZGE1IHJlbGVhc2UzMS1tYWludAorODEwMTkgMDM3NTMzMTZmODFmN2IxMzdmZDU4OWZiNmNhMTUwMTIzMjY5YzIxNCBweTNrCis4MTAyMCA2YTJkMGNjN2Q2MDQ5Y2E0ZTAxZmQ1ZmJmZWQwMTJhZGZlZDAzYzVmIGxlZ2FjeS10cnVuaworODEwMjEgMzAzZGIyMjYxMTVkZDZjZGYwOTFiMDJiYTI3MjI5ZTcyMDY4NDgzZiBweTNrCis4MTAyMiA3MjRlODc1YjE5NDFjNTdmMWIyMWQ3NDY5YzBmOWE1NjU4YWJkNTJhIGxlZ2FjeS10cnVuaworODEwMjMgMjI5NGJjZjQwZTUxOTU3ZDE4MGRhMWY1NGQ2M2M2Y2UyYzllOWU2NCBweTNrCis4MTAyNCAzZGMyNWQwMjRhNTFjMzRiNWZmYzQ2NDIwOTRjMGE1OWMxYzgyMWVmIHB5M2sKKzgxMDI1IGY4YzE5YzVmNWRkMjQ4M2EwMTQ1ZDY5MTJiOWFjMjhlMzNmM2Y2YmUgcmVsZWFzZTMxLW1haW50Cis4MTAyNiBkNjk4ZmIwNTZhNDU5YzlhMmU0MGNjMjY0NGE0NDE3Yzk2MWE0Zjc4IGxlZ2FjeS10cnVuaworODEwMjcgYjZlMDNjYThhMjA2ZGVmMzMxNjI5OTA4ZDg1MTk5OTI0MDlhOThkYSByZWxlYXNlMjYtbWFpbnQKKzgxMDI4IDE5YWFjODRhYzFkYWRlYmFmOGI3ZDZhMTEwYjhiODVkYWU4ZmE5YjcgcHkzaworODEwMjkgZmQyNTAzMDIyM2IwNzAyNzAwMmU3ZDY1OTU2ZTQ4MDNjYzcwNmI3YSBsZWdhY3ktdHJ1bmsKKzgxMDMwIDg0YmFmNjI1OGMzYmYzODUzOTc1MmJiM2M5MGUxZTBlZDdkYmUxNTEgbGVnYWN5LXRydW5rCis4MTAzMSBlMzgzMzVkNGRmOTFkZTY0MjdjOWEyMWI1NDFmY2U0ZjgyZDk1NjVjIHJlbGVhc2UyNi1tYWludAorODEwMzIgY2FiMTRiZTBhZGExNTlkYTlmN2Q5NGM1ZWU3YzU2ZTYxZTE1N2JjNiBweTNrCis4MTAzMyBmMTk3NDA3YmRiYTJmN2Q2NDQ5MjJlZjc5Mzg4ZDVjOGI0YWM4NThhIHJlbGVhc2UzMS1tYWludAorODEwMzUgNWVhMGY1ODU4YjcyMmExMmE3ZTlhOTE1OTI4YjE1M2ZmNDgxYWI2NyBsZWdhY3ktdHJ1bmsKKzgxMDM2IGJjMGNlYTU4NDQ3ODQ3ZjIzZDFiNDI2MDRmZGJjNTAzNDIwNjc3ZmMgbGVnYWN5LXRydW5rCis4MTAzNyA1Y2FkMTBiMjc3YTQ3ODMxMzdlODI4NmJiMzE0M2JhOTkwZTVkZDM2IGxlZ2FjeS10cnVuaworODEwMzggNjljZTZjOTM3ZDZlYzllZTRmODdhODY4ZDY4NTBhZjE1ZDg3Njg3OSBsZWdhY3ktdHJ1bmsKKzgxMDM5IDQzZDAxNjlkZjk0M2ZhMDMzNWU3Y2ZmZjEyMGY3NWVmYWQ1MzAwZDkgbGVnYWN5LXRydW5rCis4MTA0MCAzMTNmODU1ODZlZjhlYjgzNTRhMDFkMTU0NDk5ZTA0MzcyNzExZmQyIGxlZ2FjeS10cnVuaworODEwNDEgNjdkYzBhOThiOGY2ZmM5MjVkZDczZTc3YzAwMTlkMWRhNzU3NWNjYiBweTNrCis4MTA0MiBmYzQ2ZTQzNzIyN2Q2MjkxZDExZjg5ZmQ1MDEyOTQxZDM4YTUzMTUwIGxlZ2FjeS10cnVuaworODEwNDMgNWViMGU1NDUxNjEyNDdjZmU2ZmVkMjA3YmNjZTFlM2Q3ZTQzZjI4MiBsZWdhY3ktdHJ1bmsKKzgxMDQ0IGZiMTllYzU3ODg1MzMzOWM2MDAwYTRlZjhhNjJlZjhjYWNjZGNhYzIgcHkzaworODEwNDUgNDg4ZGJlMjYyZjY4MWQ0YTE4ZTkxODIxNmJlZDM3NjUxMTVmMjg4MyBsZWdhY3ktdHJ1bmsKKzgxMDQ2IDdmNWE1NzFiMWVjYjhhMjg4MDcyZDhlZGU3YjkwYWU0MWE1NDA2YmUgcmVsZWFzZTI2LW1haW50Cis4MTA0NyAyMGFlODM4MjFlZjA1MzcyOTJkZjFmMGFiOWRjYTAxNDRmOTBkYTVmIHB5M2sKKzgxMDQ4IDhjNDk5Y2IzNzIzYTRiMDllNTNjMmYzYmRhMjM4YWQ1ZmQ3ZTY2ZGUgcmVsZWFzZTMxLW1haW50Cis4MTA0OSA3MzZkNmNlOWI2MGJhYTkzNGRkNGJhZDhjZDRmNGQ1MzdlZTIwNTRhIGxlZ2FjeS10cnVuaworODEwNTMgOTQ1NzM4ZTE4NzI2MzkxNGZlYjQzOWYyMmFkMDA1YmI0ZmY5N2Y1YSBsZWdhY3ktdHJ1bmsKKzgxMDU1IDZhOGRmZmY2ZDI0MWI1MDAxMmI5MDc1MzgwNjU5ZGI1MzNhZmQ5NGYgbGVnYWN5LXRydW5rCis4MTA1NiBlNjQ3OThiMzZlYTRkZWYwNmE2NzJhZjc3MTRhYjk0NWE4YTJkNGExIHB5M2sKKzgxMDU3IGRhNmNmOGYzZDhjMmVjODZkMjU5ODI4ZjNiMjc2Njk1MmNhODdhYmUgcHkzaworODEwNTggZjAyNWI2YjBmZTBmNmY5YmRhZGIzZmZkYmFlNGE3NWYwNzFjYTcwZCByZWxlYXNlMzEtbWFpbnQKKzgxMDU5IDMxNDhkNzA1MjhiNjA2NzE2NWM3MDY3NGVhZTk3M2MzN2M5YWYzODUgbGVnYWN5LXRydW5rCis4MTA2MCBlNzYyOWVmYzU1ZDAwN2U1MjQ3ZjY5ZDA0NzNhOGVhZTlhNDI2NDY1IHJlbGVhc2UyNi1tYWludAorODEwNjEgMGY4NTA3ZjU0OTQyOWUwYzJhNDcyYzk3N2UyNTc5MzY0MzIwMjkwNCBweTNrCis4MTA2MiBiYmU5Zjk4YTBjMDIwY2VkZTY2N2ZlYTNkOTE4NmZlOGY3Y2VkODdlIHB5M2staml0Cis4MTA2MyA4MjlhODZlMTFiZDdlMTRlOTBkYmQ2NGI0YjdjMzE4NDgzM2ZmZTNhIHB5M2sKKzgxMDY0IGYxMzU4YWEzM2E2ZTIzNGZkMTc1ZDRjNjc3OTBhN2U5ZjA2YWQ4N2QgcHkzaworODEwNjUgY2JmZDI3ZGI4ZGMyNzgwN2Y2OTk3YmNjZDg1YmEyODdmMzQ1YWJlZiBsZWdhY3ktdHJ1bmsKKzgxMDY2IGZjOWUyMTU5NjlkODM2YTJhZjMwZTE5NjFlOGE2MzcwMGI4YWNjZTIgbGVnYWN5LXRydW5rCis4MTA2NyA1YWIwNDQzODU2Y2FiOGEyZTUzNDQ3MDQ2NjVkYmZmODFkYjQ2NzdiIGxlZ2FjeS10cnVuaworODEwNjggZDYwNGZhYjc0OWRkNzQwM2JkOGQ0MjNhZjMyM2NlNjM4MGU3NGIyYiBweTNrLWppdAorODEwNjkgYzc1NTEyYTg1ZmQxYWVjM2JhMzNlZTdlNjE2M2NhYjQ3YTIyNmFmMyBweTNrLWppdAorODEwNzAgYjY2ZWJiNzc3NTY4YjBlOWUyMGFhNTc5YmMxZDcyZWY2ZjBhMzQyNSBsZWdhY3ktdHJ1bmsKKzgxMDcxIGJhMGZlMDI0ZTg5ZmQ0Y2E1NTU2ZTMxNWQ5ZDk1NWRlNDg0YWE2NzggcHkzaworODEwNzIgNDU0MDhjYjRiNzIzMmI5ZjI0ZDljY2NiMjM0MTA0MWQ0MzliMTM1OCBsZWdhY3ktdHJ1bmsKKzgxMDczIDY0OWQ2NzEwYTgxZmY3NTY4NTMwNjRkYzM5YWNmYWQ4YWIzMzczOWIgbGVnYWN5LXRydW5rCis4MTA3NCBmODBlOTM1ODJiN2ZlNmRlODMzZWUzYzRmYmNkNGRlZjE4NzU2YTZlIHB5M2sKKzgxMDc1IDAwMjIwZWJlZWQwYThmMjRiNGNkN2QwMzU2MzVhYmFkNGYwYWJmNjYgcHkzaworODEwNzYgOGFjMGYwZGI1ZjU5NzVmZWNhN2VlNDdiY2UxMThhYThkMzMxOWU5ZiBweTNrCis4MTA3NyBmMTVkNmYxYTJmYTMwZWQ4M2Q3YzIzNWU2ZDc2M2MzNzRhZjQ0Y2ZjIGxlZ2FjeS10cnVuaworODEwNzggMWY2OWYyODE5ZDMxMzU3ZDRlZGViYjI2N2VlM2VmYjQ0OWVmMzk0MiBweTNrCis4MTA3OSBjMGRkMzNhNWFkYmU2YzVhMmEwODI2NDMyMWQzOWI4MDgyY2JmMGE5IGxlZ2FjeS10cnVuaworODEwODAgMGFjMTFkYjVmYzk2ZTQ3MDUzOWQyZWNjNWUyY2ZlZDU5Y2VjMjg0OCByZWxlYXNlMjYtbWFpbnQKKzgxMDgxIDAxMTk0MGJhZWZiMGJlOTEzNTgyMDEyMDZjZjQ2MjY0ODJmOTIxMTUgcHkzaworODEwODIgZmI2MmUzYTlkODg2ZmZiYWExYzQ3M2ZiODgxNTAyOWEwODg1MzM3MCByZWxlYXNlMzEtbWFpbnQKKzgxMDgzIDljMzIxYWFlZWYxMjYwODZhMzgyN2MyM2UzNDZmNWVjMzBmZjI2NTYgcHkzaworODEwODQgODFhM2EzMjI2Y2Y1ZGQ0NWI0ZDcyYjE5YThkZjMxYWVhMjYzZDE0MyBweTNrCis4MTA4NSA5ZGZlZDhkZDFjNmQ5ODk1NDNhNDI0YzQwOGJiOTk2YmE3ZWM4YzgxIHB5M2sKKzgxMDg2IDM1M2Y0MGVlZDFiYzZkNGVjZDdmZjBlMjU3ODVhZTZmZGYxNDliZTAgcHkzay1qaXQKKzgxMDg3IDRmZDdmZWE1OWU1YjJiY2YzNzBhNjUyOTljMTRiNmJiNDJjZDk3ZDYgbGVnYWN5LXRydW5rCis4MTA4OCAzZTZjYTRiMDNjNzlhNGQ0ZjU2ZWFmNjkwYWRiZmEyOGExOTQ5MzIwIGxlZ2FjeS10cnVuaworODEwODkgODExZmM2MzE5MGE3Y2QxYTcyZDdmZjVlN2I4MTZhZGJkNGRmODIwZiByZWxlYXNlMjYtbWFpbnQKKzgxMDkwIGRmZjZmYzM4ODhjNjJlOThlOWM0Y2UwMWU1NzU5OTA3ZTA0N2U2ZmIgcHkzaworODEwOTEgODY4MDFkMWQ5MDM4NmJhYjA2YWVlYTk3MmJkZmM4YTJkMTM3ZjVhNyByZWxlYXNlMzEtbWFpbnQKKzgxMDkyIDMwZjRiYmJhZGUwYjcxMTdiNTM3OTFjODUwNWNiYjFkZDVmMjMwZTIgcHkzay1qaXQKKzgxMDkzIDQ5NTliNmY1YmM4NmNkYzUwN2Q4ZGE2NDEwOTg2M2FmOWJlYzJjODYgcHkzay1qaXQKKzgxMDk0IDVlMzkzNGEzMWM4ZGMwMjg4NWJiZDhhMjk4ZjRiMWJkYzE4ZjRjZDggbGVnYWN5LXRydW5rCis4MTA5NSBhZjJmODRlNjYyNTM3YzM5ZjUwYjhiYWI4NGNmZDA3YmQ3OGE5ZjVmIHJlbGVhc2UyNi1tYWludAorODEwOTYgNTRkYzEwOTg4ZjE1NGMwZGVmZTZhYWY2NjMzMWU2OWI3OGNhNzhlMSBweTNrCis4MTA5NyBlZjRkZTA1M2Q1NzdmODVmZThhZmY5OGM3M2Y4YzQ2NmUzOGVkMDBhIHJlbGVhc2UzMS1tYWludAorODEwOTggM2E4Y2E2N2FlNDMxMWIwNDlkMWY5OThjNTY5MDA4MTQxYmVlOGNlNSBsZWdhY3ktdHJ1bmsKKzgxMDk5IDJhNzBjODAzNDliMGVkMGEwMmViMDBiNzc1NjEyOWIxMDFjMmJmNDMgcmVsZWFzZTI2LW1haW50Cis4MTEwMCA0OGQ5NjY0YzQ3YTNmNTg3MzEzMTY4ZjE1NzhiNGYyOWI5OTE5ZjkyIHB5M2sKKzgxMTAxIDRiMTBlZjhhMDI0Y2VmYTMzMDc3ZTFjMzQ4NGMyZTU5YTNmMDVjZDIgcmVsZWFzZTMxLW1haW50Cis4MTEwMiAyMWE4MWM3YWE0YmM1MGY3OGEzMDA3ODEzMWViYThhOGVlZTEzODIwIGxlZ2FjeS10cnVuaworODExMDMgYjlkNGFkZjhiMTdlOWZmMGFiYmQ1NzFkNzkzMjUyNWZmZDE1YjhlNCBweTNrCis4MTEwNCA0Yjg5NjNjZjgwYjI4NmQ2OGU1MThlYTY0NjBiN2ZjNDJlYjM2NTU1IGxlZ2FjeS10cnVuaworODExMDUgYjc2MDRlYTJmNDdlN2Y1ZTA3YWU5ZjE3MDYwYWExMGY3Y2JmNDdhNCBsZWdhY3ktdHJ1bmsKKzgxMTA2IDczZjNiODg1MTc1ZGIzN2UwMWEwOTYxNTc0NzJkYWEyZGQ2MDZmZjYgbGVnYWN5LXRydW5rCis4MTEwNyA3NzM3MTRlNWVhYWVjOTYzMDFkMWNkOWJlYjI2YTFmMzlkMGNhMjBiIHB5M2sKKzgxMTA4IDJkZGNkMzA1MzNmNzJmZDYwNzY3ODRmNjlhYTA4YTE4ODU5ZmRlYTAgbGVnYWN5LXRydW5rCis4MTEwOSA2ZjQ3OTYwYjU2NDc4OWRjZjhlODE4M2E1MjU2MjZlODY1YWJhOGNjIHB5M2sKKzgxMTEwIGVmYWY2MmMyY2Y3NTk5YjQ4Y2YzZGFlZjI4Nzc0YjM2NDIzNmM4N2QgcHkzay1qaXQKKzgxMTEyIDVkZWJlY2I0ODI4MmRhYTA0ODhjYjcxMDBlYWIyNTc4M2ZkYWM4M2MgcHkzay1jZGVjaW1hbAorODExMTQgYjY0NjQwMTRjYWEwNzY3NmJjZjljYzNiYzA4M2UxMmQ4NWJiNzdiNyBsZWdhY3ktdHJ1bmsKKzgxMTE1IGUxODM2YTdiNmI2ZTc2OWM5NjgzMjExMzU2YjlhZjU3NGNmMjM2ZjggbGVnYWN5LXRydW5rCis4MTExNiAxYjNlYmVkOGI2YzY1MmE1ZTZiYWQ4NGVjZDg4OWUzYzI1YWQyMzkyIHB5M2sKKzgxMTE3IDAxM2Q3NmFhODk1MWMyYzQ4NjJlN2QxYTRjNGUyZjE5ZjUyNzcxODIgcmVsZWFzZTI2LW1haW50Cis4MTExOCAzMzAyNzNlYzYwMjgzOWFiZWI3ODI0MzEwZjRiMjVkMDY0MWE2NDM2IHJlbGVhc2UzMS1tYWludAorODExMjIgYzFiYTg4MTZiMTg3ZTkzNTY1ZjcyOGNjNDU4NmIzOWNhODJmOWNhYiBweTNrLWppdAorODExMjUgOWVjN2FjZjBhMDA1ODcwZmU4ODk2ZTAzZDkyYjg4OTVkNzZjMGM4ZSBsZWdhY3ktdHJ1bmsKKzgxMTI2IGI1NTRlZWEyNjEwY2M4ZDcwMmU2MzMyMzc0NDEwNmY0ZDUzMzE3N2EgbGVnYWN5LXRydW5rCis4MTEyNyA5MWY0NjJiOTA0YjFmZDI4NjhkZTEyNmQzNzg4ZWE2NWI5MzQ1NThhIHB5M2sKKzgxMTI4IDM0YTY4NmZiZmZlYjllNWE2NWIzM2E5MTAyZTUzODRmNzkxY2IyMWIgcmVsZWFzZTI2LW1haW50Cis4MTEyOSAxMDM1YThmZDdkZmI5NTcxMWM3NTQ1OGYzMDBkMDIwNjNmZDQzZGMzIHJlbGVhc2UzMS1tYWludAorODExMzAgMDZjNmQzYTY3YzE3YjFmODc5YmZjMTZhNGU4ZmFkZTU4NDRlNjY0MCBsZWdhY3ktdHJ1bmsKKzgxMTMxIDJjMjljZDU2NjhjNzcyODUyZTYzZmJhZDE2ZDI1MWFmN2JiNDdjZGUgcmVsZWFzZTI2LW1haW50Cis4MTEzMiBlNTU2MzJhYTY4ZTk3NDJlZDRlZWQ5ZmRkZDI1ZDkxZjA4NWVmM2I2IHB5M2sKKzgxMTMzIDkwYTlhMzRlNWViNTIzYzNlYWUyZmM2MGUxNGQ2MDc4M2YzOWZmMzIgcmVsZWFzZTMxLW1haW50Cis4MTEzNCA4NDEwZjgzZmQxNTlmNmVlNTA4NzBiZTlmMjQyNDFkODdkOTI5NWMzIHB5M2sKKzgxMTM1IDY4YmMzNTc3NWQzMTM0MDE3NTgxMjMxMTYwZWMwZDFiYmUzOGZjMDYgbGVnYWN5LXRydW5rCis4MTEzNiBjODA2ZWRmOGQ3MzQwZWZmMWIyZmI2NzU0MzhmZGJkMWYxYmFmMzQ0IHB5M2sKKzgxMTM3IGViYTQ5NDc4YWFkOTY1MTc2YWEwZmEzMTU0NjYzODFlOGI1MWU1OTAgbGVnYWN5LXRydW5rCis4MTEzOCA0MzFhMTUxZTEwMmQ1MjZjZTgyY2VkNTM0ZmJjYjJlODU1MGE4MWY5IHB5M2sKKzgxMTM5IDUzNjFmNmRkMTM5OTYzOWM3ZmZhMTBiMzhiNTYzNWJmZGRiNmZiZmYgcmVsZWFzZTI2LW1haW50Cis4MTE0MCBlZTU5NmRhODYyZjgyN2U2ZTk5Yzg1ZjNiOWFjNGRmNDIyMmMwYWI4IGxlZ2FjeS10cnVuaworODExNDEgNmNiZDRiY2EwOTdhMGFmZDM5YzhiNWQwZjc4NGRmNWQ0Njk0M2M4OCBsZWdhY3ktdHJ1bmsKKzgxMTQyIDE2OThjNTViMmFmOTRiY2U1NDA4NTRiMDg3NTNlNWNiM2MzMWQ1Y2QgcHkzaworODExNDQgOTM3OTA4NDcxNzRhNzQ3YWQ0YzNmZTNlN2ZlZDM1N2Y4NjAxZTIxOSBweTNrLWppdAorODExNDUgMDYzNjRkYWQ4ZGRkMTVhNGYwNDFlN2E2ZTdlY2UxZDBkMmY1MDVkYiBsZWdhY3ktdHJ1bmsKKzgxMTQ2IGU0ZjI2OTYxNWEyNWNjZTMxMjAyNjMwNTNmMTA2NmE4MWUyMGYxNmYgcHkzaworODExNDcgYjM4NmViODM0NzVmNDlmNjdhZjNkYzdjZWNkOGRmNDJmODkxMzNiNiByZWxlYXNlMjYtbWFpbnQKKzgxMTQ4IGRhM2ZhODgxYTgwMDM5MDUyMGJmZmU2OTlkYjE0NGEzZDZhYzhlNjEgcHkzay1qaXQKKzgxMTQ5IGUwOTZhYWU1MzViOWI1YmE5M2E3Y2I3MzFjMjgzY2JmMWJmYjRiNWYgbGVnYWN5LXRydW5rCis4MTE1MCAyZmE3M2IyOWIzMDU5NzUwN2I2ZmQwNjhkZjMyZmFjMjhhMzM4YjU0IGxlZ2FjeS10cnVuaworODExNTEgY2I5ZTA5ZjNmYThlZWMzYzlhNDViYTQ2ZWZiZDNkOGQ3MjA0MmRkMCBsZWdhY3ktdHJ1bmsKKzgxMTUyIDMxY2YxYjEyNTMwYTlkMGFlZTNjMjVkYzgzMjk5ZGM5ODBmNzQyZWIgbGVnYWN5LXRydW5rCis4MTE1MyBhZTRiYjY3MDEwNzhlMGUzYmM0NTc4NGI5MDRhNGUwNmU1NjQ0YjYzIHB5M2sKKzgxMTU0IGNhNDk2YmZhY2QxYmU1YjdlMDU0M2EwYWY4YTRlZjE5ZjA3NmU3MWQgbGVnYWN5LXRydW5rCis4MTE1NSBjY2YxY2E3M2MwZTk3ODllNWU2ODQ4MzljNjRmNGQxNThiM2QwYTUzIHB5M2sKKzgxMTU2IDllNWI3M2VhNmE3Y2UxZmExYzc2NDU3NGJkODQyMWVmM2UxZmIxNWIgcHkzaworODExNTcgOWY2MmY1ODY1YjQ0MWViODA5OTBhNzIxMjk4M2E5MzJhNDNjMWY5MSByZWxlYXNlMzEtbWFpbnQKKzgxMTU4IDI2MjI3OTZhZWNhOTRlYTJmYjY0ZWYzZTExODQ1NWUwNTc3Yzg4ZjEgcmVsZWFzZTI2LW1haW50Cis4MTE1OSA1OGE1NmFiYTBlYjJjMmUyNGI1M2VhOWE1MWQ2ZmY1ZTRhMzgzMmFmIHJlbGVhc2UzMS1tYWludAorODExNjAgYTZhNjdiNzM0ZDhiMzYwM2JjNjI1NTkzNzFlOGM0ZTE3ZmY1ZTJjYSByZWxlYXNlMzEtbWFpbnQKKzgxMTYzIDc0MmYxOWI0NzAyMDRiODViZmRiMzRmOGY4YzAxYmUwM2U3OTY0MTIgbGVnYWN5LXRydW5rCis4MTE2NCAwY2IwZmFkNTE0ZjM3NTIxYzY2YTNhNzlhNWM3ZjAwODU3OGZiNTdkIHJlbGVhc2UyNi1tYWludAorODExNjUgM2IyNDdhZjZjZWU3OTJkY2NjNDQ2ZWM2YzU0YjViMjBlMTBkOTlkMiBweTNrCis4MTE2NiAyNTJmZTVjNGNkNTNmODZkZDY5YWI0YjIxMTlhNTE3ZGZlYjk5YTljIGxlZ2FjeS10cnVuaworODExNjcgZWFmODFhMTMwYWQ2YzQ0OTljZTJkMDhjZDQxZjMxZWVhMGRlNTY1NiByZWxlYXNlMjYtbWFpbnQKKzgxMTY4IDllZTIyOGQwODllZGQyOGY4NmFjZWZjOGMwOWM1NTBmZWYxMWNjMzAgcHkzaworODExNjkgMmIwYWY2OWFlZjk3ZDIyOGVjZjcyYzJhOGQzMTc3YjE0ZjBhNThkOCByZWxlYXNlMzEtbWFpbnQKKzgxMTcwIGFiMzFiMDA5YTFlZTI5MzRiMGI2ZThmMTVjYjdiNmQ4ODE0YTU3NTcgcHkzaworODExNzEgOWMxYTJiZDUxNTI4YzNhN2Q1NTJjMDA1MjNlMzVkYjJjODgwYjgwMyByZWxlYXNlMzEtbWFpbnQKKzgxMTczIDMwOWQ5Y2Y4NDgwODUwZTRmOGVhYjM5ZWY5OWEyOTM4N2ZjZjU4YmMgcmVsZWFzZTMxLW1haW50Cis4MTE3NCA1OWZmN2Q4MTJhZTM0MmY2NTE0ZTAzZDE3ZDQ1MWFjYWM0ODM5ZDMwIHB5M2staml0Cis4MTE3NSAyMzY5ZDRmMTg5ZTQyYzY3NzQ0MTU1MDM5YmYwOTc0MzkwNWIzNGYyIHJlbGVhc2UzMS1tYWludAorODExNzYgMTE0YzRhNDJmYzFkMDMwNzNhM2RmZWExZTMzNDlhYTljODIwOTI3YyBweTNrLWppdAorODExNzcgYTgxNGU3ZTcyOTAwZmFmNDhmZDg4ZjEwNzFhMmRhNTViNGI2ZWRlNSBweTNrLWppdAorODExNzggZmRlOWI0MzU0NWZiYWY4M2MxMTZhOTYxZTU0MjlhNmE2MDAwOTcyZCBweTNrLWppdAorODExNzkgZTZiZmU5M2I2NWJiZGEyNDNmNTMzMmQwZmQ5YzJjYmY3NDM0NDY1OCBsZWdhY3ktdHJ1bmsKKzgxMTgwIDBkMDI4ZDM1OTBkYTAzZDg5NTdmOGE1M2NiYmViODgzZWVlOGZiZTkgcmVsZWFzZTI2LW1haW50Cis4MTE4MSBmYTkwMmY4ZTBkYjBlZGY4MGE2NmJmMzdhZjQ2YTFiNzhiNTM4MzRiIHB5M2sKKzgxMTgyIDBlMzdhOTVjZGNmYjVjNzNmNzc2ZGYwOGQ3NWZlNTIzYjNiOTFmZmMgcmVsZWFzZTMxLW1haW50Cis4MTE4MyA3NzIwMzZhNmY3ZWYwMjg3OWMzYzVlZjI3ZmNlNmQ0NzBkYzViNDE1IHB5M2sKKzgxMTg0IDM2M2VmZmI1ZjcyN2Y4ODY0ZDQwZDE3ZTk0NDQxMjFjMGFhZmEzNGMgcmVsZWFzZTMxLW1haW50Cis4MTE4NSBlZGVmODhmNmYxYWI2MTEyNzU3MTY4NmVjZmQzOTBjMDA3MzQ3MzU1IGxlZ2FjeS10cnVuaworODExODYgMDVhMmFiMjcxYjY1ZjQ4MzZkOTYzMjRjMjJhZGYwNjczZDNkYzg3ZSByZWxlYXNlMjYtbWFpbnQKKzgxMTg3IDk4YzE2MTA0MDAwMmM1MjkzOGJhYWE4YWY2MGY3OGFiZTgyZThkOTkgcmVsZWFzZTI2LW1haW50Cis4MTE4OCBkOTcyZDA1MmVlMjIxN2FiMzhkZjA4NTE1NTJlMGVhMzZiMjUzZGI4IHB5M2sKKzgxMTg5IGM0ZTExYjBjN2VlNTE4M2JkZGMyMmMyYWNhNGZhN2Y3NzZjY2MzMjIgcmVsZWFzZTMxLW1haW50Cis4MTE5MCA0N2I0ZGE4NmI5YjlmNWQwZjI4OGQwYzQyODMwMmUwYWNmNTE0MTkwIHB5M2sKKzgxMTkxIGVhNTY4NWQ5OTQwYTNiOTk1OGIzZTA0NzUyYTA4MTU1ODE0ZmEzMjMgcmVsZWFzZTMxLW1haW50Cis4MTE5MiBiYjlhZTEyNjMzYTk5YTg0YWIwZGNjZWIxNWU2NWE1OTcwMTEzNjM4IHB5M2sKKzgxMTkzIGYzZWE3Y2Q3MzVlY2U3NDE2MjJhODkxMjczYTNjMGE5ODgyYmU4M2UgcmVsZWFzZTMxLW1haW50Cis4MTE5NCBiNWJhN2VhNDI0NmIyY2U2ZjEyZjgzN2I5ZDE1OTE3MTk1OTUzZTI3IHB5M2sKKzgxMTk1IGU5MDk2MDFlMDIxOTlkMjQwNTg3NmI5ZTE1ZmM1ZjgwZTdhMjcyOTcgcmVsZWFzZTMxLW1haW50Cis4MTE5NiAxZTE0OWI1MGFjYTYxOGIzN2NjOTliNzg3ZGRlMzNhNDA1NTY0MjRhIHB5M2sKKzgxMTk3IDkzMTE5MThjMDY0OWRjOTg2OTMwMzMzODUxN2ZiMzdiYzllNjcyNWYgcHkzaworODExOTggMDQyZTZhMzk2YTg2NDQ3MmUyZWMwMmFhNWE5OGE0Yzk0ZGM3MDg4NiBweTNrCis4MTE5OSBkY2Y0NzExNzE1OGYwMTI4MTk5ODgyZjUzNGY1OWMxODZkNWI3ZDc4IHB5M2sKKzgxMjAwIGQyZTY3NTRjYmJkNWU3NDQ3Njc3ZGJhZWRhNDgwZmY1NTA2ZTNmZTkgbGVnYWN5LXRydW5rCis4MTIwMSBlNGRlZGY1NGM0MWUyNDEyODk5YmE3YjAxNzBjZGZiZjNjMzk1ZDk1IHB5M2sKKzgxMjAyIDlhZGUzZTYyMzcxMGYwNDhkZTllYmNlZmQ3NWQwNjlmZTU4ZDlhNmMgcmVsZWFzZTMxLW1haW50Cis4MTIwMyBlZjBmNjM0YWQ1ZmFmZDdiNTY4OWY5ZmRhM2QzNzA0OTRiZjkwODMzIHJlbGVhc2UyNi1tYWludAorODEyMDQgOTkzODNmMWJjMTdjOGY1MTU1YTYwOGFmMTQ4NzFlZmE3NzBmNjEwZiBweTNrCis4MTIwNSBhMGE1MzU5ZjhkMTM2OWYyZjVhZDNkM2EzZTY4ODU4YjhkN2YwMGUwIGxlZ2FjeS10cnVuaworODEyMDYgMTg2ODkwZDdmZTcyNDM2MWFhOGEzNWI4MDJjYWIwMWVlOTdhY2ZlOSByZWxlYXNlMjYtbWFpbnQKKzgxMjA3IGNjOWI4MjgwZTNmNWZkMGFmZDhiMzg5Zjc5MTkyYTc1MjM4MjEwYzMgcHkzaworODEyMDggNzk3MGM0OTkwMTQ0MjdjNDYyY2Q1NDJkNDM4NDhhODZmM2YwMDQ3YyByZWxlYXNlMzEtbWFpbnQKKzgxMjA5IDU0NjhmM2FlZTRhZTFiMTEyMGMxY2RmNGEzMjA5OWJiMTk4YjVjZDYgcHkzaworODEyMTAgZjU5ZjNjNzM3MzRkYjM2NTYwMDJjZDc4ZWU5NzQwNzJmN2MyZTU1ZCBsZWdhY3ktdHJ1bmsKKzgxMjExIDc3OWRiYzUwZjFmODhkZWY3MjkzM2UzYmMwOTUxZWZiMjI2NzY2NGYgcHkzaworODEyMTIgOTJkMWM4ODE5MDcxZmMyYjFhODI5MDBlNDg2OTY4YjJiY2IxNzc3ZiBweTNrLWNkZWNpbWFsCis4MTIxMyA0NjUyZmUwYzNiODk3NGFmZDA4NjkwMTVlOWNkYTMyMDBhY2JmMmM1IGxlZ2FjeS10cnVuaworODEyMTQgZWMxOTkxOWUyN2NmZTY5MDRkN2M2OTQ4MGNiZWRhM2FkNzIyMTlmMSBweTNrCis4MTIxNSA3ZjA1M2UyNWIzMzUyZDRhNmM4ZDVmM2VlMzM5ZmNjNWRiNGNhM2UxIHB5M2sKKzgxMjE2IDM3OGIxY2Q4NDcyZWVmYjFkZDBhMDY2OGExYWU5Mjk3NjMxZGQxNDEgcmVsZWFzZTI2LW1haW50Cis4MTIxNyA5ZTQzODVkYjM3MGVkODdiYmFiMjgwZGI2ZDc4NDE4OTM4NmJmZjIyIHJlbGVhc2UzMS1tYWludAorODEyMTggNjk5MGM2ZGI3YzM5OTRjODg0NGQ0NmU2NjI0MDQwZjgwNzhlZWM2OCBweTNrCis4MTIxOSA0Yzk1OGU0ODkzYmE2OWY4MTlhNmJlZTcyZjEzMTZjMDBhYTdmZTQxIHB5M2sKKzgxMjIwIDFkNGRiZmE4ZWQ0ZjJhZjViZGRlMGU0YTY0NDI0N2MyYTUzN2RjNmEgbGVnYWN5LXRydW5rCis4MTIyMSBjZjI2ZjAxMTQ5NmVkMmJlM2Q4YmYyYjMwNDcyYTQ0YjBmZWIxNDRmIHJlbGVhc2UyNi1tYWludAorODEyMjIgODAwMjE0OGMxYTFiN2RhMGY5MGM5YzdiNTdlYTRhMTMyOGZmMDUzZCBweTNrCis4MTIyMyBjYTlkMmYwYThiOGFjYWExMWI1YzlkNDY5NzIwNjZjMmI0ZmMyMjQ2IHJlbGVhc2UzMS1tYWludAorODEyMjQgZjM2ZTBlMmRhZjQzMmU2ZmMzOTRhMjJlYWIzZDgwZDhlMzliYjQyMCBsZWdhY3ktdHJ1bmsKKzgxMjI1IGYzNTBhY2JjZTc5MGYxZTRjMmM3YmFkMWJiZjFhZmU0NThhYWVlNzggcmVsZWFzZTI2LW1haW50Cis4MTIyNiBmNWM2NDU1YzE0M2M2NzU0NzNhOWE3ZTc1NzAyYjQ4NDJjMTVmZmM0IHB5M2sKKzgxMjI3IDY4ODZlZTljYjcyYzkwOGRhZDliYzdiMzYyYzBkNmQxMjQ1YjIzYjYgcmVsZWFzZTMxLW1haW50Cis4MTIyOCBkMDhkYTQ1NDRlMzEyMTQ4ZGMxYzMxYmE4M2IwNjViNzg0MDg0MzU1IHJlbGVhc2UzMS1tYWludAorODEyMjkgZWYyMmRjMDY1ZTBlMTFiNDNiOWFmZWYxOTk4YjRjMzMzYjEzMGQxNSBsZWdhY3ktdHJ1bmsKKzgxMjMwIGU1NzY1MGE0Y2E4MWE2NDcwZTNkZmFlMDQxZmRjYzNkMjdiYzY4OTIgcmVsZWFzZTI2LW1haW50Cis4MTIzMSA5Njc4MjZkZDVmYzZjMTMxODRhODZiYzIyYmNhMzhhOGRjZDYyZWYxIHB5M2sKKzgxMjMyIDg0NGJkN2I4NDIxYjczYzNhYmMxYjlkNjEwMjQ4MzI1ZmFhYjRiYTEgcmVsZWFzZTMxLW1haW50Cis4MTIzMyA0YmIwM2NjMWQ0MjFmNmNlNTg4MzY1YWY5Nzk5ODU0MjFlZjJmZGI4IHB5M2sKKzgxMjM0IGIyOWFiNGU3NjczNjJlYjRkY2E3NjE3MmQwYTcyYmEwMmY4ODNiYWIgcHkzaworODEyMzUgMmNhNDYyNmQ5YzkzMDM0OGU2NTIyZTcyMzU0NjJiYmJjZGExMzE4YyBweTNrCis4MTIzNiBlMjBhNjc3YWYwMDA0ODE5Y2YwODRjMjQzYTE3OTkwMjA2YTIwYWI5IHB5M2sKKzgxMjM3IDA4YWJiZGM5OWJlNjhkZTc0MmM5ZGQ2NTAyZDEyNWNiM2E3ZjRmOTMgcHkzaworODEyMzggYjRjZmNhNWM0MjhlNTIxNDdhZWIwMDY0NWMwNGMyODQxOGJkYjVlZSByZWxlYXNlMzEtbWFpbnQKKzgxMjM5IGEwOWViM2Q1OWZmN2Y2MWVmMGNhNjQxZGIyZjNlYTg4NDZkMTMwYzcgcHkzaworODEyNDAgZjgzNzYxMjAwN2RjOWFiNzc3NzA3OTE4NTM3MDM3YTNjZGQxNGViMyByZWxlYXNlMzEtbWFpbnQKKzgxMjQxIDhhMDA3OWQ4ZDFjZWY0MzkzZGNjYmY3MDk0MTk0OGM5ZGQ3ZDdjZGQgbGVnYWN5LXRydW5rCis4MTI0MiA3YTdhZTQ3NmRmNGZlMDQyNTA1YmU5ZDhhNjU3MTRiYWI2MjliMzA2IHB5M2sKKzgxMjQzIGMxNzc4M2FlZGNiODhhYmFmOWQzYTMzYzExZjNmMGU3YWJiY2I1NGMgcmVsZWFzZTI2LW1haW50Cis4MTI0NCA4YjY0MDFhZTEyNjI3ODEyNGQ2MGE3NzIxMTk1NWYyOWEwOGZiZjI0IHJlbGVhc2UzMS1tYWludAorODEyNDUgM2YxYTZiMGI3OTBjN2RjNTg1ZTQzZGFiNjI4NTBlMTljMjBiMmUwYSBsZWdhY3ktdHJ1bmsKKzgxMjQ2IDRkMjdlODgwNzI0YWJkMWUxOGJiNDY1NjExMDdkNzIxMGI2ZDUzM2YgcHkzaworODEyNDcgYmMwMGU0NjNhOTViZjVlZGRhMjYwYjVhZTU2NzZhNzEzYzgxYzYwMyBweTNrCis4MTI0OCBhMzNiZWUxNGFiYzUxYjIwOTMyN2MwYTk1N2RmZDZiOGJkMmIwMjM5IHJlbGVhc2UzMS1tYWludAorODEyNDkgZGRkZDFiYzdlODM5MTcwZTI2N2I4YmY0Njk2MjNlZDEzYTU0NDhjYiBweTNrCis4MTI1MCA4OTRjOGU0MjA3NGE5M2IxZWUwNWM2ZGVmZjk5MzczOWFiZTk5ODJiIHB5M2sKKzgxMjUxIDU1Njk2MWY0ZjE2ZGE3MTJjODNkMzg5MmIwZjFmYTY4ZWMyYmE5NGMgcHkzaworODEyNTIgZjNmOTVlZDgyNzQ0ZGIwMmU1YTEyNDI5ZTcxZTdmOTc3ODJkYzJkZiBweTNrCis4MTI1MyAzMWNlZTJjZjdjMzc2YWEzM2VjMTI5MDU5MDE4ODY1OTJlYmVjOTA4IHB5M2sKKzgxMjU0IGNhODE2NDZkZDI5Y2JlNzJjNjJkNGI1MTI2YTA2ODc2NDY5OGE3MjEgcmVsZWFzZTMxLW1haW50Cis4MTI1NSBkMjkzOTkxMDA5NzM4MjAyMzk3MDc1NDY3ZmU5NGUwOGEwZjBlODI2IGxlZ2FjeS10cnVuaworODEyNTYgZDEyYjY1YTc5ODI0ZjAwYzhlZjU1NTBkYWM4YjYxZjMyM2RmZTA0YSByZWxlYXNlMjYtbWFpbnQKKzgxMjU3IGM4NmVlYjczMzMxNmJhMzRlZmZiODBhN2QyZTMxNWU0ZTViYWViYzAgcHkzaworODEyNTggOTNhMjUxNjk4N2UwMDIyMTE4N2E4YTE5ZTA5OTQ2YzFlYjNjNzZkMSBweTNrCis4MTI1OSAwYjA0YzVjYTU3N2QxNmQ0NzczNDExYjNlZWM4MmQ1NmQwOGM2NTViIGxlZ2FjeS10cnVuaworODEyNjAgNzY2NDNjMjg2YjlmMDUxOTZkYjAzZDg4NTE3OTZmYWRiNzIxMTM2MCByZWxlYXNlMzEtbWFpbnQKKzgxMjYxIGI1ZjJjNDQyMWEzMTg2YmVlZTQ1NjEwNzY2MjM5M2I2OTVjY2MxNzkgbGVnYWN5LXRydW5rCis4MTI2MiAwOTkzMjY1MzU2MWI5ZGU0N2RmZjI0YmY0OTYzOTJhNzQzMDU3MjJkIHJlbGVhc2UyNi1tYWludAorODEyNjMgZWM1OTVmZjI1N2UwNjQwMWE1MjNiMDQyYTcwOTlkMjBkMzk3NmQ2YyBweTNrCis4MTI2NCBmZjRhOTY4Y2E3YmJlNzZlNzI5NjI5ZTM1ZDkwYzhhMzk4NDZkYmVlIHJlbGVhc2UzMS1tYWludAorODEyNjUgYzk4MWYwYzg2NzhiNDk4NzVmOTZmNzUyYTdkZmU1OTkyNzYwNGM5ZiBsZWdhY3ktdHJ1bmsKKzgxMjY2IDM5ZWI5MWE1ZjlkY2E4MzZiZjJhZWJhMTNmOWQ4MTJiYTYxOWFkNDQgcHkzaworODEyNjcgZDZjYjJmMTBlNjVlZjg3MzQ5MjhmYzZhY2E2MGVhNzgxOTQ0YjY1OSBweTNrCis4MTI2OCBiOWEwZjI2ZmEyYzk2MzM3ZDExOTdiZDA2ODVlMTk0YTczMTQwMWQ0IHJlbGVhc2UzMS1tYWludAorODEyNjkgN2Y2NGZhZDE3N2RkNmM2Y2I5YzE0ZTQzYWE4YjJkYTI2ZTkyYzY5ZCBweTNrCis4MTI3MCBmMDFhYjFiMTNkMGFlNzdhMzI0MDdlMThlMDM4YTU0YTIyNGJhNjAwIHB5M2sKKzgxMjcxIDg0MDNmNTA2ZDllNTRhNDc3OGJlYWRiZDg0MzhiYmVlYTk2MzlmZTggcHkzaworODEyNzIgZGU3Yzg1ODBmOWViZTY2MDMyMDk2ODQ5ZTcyNjAyNGFkNDY0ZWIwMSBweTNrCis4MTI3MyBiZjE0Yjk2MzhjNzNhNWU5YThlMDIzMmFiNDE3ZTgxZGM3ZjhhYzUwIHB5M2sKKzgxMjc0IDVkYmQyYzI5YjBlOTZlYmUwM2Q2YjhlMTgyMmRhNTJhNWExMWI3MzggcmVsZWFzZTMxLW1haW50Cis4MTI3NSBmMGZjZDY5MTg3Y2QyNmQwNzc2Yzk0NDljYmJlMmNmMjJiOWM0YWVjIGxlZ2FjeS10cnVuaworODEyNzYgZGVjODg3MDJjOWJjNzM2ZDMzNDVhOGE3MTQwYTlhNjM0ZWJhNGNiNyBweTNrCis4MTI3NyAxNzU3YmJlYmY3NWFkYjE2MWYwZGNhYjkyOThjYzBjNjBjOTM0MzhmIHJlbGVhc2UyNi1tYWludAorODEyNzggODJkYmY5M2Y3NjBmNGU4ODAxZWI2NWZiYWQyMzNlMDkxOTM3Mjk1MiByZWxlYXNlMzEtbWFpbnQKKzgxMjc5IGU3NDY2ODU0NDVkZWViMTAzNWI5YjU1OGNlZWMwNTc5ZjZhZDkzNTggbGVnYWN5LXRydW5rCis4MTI4MCA2NjY2MDdjZTRhZGE5ZGJjYjk0ZjVkY2QyYjcxZmUwMzVmNmMxZDVjIHJlbGVhc2UyNi1tYWludAorODEyODEgNDU1ZDNmYmIxNGVjYjc1YWNjMjZkZTA0YzM4ODBlODU2YTQ0MDkxOSBweTNrCis4MTI4MiA4NzFiZmExZmRhNTkwZDEyYjczYzVmZjdmYzNlYjkyOGY3MGFiZTU1IHJlbGVhc2UzMS1tYWludAorODEyODMgZjFlMzdhOGZiMmQxMmI4OTlhNmEwMTY0MGI1NmExNWZlY2U5ZjMyMyBweTNrCis4MTI4NCAxZTUyYmVkODc3YzE3N2Y2NDU4ODNiMDZiMWYyM2MwOWZjMWVmYmNkIHJlbGVhc2UzMS1tYWludAorODEyODUgOGRhMDg4ZDZhOTViMmYxZWQ3OGUzYzkzNWViNzE0NTYwYmY2MTJhYyBsZWdhY3ktdHJ1bmsKKzgxMjg2IDZiMzg5MjZhNWZjZGM0ZWI3YWE3MzdlMGZiZWY5MmQ5NzYwZTRhZjkgbGVnYWN5LXRydW5rCis4MTI4NyA4MGRjNTcwMTc3YzY2OGE2MmIxMjYyNTY5MTc2MzE1ZWFkZmQ4ZjNlIHJlbGVhc2UyNi1tYWludAorODEyODggMTk3NTExYzRiNzVhOTdhM2MwNGE2N2IxYWU5NDNmNzc2NjgyMjFjMiBweTNrCis4MTI4OSBlZDBhNjlkNjZjMTEzNTA4Yjc2ZmZmMGI1YTMyNDg5ZmM1ZmI5OWI4IHJlbGVhc2UzMS1tYWludAorODEyOTAgYmVjODE4YTc2OTAyYTJmNGViZmVjODU1MmU5M2JjYmM5M2E4MzNhZiBweTNrCis4MTI5MSBjZjc0ZWMzZTFmODI2ODI4MzJjZWU2ZjIxNDVmMmYxMTkyZmY0OTUwIHB5M2sKKzgxMjkyIDYxM2I2M2Y1OGJlYmYyOTg0Y2ZlZTJkNDkxZTNkNGMzMThmM2E4ZmMgcHkzaworODEyOTMgODU5YjgzOGVjZjNkYjY1ZWZjYjdkZDkxZTc3NjdjYmUxODRhYTQ5MCBweTNrLWppdAorODEyOTQgZDdkODA0NmY3YTUyZmY2NDQ5YzRiOGJlNDc1NjFmZWRjZjZjZmJlZiBsZWdhY3ktdHJ1bmsKKzgxMjk1IGU4ZWRhYmQ1NDE5YjNlMzQ2Yjc5NTc0OGFhYjcyN2Q1ZjY3ZGFjNWIgc3Nsb3B0cy00ODcwCis4MTI5NiBiNzVlNjJmY2FlODFhNzI3M2IxZDcyZWU2MDMyYjdmZDlhOTVhZmQ5IHNzbG9wdHMtNDg3MAorODEyOTcgMjg1OTBkNWI2YjhiMDg2N2U4NTg2NjgzZGNhMDIwNjMzOGI3YjAzMyBzc2xvcHRzLTQ4NzAKKzgxMjk4IGYyNDcxNDZmOGE5NTllZmM3MjI5YzcwYzE0ZWI0N2M3Zjc1ZjVjZTQgcmVsZWFzZTI2LW1haW50Cis4MTI5OSAyNmQ3NjA1MjAzZGNjMjA3MzA5Yzg2NTMwY2M3OTQ2Y2JmZThhYjVmIHB5M2sKKzgxMzAwIDE1ZmE1OWZjMTQ5ZGJjY2E5OWU0NjA0Y2ZjNWJmOWM1MjU1ZDQ1NzkgcmVsZWFzZTMxLW1haW50Cis4MTMwMSA1ZjMxMzUwYWZiNjA5OGFkN2I1YzZiM2U3YjVmMzgzMjI1NDA1YTE2IHNzbG9wdHMtNDg3MAorODEzMDIgNjM5MTA1NWVmY2EwZGI5NjBjZTA2YzA2ZDhjNGJmYzU0MjUzM2MwZCByZWxlYXNlMjYtbWFpbnQKKzgxMzAzIDEwNjVkMWM1MzMwOWFlYzRjZWFkNTZmMjk1ZmQ1Y2I4ZjRhZGFlNTAgcmVsZWFzZTI2LW1haW50Cis4MTMwNCBmMTRmNDJmMzI5MjJlM2VjOTlmODczNjkxODMwMDY4OGZmMDYwNjBkIHJlbGVhc2UyNi1tYWludAorODEzMDUgYzllZDBjM2Y2ZGNkZDdiMWRmNjRlZjY1OWU2OWQ2NzhmMjhiOGNhOCByZWxlYXNlMjYtbWFpbnQKKzgxMzA2IGM5OWZjYTAzZmEzNzhlMjdlZDg3NDc0YjU5MDkzMDk5OTJiYzBiZWYgcmVsZWFzZTI2LW1haW50Cis4MTMwNyAxOGY2MmE3YTdkYmE4MjM3YjZiZWI1ZDQwOWVhMjM4NDJlNTBjNWIwIHJlbGVhc2UyNi1tYWludAorODEzMDggZjc2ZjgxMDQ0ZDQwODNkNTNhOGY5ZmFjNjljODI0YzA4MDBkZDQ2MSByZWxlYXNlMjYtbWFpbnQKKzgxMzA5IGVmNzJmMTU4NjRhOTk4ZjUyN2NhZjQ3ZWI5N2ZjYmNhYTg3M2JlMDYgcmVsZWFzZTI2LW1haW50Cis4MTMxMCAwNTI2OTU3M2QyMTcyZjBjNDQ1NWY2NzdjYWRiNGY1Mjk4YjA2NDQwIHJlbGVhc2UyNi1tYWludAorODEzMTEgYzFjMWU4YzhkYzljZDFhZDc0NzJmOWY5ZTdmNGYwMTZmMTM2NzllZSByZWxlYXNlMjYtbWFpbnQKKzgxMzEyIDY4NDFiMmExNmE1MWQ1YTU5NTIzMWQ5YTAwZmQzNWYwMTIyZjQwNDEgcmVsZWFzZTI2LW1haW50Cis4MTMxMyBjZTM4MDliODM0NzM2ODA5YzViOGZlOWJiNjA2YTBlOGRkYTIwYWQyIHJlbGVhc2UyNi1tYWludAorODEzMTQgN2ZjNDhhZDE2MDg3ZWYzY2MyNjA1ODE1ODE4OTUyY2Q3MDg2MTg5NCBweTNrCis4MTMxNSA3ZjE1YTYwMDYxNjI3ZGY5YmM1NzE0YzAyOTljZDU0OTM0ZDYzNDRkIHJlbGVhc2UyNi1tYWludAorODEzMTYgYWE3NzdkNDNmMjJmNWU5NDYyYjVlYjlkMzM2NTMwOGVjYTk2ZTZiNSByZWxlYXNlMjYtbWFpbnQKKzgxMzE3IGM4ZDE2NmVjNTQzMDFkZjM3NDJlZThkMzg1ODdiYjBiNjBhMzQ3NDggcmVsZWFzZTI2LW1haW50Cis4MTMxOCA3NWQ3Mzk2NTU2ZmRlODMzMDE3YTEwNjJhZWUyOGZlY2VlYjM4MWQzIGxlZ2FjeS10cnVuaworODEzMTkgOTQyYjNjMTY4ZjE1ZGFmNThiNjQ2YjQ4OWUxNTE4MGQwY2UwMGMyNSBweTNrCis4MTMyMCAxNTA0Y2M1YTE1YTFjNGUzM2Y3YzNiYzAwMzhlYjgxODUzY2VhNjc2IHB5M2sKKzgxMzIxIDg0Njg2NmFhMGViNjZmZjdhZjljZDg2ZDY5YjRmNWE1YmRlMWU3ZTkgcHkzaworODEzMjIgOTk5OTk3NGZmNTA2OTViZDVmMDNmZTg1Yjk2M2NjNzcyMjE0NjAwZSBweTNrCis4MTMyMyA3YmE4NTFkMWI0NmVjNGY0MGQwMGUxYzdjODU3ZjdhNzljNTIyNjA0IHB5M2sKKzgxMzI0IDg5Y2UyZjZkNGIyNDE3NGJmYTJjZGE2MjM1OWNiYzBkYjM1OTdlMTYgcHkzaworODEzMjUgN2RjZDFhMjY5Nzk3YmIwZGEzZjBlZGNmMzdlMzIyNWZhOWEwODhjMSBweTNrCis4MTMyNiA4MWQ3OGRkMjczYjA5ZjBkNjgzNzg4ODY5YzY2ZWNiN2UyOTIxMmRkIHJlbGVhc2UzMS1tYWludAorODEzMjcgOGI3NjZlYzY5Njg1ZDRmNmNmYTM5ZDkzZmE3NWNlYTI2YmEyOTdkOCByZWxlYXNlMjYtbWFpbnQKKzgxMzI4IDlhMjMzMDlkZmFhMzE5OTQxNWNmNmY3MGQ1NDM0ZjZiZWVlYzRlZTAgcmVsZWFzZTI2LW1haW50Cis4MTMyOSBiNmQyYTI3YzNlM2I0NDJlNDgyNzI1Yjg1NTljZjMzMDVjZDhmYjM4IHJlbGVhc2UyNi1tYWludAorODEzMzAgMDgzZjY4NmFhZjE1YTRkOTk1NmViN2VlZmJlY2Q4NDQ4MmM5MWY3YSByZWxlYXNlMjYtbWFpbnQKKzgxMzMxIGYzN2VjZjRhOGZmMTBhZThlMDNjZGZlYTFiYjVkYTQ2YzllODkyNGUgcmVsZWFzZTI2LW1haW50Cis4MTMzMiA3N2ViMWZiNTljNzgwN2VhOGRlZmVjMGE5ZGZjNzBkNjczMGY4Yzg0IHJlbGVhc2UyNi1tYWludAorODEzMzMgM2QwYWU4ZWYwMDQ0NjI4Y2UzOWZlNTdhOGViYjY0OWZhYTlkMGJlZSByZWxlYXNlMjYtbWFpbnQKKzgxMzM0IDI4YmJkMzFjYmNhYjZkNjk2MTkwMjIzYzMzZDM5MzcxNTk3NDIwM2EgcmVsZWFzZTI2LW1haW50Cis4MTMzNSBmNWFhZTg1YjY4NjRlNjk0ZjVhMDU1Y2VlMzBjYzhjNTExMGI0ZDVmIHJlbGVhc2UyNi1tYWludAorODEzMzYgN2YxMGFlY2IwNjMyMmIzM2JiMjVlMGY1MDE4ZDRiZjZhOGJkZmE3NyByZWxlYXNlMjYtbWFpbnQKKzgxMzM3IGFlNGM5MzFhNzFmMDY5Njk1NzcyNjJhOGE1NThmZTkxMmExNWQ1NjYgcmVsZWFzZTI2LW1haW50Cis4MTMzOCAxYTM0ZGUwNDI5NzI4NzA3YmZiMGU4MGJlYzI1ZWMwNDQwNzdmODY5IHJlbGVhc2UyNi1tYWludAorODEzMzkgZDFmMjY1Y2VhNzBiNzQzNmE5YzA1OGNmYWUwYTMyOGUzM2VkZTNjOCByZWxlYXNlMjYtbWFpbnQKKzgxMzQwIGE3MmJjNTRlYzcxZGY4NjFiYWNjMTM4OTUwMGJlY2UwYmM3M2QyYzQgcmVsZWFzZTI2LW1haW50Cis4MTM0MSA2YWUwNzMzMjZlN2ZiODI0NWY4MTQ0OThkZTFkMGMxMDlmNjE0NTQ5IHJlbGVhc2UyNi1tYWludAorODEzNDIgZjQ5MGQxNTgxOThhZGVlZTE1MmJmOGQyOWI0YWM4NjhhMmY5OGJhNSByZWxlYXNlMjYtbWFpbnQKKzgxMzQzIGJmNGU4M2RlNGVhNTI5OGE4ZWU4MTg0NTllNmRjY2UzOTE0ZjM5MzMgcmVsZWFzZTI2LW1haW50Cis4MTM0NCAwNzQxMGFlZTdmYzBlYWY4YzViNTk3OWY4NTY3MTg5MzExZGQyNDEwIHJlbGVhc2UyNi1tYWludAorODEzNDUgMzRlOGJmZWIwYjk4NzlkMTFiN2YzMGZlNmYxMTFhOWQ1MWNlYTlhNyByZWxlYXNlMjYtbWFpbnQKKzgxMzQ2IDU5MDZhMGZjYzgyNmI1MWYyOGRjMzNlZTcyZmE5OGZmMmVhY2U2MWUgcHkzay1jZGVjaW1hbAorODEzNDcgOGY2ZTY3ZjY5M2ZmNWUzNmM3ZTg0ODE1NzY1MTY2NzU1MDMzZDFlNSBweTNrLWNkZWNpbWFsCis4MTM0OCA2NWI1NjFmMzk2NzkzYzRkMDlhMTE2ZDYxNzE2MTQ5MjhhNTZhNjc3IHB5M2stY2RlY2ltYWwKKzgxMzQ5IGUwMjNhZDNlMmNhY2NiMjUyNzlhNDRjMWY5MzFhMDE5YzA3NjhlNjcgcHkzay1jZGVjaW1hbAorODEzNTAgOGM2Zjk4MTY5OWU4MjVhYzBlYTVjYmRhMDcxZWVkYzhkYmNiM2Y1OCBsZWdhY3ktdHJ1bmsKKzgxMzUxIDY4NTI1ZWYzNmI2NjhjMzU3ZTA1ZjhmNmFhMmQwODFmNDllM2I2YzQgcmVsZWFzZTI2LW1haW50Cis4MTM1MiA0YmZiMDBjZTEyYjg1OWU5NWQxNDI1ZDQ2ZDVlMWQwMzU0ZmFlM2U2IHB5M2sKKzgxMzUzIDQ5ZDdkZTlkN2IxYWEwMTgyNWMyMDAzYzI2OTczNjY2MjI4NWI4NTIgcmVsZWFzZTMxLW1haW50Cis4MTM1NCAyMGEzNTZlZWIwZjcwMTAzZGViMTUxYjRkMzNkMjVhNGFiM2ViMGQ3IGxlZ2FjeS10cnVuaworODEzNTUgMjFiYjkzZTA5ODhjNDFiODFiMDM1OGJkMDc3YjBjNTdhYmE1YTcyYyByZWxlYXNlMjYtbWFpbnQKKzgxMzU2IDViZjRhODYzM2M1OGI4NTViMGY4YzczZTM3ZGU3NjZlNTBhNDc3NzMgcHkzaworODEzNTcgZWFlYTgwOGI3ZmI4NjcxYTg4NGQxZmUyZGQxN2EyY2ZjZmY4YzQyYyByZWxlYXNlMzEtbWFpbnQKKzgxMzU4IGI3ZjcxZjYwNDM3YjU5NmM1NWFkYWQwMGMyOGEzYTRiMmM2MDA5ODEgcHkzaworODEzNTkgMGNhZmMyMGU1NjM3NjM0NjVjYzA2ZGYxYTBlNGQ3ZTNkNjJmNmU5OSBweTNrCis4MTM2MCBlNjhlMDI4ZDA5MWU4MzU0MGQxOTQwZTk0MDE1NDViZTUxOWVhODkxIHB5M2sKKzgxMzYxIGU1ZmRlN2FkMWI3Y2M2OTQwMjM4MzA2NmI2OTRmYzUwMmE4NmNlMGYgcHkzaworODEzNjIgY2NkYjA5Zjc5YTAzODU1NWNhZTRlMTkxNDJkNzYxZmQwODI2M2MxNyByZWxlYXNlMzEtbWFpbnQKKzgxMzYzIGJhNTA4ODhjYzAzOTE0ZmQwMDE0MDEyODVkOGRkMDg4YzVhMTcyNjkgcmVsZWFzZTMxLW1haW50Cis4MTM2NCBkZWVkNWZjZTgyZDYwNjlmMDUxYWQxNzM1ZjJjNmFiZDM4YzczMmFlIHB5M2sKKzgxMzY1IGMxYzc3Njc0ZGJjOGMyOWQxN2RkYTg5ZDkxM2Y1ZWIxYmI4Y2EyNzcgcHkzaworODEzNjYgMjQ4YTkxNWUzNWVmMDE2MWRiN2UyYmMxYzhlYjNjNWQ0ZWMwNjRiNiBweTNrCis4MTM2NyAyM2VlOGFhODU3ZWUzNmI5OTdkMGFmYzdjYWEyYTg2YjRmMmFkZDllIHB5M2sKKzgxMzY4IDgyYTQ0ODNkOWM0YTk0MjdhMmY0MjQ1ZDYwODFkZjIyODFhNWI0M2UgcHkzaworODEzNjkgMWYzZTc4MTI2MTJiOGJhMTI2YWUyYThlYmNlMWJmN2MyNTQxN2IzMCByZWxlYXNlMzEtbWFpbnQKKzgxMzcwIDc0M2MyMDdkYzJiNDIwNTY5NjliOGY1ZGNlYmE5YmMxYTFhMjQ0N2EgcHkzaworODEzNzEgMDIxZjVlYzVkMmQ0ZmUzN2QxMGZkZjI1MWEzYjE1YTliMTBlZjM3MyBsZWdhY3ktdHJ1bmsKKzgxMzcyIDE4ZGNkOTAzYzU1ZTE1YjI0NTNkYTg0YzM1M2Q4YTA2NmJiODAwMzQgcHkzaworODEzNzMgZGE5NDE1MDdlZDkzYzQ0YzQwM2M2MTFmMDgwY2Q2Nzc1MzMxOTk1ZCByZWxlYXNlMzEtbWFpbnQKKzgxMzc0IGI4NGY4ZDFhMDUyMmM2ZjkyOTRmZjI3OTAyOGY3ZDhiZjIxN2ZhMDcgcmVsZWFzZTI2LW1haW50Cis4MTM3NSA1MDNhZmM2MmQ2MzJlMTc4Zjg2ZmNiNjExNDE0MDRlMTgwY2I1OWJmIHB5M2sKKzgxMzc2IGZkNzJhZjAwNjBjODU0MGFlY2Q5NTQwYzQ5NDZmMzI3ZTc2NDA5ZTcgcmVsZWFzZTMxLW1haW50Cis4MTM3NyA1ZDZiNzY4OTBmMTdmODgwZmVkZWUwYTAwNGU4MmM2NTA3YzJhM2RkIGxlZ2FjeS10cnVuaworODEzNzggMTI5NDI3YjVlOTE0MWFlOGRjNjI4YzJkMWY1ZjAyMzE3OTZiOTAyMiBweTNrCis4MTM3OSA0ZDgzYmE1ZDBhZjViNDU4MTgwOGYwODEwNWM5Y2Y4YjAxZDYxNDBkIHJlbGVhc2UyNi1tYWludAorODEzODAgNjJjMGU1ZjE0MTM4ZjY5NjEwZjIxYWJlODBmNTk0ZTBkYTVjNGI0MCBsZWdhY3ktdHJ1bmsKKzgxMzgxIDU1ZTIzNjhmNzJmMjc0ZTZlOTMwYWFlNTI0YTJiNWZjZmYwYzdjYjUgcmVsZWFzZTI2LW1haW50Cis4MTM4MiBkOTNiZDUyNTQ3M2M1ZjY4NzgxYmFlMjQ3YmI5NTZjMjE3NTE3YTQ2IHJlbGVhc2UyNi1tYWludAorODEzODMgMzI3MWFmMDM1ZDAxNzhjZGM1NWY5YTliM2Q3ZTlkOTlkNjJjYzgzNCByZWxlYXNlMzEtbWFpbnQKKzgxMzg0IGYyZDNiZjlkYTlhODE1NGE2YmRkMmNjOTQ4OTgwM2UyZGI3YTQ1ZGEgcmVsZWFzZTMxLW1haW50Cis4MTM4NSA2ZmUyNjBiYzA5ODdkYzJjM2NkZWY1ZjA4MGJlMGE3MWI5NDlhOGNiIGxlZ2FjeS10cnVuaworODEzODYgYjNiMjY1ZmJhYWJkZjllYWI0MmM0ZGE2MDQ0MThjMTA3YzlhMmQ4NSByZWxlYXNlMjYtbWFpbnQKKzgxMzg3IDFlNmI0MzVlOGViNmE1MjgxYmVhZDc2MGExNDY2NTkwNjFjYTk1MGEgcHkzaworODEzODggOWRkNTIyZjdjMGRlMjFjY2NiZDE2NGVlZDdkMDI2ZWVhOTMxNzkwYiByZWxlYXNlMzEtbWFpbnQKKzgxMzkwIDdkNGVlMGRjODc2NDQwMTdlZmQ1MzA3NDc5ZWE5MjBjZDJkZDAxZmYgcHkzay1jZGVjaW1hbAorODEzOTEgNGY5ZGIzNWE0MDg2MWRiN2Y3NzU1Mzg1NmQxMTE5YjdhMTZjZTZiZCBweTNrLWNkZWNpbWFsCis4MTM5MiA1ZWU0N2YwYjI2YjAyYTA3YzM3ZGI1NjAwNDUwMGRjYzRjZTU4NDc5IHB5M2sKKzgxMzkzIDIyMjhjMjVjY2UzZTcyZmViMzg2NjhhYzI4ZjVjMGMzMmJlNTVjYjcgcHkzaworODEzOTQgMzcwMzJiMmE1OTJkYjAyMzRhZjE2NjA0YjAwMGQxNjQzODIyMTA2OSByZWxlYXNlMzEtbWFpbnQKKzgxMzk1IDM4NzE5ZjExNjE5YmNkODkxNWY1ZDIyYWQ0OWFlMWUwZWE0ZWIyZWMgcmVsZWFzZTI2LW1haW50Cis4MTM5NiBlM2RhYWMwNjZiOTJlNzhlMmJmMThjZWZmOTRiZmY4Y2ZiYmEwYWYzIHJlbGVhc2UzMS1tYWludAorODEzOTcgZDYwMTZmYTU4ZGY2YjVjZTFmMzdhNTlmNjEzZDk1NzY5ZjQzN2MwZSBweTNrCis4MTM5OCBjMjkxN2FjNWQ1MjZkYzRkM2Y2MmJkNjFkM2FhODA4NTg5NDM5MDgwIGxlZ2FjeS10cnVuaworODEzOTkgM2YwOGQ5OGM4ZmE1ZjA3MTYzMzVjMTZkNDBiZGIzZjMyOTRmZDJjYyByZWxlYXNlMjYtbWFpbnQKKzgxNDAwIDc5NTc2MmI1ZTBkNmU2YjM3ZWRlOGUxYmE3ZmJmOTIzYTBmNmQ0MTUgcHkzaworODE0MDEgOWRiOGM0MTQ5MjFmNzAyNmRkMzRiZTYwOTg4ZDJlOWIzOGQ4NDg4NSByZWxlYXNlMzEtbWFpbnQKKzgxNDAyIGUxOTQwZGRiM2Y1NjVhNjM5NGZhNWQ2YTdjNjFhMTA0MTVlNDBhMDAgbGVnYWN5LXRydW5rCis4MTQwMyA0NDE0OTE1NzJmY2UzYWQ4ZGM5MGUyYjU0OGVjNTg4OGQyYzVjNTVmIHB5M2sKKzgxNDA0IGIwNzJiOWZiMGZkMmRlY2JlMDRmMTNiYjRhYWNiNDJhZDBiOGNiOWYgbGVnYWN5LXRydW5rCis4MTQwNSBmMTM4ZDFiYWNmYzQyODgwNjY0MjAwMTQ5OWJjNzE2ZDMzZGI0MDZiIHJlbGVhc2UyNi1tYWludAorODE0MDYgZGU2MWE2OTcxMmRhZDdjNDVhZmNhM2YyNzJkMWRlZTRmYmMyZmM5OSBweTNrCis4MTQwNyA2Y2EyZTZiM2JmMzE3NzllNmUwNTc2NzA2NjgzOGVmZmRiNjU1MzQzIHJlbGVhc2UzMS1tYWludAorODE0MDggNzM0MTZiMWJiY2Q1YmNhYWZmMjI3YjU2NjU0MTZiNmZiMzIyNzg2ZiByZWxlYXNlMzEtbWFpbnQKKzgxNDA5IDNkNjRkMWFmZTY3NzlhNzMwNGIwZGJkY2U1MmExYmMyMzgyNDg2M2EgcmVsZWFzZTI2LW1haW50Cis4MTQxMCBlMWY0ZmM2M2QyYjNkMmJlNGFmMTdkZjU1NTZiZmFmYjlhNjE3Yzc5IHB5M2sKKzgxNDExIDUwNmU5YmU4NjEzOTM4NGU1ZWRiMDdiMDg0ZjZlZWFlYTBkMGZmYzQgcmVsZWFzZTI2LW1haW50Cis4MTQxMiBlOWEwNDJhMjUxOTcxMzhmNmUyMzA4ZjdmNGJhZjZhNjZjMjIwYjQwIHJlbGVhc2UzMS1tYWludAorODE0MTMgOTQ2Y2M1ZWUyOTUxMTBmMzQ1ZDUzZmY2MmY3Y2Y5ZmVjZjY3NmQyOCByZWxlYXNlMjYtbWFpbnQKKzgxNDE0IDBmMDk2ODI5ZmM5MGI4YjM1ZDkzMzU4NzdjMGY1MDBhZDE4MjgxNDMgbGVnYWN5LXRydW5rCis4MTQxNSBmZjNjNjc2NjEzYWRiMTcwYWY4MGExYTMyNTU2MzExZThjMWFkOWEwIGxlZ2FjeS10cnVuaworODE0MTYgODU0MmI3N2EyOGVhOTY1ODZjMDA4MWQ2NWEzYzRjNTJjODBkYmU3ZSByZWxlYXNlMjYtbWFpbnQKKzgxNDE3IGIwMjUwZmZhMjI2Nzc1ZGVmYjM1ZWRiZTM5MGM4ODdhNzAyYmZlMDYgcHkzaworODE0MTggZmZmMjlkM2U3YTM5MjE1YjE3ZGI4OTczMGE2MTBjZWYwYjY0MTIwZiBweTNrCis4MTQxOSAxYjA0Njc2NjFlZjVhOTBmNDFmODZmNTIwMGEyOGI0ZWM2YjEzNDJmIGxlZ2FjeS10cnVuaworODE0MjAgZmJmYzM1MzY0N2UzYzFiMzVmOGZhMjkxYzUxMzQ1N2UwZjYwNWQzMyByZWxlYXNlMjYtbWFpbnQKKzgxNDIxIDI5YjU2YzM4YTAzM2RjZGExMGM3NjFlZTRjYjEzMWQzM2Q4OTE5YWUgcHkzaworODE0MjIgYWJjM2Y1YTFjYzVlOGNhY2FkMzVkMTViYTVjZTNjZWM3M2E1YzZjYSByZWxlYXNlMzEtbWFpbnQKKzgxNDIzIDA2YjA5Mzc2Y2M1YjA0MmNlMGQxNjFiMzAzNDRhNWQ4Y2MzNGU1NTMgcmVsZWFzZTMxLW1haW50Cis4MTQyNCBlY2E5OGJkYzhhMTRmNDBiMjMyYTM4NGUyZTE5YmI5ZDk1MmE3NmUwIHB5M2sKKzgxNDI1IDIzZTM4MTkyYWY5NjQ4ODNmZGQ2ZTFiNDZjOTYyNDM0YTZlZDY1ODggcmVsZWFzZTI2LW1haW50Cis4MTQyNiAzMTYzZGEyMmQ1ODUwMmFjYzdkY2IzMmMwODVkZTM4MDMwMzYzOTRiIHJlbGVhc2UzMS1tYWludAorODE0MjcgOGIyZDlkMTAxYzg1YTQ5NjZmYjI5MzVhNGU3MWE5OWUwOTI0Njg0ZSBweTNrCis4MTQyOCA2OTg1YzZiOWQ5NzhlNTcxM2EzNTAxOTAwOTAxNGRhYTE2ZjE2M2JkIGxlZ2FjeS10cnVuaworODE0MjkgYjE0ZjM5ZDBmMjBhMmRhZTU0ZjQ5MzdhMzM2YTJhNjI3NDY4NGVkYSBsZWdhY3ktdHJ1bmsKKzgxNDMwIDZhMDhlZWI0YjMyMjM5Mjk3NTRhZTdlZjUwNzFkNmJjZjJjMWZjZjYgcmVsZWFzZTMxLW1haW50Cis4MTQzMSBmZWJkOWMyODhlNzZmODBiYzkzYWY4MjE5N2Q4ZDQxM2NjNTcxYzNjIGxlZ2FjeS10cnVuaworODE0MzIgZjA1ZDI5OTY3NzZlMGVmNGYzNjgzZmUyMWZmYTU0YmNjYmM1MTczMyBsZWdhY3ktdHJ1bmsKKzgxNDMzIDExZDU4NTE2MDMzZjdkNTQzMjllMGE2ZTYxMjhkMWIyZTJmNTRjZjQgbGVnYWN5LXRydW5rCis4MTQzNCA1ZDY3NDk3MGFjZDlhMDY4Y2I3MWM1MmI3YjRhMjBlZjhiYmUzY2ZhIHJlbGVhc2UyNi1tYWludAorODE0MzUgNDk1ZWJlMDRkNDc5OGNiYzBmNjg2YWRjODQ3ODI1ZDkyMGNjY2M1MyBweTNrCis4MTQzNiA2ZWY3Y2ZiMWY4ZjQ4MzFjMGIwMDVlYzMyZDUyYjZkZTQ0YzhjODgwIHJlbGVhc2UzMS1tYWludAorODE0MzcgOGM4ZDQwY2U1Y2ExNWE0NDRjZmY5YzZlMTMxNWQ2MGY4YmM2N2UwMyBsZWdhY3ktdHJ1bmsKKzgxNDM4IGYzODk1NjNmZjM3MjNlNjI2NWNiZjA1ZDc4MzdkM2VhOTE1NDE4NDkgcHkzaworODE0MzkgZTIwZWFlM2I1ZmU0NTQwYTc2YTMwNGNhZTlkNTFlYTQ1Yzk5N2E4YyByZWxlYXNlMjYtbWFpbnQKKzgxNDQwIGMwZGJmYjZhN2Q1NjczMDNjN2JiZTM4YTQ3ZDlmZTFiNTQyNWExMWIgbGVnYWN5LXRydW5rCis4MTQ0MSAzYTZlOTYzN2MzM2RkOWJlMzA3NTk5MWQ1ZmUzZjc2N2NhOWFkY2NiIHJlbGVhc2UyNi1tYWludAorODE0NDIgYTljYWQ1YWU0MDVkOGQyYTk1ZjhjYWExY2FjMzlmOTViMWYyOTUwZCBweTNrCis4MTQ0MyA3MmZhMDBhYzM4YmUzZTBkZDg2YWU3ODYwODM3NmE5MmNkOGRhMWE2IGxlZ2FjeS10cnVuaworODE0NDQgNTI0OTVjY2Y2MWNjODhkZWU3MzVmMmJjMTVkNjc0MWZmMGNjM2E3YiByZWxlYXNlMzEtbWFpbnQKKzgxNDQ1IDk1NDEzZWJkNDA4MTM2Mzg4M2UyNWIyNDFkZjg0NDk1YjA3MGE5YjIgcmVsZWFzZTI2LW1haW50Cis4MTQ0NiAyZDBiMDk4ZjZjYjdmOTg3MDQyN2FjZTkzMzQ4MzUzMTc2ZDUxN2Y0IHB5M2sKKzgxNDQ3IDE5NGY0ODhiOGFkMWE3N2I0NWViODljYzRlOGFjODE0YjBkY2I1ZTIgcmVsZWFzZTMxLW1haW50Cis4MTQ0OCAxYWNjYTljNDU1NjJiOGVmNDdhZjhjYWY2MDY0ZWVjNjdjMTM2OWMxIHJlbGVhc2UzMS1tYWludAorODE0NTAgMGUyNmNiOTc2YzRkOTBiYmRkMzhhNzkyMjk3NDY0NzkwYjZkZGI0MyBsZWdhY3ktdHJ1bmsKKzgxNDUxIDBmNTI4ZWUxNWVmNzIwNjBiNzEzNjExY2E0NjYzMWQ3NDg4OTEzYWMgcmVsZWFzZTI2LW1haW50Cis4MTQ1MiAwMjJjOTNlZDFiOGU4ZjRiZDY4YTQ0ZjY3ZGE4MjM3OTEyMzk0OGZlIHB5M2sKKzgxNDUzIDU1ZTgxOWNiNTM2MTAzNTkyNWM4MmQ2NGYzNjc0NGFhOTQ0N2E3NDQgcmVsZWFzZTMxLW1haW50Cis4MTQ1NCBjNmRmYzNkZDJkNWRmNGExZmIzMWQ0YTk5ZjRmMWFiMDYxZDQzMTY3IGxlZ2FjeS10cnVuaworODE0NTUgMmVhOTA5MjBjYzEwZDNhMTk4MWQzY2I0MWU2NDRiYTczMDhhMzliNSBweTNrCis4MTQ1NiAxNGQyM2JkZGY3OTMzMzRhZTY5ZmY5MzEzMzU5MGViN2Q0MGU5NDRiIHJlbGVhc2UyNi1tYWludAorODE0NTcgODE1YmEzODcyZjg1MDQ3ODY4ODBmNTIwZTIwMGQxOTBiMmYzMDhjNCBweTNrCis4MTQ1OCA4MGJlNzIxODc2N2I3MTJiNzYwNmM2MmJmYWVlMGNhYWU4ZmY3NWE3IHB5M2staml0Cis4MTQ1OSA5OWU5ZWQyMTRhYWRlNmRjMDNhYjQzMjljY2EzM2EyMGY5N2NmNjUzIGxlZ2FjeS10cnVuaworODE0NjAgMmEzODk3MzRkNTcwMjBiOTI2MGZlYTc2NWE3ZGU5Y2IzZmY0YTFhYSByZWxlYXNlMjYtbWFpbnQKKzgxNDYxIDFhZjI3MzUwZjQxYmM2ZmNhN2U1YTQ2ZjA0NjkwMDMzNTVlMTk1ZDkgcHkzaworODE0NjIgODQ2ZGJjZjk3MGFiZWE1Yzg1ZTMzNzQ5MzgxNjZmZjkwNTA2OTFkZCByZWxlYXNlMzEtbWFpbnQKKzgxNDYzIGI3MzlkMzAzNGVjNzUxMjU4NjY1MTQ5YTgxNmQ2Y2VmMTUzMjk4MmQgbGVnYWN5LXRydW5rCis4MTQ2NCA5YTAyMzljMGVhM2I0MWNkZGI5ZDBjOTJlZTQwMmJjN2NmYmVjZDFjIHJlbGVhc2UyNi1tYWludAorODE0NjUgMGE2NDdkMDhlNjg1ZmFmMGI5Nzc4NjBjNzNkNmUyZmU5ZGEzNWEwOSBsZWdhY3ktdHJ1bmsKKzgxNDY2IGYyMDVkNjYwNTZmODlkZDljZmY2NTI5MjM5NDJmMzExNjkxMjM1NmMgbGVnYWN5LXRydW5rCis4MTQ2NyA3NTVhMWJjNTYzMjZlZTA1YTdiM2Q1MGViNGMyODNlZjQxNTY4Nzk4IHJlbGVhc2UyNi1tYWludAorODE0NjggZDZhODg5Njk3MTdmNTViYzhkZmY3MGM5MGJlYmQ3YjhkOTMzM2U3MyBsZWdhY3ktdHJ1bmsKKzgxNDY5IDYzYjU3OGQ4MzNlZTdhZDkzZTI4YTNmN2M1NzhhOTZkYjE4ZmM3M2MgcmVsZWFzZTI2LW1haW50Cis4MTQ3MCAzNTZhNmZjOWU1Nzg1YzNmNjc2NTQ2MmIxOTk0ZjY3MzAzMzFiNTk4IHB5M2sKKzgxNDcxIGJmODJjMWQwNGUwNmNkYWJmY2RiOTIyODE1YjE0YmQ0MTJiZWJkMTkgbGVnYWN5LXRydW5rCis4MTQ3MiA5NzI2YzIxNzM4ODU4MmUxYWJiZWU2MTZiMTNhZDMwMGMzMzMzYjdmIGxlZ2FjeS10cnVuaworODE0NzMgYWIwODJlMzg3ZGQ1Y2UyOTU4M2VjZjE2NzVmMmM5NTBjYjM3YWVjOCByZWxlYXNlMjYtbWFpbnQKKzgxNDc0IDgzMGNkODliMDFlOGYwNGY1ZTEyM2VmZWI2NzM5MmM2NDQ0MWY3NDUgcHkzaworODE0NzUgY2Q0OTM2NjkxMTYzZmRjMjlhNDQ0ZWFmMjQ0NWJhM2Q1NGU3ZjI5ZiByZWxlYXNlMzEtbWFpbnQKKzgxNDc2IDZmZWUyNmM4OWY2ZTRiMmE3NjI5MDY2ZTMwNDkzNzRjODZhZWRlNTIgcHkzaworODE0NzcgNmRjOWVjODg1NDYzOTFjNzMxODE4YWJjNjdlNzFlN2Q2MTEwMDE5MCByZWxlYXNlMjYtbWFpbnQKKzgxNDc5IGVlNzZmMGEwNjVjMjRjOWZjYzI5ZDRlYTNkMmU3OTE1YmQ5Yjc4NDcgbGVnYWN5LXRydW5rCis4MTQ4MCAxZTA2YTZjMzEyMzQxYTMxZmVkZjg2YTcwMmJmNGYzODg5MTQyZmM1IHJlbGVhc2UzMS1tYWludAorODE0ODEgNjkyMDdmODAxYjMxNjY0NTQzYmE0OTFiNmFjZmJmMDEyYmI3OWEzMyBweTNrCis4MTQ4MiA0ZTQ5NTI2MzYxMTM0NWI3ODQwZjFlYWI5ZTJiYzQ3YjM0ZjViN2NjIHJlbGVhc2UyNi1tYWludAorODE0ODMgNTRiNTFhYmI2OTUxMjRkY2U3MTI2NDBmMDc5YmQwOTcyNzdkOGIxYiByZWxlYXNlMzEtbWFpbnQKKzgxNDg0IDFlOGM5MjMxNjQ2MzQ3NGU2YWJhNWY1NjY3M2QxODIzNTM1YTNiYzQgbGVnYWN5LXRydW5rCis4MTQ4NSBiMGRlZTMyYTFjNmIwOTVkZmFhOTM3YTk3M2QzOGI2Mzc0YTA0OGQyIHB5M2sKKzgxNDg2IDBiYzhmZmU2YmE5YWM4NWRmZjg1ZTEyMmUyOGQ0NzVkNGIxNDNlNGUgcHkzaworODE0ODcgYTBhNmU4YmZhYWY3MmEwOTM5MWE1MThjMmJkZDA3ZGNhOGU1NmM1ZSByZWxlYXNlMjYtbWFpbnQKKzgxNDg4IGRjYTNjYjE5ZGJkZDQ3MTI1YTdhYTlhMDYyMmE3ZDUzNDU2N2UyMDYgcmVsZWFzZTI2LW1haW50Cis4MTQ4OSAyMWZhMDlmMjUwZTMwMDZjZGMwYmM1Mjg1OWRkNTMzYjAxNWU1NzU5IGxlZ2FjeS10cnVuaworODE0OTAgNDBjYWQ3NTlhMzU1NDc1NWNkZTc5ODhmZGUwMTUxNjNiOTUwOWYxYSBsZWdhY3ktdHJ1bmsKKzgxNDkxIDc3NTA1NzljMzc1ZGExZDkyODg5NDY4YzA3MGViYWYyMGNhMjMzMTggcHkzaworODE0OTIgZTY0ZWExNjE5ODIwYzBiOWEzZmQ1NTBlNDkxNTkxYzFjNDg2ZTMyNiBsZWdhY3ktdHJ1bmsKKzgxNDkzIDAzNjAxN2YyZTc0YzZhNDZlNDllMjZiNzZlMTM4MDNlNDg0ZDExYzkgcHkzaworODE0OTQgMmYyNGEyZWY3MzMxYzYyZWRmMTYwOTI1MjIxZDM0MTNjNzVjYjMyNiByZWxlYXNlMjYtbWFpbnQKKzgxNDk1IDhhZDYxNzgwNTM1ZWZiNGFkZjg0MGY3NzdkZjkwNjg4N2QzYjIyZWIgcHkzaworODE0OTggYjAzOGZkYTU5M2Y2ZDU4ZTFlOTUzNjVmMWU5ZGQwYzNkMzVhMjZjMCBweTNrCis4MTQ5OSBjNTZmYjYzYzY0OGY0OTgzMjY5NGM0MTE0OTdkY2NlMmY2YmJjNDFkIGxlZ2FjeS10cnVuaworODE1MDAgZWJkYTY4MDNmOGQ1YzNlMWE3NjdlY2NlMTExY2Y1MGYzMzhmNTZkMiBsZWdhY3ktdHJ1bmsKKzgxNTAxIDkwZDYzMTQ2ODRkNDNiZTQ1ZTU5YjJiM2U4YjYwNzQxZjkyNjlhNWUgbGVnYWN5LXRydW5rCis4MTUwMiBlM2I1MzM4YmUwNTg4OTFiZDk1MmZmZGY2NzkyMTY2YzUyODQyMjI0IGxlZ2FjeS10cnVuaworODE1MDMgNGJlMjFhMDhkZDcwNzE2ZTY4Y2M2NDM2NWNmZjNlZTVkM2E4MzZjOCByZWxlYXNlMjYtbWFpbnQKKzgxNTA0IGJmMDRlYWYxYWY3NDhhODNiZDc0MmVmYjA0OTM0MmJhZGY5MmE5OTggcHkzaworODE1MDUgNjE0NDc2MGU4MzUwZDRjM2IwODdkOWYxNjM4ZTUzMzMwNjE0ODNlZCByZWxlYXNlMzEtbWFpbnQKKzgxNTA2IDU4NDkxOTExMTgyY2UxM2MyMTA3YTk4OTdmNTdjMDNiMzM5M2E4MTAgbGVnYWN5LXRydW5rCis4MTUwOCBmOTAzNjhjODdiMzNlNjg1MjllYTEwYmZjNzE3YzRmNGE0ZDBmMmI1IHB5M2staml0Cis4MTUwOSBhOGVhYjY3MDMyNjY2NGNiYWE4Y2RiMTgzNDQ3YThmMWRmZWZlY2IzIGxlZ2FjeS10cnVuaworODE1MTAgNjkzZTJiZWY0ZWUzYmM4MjA0YjM1ZDc3MzdlZTc0YmY3MmYzYzFjMyByZWxlYXNlMjYtbWFpbnQKKzgxNTExIDdmNDFkNzVhZDQzNWQyZDgzNmRmYzdjOGRhMGQxYzFkN2UzNDYzYWMgcHkzaworODE1MTIgYjczYmViZGZlNTI1OWMyYWI3YzM5YThkNzczNTNiM2ExMGM3ZjE2YiBsZWdhY3ktdHJ1bmsKKzgxNTEzIDcwMzI4N2E5OTkzOTE3MGZjMDMxMmMzMjdmYjcyNmMzYzYxOGVjYjUgcHkzaworODE1MTQgNGUwMDkxNGVjNDQ3YmJiZmY1NzU4NDFiMDFmNTBlNWJlZGJlZTlhMiBweTNrCis4MTUxNSA1YmM0ZmNmMDQxNDNkNmM1ZDI5OTI0YjNkYWI0NGU4NDA5NDg2ZmUyIHJlbGVhc2UzMS1tYWludAorODE1MTYgY2UyNjE3MjNiMzU2MmJhYmE4ZDI4MmI0NWFhZGU4ZTlmYzUxZmJkZSBsZWdhY3ktdHJ1bmsKKzgxNTE3IDc4MTliYTc3ZTQ1YzAwMDYzYzZhZTMwOThkMjcxMTNjNGMyMzU0ZDIgbGVnYWN5LXRydW5rCis4MTUxOCAyMjk3Y2Q1N2Q5NDVmMmZhOWM0YjY4NzliMzhjMWM3NjA0YzM5ZTk4IGxlZ2FjeS10cnVuaworODE1MTkgMjJjYWRmMjY0YWU1MjE3ZjIzOWU0ZWIzOTZkMzNjYWU2ODZiYWNjOCBweTNrCis4MTUyMCAxMzIxMmQ3NGNlMDA4ZTkwODRlOWNmMTlmMzA0NjI5ZTlhZmFjNzE1IHJlbGVhc2UyNi1tYWludAorODE1MjEgNTRiNDg4Y2JkMzdlMzkxNDFhNmZhMTY4MzBjMzVhNjQ5YmE1Y2I0ZiBsZWdhY3ktdHJ1bmsKKzgxNTIyIDc2MWFjOTcwM2E5NmMxNDFmMTczMzBhMTI0ODg4ODVlMzRhMmUyYzYgcHkzaworODE1MjMgZThhOTM5M2EwNzQ4ZDVkNTA0MjkwZTBkNjk5MjQ0YTIwNjU4ZDQ2NSByZWxlYXNlMjYtbWFpbnQKKzgxNTI0IGQwOWM5YTkzN2UxMGJmNmE3MTJmYTljYThmMmEwZGE5ZTQ3MjkyYmMgcmVsZWFzZTMxLW1haW50Cis4MTUyNSA4YWMzZDUyNzc0NWM0ZTNhYTdkODk2ZjkxMTYwYTE5ZWNkZjE4OTEwIGxlZ2FjeS10cnVuaworODE1MjYgNDcwODAwODBhYjYxOWI1NzEyNDk4MDI4NTFhYWQyYWIzYTM1OGNkMCBweTNrCis4MTUyNyA0NGY0MjIyZDkxYmQ3MGYxZDA4OTFkNzEzYWY1Y2M5NTAyYTE4NjdhIGxlZ2FjeS10cnVuaworODE1MjggNmRmZjNkOTIxMmE4NjVjMjEyODNhMTllN2JjZDFhMDdhZjhmYTMxZiBweTNrCis4MTUyOSA1NWRjOWVmMTVhYjFhMjQ1ZjQ0MzBkMGQyN2FiNTM2ZjNlOTk3N2Q3IHJlbGVhc2UyNi1tYWludAorODE1MzAgODJjMjQyNmY3ZjNlOWEwN2FmOTIxNDM0YWMzZTMzZDg0ZmZhZmU4NCByZWxlYXNlMzEtbWFpbnQKKzgxNTMxIGYxMzM3ZmU2YjdiNzc5ZWMyMzA1MTEzNGVmMzU0MjkyN2ZhYzhlNDQgbGVnYWN5LXRydW5rCis4MTUzMiBlNGFmNzAyZDYxYjdkM2NhZDc3YjE1NTA3NzNhMmZkMjYyM2I5MmM0IHB5M2sKKzgxNTMzIDRjMmQ2ZTFiODkwZWQ2Y2M0MzZhYzk5OWFhYzUyNmZiMWNkZTI3ZGMgcHkzaworODE1MzQgOTNjNWU2MjQxMzA5NjY4MDkyNDk4YzkyOWQzYTQ5OTQ2Y2ZhOWI2YSByZWxlYXNlMzEtbWFpbnQKKzgxNTM1IDA4MGU1NTA5MTZlZGNkOWE4NGE2Y2Q1ZTAxYmRmMTVjZDJmYTg5Y2MgcHkzaworODE1MzYgZjc4OGFmZjU3MmQxMWM5NTk4MjQ1Yzk3YzI2NGJmMThjNmU4ZDU5MCByZWxlYXNlMzEtbWFpbnQKKzgxNTM3IGJkNWY1ZGY3ZWQ3ODk0YzdhYWJlOWEzZjRhNmRjZTRkNDg0M2QzZDMgbGVnYWN5LXRydW5rCis4MTUzOCA2YTNjMmYwOTRiYmFkN2M3YmEyODYzMzBhMWVjZDQxZjAxOWEzZTBkIHB5M2sKKzgxNTM5IDhkYmJkOTBlZWRhODZlN2M2YTEyNWFlYWRiODZkNGU5MWU3OGRiZmEgcmVsZWFzZTI2LW1haW50Cis4MTU0MCA5Zjc5Y2I5OGQ1NWY0NGVkYWE5OTEzNjY3MzgyZjkyMGM0Y2M2YzdjIHJlbGVhc2UyNi1tYWludAorODE1NDEgODFhNTgwZDk0N2VmNGU4YWM4OGY5NmJlMjAwNzc0ODQzYzNjODk2OCBweTNrCis4MTU0MiAxOWIzZTQ4NTNjNzQzMjJjMGQ3YTk4ZGZhNzg4ZDRkZGYwYjlhYTY0IHJlbGVhc2UzMS1tYWludAorODE1NDMgNDlkNDk3NzkwNjA3ZjkyZWFmYTRmYzc4Yjc1ZDJmYmM5ZjRhZDhjOCBsZWdhY3ktdHJ1bmsKKzgxNTQ0IDcwMmQyNjFmM2EyOWFiZGUxYjg3NTVjMmUzMDRlZjQ2ZjgwNTMyYTkgcmVsZWFzZTI2LW1haW50Cis4MTU0NSA5YWVjNmFkNTNhMWI5NzRhYmYxMDRmMzRmYTE5ZmM4NDhmZDhkNmRmIHB5M2sKKzgxNTQ2IDliOGIxNDAzZjhkZGE4NTQwODYwNjQ1YzhmZDE1ZDk3NDVhMjAzNjggcmVsZWFzZTMxLW1haW50Cis4MTU0NyA0Zjk4MmU5NGFlMTZhYWJmMjA0ZDVkYjIzNmE3ZGFjYWRmMWFlZTA2IHB5M2sKKzgxNTQ4IDgzMjhjNWMzMjcyYzM1MTA0MjA5ZWUyNGFkNDRiMDk1NDgzMTU5ZGEgcHkzaworODE1NDkgNjAyNzAzZDA1NjBhZjUzYTBkZmNlZWNlMzk0YThmMDBiY2FlNmIwMCByZWxlYXNlMzEtbWFpbnQKKzgxNTUwIGZkOTk0NjdhYjRkNTk2NTAyZWQzZDY2N2Y1OTViZmQzMzMzMjgxNGQgcHkzaworODE1NTEgNTZhNTQ5MzZkYTFkYmQ0OTJlMWI2MjY2ZTY3Mjc4NjU2NTI5MWFkNSBsZWdhY3ktdHJ1bmsKKzgxNTUyIGM0ZjczOTc1YTQ0MGE5MmRlMTgwODU3ZDFlZjA0ZWRmN2VkN2E0Y2IgcmVsZWFzZTI2LW1haW50Cis4MTU1MyBlM2FkMWI4YzQ1MjEyOGZkNmJlNDA4OTllNjc3NTllOTYzNjI1ZTMzIHB5M2sKKzgxNTU0IDgxODBhYmJkMDdjYjJlNjBhZmFjMjVhMzhkOTZlYzQ3YmJhZTQxOGYgcmVsZWFzZTMxLW1haW50Cis4MTU1NSA0NzQ1ZTEzYWE5ZTQzNjQyOWE3OWNiNDVhOTM3YWEzNzdkZGJmYzZkIGxlZ2FjeS10cnVuaworODE1NTYgN2NmYmZmYTZhMzBiMjgyYmE0ZWQ2NGU1NzYxZjY5ZTNhNTYwNDZmOSBweTNrCis4MTU1NyBjNDJmZmIzZDYzYWZjNzhhMTVkNGU3MGQyYmIzMjY0ZTA2YmFjMWEwIHB5M2sKKzgxNTU4IDNmNGQyYTgxODEwYzVjYzdjYjEzZTU2MWQ3MjViNjM0OWM1ZTE2M2MgcmVsZWFzZTMxLW1haW50Cis4MTU1OSAxMzA3ZDk3ODc4OWZlZmMzZGFiMTExMDYwYjg0YWEzYmRkZTQxYzJlIGxlZ2FjeS10cnVuaworODE1NjAgN2YzMTJmNjBmZGIwNTE4ZDU1NWQ5YzhlMGUzOWJlNjhkNGJjMDlhMiBweTNrCis4MTU2MSAwMTQ4MjcwMDQzNGQ4YTA5YTNlMzYyMzNjNzc4OTJiN2NlMzZjZTIyIGxlZ2FjeS10cnVuaworODE1NjIgNTU1ZmY1OGNiN2NiOGE3YWUzNDEyOGY0NTZiMmVmMzUzYTBmNDNlNyBsZWdhY3ktdHJ1bmsKKzgxNTYzIGRkYTBlMWFkZDhiMzEyNmIxM2Y2MWNjYWFjNGIwNjNlMGU5NjNjODQgbGVnYWN5LXRydW5rCis4MTU2NCBjMjdlYWQ1MWM3ZGM2MzIzMTlhYjM1YTNjNDk2ZjIxMWY1ZDFkNjM2IHB5M2sKKzgxNTY1IGNmZDIxNWQ5NDk5YzNlYTFmZTUzMjE5YjI0OWI5NTNlMDZhZjY4M2QgcHkzaworODE1NjYgMzExYTI1M2I1OGI3NWQxMGJkMDRmMzBjMDFkZGEyMzAwYjA2NGJlMiBsZWdhY3ktdHJ1bmsKKzgxNTY3IDk2YTdhM2NjNTg5N2ViNDA4Y2NkNDk0MzM2YzI5MjI4ODBkMWE3MWEgbGVnYWN5LXRydW5rCis4MTU2OCA2Yjg5ZGUzNmE3NGZjMjkwZmFhYTBhYjhiZDUwYzRjNTk3YmFiMzkwIHB5M2sKKzgxNTY5IDBjY2YwZmRjNTk2NjUyZTEzMWI4NjgzNWU4ZmRjNTMxMzc4Yzc0NjcgcmVsZWFzZTI2LW1haW50Cis4MTU3MCA0YjE0MmY3YjM4MTJkMDk5Y2I4NjQzMDVjZWEzNjFlYmE5ZGRkZmExIHJlbGVhc2UzMS1tYWludAorODE1NzEgNWNjYzcxZGNiNWRlYTQ0MTdkYjg1Yjk0OTg2ZDFiOTAwNzBkYjA1ZCBsZWdhY3ktdHJ1bmsKKzgxNTcyIGM5YmVjY2I2M2VhOTA5YTQzYzAzN2RmMjJhMzBmNGJkYWE4YzEyZmEgcHkzaworODE1NzMgZjUwMWJlNjM4ODc4YTE1YjJmY2JjNTEzNTkxZjk5ZmQ3Mzg5MmE2MyByZWxlYXNlMjYtbWFpbnQKKzgxNTc0IDI1ZjJhMGYwZTlkZWJkMzA4YTIyMWI5YmFhYTk3MjI3NWFlOWJhYzggcmVsZWFzZTMxLW1haW50Cis4MTU3NSA1Y2MzYTBjMTQ4MDJlYmJhMDUwNjBhYTI3NDU0MWUzMjM5MTA2YTc5IHB5M2sKKzgxNTc2IDdmZTliNzkwMDU0YmFkYjg2NTRlMTg5YTczZGQyZmRjMGI4NTU4OGQgcmVsZWFzZTMxLW1haW50Cis4MTU3OCA5NTI2YTkwOGEyNThkYjg2NmJhNjVlNzI4Y2FmOTAwNDJjYmMwMDBlIGxlZ2FjeS10cnVuaworODE1NzkgMWE1OTI4YjI1OTNjOTBmNzY4Y2MzMTMzNGU3YjhhOTczYzdiNGZjYSBsZWdhY3ktdHJ1bmsKKzgxNTgwIGJkOWNiMjRiYTY4YjQyZDUzMGZiOWM3MTlmNDY5ZWI4ZDRhMzVhYzEgcmVsZWFzZTI2LW1haW50Cis4MTU4MSA2MjE5NDE1NTc4OTgzNmVjOTI1NjE1NThiMGMxYWU2NDVmZTA0NDU2IHB5M2sKKzgxNTgyIDdjOTQ3NzY4YjQzNWQ5Mzg5OTk2ZGQ1YWNmM2Y4ZjhlMzJkNzJkNjQgbGVnYWN5LXRydW5rCis4MTU4MyBmMTJiMDFlNjhmNjQ0ZmMyMGRkOThiOWI0NDlkYWIyODY4MTI0NmI3IHB5M2sKKzgxNTg0IGI2OTdlMjFkMWU3ODY3ZjkyMmEyOTVkYzZkM2ZjYmUzMmNjOTc5ZmMgbGVnYWN5LXRydW5rCis4MTU4NSBmMDAwNzU0Yzg5NDNlMTgwNjkwMzQ4ODE5ZjA1ZjBiYmVlYzhlMTQyIHB5M2sKKzgxNTg2IDQ0MTU1OTliNzAxMTZmZTQ5MTQ5ZWNmNjQ0YTE2ZWMyMGNkNzVkNzggbGVnYWN5LXRydW5rCis4MTU4NyAyY2ZiMThmMWMyOTMzY2Q1MDlhNWE0YTQwZjBiNzM2YjBlMmJmNTcyIGxlZ2FjeS10cnVuaworODE1ODggMzA4ZWRmMTFjN2NmZjY4NTJhNjE0MTdjMjA1NDUxOTFmMzMzNDI3MCBweTNrCis4MTU4OSA5YTA0YmRjNDgwODk4M2YyZjE3YWE5NTk2YzE0NWI5MTFhMWI5ZDYxIHJlbGVhc2UzMS1tYWludAorODE1OTAgODUyZDVlYTYyNWU3NDk1MjMyNTRhZDg2MGRhNjI2ZTIxYzVmODk3NCBweTNrCis4MTU5MSA0OWFiNWRiYzRmYWM5YzQzYjRiNDM0MzQyNjgyMWY4ZTJhNTJiYWNlIHJlbGVhc2UzMS1tYWludAorODE1OTMgZDVjNzlkODliMzkzYWZlNmY2Y2Y2ZmY2YWVlOWE0ODE3MGUwYmE3ZCBsZWdhY3ktdHJ1bmsKKzgxNTk0IDJiNTg3ZTdmMDI5OWI5ZjhkNjExOTBhMTk0YTA4Nzg1NGRjNzMyMjcgbGVnYWN5LXRydW5rCis4MTU5NSBiNzk5Zjg2MmZiMjE4YjQyYmM3Yzc0YzI1MmI5NDIxOWVhNDU1NjcxIHB5M2sKKzgxNTk2IDMyMmJmNGZmNGQzZDZlZmE1NDQ4YzJiYTk5YTM5NDI5Y2VmYmQ2ZWMgcmVsZWFzZTI2LW1haW50Cis4MTU5NyBhOTE3NDczMzZlYWU2MDI0ZjY2Mzg2MTgwYzc0YzNlOTRlOGQzN2JiIHJlbGVhc2UzMS1tYWludAorODE1OTggMDM3MmI0YzdiOWY0ZjZhMjdmM2RhZTg3MjFkZDRlZDQyNjMxOTM2NyBsZWdhY3ktdHJ1bmsKKzgxNTk5IDE2NDE5M2FkZTRiYWYwZTc0NjUzMWZlZTZiYWZlM2ZmZjZjNGFhMGUgcmVsZWFzZTI2LW1haW50Cis4MTYwMCA2M2U3OGZjZjdmOTRhY2U2NjFjMDc0N2U4OTUzZmNmMjJiNzI3MDI3IHB5M2sKKzgxNjAxIGE3YTliNThkMWMxODY3NTI4MDdhY2IzYTgzYmE0YmVmM2E2NzlmMDkgcmVsZWFzZTMxLW1haW50Cis4MTYwMiA2ZTcxZWNhNjI3OGNiNTc1ODMxOTJiODhhOTBhN2M5YjY5ZDFjOGU5IGxlZ2FjeS10cnVuaworODE2MDMgNWQ0M2I5NjYzNmM4ODg3ZmNjY2JhMjI5YWZmNGJmNTc5NzNiZGIzMCByZWxlYXNlMjYtbWFpbnQKKzgxNjA0IDA0NzBkYzYzZDEyYTk4MDNiZWNiMDYyMGI3ODdmYTMxOTY5MmJmYzcgcHkzaworODE2MDUgOWZhNWVkNGNhMGJiNWI0OGNhMGUzYTdjZWI1ZmNkZTkxYTdmNDVjZCByZWxlYXNlMzEtbWFpbnQKKzgxNjA2IGVkNzlkYTNhNTkxYzRhODA5Yjg2MjQ4MzBlY2JhZThkNmUzMTI5NzQgbGVnYWN5LXRydW5rCis4MTYwNyA2YjdhZjVhMjVkMmU4ZDJhM2MwNDhjNWVmYzY4ZjdiNTM5ZmYyNmQ5IHB5M2sKKzgxNjA4IDA1ZDZiMjVkZDE5NzE1YWI4NTg3ZThlN2I3Yjg5Njc1Nzk2ZmI0OWIgbGVnYWN5LXRydW5rCis4MTYwOSA5YTRiMDJiYWE3YzQzMTMwZThlMmIwYmZhYzU3MzVkYTVmZWQzNDdkIHB5M2sKKzgxNjEwIDNlZGZhZDI1NDljNjE3OGRhMTM0NzQ4Yzg5M2Q3ZmJlM2RkODE0YzcgbGVnYWN5LXRydW5rCis4MTYxMSA1ODMzNzk1MDYxYzVkOTcwODVlOTU4YzczNDZmMWFjNDc3NTgwYjRmIHB5M2sKKzgxNjEyIGU3NjZjMGQ4NmNmZjlkMWU1YmE2ZTNhNTdjY2RkMTgxZDBmYmE1MDMgcHkzaworODE2MTMgNjZiM2VkYTYyODNmZWFjNmE5YTQwMzFmM2UwM2NkNTk3MmU4YjQzYSBweTNrCis4MTYxOCAzMjQyYTBkMjJkZTYzOGFiNzJkZDQxOWY5YTRhMmQyYzllZDc0NGZiIHJlbGVhc2UyNi1tYWludAorODE2MTkgY2FjMDBjYmJlNzcwOTQzMzliYTFhYmMxOTNlZGYxYmQyZTJjOTMwZSByZWxlYXNlMzEtbWFpbnQKKzgxNjIwIGIxYjMxNzc1ODY3NjUzMmM2NTJlM2ZiYzBiYjcwZGU2MTYzNWE5MDEgcmVsZWFzZTMxLW1haW50Cis4MTYyMSA3OTQ1MDQ1YzNhNzU5MjA1ZTI1ZTE1N2FiNjA3OWJlOTUxYzdhYjcwIGxlZ2FjeS10cnVuaworODE2MjIgYzk2MzQ3OGI5MDkyZGVjZWY0MTNjZjYwYTk5MjkwZDZhOWQxYTM2MyByZWxlYXNlMjYtbWFpbnQKKzgxNjIzIDhlMjFjNjgzMWM3ZmE2YjNmOWRiZGNiZWY1MTM2MTkxMWYwYmQ3YTUgcHkzaworODE2MjQgOGExM2Y3NzNhOTc2MzllOThmYzdkZWExN2Q4NTc2MjJkMTZiNzRhYiByZWxlYXNlMzEtbWFpbnQKKzgxNjI1IDNlNjQyNWMyMjFlY2ZjNWE1ZTA2MDA4ZmEzZDNlYTJlNThiODIzODAgcHkzaworODE2MjYgZWJiOTEzMGFiMGM0NThmYWEwNmVmNTMxNDk0OWQ2MTY3Y2Y3NWI5YiByZWxlYXNlMjYtbWFpbnQKKzgxNjI3IDU3YjkwMzUwMzcyZjhjMDI2ZjZjNmU1ODBhZWEwYWRiNDkzOThhYzQgcmVsZWFzZTI2LW1haW50Cis4MTYyOCA3MTQ2NTNkZDRhYWRhZDQ1M2NjYWI5YmFjZGVjMTFlZTA4M2MzN2UyIHB5M2sKKzgxNjI5IGRjMjc2OGM5OThkZTEyNTBhZWJlYWZjZmRjYzJjMzQzNzBhNWQyMmIgcmVsZWFzZTMxLW1haW50Cis4MTYzMCA2NjEwOWQwZTRlNmRmMWRlYTRiN2Y5OGMwYTExYjNhZWEyZjFhNTg1IHB5M2sKKzgxNjMxIGViZDY1ZWM1NGQ3ZTliZWY1ZDZkNWEyOGNkN2EwYWM1MjI2NTAyOWUgcmVsZWFzZTMxLW1haW50Cis4MTYzMiA2MmNhNTQwZDhiNmU2MTUxYWQxMmU5NTk4MjA5YjcwMDRmN2U5ZWQ4IHB5M2sKKzgxNjMzIDlmOTJjYmFhNTM5ZDZhNDNjNTgyMjk1ODNjY2ZiY2FiM2ZlYjJmNzEgcmVsZWFzZTMxLW1haW50Cis4MTYzNCBmODEyNzFjMThlYjAxYWRjNjU5OWI5MTY0OGY4MWVmYTYxYjQ3OGUwIGxlZ2FjeS10cnVuaworODE2MzUgNTNlZTQ3MzIyZGQyYTJjMmEzNDgyNmIxYzQzNTA0OTYxNzY3NGJjMiBsZWdhY3ktdHJ1bmsKKzgxNjM2IGQ2OWIxYTJkOWJmMGVmMTA0ODFlMzQ3ZjhmMzFmYmYwOTQ2YWE3ZTQgbGVnYWN5LXRydW5rCis4MTYzNyBkNDI2MGRjYWZjN2ZiNjJiNTM3MDNiYzQ0ODBhYjBiMmIxNGYyZmFlIHJlbGVhc2UyNi1tYWludAorODE2MzggOWMwYzI3YTliNzFjNzljZjIxMTZmZTZjOTczNGYzOGMyYzFiYmE2MCBweTNrCis4MTYzOSAxMDk3NzcwOGRiMmVhYWIzZWM5NTRkOWYwYzA3MWJhNjM4NzQyNGQ5IHJlbGVhc2UzMS1tYWludAorODE2NDAgODk4ZWJiMjk5MGRmYTU5ZjE5YTdmYzc5YTIwZTY5YmViZjdiNGI3OSBsZWdhY3ktdHJ1bmsKKzgxNjQxIDJkZTcxMjMzYjY5YjBkMjAxNmVjNmFiNmNjODU3MTU2NDVhZWU5OTkgcmVsZWFzZTI2LW1haW50Cis4MTY0MiBlNGNiYmJiNzg2M2I5MmRiOWJhNjczZDllY2MxYmY3MjllNzAyYjRkIHB5M2sKKzgxNjQzIGNmZTEzODYwMGY2NGM0YzdiMTVlMWUxYWM4MGIyN2VjZjQ3ZjM2OGIgcmVsZWFzZTMxLW1haW50Cis4MTY0NCBhMDNiOTU2ODM1OWM1NWRkZWMyOTdhM2RmZWM0ZWVlNDk4MWU0OTAxIHJlbGVhc2UyNi1tYWludAorODE2NDUgOGUyOTRkZjBlMzgyYTQ2YjFhZTA2MmUxZTgyMWM4YjRkYmM2ZjM3ZCBsZWdhY3ktdHJ1bmsKKzgxNjQ2IDdiMTEyNmI1YmUyZDZmMGQxNDUzMDM5MGQwNzNhM2U3MWI3YTAzMWUgcmVsZWFzZTI2LW1haW50Cis4MTY0NyAzNzllZTIxMjE1M2UwM2Y4YWYwZjYwY2M2ZmI2N2RiYzdhY2Y1MjZjIHB5M2sKKzgxNjQ4IGQyMGRiM2VlODQ1NzU1ZjVlNjdiNTBjYTY5ZWI2NjVjMjk3ZGZhZWUgcmVsZWFzZTMxLW1haW50Cis4MTY0OSBiZDQ3Y2QxZjliYzJlOGJjYzI2MzA5ODA5YWRlYTUwYjFjYmMyYWIyIGxlZ2FjeS10cnVuaworODE2NTAgMzRhNjM3YmZkNGJlNzhiOWU0NjFkNGYzMzNjNDBjY2U4N2U4MWY2ZSBweTNrCis4MTY1MSBlYTQzYjQwNjQ1MGY5NGZjMjZiZWVlNTdlOGYyM2MxZjc2NGRiYWYwIGxlZ2FjeS10cnVuaworODE2NTIgM2I4MDcwOTEzMTY5NDk2ZjhhYjNjZTA1NDkwYTQ5NzI1NDJjNzVjZiBsZWdhY3ktdHJ1bmsKKzgxNjUzIGI0N2M0Y2YyNWYwMjJkNzU5MDYwNDFlMzM4NmE4ODI2N2M4ZTdlODkgcmVsZWFzZTI2LW1haW50Cis4MTY1NCBjM2FkYjkxY2E1ODk0NzA5OWViZmQ4ZjExNWQyMzUzOTA0NmQ0MmFjIHB5M2sKKzgxNjU1IGRmZjVmMDliNWE4NjAxODJkY2Y2Y2E3MzJmNDFhNTU1MDQ2NWU0NTIgcmVsZWFzZTMxLW1haW50Cis4MTY1NiA5N2VkZjBlYTAzZjliMTRlMmE0OWQ0OGE2YWExNWNhODBjZjMzMmU2IHB5M2sKKzgxNjU3IGRmYmQzNDVmNTNmMDNhNTg1ZTdjMDQyMjY1ZDcwYmQzYzVmMDIzNDcgcmVsZWFzZTMxLW1haW50Cis4MTY1OCA2YjA3Mjk0YjEzNTIwZTJkZjU2NTZkM2QwYmQxMjVjNTY3ZWRiMmNiIGxlZ2FjeS10cnVuaworODE2NTkgZGQzNzhiODg1Yjk0MDM2NTQwZjJjOTU5NTAxYWFlNzQyZTlmOTViNCByZWxlYXNlMjYtbWFpbnQKKzgxNjYwIGJiNjNlYWVmYzVhNjhkNzhmZGQ1YWE4MjJiMmU2MmM5NGM4YjRiNzIgcHkzaworODE2NjEgODMzZGU3OTg4NWU0ZmM5MmM2ODQwZjhhMTJmN2JmZDZmMTkyNTI1ZiByZWxlYXNlMzEtbWFpbnQKKzgxNjYyIGY2ZTkwMTgyNjg2YmM2MTVkNDdlZTg0OTZjOGQ5MDk4MTExM2Q4NzkgbGVnYWN5LXRydW5rCis4MTY2MyAyOTFiMGJiNjNmYjc2YmFkODQwMDMxMWFjNTc1NzIxODc4Zjg4NTllIGxlZ2FjeS10cnVuaworODE2NjQgZWQ5ODNiMTE2YTdkZTAwYWQ3MWIyZjU3MGM0Y2M3OTc1NDkwZDEyMSByZWxlYXNlMjYtbWFpbnQKKzgxNjY1IDhiYmQ0ZWI0ZWZjNDFlM2MzNzc3YzM1YjIzZGVhZDFhMzgzNGZkMzcgcHkzaworODE2NjYgY2VhNWVmNjgyYmRkNGM2ODM1NTBhMGI5MmE5ZGZkNzBkN2I1Y2I0YyByZWxlYXNlMzEtbWFpbnQKKzgxNjY3IDlhZjYwMGE2NjExNTcwMTA4OWZjNzVjZDZjY2YwNDg1Y2M1ZjhmNzcgbGVnYWN5LXRydW5rCis4MTY2OCBhZTExZjU2YWQ1ZDc0N2RhZjIwNzFiN2JmNzMwZmI2ZDc0ZTk0OTdiIHJlbGVhc2UyNi1tYWludAorODE2NjkgMWI0YzMwNzQyYTI0YTNjNjc5ZTgwYjUyOGQ5MGUzZTI4MmJiMjljYiBsZWdhY3ktdHJ1bmsKKzgxNjcwIGJmYmYyZDY1MGYyNjkzNGQ3Mjg5OWRkZWRmYzhlMWZkMzJhM2EyMTMgcHkzaworODE2NzEgMDUzNGNlMDFiYTUwMjliM2Y1NDYxYmE1M2ZhNGUyMjQ2YjM2M2ZjYyByZWxlYXNlMzEtbWFpbnQKKzgxNjcyIDg4MjVhN2U2YTVmMDFlNjk3ZDM2MWVmYTU0NTllYjIxYmM3NTk1NmQgbGVnYWN5LXRydW5rCis4MTY3MyAzNzk3ZWU1N2QzZDZlMzg1YmVhNzQxNDYzZWQ3MjZmODNiMmI4ZjYxIHB5M2sKKzgxNjc0IDE2ZmJkZjEwZDEwMDE4ZmNjZGM4M2YxMzA1M2RlNjkxMjFjMzQ1ZmEgcmVsZWFzZTI2LW1haW50Cis4MTY3NSAzZDExYmE3OTg5ZGYwYjUwOGVjOTBmNmFkODUzOTAwYjYzN2UwMzEzIGxlZ2FjeS10cnVuaworODE2NzYgNWUyOGEzZGZkZWVmM2Y0ZjFjNjc0MjVhZmQ2NDQ4YWRjMDllY2JmNCByZWxlYXNlMjYtbWFpbnQKKzgxNjc3IDI1YjQxNjNmZmUzZmQyZTY5ZDc1YmVlODAyN2M0YTQzMGJlNmMwMTUgcmVsZWFzZTMxLW1haW50Cis4MTY3OCAzOGRkZWNjZjAyYTk0MjI3YzUyZWY0ZmQ3Yzk3OTAwZmU0MmM1MzIwIGxlZ2FjeS10cnVuaworODE2NzkgMTFhY2M1N2Y1ODA0Y2FiYzBjMDg0ZGNmZjY1ZDAxMDVkYWU1MzkyOSBsZWdhY3ktdHJ1bmsKKzgxNjgwIDZlMTIwZDkzMTEyZWNhNDJmN2Y0Nzk2NTBiZDg5MGIzNTg1NWU3M2EgbGVnYWN5LXRydW5rCis4MTY4MSA1MzJlOWU2YWM4MjVmMWNmYjM2YWY3NDYzZmQ4YjdmYjhkN2I1ZjE0IGxlZ2FjeS10cnVuaworODE2ODIgMjY4MDMxNjhjZThhNzQ3MmRmNWFkYWM5M2E4OTAzOGFlZDhhOTA4MiBweTNrCis4MTY4MyBjYjRmYTNlNGI4ZDU3NjgwMTlhNjk1NGY3MzVmYWI0NWI5ZDFkYWY0IGxlZ2FjeS10cnVuaworODE2ODQgZGQ2NjM2ODIxN2MxNjI2ZTMxZjRiZWJkODQzYmM5YWVkODNkYTEwOCBsZWdhY3ktdHJ1bmsKKzgxNjg1IDIyYzBlMjI4ZDVhN2MxMmY2MzQzNjMxYTMwNGFiZDhiNjk0YmJiMWYgcHkzaworODE2ODYgYmYyMTAzYTIyZTAwNzhlNmEzZDRhNWQyYjNhOTE0YmQzMGY5ZTM0ZSByZWxlYXNlMzEtbWFpbnQKKzgxNjg3IDNiNjdmYTM1ODVmMDdjNTUwN2U5MTViNjAzODE3NWRiY2M2OWVmNDYgbGVnYWN5LXRydW5rCis4MTY4OCA5ZmE1NTkwMjU5ZjQ2NGIwZDU0YWRhYTQ5NTRmYTU4NDlkNDg0ZjMyIHJlbGVhc2UyNi1tYWludAorODE2ODkgMDc3ZDI5Mzg0Mzk5MThkNjNhY2QwMWY0MjFkM2M5OTU4OWJiNmQwNiBweTNrCis4MTY5MCA3YjU5YjFmNjMzY2I0ZTI2OGEyZmQwOGI2OTI3MzdhM2YxNDg4YmE1IHJlbGVhc2UzMS1tYWludAorODE2OTEgZWFjYmU3NzRmMDI5ZTRkODllN2ZhNDc3YWM5YjQzZTUxOGM0NjBhMiBsZWdhY3ktdHJ1bmsKKzgxNjkyIDQxOTkwMWU2NWRkMjE5ZGE2OGVlZjBiYWZhNDk2NjY3YmY4MjMzY2QgbGVnYWN5LXRydW5rCis4MTY5MyA4MjQ1NjgzZTZlYzYxMGNiZTkwZjczYTlhNDg5YTAzZDM1MzhlMDk1IHJlbGVhc2UyNi1tYWludAorODE2OTQgMTA5YTk4ZjlmY2RkZDM0YmJhOTZlZGNmNTA1ZTJiYzlhYWE4OGNjYyBweTNrCis4MTY5NSBjZDE5MmQxZmNkNjc2M2IxYzNjNWQxYmEwN2M3M2I4MjQ2YzY2MDRjIHB5M2sKKzgxNjk2IDg0OTg4YmI5MWZiZjYzOTliOGFjNjJmMmNiZDg2MGE0NjI0NGU3N2YgcmVsZWFzZTMxLW1haW50Cis4MTY5NyBjMTYwYWYwOWM1YjAxNjVlZjNkMTJkZDc1MTMxOWYwN2EzOTE3ODU5IGxlZ2FjeS10cnVuaworODE2OTggMmIyNWI1MGVhZWFkZDU1ODljNTk5N2FjNGI3MjgyODNhNTMyMjM3ZCBweTNrCis4MTY5OSAwYzc3NjRhYTY5NGExODZhNDEwNWQ0OWJhNGQ5MGRhZjUwODYzMDkxIHB5M2sKKzgxNzAwIDRjMGIyYmJkZDgyZDE3MDQ3YThjMWY1OTI4MTBhNmE4ZmFjNDQzZTEgbGVnYWN5LXRydW5rCis4MTcwMSBhODBjMWI5NjRhNmZlOTZmYjlmYmI4NmQ3ZGQwMGFkN2VmNTVmMzY3IGxlZ2FjeS10cnVuaworODE3MDIgYmJhZjYwNjJmMjQxNDM2YzljMDg4MDM4MTlhMDU0ODU2ZjQ3NjNhOSByZWxlYXNlMjYtbWFpbnQKKzgxNzAzIGYyMTRlMWJmMDMxZDI5Nzc1OWQyNzFmZGYxOGMyNmVmOGEwMzNlNzMgcHkzaworODE3MDQgNTJlOTJlNzdiMzExNGQ0N2Y5MzE3MjczMzA0MDJmMDg4Y2Y4MDNiZiByZWxlYXNlMzEtbWFpbnQKKzgxNzA1IDczNDQ0OGU4NTZhYTdjNmNlYTAxMGJjMTUxYThiZGU3NWJlMzRhYzYgbGVnYWN5LXRydW5rCis4MTcwNiAwOTE3NmQwYmRlMzg0OWUwZDFlOWUzOTlmOGIyMzkzM2ZhZmY4NjM1IGxlZ2FjeS10cnVuaworODE3MDcgZDc1NDFhNDkwY2JkODQyMzVkZWU3ZGUyMWFiYjc0OTY1YjFjMzVlMiBsZWdhY3ktdHJ1bmsKKzgxNzA4IDliYjVjMjJlZjEzNDIzYzVmMjJjNDI2ZTE4NTliMWVmN2E5ZmQyNWQgcHkzaworODE3MDkgNWNkZjI2NTc2ZThlYTFmZDQwNDE3NGE5ZTNiNzlhMzQ2NDJiNWMyYiBsZWdhY3ktdHJ1bmsKKzgxNzEwIDE0MmNiNmY2MGZkN2U5NTFjNTJjNzUzN2Q2ZGVlNjIwNDQ1ZjRmZmMgbGVnYWN5LXRydW5rCis4MTcxMSAyM2VkODM3NjE1YWFiNDllMTA1ZTA5MzYxMDE2MjgzYjYyNjJmZGQyIHB5M2sKKzgxNzEyIGRkYTliZWU1Yzg0YTAwMGQwOGMxOWM5YmE2MGQ3NmVkMDE4NDUxMjEgbGVnYWN5LXRydW5rCis4MTcxMyA2MDYxM2U4MWZiMWU4NTJkMTNiYzdlYTcyOWZlMDdlNTY0YWJkNjk2IHB5M2sKKzgxNzE0IDU5MDllMWY3NmJlNzQwZDYyYzJhMDg0NGUwN2E3MGU3YzkwYjg4MmUgcHkzay1jZGVjaW1hbAorODE3MTUgMmI1NzAyZDg4ZjI3NWU4ZmEwNzliZjdlZTI4ZmFiN2FkODQwYTNmNSBweTNrLWNkZWNpbWFsCis4MTcxNiBjODg2NDgyNzcxMzhmMWJjNWI2YzBiYzUwZjI5ZDQwMTM2NjlhMmExIHB5M2stY2RlY2ltYWwKKzgxNzE3IDZiNTAxM2ZlYTgxYmJmMGVmNTQ3ODgxYmYwM2MwMTFkYWJiMTRkOWIgcHkzay1jZGVjaW1hbAorODE3MTggNjFmNTQ2ZTg2MWMxMmY3NjE3Yjk4ZmNmZTU4ZTUzNmJjOTAxZjRmNiBweTNrLWNkZWNpbWFsCis4MTcxOSAwODI5ZjYwMjA4MGI5ZGI3NzJlOWY0YzJkNjcxY2YzOGUyZmUzZmQ5IHB5M2stY2RlY2ltYWwKKzgxNzIwIDZmMWYwNWM3MjViN2MwZjU3N2ExZDZiZWEzZmFiZmQwNTJiOTVlODIgcHkzay1jZGVjaW1hbAorODE3MjEgMWZkMzY1ZDM2OTU5NjJmMzFjOWEyZTQ2OGU5M2RhMGYxMTEwOGExMCBweTNrLWNkZWNpbWFsCis4MTcyMiBhNDA5YTVhYjgzYmJjYjJjNzhlNWMzZDk1N2JlNWFiNzM4NjE1ZmQxIHB5M2stY2RlY2ltYWwKKzgxNzIzIGE1NjEwNTQwMWQ1MjZkNDIzN2RkMWJmM2ZlYThiYmFkOTQ4OWVhMDcgcHkzay1jZGVjaW1hbAorODE3MjQgMDljMDVhZDQ1YjVmMGJkZjcxODkxYzBiODBjOTljZmY3MWU2OGU5NyBsZWdhY3ktdHJ1bmsKKzgxNzI1IDA5YzA2Y2EyN2Y3Zjg0NmNlZDM4MzYwYTljNmI1ZWFjZmE1MmQ5MTYgcHkzaworODE3MjYgNDNlOWEzZTYxNzk2ZTZkOGQwMDJkNjEyYzIzN2UzNmQyZjU4NjFjYiBweTNrLWNkZWNpbWFsCis4MTcyNyBjYjUwZGI5NDEyYzcwNGM4ZTc3YTQ0MDE1ZDE0YmRhNWJhM2VjYzk4IHB5M2stY2RlY2ltYWwKKzgxNzI4IGJlNTg4MTRlMjVkNzg1MTUyZDhkY2IyOGY5YjE2NDIxODJiZWQxMWUgbGVnYWN5LXRydW5rCis4MTcyOSAzYTU3MWZkOGMzYmVhMGIxYTBhZDMxNjllNTZhNTdhOGYwNjc5MDdmIHB5M2stY2RlY2ltYWwKKzgxNzMwIGVjMTc0ZjQyZjE1YmQ5MGRkZjJkMTU2YWQxN2FkZTBmM2FjMTBlYzUgcHkzaworODE3MzEgMGUzZWM0MTg4NDVhZGM3NTU3OGNmOWQxYmI3ZDgyZmExYjU1Y2I1NSBweTNrCis4MTczMiBhYTVjZTg2MTVjNGZjNzA1MjZlY2Q0OTFkYWVmODU1YWNlYjkxZTJhIHB5M2stY2RlY2ltYWwKKzgxNzMzIDJmMjgyZjhmOTM4ODQ4ZDMyMTBmYzNiYjI1MGI1YjExNmU2YTRhMGMgcHkzay1jZGVjaW1hbAorODE3MzQgNzZjZjRhY2Y3YjQzZjJkNjI2MjNjNTU5MjAwYzFmODZkN2UyOGViMyBweTNrLWNkZWNpbWFsCis4MTczNSA5ODZiYTBlYzJjNTVmMzUwNTVlMGM5YWZhMTU4Y2UxZmM2NTMxNThkIGxlZ2FjeS10cnVuaworODE3MzYgOGZhNGE1ZTVhZjU1MmRmNzhkOGU0M2VkODMwZWJlMDBiMTk1NmUxZiBsZWdhY3ktdHJ1bmsKKzgxNzM3IDA2YmQ0YTQ0ODM5ZDk2ZDU0NjBhYTIzNDQyYjY1ODdiNjcxNWIwZjQgcHkzaworODE3MzggNzJkYzBlZjM5NGFjYmI0NjRlYmZhY2IwZDViMTg4YTI2MDAyNGExMyByZWxlYXNlMjYtbWFpbnQKKzgxNzM5IGY4NmM2YTZlMTc0NDE0ODIyMzY4ZDFlMzJjNWI1MGE2NGFjMmM1MjEgbGVnYWN5LXRydW5rCis4MTc0MCA2N2MzM2NiOTYyMmRhOGVjNDI2NTQ2ZjBjZjU0NjkzNDU0YzgwYzM4IGxlZ2FjeS10cnVuaworODE3NDEgZTEyZDg3YzQ1NTkxOThlMTZlYzZkMTIwMDNhMjY5MzFlYmIxNGRiMCByZWxlYXNlMjYtbWFpbnQKKzgxNzQyIDFjMzBmOWViNDBiODI2MDcyYmQ5NjY0NzZmODhjNTlhMTNmOTZkY2YgcHkzaworODE3NDMgOTEyNTE3Y2NkYjNmZDZmYjg2NjQ2ZWFiMGU1MjA4MGU0ODA2NWE0YSBweTNrCis4MTc0NCAzNzIxZDRlNWIyZWVkMzc0OGRkMGRjMjQ5ZTg5OTQ5YTMwYjkyODQzIGxlZ2FjeS10cnVuaworODE3NDUgMzY2MmQyYjVhZmFhZWRkYjVkZGRjNmM4ODg5NzkwZmY0ZjVhZDc0ZCByZWxlYXNlMjYtbWFpbnQKKzgxNzQ2IGQwZDA1N2I1ZDM2MTMyODVhODJiNzhlZTg3NDM4M2VjOGM0ZWM5NGUgcHkzaworODE3NDcgOGI4NzAxNTUxMjUzOWEwNWJkMGM3ODdmNTk4NjkzZGNhZjNkMDE5ZiBsZWdhY3ktdHJ1bmsKKzgxNzQ4IGNlOTIwOTgxMWMwYWFjZmExNTAzYzgwZWEzYmRmNGI5ZmMyMWFiMTUgcHkzaworODE3NDkgNGExMTUyMjk4MGI3YjhlNTM2ODBlYjljZjVkOTBkOGE3ODIxN2JiNSBsZWdhY3ktdHJ1bmsKKzgxNzUwIGFmMmJkZTcyY2U2MWEyYzMyNzMwODQ2NDAxMjNhNDc4NTdjYjA2YTYgcmVsZWFzZTI2LW1haW50Cis4MTc1MSA1ZTFiM2I2MzRkNTM0NjQ5MmI3ZTdkZjBkNWY0OGNiMWRhY2JmMmM0IHB5M2sKKzgxNzUyIDYxMGJhOTliOGQwZGEzZDAyYmVmMWFhNmYyNzI3ZDIzNzIxOTZlNjkgbGVnYWN5LXRydW5rCis4MTc1MyAyZDJiMzgyNGUzOWE1MTA0MzFkNjBmZDBjN2I0NzhhNjI4NDlkZmYzIGxlZ2FjeS10cnVuaworODE3NTQgM2Q0ZjFjMjU5ZDJkMGFiMDQxZDg1NTgzYjc4YWM4ZTkzYjFhOTUyYyBweTNrCis4MTc1NSA5YzMwOTEwMjRiYzg0ODZkNjM0MmIxY2VjMDY4YTAwYWEyNDM5OGExIHB5M2sKKzgxNzU2IGNhMjYzZDIwMDVlNzYxMWU1YzY0NGEwODQ4NjljYWViODFhMTRlZTkgbGVnYWN5LXRydW5rCis4MTc1NyAwYTRiMzNlNGVlMjM2MzY1MjI3NDZmYTNkMjI5NDAxN2NhMzhiYzZiIHB5M2sKKzgxNzU4IDUwMzJmMWQ1YTFlMTVjMTgzNTkxYzQ1MTdjN2U0NDY4ZmM5MDQwYjggbGVnYWN5LXRydW5rCis4MTc1OSBjMWNhZWUzMjU0NGZiNzlmNzRmYzhmMGM4NjJkYTRlZGExNmI0NTQ1IGxlZ2FjeS10cnVuaworODE3NjAgMWQ5YjdkMDUyYmNjNWY1NzIyMTA0YjczNjg0OGNmNDJiNDRkYjMzMiBsZWdhY3ktdHJ1bmsKKzgxNzYxIDc0MmQzMjlkZmRmZDk1Y2YwMDUzYjUyNDYzNDM1YWIyMTBhOGY2YzAgbGVnYWN5LXRydW5rCis4MTc2MiBkYTdhOGZmNzY0OTk3NmNhZTRmOWMxZjBlZTdiNzQ5MGQ4ZDJiNzgxIHB5M2sKKzgxNzYzIGQ3ODcyZGRiNGI5ODA4MDhhZjU4YjAzNmQzM2YxMzU3MmQ3OGU5NTkgbGVnYWN5LXRydW5rCis4MTc2NCBjZGM3Y2E4ZGI4ZDZhYjQ0OTYwZGVjZTIzNGY5NmVlOGIyNTFlNzdlIGxlZ2FjeS10cnVuaworODE3NjUgZTBkZTMzNzY3YzI5OGNkYzlmMDE1NmM2OTdjOTNjNWY1MjY5Yjg1ZCBweTNrCis4MTc2NiAxNDEwYWM2MGE3NTQxMjFmOTAwYjNlMDZhOThlNzFkNzliNjAwZGNjIHB5M2sKKzgxNzY3IDNlMGJjMGUxN2Y1NjBlZDRkNzJmZGZhOWJiZjg0MDllNGJmM2FlZDcgbGVnYWN5LXRydW5rCis4MTc2OCAyNmJiNTM4ZWY2ZWE1ODMzMzEzNTEzMDA1MWJkMmMyYjc4N2U3ODQ3IHB5M2sKKzgxNzY5IGUxY2FlZDY5NTQ0ODFmY2U2MWQyY2ZjZDYyZDhkY2M1YTE2NDcxMTkgbGVnYWN5LXRydW5rCis4MTc3MCA0ZGZkOTE3NDJlYjliYmUyMWIzM2ExZDFiZTgyNzQxOGNiZDMzMGUwIGxlZ2FjeS10cnVuaworODE3NzEgZDEzZGVjMTQ2OGI4NzQ4OWMwNmI0NDU2NGFmNTJkMjg1YTc0MGJiYyBweTNrCis4MTc3MiBjZDhlZTAxOTk4OWQxNzU1N2Y2NmU4YWE1MGI4NGExYTllYTJiMjMwIGxlZ2FjeS10cnVuaworODE3NzMgZmRkYTNmNDYxNDJlNGY5N2IxNDY0YTFhYjU4ZTkwNzQ3MjVkMDZkYSBsZWdhY3ktdHJ1bmsKKzgxNzc0IDBlN2M3ZjE4Y2QyNGIwM2VjZDJmY2M4ZGMxOTAzYTBkNTI0MDUwZjIgbGVnYWN5LXRydW5rCis4MTc3NSAzODFjNWVlYjUxMTAzOGQwOTFkOGUwODA4YzRiODUwODdlZDJmNjg0IGxlZ2FjeS10cnVuaworODE3NzYgNmEyOGVmMjliMTEwMzk0NDM1MWUyZGRjMTMwYWQwYmUyOWY3NzFmYSBsZWdhY3ktdHJ1bmsKKzgxNzc3IDU4OWI2MTFkN2I0ZmEyOGM3MjI3YjQ2NDgxNzQ1MjhlMWZiMmE1MWIgbGVnYWN5LXRydW5rCis4MTc3OCAzMDFiNzhjYzk5OWIyOWJmMWE0YzRhNmQ1OTYxODU1Y2M3ZWNhZTM3IHB5M2sKKzgxNzc5IDY4ZmQyMjU5NWRiNTc3NjA5MjM5OGVlYzQxNTM1MDJmYTQxNDc2MjMgcHkzaworODE3ODAgYzRkNGRkYWNmOWE1OTY4NmEwN2I1YWI4Yjg5MzgyZWI5MDhjYmI1NSBweTNrCis4MTc4MSA4NDk2NTA1MDcwNTJlNmY0NmU0N2RjZTFiZDcxMzM3YzQ3MzU1YjE1IHB5M2sKKzgxNzgyIDQ3NWNiZGUxZWQxOWE3ZjQwZTI0MDI5NGY0MmRhNWE2NzI5ZTgxNTggcHkzaworODE3ODMgNmExZDZkOGNiYzUyMTNhNjQ5NDI5N2MyNWE0YjZiMDM2OTJmNjliMSByZWxlYXNlMzEtbWFpbnQKKzgxNzg0IDMxNDMzOTZhOTRmMWVlMzVlYjZmNjIyZWUyYjdjODA3MzY0MmIzMDcgcHkzay1jZGVjaW1hbAorODE3ODUgNDk1YmI3M2IxY2YxZjNhNTY2NjJmZmUyZmRlODNlM2Y2M2Y3YjU1ZCBweTNrLWNkZWNpbWFsCis4MTc4NiA0M2EzZjJhY2M5NGVjMmUxNjBlMDA4ZjUxOWZhY2U5NjY0YWRkNDQ5IHB5M2stY2RlY2ltYWwKKzgxNzg3IDMwMzhlYWM0MmY3ZGM3ZTRkZDA4OWI1MGE3ZDgxMGQxZTQ2ZmVkYjEgcHkzay1jZGVjaW1hbAorODE3ODggZjZkYWY1MzBmODllYTYzZGM2ZTYxNDA3Mjk4YWE3MzdhZTYzZGViZiBsZWdhY3ktdHJ1bmsKKzgxNzg5IGVkMGNhMzg5MjFjNzY3NTMxNTM2ODljYWM0ZWY1NDIzMWU0ZDg4N2UgcmVsZWFzZTI2LW1haW50Cis4MTc5MCBkZjhkYzhkMWQ1NzFjNmQwMDUxYzE2ZTZhMTBmOWViNWViNjZhMTE5IHB5M2sKKzgxNzkxIDczNGZlZDU2MTNhZWZhOTRjZjM0YjkwYWU5ZTU5YTkwZGNkNTBmYzUgcmVsZWFzZTMxLW1haW50Cis4MTc5MiA5ZDQ5Yjc0NDA3OGM2NWRmN2ExNjkyZGMwZGU4ZTU0YjdmNjAyYTdjIHB5M2sKKzgxNzkzIGNlZjM3NGIxNGY1YmVlNTM1MDcyMDIwYTk0MWQ0MGZjYmE5ZjA3ZDMgcmVsZWFzZTMxLW1haW50Cis4MTc5NCBjM2YyZWQ0ZDhlNjVlY2VhNDFkZWRiMmFhNTJkNjNmYzU3NDc2ZTUxIHB5M2sKKzgxNzk1IGMzMmIwMzhlMDAyMmU2ZTM0M2UzNWNiNjc3Mjc2ZjdhMjJmYmYwZDggcmVsZWFzZTMxLW1haW50Cis4MTc5NiBlZDI2ZWE3ODUzNmJhM2I5Yjc5ZTQ0NjI2M2YxN2NkZjEwYzNkNzg5IHB5M2stY2RlY2ltYWwKKzgxNzk3IGZmOGVjOTRiZWFlYWQ4ZTcyMzE3NTM2MDA2OWI2ZTMxMWYyMWNjNDMgcHkzay1jZGVjaW1hbAorODE3OTggYjFiN2FmNTE4M2UzNWJjZDM3OWY2YTJhNjNkZjU1YTRjMmUzZDgwNSBweTNrLWNkZWNpbWFsCis4MTc5OSA3MzZmYTM2ZWE4MWUyMDJkYjk5MTlkMjE5ZWEyZDZmOGZhMWFhYTQ0IHB5M2stY2RlY2ltYWwKKzgxODAwIGEyMmQ4OTg4ODk5NTAxYjYzOTc1ODdlYjJlZTkyZmJlNTI5MDI5NjEgcHkzay1jZGVjaW1hbAorODE4MDEgNmU4ZGNiOGU5ZTZiZmI5ODUxMzAzYjFmMTE2YTUxZDlmZDczMmIxOCBsZWdhY3ktdHJ1bmsKKzgxODAyIDJkNzQzMGRlZGVjMzgzNjNlYWYwMDMwODRjYWUxZGE2MDdiYTAxMDUgcHkzay1jZGVjaW1hbAorODE4MDMgZmUyYTBlMWVjOTVkY2Y5MDFmOWQ0ZWJkZWY1MmFiYzA1MTA3MTViOSBweTNrLWNkZWNpbWFsCis4MTgwNCAwZWZhMWFkOGJiNzUwNmFiMTU3MjI5MDQxZWRmM2FjZGQyZmMxNmI3IHB5M2stY2RlY2ltYWwKKzgxODA1IGIxMWNjMWYxYTY5OGM1MDlhMTU4ODg2OWM2YWJiNmM2MTNlMTA0MDAgcHkzay1jZGVjaW1hbAorODE4MDYgMGQ5MzQ3OTM0Y2M1YjRhOTJhYTI2NTRlNjA1NjA0NDc1NWEwNDllYSBweTNrCis4MTgwNyA2MDBjMjMxMjcyMDdkODIwNjU3Njg4OWI1ZWEyYjVlMTBiYzg2ZDNhIHB5M2sKKzgxODA4IGZkOGZjY2IyZWU5MDhjZDRmZDcwYmI3YjFjMDBlMDA3M2VjMmEzYjUgcmVsZWFzZTMxLW1haW50Cis4MTgwOSAxYTEwMTZmYTA3MjMwMGZhNjk3OWZjYzBmY2QwNzhkZmNkYWI2MmQ1IHB5M2sKKzgxODEwIGU5MzJkYzg4ODUxN2IxZjg3ZjM2YzkxZjM0YjkzNGJhNTcxNDJkMmIgcmVsZWFzZTMxLW1haW50Cis4MTgxMSA5Y2U1NTYzZWVjZmI3OTQwZGVlOTY5ODIyMGYwMDU3MjU0M2NiY2NmIHB5M2sKKzgxODEyIDYzNDJkMTQ2N2E0ZDQ0OGQyOGZhNzM0YWQ4ZTMwZmExYzEzZWZhN2EgcmVsZWFzZTMxLW1haW50Cis4MTgxMyBhMjE0NWEwNmE3MjY4ZjIwMzA5MDliNDE2N2ZkYTJhZTNkYjdhZjA1IGxlZ2FjeS10cnVuaworODE4MTQgOTVjYzFlNmQwMjQ2OTRhYTVmYmJlZjg3MWI3NDQ5ZmMzOTVmOWI2YyBweTNrCis4MTgxNSA1MzgxOTZjZjkxZmY3ODI5MTM2ZGViMzM0NTA0NzNhMzJjMGQyNGVjIHJlbGVhc2UyNi1tYWludAorODE4MTYgMmY2MWUzYTE0NmIxY2RjZTQxMWI5NTY3NDQ1MDdjOTRmZDU4YmRmMiBweTNrCis4MTgxNyBmNWNlNWUxYmIyM2EyMTM2Y2Q4ZmQwMzI5YjhmYTc1OTkzMTFjZTExIGxlZ2FjeS10cnVuaworODE4MTggZjJjNGRkMjJjYTYxYTIxMDc1ZGFmODMyNDI0YTZlYzEyNzMyZjRjMSBweTNrCis4MTgxOSA4MjIyODBjZWUwNGI1MjdmOGMyOGFlN2U4NWMyMzViNTVhNzBiY2NlIHJlbGVhc2UyNi1tYWludAorODE4MjAgMjZmYWM3NGViYWIzMjllMWQxYzdhNGRlYmY2ODMyMWFiYWRmNGFhMiBsZWdhY3ktdHJ1bmsKKzgxODIxIGZlY2Q4ZmI3YmJlZjVkYjA3N2VkNzk5ODNiNjdkNzQ0M2RlZjdlNGUgcHkzaworODE4MjIgYjQ0YTJmZTUzMWVmNTFmYTc4NTA2M2QxMzBjZjg1ZTk5OWJmMTAyYyByZWxlYXNlMjYtbWFpbnQKKzgxODIzIGQzNzk3ZTlkZmQyYzE5NzU4N2MwZDI2ODE2Nzc0OWQ5NDJjOTUwM2EgcHkzaworODE4MjQgZGRkYjk4ZWYzYmU1ZWY5MDY2ZDU2MTNlNmUyNzYzMDU4ZWVkYjdlYyBsZWdhY3ktdHJ1bmsKKzgxODI1IGU1ZjBiMjdiYzE3ODM3OThjNjVlOGZiNGU1NzFmODVlZjIxMjg1NzEgbGVnYWN5LXRydW5rCis4MTgyNiA4MjVmNjU0NDVhMGEwMWVmMWE3NTBhZWRmY2E1MjVlNmY2YWQ5NmEzIHB5M2sKKzgxODI3IDVjNmU3NWE4ZDYxZDU1ZTYzZmM3OTMzN2VmZGM3YmQ4NjZlNTdmYzkgcHkzaworODE4MjggM2U4NjI1NDAzOWI5MDk2ZmE0ODg2NGVmMTAxZDkxNTc1N2IyNDZjNyByZWxlYXNlMjYtbWFpbnQKKzgxODI5IDI3MTgxNThjNThkMDBmZmM3OGJiNGNhZmU5MDYzOTE2ZDAxZTg0YTggcHkzaworODE4MzAgYTM2MGUxMTQ4NjZiNTU0ZDhmZjFiMWFkYzVhYzRjODM5ZDNiY2I0MCBweTNrCis4MTgzMSA0ZjYxMzMyYWYzNWU2OWZiYjE0ZWNiOGM3MDU4YTJkZGIyODQ5ZTQ1IHB5M2sKKzgxODMyIGI5NTE4NjA2Y2RkY2U5MWQxYWU5NzAzM2JjNjE0NWQ1NzMzNTdmZmYgcHkzaworODE4MzMgZDIyNjRmOWFjNjFlY2ZkNmNmMDgzMzNmMmRiM2YyNzM1ZjAwNDRmYyByZWxlYXNlMzEtbWFpbnQKKzgxODM0IDM1YjRjMzU2ZjI0YTYyODEyYmY4OTBlYmVjNmVlYTEzOTg5OGYwZWIgbGVnYWN5LXRydW5rCis4MTgzNSAxMTY2ZmI3ZWZiMDdhNmU1NTRlOTVjMzM2NjQxOWZlM2Q3NmY1ZTlkIHB5M2sKKzgxODM2IGQ1ZWMyNDNjYWExMjI0YWZiNzY0YzI0NGJmNGMwNDk2OTkxMTU5YzkgcmVsZWFzZTI2LW1haW50Cis4MTgzNyBiNWFmNWM5MzEzNWIyNGYzNDE0NWQ2NmE3OTc0YTA2ZjA0OTVjZmE4IHJlbGVhc2UzMS1tYWludAorODE4MzggNjUwOWY5YTNjZGU1YWUyN2UwNDU3ZWEyNzdiZjc5NThmODVjYTdhNCBweTNrCis4MTgzOSA5ZjdiOGIzMmIwNzRhYTkxZDMxMzUyMTIwYTQ2OTE5ODFhNzA5OTBkIHJlbGVhc2UzMS1tYWludAorODE4NDAgYTA2YWQ3MzgzNTUyM2YyNDg2ZjAzNmI1MDE2MzVhZWI0YWJhYTU2NCBweTNrCis4MTg0MSBkMjgxZWQ1OWZmMGJlNGYyNDAyZjRmMTY5NTIxNGY2N2MxMDU5ODA3IHB5M2sKKzgxODQyIDdjY2M1NTgxMTQxMzFmMDliMTZlY2RkMWU2ZGFiZmFkZWRiNTlkMTIgcmVsZWFzZTMxLW1haW50Cis4MTg0MyBkOTI3MDhjZjFjMWZhMzM2NGI1NjQxMDkzNjI1ZTdlZTU0Y2ZhMmE2IHB5M2sKKzgxODQ0IGEyNWFkOWM0YWNlMDAxOGY4NTJiYjQzNzRlYzE1NWU4ODMzYTg5ZWEgcHkzaworODE4NDUgZDQ3ZmU0MTM0ZTdkMTFiZjQwMzYxMDdjODJlNjViN2YzMTY1MjQ3MyByZWxlYXNlMzEtbWFpbnQKKzgxODQ2IGY4M2YyMDFiMTI3NjA4NGRhNzNjYWU1ZWY3ZTk4MjhjNGI0MjY5MmMgcmVsZWFzZTMxLW1haW50Cis4MTg0NyAxOTY2YzFiYzkwNDhlNGVlZDFhMjAxMGE1ZDBlMjJmOTI2Njk5M2E0IGxlZ2FjeS10cnVuaworODE4NDggMjdkOWJjYzdlNjYxZWNiZDdmYTdlYjk4NWNjY2VlY2I4NzhkOTg0MCByZWxlYXNlMjYtbWFpbnQKKzgxODQ5IDJjZmUxNWIzY2RmNTUyYzA3NmM1YjYxMmFiNTEzOTVhODMyMzUwZDggcHkzaworODE4NTAgYjJjMTk5NTYzM2JkYzg1ZWJjMGVkY2NmYTcwY2IzYzlkZTNiYzkwMCByZWxlYXNlMzEtbWFpbnQKKzgxODUxIGQzMmIwZTgwZmFhY2QxZDA3NzI1MzU2NjM4ZTRhNzgyYjM0OTk1ZDYgcHkzaworODE4NTIgNmYzODU1MDM4OTE5YjYyMmI5OTRiODcxYjI5NTRlYjgwZWM3NzBkZiByZWxlYXNlMzEtbWFpbnQKKzgxODUzIDg2NGFjN2IzYzNkNmNlZjNjZjVhMmE2MjgwNmFmNTU0MWNjZjk2NDAgbGVnYWN5LXRydW5rCis4MTg1NCBkNzExM2NhY2Q0MjhiNjFiNWQ4YTNkNTk3ZDQ2ZDc1MjQ2ZjBhMjRjIHB5M2sKKzgxODU1IDZlNjg2NmNlYzM3ZWEyYzAwN2NjOTI3NjAzOTY4OWU2YzlhYmYyMWMgcmVsZWFzZTMxLW1haW50Cis4MTg1NiA5NmE1MTMzODI1ZDIzNjY4ODE4MTdkNzhhZDdlN2RjYzM2NDYzOTkwIHB5M2sKKzgxODU3IGM2MDQwMmZjMDY2ZjEwYzAzYTY1ZWMwODY4ZTYxN2U1MDI0YmI5YmIgcHkzaworODE4NTggYjZlZTIwNWI5NDk4YmQwZmU3M2ZhMTlmMzgyMWVlM2Q2MzUzZTFhMCByZWxlYXNlMzEtbWFpbnQKKzgxODU5IGYxYWFkYmViYzU3NzI5MTIzMTIyOGZkZjYyZTgzOTIxMjc2ZmVkNzcgbGVnYWN5LXRydW5rCis4MTg2MCBiYTJmMmQwODUwNGIwNTAwNmYxNzViNDU4MTQ2NmQzNDUwODMxMTEzIGxlZ2FjeS10cnVuaworODE4NjEgYzExNDVlNjY4ZDcyMDg2NDQ4OGRkY2UwMDE5NWJkYWM1NTk1NzM4YSByZWxlYXNlMjYtbWFpbnQKKzgxODYyIDg2NWUzNGNkN2U1Yjc2OTI5N2NhZGFlMDcwYzBmMWUyMGQ4MzljZjggcHkzaworODE4NjMgMzM3NTIzOWQ0MzcwZTJlNjZkODdkYjQ2ODgzZDYyMTJhNzJlNjExMSByZWxlYXNlMzEtbWFpbnQKKzgxODY0IDMyOWMxMjllMDdiNjhhZjI2Mjc5ZDQ4ZTljY2ZkOGM4YzhlZTg4OTggbGVnYWN5LXRydW5rCis4MTg2NSA4ZjU4YjllNTk2Njg4ZDQyZTY2N2FjZTY0ZWNkM2MwYWY4MzNkYTM0IHB5M2sKKzgxODY2IGEyZWExYTIzMTg2YjA4NzY3MDE2ODA4MTM5NjE1ZmU2YWU0OTE3YWQgcmVsZWFzZTI2LW1haW50Cis4MTg2NyBmMzNlNDY0YTlhNjBhYTlmMDQ5NzhjNmNmMGY1NTdmZWMwOGQ2MGU3IHJlbGVhc2UzMS1tYWludAorODE4NjggNWJmNzMzNmVhMGFhZDg5YmQyNDgyMjBjMjk4NGQ5MWQ3NTE3ZTJlZCBsZWdhY3ktdHJ1bmsKKzgxODY5IDc3YzBjYTY5ZDUxODRkODkyMmM1ZTE3YmM3NTU1NjNhZTZjYmY3MTAgcHkzaworODE4NzAgMTQyOWFjNmJlYmMzZjhkOWE3YWQxNzBkOTEyMjc1MjQ1NGJmODYzNyByZWxlYXNlMzEtbWFpbnQKKzgxODcxIGRkYjQ3ZmQ2MTJhNjcwMWIzN2Q1Y2YzNTY0ZTBlYWIwMGQzNTg0Y2EgcHkzaworODE4NzIgZTA4NzE2MjU3M2FjYzY3NjkyNmYyZThmYmRiYjE3YjRkZDJiYjc3OCByZWxlYXNlMzEtbWFpbnQKKzgxODczIGZlNWVkNzAyODNlZmU2MDk0MWE3ZWFjMzU0ODQxNGUzMzkxZDIwNTggcHkzaworODE4NzQgOGNmYTBkYzM4YWE3NDJiOTgwMzkxODRhMjZjNTBmYmZjMWVlYmNiYyBweTNrCis4MTg3NSBmZjUwZDQ1ZTA2MTgxMzUzMmQzZjYwNzY0ODk3YzY3OTlkOGNmYzJhIHB5M2sKKzgxODc2IGNkMTAyNDI4MWI3MzJiYjg0OGUwOWIxZWYwNGU2ZTRmZGI2YjA2MTQgbGVnYWN5LXRydW5rCis4MTg3NyBmMjk0NDczZDg3OTMxNWZiMzI2Yjc2OGU3ZGU0Njg4MTM1MmYzZDFlIHB5M2sKKzgxODc4IDdmNTQwZmU3NzVmY2NlMzVkYjdkMzZlYjg2NWY1OTY4NGNiZGI0YmQgbGVnYWN5LXRydW5rCis4MTg3OSA1ZmU0YWQ1YjVhYjllYjcyYTJmZDgzMDRhZGZkYTcyZjlkMmYyYTJlIHB5M2sKKzgxODgwIGRiZTdhZTY2NmNlMjI5ZDY5NGU4YTk2NzA5MTcxODQ2NzNiOGIwMjggbGVnYWN5LXRydW5rCis4MTg4MSAwZDE2NmU1Nzg4NGRmNDE3ZGE4MThmMTdhZjA5OGNiNzY1MmU0NzRhIGxlZ2FjeS10cnVuaworODE4ODIgYTg4NzJiNjUwNTc3NmE2NGQwZjI2OGQwNDdmZjZkZWM0Zjc2MzcxMyBsZWdhY3ktdHJ1bmsKKzgxODgzIDcyZjc3NDkwMzc3MjAxNmNmYzc0MzZmMTc0YjNiZmNiNDhhM2VmNmYgcHkzaworODE4ODQgOWUxMmM2NDlkMzEyNzVmMmMxYzc5NGMxZmEzYjRiNzk0YmNkNzg4NCByZWxlYXNlMzEtbWFpbnQKKzgxODg1IGFlYjQ3ZDMwZmJhNGUzOGRhMWU4ZjEyMjFlNGQwNjIwNDIzNzFlMWUgcHkzaworODE4ODYgMDc2NzYzYzY2N2Y5NTY1YjhlMjgyOTFlZWZhN2M0N2NlNGZiM2M1NCByZWxlYXNlMzEtbWFpbnQKKzgxODg3IDhjM2EyMjJmYTZkMTU4ZjVmYmFlYmEzYzYzZjUzNDkxZDcxYTZlZWYgcmVsZWFzZTI2LW1haW50Cis4MTg4OCA0Yzk5ZGE4YzFlODBlN2ZlY2IzYzg1NzNlNjdiMjBkN2M5OGVlODcwIGxlZ2FjeS10cnVuaworODE4ODkgN2VmNDZhNjFkYzk3ZWI3NTJmNDgwODY5ZGU4ZDczMTVmYmFiM2Q5NSBsZWdhY3ktdHJ1bmsKKzgxODkwIDM0MjBkZmM1NTliYmI4M2Y0NGY2YmFiNzJjOTkxNGExMWU4NjU2ZGUgcmVsZWFzZTI2LW1haW50Cis4MTg5MSA4MzE5Y2EwZDU0MzQ5MzEwYzVlZDc2NjJkMGQ3YmVjNWNmNGY4NDY2IHB5M2sKKzgxODkyIDQ0NjdjNGMxZDM4ZWNmZmZhZWMwZjIyNjUxYzU4MzlkOTU3MDFlMjUgcmVsZWFzZTMxLW1haW50Cis4MTg5MyAyNjY4NTMxMWQzMTMyNDEwYTQ3NzFkM2I1M2NjOWYxMjBmMWVkODZmIHB5M2sKKzgxODk0IDRjM2JlNzRjYTUwMTI3ZjA2MzhiNjhmZGUxOGMwNTg0YzRlNzRmNTEgcHkzaworODE4OTUgM2JhMWI1YjRjMTA4ODUwMDg0YzFiZGU0MWM5NzQ0YWJlYzMyNzExYSBweTNrCis4MTg5NiBlYmM0ZTg5NjkyNGUyYThjNGUwMDczNmYwMDJiYjQwN2ZmNmY1YzVkIHB5M2sKKzgxODk3IDZhZGM4M2Q5OTlkMGU0NTJkMDM2NmI5YTRkMTBiNzg2ZDZkZDJjNDIgcHkzaworODE4OTggNmZmODhkY2E4MTMzOTg3YzE3ODExZGIxN2ZmMDgwNjE3ZjllZDIyOCBweTNrCis4MTg5OSBjZDU5NmE4ZjkxZjM3ODYxOGNjYjUxOWEyODAxYjU5OGQ3MWVhOGFhIGxlZ2FjeS10cnVuaworODE5MDAgYjA5MWE3ZTQyODVmOTNjYjVmYTNkZjMwMTRhZjYwZDgzOWM4NmUxNiByZWxlYXNlMjYtbWFpbnQKKzgxOTAxIDJhOGVlMTFlM2UxOGEzZDQ0NzEyYTQ5MTU0NmMyMDRkOGI3MGVkNzkgcHkzaworODE5MDIgNzNkODJiMGI2ZGVlNGRhNWNlOWRkNWE4ODRkY2QyZDZiNWEyZTcwNyBweTNrCis4MTkwMyA1MGMyMzkxNzQ5NzYxOTM5ZWYyYTFlMzZjNWE5YTI5MWQyM2JmMWY3IHJlbGVhc2UzMS1tYWludAorODE5MDQgN2RiN2Y4NDQyNDE0ZmM0Yjg3YWUyOWY2YjAxNjc0MmRlNzg0ODg2ZCBsZWdhY3ktdHJ1bmsKKzgxOTA1IDlkYWM1ODE2M2I3OTk5YWM1MzA5N2E3N2Y3OWEyOGJjMzI3MTU5YjQgcHkzaworODE5MDYgNjYxNTE5ZmVjM2I4Njg4ZmM3NTA4NWE3YjE5YWIwMzRjYjZmMzU4MSBsZWdhY3ktdHJ1bmsKKzgxOTA3IDk4MjQ1NDY0YjY2NTRhMDVkYTg1NDIyM2FhOTFjMmEyYjU0MGE0ZmUgbGVnYWN5LXRydW5rCis4MTkwOCA3NTc2MjYwZDFiNjU0MTUwMDU4MmYyZTlkMjNjMDcyODRhMDcxMDMyIHB5M2sKKzgxOTA5IDIyYzA0NWQxYmM4Y2NmOTNjZjJhNDMwMWI0MGExMjcyMjQ5ZDc0ZWYgcmVsZWFzZTI2LW1haW50Cis4MTkxMCA4ZDVkZDIyNzY2ODA1NjRmNzM2NTBlMTY0Zjc5ZjhhYmEwZjMxZDRiIHJlbGVhc2UzMS1tYWludAorODE5MTEgODhhZWM1MTI0MTg1ZGZlNDE4MjFlZjgxNTU5MGE3YjIzMzNiNThjYiBweTNrCis4MTkxMiA0NGRjOTg1MDJhYzMyM2E1Y2RjOTE1N2FkYTk2Y2IxOTlhODYzODYzIHB5M2sKKzgxOTEzIGE2NTNlMzA2MTA4ZjUzNDNhY2JlNmI4NjY0ZTYxMDNmYzNiNjI2YzcgcmVsZWFzZTMxLW1haW50Cis4MTkxNCBiZDhhMWZkNGMzMTZmMjBkZWM1M2ZmOTE4NWExNmNkM2FiYzliYWViIHB5M2sKKzgxOTE1IGM4YmMyZDhlOWFlMWNmYzZiOTA0MWZlZjcwYTdiNzEwMTAyN2Y5ZTEgcmVsZWFzZTMxLW1haW50Cis4MTkxNiBmNTJhZWZkYWIxODIwZTY4YTJlNjUyM2ZjNmRlZDA0ODNkMThlZDNjIHB5M2sKKzgxOTE3IDJiMmY1NTNmMWNlNjExMDU4NDA0ZjFjNjNhMjE1YmZjMzBhZjhhYmUgcmVsZWFzZTMxLW1haW50Cis4MTkxOCBmNjBhYWY5OWI4MzZiZjZlZWUxODE2OTk3YzQwODY2YTFlNzY1ZDU2IHB5M2sKKzgxOTE5IGEyNTUxYjMwZjA0OTY0OTg1M2Q0MTgxODRkMjk3NmMyYmMzMjA4NzAgbGVnYWN5LXRydW5rCis4MTkxOSBmZTZiZTA0MjZlMGQzNTNkYjg0ZWM4NjlhNWIwMmRiYmE2YzNkNGE1IHJlbGVhc2UyNi1tYWludAorODE5MjAgMDE2N2Y5MTcyMWE4NGM2MThmZTIzYTljYzU2NGYwNThhZDI5YjA0NSBweTNrCis4MTkyMSA4NjI0NTgyODA5ZjljNzJkNGUzNDdkYzVhNWNmOWM4MzAyYTBiODhlIHJlbGVhc2UzMS1tYWludAorODE5MjIgZDkyODIwNjVmNWM5ZWJjMjRmZGVjNzAzMzVkY2ViMDZiOGNlMmEzNyByZWxlYXNlMzEtbWFpbnQKKzgxOTIzIDEzN2RhN2NlNWU4ZWQxYmI3YWY0Zjc0NjZmNTU4Y2M4YTE0NTY5MzUgcHkzaworODE5MjQgNzIxNjlmZmUzMmEwMmNlMWRlZjc0ZGY3YTMwMzBhYTY0NDVmYTZjNSByZWxlYXNlMzEtbWFpbnQKKzgxOTI1IDZlYWE3OWJlMDQ0OWZkMDRmNmRkYTdiMDBhYTIxODU3OWQ5MzRlY2MgcHkzaworODE5MjYgMTAzMTkyMTdhZjQ0MzBkZjRmZWVkNWMxZTdlMWViNjI2Y2E1MzY0MiByZWxlYXNlMzEtbWFpbnQKKzgxOTI3IDMwMjI5MDRmOTk3MTFiYjk3ZTI3MWM5ZjAwMDIxZjVjZmVjZjIyODggcHkzaworODE5MjggODE2OWYzM2YyMjY4OGYyNGEyYTQ2YjZkZjNlOWNhNDhiYTAwYzRiMSByZWxlYXNlMzEtbWFpbnQKKzgxOTI5IDQ0NGMwMjVlMjk4ZGEzNjk2ZWYwOTBiOGE1YjQyYWE4YjM0OGE3ZmMgcHkzaworODE5MzAgZTgwZGFiM2U5MDlmN2IzM2I5MTNjYmJiZGRkMjY3MmVmMTY1MGQ4NiBweTNrCis4MTkzMSBhMTBhN2NlOTdmNDVhN2I0ODVhNjQ3ZjkxMTA3MTgyOThhN2JlZWJmIGxlZ2FjeS10cnVuaworODE5MzIgODRkYWIyOWJkZWE3MGEzOTIzMTg0MzhjOTE3NjZlYmU5NDlhNjlkZCBsZWdhY3ktdHJ1bmsKKzgxOTMzIGMyYjkyMzgzNGRlYTc1ZGVhZTVhMzY5Y2M2M2RlOGJhYjYzMGY5Y2IgbGVnYWN5LXRydW5rCis4MTkzNCA2MWQ0Y2M2NzgxNjU1ZGU5OTljNmI4ZTgxNzU3OTM4ZGVkOWRiYzk4IHJlbGVhc2UyNi1tYWludAorODE5MzUgODAxMTBmZDQzMTkxMTkyOTE5ODY5NTg2NGU5ZDUzMTRkMzIyOTkxYiByZWxlYXNlMjYtbWFpbnQKKzgxOTM2IDZjZTdlYmNmOTM1OGRlNWY5NTYzMjUxYWUzYmI5Y2Q5YTE1N2M5NjEgcHkzaworODE5MzcgNTJlYjBjMDkzYjY4ODdiOWRlODY1YWJjNjhhZTU3NWEwODlkZmNhNiBweTNrCis4MTkzOCBhNDkwYWEzMDNkOGFkZGZiODMwMjA5NWM3YzA4NjA0NzExMDM1NDRlIHB5M2sKKzgxOTM5IDRlOWRkNmQ4MDA2MzgwZGRiZjVkOWU5OGI1NTUzMWFmYWI1NDhiZjMgbGVnYWN5LXRydW5rCis4MTk0MCAzMWYwMWM4ODFjNDYwZjM2YzA2OWFiMzNmYjU3YWVmMDI4MTBiY2FhIGxlZ2FjeS10cnVuaworODE5NDEgYWNhMTNhNWQ2MTQ0ZDM4YjY4NjI2YTg4OTliNmVhMmE2YWJlYjUxOCBsZWdhY3ktdHJ1bmsKKzgxOTQyIDQxZWQ1OGVkNWM5M2JhYzFkNjhlNTk2M2E0Y2NmYTk2NWU5ZDJjYWEgbGVnYWN5LXRydW5rCis4MTk0MyA4ZjI3YjYxYTQwZmE5OTA1MzMxYTczMDM5Yzg4MDU3MGJmYzM1YTdmIHJlbGVhc2UyNi1tYWludAorODE5NDQgNjA2YmFkNTg0MzQ0NjRkMzFjYTAwYjlhZTkzMTc5MGFkMDBmMmI3MyBweTNrCis4MTk0NSBkYjU1MTY3ZmE1ZTc5ODg4ZTc3ZGI0Nzc0Yzk1N2U4NzlhZDVlMjlmIGxlZ2FjeS10cnVuaworODE5NDYgNTE2MDA0OGQ1MzYxNzExMGMxODNiM2Y4ZTkwNmI0MTE4ZWM3YzY3MiBweTNrCis4MTk0NyBiZDg2YmJhNWVkMzNhMDFlYjMzNTk1YmE5YjZhMTMzOTUzYjdjZjYxIHB5M2sKKzgxOTQ4IGU1NWZhZDNkNWFlNDg0YzQxY2QxNzJlOGFhOWE4M2MyNDRkMjdkMzcgcHkzaworODE5NDkgOTU1MGVkYTFjMDk2NGU2NGNiNmQ3NjFlODMxZjVjYzRmZWI1NTZiYiBweTNrCis4MTk1MCA5YjMzM2JmMDhkNDVmNzVjMGI2OTFjMDBhODM1YjdlODNmYmRkNWVhIHB5M2sKKzgxOTUxIDQ0Y2FjNWM1NjViN2YwOTk5MzM2NzVlZTlhYzY4NDQ1MDlmY2MyMzMgcHkzaworODE5NTIgZDA2NTc3ZGI3Mjc4NTJjNTBiYmE0Mjk2ZDlkMzgyYzBiZDczN2Q2NCBweTNrCis4MTk1MyA3M2U1MzU0ZjkyZTcxNDI4YWNjMTMxOGI4ZThkNDQ3NTc5MjQyZTllIGxlZ2FjeS10cnVuaworODE5NTQgZTBjNGRhZGRmYzU0NjljZWQwNzc5MGQxYjc3OTA3NTY5ZDNkZjBlNiBweTNrCis4MTk1NSBiOTBlMzM1YTYwOWE5NzkxYzVkOTYwMjZjODRkZTVmNTA0OWY5OTI5IHB5M2sKKzgxOTU2IDhiYzBiZjIyMDE0ZDgzMWE4NDRiNTBkMjg1ZDlmODdiZjYzZGJkMWMgcHkzaworODE5NTcgMGE1NWFkZTZkODU3ODFjMzhjODIwYmY3NmIyMjY2MDM1OTc2ODFkNCBsZWdhY3ktdHJ1bmsKKzgxOTU4IDBiMmUwYjY4MzlhMjczNWJjOGYyMWM5YWZmOTNkMGZmM2YxMTJkNjggcHkzaworODE5NTkgYjAwYzczNjU1NWRlNzBlM2NkMmVhYTQ3YzAyYWM0N2IyNTY3YzkwYiByZWxlYXNlMjYtbWFpbnQKKzgxOTYwIDBmNWQxMTRlZmYwMTQ0MmEzYjIxMGNkZmZlY2M4Y2NlODcyM2ZjMGEgcmVsZWFzZTMxLW1haW50Cis4MTk2MSBlNTg1YjI0MzFjNGE1NDY5ZDViNDk4YjYyYTgwY2VhOGQ1N2FiM2Y1IHB5M2sKKzgxOTYyIDUyOTViNGRiZjM1NWE4NGQ2OTEwODQ4N2UxNTc3NTc1NTdlMTA5NzAgcmVsZWFzZTMxLW1haW50Cis4MTk2MyBiOWVjZGNlYzBmZjBkOGJkYzFmODhlNDNkZDI1MGRjYmIyNmYzMTZhIGxlZ2FjeS10cnVuaworODE5NjQgOGYxMzdhNWM0MTNjYTMxNjI3ZTlmNzlmZGVlNzllMzA1MjY0NmE4ZCBsZWdhY3ktdHJ1bmsKKzgxOTY1IDdhYzYxNDhlNmE3Zjg0YTZiZGVlNGFlNjk1YTcyMmMzNDAwMjBmMzkgcHkzaworODE5NjYgNGVhYzEzNWEzM2FmZDY5NGQzNzAzODUyZTQzZGRlYmNmOGE5NmJhMyByZWxlYXNlMzEtbWFpbnQKKzgxOTY3IGNmZjBhOTIzMTQwYmU4ZWM4Yjc4OGZiOGFmZTZlNmMxMTdjYTBhM2MgbGVnYWN5LXRydW5rCis4MTk2OCBkMDY0ZTg5MzRmNGQwY2NlMDRjOTVjYTVhODBmOTBlNTgxZmE1YTQ4IHB5M2sKKzgxOTY5IDJlNTJmYmNhYWE3M2JkZGMyMzExODE1MjUyOWQ1MTBlMWFiM2M1NDAgbGVnYWN5LXRydW5rCis4MTk3MCAxMzgzYjg0YjE3YWNmNzZjZTUxZjU3MzAwYTE3MTE5OTI0YjkzNDVhIHB5M2sKKzgxOTcxIGY4MmQ5NmI5ZjAzZWRhYWFkZWNiNDVlYjRhZTE1MzI3ZGRmYzEyMzcgbGVnYWN5LXRydW5rCis4MTk3MiBiMDg0YzBhOTM0YTdlOTYzODE3NDlkOGY1ZjdjYWNiMDZlNWRhYmZlIHB5M2sKKzgxOTczIGIzMmEyODE2ZjZlOWM3ODQ0MzkzYmRmNTEyZDk4NzRjZTJiZGVjNTMgcHkzaworODE5NzQgMDg0MGEyODNhZjVmOWFiNjJlZGFlY2I3MTlkOGVmZDgzOTkyZDRmOCBweTNrCis4MTk3NSA5Y2I5MDE2OWIyNWE4NjNkZjcyZGY4ZjVmNThlNzUyMWJhNmU1MDEyIHJlbGVhc2UzMS1tYWludAorODE5NzYgOTliODBjMjg4ZmFjNDVlZWQwZjgyM2U2NzJlZTZiNzVjNWQ1ZTIyNSBweTNrLWNkZWNpbWFsCis4MTk3NyA5MmI4YjY3ODQ0ZTEwMTdkNjZlNjlmODNlNjc4YTg2YjNhNDgwMDg4IHB5M2stY2RlY2ltYWwKKzgxOTc4IDg2N2I5NzZlMzQ5ZGFkMjM5OTdhODc4MTU1MDBiMTNkYWZlN2VjMWIgcHkzay1jZGVjaW1hbAorODE5NzkgMDcyM2VlMTk1NDdiOTU2MTVjMDZkYzExNTQ1N2M3MmMzYjA1YWE1MiBweTNrLWNkZWNpbWFsCis4MTk4MCBkNzhiMTU4MDg3MTBhN2Q2NzVkOGJhZjk0MTIyMzhlMDFmYWNmMTM5IHB5M2stY2RlY2ltYWwKKzgxOTgxIGI3OGE5MThiN2EwZWM2NGJlODljMmM4ZGFjZGYwZmE5NWFhYzE2ZDUgcHkzaworODE5ODQgOWJlNjBjMTg1MDMyYTY1ZTIyYTU5NjE4OTQ4MmI0NzcyN2M3ZDAxZSBsZWdhY3ktdHJ1bmsKKzgxOTg4IGVmNWRlNTZmMjRjNjRjZGUwNjA0YjNmNzExNDVmMzM3YjIyMjVmMDEgcHkzaworODE5ODkgNjIzYjczODExNmQyNDJmMGJiY2JmYmRjNWQ1OTE2ZTdhMzIwZjMzYyBweTNrCis4MTk5MCA5NWI1Y2EyNDY4Y2M2MGEyY2QyNDY0YjNlMzM3OTk1ZDIxZjQ3MWM2IHB5M2sKKzgxOTkxIGE1N2Q1OWNjY2I4ZmE1Y2ViMmEzYTIzZDMxNTc5ODEzZTAxYTYzMzEgbGVnYWN5LXRydW5rCis4MTk5MiA2ZjliMGMyNDAxOTFkZjczYzJmMTA1N2IxOTYyMTZiNjBlOTJkZDBmIGxlZ2FjeS10cnVuaworODE5OTMgOGYzZmNjMjM5NzgxYjc2NGMzNTEzYjFhZmZhYTBkZjhiMDhlMzFjYiByZWxlYXNlMjYtbWFpbnQKKzgxOTk0IDBlYmM3MmUzNjZhMWQ5NmZiOGU4Y2M2OTU1ZjcyODhhOWU4NGNjYWQgcHkzaworODE5OTUgN2FjMGY2N2ViYmJhODk0YmNkOWIwYjY1ZmE5M2E2MzY3YjZmYjU4NiByZWxlYXNlMzEtbWFpbnQKKzgxOTk2IDkxYmI1NzJiNzU2ZTA2ZDQ3NmQ2YmRhMDBiMDRmYzhlOTgwNjMzNTYgcmVsZWFzZTMxLW1haW50Cis4MTk5NyAzZWE2NmUzYTEyOWE0Zjk3YjNiN2M2YzQ4NWU3MjdkZDQ1Y2MwNDg4IHB5M2stY2RlY2ltYWwKKzgxOTk5IGU0M2FiNTJiNTdiMjM0MzllOTg4ZWNmMzRiNGQ3NWU4YTUwYzUyM2IgcHkzaworODIwMDAgMzJjNGZmZjQ0NWFkMmNmZmYwOTdhYzhmZTRmMzM5YTUzMjUwZjE4MyBweTNrCis4MjAwMSA0OWRkNTk5MTUwY2E3MTVjMjFlMGE3OWFhY2FkNjljNmZlOTE2NDVhIHB5M2sKKzgyMDAyIGZhODk3NzMyNGVkODY3MGFiMGFlMTdmNTljMmYxOTMyNTRhYzM3OGEgcmVsZWFzZTMxLW1haW50Cis4MjAwMyBmMTlhZTVjZWM4Y2U3OWYxNjA1ZjkzYmIxYjVmNTYzZDhhYjgwYjNiIHB5M2sKKzgyMDA0IDM1NGI3NTFlNDZkNjFjYjcxZjU5NDBiMDA4ODYyNDhhYWVhNzVkZDYgcHkzaworODIwMDUgMzU2ZDBlYThlYTM0N2YwZDdkMGFkYWE3NjUxNmEyNWU2YzZjOTlmMCBweTNrCis4MjAwNiAyNDY2YWZlZDZmNWVjZTY5ZTE1M2JhNjNkNzJlYWQ3ZThjMGUzNTExIHB5M2stY2RlY2ltYWwKKzgyMDA3IGI4NDg4NzM5ODc5ZWM5OGE1MDEzM2UxNzhkZTc0YjQwZGY4ZTJjMmYgcmVsZWFzZTI2LW1haW50Cis4MjAwOCA4MTg1NWNlZGMxNTZmNTk4Y2I2OTM4ZDdkOGFlNTg1YjUxZTA3NzY4IHB5M2sKKzgyMDA5IDQ4ZjU4NTk3NjBlZjRhM2JiMjg1ZjZiN2U2ZjgzZTc5MTU0MzM1NTYgcmVsZWFzZTMxLW1haW50Cis4MjAxMCA4YTg3YzVhZmFkZGFiZTMxNTg2NjEwY2Q2OTVmYTQ4MWJlMTEwNzRlIHJlbGVhc2UyNi1tYWludAorODIwMTEgNTg0MTM2NzZiZWZiNjRiYzMwOTQ3YTdlOTI0YmZiNWVjYTJkM2M1MiBweTNrCis4MjAxMiAyMmVhNjk2YWE3N2FjNjNlNTNkMjJiNmNkZDQ0MzQ5MWMzMDE0ZWVjIHJlbGVhc2UzMS1tYWludAorODIwMTMgN2JjODFmODUzNWVhNDE2MDRiNGZkOWE5Nzg5NTA4NmRjYjM0NzNjNyByZWxlYXNlMjYtbWFpbnQKKzgyMDE0IGFkYjhjODFjYzM5YTQ0ZjEzMDJmNDg5MjU2YjQ2M2JhY2I5ZmY1MjcgcHkzaworODIwMTUgOWRjODRjNDI0ZTQxMzY1N2FmODdmMzg3OTE2Y2Q0NzViNDZlZWYwZCBweTNrCis4MjAxNiA0MjJhMTgzZTBiYmRjYzcyYTgwNjVkMzgxZTk2NGI1NzhkNzgwYzMzIHJlbGVhc2UzMS1tYWludAorODIwMTcgMDAzMGE3NDcwNjY2MDExNmJkYjJkM2NjMDU0ZTk3ZjBkZGU0YmIyZSByZWxlYXNlMjYtbWFpbnQKKzgyMDE4IDg0ZmVmYmYxZDZjMDgwYjJiMTUxMzFjMmY4NGViOTQ5NjI1MGU2ZTMgbGVnYWN5LXRydW5rCis4MjAxOSBlNzUzNTYyY2MwMjNjMDNmMWFhYTM1MDgyNGIwNTVjY2VlMTE0YmM4IHJlbGVhc2UzMS1tYWludAorODIwMjAgYzQxY2I0ODRmMDkwNmNlMGY2YzM3NjUzOWRhNzM2ZTQzNWUwYzEyYSByZWxlYXNlMjYtbWFpbnQKKzgyMDIxIGQzMGY2YzU5ZjgxMDc1NzY5MWY1M2FlMGQ5YWQ5MDdiNTcyNzkxNzEgcHkzay1qaXQKKzgyMDIyIGQzMzc3ZWJkM2VlNTRmZmQ3N2ZhYWJmMjUxMGE2YTIxYzBhNjAzODYgcHkzaworODIwMjMgYjQyMzc3MDNhMGNjNTE0MTFmZWVhZjA3OWNjNDlmZDMxZGI2OGU0MSByZWxlYXNlMzEtbWFpbnQKKzgyMDI0IDgxMTM1Y2NmNWY1NWUzZTIwZGY2ZmE5ZDUwZTM3NWU3MjczOWE1YWEgcHkzay1kdG9hCis4MjAyNSA1NWUyNGMyNDNlMmYxYTg3Y2I5YzA0YWFmMzA2Y2FiMzliNzI3NDY2IHB5M2stZHRvYQorODIwMjYgYzY4NDVlODMwODZmNWY4MzE1ODk3ODRmZDJkNDkwOWMxOWM2YWVmMSBsZWdhY3ktdHJ1bmsKKzgyMDI3IGRhM2M0Nzk0ZDZkZDZjNTE5OTc2Zjk4NGVjZmE2Yzk3NmYyYTE4NmIgcmVsZWFzZTI2LW1haW50Cis4MjAyOCAzNDZjZTI1NWE1MmZlZjFkZWUxYzZhZjFiYzQyZDc4NWQyY2IwNWM0IHB5M2sKKzgyMDI5IGU0ZDUwNjQwZjA3NzdjNDc4NmY2MTQzYmJjZDQ3YmNhMDEwMzk2YzggcmVsZWFzZTMxLW1haW50Cis4MjAzMCA3MzU3ODJhMjc1ZjUwYTg1NGM3YjUxOGI2ZGM1OTEyZTM2N2RiZmJlIHB5M2staml0Cis4MjAzMSBmMzQxMzU1M2Y4ZjVlYTFhMjY5MmJkZDc2ODc1NzI5NjYyZjQ0YmE3IHB5M2stZHRvYQorODIwMzIgODU2Mjc2OTUyZTA4NjM5N2E1MDU3ZDI2N2Q0YjUyMjRkM2NhNTE5YyBweTNrLWR0b2EKKzgyMDMzIGJjYzBhOTk3ZjMyMWZjYWUxZDRlMTQxMTc1Y2VkZjY1NmZiMTM2NzAgcmVsZWFzZTMxLW1haW50Cis4MjAzNCA2ZDNiMDVhNDI5YjVhY2E1ZTJmNTBmYzQ0MTlhZTY4MGNjYTc3YmU1IHB5M2sKKzgyMDM1IDJkZDFmZTcwNDdmZmQ5ZmQ3NjZhZmJmNWFmYjIxNjg4NjI0ZmE5MjAgcHkzaworODIwMzYgMWIwOGE1NDE1NTFhYWQ4NjdlYzU5ZjhiNGNhYWIzMmU0ZmRhZDkwMSByZWxlYXNlMzEtbWFpbnQKKzgyMDM3IDI4M2Q5NDcyZGY0ZWQzYjdhNWJmODAwNGY0ZjFkNmUxYjgzMDA5NWYgcHkzaworODIwMzggODA3Y2RlYTQ3ODE3YmJlNzgyZTc4NjcxNGExMmQ4OWY4ZDFhYzkyOCBweTNrCis4MjAzOSAwMTdlNjBhZTYwNWY0YmUxZTIxMzY1MmFlMDE1MzkwOTViNWYyZTQ1IGxlZ2FjeS10cnVuaworODIwNDAgZjU4ODlmMmFjMzliYjM4ZTIyNjkwNTFkMzI1NjA5ZDNiZjk4ZjM0NSByZWxlYXNlMjYtbWFpbnQKKzgyMDQxIDJiYjBhMjdhM2UzNWM0MjdjYTBmZmIzNzI1ODkzOGE3MWRiOGU0ZjggcHkzaworODIwNDIgOGNjMGUxYzliYTZkNjA5ZmI4YTUzNWI3M2QwN2EzODI1Y2MxYWJlOCByZWxlYXNlMzEtbWFpbnQKKzgyMDQzIGNiNDk5N2I2YWE4YmU2OThiOWZhODkzOWQxNWFhZTJmN2NhNTZiM2YgcHkzaworODIwNDQgMmNjMDlmMDY5NTBiMDQ4MjVlMjM3NmUzZTEwYWY4MzU0NTU1Mjc3YSByZWxlYXNlMzEtbWFpbnQKKzgyMDQ1IDRkMjU2MzlhM2IxNGJkNmJjZTJkOGZjNDgwZTAwYTZhMWVkZDkzZWMgcHkzaworODIwNDYgYjFkNmNjYWQ4ZWFkNjY2NjRmMDZiMGI5Nzg5YjQ4MGQwN2FhYjRlMiByZWxlYXNlMzEtbWFpbnQKKzgyMDQ3IDg0ZWQzNDQ2YTI5YTFiODMwZjZiYWU3ZDBhZjM2MGQ1N2ExOWM1MjAgbGVnYWN5LXRydW5rCis4MjA0OCAxNzY0ZTBiZTQ4NGM2YzgyZjQwMGM5YTI2YjM1YTgyNTM3ZDVkYTlkIHJlbGVhc2UyNi1tYWludAorODIwNDkgMmZlMDgwMmM0MmM3NDVkY2U3MmM1ZmUwNzgwNWYxZjMwYjYyMzA3YiBweTNrCis4MjA1MCBjMmU3M2Q4NDRkODIyYmQzMmU4NGRkYmFhOTMwZDliNThiYjY2ZWM4IHJlbGVhc2UzMS1tYWludAorODIwNTEgYzQ4ZGRjOTZmNDU0YWUyOGI0MmZiODY1N2JiZTVjNTcxNWZlNWQ4YyBweTNrCis4MjA1MiA2YmZkY2QyNWVlYTcwZGYwM2UzY2IxMzI2ZGU4YzMwMGFhMTQ4NjUyIHJlbGVhc2UzMS1tYWludAorODIwNTMgNWMwZDhjMjg0YzMyZGM4ZTdhMDI2OTNmMjkyZDhiZTBlNjE4NzVkNyBweTNrCis4MjA1NCA2YTk5OTBlZjRhNmY1ZTk3MzJhMzk4YjFkYWIyN2Q4MzM5MWMzMGNhIHJlbGVhc2UzMS1tYWludAorODIwNTUgNDZhYjVlNGRiYTZiYWM3ZDFlN2JiMjBkYmNmZTAwMDVlMjhhNjYzYiBweTNrCis4MjA1NiAxZGE3NzMzZThmMjQ3MzFhMGI4OGRiZDY5MDc4MDRjYTAyYTExZGMzIGxlZ2FjeS10cnVuaworODIwNTcgZjNkZDkzMDY2NWJkMTc5MzYzMDg4MTMzMDRhMmM0MDg0YzViYjA5MSBweTNrCis4MjA1OCBkYTFhYWZhNTVhZTAyMzllZTUyNmZlYzg0YTRjNDA0MjY2YTEzMWNkIHJlbGVhc2UzMS1tYWludAorODIwNTkgOTA3ZjU2NDQ3NmJlNjY5ZWJlYWVkNDE4ZWZlYWQyZWJlNjBiZmNhYyBweTNrCis4MjA2MCA1OWM2MGE1OWIyN2E1N2U3YzRlMTYyYjZiZWQyNjRkZjAyYzZmZGI2IHJlbGVhc2UzMS1tYWludAorODIwNjEgOWQ0ZDRhYzBhN2JmZTgxMTc0YWY0ZDAxMTVlY2ZkMGQ0YTZhYzE5MCBweTNrCis4MjA2MiAwNzQ0OWIzNjc5MzU3ZGIyZWVhOTZhODMwMmRmODdjMDNjYmE1YjVjIHJlbGVhc2UzMS1tYWludAorODIwNjMgZmE4MzAzNzFjNzI0MTc0ZmJhMWI1M2EwOTkxZjBhM2Q1MThkMjEwNiByZWxlYXNlMzEtbWFpbnQKKzgyMDY4IDRkNjliZGI3MWM5YWQ1MWNkYzY4Njk2NDUyNmMyNTZkYmYyNzhkM2QgcHkzaworODIwNjkgNDYzNTYyNjdjZThmYmI1OWQ5YjA2NzUyODg1N2RhODEwMmZhZDVhNiByZWxlYXNlMzEtbWFpbnQKKzgyMDcwIGU1ZjUwMDhmZDU2ZDUwZjQ5ODAzYjVlNWRiMmY4OWJiNzBiOTI4MzcgcHkzaworODIwNzEgYmY5NGViOGZhZjYyNTM3ZmQ3NDQ2YmU0M2Q4OWM5YjIyYjM1MzVlNiBweTNrCis4MjA3MiBlYTI1MTI5Yjk0ZmVlYzUwMDk4NDgyYzRlZmE4MjVlZDcxZDUzNjU2IHJlbGVhc2UzMS1tYWludAorODIwNzMgOTBjYzI2Njc5OGEyNGZjNTBjMTViNzYyMWMxYjM0ODQ4OTIwMTE2NCBweTNrCis4MjA3NCBjNTRkZDU3NmRkMDU1NDgyZjFjYzE3MzA0NGNlN2VkMGQ1OGQ2MzYxIHJlbGVhc2UzMS1tYWludAorODIwNzUgZGE1NTg0NjFkOWE5NGJiN2VlOWU3OWZjYzJiYzBlMjRmZThhZTcwOCBsZWdhY3ktdHJ1bmsKKzgyMDc2IGVmOGEyYWIyNmU5ZmVmZWZiMzlmNTdmOWZjMzIwYWY4ZmI5NGM5ODEgcHkzaworODIwNzcgMWYwZTA3ODFmNzNlNDYxYjFhNTk5MGIxNWIxZWI1OWY4OWYzOTgxOSByZWxlYXNlMjYtbWFpbnQKKzgyMDc4IDVkZTUyZWIyNTJkYTcwNmRhM2Y2OTU0ZDUwZTFlODRhN2MxM2MwZjkgcmVsZWFzZTMxLW1haW50Cis4MjA3OSBkZDcwMDUxNDVmNmU2NWYyMzZlYWI1ZjIwODU4Nzk5M2IyYjNkM2NiIHB5M2stZHRvYQorODIwODAgMThiY2Y2YzJkMWUzN2IyODE4MTRmNDQ0MDU5NGQ4YmI3ZWJkMzVhOCBweTNrLWR0b2EKKzgyMDgxIGY2NzY3ZGRlOWIyOTg5Yjg3ZmYwNjMxNjYwYzdhNzk2ODZhNGUyNWMgcHkzay1kdG9hCis4MjA4MiBiNGE1YTg2OWUxYzU5ZDhhZjM1OTk5YTI2NmU4ZWRiYzg4YTY3N2ZjIHB5M2stZHRvYQorODIwODQgM2FmYzdkOGE0NDVhYTVhYzk1ZjIxN2M1Mzg3YzYzNzliNWM1NzU1ZCBweTNrCis4MjA4NSAwZGE0YzdkMWYzZWYyMzNlNWEzNDNlNjRmZDVjMjk0OWRkZDU3NzNlIHJlbGVhc2UzMS1tYWludAorODIwODYgYjkwMTlmMGRkODlkM2UxNzY5MTI1MmQxMjhmMTBhODM1ZjEwYmRhZSBweTNrLWR0b2EKKzgyMDg3IDQyOWIzMjlhMDNmODMzNGE2MjhjYWRjZjJlM2E2MzNkMTAwZjJhNDkgcHkzay1kdG9hCis4MjA4OCAzNDMwMDVjNGE0ZTNmNWUxZTFkYTA2OTk5NjI2NzJhYzZmNzIyMTQ0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA4OSA0NDZhOTY2ODU4ZjE0ODFlNzA0N2JmMDI3ZWMyNzZlNDViNzIyZWZhIHB5M2sKKzgyMDkwIGM0ZjVjNzM0ZGE2ZTRjMTM3YWQwNjI2OTMzYTAwODc2YzU5ODQ4YzIgcHkzaworODIwOTEgNWEyOGM2Y2I0NzUyN2I5ZDQ3NzkzZmViZDhmYWUwOGQ3MzQ5MzUzNSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTIgMDY5NTM1ZTUwYTllNGZkZDRkZjBkYjZiZGU2ZmY5MTI1NWY1OWNjNSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTMgNDY2YzE2MmM3MzBjMjBjZDRkYzc2ZDM0ZGRhYWJlNGYyZjlhNjczMyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTQgODlhNDJlMDcxM2RkYjllZWIwOWRmNTAxMzBiM2FiYmNiOTg0OWZlMiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTUgZWQwNzc0MGM3NjY3YWZmOWU5YTcwZmE1NTFjMDUzMTFlNzk5YzlkZSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTYgODgwYmRlNWFiN2M1NDM0NTMxY2Q0ZDMyNjc4YmM3ZTdmYjQ2MDIwZCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTcgYWM1ZjU1MzdjNzNiNmRlNDc1NGNlOTE0ZTBjYjdkMThkMjk0MGY1ZSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTggODBkNDgwMDc3NDMzOWVlYjUyYmY2OWFkNmM3NjNhZmU4ZjZiZTc2NiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTkgZjczZmEzNWY2ZjA1ZGU0NWI1ZGE2ODFkZjA5MzUzM2U0Yzk0MDY1NCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDAgMzVmODAxNTI2Mjc4ZDRhNGQyNjhhMjZkZjdjNjhjY2IwMWZiNDhlOSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDEgNWNmZTA1ZjJhNGU5YzU2YWMwY2EzNjIwMzg1NTVkNTAzMmNmOWYyZCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDIgY2VjMWI1NTg0NTE3YjA5NzUyN2UzNGM4MjU5NWQ2OTc0OTMyZjVkNyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDMgODA2MTNkY2Y4MDkxMGQ2ZDBiYWUzOTcyOTUzZTAwNTM3MWNiMTgwNyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDQgNDgzZjM2MmI4ZWMzMDQzODMyYTYxMTdmNDQ1YTUwM2U4NjVhOTcwMCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDUgMzA2MzM2YTFjZTI5MTE3MGFlMzgwNDM2NGU0ZmZlMTZmZmJiYzdhNiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDYgYTU2ZmFhNmI4ZmEwMmZkNjY0OWMxMTllNjVlNWJmOWY2N2UxOGI2YiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDcgMTk5MWE5YWFmZjVlMzk4NTE1MjI3ZTIzNTQ1NmM2MmUyMDczZTYzYSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDggYjYxNDY0N2EzNDAwNTJiNzE3M2UwMTM0NWUyNmRiYTVhYjU2YThhOSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDkgZWJhYzJlYjcyNTViNjU1M2IxZTczZDdkZDhiYTU5OWE2MDg0ODhiOCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMTIgOTM4OTZhMDk0NmMyZWY1ODRhOTdjNTNkZjA1OTQ4ODYzYTcyMmIwNyBsZWdhY3ktdHJ1bmsKKzgyMTEzIDVjODRmY2MxZDkwNmVhZWM5YjVmZDQwMDM1ZDdiNTE5MjMxOWYwY2MgcHkzaworODIxMTQgNmQ5NzQ2Y2Q5MzVjNjBkN2Y1OTc3NGY1MmUyNGQ4MDA4ZjhiZWFlNSBweTNrCis4MjExNSA2NTRlNTNlNzVjZDJiMDJjYWMzODAwNzExNzIxZTc3MWQwYjllNTUzIHB5M2sKKzgyMTE3IGVlMzVmNzE1Njc2MTJiMWU1OTc4ZDVjYWYyYmU0MDkyM2ZjNGU1N2YgbGVnYWN5LXRydW5rCis4MjExOCBjOTE1MzhjMWE3ZTZjMDc3ODgwOGQ5OTg1OGM1NzczMDIxMTk0NzcxIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjExOSA2YWNkZGI1ZmU4ZTIxYmU2ZGFjMDg5NThkNzMwMjU5YmY4ODdhMDQyIHB5M2sKKzgyMTIwIGJkZWY0NTRmNzIxMmE4YmFiZTAwZGY2YzlkOTFjNTc3MzllZTUzYzggbGVnYWN5LXRydW5rCis4MjEyMSA5MjM3MzUxMzcwMzBmMmM0YzkwNzEyOWIxMzdkMTc4MTMxYmU4NDk2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyMiAzZjA5Y2MzOGU5N2UzMGNlMzM0MWRhMzVhMmEyNzkwODVlMWEzZjliIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyMyA5NjVhNDRjMmIyOTdiOWI2Y2UyYzg3NDBlYjE4MTAzZmRhOTZkZGE0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyNCA1M2QzZDA2OGJmNGM0YjllNzIwZGVhOGU1ZjFhNzhhOGEyMTg1Y2NhIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyNSA5ODYzYmM4NjMwYTM5ZGQ3M2FhNmU3ZDY4YmY1ZGVmMjY4MzZiYjc3IHB5M2sKKzgyMTI2IGNlMjFlYjVjMTdhNWYzMDNjYzI3OWIwNTRjNDA0ZjdmNzAyODVhZGEgbGVnYWN5LXRydW5rCis4MjEyNyBkMDE0ZDFmNjU4MjMxOTVjMTFhZmMzMWEyZWE2N2RiMmVjNWZkZTlhIGxlZ2FjeS10cnVuaworODIxMjggZGQ4ODA1N2IyN2IxY2Q5ZjViZTliZGYxYWE0MjViYWRkYTFiMzk4OSBweTNrCis4MjEyOSBmM2Q0NWM0NDNiMTM3OWUxOGJmN2Q4YjY4NzJmZDIwYTcyNzY4NzE3IHJlbGVhc2UzMS1tYWludAorODIxMzAgMWE4NmQ4NDVmYmM2ZjM5NGFkZDZhNDIwYzI3Zjk4YTgyNTBiY2I1ZCBsZWdhY3ktdHJ1bmsKKzgyMTMxIDczZjhmYWNhMjkwYmZlYjY0MGNjZmJlNDFlYjY4NmMwMjUyNTllZjcgcHkzaworODIxMzIgYTEwMWQwNzNhNWNkMWZiYzQ1NGZjYjVjMmYwNTU1ZDU2NjVlOWNkNSByZWxlYXNlMjYtbWFpbnQKKzgyMTMzIDFhZjk1Njc0NTg4ZDFkM2FlMmNhODg1ZWQwMzIxNjBmODk1ZTJiODMgcmVsZWFzZTMxLW1haW50Cis4MjEzNiA1ODE3Mzk1YTA0OGU1ZmYxNGZjODUxNDc3MDZlZmJmNjA1ZjUwN2ZhIGxlZ2FjeS10cnVuaworODIxMzcgMTNlNWIwYjIwNzFhMmE0MjA2N2ZiMDNmYWNjOTMxNDA5ZmE2YmE1MCBsZWdhY3ktdHJ1bmsKKzgyMTM4IDdlNGNkNzAzYTE4YjczMzNlODg3YjU1Yzk1NzEwNDA5MjFjNzI5ZDkgcHkzaworODIxMzkgMWYxMGM5MTJjMTI3ZmMzMGRmOWZlNjMyMjE2Y2RmZjA1OGY5MWRmYyBsZWdhY3ktdHJ1bmsKKzgyMTQwIGRhYTkxODg4ZGE1MmEzOTY2MzU5NGQ0MWIwYmYzNzgxOWEyOTIwYjcgcmVsZWFzZTMxLW1haW50Cis4MjE0MSBmMjY4YzJhZTA4MzVmNDI0YjNiMDdkZGU5Yzk0Y2M1NDE3YzNlMDIyIHJlbGVhc2UzMS1tYWludAorODIxNDIgYWY3NTFhMWQ2ZjQ0OTQ3YTI0MTQzYWVjNTVhNGE3MDc3OTIzOGFlOCBsZWdhY3ktdHJ1bmsKKzgyMTQ2IDBjZDk5ZjhjMzBlMTM5MDAwOGE5NWUxNDBjNjRjMjk2NDg5MDRiOGYgcHkzaworODIxNDcgMGFmZDc2MGU3Yzc2NTMxYjBkZmQ0MWFiMzAwNTVhMTQ0OGYyMGRjNCByZWxlYXNlMzEtbWFpbnQKKzgyMTQ4IDBiN2FjZGJkMDJlYjM0Mzg0Mjk2OGM3ODU5YzNiMmYzN2M1YWZhODkgcHkzaworODIxNDkgNWEzMjVlMGYxZmQwMTM1N2Y4NGI1OGI1ZWVlMTUzNjRjNDM2N2FiMiBsZWdhY3ktdHJ1bmsKKzgyMTUwIDZlNWQyMWUyMjNkMjI0ODQxNmY2OGVlZDBkNGRhZTljYmViM2U4M2EgbGVnYWN5LXRydW5rCis4MjE1MiA1NmVkNjhjMjE1YTcxZmY5N2E0MmZmNTk2OGY1Njk1MjJhYjNjMDExIHB5M2sKKzgyMTUzIDVkMzJiNmFmYjUyZWVlZDkyNjRkNTI2MDUyMzdkNjMxMTU0MzdlZmQgcmVsZWFzZTMxLW1haW50Cis4MjE1NSAxMDhmOTRkNTNlZGJlMmExZDBhYjgzMGIwOTJiNGIxNzRjM2FiODk4IGxlZ2FjeS10cnVuaworODIxNTYgZDlmY2JhNGNjMTQ1NDVhOWE4NGU0ZmRmNzlmODBiMDMzMmE0ZWE3YiBweTNrCis4MjE1NyBmOTE4ZDM1ZWM1NmI4NTI4OTAzOTQ5ZTYwZmIwMzAxOTk3YTAxYTQ4IGxlZ2FjeS10cnVuaworODIxNTggMzc2ZTgxZjllYmIxZDM5MWY3YzliYTBjNmQxNTU3NmQ5NzRkYjk2MSByZWxlYXNlMjYtbWFpbnQKKzgyMTU5IDkwNjA2M2NlNzExOTY1OTU5Yzk5ZGI0NWJmODUxMGFkOTNmNjc0ODcgcHkzaworODIxNjAgMTg2MzVjYmQ2NmUwYTMzYWQ0MjllNTU0MWE3ZmY3MDk3YTJmZjQ2OCBsZWdhY3ktdHJ1bmsKKzgyMTYxIGY3OGZjYjFiMjNmNWI4ZTAwMTAzZGMxNmUwODAyYjUxYWUwMDdmM2MgbGVnYWN5LXRydW5rCis4MjE2MiAxYzY5NWMwYWFmZmI0OGMyZDIyNmM1YWE3ZjJlMDQ2MGZiYzY1MWFhIHB5M2sKKzgyMTYzIDRlMjRkZmVkZjgwYzUxZTUwMDlhYWI5NjQyYWVhNjg4NjFhNjY0NzAgcHkzaworODIxNjQgYTEyMDZhNjllNzdhNTNiOTBjYmQ2NmNhMDRkNDkyYWYyZDFlMGEzZCByZWxlYXNlMzEtbWFpbnQKKzgyMTY1IDUzYTE1MmI0MDBhN2U1YmM2M2MzZTcyOGQ5ODI0MmVhMTJiMWE2YjAgbGVnYWN5LXRydW5rCis4MjE2NiBmMTdhMmMxZTI5MTkyOGM0NjM3MTZlMDA0NzE3YzhkNjliOWViMmMyIHB5M2sKKzgyMTY3IDRkZDhjZmY2YjdiZWIxZjZmMTAzYzRjY2U2ZTA4ZDA0NmI4ODBjMTYgbGVnYWN5LXRydW5rCis4MjE2OCBkMTViZThiNWM3Y2FkOTZkNGZiZjNkMDZiZDFhYTkwZDUwZDZhYTBmIHB5M2sKKzgyMTY5IGU5ZmIwNDJlNDZmYjUwMDA1Zjc3ZWExNjQzM2U0ZjQxODVlZjQyZGMgbGVnYWN5LXRydW5rCis4MjE3MCA4ODM2ZDI3MTY3MGI2YmI4NjRmMWFiM2M0NGQ2NTJhOTkyMjY4Mzc5IHJlbGVhc2UyNi1tYWludAorODIxNzEgZWI5NWFmMGE5OWNiYjFiYTBhYmY1ZGE1YTQxOTZmOTU1NmIzZDM2ZSBweTNrCis4MjE3MiAyOTA3Y2U4YmZiYjYwMjc2MTdiOWZhNDA5ZmI2MjA0ZGJiOGM2NjZkIHJlbGVhc2UzMS1tYWludAorODIxNzcgY2E0ZjJlOTg2OWI2NzUyZmNkOWNiYWIxMTJiMTFkOTI2ZDc3YzZjOSBsZWdhY3ktdHJ1bmsKKzgyMTc4IDQyNmVmOWMzNzkxNmZhZmQzYjhiNWRhNDY2OTcyMTBlOWIyOWY2ZTIgcmVsZWFzZTI2LW1haW50Cis4MjE3OSAwNzQ4NTllY2RjMTg3MzIyZGE5NjIzNjdlZjBkN2FlZWRiNTEyNzBhIHJlbGVhc2UyNi1tYWludAorODIxODAgNzZiYzZiNTc3MzczY2Y1NGRmZWRkMWIxMGIyZjc0ZDQ5MzU4M2M3ZiBweTNrCis4MjE4MSBjOGQ1ZDEyMDVmZTgzMGE1YjFkNmE0MjA2MDFiNjFiYWJlZDBjYTE2IHB5M2sKKzgyMTgyIDBlNDYzN2VhMjBkMDAxM2E1NzBkYzkxMjA2OGRjNzQzODUxYzM4ODAgcmVsZWFzZTMxLW1haW50Cis4MjE4MyA2NmVmOWE3N2M4YWZkNWNjMTg1MmE2NzYyMmFhZTMyZTgxYWVhYzA1IGxlZ2FjeS10cnVuaworODIxODQgM2NmMzUyMzFmN2QzZWQzNzVhMWE5OWRmZDg1YjZmZjBiYzY2NmFmNiBweTNrCis4MjE4NSAzYWZlMzYxZWZjZjM4YmY4ODY2NWVhNzEyMzE3NDBhZjdjMTc3ZjVhIHB5M2sKKzgyMTg2IGNmNzk3NDFmN2EyM2ZjNTVmZTUwMzdhNzViYWNmM2E0ZWMxYzI3N2MgcHkzaworODIxODcgOTVkMjAzNWExNjRiOWIwNWUwNTQwZDY2YTgzNjU3YzE0YzUxMTRkYyByZWxlYXNlMzEtbWFpbnQKKzgyMTg4IDVmNDU2OTI0ODlkYTFmZDM1NjFkMDYzOWM2ODA0ZjNkMTBkYTdlZGYgbGVnYWN5LXRydW5rCis4MjE4OSBjYjFhYjhlOTE1ODEwNzA4N2UwMWMzZjllYTJmZTg4NWU1M2MzZTc5IGxlZ2FjeS10cnVuaworODIxOTAgNjFmYzg0YmM0YjE0NjI2NWQwY2M5YmQ5NDQ3MzY5M2FlMWRjZTEyNyBweTNrCis4MjE5MSBiMTdmY2RkMzhhNWI0MDJhMGEwMTE5YmNiNjBjMTIzNzA5MTE4MjUzIGxlZ2FjeS10cnVuaworODIxOTIgMGQ0MjQ1NDEyZDBiNTMzYjU1OTk1ZWRhMmE4MzQ2ZjAzZDI4NDEzOCByZWxlYXNlMjYtbWFpbnQKKzgyMTkzIGM1NTE1N2UwM2FiOTQzZjk4YmIyYTRmNDY5ODY4MjVlZjZiYWZmODAgcHkzaworODIxOTQgNDViYWE0MjlmYzQ5Y2NkOTkxNWI2ZDMyMDQ1NTMxNmVhYzk1YTI3ZCBweTNrCis4MjE5NSAzZDZmMGEyMDUwZTI5MjZmNzA5M2RhMmIxY2U5NTEyNmJkZmM1NThkIHJlbGVhc2UzMS1tYWludAorODIyMDAgNWQ1MzhkMWU3MDk4ZDk2YWExYjE5YWM1NTEwMzY3N2RhMWJhZTA2NiBweTNrCis4MjIwMSBhMzliNTJlZTBiMWQ0ZDkyZWFiNjJhYTk5ZGZhZWM5MDNiZDhmODQ3IHJlbGVhc2UzMS1tYWludAorODIyMDIgODkzOTcwMTQxNjA4MmEyOWJlNTE5NGYwZjU1ZDBmNTE1ZTZmNjM0MyBweTNrCis4MjIwMyAzNDc0NGE3NjE0M2E4ZTY1NmUxYjYxYTdjOTRmM2QzZDY4MjMzYzEwIHJlbGVhc2UzMS1tYWludAorODIyMDQgMjFlODZkZDMyOGYxNTdlYzVmYzczMTFmNzUxOWQ1ZDNiM2Q5NzI4MSBweTNrCis4MjIwNSBiOGIwYTE1ZjhhN2NhNGU4NDMxYmE5YTBhNTNlYjM4NGYyZmQzMDIwIHJlbGVhc2UzMS1tYWludAorODIyMDYgYmI2MjIyYTRlZDI0MjZlOWM3YmVjYzk4NzVmMWMwOTViMGUxZmJiMiBweTNrCis4MjIwNyAxM2IyYTU5MmMxODY4M2UyZmRmZTA0NzZhMDgxM2I1YWQwYWJhMDAwIHJlbGVhc2UzMS1tYWludAorODIyMDggYmNjMGU4MjVmYWEwY2E4MGU5MzNhNzM4NGRlYThmYzk0OTI5YzBlMSBweTNrCis4MjIwOSBjNGRkNWE4ODllY2RmYjY4M2ZkOTY1ODZlZWM2YzJkYTUwYjM5OTc2IHJlbGVhc2UzMS1tYWludAorODIyMTAgNDZiNDg3ZTRhNzViOGMzOWYwODgwZmQzYzljODY4M2E0YzYzZTkyMiBsZWdhY3ktdHJ1bmsKKzgyMjExIDU3MTE1YWIwNmIyNzgwMDYxMzZkYTM5ZWY0ZGI3N2I0YTkyNWJmMzYgcHkzaworODIyMTIgNTk4ZThkYzE4YjgzZTg5ZDZiNzAyYzk0MjVhMWZkMGFiYjljYjk2MiByZWxlYXNlMjYtbWFpbnQKKzgyMjEzIGVmNjQyZTI0MDQ3YWI2ODE1NjQ4ZjNjOWUyZGM3OWIxMTFlN2JhMzUgcmVsZWFzZTMxLW1haW50Cis4MjIxNCA0ZTA5OWU1MDA0YTFlODI1Y2MyNDRmMTEzNzExNmE2YTU3OGQ2YTU3IHB5M2sKKzgyMjE1IGQ5NmFjYzQxYzU5ZjJmNDc3ZDRhZGE1MWI0ZWRjMjI4ZDRkZGEzZjggcmVsZWFzZTMxLW1haW50Cis4MjIyMCA2OWZkZjY4ZTBiNWI0NjA0MTE1MmIyMWIwYzA4ZWI5NDdhNWUwNzE1IHB5M2sKKzgyMjIxIGJhNTU4NDRiZjVjMDMxNGI2OTU1M2YxYmI3MzdiMjZlYjk0NzZjOGMgbGVnYWN5LXRydW5rCis4MjIyMiA4M2NhMGVhOWVmMWZiMjE2Y2FmY2Y1MGU1ZTZhYmJlMGRmNmE2NGQwIHJlbGVhc2UyNi1tYWludAorODIyMjMgMWM1YzE0NmRlNjQyNWQwMGUwOWQwYWM4MzViOWYwZDlkNWU1ZjgyMyBweTNrCis4MjIyNCAwYzg3NDkwNzY3YmYxYzUxNjc5MjYzNmNjN2FlMjE3NGY4MDZjOTAxIHJlbGVhc2UzMS1tYWludAorODIyMjUgYjY2M2NmNmJiZThiMzcxY2JjNGIxMDZkOGZhZTk2MTc0OTI2ZDk1MyBsZWdhY3ktdHJ1bmsKKzgyMjI2IDA5ZWIzNjI2ZDJhYWU4MTFkNmU0M2IzMGVjZWUzOTMzZDM3YTU3OGIgcHkzaworODIyMjcgM2QzMTA4YWMyMmIyYzZlNTY4NTUxOTcwNmE2OGRhNTA5MjFiOWNmNyBsZWdhY3ktdHJ1bmsKKzgyMjI4IDJjZDIyMjU3YTg2ZDdiODA2OWE2MzBlNGE2MDRkMDZlOWU1ZGNlOWQgcHkzaworODIyMjkgYTM0ZmQ2ZjgxNjUxNzliZmEzNTJmZGYxZTFhOGJiZTgwMDQ3YjlmMCBsZWdhY3ktdHJ1bmsKKzgyMjMwIGUyNDk5MGQwNTQ0ZmZmZjlmMjRhNjc2YWNhNTBhYzVhOWExMWYxNDEgcHkzaworODIyMzEgZjIzMmM1NjlkMjI1ZDdjMTQ3MGQyNmM2YzAxYTVhZDdhNWM4Y2VhMSBweTNrCis4MjIzMiBjNTFiZjMxNTNmMmNhODliNDBhODhiNjA0YjI4YzBhZjEzNGYzMmJjIHB5M2sKKzgyMjMzIDFiYTBhYjAyZTNiODU3MDczNDFhYWZmMTIyMzdkZWZkMzI3Y2IyZjkgbGVnYWN5LXRydW5rCis4MjIzNCBjYjZkOWJkNTU5ZWZkM2FkMzM2ZTU5NDg1NWNlYTFhOWY0NGVlYThkIHB5M2sKKzgyMjM1IGE0NTZiMDBjM2I3NTNiZGQ5NjVlZTc4NTgxN2JjMDBhNTc1YjQ3NzAgcmVsZWFzZTMxLW1haW50Cis4MjIzNiA3ZGNjZTZhMjgxY2UyYmY2YTVkNDdlODk5OWYwZTkzNDIwY2Q3MmRmIGxlZ2FjeS10cnVuaworODIyMzcgMTUyYjQ0NjQyYjJjNDE3ZWI2YWUyYWIwMjRkM2ZlNmZmY2ZlNDMxOCByZWxlYXNlMjYtbWFpbnQKKzgyMjM4IDRhZmVmMmU0MGI2MzMyNDliZDYwYzM2NTZiNGVlNTNmNjZhZWExZGUgcHkzaworODIyMzkgMjE1NTJhNDhlYmQxOTY4ZGI5MTU4YzQ5NWZlNDliZTU3NzBhNTMyNCByZWxlYXNlMzEtbWFpbnQKKzgyMjQyIDJmNmZlZDYwNjEzZTEyYzhlOTIxMTMzNDBlYzZhYzVjMWIwZjQ3Y2EgbGVnYWN5LXRydW5rCis4MjI0MyA3YjA0ZDlhNjk4YWVlNjc2YzJiMDU4ZGJlOWJhMjU0NzYzZjEzZjU2IHJlbGVhc2UyNi1tYWludAorODIyNDQgZDE3MTI3NmVkNzZkYTcyMzM0Yjc4MDA2MmZkMmFmZGQxNWUzZDIyMCBweTNrCis4MjI0NSAxZGNhZTUyYzQ5NWM4NDZjMWNmY2Q2ZDhkYjlkMTEzMmI0NDU0OTc0IHJlbGVhc2UzMS1tYWludAorODIyNDYgMjllNTA5NzkzZDNjNDgxOGE4ZjBjNTcwYmY2OTVkOTA1MzU1YTQ4YiBsZWdhY3ktdHJ1bmsKKzgyMjQ3IGFkYWZlZTk1ODllNDQyOWFkYWIwN2ZmMmNjYTUxZmYwYmQzMGNjMTIgcHkzaworODIyNDggZWQ4OWIxYWFkYzkzZDJkMWRhNzkwODkzNTU4OTM4M2E0MGQ0NzI5ZiBsZWdhY3ktdHJ1bmsKKzgyMjQ5IGM5MTJiNWIyNGM4ZjJkMWIyNGE3MDc0NWYzMjZhMTg0YzcwOWMzOWIgcmVsZWFzZTI2LW1haW50Cis4MjI1MCAwMTRlN2MwMGRjMjgwNTgzMWYyZWYyNGYxNDY5OWFkMjViZTFjN2U1IHJlbGVhc2UyNi1tYWludAorODIyNTEgMzk2ZWI2NjBlZTliNDBiZDllZjI1ODUyZjUwMjMwN2VmZTZmM2JlMCBsZWdhY3ktdHJ1bmsKKzgyMjUyIDM1MmRkYTA3NzA3YmY5MjhkM2RiOWU5Y2U0YzhkOGYxY2JkOGZkMjEgcHkzaworODIyNTMgYTM5Y2ViNmNlZGUzMTVkODMzNTgyMzM3N2QyYWIzMjVhMjA0OTZjNiByZWxlYXNlMzEtbWFpbnQKKzgyMjU0IDQ1NmQ2YzVkMjZkYzZlNmU1ZWY2NTk2NzUwMWEyMGQ2NThhZjM0Y2QgcmVsZWFzZTI2LW1haW50Cis4MjI1NSA3ZmQzZjZlYWY2NDk1YzMwN2RlYjQ1OTY4MzMwODdjMWVhYmNkYzIzIHB5M2sKKzgyMjU2IDcwNjY4OGZlNDU5MzU2NzNmOTUzNDQ4Yjc4YTdiMjJjZmNjMzE1ZjcgcmVsZWFzZTMxLW1haW50Cis4MjI1NyA1ZmIzZjFhNzQ3MjZhNmI4M2Q5YWFiNGRjMDczZjgxZmUxMjE1YjczIHJlbGVhc2UyNi1tYWludAorODIyNTggZjZkNWVhNzY5MjcyNzk2MzQzMTgzMDI5ZTQyZjk2NDI2N2ZjMDM4MCByZWxlYXNlMzEtbWFpbnQKKzgyMjU5IGU0NzUzODU1ZWMwMWJiZTUxNjE0NzIyN2I1MTdmN2Y4NjUxYTU5MzUgcHkzaworODIyNjIgNmVhNmQ4NTE1MGIxMmI4MWI3OTM0OGE5MTM4ZTQ2YThhOTlmOGE0NCBweTNrCis4MjI2MyA1NDdlNjVkYjRkMzg4MmVmZWI5OTMzN2RjYzI0ZmQ5ZTVkMmY5ODQ4IHB5M2sKKzgyMjY0IDZiNDU0Mzc3YWZmZWQ1OGY3NzdkNTA2MGNkYmQ4YWE1M2FjODM1MjYgbGVnYWN5LXRydW5rCis4MjI2NSA4MTUyODRjOWQ3MTkxNTRkYTM3OTMyMGExMWFkYTlkZjAxMTkzYzRiIGxlZ2FjeS10cnVuaworODIyNjYgNjc2YTQ4MGVmYzA4Y2JkYTRjZTg1N2I5NTE3OGViODkyN2FjMmY0MyBsZWdhY3ktdHJ1bmsKKzgyMjY3IGY3OWJlNzk4MTMwZjJiMWNmYzg1YjJmYmY4OTFhZTY4M2RhNmQ4YTYgbGVnYWN5LXRydW5rCis4MjI2OCBlZTFlZDgwZDc5NjMzOTE3OTVjYzI1MTU3YjRlMzI4NjBkZjgwMDZiIHJlbGVhc2UzMS1tYWludAorODIyNjkgMWEzZDhlYzBjNWZhOGFiNjVkZWUxNTU0YjQzZDk4NzAwNjY1NjZhOCBweTNrCis4MjI3MCA1YjM4YjUyMzRkZWRiNzJhZGM3NDZkNTI2ODQ0YWQ3NTFkMzZjMDBmIHB5M2sKKzgyMjcxIDAyODQyZWNkOGU1Yjk0YWRhOGJhYzNiZDYyMjkzYWZjNTdlZDdmN2UgbGVnYWN5LXRydW5rCis4MjI3MiBhM2RkMzllMzZjOWRmMTljNjAwZmY1ZjgxYTlmY2QzZDJkNDNkN2I4IGxlZ2FjeS10cnVuaworODIyNzMgZjExNzRlNzlmN2Y0M2U3NTk3ZjZiNzNjNTEzM2ZhMDMxMTQ0OWEwMCBweTNrCis4MjI3NCBkM2M3NWMyZjQ2YmUyNmJiYzY5ZWYwOWZjMmY2ODFhYjFiMzRmNjkxIHJlbGVhc2UyNi1tYWludAorODIyNzUgMDIwNDQ1NzNlZWVjMWVhYTMzYzNhYTQ2NzMwYjhmNTlmNDNjYTA3NCByZWxlYXNlMzEtbWFpbnQKKzgyMjc2IDZiMDMxMjQ5Mzc1NTllNzA5YjRkODJlYTFhN2RhOGNiMWQ5NjczZGIgbGVnYWN5LXRydW5rCis4MjI3NyBjNTA1NjM4MjQwOTQ0NDlhNzgwMjk1NGQ5NjU3MmE3OTRhYTdhNGJmIHJlbGVhc2UyNi1tYWludAorODIyNzggYzg4Zjc2MDBiYjE3YmFlNzA4NTgxNmUwNDRlYjQxYzNkNmM3YWQ5YiBweTNrCis4MjI3OSBmNTA1ZGYwM2E3ZDdjYmY3Mzk2MTJkNzI0N2RhZDE5YWE0MTVhN2E3IHJlbGVhc2UzMS1tYWludAorODIyODAgYjA0Y2VmNTVmZGY0M2NjNmMyMjhjM2E2MTU5YjAxZmM4ZGM2ODhiNSByZWxlYXNlMjYtbWFpbnQKKzgyMjgxIDdkOTI4MDI5YmMwZTlmMzYwNjdlN2MwZDdmYjViOWUzMzc3YTNhODYgcHkzaworODIyODIgZWVlMjU3OTI4MzAwMWE5ODA0OTU2OGYyZWQ0Yjc3Y2RmMWQ0MzJjNSByZWxlYXNlMzEtbWFpbnQKKzgyMjgzIGRjZjliY2Q5YTFlMDgxMDQ3ZGRmM2YwM2IyZjllMjBmOGI5ZjNmZjcgcHkzaworODIyODQgYTE4MzIzZmJhZjk1OGZhNDdhMTUzMDA0M2UxMTAxMmRjN2UyMWY1YiBsZWdhY3ktdHJ1bmsKKzgyMjg1IGRlZWQxNTZkMzNkODA2ZjBkZGMzNjhiZDc0MGQ5ODEyMGM1MjQyNzUgcmVsZWFzZTI2LW1haW50Cis4MjI4NiAwYmUyNDM5YmJjZDgwMTg1ZmVjZTIxZmEzMGQzZWJlOTUxZjMwMGJhIHB5M2sKKzgyMjg3IGU2NDc0NmUwMmU0MTAxMDBmMjZlMmI4YTEyZTE3Y2YwNzU0OGFiOWUgcmVsZWFzZTMxLW1haW50Cis4MjI4OCAyODE4MjgzYzE0OWEyZjQ3YmUzODBiZDJkOTg4ZjZjZjRkMzUwMWI0IHB5M2sKKzgyMjg5IDkzM2EzNTU2ZjU2MzM1ODhmYjEyYjM2ODhkOWYxYzdmM2VkMDI4YzkgcHkzaworODIyOTAgZWMwZmQ1YTZiYjQ1NmY3ODdlMDQyN2ViMGI1MWNlZmFiYzc5MTYyNyBweTNrCis4MjI5MSBjYjZmM2E0NDFhYzJkZTE2ZTFlZGZkNmRhY2M2ODFlYTRmOWNmMDU0IHB5M2sKKzgyMjkyIDJmMzUwMWY4ZDQ1NmZkZmQ0MGNkYTBiYzI5MDcyOWFkYTQzYTY2OTEgcHkzaworODIyOTMgMzU4ZDg2YTU3MmZiMTg5YTI0MzUwOWU4NjU5NWZlYTQxNzY2YjhjNyBweTNrCis4MjI5NCBjYmQ1MTM5ZThmZTQ4OTc1Y2RiYTlkMzI1MmM5ZDczYjZhODY0ZmU0IHB5M2sKKzgyMjk1IDA4OTczZTYwOGEyYTQ0MGY1ZTc1YWQ2YmRhZDk0YjM2ZThiYTFjMGUgcHkzaworODIyOTYgMDU1NTg4NGU5ODYyMzRiODMyMDkzYTczOWVlYjcwNjE0N2MxY2JjMiBweTNrCis4MjI5NyA4MjBmM2I2Y2I1NTExODc0OTc3MWZkM2NhOWRiMjQ0YjJmY2UyZWU4IHB5M2sKKzgyMjk4IDUwNGM0OTllOGM5NTgyZDViMTdkYjY2YTczMWIyNjYwODI1ZTMyMTIgcHkzaworODIyOTkgOWYyMjk0ODc0OTEwY2VkZGJiMWZlNWZhYTYxNzNlNTBhYjlkMTM1OCBweTNrCis4MjMwMCA4YTdjY2I5NjE4MTQ1OTFmOWJiODc4NjQ3ZDk0YzFmNTYwMGEyZWRkIHB5M2sKKzgyMzAxIDhkZjYxOTI1OTA1NjRlNjVlNjdhNjRmYzA2MWEyZDIzZmEyOTY5MjIgcHkzaworODIzMDIgMzI2NTFlZTc3OWVkMDBjZjE3MjA3NWUxYWUzYTE1MDA5NzdhYTM0YiBweTNrCis4MjMwMyAzNjcwYzY2ZWUxNDlhNWMzODM5OTZiOTI3MzFkOTA0OGNlYmQ1ZDU0IGxlZ2FjeS10cnVuaworODIzMDQgMWQxNzk3YWY0NjIyMGI1NzIwNTJkMTBhMWViYTE2MzQ0ZjkwZjUwNCBweTNrCis4MjMwNSBhYTI2MmM1YjE4YjUzMjZkYmExMmNmMmJlODkzMzhkOGJiOWQ2OGM0IHB5M2sKKzgyMzA2IDkzNTA3NWQzMzVmZThiZTdiYmI4ZWUzNzVkODZjZjVhMjRmMzM5OWQgcHkzaworODIzMDcgNDZmZWM3N2Y5NWU4ZDE1ZWQwMjQ3NjkyNmZjYWNiZDU2OGQ1NGEyZSBweTNrCis4MjMwOCA2ZWM4MjVjOWIzYjUwMWYyYWMxMjg4MzJkYjczZjJmNGQ4NGU3YjZlIHB5M2sKKzgyMzA5IDJlMzc2MDNjYTA0ZGEyNmI0MTM3MTViZDg5ZGMyZTg1MmIwZjUyYzAgcHkzaworODIzMTAgNGFhNWI5NTg5YzQyMTIwOTIzODJjMWEzZDk2N2Y0YjIxNTU1MTg0MSBweTNrCis4MjMxMSBhODU3ZGQ0MDc5NjQ4MmZhZjQyYjgxNmFhMzlkYjI4NWFlMTFlODFjIHB5M2sKKzgyMzEyIDJiYzA4MDAwYTg1NzI3ZTEwZWE5NDgzNDFkMDQzYTVhZGNhMzkyZWEgcHkzaworODIzMTMgZGQzMGJjNWQxODRlOTE0NmFhOGU0NWI0ZmIyNzRmODlhNzFlMzlmNyBweTNrCis4MjMxNCA0ODkzZTQwMDlmNTY3MTI0OGI4NmIwZDE5Zjc0Yzk4OTFjMzhkYjdjIHB5M2sKKzgyMzE1IDlmNjk5ZTUxNGE2MmMyN2U1Mjg2ODNmZWNkMTA0OWJiMzFjYmQ0OTAgcHkzaworODIzMTYgYTljZWQ0MjNkYWNlNzVhMjczMmE1ODEwM2NhMGY4MWQ5MGM4MjcwZiBweTNrCis4MjMxNyA0N2UyOWE1YzNkZGZmZjI1MGRlMzYzYzUzMTlkYzU5NGFmOTY0ZGZhIGxlZ2FjeS10cnVuaworODIzMTggM2JkY2RlY2VhNTYxMGUyNmY3NTM0ZmE5NjIxNjZmYTlkODljNzI5MSBweTNrCis4MjMyMCBiMDdiMmM5NTRhODA3N2Y0YzlhZDNmYzQ4OTMxNGVkODU3NGYyY2ExIHB5M2sKKzgyMzIxIGQ3ZTM0MjNjOWRhODIwMWJiNGIyYWQzZTIzZTkyNDQzMGFkMDNhZTMgcHkzaworODIzMjIgZTQyYmU2ZTZhYzJkNzM2NDJkM2YwMmE5ZjNhMWZlZmRkOWMxNzMyMCBsZWdhY3ktdHJ1bmsKKzgyMzIzIGZkMWExMTI5M2U2MmUxY2I0YmMyMDE3OWI4NDY0OTlkOTQwZDVhY2UgcmVsZWFzZTI2LW1haW50Cis4MjMyNCA5ZjAxODhlNGY4MWE4ODYyNzA5NGZlMWJhM2U2M2I4ZTQ5OGZhMjMwIGxlZ2FjeS10cnVuaworODIzMjUgMjAwM2I3MGE5YmFkZGI2NTEwZThmZTk5MTRiNGE5ZGQxMTUyMDIwMSByZWxlYXNlMjYtbWFpbnQKKzgyMzI2IGVhYzY0YTQ2MTBmMTIyNjJiNmI1NWIxNDNiNDhkYWY0N2UzMDhmMTYgcHkzaworODIzMjcgYjhkMzY1ZGExNzk4OTQxYjc1MzEyNWVkMmJiNThmOTUxYzNhMmU0YiByZWxlYXNlMzEtbWFpbnQKKzgyMzI4IDI4ZjlhMDAwYTM3OWQ0YzVlMTA4YWY1OThmMTEwM2U4ZmJkZjA1MTUgcHkzaworODIzMjkgM2NkMTZhYzUxODc3MTUzZWIyZmQ4NjUxY2VkNTEzNmYxMGJmYjYwNCByZWxlYXNlMzEtbWFpbnQKKzgyMzMwIGMwYTQ5YjZhNmZiMTFkODgwNjgwOTZhODlkZTlkODgwOTViY2Q4NTkgbGVnYWN5LXRydW5rCis4MjMzMSBmODE2Yjk5MWU1YjMxY2E3NzIxZThjMjcxMGU5NDVkMzdkZTM5YWYyIHB5M2sKKzgyMzMyIDg4Mjc2MTdhMDdkYzkxZjZlMmQ2NDM2ODVkNzIyYzk0NTZiNmRiMjQgbGVnYWN5LXRydW5rCis4MjMzMyBkNzE0MTFhMGE0NzMxNmFlYjM4YzFlYzlhOGQxNDAzNjdjZjZmMDE4IHB5M2sKKzgyMzM0IDJkY2Y0N2I1OTQzZjRlZTRmNWQ5MzE2OWI2MTEwZTFlYzU0YTZhNDMgbGVnYWN5LXRydW5rCis4MjMzNSAzN2NlNWFkYWU4YjliODhlOTc0YTVkOWE5ODZjOWNiMGQ5NWNkY2YwIHJlbGVhc2UyNi1tYWludAorODIzMzYgNzQ2NTc5YTllYWQ3MDVjZTdmY2RkYWQ1ODhjNTNhMWFkNzNhMDZkMCBweTNrCis4MjMzNyAyNWI3MjIxZGRhNjkxYmM1YWIzNGU1YWFlOTU1ZTcxNGY5ZWRmMWUwIHJlbGVhc2UzMS1tYWludAorODIzMzggM2NiM2NlN2RjYWI4NTBmOGYxNWNkYjdkZmZiZTI1N2FjNWMwN2MwMCBsZWdhY3ktdHJ1bmsKKzgyMzQwIDAyOTA0YzZlZTUwMjk3NjExM2QyYTZhOTQ1MTM0ZTg3YTZjMzlmNDQgbGVnYWN5LXRydW5rCis4MjM0MSAyNTIwYjgxOGRhMDUyMTkzZDhmYTBmNzM1MGE4NmNhNDMwMzU3NzdkIGxlZ2FjeS10cnVuaworODIzNDIgYzhiZGIzMmIwNGFhYWNhYWIyYzk5OWRkMjViNzE4NDY3NjE2Mzc4MSBweTNrCis4MjM0MyA2OGI2NzBmMzYxNGU5MGI0MWRkZmJiYTdkYzEyOGQ1OTU1ODAyNDk1IHB5M2sKKzgyMzQ0IGNlMDMyNTI3NmQyYWZhZjI0MDM4MWIyMmQ0Mjc5NjEyZGM5MGViMzkgcmVsZWFzZTMxLW1haW50Cis4MjM0NSA5Y2E5NTI0ZDNlNTc4YTQxYWQ1ODQyYjJkNTJjOTY3ZTA0MzgzNzU4IGxlZ2FjeS10cnVuaworODIzNDYgNjlmNmQyMTMwMjgxMjRjNzMwOTk1ZjdlYjljNTc1MTQzOTM2ZmNiMiBweTNrCis4MjM0NyBiODE3ZTcxNjUxNmVkZjAzYmY4NjM1ZDc2NDYxNTI3OWRiODBhYWQ4IHB5M2sKKzgyMzQ5IDk1ZjhiMjVlNTNjZTA5ZTRlZTgxMzFkYjNiNTg1MTNmNTc0NDU4YjggcHkzaworODIzNTEgMmNmNGNhMWVkNmQ2Y2Q2ZjNhZWRkMDZkYTc4NWY3NzNlOTBmYzA2YiBweTNrCis4MjM1MiBhY2Q4NjQ4ODY1YWFjNWUxZjNjZTc2ODdjZGI2NWFmMzk2ODc0MGEyIHJlbGVhc2UzMS1tYWludAorODIzNTQgZGZiZGI5OGM5MmU3ZjFiN2YzZjZkNzczYzZiZTVhN2VkMTYyYmJkYiBweTNrCis4MjM1NSAwZTE2ZGRkNDQxNTc4ZWJkZmNjZDc5MTAxZjVlYTVkMjAxMjQ4NWFhIHJlbGVhc2UzMS1tYWludAorODIzNTYgMmE4YzY4YmEwMDBiYTRmMjA3NWQ5ZjY5M2RjODk3MTA4MTU2NjQ2OSBsZWdhY3ktdHJ1bmsKKzgyMzU3IGViZmI2YmMwODJkOTJlZDlhNDk5NGMwMTQ3OTNkYTc1OTgzNTcxOGMgcHkzaworODIzNTggYTRlMWM1NmJlNTMyY2U1OGY1NTBhZmNkZDRiMGRhY2ZhZmFiNTFjOCBweTNrCis4MjM1OSAyZjkwNTFmZTZhZDljNjUxNTIwZjRhMWE2ZTMyZmQ0M2FkM2M5MWUzIHB5M2sKKzgyMzYwIGZlNDQ4MjhlYTdlZGRlMWRlYjU3NjkxNDlmNTQxOWVkZDZlMjk3ZjMgcHkzaworODIzNjEgYzUxOTI5MjMzZTE5NTQ5ZjEwNDAyMTNlMWVkNTc2OTI0MmFlNjk4NyByZWxlYXNlMjYtbWFpbnQKKzgyMzYzIDE0Zjk0YzAxYTAwMmE1ODExOTdkM2U4ODk0Y2MxOGZjYzVkZTAwOWYgbGVnYWN5LXRydW5rCis4MjM2NCBmN2I1NDM1Mjc3MWQyY2ZiYjdjMjA4NDk2ZGZmMTVlYzU1OTdlM2ZmIHJlbGVhc2UyNi1tYWludAorODIzNjUgYjcyYzMzZjQ5NmFjOGUxZDc1NzczMDY5NWU5Mjk4NjIyMDhmZDYzOCBweTNrCis4MjM2NyA3MTk5ZmYzODZmOWVjN2NmMmM5YWJiY2FhODYwMmI3YzEwODI3ZWY2IGxlZ2FjeS10cnVuaworODIzNjggMmY4ZDE3NjI2Y2RmZjQ0ZDVjY2EwMWU4M2E2YmIzMDVjOGE1Nzg4ZiBsZWdhY3ktdHJ1bmsKKzgyMzY5IDE3ZjE3ZGM2ZDQ4YmM0ZWI5ZjgwYWEwNDUxNmE2NDQ3MmVmODIyMDMgcmVsZWFzZTI2LW1haW50Cis4MjM3MCAwNzEzMWYwOGMzZGUxOTVjMDM4MzU5MWMzNDViNGFhMzIzZWUxYzBiIHB5M2sKKzgyMzcxIDI5NjQyNDM3NDgzNjE2NTZkOTAxMDY4NjcwMzU4NmJjOTRhNmYwYmYgcHkzaworODIzNzMgOWUyOTFhYzA3YzViY2Y1NzI1MGY1M2VkNDVjNmZhOTBlMzZmYzQ1ZiBweTNrCis4MjM3NCAwZmU5NzkzMjY0MmU3N2JhN2U0MmQ0MzU5ZGE3MzFlNzczOTAyM2IwIHJlbGVhc2UzMS1tYWludAorODIzNzUgNTA3MjU5MGI0ZGZkYzRmMDNlNzAyZTA1M2UzZDFjNjc5ZGRjN2E4YSBweTNrCis4MjM3NiAyOTBiZDBjMTUwYTY0NThkODE3MmExNDA5MTk3ZWYxNDk4YmY1NjhlIHB5M2sKKzgyMzc3IDE1ODE2NmVmNmYwNmQwMTRmZGUwODk5NWRmYWU3YzdmODU1NjIyZTcgcHkzaworODIzNzggYTkyYWM3NTcwMTE4M2FhMTVmZTI5NDY2OGEyNGFjMjhlMTUwMWJiMSByZWxlYXNlMzEtbWFpbnQKKzgyMzc5IGI1ZGZhMzM5NDk5YzI4NDQxNGM2MDQ3NTZhZjUxYjU5ZGQ3YzdhNmQgbGVnYWN5LXRydW5rCis4MjM4MCBiODhkYTRmNzdmNjg2Yzc1ZDM0MTExMDcwNGZmMmE0ZDM2NGMxNDBkIHJlbGVhc2UyNi1tYWludAorODIzODEgZmNhZTk1OWEyZmFiNTJmNDA2ZTdlNzIxYjVjZGE2ZjQ2ZWJlM2I5NSBweTNrCis4MjM4MiAzMjFlZGJhNWY3OTViZjZhMDBmZWQ2YTZiNjE1YmZjOGUyNzVlNDVkIHJlbGVhc2UzMS1tYWludAorODIzODMgMjVmYmYwMjMxMDJkOWI5MGM2N2U0OGE0MmM0ZTQ2ZjE2YjAxMTY3NiBweTNrCis4MjM4NCBlNmJiOTkwYWM5ZjY4NzAyMDRiY2M2MDIxMDI4YmZhNzZhNmJjMmQ4IHB5M2sKKzgyMzg2IDRmY2UyNWFiZmRkODJmYmQwNTFiYjEyNGM2MDc5ZDhiMzg2M2E2MDYgcHkzaworODIzODcgMTZkODhlY2EzYzMzYTE5ZGYyNWRkNjVmMzIyZGIyMGEyMThmNjFiYSBweTNrCis4MjM4OSBkMzRjZTBkZTk0MWNhODlhNGMzM2Q1OTNjNTUxZmJlODZjOWVmMGQyIHJlbGVhc2UzMS1tYWludAorODIzOTAgZTZmMWIzZDEwNDBhNDc1YTA0NzY1MjFiYWJmMTVlZTQyODliMzM0OCByZWxlYXNlMzEtbWFpbnQKKzgyMzkxIDJiYzU0ZGE0YjgyYzFhYjRjMjllNDcwZDcyYTZmZjY4OWJiZmJlNmEgcHkzaworODIzOTIgMzA4NDNiZTJlMTFhMjZjMzQ1MWUxNjAxNGMzYTc1NDFiODk1NmY4ZCBweTNrCis4MjM5MyAwNDNlZjA0ZjY0ZDIyYzdiNjk5ODgzNGRiYTYwMTNlZjJjNjQzYTM5IHB5M2sKKzgyMzk0IDMwZTFkOGQwODEwNTc4MGYzM2YyYWM0ZmJmMWJhNzNhZGNhYTk5YzAgcHkzaworODIzOTkgOWRjYzkzZmU3NTI4MmVkZjhkMmQ4MmY3YTQ4MTE5YjU3MWNkNWFhZSBsZWdhY3ktdHJ1bmsKKzgyNDAwIGM1YWZlOTU1Mjc3OTNjODI4ODQ2YjM4NmFlNDA4M2YwZTkyYTllYjAgbGVnYWN5LXRydW5rCis4MjQwMSA5ZjU0MzBlNDc3NzAwN2UzZTczY2I1MDVlNzJjNTQ2NTRkYzNiOGE4IHJlbGVhc2UyNi1tYWludAorODI0MDIgMDFjOTU4MWM3ZTNmNDk0ZGMwZjAzMjNjYzEwNTdlYjhiYzA5ZDFiYiBweTNrCis4MjQwMyBlOWM4YTk2NTg0ZDQzNGUxMDYyM2NmNGUzMGMxYjlmMGJmZTg0YjA3IGxlZ2FjeS10cnVuaworODI0MDQgNzZiYzI1NWQyOWZkZjRlM2JlNzBlMDY4NzdmZDA1ZTM4Mjc1YmIxZCBsZWdhY3ktdHJ1bmsKKzgyNDA1IGRiNmZkNDA1ZTU5NGZkNmMzMjk4MjYzNDUwMzcxZjE1OWE4ZmE4NjEgcHkzaworODI0MDYgODE2Y2Q4NThkMzMxYThkNTA2NjQzOWNjNmVlODczOWFlOTcwMWYzZCByZWxlYXNlMjYtbWFpbnQKKzgyNDA3IDNlODc4ZTI2OWIwOWVlNWIxZDA0NjFhZWQ0ZjRmN2NjNDhhNzM4YjAgcHkzaworODI0MDggM2E5M2EwNmU1ZTMwY2RmYTg5NGI3NTdlZmVmYjM3ZDc3MjdhY2FiNiByZWxlYXNlMzEtbWFpbnQKKzgyNDA5IGIwNDYxNmJlN2YxNGQ3MDYwNDQ3ZjAzM2Q0ODY2MzRkMjQ0ZDk5NTAgbGVnYWN5LXRydW5rCis4MjQxMCBjZTgxNDIyZWUzNWIzMTA1OGU4ODA0ZmNjZWRhODU5NWRlYTk3NzczIHB5M2sKKzgyNDEzIGUwZDVhNGE0OTExMmEyOGUxMWQwNzk5Nzg5N2EwNzQxNjE4NTIyYjggcHkzaworODI0MTUgOGI4ZjM2OTk0MWMxZWRiNDI4OTA2ZDUyNzliZmUzMzQ2Y2MzZjBmOCBsZWdhY3ktdHJ1bmsKKzgyNDE2IDMxODViMDU1ZjkzNzY2ZDJhY2Y0ZmI4M2VhODcxYjA1NGU5YzZmOGEgcHkzaworODI0MTcgYTg5YTNkOTJmOGFlYWRmYjgyNWM1NDM2NmRjOTJmM2E5NTQ5MmU3NCBweTNrCis4MjQxOCBhOWEyNjdhODFkYWM0MjNhZDU4YmQ2NDVhMGUwZGFkM2JlZWQyNmQ3IHJlbGVhc2UyNi1tYWludAorODI0MjAgYzUzZTEzNWEwOGI2OTBhOTA0NTcyN2VjMzk3N2I1ZDAwZGEyMDk1NSBsZWdhY3ktdHJ1bmsKKzgyNDIxIGE5MjcxOWI0OWU1ZWJhZTg1ZjAzYmI3YTNhOWFhN2M3NWZmMDg0MDEgcmVsZWFzZTI2LW1haW50Cis4MjQyMiBmYTExZDJiNGY5OGEyZWViMTE2MWU2N2YzOGJkZWU3YTkwNzBiNDYzIHB5M2sKKzgyNDIzIDEzYzA2YTZmNDY3Njc2ZTZkZDkzMGUzNWFjODgyODllNGI0ZGI4MzAgcmVsZWFzZTMxLW1haW50Cis4MjQyOSA0M2YwNmNhMzZhYjMwZDE2OGEwY2YwN2RiYWViNDM2ZGVlYTA5M2YxIGxlZ2FjeS10cnVuaworODI0MzAgZmU5NTUzYTZmNzk4ZDcxMTkzODZiZTY2ZTkyZDVmYjQ0MGY4ZDJjZCBweTNrCis4MjQzMSA2ZDBkZWRiM2EyNGVjMDc2NzQ0N2UxYjk5OWJiZTFmYmI0MzI2NmMxIHJlbGVhc2UyNi1tYWludAorODI0MzMgYmE5Y2YwZGYyMWIwMDk5MDcyZjFhM2FjODA3NDNmZTliZTZiZDBlZCBsZWdhY3ktdHJ1bmsKKzgyNDM0IGZlZjYzNDhjMmRkNmNmMjFiNTEzN2YxOGE5NzVlMjYzMWY3ZTc3OGMgcHkzaworODI0MzcgNGIwYzg4Mjc1ZjNiNjQyNTg1Mzk0NDExODRlOWMzNjY5YWY5ODlmNCBweTNrCis4MjQzOCAzNTM3MGQ3MjM2YzljNmFlNjJiNjQyMDUwNTg4ZDgyYTA5OGM3NmNmIHB5M2sKKzgyNDM5IDE3ODY2MjhlYTZmZjY0MTBkYjkwM2VmMjRlZjEyNGVkNTg2NmU3OWEgbGVnYWN5LXRydW5rCis4MjQ0MCBlMTdiMWNiMWI2MWM5Y2M2M2Y2MGZjMWVjOWMwOWM0YTcwMDdiMjg1IHB5M2sKKzgyNDQxIGY0MzBhODkxOTZjOWFmZWYzZGVmNzhhMjk3NWQzYTkyZTI0MWU5NTggbGVnYWN5LXRydW5rCis4MjQ0MiAzMzA0ZGM1NmRkYTQ0MDdmOGNjNjUyODg3MDhkODg5YWZiNjdhNDc1IHB5M2sKKzgyNDQzIGIzYmZhYmMwNDQ3YzUxOGE3ZjhiNmI1M2VlODAzZTkxYWIwMmFkMjMgcHkzaworODI0NDQgMzZhYmQ3NTU0YmFkOGNjYTI3NjczNmRkZjRmNGMzYjYxZDVlMjQyZCByZWxlYXNlMjYtbWFpbnQKKzgyNDQ1IDhhNjg5ZjI5Nzk3MGM5NWM0MDY5Y2E5ZjkxMDZhZjZlMjY5OTc5MzggcmVsZWFzZTMxLW1haW50Cis4MjQ0NiBlZjY3OThhOTllYWQyZWI2NzAzM2E5Nzg3YjgzZjI5OGYzNDQ0YjU2IGxlZ2FjeS10cnVuaworODI0NDcgYjU0MGE2MTJmNjAxNzAxNWViYzU5NWU2MGUzNDRhZmVhOWM3MGJhNyBsZWdhY3ktdHJ1bmsKKzgyNDQ4IDdmMTQ5NmU0MTEyNDczOGRlZjRhNjc4ZmZiZjZlYWMxYWI2ZDZkMzUgcHkzaworODI0NDkgZTgzNGM1ZDNhOWEzM2UzMDQ1ODZmMDkxYjExOWExOTA1OGJiNWRiNyByZWxlYXNlMjYtbWFpbnQKKzgyNDUwIGFlYzQyMjExMWNkZWEzNTczN2YwOWI5Y2YwM2YzMDFiMDdhNmY4YTAgcmVsZWFzZTMxLW1haW50Cis4MjQ1MSBmMWJhNGU2ZDZjMTIzMTczNDIxZGZjMzBhOGE5YTcwMGIzNjk5YTg5IHJlbGVhc2UyNi1tYWludAorODI0NTIgNjFhZDY4OTRlZDZhYTc2YzBhMzk5N2M4NWU5ZGE4YTk3NzE1ZjViMCBweTNrCis4MjQ1MyBjYjc4MDBjNjQ5MTIzY2M3NDMwYWUzMTJhYTY2MmZiNWE1OWZhZjZkIHJlbGVhc2UzMS1tYWludAorODI0NTUgZGUxNmE5MTViZDJhYzdkNTg3ZDIwYzMzNzA2YTE2NjU4YzM1MDIwNCBsZWdhY3ktdHJ1bmsKKzgyNDU2IDUyOWIyMTc1MzM5YmYwNjE1Nzc5ZmYyY2I4NGU3YzM5NzA3YTM4OGMgcHkzaworODI0NTcgNDNjMDQ3MTFhYWNiY2JhYjUyNGFkZWNmZWE4NGRjZGM1NTkzMjkwMyBsZWdhY3ktdHJ1bmsKKzgyNDU4IDMxNDQzY2Y0ZGVmMmYyYzFiNTY0YzRiN2U4MTZkNGViNDg5NmVlODggcmVsZWFzZTI2LW1haW50Cis4MjQ1OSBmYTE2YWNiMmZmZGQ2MTg1YTYzYWRiZGQ5YmNmMTM3YWM2NzJlNmRlIGxlZ2FjeS10cnVuaworODI0NjAgYzcyZmQ4YTJhZTAxZDA2NmIwZmE4ZThjZGNjYmZhZmNhNzFhMzRiNiByZWxlYXNlMjYtbWFpbnQKKzgyNDYxIDFlYjM2ZjE2OWM5NzI4ZmZjNzAzNzM5ZjQwYmE0YjRjNmY2YmY2YzggbGVnYWN5LXRydW5rCis4MjQ2MiBkM2ZhMTk5YjRhMTc0NjZkOWQzNTZlYWE2ZTUyZWJkNGVjMzhmMzk4IHB5M2sKKzgyNDYzIDhiZjZkOGJlYWZlMWQ1NGU4YzcwMTNmNjYzZThjODc2NmVjNTk2MjEgcmVsZWFzZTMxLW1haW50Cis4MjQ2NCBmMjcxZTFkMGU5YzQ0MjQ5NTRiMWM4Zjc2YTRiN2JkN2MyYTRmNmFlIHB5M2sKKzgyNDY1IGQ4MzFmYzBjMjYzNDJjMzNjZDc1M2I0MDI0YzE1YTc3NjQ5OGYzNTAgcHkzaworODI0NjYgYjhiMTFkNDM0OTQwNjFkNDJmNGY2YTE5MTBiYmI2Yjg2MzlmOGNkYyBsZWdhY3ktdHJ1bmsKKzgyNDY3IGIwYmU4OWY3MGZmOWI3NmVkYzBkYjQxY2EyMDhkOTFjZjZmNzBiMzYgcHkzaworODI0NjggOTkwMGE5OThiNDYwY2VkMDBjNWYyNDJkMjhkMmE4ZTNkZTlhNjcxYyBweTNrCis4MjQ2OSA5ZGM1ZjM4NWY0OTQyYzQ3OTVkY2Q0ZWMwNmFlN2MzYzE2MjExOWViIHJlbGVhc2UzMS1tYWludAorODI0NzAgNGRlMTNmZWFlYTAxODA1ZTE0ODFjODE1MDZkYWI3M2I1MjNmYTFiYSByZWxlYXNlMjYtbWFpbnQKKzgyNDcxIGViZTFiM2ZmOGQzMDIxODE4NWE0NTdlYjAxMjM5NzUzNzVhYmE0NjQgcHkzaworODI0NzIgNjFjYjk0MTBhODQyNGI1MDg1MTM3MTlhNDJmYzJhZTRjZDAyMWI4ZSBweTNrCis4MjQ3MyA0ZDNiNGYzNDE5MmIyMzllODdkOGJhMDc3MzY2MjAxNTY4MjljYzQxIGxlZ2FjeS10cnVuaworODI0NzQgMzIzOTZlODAwNDhmOWE4NzA2YjE2YWU2MWJkODI5ZDg5ZDMxOWYwNiBsZWdhY3ktdHJ1bmsKKzgyNDc1IDY5NzU2Y2RmNTM3YjRmYTM3ZGNhOWQ3YzhmMGYzOTkzOGEyNDhlMGIgbGVnYWN5LXRydW5rCis4MjQ3NiA4ZTIwZmZjNjE5ODY3M2NhYWZkYzcyMDFhYjliZmY2ODA5NTZmYTk3IGxlZ2FjeS10cnVuaworODI0NzcgY2M0YmQ3NjZmZTEwOWE1NzIxZDY1MWFhZTM2NTY3MDdiMzkyMjBlYiByZWxlYXNlMjYtbWFpbnQKKzgyNDc4IGM1ODU1ZGRkZjBlMWZhYmFlOTgxYTc1ZWQ0YTkzNDY1MDkyYjg5OWMgcHkzaworODI0NzkgNTYxM2QyZTFkNzc5NTI3ZWFiOGM0ZThlZDdhMjY4ZDJlMDg0YjBjZSByZWxlYXNlMzEtbWFpbnQKKzgyNDgwIGFhZTczODFhYzBiMmQwYTVjNDk4ZWI1MmUzM2Q3Yzk3NDM0MjcxYzYgcHkzaworODI0ODEgZDk3YzI0NTIzMzIxMGM3OWJiNjQ5OTdiZGU5MWFiNDc4Yzk4NjY4MyBweTNrCis4MjQ4MiAyYWFiOTU3YmY2MWZlYzY1YWFjYmFkZTVhNWU3ZmY2ZTIwOWRiMGU4IGxlZ2FjeS10cnVuaworODI0ODMgNmNmZTdiOTA0NjQ5YTA3M2MyMGM4MzY0NmMwNDRmZGZkYjU2MTc3YiBsZWdhY3ktdHJ1bmsKKzgyNDg0IDVkODM0ZmNkZjk4MGNkZmExZmFkMDRiYmVjMTNiZTM0ODkzNWY4ZGYgcHkzaworODI0ODUgMjMzYzhkYWI4ZmZhOWY3MTA1MjliMDY3MWZhNTBlZmVmZDU2NDMwZCBweTNrCis4MjQ4NiBhYzgyM2U3MTZkNTcxN2U4Y2NjMGUxMDJmMTY3YTNkYjg2NzRjZjE3IHJlbGVhc2UyNi1tYWludAorODI0ODcgYmIyMTFhMmRkYWJkNWYwYjg2MmNiOGNlMmJmNzU4NGQ1YTBmZjQwNSBweTNrCis4MjQ4OCA1NWVkZjc5YWQ4Mjc3ZjM5OWM0N2QwOWUzMTQ1M2U2MmU0N2Y2MzI3IHB5M2sKKzgyNDg5IGQzNWY4ZTViNDE5N2E4ZDdhMTUwNGZmNDc0ZGYyZjllOGQxNTEzMDEgbGVnYWN5LXRydW5rCis4MjQ5MCA0MGYxOWIwYmZhNjFhNTZiNDE0MGQxY2Y2NWFjMDJlYjZjYzdkMTA1IGxlZ2FjeS10cnVuaworODI0OTEgNmFjYjI1MzU2ZDJmMWE2OWRmMTQ0ODFkNGY0ZDg1NWExOTk0OTI3ZSBsZWdhY3ktdHJ1bmsKKzgyNDkyIGJlOGUxYTZlYmY3YWJlNzVhMzgxNGM0MmQzMjkwM2I4OWJlY2Y4ODYgbGVnYWN5LXRydW5rCis4MjQ5MyA0Y2E1ZDBhZWE0MWQzNjA5Y2Y0NjZiZmU4MzU5MTEyZmZmMjVhNzYzIGxlZ2FjeS10cnVuaworODI0OTQgOGJiOTMyODhkYjZkNjhlOWMxOGE4NWNhYjk1ZWRiMmUwM2QxNTJiNSByZWxlYXNlMjYtbWFpbnQKKzgyNDk1IDI5MTE2YjJmY2ZmZTkyODEzNzE2NGUyNzU4NThmYjNjNjkwNmRkZDcgcHkzaworODI0OTYgNzE4NDQyMWY4M2I1NjRmYWI1OWZlMmZiMzBiNDIyNzY2YWEwMmM0MCByZWxlYXNlMzEtbWFpbnQKKzgyNDk3IGIzYjkxMmQ0NTNhNTgyZTQxZGZmZmU3MWE5MTRlMWNmZGU3YmI0ZjcgbGVnYWN5LXRydW5rCis4MjQ5OCA5OWM4NGE1MWY1NzY1YmJlYmJmZjc1MDhmYWZjNWY0ZTAxYTU0MGFlIGxlZ2FjeS10cnVuaworODI0OTkgMmQ1ZjUxNTBkY2UyNGRhN2NiNjg2YmVjY2VlMDJiMjk3NTU4M2EwNyBsZWdhY3ktdHJ1bmsKKzgyNTAwIDgwYzhiNDM0MTMxMmEzMzlhMDBmMzc2MzFjMzg1NTAwNzg3OGQ3Y2QgbGVnYWN5LXRydW5rCis4MjUwMSA1NGZkY2MwZjRiYWNmMzc0ODRkYmJjY2YyZDdhZWVjMmJjODJhNzE4IGxlZ2FjeS10cnVuaworODI1MDIgMjE0NTU5M2QxMDhkZTYyZWJmNzcwOTg3YTRhYzJhNTdkMjY4YzlkMSBsZWdhY3ktdHJ1bmsKKzgyNTAzIDdmN2Q4MjM0MDJjNjlhZTYyMzJhZTI2MDkzY2Q0ODJhNGYzNTdmM2IgcmVsZWFzZTI3LW1haW50Cis4MjUwNCAzZjQ2ZjhhOWRiNTQ5NTE5MzM5ZmI5ZDU5OGI0YmIwZmNmZGFiZDIzIGxlZ2FjeS10cnVuaworODI1MDYgNzZkOTA4NDNkYmE2MTNjNTAxMzgxZjU2MzViNWFlZDZhZjQ0MWRmNiByZWxlYXNlMjctbWFpbnQKKzgyNTA3IDM2ZDAxYzAxN2I5YmVlZjkxN2Y1YmJlNDgwNzg1MTJlMGU3ZjQ4ZDAgcHkzaworODI1MDggMTk0YjZlNjJiZTk1MGQwY2M5OGVhNWNiYTVlYzIzNjU2ZDA1MGIzMSByZWxlYXNlMjctbWFpbnQKKzgyNTEwIDI2MjUyOWQxYzMxNWNkMTllOWQ2NWQxMDQxZGJlN2U0MmRjOWY5OGEgcHkzaworODI1MTEgMmFlZTgyOWVkZmUyODAyMjhiY2Y5OGE5YmRmZTNhMmRlMWI5YjlkNiByZWxlYXNlMzEtbWFpbnQKKzgyNTEyIGQ3NmQwZWViMjNjYWI4NDNhYmM2MzdhYTk0MjNhZjBmNGZmMjFjNjYgcmVsZWFzZTMxLW1haW50Cis4MjUxMyA5NzZhYTRhOGJjZjMwN2FiYjUyZWMwMGUzMzEyYzlhMmIxMmJlODhkIHJlbGVhc2UyNy1tYWludAorODI1MTQgZTQyYmFmNjc4ZDE0NDAwNjIwMjJhYWU5OGU4NmQ3NjNmMmU5YWE0ZSBweTNrCis4MjUxNSBmZTQ2YThkYmFmNjhjYTc0NGRmNmFhZDkxNjZjOTNlNThhNjZmMzE5IHB5M2sKKzgyNTE2IDE3ODQ1NWEyZjFhYTViYmQ5NjAwYTBhZjFmNjViMjllY2QwMmZkOGYgcHkzaworODI1MTcgMzFhNjg1NGY3ODEzOTkxOWY5MjFlNGJjODY2YTg5Mzg0ZWVhNzI0ZCBweTNrCis4MjUxOCAzNGQ4MjcyNDljZTBiYzI5OGZiOWUzZDJjMGM4MmNmN2E1YmFkYzE3IHB5M2sKKzgyNTE5IGZhNzE1MTJhNzRmOTE0ZDY5NzYwZTkwMzdiODBmYjFhZGZiYzM0NmYgcHkzaworODI1MjAgNmMzYzU0M2VkZThjNDk3ZWVlZjRmNzJjMGU3YzAwYjJhOTNkZjk0NyBweTNrCis4MjUyMSAyNjc0ZDNiZGRiMTgxZThlMzNjNjdjMGM3NWFiYTc2NWY1Y2QyZjg4IHB5M2sKKzgyNTIyIDM0ZjAxNWJjYTU0ZWRiMzMzOTE2NGY3NjM3NjdjNmEwYTQ4ZmJkMTkgcHkzaworODI1MjMgMzI2ODJiMjUzZmZjODE3ZTE2ZGE5YTZlMTIxNWFmM2FmZWM4MDFjYiBweTNrCis4MjUyNCA0YzMwYTZmNDBlNjg0ZTYzODUzODNkOTdmZTdjYjVkZmRmZDRmMTJlIHB5M2sKKzgyNTI2IDRiOTM0ODAzY2QzNDE0MjQzMTRkYWQ4NzBjMmY4ZmMwZDg2ZjYyMzUgcHkzaworODI1MjcgMTM1NTc1OTRlMjBiN2FkMDg2NDc0OTEwMWJjY2Y4YzM3NTJhZTQ4NiBweTNrCis4MjUyOCBiNjdmNzIwOTk4YTg4MDFhOGFkOGI3NGNiYWE4M2UyYWZiMDc4MWQ1IHJlbGVhc2UzMS1tYWludAorODI1MjkgMGY2NTQ4YTg2NzY4YjMyODEwNjMyMWI4ODQ4OTNjZWQzNjg0MGEyZiByZWxlYXNlMjctbWFpbnQKKzgyNTMyIGVjZDcxYjYxMjdlNDI2NzhkYzFhMmIxZjU3MWY2NDFjZWQwYTI4YzMgcmVsZWFzZTI3LW1haW50Cis4MjUzMyAzNDM5MDMxMThjYjViYjY3MWUxNjljNDUxYmVjNDk5YzZmYTUwZTc1IHB5M2sKKzgyNTM0IDEyNGE3NmFlN2E3MGU3NTcwZDk0MjNlZDdhNjVmNmQ0OTQ5YjljNGYgcmVsZWFzZTI2LW1haW50Cis4MjUzNSBmMDY5MWI0YTM4M2I4MmFlZTg1M2ExM2FmNzM5OTY0ZmFlODVkYzM4IHB5M2sKKzgyNTM2IDNmY2U2Y2RiNDczMzc3MTE2OTUzODMxOTNiNDc0ZGY5NGVjN2E4YzUgcmVsZWFzZTMxLW1haW50Cis4MjUzNyAxZWFmNGJiZTRiMWMxYzE4YjkxY2VjZTlkOTljNDY2OGJhNGYzZDhiIHB5M2sKKzgyNTM4IDYxY2FjZWNjZjgwNTgxMzUzYjg0ZDczYzBkYWExMDk5MTZhMWFiZTEgcHkzaworODI1MzkgMTgyODIwMzljNWM5YzAwNmRjNWZkNWYzZjA2MjFmYTExMGIzMWQ5NiByZWxlYXNlMzEtbWFpbnQKKzgyNTQwIDkzOTMyNjE5OTZjZWUyMzBjNjUyODVhZGQ3ZTMwZmE1ZjdhOTA2YzYgcHkzaworODI1NDEgOWUzNTRlYTM4MmNjZTdjYjAwY2VmNWJlMmJlZGUwY2Y5OWMzOWYzMSBweTNrCis4MjU0MiA3NjdiNGM1N2FlYTRkOWJkN2E0MGY2ZmYzYTljNTZhOGMwOTZkNmQ4IHB5M2sKKzgyNTQzIDM4MzAzOWVmMjZhMGUwOWU1MTYwZjZhOTQ4NGMyN2VkMTkwMzQyYjUgcmVsZWFzZTI3LW1haW50Cis4MjU0NCAzYWU5MTNhOWNkYTkwZWEzZTI1ZDk3OWQyNzU0NGY5MjQxNjYxZjA2IHJlbGVhc2UzMS1tYWludAorODI1NDUgYTYzZjZiYWJhNmI1NGRlOTg3ODg5MzRjZDM4ZmQxZDExMGVmMjkxYyByZWxlYXNlMjctbWFpbnQKKzgyNTQ2IGJlNjYyZDEyNDM4NTllZDQzN2MwODY5YjY2ZDNiNzk3OWFiZjgxYzkgcmVsZWFzZTI2LW1haW50Cis4MjU0NyAzNjE0MzFjNGQzNDRjNDRhY2Y2ZTZlZGNlMDdlMjAwNDc2MGJmNTU4IHB5M2sKKzgyNTQ4IDdjZTZlMzY0ZTExODMwNjdlN2NhODM3OWZhZDI2ODFmNDYzYTkyY2EgcmVsZWFzZTI3LW1haW50Cis4MjU0OSAzYjE1NDg2NjA4ZjA1YmVjZDE0Yzc2MDU0YzVkOTliYTQ1NDgyNjhhIHJlbGVhc2UzMS1tYWludAorODI1NTAgYjA3NDNkNTJiNmEzMTdiMjkxZjc1M2Q1ZWJiNzM1N2FjMWQ4NTJmNiBweTNrCis4MjU1MSAzNDNjZjVhMDhmZjAwZjA3MjM3YzE5MDk1ZjM0YjE5NGU3NmM0MmMyIHB5M2sKKzgyNTUyIGM2ZjE2YjhjYjg1OGRiOTU4YjE4NGJkNmQ0NTIyMjEwYTdmYTA1NmIgcHkzaworODI1NTMgZDI4MzAwOTEyMzdjZWEzY2MyMzVhNmQwNTFmZTAzMmMzMTAxNDBlYyBweTNrCis4MjU1NCA2OTJiNzk4OWNkOTIwMzY5MDUwZTc1YmI2YWQwYjU1YjNjYmVjZWNkIHJlbGVhc2UzMS1tYWludAorODI1NTUgZmIzNjBjMDc5MDU5NzZiMWQwZTc3NmZjYzZkNjlhNjI5MTc0ODJiNCBweTNrCis4MjU1NiAzYWEyMjQyODU4MmEzOGEyNzFiOWVhZWU2YzM0YTFjMzI3ZTFmZjAwIHJlbGVhc2UzMS1tYWludAorODI1NTcgODM3ZTNjZDNkMDgzNDYzM2RlYjE5ZmYzZWRhOWU2MTYxYmY1ZjFlOSBweTNrCis4MjU1OCBkODgwYzExNDMxNzU2N2JjODk5Y2VlNjg0ZThiMzU3YWZiM2ZkZTE5IHB5M2sKKzgyNTU5IGMxYTIzYTU0MGEyOWRmNjI2YzhkNTQ3ZjhhODEwYzk0OGQxNmE1MWYgcHkzaworODI1NjAgZmU1MjE3YThhZmZiZGMwZjRhYzc2ODA3NGQ5YWFmMmNiNjZlOTEyOCBweTNrCis4MjU2MSA0NmFiZGUwNzFmZmZjZTAxMzJjZDNjODc3OWNiMDlmNmVjMGQyYTVlIHB5M2sKKzgyNTYzIGExYzQ1NjMxN2I3YzNhMjM2OGU2ZTgyYjNhMWQ3N2VkMGVjMzFmMDIgcmVsZWFzZTI3LW1haW50Cis4MjU2NyA3ZmZkMmE0NDk0MmNmNjU2Mjc4ZDA0ZmQ5ZDI2N2IxZWY3NDlhZTY3IHB5M2sKKzgyNTcwIGRjYzJlOGJmNjRjZmY2MWZkYmM5ODc3NjU5MjZhNGE1NjZhNTNmMzcgcHkzaworODI1NzEgMDE0NTAxMjBjMGRkMThkNDg3YjFkM2I0ZDVkOGQ0MjMwOGZhNjUzOSByZWxlYXNlMjctbWFpbnQKKzgyNTcyIGUxZjQ4ZWIwMTRjNzA0NmFlZTE2ZmY5Y2UwY2Q1NmY3MDY4MTQyODIgcmVsZWFzZTMxLW1haW50Cis4MjU3MyBjZjRmN2Y5OGYxOWU3MmJjMWNiNmYxZWNiODQxNGExMTc3ZDlkOGY3IHB5M2sKKzgyNTc0IGU4NGQ1MTY0NDE0NDYwYTM2ZmZmNzgwYzI3ZjczMjQ4NTk2MTJiNjcgcmVsZWFzZTI3LW1haW50Cis4MjU3NSBjODFmYzFmZmU5NDY3MDNjNzkxZWZiZmMwZmQxZWMwY2MzYzk2ZjAwIHJlbGVhc2UzMS1tYWludAorODI1NzYgNzI2NDgzZDk3YjVjMDkzNmY4MGZlZmNkODY3MjAzZjk1ZDI3Y2Y2NyBweTNrCis4MjU3NyBhN2M4YjRhNjY3OGJmMTAyMTMwMGVhNzA2ZDNmODkxMDQyY2IxNzc3IHB5M2sKKzgyNTc4IDM2ZDVlMmY1ZDYwMDQzOTU0YTE1NWQwNDZlMzE5NzJhZTU1ZjlhZGMgcHkzaworODI1NzkgOGVkN2QxMTFiMmM5N2ZlZDYwZTZhYzQyODQxZmUwNTIzZGQyNTQ3NiByZWxlYXNlMzEtbWFpbnQKKzgyNTgxIDcwNTg2OWQxYmRmMGZkYTIxMWYwOTljMWQ0MjU5NjUyZjRhZDNmNTAgcmVsZWFzZTI3LW1haW50Cis4MjU4NSA0MDAxZDQ1OGYwYjIwY2M3ZjNhMTRkYmQ4Y2VhYzljMzdlMDhiNzgzIHB5M2sKKzgyNTg2IGVlOWVlMmY5ZmViOWNjZmMwYjY3YmIxNmYxMGYxYzI3YzAyODk4MDggcmVsZWFzZTI3LW1haW50Cis4MjU4NyA5ZDVmZTkzNjFkZTIxZGU2OGNiZmYzN2I5NjNjMmFiOTIzYzhlNmUzIHB5M2sKKzgyNTg4IDY4MGJmNmI4YWI4MjQwYTk2ZWVlOWI0M2M0ZjFlMGYzNTU3YjhiMTcgcmVsZWFzZTI3LW1haW50Cis4MjU4OSA2ZWM1NzIyYTA3YTVmMmFiZThhNzZjZmQ3NzkwMzZlOGVjMTZhOGI5IHB5M2sKKzgyNTkxIGI2ZmVlNTVmYWExYmJiYzgwODZiNmI5MmY5Zjc4ZDA3YTllNGM2NjkgcHkzaworODI1OTIgM2I3M2ZiODA4MDdhYTFiYzJmZTBmOThkODE4YmVhMzQyNmRlYWM0ZiByZWxlYXNlMjctbWFpbnQKKzgyNTkzIDg3Y2RhZmUzYmQ2YzcwYTM2MmNiZGYyOWVlZTk0YmQxMGY0MTJiYWQgcHkzaworODI1OTQgOGJiZjI0ZTUxY2NmYWFkYTNkNzJmOTBhNGZiY2E0NmQ0ZmZlMmJmNCBweTNrCis4MjU5NSA1MDk3YjFiNDk2MDEyZTFlMzQwZjlkYjY2MGZkNWUwZmRmOTM4MTFkIHB5M2sKKzgyNTk2IGEwN2VmNWVhYjkwYmIyNWIxMDRlNjU4NWRhYTBmMWI3NmYzMzM5NDMgcmVsZWFzZTI3LW1haW50Cis4MjU5NyA0ZDI5MWFkMDc4OTE0OWZjMTFkMDE2MjU1YWZhZWI5ODA1NzkwYjFlIHB5M2sKKzgyNTk4IDNkYzIxOTA3Mzg3NTc0ZTczOGFjN2YyM2U0M2NhNWM4ZTFkNDlhMWQgcmVsZWFzZTMxLW1haW50Cis4MjU5OSA5MTQ1N2IyMDE0ZTQwYjYxOTE2MjBlOWU3NTFlY2IyNGFjY2JjNTY5IHB5M2sKKzgyNjAwIDg3MGI2YjQ1NWVmMDVkMWI1M2EzMzA5MzhmODBiYzc2NjU1OTNjZTUgcHkzaworODI2MDEgMWYyODE0ZWI0ZDFkZDFiMWE2NzE0MzM4ZDgzZmUxMWE2ZTczNGVhMyBweTNrCis4MjYwMiA4Njg5MDQ0NmE0N2JjZjUyODRiZGZmM2EyZGExOTFiZTI2MTA1MDVkIHJlbGVhc2UzMS1tYWludAorODI2MDMgMzljN2Q1NGYyODQ4YzBkMWZhMmUzMDA4Zjc0YmU5ZjUwODZkOWUyNiByZWxlYXNlMjctbWFpbnQKKzgyNjA0IDFmMzdkMDgyYTlhYWY4MDM3ZTAzZjZiMzA1ZGM3OGVkMTA5Y2JlYmIgcHkzaworODI2MDcgZjFhNDE0N2IzYzAyM2NjZWE3YzZkZjhmY2M2MTMwYTlkMzkwNzE0NSBweTNrCis4MjYwOCAyMzk5ZTA0NTFkMGRlYzg2NjAxZjM0YzFmYmJjZTMxZWUyOGEwYWI3IHJlbGVhc2UyNy1tYWludAorODI2MDkgZDM2ZGMzN2M2N2Y4ODcwNjNlZGVmYTM3MTRjMDgwZmNmYTk2NDAwZCByZWxlYXNlMjYtbWFpbnQKKzgyNjA5IDc0YjBlYjc2NWE1MDQ5YjI1M2UxY2MzNTFkYThmZjM5ZTMwODJjNjYgcmVsZWFzZTI3LW1haW50Cis4MjYwOSAwNzI4YjI5NWY1M2JkNmEzZDcwZjVmNWM3MjVhODU1YjhmM2FmMjI5IHB5M2sKKzgyNjEwIDIwMmYzMWQ0MDM4OWNlM2Y2NTlmYjE1NjMwOGU4MmNlZTAwMzgwN2QgcHkzaworODI2MTEgMDYxOGM2MjMxYTFmMTkyNzE2NTk5Y2Q2MDJmZjRiYTAwMjIyZmU5ZiBweTNrLWR0b2EKKzgyNjEyIGUxMmFlY2RjMzMyYzc4Nzc5NmRmMjkzMDNjZmY2MWNmMTFkNzViODUgcHkzay1kdG9hCis4MjYxMyA0ZmU0OTNkOTlkY2MxYzIxN2JjYzUyN2IwZjM2M2ZiYzAwZGVkZGNjIHJlbGVhc2UzMS1tYWludAorODI2MTQgNzBiMDM4OGY5ZDNmNTI1NjVhODU4OTBjYWFjM2ZiOTQ0ZTMwZTJhNCBweTNrLWR0b2EKKzgyNjE1IDNlYTZmNjlkYjI0MjYxOTgyNGIwOGJhODIyYjdmZGVlMjBjZDJmOTEgcHkzaworODI2MTcgNTgxMmRkNDQ4MDdhZjk2NTE3ZWYyZjNhZjgxMWMxYWQ0ZDdjODNhMyBweTNrCis4MjYxOCBkMmIxNjg5YTMzODFlYzY1MmQ3YzRlYzg1MjNjOTI3NmFiNDhkZmFmIHJlbGVhc2UzMS1tYWludAorODI2MjAgMDU2MmYyZTA1MjhkMTJkYmQyZTI1NGFmMDRkNDIwYmZkMDk5ODY0ZCByZWxlYXNlMjctbWFpbnQKKzgyNjIxIDQzYWJhMDllODk0NjkzNmVkNTNlMmJhYjgyYWI2OGRlYjk4YTIxYjggcmVsZWFzZTMxLW1haW50Cis4MjYyMyA5MTJhYjJmYjQzZjU4YjAxMjk4ODM5MzRhYmRiZjQ2N2QwNzcwYTFjIHJlbGVhc2UyNy1tYWludAorODI2MjQgZjY0MWJkNTQ2ZGU0MTI4Y2Q3OWNlNzkzMjA3ZDIzMDBiNGVmODcwMCBweTNrCis4MjYyNSBlNjU1ODQ5ZTc5YzZjODJhOWQ0OTdiNzhjMDZiMDQzMWFiMzkyNTFmIHB5M2sKKzgyNjI2IDg3NTU1ZjQ1Y2Q2YmU1ODY3ZDgyZDk4MjY2OTRlMmE0ZWJiZGM3ZGEgcHkzaworODI2MjggNzRiMmNiZGE5YmRhNDQ3Zjk5NzgzODEyMzU1OTM5OTE1ODEzNzBkOSBweTNrCis4MjYyOSBjY2Y4ZTYwMjBjZjM0YjVmNWVjODhkZDVmMjY4YjEzMzc0NmFmMTBkIHB5M2sKKzgyNjMwIGY2MjY2YzQ1OTE1NjMwNmM5YmFiZDVmZDhmMzJkNzc2YzNkMTBjMGEgcHkzaworODI2MzEgZTdkYTk2OGUzZTVhMGRhNjRiYWQ5ZGVkOWY0YWY1YTIwNDY4ODM0MSByZWxlYXNlMjctbWFpbnQKKzgyNjMyIDVmM2UxODZiZWYwZjA4MzUzYjcyYWQzOTQwOTlhMWNiMmM0ZjY2NWUgcHkzaworODI2MzMgMzRlM2RiZDQ3ZTRmYTNlZDBiNmY2NTRhMmNlZDQxMzljZDdhNTMxYyBweTNrCis4MjYzNCA5NDY0NjRmZDY5MjEwZDcwYjRhYzVkZGY2NzllMjc5ZmFhZmI1ZWUyIHJlbGVhc2UyNy1tYWludAorODI2MzUgNTUzZjEwYjAzN2Q5ZWUyMzNiZDUxYWMwYzgzOTE5Y2M3YTVmOGM1YiByZWxlYXNlMjctbWFpbnQKKzgyNjM2IDM4NGY3M2ExMDRlOTRlMTBkNzllOWMxOTNlN2ZkMGUyZjJjODQ4ODQgcHkzaworODI2MzcgMzgyZGNiMGM2MDczYTE0NjhiZjQ3MGIyMmY3MmNmZTA3NGVlNjQ5NCBweTNrCis4MjYzOCA1NWEwMjRmNTE1MjRiZmQwMzcxODhkNjFmOGFlZWJiZjIzMjFmNWE0IHJlbGVhc2UzMS1tYWludAorODI2MzkgOGM2YjNkYzY1MmZiOTIzMjJhOGQzNGY2YTYzNTQxYjNlM2QzMjY0OSByZWxlYXNlMzEtbWFpbnQKKzgyNjQwIGEwMDgyYTc0ZDEyNWEyZTg1ZjhjZDA1YTUzYjE2MTA2NmJhZGI1NTYgcmVsZWFzZTI3LW1haW50Cis4MjY0MiAwNDA2NzkwODdkMDM1MmI1NjUxM2NlNTI5NDIzYzI5MjBjMjI2NjE5IHB5M2sKKzgyNjQ0IGNhMDUzNzFjZmYxMGEyZjlkMGYyYTAzYjUxMzg0NDg0ODg2ODcxYTAgcHkzaworODI2NDUgZjg0NWVkMWQ4OWQ1YmI4YzAzMGE4YTE3MTBjZDgwYjUxYTJiNTgxYiByZWxlYXNlMzEtbWFpbnQKKzgyNjQ2IGNhMGEzMzAxYTdlYTFiYWFiYWY1YzAyZGM2NTNiMjdmYjg5ZmIzNGEgcHkzaworODI2NDcgMTBlNmE1NDMwYjc5NDRiNmJlYmYxNTNlMWQ2ZmFhM2E0MDViODA5MCBweTNrCis4MjY0OCBjNzMwNWJhODQ2MTk3YjkzNWJmZWRhMDVkOTQ4ZWM4NWY2MmExMTk2IHJlbGVhc2UyNy1tYWludAorODI2NDkgZDE1NmY3YjM5YzNjMzQzMjNmYWY5NDdiOWZiZjIwMzZmODE4NjU3MSBweTNrCis4MjY1MCA1YmM3ZGJkMzFkMWI0OTQ2YzM5NWRjNjMyMGNkNGVhMWU2MzBlYmM0IHB5M2sKKzgyNjUxIGIwNDQ2MjUzMjJlMzE2YzY0ODRhNTMyNjFkZmRiM2ViNGFmZTBhZjIgcmVsZWFzZTMxLW1haW50Cis4MjY1MiBhNjMxOGRhZmI4ZWI1YzJkODE5ZmQ3MDgyMmRiZWI1ZTVmZjcwZmVmIHJlbGVhc2UyNy1tYWludAorODI2NTMgM2Q4YTdmNzAxY2IxYzI1MzdmNTgxYTE3ODBhMTI2ZWZmNjU1MmQ2OSByZWxlYXNlMjYtbWFpbnQKKzgyNjU0IDA5ZjVmZDAxM2MwYmUyZmU3YmIwZjQ5NDY0YWUzMWU3MjY2MzRhOTcgcHkzaworODI2NTUgOTc1MmI4NWMwMTE5MmZlODM4ZGFlZDBlZmFiYTUyNzA2ZDAyNmM1MSByZWxlYXNlMzEtbWFpbnQKKzgyNjU2IDZlZGMzZTJhN2RhNGFhZGFmYWNlNDU2OWIwZmM3YmJiMzU1NDQzYjIgcmVsZWFzZTI3LW1haW50Cis4MjY1NyA5NzRmOGQ4YmMwZDQ0ZDE1ZDhiOGRmNTM4NTJlYmJhOGNlN2Q4NjBjIHJlbGVhc2UyNi1tYWludAorODI2NTggYzhiZWNmNjA2YTBhYWMwOTZiZjg1ZjQ5NmQ2OGI5NjM4Mjg2NzRjYSByZWxlYXNlMjctbWFpbnQKKzgyNjU5IDczMGI3MjhlNWFlZmI1NmNjZmM0ZTljMmNjOTM0YzJhZDg2MzgwNTkgcHkzaworODI2NjEgN2EyMTZiYzJiZWQ2NTBiOTcwNWI2ODhhOGMwYjY4ZTI3NDNjZDZkOSBweTNrCis4MjY2MiAzNTI4YzRlNzgwYmYwN2I4ZjkwMmFjZTc1MzcwZDc2Nzg1N2MwZmJmIHB5M2sKKzgyNjYzIGU0YmRhNGE1MjBjYTc1MjkyYTE3MTYwYjU1NDlkM2Q2MzQwMzBjZWIgcHkzaworODI2NjQgZmYyZDFiMmNkYzY5MTM5ZjMyZGU3ODQ3MTNkMWJkZjA1ZDI4ZTIzMSBpbXBvcnRfdW5pY29kZQorODI2NjUgYzY3Zjk4YWRiOGYzNjFjYjE5MzY3NmM4ZjUxYzkxNTZlOTI3YWIwYyBpbXBvcnRfdW5pY29kZQorODI2NjYgNWI2MzE4NTM3MmQxZjM3YWE3MWQ2ZjEyYmNiMzQ2NzM3N2NjOTdjMyBpbXBvcnRfdW5pY29kZQorODI2NjcgMTZlMzQ4ZjE2NWY4NWQzNGQ2ZWI4Yjk3NDk1NDJmNGRjZTFlZmZiOCBpbXBvcnRfdW5pY29kZQorODI2NjggNDRiZDRhZDFmNmQ0MmZhYjIwNDQ1MDY0NDg1MDBkMjM3MDM3ZWQzZiBpbXBvcnRfdW5pY29kZQorODI2NjkgNWI2ZjAzZjM5MWRhZmUyNDYwYTBhMzk5ODU4M2I1NjI5N2RlNzMxMSBpbXBvcnRfdW5pY29kZQorODI2NzAgZTk2Mjc5YWM2ZDE0NjhhMzRkMWE3ZjQzMjcwNzUzOGUwYjQyODE2MCBpbXBvcnRfdW5pY29kZQorODI2NzEgYTk3Zjc1MDNlNTBjNDA1NmZlMzBiYTVmNDM0OTI1MjBjZGRjMjFjOCBpbXBvcnRfdW5pY29kZQorODI2NzIgNjBmYzk0NDZhYTJlMDM1Mzc2ZGZhMDcxMTNjZWE2ZmZkNmM5MzFjZCBpbXBvcnRfdW5pY29kZQorODI2NzMgYzMwZDg0ODA3YzYyZDA5NWU4NGRkYTVmZDMyNzUwYmRhYTNlYjM3OSBpbXBvcnRfdW5pY29kZQorODI2NzQgZGZlMjYwMjMxYzQ5YzE0Mjk4YWUxM2I1MTRkYWUzMDU4ZjQ2MGFhZiBpbXBvcnRfdW5pY29kZQorODI2NzUgMGNkOTQxNmExYzFlNjdiN2Y0MDllNmYzMzNhN2RiNjEyMjVkYjE1OSBpbXBvcnRfdW5pY29kZQorODI2NzYgZjczNWJiMmIwNmRlMTg1OThkYzMwOGExOTQ0ODIxMjNiMzI2NTFhZiBpbXBvcnRfdW5pY29kZQorODI2NzcgYmViY2I2YWIwOWE1NjViMTM3NmRlMWE3MGJkODU5YTU1MWFmNmQyZCBpbXBvcnRfdW5pY29kZQorODI2NzggYzg3MmU0ZmFhMWU3NDIzOTFlYmUwNzI1ZmM4MzMzNmVkY2I4MTk3MCBpbXBvcnRfdW5pY29kZQorODI2NzkgMTRkYTdjM2U5MjIzMmIxNGMzOGQ3ZjAwZjUxYTdjNzBjOGEyZTBkYiBpbXBvcnRfdW5pY29kZQorODI2ODAgMDk1MmUyZGYzYzRkMWI5ODRjYzBlZGRiNzY1ZDk4YjIyZmIyODIyNCBpbXBvcnRfdW5pY29kZQorODI2ODEgNzZmMzZjYTEwNjFmNDRmYTVhN2I5MTNiNjkyNDI0ZjM3OTQxYWVlMyBpbXBvcnRfdW5pY29kZQorODI2ODIgMjJiOTM4OGQ3YzBlZjkwYTdlNjYxNGNlZTQwNGJmMDVkNTlmZWFjMCBpbXBvcnRfdW5pY29kZQorODI2ODMgZTQyMzNlOWM4NDYxMjI2NTFkYWM4MTViZTg0MjE3NjQwYzc5MmM3NSBpbXBvcnRfdW5pY29kZQorODI2ODQgZTc2NmY3YmNiMmQ1NWMzNDc3NGRhMzJiZTVjZjliOGVjYTNkYTM2MSBpbXBvcnRfdW5pY29kZQorODI2ODUgNWNhNDFkZWViZDBmZmEyZWVmODYzMGRkYTdiOGZjZGQwZjRlNGY3NSBpbXBvcnRfdW5pY29kZQorODI2ODYgMmU5ZmM1MzJkMWQxYmQ5YmM4MWIwNWI5NDk5MGEwNDEzOWRlMmM1ZiBpbXBvcnRfdW5pY29kZQorODI2ODcgZTFkODZjZjJjZmU0NGJlMDk0NTNmMWVhMTk4YmUwYjkxODJjNGVmYSBpbXBvcnRfdW5pY29kZQorODI2ODggZTBmYjQ5ZWM5NDVjY2E1NzI0Mjk0NjdhMDY4OTUzNjMzNThiZTIwNyBpbXBvcnRfdW5pY29kZQorODI2ODkgYTJjN2YyMDYwZTViZGJkODdjZmJhZmQ1NDc3OWZjNTlmNGI2M2M4NSBpbXBvcnRfdW5pY29kZQorODI2OTAgMWMxZmQ5NWUxM2I0MmViZWZiYzI2ODFmMDMxODc2ZTI0NDI1NThlMSBpbXBvcnRfdW5pY29kZQorODI2OTEgMGEzMGI1NmNhM2FjOWRlMWIxNWM4YTM2NmZkMGRjMTZlZWIyMDlhZCBpbXBvcnRfdW5pY29kZQorODI2OTIgMzYwZTFhMDhlNTNiOTQ4MGFhNWRjYjM4ZTA5OWVkZGJjMjk2M2ZmMiBpbXBvcnRfdW5pY29kZQorODI2OTMgNjBmYmZhYTdkOTNkZmRiMTlkNGRiMTNmOTMyYTJjMWQwNTNlYzM0ZSBpbXBvcnRfdW5pY29kZQorODI2OTQgOTUwYjQ3NTRiYmUyYWJmYzBjNTAxYmJmMWY2MGI5MjUzYTU4MTE5NCBpbXBvcnRfdW5pY29kZQorODI2OTUgZmZlYjg1MTI4YzdlODQ4MzMxNjk2YjZlMTRiMjNhNGVhN2Y5OGVhOSBpbXBvcnRfdW5pY29kZQorODI2OTYgMDFlNGUzZDM3NzRkNjA0NWMyOTkyMzU4NGMwOGY3ZTg0NTIyODRjNSBpbXBvcnRfdW5pY29kZQorODI2OTcgZTgxZWQzYWQwNjlkOWFjMmU1ZWE5Y2NmODkzYTU4MGFmZDkwM2M4MCBpbXBvcnRfdW5pY29kZQorODI2OTggMWFkYzIzZGNlOTcxN2M0ODQwMTAwYWQyZTMzOTJlNGM2MzYzYmEzMyBpbXBvcnRfdW5pY29kZQorODI2OTkgMTc3YTgyZWNmZjY3MTA2YWJiYzRjNjc1NjVjMGY1MWNiZTYwMDI1MyBpbXBvcnRfdW5pY29kZQorODI3MDAgODI0OTdmMWMxYzU0MTUyODNhYWNiZWJhMDNiM2FjYTczNGYwNzgwOSBpbXBvcnRfdW5pY29kZQorODI3MDEgOTBjYTQ1ZDY1NmMyZDY1NzA1NWFlNTY3YmZkNWNiMDM1MjQ5ZjhkOSBpbXBvcnRfdW5pY29kZQorODI3MDIgMzBiYmMxODYwZmJiMmU3YmQwNjY2OWM0NjZhZTc3NDg3NGE3ZmQ2MiBpbXBvcnRfdW5pY29kZQorODI3MDMgODY1ZDE4YWZkYTE1MTA5OTNiY2ViNGRhMjA2YTA1NDI2ZjZjNWI4NyBpbXBvcnRfdW5pY29kZQorODI3MDQgN2FmMjI5ZWEyZTY2NWE5ZWMxYWVhNmY3NzFjNWUwZjBkZmZlZWVmNCBpbXBvcnRfdW5pY29kZQorODI3MDUgYTI5Y2MzODUwMDI5ZjU3ZTcyMjMxYWEzZDM2YzZiM2E5Y2M4NDhjOCBpbXBvcnRfdW5pY29kZQorODI3MDYgYTQyMWI0YjQ1YWE2NjIwZjJkMWE0NTFmNWIxZjgyZjcwYWY2OGU2NCBpbXBvcnRfdW5pY29kZQorODI3MDcgYTdiYjg0Zjg0OThhMWY2YmM1NWJjZDFjMmRhM2M2ZTFiMDU1MzcyYiBpbXBvcnRfdW5pY29kZQorODI3MDggYWY3ZWMxNjkxMDQ3YmNjMzJhMDYyNTcwOGZiMTJlZTM1OTFmYjlkOCBpbXBvcnRfdW5pY29kZQorODI3MDkgNjhiMGU3MmVmNGYyMjFkMGI1ZTZhM2JlYTc1MmE0YmNjODk2NmFkOCBpbXBvcnRfdW5pY29kZQorODI3MTAgOGU3MGE1ZWMxYWNhNjI5NTQ4ZTljMjdmMTE3MzA1ZGY5Yzg5Y2VlNCBpbXBvcnRfdW5pY29kZQorODI3MTEgNmRjYTkzNzAyZTZiZDAyZGRjN2VhYjQyY2ExYjk3YjgxNzcwY2ZlOCBpbXBvcnRfdW5pY29kZQorODI3MTIgNzZjMzVkOGEyNmEwMTIwZDhkMGI3OTM4MjRmOWQ4OThlMGVjYTNkOSBpbXBvcnRfdW5pY29kZQorODI3MTMgYTdjZjkwM2IxN2RjYjFlMjU2ZjcyNzdlZDU4ZTZjNWIyOGJkZTQ4MCBpbXBvcnRfdW5pY29kZQorODI3MTQgNzhlNmE2ZmJkMzYyMWJkOGY3MTAzNDk3MzIxZjQ4NTc3MWEyOWY4YyBpbXBvcnRfdW5pY29kZQorODI3MTUgYWIxN2IwYzIyYmExZDI0ZTA1NGRiOTM5NGQ1MGNmZjcxYjk2MmUwYyBpbXBvcnRfdW5pY29kZQorODI3MTYgMDk1YjI5NzJjNDRmMTEyMzZjMGUyOTMwM2MyMzdkMDA0ZWQ5YzUwZSBpbXBvcnRfdW5pY29kZQorODI3MTcgMzZmNmVkMDY1MWUxMzQwZWJmODFlNDlkNTBiOTIyMGY5ZjFlNGM5YSBpbXBvcnRfdW5pY29kZQorODI3MTggODUyZTRhNzVlMTU2OTA0YWU0N2RmOWJmNWJlZGZmNmQ1YzQ2ZjE3NSBpbXBvcnRfdW5pY29kZQorODI3MTkgZjBlZjgzZDkxMzU0NWJkZTMwOWM0YjRhMDBmZGMwODEzNGIyY2VhOCBpbXBvcnRfdW5pY29kZQorODI3MjAgZWNiYThmYTVjNzQzZWUwYTIzOTY1NTkxNjg5MjAyYTU4OWQ2MTM3MCBpbXBvcnRfdW5pY29kZQorODI3MjEgOGRjZjg0MWYxYmQ0MDVmZWNiZWZiMDQ2YWQ0YjQyNTMzMTg2NTBiMCBpbXBvcnRfdW5pY29kZQorODI3MjIgYmMwYjRjOTE4ZGRiNGE3ZDNlODkyY2U0OTg0Y2U3OTUwYTAzMDRkZSBpbXBvcnRfdW5pY29kZQorODI3MjMgMGU3ODJhNmU2YmI3NmUzZWRhNzZhN2FkMmZjZjA4YWJlNWVhZGY3MSBweTNrCis4MjcyNCBjN2YzNjE3MDI4YTgzOTkxN2I1MTJjYTViYTU3YmZiODZkZThkMmQyIHB5M2sKKzgyNzI1IGEyMTc3MjYyZjZiN2U1YTc0NGY3NDJiNDBkYjc3ZWQ5MTMwOGNkYTUgcmVsZWFzZTI3LW1haW50Cis4MjcyNiAwOGVlZTg5YWY3Yjk5ZDEzYTA1OThkZjU5Mjc3OGU5YTk2MjMyOGEzIHJlbGVhc2UyNi1tYWludAorODI3MjcgOGM2MTRiYzc2NmI0NTM5OWYzMTFkZTBiMzJlYWUyODE4MDZhMGE2MSByZWxlYXNlMjYtbWFpbnQKKzgyNzI4IDBkMTIyMDE3NWYyOWVkMDFmMDA5NjZkNWNhYTZjYTlkNDdjMjcyYzMgcmVsZWFzZTI2LW1haW50Cis4MjcyOSA4YWFhZjAxZmNmMDNlY2E0NDFhYjg0ZTlmMzhkM2IxZTBhMGFmZTZjIHJlbGVhc2UyNi1tYWludAorODI3MzAgZjNiZmRmZjIxNDZhYTRlMTAzMjNhNTBmY2M0YTk3Zjk5Y2UzNzNiMSBweTNrCis4MjczMSBjZmNmNmY2M2UwYjRhYzA1YjUyYTA5MTUxMGU1Y2Q1ZmVhNmExZmY1IHB5M2sKKzgyNzMyIDU4NWM3MGRjMWVhYTRmN2VlZmJmZmIxYTdmYjMxZDJlMDczODlkYzcgcmVsZWFzZTI3LW1haW50Cis4MjczMyBkYjI5M2ZkNzUyOGI5NGMwMTdjZGMyYzA2YjU1ZDM3MzdmN2EzNjZmIHJlbGVhc2UzMS1tYWludAorODI3MzQgNTIzYWZmZDRkNDcyOTM3MDkwN2NlZjM1OWQwYzU0OWRmMWMzOTJiMyByZWxlYXNlMjctbWFpbnQKKzgyNzM1IDQzYTBmYzE4NGE1ODE3NDkxMmVhYTE0Y2NlYmZkN2FmNWJmZjNkZTIgcHkzaworODI3MzYgNDdkNDliNDA2MjAzYTBmMmE5N2YxNWUxZTA2OGEyOGYzNzY0MDU0YSByZWxlYXNlMjctbWFpbnQKKzgyNzM3IGUwZGVkZDJkY2ZhODFlMDExYTk2NzFkNWQ2Y2ZkMDdjMGM0YmQ3MGIgcHkzaworODI3MzggN2U5NGMwM2JiODRlMTUzZWMxZjExZTRhN2RhMGMyNDczMDE0NmU0YSByZWxlYXNlMjctbWFpbnQKKzgyNzM5IDEwYzA2MzBmMWMxNDNhNTY3NTNjM2M0MGY1ZjAwZjhlZjI5YzVmZDkgcHkzaworODI3NDAgMDg5ZmQ3MTBkY2E4ODQ5MTU5ZTNlY2M1MTUzYmEyNzdhZjg1NGQ1MyByZWxlYXNlMjYtbWFpbnQKKzgyNzQxIDdkOWFiMzVlNDNiYzY2YWY5YzQyZDllZDc4OGJkZWQzMDI2NzlhNTQgcHkzaworODI3NDIgODE1YWU3ZjM3MzJiZWViZDFhNmUxY2EzMTJhNmE1ZWIzMGYyMmYxNCByZWxlYXNlMjctbWFpbnQKKzgyNzQzIDVhZTdkZjZjOTNlZDk5YjRiYjE1N2FjZTg2NTYwYjNhODlkMzJmNjMgcHkzaworODI3NDQgZTNmODNmNTZkZDNjZGU5MzZjN2QxOTBmZjM4OTg3ZjE5Y2I4OGFkZSBweTNrCis4Mjc0NSBlOTdjZGQ1YzVlNGZjOTkxNTY5MmI4MWM2NmVlMzM5MmI0MGY1YjAzIHB5M2sKKzgyNzQ2IDkyYTlkYzY2OGM5NTI5ZjAxOGE2MjBiNDcwN2JjMDljZTE4NjE2YzAgcHkzaworODI3NDcgZDQxYTMxZjViZjgyZjYyNGFmMjE5Zjk2OWE3ZTU2Y2E1MzU1OTk1MyByZWxlYXNlMjctbWFpbnQKKzgyNzQ4IDRlZmY5YzM1YzU0YTdiYjk4NTRmZTFiNjMxMzRhNWVjNTJlN2FiZmUgcHkzaworODI3NDkgZmJhOWU5MWU4OGRjZGYwYzc0OTM0NmJmNjZkMTA0MTRlNjU5ZmY3ZCBweTNrCis4Mjc1MCBjNzBkNTBkMjFmODUxYTZhNTcxNDA2OTllZjJkYTllN2JhYjNjZjU0IHB5M2sKKzgyNzUxIGRlMWI5ZmMzZTFlNzIyMGY0MzJmNjA3YjU4YTQ2MTNmYWExZTU2N2YgcmVsZWFzZTMxLW1haW50Cis4Mjc1MiA4ZWE2MGFlMTQ5NjhmMzY5YTI5YzM0MjI4OTVkNjk1YzU4NTE3MzIwIHJlbGVhc2UzMS1tYWludAorODI3NTMgYmQxOWM3MTc4ZjI0MmMzODQxNDFmNjIyYTMzMDdhY2EwNjFiMTdkYiBweTNrCis4Mjc1NCBmNDc4MWFhODJiMzc1MGIxZDQ4OWQ2MGMzMWI3NmE0OWMzOWUwM2UyIHJlbGVhc2UzMS1tYWludAorODI3NTUgNTAyNWJhMDU1M2I2MzI5ZWIxNThkNDNlYzE2YzI1OGM1OWY5MjZkZCByZWxlYXNlMzEtbWFpbnQKKzgyNzU2IDYzNjEzYzRmNjMxN2YwNmEwNTE2NWEzZTcyNmY2MTBkMzUxMDgyMDYgcmVsZWFzZTMxLW1haW50Cis4Mjc1NyA0ZDIyMmVlMmExYzg1NDc2ZGMwZDZjZWQ1ZjgyY2Y5MWMwYTNmODI0IHB5M2sKKzgyNzU4IDdiNTcyODllYmUwZDRlZjk5MWY1NWZmMWM5N2M5MDQzODNlNTNjYjEgcHkzaworODI3NTkgOTgzZTJjMGJmOGRjZGVjZGE5OWJmOTEyMDc2MWYyODVhMGMzYzk1MCBweTNrCis4Mjc2MCAzNWM1OWQxMWFlMTM4MzI3OTNiMzA4YjQxYzc0Yzk5NWU4NGZhOTQ1IHB5M2sKKzgyNzYxIGJjYjc5ZTFhYTAwZjdmNDRkMDhiNmM3ODU2N2E1NTEzODJmNjMyZjkgcHkzaworODI3NjIgMzNkZTljYWY3MDkwMDAwMjJhOTcyYmJiYmRhNTA2YjEyYjAzYjgwOSBweTNrCis4Mjc2MyAyNTRlZjUyMDUxMjhhYzZkNjAyOTFiNmUyOWE1ZDAwYzUzYWQ2NTNjIHB5M2sKKzgyNzY0IDk0Mzc4NDcwYWUxYzkwNzgzZjIyZTc4ODU5ODcxOGMzZDQ3YTgwYmMgcHkzaworODI3NjUgZmYxYTgwMzc2NDhjNGJjOWM1NDg3NTg3NDk1MDdhNzFhNTE2MDAwYSByZWxlYXNlMjctbWFpbnQKKzgyNzY2IDhiZTJiOWU0ODcxODdiZGMyODU3YmZiODI4MTRkZTg1ODE2ZmI4YjEgcHkzaworODI3NjcgYWFjMDkyZWFmOWQxODJkMTU2YmMyZDdhMjAwYzkzNmZhMjZlYmMxNyBweTNrCis4Mjc2OCAwZmJkYzNmYTAyNGJlNThlOGYxYjFkODg4N2VmOGQ4ZThkNDViMDNiIHJlbGVhc2UzMS1tYWludAorODI3NjkgZGFiMjg2ZDJiYTgyZmZhYmM5OTJhMmMxN2Q2YmM3ODBjOWQ3MjlhNyByZWxlYXNlMjctbWFpbnQKKzgyNzcwIDQ5ODYxZGZiMjcwMTgwMjExMTVmMGEyMTAzZTIzNjBjMGIyMTQyYWMgcmVsZWFzZTI2LW1haW50Cis4Mjc3MSBlZDNiYzdhOTZmZmI0YmEzN2QzYjYwMzkwMjZlYTFhNzYyZTYwMGEyIHB5M2sKKzgyNzcyIGFjZDZjY2NjZTgzN2I5MzUxNjEwNjQ2MTY2ZTZlZGE3MzgxZWI3MDIgcmVsZWFzZTMxLW1haW50Cis4Mjc3MyA0MjlkMGM3Y2RiODU2ZGM1OWIyM2ExOWJlYjE4MmMxNzEyNzdhYmIxIHJlbGVhc2UyNy1tYWludAorODI3NzQgYWNlZjVkNjYwODMzMDA5OGM2NmYzZTFjYTg2YjQzZThiOWFlZjRjOSByZWxlYXNlMjYtbWFpbnQKKzgyNzc1IDAzZjczYzQ2Zjg5YzdjYTc0MmM4OWU1ZWY0YjAzZGY5Y2FhMzExNTMgcmVsZWFzZTI3LW1haW50Cis4Mjc3NiAwMzAzNmFmY2E1NDkxYTAxNDQ5NzE2OGUyYjJhOTYyNDJlOGNlZTc3IHJlbGVhc2UzMS1tYWludAorODI3NzcgNWU2MGM3ZGIwZjUxMGVkYmEzMTZmZGE5YThmYzViY2VkZjI4MjM2ZSBweTNrCis4Mjc3OCAyODc1NWViNTNmMzg5NDYwZWRiMGIyZTJhMmQ0ZmU2ZDA2MjYyNzU2IHJlbGVhc2UyNy1tYWludAorODI3ODAgYjU4YjRhYTQ2OWM0ZjgxNzhmNzJlZmJmMmEzZTc1NDFmYzlmZmM1ZiBweTNrCis4Mjc4MSAxNjM2MTI0ZTVmZmVlYjZjYzExMjI5NTFhYjRhMzMzZjlmZDcxMGMwIHJlbGVhc2UzMS1tYWludAorODI3ODIgN2UwOWM2NGQ0YTY0Y2UwZDI2NDcxYzI3OWQwNWE0ODZhYTRmZDA0YSByZWxlYXNlMjctbWFpbnQKKzgyNzgzIGY3NTVkMWFiODA3NDZkYjZjYTUwZWFmMTMwYTY5M2ZlNDYyNTUzNzUgcmVsZWFzZTI2LW1haW50Cis4Mjc4NCA1MGY0ZjExM2JiYzNmNzMxZmJmMDMyMTBkMjlhY2I1Y2MxOWM1OTk1IHB5M2sKKzgyNzg1IGE5OWU4YWRhYzA4MWRmY2EyNWJmMzhmNWMxYjBhMmIxZTM0MzA1ZDUgcHkzaworODI3ODYgMzY3ZDYxZTZhNzBmMDY4ZjE3NWI3NDk5NThiZmE1ZjM5ZjU5ODZkMCByZWxlYXNlMzEtbWFpbnQKKzgyNzg3IDU1NTMzZDU4MjhiMDMxYTZhYWI2MmY5ZThjODA1MWQ1MjU1YzhhZTYgcmVsZWFzZTI3LW1haW50Cis4Mjc4OCBmMGRkMDNiZjZiYzVmYzA3N2Q3YTU1MDEzZGEwNjI1MDQyMzVkMDIwIHJlbGVhc2UyNi1tYWludAorODI3ODkgNWRiMmUwN2M0NDUxZmMyYjM5MTIyOTBlNzJiMDRmZjZiMzY0YWVkOCBweTNrCis4Mjc5MCBiYTBmNmUxN2ViMjIzYzAzYmRhM2E2YWViZmFlNzA4MGUxYjNmMmE4IHB5M2sKKzgyNzkxIDBiMDcxZTFlZmQ0MTRmMGJkNDE5ZDg1OTI1YmJlNmY4YjdhN2JkNDMgcmVsZWFzZTI3LW1haW50Cis4Mjc5MiA4MWQwNTU3ZGY2NDdiZmY1ZDYzODJkZjRkNWZjMGI4NDhjYWUzYjc5IHJlbGVhc2UzMS1tYWludAorODI3OTMgZjk3YmU1ODBkOGMxNmViMGY5YWI2MTUwOGY2YWU5MTRkYzNkMTdhOSByZWxlYXNlMjctbWFpbnQKKzgyNzk0IGI5MTUxNjI0MjdhYjRmNmU3NDk3Njk0Njg1MWUxZjlhZmQyZTlkNTQgcmVsZWFzZTI3LW1haW50Cis4Mjc5NSA0MjRlM2ZjZmQzYWQxMWUwNTE3NTQ1NDg5OGEwMmIzNjg5MGQyODc5IHJlbGVhc2UzMS1tYWludAorODI3OTYgY2U5MzVlNzFiZDA3ZTUxOGUyYzc3YzQxOWIwMTgwMGJjZjk1NjI1YyBweTNrCis4Mjc5NyA0NzA3ZWRlNGQxNGZmMTRlNzFiMjM1NDg5MTUwMzA5ZDIwMDdmODNkIHJlbGVhc2UyNi1tYWludAorODI3OTggYzhiNzdlZmU4YjU2ZTk3Mzc3M2VmZjdjMTBmMmEzOGI3OGMwZTNlMCBweTNrCis4Mjc5OSAwZTZmYmY1MTg4NTNmZWJmZmQ3NzNjZTRmMDBkYzMzMGNhMDBmZmRhIHB5M2sKKzgyODAwIGVkYWI1MDFmOWRmOGVmZTE4MjIyNTZhMWE0ZmE1MmUzZjZkYjU2NjcgcmVsZWFzZTMxLW1haW50Cis4MjgwMSAyOTdmMmMyOGYxODI5MzM5ZjRhOGIxZjNjMGQwOGJkYzlmOTE3Yzc3IHB5M2sKKzgyODAyIGQ1ZDUxMmI4NjVhNzVkM2RiMjQ1ODJmNzBhMDY5NTBlZTM5YmQ0ZjIgcmVsZWFzZTI3LW1haW50Cis4MjgwMyA1MDEyZmZhZTE4ZmFjNmI5MmNjMzdlYTEzZjA1NDZkMjBlNWNhNDZhIHJlbGVhc2UyNy1tYWludAorODI4MDQgOTBiZjA2MzFiZmI4ZWU4NzBkZWM3ZGI5YWFhNDlkNmJiYThkZDgyNCBweTNrCis4MjgwNSA0Y2IwZTg3YzA3Y2EzNmExZjBkZjE1OTA0NGI1ODQ1NGNhOWIyZTkxIHB5M2sKKzgyODA2IDYxMmUxMjYzMTUxMWIyMjRkM2I0ZDE4MDQwZWZhNjgxMDM3MDZmNzIgcHkzaworODI4MDcgZDA5MGY2MjU0YzQ1M2RjZTdkNzRkZmIwOGU3NzZjOWUyZmY1NmM5ZSByZWxlYXNlMjctbWFpbnQKKzgyODA4IDM2NWVlYWI0YTM1MDI2MGFmN2UxMDc2MTJhOGYyNjYwZmZhYWUzMTkgcmVsZWFzZTMxLW1haW50Cis4MjgwOSBmY2ZhN2JiZTE4NWVhZmMwYTliMTU3YzYyOWYxMjVhMTFiZDg0M2RmIHJlbGVhc2UzMS1tYWludAorODI4MTAgN2Y1Nzc1Mzk1ZDMyOGIwYzIwZGYxY2EwYzQxN2U0YTJmNTM4MmFlZiBpbXBvcnRfdW5pY29kZQorODI4MTEgYmUxM2ZmMzc1NWU5ZmFiNzE2MzFjYzhlODc0M2ViYzU0OTZkNzA0ZiBpbXBvcnRfdW5pY29kZQorODI4MTIgODFmMGYwZDUzZDEwODRlNjE3MmFlMjYwM2RlNTA3ZWU3ODU2ZWQxMiBpbXBvcnRfdW5pY29kZQorODI4MTMgZDEzOTE0ZWNkMzcwZmZiYjQ5ODEyZjVlZmM3YjZiYTM4NDY1OGYzZSBpbXBvcnRfdW5pY29kZQorODI4MTQgMTg5ZmE5MmQxNWRjNTk3ODI5ZTc1ZjA0ZGIxZDk4NmJmMzZkMTlhYyBweTNrCis4MjgxNSBiMTQzOGQyNmMxNjdiODYyMWRlOGMyMjg5ZTcwNDFlY2JhMWYyNTFiIHJlbGVhc2UyNy1tYWludAorODI4MTYgYTM1MmI5MTU2Y2VlY2IyNzg4NDk4NTk5MDNjZDBkNWU0ZTVkODg3ZiByZWxlYXNlMzEtbWFpbnQKKzgyODE3IDBmNGI3YzA3ZDFiMzdiNTIxMWM3YzIzNWYxMDkzNDIwZWJjNmY0YmMgcHkzaworODI4MTggNTNlN2FlOGNhMDM5MTQ4Y2Q0YTEyNTY2OGRkNzFjMjhmMzdjNjMzNCBweTNrCis4MjgxOSBlYWNjZjFhMWNiOTAzYjRkZDY4MjNlMjExZjg5OTE0MGE5ZmNjMDFmIHB5M2sKKzgyODIwIDRjMTFlNDE0MGNlZDFmYTM4OGQ3NGQ2YWJkOTRmZWEwODg0NDM5OTggcHkzaworODI4MjEgMDZiMzg5MWE2Mzk1MzRiYjRlNDM1MmJjYzcxMmYxNTAwZDg3MWFkYyBweTNrCis4MjgyMiAxY2Y0M2M2ZTY1NjZiMzYyOWZmMzJjM2IyODc0N2JiYjFlN2Y2YmY2IHB5M2sKKzgyODIzIDExMjlkNGRmZWVkNmZlMWQxYmZlOGMyZGM5MWE3YTlhZGNiMDE3NzAgcmVsZWFzZTI3LW1haW50Cis4MjgyNCA0MzI5MDhkNTIxY2VmZWViOTU3NTJkYmNmNGQ2OThlMGYwYWJmMTYwIHJlbGVhc2UzMS1tYWludAorODI4MjUgMzJkOGIyMmIwZTdjNWU2MjkwZDBmNGU3Y2M5NDcwN2VmNWQ2MjliYiBweTNrCis4MjgyNiA1Y2EyMmExYmUzY2QyMTY4ZTMxNGE0OTdiZmQ5OGEyMzRmYjcyODE1IGltcG9ydF91bmljb2RlCis4MjgyNyAxOTQzODRiNTM4MGU1MjQzOGQyYWJiNGFhMDczNjBiYTU3NDEwMmY3IGltcG9ydF91bmljb2RlCis4MjgyOCA0ZGQ5ODUyZGFlOWIzZTcwZWI5OTQxYTBhZmNkMzRiN2QwNjBlZjgwIHB5M2sKKzgyODI5IDczNzUxOWVmMTYyZTZlZjI3NjZhNmViYjE0NmIwN2Q0ZTZmODQwNmIgcmVsZWFzZTMxLW1haW50Cis4MjgzMCBhYjEwMmEyMjYwMzgzYjEyZGM1NzM5NGMwNTU2ODMwYzhmNjU2NDA4IHB5M2sKKzgyODMxIDNmMzdlM2NjYzEzMTM4Nzg3ZWNiODdhMzY3MWMyNmUwOWM5ODI3ZDEgcHkzaworODI4MzIgNjU3NmZkNGMwZDJlMzExOGQ0OTRkMGVkZjBlYjI0MTE0NDdiMDlmMiBweTNrCis4MjgzMyA0OWI4M2JmY2ZhOGZiYmEzZmY5NmQ2YjUzNmM3MzhkODYyZThmZWIxIHJlbGVhc2UzMS1tYWludAorODI4MzQgODQ5ZjZlMjIwYWEwZDIzMTBmOGE2MzMyNjA1MDExMGJjOTFjNDMxNCBweTNrCis4MjgzNSAzMGY2OTVlYzk0OWJkMjI1NTM4ZDQ4YTFkY2MzN2VlMGJlMjhkZDlhIHB5M2sKKzgyODM2IDhlNDJjN2E1ZGFiOGQ4ZmI2NGRhMTBkMmEwMGRlMWM2OGJjNDIyNTYgcmVsZWFzZTMxLW1haW50Cis4MjgzNyBmNWIxOGYyNjhmNTdkOGU5NjAyZWNlZjI2MGNkMDVhMWIwMWRlMjU1IHB5M2sKKzgyODM4IDBiYjRkYWQ4MTYxNGI3OWYyMjZmZDMyZWZmMzhjYTEwNmNmZmE0Y2QgcHkzaworODI4MzkgNjY0YTIwZjRhODM2Yzc4MjJjZGI1NjE5NTBlZTkyNjI2NzE0NTRhNyBweTNrCis4Mjg0MCA3ZWFiYTQxM2ZkYTRiOGYyNTc2MDJhMDU2ZjkyYjE1ZTFjYTBjMzk3IHJlbGVhc2UyNy1tYWludAorODI4NDEgOTRmNTI5NzY0YzM4NzNjNjUxZWQ0NTE4MWU4MGIyNjhiYjM1ZTE4NyByZWxlYXNlMzEtbWFpbnQKKzgyODQyIGZjZDQxMjNhZWQ5MzQ2YzY3OWZmOGU4ZWFlNjBkNzY0Y2JiM2RjYWMgcHkzaworODI4NDMgNjBmZGYxNDcwMzJjZjE1Zjk3OTY5MWQ3YjYyODQzMzM0ZjYwZDQyMSBweTNrCis4Mjg0NCA2NGNhYTc0OGEyOGVhYzkxZDVhMDU2ZWJkZWJiZWY5MDUwZTE4M2Y1IHJlbGVhc2UzMS1tYWludAorODI4NDUgNGVmNjM5ZjRkODEwMGI0MjkwY2Q1NWFjOTYzOTkxMTFhMmRkYjY3NSByZWxlYXNlMjctbWFpbnQKKzgyODQ2IDFmOTk4MjNmNGZhZTc4YTFkNzVlOWM5NjJhN2E1YmI4NjAxMWZjNDQgcmVsZWFzZTMxLW1haW50Cis4Mjg0NyA1YjM1MjEzM2M0NTIxYzllODI4YjMyZWEzOWMwYmNlOWE5YWQ1YmIxIHJlbGVhc2UzMS1tYWludAorODI4NDggYjllZGRmM2MxZTkwYTFlNjg5YTYyY2M2MmViZjA1MGI5YWY0Y2FiNiBweTNrCis4Mjg0OSBlZGZkN2VhNDhlZGIyNWVkNmZjOTFiODQwODAwZTExMzczN2VmOTEzIHB5M2sKKzgyODUwIGI1NzQ5ZGQ4YzQyMWJiMWQwODI0NjUyNjkyY2FmNmFmYTY4YmQwM2MgcHkzaworODI4NTEgZGFlYTk3OGE0OGFlODk0Zjc2MzE5YWNlNTU3NDgyNWY2MmFhNTdmMyByZWxlYXNlMzEtbWFpbnQKKzgyODUyIGFkNTFhYjhiNjRiZDAzZTkxMWUxNzJlOTg1MjM5MTM5NzUwYTMzMTkgcmVsZWFzZTI3LW1haW50Cis4Mjg1MyA0ZmQ1YmEzNWRmNmU1Njk1MTgwZDAyODliYTUxODIyODEwZThjOGE4IHJlbGVhc2UyNy1tYWludAorODI4NTQgOThhNGU5NmYxZjY3NDAxY2U2ZDlhNjE3ZDJjMzRhNDBjNWJiMWFjMCByZWxlYXNlMjctbWFpbnQKKzgyODU2IDMxYTNkNzZmMzgzNTE5ZmU2YjU0Njg1NGVhMTZjNTJiYTUwNjE3NGUgcHkzaworODI4NTcgMmM3NTc5ZTA0YWQyMTQ1NWZhZmVmYWVlNDI4MThjZjNjODlmNTRhMSBweTNrCis4Mjg1OCBlZjY3ZTc0ODEyNDQ3NzVkNThkZTk1YmJiY2QyOTgzNzc1MGZiODA1IHJlbGVhc2UzMS1tYWludAorODI4NTkgYWVkYjUzZDhjMmI4Y2Q1NDcyMWE5NjUyZjI2OTM1ODk1OWQ3NTBkYyByZWxlYXNlMzEtbWFpbnQKKzgyODYwIDY3ZWRjNDI0ZTk3YjgyY2RlZjg1NDY3MDY5NmIwOTcxMDIxNjU4ODMgcmVsZWFzZTMxLW1haW50Cis4Mjg2MSBlNjA3ZmUxNWYyZDY5NDI1ZjQ1OGE2YWQ5NGVhNTlmY2ZkODlmYjMwIGltcG9ydF91bmljb2RlCis4Mjg2MiAxZTM2N2FmZWZkN2UwZTk5NDEzMmViNGQxMjA2N2VhYTgwOWY5Y2NkIGltcG9ydF91bmljb2RlCis4Mjg2MyBhNWZiNzA3Y2FiZGVlYmQ4NmU5OTUxNGQ5ZDY3MGRmZTU2ODQ1MmM2IGltcG9ydF91bmljb2RlCis4Mjg2NCBkNDkzYTFiNDQ1N2U5YTkxMWY1NzEyNWQ0ZDkxOTQwOGI1OTViOWQ1IGltcG9ydF91bmljb2RlCis4Mjg2NSAyMGJiNmZkMGJkOWMzNWY1YjUwOGY1NjFkOWI4NDU5ZWM2ZWIwZTRiIGltcG9ydF91bmljb2RlCis4Mjg2NiAzMzFlMzdlMDUyY2YzYmM1M2I3NWI4MGE2NzMxNjYxMWZhNjllYzg5IGltcG9ydF91bmljb2RlCis4Mjg2NyAzYzliMzg0NGY5Nzg4MTEwY2U3MDJjNGRhNDA4ZGYzM2JlNTE2ZjFmIGltcG9ydF91bmljb2RlCis4Mjg2OCAwOTE2ZTg1ODVhY2IyZDllN2Q5MmEzODk0YjMwYzFjYjI5ZGMyNDU4IGltcG9ydF91bmljb2RlCis4Mjg2OSA3ZjBkYWJiN2ZkOGRkNjEyNmE1OTRkYzZlODZlYjBkZTI3YjE1NzUzIGltcG9ydF91bmljb2RlCis4Mjg3MCA1YjFiN2Y1NTc0YzAwMWJiOGE4MjdjZmRlMDQ0MDYwYjUyNjQ3MmY2IHJlbGVhc2UyNy1tYWludAorODI4NzEgODYzNTUyM2VmNWM2Mzk1NTBhNzZmYzQ0YjNmYWRiNTI1ZGJmNjJlZSBweTNrCis4Mjg3MiBkNGY2N2I4NjQ5Mjg4YTRiNTA4YWUyNWFmZmU0YWMwM2Y2OGIwZmQ1IHB5M2sKKzgyODczIGFkOTVlMjMxMjljNzZjYjI2ZDkwYjUzOThhMDA0NjBlNTYwMWY0NjYgcHkzaworODI4NzQgZDMwYjlkZmZiODZkNDEwNzUzZDNmZjg2YWYzNmNiMmU2ZDllMmJmYiBweTNrCis4Mjg3NSA3NzAyMzI5MmZjNjE0YmNhOTU0Y2I4MTdiZjBkOGZiNzBhYWU5NjQ5IHJlbGVhc2UyNy1tYWludAorODI4NzYgMThiZGM0M2NlNWVkMjhlNWRlMWYzNGFjMTJjMWNmZTZlZDg4NDJmYSByZWxlYXNlMjctbWFpbnQKKzgyODc3IDdkN2U2M2ViM2I1MzAxODQ1NGRjNDUzYmViYTBhZjg2MWNmNjcyMzUgcmVsZWFzZTI3LW1haW50Cis4Mjg3OCA3N2RmZTJhNzc1ZDE5OTkwYzNmM2I3Y2Q3YTM3N2UwZDQ2M2FlZWRkIHJlbGVhc2UyNi1tYWludAorODI4NzkgZWIwMDc1ZTYwNzI1YjlmMTMyM2NjYTNmOTM3MzdmYzdlNzE5MmNmMyBweTNrCis4Mjg4MCA0MTM2MGY4MDM5YWJmYjM0NjI2MmU4YTRlMDIyZGYyMWJjM2E4ZjUzIHJlbGVhc2UzMS1tYWludAorODI4ODEgZDc0ZGUwNTBjNDQ1ZGJlOWVjYTgzYTU5NjFjMmFlNTk0MmI0M2M1MSBweTNrCis4Mjg4MiA0YjQ1Njc4MGM4ZDhhZjQyOWFkOWZjMzIwYWUzZTU4YjcyMWZhZmFlIHJlbGVhc2UzMS1tYWludAorODI4ODMgNjE0MWNiMmUyNmUxNDcwMDM5YmMwYjQyMDM2MzIyZDIzYzU0NzI4NyByZWxlYXNlMjctbWFpbnQKKzgyODg0IDBmMjQzMTQwMTAyMTI3NzE5NjNlNTlmYTlhNmVhY2RmZTdiMzAzNmQgcmVsZWFzZTI2LW1haW50Cis4Mjg4NSBjMGUwNzU2ZTA5OTY2MzRlZWQ1ZGM5Y2NhYjAzNDM4MDVkYTJlOWQ0IHB5M2sKKzgyODg2IDM4MDVmZmU4ZmYzODMxNWViNmUyMjI1MDBlZGU0MTdmNmQzNjQ5OGEgcmVsZWFzZTMxLW1haW50Cis4Mjg4NyA2Yzc2M2Q2MzFkYmEwNTk0NzY3ZTJjZDcyZjVlZmNkMDc3ZTI4ZjcwIHB5M2sKKzgyODg4IDJiNjhhODQ0MTQ1ODcyZmZhZmU1MWMyODMzOTZjYTZjMWM5MTI4MDcgcmVsZWFzZTMxLW1haW50Cis4Mjg4OSBkNGY2MWIzNmNjZTZlNmU3MDAyN2E5ZWMyNWUwYjI3MWJkNjdjNWU2IHJlbGVhc2UyNy1tYWludAorODI4OTAgOWYxZDlhZWYzNzRjNzdkOTk5YWRkMmRmZjMyMGNkNzkzMzMxMDVlYiBweTNrCis4Mjg5MSAwZjgzY2ExMjA3NTI5MGJiMDVkMzY0Y2UyMDE1NTQzNzcwOGJhOGZmIHJlbGVhc2UzMS1tYWludAorODI4OTIgOTY3NTdjNjkwYjA1ZjJkZjRiY2U5ZWI2OWM3MWZjYTRkMDExYTJjMiByZWxlYXNlMjctbWFpbnQKKzgyODkzIGM3MDhjOTQ2ZmYzZTQzZTdkY2NmYTkwNzY4ZmY4MWI4ZWRkZGQzMDYgcmVsZWFzZTI2LW1haW50Cis4Mjg5NSBhMWY3ZGVhMzYyMTk2YjZiMWFiYzQ0NTBiYzdhNzQwZmQ0OGRkMDM4IHB5M2sKKzgyODk2IGEyOTczZTcwNTA1N2E3MWMwMDdjYzZjNTNkMmYwNjRiNmFlZDllNDkgcmVsZWFzZTMxLW1haW50Cis4Mjg5NyAwYjI5MWUyZmYwMGZjOTFhOTdlODBiNTA1MGU2NmE1YWJiOWRkZTQyIHJlbGVhc2UyNy1tYWludAorODI4OTggNjMzM2QzYTdlNWM3MzllOTU1NzE3OWQxMjUwNjNmZDlkOTY4MDMzMCByZWxlYXNlMjYtbWFpbnQKKzgyODk5IDQ2OTI3ODEwMjc5MDg3YTMzOGFjMTI1ZjQzNzQ1NTBlODA0MDY3OTMgcHkzaworODI5MDAgNGZlMjhhNDkxYTYzMDg5M2VhNWE2YzlkYmEyOGNiZTZhODg1MTc1NyByZWxlYXNlMzEtbWFpbnQKKzgyOTAxIGM3NDVkZjk0NjJlNjc3ZWQ4MTJlZTg2ZjYyYjgwMjIzNzBmN2U0YmQgaW1wb3J0X3VuaWNvZGUKKzgyOTAyIGFkMjYzY2MzODZhNTQyMjMyYmIyZWVkY2YzNjQ0YTExZWFhYTAxNDggaW1wb3J0X3VuaWNvZGUKKzgyOTAzIGZlY2ZmMDRkMGFiMTNiMGU4OWM2M2I4NzE2YWFjZDUyYmRkYjE0NTUgaW1wb3J0X3VuaWNvZGUKKzgyOTA0IDdjZGZhY2UxYWIwOTYyNmVkMWU0YWE2Y2I2YTU2NWY2YjkzZjA4OWUgaW1wb3J0X3VuaWNvZGUKKzgyOTA1IDczMGM4YjkwN2Q3ZGNjODc5MWVmNmUzNDAwYmI5YjZhMzc1YTgxMTAgaW1wb3J0X3VuaWNvZGUKKzgyOTA2IGZmOWRkYzE2MWVlM2QwNjk3YmExYzFlOThmYTYyOGU5MmZkYzhiZGYgaW1wb3J0X3VuaWNvZGUKKzgyOTA3IDdiNzFiNmRjNzQ0NGUwYTFjY2JjMDRlMzViNTFlNjUwMzgzZGI1MjcgaW1wb3J0X3VuaWNvZGUKKzgyOTA4IDg5Zjk3YTEyMTNjZDliMDQ3NTg0MTE3YzgyOGE4Y2ZjNGM4ZTdiOTMgaW1wb3J0X3VuaWNvZGUKKzgyOTEwIDIwMjZlYTQ0Mjg4OTljOTNhN2VlMzYyMDdhZDg5NGNhMGViMmIxNDQgcHkzaworODI5MTIgMGI3NTNhM2ZlNGIwZTE3OWU0NWY5NzhlMDJmMWZiNDZlYWJhMWIyOSByZWxlYXNlMzEtbWFpbnQKKzgyOTEzIDVmZmZhYzlhYzdkNmMyNjk1NmY3OWQ5MTNjYTM2MmYyZTVkZWNkZjAgaW1wb3J0X3VuaWNvZGUKKzgyOTE1IDFmMjdhMDVjNmMzMWQ0YTEzMTUyZDNjMzlmN2Y3NTljN2Q0NDYxYWEgcHkzaworODI5MTYgMjRmN2ZhMjU4MWU2ZjFkNGQyZTBmYTExZDM1YjJiNTRkOGFjMmU0MiByZWxlYXNlMzEtbWFpbnQKKzgyOTE3IGU3MDMxOTgzZTZmZGYzYzU0ODUzN2Q3YzhmOWMyMTVmNTBiZjUzMzMgcmVsZWFzZTI3LW1haW50Cis4MjkxOCBlMmVjNWZiYzZjZjEzN2NjNjRjYTBjM2E1OWI4MDBkZDk0NzAwYTkyIHB5M2sKKzgyOTE5IGEwYjk1Mzc3YWFhZDhkNmU5YmRiZTE0MGMzNGZiZGNhYmU5MzRjODcgcHkzaworODI5MjAgN2NiZjhjNGUyNzI3OTFmZDc4YjEzMjNjM2ExZGNmMDRjNTdkODA4OCByZWxlYXNlMzEtbWFpbnQKKzgyOTIxIDg0ZmY0MTc5NGQzZjJiNDhkYTI2ZTg4NjJlZWVmZGUxN2Y5MzNkZmEgcHkzaworODI5MjIgM2M3MzAxMGJkMGIwY2Y3ZjJkODI1YmE5YjJkMmVlNGNiYzM0NTQwZCBweTNrCis4MjkyMyA3YTAwY2E0Yjk1OTJiODVhNjVlZTIxMDVkMjM4M2UwODdkOWU0OTFhIHJlbGVhc2UzMS1tYWludAorODI5MjQgMDE3MTFmNjBmZmZjZmNkNDIxZmYxMTliNWU2ZTIyYWQ2M2I1NmVhYyByZWxlYXNlMjctbWFpbnQKKzgyOTI1IDRjNDVhMzJjM2NjOTk4ZWU1MjJkMjg0YzM3MTQxZDNjMmIxYjM4OTIgcmVsZWFzZTI2LW1haW50Cis4MjkyNiBlYWYwNGEzZjQ1MWEyZGJiMDFmZjQ2ZDFkOWMwZDlkMTdhYzY2ZjQ0IHB5M2stY2RlY2ltYWwKKzgyOTI3IGM3NDFhMWYyMjk3Njk4Yjk2NzhmZWMwZTBmMDVjMWViMzJiMDMzOGQgcHkzaworODI5MjggZmE4ZjM4ODM0Mjg3OGUyNjk4YjQ1YzU3ZmM0ZGRkZTdjMmI5MGJiZCByZWxlYXNlMzEtbWFpbnQKKzgyOTI5IGUwNWI2NDZkNmI5ODUwMWY4MTM3ZThjYWRhMzYzM2EwNzMzNGM5N2YgcmVsZWFzZTI3LW1haW50Cis4MjkzMCBiMjI4OTNiZTA4YzcxZTE3M2Y2NjgzODY2NTc5YWE2OTk1Y2RmMGU2IHJlbGVhc2UyNi1tYWludAorODI5MzEgY2Y0YjgzM2E0N2RlODVhZWM0NzU4MDA0NGZlNWQ2ZWJhNTJkNjdjMiBweTNrCis4MjkzMiBmMjgzMzA4ODFkYjQ0ZTgwNTIzYjc0MDhlM2ZjMWFlNDVlZWU3N2RkIHJlbGVhc2UzMS1tYWludAorODI5MzMgOTA1ZmE1NzE5NDAzMGVjNTZiMDJjMjliMzQxZTFhZTA1YTJkZjllYyByZWxlYXNlMjctbWFpbnQKKzgyOTM0IDJhNzliNzIzYWJkY2Y5NTJlMTIzOWIwZDk1NDIwOTE4NzAwMDM4MjcgcHkzaworODI5MzUgOGM0NDBjZjkwNzc2ZDJkNDczOGM3NjlhNWRmNWY1NTQ5ZmM5N2FlMCByZWxlYXNlMjctbWFpbnQKKzgyOTM2IDllNjE5ZjE2ZjY2YWE0MjRjNGY4MTY5OTQyNTIyNmI1NmEwZTBkNWIgcmVsZWFzZTMxLW1haW50Cis4MjkzNyAzYzc4YjNjZmQ0NjJjZjQ4YWJiZGI4YzRhYjBkZTZiOTRmZGYxYjhhIHB5M2sKKzgyOTM4IGFiZjY5ZDQwMjg4M2I3YjNkZTJjM2M5YTkyN2U4MzU2ZjI0YWRmYzUgcmVsZWFzZTMxLW1haW50Cis4MjkzOSBkMWQ4MTI0NmIyMjk5NmUzZjU2ODE3ZTZkNTA2NTE5YWJkODM1NjZlIHJlbGVhc2UyNy1tYWludAorODI5NDAgMWUyMWQ5NGUwNWY0NjI5MzQ2ZWQwZGVmMmIzNmU2ZGI4MzFlNmMwZiByZWxlYXNlMjctbWFpbnQKKzgyOTQxIDI2ODMzMzM3NTVmMzYyYjZiNTQ3YTAwNDIzYmM5NWZiOTFhNzQwMTEgcHkzaworODI5NDIgNjgwMzZmMmI1YWM4ZDlmNTM4OTMwYzUwMmNlZGFiMzA2ZTg2ZDNmMCByZWxlYXNlMzEtbWFpbnQKKzgyOTQzIGIxZGM2MGIzYzdhZWJjMjQ3MGIyY2I0Y2QzOTk4Zjc0NGU5NzNmMTQgcHkzaworODI5NDQgZGIyZGNjYTI0MDY5NDcyN2JiMDkxZjk0YTdiOTJmMDUzODFhZDNhOSByZWxlYXNlMzEtbWFpbnQKKzgyOTQ1IDE5MTkxNTU5ZWMwMmM1ZGZiMmZlOWQ3MjBjMTUzNGQ2ZDc2ZjkzNjYgcmVsZWFzZTI3LW1haW50Cis4Mjk0NiBjMTZiM2Y2YWM1MTFiNjI0NzNkNzliMjRjMzY0NTlmMGM3YmJkNGRmIHJlbGVhc2UyNi1tYWludAorODI5NDcgMjExZTMxOGQyM2VmYThmNmNkYTI5ZjJkMjUyNThiYzAxYzc1OWZiYyBweTNrCis4Mjk0OCBkYjNhZDZlYzBhNGIxNmQ5N2UyYzIxYjMxM2ZmZTRjOTE3OTI4NjI5IHJlbGVhc2UzMS1tYWludAorODI5NDkgOTc4NjgzZmRlODIwMzc0MTdkODE4NDQ1MjBmMmQ4N2IxZGEwZWJjNyBweTNrCis4Mjk1MSA2ZGMzZDIyMjgzZmY1NGZjNGI2MWYwZmE5ZDJkNGVlZWM1NTIyNTg5IHB5M2sKKzgyOTUyIDE2ZTg2MmE1YjZmMjZkZWQ5ODdjMDg3YTM4YmVlMzQ2YWIwOTNjMWIgcHkzaworODI5NTMgNGJmMDMzNzc1ODRkYjA3NjQ5YjhkZTM1ZTZlZDI2ZDUzYTU5ZWE5MCByZWxlYXNlMjctbWFpbnQKKzgyOTU0IDQxYWIxNjFkNDdhN2JmNDVkYzU4YjQ3OTYxNzY4MjBlMmRhYWI1NDEgcHkzaworODI5NTUgN2U0NTFjZTkwYzFhNjI0NGEzYjRlOWIwMThhNjkyMTFlMDkxZDY0MCByZWxlYXNlMzEtbWFpbnQKKzgyOTU2IDBkOTE4MTJmNjI2MDk2ODdmMGIyM2RhMzkyMmM1MWQ3NmJkZTRhMDMgcmVsZWFzZTMxLW1haW50Cis4Mjk1NyAzMWRmNmY4ZTlmMWQ0ZDA0OWQ5YjJiOTZhZThkYjg3NzQ3Yjk2YzQwIHB5M2sKKzgyOTU4IDY3ZjhmMDVjZDQwZGMwZTI2MWVjMmFiZWYwZDc4YjE0NWI2M2JjZjYgcHkzaworODI5NTkgY2NkM2U1NDU2MmZhN2EwZDY1M2NmZTcwOGExODA4OWVhMzI2MjcwMSBweTNrCis4Mjk2MCBhNGRhZTdlMmRmN2U2NjYzZjBkM2NmYmJhM2FjZWM4NTNmMGI5NTUyIHB5M2sKKzgyOTYxIDQ4MzUxMDZlY2UwYzUzMjRhMjBjNjIyNmY2MWQ5OWM4MDM0ZDlmZmUgcHkzaworODI5NjIgYTY1Yzk5Zjk0ODkwMDk1YjBjY2E0YTMwMjI2ZWU1YzM3MTU2MjQ5YyBweTNrCis4Mjk2MyBiYjdmYzA4ZjcyM2VjN2RiN2ZiMWRmOWVmNjM2OGNiNzg2YTQxOGViIHJlbGVhc2UzMS1tYWludAorODI5NjQgMmY5NTViZjkzMDM3YjZkNjhjYmI4NGIyZDRjMTM4NmRiODM0MjAwOSBweTNrCis4Mjk2NSAyNTIxNmE3ZTIzNGQ2YWEzODVjYjNhMjRmZDJhMTIzNjkwNGNhYTRlIHB5M2sKKzgyOTY2IGQzNTc4MmFjMjFmODYxZjk2OTk5NmRkN2RkODFlNmNiOTQxNDljMmIgcHkzaworODI5NjcgYjc5NDI5MTU0ODBmNzhiYTUzOTZhYTk0OTY0MTYxMjkwZTc3YzkwOCBweTNrCis4Mjk2OCBjOTAwMjFmZDFmYmZhZmZiZmJkYjRmMzNkMTRmNDc1ZGJlNmMzODk0IHJlbGVhc2UzMS1tYWludAorODI5NjkgYzk2YTcyMmJlMWRiYzFjNGUwZDBiYjQ0NmQwNzU1M2UzNGJiMmJkMiByZWxlYXNlMjctbWFpbnQKKzgyOTcwIGI5Yzk4OWEyZmFkMzEzNzdjYjI1OTA0OWUzN2JiNGI2YWU0YzhjZWQgcmVsZWFzZTI2LW1haW50Cis4Mjk3MSBhYTBiNTZkZDE0YWY3YjhiNWQ0M2FlMGY0ZGM0MDQ4M2Q2NDZlZGJiIHB5M2sKKzgyOTcyIGFkNjZlZmY5ODAwYmJjMmNmMjQ2NzI2YWFiZGQzY2Y2N2JmZmRiYmEgcmVsZWFzZTMxLW1haW50Cis4Mjk3MyAzNTQ1NDY4NDZjMjk3YWUzZTEzMjk4Yzk1MzM3OTRkMmJkNjk4NWQ5IHJlbGVhc2UyNy1tYWludAorODI5NzQgM2ZkZDliNDMwMjRjNjIxZjEyZmMyNjkyYjhjNWMwY2ViODZjYTI0YyByZWxlYXNlMjYtbWFpbnQKKzgyOTc1IDdmMzEzZWQ5ZTg4ZjMyNDM5YTBlNGQzYjE1YzllYTM4YTExNjFhZmIgcmVsZWFzZTI2LW1haW50Cis4Mjk3NyBhMTEyMTQwOWY5NmIyMGRlZmFhNGY0NzUxMmYxOTQ1MGJlZTI2YjQxIHJlbGVhc2UyNy1tYWludAorODI5NzggNzNkZGI4YjJiNTc0N2U4YzMyYjNhMTZkNDJlNWRmM2I2YmI2NTEwMSBweTNrCis4Mjk3OSA1Y2ZmMDU4ZDZjZWQ1YzE1OWIxYWZkZmEzODkyM2M2Mjc0NTViM2NlIHJlbGVhc2UzMS1tYWludAorODI5ODAgM2ZhNjA1Njg4ZDAzNWE1NDViNjAyMDEzYmIwYzBjMTZlNzU4MjExYiByZWxlYXNlMjctbWFpbnQKKzgyOTgxIGUxYmMyYzg5MzVkMjBhN2U4ZjcwMmQxOWU3OGYyMzBhYWIyYTE0ZTEgcmVsZWFzZTI3LW1haW50Cis4Mjk4MiAxYzY2ZjcyZjZiYzkzYjFkYjQzYzAzNTNlY2NhNDIwOGQzMDQ2NGYzIHJlbGVhc2UyNi1tYWludAorODI5ODMgZjI0MTU5MmVjZTRlYmU1ZGVhOTMwMDU3NzUwODllZjY5MjcyYjljNyBweTNrCis4Mjk4NCA3NDJmZGY3ZjY1NDAwNTYyNmZlNzdjNzFiZmNlNWIyOWVjYzQ2MzNkIHJlbGVhc2UyNi1tYWludAorODI5ODUgODcyYjM0Y2IyNjg4NTE0NDJlNDE5MzM4MDFmZTY2NDM5ZGM2YTQ1YyBweTNrCis4Mjk4NiBiMmYxMzg1YTIzNWUwZDg5ODZlMjk3NGRjMGFlNzM0OWRiMDAyYjAxIHB5M2stY2RlY2ltYWwKKzgyOTg3IDMzMzdhMjk1NWUxMTkyN2IzZGZhN2FlODhkNzRhOTU3YTkwMDBlMWYgcHkzay1jZGVjaW1hbAorODI5ODggMTY5MzQ3ZjlkNGM0ZjI1ZGIwN2M5ZmQ4NGZkMzc0OTcxZTZjMTQyMyBweTNrLWNkZWNpbWFsCis4Mjk5NSA5Yzc2NmNkMjExZGIwZWFhNjI3YTU4MWIxMDEzMjhkMDhkOGRhMDQxIHB5M2sKKzgyOTk3IGExNGE3ODY5MmM3YTE1ODBlYTc5OTU1NTM2MDJmNjBiYzJlN2RmNzQgcHkzaworODI5OTggYzBkOGZlMjVlMjY2ZWM4NjYxZjM0ZjZlOTc5ZDQ2NzRiMDA1MjRlNyBweTNrLWNkZWNpbWFsCis4Mjk5OSAxZTI2MWNjZTQxMTY0NWEzNmI1N2M4N2Y0ODQ4ZjVmZTJiZTI1ODc3IHJlbGVhc2UzMS1tYWludAorODMwMDAgNDVlZDBjZjJjMzg2YTZmYmM5N2U2MDZmNDIwNDM2YWMyOTE5YTBlMiByZWxlYXNlMjYtbWFpbnQKKzgzMDAxIGMxNjIwMjIwYTQzZDI4Zjc3MDA4MjMwOWY4NDVmNGUyNjc2NTI0ZjkgcmVsZWFzZTI3LW1haW50Cis4MzAwNSBjYmQ2ZjVkMjRhZjkwNjFlYTJhYmFhZWJlMmIxMTJjMDY0M2JlYTk2IHB5M2sKKzgzMDA2IDkwNTdlYTAxNDQ2MTdmMjg2NDEwZWVkMjg2MjZjNmU1ODM3MzU1ZWIgcHkzaworODMwMDcgNzVhZjRhMjdhMDcwOTcxYTAzZWI0ZGJjMzhiZTdhNmJiNDZiMWExZCByZWxlYXNlMjctbWFpbnQKKzgzMDA4IGQwYmEzYjhiMGQ0ODJiMTFlZmY5NmQ4OGRjNjgyMzVkN2RiNzY4ODkgcmVsZWFzZTI2LW1haW50Cis4MzAwOSBiZmRiNWYwOGMwZjgxZmI1MmM5ZWRlYzk1ZmJkMGExNTlhYmJiNDk0IHB5M2sKKzgzMDEwIDE1ZWRkNWZiYmNhZTFkM2JjMThkMDk2NzU5MTczZjU4NzdjZDI5NWEgcmVsZWFzZTMxLW1haW50Cis4MzAxMSBmZWU0OTk0NjIwZmJmOTg1MWFjMTNkODcwNmZjMWMxZTFjYmVmMTgwIHB5M2sKKzgzMDEyIGY0ZWIxYzZhMzRlZjQzMGFkMGViZWIyZjZiMWUxZTVjYjJkNmU2YjAgcmVsZWFzZTMxLW1haW50Cis4MzAxMyA3MDc5YzYwNzgxNGNhYWI0YzBiMTgzYTY1M2M3YmE1ODYxMGQ3YzUwIHJlbGVhc2UyNy1tYWludAorODMwMTYgNWI0Njg2ODc3NjhjZDUxOGFiODJjNjcxMDdmZTMwNjhiM2NhNmVhMyBweTNrCis4MzAxNyA3MDkyNWQzYzAyNzk0N2Y2OTkzNjk4MjIzYzg0YTE0MmIzODcxOTg3IHJlbGVhc2UzMS1tYWludAorODMwMTggMmYxYTgzNmYwZmFjMWEyM2YwZGI1MTlmN2M4ZDE5NTc4OGQ3MmQxNCByZWxlYXNlMjctbWFpbnQKKzgzMDI1IDIwZTU2ZWNjZGY1MjI2Mzg2YWU0MWNlYzMyZWRmMDQ2OGJhYjIyOTUgcHkzaworODMwMjYgNGI0MGJmOTFlYmViMzI2ZTU5Nzg0ODA3OGUwNTRhYjgwNzlmYTJhMCByZWxlYXNlMzEtbWFpbnQKKzgzMDI3IGJiNjhlNTM0NTRiNmQ2NGM2ZDM2MGIzMjMyMGZjODI1NTllNmZiYzIgcmVsZWFzZTI3LW1haW50Cis4MzAzMCAzNjc1MjlkYzM0ZDExZjEyNTM0ZjJiMzAzNWNiMjk2YWViNWZiNDNlIHB5M2sKKzgzMDMxIGU1Y2RiMTI3NjhjYjRhYjliYTk0MGM3MWNmMTQzOTMxZGQzMGQ5NmYgcmVsZWFzZTI3LW1haW50Cis4MzAzMiA3YjVkMTUyN2MwY2U4YTMwOTA2NTY4NWVlYWU5M2ZlYWM4MjBlYzA3IHJlbGVhc2UyNi1tYWludAorODMwMzMgNTIwYmY0ZDFjYjY2NTE2YjkxMDc0NmJhOGIxNjc3MDU2NzIwYjY2MCByZWxlYXNlMzEtbWFpbnQKKzgzMDM1IDQ1NDVmZjUwNjFiN2E3YTIyNDNiZmM2MWMzYTgzYTE2ZjBiYTE0N2QgcHkzaworODMwMzcgOWRiYmU2ZTdiNjY4YzE1ODQ2ZDdjOWZiMzVhNmUwNGIzNjZkYWM1NSByZWxlYXNlMzEtbWFpbnQKKzgzMDQ1IDFmNGVkNzFiNjhlMjI0NmU1ZGQ2MWVlNWFmMmI4ZWEzMzEzYmU2ZmMgcmVsZWFzZTI3LW1haW50Cis4MzA0NiAzMDU5MDJiM2MxYTAwOWZiY2RlMTc0N2E1M2FkZWZkNjE3NzVmZDUzIHB5M2sKKzgzMDUzIDI5YTNlZGE4OTk5NTNkYzJiMzE1NjhkMGVjNjcyNTk5NjE2MGUzNTEgcHkzaworODMwNTQgZWUwMWY1NDgxYzY4MGM5MGNjM2NkMTZkNjBmODg5ZDdiNzk2MmMxOCByZWxlYXNlMzEtbWFpbnQKKzgzMDU5IDNlNjA5YmY0NjJmZjMxMWNjMzA2ZDA4ZTQxNjU4ZTg5NWJhNjc0NjMgcHkzaworODMwNjIgMWM0NDFlMzlkYmU0NmQ4ODBmN2YxN2ZhMTYwODRlYjA2NzBmMDM2NSBwZXAtMDM4NAorODMwNjMgODg1MjBmYjQ1YmYyZWQ0YTNiNzlhNjNkNDdkYzAzZjAzYTY1NDczMSBwZXAtMDM4NAorODMwNjUgNTkxMjQ5ZDk4MzgzYWM2MzQxZGRiYzE3NjM5NDM5ZDg4N2Q2Y2ZiZSBweTNrCis4MzA2NiAxNmVkZDRmYmE2YTVjMmQ2YmUwNDBmMWE5NmVhMjJjNWM3OGM3YmUyIHB5M2sKKzgzMDY3IDJhZDhlOGNlNDZjNmI4ZjhlNjlmMzY5YTkwNjM0OTk0NGZkZDQ2NTUgcHkzaworODMwNjkgNWE2OThhMTUyZjMwMjM1ZDA0OTk0ODM1NGQ5MWFhMjU1ZDYwN2ViMSByZWxlYXNlMzEtbWFpbnQKKzgzMDcwIDcyMWU3MjhhYzA2MGYwYTQwYmQwMWY5ZWJjMmI2NDk2ZTdjOWI0YmUgcmVsZWFzZTI3LW1haW50Cis4MzA3MSA1MzVjYWIxYThjMDA0OTZlM2NmNTg3M2QxZjMxMzA0NWE3MTZlZDY2IHJlbGVhc2UyNy1tYWludAorODMwNzIgMzdkODQ4OTFjNjcxYTJkMTdiNDVhZGU0NTI2YWY5NDg2MTlhNmI3ZSBweTNrCis4MzA3MyA4ZWY5NTdjMzgxZmRhNzI3MDkxZWFkMGVmNDMxMjAxMmY1ZjFmOTZjIHB5M2sKKzgzMDc0IGZhYTVmMDE3ZmVhNWQ4OWY5M2I3NTk2MjdlNmE0MmM2NWFhZjdkYWYgcmVsZWFzZTMxLW1haW50Cis4MzA3NSBlNjBmZGIzNDhiZGM2MTEwYWIwZWQ3OGUzMDFjZTFkMGY4NjQ5ODQ3IHB5M2sKKzgzMDc2IGM0ODNmOTQ5Nzg3MmI2MzIxYTlkNWFiZWNhODJmZjM5NDUwZWUyOGYgcmVsZWFzZTMxLW1haW50Cis4MzA3NyBiZmZkMzk5Yjc2NGM2ZGQ2N2Q4MzUzOTM4MzAwZGE4MmFkZWIyNGRmIHJlbGVhc2UyNy1tYWludAorODMwNzggNzZlMDc5MjI1MDc5YzZmNTM5MGYzZGNkOTRhZmMyZTZmYjEwZGFhNiBweTNrCis4MzA3OSA5OTZlZTllMDM4MTY3MDc1ZTdlMTM1ZGEyOTUxOGFjOWU1YmY5MzdmIHJlbGVhc2UyNy1tYWludAorODMwODAgM2E5M2ZkMmViYjQwY2VjMmJmNmExYzU2YjlhZjVjY2JhYjc1ODdhYyBweTNrCis4MzA4MSBjMGNmN2Q3MDAxZTIzMjBjMmI4MjdiODY3NTA5MjVmYzRkNzk4ZjllIHJlbGVhc2UzMS1tYWludAorODMwODIgNWNlM2MwNjQ0OGE3OGVmNDZmMWVmZTI1YWEyNjkwMDc5NjFiMjc4MSByZWxlYXNlMjctbWFpbnQKKzgzMDgzIGJkYzA2OWExYTcyMWIyOGFkMjE4NDkyMzJiZDU0MjZkZGE4NzE1MDYgcmVsZWFzZTI2LW1haW50Cis4MzA4NCAxODNjNTYyNWUwMGJkZjY4ZDA0ODdmNjc2ZWI2Y2JhZDkyMDNiYTBkIHJlbGVhc2UzMS1tYWludAorODMwODUgMWNlODRjNjFmM2IxMzYwMDEzOWExMjE2YTNiZjBhOTY0NDlhMzk0MiByZWxlYXNlMjctbWFpbnQKKzgzMDg2IGUyNjdlZTk3NjBiZDE0YThiNDI3MGUxMmFmOTgyYzk0MWZhN2E2N2QgcmVsZWFzZTI2LW1haW50Cis4MzA4OCAxMDI3NGE3YmM1Mzc3NjFmZGJmODI2MzBlMWEzNjk0ODE4ODhhODY5IHB5M2sKKzgzMDg5IGU2MzgzYzgxZGE0MWNhMDU2YjVjZjYxN2QxOWVkYzliYjMzMjdlMWQgcHkzaworODMwOTAgZjUyM2IzOTg1MmU3NDYwY2Y3N2Q5NTBlNmZiNDg2ZTk3MjhkZGQ2ZCBweTNrCis4MzA5MSAwNDgzYjhlOGJjNTlmMTdjNzgxYjU0OTdiNzk5N2FmODFjM2NjNjFmIHB5M2sKKzgzMDkyIDI4NTVkNjM2MzE5MjlmZjU1NzRkYjNmMTRkOWEzYWU0OWY5ZGJmOTcgcHkzaworODMwOTMgZWM0MmI3MjgyNjRkYjZjZDRkNjgwZmYxNGEwZTcxMWQ4MmE4Y2M5YSByZWxlYXNlMzEtbWFpbnQKKzgzMDk0IDI3ODZkNjJjYzc5YzM4YTdhMDE4NDg3MTU4MmNlNTE0NDY2NzBlYTUgcHkzaworODMwOTUgNzY0ZWM5YmJmMDEzYTFmMDExMGE3M2UwMzNhN2MwZTk2MDQ4ZmE0YSBweTNrCis4MzA5NiA4NzIzYzFkZDFkMjVjMWE4NGJkOWYyZThjZDA2NjU5MTMwZTcyMzQ0IHB5M2sKKzgzMDk3IDFmOGZjYmI2Mzk2YmM2OWU2YzkyMDBiNTliZjI3MjZhZmQwYTI2YTAgcmVsZWFzZTMxLW1haW50Cis4MzA5OCA5N2I4NDFiM2IwYjQ3YmM2OTIyYzkxMGMxYzA2MzA3MTQ2ODM2OTQzIHJlbGVhc2UyNy1tYWludAorODMwOTkgMDYwZGUwNjBmMDNmZjBiNmQ5NmJlYTdhMjFkNWYyMTJlY2E4YzBhMiBweTNrCis4MzEwMCA2ODYxOWMzNzJlZjAxM2Y5ZGJlOGRhMzFkZTNhY2E0MWYxMzcyYWRjIHB5M2sKKzgzMTAxIDU4MGM3ODliNzg1ZDVkNzM5NjA5NzExYjEyZmEzNzU3YTgwMTdlMWEgcHkzaworODMxMDIgMzgzZTg0NjNmNTZjMDAwNGI1NWNhMWJiY2UxMTI2MTI5OTM0OTg2OSBweTNrCis4MzEwMyAwZjJiMGYzNzc2NDI0NmVjMTQyODIzYjY0NjJkMmYwOTg3NzZiZWNhIHB5M2sKKzgzMTA0IDIyN2RlZTI3ODYzOGE3Zjc4ZTIxNTJiYzJhNzA1YThmMDJjMzFiODAgcmVsZWFzZTMxLW1haW50Cis4MzEwNSAzMmZhY2JlZGZkMGViYzRlYTM2MjI4NWQ0NjJhYmYyY2RmMjM5NDlkIHJlbGVhc2UyNy1tYWludAorODMxMDYgNDgyNzE3OTYwMjU3YTA5MGQxMzBhYWMyOGE2YTc3NTE3NjMxYjIwZiBweTNrCis4MzEwNyBlNDM3OTUzNDI1ZDcwNTQzMjdmNzZlMjhmN2VhNDhhOGNjNTVjNzBiIHB5M2sKKzgzMTA4IGFmOTM0MTMyNGQzZDgyZTE4Mzg2YTgwZjBhZmNhNzc0NTBkM2I1OWMgcHkzaworODMxMDkgNzFmMWMwYmU4YWE3NzY1NDhlYzMzMzRmODRhYTYwMGNmM2MzM2RjOSBweTNrCis4MzExMCBkYjM3YWYwN2Q0YzI3MTIwODRhNmZhY2FlMzRlYjM0Y2RhYzc0YzFmIHJlbGVhc2UyNi1tYWludAorODMxMTEgZjk5NzAzOTFlZWFiMjhjMmE2ZjFjNGUxNGVhNzZiYzIwYzVhYTk5MCBweTNrCis4MzExMiBhZmRiNTMzMjMwNjU5YTQyN2EzNmIyZjY1YjM3YmNlM2IxZjhmMDA5IHB5M2sKKzgzMTEzIGU3NzM4ODQ1NzdhNTMzNGI3NzFhY2EyMGQ1NzE2NzA4N2U0NmVmN2QgcmVsZWFzZTMxLW1haW50Cis4MzExNCA4OTkzMWM4MzY4NTc0YThiNDY0MmUyN2ZjNjQ5NzBhOTE0YjU1Y2I2IHJlbGVhc2UyNy1tYWludAorODMxMTUgNGVkNjBjNGJjOGI2MDE2OWJiYjQzYTZlZjUyMDRkNzZlOWEzYmY1YiBweTNrCis4MzExNiA4ZmE0MjRhZWNkMGRiOGU2YWU3MTA3ZWU5YzY1YmVmZmNjNmMyZDVlIHB5M2sKKzgzMTE3IGRjMmE3YzM0NGJhYWZlYTEwYmEwZDkxMGJjZjExMTRmZTZhNjRmZmYgcmVsZWFzZTI3LW1haW50Cis4MzExOCA5MzU3ODBjNjJjNTk1NzcwMDlkYWQwMGE1YWZhMWU3OWY4YTZiNTFkIHJlbGVhc2UzMS1tYWludAorODMxMTkgZWQzMjhlNjcyYWNlMWEzZDhhNzg5OGJhMmM2MjUwYTdjOTYwOWIzNiByZWxlYXNlMjYtbWFpbnQKKzgzMTIwIDVhYTcyNjQxNGY4ZjA4ZDQ2NjA1YTVjNGNjYTA5ZjkzZTJjODdiOTUgcHkzaworODMxMjEgYjBhZjYzYWEwOWVhY2FiZTU2Njk5NGI3YzRjMzUwZGI0NGUzNzFhOSByZWxlYXNlMzEtbWFpbnQKKzgzMTIyIDgwNzJkZmQ5N2UxZGRmMzdmZDBjZGZhOTk5OTdkMzgxOGQwNzkwOGIgcmVsZWFzZTI3LW1haW50Cis4MzEyMyBjMzg2NmNkOTFhZTAwZTVkZGMyM2ZlY2E3MjgxM2ExOTAxNjUyYjE1IHJlbGVhc2UyNy1tYWludAorODMxMjQgZmY2NDQ5NjQzMTQyZTI0Y2QyZDBjNTBmMzVlNmE2MDFjMTc4Yzk0MSByZWxlYXNlMjctbWFpbnQKKzgzMTI1IDMzZTRhNDdhNmFkMTBkYjU1MzMwM2NjMmIzMzhkMTcxODQ5OGU4ODQgcHkzaworODMxMjYgZDg5NmYzZjk0YTRkZjIyODhmNTZlNjA3NTE1ZTAzM2RkMmE2OTFkNyByZWxlYXNlMjYtbWFpbnQKKzgzMTI3IDRjY2JjMjljN2YxMTMyOWE3MDk3N2RiYmQ1YWIxMzc2YjlhYzIzYjYgcHkzaworODMxMjggM2YyNDViZTU5MzM5YmZmYjFjOGQxNmMxYmM5YzRiODRmNDM2NjEwNiByZWxlYXNlMjYtbWFpbnQKKzgzMTMzIGFkNWYyNzkzZjdhZGYwOGY2NWU4ODA1MWUxYjUyYWYwOWU0Zjk0NzAgcHkzaworODMxMzQgZjgxMjYzNjdhMmRlZGRkYTI2YzM2M2U0N2ZlNTNiZWYwOWQyM2ZmYyByZWxlYXNlMzEtbWFpbnQKKzgzMTM1IDNlNjU5MjU4MWQwZjVhODIyNjQ1NjZiZjVmNWIwY2YxYmI4NzgwZTMgcmVsZWFzZTI3LW1haW50Cis4MzEzNiA1MzQzZWE3YzE5ODYzNDliOTdkNmVlN2RkNmVmMDYzODBlZGNiZDdkIHJlbGVhc2UyNi1tYWludAorODMxMzkgYTE2YjViYmRmMTliNDI4MmE0NTU0ZDM4ZDZkOGMwMzZhNDNjNTEwZCBweTNrCis4MzE0MCA5ZWNiYThhMTAxMjU1MWE2NGY5OTVlN2FlZmU1ODY4NTY0ZTBmNGRhIHB5M2sKKzgzMTQxIDJjNTZmNGFiMzZmMjZhNGIzYzg1MDQxY2M2ZjE2YTg1N2RlMmRlYTEgcHkzaworODMxNDIgMmRkMjk5ZTdhNmRiZDM3MTU5OTQwNmU5ZjRkYzQ5MDY3Y2MyZmU0NCByZWxlYXNlMjctbWFpbnQKKzgzMTQzIGVmOWIzOWRmNTkzNjgwNjJiNDc3NzFmZTNmYjAwOWQyNjMxYmZkYmYgcmVsZWFzZTMxLW1haW50Cis4MzE0NCBiMTlmOGE0OTI5ZDViM2I4YjU0OTZmZjgzODUxOWMyYWEyNDQyODZhIHJlbGVhc2UzMS1tYWludAorODMxNDUgZmRiMGNmZGNjZjg1ODI1ZjI4MGE4MzVlMzYzYzk2MDA4NDVmOGE0OSByZWxlYXNlMjctbWFpbnQKKzgzMTQ2IGQ4NmMxODU2OGU4OTc1NzRhNWExMmZlMGIyODBmNjFkNmVkYzUzMTIgcmVsZWFzZTMxLW1haW50Cis4MzE0NyBkMzNlYmIzZWYwYjEwN2Q4NzVhMjk3NjgzM2U0YTFhYmIyOGFjOGFmIHJlbGVhc2UyNi1tYWludAorODMxNDggOTA0YjNhMTYxNmYzN2MzODI1OWQ4Mzg4M2YzMDU3ZGNlYTAyYzk2MyByZWxlYXNlMzEtbWFpbnQKKzgzMTQ5IDllMzAzZDY3MTVjZTg5YWE2NmM1MzkwNzlkYWNiNzk4Mjk5YjIzODQgcHkzaworODMxNTAgOWVjYmRlZmM5ODQ5YWI5MDlhMDNiYzYyYmU5ZGU1ZWZiNGJiNjM5ZSBweTNrCis4MzE1MSA1MTNlNDk4YjIyM2MyYTZkMDcxYmUyOWE3OTNmMzZhZWUyMjEyZWMwIHB5M2sKKzgzMTUyIDEwY2UwNDE0MDA5Njg4NGMyNTFhMjQxMjBiYTUyYTNmZDJhNTRmZTYgcHkzaworODMxNTMgZmU4YTJjZTkxNGVhOGNkYWFjMjdhNThlOWVkYzk5YjAzZWFlMzZmYyByZWxlYXNlMjctbWFpbnQKKzgzMTU0IGZkYjcxZDZjMTgyMjRmODEwZTJjOGZiYzRjODdjZjNhZmI2MTFlNjMgcHkzaworODMxNTUgZWVjYzAxOGFhYzNlZGRkN2JmYzgwOTU3MmY0ZTU4OGVlZDdiZGY0ZSByZWxlYXNlMjctbWFpbnQKKzgzMTU2IDU1ZjQ1ZTkwNjc0ZDZjMDU1ZWFjZmZkOGI3NDRiODE2MmYyZmJhMWUgcHkzaworODMxNTcgZjZiOTI4MDhiOWIzNDM1NmU0MzIzYWRjODA1MGE1ZGQ4ZTZhYzc1OSBweTNrCis4MzE1OCA3NGIxNmY0MzllMDdiYTA0MWFlZWI0M2I4ZGEwMjAxNzUzMjAwNWRjIHJlbGVhc2UyNy1tYWludAorODMxNTkgNGQzZGUxNmQwMmNjMjg4ZWY4Y2JkOGY0ZGY5NGRkZTM5YmZhOWE4YSByZWxlYXNlMzEtbWFpbnQKKzgzMTYwIGMzYmUyMGMzOTBhMjcwOThiMDJiZTM4Y2IxOTM0MTRkNDlhOGUyNmYgcHkzaworODMxNjEgMmNlZDFjY2QzNWVhNDBlYzk4YTE1NTZlNGVlZjAyMTUxYTcxMTVkYyBweTNrCis4MzE2MiA2YTk5ZDkxYmUwZjhiY2I4OTgyYjE5ZGYxYjU1M2M4NjcyNTdiMzE2IHB5M2sKKzgzMTYzIDdhNDFlMGM0ODg1NTBjMzAzZmY2NTQwZTE4Yzg0MDAwYjhlMjc2MGYgcHkzaworODMxNjQgY2NiMjE5OWMxNmJhMGVlMjEzNGJkYWUwOWI3NjY0ZTNiN2MyYTRiMSByZWxlYXNlMjctbWFpbnQKKzgzMTY2IGY5YTAwN2FmZDQwZjM3MmY4ZGVhYWRlYjUyOGMyYzk1MmNmMzgzMWYgcHkzaworODMxNjggMzVjMTQ1NjIzNDgwMmUxMTgxZWM4NGE0NzM0MGY4YzViNWQyN2FjNiBweTNrCis4MzE2OSAzZTliOTJjZmNhY2M1MWY3YjQ0NGEyOTVlNDg0NjY1MGIyNTQ2MDJiIHB5M2sKKzgzMTcwIDA5NzA1NzcwMDllMDU3MTdkMGM1YzAzNmI3OGU4YzdiMDEzYzViZTcgcHkzaworODMxNzEgYWRlZmQ1YzAyMzVkZmIzNDE4Mjk4N2VhMmU5MmZiNGY2YzU1MTczYiBweTNrCis4MzE3MyBiYzAzNDc2Y2U5MDE5YjAzYTI1NzM0NWI1N2I0ZTZhZmYzNGYwNjdhIHB5M2sKKzgzMTc0IDBiODQwOTRiMTUxNThjZTY0M2FkNDM5MDZiZGQzNDNiYTk4ZTk0NjQgcmVsZWFzZTI3LW1haW50Cis4MzE3NSAzMzU1MzU2ZjFjNzRkNDQ4YmE1ZTUwMzYyNmFlMjk2Y2RkYjRhMjFjIHJlbGVhc2UyNy1tYWludAorODMxNzYgNTUyMjQzMzE1MGUxZDk4Y2IxNWUwYTlhZDk5NzcyMjMwNWM1ZjJmZiByZWxlYXNlMjctbWFpbnQKKzgzMTc3IGY5Yjg2MGVmMjRiYWQ5MjEyOTg2NTA0MWExODBjZjM2MWJjZTE2NjUgcHkzaworODMxNzggZTFjM2FkZmE1NzQ0ZGY3MzJkYmY1MTQ0NTJkYmNmYjliOTNlMmJmYSByZWxlYXNlMzEtbWFpbnQKKzgzMTc5IGRmZTAwOTVmY2FiMGY2ZjVjOGNjN2NkNzQ3MWE3MjVkMTk3N2E5NmYgcmVsZWFzZTI3LW1haW50Cis4MzE4MSAyZGY3MzM5NTFiYWI0N2MzNTc3MDE1MDEyZjcyMGMxZmMxNTVjNzcxIHB5M2sKKzgzMTgyIGYyMTRhZDA5YzM4NDJkMTA1NDQ2MDI2MTliZGJlODkzYjVhOGI3NzIgcHkzaworODMxODMgZTJkNjJiNWE4NzMwMTFlNmQ5ZTZmYTFmZjdmYjA5ZDIzYWE0ZTUwMCBweTNrCis4MzE4NCBlOTE4YWZkMzUwODY4ODQyZDk1ZGEwMjlkMGI4NzI0MzNlOWFiZDY3IHB5M2sKKzgzMTg1IGZkOWI0MjFjZGJhZjU1YzU0YzdhMTU0YzdkMGY5MThmOTdmNjk4MTEgcmVsZWFzZTMxLW1haW50Cis4MzE4NiA1YjViY2Y0YjlmYjAyMWE2ZTAxMjFkZTQ3YjM4NTVmZjA4NDQzNWRhIHB5M2sKKzgzMTg3IGMzZjU4MzNkYjg0MzFjZGVlM2E1YjEyNDM3ZTY5ZTRjOTdjNWJmYmEgcmVsZWFzZTI3LW1haW50Cis4MzE4OCA2ODVkMzkxOGYyYTVlMWJjOTQ0MTdiZmI1OTk3YmI1ZDI2ZjNiZjVkIHB5M2sKKzgzMTg5IGI1ZjNmNzQyMzMxODY3MTk0ZDAwOGJkMDRiNTFkM2NjMTllZDkyOTkgcmVsZWFzZTMxLW1haW50Cis4MzE5MCAxY2Q0NTRkYTQ5MjhiM2VjYTY1MjRmZjc1M2FhMTc0MjljNGQ4MmFlIHJlbGVhc2UyNy1tYWludAorODMxOTEgODAzMjUwZjVjNGMyNjhmNDQzYmUyN2FjZjM0NWE1MjIxZThhYzQ3ZSBweTNrCis4MzE5MiAxNmY1Y2ZiMTZjNmFjYzI5NmM0YWUyNDc1NTBlYTM1N2MzODE2YWU2IHJlbGVhc2UyNy1tYWludAorODMxOTMgNDNkYzEyOTg5MmFkZGJhMGFlMDE4YzcyYmQ3MWQ5ZjRlOGJiYWE5MyByZWxlYXNlMzEtbWFpbnQKKzgzMTk0IGU0YWIwZmJiYmM5NDYwZWNiMDcwZDViM2Y3NjlhNzdhYzNjMjlmMTcgcmVsZWFzZTI2LW1haW50Cis4MzE5NSA0YTdiMzk1ZWRiNjlkNzZkZGMxMjc4Y2YxODNkYjI5YzI5YTljZGRhIHB5M2sKKzgzMTk2IDVlZGNlMTRiNjI4NzczMjZmMDBhZmRmY2E0MzRiZDI0OTUxY2FhZmYgcHkzaworODMxOTcgYWM3ZWI2ZWFlZjY4ODc3Y2Y4MjBhZWZlYWY1ODM2ZTgxM2MyM2MxNiBweTNrCis4MzE5OCA3NGZkN2U4MGIxYmU0MjM2ODhhNWU2NjRlM2EzMDhiZDFkZWYwNDg4IHJlbGVhc2UyNy1tYWludAorODMxOTkgNWQ0NWM2NTEzNDhiZTNiOGYyZjU5YmY2MjE4YTZmNTYyYmM0YzQ4ZiByZWxlYXNlMjYtbWFpbnQKKzgzMjAwIDMxNWMyYjUyNGM1OWU5NTk2MTE0YzQ1ZDJmZjA3ZjY4YjY4OWEyZWUgcmVsZWFzZTI2LW1haW50Cis4MzIwMSAzMDY4MzNlZjExOWQxY2I1ZTljYWI1MTVhOTAxODk1OWRlY2Q2MGI4IHB5M2sKKzgzMjAyIGJiOWVlZjhkMWFjNmE0ZmM1OGQzZjVhZDk0ODVlZTJhNmUyMmRkZTggcHkzaworODMyMDQgOGU4Y2IxNjhhMDg5Zjc0NmFhMTcwMDA0ZDRiM2Y5NGRkYjY4ZmNmMCByZWxlYXNlMjctbWFpbnQKKzgzMjA1IGUwYmNiOTcwMzQ0MmRhZDg4NGU0M2Q5NzFlNWMzMzc4ODRlYjVhOTAgcmVsZWFzZTI3LW1haW50Cis4MzIwNiA2ZDMxYjYwMzcyYzQ4MzdjZmYxYzZkMjI2MTQxNjY4ZjJkOTI4NmRmIHJlbGVhc2UyNy1tYWludAorODMyMDcgMTc0M2RmZWViOWIwM2Q2YjdiNTk4NGEzYTA0OTdkMTE5NGU5ZTJhZCByZWxlYXNlMjctbWFpbnQKKzgzMjA4IGVhM2I1MzUxMzZlN2Y4NTMyOWU0Y2ZkZTUxMzg3NTQ4YmEwMTg0OTAgcmVsZWFzZTI3LW1haW50Cis4MzIwOSA5YmNiYzM0Mzc3OGYzY2RiYjkyODBkMmJkMGViOGEzMjRlM2MyZmU1IHB5M2sKKzgzMjEwIDMxMTljNGQ3Mjc2YjE1ZWRkNjE4OTlmOGQ4ZWFhMjEwMjIzYTMzODUgcmVsZWFzZTMxLW1haW50Cis4MzIxMSAwYmI0N2M1MWU5MzNmODY4ZWUzYjRhZjgwNjYzYWI5N2Q1NGY0MDczIHJlbGVhc2UyNy1tYWludAorODMyMTIgYWExOWE3Y2MxYmYzNTJiYmRlODYzZjlhZTFiYzZhYTQ2MDU3ODZiZCBweTNrCis4MzIxMyA3OWUzNzY4MjRiMzg4YTc2YjJkNzJkMzQ2MWI1MTE0OWE2NTNkOGFmIHB5M2sKKzgzMjE0IDAxMzJlNGVlOWU3ZjI0MWMwMzBjNTY1YmFhNGU2OWJhNTk5NjM0ZjIgcHkzaworODMyMTUgZDU1ZDIxYzM5NmM1Y2QyMTliYzIzMjQ1OWQ3ZTFmYzViMzA1MGZkNyBweTNrCis4MzIxNiBiZTZkMDE0ZGY5NTYwYTlkZTVkZTc0ZDllYjRhZDc2Y2E1MzhkZjdkIHB5M2sKKzgzMjE3IDUxNDY2ZDY3NzIyZTA2MTAxMWJkMTI2MmIxNGRhZGQxMjg1YjkzMDIgcHkzaworODMyMTggM2Q5OTY5NjY4OWY5YjJhZDkxYmViMmQwNDUyYmQ2NzFhZDZjZDBlMCBweTNrCis4MzIxOSBlMmUzMmE4Njk4MTBkZjhmN2MxYWYxNTZlOTBjZTgwZWQ2ZTI2ODU2IHB5M2sKKzgzMjIwIGU1YTJmNTBmZWU2NGUxMjMzYTcyOGRlNjU3YWRkY2ZhODg0MzdmM2EgcHkzaworODMyMjEgMDcxNjA5MDYwZjA1NWFmOTM2MWE1ZWEzNzIxN2FmM2Q2YmFlZGQ1MiByZWxlYXNlMjctbWFpbnQKKzgzMjIyIDUyYmMxOTQwNWMwZjMzMjNhM2Q1YjUyMDBiOTJlMGYwMzM0ZmMyMzcgcHkzaworODMyMjMgMDU0ZjMyNzllM2NjZTk1NjBiMzk1NjQ1MWUwMmFhNWIzMjg4MzM2OCBweTNrCis4MzIyNCBlZTM3YmNiOGYwM2U3MjJlZWY5ZjdlZTg5ODQ3ZDQ0YzQxNzUwYzFkIHB5M2sKKzgzMjI1IDA1NjQzNjA2NTI5MGY3MmI1ZGY3ZDMwYjcwZjNmN2UwZmNhMDJiYmYgcmVsZWFzZTMxLW1haW50Cis4MzIyNiBhMjc0NjhhZjVlYzJkYjViYTY0MzRkOWM3NWY0NmI1NTU3NGIwYjQ3IHB5M2sKKzgzMjI3IDA1NDBlNjdkNzkyNDFmNzkyNTlmY2RhMTNkODhlNGUyZjQ5OWUwM2QgcHkzaworODMyMjkgZjZkM2JmNGZhYTlhN2I1ODU3ZDgzZDNiMTVmMGVlZGUyMWE0MDcwZSBweTNrCis4MzIzMCBmMjBmZjk5YTI0Mjc1ZjJkZmQzMDI1YTFkMjM5NWUyMTllYmZmNWViIHB5M2sKKzgzMjMxIDgzNDcxNWZhZjE2NWE1MDBiZTk2MWU0YzIwM2FjNGRjZjk5ZjYxMTUgcHkzaworODMyMzIgYzU1ZmFmNDc0NTllMmViNzczZTc0Y2YzYjNiZmYwYzQ5OGY2MzQ5NiBweTNrCis4MzIzNCAxMjUwYjA2OGYzMTcwMWQ5YWFjYTJjN2YzZWNhOGE2ZTI2MzE2NjNiIHB5M2sKKzgzMjM1IDk0YjM5MDNkZTEwNzZiMmIzMjU2NzVmNTk5ZDUxODZlMmU0MzdiNDggcHkzaworODMyMzYgOTFjYmI1NWUyMGJlNTRmYTI1OWJkZGRiY2Y5NDRkN2NjZTY0ODQwYyBweTNrCis4MzIzNyAxNjE4OWI3ZGEzYjYyZjQ2ZjdlNmI2YTZmNTI4ZmZkYTNmNGUyMDAyIHB5M2sKKzgzMjM4IGY0MzViN2I5ODY5MDk3YzdkZDM2N2JmMDA2ZjBlMjIzZWQyYjRjYmMgcHkzaworODMyMzkgMjlhYjUzNmNmZWY2N2YyOWQ2OGExNWQxMTdkY2Y3ZTBkYzc0MWRmZSBweTNrCis4MzI0MCA5MDIxMzFiMzE5MjI3ZDgxOGE3ZTI4NGUxNzE0NTVlOTUxNjc0MDRjIHJlbGVhc2UzMS1tYWludAorODMyNDEgYjc1Y2EyNWExNDBiYWNjN2VmYmU0YjNjOWViMTA2YTM1MGQ3OWRlMiByZWxlYXNlMjctbWFpbnQKKzgzMjQyIDg5ZDc4YjY2N2QwN2JlNTQxMjA1NmIyYTA0NjYwYTRkYWQxOWM0NjYgcmVsZWFzZTI2LW1haW50Cis4MzI0MyA0YWUwZTEzZTk0NjYzZWI3MjNlZGVmZWY4MTVkZWE5MzlkYTE0NWFlIGltcG9ydF91bmljb2RlCis4MzI0NCA5NzA3Yzg1NTE0OGY2OGU0ZGRlMTI2YmMyMTU2MTM4MjI0OGEyYTU2IGltcG9ydF91bmljb2RlCis4MzI0NSA4YTc5Y2FhNGY0NzMyNzFkZWQ3YmQwMmNiN2RhMWQ3YWRjZDcwMDVkIGltcG9ydF91bmljb2RlCis4MzI0NiAyN2M2YTk0ODg5NDhmZGQ1Nzc3YzM2NmYyM2EwZGRmYWRmZjI5MmM0IGltcG9ydF91bmljb2RlCis4MzI0NyBhMTVlMTBkMWNkYzBkZmY3OGUwODc0NzU1NzNmN2Q0NzU5ZTc3ZmU3IGltcG9ydF91bmljb2RlCis4MzI0OCA5YTc0Yzc1ZGQ4MjUyNWZiMWE0M2ZmZTA1ZDBhYzNjNjQ0Y2M2M2E5IGltcG9ydF91bmljb2RlCis4MzI0OSBlZDA5MDExNmI3MzRmN2MzN2UyMDZiOWFjODU2ZGVhZjYyNjg3MTljIGltcG9ydF91bmljb2RlCis4MzI1MCA2MjE5OTU5MTA5MzkyZTBlNTk1MzEzZmYwMmUyMTBiM2QwMDE4ZTNmIGltcG9ydF91bmljb2RlCis4MzI1MSAwOTgzNTZmNWM4NDYxZDM0ZGJlMTdhOTQxYTJjNzE0YjAyZWJlZjU4IHJlbGVhc2UyNy1tYWludAorODMyNTIgMzI2YjE1ZDhjMzQxMzY1ODc1Mzk0YTk3ZWQ4Yzk2MTY4NTIwODBiNiBpbXBvcnRfdW5pY29kZQorODMyNTMgZGUzZmZmNDI3MmM4NGI4ZjQwMjRjYWM1ZjllNzMzOTlkNWQ5ZDEzOCBpbXBvcnRfdW5pY29kZQorODMyNTQgODA3YmVlZmFkNTFjNGJlNTY3ZDNhY2ZlYmQ0YzUzZWU3YzU4ZTlhNyBpbXBvcnRfdW5pY29kZQorODMyNTUgMDYzMzgxNTdiNGY3MDgzZTBiOGRkMzc0NzA1NjRkYjRmYjQxZTMzYyBpbXBvcnRfdW5pY29kZQorODMyNTYgMDRlNDkyNWU1YThjZDZjYTkxMGQzMWE4MjI4NDBkNTZlY2ZlZTY1YiBpbXBvcnRfdW5pY29kZQorODMyNTcgZGM1ZGEwMjEzNmU5ODk4MmMwMmM4ZTUwYjU2NmM1ZDM2Nzc2YThmMSBpbXBvcnRfdW5pY29kZQorODMyNTggYTRlMGI3YWY0YmE0NGIwMjA1N2VkODQxMDMwMDZkYWFhYzU3ZWZhMiBpbXBvcnRfdW5pY29kZQorODMyNTkgYTk2NmMzZDQzYTdlYWE2MTEyNDBlOWY4YzUxNmM4MTZiNTJmNDJkZiBweTNrCis4MzI2MCBjYjE4YmM4ZGQ0NjkzYTg0Y2ZmNGRhOWU3ZmM4YjgxMzM2ZmM3NWViIHB5M2sKKzgzMjYxIDBhMTc0OGUxM2RlOTZkYzU1N2M1ZWFkYzAxNzMyODQ0M2UxYzM1OTkgcHkzaworODMyNjIgMGY2YTFlNDc2ZDMxMGNhZWYwNDMwMjVhMzQ4ZTZlZjg4NzNlMmEzNyBweTNrCis4MzI2MyA0ODU1N2RiMGVlZWExOGY4OTI1MzcxZDVhNDU0NTIwNzQ2YjMxNTVmIHB5M2sKKzgzMjY0IDI0OTc1YWFkNDI2ODA5YThiMDRjMmM3N2VjZWM1MjIwZDRlNmFiZjkgcHkzaworODMyNjUgNzExMWI3OTdlYzExNWZjMzRhNGNmYmU5ZDVkZGY4MjQxNTBiOTRiZiBweTNrCis4MzI2NiBjNWJmZTE4NjBhNWQ4MGUwZGVkZjdmMjNjMzdiNzg3OTAyNzllNTk4IHB5M2sKKzgzMjY3IDI5NDEyM2FlZDQ2YjY1MTBkZTNlNjg5N2Y1MWM3ZWUzNGEzNmQxZmUgcmVsZWFzZTI3LW1haW50Cis4MzI2OCA5NzA0YjlkODEwZTViNzFlYjc1OTQ2OGNlOGE4OTYxY2U0NDMzOGZjIHB5M2sKKzgzMjY5IDg0MDYzM2QzNzJiY2RhZWFlYjJkODJhMGNlNDgwOTU0YWU5YTczMmMgcHkzaworODMyNzAgZWZkOTdhMDM5Mzc0OWE1ZjVlODg2YzVlN2RkNWJhNzM1ZTIyYzM4NiBweTNrCis4MzI3MSAwMzc2ZTY0MzVmNTdjMTJkNDVlMTY4MDUzYmI2MTEyZGZjMzE0OGJkIHB5M2sKKzgzMjcyIDFjNWY2MGYzODFiMjY0YWNkNmY3MTQ0ZjA3NzYzNjg3Y2Q1MzFiMDQgcHkzaworODMyNzQgYWQ5OGI1MjViNTg3YzY2YWQ2YWZiZTYyMjEyNmNiNDZkYWMyMDhlZCBweTNrCis4MzI3NSA0MGQ2YTdjMTU4MzZhMmYxNjc0MmEwZTRmNWI2NWU5YTJjMmU2ODc0IHB5M2sKKzgzMjc2IGExZTJhZjY1MzdkZmZmMjI0MWQwNDM0YzZhNjQ2NTNiYWRkZmUwN2UgcmVsZWFzZTI3LW1haW50Cis4MzI3NyA0MzgwZmIyMjZiMTEyNzA1YmY1ZWQ1M2QzMTZjZjcyOGFlMDc3NDA5IHB5M2sKKzgzMjc4IDU3OWIzMzlhYjE1ZjU2NmJiNWU0NGZmYmEwMGQ1MTg5OTNmNjlmOWUgcmVsZWFzZTMxLW1haW50Cis4MzI3OSAyOThjOTY5ZjU2NWI5NjViZjdjMWJiMWQ5YWIwNzM2Njg1YWNjNjY3IHJlbGVhc2UyNy1tYWludAorODMyODEgYTdjYzA4YjRiYTI2OWQ5YTc0YThhNDhiYTFjYjdkZGMyODMwMTk3MCBweTNrCis4MzI4MiBhYmJiNDlhZDFmYzMzMzA2OWUyNDI1NThlZTJhYmFkYjBkYzgyZDMxIHJlbGVhc2UyNy1tYWludAorODMyODMgMzgxMTgwYThmNDQ3MTJiYzEzNDQwNWQ2MWVkMjQxZGIwYmY3NjY5NyBweTNrCis4MzI4NCA5MzRiMDkwZGZlYzgwZWQ0YjdjZTRiNmIwYTcxNzRmOGZhZmNjMWE0IHB5M2sKKzgzMjg1IGZlNGJiN2NiMWZlODdiMmMxMDJmZmYxYjI3ZGZlY2I1MjAyN2EzNTAgcHkzaworODMyODYgMmM5YThlNjExMmIzOTkyMDExNjg1NDFiY2VlYTU1ZGE1ZTU3NmJhYiBweTNrCis4MzI4NyA0NmQyZWM3OGVmNzk1NzZjYTViOWM2MzU3NGM4MTNiNTU5MjkwODY0IHB5M2sKKzgzMjg4IGJjZjkzZTM3NjZlOGU0MDNiZTMwYTE4NzU3NTA3ZDk1YmY5OTk3MmIgcHkzaworODMyODkgNzhhM2RiMmY3ZTBmMTcxMGVlOTFiOTJiYmE2MmE1YzFjZmFiMDU2NSBweTNrCis4MzI5MCAyMGNjOTMxNzk2OTU4NmQ5ZmRiZDAxMDQ4NmZkNWFjNDY5M2ZhYjA1IGltcG9ydF91bmljb2RlCis4MzI5MSBjM2I2NzNiOTQ2MTIzZjkzNTMyYTAyYjk1NDAwN2MxODMzOWFkOTFhIHB5M2sKKzgzMjkyIGI4MDNjYzJkNmE1Y2JmNzdkMWE0YWM3YzA3ZDcwYmIyMjRmNDk2NTQgcHkzaworODMyOTMgNjcwZDRjYmYxNDY0NTIyYWI1NDA2ZWZjMTYxMDcwM2Q3MDA3YzllMiBweTNrCis4MzI5NCA3ODcxYWFmMTExYTI1ZDI5OTAxNjk0YzFiODViN2VkM2YyNjE3Y2NmIHB5M2sKKzgzMjk1IDEwMDJjM2RjOTBkMWE1YTdiMjkyMDc2NWQ0N2FmMjYyOGQxZTNlMmIgaW1wb3J0X3VuaWNvZGUKKzgzMjk2IDQ2NzAxOTU4OGZjYzdiMjM2ZGQzZWZmOTZkZDc5MjlkYjEyNjJhNzYgcHkzaworODMyOTcgMDhiOTQzYTFhOTM0NGQzYzgwYzA2MjQzNDAzMGI1ZjNlZGU4OWQzZCBpbXBvcnRfdW5pY29kZQorODMyOTggYzdkYzVjN2I3YWYxOTVmNzRjNjY2YTYwNjA0MDcyNDRhOWVhNWI3YyBpbXBvcnRfdW5pY29kZQorODMyOTkgM2U3NDg3M2YyMWVhNTlhM2JlMjM3NDkyZTI1NzFhYWNjMDM5NGJjZiBpbXBvcnRfdW5pY29kZQorODMzMDAgOGNmNmQyNjQ0OTc1N2YyNGU3OWRhNWJiNGRjZjAyNDliMGM2MmRmMCBpbXBvcnRfdW5pY29kZQorODMzMDEgNjVlZTBiYzk3NDc1ZjEzMmQ1ZjY3MWE2ZTQwOTQ1ZTA5YTQ3OTlhNiBpbXBvcnRfdW5pY29kZQorODMzMDIgZDZlYmVkY2Q2ZWM0ZThlNTQ4NWYwMWRhNjZiOGQ3NTA3ODAzMzdkZCBpbXBvcnRfdW5pY29kZQorODMzMDMgNTEwNWMxMmMzMWIyN2Q5YjI4NzkyMjg0OTJkNTQ1NjJmNDFlZmM3MyBpbXBvcnRfdW5pY29kZQorODMzMDQgODgyZmQ4NTVmMTAyYjQzOTJlZjEzZDlmNDBmNjg4MzE5NTA0ZTVhMCBpbXBvcnRfdW5pY29kZQorODMzMDUgODhhZGI2NGE3YWZkOWJlN2JlMmM2YzEyNzQ0ZTAxMjUwMjAxNzRjOSBpbXBvcnRfdW5pY29kZQorODMzMDYgMDA0OTYxODAxZDE4NjU2MjY2YWM1YzU3YmUyMzA3MzE0NjU5YjFjYiByZWxlYXNlMjctbWFpbnQKKzgzMzA3IDg0NWNlZjJlYjFkN2M3ZTczMWM2NTJiNTE5MWY5ZGQyODFkYTE3ZTcgcHkzaworODMzMDggN2M0YTc3NjA0MDI3NzMyZjYwMDQ3NmY4MzVmNGUyYWI2NzE1NDg0YyBweTNrCis4MzMxMiA2NjFlNGJmODVjNTg4NWQyZGMwMjBiNmEwOGFiNzRjN2YyNWIzMTFjIHJlbGVhc2UzMS1tYWludAorODMzMTMgYzJlYTA1MTYxYzkzMDk3YzQyMGY0ZDVkMDhiMjg0YTRiY2MyZDNkMSBweTNrCis4MzMxNCA1ODk0NTkwZTljOGQ1ZmFiYmJiNzBiMmEwNjY0OTI3YTMyNTRkOGM5IHJlbGVhc2UyNi1tYWludAorODMzMTUgYzNiMTM2MjY2NTM4OGFjOWUwMDhkOWRkMzI2Mjg3MGRkOTg1MmJkNiBweTNrCis4MzMxNiAzMmQ5NGYzMTZkYTk4NDdmZmUyNmI0Y2IyMjc0M2NjMjUzZjIzYzQ1IHB5M2sKKzgzMzE3IDdhYTk3NTc3NzIwMjNkYjE0NDY0M2NkZGQ0ODZmYmJiNDU1MDNlMTMgcHkzaworODMzMTggNmIyM2FhMzAwMDMyMWQ3OWNkMTk5YWQ2ZTdjMThhNzllNGI3MDM2YSBweTNrCis4MzMxOSBlMTdiMTYwMGY0NDA2YjZlZTE5ZjAyZWNkY2MwOGY0YWI4OGEyNzZkIHB5M2sKKzgzMzIwIDU1MGIzOGNhZjVjMWZjN2JmYWEwMDAxYmU2NzQ4ZDM5YTRkODkwNDAgcHkzaworODMzMjEgOGI0MjY5M2U5NWI4YzM3ODNiNTI5YWJiOThiM2M1ZjFjODc3ZDFkOSBweTNrCis4MzMyMiBmNTc0YTA3MTg4NmRkN2M0YWM0ZWI4NGQ2ZjJlM2ViNGFiZTk3ZDIwIHB5M2sKKzgzMzIzIDc5MDM1M2JlY2Y4Y2VjYjljNTUxMmI0ZTZhMTI3MGY4NzNjNjc1ODIgcHkzaworODMzMjQgNTdlYTAwNTE2ZWRlYTk1NjE5MzE0OTRhOWIyMDQyNDBmNWYyZjMxNyBweTNrCis4MzMyNSA2ZjhkZWZkMDE3ZDczNmU3MDUzMmExZTA1ZTViMWI5ZWEwYTU0ZDM5IHB5M2sKKzgzMzI2IDZlMTNlYWQzODk1NjA0ODgxMTJlNmNiMWFhM2RlMDVhMzgwMmNjZjAgcHkzaworODMzMjcgYTQ1YjM4ZGNkZjE2Y2EwMDY3ZGFmMjk2ODgyZmQyMmZhZDFjMmExNiBweTNrCis4MzMyOCA3NDU1MWMwYjUxM2I2Yzk4MzIwOGJiYmJhZWMzYTI5MTFhNmJhYmRkIHB5M2sKKzgzMzI5IGZiNmExMzgwN2FjOTVhZTMxYWI1NTk5MGU1ZTA1MTkzZWRlYzVkMmUgcHkzaworODMzMzAgZmM4MTVmM2IyNzgxMjc0YzhmOGY5YWYxNTRhOTE0Yjg5ZTg5OTYxNiByZWxlYXNlMzEtbWFpbnQKKzgzMzMyIDFiNTBlNjI3YzYzYWNlNWYwMjM4OGRhMDI5YjEwNDZkNzZjYTQ4NjAgaW1wb3J0X3VuaWNvZGUKKzgzMzMzIDE5ZmYzNjAzMjdlNzgzODIxYWJlYTFmOTY4YWRlMDEyYmE2M2VhZDUgaW1wb3J0X3VuaWNvZGUKKzgzMzM1IDA0M2NhYWM2Yzg3NTkzMTNhOGJmMzc0ZDI2ZmIyODQyMGY3Nzg2ZWIgcHkzaworODMzMzYgMjllNjBjZTYzYWU1YmUwNmUxZTdlM2E4NjBkODEzOWM5NGFhY2ExNiBweTNrCis4MzMzNyBlNDg2ZDE5ZjJiMGI4MWMzYjkwNjI5ZGU0NTQ5OTk4ZTQ3NTQzNTFhIHB5M2sKKzgzMzM4IDhhODAxYTNhY2EzNDk5YTFhYTBjMjQxMjg0MTlkOTMwYWRjOGU5YjIgcHkzaworODMzMzkgNDNkMTRiYmQ2ZWIxMTc4NDJiN2JmMWY2NzNiNzRjZGNkOWYyYzI5OSBweTNrCis4MzM0MCBkZWQ1OGU0NDlkYTMzMmU2ZjU2MWYzYWI0NmNlMGQyMWJhM2ZkYWM0IGltcG9ydF91bmljb2RlCis4MzM0MSAxMjVmNTRhNzBhYjhmYmU4ZmZmNTI4OWI3YTc1YTI1NjA3ZDE5MjM5IHB5M2sKKzgzMzQyIDU5NDdiMWJiMGZlY2RjMTdlNTEzZmM3ZDRlOGQzYzI3NjI5NTVkYjcgcHkzaworODMzNDMgYjM3Yjc4MzQ3NTc0OTJkMDA5Yjk5Y2YwY2E0ZDQyZDIxNTNkN2ZhYyBweTNrCis4MzM0NSBmY2U3OGEyMDhkYjI3MGIwM2NjODk1NTQ4NTk4MzE3NjJmZWY0OTYzIHB5M2sKKzgzMzQ4IDA5Y2E0NjQ5MDcwN2VmOWRlNDNlNWNkNTA5ZDNkZTk0ZDdmYmE5NGMgcHkzaworODMzNDkgYTZiNzE4ZTgxNDQ4MGNmYzZiMzFlM2FkMjNmMGI2ODRkZWExZWEzOCBweTNrCis4MzM1MCBjNTU4NzZhNmZhM2NjMDAwYTkzYWVmZWRkYjZlMzZmNWMwMjcwNDk4IHB5M2sKKzgzMzUxIGIxMmRkYTYyZTkzYmI5NGFjMGEzZTA4MGM0NGI0NjM4YjVlZDg5ZmMgcHkzaworODMzNTIgZTAxZDI2YTM0Njg5OWM4YWM1NzllNDkwOTlkN2FiMmJlOWJkNzFiZSBweTNrCis4MzM1MyA0ZGEzYzU3MDM0M2JiMTFlMDliNTE2YTNhYjEzNGZhODAwZjA3OGFjIHB5M2sKKzgzMzU0IDI1ZjZkNTcwZTdjMTYxMjYxM2Y3ZjIxODA2MzQ0YTQxM2IyMzFhMDkgcmVsZWFzZTI3LW1haW50Cis4MzM1NSBiZTYxYzgwOGI1Mjg5NmYyZTJhYmY4NWFjYjk3ZmRmMmE2Mjk1MDFkIHB5M2sKKzgzMzU2IGUyNTBlODg1MjRkNWIwOWIyZGNiZTIwMjFjMzM1NzkyZTdiNjNhMjEgcHkzaworODMzNTcgOGJkYmQzMmMyZWJiZGQ2YTAyYmJjZDFlMjM3ZmEwMjY3ZDMyZDJjZSBweTNrCis4MzM1OCBmOWNjMDlkYWNlZGFkZDRjNTJiOTFkYTI2MGYzMGU3MmZmYjNhMmY5IHB5M2sKKzgzMzU5IGFiODlkMGY1MmE3ZjMwYjdiNjA5ZTc0Zjk2MDc4NDk2N2ZhN2Q2ZTYgcHkzaworODMzNjAgOWViNGJhNDVhNmIyODZiNmM1NjEyYzUyZTU0YTEwMjA5NjQxNTYyMiBweTNrCis4MzM2MSBlMjM3YjE1YzJiZTk5NDI0MzYyYzVhOTQ1MTU3MzA3ODU5OGVkODk4IHB5M2sKKzgzMzYyIDZlYzY2ODYyMmQ2NGQ5Y2EzMDNmZTA1NWRhOTJjOGUzODIzOTFlZmMgcHkzaworODMzNjMgNmVlZWQzNTI2NjM0Mjc0NzgwNTJhNzE0ZTMzMTg3YTI3YTQ3YmQ0YSBpbXBvcnRfdW5pY29kZQorODMzNjQgYjI0ODQxYzMwOWJlNTQ2ODE1MTFjYTQ3MzBjNDk5NjY5NjFiOGM3YiBpbXBvcnRfdW5pY29kZQorODMzNjUgMThiMjczNGY3ZjM4Y2M1ZWViMjk2ZTA3MGQ0OTlhZTMwYjRlYTk5MSByZWxlYXNlMjctbWFpbnQKKzgzMzY2IDI2M2ZhZGEyNTY1ZGEyMzNjMjFkNjRkNWM4NWM3ZDQ3YTg4YmE2MGUgcHkzaworODMzNjcgMjY1NjVlYmQ1ZTMyZWU3ZDQxNjU1OTBhMjEwMmZlMmYzMTc0MzliOCBpbXBvcnRfdW5pY29kZQorODMzNjggNmY1YmE3MTMxNmU3MTYxYjc3ZmZmZWZjMzk3YmNlMzFhNzFhMjc1NiBweTNrCis4MzM2OSBhZjY5MmVlOTBmNjgzODA1NmU4ZmY5YzkyZWIxNDczOWIxYjhhMzUyIHB5M2sKKzgzMzcwIDI4ZjM3YTJiNDQ0YmYzNTRjN2FlNzRjNzI5ZjBlMDQxNzIxYWJkY2EgcHkzaworODMzNzEgZTJhOWY2MzNkNjEyNmZhZmZjNzQyMjlmNWM1MzEzZjA0ZGY3N2ZiNSBweTNrCis4MzM3MiAxY2U5ZDRmYjEzYzI2NTIwMjA5YmE3YWI3MzkzZjQ5Y2QzNjg2MzM3IHB5M2sKKzgzMzczIDY1YWY3YmU2MTRhNDgxOGM4ZjQ0YTMzYThiMzkyYzQ5NzJiMTI3N2IgcHkzaworODMzNzQgNWIyNGQxZTE4MjY5OWQxMWZhODM4NTMzOTcyNGQ2MzkzY2Y0NDE4NyBweTNrCis4MzM3NSAyMWQ4YzQyYzBiMTA3ODAwOTY4ZDBjY2FlNTk4ZWJhZjIxMzM4MzJkIHB5M2sKKzgzMzc2IDI4MTJiZmQ4NGI1MDAwYTVhYzU3ZmUyM2UzMzk5OTIwYThkNjNkZWIgcHkzaworODMzNzcgMzg3MDQzZDIwODBiNTNmZDgzYTE5NzkyMTYyM2M3ODY3YTVmZmQ0MyByZWxlYXNlMjYtbWFpbnQKKzgzMzc5IGYyOWMzMTlmZjU2NzlhM2Y2NDFlNDg4ZjE2OTE1ZDY5MTE5YzE5ZmEgcmVsZWFzZTI2LW1haW50Cis4MzM4MCA0NjAzYTVjNDY3NWE0MzIwMjU1NTA4ODc5MzliZjA2YmQ0ZDUxMzc4IHB5M2sKKzgzMzgxIGU4MDU3N2Q1NmE4ZmM0ODNkMDJiZGQ0MmVkOThjN2Y4ZmQ3MDI5OTUgcmVsZWFzZTI3LW1haW50Cis4MzM4MiBkY2IxNmQ3MDM2NTM4YTFkMzdlMDBhODJhMTcwMWI0NjE0NDhmY2E5IHJlbGVhc2UyNi1tYWludAorODMzODMgZWRkYTc1OTZjODMxMjc5NWZiMjk1YzEzMWY3NzJjZTA5NTEzM2ZjMyByZWxlYXNlMzEtbWFpbnQKKzgzMzg0IDc4YmNhZmYwZGQyYjAyYWNiYmI3YmMxOGE2ZmM1NzFjODg3NmQyNzAgcHkzaworODMzODUgZGFkMDg1YzhkZTA5OWIxYjY5NzUwMmQyMjllOTJhY2RiOGMwN2QyNyBweTNrCis4MzM4NiA2ZGU3MGQ0OWI5MTY1YWQ4NWY2NzFmYjU4MWE0MTY1OThhYWUyZDFiIHB5M2sKKzgzMzg3IDk3MGI3Y2Q1MjQ1M2I1ZWEzN2NkYjMxMmU4ZDc3MGJhNDc0ZmE1YmUgcHkzaworODMzODggNzM0NDQyN2U4N2RmY2IzNTllODQyMDFhNTI0MTNmNTUzZDUxYjE4YyBweTNrCis4MzM4OSA2YmYyOTJlOTA2YzJjMjNlYjEwNGEwZGY0MTQ4YWU5Yjk0ZTc5MzYzIHB5M2sKKzgzMzkwIDNjNGJkODYxMzM4M2U0ZDYxNTAzOThkYTM5OWIzMDg0NDczY2M1ZGUgcHkzaworODMzOTEgNTQxMGUxMTY3ZjdkM2M1MzU2NDg0Njg1ZjBiZGE0OWEyYzUzMDAyOSBweTNrCis4MzM5MiA2ZWYzMmQyMDhmY2M0ZjRlNzVjOWEyZjMxNzViYWNhMmY0OTA2ZTMyIHJlbGVhc2UyNy1tYWludAorODMzOTMgMzFmNGM0YjZjNDQ1MDMzMDZmM2E0M2YxNGM3YTJmY2E2Y2E0YWFhOCBweTNrCis4MzM5NCBhNGFkMTA5NzU3NzZjNThlOWY1ZTQ1NzFkNzFjNWIyOTc1ZTc0MWQzIHB5M2sKKzgzMzk1IDY2Y2IxNWM2MmRiNDJlNmQ3NTBhZTZlOWNhNmU3NWIyYTI5ZjFlZjggcHkzaworODMzOTYgZjJmNzk2MTlmNmE0OTQ3MDVhODIwNGUxN2VkZjQ5YjE1YWE2MjBhNSBweTNrCis4MzM5NyA1ZWUzZTI3MTJkN2RjZmJmN2EyMzhkZTI4M2RkM2FjMzg3ZmQyYWNhIHB5M2sKKzgzMzk4IGNiMjMxYjc5NjkzZTQ2ZGZlZmUyYWZiMDE3MmEzODNhOTU5NWQxNDggcHkzaworODMzOTkgNmQzNWQ2ZTU4NTYyMWZmM2U2ZjFkNjQzODRiMDg1NDBkZGFiM2E3NiBweTNrCis4MzQwMCA4OTdmZDUxMDUxYmI2ZjI2YWVhMGJjOWVlYTEwNWFjODhkZTNiYzAwIHB5M2sKKzgzNDAxIDM5OGZhN2I3NzUzYWUwYTY2ODY5ZTk2MjJhNmM4NjRjOThkNmYwODcgcmVsZWFzZTMxLW1haW50Cis4MzQwMiA1MWFhZDUwOWMyMGYxNTE1OTU1MWFkOGJkMzY2M2IwNzdhOThjODI4IHJlbGVhc2UyNy1tYWludAorODM0MDMgMWYwMjcxYzAzNmUxNjhmZTRhYjIwNDBjMDE5MjlhZjlmZTcxODY2OSBweTNrCis4MzQwNCBjYzJmODY0YmFjOWNlZTNiOGM4N2E5YjM0NDRiZTYxN2RmMzIyMmEzIHB5M2sKKzgzNDA1IDEzNWI5OTFkNjViNjBlNjg3NTFiMDVkNTM3YjY2ODBmNGZjYjk5MzQgcHkzaworODM0MDYgY2Y5ODlhMzRjNzdlMzAzOWJhMDU3NTViNTIwMWE4NTIzYTYzN2JlOCBweTNrCis4MzQwNyA4OGMzZGI2ZjQ3OWU0M2I5Yzg3OGQ1NWU2Y2Y2M2VkYmY5MDkxZjZhIHB5M2sKKzgzNDA4IDIyOTkzZDI3ZmM4ZGVlNGNiZTBhMmYzOTM1MTgxZTFiMjE2MThjOTUgcHkzaworODM0MDkgMGJlNTUwNDIxM2QzODBmMGZiYmNhYjk0NjFkMDNiZTE4Zjg1YjgyNyByZWxlYXNlMzEtbWFpbnQKKzgzNDEwIGUzMTY1ZWVhYTcwMGM1OGQxYTYwMjlmMGQxOTEwODcyOGRiODM4ZTMgcmVsZWFzZTI3LW1haW50Cis4MzQxMSA3NDU5OWQzOTU0ZTI4ZDRjOWY3NDYxOTNlMzU3OGRiNzY1ZjczYzgxIHB5M2sKKzgzNDEyIDBmZTU1YzI4NmVkZmQ0NzI2NGM5N2I4YjAwYzk3MDc2ZjkwYTA1ODMgcmVsZWFzZTI3LW1haW50Cis4MzQxMyA3NjYwNWNmYzRjZjM4M2JjOGViZmZmMzA2MWNjMDNmYWE2OWUxYmY4IHJlbGVhc2UzMS1tYWludAorODM0MTQgNjI1YzIxZGRlMTM4MGY4MWY1NGQ0YTJmMjZjMGZmYjgyNjFkOWU0NiByZWxlYXNlMjYtbWFpbnQKKzgzNDE1IGM4M2JhNTUxNTFiMWYzMGQyY2VkNTk4M2I3NGVkMDk0MDI2NTFhOTggcHkzaworODM0MTYgMzAyMDJjMDAxNDAxNTRkNTNkNDViM2M3NjY0MjI3ZDgzOTU4Y2IzNCByZWxlYXNlMzEtbWFpbnQKKzgzNDE3IGVmNzVlY2QwZTFhN2IzMmE5NTQwYzQyMmU2YzJmNjYzZGE1YzhlNTUgcHkzaworODM0MTggY2MzMzUwOGU4MGNkNzgxOTI5N2I5YTFkYWU3YTM0MTE1ZmZlYzJiMyByZWxlYXNlMjctbWFpbnQKKzgzNDE5IDcxZmM5MmI4OGIxOWI4MDFlODk4OWIzOGQxZWJlODZhNmEzNzA1MmQgcmVsZWFzZTI3LW1haW50Cis4MzQyMCAwMWNiZDkzMjAyNjQ0OGE3NTEwNWNmZTA1ZGEwOTY4NmU1YmYzNmRhIHJlbGVhc2UyNi1tYWludAorODM0MjEgODQzNjNjNzQ3YzIxMjBhYTQyYjQ4YTFiYTA0YjE3ZTA4OTJiZTJiNiByZWxlYXNlMjctbWFpbnQKKzgzNDIyIDllZTE5NmE3ZjlhMmEzMmJlNDRmODc2MTFlZDU3YTJkMmMwNjU4MjggcmVsZWFzZTMxLW1haW50Cis4MzQyMyBkYmM4ZGE4MTM2MzBlNjEwZjBmZTUwODg1NDZmZmVlMDIxNjlkYjIzIHJlbGVhc2UzMS1tYWludAorODM0MjQgOWRlMDdjNTVmZGRhMjc2OWVkYzU3OTg1ZmM5OTc3NjgyZjcxZTAyMyByZWxlYXNlMjctbWFpbnQKKzgzNDI1IGJjNjZlMTU2NmExOTI4NDcyYWJmMmFjZTE4ODhiMDIyZjkwMzI3MDkgcmVsZWFzZTMxLW1haW50Cis4MzQyNiBiZjVjNjMwZGFhZjc1MmQyNjg0MzNiZDgyM2EyNzNhOTA0ODE1MTRiIHJlbGVhc2UyNy1tYWludAorODM0MjcgOTNiM2FlNjNkMmYzMTM4ODQxN2ZiZjY0MDljNDFmNWQ5MWYxMzZkMSByZWxlYXNlMzEtbWFpbnQKKzgzNDI4IDEwYzFiNjE0MWQ1MzVjNWRlYmI2MGExM2VmZjVkMjA4ZmE5NTM3ODEgcmVsZWFzZTMxLW1haW50Cis4MzQyOSA5ZjJmYmVlNDIwZGFjMmExZGNkMzMyMGIxZjhmZDc4OTg5ZmZiOTY4IHJlbGVhc2UyNy1tYWludAorODM0MzAgMGRjYWU0NTVlYzA3NmRiZDM4ZjVlOWY3YjA0OWQ1Y2I1NmViZWQwYiByZWxlYXNlMzEtbWFpbnQKKzgzNDMxIGJhMzQyNzk2MjMwNjM3YThmN2U0MzJmOGNjZDE1YzU1ODAzYjg4M2UgcHkzaworODM0MzIgNjYxZTBiMGI0MGJmMWYzY2M4ZDA1YzhjYWJlNWZhMTM1NjA4ODA1NiByZWxlYXNlMjctbWFpbnQKKzgzNDMzIDIwYzcyNDRiY2E3ODAzNzY1ZTBlNjc1YTQ2YjgyNGIzMWUyNWI0YjUgcmVsZWFzZTMxLW1haW50Cis4MzQzNCBiNDkyMDE0ODRmN2ZlNWYzYTA0NWQ3M2Y3ZGViZjM5YTBmMmRhODc5IHJlbGVhc2UyNy1tYWludAorODM0MzUgOTE4MDI4NDBmMGY3ODNmMWRkNTU0NDVlNWRjYzM5OWQ0NWRjM2ZkOSByZWxlYXNlMzEtbWFpbnQKKzgzNDM2IDM0OTllZDZjYmQwNzdjZDU2YzQ2ZDI1NTM1NTE3MDMwZTJmYWM2MGMgcmVsZWFzZTI3LW1haW50Cis4MzQzNyA0OTAzZTc1Nzc0NTQ4NThhNTcxNGVjOTM5NGI2MWZjNDA4NTVmNTE0IHJlbGVhc2UzMS1tYWludAorODM0MzggNDZiMTRhMjk1MGQwMGViNzY1MzYzYWMwMWFjODlkMzkzNTc0NDkxOCByZWxlYXNlMzEtbWFpbnQKKzgzNDM5IDRmNjc5MTA0Y2I4NmJkZTY0M2MxOWI3MzBjOWEyZmM0ZDQ2YmU3ODkgcmVsZWFzZTI3LW1haW50Cis4MzQ0MCA0MDRhOWFjMWE5YTJiN2VlM2ZiNjVlNWRhMTA4YzFhNDNiNGQ2MzRiIHB5M2sKKzgzNDQxIDNjMGZmZTM5NTU3ZGVlNTVkYWQ0ZWY4ZWRkNzJkOTZlOGM5ZDBlMWIgcmVsZWFzZTMxLW1haW50Cis4MzQ0MiBhOGNmZWY4ODQwOGYzYzQ1NWNlNDM0YTc5YmIxM2VlOTkzY2I2ZDA0IHJlbGVhc2UyNy1tYWludAorODM0NDMgNzIwNzk4YTFlZTcxOTIyZmFhNzM0YWJhNWRjY2Q3N2Y3ZGMxNjcyMCByZWxlYXNlMjYtbWFpbnQKKzgzNDQ0IDc2NWJmZDhlYzk2ODk4Y2Q1M2Q5NDY3YWY2OTkyMTU2YWE1YTZiM2YgcHkzaworODM0NDUgNWFmMzYxYWRhYWU5ZmRkYmFjN2Y0MGIwOGFlMzhkMmU0Y2UzNGMzOCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ2IDc1YjNlZGRhM2MyYmQ5NTM4ZGI2OTdmMzViYjgyZTE1M2I1ZmFiMGMgcmVsZWFzZTI3LW1haW50Cis4MzQ0NyAxNDZmZWYwMjQ5ZjlmZmMxMGRmODc5NzY2ODYwMTgzY2YxZWQ1YmU0IHJlbGVhc2UzMS1tYWludAorODM0NDggNDE1ZWEyYzNjZmU4YTljMGYwODMyMjEyYTJjZmUzZDU0ZWVjNWFlMCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ5IDRhMDAyZGE3ZmJmYjNkOTY2MWI2OGIyMmU0Y2EwYjMzZmJmMGVhNGMgcmVsZWFzZTI3LW1haW50Cis4MzQ1MCAzZDc4MjNlNjg5N2I3NjEyMDA0NTM3YjI0NzZmNmIyYzc4MjNkNzllIHJlbGVhc2UyNy1tYWludAorODM0NTEgMmNhODQyZGNiZTExZTg0NGYwMWNhMmNjMTRlZWY3MTcyYWM1MmUwZiByZWxlYXNlMzEtbWFpbnQKKzgzNDUyIDQ3M2E4MDY4ZjZjNTRhNDI3MzU5M2ZkZjExYjA5YWZiYzM4NzdhNTEgcmVsZWFzZTI3LW1haW50Cis4MzQ1MyBiZWFiMmZiMjk2Y2NkYjY4MTA2NzA2MjBkMmQxY2Y2OGJkM2RkN2VmIHJlbGVhc2UzMS1tYWludAorODM0NTQgMDFkOWNhODJmZDRlNGVlMzAzZWZlYmRjOGI4YTM4MDNmZTNjZWM5YSByZWxlYXNlMzEtbWFpbnQKKzgzNDU1IGFhZDU3NjZiZjM2ZmM2Y2NkOThmMjdkZjkzNmY1MDM3YWE5Yjg4OWEgcmVsZWFzZTMxLW1haW50Cis4MzQ1NiBjNzA2Zjg2NzlkZmNlM2Y0YTU3Y2Y5MWU3YjE4ZjhmY2JlMjE3OGFmIHB5M2sKKzgzNDU3IDhjMTA0NWI5MmI2ZjE5ZDI3ZDdkOWI4MDdhNWNlN2EyYTBhZGE2OGEgcmVsZWFzZTI3LW1haW50Cis4MzQ1OCBmMDRmNDIxMzRhOTIxNzRmZDAzODYzZTcwNGNlNWRlZDE0NTgxM2NmIHJlbGVhc2UzMS1tYWludAorODM0NTkgMmJjMWZjMmQ4Y2MwOWQ3MzRkNWI4YTRiZTcyZGEwZDVmZDhmYzMxMiByZWxlYXNlMjctbWFpbnQKKzgzNDYwIDY5Zjg3ZjlkMzNlNzIyMGI2YmViMTY5NWZjODI1ZTA2NGI3Mjc2ZWIgcmVsZWFzZTMxLW1haW50Cis4MzQ2MSBiZjY4MjI1ZGQyYmNlNmQ1ZDk1NzFkM2I5YTM4MzhhZjY1MDZjMTZjIHJlbGVhc2UyNy1tYWludAorODM0NjIgOWVhNWRiNTY3YmRkOGJmZjkyODA3Njk5ZTQwZGFhYjNkMDRlMzUxNSByZWxlYXNlMjctbWFpbnQKKzgzNDYzIGM0MzJhZGFjMTE2YWQ3MTQ4ODJjM2IyNmZjZWIyNGIxNmQ0MGVhYTkgcmVsZWFzZTMxLW1haW50Cis4MzQ2NCA5M2QxMjRhODE5NWNjNDhhNWI5ZTJjYjM0OGVhYWUxMDlhZGUwOGZiIHJlbGVhc2UyNi1tYWludAorODM0NjUgOWYxZWVjYmNjMzY2MjBkZTE1ODMzM2U4NDU4ODc3YTViZDcxMGNjYiByZWxlYXNlMzEtbWFpbnQKKzgzNDY2IDE5OGIyY2QzYTZkMWI4N2I4YWMyYjkzMWExZTgxN2Y1ZWI0MDIwNmMgcmVsZWFzZTI3LW1haW50Cis4MzQ2NyAzOTVlY2FlNjAyY2IxMDFlNmRkODY1NWUwNGI2MzM1ZmZiOGU5MDQwIHJlbGVhc2UzMS1tYWludAorODM0NjggNWI3ZTM1YWExZjFkMTczYThmZDBlYzUzZGVlZDViMzEzNjdkYTg3MCByZWxlYXNlMzEtbWFpbnQKKzgzNDY5IGNiNTIyMjU3MmZjZDkzZWI1YjI2ZWQ1ZWI4NjE4YThhOTQ5ZDA5ZjkgcmVsZWFzZTI3LW1haW50Cis4MzQ3MCBjZDExZTFhMWZkODliYzE1NmU0M2MwNzdiMzIxYmQ4YzRhYjUxOTdkIHJlbGVhc2UzMS1tYWludAorODM0NzEgZjM1NDE0NjQyZGZmYTMzNWIyN2I3Njg0NTRmMGNiOGY5NTcyOGU1YSByZWxlYXNlMjctbWFpbnQKKzgzNDcyIDIyOGEwZWYyM2E3YjJlNTRhYTQyODdjYjY2MmRhYjA0Y2E5NDAzYjcgcmVsZWFzZTMxLW1haW50Cis4MzQ3MyA5MmY5NjhkODc0Yjg2ZTgxZGVlNmMxYjQ5MzUyMDlmOGUwNTMwNTRmIHJlbGVhc2UyNy1tYWludAorODM0NzQgZjQ2ZGNkOGEzMTEzNWE4MzBhNmRhOTI5ODc5ZGIxYTljM2YyM2JlNyByZWxlYXNlMzEtbWFpbnQKKzgzNDc1IDI3NTQ0ZmIwZjdmMTQ4NTkwNDk0NDcwYTNlYWI4ZGUxZjJjMzkwODIgcmVsZWFzZTI3LW1haW50Cis4MzQ3NiAxMzEyZTU5NGViZTc4NDhlNjc1MDdiMGJjMmM2NzQyZDUxZWU2NTNkIHJlbGVhc2UzMS1tYWludAorODM0NzcgOWJmN2EwZjQyZWFjMzlmNTM5NjI5MTY2OTk3NTQ5NjA5ZTY4MzI2MiByZWxlYXNlMjctbWFpbnQKKzgzNDc4IDZhZWE3MDkyOGE2YWM2ZDQ5NjZjOTZkNDRjNmFkNTMxMWRmMjM1MGMgcmVsZWFzZTMxLW1haW50Cis4MzQ3OSAxYWJkYmNmYWEwODlkMDgwYjEzNmViYWZkZDU2ODk0NDVhODlmZTdhIHB5M2sKKzgzNDgwIGYzNmEwNDA3OGJmZGJmZWIyNjRkNzkzMzIxNTZkMDM1ZWUwMzhlNDUgcmVsZWFzZTI3LW1haW50Cis4MzQ4MSBlYmQ0YjI4ZjQ2YTBmMjliYmY5ZGU1ODc4YzY4ZDI2MGIzYzFkNjg0IHJlbGVhc2UzMS1tYWludAorODM0ODIgMGRkNDgwMDM4YTg4NzJjODcyZDdlYTkxMTgxZGYzNTJiZjQ0NGQ0NCByZWxlYXNlMjctbWFpbnQKKzgzNDgzIGQxNWI0M2MyNzJmYmI2ZDY0N2RjYmQ4MTc2NWY5NDI4YWM1NDI2YmQgcmVsZWFzZTI3LW1haW50Cis4MzQ4NCA5NTAxY2Q2NDBjOGU4N2UyZWNmMTE3NjkyMjcwYmNkYTY4Yzk1ZDliIHJlbGVhc2UzMS1tYWludAorODM0ODUgOGY4YmE0YmZiZmE1MDY0NzY0YmMyZmM0NjJmZWY2NWIzMWQ0NTc4NSByZWxlYXNlMjYtbWFpbnQKKzgzNDg2IDc0MzQwNjc0OWIyZDcwNWNjMzkxZDE0MWU4OGRmZGY1MTg1YzEyNjEgcmVsZWFzZTI3LW1haW50Cis4MzQ4NyBlOGZjOWE5ZTE5OTFhMDc5OTc4NTE1NjQyY2QzNmJjNmE1MmE2ZDc0IHJlbGVhc2UyNi1tYWludAorODM0ODggZGU2ZGVmNzkzMjZjOTM2Njc2ZjFkZGFjNTExZThhZjhhYjNmMzExNSBweTNrCis4MzQ4OSAyYTRiMmZlYzgyNzdjN2I4ZjVmYjVjMzIyMDhlNjMwMmNjYzI5M2U2IHJlbGVhc2UyNi1tYWludAorODM0OTAgMmMyNTNmNmUwMmU3ZjkyNTQwOTVjOWJlMzdjZjgyOWU3ZTNjYTIxMSByZWxlYXNlMjYtbWFpbnQKKzgzNDkxIDM4ODEyOTQ4YzUzMjExMTc3Yzk5OTFkNzhjZTg4NjUxYmQ1ZmZkYWEgcmVsZWFzZTI2LW1haW50Cis4MzQ5MiA5N2NiMWRkODU2NmViMjM1Y2NlNjk3NTJlYzc4NTU2MTk1ZDY2YmZkIHJlbGVhc2UyNi1tYWludAorODM0OTMgNWZkMDllNDEwZDM2YmYzNjBlYTFlMjE1YjQyNDg3NTZhNjQ5MDFmZiByZWxlYXNlMjYtbWFpbnQKKzgzNDk0IGI3ZDVjYmJlYTE4MGNmZmRiNDA4YmM5M2QyMGFlOWQwZDE3NjY4ZmEgcHkzaworODM0OTUgNjFhZDgxYTc3NGM1NTA2M2ZiMTI5ZWNlOWRmMjg3NDdlMTkzODAwMyByZWxlYXNlMjYtbWFpbnQKKzgzNDk2IDljNzVhOTQxODdjNzNmNmE3ODk0NTg2MDAyNDA0MGFjMjdiNTczMmMgcmVsZWFzZTI2LW1haW50Cis4MzQ5NyAwZGI2NWM2NTEwZGFhNTY4ZjBlZTFiMzk2YTkwNzkwYzA1OWFjMDFiIHJlbGVhc2UyNi1tYWludAorODM0OTggMzE3NGQ1YmE0NmUzOGYxYjgwMWViYTBiNjMzMzUxMGMwNTE4NzgwMCByZWxlYXNlMjYtbWFpbnQKKzgzNDk5IGJjMTBhNDQyNzJkZmM3ZWY4ZmVhOWU3YjA2MjkyYTBmNmE3NWU0ZTAgcmVsZWFzZTI3LW1haW50Cis4MzUwMCBmZGJmY2Y5ZGEyYzcxMGNiZmJjYTg4ZWFlYjIxNGYzMzk3MzcwOTY3IHJlbGVhc2UyNi1tYWludAorODM1MDEgOGFkYTM1ZTlmNDVkMGYxMzdlYTUzYzI0MGRlMzdmMTllNDQwZDcxZiBweTNrCis4MzUwMiAyYzM2NzUwMTYxNDUxZGQ1MDJjMzEyNzlkMzQzYWQwZDAyMmMxMmIyIHJlbGVhc2UyNi1tYWludAorODM1MDMgZTQ4ZWY3MTMxY2ZiYzdmNDQwNDBkNjUyNjgyNTUzMTYxNzFlZmY2YiByZWxlYXNlMzEtbWFpbnQKKzgzNTA0IGM5NjYzMTMyMzkwZGNkYzY2YmU0MDllYWZjOTA2ZDZiYzZhNjQyYWEgcmVsZWFzZTI3LW1haW50Cis4MzUwNSAwYWFjN2I4NzcxZTE3ZmUzYTgyYjk3NTE0ZmJmODgzNTUwYTE4ZGEzIHJlbGVhc2UyNi1tYWludAorODM1MDYgOGExNDlhOWY5ZGFmNjU3MTY0NTAwNmViNGUzNDNjNjYwOGQ3NmMyMiBweTNrCis4MzUwNyAyZTk3YWViYWRlNGRkYmNmMzZlMzY0MTk3ODhjZmU4Y2VhOWQzOWE0IHJlbGVhc2UzMS1tYWludAorODM1MDggNjNiMjM0OWVmNzkwZDRmNDZiN2MwZTQ4ZmQ3NDJkNTRlMDQwMzYzYSByZWxlYXNlMjctbWFpbnQKKzgzNTA5IDcyYzhmYWI5MTE2ZWIwOGJiMWMyODNmNGE5NDJlMjUwZTkxY2Y5NGYgcmVsZWFzZTI3LW1haW50Cis4MzUxMCBkZTlmMzUzZWU4NjVkOWU1ODViMTYyZDYzYjE2NTIzYzYzMGExNzUzIHJlbGVhc2UyNi1tYWludAorODM1MTEgMzdkM2NkOGMxMGZiNDUxMTk3ZTU0ZTdiZGVmY2VkN2ZkMDVjY2EyNiByZWxlYXNlMjYtbWFpbnQKKzgzNTEyIDc1MWM2ZGQ3MWI1ZWQ1NWQ0OTVjZTQwNzUxNDFlMTA5MmYyMDA3ZDggcmVsZWFzZTI2LW1haW50Cis4MzUxMyBlYjZmOTkyNTQzMTM3MzhkZGM3OGVmMDI4ZWVhN2ViYTY2ZmEzMTI0IHB5M2sKKzgzNTE0IDE4NWUzZjcyNjZlOTBkNzQzYTM5NzFmNWE4ZDM3YWZkMGE3YzdhZjIgcmVsZWFzZTI2LW1haW50Cis4MzUxNSAzMDA4NmFhMzMxMjM1MTJhYzM0ZWY0Y2I5ZDhkMDBjZGM1N2I4MGIyIHJlbGVhc2UyNi1tYWludAorODM1MTYgZDhkYmYyNDAwZDhhMjFjOWU0ZWFhYjQ4NTk5YmE5ODg5N2U4MTVlNSBweTNrCis4MzUxNyA4YTJhODJiYjcxYzgyMjQ3ZTFkZjA4NzI3YjFiMWM2ZGNmYzgxYjA4IHJlbGVhc2UyNi1tYWludAorODM1MTggMmRjMGI3MTMxYzcyMTA4MGFkOTE2OWM2OTg0MDNmZjc4NDA2YzkyNiByZWxlYXNlMjYtbWFpbnQKKzgzNTE5IDA3Yzg0Yjk4MTQwMTQ4NjJkMDNkYTYwNDFhMDY4MDRlM2RlZDJjMjQgcmVsZWFzZTI2LW1haW50Cis4MzUyMCBmZDRiMDdhYjc5NzY5OTY0MDA2NTAxMGRjM2RlYjlmYTliMTdjMDFiIHJlbGVhc2UyNi1tYWludAorODM1MjEgMzllMTRkZjc2NWU0MzFiOWE3OGZhNDc1M2EzYzM3MmQxOTZhODMzZSBweTNrCis4MzUyMiA5MDRlZjRiYmZmNWU1NjRiZjQxNmQwNjUwYWY5N2U3ZThkNzBiMjU0IHJlbGVhc2UzMS1tYWludAorODM1MjMgYjYxNDRkYWE0MzM5YTE4YWIxMGU2ZTFmZjYyZDY0M2UyY2E5NGE0OCBweTNrCis4MzUyNCA2MWQzNDgxZWJhNzQxZDc1NzI3N2UyN2I1NzQyYmJhNzMyMDM0YjkxIHB5M2sKKzgzNTI1IDc3YmJiMDVkMzEwZTYzZGRlNmRkYzVhYzZhMzA2NjA5ZTNkYThhZTQgcHkzaworODM1MjYgOTI0NmFhZGZjZDc4OWMyM2YxMzM5YWQ1YTAxZjRhYWRhNjczZDUyYyBweTNrCis4MzUyNyBlYjc5MDQ5NWM2YTQ1MDJjOWEwZWIxNTY1Y2I2OTBkODI0NGU1MWNmIHB5M2sKKzgzNTI4IGEzNDlmYWQ1MDdhMjI0NTgxNWU1MmJkOTdmYmVkOWJiMGNmODIzZTEgcHkzaworODM1MjkgMTY0MGVmYTdmZjI5YzkyNGI4ODc4ZmNmYmQxOWM5NDhmYTEwNjdhNSBweTNrCis4MzUzMCBiMDhkMzUwNjIwODg1ZjAyZmFmMjQ5MjUwNzJmZDcwZTU4MzhlMzc5IHJlbGVhc2UzMS1tYWludAorODM1MzEgODVjZGFmNWYzY2RjM2UxNGMwODFlOWYyNzk4NzQ4NmU4NWQ4YTc0ZSBweTNrCis4MzUzMiBhMzE0OWM5MzE2NTY1NmU4Zjk1MDA1MzU5OTA4ZmUyY2IzNThmNjRiIHJlbGVhc2UyNi1tYWludAorODM1MzMgNmJhZWJhNTRmZDI0YmQ3MWJhZTAwNTU5MGExZmFiYTAxYmNkMGM0YiByZWxlYXNlMjctbWFpbnQKKzgzNTM0IDMwNjhlMDBhMzIwNzY4YTVjMDI0M2ZjMzRmNWM2Mzg5Y2VkZGY3OTAgcmVsZWFzZTMxLW1haW50Cis4MzUzNSAzYmUyNDY0YzBjMzk0NmRjMjI4NTdkMmNlMzlhZWJiODU4OGE3NWQ0IHJlbGVhc2UyNi1tYWludAorODM1MzYgZDdmMzA4NWQxYjAzZTQyZmQ3NmE4MzVkMDY5ZDFlNTM5NmU5OTY4ZSBweTNrCis4MzUzNyA3YzNiODQ5ZDE4MWFlMmQ5ODExNTYyNDljYjVmNWZlYzYwMDA5MDlkIHJlbGVhc2UyNi1tYWludAorODM1MzggNTE2ZjllMzRhZjIwOTZkYTA5ZjYzOTM1ZGU5NjgwNGNjN2NkMjIxMiBweTNrCis4MzUzOSBjYTYzMmJhZDZkNjBjYjQ2YTViYzEzMjhjY2I3OWNhMGY2MDYzY2FhIHJlbGVhc2UyNi1tYWludAorODM1NDAgZGJhOTk4MjhkOTFjM2U4ZWUxOTc3ZDExYzgyOGJkZjIxMzQ1YzdhMyByZWxlYXNlMjYtbWFpbnQKKzgzNTQxIDY1MzYxNTBkZDRmNDI4NjVkMjg0NDc3MWZhZDJjZDJmMjljNmMyMDUgcmVsZWFzZTI2LW1haW50Cis4MzU0MiA1OGMyMmQzMGY3NDkzNjQ3N2JhMGJkNmQ5Yzg3NGQ3N2QzOTczMzFmIHB5M2sKKzgzNTQzIDY3MjQ5M2ZmZDc1M2Y5OWNlZmE5NjU3NTk3MWRhYjY5NDFiN2Y0OGMgcHkzaworODM1NDQgY2VjYzZkMmE1YjQ5Y2JjYzQ0ZDk3YTA1ZDc3YWFiN2I0ZWYzMWU2NiByZWxlYXNlMzEtbWFpbnQKKzgzNTQ1IGI2YzVmY2NjYjZkZTVkNTdkZjlkNTI4MmU1N2EyYTVjNjIzYTk1NjAgcmVsZWFzZTI3LW1haW50Cis4MzU0NiA3MjAyYzlhMjA1NjY2MjlkYWQ2ZDE2Nzk0MzM0OGFmOWY5ZTliODAwIHB5M2sKKzgzNTQ3IDBiZjM2Y2RkODMzNDU0MjUxMGM1ZWRjZmNhYzYzOTM0MmZlZDZiOGUgcHkzaworODM1NDggNmUzYzIwOTNiYjIxMDg0YzAxZGNhNDJkZmJmNThjMjM1ZDU4MWU3YyBweTNrCis4MzU0OSBmOGNlNjRhOTZjODk2MDJhNWYwYjk1ZTkwOWFiOGEyYWRlNGJhM2MzIHJlbGVhc2UyNi1tYWludAorODM1NTAgYTI0YzlhNzQwMWY0NTM1MTdlMzU2YWMwMTBlZDcyNTEyODAxMGJiMSBweTNrCis4MzU1MSA2OTlmY2RhZjk5ODEyY2E5MWFjOTI0Yjc1ZGE1NjNhYTc1ZTRmNDU5IHB5M2sKKzgzNTUyIDMwN2UxY2VlNGE1ODEwZjQwZWI0YTM3MWE5OWMyODJmZTI1YmUwZTggcHkzaworODM1NTMgN2Y2OGY4NTU0M2Q0ZjkxYTdlMjI0YTRiNjcxZjE3ZmI3YjJjYzRhOSBweTNrCis4MzU1NCA3ZjA3MTA4N2Q4MjBkOTkyZGIxNmE3YjE1MDA3ZTBhY2NlZDQzYTAwIHB5M2sKKzgzNTU1IDYyZDhjZmNjZDE4YjQ0ZjU2ZTk2Yzk3NjMyYWJjZDI3Yjc1OThhYjMgcHkzaworODM1NTcgNTExMDJhYmRlYzUwMjEyZjA1Njc3MTM0MmNiMWE1NTdjYzFlNGEyYyByZWxlYXNlMjYtbWFpbnQKKzgzNTU4IGI0ZjYxNDcxNzhlNWMyZjc5MjcyYjQyMjRlODhjZTE5ZjA3MDBkOTUgcHkzaworODM1NTkgYWZmOGQ3YmNhM2YzMzNmYTk5NjU0NmU5ZWM1MTlmNjVmNWNiYzBmZSByZWxlYXNlMjYtbWFpbnQKKzgzNTYwIDQ4NzRlZmQxZjY1N2EzNmY3NzBkNGFiOTBkY2IzNGFhZjY2NDEwYWYgcHkzaworODM1NjEgN2ViZjVmOTAxMWIxOTBkMmU4Mzk0NGE2ZWQ5NTU3OTNjYzgwZmFmMyBweTNrCis4MzU2MiBiNGI4OWQxYjQyY2Q0NDViYTViMTQ2YWYwODNiOTY3ZGJjODYyMDIxIHJlbGVhc2UyNi1tYWludAorODM1NjMgYmIyZGNmMTIwM2M0YzQ3MGY0MWE0OGQyYzc1YjEyYjNkMzlmMDgzMSBweTNrCis4MzU2NCBhYzI5ZjcwYzYxZGJhMzQ0NmM3NWJkZTJiMjA3ZTg5NjQ3NWUwNTUwIHJlbGVhc2UyNi1tYWludAorODM1NjUgNDJlMTljMTRiMTQ5MmE1YzlhNjMzMzNjNWE4OTE2YWNlZDRiNjE2NSBweTNrCis4MzU2NiA0N2JhOTA1YTdlODdkYzYxYjc4ODg1NDkyYWJkNzhjZjQwNjkxNDRlIHB5M2sKKzgzNTY3IGQwYmI4MGU4MWIzOWE2M2M0NjNkM2M2NzRlMGNjMjYyMDAzMTdiZTEgcmVsZWFzZTI3LW1haW50Cis4MzU2OCAzN2JhNDcyMzIwMjdhNjAyOTk0YWYxMWJhNTVmMGUzNDFiZGNjYTk5IHJlbGVhc2UyNy1tYWludAorODM1NjkgZmY2ZmFiZjI1Y2VmNDk1N2M5M2U3OWE0MmZlMGJjYTZjZWJmYmQ5NCBweTNrCis4MzU3MCBkZjM3OGU0NGJhOWFkM2VmODRlMDI1ZDJlOTA4ZGI1MjE5YWUyNWY2IHJlbGVhc2UyNi1tYWludAorODM1NzEgMjM2MzkzYzU1NGY3MTQ5MGRlY2M2ZjJjYWZmYzMxMzk3ZjU2MGJlZCBweTNrCis4MzU3MiA3OTU4OGQ0ODY3YmNiMjQ3NWQ2MjY4MWE3MjRlMjk1MTM2OTA5MDRhIHJlbGVhc2UyNi1tYWludAorODM1NzMgZGM5NDEzNDE4NmM4NzUzYzZjMGU1MzZjMzkyNjdmZTVmYWEzMWNmOSByZWxlYXNlMjYtbWFpbnQKKzgzNTc0IDg4MTZmNGU5ZjcxMmNmM2I3ZjE5YWJkMTRjOTZjYjNhMWVjZGEyNGQgcHkzaworODM1NzUgNzBhNmE3MjdlY2Q3MzI5MzUzODVhNWJiOWRmZDg5YTIzOTIwN2I4NSBweTNrCis4MzU3NiA2NDk0NzZjNjYzZmNmNjEwZTU2ZGNkNDUyMjJkYWFhYjA5ZjU1YTM5IHJlbGVhc2UyNi1tYWludAorODM1NzcgY2MzMzY2OTJiYWI5MDU0NzViOWM3NWU1ZTNiMmYyYTE1MDU5MWM5YyByZWxlYXNlMjYtbWFpbnQKKzgzNTc4IDk1OTQwMGFlMDViMDQ2YzYwZWQ4OTNhZmNmYTFlNjBjM2FjZGIyY2IgcmVsZWFzZTI2LW1haW50Cis4MzU3OSAzMTljOWY5ZGM0NTYxOTQ2ZGNkNWJiNDhhMWQzMzkwNDhmYWExOTk5IHJlbGVhc2UyNi1tYWludAorODM1ODAgM2QwMTFjMmVjMjM3Y2Q5MzU1OGVhYmVmN2MwYWY5MjdiNmUzMTYzMyBweTNrCis4MzU4MSAzYWY2Y2FlNWUwMjZiYmE3M2NkNjQ1NmZiYTEyZTZhMDdiMmZlMmE5IHJlbGVhc2UyNi1tYWludAorODM1ODIgZDZhYzNkMDliNzlkNGE3N2VkNzU3MzNmNmI3YjBkMmZiMzdmNDQ3ZCByZWxlYXNlMjYtbWFpbnQKKzgzNTgzIGI4NWNmODViN2VkYmM1NGU1MTU1OTI4NjljNTNiN2NlMWZmODM5NjAgcmVsZWFzZTI2LW1haW50Cis4MzU4NCBjZWE2ZWQ3YTBhYTExYTBmODQ5Nzg5NzQxMWM0YmVjZWMzZmU4OTA2IHB5M2sKKzgzNTg1IDRkZmI4YTYxZTY5ZmQwMzhmMzgyZTgwY2M0MDFkN2Y3MDgyYWNiZDYgcmVsZWFzZTI2LW1haW50Cis4MzU4NiA3NmUxYzVmMzE5MzFmMGZlMDc5YjZlNDUzMDlkMGFiZWE4YWJiNzg5IHJlbGVhc2UyNi1tYWludAorODM1ODcgZTk3MWMxMDRhNWMyMWUzZDM3NDgwZmI4NGRjMjU3ODEzZGYwZWIzYiByZWxlYXNlMjctbWFpbnQKKzgzNTg4IGZkMjQ5NzUwY2JhZTVhNGU2MDA0ODU4Yjk5OGExODE0ZmNhOTlkNTIgcmVsZWFzZTI2LW1haW50Cis4MzU4OSA2ZjgxZDZmOWE2ZDFjNGE3ZGNkZDM1ODI1NWNmNjRjZjQ4YzkzYmJmIHJlbGVhc2UyNy1tYWludAorODM1OTAgNjczMGNmOWQ2MjdhNWRhZTgxYjQ5NzVhYWUyMTNjYTNjYTE4ODFlZSByZWxlYXNlMjctbWFpbnQKKzgzNTkxIDc0NDlkMDQyMTNjNmU0MWU3YTc0NDM2OTkzYTAzNzIzNjA0MTI5YzAgcmVsZWFzZTI3LW1haW50Cis4MzU5MiAyMTYyMGQ5YjA4NDgwY2UzYWRjMzY2ZGFlNjgyYjc5YWNiNzhkODY3IHJlbGVhc2UyNi1tYWludAorODM1OTMgNTk1Njc2ZTQ2NmMwZDQzMGMwZWEyMTBlN2ZkZGQwN2M4ZmZiYmVlMCByZWxlYXNlMjctbWFpbnQKKzgzNTk0IGE5Y2QyNTUwZmY0MGFjZWIwZDc2NGYyZDAyNDA5YTY1ZGI1OGNjZWQgcmVsZWFzZTI2LW1haW50Cis4MzU5NSAxM2QyYmFjYzU2YTQxNTQ1MmQ3ZjEwMjliMjVkZTIxMGRjODgzYzgwIHJlbGVhc2UyNy1tYWludAorODM1OTYgZjNmZWYyMGE2NmRkMDhiZDJiZWRhMTBhNDA1Mjg1MmIwNDVmOWQwZiByZWxlYXNlMjYtbWFpbnQKKzgzNTk3IDI5ZDM0ZTRkMGE5YTM2N2FlODA0MzI4NWVmN2U4MDQ3YzI4ZThjZGQgcmVsZWFzZTI2LW1haW50Cis4MzU5OCA2MWI2OWJmMWVlYmRjZTExYWZjYjMwYTA3YzhkODAxZmM0YmEyNDkxIHJlbGVhc2UyNy1tYWludAorODM1OTkgZjJkODNhMTM3MDNmYTlmYzE1MjAwYThkNTk3M2JhZThjNjdmMzYzZCBweTNrCis4MzYwMCA1YzRjZGYzM2MxMzI1YTcwNTZlNzg4MGQ5ZTU3N2NkNmVhMzViYzc3IHJlbGVhc2UyNy1tYWludAorODM2MDEgMTJjOTFmNGJiNDE0NDlhYmFjNmFkYWZmYzJkNmM4ZGQwYmQ3ZWE2ZCByZWxlYXNlMjYtbWFpbnQKKzgzNjAyIDYzZmI4ZGJiZmRhMjVlNDI5NGI5YTNmYmRlNGJlZGNkMmRkNzBiNDggcmVsZWFzZTI2LW1haW50Cis4MzYwMyA0NDM4OTZmMzI0Y2UyMGZhNjk2MDY4NzcwODZjMDNmY2ViODAwMjkwIHJlbGVhc2UyNi1tYWludAorODM2MDQgYTJmMDEzMDIxZTFkZGIxYmZmMDg1NjMxMTk5NDU3NGMxNWUzMmU4NyByZWxlYXNlMjYtbWFpbnQKKzgzNjA1IDM3ZDM5OWFhOGMxNmZkYTY3NWU5MmM2NDU3NzhmYTU1MTVkMDIxNzQgcHkzaworODM2MDYgZmQyMGViYTFmMjAxMWQ2MzA0MmQzM2I5YTRjZWVmZGYyODZhZWJhOSBweTNrCis4MzYwNyA0NzUwYThhOGI0Y2Y0MTc0NWYyM2IwOTViMWU5MGZiMzJlN2E4MzdjIHB5M2sKKzgzNjA4IDYzODQxMGEyOTA0NjgxY2IwODI2OWU4NjliYmZkODc0MThjZjZhZmIgcHkzaworODM2MDkgN2E0N2M0ZDMwZjZlMWIzZjQ2ZWJkMGI0NGY4NzFkMDE3MTAzZjg5OSBweTNrCis4MzYxMCBkNDg1YzY4MGM2NWZhYzkzNzNkMDkzMmVhOWNmZmI2YjE2ZTYyY2YyIHB5M2sKKzgzNjExIDk1MmE4ZGU1Y2E2NWExNzdkOTRmZmU0ZGJhNjNkYzk5MzIyOTkzODcgcHkzaworODM2MTIgNTkzZDY0MTdlZGYxMDc5ZjJjM2U1MzUwMmY2MDU3ZTYyNDQ5ZWM2YyBweTNrCis4MzYxMyAyMDI0MmFmMjQzZDIwZTIzMDc3Y2JkNDM1YThiYWEyM2U3YWE2MWMxIHB5M2sKKzgzNjE0IDJkMDNkNmM0YzgyOWMyOTBkOTA1MTRmMWY1ZmVlNzRhZTIzZDU3OTQgcHkzaworODM2MTUgNDQ4MmE0Mjg4NWY3NWE1MTYxZGQ2ZWFjZDA1MjJhMmQ4NDFlMmExOCBweTNrCis4MzYxNiAyOWYyMGVmMTA3NTVhMGFhMjRhMGExMTRhZjhjOTAyNjM5ZTkzNTc2IHB5M2sKKzgzNjE3IDYwMTViNmVjODFmMmM3NzAzY2MxYjIxZGIyOGYwNzA1MDc3YzUwMWMgcHkzaworODM2MTggMDMxZTZiMzQ4YThlOGFmOWQzYjEzZTRjMzZkODU2NDcxZTVhYzViNCBweTNrCis4MzYxOSA3NjJkODlmYWNlYWFhYWM2OTgxNjViNDc1NzU4YWFmNmI1NjZiYTgzIHJlbGVhc2UyNi1tYWludAorODM2MjAgNDU0MGI2ZjQyOGQzNjM0NzQ4NDY4YjM3MWYyMmE4NzA4OThhNzQ2MyByZWxlYXNlMjYtbWFpbnQKKzgzNjIxIGQ1NzU1MmFiZjE4MGU1OGRkMjQwYzU4NjU4NTQzYmY1ZDk2NWM0MWIgcmVsZWFzZTI2LW1haW50Cis4MzYyMiBiOTJmMGM0OWYwZThmOWNhNjU2NWIzYmFiNTE5ZGYzYjMwNWYwMzM2IHJlbGVhc2UyNi1tYWludAorODM2MjMgNjhjZmM4NGU0ZGIxYzg2YzI5NDk5ZmNkZDljZGIzNGRmNmE4NjAxNyByZWxlYXNlMjYtbWFpbnQKKzgzNjI0IDRjMGIzN2Q4NjljYWY4Nzg2YjhlODEzOGU4M2ViMTYwYzYwNzRmNTAgcmVsZWFzZTI2LW1haW50Cis4MzYyNSBhNjkzNGExYmZhM2IwZmM2MDUxZTE5M2VhMDBjNWQxMzY1NTc1YmMxIHJlbGVhc2UyNi1tYWludAorODM2MjYgNjU3YWU4NzdjMGJmMjAwMDYwY2FlMWI4MDBmZTM1NDhkM2U0NGYyYSByZWxlYXNlMjYtbWFpbnQKKzgzNjI3IDhjNzk5MDlhN2VlN2E2MWY5M2U3YzEyNzYzOGZjYjMwZDdhY2RjYzkgcmVsZWFzZTI2LW1haW50Cis4MzYyOCA0ZGY3MmZlYjM5ZDkwNTgxY2NkYTVmZDEwNzA2MzY2MGRhM2FhYzUyIHJlbGVhc2UyNi1tYWludAorODM2MjkgZWYxMTlkYmJlODg3NjYxNTVjOGE0ZTRiN2Q1OTVjNjBkZDFmM2YxNyByZWxlYXNlMjYtbWFpbnQKKzgzNjMwIGE4OGNiODAwNTExMGY1NzNkYmJjOTA2Y2YxZDFiOGMzYmU4YzlkMjggcmVsZWFzZTI2LW1haW50Cis4MzYzMSBiMWUwNDNkZTljNWE1ODQwMTRiY2E1ODI2YWNlZmM1ZjkzYWRiOTg3IHJlbGVhc2UyNi1tYWludAorODM2MzIgNWNmNjc5YmUzZGZjNGVhOGYzZmY4NmRjMjVkMTc0MGJiYmNmZmIxYyByZWxlYXNlMjYtbWFpbnQKKzgzNjMzIDZmZmYwZmZmZjg1YjRlZmJmMGRmMzM1MzIwMGQ3OWU4MmFmMzM5YjUgcmVsZWFzZTI2LW1haW50Cis4MzYzNCAyYWNhMzQ0NjBmZGI0MDljZjVjMTFjMzIwYjMxMjE0MTAzZDlkNGIwIHJlbGVhc2UyNi1tYWludAorODM2MzUgM2VmYjQ1ODE3OTBhMzFjNzc4NjIwZDQ5NjQ1OGNkNWE0YTI0ZjNmYSByZWxlYXNlMjYtbWFpbnQKKzgzNjM2IDZhNmMxM2E3ZjAzMDM4YTBkYzg0ZDNiZTY2MTQyNWZmNTA2ZjUzMTMgcHkzaworODM2MzcgMzBhODAwZDdlYWNjYWFhNzE4NzYwZmIxMjI4ZTVmODc0NzQ3ZWM2NyByZWxlYXNlMjYtbWFpbnQKKzgzNjM4IGU3ZTdjNTY3MThhZjI2ZjU1NjA2NjJkZGMxMDEzYjg3YmYzNDgxNTkgcmVsZWFzZTI2LW1haW50Cis4MzYzOSAxOTk2NDk0NGNjMDEzZTdjMWY1MWRlN2M3MzUwNmIyZGU5ZGQ1NTViIHJlbGVhc2UyNi1tYWludAorODM2NDAgODZkMTE5ZTk0ZGEzYTA2YmMwMmJlNzZiYzk3N2I0ZmU3YzQ2NGQzMiByZWxlYXNlMjYtbWFpbnQKKzgzNjQxIDYzZjM4Mzc5ZTRlZGEwYjY3NjFkNTA4YWNjYTNiZTdkNWFiY2MzZmEgcmVsZWFzZTI2LW1haW50Cis4MzY0MiA3YjU4NGExM2JjOTY1YWJiYmY2OTYzMzhjYjNjZmM3N2M2MzkzMWRlIHJlbGVhc2UyNi1tYWludAorODM2NDMgZjMwNjBlNmZiNzE3NTg1ZGE0NmZjYjYyZGIyMWViZTY3OGUxNWNiMyByZWxlYXNlMjctbWFpbnQKKzgzNjQ0IDE4YzhjNTAwNDEwOWVkNzI4ZDg4ZTA4MjllZTY3ZTY2NDc5ODE1NmYgcHkzaworODM2NDUgNjk0NTQxNmM4ZDA0NWM2OGFlYWZjODY0MmFiZWI3YWFlMGZlMjBhYSByZWxlYXNlMzEtbWFpbnQKKzgzNjQ2IDUxNzg1OWNiMGU5MjAwMjNkNWFhYzA5MzNiMzQ1MWI5MGFlMmJhYTIgcmVsZWFzZTI3LW1haW50Cis4MzY0NyBjODJiNmVmZmI2OTUzMWE1ZjNjODhmY2NjYzdhOTkyNTFiYzVlNmNmIHJlbGVhc2UyNi1tYWludAorODM2NDggY2RmNmEzYTUwNDA3NDZkMzEwYTUyNGZkYjg1ZWMwZmU1ZDBlNTg1YiByZWxlYXNlMjYtbWFpbnQKKzgzNjQ5IDEyODhhMjU5MzI4NzZmNjM0NWQyN2FhNzg2YTE1OTY4ODFkYWFlZTQgcHkzaworODM2NTAgNTcxMDVlODc1NjA0ZmVmYmFkZTEzNzY2N2JkYzUzNzVjNGQ1MTA1OSByZWxlYXNlMjYtbWFpbnQKKzgzNjUxIGViYzkwNTE3YjhkOTZiZmY4MmExN2QwM2Q1MmJlOGJjMDg3ODcxODUgcmVsZWFzZTI2LW1haW50Cis4MzY1MiBlMWVmNTI2MzMzNTBkZjY0MzY0YzcyYjhiM2M0MTRkMDk2NmI4ZDY5IHJlbGVhc2UyNi1tYWludAorODM2NTMgZjg2NGZmYjhmMmVkZWY2ODZjNzc2ZTc1OWI3ODYzNTVkODY5MzQzZiByZWxlYXNlMjYtbWFpbnQKKzgzNjU0IGQyNjVmOTFjMzg3ZDJmYTg0MDg4NTk0MmY0Yzk1MDc1ZmU2NmQ1MDMgcmVsZWFzZTI2LW1haW50Cis4MzY1NSBhNzkzN2RhNjI1OTFjMjVlOGNhNzAxOTQ3YTdhMDZjMzliNTAwYWEwIHJlbGVhc2UyNi1tYWludAorODM2NTYgNDhjNTllOTA1NTMyNTFlN2Y1ODQyMGFiYzBiMzdhNTZjNzJlNGRiOCByZWxlYXNlMjYtbWFpbnQKKzgzNjU3IDdjZWUxYjk2MDllNDdkZTAzZmYwODE1NDQ0NGY5MTEzMGYyZjdjN2EgcmVsZWFzZTI2LW1haW50Cis4MzY1OCBiMjA2NjY3OGQ5MzdjZjk5MGZlZjVlODgwZWU1ODI5MDNiNmNlYjA2IHJlbGVhc2UyNi1tYWludAorODM2NTkgZTIxMGVkNjNiMDRlNDIzOGM4MjE3MThmNmYxNTkwMGYyY2Y4M2NkMyBweTNrCis4MzY2MCAzZGNmZTI5ZDljYTU0NDdjMGY4NmQ0MDI5NmQ2ODUwMWVmOGVmOTVjIHB5M2sKKzgzNjYxIGEzZjY0NTM4MWQ2MWNlMmUxZmFlNjJiNDEwNTQyMzU2MzM2OTZiMDIgcmVsZWFzZTI3LW1haW50Cis4MzY2MiBmOWM0ZjA5OWEyNGRkZGY3NzQ5NTkxODFlY2ZjODY0ZTIyN2VhM2E5IHJlbGVhc2UzMS1tYWludAorODM2NjMgNjY2MDFmYjkwZDNkZjY0NDhiMDdmYTgxNGZmOTUzNDEzZmI3N2Y5OCBweTNrCis4MzY2NCA3MWFlNTIzZWJhNWJhZGRmN2I4MWE4YmNhOGI3NzMwZTA1YzY0ZWJkIHJlbGVhc2UyNy1tYWludAorODM2NjUgNDVkYmEyMmE3NGZjOWEzOWU4MThiYWEwM2M2NDhlNmZmMGU3MjQ0ZSByZWxlYXNlMzEtbWFpbnQKKzgzNjY2IDlkOWE4M2IyNTA0NTc4MWZlYmU3ZDBhY2YxMTczNzc1OGYwMGI5ZjYgcmVsZWFzZTI3LW1haW50Cis4MzY2NyBhZjM2NTVmMmYyNDhjM2QzNDRmMjFlZjc1YTA4ZGE0NDAzMmI5Mjc3IHB5M2sKKzgzNjY4IDMzZTliZTJmYTRkMjM5MWU3NTBhM2E2YzJjMmFmZTk4Yzg3MmQ1NWEgcmVsZWFzZTMxLW1haW50Cis4MzY2OSA2M2UxZDBkYzQ0ZWUwN2ExNmY2OTZlYTg3OGNlNGY1NTkyYTJmZTFlIHJlbGVhc2UyNy1tYWludAorODM2NzAgMzNkMmY0MjQ1NTYxMDMzNmJlMjdiNGFjMDE5Y2YyOTFlMzUwNzM0ZiBweTNrCis4MzY3MSBkYzIwZGY5YzliYTk1ZjBhYzY3OTQ4NjdmYzUyN2NmMjUwZmQ0MDIxIHJlbGVhc2UzMS1tYWludAorODM2NzIgMDNhYTA1ZWJkOWJjNWJiZTk5NGI0MWNjN2U0YmZjZTY4MDI3MmJhNCByZWxlYXNlMjctbWFpbnQKKzgzNjczIDcxYzQzMTVkNDlmMjdmMjE4MWZiYTgxZGZiZTJmY2Y2ODJiMWM0M2EgcHkzaworODM2NzQgZmY0NDU2ZGQ0YTc4Y2E0ZDNhYTMxNmM0MWQ1ODAwMmNlMDIyMmMwMiByZWxlYXNlMzEtbWFpbnQKKzgzNjc1IDI4NTBiZDkxOTI3NzBkNGIxZDYyODdkYzhlMjlhNzM3ZThhZTAyODQgcHkzaworODM2NzYgMjNjMDg5ZGM1Y2ZmMGU5MDc0MGU2Zjk1ODI1ZDJlZDc3MmJmNzFmNyByZWxlYXNlMjctbWFpbnQKKzgzNjc3IGQ2YjMzNmRkNjQ1Nzc2ZmUxMGY0Njg5Njk2NmYwYmFkNWUwY2UyOWEgcHkzaworODM2NzggOWQ2OGU3ODQ1ZTQyMDUwOTUwZjQzMTI1YjlmZWM5MzE1MTBkMTNjMiBweTNrCis4MzY3OSBjNGJiZGEyZDRjNDk4NjVkMjZlYjM5ZjljZThkOTc3MGI0YjU3OTBhIHJlbGVhc2UzMS1tYWludAorODM2ODAgMDQyMGY1NDdmM2JmMjQxMTA2MWM2ODFkMzgwNTI2Y2NmY2U4MGMzZiByZWxlYXNlMjctbWFpbnQKKzgzNjgxIDM5OGEyNWNkNjEyZGRhYWVkNWNlOWZlYzA0ODE5MjUzNTM0MGNlMjkgcHkzaworODM2ODIgOTcxOWU1ZThhOGFmOTJlYmU4ZTE3NDE1YzA5ZWFiMGI5NTkxZGY2NSByZWxlYXNlMzEtbWFpbnQKKzgzNjgzIGIzM2M4MGY3YWIxNzY2YjVjNzcwMDI4ZWU0ZWRmMjE4ODA3ZTkyM2QgcHkzaworODM2ODQgZjI4MzhlYjFiYjFlZjkwYWY5NTcwN2RhZTg2Y2QxZDRhNjQwNmZjYyByZWxlYXNlMzEtbWFpbnQKKzgzNjg1IDhhOWU5NzYxMjdhYjEzOTc2ZjcxMjNmMDI0ZDE3NjhiZDAxNjVmNmMgcmVsZWFzZTI3LW1haW50Cis4MzY4NiAzNzc1YmY4Mjk5YjMxMzU2ZmI4Yzc5YmYyMTMyY2EyMDUxYTVhY2FiIHJlbGVhc2UyNi1tYWludAorODM2ODcgZjQzZjZkMTczMDc2ZTlhYjVhN2U2NzU2NTM4N2I0ZTE0MDM0OWZlNiByZWxlYXNlMjYtbWFpbnQKKzgzNjg4IGNmOWZlYTIyYzNhOWUxNjFmOWMyYWNlNjI0MWMyNDMyZmY0OGIzM2EgcmVsZWFzZTI2LW1haW50Cis4MzY4OSBkNjg2ZjMwMzMxNzRhOTMwMjVlYmVmNDA2OTg5MjU5MTkyYTFkNzI5IHJlbGVhc2UzMS1tYWludAorODM2OTAgMjBkNzNmZWM5ZjYyMzAxZGQyNDNkYWRiM2YwM2FjZTI4ZGEwNjUwYSBweTNrCis4MzY5MSBjMWRjOWU3OTg2YTJhOGUxMDcwZWM3YmVlNzQ4NTIwZmViZWYzODJlIHJlbGVhc2UyNi1tYWludAorODM2OTIgNWE3M2RkMTViZTA4NGJlNWQ4MTIyZWYyYTgyZGVmZDdjYjY5NzhjZCByZWxlYXNlMjYtbWFpbnQKKzgzNjk0IDIxYTljOTQwMTEwZDI2NWUzZDYzNTZjN2ZiODczNzI4MzVjOWUyYTAgcmVsZWFzZTMxLW1haW50Cis4MzY5NSBmY2EzYzlmYjVhMWI2M2MyNDU3MTU4M2QzNjZjOGJkNWUxZmM3NjU0IHJlbGVhc2UyNy1tYWludAorODM2OTYgYmY2OTUwOTYyNmZmOTU0YTFjY2IyMTI0OGU0YzY3OTU0MDMyMjU2MCBweTNrCis4MzY5NyA2ZTc5NWVjMzhlODAwODI4NTBjMmM5YmExNjFiZGE4N2E2Y2U3NDU2IHJlbGVhc2UzMS1tYWludAorODM2OTggYWYzOWUyNTVmZWFkMDU2YWQzMDEyYmJjNzZkNDYwNDUzM2I1MDdhNSBweTNrCis4MzY5OSBmMGVjYTc0ZjAwZTE0YjJkZjIyNThhOTgyNzA3NmVkNGVhNjkxNmMwIHB5M2sKKzgzNzAwIDE0ODlmMzk5YWJhMWU3MWUwNmExZmY0MzZkNjFiNjM5Mjg0NDAxYWQgcmVsZWFzZTI3LW1haW50Cis4MzcwMSBmNGM5ZjZmMWZlNzZhNjJlM2E2YjBiNzg3NmM2YzYyYzAyOGU4MTkzIHB5M2sKKzgzNzAyIDkxNWIwMjhiOTU0ZDc1YzNhZDgzYWE5MjY0ZTMzZThmM2UyZGVhZDcgcmVsZWFzZTMxLW1haW50Cis4MzcwMyA1ODMzNDM1Nzg3MzJlMmViMzRkODNlYzk0YzBhYmYwNDhmYWVmZjM4IHJlbGVhc2UyNy1tYWludAorODM3MDQgYjNmZGQ0NDVlMDM3OWQ3MzE0NDVlNTJkY2NmODU3ZmE5YzkwMjYwZCByZWxlYXNlMjYtbWFpbnQKKzgzNzA1IDg5ODkzYTAwMjI3M2VlYzU1OWUyMzdlN2E5ZjZmNjgwMzk1Njc2ODMgcHkzaworODM3MDYgYmE3MzUzMTQ3NTA3Nzc4NmNmOGZjY2FiZGExNTZhZGQyYTBmMjhjYiByZWxlYXNlMzEtbWFpbnQKKzgzNzA3IDRjNGQ4YWRlOWRiYWExNmM1MzNhMWY2OTJhZDgwMmQwYjVjZDdkOTcgcHkzaworODM3MDggZjU5ODQyM2E0NjIxNjlmNzMxMjAwZGRkZDI2OGY0MTgxNDVhMzk4YiBweTNrCis4MzcwOSBlNjg4NjM1OTcwNjEzZjUxYjI1Njg3NjUzODYzZWIyNDEwNDI5NWYxIHB5M2sKKzgzNzEwIDc3MTljYzdlY2Y0NTQ2YWFkMmYwM2I4YTdmM2RlN2Q1ZDYzNzE4ZmUgcmVsZWFzZTMxLW1haW50Cis4MzcxMSBlNWYxMjU4Y2ZjNTg5NWYxMDY5OGYxYmU0ZjA4MzdkOTAwY2I1ZDAzIHJlbGVhc2UyNy1tYWludAorODM3MTIgNmMxMmIxNzE3OTJlMjUwZjhlNzViZGY0MGZkZWY0N2U3ZjE1YzhlZCBweTNrCis4MzcxMyA1OTMxMTEyZWFiZTc3ZmQxMDg3ZjFmYzZhZDczZDM0M2EzZDJjNzk0IHB5M2sKKzgzNzE0IDcxNmU2MDE1NzBkYTFjNTE5YTQ5MjQ4ZjYzMDQyZjNlNDJiNmIyYWIgcHkzaworODM3MTUgNDg1YzA1NGM5YWExNjUxNTBjYzRhMGRmMGNmNDIxMjBjOTcxNDNlMyBweTNrCis4MzcxNiA3MDQyZmE1MzllN2M4MTU0Y2JiYzAwZGJiZTk2ZTU4ZDgxOWVlNGYxIHJlbGVhc2UzMS1tYWludAorODM3MTcgYzVhMjgyNzk3ZDVlMzUyZWRkMDMwOGJmMWY0Njg0M2JjNWYwZmVjMCByZWxlYXNlMjctbWFpbnQKKzgzNzE4IDBlNDUyOWQ3MzNhYzQxYTFjZDNjMzFmNDg5NGZiZjI0YjVkMmM5MDkgcmVsZWFzZTI2LW1haW50Cis4MzcxOSA1NzZiNzY1ODQ0YWY5MmRhNTMzNmNhMTVkNDk3NzFmOTgxM2Y1OWM5IHB5M2sKKzgzNzIwIGIzOTg0NmJjN2JhNTU2N2UzZjRhN2JkZTNhNmE0MzdiODNkZDZlZjYgcmVsZWFzZTI2LW1haW50Cis4MzcyMSBjYjM0Y2Q2MzAwMDAyMDBhMzljZmQyNmNkNTk2MTg1ZjVkYjFhMDgyIHJlbGVhc2UyNi1tYWludAorODM3MjIgZmQ3ZjczZTEyNTY4MDBjNzA3MTZiZTY0YTk1ODE0NTczZjc4Yjg2MCBweTNrCis4MzcyMyA4MzA0M2MxNTI1NjY4MWU2ZWE1Y2U4NWZkMGU0YzMyNjU2ODVmYWEwIHJlbGVhc2UzMS1tYWludAorODM3MjQgOWRlNTZjNDMxN2M5NDNlMGE5MGEzMWYwNDQxMjQxNDMyYzA1YmQxNyByZWxlYXNlMzEtbWFpbnQKKzgzNzI1IGI0YTUzMzJkMmJjYWNjYTgyMmVmYzY3ZjMxNWU5MjMyYTY0YTk4MDYgcmVsZWFzZTI3LW1haW50Cis4MzcyNiAyZDg4Y2E2NGE5MGJjMWQxOGU3OGFhZWRjZmJhMzAzYWM5MjA2ZGUyIHB5M2sKKzgzNzI3IDgyODIyN2EwMDUzODk4YmFlNDI3YTMyMjVkOWM5MGJkMjhlMTE3MDUgcHkzaworODM3MjggMzVmZWU5MjExZjNiNTg1YzlkYTU1OTBmOTNhYTE5MmZkY2YzMTU5NiByZWxlYXNlMjctbWFpbnQKKzgzNzI5IDhmNGY0NjhmZTI5ZTA4YWZjNjFiZDRlYTYxOTk4NGIzNmQ2YTc2YjEgcHkzaworODM3MzAgOWM3MDQ2ZmQ0ZDY2NzIwOTdiYzA1MDlkNDdmZDZhYjNjOGViMjY2MyByZWxlYXNlMzEtbWFpbnQKKzgzNzMxIGNhN2VkOTQxYmNiOTM0NDEzZWRjNGMzNDY5M2FhNjM0MWQxYWRkZGUgcHkzaworODM3MzIgY2E2ZDZlZDIzYjIzOGI3OTY3M2IwNGJhNGY0ODY3NGNhMTJhMmU1OSBweTNrCis4MzczMyA5NWZkNGZjMjdiOWJiNWVjYzkyNDI1ZThmMjI1ODNkMzQ4ZWYzM2YyIHJlbGVhc2UzMS1tYWludAorODM3MzQgNTZhYjllMTExYzFjMGY1YjczOTlhNzZhMTIxZGE3NzgyODJiMTRjOSByZWxlYXNlMjctbWFpbnQKKzgzNzM1IDM0NzRkZGYxZWJmZTRhMzg0MWIzZTljYWUwYzMzNzVhM2M1OTIzZjkgcHkzaworODM3MzYgZWFmZTA3ZDQwZWI3MzU5ZTA3YjE5NDBlOWM5ZmM2OGMzMzJkOTlmYiBweTNrCis4MzczNyBjMTVhY2QxZTkxNmIzNTA0ZjQ3YjAwODFlOGYxMTQ2ZThkNWRjY2Y1IHJlbGVhc2UyNy1tYWludAorODM3MzggYTE4NWNhZWRmMzJjZmVkZGI4NDE4ZDFmMTkzMWQ3MzAxZDJmOTlmYyByZWxlYXNlMjYtbWFpbnQKKzgzNzM5IDM1YmQ1N2QzZDIzMmNkYmQzNjFkN2Q3OTFmYTZhNzQ3OWNjOTBjNjMgcmVsZWFzZTI3LW1haW50Cis4Mzc0MSA4MTAwMDE3OTM5ZjQ5OWM3Zjg1NmEzNTc4N2Y0MDIwZWM5ZmMyNzIyIHB5M2sKKzgzNzQyIDYzMzlhN2IzMjQ1Y2NjM2VmYWZlNjcyMTM2NTlmZjJmMzFlODFhNzcgcHkzaworODM3NDMgNjc2NTJhN2YwYWVlMjM3ODdhMmRhMTExYmFiOTIxMmYzZWVlMDBjZSByZWxlYXNlMjYtbWFpbnQKKzgzNzQ0IGMxNjgwM2JiZDc5MGQ3MzJhOTk4NWU5Mzg4Yzg4MzBmODNhZTFhYzggcHkzaworODM3NDUgNzJmMDA2NzA0ZmJkYzgxNDUyZjQ1NzJhZTAzMmNlYWFmMTcyN2RjYSBweTNrCis4Mzc0NiAzODRkMjE4OWE5NmE5MDFmNjlhMWU2NjAxYmU0ZDRjM2I0MmJmYWJmIHJlbGVhc2UyNy1tYWludAorODM3NDcgMjkyMjZjMDhlNTQ3ZDg4ODBhNDRjZTM4YjU2MWY2NmM2OWI2ZDYzOSBweTNrCis4Mzc0OCBhMDM3MzlhZjlkMzg1ZWIyYjVmOTIxYTU3MmY4MGNlNzkyOTU2ZDVlIHJlbGVhc2UzMS1tYWludAorODM3NDkgZmNiN2UzNTkyNGU2MzRmY2ViMzFkMmI4MjQ2ZGQ2OWI4NTg2N2Y5MSByZWxlYXNlMjctbWFpbnQKKzgzNzUwIGJiMmEzMTVkNmEwMzUwMDJkMTNhOTkyM2E0MmI4M2ZhZjFmYjkxYTkgcHkzaworODM3NTEgZjgwNmZiM2QxZjI3NzYzOWI3NTg1YzI5OTMzY2E5YWMxYWY4MWI2YyBweTNrCis4Mzc1MiA4OGNmOWEwZWQxMTgxM2Y1OTg2MDliNDVhYTdkMWQ5Yjk1YmNhYjhiIHB5M2sKKzgzNzUzIDZiMjhiODhmNmM0ZTg4NWY0YzhmMTJmYWFkY2M0ZTMyMjIwYTVmMzAgcmVsZWFzZTMxLW1haW50Cis4Mzc1NCBiOTA2ZTllNWYyYTdmYTkzODQwYjVjNmU1MTQ0ZDI5ZTNlMTFjYTU3IHJlbGVhc2UyNy1tYWludAorODM3NTUgNzZmODQwMmNhN2YzNTQwZWYwMzI0Y2ZmZWI4YTFmOGRkNzE1Yzc5YyBweTNrCis4Mzc1NiBmYTYzMTRiMTQxZGM0MmQyN2E3OTA1OGRhOGVlNzQ5N2UzZTcyZjliIHJlbGVhc2UzMS1tYWludAorODM3NTcgMGY4YTRmY2ZkZDFlNTk0YzNlMDQ0YTZmNTk2NzljZTZhMzdjYzA2YiByZWxlYXNlMjctbWFpbnQKKzgzNzU4IGIwNjIyMmYxNTVmZjVlZDViMzVhNjcwZTU4MzVhNTJmZmUzMjdhMzEgcHkzaworODM3NTkgYWQyOTJmY2U3OWY5ZWNiMzYyZmYwZmI0M2ZmYzFmNzg0ZTcxMmM3NSBweTNrCis4Mzc2MCAyYzEwNTEwYTFhZWZjNTU1NWRjY2ExM2YwYTliY2RkMTEwNGJkMzNkIHJlbGVhc2UyNy1tYWludAorODM3NjEgYmIyNjA4ZjczZWI3YzZkMzQ4MmY4ZDk0Y2NmZDM3NmYwOTdiNDBmOSByZWxlYXNlMzEtbWFpbnQKKzgzNzYyIGY3YmQyOGIzYzY4Mzk0ZDFkNmM5YzAzOTk4YWIwNTBmZTQ0MTU4NGEgcHkzaworODM3NjMgOGNlNjkwOTY5NmQ0MmYxNzYyODE5OThjODRlMTMwMDVkYThmYWMzMyBweTNrCis4Mzc2NCBkMTRlMWU3MjQ4YmEzZjZmYWVjOTBhMGI2MDY4MjAwYjQwZjUyZDIzIHJlbGVhc2UzMS1tYWludAorODM3NjUgMzA3NWE3ZTg1YzE4ODE0MzZlZDU2ODIwMDQ1YzBmODQ2YzliZjYwNiByZWxlYXNlMjctbWFpbnQKKzgzNzY2IDc2ODY0YWM1YjY3ZDAxMjYzZGVmODFkMjcwZTIwNjRiMDEyOTBiYjYgcmVsZWFzZTMxLW1haW50Cis4Mzc2NyAwNmJiZGRhMTMyZjM1NDk1OGNhZTc1ODg1MDY2OWU3NDc0NTQzOTJhIHB5M2sKKzgzNzY4IDQzZTZiZjg2YzM3ZjJjMzA0OGQ0ZTQwNTZiZjVkNmVjNzliMjdlMGYgcHkzaworODM3NjkgMDhhZWQwMGZiZWMzMzlhMGQ3ZjNjMWZmNTUxNzM5ZTM0YTAyZTM0MCByZWxlYXNlMjctbWFpbnQKKzgzNzcwIDI2MGFiZTljZWZhYzI4YTIzOGMyYTg4Y2ZhOGVmZDlkNTgwZmIxNDAgcHkzaworODM3NzEgN2JjZjYyNTVkZTJmZmYzZDJiOTkxZTVmNzAzOTc4ZWEwYTQ5ZjBmYyBweTNrCis4Mzc3MiAzOTRlNDhjNTE2YzRhM2IxMjM2NmViODc3YjlkMDg5MmE4YzQ0ODcyIHJlbGVhc2UzMS1tYWludAorODM3NzMgNDBiNDgzNzgzM2E4YjUzMmZmMzc0NThhN2FhNTIxMmVmZDA2ZTAwYyByZWxlYXNlMjctbWFpbnQKKzgzNzc0IDlkMWM2NWY4MzIzZWZjMmRlZjIyMzNmNjU1OTIzZmMwZTM3OWY0NmIgcHkzaworODM3NzUgMDYzMjc5YzZmYzE2MGUwYWQzOTNiZTFjOGY1YzBkMjA1ZThhMmMzYSBweTNrCis4Mzc3NiBiY2NjODRlMDRhMmNhZTczMDk0YTRkM2M4YjBmYTgxNGVlZjQ5NzIzIHB5M2sKKzgzNzc3IGVjMzIxN2E5ZTUyMTZkZmIyZWYzZDcyZTIwYTA1M2VmMTBhOWIzOGQgcHkzaworODM3NzggNzYwODUzMmY5MzNhNDZlYWY0MmVmMDdiOGQ2NDA3NWZjNjNiYjdhMCBweTNrCis4Mzc3OSAyNzVhY2ZjY2NjY2IwOGI1NzU5M2ZjNTdjZWI0NDQxOWU0MzhiZjM5IHB5M2sKKzgzNzgwIDliODAyYjZiNDM5NTA5ZDNhZWViNzU0YjFiOWQ4NjdmMGM4NDY1NTYgcHkzaworODM3ODEgZjI3YjI3YzgyZDhmZjQ4YmIzYWRjNTA1NTIzZmEwNTU3OWVlZWJjYiByZWxlYXNlMzEtbWFpbnQKKzgzNzgyIDcxNzVkMTgwNWNjMGRmNjBhZWMxYzQ2N2Y5ZGVmMzY0MWY4OWQ4MmIgcmVsZWFzZTI3LW1haW50Cis4Mzc4MyAwZWQ2NjVlOGExMTU0MjliZmNmNWFkMjNkYjZkNDYyNTM4ZDcxYWE4IHB5M2sKKzgzNzg0IDI4MTM2YWYwMGNjYWI2ZDQ3YzljZWJiMTVlZWJhZTNmMzkxNjU2NDQgcHkzaworODM3ODUgNGUzMjU4ODk0ODg5ZmJkYWFlZjJjMDVhNDllMjFjMzczMmZjMmU3NyBweTNrCis4Mzc4NiBjNmQ4OTI2Yzk5ZGY1ODUwYjczMjU0ZmMwYmQ3NmJjNGVjNGZmMDE0IHJlbGVhc2UzMS1tYWludAorODM3ODcgODdmMzMzMDM4MDM1ZTc4YzFmOTA5YTk0ZjI5MGI2Y2Y2MGY2MmQzZSByZWxlYXNlMjctbWFpbnQKKzgzNzkyIGMxZDdmN2ZlNDdhMDU3MDcwN2U1Njk2NGIxMWUwNjcxNDRmNDMwMjMgcHkzaworODM3OTMgZmIwNmZhYjE2YTNmZTYwNWI5MmEzOWZkMDIxMmE5Y2NmODBmZjc2YyByZWxlYXNlMzEtbWFpbnQKKzgzNzk0IGFlOGMyNWY5NGFkZjRkMzUxOWRkZThkMTg4MTQ3MWUxYzYxMjViODQgcmVsZWFzZTI3LW1haW50Cis4Mzc5NSBkOTVmYmM0YWVlN2MzYjhlNjEyMjFhN2M5OWY5OTE4MTExNzA0ZjQzIHB5M2sKKzgzNzk2IDlkM2JhMGQ2NjVhNjUwOGM0MTdiNTM1OGQ2ZWRiM2E4ZWRlMWMwYzEgcmVsZWFzZTMxLW1haW50Cis4MzgwMiAyNGIzZGVkNTE4MjU0YzNhZjdiMzM3MmM3MjkxNjhhYWEwMzhiZjRlIHB5M2sKKzgzODA0IDRlZmVkNjJlYWMzYTg2YzFlZGY2MjQ1NTFkZTI2YmYzMTU5ODdiYTMgcHkzaworODM4MDUgNjAzYzM1NTA4YjM2M2RjM2JiZTVjZWU3N2Y4MTZlYzgwNDBkZDA4MCByZWxlYXNlMzEtbWFpbnQKKzgzODA2IDcwOTllYzBiY2JkMmM5OTI4YjI2MDhkZDE3OTlmY2M3ZjJmNzcyYWEgcmVsZWFzZTI3LW1haW50Cis4MzgwNyAxNTgzOWNhNDNkOTZhMzVlM2YxODlmMTU2YTQ2MTI2OWEyYjZkYzVmIHJlbGVhc2UzMS1tYWludAorODM4MDggYmJlMjIyM2UzNzUwNmEwNGI1NmI4ODg4NTQ5NGVlZGM1MmMyM2JhNCBweTNrCis4MzgwOSA0YmNkNTM2MTdhNjU2YmVkNzM1MGE2ODM4YTRiNjE2YzcwNDJjODZjIHB5M2sKKzgzODEwIDI4ZmVmOWU3YzNiYjczMmYxZjE2MDk2OGEwZTZkNTM5ODgwYTkwNTIgcmVsZWFzZTMxLW1haW50Cis4MzgxMiA5MjQ3MzhhYWI3MGZkZDY5ZGVkMTUwYTI5NmJjOTc2MTMxYjhiZWU1IHB5M2stZHRvYQorODM4MTMgOGMyMTBlNjFjYTc3NTQxMGY3MmY4NGRhMTNlNjhjNjFjNjliNmE2OSBweTNrLWR0b2EKKzgzODE0IGJmZmQxZTI4NTRiM2QzNmIxNTM1ODg4OTc3MDA3M2Q3NTEwZjExMTYgcHkzay1kdG9hCis4MzgxNSBhMGJkY2RkMGYwODY0MzdjODMxY2ZiMTgyNDA3ZTg1YTRlOTdkYTcyIHJlbGVhc2UyNy1tYWludAorODM4MTYgZTQxY2E2NjcyZjgyMmUwOTZjZTZlNjk4NWRkMjBjMzZjNTUwY2M4YSBweTNrCis4MzgxNyBmNGQ5MmM2ZDRkNDJhNTNkMDYwYTczZTgzYWJmOWIzYmZkMGYxODM4IHJlbGVhc2UzMS1tYWludAorODM4MTggYmYzMzU5YjdlZDJlZDVhN2I3OWJjMjg0NTZhZTMwYmI0NDI1ZjNkZSBweTNrCis4MzgxOSBlNjFhMDk0YjQ4MThkNDU5MzE3ZmUzYzYyMGI1Y2VkZWFmNTJlOWY3IHJlbGVhc2UzMS1tYWludAorODM4MjAgNGIyNGI3YTQyMGM5MjdmZTUyYWYwMmQzNGFjMDA0OWRlMTc0MTI3ZCByZWxlYXNlMjctbWFpbnQKKzgzODIxIDAxNzg3NTYzZTJjYjM0NGZlOTM0MTczYTQwN2JlNWM5YjIyNzZmYjQgcHkzay1kdG9hCis4MzgyMiAwMzcwYzExZmQyMWRmM2Q0YTk0NGY3MGFiZGZmMzJkYjAzNDYyNWRlIHB5M2sKKzgzODIzIGI2ZmViNjdhMDVmMWYxNmZhYjdiM2U1MWZiNmM3NWNlNGFmMmQ3YmEgcmVsZWFzZTMxLW1haW50Cis4MzgyNCBlMTY1NjA1ODVlMzVjNmIzNjRlMzNmZTYwMzE0ZjEwOTk0Yjk5NWQwIHJlbGVhc2UyNy1tYWludAorODM4MjUgNWVhNzA3ZDJjYWE4OGU5ZmYzMWI2NTM0ZTFmZmVlODBiZDgyYWY2OSBpbXBvcnRfdW5pY29kZQorODM4MjYgYmUxNTlmM2RiNWQ2YWUwZGUzMTYyZGJkMjUwZDdiNjQyNmFmMWIyOCBpbXBvcnRfdW5pY29kZQorODM4MjggMTA4NmRhZDUwYzc0ODA5MjBkODMwZTFlYzU4NTc2Zjc1ZjM3YTQ1OSBweTNrCis4MzgyOSA2YjIxODlkOGU4YzQ0ZDJmNDIyMGJhMWNiY2Y1NmRjY2VjNjE3Zjk2IHB5M2sKKzgzODMwIGI0ZjU0NjM5YjdiMTk1Y2Y5Yjc4MDUxOTg3YWJkYjJiZmJiNDQxN2QgcHkzaworODM4MzEgOTgzZjExMGEyMjRlMmE0NWViNTk4M2Y5Zjc1ZjBkZTM4ZWZkZWJiMSByZWxlYXNlMzEtbWFpbnQKKzgzODMyIGNjNWEyNDZiMmRhMWJiODJlOGYxN2Y0NDY4ZDY4MTNkYjQ5MTBlYjIgcmVsZWFzZTI3LW1haW50Cis4MzgzMyA3NWViZTZjYzgwODMzNTFhNTVmYjFlNzY5M2NmYjJmZDc1NGQ5MzM4IHB5M2sKKzgzODM0IGM1MmY1ZGY1MDQ0ODg5NzVkOWFkOWEyYTkzMGU2MTg2YWNlNDUzYzYgcHkzaworODM4MzUgODY4M2FlYTRiNzJlZjhkYzc5OTFhYjNkOGY4NDE1NzA4MWZkY2M3OSBweTNrCis4MzgzNiBlMTNlYTgzZTJlZGIzZGUyMmU3MmRlNTM3NGUyNzYxZWFmYTQ1YmM3IHJlbGVhc2UyNy1tYWludAorODM4MzcgNDBkMTFiODEzOWRhNTBiMDQ3ZmViMmY1ZjgxOTBhOTU2MmY0ZmQ1ZiBweTNrCis4MzgzOCA1MTVlMGQ3MDU1NDNmZTU3NTk3ZTdhMjk0NDBlNmU2OWRlMTk5YWY5IHB5M2sKKzgzODM5IDA4ZTA1ZDQyNGQ5N2E2MjkzMDM4ZGQ1ZWEzZmQ4MGNjNTQwMDBkOGUgcHkzaworODM4NDAgNjBhYzQxYWU3ZjMxMjBkMDU2Y2Q2MGQ5YmIxNDkzZDQ0MzZiNTE0MCByZWxlYXNlMjctbWFpbnQKKzgzODQxIGI5ZDE5ODAyMTc0NTg5NDI4NzZlMjc3MWU0ZmNmZmQwODNkMjYyNWMgcHkzaworODM4NDIgZGYyNTg5MTVmNTJmY2I0YWFmMzZjZjBiNTk2ZDdkOTE3MTk4Zjg3ZCByZWxlYXNlMzEtbWFpbnQKKzgzODQzIDVlN2YxNWYyYzBiZTZjY2ViMWYzOWFhMzQ1YTJiZjgwNjE0ZGQ5YmMgcmVsZWFzZTI3LW1haW50Cis4Mzg0NSA4YjM3OTZjYzMwOWU4Zjk4MDU5ZWIyY2I0NmZlOGNjNjliYWI2YTg3IHB5M2sKKzgzODQ2IGNjMGVlNmJiNWU5Yjg3MWVkZmQxOTI4YjA1YTc3MTk4NDY0NGQ2NjAgcHkzaworODM4NDcgZmVmZmMxYTI1OTljNzNlNzU5YzBlODUxMTY0NTc0MTA5MmJkNGI0YyByZWxlYXNlMjctbWFpbnQKKzgzODQ4IDc2YmE0MWI3N2Y1Mzg5Mzk1Mjg0OWY3MTM2MWU5ZDZhMzI4MmM3YzkgcmVsZWFzZTI3LW1haW50Cis4Mzg0OSA0NDYxOWE1NjZiNmI2MzYxM2Y5YmE5ZjBjMGQyMDBiODFmN2FhMDg4IHJlbGVhc2UzMS1tYWludAorODM4NTAgZmE4NjIyMjY1NjA5MTIwNzFmNjU3YzNkNjJiNzc0ZDlhOThhNTY3NSByZWxlYXNlMzEtbWFpbnQKKzgzODUxIDU3ZTYzMWYwODhkNzM2MDU0MzI4NDdiM2E0NGY5MTMxODg1ZjBiNTQgcHkzaworODM4NTQgNGNhNDk3ZjQ4MTljZmRhZDgyNjcwMWJiYTY3ZDFlM2U1MWFjMmU3ZiBweTNrCis4Mzg1NSA3N2M2ZjYwYTFiMjQwYjUwOWRkY2NiNGEyOWUwY2EzNmVlNWZkN2Y3IHJlbGVhc2UzMS1tYWludAorODM4NTYgNTVjNzBlNzljNjg4ODY3YzExZDcyODhjZjA0NDAyYWQ2MjM2NTllOCByZWxlYXNlMjctbWFpbnQKKzgzODU4IDU1Mzk3NTMzZGE1MThhMDNiYjQzYzhhM2IyZDUzN2YxMDI4MjhmNDQgcmVsZWFzZTI3LW1haW50Cis4Mzg1OSBlYjVhYTkxZjBlMTZmNmRkYjE0NzQ5OTM3ZTQyOGJlN2Y2M2VkZmUzIHB5M2sKKzgzODYwIDdkNDQyNWUzMDhmN2I4NTI2NmViYjIwM2E4ZjQ2MjM2ZTRkNThmYWQgcHkzaworODM4NjEgMWJkMzUzNDEzNmEwMzY0MzU3M2VhOWJkNDQ3ZDVhNjk4NTQ4NWY3OCBweTNrCis4Mzg2MiAxYWQ1OTIyYWVjNDUzZTQ3MDMxN2YxZjBhZjFhNzQwMjc3OWRjZjBkIHB5M2sKKzgzODYzIGQyMjgwNjgxOGZlM2E1M2RiNDAzZTJiMjIxNDJmZDYxNGVmZGNhNmYgcHkzaworODM4NjQgZWEzYTJkMWJkZWQyYTA1YjVkZDA3MzM1ZGRmMWJjZDNmYWQzZmMyMCBweTNrCis4Mzg2NSA4ZDZiNGZmYzA1MTJhYTQ3MTcxOGFjNWMyNjljNTUyNzU4ZTYwYjZmIGltcG9ydF91bmljb2RlCis4Mzg2NiAwMjEzNTE1OTVmYWMzNmIyMTdmZDIyYWUxNjg5ZDYyNzE1YTZmOGVmIGltcG9ydF91bmljb2RlCis4Mzg2NyAwZGEzYjU5YzNkMzgwNjE3Y2I1YjZiZjU0ODU1YWY5MzBmZGQ5YzEyIGltcG9ydF91bmljb2RlCis4Mzg2OCBmODEyYjc5NjQxMTk5YTBlOTZkOTBlZTdmZjljOWNmNDkzMzRiOTFhIGltcG9ydF91bmljb2RlCis4Mzg2OSAzZjhjZWY4MzdmMDczYzJiYzM3Nzk3MDUxYjJhNWZkYjk2ZWYxNGNkIHB5M2sKKzgzODcwIDEwYzk1YzBmMzRkMzU1YmU5ZjVkNjk3ZTk4NzQ1MzliMmM4YzZlZmQgcHkzaworODM4NzEgNTIzNTRjYjI5NjQ0OTI2YTE5NTlkZDJhMmI0MjQxNDlhZDI4YmJjZiBweTNrCis4Mzg3MiA5YzQ0NWJhZDM1YjA4NmQwNDE3MzEzMGE1Zjk4NGM1YjgzNDg1Y2Y3IHB5M2sKKzgzODczIDdmNWUxMTVkNzZkZmFkM2Y2NDg4NTNjZDJmMTdhZWZjMmFmNGRiODYgcmVsZWFzZTI3LW1haW50Cis4Mzg3NCBhMTNiZGIyYjgzOThmYmYxOTFkMzIxMmNjMjIxZDk4OTdjMTk5NGJjIHB5M2sKKzgzODc1IDhjZTFkZjM1MjhiNzZmY2IyYWVlMmI3MGVlNzBlOWFhOWUyOTQ0OGMgcHkzaworODM4NzYgYzc5OTVlOWJjMmUzNmQ5ZjFhMjE2NzE1MDJjNTcwY2ZmZTczYmRhYSBweTNrCis4Mzg3NyA4YjkzY2YzM2I5ODdjODc3OWRlY2Y1ODAxYmExNWM1MWFlYTk3ODZkIHB5M2sKKzgzODc4IDY4OGVkYmJiZTY1ODE3NWU2YjhmZTM4MDU3ZTdmYTdjNjBiZjE5OGYgcHkzaworODM4NzkgNWUzYzYxY2I3MDE0MWQzNjMwZDNlZTBiZDIyNmRkODJmMzBkMjA4MyByZWxlYXNlMjctbWFpbnQKKzgzODgwIDk0NjhkMTMwNDI4NDI1ZDI2NTIxOTA4MmM0ZmU5ZWRmYTZlOTIwMWEgcHkzaworODM4ODEgM2FlOTVmMjA3NjA2MzQ0ZjQyM2I1NWVmYjI4YjU4ODI3ZjYxYWVjNCByZWxlYXNlMzEtbWFpbnQKKzgzODgyIDdiN2ViZjU1ODg5NDg1NDczOGM0MTgzNGQxMzRlNWQyOWRhZjg3N2EgcHkzaworODM4ODMgMDAxNTI5ZDY0N2ZlNDlkYWFkMTQwMWZmMzIzNTUzZmQ1ZThiZDY1MiByZWxlYXNlMzEtbWFpbnQKKzgzODg1IDNhNGJlOWQyNWE1ZjgzMDYwY2QyN2Q4MWU5NjdkZTI3MjhhMjgwNjggcHkzaworODM4ODYgNWFlMzkwYWM2YzYxZDhhZTlhNmQ5N2E0NDcwZDg1YTc5NTg3NTMwMyBweTNrCis4Mzg4NyA1YzBkNWRlNTZmZGY5YWFiZTg5NTAxN2Q4NWZlZTYwMWZlMWU3OTI5IHB5M2sKKzgzODg4IGRlMDgwOTc3MmQ3ZTcwM2UwZDA5MTE4NjY5YTQxZjE5MWZjNjNmY2UgcHkzaworODM4ODkgOGJhMDljZGI2ZmM0OGIyYWRmMGVjNmJjNzZjMTgyMWU4OTNhOGNmNyBweTNrCis4Mzg5MCA3OTVlYjEyNDAzYjk0NDIwZGI0ODhjNDAzOGY2ZGRlZWQyYTQyNjZhIHB5M2sKKzgzODkxIGRmYmJlN2IzMGU5MDFiMzZmYTQ1MTg0ODliMzk3Njk3MjdhMTZiOGQgcHkzaworODM4OTIgZTE2MDc5YzZhNDhmNTgzY2QzNjhkOGY0ZjA4MDZmZmNmNzgxNmVkOCBweTNrCis4Mzg5MyBmMTYyN2NmY2M4OTA1MGI2Zjc1MzY5YTlmNDMxZDU2M2Q5ZGVkYTBjIHJlbGVhc2UyNy1tYWludAorODM4OTQgYzM4ZjNiOTY5YjRhZTUwNDQ0Y2RiNWI2NmM3MGJmYjM3ZTk3MzM2NyBweTNrCis4Mzg5NSA3ZGMzN2FlMTc1ZmNkNTcwN2U3NGU2MGE1MWUwNjRjZmY5NzQ5ZDJjIHB5M2sKKzgzODk3IDZmYjAzMTAzN2YyOWI1MGJiOTRkMTcwMjMwOWNmYTcyMzJiOWFhNjYgcHkzay1kdG9hCis4Mzg5OCAzNTVkNzI3MzczNjRmYmRkODU5OWU4ZjMzNzNhNDg4Y2Y1MjczYmZjIHB5M2stZHRvYQorODM5MDAgNzJkMDUwNGU2NDg5NjA0MjRmYjJjYjUxZGNiOGRmYjc5MWJkNGJiOCBweTNrCis4MzkwMSBjODlhZDZmOWNkZGMxODIyM2NlNGM3MTU4NGNlY2E0OTE5OWQxMjllIHB5M2sKKzgzOTAyIDk1MTE3YWFiOWE4NmRmNzJkMmYxOWJjMWQxZmE4NjdkNTQ3YTBmYTMgcmVsZWFzZTI3LW1haW50Cis4MzkwMyA1MDM4OGE4M2VjM2Y3ZTBiMmM5NDZiYzJiMmU0NGY4Yzk4NGNhYmJjIHJlbGVhc2UzMS1tYWludAorODM5MDQgNTBmOGY1MjQ3YzgxMGFlYjgwMThlNGNhMzdhNDRlMDViNjc5MjZjOSByZWxlYXNlMzEtbWFpbnQKKzgzOTA1IDBhZTcwNmE3MWEzYTUwZGMxZDE1Yjk1ZDBlOTU1NGJkMDIyMTdiODYgcmVsZWFzZTI3LW1haW50Cis4MzkwNiBhNTZkOGE4MGI4ODM5ZTU1OTdkZmQzMDVhNzY0MjFhNjM4OWIzMTE5IHJlbGVhc2UyNy1tYWludAorODM5MDcgNDZkNDhkNzE1NDQyZmNiYjgwMmVlZDM5NzU2ZmQzMjA5MjlmYjgyYyByZWxlYXNlMjctbWFpbnQKKzgzOTA4IDYwMDc2ZjI4YzAyM2FjNmVhYTI4ODU4MjM5ZDhiZjdlOWNiZjM2MGQgcHkzaworODM5MDkgYzJlMWRiMzBmNzU2MmZhY2U1MGRhMWE1NDhkZjdkNTZkYjBmNzA0YyByZWxlYXNlMjctbWFpbnQKKzgzOTEwIDMwY2MyN2ViMzU0YWNmNTFjNDZiZGUyZjI3MTA1MTRjZTZiOGYxY2IgYmJ0ZXN0Cis4MzkxMSA5ODUzNjU4YTgzNTViYmZiOGU0Mzg4MzI1NWIxMjAxMjIwNGU3OTg0IGJidGVzdAorODM5MTMgMjlhZjlhYmM3NmNhZGExNTNmYWM3MTg2MmY5MDM0YWYyYjQ4NTFhYSByZWxlYXNlMjYtbWFpbnQKKzgzOTE0IGIxODkyYjdmMTk2NmY0ZWM4YjkzMDdmZmM0OTkxMGU1MTNmMTZmMWQgcmVsZWFzZTI2LW1haW50Cis4MzkxNSA0YzUyM2UxZWYxMGYyYjcyMWY2MDc0YzJiZmM2MTM0MTJjZDNlZjgzIHJlbGVhc2UyNi1tYWludAorODM5MTYgYzM5MTJhYWMxYjczZjYwZjliNmNlOTc3YmMwZTlkZGYyNmY5N2Y4ZCByZWxlYXNlMjctbWFpbnQKKzgzOTE3IDZjZDI5MmM5YzI5NjBlODA5NzUyYzU4MDExYjlhYzRjNjM1YTVmYzEgcmVsZWFzZTI3LW1haW50Cis4MzkxOCAzNzE1NjkwN2YzNTljYjlkYTVhODlhMmM5YWVlNjY4ODUwMDNiMTQ0IHB5M2sKKzgzOTE5IDEwOWJkZTVlNDFiOTQ0ZWYzYWRlOThhYzYxNDhmNmJjMjZlNGE1OGMgcmVsZWFzZTMxLW1haW50Cis4MzkyMCBiNjVkY2U1OTAyYTI4NDdiZmM1MzlhNzVkNDQyZmRjNDlkZjYwYWFiIHJlbGVhc2UyNy1tYWludAorODM5MjEgZmY5NjE0ZWRmM2EwNTQ2ZmM2ZjE1YjlmMmMwNTU4MGZlNmI0MzYyOSBweTNrCis4MzkyMiAxNGZiNjdlN2ZhMDQ2OGMxMDdiNmQxMTg1ZDg0MzAxMzk3ZmIzYzI4IHJlbGVhc2UzMS1tYWludAorODM5MjMgZmE0ODVkY2VhNjEzZTkxNWEzOWUxNDkxNTgyNGJiYzMxZWZjMzI1NiByZWxlYXNlMjctbWFpbnQKKzgzOTI0IGJjZWEzNWEyZDJkMmJkOTVlMTA1ZDhlOGIxMmMxZDUwNDIxZGEyNzQgcmVsZWFzZTI3LW1haW50Cis4MzkyNSAxOWFmMDgyODdjYzc5MjkzZjE2MTQ5NTU5Yjg1MTk4N2NiOTRiMWQwIHJlbGVhc2UyNy1tYWludAorODM5MjYgYWQ2YzhlMjI4NzEyZTRjOTQxYzlmYThjYTUyMWVkODQ0NTI2NGU2ZiByZWxlYXNlMzEtbWFpbnQKKzgzOTI3IGMyZGIyN2FhNmJmMjUwMGJhY2JiYzhmNTM5YzVlNDAwZjNjMDM2OWMgcHkzaworODM5MjggMTMyMmVmM2M0YTZjODI5MmU4MGQ5OWFjZWFlZDRhNDZkY2RhNmE3NyByZWxlYXNlMjctbWFpbnQKKzgzOTI5IGRlYTFkMjY4ZTM0ZWQ2N2YxMzJjZDliMDU4MWQxZDJhNmI1YmEzNTYgcmVsZWFzZTMxLW1haW50Cis4MzkzMCA5ZTAwM2EyNjIwOTMzYzk4NmJiNWYxMzgwYTFhNzhiNzUxOWJmNWZiIHJlbGVhc2UyNy1tYWludAorODM5MzEgNGY3NmNlNjlhZWQwZGMyNzQ0NGJkMzQ1Yjk4MDcxMzk1ZTMyYjYxYyByZWxlYXNlMjctbWFpbnQKKzgzOTMyIDM5MDkyZjg2YjBhZjMyZGVhNWMwYjA5NTBiMWJhMDJjZWUzOTEzM2UgcHkzaworODM5MzMgYTM4NTNiZmEyNTE4MTZkZDU3MWU0YjZjNWQ4YmUyNzhjMTU1ZDA3NiBweTNrCis4MzkzNCAzZDZhMDJmMGEyZDhhN2FlMzc3N2MwNWViOThlNmIxMTRkNTM2MjA5IGltcG9ydF91bmljb2RlCis4MzkzNSA3ZTUyNWUxMjViNzE1ZTM5YTE2NmYzYWJlN2FhZTlhN2QzNGNiMzkwIGltcG9ydF91bmljb2RlCis4MzkzNiA3ZGQ1ZjVjZmExNzk0Njc2NzkzNTRiMmI0MDA1NzQ0MjkyN2MwOTcxIHB5M2sKKzgzOTM3IDBhMWFkOWIxMTQ5NjIyNTVkMjMwNTBlOTA0MTIyZGRkNjMxNjc5NGQgcHkzaworODM5MzggMmNiNTgxNzRhYTdkYTA3MmM1OWQ1NTMxYjRlNmMwOWJlNTY0ZTNiZiByZWxlYXNlMzEtbWFpbnQKKzgzOTM5IDI5ZTIwYmRiMmIxMWFiMGNlMTQ2NzM2NjlmMmEzYmQ1ZDIyNjFkZjUgcHkzaworODM5NDAgNDA1NTZhZTQyNGI3Mzc5ZjRlNGE2MTJmMmM5ZGMyN2Q4ZTkxODAwNCByZWxlYXNlMjYtbWFpbnQKKzgzOTQzIDY4OTY5YjlkYzNiMDYwMDU2Y2RkYTZkYmYwNTI4ZDM1ZjJjMzI5OWQgcHkzaworODM5NDQgNzM2NDk0MDY3MmYwMDQ0NzEzZWVhNDhhYzNmYzQ3MzE3ZWE3MTFmOSBweTNrCis4Mzk0NSA5MzBiMjgwM2M3MTY2YjIyM2NlMTcwZmFlZjRjNDgxYWE2Y2NkNjhlIHJlbGVhc2UzMS1tYWludAorODM5NDYgYzNmZjZlOTEwMDY4YjJmZTg3N2Q1MGRlNWM4ZDBmYmFlZjdmODkwNiByZWxlYXNlMjctbWFpbnQKKzgzOTQ3IDU2MDY2YTU4MjVjYTIwYmNkNTI3NGM0YWQ2OWI4NWU0MDE5Mjc1ZmMgcHkzaworODM5NDggNzZkNDYzYzk5MDA2Mzk2ZGM0MTUxMjMzODFhMWViMjhmM2VhMzY0YSBweTNrCis4Mzk0OSA5MTA4ZTdkY2Q3ZDgwNWU3YmNkMDhkYjFkZDZjNjE1YTA2YTc3NmMwIHB5M2sKKzgzOTUwIGExZGU0NjM5NTY0ZTVhZjFkOWUyZjc0MmRjYmQ4NTljMGQ0MzgxYzAgcmVsZWFzZTI3LW1haW50Cis4Mzk1MSBmMjJlOTUwNTUxYWQyYjg5YzA0OGM0NWQ4MGJhNWJiMDdiZGY1ODI2IHB5M2sKKzgzOTUyIDNmYThmNDFhMTEwM2M5OGNhZjI2OTRiY2E3ZWVhNjIxMTBjYzZmMzEgcmVsZWFzZTMxLW1haW50Cis4Mzk1MyBkMWIwMzVlMjQzNzJiZTAxN2RmZGQ0ZGQyNGQwYjEzNmQ0NzQ5NjVmIHJlbGVhc2UzMS1tYWludAorODM5NTQgM2RiYmNkMzRkNDk0ZTI1OGIwYzlmZTU0MGRiNWJmMjk5MDVlM2VjOCByZWxlYXNlMjctbWFpbnQKKzgzOTU2IDg0OTlhZTVkOTcxOTZhNzJhNWI4NzRiM2NiZjkwYTgzZGE0ZTczNTkgcmVsZWFzZTMxLW1haW50Cis4Mzk1NyBhYjJkOTQ5MzFiMGMxMDVmYTUzYzYwMjM5ZmNiMzliODFkZWQ0M2NiIHJlbGVhc2UyNy1tYWludAorODM5NTggNTlkYjM2M2ZhNTk0NWMxNzkwNzg1NGJmZDAwMjJjZDY0YzdiYTE4NyByZWxlYXNlMjctbWFpbnQKKzgzOTU5IGZkNDYwNmVmYzcwMGFiYjI1NzhkYmY4ODYwMjAxNWZlOTkyNWFmYzggcHkzaworODM5NjAgZjdkOGFhMTBjM2VmYTc2OGE3NWMxNjBhMDQ4MWJiNmY0NGIwZjk5MiBweTNrCis4Mzk2MSBlZDY2YjI0MTcxYWYxMmU4Yjc1NjViZjllOWUwYzVmNGFmOWFhYTg3IHJlbGVhc2UyNy1tYWludAorODM5NjIgNjhjNDhmOGFhNTU1MzgyMzRmZDViYTZjZTMyYmZlOTI3OTMyZjJkZiByZWxlYXNlMzEtbWFpbnQKKzgzOTY0IDUzNDNmNTcxNGZlZWM1MWFkM2NmZTFhN2E1YTY4NDBlMjBjNjIyNzUgcmVsZWFzZTI2LW1haW50Cis4Mzk2NSBiZTgzZDI5M2ExZTlhZjllNjdjODcwNTJmMmQ5Y2U4YTAxMWFiZGVjIHJlbGVhc2UyNi1tYWludAorODM5NjYgMDA1NzIxZTUwZTBiYTE0ZmIzOGJiMjUwNWYxODExMTQxMDFmZTJlYSBweTNrCis4Mzk2NyA2NGI1YzZmMjk2MDFjZDg5ZTRmY2RmYTc3MjI4MjUyY2Q5NmJhNGMxIHJlbGVhc2UyNi1tYWludAorODM5NjggY2I0NjFhOTE0NGRiMDM1NDNjNjU1MmVkZDAwM2UyYWY4ZGMzNGQ2MyByZWxlYXNlMzEtbWFpbnQKKzgzOTY5IGQyYjcyMTE4NWJmYTJjZDEyNzQ0NDhmMmFiNjk2MGU2MmI5MWZiZWIgcmVsZWFzZTI2LW1haW50Cis4Mzk3MCA0YTVhZDkxOGY3YWY0NTQ0YjkxZjE4NzNlZGJmMzRiZDFkYzAwMzIwIHJlbGVhc2UyNi1tYWludAorODM5NzEgODdiMmRhODQwMjUyZTdhYmFmYzhmOTI3NjExZTlkNmZjZjViYjZmYSBweTNrCis4Mzk3MiAwM2U4ODRmYWM0ZGJhMjUyOTBiNzhiZTYwNDQ1ZmY4MTRhZGI4NDIzIHB5M2sKKzgzOTczIDJkZDk2NGRhZDE2ODU0ZjI3MTVlZTg3OTEzZjI1NGJmODdkYTM4OWEgcHkzaworODM5NzQgYTQ0OWNlMWYzODViNzM0NTA2Y2YwMzI3OTc1YTEyMjk3NDRjNzQ3ZiBweTNrCis4Mzk3NSBhYTg5Y2JiN2JjMjE5YmVhMTE4YzE0NTRhNWRhZDFhZjkxM2JjNTUwIHB5M2sKKzgzOTc2IGZhMmQ5NzIwYTY2Y2IxMGY2MTEwNDE3MTkxMzIwN2Q0ZGRmYWViOTQgcHkzaworODM5NzcgZDZmOGU4NmExYmVjMjJjM2FmY2I1MzQ4ZDc1MzUxMzIxOTJjYWIxMiBweTNrCis4Mzk3OCA3NTU1YjAwMzVhNzc3NDExZDg0ZDE5NmM4ZDJkMTU2ZGQ4YjBkNmZhIHB5M2sKKzgzOTc5IDI3YjU1M2NkZDg1YjY0NmFiOWQ0Y2NiOGI0YjE5N2Q5OWMxNmUyMGMgcHkzaworODM5ODAgZjFkOTIyZDgyMGNhYWNhYWI0ZDY3OGJmODZhZDhiNDBkM2VlM2RkYSBweTNrCis4Mzk4MSA5MTNhYThhNDMwNGM1NzRiMmVkMjIyY2JjM2JjNjU3NDkzNTEyOGM3IHB5M2sKKzgzOTgyIDNhODBlNjdhMGQzNzI1YThiZTdkMWNkM2VlZWIzYTg1MDY2YjVkNTMgcHkzaworODM5ODMgYWE5YzhlODJjNDM1NzZiZjE3NWY3YWJhYmE3YTEzNDBjYWQ3ZDZkYSBweTNrCis4Mzk4NCBkNGI2NzBhYTZkNmI4M2RjNjczZWRjOWE3ZjkyZTQyNDk2MjU4YzA2IHJlbGVhc2UzMS1tYWludAorODM5ODUgMDY4MjkxZDQ0ZmQ3ZjhhMWE1YzBlNTRjNWIwYzM4YmEwOTU1NzQzOSByZWxlYXNlMjctbWFpbnQKKzgzOTg2IGU1NGJhZWJiZDZmZjAxMDQzNzUyY2JkZGU1MjRmN2Y0NWUxNTcwYmIgcHkzaworODM5ODcgMjkxYzlhZmFiMTJjZTA1ZDhkYjJjNWZlN2NlMmM5OTUxZmI4ZmZiZiBweTNrCis4Mzk4OCA0NzQyZTdhZWEyZjU5Y2NmNjJkODA5ODFiZGUyNTc5MTQyZDM4NWM1IHB5M2sKKzgzOTg5IDdiZTU5MTYzMzNkZmRhNmYwNzdkOWIzMzQyZDVjMzEzZThmYmIxZDggcHkzaworODM5OTAgNTBjMGRiYWVhYTA0ODAxMTY5N2YzN2RkZDc0YThhOWI0MjEwYTZiOSBweTNrCis4Mzk5MSBhYjY5NDY5NzJiN2ZkYmJkNDhmZjlkYjAwZTBjNGUzNmEyZmIwNjYzIHB5M2sKKzgzOTkyIGQ4Njg2YzZlNmI1ZWJkNmQzMjJlMDQ1ZjA3NDVlOGZjYTU5Yzg0ZTkgcmVsZWFzZTI2LW1haW50Cis4Mzk5MyAzYWY1OTdmMTIzMmFmNjhhMTVkMDljNTNiMGFiMjQzYWZhNjI1Y2JjIHB5M2sKKzgzOTk0IGQ1NGRhOTI0OGVkOWZmYWY2NWY2NTFjYTcxOTg4Y2RjYjEzMGNkODIgcmVsZWFzZTMxLW1haW50Cis4Mzk5NSA3MDYzNGMzZTAzMTA3YTFkZGFmMzI2MWRkZTkxZDIxZTRjMDk5M2RjIHJlbGVhc2UzMS1tYWludAorODM5OTYgZjc2MzlkY2RmZmMzNmRiYTRkYjIxMThhMDRjYjhiZmYzMTA1YWEwOCByZWxlYXNlMjctbWFpbnQKKzgzOTk3IDk0MjMyYTBjNDVhZTM0ODY1ZTBlOWJlY2I0ZGNjMTZhNzRiNTE4MmUgcmVsZWFzZTI3LW1haW50Cis4Mzk5OCBjYmEyYTk2MTExNzAxNDc3MjgwNTFjNjgxNGRlYzUyOGUzMDQxOWZkIHB5M2sKKzgzOTk5IDFiNTViNzFjN2MyMTBlYWE0ZWM1N2YxZmVjYmU5MTE5YWExOThkMDAgcHkzaworODQwMDAgZjhiNGViZTljNDFiOWQ5ZDZlODczY2YzNjE1OWY4YjI5MDE3NDY3MSBweTNrCis4NDAwMSAzOGQyYjY0YWI3YzE1ZmI3NWJmNzhiZjM3NDc3YjBjYmY4MDc4NzhlIHB5M2sKKzg0MDAyIGQ0NjAwZWU1ZTgyZjBlOTcxNjRlMzA3ZDc5NTdmNjNlODg2ZDMyMjMgcmVsZWFzZTMxLW1haW50Cis4NDAwMyA0OTRhMWI5NTQ1Njk2YjViNzI2ZDFlMTZmNThmYzM3ZjJkZDJlOGE1IHJlbGVhc2UyNy1tYWludAorODQwMDQgOTcxMjQ5Yzc0ZTgwNWQ4Yjc2ZmQ3ODc5Y2U3NzMwNWEzODYyYmU4ZCByZWxlYXNlMjctbWFpbnQKKzg0MDA1IDk4MTU1NWU5OTg2ZTMyOTRjNDIxNDZlNTIzOWFiOTYwZmU3YzdhZTUgcHkzaworODQwMDYgYWVkNGQ3ZjEyODIxZDcxMWEwYzBjNTJhMzhkOTViNjk2MTE3NWM0NiBweTNrCis4NDAwNyAwNjNjOTlkODAzMmM1MTg3NTIzM2JjOTg1ZWIwODVlOWU5NGNiOGM2IHB5M2sKKzg0MDA4IDc5NGViNDBiZWYzYTY1NTRhODk5YzA2NzVjOWU5ZjVmZGVlZTgxYzMgcHkzaworODQwMDkgMmQ3YmJhMWNmM2JjNTc1MjkyM2NhYjQwNjA0ZTA2MzhkNDhmZWEzYSBweTNrCis4NDAxMCAyOTNlMzMyYjhiNGIwNWE2OTcyMmNlOTYzN2M1OTM4NzNlZDgzOTkzIHJlbGVhc2UzMS1tYWludAorODQwMTEgODVhZGZlNTc4NzdiMWM5NTU5NTA4ZGY4ZGIyZmQyNmRiYjExMDU1MyBweTNrCis4NDAxMiA5NTMwMTBjMGIxNjg3ZmY5ZjQ2NTkxNmU4ZmVmN2ZiZGFlY2Q4ZTRlIHB5M2sKKzg0MDEzIGE2NTkyZmNmNzVlNzdlZjQ0YTY5NmM4NGMzY2ZjMzY2NjgyZjBmZjggcHkzaworODQwMTQgZTAxMzg1MDg2MGZhZjEzNWI3NzkxZTIxOWU1YjhmMTZhMTZiOGEyMCByZWxlYXNlMjctbWFpbnQKKzg0MDE1IDJiMGRmOWUxZjY5ZWM5ZTYxNDVjYTJiMDJjYzhlZjBlMTA2OWIyMTcgcHkzaworODQwMTYgZjFkMThmNGQ2MTYzYjU5YWYzMmFmY2IyNGQ5NmFiMDQ2NDM2MWNiNiBweTNrCis4NDAxNyA5NGIyOTBhYmJhZmJhYTUzYjQ4YTExOTdkMzRjMzAxMjgxNjY2YTcyIHB5M2sKKzg0MDE4IGE0ZmQzN2ExYmYzNzQzNWQ4ZjUwMWE0OTdjODk5YTk0OWRlZjNiNDQgcHkzaworODQwMTkgMTJmZTRjODhmOWU2Njc0ZGFiYWY4MDRkOWRlMmVjOGM5ZGY0MjM3YiBweTNrCis4NDAyMCAyNzcxMWIwY2QxZjAzYjU0YTNiNzVmYWFjYjcyNDBkZDgyOTIxMGNmIHB5M2sKKzg0MDIxIDI4NTQ0ZDY2OGVkMGRmYjQ2NTdmNDEzYTgxMzc3YzNjOTMyNmZlYmEgcHkzaworODQwMjIgZWY3NTk1NTEzOGQyMjc1OWU2ZTMzNzViYjVmYzNmMTAyMjBjMTgzNSBweTNrCis4NDAyMyAwYWFjNDBjNzc0NDQzNDI4MTNmYjIwZWI0MjFlZTUzYzA3OWY4MmY5IHB5M2sKKzg0MDI0IGI3YWI3N2ZkMjdiNzA3MzAzMDEwNTQ0YTNjNWUzYzMzM2YwY2FjNDggcHkzaworODQwMjUgMmM2ZDEzYzQwNTE4YmVhMjM2YzE3Y2QzNWQyZmZkOTE3MmI5M2NkZSBweTNrCis4NDAyNiBiNzIyMGU0MjlhYmI0NzQ4MDExMTQxNmFiMjE4ODIzODVjYmNjMDAyIHB5M2sKKzg0MDI3IDliZDA4MjcwMTc3NjczNjViNjU2YTA0ZjhmNGM4MzNiMDBlNWU5MmYgcmVsZWFzZTMxLW1haW50Cis4NDAyOCA0NWIyNGFkZmQwNjQ5ZjA4OGI3MjFhYzEwMjAyMDMxODM0ZGU1MDIyIHB5M2sKKzg0MDI5IGFiNjcwZTQxNGMyNjllN2I0ZGJjOTk3YWU1NTUyMmIzNDJlNzBjMDMgcmVsZWFzZTI3LW1haW50Cis4NDAzMCBkMzYwMzExZjBlNTI0NzZhZTE3ZGIwZDBiNGI1YTUzMjBmMzhmODU3IHB5M2sKKzg0MDMxIDVmMzM2NTNlMzgzN2VlZTAwNmExMTNhMDM4OTIwMzFkNjNhMmRiOWQgcmVsZWFzZTI2LW1haW50Cis4NDAzMiAzYTc5YWEyYzQ1NDlmZTM1MzgzZWI1M2VhMDY1MGU4NTg4MWUwZTUzIHB5M2sKKzg0MDMzIGYyOTIzYTE3NTFkODI1NDZiYmZiYzJkMzg3MjRmNTFkMjg5ZWYwMDMgcmVsZWFzZTMxLW1haW50Cis4NDAzNCAwZTcyMTgzMDY3ZWU3ZmU5ODBiNjFmODY5YjllOGM3ZTdlMDA5OTNmIHJlbGVhc2UyNy1tYWludAorODQwMzUgYzY4ZjI3MTM0MmQwNjVkZjM5MTFiNjM1NTFmNTY4OTFlYjU1Y2M1ZCBweTNrCis4NDAzNiAzN2M0ODc5MGQwOGUwZGY5YmMxNGQ3ZmE4MzQzYTgyNTczMmIwYmYzIHB5M2sKKzg0MDM3IDY1NmZlNjI5MmY5ZjZlOWI3NmFhMTM3MjJmMjk1MGE1ZmRkNTI5ZGIgcmVsZWFzZTMxLW1haW50Cis4NDAzOCBiMWY5OTMzNWM2Nzc0ZTdiNWU0YzEwOWQ0ZDBhNDMwY2RjZWFlMmRhIHB5M2sKKzg0MDM5IGFmYWU5OTk3ODIyNjlmMzQ3ZWNjYjJlMzRkMWRlOWJkMjlkOWM5MDIgcHkzaworODQwNDAgMWU3ZGNmYzA0MDYxOWI4YWRhNWRhOWVhMjc1NWQyMGQ3NTZiMjNjNyByZWxlYXNlMzEtbWFpbnQKKzg0MDQzIDNhMWI1YjFjMDY5YjJhNDY1MzBhMzMzZmI1NjJmZTZkNTdkNDg1MjUgcHkzaworODQwNDQgOTVjZThkYTM3ZTc4N2ZlNWNiYTVmN2NkYzdmYzZkMTkyNjVjNzZlNiByZWxlYXNlMzEtbWFpbnQKKzg0MDQ1IGQ4ZDBhYmU2MWU4M2U3YTAwOGFiN2RhOGY1NTBhOGI4ZTdmMmExODUgcHkzaworODQwNDYgMDViYTg4MjkyZDRjNWQ5Y2M2N2MwZTdiYTY0MGMyNjA1ZjcwMTk4MiByZWxlYXNlMjctbWFpbnQKKzg0MDQ3IGQ2NjdiYTkzZjAyYWM4ODcxN2ExOWU3MzA4ODc0ODgyMThjNjZmNDQgcHkzaworODQwNDggMjAzYjE4ZDVjNjI2ZGZhOTYzOTA4MTNiYTc0MDJmOTU5MmI1YjFjMyByZWxlYXNlMjctbWFpbnQKKzg0MDQ5IDc1MzgwNDllZmRlODljYjE2YjVlZTNjNmUxMzRlMDg0NTg0NzM3YzMgcmVsZWFzZTMxLW1haW50Cis4NDA1MCAzNTM0MzUxYzgzMDAxNDFhMzM3Y2E2Y2Q0NWQ3NDU0OWYwOGUxMTkyIHB5M2sKKzg0MDUxIDhkYjViZDcwMWFiMzYwZmEwMmQxZDgzNjQ1YzBlZmUwNmQ3ODMzOTEgcmVsZWFzZTMxLW1haW50Cis4NDA1MiAwMTVmMDUxMjk3YzUyMzlhZDM5MzYwZDY2NDU2MmM2MGE1MDIyMDU0IHJlbGVhc2UyNy1tYWludAorODQwNTMgYzIzM2M4NGJmNDAzYjRjYjA0Y2Y4MmI1M2ZlOWMxMDg5OTIyZjlkOCByZWxlYXNlMjctbWFpbnQKKzg0MDU0IDhkMGFiNTU1YTE2MDBkY2QyNjc1YzFkMDU0M2RhNWY3ODA2N2M2MmMgcHkzaworODQwNTUgMjY2ZjNhODc3ZjY0YzhjZTY2NzIyOTFhOGUyMDFiZGE3YWZhNmJmZCByZWxlYXNlMjctbWFpbnQKKzg0MDU2IDZkZmM3ZGExNzkxNDM0NDAyY2MwYjhlYTA5Y2M2OTRiOWU5NDYwODQgcHkzaworODQwNTcgMmIzNmYyOWMzM2ZjNmU0N2EzZTE2NjZkY2FjZDU2MWQ0MTNhMDJkMiBweTNrCis4NDA1OCA5NGQxZGFkNTU5NTUzNDc1NWQ4MDA4MWFmNjliMTJhMDNjODBjOGY2IHB5M2sKKzg0MDU5IDY0ZmIwYmQ1NWQzY2RkNGJmYTMyYWYwYzQxZGUwNzIwYTAyNTc5NDcgcHkzaworODQwNjAgOGUwOTkxYmEyOWY0NTczZGFiMzA2OGY1NWViZDFjZjU3YzI4ZDdkNSBweTNrCis4NDA2MSBmODhjZGQ5YTQ0ZWE2YzE3ZTE5ZThmNTkyNTRiZGU0YmYyZmU5MDVhIHJlbGVhc2UzMS1tYWludAorODQwNjIgOGYyZjA1OGI3ZDg5MTIyYzI3ODc0YWZhMDY5YjA1Y2U3ZmFmZjlkNyBweTNrCis4NDA2MyA1NjdkMDA5MjBlZDYzNjZjYmJhNzRiMThlOThjNzY5YTRmZTcwMjIwIHB5M2sKKzg0MDY0IDdhMWFkYmVjMGRiODc2NTdiODIyYjliM2I1ZDBjODdhNzhhNGQ1MmIgcmVsZWFzZTMxLW1haW50Cis4NDA2NSBiOWRkNDY3ZDA1NzQxODkxNjFhMmIwNWY2ZmQxNDNkZjUxMjE3ZGM5IHB5M2sKKzg0MDY2IDk5NjYyZGI5ZGM0MTk4NmRhZDRhMDcxZWY2NjBhMTBhZjIxYWZlYWYgcmVsZWFzZTI3LW1haW50Cis4NDA2NyA4MjdhNjMzZTY4Y2QzZTQ0ZDU0YWU0OTUyYzhjNTdmMDRkZWM2YWM3IHB5M2sKKzg0MDY4IDZmYjEwMTNlMzA3OWFhMDNmMzE1OTA3MWMwYjgyYTM5YWNkNWI1YzMgcHkzaworODQwNjkgMDA4NzVjYzM0ZDE3NTEyN2E2MmY2NzA0YThlZTE0MzcwMTQ2MDE5MyBweTNrCis4NDA3MCA5MDI4ZjIzZGI3NGJlNDFlY2ZlNzc2MTEzMzE0YTNlN2FlMDAwOWY4IHB5M2sKKzg0MDcyIGU3ODNjN2Q1YWUzNjQ2NDhiYWNlYzJkMWViM2ZhNTFmYjEyNTNhMDAgcHkzaworODQwNzMgN2E1NDg0OGQ0OTI5NDhmNzg3MWRlNzlkOGNhMGZjN2U2YzBiZjFmOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc0IDk4Njg2YjEwMzE0ZTk4ZDAxZjljODEwNjY1N2MyYzZkZGJmYjBlZGMgcHkzaworODQwNzUgZGU0NmU0MjUwNDMxYzZiNjRiMTliZjhlYTU0MTdhYWM2OWU0NzkyOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc2IDIwZmRkMjRkZDlhYWYyNGQzYTRlM2MwZmFmNDI3MDc4ZWU2ZDlmNTUgcHkzaworODQwNzcgNzlkNTcyZWExN2RmNDMyZDIwMzVmMjljM2E0YzE2MDM4OWYwOTFlOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc4IDZlOGY1ODc4ODQ5YzhlNmQzOWUwNzM2MWQ3MWEwZDA3MTBkMDQ0MmIgcHkzaworODQwNzkgZDE1ODgwOGRiZDVhMjY5OWE4NWMzYjVmMzY0MTE5Y2UzNzYxNTY3YyByZWxlYXNlMzEtbWFpbnQKKzg0MDgwIDY3M2M0ZThhMDFjNDdiYmY5NDU2NzJlZGE4OTRjYzI3NzQ4NjFlY2IgcHkzaworODQwODEgYjA5ZjkzZmUyOWZiZjgwNTcyYmIzZjRiZjk2NjE1OGQyOTRiZjg4NyBweTNrCis4NDA4MiBhOTI3YTU5Y2VlMDZjNTdjOGY5Mzk3NWQwOGUzNGFkYWU2ODZhYTg2IHB5M2sKKzg0MDgzIDE4Mzk4Zjk5ZmM1NWZkMjdmZGMzNjE0MzNkMjUxNGQwYjk0NzMyNDQgcHkzaworODQwODQgMTM0Mjc2ZWVkMjgwODhhNDI3MzNlMzcxYzExZmFiMGRjMGJiYjJjMSBweTNrCis4NDA4NSBlOWUwYTAwY2NmYjM1MWFhNGI3YzA0MWY1MTcyMzVjNjM2YjRlMGRlIHB5M2sKKzg0MDg2IDg1YWU0NDJmZjhhNWQzNTM1ODcyZTA1ZjRhZTZmYjg3MzNiODQ4YTIgcHkzaworODQwODcgOGNjOGNlN2MzOTA5NDExYTFiZDY2ZjllMjA3MzRkMzg4MzYyMjc1ZiByZWxlYXNlMjctbWFpbnQKKzg0MDg4IGYwOThlMWM4YmM1OTc2NjhlNDViNzIwY2NkNGYyY2U4ZjUyYjI5MmMgcHkzaworODQwODkgOTJmNzg3NzA4OGFmZTQ2OTc5Y2U5ZWIwZWMyMTk2MWViODBjNDE1NSBweTNrCis4NDA5MCBiZjE4ZGQ3MGMxODAzMDQ2MjY1ODJjZWEyMTgzYmZhYjhhYzE2MGRmIHJlbGVhc2UzMS1tYWludAorODQwOTEgYjRkODhmOWVmM2Y5OTIzNGQxNTMyYzQ2NjUxMTFkNzZkZDZlMWMwMyByZWxlYXNlMjctbWFpbnQKKzg0MDkyIDkxZDRjN2IxYmMyNWY4OTI5ZjEyZmVmNzkwNWJiNWViNDM1NWQxNGMgcHkzaworODQwOTMgNGIyM2UyNjljNGQ5OWE2ODRjNjA5NmE2ODdmNmE1MjYwMzNmNzgzOSByZWxlYXNlMjYtbWFpbnQKKzg0MDk0IDVkOWJkZjVhYTA3YmZkNDhlNzhiMzdiOTJkYTRmNGRkNTM0NWU0NTUgcHkzaworODQwOTUgZmM4OWI4ZGVmZjFlMWNjZDVkYmQ4YTI5M2MzZWY4ZDE5MDc4NjYzNCBweTNrCis4NDA5NiBhYWUzZTBjNTEwZmZlNTA2ODFlZGE3YjFjNTQ5NjRhNzg0MDBmYmYzIHB5M2sKKzg0MDk3IGQ1MmY5YzhmZTVkNjA5YjQ1Njc0ZWVmZDJiMGI2OTEwYzZkNWI1YWMgcHkzaworODQwOTggNzE1YzQ0YjYwZWYzNzM2ZTQzYWY0NjY5ZTUzZDc4ZGQyYTk5OWI0NiBweTNrCis4NDA5OSBhMjMzYmU2OGQzMmVhOGM5ZjMwMjA0N2ZjZjc3ZGNiNWNmZTBkOTM5IHB5M2sKKzg0MTAwIGU0NDMyZWZjODhiOWY4YTI0MTY1MmI4NTQ2MmY2MmYwYTI2NTUzYjIgcmVsZWFzZTI3LW1haW50Cis4NDEwMSA5MDdmNzNlMjI3YTZiOWUxZmU4MDQwZmNmMGM2MjhiZjYxODY4YjExIHJlbGVhc2UyNi1tYWludAorODQxMDIgODk5NGQ4ZDYxMGQ0NDk5ZTgwNTBiMzMwNzc0NzcxZjUyMzliMzQ3MyByZWxlYXNlMjctbWFpbnQKKzg0MTAzIDlmZTc0ZWIwMjhhYjAxZjljMzAxYmYwMjc0NzFmMjU3ZGQ5NTdhOWYgcmVsZWFzZTI2LW1haW50Cis4NDEwNCBkZWUzMGM0NjczOWViZDFjODlmYTY2MWU3NWRiZTMzZGRiYjQyYzY3IHJlbGVhc2UzMS1tYWludAorODQxMDUgZGMzMmE3ZDlkYTgwMjlmYzQ3OTMxOWQ4NThmYTY1NWNkNDMyZjlmZSBweTNrCis4NDEwNiBlM2RmMzQ1NDRkYjkwODlmMzc2YjE5MDZlOGM0ZjgyODMxZTcyM2FjIHB5M2sKKzg0MTA3IDQwODVjYzU2MGU5ZWE1MzI4ODcyZDJmNGE0N2ViNGVlODIxZmRkNzMgcmVsZWFzZTMxLW1haW50Cis4NDEwOCA3NTZmOGIzOTgyMzBiM2E5ZGU2Y2VkY2M5ZWY4ZDVjNzdjNjc0MjI3IHJlbGVhc2UyNy1tYWludAorODQxMDkgYmUwYWExZDEzODRjZjYyYTg2Zjg1NTUwOTE5NWU5ZGYxYmY5MmI2OSBweTNrCis4NDExMCAxZDgzZDkyZWZmZTgxMTA0YWE4MGI4ZTZjOTkwNmM2NDA0MzliMWRjIHJlbGVhc2UyNy1tYWludAorODQxMTEgYjA4OWVkNTc2YjEzMjViNWNmY2JmZjQ1MzQzNTk2M2YwZDVhN2U1MCBweTNrCis4NDExMiA3N2IwNTJjNjRlYmJjMmUyNzgxYTM1NTYwMDQxZGU0ZmU3NGViZmMxIHB5M2sKKzg0MTEzIDQ3MjUwODJjMjgyZjAzZmU1YWZlOWQxYTk4ZDQ1YjA5Y2E5ZDhiZTAgcHkzaworODQxMTQgMTdkNWIwMzBlODc3OTkwMmQ4MmY3NmVkMzJhNjlkOGQ1ZTcxMTMxYSByZWxlYXNlMjYtbWFpbnQKKzg0MTE1IDRkZjBkMmExM2FhMTRmMTNmYmZhMmE4ZGRhZTljYzEwMjQxZTdmMDkgcmVsZWFzZTMxLW1haW50Cis4NDExNiA0MWM2MDg3ZjJlNmRhZThmMTQyOTNmOGVhZWUyM2M1MDVlZTFmZjhmIHJlbGVhc2UyNi1tYWludAorODQxMTcgODA1OWU2YjYyNDYzNjA4ZjczZmUwODdiNWJjNWFiZmRmZDBmNGYwZiByZWxlYXNlMjYtbWFpbnQKKzg0MTE4IGUxODlkYzhmZDY2MTU0ZWY0NmQ5Y2QyMjU4NGQ1NjY2OWI1NDRjYTMgcmVsZWFzZTI2LW1haW50Cis4NDExOSA5NTJkNjUwYTBhZmQ3NjljZDYyZmU0OWRjMGVhZWJkYTI3YmQ2MTdiIHJlbGVhc2UyNi1tYWludAorODQxMjAgYjY2MmEzOWYwODIzZWE5NGYzNWU5NTM4ZTQ1Y2MwMjcwZGFlOGM0ZSBweTNrCis4NDEyMSAwYzhiZmQyODVlZjk0MjgxNzBmMjdkOWQyMThhOWRkNTY4OGJhYzlkIHB5M2sKKzg0MTIyIDA1YzRiYWE4NzU0OWMzZDVlMmVkMGY5NDRmMTY3NjVhYzkxZDgxZWQgcHkzaworODQxMjMgMDQ5OGQ2OGRhZDVkMzc5MWMyZGQ0NmEwNTk3ZTJjZTZkYWM0OWMzNyBweTNrCis4NDEyNCBiOTEwNTllNTlkMGRjMjI1M2U4Yjk3YWQ4ZTVmMjNlZjY0MDhkMDYzIHB5M2sKKzg0MTI1IDc0NWJkNjM5ZWQ0ZGNkNmFjYzhiYWEyZGRmMDMyMzY1ZjI0YWU0YWQgcHkzaworODQxMjYgMGFkYTdjZTI0ZGUyY2Q0OTE3YThiOGM2ZjZjM2E3YjgwM2Q0NDZhOSBweTNrCis4NDEyNyA5N2Y0N2VhYzA5ZGI0YWRlODdhYWViY2IxNDNkOTIxOGQ0MjExMjZhIHJlbGVhc2UyNy1tYWludAorODQxMjggNjBhNDc3N2E3M2EwNjJmZjU3N2JhOGRiNjJkNDgxZWU4MDhkNmM0NiByZWxlYXNlMzEtbWFpbnQKKzg0MTI5IDI3Njc4ZmYwY2RhMTQ0ZDFhMDM5MGRhYTMyMzA4ZjhmMDBmZmZlZTQgcHkzaworODQxMzAgNmNiNzc2ZTU3Mjk2YmEzZjFjNzU0ZTU3NWY4NWEzYjhkOTBkNWI3NyBweTNrCis4NDEzMSA0NTQ4ZjRhYjE5Y2VlM2M0M2ZmYTlkZWMwMTFiMDcwOWNlY2RlNTBkIHB5M2sKKzg0MTMyIDc3YmY1ODI5NmM4NzA1OWY2YzQ2NDllNjIyODAzM2Y0ZjlhNTVkMTUgcHkzaworODQxMzMgYjJhOWE1OWMyZDU3MmJmYTI0OTA4OGM3NDU2NzIxMWU0Y2NiYTQ5ZCBweTNrCis4NDEzNCBhMDQ5ZTIyMGYwMzA5NjA2ZDg0NzA0MDZiNjA3MzRjNjM5YjBlNjkxIHB5M2sKKzg0MTM1IDZjYzY1NTQxNmQ2MzliZmUyODI2MzNiNTBkZGZlZDgwMDFkMjA3MGUgcmVsZWFzZTI3LW1haW50Cis4NDEzNiAyNGUwNjgzM2I1YjNiNzI3ZGJiMDAwNmNiNTNiYzNkMGVkZDM1ZjMxIHJlbGVhc2UzMS1tYWludAorODQxMzcgOWRkNzYzNDIzYTU2NmRkYzY4YTJkMDhlZDgwYzVmOTI2ZTk1ZDA4YiBweTNrCis4NDEzOCA1ZmNlMDFhNTFhYTVlNTE1NDU5YzFmYmNjMzJmYjUxZTM3NWIzNTlmIHB5M2sKKzg0MTM5IDRiYzlkZmQ5NWM4MDc1NmI2N2ExZjVhZjFhODk5OGFhMjM4YmEzZjUgcHkzaworODQxNDAgMjEyYTE2ZjkwNmE2NzI1YzgxODliNmI2YTk4NWU5YWRkYWEzZDBkYSBweTNrCis4NDE0MSA2ZmQ5NmMwMWI0MzcxMjZkOTA2NjMwOWI5YzQ0NTcxYTM1NzRmNTFmIHB5M2sKKzg0MTQyIDk5MGE3NjZmZjk4MzM1NjBkNzA4ZjIzZmZkNjRkOTAxNmYyYWIxM2QgcHkzaworODQxNDMgY2EyYTg1OWU5YmY2MzUxMGMwZWMzZThjN2E5MDc2MWY4MWRmYjViMyBweTNrCis4NDE0NCBjYWVlYmY3NDk3YzM4ZDU3ZDczNTE4OTQ3MTQ3M2Q5N2EzMmZjZTg3IHB5M2sKKzg0MTQ1IDI3ZTE3NjE2OTMzZWY4OWYyYzExOGM3ZWE4M2JmZmUzN2U1NmFjOTkgcHkzaworODQxNDYgZWUzZGNkZmUyZjg3MzY1ZjViMDMzOTZhNWNhZTMzNWM2ZmM4MmQyNCBweTNrCis4NDE0NyA3OTI1YmJkZmM4MDVmMDEzNzczMTU1MTk4MWEyMjFlMzM5MDUyZjY4IHB5M2sKKzg0MTQ4IDZlZDM4MTM1NWQwZDQ0OGEwMzFkNDZiMmVmNTE5MWVkMTAzZGExMGMgcmVsZWFzZTI3LW1haW50Cis4NDE0OSAzNWU2N2FmODA2ZTUwM2Q0MDZkMTg2ZGRmMjYxZDdjMzdkYzdhZjQxIHB5M2sKKzg0MTUwIGI2MjRjNzQxN2FkNGU2ZTkxYmJjMzliNzAzMWMzZWUwOWEyYWY0MDMgcHkzaworODQxNTEgMmE0Y2VlYmRmY2ZiMjU4ZWQ2ZWRhZmI1YWRkMzYzNzhkOTA3MDBkMCByZWxlYXNlMzEtbWFpbnQKKzg0MTUyIGZlYmFlYTFhNjg3MWVmZmQ4Mzc5NDE4MGZlMzI2Nzk3MzNlYWE5N2QgcmVsZWFzZTI2LW1haW50Cis4NDE1MyAzOWUxZDM4MjZmNGVhMGVmMzkxY2NiMTlkM2ZkNGY4NGU5NGI5MDE0IHB5M2sKKzg0MTU0IGYzZDU4MzdlMzFiNzg2YzNjNGIzNjlhOWUzOTAxYmE5NWI4OTFkMWMgcHkzaworODQxNTUgM2ZhMGE5NTUzNDAyNGQ4OTYwOTgwYWQwNzk5OGZjYTU2NjgzYmNiZSBweTNrCis4NDE1NiBmZGE5ZDFmZTdmMDZiNzZkMmI0NTY1NGYwNDRhZjM5NTQ4YTFiZTA0IHB5M2sKKzg0MTU3IDUxYTc3ODQ2MjliYmFkODRkYThjMmU3YjMzOWQ0MmRiZTRjNjA5MTEgcHkzaworODQxNTggMzVjNTNlN2UyMjgwZGM3YTk4MDZjNjBiODc1Y2JkNDhlYjI0MjE4YiByZWxlYXNlMzEtbWFpbnQKKzg0MTU5IDlhNTQ5NDBhMzMyZWU2OTE3N2VlZjc5NTlmODI1MmMxMjgxMjg0MGMgcHkzaworODQxNjAgZjc4MzI3ODc5MGNhNjM5MzkyMzNhMTJiNTQ2ZGEwY2NmMDU4MjdhOCByZWxlYXNlMzEtbWFpbnQKKzg0MTYxIGEwMTk5MmUyMTljMDkwMzM5NzZiNjhiYjgzYjQ4ZmNhMmE3MWZhMmQgcmVsZWFzZTMxLW1haW50Cis4NDE2MiAyYjMyMzEyZGNhYjE1MDZhZTllYmY3ODVjYTY1YWViNGQyZWNjZWQ1IHB5M2sKKzg0MTYzIDY4NmIxOGJmZmI4NjRmYWU4M2IzYWRlODczNDY1MTIyNzEzNThhMzcgcHkzaworODQxNjQgZmM3OTRhZGQ1NTlkNWFhYjc0NGNkN2Q2NDRkMjQ0MzYzMWEwMGU1MCBweTNrCis4NDE2NSA0OTQzMDc4YzkwYzlhZDQ4NWYyN2RlMGVlNmVkNTFhMWEyOWFkYzUzIHB5M2sKKzg0MTY2IDcxNDAwY2UwYzcyMWQxNTcwOGUwNDVmNmUxNjdhZDA2N2EzOGMyYzggcHkzaworODQxNjcgYmRkNzZhZDNiYzc2YjAxMTYwMGFiNjNhZTg3YjZjN2Y5NTEyOGE2MiBweTNrCis4NDE2OCBlZTc2NWE2N2MwYjExYjE5NTQyYzU2MzVkNzEzMWQ5MTk5YTJjNzljIHB5M2sKKzg0MTcwIDBlZDc2YzdiOTg0NzRiZDY0NWVjM2IxNDg5YzYzOWQ4YTcwYTdlMGEgcHkzaworODQxNzEgYThkOGRlMjNjYjc3ODVjNDA3MmFkOTFjZTUxMDYyYjBjODc0YmQ2ZiBweTNrCis4NDE3MiBjNzA5MzUxNDU4YTY2YWY2OTk3ZWQ4NTQwMmFmNDUxMjdlNjBjZDBjIHB5M2sKKzg0MTczIGMxMzBmNDMyZjI0YTAzOWJmNmJlZmZkZTgxMzBjY2RiMzAzOTcwMTEgcHkzaworODQxNzQgY2E1NTc5NDhhNWNmNjdiNTIwNjQ0NTc2MzJkOGQzOWI3MTQwMmRjYiByZWxlYXNlMjctbWFpbnQKKzg0MTc1IDZjZGE1ZmQwYTNjZjIzZmMzOTVmYWRhMGFjZDAzZmM5M2M2ZWE5YjEgcmVsZWFzZTMxLW1haW50Cis4NDE3NiBiODcxMjQ0ZDdmNzk3ODkwZjcwZDU0YzBmYmIyYjQ0NTMxYTc4M2FkIHB5M2sKKzg0MTc3IDhmOTdjNjRiMjMzMzYyMTYwYzRiNzM3NTg0OGMzY2VlZjViYWMxNTAgcHkzaworODQxNzggNzQ5YzIyZmZhMzZlYzc1NzdiZDgxMzVjODQxMzNhOGEzYWRiNTg1YiByZWxlYXNlMjctbWFpbnQKKzg0MTc5IGMzNzA4NjZmMzBhNzVhYTlmYWM2MjYzNzI5Zjg0NDlmYzQ3NWQ0NzYgcHkzaworODQxODAgZGY5NjEwNjRmODExY2ZjZDE5ZDk0M2M3MzQwNGU3NDgxN2ZhYmVlNiBweTNrCis4NDE4MSAyM2E1OThjMDE5MTFmMjA0MjA1YTRlZDcxNDA2YzJlMjc1ZWIwNTE3IHB5M2sKKzg0MTgyIDY4N2NjODU0Y2I0YmZkZjliNDk4YTMwNTNkZDVlMjU5NWViN2FmNjggcHkzaworODQxODMgZTY3ZTA3Y2I1MTcxY2Q4OTUyOTgyOGFiNTczZWI1OTgzNDRiZDFhOSBweTNrCis4NDE4NCAwNWEzZGZkYTA0ZmZjNmEzMjVmODk2MzEzOGZlNWExODFjOWU3ZThiIHB5M2sKKzg0MTg1IDc5MGQ0ODc4ODg3NGM1MTgxMjI0OGE5NWExZWUxZTc1N2Q3N2IyNWYgcHkzaworODQxODYgODBmOThhZjE3ZGVmODgzZGE0MzVjNzdlYmU4NDQwNzkzZjMxMjI0MyBweTNrCis4NDE4NyAyMjhlNmYwMDFhZTEzYjE0MTFkOTFiZjE1YzkyNGVjNGQ3ZTY5ZTcxIHB5M2sKKzg0MTg4IDlhZGVhOTQ1NTc1MzllNGNjNWM2YmRmYjY2MzdhZWE1YTJlMDRhZTEgcHkzaworODQxODkgZWEwZGVjZDJhY2ZiNjJkN2IwMGQ5MTc1MzdkNDI3NmI2NzYwYWQwZSBweTNrCis4NDE5MCA0ZjgzMWQ0NTEyNWYwZTU5MWI2N2MyZTJmOWVmMDg3OTJhZTkxNjhhIHJlbGVhc2UzMS1tYWludAorODQxOTEgNjVmZTA1OWI5N2JmMzM4OTI4YjJlZjk4ZmFlYTgwMDQ5MjM2N2U2NyBweTNrCis4NDE5MiBhYzEyZDk0OGE4OTU3NjQyMmU4MTZlZGFmYWZjMWE1Y2Y5YWNiNDFhIHJlbGVhc2UyNy1tYWludAorODQxOTMgYTllNzhmNmY2OTRlNjVhOThhNjI3OWM1NzlhNzQzMGYzMDc0M2EyYyBweTNrCis4NDE5NCAyY2IyNjYzZTMzNjg5MGY1OGU2NzMyMGRmODViNGE3YWQxZGE1MDNlIHB5M2sKKzg0MTk1IGFiODRhMGM3ZDYzYzYwZjZjZDU0NzRlZjFlYTRjZWE0Yjg5MWY5MTggcHkzaworODQxOTYgZjY3MjNkNTVkZTRiNmNlNzExMThmOTQyNTJlNjkwODAxYzUxZmFjMCByZWxlYXNlMzEtbWFpbnQKKzg0MTk3IGQwZTlmZWJmYTAwYWM3MWFmMDk2OGY5ZjI0MDhiMTBhZDJkOWNmOTggcmVsZWFzZTMxLW1haW50Cis4NDE5OCA4NTc4MDYxNDdlZTczNDFkNmI2MzRkZDdkYTA5ZDM3NjBlMjRmYTdlIHJlbGVhc2UyNy1tYWludAorODQxOTkgZjI0MzA1ODU5NjNjNTg0NWVlMjExZjM0YmFiODdmNmQwOGIwMDE4OCBweTNrCis4NDIwMCBmODcxMmEwN2IwYjExMzIxNmMxOGZiZDM4ZjlhMjkwNDVjMDM2NzNmIHB5M2sKKzg0MjAxIDA4MmVhZmEwODgwMjcyMWZhNzM3MjViOGRmNzUxY2YxODk2ODU3YWQgcHkzaworODQyMDIgZjY1YmJmYmI4MjNmZmMxYWY0MGVkMWZlMzBhNzcxNjA0NGQ2MTNmMSBweTNrCis4NDIwMyAzOGNlOTQ3YzI4ZmI0MDE2MTNiMThkNzQyOTQ4NDU0NmVjYjdmMTY5IHB5M2sKKzg0MjA0IDkxNTVkYjY1OWMyMGZmZjFmNzFkYjc3YjU0YjA3Zjg4MzE5NDE1ZDAgcHkzaworODQyMDUgYTRlYzdhNmE2ODk1ZTRlNDZiODg0Yzc1ZDg1ODc1MDAxZDc4MjA4NCBweTNrCis4NDIwNiA1ZDNjYTFjMDE4YWU0MzQxMGUwM2QxMjBhODVjYmY1YmRlMTAzNmZjIHB5M2sKKzg0MjA3IDA1MmY0MmQwMjIyZmQ5ZjU5MDM2N2NkZDZkZDc5NTgyZThiYjNhNjYgcmVsZWFzZTI3LW1haW50Cis4NDIwOCA2NjE0M2MyMzY4NGRhM2JmNTRmNGM4OWNlZmRkZThmZjBkZDNiMTA4IHB5M2sKKzg0MjA5IDVmZDI2ZjQ1MjYwMDBhZjNlYjk1NGIzY2NiNDBhYTM5ZTY0NjY4ZTcgcHkzaworODQyMTAgYWY0YTkxYzk0MDcxN2I5MTZlNDY5NDY5Y2UwZDdhYTE1NzU0NGQwOSBweTNrCis4NDIxMSA4OGU4NDNjZTExNjBlODIwYTM0ZjNlMzA5YzY5ZmZkNjQ5YmI2MjhiIHJlbGVhc2UzMS1tYWludAorODQyMTIgYmE2ZmRlOGEzYTk5N2Q1NmRhZTAyYjc3NWI4MGUwNGJlMDk4MjhiMSByZWxlYXNlMjctbWFpbnQKKzg0MjEyIDhjNmM3MmI2ZjFlZDBhNjEwNTU5YjBmOGM4M2M2YjNiYzM3NzU2ZmYgcHkzaworODQyMTMgNTRjOWM4NmFkMTA0YjI3YWE0NjY0YmNhOThkYTU1OTIyYTlkNWU1OSByZWxlYXNlMzEtbWFpbnQKKzg0MjE0IGMxOGVlYjk2OTEwMmYyNGFkOTZhZGUzMTZiMTRiYmZkYzYzYTM0NjQgcHkzaworODQyMTUgMzhjZWVhZTBkMWYwNzk2ZjAyMTYwZjAwMzZmMDNkNzU1Y2Q2MDc4ZSByZWxlYXNlMzEtbWFpbnQKKzg0MjE3IDU0OWE0MGNhMjA3NGQ3MjM4ODU0ZDMyOTAyOTZjOWEwMzA1OWFhOTMgcmVsZWFzZTI3LW1haW50Cis4NDIxOCAzNTI4YmE3YjQzMDVjYTc1YmY3YTA2YzFjZDMxYTE2YTVmMTRjMzQ5IHB5M2sKKzg0MjE5IGYyYzdlNGIxZDgwNDVjMTIzNTE4YjdkNmFmZGQzMDYxNDMxNDY1YmQgcmVsZWFzZTMxLW1haW50Cis4NDIyMCAzOWRhYzBhODg5NmEyNzg2YmExNWNlNDQ0Y2IyNzQ4NTBiMzc0OThiIHJlbGVhc2UzMS1tYWludAorODQyMjEgMzBhMGRjZjVhM2Q4YTU4MWI1ZWUxMjQ4NDcyNTA1OGY5NjU4ODNmZiBweTNrCis4NDIyMiA1YTI5OWQ3ODU5ODc4MzYxNjdlMjA0NmVlODI5YTIwMTA0YjFhOGQ1IHB5M2sKKzg0MjIzIDg3ZDQ2OGFlM2MzYzJjZjcxNGU3YjhhMTg1YTRlNTVhZTc1NjVkYmEgcHkzaworODQyMjQgZDRlMjBmOWYxMjdhOWY0ZmRlNjlkZGI0NWM2YTc2NDc5Yjk4ZmQxOSBweTNrCis4NDIyNSBhYjYzYzQ1NzhiMWJkMTQ0MTRiZWZjODExMDRjMzk3NGM2ZGY0N2U0IHB5M2sKKzg0MjI2IDY1Y2U5OTIzNjg5Nzg2NTg0NjYzMTFjMWZhZDQ2YTIxYTlmYmIzMDQgcHkzaworODQyMjcgZjNkYjUwNGNkZmIxZjNmNTUzODc5MWE1NGViNzgwNDNjOGNhMTdkOSBweTNrCis4NDIyOCA4Mzk3ZjJlMDA3ZWJjMjRlNGVhYTRkNzFiZDY0ZjIzNTdlM2YzZjg2IHB5M2sKKzg0MjI5IGZhN2QxZDVkMmFmYjYwMTVhOTczMGFmZmYzOWZiN2FkYmZhN2YzMzAgcHkzaworODQyMzAgN2QyYmQ4OTU1ZWRiODNiMDk0ODkyOGU4YjRkM2Y2NTM1M2NhZjk5YyByZWxlYXNlMjctbWFpbnQKKzg0MjMxIDBjM2Q3NjNmMzhmMTQyYTc4NWVhYmU3NzA4YmQ4ODU5YTNiZjA3NDUgcHkzaworODQyMzIgOWQ1OTE2YWI2MGUwZjMyNDExMTdjOWViMWMxMjA5MmY0ZDM0MTkzMiByZWxlYXNlMjctbWFpbnQKKzg0MjMzIDk5NjYwNGNkZTQxZjVmZTgwY2Q2ODRlYzkxY2ZkMzc4MWU5OTA5MGMgcmVsZWFzZTI3LW1haW50Cis4NDIzNCBhYmNmOTU3N2Q1ZGIzZmM1NTRkMDQ5NzNjNTJkZTBlMjFmOTM5OTQ3IHB5M2sKKzg0MjM1IDFlZmU4MjNlMWYxODg1ZTdkMGQxN2JiYzQyYTRjZjhhZWRlYjlhMzAgcmVsZWFzZTI3LW1haW50Cis4NDIzNiBjNGY1ZDk4ZWU4N2IwM2IxZThmNTcyOGE2OTA0YmViYWY4NDk5YmZhIHB5M2sKKzg0MjM3IDQ5N2E3ZTI4NGU0ZGM4ZTAwMzQxZGEwY2U2ZjYwZTU2ZDA4YmU1YzYgcHkzaworODQyMzggMmYzYWM4MzRiNTM2MzRlZWJhNTgwOGY1MGE1NDNkMDkwYzYwZGI1ZiBweTNrCis4NDIzOSBiMThjODBjNjg3NTQwMGJmYTlhYzUzMTRiMTQ5MTI1ZWRmYmM1NWZjIHB5M2sKKzg0MjQwIGRmZDAyMjk3NDhlZmQ0YzFhNjViYWQ5MWI3OWFlNmVkYmE0MDhkYWMgcmVsZWFzZTI3LW1haW50Cis4NDI0MSA5N2E1ZmIxYzk2Y2ViM2UxODVlNDg0MjQ3Yjk1MDFlNDkxOWQ3N2RlIHJlbGVhc2UzMS1tYWludAorODQyNDIgOGUxODRhOGJiMDBlNjQ5NzQxYTI0NjNiODkwN2VjNjQ0YjNkZmNmOSBweTNrCis4NDI0MyA0NjFhMjBhYjQzM2ZlZTRiN2I3YzBjNjI1ZjE4OWVjYWY1MGQ2ZTQ4IHB5M2sKKzg0MjQ0IDMwMmZlMjVjZDZiMTE4OGYyYmJkNWYwNDhkNWRiM2Y4N2UwMTc5NTcgcHkzaworODQyNDUgMTBkZjkzODcyY2E3MzA0MjAyNzVhYjViNzgzODg1OTcxY2IxZGVjYiByZWxlYXNlMjctbWFpbnQKKzg0MjQ2IGY1ZGVlMzBjY2QzOWZkNTBkODQ5NGQ5MDQ1NjhhNWI0OTMwOGQ5ZDAgcmVsZWFzZTMxLW1haW50Cis4NDI0NyBmOWFiOWM5MmRiOGRiMjRkZTZjNWU1ZTk0MzVhMTA0MWNmN2UyZjQ2IHB5M2sKKzg0MjQ4IGFhY2IxNTI5MWQ1NDYxMGNlMzFiNzVmMDg0ZWYyOThiMDJlMmM5NzUgcHkzaworODQyNDkgYTM0YmUwM2Y3MDlhMzQ5YjYxMWYyM2I5ZDZkY2Q1YTFhMDM2NzY0YyBweTNrCis4NDI1MiAwMWIwYTZjYjEzZDQzYzllYTM1ZjUyZTBjNGU1NDkzNTExM2M4NTJjIHB5M2sKKzg0MjUzIDZlMGZlMWI4M2ZmMDk1NmQ1YWM1NjU0MDk3NGFiZTNkODRhOGU5YWUgcmVsZWFzZTMxLW1haW50Cis4NDI1NCA5YzRlODU3ODVkNGU0YzVlOTQwNjhjZDJlNjg4NDJkY2VmOGYzNGU4IHJlbGVhc2UyNy1tYWludAorODQyNTUgMDEzMGU1NzRmNWJlNWEzODcyN2QzNGVkMGMwYjhlNTMzZjAxMzkxNCByZWxlYXNlMjctbWFpbnQKKzg0MjU2IDdmZjNmYTQyOTcyMTgzYTViYTIyZDQ1YmE5OTkwNGQ0YWVjOTU4ZWQgcHkzaworODQyNTcgYTVhNTg3MjA1MGUzMDM4NGRmODY3OTk3ODM3YTE2Mzg1ZjdkYTUzNSBweTNrCis4NDI1OCBiMDE3YTRlZjc2OTRmYWVhOTNjZDRjMGIwNTI4ZmVlMGM3MTI1N2JjIHB5M2sKKzg0MjU5IDRhY2ZhM2ZlNmE1ZWI1MmMxNTJiZWFlZGNjNmQ3ZDYyZjNlOWNkMTUgcmVsZWFzZTI3LW1haW50Cis4NDI1OSBlNDljNTNmNzUzNWMwOGQ1MTc2YTgxODNmODA5YWU2NzhjNGNhOGVjIHB5M2sKKzg0MjYwIGU4MTkwNmU5MmY5OWFlZGU2NjQwYTY1MGZjNzQ1NmRmODcxZWM3MjkgcmVsZWFzZTI3LW1haW50Cis4NDI2MCA2YWI2NTY3NjViY2EzODdmNzVkMjZhYjc0ZjhmYWZiYmU5MGIxZjRhIHB5M2sKKzg0MjYxIDM1MzA0YzJmZTllMGJiODgxMzFhMDViYTMwYTY4ZDA4Mzk5NTJjNDUgcHkzaworODQyNjIgZTkxODQ5Y2QwNjY4OWRkZTMxNzVmMTJiZDAyZjliNDM2YzU0ODRmOSBweTNrCis4NDI2MyBmMmU5MWUwOGMxYzU3ZjBhZTAzYWZmODVkYjgzNDdmMGMyMGQ4ZDMxIHB5M2sKKzg0MjY0IDNhY2Q4NmY4YzU1MjQ3M2FiOWI2MjZhOTk0MTRjYjRiMjBiMTJiMDMgcHkzaworODQyNjUgMWM4ODM0ZjNjZGI5NjM4NzdjNzI0NDFhYzkyNzk0MTE4NGM3NWZiMyBweTNrCis4NDI2NiA1OTQ4ZTQ4ZmJkODgwY2QxNGVlNGQ5ODQyMGFjZTkzZDdkYzI5ZGRmIHJlbGVhc2UyNy1tYWludAorODQyNjcgOGY1ZmFmNTY5NmU3YWYyZTExODEzN2UxNWI0YjY1OWNiYzk4ODM4NCBweTNrCis4NDI2OCAwMmUyZDllYWI3MzAxOTljNWJhYTk0NjE5MDJiMzAyNmRjNjZmNWEwIHB5M2sKKzg0MjY5IDcxNmQzZDEwMmMwYWExMjZkNTkxYTU4ZDI5NGUxYzBlZTkyM2FhNTEgcmVsZWFzZTMxLW1haW50Cis4NDI3MCBhNDEyY2VlZWYwZjFlZWJhYzdmZTdlZWE3ZDhkNWM1ZGE4ZGI4NWMyIHB5M2sKKzg0MjcxIGNmMzk5ZGUxMmI1NDI3ZDdhYmZiZDk0NGExY2NiM2NkNWU1ZmRkNDggcHkzaworODQyNzcgN2UxZTM0M2I3MDhiMTgyZjc4NzVjNDcwMzc1M2ZjZDRiMzZjMjU4MyBweTNrCis4NDI3OCBhYTI1Yjg2NzdjYzNmNzlkNGI1MzU0ZjhiY2FjZDFjYTEwZmZkODg3IHB5M2sKKzg0Mjc5IDUxYTI0YTkxNTQwODU5M2I4OWZkMTBjZmEzMjlhNjJiMzU0Y2NiNjcgcHkzaworODQyODAgYjUzNWNkZTkzMjczODNmODFkZjAyZWViMGQwOGJmNzE2YmRjNWE4YSByZWxlYXNlMjctbWFpbnQKKzg0MjgxIDFhMDg1OTYyMzg4MmY3MWRlZWYxNmY1OGZkZjAwNDYyMTc2OGUwODEgcHkzaworODQyODIgNDJjNzBmMTdjMmZlZGU2MTE2MTA4NTY4YTc1YjBlZWMwOGIzYzczYSByZWxlYXNlMjctbWFpbnQKKzg0MjgyIDlkNGRjNTg1NWM1MTViODA0NTI5M2YxYjQwYTZkZGM5Y2IxMTYzMDEgcHkzaworODQyODMgYmE1MzZhYzdhYjRlNGRiMDI4OTk2ZWJlOWJjYzUxMjE1OWQyZGJkYSBweTNrCis4NDI4NCBlNzliYTU1NTkyMmExNjg3YmI3MTlkYmY3ZGI5Mjg3OGNjODEyZDI5IHB5M2sKKzg0Mjg1IDc2ZTljZjg0NTY3NjAyYjkwYTdjNGE3NzA3NjU4ZmViMjQ0NGVhZWIgcmVsZWFzZTMxLW1haW50Cis4NDI4NiBiOTVlYzE3MWY1MDM2NDNjN2M5NmQyY2JhMjE0ZWMwYTBiY2E4ZGQ2IHJlbGVhc2UyNy1tYWludAorODQyODcgZWZhYTQ3ZTkyYThlODdlMDMzMzMyODY5NTgyZWU0OWYwYWYyZTMyYiBweTNrCis4NDI4OCA3ODk1YzQ1NTNiZjU0NDkwNjdjNTBmZWZkODkwNGM3NzgyY2UxMTdiIHB5M2sKKzg0Mjg5IDkwYmYyMjQzNTUyZDMzNDNhNjU4MzZmNWM2NTdjNDkyZjcyNzUyYmQgcHkzaworODQyOTAgZTJiY2UxYzU5NmJlYjNhOWVjZTdhYTNmOGE3ZjFiN2I0NzAwY2I3NCByZWxlYXNlMzEtbWFpbnQKKzg0MjkxIGU3MTZhYTIwOTRmYThkOTZjYjM3NWQwNjQzNjFhNjllNTNiYzRlZDYgcmVsZWFzZTI3LW1haW50Cis4NDI5MiA5Zjg3NzFlMDkwNTI3N2Y4YjNjMjc5OTExM2EwNjJmZGE0MTY0OTk1IHJlbGVhc2UyNi1tYWludAorODQyOTMgNmRiNzgzNWIwYTk1YWZjMWQ0ZjBhZTlmMTczOTQ4Yjg1NGU3YmEwZSByZWxlYXNlMjYtbWFpbnQKKzg0Mjk0IDJkZTlkNDQ1NzA4MjEyM2Q5MDA5YTdmMjVkMGQ5NGNjZjY1YjcyNTMgcHkzaworODQyOTUgYzFhODNmMmM3MDg3NTdkZGQyY2YyYjIxYWIwOWE1MTA1YWQwZmVjOSBweTNrCis4NDI5NiBkNGExZjkxNDJmN2E5ZDQ3N2VhNzg0MmZlZDBhYzYzZjgyMWY0YTgyIHJlbGVhc2UyNy1tYWludAorODQyOTggZGIyOTM2MGNhZDBmYWMzYTY0OTkzYjk4ODZmMTRkZjdhMTdhMmJjMiByZWxlYXNlMjYtbWFpbnQKKzg0Mjk5IDRiMTI5NmIyNjJjYTRiZWFmYzVhYzU3Y2VjODI0OTc3YzY0NDg4NTYgcHkzaworODQzMDAgZjkxZjI5ZWY0ZWU3YjVmNWVjZmJjOTA1ZTI3ZDlhZmE5YTAwOTk3ZCByZWxlYXNlMjctbWFpbnQKKzg0MzAxIGMxYzRmOGY4NTA3MGRhNGQ3YjY5YWUzNmU5ZTAxMjFjOTA1ZTE1ZmUgcHkzaworODQzMDIgOGZlMzZlMmI4ZWQxM2MyMjIyZmQxZDViN2Q3ZTlkYTA5ZWExOThhMSByZWxlYXNlMzEtbWFpbnQKKzg0MzAzIDgwYTQ4MTRlY2Y1ZDY1MjFkNjFjZTYwMGI2YWE1YjZkNjk4ZGExYzIgcHkzaworODQzMDQgYmU3NmIzN2ZlN2ZkODQwOWQzZDJmMjdmMjgyZTliNDFlYzNkODFmYyBweTNrCis4NDMwNSA2MTgwZjQ1NjQ3MTRkYjEzM2VjZmQyNTM3YTBkNmRlZjNkOGU2MTEyIHJlbGVhc2UyNy1tYWludAorODQzMDYgZjY1ZTljMTU4YzA0MDYyM2E5NjdiZTUzYjA0ZWM2NDJmNDc2ZGFkZSBweTNrCis4NDMwNyA4Njc2OTljOWI2M2ZmNTg0NWVjMDJmMTc0NGUzZTc2ZGZkNzE4NTEyIHB5M2sKKzg0MzA4IDE0ODhjZDEwM2Q3YjgyMTRmN2ExMTAzMDA3NDBmZWY2ZmMzNWFkNWUgcHkzaworODQzMDkgMWUyM2MzYjJlMjMyNTlhOTBhOTNiZjRiY2Y1NTU2MGM1ZDBjYmRmYyBweTNrCis4NDMxMCA4N2JkZjUzZmY0YmJmY2E0Mjk5NjUzMGE3ZjBlOWE4NWI1NDMzMWM4IHB5M2sKKzg0MzExIGY2YjNlNjRiNzYyMDY3ODAyODZiYjI1ZjM1YjRlMzBkNmU5NmYzYmYgcmVsZWFzZTI3LW1haW50Cis4NDMxMiAwNTNmZjY1YmU1NGNiMzYzYzVhMjg0ODE1NmZhMjNjYjc0MjcwMGI5IHJlbGVhc2UzMS1tYWludAorODQzMTMgMmNjZDA0M2FhZDVjMTA5MGFjNTk0YjNjOTZhOTI3NDE0NzFlMmRjMCBweTNrCis4NDMxNCA4NzAzN2Q4MzgwYmY0YTM5ZWYxMzdmMWY0MDg4NDBiOTBkNjk2M2E2IHB5M2sKKzg0MzE1IDNhYzlhMzdlNDI5YmE2Mjc5MWFmYTI2YmVmZjJhNDllNjAzMzY4MzcgcHkzaworODQzMTYgOTRjMGY5NzkxN2RkYzY5MjgxNzhmZjcyZDBjMjFlYmFmMDc1YThkZSBweTNrCis4NDMxNyAwNDgyYjMwY2E0NjYyOTNlZTgyY2JjMzU2YzIyNWM4NTkzYzc2OTBkIHB5M2sKKzg0MzE5IGFlZmJhODk5ZWFlZWI0MjQ3YTFhZjJmMmFiZDExMzlhZGM3NDViNDIgcHkzaworODQzMjAgODMzMDM0NmI1YzVmYThiNmZlYjk0ZGVjODQ5ZmZhNzEwZDE4MmEyYyBweTNrCis4NDMyMSBlYmZiOTRmMmNiYzM1NjRjODkyYzVkYzg2YTM4YThiMDkzZDU1MjQ5IHJlbGVhc2UyNy1tYWludAorODQzMjIgMTkwMzc1NDQ1MjQxOTg2YTNhODQ3YzhhNGQ3OGU4MTRlZDU0YTBhZCByZWxlYXNlMzEtbWFpbnQKKzg0MzIzIDY1NTIwNTU2MjY5NTAxZTM5ZmRhZGI4MzBmMjc0ZGNkZmUyNmNlOGQgcHkzaworODQzMjQgNzkxNWQyNjZlZTJiMjVkY2E0NjVmNzA0NjUyZDM0ZTE5MjFjMDE1MiByZWxlYXNlMjctbWFpbnQKKzg0MzI1IGVkODNkNTQ2MzE1ZDJlMGEzYWIzZTA2MDVmYTA1MzYzNmQ4OWFjM2UgcmVsZWFzZTMxLW1haW50Cis4NDMyNiAzMjVkMDE2YzE5ZjcxZjg0NzQzOTJkY2Q3MDZiNjdmOWEyNjg1N2EwIHB5M2sKKzg0MzI3IDlkNGFmZDhlODYyMTE1NGMxZjhlNjk1YjYwMmY5NGY1YzQxMDNiN2QgcHkzaworODQzMjggZGViYzI4NDJiNGIxYmY5NGM4NDYwODE4MjIwZTQxMDUxOWJiMDIzMSBwZXAtMDM4NAorODQzMjkgMDExMmYwNjRjZWRmYWIyYWY4ODc1YTU4OWEwYzVjZjFiNDc3OTE5MiBweTNrCis4NDMzMCBkMGI0NjBhNDdmN2ZmYTU4ZGY5OGQ1YzYxMDQyMWUwZTc1MmQxZmYzIHBlcC0wMzg0Cis4NDMzMSAwOTNhMDk1YWE3NGM2NDg5OTk2NjRiOGY2N2YwODliZWQ4ODRiNDJmIHBlcC0wMzg0Cis4NDMzMiAxYWJhNzMzOWZhNmMyYjg4ZTUzNWVhMWYxY2FmNDk1MGI4NmNmODg4IHB5M2sKKzg0MzMzIGNiMWY1ZDA1NDUxMGU0N2E0Y2IzMDY5MzZmMjFhM2I1NWE2MTUyZDkgcHkzaworODQzMzQgMzRkZmVlNTkwYTMwNzFiMWVmZmQ0MDRjNjFlYjJjMmFiMjUzMTFiMCBwZXAtMDM4NAorODQzMzUgZDcxNjIyMDczMThmNjdjYjA4YWI0OGY5MmU4N2M3MzlhYjQ4MTI4ZSBwZXAtMDM4NAorODQzMzYgMzNjNGNjYWZjNGY1MzhhMTJjZDZkYWQyYzczYjhjMjhhZjU5ZTY4ZSBwZXAtMDM4NAorODQzMzcgOWZhYzE5NzBkMzgwNmYyM2I1ODI3YzNkYWM1MmI1NDZjNzZiZTcwYyBweTNrCis4NDMzOCA3OGU0MDMxNmUwMjM0NmFmYzY3N2Y5ZDM1YWE0Nzg5MDE1YTEwMzcxIHB5M2sKKzg0MzM5IGVhYWUwZGY2ZDA2MzBlMTUyNDY1MWJjMGM2ZmVkM2ZjY2RmMzJiNjggcHkzaworODQzNDEgNWRjMDZhMDU5NjMwYWRjMzZmY2ViYWM4MWQ1OWQzYmY1MmZjMDE1NiBweTNrCis4NDM0NCAwMjY1ZDVmN2JkMDcyMTY2YTJiODNhYjk0NjkzYzg4NjVhM2QxNzg5IHB5M2sKKzg0MzQ1IDRjOTc4Y2QzNjQwZmM5ZTdjNDQ3OTRiOTY0YmM1ODRmMzhhY2ZkZjUgcmVsZWFzZTMxLW1haW50Cis4NDM0NiBiMmU4ZGNkMTUwNDAzNDFmY2Y3NjE4ZDIxYTA2MGVmNTE4NDc0ZjY2IHJlbGVhc2UyNy1tYWludAorODQzNDcgOGY2ZTQxYzNhMjE4YTk4ZjAwMjZmNTEzM2MxZjlhZWY4NzBmNWNkZSBweTNrCis4NDM0OCA1Yzg5Zjk1NzFiYTU0OTBlYzQ2NTIxZmI3Mjk4MGMxMWIxMjFkM2MzIHJlbGVhc2UzMS1tYWludAorODQzNDkgM2UyMGFiZDdkZWY2ZTM2MDA4YmFkNWE0MGJhNzkzMGQ5Y2M5YTRlZCByZWxlYXNlMjctbWFpbnQKKzg0MzUwIDRiYjMxN2ViNDk2YTA4NzU3YTJiY2ZkYzhiNTViMjMzZjlkZDM1ODYgcmVsZWFzZTI3LW1haW50Cis4NDM1MSA5Y2JhOTkwNjhjNTRhYTlmZThlY2NlZmI4YjFiNDU2YzZiNDBmNWI2IHB5M2sKKzg0MzUyIDkyOTc5NzQ2MDRmZmRiMzE5YTllNmQ5ZjExODRhZTI0ZWM2MWJhZjYgcHkzaworODQzNTMgOTE1ZGE5ZjJkYTE5OWU4YjU0YTRkNTRkYTBlZmJmODA4ODg1YWUxYiBweTNrCis4NDM1NSA4MGQyZTdkMWQ3ZDUzNGZhNDY1OTEyY2FiNGFjNDAxZjQwOWI2MDY3IHB5M2sKKzg0MzU2IDljNTFmMzgzNjU2MzJhMWI3Yjc4NWEyNzhkNTE0YjI4MTZlYTBmMGEgcHkzaworODQzNTcgNzI2NzA1ZDAyYWRkMjFlNmQyYzFiYzU1MDdhZjNkMzZjMTQ0Y2M0MCBweTNrCis4NDM1OCBlZmU5ZjZjOGEzMWQ0ZmM4MGQ1MzcxZWJmODhkMDVjZWZiM2IwZjU2IHJlbGVhc2UzMS1tYWludAorODQzNTkgOGFkNTliNTIzZmQ4YTA2NDI2ZjU0MGQ1ZDM2MTcyYmUxY2Y1MWVkNSBweTNrCis4NDM2MCBlMWRjZGNiNTIwMWQ0ODRmOGEwZTVhY2IzODU2MWZmODRlMzhlMjM5IHB5M2sKKzg0MzYxIDI5NDEwMWY3N2NiZWNhNGExYTc5MTQ3MzRkZjBiZTg2MDZiNGY2NTkgcmVsZWFzZTMxLW1haW50Cis4NDM2MiBlNmI0NTZmOTM0NDdhMTAwNWNhYjFmNDY2ODViNTNmZmQzYzJkZjk2IHB5M2sKKzg0MzYzIDA0MGVlOTRhOTM1MGVhMjQzNzgwMjA1MGEyM2IzOThiMjI5N2VhZTEgcHkzaworODQzNjQgZmU3MjE0YmM2ZDY2YjMzOWZmMWZmMzFhMWZjNmIxZTlkMzc3OWJmOSBweTNrCis4NDM2NSBhNDkyZjFhYzA1NzU0NzllNmI4ZWRhNzBlZDcxNTdkMDdmMDEzNmI5IHJlbGVhc2UzMS1tYWludAorODQzNjYgNTM3MGQ4MWE1ZjJkMmIzMDA0ZWM4MzVlMmNjNmM5Y2NiOTA2NDdiMiBweTNrCis4NDM2NyAwYTc4NGY2YWNhZTc2ODI0Y2FhYTM0NTZiMTZiY2FhMmU3NmY0N2EyIHJlbGVhc2UzMS1tYWludAorODQzNjggZjkyMDQzYzdmZjk4NDBlMzhiZDYyMmFjYTFkNTFhNDlhMTc0MzQxNCByZWxlYXNlMjctbWFpbnQKKzg0MzY5IGVhODkzZGIyM2U3MzhjNjA4OGM1MDQxNDM3ZmVlMWI0YTU0OTFhMGUgcmVsZWFzZTI3LW1haW50Cis4NDM2OSA0NzQzNzM4Y2NhZmUxN2FjOWU1YTNjZTZkMzQzMWQ4MWQ4ODc4YjBlIHB5M2sKKzg0MzcwIDg0ODgzNjA3ZTIxYTRiMWFmZWFlNDhiZTgxNjI1OTYwNDFmNDkyYzEgcHkzaworODQzNzIgN2IyZDBkNzdlNGFjNmU1NDc3M2FlOTg2OTkwYzQyNGY0ZDA2M2E1MyBweTNrCis4NDM3MyA4MDM4OTI5MzMzYTljNzgyOWI1NzAwZDA4NWZlMmYxZDFmOTExYmM1IHB5M2sKKzg0Mzc0IDA4ZjdhZTEwY2M3OTJhZWFiMDhlOTZkNDJjZWM1MWU4YmM5ZmI3YTggcHkzaworODQzNzYgY2E4ZjhjNmNjMmIxYjI4MTdlMTQ0Yzc3MGNmZjYzMjk2OTY5NzNmZiBweTNrCis4NDM3NyBhYzM3YTI4ZGRjOGY0OWI0YTliNGE3ZWE4NjdiZGE1ZjgwOWQ3YmNjIHJlbGVhc2UzMS1tYWludAorODQzNzggMTU3MGY2ZTlhNjg3NDU5ZWI3ZWVmNGUxOWQyNmE0MTJkYWY3ZGM4OSBweTNrCis4NDM3OSBkNTAzZjdhNDU0NTY2Yjk0OGJiMWM3NmQzZjViYWZlNThhZTRmYmY1IHB5M2sKKzg0MzgwIDYyOTMwY2IwNWVkOGI4YTE0NGFlMjJlMzViMGIwODZmOTI1NGFlNDkgcHkzaworODQzODEgMDMyNjhiZjlhMjU2NGY4NGZjZjFjODU5MjgzMTAwOGVmNzAzMmZjMCBweTNrCis4NDM4MiA0ZjI5MDVlYTc4MDk2NzNmMDQ1MmYzMmY5ZDFkMmJlNWY5OGMxYTg2IHJlbGVhc2UyNy1tYWludAorODQzODMgYTBlNzU2ZDkyZDYwMDYxMGY5YmI4MTljNWEzZGQ4NjMwMzczYmQ0YyBweTNrCis4NDM4NCA4YzIxNjBiNWM4MWFmN2E4ODIwZWY2NGM5YzYxOGJmYjMzMGQ1MjgwIHB5M2sKKzg0Mzg1IDljYTgzYzY0Zjc3YWUxNTU5MjZkMmYwYTY5NTQ4NmUzMmFiZDhiMjcgcmVsZWFzZTMxLW1haW50Cis4NDM4NiAyZTU3NjE1ZTYxZjBmMWFjYTZlNTE3ODY4YTZiNTVjYWIxZmEyYzk2IHJlbGVhc2UzMS1tYWludAorODQzODcgOWZkMzI2YWY2MmQ0NWM4ZGMyYWM2OTAzMjI5MmNhYWRiODFiZjA1ZCBweTNrCis4NDM4OCA0OTgwYjNlOWU4NGExODE0OWI2YmZiNzBkYzhjNjczMzhjMTNhOTM4IHB5M2sKKzg0Mzg5IDdlOWFiZDUzYjkyOThlNzBmZjZlNGFjZjA2OGI3ZGUyMmZlMGU2NzggcHkzaworODQzOTAgMjk3M2RhYTQ3MjRiMWVkNmFmM2Q5ZWJmYjk0ZWM1YTkyMTk1NGM0ZiByZWxlYXNlMzEtbWFpbnQKKzg0MzkxIGQyNDg3MGQwMGM0MjU5ZjgwYzc3NjRjZjM5MzZiMjBiNjIyZDYyYjMgcHkzaworODQzOTIgYjNiOGQwOGY5ZDA2ZWNmYmQ4MzYzYjRiYjI4NWIwYjA2MjU1MDZhNyByZWxlYXNlMzEtbWFpbnQKKzg0MzkzIGRhMTlkMDJhYWFhYTNkNmZiNzhlMGU5OGEzYWI4ZmY4OTk1MGM3YmQgcmVsZWFzZTI3LW1haW50Cis4NDM5NCA1YTMxMDFmNTU4ZWRkZTM0M2FjYzQ0MzlhZGQwZTQwOWU1ODI0YjkxIHB5M2sKKzg0Mzk1IDQxMzQ5ODE3NDY5NzY4ZjdmMmMyOGFiMGNkZmYyNTRkOWZmZjNlMzggcmVsZWFzZTI3LW1haW50Cis4NDM5NiAzZDFjNzI2MmFhMTRkY2MzODc4ZGE2NDI5MTc1YTVhMWQxODkyNzlmIHJlbGVhc2UzMS1tYWludAorODQzOTcgOTQ0MjMyNTIxNjI0YmI3OGNiMTAxZjgzZmM5ZTMyYmI4MWEyMTU5OSBweTNrCis4NDM5OCBkODUwYzM3YjY2YjZmNmZkMzA3NWE1NmQwMjk3NzhkMmUzYzA0OGQyIHJlbGVhc2UzMS1tYWludAorODQzOTkgMDYxZTI3MDMyZTYxOTM2MzJmZGNmYThmNWQ5MjFkZTYzM2IwNjZhYyByZWxlYXNlMjctbWFpbnQKKzg0NDAwIDJkYzE3ZGNjOTczNDY5ZjI5ZmZhZjNlMzJlMDNmOWViZWQxNTJlYzcgcHkzaworODQ0MDEgZGU0MjA3YzliOWMxMjhkODI2MzhlNmM4ODcwNzdkZTkwYzUxN2U3YyBweTNrCis4NDQwMiAzMDQ1ZWI5NDA1OTdiYzJjNDRiMjQ1ZTRlNzQ2Y2ViNDdkMDc1MWYyIHJlbGVhc2UyNy1tYWludAorODQ0MDMgZmE4YjU3Zjk4N2M1ZjE1Yjg0NTk0NjM1ZTA3ZDJhYWEzZjkwMzQ1MiBweTNrCis4NDQwNCBkNjY4MDdjNTAzOGJmYjY2ZjRmMzMzNTgwYzhhN2Y5NmJlMjA0MWVmIHJlbGVhc2UzMS1tYWludAorODQ0MDUgNmJhMDMzMjJiYzIzM2JiZGQyODM1Y2E2Njg1ZGM4NzQ5OGQzOGYxMSBweTNrCis4NDQwNiAwNjNiNTU0ZDMxNTNmMzZmNmVlNDdjNmM0MWI1ZDBlMDE1NmVmMTZmIHB5M2sKKzg0NDA3IDRkOGEyNWE0ZDFmNjA4MDVkODI0YzE0MDdkYjAwNjJlYWQ0NGFlNmUgcHkzaworODQ0MDggOTI1ZTkxMTNmMGFhZWZmMTNiNjNkZWE3ZjhlODJlNDAyZGUyZTQ2YiBweTNrCis4NDQwOSA3YTM5NWJjZWFjOTFhZjM2MGQzM2I1ODMzOTk0NGEzNzFjODc3NTI4IHB5M2sKKzg0NDEwIDQ1NDdiMTQ5MTE2OTAzN2MwZGY1NDI4MmY2YTQ1MDQzZTNjM2YwMmEgcmVsZWFzZTMxLW1haW50Cis4NDQxMSBmYTRkNzhiOWUzYTJhNmI4NGI4NDU4ZWFkNzJkNTdmNzQ0MTFmMTU5IHJlbGVhc2UyNy1tYWludAorODQ0MTIgNjE5YWZjODFjOTczMWUxNWQ1ZTFkYjJmOGI1NTUzYmJhMmUzNDY0NyByZWxlYXNlMjctbWFpbnQKKzg0NDEzIGZhOTQ5NTMxNmNhOTAwZDE5MTc2MTc0ZDE2YmQwMGQ2MjdiN2ExYzQgcmVsZWFzZTMxLW1haW50Cis4NDQxNCBhM2I2NDE5Mjk2ZTU4NGJmN2JkYTUyOTAxMmM1MTU4NDlkNzk3ZjcxIHB5M2sKKzg0NDE1IDI1ZWRiNmY0MzhiOTI2ZDk5YzkxZDdlOTNhYmIzNGExZDA3YzI0NWYgcHkzaworODQ0MTYgNTM4YWU2MjI0YTVlYjVlZmVkOThmN2E1OGZmOTlmNmQwOWNjMTMwNiBpbXBvcnRfdW5pY29kZQorODQ0MTcgZDc5MjE2ZmMyMWNlNzUxMTljYjk3YTFiNTNkYjE2NmY0NDBjNmQ3MSBpbXBvcnRfdW5pY29kZQorODQ0MTggODJlYWMzYzJjNjk3ZGYwYTEwYmIyZjBmNjZhMmI0ZTdiMjU4N2U4NSBpbXBvcnRfdW5pY29kZQorODQ0MTkgZWQzZDg2MWM0OTBjYTJmYzcwNDNkZDcxOTQyZWM1NGZlNTkxNzYyNyBpbXBvcnRfdW5pY29kZQorODQ0MjAgYTM5YmE3YWNiZTI4NzA0YTI4MjE1OTQ5NzIxYmU2NmRkNmZmOTM1YSBpbXBvcnRfdW5pY29kZQorODQ0MjEgZTY2MGU3YmQ3OTlkNzBmY2E3YTcyZmEzNGQ4ZjRjZDgyM2U4MjE2YiBpbXBvcnRfdW5pY29kZQorODQ0MjIgODA2NDFjN2E2ZjRmOWMyNGZmZWZlY2FjMDc2ODQ3MTlhMGRiNGFiMSBpbXBvcnRfdW5pY29kZQorODQ0MjMgM2Q3ODUyYjg2MTI4NGQ5YzY3MTdhNWVlYjg1MDk0NjBmNTRkYTE2ZSBpbXBvcnRfdW5pY29kZQorODQ0MjQgYjIxZmQ5NGY0ZmIzN2IzMzgxODYzOGZjY2YxMDMxMjA1OWY5NDczNSBpbXBvcnRfdW5pY29kZQorODQ0MjUgZjBkMGEwNzBmMTI4ZjJiNzBmYWZkOGEzNTE3ZmFlZjRmNGE1YmMxZiByZWxlYXNlMzEtbWFpbnQKKzg0NDI2IDkzZDZhZDg1MjM1MzQxZGZjMjE3Y2Q4ZTRkN2FhN2U2NzUxZjRlMzIgcmVsZWFzZTI3LW1haW50Cis4NDQyNyA4MjIxMWIxODUwZDRkYTJiYzNkNzAyZjE2YTQ4NTgyOTVlNDBjZGMzIHJlbGVhc2UyNy1tYWludAorODQ0MjggZGNiMmFhNDFjZDc4MGEwMDNjZDdkMTBlZDJmYjU1YjZiMTI1OWIyYiByZWxlYXNlMzEtbWFpbnQKKzg0NDI5IGEwZDhkZTA0YzNhODI4NTJiYjg3N2ZhNzAyNGRmNjUxN2I2YjhiZTAgcHkzaworODQ0MzAgMWYwNGIwMDc2ZmQ4MTVlMzk0ZDdiYzRiZjdmMGY2YWIwYWI4NjJmOCBweTNrCis4NDQzMSBhN2NhZGQ3YjM0YjUyNmYwMjc1N2QzNDlhYTM2OWRhNTNmYTA0NTUzIHB5M2sKKzg0NDMyIDQ3YjkzY2RhOTFkZjViMmJkMmM5N2Q3MDRlMDJhNjI1ZjhiYzZkZmEgcHkzaworODQ0MzQgODFhOWFjNzNkNjE5NjMyOWZiMjBlZDA4YzAxNGUxZDk0OTkzZmY1NSBweTNrCis4NDQzNSAwMjYwZTA0ZDJjZmM4Mjk4OTJiODIxODg1N2U5NmFjYzQ5ZDJlNjFiIHB5M2sKKzg0NDM2IDExZmM3OThhOGI0MzI3MjJlMDlmNmJhMGI0NzgzOTZhOTRjYzExMTkgcHkzaworODQ0MzcgYmQ3NDM1YTg3MDhiNjM3ZWYyZmEyYjhiZmQ3MzVkNTRkYmIwOWZkMSBweTNrCis4NDQzOCA1NWRiNjBmY2FiNTQyNDI3MGI1ZTE1ZWY1ZjU1YjBiYzY2ZjYxYTBkIHB5M2sKKzg0NDM5IGI4Y2ZiYmZlMTgzOTA2N2U3NWUyZTczZTEwODFhYjQ1NTczMDJjMDIgcHkzaworODQ0NDAgZDFjNmIxYWI1YmE3ODU0MDgxNzI0ZWE1ZDZlYzk4YTE3NzViMTExMSBweTNrCis4NDQ0MSA4Yjk0ZjE1Y2I2NTBiYTFhYWRlYjI1OTIwMGY3MzZjYjFhMGY2YmE4IHJlbGVhc2UzMS1tYWludAorODQ0NDIgNGFkN2VmZDkwOWJjZTk0YmMyZmExZWVjMzIzNjQxMzQ0ZDQwNjZhNiByZWxlYXNlMjctbWFpbnQKKzg0NDQzIDE2Y2VmZGZlZDY4MjBkMmM1NjQ3NjIxOThlMTQ4ZGFjMjliZGI0ZDIgcmVsZWFzZTI3LW1haW50Cis4NDQ0NCAxNmQ4YTRlOTRkZDA4NzI0OTYyMmFmOWIzZGVhODVmNTVjNjA1ZWM4IHB5M2sKKzg0NDQ1IDMzY2ZhYTMyYzhlODBlNzVlYzU4YmU5ZGIyNWIyMTg2MmFjOGNlZGYgcmVsZWFzZTI3LW1haW50Cis4NDQ0NiA4ZGJkMzE2YmViZGY5ODcyNTFkY2EyMmZlMmI2MDQ3NGMwOWUyY2IwIHJlbGVhc2UyNy1tYWludAorODQ0NDcgZDU2YjNjYWZiMWU2NTVlZmI4MWM4NTY4ODQ0OWVkYjJlNjA5Nzk3ZCBweTNrCis4NDQ0OCBiNjVkMDM3MWE3MzE1OGI0Yjk2ZTYxN2YyODA4OTAzZmM1OTYwZTJlIHB5M2sKKzg0NDQ5IGI4ZWU4MDg2M2Q2M2ZhYjgwN2ZkN2MzOWY1OWE5Y2NjYmViYTNjNTUgcHkzaworODQ0NTAgN2QxNzUyZDYyMDUwYzlhMzM2MGZlODQ5MjZlYjA5YzNiY2MyZmM5ZiBweTNrCis4NDQ1MSA2MzMxNjZkNGZjMTJhZDkyYTdkOGMxYzc5ZThmM2FiN2QxZWYwNGQ0IHJlbGVhc2UzMS1tYWludAorODQ0NTIgODNhNmZmZjNmNjgzMzRmZDdjYmRhNGMzMTc4MWMxMDI1MTEzNmQ1YiBweTNrCis4NDQ1MyAxMjcwNDUxZjQ2MDQ5ZDdhOWQ5MTY2ZWMzYmMwM2JkMGIxOTRhZTgzIHJlbGVhc2UzMS1tYWludAorODQ0NTQgMzU2OTlmMzg3ZGE2ZTdkMmQ2ZGQ2NzZiMThjNjRlYzBhNzI5MjRhNyByZWxlYXNlMjctbWFpbnQKKzg0NDU1IDk4ZjMzN2E2OTU3YzEzYzkwOGVkYTBiOWVkNGQ3M2U5NTJiNThiODYgcHkzaworODQ0NTYgNzI2NDBlNzExMzQ0MThhNzAwNjVhNzU2MzRiYzFkZTk4NDdkYTg2ZSBweTNrCis4NDQ1OCA1ZTMzYjI3YzcxYTg2MTcyMTk3NTkzNGU4YmZlM2MwNzVkZjE2YjNmIHB5M2sKKzg0NDU5IDIwMjc0N2RhZTNjZmFlYjRkNjhiMDgxODExMjRlMDAyNjMzNDgxZmYgcHkzaworODQ0NjIgYmE4N2NhZWVjYjkxNGY3YjE4MzY2NzQ0OGM5NzBhNjgzNjc1ZDc3NyBweTNrCis4NDQ2MyBiN2NiMjc3NzNlNzI5MWY1ZjA2NDUwYjZhMDM1NmUyZTJlNmMwNWMzIHJlbGVhc2UzMS1tYWludAorODQ0NjQgNzAwMTljNWNmMzVmOGVjN2NiM2ZlMjkyYzM3YzhkZTM2NWQ4N2I5YSBweTNrCis4NDQ2NSA5ODg3MThlOWY5M2QxNWUyYTkzN2E2ZTFjODZjMGRiNDJmZDdmYmM2IHJlbGVhc2UzMS1tYWludAorODQ0NjcgMDZlNWZkNDk1OWU4YTFlNDA0MDVmMGQyZjdiMmNiNTA3YzA5NGUwNyBweTNrCis4NDQ2OCAxZjQ3MjA2ZDU3N2YwN2FjZTNkMjFjZDE1N2FlYTRkMjAwOGE2OTU3IHB5M2sKKzg0NDY5IGY4YmE5NTU4YWRiZjkxNWJhMmY5MjM3MDE0MmQyOGJjNWI0MzliNjIgcHkzaworODQ0NzAgM2Y3NzY0YzQwYzBiZmI5NTJhOTU1ZDc3YzYwYTk2OWUwZjY0NmJlMyBweTNrCis4NDQ3MSBkYmM5NTc2MmNmNTg2MzVjNjVkMTcxNWQxMThlYjdiNGE3MjZhNTAyIHB5M2sKKzg0NDcyIDUyNGI0NDRhODA5NTA5NWE2ZDljYmFjMWJlMjBlNDQwZDU1NTNkYmYgcHkzaworODQ0NzMgZTkyYWRhNjQyZGJkZmRiNzE3ZDMzYzhhYjM5ZGJlNzdhMTIzOWVkYiByZWxlYXNlMzEtbWFpbnQKKzg0NDc0IDg5NWFlYjQ1OTVjMmY3MGU2YWQ1MDYxN2I0ZmJiMmJhMWIxOTVlNTAgcmVsZWFzZTI3LW1haW50Cis4NDQ3NSA0NzJkY2Y1MGNhNzFjODdmYzgzMWI5OTk3ZmZiNzU1MDJmYmZmMmMyIHB5M2sKKzg0NDc2IDUzMzA1YmFlZjU4OGQ4NTdjZTEwYjA2MjJjMjE4ZTNjMzRhNTVjN2YgcHkzaworODQ0NzcgNDA1MmQzZTI4NjViZjhhMWFmNDdhYjQ3OTE3YzAwYzk5MTE4MWNhZCBweTNrCis4NDQ3OCA1ZTU1ZTk1ZDVjNzc0YjRmYzJjMTIzNzUxM2ZkNjU5ZDIyM2Q5ZjRmIHB5M2sKKzg0NDc5IDY4ZmQ0MzA4NTlhNDljM2E4MzdlMWU4YTExNzk2YTU1MTFjOGEyNmEgcHkzaworODQ0ODAgZWE2ZDA4MmE5Y2Y4MDg2N2NjMWIzMjBmMWZmMjVhYjEwMTk3OGRmMyBweTNrCis4NDQ4MSA0MGViNTllMmYyZDM1MDZmZGU3ZGE1YTc1ZjllMjI1OTA4YTI2MTg4IHB5M2sKKzg0NDgyIGU1YWUwM2VmN2ZjMTNjODU3MmU2MzQ0YTM4NDc0ODYxZGFmZWE5MTEgcHkzaworODQ0ODMgZGU4ZDNkNzkxZTZhN2Y0MWNiODVjM2U4MDk2YjBhYjAwNzYyZDZhZSBweTNrCis4NDQ4NCAwMzI1NGZjODM5MDExNjNkM2M0OTNjNGY0MGM3ZDA1ODBkZDc2MzY4IHB5M2sKKzg0NDg1IGU5Y2QxNWQ1MzllMWEzZmVkYTAwNWNiYjllY2IzZmVlMjk0NWUyNzIgcHkzaworODQ0ODYgYjJiMjYyYzVkYWE4NjMwNzNhMDBjMmIwZmY0NDlhMDkxZWU3MjAxNiBweTNrCis4NDQ4NyBiNzBkMzNlZWZkOTYwZTRkMGMyZDZjMzQ4YmUyZDU2N2YyNTliOTJlIHB5M2sKKzg0NDg4IDAwYzY5NTdjNzcxOTBiMjkxYmRiYWMzYmEzNGZjMGFlMDliNzBlNmYgcHkzaworODQ0ODkgOTBlYjRjOTczZjUyYWZmNTFhNWZhOWYxMzUyMjNiNjQzYzg5NmM3NiBweTNrCis4NDQ5MCAwYWY5NGVlOTlhNDg0YmRjMjUyMWIzZDJiYTcxMTk3NDFlNTg3NDMwIHJlbGVhc2UzMS1tYWludAorODQ0OTEgOTE5N2JhZTYxOWFhNDBiMjU5ODJhNTQ0ZDQyY2UzNDc0NjgxZDZhOCByZWxlYXNlMjctbWFpbnQKKzg0NDkyIGVkNDVhMjZmNjY2NGRhNzE5ODYyMzRhYmRkNTUwZDI2MjFjNzI2ZDcgcHkzaworODQ0OTMgNDMzMTllMjkyZDY0YmExOWE5MjgwNzI3YWY3ODJkYzM2YTA1YTMwYSByZWxlYXNlMzEtbWFpbnQKKzg0NDk0IDU4YjgxMDFlYWMyMzhlNjA1M2FkMTgyNWExOTZkM2JmNjQ4MGI0OWEgcmVsZWFzZTI3LW1haW50Cis4NDQ5NSAwZjZlZTU5YzJhNzYzYTgyYTc1YWVkZTU5NTEzYjQxOTg5N2EzZWM4IHB5M2sKKzg0NDk2IGRhYmMxMTUxMTZiZDc0OGQyMTFlZDgzZmYwYjlmMjE4NTA3OWU1NWYgcHkzaworODQ0OTcgZDJiOGYxMTAzMjEyNGJiYjI3MjNjZjcyMjIzNTY5ZGM2ZWY1MDk5NiBweTNrCis4NDQ5OCBmOTk0ZTZmZDA2ODA2MjE0MjQyOTI2ZjY4M2VkODAzZTYzZTNjODBmIHJlbGVhc2UzMS1tYWludAorODQ0OTkgOGVjZTI5YzhiYmEyOGVkNWE2ZTI0MWM0ZDBlOGJlNGQxNDcyZGIwOCByZWxlYXNlMjctbWFpbnQKKzg0NTAwIDFiNWVlNmU4NDVjZGYwMTczN2Q4OTU2ZjllNzdmMzZmNWM5MjU3MDUgcHkzaworODQ1MDEgNzI1MjMxMjExMjczMjdjMDIyMDk2ZDMwZTdiMjhhNGE1YTg5NDk1ZCBweTNrCis4NDUwMiBjZTU0NmExYjlmZWMxZjYwYmVkYjNmMzE0NmQwNmYwOTg4MDVjZDdkIHB5M2sKKzg0NTAzIGE0MTVjZjk0YzdkYTdmMzU4YmM0OTVlZjhhZTVkNjMxMTY2YzhiMjcgcmVsZWFzZTMxLW1haW50Cis4NDUwNCA1OTk3YWUyZWFiMzcxOTE3ODc0YjczZDI2YTMxMzNjN2MzYTBiMjYyIHB5M2sKKzg0NTA1IGMzYWQ4ODNiOTQwYmU0ZWVhYjc1MmIwZWFiZGVmNmRmNjAwOWMwMDUgcHkzaworODQ1MDYgNzhlYTQ0MjJkZjRjMmM4ZDgxM2JkMzdjNTYwNzcwNTk4MGJmNmNiZCBweTNrCis4NDUwNyAyM2NmNTQxODZmNTY1MzIwNjljZjgzOTM3NzQ5ZThhOGM4NjkwNGE5IHJlbGVhc2UzMS1tYWludAorODQ1MDggOTgwODNmODc2NDU1NDcyNjJkOTgxNjI3YzhiMDY0MWNlZGFmYzM2MiByZWxlYXNlMjctbWFpbnQKKzg0NTA5IDk3MjA4MzZhYTNjYjg5MzE1NmQ0NGMzNzc2OWFkNTc0Yzk1MDg3YzcgcHkzaworODQ1MTAgNjFjNDQ3OTMyMzhkMTcxNGVjZDBmNjlmZGQ1MWE5MDhhMjRmYzJmMCBweTNrCis4NDUxMSBiMzJjYmZhOTY3Mzk0ZTMzOTJlYzQ0YjAxZjU3YTgzODViYmJiZWI3IHB5M2sKKzg0NTEyIGM3OGViMDE2ZDFjNTE0ODZkYTYxMWY0MDc5NTY2MWY3MTVkNjc3NWUgcHkzaworODQ1MTMgYzRiMzRiMmE1Y2MwZWVlYjU3MjVhYWQ3YzAwMzc3N2RjMzAxNWQ3ZCBweTNrCis4NDUxNCAwYjBiZDgxMDI4OTFiYjkzZTZlYWJmNjA1NTBiNjNjNjAzNzg1MTI2IHB5M2sKKzg0NTE1IDdhMzRkZWYzNWRlNzRiZDcyZmI2NWMxYWVjZTNjMjhiODZlMDU0Y2EgcHkzaworODQ1MTYgM2MzNjg0OWYwNjM5N2I1YTFmNDYyMDRjZDM1NDU0YjkxMWM2NzM1ZiBweTNrCis4NDUxNyBhOGQ1NGU4MDIzZjIxYTYyZjNiMzZiYTM4MmYwNGRiYmRhYzM1NzljIHB5M2sKKzg0NTE4IDhiYjE2MmIwMTkyNmY1YWY5OGJmNDk5YmVhM2U2ODg1MWQ4ZGY4OTYgcHkzaworODQ1MTkgMjYzYjEwNzdhYjk3NWIzZGVlMDllNjYwMzJlYzYwZTk4OTNjMDJjNSBweTNrCis4NDUyMCAwZDg2MTQwNzU1ZjBkNDk1MzkzZThmNjYxMDE1NWZmOWJkZWVhOGZmIHB5M2sKKzg0NTIyIDU2ZGMyYTVhZjIwYTFhZWRiZWVlNDkwOWNhYmQ2ZjAxNWQ1NDc5ZjMgcHkzaworODQ1MjMgNjIwOTg3NTFkYTY3YjVlZWY5YmI4NWIyMTU3MTIyYTIyZGMwNzE0ZCBweTNrCis4NDUyNCAxNjExOTEyOTMyNGQ0MWZhZjM0NDdhMzY5MzAxOGYwNTMyNTJlZDc1IHB5M2sKKzg0NTI1IDdkOWI0ZTAxOGM2MmU5MjNkY2U5NTJlZTY4ZTAwZWYyZWFiOTE5YzAgcHkzaworODQ1MjggNzhjNGRkYTdjZGM2MzczN2ZhMjQ4N2UxNTI1MWRmMWU5NWEyYjhjMCBweTNrCis4NDUyOSA1MTA0OGY2Mjc2Y2U4NGEzYzk5MTk1OTQxZDA1MGZiYTJjMGVmZWQzIHB5M2sKKzg0NTMwIGRjNTg5MmY3M2UwMzZkZjg0NjBjZGVjMDJjZDdhMWNiYTJjMDUyZWQgcHkzaworODQ1MzEgNGY3YjU2Yjc4NzI1MjU2MTdjNTZiN2JmYzg0OTdmMmUzMGQyMWE3MSBweTNrCis4NDUzMiBhNzVlOTg5Mzc1NDJiYzUzMjM0MzI5ZDA2YzQyMTU3ZTdlZTBjYzY2IHB5M2sKKzg0NTMzIGIwYWI4MzJmODkyMTI4MTg4MmU0ZTIxN2ZjMGQzMzA5YTA4ZmU1MzMgcHkzaworODQ1MzQgNzgxNGRjOWYzMWEyNWM5Mzc3ZWM2NmM1M2UzMTljMjVhNjY0MWI0MiBweTNrCis4NDUzNSA3ZTBkODY2Y2E4NzE0ODI0Y2IyYTlmOGU1NGVlYmM4NTk4MzhlNzY4IHB5M2sKKzg0NTM3IDdhN2I1MzFiY2I2NGQxMjVkZDNiYjAxZjRiNzAzMWE3MDA0NTk4YTUgcHkzaworODQ1MzggNzg4Nzk3MWRkYTQ4M2JjYmZmMjE5ZjFlYmE1OWQzMGYwZWU0OWYxZCBweTNrCis4NDUzOSAyMTM5MTYwMjg3YTExYTJkMDZlYWFiMTYyMmVhOTMwZTMxMTE1NjRmIHB5M2sKKzg0NTQwIDU2ZDQzNzNjZWNiNzNjOGI0NTEyNmJhN2IwNDViM2M3YjNmOTRiMGIgcHkzaworODQ1NDEgMWQwZDMzYzA1MTVlZThiYzZmZmU2NzRkOWExYzJlZjY5YzkxMDUzYiBweTNrCis4NDU0MiA1Yzk5ZjhjOTBlNjY0MTY1NGEzM2QzNzdlZjIwYmEzM2Q4Nzg5MTlhIHB5M2sKKzg0NTQzIGMzNDg5MjU3NWJjMGU0YWYxMTEwMDUxMDAwZjk3NmExY2I0MzEwY2UgcmVsZWFzZTMxLW1haW50Cis4NDU0NCA4N2FhNjJiZDE3MTU2ZTllMjg4YWRjMDIxOGQ3M2FmYWZjMzMzNTdiIHB5M2sKKzg0NTQ1IDhlZjY4ZWJlYzBlMWUyZTZiMTY4ZmMxMjdmNjc4YjVjYTQ5N2Q4MWYgcHkzaworODQ1NDYgNjljYjA5ZjI2NDI0MGNhM2MzMDMxNzYwZGYzYTEzNGQ2MGYyNDU1MCBweTNrCis4NDU0NyBlNTU4YWM0MjVhNTE4NWJmMWI1NjA4MzExNjI0ZDA5NTZlZjEyNjI0IHB5M2sKKzg0NTQ4IDA3MTIyNWFmNjRhM2Q3MDU2YjBkNTM0NmEwMGRlOTdhYzEyOGUzNjUgcHkzaworODQ1NDkgNjU3Zjc5NTE5OWI5ZTdlMzQ5MTI3ZWZmYzJmZmUyOTc2MzVlNGZkMyBweTNrCis4NDU1MCA2MzI0ZDIzOTYzYTcxOTA0NWM1MzRmY2IxMTNhNDFmZDYyZjI3ZTkyIHB5M2sKKzg0NTUxIGQzODkzNzQ3MWY4OTg0YWM5NjA1YTllNTdiYWZiMjJjNzFkYzYxNzIgcHkzaworODQ1NTIgMzlhYWEyYTdmZDRiZjZlYTI1NjVlNDNjZDE1ODJiNDE2YjMzZGNlNiBweTNrCis4NDU1MyAxZDM3NGU1YmEyZjEzMmViOTliN2Q1NWM2ZGM0MTFjZTJlZTdmNjA5IHB5M2sKKzg0NTU0IDQ5NDQxZTg4Y2NjMTRhZDQ4ZmZjMWMyMWEzNjRkMTE2MWI3Njk1OGUgcHkzaworODQ1NTUgZDkzOWM4MGM2NjZiZDM3MzhiNDA3Nzk5ZTI3NmQ1ZmFjNDhmMzExMSBweTNrCis4NDU1NiAwNjJhYjUxNDc0ODc0NTk3Y2ViNjVlMTNhMzg0NDczYTlhMWE3NzcyIHB5M2sKKzg0NTU3IDA0N2E5ZDdjYTI0MWRjMWI4Y2ZmNmJiYWM4ZDA5M2ZiOGM0OGRjZWYgcmVsZWFzZTMxLW1haW50Cis4NDU1OCAyYzJhMzhlMGNmMzA3NjU1MWNhYzg1NzdkMTZkZWFmNGIxYjlhMzMzIHJlbGVhc2UyNy1tYWludAorODQ1NTkgOWJkYzU5MDEyMDdiOGNkODBmNzNjNzVkYzdjYzVlYzdiZmJhNDJhMiBweTNrCis4NDU2MCA0YTE0NTVkMzY4ZmY1ZmZhZGM4MTRmN2U5ZDZhYmY1NWQ3M2ExMmIzIHJlbGVhc2UyNy1tYWludAorODQ1NjEgZjZkZmQ2YzU2M2UxMTU4YTQ4NmM2ZjNhNjRlZGRhNTJlN2I4ZjhiZSBweTNrCis4NDU2MiAyMTQwNTgxMmYzMTI3MGNmZmE0NjBkN2RjNDM1NTRlYWI4Y2NhYTVmIHB5M2sKKzg0NTYzIDBjMGYxZDBlYjc3ZTk4MGY3MGZiNDNlY2Q4M2Q4NjcwYmQ0NTY4NTUgcHkzaworODQ1NjQgNTQxMzM4Nzk1OTUwNzExOWExMWY2OTlmYjY0ODliM2ZkMTkwZWYzOSBweTNrCis4NDU2NSBlZjE2YjRiNzlkNTQ3ZjYyOTg5ZjIwYThlNGM0ZTRjOTgzOTk2NmVhIHB5M2sKKzg0NTY2IDZhOGI1YTYxOGU3YWVmMGM0ZjQ2YWUyNDYzNDAwMGJlNmNhZWFjYTIgcHkzaworODQ1NjcgYjMwNjEwNWJmODNkZmEyNjVlZmMwMjVhY2Y4YTdlMjE3YWI5Mzk3NiBweTNrCis4NDU2OCAxMjQ3ZmE3NTE3NzIxYWRjYTdlNTM1NDFhYjE3MzcxMGVjYTlhY2NhIHB5M2sKKzg0NTY5IGZhYWFiNWE2NTdlYjU0OWIyMTdkZGIwZDRiMmIzYjAwOWMxMDFhMjYgcmVsZWFzZTMxLW1haW50Cis4NDU2OSAxNjkyYzBiNjAzMTc2NDE1NjI3M2YyMDkzNzczYWU3ODNiOTU4NzNlIHJlbGVhc2UyNy1tYWludAorODQ1NjkgY2Q5MThhYzdiZDU1NGM4OTZmNTkzYjk2YmI1OTU0ZDJmYTJjZTQ4NCBweTNrCis4NDU3MCA1NGI3OTY0ZGQ3YTk1ZTMwOTAyMTAyNjY1N2ZiZWYwZDM3YjNjMjg2IHB5M2sKKzg0NTcxIDU2Nzg3NTlhODAwOWE3MDdkODU2YjUxOTI2NTlkM2ZhYzdiYWM2MGMgcHkzaworODQ1NzIgNTNjZDhlY2RjZThhZTY3MWFiNTk2MjM3ZmY2ZDJhZjc5NTU1OWIyNyByZWxlYXNlMjctbWFpbnQKKzg0NTczIGIzMmZkYTlmNzJmZjk1ZDE0ZDFlMGNhY2VlYTBlMWU2NDZlNDliZmQgcHkzaworODQ1NzQgNjU2NDJmMDg1YzU1Yzk0NWE5YmIwNTMwYTQ5MGIyOTIwZDQxOGVjYyBweTNrCis4NDU3NSAxMWJhNjM5N2UzYTRmZTQ3NDdhZTExNTZhMDdjMTg2ZjhkMTI3MTRjIHB5M2sKKzg0NTc2IGMyZjg0MThhMGUxNDYxMzkxZGY2MTJjNWZkMjM4ODczMjM0N2UyYzYgcHkzaworODQ1NzcgZTA3YzQ0ODNhZDNiNmZiMTUxNWQ3N2M4OTBjYzJkOTEwZTg1ZDY0MCBweTNrCis4NDU3OCA5Y2VkN2YyZjIwYjNmMWQ3M2FjNzNjMTlkYzE5MTA1OGU2ZjJkZGZkIHB5M2sKKzg0NTc5IDk0ZTFmMjM2Yzg4ZDc3OTNmNmJiMTdjNGNjOWUzMmYzMDU3ZDM0MmIgcHkzaworODQ1ODAgNmJhMjBiOTAzOWFlNjk5MDI4Zjk4MjQwZjkxYTNhNDhhMDY4NjE3OCBweTNrCis4NDU4MSBlODNhZjE0MWRmZmRhYThmNTVhMjdlYzE2YzQ0MDIzOTZmYTg1OGMzIHB5M2sKKzg0NTgyIDFhMWU3MjU0ZDk2NTU2N2ZhNGQxZTZhYzFkZTE1ZDIzZjhiMTE5MDggcHkzaworODQ1ODMgZTRkZTIxNzZmOThlMzBmNGM0ZThiMGFjN2I1YzQyNTlhMGJmZjhmMCByZWxlYXNlMjctbWFpbnQKKzg0NTg0IDRhYzhhZTdlODAyMmM0NGVjY2U3MWViOTAxZTFkZjMwNjlhMWFlNjkgcHkzaworODQ1ODUgYWRmYTFlNDg4NzM0ZTJjY2U1NzJiOGMyNTE1NDhkZGU5OWM4NjFhNCByZWxlYXNlMjctbWFpbnQKKzg0NTg2IGMyMTk5MTc1YWRhOGRlODFmMmNlMWZhY2E1YmRhNjVmYzg5MzIxYzEgcmVsZWFzZTMxLW1haW50Cis4NDU4NyA2MDk1ZWE5ZGNmZjQwMDk1MDIwY2VkODM1MjY0NTlhZTg1MzhiNmMwIHB5M2sKKzg0NTg4IDFjMjJjMWU0NTNkNGExY2NlNzg1Mzg0YzgzNzhkZjEwZDJlMWEyNDQgcHkzaworODQ1ODkgODRjMjRkYjEzNjc3Yzc0MDIxMGFmMmE0NmM4MzM3NGUxYjVhOGE4ZiBweTNrCis4NDU5MCAzZTVhODkzNzZkZjU0NDA0ZmNmNTFmMDk0NTliMDU0YzA0ZDI1NGVhIHJlbGVhc2UzMS1tYWludAorODQ1OTEgNzQzMmU1MDhlYjY2YTllMGM4YWRjNDQ2NmU1YTAyNWE3OGY3Y2M4NyByZWxlYXNlMjctbWFpbnQKKzg0NTkyIDRhM2RkYjg2MmE3MmNhZmRmNWFhODMxYjBlNWUwZmYxOGY4MTE4ZDUgcHkzaworODQ1OTMgNWRkMWU1OTRkOTE5NWViNTEyOTA4NTFhMDFhM2E4ZDE3OTAxODExZCByZWxlYXNlMzEtbWFpbnQKKzg0NTk0IDRiNjhkNDczNDhhNGRhYjc4NTQ1NjIyOTA4N2EwNjYyNDc3OWM0YTYgcmVsZWFzZTI3LW1haW50Cis4NDU5NSA3NzBjM2VjMDU2ODU2YjQ0ODRiYjM0NjI3ODIzOTRlNDJkM2MzYTUwIHB5M2sKKzg0NTk2IDg5ZmU1MTc5YWVjNWYwMGM1ODJmOTkxOTM5YWEwMTQ5MWZkZmQ3NGUgcHkzaworODQ1OTcgOTFjN2Y0NGU0YmVhOWRjYWZhMTgzYTQyZWJjZDYwM2IwMzI4ZWVjYyBweTNrCis4NDU5OCBiMmY3Y2Y5YzY3NzYzNTlmMjc1MTYwZmFkMTUzZDU4OGUyMTczMTdmIHB5M2sKKzg0NTk5IDYzY2VlZjA0NTNmNDA2YWJkMjBmOWM0ZjVmMjIxOWM3ZWIzODQyYjUgcHkzaworODQ2MDAgMjQwMGY1NWVhMzEyNTMwODg4ODg1ZTBjZjhjZjg5YzAyMDI1ZmE2MiByZWxlYXNlMzEtbWFpbnQKKzg0NjAxIDVkNzNiMDM2NTczYjc4N2Y1MDIwMTU2YTZkZDAzNWZhNTY4Mjg0ZWUgcHkzaworODQ2MDIgZDZkNGI4NDY0YjhjZjZlYjEwMjg0ZGUxNWFmOWJiYzAxMzZjMTI2YyBweTNrCis4NDYwMyBhZjQxNGIyOWQ0Njc4NzEzYzI0ZjkzZGJiMWFhOTdmOTg3ODgzNTFhIHJlbGVhc2UyNy1tYWludAorODQ2MDQgZWYwYTA3ZDU0ZGMxN2QzMGI4NDk1MDYyMTZkNDQyZDIxZmZhZTFiNiBweTNrCis4NDYwNSA0YzY0ZTY4OGY2NjVlZmQ2MjUwNDcxMTRmODc2NDcwNDczZDkwNTQxIHJlbGVhc2UzMS1tYWludAorODQ2MDYgZDAwOGY0MDZkYzk4YzlkMWMzYjdkZGQ0ZDY1MWM2OWU1MTRjNjY2OCByZWxlYXNlMjctbWFpbnQKKzg0NjA3IGMyZDZmMGNmOTI2YTJmM2UzZmEwMGExNjYxMmQ5OTBkM2UxYTViNWQgcHkzaworODQ2MDggOTYwZGUwMTAwODFiNzYzMTAzYTk1NzRhZDBhMDJkYjg4ZDgwMDU5OSBweTNrCis4NDYwOSAzODRhZWU2MjczZTgwNWI2OTZmMDMzYTVlZmVkZDQyZDY5Yzg1ZjNkIHJlbGVhc2UzMS1tYWludAorODQ2MTAgMDNhNmY3ODM5ZDZkMzUzMmZlZTZiYzM4MTMxMTY2MTIzYTdmMmViOCByZWxlYXNlMjctbWFpbnQKKzg0NjExIDU1OGYzMzhlMTMyMDgxMTc3ZWM2YjBiZTM1YTk3NjdjNDI5MjdhYWMgcHkzaworODQ2MTIgZTA2MjNiNmI0M2I2MzdhMzIxMDVjMjkyZjhkMjRhZmRlOWM4ZjY5ZSByZWxlYXNlMzEtbWFpbnQKKzg0NjEzIGJhZjFhNDgyYjU3ZDc2NmY3YzVlNjU3OTUxNTY1NDU5NGExMTRiMDcgcmVsZWFzZTI3LW1haW50Cis4NDYxNCA4OTIzZTE0OTNhMzQ0OTM2ZWNiN2E4Yzk3MzA3M2RmMzU0ZjhkNTEyIHB5M2sKKzg0NjE1IGQyN2Q0YmQ0ODhkYzgzOTQ2NGVlMGM1MmUwMjRlNmI4ZWExZTQ1NTQgcmVsZWFzZTMxLW1haW50Cis4NDYxNiAwZmRhODJiMWJmYmJjNTM4ZGE2Njk5YmU1Y2M0MmQxN2M3YWNjZjRlIHJlbGVhc2UyNy1tYWludAorODQ2MTcgZDUzMzE3MTJiNTA5ZDU3ZjQyNWUxYTBkNzQwNGM5MTc1NGM1OWUwMCBweTNrCis4NDYxOSA3OWExNGQzNjg1NDAxYzM1MTlkODkxODVhZGNlYTZmYjA3NmNjYTVmIHB5M2sKKzg0NjIwIGUzZWRkMmY5YmI2YWMzMDZjMTY0YjFjMDM1NzhkNGFlNjIwZTEwOGYgcHkzaworODQ2MjEgZTYwZWYxNzU2MWRjZWM0MjZiMjIxZWEyYjIyYzA5MmNjMWYzZTEyYiByZWxlYXNlMjctbWFpbnQKKzg0NjIyIGEwYjRiMmRmZDlkNWE4MTNjYzQ1MDljNzQwMjFjMmUzZDFlYzIxNGYgcmVsZWFzZTI3LW1haW50Cis4NDYyMyA4NTE2NzI0OThmZTUzNGRiNmU2NTU3YmYxMTk1YTE2MzYwYmFjODBkIHB5M2sKKzg0NjI0IGM0N2ZmM2E1M2E0YTUxYWFlMDA2ZjNhN2FiMjZmM2VmOGIxZGJhNjcgcmVsZWFzZTMxLW1haW50Cis4NDYyNSA1NzU4NDQ0MjdhOTVjZmMxNDE0ZmYwMDQ2ZGE4NDlhZDY3MzI0Yzg2IHJlbGVhc2UyNy1tYWludAorODQ2MjYgYWE2NmRmNzcyZTIzNzg0N2EzMzllMWEzZWRlNDZmOTE1YmE4NGFiNCByZWxlYXNlMjctbWFpbnQKKzg0NjI3IGY4ZjY2ZWJjZDViMWViNzFhM2M4MmFmYjFlYWI2OTkxZWFjNWM3MGQgcmVsZWFzZTI3LW1haW50Cis4NDYyOCBkYzU5ODZkMGU1YTQ0MzE2YzI3MmM3ODNhZDFhM2FiNGNhZWNkZjMwIHJlbGVhc2UzMS1tYWludAorODQ2MjkgYTRjZmQ1YjVkZjk2Njk3NTMxYzllODUzOGY4ZmViNjY3MGIyODQyNSBweTNrCis4NDYzMCA0NWIyM2YzZjdmNmI5ZWNjZDQ0ZWQyMzk1OTg2ZWUwZmQ0ODczY2EyIHJlbGVhc2UzMS1tYWludAorODQ2MzEgMjk3ZjY2Y2IzNzY0NGE0NTI3MDg3NDlhNDAzNjYyYWQ4ZDc4MGUxYiBweTNrCis4NDYzMiBiMTg2NWNhN2I2NWMxNDZjZTBmYzVhMmJlNGUxYTJiYzNkOTJlMzU3IHB5M2sKKzg0NjMzIDdjMmViNWI2Y2M1OGM2NGJiZTA3MTE2ZDhmOTg1ZTJkNjlhN2JlMzEgcHkzaworODQ2MzQgODYyN2MzZWM5NzExMjZmNDA5NDc5MWJlOGQ1M2YwZDY1MWNhODc1MyBweTNrCis4NDYzNSBhMmFlZGRjMTliNjZiNWMzOGU1MjE5YWMzMWI2ZTZlOWUxMjdiOGQxIHB5M2sKKzg0NjM2IGIxY2YzZjdmMzA0Y2YwODRkZjRlMTk5ZTAyMmNmN2RkN2EzYTUwOTggcHkzaworODQ2MzcgMTMyMjI2NmY5NjExNWFkNTI3YzA0ZWU2MTEwYTFmYmE1YmYzYzcwMSByZWxlYXNlMjctbWFpbnQKKzg0NjM4IDQ0MWU5NGNlNDA4NzE2ZmFkNjc1ZGQwMmExNWFjM2ZiNDg5YjQxZDAgcHkzaworODQ2MzkgY2FmMGI0YjA1NjllYWQwNzIyN2I2MTQyMDdmMmNiOGQyNTg0OTgxYSBweTNrCis4NDY0MCBhNThiZjY2NzI1Zjg2ZjBjMGY4ODRkYmRhY2IyNzE3ZDVlYWZhMWZjIHB5M2sKKzg0NjQxIGY4Yzg5NmFkNzg3ZjhkMDhiMzcyNWU2NGI3MWFlYjAwNTI2YjlmZDggcHkzaworODQ2NDIgMmM1NDcyMTBmOGM5ZjkyYWUxZmFkYjcyNzBjNzdiMTZlYzFjMjQ4YSBweTNrCis4NDY0MyA0NjJlMGJlM2I2YzQ2ZjZmN2ZlNmI5MGFlOTExMjU3MTJkMzc4Y2IyIHB5M2sKKzg0NjQ0IGM4ODU1MGNhMGZhZmI2NGFlNTk5Y2FkMDY0MDUzYThlNmNmNThmNGQgcHkzaworODQ2NDUgNjM2MTliNDI1ZWNhYTM5MTRmZmE2Y2U5ZDM5Y2IwZWU3MWZjYzIxOSBweTNrCis4NDY0NiBmZWE4NmM1ZTMzODU4OTBhNTNlMzQwYTE3MGQ1YTFmODQ5ZjBkNzE2IHB5M2sKKzg0NjQ3IDcxYjI2NGUxYmI3MTY0NDc3OTExYjE4YzVkNWU2YzY1OGZkZjBlOGIgcHkzaworODQ2NDggOTY1OWU4YzQwMDc5YjI5ZjI2ZTViZGQ0MmI3NGUyMThkYmRlN2ExYiBweTNrCis4NDY0OSBiYTU0MDk2YjdhNDI4OTBlZmFiOWI5MTljYmQwYjc2NzY2MDQxMGI4IHB5M2sKKzg0NjUwIDM4Y2E2MzUxODA4NWY1NzRlNDAxMzIwNGNkNTI4MzQxNzg0NjA4NjcgcHkzaworODQ2NTEgYTUxZjQ2N2Y1ZTFlODBiMDBhNTk0M2I0MzU2NzY2N2I4MzMxN2RkZCByZWxlYXNlMzEtbWFpbnQKKzg0NjUyIGQxM2MyZjkwYzE2OWFhNzZhMmYwNjc0NDc5N2NjZDk5YTk0NDgyODcgcmVsZWFzZTI3LW1haW50Cis4NDY1MyAwMjdmODE1NzliNGEwYWMwMWY1NjJlNWRhNjcyNTdjMTRhYTgyNTc4IHB5M2sKKzg0NjU0IGQ0OTI3MTU0Yjc3YjhmMjM2MTBkZjE5ZTE0MTZjYmFiNjk5MzY4NTYgcmVsZWFzZTMxLW1haW50Cis4NDY1NSBmYzc2ZThjNjE3ZGM0N2M3NzlkMGMzOTQ5NzhiMjhhYjFlMjUzMmYyIHB5M2sKKzg0NjU2IGFlNDcwNzk0OWNiMjQ2MDkxZmJiNjJlNjE5MDQ4M2Q2MjI1ZTZmMmIgcmVsZWFzZTMxLW1haW50Cis4NDY1NyAxYjdlYTQzZTVjNzk2N2I1NTM2ZTRjZTM3Y2VjMDlhYTU0NmI1NmI5IHB5M2sKKzg0NjU4IDZmMTRmMDIzNTllODBhYjM4ZmNkMjc0NWRiYzI3YWQxNmE0MGExNTUgcHkzaworODQ2NTkgODQyMTdiMmQ4YzBjMDZjZDY5OGZhNjBjNTI2ZWU0NDI4N2ZkOWYyZSBweTNrCis4NDY2MCBiZWU2ODNjYWU3MWZjNzlkZTkwZjhiNjg2ZTQ2NmRlYWY3NDcxMGExIHJlbGVhc2UzMS1tYWludAorODQ2NjEgZjEyMDdkOWE5YjA3YzEzNmNjOTEyMmMzMWQ4MjEyYTdjM2Q3MDBjMiByZWxlYXNlMjctbWFpbnQKKzg0NjYyIDJkYTVlY2QyMjRmZmU3ZmU3NDljYzdhZjNjMGY0NjI5Yjk1ZTBlNmUgcmVsZWFzZTI3LW1haW50Cis4NDY2MyA1YWJhY2QzNTE0ODUxZGEyNzRhMWRhN2FjZWU4YTViNzEyYjE3Y2JhIHJlbGVhc2UyNy1tYWludAorODQ2NjQgYjMwNDMzNmUwZTM1YjQ3OGQ1MGQ5YzE3YWJiNmJkZTM0YmI1ZGU1NSBweTNrCis4NDY2NSBlZGQwNTZjNGE0MGQyMjI1NjBkNjkxMjJlZDcxZGE4NWFmYmJhNTVkIHJlbGVhc2UyNy1tYWludAorODQ2NjYgYjhlNTEyNWU2ZmJkNzM2YjE0MzkxMzllYTQxMDNlZTZkNGM0NzY4MyBweTNrCis4NDY2NyA0NTdhYThkYTQ5MGE4NzdmZWFjMDUyYWYwNDQzNmQ0NzEwMDRkNjI3IHJlbGVhc2UyNy1tYWludAorODQ2NjggYzIwZGU5NmE0MzVhYzYwOTUwNGUyMjc5OWUwNmVhOTU2ZDZiMTQyNyByZWxlYXNlMzEtbWFpbnQKKzg0NjY5IDlmYWE4MGQwMTExZjFmMzJlZWI0NzNkYTllNWQ1MWViMjI5ZDIxZmQgcHkzaworODQ2NzAgYjMxNGFkYzliY2RlZWFkZDAxZWEzMzBiMGFjMzdiZjI5N2Y4OGM1MyByZWxlYXNlMzEtbWFpbnQKKzg0NjcxIDJlZWE4OWQwOTNlMjE0MjEwOGFhYjA3NDBmMzA3NTBhZDQ1ODgwZWUgcHkzaworODQ2NzIgYzY2NjlmNGJmOGM1NGVkYzU1M2NjYmNjMzE3YzY4ZDBhZTM4YTkwYSBweTNrCis4NDY3MyBkMGY5YWZjYjA2MTllZWIwOGUyNzVkNTRiZjgwNTM4MjhmNjZjMDMxIHB5M2sKKzg0Njc0IDM3OGUxNTdhYzAyNWZjOTlhZWVhOTRiNjMzMjQ4OWQ1YWI1ZWQ5OTcgcHkzaworODQ2NzUgYjQzZDYzYmYwZjc4ZjEwNDU0M2E2OGYyOTg5MWRkYTNmN2I4NGUzOCByZWxlYXNlMzEtbWFpbnQKKzg0Njc2IDIxYWU0MDQ2ZTQ3MTAxZDkyYzYzYWRiZjhjNDdlYTY1YjE5Y2MxOTggcmVsZWFzZTI3LW1haW50Cis4NDY3NyA3ZTJjZWI1ZDI4ZTMzOTMyZmUyMTU1NjcwODg1MGU2MTdmNDU3ZjE3IHB5M2sKKzg0Njc4IDM5MGFjZjUxMzRlOTRhYTRjMjJiZDZjMzgzNzlkMjE1ZmU1N2U4ZTggcmVsZWFzZTMxLW1haW50Cis4NDY3OSA1YzRiZTYzY2FiNGEyMmUxOTA0OGY1ZjhjM2VhMjE4NGMyZTMwOTE4IHB5M2sKKzg0NjgwIDkzMzk3MzhmODUwNGY4ODM3MjA5ZmQyZDU2OTdiMjM3NjRjNDUyZTIgcHkzaworODQ2ODEgMTZhNDJkNWYyMjA5YzNjYTEzOWViODRlMjdhMGMzMDRmNjMwYWU2NyBweTNrCis4NDY4MiA5ZjBkNjljYWVkM2IyZGUxNjg1OGZjMDhmYzU4NzdkNzZkODI3MGQ4IHJlbGVhc2UzMS1tYWludAorODQ2ODMgZTI3MDMwZTBjY2VkYThlODg3OTk4N2I4OTM5N2E2NWIyNjQ2MDYzOCByZWxlYXNlMjctbWFpbnQKKzg0Njg0IGNhZWNiNmViYzgzYzJhNTZhMGZjOGFjMGJkNTY5NDdiMjMwZDAwOWQgcHkzaworODQ2ODUgMjVjYzIyNmRjOWJkNGFiMGUyNGU0ODI0NmFkNzM5ZmYwMmM0ODIyMSBweTNrCis4NDY4NiAyNTI4OTVkNDkxNTcwZDVhMjc0NTI4MDliNTgyNzE3YmU0MDliMjRkIHB5M2sKKzg0Njg3IDk5OWQ3ZDIxMmYxNzkyZTA0Y2RmM2E4ZmM2OWIxMTgyNTYzNjUxM2YgcHkzaworODQ2ODggNTgzMDc5ZGUzN2UxMzkwYTgyMzhkMzE0NTE2ZDJlNmI1MzBlNTQ2NSBweTNrCis4NDY4OSA5MjY1NzUyYTFjODNkOWE1MTlkMWIxMjA4OTM4NDdlY2Y1ZTZjNDFjIHB5M2sKKzg0NjkwIGU4MjdiOWI4YTdiNGE1ZWVhMmNjYmFjYmUwZGEwZGFhYTUwMWQ1N2EgcHkzaworODQ2OTEgMTE2N2UzOTNhYTRkNmE0ZWUwYWEzOGM3NjNjOGE2OTk5MDMxMGQyNCByZWxlYXNlMjctbWFpbnQKKzg0NjkyIDZhY2NjMmM2NWNiODQ3ODAxZWI3ZGMyNDcxMGVkMzlkMGE4NzJjYTggcHkzaworODQ2OTMgNTY4NDRiNzE2Y2Q3NTYwYWMxMDAyZmQ3MGMxNjEyZTYzNGM3NmI0ZCBweTNrCis4NDY5NCA1ODZhNDExY2FjN2M3MGY4ODg2YzhjNzUwY2NmOWJiMjc0MTIwYzhiIHB5M2sKKzg0Njk1IDQ3MGE1MzYwNTcwY2MwMWU3ZTU5ZWU0MmQyYjNkOTU4YTg2MDBhNmYgcHkzaworODQ2OTYgYTYwOGZlMWU4NmYwMDgyMjQ0N2EwZGI1NGY1MzEzOTgyMDQzMDZiZCBweTNrCis4NDY5NyBmMzFlMGM3YzAyZTMzM2Q3OTIwZTIzM2E2ODY2ZjgyOTlmNGEwMGIzIHB5M2sKKzg0Njk4IGUwODBmMTFmY2ExOWIwZGQyMGZhOWQwNzg0YmUxZGZiNGM2YjE0YjIgcHkzaworODQ2OTkgMTc2NDc5NmU5ZWNhMmQzNTVlNGRmN2MwY2NkMzJhNmQ1ODQ5MjE5NSBweTNrCis4NDcwMCBmZTQ3ZWE4OTcyZWJlNmJhM2Y4OGI2MjU2YWM5MWQ3OWE1ZDU3M2IwIHB5M2sKKzg0NzAxIDg4N2VmMzk5NzZkMzlkZDg1YWZkODQxMTIxZDIyNWVkYjJlMjYzOGEgcHkzaworODQ3MDIgZWZjOTlhMjA3YmJlN2QyZDYyOGViNjY2MjM2YjFjYmZhYTY1OTM3ZCByZWxlYXNlMzEtbWFpbnQKKzg0NzAzIDIwYTIxNTNiMGRkYTg5NWQ0YjBhNGMxYmFkYTBkYzU0YTY1M2Q1ZmIgcHkzaworODQ3MDQgMWNmYWQ1NWRlNWJkNjYwYTJjYzcyOTZlZDYxZWRmM2NkNTZmMTJlOCBweTNrCis4NDcwNSA1YzljMDRjMjliMmMwYmZhOGNlYWU3YmQzNzNmMjNiNDI0ZGM2ZTE0IHB5M2sKKzg0NzA2IGVjOTJhOWZkNzc4MDZmMGE3OTEzYmU3MDkzODZiZGQ0NGY0Mjc5YmUgcHkzaworODQ3MDcgZjcyZmQyY2RhMzQ0MmY1OTUwNDJjNDRhNDA3ZjBlZjcyNzZiOTY3MSBweTNrCis4NDcwOCBjYjkxMzA3ZjcwNzJlYmFjOTRlNmFiZTE5OTE4NjcwMGFlODNmYWUzIHJlbGVhc2UyNy1tYWludAorODQ3MDkgZTBhN2I2OTY4NTVmNDBjOTQ5MzJlOTg3Y2E1NDUxNmM2OGJjNzIyYiByZWxlYXNlMjctbWFpbnQKKzg0NzA5IDUyMWViN2ZlZTY3YTc4MWNhYjVlZDFmNTM4ZGNhYzk3YmE1Nzk0ZDIgcHkzaworODQ3MTAgMWJlODc0Y2U0ZWFlZjMwNDQyNGNlOGVjZjM4YTlkOTc2YjJmZGFkYiBweTNrCis4NDcxMSA3Y2YzYmYwMTUwYTRkNWM2MDI0Y2M3MDQ2ZDM3N2QwZDVlMmE4ZTU2IHB5M2sKKzg0NzEyIDAwNDI1MjA5YzQ2ZWUyNTU3YTc2YWZiOGViY2QwZDZjMzY0OWQ2ZDAgcmVsZWFzZTMxLW1haW50Cis4NDcxMyA2ZWI0YWZiZTc3ZTg1NDgwYzM3MTA4NGYxZmIyODdhNzk3ZDQ4ZWVhIHJlbGVhc2UyNy1tYWludAorODQ3MTQgZDkwNWM5NGY5YWUxZDFhZWRjNjI3MzQxNjE1ZjFlZmY5YTkwNzRhNCBweTNrCis4NDcxNSA4ZjgxZWQ4YWNiYjAyNDQ0ZWE3NDFhNjY1ZTY0OGE0M2ZjYThiNDQ4IHJlbGVhc2UzMS1tYWludAorODQ3MTYgNjAxYTBkZWZkMTViYjJiOTkyYWYxNDEwZjVjYzdhMzFkZmZkMDAwMyByZWxlYXNlMzEtbWFpbnQKKzg0NzE3IDdjOGYzNDU5ZDlhZjhhNzZjMzIxNjQ3NmJlZWI4NjMwNTA2OTQ2ZjcgcHkzaworODQ3MTggMTdhOGY3MDRmMDdkODk0MmI1N2I1MmFkMjU1MjYwMTU2ZmU0MGNiNyByZWxlYXNlMzEtbWFpbnQKKzg0NzE5IGZkNjczN2FhODhkYzQ2ZGZhM2NlNzlhNDM2NGE3MzUxZTY3Y2I3NDIgcHkzaworODQ3MjAgNTMzODU4YTI5ODlhMmZiOGQ3ZDY4YTAxYTAzODM4ZWUwMzVhMTIzMiByZWxlYXNlMzEtbWFpbnQKKzg0NzIxIGM0ZTcyMzNmNTQ4ZGJkZThmZWI2NjczZWE0Mzk1OTljMzkzZTJiZmYgcmVsZWFzZTI3LW1haW50Cis4NDcyMiBiMDA3MDAxZmNhNzEwYzVjMDYwZWUxMzNhYWU4Y2NlNGNiODkwNDNmIHJlbGVhc2UyNy1tYWludAorODQ3MjMgYTM1MTA4NjEwNWM1M2NlMTQzM2Y2NmQ0N2JkOTAzZTVmNzI2NDZlMCByZWxlYXNlMzEtbWFpbnQKKzg0NzI0IDVmM2E2NDU2NGM1MWExMjg2MWIwYWUxZjFkZmViNDE0ODhmMzYxOTMgcHkzaworODQ3MjUgNTY3MTRlOWM2M2VmYjg0YzljNTcyZGVlOTQ1NjBiYTEzODJhZWQ1MyByZWxlYXNlMjctbWFpbnQKKzg0NzI2IGMzNWI0MmE4ZGEzZmI4NmQ4NzIxNDgyMDRmNWRhNDRlNTI3ZTk2MjMgcHkzaworODQ3MjcgZjNiMWVlYTExY2UxOTViYjM3YzE5NDZlMWQ5ZDZmYTIyMTA2ZWFiYiBweTNrCis4NDcyOCBmNDMyMGUxMjRiMWZiMWZiNzA1ZThiMTNlMWM0MzdmMGQ4NmNjNDI4IHB5M2sKKzg0NzI5IGIwYzlhODJlMGVjNWEzMzdlYTY0ZjAyOWIyYWQzNzIxYjM4MWYwYmQgcmVsZWFzZTMxLW1haW50Cis4NDczMCA4NTJiYjA1MjE1NmE4MTA5YzgxYjUxMGUwMmZiMjk5NDcwY2UyMGMzIHB5M2sKKzg0NzMxIGVkNDNlYmRhMzVmMmU1ZGYzOTg2NGRjMzk1YjdjZjM4YTJmN2EyY2YgcHkzaworODQ3MzIgNjM5MzlhZmFmOTg0YjRhNzkwY2ZlZDRjNTA3ZWMzODA3YTA0ZWNiNyByZWxlYXNlMzEtbWFpbnQKKzg0NzMzIGVmNmYwMzk3MWZiMzQ4NzBjZDE5YzAyNTc5YzljZDA0OTE5ZTIwODUgcmVsZWFzZTMxLW1haW50Cis4NDczNSAzODA4ZTM3OWZjM2NlOTNhNzc4Njk0ZmE5M2IyOGIxZGJiYzQ0NWZhIHB5M2sKKzg0NzM2IDM3NzRmNGRlZjc1NGYxZjhhNmI1YTlhZDkzMTAyOTc4NWYxNWM3MmYgcmVsZWFzZTMxLW1haW50Cis4NDczNyBmYjkwZjJmZjE3NjRiOWNlODI2OTk2ZWVhOGQ2YTlkOWVhNzE2MmE0IHB5M2sKKzg0NzM4IDY3ZWQ2ZDRmNzBiMWE2NmZiOTI2ZmFhYWQ2YTdiYjI1ZjhiMGIwNjMgcmVsZWFzZTMxLW1haW50Cis4NDczOSA3YWMwZTYwN2M0ZDY2MmEzYmQ2NDdjNTI3NzNlYzM3YzBmMzQ4NDE4IHJlbGVhc2UyNy1tYWludAorODQ3NDAgZDJlNTgxOTg5MzNiZTQ4YmYxYjlmZDFiYWU4MTgzMTE2ZGIyNTc1OCByZWxlYXNlMjctbWFpbnQKKzg0NzQxIDg4NjliMWI4NTQzNDhjNDA5NmZjZWFkY2UzODc3ZTczOTQ0ODlhYmYgcHkzaworODQ3NDIgNjNiZGE3ODlkNzNiNjNmN2FhODNlNzM2ZTIzNDA4Zjc5MWE2ZjU1YyByZWxlYXNlMzEtbWFpbnQKKzg0NzQzIGZhOTUxMGM3OTY0ODFhMGQ5NDY1ODk4N2QzNDgxOTczNGNmNTRjYjEgcHkzaworODQ3NDQgYjdlMjQ0ZjM0Y2M4MGQwM2I3NTFhNjcyNTUxYTg0MWMyZDgyZmU4NyBweTNrCis4NDc0NSA3NmI4ZGFkYTA2Y2JlNmE5MzI1MDBiODY0OTY2NzAzZDJiZTA4NDA2IHJlbGVhc2UzMS1tYWludAorODQ3NDYgNGI5Yzg1MjZlYTRjYjcwY2U0ODA4MDhmMmE2M2JjNTM0NjBhY2U5NiByZWxlYXNlMjctbWFpbnQKKzg0NzQ3IDZkMjgyYjU4ZDkwYWEyZmQzNmE4MTMwOTg2NTU4ZDY3Mjk5ZDRlN2MgcHkzaworODQ3NDggMmJiNGRkMmFkNWI1MDcwN2E4YTllMTQyMWUzMjJlNDYyZWI4ZjU4YyBweTNrCis4NDc0OSA3YWI1OTIzM2U4M2Y2OWI1YjM3MWZmNzExODg5MTYyMDljZTk1YmEyIHB5M2sKKzg0NzUwIDkyMTAyOTUwN2FkN2Q0NGM0NzU5YzkwNjBiZjlmM2UzZDVjMDNmYmMgcHkzaworODQ3NTEgYzFiNzA5MDc2YmY2M2ExZDFiNzUyMjI5YTY3OTUxNWE3Yjg1OTQ3YyBweTNrCis4NDc1MiA5Y2RiYTY4NjRlYjYwY2EyYTU5MzQ0OTFkMTk1Yzk1OThkOTcxNjU5IHB5M2sKKzg0NzUzIGEzZWU4NzdmZWQ4OWI1ZWQzN2NjYjk4ZDMwYzg1ZDFlZWQxMTBmNTEgcHkzaworODQ3NTQgYjE4NmFmYTM3MGU2ZDEwNTVlNTFjZmJkYzIxNDZlMjUzYjY0NjdkMSBweTNrCis4NDc1NSBjZmExMTljM2U0M2NmZTg3MmRkNTUzZDUwNTM4YmE1MjA1Mjk1NTQwIHB5M2sKKzg0NzU2IGVlOTY3ZjFjNzMxYjdkMDM2ZmYwNDMxNWQwNTAyY2JmODg2MTUwMjQgcHkzaworODQ3NTcgMGRlODE2NDc1NTNiYTA0YWI3MTQxNzM2ZTRhZjMxNzUyMGM5MWU0OCByZWxlYXNlMjctbWFpbnQKKzg0NzU4IDkwNjRmYzU3ZDNmYTkwN2QxMTAxZmY2MTMxYmJhNTA0OWFhZGVjNmIgcmVsZWFzZTMxLW1haW50Cis4NDc1OSAxZTg5YjVlZTAyZjg1ZWY5YjI3MDhjYTQ0NmE5YTE2NDE4NTY2NjA2IHB5M2sKKzg0NzYwIDU4NGIxZWRhMTE0MTQ3NjNiMGFmYWQwYjVhYjM4Mjk1YzM2NmM5MzAgcHkzaworODQ3NjEgMzE0ZDQxNmY0ZDIzZTI4YzY1NmRkNTc3MDFlOTk0MzI2YTZiNTUwYiByZWxlYXNlMzEtbWFpbnQKKzg0NzYyIGIxZTc2NmM3OWEzNjc3NDljOWJlM2VhZmI3MjFjZWQ1NTI4NjJkYjkgcHkzaworODQ3NjMgYWRkNjY0OTI0YWU5OTExYzA0ZDdmMWZjMzk1NDhjN2MzZTFhZjY0NiBweTNrCis4NDc2NCBiMGQyNmU4ZDhhMzMwYWE1NjQyMDM3YmIxODlhNTc0ZGUyYzVjYWJhIHJlbGVhc2UyNy1tYWludAorODQ3NjUgMmY4MzcwNTM4ZmZiYjE3YzNhY2FkOWU2NGNkYmQxMGVhZWE4M2NjNSBweTNrCis4NDc2NiAyOGU2YTQxYzViYTBiMDQyZGM4ZmRiOTA5ODYzZGE1Njg3MmJiYTYzIHJlbGVhc2UyNy1tYWludAorODQ3NjcgODJkYjgwYjYwYjg3YmJhYmYzYWRmNTg3YWU0NjU4ZGQ3NjIxMzFiNiByZWxlYXNlMzEtbWFpbnQKKzg0NzY4IGQwZmMzNTc4NzQ2NzQ2OTQzMmM0MWVkNzJiODI3Y2Q3NzdjOTY1OWUgcmVsZWFzZTI3LW1haW50Cis4NDc2OSAxZTkyMmQ3MWNlNGJmNmExODk3M2Y1MzM3Zjg2YzM0ZWY3NThhZjFkIHJlbGVhc2UzMS1tYWludAorODQ3NzAgYmJhOGZhODhkMTlhMjFiOTM4MjlmNWVkYzNhMTk2MTY1ODY3Yzg3NCByZWxlYXNlMjctbWFpbnQKKzg0NzcxIGE1OWFlOTM4OTEzMTkzNjU4MDZhYzA5YzVjNDcxOGJjMThlMDFiMjMgcmVsZWFzZTI3LW1haW50Cis4NDc3MiAyNzRhMGJmNDY4NzFlZjNhNTkxZjJiOTNhMzEzZWZjODIwNjlkZDNiIHJlbGVhc2UyNy1tYWludAorODQ3NzMgNDQxOTlhYTg5MzJiN2QxNGQwM2EwZTAzMThhOWI4MDVhOTBkYmJkMiByZWxlYXNlMjctbWFpbnQKKzg0Nzc0IDU1N2UyNTM3YzlhZTIzNTM4ZDlkZGI0ZWExZWI0OWJkYzQ1OWRmZTggcHkzaworODQ3NzYgMzMwZDc5ZmNiM2QzZDU4NjI4ZjhjZWFiMzU1ODE1M2M5NjU0YTRhZCBweTNrCis4NDc3NyAwZjNiOGY5MjhlYzEzZDhmOTFlYzQ5MGU1YjUyNGZlOTBiYTdmYWFjIHJlbGVhc2UyNy1tYWludAorODQ3NzggM2QyMmVlNjVlNDA3NWE5YjM2YjM3MWMyYTQzODE1MzMxZTQ1YjQ2OCByZWxlYXNlMjctbWFpbnQKKzg0Nzc5IDJhZDhkN2NiY2VhYmIwMTcyMDU5MTI4MmYxMzU3NzViNDVlNWJiZTggcmVsZWFzZTI3LW1haW50Cis4NDc4MCBlYTEyMWY4NzMxYTc4YmI1NTVjYTQyNTBiYWVkNGVmZDBjOGNmM2YzIHB5M2sKKzg0NzgxIDZmZjBlZjFmY2IzY2Q5OGU1MWIzMzU4NzRhODY4MmFhZThlYWE0ZGYgcHkzaworODQ3ODIgMjA1ZmYyYjAyYzc3MTIwZWUyMGIxNzdkYzNiNzY4YmU3NDY0N2Y2OCByZWxlYXNlMjctbWFpbnQKKzg0NzgzIDdkYmZjN2VmMzlmMmI2MzZkMzBhODc2NDUxMzEzZDk3N2MxOGQ4MzkgcmVsZWFzZTMxLW1haW50Cis4NDc4NCA1NTczNTVlNDZiYTYxOWRlNTM3NjJmNzUzMGViZDRlZDdmOWVhNWNmIHB5M2sKKzg0Nzg1IDc3Yzg5Yzg5ZjYwZTExMjI4OWZlNzljNDNkOTdiZWUyNTdiYmI5ZTUgcHkzaworODQ3ODYgMmQwODRhZDQ2OGRiZDAwYzk4OTBjYTgxNDk2MDI3N2RmN2UyZTMzOSBweTNrCis4NDc4NyA4MjM0ZDI2YjEzYzE5ZWY1NjlkMDQ4MTgxOGJjMGZkMDk1M2ZjOTQ0IHJlbGVhc2UyNy1tYWludAorODQ3ODggOTFhMDBiNmIxMjhiZWQwZDA0ZWM4M2U3OTVmY2EyZTBiMzZmYTRkMSBweTNrCis4NDc4OSBlYTg0ODNmOWU1NWFhNjYwOTMzMjBjMmYxNDIyYTg2NTRjYzAxOTg3IHB5M2sKKzg0NzkwIDlmNTVmYWFhMzE5M2FjYzY3MjQyYzMyMmU5YzYzM2U0Nzg3Yzc2YzYgcHkzaworODQ3OTEgZTJkZWM5YzBkMTNjZmNhYmMxMDdhYzg0YmM0M2Q4ZmNjOTJiMTEzNSBweTNrCis4NDc5MiBjZmFmMGY3ZWUwYzJjOTJlYzMxMDdiZDJiZGQ2MjZjYjVlMTQ3ZjE4IHB5M2sKKzg0NzkzIGE2MGRlZWNhYzI0MjRlZmQwYTNlZDA0YmMzYTUwM2MwOWM5ODlkMjIgcmVsZWFzZTI3LW1haW50Cis4NDc5NCAzYTI5NjNiNmY0NDNlODUwMTkwOGZjNzFjZjAwODAzYmE0NTgxOTg5IHB5M2sKKzg0Nzk1IGZiZTVkMDhhOTg2NjEzOTliZjY1NzFlOTJlOGJjOWU2NzdhN2VhMzAgcHkzaworODQ3OTYgNjllZDVlY2I1MDI2YWRkY2I1MjIzNzNlN2FmNWFmYjZmYzZhNmYxZSBweTNrCis4NDc5NyA0NGU0M2JlZDY3NGE1NGU1OTEzODQxODgxMWUyNDE0ODBhOWVmNjEzIHB5M2sKKzg0Nzk4IGU1ZjBmZjdkN2EwNmVlOTBiM2M2ZGI5OTNhOWRhNWFlMWNhODJjOGQgcHkzaworODQ3OTkgNGE0ZmJlMDIyN2FhNDk1MjVmYmFhMmI1ZTNkNWQwNjZlYWFmMzdiMyBweTNrCis4NDgwMCAyZDhlNDA4NTkzNTEyZWNjMGQ1ZDAxODUwYTg2MTNlMjg3ZDc0MmQ4IHJlbGVhc2UyNy1tYWludAorODQ4MDEgMjBjNDVjZGFkOWNmMWU4ZDQxZTZjNWM5MjA3NmI4YWM1MTIxYWY4YyByZWxlYXNlMzEtbWFpbnQKKzg0ODAyIGIyNzRhOTBhOGUyYmRmZTA5YTBhMDA1NDNjOGMzOWQwMzBlYjEzNmIgcmVsZWFzZTI3LW1haW50Cis4NDgwMyBhNDJkYjhmNTRiYTE3MDZkMzE4YWQ3NmU1YmJmZTczY2E0MmU4MTFmIHB5M2sKKzg0ODA0IDEyM2YzNTE0YjQ1YjUyN2JmMjYyMTA3NTU3MWU0NzM1MmRiYjE1N2QgcmVsZWFzZTMxLW1haW50Cis4NDgwNSBkYjllNjJjMjY1ZmY1MGU1OTNjYjJlNDY3Y2RmNjU3ZGMyYmVkZTFiIHJlbGVhc2UyNy1tYWludAorODQ4MDYgN2Y5OWFjNTMwMTRhNTQyODFmOTliZWQxYzkyZGUyZjQ3MjE1NDgxYSByZWxlYXNlMjctbWFpbnQKKzg0ODA3IDBlOTZmOWZhODRhMjRhNjlmNWExY2FhNGM4MTM0ZWZmY2FmZTJlOTMgcHkzaworODQ4MDggZmU1ZjljYzQwNzZlYmI3OTZiZTdkYWZjOWM1YmU0MDhhNmU1MDUyYSByZWxlYXNlMjctbWFpbnQKKzg0ODA5IDgwZDFjNzczNGRmMjU3ZTQ3YTljNjFiYjg0YWExODg5NDQ3ZDlhMzggcmVsZWFzZTMxLW1haW50Cis4NDgxMCAwZTI5YWU1MWQ5YmM2YWUwM2E5N2YyNDYxMzRmYWNmMDdjYzE4NTY5IHB5M2sKKzg0ODExIDkwNWVlOWUzZGE2ZGUwNzFhODFkNTc1YmNhOTZiOGE1NDllNTdjOGUgcmVsZWFzZTMxLW1haW50Cis4NDgxMiBlZGVkMGNhZWU2MjEzMzEwMDJlOWFlNThiZGJmZGRkMDJjOWM3ZDc5IHJlbGVhc2UyNy1tYWludAorODQ4MTMgNTM0ODUzYmE4Y2QzNmFiNWYyY2VlYzhhYzdlODY1ZWQ1YTkxZmFmOCBweTNrCis4NDgxNCAyYmYyYTdhNGUxN2Q2NDUyYmU3NDA1NjY2OTZjMjA2N2NiMzA5NGY3IHB5M2sKKzg0ODE1IGQ3YWUxYjlmMTBhYjdiNjgwMzNkODg3NmU4ZDYyNmI1MTE2M2RlNDMgcmVsZWFzZTMxLW1haW50Cis4NDgxNiAyYjlkZWEyYTJmZmZkNjI5MTMxNmM0YWQ4YTE5ZGQ5ODY0OGFkNzBiIHJlbGVhc2UyNy1tYWludAorODQ4MTcgMDcxYmQ4ZjM1MzVhYzBkZmNlYjQwNGEyNjM4MGQ0OTc5YmYxMjlkOCByZWxlYXNlMzEtbWFpbnQKKzg0ODE4IDM5NzdkYzM0OWFlNzk0MzBhMDdiNWU5NjA0ZDNjZjViMWUzNzY2NGIgcHkzaworODQ4MTkgOTE1MWQ1ZmFhZTNkNmE4NzI0YTViNzViZDcyMTY1YmI2NTM5ZWZlZCBweTNrCis4NDgyMCBiODFlOGUzZmE1YmJlNjc2ZGJkYTA4NGZjZWM5YmFhMGUwNDgzZTlkIHB5M2sKKzg0ODIxIGY2NDNkNTNjNTFiZDhiMTcyY2ViMTk4OGViZDhhNTA3NzQwYmIxOWEgcHkzaworODQ4MjIgZTYzM2UzYTZiMjU1NjhmYTBlZGIzOTU0MTI3OWVkMzlkOTNiMGMwZiBweTNrCis4NDgyMyBiNjk1MWIwNTIxN2IyMWFhYzY4NzcwYjNjZTNmNjJmNzZmNDUzYjNhIHB5M2sKKzg0ODI0IDM1ODQ4YTNiN2Q4YTVhZmJkMmFkODI1MGJmODY0Y2NjMzRkNTUyY2EgcmVsZWFzZTMxLW1haW50Cis4NDgyNSA3ZWY1YzZiZTcyMzI5N2ZmNzcyNmRjNDNkMjA3NDJhY2E0YTgxMzg2IHB5M2sKKzg0ODI2IDlhZmZiNGQ2ZTk3ZTJkMmVhZWUzZTc1ZTBmNDI1NjRkMTQ1ZjBhMzcgcHkzaworODQ4MjcgYzc3OWRlNjQ0MDVhOTAzZDQxOGFmYzMxN2NhNjY3MGUzZjE3OWM2ZCBweTNrCis4NDgyOCBkODhmZGY1YzViMzc2NDJlMTRiOWZkOGZjMzgwY2U1ZDM4ZTQwZTJlIHB5M2sKKzg0ODI5IGJlZDk1MGNiZDBjMDFlNTMwZGI2OTFjMGM2YmYyYmY3ODA1ODNhNDAgcHkzaworODQ4MzAgNWIwMTg3YzBkMDAyNDgxMmNkYzIwZjNjZGU4NDc3NzZhOWExYjViOCBweTNrCis4NDgzMSBiY2U5NzkzZmI1NDUwZWQ5MWI1NWFhNDFkZGZmNzljYzVmZWE5YmYyIHJlbGVhc2UyNy1tYWludAorODQ4MzIgYTk3ZDEyZTU0NjVmNzk1Mjk3NGQ0ZDBlYzgwOWJiMGUwNTI4MWJlMyByZWxlYXNlMzEtbWFpbnQKKzg0ODMzIDYxZGZjNzk2NTdkNzM3ZDJjMDcyY2VjYzBmYWUwMmQxZDIwYWUzZmMgcmVsZWFzZTMxLW1haW50Cis4NDgzNCBjMGQzMTY3NzczYTk3MzIzOGJhNjhkNzk5YTFhMjA2MDQxNjMyMGFjIHJlbGVhc2UyNy1tYWludAorODQ4MzUgYmViOWQxNzY1MDNlNDYyYTQ1M2JhN2Y5N2VmOTcyY2U2MzllMWFiMyByZWxlYXNlMjctbWFpbnQKKzg0ODM2IGFkNjNmOTY2OTIzYzQxMDM0MTYzYWFiZjBhZmM4MGM3MjY2NWY4ZDggcHkzaworODQ4MzcgM2VkYzI2MzgwZTQ5NmFiMGYzYjg2YWJiMjdjYjVmNjUwNDhlYWFkYSByZWxlYXNlMzEtbWFpbnQKKzg0ODM4IDFkZWJmZjQyZWE0NmQxMTNlYzAwZTAyZTFjYTQwMDY0MjkxY2JhNzIgcHkzaworODQ4MzkgZjJlYzAxMTVmOGIyMDNlNTFkNDc4MzVjMGM5M2FlM2EzMGU3NzU2YSBweTNrCis4NDg0MCBhMTZiNjdkNGYzMDMxNmQxMGNiYzQxMzFmNmMzZmVhZDI4NGJmODVhIHB5M2sKKzg0ODQxIGI1Nzc0YjI3YjNkYmQ5YWVkMmY4ODE0ODcwMjVlZmNhMzQ4ZGM2OTAgcHkzaworODQ4NDMgOTg1MDcyY2QzMWQwM2I4MmZiYzhiNTQ1OTdhNzFlOGU1OTE2MGYyMSBweTNrCis4NDg0NCBkNjU3ZThhNjAxMjY2NDljZjk1MzZjMzYyYzRkZmVjODczNzM1ZjM0IHB5M2sKKzg0ODQ2IGQxNzcxYjRjZDBjYmE4MzJhYjdhMTQ0NzM2Njg4NTM4ODY3NGU1YzcgcmVsZWFzZTI3LW1haW50Cis4NDg0NyAxYmU5NTBkY2JiMWE1ZjgxYWVjZjJiYjRmZWE0Y2E1ODNhMWRkNzJjIHB5M2sKKzg0ODQ4IDIzMjQxNjdlYzAxZDNhYTIwZjYzNTMxZTVjNDM5Njg5OWRmZDVjMjAgcmVsZWFzZTMxLW1haW50Cis4NDg0OSAzZjAwMDQ3MzZkMjgzOWNhNDQ2NDQwYzRiMGU0YzI3ZTc3Y2E4ZjdjIHB5M2sKKzg0ODUxIGZkNWM0Y2ZlZDdjZDBjM2FkYjBiMzdhNWI2M2RiYzM0MDliYzY3MjEgcHkzaworODQ4NTIgYTE3N2RkZGU0NWQxYjc0YTE2Nzc5ZWJlZTZkZjRlZTIyMTYwZmZkNCBweTNrCis4NDg1NiA1NzYxZjhlMzUyZWMyMWZkZDZlNzYzZDhkMDJjMDZmZjU1ODMwZDg3IHB5M2sKKzg0ODU3IDY4OWE4MTNmNGFmYzBkZDlkOTY2YmQwODczYzZmZmQ0ZTUwYTA1ZmEgcHkzaworODQ4NTggYTg4NjlhZjVkNWQwY2E2NzUyNjllZjUxZWY0YmUxOWYxZDZkZDkyNiByZWxlYXNlMjctbWFpbnQKKzg0ODU4IDgyNTg5YTg4OWUwNzBmZjc3NzExYzdmY2U2N2E3MWUwMjRlZTBlYTAgcHkzaworODQ4NTkgYzQzOGY5NjM0NmU5MGYxYWJlZGY3YjMxNDFhYmQ5NzFlZGE1ODk2MyByZWxlYXNlMjctbWFpbnQKKzg0ODU5IGUzYzNjMzBmMTQwOTgwODhhNGQxZjk4YmU1YWE4YjdmZDM5Y2Q4YTEgcHkzaworODQ4NjAgZmE0N2FmNzNhNjkxZTAwNmJmNzEwNWQ3ZTY1NDExMzU0NzgyNjFjMSByZWxlYXNlMjctbWFpbnQKKzg0ODYxIGNhMzU0MmFkZWUwZGFlYmMyY2FkNmE2NDdmNjliY2RlMTg4NmQwNDIgcHkzaworODQ4NjIgZTA2NDFkYmRjOGY2MmE3ZTlhYjYzNzU1ZWE4NDczNmI2YzE3YjNmOSByZWxlYXNlMjctbWFpbnQKKzg0ODYzIGUzOWFkNWRjMTFjZmU0ZDc0MDA2M2IxOTdkYTkzYWM3MmMyOGE4MTggcmVsZWFzZTMxLW1haW50Cis4NDg2NCBkYzQyMmRhYTVkYWRkMGJmYzU0Mjg3ODQ0MmRhNTFkZGNlNzc0NWMwIHB5M2sKKzg0ODY1IGE0MzFjNDhhZDQyYjFhMTk4MzFhYTVjMWQ0NWE0Yzg5OTZlNGE4MTcgcHkzaworODQ4NjYgZjc3Y2I4ZDc2ZTk5MTU3YTQwMjAzYTQ0ZGViNmY1MWIyN2RhZGQ2MiBweTNrCis4NDg2NyBjZDJlZjc1Mjg3MzY1YjZlOWE1NTRjZTJjY2Q2Y2Q5MjUxNzQ4ZmRjIHB5M2sKKzg0ODY4IDkzOGQ4NDI1N2QxMTAyNjBkY2MxMjY2NjU2Y2E4MWQ3YzBjNmI0OWMgcmVsZWFzZTI3LW1haW50Cis4NDg2OSBjODdlZDZmNThiODMwOTg4MWYxMTQyMDBlODdlMWI1Y2QyNWYyOTcwIHB5M2sKKzg0ODcwIGRmMzliMGJjNDEwNjczYjU4MTY4MmM2ZWMxZTQ5M2IxNzZlYjI3OTkgcHkzaworODQ4NzEgMDA2NDkwZjBlNzFmZDY2ZWM1MWQzYTRkNDRjMjFmMzE2ZGJmYWJiOCBweTNrCis4NDg3MiAwMWRiYjgyNzcxNzg4OTYyNWZhYTUwNzhmNjgxMmU3N2U5YzY2YjNlIHJlbGVhc2UzMS1tYWludAorODQ4NzMgMTUxODE3MTc3NTE0OWM3Y2FkYjFjNTMzMmFjMzQ1ZGI0MTg0MTI0YSByZWxlYXNlMjctbWFpbnQKKzg0ODc0IGQwNjA0NzRlMGUyNDU4NTY0MWRhNDhmZmZhZWM5OWY2YmExZGQzN2YgcHkzaworODQ4NzUgMmYyODA3MjdhMzA3ZjZlZDk2YzcwY2Y0ODVlZTU2MTc2MmMxNjg5NyBweTNrCis4NDg3NiAyODY3YWU5MDJmYTMxNDczNjQ2NDNmYmFiODBmNWE0YjJjYjhiNTAxIHB5M2sKKzg0ODc3IGQzOTA0MDBkNzFmN2I5NmVjMjMxYTRjMWY4MjY4Mjg3NmY2YTM2MmMgcmVsZWFzZTI3LW1haW50Cis4NDg3OCBiNDlhZWUzODc3OWJjMGE5ZGIyNjcxNThjZGMzMzRlYmY5OTFlNjBkIHB5M2sKKzg0ODc5IDRhYTJhMjBhYzMzNWJmMDVhNWFkNWY1ZTI5ZThjZDMwODBkZWNjZDUgcmVsZWFzZTI3LW1haW50Cis4NDg4MCAyOWVhZDU0YzA1YWQ4NzdhYzFhZjg1YTEwZDg0ZjhhZTllMjhlMTNhIHJlbGVhc2UzMS1tYWludAorODQ4ODEgMmRjMWQxODdlZTA0YWUzZWQzZDFkYWY3NzQ5ZDE2MTlmOGM0MDA5MyByZWxlYXNlMjctbWFpbnQKKzg0ODgyIDQ0OWQxMDRlMTgzNjI3M2FlYWU1ZDhiNzYwY2UxM2VkNjg1ZTQyYjQgcHkzaworODQ4ODMgNDk4MWNmMGE5Y2E0Y2Y5ZTE3N2U5M2U3YTI3M2M2YzgyYTA1NmUwNCBweTNrCis4NDg4NCA3NzQyNWYyZDdkNzY1OTc1NzY0OTA4MzM4MTU4OWY1MTEzMWE4YTZlIHJlbGVhc2UzMS1tYWludAorODQ4ODUgMDRiNDVkNDUxMDU5ZjUwZjFlZmFmMzAzZjZkOTg3ZDczNTI4YjY5ZiByZWxlYXNlMjctbWFpbnQKKzg0ODg2IDkyOTFhYTNkOGQzNTcyMzc3NTJiNGI0OWUzYmNiZTRmMmVmMjZjMWIgcmVsZWFzZTMxLW1haW50Cis4NDg4NyBmM2RjYjMxNGMzZTMwMmU1NTQyMmY4NmM0NmVjNzZhM2FlNjA2YTE3IHB5M2sKKzg0ODg4IDcxYjk1OTQyYzNhNDliODg5MjJmOTE4ODg2MzBiNmNiYjhjYzM2ZWQgcHkzaworODQ4ODkgOWRjODQ1MjI0NDg2MTI5ODEyODlhMjU3ZWJjY2MzYTE5NjQxNGE1NiBweTNrCis4NDg5MCBiNjk4NDJiNTBlMjYzODgyOGYxYjM0YjM0NmM4NWNhMjI4OGIzYjc5IHJlbGVhc2UyNy1tYWludAorODQ4OTEgNjVmNWUyYzNmMmRkMTkxOTgwZmZhNmQzZmZjOTlkZWRlNTc0NTAyYiByZWxlYXNlMzEtbWFpbnQKKzg0ODkyIDkyNTg4OTg2Yjc4YmQyOGFkYjNkMDJjOTQ4NWZlMWY5OWE0NzA4OTAgcHkzaworODQ4OTMgZTUyOTRjYTI3YWJlMmQxMjMwNDBhM2UzZDM5NmM3ZGNlMTk4YjNiNCBweTNrCis4NDg5NCBmN2E3NmZjOTdiMjIwZGYzMjU5YzRkMmUxMzMwNmE5ZWIxMzIyNGQ2IHJlbGVhc2UzMS1tYWludAorODQ4OTUgNDUxMTM5MzIyYTEzMTE5NWQ3MDAzMWJiMzE0MTMxYjkwN2RjYjc4NCBweTNrCis4NDg5NiBjZDViOWE3MGE2ODViYjczMzk4MzM5YmRlMThjYzA4MzY5ZWE5NmQ4IHJlbGVhc2UyNy1tYWludAorODQ4OTcgNTAxYWU5NGU1YmY2MTU4NDBkYmNmMDJlY2ZkN2JlYzY1MjNiNDIyNyBweTNrCis4NDg5OCA0NGM4OWM1OTkzYzgzYTE4OTc3ZDM2YzhkZTBhMjEyNDU5YjE2NDg3IHJlbGVhc2UyNy1tYWludAorODQ4OTkgMGFjZTllZWYxMjBiZTFmMWYxYTQ5NTQyYzBhMjM3N2QyZDhkNzY4NiBweTNrCis4NDkwMCBhNDhlMDMxZDgxNzhmYjgwY2EwYTllYzMzNmZjYWFkMTVhNzlhYjAyIHJlbGVhc2UzMS1tYWludAorODQ5MDEgNzg1YTk2ZmNkMzQwZGYyZDU5NGZhNTE3YWM0MWUwYWY0ZWVhMWVlNSByZWxlYXNlMjctbWFpbnQKKzg0OTAyIGIyOWU4NTU2MDE1Y2I3MzEwYTE4NTg3MGU2ZmM5YWUyMjExNDI0MTcgcHkzaworODQ5MDMgYTA1NDMzMDYwOTQxMTg2ZTE5OTRhYWRiMDZlYWE2OTVlZDk4NWJhMCBweTNrCis4NDkwNCA1MzRhZjkxZjM4NDU0MDYyZmUyNmRjNzE3ODJmZGVlZDYzZjNkY2YwIHJlbGVhc2UyNy1tYWludAorODQ5MDUgOTMzZDRiNWI3ZjNkNjhiNzg0NTViOTE5YTViYmQzZmM3NGY5NjA1ZCBweTNrCis4NDkwNiA3NjA1MWViMDc0MjJjNzg4ZjM1ZDMyYzk4YTIyMDA3NGVhZDVkN2RjIHB5M2sKKzg0OTA3IDhkZmJmNjZmMzY5Y2Y1YTJlN2FhNTYyZTdkODQ4OGUxNzllNzkzNGIgcHkzaworODQ5MDggZGQzMDgwYjgwZGRhOTE5NDU1N2RjZjIzNGE3OWI5NDFiYTdiYWQzMCBweTNrCis4NDkwOSA0Mzc0YjFlYWVhZDE3NzZmNWI5MmQ2OGJkMjg2NDcyMWQ4ODY0YjllIHB5M2sKKzg0OTEwIDE3ZWM5ZWQ1MDEzM2I4YmFlZGRhNjBlMjgzMjNjNjc2NGRhMTQ2MjMgcHkzaworODQ5MTEgMDM2NTg1MzgyZGUxOWJiOTdmMTUxMGMwMmE3MTE2ZjVmNTZhNDBhNyBweTNrCis4NDkxMiA0ZjRiZGRkYWMyNWIyM2I2NTMyNGI2ZGIzN2Q4OTQ3Yzk2NzdiZWI0IHB5M2sKKzg0OTEzIDc2ZmQ2OGJiYTFhODg1YTQ1ZjA3NDcxZGFiYmZhZmQ2MmRmODJlMjYgcHkzaworODQ5MTQgOGU0MjhiOGU3ZDgxNTg2ZTIzYjVmOTJmOWNhOWIxOGRhZjE0ZjQ0OSBweTNrCis4NDkxNSA2Yzc3NzU3ZDA4ODExNWEwMWNkZDI5MzFmMDAyZDcwNjg3YTJlMzAyIHB5M2sKKzg0OTE2IGI1NTcyNTM1OThiMWY5Y2QzODAyMDMzYjAxZjlkN2JlM2U3MDQxODggcHkzaworODQ5MTcgZWMwMjgwNjcwNDlkYTY3Yzc1MWQyNzk4NThkYjcxZDdiZjZkNDBkNiBweTNrCis4NDkxOCAyY2RkZjg3OGUzOTU1NTNiNmZhZTk3OTk3MjM4YTFlOTU0NWQ0ZTYyIHB5M2sKKzg0OTE5IGNmODgxNzE0OTliNWE3ODUwYmVlZTdhZWJkYTQyZmVlZGMxNTY0NTMgcHkzaworODQ5MjAgM2E0YWZhYTk2YWMzMzIzYzBkYzQ1NzMxMzE5MWZhYjA0ZTU3N2U2YiBweTNrCis4NDkyMSA0ODZjMmQ2YTc1NDY1ZDAxZjYxNmJhMTZhYzhhNTBkNmFjN2IyOWQ1IHB5M2sKKzg0OTIyIGE4OGRmZjI3YmUxZjdiMmViMDlkMDk4MDRiZjRkOWZhMTQ5YjI0OTcgcHkzaworODQ5MjMgZjM1YmQwOGMxMmFlZjJjNDZiNGRiNzlhOGNmYTdmZGU5YmFmYzM5OSByZWxlYXNlMzEtbWFpbnQKKzg0OTI0IDZiZDI3NmY1ZDFiY2U3OTk2NzVmOGM4MTFmMWI4Mjc5ODNlMmIwZDMgcmVsZWFzZTI3LW1haW50Cis4NDkyNSA5NmRiNjQwNjc0Y2I3YWFhNTNlZjA5NDFkOTYyNzdmNTQ5MjliZTIwIHB5M2sKKzg0OTI2IDNjYWNlMTI4OWRlNDg4YmFjZjYyMGJhMTRlZDQ0Yzg3NWY1MTk0YjYgcHkzaworODQ5MjcgMzhiMGQ1ZDBkZDMwZTUwYTczMDNlNGY0M2Q2NWVmZGIxY2VmYWE0NSBweTNrCis4NDkyOCAwZDBmMWRiNjM0MzEzZjM2MzEzZTE0Yjk5YTNiNTJjYjY4ZjhkODViIHB5M2sKKzg0OTI5IDAwZTRjZTMxZDQwNDBkNWMzNGI2NTdkZDE3OWNlYTU5NjU2ODIzZDEgcHkzaworODQ5MzAgYTZhZjljN2M4ZTY3ZThlNDZjNzk3ODA5YjgxM2M3Njg1MGFjODhlOCBweTNrCis4NDkzMSA4NjFjMzVjZWY3YWE5ZTUyMjZkNGNjMmViMWU5ZWI1MjlhMWM5ODQ4IHB5M2sKKzg0OTMyIDJjNzNlNmNlNmE3NTY4NDY4YzczODM2YTFjNzI2M2NlYmIxNjY4MjIgcmVsZWFzZTI3LW1haW50Cis4NDkzMyBiZjAxMWUzMGZjMDc2MjdiNTI4YWI4Y2YxNWI4NTRkNDk3OGE2ZGQxIHB5M2sKKzg0OTM0IDQ3YjEwZTRhNTFkN2U4ZDRjMGRmZjc2NGU0OGVjMmZhNzY3M2JiZTcgcmVsZWFzZTMxLW1haW50Cis4NDkzNSAzNjRkNmVmN2NjYWU0Y2MyNDE3N2VlNDU4ZDdkM2M5OTljM2Q0N2NhIHJlbGVhc2UyNy1tYWludAorODQ5MzYgZTkwNDI3OTg0NDQyY2Y1Yjk4OWJkYjMwNGMwYTVlMzNmYWQxNWU1NyBweTNrCis4NDkzNyA2MDM2NzlkODUzMjkzMDg5MmEyZDg4N2YwNTZmMDg4OTQ3ZWU2ODk5IHB5M2sKKzg0OTM4IDdkNDVmNTM5ZGI5N2M4MTFmMmM1NzVmMGU2YTQ5MTEzN2U0MGJhNTEgcHkzaworODQ5MzkgYjFlYzQ4YjdmZmRmZmViNTJhZmRmMmIyNzVlODY1MmVlNzYxMzNhMiByZWxlYXNlMjctbWFpbnQKKzg0OTQwIGQ4YmI5OGU0MmMyZmZjYTM4ZThmYTdjNjhmZjNlMTVhZGNkZmM1NDkgcmVsZWFzZTMxLW1haW50Cis4NDk0MSBmOGNlOWYzNTlmM2E2NGY5MWRkMjVjNmVmMTFhM2E4Mzk2MGZlNWU2IHB5M2sKKzg0OTQyIGEwZTBjYjg5M2UzMWUzMjBjYWVjNzgxYWI1ZWMyZDc4NmNlZDNjMWQgcmVsZWFzZTI3LW1haW50Cis4NDk0MyAzMzU5ZDJlMGE5NjcxNzA5YmZkNjBjZTNkMDI2ZDc3YjQ1YzViYmVhIHJlbGVhc2UzMS1tYWludAorODQ5NDQgZTU5YTE4ODI1OGIzNDg4MzhmZjdkNjI0NGMwOGYzZDBiMjU5M2UzNCBweTNrCis4NDk0NSBkNmQ2NTVmZGRmMjJhY2VjZGM2OWMxNWMzZWIzN2MyZjI1NTdiNmQ4IHB5M2sKKzg0OTQ2IDQ4ODlhODE2ZWVjMTY5ZDhhYTk1ZGNkMmVhYjc2MzNmNTYzODBiMTYgcHkzaworODQ5NDcgYjFmNTEzNGIwMDQ5YmQ2OGVhZDk5NWQ1ODVjMmNhMzFmM2ZjOTVhZSByZWxlYXNlMzEtbWFpbnQKKzg0OTQ4IDRlYzEyMTE1NmVlOWVmNDkyNzBmZjQxZDVjODNjMmJjOTg0YjhmMGUgcmVsZWFzZTI3LW1haW50Cis4NDk0OSBhNGVlOGE1YzY4NDM3MjQ0NWQ4NjBlYmFmMzA1MDMzNjhkNTRiZjYyIHB5M2sKKzg0OTUwIDlhZDY5ZmM0YWVmNzVkMWMzMDFmODVlNDA3Y2FkOThkODY0ZDkwZGYgcHkzaworODQ5NTEgOGNlZWI1OWY0NTUwYWY1MWRhNDc0NTA4ZjY4ZTlhMWZiYTcyMzE2MiByZWxlYXNlMjctbWFpbnQKKzg0OTUyIDA4YmQxYTA4YzYyZjc1ZTRkNjM5M2FlZGY1MzUzMTgwNDI3Y2VhNWMgcHkzaworODQ5NTMgMmI5MzI3Nzc3ODMyYTI0NGFmMjFmZjcyYWFlODVkMGM5NDAzMGRiOCBweTNrCis4NDk1NCA5ZTIyMTY0MjBjZDc5NWIyOWIzNzhmODY2YTMwYTg5NmFhZWYyYTVjIHJlbGVhc2UzMS1tYWludAorODQ5NTUgYzUzNzcwYjE1NDZkYWQ0YjkyOTk1OWNlMzUzYzczMjI5MmM5NjFlMyByZWxlYXNlMjctbWFpbnQKKzg0OTU2IGM5ZWRiY2UzZmNhZDhjNmNkMmQ1NDMxMDJhMWJlNzBiY2ZhMTU1YzQgcHkzaworODQ5NTcgZTFjOGViMzkwNTA3MDI4YTkxMDIwZDZiNjk3NjI0M2I1OWExMDIyYyBweTNrCis4NDk1OCAwNWE1ZjcxYzFhNzhmN2RjZDhkOTk0NjAzMjEwMDM0ZjYyZWEyYjJjIHJlbGVhc2UyNy1tYWludAorODQ5NTkgODIwOGE0MzE5MWUyOWM5MjQ3MDBhOTA4OGI4Y2NlMWM5ODAxMjlkNiByZWxlYXNlMzEtbWFpbnQKKzg0OTYwIDhhYzcwYjEyY2E2MWZhZTIxNDg3NDA2NzQzZTFhMzJiOGY0N2Y3NjYgcmVsZWFzZTMxLW1haW50Cis4NDk2MSBiM2QwZGVhZjUwZTUyMzJjNmQ5YmVjNzViNDA2ZDViZWRiMmMzOWNjIHB5M2sKKzg0OTYyIGQ1ZmUwNDBmNGE0OGEyNzgwZmUzMzEyZDkzODE4ZDU4ODAwODM1ODIgcHkzaworODQ5NjMgNmI5Zjg4ZGRiNGNlZTkxNDlhMWNmZDVmNzkwM2Y3YjQxMzg5M2Y3OCBweTNrCis4NDk2NCBmMmNlZWFhYWM5MzgwYjU0MjNlMmM1M2QzZDk2NTFhMmFmMDVhZjE5IHJlbGVhc2UyNy1tYWludAorODQ5NjUgZWJjZDgxMTU1OGQ2N2Q2MDQ2N2EyMjUwMGNhZjEyYmFlMjRkYmY2ZCBweTNrCis4NDk2NiAzNDc0Y2VlOWM3NThhODZlOTQyN2UzMWUxZjU3MzdjZmZkNWJmZDIxIHB5M2sKKzg0OTY3IGQ1MDAxZDZjNzczNjhlZmJkYWVmMzM2MjliMTkyMjU2MzIxYzUwNzIgcHkzaworODQ5NjggZjcwM2E2NDNlNmNlMDdiOGMxOTU4ZmUwYTc0ZDgxZjYyMDMxZjE1ZiBweTNrCis4NDk2OSAyMjVhNmQxY2Y4MTFmNzBhNzQ4MzIxMThkYmU0MTY1YTk0OTgzZTAyIHB5M2sKKzg0OTcwIDllYTUwNGQ0NWVlYWE3ZTFiZjQyOGY4YTY0MjlkYmJjYWYwNTc5YzcgcHkzaworODQ5NzEgOTZlN2VlMjMyYWJmMTFlMmRjYjgzYWMxN2E4ZTk2NjRlOWQ4ZWIzMyBweTNrCis4NDk3MiBkZmQ1NTg0ZWIxYWNiNTk5YmQ0MmJlZTRhODIyNGNiZjllOTRjNjE1IHJlbGVhc2UyNy1tYWludAorODQ5NzMgYTY3NmFjMDZlYWNjMDg3ZDY4MWNkMzcwNjc3MWNhZThlMjA4MDg1ZCBweTNrCis4NDk3NCBmZjkyY2MzNTZjMzU4MzEzNGEyYzUzNWRmNGU4ZTYxMmQ2ZThhNzVmIHB5M2sKKzg0OTc1IGVlMTUyODUyYzk0ZGY5NDY3NDJmNjkwZmU2MmZhYWQ5YWViYjQ4NjkgcmVsZWFzZTI3LW1haW50Cis4NDk3NiBmNGExYzc5NmJjOTg3NDUzZTU2OGY2MmM1YmE0YjVlYzJjYzZhN2NjIHB5M2sKKzg0OTc3IDYzM2M2YjExYTVhOWU3ODUxYWY5NzEzNjZmYWM5MzEyYWMyNGY1OWQgcHkzaworODQ5NzggZDU2MGVlY2UwODU3ZjA2YzNkMGQ1M2Q4YmU2ODZjZDUwZmMxOWU4ZCBweTNrCis4NDk3OSBlMzE0OTJmNDQwYzllOGU1MWE5YmUyYjVjM2UxYjA3ZjM0MDRjODYzIHB5M2sKKzg0OTgwIGEwZWNiOGUyZDc2OWU3YTNjMjZhZmZlY2E1NWMwOGVlOTAzZWRjNWQgcHkzaworODQ5ODEgNTFkOGZmZmNkMjYwZTgwYWEyNWQ1MzExODAwNjJmMzdmY2M1ODQyZCByZWxlYXNlMzEtbWFpbnQKKzg0OTgyIDIwZjM0NWZjMDM2MTE0Yjk0ZjVmOTlmYWU0NzY0NWNmOWU4MjlhNDIgcmVsZWFzZTI3LW1haW50Cis4NDk4MyBkMDg4ZmFhMzU0NTZlYWZiN2U2MjU0NTMyMmRiNDE5ZTRmOGJhZjkzIHB5M2sKKzg0OTg0IDJlNWJkZTM4M2E1Yzc0YWExOGYyZTQ0Y2FmNjAxYTNkZmQyYTkyYTYgcHkzaworODQ5ODUgMGM3N2QwMGY0ZjgyNGUyODhiNGI4MTQ4YmZlMTdmZmRjOTJiMzZhYiBweTNrCis4NDk4NiBhYjNkOTJmZWE5ZmRhNWU1YmY5ZGU3ZTc1MmUwOTJhZjIxNDgzMTUxIHJlbGVhc2UzMS1tYWludAorODQ5ODcgMWRlYmNjZmJjYmM5YThlZWQwOGEzOTUwNmMwYzA2Nzc3MGJkZTgxOCBweTNrCis4NDk4OCAyOGQ0MWQzNGEyZTYxNTU5MDU1NDhkNTNiMzY2MmEzM2Q5YzJiMzkzIHB5M2sKKzg0OTg5IDdhY2E0NTg0NjFhYjI3MWU3MDNmZjhiZTE1NGMzODY5MTgyMDQ4Y2IgcHkzaworODQ5OTAgNzk1MmNmYWJiYjg4NzVmOTg3NGU3NjI3ZGY0YWJlYThhZWU5N2U4MSByZWxlYXNlMzEtbWFpbnQKKzg0OTkxIDg3YWZlNDc0MjljNTZkMTdmNDk1NDU1MGJlNzI4NWNkNmVmYzJhNDQgcHkzaworODQ5OTIgYWE1NmViYjhmZTk0NzM0YTMyZjEwOWNjMGVhODUwZDllNTFjNzg2NyBweTNrCis4NDk5MyAyNjBkYzdkZTFlODdiZTliNWFiN2ZlM2FjYTJmMWZjODIwNGM5OTY3IHB5M2sKKzg0OTk0IDAwNzIyOGQwZTU2OTg0NjMxZTg4MDBlNzZiODE5ZTFlOGI2ODI3ZjAgcHkzaworODQ5OTUgMjM1MDQ0YjM5YTkyMTFhNTZiYjRkNGM5NmNkZWU3OThlMTliZWIzMCByZWxlYXNlMzEtbWFpbnQKKzg0OTk2IDEyZTBkZmZlZjdiZDI0ODI1YmIzYmQ3OTM1ZTM0NDc2NmUwN2UzNzkgcmVsZWFzZTI3LW1haW50Cis4NDk5NyBmNmEwZWI3MzBhOWI3ODRiYzBiNDdmM2NhNWRjOGRkMDIzZDc5NWY2IHB5M2sKKzg0OTk4IDhjYzRiZTY0OGFiNDkwNmRkYjRkNmMxYjY1YTYxNjgxMGQ3MWJlNGEgcmVsZWFzZTI3LW1haW50Cis4NDk5OSAyNjBkYzM2YzJjODYxZWY3YmNjYTg5ZWQ0ZTgyODU3ODBjYmIxYzIwIHB5M2sKKzg1MDAwIGI5NDUzZDUwNGY4Y2E0YWVmYTI4NWRmNGQxM2IyNGZjZjA5NGJmMmQgcHkzaworODUwMDEgYjI3OGQ5M2Y5NThlZWMxODQzODMwMTAwMTJlZWZlMzg0ZjBlODIwNCByZWxlYXNlMzEtbWFpbnQKKzg1MDAyIGU1YjcwNzkzNTY2ZWRkYTVlZTRhZWNlNTM0NzEwMjg1NjAyZTY3N2MgcmVsZWFzZTI3LW1haW50Cis4NTAwMyBjOWUyOTkyNDkzMjM4MjVmNjNiYmVlOGEwODg3MjVmYzIyMjFiNmI2IHB5M2sKKzg1MDA0IDk3NzRjMTFlMDNmNmIwYjhkODUzMmIxMjA1NzE3YzAyZDcxZTQzNTkgcmVsZWFzZTI3LW1haW50Cis4NTAwNSA0Y2QwZWRmMGIzNTYxOTcwZGZiYTViZDBiZWI5MmIzNDNmNmZkOTM1IHB5M2sKKzg1MDA2IGM5YjA4YzU4ZjA2MzBiOTFjOWIzZjg4MmE1ODM4OTZjMmUyYTMzYzIgcmVsZWFzZTI3LW1haW50Cis4NTAwOCAwYjQ4YzZmODY3MWZkNGUzMGMxOThiZWRjZDU1NjI0ZGJjNmE4ZmQwIHB5M2sKKzg1MDA5IGM1MmY3NWMzZmJhMmQ4NjQ5OGEwNTM5NmYzMmE3OTExYzFiMGY4YjcgcmVsZWFzZTI3LW1haW50Cis4NTAxMCA2NTExMTY1ZTQ4MzBkOGZmNjg0NmQ0Nzk5NWRiN2YxYjJlMzRjMTI2IHJlbGVhc2UyNy1tYWludAorODUwMTEgYmM3ZDg4MDhmMTk1YzlkMjUxNDdjN2FmMDM0MGY4M2U5MTAwMmI3MyBweTNrCis4NTAxMiAyNjVmNzAxNzc3MmI4NzExMmYwNjU2MWU3YjUxYjM2N2JlZmQyMTllIHJlbGVhc2UyNy1tYWludAorODUwMTIgNDNmZDllMmI1ZTdkMWZjM2NiYzRjZmNjNzExMDE2ZDdmMTcyY2QwOSBweTNrCis4NTAxMyA2M2JhN2E0ZTdjMTAyMjMxYWY2NzMxYTU0ZjY4MGQyODc1MTllNWUyIHJlbGVhc2UyNy1tYWludAorODUwMTMgNDA5ZDZjNzZjMzA3ZTQzMGNmMjI0ZmM4ZTZlNjE3NDc4MTc2YTEwZCBweTNrCis4NTAxNSA0MDNhZjM1ZjQ5NDg3Yjk0ZTY4MTEwY2M3NzNlMzUzOWQxNTA3YzI3IHB5M2sKKzg1MDE2IDZjNjhkYmY5MzJkMDY4NGYwZTNlODc0ZWQ3NWExY2MzNTQ2OGFkYzUgcmVsZWFzZTI3LW1haW50Cis4NTAxNyBhYzhhYTIyNWM0MTc1YWZkYWNhMzI4N2E2ZTZkZDMwM2RjZGVlNjk3IHJlbGVhc2UyNy1tYWludAorODUwMTcgMjhlOGZmYjJhY2NiNjk4NDViMTFkYmU5ZTkwNzI0NTM5ZDE4OGE1YSBweTNrCis4NTAxOCAyNmRmZTQ0YzlmYWE0NTlmMGQwZTdlMDMyZDkxMThlMTZlYzI4Y2VkIHB5M2sKKzg1MDIwIDA1YzU4YjNkNmQzOTQxYWFkMzFjM2FlNDYxNGQ3NWI5ZmFiNTUxOTIgcmVsZWFzZTI3LW1haW50Cis4NTAyMiA3YWMzMGQ1OGIxZDIxNmQ4M2E1NDMwNjRhNGE0ZjIwYjdhM2IzNzZkIHJlbGVhc2UyNy1tYWludAorODUwMjUgMmZjNzNkN2M3NjIyZDIwNmVlOWYzMTlkNDFmMWZhMGE5ODM2ZDllMyBweTNrCis4NTAyNiA4ODgxMjYwZDFkMTRmYmQ5ZDFhZDFkOGY0ZmQ4NmUzZWIwM2VlZDRlIHJlbGVhc2UzMS1tYWludAorODUwMjcgM2YwZmZjODE5OWVhZmNmMDMxMWU5YzUyMGZjZjljYjMyOGNjY2FjOSByZWxlYXNlMjctbWFpbnQKKzg1MDI4IGZkNWU1MTAzNTMzNWIzOGI5ZDBkYjQzMzExZWE4OGNmOTY0MzgxOGEgcHkzaworODUwMjkgZTkzOGVjYzU1MDA1NDhiYTk0NTY1ZGE3ODIyMDhmOGZlNzcxMWMxNyByZWxlYXNlMjctbWFpbnQKKzg1MDI5IDUyZWZiMTA0NGRlNTkzNGY5NzMxOTU0NTk5YWU2MDJmODgwZmJiZWEgcHkzaworODUwMzEgZmY1ZDNlNWM0YmI1OTU4ODBiZTM3OGYxODlkZGQ2OTAzMzk4ODhlMCBweTNrCis4NTAzMiBhZWQwNGIzZjBmZTM4MjJmZjUzNzRhY2EyMWFhZWU4OGZkNjAyZTJjIHB5M2sKKzg1MDMzIDZiNDllYTExYjE1Nzc5MGIxNmY2MjZkZDcyYmFhYTkzM2IwN2Y3YzIgcHkzaworODUwMzQgNWE3YmI4NWE1ZDk5YzM1NjM3YmM0NDM4MzY1YWNlNjVlMjMwZjhhYyByZWxlYXNlMzEtbWFpbnQKKzg1MDM1IDFkYzJiNTBkMzQ0Zjg1ZTYzYzliNGMxNTBkNDA1NWM5MDBiYWFhYzEgcmVsZWFzZTI3LW1haW50Cis4NTAzNiA3YmRhMGE2MzJiMGQ0NTVjNTQ5NGUxMmU3YmRlYjI0OTc1MzVhODAxIHJlbGVhc2UyNy1tYWludAorODUwMzcgNGQzZmJjZjZmOTZhMGU4MjM4ODg3ZDU2NGU1N2Q4ZTkyNDZmOGIxNiByZWxlYXNlMzEtbWFpbnQKKzg1MDM4IGNlNGEyMmZjOWNjNDQxYzk1MzIwM2FlNGU5NmFiNTQ1OGIxMjgwMDEgcHkzay10dGstZGVidWctb24teHA1Cis4NTA0MyAzZDQ5MGMzYTAxOWUyMTBiNjM0ZWZiYjdhMTEwNGQ4OGE5OTZlZTEzIHB5M2sKKzg1MDQ0IGY3NmVmMWY0NjI2NjM3MDY0MDRjY2E3YzEyY2M2Zjk0ODQ3YjJiMDQgcHkzay10dGstZGVidWctb24teHA1Cis4NTA0NSA3ZGZhOTkwMGY4Yzc4ODVjZmNjYzljMGFhOWExNDk2ZDRkZjQ0NGFhIHJlbGVhc2UzMS1tYWludAorODUwNDYgZTEyYmE0MmY4NjFmYzdlYjA1MGNjODQyMzBlNDFkNzM4ODM1ZGU3YiByZWxlYXNlMzEtbWFpbnQKKzg1MDQ3IGUzODJmZjc0MTc5MDI2MmU5Y2I0ZDlmMzc1YzE2YTBhMzdhZWY3YTUgcHkzaworODUwNDggYzhkYzRiNWU1NGZiZDRlMTRjZjU2NTUyYzdiOTY5ZGJkNzhlNGE0NCBweTNrCis4NTA0OSAzZjQyNzNkMzBiMzg1MjUxMWEzNjAyMWQ1NjY4MWMzZjM2YjlkNzY2IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA1MCAwOTgxMjNhN2EwM2NiN2IxYTVjMTJiN2E0YWI5MmE3ZDllNDZiNmIxIHJlbGVhc2UyNy1tYWludAorODUwNTEgNGM0OGViYTEyMTIzZWU1Njc5MWNiOGYwNzRhNGIzMDcwODU0M2ZiYiByZWxlYXNlMjctbWFpbnQKKzg1MDUyIDY5NGNiNWQ4NjUyNTE1MGNjMWVmMzQ2NGU2ZDFjMDg5NDZlZDVlZjUgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDUzIGE0YjM5OThhN2FkNDJkYTYxMDAzZmU1N2UwOTQ3NWU2OGEyZmFlZWMgcHkzay10dGstZGVidWctb24teHA1Cis4NTA1NCBmYWZlODQyZTMyMDBjYjhhZDU3NDkyOGIxZjgzNTBhNzEzZWYxMzdmIHB5M2sKKzg1MDU1IDRlNWQyMDFmZjI5NDAxYjA1ODk3ZmU1OTliNTNkZGMzMDE5ZGUxN2MgcHkzaworODUwNTYgMzUzZjBjMmJhZjc3ZDJkZDVmOTA5NDU1Y2VjNjVhZWExMjczOWZiYyBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU3IGNlYTM3ZmIwM2RjMGY0OWZkZmNjYzc4MTc2Mzk5N2M1NDU1OWIzMzAgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU4IDQ1ZjU2ZTMwYWZhNTc1ZjMyMmQxMzc1MzMwNGY0NGY1NGI0ZGQ3YmYgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU5IDk1MjNkYmUwYjY0OTllOWExMGZiNmJjMzFlNmQ1ZjhhODg2OGNkZjMgcHkzaworODUwNjAgZTA2Mjg4NDc2NWQ2NWFkZjg0OTFlZjI4ZDczNDUzZTk5NzU5NGJjYiByZWxlYXNlMjctbWFpbnQKKzg1MDYxIDA1Y2U1ODVmNjRjNDg4YTg5YTYwMTRkZDYzN2U1NWI3Yjc1MWRlMDIgcmVsZWFzZTMxLW1haW50Cis4NTA2MiBlMzMyY2Q5NWY0MTRhYTA4OWNkZWJkOGI0YmM1Y2Q0NGRiYmVjYWVlIHB5M2sKKzg1MDYzIDlkYTEzZTU2MGEzYTk2ZGQ1NGIzYzFlYWVmZjJiYmVlNTE5YWYyNTYgcmVsZWFzZTMxLW1haW50Cis4NTA2NCBhZmIyZjE0NGI5OGMyMzY1NWE4ZWQ4YmExNjFjNDg4OTM4ZmFiZTY3IHJlbGVhc2UyNy1tYWludAorODUwNjUgNDNiNzlkODBmNWFlY2VhYmEzMDdjYWQ5ODk1NzQ3YTIzMjliNGIxOCByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNjYgN2Q5YmFmNjQ5ZjJkOGQ3ZGQyNDE3ZjljYTk2YjU0OGM3NWQ0NTM3MSBweTNrCis4NTA2NyA2NGU0MTE3Zjc4ODc1NGFmZjA0MjNkYzA5MGEwYjhlMDhhMTBjZmVlIHJlbGVhc2UzMS1tYWludAorODUwNjggZDFiZWU3Y2Y2YzJmMmFlNWRlNTVhOWE5MWQ2OGU1ZmUxNjkyNTA5NiByZWxlYXNlMjctbWFpbnQKKzg1MDY5IGZhZDc4ZTg2ZDE2ZWNkMzViYmI1OWJiN2NmZGI2OGIyZTZhMTQ2NzIgcmVsZWFzZTI3LW1haW50Cis4NTA3MCBkZDk0YWMyYTQyYjE3ZWZhY2Q1MTFkNzU0YzI0M2Y4ZDRmOTliNTJhIHB5M2sKKzg1MDcxIDdlMjc1YTRjZjk0MTBkNDI5MGRiYmM0Y2Q0Nzg0ZTE5YTFiNjhmY2QgcHkzaworODUwNzIgYTA4ZTQyNzg5ZTZkNTFkMjI0NjM1MmRhZDQ4ZmJhZTc4ODFlYzY4OSBweTNrCis4NTA3MyA0NzJhNmVlYzE5NmFiZmMxNGRkNTA0Mzg5ZTNjYjMyMGU1ZmQ2YTI0IHB5M2sKKzg1MDc0IDBmOGMyZWI4OWY0NmQ1YzBmYWI3M2I4NzJlOTJmY2QxYWExNDBmOTggcHkzaworODUwNzUgZGMzODMzOTg0NzM0YjI0OTNlZGYyMWMyMThmYjZiNjMyNmExYjVkOCBweTNrCis4NTA3NiA2YzhhZGMyMDBlZTAyZjFkM2EwMjRmNDMxYjllZmRiM2I4MjY3N2Q1IHJlbGVhc2UzMS1tYWludAorODUwNzcgNmMxZjEwZTA3NDU1NjQwN2NhOTQzNzY1YzNiMzM5ZTRjOGI0ZmM2ZCBweTNrCis4NTA3OCBmYjdlZTBmMmM2ZjRhMDQ3YTcwMWExYmY1MDVlMDNkMGZiM2YzNDE2IHB5M2sKKzg1MDc5IGMxODQyM2Y0Yjk2ODhjODlhMDlmZTY0MGFlOTU5Y2Y1MGRiODVkM2EgcmVsZWFzZTMxLW1haW50Cis4NTA4MCBkMTJkNTUwZWJmMzQ1NWFiODkwMWZmNGE1MTlmZWYwMTljOTc1YjZhIHB5M2sKKzg1MDgxIDU1MjJjNmIyYWY4NzJjZTEwYjQ0MDE4OTU1MGZkOTUyMWIwMmRkZGMgcmVsZWFzZTMxLW1haW50Cis4NTA4MiA0Y2Y3N2QxOTNmNTdmNWUwNzZiMWExOTk1NWVhYmJkZWU3ZWJiZDM0IHB5M2sKKzg1MDgzIGRjNDU1NTY0NmU4MDdkODI2ZjI2NTBkODlkZTg5ZDY4OGI5MGQyN2EgcmVsZWFzZTMxLW1haW50Cis4NTA4NCAwNmY1ZTE5MDg1NWEzZmQ3NzI4NDg4OTBkZDJjOGI5MjQxMzg3ZTcwIHB5M2sKKzg1MDg1IGM4NjllYTA3Y2Q5ZDI2OGM5ZTZlYzgzZmFjMjJlMDgyYjAyNjliYjYgcmVsZWFzZTMxLW1haW50Cis4NTA4NiBiM2M3ZTUxNjI3ZmRjNjk5MGJkYTZhYTY1MGQ2ZDAxMTI5ZTU0M2YyIHB5M2sKKzg1MDg3IDdiYjA1MTNjZDBiODI4OTJlYjI1N2NmZTdkMzA2ODM3ZTRjMmY0MWYgcHkzaworODUwODggNzM0ODVjYmQ2YzllYjZlYzRlMDBhMDViNjcyNjQwOGEyNDdkZDUzOCBweTNrCis4NTA4OSA1OWRmYjIxMzgzZjhiZjlmNmQxNmZlYThlMjk1NTkyNDRhNTVkYmY0IHJlbGVhc2UzMS1tYWludAorODUwOTAgMGVlMjExM2E0ZmRlNjIzNjZkYjY3MzcyOWNjNTM3NTA2MDM5ZjkzOSBweTNrCis4NTA5MSA3NzhjYjhlNmM2MzgzMDQwMzQxYWU0Nzc2YTBjZGYxY2NjYzk0ODVmIHJlbGVhc2UzMS1tYWludAorODUwOTIgZTEyYjEwNDM1NTMwOGRiZjcyNWE5NWQ1ZjNlOTIzNjU4MjUyOWE0YyByZWxlYXNlMjctbWFpbnQKKzg1MDkzIDdjN2QxZDk2ZTJjMzM0MTRiZDQ5YjExYmUwMDUyMTQ5ZTgwOGY5ZTkgcHkzaworODUwOTQgYzYyMGZlODdjNzAzYjA5MGZjN2VhMGZkOTQ3MjlmMjk3ZjBhYzczZSBweTNrCis4NTA5NSBhYzhkOWNhYzMwMzM1ZTNhMjNjODFmYmVhYThkNDhjNDgzNTFlZWU0IHB5M2sKKzg1MDk2IDE5MWVkMmFkNTk5N2MxZmM1NmZhMjM2OTM1ZTU5NTg3YjhjZjIzNWYgcHkzaworODUwOTcgOTYxZjUzNTRlYjU0MWY0NDUwZTUwZjQ1MThkYTA0MzE3OGFiYWIzYiBweTNrCis4NTA5OCA4MDBhZGRjOTg1NzE5ZmVlNDE2N2Y3MzdmZGE0YTgyZjg3MDA2NjcxIHB5M2staXNzdWU5OTc4Cis4NTA5OSAzZmI1ODNjOGU5N2U3ZjY0OTAyOWRjNjBlODYxN2FjM2EwZmZhMDY5IHB5M2staXNzdWU5OTc4Cis4NTEwMCBmNGQwNDc0OTFjYjQyYTgzZjJhNjk2MjcwZWQzODc4NWNmYjE0NDZjIHB5M2sKKzg1MTAxIDk0MTA5MGVkOTZkZjRmMDdhZjc4NjE4MzU5YmZhZTg5Y2ZmNGVhYjggcHkzaworODUxMDIgNjQzNGNkY2U3MTUyODUyM2E5ZDJkZDExM2UxNDQzNzdiZDU5NjM1YiByZWxlYXNlMzEtbWFpbnQKKzg1MTAzIDBiNGJmNmNkZTExZGVlMGQ0NTY0ZGJkMjdjZDZmYWQyZjAwYTQwNGUgcmVsZWFzZTI3LW1haW50Cis4NTEwNCAxZDE1YjU2N2E3NGIyODNlYjNkNmY4Yjk4ZDk4Y2NjMjUwYjRiYWM1IHB5M2staXNzdWU5OTc4Cis4NTEwNSBhZjlkZWUxMjdlM2MyYjVkMDZhN2JhMzliZmU3YzMzOTIzNzYyOTMyIHB5M2staXNzdWU5OTc4Cis4NTEwNiBjNGM2ZDg0MmQ4MmEwMTg3MjU5MGQwMmEzNWZlZDNjNmU0NDY2MTk2IHB5M2staXNzdWU5OTc4Cis4NTEwNyAzNGFiZTM2OTE5ZTUzYTRhMjJjNDFjMWZkMDU5NjgzMmM2Mjg4NDYzIHB5M2staXNzdWU5OTc4Cis4NTEwOCAxNDcyNThhMGFkZjg1Y2M0YmM2YWNiOWRkYmVjZWY3MmVhMDgxZGMxIHB5M2staXNzdWU5OTc4Cis4NTEwOSAyNWU4Yjc4MjdjN2RmMzk2YjRhYjRhZjFiYjJkY2UxNzA5OWVhNTcxIHB5M2sKKzg1MTEwIGE0MzBmOGZlYzRhMGZjNGRhYzhjOTZjN2Q4NzRhNzI1YjVhY2Q5NWQgcmVsZWFzZTI3LW1haW50Cis4NTExMSAwMDc3ZWUzMDEzNGM2YjNkNGQ3YjFmMDY5MmJiMDllZmI5Mjg1MDUwIHB5M2sKKzg1MTEzIDZkZGNmNzQyODIyN2EyMjQ4NTFkNzRiNmFkMjFlOTMwMzhkZDBhNjAgcHkzaworODUxMTQgNTkzNmVjM2M0ZWMwMjdmZjkzZmQwYmE2Y2YwNTA3NDQ4NTRlYjkwMSBweTNrCis4NTExNSAwMWI5NmY3OGZiNzBiN2JlYWI4ZjdlMjEyYjgxYzRmZDY4MjBjYzEyIHB5M2sKKzg1MTE2IDFhZGQ4ZTVmMzE5ODUxOGIzMjNlNzdmMmFmY2M0OWRlYTlkNDQzZWIgcHkzaworODUxMTcgNzQ2ZTkxNTAxMTlhZGI3MDgyMTYwNDRiMTAyNDczZmYyYjY0ZGU4YiBweTNrCis4NTExOCBlNzEwZTc5MmVmMmU3NmI0OTFmZjYwNGM5Y2NhMGFjYzkxZmUxNzBiIHB5M2sKKzg1MTE5IGVmMTY4Njg4YWYwYTk2ZjgxNWRkMjcxYjMxNjIzYTI5ZmI1ZmJmODcgcHkzaworODUxMjAgYTkzNDlmZDNkMGY3YmNhZWExNTYwYWZhNGM1Y2Q4OTMzMDFmMDhjNiBweTNrCis4NTEyMSBlYTQ3MjNhYWM0NzhmNGJkNDQ5OGIxMmEzZTJhNzhhYWM3ZTI3MmE4IHB5M2sKKzg1MTIyIDQwMzNmODNjMmRmMThkOThmYTI3NmVmMzU3YWEyM2I5Y2FjMDllMDcgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTIzIDlmZTFkY2UyYmZhNDQ1MDYyOTgyMjBiNWIyODMzZjI5YWE3MWNjNzMgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTI0IGQ5NTczZTM2MjRlYzEyMjFlZjlkOWRlZTFhNmY4OWM1N2NmZTZkZmUgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTI1IDdhZGQ0NWJjYzljNjcyYzM4NDMyNjBjOTM0NzE4ZjI2ZWE3YmNjMGIgcHkzaworODUxMjYgZDc4N2VmOWFjYjcyNGU4YzU5NzQ5NzRlMGE3YzZjZGQ2NDEzOGJkNSByZWxlYXNlMzEtbWFpbnQKKzg1MTI3IGI5OWY1MjdlMGQ3N2M3MDMzZWMxZGU3OThjMzU4ZDYxNzJkNTk4OWMgcmVsZWFzZTI3LW1haW50Cis4NTEzMCA5ZjI3ZDcyYmY1ZGY4OTMwOGJmNDBjNjgyYTYxOWU4OWNkYTkzOGE5IHB5M2sKKzg1MTMyIDI4MmM3N2RiM2QzODliZDczNDFiNGJkNmE4YzVjMDg1ODA5ZDVlN2YgcHkzaworODUxMzMgY2IyZmJiNWU2NDA5NjRlN2Y3ZGU2ZGYwZmM3ZTQ0OTc3YTFhOTFkNiByZWxlYXNlMzEtbWFpbnQKKzg1MTM1IDA0ZjUzY2E0MTU5NmVlODAxMDM5MzIzMDc1ODEyNjFlZGY0NWFmYWUgcHkzaworODUxMzYgODdmNGIzMjkwNWRmMTA1MGVmMGFjODY1ZjU4NGI0ZGFmNTMyMDk0YyByZWxlYXNlMjctbWFpbnQKKzg1MTM3IDU5NzgwNGI0MTEyNTliOGMwZjU2NTg0OWE2NDk0Y2UxYzZmN2EzYWUgcHkzaworODUxMzggZGFlY2U3YTIzNGRjOTFhODE5MDY0MzQ1MzA5OGIwYWQ1MTZmZGViMyByZWxlYXNlMjctbWFpbnQKKzg1MTM5IDU5ZGUyMjVhMTljZjhhYzU0N2EwY2RiYjQ5YTlmZDdjMmUwNjg1MjUgcmVsZWFzZTMxLW1haW50Cis4NTE0MCBhOWEzMGNmYjg5YTVkMzRiZjg2ZjcwMTcwNjJjZmJhOTUxNTg5ZjczIHB5M2sKKzg1MTQxIDZmMTMzZTg3YTRmOGIxZWVlMDgwOWFkNTVhZWZkNTgzNDA3MGUzODcgcmVsZWFzZTMxLW1haW50Cis4NTE0MiAxNWMzNjcxYzE3ODMyZDlhZjliMTdlZTE5ODY5ZmZmYTk4YzY1MjExIHB5M2sKKzg1MTQzIDliNWU2YTU3YWIxMDU0MjkxZTc3Y2U1MTA4ZTMxMTliZjk2ZDYxYjEgcmVsZWFzZTMxLW1haW50Cis4NTE0NCAyZjY4MzFjZDI0MWVkNzI5MTc0OThiMGQ5YjVhZDEwYTJjYzhiNTRkIHJlbGVhc2UyNy1tYWludAorODUxNDUgMDYyMmQ0ZDA4YWYwMjVmMjUxYjZmZmU2YmU1ZGMwY2IzZDFjNGJiNCByZWxlYXNlMjctbWFpbnQKKzg1MTQ2IDJlNjg0MGMwYzEyNjZiNDYwNmU4NTQ1ODZmN2YyYjI5MTBkNGU0YmMgcHkzaworODUxNTMgOTUyNThhNmEwNjgzZTZhNTQ5NWNkMGQxNTRiZmZlZWNkMzBhZmU5YyBweTNrCis4NTE1NCAzNDBkMWJmNTk1MWUxMDhiM2ZkMDAzOTllNTBlYzEzZTE2MjIyODg3IHB5M2sKKzg1MTU1IDQ3MWRiZDkwNmFhZDAxMWQyNGRkOGIyNGQzMmY0YjMzZjgwMWE5Y2MgcmVsZWFzZTI3LW1haW50Cis4NTE1NiA5MWU2MjM4OTBiOTRjMWRlMDQyZjY3MDA4NDU0YmQzMzA4MjI1ZmM0IHB5M2sKKzg1MTU3IGRlNDE4ZDlkZDczMzFiNjMyODI1ZDM4ZmM2Nzg3MTkxYTg4MTEwYTkgcmVsZWFzZTMxLW1haW50Cis4NTE1OCBjZTQ3NWQzNWI1MGZjNjM2ZTUyYTA1NWVmNTI3OTkwMjUwNTkwMzBlIHJlbGVhc2UyNy1tYWludAorODUxNjkgN2MwZjE4MzdlOGNiZTI1ZDQ3YjM4MTc1Y2EzMzYwZjNmNmEyMDE4NiBweTNrCis4NTE3MCBiZWJlNWUzNTY2MWUyMDc2ZWE3YTExYTQyODYzOTRmMDVlZDRkZmFmIHJlbGVhc2UzMS1tYWludAorODUxNzEgYTc0OGJmY2I2OTczM2NkOWZkMGU5Mzg3ODU3YjM0NjJkOTNjMGUwYyByZWxlYXNlMjctbWFpbnQKKzg1MTcyIGRlN2NkYjcyNjM1MDJiNzQ3Nzg2NGM5ZGFiMGU3MGNlMmMwNWFiZWYgcHkzaworODUxNzMgMGNjM2ZmODAyMGFlNjVjOTZjZDNiY2QzNTdhZWMyOGU5MGJmNWYyMyBweTNrCis4NTE3NCA0MjgzMTRlZWIyYzc2M2I5Y2NiODdjMzBkNjQ3YTU3ZjRiOGJhZGNiIHB5M2sKKzg1MTc1IGJiNWUxOGE5YmRlM2FlMjI3YzNmMWQwMmJmYWZkNjM5YjMzZjc5NGIgcHkzaworODUxNzYgOGRlNTM1ZGVmMTIyMmU0Yjc2NWYwMjk0OGNkMzFkNDEwYzE0NTEwYSBweTNrCis4NTE3NyA5MDQ4ODA3YmU4M2FiYjk5OTAzZTU3MzgwODQxMGJiNTAyNThmOGZiIHB5M2sKKzg1MTc4IGM5OTBlYjliNjBhOWU0NzliMWVmNTg3M2JmYjRjOTllMjQwZmY5M2YgcHkzaworODUxNzkgZWY1YzU3MjE3YjIwM2VhNzUwY2I4ZjRiZjU1NTFmY2YxMjUxMmY4MSBweTNrCis4NTE4MCAxMjEyZTUwMGE1ODUwZTk0NDQxMTM0YWYwNWQxZjVkNTFkYWNmZDYwIHJlbGVhc2UzMS1tYWludAorODUxODEgZjNhNzBkOTlkN2UwZmI1Y2E1YjZkMDUxMmY0N2M4N2JmODBkOTI4ZiByZWxlYXNlMjctbWFpbnQKKzg1MTgyIDA3MGE4ZjY2NDIyMGU2YzUzOGU1OGFkNzRkY2QzNDhiNTYyYjMxOGEgcHkzaworODUxODMgMzk0ZTI1MzgyYTU5MjM2YjdkNTQ4YjRhYzNjMDllZmJjMWI1MWQzMSByZWxlYXNlMzEtbWFpbnQKKzg1MTkzIGRlYzA4Nzg5YTliNDIzM2Y3MzNlZjNiMTViOGRlOTdjNjgyMmFlOTQgcHkzaworODUxOTQgMGY4NzA4NWIyOTBmNDA2MGZhODBkOWFmZDRlZDZiOWEzZTIxOGY4MiByZWxlYXNlMjctbWFpbnQKKzg1MTk1IGI5ZTI2YjBjNDYxNzk4Nzk1YWNmNGNhZmU1MzI0ZGZhNzQ3OGEwYTggcmVsZWFzZTMxLW1haW50Cis4NTE5NiA5YmJkNDQ5ODY1OGVlMzcxMmMxYTM1MjhiNjNlMGJhOTg2NGY2NDBlIHBlcC0zODIKKzg1MTk3IDNiYjNlZTZlNjBlMGE4MjIxOWI4OTI2ZDZhZDlhM2RlOWJiYTJjNmYgcHkzaworODUxOTggYmE4Y2QyMDA3ZDI5MjJmNTRlY2QwNTVjZjU2OWMzMGQyMTk4ZWVkMCByZWxlYXNlMzEtbWFpbnQKKzg1MTk5IDEzOWRkNGNmYjgwZjU3OGQ2NTNjNzNiYWE1YjMwYWY1NGU4MzU4ZDkgcHkzaworODUyMDAgZjdjOTEwN2Y3YWJkZTJmNTA3YWFmNzk5YzVjMDIxZTQwZTM2MjFlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjAxIGQxZTBjZjgxOGFkMjk5ZmZlNjQ1YWJlOWExMmI4Y2ZmZjUwZmYxYzkgcmVsZWFzZTI3LW1haW50Cis4NTIwMiAyYzJiYTFiMzA4MjNmMjA4ZDYwYTM5NDkwMDU3M2ZiZTdkMDJmZjE0IHB5M2sKKzg1MjAzIDk0NWE1NWQ0ZTczZWY4MjUxNDA3M2FmYjYzYTliZDM4NWRhZjlkZTQgcmVsZWFzZTMxLW1haW50Cis4NTIwNCBmMTFkYzk0MDRkMTE4NjFjMmMxMWZkNDUwMjg3NjcwY2Y5ZGFjYjQ5IHJlbGVhc2UyNy1tYWludAorODUyMDUgYWQ0MWZiZjMzZTNiOThkNGQ3YjI2ODUzMTQ4NzYwZjQ3NDZmN2M5ZCBweTNrCis4NTIwNiAzMmMzMmI3MGFhMzNiYjM0MDZjMjBjOGI0Mjg3NzE2MjcxM2Y4Zjk3IHJlbGVhc2UzMS1tYWludAorODUyMDcgZTFmNmNlODM2ZmM1MzE3ZmEzOTA1ZGNkYzg0Mzg2N2VjNTNlYjE1MCByZWxlYXNlMjctbWFpbnQKKzg1MjA4IDllYjllM2Y2NmUzYWQ4ZmVhZmZkZDVmNzU2ZjY4OGNlMDZmODA3M2EgcHkzaworODUyMDkgOGJkMGEwNjNjZWI5Y2U3YTkxNDExZWIwMzVkMmRmZjNmYzUxNmNmMSBweTNrCis4NTIxMCBiNzdlOTE0NDVkOWI3MWYxYTQ0MTliNmY5YjMyNmVlNDFlMzQ5MmQ1IHJlbGVhc2UzMS1tYWludAorODUyMTEgYjMzNGVhYWRiNTA4Y2VlMjRmZWFlMTM1OWJhMTY3NjI5ODdmMTU2ZCBweTNrCis4NTIxMiA2YWY3YjQxMDJkNzdkY2ExMzM5NzkxMTY4MTI2ZWRjNDNkYzdlN2VjIHJlbGVhc2UzMS1tYWludAorODUyMTMgMzYzM2Q4ZmU1NTUwNmE5YTNkODcxNWRlYmU3NTBhYTQxNjRjOWRjMSByZWxlYXNlMjctbWFpbnQKKzg1MjE1IGQxNjFmOGM5NjRlYjhhYjZhZGU0YzU0ZjRiNzI1MzVjOTg4YTRhYzQgcHkzaworODUyMjAgYzI4ZmRlZWVhNzg2MDg4ODk5NThhOWUyNDY0NGRlZmE1MDE0MmU4ZCBweTNrCis4NTIyMSA1ZjIwZjdmMTVlZGY3MDQ1ZDliZjNlODJhNjZkYzBiZDgxY2MyNmI1IHB5M2sKKzg1MjIyIDhmZThiMjgxMzU2YzNkYjNiODUzMWUxMTZlODZlZDBhYzYzMzkwNjEgcHkzaworODUyMjMgNzUzYmYyM2U0NWM1YmU4YzIzN2RhMmJiZjU0ZTQwYThiNjNhNmExNSBweTNrCis4NTIyNCBiMDY1YjE5NDBjYmQ5ZmEzY2U2NjM0NmZmNjNiZTkzMDU3NjA4YWI0IHJlbGVhc2UzMS1tYWludAorODUyMjUgMTJjNmRhNWFjZDczMDY3YzkxZDE2YzgzN2M1ZTQ5ZDZmZmZiYzYzZSByZWxlYXNlMjctbWFpbnQKKzg1MjI2IDA5ODE2ZmM5Y2RlNTU3ZDExNmViMmE2YzM5ODUyZTg5NTY0YzZhYzUgcHkzaworODUyMjggZmI4Mjg0MGYwZTcwYmVjZjc1YTEyYTA5ZmE4ZmVjYmMxN2RhYjE3ZCBweTNrCis4NTIyOSA5OTg4OTBjZmYyMDVmMzI0NWY3ZGYwZjM2NDdkNWM1ZDAzYzM0NmM0IHB5M2sKKzg1MjMyIDNkNDI1MGNjY2NlOTE4MjY1YzdhNGQ1MGVhZmFhNGFkN2ExMmUyMTggcHkzaworODUyMzMgNzc2MDk1YWEwNThkMWUxMDkzYTQyODFjNmNmYjM2MzUyOTQwZDcwZCByZWxlYXNlMzEtbWFpbnQKKzg1MjM0IGM2ZGRiZmI3YWI0MzgxOTU0ZjZhYjBiNjBjYjY0YWIzYzA0MjhkZDcgcmVsZWFzZTI3LW1haW50Cis4NTIzNSA3OWJiN2NhZTY5YmVjYjk2NGUwMThkNzZjODBjZGY3MTkxMGM1ZDYxIHB5M2sKKzg1MjM2IDc1OWU1ZDI3NWJlYjM5OWExY2IyYjJkN2Q2ODgxMjNjMmFiOTAyNjMgcHkzaworODUyMzcgNjRjYTAxZWMxNzE1ZmIzNmUxODM3MzYyZDcyNTc5MDBkNTE0MDM1NSByZWxlYXNlMzEtbWFpbnQKKzg1MjM4IGNkNzM5MTdmMjQ3ODM4NjZlZmVmNGMxMDlkYTJkMjgwMTgwNmUyZDkgcmVsZWFzZTI3LW1haW50Cis4NTIzOSAxYzQxNzgxMWU1MDhmOTllODViMWRjNDBlNGM1NjRiZGY4YjZlZDhjIHB5M2sKKzg1MjQwIDhiY2JkZDY3MzBhNzU3MzhjZDA1MWQzOWE2NGZkODBlNTY0NjIwNGUgcHkzaworODUyNDEgN2EwYjQxZjFjNzNiODUyYWY0Y2Y1ZDA5MTE3ZWU2YzQ5OGYzOGNlZSByZWxlYXNlMzEtbWFpbnQKKzg1MjQyIGVlZGJlNWVhNDRjYjIxNTkzZGFiM2JjZGYzMTYxNzg2MGY4ODgwNzcgcmVsZWFzZTMxLW1haW50Cis4NTI0MyBlYjdkNjlkODk2NTAxY2I5NmUxNjRhMGM5MjExNzJlNDhiMGM5Yzg2IHJlbGVhc2UzMS1tYWludAorODUyNDQgYTY4Zjg3NjM1NTViMjE0ZWY3MzUyOWM5Mjc3MjExMjNhYWUwZjk4NSByZWxlYXNlMzEtbWFpbnQKKzg1MjQ1IDUzNzBkNGYwODY0ODA5Y2VlMWUzZWY2MjlmNzU4MGRhODFlNTlkNzggcmVsZWFzZTMxLW1haW50Cis4NTI0NiBhNGM5NzQ2Y2IwM2M1YTViYTg0MmJhZGNiZDgwYzhiYWI4NzQ0ZTRlIHJlbGVhc2UzMS1tYWludAorODUyNDcgYmZlZTU0NzgxYmExZjkzZTRkOTBkY2Y2ZWZmMDdmMTdkZjNhNWVlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjQ4IGM5ODc5YjM0MDJlNGFiNzJkMmQzOWI0NWRiNWFhMjNlM2RjZjZlYTYgcmVsZWFzZTMxLW1haW50Cis4NTI0OSBlYjhlMTM3ODRkZTczODRjNTlmZGJlNDc2YWUzOWNiMDJhMTIwNTZlIHJlbGVhc2UzMS1tYWludAorODUyNTAgYjlhNzVkZDc0MjBkMDU2NmI3MzIyNTg3MmE3NDVkYjY5Yjg3NzFiZiByZWxlYXNlMzEtbWFpbnQKKzg1MjUxIDkwZTE3MzVkZjRkOTYyY2VlMDBjNDg2MTFjYTBhZWZlOGU1OGViMDQgcmVsZWFzZTMxLW1haW50Cis4NTI1MiAyZGU4MzIzYmQ0ZWJhMmFhMzUzY2RiMWZkNjgwYTE5M2E3NDM5YTRhIHJlbGVhc2UzMS1tYWludAorODUyNTMgYTA0NzkzNDBmMDM1MmYyYWU2M2JiMzZmZDhkNjRmNjE2OWQ5NDcwNSBweTNrCis4NTI1NCBmMDA0NDBhZjk0MTM3OGRhYjQ0ZDRlMWQwNzRiYmJjMGM1MzYwOTJhIHJlbGVhc2UzMS1tYWludAorODUyNTUgMDQ0Y2M4YTlmMTljZmExYjc3ZmFkMGI4ZWEzNjFmOWZlYTU0NGQxMCByZWxlYXNlMzEtbWFpbnQKKzg1MjU2IDZmOWQxNWZjY2ZhNGFjZjFhZmEzNzBmMjFmYjNjZmRmYWIyM2E3NjggcmVsZWFzZTMxLW1haW50Cis4NTI1NyBjNjFjMDJhYzIwOTlmYmY3ODY0ZWZmY2JlYjQ0MDY3YzkzZGJkMjIyIHJlbGVhc2UzMS1tYWludAorODUyNTggNjk1OWFkYmEzYjZhNWQyMjdkYjg5MTk4MWIyOThiMDhjYzlmZDllYyByZWxlYXNlMzEtbWFpbnQKKzg1MjU5IGE1YzYzYjNhOTZhOWE4ZjIyNDJjM2QyMDk3MzNiM2FlODQ4MjNmNGIgcmVsZWFzZTMxLW1haW50Cis4NTI2MCAyODMwNjI0NGFmYTBmNDU4OWMxYzU5ZWQ3NDQwMzhiODJkZGI0OTNiIHJlbGVhc2UzMS1tYWludAorODUyNjEgNjQ5ODliMDMzOThjYTJmOGZiNjY4ODRmMjE5ZGE5ZDkzYWE3MGY4MyByZWxlYXNlMjctbWFpbnQKKzg1MjYyIGZmNzM0ZjIyNWI0N2U5Njg5YmQyZGQxMDU4NWU3MDJjNjQ0OGQwMjMgcmVsZWFzZTI3LW1haW50Cis4NTI2MyBjYWI0NTg2MzhlNGRiNTQ3ZTBkZjYzZDQwNzk1ZjJjZjlkMmU4ODI5IHJlbGVhc2UzMS1tYWludAorODUyNjQgYmFhOThiYTg1ZmQ0MTE4OWMwYTk1YzE1MGZmZDQ1NWNlZGRmYzc2MSByZWxlYXNlMjctbWFpbnQKKzg1MjY1IDJjMTE1YmY1MmNmZjljZTVmYmZjMjMwY2M0ZGIwYWY1Njc0ZWNkYTkgcmVsZWFzZTI3LW1haW50Cis4NTI2NiAyODU2NTFhMTUzNTVlY2RlNDA1OTg5OTRhZjk1YjQyZGMyMDc4ZDI0IHJlbGVhc2UyNy1tYWludAorODUyNjcgY2UyMDIxNTJlMjFhMTE0M2U2ZTliZWFjYWY4MDJmZWI3ZTE5Y2VmMCByZWxlYXNlMjctbWFpbnQKKzg1MjY4IDUzNmQ4NjUwZGEzZGYwZDk2N2RjOTc3OGUzMzQzYWIyYWM5ODk2Y2EgcmVsZWFzZTI3LW1haW50Cis4NTI2OSBlOWUyNDFhOTNmOWVlMzBjZWY5MzgxMDYyM2FmZDdhODBkOWI5MmNjIHJlbGVhc2UyNy1tYWludAorODUyNzAgNzgzOTZlZjRkODFjZDZiNzUzY2E1ODM3M2E4Y2VmYTQ4ZjUzZjBiZCByZWxlYXNlMjctbWFpbnQKKzg1MjcxIDFhMGUwNjY5Nzc5Y2NhZjZkODI3MDg4MTA3NTYxM2JhZjIxZTZkZjkgcmVsZWFzZTI3LW1haW50Cis4NTI3MiA1MjFlYWMzMWE4OTNhOThhMGQ1YWYzNDQ2ZTgzNWIwZGZmNDdjNGI1IHB5M2sKKzg1MjczIDFjZmQzYjEyNDg5ZGFlOTRhMWY2NGE3OTdmYzYwMmM5OWQ3YjBiNTQgcHkzaworODUyNzQgOWFmZWQ3MGQzYWNhMWM2Mzc4YWUyYzM0ZDNhNWRkY2ZmNzlhNzdjYSBweTNrCis4NTI3NiBkZjg0NGJiNjcyOWE0YmM2NjE4YmFkZTJjNjBiZDhhNThlOTBkNzVlIHB5M2sKKzg1Mjc3IDkyNTdmMDgzZmNmZjIyZjQzZmNhOThlZDBjN2FmOTc2ZGIzZmU0YzQgcmVsZWFzZTMxLW1haW50Cis4NTI3OCAwMTkyMDU1YmNjM2JlOTE1OTA3NjE3N2ZiNTgyNzMxOGQwY2MwM2FkIHJlbGVhc2UyNy1tYWludAorODUyNzkgZDY3Mjc1M2EwM2YwMDhjZTliMjg0YWQ5YmU0N2QwMzBjMTg0N2IzYiByZWxlYXNlMzEtbWFpbnQKKzg1MjgwIDcwMTgyNjFmMmFjMWRhMTExMGU1Nzc2ZjYzMGY3ZDBjZGFlNDM4YmQgcmVsZWFzZTI3LW1haW50Cis4NTI4MSAyZDk5ZWRjNGYxMGRmYjBjZmRhNGEyNmE3ZmMxYzBkMGI0MmU1OGM4IHJlbGVhc2UzMS1tYWludAorODUyODIgNWI1NWU4YTljMTA3MWQzNjQ0OTQ0ODM4MmJjZjU1ZmI4Y2I3ZmJjZiByZWxlYXNlMjctbWFpbnQKKzg1Mjg3IDA2NmZiM2ZhZjZkNTM5MmYyZWYzMjIzMzA4ZDhlMzEwZTU3MTg2NGIgcHkzaworODUyODggODYyOWY3ZDhiNWUzMzdiMGEwOTdhZjgwNzc5MjUzNzlkNzA0Njg5NyBweTNrCis4NTI4OSBkMGNlM2ViMTFiMjg2YWI1NDk5OTkyZDFlYjhiMzJkZjA1ZjkzMzJhIHB5M2sKKzg1MjkwIDRkYTU1YzQ5MzQzNTcwMDE1YTQ5NDhmMGRjMWUzYTkzMzUzNzZiMDUgcHkzaworODUyOTEgYjhlNzhjZmM5NGViYTZhZTQ2MjVlOTdiMjk1NjY0MThhMjNhNDg1MiBweTNrCis4NTI5MiAzMmRjY2NkYzczZjhmNmZkZTg1ZjhhNTgzY2FlZDQ0OThkNzg2ZDExIHJlbGVhc2UyNy1tYWludAorODUyOTMgN2MxMDMxZDM4MjNjYzRkYjQ0NTkyODdkMzg0NTA0MGFhNDE2OGM3NyByZWxlYXNlMzEtbWFpbnQKKzg1Mjk1IDYyYzU4ZGM5MTJlODE2NTU0Yjg3OGNmNzZkY2ZjMWZkY2FiMDZhN2YgcHkzaworODUyOTYgZjIzN2ZkZTkyNWZhN2RkNGU4NzcyMmQ3NjgyYjM5YWViMDBhNWJiNCBweTNrCis4NTI5NyBjMWU5NTQyYjZjNzRhYTYzZjA4YTZhNDRkYTdjODNhNmM4YzY2NDljIHB5M2sKKzg1Mjk4IGUzYWU1YjAwYmExNWVlZTdiNjViNDBjYTA5MmI1NDA1NDlkOTJmMzEgcHkzaworODUyOTkgYTYyYzRkNWNkZjZjNzQzODE3MGVjNjIzY2FjODVmZWYyMWYyNDMxMSBweTNrCis4NTMwMCBiMjQ1N2ViODM0YWUwOWQyODQ2Mjg4Mzc5ZWNiZjM3MTU5OWU4NTNjIHJlbGVhc2UzMS1tYWludAorODUzMDEgZGZiMzRlNWZlMDY2MTlhODVjMmQ4OGNiMGUwNzE5NzY5YjQ5ZmNkZCByZWxlYXNlMjctbWFpbnQKKzg1MzAyIDA3MWYxZjdhZjUyMjNiODhiMjFlZjNjNmE2ZDJjMWRiZTExNzA0NzYgcHkzaworODUzMDQgMzkwMTRmMGFiYzMyODI5NWIzYjc4MGM3NjEyNzkwNzQ5ODc4NWU1ZCBweTNrCis4NTMwNSA3ODc5YThlYzdmNzlhOTMyM2NjYzUwYWVmNTQwZThmZjRmNjZiYjkwIHB5M2sKKzg1MzA2IDFmMzkxOWFmOGE1MzZkMThlZWQ0NzU0OGMwNWIyZTg2OTAxOGMxODQgcHkzaworODUzMDcgMjE0N2NjMTUyMjI3MTU0MTE5MDBjYzI1MjU3NTM3YzJkN2I4ZTAwZCBweTNrCis4NTMwOCA4ZmQ1ZDA2NDYyZTZiOGQ1ZjE2MTg2OWU3YzdjNzRlYzk0NTAxNDQ4IHB5M2sKKzg1MzA5IGU0YmRkMDdjZTBjNjI2OTM4Y2NkOTkzNmZmMjNmMTU5ZmVkYTE4ZDUgcHkzaworODUzMTAgMWM0Nzc0YjRlOThhNDYyY2NkMDAyMGIwNWNkYWE5MDNkMjM3NWViNyBweTNrCis4NTMxMSA3N2E2YTI0OWUyNGU4ZTYyZWVmNWYzNWYwZWIwYjEyYjY2NzQ0ZjIxIHB5M2sKKzg1MzEyIGZhNmU1MDIwOGQ5MzA5NWE0OGZiMjZiZjM1ZmU4ZmY0MTU2Yjk1MGQgcmVsZWFzZTI3LW1haW50Cis4NTMxMyAzOWEwYjk0M2UzZTFmMTdmMTIyZjFkZWM4MDFmMDY1ZWZlN2Q1MjdmIHJlbGVhc2UzMS1tYWludAorODUzMTQgODg0YzcxY2Q4ZGM2OTVhOTJiMTZjMzEzODc3OTJhYWZjMTJjM2QxYSBweTNrCis4NTMxNSBhMTRlMDc0ZmE0MmZjNTUyYzI0OWRjNjdiMTI3NzUyNDQ0Y2ViNTNmIHB5M2sKKzg1MzE2IGM0MTE1NTJjZGM3Y2QzYmU4OWY2MTIzNTE1NzJmNjAxYzNjYjZlYTEgcHkzaworODUzMTcgOGM1NzYwMmVhMWIzMGMyYWEyMWVkYmM3ZWRjYTFlMjJmMDhjN2ZkOSByZWxlYXNlMzEtbWFpbnQKKzg1MzE4IGFjZGIzMjAwNWMwYWMzMGZhYzI4NWY4Mzk0OWFkYTgxNjUyOTYxYTAgcmVsZWFzZTI3LW1haW50Cis4NTMxOSA2YTJmOGY2OTJmMDQ4Y2M4OWU4MjRjMjllODJkZDRlZmMwMzA2MjZjIHJlbGVhc2UyNy1tYWludAorODUzMjAgYTk5NjRhNGQzYzI5ZjA2MWZlYzE5MGUxZGVjMjkwMjQ5MTZmNmRhYyByZWxlYXNlMjctbWFpbnQKKzg1MzIxIDRjOThlZWZmMzdlN2YzYzMyZWE5NjAwYTc3NjkxZTVhMDM1MGYwYjAgcHkzaworODUzMjIgMWEwNDFmMzY0OTE2YmIzZDNhYjFiMzg2YmE0MDVjNjY4YTA3MWVjYSBweTNrCis4NTMyMyA0OTg3MzQ0Y2VlMjAwMTI4ZWFhMjc1ZjkwYjhkOTY5ZjdkYmU1M2IwIHB5M2sKKzg1MzI0IGIxZmIwNTM5YmY5OGJjYjQ0OTY0OWMyMTBiODI0NzNjZTEyOTBjMDUgcHkzaworODUzMjUgZGJlMDJlOTE2YWVjY2Y0YmU4NTc1ZDUwMThhNWY3MTU4ZTU4OWM1OSBweTNrCis4NTMyNiA1NjkzZGVkZTlhM2EwODQwMmE3MGVmMDFkMTE3OGM5ZGJmNzNlZTI2IHB5M2sKKzg1MzI3IDljMDI2MTgzZDgyYTRlYTkwNDE4OWRjMDJlZjQzYmMyNmIxYjdhOGMgcHkzaworODUzMjggYWVkZGIxODdmY2JlYmE1NmUzN2M0NzAzMThmN2Q0MjMzMTI3YjI3ZiBweTNrCis4NTMyOSAwYmJjM2JiMDBmYzRlYmRiZWM3ZTQxOGM5ODg0ODE0YmZlNzc5ZjhjIHJlbGVhc2UzMS1tYWludAorODUzMzAgNTE1NzViZGM1NDIwNmZlYWY4MWEwODVhN2UwNWQ3NDU5ZDA1M2JlNSByZWxlYXNlMjctbWFpbnQKKzg1MzM1IDQyZDZjMjYyYzk0NjY3MDU3ZWM0MjViZGIyYmJkYmY2YzlmMzA1MDAgcmVsZWFzZTI3LW1haW50Cis4NTMzNiAwYzQ4ODRkYjUzZTA0OTAyNWNmZDU2NmY1YmM2OTIzODQwY2MzM2NlIHB5M2sKKzg1MzM3IDY1NDNmYTRiMTQ1ODE1MjM0YmIyYjlmNzcxNmMxNTFjMmFhN2FlZWUgcmVsZWFzZTMxLW1haW50Cis4NTMzOCA3ZTAxZDY5NjRkNWQ3ZTBhYjA3N2FjYmU3MjBjZDZhYWZiNDU5NzFmIHJlbGVhc2UzMS1tYWludAorODUzMzkgMmQxNjRiMWFlYjc5YjdkZTMxY2RlNGMyOTVlYjAxMjc4MjViZTFmNiBweTNrCis4NTM0MCBhN2FiMDQ4YzY4NDVkOGU5M2MzYWNjYWJhMmY3ZDBjMjczMWY4ODgxIHB5M2sKKzg1MzQxIGU3YzlhODVmZTk2M2I1OGRlMGY2ODRkNmEzOWQzZGMzOTVkNjQ0MmUgcGVwLTM4MgorODUzNDIgY2YyYzU4M2IyY2JlYmYxOGJkYWI0OTEwMWYxZTUzMmFmZmI3M2Y2OSBweTNrCis4NTM0MyA4MTBiNTQwYWU2NTBmNzZkYzAyYmU4YWQxMGY1ZGM4NWQyMjY4ZGUzIHJlbGVhc2UzMS1tYWludAorODUzNDQgMGY2ZmJhNjViY2RlN2QyOTE0OTBmODBiZDZiNTI2NDcyYjg2NWQyZSByZWxlYXNlMjctbWFpbnQKKzg1MzQ1IGI2Mjg5OWVkN2ZiN2Q1YjM3NjJmMThhNmQwNGU3MTFlYWZjMjE5YWQgcHkzaworODUzNDYgZDQ3NWM5NDU0NmJlZDY1NGU5NWU4MzNlZjNjNDU4NmViMTkyZmQzNyByZWxlYXNlMzEtbWFpbnQKKzg1MzQ3IGZkZWIwZGNiOWEzZmQwZDE5ZjQ2M2JkYTJhMWY2NjhlNTY3YjgzZWMgcHkzaworODUzNDggMmZhOWQ3MzQ1YWM3ZmEzYzk0ODEzNjExMzJkNGFmNDY0NTE2ZWQ5NCByZWxlYXNlMzEtbWFpbnQKKzg1MzQ5IDUxZDMwNGVjNmMxMWI1OTc0Zjc0ZWQ1ODhhNWE4MjYyZDRiOTMxZDggcHkzaworODUzNTAgYTlhNDU2MjRjZWRmMWRlMzI0NTVjZDJlMjZlODY4MjA5M2FmOGI5NiByZWxlYXNlMjctbWFpbnQKKzg1MzUxIDIzMTM0ZTE2NzNkNzFiYTliZDBmNDQ4NzBlMzdhODFjNmY2Yjk4Y2EgcmVsZWFzZTMxLW1haW50Cis4NTM1MiBlZDVlNTk4ZGExNTBlZjZiOTA1NmEwNzI3MzBhNGI0OTNhOGIzM2JiIHB5M2sKKzg1MzUzIDI1ZDA3ODczOWMyYTRlZDgzODVkZDZhZDE2ZTcxZTczOTZkMGIxNDAgcHkzaworODUzNTQgYzAxOWU5NzdmMjIyYzMwYmQzNmVhMzAwNzEyYTg3NTE1NDM0M2E2MiBweTNrCis4NTM1NSBlZjIxZjhjOTlmYjM0MDUyY2VkMzZiZWJlMjhmOWQ0YzVkZWE2NWUyIHB5M2sKKzg1MzU3IGRhMDEyZDlhMmMyM2QxNDRlMzk5ZDJlMDFhNTViOGE4M2FkOTQ1NzMgcHkzaworODUzNTggYWQxNWI4OTEwNmRlM2JlMDVlMGYwMzk2YjA2N2E4N2NlZGZlMGUwMSByZWxlYXNlMjctbWFpbnQKKzg1MzU5IDQ1MThiMmMyZDYxNGYxMzgxN2Q4ZTg3NWY5NTAzMzJjYTVhNzE4ZWYgcHkzaworODUzNjAgY2RjOTVmZGRkYjdiMmJhOWRhYTAzMjdjYWE1ZmU5YzFmOGJjZjJkZSByZWxlYXNlMjctbWFpbnQKKzg1MzYxIDVlZGUxNWUxMjQ1ODE2OTkwOTNlY2M0NTIwNmZhMGI3ZjVkM2YwMGEgcmVsZWFzZTI3LW1haW50Cis4NTM2MSBkNTBiZmI3YWI1N2M5MjZiZjA3ZmFiYjk4Y2I3OGFhYzA2MDgzOGI3IHB5M2sKKzg1MzYyIDQ3NTgzMDQyNGMxZTgxODYwNTk5NDUzYjMwOWE5NzRlNmUzZmNhYzYgcHkzay10dGstZGVidWctb24teHA1Cis4NTM2MyA1YWFlZmE5NzUyYWNiNDlhODA3YWRjZWNhMzVkMjA4NWJhMzQxMzY2IHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUzNjQgNjJjMTRlZDZiOGEwYTYyNGE5YTA1OWI4YTA0NGRhN2I4ZjVhYzU3ZCBpc3N1ZTkwMDMKKzg1MzY1IDI2NzZhZjY1NTE0ZDRkOTdhOWZhMmI4Yjc0NDI4MzExMGZmZjU4M2UgaXNzdWU5MDAzCis4NTM2NiBkNDkwOWEwNTZkNGU3ODAzYmU4YTA5MjFlMTgxN2FiMmU1ZDg5ZjAzIHJlbGVhc2UyNy1tYWludAorODUzNjcgNDFhOWY5NTFlYmVhNWUxYWM2Y2VlNjMxMWRmY2Q3MzQ1ODg1NzI3MCBpc3N1ZTkwMDMKKzg1MzY4IDBhZGI2NDQwNTgxZWUxZDVhNmYzYTZlYTQ0MWZjYzVlOTY3OWNkNjcgaXNzdWU5NDM3Cis4NTM2OSBmN2Y3MDUyOTMxMGY4NGI5MTNjOTJjODE0NmRmZmVhZjdjN2JlZDMwIGlzc3VlOTQzNworODUzNzAgOWQ2ZDgzMDYzZWMyMmJkYzQyM2Q0MTFhZWMwMDBiMzhkOTNmY2VjNiBweTNrCis4NTM3MSBjYmRlODFlZjRhZjdjMDJlYzg0ZThhODhjMGQyZTMyNDFhZWQ0Y2NlIHB5M2sKKzg1MzcyIDE4YjcyNTljZDkyZDgzOGVmNjlmZGNkYTc2ODM3YjNjOGQ1ZmU2ZDUgcHkzaworODUzNzMgOTdmODBkMGExZDU2MzhhM2ExZjNlNzJmZmE0NGYwNmU1NDQwN2ViOCBwZXAtMzgyCis4NTM3NCA2NjljMzcyODc1MGIxNzU2ZmJkYjhhMjllYWQxNjJiYzM5ZTFjMDEzIHBlcC0zODIKKzg1Mzc1IDVmYTEyNWFlMDdhNjQxNzIzOGEwZjVkNzQwMWVjYzhhZTE3MWZhNDIgcHkzaworODUzNzYgZjMyMDBiZTRlYWEwOTg0ZDgxMzNiNTNhN2VhMGYwNjhjMzI0MTViYSByZWxlYXNlMzEtbWFpbnQKKzg1Mzc3IGZhYTRlMjJhYWJhN2U0YjM2ZWY5M2ZhMGNlNjFiMGYwZGNhMzMxM2IgcmVsZWFzZTI3LW1haW50Cis4NTM3OCA4Y2YxYWZmMTg1OWM2MjYzYTc1YTAwZWVmYzQ4MTJiNWY4ZWFhZmIwIHBlcC0zODIKKzg1Mzc5IDZkOTE4ZDkxMGE5Njg3Zjk4ZTk4ZTRiMjM5NDc5N2NhM2NmNjcxN2IgcGVwLTM4MgorODUzODIgZDI0OTI4YzI4MDAxOTE4YjRkYzZlYzNlMTMxZWM5MjVlNjVmMDFhNCBweTNrCis4NTM4MyA5YzcyM2FmYTQ0ZGFiYjQyMTgxOWE3Yzc0NDJlNjhmNGMyOGRlNGJkIHB5M2sKKzg1Mzg0IDQ2MTNlMTQ0OTAwMDY4MjQzZmMwZDgyOGVkYjdjMWUxMTk3NjNjY2QgcHkzaworODUzODUgOWUxNDdjMzQ5MTI2YzZlODFkNjE0YzUwYjc5NmIzZGY3NDBhZGQ2YSBweTNrCis4NTM4NiBkZWQ2MWUyNmI4NDE0ZjQ3YWRkNmNhNzQ5OWExZjQ0MzY5ZDVkNzA3IHB5M2sKKzg1Mzg3IGE4MTcyMDVkMjU0YTlmNzlmZTdmZGVjMjNlM2MyZWI0NWFhOTY2NmMgcHkzaworODUzODkgMzliMzhjYTFhYzA0YmQxYjUxYWNiMWU5NWYxYjViZmQxNGQzZWM4OCBweTNrCis4NTM5MCAyZmZiZmJjMGQzY2IxNmM2MTdlMmM4OWE2NDZjOTQ2YWYxZjBlMzllIHJlbGVhc2UyNy1tYWludAorODUzOTEgNjE3MzFlYzlhMDQ4MWU1NzE2MDY4MDE5NDYxZjNlYjk5N2FmMTFiZCByZWxlYXNlMzEtbWFpbnQKKzg1MzkyIGUyYWEzYjFkMDhiY2JjMTBhZjQzZGIwZjJjZTMzNmUwYjI4N2E5NTUgcHkzaworODUzOTMgNzkwOTQzNjQwOGUyZWUwOGM0YTFiMTJhNzlhNmIyMGZiMjhhNzYyNiByZWxlYXNlMjctbWFpbnQKKzg1Mzk0IDNlOGQyODg4NmFkNjYwZDljMzk0YjE0MmYyYWE4ZmI4ZWFhYjMzZTYgcmVsZWFzZTMxLW1haW50Cis4NTM5NSBmMmY1MmI0MGMxZjI4ZDI4MDRlYTQ2MGUwYzE0ZjJjZjdkYTA4ZTViIHB5M2sKKzg1Mzk2IGQ3YTcxZjFkMWUzNDFjMmE5Y2QxYzMyZDQ1YTllNmFiMzcxMDdmMGIgcmVsZWFzZTMxLW1haW50Cis4NTM5NyAyMTk1N2IzYjBhY2EwOTMzNDFjMDYyNjI1YjUzZTU0ZWI1Yzc3M2VjIHJlbGVhc2UyNy1tYWludAorODUzOTggNzViZWI2NzYyZTNiMDIzNjc5ZDIwZmI2ZGVlOWIzZDE4N2QzYzI0NCBweTNrCis4NTM5OSBjMDkwOGNlYmYxODQxMGZjNzBkOGNlM2Q5MmFlMTY0ZjQ4YTc0NTczIHJlbGVhc2UyNy1tYWludAorODU0MDAgZDBmNjBiZWIyOGYyM2YyMzA0NzliMmRhMjNmZTk4MjM1MjVhNTdlZCBweTNrCis4NTQwMSBlYWQ1MzY0YzRhNTlhNzMzYTRhZTBkZDI2YmE2YmYyNTIwNmI4NzM5IHB5M2sKKzg1NDAyIGYyOWNlMGNjMWQ0Y2U2YjZjZDBkZTIwYTMwNTlhMmMxMGI0N2E3MmIgcHkzaworODU0MDMgNzUyMDZkZjhlNThjNjAyODUwZDBlZjlmZDZjMWI2NjhiYTE0NmIxNyBweTNrCis4NTQwNCAyY2U2NDk2MGQ0OTBkYjZkZmE0NzNiZjNkNmQ1YzBkODVmZjcxNWE2IHB5M2sKKzg1NDA1IDIwZjQ2M2E0NTg0ZDdjNDJlMDM4NmE4ZjEwMDZhMzhlZTk5MDNmYWMgcmVsZWFzZTI3LW1haW50Cis4NTQwNiAyNDZkM2RmY2U3YjEwM2QwZDU3ZjI0ZDE5ZWUxMGU5MDU2YjdjOWZhIHJlbGVhc2UzMS1tYWludAorODU0MDcgMjNlYzBiZTA3ZTIwZWRkZjg5OWM0YzUxNDc3ZWM4MzY3NDViMGEzNyBweTNrCis4NTQwOCAxMjMyN2I5ZDMzMjUxOTgxYTU4MTMxYTYwMWU1MjU4OWFiMDZlZjBhIHB5M2sKKzg1NDA5IGNiNmU5YjAzZDBjMzIwYzg2YjNlZDZmZDkxN2YzYjExZWZjZmE1MDUgcHkzaworODU0MTAgYTE1Njc4OTM3ODNmMjMyZGUwYTM2OGJmNjVmOWI3ZWZiMjE2NjIzNyBweTNrCis4NTQxMSBiZjVjZmU5YTBiYjVlNTFlODI5NTEzYjY0NTc0MTBkNDUxZTE0NjZlIHB5M2sKKzg1NDEyIGQwMmQ2YmIwMjUzODUyNTM5NmZiMjcwMGNhMzE2ODJjYTk5YWVhNzUgcHkzaworODU0MTMgZTUxN2MzZjU2MDkxODRiMWEzN2VkZjQ4NDE1OTBmYjQ1OGY1YTkyMiBweTNrCis4NTQxNCA1ZWY3NmJjMTcxYWQ2ZDdkODg0YmJlNGE3YWVmNWM0OTcwMzFhYWExIHB5M2sKKzg1NDE1IDM3MjEzNDM4ZTIxZmFmZmZlNzFjZjcwZWFiN2Q3MjFlNjk0NWQ5MGQgcHkzaworODU0MTYgNDBlY2I0ZDAwZjI1YWI5YjE0NmViZTkyZTAyMTUyOWRhODY2MjBjOSBwZXAtMzgyCis4NTQxNyBjNDhjMDllNjkzZTZjOTE4ZTQ4ZDIxOTFkZWNjNWMwYTA5MDY5MTM3IHB5M2sKKzg1NDE4IGZhOTA1NzAwNzc1NTUxZjQ3NTA2OTQ2NDU2OGM5ZmY1YTI3ZDAxN2UgcHkzaworODU0MTkgMGQxNmQ1MGM1N2EwZjIzNDJjZTI4NTdhYTAwODA4NWQwYWFiZTQ5YSBweTNrCis4NTQyMCAxODc1YmZlZDU2ODliOWQwMjkyOWI2OGRmYTlmYThiY2FmOTIxMTUxIHB5M2sKKzg1NDIxIDM2MTljMTIxNDAwN2QzZDVlM2QwN2QyMzU3ZjY3YjIyYWQyNDMyZjcgcmVsZWFzZTMxLW1haW50Cis4NTQyMiBlZWFlZGNiZTI4MWQ1ODQ0ZmIzNWEzZDAzNGEzMDMwY2U0ZjhlZjIyIHB5M2sKKzg1NDIzIDY4OTlhOWNhNWYzNTM1ZGIzNDkyYWJkYTAxZjZjNDhmMTU4M2RlNzQgcHkzaworODU0MjQgOGIxOTI1MDJhNGE5YWQ3ODgzOTA2OTZjZGEzN2MyNmYxM2M2Yjc4OCByZWxlYXNlMzEtbWFpbnQKKzg1NDI1IDYxMGMyNWI1Y2ZhMjg5YmY3NTQ2NzhiNmQzNDZmYzY1MDkzZjliMjYgcmVsZWFzZTI3LW1haW50Cis4NTQyNiBhMWVkZGM2NGI3NTA0OWM5Nzg4MTA1YTkzZTFlMzc0N2JhZTU5OTUwIHBlcC0wMzg0Cis4NTQyOSAxOTYwZjU4YWY3ODVkNGE3MGFkYmZjMDQxOTJlNzgyYjgxNmJmMTk1IHB5M2sKKzg1NDMwIGE3NWZkMzFkZGFiYmVlY2IwMzhhZWM2YmY0YjRiNWM3MWJkNzZjOWIgcHkzaworODU0MzEgMDBkMTNiMmY4MWEzYzMxYTEyMzg4NWZmZjBiYmI3ODQ2YmNhNjViMSByZWxlYXNlMzEtbWFpbnQKKzg1NDMyIDYxYzM1NDcyYTRmODFhNDIyNzc3MWMxZjgwZGI3MGE4M2UxNWFjNjYgcHkzaworODU0MzMgNjQ3NGFkZGQyODM4Yjc2OTc3ZmRiODViZmM2MjM3MDBjYjM0N2IzZSByZWxlYXNlMjctbWFpbnQKKzg1NDM0IGYyZjdiNzBmYzVlYmU0ZjkwYWE0MzUwODRiOTFmYzk0ZTFkN2M2MzEgcmVsZWFzZTI3LW1haW50Cis4NTQzNSAzMzM1ZWRjZTQ4YTM1NDY0OWIyYThhOGJjOGRjY2JiYWE3MjA1MTU1IHB5M2sKKzg1NDM2IGE0YTZkODIzZmY4OTUxNjYyMmYxNTIzZTRkMTk2YTk5OTBiY2RkMmQgcHkzaworODU0MzcgNDc1NTc0NDcyNGYyMGJhZDQ3Nzk2YjVjZDc2N2ZhMDY3NjllYjE2MCByZWxlYXNlMzEtbWFpbnQKKzg1NDM4IDFmMjI1ZDY2OTQxYTkyMzAyNjUyMjFjODAyMDM2ZWE4NDFjMmI3YjUgcmVsZWFzZTMxLW1haW50Cis4NTQzOSBlNzZmNTU0MTU4YTg1YmVhM2FmNTFkOWQ4Zjc3NmU3ODQ5Njg5YmRmIHJlbGVhc2UyNy1tYWludAorODU0NDAgZTllYTA5Nzg3YTM1Y2Y5M2NmNTM1Zjk2NjQ5ZGZhYzEyNmIwZWZkNCBweTNrCis4NTQ0MSA0YzU3MDZiYzJmNDMwNTFmYzY4YmY2NDJlMDE3YTFkNGJmNmQwZWUxIHB5M2sKKzg1NDQyIDQ5ZGY3Nzg4ODllNmZhY2NlMzk2ZTBkMWJjY2NlNjcyOWE1OWExMzggcHkzaworODU0NDMgYTQ2NzExZGU5MjkxMjA3MmJkMTg3OGNhY2Q3MWJmZGFhYTE1NWQwNiBweTNrCis4NTQ0NCA3OGExMmI4MjlhOWFhOWU3N2M0YmFmOWMzNDIwMTZhMjVkNjE2YmQ2IHB5M2sKKzg1NDQ1IDFlNzJhYmYwNzNjNTZmNWUzMTAzMTIwMmViZDgzZTM2Yzg0NjAzMzggcmVsZWFzZTMxLW1haW50Cis4NTQ0NiBlYmUxNGNjYmExYjdiNTFhODRiMThiOWEwNjk0MjdjNWY4Y2MyZmJhIHJlbGVhc2UyNy1tYWludAorODU0NDcgNmZkNDlkMDUyMTM0NWRhZDFmYzgyZTk2MzU3YmFjNWNhNzY1M2U0NSByZWxlYXNlMjctbWFpbnQKKzg1NDQ4IGZhMjdkZDEyOThmZTU3NzY1MDg3MmRjZDE2NGY2ZWFhMTQwMmQ0Y2MgcmVsZWFzZTI3LW1haW50Cis4NTQ0OSAyZjNlMGVlY2M3NjI3N2JmNTNjMTc3MGE0NjI3ODllZTBkNTZmZDljIHJlbGVhc2UyNy1tYWludAorODU0NTAgY2NjNDI0Yzk2NjQyNmJkMTUyMjIwMmYyMDk0ZjI5MmZlYjBhNDk0ZSBweTNrCis4NTQ1MSBiNWNlMDZiYmIwNmZlMjEzMDMxMDcyOTI0NWUzNWRjOTYyMTlmMGQxIHB5M2sKKzg1NDUyIGVhMmZlOTU4MWMyZDhmMGEyMDM3ZmExYWIwZjg0OTMyMTIyZmU2ZTUgcHkzaworODU0NTMgMzBiM2Q3YzUyNTNkNTg4ZWI1MDcwNjkwNWVlOTE5MjI5NGVkMjc2NiBweTNrCis4NTQ1NCAzNjExZWE0MmI3OTJkYzEzYzU1NDhjOTY4YjVkMzc4ZmUyOTkzNTlkIHB5M2sKKzg1NDU1IGJhNjU4MWVjYjZmMWVlN2E0ODMyMzU0Yjc4ODliMGQyZjk0MmQ4NmMgcHkzaworODU0NTYgZmQwNDRjZGE5N2Q4MzcwZmNlMzNhMTM5MDhlYmMwNjBiODBmOTE1OCBweTNrCis4NTQ1NyA2YWIwZjkyMTk2NjBiODgyZWZkNGRmNjRjOTMxNjE1YzhmNTgxYmNiIHB5M2sKKzg1NDU4IGJlYWU3NmVkNWViZmUzZjhlM2MwNmJjODY2YWQwZTZjZGY5YjRiZWQgcHkzaworODU0NTkgN2Q3OTY4ODE1NmRiNWZkYmM5MDBkOGM3NzA3MmU2MTdiNDkxZTI0NyBweTNrCis4NTQ2MCBkYzIwMGNmMmY1NjU4YWMxMDVkZWY1MmQ2OTNhZTc3NTJkOTY1ZDkwIHB5M2sKKzg1NDYxIDJmMTc5YTNjYjIwNjYwYTMyY2NmODE1ZTdmNDRiMTVjYzUzMWRhM2UgcHkzaworODU0NjIgODJjZGU4YjczNzI4MjMxOTFjOTk4ZDQwMGM0N2ZiYTIzZWQ3ZjdkMSBweTNrCis4NTQ2MyA0YThlMGQ4OTc1NWI2NGMyZTkwMzUzMmViZmI2MTE5YjVlYzA1ZDZhIHB5M2sKKzg1NDY0IDY3YTIxODU3MGY0YTRlMTZiMDQ1YTM1ODM2ODFjMTA2MWEwZWVhM2QgcHkzaworODU0NjUgNjYwYWZkYWViMmQ2ZTYwNzIzZWFkY2I2NTc0ZmEwNWFhYWE4YmRmZiBweTNrCis4NTQ2NiAyODUzY2FkOWNiYzAyNDMwMGUwNTdiMDA0YWE1NmQ4NDg4NzBhZTE3IHB5M2sKKzg1NDY3IGUyYzk4YzYwZGQ2NGQwYTVkMjEwNGQ3M2ZjYjU4NmEyNDEwZTE3NDMgcHkzaworODU0NjggYjY1MjA2MTI5YjVjOTRjNjg2ZDE0NzVhOTMwOTEyODhkZGM1NDRiNyBweTNrCis4NTQ2OSA5OTVjMzNlMjI2M2IxYzkxMGFhYjQxYWY0ZjFhMWViYWY3Y2I4ODc5IHB5M2sKKzg1NDcwIGE1ZWVhZDE0MWNiNDYzNTZmNWViY2RkOWQyZTRjYjUxODg4M2E4OTMgcmVsZWFzZTI3LW1haW50Cis4NTQ3MSA2YTg0ODk1NTQwMTk4MmMyNmQ2ZmNkYWE5NTcyMjczNjY0YjNmYThiIHJlbGVhc2UyNy1tYWludAorODU0NzIgNzFlNzZkMDNmYzY3ZjI1MDc3NGFjYmZhZmZiZWRmNGM0NDRmNmFmNCBweTNrCis4NTQ3MyBkN2Y5MDczNTdkYTdlOTUwY2JjZGM0MTk4N2MwNThmMWI3Y2M2OWZiIHJlbGVhc2UzMS1tYWludAorODU0NzQgODEzYjUxYTZhNDE3OTk3ZDU1YzE4NTc5NGNmZjRjMWVhZmUyYTk0YyByZWxlYXNlMjctbWFpbnQKKzg1NDc1IDk4MmM4ZWM3M2FlMzdlMGVkNmQ1NDk3M2ViYTNmNzBiZjYzOWVjOGMgcHkzaworODU0NzYgM2Q5ZWYwOThkYWYyZTM2ZmNiYzZkMjJmN2E5NTZhYjY3M2IwMTMwZCBweTNrCis4NTQ3NyBhMjdmYzBmZjM2NzhiMDA5NjYzNDA3NjUwZjI5ZWE0ZjIxNzM0ZjAxIHB5M2sKKzg1NDc5IDA4YTljMDQ2MDA0ZGQxMWE5NGFmOWYxZWMzMTIyZmFkNDI4ZGI2ZmUgcmVsZWFzZTI3LW1haW50Cis4NTQ4MCAxMjQ0MmFjM2Y3ZGRiYmEzY2JlOTgwNGE5MzI4OTA1NGU5YmRlYzQ0IHB5M2sKKzg1NDgxIDE5MGYyNDdlZGI5ZWViY2YzMGRmZmIyYWZkMTQ5OTdlZWIwYmM3MWIgcHkzaworODU0ODIgYWQ0MGMwYTNlMjIxNTZhMWUzYzVjY2Y1MmQ4OGQ4YmViNTYwM2FkMiBweTNrCis4NTQ4MyBiODNmMGE2NjdlN2NlYjJlZWQxYzBkMzZkOGE0YjA3NGRhODM2Zjk1IHJlbGVhc2UzMS1tYWludAorODU0ODQgMDdiNmJiNzZlZTQzOTIzYzU1NmZkMDA5NzE1ZjBjM2E1NWQ1OWMzZiByZWxlYXNlMjctbWFpbnQKKzg1NDg1IDA3OGUyZTQ3ZTUyYjA2YWZlMTJkMTgxOTk5OWVlZmRhMjE2N2U2MzIgcHkzaworODU0ODYgYjg4NmJmNjAyNTEzYjRmN2U5N2UxNTcxNWZmNDAzZDVjYjg3YzdlNyBweTNrCis4NTQ4NyA5MGMyYjY1NDkwYzc1MzIzMTZhZDBkNzE1ZDNhNjczNjljNTNjMTQ0IHB5M2sKKzg1NDg4IDgwZDNhMzc0OTliMWIyYjIwOWE2ZWQ4NTc5ZjY3NmIwNTU0NzRlMzcgcmVsZWFzZTMxLW1haW50Cis4NTQ4OSAwNjdlOGIyMDAwZGQwNTc5MmVmMDQzYTYwNjc2ZTVmNWY1Y2UyM2IzIHB5M2sKKzg1NDkwIDNlNzkxMzRjNjUzNTdhNzYyZGEyNWZhZTEwNmU1MWVmM2FhNDAwZWIgcHkzaworODU0OTEgMWE2MDEzZWU5NzRiMDg3N2I5NGExMzNjNjBiZDMyOTJjNDc4Y2M3ZCByZWxlYXNlMzEtbWFpbnQKKzg1NDkyIDI1M2EyNjg3ODU4NTc0OGZiZThiZjY1ODEyNzBhZWM4NjQ3NjY4OGUgcHkzaworODU0OTMgYjdlY2Q5NDRiN2NlYjJhZDFjN2ZjYmUxMDgyYTJiYTdiMGJmYjI5OCByZWxlYXNlMzEtbWFpbnQKKzg1NDk0IGQ1MmQ1ZDM1OWRiMzEwMDEwZWY3NWQ1YWI1YTdmMjVkNWJlZTI4MjYgcmVsZWFzZTI3LW1haW50Cis4NTQ5NSAwNTJjMTk5YWUxOWE5YjA5YjgzMjQ5ZDYyYTE3NTI5NDZhMGJiYWY2IHB5M2sKKzg1NDk2IGYzZGE4Y2Q3NDExMzc4YjZkMDlkNTA2ODg1MDdiMTljODUzMGQyZTAgcmVsZWFzZTI3LW1haW50Cis4NTQ5NyA0Njk1NmEyNWMyNjQxYmZlN2JjOGM1YWMzZWM1NmIxODg5OTg4NzA2IHB5M2sKKzg1NDk4IDYyOTY2MzJhZDJjYmU2NWY3MDMxYmJlMWNlNmZmMWMyMzMyMmJhZmMgcmVsZWFzZTMxLW1haW50Cis4NTQ5OSA0MjY5MjY3ZTZlNTdkYTI0MzI1ZGQ3NmIzNjIwMzQxYWFmYjI5ODQ4IHJlbGVhc2UyNy1tYWludAorODU1MDAgNmNmMjIzZWNhYTZmMGRjNTMyN2M1YzE5MjZlMzE1Zjg3MTYwNDE3MiBweTNrCis4NTUwMSBjZWIxMjcwM2M2ZGJhMzMwMjYxNWVjMGVlMTZkNjc3NjYyNThiOTg0IHJlbGVhc2UyNy1tYWludAorODU1MDIgMjdjMDUxMjQ3MjMzYTZlMjRiMzZiMTc2M2U1MWI2MTRjZGFiZmUyNSBweTNrCis4NTUwMyA0ZDVmMGM0NDg3ZWI5ZmZiMzY1ZTkzMzJkNzVhNGRlZDMzYmJjNTk2IHB5M2sKKzg1NTA0IDE3ODJkYTQ0MGZiMWU0NDZmNzc4ZGQ3ZTQzMjVhYjVjODY2OTk5YTcgcmVsZWFzZTMxLW1haW50Cis4NTUwNSBmZWE4ZjIxYjE5OWQ3NGQ3YjQwOGRhOTVlN2Q1MzVhOTBmMDZiMjU3IHJlbGVhc2UyNy1tYWludAorODU1MDkgN2QxZTQ1M2IxMjBiNmU2MmI5YTUwNjFhYWY2MjRiY2NhODc5MGZjYSByZWxlYXNlMjctbWFpbnQKKzg1NTEwIDg5YThiZjUzMjVjZDE1ZmVhOWUzMGVlOGZhOTM3OGU4M2Y2NzRkZTUgcHkzaworODU1MTEgNWUxNTc2MDUwNzQ5YmViYTE4YjFjMjljYTM4NDdlNTg0OWUyZDhmZSByZWxlYXNlMzEtbWFpbnQKKzg1NTEyIDE3ODA2ODRhZTNhZDk3YzBmYmU2Y2EzYWFjNzFmMDc5MTZiMDU0MTAgcHkzaworODU1MTMgYzNmMmM1ZDM1YWZhZmNkODlmNzgwZWRmMTBkODNhOTkwMjVhNDQzNyByZWxlYXNlMzEtbWFpbnQKKzg1NTE0IGU1MTIzNzJmNzQ5NDZkNmY4YTNiNjA1ODY4MGJmMzI1MTFhNmVhNjggcHkzaworODU1MTUgY2MxZDhhMmRiMzQ4NmU0MTI4MzdhMDliOTVkMmM5MDRhNDQwMGJhNiBweTNrCis4NTUxNiBmNjNkNzQ3NjIyYmQ1MTczNDdmMWVhZmUwMTJhMTJhYjllZjJhNTcwIHB5M2sKKzg1NTE3IDQ1M2ZkODE4MmMyZjk2ZTllMGUxN2MzZjMzY2RmNzJkNTAyZWEyYmYgcHkzaworODU1MTggYmIzMDM5M2QxZWExODlhZDNjYjY3Yjk1NGU3ZjczNzgwMjM4OWY3MyBweTNrCis4NTUxOSAxNTc3NTFjYzRjZDUxODgzNzAwZTk5MzZmMjI5N2M5Y2Q2YjUyZGVmIHB5M2sKKzg1NTIwIGU3NzNhMWYyM2Q0MzM5M2U3YmJmN2EzMmY3NGI0MTUwNzliZjYwMzEgcHkzaworODU1MjEgOWM3M2ZlM2Y0N2UyNjkwNjA5OTNkMzVhNzdjM2M1MDRjOWI4NGQ5NiBweTNrCis4NTUyMiA2YTM2NWI5YTIyYmE5YzNiMDFkZTUwODdiMDZkMmEyYTU1YTExODNmIHB5M2sKKzg1NTIzIDUyMDI1YzM1NDFkODg4ZmQxOWIwNDc1ZDRiZTkyZDFhZGZkMGI1NTcgcHkzaworODU1MjQgMWY1YTI4YmE3NDc3ZDAyYTNiODE1MjAyOWEyOTkxYThjZTYwM2M5ZiBweTNrCis4NTUyNSA4OGJkZWY1MzYwYWYwM2FjZWZmZWI3Y2YxNzg1OWE5MGVjNzAzYTc5IHB5M2sKKzg1NTI2IDMyMGQwZmEyMTY1OGQxZGY3NDE4OTZiNDczNTIzNjA1YjE5NjE5OTQgcHkzaworODU1MjcgNGViYzAzMDhmNGIxMmVlM2Y4YjU4ZDliYzhhZWRkOWU2YzZhMzc0YyBweTNrCis4NTUyOCAwYjUwZDg3MDYxMzQ0NjM0YTcxMTMyOTJmZmUzOTEyMzBmYTc0YjExIHB5M2sKKzg1NTI5IDgwZmUwNjZjMTM1YTkwNDc2ODFiNWU0NzFjMzU0NTNmMWI4ZTU4NzMgcmVsZWFzZTI3LW1haW50Cis4NTUzMCA0MTg2OGNhNTI3NDRjOGVkMmYzYTdlMGQ0NTRmNzQ2MDcyYmVhMTQxIHB5M2sKKzg1NTMxIDU2MzNhZjU5MDA1NzAyYjk1MzEwMDU2ZDFhNWU0ZmE0YmZlNjE4N2YgcHkzaworODU1MzIgOGY2YWJhMjNmYjJhYmM3NWJlOWViMmMwY2NlOTRiZjEyZGRkNThiYyBweTNrCis4NTUzMyAxMDQzNThiNWQ0ZDE0NDZkYmMwNWFiZTBlZmJjOGNkYjIzZTE1NDA4IHB5M2sKKzg1NTM0IGRjMjVjNTBhN2MxMTYwNjg4NDkxMmQwMmI1MDExMzZiZDA4MDA1ZGQgcHkzaworODU1MzUgNmI4MzE0Mzc2ZGUyZWViNGU0NTZlZTA3NDVmODVlMmYxNjEwNWZmZCBweTNrCis4NTUzNiA5MmVhNTZiNTJkOGY3MzE0YmM1N2FhOTdjMTg1MmE4MThmZDMwMjk4IHB5M2sKKzg1NTM3IDk3MTI1ODZmYTQyZjVmOWZlYTBlMzcxMDU1N2U4MWM4YjgzOGQ3YmUgcHkzaworODU1MzggYWM4NjgwNjg1ZmRlYWEzZTc3ZjgwODVkZjU0Njc1ODUzZWU2NjhjNiBweTNrCis4NTUzOSBkODM4NGZjZTNjNzNiOWRhYWY0NmE3YmNkNTE1MGYxOGUwZjk2ZWQxIHB5M2sKKzg1NTQwIDc4ZDUzODU5Mzk1YTQ0NjJlNzNmNmVjNjczNWM1NjMxMzUyYjUxZDggcHkzaworODU1NDEgZjMzYmI4NTA3ODllYTg1MmVkMzg2NjQ1NTQ2YThkZDI1OTg0OTM0NSBweTNrCis4NTU0MiA3ZGUzNjVjMTk4NmJhYmFiNmRjOThlZTdiMTc3ZjM0ZTI2NDRkMTdiIHB5M2sKKzg1NTQzIDZmNGNmNzMwMzJmYzliOGZjODQ2YjJhYTJiNDE2YTI3MTYyZTMyZDYgcHkzaworODU1NDQgOTM0N2IwYTg1Y2FmNTg2YWMwZWQxNmVkMzhjMzVmNTlhMWExODgwZSByZWxlYXNlMjctbWFpbnQKKzg1NTQ1IGVlYzQ5OTg0N2RmN2JiOWQ4Mzg0YmJhZGI4NDJhM2QxODg2NjMzN2EgcmVsZWFzZTI3LW1haW50Cis4NTU0NiBiNzFhYWY0ZTdkOGQ5MDFiYWZmMDZjY2QxNTU1OTFhZGNhYjNmNTJkIHB5M2sKKzg1NTQ3IDBlMmNiYzMxZmM5MjVlMjk2MjJlODRmYmZmMzQyNGM4MDZiYTAwYTkgcHkzaworODU1NDggMzk0YzAwYjRjOTE5NGNmZDcyNmVhMzJiMzEyODIxZjg3NDZmOTMwZiBweTNrCis4NTU0OSA4NDRlZDZkZGRjMDMxZWZlOTY0ZTM1ZGNiYjhkNTI5YzIwZmZhNGZlIHB5M2sKKzg1NTUwIDM0OGYzMzY5NjQwMjE1NTAxNDk5YzdmMmVhODA1OWFmOTFmOTcwYzIgcHkzaworODU1NTIgOTAwNTI4ODljZTNkZTMzYzFhZTBhMDliNGQwNGZiM2MxMmJjZTg2YSBweTNrCis4NTU1MyAyOTJiMWRmMDFiYWQ4N2M3YzNkNzE3NWY2YTY3ODMxZjc0ODE5YmNhIHB5M2sKKzg1NTU0IDNjNDIyNWJmODdiNDEyNjYzNDU2ODgzYWI4ZDVlM2Q1ZjZlNzhmZjQgcHkzaworODU1NTUgMmIxN2JlNjJjNzRmY2M4MDM1MjMxNDE3NjAwZGFmNzRmOTIzN2Y1YyBweTNrCis4NTU1NiBkNDM5MGI2YmY3ZWM4ZTE2ZjJlNDEwZTM5NTU3MTJmMDYxZDU3MzIyIHJlbGVhc2UyNy1tYWludAorODU1NTcgZGRmMmVhZDI2YWFhNDVlYTY5ZTA4ZjExZjEzMWYxOTNlNWNkNzNjOCByZWxlYXNlMzEtbWFpbnQKKzg1NTU4IDRkNmM2M2M2NTU1MGMyMzY5OTQ4MjY4MmM0NzQ2YWI2N2NiZWNkYWIgcmVsZWFzZTI3LW1haW50Cis4NTU1OSA5MzJmOTdiZmJkYzBjNTA0OWZlYWZjODIxYThhYjE0NmQxNDE3ZDEyIHB5M2sKKzg1NTYwIGZjZGMyZmFlNTBjMDgxYWM5YjcwM2RjYWM5NTdmOWZiMDMzNGQwZWQgcHkzaworODU1NjEgZjk4YzNlMmZkMDU1MDMzMTI0NTJlMTBhOGI1Yzc3NjA1MWMzYjM4MSBweTNrCis4NTU2MiBmZDVjODNmNzY0NDc1MGJkMjRhYWZmMGNjMmJlODg3NmIzMTc5M2ViIHB5M2sKKzg1NTYzIDM2MThkOWQ3OTAyZDNjYjQ0OGIyNTE3YjBmZDQ4MGQ0MDhhYjE1ZmYgcmVsZWFzZTMxLW1haW50Cis4NTU2NCAwYmQwZTg3YTY4NTE1NDIyNDZkYTVhN2UzZmU1OWY3MzVkMjkyNjU4IHJlbGVhc2UyNy1tYWludAorODU1NjUgZjkxODRlN2NkMjVjZTEzMDc1MjA0ZGE3OGRmNDNiODE3MmY3NmZjOCBweTNrCis4NTU2NiBkZDA4NjdiZDk1NTc5MGQ4Yzg2MzU5NjcxNGQzZDRmMmM5NTgyMzA1IHB5M2sKKzg1NTY3IDA5ZWZmZmU3MDAzMDcwMThlZmUxYjE2N2UwZWY2ZDNmZjRjNjdlMGQgcHkzaworODU1NjggNzZjODg4ZmQyMzgwZGYyNmI4MDMyNmYxZjY2NWI5ODkyOTViMTEzZiBweTNrCis4NTU2OSA1NWVkNWM1MjQ0MjhjYTIyODY0ZGI2NGQ4YjA1ZjY1NDY4YjVkYjVkIHB5M2sKKzg1NTcwIDllZDY4ZGQ2YjcxZmY3MjMzOWI3YmE5N2NhNWQyNDc0NzVlM2VlOWMgcHkzaworODU1NzEgNjAzOTg0NTA5MzQzMDJjMTA2ZWI5MzQyOTlhOGI0NjVjMTI1YjU0MCBweTNrCis4NTU3MiA2ODZhMmE5MWY4MjYwODBlZThlNWMzMmI5YmY3ZjA5NTVmMjc2ZWFkIHB5M2sKKzg1NTczIDNmMmUxNDVjNGEwMmU2NjIwZmNjODU1MDZjZDYyZmRmMjU0MzVhZDMgcHkzaworODU1NzQgNTE4MWMzYmY4OTcwZTE3YmUxM2QyMTM0NDZhMTBiYjYzYzhlNDZkYSByZWxlYXNlMjctbWFpbnQKKzg1NTc1IGE0NDJlY2I3MDg0MWYyZGQ3YzU1YTA5NTQ3NTljNmM2NGZhNWY2MzYgcmVsZWFzZTI3LW1haW50Cis4NTU3NiAwYmE1MGQ0ODVmMDcyNjhhMzQ3ZTUwNWE2ZmFkN2NkM2QyYTViZjhlIHB5M2sKKzg1NTc3IGI0YmRkNDI4ZWIyYjFmMjM5YTMyNDQyM2I0MTdhYjU0ZDNhNjAyNWYgcHkzaworODU1NzggYjc0OWRjNGMzNzRjMTY3ZWJhMTI4YzlhOTYyNTI1ZGIxYjI2ZmRlNSBweTNrCis4NTU3OSBlMWRjOTg2MWI0M2YzOWMxMTIyN2Q2YjNkMDExMWU1MjY4ZjIzODQ4IHB5M2sKKzg1NTgwIDZkY2JhOTNkNjI2MjAyYWMwNTllMGRhMDFlMTgxYmVmMzJiNjVkMTQgcHkzaworODU1ODEgZGYwZTM0OGU3MTc2MmU5YTU4NDVjZGJmODBmYmQ2YTljNDk1YjM0NiBweTNrCis4NTU4MiAzNzk0YzliNTA4MjRmZDdiNWY4Mzg0NmVmODc5OWMwNjIxZWJjMjY2IHB5M2sKKzg1NTgzIGJhODZmMzRmMDhkYTZiY2ExYTg4YWM5NmU3Zjg1YmYzODJjMjdiMDggcHkzaworODU1ODQgOTMwNmZmMWMzZDQ2ZjdkMTdiZjFiMGM2MzE3ZDBiMDM1MjJkOTRiYiBweTNrCis4NTU4NSAzNDAzNTlkODBjYTA1NmEyMGNmNTI0NTkxN2MwZjAyOTEyMWZmNjQ5IHB5M2sKKzg1NTg2IDQ0M2FiMmNiYWJjYmNhZGFkZjg5OTBhOWVhN2U2YzgwYTBmYWU4OGMgcHkzaworODU1ODcgMDI4MzA1NTNkYmQxOTkyOTc3NzkzMmE2MDA0MGVlODc3NjgyZjcyOSBweTNrCis4NTU4OCBmZDUxMzVjYmQ5MjhkZjMzMGUzOTdlMjY4OGU3OTk1Yzg1OGI1M2RiIHB5M2sKKzg1NTg5IDYwODdiMWY2Y2E5Yjc0ZWI4MmNjYjUwNmYzODAyZjU2OWRiZWUyYzkgcHkzaworODU1OTAgNmIyNjY4ODczZjMwZDI5MWMwOTY2M2ZlMWZhMzY2M2Q1MGNlMTEzNSBweTNrCis4NTU5MSA0MzU3NWIwOTY5ZWQwNjNjMDlmNzQ0ZGE4MWMwYzM2MmNjODg4OTIyIHB5M2sKKzg1NTkyIDZlY2U2Mjk0NDViNjBiMzUxNWI2MmE3ZjRiMzhkMmEyMDcwOTI0MzggcmVsZWFzZTI3LW1haW50Cis4NTU5MyAxYmY3NjdmMjhkYjRkZjYyMzRlMjIwMGJjYzhlNzc2YmIwN2RjZGFkIHJlbGVhc2UzMS1tYWludAorODU1OTQgMDUwNWViYTYyMzQ3MmZjZWZiZmMxYjYzOTFjZDcxZDM2MTQ5ZGU4OSBweTNrCis4NTU5NSBjOTljZjkxMDI0NzZjNDljNTUwNWQzZjk3ZTRiNzEzYjhlZmRjZmE4IHB5M2sKKzg1NTk2IGVhYmM1YzUzZjEzNGVhY2NjNTFiNzA1MTQ5YzljMWVkM2FkMzMwYTkgcHkzaworODU1OTcgMjg4MGU3MmE0NjRiZDFjMWE4ODUxZWY1OWU4MmQwMzBmY2M5OTBmNCBweTNrCis4NTU5OCA2ZTU1OTc5M2U0NTBjZWUzNTY1MzI2NjgwODVhYjAzYmVjYjI4YmYwIHB5M2sKKzg1NTk5IDE1ODU5NzQwYWFlNmMyZDcwMmM1Yzc5YzRlOWIxYTg4MGFkOWRmNmYgcmVsZWFzZTMxLW1haW50Cis4NTYwMCA3MDI1Mjc4YzVhNDFhOGI2Yzg1OTM0MWZkNDczMWMwYTRhMjE2OGEwIHJlbGVhc2UyNy1tYWludAorODU2MDEgZjYyMTZjNWYwNjgwM2FlNWJkOWU1Zjk2MzczY2RmZmFjZTFmYzMyZSByZWxlYXNlMjctbWFpbnQKKzg1NjAyIDE1ZTNhZDBjYTM2NDhiOWY5NzBjZmVmZWQ2ZGJjZTgyZjYxMDdjNWQgcmVsZWFzZTI3LW1haW50Cis4NTYwMyBjYWExN2EwMzMxNzZiMjllODY2NGU2MWYxMDUyNTcwZTNhN2ZlMjM5IHJlbGVhc2UyNy1tYWludAorODU2MDQgMDg4NDAyNDY5MDE2YmE1MWY5YjViYWUwYTgzOGE5NzQ2NzA4ZjA3NCBweTNrCis4NTYwNSA5MzFmMjM5MDgyOTY2ZmZjYzlkZjY5M2M0NGRjMGQzY2M2MTVjODI4IHJlbGVhc2UyNy1tYWludAorODU2MDYgODczM2M2OTAzZmNjYTI2ZGZmYmYwOWFhY2Q0MjYxNjIzODU5Y2M5OCBweTNrCis4NTYwNyBiZTYwYzk2MGFjMDlhNDBlMDQyNTEwMDA5N2YzNGMyZmJiMTMxYTEwIHB5M2sKKzg1NjA4IDJlODUwNDcxMTlkMjFiYWZmOTE0NzhjNWQ2OTA2YjAyYWYxZGU5OTIgcHkzaworODU2MDkgNWIyYWYzNWI4YjRiNjA2YTJjMGIwYjVhNzMwYWQzMDE0ZWQ0NjU1OSBweTNrCis4NTYxMCBkMjUzNDZjMGI5ZDA4ZDYyYmFjM2JmYjYwYzIyN2U0M2JmYTI3NTUzIHB5M2sKKzg1NjExIDNiNWVkODQ5MGFiMmMyYTMyYTA2Y2M1MDA5YWU5ZWI3ZjA5ODQyODcgcHkzaworODU2MTIgNjk3NDFkNGI4YTYwMDM5ZDA1ZGE0YjMwOTlkMGViMTJjNzkxM2YwNSBweTNrCis4NTYxMyA5NmQ3ZTc4NzRmOGM0NjI2NTFlOTMxYzEzNGYxMTJkNzY5OThjOGNjIHB5M2sKKzg1NjE0IDk2NmVjMzFiODM0MmM3NjIwODgzYjI4NzU1NDQ4NTU1YTcyNmE4MTggcHkzaworODU2MTUgNWRhODM3ZmNmNjc1OTNhZWE1NDcyNDc4OTI4ZDQyNGM4ZjMyYmY0MCBweTNrCis4NTYxNiA0NzNiOTIxZTNhMWYzYjZkMTVlZjc5NjY2ODI2MjY0NmE0YWI0YjhjIHB5M2sKKzg1NjE3IDdkZGY2MGM4ODk2YWEwNDE4OTk2MWNiYjM1MTI4OTA2NzdjZjEyZGIgcHkzaworODU2MTggYTRkZDM4MzkxMmQ4OThkYmRiYTY1ODc5YWI4M2E3ZTQwZjRhZDliYyBweTNrCis4NTYxOSBhOTA0N2NlMWU4MWRhYzI3MGMyY2Q5ZWNlMDc4ZjAzMGFhODFlNzA5IHB5M2sKKzg1NjIwIDE5Y2E3MGI0NjNjNTk5MmNiYWY3ZWJiN2FlNTMyNWE4ZWFjMDA3NTYgcHkzaworODU2MjEgYWEyZTQ2MzdmNmNlOTcxNjQyYTQ3ODFlYzkxYTQxZWMzOWI5Y2Q4ZCBweTNrCis4NTYyMiA1NzM3YWQ3MWU5ZTE5ZTk0NmUyYzUwYjZiNjMwNWUzNDY1OTU2NTBmIHB5M2sKKzg1NjIzIDg3ZGNlYmU3OGQ2N2NhMmIyNzgxYjY4YjNlNzU5MjkzZTExYzUxODYgcmVsZWFzZTI1LW1haW50Cis4NTYyNCAwOTk5ZTNhNDQ3MzViZTYxZTVlYzE2YTAxYmEyZDk3NTEyOTY4NDA2IHB5M2sKKzg1NjI1IGQ2OTk3MDhkYzJjMTkwNGJjOTMwZWNjNTgxOGY4ODM0ZWI3MTRiNjkgcmVsZWFzZTI1LW1haW50Cis4NTYyNiA1YTJkMzQ0OWI1NzVlM2ExMDU3YTFkYmJkYjAwZTU1MTkwZDE3MDU0IHB5M2sKKzg1NjI3IDA2NjA4Y2MyNWZiMjA0Y2FlNDc2MGU1ZTMzODAzZDAwODUxMmExMGMgcHkzaworODU2MjggY2U0ZDgxMDI1N2I0NGQ4YjVhZDZlYWU5MjhjOWI1MTVkMDViMjliMCByZWxlYXNlMjUtbWFpbnQKKzg1NjI5IGNhOTY5MDkyZjQ1YTZjZGI4OTIxMTNiYTJkMzkxYTZkMGJkZjZmYWEgcHkzaworODU2MzAgMzExZDdhYmJmYmUzMDBhMWNiY2E0YmYyMDNiYTY5NWJmOGZhY2UxOSBweTNrCis4NTYzMSBiYjIxMzU5ZTg4Yjk0NjRlMjY4MWQ5NzhmOTllODNjMjgzYWNjOGRkIHB5M2sKKzg1NjMyIDMxNzUwYzcyN2FlMzA1MGMwMDFjODAyMjczNWU2ZTZmMTU5NzFlZTAgcmVsZWFzZTI3LW1haW50Cis4NTYzMyBiY2IyNjBkNjhiMTU4YWFlZDMwYmJhNTI3MjFkYTRjNTE1ZGZiZGVkIHB5M2sKKzg1NjM0IDg3ZTViNTkzOGM2NWYwY2FjNDMwOGM1ODhlMjEyZDY1YWE3M2ZlODQgcmVsZWFzZTMxLW1haW50Cis4NTYzNSA0MjJhNGZiMGE0OTEyNDRkNTQzNDA5MGI3YTYwMjE0ZTRkMDZlZGFlIHB5M2sKKzg1NjM2IDA3M2UxYmU3NmI0NzQzNTg5NGU2ZmRkODdhOWZlYTBlYWIxNGYwOWQgcHkzaworODU2MzcgOWIyMjUwZmI4MGQ4YjViYjRiOTAxMDUyZWVjMjRhOGQyMTc4NDAyYiByZWxlYXNlMjctbWFpbnQKKzg1NjM4IDllNDVmYzgwNTI4OGE3N2M4NGEyNTIzYjk0YjdhNWVhZTdmZDM0YTYgcHkzaworODU2MzkgNjg0NDAyNzI1NGZhZTZiMWJmOTZhZTI3ZGJhZDM2YmQzNGIxY2RmMCBweTNrCis4NTY0MCAxODZhZjA1MWQwNGYyMTBiMWM3ZTA2ZTg5M2Q0ZThkY2ViZTc2ZjUwIHJlbGVhc2UyNy1tYWludAorODU2NDEgOTk0Yjg3OTlmMjhkNjhhNWU0YjkwYzJhODI4NDg3MTJhOTc3NWFiYyBweTNrCis4NTY0MiAyMWRkNzE5MzhhNDQ3MmQyNDZlNTgzODUwNjUwYjc2YmMzOTBiMDI1IHB5M2sKKzg1NjQzIDc0ZDgxYTNhMGQ1NjVhMTg3ODU5ZGQ2YTljMzAwY2U1N2NmYmFjOTYgcHkzaworODU2NDQgMDVkN2IxOTkxZmY3MmU3NGYxNTI2YThhMWVjNzU1Mzc2NzM2MzM1NCByZWxlYXNlMzEtbWFpbnQKKzg1NjQ1IGI0MmY5NDk2NDhiYWM1N2ZkYzAwMTE5YjNiNzU5N2E3NTFlNzk0MTQgcHkzaworODU2NDYgNjMzZGU1N2ZiNzNhZTExNjMyMjQwOTc3NDBkMWE0MjEyNGYwZmY5MSBweTNrCis4NTY0NyAzYzlhZmE5MmY4ZmRjNjUzMmIxMTg2Nzk4MDAyYzAwNDk3MmIxNzA1IHJlbGVhc2UyNy1tYWludAorODU2NDggNjIzZGVhZTc3MzI0MzY3ZDUxNmFhNGUxZjJkNDJkNTI4NjI5ZDA3MiByZWxlYXNlMzEtbWFpbnQKKzg1NjQ5IDM5YTJjM2IxMGE3YjFmZWZhZmY0ZjdiMjYzM2Q0MGI3MTBiZjk3M2IgcHkzaworODU2NTAgOWFjM2ZlMmNhNDllYjVlZmFiODQzYmM4NTVkMTBmZDM1OWFkZTY5MyByZWxlYXNlMjctbWFpbnQKKzg1NjUxIGVmZDM2OTk4MWI4ZGQ1NjFjYjZhYmM3Y2EyNTNlZjlmYzZlOWE3MzUgcmVsZWFzZTMxLW1haW50Cis4NTY1MiAzOGFkNTdkYjg4YWM0YmUyZjUyYzcwNzUxYWE0YjMxMDhiZTU3MTY4IHB5M2sKKzg1NjUzIDI0NGNiY2I2N2RjZDg3ZTExYjYzNjM0NzBiMmI4N2ZiNmY1MWFjZjggcHkzaworODU2NTQgMzljZGNjN2QzZTIwZDU0NGVhYThhNWM0YWEzZDY5MDY4NjhlOGY3YiBweTNrCis4NTY1NSAwMjNiNDEzNzYyOTBhMTIxYzc3YTI0YjcwMTQ3MGNhZTcwYTFiMjNmIHB5M2sKKzg1NjU2IDNhNDdmYmNiMjliMTIwNTA4N2M5ZTNjYTliMDI1NTZhN2RkZTdlNjYgcHkzaworODU2NTcgN2FmNDA2ZjIxOWE0ZTYxYjQ5OGFkYzcxZjVhYTI3ZmNmY2I5YWUzMSBweTNrCis4NTY1OCBkNThjZTNmZmIxY2I2OTdmMWVlZGI0YTUzZWEzYjExMjc2YmQ4ZWUxIHJlbGVhc2UyNy1tYWludAorODU2NTkgYjAyMjhhZjZkYjExODBhMTcxYzdkZTEyMDU3YWQ5MzY2MDUzYWRjMiBweTNrCis4NTY2MCA5NWUzYWVlYmI1YWJjZDgxZTQ4MTc1YjRmZjBkMjI5OTVkZTE1ZTI2IHB5M2sKKzg1NjYxIGQxZGVmN2IyYWJkMmY1OWI0MzI1NGJhMzI0MDk3NDYyZjFkYjIwZmIgcHkzaworODU2NjIgYjJhOWNhMmI2MWEyNDFiMGVkOGZkNzgwODgxMTMwMDhlMzQyNzRhMCBweTNrCis4NTY2MyBjMTQ3ZjkxMGFmNzAwODZmZDYzZGVhZTBlM2Y2MjBiOTE2M2I0MGQ4IHB5M2sKKzg1NjY0IGU4OTY5ZmI4MjJmYzJhMjc5YWUzNGJlNzNmOGUxZTE1YzQ1M2EzZDAgcHkzaworODU2NjUgZjhmYzJkMDNkN2U0MmExMmU5MmVjMjc0ODYzNDc1MDkyZWFkOGU3ZCBweTNrCis4NTY2NiBlNzU4MDY1MmFmYjhlNmNlNmEzOTVhZGZlZmZjNTE1NjM0NzJiY2VjIHJlbGVhc2UzMS1tYWludAorODU2NjcgYTMxNjU4MTI5MDA4MDc0MGY3YjYzMjBjZDU3MzM0MzgxYjI2NzZiOSByZWxlYXNlMjctbWFpbnQKKzg1NjY4IGIxY2E3ZDVhOWM3NGQ3MGNhYzE0NGQ0MjlkNzEyZjc4Yjc3MzE1NGQgcHkzaworODU2NjkgYjFiZGExZWM5OTVmYTEwMzZkZTA5ZmFhMzNjMzU1MGIyZjQzNmY0NyBweTNrCis4NTY3MCBlMGNjYjVmNTBlMGM3OTA2MzdlZTMxMTUyNzcwNTA0MzgwMDM3MWJiIHB5M2sKKzg1NjcxIDE2ZWFkODNmNzljYzk5Y2UxNDE3YjNmMDQ4M2E4YTFlYjRlZGUxZjUgcHkzaworODU2NzIgOTZhNjk3NjJiNDgxNjE2NzgxNjA3MzhmNDM5MGI0MDIyYjQzZmJhNCByZWxlYXNlMzEtbWFpbnQKKzg1NjczIDdhYTE0Y2FjNmY0ZDAyNzM5ZWNkYjRiNWQzMDVkNjgxZDU5MzgxNjcgcmVsZWFzZTI3LW1haW50Cis4NTY3NCBlYjg4MzdlZmQ4NGM1YjFlZGFhZmNiZTkwNDVlNzQxNWZkOTc2ZjkyIHB5M2sKKzg1Njc1IDM1MWQ3OTRkMzJmNDQzMjljMTA3MzczZTFkYWVjODYyNTMwZWVkMjMgcHkzaworODU2NzYgYWEyMDNkNDc4YmI4MTBmNmRlMmI2MTAyZmU0MTU5YTQyMTE2MjBmYyByZWxlYXNlMzEtbWFpbnQKKzg1Njc3IGQzOTdiMDI2MzFiNTQ3ZDk0YzY3YjRiOTEzODRlOTVlNmQxMzBmMDkgcmVsZWFzZTI3LW1haW50Cis4NTY3OCBiZWExNGYwMGQzZTAxMDA3MjdmZjdjMGY4ODg1MWQ3NjNlMDY3Y2EzIHB5M2sKKzg1Njc5IGIwYThmY2RhMDY1NDdkNmQzNGUzMzQ3MjI4MjU5YzI1MTAzNGUyZmUgcHkzaworODU2ODAgY2U5ZjVjZTMzYWQyYTBmNWQwM2NkMDhhYWE3ODM1ODM2MWQyZjg0YiBweTNrCis4NTY4MSBhNGMxMGE0NGQ5YWUxMWJlYzljOTk5NDI2ZTg3NDQ2OTZlY2ExY2U1IHB5M2sKKzg1NjgyIDE3Yzk2YWFmOTNjODdkMTA3YTNhMzA1Nzk4NDlmOTQ5YjM0YWZiZTcgcHkzaworODU2ODMgNWIwNjk4OTJlNDEzYTllMTE1YWJhOTYwNDk0ODg5Y2ZkYmMyZDk0MyBweTNrCis4NTY4NCA4ZjA2MjU5NTRmZmEzY2RkNzExNjIzOWM1Y2M5OGEwNjZhZjM3MjY3IHB5M2sKKzg1Njg1IGNkZmQxOThhNmYxZGUzMTM2Njk5NWVjNmQ4NTBmYTY4OTA4ZGE2Y2IgcHkzaworODU2ODYgNzUyZTRiNWM2NGU5NWNhYzQxNjI2NDFkYzQzNzE2NDBhNTY1ZWJjMSBweTNrCis4NTY4NyBjNzI3NTcwMzNkNDRmODUzZDBmNjRiNTlhMjgwZjJiMDYwODU0ZTdhIHB5M2sKKzg1Njg4IDY4YmQ3NWM2OWRiMTUwZmZkY2NiMjAzN2Q0MmZkZjNmNDFkZDVkNDEgcHkzaworODU2ODkgM2MzMzYzNDhhMmU5ODZmZTQ3NzljMTUzZjc4NzRjNDU5ODcxMWYxOCBweTNrCis4NTY5MCAzNzJjOTgwN2Q3NWQ5NzE0ZTYwNjQzYjkwYWYwYTFhOGIwZDk2MTgzIHB5M2sKKzg1NjkxIDc3YzEzYzljNmU1OWUzOWU5NjhjNGI0ZWZmYjYzZjcxOGUzNTM1OGEgcHkzaworODU2OTIgNTE5NTlmMzlhN2ZiMTM2YTVlZjI5MzY4YmI3MzgzMTFiODY1ZmU3ZCBweTNrCis4NTY5MyBiMGJhN2VlYjk4YTU1ZTk0NDJiMWQwNTE5ZDgzYmFmZGZlYTBlZGZiIHJlbGVhc2UzMS1tYWludAorODU2OTQgMmY3ZTAxNjk0OTI2NzU4NjY1YjE2OWI0Yzg5ZDNmMWNiZmU1MzI4MiByZWxlYXNlMjctbWFpbnQKKzg1Njk1IDg2ZjAwNjEyY2JkNjBlOWUxNjU0MGU4MjRiYmRkNjQ1MWYxNzM0MTQgcHkzaworODU2OTYgZWNmZjQxZTA2OGU2ZmU5MWUzMGQxYmE0ODhkZmZkYmJiMWQ0MmMyMiBweTNrCis4NTY5NyA4MmIwODNjOTZhMzlmYmY3MTMwOWNhODNiNzJjM2UyZjI4MmU1YzM3IHB5M2sKKzg1Njk4IDI0NmMwOGM4MjVhMTA1ODhkODA2YWNlYjEyZDhjMTQyYzhhOTI1MTYgcHkzaworODU2OTkgNTAzNjAwYmIyNWVhYTg5OGZlMjZiOGY3NjM4YWJiZDZmMmUyYjdlYyBweTNrCis4NTcwMCAzZmFmZjdlNTFmNDBkZWVkMGQ0NmZiOWYyZTEyZWQxMmRmYWI1MzU4IHB5M2sKKzg1NzAxIDE1ZTQxNTUyZGNiZDdjYzAzMjE2NjZjNDIyZTkxMzcwMmQ3MzQ2OWYgcHkzaworODU3MDIgYmIzMzM5NzNkZTM4YmMzMzkwODI2ZDA1ZjFiNzFiOWMzZjJlYzQ4ZiBweTNrCis4NTcwMyAyN2NlOTlmYzI1MjcwMTQ3NWU5Zjk5MDgxYTRiZjgwYmFjZjc0ZWEyIHBlcC0zODIKKzg1NzA0IDFhOTA1MzkxZTNlZDZlZDQyOGI3YjZiNTM5NzY2NjE5NWZjM2I2MmEgcHkzaworODU3MDUgODkxMjE5Mjk4MmNjODM3ODE5MzI5YTNmZjg1MTA5OGNkMmE0MDFjYSBweTNrCis4NTcwNiA2NjI4Zjg2ZGIyYjZiNzg5MDJhY2JiNTI2NjkwNTUxZjU1OWZkMmRiIHBlcC0zODIKKzg1NzA3IDFlYzJiZmE1NGNhYmI5YmI2MzQ3OGI1YmI2MTljOWZlZTMzM2ZiNzkgcGVwLTM4MgorODU3MDggMDI2MzViYWVhZDVmNWFiNWE3MzE2Y2FhNmUwYWIxNDMyNmQ1MjRmNiBwZXAtMzgyCis4NTcwOSBlMmJhMTI0OWEyZjU2MzY2MDIyYjk2ODc5MWE4ZmE1NTNjNmM4NWMyIHB5M2sKKzg1NzEwIGQ2MDdiNjMxMzA1ZGMwYTcwMjA4ZGE4MjQ1YWQwZmQ1Y2FhMTE5MmUgcGVwLTM4MgorODU3MTEgNGQ1NWYwYjA5MGQ1ODBkODJmNWJkNTc4YzA2OGZkMmIxOWY3MzFhOSBwZXAtMzgyCis4NTcxMiAxMzAzY2VhZjQ0MWE5YzkzZjgyZTNkNDQyMDBlZTI5MjcxMjYyMTU5IHBlcC0zODIKKzg1NzEzIGI0N2U0ZWUxNTQwMzJjZThiNDRjOGFhZTIwODVlYjRhMDg5MTgwYTkgcGVwLTM4MgorODU3MTQgNzBkMmI0YWVkYzA5ZWE0N2YwMTRlYTIyMWZlMTZmM2I2ODU5Y2I5ZSBwZXAtMzgyCis4NTcxNSA1OWU5YjU4ZGRhZjg0OGQzYWUwZDA4NjFkYTE0NjNhODc2YWVhNmFkIHBlcC0zODIKKzg1NzE2IDQyYjg0ZDMxODhkMTBlZmIyMjZiNWI4MmViMmYzMTAwNzhhZmI5ZmYgcmVsZWFzZTMxLW1haW50Cis4NTcxNyA0ZjBkZGRhZjgyZDZhNzQ3N2U0NGM1NmM0MzFlNzVkNTAzMTMyOTcxIHJlbGVhc2UyNy1tYWludAorODU3MTggNzcxN2Y4YzQ1ZmNjMzdmZjcwNTIzMWFiMjZhNDg4MGYyMzEzYWJiZiBwZXAtMzgyCis4NTcxOSA2ZThkMmUyZDhkODI4ZjczOTg5ZDc1M2Q2ZTVhYjJjMjdjY2VmZGI4IHBlcC0zODIKKzg1NzIwIGUzZTZhYTYzM2YzM2I0ZTk2N2Y3MDNmZDU3YmY1ZjIxMDRjYzIwMjIgcHkzaworODU3MjEgNzA3MmE1YjI4MWQzN2U1Yzk3MmE3YWU4MTcyMjVhZDc4YTRhY2FmMiBwZXAtMzgyCis4NTcyMiBiNTAyNTU2OWNiZDQwNmNiYWU5NGI5MzdjNjlhZWQ5ZTRiZmVjMGEyIHJlbGVhc2UyNy1tYWludAorODU3MjMgOGU2MGQ3YTk2MTQyMjcyZmYxNzFiZTdjMDZjZWJlZTZiMWM2YWRiYSByZWxlYXNlMzEtbWFpbnQKKzg1NzI0IGFkODkyMzc2MGQ1YzBkYTc0MjM4NTk5NDc4NjY3MDUzMjg0ODgxMjkgcHkzaworODU3MjUgMDUxMWM4NjhhNGUzOGE0YzQwYmE1Zjk1ODNiNTNmNTU2NTJlZGM5MiBweTNrCis4NTcyNiBiNmFkNDAxMzc3ZmM1OWJjYTkxOTBjYzE1M2ExN2EzZTIxZmZhMjdkIHJlbGVhc2UzMS1tYWludAorODU3MjcgMWYwYWI3MjljNjMyNTM1YjRlMjA3MzA4ZGM5MzAxMTcxYTdmODJiMiByZWxlYXNlMjctbWFpbnQKKzg1NzI4IDA0MDkwYWIzNTMxZTQzMjNlMTQzODk5ZGY0ZWZmNGJiZTVhZGU4ZjAgcHkzaworODU3MjkgYzQ3ZWYxODBiZTM5ZDZjNGVlMWE0ZTkzY2I0YmE4YjYwODcwMWM4NyBweTNrCis4NTczMCBlMTFhYzMwMTk5YjEwYWMzNTc5YmU2NjNmODE1NGMzNGJlMzI4M2JjIHB5M2sKKzg1NzMxIDM0YmVhYjk1OTU5NTlhZGVlZDQ3ODM3NmFjYzljMTMzYjVlMjQ3NmQgcHkzaworODU3MzIgMDM2NzcwZGQ5MDk2N2NhMmQ5NDZmNThkNDQxZjY1NWEyZThkNTM1YyBweTNrCis4NTczMyA5NjJlMWY0YzljMDAzYjQ4MjcyN2JkNDU0NDQwM2ZjMDAzYmRiYTc5IHB5M2sKKzg1NzM0IDA4NjUxOWMxZTdkMjlhODI0NzY3OWNlNmRjZmVlNGU5YmY0MzMyYmEgcHkzaworODU3MzUgZDNiNjFkYzczMmVmZjI1NzFmMTQzYWUzM2RjMzNkYWYxOWQwNDc0MyBweTNrCis4NTczNiBhNjYxYjQyNGVkNDdhOWJmNDMzN2QzMDljZWZlMDU0Y2VmNzg0NmJkIHJlbGVhc2UyNy1tYWludAorODU3MzYgYThlZmYzOWFlYjA5OTVhOGMzMmJkMGRiOTYwZWRjMGYxMTBlNTMzZSBweTNrCis4NTczNyBjZjYzNGEzOTdiZWM4MWE0MmE4M2Q3NmY1ZDVlOGUwNmRiMjdkMjEyIGlzc3VlNDM4OAorODU3MzggZDRkNTNiNGRiOTZlZDM4ODlhZTVkNjk2NjM1MDk4OGNmOGE1Njg1OCBpc3N1ZTQzODgKKzg1NzM5IDUyY2JmNDU5ZGE4YmNmYWFmYmM3ZGJhNmY2Y2RmYzEyZWVkZGQzNDcgaXNzdWU0Mzg4Cis4NTc0MCBlZGNmYzRjODlmMzA0MDE1NTI3N2Q0MjBhMWI4ZjIwNDkzNTQ2NTAwIGlzc3VlNDM4OAorODU3NDEgNTlhYWMwNzQ1ZWM3NWI4YzViMmE5MjI5NGZkNmU5Mzk4MWRhODg0NiBweTNrLXN0YXQtb24td2luZG93cworODU3NDIgM2JhZWNkNGUwYzEyYTEzY2E2MWZlZWYwZTE1NjNjODA5YjU3OTQyZCBweTNrCis4NTc0MyA2ZGNmNjE0NDdjMzNmNjgxZjE0NjZhMzc2MjBlNDMwOTA2OTA1NjU5IHJlbGVhc2UyNy1tYWludAorODU3NDQgMTYxOGNiMTViNWI5ODQ0MDBkOGFlOGEyOTIwNGYyYmU2NGEyM2U3MyBweTNrCis4NTc0NSBlODUwYmI5MzBjODQyZjFiNWM1ZDNlNmVjZWI1MTU5OWE5YjY3OTQ1IHJlbGVhc2UyNy1tYWludAorODU3NDYgNWNmMWU2ZTYxYzZjMzc1YWVhOGZhMmM5MGJhODVhMGMwZWQ2MTFjNSByZWxlYXNlMzEtbWFpbnQKKzg1NzQ3IDUwZGQ4NmY2ZjI0YWQ0Yjg3OGQ3YjgyOWEwMzliM2E1M2EwYTMzMGMgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg1NzQ4IDMwMTZhNmE0YTY4MGI4NGEzYzBlNGQyMDYyMDExZDcyNTQwOWE0YmMgaXNzdWU0Mzg4Cis4NTc0OSA2NDNhMDdjYzlkN2ZiODkzOTgxZTc0YjRhZDk4ODcyZmI0MGM5MDc0IGlzc3VlNDM4OAorODU3NTAgZTUzYzgwYjAxNjMzMzI4N2VmMzE2ZjFjM2JjZDYxYmM4NGJiNjdiMiBpc3N1ZTQzODgKKzg1NzUxIGQ3Y2UzN2I5YmNlZDIwMzZmMWU3MDZhOTdjNjg2MjM1YTBmMzk2NTMgaXNzdWU0Mzg4Cis4NTc1MiAyZjFhNTUwNjc5MzExNTE3NWRlN2Q0NGZiZmY3NTA3ZDdmMjg0MTczIGlzc3VlNDM4OAorODU3NTMgZjhmYzI0YTFmOWE2YzJkYmI2NjVhNTNhMWU2NGE3NDVjNWJkZTZiMCBpc3N1ZTQzODgKKzg1NzU0IGVjZmMwZGQxNWQ1N2YwZDlhOGFmNzYyMThjYjkwOGRlMzU5ODJhYTQgaXNzdWU0Mzg4Cis4NTc1NSBlNzExYjg1ODYxN2JlNzJjYzY2NDE5OTI5ZjlhYmYyNTU4ODdjODkyIHB5M2sKKzg1NzU2IDk4NTg5ZDBmMTEwMTJhYzYzZjhhOWRlOWFmN2E0NzM0OGM2NGExZjYgcHkzaworODU3NTcgYzVmOTdiMDU0MTU4NTgyNWM2NmRjMGE0M2I4ZmNlNDQ2ZDMyZWNlMCBweTNrCis4NTc1OCA4MGMwNDY5Zjk4NTk3ZjgxZTZjMzg2MWU4ODViNmUxMmEwNGVjMDdjIHJlbGVhc2UyNy1tYWludAorODU3NTkgOGU2YjdhYjFlMWExNDA3ZDZmMDljY2ZlODFmODM4OWFiMmU0NjEzZCByZWxlYXNlMzEtbWFpbnQKKzg1NzYwIGNiZTAyMjQ3MDE0NzFjNDcyOWY0NzE2MjFiNTFlYzIyNDQzNGQzZDggaXNzdWU0Mzg4Cis4NTc2MSAzOTM2NmJhNWYxYzEwNzRiN2QzYWQxOTM1NDJiNjM1OTRhNTRiODQxIHB5M2sKKzg1NzYyIGJlYzE2YTVlMGNkYWMxZWYzOGVlNjY0NGNiODk3MWExOTUzY2NhNWIgcHkzaworODU3NjMgYWJkYTgyNDBhNjQwNWRiZTlhOWUzOTc4OThjNDk2NmVmMWIyM2QzNyBweTNrCis4NTc2NCBhZWNiNTZjM2Y0ZWI1ZTcyZjNjZWE5Mzc2OTNmOTk5ODQ4ZTlkOTRmIGlzc3VlNDM4OAorODU3NjUgNDUwNzlhZDFlMjYwMDlhY2MwZjU3MjQ0MGNhYzIyYWIwYTc3NDk1MCBweTNrCis4NTc2NiAzODE2ZWIxMjg2YzBjZTU5NThiZWE5NWNiYjY4OTEyMmJmNjM0MGNhIHB5M2sKKzg1NzY3IDJlMTlkMWY0YjYxMmVjODkzZGYwZjg2ZTY4MGZhNDliODgxYmViODMgcHkzaworODU3NjggNzE3YWFjZmQyZGNkNjgzNmNhOThmZTdmZGQ0Y2JkOTgwNWIyZTZkNSBweTNrCis4NTc2OSBlOGQ1YWQwYzJmNWJjYjFlMDRjYjgzZDY3NTZlMzA3Yzc4NDZjZTI0IHB5M2sKKzg1NzcwIGEyYmI1MGZmZGZmM2Q0ZjlmNDEyN2EyMzQzNzRmY2FmN2RjMDViNGMgcHkzaworODU3NzEgMmY5NGQ2OGMyNzMxMjc3N2E4MzRkNmI3M2RjN2MyOWI3MzEzYTA2ZCBweTNrCis4NTc3MiAwYjViZmJhN2E5MDdlNmI5YTAxMDBhZTM0ZjVjZDNmODRmZDY2NGNlIHB5M2sKKzg1NzczIGNhYTU2Y2ZmMmZiM2E3OGVhYzJiMzRmZDc4M2M3ZGQxN2RjZGU0YjcgcHkzaworODU3NzQgMDgwMTQ1ZDNiYmY3NjgxYTYxNTc4NTk3ZmQ5ZDhkOWM1MDMyYTc4NyBweTNrCis4NTc3NSBlNDUzZTVhYjIwN2NhNDIzYzMyNTdiYjk0YWIwODFiY2U2NzdmMzkwIHB5M2sKKzg1Nzc2IDI0NDA5MDQzODYyM2UxMWYxMmM0Mzc0ZWU3ODBkNzY2ODI1Yjc2ZmQgcmVsZWFzZTI3LW1haW50Cis4NTc3NyBlNzljNTc2N2JkMDVkMDZmMzkzY2ZiNjEwYTQ4NjZhNDViYzIyMjgxIHB5M2sKKzg1Nzc4IDAyYzE2MjZmZjYwZmUyYTBlOWM1NjU1OTgyYzA0YmNhOTZhZTM4ZTAgcHkzaworODU3NzkgMjcyYjhmZjYwYmE0YzA4NDNlMDc4MWM2YmVjOWI0MTNjMzZkZjViNCByZWxlYXNlMzEtbWFpbnQKKzg1NzgwIDg3ODdmNGJiNGIyMTYwNTE5ODlhYzU1ZGI0YTczNjdiMmQ4NDYyY2QgcmVsZWFzZTI3LW1haW50Cis4NTc4MiBiZDFiMzFjMzc0MTBiYzAzYWM4NTExMWM1ZDEwZjUyNzgwODZmYjQwIGlzc3VlNTYzOQorODU3ODMgNmU0ZWVhNzU0M2JjMzY4OTRkNTFhOGIzM2JjNmVlYjI0NGM5NmRlNiBpc3N1ZTU2MzkKKzg1Nzg0IDdiNTQ2Mjk1MWFjOWI1MTFlNzljYTEyYTJlN2Y5YmFkNWI5NmQ5N2UgcmVsZWFzZTI3LW1haW50Cis4NTc4NSBmOTg0NDY5ZGUwYmI2ZDNkY2QxYjZmNTNmYzZmNWU0M2QyNGIyMGI2IHB5M2sKKzg1Nzg2IDg1MjU1NDQ5NjhmM2E1OTY0ZmJlMmYwNThlZGY3ZDliYzU4NDFkNjYgcHkzaworODU3ODcgMTJlYjI0NDYzNjEwOTQxN2M5NDY2MzQxYmI2ZjI2Y2M2MmYyNzE4ZCBweTNrCis4NTc4OCBjNmEwZWI3ZjczYmZjZmQ3MTZmOGFiMjlhY2I2OWVhMjA1ZTY1Zjc4IHB5M2sKKzg1Nzg5IDQ2YmJiZGNkNzc3ZjU1YjZiYzI1ZTA2MWIyNTdkNTJhZTM3MmI1OWIgcHkzaworODU3OTAgZmUzNTU3ZGJlZjg5MjUyMzUyNzQwMTVkYWFkYjcyODI4ZGIyZWJmZiByZWxlYXNlMjctbWFpbnQKKzg1NzkxIDMxYTBhYjdhYzJkNWI1NTI3Y2JhNWFkYjlhYjJhZTM0MzI4NjIwNzQgcmVsZWFzZTI3LW1haW50Cis4NTc5MiBlYTBmODNjZjdlOTk1OTYzMjI2NzIwMTc0MDg0MzI5YzY2Y2NlNmVhIHB5M2sKKzg1NzkzIDg0NmMwZTEzNDJkMGJhMWFlZDUxYWMwMTg3MjNlMTE2YTI2OTQ0NmUgcHkzaworODU3OTQgMTQzOGQ2YjY3MDUyNjUwZjgyNjE1MGRkNWI3MmFlMjBjNmFiYWE4YyBweTNrCis4NTc5NSAwNmRmYWViNThiZGUwMWMzNjhmM2QxNWVmNTE5NDhjY2FmZDAyNDgwIHJlbGVhc2UzMS1tYWludAorODU3OTYgODU4YWY2MGIyZGJiY2Q5YmNjNGM2ZmYwMDU1MTA5NzQ3ZGNjMjliOCBweTNrCis4NTc5NyBkOTg1YmE5ODExZTk4ZWE1ODBjMTNhZjc1ZjVhNzhlZDk0NzYxODQ1IHB5M2sKKzg1Nzk4IDk5MTJkNjFjZGYzNGMyYjA5MjAwYzQwYjI5NWFlYzVhNzJiZjhkYzMgcHkzaworODU3OTkgY2Q4MGQwNWYyZmQ2N2RiNjE2MDA4YWM2N2YwOGMxYjZlZDBlYmQzZiBweTNrCis4NTgwMCA1YjZlMTNiNmI0NzNiNWZkYzJmZjUwZDU5OTBjMmZmYzU1YmI4M2FkIHB5M2sKKzg1ODAxIDM4MzViY2JmYjI5YzBjNmIzMTAyNjViMGI0ZDEyNDgyYWNjMDIwYmYgcHkzaworODU4MDIgOTAyZjU3N2U3Zjk0OTU5YjA1NzM5MTc2NmMwZTE0YTNhMTZiODg4ZiByZWxlYXNlMzEtbWFpbnQKKzg1ODAzIGJlOGFlNmIxNzUzOWQyOTk1YzA2Y2E2OTBmY2YxZjJlNTAyNTAwZDUgcHkzaworODU4MDQgOGQ3ZjE4MzMyZGI3ZGQ0MTk0ZGI3MWYxYjNmMTE0Yzk1NzViNjE2MCBweTNrCis4NTgwNSAxYTA4ZjRhOWVhZmRjNDNlYWYzZGFiNjNlZWFjY2JjYmVkYTUzZDIzIHB5M2sKKzg1ODA2IGEzMGU3NTgyMGI4ZGVlZjcxMDFiMjFjZTdlZDc2YzNhNzhkNTJjOTMgcHkzaworODU4MDcgNzkyMDA1ZGUyNzdjODZhOGE0ODE5ZWU0Y2ZlZDAyY2ZjZmE3MzFiZSBweTNrCis4NTgwOCBlOTk2YzYxZTQ3YzdiMzkzOTU2MTVlOWI4NjljZDIzNzg1MmNmMWFmIHB5M2sKKzg1ODA5IDA5ODE3N2FjZjczZjIwODYwODFiYjE3YWEyMzEzMzE5YjM4MjQxNWUgcHkzaworODU4MTAgYjlkY2ZkZmZjYjYyMGM1MjcyNGExZGRiZWQwZTliZjUwNWRhZDAzNSBweTNrCis4NTgxMSBlYmY2NzQxYThkNmUzNzlkYzcxMGY5YTkwODdkYzIyNGQ0NzJkNWVjIHB5M2sKKzg1ODEyIGE5NGZiOGRiOWYxYTUwZjYxYjBjYWY1NGE3Nzc0MDlkZTg2NjY4ZmIgcmVsZWFzZTI3LW1haW50Cis4NTgxMyBkYjVhYmQ4MWRjOTRlZDZhNjhkODA3ZDg5MmEyNTY5OTI5OTIwNzFiIHJlbGVhc2UzMS1tYWludAorODU4MTQgMTg5ODlhZDQ0NjM2YWQ3NWVmMTg1ODUwNmFlOTRlODhjYWRiMzVhNiBweTNrCis4NTgxNSA1MzYzOWU1N2JhNDA5MjNhZjM1YzQzM2IwZGEzNmYwY2UxNjI5ZDcwIHJlbGVhc2UzMS1tYWludAorODU4MTYgYTRhMjcyNDBmZTA5MzRiODA5YjczOGFiNzI5Y2FjZjE2OWVhZGNlMyByZWxlYXNlMjctbWFpbnQKKzg1ODE3IGYxNDhmODY0YjE2OGIwODdlODkyNzM4MDZkMjc3ZWUxZDg1OGNhNTggcHkzaworODU4MTggYjE3MmQ3NTM3Yjk5YjU0MDRjOTY4OTY4ZWIzYzEzZWI5OGQ4Njg3MSBweTNrCis4NTgxOSA1YjUzNmM5MGNhMzZkZWZiMzBmNjc4NThiZmFmN2RjYzRiNDNmNDUzIHJlbGVhc2UyNy1tYWludAorODU4MjAgYTgyMDcyY2EwNmJhYTA1MWQzYzAwMWIxOWEwZGRkNTllNjdmZDhhZCBweTNrCis4NTgyMSBjNWFlYmZmYzlmYWM0NjVmYTgyMDVjODczNjYyOTMwMDNlMGJlZDVlIHJlbGVhc2UzMS1tYWludAorODU4MjIgY2NmMmZmMDg4NjZiOWJlNmMyYWQ1YzY5MDIwYjEyYTRlMDE1MjFhMyBweTNrCis4NTgyMyBiNGUzNzBjOGU3Y2FmNDMyMTI1MWE4ZTgyYzcwODY5ZGYwNDUzMTQ0IHB5M2sKKzg1ODI0IDM5YjllOWRlMzcyYjIwMTAzMGY1NWVmYmIwZTY1MWUxMmUxMWU3NmQgcHkzaworODU4MjUgNWEwNTQ1NGU1NjVmYTc4ZjM1MDc2MzhjYjNkYTFmZWFjYmQ1NDRmMCBweTNrCis4NTgyNiAxOTA4YTE0NmU5NjFkYzM5ZjgwYjBkOTQ4ZGY5NWYzOTI2MGY0MDdkIHB5M2sKKzg1ODI3IGRiNWE1MDgwZjliOGEwZWUxZWI2ZDRkZDlhNjgyYTkzODAzZDRjOTIgcHkzaworODU4MjggY2I2NDE4ZjRkNjBiOWNmNjQ5YjAzNDQ2MDQ4ZWVmMzQ1N2FiODU5MCBweTNrCis4NTgyOSA0ZTM2MDY1MjgzY2YyYzZmNzZkNzVjZjEzNmFjMzI2Nzc5ODY0NmVhIHB5M2sKKzg1ODMwIDE1OTUzMGYwZTQwNmE4NjRlMjQ0NTk3ODExNmRlMWEwMDVkNTg2NDYgcHkzaworODU4MzEgNjYwZDVmMzI0ODJlZjQ4OTQzYTA2ZWM4NzhhMGE3NDYzYmRkZWM4MSBwZXAtMDM4NAorODU4MzIgZjU3MGRhOWE0M2Y4NmUwY2IxYmI3NmMwNzgyMmU3ODQ5NjRiNWFiNCByZWxlYXNlMjctbWFpbnQKKzg1ODMzIDQ0ZDgxOTIyYTg4ZjM1ZGJiZWMyNWQ4NmMyZWY2NTNlNzY1NDFkOGMgcHkzaworODU4MzQgNWMxY2U1YzM2MGRhMjFmZGUzZjBiMGVkYjM3ZjQwY2NlMTY3YTI5MSBweTNrCis4NTgzNSAzYTljM2VjNWU5ZDJjZmZiMGNmYmE2NDU4NzVkZWFhMDlkZGNiNzdiIHB5M2sKKzg1ODM2IDIzNTJlNWU0NDA1M2U5NWJiNjg2YmZiNzY4OTE4YzJlMTYwZDAwNGMgcHkzaworODU4MzcgMGYwN2QyZGJmODIwYjg5NDkyNTBjNGU5MGExYTQxYjYxZGYyZmQ1OCBweTNrCis4NTgzOCA0ZTkyY2RlZmU0Yzc0MzdmZjkyYThmMTJlM2JjNjYzOTU5YmE2YThlIHB5M2sKKzg1ODM5IGQ3ZDMyM2RlMzVlNzZkMjgwOTI5MjZlZWU3MTk5YzUwMzc5YmZjNjcgcHkzaworODU4NDAgOWQzZWJhMDNmZDI1ZDFkN2VlYTRjODVmN2Q0NjAzMWRiMDc0MDg4OCBweTNrCis4NTg0MSBjZWViYjNmNDVmOWZjNjIzODlkMzhmYWFhZjJiYWQ0ZjM5MTIyOTQ1IHJlbGVhc2UyNy1tYWludAorODU4NDIgNzcyYjU1ZjAyODM1ZGU2NzY4Y2IzOGYxOGJjZWI2MGE3Yzg0MmRiNSByZWxlYXNlMzEtbWFpbnQKKzg1ODQzIGQzNTEwMGNjNmM2YjFiNDkwMzUzNTk1NjJiNWEzNmNkOWY5OGExYzAgcHkzaworODU4NDQgZTU1YTAwY2Y2NzhhN2U5NzFkY2IxY2YwMTNmYTAzYTdjNWE1ZjFhOCBweTNrCis4NTg0NSBiOWM3YmRjYWEwMzFkODkyMTY1NGM2MjhkZGU2Y2QzYzA3NWI4M2NjIHB5M2sKKzg1ODQ2IGU1MTVkMTI0MTg1ODZlNTEzM2RjNGI1OTdjNzA0MjBjNDc1NjlhNjQgcHkzaworODU4NDcgMzJjNGU4ZTk1Y2EzY2I1YmY4OGRkZGQzOTVkNGVlZjBkYWM2MmUzNyByZWxlYXNlMzEtbWFpbnQKKzg1ODQ4IDg0MTg5MmUyNzFmN2Y4NTE0MWJhYmJkMDY2OWIxMjNkODhmNjI1ZGMgcHkzaworODU4NDkgYTljNzlhOWQyZDkxZDA5ZmEyODRjZTRmNDliNzQ0YTFmMTI2M2I5MyBweTNrCis4NTg1MCA5ZGE1ZTA0YjA3OTNiOTkyNmYxMDFhOGQwMzEyMWZhNjg3YTA4ODI0IHB5M2sKKzg1ODUxIDExODcxNTZhMWYzMmMxMTZkN2JhNGE5ZGE1MjMxNGViMTNkZmIxZjYgcHkzaworODU4NTIgYzg5MmU0NTQ3ZmVkY2M5NjI2NWRmZjFhM2FiNmJkMWQ5NDNjOTgzNCBweTNrCis4NTg1MyAyOWFmMTgxZGUyZjJkODhmMzlhMzIxMzEzZGMxYjliODlkZjMyMDQ1IHB5M2sKKzg1ODU0IGJhMWM3M2UxNmM4YjFmOTNhOGFhNWY5NDMwYjVhMWUzMGUzZDE1N2QgcmVsZWFzZTI3LW1haW50Cis4NTg1NSBmZjZmYTIwYmRhZjhkZWNjYzVkODRhNjBiZjk0YzU1NjM2Yjg3ZWViIHB5M2sKKzg1ODU2IDllNGEyODA5ZTU1Y2UwZjA3NDQzZTYyODMzMzEwNjlhNWNlNDhhNWIgcHkzaworODU4NTcgNGI1NDIyMTdlOTNlZDAxN2Y1ZWViMTljMmVjYmY1N2E4YmEyN2ViNyBweTNrCis4NTg1OCBiZjVkYTYzNjA1M2FiOTkyNmRjN2FkYmE2NTBiN2E5NjlmMGNlNGYwIHB5M2sKKzg1ODU5IDY5MzhkN2FkNjBlNDFhZTUwOWNhYjRiOTU0MjNjMGFiNDhjZjQ1YzEgcmVsZWFzZTMxLW1haW50Cis4NTg2MCBkZjAyMDkzNTg4ZDZiYzJhMWVkODg4MGY1YjRlYjBhOTQ1YzA4NGE1IHJlbGVhc2UyNy1tYWludAorODU4NjEgNGRjYTNmMGUwZmMwNDY3ZDc3Y2JjZTliODYyOWU1NTgzZjZjMjZmZiBweTNrCis4NTg2MiBlOWUzZmU0YzllMzAwZTVhY2MyMTU3MzlkNGEwYmQ3OGRjNzMzM2IwIHJlbGVhc2UzMS1tYWludAorODU4NjMgZWJiODJmMDFkYmUyNjEwOWM0ZjRkYTFkYjBjMzVjMTljNDU4MTMyMiByZWxlYXNlMjctbWFpbnQKKzg1ODY0IDU5YWJkYjkyNzhmNzIwMzI0MzczY2EyZWIxZmY4MzA1MDRjYTE4Y2YgcHkzaworODU4NjUgMGQ1MGE5MTFkNzRmZTYyYWMwYzY5NWJhZTg1NGZlZWVmOWRkM2YxMiByZWxlYXNlMzEtbWFpbnQKKzg1ODY2IGFmMDZmMDk3MmQ5N2E3Njg3YzZhMWYyY2Y5ZjgwMjczNDk2M2IzOWIgcmVsZWFzZTI3LW1haW50Cis4NTg2NyAwNTFhYTQyN2RmZWRmZjU5ZDJkMjkwMjU1MDE1NGMyNzQyMzc2YTFkIHB5M2sKKzg1ODY4IDIxNGI5MDUxODQxZWE4OWU5N2Q5MTMzNDBjODYyYTUyMmMzZDRmN2EgcHkzaworODU4NjkgYWRkMWJjMDVlNDI2NmRiYjlkMDg0ZWQyZDY5MzhmMjhlMjU3ZWFhOCByZWxlYXNlMzEtbWFpbnQKKzg1ODcwIGY1ZTNkZTg3YjE0YmYwNDA3OTBiNTFiMDUyZDUzOGUwMWE0MWE4MDQgcmVsZWFzZTI3LW1haW50Cis4NTg3MSA2NGRlMTc0NmNkNmUzOTYzMjBhMmM4YzFlMTVlMWYzOTczNTY1MjI2IHJlbGVhc2UyNy1tYWludAorODU4NzIgM2U3OGVkZThmZDIxMjQ3YjdhYmViMDdkNGVhM2I3YTI5ZDRlNzg2NSByZWxlYXNlMjctbWFpbnQKKzg1ODczIGU0NDI1ZDY4ZGFkZjJjMzg2NDc1OTg0MGVmMGM3Mzc5Y2I4YTc3ZjMgcmVsZWFzZTMxLW1haW50Cis4NTg3NCBhMjgxOTg5YTIxOGIwYzFkNWU5ZmM1NWU3NDM1NTc5ZDdhY2Y1OGE4IHB5M2sKKzg1ODc1IDNmZjk5MDg5YzAyZTMwNDkxNmJiY2NkZGYzYTVhMmMwZDY1YTg5MDAgcHkzaworODU4NzYgNmRmZjU4MWQzMGYzODFmYzA4ZTM1ZDc0Y2RkODkwNzE3ODc1OTNlYyBweTNrCis4NTg3NyBlNWYyNjlkZDMxOGI4N2VhMTdlNjFlOWVlOTcyNTc0MDZiOWYxMmE0IHB5M2sKKzg1ODc4IDVhODgyZjc4OWVjMWU3ZDU4YWJmMWQwYzM4ZmQ0YTNhMGJlOTA5ZDEgcHkzaworODU4NzkgNWIxNjNmMmE2MDJiZWNhMzE4MjFiOGZlZGE2ZTczNzZmZjg1Zjc5YyBweTNrCis4NTg4MCA3YWQzNWFjYjIwYjBkNDk4YzIyMDM1N2VmMjBmODliMmZhNGFkMGMyIHB5M2sKKzg1ODgxIDIxMTBkMjY5YTg2ZWMwMGVkMzQ1YjNlMDBhZjUwYjg1ODM0YzNiNTMgcHkzaworODU4ODIgNzMxMjMzZjkwNDg2OWQ5ZjU5N2M1MzM1OGNiZjIwYTI3N2Q0ZGI0MSBpc3N1ZTEwMjA5Cis4NTg4MyBiOWNhMTAyYTc2ZDAzMzQzNDQ0OWZiNzdlMzQxMzQ4OGI5M2ZjYjY2IGlzc3VlMTAyMDkKKzg1ODg0IDY2YjQ0Y2NhMjliYjgzMzA1MDQyZTkzNWNkYzBlNDJlZDk5NDQwODUgaXNzdWUxMDIwOQorODU4ODYgZDA3YjliMGNhYWVmMWU0YTk0YThjYTYwY2U5MTg1MWZhMjE4ZDdlMiBpc3N1ZTEwMjA5Cis4NTg4NyAzZjdkMDM0Mjk0OTE4NmU1MTMyNmQ4MWM5NjY2YWI0Y2I4OWE5YThjIGlzc3VlMTAyMDkKKzg1ODg4IDZmMzFmMGFmNTM1NzY1MDBhNTUyMDhhY2I3M2VmYWNmYjAwM2RlYWUgcHkzaworODU4ODkgNWI4ZTY4OGVhNWFlZGQ5Y2Q1Yjk1MDZmZjA0ZWZlZDBhYzExNWNiYyBweTNrCis4NTg5MCAxNWVhY2I0YzU0MjI4MzIxZjM4OTYxM2IwZDcwMzFkNTkyYmRmZDZjIGlzc3VlMTAyMDkKKzg1ODkxIGRjMDZhZWQ5Yjk4NDVmMGNjNjk3ODRmMzQxODk5NjZmOTE0NDkzZmMgcHkzaworODU4OTIgNTM4M2FlOGRiM2NkZDFiNWUwMTk1NDVlOTI4ZjBlMTdmMjZmZmQwNSByZWxlYXNlMjctbWFpbnQKKzg1ODkzIDFjMTE0ZDM5YWU1MjYyYWM1M2RmYjg1M2JkNjQyOGI3MjcxYjliN2UgcHkzaworODU4OTQgNjk4ZDMwYjQ1MTE2Y2JjNDBkOTZlZGU1NmMxMTk1ZGIxZjBkMjZiNyBweTNrCis4NTg5NSA2MTNjN2I1OTZmZTc4MTJkZTg3YjQwMTdmZTVjMTdlYmNhZWFmMDY3IHB5M2sKKzg1ODk2IDFiN2EwMzg1YzY1ZjdhYjg4OTc3MzEzODJmMTU5MzBiZWU3ZDI2MjYgcHkzaworODU4OTcgNzBlYmRiZDc5YTAyZDA4M2NmYjhiYjYxMTgzOTgwYTM1YzJkYjk2YyBweTNrCis4NTg5OCBjNmQ4NjQzOWFhOTE4NDUxODU0MWY5ZTAxZGU5MDU2NGIzNmFkNjJjIHJlbGVhc2UzMS1tYWludAorODU4OTkgNDFhMzAxNDA5MjViZTEzNTI2ZTRiNDgwMDA1ZjQyNzZhMTJlZTMwMCBweTNrCis4NTkwMiBhNTZhMmE4MDNjZDc4ZWY5NDE3ZTlkMDA2ZTQ5YmM5M2RlMzc0NzFhIHB5M2sKKzg1OTAzIGI2NmRlZDRiZmYyMTM3Y2IyYzRhMWFmZTU2ZGQ5OGNhMWU1YWEzOWQgcHkzaworODU5MDQgNmFjMTg1NzZlOGZhOTk2ZWFiZmU4ZjBmZTFiN2MyNWViMTFkZWYwOCBweTNrCis4NTkwNSA2NGNlZThkMTFmMmU4YjhiNjVlNmVjYmQ3MzYwZjFmN2JhMmM3YTUyIHJlbGVhc2UyNy1tYWludAorODU5MDYgZThjODQwMGNhYTk5Y2E1N2Y5Y2JmMzYyMzliYjhjNjkwMmU4ZDk0OSByZWxlYXNlMzEtbWFpbnQKKzg1OTA3IDRhZjE0ZjlhYTk3MDU2NWIyMDQxMmM4MjU3M2U3ODMxYzYyNjk5YTkgcHkzaworODU5MDggNWU3MjBmOWQxZTZjMTlkN2ZjM2UzMzEwZDk1MmY1NjAwZTMwYTI1YiBweTNrCis4NTkwOSA4YzVhMTAxYTYzNTQ1ODM3MDM1ZWNiNWU1NTFiNTFhZWI2YzczYjJlIHB5M2sKKzg1OTEwIDhhOGYyYWE5ZGIwZjk5MGQ1YmE3MzNlZTI4ZWE1YzNlZjQ3ZDczYmUgcHkzaworODU5MTEgNzIyYjJhNGZhZTBkMTk2ZjYzYzYzMTBkN2UwYTBlNDVlZjBhOGJlYyBweTNrCis4NTkxMyA0ZDIzZGU0ZjQxMDIzYzc5M2NiNjY2OGRlOWFkYWRiODdlNGY5ODkzIHJlbGVhc2UyNy1tYWludAorODU5MTQgMDg2MGJlOWM4MzQzM2E2M2Y5OWM3ZjRiYWM2NjYyMGU0ZDE2Zjk2NiBweTNrCis4NTkxNSAxNmI5Mjk3MWMyZDQ0MGMyZWZkYWI1NzJlOGE5NmIyOTMzZmEyMjRjIHJlbGVhc2UyNy1tYWludAorODU5MTYgMDUwZjBmN2JlMTFlMjYyMjQ5OTAxMWMwYWU1ZjUwNmY4NmU3NzgzMSBweTNrCis4NTkxNyBmMzQ5ODg4ZmFlNjQzOWMwYmJjYmIyMjc2ZGY5YzQxZTJlMDZkZTgzIHJlbGVhc2UyNy1tYWludAorODU5MjAgY2ZmNzhmZmI5MzJhMjc2ZmNkMzBkYTM0ODMzMjdjMTg1MjkyMWVmMSBweTNrCis4NTkyMSAwYjVlNmY3ZWRmNmU2MmFmY2Y4ZmU4NDUxMmFmMmQ5YzM3YzFiMGFkIHB5M2sKKzg1OTIyIDhlNjMzOGNlMDg0NjY0YmVhYzdmNWUyZTZhMjg4MWIzNDRiYzMwMGUgcHkzaworODU5MjMgNGE3YTNlNTFjZDI5YTAyNjhhYzc1MWY5NDgxOWQzNTUyYWM2MDM0ZSBweTNrCis4NTkyNCBkMTQ3MjZmNGI0MTA3YjU2ZTE4OGI4YTgxZmE2NzJkMmViZjdjYjI3IHB5M2sKKzg1OTI1IGNmMWQyNzMyMWM3ODIxNzI4YTdkYzAyZmUxNzM5ODA0ZTMzYzhmOTUgcHkzaworODU5MjYgNDA0Mjc3NjBlMTYyOTRhYTk0NzQ0NjNhZTI1NzBkNTk0ZDQ4YjE0YyBweTNrCis4NTkyNyAzNzJkNmFmZjE1YmU4YzY0ZTZlMjg5MzI0MTgyZTg5OWE3MTdlZjE2IHB5M2sKKzg1OTI4IDhmYTEzMmEzYWZiNWJlOWZhNWY5MTM1M2Y2YjZlNzg0YTEwYmNiYWYgcmVsZWFzZTMxLW1haW50Cis4NTkyOSA1YzEzY2QwZjk5YjQ1ZTQ1OTZhOGI4ZDg3M2RhZTQwZjU1MTZjMDkwIHJlbGVhc2UyNy1tYWludAorODU5MzAgMTUzMmNhMjFiOTIwNTg2NzY0ZDVlZDEzY2FlOTg5OWM4YmJmYzVlMiBweTNrCis4NTkzMSA2MWE5YWU1MjJkY2NhNmI0OTYwMjQ5OWU4OGRjMTM4MmZjZGQxYmEyIHB5M2sKKzg1OTMyIGYzYTFlYWM2MzVmOThjN2NlZDc0YjYyMDEyZDkyZDBkOWUwMmUwNjYgcmVsZWFzZTMxLW1haW50Cis4NTkzMyBmOGQzNDQ4NDk1OTZlMTUxNmE0YmFiNDE4NGVmY2ZkZmNkYTRiY2E1IHJlbGVhc2UyNy1tYWludAorODU5MzQgYTRmZDNkYzc0Mjk5NzA3NjdhOTYxY2UwMjA3MWFmNjYxOTIwZDEyNiBweTNrCis4NTkzNSA4YjMyZTRmNmJkOTlkMmZiM2Q1YTQyZWM2MmJiZjQ2MDI5MjI4MDkyIHB5M2sKKzg1OTM2IGIxODI3NWIxMTdkMjEwYjQxMThkNTgzZTAxNTUwMjcwNDEwOTQwYzEgcHkzaworODU5MzcgYTA2MjZmOTcyN2UwZjJkMDhhMjk1MzM5NzcyNjVmYTIwOWQ4NzM4ZSBweTNrCis4NTkzOCA3NjVkNDIxZDk0M2M3MzUxNGYwZmE4MzRiN2U0OWQ4NjIyMTA3MWFiIHB5M2sKKzg1OTM5IDFkNTVjYzI4NGQ0YWI1YWZlMzc0YmRhZDNkOTIwMDlhOWE4MDI5ZTggcHkzaworODU5NDAgMmMyZWNlZDYzNWY2MGQwYTNiNzc5OTkwNGQ2ZDY4N2VhNjg2MzJjMiBweTNrCis4NTk0MSBlYjUwYzQ4ZDljYjQ5MDhhYTRjNTVkYWIzZmRjZGI1ZjNhMmVlNTgwIHJlbGVhc2UzMS1tYWludAorODU5NDIgM2RhMjNkZWI2ZTlhNTE5ZWI2Zjk4NTdkYWEyYWNlMzQ1MDYxMDdjMyBweTNrCis4NTk0MyBkMTYxNzE0ZTdjOTI4YzRlMzNhMzdmOGUwMjVlZjRlYThlNjc0YjdiIHB5M2sKKzg1OTQ0IDU1NmY1OTE2NjU0OTljMjQyMTE0OTY3YzA3ZmM4MzhhZDU3MzZhMmUgcHkzaworODU5NDUgYmVkZWQ0N2JiMTdmOGIwZTNlMDZkNzc3NDY0NzhlOTc2NDNkZmQ3YyBweTNrCis4NTk0NiA5MjZlOGI2YjZjOWQ2Zjc4M2FkZjNmMWY3YWU5MmU3YjgzM2E4ZmJjIHB5M2sKKzg1OTQ3IGU3MjdjZjM1NDcyMDEwODMzMmZkY2QwMmRjYmY5M2EzOGI4Nzk5M2QgcHkzaworODU5NDggNTM4NmYxZjQyOGExNWVhYjU4ZTdjYjM2MzYyYzY3YjQyODVmZDFjMCBweTNrCis4NTk0OSBmMjRhNTNlZGU5ZWQ4ZTg0Y2JjOTE0YWMzYWFlOTllOTQ0MWU3N2FmIHB5M2sKKzg1OTUwIDFjMDIwYmNkNTBjZDdlYjQ1MGRkYTY0MzI1ZjlhZWUxMWJiNzQwOTAgcHkzaworODU5NTEgNWMwMTNlYzI3MzI3ZGRhZjkxNjkzZTk2OThiYjlhN2NhYzVkYzIxMSBweTNrCis4NTk1MiBlMzhkMmQxNzMwODVmZjI4NWVjNDY5YWU2NTBiZWZjY2IzMzU3Y2RhIHB5M2sKKzg1OTUzIDQwYWM0NWEwOTJiNzdkNGExN2MxOWY2NDYzMDI5NjljZDE4NGY3ZDggcHkzaworODU5NTQgYzg1ZjUzMzkwNjhhMTFiOWIxNTExNjUxYTVhNjk1ZGNlYWExNDA5YSBweTNrCis4NTk1NSA2NGVmNjFkOWZmZGM0MTQxY2EyMTIxZmUxYmMyYWMyODMxYzU3ZTE0IHB5M2sKKzg1OTU2IDNjY2M2YWI1NDZjM2IxMjA2MzcyYTJhYTkyOThiZWJiMGE4N2VhMjYgcHkzaworODU5NTcgM2ZkYmM2YTRiMGQwZjdkODEwMjQ3MTE0NWFiZThjNjFkZDlkNzZlNCBweTNrCis4NTk1OCAxODgzMDI5YzdiOGE3NDk0MTZmMjQ3Y2E3ZWRiZDdmZjYxNGU3ODE3IHB5M2sKKzg1OTU5IGJhYWQ1MmU3OGRjYjNjYTJmMGE3YjFkODkzZWEzMWRkMDhjZWVmY2UgcHkzaworODU5NjAgMGY3NjVjMzNmNGRlMjczZjg3NzY1YmQ2MzQyNzAxMWJiNTcyNGYxNyBweTNrCis4NTk2MSAzYjIxMGQwNDhmNWRhYzQ5Y2RkMTg4NWZkZTA2NzM4OGQ5ZDJmMjdlIHB5M2sKKzg1OTYyIDk4Y2VjYTI1MTk4OGUyZWQzOGE5NmIyODhmY2RhMzYzN2U4NjZjMmEgcHkzaworODU5NjMgOWI2NmE5ZjEzN2I2YzA5ODgwYzNiNTUyMTJmYjlhN2ExMjYxMWM1NyBweTNrCis4NTk2NCA2MDMwMTBhZjgwY2YzNjdmMDIxMDUxZmYyZGU2YThkN2YyMGU3ZGQ0IHB5M2sKKzg1OTY2IDY0YTk3YzRlYmFkY2Y0OTRiOWJmMTNjNzhkOTg1MmU4Mzg3NWVmMTEgcmVsZWFzZTI3LW1haW50Cis4NTk2NyAxODJjYjNmODJiMGI2NTc4M2JlY2Q3MDQyODFlMTQzMWU2NzM1YjViIHB5M2sKKzg1OTY4IDQ4MGU0NTgyOGQ0YjE5MTIwY2FlYWViOWEzNDE4Yjc5ZjFkMmE2YjcgcmVsZWFzZTMxLW1haW50Cis4NTk2OSAwYTJlYzE3NGZiY2Q2MjhjMTIzZDY4OTc3YmQwYzU3NWI3N2MxMTY1IHJlbGVhc2UyNy1tYWludAorODU5NzAgOTBiYzcxZDZiZWRmYTE3MjYzZGE5OGI2YWNlZDdjMDg1ZGQ3MWE0YSBweTNrCis4NTk3MSAzMjI3YjZmMjA0Y2M0YjI2MGNkZjdmNTg0ZDEyNjUxNjAxMDg2OTlkIHB5M2sKKzg1OTcyIGFiYmQ5ZDI2YWU2YzY0ZWU0ODM1M2JkZmM2ZjU5Y2ViM2M3OWMzMjcgcGVwLTAzODQKKzg1OTczIGVhN2IyNjAwZmRjNTk4YWYzNWUwZDQyZWE0NDI5OTQ5MzNkNjIyNmYgcGVwLTAzODQKKzg1OTc1IDcxMDk2OGEyZTE2M2I4ZDk3MjRjNDZkYjFmMmU0YjU1YTQzYzE0ZmEgcHkzaworODU5NzYgOTM1NmQ3NjVkNzhlM2QxYjA5OGZjMzAxN2UzYmQ0YTU4YWRjOWE2NiBwZXAtMDM4NAorODU5NzcgZjk3MjFhOGY4N2JkOGJkM2Q4M2RhYmU1ODk5YTZhN2EyMTc1MGQ4MCBweTNrCis4NTk3OCBlZjZkYWQ3NTE3YzVjNTRmOTg3MGE0YmVmMjk2YWVkM2RlMTc2NmJmIHB5M2sKKzg1OTc5IGU2YWYxNDZiYjM4Yjg4NjBjNDcwZDlkZjQwYTgyODZhMTdkYmZlNGMgcHkzaworODU5ODAgZWExNDk3N2EzNmRlZjg4YWJkZDVmNWUwY2I3MjI3ZDYyYTMwZDkwYyBweTNrCis4NTk4MSBiMDM3NzlmMDA3MzlkNGM2Yzk0ZThkMDI1N2YwMjYwMDg2NjAyYmQ2IHJlbGVhc2UzMS1tYWludAorODU5ODIgODE5YjFlMDUzNWQxOTBhNmQ1NDg1MGY2OWY4M2I3NTJkMjE2NjQ4NiBweTNrCis4NTk4MyBiNzE4MGFmYTBkZmYyZjc4ZTc1ZTBiZDdkMWQwMWE4YzFkZmIwODI2IHB5M2sKKzg1OTg0IDM2ZWE3MTkwMmZjOGQxYzk4MmFhMjFjYTc4NmJiMDBlOTRlMzlmMWYgcHkzaworODU5ODUgMzg1NmM2MWI1YzhiYmJlZDNkMzVkZjcyMTgyNGU5ZjRlM2EwMjJmZCByZWxlYXNlMjctbWFpbnQKKzg1OTg2IGIwMWZjM2E0MmQzNWZiOGJkOWQ0YTk2NDM5MjA5OGNmMmExZDUxMDAgcmVsZWFzZTMxLW1haW50Cis4NTk4NyA3MmEyZDRkOTQwMDMyZDI1NWJlNGE5NTg4YzhjM2Y5NmI2Y2U3MWE1IHB5M2sKKzg1OTg4IGQ2OTgyMDU1NDNiZDcxOTYwOTVmNTljM2JjNWE0OTE5YmQ5MTkzOGIgcmVsZWFzZTMxLW1haW50Cis4NTk4OSBlMjAzZWQwNzFmY2FiNDM3MWNhYzNhNGQwNjQyZTZiYjgyNDg3ZDc5IHJlbGVhc2UyNy1tYWludAorODU5OTAgYjk0Mzk2NWZjNDJiYzkxZjcwZjNkMmY4OGVkNjczMjk3ZTBhYTMzNiBweTNrCis4NTk5MSA4ZDgyNDM0ODMyMjhjMDNmZGU5Yzg1NmIxNGZlYzI5MmE3YWFhOWNkIHJlbGVhc2UzMS1tYWludAorODU5OTIgMjRiMThjZDRkNWYzNTQ5NzI0YWRiYmZkNzNiYzJkNWViZGQ5YWEyZiBweTNrCis4NTk5MyA0MmFkNGFlNmQ4ZWViYjZiMjQwYTk3NWQyZjFhMDY0MmU5NjNmM2I1IHB5M2sKKzg1OTk0IDYyNGU4MzFjZTcwMDI5MWZlOGUxM2NkMjY2NThiYzM3YjJlMjZkMzIgcHkzaworODU5OTUgY2U1M2ZlYTdmOTU3M2Y4YWZlOGI2NjU4YmQ4ZjkwN2Y3YWVlZDYwMCBweTNrCis4NTk5NiA1YjYyNzAzNWE5MjJmN2E0MTIxNTU4ODMzOWI1MmVmZmJhNjg5MTk2IHB5M2sKKzg1OTk3IDkyNTFiYTI3MmYyY2EzM2YwOGFiYzUxYThlOGE1MjZlZDY4NmZjODYgcHkzaworODU5OTggMGJjMmIwNjQwNmY4YmUzYTMxNjEyNGU4MzYzYWIzYTkyZTkxNDYxYSBweTNrCis4NTk5OSAxOTU0YzhlMzFjYjM4YTg5ZDY3YjMxNWM0NjYzMzZhOTBlZTU5MmIwIHB5M2sKKzg2MDAwIGYxODI1MThmM2Y0MjhjY2NlZjM3OGM5NzVmNDQyNDExZmEyNGU0NWEgcHkzaworODYwMDEgNzFmNGYzYjFjMzM1NmVlYzVjOGNjNWUxNmQyZGNlMGIzZmZhNjFmNyByZWxlYXNlMzEtbWFpbnQKKzg2MDAyIDlmMTA5NjhmNTExZDczZjFiYWMzZjkzNzQ3MzY0OThhNmZkNWNjOTEgcmVsZWFzZTI3LW1haW50Cis4NjAwMyA3MzZmM2ExMGQxNzMzMTAzMjc1ZWE5MDA1YTVmMDFkZDE0MjQzN2QyIHB5M2sKKzg2MDA0IDA2ZTIxNTAwMTE5YTI5Y2VmMDcxZmU2N2I4OGMyZjJhOTFkMThmZDMgcmVsZWFzZTMxLW1haW50Cis4NjAwNSA3MzJmZmE4NmM3OThhOWFlNmJjMjllN2I4MzNhY2UyYzI0YTc4YTY1IHJlbGVhc2UyNy1tYWludAorODYwMDYgMjExODU4NzIzYjhjYTk0YjU3ZWJkNjM2NjgxODhlMDBkMGI5YjlkMSBweTNrCis4NjAwNyAyZTFhZDcxMjFlMjk3ZjE3NmFhZGEyZDYxZjQ0YWEwYTA4NTM2MzFhIHJlbGVhc2UyNy1tYWludAorODYwMDggNDU5ZTk1YjY5MzFiZTQzYTMyMDNkZTE1NGFmNDY5OTU4YjQ4OWZjOSBweTNrCis4NjAwOSA4NzcwOWM2ZTU2OTA1NzM3YjEwOTllMTZiYzhjZjZmYjYxOTQ2ZWIwIHB5M2sKKzg2MDEwIDkwYmMwYzVkNzIyZjc3NGM1NDg4YWRkNmY1Yzc1MmM4OTU2ZDg4ZWQgcmVsZWFzZTMxLW1haW50Cis4NjAxMSAzMDVlOTNmZDViNmQ0YWVkYjZmMzVkN2NlMWYzNmY2Mjk4MjU3OGVjIHJlbGVhc2UyNy1tYWludAorODYwMTIgM2E3NTU5YmE4ZWI1OTIwMzZhMmFjZTBkMTgzNmRiZDAxMmM1ZGU3OSBweTNrCis4NjAxMyA0OWEzMWFlMDM0OGE1OGMxNGEzZGUyMTFlMWVlYzg4MTU3ZTIyYWM3IHB5M2sKKzg2MDE0IDYxMmFiYjFlNzY3NjIxYzdiNmIyN2ZkYzcxMDQxMDk0MWY2NmM1YjggcHkzaworODYwMTUgOGJlMDg3NjFkZGMwYmU1N2Y0NTRkZmRiMzMwNjAxNzc5MGU5OWQ2OCBweTNrCis4NjAxNiA5N2YzMmJhNWZmODU0YTZhYmQyZWY5MzdjYzc5OWQ1Mjk2NWQ0Nzc3IHB5M2sKKzg2MDE3IDBlZTg2ZmQ5MDJmMWVmMzViZGVhNjRhMzljMzViOWE2OWZlYWY2NGQgcHkzaworODYwMTggMGVjMzE3MGZhYTk1ZTU4MmU1ZjBhOTY1MTcwYTkzNDFjMjc3NTA1ZCBweTNrCis4NjAxOSBhZjlmOWVmY2JiOWRiNjRkNjVhM2Y0M2QzYTUwNWZmMjcyMzY3ZDRlIHB5M2sKKzg2MDIwIDA4NWRlOTYwM2I2MjlmZjIxNDUwZTBhNjAyZmI5ZThkZDE2OTBhNGYgcmVsZWFzZTMxLW1haW50Cis4NjAyMSA3NjA4ZGNhZjc4NmRkZGRiZmIwZGYwN2QzNzY3YmZmNDIwOWEwNTFkIHJlbGVhc2UyNy1tYWludAorODYwMjIgOTRjNWFkOTgxYzFiN2Y2MWEzNTBjMTRhZjY0MDg3NjBmMDFlMDFkMCBweTNrCis4NjAyMyBiNDgxOTgzOGViNWI3M2YyMTQxNGRhOTRjMTdmOTRiMTBmOTM5NWYxIHB5M2sKKzg2MDI0IDIxODcyYzI0YTI1YjkwOWNiNDQ4MjIyYTQ4MmQ0NTJmZDVlYzI4NzEgcmVsZWFzZTMxLW1haW50Cis4NjAyNSA5ZTI5MWJlNDg5Y2Y1NTE0ZmI0MjcxYjRiMjFmZjYyZDkzMzEzOWYxIHJlbGVhc2UyNy1tYWludAorODYwMjYgZmM4NjU4NjE5YmRmNDlkZWEzY2E0MTlmYWE3ZTNlMGI1NzE4OWFkMiByZWxlYXNlMzEtbWFpbnQKKzg2MDI3IGQ4ZDMzNjQ4ZDFiMmM3ZThiYTI5NDdmNjY3ZWM1OGU3ZGFlOTEyYmEgcmVsZWFzZTI3LW1haW50Cis4NjAyOCBjOTgyMDczMTg4M2Q5YmQ0ZmY0YjBhMGI5MWFhMzM1OTE0ZmQ2MzQ1IHJlbGVhc2UzMS1tYWludAorODYwMjkgZjNhZmExMGNlNzc3MTllM2JiZGMwMmE4MTdjZGUzNjYxMzBmYmQ4MyByZWxlYXNlMjctbWFpbnQKKzg2MDMwIDEzMWU3Y2M5ZTQxNmNkNjE4ODFmOTAzYjNjYmMxY2E2YzI4YTZkZjkgcmVsZWFzZTI3LW1haW50Cis4NjAzMSAzMmMxOTFhNWMxY2Y5NDk1YmRhMGZjNDY4ODFjYjQyMmY1Nzc4ZjczIHJlbGVhc2UyNy1tYWludAorODYwMzIgYjg5YjBjN2YzNzA5NGEwYjczM2EwOTZhZDRhNDg1OTY0ODNmMzllOSByZWxlYXNlMzEtbWFpbnQKKzg2MDMzIGFlMDZjMDQ4ZGUyNDcyODA0MzE4ZThlYjUwNjBkMTM0YmJmMGY5ZmEgcmVsZWFzZTI3LW1haW50Cis4NjAzNCAzMjE3YjEwZjg0MTNhOGFkNzk4Y2E3MDk2OTM2MDNlMzRjY2E5ZTEwIHB5M2sKKzg2MDM1IDliODE0Mjk2MjBmNGI3NzQ1ZWViM2RjMmRiNmZiZDI2OWRkODRhZDYgcHkzaworODYwMzYgNDEyN2FiMWY2MzM4YzJjODBlNDM1Njc0MjY4OGM1N2I3ZjVmNWMzMiBweTNrCis4NjAzNyA5N2RmNWRkZTlmODFiYTZkNGUyN2JhNGUxNjgyZWRhZmZmZjIxODMzIHB5M2sKKzg2MDM4IGE2ODMwY2M4MjJhYWJlMzMzZDk1Mjg2N2ZmOTY3NjlmZjA0NDk3OWEgcmVsZWFzZTMxLW1haW50Cis4NjAzOSAxNDBkNDcxYjA2MWE1M2QxNzJmOWU0MmE2MjAzNjFiNzExNGYzNzMzIHJlbGVhc2UyNy1tYWludAorODYwNDAgNzVhYzEzZmU3ZGEwM2JiY2E0YzMzZTkxMGI5ZWIyYjBkMmNiMzczMCBweTNrCis4NjA0MSA2ZmE0OGZhMmE4NjU2OGM5NTgzNTIzMmZiNzkwZTM2NTA0MWNlM2MwIHJlbGVhc2UyNy1tYWludAorODYwNDIgOTQ0MzJlNGNkZGNmNjI0MWM5MzAzZDA4Nzg2OGZkNjQzNDRkYTIyMiBweTNrCis4NjA0MyA1YzViN2E5YmFjMDVjNjQ1OWNlOGQ5MjQ4YTYxNDdmMTZhZGY0MTJiIHJlbGVhc2UyNy1tYWludAorODYwNDQgNDk3OTY0Y2Y5ZTU4ZTYwYmFiN2ZiMWRhOTgxOTk0MWM1MDU1YTcwMSByZWxlYXNlMzEtbWFpbnQKKzg2MDQ1IDViZGMwZDZjNjkzOTMzYmM4M2Q5MmYwZDI2NTE0YTk4NDNjZWZkMTkgcHkzaworODYwNDYgNTc1Nzk0MjU5M2EwZWJiNTA3OWZhMjE2YzEzMDZmN2U0MjgwYmQ0YyBweTNrCis4NjA0NyBkZTFlNWVlYTdlNzVkMTA1YmUwOGFjNGJiZjJjMjAwOTBlMWYzM2Y3IHB5M2sKKzg2MDQ4IDcxOWViY2I5MzRmM2RjNDQwMTU1NjY2OGMxYWU1YzA3NjA2ZjkyYTYgcHkzaworODYwNDkgYmM2Y2NlNGFiM2M2MzY3NzAwZjlkNmFkMmE0OGFkOWUyOWQ5YjA2ZSBweTNrCis4NjA1MCAwMDA1YTE4MWQxMGJiYjk0ZmEwZTEyMmRmYjkzOTYzOWU0MTY3Mzk4IHB5M2sKKzg2MDUxIGVhMmMyZmMwMTlkNjVjNDEzYmUxYjYyZmZlZDNjMTQzNWFkZDgxNzggcHkzaworODYwNTIgNDFkNWQzZDdkYTIxOGY5YTI0ZTcwMzllYmM2ZjRlMmFmMjZkMzVlOCByZWxlYXNlMzEtbWFpbnQKKzg2MDUzIDBhOTQ5MjM3ODNhNDdkNDAxOThlNDI1MTczNmU2Zjg0YjY5NTQ4ODEgcmVsZWFzZTI3LW1haW50Cis4NjA1NCA0M2FjYzk1NDM0MTZiNDViMDUwYmZhODdlYTNjNzc5OTczOGQwOTI1IHB5M2sKKzg2MDU1IDkxMDNhYTliMjcwNGM5YjU5Y2MzMGViOGM1NmYyN2NmODc4N2EyOTIgcHkzaworODYwNTYgMDU5OWQyMTg4ODM3ZWM0MjFmMDk1NmRmOTdmY2ZmYmViYzkyYWY4YyBwZXAtMDM4NAorODYwNTcgZmVkZGI5YTgzYWVmMWM2YWM2ODE1M2M0ODE0NjdlMWI1ZDE3OTIyNiBwZXAtMDM4NAorODYwNTggMDg5MmIyYzM2MzZkOWUwYzI4YzMwZWI3NmYzMWY3ZjA4NDkzYWIyMSBwZXAtMDM4NAorODYwNTkgOTdiOWQ0MDg4OTE0ZTM4NGIxYjIzYTMxZWIxZWNmYmYwNDM4ZGU0MiBwZXAtMDM4NAorODYwNjAgMTI0MzNlOTg5ZDljOTAxOWU3M2QzYWFmMTNjZDBjZGMzNjI2MzJjNyBwZXAtMDM4NAorODYwNjEgMzkzM2FiNmY2ZjdhYzkzZDllNzg4OWY1ZjdhYjI0OWVhMGE2MjVhZCBweTNrCis4NjA2MiA1M2I1MWY1ZTk1YzRjY2JhMzU1YzU1MjE3YWQxMmQ5NTlhNzBjMDU3IHB5M2sKKzg2MDYzIGQwZjFjYTFhODEzOTFjZDMzMjRkYWI5OGEyZTgwZTRmZGMzODM5N2EgcHkzaworODYwNjQgYjY0MjQ0MWRhMWVhNTkwZmIyNzBjYzQyMzlhZjMxYjM1YzA1NTRkNSBweTNrCis4NjA2NSBlYWE1MDcyNTEyMmI2NmM1OTJlMzNmMzQ4MWMzOWQ0YjkyZDJlM2I5IHB5M2sKKzg2MDY2IGEyY2U4MjE4ZTAyOTJkY2RiYzkzMTczYWZkN2U3YTNiNGZjZWI5NjMgcHkzaworODYwNjcgNjQ3MDU2NjE5NmIzZDM1ZDUzODdmNjAxOTZjOTg4NzVmN2FmOGJhZCBweTNrCis4NjA2OCAwYTNhZTRhMjU1ZGUzYWI3NTUwNWUxZmM4NGQwMDI5ZTEzYzE1Njg0IHJlbGVhc2UzMS1tYWludAorODYwNjkgZmIxMmVlYjFlN2E5YmEyMThlYTllZTVmY2U1ZmE5ZjA5Nzk5NWRhYSByZWxlYXNlMjctbWFpbnQKKzg2MDcwIGQwYjIwYTY1MjFkMjE0NmVkNTg3YmI0OWQyMTJjYjVmMGMzMTA1YWEgcmVsZWFzZTI3LW1haW50Cis4NjA3MSBiNWUxZTZmMzE0MzdmMmM3NTZjNjU1ZDg3YWI3YTI0NTk4NDRiMjA4IHB5M2sKKzg2MDcyIGM4MjQ4NzUxM2U3NjkwNmFiNDA3MDIxYzllYjgxMDg2Yjc5ODIxOTQgcmVsZWFzZTMxLW1haW50Cis4NjA3MyBmZjJjNWM5YzA3OWJhMDZjM2U5YTc3MzQzNzY1YzgxMWZlNzM4ZjYyIHB5M2sKKzg2MDc0IDdkYzEzNmEwMTAxMzcwNjZiMmE4ZjkxNWUxNWU5MzMyN2U2OWE2YTkgcmVsZWFzZTMxLW1haW50Cis4NjA3NSA0NTFjOWJiNzUxNTllNDJhZmQ5MjFmODU1OTZmODdjODk3NTAxODQ2IHB5M2sKKzg2MDc2IDcyMGQ0NWE2ZTMxNjlkNmI1NWM2MmZkOTUwZmVkNmI3NDVlNjhiNGYgcmVsZWFzZTI3LW1haW50Cis4NjA3NyBmZTJkMTliMmE1YzZkMmRmOGY4YjBhNTJhZDhmNTY5YWY5NDZkYWUzIHB5M2sKKzg2MDc4IGJhMmFlMDk3ZjU2NzUzMTJiMDllMWRhYTNiYzZkZmEwNTZkY2U2OGUgcmVsZWFzZTMxLW1haW50Cis4NjA3OSAyMDZkZWQ5NDM1MzRkMzZiNjVmNDEwYjNkYzkwOGNhYTE5OWI4NTZmIHJlbGVhc2UyNy1tYWludAorODYwODAgOGU2NTg0OWY3MWY1MDkzOGU2ZGZmYzYzZTYyM2MyMjliNzdjZWYxZCBweTNrCis4NjA4MSBiZWVkYzc4NTZmNWIxMzkyOTljNzYwYmY0YTkwOTgwOTZlMGQwZDcxIHB5M2sKKzg2MDgyIDlkMTEzM2MxODYzZTRjMDY2YzE0ODFiNGQ1OWQ3N2NmZDhiMjY2NDEgcmVsZWFzZTMxLW1haW50Cis4NjA4MyA5ZGI4NTc5NjA0MDI3MjM1ZmQ2N2EzNTk4YzY0NjYyMTJiNmE0MDQ4IHJlbGVhc2UyNy1tYWludAorODYwODQgZjAzMDA1ODRjODI0NDRjOGJiZmE5M2ZlYTdhNjE4MzAxNzBkOTllMCByZWxlYXNlMjctbWFpbnQKKzg2MDg1IGU1ZGIzMmY0ZjRjZDY4MmEyN2Y4MzdiNTdjZjM1YTZmYTg0ZDBlOTAgcmVsZWFzZTMxLW1haW50Cis4NjA4NiBlNzFjMmUxZGFmNTcwYmZiZGM0Y2E5N2JlYjBiZjNlNWE4OGU1NDdhIHB5M2sKKzg2MDg3IDQ5M2EyZDQwN2M5NDQ2ODA2MWZmZGI3MjIyNmQ1ZTQwMzlkNTQwMTAgcmVsZWFzZTI3LW1haW50Cis4NjA4OCA0M2QyZDVhZmJmNzM4YjU5MTQzM2YwODg1NWVlNDMwYTRjODg1YjBmIHJlbGVhc2UzMS1tYWludAorODYwODkgN2M1OGZhZjIyZTlmMmVjNTc3OTg4NGNmYjhhMDhiNGMxZDlkZjdlMiBweTNrCis4NjA5MCBjYjllMTAwMzRlNGE2NWVjMjcxZGVlMGMwMzMzNDJjYWI3YzQ1NTEzIHB5M2sKKzg2MDkxIDg0ODkxMjc4OWI3OTRhYjQwNWVhOTI2YmUyNGUyNjg4MmI2MDY4MjUgcmVsZWFzZTI3LW1haW50Cis4NjA5MiBkOGFiMzVlYzQ4NmU5MDg2NjNiZjg4ZWUwNTRkMDA1YTEyMzlhZWU0IHB5M2sKKzg2MDkzIDU5NTJiOTM3YWI5YTI4YjIyMjVkM2M5OGM2YmVmYTNlZDBmOGRhZDUgcmVsZWFzZTI3LW1haW50Cis4NjA5NCBiM2MwOThjM2E4MjY2OWYyMTk0ZTNiMzliZjEzMGM2MjcyMGY1YzljIHB5M2sKKzg2MDk1IDYyMWYzZTlhY2VkZGM1ZTc4ZDY4Zjg4OTI1YWU2M2I5ZTI1OTBhOTkgcHkzaworODYwOTYgMzUyMGZlYTVlOTIyZWI3YTMxMDdiYjU1ZmIxN2YzZmNhZjg2NzEyMSBweTNrCis4NjA5NyA1MjA4NGVhNjNjNDIxMjFhOTdhNDU4OWIxMmZiMDhhZDU3MjcxNWMyIHB5M2sKKzg2MDk4IGM3OTFkMDI2MTAwNjI0YjQzMTE2MzMxMWM0MDg2YzI4ZDVlYjA4YTIgcHkzaworODYwOTkgNTM4ZjQ0YjMyYjBhOGRiOTkwNjdhMjQ2YzEwNjc5ZTRmMzQ3MzkxNyBweTNrCis4NjEwMCBmZjgxNjg4OWFhNjFmYzYyMjdhZTg1ZGE4OWYwNDNkOThkNGQ3MDM2IHB5M2sKKzg2MTAxIDljN2FkMGVkNjZjYmVjYWRiNTZhYmQ1ZmQ2ZmVmNTJlNmE5NzZhNTMgcHkzaworODYxMDIgYmUxZDdmNjE5ZmMwZjAwNjFmODZmMTVlZTc0ZjI4MjlhZjA0NjcyYiBweTNrCis4NjEwMyA4ZTE5ZmY5NjRjYzhkYTE2MjBiNTg3ZTc4MjNiNzM3MzBiODYwZGZhIHB5M2sKKzg2MTA0IDRlYTk0YzVmNmQxMDI1MjU0ZDk3OTNlZTViZWViMDU3NDlkOTllM2MgcmVsZWFzZTI3LW1haW50Cis4NjEwNSA4ODlmZDhlY2JmZjQyNDQ5ZGE1M2ZhZDY0YmViMTM3ZTAzZTcyNDE2IHB5M2sKKzg2MTA2IGEzN2Q2ZDgxZjRiMWU5ZDViOGEwNGQ3YTkwNjY0OTQzNjI0N2E3YjEgcmVsZWFzZTI3LW1haW50Cis4NjEwNyBhNjM5NTllZWM4ZmY0YWRkYmI4OTQ5NjRkMzAwYmY5OGU3MmM1MGMzIHB5M2sKKzg2MTA4IGIzNDZjOGQzM2U1NjAxZWM3YTA5Yjk1YjhiOWY2NDFhMzY2MjhjOGUgcmVsZWFzZTMxLW1haW50Cis4NjEwOSBkZWIyM2NiYWI1YWI2MjM1Mzk1NmU2MDgzOTJiMGNlNmEzYzE3MDJjIHJlbGVhc2UyNy1tYWludAorODYxMTEgZmY2ZjM5YjNjMzhlNDZiZDVhNTI0YjQ2NDY3ODZjY2RlMWUwYWU5OSBweTNrCis4NjExMiA1NzNkYjJhZjJkZGE3NGYyMzM3ZGNhZTQ3ZGQxY2I5OWFmZjFlNWI2IHJlbGVhc2UyNy1tYWludAorODYxMTMgZjNiNzE4ODE3MWMwMmNiNWNkN2E3Zjc5NjI3NDk5NGVlZGMxM2YzYiBweTNrCis4NjExNCAzNjg3MmEwZWQ5NDMzNWQ4MDgwMDFhMjAzNTFmMTI1M2ZjZGYwM2MwIHB5M2sKKzg2MTE1IGQ3ZWRkMTViYTBmMmFjMTA0ZjM2YzczZTY3YTY2NDhkZGUzY2QwZjkgcmVsZWFzZTI3LW1haW50Cis4NjExNiAxNTc2NzkwMmI1NDVmYzdiYzQyYmIzYTFhOGI1OTZiODE4Y2RiNGVhIHB5M2sKKzg2MTE3IDQ5ZjE4YTk1MzNjZGUyNjIwOGUwN2U1YmVlMTc5NmJmMDFlMTkyMGEgcHkzaworODYxMTggZWRmNDA2ZWFiMWRiN2ZhMmUwMzlhNGE1NmY2YTMxNTkyMjQ3YjdlNyBweTNrCis4NjExOSA2ZWVkMGZjMTg4MThjMTBhNjUzNmY5MjZmNWI3ZGEyZmM4MzNhYzIyIHJlbGVhc2UzMS1tYWludAorODYxMjAgNGNjZDA2OGNiYTBjOWIwMjI2YjExZTcyMmFkMzZkYjRlOWM2ZmVhMCByZWxlYXNlMzEtbWFpbnQKKzg2MTIyIGY0Zjc5NTU2YTUyMmUwNGYwNjM4ZmE5MzhiYzYxZTFlNjEzODkzNTMgcmVsZWFzZTMxLW1haW50Cis4NjEyMyAwMDRkNWYxNjU3MzhkZWNjMGNmMmNjYzM4MWY2MzNjNDBmY2MwNDVlIHJlbGVhc2UyNy1tYWludAorODYxMjQgYTI4NTg0M2U5NThhNGMzYTc3YzMzNTFjMjBhYmFkMzQ0M2ViZGI5MSByZWxlYXNlMjctbWFpbnQKKzg2MTI1IDQ1Nzc5MmFmZGVjZDYxMGJmYmJlMmZkYzA5OTc5NGU1M2QzZDAzZjQgcHkzaworODYxMjYgMjNiNDk2Nzg0MDFmMTgxNzBhZDFkNDNmNDBlYzg5MjAzNTNjYzFmYSByZWxlYXNlMjctbWFpbnQKKzg2MTI3IDUzZmI5OTE2MzI3ZTBmZWJkNTQ4MDg3ZTcwZDU0NDI2MmE2MTYyYzYgcHkzaworODYxMjggMTA5NTM4NzE2YzU5MWQxNjMwZTg5ZjdkZmU5NWNlOTRkYjJjMmMxMiBweTNrCis4NjEyOSAwY2UwZjhlYmRkMjk4NTIyMzgyMzIzN2Q1MTk4N2Q0NjFhNzdmZDlkIHB5M2sKKzg2MTMwIDE5MTA2N2Y0OWZjYTA1NTJmMjY2ZTZiYzk2NzE2OGVkN2M1MzQ1NjggcHkzaworODYxMzEgZjk4MGY5NDRiZTE5MzU0MjZkNGY0ZGYxNGM1NjY5NWU2ZmRhMDQ0NCByZWxlYXNlMjctbWFpbnQKKzg2MTMyIDY4MzQxZjljNTkzNzNmYmU4NmJlYjJlYzVmNmRkOTc4MmJmZTBkY2YgcmVsZWFzZTMxLW1haW50Cis4NjEzMyAyNjk3MzI2ZDRhNzdkM2VjODdhOTM1OTkwMjUyMjQ0ODA1YTFjZDU4IHB5M2sKKzg2MTM0IGE5ZGJjODdhM2ZmNGFjYTc0NzYyNjQyNjY1YTE0MmVlN2FlYWNhYjEgcHkzaworODYxMzUgNmQyMGRkZTk2MDljOTFlN2VmNmIzMDIwMWEzMDc5MmUzNzUyZDJlYyBweTNrCis4NjEzNiBiOTZlZGIwMmVmNjMwZjcxOWZlOWQ2NjNhNGIyZGYwNTY5YWUyNTE4IHJlbGVhc2UyNy1tYWludAorODYxMzcgMmQ0MjJmMTAwMjJmZjA3MTQ3N2I0YWY1MWIxODZmYmRjNjdiMjg0OCBweTNrCis4NjEzOSA1OGU1NGY1NjNkZTdjZjNkNDJhNjBhY2YyMGRiNDYwYTU0OTljMjczIHB5M2sKKzg2MTQwIDhhNGUyNjM3OTZhM2U1ZmY1OTUyMjZlOGNhMTY1ODNlODE1MzFjZTIgcHkzaworODYxNDEgYjhjMjA2ZTVlZDQ0YWNmZDNjNzJlZTI3ZWYzYmI5MzUzODI1YzQxZiBweTNrCis4NjE0MiA4ZWYzMjk1NWEzNDk0ZTljNmM0ZjljYWJlODEyMGUyZjRmOWM5ZGQzIHB5M2sKKzg2MTQzIDViMDY1Y2Y2MGRkZTEyYTA2OWY4ZmZhZGUzZTBiNDZkNzU0MTU2Y2UgcHkzaworODYxNDQgZjI1NTAxMmIzNDZiYzk0YTE2MDU5NWQ4MDBhYjdiMWEzYzQ3MzFlZCBweTNrCis4NjE0NSA2NzA4NWYyMDIxNDI5MTIyZmExMmVkYWI3ZjIyOGExZDkzNzJkMGVkIHJlbGVhc2UzMS1tYWludAorODYxNDYgMTQyZDUzOTBhYzVjNmEwMmFhYjJmOWM0MjM2OGUzZWM5YTM1OTcxNCBweTNrCis4NjE0NyA0ZDFhYjJkMjViYWY2ZDhlYzRiYjk1YmZhODQxYTgwYTQxZWY5OGRjIHB5M2sKKzg2MTQ4IGRjMzAzODJiYTg5YTEzMDdjODQwYzVkOWNiYTlhMzAzZTliZGI5MzAgcHkzaworODYxNDkgZjI5ZjYyYzM1N2UxNGM5NWZkMjQ2YTgzYzg2MDY3MDM1ZDc4NzgyOSBweTNrCis4NjE1MCA4MWIwZTg5ZTNkZjNjZDk0M2FmZjQxZWM1ZDdiNzgxNDljMmQ0ZTMxIHB5M2sKKzg2MTUxIDhhNWYwODczZDczODAyMTk4NWJhNmU4MjQ0OTU1NTllMjE0YmRiMjEgcHkzaworODYxNTIgOGQ2NTlhNTQ3OWNhODQ4OTNhMzlmZmE4NDAxOThkNTYzNWQ1Y2IwNiByZWxlYXNlMzEtbWFpbnQKKzg2MTUzIDQ2MjQxYTM1YjVmYzUwN2MzZGYyNjY4NmU5MTg0NzljNzI0ZjI4ZDUgcHkzaworODYxNTQgMjk5NzM1ZTVmZDdmOTExNGMzM2FiZTJlNTI3NTg0YTcxYTQ0MGFiNiByZWxlYXNlMjctbWFpbnQKKzg2MTU1IGM5NjczMTRlZjYxZTczZjJlNzZjNGVkZmI0MTBmY2FiN2Q2ZWEyNDMgcmVsZWFzZTMxLW1haW50Cis4NjE1OCA3MWFjNTIzYTZiMTIzODQyMjNlODdiNDY4NDEzYTk0NzViMzBmMmQ1IHJlbGVhc2UyNy1tYWludAorODYxNTkgZTFiNjFiMDUyYzY2YmQzZjRhMDk4MTMyYjQxMDI2MDY2MjE1NjRiMCBweTNrCis4NjE2MCAxZTRkNDZhNjFmYmVlZWViM2ViNDUwOTBmOThlYTZiN2VjODZhMzEzIHJlbGVhc2UzMS1tYWludAorODYxNjEgODQ0ZWNlMzczNzY0MTRjZDNmNTg2YTJmZDE5MDU2OTdhODkyNzUxZiBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg2MTYzIDdjNWQxZGNlMzlmYWFhNmMwYzM3MDBhMGQ5MzY1Mjg0N2JlZWQyNzggcHkzaworODYxNjQgNTIzMWE1YTM3YTdhY2ZlODY3M2IxMjQxOGE2NTRmOTMzZmM1YmZkNiByZWxlYXNlMzEtbWFpbnQKKzg2MTY1IGJlYmEyZGUyMDBkZDE2NWUyYTMzYzRlNTE5ZmY5ODdmNDE3NDdiNDIgcHkzaworODYxNjYgNmUwN2M3ZTRjN2NjYTk0ODU2NWFmMDk4NjdkYmQwZmVjMTE0MjQ1NCByZWxlYXNlMjctbWFpbnQKKzg2MTY3IGNjN2E4OGUwODg5OTM5YWE2MjBlMjQ3MDcxZGI2ZDUzZDJhZjAyNDcgcHkzaworODYxNjggZmY2NTg1YTJhMjQzMmMxYWExY2Y0OGUxNTE0YWQ1N2U3ZmNmNjMzZCBweTNrCis4NjE2OSA2NjMxZTVmNmQyY2VlNDIyZTMyY2EwYzdkYmM3N2ZmNmQ2MDJjNjYwIHB5M2sKKzg2MTcwIDA1ZWVkOWYwY2UwMTU1MjYwOGVhYjBkNjljMDJmM2M2ZTU3ZjJmMmUgcHkzaworODYxNzEgNDI5NGUyYzAwMjQ1NDAwMWQ0NzRmOTk2NGQ5MWU0Njg3OGMyYmFhZSByZWxlYXNlMzEtbWFpbnQKKzg2MTcyIDFmNDViZmI5ODQ3MzcwMTdjMmY4NzRjNjRiMjAyZGJjMGEyZjA5ODggcmVsZWFzZTI3LW1haW50Cis4NjE3MyBkZGYwMDBhZWY1YjA3YTQ0ZWM0ZGZiOThjMzk5Y2M5NTE3NjgwZGJmIHB5M2sKKzg2MTc0IDMyOTJjYzIyMmQ1Y2Q4NjEzM2RkZWRhNTQ1ZTg5ZTMzMjQwYWQ1Y2YgcHkzaworODYxNzUgMjcwYjUwMjk2ZWE5ZmIwZWQwNzViODczMWZkNDJkNjMxYzk1MTE5MSBweTNrCis4NjE3NiBlYTVhZWYzMmExN2YxNzM2Yzk2NGU0NWFkNjA1YTQ5Y2EwMWRlZDg5IHJlbGVhc2UzMS1tYWludAorODYxNzcgNGJiOWM5NzRmNTE5ODc2YzcwMDQ4YTYxMzZiMTRhOWJlNmRlZmJlYiBweTNrCis4NjE3OCA0ZWU2ODJmYmVjMzBkYmIxNDY0MmJlMmJjMDY1MDc4NTU4NGFmZDRjIHJlbGVhc2UyNy1tYWludAorODYxNzkgNjJiM2EwYTk5YjE5ZTRhNmQ1NjdlZDM4OTljZDhhODZkMjAzYTVhOSBweTNrCis4NjE4MCAyZDVkYmRlNjRhMzU4YjI2OTkzNDU2NDkxMTgyZTIzYjgxYmYxNjA0IHJlbGVhc2UyNy1tYWludAorODYxODEgNDhlNTU0OWUyYzI1ODlmM2RiYjFjMGU1MTI4YTYyYzU5Yzk0N2Y3OCByZWxlYXNlMjctbWFpbnQKKzg2MTgyIDdhYjcyYmEzOGZlMDJlMTJiMTRkOGIxNzg5MDA5Y2RlOWEwYmI0NmYgcmVsZWFzZTMxLW1haW50Cis4NjE4MyBiODM2ZjA0NzU5Y2QzNjMzZmFmNjJmZjU4Yzk0YzU2ZjIwNTUzMTk5IHJlbGVhc2UzMS1tYWludAorODYxODQgOTQ3YjVhY2M2NGJkOTI3ZTRkMDY3NjI4MGIwOGNiYTZhOTM3NDdkNiByZWxlYXNlMjctbWFpbnQKKzg2MTg1IDZlMWFlMzIzZmRlNjI2YjYyZmNhYjJkYWYyZDYxZTFlN2E1ZjFjNGQgcHkzaworODYxODYgNDMwZDUwZTNhYzUzMWE0ZjM4YjEyMGNhOGE3ZjczYTg3YTg3OGJmZiByZWxlYXNlMjctbWFpbnQKKzg2MTg3IDhjZjhiYjVkYzVmODZlYTJjMDExYzk0MDllNjZlMDA0ZjU2NzQ1YzcgcHkzaworODYxODggZWM5ZGQ5NzM1MzJmM2MwNDgyOTA3YWQ0ZGEyMzVjMjM3Y2M3NTIyOCByZWxlYXNlMzEtbWFpbnQKKzg2MTg5IGJiNjZhNGY1ZWJjMmFiYTg1NTliMDEzODU4YTk2M2EyODljMjlmYmIgcmVsZWFzZTI3LW1haW50Cis4NjE5MCAxY2U2OWVlNjllOGVjMDE4NTQyNDhjNzEwZDI1YmY0ODUyMDgxNTc4IHJlbGVhc2UyNy1tYWludAorODYxOTEgNGMxYzQ4YjNhZjY2MjZiNjA2ODA1ZDFkZjZhZjMyNDJjYTZiYzAzZCBweTNrCis4NjE5MiA3OWIzZmM2ODFjYjA5NDg2YjRhMWJmMjE4MjE0YTgzYjBiYjdiZmJiIHB5M2sKKzg2MTkzIDJkMDVlOWZkYjU5N2YwMmRjYzE5NDRmYzI3ZTA5ZDk5ZmFmNDViZDYgcmVsZWFzZTMxLW1haW50Cis4NjE5NCA3ZDI4MDg3ZmJhZjNhOWE2OTdmNDcyODcwNTcyNThiNzQwMDMxYTI3IHJlbGVhc2UyNy1tYWludAorODYxOTUgYjAyNDlkMDgzOWVkYWIxMjNlODM0NmMxMTZiY2I5MTU1ZDdmMWY4MCBweTNrCis4NjE5NiAxMjQzZWM2NzljMjk4YmE2NGVmMmY1NjE0ZDIxZTA4ZWE2ZDcyMmZiIHJlbGVhc2UzMS1tYWludAorODYxOTcgNjJmZjExNjQ0MzM5MWQwZTNkOTk1YjQzYjdkYzQ2NjFkYjE0ZGExNiByZWxlYXNlMjctbWFpbnQKKzg2MTk4IDE4ODk2ZDU4MDI5MGFjYTMwNmU5YzhlZDJhYTIyODM0NGU2NDBiZGYgcHkzaworODYxOTkgYzUwMGI0MTM4ZjdiOWMxMTc5YTgwZDllYmQ4ZTMwMTc3ZDQ4OTJlNCByZWxlYXNlMjctbWFpbnQKKzg2MjAwIDYyMDg1NzMzZjdkZmI5ZWMyYWEyMmJjZjQyMGQ5NzY3YzRmODgzYzUgcmVsZWFzZTI3LW1haW50Cis4NjIwMSBiMjU0YzY1MDdjMzVkMjc0MDg5NGViMmMzMjVkMWQ2MjU0MGE0MDM3IHB5M2sKKzg2MjAyIDI1OWE5YmVjMjMyNmM2OTFhZmZjZTYxN2RkZDI2ZWU5OGVhNDA3NTYgcHkzaworODYyMDMgZWQzNWIxMWViZWM2OGNlN2Y1ZDYwODk3YThhM2EzMTQxOWZkMDJlNiByZWxlYXNlMjctbWFpbnQKKzg2MjA0IDJhMzMyZTcxNTc2NjM4NmVkYzhmY2NhYjEyOTc3YjBkMWE3NTRjNjMgcHkzaworODYyMDUgZTIxM2U0NjVhMmRjODU1MmM5OGU1YzU3N2EzOTdiMjVmNTgzNzUyZSBweTNrCis4NjIwNiBlZGY4YzRiMDAwNDFlMDk1OGEzODNjOTA2ODQ3NzdmZDkyNmE5MTg4IHJlbGVhc2UyNy1tYWludAorODYyMDcgZmU4OTYyZmMwZTExOTkzZGRjNDA1MTU5YTI1ZWMyY2M3YjlmOGQzYiBweTNrCis4NjIwOCAyMzlmZmVlNWVkYWU1Mjk0NDZhYzM0YzNmY2FmMWUzYjljNDdlMjljIHJlbGVhc2UyNy1tYWludAorODYyMDkgNWIyMTFkYzk2OGRmYzdiYzlhOWZmM2VlM2RhZmRjZjIxZjJiZWVjZiBweTNrCis4NjIxMCBkMzFlYWVjODgzZWIzZWJiNzEwOGFjYWJiNmJmNWU0ZDU4MTA0MmVjIHB5M2sKKzg2MjExIDQ5YjBkNDIzMDIzZWQ3NGZhMzBjOGJkNTk3MzMxNmI2YWUzMWUxYTQgcHkzaworODYyMTIgYzM3YmVmOGRjZWEyY2I1OTBkMTA1Y2I5NTY0YWFiNjY0NjkwZWVlNiByZWxlYXNlMjctbWFpbnQKKzg2MjEzIGVkZWZjNWQyYjNkNzRlOWZiNTczNGQ0NDBkYjFiZjgyMDRlNWQzMjkgcHkzaworODYyMTQgZDMzZDYyYWI5MWNjYWNmNmUzNzkzYTkxNTg4MmIwNzFiOTEzMzZmMSBweTNrCis4NjIxNSA3M2NhNmRmYjIyYWExNTEzODIwMzg5MTJlMDgwZTY2YzRjMTZiMTg2IHJlbGVhc2UzMS1tYWludAorODYyMTYgMTg1YWI3YzRiOTQ2OTFhODhlZmY3MjM1MTJkZGMxMzQ2OWQyNzVmNSByZWxlYXNlMjctbWFpbnQKKzg2MjE3IDM4NWQyMzliY2JmYTc4MDY2NmIxNTQ3M2IzZDU5NWM3N2JmZTUyNjQgcHkzaworODYyMTggODIyMjE0MTA1NjJiM2RiMDhjZjFkOTMwY2ZhY2RiNzQ1YzczODQxMSBweTNrCis4NjIxOSA0NThiMDVhYmY5ODczZDlhNzZlMmJjM2U3ZDQ5ZDRiODIzYThjMDI2IHB5M2sKKzg2MjIwIDU3MWQzMTdiNGNkNWYyZjNlNjUzMTk4NGI5YTE1MjRmZWUxZGE4YWMgcHkzaworODYyMjEgNWRlZDI1ZTA2YTlhZmJhYzJmYTkwZGQ1ZWQ0NDBmYTM3MDljZTFlNyBweTNrCis4NjIyMiBmOTBlZDM3YWUxNmYwYTQ0MmY0OTllYTA2MWM5Yzg0NzEzYzIwMzk1IHB5M2sKKzg2MjIzIDNiZjg2Nzg1Y2Q5YzVlMzc5MWI1NTJiZGQxMWM5NDk0ZWMwZjU2MWQgcHkzaworODYyMjQgMTBlMDU4MDg5NWVkNDU4MDQyMGE4YTMxZTMyNTIyYzI4ZTE3MTNkZiBweTNrCis4NjIyNSBmZGQzNjgxYjE0Mzk5NjQzMjQ5ZWIzNGU3MWUzZjY2MTFkMGM4MTUyIHJlbGVhc2UyNy1tYWludAorODYyMjYgZTNmZDEyMDViMTA1NWU1ODU2ZTkxNTk4ZDY5MzMwNWE2NjcyOGZkMCBweTNrCis4NjIyNyAzMjA3ZDlmNGQwMGFlZDMyZTgwZDU3ZjgzMjA1NWIwODlkZWY3Y2IzIHJlbGVhc2UyNy1tYWludAorODYyMjggYTA5MGJmNzE2YTY4NzM1Njc5YzFhNGZkMGEzODM4NDYxNDUxYzRmZCBweTNrCis4NjIyOSA5ZDczZjk4MjdjOWY0YTVmOWIzY2I0M2RhZjVjM2Q4MDE3NWY1MDMxIHB5M2sKKzg2MjMwIDUzZWMzOGQzMTk4OGExZDJkNTkxMTIwYmQxNGFlY2UyZjAzOTNiNWIgcmVsZWFzZTMxLW1haW50Cis4NjIzMSA4OTExZjQ3NWFkM2QyZmYzY2RjZDE2MjUwMmJjYzFmZTg1NDE3YTczIHJlbGVhc2UzMS1tYWludAorODYyMzIgOTZkYmIwYzE2OGI2Nzk1MzEzN2U1MDhjY2I5MWVlNzllNTI0OWY5MiByZWxlYXNlMjctbWFpbnQKKzg2MjMzIGFjYjBhM2NjMWUxOGM3MDlkNWI2MzJiMjIxYzA0YjY4MzY4NGMxMjUgcmVsZWFzZTI3LW1haW50Cis4NjIzNCA5Zjg2MjExZjBhNDI3M2JjOTAxYjg2NTVlYzVhNTY5MDBhMmY3NWM4IHB5M2sKKzg2MjM1IDIyMjNhZmUzZWFiYTk0ODA0OTcxOWY3ZjU0NjEwOWJlMDQ2MDE2NDAgcHkzaworODYyMzYgOTZmMzBmZDU0ZTBmZWE2ZmJkYWUzZjk3YzQyMjkxNTM1YTdiNWU4OCBweTNrCis4NjIzNyBmNWRkNGE1NGQ3OWI1MTVmOWZhMjk3ZDU5OTNjODc1ZDFlYjc2ZTQwIHJlbGVhc2UzMS1tYWludAorODYyMzggYTE3YjIxYzI3YTMzODQ3NDkyNzNlNzg1NWIzNDk1ZjZiZWRkODlkYyByZWxlYXNlMjctbWFpbnQKKzg2MjM5IDVkODRmMWI3M2Q1MTAyODJkNTU5NDM2ZjQzMTEzZjNmNzE0OTk2ZWYgcHkzaworODYyNDAgZmYwNzJhYTcwYzFkYTc0YTkxYzE1ZWQwODFmYzgyNjBjMTBiOGYyMiBweTNrCis4NjI0MSBjY2Q5OWQ1NDc5ZGNlNzkxN2E5NTg1ZDBhZjcwNDQ3MDQyYjlkZDk0IHB5M2sKKzg2MjQyIGQ0M2JmMzBmYWY2ZWI4NTAwN2VlZWY3OGI5ZGZkNGNmMTAzMWY0YWEgcmVsZWFzZTMxLW1haW50Cis4NjI0MyA2MzZmZWQ4ZTc4ZDYzZjYyYWYxODIwYjYxZWI2ZjgzOWRmZmVmMDA3IHJlbGVhc2UyNy1tYWludAorODYyNDQgYjU2NDhlMTBjMjNhN2RjMWE4MmRjZGMyOGJlOWM1N2MyMjlmYzVlNiBweTNrCis4NjI0NSAyYjdlYjBlODZkMDdjZGZjNWNhNTFlMzVlY2YwNTJhMTBlYmRlZmYwIHJlbGVhc2UzMS1tYWludAorODYyNDYgZGYzNDk5MWM3ZDBlOTVhYjdjZDBhODQ5NjMzYWIxNzQwNjI3MzI5YSByZWxlYXNlMjctbWFpbnQKKzg2MjQ3IGZjNDgzNzUwNzlhNmFlNjlhMGU3NTczYzRjMTZjNzgwMDZhNzJjYmQgcHkzaworODYyNDggNjhmOGE5NWI1MGM3ZmFlMjZjM2VjMjA4MTBhNzlhNzQ0NWY2OWQxNyBweTNrCis4NjI0OSA1MTE1ZDRhMmQ4OTgyNDYwM2QwZTE4N2EzN2EwZTEzODRiM2Q3MDE4IHB5M2sKKzg2MjUwIDdjYjgwNDM1ODFiNTdmZWZmODM3NzQ0Y2E5NTNjNTY3ZDA1OGIyZmEgcmVsZWFzZTMxLW1haW50Cis4NjI1MSAzMDQ1YWRhMzkyNjkxNTc2MjdiMTJmZjIwZmE3NGYzMDk1MGVlODZjIHJlbGVhc2UyNy1tYWludAorODYyNTIgNmRkYzU3NjM0ZGU1NmVkMzMxYTZiNThhYzFhMmVmYjc4MDk2YzgyYyBweTNrCis4NjI1MyBiYTBhZWM2N2I5OWEwYThlM2ZhZTZmODZjMGZjMWFlZTE5MTA0MjM3IHB5M2sKKzg2MjU0IDg4MzhjNTZiNjk1MjUxZDI2MTY2ODIyY2YzZDE1MTlmMTlhZjZlOWEgcmVsZWFzZTI3LW1haW50Cis4NjI1NSAzYmY0MmQ5MTBkYjhiODc4NzRiYTUwZTNiZDRiNGIxNjA4ZTY1MTc0IHJlbGVhc2UyNy1tYWludAorODYyNTYgZmYxMjU3MTI4Yzc1MGU3ZDY5NGUzMWU1YzlmNDc0NmY3MjQ4NjdiZiBweTNrCis4NjI2MCBmNDU3YzQ2ZjkwOTgzNmM5YzFmZTE4YjI4YTFhNGI4YzNhOWQxNmMyIHB5M2sKKzg2MjYyIGU4NTAyNTY3ZWZhZjQ5ZTNmYWJkYWE5NzJkMzFlZGUxMmY1NjBiYmUgcHkzaworODYyNjMgYmU1NDY5ODA4Y2U5Yjg3NjNhNzI2NDI2Zjk2ZDVmYjNlODA4YjYzMSBweTNrCis4NjI2NCAzODI2YWRjYTdhM2JmNGNhNDE4ODcwN2YzNDFjYTU5YzgwMDc3M2MxIHJlbGVhc2UyNy1tYWludAorODYyNjUgNGZlYjUxZjZmZDc2YmQ5YWFjMmQ0ODlmMTQ0ODgzYWRiMDNlOGQ4ZCByZWxlYXNlMjctbWFpbnQKKzg2MjY3IDA3M2IwN2IzYmRhZWNkNTllMTM2NDNlYzEzYjkyNGZhMDczYmE2OGMgcmVsZWFzZTMxLW1haW50Cis4NjI2OCBkYjY1NzQzZDA2MmZjNWFmMjFjODY0MWYwNWU4M2FmZGMzNDM3ZGZkIHB5M2sKKzg2MjY5IDc2MmI5NDQ1MDM2NzVlNDc1NWEzZmI3MjM4ZGI5NmY3MzEwN2Q2N2YgcmVsZWFzZTMxLW1haW50Cis4NjI3MCBmMGM3ZTJiMTEyNzM5ZjNkZDg1ZWI1MmI4MThjNWRhY2NkNzA4ZWVmIHJlbGVhc2UyNy1tYWludAorODYyNzEgNDM0OGM5YjZhNzJkNmQ5NGI1NTE3NmRjYjBlZmQ5NDRhOGI1MDA2OCBweTNrCis4NjI3MiA3N2I4Yzk1ZjBjMWI1M2MwMTlhM2I0MGQ2MjRlNDg5MTJlNDc5ZDY4IHJlbGVhc2UzMS1tYWludAorODYyNzMgOTdiOTVhZTIzNDhiMmFhNzMyMGNkYzE1ODc4MDkxMDMzNDc2MDA2OSByZWxlYXNlMjctbWFpbnQKKzg2Mjc0IDdhOWRiYTg5YTdjZTg0NmI0OWIzODIwZmU0MThiNmMyNmIyYzQyMjAgcHkzaworODYyNzUgMTBiZGRhMjQyNjU0NTUwZjlhM2Q4OTYzNTMwMGYyMjYxODNkZGRiZSBweTNrCis4NjI3NiBhZjA0YWFlMTkzZmZmNjU5ZTY3YWIzNzY5MzI1MmJkNWQ4ZmQ4MDUyIHB5M2sKKzg2Mjc3IDcwNDI1ZmQ0Nzg1NjUwYmFkNGM3ZjdkZDVhNWY1YzFjNmYzZDY4ZDcgcHkzaworODYyNzggMmNjM2Q2MmYwNjgwODk5M2Y0NTVhOGFjOTI3NGIzZWMwYjhlMzI3NiByZWxlYXNlMzEtbWFpbnQKKzg2Mjc5IDE0OTlkYjk5YzRjZGNmMmRmMzIyNjQ2NzlhMDUzYjMwMzQzYTliZWIgcmVsZWFzZTI3LW1haW50Cis4NjI4MCAyODY0MjRlNzVjZDkyNGUxYTIxNjJiNTAyYWRhNGY4MTlhMTYzYWEwIHJlbGVhc2UyNy1tYWludAorODYyODEgMzdmNDNkZTY1ZDEwZTlmODJmNzYzMTg5MDdiMDY4MmJlNzZlMjcyOSBweTNrCis4NjI4MiBkMDM2MzJjMzY4ZDM3Mjg1ZjFjNmI5ZTBhNWZlNDIxN2NhZDRhMDA5IHB5M2sKKzg2MjgzIDYxYmJkNGI3NTg3NGUyMDg0YzM2ZTgzNGFhMDM0NmY5M2U3YzM3NWEgcHkzaworODYyODQgZjZiOGYzMzZlMDBhYTM3Njc4OTNmYWFkZmY1ZDgyMzYwZGM1MmRmNyBweTNrCis4NjI4NSBiNjAzZDI0OGQ0YWQ5MTEwZDBmZGVhZmI1ZjE4OTc0NWE1OTY1ZWQxIHB5M2sKKzg2Mjg2IGIxYzA2ZmE0OGNjNGIwOTM5OTFhYjQ1YjFmMGYwMTRiNWZhZGU5ZmIgcHkzaworODYyODcgMzI4OTkyYjBlYTc5YWY0ZTg3NDQ4MTRhNjIxYzFlZGIyMjA0MTBhYiByZWxlYXNlMzEtbWFpbnQKKzg2Mjg4IGRjZjE3ZmE4NDgyMTc2ZTc2ZTU5MjE5MGE3MzBlMGJkMGYxNjliYjIgcmVsZWFzZTI3LW1haW50Cis4NjI4OSAzOTc5ZTBjYzMzYzEzMzIwZGIwNDhlYzFjMDRkMDlkZjJhODM4M2IyIHB5M2sKKzg2MjkwIGFkNjQ5MGE1NmQxNThiOWI2ZmQwZWYwY2M0ZjQzNzdiY2ZhZWU1YjQgcmVsZWFzZTMxLW1haW50Cis4NjI5MSA3NDVkMGYxNmRmNzZhOGIwMTBhYjcxNjg4NWY0MGFmNzM0NmQyNzAyIHJlbGVhc2UzMS1tYWludAorODYyOTIgNmU4NDMyMTE2NjRkNzIxNjlhNTc3ZjMzYzg2ZjMyYzBjN2Y1ZGM5YiByZWxlYXNlMjctbWFpbnQKKzg2MjkzIGU0OWViYmQyYzQ5NjFlZDJhN2NlNzhhYzI0YTYyMjljZTE0MTM1ZGYgcHkzaworODYyOTQgYzA4ZjdkNmEwMjMxNjllYjkxYjY5MTc0ODY1MzBhYzIyMjRhNmIwYiByZWxlYXNlMzEtbWFpbnQKKzg2Mjk1IDUzODRlNGU0NjM3NGRhZDViYmNhMjZjM2E0OWQ5ZTc0NTI2MTg5MzcgcmVsZWFzZTI3LW1haW50Cis4NjI5NiAwNTQzYzAyZTk0MWMxMDI0YzYzMzMwYjQ3Y2QyZWE5NWZhN2ZiMDQwIHB5M2sKKzg2Mjk3IDIyNjJmNmM0NGViY2E2NjkzNGFmNDQyYmMyOGE2NTkwZjQ2OWM0NGYgcmVsZWFzZTMxLW1haW50Cis4NjI5OCA4ZjA5ZWVkY2Q3MGEwYTg5M2U4NzNmZjU0ZWQ4MDE4ZmIxNjc5MzgzIHJlbGVhc2UyNy1tYWludAorODYyOTkgZmRjYWFjMGUwMTBhMDM1OTkxNzcwZGQ5NzI5NDM4ODgzY2Y3MmYzMiBweTNrCis4NjMwMCAzMzU0MjNkNzM2YTdmZjQzYjFmN2ZiZTExZDBlYjg3MDM1OTNlMmUyIHB5M2sKKzg2MzAxIGU4ZjFlZjVmZDQyMzgzOTY3YjUzMjM4NGZlMjFmNmQwYjUyNDJmNjIgcHkzaworODYzMDIgNDE4ZGNiMWM0NWY3ZmI4MDFkZjU4ZDYwMDUzMWQ3YTkxZDc2ODdlYSBweTNrCis4NjMwMyA4MDQ3M2FkNjk3YWMzMDY3NTk3ZWNmMDA4ZDM0Y2YyNjZhMmQ3MTRhIHB5M2sKKzg2MzA0IDgxNTRkYjhhMTU5MzNkYjVkMjYwMWU4NmI2MmZmMzlkNjdlNmU5MTUgcHkzaworODYzMDUgZjgyMDhjMzM5NzhmOGY0ZjdmZDM1N2M0YTBkNWY4NjAyZTVlZmExMCBweTNrCis4NjMwNiA4OGQwNGYwMTQzYzcyNzZlZmFiN2YwOGU5NjFiZGIzOTg3OWM1Zjg3IHB5M2stY2RlY2ltYWwKKzg2MzA3IDg1NWExMGVmYjEwYTI5YWZlMWQyOTRiZmNmODlkMTc1ODJmZWJhNjIgcHkzaworODYzMDggNzZiYzcxOGZlN2M5MmE5ZTczMWEzYjY4Njc4ZTUwN2E3OTg3MDIzNyBweTNrCis4NjMwOSAzZGIxN2E0OTRkYzk0ZDI1NTZlOWZiMzRiZjE0N2JiNWYzZjc1YTBhIHB5M2sKKzg2MzEwIDNjMWJmZTU0Y2QyMDk2YTE4NmZkYTc1NGFjOGE5YWM4OTc5ZjhmYTkgcHkzaworODYzMTEgNmQxMjk0YWRmYWY0NDA5YzA3OGZhOTNmNDUzNmZlZGMzYmIzMGFjNyByZWxlYXNlMzEtbWFpbnQKKzg2MzEyIDk2YzgwZjQyYmNlNmNiOTdjMTBjNDJhMGMwYzE4MGRlZDdjNzM0ZjUgcmVsZWFzZTMxLW1haW50Cis4NjMxMyBkNTViN2QwYmM5NzM3ZmMwNmYxNGRjMTdlNjA0MTdkYWQ1NzM1OWEwIHB5M2sKKzg2MzE0IDA3NDUzM2E3NTk2MmUwYTIwZDBjNjFkNjAxZGI3ZmU5NGI1ZTFjZWQgcmVsZWFzZTI3LW1haW50Cis4NjMxNSAxZmZiZDY3NTNhMTU0MzdhZDQwNWRmY2RjZDRmMGY4N2QyYjExZTFjIHB5M2sKKzg2MzE2IDI5NDhkNWZiMWViZWI1Zjk4YTE5MGM5M2JmNzczODdlNDQwMGI2ZWUgcHkzaworODYzMTcgMmQ2ODI0ODg0NDM1YjdiNzNiNjI4NmNiZmI0MDk2ZTFiMTFkYjE0MSByZWxlYXNlMjctbWFpbnQKKzg2MzE4IGE4YWFjZGI0NTIwZTE2ZThjMWY5ZDVhMjFhZGNlYmYzNTVkZDViMGYgcHkzay1jZGVjaW1hbAorODYzMTkgYjBkZTBjZThhNzI2NGI0OGRiODMwYjljZGQ1NmEyNmYxZGYyZTUyNyBweTNrLWNkZWNpbWFsCis4NjMyMCA4Mzc4ZWI4MDc3NDZiYjFlMjdjNmMzMjliZmI4MzdlNDBiMWI0NTY5IHB5M2stY2RlY2ltYWwKKzg2MzIxIDE2OThiMGY2NDBiNjRlNWUyNDAzMGIyZDYxZGRhZmNhODYzNTM4ZWMgcHkzay1jZGVjaW1hbAorODYzMjIgY2EyYjkzN2UxYThkMTI2NWVmM2M2OTFmOTExNTk5ZGQwY2VkZjdhMiBweTNrLWNkZWNpbWFsCis4NjMyMyAyYjFmODRhNGFkMzNjMTVmNWRhMmY4ZWRmMDM0ODI0YjJiMDc1MDRhIHB5M2stY2RlY2ltYWwKKzg2MzI0IDA3MDM2ODE3NWIyNDljNTc0ZTU1Njk1NmY0YjEzZWFkMDc1Mjc1ODcgcHkzaworODYzMjUgM2JkNzMxMTNlODEwN2FlNWEwZTcxMGE0YzFlMTY0ODViNzJhYThmMiBweTNrLWNkZWNpbWFsCis4NjMyNiA0MjcwODBmMmFhYjVlZDM1YTNmMjMxNmY5M2I5NzkyZWNhNDllZGM2IHB5M2sKKzg2MzI3IDNmMTAzNGI0MzQ3ODNjNDAyMGM3MDVjZWRjNzkwMzAxZjM1YjAxZWMgcHkzaworODYzMjggZjNjNTMzODU3ZmFiYmI3OTZkMzNjN2MzODcxNjU2MjdhNzFhN2UzMyByZWxlYXNlMzEtbWFpbnQKKzg2MzI5IDBhZDZhMGQwMTQ5YWE4MmEyNTIwZDE0MzExODEyM2IxMzQ3NzEyNDcgcmVsZWFzZTI3LW1haW50Cis4NjMzMCBkNmQ3MWQ0ZDZiNjUwNmI3NTgyYzc0YzRlODhlMzEyZTFjODkxNzM4IHB5M2stY2RlY2ltYWwKKzg2MzMxIDE4Y2JhYmE2MWZhNTY0NDNiMjAzYjE3MjQ4YTg4ZjRmZDRkYTBlOGQgcHkzay1jZGVjaW1hbAorODYzMzIgMDBiYzNhZjg5YjdjZGExNTY0ZDNhMWVkM2Y2YjU3NjFlY2QyZDBiMCBweTNrCis4NjMzMyA4YWIxZGUwODEzYjNiZjc0NjM0ZjY4ZmE3OTQ4MGY3ZTAyODFkMDUzIHB5M2sKKzg2MzM0IDc4ODAzY2YxNGE5NGFmYjNjODRkMzIyOTY5NmJjZTRlZmQwYWIwNjggcHkzay1jZGVjaW1hbAorODYzMzUgYWQ2NDhmMmI1ZTAwMDVkZjJhNjM0MmYyNzNjNmVjMDQ2NGY4MmFiNyBweTNrLWNkZWNpbWFsCis4NjMzNiA0NGNkMDQwZGRhNTY2NjI1YTk1NTE4ZDNmMTkzZmQxOGNmNjRlN2ZhIHB5M2stY2RlY2ltYWwKKzg2MzM3IDQyOGI2MTJjYjA3NmQ4Mzg4N2Q1NDM3ZDU2ZTFmYzQ5OTgyNTY3MDYgcHkzay1jZGVjaW1hbAorODYzMzggYmFiN2U3MDNlM2VhOWQxMTQ3MmIzMDRjMjRhODViYjA3NTI2NTY0YyBweTNrCis4NjMzOSA1NmI2Y2NjYTFkNGNiNWM3ZTU1YTY2NDczZTYyYWIwMjgzODdjNzBlIHB5M2sKKzg2MzQwIDkwMDgxMWY2NzA1ZDc1ZTQ0MzIwM2U2YzUxNzA1MTRiOTdiZGIwNzEgcHkzaworODYzNDEgMWI1ZjQ3ZTJlMGYwMzBmMTRhODE1ZjY5NzFmYjlkNzgzMzYyMDM2YiBweTNrCis4NjM0MiA2YTJiOTExN2Q0NzdiNzYwY2EyZDBmYjRjZDNiYmQ5MGYxNDk0YWFlIHB5M2sKKzg2MzQzIDc2YTFjNWU4ODM1MmY3M2QyY2FmNzQ2ZWVlNTAxMmU1ZDZjZjRmZjMgcHkzaworODYzNDQgZmMzYjEyZWJmYjlhMmI0M2MzZGIxZTVhZGE0ODFhM2E2YmQ0NDBjMCBweTNrCis4NjM0NSA3NWUwMmZkYmQzM2U2Y2NiMjM5M2NkZmRiOWQ1YWE2MGMxYzdhNmFmIHB5M2sKKzg2MzQ2IDMwNjMzOWMzMTc1ODY1NjEwMzg5NjZkOTViNGZlNDE1MzEyYzY0NjggcHkzaworODYzNDcgMzIzZDQzZTg5NTNhZjkxYzk1NGU5NmFhNzQ5ODFmYjdkZjI5Yzg1MiBweTNrCis4NjM0OCA5YTY2ZmViMDdhMGFjMTJhYTZhZGMwZjgwMjgyNWRjNTE1ZDczYzk5IHB5M2sKKzg2MzQ5IGIzNDdiNWNkNDExMjY5ODM2MjRiNzE5Njc2NjE3MjQxZGZkZDU2NWYgcmVsZWFzZTI3LW1haW50Cis4NjM1MCA2NDBhMDhlYzhmYTI5NGM2ZGRiMTg0ODE0YmFjODY1MTJhMDljOGE2IHB5M2sKKzg2MzUxIGI2ZGE5NzkzMGY2MzFmYWNhOTk1MmMzNGY1YTI2MTM2MmQ0ZWUyZGQgcHkzaworODYzNTIgYjQ5MzhjMzRiODAzNjBjYzdiMTQ0MjRlM2IyMzEyNWIwYTZmNjkzYyByZWxlYXNlMjctbWFpbnQKKzg2MzUzIDQ0OGFiNzUxNmMwYTA2ZDZhODkyYjFhYzVjYmExOTU2ODBlYjZiYmMgcHkzaworODYzNTQgNjQ2ZGZkYzQ4Y2E4NmYxMjkyMTA1YWVmZGNjZGY3MzQ2NmFmMzE1NCBweTNrCis4NjM1NSAxOTRmMzBkYzQ3MDM0NTk0MTVkOWZjNDVkN2RlMGRhODFhNWMxMDMzIHB5M2sKKzg2MzU2IDk0ZDBjY2I2M2I0NjRjY2ZmNjAyNGE3NDc1OGNhMzUyNzJiNzJmZmQgcHkzaworODYzNTcgNzRmYTYzYWFiM2ZkNmM3OTdkMGVkYjI2MjY2ZWQzNTk5YThmMTNlMCBweTNrCis4NjM1OCA2ZjJhOTIxZDk3MjAzMTU4OTU3ZjRkZTE2ZWQ5Y2FhOTNmMTgwYTE3IHJlbGVhc2UzMS1tYWludAorODYzNTkgNDBlYjBjOWEzZjkyM2Y5OTRlODNjOGI1NGU1YmMxZDAzYmZlYjBmNiByZWxlYXNlMjctbWFpbnQKKzg2MzYwIDg2MThkZjZlY2FkZDliNjY2OTA3N2NmNjA5ZDM2ZTdkZmEyMGVjMGUgcHkzay1jZGVjaW1hbAorODYzNjEgZmU5Y2Y1MzUxMTkwMjdiN2YxYTdlMWE0NWJiN2VkYjg3NDBjZTJhNCBweTNrLWNkZWNpbWFsCis4NjM2MiA3MzY3MmU0NDVjYzkxMzIzYTE3MDYzNzMwM2JjMDlmMWRiZWFjYjQ1IHB5M2stY2RlY2ltYWwKKzg2MzYzIDdhODQwYjZkMmYyMjQ5NzVjOWU3NzdmMzdkYjA5ZGZjYzgzMWQzYTcgcHkzay1jZGVjaW1hbAorODYzNjQgNjAwMDU5MTRkZmM3NjBhODIzMDkzZjYwMWM5MDQwNDUyZjU3ZDhlMCBweTNrCis4NjM2NSA5YzA5ODU3YmRhMGI0OWQwM2Y4ZDBkODc1MWJmYzkxZWExZGEwODMwIHB5M2sKKzg2MzY2IGFmMjZiYzA5NDk1ZTNjZTE0YmY1MjliZDE1NmM0YTlhMGE5YjM3NDEgcHkzaworODYzNjcgMzEyYWQ4Zjk4ZmUzNzE3ZTVhOGE4N2JlYWRhZDI2MDhkZjhjZTRjOCBweTNrLWNkZWNpbWFsCis4NjM2OCBlMzNmMTZjYTllY2ZkZjY2N2Y0YmY1ZjRmODVmM2Y1MWFjZmYyMWViIHB5M2stY2RlY2ltYWwKKzg2MzY5IGVlZWJiNjIyZmQwOGY4NTAyMjUwZjAzMTJlZjk0MDQ4MTM4YzVlNTQgcHkzaworODYzNzAgMGFhOGFmNzkzNTlkNWI1MGM1OTQwY2ExZDhmZTI2ZmQwYTZkNGE1YyBweTNrCis4NjM3MSA4ZjVkMmI1Mjc2MzRhOGMxZjJlMzIyY2E0NmMzMDAwNDEwODU5NWY2IHB5M2sKKzg2MzcyIGJiOWU0N2M5OTFiNDE4MmZjYjJjMDM5MTBmNTY1YzMyMzRiNmZiMTYgcHkzaworODYzNzMgNjUzNjRjNDRlMjk1OGU4ZWVjN2Q4NzNjOGZiMGYyY2RjY2M2ZjJkMiByZWxlYXNlMzEtbWFpbnQKKzg2Mzc0IGQwZmMxMDY2MTdlMmE3MDU3NDgxODQ5YjY1YjM2MTgwOTJiZTBhOGIgcHkzaworODYzNzUgYzRkY2JlNTFjMmUzMzhjZTViYjdlNjk4YTBiMzRjMjFiNTUyNDRkNSBweTNrCis4NjM3NiA5ZmE1MjQ3OGIzMmI5ZmE3ZjljYWEyMThiOTQ4M2JlMDQ0MzlhNGVmIHB5M2sKKzg2Mzc3IDU1N2JiZjZiM2Q3MGFjODIxOWZhNmMwMDU2OWJmZDY2M2MzNzJlMzEgcHkzaworODYzNzggMmRkNTE5ZTU5OWNjMjNkN2Y1YWJjOWFiMTk1YWQ4ZTI5NDFiYjhhZSBweTNrCis4NjM3OSA0OTE5NjQyNmVkMmYxNDMyMjU4NTUwOTBmYjZhMGNlNmU2OThmNTRiIHB5M2stY2RlY2ltYWwKKzg2MzgwIDE2YTQ2YjZlNzA1NDRhMTQ5OTYzMGQxYmQ2NjRlMWM4ZjEyY2FjN2EgcHkzaworODYzODEgZjAwNTAyZjU3YjI4YWU4MGQ4NGYyZTljYjY0ZWEzMjQzYjdhNjgxNiByZWxlYXNlMzEtbWFpbnQKKzg2MzgyIDZhMjgxZjA0MGJiMTM0ZjIyYzVhMTgzZWRmOWZlYmM4MjIwN2ViYzEgcmVsZWFzZTI3LW1haW50Cis4NjM4MyA1NzQyOGUzMTIzYWNjMzQxYzY2NTNmZWU3Mjc3NDFlODJlYzY2MDIwIHB5M2sKKzg2Mzg0IDFiMTZiZDJiZjZjN2QwY2FiY2MzNTgxZTNjNzQ4Mjg3OTBkYWFiMDAgcmVsZWFzZTMxLW1haW50Cis4NjM4NSBhZTkyNmVjY2RkMGVkMGNhOTAyNDFkOWJmNDE1MmM2YjdlYzE0YzA0IHJlbGVhc2UyNy1tYWludAorODYzODYgMTgxN2ExNmQxZWFiNmE5NjBkZTc3YmJlNjdiNjI2ZjQ4M2RhZTUyNSByZWxlYXNlMzEtbWFpbnQKKzg2Mzg4IGViNGEzNDdiOThjMTZjZGMzYjFmMTlhMzQzOWNmOGYzZTk2NDhmZWQgcHkzaworODYzODkgMTgxN2I3MDg4ZDhkZmVkMWQwMGQ2ZjNkMjNhMzNkNzAxNmFkYjdlMyByZWxlYXNlMjctbWFpbnQKKzg2MzkwIGY5M2ZhYmRiODdhYjQxODMxMWVlNTBmMDNiYTFjNzg1M2VkZTNkYmUgcHkzaworODYzOTEgZTAyNzU4ZTU1MmU5MjU3ODhlZDdmNGMwZmU1ZTc2MDIxYTFmNzlmYSBweTNrCis4NjM5MiA5NjFjOWU4ODIxZGQ1ZGI1NWM1ZmQ3MjI2MDE1NDcxNTMzMjg4MWFiIHJlbGVhc2UzMS1tYWludAorODYzOTMgYTViMzlkODlkY2NiNzA2MGU4OTQ1NjczOTIwYjhiMDY0NDU4YTMyOCByZWxlYXNlMjctbWFpbnQKKzg2Mzk1IDA2Zjc2ZWYyN2Y4NmMwNGIyNWFiMTc4NGVmYzlkYzljZjA4OTc0NzggcHkzaworODYzOTYgZGVhNGY3NjQxOTQwZmUzZDlhMzM4MjBmMjQ2MjExYzkzOTBkYTYzNiByZWxlYXNlMzEtbWFpbnQKKzg2Mzk3IDc0YTU4OTRiOTUxMzRmMDg5ZWY1MzUyNTlhYzJjZmIzNmMzYmI1ZGYgcmVsZWFzZTI3LW1haW50Cis4NjM5OCA4ZTZhMWNkMWY0MmJmM2Y3MjAwZTFhNGEyMTU4OGE3MzQyMDczYzE3IHJlbGVhc2UzMS1tYWludAorODYzOTkgN2NlYzBkZDM5MWQ2OWY3MzZlM2I2ZmU1M2VlZTY1ODc2ZjBiMGNiOSBweTNrCis4NjQwMSAzMWIxYWEzMDMwNmM1NjNkMDY0OTJkYTA5NWVjZDA2OGM1NjJjZWU4IHJlbGVhc2UzMS1tYWludAorODY0MDIgZTU0NmY3NjA1Y2YxMjMwYWIwZDMzMzQ2NWViNTQ0Njg2OGFmMzZjNSBweTNrCis4NjQwMyBjNWUwNDlmZDgxNzBjOGE0YWNiMzExMTRkYWYzNWE2YTFhMDg5ODIxIHB5M2sKKzg2NDA0IGFhZmNkNWUwZmFmMWJmOWVjOGM4MDBhMTM4NGJiNGVlYTg4MTJkZjQgcHkzaworODY0MDUgNjdlYjNmNTNkZWViOTI5YzgzN2U1NWQ4ZDRhM2FjMjI2NmJjZWQwZCByZWxlYXNlMzEtbWFpbnQKKzg2NDA2IDViOWVjNWFjZGFjNDI3NGFkNDRkNmFmODBhYWQ1YThlNWRhMmZhMzYgcGVwLTMxNTEKKzg2NDA3IDc3OTM3N2YzMDc3ZDllMDYxZTY0ZjdiOWM0ZDRlYjZmODYyMGEwZDQgcGVwLTMxNTEKKzg2NDA4IDcyM2VkMWI3Nzg3MWJhMjFlNTQ2NTRkZjZkZWE2NDIxNmY3MWFjNTUgcGVwLTMxNTEKKzg2NDA5IGI1MjJhYmZkMmZkZTcwMDQ0YzIwMzc4Nzc4MzgwYzdlZTg4ODE1ZDMgcHkzaworODY0MTAgOThiZDNjYTFlZDg2MzZmOTZiNTEzYmE0NzQ0MWJkYjdkYjQ1MGVhNSBweTNrCis4NjQxMSBjNjlhYTA3MjgyYTg4YWU4MmNhNjc4ZGZiNTI3OGI0MjA2YjQ3ZDllIHJlbGVhc2UzMS1tYWludAorODY0MTIgMTJkYTVmYjgxMTM0MDE4ZmY4OGU3MzBkMjYzNDBiZjhlOTIxNGYzYiByZWxlYXNlMjctbWFpbnQKKzg2NDEzIDU1NzJiODY5NjdmZjc2ZTZiMjhkNTFmMTIyNjE5NDljZmRhNjA4ZWEgcHkzaworODY0MTQgODU3ZDlmZTYwMTY5ODI2M2MzZGNiNDYxM2Q0OWI2OGMyYzYxY2IxMyBweTNrCis4NjQxNSAxNjZjN2JlNzJlNzhhNjYyNTZkZjEwNTNiN2E1YTYyMDViMzEzYzZjIHJlbGVhc2UzMS1tYWludAorODY0MTYgZGYyZWJkZGMyOGM2MzJiMjJmMmJmODRlY2YyNzA5OWJhNmM1Y2YyZSByZWxlYXNlMjctbWFpbnQKKzg2NDE3IGMzZDg1ZDJhZTFjODdhM2Y5NjllYzlhODczOWVjY2E3YTg1YzdiYzYgcHkzaworODY0MTggMWE2NTI5MGU2ZDAzNjA1YzA2MTE3OTlmZDAzMWRiZmMxZTZkNGEwZCByZWxlYXNlMjctbWFpbnQKKzg2NDE5IDUwMzA3YTc5NTQyNDUyMDM4NjhlNjMwMDQyNWE2M2I5OTA3NGJjZjQgcHkzaworODY0MjAgMGExYTRjNDQ0MzgxNjgxZGVkYmI0MTkyZDFlNjEzNWE0ZGE0YTg4YiByZWxlYXNlMzEtbWFpbnQKKzg2NDIxIGJlNTBjOTFlNmRhNTNmNDFjYzU5NGZkNjQwODEwMWNjODVhYTg3NmEgcmVsZWFzZTI3LW1haW50Cis4NjQyMiA2MmFiMzllZmUxYzRiNDk1NmE5NzhhMGNkOGIwODA5MmViNjI5ZGYwIHB5M2sKKzg2NDIzIGVjNDIxMTJjMjEwMDliYTNlNzAyYzk3OGQ4NzYzNjRiMzdmZmUxMTYgcmVsZWFzZTMxLW1haW50Cis4NjQyNCA4ZWIxYzllODE4N2JkODUwNDE0NWRmMWIwYTQ5NDQ4YWE5NWI4ZjZmIHB5M2sKKzg2NDI1IGM5ZDNlMTJiY2Q0MmU2ZTlhOGY1ZTU2NzgzOTU3MGU1MzE2MmM1ZDUgcHkzaworODY0MjcgMDUwOWVjZGZmOGFlN2M5NTg1MjIzZTE4NDljNTM0ZTg3MWFmMzRhZCBweTNrCis4NjQyOCA1NmZiMWU3NzY3NDg2MTg0MmI3MzQyOGZjMWZjMTA3NzdlYzkxMjY3IHB5M2sKKzg2NDI5IDAzMjk2MzE2YTg5MjMxYzY4ZWY2YmFhYmQ4ZjdiNDhiNzBiYWNjNWIgcHkzaworODY0MzAgMGEyN2M5ZGI5YWM3OTMzMWEyZWI2ZDg4ZGU3N2IzNDZiYTRiZmM5ZCBweTNrCis4NjQzMSA4ZDY1MTY5NDlhNzFkMDc1ODU1Y2U5MmE2Yjk2ZTU5NTQyZjQyNDY5IHB5M2sKKzg2NDMyIDEyNjEwMmJhNzQ4ZjhmM2YyZDZkYmEzN2U1ODZhOWY2ZjRmMzM5MzEgcmVsZWFzZTI3LW1haW50Cis4NjQzMyA2YWE3NzgzZWEwZTllNmEzZGM1ZTVhOWU1OTdlYmU4NTM5NDgzMzNlIHJlbGVhc2UzMS1tYWludAorODY0MzQgZDJlZjg4ZTcxYjRhYzlmNzQ0ZWM5MTdmOTI2NDVjMGQxYzA4Yzg2NiByZWxlYXNlMjctbWFpbnQKKzg2NDM1IGUyZWY0N2JjMjgxZDQ5ODMyZjQ2YWM0OTQ0YmFjNzkzY2EzODY3OTggcHkzaworODY0MzYgY2U0MTI3ZWM1ZWViN2RhZmRlYjBjMDI2NTE1NGVmMDFmY2ZlN2JiYiByZWxlYXNlMjctbWFpbnQKKzg2NDM3IGY2ZTgxM2I0OGFmM2RhY2FlN2I2MmQyMmI5MDhlZGM0ZDA4NWEyODcgcmVsZWFzZTI3LW1haW50Cis4NjQzOCAzZDU0OGI3MWQwODI4MWNlNTgyNzM0Y2YyN2ZmMDE5MzExZmFjYzBkIHB5M2sKKzg2NDM5IGMyMWFlZjNmZjVlMmYzN2M2ZWUxZTA0N2JhZjczMTlhMzU4NGE2YjUgcmVsZWFzZTMxLW1haW50Cis4NjQ0MCBjYTBlZGE0MDAyMTQ4MTQyNmIwYWEwMTNkYTgxN2ExNzliZTc3ZTAzIHJlbGVhc2UyNy1tYWludAorODY0NDEgNWFjZTFkYTMyNzVlOWU4MGZlM2YxNjAzYjlmYzk2N2UxMjhhNDE5NSBweTNrCis4NjQ0MiAwMzI0NjI0NzllMGJkMzJhZmU2Nzg3NDFjNDM4YWE1ZDdjZGFiMjYyIHB5M2sKKzg2NDQzIDVmZDkxN2Q0MWM5YzJkMzdkZGQzZjg5ZDhkZDlmNTFkZGI5MTZjMDkgcHkzaworODY0NDQgY2FiYzc2MTE1NDc4NDk5ZjQ0MGRlN2RkODIyZjBlY2E0YWU3ZmE2NSBweTNrCis4NjQ0NSBhODNkOTg4OGEwZDlhYmEwN2QwNDZhZmJmYmE5YWExNjEwNTAwMzg2IHB5M2sKKzg2NDQ2IGQxMmI5OTM2MjlhMTY3ODE5YTNhOWI4NGMzYzMwMTIxOGYzZDk1ZjYgcHkzaworODY0NDcgNmJkZDMyY2I1NWE5YTJmMGZjODRhODIzZTc1MzdmMDBkODI4Y2UwZCByZWxlYXNlMzEtbWFpbnQKKzg2NDQ4IDRjNGZlNzEzOWM2OGUyMWJiZmE0ODIxMzRmNTQzNThhMzZkZDY0YjAgcHkzaworODY0NDkgYjExYTg0ZGU0NDkyNWRjYjk2MjdlMWNjMTI1OWIwNzYxNzZhNjZjOCBweTNrCis4NjQ1MCBjNmIyZjQxNzgzMGVhYjQ1NjVkOGJiZTc4NTMxMzY1MGE4YjZjNjY0IHB5M2sKKzg2NDUxIGQ5MmE1Yjg1MGY1ZTU2ODA4YmVkYzAxNzIzOTA2ZWQ2NGM1ZTZlMmUgcHkzaworODY0NTIgZDllNmI4YTc3MDcwNTJiZDQwOWVkNDZmODc0Njc1NmVmNTM1OWQxMiBweTNrCis4NjQ1MyBkMThlOWQ3MWYzNjlkODIxMWY2YWM4NzI1MmM2ZDMyMTFmOWJkMDlmIHJlbGVhc2UzMS1tYWludAorODY0NTQgZDVlZTk2ZTdhY2ViYjNmYjUyMGFiMzgzODE5YTRmZDEwYzZhNDU3YiByZWxlYXNlMzEtbWFpbnQKKzg2NDU1IDYzZDlmMDBmZWEwNzMwYzFjNDM3YTUwZjY0YTQyYjc3OTJiZGNiZmIgcmVsZWFzZTI3LW1haW50Cis4NjQ1NiA0ZDQ1YTRhZjMyYTk2ZjcxOGMxM2Y3OTI3NDJlMjYzMDEzM2JjM2FhIHJlbGVhc2UyNy1tYWludAorODY0NTkgNTAyMmU1YjczYWQxOTdjMTY2NzY1Y2U3YzBhMjA0NjVhNTQxYzM3MiByZWxlYXNlMjctbWFpbnQKKzg2NDYwIGNlMzg4ZmIxYmUwMWY5MjE5YjVmODQwNjZjOTk1MzFlMWMzNGQyMjMgcmVsZWFzZTMxLW1haW50Cis4NjQ2MSAwZjM5ODE4OGM3ZjYwNjEwMDI0OWJkMGY5M2M0YmU1NDU2YTg5MzI3IHJlbGVhc2UzMS1tYWludAorODY0NjIgYjdkMDJhZTQ1ZDE1MzUxNzQ4Yzg0ZjU4OGNhZmQ5ZjJlODBiMGRlZiByZWxlYXNlMjctbWFpbnQKKzg2NDYzIGZjYWJlNDdmZTFkZTUwNGYwM2ViY2Y2ZWFjZDQzMjk3YWI5NzZjNzAgcHkzaworODY0NjUgMjRmYzhjODUyZDEzYTQ3NjU2NTFiZTc2ODg2MjI4Yjc5Y2U1ODJjNSByZWxlYXNlMzEtbWFpbnQKKzg2NDY2IGI0NWVhYmM3YzAwNDZjNTE3YzQxNGIxZDliMGFkNzg4NDcwNmQ3YTAgcmVsZWFzZTI3LW1haW50Cis4NjQ2NyBiYTAxNDU0M2VkMmMyMzVjNjY0ZmVhNGEyYTc1N2NjOTUxMGU5NDYxIHB5M2sKKzg2NDY4IDY4MzMyNzEzNzM2NTE0Njk4Mjc5ZGIyMTRiZTYzODBlNGEwOGMxYWEgcHkzay1jZGVjaW1hbAorODY0NjkgNjI4OTU5ZmI0MGMzMzlhNjkyMWZlYjYzNzQ2NTMyNjk2NTI4NmNhNyBweTNrLWNkZWNpbWFsCis4NjQ3MCBlNDVkMGJiNzgwZGNiM2NmMjBhYWZkMjJkMTE0N2NlZjNmNTBmYjc1IHB5M2stY2RlY2ltYWwKKzg2NDcxIGY3MjNhYTE1N2E4MmQ5NzY3Mjg5ZTg2MjU0NjhmMmM0OThlNmIzYzkgcHkzay1jZGVjaW1hbAorODY0NzIgZGEwM2M2NTA1MjQwZWFlYmUyMTkwZjgwNTRiOWFhOTVkNjNiZTY2OCBweTNrLWNkZWNpbWFsCis4NjQ3MyA2OWM5MTMxYWEzMjI0ZTc2N2Q4ZDc2MjE2ZDlmMjQ3YjBiNWFlOTI3IHB5M2stY2RlY2ltYWwKKzg2NDc0IDMzNTgyNzEwZTAxNDFmZWMwNGE5YzZiOGMzNmJiYmYzODM4ZjI0NjYgcmVsZWFzZTMxLW1haW50Cis4NjQ3NyA5OGM4ZTc5M2MwYjNkY2NlZmE0ZTViZTBiZjE4NmI0YWI4YjRkMDllIHB5M2stY2RlY2ltYWwKKzg2NDc4IDBkZjZhYzYyMjcyYmE5NWQyMmIzZTVjODI3NzZlMTc2MDQ4ZDJmM2MgcHkzaworODY0NzkgNGI4Y2VkNWZlZmI3NDZiMzgzM2I2ODlkZGI3OWY2YzU3YTM5N2FiMiBweTNrCis4NjQ4MCAzNDYyN2RjYTIxOTZlZDhjMzIzNjNhOWVhYTBlOTA4Y2E3MGZiZDBkIHB5M2sKKzg2NDgxIDUyZmU2MDIxNmU4OTMyMzIyMTdhZGI5NzM4MWQyYzJjMjk4MTIwZDAgcmVsZWFzZTMxLW1haW50Cis4NjQ4NCBhZTY2MTBjYTkwYTE5Y2Y2ODMxOWMxMGY1NTI0OWNjOTg5MGMzZWY3IHB5M2sKKzg2NDg1IDU1YWJjMDk2NWU5ZDc2NWQzMDMzNmFjYTI5YjIwYWRiNWFkZDBmMzIgcHkzaworODY0ODYgYmIxMjM3NGM4ZGM2ZTdhYzE1MTAwZjAwNzM3MDM1NzYxNTFiZGQ0OSBweTNrCis4NjQ4NyBjNGZlNGIxMzAwZDU3ODk1MzE1MGRkZjFiNzNhNGZjMjc2OWMzYWEwIHB5M2sKKzg2NDg4IGVmMWRiN2Y1YzhhOWYyMTA1NWIzZjM4OTdjYmRiZWI0OWFmNDdmMGMgcHkzaworODY0ODkgZmY2YjJiZjc1ZDgxMjY3MWFkY2I3NTllMDU5YmQxMzkxOGM2NmEyZCByZWxlYXNlMzEtbWFpbnQKKzg2NDkwIDQ2NzlmYmRmYzgxN2Y2NmIxNWE2MzBjYjQ2ZGQxY2YxZTkwM2RlMjIgcmVsZWFzZTI3LW1haW50Cis4NjQ5MSA1ODZhOTJjZjRjYzdmNDczNThhYjk5OGM5NDlkMDYyZWY3NTJjOThlIHB5M2sKKzg2NDkyIGM5ZmIzMGZkMWYwYTVjYWZkMjJlMjZhYTRhMTkxZmQzMDcyZGU4NzAgcHkzaworODY0OTMgMGQxYjY2MjMwMjQ3YzU1Y2UyOGJhZjA0MzQ4MDEwMGY5YTQ3MDRmMyBweTNrCis4NjQ5NSA1MmJmNzlmZDZkNmM2ZjRiNmE2MjliMzJhMjQ4OGNlY2YyYzJlNDVmIHB5M2stY2RlY2ltYWwKKzg2NDk2IGQ1NGM4ZjE2YzUxYzJiZjVmZmY0MmYyMjUzYzI4MzRlZTJhNWE0ZjAgcHkzay1jZGVjaW1hbAorODY0OTcgYmQ2OGNlZjRmMWVlMDk4OGRlMzk5ZGRkYzgzM2I2OWQzMjgyYzc2OSBweTNrLWNkZWNpbWFsCis4NjQ5OCA3ODI2ZDkwN2I3NjViZDNlMjY2ODE0MzRkNzJhNmVkYjQ3ZWU1MTFkIHB5M2sKKzg2NDk5IGQ4Y2M5NWQ3ZGU2MmExZmJlNWViZmU2N2E1MzVkMzBiMDU3N2YwODMgcHkzaworODY1MDAgNzVhODJmZTI3NGE3Yzg2ZmU3YTU2NjJhZTIzNDgwMDIxNDdiYTkxNiBweTNrCis4NjUwMSAzNzkwMjk3MTRlMjQ1OTg5NzEwNmEyMzU2NmNiODA4NWNkODdlMDNhIHB5M2sKKzg2NTAyIDk0YmJjZWNkOTU4MjU3ZGIwYTFkMjMwNWYzNzA1ZjA2ODQyYzFlZWQgcmVsZWFzZTMxLW1haW50Cis4NjUwMyA1MmU1MTk5YjY1MTMzZTA1NjNjYjAxYzI3MTQ1ZGE0MDI0MTRhYTEzIHJlbGVhc2UyNy1tYWludAorODY1MDQgYjQxNDA0YTNmN2Q0MTliMWFmMjRjNGM0ODc2YzhjNjY0NGIxZjM2NSBweTNrCis4NjUwNSA2NmU4ZDM1ZDcxZmRlYWZiNzgxYTkyOTU3ZTFhMTBiZDNjZjgzOWM3IHJlbGVhc2UzMS1tYWludAorODY1MDYgY2RjMzlmNmJlYmYxMGJiZGY3NTUyZGUxMjZhMjQ2ZTkyMDQ2OTY2MyBweTNrCis4NjUwNyBhZjEzZmI2ZmIzZGY3ZTRhNmQ5ZjViZGI2MTliZGZhY2JkOTJkYjQ0IHB5M2sKKzg2NTA4IDE1YmQ1MGVlMmM0YzNlOTg2OGFjYzljNmM2NTMwMWJlYWYxNDRiZmYgcHkzaworODY1MDkgODA1YzI4ZGQ2N2IzZTIxYjA3NzI4MWU0YzliNTI2MzlmNDhmNzdkNiBweTNrCis4NjUxMCA0ODNiYmViYzU3YmZmYjVmNjk0MjFmZGZhNGFjMmFiNjc5ZTcyMmI0IHB5M2sKKzg2NTExIGY5ZmI5MmVhNDg1MDI5MjgwNzg0N2YwMWE4NWVjYmIzNDY3NDk5M2QgcHkzaworODY1MTIgZTEwNWU2YWM4NTM2NTE0ZDY5MzYzOGNhM2FjZTQ5Y2E2NTQ0NTIwZCByZWxlYXNlMjctbWFpbnQKKzg2NTEzIDI3ZTMyZDUyMDA1NTYwODk3NTI1Mzk2ZGU2NmVlMjE2MjFlMGFjYmMgcHkzaworODY1MTQgNWJjNDYzYjA0YzgzMzNkMzFmNzRhNmYzNTA4MjVlYzU3ZTk2MWU1NiBweTNrCis4NjUxNSAwMTk0MjFhODllZjU5ZGMwYjE2ZmE2OTNkNDhkYzBlNGZjNTFiMTQ5IHJlbGVhc2UzMS1tYWludAorODY1MTYgOGI2ZmFlYTMwNTczNDBkNTZmZWY5ZTU0ZGM4NzliZGI5NWI0NWRjMyBweTNrCis4NjUxNyAyOTc4MTYwZjQ5MTQ5NWJiMTM1MmEwYTAwZDIwZGFiYWY0MTE2NmU0IHB5M2sKKzg2NTE4IDgyYjE2MWZhMjgxODQxMjRkOTY3ZWNlYmJjYjEzOTViNTcwMTJlMmUgcHkzay1jZGVjaW1hbAorODY1MTkgZjBkZGM5MWJhZWMwNGE0NzI5ZmI0YzdlMzQ1ODczNThiMThiZjcwNyBweTNrLWNkZWNpbWFsCis4NjUyMCBiYjI3NjkzODljNTMxNDczZTBlOWM4YzE0N2ZkOWRiYzYyYTkxZmY5IHB5M2sKKzg2NTIxIDM3OGQ0ZjRlOWNiNTBkOGZkMjI3OTRkZGIyYzQ5OWVhNDRlMDcyNTIgcHkzaworODY1MjIgZmI3ZGRmMWQzNTk0MDI5MjcwM2U3MDFkZTg2N2E1YzFmNTAxODQ2NCByZWxlYXNlMzEtbWFpbnQKKzg2NTIzIDkzMmEzZmZhNGU1NjExZWU5NzA2YTJiMTZiMWY3YTQxZTJhNmVhNmMgcHkzaworODY1MjQgYTAxOWJiNGZmYjUwZTU1NzU2OWQ5YTJhNmVlOGIxY2U1YTQ0MWM5ZSByZWxlYXNlMzEtbWFpbnQKKzg2NTI1IDFkYWE0MGI0MTIxMTcyNjhlNGQyMDQyNWUwYmE3ZWJmOTA2ZTE2OWQgcHkzaworODY1MjYgYWUzMTVhN2Y2MmQyNzgxMWYzZDM3OTExYTNjMTcwMTA5ZGNjNTkxNyBweTNrCis4NjUyNyA2N2FiNzQwMmUwZGVjZGViM2FmNDMzMmU2ZTE2MjdhNzZkZjU2MTM1IHJlbGVhc2UzMS1tYWludAorODY1MjggMjdjNTQ1M2ExNDdmNTExY2MyOGUzODkwNzQyZDVhNDMxYjNiOTYwNiBweTNrCis4NjUyOSBiODQyMGU3Njc2MzhlNTYyNmU0OTUzOTY2OGVmZTAyNTkwZDdkNjM1IHJlbGVhc2UzMS1tYWludAorODY1MzAgMGNjYTczYjBhNWJmMDA4Nzc3ZWY5NDU5NjEyMDNmZjA0ZWRhYjEzYyBweTNrCis4NjUzMyBhMWRhODI0M2I2M2U2YWMyN2QwMjY3N2QwNGQ5ZTU4MTViNTJhZWNhIHB5M2sKKzg2NTM0IDQyMDMwMTQwMDQwM2YwZTIzOWE3YTc3MjljNjQ3ZWE5N2Y2OTc1ODQgcmVsZWFzZTMxLW1haW50Cis4NjUzNSBlOTgzZWIyMjI5ZGZkYTBlN2NjYzE0MDdjYjVkZjVlMDY2MzhlYWZkIHB5M2sKKzg2NTM2IDRiM2E1NTAyMDAyZDIxODkwMGZlOTcxNDFlNjY5MWZjY2Y5ZDVlNDIgcmVsZWFzZTI3LW1haW50Cis4NjUzNyBkOWM4OTA3MjA0NGU0OGQ3NWJkNDg5MWE5NjQxNTE1Yjg1YWI3ZmUwIHB5M2sKKzg2NTM4IGUzNzM0NGE4ZjBjOTFjMzk0MTI3MjdiYWZkNTY4OTc0N2I0OGMzMTAgcHkzaworODY1MzkgMzUwODk4ZTA5NWFhNmZiY2YwNWVmOWJiOGRjNjQzNDYxODgwY2Q0NSByZWxlYXNlMzEtbWFpbnQKKzg2NTQwIGI5YmU0NWY0MzNiOTJkYjg1MzAwZTAzOTMyMGQwNDkzOTJlMmMzMDggcHkzaworODY1NDEgNTFmNzJjNWZlMjhlNGJmMWFjODZjODA5Y2Q0MTk2OGIyNzRmNzhmYiByZWxlYXNlMzEtbWFpbnQKKzg2NTQyIGQ0ZjVlMjdlZDE4NmI2ZGIzNmFkZWM3YmJiZGQwYzg4ZjIxMWIzMWEgcHkzaworODY1NDMgNDU3MmQyOGRiYWM3MzNhM2Q3MTFmYTQ3ZGJhYzM5ZjgxYWE0OTc2YiByZWxlYXNlMzEtbWFpbnQKKzg2NTQ0IGNkZGNiZTNiZjU3YTJlODM3OTdjY2Q1NDIxNjc4NDE2NjIyZTE4YTYgcHkzaworODY1NDUgYzY0ZWQ2ZGE0OGI5YWIzOGI1OTI2MzgzZDAwZjA1YWNiMjA0N2EzOSBweTNrCis4NjU0NiBkMjJhYTVhZTc3NjI1Zjc2OWU3OWQ5NjYwNTk2NGEwMzYyNDQ1NzRjIHJlbGVhc2UzMS1tYWludAorODY1NDcgNWVkMzdjMmMwNTc0MWRlZTlhYjEwZjY5OGJhNTYyNDQyYWNkYmJlZSBweTNrCis4NjU0OCBlOWFjM2YzMTExOTk1NzgxZmI5NTYxYWI1YjFiY2YwY2Q4OTZhMWQwIHB5M2sKKzg2NTQ5IDg0YTMwNWUyZTU0ODg5MzE3NGM2YTUzMGIwMzkxMDM4ZWM0ZjQzODAgcHkzaworODY1NTAgNGI0YzcyMTMyYWI2ZWIyYjM1Y2RiYTlhZWU5ZTdjM2FhZDAxMjY2ZCBweTNrCis4NjU1MSBlNTMwZmM3NjgyYmYyOTY0YmE2OTUwNDMxYjg3NDRmZmJkYWViMTI0IHB5M2sKKzg2NTUyIDQwOTcwZTg5ZTYwYWJhMzlmNDc1MjU0MzUzM2U2MDcxOTNjODBkYzAgcHkzaworODY1NTMgODI1ZTQ4MGM5MzBkYTEwMzFlYzc5MTdkMDljNDRmMDEyMzlhYjJiNiBweTNrCis4NjU1NCBmMDc5NjQzOTE1YjUzZTljZjAxOGY2MzgzYWY5Mzg4N2I4ZjdjOTJmIHJlbGVhc2UyNy1tYWludAorODY1NTUgMjQ1ZjZjYTNiMjMzMGZlYjRhMjc4MWJkYzQyNzYwYjJhOTE4ZGM1NCBweTNrCis4NjU1NiA1M2RkNzAwYTM1YjZmMmZlNjc3MDA3OTg0MTExZWRlYzIxZWFkNmU3IHJlbGVhc2UyNy1tYWludAorODY1NTcgZGRiM2JjOGU2OTkwZGY0ZjFhNjE1NjRkMWZhYmJmMzMxNzIzNGZlMyByZWxlYXNlMzEtbWFpbnQKKzg2NTU4IDE5YjcxMWE3N2VmZjFiNDM3ZDY2NDY0YjAwZmVjOTA5NDgxYWJjMmIgcmVsZWFzZTI3LW1haW50Cis4NjU1OSAyZGQ1MzkyNWYwMDcxZGQ2NWU4ZTEzMzA3YzQ4MjAxZDcyZDI1MWVjIHJlbGVhc2UyNy1tYWludAorODY1NjAgNWQ1NWM1YmI4YWIxYzQwNTRkNzY0MDYyMWFmMWVlNDJlZTQyNWY4ZSByZWxlYXNlMzEtbWFpbnQKKzg2NTYxIGI0NmJjZTg3ZDJhZjAxZTQ1ODk4MjRkOWZmOTJkMzM5MTc4MmNhN2QgcHkzaworODY1NjIgZGViYzc2NjQxOTEyMmFmNjA4YTc2YTU3MDg4NTBhOTk0MWJmZjY4ZiBweTNrCis4NjU2NCA0MGIwYzY5YmIyYmQ3NTA2ZjU4ZGU4YzllOTAwYzMwOTE3MmNhMDIxIHB5M2sKKzg2NTY1IGMyMGFkZTYzZjNkYmNhMWI4YTI3ODI0ZmJlYzYwNjExN2M3Y2I2NTggcHkzaworODY1NjYgNGVkNjEwMWY4YWIyNTU1NDNjYjc1Y2ZjYzAzNWQ5Y2Y3NjY5NGI0OSBweTNrCis4NjU2NyA3ZjMyYzVmNTZkMWExMThkN2UwMzcwMjkzZjVkYTJmNWFjNDA4OTcyIHB5M2sKKzg2NTY4IGExOTM2ZmE2MzU4MGQ2MmM5MzFmNTIzMDQ5ODUyODk4OTlmMTg1ZTcgcmVsZWFzZTMxLW1haW50Cis4NjU2OSA1OWU1NmI4MmU2Y2IyY2ZiNTk1MzI5N2U1YjEyNWExZGQzODc5MjNlIHJlbGVhc2UyNy1tYWludAorODY1NzAgNGUyZGE1MjdmNWIxZGIxYWZlMTg0ODFjYTZmNWFhMzZjZWY0YTUwZiBweTNrCis4NjU3MSBhZWY4ZjE4NTBkMjRkNzBkYmUyMjE5N2JlMDc1M2Q5MzE5MTY4NmZmIHB5M2sKKzg2NTcyIDc4YTM4MGQ1N2ZlYTE5NGFjMzI0ZGY5ODViYWE5YTcwMWZhNThhNDMgcHkzaworODY1NzMgNTFlMWNiZGQ4ZmQyODU2ZGZlYTNiNjQ4MGU0Y2M3YjU4YTNjM2ViZCBweTNrCis4NjU3NCAyYWU0ZWVkNGEzYjM3ODdlODQ5YWZjOGZjZDZjNmYwNDU3ODU3YTcxIHB5M2sKKzg2NTc1IDgzOGY2OTQ4ZGViOGI2ZjgwNTY4ZmQ4OWU3MTAwZjJlMTM2YmFiMjAgcHkzaworODY1NzYgM2QyZjU1Y2NkNjYwZWM2MTUzNWFiNjRjZGQzZmE2YjE3OGQ5N2NiYSBweTNrCis4NjU3NyA4MGI0OGEzYTI0NzM0YzUzODhmMTg4MWJhNzU4ZTEyNTFjYjk3MmUyIHB5M2sKKzg2NTc4IGQ1NzE4MWFjYWY4YzQzZDY0M2EzOGVmZGIxNDc5YTcyN2NjMzI3MzggcHkzaworODY1NzkgMWVmNDY1MWZlZWY4OWI4MDJhY2Q3M2U1M2MzOTBiMTJiZDVhMTM4NiBweTNrCis4NjU4MCA0MWQ1OGJlYzNlMDhiNDVhMzgwMjQ0NTMzZWQ5OWU4NTZhNzc5Yzg0IHB5M2sKKzg2NTgxIDRlNTEyYTk0OWI2MGMwNDgwMTU3NDdjNTg0Mjk2Zjk4NGVhYWU5NjAgcmVsZWFzZTMxLW1haW50Cis4NjU4MiBhN2MyMjEwN2FlY2QwNDU3MmJmMDRjMzg0Y2MwZWYxNjA4NjA0OTgxIHJlbGVhc2UyNy1tYWludAorODY1ODMgNjZkNDBiNmEyYmIxYWQ4MGRiZjhkNDUyYzY2NTJlNTljOTg0ZWU1NiBweTNrCis4NjU4NCAzYTBlNzAwMGRjOGY5ZDcwOGFhNWVhYjUxNjFkNjQ3YjcxMWJmYzNlIHB5M2sKKzg2NTg1IGVhODM1NWNkZGQ5ZjgxOTdiZjg1Nzg3MjMwNGM1YjcyMjA1OTMxYjQgcHkzaworODY1ODYgYmM5ZGM3ZTdmMzczZGFjNmQ1NTE2Y2I4MjRkYjQ5YjYzMDg4ZTUxOSByZWxlYXNlMjctbWFpbnQKKzg2NTg3IDNjOWIxYzA1YmE5ZWM1N2JkNGMxYTljMzk3YmM4OTJjOWYwNGI2ODEgcHkzaworODY1ODggN2NkYmRiZjM0ODBiOGYwMmI5ZDA5N2Y4YTBkZTVhMjU2ZDA4MmJkOCByZWxlYXNlMzEtbWFpbnQKKzg2NTg5IGM0MDRjMmEzNDZhNTg0NGI1YTk1OGRiMDJlMzY3MDBjNDA3MGY3M2YgcmVsZWFzZTI3LW1haW50Cis4NjU5MCA2MzFkODQ0YmJjNDU5MzJkNTg4ZjU0YjY3Yjk0YmZkZTZkNTM3MzhiIHJlbGVhc2UyNy1tYWludAorODY1OTEgOTY1Zjg1OWU2MGFmZjkxNzY4ZWY2ZDYzMTdjZjljYjczYmM3MDgzNiByZWxlYXNlMjctbWFpbnQKKzg2NTkyIDUwNzUxODIyZjYyMjMwNjY1YWExZmM0OWIyN2MzNWZhYjA2ODIyMGEgcHkzaworODY1OTMgYzA2ZWQyNWU2OWI4MzMyN2Q1YjVjOWRhYjU4YzRjYzEyYzc2M2M0YSBweTNrCis4NjU5NCA0ZjI5YWE4ZjlmNTRiMWEyNWQ2OWI0MGZlZTkxZjI4YjljNTMwNGY0IHB5M2sKKzg2NTk1IDQzZTUwYmI5MjNhOTZlZWFhNThlMTljOTkwZjk0NjU0MWU5ZmY1MjYgcHkzaworODY1OTYgOWZlNzZjMjZlYTlmZTdiZjNiZWIzNGZkZDEyOTljYjE4MGVjNmVhOCBweTNrCis4NjU5NyBkZWRmNzE5YjI2YTM3NGQyOTI0YTJiMDBhNmQzN2IyNGRhOWVjNjI5IHBlcC0wMzg0Cis4NjU5OCAxMjkzZjgxOWNlMzY2MjJlNGFjMzc2NTgzMzRkNWIyMDVjMzQ5ODk0IHB5M2sKKzg2NTk5IDUzYmUxYTY3ZTk2NGFlY2MzOTM5NGFiNGEwZmYzMjg4MTVjZWJlODggcGVwLTAzODQKKzg2NjAwIDEzYTJhNWRlMWI3ZjZlYmM1NTMwNmM1NmM5MTU5NDA5MTk4OWJlY2IgcGVwLTAzODQKKzg2NjAxIDg2ZTNmNjMyNGU2NTAyMzUwZTFlMWJjYzY0NDM5NGE0ZmQwYTBmZjIgcHkzaworODY2MDIgNDRiMzEyMTlhZWNkMzMyZWJkMmNlYjJjOWJlMjI2NDgwZGU3Yzk1MyByZWxlYXNlMjctbWFpbnQKKzg2NjAzIDY3MWU2YmQxODExNDNkMjg0NmRhYzEyODA1YTAwMWJkYzNkY2NhYmMgcHkzaworODY2MDQgYjZkN2M1YjZmMWYyMDEzYjAxNDFmNWM1YjJlZGJmMTdjMWEzZGJjNyByZWxlYXNlMzEtbWFpbnQKKzg2NjA1IGY1ZGI1Mzc4MzkyMmQyNzY3Nzc4Mzk4OGYyYjlhYzdiNGVmNzAwMzkgcHkzaworODY2MDYgZWVkNDJkMjgzNTYyMmRmOGFhNDk0NTBiNTY3ZjQ5YjZlMDliZGEzYyByZWxlYXNlMzEtbWFpbnQKKzg2NjA3IDZlYWJmOGMxYTc1YzdlNTIzMmNkYWRmYjJiNWYxODgyNDE4ZjA1OGIgcHkzaworODY2MDggOWZlYzZhYmNhN2Q3Njc2MjI2MmVmZDY0YTY4ODRiZWFjMGY0NWU1YiBweTNrCis4NjYwOSA0YWUyZDAxMWE4MGJhNWNlYjRhNDUzZGFkZDYyZGVjNjljYzE4MmI2IHJlbGVhc2UyNy1tYWludAorODY2MTAgNTkzMDdhYTdkMmZlNjdhMDgxYWU0ZWY3MTMzNzE3YzRkODNhMmEyZCBweTNrCis4NjYxMSA0MzM1NjkzZGYyNTk3OWQ5YmY4NzUyMGJhMDc3ZTFiOWI1NjJiY2Q0IHB5M2sKKzg2NjEyIDFjZGM5YzFjNDMwZTg1YzViNjUzYWQxMjYzZDQxZjgxN2Y0MTBmM2YgcmVsZWFzZTMxLW1haW50Cis4NjYxMyA3YWVjMjM4NjgyODc3YjM5YjJjNDYyODQzMjNkNzQ4ZGFhNzdjMzY4IHJlbGVhc2UyNy1tYWludAorODY2MTQgMTBhMWMzOTk4NjRlNDYzYmQwNzQxN2IyM2UwM2FlODVmZWE2ZGM2MCBweTNrCis4NjYxNSBjZmQ1MzgzMTFiNmZhNjBmYmM5MzU4MzZhNGVhNDA3ZDllNTE5ODZjIHJlbGVhc2UzMS1tYWludAorODY2MTYgNDhmZGMyZDhmODk2ZWM3NGQ1MDc5MjYyOTg3NmY5Nzg5ZmY2NjA0NCByZWxlYXNlMjctbWFpbnQKKzg2NjE3IDdhZjE5ZTk5ZDJmODVlYjk3Y2UwZGQzYzc0NzI3MDI0NTkwNTU2YzkgcHkzaworODY2MTggMjM4Y2FhZjY4NTJiNzMzZWYwNTBkMTY2OWFmOTg3N2E3MmQxMzFkYyBweTNrCis4NjYxOSBhZGQ3ZTk3MjFmODA5NDcxMzYxZWI0YWI0YTNjNTc5ODAxOGE1MWRlIHB5M2sKKzg2NjIwIGUwMTIzNzgzMWFkMmZhZDY5YzVmZGJkMTI0YjkwNzFmMjBkOGQ1MDEgcHkzaworODY2MjEgMzk4YjIxODIxZDFiNGEwMGE0NDdmMmMzMjZiMmNlYTJiMDQ0NWMyNSBweTNrCis4NjYyMiAyNTc1MTJiOTdmODIzZDNlNzAwYWZhYmI4NzliZjAwZjkwZGQ1NzYyIHB5M2sKKzg2NjIzIDFiNDQ4ZmQ3ZTFhMjQ4YzQ5MzIxNTdhZjE0MmE4ZjI3ZjFhNmQ1OTAgcHkzaworODY2MjQgYWNkOTYyODI0ODE5MTQ4OWUwNjMxYjhhYjM5ZGE1Nzc1NmFiZmM1YiBweTNrCis4NjYyNSA0NTlhNjkwMjVkOWMxNmJkYjlhODQyNjAzMjIyODliNjI4OTg3NTQxIHB5M2sKKzg2NjI2IDYyMTgyYWJjMTE2YWJhYzU1ZThmZmQ3NmIzYzRkMTZhMmNhMGI3MjMgcHkzaworODY2MjcgMDdjYWRjMmM2NDM4Mjk5ZmUzYzRlMmRhYTFiZTZiODY5NWQ5Y2YzYiByZWxlYXNlMzEtbWFpbnQKKzg2NjI4IDgzN2FkNTg1NGZjOTNiNDBjNTE0MjkyZDBmYmJmNjkyM2MwM2U1MTggcmVsZWFzZTI3LW1haW50Cis4NjYyOSAyYmViMjUzNjkyODk3NTI2NzQzNDJjMGVhODc1ZDc5OWMwZmNlNTIxIHJlbGVhc2UzMS1tYWludAorODY2MzAgNWMwNmQzZDFiOWM5MGQ1MDM4ZjdlYjJlZDNhOGNiYmM4YzkxOTZmMCBweTNrCis4NjYzMSA1NDRiNDUzZTYwYTU4ZWVjMGU2YTQyODM0ZDcwNmNhMDNiZTFjODYyIHB5M2sKKzg2NjMyIDIwNjgyNTViNGRhMDBhMThmYzZjYmI2YWZjOGNiYjFlOTA1ZTU4NDYgcHkzaworODY2MzMgZmRmYzZkY2E4MDQ4M2IzZDEzZmNlNWNjYjZkYzE5MjQwZTQ3M2Q1MiBweTNrCis4NjYzNCBkMjlhNjdjMjY2MDBjNzY4MzRiOTBjNjE3OGY2ZjViMmM4MjUzYjA5IHB5M2sKKzg2NjM1IDlhMGMyNDAxYzZhNmUxZjAxYmNlNzk1MjEzMGZkNTUzMTk2NjEzOGUgcHkzaworODY2MzYgZjU0NzY4YTVlMmY1NWRjNmUxZTc3OTIwMjA1NDc0YmEwMDQzMDc0OCBweTNrCis4NjYzNyA2MTRjODQ2NzBjNjNkMzVhMGYyN2E4ODhkODY5ODUzOTA0OTNmZTdkIHJlbGVhc2UyNy1tYWludAorODY2MzggYzEzZjg5ODBjYTdmZGZiMzhjNDViNDA2ZjhhOTMzOTVhODc5NGRiMyBweTNrCis4NjYzOSBmOGNlYjZhZmQ3YTkxYWFjOWE3OTc5OTE1OWI5YjZkY2Y0Mzk1MzIyIHB5M2sKKzg2NjQwIDk3MTcxNTNkNTU4ZDA0OWU0YzM1MjE1NWU5OWU4NzFkYzcxOGM2ZmIgcHkzaworODY2NDEgNjFkMWVjMzA3YmIwZGI0OTFlYjZjYmIxYjIwZTJhYjdlODE2OWM3NiBweTNrCis4NjY0MiAzMjJhYTNlODI3NjhiZTNiYzdjMjg2YTg3YjVlMThiZjViNzM3NDIwIHB5M2sKKzg2NjQzIDE3OWRjNGMzNDcwZjNjZjc2ZGZiOWM5OGMyNzkxMTA3YmNhNTQ3NDMgcmVsZWFzZTMxLW1haW50Cis4NjY0NCA5NDNhODY0OTkwMGRmZjk4NTUxZWMyMjU1NTRmZjZlYTg5YTNhMjg1IHJlbGVhc2UyNy1tYWludAorODY2NDUgZWVkMzI4OGRlZDg5NWZiMmQ4OWU0YWM0ZTk5NWI1MjBkZWI3ZGU4OSBweTNrCis4NjY0NiBhNzg0NDU3ZTAwMGU1YzNjOTg1Nzk2NTIzNDQ4MmI2YzhhZWZlMjc4IHB5M2sKKzg2NjQ3IDFlZjhlOWE3NWZlZjNjNzIyMzA1ZjY0OGI3YjQ4NGVlNjQ0ODEwYjEgcHkzaworODY2NDggMjJiY2RhYzE4MWJjYTkxMWJlODAxYWM2YTQ1ZDE0ZjQ0NGRlNmQ0MCBweTNrCis4NjY0OSAxZWMwNTgwZDlkOWQ3YjY3ODlmMjlkYjg4MTI4Y2Q1ZGY3MWUzN2UwIHB5M2sKKzg2NjUwIDViYThiZmNlN2VjMWQ2ZGMwNjEzNWI0OTcxZmZiMDBkMjJjNWQwYzIgcHkzaworODY2NTEgOGJhMTZhYWJkNTY0NmI3Mjg2NTg4ZTE5YWRhYTBkZTRkMDZiZGExNSBweTNrCis4NjY1MiA0ODVkY2ZmYzg4YjQ1ZTE2ODVlYzFjZmM2ODdjZTY0Y2QwMzViMzc1IHJlbGVhc2UzMS1tYWludAorODY2NTMgZjQ3ZmNkNWI1MDFkZWMxYTgyZGIzZjhlNDQ0NTQ5NGE2YjdkZjU0ZCByZWxlYXNlMjctbWFpbnQKKzg2NjU0IDdiMTRmMWZmNjAyYmI1MDhkZDU1NDlhOTc0MTRlNzFiMzI5OWE5NzYgcHkzaworODY2NTUgYWRkOGEwM2RkZWU2ZTM1ZDQ3NmM1ZTY2OTY4MmJjNDRmODM1YmJlNCBweTNrCis4NjY1NiAwN2E0ODcwZjYwYTA3ZjBmNTNjZDVlMGYxN2Y0ODUxYjMyNTcyNjk2IHJlbGVhc2UzMS1tYWludAorODY2NTcgYTA4MTYyNWRkNmM2MjdlYjM1NDdmZjY1MDUwZDc0ZTJkZjA4YmEwYSByZWxlYXNlMjctbWFpbnQKKzg2NjU4IGZmYzM3MmM4Y2ZhMGM3NjNlM2M0NWYzMzJiNGQxZjgwODgxMzJhYjIgcmVsZWFzZTMxLW1haW50Cis4NjY1OSA1ZDExMmM3ODdkNmU5NGYwZDE3ZmI0ODdkMjMyY2Q5ZDE2ZGJiMmIyIHJlbGVhc2UyNy1tYWludAorODY2NjAgZjAyZjNiMzNkZDhmOTFmNDJiMWM3MDMwMzAyYTgyNTU4YjBkNDVkNCBweTNrCis4NjY2MSA1YWJmYzFjYzIyZDExZjNjOGNhMWI2YTA4YmNjNzI3YWJkN2U1MmZiIHB5M2sKKzg2NjYyIDY2ZTBmNWM2NTE1ODY4OWUzY2E2MWRlZWVlNTBmNjk0ZTIwZjM0NDggcHkzaworODY2NjMgYzVjYTFhOWIxZmRmNWYyYzRmN2FkZmE4YzhlMWVmODNkNGU4NTllNyByZWxlYXNlMzEtbWFpbnQKKzg2NjY0IDBiMjcxNmY4YWZiNTkwNGQ0MjgyOWI0OTliMTdiN2Y1NWJlMGEyNjcgcmVsZWFzZTI3LW1haW50Cis4NjY2NSAwZWZkNDI1ODlmMTcxZTM4MThhODgxZTkwNmE2Yzg3YWEyYjJjOWMwIHB5M2sKKzg2NjY2IGRjNmEyN2JmODU5MjhjYTc1ZTNiYWFiYjQwZmIxNTQzNmJjOGU3Y2IgcmVsZWFzZTMxLW1haW50Cis4NjY2NyA5YTE5MDY4YmE4YjEwZTExM2M0NGUxNDg5ZTZjZDY0ODIxMDQ3MGNmIHJlbGVhc2UyNy1tYWludAorODY2NjggMTAyZGIwY2ZmZTUxZjZjYzRjOWVmMDdkZGYzZDQ4ZmYwZjJmYTU2MSBweTNrCis4NjY2OSAzZTk1ZjA4OTIzN2E5ZTI3OTk3ZDIxZmRjMGMyZDE5MzkyOTcwMDJiIHB5M2sKKzg2NjcwIDA4MTNjMmFjZjc0MTU1MTk0ZGMwZDAwOWRhNjhiZmNiOGI3NDMzM2EgcHkzaworODY2NzEgYWRhNjdkZTY0OTE5OTcxY2FiOWJjMjI2MmMwNzNkZjUyMDBhYzk3ZCBweTNrCis4NjY3MiA1MzgyY2E5NWMzZjZjMzE2ZDhmZGJmOTZjOTAyMzA1OTQ3ZGVjMmVkIHJlbGVhc2UzMS1tYWludAorODY2NzMgZDZiNmY5OWY1YWY5ZTAxNTFhMjI4NDMxZmQxZWI0Y2ViYTQ0MmY4YiByZWxlYXNlMjctbWFpbnQKKzg2Njc0IGFhNjRkNGYxYTc5NTYxNTM1Y2FmNWIxNjcyNzM4NTQxMzRjNjhjYTcgcmVsZWFzZTMxLW1haW50Cis4NjY3NSAyZmY3NTgzMTVmYTEwYzViODg2ZGM2ZWFmMjQ4ZWU2NmUzZjUzYWMyIHJlbGVhc2UyNy1tYWludAorODY2NzYgN2I3MDUxMjgyN2NmMzk0ZDI5ZThiNWFjMWFkNjQ5Yzc0OTA2NTQ0MSBweTNrCis4NjY3NyAwYTlmZDVjOTRkYzM1OTU4OWQ0Y2ExMjJhOGI0ZmM4MTI2ODZkNWVlIHJlbGVhc2UzMS1tYWludAorODY2NzggNGMyYjJiZTcxNDU3Zjc1MGJiYzZjNzY3OTczNGExMGJiMDExMzJkNCByZWxlYXNlMjctbWFpbnQKKzg2Njc5IGM2YjdkZjFiZGY1MGU0OGI2MGRkN2ZkMjQ0NjdlNzRlYzdhNDYzOGYgcHkzaworODY2ODAgN2VlNTkwYWViMmIzNDIxMjRlZWIzNmRiMDQyMWUxMjQ5YTI1NmZmMCByZWxlYXNlMzEtbWFpbnQKKzg2NjgxIGQ5Nzc0MTIxYTZkZmRhN2Y1ZTkwYjk0NWY3ZjczNDBiZWM2ZjgzZGYgcHkzaworODY2ODIgNmYyNWNhYzI4MzZlYWQ3OTYzOWViODRlNWFjMTM5YmQxMDQ0ZGVhMiByZWxlYXNlMzEtbWFpbnQKKzg2NjgzIDRmMzU4NjZmZDhjYjEyZWE4NWVmZWM2MDZkZGJlNjNmNjY5NjRjODEgcmVsZWFzZTI3LW1haW50Cis4NjY4NCBmMTUwYjY3ODU0OGVkZjA5Yzk4MmRhZTExZDc4ODJjYzdkMDgzYjk4IHB5M2sKKzg2Njg1IDMzNjI1ODljMGMwMmFiZTIwNzViZGZiYjk1YWI0YjVlNTI5YWQxZmMgcmVsZWFzZTMxLW1haW50Cis4NjY4NiBlMGVjY2ZhOWFkNmJhMGEwNGJkYzdkNGIyNGM5ZTI1YThhMDc4N2Y3IHJlbGVhc2UyNy1tYWludAorODY2ODcgODJhYzc1M2JmNjJhOWEwZDkwMDQ3NmJlNjEyNmQ4YWJjMzVmZWI0MyBweTNrLWNkZWNpbWFsCis4NjY4OCBlODg0MDMzMWY3NzhlNzdkYmUwZGU1OTk2YjJkOWE5ZTcxYjJjOTVmIHB5M2stY2RlY2ltYWwKKzg2Njg5IGFhNGRlYWYzNDRkMTk5MDI2ZTdjMmRjYzJjMmM1YTUzNGI0NmYwZmQgcHkzaworODY2OTAgZGNhZDcwNmIzOGZjNDhiOGRlYWFkYWZmMmI5NmZlNTYzNWZkZjdiMCBweTNrCis4NjY5MSAwYzY2ODE0NmIxMjZhNmZkNDJhMTUwMDJiYWU4ZDNjOTM1OGRkNmRjIHJlbGVhc2UzMS1tYWludAorODY2OTIgOGRjYjE3NzgxZTgzMjRmZjBhYzI1NjMxYTEwYWFkZmZkYTIyMDliYiByZWxlYXNlMjctbWFpbnQKKzg2NjkzIDEyN2Y1MTY4YTc3NGY5Y2RlZjU1ZjQ2MDgxYTc1MDU1YTllNjNmMzkgcHkzaworODY2OTQgOThlMWRkZDUwNWJjMjlhZmE0YThmYzRlODE4MGEyYTZhOWQxOTA1NSBweTNrCis4NjY5NSA1OGFjNTE2MGQxYjdiYmJjZTc4ZDE1MWRlYzBlZGZiNWE2YjZkZDM5IHJlbGVhc2UzMS1tYWludAorODY2OTYgM2Y2MjM1MGVkZDJlOTM2NDY3ZTM3MGQ0NTIxNjM2NmI0M2FhMTY1NCByZWxlYXNlMjctbWFpbnQKKzg2Njk3IDQwMTA5MzAxODI4NTQ0ZjA0M2ExNDY4MDBmYTdmN2U1MGJjYzc4OGYgcHkzaworODY2OTggY2M5YzUxZjk1MjRmOWRmZTFiMzIxNmE5NDRlNjYzMDVkOWM1OWViOSByZWxlYXNlMzEtbWFpbnQKKzg2Njk5IDJjMzcwMDY1YzFiNGRlOTE1MWYwMzg0NGU1OTg1YmMwMjA0NjZkMDcgcHkzaworODY3MDAgMjYwZmYzNzkxMTVjN2I3YzQ1ZTllMGU2ZTNiODEzODEzMTc0MTA0MSBweTNrCis4NjcwMSBkY2I2MGJmMjZkY2U5OGE2MGUxODdjYjQ4NmUwNjZhMGNmMDcxOTRjIHB5M2sKKzg2NzAyIDVhNjlhNTg5YzZmMDg2OTdlZGU1ZGUzZTMzMTk1YTE0ODU1NzgwZTcgcHkzaworODY3MDMgYTczOTg4M2VlNmM1NjA2MTdmYzc0M2FhNjY1Y2VhNWU1NWRlYTk0NiByZWxlYXNlMzEtbWFpbnQKKzg2NzA0IDk1MjI4MmE1MDQ3ZmMyMWZmYWIyMjg1MWIwNDU3MTdhY2ZlZTVhY2IgcmVsZWFzZTI3LW1haW50Cis4NjcwNSAzMzAzYWJlMjlkMGIzOGQyMjY4YTE5ZTQ5YWU1NGQ5M2M3NDdlMmJmIHB5M2sKKzg2NzA2IGE0YjdhNDFkYWJkOTRjODM2MTE1YWI3MDgzOTA1ZTBkNzZlYmU5MGIgcmVsZWFzZTI3LW1haW50Cis4NjcwNyA2M2YxMTRiMDljYWZhOTIwZjQwMDRlYmIzNjAyN2ZlZmEwYjYzNGFhIHJlbGVhc2UzMS1tYWludAorODY3MDggMGNlNTc5NTFhZWM2MmE5MjMxMTQzMmUzNzU2YzI4OTdlZDRhMWM3ZiBweTNrCis4NjcxMCBjODZmMTcxMDQ2N2U3YTVkNGFjODg2MWE5YzIxZDg3Nzg5YzZmYzdiIHB5M2stdXJsbGliCis4NjcxMSA2Y2EyODkwYmFiNjc4ZGZiNWIwM2NhMzE4OGY5NmFmN2RhNWU4ZTdlIHB5M2stdXJsbGliCis4NjcxMiAwZjhjNTJlYzlmN2YxNWMxZTEzZGRmNzE5ZjE5MGJlOWUwMmM1YmY4IHB5M2stdXJsbGliCis4NjcxMyA5YWRmMzk3ZjU2ZTdiNDNjN2RhOTcxNzZlYWRkMDE5Y2Y3ZDY3M2JhIHB5M2sKKzg2NzE0IDhiNGE1MzFhZDM1MmE0NDhiOGQ3ZjlhOTNhM2E5NDExZmNmZTViZmIgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE1IDFhZTUxZDEzYzI1YjkyMzU2MDY4OTNkMTgzN2JkMzZmYTJmNWZkNjggZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE2IGJlMGY0ZDhiZmNlYWFjYTU2NDI3YTFlMjExYWRiNDYyMjU2NjU0ZGYgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE3IDlmMjNjNWY0ODU2YzAyNDRlODc5MzY0ODA2OTNmNWIxNjIxMTJjMzIgcHkzaworODY3MTggYmFiOWMyMDdlMWNmOGFkMTZkMjMyNDRkMGRhMmMxNDNlN2RlYjQ5MSByZWxlYXNlMzEtbWFpbnQKKzg2NzE5IDE0MDRhYjA3NmI1OGY0NGM2MjNjNmYxYmFiYWY5NWEyMWIyZDdlNGYgcmVsZWFzZTI3LW1haW50Cis4NjcyMCA0MzZkYWYwOTVlODk2OGU1Y2VhYzRmOTFhZGNhZWM1OGI5ZGJiN2U3IHB5M2sKKzg2NzIxIDA4Mjg4MTRlMDNhZGRiODIwYTc1NGRiYTQyNDQxM2JjNWEyOTM1NDkgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzIyIDYxZjlkM2JmMjM0Y2YwZjkwZGY5MmIzOWU3ZmJkODZjYmM0Y2FmNWUgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzIzIDA5MjRmNDBiYjZkYzUxYzViY2Y2NjI0OGZmZWIyYTRjNDc3NWM3Y2EgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzI0IDQyNThlMjhjZjQ0MDYwYWU0M2Q5YjM5ODBiZWJiMGZhNjI5ZDBjMmMgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzI1IDY1MmJhZjIzYzM2ODZlNTIwYWVkM2QwZTdiNzdjNmU1YTRhMjQ0M2YgcHkzaworODY3MjYgMjg4OWVkNzM0MWUwN2U5ZmY5NGNhMTVjNzkzNjJhMTQ4Njg1OWE3MSByZWxlYXNlMjctbWFpbnQKKzg2NzI3IDBhMWJhYTYxOTE3MWFmMzI0ODY5ZWNiY2I2YzcxNDQwMjk4NzU5ZWMgcHkzaworODY3MjggZjNhNjFkYWZiZjZiYWQ4OGYxNWY4MWQ3ZjUzMDNhNTVkNDc0MThjMyByZWxlYXNlMjctbWFpbnQKKzg2NzI5IDRmZWQwMDY1OTgzMTQxYmEwMmFjMDY0NjI0YmNiNjdkMWJiM2M0OWYgcHkzaworODY3MzAgODNiMDUxN2QwZmM1ZTAyZjFlOWViYjU2MDYyMTc4ZDQ4YzcwZmQ3ZiBweTNrCis4NjczMSBhNzYzZWQzZDZlOGNhYTg3YWMxN2FiODIwMGU5MzdkZTVjZTkyM2YxIHB5M2sKKzg2NzMyIDgyZGEyYWJjZTcyMjBjMzQ2MzBjNWY5YzkwZjMzMjcxMWE0NDQ0ZmYgcHkzaworODY3MzMgOWNkMTAzNjQ1NWU3ZDYyODViNGMxZmIzNDNkMzIxYjFlNmM0NzczOSBweTNrCis4NjczNCAzOTVhYzZlMzE5YTg5NTliMzIxMTdmMTVhMGNjYTM3NmViMDg4MzlhIHB5M2sKKzg2NzM1IDI2ZjgwZjcyNGI0ZmYxNjkwMDY1NzFhNWYzZjQwYTBlZWViMzY3YWMgcmVsZWFzZTMxLW1haW50Cis4NjczNiAyNTMyYzRiYzAzNzNhMTY4Y2NkOGU2Nzc5YzhhZmJiZTc1NzI1MTIyIHJlbGVhc2UyNy1tYWludAorODY3MzcgZDZlOGI3ZTI1MGM2NWFjMzdlOTM5ZGQ4NzdjNzUwMGE0YTcwYjRmMCBweTNrCis4NjczOCBiNzM4MTI2OTBjNmU2NThmYmM5OWZkN2RjZDA0ZDNmN2Y4N2Q5ZDFmIHJlbGVhc2UzMS1tYWludAorODY3MzkgMjg3NzI2NWJkYjAxY2ExNWFiMTVmZjZhNzBiNWI0NThlODczZTE2YSByZWxlYXNlMjctbWFpbnQKKzg2NzQwIDk4Y2E2NTUzMjNjMDVjYjNkMWFhNzMyNmQ4ZjM3OWE2YTM1Mjc4NGIgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQxIDRkZDdlYjJkOTg1NmNlZjNmZTQxNjJlNjc0MmIzYjk5YmQ4OWY0MDAgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQyIDg1OGU4NmRiNDQyZjVhZDgxYWNiNDQ5Mzg4MThhNzNiNDQzNjQ1ZDUgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQzIGNlYWQwNGIzYzVlZDEzZjJmNWIzYmRjNGZmMWZiODk5Nzc0MmQzMDAgcHkzaworODY3NDQgMGNiMjY1MjY0MTlkODhiN2E0NmQ1MzVlZTM3YTU3MTY3NzhlYTJmZiBweTNrCis4Njc0NSBjNTRjNDExZDNkYTdhMTRiNmIzZTg5ZTAyNTk0MWYyZGQ2Mjg2NDA0IHB5M2sKKzg2NzQ2IDAzZDkzMzk0OGJmM2VhYThjNzljNjQ5ZGViZDU2Y2JiNmNmNTk1MTYgcHkzaworODY3NDcgNjc4ODIxMDVkZDY1NThiY2I1MGMzZjI3NzI1YWM5NzE3Y2I4ZTZlMyBweTNrCis4Njc0OCA0ZDM5NTJhMjFlMjU3NjBhMjlhMGM2OGM3NTMzMjhlYjQ2MTQ1ZTk0IHB5M2stdXJsbGliCis4Njc0OSBhZTgyYzc3MDc2OWNhZDU1ZjFmMjA2OTU4ZGI4N2M1M2Y1ZTdmZDQ0IHB5M2stdXJsbGliCis4Njc1MCAxMTc4ZTI1NDVkY2I1YzY4MmEyMDY1YzUyYjNhYjVjNDk4MmY5ZWM0IHB5M2sKKzg2NzUxIGVkZWQ2OTE0OTdiNzQ4YzNjZWI4ZWRlMGMxYjE2N2RjNzI4ZGE1NWYgcHkzaworODY3NTIgZjNkZjkzZTI2MjY3NWFjNWI5Y2U4ZDc3MWY4MDZlODk3N2Y1ZWI2NCByZWxlYXNlMzEtbWFpbnQKKzg2NzUzIDBkYTQyY2QwMTU3NjU1ZGZjZWIwY2UyMTEwNTg3OGFiZmQxZjljZTUgcmVsZWFzZTMxLW1haW50Cis4Njc1NiA0NTdjN2U3MDRlYzI5OWMzOWY2MTUyN2RmYjY2ZWEwNWQyZDFlZTkyIHB5M2stY2RlY2ltYWwKKzg2NzU3IDJkNmNkYzgxODVjYWU1NzVjZmQyM2RmYWIzZWQxMGU4MzQ5NThhMGIgcHkzay1zdGF0LW9uLXdpbmRvd3MtdjIKKzg2NzU4IDE0MGQ4YTY1NzcwNTQzM2E4MzQ1ZWM4NGMzY2ZiNWQyNTUzZDE3Y2MgcHkzaworODY3NTkgMDZkMjMwMjZmOTA0NTY5YjdlZTE1OGYyZWJjYWZlYjc4MDQxOTk4NSBweTNrCis4Njc2MCBmNTlkYmYyOGUxMmMzZjZiOWNjOGE5YTQ0NmIyMGM4MmRjMzg1NzY1IHJlbGVhc2UyNy1tYWludAorODY3NjEgZTQ4ZWQyZWY2ZDVmZmIzOTJkMWJkNzhiOTAzNjI2ODJkOTdjYmY1YSByZWxlYXNlMjctbWFpbnQKKzg2NzYyIDdhYjRmZGE3NzAzMTI3NjU1MzEyNGI4YjBkOWYyODBiN2RiOTQ1YTkgcmVsZWFzZTI3LW1haW50Cis4Njc2MyAxOTIzMjAyMGU0OTFkNzhlZjFiMDZhM2Q3YTkzZWM3OTY3NTEwZTE3IHJlbGVhc2UyNy1tYWludAorODY3NjQgOGNlOWFlNWExNTQyN2IwN2RkZmMwYTNhMTRhNjA2NGFlZjI2NWZjZiByZWxlYXNlMjctbWFpbnQKKzg2NzY1IDZjMzVhYmM3ZDBkMjE5MmUzMjEzOWQyMWJiZjk3MjVkODc5OWUxOGUgcmVsZWFzZTI3LW1haW50Cis4Njc2NiA0NWFiNTVmYTNkYzBkZjk1ODE2NGJjMDE0NDg3YjAwYTM3ZmYwMDQyIHJlbGVhc2UyNy1tYWludAorODY3NjcgNzc3NzFiMDg1ZWNhNzVkNGI3NzA1OGEzYzQ5ZGZkZTY0MWMyNjkxOSByZWxlYXNlMjctbWFpbnQKKzg2NzY4IGE4MDNmZDg0MWZkMTdjM2M0MzU4ZjI4ZDBiMWY2MmJiNThkY2M4NmQgcmVsZWFzZTI3LW1haW50Cis4Njc2OSBkNmM1NzUwMTUzYmIxMTg2NDRiZTEwNjk1OWFhMTU1MjdjYmFmMTM5IHJlbGVhc2UyNy1tYWludAorODY3NzAgMzdiMzdiNmE4OTcyYmQ2ZjA1NjhkOTFmOTU4OGJlNmVhMDdmMjU2YiByZWxlYXNlMjctbWFpbnQKKzg2NzcxIDI5NTVmMzM3OTY5ZTgxNjQ0ZjEwN2NjMmU3ODYxOWQyMGY2MDQ1OTggcmVsZWFzZTI3LW1haW50Cis4Njc3MiBlMTBmNjE4Yzk2N2FjMjkzYzZiMmExNmU1ODRhMTA4NmRiZDU5NjVlIHJlbGVhc2UyNy1tYWludAorODY3NzMgODM1YzE3NjIzOWQwMjU3YjJlNjk2NjAyMTkxMTVkZWNjZTQwZDE3NSByZWxlYXNlMjctbWFpbnQKKzg2Nzc0IGZiMmFhNDVhMWIyMmUzYjFiNWYzMzQzODQ2YTFmZTBjNTMxMjlhYjIgcmVsZWFzZTI3LW1haW50Cis4Njc3NSA4YjZhOWVjYmU5ODljMGI0YzBiN2JkZjhiYTVmOWRlNTc1ZjU5NGJmIHJlbGVhc2UyNy1tYWludAorODY3NzYgMmU1ODEyNmRiYWQwODcwM2JlMmYzM2MzOGE4N2M0MWRlNmI1NmNlNyByZWxlYXNlMjctbWFpbnQKKzg2Nzc3IDQxMzY1MTVjZGZhY2RmYzc4NDQ5OGEyYmI3YzE0ZDNhYjgyNDdiYTIgcmVsZWFzZTI3LW1haW50Cis4Njc3OCA3YzBlYjhkNTYxNDZiOWFlYWYzOTdjNGU3YzBkNGZiN2YwMTYwYTE2IHJlbGVhc2UyNy1tYWludAorODY3NzkgNzFiNzcxNTE5MzMzYTA0YjEyMzNkMWJhNWFmZGYyNjY4NDczOTVhNSByZWxlYXNlMjctbWFpbnQKKzg2NzgwIGEzNzJmYzQ4NjI4MTY2NzQxNjg0NDI4MTE1MjBkYTI5ZGM3YTE3NjEgcmVsZWFzZTMxLW1haW50Cis4Njc4MSA0NWU0OTI2OWUwZDhlZjFkZDI4MjIzZjY0OWEyZWFlN2JhNjkxMjNiIHJlbGVhc2UzMS1tYWludAorODY3ODIgZTc1OTNmZWI1YWQ1YzNmYjIyYjc0ODgxMDlmN2I3N2MzZTMwNTExZSByZWxlYXNlMzEtbWFpbnQKKzg2NzgzIGE5ZjBlYzYwNGM4YWQwODgwYmRhMTk3ZDFkYjE5ZTlhNTliZWMwMjAgcmVsZWFzZTMxLW1haW50Cis4Njc4NCAwNWVlNmY4YzAyNjBhYTViZTFlNWExZjRmNzY4OTE0NGQ1ZTlmYmRjIHJlbGVhc2UzMS1tYWludAorODY3ODUgMzliNWFmNzczZTc1OTZhYjc3NzE5YWYxM2QwNjU2OTQ3ZjU5ZGYyNyByZWxlYXNlMjctbWFpbnQKKzg2Nzg2IDliZWFkOTA5ZDhlZmVkZWM3ZjQwNjM0ZDYwMzY5YmU1NGZiNjhkYjcgcmVsZWFzZTMxLW1haW50Cis4Njc4NyA5YjM0NGJlMWJlOWE3ZTliOTAyNTRlYjRhZDJiZWM4MDc1OWFiZWU2IHJlbGVhc2UzMS1tYWludAorODY3ODggM2VlNmQwMzhhZjliNDZlODA5MzRmZTk3MGNlZTBlNjc3MTI2N2UyZiByZWxlYXNlMzEtbWFpbnQKKzg2Nzg5IDcyODE5MzdiMmQ2NWIzZDU4YmM3Y2JkNTg5YjQzNzM5NDRjNWVmZmIgcmVsZWFzZTMxLW1haW50Cis4Njc5MCA5ZDZlMjQ2NWY1OTI1NDY0ZmIwOTRkZWU1ZTE4ZWEyZDZlZDFkODI5IHJlbGVhc2UyNy1tYWludAorODY3OTEgNGVhMWM2YTRlOTJkMGZiOTk2YjQ0OTgyZTE2ODFlZjdkYTcxMmJkMiBweTNrCis4Njc5MiAyYzE2NzI4MTYyZmRkYmViNmIyZmNiMmY5ZmEyMjg3N2ZmMWYyNmExIHJlbGVhc2UyNy1tYWludAorODY3OTMgMDAwMGJiYWIwOGI0NDc2ODQ2YzAyMWU0NTk3OTIxZmQwNjUyZTNmNCByZWxlYXNlMzEtbWFpbnQKKzg2Nzk0IGIwZTk3ZGJkOThiODQzOGUxYzZlODE3NjJiNDQzYzQ4OTViNGFmMGIgcHkzaworODY3OTUgZmEwMTdiY2FlZTEwMDAzYjIzODhhMWRmMzI0MTdmZWFlYjg2NjVhOSBweTNrCis4Njc5NiA1MDg0Y2U5NDg0Mzc4NTlkNTFhMjY3NjE1MDQ2NzFhOGNjMGJjM2U0IHJlbGVhc2UzMS1tYWludAorODY3OTcgNDZmZWFlYzcyOWJkYzY3YmZiMjA0OTFmZGFjZDY2MjlmNGE3MGY5YSBweTNrCis4Njc5OCBmYjVjNDVkMzhlMmFmNTE1MGRiMjU4YzJmNTQzMzg2OTAwZDM5YjkyIHB5M2sKKzg2Nzk5IGFjNTIwN2RkOGQ5YTMzNDY2M2Y3ODc0ODg2OThhNTRlM2E3NzU5Y2YgcHkzaworODY4MDAgYWNlYjQ1MTZhOGQ0NGEyZDUwYWU1YzU2ZTY0M2EwY2JhZTMxNWQyMSBweTNrCis4NjgwMSBiZjVmNDE3NGI4YzJkNTg4OGEwOGI0Y2M2YjYzOWNlZDViMWUwMjdhIHB5M2sKKzg2ODAzIDIzMWIwYmJjMWY5MDQ2NGM1ZGQzMjI4NzllZjhhYjAyZGI3YzdiYWEgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODA0IDMyOTg0MmRmMDZhMTBhM2Y2OTE1YjNjMTIwZWRmY2EwMTUxOThmNTUgcHkzaworODY4MDUgMGUxZGQ0NTQ4YWExN2MxYjA4YmY3ZWQ4ZWEyMjhmMWVkNjY2Mjg4ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MDYgMTMyYTk0ZWMwY2U4MGQ2ZWU2NWE3N2VlNjUwNGIzZGJhZWYwNWRlNSByZWxlYXNlMjctbWFpbnQKKzg2ODA3IDQyNzllNDE3YjJhMDI0YjBjYjRiZTgwMmQxMTIwOWQyYWQ5ZTIwMzIgcmVsZWFzZTMxLW1haW50Cis4NjgwOCBmYWRmNzRjMGM1MDQzZDk3OThlYjM4YTYwMmRhNjc2MGFlMjNkZTViIHB5M2sKKzg2ODA5IDc4NmVlMTFlMGM4NDFhMGI1M2U2MTQ3MTAyZGJlZDUzOWFkYjk4NGEgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODEwIGM3YTM0MmE3OThlNzcxMzc3OTAwNDZmOThjZTE5OWMxOTJhNzJiNGQgcmVsZWFzZTMxLW1haW50Cis4NjgxMSA3NDliMWU3MTM5MWNhZTM2MjJlNDI4MDVmMzY3YjJmNmRkMWJmZTA5IHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgxMiBjODE2M2MyYTFiNmY0ZGUxNDE2NjBlM2ZiMzkxYzk5MmE3MjczZThkIHJlbGVhc2UyNy1tYWludAorODY4MTMgYzgyY2EzYmViNGRmMTVlOTUzMmRjMTM3NWYzOWZkYmM2ZGJhOTgyNyByZWxlYXNlMjctbWFpbnQKKzg2ODE0IDlmZWZmMTc3ZjQ0ZDEyNjlhZTIzZDYzNjkwY2I2MzExYzBlZjhiNzYgcmVsZWFzZTI3LW1haW50Cis4NjgxNSBhZDc5ZjliM2EwMjE5NzBhZjBlZWQ0ZTJjN2Y0MWZkMzc5N2QzNDU5IHJlbGVhc2UzMS1tYWludAorODY4MTYgZjIyMjI1YTlkNzIwODJhZjY2YTkzMzMwODJhMDExZTNiNGRmMmQ3ZSByZWxlYXNlMzEtbWFpbnQKKzg2ODE3IGVhNGVjNmRlOWNlZmUwOWE4NmQ4YjMyNGEyYzhkMGQ4NDYyODBmNmQgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODE4IGFiYmM1OGEwNmU0M2Q0OGQ5ZWYzZjhiNTRlNmVmNjQ5ZDc1MzQ0NDMgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODE5IDk2Y2E5OWRmZWZkOGVlNzFiNDAzZGE5NmRiOWJlZDZkNmViZTY0ZWQgcHkzaworODY4MjAgODZhNjUzOWQyYzI1MzVkZWVjNTE5NDdlNDlkNmJmMzgyMTg3ZDQ1ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MjEgMGI2MzQwNzMwOTEzYzRjYzU1NzU5NmU2ZDgyMWVlNjJiZDRhNTVjNCByZWxlYXNlMzEtbWFpbnQKKzg2ODIyIGI0YmZkYzUyYWQ1MTA2YjE3NGE5ZGMxNjczZWZjOGM4ZTMzNDdjYzcgcmVsZWFzZTI3LW1haW50Cis4NjgyMyBjY2YyNjMzYjk1ZGQ4OWY1YzFlZjE1ODk2NDM1MTQ5YmRjYjY5NGM5IHB5M2sKKzg2ODI0IDYzMzQxZGQzNjBhZjVmNzAzODcwMmJmNmQ5MTRmYzA3ZGQ5MGExYTggcHkzaworODY4MjUgZmVlOThiNjA0MTM5YzdmNWJhODEzYWE3NzI4NmZlNGNmYjlmMmRjNSBweTNrCis4NjgyOCA1OTYyMzlkYTNkYjc5ZGVkMGM1ODJhZDg4NGZhNmE1NWRlODU4MGU4IHB5M2sKKzg2ODI5IGQzYmFkNDFhZDcwMTc3Nzg4ODQ1NDFkZTI3MzQyOWRiNGQ4YWQ5MjMgcHkzaworODY4MzAgNThjMmFjNjBjY2I5ZGFiNGQyNWU3ZTJlOTBkZGUyNzY5YmRiNDk3ZiByZWxlYXNlMzEtbWFpbnQKKzg2ODMxIDgyYWRlMjEzYTY2ZGY5MmZiNzQzNzkyMTE3ZjVmMGRiZDBiZjZmZDcgcmVsZWFzZTI3LW1haW50Cis4NjgzMiA1Mzk1Zjk2NTg4ZDRmMDE5OWQzMjljYjc5ZWIxMDk2NDhkYzRlZjVlIHJlbGVhc2UyNy1tYWludAorODY4MzMgN2UzOGY4ZmJiYWRkYWI4YTE2YTY2NWE0OTRhZmVjZmNkNTBkZjNlOCByZWxlYXNlMjctbWFpbnQKKzg2ODM0IGE0Zjc1NzczYzAwNjBjZWUzOGIwYmI2NTFhN2FiYTZmNTZiMGU5OTYgcmVsZWFzZTMxLW1haW50Cis4NjgzNSBkYzI2ZTRhN2QyZTYwZDA1MjNlNjEwMjIxYzU1OTcxNWU4Mjk4ZTQ2IHJlbGVhc2UzMS1tYWludAorODY4MzYgNjNhYjM5ZDExODYwZTE1NjI4MzA0MDMyZGIzN2JiNWE5ZmNlMWEyZCByZWxlYXNlMzEtbWFpbnQKKzg2ODM3IDg3MzdmYjE3ZjQ0NDAxYTBhMmU5N2Q1NGM5YWU1MGQ1ZmM0Y2M3MzUgcHkzaworODY4MzggYTI3ZmIxZTZlMDlkNDRlNGYxMWQ3N2Y0OTcyMTY3NDRiZGFkMmVhYSBweTNrCis4NjgzOSA0MWNkMDkyYmU5M2FhNDA2NDRiYzg4NWM3OTNmNzU0M2M0MWQ5YzljIHB5M2sKKzg2ODQwIGY5NTEyNzRhZjNjN2Y1N2NmMDg0M2QwZGY1YjlkNzg0Y2ZiMWFiY2IgcmVsZWFzZTMxLW1haW50Cis4Njg0MSA3MmYwYmVhMDU0NTc3OTAwODRiZjgyNzhhYmEwNmU5ZjAyZjVmOGI0IHJlbGVhc2UyNy1tYWludAorODY4NDIgMWI3N2YyZWIxNjA2Nzg2NmE4YjkyNWU5ZmRlZTNmYjgzMzkwNWI0ZCBweTNrCis4Njg0MyAwZjBjNmI4Nzk3OTZiZWU3N2VhM2I3NWNmMDJkYWYyM2IyMzM4OWZkIHB5M2sKKzg2ODQ0IGQwYTE2ZjlmMzc0MWZkM2M5MzRjZmZkMzk0OTA3NjFmNzU2Y2RjODYgcHkzaworODY4NDUgNTM4MThlNGM0ZmNhNTY0ODg0MDdkOWNjYjJmOGM4YzFiYTY1ZjY2MSBweTNrCis4Njg0NiA1YmUzZWZiNDdiZmQ1ODM2ODc4NmI1MmUzMWMwYTQ1ODM3NmU2YmVhIHJlbGVhc2UyNy1tYWludAorODY4NDcgZTBhNTI1MjAyYzc3Y2M2Nzk3NTVmZjgxZWUzNTM1MmUxZWJiZGE2NCByZWxlYXNlMzEtbWFpbnQKKzg2ODQ4IGM0YWFjOGU2OTg4ODY1YjQwZWY3YThmNzE3ODZiYWQ4ODc1ZDU3ZjcgcmVsZWFzZTI3LW1haW50Cis4Njg1MCAyN2VlNDJiMGZhZjZjY2IwN2UzMGIyMWQ5ZDZmNjRiN2NlNzgwYzcwIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4Njg1MSA3MmZmNDM1MzIyMTQ4MGI2M2Q2ODE4NTNiMmM4MDJiZDBlZjk0ZjgxIHBlcC0wMzg0Cis4Njg1MiBkMjRhYTNiMWVlMjgxNjk3NDQ5OGZlMzEzMzVhNmQ5MDA2Mjc2ZWNkIHBlcC0wMzg0Cis4Njg1NCAwM2QwZDE4NjcxM2I0ZmU0OTdjY2U4NGQwYTgzMTczMTQyNWM5M2UwIHB5M2sKKzg2ODU1IGJkZDU3ODQxZjVlMmY0NmY4YzBkNmEwMmQ0MjcwOGVjNTc0NDQ3YjQgcHkzaworODY4NTYgOTNjZDRkZThlZTBiMDRhMTMwMmZhY2I4MGZmYmQ0MjYyNmQ4YjA1NiBweTNrCis4Njg1NyA2OWVjNzc1MjYxODBmYmU5MGUwYjI0NmQyYjg2MzdjNzhjZGZmZDBhIHB5M2sKKzg2ODU5IDE2ZTNjOTViYzQ2YzVhNGVjYmUyOTc2NjM1YzFhN2Y4ZmViNTZhZWMgcmVsZWFzZTMxLW1haW50Cis4Njg2MCA3YTVmMjY1NDhlMWMyODUzMGM4NzRhYzEyODYxYjkzZmY3NThhNDE3IHJlbGVhc2UyNy1tYWludAorODY4NjEgZTVmY2I0MjI2YjQyYTY3MzZmNDNkZjMxNDcwZWU3OTQ0ZWU4YWI0MCBweTNrCis4Njg2MiAyZTBkOTAwOWFiNmI5ZTFjNzFlMWY5NmU3MmQ5ZDNmMzAyYjI5ZGVhIHJlbGVhc2UzMS1tYWludAorODY4NjMgOGZkMTNjNWQzODgyMzk3NDQxYjk3MDc2YTczNGYwMWFiOTNkZjZjZCByZWxlYXNlMjctbWFpbnQKKzg2ODY0IGU4MTJkYjM0NGE2NWQ1NTJhYzAyMDBlNTRlNzdlMWY4ZjI0ZmNjYWMgcHkzaworODY4NjUgZWFkNTMwNzAzYjliZTVjYjg5ZmE0YzIzMWZlN2ZlOTNjZjM1N2E2NyByZWxlYXNlMjctbWFpbnQKKzg2ODY2IDY2N2QyODM0NDAxNzE5ZGEyZmE0Mzk1ZDk3YTI4ZGUzOTY0ZGE5ZjUgcmVsZWFzZTMxLW1haW50Cis4Njg2NyBjZDZkMGNhZmZlZjI0YmUwNmQyZWM4ODA2YjZjMjA5MDhmMzBkYWM1IHB5M2sKKzg2ODY4IGIwZmYzMzNlYzNkYTFiZDYzMjZhMTU0N2ExNzJhMDg0NmY4NDM1ZmUgcHkzaworODY4NjkgZTg5YWE5MTQ3NjI0Y2E2MzliOWFjZTNiM2E1ODAwMjE3YzYxNmU2ZCBweTNrCis4Njg3MCBlNzM5MmZmZWUwNzFhNzZhYzBlY2I1MTgwNTFjMjUyMjIyMDgzZjEzIHB5M2sKKzg2ODcxIDZjYTg5MjJkYWZiNTNiNTlkOGU3OTdkZWZmN2RmYWNmNDVmOTQyYjMgcGVwLTM4MgorODY4NzIgMGNjYTk2NjE1Mzk1MWI5NjNiZjE5ZjUxYTA4MDhiMWEzOGRjZTJjMCByZWxlYXNlMzEtbWFpbnQKKzg2ODczIGRlNmU3OWM1YjFlZDQ0M2ZmOGQ1NGIyZmZiZjg2N2Q4NDI4NGRjYzcgcmVsZWFzZTI3LW1haW50Cis4Njg3NCA2Nzk5ZDU0ZGIzNzgxMmFiZjEwYTFkMmUyMDgzOTVmYTc4NTAzZjRjIHB5M2sKKzg2ODc1IGUzMmEzMDBhY2FjMmZjODZjN2QzYzQzZWUzZDE0ODQ3MTI4MWFjYzggcHkzaworODY4NzYgOWU5YTcwOWIzODllY2FlMzZiMTQ2ZjkwNzg5MTFiMWVmNjkxNzZlMiByZWxlYXNlMzEtbWFpbnQKKzg2ODc3IGVkNGJmYjc1ZDI4ZDg4MDY0NWM4MzQ1NzlhZjViNmZhODBhN2ZmM2EgcmVsZWFzZTI3LW1haW50Cis4Njg3OCAzMTJiMjkxNmNmZDQ1ZDhiZjMxMWJkYmEyNjI5M2ZhODg0OTU4NjBjIHB5M2sKKzg2ODc5IDMyZTY3NWRhYTBlNTFiZmUyZjU0ZDM3MmNjYmRlMmM0YjdjM2VhZTYgcHkzaworODY4ODAgZjE2YmY0Y2FlNWQ3MzdmYWY0MzZmMGUxZWZkY2I1ZjQ0ZGQ0NzFiZiBweTNrCis4Njg4MSAyOGI2N2I1NzBmMmJmOWE1OWJlNDM1MmRiMTRjZmEyMjU1ZGVkNDMyIHB5M2sKKzg2ODgyIGI0MDVhN2YwYWVkNzFiOGRhNTkxYmZmZTBkN2UyMGRlZjA0YjliMzkgcHkzaworODY4ODMgODMwNGJkNzY1YmNmNzdmODM3ZjUxNjlhODhiNWQ3NDRiNWUyZDAzMiBweTNrCis4Njg4NCA3MjQ5MjBhMDE1ZjcwMWEyMWRkN2UzMjlhNDhmNTRlMTNkMWRlMWE5IHB5M2sKKzg2ODg1IGVkYThkYTNhNzViM2M2MjQ3MDE0MzY5ZGVkNTg5MGFmMjA5ZmM3OWIgcmVsZWFzZTI3LW1haW50Cis4Njg4NiBkZWI5ZjJkMzdiNjNiZDEzMWFhOTQ4ODY4YWRlM2ZkZTQ4YzRlNDA5IHJlbGVhc2UzMS1tYWludAorODY4ODcgZmQ2ZTU2NTNiMzEwMjUwNjJmYjdiYTYzOWNjMjI5ODZmMmZiMDFmOCBweTNrCis4Njg4OCAxODM5OWU2MjBiNDExMGNkNDk2Y2M5N2VhM2VhOWM4ZWNhYzA1MDMyIHB5M2sKKzg2ODg5IGU0NDQxMGU1OTI4ZWUzMTE0YzY1OGRmNjdjZDE4MGU1YjUwMTE1ZDkgcHkzaworODY4OTAgYjgwZjViZjI2ZTk4N2I4ZDU1MGE1MzNkYzg4NDI3NTQ0YWYyOTE2MSBweTNrCis4Njg5MSBmNzk5MjhhZGFiNTc5ZjNjZjFhYmY4ZmRjYmViN2FmZTdjNGJjZTRmIHB5M2sKKzg2ODkyIDdlYTAyZjMxYzI1MmNiZWI0M2U3ZWJhY2U0OTIxNjEwYTVjYmU4NGUgcHkzaworODY4OTMgMmY2ZDBmMzYxYWI5MmM5N2M3OTc2ZTQwYTY3MTA1YjBhNDMxNzRkNiBweTNrCis4Njg5NCAzNDAzNjlmYjJlNzBlZjQ5OTE3NmM4YTM0YWFiMzM3NjY1MTQ5ZGEzIHJlbGVhc2UzMS1tYWludAorODY4OTUgNzQ2N2ExYzExYWViNDY1NDQ2NTg4YWI2Y2Y4MjYxMTExZDcxNmY5MyBweTNrCis4Njg5NiA2NTZkMjRkMTk3NDliMGIyZmFjM2Q5YWQ3Y2E3ZThkMmRhMTc3YTUzIHB5M2sKKzg2ODk3IGQ2MTAwNzQ5NzBkNzllM2Y1NTdiMjdkMWM2YjVjOTg3YWMzMmEwMmQgcmVsZWFzZTI3LW1haW50Cis4Njg5OCAwNGU4YmQ5YTFhYmFlMzc5OTg5ZDUzMWM4MmM4NDJkNDU4NWMwMGNlIHJlbGVhc2UyNy1tYWludAorODY4OTkgN2ZkMmM3ZGJkZGE2ODM4YmRmOGNiNThiOTBiZDAyNmQ2YTNhMGJhOCByZWxlYXNlMzEtbWFpbnQKKzg2OTAwIDI5ODRiNTdkNjdkYTQ5M2I4OTliM2QzMjA1NTFkZGZiNDRkMmY5MWYgcmVsZWFzZTI3LW1haW50Cis4NjkwMSAyYjJmYzQyNjIxNzAxZjg5Njk1NDIzMTI5NDlhNzcwOGM4ZmQ5ZmNiIHB5M2sKKzg2OTAyIDExNTUyZWE2YTk0NGMzYjMzNjkwN2IxYTAwOWQ1ZDllMDM2MjM2M2QgcHkzaworODY5MDMgNjkzZjc0MzBjM2NhNTA4MDdiMzA1MGM3MTYwZjdjMzVhOTg0YWY5YSBweTNrCis4NjkwNSBmZWUzYTJmMjQzZThlN2YyYjAxZDlmMTA0NDdmMTYyYWIzZmEzNzNjIHB5M2sKKzg2OTA2IDA5MjNkOWIzZGU2ZWE4MjJjMjlkNTFhMmYxMzE4ZWI0NmViNGVlMGIgcHkzaworODY5MDcgNWNiNTNmMDk0YzFhODhkMGMxZWM1OGRlMTgxOGNmZTc4MDk5MzI3MCBweTNrCis4NjkwOCA5MTg0YTM5MDlkZTBjOTkzOTJkYmViMzc0ZTQ1NDMyOTNkNTI5NDRiIHB5M2sKKzg2OTA5IDhiOTVlYTMxNzI1YjNlZTgxZWEyNjhjNzE1MDk0OGQ4ZDY1Y2Q0NmUgcHkzaworODY5MTAgMzhiZWM5MGZkOGFiNjAzZDhmZjg4OTE5NDhlZDliOWNjOTA4OGM3ZiBweTNrCis4NjkxMSAwMGM4Y2RmNTM5MzZiMzVhYmMyMWFmMDE0M2YyOTM4ZGQ5MzM0YzY4IHB5M2sKKzg2OTEyIDE0ODk2ZjEzMTNkYjA5ZmY0Y2FmMzUxMGZmNWYwY2E3YjBiNDMwYTkgcHkzaworODY5MTMgZmY3YzU5Mzc3OTAzMDBhNjJjMTVkYjhkNjQ2MjFjMzliMWI2N2IwOSBweTNrCis4NjkxNCA3MTgwOTg1YzFjMjIzZDMzMjBkOWIyNjYyNjdhYzRlMjJlNWFiODc5IHB5M2sKKzg2OTE1IGU1YzI4ZDY3NjljZmQxNzE2ZjI3MzFlM2RiYzFhYTk1OTdiOTg3NWMgcHkzaworODY5MTYgMmJhYWQ4YmQwYjRmYzg2NWYyZDhkNGJlMjljNDIzNjBkMDgxOTVkMyBweTNrCis4NjkxNyAzNzAwMmU0ZmY2NzcyZmJmZWM5MWM2MTZjODUzZDNjMzA0YTFlYmRlIHB5M2sKKzg2OTE4IDVkYTA5M2I0OWMyYTJkMzQyMzY4YzI5NjdlNTBkZjkxMTA3NGZiYzQgcHkzaworODY5MTkgMTNjNzFjOGM1YzBmODVlZDE1YzMyZDkwNTM2NTYyOWVmMDhiZTExMSBweTNrCis4NjkyMCA0ZTE4YjliZTI1YTQwOGUxYjhkM2U2NzU2ZGZhNjNkMjliZTI3NzYwIHB5M2sKKzg2OTIxIGNkODg3NjdiOGQwYzlmZjE0OTEyY2Y1YjA5MDA1OGI3MzU5ZmU0MTQgcHkzaworODY5MjIgNDM5NjU1ODBjNTU2ZGI5NDU0YmY3MDE0MDg2OGRmYTdkYjI5NjNiNCBweTNrCis4NjkyMyBjNWI1NDhmZDBjOGM4MjYxMzJjMjU3Y2M0YzBjNDYyNzRjYzBiMmE3IHB5M2sKKzg2OTI0IGI5MzE3YTlhM2QzYWI3NDdmNjNlZmMxOTE5NjhlYTEzMWNmNzE3NDIgcHkzaworODY5MjUgZTMxYTQ5NzIwODRhZjUyNjk1MjdmYzEwZDA2ZTgzZjc3ODNlMDI4MCBweTNrCis4NjkyNiAwNzhlNWM3YjMxNTlmMGNiZmYwZTY3NzQ3M2QxNDlkZWEzNWM5YWFiIHJlbGVhc2UzMS1tYWludAorODY5MjcgZTc4NDRiN2Y2ZWQ0OWViODJlNDg5MzI4NzQzNWE0MTBjODhhODU3ZSByZWxlYXNlMjctbWFpbnQKKzg2OTI4IDA5ZWQ0MTFhMTA5MDYyOGU2YzM3NzA5MzQ4MjM0YmQ2MzlkY2M5N2EgcHkzaworODY5MjkgOTBiNmNiZjJiMTFiNjEzY2JhYmIyODI3ZWVjMjcyNjEzOGUyYTJmMCBweTNrCis4NjkzMCA4OWNkYTA4MzNiYTYwMzkxYzE2MjEzNzk0MGQ0OGZjZWMyMzI2YWQ3IHB5M2sKKzg2OTMxIDBkZGZhNWJjZmJkMzcwM2E3ZjI5NWFmNjY2ZGU3YjAzNGU3YmIyMDAgcHkzaworODY5MzIgZDJlYTcxMWFiMTA3YzViNDg2OTAxODRmYzJmODUyYzZkNDNmOGE0NSBweTNrCis4NjkzMyBkYzczNDcyOTM1YzU4ZGM5MjYxM2Y4YWM0NDdkYjJjZDk1YmE4MDU4IHB5M2sKKzg2OTM0IDdlNDgzMzc2NGM4OGMwMDM3YTFmOWRmZjdkNGRhZjcwNjM2NDQ0ZGYgcHkzaworODY5MzUgOWEyMDU4MzA5YzFhYTYwN2QyM2MxNjg5ZTAyYWE3M2UwYzQ0ZDExYyBweTNrCis4NjkzNiBiOGJiYzBmYzYxOTE4OGM0MmUxZWU0MDMzMmFiZDI3MmM3NjM0YTE4IHB5M2sKKzg2OTM3IGUzMzlmY2E2ZTUxYTEwMTZmMTg4NTcwNmRhNDA5NDQ1MWEzNGU3YzEgcHkzaworODY5MzggYTM2MzBkZDkyMjE4MGIyMTlmYjMxZmIzOGFjZDQyYmMzOWM2YzQ3MCByZWxlYXNlMzEtbWFpbnQKKzg2OTM5IDQ1YWY1YTA2OGNjN2Y0MDZhZjgxZjM2ZTk1YTE1OThkZWNjM2IxNzUgcmVsZWFzZTI3LW1haW50Cis4Njk0MCAxYWRkOGNlZjc1MjdmZTlhNmZmNjQ5MTI5MzE3OTFhYjcyMDMxMDg2IHB5M2sKKzg2OTQxIDVmMjQxMjg0M2JiOTFlNmQxZGYyOTNlOGFiMThiMTA3NGQ5MDZkNGUgcmVsZWFzZTMxLW1haW50Cis4Njk0MiA4NjI5YzJhMjM0ZGIwMzZkM2RiODQ2OTBiODRkNmFkMWQ3MjkzOTgxIHJlbGVhc2UyNy1tYWludAorODY5NDMgZGVlMjAxNTVmZDY1NzQ4ZDhmYzI3YjRiZDgyNTJmNDI3OTYwZjQwNiBweTNrCis4Njk0NCAxOGQ4OWEzMGZhYmY5OTMzNjkxZjQ2ODhlZTI0MTRjZDhiMWJhNTY0IHB5M2sKKzg2OTQ1IGUxMWY3ZTY2MjM2OTEwNmQyYTA3YjAzZTBhYzc4ZjhlOWRhMmU1NjMgcHkzaworODY5NDYgOTk2Zjg0ZTUwNWJlMzUyZGQwOTQ1YmMwM2RjYmVhNGExZGQ0NWY1ZSBweTNrCis4Njk0NyBiZjQ5NWRkZTIwZTM5MzJkYTliNzJjYjI5NmU3YmVhMGE1YjM3MWZkIHB5M2sKKzg2OTQ4IDEwOThmYWI4NWU0NzI3MzZhODhhZjUzY2E3N2Q1N2M5YzEzODc2YmUgcHkzaworODY5NDkgZjkwNTgyYzZjYjVmZjZiNzIzNTFiYzI4YmRlNDc3YWE2ZTQ2OThhZiBweTNrCis4Njk1MCA2NGM2NDJiYjdmZjc5YWU2YjI1MWViZWUyZTVlZjRiMDA1MGJiNWEzIHB5M2sKKzg2OTUxIGUwMjAyMWZiZmUyMmI1YzUzYmJiOWFlYjhkNzczYmVhNmJhZDY5ZjEgcHkzaworODY5NTIgMWNiZmVmZmVhMTlmNzY3ZGE2YTMyYTFlYTk3NmY5ZDAzMzk2ZjY3ZSBweTNrCis4Njk1MyA2ZTQ5YWYyZTA4OTEwOWZjOGEyODZkZDcxM2RlNmY2NDUxN2U5ODMzIHB5M2sKKzg2OTU0IGQ3ZGUzMWFlOTVhNDQ3Y2M1MGI3ZDEzNWE1MzE1MGFhMWRiMjJjMTEgcHkzaworODY5NTUgZDdmYTE3YTQ2NjlkYjg1YWFiZDE1MDk2MWIzOTZhNzZkMzI5NjI5YiBweTNrCis4Njk1NiBjNjE0Zjc4Njc1ZDRhNzAxMjQzNjQ4YTQ1ODg2MDVhOTY2Mzk0YWQyIHB5M2sKKzg2OTU3IDA5ZDIzZmIwZDQyOGVkZDQwNDEyNjhhNGMwY2UzZGRmYzUzOWI5YzUgcHkzaworODY5NTggYTBjZjY0YTUyOTFlNzVhMzFjZTIzYmI5ZDlmZGJjNmQxMjI2ZWQzYyBweTNrCis4Njk1OSA3ODUxYmZiMWJkNzMzOWY4NjBlZGIzYjE2Nzg5NjUzZDhiMzNiODllIHB5M2sKKzg2OTYwIDc2ODU0ZTQ1YzQ2NTI3MGYyZDAwMTgwNjE1MDZjZmEwNDhlMDkzODYgcHkzaworODY5NjEgOGJmOTBiODcxMGQwMzc4MjdjOTE0MTYzZDUwOTY0MWViOTA4ZWExYyBweTNrCis4Njk2MiBhNWEzYWU5YmUxZmIwMzk1Mjg2ODRiYmMyMjg5ZmVkMjZkNDE4YzYyIHB5M2sKKzg2OTYzIDEwNzU2MWM1OGRlMTA0MzUzMTVjM2FkMWM4ZjJkNWM3YzgzOTc5NTQgcHkzaworODY5NjQgNDhjMjhjMjgxZDU3YWZmZTQ2OTcxY2Y5Yzk3Y2VhYTExODBkMGMwMSBweTNrCis4Njk2NSAzODM1M2JhNDA4YTFkODQyNmRhNzVmMDUxODg4ZTRhMjAyMGM4NmNlIHB5M2sKKzg2OTY2IDU3N2EyNWQ2NTVjNGFhZmMxODdlYzQwODkwNWZjMzQ3ODlmOGFlNDcgcHkzaworODY5NjcgODFmNGQxZmRmNTczNDEzMmVkMzAzYTYyOTEyZDRmMDJhYmViMTgxMyBweTNrCis4Njk2OCA3YzFiNGNhNDVkYjZkZDllMGMyNThiOTYxZGM1MWQyNTM3ZDM1MDQzIHB5M2sKKzg2OTY5IDk0ZmE1M2I1OGVlNTM0OGVmZjE1Y2FjNmRkOWIyZDRlNWRkODlkMzMgcHkzaworODY5NzAgNzgyMTYyNjM0MjVkMTU4MWU5ZmY4ZWZiN2I5OTc4YTRjYTUwNzAzZiBweTNrCis4Njk3MSA0YTU5OTkwMjMxMGRiOGE0ZDk5ZGM4NmIwOGIwMWE1NTU0NDFmMTM0IHB5M2sKKzg2OTcyIDViNjg2NzVkNzI2OWM2YTVjMDQ5ZGJlMzdjMmU2MWQyNDg4NGFiMjAgcmVsZWFzZTMxLW1haW50Cis4Njk3MyBmZGIzNTIzMWViZTI1OWY1MmUyODMxOGIxMWQ5YWI5MWNlMTNmOTNhIHJlbGVhc2UyNy1tYWludAorODY5NzQgZmUyYTU2YTFiYTc0NDM0Y2MwMTFiNWI3MDhmNWUwZmIyYzNkOWU4NCBweTNrCis4Njk3NSBmYWFkMTc5N2ZjOTJjZDYxZWU1N2U5MzIyNmIzMDU5OWZkODk5Y2MzIHB5M2sKKzg2OTc2IDVmZGE1MTk4MzRkZjg1MmI4ZTRmNjYzYjc1MjZiYWI2NjY4MTVjZjcgcHkzaworODY5NzcgYWUxMDI4MmU3ZjRlYzdmMmQ3MmM0NjVjMzViMjIxNGM3OTM2MDY2OSBweTNrCis4Njk3OCAzMDFkMjNkNmRkOWI2ZWQ4MDMzODY0MGRhZTcxZTg1ODQyODk0ZTBhIHJlbGVhc2UyNy1tYWludAorODY5NzkgNTIzYTZmYzUzYTcwNWM0NWNmYzI4OTlhMzkwNjg1ZDZkNmJhOGUyMiBweTNrCis4Njk4MCBiMzAwNDg2NjNiN2JmZTYxZTdiNTJkZTBiYTk4MzEwY2FjYjM3MDJmIHB5M2sKKzg2OTgxIDNkMmJmZDIwYzJmNGQ5MmRmNTRiYWQ3NWY1MmU0NjM1NDA2NzM4YjAgcHkzaworODY5ODIgMzIxNGUyMzFhMWM0NTkzZTVmYjMwYmM5ZGJkYjNhMGRiMmU4YjUxOSBwZXAtMDM4NAorODY5ODMgMjJmMGNmMWEyNzExYjI0NDcxODAxMWY2NzYzM2RkNGQ4ZTA4M2Y0ZiBweTNrCis4Njk4NCBmNzRmNWEwODNiNmY3ODU3YjdmNzU0Y2JkMGRhYTJiNGE4NWE5OWI0IHB5M2sKKzg2OTg1IDgzYWQwMGEzYTQ4OTE4MTY1MmQ0YmYyZWQ1YmFkYzNhYmM0MjZlZGQgcHkzaworODY5ODYgYjAzNDgzMjQxNGY3ODc4MDZkMmFhNTNhOGY4Yzc2MWE1YjkyNWEzMyBweTNrCis4Njk4NyA2NjVmMGZjNmRkZDdiZjM4ZGY1MDExMTkxOWQzN2Y2ZTUyMzM3ZmE4IHJlbGVhc2UzMS1tYWludAorODY5ODggN2NlOTAwMWQ3YTc3MWQyNDRmNDI5Y2ZhMjU0ZmEyZWRlMjhhNTcxYSByZWxlYXNlMzEtbWFpbnQKKzg2OTg5IDMxODJjNjA4N2U1MmVlMTBmNmFlMTRkN2ZjNDgzMDg3NDE2OGM2MGYgcGVwLTAzODQKKzg2OTkwIDU1NmRmMDg3ZGU0ZmMxMzJlOWRkNDA2ZDA4NGI5ZGUzMjJiNWJiOTEgcmVsZWFzZTI3LW1haW50Cis4Njk5MSBlNzU2ZWM4ZjQxNDNiYjlhM2YxNDgzYzRjMzIyNjA2NzIyYjI2MDdmIHBlcC0wMzg0Cis4Njk5MiA1YTcyM2I3YWVmYjcwZjcyOGNjZWYzZDUyMzUzYmM1YWE0MTExNmIzIHJlbGVhc2UyNy1tYWludAorODY5OTMgNGM5ODQ0NzMyOTI1NzMzOWI5NTlkMTdiMmUzZmIwOGNmMjVlYzgyNCBweTNrCis4Njk5NCBiZDNiYTg5OTQyZTMxNmQzNWNhOWEyMjFjNTJlNjQ5MGI3ZGY4ZDA4IHBlcC0wMzg0Cis4Njk5NSBmODk1YTIyMjFmZTEzYjAwOWZkYjViZTAyOTViMWM2ZDJiZjkzYTZmIHBlcC0wMzg0Cis4Njk5NiAzZGZlYzhmMTRlNzMyZTdiZDZlMDM1ZTY2YjQ1ZjIwMmFjMTlkOGI1IHB5M2sKKzg2OTk3IDNkOWE4NmI4Y2M5ODA0NmYwZDc0NTY0Nzk4Mjk0MTBlMzg2YmU2YjMgcHkzaworODY5OTggNjJiNjFhYmQwMmI4ZDcwOTUzOTc2ODc4ZWQ1Y2UyYzIxNTc5MTRmYyBweTNrCis4Njk5OSAxNDg2NDE2Yzg2ZDk3ZDgyMTgxMDczOWJiZmFjZmQ4ZTNjYmE3Y2Q2IHB5M2sKKzg3MDAwIDZiMDM0OTFlZTE3MWI0OWJmMTcwZTMzMmMxZGVlZTYxOTBlNjBlNGIgcHkzaworODcwMDEgNGNkYWZiMDJiMjBlMTU3NDUyYWY0Njk3YWZkOGNkN2RjNDdjODM5NiBweTNrCis4NzAwMiA1ZWM0ZWQ1MThlZjhmZDg0OWM5MzM5NmJjMGJhMWY1MWE2ZWUyMTU0IHB5M2sKKzg3MDAzIGE2ZTk0OWE2ZmZjOWM5ZjFkNzI1ZjU4ZjA5ODAxMTdiMTdiYTU2MGIgcHkzaworODcwMDQgZDYxODNiY2ViZGRlNjgyZTk0MzIwNjYwYWFjMThlYzJkZTk4OTYzZSBweTNrCis4NzAwNSBkMjliNTVhYzE2MzE5MzgwNjBmOTQyNGI0YTE0Zjg5NDJkOGFkOTg5IHJlbGVhc2UyNy1tYWludAorODcwMDYgN2MyM2E2OGZhM2RlODZhMzdkZTk5MWY2YTE2YmJhNjk0NmIyZDY3YSByZWxlYXNlMzEtbWFpbnQKKzg3MDA3IDdiNmFmNTZlZTc0ZDA4NDcwZDBjMTEyODViNmMzZjE1YzBlOWM3N2IgcHkzaworODcwMDggYTJmYWJlMjI0ZTg3MzYzMjEzODMxODdlMmI4ODJlOGMzODhiYTg0YSBweTNrCis4NzAwOSBhOTA3MTEwZGYyNWEwODk3ODliZTBiODdjNTMxN2JmNzRhZjE4OGUyIHB5M2sKKzg3MDEwIGIzN2RhNjBjOTA3MmExNjMwMGU1ZWUxMzNkMzM5NmI2ZWE3MDRiNjMgcHkzaworODcwMTEgNTZlZWQ4ZjQwN2JmOTQ2OWE0ZGQyNmZkYTE0ZjhiYTRiMDM0YzQ4MyBweTNrCis4NzAxMiAxZDM1MzFhYWNlYTBlMTA5NWRmZTU2NDYxMzc0ZmQ3MmFlNjI1MDBjIHB5M2sKKzg3MDEzIDRkZjhiNDM0MmU3MDI0M2Y3OTUxNjEwNGE2NGIzZTkxOTdmNDhiODMgcHkzaworODcwMTQgYjFlNzg5NjMxZGJjNDIxZDNiYjY0NzVjYjJjYTI4ZWUwMWE3NTkxZSBweTNrCis4NzAxNSA1MWQyOGEwZDFjMzJlOGQ4YmZhNWEyNDc4NWRjNDQwMzljYzc2ODc3IHJlbGVhc2UzMS1tYWludAorODcwMTYgM2FhZjM3YzI0ZGI4ZmE3Nzg2ZWVkYWNjNGE1ZDc3ZDJhMzNlM2Y3MyByZWxlYXNlMjctbWFpbnQKKzg3MDE3IDJlMWZjZjI4YzkxNDVjZjY3MGFjOGVlN2VkOGUzNGRhNjRkMDNhZTQgcHkzaworODcwMTggODkzYjA5ODkyOWU3ZWZlZTRmNzUzYjVkYWU5MDg1ODM1ZDNiNzUyNiBweTNrCis4NzAxOSA3MTNjNmI2Y2E1Y2UyMmVhM2NlZGE4MGRkMWNkNGFiZWZiN2EwNzc1IHB5M2sKKzg3MDIwIDhiMDJmN2Y5NDc1YjJhMzc0ODlhMTcyY2Q4ZWVmYzMzOWI2Zjc3ZjcgcHkzaworODcwMjEgZjM1YTZkN2UzMjVmZjUzMmNiMzk2NTU3YTYzNmVmMjU2NGYzZTExZSBweTNrCis4NzAyMiA0OGM0MDcwOTQxN2I5YzYwZGM0YmRjZmI3YzBkMzc1MTI4MTZiM2Y0IHB5M2sKKzg3MDIzIGY4MmVlYTQ3ODFmMTU2M2EzNTgyMTk4ZDdkMzAyMzNmMGVhOTBlYzQgcHkzaworODcwMjQgNzIxNGRjNWJmZjVjZmI3OTg5MTU0NTczNzM0NDhjMWZhMzQ1YWViNiBweTNrCis4NzAyNSBjMjU3OGE2ODg3OWQ5YzViN2ViOGNmOTMzYzI3MzFjN2EzZDhjZmYxIHB5M2sKKzg3MDI2IDI5NmU2Zjg1ZjU2ZDQxNjMwMWE3ZjU5NWI3ZGI4NmY1Yzk4MzFmYmQgcHkzaworODcwMjcgZDU4MmRhYmIzMGY4NWI3NzBmMDJmZDczOWQwZTRhMTI3ZGQ5YjU5ZSBweTNrCis4NzAyOCA0ODQ1MGYwNTk3MGI5MDA4MTQxYzc2MzZmMjMzZmQyMDdlMzUyNzUxIHB5M2sKKzg3MDI5IDhjYWJjZjRmOTAzMzhiNWE5YTUwNTU4ODcyODhjZTZkMjMxOGIxMDYgcHkzaworODcwMzAgYmVkZTgzZTIwODUzNGMyZGFmYWRkYmYyZjYzZWEzZGE5ZDY0MTQyMSBweTNrCis4NzAzMSBkZTdmMjhhNjQwZTVhNjljYjZjYmVjMzRmNzNkODZjZWJiNjI0NjQ0IHB5M2sKKzg3MDMyIDU3M2E2NzI3NjIxNzFmMDRkMjE2MGQ0MjE1YjJjYThjNTMwODY1NGUgcHkzaworODcwMzMgYThmMzg0NzYxOWY0ZGIyNDg3ZmJjNmI3NjM0MDE2NjEzOWVmN2U4YiByZWxlYXNlMjctbWFpbnQKKzg3MDM0IDliNjAzNjExZjZkNGM2ZDRhYTQ5ZmYzNmU3NmY0OTZmMGZiMGZiMjQgcmVsZWFzZTMxLW1haW50Cis4NzAzNSAyOTQ4MDZjYWM4YzU0YmU1M2JiZDVmNWU4ZjA0NDdhNWQyMjdjZDQzIHJlbGVhc2UzMS1tYWludAorODcwMzYgZGRjNmM0N2JmODI1ZTM5OGUwZjRhZDUxZTA0YTEzOTAxNDhkZDNjOSBweTNrCis4NzAzNyBmMTRmNjE5ZDcwNTAwMjc1OTA0NWUwMjY0NGEzZGVhYmI2MzlhMmQ1IHJlbGVhc2UzMS1tYWludAorODcwMzggYjMyZDE5ZWI0MzM4ZWMxNTZmZGU4NDI1YjQ1NjJhMDk2MDMyNGYxMyBweTNrCis4NzAzOSBmZDYzOGNhNzQ2MzRhYTE3ZmMzODI4N2Q0NjU2NWExYTkxM2ExYTc1IHB5M2sKKzg3MDQwIGFlM2ZhNzgxZWVmMmU0MDM1ZmMyMWFjODkyMGUzY2RkZTU0YTYzNjYgcHkzaworODcwNDEgZjFiZTM0OTIzNGMzZTRkZjQzZDBjZjNiYzU5NzllNWIwNDJiZjlmZSBweTNrCis4NzA0MiBjYjZkNWQxNTFiYjQyMWEzNjA2MDZjN2YwODE5Mzk5YmZiOTBmMmUzIHB5M2sKKzg3MDQzIGYyYTRhZGUzNmExZWE4MTMwNTRjOTJhNTZhMjdiZDdmZWUwNmViNmEgcHkzaworODcwNDQgYjU1ZjNkNjM5Y2Q4NmY5NTQ3ZDU2ODNjZWRjZDgxNjdjYTkwYjZmZCBweTNrCis4NzA0NSBjMmNhODY3Y2RkMWEyMDc4NzAxMGUwMzNkYjQ4MzBlNGJkMzYwNDQzIHB5M2sKKzg3MDQ2IDVlZWJlNGFkMGQ4NzhkNTE0MDdkYWVmYWZjOGMwZDc5MjRjODI5NDggcmVsZWFzZTMxLW1haW50Cis4NzA0NyAwZmQ2YWUwYTg1NjdkYTE4OTFmZTVhZTRkMGRhOTQ1MzVkOTk0NjQ5IHB5M2sKKzg3MDQ4IDk4MzJlOTZlNzMwYTkwNTRlMjA3ZGUyOWE1NDVjNjU1N2ZhMDJkYWYgcHkzaworODcwNTAgNzU3MTFkMTc0M2NjZTY4N2Y2OWJhYzg5NTNmYzk1MjM4MGEwNmNlZSBweTNrCis4NzA1MSA0ZTYyOTI3YTJiZGE5NTk5NDc3MDY2ZDU5YjY3OTUzNGQ3NzMwODIwIHB5M2sKKzg3MDUyIDc3OWEyM2EwOGQ4Y2VlZjA3M2Y5NjhhYTI3ZTAzODcyNzdiYWQ4NjMgcHkzaworODcwNTMgMzM5ZGQ2MjJkZTVhNTgzMjQ4NDE0NjcwNDU5ZDkyOTk5NGYxZTlhZCByZWxlYXNlMzEtbWFpbnQKKzg3MDU0IGJhNzA5YWQzZmY0Y2E2OWNmNmNlODQxN2M2OWExMDFhMTFhYjUxNDcgcHkzaworODcwNTUgMDRjZWMyZTFjYTQxYTg3NGNiODU5ZjYyOGY4ZTRkY2I2OTQzZjU1NyByZWxlYXNlMjctbWFpbnQKKzg3MDU2IDE4MjdhOGFjOWIxOGU5Yzg0NmM2ODU2NGU1NTM5MmU4YmQ4MjQ3N2YgcHkzaworODcwNTcgM2ZlZTg4ZTY0NDJhM2RhMjVmOWY1ZGFmYTY5MWQ0OTczZmNmN2NmOSBweTNrCis4NzA1OCBkZmU4NmRhMjdlNjhjMzhlNjg0OGFhNGM0MjJlNWViMzFmMjIzNTQ5IHB5M2sKKzg3MDU5IDY4MjViMmNkOWI4MWMzOGJkZjI5MDg2ZWI4ZGUzMDcwMTM1ODA4MDQgcHkzaworODcwNjAgM2QxYmNiNTRhODJiNjZjZjRlZmJhNTIxMmFmMDVkZmE0NjQ5MzU4YSBweTNrCis4NzA2MSBiN2YwOGEwYWVhMjg4NjUxMmQ5MWEyZTdjMmY0ODRmYzg2M2M3OGVhIHJlbGVhc2UyNy1tYWludAorODcwNjIgMTEwOTRiNTI4OGY5ODk3ZTIzYWM1NzU4NmQzNzZlNzlmOTQwYWI0OSBweTNrCis4NzA2MyA1NmY0MmUxODRhMTk2ZTk4NzA4NDZjZjA2ZDgwMTZjZmIzNzRhNjA2IHB5M2sKKzg3MDY0IDJmNWNkMTg2OWIxYTVmNmMxYzNjMjFiOWUxYzk2MWYxZjUwNWQ0ZWEgcHkzaworODcwNjUgZWM3OWFhZjhjMGJmYzJjMGYzZjNmOTU5Yzk1NTI5ZDkyYjNiZjNiNiBweTNrCis4NzA2NiA4MzU4ZGMxM2E1NzQ4NWIwODk4ZTZjZjRiNzFhMWYzNmQ2NDZmNTQxIHB5M2sKKzg3MDY3IDFjY2JiZGRiZWE4ODFlN2JlNjgzMmEyM2Y2YWI0MTc1YTFjYjhmYWQgcHkzaworODcwNjggODM5NTVlNDYxYzRiYTczNWFhZmIzNmM0ODY1NjNjMzQyYTY2NDVjYiBweTNrCis4NzA2OSA2ZmI1NjQwNGI2YmIyM2VkNTI1YWRkZGE2MmNlNGFjYjY4ZjIyZWRkIHB5M2sKKzg3MDcwIDRkMGJmYzMwMzcyNDY0OTMyZTQ5MmVlNTcyZmIyZmQ1NGFhNzRmMGQgcHkzaworODcwNzEgYzM4ZGE0YzU0MTg0ZThmMDdhZjdmOTkzOGY0YmM2MzQ3NGNmNzI1NCBweTNrCis4NzA3MiAwNzMxNzZmMDM4MTNmMGU0ZGEzMzNmNjliYzA4MDY3YmFkMWY0OTgyIHB5M2sKKzg3MDczIDY5YTUwYmE0NGU2NWI3ZjljYTZmZDU2MWU1NzE3MGIwNzQ0MTc0MGIgcHkzaworODcwNzQgMjg1ZTBjZmJmOTBmMzEzODlmMmI5MDllOTUwNWI2ZmJiOWY3MzkwMiBweTNrCis4NzA3NSA1YzNhYzg3OTVlOWM0ZDQzNzMzNjUyZTdhNDE0YjdjYTAyYWY5MjFjIHB5M2sKKzg3MDc2IDY4MWE4ZTg5YzY1YzgyMzhhZGFlNmU0YWU3ZWU2NjA0NDJkYzcwOGYgcHkzaworODcwNzcgYjM2N2I1MzJhODIzMzlhNGM0MzEwNDFjZTI4NDRmMzMwOWM4NTI5ZiBweTNrCis4NzA3OCBjYjNjZWJjZWJhNTBmZDJhYTdkODE0NWQzNjU3NjA3YWFmNGMwODRlIHB5M2sKKzg3MDc5IGI4ZWVkN2E1NmE4Y2VlNTQzZDUwNWQxNmE3MTg3MGY5OGZhMzA3ZGIgcHkzaworODcwODAgNTlmOTcyYjFkNTY3MDFmMTVmZDZhZDhlMmE0MzI0ODQ0OTQwZDc3MSBweTNrCis4NzA4MSA1OTdjMzA2OWFmZDM5OTE3NDcwMTBiMjc4NWI3NzVkODE2MmIwOWUwIHB5M2sKKzg3MDgyIDNmMjQyNDRiMTBmZDg4ZDZmYzM0Y2IyNTg3ODU3Zjg3MGQ2MmNjMjQgcHkzaworODcwODMgODE3MDU1NTQxNmFjNDQ4ODIzZTM5ODE3NDE0MGY4Yjg5MjFhYjIwZSBweTNrCis4NzA4NCA1ZjI4NmJhMDEzOTZlNzMzOGU4NzFlNTVlMDA2YmY1MzFlZGM3ZmVjIHB5M2sKKzg3MDg1IDQ5NjViZTkwZmUxOTlhODMzNzJkNjYzNTM5OTI0MDJmNmZkZWY2ZWEgcHkzaworODcwODYgOTAyZGI0NzIyNTk0YzJmOTA1NWU1NzJlM2Q1MjY3MjU2NTU5NzM5NyBweTNrCis4NzA4NyA5MDc5ZWNkNDMzYTIyNTg5NDU2YTg1YTg5MDM4MDUwNTE5YTE3ZWIxIHB5M2sKKzg3MDg4IGI2MzVjZWE5NDE5NTc4MGM4NzE2ZTIzNjQ3OWFmMzE5YmNjMjYyNTMgcHkzaworODcwODkgZjQ0OGRkNmI2N2RiYzBmZTU2OTAxNWNlNmJlNTA2NGRiYzhjM2Q3OSBweTNrCis4NzA5MyAwNjI5MDdmNjg1YWM0ZTcxZmU3MTdiYTBiMTkzYWJiNDZlOGZjYzFmIHB5M2sKKzg3MDk0IDIzZmY0YTBjMzc1YjMzMzJhOTdlNTc5ODA1OGJjMzczNGRlZmNhMDEgcHkzaworODcwOTUgMWU0YTZlNTU3NmFmNGU0NzAyYmFkYzhlMGZhN2NmYWU1ZmUxYWQ3NiByZWxlYXNlMzEtbWFpbnQKKzg3MDk2IDI2ZWRmYjI3YTBjZThlOTQzYzVkYzhkNTYwNTVjZGY0Nzc2YzczYmUgcmVsZWFzZTI3LW1haW50Cis4NzA5NyAwYWUwN2NhYWI1MDZmZWYxNDgxMTlhMWM1ZDJjZTY5MDJhMDhkNTI3IHJlbGVhc2UzMS1tYWludAorODcwOTggMjZjNjU5MzU3MWYxZmFlN2QwMjM0M2YzNjJkYjNlOGEwOWZiNTMwMiByZWxlYXNlMjctbWFpbnQKKzg3MDk5IGUxMTViMmJmYTlkN2M2NTM5ZDBkODFmNmI1NWEzZWY1MjZlZGNmM2MgcmVsZWFzZTMxLW1haW50Cis4NzEwMCAxNWE3NTcwZTNmZmQwM2QyNzZlMGFhZGVjMjI0ODE5NzgzZTI2NmRmIHJlbGVhc2UyNy1tYWludAorODcxMDEgMzBlYWNhNDczNWNiOGM4ZTYxYjVmOTJmYmJhOGVkNGE0ZWZjZTIxNCBweTNrCis4NzEwMiBjNDg5OGNlZjQ3MTVmMDhmZTczYmMyN2M2OTNjNGViZjM1ZjgwZGJhIHB5M2sKKzg3MTAzIDI3ZDZhYTRmMTgxMTFmNTIzODg0MjBlY2Y1NzcwYzMzNDRlYTA5NjEgcHkzaworODcxMDQgMjUxM2Q4OTJiMjU0MThiNWQwYWEyYWJlNTUzYmU5Mzg1NTc1YzIyYyBweTNrCis4NzEwNSA4NjhkNTZhYzFjNTkwNjYyOGYzZTgxMjJkMGVjMTNlZjNhNDhlYTkzIHB5M2sKKzg3MTA2IGMyMzQ5YjZiZmZhZjJhNDlkM2FmNDNiNmY3ZjgxZGY4ZmE1ZTRhZmMgcHkzaworODcxMDcgNGE5NGMyZGJmOWU4NGE0NTFlZmM2NmJhMzVhNGY2NzI0NTFmMGQxNSBweTNrCis4NzEwOCA4N2YyM2M3OTQ5ZWU4MTA5MzNmOTQxN2ZjNWM5NDYyYTE5NWVmN2RlIHB5M2sKKzg3MTA5IGExZjM2YjkzNzNiYmFmMTkxZjUxYTgzMjljOGViODRhMGQ2YzcwZGEgcHkzaworODcxMTAgMzkwMDk4NDE0NzFiNTk3YTNiMmI3OGU3ZjVlM2YwODNlOTkzYTJhNCBweTNrCis4NzExMSA2ZWYxYWVhZTQyYmViNmVjODUxZWRmYjAzMWNjMjA1Yzk4MTExMzIwIHJlbGVhc2UyNy1tYWludAorODcxMTIgMTFmYzZjMzgwOGI2NDA0N2ViZWMyNGIzMjQxNTZiN2MyY2M3MWQ5MCBweTNrCis4NzExMyAyZmIxZWM1YzczNWViMjAzN2FmZGQxNTZiZTAxNDVmMjQwZmNiZjRmIHB5M2sKKzg3MTE0IDEyMWVkODQ4YzY3MGIyYjUyZTZlMjZkYjgzMjFiZGY0MDc1OTE3OTkgcHkzaworODcxMTUgMzk2ZDlmYTRmYTI0MzJhZmY4OGY1ZTRlN2RmYTY3OTZlYzdlOTVmNCBweTNrCis4NzExNiBhYjEzNTUzNzAyZjU1YzI1ZTFiM2I2N2I5Yzk1ODQwYWU0Y2UyZmFjIHB5M2sKKzg3MTE3IDQxN2Y4Y2NjZDIwODlhNjk5ODU0Zjk5YmNjYmExOTgyMzMzYzAwNjAgcHkzaworODcxMTggNTBkZTlmMWE2ZDU0NzAzZTQ5OThhNzc1NDgwNTBiMjFiMTg3NDc3OCBweTNrCis4NzExOSA3ODg5ODRiN2RhNmYyZWVmMTgwNDlmMDg5YzUyNGVmODk5MDI4Y2FiIHB5M2sKKzg3MTIwIGJkZWQwNjdmOTFlOGRkOGI1N2NiNmI2MzFkODYzNjMxOGM5ZGYzNTQgcmVsZWFzZTMxLW1haW50Cis4NzEyMSA3NWNhYjZjZDk3YzYzNTIzYTQzOWIxMjE5NTI3ZmI1ZjQzNTEyZWJiIHJlbGVhc2UyNy1tYWludAorODcxMjIgNzg2ZmJlZDc4ZDU3ZDc3NzI1MGMyNjBlNTc0ODgwODM0NDU0NmQ5ZCByZWxlYXNlMjctbWFpbnQKKzg3MTIzIGFhMzBiMTZkMDdiYzQ1NGZmYjYyNTU2OGExZTRhMDE4MTliZjAzYTUgcmVsZWFzZTI2LW1haW50Cis4NzEyNCBmNGY1NmVmYTI4NzAyMDFjZmNkNTM1ZTA1MzRhNzY4Yjg2ZTg3OTI3IHB5M2sKKzg3MTI1IDllNzJiNmQwZjQ4YmEzZjkyNTdiZmU2MmJiNzc2MjYxNjUyYjI2NzMgcHkzaworODcxMjYgMDgyMWVmMTIyZDUzMWRjZTFhNzkzZjI2ZmY3NmQxNDlmNDgxZWNmNCBweTNrCis4NzEyNyBhNDZlMTllODY2ODAxNjUzMzk2MTFhYWFkZTQ3YjMwYjFlMDc3MmYwIHB5M2sKKzg3MTI4IGM3MThjYjc4NmFlYjVmYzU4MDI5N2VlY2RmMjA3MmYyODY1NWVlODggcHkzaworODcxMjkgMzI0ZDkzZDY4NTMzMWRmNmFmOThjYTg0ZTNmOTdmOTRkZjA4MmM0MyBweTNrCis4NzEzMCBkOTRkMzY1ZDdjZTVlYzZmYjA1ZTgyNzQwNjA0NjY5MWVhNTA2Y2ZiIHB5M2sKKzg3MTMxIDUyMjAxMjJlM2U5YmM3ZDM5ZmVhNzM2ZDljOWU2YmUwOTdmM2IzNTUgcHkzaworODcxMzIgN2I3ZjZlZjRmOTljN2ZmNjEyNDAxNTNlZjdiYzVmODZmMzk4ZGM3MCBweTNrCis4NzEzMyA5NWE3M2U0YjJjZWIzZTAyOWY4NmUzYTkxNGNhZWM0M2I5YzljZTY4IHB5M2sKKzg3MTM0IDRjN2UzMmU1OTI4ODU3ZjgwNmIxMzQxYWQyYWZiYTBmODlhYzg3NjYgcHkzaworODcxMzUgMTEzOTI1Yjc5Yjk3YjAzYzZlZWI3NGFiZWI3Y2E0MzAzYzI4MjAwYiBweTNrCis4NzEzNiBkNTc1OTFiZGY2MWU4ZTk4MzY1NGVkYmQyNWM5ZjNiODBjYzFmZDZjIHB5M2sKKzg3MTM3IDUwZDE3MGJiNzFjNzUzMTg2MTQ2N2NjYzU3NWQwNGI5NjgyM2Q0ZTQgcHkzaworODcxMzggYjg0MjYxYmQ2ZDRhNGU2ZWIwYmE3NzQyMTRkMTQyZjRjYWJjNTNhZCByZWxlYXNlMjctbWFpbnQKKzg3MTM5IGUwMDcyYmRkZDJkNTU3MDBhMzhjZmFiZWY2N2RhOThhYTk0YmFkMGIgcmVsZWFzZTMxLW1haW50Cis4NzE0MCA4ZDRmZWVkZWFhZWQzNDVhNGZmNDVhMzEwNWQxZjUxMjc1NWMyYjU0IHB5M2sKKzg3MTQxIDE2OWJmMDFiYjUwN2UwNzg5NGFhM2Q4MzAzZGEwZmM0ZDM4ZTM3YWIgcHkzaworODcxNDIgMjFkZjgxNTVjNzcwZjNjZmE2NjY5NDQwMDEyYzlhOTFjMjIxNDBmZSByZWxlYXNlMjctbWFpbnQKKzg3MTQzIGY4YmVhOTk2MDQ2MjExOGJiNjFiMzNkMGQ3MzQ3YmI2YmU5ZGNjMjMgcmVsZWFzZTI3LW1haW50Cis4NzE0NCA4MDA1NjNhYzA1N2VkYWUzZTZlMjUxZTVlM2JjMDNhODhkOWM5YzliIHJlbGVhc2UzMS1tYWludAorODcxNDUgZDI4MTI2ZWJkNjBkMDJkYTk3MjIzNDVkMTIzYmM2MTE1NjkyZjViNiBweTNrCis4NzE0NiA2ZTlmMzk3YmJhMDI1ZTJhYjNlZTIwNmIyYzU2ZTgxYWRjYjYxODgwIHB5M2sKKzg3MTQ3IGM1MzdiZDM3ZjUwOGFmMTNjMjEyOGY0MmQ1MjFlYTI1NjBlZmEyOTggcHkzaworODcxNDggMWI2NTlhMDA1NzBiZGI0YjdkYjBhNmUzMmZjZDA5NmNkYjNiZGM1NiBweTNrCis4NzE0OSA3NDAzMDJiYjNhZGZiMzg0YjY3NjQ2YjQxNjhiOWRiNDc5ZDgyZTk5IHB5M2sKKzg3MTUwIGJiY2U0MmY2ZGQ3ZGJiZjI2YTk2MTJkMzIyZWY2M2IzYmRmMjU2ODAgcHkzaworODcxNTEgM2M1ODljYTQxZDNhM2QxYjE2MTVhMjY2NGNlYzgzNDBiZjgzODM5NSBweTNrCis4NzE1MiAxNDg2ZDMxNzFjNjg2NzhhZjU3YjE2OTU5NjdmNzg0MmMwNDk2YTJmIHB5M2sKKzg3MTUzIDM4ZGM0MTM5ODU0YzhjYjhhYjZjN2ZhNDhmNDk2NjEzNDk1YzY1N2YgcHkzaworODcxNTQgOWNiMmVjYmIxZjBjYTliNzZlNDJmOTJlYjI1MzdmMjY2ODNjOWUzNiBweTNrCis4NzE1NSA4YzI1NGI2NGE0MzgwNGNkMjkxZjVjYWI5ZjMzMjcxMDcxMzQwOTU1IHB5M2sKKzg3MTU2IDhkZTMzNTYyODU1ZmFmOWNiOTZhYzYzZjhkZjQzMzljYzgxNjhjMzAgcHkzaworODcxNTcgYzg2ZGMyYmQzYWU4MTMxM2U0N2ZhYzkzZjIyYWE3NGQzZmE2ZmQyOCBweTNrCis4NzE1OCA3NGZlNzNjMTA2MTFkMjNkMWUzOGI2MzU1OWRlNWNhMDk5YjlkOGNiIHB5M2sKKzg3MTU5IDczOGVhZWVkMGIxYTI0NzI5ZDE2MDI5ZWQ2ZDQ3ZjM0NmUxZDM0OGQgcHkzaworODcxNjAgNGY4NDk3MjBiZjQxMzczMGY2ZGJjZTdiMjNjZTgzZjQ1ZjE3MTVkMCBweTNrCis4NzE2MSAwMTMzYjhjYjdkODA2ZDM3ZTM1NzMzZDdiNDllOTY1MDZjNDU4OGY2IHB5M2sKKzg3MTYyIDMzMGE5ODUyMzk2ZGY4OGVmZDZjZTkyZTVjYzI5YzM4MzA5NmNkZWIgcmVsZWFzZTI3LW1haW50Cis4NzE2MyA3MjUzYmU5NmExOWViZjE2ODhhNmViYzdmNDgwNDNlZTJlNDhiZTY2IHJlbGVhc2UzMS1tYWludAorODcxNjQgZmE1NWIwM2JlNTc0MDJlMTg5NGY0ZGZjNjM5MWY0NzRmYjM5NjYwOSByZWxlYXNlMjctbWFpbnQKKzg3MTY1IDA0ZWQ5ZGJjNmUwNTFjMzA5ZDY5ZThiOGMxOGJkMTBjM2RjYWYwYmQgcmVsZWFzZTMxLW1haW50Cis4NzE2NiA3MTRiOGUxZWY3MjYzZTI4MDljOWFkOWE1M2YwNTk4YjA4M2FhNTFkIHJlbGVhc2UyNy1tYWludAorODcxNjcgYWMzYzU1MjcxZmRkNDJhMDFjMTNlNjRiZjNhZjZjMjhiZWNiYTcxZiByZWxlYXNlMjctbWFpbnQKKzg3MTY4IGFhOTlkYzhmNzA1ZGZiYTkyZDU1ZmFiNjY0ODFmNGJjMGJiN2RhZjQgcmVsZWFzZTI3LW1haW50Cis4NzE2OSAyMDdlYTlhMDUwNjJmMjQyYTcyNzYxNTAxNmIzNGQ5ZDllYjUzNTYxIHJlbGVhc2UyNy1tYWludAorODcxNzEgZDZjNzAyZDQwZmZiMmRlOGUxYmY0Mjc1NjJmNTBjNTE3NTUwYTcyYSBweTNrCis4NzE3MiAzNTMwNzlhZjRmNTI3NWM5MTE5ZDIzYTE1YTQ4YzMyNGQ3MTRkOTY1IHB5M2sKKzg3MTczIDcwNDM2YjQ2ZTQzNGQyZDkyZTg2NDg3NDk3MWEzM2FmMGE1NGFkNGYgcHkzaworODcxNzQgYjFiZGVmNTY5NjZlZTEzNDlmYjY5MTM4YjExNDM2MTQ2MzU4MjU3ZCBweTNrCis4NzE3NSA4ZDM4YzZhMjcxODFjMWQxNTdkODYwMDE3YjM5NTQzZWY2MDZhNzVjIHB5M2sKKzg3MTc2IGE4MTFmN2MxMGU4MjUwZmI0ZTM0NDgxYzE2MDQxNTZjZjIxOGM4ZGUgcHkzaworODcxNzcgZjIyZDkxMzMyZGI5NGY2YTNmNjBhZGQyOGE4ZmU4NDM0MDY0YmU0NSBweTNrCis4NzE3OCAzMDZkODhhMzIzNTcyM2QzNTNkNWQxMjdmODUzMGQ2ZDk3NmEyZWU1IHJlbGVhc2UzMS1tYWludAorODcxNzkgYjk3ZDg0M2Q2NDU2Mjk2ZWExMzc0MThhOTVkYmY5NjlkZmVmYzZkNyBweTNrCis4NzE4MCAyNjNjOTk4YjJmNDU5Yzg3MTU2MWUyN2Q0NTA5YTMyYzRkYzIyZjcyIHB5M2sKKzg3MTgxIDNiNjI4NTU0ZTFhYTE1ZTNmODJjYTc2MWE1ZmQ4Y2EzYWUxZTEwYzIgcHkzaworODcxODIgNjEyZGQ1ZjJhYWIzMWE3NmRiZThhZTg5MWUzYjQyNTI4OTYxZDc2ZCBweTNrCis4NzE4MyBjZTI4Nzc2ODczNzAwNmU1MDliMTA5YWM5NjRkYTgxNzJhZTkwZWI3IHB5M2sKKzg3MTg0IDUzYmRmMWM4MTQ4NmJjZWRhMWY0NTg4ZjVkYWJiMDk2NjliZDljMDUgcHkzaworODcxODUgMmNmN2JiMmJiZmI4ZWVmN2I2OTQyNGE2ZjYwNDI2MDc1OTU3ODc5NiBweTNrCis4NzE4NiA5OTliMWFhMjQ2NzgzYWVmOTBlMjY3NWE4ZjM3MmFiNTBhYjhmMWJlIHB5M2sKKzg3MTg3IDE1NTMxY2JlM2Y1NWZkM2VjZjFmMGU0NzM0Yzk4Y2MwMDJhNjA0MWEgcmVsZWFzZTMxLW1haW50Cis4NzE4OCAwZWFkZDFiMmQyNThjODA0NjIyMDdiOTk3MzRiYzFkNjJiMzljNzhlIHB5M2sKKzg3MTg5IDViZmE0MzZhMjg3YmYwNDA0NzBiMmU3OGZkYWI3ZWZkMzMxNWY5NDIgcHkzaworODcxOTAgN2FjYTMyYTI4OTBlZjIwNGE2ODhmMDliZTRjNTIzOGFhYzYwMDg4OSBweTNrCis4NzE5MSA2NmQ5ZTM4ODE3NjEwMjJhMjc3YTlkZTgyMzRhYjQ1NWQ1OTBlNjk2IHB5M2sKKzg3MTkyIGQwMmU3NmRhY2U1YmYxMWUzMTM3NTc1MmVmMjRlODkyOGYwZTM3MTkgcHkzaworODcxOTMgNTU0ZjI2Y2UzM2UxOTk5Y2NmOTI2YzBiYmQ3MmQ4OGFjZGEyMjI1NyBweTNrCis4NzE5NCAzMjQyZmQxNzcxNjY0ZWIwNzRmMDY3OGIyNTBiNTllYjM0YTFjYjkwIHB5M2sKKzg3MTk1IGI3NDA1MWNhZDcxNzgyMzcwN2VhMDQ3M2EwYTgwYWQ4ODFiMWFiYjIgcmVsZWFzZTMxLW1haW50Cis4NzE5NiBhOTFiMzE2OGZjZTI5ODFlYmUxZjU3MzI2YjcxZWE1YmRkMTY1NmEwIHJlbGVhc2UyNy1tYWludAorODcxOTcgY2ZlN2NhMWE3YmFiMjQ1ZjU5Y2JkZmIzMzYzNWRjMzgwNjQxZjkyMiBweTNrCis4NzE5OCBmMzEzMGMyYzQ2ZjVhNGVlNDNhMWQzZGQwYzZiZWI1ZGI2Y2JhMThhIHB5M2sKKzg3MTk5IDk5ZWNhNjJkNjkxOTk0YjY4MDZkOWU0NWVkNzZiZDZhMmNjODU4OTkgcmVsZWFzZTMxLW1haW50Cis4NzIwMCA4MDgxNzYyZWI2ZDFhZWMxYWU2MDk1MTg2OGY4OGRjZjZjMmFhYTU0IHJlbGVhc2UzMS1tYWludAorODcyMDEgMTBlZTRmMzJiOTFjNDAyYzg0N2EwZjQ1NTU1YTUzNzIzM2RlMGIwMyBweTNrCis4NzIwMiBiN2NmYjVmMGZjNTViMzY2MzY3MDljYzEwOWQ3MTU3ZTlkNmI0N2JmIHB5M2sKKzg3MjAzIGVkMmFjMjEwODRmNGQ5OTM2NDI1NTFhNDNhNWM4ZmNlZmEzYmU3MGIgcHkzaworODcyMDQgMjg3MmY0NmU4MTk3MGQ0YTA0YzhlNWMzYmIwY2ViNDM3YzJkNzhjNiBweTNrCis4NzIwNSA0NzA4OGU1Y2I0MDEzMWZlYzM0ZTNjZWFhMmM4YjZjNTcyZWIyMjNmIHB5M2sKKzg3MjA2IGVhYjhmOTFmNTc1NGRkODdlZDhiZjdmNjhkYzIxNjBjNTk0NDQ0ZGIgcHkzaworODcyMDcgZGUwNWQ4NDY3OTVlNGI3NzYxYTIzMmYzNzMwMDljZDYyMWU2YjU0ZCBweTNrCis4NzIwOCBmYTNkMDc4NzI5OTM0MTExMGU3MTUzM2RiM2U4Y2JlNmQwNjZmM2JiIHB5M2sKKzg3MjA5IDA2MjA2ZjAwMWJjZDRjNzIxZTMwYmIyNmIyYTgzZThmYzE0MjM3YWQgcHkzaworODcyMTAgYmM4ODA5YjNlNGJlN2Y1ZjFhZjE4MzNiYTUwNTQ2N2EzOWUxMjY3YyBweTNrCis4NzIxMiBmN2U5ZWE4YzYxYTAyNzc3NTNjZjI2MDZjMzdmMDFjMWU2NTYzYmQwIHB5M2sKKzg3MjEzIDY2OGM0MjE4YWUyNmU3MzZmZDJmMWQ3NTVkMDljMzExN2MzZjM0NGYgcHkzaworODcyMTQgNGY4MWI1ZDM1NmNjZDQ1ZjRmYzllZWFjYmY3YmQxNTVhYjQ1NmJlMyBweTNrCis4NzIxNSA3OTRmNTRiYjk3MTM4MGM0NDM4ZDk4NTQxYjZjN2VjMmM1YWQ0ZWJhIHB5M2sKKzg3MjE2IGY4Y2Y5NzMxNGFlZWFlMzYwZjRmOTlmMjc0YWY2MTgwY2E3ZDM3YmYgcHkzaworODcyMTcgYzI4NzcxMTc3ZmM0MDVmZDAyZWEzNDVhYTk1YjBjNDI1YTBhZmVkYiBweTNrCis4NzIxOCAxOTExNjE5MWQ1MmQ4YWIzZDllZmE2YmZkNTg3MjU1MjhlNDkyZTQ0IHJlbGVhc2UzMS1tYWludAorODcyMTkgYmFmMGQxODllZDA3MzRiNzRmMmQxNDMzZTVlMzkwNTQwODgzMGRiOSByZWxlYXNlMjctbWFpbnQKKzg3MjIwIDE2YjZhZTc1ZGU5NDY4MjAzY2YwZTM4ODgyNzM1NzAyOWIxMTg3YWEgcmVsZWFzZTI3LW1haW50Cis4NzIyMSAxMGJmZDNjMTI5ZGFlMjcxYmFkNjc2ZDc2MmRkZWNmNGU1ZjJlYjJmIHB5M2sKKzg3MjIyIDI2MmJhMGFiNGUyMWVmMWU3OWM2MDJjMzY2ZTgwMDgwOGZhMTU3MTQgcHkzaworODcyMjMgN2Y4Y2RjZmJiMDhlMTgzNWZkZDQxZDg3MGQxZjNjMGU5ZWE1ZTI4NyByZWxlYXNlMzEtbWFpbnQKKzg3MjI0IGFjOGRhNTU3ODQ5M2M0ZDRiMDA5YjU5ZWJhNWZiYWQ3YzA3YjNjNDcgcmVsZWFzZTI3LW1haW50Cis4NzIyNSBiMDg0YjUwZTRhYTZkYzkxODNkYzBlODI3NjQ4N2Q5NTc2ODhiODJkIHB5M2sKKzg3MjI2IDcxZmIwMzI3NGE4OWNjM2E2OTc5Y2MxNGQ3NjczYzdhNjE1MTE1NGUgcmVsZWFzZTMxLW1haW50Cis4NzIyNyA5YWM4Njk5ZDg4ZDYxZGIzMWRkZDRlZTNiNWFkZGU0NDk1MzEzYWZkIHJlbGVhc2UyNy1tYWludAorODcyMjggNmY0NmFmYzUxNDM0Y2E4OTEwOTY3OWExYThmMjU1MjJiYjBjNjViOSBweTNrCis4NzIyOSA1OWI0M2RjMzQxNTg1MjliYTIwOGRlZGViZGQ3M2ZkY2UzODFhNzRkIHB5M2sKKzg3MjMwIGRhMjBlN2EwMWZhNjNhNmQ4YWIzNGYyMTBkYTEyOGNlNDQxNTY0ZWUgcHkzaworODcyMzEgNjliODU5NjRlYzg4ODM4MDA5MTk3OWExNzU4MDY3YjA0ZmYzNzY3MCByZWxlYXNlMzEtbWFpbnQKKzg3MjMyIDhjY2Y1OGIwYTVkYTc3NjAwNmQ3ZmM5OGQ5ZTY5NzVjODIyNjVhNzggcmVsZWFzZTI3LW1haW50Cis4NzIzMyA3Njc0MjA4MDhhNjJhZWZhMzFiNGNhYWQxZjYzMDE0YTVlYjdmYzBhIHB5M2sKKzg3MjM0IDA3MmVlM2Y3NDNjMjFmMzc3MGNjZjEzYWQ0OGUxMGExODA0ODA2M2YgcmVsZWFzZTI3LW1haW50Cis4NzIzNSBiMDY2YmQwYjY0ZTdjZjY4NDJmODhkOTg2ZmM5YzI5ZDdjMzUyYjQzIHJlbGVhc2UzMS1tYWludAorODcyMzYgMTIzODFmMTllMmFkZmM4ZjE2ODUwZTljNjVjNmNhNjcxNjcwMjhjMSBweTNrCis4NzIzNyAzMTEwZDRhNDg4NzhiNGQ1MTdjMjAzMDI0Yjc2YTBjNjdjODdmYzQwIHJlbGVhc2UzMS1tYWludAorODcyMzggZjNhZDUyZjY2YjhhNDJhNTc5MzkzMmM3MjJkMDQ5Zjg5YzI2ZWRjOCBweTNrCis4NzIzOSA2YWZiZTQ2MTJkNDk0M2JmN2RkM2I1ZDQ4NWI3YjRlMjc4YzU1OTk0IHJlbGVhc2UzMS1tYWludAorODcyNDAgNzlhMmI2YTEyODA1MTFkZmJmM2I4ODVmYTAwYWU4NjcwODQwODAxMSByZWxlYXNlMjctbWFpbnQKKzg3MjQxIGQxOGY0MzEzYjE5N2U1NmIyYjIyMWQ0MzgxNjgyODNiM2NkZjBiYTggcHkzaworODcyNDIgNzgzZjMxMWNhODY5M2NlZTAzMmRmZGQ0NzlkYTVlNjFiMDUxZGE1ZSByZWxlYXNlMzEtbWFpbnQKKzg3MjQzIDhkNzE3MWIzY2RkNjlhNzM4NzhlYWMwOTQwODlkMGU3ZWIzNGRkNTAgcmVsZWFzZTI3LW1haW50Cis4NzI0NSBlMTU2NTE5YTFjNjAzNzQ0ZjcxNzJlZWM3ZDc3ODQ0OWUyY2Q4OTE1IHB5M2sKKzg3MjQ2IDM4YWFhNzJjMDEzMWE5NTY5MjgwMTY2MTUzMjAwNzE4OTAwNWYyZjggcHkzaworODcyNDcgZDZjY2JkM2Y1YjQ1NTFjZTRmZTJkM2QwZjAzNGE3NmU5NjcyZGZmNiBweTNrCis4NzI0OCA0MGY1NDM2MzY4NDZjNzhiNmMwYmM2MTQ5NmJmNjE4NDIxZTFhMzAyIHB5M2sKKzg3MjQ5IGY5ZDA5NTU5NmVhOTY0MDFkZDkyMDkyYTU4ZjllOWE5NDAzZTcwNWEgcmVsZWFzZTMxLW1haW50Cis4NzI1MCBkNzA5ZDExNGNkZTNjMDVjNGEwNzQ1NmRjY2JjZDI1YWI1Y2EwYzQ2IHJlbGVhc2UyNy1tYWludAorODcyNTEgNTMxZjQyM2IwMTlkMzFmNTFlMGFkYzQ5YTY4MGRiYTE5ZmJlMjY2YSBweTNrCis4NzI1MiA3YzM3MTViMTBjZGQ0NWJlMmJlZjZiMjAyOGQzMDlkYzQ3YjE1ZWJlIHJlbGVhc2UzMS1tYWludAorODcyNTUgNGVlNDA4NmRkMWI3NDA1ZDBiYzI4ODg4OTc0NjFkNmY1N2NkMWRhYSByZWxlYXNlMjctbWFpbnQKKzg3MjU2IGE2MTU0NDc3OGZhNzQxYzk4NTVmOTE1YTdiY2E3NmU5NDQ4M2EyODMgcHkzaworODcyNTggMWMwMjdhMDgzYTZlOTBiN2IzOWZiNzFkNzYyN2I3ZGQ4NmExZGQwYSBweTNrCis4NzI2MCA4ZTcwMWJmZmU2ZTJjMGIyZTM3YTgxOWRlMmYwN2MzY2VhZGU3ODBkIHB5M2sKKzg3MjYxIDE3ODU4YWIyY2Q5MmE0ODA5ODY0OWMwNDViNDU4Y2Y2NzI5NGFkNmIgcHkzaworODcyNjIgY2ZiN2Y2MzIyZmJiYmFhYmZkZDllYjdkOTIzZTBjYmEwZTIzYzcwZSBweTNrCis4NzI2MyA3OWE5MGZhMDc5YThiZjE4MDI3ZDE1MjdmZTE2YmJjNDg4OTFhOTRmIHB5M2sKKzg3MjY0IGFhNDI4YWE5YjY4YjJhNzIyNzc1NjE3NWMyMDEyNDc2YjRhNzQ4OTggcHkzaworODcyNjUgNDAxMjVjZGRhZmI5MDUyOWQxMmVkMDVkOTFmYjM0M2RhOTk2YWI1ZCBweTNrCis4NzI2NiBhOTZhMmJjY2RmOGEyN2ExMjNjNjc3NmVjMjEzMjY5ZWJmYTgzMmUyIHB5M2sKKzg3MjY3IDAxOWFkOWYzMmMxM2U4YWJhYTI3MGRmMTEwODVjZGVlZTQzNzVlZTAgcHkzaworODcyNjggNDcxNjMwODQwNDI2M2ViMTljNTJjZTI5NmE4YTQ2ODAwNjE1MTljYSBweTNrCis4NzI2OSBhZmU1ZjZiMWM3NjY3NzcxYzFhODI4ZDk3N2IyZWZhODQ3NmNlMDFkIHB5M2sKKzg3MjcwIDIzZGRiZDgzNTk1MGI4OWMxOThkNjYwOTU4MjEyZTNlNTBkZjI5NTEgcHkzaworODcyNzEgYTBmY2FkOTA3MGFkMWM3YzliYzEyMmM0NmFlYmIxYWQ0NjhhNTQyNCBweTNrCis4NzI3MiA2ZGEzN2MzNGY4YTMwMzI0MGU4YmRiZjUxYTE3YjFlYmJjYmFhM2ExIHB5M2sKKzg3MjczIGI1ODA5Mjc4NzIxMzc3NDRiMTlhY2Y4ZjJmM2I5NjNjYmVmYmFlZDIgcHkzaworODcyNzQgNGRjZWMxNDZiOTlkNDZlZWU0NWM0NTE3Yzg0ZDNiYTVjOTA3ZjAzOCBweTNrCis4NzI3NSBhMjhlODcyMTExN2MyNmM0Nzg2MzdmN2RjZmQ5MTY1YjYyOWZlZGU0IHB5M2sKKzg3Mjc2IDlhMmU1NmQxMTQ2ZGYyODMwYzlmNjc4NGZhYmJhNDQ1OGQ0NjY4NTggcHkzaworODcyNzcgMmQyOTk3ZjE5ZTkwYzU5ODZhNGIyODk2Nzg0NDk3NDk4Zjg2YTVlNiBweTNrCis4NzI3OCAyNjEzMTgzZWMwMjUxYjBjODdhZjNhMGI4NjhmYzk0Mzg4NTNmY2Q1IHJlbGVhc2UzMS1tYWludAorODcyNzkgNWI0NDA1OTI0N2RiNjJiYTg4ZjVkNzVjMzBjZjMwOWQ2ZjljNWE1ZCByZWxlYXNlMjctbWFpbnQKKzg3MjgwIDAwZjdmNTFjZThiYTU5NDdiMTIyNTU5ZjY2YTE3NzVlOGFmZTY0ODIgcHkzaworODcyODEgZmYwN2EwNmY2ZDY1ZDBhMzAxNjdlOTFmYjI2N2EyNzkwYTRjOWJmZiByZWxlYXNlMzEtbWFpbnQKKzg3MjgyIDNiNWNjNjYzOGYzZDEwZDQ4MTY1ZDQwYmY0MzFhZDFmZTBmOGI2MTMgcmVsZWFzZTI3LW1haW50Cis4NzI4MyA1ZWMyYzJiZmFkZWQ1MjMxMGRiMTJmMmFjMDg4MzU5NzcwYmQwNTc5IHB5M2sKKzg3Mjg0IDljYzE5NzhlYzlkNDk4YzQ5MTIzM2Y3YTVkYzFmNGU2ZWUwMDljZWQgcHkzaworODcyODUgOWIxNTk0YzE1NDRiN2VjYzg3NDM0NjZlNzFjMDc0MjMxNjMzMTNhNSByZWxlYXNlMzEtbWFpbnQKKzg3Mjg3IDgwZTNhZDVhNjMxZDU3NTNhMzBkNzBkYjlmYzNiMjE3NmMyOTI0M2YgcmVsZWFzZTI3LW1haW50Cis4NzI4OCA0YWUyYzIxMTE2ZjFkZjNkZGE4ZGMzMDYwZjk0ZWFiNzgzZWFkMDk4IHB5M2sKKzg3Mjg5IDdmNTQ5OTA4YmY1MDMyYTlmYTQwMmQ3YzgyYWQ2ZDFjZTZkZmNjOWYgcHkzaworODcyOTAgYTUxYTRmNWU4N2U0OWUyM2IwODY1NTYwYWNhZGI1OWUyNTNiYjUxYyByZWxlYXNlMzEtbWFpbnQKKzg3MjkxIDU2OTk5NDk1YTliYWM1YmI0NWI1NzI3MzQxMjg3YzExZTYxMmVkNzEgcmVsZWFzZTI3LW1haW50Cis4NzI5MiBiNzUwYzQ1YTc3MmNlOGJkOTYxZTE1NjNiN2E0NTA0MzY2OGYyNjY0IHB5M2sKKzg3MjkzIGY1OWNkYTU3YTdmYTgzMzk0MDgyZTcwZmE1ZGU5ZDM3YmQxZWI2NGEgcHkzaworODcyOTQgYWQ5YjVjNWQyODMxZjRiZDAyNWVjMTZlNmM0ZjM0OWRjNDBmOWJhZSBweTNrCis4NzI5NSBkMmQ1MjZkYjI3NzM2YWNiYmU0MGE4N2QyOGMxYjNmMzE1Zjk1Y2FiIHB5M2sKKzg3Mjk2IGNhN2E1ZDEyN2Q1N2NkZDRhZTYzNjE1OWVjODU3NmUwMDljY2UxOWEgcHkzaworODcyOTcgZWNkMjhlODRjNDRiMGY0YzRlNzdjOTZiNTI5NzBkYTg4MGFmZDQ0OCBweTNrCis4NzI5OCA5YzFmY2VkZWYyYzE5ZDVmNWY5OWM3MTFjMGFlYzYxNjE0MWI0NTg4IHB5M2sKKzg3Mjk5IDNkZTZjZDkwMjYyNGM3YjkwOGYwZTBiYWYwYTU4NGU3ZDcyYzJkNTMgcHkzaworODczMDAgM2YxNzUyZDQyNTNiYjEzZmQ5YTE5YWY1M2ExMDc1YmQxOWJkNmE1OSBweTNrCis4NzMwMSAxYWE0ZTVjYTkxNzQyMTc0MzdlMTlkY2E5NTY4NTRmZTE2YzlhOTFlIHB5M2sKKzg3MzAyIGRlNWI5MGRhYWJiNDJlMTIxNDdiOTkzMTA2ODU3M2JjMWZkNWMyOWYgcHkzaworODczMDMgZTA4YzIwYTY3ZjY0N2ZlYWQ4NzhmMzIzN2Q4NzEwMjc2NTg5YjU2YiBweTNrCis4NzMwNCBhNjE4Mjg3ZWFmZDY1OGIxOWY4YjBlNjg4MTc2M2IxMzE1MWYwMjI2IHB5M2sKKzg3MzA1IDAwMzdkNjVkZWJkOGQ5OGM5ZTQxMjdlN2EwMDlmYWZmMzBhOWEyMjAgcmVsZWFzZTMxLW1haW50Cis4NzMwNiA3ZThlYjYzNGYwYTkxYzU0N2U4N2VmMjc0YjIwOTJiY2ZkMDBjMGUxIHB5M2sKKzg3MzA3IDJhYTA1MGE0NGFhODFmNDY1MGE3NWVkNzBhMzFkYjMwYzE4Y2ZiN2MgcmVsZWFzZTMxLW1haW50Cis4NzMwOCA1OWUyMzAyOTdiZmZhZGRkNGQzNmQzZWM5OWJmMGJhY2JiNjI5YjRjIHJlbGVhc2UyNy1tYWludAorODczMTAgZDg0ZWM4NTYwMGIxYTk4MDRkNmI1NGU5NTJkNTgwNWM2OWQwODI2NiByZWxlYXNlMjctbWFpbnQKKzg3MzExIGZkNzI2MTRiOTAzMjEwMWE1N2E0M2E0YjAwZjc5MzBkNzkxMjgxODcgcmVsZWFzZTI3LW1haW50Cis4NzMxMiA0YzA2MTliODMyZTFiY2UzZTI3NmMzY2IwZmEyNGY3ZTQ3MmE0NDg5IHB5M2sKKzg3MzEzIGQ5YjQ0MjY0NzlhYzYxNzhlZTdiZTVmN2IwMjBhZTAzYWUyODNlYzcgcmVsZWFzZTMxLW1haW50Cis4NzMxNCBjNjg4M2VjNDg4ODA0MmIzZjgzMDJkODEwNmVjYmUzYThkYTU5YWY3IHJlbGVhc2UyNy1tYWludAorODczMTUgNWI5MmZiMDJlODNiYzVmYzliODcwNWI3YjZmMDdjMGUyMGExMTdmYyBweTNrCis4NzMxNiBhYjY1MDAzMzQ2YzExYTE1MWM1MmIwZDdjMmE0ODcwMjk4MDI3MmFlIHB5M2sKKzg3MzE3IDQzNmJiYzdmMGFhNjhhYTc1NjU5NWEwNjU2YTJjZDRkMDhkZjA3ZTggcHkzaworODczMTggZGMzMjc4OGYwZTRlMzI1OGJiZDk5ZTU0ZjdkNWExNmQ5MGY5M2M3ZCByZWxlYXNlMzEtbWFpbnQKKzg3MzE5IGZjMmYwYzg2YjQ5N2NiOTM4ZDU0YmQwY2JjYTA4NmY1NWU4M2VlYTQgcmVsZWFzZTMxLW1haW50Cis4NzMyMCAyYzQyOWQ4YzVlZTIwMmEzNzIzODAzZDYzNzdjZmY1ODQ2YjYwZDExIHJlbGVhc2UyNy1tYWludAorODczMjEgODVjMmZlMzFiMTFlYzA5ODQ2ZGVjZWRiYzg1ZDNkNjY4N2RlNzQ4ZiByZWxlYXNlMzEtbWFpbnQKKzg3MzIyIDRkMmI0MjhkNzg4MjI1OGE0MWE0NzRiOGZiM2YyNzYxYzAwZmIyYTIgcmVsZWFzZTI3LW1haW50Cis4NzMyMyBlOWQ5MjRmZTM3ZTAzYTMwNWU2YTZlY2UyYjU2OGQyZmNmNThjZDM1IHB5M2sKKzg3MzI0IGVhOGY5NGNlODI5MzI2OTZkZTJlY2VjMzZmMmQyYWNkNTUwZjAzZTcgcHkzaworODczMjUgYWVkMmJiYWZhNTUwZTlkZmRmNDFkMzIyODU3ZjAyNGI3NWI0Yzc2ZCByZWxlYXNlMzEtbWFpbnQKKzg3MzI2IDIzOTFjZTM1YWQ2OTdmMmIyNjQzNzA2M2RlZjlkODVhOTU4NjE2ZGMgcmVsZWFzZTI3LW1haW50Cis4NzMyNyA5YmZkNmFiZjAxY2EyOWNkZTRmYmVlYzkwZjhlMjQ4Nzk3YWE3Zjc3IHB5M2sKKzg3MzI4IDA3NGMyMTcxNGEwMjc4ZTQ4MjkzNDk1YzM5OTQ0MWUwNTVlNDIxMmIgcHkzaworODczMjkgMGMyYTdlNTc4NWM4NjExMmNjZGFhNWUyOThiYzYyZDExOTk4Mjk5NyBweTNrCis4NzMzMCA3YTU1YjgwOGU0OTFjMTAyNzY2MjAxMTU0MjRhMjZkOWUyMmNlNzMzIHJlbGVhc2UzMS1tYWludAorODczMzEgNjliM2ExNTFhZWM1NzQzMjE5M2QzNmVlYjlmZjM0Y2UzOWJlOGU1NSByZWxlYXNlMjctbWFpbnQKKzg3MzM3IDA3MTEzZDFlZjhlNTFhNTJmZDU0N2RkYTY3MTBmMTVhNjMyMDM4MjkgcHkzaworODczMzggNjE5MzVjOGRjMDllMGRiNWM5NjYyNjVkZmI4MDk0NDU3ZjVhNWU3NSBweTNrCis4NzMzOSAwMTZiNDI1ZjBjZDBjZTQ0ZWIzNGZjMzc1NjNkZmYwYzliYmYyMjRiIHB5M2sKKzg3MzQwIGI2ZDNmZTcwODAyZjMyOTBkNjNhZGI1Yjk4ZmNhN2I0ZTQwNzFmZGMgcHkzaworODczNDEgNWE2YTFjYTI0ZTA0Y2ZhYTE1Zjc3MTNiYjc3NDEzYjlmNTEzOTRkNSBweTNrCis4NzM0MiBjNzBhYTAxMWMwNTk4NWU0NjJlYmRkNDZmZTE5ZjQyMGM0NmNhZjViIHJlbGVhc2UzMS1tYWludAorODczNDMgMzQxYjkzZDgzMTU3MWQ4NDhhY2FlNmRiMTgzZTc0ZGFlZTBiNjQyMyByZWxlYXNlMjctbWFpbnQKKzg3MzQ0IDIyZGI0ZDJmNjU1NDk4OTk5ZGE1MjhlZmMzY2IzOWQwNDVhMjViMDcgcHkzaworODczNDUgMDU1MGEyNDQ3YzFlNjMxYTAzOWE3NDhjZjljZTk3YjYwNzliYTQ5YSBweTNrCis4NzM0NiAzYTI5NTNlMjFmNzg1NzM0Njg3ZjFkN2M5NTM4YTIxY2VmM2U1NDZjIHB5M2sKKzg3MzQ4IDViYmY1YjZkMzY1ODA1MjVjNDdhNWM3YmI3M2ExZTBjYTcyYjg3MjUgcHkzaworODczNDkgYWM4YzZjN2MwY2IzNTY3NTRkOWE5NDE3NWRmMDQ5NzQxZjc5NWRlYSByZWxlYXNlMjctbWFpbnQKKzg3MzUwIDg5MjIzNjEzN2RiOTYxODEyYjQ5ZWE5Y2ZjZjVjMGUxYjE1OThlZTkgcHkzaworODczNTEgNDNiYzU5MjJmMjk5MDY0NWM1MTM1ZmU2M2U2MDYyZjkxNjllN2UyZCBweTNrCis4NzM1MiA2MWJjODYyNjY3ZTZlM2Q5ZjNiMTNhNTUxYzQyMTUyYzAzZGNiOWQ3IHB5M2sKKzg3MzUzIDI2YzBmNzY5ZTliNDcxZDFiOTBiNzc1OWE2YmI3YjU5ZjBkNzVhMTEgcHkzaworODczNTQgMjg3MTdkZTRjNTYyY2MzYTlkMWFmM2Q5NzY3ZjZjMDhlZDk0ZjU0YiBweTNrCis4NzM1NSA0MDliYTI1MDg3MTIyODg0ZWEwNjZmOGUyMzc1ZjFiYzNiOTY3OTgyIHB5M2sKKzg3MzU2IGE1ZWQ0YTEyNDMwYWE3YjFkZjg3ZDNjNTg1MGVjMDg3ZGIxNDNhZTMgcHkzaworODczNTcgODg0YjE0ZWQ4ZjU0M2RkNzZhMTA3NDU1OGM4YTZiMTQ3YzM3MmFlZSByZWxlYXNlMzEtbWFpbnQKKzg3MzU4IDY4YTQyYjk0NGZlMzk4YWE2YjQ5NDRiY2M5YzBkMjI1MDc0OWQwZGUgcmVsZWFzZTI3LW1haW50Cis4NzM1OSBjZDI3YzNjNDQyMzRhZmVlNWE1NDJiMThjZjRiNzc4YTk4MzhjYTRkIHB5M2sKKzg3MzYwIGEwYTk5NWUwZTY0MDE5ZjZjMGI4NjE1Mjk5OTlmYTg4ZjUyZDE2YTAgcHkzaworODczNjEgNzhjMTUyMjg4ZjUzYThmZDMzYzNmNmU0NDM2OWVlMmM5ODBiNGQ5NyBweTNrCis4NzM2MiA0YzA0MjYyNjExNDgzMWY3MWRkNzBjZDI0M2JlNTRjODcyMjA4YmIxIHB5M2sKKzg3MzYzIGJmMzZkNmJkZGU2MGI0YWYwNTBiM2U1ZDlhNGNiYTdjMjA1ZWM1Y2EgcHkzaworODczNjQgOWNmMTUxMmY4ODEyYzIwMDFlMGU3NTFkNmY5MmNkYzVhMjBmZjZhZSBweTNrCis4NzM2NSBjN2EwNTM3YzdmM2MyODY3MDhlNWZiMjRkYmJiOTllYjczZDgyMjg2IHB5M2sKKzg3MzY2IGEwNjY0N2ZmNWQ5ODE4ZTFmZDE5ZjUwMDZjNTQ5MDIwOTk0Y2U3OTUgcHkzaworODczNjcgZTY1Y2QyMWQ1ZjczMTRlZTdhNTEwODQ0MWNhOTY0N2E0NWJhYmZlMCBweTNrCis4NzM2OCBmZTdhOGExYmRmM2Q2YmM3MjEwMzAyNjI2MmVhYWY3NjMzODc2NWFkIHB5M2sKKzg3MzY5IDcyZjUzNmQxMDc1MGY0YjhmMTRkM2ZjNDRjYmIzMWY5MDA0ZmNlYWIgcmVsZWFzZTI3LW1haW50Cis4NzM3MCA2ZmU5NGZjMDJmYzc1OGQzMGVkNzRlNWM4MTEzZTJmNjc1YzkxMmNmIHJlbGVhc2UzMS1tYWludAorODczNzEgN2FjMDNlYzNiMjc4Yjk1ZDk1YjM1OWI2YWMwOTcyN2JmYWExYzBhYSBweTNrCis4NzM3MiA4YWRiNzVjNjkzMDQ3Mjg3NGJhMTM1NjEwZjM2YjI1ZjI0MDQ2NGZiIHB5M2sKKzg3MzczIDBiOTQ2MzVlZDJmNmZhODkzOTMzOWM0MjYyODQ0MGEzMzYzNjY0MTUgcHkzaworODczNzQgNDQwMTAwMzliZGRmYTY5OWQ0OGFmYWQ3NWE3NWY2ODBjMzVhYjViOSBweTNrCis4NzM3NSAzODE1NTYzNjljYWY2YTJlZjM0ZGUzYjNiYTkwNzkxNmFjYjY1YmIzIHJlbGVhc2UzMS1tYWludAorODczNzYgNWY0OWQzY2IxOTRmOTcwZDUxMTk5ZDFjMzlmMzM5ZTZkZGUwZjhiOCByZWxlYXNlMjctbWFpbnQKKzg3Mzc3IDczNjk2NGY3MDhkZWMyMzhmYzUxYTA3M2YwY2E5YWRlMDQ1MDM4YjIgcHkzaworODczNzggMjlkYjk3YzE3NmM5Y2Q5ZDAxNTAxYTJmYTI0NzRiZjRhOTg2ODczYyBweTNrCis4NzM3OSA1MTVkZTIyNzcwMDE4NGQxM2U3NGQxOWE2YTliNzBlNThiNTZjMmQzIHJlbGVhc2UzMS1tYWludAorODczODAgN2E0ODU5MGFmZDkyZTRiZjhmMmE4MWM1OGVkODQ5OGM0N2RjODQxZCByZWxlYXNlMjctbWFpbnQKKzg3MzgxIGMyZDVjZDAzMmJjOTE2MWY5NDI1YmM5NDFiOWNhZDI0ZWNkYTY5OTYgcHkzaworODczODIgM2MxODJmNzFkNGM5YzU2NjA3ZWFhZmU3YzRiNjU1N2EwZmZlMzk3ZSByZWxlYXNlMzEtbWFpbnQKKzg3MzgzIDk2NTMxNGYxMmY3MTlkYjljM2VmYTUyMjBhZjY0ZmJlZDRiNTFmYzAgcmVsZWFzZTI3LW1haW50Cis4NzM4NCA5Mzg1YzUzNmY0NTQ4MDI3OTcxMmVkYWM4NmJiZDYzYjg4NzYyODU2IHB5M2sKKzg3Mzg1IGVlOWJkYWNkM2NiNjEwMDk5OTc5YjljNzBiYmUxZGRmNzYxMTIzMzAgcmVsZWFzZTMxLW1haW50Cis4NzM4NiAwYWY5NGY5NzZkNTAxOGZkMmM1YjA2YmNmNWI4NDk0ZjkzMTI4NmRiIHJlbGVhc2UyNy1tYWludAorODczODcgZGFlNTE3NmQ3YjdmMzAwYzIyZTFiMDBkNjE5MjhiYTQyN2M0OWFhZSByZWxlYXNlMzEtbWFpbnQKKzg3Mzg4IGQxNmFkZDU2ZGFjMDM0YjllY2NkYTBjOGNhNjdiZWVmOWQxMDRiMTYgcmVsZWFzZTI3LW1haW50Cis4NzM4OSA1NTJiYWM3NTU4ZTc3OTJiMGI0MWIxN2U2OGY5ODA3ZDllNWJhNDUyIHB5M2sKKzg3MzkwIDRlMjIyMDJlNjJmODNjZDEyMzBhMmEwYzNkM2RkMTgzMjdjMjA5ODcgcHkzaworODczOTEgOWZiODlmYWE1OTU4MzNhMjAwNDlkMzczYzVkMmI5NGZiY2VjYzNjMyBweTNrCis4NzM5MiA0ZTJiODYwZTY1N2M5YWJiNDJkYmMzNWMyNDM3ZTc2MjI1MDY2MmMwIHB5M2sKKzg3MzkzIGU1OGZhOTgzYTk0ZWY4Y2ZjMGFiMjUxZWI5NmVmYTIwMTk0MWVkY2QgcHkzaworODczOTQgNGZhZmU5N2QwYWRiYTZmMDQwMzI5MjJkNTBlMDQ3ZWMzMGFlYmM0MyBweTNrCis4NzM5NSA1YjgwMjZmYWEwYTczZDYxNzkxNTc2ZjdiNWY0N2VjODUwMTA2MmVlIHB5M2sKKzg3Mzk2IDEzYjRhMGY1MmMyYzJjYmY0ZGQ2ZDZkMzJmY2FmZmM0MjhjYjY1NzUgcHkzaworODczOTcgN2MzMGQwZjEwMjhjNGQzNzU0NmI2NTE4OTU1MDZiZjJlMzhiNTM4ZiBweTNrCis4NzM5OCA0N2NjNDg5NjVlNTI1MzQ4YmZkYmM0NGFhOTBjYzJlNGMyZmNjMTkxIHB5M2sKKzg3Mzk5IDZmNTZiMjQ3YTdjZDI4MjMzY2IwODc1N2ZhMjg0YzM4MDFkMzM3ZjkgcHkzaworODc0MDAgZTNhZjVmM2E3OTA0YzBkNTM0M2VjOTYzM2VhNjZlN2FjZmQyM2E2NiBweTNrCis4NzQwMSA5YjI2MjQ4ODMwZjY1Y2E2MWRlOGQ3NjJhMWJmZmJjOTc2MGE2YmZiIHB5M2sKKzg3NDAyIGZjOTZiZDE4YmRjNjFjNTg5MjQyMDMwMDE2ZGIxMDZhMDhhNDMyODUgcHkzaworODc0MDMgNmQ1NjI3YTA2Njc3OGRkZDliMWViNjY1Mzc2ZGQyZWM0YmEyNWU3YyBweTNrCis4NzQwNSAzZDg2Y2Q5ZmM1MzRhZWZhYWY1NzM2Y2JkNDNhZWY5ODZhODljOTQ1IHJlbGVhc2UyNy1tYWludAorODc0MDYgMGM0YWZjNWY1OTM4ZTI3YmU5NTAyMTNiOWE1OWJjOTJmZWM0ZGJjNSByZWxlYXNlMjctbWFpbnQKKzg3NDA3IDQ3ZGJmM2VjMWFkN2Q4MjlkMTZkMzg0Mzg4YzI5YWIzMTdmM2Q0MmQgcmVsZWFzZTI3LW1haW50Cis4NzQwOCAyNDg5NGZhN2M1OGM1MGM1YmZhNjhiNzk3ZTY5MjNkMTNmNWQwMTkzIHB5M2sKKzg3NDA5IDUxNzk0YWRhNjgxMGFmNDk4ZDU3MjFjNDM1NmQyNmEzMDRiMjgxN2QgcmVsZWFzZTI3LW1haW50Cis4NzQxMCAyMmEwZWE3ZDk3NGViNmQyMzZiYWFhMzk0NDYxNDBmYWE5N2M5MDI5IHJlbGVhc2UzMS1tYWludAorODc0MTEgZjU2N2E2Yzg1OTM2NDVkODc3NjczNGYzNWIzMjNlYWU4YjZjM2IzNCBweTNrCis4NzQxMiBmY2FhOTg3Y2NlYTAyMDYyN2M0ZjBmNzk3NjU2NzIyZjFhZmUwNTYxIHJlbGVhc2UzMS1tYWludAorODc0MTMgMzY3MTk4YjczM2NkYmI0MjY2ZmExNDEzOGZiYzgwMzZiNjNhMTAyNCByZWxlYXNlMjctbWFpbnQKKzg3NDE0IGIxNjhiMmNjMWIyMWQyZTI0M2E4YTZjZTkxMTdlYjY1YzYzYTMzZGYgcmVsZWFzZTI3LW1haW50Cis4NzQxNSA4MTViNjkxNzU1ZmEwYmZjMjQ0YjM1MjU1OTIxZDI2NWU3ZjQzZmY4IHB5M2sKKzg3NDE2IDg2ODU3MTE1ODZkNDMxZWM2YmQ1ZDM1YzA3ZjAxNGNhY2YwYWU2YjQgcmVsZWFzZTMxLW1haW50Cis4NzQxNyA1NjRhNDE2NjZlZjZmNGIxNjI1Yzc2ZGY1MmQ2MWExZWFhM2ExOTQ5IHJlbGVhc2UyNy1tYWludAorODc0MTggOGI1M2YyNTYxNTlhYTNhYWI4NDBhZDhkMzNlNDMyYTJmNjI5MTVhNiBweTNrCis4NzQxOSA1MmQyOWM3MTU4ZmUyMDc5MmEzMzE0OTY3NjQ1ZTc3NDkwMzA1YjFlIHJlbGVhc2UzMS1tYWludAorODc0MjAgY2QxZGVlNTVhY2U4NGVlNjljOTZhZWMxNGNiOWUzNTk5ZDA0NjRmMCByZWxlYXNlMjctbWFpbnQKKzg3NDIxIDIwNGJmNDMzZDM2NmEzMDdlNDZkOWZiY2MyOTUzZjdlMmMzZGMyZDkgcHkzaworODc0MjIgMDk4Yzk3ZTk1ZDkzMTlmNWM3NmViMzhkNmI4NWVkMTQyOTM2NGUwMCByZWxlYXNlMzEtbWFpbnQKKzg3NDIzIDBkYWYzOTFhMWYxZGY4NjhkNzAwZjQ5ZDc3ZmViYWQ5ZDNiYTBjMjEgcmVsZWFzZTI3LW1haW50Cis4NzQyNCBkNWM4Y2UzYTcwZDQ4OThkNWY5YmZmN2U0NzZiMDhmMmYyMDVlMGYzIHB5M2sKKzg3NDI1IDJmMmRlNmNjNjJjNzgwNDRkMTYwODQ4ODE1ODgxZmJjNDIwZGU1YWEgcHkzaworODc0MjYgNTcyZjczZmYyOGMyMjJmZTQwMmVmY2M5Yzg3MDU5NWZhMzUxYzZmOCBweTNrCis4NzQyNyBhODQyMDRmMTE2ZjhiNjdmNGUyYzA5YThjN2ZkYzgwMWNjODMxMjk4IHB5M2sKKzg3NDI4IDVjZjg1NTVlNWJlNTVhZTEyNDZhM2U5MDU1MTBmMzlhYWMzYTU3MzQgcmVsZWFzZTMxLW1haW50Cis4NzQyOSA1OTVmMjU4ODA2ZWZmMGFkYmNiNWE0NTkxNjkzNDM4NDhkZDExNGY4IHJlbGVhc2UyNy1tYWludAorODc0MzAgNDM4YTQ2OTgwMDRhZGQ1NDg2Y2Y3YmM0YmNkYzhkNDI4MzRlYTRhOSBweTNrCis4NzQzMSA1NjFlYTY0MDE4OGIzNDRkNjA0ZWMwYTJkZDEzODBhYzQxMDI1OGY0IHJlbGVhc2UzMS1tYWludAorODc0MzIgM2Y5MDUxZDg2NjAzMjkxOTI2YWZkMGMwZmIzZTAxNDA0YTA2Nzk0MSByZWxlYXNlMjctbWFpbnQKKzg3NDMzIDhlN2Q0YzM5NzQ1ODdjZDM1YjQ1OThjMjI2MzQwY2MwMzZhNjY1NDcgcHkzaworODc0MzQgNTNhNDFhMTE3NDExYmJiMGYwMTU5YmYzZWJhMmNkNWVhYWJiMGFlYSByZWxlYXNlMzEtbWFpbnQKKzg3NDM1IGM2M2FjZTVhNTM0NmJiMGE5YjE1MjEzNzIwOTA1MDMyYTRjNzYwNWYgcHkzaworODc0MzYgYTgyZGYyMDk4NThhNjRkZmUxMWNlMTk3OTY2ZjFkNWZlMWI0NmQzNiBweTNrCis4NzQzNyA2ZmY1MGNlZjk4NGVlNTU5YjI5OTc3ZjQ0M2EyM2Y3YmY1NjBkYjk3IHB5M2sKKzg3NDM4IDkyNTAyYjM2NzRjYmVjNzhjZjgyYjIzMGFmZGNhZmM2MWU2MzIzZmUgcHkzaworODc0MzkgNmY0ODM0MmU5ZTNkZjY5YjJlNzZmMTljZTZiMDQyMWY1MTRiNDY1ZSBweTNrCis4NzQ0MCA5OWQxNDYzZWRiNTZjMWVkNzVlYzg1MWNkMmZjMGM2MTdlNGI1OWZmIHB5M2sKKzg3NDQxIDg5YTQxNmZkN2MyOTcwN2JkNDFmZjg0NWE3OWMxZWQ3NmIwNmRiNDQgcHkzaworODc0NDIgNmE2MjNhNzY3MDYyMmM3MmMzZDU0ZDg2M2QyZDZkOWM1OGU5ODc2NyBweTNrCis4NzQ0MyBlMjE5ZmI0MTM0ZTNiZDdkNmM4Mjc3MjUzMGIzNmY5NjQxYTg5MmMxIHB5M2sKKzg3NDQ0IDRkYzI0OGFjMjY0ZjU4OTA0MThmMzI2YTkyNWExMmI5ZGJmZTRhMWEgcmVsZWFzZTMxLW1haW50Cis4NzQ0NSBjZjE4ZDllNTFiOWQ2MDA0MzNhM2E3YmRlM2VmZjNkZTkyNWRhYjIyIHB5M2sKKzg3NDQ2IDM2YWMzZDlkNzRjMTUwNTI5YTFjY2E2ZTU0YTQxZWQ5MmEyNWY0Y2UgcHkzaworODc0NDcgODNiY2RhZDI1MzM1ZjhiMjE4YWExMDVlYjljMzU0ZDk0NjkyMGFlOSBweTNrCis4NzQ0OCAxMjFiYTA0ZjBmYmIxMDFhYmIzOTdhYWJlMDRmNmNlOWU4YTYyZDVjIHB5M2sKKzg3NDQ5IDIxOTJiYjk1ZjU0YjBkYWUxZTNmODk1ODBkZjhjZTZkOWNjMzE4N2MgcmVsZWFzZTMxLW1haW50Cis4NzQ1MCA5M2Y1NjE5NGNmNWI4MmMzM2JlMjM3YjBmMGI0MzIzNjg2YTQxMmEwIHJlbGVhc2UyNy1tYWludAorODc0NTEgNzY1Nzk2YTM0YWJlMTg4ZDA0NTkzNTI2ZTZkYWU2NjgwM2Q4OTQ1MiBweTNrCis4NzQ1MiA4MTk4MmFjZWQ4NmJjOTVjNzM1ZTBiYmZlODcyNjg3MjgxNjZmNDVjIHJlbGVhc2UzMS1tYWludAorODc0NTMgYjVkMDNjZWI4ZDc5MDc4ZTM5M2I3YTQwYzA0N2I3ODQyMTY1ODNkYSByZWxlYXNlMjctbWFpbnQKKzg3NDU0IGQ0ZTBkYTc2MTg4YjYwMjY3YWJhNThkYzgzZDFmM2FkYWMzYmZjOWYgcHkzaworODc0NTUgM2I2MTVlZTc4N2IwZjA2N2U0N2Q0Zjc1MTUzYjIxM2U1ODMzODBlNCBweTNrCis4NzQ1NiBjMzRhYzlmOWRlODMxN2QzNjI2ZDY5YzNlMTQ1NWYwMzg1MjI2YjA5IHJlbGVhc2UzMS1tYWludAorODc0NTcgNWMwODJmMTk3ZGRmNzczZWQ5ZWIyYTE5MTA4NzY4NTcwZGU5YzQzYSByZWxlYXNlMjctbWFpbnQKKzg3NDU4IGZkYjhiMDJjMWU2NWIzNTIzZmJiY2U4YWJhMjBjYjQyMTJmMzMxYmMgcHkzaworODc0NTkgZTFiZjNjMWM5NTYxMzQyNWFkZGU4NWQ5N2I3MzRlZmI5YWQyYTFkYiBweTNrCis4NzQ2MCBjYWY4OWE2YTE3YTdlODRiYTBmNGJhMmExNGIwZmFhMzJjNDA3MGJkIHB5M2sKKzg3NDYxIGNlZjI4MTdlYTE1NzI1ZTk0ZjA5Mjc3NWExNDkwZDcwNTU3MDY3MjQgcHkzaworODc0NjIgZDVmYWE5ZmZkZjJhOTMzODRlMjJkZjhjMjI5OWM0M2EwNjhjODRhMSBweTNrCis4NzQ2MyAwOTY3MzE2MjBmZjJhZWFjY2I1NDIzZTczOTdjZWYwMzQ1NGYyYTcyIHB5M2sKKzg3NDY0IGMzN2Q2ZGIwMmM4NGQwM2RjNjYyNjBkM2JmYmQ5NTEwNjQ2NDUyZWQgcmVsZWFzZTI3LW1haW50Cis4NzQ2NSBkMmMyOGEzN2Y3NjMwNjc1MDQ0MjBlNWE4ODkwOTA3MDBkZDdkYzI2IHJlbGVhc2UzMS1tYWludAorODc0NjYgODlhZTJjM2IwODVjYzFiMzk3YjYyYzA4ZWVlZGY2N2MyYzJkYTcyOCBweTNrCis4NzQ2NyA1MTMyNDE1NGY4OTNmN2I1NWUxMTliYTA4ZTU4MjkxYTMzYjhiN2Q4IHB5M2sKKzg3NDY4IDFjNTYwZjRiNWU1YjQ5ZDA0ZTJjY2MyMmNiZTU1OTEwNGU3MDY1ODYgcHkzaworODc0NjkgOTY4ZGIzZTViMWQ4MDAwOGZlNjYyNzBjNjY4NzgzYWZhNjM4ZmJiYiBweTNrCis4NzQ3MCA2MTg3NjYxY2RjMDg4YmMyYjIwMTY2MGUzN2NkOWFlYzllMjczZjFiIHB5M2sKKzg3NDcxIDM5Y2VhOTgwOTA1ZDNkMmMzMWVhNzM1NjkyNjBkNDI4OGQxYjZiODQgcHkzaworODc0NzIgMmU5NjcwZDY3MDE3MzFlNWNmY2IzMDg2ZjZjMmZkYWIxMzY2ZGYyYyBweTNrCis4NzQ3MyBjNTEwYzE1MDVjZTcyMzRlYjAzOWY1MDNlYTFkNjY5YTNjOWIxNjVlIHB5M2sKKzg3NDc0IDU3MDFhODA4NDAwMTkxN2Y2ZmEyZmMxNmFjOWU3N2ViNDc0MTVlZmMgcHkzaworODc0NzUgODRjMWQyNjc5NzA3OGZmOGYwMDkyMTcwZGE3MzYyM2RmN2VlMTQ4NCBweTNrCis4NzQ3NiAyZDgyY2RmNjJiMmNkZTJmZDU4NTM2Y2E1NzcwNDJhNTc4NDc0NmM5IHB5M2sKKzg3NDc3IDZjOGExYzExNzYxYjQ4OTEyNDI4ZDVlYTJkZDY0ZDE1OTJhNGMwMzUgcHkzaworODc0NzggOGU5YTQ3ZGIzOTNjZWZiZTM4MzRhNDkyY2Q4Njg3Y2JiZThmNGFlOCBweTNrCis4NzQ3OSBlZDhkZjVhOTBjZjE5NjI1MDU4ZDIyZDkzNmQxZDE0NGY5ZDk2MjQwIHB5M2sKKzg3NDgwIDk1MDNiMDY2MjUyZGRiMTc5OWIzOGEyMTI5OWM2MTgwMWJmNGIzMjkgcmVsZWFzZTMxLW1haW50Cis4NzQ4MSBkNTFhZmU0N2RlNzMyYTQwYmU1ZDE1OWY3NGYzOWUzMTAyY2VhNzBlIHJlbGVhc2UyNy1tYWludAorODc0ODIgZmE0ZGU2NmM3ZGVlYjNjN2M4ZmUzYmQxOTc0ZTM5MDlkN2NjNDM0NiBweTNrCis4NzQ4MyBjNTY2YzQxMzE0MzlmMTc3OGYzMTUzMGI5YTEwZGRmNzQ3MWRiOTcxIHB5M2sKKzg3NDg0IGE2N2I0MmJmZjQ3MTg2MjdmZmUzMTMwOTU0NWRkMDI2MWYxYzBlZmMgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NDg1IDM4ZDY2OTgwMTg3ZTI4NDY0NWIwODFlNmIxZjJiMTliODhmZWNkODUgcHkzaworODc0ODYgNjc4ZDgzMzZmNGMzZGM2NmUzNTczYzI4NTdkYTk0OTA1NmU1Njc5YiBweTNrCis4NzQ4NyAxYjIxNjBhZDRjNmU0YTZiOTE3NjJiNDBkYmFkYTkyZjE3YjY5ZDgwIHJlbGVhc2UzMS1tYWludAorODc0ODggNDg4ZWQ1NTBiN2Y4ODhjZWY4ZWIwNWJkNTE3OTM0MWUxNDI1OWFjZiByZWxlYXNlMjctbWFpbnQKKzg3NDg5IDRiOTI2YTEzZGM1NDI4ZmFhZmNiZGUxZjcwYmVjMmU5Y2MyNjZlNmYgcHkzaworODc0OTAgYTAxNTMzYjAxYjljOWJjMTY4ZmU3ZDEwNzUwMzY5Mzc3ZTM2YjRkOSByZWxlYXNlMzEtbWFpbnQKKzg3NDkxIGQ1YmJjNjViYzJiM2UwMWEzNGVhZGIzYzY4NTkwNzBkNjIwYTRiYTUgcmVsZWFzZTI3LW1haW50Cis4NzQ5MiBjMTdhNDk5NzIyNDQxNDc0ODZhNzk1ZmJjZGMyZWNjNzVjZGY2YjBjIHB5M2sKKzg3NDkzIGJmMDllY2Y2OGExOTk5ODYxYjcxZWExNDI2OGI3ZDQ0ZjlkMGMzMTYgcHkzaworODc0OTQgNGQyMGFlYTYwNWM1ZmI0NDAwYzNiN2IxMjY3MGJiMGNiNmUxNjY2ZCByZWxlYXNlMzEtbWFpbnQKKzg3NDk1IGZiYmVmY2Q2YTFhNjk1YWRmYjZlMGNiNDdhOTM0ZmRlMWY0YzRjODAgcmVsZWFzZTI3LW1haW50Cis4NzQ5NiBmNGJhNTRlMGJhNzc0NTA2MzI1NjgzMTk4YzhlYzg1MDE4MDk0YmEyIHB5M2sKKzg3NDk3IGMyYWU5MGFjYzkwODg1NjY2MDg5ZDRjNWQ0ZTEyNzUxNjg0MzAzODMgcHkzaworODc0OTggMTA4YmMxMjY5MzBmN2Y4ZjEyZWViY2Y0YmQ0YzEwOWU3MTJlNjY3OCBweTNrCis4NzQ5OSBlMjBhNjQzNmE5MjcwZjhhZTdmNTBiMjVkMWNlMGU0NjIwYzg3NmRmIHJlbGVhc2UzMS1tYWludAorODc1MDAgZGQ2ZDFlY2JlYjU2ZDNjYTMzMmFlMmQ5MjExYzZjNDZmNGUzMGUxMiByZWxlYXNlMjctbWFpbnQKKzg3NTAxIGJjZDZhNjViOGIyMjNlNTVhMjk5NTMyNzUzMDllYTFmZGRkMWQ2YzkgcHkzaworODc1MDIgNDQyZjFkYTAxYTg5ODJkNGFlYzQ3ZmRmNWYyOTA0YTJmOTQ0OGNhYiByZWxlYXNlMzEtbWFpbnQKKzg3NTAzIGQ0ZDNjODlhYjM4OGYwYzk1MWVmNDgyM2EzOTJmZjIyMzRmMjEzYjcgcmVsZWFzZTI3LW1haW50Cis4NzUwNCA5M2U5NWIyZTFhMWEyM2IzYjFiNWJlOWNlZjYyZTAzYzNhNmVhMzg1IHB5M2sKKzg3NTA1IDRiYjdmN2IxNTFmZWE5NDk4Y2I1MjY3MTk3MmJjN2M3N2QzNGMxODMgcHkzaworODc1MDYgNjZkODQ0NmEwMTliZTc2Nzk5NDRjYzNjOTA3NmFkOThhZjY2MjlhNSBweTNrCis4NzUwNyBmNjExOTY0NTNjNzgxZTcwNmZlY2IxOGRlYjA3OTkyOTcxYzI0YWRlIHB5M2sKKzg3NTA4IDIyYzEyYTVkOGVkMzA1MTU1MjcwNTliYzY5YzA2ZDdhNzM3NmE0OTMgcHkzaworODc1MDkgNWRhZTA0ZDQ5ZTE1Yzk5ZGU4NTljYzI1MjhlMjM3YzE5MWY1ZmVlOCByZWxlYXNlMzEtbWFpbnQKKzg3NTEwIGM2OTQ2ODViNzVlMjQzYTFjYWE3YjJiMDE4OGI0M2E2NmUzYmFiOTAgcmVsZWFzZTI3LW1haW50Cis4NzUxMiA2NjQ3MDVkYmZlNjI5OWUxOWQzMDEzYjQ3MmVkMDU5MTc0MjY0MGExIHB5M2sKKzg3NTEzIGVmZGM1ZDBkODFiNzIxYzI4Y2E2M2U4NzNhZDQ2MzVjZWNlOWU2NjAgcHkzaworODc1MTQgYmJmNzUxZmRmNDIwNjc3YzU0YmRjMjM0NmVmZGI2Yzc3OWQyZGVkYyBweTNrCis4NzUxNSAyZDA5YWY0YzEzN2M5YzZmM2NmNGIxNTUzZmZmNWM0NzA2NDI4NDA4IHJlbGVhc2UyNy1tYWludAorODc1MTYgODk1NDk1MzVkOTc1ODc0MjMwZTJiOTk1ZmUzYzE1YTJjMTExZDgzZSBweTNrCis4NzUxNyA2ZjE5NjIyZGQzNDJiNGQ5MmYwYzdlN2I1ODBmMGM5ZWM4YzE2YjIwIHB5M2sKKzg3NTE4IGZjODM0YjMyM2YyNjdkZDQ0ZGZlOWFlN2VmOTE5N2QyNzhiZTVhYWYgcHkzaworODc1MTkgNTYwNWY2OTIwYjYzOGU0MDhlOWJjYzViZmI1NDJiYTQwNzVkZWViYSBweTNrCis4NzUyMCAzMDVhZjZmNWNhYmY5NGViNDJiOTU3MDk2YmUxMjZjYTlhMTI0ODhkIHB5M2sKKzg3NTIxIDUzMjA5ZDAwZDNhYjE5MmU0NjVjMzQ1NzRiYTRkMWViOTNjMzY4YzAgcHkzaworODc1MjIgMDAwNDAxM2FlOTg0YTljNDE1MzAzMmUzYmJlMDBlNzgwYjM2YTYyOCBweTNrCis4NzUyMyAxMDlkZWZjMWE4Y2ZiMmUyYjJmNDIwNzNkM2RhNjA2MGU4MDExMjBlIHB5M2sKKzg3NTI0IDNhNDgxNmMzNmRmN2ZlY2Q3OTY5NGVmYzIxY2RmMThkOTQzZjhjMWYgcHkzaworODc1MjUgZTBjNTJjMGU4NTg2MjMzMGNmMjMzNWQ2NmJmNGY3ZjFhMzc5YTU1ZiBweTNrCis4NzUyNiA3ZDU1MWQ1ZWY0ZmNmNDY5OGVkNjJjYTg4NTNiNzZhOTcwOTg5OWFkIHB5M2sKKzg3NTI3IGNkNmUzNDNlMjc4ZThjMjRiMTA4YTkyY2M1MDRhNjVkNTg4NmMxMWMgcHkzaworODc1MjggNjE0NDhjZGMwZmE4YzBmNWIyZTMyN2E4Mzg5MTEwZWI3NWM2YTkwOSBweTNrCis4NzUyOSBlZjkzNTMxZDBhYzQ3YzkyMWZlZjI5ZThjMDc0OWQ0YzU0MzYzZTI3IHB5M2sKKzg3NTMwIDJlMjQ3NmZiODNlZmY5MGVkN2NlZjA1M2NhMjUxMjc3NDQ3ZDA1NjcgcHkzaworODc1MzEgNGE3NzM5YzUyNzRiOGE1YjgyZmZkNjQxMzgxOTE5MWJjMDRlZjlhMyBweTNrCis4NzUzMiA4ODA1ODZiOGQwZDAxNTdiYWY0ZDllZDZiNTUwMzAyY2U0NGU4Y2YzIHB5M2sKKzg3NTMzIDAxNzE0ZWZkYzZjZjEyMDk0Y2Q3MGU1NDhmODgyN2U3Mzk0OTk4Y2IgcHkzaworODc1MzQgOGZjYjhmMjY1NWE1OTI0MDg1M2NmMTZlZmM4ZmE1MWFmMjJhNzc5NSBweTNrCis4NzUzNSAxNGZkMGRmYjE2ZmZjMzYyNjlhNmFkOTNiODIyNmQ3YzkyNzY0MzhkIHB5M2sKKzg3NTM2IGY1MDkxMjk4MzQ2MTdjOTYxYWMzNzY0M2RmNzFhMzVhMjUxOGJmNGEgcHkzaworODc1MzcgYjkwMWRhNTYxY2QxNDA3MGZiYzc2NjQyMzUyYzA0MzhmMzgwZWZhYSBweTNrCis4NzUzOCBhOGJlMDU2NzNmMzQzNzdmMGY0MTA0OThmZWI4YjhjMTA1YzFjOGM4IHB5M2sKKzg3NTM5IDVhYTQzM2EyNzdmOTM3ZmM3OGNhMmNlZTAyN2M2ZWM2YmY5OGFmZTMgcHkzaworODc1NDAgYTRlYzIwY2M5MDY2NjgyMWIxNjVhOTZkZTY4MzBjOTUyN2JjZjNiMiByZWxlYXNlMzEtbWFpbnQKKzg3NTQxIDU0ZjFkNTY1MTU1NTc0YTc3M2IzMzE1NjQzNzkyYzgyMjRlNzBkOWMgcmVsZWFzZTI3LW1haW50Cis4NzU0MiAxOGJjZWU4NTY5YmIzN2E0NGUyYmNjOWU4NTIwMzdjMGJhMjQ5Zjk5IHB5M2sKKzg3NTQzIGNjNzhhNmJlZmJmMmYxZjZlZWE0YjU4MGYyOGExNTlkN2E4NGQ2NGMgcmVsZWFzZTI3LW1haW50Cis4NzU0NCAwNWNjY2Q0MjU3YTIyYTg3ODQyOTM3ZmMyOWM3ZmZhZjE3NWMzNjZkIHJlbGVhc2UyNy1tYWludAorODc1NDUgMzU0NmNlMWFhMzU1YmM2NzQxOWU2NWJkNTRhMWYyYWE3YzQ3Nzg2NSByZWxlYXNlMzEtbWFpbnQKKzg3NTQ2IDUyYTg2MTc0NjEyOTdiYjk1OTQ2YzdmOWJhZTY4YTA3MDRhMWUxZmMgcmVsZWFzZTI2LW1haW50Cis4NzU0NyA2Y2NkYjFlMDE2MTE1NzRkMWJlMDNlOWZlNTIxYjRlZmEzZDJmMmEzIHB5M2sKKzg3NTQ4IDY5NDYwYzgwNTczN2JlODM1MWY1Y2ViMmU1MGVhZjU1ZWI3ZWI0MDEgcHkzaworODc1NDkgYjdiZTY1MmRhZjZlZTMyMjIwN2IzYTQwY2FiZWRlODFkZmEwNWM3ZSBweTNrCis4NzU1MCA3N2RlZGFhMzZkM2FjYjhhZmMzMWMzNjViMjE4N2I5YmI5M2JjYWVjIHB5M2sKKzg3NTUxIDc0MWI5M2JjNjhhNWJlYmU4ZDcxZWRiNDI5MGY0NjczMDdjZjI3YWIgcmVsZWFzZTMxLW1haW50Cis4NzU1MiA5NTU5ZTExNTI1OTViOTVkZDJkNDE3MzJmNjViNGVhMjU4NDMyNGY5IHJlbGVhc2UyNy1tYWludAorODc1NTMgMGQ5N2JiOTk0MjVkZWNhMWZhY2JmOTA1MjkwOGNjYWRhMDgzZjFmZCBweTNrCis4NzU1NCA1YmJjMWRjNDU5YTU4MWY2NzZkOTU4M2IyNGU2YzJkOWM2NzFlNWIyIHJlbGVhc2UzMS1tYWludAorODc1NTUgMWRmMjAyMWM3YzNjNDdkMmZiYWQwOGFjYmQ1MDJiYmI3MGE5YmViMiByZWxlYXNlMjctbWFpbnQKKzg3NTU2IDI0OTg4ZjlmODUwYjFjM2VhMDE2YjE2MjQ3NjhmYjRmMmU2NDRjMTMgcHkzaworODc1NTcgZmE1OTg4ZjdjOGJkMjU3MDY0OGM1NGEyMDg2MDlmODM0Zjc3YjA1OCBweTNrCis4NzU1OCAyYTc3M2JlZjQwYzIxMTc0M2UwNGM2NWJmZmZlZWQ4ZWNhYjcxZDMxIHB5M2sKKzg3NTU5IDYwMzIzYTBlODBkN2MxZmZhMmIzMmZlMjRlM2RjZDNhMmQ4NWY2ZTAgcHkzaworODc1NjAgMzdhOTE1YmRmODI3YmE1MTQyNTZlZWJiMmQ4ZWJhMjYxMmUwNzhhMyBweTNrCis4NzU2MSA0MjdmOWYxNTUwNDg1ZTg0NDI4YThlZmI4ZDdkNTA5NTA0MmU3OWJmIHB5M2sKKzg3NTYyIDJiNDBlNGM3Nzc3NTUzNzI2ZTcyMmRjNWM4ZDI4ZWJmOTg1YWUyZTIgcHkzaworODc1NjMgYjBmYWY3YTQ1MjM5NTExNDM0MDBlNzYzOGM1YWVjZTljNmU5ZWYyMiBweTNrCis4NzU2NCA4YjVlZWI1ZjQ1NDY2NGJjN2Q2ZGI2ODM2NzEwNzJlYjQzYzhmMzRiIHB5M2sKKzg3NTY1IGUyZTU5Y2I0ZjUwY2IyYzI5YzAwMjcxMDE2N2EyYTQyNDEwZTAyZjEgcmVsZWFzZTMxLW1haW50Cis4NzU2NiAwMGJiMDQwNmJmZWQ5NDAxYWFjYTRmZmJkMzc4ZWMzYjI1MjJmNmNhIHJlbGVhc2UyNy1tYWludAorODc1NjcgYWI2MWJhYjMyMWMxMDExOTY3MDIxN2FhMWY3OTNiMGY4OWVmMDkxMyBweTNrCis4NzU2OCA3ZTcxNmI5YTQwM2QxNDk0OWRmMmE0ZTk1ZWQ2N2IyN2Y2M2JhOTFmIHJlbGVhc2UyNy1tYWludAorODc1NjkgZjA2OTdjYThhZDQ3NmRkODhhZjM2YTI2OTJiMjE4YjIyZDcwNTU0ZiBweTNrCis4NzU3MCAyZTU5MmE0ZTY4YWI4ZjYwNzE0NDhjMGViODk3MzM4NTVhYzA0MTQzIHJlbGVhc2UzMS1tYWludAorODc1NzEgMmUxZGJiMjUyZjI1NzgxOWEwMTI5M2Q0N2U0ZGZjZjgyYjU1MGE2NiBweTNrCis4NzU3MyAxMGI4MzY2ODM3ZDgwZGU3MzVhMWJjMjExNDk0MmViMWQxYjMyMGM2IHB5M2sKKzg3NTc0IDQxZDViNmNhMTkyM2VmOWY0YjcwNzhiZjExMzY5OWVlNGI3ZjZmYzkgcmVsZWFzZTMxLW1haW50Cis4NzU3NSBlOGU2NGViNGNhNGNmNTdmNDhkY2UxMzY5MmFhNDdhZjExODE4YThmIHB5M2sKKzg3NTc2IDkxMzg2MzRiOGJkMTQ2MDJkZDI1ZmFhYzVhYWE0ZmM4ZTczYWFmODMgcmVsZWFzZTMxLW1haW50Cis4NzU3NyA0YzgzYTI5YTcxMmY5MTVkYTRmOWZiYWUyMTM3ODhiZDNlNjBmZjQ4IHB5M2sKKzg3NTc5IDg3ZTZiZGIzNzNkMTNkNTVmOThlNmExMGEwMzk4Yjc3MmM2MzQ3YTkgcHkzaworODc1ODAgMTYzMTlmOWJlOTdjNGViOWExNWFlMzA4MTNhNGQxZmRjMjk1ZmM3NyBweTNrCis4NzU4MSA1NGVmNTJmOTcxYTUxOTdmM2NlNmEwMjFhODMwNGVkYTFhYmFjM2U4IHB5M2sKKzg3NTgyIDYzYmY4NGNmZDhhNjE0ZWI4NTYwMDEyYzU5MGRjNGM4ZmQ0NDBkMjkgcHkzaworODc1ODMgZjBiNTZhMzhhNTI0M2JlMDE3YzNmZmE4Y2QxYWVlM2U0ZGI1ODkwZCBweTNrCis4NzU4NCA0NGViMDlhNTUzOTNmMDdiZTlhNGI5YjgxZmIzYjM3NDU1MjIyNzFiIHB5M2sKKzg3NTg1IGYzN2Y5NmZjZTdiOTRkYTdmMzM3MjlkNWNmNzY2NGM5MmVhZjkzZDkgcHkzaworODc1ODYgZmRiNmJkMWQ1MzU0Y2U4MzZlNDcxNDljNDAwYTE2ODQ2Mjk4YmE2NiBweTNrCis4NzU4NyA4YzdkZjAzNTYwMzYwMjBmZWRkYTA2ODVjYjlmM2EwZjJjY2IxOWJiIHB5M2sKKzg3NTg4IGNhY2ZmZjM0OWQ0OGQ3MzJjYjBmZDhhOTQyMmZkNDM5NWQ4ZGFlY2IgcHkzaworODc1ODkgMGRmYjgzOTdhOTczYmFlNmIxNmQxYTdmMWI2OTU2NjQ5YjIxMTQyYSBweTNrCis4NzU5MCA3MDIwMzdjMDM5ZmYwMTM5NDk0NGRlYmJmYzNmM2EyY2RjYjcyZjEzIHB5M2sKKzg3NTkxIGM3MmVlNmUzYjdkZjhiYjlkMThjYmY0MGZhMmRmMDQzMTU3MTQ0MjkgcmVsZWFzZTMxLW1haW50Cis4NzU5MiBhMTNiODY2M2ZlYmFjNzdlZGU1NDMzY2Y0NDE2Y2Q3ZGM1ODNjMDI1IHJlbGVhc2UyNy1tYWludAorODc1OTMgNTUxMDA2M2IzOWQ0MDFlMGU4Zjk5YzA5MzcwNDRkYTI5ZmViMmRiNCBweTNrCis4NzU5NCAzZmU2NmZjMjIxN2IzMDFhOWJlNGU2ODBkNTA3NjZhNGMzODJiMjM1IHB5M2sKKzg3NTk1IGI2OGYzODdmYmI0OGE4YmU0NTNhMWUzODI2NWRjOGY3MDIxYjNmMDYgcHkzaworODc1OTYgODc1NzIxZGE3NDZkMzViN2NiOTYxNmViZmY1NjE5ZjY0MjYxYmJmOSByZWxlYXNlMzEtbWFpbnQKKzg3NTk3IDUzZGIyOTBlNDZlZjkzYjg4ZGNlOGNlNmNlZjM1OTYzYjhlYjk3NjggcmVsZWFzZTI3LW1haW50Cis4NzU5OCA4ZjkyNGNhZjJlNWU5OGRjOTg0Y2JiNTEzNTlkYWZhODY3ODU5MWEwIHB5M2sKKzg3NTk5IGVjYTI1ZjFkZWFlNzMxODMwYmJlYzI0NTNkYmU4ZjFmYjEzZGUyNzAgcmVsZWFzZTMxLW1haW50Cis4NzYwMCA1MDBlYjNkMDg5N2Y0OTEzZGE4OGNhMjIwZjdmY2NiZDBkYzQxNGNiIHJlbGVhc2UyNy1tYWludAorODc2MDEgM2JjNzQ2MTZjOWZmYzMxOWEyMjNlN2Q5NmI4MmEzMjZjNmY3NjMxNiBweTNrCis4NzYwMyBmYTg1NTAyMTNiY2ZkZGU3MjMyY2ZhMzQ2OTU3MjgyNDE2YTM3MTUwIHB5M2sKKzg3NjA0IDMzNTQzYjRlMGU1ZDYxNTA1ODgwNWJmNTY3NGQ4NzZmNjU5NTdkM2QgcHkzaworODc2MDYgY2Q4YzliNjdmMDMzODUyNjY0MzMwNTU3YzE3NzY0NTk5ZjMwOTVjZSBweTNrCis4NzYwNyA1ZGJhNjdjYTZjY2ZiNTVjMDE3ZThhNjYxZjY1NjY2YWRiY2JlZjdlIHB5M2sKKzg3NjA4IDdiYjM3YTRjZDdjZjc1OWVkMDE3NTZkMGQ4NzY2NDUwMTJhMTUzY2IgcmVsZWFzZTI3LW1haW50Cis4NzYwOSA1ZGI4OTg1M2NhY2UxOTY4MDdjMDFmZmM2MzFhODgxY2ZhZGY3NGIyIHJlbGVhc2UzMS1tYWludAorODc2MTAgOTAwYmEwN2U0ODI0YjhlMDhlYzk2YzM1YWYxNjE5YjYyMjdiM2UzMCBweTNrCis4NzYxMSBjY2VkMGE3Y2ViNDNlODA0MTU3YWMxZjQxNGY3MjkzZDM4NDI1MjAxIHB5M2sKKzg3NjEyIDQxNWE3OTJlMTI0OTNiOGMyMWJhYWVjZDc3ZDU1OGU0ZDk4OGVhMmIgcHkzaworODc2MTMgYTlhYTVlNGViOGMzYWU1NWY5MGQxNjFlZGM4YWI1NTZlZGRhMWQyOCByZWxlYXNlMjctbWFpbnQKKzg3NjE1IGY4YzJkODkwZmQxMDU0YjlkMzVkY2NhOGUwOTJiM2M0NTI2MDUzYTMgcHkzaworODc2MTYgOGRiZjg1NWM5MGVkYWM3ODE5NjllZWE0NjA1MWI3NzBlNDIwMTVmZSBweTNrLWNkZWNpbWFsCis4NzYxNyA1Nzg1N2E2MGZhOTc4NWJlZTA0OTJjMzViOGIzYWM0ZTA3NGZjMTFlIHB5M2stY2RlY2ltYWwKKzg3NjE4IGRkNDk0NTVkOGE4YzkxNzc3MjdiZTljNWNjOGFkYzQwNjY5YmI2ZmUgcHkzay1jZGVjaW1hbAorODc2MTkgNmFmOWU4MDAwMzMyOTc4YTRhM2Q4ZDZiODBmNDFmMTA0NzgxNWEyYyBweTNrLWNkZWNpbWFsCis4NzYyMCBhNmNkODRjYTdiMmE3OTY1MGY0NDJlMDdkYmNkNTI4YjVmMjUzOTc5IHB5M2stY2RlY2ltYWwKKzg3NjIxIGFlZTQ1NDQwMGVkNzE3YjgyN2JmZWFlNTM4ZjMzNzY2NzgzZDI4NzQgcHkzay1jZGVjaW1hbAorODc2MjIgNGFhNjZlNTE0ODhmMzk0NWFkYmY3ZjFmZjUyY2JhZGI5MDRkNmUyYSBweTNrLWNkZWNpbWFsCis4NzYyMyAwYjJlYTkwMzAwYzBjOWJmZmVhNTE1MTMyOTYxNTlmZDBhYmMzOGE3IHB5M2stY2RlY2ltYWwKKzg3NjI0IGQyY2E1YjMxMDRhYTNjYjk3YzE0ZDcwNWMyMzdiZGRjZjcwOTJkNWQgcHkzay1jZGVjaW1hbAorODc2MjUgZDM5M2VjNTM2Y2E5ZDVkM2VhMzIwMTIyMzdkMTk0ODY5MDYyOWQwOCBweTNrLWNkZWNpbWFsCis4NzYyNiAzZmVhZGE3MjIzM2M0NzM0ZTcyYzk0MjM3ZjJiNGU0NDQ4NzdmMzEwIHJlbGVhc2UyNy1tYWludAorODc2MjcgZGM2MjQ1YmZlNTY2MWFmOTZmYzkyNmM2MWJmMWQ5ODc2NjMzNWYzNyBweTNrCis4NzYyOCA3NDM2ZGFlYzk0MjEwZTI1MWZiOGE2OTAyNTJkY2Q5ZGE1MmM5YWNkIHB5M2sKKzg3NjI5IDQ0OTZkZWIyNjI2NWRhMzYwN2UwODZhYzUwMzNlNjg0YjhhYWViMjIgcHkzay1jZGVjaW1hbAorODc2MzAgNzk4YWEzZmUwMzQ3YjU5ZDk5YmMwODdlYTM1MTgzNDdkMWY0N2U0NyBweTNrLWNkZWNpbWFsCis4NzYzMSAyMWU0ZjFhYTI0MzBjMmZjNTk5NmEzN2M2NzBhNGExYWVmNmMzOTY2IHB5M2stY2RlY2ltYWwKKzg3NjMyIDBmYzI0OTNhMzg2M2Q3ZTJkMTUzMzA4MTYyNDRmNjIxYjcwZjJmZDQgcHkzay1jZGVjaW1hbAorODc2MzMgNWQzNmYwYTUzNzgzYWRlNDBiZDFiZTc1NjNjNDIzNDFjMTUxYTlkMCBweTNrLWNkZWNpbWFsCis4NzYzNCBlNzBjOTM2MTJkN2ZjYmQyYmM5OWYxZmYxZjYzM2NhM2ZjNDc2NWQ0IHB5M2stY2RlY2ltYWwKKzg3NjM1IGQ0NGJhNzUyMTAzZjIzYjdhYTc4MjlhOWE4YjM2NzYxNWJjZGQ2MmEgcHkzay1jZGVjaW1hbAorODc2MzYgMTZlODg2YTc2YzVhNTljNDk4Y2VhOWE3MDRiODgzMWY2ZmY2NmZjMyBweTNrLWNkZWNpbWFsCis4NzYzNyBmZTcyM2I4ZDdjNWZlMzA5N2FmYzg5ZTdhZWQ1ZGQ3NWZjMmRkNjA5IHB5M2stY2RlY2ltYWwKKzg3NjM4IDY0MDE0OTEzZWI4ODA5Yjg1ZmRiNmM5ZTI3MjljYWQwYzRiOWEyY2UgcHkzaworODc2MzkgYjM0NDM3N2ZkZDhkYjU2YjQwMTA5ZDgxNTc1OTlkMjI2MjkyNGNmZCBweTNrCis4NzY0MCAzMzY1YzdiNjQ4OTM3ZGZlNTJkMGE1NmVjYzkyNzgzZGRmOTRkMWU2IHJlbGVhc2UyNy1tYWludAorODc2NDEgOGYzM2I1MDIxODNiZjAzOTQ4MTJlZDUxY2FiZmEzZDFhMDgxN2IwNSByZWxlYXNlMzEtbWFpbnQKKzg3NjQyIGZmMTI2MWExNDU3MzNhNDZkYmZjMGIxNGUwOTE3MzM4MmY5ZDI1NDMgcHkzaworODc2NDMgOWVhMTJlODZkNTY1MjI3ZjNmNjlmMjlhOWQ1MzU0Mzc2Y2ZiZjFlYSByZWxlYXNlMjctbWFpbnQKKzg3NjQ0IDE1MmEwOTg1YjEzOGI3OTE4ZDE3ZDdjOGNlNWI0ZTMyYWRmZGZhNTkgcmVsZWFzZTI3LW1haW50Cis4NzY0NSAwYWZjNDEzOWNjNzAyOTFjNGExZjMwMjQzODc0MzRhZDYyNWVhNzhmIHJlbGVhc2UyNy1tYWludAorODc2NDYgMGNhZTIxZGU5OTIxMzhmNGQ1NWE2NGY2MmJjOTc0MjRhNGY4ZWM5OSBweTNrCis4NzY0NyAwMDcxYTE3MzQ2OTA5OTA3YWE2YzUwMmQ3MDAzMDcwZTM5YmRiYTFmIHB5M2stY2RlY2ltYWwKKzg3NjQ4IDZjNDYzYjA3ZGJkYjcyYWM1NGQ0MTBkZjkyNGRlYWUyMDg1NzMxY2EgcHkzaworODc2NDkgZGJiNmZiMmM1YjlkN2U2YTA5OWM4YWY5MmYwNWI0YzJjYjc3ZDAyOCByZWxlYXNlMzEtbWFpbnQKKzg3NjUwIGViOTU0Yzc2NTUyMWFhNzI3ZDQyNjRmNzQyMGUzZmM5YmQ0NDliNGMgcmVsZWFzZTI3LW1haW50Cis4NzY1MSBhNWFlM2ExN2Q1ZmIxODE0MTVmYzMyYzVmNDRiYWVmZmE2YTNkNGVlIHB5M2sKKzg3NjUyIGUwZTRlZmI2MzM1NGNkYjZmNDY2Y2U1MDYzMjI4M2FlY2MzN2ZlN2IgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjUzIDI1NmY3OTRjMmNjMDI4NDQ0MGJmNWVjYzc2MjBmMzM4NzBlMDJmZDkgcHkzaworODc2NTQgNTgxZTY3MjQ3OGY3ZWE0YTFmMzI3MmJlN2VhODA2ZTgyOTI1ZWIyOCBweTNrCis4NzY1NSBjNGQ2N2ZhOTA5ZGNkMmRhMTlkMWM0MWVmMDU2YTIwNzY2MmJiNDgwIHB5M2sKKzg3NjU2IGIwMjBkZjllZTM4MTZjYjBhOTM2NGU0MGM0ZWE3YWI4NTAyM2EwYjcgcHkzaworODc2NTcgZDM5ZWZhNTRkZWFmMDQ5MzA5OThlNDAyOTE3MjhlMmZmNzE0Y2JmMCBweTNrCis4NzY1OCA0MjYwZTMwMjUyZWIyYmI3ZDU1ZWI0ODNkYmU1NTI4ZDY2OWJjNTdiIHJlbGVhc2UzMS1tYWludAorODc2NTkgNzMwYjFhZjA5MjM4NzQ4M2QwNzI4ODgxZmE4OWYwNmRkNmY2YjM4YSByZWxlYXNlMjctbWFpbnQKKzg3NjYwIDA0YWE1YmU3MDZhYzAxNzcxMWExYWE5NWIxYTlmNTM0MjQzZmEwZDMgcmVsZWFzZTMxLW1haW50Cis4NzY2MSBhNWRhYTE0MDAxYThlZWJhNGFkMDI5N2I2NjdlZTU5NjJhMDU4ZjhiIHB5M2stZnV0dXJlcy1vbi13aW5kb3dzCis4NzY2MiBmODllMzdjZDZjNjU3NzE2OGRjYjNmMDI1MzA2N2MyMjZkYmUzYWI0IHJlbGVhc2UzMS1tYWludAorODc2NjMgODhlNWFlNWI3ZGMyNmEwMWM2NWJhZTk1MjMyODFkNzljNWMxM2JkNCByZWxlYXNlMjctbWFpbnQKKzg3NjY0IGUyODg2OGNmOTgyNTg5Yzc1ZTE3ZDBkNDBkZTNhMjk4YzdhODM3YjEgcmVsZWFzZTI2LW1haW50Cis4NzY2NSA3NDYxNDNlYzFmNjBkYTEyOTU0YTdlYTY3MWY5MTUzNmY0MDI5MmEwIHB5M2sKKzg3NjY2IDRhZjk4N2VjMDMzYTBkMDZlMTMxOTlmODlhNTJlZmVhYWVjYTEwYWUgcHkzaworODc2NjcgMjg1MzhmMmUwY2MyNDdmM2Y1Zjg5YTQ3MDhmYTRmZmFmNDkzODRkMSBweTNrCis4NzY2OCBkOGVkMGNjOWUzMzgyYzI2OTRjY2QwZjRlYTMxMmFjZjNiNWExNWJmIHJlbGVhc2UzMS1tYWludAorODc2NjkgOTNiN2MwMDA4YjA4NWUwN2EyOTQ0NGY4OTYxYTlmMmY3ZjJjMTBiNyByZWxlYXNlMjctbWFpbnQKKzg3NjcwIDczYjI0NDc2Y2EzYmFhZjcwN2U3NzYzYjdiZmQ3ZjcyMjUwZmQ1MzMgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjcxIGEwNDhkMGNmMmFkMWQ4MjEwNzg0OTVjZTM5NzAyYmI0NDczZGFhOTUgcHkzaworODc2NzIgNTM4NGU3MjBmMjhmZDE5ODM2MGRjZDY2ZTk4NTZmYjEzZTliZDc3YSBweTNrCis4NzY3MyA0MzliZjk2ODBiZWYyNjYwM2M4ZjRhNzcxOTI5MThhZTM3MzdlMjA2IHB5M2sKKzg3Njc1IGU4YmNjN2RiYWI3ZGMyMGMzMzlmMzgzMTNmOGE0NGM0ZGE1NDNjZWIgcmVsZWFzZTMxLW1haW50Cis4NzY3NiBjODk4ZGQyMTViYTA2NjU3NGY3YWU0OGUxOWE3NmY4ODM1ZmY1NjNhIHJlbGVhc2UyNy1tYWludAorODc2NzcgZmE1OWFjMTE2NDg0MGRlOWMxOGI0OTJjY2EzNDM2NmQ4MjY2ODM5YiBweTNrCis4NzY3OCA1Nzc2ZjQyNGQ4NTc4MTJkNzFmYWJkNjcxNTg2MTM3ZDIyMjNlMzIwIHB5M2sKKzg3Njc5IDI4MTE5MDYxZjdkMDExODhkZTQyNTgxMTlmNjMwNDBmZDhmYzg3Y2EgcHkzaworODc2ODAgODA2MDBjMGMzM2I3OGIxZGM4NWQ3MWU4YTJkYTAyMjA0YzI3NGE0YiBweTNrCis4NzY4MSBmNWIxMDVjOWY0NmJmNmYyYWJjMzdjZTE0YTY3Y2U1YzJlYjAzYmZhIHB5M2sKKzg3NjgyIGJhMTZmZjg2ZDRmNmNkMTU5NmRhMjYwYmQzYjNhMTc4OWJmZGQ1ZDQgcHkzaworODc2ODMgZGJhOWI5YzdhMmRiNzZmODQ3NzBhYzIxM2Y2ZDkzODZhYTY1NDEwMyBweTNrCis4NzY4NCA2Y2I3ZWQ3YjY2OTdlNTM1MmEzZmY0ZWU0NDFjMDQ1N2U4ZWMxOWU4IHB5M2sKKzg3Njg1IDk0ODY5MjcxMmZkNzEwZDRjMzExOGYxMjBhMmJlZWJiZWE5OTZhMDkgcHkzaworODc2ODYgOTMxZDIzMjBmNTZhMDdiNDcxZGQ0NjMzODRmMDM1NzYwZDY5NzU2NyBweTNrCis4NzY4NyA0YzQ2ZjY2MzJkZGY5Nzc2NGJlZDA0MmU0NzBjOGE5YjA5ODMwZThmIHB5M2sKKzg3Njg4IDc3NDgzZjNlNDkxYTc5MzYwYzAwOWRiYzRjZDQ1NmNhZmUzZWFhYTEgcHkzaworODc2ODkgYzQxN2Q4MDU3NjgyNzQwOTdjZDM1YzliMGYwMDFmM2FiMGM4Y2JmMyBweTNrCis4NzY5MCA3NDdjNTVhOTRjYjBlNWU1MThkZmU2Njg2YzZhMjE3ZmIxZjZhY2Y3IHJlbGVhc2UzMS1tYWludAorODc2OTEgNmI3ZDlmMWMyY2U1MWE4NGNmMGEyMzI2OGRjNGFmODA4NDcwMWY5ZSBweTNrCis4NzY5MiAyNDUzNTkzODJiMGZhZDNlNDMyOGM3YmRiNTBkYzUzMGFkYmE2ZWNkIHJlbGVhc2UyNy1tYWludAorODc2OTMgZmViMjNlMjRkY2I1YzcwZjMzMTEwNzk5Y2Y3Mjk2YTJkNDFhNzZkMCByZWxlYXNlMzEtbWFpbnQKKzg3Njk0IGEzM2UxZjAyMDkxZjhmYTE1ZTdiODJiMDc0ZWIyYzk1OTQ0OWU5MDMgcmVsZWFzZTI3LW1haW50Cis4NzY5NSBhNjZhNmU0MjUzOGZlNDA5MTNmNjU2M2QyYmNlZDRhZmU3YTk3MmY1IHB5M2sKKzg3Njk2IGU5YTUxZDQ2MzU3OTI0NDMxNTYzYTdhNjJlMDk0OGUzNmMzNGI5ZGEgcmVsZWFzZTMxLW1haW50Cis4NzY5NyBhNDc2ZWIwODdlZTk3NjgzMzFlODNhMzUyNDgwNDgzNTU3NTk3YWJjIHJlbGVhc2UyNy1tYWludAorODc2OTggOGFjNGJjY2E4ZTMxNjFmMmVmYjdiZGFlY2MxN2U3OWYyNDRiYjFhZSBweTNrCis4NzY5OSA5YWNlZDVhZWQxMWFmNWFlMTdiYzdmNDQ0YjViOGMzNjZkN2NlNzIyIHJlbGVhc2UzMS1tYWludAorODc3MDAgYjBiNDQxNGMwYmRjMjFkZTQzNjUyNDc4ODgwODdkZDczMTFmNjA5ZCByZWxlYXNlMjctbWFpbnQKKzg3NzAxIDc4ZGUzYTdmYjg5NjM0ZTI5NmJjMjU3NGE1ZDJhNTQxMWUzYmIyZTYgcmVsZWFzZTI3LW1haW50Cis4NzcwMiAyNzVmYjk4NDk0OTFmZTE1YTdmMjBiYzFiYjdjNmVjMjYzZjRlMjlmIHJlbGVhc2UzMS1tYWludAorODc3MDMgZjQ5OGVhOTc4YzZmZTBlZGM5ZGE1ZWE4OGU5OWM0MGY4Yjk4ZTQ0MiBweTNrCis4NzcwNCA2MTE1NjdlYzRkN2I3MTVjYjgwNjhjMDA5MjQyZmRiOGQ3MzQ0MWI3IHB5M2sKKzg3NzA1IDhjMTg5OTJkMzc1MGFjMjNkYWI3OTAxYzY2YzUxN2MxODRhZGJmNTEgcHkzaworODc3MDYgZjYwYTg5OWEyMDRlNWIyOGVkY2M2ZWViNDEzNzdiN2MzZDRiMjFmMyByZWxlYXNlMzEtbWFpbnQKKzg3NzA3IDQwOTRiYzEzYWNmY2M0MTMwZjNjMjQ5NjM4MTQzMTgxM2Q2MjhkYzkgcmVsZWFzZTI3LW1haW50Cis4NzcwOCA5ZjQ5ZWU1MjM5NzU2MTA5ODAyZWU3NDMyZjYwN2U1MGZkMTIwODhlIHJlbGVhc2UzMS1tYWludAorODc3MDkgNWJjZjEwOGEzZjVkZmYyN2RhMjEwNzg4ZWMzM2I2OWU1NWIwMmJjMCByZWxlYXNlMjctbWFpbnQKKzg3NzEwIDZlNWFhZGE0ZmRkNWYxNzY4ODYyYmViNGJmNzA1MTNlNDI1YTA1YWMgcHkzaworODc3MTEgNTAxMTg3MGVjODZiZDRmMThiMjU0NGJlNGI2YTI2NTM3YjUyYWEyMSBweTNrCis4NzcxMiBhN2M0OTkyNjZhOWZlMDI1MWI2ZTcxOGY4ZjhhYWNkZGZlMzQ4OWNhIHB5M2sKKzg3NzEzIDhmNTA5YzUyNjBhOThhYzM5OGVhZTg1ODJmMTM1N2YxNmRiMWVhMjEgcHkzaworODc3MTQgODkzMjczZDc5M2M2ZWY1MWM1NTI5YzgwZTJiNzgyYjkyNDAzMjAzNSBweTNrCis4NzcxNSA3MzFkZWM0ZTc1MTM4MTY0YWQ5YzhiM2RkZDBhODEwMzAyZDYzODY0IHJlbGVhc2UyNy1tYWludAorODc3MTYgOWFkODk2NDI2Zjc5NjQxODAxM2JhZjM1OWFlYTRmODBjZmNlZWY3MyBweTNrCis4NzcxNyA3MGJlYTJkYWRlZjhhNzE0ZDJiM2E3ZDNmY2Y2NTY0ZTBkN2Y2Yjk0IHB5M2sKKzg3NzE4IDhiODQ4ZDNjNmFkMDE0NDUwODk5ZmVjZDBmOGNlMmE0NzFjMTVjZGMgcHkzaworODc3MTkgZDM2ZTM0NWExYTNjZWNiZTlkZGY4ZjY2MDAwZmQwZjEyYzM0YjM3OSBweTNrCis4NzcyMCBmMGViMzQ0OGNlMzg0NTkyOTM0MDdjM2ZhMGM5NDQyOGQ3OWQ4OWMxIHB5M2sKKzg3NzIxIDljZDgzYzY1OGJhNDYyMGJmMzIzMzhiYzZmYTk2N2ZiMTRhZGQyZjcgcHkzaworODc3MjIgMzc0ZGM5MTBkYjMzYWQ2OGMwNzM4ODlmN2E5NTZkZDQ4Y2VkMDdlNyBweTNrCis4NzcyMyAxOGRiYzNiYTE2YzBlYWZkODBjNjcyZjM3OGE2N2M0N2YyZmViMTNkIHJlbGVhc2UyNy1tYWludAorODc3MjQgYzAwN2MzZGJiZDNmYmQ5ZWUzYmQ1Yjg0Y2M2Yzc2ZmVmMWU5NmI4NiByZWxlYXNlMzEtbWFpbnQKKzg3NzI2IGFkMmYzNDM4MGFhYzg2Nzg0NzRiZDY1M2NlMTM5NmJjZWJkYzZjNWMgcmVsZWFzZTMxLW1haW50Cis4NzcyNyAzZTFjM2QyYTg2ODkwNzA1ZjEzNzI3NjkwNDVhZDZhOWJiZDM0NDYyIHJlbGVhc2UyNy1tYWludAorODc3MjggZjc4ZTdkYjFkNWU4NjRlY2U3OTlkOWU3ZTE5NTc5NzM2MTFhMTJlNiBweTNrCis4NzcyOSA0NTQ5NDI2ZWU0ZDY1MmViYzg1ZGJmY2FjMGQyMDM2NTAxMzA2OGM1IHB5M2sKKzg3NzMwIGY0YTgwOGY1YTY2ZDFjZWRkY2U0NDM1MTgzNzAzOGM3ZmU2Y2YwYzAgcHkzaworODc3MzEgYTdkMTVkZjdkNjdkM2YwZjExMzFmZTQ4YzA4ZWJkZWQ4ZDA3ZjVjYiBweTNrCis4NzczMiA5OGM4YWEyMzdmYzFjYzEzOThlMmQ4ZDU3MDFkODUxNjAxNGFlZGJiIHB5M2sKKzg3NzMzIDNiZjRkOWYxNjYwYTRjMWRjZWE1MzViOTQ0NGU2NDkyY2Q2OTI0M2UgcHkzaworODc3MzQgY2QyNzk4MjA4N2VhYzRiYjI0MThlNTkzMGJiNWE3MDBjN2MzMGJlZSBweTNrCis4NzczNSA4YWE4ZGNhNDY2ODRiNTRmYmNkZGVlNTc5ZGY3YTFlNjhmYmJhNjkxIHB5M2sKKzg3NzM2IDFlNjJhMGNlZTA5MjJjM2Y5ZmI4MzdjNTE5ZjhhMzkzMzhlM2EzN2EgcHkzaworODc3MzcgNjQyYzg4MDY4MzBmNWZiNDIwMjQxMDFkMWE4MTcyOWViZDY4N2M3MSBweTNrCis4NzczOCAyMDA0M2RhNzg3MjZhMzk0YTJiMmI2ZDJhMzA1MGY2MmE1ODUxYjAzIHB5M2sKKzg3NzM5IDYyOWViM2I2OTkwOWYxY2NiNmYxZTBhYWRlZDNmYTQ5YjUwNGFhNmQgcHkzaworODc3NDAgMzQ3OGQwMDdkZjIzNzIyZGY5ZmQzN2ZiMmU3ZjQ1Y2UwNjRjYjU3YiBweTNrCis4Nzc0MSBhM2I3YzI5MDc1NGEwYTE1MjM4MWE4Y2E4MTNjYmVmOTc0ODk2YTQwIHJlbGVhc2UzMS1tYWludAorODc3NDIgYTZiYzQ5N2IxOTYyNDNjZWQ4ZTMyMDExMTAxYTljNWM0ZTdkODM3MCByZWxlYXNlMjctbWFpbnQKKzg3NzQzIDdjNWMzN2I5NjI4MTZiNzg3NTRlOTA1Y2E5ZGZkM2ViNzU5MTdmNzMgcmVsZWFzZTI3LW1haW50Cis4Nzc0NCA4YWY2ZThmYzAyMDViY2NjNjU4MDI3ZDFlZjM3OTNjZTc2MjY4YmNiIHB5M2sKKzg3NzQ1IDQ1NTdkNDk1YTQ4NDZjM2U1MjI1ZjVmZDVhMGM2YTU0OGE5OWUyNDUgcmVsZWFzZTMxLW1haW50Cis4Nzc0NiAwODE5MjI2NWQxNzJjNGMxMDg5NzQ3YjZjMDgxMjkyM2QyNDczYzhlIHB5M2sKKzg3NzQ3IGMwZmVmOGExNDRmYWQ5OGRlOGVkNmFlMGQyOTBkMzUyNDA1YjEzMmMgcHkzaworODc3NDggZWZjYjE0Zjk0ZTc2OTEzYmRmYzE2MTNlNzY5ODcyOGFmMzkyNjE4YSBweTNrCis4Nzc0OSBkZDNmMjhmZmQwMjkwODlkMDhkMWYxNmYzNTI4ZjZjZDBiNTg5ODQ0IHB5M2sKKzg3NzUwIDQ5Nzg5YTUyYTk3NjI0NDQzMzZkNDgyYzI4ZWIzNjkwNmMzNjljYjggcHkzaworODc3NTEgMGVmZmIxNzVjOTgxOWI5NDQyZTI1MGM2NGNjYzk4NWU3MWU3NDAzYSByZWxlYXNlMzEtbWFpbnQKKzg3NzUyIDg1ZmJkNzc1NTM0ZWI3ZDgwODM2YWM4YmY1NGM5OTU4MTFkNWUxZGUgcmVsZWFzZTI3LW1haW50Cis4Nzc1MyBhMGQ0ZWRhOGRhMGFmMGZlOGMwNDE2NjY5NDJjMjFhNWVmYWUyZmEwIHB5M2sKKzg3NzU0IDRjYzQ3YTkwODNlMzg5OTk2ZmZhZDRlOWI2YjM5NjI4YmIyZjE2ODIgcHkzaworODc3NTUgNGE4MmJlNDdhOTQ4MWIxYzAzYmI5NTFhZThlOGM2OGM1ZTlhMDFlMiBweTNrCis4Nzc1NiBkZTg2MmRjMGNjY2FmNjkxMjFlMWU4ZTc0ODQ2OTQzMGUwZjAwZTRiIHB5M2sKKzg3NzU3IDI5NjFhZjgwZDU0NTU4YjY3ZWM0YjM1Yzc2M2Y3ZjMwZGRiYmNhMTQgcHkzaworODc3NTggNTA2MGE5MmE4NTk3ZTUwZWVlMzk4YTE3YzBlNDk1OGQ1NDNiYzlkZiBweTNrCis4Nzc1OSBlOTM0OGQ2OGNmY2QwMDA4ZTlkODg1Njg2OTIwMTQxNjEwMmIyNDI0IHB5M2sKKzg3NzYwIGMwNDI1YjVlZGU0N2FkNmYyYTdkMTFiNDIwMzUxNmZkZGZkMDczZTcgcHkzaworODc3NjEgYTQ0YmFkZjllMDBmNjNkM2RjNWRmOWU5ZDcwNjEwMTViZTVmYzRkZCBweTNrCis4Nzc2MiBiYzU3ZmRkODk1NjJiMTcyMzE5ODcwMGQxOGE0YWEwOTQwMTcwMmZmIHB5M2sKKzg3NzYzIDc5OWNkMTUyMzExMTdmOTMzOTkwMDUzYTBkNmZiZDQxM2JjMTdmZTQgcmVsZWFzZTMxLW1haW50Cis4Nzc2NCBiNzQyNmJlNmJiYjRjYTFmMzhmYWNhNzkxNWNlMmQ4ODM3MTQ1ZmVmIHJlbGVhc2UyNy1tYWludAorODc3NjUgNzQ1MjI1YWUyOWVmMDgxYmZlZDYwZTFiNzU2YTVkMWVmMzVhNGMyMiBweTNrCis4Nzc2NiA5MTJmZDIwZGUwZTA3MjBjYjA0NGZlNDdlYmUzMGYyN2NjOTM2ZjJjIHB5M2sKKzg3NzY3IDEzMjM3NGQ1MzdlNGQxMGQ3NmQ2ZmZlNzY4ZjNlODQyY2I0MzE4OGYgcHkzaworODc3NjggZWQwMjU5MjMwNjExMmEwY2UyZDcwMjMyODE4ODgzNzA3MzU0OGUzZCBweTNrCis4Nzc2OSBiZGI1N2Y0NjNjODVmYjU0ZjNmOWQyZDEyZTBmNzQ3NzNmNGU5N2U3IHB5M2sKKzg3NzcwIDRiZjNhNWEwNDEyMDkzNzlmNzdhZDc3MWE5MDM1M2Q0ODQ0NThhYTUgcmVsZWFzZTMxLW1haW50Cis4Nzc3MSAwNzYyODk4ZmQ4MDI4NmU4N2ZmOWRhYTFkMDI2OWQyOWQxZWUwM2M0IHB5M2sKKzg3NzcyIDhmNTNhNGU4OTYzMTNjNTZkZmU3NWYyMTQ4NWU2YjU4Y2M4MDU5MzAgcHkzaworODc3NzMgZGUzODc5NGQxNzQ5ODlhMzllZDVlZjIxODY1ZjI2OWE5Y2NkOWQxMSBweTNrCis4Nzc3NCBmMDZjMjc4YjRmMjEyM2ViYmVmN2ZjMWE0NGQ5MWQ0MTBhODVlM2U3IHB5M2sKKzg3Nzc1IDU4Yjc4NDU1M2NhNGY1YTg0MmVmMmU4ZDJjOTE0YWI3MjMwNzlmYTEgcHkzaworODc3NzYgOTJmNjFhNjkyZTM5NDEzMWFkYjM1YTMwZDQ2NmE5OWNkMDk3MTgzNiBweTNrCis4Nzc3NyA1MTBmN2UyOWU3MjgxN2VlMWY2YWQ4OTQ4YzFkYmJiZjM2YTU0ZjVkIHB5M2sKKzg3Nzc4IDIwZTNhZjFkNTMwYThmYjM5OTJjNzNjMWQ2OTJmNDc1OGI3M2E5ODkgcHkzaworODc3NzkgY2Y5ZTFmNzQ2NGRjNThlY2U5YTc3MmRkZWZhYzYzOTkwOGY5MzA3YiBweTNrCis4Nzc4MCA5MmYyZDdkMjhmZWVkYjMyMGQ2YTVhMWVlNDRmMWZiZmY4ODhmZTQ3IHB5M2sKKzg3NzgxIDM0ZDg5MTU4MGYzOGQ0NTZmMDIzNTAwNjg0NmM4YmJjNDM0NzUxY2YgcHkzaworODc3ODIgMjQ3YjdiYTZmZmFkNDQ4OTE4OTA3YjRiN2QwMTE0ZGRjYTZhODIyZCBweTNrCis4Nzc4MyA4YzQ0OGE0Mjc3YTBkNGZiOWE2NWNhNWNmOGI4NjdmNDg2YWU2OTA2IHB5M2sKKzg3Nzg0IGFiYjY4NmE1YTFkZmNkNmMwMmZmNDU3YTNmMjI3MjJhY2JiNThiNGUgcHkzaworODc3ODUgYzliNDg0ZjJhMGI3MDc0OTU3ZWMyNjg1OWIxNTk5YzdjNTI1NWYzNSByZWxlYXNlMzEtbWFpbnQKKzg3Nzg2IDcxZTFhOTk2MTgzNjE5YTNhMjYyMzA1YjQ4ZmNkZTNjMWVhNGRmZDMgcHkzaworODc3ODcgM2Q4MjRiNTEzN2RkYjEzM2RmZTU3YTU4NmY1NzBhMDY1MzZkZWFmMyBweTNrCis4Nzc4OCBkODI0ZTljZmJlZTg2ZGYwYTViMzUxOWEyZmU2ZmI3NmUzNzI3MjcwIHB5M2sKKzg3Nzg5IGEzMjg4YTRlMmVhZDlhZDEwMzc2ZDNiY2E0MWYyM2ZjMjU1OWZmMGYgcHkzaworODc3OTAgMTQyMjg4MDg5YzFhNDY1NmExYTJkOTYyZDljOGViOGUzZjFmMjIxMiBweTNrCis4Nzc5MSA1ZDY2Njg1NDg0Mjg0MmY5MWNhYWEzNTljMjE4ZTcyYmEzMWUwMzcxIHB5M2sKKzg3NzkyIGNjYmM4NDIyMmZkYTU4YTM2MDZjY2ZiOTQ5Y2MxZDI0N2I1ZjQyOWMgcHkzaworODc3OTMgMTc3NGQ2YTJmNWJmZWY4ZjFlNmI0MTQ1OWIxNTQ4ODZjZjc1ZjM5ZiByZWxlYXNlMzEtbWFpbnQKKzg3Nzk0IDI2ODM2ZTQ3ZGZiOTFjNDcxYjZhMTkxZjU2ZDVkODRjNGU0YjZiMTEgcmVsZWFzZTI3LW1haW50Cis4Nzc5NSBkMmE2NDYxMmQyMzViNmVmMjQyZWQ5YWMzZmUzZDdiMjdkNTI4MGQyIHB5M2sKKzg3Nzk2IDY0YzI0NTMxM2NmZjlmZGQ0NmU1NGRjZDNjNWIzOTk4MjQ0ZjQwMTkgcHkzaworODc3OTcgYTRjZmIyNzgyNDE2NGFmZDFjY2IyNTVjNzI3MDA4YTRhMDFkNGFhNCBweTNrCis4Nzc5OCA1OTE5MjIyOTlhY2MxMTE4YWQwMzNhN2FiODg0MWZmZjE2OTc4MDdmIHJlbGVhc2UzMS1tYWludAorODc3OTkgYjMzMmU3M2I1NTY3MDdjNGExMDg4YjAwODlkMDNlNjcxNjJjOGMxNSByZWxlYXNlMjctbWFpbnQKKzg3ODAwIDdlN2ZjOTRmZDBkNDE0ZmJlYzIzM2U3YTI0YjUyNjZiNmZiZjMzOTggcmVsZWFzZTMxLW1haW50Cis4NzgwMSA0MTljYTA4OWQzNjVmMzAxNGE0ZTAyYjUwYTk0ZWYzMGY3NjVkNzIxIHJlbGVhc2UyNy1tYWludAorODc4MDIgNmExZDA4MDYyM2Q3N2I4MjVjMWRlNzcyOTlmMzg2ODMzYjZjMzVkMCBweTNrCis4NzgwMyA3MjIyNjk3OTY0ZmM3NDQzOTljOGVlMTE4YmIzOTQ4YWQxNWRkMWRhIHJlbGVhc2UzMS1tYWludAorODc4MDQgYzdmZDliNmFhMDAyZWUzMDFjZTNmZjllOGU3YzE2ZjJlZWRhMGJmYiByZWxlYXNlMjctbWFpbnQKKzg3ODA1IDhhMzAyYTA5ZWU4M2E3NjkwNWVlZDJlMDU3ZmZmZThiOTBhNmIwMzIgcHkzaworODc4MDYgMDIwZGE5Yjg3ZGFhODkxMzM0YmI3ODQzOGExMDRmMGFhZDNlZDcyNyBweTNrCis4NzgwNyAxZDRkYzlkZjI0OTY3MjgyMzU2ZmI5NjhlYTQ4NDAwZDY3MjQ2Yzg0IHB5M2sKKzg3ODA4IDAxYjI1MzMzMWE4NmUwNjgwYjdkNGI3ZmI0YTY4ODIzYTg3MjliNDYgcHkzaworODc4MTAgN2JhNWY1N2M3NGU1NzYyOGNhNDFjZjU1ZjYzMGQ5NDJjZmIxOTFiOSBweTNrCis4NzgxMSA3ZTU3NzdlMWYwZmRhM2YxMzZjOWMxNDZlOTMwYmMyZGJiMzBhMjlmIHB5M2sKKzg3ODEyIDEyY2M4MTA2MmQ0YTg0ZjY3MGI4YmE4ODNkNDZlODkzYTAyNTljODMgcHkzaworODc4MTMgNDNjOGMxYmRkOTRmZDhhZWZlOTg4NWUzMjFjMTFmODYxMDc0YWRkNyBweTNrCis4NzgyMCA4M2QzZDVlMDY4N2VmZTRkMTE4ODdlMGJlYWQzOWJiN2ExNDViYjRhIHB5M2sKKzg3ODIxIDJlZTZiNDQ0YzkzZGVlNDg1MDExNjA2MDM0YjlkNzlhMDQwYzBmMTAgcHkzaworODc4MjIgNTI2MGZkMTJjNzYzZGRkM2M5ZDMyM2Y1ZDMxMzQ5NTM0MTJiMzQ2OSBweTNrCis4NzgyMyAwYjBhMmI2YzNhZDk4MzU3N2I4NDI3MmRkNWI2YmM0NzhlOTlhNjhjIHB5M2sKKzg3ODI0IDA5MzNjMzc1M2E3MTJiOWY4YWYyZDIzZTQwYWUwZGRhMWY4YWMyNTQgcHkzaworODc4MjUgMTQyNzBmZTg0ZGM3NzFmOWRkZjg2NzVkZGE5YjAwODM2NGQ0MTBjYiBweTNrCis4NzgyNiAzZWEyODA5OTcwMDFkNDIzYWE0YThmMDRmZGQ4NmM5MGVhOTQ0YTg3IHB5M2sKKzg3ODI3IDM3NzgxNTk4NWNhZjBkMDNjM2UzNjhiOWI0OTAzYTRjM2NlMDlhZTkgcHkzaworODc4MjggNWY4ZWI5ZTdhY2RjMDY1YWUzYTAwNmUxNzkxZmVlYzc5MjY1ODNkNiBweTNrCis4NzgyOSAxMjA3NGYzYWI4MDk1ZjkxYTQ3MzY4YWJhZDcxZDFmNmZhZmM1YTEyIHB5M2sKKzg3ODMwIGRmOWEwNjE2MDA0ZDkyZTk3Zjg3MWE4YTk1ZGUzOTdkMGQ5MGY1OWEgcHkzaworODc4MzEgMTMzZGVlODJhMDA5NjE2ZTFjMGRjY2ZhNWRiYThmOTJiMTczMzg5MyBweTNrCis4NzgzMiAzZTc1Y2YzZjYzNTU1NjdkZGE4NmYwYTY2N2ZhNzc3MmFkNmU5OGZkIHB5M2sKKzg3ODMzIDY2NTg3ZTkwZmRmYjYyN2Y4OGFiMWFjN2EyOWYzMTA0ZGEyYThmZDQgcHkzaworODc4MzQgZjU5NTBkZjAzY2UyMTBjNTBjY2Q5NjUxZWE0YzA2NmNiYmQ5NDkzMiBweTNrCis4NzgzNSA2YTU3MTE5NjU1NzFhYjIwNmI1NDllZjRmMDA2MzY2OTBkNDYxNzE1IHB5M2sKKzg3ODM2IDU0ZmE2MjE2NTg1MzM1YjIzYWM1NGRjM2JlZmZhZGViNjViNDBlNDEgcmVsZWFzZTMxLW1haW50Cis4NzgzNyAwZGUxOTA1YTc2MWY4N2FkODIzNDVjNjZmNGFlMzJjY2IzNTdlZjg5IHJlbGVhc2UyNy1tYWludAorODc4MzggMDgwYTBlOTZiNDgyYjEzYzA4ODdjZTJlYjYyOWE3MDc3N2E0NGRiNiBweTNrCis4NzgzOSBiMGI3OWMzNzM0YWNkZmFmOWZmNDNlNzVmZTM5YTkwMGU2ZWQyODc5IHB5M2sKKzg3ODQwIGNhZDE4MTFkOWUxM2U5ZmU4MTVkMTQ3ODc4ZWVjMzA2MDQ3ZmFjMWUgcHkzaworODc4NDEgMzk3Yjk5ZjU5MTJlNzZiNmM1NzUxMWZmOTg3ZDUxOTM5YmY3MzNkZSByZWxlYXNlMzEtbWFpbnQKKzg3ODQyIDYzMWU4MzAwMTZjMGU3NGY1ZDkzNGFkMzVmMDdmYjRhN2NiOGI1MzUgcmVsZWFzZTI3LW1haW50Cis4Nzg0MyAzMTQ2NTk2OGFlMjYzNWM2NWY3MDdlZTgyNWZkMWQxNDJhZDIxNjRkIHB5M2sKKzg3ODQ0IGM2YjhjNWI1NjRhOGM0NDg2MjY3YjI4OWI1MzkyYjM1NDEyNWQ3MWQgcHkzaworODc4NDUgODc1N2NkNjU5MjkxOTRhNGI0YzgwYWMwY2YzZDA4Zjg2NjU4ZmJhZiBweTNrCis4Nzg0NiAyNTNkOTFlNGY2NzI5MTQ0MjU2ODk2ZjBjYzA2OTZjNTE1ZWMyNTQwIHB5M2sKKzg3ODQ3IDNiNzllYzgzY2UyMTY2NmY0YjUwNjVhNzc1Yzg5OTFkNGVhZjM5YzAgcHkzaworODc4NDggZTQ4MDYwNDc2N2M0ZDMxMzc4MjI3ODI2MDkyMDViZWM0NDE1N2RjYSBweTNrCis4Nzg0OSAxNTk2N2I3ZjA1OGYxYjc4MmE5ZDBiNjFmZmFiNGFiMjFlYjlhNDhhIHB5M2sKKzg3ODUwIDBlMWY0ZGY0NzhmNjY4YTc0ZGIxN2RkNWI3ZTU1YmY3NTUwY2NhNDQgcHkzaworODc4NTMgNjQ5MmE3MTM4ODdlOGQ5MzUwY2QwNjNlOGM0ZGNjMzkzMWY1YTAyNCBweTNrCis4Nzg1NiBkYzlhNTZkZGE0Mjg3Zjc3NjA4NjY0MzFkMmIyMWE2OTg0MjIyYWQ3IHB5M2sKKzg3ODU3IDkwY2JhNmE2NzJmMGU5YmQ3YzNiNmE1NGJmNWNiOTljNjYyOGY2ZjkgcmVsZWFzZTMxLW1haW50Cis4Nzg1OCBkNjU2NmE3MGNhYTBhODRiNGYyMTdhMmE3ZTdmMjA0NjM3NTY3ODk0IHB5M2sKKzg3ODU5IDgyMzllYzZmMzllNjI1NTEwODk3ZTkzN2U5ZGZlNTVkYzBmY2ZiYjMgcHkzaworODc4NjAgYzAzZjY0YzcxYjA1YWNlMGVjYmM1ZDJlNzY3ZmU2Y2IyOGY1MDljOCBweTNrCis4Nzg2MSAwOTMyM2M5MTEwOWQyZmNlMWU1NzA1NTM4NDA0NzY1ZWJlNTVlNGQ2IHB5M2sKKzg3ODYyIGM2ZDQ1MzQ1NjJmNDBhMTI3MmRjY2NlODExZDNhNjUyMmFiNjBlNzIgcHkzaworODc4NjMgZjEyZGE1M2I4ZDY4MzA1NjdlYjViZTc4MjljZGI5Y2ZkMTU0N2JjMiBweTNrCis4Nzg2NCBhYmUyMDFkZmQzZGNlMmZiNzExODg5ZWNkYWRkNmQ2NDNjZTNlZGE0IHJlbGVhc2UzMS1tYWludAorODc4NjUgMDc1OTc0YTkwYzMxYjBjN2VlMDVlMjZkODI2NTNkNTQ1ODI0MTA5YiBweTNrCis4Nzg2NiA0ZDE5MjcwOTFiMzlmNzlmYTA0YjA1MjMwYmIyOTAyYTlmYTlmZTIxIHJlbGVhc2UyNy1tYWludAorODc4NjcgZWEwYjk0ZDQ3NTRkNzU1YmVmYTQ4NzU2ZTgwYWMyMWNkMzZmYmUzZiBweTNrCis4Nzg2OCAyMDUxN2FhM2EzNTg5YWM2MDg5YThmODFhYjEwZDFlNzU5MmRiMmI5IHB5M2sKKzg3ODY5IDcyNjNiZDkwZTExMGQ0NjZhNDRkMmM4ZjEyYWE3NGQzYTA0MmM1NDMgcHkzaworODc4NzAgM2VkM2M3YzZiNjA1ZDc4MDcwZTBiYTE1MjkzZDQyNDdjM2U1NDE3NSBweTNrCis4Nzg3MSAxZjcxYzQzYWQ3ZTMzOGZmMzBlNWY3M2UwOTNhZmI4YmJlY2M1ZTkyIHB5M2sKKzg3ODcyIDYxNTc3OGJlOThlOTk1MjVlN2RmZTI3MTIwY2RlMGYyMTU4OTM5M2QgcmVsZWFzZTI3LW1haW50Cis4Nzg3MyA4YmJmZjFjMjRhMzEyYTBiZjczMzg0MzhlYjk2N2QzYmQ2MmEwYjI0IHB5M2sKKzg3ODc0IDk2NmI4N2YyMzk1Y2M5YzcyYjY5ZjNkYTk0YTE5Y2Y1OWIwN2ZlZTkgcmVsZWFzZTMxLW1haW50Cis4Nzg3NSBhZGM3ZTE2NzFkOGMzOTVhMmI4ODg1NjMwZTI0NGE4ZDhlNzFjM2ZmIHJlbGVhc2UyNy1tYWludAorODc4NzYgOWYxM2RjNDM5ZGM1MWM2OTU1ZDIyZmJhZTJlYWFjODQ1MjdkOGEyYSBweTNrCis4Nzg3NyAxOWMwNTA1MWJmMWEwMmQyMGY4ZDIxMGJlNjA1NTI3OWFkNDkwNjA4IHB5M2sKKzg3ODc4IDliMmU2MGFlNGZlZjk3ZGIzMGQ3MzcyZmExYzZlZjJlNWFhYTM2MmUgcmVsZWFzZTI3LW1haW50Cis4Nzg3OSA3ZWMyMTY1M2E0ZDFlNTcyZTY3ZTg1YzM0OTRmOTZkZWJkN2Y0OWRmIHJlbGVhc2UyNy1tYWludAorODc4ODAgOTUzMDFhNDI4NTJmNTQyNWU5YWUxMGQ5YTgxYmNhZjExOTQxMjhmMyByZWxlYXNlMjctbWFpbnQKKzg3ODgxIDJlNzQzNjliNGY0MDYwYWM2Nzc5YzYyOGYzZWMwZWMzYmNjYzhmMWEgcmVsZWFzZTMxLW1haW50Cis4Nzg4MiAwYzk0YzY4MWZjNTMyMGRjMjgwODgxMzIzNDg3ZDQ2YjlhMGM0MWI5IHJlbGVhc2UyNy1tYWludAorODc4ODMgZTRkMDdhNmY3YWJmYzE2NjE5ZmE1ODkzMTFjY2NjOWFiNWZlNmE4ZiByZWxlYXNlMjctbWFpbnQKKzg3ODg0IDVhYjk2MzY0ZTc2MTkwMGQ0NTMyYTcxZTc4ZDk0MmM0ZGY5MGJiYjYgcmVsZWFzZTMxLW1haW50Cis4Nzg4NSBkZTc2MmIwMWMzNjY0YjQ5NDdjYTM4MjM1ZWI5YjU2MWEyMDk5ZTNhIHJlbGVhc2UzMS1tYWludAorODc4ODYgNThhMWI3ZThlNzUzMjM2OWQwZmM1Zjk5ZWJjMTNmN2YxZDY2M2YzNCByZWxlYXNlMjctbWFpbnQKKzg3ODg3IDVmNzc5MDdiMDA0MWU3ZTEyYTkxNGZmOWJiZjU2ZjU0OTM3Y2IxMTMgcmVsZWFzZTMxLW1haW50Cis4Nzg4OCA0YWQ2MTk2ZjMwYTViMjIwOGFmYTc2OTJlODk3ZDMyZTRhYjU0MGE2IHJlbGVhc2UyNy1tYWludAorODc4ODkgZTFiODBlMzllNDBmMzBjMzI3NTBhMmIyOTE3NmYwNWY3YzU3ZmY1MiByZWxlYXNlMjctbWFpbnQKKzg3ODkwIGIzM2JmNjY0YzQ4YWE0OTVlOGViOTcyMzdiYjJiNzYyMGVkYjRhMzEgcHkzaworODc4OTEgMTU3MWNjMDcyZmMyYWUzMDhlNzk5OTM0NzZkMmJkYWY4NGFhMTc1NSBweTNrCis4Nzg5MiA2ODFkMDU0MmJiYmQwN2U2NDI4OWUzOWM3MDUzNzM5ZDA2ZjNiZDA4IHJlbGVhc2UyNy1tYWludAorODc4OTMgZmZiMmMyNGJjYjYyNmRkOGUxMmU4ZjMzNDlhMDlhMjk5MWM5MzQwNCByZWxlYXNlMzEtbWFpbnQKKzg3ODk0IDRiZDI5NmM0OTUyNmY2MzUwMzU2MWIyNGI3NzJjNjE0MGNiNTNjNTggcmVsZWFzZTI3LW1haW50Cis4Nzg5NSBhMjJkNjFiZTQ4NDJiNDBjNzQ1NDc5ZjA5ZGJhM2U5ZGM5ZTQyMGE4IHB5M2sKKzg3ODk2IGZlNmZjYWY3YmIxN2RhNGZmMDU5NTRjYWM2Yjk3ZjE1NzM1MjMzNTUgcHkzaworODc4OTcgZjhjNjgzMTg0YWZmZGI3ZmZmYmJjYjViZmU0MTkyZDU5M2M0OGY4OSBweTNrCis4Nzg5OCA5NzRiMjdjOWQ4NDlkZjRjOWQ1YTIzMTY2OThiZGZmZjQwNTg4ODhhIHB5M2sKKzg3ODk5IDFhMzdmNGJhMWY5MjAxODNmZTgyMTY3MmE0NzNmMTgzYTg3ZDNkZDcgcHkzaworODc5MDAgYzJjNGE5OTQ0NTk2ZjRjMTM2ZTA0ODdkZDNkM2VlM2NmODczZmI3MSBweTNrCis4NzkwMSBjNGE1MjUyNmU3N2ZhNjQyMTZkYjM0YmMwMzdjYjg3N2I5YjIzNDZmIHB5M2sKKzg3OTAyIGI1YTc5YjVjYTIwMzcyYTYwMTdiNGFhYmFmNWY3MTRmOTNjYWM1ZmEgcHkzaworODc5MDMgM2MxMmFiOWUyMTRlOWVjZDUxNDBlMjEyMjQzN2IyYjk4MjY3NTBiNCBweTNrCis4NzkwNCBlYTNhYzYyZWZlNjdjZDRjZGY3ZmEyNzVjOGIwZjQ3ZmYzNGI1YzM2IHB5M2sKKzg3OTA1IGEyYjE2MWYxNzUyNTJmZGU3ZDE0ZmJjZmVjZDFlOTdmMDA1MWY4M2UgcmVsZWFzZTMxLW1haW50Cis4NzkwNiA1NjdkOTYxYmUwODNjNTc0ZWE2MzRkOTE1YzBkMTkxZGJlYzhiMGU0IHB5M2sKKzg3OTA3IGVjNTg4OTA5NzVmMWQyZjBjYmZjOWFiZmViZjE2ZGJlYjIwY2JmNjggcHkzaworODc5MDggOTg1NWM4Y2NjYjM2YzBlMDRhZDE5NTRkMjBlNzdlYTQ4YzdjMDZmYSBweTNrCis4NzkwOSBkYjdhMzJkOTBjZjRhMmQ5MzU4YjcwY2YzNGU5ZDZjZDRmZTMzYzg0IHJlbGVhc2UyNy1tYWludAorODc5MTAgM2U2ZGU4ODUxZjIzMTAxNjVmNzlkMWViMzQwYmQwNWQ2MjExZDk3ZiBweTNrCis4NzkxMSAxNDUwNTIxYjlkOTNmNGFjMGU1ZWFhNjJkZjExY2ZkOGEzMTA3YTEwIHB5M2sKKzg3OTEyIGUwYTY2YWEzNDI3YTY5NjliM2NhODMxMWQwYmI4Mzc1ZGQ0ZWEyNDYgcHkzaworODc5MTMgZTQ3ZDhkOTU1YmQ2MTA4M2RmMTljMzFkYmIzNmIyMDY5Mzg0ODBjMyByZWxlYXNlMzEtbWFpbnQKKzg3OTE0IGFlOTk0YmQ0NjYxNzhjOTJlODkzZmQ0NDM1ZmQwYWMzYWQ2OGZlOWIgcHkzaworODc5MTUgNjVhZGQ3YTQwZjcwMjJmMjljNDkwNWIzNjAxZDEyODI5ZjJiNmI0NyBweTNrCis4NzkxNiBlZGYzMDFhZjI2MTYxM2FkZDBiNzM5ZDM5NWM3MWI2NTVhZjg2OTE3IHB5M2sKKzg3OTE3IGFjNmNjMTQwNGUxNTA1NzQ0MGVjZWE4MDZjN2ZhMDA3Zjk3ZTU4MDAgcHkzaworODc5MTggMWM2NWFiNDRkMzY3MWIzZDQ4ZmNhNDFiNjI3YTE1NDVlMTcwYmExNCByZWxlYXNlMjctbWFpbnQKKzg3OTE5IGQ3MDUyMmNjOWQ0ZmU3YTY0MmUxZDU3M2YxOTdiZDcwYzAxYzE0YzMgcHkzaworODc5MjAgYWQwZWI1N2ViMmI1Yjg3NmQ5N2EwNzM1MWU1OWQyYThiZjExMTljZCBweTNrCis4NzkyMSBjMGYzYWMxOTM5MmI2MTkzNDM4ZjhmZWZjYzQxNWJlMDU4YzEwNjI3IHB5M2sKKzg3OTIyIGIxNmIwZDc1NGZjOTNhNTdlYWM2ZDkxMDE2ZjBlOGZlYjg2Y2QxMjYgcHkzaworODc5MjQgZDU3Mzk3MTMxMTI0MmFlODgyYmMwYWI5ZTA1OTU2MDg0NjdlMmIzZCBweTNrCis4NzkyNSBkYjhkMTU5MzMxMjFjMjdmYjYwZWY3ZDlmYTRiNDFjMjgyZTlmMjA5IHB5M2sKKzg3OTI2IDc4ZmYwOGNjZDE4YjdmZGJhOWQxZmM5MWViNDQ0ZTI1MDdkZjAzZjQgcHkzaworODc5MjcgNzUxMzcyYjc5ZWQ2OTI1YTc3MTRjNDU1ZDJmNjdiMzViZDIzMWI3NyByZWxlYXNlMzEtbWFpbnQKKzg3OTI4IDIwOTY5ODIxYmI2MTRhM2FiOTc2MjUyZGUzMDc5MjgyNzI5OGQyOTUgcmVsZWFzZTI3LW1haW50Cis4NzkyOSA3YjUxNTk0YTE1ZGVkMTU4ZDRiYjI3NDM4NWVlYmMyYzlmMzZlODZlIHB5M2stY2RlY2ltYWwKKzg3OTMwIGVkNmQwNTNlZWJhNWViNjcyZTg4OWRjODg5NTNhMzZjODEwYTI0ODUgcHkzay1jZGVjaW1hbAorODc5MzEgOWZhMDdlN2NkZjM4NjJhZjUwN2YzMzk1ZmVlYjVhMzAyMjRjMWIwZSBweTNrLWNkZWNpbWFsCis4NzkzMiA0YjQ2OWM4N2Q3ZTJlYTgxMzM1MjI0MzlmZTExYjkyNDc4YzM4NDcyIHB5M2stY2RlY2ltYWwKKzg3OTMzIDgzMDk1MmE3MWQyMTc3ZDgxYTRhZGVmYTMzYjY2Yzc5ZmI0NTk0MWQgcHkzay1jZGVjaW1hbAorODc5MzQgMDQ4YWQwNzE3YTQ1MjI5YWYzMGI3OGJjOTdkYTRhMDg0Yjk3MzNhZCByZWxlYXNlMzEtbWFpbnQKKzg3OTM1IGY4MjdmNzAzZWY2NWMwZTQwM2MyZWE4Y2Q1ODlkMjJkN2QzNmFlMmUgcmVsZWFzZTI3LW1haW50Cis4NzkzNiBhM2MzNzk1OGEyMDk0OGRjNThhMWQyMGUzNzk0NzFlZjU0YzM0NGI1IHB5M2stY2RlY2ltYWwKKzg3OTM3IDcwN2Y4OTI3ZDY2MzA2MGI3YzJlYzdkNmExMmUyMmNmYTI5MjE2N2YgcHkzay1jZGVjaW1hbAorODc5MzggMjI0NGFjNmMyYTliZmJmZDNmYzZkMzE4ZTQzMDZlNTMxNmZhNWQ4YyBweTNrCis4NzkzOSA1NGM4NjQ0NDUzZjkxMzRkYzFiODVkZWM1ZjJhNzBlMWQzOTU0ZjA4IHB5M2sKKzg3OTQwIGMwYjk1Y2RhZjQ2MGEyYTgyMzNmYWFmZjkwNzg2NDBmMjhlMjhmZmYgcHkzaworODc5NDEgY2I3NTRhNTgyYjM0MGM1OTAxOWM0ZDQzMDQzMDc4MmU3ZWFlN2VlYiBweTNrCis4Nzk0MiAyNTgxYTE3YjI5YWYwMzMxOTIyNWIwM2I4N2IwMDQzYjFkZWJlMDRiIHB5M2sKKzg3OTQzIGRmMzRiYjA4NjliYzg1MmQ0YjRmZDA3Y2UyNjdiMWNhNzcwNDQ1MzEgcHkzaworODc5NDQgZWM5NmI1YjU3MjNiY2Y0MzI2NzUwMTI0NWM0N2M5OGJlOWNmNzQxOSByZWxlYXNlMjctbWFpbnQKKzg3OTQ1IDFiMWE2NDI5NzE0OTdhZDBjZTU4MGQ2NzFhZjgzMTc3ZmM2MjlmY2EgcmVsZWFzZTI3LW1haW50Cis4Nzk0NiA3ZjBkMGM5YTJkNzI5Mzk5YzJmMjhjYzM5MDI4Y2M1MjkwZmNhZDY2IHB5M2sKKzg3OTQ3IDI2OWNmNDZjMDlhZjViODMzN2I5MDIxN2IyMjY5MDI0NjRhYjI5YjQgcHkzaworODc5NDggZmVmNTIxZjQ1YWYzYTkwYTY4YjY3NDA5NzE1MzNkNTFhNzgzN2RkMSBweTNrCis4Nzk0OSA0OWIwYjJiYzBlODMzMWJkZjllNDIwYmRhZjMyZjgxYmRmMWI2ZDhmIHB5M2sKKzg3OTUwIDQzNTA3MjFkZWU1NTNmM2NjNjE1ZmZiNDY0M2U3MmQyMTFjMjBhZTUgcmVsZWFzZTI3LW1haW50Cis4Nzk1MSA2MDA5Mzg4Y2E1YTIzZmZjYWI3NjIxNWJmM2Y5YmExYzk4YTIxYzExIHJlbGVhc2UzMS1tYWludAorODc5NTIgNzRiZjkzYmU1NjcxMDJkMTE4ZjQzNDI4MzM0ZmNhOTVlMzE0N2EyZSBweTNrCis4Nzk1MyA2MDFiY2I2ZmY3NTJkNzVjNzAyZjFiY2ViMjQ4MGQxNzAzYjZhN2YxIHB5M2sKKzg3OTU0IDIzNmUxMWJhMThjNTczOTZkNTcyZTRiODJlNGE1NzFlZjhmOTM2ZjMgcHkzaworODc5NTUgMmVhMWNmZGY5MjliZWUwOTM4NmU1NjNjMGMyNDExNDA0MDcwNTZmMCByZWxlYXNlMzEtbWFpbnQKKzg3OTU2IGRkYWExN2MwOThkOTNkZWRjNjdjYjc2YWY2MDdmODIzNTU5NDFhZTMgcmVsZWFzZTI3LW1haW50Cis4Nzk1NyA5MTQ0NjgxN2NjM2U4ZTczZmNlNDBhNzkzZDc1MGRjMjYwZTUwOGZiIHB5M2sKKzg3OTU4IGE1MDIxNDk2NmQyNDgyZWE2ZWVhZTI3ZjZlY2IyYTA3NGIxNmMwZjcgcHkzaworODc5NTkgNzdmZTNmMTYwODdhZjlmMWM3MzVlNjFhOGFlZDEwMTRkZTZkZWEzZiByZWxlYXNlMzEtbWFpbnQKKzg3OTYwIGFlY2NiZDE2OTcwZjhmNjVhMjJmNmE1N2VmMDk4ZWUzMGU4ZDk0MmMgcHkzaworODc5NjEgZTE1MjYwYTQ0ZTQ0NzhmYTQ2ZGY3MGMyZWM3OTIwYjAzZGFhM2FmZiByZWxlYXNlMjctbWFpbnQKKzg3OTYyIDUwNDhiMjcyMDBkNzRhMTA3NWNmZTVjYmUzZTA3NWU1MmVlZWFlYTAgcmVsZWFzZTI3LW1haW50Cis4Nzk2MyA2Y2M1Mjc3ZjVlN2FhMzMzNTIxZWM3NDU2ZmUxNWIzZTZhZWY3YWYwIHJlbGVhc2UzMS1tYWludAorODc5NjQgYWMwZWI1ZGYyYzA1YmVjMThlM2E5NzdjMmM5YzIwOGE1OGFjNmQwOSByZWxlYXNlMjctbWFpbnQKKzg3OTY1IGQxMjAyMThkODBhYjQzYjRjN2VlOTJhMjViYWFmM2ZlYmQzZjIxZDcgcmVsZWFzZTMxLW1haW50Cis4Nzk2NiAzZWVhZWNmMDA1YzE0ZDM4YzRmN2QyMDVhMzU5ZGIxZWY2OWM0MzJjIHB5M2sKKzg3OTY3IDZkY2Q0OTE1MDZlZDUwNTMzMTg4NDcyYTU5NTliM2Q4MmI3ZTE0MmMgcmVsZWFzZTMxLW1haW50Cis4Nzk2OCBiOWI1NTFlZDA4NThkMmI3ZGIxNDMzYjAzMWU4MTVkNDQyMTI3MDI4IHB5M2sKKzg3OTY5IDQ1YTM5MWNkYzY4YWMyOGRjZDNkNGFiZjhhMmEwZjIzNjlmYTNmMWEgcHkzaworODc5NzAgNGFiZmI3NjcwZWFkZGE5MDdiZDYxZTIyZTE1MjE5NzAyMzM2MjFmOCByZWxlYXNlMzEtbWFpbnQKKzg3OTcxIDQxYmRjMDMyZTcxYWNkN2Y0NDU1NTRhNTExZWFhOWY1Y2IwNjYwNmYgcHkzaworODc5NzIgZTFjYzM1NzI4NDgxZWVkZDRiNzUzZTYwYWI3MWFmMDJlNzM5MDllOSBweTNrCis4Nzk3MyA0ZTg2ZDY5NWJhOThhNTgyMjlkZTQ4MmUzNTJkMGI2ODNmOTZlMWEyIHB5M2sKKzg3OTc0IGM2NjlhNjk3NmJmOGNmMmI3YTc0NzM2MTA1ZTU1MmViNGFiMDI1ZWYgcHkzaworODc5NzUgY2NiZDY1ODdmOGVkNWM4NzIyZDA0NzIyNWJhM2MwMWUxNjcwYmRiZiBweTNrCis4Nzk3OCBmOTE2YzJhYTIzOGZlOGEyMGNlNjU4YTJiOWZhYTA4NWFkMDM0NjljIHB5M2sKKzg3OTc5IGVmZGYyNTYxN2I3Y2Q0MjdlYTQ3Yjg5NGJlYzNiOGFjMmFlOWU1NDkgcmVsZWFzZTMxLW1haW50Cis4Nzk4MCBlMTI1ZDkyZjc0MzhlMTJmZmY4ZjNjZDNkYzY1OThjNzNjMTgwNTAxIHB5M2sKKzg3OTgxIDg3MTlkZDcxMjM4NGRiNTk2OWE1MjkzZWQyYTRkYzE5NzNlNDNmY2MgcHkzaworODc5ODIgMTBkNjdkYjY3OTQyMGY0ZTc1Mzc5NWNiNDI2MTk1YTQ2ZGVkMGZiYyBweTNrCis4Nzk4MyBjYmRjOGIxZTZiZDM5Y2ExYzVhOWI0YzBjNzk2OTE2M2MwM2JiN2VmIHB5M2sKKzg3OTg0IDRlYWUzM2YzNzk3YzVkMWNkMjJlNjlkNDk4NDFmZWI3Y2ZlODc3MzkgcHkzaworODc5ODUgMjVkNTNlNDQ5N2Q4NTI3ZDg5ZTI2MDBiN2Q4NWQ3OWYwZDlhMTNlZSByZWxlYXNlMjctbWFpbnQKKzg3OTg2IDJmMDg5NGMwMmJmMmI4OGNhMDIyZjE5YTNlOTJkY2U4ZWY4MmI4MDcgcHkzaworODc5ODggN2NiYjVmM2I2OTU0YjlhYzJmMjViMjk4YTUxYTZiMDA0YjY0ZmE1ZiBweTNrCis4Nzk4OSA3ZDY1OGI0OWIzZTE0ZTliMTYzZWMyYjNiYzE2ZDk0OTFkMTQ1MDEwIHB5M2sKKzg3OTkwIDNhYzliN2NmNzYxNGNkZTAyZjVhZGEwNTM0NWIzMDNiODU2YWI3NzAgcHkzaworODc5OTEgNjA4ZjNhNjE1OGE4YzgxMzM3ODkwNzUzMjE2MWViMTU1NTgxOWE4YiBweTNrCis4Nzk5MiA0NzRiMmNlMDc5NGZmYWZmY2FlNGUzNmRjNTFmZDk1MWY0NTVhMWI3IHJlbGVhc2UyNy1tYWludAorODc5OTMgMDM1M2IxNjEzYWE4MTRiYzZjOTNlMjQ0OWUyMjM0OWJlMTI4OGE0MCBweTNrCis4Nzk5NCBmMTk4MjRhYWIzOWM4MGJkNDZjZWNjZjk4OWJhMTYwM2NmYThjNjFkIHJlbGVhc2UzMS1tYWludAorODc5OTUgMjQ0YTI3NDc3Mzk2ZDRhMjk4MDRhNGJmYmFhZTEwNjhjMzcyZjliMSByZWxlYXNlMzEtbWFpbnQKKzg3OTk2IGY2ZTlhYzRiODgxMzZiMzhkOTQ3YzFlNjAxNWZmYTI5MWFmMTZhZWEgcHkzaworODc5OTcgN2Y4ODg4YjRmZGZjYWZlOWEzZDAwZTgyMjE5YTY1YzllMWZlNzM3YyBweTNrCis4Nzk5OCBkODY0MzI4YTc0ZTQxNDJhYTI4NmY4MjJjNGI4MjdkMWI3MGNkOTMwIHB5M2sKKzg3OTk5IDk2ZmZlNGEzMTFkZDRkNWYwNTQ4YzNiZDA1ZDRlMzNiZWU0Y2YzNmUgcHkzaworODgwMDAgMzU5M2IwZDljYWE3NGM5MDQ4YjA5ZDg0ZTAxOWQ0MTc1ZjAwYzAyNiBweTNrCis4ODAwMSBmZWJlMDRhNmQ0ODY0ZGQ4OGE4ODJmMTdmMzNmMDEwMmI0N2Y5NjIzIHB5M2sKKzg4MDAyIDQ0MzBlNGQ2MzU5NDdhMmExNGJkNThiMzY0NDQyMjU4ODFhNWIyMTggcmVsZWFzZTMxLW1haW50Cis4ODAwMyAxOGFiOGUwZTY3MDI1YmMzMzliYjQyZGRiZjNiZTA0ODkzMjIyOWE2IHB5M2sKKzg4MDA0IDJhZmNkZjY4YTM4OTFmNzk1MmJhMWM4ZTMzMzM0ZDM3OWI2NDUwMWUgcHkzaworODgwMDUgYjA0ZGE1NDRlMTNiYmY1NDNkN2ZjZGYyZmNiNDQwMDU2ZDY4MzYxOSBweTNrCis4ODAwNiA0ODQ1NDc2NWQ4ZTBjZTY1NTBhMDRjNGQ1M2FiMzdhMjhhOTdjODY4IHB5M2sKKzg4MDA3IDkxMWQwYTc0NjA5ZTIxODAyMGQzZGZlMmVkMGExODRjMDUwYzU1MDggcHkzaworODgwMDggN2IyZDdjZWRhZmIwYTExNjJmMGQyNWJmYzhmYjYwY2RmNTcwYzNlNSBweTNrCis4ODAwOSAwYjRjOTk1Mjk5ZGRjZWRkMTUyN2EyY2VjZTJiOTA3YTI2ZWZiMTI2IHB5M2sKKzg4MDEwIDRkYzU1MDM3MzFmZWExNzY3Y2Q2Y2FlOGVkOWE4YzBmM2FlMzlkZTQgcmVsZWFzZTMxLW1haW50Cis4ODAxMSAyOTMwMzkzZjBiYmI5MWRhNWM0ZTYwNDU1YTVlNmRhZTQxYjgzYWExIHB5M2sKKzg4MDEyIGFlMDk5NDU4MzM0NTFiYjhjYjVjNzMxOWVmMWFlNzlmOTJmMmU5OTggcHkzaworODgwMTMgYzBjNTk0YWVmODQyMzVlNzAwYTJmMzJhYzZmNDkyOWRiYmJjNDNhMSBweTNrCis4ODAxNCAzOTY5YTZjYTE2YWYyOTE3NmM0ODY1MjgzYjg2ZjJlMDhkZTVkMjlkIHB5M2sKKzg4MDE1IDNmOTljMzZkMDBiOGFkNWYyN2M1NjllYzAxODY3MmMxNjI3NTcxNWYgcHkzaworODgwMTYgOTNiN2MwNTgwYzQzNDY5YmZiYTE3Y2Y1MTE4ODQ1ZDhjMTRhMzQyZSBweTNrCis4ODAxNyBmMTMwYmUwMWQyMzAwZDk5NDMyZjNiYWVjY2VmMWY0YmFmNzkxMjMwIHB5M2sKKzg4MDE4IGJlZWFiMGZhNDFlNWVhZmY2OTZhYWU1OWYyMzJjNmI0N2UwMDM3MmMgcHkzaworODgwMTkgYjAzNzQ3YWRhNDRkNmE4MDI1MTM2MTJhMmE0OTkwN2UyYjczNzYxNCByZWxlYXNlMzEtbWFpbnQKKzg4MDIwIGVmMDc3N2FmOTk3OGVlMmIyN2Y0NGI5ODlmNmFjZmVmNmY0YzA1YjIgcmVsZWFzZTI3LW1haW50Cis4ODAyMSBiOGY5N2Q4Y2Q0ODVmMjdhZDM1YzMzZGJkYTg0YWQwNGYyMGViMDIyIHB5M2sKKzg4MDIyIDNjMzE2MjM2ZWFiZDJhZWQ3N2RiNTlkZDA2Zjk3NDhkZTkyMTY0YTQgcHkzaworODgwMjMgNDFkODc0ZWNiZDgxZmI0NjYxN2Y3OGRiMDE1YTU0ZTBmZmU4NzlhZSByZWxlYXNlMzEtbWFpbnQKKzg4MDI0IDdhY2I4MzlmMzYxMzJlYjQ4YWM2ZTgwZjA2NWFlMzdjYTk3YmI3ZWIgcmVsZWFzZTI3LW1haW50Cis4ODAyNiA4ZGRjYWUyYjY0YjQ3MWZkM2VlYTcwMjQ5YzIyYWY3MzQyZDIyZTFhIHB5M2sKKzg4MDI4IDRhMjBlM2NhMjVlOWFkNzgxNDM0Y2Y4MWY1YWMzNGY0NjA4NThkZjMgcHkzaworODgwMzIgOTA3NmU0MjIwZmE0ZjBkMzcwZTcwNzRlZTIwMjdiYmUwMWRlZjk1OSBweTNrCis4ODAzMyBlODRkNWVmYTZkNzU0YjEzZTQ2N2RjOWI4NDA4Njg4NWYzYzJhZTg1IHB5M2sKKzg4MDM1IGFiOWRjNDI1NDdjMDk4ZTM0Nzg2NGY2YTIwNWI0YTU5NjZkYmRlMTEgcHkzaworODgwMzYgODY1ZDViMjRiZjI4Y2E0MWI1MzZiZWZjMzI2NDA3YzAzZTc0YTRkNSBweTNrCis4ODAzNyBmZTEwMjNhZjZiNTk2OWQ0YzUxNGM0MmU5MWVjZmNlZmMxMmJlNmFhIHJlbGVhc2UzMS1tYWludAorODgwMzggYWRhNzAyYzA0ZDE0YzM3NGJlZjYxZjYyZjFkYmJkNTY0MTBkYzY4YSByZWxlYXNlMjctbWFpbnQKKzg4MDM5IDQyZWZjMTFhYjc4MmQwZDFkMDJjNThmODdjNjJkMTU5YzdiZTk5OWEgcHkzaworODgwNDAgODU2NWU3MjNiNGEwZWEzZGFhMTRiNTM1ZWEyNDVhZTc0MWNjZmNkZiBweTNrCis4ODA0MSBmYzFkMTU5MTc4OTU1ZmMyMTk2YjFkODI5NDhhYjhkYjE0OTRkM2NjIHB5M2sKKzg4MDQyIGIxMTA0YjQyNTEzNGM2ZTlkZDE2MzhiYTRiZGM0NmNjNjhjMDY1MWEgcHkzaworODgwNDMgOWYyODJjZmE4OWEyMTg2YTVlOTZiM2YzNWU1MzM3OTc1NzhmMWY2MCBweTNrCis4ODA0NCBiN2E5N2YxMWI0MWIzNzZkOTQxYWI0NGQzM2IxYmY0OGE0Y2EwMmY1IHB5M2sKKzg4MDQ2IGM5MWRlMzI2ODM1ZTk3OGZkOTVmZTllNTYwYmQwNTY5NTM1MzY1YmUgcmVsZWFzZTI3LW1haW50Cis4ODA0NyAxZjZlMDQ1ZThhNjliYWI1YzU1Y2Y2ZTJlOGJkYmY2NmI3N2EwMzJiIHB5M2sKKzg4MDQ4IGQ2NzA0ODJhNTgyMTE3NWY5Y2Y5MTE3MjNkZDA1NDM1YjFkMjEzNDggcHkzaworODgwNDkgNDVkYTgzMzI3NjM1ZmRiY2Q1YzQ4NDUzYTEyOGJjYjE1MWFkZjBlMyBweTNrCis4ODA1MCAyY2Y2N2M2YWE2ZWU2OGYwYWJlODA3YTY1M2QyMWRlYWQwZWYxZDFmIHB5M2sKKzg4MDUxIDM4NDczN2E3NDA4MGUzZTE3NGI1ZTg1YzhmYjY1MGQ1NjU3YTc2MjUgcHkzaworODgwNTIgNDcyNGI5NGM1NzQ1NjhiNjIzOGJkNzUwNTMxYTEyOThiZDY4YjRkOCBweTNrCis4ODA1MyAzNjhlOTEwMzE4ODAyMDBiMDg0ZjNmNjE2ZDhmMWUyY2JkZmZjNjJiIHB5M2sKKzg4MDU0IGFlZWZhMjIxYmJlNjUyODA1ZjBmNTJmODQ2MTQzZmFhMzkxOTUwM2IgcHkzaworODgwNTUgNjkxYmMyYzJmYzIyZDU1ZWNkZDU1ZjJhMDRhYzZiZWI2YWRiZTY3ZCBweTNrCis4ODA1NiA1MjVhZWFhM2Q1M2YyOWZlNTBhNDk2NWQ3ODcyZjE3ZmQyYzY3YWZlIHB5M2sKKzg4MDU3IGZhZWMxYjVhOTZkYjc0NGQ3NmI5OWIxZTEyYzg1NmQwYTc2ZjgwNWYgcHkzaworODgwNTggMzY5MTA4NTFhNzE1Y2ZiNWY1NTRlZTMyMjQ2MGQ3MTNmYTRhZjcwMCBweTNrCis4ODA2MiA3YjMxYmViODhjZGIyZjE5NjgzMDRlMDI4Y2Q0ODljMGNkZmFlY2MzIHJlbGVhc2UzMS1tYWludAorODgwNjMgMzY3NGRjYjQxYTk0ZjMwYzA3MGU5ZWZjZGFhYjk1OTg5ZGZkNzAwYyBweTNrCis4ODA2NCBkZDg3YjBlZmNkZDgzNGEyZTViYzQ1OTEwNDFhZjYyNDc1MTYxY2FkIHJlbGVhc2UyNy1tYWludAorODgwNjUgYzU5Y2VhMjE4NTQ3NjczNWQwYjdkZWM3MzVhOTliODFmNTk1ZjBmYyByZWxlYXNlMzEtbWFpbnQKKzg4MDY2IGRmOGI2YTJiZGRkZDcyZjhkNDBhODI2NDMwMTExYTlhNmVhYWFkZDMgcHkzaworODgwNjcgODExYjRmYjhmMGNjNjkyMDFhNGIxNzlkMGNmMjcxYjhiMGFjNWQ0MyByZWxlYXNlMzEtbWFpbnQKKzg4MDY4IDFmNmQxNDE4Y2MxODMxNjdiYmRhZjZiYzBiNmEwYzVmZTgwYjliNzYgcmVsZWFzZTI3LW1haW50Cis4ODA2OSBhNzhjNmQwYzNmNjljZDlmNzYzYjIxN2EwYzMzMzM0ZWQxNDdjYzMwIHB5M2sKKzg4MDcwIDZlOGUwZmUxODIwNWYwMGEyNTI2OWUxYjg3MjgyZDllMzcyNjdkZmQgcmVsZWFzZTI3LW1haW50Cis4ODA3MSBiOTQ4ZGJkMWZhYzFiNGI3YzZiNDExYzFhZmM2MTFhNWM2OGEyOGNkIHJlbGVhc2UzMS1tYWludAorODgwNzIgY2FjYzM1YTFlMGMzZDE1OWRlODMxNDk0OWM2ZDQ3ZjRmZjdiODBiMCBweTNrCis4ODA3MyBkMzVhMjRhOTQ3MTc4ZDQ5M2U0MzdjYWFkMmNhMDYxNTA1N2UxMmI1IHB5M2sKKzg4MDc0IDRkMjc1YzU4MjE0YjMxMzI5MWQyOWRhM2E4YjUyY2M0NDFmZmU3ZGEgcHkzaworODgwNzUgZWRlMjYwYTUzZmI1MGE4N2E5ZmY0ZTJjYjI3M2FkOGJkOTA1NTU0NiBweTNrCis4ODA3NiAyOTVmZjU1YTI2NWU3Yjg3MTRmYjEwNTBkMzc2OTNjZjk4MTRlNTZmIHB5M2sKKzg4MDc3IDlhMDBkZTI1MGUxZTQ5ODJjMmNkMjEyMDAyMTZjOTMyYWMyZTg1Y2UgcHkzaworODgwNzggODk2MjhmM2VjZGNiYjdiOWFmZDEzNDBkNWU3N2VmMDAzMTlmOWM0NCBweTNrCis4ODA3OSA0MTUxNzNmODdmNDVkODIxZGMxMzI5OTkwYzRlMjg1YTY1MjE4NmYyIHB5M2sKKzg4MDgwIDZlNjgyNjUzODk3NDNiMTNlYmQ1YWEzYjNhOWIwOTNjMzg0YzdkNzQgcHkzaworODgwODEgZmQ4ZTgwZmMyZDk0MzY0ZWQ0ZTk0MjYyN2Q0MjUzZGY5ODAyZjY2NSByZWxlYXNlMzEtbWFpbnQKKzg4MDgyIDYxMDE2Mjk4MTBlMDBkZDI1MTYzNzNkY2NlYWIwODg3NzMzZWE5YWQgcmVsZWFzZTI3LW1haW50Cis4ODA4MyA5OWVhYjVlZGY5OWRlYzcyZmM3ZDAzOTc2MDI3ZGM1ODNiMmQ2MjRhIHB5M2sKKzg4MDg0IDU3YmQwZDg2NGNiMDM3YTE0N2NjMWUxMGZkNDc3NGUwZTc0YmU0ZDkgcHkzaworODgwODUgZjVhM2I2Mzk3YTUzOGQ4MTAyMjljMzZjNGY5MTQ0MDkyY2RiZjAwYSBweTNrCis4ODA4OCBlZDhmMDU4ZGM2NGIwNzVjZjU2ZTI3OTY4MzAyMTZmNTRkYWEyNTNiIHJlbGVhc2UzMS1tYWludAorODgwODkgNTJlODAyOTE0Y2Y4OTYyMGM4ZWE3ODY2NjIyMzJjNGQ0NGRkMWFjMyByZWxlYXNlMjctbWFpbnQKKzg4MDkwIDJkNDJmNjRiMjhmZGVmMjFjYjhhNTk5MzEwYzY0NTljNGE0ZTJmYmYgcmVsZWFzZTI3LW1haW50Cis4ODA5MSAzNGQ0ODg0OGQ0MWJjODExYjM2MjJmY2NhZmQyZDFmN2JmYzdjYmI3IHJlbGVhc2UzMS1tYWludAorODgwOTIgZjQ0MWM2ZTNhNzY5MTI5YzExODA0YzdlZTgzNDdlZmEyNTc1NTIzMCBweTNrCis4ODA5MyA0ZTBiY2VjODA5ZGQ4MDk0Yjk5ZjFmNTE3MjdkMDBkNDI3NmE2ZWEwIHB5M2sKKzg4MDk0IDc2MWU5YWQxNjVlZjFmYzE5YmQzZjVlYzNmZDRlMjg4MGIxZTNmN2QgcHkzaworODgwOTcgZmM1ZDAyYWU1MmRkNmJkODI3NTIwM2Q1NzJmZjU0ODUwNmY3NTM5NSBweTNrCis4ODA5OCAyZmRlNWFiZmI1ZjFiN2ZiYTBmMTc5ZGMzMmQzODQzMjI1NjZjYzBhIHJlbGVhc2UzMS1tYWludAorODgwOTkgZWFjNTQ1N2ZmMTk1YjA4ZWY3NTQ0MDk5YjMxYzU0YzNiMjMzZWQ2ZiByZWxlYXNlMjctbWFpbnQKKzg4MTAwIDQ5NmVhNTAyOGMwMWFjNWQ3MjgyMTc1MzQxMWZkNzA0MzViYzNiNjkgcHkzaworODgxMDEgMzgyNGJlZjM3NmNjN2ZlYWNmMzA4ODA5ZDQyZDc4ODQxODJiNzFhNyBweTNrCis4ODEwMiAxMDlhZjAzOWY0NGYwZDU5NjYyNzJhYTU2ZDMxYTEwNjFjZDNiODc0IHB5M2sKKzg4MTAzIGNjODk3NTcyNGY5YThiZjQ4YTViM2VlNDIyYTA2OTQyOTVkNDA3MTYgcHkzaworODgxMDQgZDcwNThmNzRiZDA0YjRmYTZmZDVhOGY2ZDdjYzNkOWU0NzdmNjM3OSBweTNrCis4ODEwNSA0MWM1MWY1Y2Y1ZDk5NDgwMDYyZDUwMDcwMjE3ODAwYmUwODE2OGJiIHB5M2sKKzg4MTA2IGE3YWE4MzczYjVmY2I1MjA0YTcxZjg5NmI4ZDFhMTEyYjA1MTA5ZWYgcHkzaworODgxMDcgM2MxYzhkNDI2OTY2MzAxYWJlZWUzODcxN2Y5MmQxNWQ3ZjhlNTJkZSBweTNrCis4ODEwOCA5OTE0NzBiZTAzNDBiZTBjNmJhZGQ2ZjAyZmMwMjI0ZTljNmIyYTUyIHB5M2sKKzg4MTA5IGRlOTI1MzYxZWJhNTExNjc2OWRjZTM1ZTE2ZjJhZjk0ZGJlMGJhYzQgcHkzaworODgxMTEgOTFhYmU4NTUwNzJhMzY2ZDJkODgxOGMwNTAyODc3MzM2ZDZkZDNjMyBweTNrCis4ODExMiAwN2UxZWIyNDRkZjg4YjM2ODAwZjJiYTY4N2EyODIyZTY3M2M2NDgyIHJlbGVhc2UzMS1tYWludAorODgxMTMgMDJlYzE5OTdkNzVlODdjYzViOThmMzhiMTRkYTY4NzdlMzMyMGY5ZCByZWxlYXNlMjctbWFpbnQKKzg4MTE0IGMzNTQwMGMzNjMwNGU4OTdhODQwZTQ4YjIyOWYzNWM3M2FmYzVhMzggcHkzaworODgxMTUgYTkyNWVhNGUxMDVmODE0ZmZhZmM5ZmQ5ZjMxNGI5MWZiZjM3NGRlMyBweTNrCis4ODExNiBiODgwYzgyMjdjMDI3MmMyZDIxOWMxYjc2OWZhNDAzMTFhYTgxZTIwIHJlbGVhc2UyNy1tYWludAorODgxMTcgMjMzY2M3NDAyNzRiNzEyNmI0N2ZhZTc4OTViNDRhMDI0ZjU0YjNhZSBweTNrCis4ODExOCBlNGU0YmZjMDllMThkYjNjZmNjNDlhNWIwYjI5NmViOTA0YzdmMGViIHB5M2sKKzg4MTE5IDZiOGI2ZTVhZWMwYTVmNDQ4ZDY4NTFhNGJjZDkzZDEwOTI1ZDQ0ODIgcHkzaworODgxMjAgN2Y3YzJhYWI4NjFjMTFhODQwZjQ0YmE0MWYzNjhkZmYwMjk0OGE1ZiBweTNrCis4ODEyMSBkYTQ0YmIwY2Q0ZTk5MmQ4NzY4MTlmZjc3YTJlMWQyM2Q0ZjBjNjI1IHB5M2sKKzg4MTIyIGZiZWJmMGYwNjA1Nzk4MDliM2ZiMjNlMTFmODZiNzYxN2JkOTFlZTcgcHkzaworODgxMjUgM2IzYzUzNjMwNjM3YTVhM2I3NDhkYWEyMWE5YmJlOWY1MGIyZTJhZCBweTNrCis4ODEyNiBhZWY0ODI0MjBlOTZjY2JhMzhmZTgwNzI5ZGI0ZThmYjhhNmEzOTE2IHB5M2sKKzg4MTI3IGNlNDA3NTRhODQyYTNkYjUxYzFjNjI0ODUwMTcyODRlMTI1M2Q0N2QgcHkzaworODgxMjggM2QzM2Y0MWU4MThkYmYxY2U2YWM4ZDAxZjBhYjZjOWZiODVhMjdiMiBweTNrCis4ODEyOSA5M2U5OGQ0MGYyYTVhNTQ5OWQxMmQyMzJkMGI1NDBiMzU4ZGRlZTRiIHB5M2sKKzg4MTMwIDVlNzBlZWU4NmM2MTMwYjFiZDIxNzZhNTMwMjhiMDY4N2MxYmU3ZWYgcHkzaworODgxMzEgYzgzOTZkMjdmNTZlOGQ2NTllZDkyODM0ZjQzZTg1MzI2NmNhZTJmMyBweTNrCis4ODEzMiBmMzY1MzhiYTkwYThmYTMwYTBlYzgxOTM5Zjk4ODYzMjQ5YWE0ODgyIHJlbGVhc2UzMS1tYWludAorODgxMzMgZGY5MWEwMThkZTNhYjUwNThjY2EwNjEzZTZlM2EzMjI2NWVhNmZhYyByZWxlYXNlMjctbWFpbnQKKzg4MTM0IGZiNjY4YWFhMmZhNGYwZDc1Y2E4YTg4NTViNWY4MGE4Zjg4NWE1ODkgcHkzaworODgxMzUgZTRlMzJjNGZmNjI2MjdhM2U1YzBiNjQxNmQ5MjNiYjBlOTQ1ZWQ4NiBweTNrCis4ODEzNiBjYzIxNjI3MDhiZjYyYjViZjc1YWMxNDAwYWFhNmE3MWEwMThlOTRjIHB5M2sKKzg4MTM3IDhlMGI2MTdjNmMyMjE2ZDM0OWQ4MTg5NGYwMzZjZTRkMzg0YmI0NGEgcHkzaworODgxMzggMTY0ODAxMWM2NWRhOWEwYzI2ZGJiZjQ2N2Q0MTVhNjRkZTk0MGRhZSByZWxlYXNlMzEtbWFpbnQKKzg4MTM5IDI0MTYxY2Y0MDVmNGMyMjM3NDMwYjdmZTk2YTA5Nzg1N2Q0YWFlZDIgcmVsZWFzZTMxLW1haW50Cis4ODEzOSBkZThkYjdhYWY3YTI5NjA1N2FlMjYxMjViOTk2MThjOTYxYjRmZWY2IHJlbGVhc2UyNy1tYWludAorODgxMzkgYzQwODE3Yzk1NTE0YjE0NzFkYjI2NzBlMzQ3NDc0OGVjODQzOTBiYSBweTNrCis4ODE0MCBiOTY4MDUzYWZhZDBkYzUxZThiMDg3ZTU5ZmYxMWU1OTQ5ODYzODFjIHB5M2sKKzg4MTQxIDc4OGIwMWI1YTc0ZWExN2M2MGY3N2Q2YjJkMWU5ZmE4MGY1YjU3OGUgcHkzaworODgxNDIgMzBjOTEzNDJiNmFlNjM2NWI3MzNiMTMzNjA3MjFkZDk0YjA3MmQ3NyBweTNrCis4ODE0MyBiM2NhZGY1Y2Y3NDI2YzViMjc4MjBlNGY3Nzg5NzkwYmRjNWIwMDEwIHB5M2sKKzg4MTQ0IDA4NjczZTVmNTQ5YTI3Y2M3MTU4MWU2Nzk5ZWY3ZDBkNmFiZjZjMTMgcHkzaworODgxNDUgYmFhOTIyYjQ2MjM3ZGIyYjI5YTI4NDAzMTRkZDA2YzM3MWUxMzk1NiBweTNrCis4ODE0NiA0ZjdmMzk5NTE5NGExYzhiMDNkNDM4NjMxYmQ2OGFjYTRlMTM4MTBlIHB5M2sKKzg4MTQ3IDRjNGFiZmI4ODRmYjQ4ZmUxNWNjZDZhYzZlYmE1OWVlOGZkNTJkMjMgcHkzaworODgxNDggYmNmMDMwZjczZWVlYjQxNTdjZDlkZjhmMjM1MGE3ZWQ1MGIzN2YzOSByZWxlYXNlMzEtbWFpbnQKKzg4MTQ5IGI4YzBjYTM1OTc5YTJjZGU4YzFmODdmZmU0MjUwZDNkODc0ZDU2ZGUgcHkzaworODgxNTAgNDMxZGRjZGI0MzEwNmFkOWI2YmViMzhhNjRiNmQ5ZjMwZmQxMDZiNyBweTNrCis4ODE1MSBmYzJhZGU4OGFiNDE3OWZiOGMxZWQzOTg5ZWFjYWQ3MGEwMDBjNTZiIHB5M2sKKzg4MTUyIGQxYzA2MzA2YzE5YmU4MmJlMzliMjRiYjZmY2Y2ZDVlYmM5MWIzNTkgcHkzaworODgxNTMgYTBhNWM1ZDlhYTRmZGYxZjE2NDQyN2QwMWY5YTJjNzA2NzdiZmJjMSBweTNrCis4ODE1NCAzYmIyMWRmNjRhYTUxMjAxNWViNGJjNDY5MThlNTliMWNkNGNlYTAwIHB5M2sKKzg4MTU1IDQwNjNlNTI2OTgyZjI2YmEwMmMyNjNhMmJlN2RlYmM4OGVhNjY1NGQgcHkzaworODgxNTYgNmY0MGI0NzA5ZTlhNTJmZDhlY2E2NGExN2JjMGI0MTJlMzI3ZWM3MCBweTNrCis4ODE1NyA1YTY1ZWMyODc3MTM3NDU5NmYyZWU0Y2ZiMDIzOWVjMzI2NmNjMjNiIHB5M2sKKzg4MTU4IGRkMjdkZjhkMTRlZmMxOTdmZWIxNzk5ODg5NTlhNTI5MzBiZGE1ZjkgcHkzaworODgxNTkgMmRlNjk5ZTVmOGYzMWE1MzIxZTIwNzgxODEyZGM0MThjNjQzYzlkYyBweTNrCis4ODE2MCA5MGEyZDliNzAyYmNiYWFmYmE5Y2FkNzc3MjE2YWJhMWQ1ZTdlY2ZhIHB5M2sKKzg4MTYxIGYzYmZlYjJmYmNmYjA2ZDVmM2JlYjI4MDE0Y2Y0OTljZGExZGQ0Y2MgcHkzaworODgxNjIgMDNlMmE4NzU1NzA5MGFhNTJiYTAyOGI0ZGJiNjZiZjc0M2UyMzVmZCBweTNrCis4ODE2MyBjMTc1ZjVkZmYzOTYwNGJkOTA3ZTQ1MjhlN2I0Y2Q4NDBmYzRkNzVjIHB5M2sKKzg4MTY0IDgyNWViYWRlYmY5YmEyOTIxODVlZDZlZGQzNDhiMzUzMzcyNDA2YzcgcHkzaworODgxNjUgMWUzZjE2OWI5ZTQ2YWU0ZTFiYTgzMTIyOTE5MmJjNWNhY2M2ZGJmNSBweTNrCis4ODE2NiA3MDkxOWJhZDc0NTg0MWQwMjY2YzdhYmZiN2MxZWU2YTIzODQ4NmUzIHB5M2sKKzg4MTY5IDdmOWE5OGY3NjZkNzVjOWI1OTQ0ODkwMmNkZjU0OTFjZDQ1YmFhZGMgcmVsZWFzZTI3LW1haW50Cis4ODE3MCA0NzNlNDM2ODM5ZWU2MzkxZTJjNTcwNjZlMWNkNTFkZWI5YzNlZTdhIHB5M2sKKzg4MTcxIDhhMzBhMmNiNGI5ZTM0NzJkODkyZGJhMzZkOGRkMGQ5MGJhMjVlOGYgcHkzaworODgxNzIgNTk4YzE5NWU1MmYzNjA4NmZlOTM5MDI4ZGNlNzFjNDhmZmYxMjMyMiBweTNrCis4ODE3MyAzYjkzZDAwOTljZWQwN2M3YTVjYmQ0YWE4YTllYWRkMDM3ODk4NGU5IHJlbGVhc2UzMS1tYWludAorODgxNzQgYjAyMjU5NTdlMDA2NTk5NWZiMjFhNzhhMmEzMDMxNjNhMDQwODUxOSBweTNrCis4ODE3NSA5M2E0MWRmOGM3Mzc4Y2ZhYjZmNzY4ODU2Yzk4ZTJmYmQyY2NhYWYxIHJlbGVhc2UyNy1tYWludAorODgxNzYgMGI1Mjk4ZTdiMmQ1NDA1YmQ3MjM3OWVkNjZiMzY4MzI4ODk4ODcxYyBweTNrCis4ODE3NyBlYjRiYTAzZDdjNGRmMzIzMjIzYzc2YmJjNjFkMmM4MWMxYzU0MmJiIHJlbGVhc2UzMS1tYWludAorODgxNzggMGQ2ZWNjZjAwYjViZDY3ZDFjMjA5OWVjZmI3ZTM4MDkzNzA5NjQyMyBweTNrCis4ODE3OSA3MTI4MTAxN2M0M2ZjNDNmZmIxNzdkMmFkODFmMDVlNmNlM2ZhMWIzIHB5M2sKKzg4MTgwIGZhZTE5ZTU1MTdiNjViZTJiZjMwNzNkMzM3NTAzODE3MjBkNjBlM2UgcHkzaworODgxODEgMDMyMjBlZDQ4YmNhZTBkZTBmY2NkY2JjMGFkOGM2OGE1YjBjZDg3OSBweTNrCis4ODE4MiBjMmJkNjkyMDc4ZDIwZTczYWU0MTk2ZDJlNDgxZTJjY2I4NzRiNDhlIHB5M2sKKzg4MTgzIDMyYzg5NjY4OGM5MWQwNjhhODYzYjc2M2QyZTM3NzgzNWRjNGJjOTAgcHkzaworODgxODQgMDhmMzJkMTFiN2VmYmEyNTQ1NWRjMGQ2OTk3MmQ5NzZmMDZiOWNmYyBweTNrCis4ODE4NSA4OWEzZjZjMTJmMDIxMmRkNjFmZjVhZTAwOWMyM2EyNmZlZmQzNzkyIHB5M2sKKzg4MTg2IDc1N2E5YjE4MzZiMTlmMmI2N2Y2YWZiNmIxM2RhYTZmZDA5NDA5OTcgcHkzaworODgxODcgMDA3NTNkMDRiYmJmYjMzZDU4NWExZDE2N2JiOWRkMDBhZTAyZWRkNiBweTNrCis4ODE4OCAzY2FiY2UwYjZjYWZjYWNjOTAxOGZhNWRmYWZjYTNlMGJjMmI4MDRjIHB5M2sKKzg4MTg5IDIxOTc1NGU5YzM5YzJmYTA2MjgwNDBjOWYyYTc1YTIzM2I2OTIzOGUgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5MCA3MDU3ODBiYTllM2EwNTNiNWM4YzUyYjM3NmRjNDc5ZDFjY2NmYmZkIHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTEgNzc2YzNjMjk0YmI3MzVjNDg5YzA0NmI4OGY4ODc1YzBlNGY0YTdhZSBweTNrCis4ODE5MiBmNjM5MmM0Y2U2MTk4Nzc3N2RmN2ZjOTM0ZmEwYjg5ZTViM2ViNGM0IHJlbGVhc2UyNy1tYWludAorODgxOTMgMzJmYzFjYWZmYjE3MDI2ZmE4NWE3ZmMyMmU1ZDEwYTU2ZDVlOWI1NCB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTk0IDgyYjdmNTNjMmFjZDRhOTNhN2RiM2M2ZTQ0MjAyYzc0Yzk4ZWEwZjMgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5NiBmOThhZDY1MDkwMjk1YTU0NDI0ZDViNTllMjM2NjcwYzQ5MzE4NzJhIHB5M2sKKzg4MTk3IDY1YjA5N2FlZGE4MDEzY2E3NzI3YzU5OWE4MDMzNDNlZjg0MDA3MGIgcHkzaworODgxOTggN2IzMGQ5Y2ZhMGQ5ZTUxODg0YjU0ZjI0YWRhYmNlZDUyMGRkYTVmNSBweTNrCis4ODE5OSA0ODcxOGIxOWMwZGMwODJlMGFlMjAxYmRkYzcxODBkZjhjN2ZlZmZhIHB5M2sKKzg4MjAwIGJkZjk4NjRmZDI3NjA4NTMwM2E5YTE2MGZkNGQ5Njk0N2Q1M2IxYzggcHkzaworODgyMDEgMWYyMTVmZGEyMzgzOGNlMzc1ODc3ODFkOWFmMWZkMTEzN2FlODkwMSBweTNrCis4ODIwMiBhNjc1YTQ0Njg2MjA4NDM5Nzg4NWQxN2EzMDYxOGIwM2YzYmQ0ZjIzIHJlbGVhc2UyNy1tYWludAorODgyMDMgMWQzYmU3YjAxZDg0NWVhNjRlYzBmOTM0MGQyZGY4NDJkZjE3YTA0NSBweTNrCis4ODIwNCA4ZWFhMzI3OTdmOTJlMjkyZTk0NWQwYzBkZTkzOGU5MjA0Y2QyNjcwIHB5M2sKKzg4MjA1IGFjNDdkMTFhOGNhMjRkNDYxZjYwYTQ3OWJjZTBmNzE2MjliNDZjYTYgcmVsZWFzZTMxLW1haW50Cis4ODIwNiA0NGMxYjU2ZDc3ODdkNzE1MjIzMjk2NDM3ZWM0MzYxOTU4ODU3OWQ4IHJlbGVhc2UyNy1tYWludAorODgyMDcgODA1NjE3NmMwNTNmMDVmYzExN2VkOWE1MjY1Mjk5OWU0OWQxZjA0MyBweTNrCis4ODIwOCAyNzlhMGM5NTlmN2RhZWYwYjljMjYxM2VlMzlkZDI1MTdmZTA5YTJlIHJlbGVhc2UzMS1tYWludAorODgyMDkgNTkxZDU0ZmZlOTY5ZDc0NjdjZGMxMDE4Yjg4NDdhZDBhZDA5YWNhOSBweTNrCis4ODIxMCBmODJhMDRjYjE1MGEyYzA2OGYxNTljOWUzOWQ3MjBjYTMwNjFhY2M4IHB5M2sKKzg4MjExIGIwYWIzMzUyMmRkYTlmODNjYmFlMTQzZGM5OWQwN2EzYWMyMjA5OWIgcHkzaworODgyMTIgMGUzMGQ0MTNiOWU5N2Y0NmNjYTk4MGQ3NjRkYTg3ZmM1MjhlM2Q3NyBweTNrCis4ODIxMyBiYWMyOTY2ODBjZjg0NjdiY2QyZDkxN2I2YTljNmRhZDlkMmI5OWNkIHB5M2sKKzg4MjE0IGIyMmNjNzU2M2IyODgyMzExYmQ5YWRlYTQ2ZTM5NzhkMzE4NDQ2M2EgcmVsZWFzZTI3LW1haW50Cis4ODIxNCBmYzJhYjdjZGRjZjAwNThhNTFmOTE1MmY4ZjE5YzAzMGUwM2RhZmY2IHB5M2sKKzg4MjE1IGRkNzMyODY3Mjk2ODMxZTAzYTE3ODIyMDFmY2IzMGQ0OGMxNzk1MmUgcHkzaworODgyMjAgZDIxY2I2YTdhMTRlZTlhYzMzYTAzMjdjYTJhOTJkNjI2NDY1YmY4ZiBweTNrCis4ODIyMSBlNzk1OTMwOWY1OWM2NWI0ZWEyODYzNmQ3YjIzODljYWUyM2Q3NDRhIHB5M2sKKzg4MjIyIGU0MDY0M2EzYzMxZGZmZjNhYmE3NmVmYzY1Zjc4NjVkYmRmYTZlMTYgcHkzaworODgyMjMgN2M3ZWU0ZTExODUwZDA3N2Y3NTU3NmZhZjU3Yjg1Y2U3Zjg0Y2Y5ZSBweTNrCis4ODIyNCAyZGI2MTdlOTBjYTBjMTIwZDNjM2FmNzBmMDJiY2Y3MGJhZGE4YzY5IHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgyMjYgM2VmODY1MzI3ZDdiMDU4MGVjMGIwMjE0YTEyYzhiZDU5OTU4ZGU0OSBweTNrCis4ODIyOCA4NTIxODZlNWFlMmFjNjllMjFkMDQyMTMwMjQ5ODE2N2M2MDcxZGY0IHB5M2sKKzg4MjI5IGNmNzUwMGYwODBmZDNhYzYzZTQzMGM2NGY5MzcyOTE1NDgxYzJjZGMgcmVsZWFzZTMxLW1haW50Cis4ODIzMCBkN2NkMWI2MjYwOGI5ODMxYzU0MWY0NDBhNjBhMmIzOTZmNTI5NzNhIHB5M2sKKzg4MjMxIDA4NWUwZGQ2Mzc5NmI4MGQzZjhkZWU3ZjkwZWQ3M2RhZmQ5YjA5NjYgcHkzaworODgyMzIgNWM1MTcyNGJmNDExMTZhMDgzMmIwYzMzNzZkYmZhOGQyMTJiNDM3MSBweTNrCis4ODIzMyBiZTExZTU2NTNmZGE5NzU0ZmVjYjQxNGI0MTY4ZjM0ZTcyOGNhMTdjIHJlbGVhc2UzMS1tYWludAorODgyMzQgNjQ3MTNlMzE2ODNmOGI3MWUyNGI3OWNmOTg3ZGI5YzAzMWQ1NTgxNiBweTNrCis4ODIzNSAzMzQ4MTJiYTU4NzQyMmJkYzRiODkwZjc5YmQzNGMxNzg1YzUzZTc0IHB5M2sKKzg4MjM2IDZhMWZiOTQ2NDdjYjRkZGZjOGNmYTlkZDY3ZDg4ZjM4NzQwNzYzMzUgcHkzaworODgyMzcgMmFhZDcwN2VkYTYyNzhhMmEzYzY2NTY5MDY1ZWQ0MTRhYjMwMzEzOCByZWxlYXNlMzEtbWFpbnQKKzg4MjM4IGYxMmZlNjg1ZTQ0ZDI4ZGM5NzNjNjEyZDZlZWJhZDY2MDAzMDNhNjQgcmVsZWFzZTI3LW1haW50Cis4ODIzOSA3OTFmNTJmYmU1ZTA2MGFmYmRlNDU5ZDkwY2NjNzdjOTI4NDQ3NTI2IHB5M2sKKzg4MjQwIDVmMWFkNjVhMWI4NGM3NzdmZDUzNDEzOTAyNWUwNzY1NDViZGE5MDYgcHkzaworODgyNDEgM2M3NzcyZmZmYmFkMzRhMjYzMDJjZDMzMTI0NmRiOTU1ZTQ0NWU1NCByZWxlYXNlMzEtbWFpbnQKKzg4MjQyIGM2OTA2MDk5OTVhNjI3NjI3MzczZDY0ZmM4YWZkNzc5M2NlNDBkMWMgcmVsZWFzZTMxLW1haW50Cis4ODI0MyBiMGVmYjZmMGZlOTQzMjYzZjc2NWUzMDBhZGUwMTFjMGQ4ZGFmMzI2IHJlbGVhc2UyNy1tYWludAorODgyNDQgMGM2MDRlNjU0MjllMzJiODIzNDdkOTczMTQxODU3NWRmZTI4ODRmMyBweTNrCis4ODI0NSA0NmYwN2RjNDM3ZmZiZDc5MjVhNTMxZmVlZTQ4ODc5MGRjM2Y3ZWUzIHB5M2sKKzg4MjQ2IDhhMTlmNjAyOWNlNTk3ZTI5NzRhMmU0YmJmMDc1YjM4NDUwOWM5YWIgcHkzaworODgyNDcgYzgyNTg4Y2EzYTc5MDlkY2E3ZDZmOTAxMDkzY2NiNGM5ZjkzOTI4MSBweTNrCis4ODI0OCBkM2I0ZmEyZGQ3Mjg4ZWM3MDExNTJmNzcwNzc1MWYyNGYwMGRkNjUxIHJlbGVhc2UyNy1tYWludAorODgyNTEgMmM5MzcyYTFjNjg1YjViOTBlNGJjYWE1NTViMDg2ZmE2MWUxMTIwYyBweTNrCis4ODI1MiBkYzUwMWVmYTA1YjQxMjViYzVlNWJlNjNjZTkzOWJmMjFjM2Y1NzEwIHB5M2sKKzg4MjU2IDM2ZWViMjgyY2Q4NDRlYTg5MGQyMTg3ZjNmMWE0NDMwZDcxNzkzN2IgcHkzaworODgyNTggYmZhNTgzNWUxMGYwZTcxODVhZDc0NjQ4YjkxZDYwN2Q2ZDM3Yjg4MSBweTNrCis4ODI1OSA1OTVjMmI1NjY4MWViYjc2ZGRhODZmNzAzMWJiOTA4NTJhMjZiMTExIHB5M2sKKzg4MjYxIGRmYmQ5NTY4ZjQ5Y2JlOTAxNzNiNjYzZGYwMTY2Y2ViMDE1ZGQ0MDYgcHkzaworODgyNjMgMmJlZjdhYjYyNTZiNDIxMjQ0NDU5ZGNhY2ZhYWI1M2VjYTYwYmQ4ZCBweTNrCis4ODI2NCA5M2M0MDgxZGZkMTk1Y2JkYjA3YmU4ZmUxODI1YzMyMWRjMGE2MDA0IHB5M2sKKzg4MjY1IDI2NTc0YjAyNzA0MmM4ODAzMWE3OGE3NjllZjhiNWI2NzAxYjFlZTQgcHkzaworODgyNjYgYWNmM2UyNGRkMGQwZGZkMWUyMGM5MDdkNjk2ZDNkYTk2NWE4ZjU2ZiBweTNrCis4ODI2NyA3YzNkYWZiZWU5ZDBiNmIxYzExMjE1YTUyYzE2OWM3NjgzZDBjY2JlIHB5M2sKKzg4MjY4IGU4MjUwMTgxMmFlM2QzMTY1NjM1ZDk3ZjZmOTdhOWY4ZjFkY2Y3MGYgcmVsZWFzZTI3LW1haW50Cis4ODI2OSBhOWRkZGZiYWIyNDE3OWMwYjY5ZWIwODMxMWNkNmU3YWUxOTViNDZlIHJlbGVhc2UzMS1tYWludAorODgyNzAgMTgyMDdiOWQ5YTYwZjgxNTYyMGJlNTZlMDVjYTBmNWM5NzY4ZDMyNCByZWxlYXNlMjctbWFpbnQKKzg4MjcxIDBmMGM1ZjlhY2U5ZjNiYjRiNTIwYmM0ZjQ0ZDk0M2VkZTljNzU4YjAgcHkzaworODgyNzIgZGU2NzkyYmRkOTY1OTNiZDUxZTIxMGI4Nzk3OTIyMTJhNmExODgwMCBweTNrCis4ODI3MyAwODZjMmJjZDhkNzRlNmI0NDc0NjhmNzQ2MzVmYWUyNjRhYjZiZWZlIHB5M2sKKzg4Mjc0IDRhMjcyMjI1YzNkZTcxZTYxYTA3MTg1ZTQ0MDNiOTI0YmYwYjg4NmEgcHkzaworODgyNzUgYmMwOWRiODJhNWQwZjU0MzY5MTBlNTEwZjg3ODcyNjAwMTEzYTM3NCBweTNrCis4ODI3NiAwMmVmZGI5ZTA5ZTkwZWMyNTkwMDM5NDZkNGY0NGZjYzE5YmExMzgyIHB5M2sKKzg4MjgwIDRmOTQ4NzM4NDZhM2ZhNWZmOTRlYzJiNTc5YWY5OTUzYjIzNTBjNDAgcHkzaworODgyODEgMGE5ZjY4MGEyY2YwNWMzYmFlYzRjNjlhNGQ2N2MwZGNkMTk5MGI1OSBweTNrCis4ODI4MiA5ODdlNjYxNWEwNzk2YWQ5MDA0ZmMxYzNhYTA5MDE0NmJlYTViNDBjIHJlbGVhc2UzMS1tYWludAorODgyODMgYTZkZjNjM2UzNzQyMzYxMjRmZjk2ODkwYzc2MzQ2MmQxYzI3YTViYyByZWxlYXNlMjctbWFpbnQKKzg4Mjg0IDMxZjQwYmU5MjI1MjRjNjI5M2VkNzcwNjYyZTU3MGIwYjAyNjJmMTUgcHkzaworODgyODUgOGZhNzNhMDg4NWM5NWU4ZTE2ZjVkYTcwMmVhZDAyNDJjZjdhYzNhNyByZWxlYXNlMzEtbWFpbnQKKzg4Mjg2IGNhOTA5NDM4Y2Y5Zjg5MWJmMDc0NzQ0NGU0ZmZlNjM5ZWIwMjNmMjQgcmVsZWFzZTI3LW1haW50Cis4ODI5OSA3M2M0OTU3OWE0ODdjNGJkMWI3NThkOGM1Y2UyODhmMTRhMTQzNDgzIHB5M2sKKzg4MzAwIDkwMGZjMWVlNDQ4N2VmZTE4NzgwMDYxMGY4NjNjNTYwYjQzM2ZkZWYgcmVsZWFzZTMxLW1haW50Cis4ODMwMSA5NDRhZGY3ZWRhMmViYjFlYTYxMTRiNTE2YmY2YTEyZTliOTFiMWRhIHB5M2sKKzg4MzAyIDllNjU5NTEyNjZhMjA1MTI5NTAxNTdlZWVhNmRkYjg5OWVjYmJmOTcgcHkzaworODgzMTggYWE4NzMwMDRjZWE4MGRlN2FkZmJmYjE1YzI2ZTkzMDBjOWY2OGM5YiByZWxlYXNlMjctbWFpbnQKKzg4MzE5IDc3M2NiMzMyY2M2M2I2YzZhN2M1NTM0YzI4MDYxYzQ5ODU4NDBlMzkgcmVsZWFzZTMxLW1haW50Cis4ODMyMCBkMzM5MDNlYjMzODg1NDFmYWVkN2M0M2E5MTc1ZDEwODRiMDhmM2RmIHJlbGVhc2UyNy1tYWludAorODgzMjEgMTdkNmYxNjVlYWU5N2Y5YjRlYzZjZDcxZjE5ZTViOGNhYzA4YTUzZSByZWxlYXNlMzEtbWFpbnQKKzg4MzIyIDViZTcwMTEzOTA4OWNmOGY4NGY1OTIyNDQyZTRkZTMyNTI4ODI1ODggcHkzaworODgzMjMgOGU5OTY5NDE4ZGJlYmNiOGJiZjQ0OWE2NTZmNDM5YTM4NDZlZDk0NyByZWxlYXNlMzEtbWFpbnQKKzg4MzI0IGIyMTc4NjQxOWJiODMzZGIxMzY3MDEwMjQzOTUzMWMxZWQ1ODAxYTIgcmVsZWFzZTMxLW1haW50Cis4ODMyNSA3ODJiZjVmMzdhY2IwNmZlZDZmMDRiZDFkYzNmMWZlNzZlYmMzOTdiIHJlbGVhc2UzMS1tYWludAorODgzMjYgMmUzYzU4NDFhMGE2NjQwZWU3NjQ0MWE2NjA2OGQxN2Q5NjBiMzA2MCByZWxlYXNlMzEtbWFpbnQKKzg4MzI3IGExZDFiZmMzODNlZmNmNmUxZDczZTg0Yjg2NTNjMDg1ZjgxNTE3MWIgcmVsZWFzZTMxLW1haW50Cis4ODMyOCA2MjcwOTQ2MTE1ZDA4NDVjNWY5OWJkMzU3YzZjYjJmODI4ZDg3YTcyIHJlbGVhc2UyNy1tYWludAorODgzMjkgMDM4NjQzZDM5ZmMxNTZkZjNiMzYyZmFlYTU1MGJiNTJjMmZjMDAxYiBweTNrCis4ODMzMCA0NTA2NDk1NjU4NjMxYmViOTJmMGM2MTY4ZTdmYzdiNGJjOTBiMWFhIHB5M2sKKzg4MzMxIDhjYzEwMjc5YWM3ZGQ2ZTQ2NzUzOTNlYzgzYjhhYzEwM2MwODQyOWEgcHkzaworODgzMzIgZTU2NjhhZGMxZWQ5ZTZhYmEwNmRmNjk4NWFmNTM5ZjgyMDU4ZDY1MiBweTNrCis4ODMzMyAwNzc0NmJlMGJiYWQ0N2U2NmMxNTgwYzJhMzFjMDEyMTg4N2YyYTA4IHB5M2sKKzg4MzM0IDBiYmE1MzNjMDk1OWY2MjU0MDBkNWVlNzc4MjI4NWRjZTBmZDE4ZDggcHkzaworODgzMzUgZjkwMmZjNzc5M2UxMmI0OGI2MDEzOGMyODZlNWFjYzNkOWRkYTgxMyByZWxlYXNlMzEtbWFpbnQKKzg4MzM2IGYyMmM5OWRiOGE0NjU2ZmY1NjBjOWM2ZjI3Y2RkYmVmYjcyM2FhYmUgcmVsZWFzZTI3LW1haW50Cis4ODMzNyBjZThkYjQ4NWUyNmU0MzU2OGFkMzhlNjNjOGU0YjY4NjllOWU1ZDE0IHB5M2sKKzg4MzM4IGRjNTZjODI3MWZhODUxZmM3MGQ0OWFjNzE2N2VjODJkODE3NWJmMjIgcmVsZWFzZTI3LW1haW50Cis4ODMzOSA0MzU1MjEyZmUyYzQzMDMxMWE4MmIwOGI5MjMzMDVmZTJkYTExZDA3IHJlbGVhc2UzMS1tYWludAorODgzNDAgY2NmYjViYTUwYTQ0ZTljMWMwNzRlZGIxNDJmODE3NDJkZDIwNTYyYiBweTNrCis4ODM0MSA1YTUwNDg1YTM3NWYxMWM4ZTE2MGU4OWIyNTA1NzQ1MDM3OWY4M2E1IHB5M2sKKzg4MzQyIGJjNjg1YWRiYWExNWNlMTYyZDQ2MWNjMTI2NTM3ODgyZmRlZDNkZjUgcHkzaworODgzNDMgNDYwZjJmMWM1ZWM4M2ZiYzBkZDZkOTgxNmExNmFlYjQ4MDgyOGFlMiBweTNrCis4ODM0NCBiYjNmNmQzY2MwYjNjMzdkZGYxZGI5ZjgzNGI4OTVlNGQzYjBlM2FmIHB5M2sKKzg4MzQ1IDUyNjdlNTI2M2U0NzdkNGZmODY2NTYwN2FhNTgyOGNiYmIyYmZhZGMgcHkzaworODgzNDYgMzliNWZjNmM3OTJkNGI1OTY5ZGM4OGUwMWUxOWE5Njc4MmJjZjVjMSBweTNrCis4ODM0NyA4OGQ2OWMyZjllZmEzMjMzNWUzNGRmNDA5NGFmNzY2N2U1YzRhZmFmIHB5M2sKKzg4MzQ4IDliMzNkNjVjZGFlNGFlYjY1Y2MyOGI4MmQzMGQxOWM2MGY0NDVlMDUgcHkzaworODgzNDkgOGQyNTkyNTkxMGIxMGI1NTZkYzhmMTljZDlmN2I0MGYzMjM4ZjI1ZSBweTNrCis4ODM1MCAwZGE2OGUyZTRkNzgwYjY4YmQ1ZmFmN2IzZDcxYjAwNGQ4NmEyM2U4IHB5M2sKKzg4MzUxIGFjYTkxYzU1ZjM4ZDQ1MGZmZmRlNzVlMjRhZjVkZGNhNTdmYWFiYzMgcHkzaworODgzNTIgYWJhYjJjNTNmNThmZDMzNzQwNmI0YmEwMWYwNDZhZWZjMzM2YTJiNCBweTNrCis4ODM1MyA0MDVhNDRjNmRjZWRiNDU3YzNkMzlkNDA0Mzk5ZGZjNWM5MjU4MDAyIHJlbGVhc2UyNy1tYWludAorODgzNTQgYjVlMzZhNTQ5YzI1Mzc5MWVhNDljMzljYmJhNDgyYjNhNjc5OTQ5ZiByZWxlYXNlMzEtbWFpbnQKKzg4MzU1IDhlMjA5ODZiM2Q2ZTliOGRkY2M2YTVmMjRjYTE1ZjMxM2U4YmE5MDcgcHkzaworODgzNTYgNTE2YjlkYjZhZmU0YWY0OGM5OTE2NzRjMGJkMDRlOTE1N2Q4ODE3MiBweTNrCis4ODM1NyAzOTRjYjAyMjQ3ZmMzNmI5MTY3YzA2MjBiNDkyNDUyZDUyOTVjZmEzIHB5M2sKKzg4MzU4IGI3YjFkY2UzZTc3ZjI5NjUzZWZlZDEzZTRlMTBhMTc2MjBlZjRmY2YgcHkzaworODgzNTkgZDYxZWJmY2UxOGVkM2FlMTJiOGRkZWQ3NGRhYzI1MWZjZWE2NWM1MyBweTNrCis4ODM2MCAxNTE4YjkzNWRlMTBlNzA3MzA1OTE4YmZiZDYwZTZhOWI3MDg1OTVmIHB5M2sKKzg4MzYxIGI1NzAyYjIwYjQ3NjBlNTkxYmQ0MDc2NzA2ZmM5MDMyZWJmMzgwY2YgcHkzaworODgzNjIgYjRjN2QyMDNjM2QxNDMwY2NiNzU1MWQ0MmM5YzlkMmY0ZjM3Y2Q4OCBweTNrCis4ODM2MyAzYjlkN2I4NDU2MTgzOTI4MGQ4OGVjMTExMjNlNmQ3MTgzZjFjYWM4IHB5M2sKKzg4MzY0IDA5ZjA3YzdkYzNkYzI1ZGUxNTg5YzMwNDRiY2Q2NThiNzgwNTA3NjcgcHkzaworODgzNjUgM2UwMjEzNjZlNTFmYWM2MmFhNTRlY2I5YzgxZDdmNWEyN2Q3MTc3MyBweTNrCis4ODM2NiBmMWZhZWM0OTM1MGRjZGE2ZTg5Y2FkMjBjOGYxOTNkMWRlMGJhNzQ4IHB5M2sKKzg4MzY3IGJjZTc1ODkzOWQ3OTkzYmMwM2E4MTdmNWFlOTE0YWJjZGQ4OTZmMWYgcHkzaworODgzNjggMWQ5YzVhMmFhNjk0ZTdmMmU1MjVhZWI0ZTFkNDUyNDFlN2M2ZDhiOCBweTNrCis4ODM2OSAyNjEzNjdlOWU2YzFjOGExY2Q2YjAyYzgxZDQzMDQ3YzNkMGZmMjUwIHB5M2sKKzg4MzcwIDM0MTFjYzdmNjRkZjY2OWM0YTAyYmJkODZkZTNlNjkwZTNjZGJlMTMgcHkzaworODgzNzEgOWZkZmMwNWVmYmI1YmZjZjdjN2E1NTRmMTc5Njk0ODA5NWZjNTA4YyBweTNrCis4ODM3MiA5NDZlY2UyNmE0OGYzYmZlOWFkOGQ1YzE0MmJmYTI1NWYzN2I0ZDljIHJlbGVhc2UzMS1tYWludAorODgzNzMgNjhkNjE3ZGQzMGNkMzkxOThlZWZkYjAwMDYxMWM4ZmEyMzJjZWVjZiByZWxlYXNlMjctbWFpbnQKKzg4Mzc0IDdjNzFiMGE1YTI5MDE0Yjk2MDBmNjAzYzg5ZGQ4ODQ1ZjFlNWIzNDcgcHkzaworODgzNzUgZTlmYjZkNTA0NTlhZjVjNWRhZTU5YjUxMGFiMTU5ZTFjOTA4ZDk5YSBweTNrCis4ODM3NiBiYjc1N2ZhY2JmYTYxMTIwMzZkNjVjNTRmZmZjMjkxMTZmNWVjZmU1IHJlbGVhc2UyNy1tYWludAorODgzNzcgNTc0MmM3OTA4NmE4Nzk4MDQ3NmEzZDA2NTRkOGUxZmQ3YWVjZDFlMiBweTNrCis4ODM3OCBmNTJlMzVjNzVlMzNjNmY4ZGQxN2Q3Yjg3ZjhkMDdlMWI1N2ZmN2QwIHJlbGVhc2UzMS1tYWludAorODgzODEgZDY5NjZkOWI3NjA5ZmNjNzMxYjNmOThmOTY4NDBiNDMyOTM3MWQzMSBweTNrCis4ODM4MiBkY2YxNzkxY2IxNzY3YTUxNjg3NDg5M2JlZTBhNGJiMzBlYzhhNzFjIHB5M2sKKzg4MzgzIDA3MWQyNWFmYWRhYTg5NmU5NzFjZWNhZjMzYTZjNjczNzRlMDlmYTIgcHkzaworODgzODQgNjQzYWM5NDZlZmY0OWY0NzU1YTFhMTJhMjY2NjQ3OWRhYzM4NjhjYSBweTNrCis4ODM4NSAxNDZlODFlNGU1MWU0YTk1NDc1ZjcxMjkwYzQxMDI3ZjhjZWFmMDcyIHB5M2sKKzg4Mzg2IGY1Yjg4OWMzNmY5OTBhNmRmOGIwMTk1ZTFhYWE5MWEwYzYyZjI2YTkgcHkzaworODgzODcgNWRmZTBjNDJmZmU4ZDQyMjlkZGM1ZjEyZTVlYThjNWIzZGZmMjAwNCBweTNrCis4ODM4OCA1NmU2MTdjMmI1ZTgzZWMxNzBhYTcxMTVhM2M0ODk4YThmOTFjMGVjIHB5M2sKKzg4Mzg5IDcyYjQyZGMwNDFmM2ZmNTg3NmIyYzU1OTY0Y2ViYzc2ZWNiNzY0ZGYgcHkzaworODgzOTAgMDM3ZjE2YjAyY2E1NTJjNmZkNmM4OTJmZmI2ZDYwODUxYjVkMGY0MCByZWxlYXNlMzEtbWFpbnQKKzg4MzkxIDJiNDgyMmI3YzQyNGVjNTk4MzdiZTYxMDY1YmQ4MWViZjM4YzNiNzcgcmVsZWFzZTI3LW1haW50Cis4ODM5MiBkMWI1ZDgwNGQyYTU0NTI3MTM3NzE4MjgwMjlkOGI1NzYyNjA2YzY5IHJlbGVhc2UzMS1tYWludAorODgzOTMgODA4NGM2NjhiNjM3NzM1NTU4NGY4MjEwYzgyYjM5YzRjY2VkMmY4OSByZWxlYXNlMzEtbWFpbnQKKzg4Mzk0IGI0MDlkN2VjYjY2NTc0MjYyNDZkOTQxYTgzOGMxYzlmY2M3MWFmNGIgcHkzaworODgzOTUgMTJhY2FmN2E0OTU1ZGRhNTBiMzM4YTA4NWUxZTMzZDdiMmVkMGY4ZCBweTNrCis4ODM5NiA0ZDJhNTg5MThkZjE1ODc2MmZjNTVlMGUxODcyOGI0NDQ5MTkzNTVmIHB5M2sKKzg4Mzk3IDg5ZDUyZWZmYzMwYWE3ZDM5YzI3YWMwZDg1OWJmNGJlNmNlOGIxM2QgcmVsZWFzZTI3LW1haW50Cis4ODM5OCBkOWI3MTNlOTVmMzllOTBkM2E1YTE3MTMwYjVhZThhNjQ1MWQ2NjY1IHJlbGVhc2UyNy1tYWludAorODgzOTkgMDJiODgxMzI2ZjZlZDgyYzBlMDk2OWI3NWI1YTYyY2Y4NmI2ZTA5ZSBweTNrCis4ODQwMCAyMGQ4Mjg3M2FhOTc3YTlmNTZmMThhYjAwYzUzNjM0MGRjYTZlMWQ5IHB5M2sKKzg4NDAxIDA2YTY1N2QxYTNhYzE5OWY1ZDQwYTJhNDQ5NzViYzM2YTNiNTcwODIgcHkzaworODg0MDIgYzMxMGQyOTRmZGRlMGZiMDc2OTY3MzZjZmVjYTVlMzk2Nzk0NzRlOSBweTNrCis4ODQwMyAyY2JlOWQwNThmN2U5MmIxZGI0Yzg1ZDBhMjczNTlhM2RiMWJhOGEwIHB5M2sKKzg4NDA0IDExMTU3N2JmNWJhODk2NmY3YmNhOThlZDc5Y2ZlMTM1OTBhZWEzNDYgcmVsZWFzZTMxLW1haW50Cis4ODQwNSAxMWM2N2E2MDg0YzhlZDRmMmYzMTExYWFkMTllMmFlMDUwMzY2ZGQ4IHJlbGVhc2UyNy1tYWludAorODg0MDYgYmJhZjkzMDRhMGQwNGEwY2M0MjU4ZjI1NzM1MWUwODFkMjA4NDgzMCByZWxlYXNlMjctbWFpbnQKKzg4NDA3IGYzY2U0YWJiYWFmODVlOGZiM2RlYjA1OGUyMGFiNWM2MzQ0ZmNmN2YgcHkzaworODg0MDggODgzYTAyM2ViOTQzM2Q2MmYwMjczYzZhNzA2ZmE5Y2U1MWYzMWEwOSByZWxlYXNlMjctbWFpbnQKKzg4NDA5IDdkMzIwODIwZjQ2MmRkODNiNTNmNzQyMmFlNGQ2ZjRjZmQ1NDk5MTAgcmVsZWFzZTMxLW1haW50Cis4ODQxMCBiYTk1YzBiZGQ4YThkNzgzNDllMTA5NmQ0ODRhMjYyMGJmODRkZjc2IHJlbGVhc2UyNy1tYWludAorODg0MTEgMTA2NjAzY2E1M2MzN2MwZDVhODIyZjA4MWI0MGUxYzljNTJiMmIxNiBweTNrCis4ODQxMiA2YTU0MzExNmJmMTc0NzVjMjI4ZTc2MDRmMDU3NjhlNzgyMTZhMjE5IHB5M2sKKzg4NDEzIDE4YzFmNTI4OTY1MDFjN2VlMTNiMDM4NDU0YTM5YWNiNDVhODc5NzkgcHkzaworODg0MTQgOTNkZjk1ZTQwM2QxYTQ4NjE1MWYzZTRhOTFkNWQzNjA2NzQ1MmFlYSBweTNrCis4ODQxOCBiNDVmNGYzOWYyMDRkODY1YzkyZGZjMDdiMGQzMjM0YWE5MDU3ZWYwIHJlbGVhc2UzMS1tYWludAorODg0MTkgMDg4NTUxNGQ4OTdjMGM0YjdjYmUyYWNlM2U0MjRmOGZkOWM0YWRiNyByZWxlYXNlMjctbWFpbnQKKzg4NDIwIDViYWFjMTg2ZjBjMjhiZWM1YTMzODBlYzIwNmU0MjZlMjMwZjNhMzQgcHkzaworODg0MjEgMDNlYzYxZTEzNDYwYjI3MWFhNWY3OWRjNjRkNGE5Mjk5NzgyYjBhOCBweTNrCis4ODQyMiBkMWQ5ZDdlMDBiNGE1YTE5ODg4MjExOWZkMTM4ZDI2Y2Q5N2M1ZGY2IHJlbGVhc2UyNy1tYWludAorODg0MjMgZDgwMzFiYTM4ZTE2ZDNlZGM4YWMzYmI1YWJkYWRjNmE3NDQyNTUzNiBweTNrCis4ODQyNCA0M2FmOWUzNmJkZDU4YTJiYTc4ZDZiMGRlMmFkNDcwYmNmYjRmM2FiIHB5M2sKKzg4NDI1IDJlZTJjNzYwODJjOGM2YWVmNWU2MjU1NjIwZGE3NjcxMzE2NWFiMGUgcmVsZWFzZTMxLW1haW50Cis4ODQyNiA5ZmYzYjY2OTU0OGY4MzJhOTI5ZDhhYmFiNDUxNmIxMmYwNGY1N2JmIHB5M2sKKzg4NDI3IDdhODlmNGE3M2QxYWZkNjY0NDlkZmY3ZDBiNTczMWM3NmRkZTQyMjAgcmVsZWFzZTI3LW1haW50Cis4ODQyOCA1ZTdkZDY1N2Y5ZWI3NTFmM2IxNGU2ZWI1OTAwNjM4ZjUyMDJlYWEzIHJlbGVhc2UzMS1tYWludAorODg0MjkgOTA3ZjM4NzkyMzVhOGQ0YWVhNjEwMjhhMjhhOGU3YzM0ZmMwMWZmNCByZWxlYXNlMjctbWFpbnQKKzg4NDMwIGFkMmY4YzY4NmUwODU1YTcyMmQzMDA3MzU5ZDIzMWRhMDUxZTI2MjcgcHkzaworODg0MzEgMzljZjIwZDVhZDRjNWVhNTUzN2E5ZjFjYzMwNWM1M2RkODllYzkzMiBweTNrCis4ODQzMiA2ZDM5ZGFlZGVkZDU1MzZlNzlmYzU2ZDczMjVmMTVjOTM1ZDUzZWVjIHB5M2sKKzg4NDM0IDZjMWNhOWRlYjQyYTk1Mjg2YmIyN2ViNTViNmNhNGM0MmU1Y2E0OGUgcHkzaworODg0MzUgMTVhOGUyMmM0MTAxZGVkYTk1YWVhYWFkMDE4MTYzNzczYzkxZTY2MiBweTNrCis4ODQzNiAyMmQ5NGY1NWIwYzcwMzQyYWI4N2RmOTZiZjc5YWNhNzdmMjdmZDRmIHJlbGVhc2UyNy1tYWludAorODg0MzggOTJkZWJkZjk4MWM1ZjM0NDNlODc3ZjU4YjQ4NjExNTdiN2NkMjg2NCBweTNrCis4ODQzOSA2Y2FiOWE5OTQxMDUwMzU0MGZlMjFkZGI5MjA3ZGYzMGFlZDcyMDJhIHB5M2sKKzg4NDQwIDVhZjAzNTU4OWFhNzc3MmVmZmQwNDI3YzY3NGMyOWU5ZTI2NzZhNjcgcHkzaworODg0NDEgNWUzNzY2OTE3MmM4ZDI3ODM0ZGFmODY4ZTZkZjI4Y2NkODFhMzA4MSBweTNrCis4ODQ0MiAxMDFiYzY2OTUxYzdjYTRlNjM5YmRlODY5YWY0MTVjMzQ3Y2ZmYjkzIHB5M2sKKzg4NDQzIDc4OGVhZmFlZjdkYzQ4MjBkYjc4Y2I0OWE1N2EwYWRmNjNmYzUwY2UgcHkzaworODg0NDQgNTkwMGQ5NDhmZTU3YTQzOTlkYzJmZmVjM2JhMTI2NGIyMTdkNGUxNiBweTNrCis4ODQ0NSA0OTZhYzRkMWE5YWJiOTY1YzllMTE5ZTI0NGU2M2M3ZGIxNmQxODQ4IHB5M2sKKzg4NDQ2IGEyMjJhMDE1ZTI4ZDhhZTlhZjM4OTkyNThkYzZjMTVjM2Q0MGFkZDAgcmVsZWFzZTMyLW1haW50Cis4ODQ0NyA2NjM4MWNlYzZjNzMyNWMzMDYwNjczNGRkMzc2NjVkZDEwNGQ2NWViIHB5M2sKKzg4NDQ4IDIwMzk0NTA2MGJhZmYyMDZhNmE3N2M4NmJhYWQ4ODcwMWFkNDRmNzggcHkzaworODg0NDkgMGY1MmNmYzkxZmFlYzA4OTk3NzU0ODdjMmZkYjA0NDVkMzBjZWNmMSBweTNrCis4ODQ1MCA0NDE5MDdjMDgxNGU1YzcxZThjZTQ0OTM2NDk4YmZhYjczMGVkN2JmIHJlbGVhc2UzMi1tYWludAorODg0NTEgYTgzY2M5NjFjNDNhMmQzMjY5YmRhNGU3M2NlYjk4OTkxYWMzNDIxOSBweTNrCis4ODQ1MiAzNWMwZTM3ZmU5NTAxMjNmMGJjZWM1YzU5NGY1NTQ1YjllNmY2Zjg5IHJlbGVhc2UyNy1tYWludAorODg0NTMgYWVjOTUyN2Y2MjIzMjc2OTk2NzIxOTU4ZDhjMWMzNTYyZDlhNWE2OSByZWxlYXNlMjctbWFpbnQKKzg4NDU1IGJmODY0Mzk1ZDFjODhiMWMzMmMyYWY5NWE4OGE4NDY4MTY1OGI0ODMgcmVsZWFzZTMyLW1haW50Cis4ODQ1NiA3YjAxMWNmNjRmOTA2YzIyZmE4Y2FlNGNjZWI3NTg0YThkODRjMjU1IHB5M2sKKzg4NDU3IDM3MWYwNGUxYmQzZjhiM2U5MmJjYzJkZTY4YjY5ZDQ3YjQ3ZWIwZDUgcmVsZWFzZTMyLW1haW50Cis4ODQ1OCA3OTAyZjViZTJjOTA2YmYwYjc2YWE0MzdkNTcwNmRhYzdiYzE0YWQ1IHJlbGVhc2UzMi1tYWludAorODg0NTkgOTgzNjMwNzk3MzM4ZTJkZjdiMGFlYmUwZjMzYjQxY2I2ZmZiZjVjNCBweTNrCis4ODQ2MCA1MWEwODBiYWNiMjUwOGQ1NDYwYmFjMDNkMDFiMGNkN2U0MjQwYmQxIHB5M2sKKzg4NDYxIGRhNWRkM2UyM2M4NzAyNTIwODljMGM0ZGYzZGM5NGQyMmZmOGRhZmIgcmVsZWFzZTMyLW1haW50Cis4ODQ2MiA2YzFlMDVhNGI1NDFmMWUyMDFhZjM0OWVlNDE4MTU0Y2I1OTNjYmRiIHJlbGVhc2UzMi1tYWludAorODg0NjMgMjdlYTNhZTM2MmNkNTFmZjZhMmJiMDJkYjE3NDIyOWY4M2QzYWEyZCBweTNrCis4ODQ2NCA5NTRjZDVkYjUxZGMzNWVmNDNiOGY0Mzk0NWNkZDJmYTg4MWY1ZWYwIHB5M2sKKzg4NDY1IDlmODE0NmY0NWVhZTg3YzkyODk1MzgyYTBjY2QwMDY3ZmZhNWYwODUgcHkzaworODg0NjYgYTFmMzVjMjFhNzEyYzExODVmNWMwYTMyM2I1MGJjMzY4MzlkNTFlOSBweTNrCis4ODQ2NyA2MTRlMzI5MDBlZjdkYjg2YzZhMGM4ZGUxYzA4NzM5OGQ1MjY1ZjZlIHB5M2sKKzg4NDY4IGViOGZjMWNlMWM4MWViODNmYTc2ZTI2MTliOTdhYWJhOWJlMmE1MDIgcmVsZWFzZTMyLW1haW50Cis4ODQ2OSA0ODI1ODcxODAyNTVhNTFiMDkyMTY0NWVlNjg0MWUzNmI0ODEwNGE2IHJlbGVhc2UzMi1tYWludAorODg0NzAgYjE3YmJhMWM3MzAzY2U3ZTU5ZGZiYzI3OGY2NGU1NTc5NjczMmY0MCBweTNrCis4ODQ3MSA0NTBmOGQ1MWRkYTg2OWIzZjM1ODI5ZWMyNTU2YTFjYWJmNzQ5NjE1IHJlbGVhc2UzMi1tYWludAorODg0NzIgZmY4NmExNzliYzEzY2E3MTM1MzcwYjU3M2EyZmU1ZTM2Mzg1OThkNyByZWxlYXNlMzItbWFpbnQKKzg4NDczIDE4NTM5ODlmNzRlNzZhYjQ3NWNiMjY0NTQ2N2JjYjlhODgzMDhhMjAgcmVsZWFzZTMyLW1haW50Cis4ODQ3NCAxNThkNmRlZjJlZjg3ZjMxMjlhZTBkNDFjNmZkMjA2YTFiZGEzNTcyIHB5M2sKKzg4NDc1IGEwMzZjMzBhYjVhZTRhYzlkNzA1YmZlN2Y2NGFlM2Q2MTY1MGM5OTMgcHkzaworODg0NzYgYWIxNjY0YjI5OGZjZGIxZjhlOTZjOWIzZjQwYWM5N2VmOTE2MGRlMSBweTNrCis4ODQ3NyAwMGE0ZmZhNzJkYmUzZDFlYTFkMmQ0NmYzNTI2OTUxMDQ3OTA3MmU3IHJlbGVhc2UzMi1tYWludAorODg0NzggYmI4NTdkOWMzMDcxMjBjNWRmYTIyMjQ0NjFjYjQ1OWM3Nzc1ZmQyNiBweTNrCis4ODQ3OSAyODQwMjZlMDAzNDJkNGFlZTMyOTBjODBkZWQyYjFhNjE3ZTRiYjRlIHJlbGVhc2UyNy1tYWludAorODg0ODAgMmI4ZTZhMjFhZWFhMTk1NGIzOWRiZmFlMzIxZjlhNDNmMjgxOWVhYiBweTNrCis4ODQ4MSBlZjI4YWFkM2JiYWUwZjU3ZjI2NGEwYWJkZTVkNTRhOGI2MTdkYTcxIHB5M2sKKzg4NDgyIGI0YzE1ZDg3MDk0ZDllYTUxN2RmZGZjZGQ0NWRjNThlOGE3MTBhODkgaXNzdWUxMDI3Ni1zbm93bGVvcGFyZAorODg0ODMgMjNkZTNhYTcyMjMwNmQyYmZmZWIwZmVjYTE0NTc1YjExY2ExOTM3NyBpc3N1ZTEwMjc2LXNub3dsZW9wYXJkCis4ODQ4NCBmNWU5YzE3Yjg1YWQwNmIxN2JkNWQzMWNmODgxNWIwZmQ1MzczMTBlIHB5M2sKKzg4NDg1IGM2MDYwZWY1YzQwNTE0NmNlZDIyYmVhNDhkZGIyNDg5ZTg5NWZmNGYgcmVsZWFzZTMyLW1haW50Cis4ODQ4NiA0MWM1MjgwMzMwZmQ2MjQyZDcxZTNmMGE5MjIxZTc3Mjg2MTE1MjJiIHB5M2sKKzg4NDg3IDQyOTVlMDk1YWQ0ZmI4ZTkyYmNmNjFlNjBhNTA2ZTlkZjQ0YTQxZGIgcmVsZWFzZTMyLW1haW50Cis4ODQ4OCBiNTU4Njk1OTg2ODNmYTliNWI3ZTA0OTEzMmE5MDM0ZDA3MzI2ZTdjIHJlbGVhc2UyNy1tYWludAorODg0OTAgNzg2NjA3MTRmMTdhMzU1N2Y4YjVlNDE3ZmFiYmEyMmM3NDNlZWRlMCBweTNrCis4ODQ5MSA2N2VjMjZjYzRiNGY3ZTMxZDNjM2NkNDg0YmZjNzI3Nzc1Y2Q3N2I5IHB5M2sKKzg4NDkyIGNlMjBhYzQxZTMxZmQ5NDA0MDRjZDA4YzZmODMyZDk4NjIwNmRkNDAgcHkzaworODg0OTMgZmVkNzY4YjcxMTM2MTgzZjZlMjQyNTY2ZjgwYWZhZWE0M2RiN2U4ZCBweTNrCis4ODQ5NCA3Zjg1ZmJjMTZjYWVkZDA4MzgyODJmODFjZGI5OGQ2NTc0MTBjZTNiIHB5M2sKKzg4NDk1IDQ3M2QyMzNhMDQ3ODFkZmYzNzkyNzM5Zjk3OGQzNDQwMDY4ZWE2N2EgcmVsZWFzZTMyLW1haW50Cis4ODQ5NiBhZTE4NmIzYjJjNTU2ZTFjYjMyYjNjMWU5ODY3YTBkNWZlMzgzMjM1IHB5M2sKKzg4NDk3IDE5ZGY0NzgzOWJjYWI1NWY3ZjYzMTkzNmExMTY4YjRkM2Q5MWNiY2UgcmVsZWFzZTMyLW1haW50Cis4ODQ5OCBlYTI2MGQzOTNjZGVlM2MzZTM2MTRmOTU3ZGViNzJkYmQ3N2ZiMDcwIHB5M2sKKzg4NDk5IGM5MGUwZTViMGQyNTQ3MTA1MWUyYWU2YzEzMmY0NTRmNzQzYmRhZmUgcmVsZWFzZTMyLW1haW50Cis4ODUwMCAzNzJiMmVmMGZmMzdiNmExYWExMmU0MzBjYjJkZWM5OTliNjQ3OTNjIHB5M2sKKzg4NTAxIDI0MzM5YmYwYzdlNjZhN2VhMWVjYTJhNTJjMjRmMjhmY2FkNGZlZjUgcHkzaworODg1MDIgMzA0MTFhZjM0ZWViZmFmYTc1NWZlMzM4ZmYzOGU1NDJkMzcwMmE1ZSByZWxlYXNlMzItbWFpbnQKKzg4NTAzIDVjZTQ5OTE4MGQyNDVmODBiNjZhMDU3ZThkZWNiMmEzMzVhZDFkYzUgcHkzaworODg1MDQgOTgwNjk3NzY5ODY2MjA1ZDA5ZDMwMDIwMWZmODUyNTc3MDQ4N2MzZiByZWxlYXNlMzItbWFpbnQKKzg4NTA1IDI0N2EyODEwOTMyYWE1NWMxMjVjNTYxMDY1YzI5Mjc0MzRjNDA5NTUgcHkzaworODg1MDYgYTc1MTVhOTRmZGI1YjUwNTg5YjIzZjEyMWY2MGVkNGE4ZGVmNmMxYyBweTNrCis4ODUwNyBlMmY5NmJkMjkyNTJlNjIxYmI5ZTE1NjNmYmJiMGVjYTgyMzFkZTUzIHB5M2sKKzg4NTA4IDY0ODJkZDFjMTFlZDFjMWFmYjk5ZDIzNGUyODMwZjM0YzlmMzQ3ODYgcHkzaworODg1MDkgMTZlZTQyZGUwZmFiOTJmMTkwYzhjY2EyNzRjOTRlZDQ2YjQ5MWQxZCByZWxlYXNlMzItbWFpbnQKKzg4NTEwIDJiNTRiZTY1NTE2OThhNzE4NTZhNTJlNWMxYWFkMTIyYzg4NDMzMzUgcmVsZWFzZTMyLW1haW50Cis4ODUxMSAzMjdhNWE3OGEyNTdjZmUyN2FjZDkwMWM2NWUwODRiYTcxOTYxOGQ5IGlzc3VlMTAyNzYtc25vd2xlb3BhcmQKKzg4NTEyIDJmOGVjNzdkMzJjZDQ3MThhYWM3NDE1NTUzYmY3NDVkNTgzMGFiYTMgcHkzaworODg1MTMgMDU4NmM2OTlkNDY3YTY0YzNlMjNkZDg3NmQyZDM2MmU2MzNkODkwZCBweTNrCis4ODUxNCA2Mjk5NDY2MjY3NmE3YmU3OTBlMGRjY2M2MzI4MThiNzg4ZjZiZjIxIHB5M2sKKzg4NTE1IDBlOWYzYmI2M2QwMGI3YWE1MGRkYmIxZTU3NjhhMDg4MWUyMmRkNmUgcmVsZWFzZTMyLW1haW50Cis4ODUxNiAyZjg5Y2JiZWMwYjQ4NGQxMWI5NjQxMDVkMGRjMzI0OTZmYWYyOGE4IHB5M2sKKzg4NTE3IDA4NzQ2OThiMTIwMWRmOWMyZWM5NWQwOWRlODEwODhkNWRjOTE4OTIgcHkzaworODg1MTggZWMzYzA2NzYxODU2ZGQ2MzBhOTVlMzk5MzE2OWFmYjc4OGVlN2VjMyBweTNrCis4ODUxOSBhYzBkOGUyMWE0N2RlYjU1ZWFjOTI3NDk0YTIzOGMxODYyZDcwMDQzIHJlbGVhc2UzMi1tYWludAorODg1MjAgNDRjYzllZjQzMTI3ZjhiNmQ5YjVmYTQxZmNmN2E2MTM5N2JhN2RiYSBweTNrCis4ODUyMSBmMmVkYWY2MmQ4MjNmYjY2ZmU3OWY0ZGJmMWJmZjczODMyMjFlMDgwIHB5M2sKKzg4NTIyIDdmOGRhMTBiZmNlZmNmMzdlZGNhNzlhOGJhZGU3OGZiZDIxYjJjZDAgcHkzaworODg1MjMgMTY1ZDAxNWEyYmFmMDdmMzM3ZDBmNTYyZDMyZGM1ZjJiYmYwYzYyOCByZWxlYXNlMzItbWFpbnQKKzg4NTI0IDAzZjdhZmJjMTYwODQ4ZDRlMTdiNjYwZDNkZWY1N2Q3Mjk0ZmJkMTkgcHkzaworODg1MjUgYzhjNTdlNzY2NDI4NTMxZGY2OGJhYTFjZjU3ZmI3NjZiZjcwOTI2ZCBweTNrCis4ODUyNiA3NDg2MWE0MmE2ZTZhMjg5YzNhYjViNzcxOWJmMGNmNGYwYjc1MDIzIHB5M2sKKzg4NTI3IGJhMWFlYjM2MjE4MjFmMjIyMTI5MTRmNTVkODcxOGQ2NTRjNTFmNmEgcmVsZWFzZTMyLW1haW50Cis4ODUyOCAwMzVlZmRhZjgyMjljNzljNDIwZDEwNDYxYjA2OGRlNGM3NjRjZmUwIHB5M2sKKzg4NTI5IDIzMjVmZTM2YWEzNDU2NjNlOTRlZmRmMjQ2MmQwNjE3ZmZlNGY3NjkgcHkzaworODg1MzAgNWE5ZDkwZDRmODllYjgwZjEzNDNiY2YzODViNzdlODUxNWZlYTg2ZCByZWxlYXNlMzItbWFpbnQKKzg4NTMxIGFiYTE2YTU2ODNkMzY4NWVlZTFkNjFhYTc0NTYzY2I2YzE4MGVjYWIgcHkzaworODg1MzIgMzIzODZmYTY3YTEyYTc2OTE3MzM3YTNjM2I4Mzg0Mjg2N2IxOTlkMyByZWxlYXNlMzItbWFpbnQKKzg4NTMzIGNmOTE3NmYyYTYyMDVhZGM0ZjM0MDRiNmU5MjY2ZDJhMmM3Y2FiODUgcmVsZWFzZTMyLW1haW50Cis4ODUzNCBhMWNmZTgxNWQ5N2FhZDBhZjQ5MmVlZjVlOGUyMjk2NTljNTEzMjI3IHB5M2sKKzg4NTM1IDVhMjk4YWZhY2I5NTU0NzU3YjdkMTIxYWU5MGMxNjdjZmZlMjU1NzIgcHkzaworODg1MzcgZGU1YzNhMzlhZGU3MjRkYjQyNjViMjhmMGY2MDBmYzM3ODViYTZjYyByZWxlYXNlMjctbWFpbnQKKzg4NTM4IGU4ZGZlNjAyZWZhMWNkZWE5OGZjNWNlMWE4OGE1NTBkNmU0ZGQ3YTcgcmVsZWFzZTMyLW1haW50Cis4ODUzOSA5ODYxZGMxMTgzMjIyZmUwYmI1OWJmYWVlYjEzMTMwOTEzMGIyY2RmIHB5M2sKKzg4NTQwIDhiYTc2NTMyODAzMDZhNDNmMDkyODZlNjkzOWJlYmJmYTJjZmM0YjAgcHkzaworODg1NDEgNzMyNmYwNjRkODNhZmVhNTIwY2E2NjNjOGYzM2ZiYWVkYzlhOTg1NCBweTNrCis4ODU0MiA2MDlmMmI4MjMzNTBlNDJjMjY2NGViYjAxOGNjODUyYTY4NzY5NDIwIHB5M2sKKzg4NTQzIGJmODkwNmNlMTA0YjUwM2RjOGIyODViNmIzNDFkMDNjZDM0M2YxZTEgcmVsZWFzZTMyLW1haW50Cis4ODU0NSBmZDZlYzVlMDg0YTJjN2U2ZTFkMzVlNjE0ZmQ3NjQ3NDkwMDg3NmRiIHJlbGVhc2UzMi1tYWludAorODg1NDYgZGI3ZWYzNGVlZGFmNWJlYjljZDkyNWE2M2EwYzRjMTczMjQ3ODRhMSBweTNrCis4ODU0NyAzZTRkOTU5ZjhlMTJlZGZlZTJlYTVmNWQwNzE3ZDhlZTUzMzI4ZDkzIHB5M2sKKzg4NTQ4IGZlYWIyMzBiZDBkZGU0MGE1OTlmMDQzZTdjYzUyYWRmOWE2YzlmNzQgcmVsZWFzZTMyLW1haW50Cis4ODU0OSBjYzNjM2E0MzgzOThkZGFmMDlhNzJmZTRiNDFjNjc5NzYxOTU4NmNhIHJlbGVhc2UzMi1tYWludAorODg1NTAgNTcwYzU5MzliYzAzZTcyMjhiOTIwNDA1N2Y2Zjk4ZWE3ZjYzYzU0NyByZWxlYXNlMjctbWFpbnQKKzg4NTUxIGNiY2IyNmE5ZDJiZGRkOTIwNGNiOTQwZjFmNjJmYjNjODQ2Y2EzMTUgcHkzaworODg1NTIgNDU3MzljYTYzZWIzNDViMDBhMWFiMTAxMDk4OTI3ZTMzNGUyZjY0NSByZWxlYXNlMzItbWFpbnQKKzg4NTUzIDIzNmM0ZGM2ZjBlN2Q3YmI4MjY0N2M2ZDgzM2VjZWJkMGViYTRhOGUgcHkzaworODg1NTQgYzhjMGU0Mjk0NGExNjk3YTY5OWMzYWQyYTk4MzA4YWQwMTEwZDY2ZCBweTNrCis4ODU1NSAzNjRlNGMxMDYyOTdlYWZhZTZmMjRhYmI5YzQxNzI1ZWJjNjNkNjFiIHJlbGVhc2UzMi1tYWludAorODg1NTYgYjI0NWQ2OWI0ZjBhZDRlN2FmODY5MGEzZjVkOTc1ZjJmNzNlNmNlMSByZWxlYXNlMzEtbWFpbnQKKzg4NTU3IGM3OTY2NWZiMjY3YWEzNzQ3MGNkMjM2NWQxNzJkOWM3ZGUwMmQ2MjIgcmVsZWFzZTMxLW1haW50Cis4ODU1OCA2MTRhOGM3Yjk1MjVhZDA2MjhhMmQ2NGJhMWUwMGQ3OTA5NTI0ZDE2IHB5M2sKKzg4NTU5IDkyNjI5Y2NhYWU3NjQ2ZTU0YjJjNTAzMjdkYWRjZGNlNWY0NmQ5YjggcmVsZWFzZTMxLW1haW50Cis4ODU2MCA1ODVkYjA2ODA2OWVkNjE2ZWVkNDRmMjUzMzc1NWU0OTFjMjEyYzVhIHJlbGVhc2UzMS1tYWludAorODg1NjEgZWZmMmU4ZjE1YmVkMDhmMjY1YTBhZDMwZWUzYWY1MmI4YTg1NTYwMSByZWxlYXNlMzEtbWFpbnQKKzg4NTYyIDViMzViYmJlMzJlNzBhYjY3MGRhYjQxOTM3YjQ5NDM2M2I4NTIyZmYgcmVsZWFzZTMxLW1haW50Cis4ODU2MyBlM2M2ODQxNWEzMmQxMDBjNmRlMzJjZmI5MjczNDk3ZTQ0NmJmZWIwIHJlbGVhc2UzMS1tYWludAorODg1NjQgZDM1NjY0OTUwNGY5ZjQ3NmE3MWU0YjFiNTkyMmFlMzI1YmU4MjRlYSByZWxlYXNlMjctbWFpbnQKKzg4NTY1IDhlZWVlOWQ2ZDMyYjkxMzFmYzIxZGQ3OWRiNTE4ZTYxNmRmZWRhYzMgcmVsZWFzZTI3LW1haW50Cis4ODU2NiBjN2M3NmNmYmRiNGUwMTllNzlmNjYyZTM2YjE2MTdjNTU1MTE5MzUzIHJlbGVhc2UyNy1tYWludAorODg1NjcgM2U1ZjJlMmE4NGFiZTRlOGQxMzRkYzdjNjU0YjcyZGFkOWVkNjY2ZCBweTNrCis4ODU2OCAyMjZmMDAxYTcwMWZmMzRhZmI1ZjBlODhlYzU1ODU4YTg1NWM5YTgwIHJlbGVhc2UyNy1tYWludAorODg1NjkgMzRhZTMxNjMxOGVmNDU0ZjljMjM5M2QyZTNiN2Q2MDBhZjdmMDM5MyByZWxlYXNlMjctbWFpbnQKKzg4NTcwIDcyMGEyZjQ0Y2JmMmNjYTBmNzRjM2QzZTU5YjU2ODNjZTlmNTAyZjQgcmVsZWFzZTI3LW1haW50Cis4ODU3MSA3OGRiM2QwYzZkYjcyYTFiNmQxOWYwOTgxNmI0NjY5YjI4ZThkMTZkIHJlbGVhc2UyNy1tYWludAorODg1NzIgYjM1NmI4NzFiZjY3ZDJiNTBmZTMwYmU4N2Q1MDYyODQzYWRlNmFiNSByZWxlYXNlMjctbWFpbnQKKzg4NTczIDAxYzk2YjM3NTg2ZGQ2N2M0OWRmZTdkNmM4MWE5YjExNDIzM2ZlMzUgcmVsZWFzZTMxLW1haW50Cis4ODU3NCAwMzUyNjc4MTI4MmFlMjU4YmI2ZDRkMTk1ZGQ3OGY1MzdiZWNlYjQzIHB5M2sKKzg4NTc1IDc0MGFiOTI3YmY4OThiZGNjYzZmMTRlOTUwZTNhMTRkZDc4YjkzYzQgcHkzaworODg1NzYgYjE3YTA2NDkyOWIwNGM4Zjc2YTNlNjkyYzAyYTBiOWE4NWIwZjFhMyBweTNrCis4ODU3NyA5ZmY3YmMzNjEwNjA0MzM4ZGVmYWQxYWEyZTNhM2JmNGE3ZjA3OGVmIHB5M2sKKzg4NTc4IGViNWVkM2RhNjg2MjM0YTAxNThiNGUxYjI0NWZkN2ViZWM5ZWI0OTggcHkzaworODg1NzkgMTc2MmQ3OWVhYjY1ZjVmYzNiNjI5N2I1NTkzNDc3NDI5M2RlMGI3MSBweTNrCis4ODU4MCA3ZmQ4MGM2MWRkYWEzZjgwZWIyNGFlNGYyNjEzMmZiYTBhZjc4YWJiIHB5M2sKKzg4NTgxIGQzZjkzYTEyZDZhOTE1ZWU0MjMwMTMwMDA5NmU3MWJhNzk2NGRmMGIgcHkzaworODg1ODIgNjM2YjJiNTUyMDczZDFmMGI4MmJlYmEwYTBlZDQ1N2ViNDcyNDZlOCByZWxlYXNlMzItbWFpbnQKKzg4NTgzIGZkNDAxMTBkNWQ4NzM3ZjhhZDdhMjI0OTIyYzkyMDlkMzRmNjdhN2IgcmVsZWFzZTI3LW1haW50Cis4ODU4NCBiZDI1MmMxMmRhMWQ4ODNjNDFkM2JiNjBhMjhmMWExYTNkMzg2M2FhIHB5M2sKKzg4NTg1IGY0YjFhNjU3OTU0MTdiNGJiZThlZDg5NDdiOWVjYjE4MmQyYWRhM2QgcHkzaworODg1ODYgYmU2YzM4ZDE4MTdiMzAyMGI3NjA0MDBhYTJmNWFlZjcxN2E5YzkyMyBweTNrCis4ODU4NyAzNmMxYjY4YjA1ODY1ZmI5ZmExODliNWI5ZTBkMWY4ODA4OGEzMmJkIHB5M2sKKzg4NTg4IDE5ZDA3ZmE0MjAwNGIxMjQxZWY2OTMxYThiMjFmZjgwM2JjZmZmMDkgcHkzaworODg1ODkgODQyZmVlNmFlMGU1MDMwODkwZWRmNWQ3MDkzYmU1Yjg5YTUzODZkZCBweTNrCis4ODYwMiA3YWI1NjliMThjOThmODg0YWJhNWU1Y2I1Mjc1MWZmNjNmYTlhYTc0IHB5M2sKKzg4NjAzIDhjNWI4MTE0ODRiYzJkMmVlMTM0NmEzZGE1NDY1MmNlODM0OTIwZTIgcHkzaworODg2MDQgMTJjYTQ3N2M0Mzc4YzE3NThkMDk5OTUxNmUwOWI0NDkxY2YwYWQ3MyBweTNrCis4ODYwNSBiN2U4NWZkMGQxYzkyZGI5ZmY5YjJkMDdlN2VhN2ZmMGZiYjYxOTg1IHJlbGVhc2UzMi1tYWludAorODg2MDYgMTg2MzZiODcxZDAxNzQyMjk5Y2ZhODBkMzk4NTlmZGMxZmJlOGQ3NiByZWxlYXNlMjctbWFpbnQKKzg4NjA3IDRiNjA1MjMyMGU5ODNhZDc5OGQ0MWQzMGM0OTZmZDljMTcyMTI0MDcgcHkzaworODg2MDggYTAzODM0Mjg3MmEzNGM1NGQ3MDkzYTc0NjgzOGMxZWFmYTY0MWMxNyBweTNrCis4ODYwOSBhOWViMDA4N2I2MDIxNDNiZDY1OWZiMWRhOTVhMDc3ZjI0MzgwYTNlIHB5M2sKKzg4NjEwIDc4NTkzM2JhNDhhYzZiMDQ3NjFlNTBmNDIwOWJjNjA4MDE0NmU0ZTIgcHkzaworODg2MTEgNjZlZDcxYTZlMjlhOGYxYmYzOWJiYTNmNjhiMjZmMGZhNjIwODQ0ZSByZWxlYXNlMzItbWFpbnQKKzg4NjEyIDY3NWI0OGM0Yzg4YTFiYjcxZThiYWI1MWVkZDA3MzhjNGYxZDE2MTcgcmVsZWFzZTI3LW1haW50Cis4ODYxMyA3MDZiZTZlZTk2NjhiNDY0NDA1YmRiNjViNmQ4MzU5NzFmZDVhOTMzIHB5M2sKKzg4NjE0IDZmMTJhYWRmZmM5ZmI5MWQzZTEzOWRhZWE2NTY1NzJiODNiNzNkYTIgcmVsZWFzZTMyLW1haW50Cis4ODYxNSA4YjNlZjcxOWJjZWQyZGFhOGY4NDBiMDE5MTQyYzZiM2U1MDQ5YzI2IHJlbGVhc2UzMS1tYWludAorODg2MTYgZGI0NmVkYTIwZmQwMjlmYjcwMTIwOTRjNGE0MDViNDEzMTdjOGU0YyBweTNrCis4ODYxNyBhNzQ5MjRlZWE4NjFhOWRlOTYxZjU3ZDNlZTdkMDY2M2YyMWQ5OTRiIHJlbGVhc2UyNy1tYWludAorODg2MTggZjcxYWNjNGIyMzQxMDJiNjc1NzliZWQyYzEzN2UwZjAyZTY3ZTY1YSBweTNrCis4ODYxOSA4NzQyNWRjMjNmMjZlNWRlZjFjZTJjNmEwMmUzYjAzM2VkMzAyMmYyIHB5M2sKKzg4NjIwIGQyMTkwMDUxMTY3NWNlYTQ5YTkwYzdhY2JiMDJhMWVlNWVmYzVkMzAgcHkzaworODg2MjEgMjc5NjFkY2E4MzMzMDJjMWYyMTVmMGM5NjU3ZjA4MmU5MjliYzEzNCBweTNrCis4ODYyMiAxN2QxYzZjZWRlN2VkM2JjY2UyNTIxNTNhZWRhYTgxYjI4NGQwNmM4IHB5M2sKKzg4NjIzIDU5ZjllZDEyZjE3YTRlZmVmNDMxODMwNDU4NWQxNjAyZWFhZDFjZmYgcmVsZWFzZTMyLW1haW50Cis4ODYyNCAzZDNiYTQ1MmY4YWRlYzUzM2NkMzI4NjFiYzdmNzk3YTMzMTgyOWIzIHB5M2sKKzg4NjI1IGFhYWY3YjU4ZTIwOTBjMmViNjUwODZjZWQzNDM0YjBhNmM3YzAwOTMgcHkzaworODg2MjYgMjY3ZGJkNmM5OGMzMTkzMDFlOTVjNzAxY2JjMWE4NzA2ZWEyNDUyMyBweTNrCis4ODYyNyA1M2E0NWZiNzA3ODZmYTNkY2VkMTMxZDc2ZjkzN2E0ZDRlNjhmZDQ1IHB5M2sKKzg4NjI4IDczYzVhYmI0MTI5NmQ2OTk3NGY2YjIzMWIxMzk5ZDAyYWIwYWRlOGUgcHkzaworODg2MjkgMmExOWYwMjViOTc0YWE1YmRlMzMzZDhjMThiMDUwZTQ5ZmMxYTFjOCBweTNrCis4ODYzMCBhODY3ZjAyZDhmOGQ3ZjZiMmQ5YzBlZTUxNzFlZTNkOWQwN2E0MTgxIHB5M2sKKzg4NjMxIDY1NGM5ZjEzY2ZlOWUxMDcyZjRmYmIxMjBhNTZkNTVjMDJjODNjZTEgcHkzaworODg2MzIgZjQ1NTVkMzRmMzQwYTMwOWIxMDJiMDMxMTYzNzg2N2ZiMWEwNDliYyBweTNrCis4ODYzMyBiMzIyNmFkOWEzOThkZjlkZmI2ZjU5MDcyMjczYjBjZjE3OWJhZTZhIHB5M2sKKzg4NjM0IGJhOGUzMDJiNjI2YzAwOGQxZDMxZjM5Zjg5NmVlYzdhY2ZhODE3MzIgcmVsZWFzZTMyLW1haW50Cis4ODYzNSBjNmQzMDNiOTljODJhYWYyOGE4Y2YxODFmNzkyZTJhNDRmNDE2YzRiIHBlcC0zMTUxCis4ODYzNiA0ZGQ5M2QwZjVkMWUwNzhkZTczMTQ3OWIyMzI5MmVhMzA1OWY3MTRmIHB5M2sKKzg4NjM3IDY4MDhkNWRiYTFlYzEzZjBmYTk4OGJhOTI1ZTgxZGZkNWRjYjQ2NGQgcGVwLTMxNTEKKzg4NjM4IDllYjIwMmU2MzIwZTRhZGM5N2VkYzljMjg5ZjY3MTkzZjA1ZGFiMmQgZW1wdHkKKzg4NjM5IDQwOTIyOTZhM2Q4ZGE1YjFmMWEwNjJmYWMyMzRhMTRhYjdhODUxYjUgcHkzaworODg2NDAgN2ZhODZhOTE5NTY3MmM4ZDg4ODRlYjc2MDQyZGNlMDMyMjViMzRhMSBweTNrCis4ODY0MSA2MGE1YjRiMjM1NWRlNWY3MzY2NjU3YzgzZmNiNWQyN2YxOTE0YzIzIHJlbGVhc2UzMS1tYWludAorODg2NDIgMGI1OTZmZjZkNDY5NzU3ZTI3MzIwMTcwYzNmNjhlMmExYTg5ZjFlZSByZWxlYXNlMjctbWFpbnQKKzg4NjQzIDczZGFmOTFjNjE1YzUzY2M3OGI1ZDQ5Yzg2NDBjNWFhZWMzYmJiOWUgcHkzaworODg2NDQgNzY0MWZlMDg5ZGExZGFkN2NhZjNmMDkzMjhkZDRhOTAwZDY3M2MzYSByZWxlYXNlMzItbWFpbnQKKzg4NjQ0IDkwN2Q1YjJlZDVhMTlmNWUyM2Q2MTVkMmIyMTRiZTIxYWEwZmIyOGIgcHkzaworODg2NDUgNTcxN2RkMjE2NmVlMDU4NDYyNTJmZWRlZjdkOGQ0OTg1NDUyMzM0OSByZWxlYXNlMzItbWFpbnQKKzg4NjQ1IDdlZWEyYTU3NGRmYzg0YzcwOTE4MDk0NTM4OGM4ZGRkNjMzYmI1YzEgcHkzaworODg2NDYgNzY0Yjk5ZWU4YzgxMDlmNDBjZjhmMDI2M2QxNjIzNmJkYmNmMWY1ZSByZWxlYXNlMzItbWFpbnQKKzg4NjQ2IGM4NmY5MDM0MGNkN2QyMjcyZDY3ZWIxYzkwZjQxNWUzZWFhYzc1M2EgcHkzaworODg2NDcgMDdhZmZhMDMzOGJhZDI5NDEwNTFhM2VjODY5Y2ViNGVmNGZmMjBlOSBweTNrCis4ODY0OCAzMWQ0YjA0Y2I1YjA1NjdkMmVkNGFmNzczZDE4OGY4NDVmY2FlZGUzIHJlbGVhc2UzMS1tYWludAorODg2NDkgOTdkMDUwYzMxNzJmOWUyZWRjODJiMjkyMjhkYmQ2ODkxZmNkMmJhMCByZWxlYXNlMjctbWFpbnQKKzg4NjUwIDI3NmRlOWIyOTMwMzBjMTA0ZGViN2M2NzVlM2FmNjk5NjlhOTg3NDIgcHkzaworODg2NTEgMzc0ZjBiMjJlNGE0YzViMWJlNDBkMDYxZDVmODQ2OWJhMWQ1NGIyZCByZWxlYXNlMzItbWFpbnQKKzg4NjUyIDA5MTI5YWFmYjk1MzZiZGNmYmZkN2E0NGMzYmMyZTFkMDI5NzJlMzUgcHkzaworODg2NTMgZmVkMmM2ZDQ5ZjE5ODAwNmU1NGIzNzkxYTQ5NWY3YmJhY2JlMDg5YSBweTNrCis4ODY1NCA5NzlkYThmMTM5ZGQzZDZlMjE5ZjBiYWJmZjQ3NmY5NWNjZTZhNTIxIHJlbGVhc2UzMi1tYWludAorODg2NTQgNmE4ZmEyZTliMTA1NWNhZDdjYzIxODM5OTAzZjlmMzk4M2MzNTc4MCBweTNrCis4ODY1NSBjZDE0NzgyODg2Y2FhMjg1MDNiYjM1NmY1YjNjMzdhNDFlMjExYjQxIHJlbGVhc2UzMi1tYWludAorODg2NTYgNzIyYWVlYjU3ZWFiYmRmZjliZjUxYjRmODQzZWExZmM0MGZlZDAxOSBweTNrCis4ODY1OCAxMDI1NmJkNjg3ODc5MTVmOGYzZmZkNTk0NjExZDY3MDA2OTAyN2UyIHB5M2sKKzg4NjU5IDU5Zjc0YWFkOTcwMzFmMTlkZWFkY2U4Zjg2OTA0NWFkZmQ5ODQ3OTAgcmVsZWFzZTMyLW1haW50Cis4ODY2MCBjNzdiMjVhZGZlYzIzYzQxNDFhNTFjZGUxYTg1OTM5NWQ5MzEwYzE1IHB5M2sKKzg4NjYyIGE1ODEyOWNkZDM2NTczMjRhMmVmMDg4NGQ0OWZkYzRkYmZiNGM1MTYgcmVsZWFzZTI3LW1haW50Cis4ODY2MyA4Njg3YTFiNzM1MTZjYzUyMDMxYzc3MDk4MmQ5MmQ5MmZiZTRkYmRjIHB5M2sKKzg4NjY0IDE5MDljMTJlZjA2YzdjMWMyZTIyNDI2MjljM2I4MmQxZDc3NDQ4NzUgcHkzaworODg2NjUgNmNlYzA5MTAyMGEyYzk5NjlhYzhhYTI5N2RhZjJmMzZkZWQ0OWZkNCByZWxlYXNlMzItbWFpbnQKKzg4NjY2IDc0MmQ3M2E5OTQyNTc0YjUxMzBjOTRkZTFmM2EyODZjMWUyMjcwY2IgcmVsZWFzZTI3LW1haW50Cis4ODY2OCA2NTBkMTQ4MjBiZDhjNjZkZjRhMGJhYTVkMWRkYWUzZDQwODc1YjBmIHB5M2sKKzg4NjY5IGE5NTY1OTI1YmE3MDYxZDYzNzE4NDA2NGQ3OGZiNTJmOGRjODJiMjMgcmVsZWFzZTI3LW1haW50Cis4ODY3MCBhNWI1ZmRhNjY4OWM2NTNkODVkNmY0N2U3ZTBhNDZkNGUyMWQxYjNkIHJlbGVhc2UzMi1tYWludAorODg2NzEgMmYwN2QzNzVjZTZlZWNhYjQ3MWU1ZDhlYmI4ODkxMDZmMTY5ZGExMCBweTNrCis4ODY3MiA0NTY1MGViMzQ2ODUxMTdhN2I4NmY3NTZmYjEyNmRjYjJmM2ZkNTExIHJlbGVhc2UzMi1tYWludAorODg2NzMgMjE0MzZlNDgxNjFmYzMxNzAyMDEwMDFjY2FiYTdhNTViMzlkYjU3NSByZWxlYXNlMjctbWFpbnQKKzg4Njc0IGRjODYyNmUwODU3N2Q2YjFmZDEyZTQwZmQ1OWM5ZTUyMzAwOGQ2YTMgcmVsZWFzZTI3LW1haW50Cis4ODY3NSA3MjhmYmMyNjM1OWMxMDdmZjc1NWNlNWJiNmI5YjNiMDgwZjFiZWYxIHBlcC0zMTUxCis4ODY3OSBjYmQwNjA4MTAzZjYxMDZlZmExZDY1MjNkOWUwZWFiOTk0ZGNhMTRmIHB5M2sKKzg4NjgwIGI3ZDYyYmMwMTk5ODg5MjEyYmRjZDQwZDVkMDRhM2NhOTg4ZDM0NWYgcHkzaworODg2ODIgMmRkY2E1NWUwOThkZGEyYjFhNjg1NmEzNTllMTlmNzhkOTg1YzY4OCBweTNrCis4ODY4MyBiYmRkYWM1YzE4ZDM5ODBlNzY1OGEwOWJkNGZlODU0MTc5OGMzNTNjIHB5M2sKKzg4Njg0IDdjNmIyMWRiMDBlM2UzZjE1NWQyYjhhOTFkMTJjZDI4NDgyMDg3NGUgcHkzaworODg2ODUgYTJkNjExMTdjMmQyNjQ5ZjkwOTBmNjg5YWE4NWM1NTc1YTZkNzMzOSBweTNrCis4ODY4NiAxMGI4MzhmNmU1YTFhOTRiYTczYTFkM2M2NWM5NTBjZGQ4ZDVkYjMzIHB5M2sKKzg4Njg3IGZkZjMyZmEwZjQ0MGU3MWU1MGQwZmZjMzUyMjlkNmExNGM3ZDJhNDIgcmVsZWFzZTMyLW1haW50Cis4ODY4OCBiMjk0ZmY3NTczMzY1Y2RkY2NhOGEyN2MxNjQ5ZmQxOGQxOTk0NDhjIHBlcC0zODIKKzg4Njg5IGY4YTc3ZmQ2NzVmNWEzY2UwNTFlZTQwNGM3YjU2ZGIxYzcyZWJmMWQgcmVsZWFzZTMxLW1haW50Cis4ODY5MCA0NDczNGQzNzUzOTMxNTQ4YWM0YThlZDkyODJiMDM0OWI4YjYwMTUyIHJlbGVhc2UzMS1tYWludAorODg2OTEgMjYxMWNiZDc1YzRmOTcxY2Y2ZmJmNmIzMzcyNzk5NjY3YjU5NTAzMCBweTNrCis4ODY5MiBhMzY2MDk2Yjk1YWQyYTZiNWY4YTg2YjRhOTA4ZDIyODcxYjhjZGM5IHJlbGVhc2UzMi1tYWludAorODg2OTMgMTc5NzMwMGY4N2I5OTg2NWI2NjU4MWNlZGFhODQ3NmQyNDU4NzUxZiByZWxlYXNlMjctbWFpbnQKKzg4Njk0IDlhY2M5MDIxZjExZTMwMjE4MzZjODljZTgyNTgzYmJmOGVmOTdhOTMgcGVwLTM4MgorODg2OTYgOGUwN2ZjOTQ4NjgwNjg0OTA1ZjI2ZWNhNGU2MmNiOGZiZGFlZDY0OCBweTNrCis4ODY5NyA5YjcyNTQ2NzBjZTlkYTAwMjc1M2NhMDBjMjQ4ZWFiZjVkZGYzZmFlIHB5M2sKKzg4Njk4IDcyZjMwZjhlZjMzMWU5YjVmNTE0MGU4ZjMxZWE3ZGNiZWI5MDAwYTIgcmVsZWFzZTMyLW1haW50Cis4ODY5OSBiODJjM2U1OTNkYjY1NTVmYjgxNjU4MTZiYzdhMjljYTFiMjI3YzQ2IHB5M2sKKzg4NzAwIDFkMTk4NTE4Y2I4NzVjMzllNTNhZWUzYWY3ZDU0YTY2ZmMxMmQzZjMgcHkzaworODg3MDEgNWRjMzQ5M2UwN2E5ZjJhODMwZTc5YWIzMDgxYzA2NDkwMzBjM2QxNiByZWxlYXNlMzItbWFpbnQKKzg4NzAyIGRhOTU0NDBkOTJiMzZiMDA4MjE4NzExMTVkMzNiMGM1MTA4YzExZjMgcHkzaworODg3MDMgNzNhNDk5ZjBlYWYxYjBhZWYyODQ0YTYxYTE5YzEzNDA5OTdmOGQ3YyBweTNrCis4ODcwNCA4N2RlMDE3ZGE0YmY3Y2IzZDYwMjc2NTE3ZDIxODMwYjNhZTllMGQ3IHB5M2sKKzg4NzA1IDcyOTBiOGYzYzlmYjk5ODQ2NjlkMDgwN2U5ODRiZWM3MTM1MTNmMDMgcHkzaworODg3MDYgMzNlNzY4ZDIzYjE2YTU3MTBlNGY1MjJhNjIwOGU5MmJjYzJkM2NlOSBweTNrCis4ODcwNyA2ZjExN2QyN2FkMWM1ZTYzMjM5ZGQ1MmMzMjU2MmQ4MjQyNWFmODY3IHB5M2sKKzg4NzA4IGM3YTkzNjM2MjI4MTlmM2VhYjc3MmM3ODA0MzRiMjM0NzFmZTBiMjUgcHkzaworODg3MDkgMzc4ZWUzMjhiNjBlMGIxNjM2YWEyNDc1N2JlYTFhMTVmOTI4MWFlNCBweTNrCis4ODcxMCBhMWRiZTUzZjM3OTg0NWZmNjM2NzA5YjA4YWI0NTYzMzdjODY1YzkzIHB5M2sKKzg4NzExIDRkYWM0NzY5ZWEyNDhhYWNjODMwNzdlNTdhNjRkMmMxMzQxYzIzYWEgcHkzaworODg3MTIgNmIxMmQyYjY4ZjI1MzMzZGQ1YWZmZTZlM2U4ZjQ2YjU1Y2Q0MjQyNCBweTNrCis4ODcxNyAwZGM2YTkwZGVlMjE5MTIyYWJmNTY2YWM4NThhZWE2NWM0MzAwODJmIHB5M2sKKzg4NzE4IDZjOGVjNWY4YjllNTFiY2UxNTRlMTE4ZWZhOTFmNzFiMDA5NmViZDAgcmVsZWFzZTMyLW1haW50Cis4ODcxOSBhNGU3ZmJlZDc1M2M3MzFhNTUyNjdjZTcxMDA5YTgwZDgyNzA0ZDRhIHB5M2sKKzg4NzIwIDczOGZlZWM5Y2VkMDFmYzMxMzg5MmRiM2IxMDU4OWZiNjAyNWI4N2EgcHkzaworODg3MjEgMjBhNWEwOGMzYjZjYTlkOGE0MDg2OTdiOTU3NjcwZDVlM2Q2MjljMCBweTNrCis4ODcyMiAyMDhhNTI5MGZkMzhlYzhjNGZlMTM4ZTc5ZTgyM2QwMTg3NDNlY2M2IHB5M2sKKzg4NzIzIGExNzI3MDYzYTdkZmViMGQyYTYzYTZiMWEyOWY0NmZlYzMyYjA1ODIgcmVsZWFzZTMyLW1haW50Cis4ODcyNCBmNTM5OGZiODE0Mjg5YjI0YThiMDVmYWVkMzQ0ZjdmOTBiNzc1NmQ3IHB5M2sKKzg4NzI1IDJmY2U5Yzc0MmNkZWFiNGRlZDExMTUyZWNiZGQ5MDY3ZTEwZWYwZTIgcmVsZWFzZTMxLW1haW50Cis4ODcyNiBkZGMwYmI2YTdiN2M3MmM3YWJiN2IxYzQ4MGRlYThmZDkxOGRiOWNlIHB5M2sKKzg4NzI3IDU4Y2IwZmUwNmRhYTM2NTE5NTM1NTFiZTViMTFiMTQ1MDE1NDdiMDAgcmVsZWFzZTMyLW1haW50Cis4ODcyOCA5NjVhYjk5MTFmY2QwZWYxNGFmZTBkYTlmODM1NTVjNjg5NzhlN2QwIHJlbGVhc2UyNy1tYWludAorODg3MjkgZjIwNDZkZmNhNzMxMTM2NzJkNTliNTA0NmZmODZiMGIwM2I0MWQwOSBweTNrCis4ODczMCBiNTI4MWY1ZmFkZTRkZDU2N2YxZjFkNTZmYWM5Y2U3ZDU3ZWI5Zjk5IHB5M2sKKzg4NzMxIGJjOWVmYmJlNjNjZjNlYjNhM2I3YzFiOTI0NmM1NDRmNmZhNWZlYjIgcmVsZWFzZTMyLW1haW50Cis4ODczMiBhODM4OTQ2OGU2NTEzN2M1MDY1ZjcwMmM4NDZiOWMwZTU2MWU1OTcyIHJlbGVhc2UyNy1tYWludAorODg3MzMgMDg4MDRhZWEwOGYxYzQ4YTE2Yzg0OWRhMTI3MDdlNTFhODdkODZkOSBweTNrCis4ODczNCAyZjVmNzU1YjI2ODc4Y2IwZmIzNWMwYzU5MDczYWFmMThlYmUzNjgzIHB5M2sKKzg4NzM1IGQyYjViZGU1YzFmYTRjOTRhNzQ3YzY3MDE2M2Q2YWM3MDFmOTYwOTYgcHkzaworODg3MzkgMWEwNWJjMzZhMzM0MGE0ZTZiNTk2MTUzODU0M2YxMGU5YmY4Y2Y3YSByZWxlYXNlMzItbWFpbnQKKzg4NzQwIDNmNzBjNTRkODZkODlhZGNmN2E3NDUyMDI1OTY3YThmNzBiZTI5Y2YgcHkzaworODg3NDEgZTJkZmM4ZjI0ZDNmNmVhODM4NjNkMmUzMmMwYzMwM2UwMjZhYWFmZCByZWxlYXNlMjctbWFpbnQKKzg4NzQyIDkzZmQxNjY3MDc3NGEyNzdiOTE3MzkwNDI2Yjg0YzI4YWI3OTZjN2EgcHkzaworODg3NDQgZTc0MjA5YjliMmY1Mjg4ZjkzN2Q2ZTM0MTFhMmNmMTBhODY0NmIwNCBweTNrCis4ODc0NSBlN2I2YWRiYTU3MWFhOTNhNDQxNDVmMGViZjdiNWJiYTJlMzg1OTMxIHB5M2sKKzg4NzQ2IDUwYjM4ZTRiMDIzMTI2N2I5MTc1NWM0ZDFhMDA3MjBmMzgxOTUyNjggcHkzaworODg3NDcgMGU3MTgwZTRjM2NkYjk0ODQxOGJjMTdiNTc0ZDFmZjY1MTQyOWY0ZCBweTNrCis4ODc1MiA4NWEzNGEzMTY5NjkyNzg1OTNkNDU0YTg2ZWY0M2EyZjc2YzJkNzZjIHB5M2stY2RlY2ltYWwKZGlmZiAtLWdpdCBhL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAgYi9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwCmluZGV4IGE2NjMwNWIuLjgxYTA3YzkgMTAwNjQ0Ci0tLSBhL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAKKysrIGIvTWlzYy92YWxncmluZC1weXRob24uc3VwcApAQCAtMTM3LDYgKzEzNywxOCBAQAogIyMjfQogIyMjCiAjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6QWRkcjgKKyMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCisjIyN9CisjIyMKKyMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpWYWx1ZTgKKyMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCisjIyN9CisjIyMKKyMjI3sKICMjIyAgIEFERFJFU1NfSU5fUkFOR0UvQ29uZGl0aW9uYWwganVtcCBvciBtb3ZlIGRlcGVuZHMgb24gdW5pbml0aWFsaXNlZCB2YWx1ZQogIyMjICAgTWVtY2hlY2s6Q29uZAogIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKQEAgLTE1NSw2ICsxNjcsMTggQEAKICMjI30KICMjIwogIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOkFkZHI4CisjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYworIyMjfQorIyMjCisjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6VmFsdWU4CisjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYworIyMjfQorIyMjCisjIyN7CiAjIyMgICBBRERSRVNTX0lOX1JBTkdFL0NvbmRpdGlvbmFsIGp1bXAgb3IgbW92ZSBkZXBlbmRzIG9uIHVuaW5pdGlhbGlzZWQgdmFsdWUKICMjIyAgIE1lbWNoZWNrOkNvbmQKICMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCkBAIC0yODYsNiArMzEwLDM4IEBACiAjIyMgICBmdW46TUQ1X1VwZGF0ZQogIyMjfQogCisjIEZlZG9yYSdzIHBhY2thZ2UgIm9wZW5zc2wtMS4wLjEtMC4xLmJldGEyLmZjMTcueDg2XzY0IiBvbiB4ODZfNjQKKyMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNDE3MQoreworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDEKKyAgIE1lbWNoZWNrOkNvbmQKKyAgIGZ1bjpiY21wCisgICBmdW46Zmlwc19nZXRfZW50cm9weQorICAgZnVuOkZJUFNfZHJiZ19pbnN0YW50aWF0ZQorICAgZnVuOlJBTkRfaW5pdF9maXBzCisgICBmdW46T1BFTlNTTF9pbml0X2xpYnJhcnkKKyAgIGZ1bjpTU0xfbGlicmFyeV9pbml0CisgICBmdW46aW5pdF9oYXNobGliCit9CisKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAyCisgICBNZW1jaGVjazpDb25kCisgICBmdW46Zmlwc19nZXRfZW50cm9weQorICAgZnVuOkZJUFNfZHJiZ19pbnN0YW50aWF0ZQorICAgZnVuOlJBTkRfaW5pdF9maXBzCisgICBmdW46T1BFTlNTTF9pbml0X2xpYnJhcnkKKyAgIGZ1bjpTU0xfbGlicmFyeV9pbml0CisgICBmdW46aW5pdF9oYXNobGliCit9CisKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAzCisgICBNZW1jaGVjazpWYWx1ZTgKKyAgIGZ1bjpfeDg2XzY0X0FFU19lbmNyeXB0X2NvbXBhY3QKKyAgIGZ1bjpBRVNfZW5jcnlwdAorfQorCiAjCiAjIEFsbCBvZiB0aGVzZSBwcm9ibGVtcyBjb21lIGZyb20gdXNpbmcgdGVzdF9zb2NrZXRfc3NsCiAjCkBAIC0zODgsNCArNDQ0LDI4IEBACiAgICBmdW46U0hBMV9VcGRhdGUKIH0KIAoreworICAgdGVzdF9idWZmZXJfbm9uX2RlYnVnCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKK30KKworeworICAgdGVzdF9idWZmZXJfbm9uX2RlYnVnCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZV9GU0NvbnZlcnRlcgorfQorCisjIEFkZGl0aW9uYWwgc3VwcHJlc3Npb25zIGZvciB0aGUgdW5pZmllZCBkZWNpbWFsIHRlc3RzOgoreworICAgdGVzdF9kZWNpbWFsCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKK30KKworeworICAgdGVzdF9kZWNpbWFsMgorICAgTWVtY2hlY2s6QWRkcjQKKyAgIGZ1bjpQeVVuaWNvZGVfRlNDb252ZXJ0ZXIKK30KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IDkyNjlkZGYuLmY0NWRlNWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTEyNyw2ICsxMjcsOSBAQAogIyBidWlsdGluIG1vZHVsZSBhdm9pZHMgc29tZSBib290c3RyYXBwaW5nIHByb2JsZW1zIGFuZCByZWR1Y2VzIG92ZXJoZWFkLgogemlwaW1wb3J0IHppcGltcG9ydC5jCiAKKyMgZmF1bHRoYW5kbGVyIG1vZHVsZQorZmF1bHRoYW5kbGVyIGZhdWx0aGFuZGxlci5jCisKICMgVGhlIHJlc3Qgb2YgdGhlIG1vZHVsZXMgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYWxsIGNvbW1lbnRlZCBvdXQgYnkKICMgZGVmYXVsdC4gIFVzdWFsbHkgdGhleSBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGJ1aWx0IGFzIGR5bmFtaWNhbGx5CiAjIGxvYWRlZCBtb2R1bGVzIGJ5IHRoZSBuZXcgc2V0dXAucHkgc2NyaXB0IGFkZGVkIGluIFB5dGhvbiAyLjEuICBJZgpAQCAtMjA3LDcgKzIxMCw3IEBACiAjCiAjIEZpcnN0LCBsb29rIGF0IFNldHVwLmNvbmZpZzsgY29uZmlndXJlIG1heSBoYXZlIHNldCB0aGlzIGZvciB5b3UuCiAKLSNjcnlwdCBjcnlwdG1vZHVsZS5jICMgLWxjcnlwdAkjIGNyeXB0KDMpOyBuZWVkcyAtbGNyeXB0IG9uIHNvbWUgc3lzdGVtcworI19jcnlwdCBfY3J5cHRtb2R1bGUuYyAjIC1sY3J5cHQJIyBjcnlwdCgzKTsgbmVlZHMgLWxjcnlwdCBvbiBzb21lIHN5c3RlbXMKIAogCiAjIFNvbWUgbW9yZSBVTklYIGRlcGVuZGVudCBtb2R1bGVzIC0tIG9mZiBieSBkZWZhdWx0LCBzaW5jZSB0aGVzZQpAQCAtMjMxLDE1ICsyMzQsMTQgQEAKICMgc3lzdGVtIGRvZXMgbm90IGhhdmUgdGhlIE9wZW5TU0wgbGlicyBjb250YWluaW5nIGFuIG9wdGltaXplZCB2ZXJzaW9uLgogCiAjIFRoZSBfbWQ1IG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUKLSMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuICBUaGUgbmVjZXNzYXJ5IGZpbGVzCi0jIG1kNS5jIGFuZCBtZDUuaCBhcmUgaW5jbHVkZWQgaGVyZS4KKyMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuCiAKLSNfbWQ1IG1kNW1vZHVsZS5jIG1kNS5jCisjX21kNSBtZDVtb2R1bGUuYwogCiAKICMgVGhlIF9zaGEgbW9kdWxlIGltcGxlbWVudHMgdGhlIFNIQSBjaGVja3N1bSBhbGdvcml0aG1zLgogIyAoTklTVCdzIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuKQotI19zaGEgc2hhbW9kdWxlLmMKKyNfc2hhMSBzaGExbW9kdWxlLmMKICNfc2hhMjU2IHNoYTI1Nm1vZHVsZS5jCiAjX3NoYTUxMiBzaGE1MTJtb2R1bGUuYwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCmluZGV4IGVhZTI5NzguLmZhY2E4Y2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCkBAIC05MCw3ICs5MCw5IEBACiAgICAgICAgIGlmIChQeUxpc3RfSW5zZXJ0KGxpc3QsIGluZGV4LCBpdGVtKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxpc3QsICJpbnNlcnQiLCAibk8iLCBpbmRleCwgaXRlbSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGluc2VydCk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChsaXN0LCAmUHlJZF9pbnNlcnQsICJuTyIsIGluZGV4LCBpdGVtKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtMTkzLDcgKzE5NSw4IEBACiAgICAgICAgIGlmIChQeUxpc3RfSW5zZXJ0KGxpc3QsIGluZGV4LCBpdGVtKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxpc3QsICJpbnNlcnQiLCAibk8iLCBpbmRleCwgaXRlbSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGluc2VydCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobGlzdCwgJlB5SWRfaW5zZXJ0LCAibk8iLCBpbmRleCwgaXRlbSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQwN2RmOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC0wLDAgKzEsNTkwIEBACisvKiBfYnoyIC0gTG93LWxldmVsIFB5dGhvbiBpbnRlcmZhY2UgdG8gbGliYnppcDIuICovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGJ6bGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjaWZuZGVmIEJaX0NPTkZJR19FUlJPUgorI2RlZmluZSBCWjJfYnpDb21wcmVzcyBiekNvbXByZXNzCisjZGVmaW5lIEJaMl9iekNvbXByZXNzSW5pdCBiekNvbXByZXNzSW5pdAorI2RlZmluZSBCWjJfYnpDb21wcmVzc0VuZCBiekNvbXByZXNzRW5kCisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3MgYnpEZWNvbXByZXNzCisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3NJbml0IGJ6RGVjb21wcmVzc0luaXQKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0VuZCBiekRlY29tcHJlc3NFbmQKKyNlbmRpZiAgLyogISBCWl9DT05GSUdfRVJST1IgKi8KKworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCisgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMgXAorICAgIH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKChvYmopLT5sb2NrKQorI2Vsc2UKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikKKyNlbmRpZgorCisjZGVmaW5lIE1JTihYLCBZKSAoKChYKSA8IChZKSkgPyAoWCkgOiAoWSkpCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBiel9zdHJlYW0gYnpzOworICAgIGludCBmbHVzaGVkOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQloyQ29tcHJlc3NvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBiel9zdHJlYW0gYnpzOworICAgIGNoYXIgZW9mOyAgICAgICAgICAgLyogVF9CT09MIGV4cGVjdHMgYSBjaGFyICovCisgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQloyRGVjb21wcmVzc29yOworCisKKy8qIEhlbHBlciBmdW5jdGlvbnMuICovCisKK3N0YXRpYyBpbnQKK2NhdGNoX2J6Ml9lcnJvcihpbnQgYnplcnJvcikKK3sKKyAgICBzd2l0Y2goYnplcnJvcikgeworICAgICAgICBjYXNlIEJaX09LOgorICAgICAgICBjYXNlIEJaX1JVTl9PSzoKKyAgICAgICAgY2FzZSBCWl9GTFVTSF9PSzoKKyAgICAgICAgY2FzZSBCWl9GSU5JU0hfT0s6CisgICAgICAgIGNhc2UgQlpfU1RSRUFNX0VORDoKKyAgICAgICAgICAgIHJldHVybiAwOworCisjaWZkZWYgQlpfQ09ORklHX0VSUk9SCisgICAgICAgIGNhc2UgQlpfQ09ORklHX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWJiemlwMiB3YXMgbm90IGNvbXBpbGVkIGNvcnJlY3RseSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICAgICAgY2FzZSBCWl9QQVJBTV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJvciAtICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwYXJhbWV0ZXJzIHBhc3NlZCB0byBsaWJiemlwMiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfTUVNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1I6CisgICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUl9NQUdJQzoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiSW52YWxpZCBkYXRhIHN0cmVhbSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfSU9fRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgIlVua25vd24gSS9PIGVycm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgbG9naWNhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9TRVFVRU5DRV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIGVycm9yIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHNlcXVlbmNlIG9mIGNvbW1hbmRzIHNlbnQgdG8gbGliYnppcDIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBlcnJvciBmcm9tIGxpYmJ6aXAyOiAlZCIsIGJ6ZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjaWYgQlVGU0laIDwgODE5MgorI2RlZmluZSBTTUFMTENIVU5LIDgxOTIKKyNlbHNlCisjZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZW5kaWYKKworc3RhdGljIGludAorZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCit7CisgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAorICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKKyAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1Ziwgc2l6ZSArIChzaXplID4+IDMpICsgNik7Cit9CisKKworLyogQloyQ29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKmMsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4sIGludCBhY3Rpb24pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjLT5ienMubmV4dF9pbiA9IGRhdGE7CisgICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KKyAgICAgICBEbyBjb21wcmVzc2lvbiBpbiBjaHVua3Mgb2Ygbm8gbW9yZSB0aGFuIFVJTlRfTUFYIGJ5dGVzIGVhY2guICovCisgICAgYy0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgIGxlbiAtPSBjLT5ienMuYXZhaWxfaW47CisgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBjLT5ienMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgY2hhciAqdGhpc19vdXQ7CisgICAgICAgIGludCBiemVycm9yOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgdGhpc19vdXQgPSBjLT5ienMubmV4dF9vdXQ7CisgICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcygmYy0+YnpzLCBhY3Rpb24pOworICAgICAgICBkYXRhX3NpemUgKz0gYy0+YnpzLm5leHRfb3V0IC0gdGhpc19vdXQ7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChjLT5ienMuYXZhaWxfaW4gPT0gMCAmJiBsZW4gPiAwKSB7CisgICAgICAgICAgICBjLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgICAgICAgICBsZW4gLT0gYy0+YnpzLmF2YWlsX2luOworICAgICAgICB9CisKKyAgICAgICAgLyogSW4gcmVndWxhciBjb21wcmVzc2lvbiBtb2RlLCBzdG9wIHdoZW4gaW5wdXQgZGF0YSBpcyBleGhhdXN0ZWQuCisgICAgICAgICAgIEluIGZsdXNoaW5nIG1vZGUsIHN0b3Agd2hlbiBhbGwgYnVmZmVyZWQgZGF0YSBoYXMgYmVlbiBmbHVzaGVkLiAqLworICAgICAgICBpZiAoKGFjdGlvbiA9PSBCWl9SVU4gJiYgYy0+YnpzLmF2YWlsX2luID09IDApIHx8CisgICAgICAgICAgICAoYWN0aW9uID09IEJaX0ZJTklTSCAmJiBiemVycm9yID09IEJaX1NUUkVBTV9FTkQpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGMtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKEJaMkNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19fLAorImNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLlxuIgorIlxuIgorIldoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlXG4iCisiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitCWjJDb21wcmVzc29yX2NvbXByZXNzKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBidWZmZXI7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5mbHVzaGVkKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXByZXNzb3IgaGFzIGJlZW4gZmx1c2hlZCIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbiwgQlpfUlVOKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeURvY19TVFJWQVIoQloyQ29tcHJlc3Nvcl9mbHVzaF9fZG9jX18sCisiZmx1c2goKSAtPiBieXRlc1xuIgorIlxuIgorIkZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4gUmV0dXJucyB0aGUgY29tcHJlc3NlZCBkYXRhIGxlZnRcbiIKKyJpbiBpbnRlcm5hbCBidWZmZXJzLlxuIgorIlxuIgorIlRoZSBjb21wcmVzc29yIG9iamVjdCBtYXkgbm90IGJlIHVzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitCWjJDb21wcmVzc29yX2ZsdXNoKEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiUmVwZWF0ZWQgY2FsbCB0byBmbHVzaCgpIik7CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYtPmZsdXNoZWQgPSAxOworICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBOVUxMLCAwLCBCWl9GSU5JU0gpOworICAgIH0KKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQloyQ29tcHJlc3Nvcl9pbml0KEJaMkNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKKyAgICBpbnQgYnplcnJvcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsICZjb21wcmVzc2xldmVsKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICghKDEgPD0gY29tcHJlc3NsZXZlbCAmJiBjb21wcmVzc2xldmVsIDw9IDkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgY29tcHJlc3NsZXZlbCwgMCwgMCk7CisgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0JaMkNvbXByZXNzb3JfZGVhbGxvYyhCWjJDb21wcmVzc29yICpzZWxmKQoreworICAgIEJaMl9iekNvbXByZXNzRW5kKCZzZWxmLT5ienMpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIEJaMkNvbXByZXNzb3JfbWV0aG9kc1tdID0geworICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLAorICAgICBCWjJDb21wcmVzc29yX2NvbXByZXNzX19kb2NfX30sCisgICAgeyJmbHVzaCIsICAgIChQeUNGdW5jdGlvbilCWjJDb21wcmVzc29yX2ZsdXNoLCAgICBNRVRIX05PQVJHUywKKyAgICAgQloyQ29tcHJlc3Nvcl9mbHVzaF9fZG9jX199LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKEJaMkNvbXByZXNzb3JfX2RvY19fLAorIkJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbD05KVxuIgorIlxuIgorIkNyZWF0ZSBhIGNvbXByZXNzb3Igb2JqZWN0IGZvciBjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiY29tcHJlc3NsZXZlbCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAxIGFuZCA5LlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSBjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBCWjJDb21wcmVzc29yX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9iejIuQloyQ29tcHJlc3NvciIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihCWjJDb21wcmVzc29yKSwgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQloyQ29tcHJlc3Nvcl9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBCWjJDb21wcmVzc29yX19kb2NfXywgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJaMkNvbXByZXNzb3JfbWV0aG9kcywgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJaMkNvbXByZXNzb3JfaW5pdCwgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIEJaMkRlY29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpkLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKQoreworICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBkLT5ienMubmV4dF9pbiA9IGRhdGE7CisgICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBsZW4gbWlnaHQgbm90IGZpdCBpbiBhdmFpbF9pbiAoYW4gdW5zaWduZWQgaW50KS4KKyAgICAgICBEbyBkZWNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMgZWFjaC4gKi8KKyAgICBkLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKKyAgICBkLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBjaGFyICp0aGlzX291dDsKKyAgICAgICAgaW50IGJ6ZXJyb3I7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICB0aGlzX291dCA9IGQtPmJ6cy5uZXh0X291dDsKKyAgICAgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3MoJmQtPmJ6cyk7CisgICAgICAgIGRhdGFfc2l6ZSArPSBkLT5ienMubmV4dF9vdXQgLSB0aGlzX291dDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKKyAgICAgICAgICAgIGQtPmVvZiA9IDE7CisgICAgICAgICAgICBsZW4gKz0gZC0+YnpzLmF2YWlsX2luOworICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsgLyogU2F2ZSBsZWZ0b3ZlciBpbnB1dCB0byB1bnVzZWRfZGF0YSAqLworICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKKyAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZC0+YnpzLm5leHRfaW4sIGxlbik7CisgICAgICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICAgICAgICAgIGxlbiAtPSBkLT5ienMuYXZhaWxfaW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfXywKKyJkZWNvbXByZXNzKGRhdGEpIC0+IGJ5dGVzXG4iCisiXG4iCisiUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYicnIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkXG4iCisicmFpc2VzIGFuIEVPRkVycm9yLiBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW1cbiIKKyJpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitCWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBidWZmZXI7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmRlY29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmVvZikKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiRW5kIG9mIHN0cmVhbSBhbHJlYWR5IHJlYWNoZWQiKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQloyRGVjb21wcmVzc29yX2luaXQoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgYnplcnJvcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkJaMkRlY29tcHJlc3NvciIpKQorICAgICAgICByZXR1cm4gLTE7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOworICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KCZzZWxmLT5ienMsIDAsIDApOworICAgIGlmIChjYXRjaF9iejJfZXJyb3IoYnplcnJvcikpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorQloyRGVjb21wcmVzc29yX2RlYWxsb2MoQloyRGVjb21wcmVzc29yICpzZWxmKQoreworICAgIEJaMl9iekRlY29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIEJaMkRlY29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEJaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX2VvZl9fZG9jX18sCisiVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4iKTsKKworUHlEb2NfU1RSVkFSKEJaMkRlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9fZG9jX18sCisiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKKworc3RhdGljIFB5TWVtYmVyRGVmIEJaMkRlY29tcHJlc3Nvcl9tZW1iZXJzW10gPSB7CisgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgZW9mKSwKKyAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl9lb2ZfX2RvY19ffSwKKyAgICB7InVudXNlZF9kYXRhIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgdW51c2VkX2RhdGEpLAorICAgICBSRUFET05MWSwgQloyRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX19kb2NfX30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX19kb2NfXywKKyJCWjJEZWNvbXByZXNzb3IoKVxuIgorIlxuIgorIkNyZWF0ZSBhIGRlY29tcHJlc3NvciBvYmplY3QgZm9yIGRlY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBkZWNvbXByZXNzaW9uLCB1c2UgdGhlIGRlY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgQloyRGVjb21wcmVzc29yX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9iejIuQloyRGVjb21wcmVzc29yIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihCWjJEZWNvbXByZXNzb3IpLCAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQloyRGVjb21wcmVzc29yX2RlYWxsb2MsLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBCWjJEZWNvbXByZXNzb3JfX2RvY19fLCAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIEJaMkRlY29tcHJlc3Nvcl9tZXRob2RzLCAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBCWjJEZWNvbXByZXNzb3JfbWVtYmVycywgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKUJaMkRlY29tcHJlc3Nvcl9pbml0LCAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIE1vZHVsZSBpbml0aWFsaXphdGlvbi4gKi8KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfYnoybW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2J6MiIsCisgICAgTlVMTCwKKyAgICAtMSwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2J6Mih2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyQ29tcHJlc3Nvcl9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2J6Mm1vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9JTkNSRUYoJkJaMkNvbXByZXNzb3JfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJDb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkNvbXByZXNzb3JfVHlwZSk7CisKKyAgICBQeV9JTkNSRUYoJkJaMkRlY29tcHJlc3Nvcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkRlY29tcHJlc3NvciIsCisgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZCWjJEZWNvbXByZXNzb3JfVHlwZSk7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKaW5kZXggZWI3NDBmOS4uNzgxOGY5YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKQEAgLTM4LDYgKzM4LDEwIEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKwogLyogLS0tIFJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIFB5RG9jX1NUUlZBUihyZWdpc3Rlcl9fZG9jX18sCkBAIC0xNjIsNyArMTY2LDYgQEAKIGVzY2FwZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdzaXplOwpAQCAtMjA1LDggKzIwOCw4IEBACiAgICAgICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgewogICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbYyAmIDB4Zl07CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbYyAmIDB4Zl07CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKnArKyA9IGM7CkBAIC0yMzYsOCArMjM5LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7Ci0gICAgICAgIHJldHVybiBjb2RlY190dXBsZShvYmosIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKG9iaiwgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKG9iaiwgKGNvbnN0IHZvaWQgKiopJmRhdGEsICZzaXplKSkKQEAgLTU4OCw3ICs1OTMsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZSh1bmljb2RlLCBwYnVmLmxlbik7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKIAogc3RhdGljIFB5T2JqZWN0ICoKIG1iY3NfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLApAQCAtNjEzLDcgKzYxOCwzMiBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCitzdGF0aWMgUHlPYmplY3QgKgorY29kZV9wYWdlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIHBidWY7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOworICAgIGludCBjb2RlX3BhZ2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Knx6aTpjb2RlX3BhZ2VfZGVjb2RlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvZGVfcGFnZSwgJnBidWYsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGNvbnN1bWVkID0gcGJ1Zi5sZW47CisKKyAgICBkZWNvZGVkID0gUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnVmLmJ1ZiwgcGJ1Zi5sZW4sIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOworfQorCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02NDUsMTcgKzY3NSwzMSBAQAogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpkYXRhOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgc2l6ZTsKKworICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2VuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmosICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBkYXRhID0gUHlVbmljb2RlX0FTX0RBVEEob2JqKTsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKG9iaik7Ci0gICAgICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGRhdGEsIHNpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICBQeV9VTklDT0RFICp1OworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICB1ID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUob2JqLCAmbGVuKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgc2l6ZSA9IGxlbiAqIHNpemVvZihQeV9VTklDT0RFKTsKKyAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIqKXUsIHNpemUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKG9iaiwgKGNvbnN0IHZvaWQgKiopJmRhdGEsICZzaXplKSkKQEAgLTY3NiwxNCArNzIwLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGNyhQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEY3KHN0ciwgMCwgMCwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03MDAsMTIgKzc0MiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc3RyLCAidXRmLTgiLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTczMCwxMyArNzcyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC03NTMsMTMgKzc5NCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTc3NiwxMyArODE2LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODA3LDEzICs4NDYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTgzMCwxMyArODY4LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODUzLDEzICs4OTAsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04NzYsMTEgKzkxMiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODk3LDEyICs5MzQsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTE5LDEzICs5NTYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05NDIsMTMgKzk3OCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUFTQ0lJKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05NjgsMTQgKzEwMDMsMTIgQEAKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTk4OSw3ICsxMDIyLDcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAobWFwKTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogCiBzdGF0aWMgUHlPYmplY3QgKgogbWJjc19lbmNvZGUoUHlPYmplY3QgKnNlbGYsCkBAIC0xMDAzLDE4ICsxMDM2LDQyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlTUJDUygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCitzdGF0aWMgUHlPYmplY3QgKgorY29kZV9wYWdlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN0ciwgKnY7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT3x6OmNvZGVfcGFnZV9lbmNvZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY29kZV9wYWdlLCAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOworICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gdjsKK30KKworI2VuZGlmIC8qIEhBVkVfTUJDUyAqLwogCiAvKiAtLS0gRXJyb3IgaGFuZGxlciByZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTEwMSw5ICsxMTU4LDExIEBACiAgICAgeyJjaGFybWFwX2RlY29kZSIsICAgICAgICAgIGNoYXJtYXBfZGVjb2RlLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImNoYXJtYXBfYnVpbGQiLCAgICAgICAgICAgY2hhcm1hcF9idWlsZCwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAgICAgICByZWFkYnVmZmVyX2VuY29kZSwgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAgICAgeyJtYmNzX2VuY29kZSIsICAgICAgICAgICAgIG1iY3NfZW5jb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7Im1iY3NfZGVjb2RlIiwgICAgICAgICAgICAgbWJjc19kZWNvZGUsICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY29kZV9wYWdlX2VuY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJjb2RlX3BhZ2VfZGVjb2RlIiwgICAgICAgIGNvZGVfcGFnZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgogICAgIHsicmVnaXN0ZXJfZXJyb3IiLCAgICAgICAgICByZWdpc3Rlcl9lcnJvciwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKICAgICAgICAgcmVnaXN0ZXJfZXJyb3JfX2RvY19ffSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCmluZGV4IDMxNGJhZmQuLmQ2ODk5YzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwpAQCAtNzY3LDggKzc2Nyw5IEBACiBkZXF1ZV9yZWR1Y2UoZGVxdWVvYmplY3QgKmRlcXVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0LCAqcmVzdWx0LCAqYXNsaXN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKWRlcXVlLCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXF1ZSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgYXNsaXN0ID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKQEAgLTgzMiw4ICs4MzMsNyBAQAogCiAgICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2sodiwgJmRlcXVlX3R5cGUpIHx8CiAgICAgICAgICFQeU9iamVjdF9UeXBlQ2hlY2sodywgJmRlcXVlX3R5cGUpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIC8qIFNob3J0Y3V0cyAqLwpAQCAtMTE0MSw2ICsxMTQxLDM1IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkZXF1ZWl0ZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3QgaSwgaW5kZXg9MDsKKyAgICBQeU9iamVjdCAqZGVxdWU7CisgICAgZGVxdWVpdGVyb2JqZWN0ICppdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfG4iLCAmZGVxdWVfdHlwZSwgJmRlcXVlLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQodHlwZSA9PSAmZGVxdWVpdGVyX3R5cGUpOworCisgICAgaXQgPSAoZGVxdWVpdGVyb2JqZWN0KilkZXF1ZV9pdGVyKChkZXF1ZW9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBjb25zdW1lIGl0ZW1zIGZyb20gdGhlIHF1ZXVlICovCisgICAgZm9yKGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWVpdGVyX25leHQoaXQpOworICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGl0LT5jb3VudGVyKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVpdGVyX2xlbihkZXF1ZWl0ZXJvYmplY3QgKml0KQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoaXQtPmNvdW50ZXIpOwpAQCAtMTE0OCwxNCArMTE3NywyMSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZWl0ZXJfcmVkdWNlKGRlcXVlaXRlcm9iamVjdCAqaXQpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShpdCksIGl0LT5kZXF1ZSwgaXQtPmRlcXVlLT5sZW4gLSBpdC0+Y291bnRlcik7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiBkZXF1ZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWRlcXVlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilkZXF1ZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImRlcXVlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTExODMsNiArMTIxOSwxNiBAQAogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZGVxdWVpdGVyX25leHQsICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBkZXF1ZWl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZGVxdWVpdGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLAogfTsKIApAQCAtMTIzNiw5ICsxMjgyLDM4IEBACiAgICAgcmV0dXJuIGl0ZW07CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZXJldml0ZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5X3NzaXplX3QgaSwgaW5kZXg9MDsKKyAgICBQeU9iamVjdCAqZGVxdWU7CisgICAgZGVxdWVpdGVyb2JqZWN0ICppdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfG4iLCAmZGVxdWVfdHlwZSwgJmRlcXVlLCAmaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQodHlwZSA9PSAmZGVxdWVyZXZpdGVyX3R5cGUpOworCisgICAgaXQgPSAoZGVxdWVpdGVyb2JqZWN0KilkZXF1ZV9yZXZpdGVyKChkZXF1ZW9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoIWl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBjb25zdW1lIGl0ZW1zIGZyb20gdGhlIHF1ZXVlICovCisgICAgZm9yKGk9MDsgaTxpbmRleDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gZGVxdWVyZXZpdGVyX25leHQoaXQpOworICAgICAgICBpZiAoaXRlbSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGl0LT5jb3VudGVyKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlcmV2aXRlcl90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJkZXF1ZV9yZXZlcnNlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoZGVxdWVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC0xMjY2LDYgKzEzNDEsMTYgQEAKICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRlcXVlcmV2aXRlcl9uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZGVxdWVpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGRlcXVlcmV2aXRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwKIH07CiAKQEAgLTEzNTQsMTMgKzE0MzksMTUgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKml0ZXI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisKICAgICBpZiAoZGQtPmRlZmF1bHRfZmFjdG9yeSA9PSBOVUxMIHx8IGRkLT5kZWZhdWx0X2ZhY3RvcnkgPT0gUHlfTm9uZSkKICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogICAgIGVsc2UKICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBkZC0+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopZGQsICJpdGVtcyIsICIoKSIpOworICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilkZCwgJlB5SWRfaXRlbXMsICIoKSIpOwogICAgIGlmIChpdGVtcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNTczLDEyICsxNjYwLDggQEAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobWFwcGluZykpIHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIG9sZHZhbCA9IFB5RGljdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBvbmUpID09IC0xKQpAQCAtMTU5NiwxMiArMTY3OSw4IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKLSAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIG9sZHZhbCA9IFB5T2JqZWN0X0dldEl0ZW0obWFwcGluZywga2V5KTsKICAgICAgICAgICAgIGlmIChvbGR2YWwgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCkBAIC0xNjc4LDkgKzE3NTcsMTMgQEAKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlaXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmZGVxdWVpdGVyX3R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlcXVlX2l0ZXJhdG9yIiwgKFB5T2JqZWN0ICopJmRlcXVlaXRlcl90eXBlKTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJmRlcXVlcmV2aXRlcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmZGVxdWVyZXZpdGVyX3R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAoUHlPYmplY3QgKikmZGVxdWVyZXZpdGVyX3R5cGUpOwogCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NyeXB0bW9kdWxlLmMgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIE1vZHVsZXMvY3J5cHRtb2R1bGUuYwpyZW5hbWUgdG8gTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwppbmRleCBkNWE0MmZmLi41MTAwNzg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NyeXB0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpAQCAtNDUsNyArNDUsNyBAQAogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGNyeXB0bW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLSAgICAiY3J5cHQiLAorICAgICJfY3J5cHQiLAogICAgIE5VTEwsCiAgICAgLTEsCiAgICAgY3J5cHRfbWV0aG9kcywKQEAgLTU2LDcgKzU2LDcgQEAKIH07CiAKIFB5TU9ESU5JVF9GVU5DCi1QeUluaXRfY3J5cHQodm9pZCkKK1B5SW5pdF9fY3J5cHQodm9pZCkKIHsKICAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZjcnlwdG1vZHVsZSk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IDg4ZDRmOTcuLmNjODdiYWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC0xNiw5ICsxNiwzOSBAQAogI2RlZmluZSBJU19CQVNFU1RSSU5HKG8pIFwKICAgICBQeVVuaWNvZGVfQ2hlY2sobykKIAotc3RhdGljIFB5T2JqZWN0ICplcnJvcl9vYmo7ICAgICAvKiBDU1YgZXhjZXB0aW9uICovCi1zdGF0aWMgUHlPYmplY3QgKmRpYWxlY3RzOyAgICAgIC8qIERpYWxlY3QgcmVnaXN0cnkgKi8KLXN0YXRpYyBsb25nIGZpZWxkX2xpbWl0ID0gMTI4ICogMTAyNDsgICAvKiBtYXggcGFyc2VkIGZpZWxkIHNpemUgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqZXJyb3Jfb2JqOyAgIC8qIENTViBleGNlcHRpb24gKi8KKyAgICBQeU9iamVjdCAqZGlhbGVjdHM7ICAgLyogRGlhbGVjdCByZWdpc3RyeSAqLworICAgIGxvbmcgZmllbGRfbGltaXQ7ICAgLyogbWF4IHBhcnNlZCBmaWVsZCBzaXplICovCit9IF9jc3ZzdGF0ZTsKKworI2RlZmluZSBfY3N2c3RhdGUobykgKChfY3N2c3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShvKSkKKworc3RhdGljIGludAorX2Nzdl9jbGVhcihQeU9iamVjdCAqbSkKK3sKKyAgICBQeV9DTEVBUihfY3N2c3RhdGUobSktPmVycm9yX29iaik7CisgICAgUHlfQ0xFQVIoX2NzdnN0YXRlKG0pLT5kaWFsZWN0cyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19jc3ZfdHJhdmVyc2UoUHlPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKF9jc3ZzdGF0ZShtKS0+ZXJyb3Jfb2JqKTsKKyAgICBQeV9WSVNJVChfY3N2c3RhdGUobSktPmRpYWxlY3RzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK19jc3ZfZnJlZSh2b2lkICptKQoreworICAgX2Nzdl9jbGVhcigoUHlPYmplY3QgKiltKTsKK30KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfY3N2bW9kdWxlOworCisjZGVmaW5lIF9jc3ZzdGF0ZV9nbG9iYWwgKChfY3N2c3RhdGUgKilQeU1vZHVsZV9HZXRTdGF0ZShQeVN0YXRlX0ZpbmRNb2R1bGUoJl9jc3Ztb2R1bGUpKSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTVEFSVF9SRUNPUkQsIFNUQVJUX0ZJRUxELCBFU0NBUEVEX0NIQVIsIElOX0ZJRUxELApAQCAtNDcsOSArNzcsOSBAQAogICAgIFB5T2JqZWN0X0hFQUQKIAogICAgIGludCBkb3VibGVxdW90ZTsgICAgICAgICAgICAvKiBpcyAiIHJlcHJlc2VudGVkIGJ5ICIiPyAqLwotICAgIFB5X1VOSUNPREUgZGVsaW1pdGVyOyAgICAgICAvKiBmaWVsZCBzZXBhcmF0b3IgKi8KLSAgICBQeV9VTklDT0RFIHF1b3RlY2hhcjsgICAgICAgLyogcXVvdGUgY2hhcmFjdGVyICovCi0gICAgUHlfVU5JQ09ERSBlc2NhcGVjaGFyOyAgICAgIC8qIGVzY2FwZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0IGRlbGltaXRlcjsgICAgICAgLyogZmllbGQgc2VwYXJhdG9yICovCisgICAgUHlfVUNTNCBxdW90ZWNoYXI7ICAgICAgIC8qIHF1b3RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgZXNjYXBlY2hhcjsgICAgICAvKiBlc2NhcGUgY2hhcmFjdGVyICovCiAgICAgaW50IHNraXBpbml0aWFsc3BhY2U7ICAgICAgIC8qIGlnbm9yZSBzcGFjZXMgZm9sbG93aW5nIGRlbGltaXRlcj8gKi8KICAgICBQeU9iamVjdCAqbGluZXRlcm1pbmF0b3I7IC8qIHN0cmluZyB0byB3cml0ZSBiZXR3ZWVuIHJlY29yZHMgKi8KICAgICBpbnQgcXVvdGluZzsgICAgICAgICAgICAgICAgLyogc3R5bGUgb2YgcXVvdGluZyB0byB3cml0ZSAqLwpAQCAtNjgsNyArOTgsNyBAQAogCiAgICAgUHlPYmplY3QgKmZpZWxkczsgICAgICAgICAgIC8qIGZpZWxkIGxpc3QgZm9yIGN1cnJlbnQgcmVjb3JkICovCiAgICAgUGFyc2VyU3RhdGUgc3RhdGU7ICAgICAgICAgIC8qIGN1cnJlbnQgQ1NWIHBhcnNlIHN0YXRlICovCi0gICAgUHlfVU5JQ09ERSAqZmllbGQ7ICAgICAgICAgIC8qIGJ1aWxkIGN1cnJlbnQgZmllbGQgaW4gaGVyZSAqLworICAgIFB5X1VDUzQgKmZpZWxkOyAgICAgICAgICAgICAvKiB0ZW1wb3JhcnkgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBmaWVsZF9zaXplOyAgICAgIC8qIHNpemUgb2YgYWxsb2NhdGVkIGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgZmllbGRfbGVuOyAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBmaWVsZCAqLwogICAgIGludCBudW1lcmljX2ZpZWxkOyAgICAgICAgICAvKiB0cmVhdCBmaWVsZCBhcyBudW1lcmljICovCkBAIC04Niw3ICsxMTYsNyBAQAogCiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdDsgICAgLyogcGFyc2luZyBkaWFsZWN0ICovCiAKLSAgICBQeV9VTklDT0RFICpyZWM7ICAgICAgICAgICAgLyogYnVmZmVyIGZvciBwYXJzZXIuam9pbiAqLworICAgIFB5X1VDUzQgKnJlYzsgICAgICAgICAgICAvKiBidWZmZXIgZm9yIHBhcnNlci5qb2luICovCiAgICAgUHlfc3NpemVfdCByZWNfc2l6ZTsgICAgICAgIC8qIHNpemUgb2YgYWxsb2NhdGVkIHJlY29yZCAqLwogICAgIFB5X3NzaXplX3QgcmVjX2xlbjsgICAgICAgICAvKiBsZW5ndGggb2YgcmVjb3JkICovCiAgICAgaW50IG51bV9maWVsZHM7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBmaWVsZHMgaW4gcmVjb3JkICovCkBAIC0xMDMsMTAgKzEzMywxMCBAQAogewogICAgIFB5T2JqZWN0ICpkaWFsZWN0X29iajsKIAotICAgIGRpYWxlY3Rfb2JqID0gUHlEaWN0X0dldEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqKTsKKyAgICBkaWFsZWN0X29iaiA9IFB5RGljdF9HZXRJdGVtKF9jc3ZzdGF0ZV9nbG9iYWwtPmRpYWxlY3RzLCBuYW1lX29iaik7CiAgICAgaWYgKGRpYWxlY3Rfb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihkaWFsZWN0X29iaik7CkBAIC0xMjEsMTQgKzE1MSwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X251bGxjaGFyX2FzX05vbmUoUHlfVU5JQ09ERSBjKQorZ2V0X251bGxjaGFyX2FzX05vbmUoUHlfVUNTNCBjKQogewogICAgIGlmIChjID09ICdcMCcpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKChQeV9VTklDT0RFICopJmMsIDEpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjAzLDI1ICsyMzMsMjMgQEAKIH0KIAogc3RhdGljIGludAotX3NldF9jaGFyKGNvbnN0IGNoYXIgKm5hbWUsIFB5X1VOSUNPREUgKnRhcmdldCwgUHlPYmplY3QgKnNyYywgUHlfVU5JQ09ERSBkZmx0KQorX3NldF9jaGFyKGNvbnN0IGNoYXIgKm5hbWUsIFB5X1VDUzQgKnRhcmdldCwgUHlPYmplY3QgKnNyYywgUHlfVUNTNCBkZmx0KQogewogICAgIGlmIChzcmMgPT0gTlVMTCkKICAgICAgICAgKnRhcmdldCA9IGRmbHQ7CiAgICAgZWxzZSB7CiAgICAgICAgICp0YXJnZXQgPSAnXDAnOwogICAgICAgICBpZiAoc3JjICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKmJ1ZjsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgYnVmID0gUHlVbmljb2RlX0FzVW5pY29kZShzcmMpOwotICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldFNpemUoc3JjKTsKLSAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCB8fCBsZW4gPiAxKSB7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNyYyk7CisgICAgICAgICAgICBpZiAobGVuID4gMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGVuID4gMCkKLSAgICAgICAgICAgICAgICAqdGFyZ2V0ID0gYnVmWzBdOworICAgICAgICAgICAgICAgICp0YXJnZXQgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNyYywgMCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC01MDIsNyArNTMwLDggQEAKIHsKICAgICBQeU9iamVjdCAqZmllbGQ7CiAKLSAgICBmaWVsZCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzZWxmLT5maWVsZCwgc2VsZi0+ZmllbGRfbGVuKTsKKyAgICBmaWVsZCA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIHNlbGYtPmZpZWxkLCBzZWxmLT5maWVsZF9sZW4pOwogICAgIGlmIChmaWVsZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgc2VsZi0+ZmllbGRfbGVuID0gMDsKQEAgLTUxMSwxMSArNTQwLDkgQEAKIAogICAgICAgICBzZWxmLT5udW1lcmljX2ZpZWxkID0gMDsKICAgICAgICAgdG1wID0gUHlOdW1iZXJfRmxvYXQoZmllbGQpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBmaWVsZCA9IHRtcDsKICAgICB9CiAgICAgUHlMaXN0X0FwcGVuZChzZWxmLT5maWVsZHMsIGZpZWxkKTsKQEAgLTUzMCwxNiArNTU3LDE2IEBACiAgICAgICAgIHNlbGYtPmZpZWxkX3NpemUgPSA0MDk2OwogICAgICAgICBpZiAoc2VsZi0+ZmllbGQgIT0gTlVMTCkKICAgICAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+ZmllbGQpOwotICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX05ldyhQeV9VTklDT0RFLCBzZWxmLT5maWVsZF9zaXplKTsKKyAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9OZXcoUHlfVUNTNCwgc2VsZi0+ZmllbGRfc2l6ZSk7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpmaWVsZCA9IHNlbGYtPmZpZWxkOwogICAgICAgICBpZiAoc2VsZi0+ZmllbGRfc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gMikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPmZpZWxkX3NpemUgKj0gMjsKLSAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9SZXNpemUoc2VsZi0+ZmllbGQsIFB5X1VOSUNPREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpZWxkX3NpemUpOworICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX1Jlc2l6ZShmaWVsZCwgUHlfVUNTNCwgc2VsZi0+ZmllbGRfc2l6ZSk7CiAgICAgfQogICAgIGlmIChzZWxmLT5maWVsZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01NDksMTEgKzU3NiwxMSBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV9hZGRfY2hhcihSZWFkZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgYykKK3BhcnNlX2FkZF9jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVUNTNCBjKQogewotICAgIGlmIChzZWxmLT5maWVsZF9sZW4gPj0gZmllbGRfbGltaXQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgImZpZWxkIGxhcmdlciB0aGFuIGZpZWxkIGxpbWl0ICglbGQpIiwKLSAgICAgICAgICAgICAgICAgICAgIGZpZWxkX2xpbWl0KTsKKyAgICBpZiAoc2VsZi0+ZmllbGRfbGVuID49IF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJmaWVsZCBsYXJnZXIgdGhhbiBmaWVsZCBsaW1pdCAoJWxkKSIsCisgICAgICAgICAgICAgICAgICAgICBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHNlbGYtPmZpZWxkX2xlbiA9PSBzZWxmLT5maWVsZF9zaXplICYmICFwYXJzZV9ncm93X2J1ZmYoc2VsZikpCkBAIC01NjMsNyArNTkwLDcgQEAKIH0KIAogc3RhdGljIGludAotcGFyc2VfcHJvY2Vzc19jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSBjKQorcGFyc2VfcHJvY2Vzc19jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVUNTNCBjKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwogCkBAIC03MTAsNyArNzM3LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIGlsbGVnYWwgKi8KLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICInJWMnIGV4cGVjdGVkIGFmdGVyICclYyciLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgIiclYycgZXhwZWN0ZWQgYWZ0ZXIgJyVjJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbGVjdC0+ZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3QtPnF1b3RlY2hhcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC03MjMsNyArNzUwLDcgQEAKICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXDAnKQogICAgICAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFSVF9SRUNPUkQ7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgIm5ldy1saW5lIGNoYXJhY3RlciBzZWVuIGluIHVucXVvdGVkIGZpZWxkIC0gZG8geW91IG5lZWQgdG8gb3BlbiB0aGUgZmlsZSBpbiB1bml2ZXJzYWwtbmV3bGluZSBtb2RlPyIpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgIm5ldy1saW5lIGNoYXJhY3RlciBzZWVuIGluIHVucXVvdGVkIGZpZWxkIC0gZG8geW91IG5lZWQgdG8gb3BlbiB0aGUgZmlsZSBpbiB1bml2ZXJzYWwtbmV3bGluZSBtb2RlPyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNzQ4LDEwICs3NzUsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBSZWFkZXJfaXRlcm5leHQoUmVhZGVyT2JqICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpsaW5lb2JqOwogICAgIFB5T2JqZWN0ICpmaWVsZHMgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKmxpbmUsIGM7Ci0gICAgUHlfc3NpemVfdCBsaW5lbGVuOworICAgIFB5X1VDUzQgYzsKKyAgICBQeV9zc2l6ZV90IHBvcywgbGluZWxlbjsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5T2JqZWN0ICpsaW5lb2JqOwogCiAgICAgaWYgKHBhcnNlX3Jlc2V0KHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NjIsMTQgKzc5MSwxNSBAQAogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpICYmIChzZWxmLT5maWVsZF9sZW4gIT0gMCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdGF0ZSA9PSBJTl9RVU9URURfRklFTEQpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYtPmRpYWxlY3QtPnN0cmljdCkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGVycm9yX29iaiwgInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyc2Vfc2F2ZV9maWVsZChzZWxmKSA+PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGxpbmVvYmopKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmF0b3Igc2hvdWxkIHJldHVybiBzdHJpbmdzLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICIoZGlkIHlvdSBvcGVuIHRoZSBmaWxlIGluIHRleHQgbW9kZT8pIiwKQEAgLTc3OSwxNyArODA5LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICArK3NlbGYtPmxpbmVfbnVtOwotICAgICAgICBsaW5lID0gUHlVbmljb2RlX0FzVW5pY29kZShsaW5lb2JqKTsKLSAgICAgICAgbGluZWxlbiA9IFB5VW5pY29kZV9HZXRTaXplKGxpbmVvYmopOwotICAgICAgICBpZiAobGluZSA9PSBOVUxMIHx8IGxpbmVsZW4gPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZW9iaik7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShsaW5lb2JqKTsKKyAgICAgICAgcG9zID0gMDsKKyAgICAgICAgbGluZWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmVvYmopOwogICAgICAgICB3aGlsZSAobGluZWxlbi0tKSB7Ci0gICAgICAgICAgICBjID0gKmxpbmUrKzsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogICAgICAgICAgICAgaWYgKGMgPT0gJ1wwJykgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIGNvbnRhaW5zIE5VTEwgYnl0ZSIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgfQpAQCAtNzk3LDYgKzgyNSw3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zKys7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICBpZiAocGFyc2VfcHJvY2Vzc19jaGFyKHNlbGYsIDApIDwgMCkKQEAgLTk1MywxMyArOTgyLDEzIEBACiAgKiByZWNvcmQgbGVuZ3RoLgogICovCiBzdGF0aWMgUHlfc3NpemVfdAotam9pbl9hcHBlbmRfZGF0YShXcml0ZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgKmZpZWxkLCBpbnQgcXVvdGVfZW1wdHksCi0gICAgICAgICAgICAgICAgIGludCAqcXVvdGVkLCBpbnQgY29weV9waGFzZSkKK2pvaW5fYXBwZW5kX2RhdGEoV3JpdGVyT2JqICpzZWxmLCB1bnNpZ25lZCBpbnQgZmllbGRfa2luZCwgdm9pZCAqZmllbGRfZGF0YSwKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBmaWVsZF9sZW4sIGludCBxdW90ZV9lbXB0eSwgaW50ICpxdW90ZWQsCisgICAgICAgICAgICAgICAgIGludCBjb3B5X3BoYXNlKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwogICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgcmVjX2xlbjsKLSAgICBQeV9VTklDT0RFICpsaW5ldGVybTsKIAogI2RlZmluZSBBRERDSChjKSBcCiAgICAgZG8ge1wKQEAgLTk2OCwxMCArOTk3LDYgQEAKICAgICAgICAgcmVjX2xlbisrO1wKICAgICB9IHdoaWxlKDApCiAKLSAgICBsaW5ldGVybSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOwotICAgIGlmIChsaW5ldGVybSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICByZWNfbGVuID0gc2VsZi0+cmVjX2xlbjsKIAogICAgIC8qIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBmaWVsZCB3ZSBuZWVkIGEgZmllbGQgc2VwYXJhdG9yICovCkBAIC05ODQsMTcgKzEwMDksMTYgQEAKIAogICAgIC8qIENvcHkvY291bnQgZmllbGQgZGF0YSAqLwogICAgIC8qIElmIGZpZWxkIGlzIG51bGwganVzdCBwYXNzIG92ZXIgKi8KLSAgICBmb3IgKGkgPSAwOyBmaWVsZDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IGZpZWxkW2ldOworICAgIGZvciAoaSA9IDA7IGZpZWxkX2RhdGEgJiYgKGkgPCBmaWVsZF9sZW4pOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoZmllbGRfa2luZCwgZmllbGRfZGF0YSwgaSk7CiAgICAgICAgIGludCB3YW50X2VzY2FwZSA9IDA7CiAKLSAgICAgICAgaWYgKGMgPT0gJ1wwJykKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGlmIChjID09IGRpYWxlY3QtPmRlbGltaXRlciB8fAogICAgICAgICAgICAgYyA9PSBkaWFsZWN0LT5lc2NhcGVjaGFyIHx8CiAgICAgICAgICAgICBjID09IGRpYWxlY3QtPnF1b3RlY2hhciAgfHwKLSAgICAgICAgICAgIFB5X1VOSUNPREVfc3RyY2hyKGxpbmV0ZXJtLCBjKSkgeworICAgICAgICAgICAgUHlVbmljb2RlX0ZpbmRDaGFyKAorICAgICAgICAgICAgICAgIGRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yLCBjLCAwLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKSwgMSkgPj0gMCkgewogICAgICAgICAgICAgaWYgKGRpYWxlY3QtPnF1b3RpbmcgPT0gUVVPVEVfTk9ORSkKICAgICAgICAgICAgICAgICB3YW50X2VzY2FwZSA9IDE7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTEwMDksNyArMTAzMyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2FudF9lc2NhcGUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWRpYWxlY3QtPmVzY2FwZWNoYXIpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkIHRvIGVzY2FwZSwgYnV0IG5vIGVzY2FwZWNoYXIgc2V0Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDI1LDcgKzEwNDksNyBAQAogICAgICAqLwogICAgIGlmIChpID09IDAgJiYgcXVvdGVfZW1wdHkpIHsKICAgICAgICAgaWYgKGRpYWxlY3QtPnF1b3RpbmcgPT0gUVVPVEVfTk9ORSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCiAgICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtMTA1NywxNCArMTA4MSwxMyBAQAogICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAocmVjX2xlbiAvIE1FTV9JTkNSICsgMSkgKiBNRU1fSU5DUjsKICAgICAgICAgICAgIGlmIChzZWxmLT5yZWMgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPnJlYyk7Ci0gICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9OZXcoUHlfVU5JQ09ERSwgc2VsZi0+cmVjX3NpemUpOworICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fTmV3KFB5X1VDUzQsIHNlbGYtPnJlY19zaXplKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUqIG9sZF9yZWMgPSBzZWxmLT5yZWM7CisgICAgICAgICAgICBQeV9VQ1M0KiBvbGRfcmVjID0gc2VsZi0+cmVjOwogCiAgICAgICAgICAgICBzZWxmLT5yZWNfc2l6ZSA9IChyZWNfbGVuIC8gTUVNX0lOQ1IgKyAxKSAqIE1FTV9JTkNSOwotICAgICAgICAgICAgc2VsZi0+cmVjID0gUHlNZW1fUmVzaXplKHNlbGYtPnJlYywgUHlfVU5JQ09ERSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5yZWNfc2l6ZSk7CisgICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9SZXNpemUob2xkX3JlYywgUHlfVUNTNCwgc2VsZi0+cmVjX3NpemUpOwogICAgICAgICAgICAgaWYgKHNlbGYtPnJlYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUob2xkX3JlYyk7CiAgICAgICAgIH0KQEAgLTEwNzcsMTEgKzExMDAsMjAgQEAKIH0KIAogc3RhdGljIGludAotam9pbl9hcHBlbmQoV3JpdGVyT2JqICpzZWxmLCBQeV9VTklDT0RFICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKK2pvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlPYmplY3QgKmZpZWxkLCBpbnQgKnF1b3RlZCwgaW50IHF1b3RlX2VtcHR5KQogeworICAgIHVuc2lnbmVkIGludCBmaWVsZF9raW5kID0gLTE7CisgICAgdm9pZCAqZmllbGRfZGF0YSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBmaWVsZF9sZW4gPSAwOwogICAgIFB5X3NzaXplX3QgcmVjX2xlbjsKIAotICAgIHJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkLCBxdW90ZV9lbXB0eSwgcXVvdGVkLCAwKTsKKyAgICBpZiAoZmllbGQgIT0gTlVMTCkgeworICAgICAgICBmaWVsZF9raW5kID0gUHlVbmljb2RlX0tJTkQoZmllbGQpOworICAgICAgICBmaWVsZF9kYXRhID0gUHlVbmljb2RlX0RBVEEoZmllbGQpOworICAgICAgICBmaWVsZF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmaWVsZCk7CisgICAgfQorICAgIHJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAwKTsKICAgICBpZiAocmVjX2xlbiA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDg5LDcgKzExMjEsOCBAQAogICAgIGlmICgham9pbl9jaGVja19yZWNfc2l6ZShzZWxmLCByZWNfbGVuKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBzZWxmLT5yZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZCwgcXVvdGVfZW1wdHksIHF1b3RlZCwgMSk7CisgICAgc2VsZi0+cmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGRfa2luZCwgZmllbGRfZGF0YSwgZmllbGRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDEpOwogICAgIHNlbGYtPm51bV9maWVsZHMrKzsKIAogICAgIHJldHVybiAxOwpAQCAtMTA5OCwxMCArMTEzMSwxMSBAQAogc3RhdGljIGludAogam9pbl9hcHBlbmRfbGluZXRlcm1pbmF0b3IoV3JpdGVyT2JqICpzZWxmKQogewotICAgIFB5X3NzaXplX3QgdGVybWluYXRvcl9sZW47Ci0gICAgUHlfVU5JQ09ERSAqdGVybWluYXRvcjsKKyAgICBQeV9zc2l6ZV90IHRlcm1pbmF0b3JfbGVuLCBpOworICAgIHVuc2lnbmVkIGludCB0ZXJtX2tpbmQ7CisgICAgdm9pZCAqdGVybV9kYXRhOwogCi0gICAgdGVybWluYXRvcl9sZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CisgICAgdGVybWluYXRvcl9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CiAgICAgaWYgKHRlcm1pbmF0b3JfbGVuID09IC0xKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTEwOSwxMSArMTE0MywxMCBAQAogICAgIGlmICgham9pbl9jaGVja19yZWNfc2l6ZShzZWxmLCBzZWxmLT5yZWNfbGVuICsgdGVybWluYXRvcl9sZW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHRlcm1pbmF0b3IgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKLSAgICBpZiAodGVybWluYXRvciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtZW1tb3ZlKHNlbGYtPnJlYyArIHNlbGYtPnJlY19sZW4sIHRlcm1pbmF0b3IsCi0gICAgICAgIHNpemVvZihQeV9VTklDT0RFKSp0ZXJtaW5hdG9yX2xlbik7CisgICAgdGVybV9raW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOworICAgIHRlcm1fZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgdGVybWluYXRvcl9sZW47IGkrKykKKyAgICAgICAgc2VsZi0+cmVjW3NlbGYtPnJlY19sZW4gKyBpXSA9IFB5VW5pY29kZV9SRUFEKHRlcm1fa2luZCwgdGVybV9kYXRhLCBpKTsKICAgICBzZWxmLT5yZWNfbGVuICs9IHRlcm1pbmF0b3JfbGVuOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMTMwLDkgKzExNjMsMTAgQEAKIHsKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0ID0gc2VsZi0+ZGlhbGVjdDsKICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICBQeU9iamVjdCAqbGluZSwgKnJlc3VsdDsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgInNlcXVlbmNlIGV4cGVjdGVkIik7CisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAic2VxdWVuY2UgZXhwZWN0ZWQiKTsKIAogICAgIGxlbiA9IFB5U2VxdWVuY2VfTGVuZ3RoKHNlcSk7CiAgICAgaWYgKGxlbiA8IDApCkBAIC0xMTYzLDE0ICsxMTk3LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGZpZWxkKSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZpZWxkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIGZpZWxkLCAmcXVvdGVkLCBsZW4gPT0gMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGZpZWxkID09IFB5X05vbmUpIHsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAmcXVvdGVkLCBsZW4gPT0gMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZmllbGQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTE4MCw5ICsxMjExLDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIHN0ciwgJnF1b3RlZCwgbGVuID09IDEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFhcHBlbmRfb2spCkBAIC0xMTk0LDkgKzEyMjMsMTMgQEAKICAgICBpZiAoIWpvaW5fYXBwZW5kX2xpbmV0ZXJtaW5hdG9yKHNlbGYpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+d3JpdGVsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIih1IykiLCBzZWxmLT5yZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5yZWNfbGVuKTsKKyAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBzZWxmLT5yZWMsIHNlbGYtPnJlY19sZW4pOworICAgIGlmIChsaW5lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2VsZi0+d3JpdGVsaW5lLCBsaW5lLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYobGluZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlEb2NfU1RSVkFSKGNzdl93cml0ZXJvd3NfZG9jLApAQCAtMTMyMCw2ICsxMzUzLDcgQEAKIHsKICAgICBQeU9iamVjdCAqIG91dHB1dF9maWxlLCAqIGRpYWxlY3QgPSBOVUxMOwogICAgIFdyaXRlck9iaiAqIHNlbGYgPSBQeU9iamVjdF9HQ19OZXcoV3JpdGVyT2JqLCAmV3JpdGVyX1R5cGUpOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzM2LDcgKzEzNzAsNyBAQAogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzZWxmLT53cml0ZWxpbmUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG91dHB1dF9maWxlLCAid3JpdGUiKTsKKyAgICBzZWxmLT53cml0ZWxpbmUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG91dHB1dF9maWxlLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHNlbGYtPndyaXRlbGluZSA9PSBOVUxMIHx8ICFQeUNhbGxhYmxlX0NoZWNrKHNlbGYtPndyaXRlbGluZSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAxIG11c3QgaGF2ZSBhIFwid3JpdGVcIiBtZXRob2QiKTsKQEAgLTEzNTgsNyArMTM5Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogY3N2X2xpc3RfZGlhbGVjdHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5RGljdF9LZXlzKGRpYWxlY3RzKTsKKyAgICByZXR1cm4gUHlEaWN0X0tleXMoX2NzdnN0YXRlX2dsb2JhbC0+ZGlhbGVjdHMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM3Nyw3ICsxNDExLDcgQEAKICAgICBkaWFsZWN0ID0gX2NhbGxfZGlhbGVjdChkaWFsZWN0X29iaiwga3dhcmdzKTsKICAgICBpZiAoZGlhbGVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oZGlhbGVjdHMsIG5hbWVfb2JqLCBkaWFsZWN0KSA8IDApIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oX2NzdnN0YXRlX2dsb2JhbC0+ZGlhbGVjdHMsIG5hbWVfb2JqLCBkaWFsZWN0KSA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKGRpYWxlY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMzg5LDggKzE0MjMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNzdl91bnJlZ2lzdGVyX2RpYWxlY3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWVfb2JqKQogewotICAgIGlmIChQeURpY3RfRGVsSXRlbShkaWFsZWN0cywgbmFtZV9vYmopIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oX2NzdnN0YXRlX2dsb2JhbC0+ZGlhbGVjdHMsIG5hbWVfb2JqKSA8IDApCisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAidW5rbm93biBkaWFsZWN0Iik7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtMTQwNSw3ICsxNDM5LDcgQEAKIGNzdl9maWVsZF9zaXplX2xpbWl0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpuZXdfbGltaXQgPSBOVUxMOwotICAgIGxvbmcgb2xkX2xpbWl0ID0gZmllbGRfbGltaXQ7CisgICAgbG9uZyBvbGRfbGltaXQgPSBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdDsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZpZWxkX3NpemVfbGltaXQiLCAwLCAxLCAmbmV3X2xpbWl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDE1LDkgKzE0NDksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaW1pdCBtdXN0IGJlIGFuIGludGVnZXIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGZpZWxkX2xpbWl0ID0gUHlMb25nX0FzTG9uZyhuZXdfbGltaXQpOwotICAgICAgICBpZiAoZmllbGRfbGltaXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgZmllbGRfbGltaXQgPSBvbGRfbGltaXQ7CisgICAgICAgIF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0ID0gUHlMb25nX0FzTG9uZyhuZXdfbGltaXQpOworICAgICAgICBpZiAoX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQgPSBvbGRfbGltaXQ7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NTYsMTcgKzE1OTAsMTYgQEAKICAgICB7IE5VTEwsIE5VTEwgfQogfTsKIAotCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9jc3Ztb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICJfY3N2IiwKICAgICBjc3ZfbW9kdWxlX2RvYywKLSAgICAtMSwKKyAgICBzaXplb2YoX2NzdnN0YXRlKSwKICAgICBjc3ZfbWV0aG9kcywKICAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCisgICAgX2Nzdl90cmF2ZXJzZSwKKyAgICBfY3N2X2NsZWFyLAorICAgIF9jc3ZfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKQEAgLTE1OTQsMTEgKzE2MjcsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU9EVUxFX1ZFUlNJT04pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qIFNldCB0aGUgZmllbGQgbGltaXQgKi8KKyAgICBfY3N2c3RhdGUobW9kdWxlKS0+ZmllbGRfbGltaXQgPSAxMjggKiAxMDI0OworICAgIC8qIERvIEkgc3RpbGwgbmVlZCB0byBhZGQgdGhpcyB2YXIgdG8gdGhlIE1vZHVsZSBEaWN0PyAqLworCiAgICAgLyogQWRkIF9kaWFsZWN0cyBkaWN0aW9uYXJ5ICovCi0gICAgZGlhbGVjdHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGRpYWxlY3RzID09IE5VTEwpCisgICAgX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzID0gUHlEaWN0X05ldygpOworICAgIGlmIChfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJfZGlhbGVjdHMiLCBkaWFsZWN0cykpCisgICAgUHlfSU5DUkVGKF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cyk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJfZGlhbGVjdHMiLCBfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBxdW90ZSBzdHlsZXMgaW50byBkaWN0aW9uYXJ5ICovCkBAIC0xNjE0LDkgKzE2NTIsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgdGhlIENTViBleGNlcHRpb24gb2JqZWN0IHRvIHRoZSBtb2R1bGUuICovCi0gICAgZXJyb3Jfb2JqID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfY3N2LkVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgaWYgKGVycm9yX29iaiA9PSBOVUxMKQorICAgIF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oIl9jc3YuRXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoX2NzdnN0YXRlKG1vZHVsZSktPmVycm9yX29iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiRXJyb3IiLCBlcnJvcl9vYmopOworICAgIFB5X0lOQ1JFRihfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiRXJyb3IiLCBfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqKTsKICAgICByZXR1cm4gbW9kdWxlOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKaW5kZXggOGJlNTk1OC4uNzUxNjMwNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCkBAIC0xMTQyLDYgKzExNDIsOCBAQAogV0NoYXJBcnJheV9zZXRfdmFsdWUoQ0RhdGFPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IDA7CisgICAgUHlfVU5JQ09ERSAqd3N0cjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0xMTU1LDcgKzExNTcsMTEgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0gZWxzZQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIGlmICgodW5zaWduZWQpUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKSA+IHNlbGYtPmJfc2l6ZS9zaXplb2Yod2NoYXJfdCkpIHsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJmxlbik7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICgodW5zaWduZWQpbGVuID4gc2VsZi0+Yl9zaXplL3NpemVvZih3Y2hhcl90KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxvbmciKTsKICAgICAgICAgcmVzdWx0ID0gLTE7CkBAIC0xODQzLDExICsxODQ5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socHJvdG8pKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp2ID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHByb3RvLCBOVUxMKTsKLSAgICAgICAgaWYgKCF2KQorICAgICAgICBwcm90b19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShwcm90bywgJnByb3RvX2xlbik7CisgICAgICAgIGlmICghcHJvdG9fc3RyKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgcHJvdG9fc3RyID0gUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgICAgIHByb3RvX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJjbGFzcyBtdXN0IGRlZmluZSBhICdfdHlwZV8nIHN0cmluZyBhdHRyaWJ1dGUiKTsKQEAgLTM2ODEsOCArMzY4NSwxMCBAQAogICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXAsIGluZGV4LCB2KTsKICAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgIH0gZWxzZSBpZiAoYml0ICYgb3V0bWFzaykgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19jdHlwZXNfZnJvbV9vdXRwYXJhbV9fKTsKKwogICAgICAgICAgICAgdiA9IFB5VHVwbGVfR0VUX0lURU0oY2FsbGFyZ3MsIGkpOwotICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGxNZXRob2QodiwgIl9fY3R5cGVzX2Zyb21fb3V0cGFyYW1fXyIsIE5VTEwpOworICAgICAgICAgICAgdiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodiwgJlB5SWRfX19jdHlwZXNfZnJvbV9vdXRwYXJhbV9fLCBOVUxMKTsKICAgICAgICAgICAgIGlmICh2ID09IE5VTEwgfHwgbnVtcmV0dmFscyA9PSAxKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhcmdzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdjsKQEAgLTQyNDksNyArNDI1NSw3IEBACiAgICAgICAgICAgICB3Y2hhcl90ICpkZXN0OwogCiAgICAgICAgICAgICBpZiAoc2xpY2VsZW4gPD0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICAgICAgaWYgKHN0ZXAgPT0gMSkgewogICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHB0ciArIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlbGVuKTsKQEAgLTQ1OTksMzggKzQ2MDUsMjAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBTaW1wbGVfcmVwcihDRGF0YU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqdmFsLCAqbmFtZSwgKmFyZ3MsICpyZXN1bHQ7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgUHlPYmplY3QgKnZhbCwgKnJlc3VsdDsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYpLT50cF9iYXNlICE9ICZTaW1wbGVfVHlwZSkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyBvYmplY3QgYXQgJXA+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZik7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCIlcyglcikiKTsKLSAgICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgdmFsID0gU2ltcGxlX2dldF92YWx1ZShzZWxmKTsKICAgICBpZiAodmFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOwotICAgIGlmIChuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHZhbCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgbmFtZSwgdmFsKTsKLSAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVSKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgdmFsKTsKICAgICBQeV9ERUNSRUYodmFsKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDk0Miw3ICs0OTMwLDcgQEAKICAgICAgICAgICAgIHdjaGFyX3QgKmRlc3Q7CiAKICAgICAgICAgICAgIGlmIChsZW4gPD0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICAgICAgaWYgKHN0ZXAgPT0gMSkgewogICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHB0ciArIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDFmM2MxYzAuLmRkNDQxZjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC02NTgsMTMgKzY1OCw2IEBACiAKICNpZmRlZiBDVFlQRVNfVU5JQ09ERQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgICAgICBwYS0+ZmZpX3R5cGUgPSAmZmZpX3R5cGVfcG9pbnRlcjsKLSAgICAgICAgcGEtPnZhbHVlLnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOwotICAgICAgICBQeV9JTkNSRUYob2JqKTsKLSAgICAgICAgcGEtPmtlZXAgPSBvYmo7Ci0gICAgICAgIHJldHVybiAwOwotI2Vsc2UKICAgICAgICAgcGEtPmZmaV90eXBlID0gJmZmaV90eXBlX3BvaW50ZXI7CiAgICAgICAgIHBhLT52YWx1ZS5wID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcob2JqLCBOVUxMKTsKICAgICAgICAgaWYgKHBhLT52YWx1ZS5wID09IE5VTEwpCkBAIC02NzUsNyArNjY4LDYgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKLSNlbmRpZgogICAgIH0KICNlbmRpZgogCkBAIC05NTIsOSArOTQ0LDkgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmcywgUHlVbmljb2RlX0Zyb21TdHJpbmcoIj8/PyIpKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgUHlFcnJfU2V0T2JqZWN0KGV4Y19jbGFzcywgcyk7CiBlcnJvcjoKICAgICBQeV9YREVDUkVGKHRwKTsKQEAgLTE2OTUsMTMgKzE2ODcsMTUgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0c3RhdGVfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnR5cCwgJnN0YXRlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0eXAsICJfX25ld19fIiwgIk8iLCB0eXApOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHlwLCAmUHlJZF9fX25ld19fLCAiTyIsIHR5cCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgIl9fc2V0c3RhdGVfXyIsICJPIiwgc3RhdGUpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9fX3NldHN0YXRlX18sICJPIiwgc3RhdGUpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKaW5kZXggOWRhODkwZC4uZjZmOGU0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwpAQCAtOSw3ICs5LDYgQEAKIAogI2RlZmluZSBDVFlQRVNfQ0ZJRUxEX0NBUFNVTEVfTkFNRV9QWU1FTSAiX2N0eXBlcy9jZmllbGQuYyBweW1lbSIKIAotI2lmIFB5X1VOSUNPREVfU0laRSAhPSBTSVpFT0ZfV0NIQVJfVAogc3RhdGljIHZvaWQgcHltZW1fZGVzdHJ1Y3RvcihQeU9iamVjdCAqcHRyKQogewogICAgIHZvaWQgKnAgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihwdHIsIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNKTsKQEAgLTE3LDcgKzE2LDYgQEAKICAgICAgICAgUHlNZW1fRnJlZShwKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtNTIsNyArNTAsNyBAQAogewogICAgIENGaWVsZE9iamVjdCAqc2VsZjsKICAgICBQeU9iamVjdCAqcHJvdG87Ci0gICAgUHlfc3NpemVfdCBzaXplLCBhbGlnbiwgbGVuZ3RoOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgYWxpZ247CiAgICAgU0VURlVOQyBzZXRmdW5jID0gTlVMTDsKICAgICBHRVRGVU5DIGdldGZ1bmMgPSBOVUxMOwogICAgIFN0Z0RpY3RPYmplY3QgKmRpY3Q7CkBAIC0xMDYsNyArMTA0LDYgQEAKICAgICB9CiAKICAgICBzaXplID0gZGljdC0+c2l6ZTsKLSAgICBsZW5ndGggPSBkaWN0LT5sZW5ndGg7CiAgICAgcHJvdG8gPSBkZXNjOwogCiAgICAgLyogIEZpZWxkIGRlc2NyaXB0b3JzIGZvciAnY19jaGFyICogbicgYXJlIGJlIHNjcGVjaWFsIGNhc2VkIHRvCkBAIC0xMjE0LDM3ICsxMjExLDMwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogVV9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIHdjaGFyX3QgKnA7CiAKICAgICBzaXplIC89IHNpemVvZih3Y2hhcl90KTsgLyogd2UgY291bnQgY2hhcmFjdGVyIHVuaXRzIGhlcmUsIG5vdCBieXRlcyAqLwogCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigod2NoYXJfdCAqKXB0ciwgc2l6ZSk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIFdlIG5lZWQgJ3Jlc3VsdCcgdG8gYmUgYWJsZSB0byBjb3VudCB0aGUgY2hhcmFjdGVycyB3aXRoIHdjc2xlbiwKICAgICAgICBzaW5jZSBwdHIgbWF5IG5vdCBiZSBOVUwgdGVybWluYXRlZC4gIElmIHRoZSBsZW5ndGggaXMgc21hbGxlciAoaWYKICAgICAgICBpdCB3YXMgYWN0dWFsbHkgTlVMIHRlcm1pbmF0ZWQsIHdlIGNvbnN0cnVjdCBhIG5ldyBvbmUgYW5kIHRocm93CiAgICAgICAgYXdheSB0aGUgcmVzdWx0LgogICAgICovCiAgICAgLyogY2hvcCBvZmYgYXQgdGhlIGZpcnN0IE5VTCBjaGFyYWN0ZXIsIGlmIGFueS4gKi8KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IHNpemU7ICsrbGVuKQorICAgIHAgPSAod2NoYXJfdCopcHRyOworICAgIGZvciAobGVuID0gMDsgbGVuIDwgc2l6ZTsgKytsZW4pIHsKICAgICAgICAgaWYgKCFwW2xlbl0pCiAgICAgICAgICAgICBicmVhazsKLQotICAgIGlmIChsZW4gPCBzaXplKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvYiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoKHdjaGFyX3QgKilwdHIsIGxlbik7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gb2I7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigod2NoYXJfdCAqKXB0ciwgbGVuKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIFVfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKKyAgICBQeV9VTklDT0RFICp3c3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAogICAgIC8qIEl0J3MgZWFzaWVyIHRvIGNhbGN1bGF0ZSBpbiBjaGFyYWN0ZXJzIHRoYW4gaW4gYnl0ZXMgKi8KQEAgLTEyNTcsNyArMTI0NywxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKTsKKworICAgIHdzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID4gbGVuZ3RoKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbG9uZyAoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpIiwKQEAgLTEzNzcsNiArMTM3MCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogWl9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKKyAgICBQeU9iamVjdCAqa2VlcDsKKyAgICB3Y2hhcl90ICpidWZmZXI7CisKICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkgewogICAgICAgICAqKHdjaGFyX3QgKiopcHRyID0gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKQEAgLTEzOTYsMzcgKzEzOTIsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlIHN0cmluZyBvciBpbnRlZ2VyIGFkZHJlc3MgZXhwZWN0ZWQgaW5zdGVhZCBvZiAlcyBpbnN0YW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0gZWxzZQotICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgIC8qIFdlIGNhbiBjb3B5IGRpcmVjdGx5LiAgSG0sIGFyZSB1bmljb2RlIG9iamVjdHMgYWx3YXlzIE5VTAotICAgICAgIHRlcm1pbmF0ZWQgaW4gUHl0aG9uLCBpbnRlcm5hbGx5PwotICAgICAqLwotICAgICood2NoYXJfdCAqKilwdHIgPSAod2NoYXJfdCAqKSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHZhbHVlOwotI2Vsc2UKLSAgICB7Ci0gICAgICAgIC8qIFdlIG11c3QgY3JlYXRlIGEgd2NoYXJfdCogYnVmZmVyIGZyb20gdGhlIHVuaWNvZGUgb2JqZWN0LAotICAgICAgICAgICBhbmQga2VlcCBpdCBhbGl2ZSAqLwotICAgICAgICBQeU9iamVjdCAqa2VlcDsKLSAgICAgICAgd2NoYXJfdCAqYnVmZmVyOwotCi0gICAgICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHZhbHVlLCBOVUxMKTsKLSAgICAgICAgaWYgKCFidWZmZXIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBrZWVwID0gUHlDYXBzdWxlX05ldyhidWZmZXIsIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNLCBweW1lbV9kZXN0cnVjdG9yKTsKLSAgICAgICAgaWYgKCFrZWVwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShidWZmZXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKih3Y2hhcl90ICoqKXB0ciA9ICh3Y2hhcl90ICopYnVmZmVyOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICByZXR1cm4ga2VlcDsKICAgICB9Ci0jZW5kaWYKKworICAgIC8qIFdlIG11c3QgY3JlYXRlIGEgd2NoYXJfdCogYnVmZmVyIGZyb20gdGhlIHVuaWNvZGUgb2JqZWN0LAorICAgICAgIGFuZCBrZWVwIGl0IGFsaXZlICovCisgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodmFsdWUsIE5VTEwpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBrZWVwID0gUHlDYXBzdWxlX05ldyhidWZmZXIsIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNLCBweW1lbV9kZXN0cnVjdG9yKTsKKyAgICBpZiAoIWtlZXApIHsKKyAgICAgICAgUHlNZW1fRnJlZShidWZmZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgKih3Y2hhcl90ICoqKXB0ciA9IGJ1ZmZlcjsKKyAgICByZXR1cm4ga2VlcDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0NzEsMTMgKzE0NTAsMTYgQEAKIAogICAgIC8qIGNyZWF0ZSBhIEJTVFIgZnJvbSB2YWx1ZSAqLwogICAgIGlmICh2YWx1ZSkgewotICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOworICAgICAgICB3Y2hhcl90KiB3dmFsdWU7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICAgICAgd3ZhbHVlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodmFsdWUsICZzaXplKTsKKyAgICAgICAgaWYgKHd2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICgodW5zaWduZWQpIHNpemUgIT0gc2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdHJpbmcgdG9vIGxvbmcgZm9yIEJTVFIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihQeVVuaWNvZGVfQVNfVU5JQ09ERSh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpc2l6ZSk7CisgICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3dmFsdWUsICh1bnNpZ25lZClzaXplKTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgYnN0ciA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYKaW5kZXggN2FmYTBlZC4uMzU3ZDBlZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS5kaWZmCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZgpAQCAtMSw3NCArMSwxNCBAQAotZGlmZiAtdXJOIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZSBsaWJmZmkvY29uZmlndXJlCi0tLS0gbGliZmZpLm9yaWcvY29uZmlndXJlCTIwMTAtMDMtMTkgMTg6Mjk6NTQuNTg4NDk5ODYyICswMTAwCi0rKysgbGliZmZpL2NvbmZpZ3VyZQkyMDEwLTAzLTE5IDE4OjMyOjA5LjExMzQ5OTQ3OSArMDEwMAotQEAgLTExMjI4LDYgKzExMjI4LDkgQEAKLSAgIGk/ODYtKi1zb2xhcmlzMi4xWzAtOV0qKQotIAlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2Ci0gCTs7Ci0rICBpKjg2LSotbnRvLXFueCopCi0rICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2Ci0rICAgICAgICA7OwotICAgaT84Ni0qLSopCi0gCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKLSAJOzsKLUBAIC0xMTI0NSwxMiArMTEyNDgsMTIgQEAKLSAJOzsKLSAKLSAgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQotLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKLSsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKLSAJOzsKLSAgIG1pcHMqLSotbGludXgqKQotIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgotIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fbWlwczY0KScKLS0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCi0rCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCi0gCTs7Ci0gCi0gICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKLUBAIC0xMTMwNyw3ICsxMTMxMCw3IEBACi0gICBhc19mbl9lcnJvciAiXCJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC5cIiIgIiRMSU5FTk8iIDUKLSBmaQotIAotLSBpZiB0ZXN0IHgkVEFSR0VUID0geE1JUFM7IHRoZW4KLSsgaWYgZXhwciB4JFRBUkdFVCA6ICd4TUlQUycgPiAvZGV2L251bGw7IHRoZW4KLSAgIE1JUFNfVFJVRT0KLSAgIE1JUFNfRkFMU0U9JyMnCi0gZWxzZQotQEAgLTEyNDIyLDYgKzEyNDI1LDEyIEBACi0gYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9mZmkuaCBNYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgbWFuL01ha2VmaWxlIGxpYmZmaS5wYyIKLSAKLSAKLSthY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3MgaW5jbHVkZS9mZmlfY29tbW9uLmg6aW5jbHVkZS9mZmlfY29tbW9uLmgiCi0rCi0rCi0rYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGZmaWNvbmZpZy5weSIKLSsKLSsKLSBjYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKLSAjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKLSAjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUKLUBAIC0xMzUyMSw2ICsxMzUzMCw4IEBACi0gICAgICJ0ZXN0c3VpdGUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHN1aXRlL01ha2VmaWxlIiA7OwotICAgICAibWFuL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG1hbi9NYWtlZmlsZSIgOzsKLSAgICAgImxpYmZmaS5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsaWJmZmkucGMiIDs7Ci0rICAgICJpbmNsdWRlL2ZmaV9jb21tb24uaCIpIENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyBpbmNsdWRlL2ZmaV9jb21tb24uaDppbmNsdWRlL2ZmaV9jb21tb24uaCIgOzsKLSsgICAgImZmaWNvbmZpZy5weSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBmZmljb25maWcucHkiIDs7Ci0gCi0gICAqKSBhc19mbl9lcnJvciAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKLSAgIGVzYWMKLWRpZmYgLXVyTiBsaWJmZmkub3JpZy9jb25maWd1cmUuYWMgbGliZmZpL2NvbmZpZ3VyZS5hYwotLS0tIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEwLTAzLTE5IDE4OjI3OjQ0Ljk4ODQ5ODU4NSArMDEwMAotKysrIGxpYmZmaS9jb25maWd1cmUuYWMJMjAxMC0wMy0xOSAxODozMToyOS4yNTI1MDUxNzggKzAxMDAKKy0tLSBsaWJmZmkub3JpZy9jb25maWd1cmUuYWMJMjAxMi0wNC0xMiAwNToxMDo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJmZmkvY29uZmlndXJlLmFjCTIwMTItMDYtMjYgMTU6NDI6NDIuNDc3NDk4OTM4ICswMjAwCiBAQCAtMSw0ICsxLDcgQEAKICBkbmwgUHJvY2VzcyB0aGlzIHdpdGggYXV0b2NvbmYgdG8gY3JlYXRlIGNvbmZpZ3VyZQogKyMKICsjIGZpbGUgZnJvbSBsaWJmZmkgLSBzbGlnaHRseSBwYXRjaGVkIGZvciBjdHlwZXMKICsjCiAgCi0gQUNfUFJFUkVRKDIuNjMpCisgQUNfUFJFUkVRKDIuNjgpCiAgCi1AQCAtOTEsNiArOTQsOSBAQAorQEAgLTExNCw2ICsxMTcsOSBAQAogICAgaT84Ni0qLXNvbGFyaXMyLjFbWzAtOV1dKikKICAJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogIAk7OwpAQCAtNzYsMjQgKzE2LDI0IEBACiArICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CiArICAgICAgICA7OwogICAgaT84Ni0qLSopCi0gCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKKyAJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogIAk7OwotQEAgLTEwOCwxMiArMTE0LDEyIEBACitAQCAtMTMxLDEyICsxMzcsMTIgQEAKICAJOzsKICAKLSAgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQorICAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiogfCBtaXBzKi0qLXJ0ZW1zKikKIC0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCiArCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAgCTs7Ci0gICBtaXBzKi0qLWxpbnV4KikKKyAgIG1pcHMqLSotbGludXgqIHwgbWlwcyotKi1vcGVuYnNkKikKICAJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUgZm9yIE5ld0FCSS4KICAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCiAtCVRBUkdFVD1NSVBTOyBUQVJHRVRESVI9bWlwcwogKwlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogIAk7OwogIAotICAgcG93ZXJwYyotKi1saW51eCogfCBwb3dlcnBjLSotc3lzdiopCi1AQCAtMTcwLDcgKzE3Niw3IEBACisgICBtb3hpZS0qLSopCitAQCAtMjEyLDcgKzIxOCw3IEBACiAgICBBQ19NU0dfRVJST1IoWyJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC4iXSkKICBmaQogIApAQCAtMTAyLDcgKzQyLDcgQEAKICBBTV9DT05ESVRJT05BTChTUEFSQywgdGVzdCB4JFRBUkdFVCA9IHhTUEFSQykKICBBTV9DT05ESVRJT05BTChYODYsIHRlc3QgeCRUQVJHRVQgPSB4WDg2KQogIEFNX0NPTkRJVElPTkFMKFg4Nl9GUkVFQlNELCB0ZXN0IHgkVEFSR0VUID0geFg4Nl9GUkVFQlNEKQotQEAgLTQwMSw0ICs0MDcsOCBAQAorQEAgLTQ5OSw0ICs1MDUsOCBAQAogIAogIEFDX0NPTkZJR19GSUxFUyhpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvZmZpLmggTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIG1hbi9NYWtlZmlsZSBsaWJmZmkucGMpCiAgCkBAIC0xMTEsMyArNTEsNzAgQEAKICtBQ19DT05GSUdfRklMRVMoZmZpY29uZmlnLnB5KQogKwogIEFDX09VVFBVVAorLS0tIGxpYmZmaS0zLjAuMTEvZmZpY29uZmlnLnB5LmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbGliZmZpL2ZmaWNvbmZpZy5weS5pbgkyMDEyLTAzLTE1IDAxOjA0OjI3LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwzNSBAQAorK2ZmaV9zb3VyY2VzID0gIiIiCisrc3JjL3ByZXBfY2lmLmMKKytzcmMvY2xvc3VyZXMuYworK3NyYy9kbG1hbGxvYy5jCisrIiIiLnNwbGl0KCkKKysKKytmZmlfcGxhdGZvcm1zID0geworKyAgICAnTUlQU19JUklYJzogWydzcmMvbWlwcy9mZmkuYycsICdzcmMvbWlwcy9vMzIuUycsICdzcmMvbWlwcy9uMzIuUyddLAorKyAgICAnTUlQU19MSU5VWCc6IFsnc3JjL21pcHMvZmZpLmMnLCAnc3JjL21pcHMvbzMyLlMnXSwKKysgICAgJ1g4Nic6IFsnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L3N5c3YuUyddLAorKyAgICAnWDg2X0ZSRUVCU0QnOiBbJ3NyYy94ODYvZmZpLmMnLCAnc3JjL3g4Ni9mcmVlYnNkLlMnXSwKKysgICAgJ1g4Nl9XSU4zMic6IFsnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L3dpbjMyLlMnXSwKKysgICAgJ1NQQVJDJzogWydzcmMvc3BhcmMvZmZpLmMnLCAnc3JjL3NwYXJjL3Y4LlMnLCAnc3JjL3NwYXJjL3Y5LlMnXSwKKysgICAgJ0FMUEhBJzogWydzcmMvYWxwaGEvZmZpLmMnLCAnc3JjL2FscGhhL29zZi5TJ10sCisrICAgICdJQTY0JzogWydzcmMvaWE2NC9mZmkuYycsICdzcmMvaWE2NC91bml4LlMnXSwKKysgICAgJ00zMlInOiBbJ3NyYy9tMzJyL3N5c3YuUycsICdzcmMvbTMyci9mZmkuYyddLAorKyAgICAnTTY4Syc6IFsnc3JjL202OGsvZmZpLmMnLCAnc3JjL202OGsvc3lzdi5TJ10sCisrICAgICdQT1dFUlBDJzogWydzcmMvcG93ZXJwYy9mZmkuYycsICdzcmMvcG93ZXJwYy9zeXN2LlMnLCAnc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUycsICdzcmMvcG93ZXJwYy9saW51eDY0LlMnLCAnc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMnXSwKKysgICAgJ1BPV0VSUENfQUlYJzogWydzcmMvcG93ZXJwYy9mZmkuYycsICdzcmMvcG93ZXJwYy9haXguUycsICdzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TJ10sCisrICAgICdQT1dFUlBDX0ZSRUVCU0QnOiBbJ3NyYy9wb3dlcnBjL2ZmaS5jJywgJ3NyYy9wb3dlcnBjL3N5c3YuUycsICdzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TJ10sCisrICAgICdBUk0nOiBbJ3NyYy9hcm0vc3lzdi5TJywgJ3NyYy9hcm0vZmZpLmMnXSwKKysgICAgJ0xJQkZGSV9DUklTJzogWydzcmMvY3Jpcy9zeXN2LlMnLCAnc3JjL2NyaXMvZmZpLmMnXSwKKysgICAgJ0ZSVic6IFsnc3JjL2Zydi9lYWJpLlMnLCAnc3JjL2Zydi9mZmkuYyddLAorKyAgICAnUzM5MCc6IFsnc3JjL3MzOTAvc3lzdi5TJywgJ3NyYy9zMzkwL2ZmaS5jJ10sCisrICAgICdYODZfNjQnOiBbJ3NyYy94ODYvZmZpNjQuYycsICdzcmMveDg2L3VuaXg2NC5TJywgJ3NyYy94ODYvZmZpLmMnLCAnc3JjL3g4Ni9zeXN2LlMnXSwKKysgICAgJ1NIJzogWydzcmMvc2gvc3lzdi5TJywgJ3NyYy9zaC9mZmkuYyddLAorKyAgICAnU0g2NCc6IFsnc3JjL3NoNjQvc3lzdi5TJywgJ3NyYy9zaDY0L2ZmaS5jJ10sCisrICAgICdQQSc6IFsnc3JjL3BhL2xpbnV4LlMnLCAnc3JjL3BhL2ZmaS5jJ10sCisrICAgICdQQV9MSU5VWCc6IFsnc3JjL3BhL2xpbnV4LlMnLCAnc3JjL3BhL2ZmaS5jJ10sCisrICAgICdQQV9IUFVYJzogWydzcmMvcGEvaHB1eDMyLlMnLCAnc3JjL3BhL2ZmaS5jJ10sCisrfQorKworK2ZmaV9zb3VyY2VzICs9IGZmaV9wbGF0Zm9ybXNbJ0BUQVJHRVRAJ10KKysKKytmZmlfY2ZsYWdzID0gJ0BDRkxBR1NAJworZGlmZiAtdXJOIGxpYmZmaS0zLjAuMTEvc3JjL2RsbWFsbG9jLmMgbGliZmZpL3NyYy9kbG1hbGxvYy5jCistLS0gbGliZmZpLTMuMC4xMS9zcmMvZGxtYWxsb2MuYwkyMDEyLTA0LTEyIDA0OjQ2OjA2LjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmZmaS9zcmMvZGxtYWxsb2MuYwkyMDEyLTA2LTI2IDE1OjE1OjU4Ljk0OTU0NzQ2MSArMDIwMAorQEAgLTQ1Nyw2ICs0NTcsMTEgQEAKKyAjZGVmaW5lIExBQ0tTX0VSUk5PX0gKKyAjZGVmaW5lIE1BTExPQ19GQUlMVVJFX0FDVElPTgorICNkZWZpbmUgTU1BUF9DTEVBUlMgMCAvKiBXSU5DRSBhbmQgc29tZSBvdGhlcnMgYXBwYXJlbnRseSBkb24ndCBjbGVhciAqLworKyNlbGlmICFkZWZpbmVkIF9HTlVfU09VUkNFCisrLyogbXJlbWFwKCkgb24gTGludXggcmVxdWlyZXMgdGhpcyB2aWEgc3lzL21tYW4uaAorKyAqIFNlZSByb3VuZHVwIGlzc3VlIDEwMzA5CisrICovCisrI2RlZmluZSBfR05VX1NPVVJDRSAxCisgI2VuZGlmICAvKiBXSU4zMiAqLworIAorICNpZmRlZiBfX09TMl9fCitkaWZmIC11ck4gbGliZmZpLTMuMC4xMS9zcmMvc3BhcmMvdjguUyBsaWJmZmkvc3JjL3NwYXJjL3Y4LlMKKy0tLSBsaWJmZmktMy4wLjExL3NyYy9zcGFyYy92OC5TCTIwMTItMDQtMTIgMDQ6NDY6MDYuMDAwMDAwMDAwICswMjAwCisrKysgbGliZmZpL3NyYy9zcGFyYy92OC5TCTIwMTEtMDMtMTMgMDU6MTU6MDQuMDAwMDAwMDAwICswMTAwCitAQCAtMjEzLDYgKzIxMywxMCBAQAorIAliZSxhCWRvbmUxCisgCSBsZGQJWyVmcC04XSwgJWkwCisgCisrCWNtcAklbzAsIEZGSV9UWVBFX1VJTlQ2NAorKwliZSxhCWRvbmUxCisrCSBsZGQJWyVmcC04XSwgJWkwCisrCisgCWxkCVslZnAtOF0sICVpMAorIGRvbmUxOgorIAlqbXAJJWk3KzgKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cKaW5kZXggMDBiYTdlZi4uZjQxNDhhOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cKQEAgLTEsOCArMSw5MTEgQEAKKzIwMTItMDQtMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgbmV3IHNjcmlwdC4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDEyLTA0LTExICBaYWNoYXJ5IFdhbGRvd3NraSAgPHp3YWxkb3dza2lAZ21haWwuY29tPgorCisJKiBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5LAorCWxpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBTdXBwb3J0IGEgTWFjIHN0YXRpYyBsaWJyYXJ5IHZpYQorCVhjb2RlLiBTZXQgaU9TIGNvbXBhdGliaWxpdHkgdG8gNC4wLiAgTW92ZSBpT1MgdHJhbXBvbGluZQorCWdlbmVyYXRpb24gaW50byBhbiBYY29kZSAicnVuIHNjcmlwdCIgcGhhc2UuICBJbmNsdWRlIGJvdGggYXMKKwlYY29kZSBidWlsZCBzY3JpcHRzLiBEb24ndCBhbHdheXMgcmVnZW5lcmF0ZSBjb25maWcgZmlsZXMuCisKKzIwMTItMDQtMTAgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIChmZmlfcHJlcF9hcmdzKTogQWRkIG1pc3Npbmcgc2VtaWNvbG9uLgorCisyMDEyLTA0LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIE1ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIG5ldyBpT1MveGNvZGUgZmlsZXMuCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMi0wNC0wNiAgTWlrZSBMZXdpcyAgPG1pa2VsaWtlc3BpZUBnbWFpbC5jb20+CisKKwkqIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHk6IE5ldyBmaWxlLgorCSogbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE5ldyBmaWxlLgorCSogUkVBRE1FOiBVcGRhdGUgaW5zdHJ1Y3Rpb25zIG9uIGJ1aWxkaW5nIGlPUyBiaW5hcnkuCisJKiBidWlsZC1pb3Muc2g6IERlbGV0ZS4KKworMjAxMi0wNC0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBtNC9saWJ0b29sLm00IChfTFRfRU5BQkxFX0xPQ0spOiBTdXBwb3J0IHgzMi4KKworMjAxMi0wNC0wNiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMveDg2L2ZmaTY0LmMgKFVJTlQxMjgpOiBEZWZpbmUgZGlmZmVyZW50bHkgZm9yIEludGVsIGFuZCBHTlUKKwljb21waWxlcnMsIHRoZW4gdXNlIGl0LgorCisyMDEyLTA0LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBtaXNzaW5nIHRlc3QgY2FzZXMuCisJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlYnVpbHQuCisKKzIwMTItMDQtMDUgIFphY2hhcnkgV2FsZG93c2tpICA8endhbGRvd3NraUBnbWFpbC5jb20+CisKKwkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBtaXNzaW5nIHRyYW1wb2xpbmUgdGFibGUgZmllbGRzLgorCSogc3JjL2FybS9zeXN2LlM6IEZpeCBFTlRSWSBkZWZpbml0aW9uLCBhbmQgd3JhcCBzeW1ib2wgcmVmZXJlbmNlcworCWluIENOQU1FLgorCSogc3JjL3g4Ni9mZmkuYzogV3JhcCBXaW5kb3dzIHNwZWNpZmljIGNvZGUgaW4gaWZkZWZzLgorCisyMDEyLTA0LTAyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2NhbGxfd2luMzIpOiBTaWduL3plcm8gZXh0ZW5kIHRoZSByZXR1cm4KKwl2YWx1ZSBpbiB0aGUgSW50ZWwgdmVyc2lvbiBhcyBpcyBhbHJlYWR5IGRvbmUgZm9yIHRoZSBBVCZUIHZlcnNpb24uCisJKGZmaV9jbG9zdXJlX1NZU1YpOiBMaWtld2lzZS4KKwkoZmZpX2Nsb3N1cmVfcmF3X1NZU1YpOiBMaWtld2lzZS4KKwkoZmZpX2Nsb3N1cmVfU1REQ0FMTCk6IExpa2V3aXNlLgorCisyMDEyLTAzLTI5ICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMKTogVW5pZnkgdGhlIGZyYW1lCisJZ2VuZXJhdGlvbiwgZml4IHRoZSBFTkRQIGxhYmVsIGFuZCByZW1vdmUgdGhlIHN1cnBsdXMgdGhpcmQgYXJnCisJZnJvbSB0aGUgJ2xlYScgaW5zbi4KKworMjAxMi0wMy0yOSAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX3Jhd19TWVNWKTogTWFrZSB0aGUgJ3N0dWJyYXcnIGxhYmVsCisJdmlzaWJsZSBvdXRzaWRlIHRoZSBQUk9DLCBzbyB0aGF0IGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBjYW4gc2VlCisJaXQuICBBbHNvIGluc3RydWN0IHRoZSBhc3NlbWJsZXIgdG8gYWRkIGEgZnJhbWUgdG8gdGhlIGZ1bmN0aW9uLgorCisyMDEyLTAzLTIzICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIE1ha2VmaWxlLmFtIChBTV9DUFBGTEFHUyk6IEFkZCAtREZGSV9CVUlMRElORy4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCSogaW5jbHVkZS9mZmkuaC5pbiBbTVNWQ106IEFkZCBfX2RlY2xzcGVjKGRsbGltcG9ydCkgZGVjb3JhdGlvbnMKKwl0byBhbGwgZGF0YSBleHBvcnRzLCB3aGVuIGNvbXBpbGluZyBsaWJmZmkgY2xpZW50cyB1c2luZyBNU1ZDLgorCisyMDEyLTAzLTI5ICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBBZGQgbmV3IEFCSSBGRklfTVNfQ0RFQ0wgYW5kCisJbWFrZSBpdCB0aGUgZGVmYXVsdCBmb3IgTVNWQy4KKwkoRkZJX1RZUEVfTVNfU1RSVUNUKTogTmV3IHN0cnVjdHVyZSByZXR1cm4gY29udmVudGlvbi4KKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogVHdlYWsgdGhlIHN0cnVjdHVyZQorCXJldHVybiBjb252ZW50aW9uIGZvciBGRklfTVNfQ0RFQ0wgdG8gYmUgRkZJX1RZUEVfTVNfU1RSVUNUCisJaW5zdGVhZCBvZiBhbiBvcmRpbmFyeSBGRklfVFlQRV9TVFJVQ1QuCisJKGZmaV9wcmVwX2FyZ3MpOiBUcmVhdCBGRklfVFlQRV9NU19TVFJVQ1QgYXMgRkZJX1RZUEVfU1RSVUNULgorCShmZmlfY2FsbCk6IExpa2V3aXNlLgorCShmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YpOiBMaWtld2lzZS4KKwkoZmZpX3Jhd19jYWxsKTogTGlrZXdpc2UuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogVHJlYXQgRkZJX01TX0NERUNMIGFzIEZGSV9TWVNWLgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9TWVNWKTogRm9yIEZGSV9UWVBFX01TX1NUUlVDVCwKKwlyZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZXN1bHQgc3RydWN0dXJlIGluIGVheCBhbmQgZG9uJ3QgcG9wCisJdGhhdCBwb2ludGVyIGZyb20gdGhlIHN0YWNrLCB0aGUgY2FsbGVyIHRha2VzIGNhcmUgb2YgaXQuCisJKGZmaV9jYWxsX3dpbjMyKTogVHJlYXQgRkZJX1RZUEVfTVNfU1RSVUNUIGFzIEZGSV9UWVBFX1NUUlVDVC4KKwkoZmZpX2Nsb3N1cmVfcmF3X1NZU1YpOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgW01TVkNdOiBBZGQgaW5saW5lCisJYXNzZW1ibHkgdmVyc2lvbiB3aXRoIEludGVsIHN5bnRheC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMgW01TVkNdOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMyAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oOiBQcm92aWRlIGFic3RyYXRpb24gb2YKKwlfX2F0dHJpYnV0ZV9fKChmYXN0Y2FsbCkpIGluIHRoZSBmb3JtIG9mIGEgX19GQVNUQ0FMTF9fCisJZGVmaW5lLiAgRGVmaW5lIGl0IHRvIF9fZmFzdGNhbGwgZm9yIE1TVkMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmM6IFVzZSB0aGUgYWJvdmUuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiBzcmMveDg2L3dpbjMyLlMgW01TVkNdIChmZmlfY2xvc3VyZV9USElTQ0FMTCk6IFJlbW92ZSB0aGUgbWFudWFsCisJZnJhbWUgb24gZnVuY3Rpb24gZW50cnksIE1BU00gYWRkcyBvbmUgYXV0b21hdGljYWxseS4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIFtNU1ZDXTogQWRkIGtsdWRnZSBmb3IgbWlzc2luZworCWJpdHMgaW4gdGhlIE1TVkMgaGVhZGVycy4KKworMjAxMi0wMy0yMiAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jOiBBZGp1c3QgdG8gdGhlIEM4OSBzdHlsZQorCXdpdGggbm8gZGVjbGFyYXRpb25zIGFmdGVyIHN0YXRlbWVudHMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmM6IExpa2V3aXNlLgorCisyMDEyLTAzLTA2ICBDaHVuZy1MaW4gVGFuZyAgPGNsdGFuZ0Bjb2Rlc291cmNlcnkuY29tPgorCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfY2FsbCk6IEFkZCBfX0FSTV9FQUJJX18gZ3VhcmQgYXJvdW5kIGNhbGwgdG8KKwlmZmlfY2FsbF9WRlAoKS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBBZGQgX19BUk1fRUFCSV9fIGd1YXJkIGFyb3VuZCB1c2Ugb2YKKwlmZmlfY2xvc3VyZV9WRlAuCisJKiBzcmMvYXJtL3N5c3YuUzogQWRkIF9fQVJNX0VBQklfXyBndWFyZCBhcm91bmQgVkZQIGNvZGUuCisKKzIwMTItMDMtMjEgIFBldGVyIFJvc2luCSA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMgKGZsb2F0X3ZhX2ZuKTogVXNlICVmIHdoZW4KKwlwcmludGluZyBkb3VibGVzICglbGYgaXMgZm9yIGxvbmcgZG91YmxlcykuCisJKG1haW4pOiBMaWtld2lzZS4KKworMjAxMi0wMy0yMSAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cCBbKi0qLWN5Z3dpbiosICotKi1taW5ndypdCisJKHNldF9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnMpOiBBZGQgdGhlIGxpYnJhcnkgc2VhcmNoIGRpciB0byBQQVRICisJKGFuZCBzYXZlIFBBVEggZm9yIGxhdGVyKS4KKwkocmVzdG9yZV9sZF9saWJyYXJ5X3BhdGhfZW52X3ZhcnMpOiBSZXN0b3JlIFBBVEguCisKKzIwMTItMDMtMjAgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYyAobWFpbik6IFJlbW92ZSBidWcuCisJKiBzcmMveDg2L3dpbjMyLlMgW01TVkNdIChmZmlfY2xvc3VyZV9TWVNWKTogTWFrZSB0aGUgJ3N0dWInIGxhYmVsCisJdmlzaWJsZSBvdXRzaWRlIHRoZSBQUk9DLCBzbyB0aGF0IGZmaV9jbG9zdXJlX1RISVNDQUxMIGNhbiBzZWUgaXQuCisKKzIwMTItMDMtMTkgIEFsYW4gSG91cmloYW5lICA8YWxhbmhAZmFpcmxpdGUuY28udWs+CisKKwkqIHNyYy9tNjhrL2ZmaS5jOiBBZGQgTUlOVCBzdXBwb3J0LgorCSogc3JjL202OGsvc3lzdi5TOiBEaXR0by4KKworMjAxMi0wMy0xOSAgY2hlbm5hbSAgPGNzaXRAYXh3YXkuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRml4IEFJWCBjbG9zdXJlCisJc3VwcG9ydC4KKworMjAxMi0wNC0wMiAgUGV0ZXIgQmVyZ25lciAgPGJlcmduZXJAdm5ldC5pYm0uY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmkuYyAoZmZpX3ByZXBfYXJnc19TWVNWKTogRGVjbGFyZSBkb3VibGVfdG1wLgorCVNpbGVuY2UgY2FzdGluZyBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUgd2FybmluZy4KKwlEZWxldGUgZ290byB0byBwcmV2aW91c2x5IGRlbGV0ZWQgbGFiZWwuCisJKGZmaV9jYWxsKTogU2lsZW5jZSBwb3NzaWJseSB1bmRlZmluZWQgd2FybmluZy4KKwkoZmZpX2Nsb3N1cmVfaGVscGVyX1NZU1YpOiBEZWNsYXJlIHZhcmlhYmxlIHR5cGUuCisKKzIwMTItMDMtMTMgIEtheiBLb2ppbWEgIDxra29qaW1hQGdjYy5nbnUub3JnPgorCisJKiBzcmMvc2gvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRG9uJ3QgQVNTRVJUIEFCSSB0ZXN0LAorCWp1c3QgcmV0dXJuIEZGSV9CQURfQUJJIHdoZW4gdGhpbmdzIGFyZSB3cm9uZy4KKwkqIHNyYy9zaDY0L2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCisyMDEyLTAzLTA5ICBEYXZpZCBFZGVsc29obiAgPGRqZS5nY2NAZ21haWwuY29tPgorCisJKiBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIChmZmlfY2xvc3VyZV9BU00pOiBBZGp1c3QgZm9yIERhcndpbjY0CisJY2hhbmdlIHRvIHJldHVybiB2YWx1ZSBvZiBmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOIGFuZCBsb2FkIHR5cGUKKwlmcm9tIHJldHVybiB0eXBlLgorCisyMDEyLTAzLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIHNyYy94ODYvZmZpNjQuYyAoZmZpX2NhbGwpOiBDYXN0IHRoZSByZXR1cm4gdmFsdWUgdG8gdW5zaWduZWQKKwlsb25nLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IENhc3QgdG8gNjRiaXQgYWRkcmVzcyBpbiB0cmFtcG9saW5lLgorCShmZmlfY2xvc3VyZV91bml4NjRfaW5uZXIpOiBDYXN0IHJldHVybiBwb2ludGVyIHRvIHVuc2lnbmVkIGxvbmcKKwlmaXJzdC4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoRkZJX1NJWkVPRl9BUkcpOiBEZWZpbmVkIHRvIDggZm9yIHgzMi4KKwkoZmZpX2FyZyk6IFNldCB0byB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIHgzMi4KKwkoZmZpX3NhcmcpOiBTZXQgdG8gbG9uZyBsb25nIGZvciB4MzIuCisKKzIwMTItMDMtMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZl9jb3JlKTogUHJvcGVybHkgY2hlY2sgYmFkIEFCSS4KKworMjAxMi0wMy0wMyAgQW5kb25pIE1vcmFsZXMgQWxhc3RydWV5ICA8eWxhdHV5YUBnbWFpbC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIC1uby11bmRlZmluZWQgZm9yIGJvdGggMzItIGFuZCA2NC1iaXQgeDg2CisJd2luZG93cy1saWtlIGhvc3RzLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDEyLTAyLTI3ICBNaWthZWwgUGV0dGVyc3NvbiAgPG1pa3BlQGl0LnV1LnNlPgorCisJUFIgbGliZmZpLzUyMjIzCisJKiBNYWtlZmlsZS5hbSAoRkxBR1NfVE9fUEFTUyk6IERlZmluZS4KKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCisyMDEyLTAyLTIzICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy8qL2ZmaXRhcmdldC5oOiBFbnN1cmUgdGhhdCB1c2VycyBuZXZlciBpbmNsdWRlIGZmaXRhcmdldC5oCisJZGlyZWN0bHkuCisKKzIwMTItMDItMjMgIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJUFIgbGliZmZpLzUyMjIxCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwpOiBOZXcKKwlwcm90b3R5cGUuCisJKGZmaV9wcmVwX3Jhd19jbG9zdXJlX2xvYyk6IFVzZSBmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgZm9yCisJdGhpc2NhbGwtY29udmVudGlvbi4KKwkoZmZpX3Jhd19jYWxsKTogVXNlIGZmaV9wcmVwX2FyZ3NfcmF3LgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwpOiBBZGQKKwlpbXBsZW1lbnRhdGlvbiBmb3Igc3R1Yi4KKworMjAxMi0wMi0xMCAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYyAoQU1fTFRMREZMQUdTKTogQWRkIC1uby11bmRlZmluZSBmb3IgeDY0CisJd2luZG93cyB0YXJnZXQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgorCisyMDEyLTAyLTA4ICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZik6IEFsbG93IGZvciBYODZfV0lOMzIKKwlhbHNvIEZGSV9USElTQ0FMTC4KKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9jbG9zdXJlX1RISVNDQUxMKTogQWRkIHByb3RvdHlwZS4KKwkoRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTCk6IE5ldyB0cmFtcG9saW5lIGNvZGUuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQWRkIEZGSV9USElTQ0FMTCBzdXBwb3J0LgorCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoRkZJX1RSQU1QT0xJTkVfU0laRSk6IEFkanVzdCBzaXplLgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9USElTQ0FMTCk6IE5ldyBjbG9zdXJlIGNvZGUKKwlmb3IgdGhpc2NhbGwtY2FsbGluZyBjb252ZW50aW9uLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYzogTmV3IHRlc3QuCisKKzIwMTItMDEtMjggIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJKiBzcmMvbGliZmZpL3NyYy94ODYvZmZpLmMgKGZmaV9jYWxsX3dpbjMyKTogQWRkIG5ldworCWFyZ3VtZW50IHRvIHByb3RvdHlwZSBmb3Igc3BlY2lmeSBjYWxsaW5nLWNvbnZlbnRpb24uCisJKGZmaV9jYWxsKTogQWRkIHN1cHBvcnQgZm9yIHN0ZGNhbGwvdGhpc2NhbGwgY29udmVudGlvbi4KKwkoZmZpX3ByZXBfYXJncyk6IExpa2V3aXNlLgorCShmZmlfcmF3X2NhbGwpOiBMaWtld2lzZS4KKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBBZGQgRkZJX1RISVNDQUxMIGFuZAorCUZGSV9GQVNUQ0FMTC4KKwkqIHNyYy94ODYvd2luMzIuUyAoX2ZmaV9jYWxsX3dpbjMyKTogQWRkIHN1cHBvcnQgZm9yCisJZmFzdGNhbGwvdGhpc2NhbGwgY2FsbGluZy1jb252ZW50aW9uIGNhbGxzLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmM6IE5ldyB0ZXN0LgorCisyMDEyLTAxLTIzICBVcm9zIEJpemphayAgPHViaXpqYWtAZ21haWwuY29tPgorCisJKiBzcmMvYWxwaGEvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQ2hlY2sgZm9yIGJhZCBBQkkuCisKKzIwMTItMDEtMjMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKwkgICAgQ2hyaXMgWW91bmcgIDxjZHlvdW5nQG50bHdvcmxkLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgQW1pZ2Egc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMi0wMS0yMyAgRG1pdHJ5IE5hZGV6aGluICA8ZG1pdHJ5Lm5hZGV6aGluQGdtYWlsLmNvbT4KKworCSogaW5jbHVkZS9mZmlfY29tbW9uLmggKExJS0VMWSwgVU5MSUtFTFkpOiBGaXggZGVmaW5pdGlvbnMuCisKKzIwMTItMDEtMjMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGxpbnV4LW02OGsub3JnPgorCisJKiBzcmMvbTY4ay9zeXN2LlMgKGZmaV9jYWxsX1NZU1YpOiBQcm9wZXJseSB0ZXN0IGZvciBwbGFpbgorCW1jNjgwMDAuICBUZXN0IGZvciBfX0hBVkVfNjg4ODFfXyBpbiBhZGRpdGlvbiB0byBfX01DNjg4ODFfXy4KKworMjAxMi0wMS0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwlQUiBydGwtb3B0aW1pemF0aW9uLzQ4NDk2CisJKiBzcmMvaWE2NC9mZmkuYyAoZmZpX2NhbGwpOiBGaXggdXAgYWxpYXNpbmcgdmlvbGF0aW9ucy4KKworMjAxMi0wMS0wOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAoaT84Ni0qLSopOiBTZXQgVEFSR0VUIHRvIFg4Nl82NC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMS0xMi0wNyAgQW5kcmV3IFBpbnNraSAgPGFwaW5za2lAY2F2aXVtLmNvbT4KKworCVBSIGxpYmZmaS81MDA1MQorCSogc3JjL21pcHMvbjMyLlM6IEFkZCAiLnNldCBtaXBzNCIuCisKKzIwMTEtMTEtMjEgIEFuZHJlYXMgVG9ibGVyICA8YW5kcmVhc3RAZmd6bmV0LmNoPgorCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTEtMTEtMTIgIERhdmlkIEdpbGJlcnQgPGRhdmlkLmdpbGJlcnRAbGluYXJvLm9yZz4KKworCSogZG9jL2xpYmZmaS50ZXhpLCBpbmNsdWRlL2ZmaS5oLmluLCBpbmNsdWRlL2ZmaV9jb21tb24uaCwKKwltYW4vTWFrZWZpbGUuYW0sIG1hbi9mZmkuMywgbWFuL2ZmaV9wcmVwX2NpZi4zLAorCW1hbi9mZmlfcHJlcF9jaWZfdmFyLjMsIHNyYy9hcm0vZmZpLmMsIHNyYy9hcm0vZmZpdGFyZ2V0LmgsCisJc3JjL2NyaXMvZmZpLmMsIHNyYy9wcmVwX2NpZi5jLAorCXRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMsCisJdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMsCisJdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmM6IE1hbnkgY2hhbmdlcyB0byBzdXBwb3J0IHZhcmlhZGljCisJZnVuY3Rpb24gY2FsbHMuCisKKzIwMTEtMTEtMTIgIEt5bGUgTW9mZmV0dCA8S3lsZS5ELk1vZmZldHRAYm9laW5nLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpLmMsIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oLAorCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMsIHNyYy9wb3dlcnBjL3N5c3YuUzogTWFueSBjaGFuZ2VzIGZvcgorCXNvZnRmbG9hdCBwb3dlcnBjIHZhcmlhbnRzLgorCisyMDExLTExLTEyICBQZXRyIFNhbGluZ2VyIDxQZXRyLlNhbGluZ2VyQHNlem5hbS5jej4KKworCSogY29uZmlndXJlLmFjIChGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFKTogRml4IGtmcmVlYnNkIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMTEtMTIgIFRpbW90aHkgV2FsbCAgPHR3YWxsQHVzZXJzLnNmLm5ldD4KKworCSogc3JjL2FybS9mZmkuYyAoZmZpX3ByZXBfYXJncywgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKTogTWF4CisJYWxpZ25tZW50IG9mIDQgZm9yIHdpbmNlIG9uIEFSTS4KKworMjAxMS0xMS0xMiAgS3lsZSBNb2ZmZXR0IDxLeWxlLkQuTW9mZmV0dEBib2VpbmcuY29tPgorCSAgICBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3BwYy9zeXN2LlMsIHNyYy9wcGMvZmZpLmM6IFJlbW92ZSB1c2Ugb2YgcHBjIHN0cmluZworCWluc3RydWN0aW9ucyAobm90IGF2YWlsYWJsZSBvbiBzb21lIGNvcmVzLCBsaWtlIHRoZSBQUEM0NDApLgorCisyMDExLTExLTEyICBLaW11cmEgV2F0YXJ1ICA8a2ltdXJhd0BpLm5pZnR5LmpwPgorCisJKiBtNC9heF9lbmFibGVfYnVpbGRkaXI6IENoYW5nZSBmcm9tIHN0cmluZyBjb21wYXJpc29uIHRvIG51bWVyaWMKKwljb21wYXJpc29uIGZvciB3YyBvdXRwdXQuCisJKiBjb25maWd1cmUuYWM6IEVuYWJsZSBGRklfTU1BUF9FWEVDX1dSSVQgZm9yIGRhcndpbjExIGFrYSBNYWMgT1MKKwlYIDEwLjcuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMTEtMTIgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEFNX0NDQVNGTEFHUyk6IEFkZCAtZyBvcHRpb24gdG8gYnVpbGQgYXNzZW1ibHkKKwlmaWxlcyB3aXRoIGRlYnVnIGluZm8uCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMS0xMS0xMiAgSmFzcGVyIExpZXZpc3NlIEFkcmlhYW5zZSA8amFzcGVyQG9wZW5ic2Qub3JnPgorCisJKiBSRUFETUU6IFVwZGF0ZSBsaXN0IG9mIHN1cHBvcnRlZCBPcGVuQlNEIHN5c3RlbXMuCisKKzIwMTEtMTEtMTIgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogbGlidG9vbC12ZXJzaW9uOiBVcGRhdGUuCisJKiBNYWtlZmlsZS5hbSAobm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTKTogQWRkIHNyYy9kZWJ1Zy5jIGlmCisJRkZJX0RFQlVHLgorCShsaWJmZmlfbGFfU09VUkNFUyk6IFJlbW92ZSBzcmMvZGVidWcuYworCShFWFRSQV9ESVNUKTogQWRkIHNyYy9kZWJ1Zy5jCisJKiBNYWtlZmlsZS5pbjogUmVidWlsdC4KKwkqIFJFQURNRTogVXBkYXRlIGZvciAzLjAuMTEuCisKKzIwMTEtMTEtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYyAoR0NDX0FTX0NGSV9QU0VVRE9fT1ApOiBVc2UgaXQgaW5zdGVhZCBvZiBpbmxpbmUgY2hlY2suCisJKiBjb25maWd1cmUsIGFjbG9jYWwubTQ6IFJlYnVpbGQuCisKKzIwMTEtMDktMDQgIElhaW4gU2FuZG9lICA8aWFpbnNAZ2NjLmdudS5vcmc+CisKKwlQUiBsaWJmZmkvNDk1OTQKKwkqIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgKHN0dWJzKTogTWFrZSB0aGUgc3R1YiBiaW5kaW5nCisJaGVscGVyIHJlZmVyZW5jZSB0cmFjayB0aGUgYXJjaGl0ZWN0dXJlIHBvaW50ZXIgc2l6ZS4KKworMjAxMS0wOC0yNSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CisKKwkqIHNyYy9hcm0vZmZpLmMgKEZGSV9JTklUX1RSQU1QT0xJTkUpOiBSZW1vdmUgaGFyZC1jb2RlZCBhc3NlbWJseQorCWluc3RydWN0aW9ucy4KKwkqIHNyYy9hcm0vc3lzdi5TIChmZmlfYXJtX3RyYW1wb2xpbmUpOiBQdXQgdGhlbSBoZXJlIGluc3RlYWQuCisKKzIwMTEtMDctMTEgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgorCisgICAgICAgICogc3JjL2FybS9mZmkuYyAoRkZJX0lOSVRfVFJBTVBPTElORSk6IENsZWFyIGljYWNoZS4KKworMjAxMS0wNi0yOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmM6IE1vdmUgUFIgbnVtYmVyIHRvIGNvbW1lbnQuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYzogTGlrZXdpc2UuCisKKzIwMTEtMDYtMjkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJUFIgbGliZmZpLzQ2NjYwCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jOiB4ZmFpbCBkZy1vdXRwdXQgb24KKwltaXBzLXNnaS1pcml4NiouCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYzogTGlrZXdpc2UuCisKKzIwMTEtMDYtMTQgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyAodGVzdF9sYXJnZV9mbik6IFVzZSBQUkl1OCwKKwlQUklkOCBpbnN0ZWFkIG9mICVoaHUsICVoaGQuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIFtfX2FscGhhX18gJiYgX19vc2ZfX10gKFBSSWQ4LAorCVBSSXU4KTogRGVmaW5lLgorCVtfX3NnaV9fXSAoUFJJZDgsIFBSSXU4KTogRGVmaW5lLgorCisyMDExLTA0LTI5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogc3JjL2FscGhhL29zZi5TIChVQV9TSSwgRkRFX0VOQ09ESU5HLCBGREVfRU5DT0RFLCBGREVfQVJBTkdFKToKKwlEZWZpbmUuCisJVXNlIHRoZW0gdG8gaGFuZGxlIEVMRiB2cy4gRUNPRkYgZGlmZmVyZW5jZXMuCisJW19fb3NmX19dIChfR0xPQkFMX19GX2ZmaV9jYWxsX29zZik6IERlZmluZS4KKworMjAxMS0wMy0zMCAgVGltb3RoeSBXYWxsICA8dHdhbGxAdXNlcnMuc2YubmV0PgorCisJKiBzcmMvcG93ZXJwYy9kYXJ3aW4uUzogRml4IHVua25vd24gRkRFIGVuY29kaW5nLgorCSogc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUzogZGl0dG8uCisKKzIwMTEtMDItMjUgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3Bvd2VycGMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQWxsb3cgZm9yIG1vcmUKKwkzMi1iaXQgQUJJcy4KKworMjAxMS0wMi0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBtNC9heF9jY19tYXhvcHQubTQ6IERvbid0IC1tYWxpZ24tZG91YmxlIG9yIHVzZSAtZmZhc3QtbWF0aC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0wMi0xMyAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KKworCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDExLTAyLTEzICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIGluY2x1ZGUvZmZpX2NvbW1vbi5oIChVTkxJS0VMWSwgTElLRUxZKTogRGVmaW5lLgorCSogc3JjL3g4Ni9mZmk2NC5jIChVTkxJS0VMWSwgTElLRUxZKTogUmVtb3ZlIGRlZmluaXRpb24uCisJKiBzcmMvcHJlcF9jaWYuYyAoVU5MSUtFTFksIExJS0VMWSk6IFJlbW92ZSBkZWZpbml0aW9uLgorCisJKiBzcmMvcHJlcF9jaWYuYyAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUpOiBDb252ZXJ0IGFzc2VydGlvbiBpbnRvCisJRkZJX0JBRF9UWVBFREVGIHJldHVybi4gIEluaXRpYWxpemUgYXJnIHNpemUgYW5kIGFsaWdubWVudCB0byAwLgorCisJKiBzcmMvcGEvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRG9uJ3QgQVNTRVJUIEFCSSB0ZXN0LAorCWp1c3QgcmV0dXJuIEZGSV9CQURfQUJJIHdoZW4gdGhpbmdzIGFyZSB3cm9uZy4KKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvcG93ZXJwYy9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9taXBzL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCSogc3JjL2lhNjQvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvYXZyMzIvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisKKzIwMTEtMDItMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjL3NwYXJjL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERvbid0IEFTU0VSVCBBQkkgdGVzdCwKKwlqdXN0IHJldHVybiBGRklfQkFEX0FCSSB3aGVuIHRoaW5ncyBhcmUgd3JvbmcuCisKKzIwMTItMDItMTEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CisKKwkqIHNyYy9zcGFyYy92OS5TIChTVEFDS0ZSQU1FKTogQnVtcCB0byAxNzYuCisKKzIwMTEtMDItMDkgIFN0dWFydCBTaGVsdG9uICA8c3Jjc2hlbHRvbkBnbWFpbC5jb20+CisKKwlodHRwOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD0yODY5MTEKKwkqIHNyYy9taXBzL2ZmaXRhcmdldC5oOiBDbGVhbiB1cCBlcnJvciBtZXNzYWdlcy4KKwkqIHNyYy9qYXZhX3Jhd19hcGkuYyAoZmZpX2phdmFfdHJhbnNsYXRlX2FyZ3MpOiBDYXN0IHJhdyBhcmcgdG8KKwlmZmlfcmF3Ki4KKwkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBwcmFnbWEgZm9yIFNHSSBjb21waWxlci4KKworMjAxMS0wMi0wOSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBwb3dlcnBjNjQtKi1kYXJ3aW4qIHN1cHBvcnQuCisKKzIwMTEtMDItMDkgIEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBSRUFETUU6IE1lbnRpb24gSW50ZXJpeC4KKworMjAxMS0wMi0wOSAgSm9uYXRoYW4gQ2FsbGVuICA8YWJjZEBnZW50b28ub3JnPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBJbnRlcml4IHRvIHdpbjMyL2N5Z3dpbi9taW5ndyBjYXNlLgorCSogY29uZmlndXJlOiBEaXR0by4KKwkqIHNyYy9jbG9zdXJlcy5jOiBUcmVhdCBJbnRlcml4IGxpa2UgQ3lnd2luLCBpbnN0ZWFkIG9mIGFzIGEKKwlnZW5lcmljIHdpbjMyLgorCisyMDExLTAyLTA5ICBBbnRob255IEdyZWVuIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jOiBSZW1vdmUgeGZhaWwuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYzogUmVtb3ZlIHhmYWlsLgorCSogc3JjL3g4Ni9mZmk2NC5jIChVTkxJS0VMWSwgTElLRUxZKTogRGVmaW5lLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IENoZWNrIGZvciBiYWQgQUJJLgorCSogc3JjL3ByZXBfY2lmLmMgKFVOTElLRUxZLCBMSUtFTFkpOiBEZWZpbmUuCisJKGluaXRpYWxpemVfYWdncmVnYXRlKTogQ2hlY2sgZm9yIGJhZCB0eXBlcy4KKworMjAxMS0wMi0wOSAgTGFuZG9uIEZ1bGxlciA8bGFuZG9uZkBwbGF1c2libGUuY29vcD4KKworCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgYnVpbGQtaW9zLnNoLCBzcmMvYXJtL2dlbnRyYW1wLnNoLAorCXNyYy9hcm0vdHJhbXBvbGluZS5TLgorCShub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpOiBBZGQgc3JjL2FyYy90cmFtcG9saW5lLlMuCisJKiBjb25maWd1cmUuYWMgKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUpOiBEZWZpbmUuCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfdHJhbXBvbGluZV90YWJsZSkKKwkoZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlLCBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSkKKwkoRkZJX1RSQU1QT0xJTkVfQ09ERUxPQ19DT05GSUcsIEZGSV9UUkFNUE9MSU5FX0NPTkZJR19QQUdFX09GRlNFVCkKKwkoRkZJX1RSQU1QT0xJTkVfQ09VTlQsIGZmaV90cmFtcG9saW5lX2xvY2ssIGZmaV90cmFtcG9saW5lX3RhYmxlcykKKwkoZmZpX3RyYW1wb2xpbmVfdGFibGVfYWxsb2MsIGZmaV9jbG9zdXJlX2FsbG9jLCBmZmlfY2xvc3VyZV9mcmVlKToKKwlEZWZpbmUgZm9yIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgY2FzZSAoaU9TKS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBIYW5kbCBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFIGNhc2UKKwlzZXBhcmF0ZWx5LgorCSogc3JjL2FybS9zeXN2LlM6IEhhbmRsZSBBcHBsZSBpT1MgaG9zdC4KKwkqIHNyYy9jbG9zdXJlcy5jOiBIYW5kbGUgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSBjYXNlLgorCSogYnVpbGQtaW9zLnNoOiBOZXcgZmlsZS4KKwkqIGZmaWNvbmZpZy5oLmluLCBjb25maWd1cmUsIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCSogUkVBRE1FOiBNZW50aW9uIEFSTSBpT1MuCisKKzIwMTEtMDItMDggIE9yZW4gSGVsZCAgPG9yZW5oZUBpbC5pYm0uY29tPgorCisJKiBzcmMvZGxtYWxsb2MuYyAoX1NUUlVDVF9NQUxMSU5GTyk6IERlZmluZSBpbiBvcmRlciB0byBhdm9pZAorCXJlZGVmaW5pdGlvbiBvZiBtYWxsaW5mbyBvbiBIUC1VWC4KKworMjAxMS0wMi0wOCAgR2lubiBDaGVuICA8Z2lubi5jaGVuQG9yYWNsZS5jb20+CisKKwkqIHNyYy9zcGFyYy9mZmkuYyAoZmZpX2NhbGwpOiBNYWtlIGNvbXBhdGlibGUgd2l0aCBTb2xhcmlzIFN0dWRpbworCWFnZ3JlZ2F0ZSByZXR1cm4gQUJJLiAgRmx1c2ggY2FjaGUuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRmx1c2ggY2FjaGUuCisKKzIwMTEtMDItMTEgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCUZyb20gVG9tIEhvbmVybWFubiA8dG9tLmhvbmVybWFubkBvcmFjbGUuY29tPjoKKwkqIHNyYy9wb3dlcnBjL2FpeC5TIChmZmlfY2FsbF9BSVgpOiBTdXBwb3J0IGZvciB4bGMgdG9vbGNoYWluIG9uCisJQUlYLiAgRGVjbGFyZSAuZmZpX3ByZXBfYXJncy4gIEluc2VydCBub3BzIGFmdGVyIGJyYW5jaAorCWluc3RydWN0aW9ucyBzbyB0aGF0IHRoZSBBSVggbGlua2VyIGNhbiBpbnNlcnQgVE9DIHJlbG9hZAorCWluc3RydWN0aW9ucy4KKwkqIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlM6IERlY2xhcmUgLmZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4uCisKKzIwMTEtMDItMDggIEVkICA8ZWRAa2R0Yy5uZXQ+CisKKwkqIHNyYy9wb3dlcnBjL2FzbS5oOiBGaXggZ3JhbW1hciBuaXQgaW4gY29tbWVudC4KKworMjAxMS0wMi0wOCAgVWxpIExpbmsgIDx1bC5tY2FtYWZpYUBsaW5raXR1cC5kZT4KKworCSogaW5jbHVkZS9mZmkuaC5pbiAoRkZJXzY0X0JJVF9NQVgpOiBEZWZpbmUgYW5kIHVzZS4KKworMjAxMS0wMi0wOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwlQUiBsaWJmZmkvNDY2NjEKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIChtYWluKTogQ2FzdCB2b2lkICogdG8KKwl1aW50cHRyX3QgZmlyc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyAobWFpbik6IExpa2V3aXNlLgorCisyMDExLTAyLTA4ICBSYWZhZWwgQXZpbGEgZGUgRXNwaW5kb2xhICA8cmVzcGluZG9sYUBtb3ppbGxhLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBGaXggeDg2IHRlc3QgZm9yIHBjIHJlbGF0ZWQgcmVsb2NzLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDExLTAyLTA3ICBKb2VsIFNoZXJyaWxsIDxqb2VsLnNoZXJyaWxsQG9hcmNvcnAuY29tPgorCisJKiBsaWJmZmkvc3JjL202OGsvZmZpLmM6IEFkZCBSVEVNUyBzdXBwb3J0IGZvciBjYWNoZSBmbHVzaGluZy4KKwlIYW5kbGUgY2FzZSB3aGVuIENQVSB2YXJpYW50IGRvZXMgbm90IGhhdmUgbG9uZyBkb3VibGUgc3VwcG9ydC4KKwkqIGxpYmZmaS9zcmMvbTY4ay9zeXN2LlM6IEFkZCBzdXBwb3J0IGZvciBtYzY4MDAwLCBDb2xkZmlyZSwKKwlhbmQgY29yZXMgd2l0aCBzb2Z0IGZsb2F0aW5nIHBvaW50LgorCisyMDExLTAyLTA3ICBKb2VsIFNoZXJyaWxsIDxqb2VsLnNoZXJyaWxsQG9hcmNvcnAuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBtaXBzKi0qLXJ0ZW1zKiBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogc3JjL21pcHMvZmZpdGFyZ2V0Lmg6IEVuc3VyZSBuZWVkZWQgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUKKwlmb3IgdGFyZ2V0cyB3aGljaCBkbyBub3QgaGF2ZSBzZ2lkZWZzLmguCisKKzIwMTEtMDEtMjYgIERhdmUgS29ybiAgPGRhdmUua29ybi5jeWd3aW5AZ21haWwuY29tPgorCisJUFIgdGFyZ2V0LzQwMTI1CisJKiBjb25maWd1cmUuYWMgKEFNX0xUTERGTEFHUyk6IEFkZCAtYmluZGlyIG9wdGlvbiBmb3Igd2luZG93cyBETExzLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDEwLTEyLTE4ICBJYWluIFNhbmRvZSAgPGlhaW5zQGdjYy5nbnUub3JnPgorCisJUFIgbGliZmZpLzI5MTUyCisJUFIgbGliZmZpLzQyMzc4CisJKiBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TOiBQcm92aWRlIERhcndpbjY0IGltcGxlbWVudGF0aW9uLAorCXVwZGF0ZSBjb21tZW50cy4KKwkqIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIChQT1dFUlBDX0RBUldJTjY0KTogTmV3LAorCShGRklfVFJBTVBPTElORV9TSVpFKTogVXBkYXRlIGZvciBEYXJ3aW42NC4KKwkqIHNyYy9wb3dlcnBjL2Rhcndpbi5TOiBQcm92aWRlIERhcndpbjY0IGltcGxlbWVudGF0aW9uLAorCXVwZGF0ZSBjb21tZW50cy4KKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYzogTGlrZXdpc2UuCisKKzIwMTAtMTItMDYgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3ApOiBVc2UgZG91YmxlCisJYmFja3NsYXNoZXMuCisJKGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wKTogTGlrZXdpc2UuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTAtMTItMDMgIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHNyYy9hcm0vc3lzdi5TIChmZmlfY2xvc3VyZV9TWVNWKTogQWRkIFVOV0lORCB0byAucGFkIGRpcmVjdGl2ZS4KKwkoZmZpX2Nsb3N1cmVfVkZQKTogU2FtZS4KKwkoZmZpX2NhbGxfVkZQKTogTW92ZSBkb3duIHRvIGJlZm9yZSBmZmlfY2xvc3VyZV9WRlAuIEFkZCAnLmZwdSB2ZnAnCisJZGlyZWN0aXZlLgorCisyMDEwLTEyLTAxICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaCBbX19zZ2ldIChQUklkNjQsIFBSSXU2NCk6IERlZmluZS4KKwkoUFJJdVBUUik6IERlZmluZS4KKworMjAxMC0xMS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KKwkgICAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHNyYy94ODYvc3lzdi5TIChGREVfRU5DT0RJTkcsIEZERV9FTkNPREUpOiBEZWZpbmUuCisJKC5laF9mcmFtZSk6IFVzZSBGREVfRU5DT0RJTkcuCisJKC5MQVNGREUxLCAuTEFTRkRFMiwgTEFTRkRFMyk6IFNpbXBsaWZ5IHdpdGggRkRFX0VOQ09ERS4KKworMjAxMC0xMS0yMiAgSmFjZWsgQ2FiYW4gPGphY2VrQGNvZGV3ZWF2ZXJzLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3Igc3ltYm9sIHVuZGVyc2NvcmVzIG9uIG1pbmd3LXc2NC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKwkqIHNyYy94ODYvd2luNjQuUzogQ29ycmVjdGx5IGFjY2VzcyBleHRlcm4gc3ltYm9scyBpbiByZXNwZWN0IHRvCisJdW5kZXJzY29yZXMuCisKKzIwMTAtMTEtMTUgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHA6IFJlbmFtZSAuLi4KKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLmV4cDogLi4uIHRvIHRoaXMuCisJKiBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwOiBEb24ndCBsb2FkIGxpYmZmaS1kZy5leHAuCisJKiBsaWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwOiBMaWtld2lzZS4KKworMjAxMC0xMC0yOCAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogc3JjL2FybS9mZmkuYyAoZmZpX3ByZXBfYXJncyk6IEFkZCBWRlAgcmVnaXN0ZXIgYXJndW1lbnQgaGFuZGxpbmcKKwljb2RlLCBuZXcgcGFyYW1ldGVyLCBhbmQgcmV0dXJuIHZhbHVlLiBVcGRhdGUgY29tbWVudHMuCisJKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogQWRkIGNhc2UgZm9yIFZGUCBzdHJ1Y3QgcmV0dXJuIHZhbHVlcy4gQWRkCisJY2FsbCB0byBsYXlvdXRfdmZwX2FyZ3MoKS4KKwkoZmZpX2NhbGxfU1lTVik6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KKwkoZmZpX2NhbGxfVkZQKTogTmV3IGRlY2xhcmF0aW9uLgorCShmZmlfY2FsbCk6IEFkZCBWRlAgc3RydWN0IHJldHVybiBjb25kaXRpb25zLiBDYWxsIGZmaV9jYWxsX1ZGUCgpCisJd2hlbiBBQkkgaXMgRkZJX1ZGUC4KKwkoZmZpX2Nsb3N1cmVfVkZQKTogTmV3IGRlY2xhcmF0aW9uLgorCShmZmlfY2xvc3VyZV9TWVNWX2lubmVyKTogQWRkIG5ldyB2ZnBfYXJncyBwYXJhbWV0ZXIsIHVwZGF0ZSBjYWxsIHRvCisJZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKCkuCisJKGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVik6IFVwZGF0ZSBwYXJhbWV0ZXJzLiBBZGQgVkZQIGFyZ3VtZW50CisJY2FzZSBoYW5kbGluZy4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBQYXNzIGZmaV9jbG9zdXJlX1ZGUCB0byB0cmFtcG9saW5lCisJY29uc3RydWN0aW9uIHVuZGVyIFZGUCBoYXJkLWZsb2F0LgorCShyZWNfdmZwX3R5cGVfcCk6IE5ldyBmdW5jdGlvbi4KKwkodmZwX3R5cGVfcCk6IFNhbWUuCisJKHBsYWNlX3ZmcF9hcmcpOiBTYW1lLgorCShsYXlvdXRfdmZwX2FyZ3MpOiBTYW1lLgorCSogc3JjL2FybS9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IEFkZCBGRklfVkZQLiBEZWZpbmUgRkZJX0RFRkFVTFRfQUJJCisJYmFzZWQgb24gX19BUk1fUENTX1ZGUC4KKwkoRkZJX0VYVFJBX0NJRl9GSUVMRFMpOiBEZWZpbmUgZm9yIGFkZGluZyBWRlAgaGFyZC1mbG9hdCBzcGVjaWZpYworCWZpZWxkcy4KKwkoRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVCk6IERlZmluZSBpbnRlcm5hbGx5IHVzZWQgdHlwZSBjb2RlLgorCShGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRSk6IFNhbWUuCisJKiBzcmMvYXJtL3N5c3YuUyAoZmZpX2NhbGxfU1lTVik6IENoYW5nZSBjYWxsIG9mIGZmaV9wcmVwX2FyZ3MoKSB0bworCWRpcmVjdCBjYWxsLiBNb3ZlIGZ1bmN0aW9uIHBvaW50ZXIgbG9hZCB1cHdhcmRzLgorCShmZmlfY2FsbF9WRlApOiBOZXcgZnVuY3Rpb24uCisJKGZmaV9jbG9zdXJlX1ZGUCk6IFNhbWUuCisKKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cCAoY2hlY2stZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCisJKGRnLXNraXAtaWYpOiBOZXcgZnVuY3Rpb24uCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jOiBTa2lwIGlmIHRhcmdldCBpcyBhcm0qLSotKgorCWFuZCBjb21waWxlciBvcHRpb25zIGluY2x1ZGUgLW1mbG9hdC1hYmk9aGFyZC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jOiBTYW1lLgorCisyMDEwLTEwLTAxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIGxpYmZmaS80NTY3NworCSogc3JjL3g4Ni9mZmk2NC5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IEVuc3VyZSBjaWYtPmJ5dGVzIGlzCisJYSBtdWx0aXBsZSBvZiA4LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmM6IE5ldyB0ZXN0LgorCisyMDEwLTA4LTIwICBNYXJrIFdpZWxhYXJkICA8bWp3QHJlZGhhdC5jb20+CisKKwkqIHNyYy9jbG9zdXJlcy5jIChvcGVuX3RlbXBfZXhlY19maWxlX21udCk6IENoZWNrIGlmIGdldG1udGVudF9yCisJcmV0dXJucyBOVUxMLgorCisyMDEwLTA4LTA5ICBBbmRyZWFzIFRvYmxlciAgPGFuZHJlYXN0QGZnem5ldC5jaD4KKworCSogY29uZmlndXJlLmFjOiBBZGQgdGFyZ2V0IHBvd2VycGM2NC0qLWZyZWVic2QqLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmM6IFBhc3MKKwktbWxvbmctZG91YmxlLTEyOCBvbmx5IHRvIGxpbnV4IHRhcmdldHMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmM6IExpa2V3aXNlLgorCisyMDEwLTA4LTA1ICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKyAgICAgICAgKiBNYWtlZmlsZS5hbTogUGFzcyBGRklfREVCVUcgZGVmaW5lIHRvIG1zdmNjLnNoIGZvciBsaW5raW5nIHRvIHRoZQorICAgICAgICBkZWJ1ZyBDUlQgd2hlbiAtLWVuYWJsZS1kZWJ1ZyBpcyBnaXZlbi4KKyAgICAgICAgKiBjb25maWd1cmUuYWM6IERlZmluZSBpdC4KKyAgICAgICAgKiBtc3ZjYy5zaDogVHJhbnNsYXRlIC1nIGFuZCAtREZGSV9ERUJVRyBhcHByb3ByaWF0ZWx5LgorCisyMDEwLTA4LTA0ICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0Lmg6IEFkZCBYODZfQU5ZIGRlZmluZSBmb3IgYWxsIHg4Ni94ODZfNjQKKwlwbGF0Zm9ybXMuCisJKiBzcmMveDg2L2ZmaS5jOiBSZW1vdmUgcmVkdW5kYW50IGlmZGVmIGNoZWNrcy4KKwkqIHNyYy9wcmVwX2NpZi5jOiBQdXNoIHN0YWNrIHNwYWNlIGNvbXB1dGF0aW9uIGludG8gc3JjL3g4Ni9mZmkuYworCWZvciBYODZfQU5ZIHNvIHJldHVybiB2YWx1ZSBzcGFjZSBkb2Vzbid0IGdldCBhZGRlZCB0d2ljZS4KKworMjAxMC0wOC0wMyAgTmVpbCBSYXNoYnJvb2tlIDxuZWlsQHBhcmt3YXljYy5jby51az4KKworCSogbXN2Y2Muc2g6IERvbid0IHBhc3MgLXNhZmVzZWggdG8gbWw2NCBiZWNhdXNlIGJlaGF2aW9yIGlzIGJ1Z2d5LgorCisyMDEwLTA3LTIyICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIHNyYy8qL2ZmaXRhcmdldC5oOiBNYWtlIEZGSV9MQVNUX0FCSSBvbmUgcGFzdCB0aGUgbGFzdCB2YWxpZCBBQkkuCisJKiBzcmMvcHJlcF9jaWYuYzogRml4IEFCSSBhc3NlcnRpb24uCisgICAgICAgICogc3JjL2NyaXMvZmZpLmM6IERpdHRvLgorCisyMDEwLTA3LTEwICBFdmFuIFBob2VuaXggIDxldmFuQGZhbGxpbmdzbm93Lm5ldD4KKworCSogc3JjL2Nsb3N1cmVzLmMgKHNlbGludXhfZW5hYmxlZF9jaGVjayk6IEZpeCBzdHJuY21wIHVzYWdlIGJ1Zy4KKworMjAxMC0wNy0wNyAgRGFuIEhvcsOhayA8ZGFuQGRhbm55LmN6PgorCisJKiBpbmNsdWRlL2ZmaS5oLmluOiBQcm90ZWN0ICNkZWZpbmUgd2l0aCAjaWZuZGVmLgorCSogc3JjL3Bvd2VycGMvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCSogc3JjL3MzOTAvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCSogc3JjL3NwYXJjL2ZmaXRhcmdldC5oOiBEaXR0by4KKworMjAxMC0wNy0wNyAgIE5laWwgUm9iZXJ0cyA8bmVpbEBsaW51eC5pbnRlbC5jb20+CisKKwkqIHNyYy94ODYvc3lzdi5TIChmZmlfY2FsbF9TWVNWKTogQWxpZ24gdGhlIHN0YWNrIHBvaW50ZXIgdG8KKwkxNi1ieXRlcy4KKworMjAxMC0wNy0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIE1ha2VmaWxlLmFtIChBTV9NQUtFRkxBR1MpOiBQYXNzIGFsc28gbWFuZGlyIHRvIHN1Ym1ha2VzLgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGVkLgorCisyMDEwLTA1LTE5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogY29uZmlndXJlLmFjIChsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsKTogQ2hlY2sgZm9yIGlsbGVnYWwgaW4gYXMKKwlvdXRwdXQsIHRvby4KKwkobGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCk6IENoZWNrIGZvciAuYXNjaWkuCisJKGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wKTogQ2hlY2sgZm9yIC5zdHJpbmcuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBmZmljb25maWcuaC5pbjogUmVnZW5lcmF0ZS4KKwkqIHNyYy94ODYvc3lzdi5TICguZWhfZnJhbWUpOiBVc2UgLmFzY2lpLCAuc3RyaW5nIG9yIGVycm9yLgorCisyMDEwLTA1LTExICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIGRvYy9saWJmZmkudGV4OiBEb2N1bWVudCBwcmV2aW91cyBjaGFuZ2UuCisKKzIwMTAtMDUtMTEgIE1ha290byBLYXRvIDxtX2thdG9AZ2EyLnNvLW5ldC5uZS5qcD4KKworCSogc3JjL3g4Ni9mZmkuYyAoZmZpX2NhbGwpOiBEb24ndCBjb3B5IHN0cnVjdHMgcGFzc2VkIGJ5IHZhbHVlLgorCisyMDEwLTA1LTA1ICBNaWNoYWVsIEtvaGxlciA8bWljaGFlbGtvaGxlckBsaXZlLmNvbT4KKworCSogc3JjL2RsbWFsbG9jLmMgKGRsZnJlZSk6IEZpeCBzcGVsbGluZy4KKwkqIHNyYy9pYTY0L2ZmaS5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IERpdHRvLgorCSogY29uZmlndXJlLmFjOiBEaXR0by4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMC0wNC0xMyAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBtc3ZjYy5zaDogQnVpbGQgd2l0aCAtVzMgaW5zdGVhZCBvZiAtV2FsbC4KKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYzogUmVtb3ZlIGJ1aWxkIHdhcm5pbmdzLgorCSogc3JjL3g4Ni9mZmkuYzogRGl0dG8uCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oOiBEaXR0by4KKworMjAxMC0wNC0xMiAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCSAgICBXYWx0ZXIgTWVpbmwgPHd1bm9AbHN2dy5kZT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgT1MvMiBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCSogc3JjL2Nsb3N1cmVzLmM6IERpdHRvLgorCSogc3JjL2RsbWFsbG9jLmM6IERpdHRvLgorCSogc3JjL3g4Ni93aW4zMi5TOiBEaXR0by4KKworMjAxMC0wNC0wNyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jOiBSZW1vdmUgdW51c2VkIGFyZ3MgdmFyaWFibGUuCisKKzIwMTAtMDQtMDIgIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+CisKKwkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgorCSogYWNsb2NhbC5tNDogUmVnZW5lcmF0ZS4KKwkqIGluY2x1ZGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBtYW4vTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisKKzIwMTAtMDMtMzAgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogbXN2Y2Muc2g6IERpc2FibGUgYnVpbGQgd2FybmluZ3MuCisJKiBSRUFETUUgKHRlc3RlZCk6IENsYXJpZnkgd2luZG93cyBidWlsZCBwcm9jZWR1cmUuCisKKzIwMTAtMDMtMTUgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSk6IE5ldyB0ZXN0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogZmZpY29uZmlnLmguaW46IFJlZ2VuZXJhdGUuCisJKiBsaWJmZmkvc3JjL3g4Ni91bml4NjQuUyAoLmVoX2ZyYW1lKQorCVtIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFXTogVXNlIEB1bndpbmQgc2VjdGlvbiB0eXBlLgorCiAyMDEwLTAzLTE0ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AdWJ1bnR1LmNvbT4KIAogCSogc3JjL3g4Ni9mZmk2NC5jOiBGaXggdHlwbyBpbiBjb21tZW50LgogCSogc3JjL3g4Ni9mZmkuYzogVXNlIC8qIC4uLiAqLyBjb21tZW50IHN0eWxlLgogCisyMDEwLTAyLTI0ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogZG9jL2xpYmZmaS50ZXhpIChUaGUgQ2xvc3VyZSBBUEkpOiBGaXggdHlwby4KKwkqIGRvYy9saWJmZmkuaW5mbzogUmVtb3ZlLgorCisyMDEwLTAyLTE1ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AdWJ1bnR1LmNvbT4KKworCSogc3JjL2FybS9zeXN2LlMgKF9fQVJNX0FSQ0hfXyk6IERlZmluZSBmb3IgcHJvY2Vzc29yCisJX19BUk1fQVJDSF83RU1fXy4KKworMjAxMC0wMS0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CisKKwkqIFJFQURNRTogQWRkIG5vdGVzIG9uIGJ1aWxkaW5nIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysuCisKKzIwMTAtMDEtMTUgIERhbmllbCBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogbXN2Y2Muc2g6IE5ldyBmaWxlLgorCisJKiBzcmMveDg2L3dpbjMyLlM6IFBvcnQgYXNzZW1ibHkgcm91dGluZXMgdG8gTVNWQyBhbmQgI2lmZGVmLgorCSogc3JjL3g4Ni9mZmkuYzogVHdlYWsgZnVuY3Rpb24gZGVjbGFyYXRpb24gYW5kIHJlbW92ZSBleGNlc3MKKwlwYXJlbnMuCisJKiBpbmNsdWRlL2ZmaS5oLmluOiBBZGQgX19kZWNsc3BlYyhhbGlnbig4KSkgdG8gdHlwZWRlZiBzdHJ1Y3QKKwlmZmlfY2xvc3VyZS4KKworCSogc3JjL3g4Ni9mZmkuYzogTWVyZ2UgZmZpX2NhbGxfU1lTViBhbmQgZmZpX2NhbGxfU1REQ0FMTCBpbnRvIG5ldworCWZ1bmN0aW9uIGZmaV9jYWxsX3dpbjMyIG9uIFg4Nl9XSU4zMi4KKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2NhbGxfU1lTVik6IFJlbmFtZSB0byBmZmlfY2FsbF93aW4zMi4KKwkoZmZpX2NhbGxfU1REQ0FMTCk6IFJlbW92ZS4KKworCSogc3JjL3ByZXBfY2lmLmMgKGZmaV9wcmVwX2NpZik6IE1vdmUgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBjb2RlCisJdG8gZmZpX3ByZXBfY2lmX21hY2hkZXAgZm9yIHg4Ni4KKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogVG8gaGVyZS4KKworMjAxMC0wMS0xNSAgT2xpdmVyIEtpZGRsZSAgPG9raWRkbGVAeWFob28uY28udWs+CisKKwkqIHNyYy94ODYvZmZpdGFyZ2V0LmggKGZmaV9hYmkpOiBDaGVjayBmb3IgX19pMzg2IGFuZCBfX2FtZDY0IGZvcgorCVN1biBTdHVkaW8gY29tcGlsZXIgY29tcGF0aWJpbGl0eS4KKworMjAxMC0wMS0xMiAgQ29ucmFkIElyd2luIDxjb25yYWQuaXJ3aW5AZ21haWwuY29tPgorCisJKiBkb2MvbGliZmZpLnRleGk6IEFkZCBjbG9zdXJlIGV4YW1wbGUuCisKIDIwMTAtMDEtMDcgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgogCiAJUFIgbGliZmZpLzQwNzAxCkBAIC0xNDgsNiArMTA1MSwxMyBAQAogCSogc3JjL3BhL2ZmaS5jIChmZmlfY2xvc3VyZV9pbm5lcl9wYTMyKTogSGFuZGxlIEZGSV9UWVBFX0xPTkdET1VCTEUKIAl0eXBlIG9uIEhQLVVYLgogCisyMDEyLTAyLTEzICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCVBSIGxpYmZmaS81MjIyMQorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfcmF3X2Nsb3N1cmVfbG9jKTogQWRkIHRoaXNjYWxsCisJc3VwcG9ydCBmb3IgWDg2X1dJTjMyLgorCShGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMKTogRml4IGRpc3BsYWNlbWVudC4KKwogMjAwOS0xMi0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KIAogCSogc3JjL3NwYXJjL2ZmaS5jIChmZmlfY2xvc3VyZV9zcGFyY19pbm5lcl92OSk6IFByb3Blcmx5IGFsaWduICdsb25nCkBAIC0zMjIsNiArMTIzMiwxMSBAQAogCSogbWFuL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgogCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBSZWdlbmVyYXRlLgogCisyMDExLTA4LTIyICBKYXNwZXIgTGlldmlzc2UgQWRyaWFhbnNlIDxqYXNwZXJAb3BlbmJzZC5vcmc+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIE9wZW5CU0QvaHBwYSBhbmQgT3BlbkJTRC9wb3dlcnBjIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKIDIwMDktMDctMzAgIFJhbGYgV2lsZGVuaHVlcyAgPFJhbGYuV2lsZGVuaHVlc0BnbXguZGU+CiAKIAkqIGNvbmZpZ3VyZS5hYyAoX0FDX0FSR19WQVJfUFJFQ0lPVVMpOiBVc2UgbTRfcmVuYW1lX2ZvcmNlLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpCmluZGV4IDUyNzJmMzMuLmYzZWU4YjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nLmxpYmZmaQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkKQEAgLTEsMzUgKzEsNiBAQAotMjAxMC0wMS0xNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQHJlZGhhdC5jb20+CisyMDExLTAyLTA4ICBBbmRyZWFzIFRvYmxlciAgPGFuZHJlYXN0QGZnem5ldC5jaD4KIAotCSogUkVBRE1FOiBBZGQgbm90ZXMgb24gYnVpbGRpbmcgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLQotMjAxMC0wMS0xNSAgRGFuaWVsIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgotCi0JKiBtc3ZjYy5zaDogTmV3IGZpbGUuCi0KLQkqIHNyYy94ODYvd2luMzIuUzogUG9ydCBhc3NlbWJseSByb3V0aW5lcyB0byBNU1ZDIGFuZCAjaWZkZWYuCi0JKiBzcmMveDg2L2ZmaS5jOiBUd2VhayBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIGV4Y2VzcwotCXBhcmVucy4KLQkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBfX2RlY2xzcGVjKGFsaWduKDgpKSB0byB0eXBlZGVmIHN0cnVjdAotCWZmaV9jbG9zdXJlLgotCi0JKiBzcmMveDg2L2ZmaS5jOiBNZXJnZSBmZmlfY2FsbF9TWVNWIGFuZCBmZmlfY2FsbF9TVERDQUxMIGludG8gbmV3Ci0JZnVuY3Rpb24gZmZpX2NhbGxfd2luMzIgb24gWDg2X1dJTjMyLgotCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2FsbF9TWVNWKTogUmVuYW1lIHRvIGZmaV9jYWxsX3dpbjMyLgotCShmZmlfY2FsbF9TVERDQUxMKTogUmVtb3ZlLgotCi0JKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmKTogTW92ZSBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGNvZGUKLQl0byBmZmlfcHJlcF9jaWZfbWFjaGRlcCBmb3IgeDg2LgotCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBUbyBoZXJlLgotCi0yMDEwLTAxLTE1ICBPbGl2ZXIgS2lkZGxlICA8b2tpZGRsZUB5YWhvby5jby51az4KLQotCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IENoZWNrIGZvciBfX2kzODYgYW5kIF9fYW1kNjQgZm9yCi0JU3VuIFN0dWRpbyBjb21waWxlciBjb21wYXRpYmlsaXR5LiAKLQotMjAxMC0wMS0xMiAgQ29ucmFkIElyd2luIDxjb25yYWQuaXJ3aW5AZ21haWwuY29tPgotCi0JKiBkb2MvbGliZmZpLnRleGk6IEFkZCBjbG9zdXJlIGV4YW1wbGUuCi0JKiBkb2MvbGliZmZpLmluZm86IFJlYnVpbHQuCisJKiB0ZXN0c3VpdGUvbGliL2xpYmZmaS5leHA6IFR3ZWFrIGZvciBzdGFuZC1hbG9uZSBtb2RlLgogCiAyMDA5LTEyLTI1ICBTYW11bGkgU3VvbWluZW4gIDxzc3VvbWluZW5AZ2VudG9vLm9yZz4KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFCmluZGV4IGVjMmZkNjkuLmFhNjAzNDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTElDRU5TRQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UKQEAgLTEsNCArMSw0IEBACi1saWJmZmkgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwOSAgQW50aG9ueSBHcmVlbiwgUmVkIEhhdCwgSW5jIGFuZCBvdGhlcnMuICAKK2xpYmZmaSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDEyICBBbnRob255IEdyZWVuLCBSZWQgSGF0LCBJbmMgYW5kIG90aGVycy4KIFNlZSBzb3VyY2UgZmlsZXMgZm9yIGRldGFpbHMuCiAKIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtOSw4ICs5LDggQEAKIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQoraW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAKIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmFtCmluZGV4IGY0N2RkMWEuLjRhODU1ZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbQpAQCAtMTAsMjkgKzEwLDMyIEBACiAJc3JjL2F2cjMyL2ZmaS5jIHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaXRhcmdldC5oIFwKIAlzcmMvY3Jpcy9mZmkuYyBzcmMvY3Jpcy9zeXN2LlMgc3JjL2NyaXMvZmZpdGFyZ2V0LmggXAogCXNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L2ZmaXRhcmdldC5oIHNyYy9pYTY0L2lhNjRfZmxhZ3MuaCBcCi0Jc3JjL2lhNjQvdW5peC5TIFwKLQlzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9uMzIuUyBzcmMvbWlwcy9vMzIuUyBcCi0Jc3JjL21pcHMvZmZpdGFyZ2V0LmggXAotCXNyYy9tMzJyL2ZmaS5jIHNyYy9tMzJyL3N5c3YuUyBzcmMvbTMyci9mZml0YXJnZXQuaCBcCi0Jc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TIHNyYy9tNjhrL2ZmaXRhcmdldC5oIFwKLQlzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgXAorCXNyYy9pYTY0L3VuaXguUyBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9uMzIuUyBzcmMvbWlwcy9vMzIuUyBcCisJc3JjL21pcHMvZmZpdGFyZ2V0Lmggc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIFwKKwlzcmMvbTMyci9mZml0YXJnZXQuaCBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgXAorCXNyYy9tNjhrL2ZmaXRhcmdldC5oIHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCiAJc3JjL3Bvd2VycGMvbGludXg2NC5TIHNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TIFwKLQlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2FzbS5oIFwKLQlzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9kYXJ3aW4uUyBcCi0Jc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIFwKLQlzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmggXAotCXNyYy9zMzkwL2ZmaS5jIHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NoL2ZmaS5jIHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2g2NC9mZmkuYyBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpdGFyZ2V0LmggXAotCXNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TIHNyYy9zcGFyYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL2ZmaS5jIHNyYy94ODYvZGFyd2luNjQuUyBcCi0Jc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUyBzcmMveDg2L3dpbjMyLlMgc3JjL3g4Ni93aW42NC5TIFwKLQlzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZnJlZWJzZC5TIFwKLQlzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaXRhcmdldC5oIFwKLQlzcmMvcGEvZmZpdGFyZ2V0Lmggc3JjL3BhL2ZmaS5jIHNyYy9wYS9saW51eC5TIHNyYy9wYS9ocHV4MzIuUyBcCi0Jc3JjL2Zydi9mZmkuYyBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaXRhcmdldC5oIHNyYy9kbG1hbGxvYy5jIFwKLQlsaWJ0b29sLXZlcnNpb24gQ2hhbmdlTG9nLmxpYmZmaSBtNC9saWJ0b29sLm00IFwKLQltNC9sdH5vYnNvbGV0ZS5tNCBtNC9sdG9wdGlvbnMubTQgbTQvbHRzdWdhci5tNCBtNC9sdHZlcnNpb24ubTQKKwlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2FzbS5oIHNyYy9wb3dlcnBjL2FpeC5TIFwKKwlzcmMvcG93ZXJwYy9kYXJ3aW4uUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIFwKKwlzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBcCisJc3JjL3Bvd2VycGMvZmZpdGFyZ2V0Lmggc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIFwKKwlzcmMvczM5MC9mZml0YXJnZXQuaCBzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUwlcCisJc3JjL3NoL2ZmaXRhcmdldC5oIHNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBcCisJc3JjL3NoNjQvZmZpdGFyZ2V0Lmggc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgXAorCXNyYy9zcGFyYy9mZml0YXJnZXQuaCBzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKKwlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L2Rhcndpbi5TIFwKKwlzcmMveDg2L3dpbjY0LlMgc3JjL3g4Ni9mcmVlYnNkLlMgc3JjL3g4Ni9mZmk2NC5jIFwKKwlzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0Lmggc3JjL3BhL2ZmaXRhcmdldC5oCVwKKwlzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIHNyYy9mcnYvZmZpLmMgXAorCXNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAorCXNyYy9tb3hpZS9mZmkuYyBzcmMvbW94aWUvZWFiaS5TIGxpYnRvb2wtdmVyc2lvbiBcCisJQ2hhbmdlTG9nLmxpYmZmaSBtNC9saWJ0b29sLm00IG00L2x0fm9ic29sZXRlLm00IFwKKwltNC9sdG9wdGlvbnMubTQgbTQvbHRzdWdhci5tNCBtNC9sdHZlcnNpb24ubTQgXAorCW00L2x0dmVyc2lvbi5tNCBzcmMvYXJtL2dlbnRyYW1wLnNoIHNyYy9kZWJ1Zy5jIFwKKwltc3ZjYy5zaCBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IFwKKwlnZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5IFwKKyAgICAgICAgbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogXAorCXNyYy9hcm0vdHJhbXBvbGluZS5TCiAKIGluZm9fVEVYSU5GT1MgPSBkb2MvbGliZmZpLnRleGkKIApAQCAtNjksNiArNzIsNyBAQAogCSJleGVjX3ByZWZpeD0kKGV4ZWNfcHJlZml4KSIgXAogCSJpbmZvZGlyPSQoaW5mb2RpcikiIFwKIAkibGliZGlyPSQobGliZGlyKSIgXAorCSJtYW5kaXI9JChtYW5kaXIpIiBcCiAJInByZWZpeD0kKHByZWZpeCkiIFwKIAkiQVI9JChBUikiIFwKIAkiQVM9JChBUykiIFwKQEAgLTg2LDcgKzkwLDcgQEAKIGxpYl9MVExJQlJBUklFUyA9IGxpYmZmaS5sYQogbm9pbnN0X0xUTElCUkFSSUVTID0gbGliZmZpX2NvbnZlbmllbmNlLmxhCiAKLWxpYmZmaV9sYV9TT1VSQ0VTID0gc3JjL2RlYnVnLmMgc3JjL3ByZXBfY2lmLmMgc3JjL3R5cGVzLmMgXAorbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCiAJCXNyYy9yYXdfYXBpLmMgc3JjL2phdmFfcmF3X2FwaS5jIHNyYy9jbG9zdXJlcy5jCiAKIHBrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKQEAgLTk0LDYgKzk4LDEwIEBACiAKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyA9CiAKK2lmIEZGSV9ERUJVRworbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9kZWJ1Zy5jCitlbmRpZgorCiBpZiBNSVBTCiBub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbzMyLlMgc3JjL21pcHMvbjMyLlMKIGVuZGlmCkBAIC0xNDEsNiArMTQ5LDkgQEAKIGVuZGlmCiBpZiBBUk0KIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvYXJtL3N5c3YuUyBzcmMvYXJtL2ZmaS5jCitpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCitub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2FybS90cmFtcG9saW5lLlMKK2VuZGlmCiBlbmRpZgogaWYgQVZSMzIKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZmkuYwpAQCAtMTUxLDYgKzE2Miw5IEBACiBpZiBGUlYKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaS5jCiBlbmRpZgoraWYgTU9YSUUKK25vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvbW94aWUvZWFiaS5TIHNyYy9tb3hpZS9mZmkuYworZW5kaWYKIGlmIFMzOTAKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpLmMKIGVuZGlmCkBAIC0xNzMsMTIgKzE4NywxNyBAQAogbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKGxpYmZmaV9sYV9TT1VSQ0VTKQogbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9TT1VSQ0VTID0gJChub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpCiAKLUFNX0NGTEFHUyA9IC1XYWxsIC1nIC1mZXhjZXB0aW9ucworQU1fQ0ZMQUdTID0gLWcKK2lmIEZGSV9ERUJVRworIyBCdWlsZCBkZWJ1Zy4gRGVmaW5lIEZGSV9ERUJVRyBvbiB0aGUgY29tbWFuZGxpbmUgc28gdGhhdCwgd2hlbiBidWlsZGluZyB3aXRoCisjIE1TVkMsIGl0IGNhbiBsaW5rIGFnYWluc3QgdGhlIGRlYnVnIENSVC4KK0FNX0NGTEFHUyArPSAtREZGSV9ERUJVRworZW5kaWYKIAogbGliZmZpX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gICQoTFRMREZMQUdTKSAkKEFNX0xUTERGTEFHUykKIAotQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMKLUFNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCitBTV9DUFBGTEFHUyA9IC1JLiAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL3NyYyAtREZGSV9CVUlMRElORworQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykgLWcKIAogIyBObyBpbnN0YWxsLWh0bWwgb3IgaW5zdGFsbC1wZGYgc3VwcG9ydCBpbiBhdXRvbWFrZSB5ZXQKIC5QSE9OWTogaW5zdGFsbC1odG1sIGluc3RhbGwtcGRmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5pbgppbmRleCA0OWFmY2MxLi40M2VkODU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMzYsMzggKzM2LDQ1IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1ATUlQU19UUlVFQGFtX19hcHBlbmRfMSA9IHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL28zMi5TIHNyYy9taXBzL24zMi5TCi1AWDg2X1RSVUVAYW1fX2FwcGVuZF8yID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUwotQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF8zID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2ZyZWVic2QuUwotQFg4Nl9XSU4zMl9UUlVFQGFtX19hcHBlbmRfNCA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW4zMi5TCi1AWDg2X1dJTjY0X1RSVUVAYW1fX2FwcGVuZF81ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjY0LlMKLUBYODZfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF82ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZmZpNjQuYyBzcmMveDg2L2RhcndpbjY0LlMKLUBTUEFSQ19UUlVFQGFtX19hcHBlbmRfNyA9IHNyYy9zcGFyYy9mZmkuYyBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUwotQEFMUEhBX1RSVUVAYW1fX2FwcGVuZF84ID0gc3JjL2FscGhhL2ZmaS5jIHNyYy9hbHBoYS9vc2YuUwotQElBNjRfVFJVRUBhbV9fYXBwZW5kXzkgPSBzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC91bml4LlMKLUBNMzJSX1RSVUVAYW1fX2FwcGVuZF8xMCA9IHNyYy9tMzJyL3N5c3YuUyBzcmMvbTMyci9mZmkuYwotQE02OEtfVFJVRUBhbV9fYXBwZW5kXzExID0gc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TCi1AUE9XRVJQQ19UUlVFQGFtX19hcHBlbmRfMTIgPSBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMKLUBQT1dFUlBDX0FJWF9UUlVFQGFtX19hcHBlbmRfMTMgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvYWl4LlMgc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUwotQFBPV0VSUENfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF8xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9kYXJ3aW4uUyBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCi1AUE9XRVJQQ19GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF8xNSA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCi1AQVJNX1RSVUVAYW1fX2FwcGVuZF8xNiA9IHNyYy9hcm0vc3lzdi5TIHNyYy9hcm0vZmZpLmMKLUBBVlIzMl9UUlVFQGFtX19hcHBlbmRfMTcgPSBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZmkuYwotQExJQkZGSV9DUklTX1RSVUVAYW1fX2FwcGVuZF8xOCA9IHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZmkuYwotQEZSVl9UUlVFQGFtX19hcHBlbmRfMTkgPSBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaS5jCi1AUzM5MF9UUlVFQGFtX19hcHBlbmRfMjAgPSBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpLmMKLUBYODZfNjRfVFJVRUBhbV9fYXBwZW5kXzIxID0gc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUwotQFNIX1RSVUVAYW1fX2FwcGVuZF8yMiA9IHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaS5jCi1AU0g2NF9UUlVFQGFtX19hcHBlbmRfMjMgPSBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpLmMKLUBQQV9MSU5VWF9UUlVFQGFtX19hcHBlbmRfMjQgPSBzcmMvcGEvbGludXguUyBzcmMvcGEvZmZpLmMKLUBQQV9IUFVYX1RSVUVAYW1fX2FwcGVuZF8yNSA9IHNyYy9wYS9ocHV4MzIuUyBzcmMvcGEvZmZpLmMKK0BGRklfREVCVUdfVFJVRUBhbV9fYXBwZW5kXzEgPSBzcmMvZGVidWcuYworQE1JUFNfVFJVRUBhbV9fYXBwZW5kXzIgPSBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9vMzIuUyBzcmMvbWlwcy9uMzIuUworQFg4Nl9UUlVFQGFtX19hcHBlbmRfMyA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMKK0BYODZfRlJFRUJTRF9UUlVFQGFtX19hcHBlbmRfNCA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9mcmVlYnNkLlMKK0BYODZfV0lOMzJfVFJVRUBhbV9fYXBwZW5kXzUgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvd2luMzIuUworQFg4Nl9XSU42NF9UUlVFQGFtX19hcHBlbmRfNiA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW42NC5TCitAWDg2X0RBUldJTl9UUlVFQGFtX19hcHBlbmRfNyA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni9kYXJ3aW4uUyBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni9kYXJ3aW42NC5TCitAU1BBUkNfVFJVRUBhbV9fYXBwZW5kXzggPSBzcmMvc3BhcmMvZmZpLmMgc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMKK0BBTFBIQV9UUlVFQGFtX19hcHBlbmRfOSA9IHNyYy9hbHBoYS9mZmkuYyBzcmMvYWxwaGEvb3NmLlMKK0BJQTY0X1RSVUVAYW1fX2FwcGVuZF8xMCA9IHNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L3VuaXguUworQE0zMlJfVFJVRUBhbV9fYXBwZW5kXzExID0gc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaS5jCitATTY4S19UUlVFQGFtX19hcHBlbmRfMTIgPSBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMKK0BQT1dFUlBDX1RSVUVAYW1fX2FwcGVuZF8xMyA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUworQFBPV0VSUENfQUlYX1RSVUVAYW1fX2FwcGVuZF8xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCitAUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzE1ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKK0BQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzE2ID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKK0BBUk1fVFJVRUBhbV9fYXBwZW5kXzE3ID0gc3JjL2FybS9zeXN2LlMgc3JjL2FybS9mZmkuYworQEFSTV9UUlVFQEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUVAYW1fX2FwcGVuZF8xOCA9IHNyYy9hcm0vdHJhbXBvbGluZS5TCitAQVZSMzJfVFJVRUBhbV9fYXBwZW5kXzE5ID0gc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpLmMKK0BMSUJGRklfQ1JJU19UUlVFQGFtX19hcHBlbmRfMjAgPSBzcmMvY3Jpcy9zeXN2LlMgc3JjL2NyaXMvZmZpLmMKK0BGUlZfVFJVRUBhbV9fYXBwZW5kXzIxID0gc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZmkuYworQE1PWElFX1RSVUVAYW1fX2FwcGVuZF8yMiA9IHNyYy9tb3hpZS9lYWJpLlMgc3JjL21veGllL2ZmaS5jCitAUzM5MF9UUlVFQGFtX19hcHBlbmRfMjMgPSBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpLmMKK0BYODZfNjRfVFJVRUBhbV9fYXBwZW5kXzI0ID0gc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUworQFNIX1RSVUVAYW1fX2FwcGVuZF8yNSA9IHNyYy9zaC9zeXN2LlMgc3JjL3NoL2ZmaS5jCitAU0g2NF9UUlVFQGFtX19hcHBlbmRfMjYgPSBzcmMvc2g2NC9zeXN2LlMgc3JjL3NoNjQvZmZpLmMKK0BQQV9MSU5VWF9UUlVFQGFtX19hcHBlbmRfMjcgPSBzcmMvcGEvbGludXguUyBzcmMvcGEvZmZpLmMKK0BQQV9IUFVYX1RSVUVAYW1fX2FwcGVuZF8yOCA9IHNyYy9wYS9ocHV4MzIuUyBzcmMvcGEvZmZpLmMKKyMgQnVpbGQgZGVidWcuIERlZmluZSBGRklfREVCVUcgb24gdGhlIGNvbW1hbmRsaW5lIHNvIHRoYXQsIHdoZW4gYnVpbGRpbmcgd2l0aAorIyBNU1ZDLCBpdCBjYW4gbGluayBhZ2FpbnN0IHRoZSBkZWJ1ZyBDUlQuCitARkZJX0RFQlVHX1RSVUVAYW1fX2FwcGVuZF8yOSA9IC1ERkZJX0RFQlVHCiBzdWJkaXIgPSAuCiBESVNUX0NPTU1PTiA9IFJFQURNRSAkKGFtX19jb25maWd1cmVfZGVwcykgJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKIAkkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL2RvYy9zdGFtcC12dGkgXAogCSQoc3JjZGlyKS9kb2MvdmVyc2lvbi50ZXhpICQoc3JjZGlyKS9mZmljb25maWcuaC5pbiBcCi0JJChzcmNkaXIpL2xpYmZmaS5wYy5pbiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBDaGFuZ2VMb2cgXAotCWNvbXBpbGUgY29uZmlnLmd1ZXNzIGNvbmZpZy5zdWIgZGVwY29tcCBpbnN0YWxsLXNoIGx0bWFpbi5zaCBcCi0JbWRhdGUtc2ggbWlzc2luZyB0ZXhpbmZvLnRleAorCSQoc3JjZGlyKS9mZmljb25maWcucHkuaW4gJChzcmNkaXIpL2xpYmZmaS5wYy5pbiBcCisJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgQ2hhbmdlTG9nIGNvbXBpbGUgY29uZmlnLmd1ZXNzIFwKKwljb25maWcuc3ViIGRlcGNvbXAgaW5zdGFsbC1zaCBsdG1haW4uc2ggbWRhdGUtc2ggbWlzc2luZyBcCisJdGV4aW5mby50ZXgKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2FjaW5jbHVkZS5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKQEAgLTc3LDcgKzg0LDcgQEAKICBjb25maWd1cmUubGluZW5vIGNvbmZpZy5zdGF0dXMubGluZW5vCiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9IGZmaWNvbmZpZy5oCi1DT05GSUdfQ0xFQU5fRklMRVMgPSBsaWJmZmkucGMKK0NPTkZJR19DTEVBTl9GSUxFUyA9IGxpYmZmaS5wYyBmZmljb25maWcucHkKIENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CiBhbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKIGFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCkBAIC0xMDAsNTEgKzEwNyw2MCBAQAogYW1fX2Jhc2VfbGlzdCA9IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIgIiQoREVTVERJUikkKGluZm9kaXIpIiBcCiAJIiQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikiCiBMVExJQlJBUklFUyA9ICQobGliX0xUTElCUkFSSUVTKSAkKG5vaW5zdF9MVExJQlJBUklFUykKIGxpYmZmaV9sYV9MSUJBREQgPQogYW1fX2RpcnN0YW1wID0gJChhbV9fbGVhZGluZ19kb3QpZGlyc3RhbXAKLWFtX2xpYmZmaV9sYV9PQkpFQ1RTID0gc3JjL2RlYnVnLmxvIHNyYy9wcmVwX2NpZi5sbyBzcmMvdHlwZXMubG8gXAotCXNyYy9yYXdfYXBpLmxvIHNyYy9qYXZhX3Jhd19hcGkubG8gc3JjL2Nsb3N1cmVzLmxvCi1ATUlQU19UUlVFQGFtX19vYmplY3RzXzEgPSBzcmMvbWlwcy9mZmkubG8gc3JjL21pcHMvbzMyLmxvIFwKK2FtX2xpYmZmaV9sYV9PQkpFQ1RTID0gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBzcmMvcmF3X2FwaS5sbyBcCisJc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KK0BGRklfREVCVUdfVFJVRUBhbV9fb2JqZWN0c18xID0gc3JjL2RlYnVnLmxvCitATUlQU19UUlVFQGFtX19vYmplY3RzXzIgPSBzcmMvbWlwcy9mZmkubG8gc3JjL21pcHMvbzMyLmxvIFwKIEBNSVBTX1RSVUVACXNyYy9taXBzL24zMi5sbwotQFg4Nl9UUlVFQGFtX19vYmplY3RzXzIgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3N5c3YubG8KLUBYODZfRlJFRUJTRF9UUlVFQGFtX19vYmplY3RzXzMgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L2ZyZWVic2QubG8KLUBYODZfV0lOMzJfVFJVRUBhbV9fb2JqZWN0c180ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni93aW4zMi5sbwotQFg4Nl9XSU42NF9UUlVFQGFtX19vYmplY3RzXzUgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjY0LmxvCi1AWDg2X0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzYgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L2Rhcndpbi5sbyBcCitAWDg2X1RSVUVAYW1fX29iamVjdHNfMyA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvc3lzdi5sbworQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfNCA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZnJlZWJzZC5sbworQFg4Nl9XSU4zMl9UUlVFQGFtX19vYmplY3RzXzUgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjMyLmxvCitAWDg2X1dJTjY0X1RSVUVAYW1fX29iamVjdHNfNiA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luNjQubG8KK0BYODZfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfNyA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZGFyd2luLmxvIFwKIEBYODZfREFSV0lOX1RSVUVACXNyYy94ODYvZmZpNjQubG8gc3JjL3g4Ni9kYXJ3aW42NC5sbwotQFNQQVJDX1RSVUVAYW1fX29iamVjdHNfNyA9IHNyYy9zcGFyYy9mZmkubG8gc3JjL3NwYXJjL3Y4LmxvIFwKK0BTUEFSQ19UUlVFQGFtX19vYmplY3RzXzggPSBzcmMvc3BhcmMvZmZpLmxvIHNyYy9zcGFyYy92OC5sbyBcCiBAU1BBUkNfVFJVRUAJc3JjL3NwYXJjL3Y5LmxvCi1AQUxQSEFfVFJVRUBhbV9fb2JqZWN0c184ID0gc3JjL2FscGhhL2ZmaS5sbyBzcmMvYWxwaGEvb3NmLmxvCi1ASUE2NF9UUlVFQGFtX19vYmplY3RzXzkgPSBzcmMvaWE2NC9mZmkubG8gc3JjL2lhNjQvdW5peC5sbwotQE0zMlJfVFJVRUBhbV9fb2JqZWN0c18xMCA9IHNyYy9tMzJyL3N5c3YubG8gc3JjL20zMnIvZmZpLmxvCi1ATTY4S19UUlVFQGFtX19vYmplY3RzXzExID0gc3JjL202OGsvZmZpLmxvIHNyYy9tNjhrL3N5c3YubG8KLUBQT1dFUlBDX1RSVUVAYW1fX29iamVjdHNfMTIgPSBzcmMvcG93ZXJwYy9mZmkubG8gc3JjL3Bvd2VycGMvc3lzdi5sbyBcCitAQUxQSEFfVFJVRUBhbV9fb2JqZWN0c185ID0gc3JjL2FscGhhL2ZmaS5sbyBzcmMvYWxwaGEvb3NmLmxvCitASUE2NF9UUlVFQGFtX19vYmplY3RzXzEwID0gc3JjL2lhNjQvZmZpLmxvIHNyYy9pYTY0L3VuaXgubG8KK0BNMzJSX1RSVUVAYW1fX29iamVjdHNfMTEgPSBzcmMvbTMyci9zeXN2LmxvIHNyYy9tMzJyL2ZmaS5sbworQE02OEtfVFJVRUBhbV9fb2JqZWN0c18xMiA9IHNyYy9tNjhrL2ZmaS5sbyBzcmMvbTY4ay9zeXN2LmxvCitAUE9XRVJQQ19UUlVFQGFtX19vYmplY3RzXzEzID0gc3JjL3Bvd2VycGMvZmZpLmxvIHNyYy9wb3dlcnBjL3N5c3YubG8gXAogQFBPV0VSUENfVFJVRUAJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUubG8gXAogQFBPV0VSUENfVFJVRUAJc3JjL3Bvd2VycGMvbGludXg2NC5sbyBcCiBAUE9XRVJQQ19UUlVFQAlzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUubG8KLUBQT1dFUlBDX0FJWF9UUlVFQGFtX19vYmplY3RzXzEzID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCitAUE9XRVJQQ19BSVhfVFJVRUBhbV9fb2JqZWN0c18xNCA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4ubG8gXAogQFBPV0VSUENfQUlYX1RSVUVACXNyYy9wb3dlcnBjL2FpeC5sbyBcCiBAUE9XRVJQQ19BSVhfVFJVRUAJc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUubG8KLUBQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCitAUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fb2JqZWN0c18xNSA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4ubG8gXAogQFBPV0VSUENfREFSV0lOX1RSVUVACXNyYy9wb3dlcnBjL2Rhcndpbi5sbyBcCiBAUE9XRVJQQ19EQVJXSU5fVFJVRUAJc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUubG8KLUBQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c18xNSA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBcCitAUE9XRVJQQ19GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfMTYgPSBzcmMvcG93ZXJwYy9mZmkubG8gXAogQFBPV0VSUENfRlJFRUJTRF9UUlVFQAlzcmMvcG93ZXJwYy9zeXN2LmxvIFwKIEBQT1dFUlBDX0ZSRUVCU0RfVFJVRUAJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUubG8KLUBBUk1fVFJVRUBhbV9fb2JqZWN0c18xNiA9IHNyYy9hcm0vc3lzdi5sbyBzcmMvYXJtL2ZmaS5sbwotQEFWUjMyX1RSVUVAYW1fX29iamVjdHNfMTcgPSBzcmMvYXZyMzIvc3lzdi5sbyBzcmMvYXZyMzIvZmZpLmxvCi1ATElCRkZJX0NSSVNfVFJVRUBhbV9fb2JqZWN0c18xOCA9IHNyYy9jcmlzL3N5c3YubG8gc3JjL2NyaXMvZmZpLmxvCi1ARlJWX1RSVUVAYW1fX29iamVjdHNfMTkgPSBzcmMvZnJ2L2VhYmkubG8gc3JjL2Zydi9mZmkubG8KLUBTMzkwX1RSVUVAYW1fX29iamVjdHNfMjAgPSBzcmMvczM5MC9zeXN2LmxvIHNyYy9zMzkwL2ZmaS5sbwotQFg4Nl82NF9UUlVFQGFtX19vYmplY3RzXzIxID0gc3JjL3g4Ni9mZmk2NC5sbyBzcmMveDg2L3VuaXg2NC5sbyBcCitAQVJNX1RSVUVAYW1fX29iamVjdHNfMTcgPSBzcmMvYXJtL3N5c3YubG8gc3JjL2FybS9mZmkubG8KK0BBUk1fVFJVRUBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFQGFtX19vYmplY3RzXzE4ID0gc3JjL2FybS90cmFtcG9saW5lLmxvCitAQVZSMzJfVFJVRUBhbV9fb2JqZWN0c18xOSA9IHNyYy9hdnIzMi9zeXN2LmxvIHNyYy9hdnIzMi9mZmkubG8KK0BMSUJGRklfQ1JJU19UUlVFQGFtX19vYmplY3RzXzIwID0gc3JjL2NyaXMvc3lzdi5sbyBzcmMvY3Jpcy9mZmkubG8KK0BGUlZfVFJVRUBhbV9fb2JqZWN0c18yMSA9IHNyYy9mcnYvZWFiaS5sbyBzcmMvZnJ2L2ZmaS5sbworQE1PWElFX1RSVUVAYW1fX29iamVjdHNfMjIgPSBzcmMvbW94aWUvZWFiaS5sbyBzcmMvbW94aWUvZmZpLmxvCitAUzM5MF9UUlVFQGFtX19vYmplY3RzXzIzID0gc3JjL3MzOTAvc3lzdi5sbyBzcmMvczM5MC9mZmkubG8KK0BYODZfNjRfVFJVRUBhbV9fb2JqZWN0c18yNCA9IHNyYy94ODYvZmZpNjQubG8gc3JjL3g4Ni91bml4NjQubG8gXAogQFg4Nl82NF9UUlVFQAlzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3N5c3YubG8KLUBTSF9UUlVFQGFtX19vYmplY3RzXzIyID0gc3JjL3NoL3N5c3YubG8gc3JjL3NoL2ZmaS5sbwotQFNINjRfVFJVRUBhbV9fb2JqZWN0c18yMyA9IHNyYy9zaDY0L3N5c3YubG8gc3JjL3NoNjQvZmZpLmxvCi1AUEFfTElOVVhfVFJVRUBhbV9fb2JqZWN0c18yNCA9IHNyYy9wYS9saW51eC5sbyBzcmMvcGEvZmZpLmxvCi1AUEFfSFBVWF9UUlVFQGFtX19vYmplY3RzXzI1ID0gc3JjL3BhL2hwdXgzMi5sbyBzcmMvcGEvZmZpLmxvCitAU0hfVFJVRUBhbV9fb2JqZWN0c18yNSA9IHNyYy9zaC9zeXN2LmxvIHNyYy9zaC9mZmkubG8KK0BTSDY0X1RSVUVAYW1fX29iamVjdHNfMjYgPSBzcmMvc2g2NC9zeXN2LmxvIHNyYy9zaDY0L2ZmaS5sbworQFBBX0xJTlVYX1RSVUVAYW1fX29iamVjdHNfMjcgPSBzcmMvcGEvbGludXgubG8gc3JjL3BhL2ZmaS5sbworQFBBX0hQVVhfVFJVRUBhbV9fb2JqZWN0c18yOCA9IHNyYy9wYS9ocHV4MzIubG8gc3JjL3BhL2ZmaS5sbwogbm9kaXN0X2xpYmZmaV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpIFwKIAkkKGFtX19vYmplY3RzXzMpICQoYW1fX29iamVjdHNfNCkgJChhbV9fb2JqZWN0c181KSBcCiAJJChhbV9fb2JqZWN0c182KSAkKGFtX19vYmplY3RzXzcpICQoYW1fX29iamVjdHNfOCkgXApAQCAtMTUzLDE3ICsxNjksMTggQEAKIAkkKGFtX19vYmplY3RzXzE1KSAkKGFtX19vYmplY3RzXzE2KSAkKGFtX19vYmplY3RzXzE3KSBcCiAJJChhbV9fb2JqZWN0c18xOCkgJChhbV9fb2JqZWN0c18xOSkgJChhbV9fb2JqZWN0c18yMCkgXAogCSQoYW1fX29iamVjdHNfMjEpICQoYW1fX29iamVjdHNfMjIpICQoYW1fX29iamVjdHNfMjMpIFwKLQkkKGFtX19vYmplY3RzXzI0KSAkKGFtX19vYmplY3RzXzI1KQorCSQoYW1fX29iamVjdHNfMjQpICQoYW1fX29iamVjdHNfMjUpICQoYW1fX29iamVjdHNfMjYpIFwKKwkkKGFtX19vYmplY3RzXzI3KSAkKGFtX19vYmplY3RzXzI4KQogbGliZmZpX2xhX09CSkVDVFMgPSAkKGFtX2xpYmZmaV9sYV9PQkpFQ1RTKSBcCiAJJChub2Rpc3RfbGliZmZpX2xhX09CSkVDVFMpCiBsaWJmZmlfbGFfTElOSyA9ICQoTElCVE9PTCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKIAkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKIAkkKGxpYmZmaV9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBsaWJmZmlfY29udmVuaWVuY2VfbGFfTElCQUREID0KLWFtX19vYmplY3RzXzI2ID0gc3JjL2RlYnVnLmxvIHNyYy9wcmVwX2NpZi5sbyBzcmMvdHlwZXMubG8gXAotCXNyYy9yYXdfYXBpLmxvIHNyYy9qYXZhX3Jhd19hcGkubG8gc3JjL2Nsb3N1cmVzLmxvCi1hbV9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMjYpCi1hbV9fb2JqZWN0c18yNyA9ICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18yKSAkKGFtX19vYmplY3RzXzMpIFwKK2FtX19vYmplY3RzXzI5ID0gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBzcmMvcmF3X2FwaS5sbyBcCisJc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KK2FtX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yOSkKK2FtX19vYmplY3RzXzMwID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpICQoYW1fX29iamVjdHNfMykgXAogCSQoYW1fX29iamVjdHNfNCkgJChhbV9fb2JqZWN0c181KSAkKGFtX19vYmplY3RzXzYpIFwKIAkkKGFtX19vYmplY3RzXzcpICQoYW1fX29iamVjdHNfOCkgJChhbV9fb2JqZWN0c185KSBcCiAJJChhbV9fb2JqZWN0c18xMCkgJChhbV9fb2JqZWN0c18xMSkgJChhbV9fb2JqZWN0c18xMikgXApAQCAtMTcxLDggKzE4OCw5IEBACiAJJChhbV9fb2JqZWN0c18xNikgJChhbV9fb2JqZWN0c18xNykgJChhbV9fb2JqZWN0c18xOCkgXAogCSQoYW1fX29iamVjdHNfMTkpICQoYW1fX29iamVjdHNfMjApICQoYW1fX29iamVjdHNfMjEpIFwKIAkkKGFtX19vYmplY3RzXzIyKSAkKGFtX19vYmplY3RzXzIzKSAkKGFtX19vYmplY3RzXzI0KSBcCi0JJChhbV9fb2JqZWN0c18yNSkKLW5vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMjcpCisJJChhbV9fb2JqZWN0c18yNSkgJChhbV9fb2JqZWN0c18yNikgJChhbV9fb2JqZWN0c18yNykgXAorCSQoYW1fX29iamVjdHNfMjgpCitub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzMwKQogbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSBcCiAJJChub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpCiBERUZBVUxUX0lOQ0xVREVTID0gLUkuQGFtX19pc3JjQApAQCAtMjI5LDkgKzI0NywxMSBAQAogZGlzdGRpciA9ICQoUEFDS0FHRSktJChWRVJTSU9OKQogdG9wX2Rpc3RkaXIgPSAkKGRpc3RkaXIpCiBhbV9fcmVtb3ZlX2Rpc3RkaXIgPSBcCi0gIHsgdGVzdCAhIC1kICIkKGRpc3RkaXIpIiBcCi0gICAgfHwgeyBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTIwMCAtZXhlYyBjaG1vZCB1K3cge30gJzsnIFwKLSAgICAgICAgICYmIHJtIC1mciAiJChkaXN0ZGlyKSI7IH07IH0KKyAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKSI7IHRoZW4gXAorICAgIGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtMjAwIC1leGVjIGNobW9kIHUrdyB7fSAnOycgXAorICAgICAgJiYgcm0gLXJmICIkKGRpc3RkaXIpIiBcCisgICAgICB8fCB7IHNsZWVwIDUgJiYgcm0gLXJmICIkKGRpc3RkaXIpIjsgfTsgXAorICBlbHNlIDo7IGZpCiBhbV9fcmVsYXRpdml6ZSA9IFwKICAgZGlyMD1gcHdkYDsgXAogICBzZWRfZmlyc3Q9J3MsXlwoW14vXSpcKS8uKiQkLFwxLCc7IFwKQEAgLTI2MCw2ICsyODAsOCBAQAogRElTVF9BUkNISVZFUyA9ICQoZGlzdGRpcikudGFyLmd6CiBHWklQX0VOViA9IC0tYmVzdAogZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAorYW1fX2Rpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMgPSAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIFwKKyAgfCBzZWQgJ3N8XlwuL3wkKHByZWZpeCkvfCcgfCBncmVwIC12ICckKGluZm9kaXIpL2RpciQkJwogZGlzdGNsZWFuY2hlY2tfbGlzdGZpbGVzID0gZmluZCAuIC10eXBlIGYgLXByaW50CiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQApAQCAtMjgyLDYgKzMwNCw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTI4OSw2ICszMTIsNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtMzA3LDYgKzMzMSw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTMxOSw2ICszNDQsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTMzMyw2ICszNTksNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0zNjUsNyArMzkyLDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMzk1LDI5ICs0MjEsMzIgQEAKIAlzcmMvYXZyMzIvZmZpLmMgc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpdGFyZ2V0LmggXAogCXNyYy9jcmlzL2ZmaS5jIHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZml0YXJnZXQuaCBcCiAJc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvZmZpdGFyZ2V0Lmggc3JjL2lhNjQvaWE2NF9mbGFncy5oIFwKLQlzcmMvaWE2NC91bml4LlMgXAotCXNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKLQlzcmMvbWlwcy9mZml0YXJnZXQuaCBcCi0Jc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgc3JjL202OGsvZmZpdGFyZ2V0LmggXAotCXNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCisJc3JjL2lhNjQvdW5peC5TIHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKKwlzcmMvbWlwcy9mZml0YXJnZXQuaCBzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgXAorCXNyYy9tMzJyL2ZmaXRhcmdldC5oIHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBcCisJc3JjL202OGsvZmZpdGFyZ2V0Lmggc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKIAlzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggXAotCXNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2Rhcndpbi5TIFwKLQlzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpdGFyZ2V0LmggXAotCXNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgc3JjL3NwYXJjL2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKLQlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L3dpbjY0LlMgXAotCXNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mcmVlYnNkLlMgXAotCXNyYy94ODYvZmZpNjQuYyBzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0LmggXAotCXNyYy9wYS9mZml0YXJnZXQuaCBzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIFwKLQlzcmMvZnJ2L2ZmaS5jIHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAotCWxpYnRvb2wtdmVyc2lvbiBDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgXAotCW00L2x0fm9ic29sZXRlLm00IG00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNAorCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggc3JjL3Bvd2VycGMvYWl4LlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIFwKKwlzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgXAorCXNyYy9zMzkwL2ZmaXRhcmdldC5oIHNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TCVwKKwlzcmMvc2gvZmZpdGFyZ2V0Lmggc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIFwKKwlzcmMvc2g2NC9mZml0YXJnZXQuaCBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBcCisJc3JjL3NwYXJjL2ZmaXRhcmdldC5oIHNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAorCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvZGFyd2luLlMgXAorCXNyYy94ODYvd2luNjQuUyBzcmMveDg2L2ZyZWVic2QuUyBzcmMveDg2L2ZmaTY0LmMgXAorCXNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBzcmMvcGEvZmZpdGFyZ2V0LmgJXAorCXNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgc3JjL2Zydi9mZmkuYyBcCisJc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCisJc3JjL21veGllL2ZmaS5jIHNyYy9tb3hpZS9lYWJpLlMgbGlidG9vbC12ZXJzaW9uIFwKKwlDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgbTQvbHR+b2Jzb2xldGUubTQgXAorCW00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNCBcCisJbTQvbHR2ZXJzaW9uLm00IHNyYy9hcm0vZ2VudHJhbXAuc2ggc3JjL2RlYnVnLmMgXAorCW1zdmNjLnNoIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorCWdlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorICAgICAgICBsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCisJc3JjL2FybS90cmFtcG9saW5lLlMKIAogaW5mb19URVhJTkZPUyA9IGRvYy9saWJmZmkudGV4aQogCkBAIC00NDgsNiArNDc3LDcgQEAKIAkiZXhlY19wcmVmaXg9JChleGVjX3ByZWZpeCkiIFwKIAkiaW5mb2Rpcj0kKGluZm9kaXIpIiBcCiAJImxpYmRpcj0kKGxpYmRpcikiIFwKKwkibWFuZGlyPSQobWFuZGlyKSIgXAogCSJwcmVmaXg9JChwcmVmaXgpIiBcCiAJIkFSPSQoQVIpIiBcCiAJIkFTPSQoQVMpIiBcCkBAIC00NjIsNyArNDkyLDcgQEAKIEFDTE9DQUxfQU1GTEFHUyA9ICQoQUNMT0NBTF9BTUZMQUdTKSAtSSBtNAogbGliX0xUTElCUkFSSUVTID0gbGliZmZpLmxhCiBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJmZmlfY29udmVuaWVuY2UubGEKLWxpYmZmaV9sYV9TT1VSQ0VTID0gc3JjL2RlYnVnLmMgc3JjL3ByZXBfY2lmLmMgc3JjL3R5cGVzLmMgXAorbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCiAJCXNyYy9yYXdfYXBpLmMgc3JjL2phdmFfcmF3X2FwaS5jIHNyYy9jbG9zdXJlcy5jCiAKIHBrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKQEAgLTQ3NSwxOSArNTA1LDIwIEBACiAJJChhbV9fYXBwZW5kXzE1KSAkKGFtX19hcHBlbmRfMTYpICQoYW1fX2FwcGVuZF8xNykgXAogCSQoYW1fX2FwcGVuZF8xOCkgJChhbV9fYXBwZW5kXzE5KSAkKGFtX19hcHBlbmRfMjApIFwKIAkkKGFtX19hcHBlbmRfMjEpICQoYW1fX2FwcGVuZF8yMikgJChhbV9fYXBwZW5kXzIzKSBcCi0JJChhbV9fYXBwZW5kXzI0KSAkKGFtX19hcHBlbmRfMjUpCisJJChhbV9fYXBwZW5kXzI0KSAkKGFtX19hcHBlbmRfMjUpICQoYW1fX2FwcGVuZF8yNikgXAorCSQoYW1fX2FwcGVuZF8yNykgJChhbV9fYXBwZW5kXzI4KQogbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKGxpYmZmaV9sYV9TT1VSQ0VTKQogbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9TT1VSQ0VTID0gJChub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpCi1BTV9DRkxBR1MgPSAtV2FsbCAtZyAtZmV4Y2VwdGlvbnMKLWxpYmZmaV9sYV9MREZMQUdTID0gLXZlcnNpb24taW5mbyBgZ3JlcCAtdiAnXlwjJyAkKHNyY2RpcikvbGlidG9vbC12ZXJzaW9uYCAkKEFNX0xUTERGTEFHUykKLUFNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjCi1BTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKQorQU1fQ0ZMQUdTID0gLWcgJChhbV9fYXBwZW5kXzI5KQorbGliZmZpX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gICQoTFRMREZMQUdTKSAkKEFNX0xUTERGTEFHUykKK0FNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjIC1ERkZJX0JVSUxESU5HCitBTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtZwogYWxsOiBmZmljb25maWcuaAogCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFsbC1yZWN1cnNpdmUKIAogLlNVRkZJWEVTOgogLlNVRkZJWEVTOiAuUyAuYyAuZHZpIC5sbyAubyAub2JqIC5wcwotYW0tLXJlZnJlc2g6CithbS0tcmVmcmVzaDogTWFrZWZpbGUKIAlAOgogJChzcmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCiAJQGZvciBkZXAgaW4gJD87IGRvIFwKQEAgLTUyMywxMCArNTU0LDggQEAKICQoYW1fX2FjbG9jYWxfbTRfZGVwcyk6CiAKIGZmaWNvbmZpZy5oOiBzdGFtcC1oMQotCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gXAotCSAgcm0gLWYgc3RhbXAtaDE7IFwKLQkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHN0YW1wLWgxOyBcCi0JZWxzZSA6OyBmaQorCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gcm0gLWYgc3RhbXAtaDE7IGVsc2UgOjsgZmkKKwlAaWYgdGVzdCAhIC1mICRAOyB0aGVuICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHN0YW1wLWgxOyBlbHNlIDo7IGZpCiAKIHN0YW1wLWgxOiAkKHNyY2RpcikvZmZpY29uZmlnLmguaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAcm0gLWYgc3RhbXAtaDEKQEAgLTU0MCw2ICs1NjksOCBAQAogCS1ybSAtZiBmZmljb25maWcuaCBzdGFtcC1oMQogbGliZmZpLnBjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvbGliZmZpLnBjLmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAorZmZpY29uZmlnLnB5OiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZmZpY29uZmlnLnB5LmluCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQAogaW5zdGFsbC1saWJMVExJQlJBUklFUzogJChsaWJfTFRMSUJSQVJJRVMpCiAJQCQoTk9STUFMX0lOU1RBTEwpCiAJdGVzdCAteiAiJChsaWJkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChsaWJkaXIpIgpAQCAtNTg2LDEyICs2MTcsMTIgQEAKIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIHNyYy8kKERFUERJUikKIAlAOiA+IHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCi1zcmMvZGVidWcubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9wcmVwX2NpZi5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3R5cGVzLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvcmF3X2FwaS5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2phdmFfcmF3X2FwaS5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2Nsb3N1cmVzLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvZGVidWcubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9taXBzLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvbWlwcwogCUA6ID4gc3JjL21pcHMvJChhbV9fZGlyc3RhbXApCkBAIC03MTQsNiArNzQ1LDggQEAKIAlzcmMvYXJtLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9hcm0vZmZpLmxvOiBzcmMvYXJtLyQoYW1fX2RpcnN0YW1wKSBcCiAJc3JjL2FybS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvYXJtL3RyYW1wb2xpbmUubG86IHNyYy9hcm0vJChhbV9fZGlyc3RhbXApIFwKKwlzcmMvYXJtLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9hdnIzMi8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjL2F2cjMyCiAJQDogPiBzcmMvYXZyMzIvJChhbV9fZGlyc3RhbXApCkBAIC03NDQsNiArNzc3LDE2IEBACiAJc3JjL2Zydi8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvZnJ2L2ZmaS5sbzogc3JjL2Zydi8kKGFtX19kaXJzdGFtcCkgXAogCXNyYy9mcnYvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKToKKwlAJChNS0RJUl9QKSBzcmMvbW94aWUKKwlAOiA+IHNyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApOgorCUAkKE1LRElSX1ApIHNyYy9tb3hpZS8kKERFUERJUikKKwlAOiA+IHNyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvbW94aWUvZWFiaS5sbzogc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKSBcCisJc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS9mZmkubG86IHNyYy9tb3hpZS8kKGFtX19kaXJzdGFtcCkgXAorCXNyYy9tb3hpZS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvczM5MC8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjL3MzOTAKIAlAOiA+IHNyYy9zMzkwLyQoYW1fX2RpcnN0YW1wKQpAQCAtNzg2LDkgKzgyOSw5IEBACiBzcmMvcGEvZmZpLmxvOiBzcmMvcGEvJChhbV9fZGlyc3RhbXApIHNyYy9wYS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvcGEvaHB1eDMyLmxvOiBzcmMvcGEvJChhbV9fZGlyc3RhbXApIFwKIAlzcmMvcGEvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQotbGliZmZpLmxhOiAkKGxpYmZmaV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9sYV9ERVBFTkRFTkNJRVMpIAorbGliZmZpLmxhOiAkKGxpYmZmaV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZmZpX2xhX0RFUEVOREVOQ0lFUykgCiAJJChsaWJmZmlfbGFfTElOSykgLXJwYXRoICQobGliZGlyKSAkKGxpYmZmaV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9sYV9MSUJBREQpICQoTElCUykKLWxpYmZmaV9jb252ZW5pZW5jZS5sYTogJChsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfREVQRU5ERU5DSUVTKSAKK2xpYmZmaV9jb252ZW5pZW5jZS5sYTogJChsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9ERVBFTkRFTkNJRVMpIAogCSQoTElOSykgICQobGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpICQobGliZmZpX2NvbnZlbmllbmNlX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgpAQCAtODAxLDYgKzg0NCw4IEBACiAJLXJtIC1mIHNyYy9hcm0vZmZpLmxvCiAJLXJtIC1mIHNyYy9hcm0vc3lzdi4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL2FybS9zeXN2LmxvCisJLXJtIC1mIHNyYy9hcm0vdHJhbXBvbGluZS4kKE9CSkVYVCkKKwktcm0gLWYgc3JjL2FybS90cmFtcG9saW5lLmxvCiAJLXJtIC1mIHNyYy9hdnIzMi9mZmkuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9hdnIzMi9mZmkubG8KIAktcm0gLWYgc3JjL2F2cjMyL3N5c3YuJChPQkpFWFQpCkBAIC04MzcsNiArODgyLDEwIEBACiAJLXJtIC1mIHNyYy9taXBzL24zMi5sbwogCS1ybSAtZiBzcmMvbWlwcy9vMzIuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9taXBzL28zMi5sbworCS1ybSAtZiBzcmMvbW94aWUvZWFiaS4kKE9CSkVYVCkKKwktcm0gLWYgc3JjL21veGllL2VhYmkubG8KKwktcm0gLWYgc3JjL21veGllL2ZmaS4kKE9CSkVYVCkKKwktcm0gLWYgc3JjL21veGllL2ZmaS5sbwogCS1ybSAtZiBzcmMvcGEvZmZpLiQoT0JKRVhUKQogCS1ybSAtZiBzcmMvcGEvZmZpLmxvCiAJLXJtIC1mIHNyYy9wYS9ocHV4MzIuJChPQkpFWFQpCkBAIC05MTksNiArOTY4LDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYWxwaGEvJChERVBESVIpL29zZi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hcm0vJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hcm0vJChERVBESVIpL3N5c3YuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXJtLyQoREVQRElSKS90cmFtcG9saW5lLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2F2cjMyLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXZyMzIvJChERVBESVIpL3N5c3YuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvY3Jpcy8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACkBAIC05MzQsNiArOTg0LDggQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbWlwcy8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21pcHMvJChERVBESVIpL24zMi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9taXBzLyQoREVQRElSKS9vMzIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbW94aWUvJChERVBESVIpL2VhYmkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbW94aWUvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9wYS8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL3BhLyQoREVQRElSKS9ocHV4MzIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvcGEvJChERVBESVIpL2xpbnV4LlBsb0BhbV9fcXVvdGVACkBAIC0xMDI5LDYgKzEwODEsNyBAQAogCS1ybSAtcmYgc3JjL20zMnIvLmxpYnMgc3JjL20zMnIvX2xpYnMKIAktcm0gLXJmIHNyYy9tNjhrLy5saWJzIHNyYy9tNjhrL19saWJzCiAJLXJtIC1yZiBzcmMvbWlwcy8ubGlicyBzcmMvbWlwcy9fbGlicworCS1ybSAtcmYgc3JjL21veGllLy5saWJzIHNyYy9tb3hpZS9fbGlicwogCS1ybSAtcmYgc3JjL3BhLy5saWJzIHNyYy9wYS9fbGlicwogCS1ybSAtcmYgc3JjL3Bvd2VycGMvLmxpYnMgc3JjL3Bvd2VycGMvX2xpYnMKIAktcm0gLXJmIHNyYy9zMzkwLy5saWJzIHNyYy9zMzkwL19saWJzCkBAIC0xMjIxLDkgKzEyNzQsNyBAQAogCUAkKE5PUk1BTF9VTklOU1RBTEwpCiAJQGxpc3Q9JyQocGtnY29uZmlnX0RBVEEpJzsgdGVzdCAtbiAiJChwa2djb25maWdkaXIpIiB8fCBsaXN0PTsgXAogCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCi0JdGVzdCAtbiAiJCRmaWxlcyIgfHwgZXhpdCAwOyBcCi0JZWNobyAiICggY2QgJyQoREVTVERJUikkKHBrZ2NvbmZpZ2RpciknICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCWNkICIkKERFU1RESVIpJChwa2djb25maWdkaXIpIiAmJiBybSAtZiAkJGZpbGVzCisJZGlyPSckKERFU1RESVIpJChwa2djb25maWdkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQogCiAjIFRoaXMgZGlyZWN0b3J5J3Mgc3ViZGlyZWN0b3JpZXMgYXJlIG1vc3RseSBpbmRlcGVuZGVudDsgeW91IGNhbiBjZAogIyBpbnRvIHRoZW0gYW5kIHJ1biBgbWFrZScgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoaXMgTWFrZWZpbGUuCkBAIC0xMjMyLDcgKzEyODMsNyBAQAogIyAgICAgKHdoaWNoIHdpbGwgY2F1c2UgdGhlIE1ha2VmaWxlcyB0byBiZSByZWdlbmVyYXRlZCB3aGVuIHlvdSBydW4gYG1ha2UnKTsKICMgKDIpIG90aGVyd2lzZSwgcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgb24gdGhlIGBtYWtlJyBjb21tYW5kIGxpbmUuCiAkKFJFQ1VSU0lWRV9UQVJHRVRTKToKLQlAZmFpbGNvbT0nZXhpdCAxJzsgXAorCUBmYWlsPSBmYWlsY29tPSdleGl0IDEnOyBcCiAJZm9yIGYgaW4geCAkJE1BS0VGTEFHUzsgZG8gXAogCSAgY2FzZSAkJGYgaW4gXAogCSAgICAqPSogfCAtLVsha10qKTs7IFwKQEAgLTEyNTcsNyArMTMwOCw3IEBACiAJZmk7IHRlc3QgLXogIiQkZmFpbCIKIAogJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUyk6Ci0JQGZhaWxjb209J2V4aXQgMSc7IFwKKwlAZmFpbD0gZmFpbGNvbT0nZXhpdCAxJzsgXAogCWZvciBmIGluIHggJCRNQUtFRkxBR1M7IGRvIFwKIAkgIGNhc2UgJCRmIGluIFwKIAkgICAgKj0qIHwgLS1bIWtdKik7OyBcCkBAIC0xNDI0LDcgKzE0NzUsOCBAQAogCSAgdG9wX2Rpc3RkaXI9IiQodG9wX2Rpc3RkaXIpIiBkaXN0ZGlyPSIkKGRpc3RkaXIpIiBcCiAJICBkaXN0LWluZm8KIAktdGVzdCAtbiAiJChhbV9fc2tpcF9tb2RlX2ZpeCkiIFwKLQl8fCBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTc3NyAtZXhlYyBjaG1vZCBhK3J3eCB7fSBcOyAtbyBcCisJfHwgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC03NTUgXAorCQktZXhlYyBjaG1vZCB1K3J3eCxnbytyeCB7fSBcOyAtbyBcCiAJICAhIC10eXBlIGQgISAtcGVybSAtNDQ0IC1saW5rcyAxIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCiAJICAhIC10eXBlIGQgISAtcGVybSAtNDAwIC1leGVjIGNobW9kIGErciB7fSBcOyAtbyBcCiAJICAhIC10eXBlIGQgISAtcGVybSAtNDQ0IC1leGVjICQoaW5zdGFsbF9zaCkgLWMgLW0gYStyIHt9IHt9IFw7IFwKQEAgLTE0MzQsNyArMTQ4NiwxMSBAQAogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LWJ6aXAyOiBkaXN0ZGlyCi0JdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGJ6aXAyIC05IC1jID4kKGRpc3RkaXIpLnRhci5iejIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgQlpJUDI9JCR7QlpJUDItLTl9IGJ6aXAyIC1jID4kKGRpc3RkaXIpLnRhci5iejIKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC1semlwOiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IGx6aXAgLWMgJCR7TFpJUF9PUFQtLTl9ID4kKGRpc3RkaXIpLnRhci5segogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LWx6bWE6IGRpc3RkaXIKQEAgLTE0NDIsNyArMTQ5OCw3IEBACiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QteHo6IGRpc3RkaXIKLQl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgeHogLWMgPiQoZGlzdGRpcikudGFyLnh6CisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IFhaX09QVD0kJHtYWl9PUFQtLWV9IHh6IC1jID4kKGRpc3RkaXIpLnRhci54egogCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQogCiBkaXN0LXRhclo6IGRpc3RkaXIKQEAgLTE0NjgsMTcgKzE1MjQsMTkgQEAKIGRpc3RjaGVjazogZGlzdAogCWNhc2UgJyQoRElTVF9BUkNISVZFUyknIGluIFwKIAkqLnRhci5neiopIFwKLQkgIEdaSVA9JChHWklQX0VOVikgZ3VuemlwIC1jICQoZGlzdGRpcikudGFyLmd6IHwgJChhbV9fdW50YXIpIDs7XAorCSAgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnRhci5neiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5iejIqKSBcCi0JICBidW56aXAyIC1jICQoZGlzdGRpcikudGFyLmJ6MiB8ICQoYW1fX3VudGFyKSA7O1wKKwkgIGJ6aXAyIC1kYyAkKGRpc3RkaXIpLnRhci5iejIgfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIubHptYSopIFwKLQkgIHVubHptYSAtYyAkKGRpc3RkaXIpLnRhci5sem1hIHwgJChhbV9fdW50YXIpIDs7XAorCSAgbHptYSAtZGMgJChkaXN0ZGlyKS50YXIubHptYSB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnRhci5seiopIFwKKwkgIGx6aXAgLWRjICQoZGlzdGRpcikudGFyLmx6IHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLnh6KikgXAogCSAgeHogLWRjICQoZGlzdGRpcikudGFyLnh6IHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLloqKSBcCiAJICB1bmNvbXByZXNzIC1jICQoZGlzdGRpcikudGFyLlogfCAkKGFtX191bnRhcikgOztcCiAJKi5zaGFyLmd6KikgXAotCSAgR1pJUD0kKEdaSVBfRU5WKSBndW56aXAgLWMgJChkaXN0ZGlyKS5zaGFyLmd6IHwgdW5zaGFyIDs7XAorCSAgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1kYyAkKGRpc3RkaXIpLnNoYXIuZ3ogfCB1bnNoYXIgOztcCiAJKi56aXAqKSBcCiAJICB1bnppcCAkKGRpc3RkaXIpLnppcCA7O1wKIAllc2FjCkBAIC0xNDkyLDYgKzE1NTAsNyBAQAogCSAgJiYgYW1fX2N3ZD1gcHdkYCBcCiAJICAmJiAkKGFtX19jZCkgJChkaXN0ZGlyKS9fYnVpbGQgXAogCSAgJiYgLi4vY29uZmlndXJlIC0tc3JjZGlyPS4uIC0tcHJlZml4PSIkJGRjX2luc3RhbGxfYmFzZSIgXAorCSAgICAkKEFNX0RJU1RDSEVDS19DT05GSUdVUkVfRkxBR1MpIFwKIAkgICAgJChESVNUQ0hFQ0tfQ09ORklHVVJFX0ZMQUdTKSBcCiAJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBcCiAJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBkdmkgXApAQCAtMTUyMCw4ICsxNTc5LDE2IEBACiAJICBsaXN0PSckKERJU1RfQVJDSElWRVMpJzsgZm9yIGkgaW4gJCRsaXN0OyBkbyBlY2hvICQkaTsgZG9uZSkgfCBcCiAJICBzZWQgLWUgMWggLWUgMXMvLi89L2cgLWUgMXAgLWUgMXggLWUgJyQkcCcgLWUgJyQkeCcKIGRpc3R1bmluc3RhbGxjaGVjazoKLQlAJChhbV9fY2QpICckKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyBcCi0JJiYgdGVzdCBgJChkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtbGUgMSBcCisJQHRlc3QgLW4gJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIHx8IHsgXAorCSAgZWNobyAnRVJST1I6IHRyeWluZyB0byBydW4gJEAgd2l0aCBhbiBlbXB0eScgXAorCSAgICAgICAnJCQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknID4mMjsgXAorCSAgZXhpdCAxOyBcCisJfTsgXAorCSQoYW1fX2NkKSAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgfHwgeyBcCisJICBlY2hvICdFUlJPUjogY2Fubm90IGNoZGlyIGludG8gJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgPiYyOyBcCisJICBleGl0IDE7IFwKKwl9OyBcCisJdGVzdCBgJChhbV9fZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgfCB3YyAtbGAgLWVxIDAgXAogCSAgIHx8IHsgZWNobyAiRVJST1I6IGZpbGVzIGxlZnQgYWZ0ZXIgdW5pbnN0YWxsOiIgOyBcCiAJICAgICAgICBpZiB0ZXN0IC1uICIkKERFU1RESVIpIjsgdGhlbiBcCiAJICAgICAgICAgIGVjaG8gIiAgKGNoZWNrIERFU1RESVIgc3VwcG9ydCkiOyBcCkBAIC0xNTU1LDEwICsxNjIyLDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CkBAIC0xNTg3LDYgKzE2NTksOCBAQAogCS1ybSAtZiBzcmMvbTY4ay8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL21pcHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvbWlwcy8kKGFtX19kaXJzdGFtcCkKKwktcm0gLWYgc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKwktcm0gLWYgc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvcGEvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvcGEvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9wb3dlcnBjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKQEAgLTE2MTIsNyArMTY4Niw3IEBACiAKIGRpc3RjbGVhbjogZGlzdGNsZWFuLXJlY3Vyc2l2ZQogCS1ybSAtZiAkKGFtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTKQotCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvcGEvJChERVBESVIpIHNyYy9wb3dlcnBjLyQoREVQRElSKSBzcmMvczM5MC8kKERFUERJUikgc3JjL3NoLyQoREVQRElSKSBzcmMvc2g2NC8kKERFUERJUikgc3JjL3NwYXJjLyQoREVQRElSKSBzcmMveDg2LyQoREVQRElSKQorCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvbW94aWUvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCiAJLXJtIC1mIE1ha2VmaWxlCiBkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKIAlkaXN0Y2xlYW4taGRyIGRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzCkBAIC0xNjU0LDEzICsxNzI4LDE0IEBACiAJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCiAJICBpZiB0ZXN0IC1mICIkJHAiIHx8IHRlc3QgLWQgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCiAJICAkKGFtX19zdHJpcF9kaXIpIFwKLQkgIGlmIHRlc3QgLWQgIiQkZCQkcCI7IHRoZW4gXAorCSAgZDI9JCRkJCRwOyBcCisJICBpZiB0ZXN0IC1kICIkJGQyIjsgdGhlbiBcCiAJICAgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChodG1sZGlyKS8kJGYnIjsgXAogCSAgICAkKE1LRElSX1ApICIkKERFU1RESVIpJChodG1sZGlyKS8kJGYiIHx8IGV4aXQgMTsgXAotCSAgICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICckJGQkJHAnLyogJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCi0JICAgICQoSU5TVEFMTF9EQVRBKSAiJCRkJCRwIi8qICIkKERFU1RESVIpJChodG1sZGlyKS8kJGYiIHx8IGV4aXQgJCQ/OyBcCisJICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZDInLyogJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCisJICAgICQoSU5TVEFMTF9EQVRBKSAiJCRkMiIvKiAiJChERVNURElSKSQoaHRtbGRpcikvJCRmIiB8fCBleGl0ICQkPzsgXAogCSAgZWxzZSBcCi0JICAgIGxpc3QyPSIkJGxpc3QyICQkZCQkcCI7IFwKKwkgICAgbGlzdDI9IiQkbGlzdDIgJCRkMiI7IFwKIAkgIGZpOyBcCiAJZG9uZTsgXAogCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgZWNobyAiJCRsaXN0MiIgfCAkKGFtX19iYXNlX2xpc3QpIHwgXApAQCAtMTY5Miw4ICsxNzY3LDEzIEBACiAJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKGluZm9kaXIpJyI7IFwKIAkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChpbmZvZGlyKSIgfHwgZXhpdCAkJD87IGRvbmUKIAlAJChQT1NUX0lOU1RBTEwpCi0JQGlmIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uICYmIFwKLQkgICAgIGluc3RhbGwtaW5mbyAtLXZlcnNpb24gMj4mMSB8IHNlZCAxcSB8IGdyZXAgLWkgLXYgZGViaWFuKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCUBhbV9fcnVuX2luc3RhbGxpbmZvPXllczsgXAorCWNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAorCSAgbnxub3xOTykgYW1fX3J1bl9pbnN0YWxsaW5mbz1ubzs7IFwKKwkgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjEgXAorCSAgICAgICB8fCBhbV9fcnVuX2luc3RhbGxpbmZvPW5vOzsgXAorCWVzYWM7IFwKKwlpZiB0ZXN0ICQkYW1fX3J1bl9pbnN0YWxsaW5mbyA9IHllczsgdGhlbiBcCiAJICBsaXN0PSckKElORk9fREVQUyknOyB0ZXN0IC1uICIkKGluZm9kaXIpIiB8fCBsaXN0PTsgXAogCSAgZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBcCiAJICAgIHJlbGZpbGU9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3N8Xi4qL3x8J2A7IFwKQEAgLTE3MzIsNyArMTgxMiw3IEBACiBtYWludGFpbmVyLWNsZWFuOiBtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZQogCS1ybSAtZiAkKGFtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTKQogCS1ybSAtcmYgJCh0b3Bfc3JjZGlyKS9hdXRvbTR0ZS5jYWNoZQotCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvcGEvJChERVBESVIpIHNyYy9wb3dlcnBjLyQoREVQRElSKSBzcmMvczM5MC8kKERFUERJUikgc3JjL3NoLyQoREVQRElSKSBzcmMvc2g2NC8kKERFUERJUikgc3JjL3NwYXJjLyQoREVQRElSKSBzcmMveDg2LyQoREVQRElSKQorCS1ybSAtcmYgc3JjLyQoREVQRElSKSBzcmMvYWxwaGEvJChERVBESVIpIHNyYy9hcm0vJChERVBESVIpIHNyYy9hdnIzMi8kKERFUERJUikgc3JjL2NyaXMvJChERVBESVIpIHNyYy9mcnYvJChERVBESVIpIHNyYy9pYTY0LyQoREVQRElSKSBzcmMvbTMyci8kKERFUERJUikgc3JjL202OGsvJChERVBESVIpIHNyYy9taXBzLyQoREVQRElSKSBzcmMvbW94aWUvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCiAJLXJtIC1mIE1ha2VmaWxlCiBtYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gXAogCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtYWludGFpbmVyLWNsZWFuLXZ0aQpAQCAtMTc2MSwyNCArMTg0MSwyNCBAQAogCWFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tYW1pbmZvIFwKIAljbGVhbi1nZW5lcmljIGNsZWFuLWxpYkxUTElCUkFSSUVTIGNsZWFuLWxpYnRvb2wgXAogCWNsZWFuLW5vaW5zdExUTElCUkFSSUVTIGN0YWdzIGN0YWdzLXJlY3Vyc2l2ZSBkaXN0IGRpc3QtYWxsIFwKLQlkaXN0LWJ6aXAyIGRpc3QtZ3ppcCBkaXN0LWluZm8gZGlzdC1sem1hIGRpc3Qtc2hhciBkaXN0LXRhclogXAotCWRpc3QteHogZGlzdC16aXAgZGlzdGNoZWNrIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBcCi0JZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWhkciBkaXN0Y2xlYW4tbGlidG9vbCBcCi0JZGlzdGNsZWFuLXRhZ3MgZGlzdGNsZWFuY2hlY2sgZGlzdGRpciBkaXN0dW5pbnN0YWxsY2hlY2sgZHZpIFwKLQlkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gXAotCWluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gXAotCWluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBcCi0JaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKLQlpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgXAotCWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcCi0JaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIGluc3RhbGxkaXJzLWFtIG1haW50YWluZXItY2xlYW4gXAotCW1haW50YWluZXItY2xlYW4tYW1pbmZvIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBcCi0JbWFpbnRhaW5lci1jbGVhbi12dGkgbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tYW1pbmZvIFwKLQltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCi0JbW9zdGx5Y2xlYW4tdnRpIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLXJlY3Vyc2l2ZSBcCi0JdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSB1bmluc3RhbGwtZHZpLWFtIHVuaW5zdGFsbC1odG1sLWFtIFwKLQl1bmluc3RhbGwtaW5mby1hbSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgdW5pbnN0YWxsLXBkZi1hbSBcCi0JdW5pbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgdW5pbnN0YWxsLXBzLWFtCisJZGlzdC1iemlwMiBkaXN0LWd6aXAgZGlzdC1pbmZvIGRpc3QtbHppcCBkaXN0LWx6bWEgZGlzdC1zaGFyIFwKKwlkaXN0LXRhclogZGlzdC14eiBkaXN0LXppcCBkaXN0Y2hlY2sgZGlzdGNsZWFuIFwKKwlkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4taGRyIFwKKwlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0Y2xlYW5jaGVjayBkaXN0ZGlyIFwKKwlkaXN0dW5pbnN0YWxsY2hlY2sgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIFwKKwlpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIFwKKwlpbnN0YWxsLWxpYkxUTElCUkFSSUVTIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIFwKKwlpbnN0YWxsLXBrZ2NvbmZpZ0RBVEEgaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgXAorCWluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgaW5zdGFsbGRpcnMtYW0gXAorCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtYWludGFpbmVyLWNsZWFuLXZ0aSBtb3N0bHljbGVhbiBcCisJbW9zdGx5Y2xlYW4tYW1pbmZvIG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4tbGlidG9vbCBtb3N0bHljbGVhbi12dGkgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIFwKKwl0YWdzLXJlY3Vyc2l2ZSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1kdmktYW0gXAorCXVuaW5zdGFsbC1odG1sLWFtIHVuaW5zdGFsbC1pbmZvLWFtIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLXBkZi1hbSB1bmluc3RhbGwtcGtnY29uZmlnREFUQSB1bmluc3RhbGwtcHMtYW0KIAogCiAjIE5vIGluc3RhbGwtaHRtbCBvciBpbnN0YWxsLXBkZiBzdXBwb3J0IGluIGF1dG9tYWtlIHlldApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9SRUFETUUgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRQppbmRleCAxNjdkZTQyLi5iY2M3MTc4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRQpAQCAtMSw3ICsxLDcgQEAKIFN0YXR1cwogPT09PT09CiAKLWxpYmZmaS0zLjAuMTAgd2FzIHJlbGVhc2VkIG9uIFhYWFhYWFhYWFgsIDIwMTAuIENoZWNrIHRoZSBsaWJmZmkgd2ViCitsaWJmZmktMy4wLjExIHdhcyByZWxlYXNlZCBvbiBBcHJpbCAxMSwgMjAxMi4gIENoZWNrIHRoZSBsaWJmZmkgd2ViCiBwYWdlIGZvciB1cGRhdGVzOiA8VVJMOmh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvPi4KIAogCkBAIC00Myw3ICs0Myw3IEBACiBGb3Igc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkZXRhaWxzIGFuZCB0ZXN0aW5nIHN0YXR1cywgcGxlYXNlCiByZWZlciB0byB0aGUgd2lraSBwYWdlIGhlcmU6CiAKLSBodHRwOi8vd3d3Lm1veGllbG9naWMub3JnL3dpa2kvaW5kZXgucGhwP3RpdGxlPUxpYmZmaV8zLjAuMTAKKyBodHRwOi8vd3d3Lm1veGllbG9naWMub3JnL3dpa2kvaW5kZXgucGhwP3RpdGxlPUxpYmZmaV8zLjAuMTEKIAogQXQgdGhlIHRpbWUgb2YgcmVsZWFzZSwgdGhlIGZvbGxvd2luZyBiYXNpYyBjb25maWd1cmF0aW9ucyBoYXZlIGJlZW4KIHRlc3RlZDoKQEAgLTU0LDEyICs1NCwxNyBAQAogfCBBbHBoYSAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgQWxwaGEgICAgICAgIHwgVHJ1NjQgICAgICAgICAgICB8CiB8IEFSTSAgICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBBUk0gICAgICAgICAgfCBpT1MgICAgICAgICAgICAgIHwKIHwgQVZSMzIgICAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IEhQUEEgICAgICAgICB8IEhQVVggICAgICAgICAgICAgfAogfCBJQS02NCAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgTTY4SyAgICAgICAgIHwgRnJlZU1pTlQgICAgICAgICB8Cit8IE02OEsgICAgICAgICB8IFJURU1TICAgICAgICAgICAgfAogfCBNSVBTICAgICAgICAgfCBJUklYICAgICAgICAgICAgIHwKIHwgTUlQUyAgICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IE1JUFMgICAgICAgICB8IFJURU1TICAgICAgICAgICAgfAogfCBNSVBTNjQgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgUG93ZXJQQyAgICAgIHwgQU1JR0EgICAgICAgICAgICB8CiB8IFBvd2VyUEMgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBQb3dlclBDICAgICAgfCBNYWMgT1NYICAgICAgICAgIHwKIHwgUG93ZXJQQyAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8CkBAIC03MSwxNSArNzYsMTggQEAKIHwgU1BBUkM2NCAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IFNQQVJDNjQgICAgICB8IEZyZWVCU0QgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKK3wgWDg2ICAgICAgICAgIHwgSW50ZXJpeCAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IGtGcmVlQlNEICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgTWFjIE9TWCAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IE9wZW5CU0QgICAgICAgICAgfAorfCBYODYgICAgICAgICAgfCBPUy8yICAgICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgU29sYXJpcyAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IFdpbmRvd3MvQ3lnd2luICAgfAogfCBYODYgICAgICAgICAgfCBXaW5kb3dzL01pbmdXICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8CiB8IFg4Ni02NCAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBYODYtNjQgICAgICAgfCBMaW51eC94MzIgICAgICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgT3BlbkJTRCAgICAgICAgICB8CiB8IFg4Ni02NCAgICAgICB8IFdpbmRvd3MvTWluZ1cgICAgfAogfC0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLXwKQEAgLTExMyw5ICsxMjEsMTYgQEAKIE1pY3Jvc29mdCdzIFZpc3VhbCBDKysgY29tcGlsZXIuICBJbiB0aGlzIGNhc2UsIHVzZSB0aGUgbXN2Y2Muc2gKIHdyYXBwZXIgc2NyaXB0IGR1cmluZyBjb25maWd1cmF0aW9uIGxpa2Ugc286CiAKLXBhdGgvdG8vY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0aWMgXAotCUNDPXBhdGgvdG8vbXN2Y2Muc2ggTEQ9bGluayBcCi0JQ1BQPVwiY2wgLW5vbG9nbyAtRVBcIgorcGF0aC90by9jb25maWd1cmUgQ0M9cGF0aC90by9tc3ZjYy5zaCBMRD1saW5rIENQUD1cImNsIC1ub2xvZ28gLUVQXCIKKworRm9yIDY0LWJpdCBXaW5kb3dzIGJ1aWxkcywgdXNlIENDPSJwYXRoL3RvL21zdmNjLnNoIC1tNjQiLgorWW91IG1heSBhbHNvIG5lZWQgdG8gc3BlY2lmeSAtLWJ1aWxkIGFwcHJvcHJpYXRlbHkuIFdoZW4gYnVpbGRpbmcgd2l0aCBNU1ZDCit1bmRlciBhIE1pbmdXIGVudmlyb25tZW50LCB5b3UgbWF5IG5lZWQgdG8gcmVtb3ZlIHRoZSBsaW5lIGluIGNvbmZpZ3VyZQordGhhdCBzZXRzICdmaXhfc3JjZmlsZV9wYXRoJyB0byBhICdjeWdwYXRoJyBjb21tYW5kLiAoJ2N5Z3BhdGgnIGlzIG5vdAorcHJlc2VudCBpbiBNaW5nVywgYW5kIGlzIG5vdCByZXF1aXJlZCB3aGVuIHVzaW5nIE1pbmdXLXN0eWxlIHBhdGhzLikKKworRm9yIGlPUyBidWlsZHMsIHJ1biBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IGFuZCB0aGVuCitsaWJmZmkueGNvZGVwcm9qIHNob3VsZCB3b3JrLgogCiBDb25maWd1cmUgaGFzIG1hbnkgb3RoZXIgb3B0aW9ucy4gVXNlICJjb25maWd1cmUgLS1oZWxwIiB0byBzZWUgdGhlbSBhbGwuCiAKQEAgLTEzMywxMSArMTQ4LDMwIEBACiAKIFNlZSB0aGUgQ2hhbmdlTG9nIGZpbGVzIGZvciBkZXRhaWxzLgogCi0zLjAuMTAgPz8/LT8/LT8/Ci0gICAgICAgIEZpeCB0aGUgTjY0IGJ1aWxkIG9uIG1pcHMtc2dpLWlyaXg2LjUuCi0JVGVzdHN1aXRlIGZpeGVzIGZvciBUcnU2NCBVbml4LgorMy4wLjExIEFwci0xMS0xMgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdmFyaWFkaWMgZnVuY3Rpb25zIChmZmlfcHJlcF9jaWZfdmFyKS4KKwlBZGQgTGludXgveDMyIHN1cHBvcnQuCisJQWRkIHRoaXNjYWxsLCBmYXN0Y2FsbCBhbmQgTVNWQyBjZGVjbCBzdXBwb3J0IG9uIFdpbmRvd3MuCisgICAgICAgIEFkZCBBbWlnYSBhbmQgbmV3ZXIgTWFjT1Mgc3VwcG9ydC4KKwlBZGQgbTY4ayBGcmVlTWlOVCBzdXBwb3J0LgorCUludGVncmF0aW9uIHdpdGggaU9TJyB4Y29kZSBidWlsZCB0b29scy4KKwlGaXggT2N0ZW9uIGFuZCBNQzY4ODgxIHN1cHBvcnQuCisJRml4IGNvZGUgcGVzc2ltaXphdGlvbnMuCisgICAgICAgIExvdHMgb2YgYnVpbGQgZml4ZXMuCisKKzMuMC4xMCBBdWctMjMtMTEKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEFwcGxlJ3MgaU9TLgorCUFkZCBzdXBwb3J0IGZvciBBUk0gVkZQIEFCSS4KKyAgICAgICAgQWRkIFJURU1TIHN1cHBvcnQgZm9yIE1JUFMgYW5kIE02OEsuCisJRml4IGluc3RydWN0aW9uIGNhY2hlIGNsZWFyaW5nIHByb2JsZW1zIG9uCisJICBBUk0gYW5kIFNQQVJDLgorCUZpeCB0aGUgTjY0IGJ1aWxkIG9uIG1pcHMtc2dpLWlyaXg2LjUuCiAJRW5hYmxlIGJ1aWxkcyB3aXRoIE1pY3Jvc29mdCdzIGNvbXBpbGVyLgotCUVuYWJsZSB4ODYgYnVpbGRzIHdpdGggU3VuJ3MgY29tcGlsZXIuCisJRW5hYmxlIHg4NiBidWlsZHMgd2l0aCBPcmFjbGUncyBTb2xhcmlzIGNvbXBpbGVyLgorCUZpeCBzdXBwb3J0IGZvciBjYWxsaW5nIGNvZGUgY29tcGlsZWQgd2l0aCBPcmFjbGUncyBTcGFyYworCSAgU29sYXJpcyBjb21waWxlci4KKwlUZXN0c3VpdGUgZml4ZXMgZm9yIFRydTY0IFVuaXguCisJQWRkaXRpb25hbCBwbGF0Zm9ybSBzdXBwb3J0LgogCiAzLjAuOSBEZWMtMzEtMDkKICAgICAgICAgQWRkIEFWUjMyIGFuZCB3aW42NCBwb3J0cy4gIEFkZCBBUk0gc29mdGZwIHN1cHBvcnQuCkBAIC0yNjcsNyArMzAxLDcgQEAKIEF1dGhvcnMgJiBDcmVkaXRzCiA9PT09PT09PT09PT09PT09PQogCi1saWJmZmkgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbnRob255IEdyZWVuIDxncmVlbkByZWRoYXQuY29tPi4KK2xpYmZmaSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPi4KIAogVGhlIGRldmVsb3BlcnMgb2YgdGhlIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIHByb2plY3QgaGF2ZSBtYWRlCiBpbm51bWVyYWJsZSB2YWx1YWJsZSBjb250cmlidXRpb25zLiAgU2VlIHRoZSBDaGFuZ2VMb2cgZmlsZSBmb3IKQEAgLTMxOCw1ICszNTIsNiBAQAogVGhlIGxpc3QgYWJvdmUgaXMgYWxtb3N0IGNlcnRhaW5seSBpbmNvbXBsZXRlIGFuZCBpbmFjY3VyYXRlLiAgSSdtCiBoYXBweSB0byBtYWtlIGNvcnJlY3Rpb25zIG9yIGFkZGl0aW9ucyB1cG9uIHJlcXVlc3QuCiAKLUlmIHlvdSBoYXZlIGEgcHJvYmxlbSwgb3IgaGF2ZSBmb3VuZCBhIGJ1ZywgcGxlYXNlIHNlbmQgYSBub3RlIHRvCi1ncmVlbkByZWRoYXQuY29tLgorSWYgeW91IGhhdmUgYSBwcm9ibGVtLCBvciBoYXZlIGZvdW5kIGEgYnVnLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8gdGhlCithdXRob3IgYXQgZ3JlZW5AbW94aWVsb2dpYy5jb20sIG9yIHRoZSBwcm9qZWN0IG1haWxpbmcgbGlzdCBhdAorbGliZmZpLWRpc2N1c3NAc291cmNld2FyZS5vcmcuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQKaW5kZXggYzhlNTI2Zi4uZDMzM2ZmMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9hY2xvY2FsLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNApAQCAtMSw3ICsxLDggQEAKLSMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjExLjEgLSotIEF1dG9jb25mIC0qLQorIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuMTEuMyAtKi0gQXV0b2NvbmYgLSotCiAKICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LAotIyAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMTMsMTggKzE0LDgzOSBAQAogCiBtNF9pZm5kZWYoW0FDX0FVVE9DT05GX1ZFUlNJT05dLAogICBbbTRfY29weShbbTRfUEFDS0FHRV9WRVJTSU9OXSwgW0FDX0FVVE9DT05GX1ZFUlNJT05dKV0pZG5sCi1tNF9pZihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSksIFsyLjY1XSwsCi1bbTRfd2FybmluZyhbdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIGF1dG9jb25mIDIuNjUuCittNF9pZihtNF9kZWZuKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSksIFsyLjY4XSwsCitbbTRfd2FybmluZyhbdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIGF1dG9jb25mIDIuNjguCiBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2YgYXV0b2NvbmYuICBJdCBtYXkgd29yaywgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvLgogSWYgeW91IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdlbmVyYXRlIHRoZSBidWlsZCBzeXN0ZW0gZW50aXJlbHkuCiBUbyBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25mJy5dKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgbHRkbC5tNCAtIENvbmZpZ3VyZSBsdGRsIGZvciB0aGUgdGFyZ2V0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBXcml0dGVuIGJ5IFRob21hcyBUYW5uZXIsIDE5OTkKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxOCBMVERMX0lOSVQKKworIyBMVF9DT05GSUdfTFRETF9ESVIoRElSRUNUT1JZLCBbTFRETC1NT0RFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERJUkVDVE9SWSBjb250YWlucyB0aGUgbGlibHRkbCBzb3VyY2VzLiAgSXQgaXMgb2theSB0byBjYWxsIHRoaXMKKyMgZnVuY3Rpb24gbXVsdGlwbGUgdGltZXMsIGFzIGxvbmcgYXMgdGhlIHNhbWUgRElSRUNUT1JZIGlzIGFsd2F5cyBnaXZlbi4KK0FDX0RFRlVOKFtMVF9DT05GSUdfTFRETF9ESVJdLAorW0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSkKK18kMCgkKikKK10pIyBMVF9DT05GSUdfTFRETF9ESVIKKworIyBXZSBicmVhayB0aGlzIG91dCBpbnRvIGEgc2VwYXJhdGUgbWFjcm8sIHNvIHRoYXQgd2UgY2FuIGNhbGwgaXQgc2FmZWx5CisjIGludGVybmFsbHkgd2l0aG91dCBiZWluZyBjYXVnaHQgYWNjaWRlbnRhbGx5IGJ5IHRoZSBzZWQgc2NhbiBpbiBsaWJ0b29saXplLgorbTRfZGVmdW4oW19MVF9DT05GSUdfTFRETF9ESVJdLAorW2RubCByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcworbTRfcHVzaGRlZihbX0FSR19ESVJdLCBtNF9icGF0c3Vic3QoWyQxXSwgWy8qJF0pKQorbTRfY2FzZShfTFRETF9ESVIsCisJW10sIFtkbmwgb25seSBzZXQgbHRfbHRkbF9kaXIgaWYgX0FSR19ESVIgaXMgbm90IHNpbXBseSBgLicKKwkgICAgIG00X2lmKF9BUkdfRElSLCBbLl0sCisJICAgICAgICAgICAgIFtdLAorCQkgW200X2RlZmluZShbX0xURExfRElSXSwgX0FSR19ESVIpCisJICAgICAgICAgIF9MVF9TSEVMTF9JTklUKFtsdF9sdGRsX2Rpcj0nXV9BUkdfRElSWyddKV0pXSwKKyAgICBbbTRfaWYoX0FSR19ESVIsIF9MVERMX0RJUiwKKwkgICAgW10sCisJW200X2ZhdGFsKFttdWx0aXBsZSBsaWJsdGRsIGRpcmVjdG9yaWVzOiBgXV9MVERMX0RJUlsnLCBgXV9BUkdfRElSWyddKV0pXSkKK200X3BvcGRlZihbX0FSR19ESVJdKQorXSkjIF9MVF9DT05GSUdfTFRETF9ESVIKKworIyBJbml0aWFsaXNlOgorbTRfZGVmaW5lKFtfTFRETF9ESVJdLCBbXSkKKworCisjIF9MVF9CVUlMRF9QUkVGSVgKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBJZiBBdXRvY29uZiBpcyBuZXcgZW5vdWdoLCBleHBhbmQgdG8gYCR7dG9wX2J1aWxkX3ByZWZpeH0nLCBvdGhlcndpc2UKKyMgdG8gYCR7dG9wX2J1aWxkZGlyfS8nLgorbTRfZGVmaW5lKFtfTFRfQlVJTERfUFJFRklYXSwKK1ttNF9pZmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgICBbbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjJdKSwKKwkgIFstMV0sIFttNF9pZmRlZihbX0FDX0hBVkVfVE9QX0JVSUxEX1BSRUZJWF0sCisJCQkgIFske3RvcF9idWlsZF9wcmVmaXh9XSwKKwkJCSAgWyR7dG9wX2J1aWxkZGlyfS9dKV0sCisJICBbJHt0b3BfYnVpbGRfcHJlZml4fV0pXSwKKyAgIFske3RvcF9idWlsZGRpcn0vXSlbXWRubAorXSkKKworCisjIExURExfQ09OVkVOSUVOQ0UKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBzZXRzIExJQkxUREwgdG8gdGhlIGxpbmsgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGNvbnZlbmllbmNlIGxpYnJhcnkgYW5kCisjIExURExJTkNMIHRvIHRoZSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgbGlibHRkbCBoZWFkZXIgYW5kIGFkZHMKKyMgLS1lbmFibGUtbHRkbC1jb252ZW5pZW5jZSB0byB0aGUgY29uZmlndXJlIGFyZ3VtZW50cy4gIE5vdGUgdGhhdAorIyBBQ19DT05GSUdfU1VCRElSUyBpcyBub3QgY2FsbGVkIGhlcmUuICBMSUJMVERMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aAorIyAnJHt0b3BfYnVpbGRfcHJlZml4fScgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2Ugd2l0aCAnJHt0b3BfYnVpbGRkaXJ9LycsCisjIGFuZCBMVERMSU5DTCB3aWxsIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX3NyY2Rpcn0vJyAobm90ZSB0aGUgc2luZ2xlCisjIHF1b3RlcyEpLiAgSWYgeW91ciBwYWNrYWdlIGlzIG5vdCBmbGF0IGFuZCB5b3UncmUgbm90IHVzaW5nIGF1dG9tYWtlLAorIyBkZWZpbmUgdG9wX2J1aWxkX3ByZWZpeCwgdG9wX2J1aWxkZGlyLCBhbmQgdG9wX3NyY2RpciBhcHByb3ByaWF0ZWx5CisjIGluIHlvdXIgTWFrZWZpbGVzLgorQUNfREVGVU4oW0xURExfQ09OVkVOSUVOQ0VdLAorW0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKK2RubCBBbHRob3VnaCB0aGUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvY3VtZW50ZWQsCitkbmwgTFRETF9DT05WRU5JRU5DRSB1c2VkIHRvIHRha2UgYSBESVJFQ1RPUlkgb3JndW1lbnQsIGlmIHdlIGhhdmUgb25lCitkbmwgaGVyZSBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYXMgYW55IG90aGVyIGRlY2xhcmF0aW9uIG9mIGxpYmx0ZGwncworZG5sIGxvY2F0aW9uISAgVGhpcyBhbHNvIGVuc3VyZXMgbHRfbHRkbF9kaXIgaXMgc2V0IHdoZW4gY29uZmlndXJlLmFjIGlzCitkbmwgbm90IHlldCB1c2luZyBhbiBleHBsaWNpdCBMVF9DT05GSUdfTFRETF9ESVIuCittNF9pZnZhbChbJDFdLCBbX0xUX0NPTkZJR19MVERMX0RJUihbJDFdKV0pZG5sCitfJDAoKQorXSkjIExURExfQ09OVkVOSUVOQ0UKKworIyBBQ19MSUJMVERMX0NPTlZFTklFTkNFIGFjY2VwdGVkIGEgZGlyZWN0b3J5IGFyZ3VtZW50IGluIG9sZGVyIGxpYnRvb2xzLAorIyBub3cgd2UgaGF2ZSBMVF9DT05GSUdfTFRETF9ESVI6CitBVV9ERUZVTihbQUNfTElCTFRETF9DT05WRU5JRU5DRV0sCitbX0xUX0NPTkZJR19MVERMX0RJUihbbTRfZGVmYXVsdChbJDFdLCBbbGlibHRkbF0pXSkKK19MVERMX0NPTlZFTklFTkNFXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwgW10pCisKKworIyBfTFRETF9DT05WRU5JRU5DRQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBDb2RlIHNoYXJlZCBieSBMVERMX0NPTlZFTklFTkNFIGFuZCBMVERMX0lOSVQoW2NvbnZlbmllbmNlXSkuCittNF9kZWZ1bihbX0xURExfQ09OVkVOSUVOQ0VdLAorW2Nhc2UgJGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlIGluCisgIG5vKSBBQ19NU0dfRVJST1IoW3RoaXMgcGFja2FnZSBuZWVkcyBhIGNvbnZlbmllbmNlIGxpYmx0ZGxdKSA7OworICAiIikgZW5hYmxlX2x0ZGxfY29udmVuaWVuY2U9eWVzCisgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtY29udmVuaWVuY2UiIDs7Citlc2FjCitMSUJMVERMPSdfTFRfQlVJTERfUFJFRklYJyIke2x0X2x0ZGxfZGlyKyRsdF9sdGRsX2Rpci99bGlibHRkbGMubGEiCitMVERMREVQUz0kTElCTFRETAorTFRETElOQ0w9Jy1JJHt0b3Bfc3JjZGlyfSciJHtsdF9sdGRsX2RpcisvJGx0X2x0ZGxfZGlyfSIKKworQUNfU1VCU1QoW0xJQkxURExdKQorQUNfU1VCU1QoW0xURExERVBTXSkKK0FDX1NVQlNUKFtMVERMSU5DTF0pCisKKyMgRm9yIGJhY2t3YXJkcyBub24tZ2V0dGV4dCBjb25zaXN0ZW50IGNvbXBhdGliaWxpdHkuLi4KK0lOQ0xUREw9IiRMVERMSU5DTCIKK0FDX1NVQlNUKFtJTkNMVERMXSkKK10pIyBfTFRETF9DT05WRU5JRU5DRQorCisKKyMgTFRETF9JTlNUQUxMQUJMRQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgaW5zdGFsbGFibGUgbGlicmFyeQorIyBhbmQgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcworIyAtLWVuYWJsZS1sdGRsLWluc3RhbGwgdG8gdGhlIGNvbmZpZ3VyZSBhcmd1bWVudHMuICBOb3RlIHRoYXQKKyMgQUNfQ09ORklHX1NVQkRJUlMgaXMgbm90IGNhbGxlZCBmcm9tIGhlcmUuICBJZiBhbiBpbnN0YWxsZWQgbGlibHRkbAorIyBpcyBub3QgZm91bmQsIExJQkxUREwgd2lsbCBiZSBwcmVmaXhlZCB3aXRoICcke3RvcF9idWlsZF9wcmVmaXh9JyBpZgorIyBhdmFpbGFibGUsIG90aGVyd2lzZSB3aXRoICcke3RvcF9idWlsZGRpcn0vJywgYW5kIExURExJTkNMIHdpbGwgYmUKKyMgcHJlZml4ZWQgd2l0aCAnJHt0b3Bfc3JjZGlyfS8nIChub3RlIHRoZSBzaW5nbGUgcXVvdGVzISkuICBJZiB5b3VyCisjIHBhY2thZ2UgaXMgbm90IGZsYXQgYW5kIHlvdSdyZSBub3QgdXNpbmcgYXV0b21ha2UsIGRlZmluZSB0b3BfYnVpbGRfcHJlZml4LAorIyB0b3BfYnVpbGRkaXIsIGFuZCB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkgaW4geW91ciBNYWtlZmlsZXMuCisjIEluIHRoZSBmdXR1cmUsIHRoaXMgbWFjcm8gbWF5IGhhdmUgdG8gYmUgY2FsbGVkIGFmdGVyIExUX0lOSVQuCitBQ19ERUZVTihbTFRETF9JTlNUQUxMQUJMRV0sCitbQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubAorZG5sIEFsdGhvdWdoIHRoZSBhcmd1bWVudCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9jdW1lbnRlZCwKK2RubCBMVERMX0lOU1RBTExBQkxFIHVzZWQgdG8gdGFrZSBhIERJUkVDVE9SWSBvcmd1bWVudCwgaWYgd2UgaGF2ZSBvbmUKK2RubCBoZXJlIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBhcyBhbnkgb3RoZXIgZGVjbGFyYXRpb24gb2YgbGlibHRkbCdzCitkbmwgbG9jYXRpb24hICBUaGlzIGFsc28gZW5zdXJlcyBsdF9sdGRsX2RpciBpcyBzZXQgd2hlbiBjb25maWd1cmUuYWMgaXMKK2RubCBub3QgeWV0IHVzaW5nIGFuIGV4cGxpY2l0IExUX0NPTkZJR19MVERMX0RJUi4KK200X2lmdmFsKFskMV0sIFtfTFRfQ09ORklHX0xURExfRElSKFskMV0pXSlkbmwKK18kMCgpCitdKSMgTFRETF9JTlNUQUxMQUJMRQorCisjIEFDX0xJQkxURExfSU5TVEFMTEFCTEUgYWNjZXB0ZWQgYSBkaXJlY3RvcnkgYXJndW1lbnQgaW4gb2xkZXIgbGlidG9vbHMsCisjIG5vdyB3ZSBoYXZlIExUX0NPTkZJR19MVERMX0RJUjoKK0FVX0RFRlVOKFtBQ19MSUJMVERMX0lOU1RBTExBQkxFXSwKK1tfTFRfQ09ORklHX0xURExfRElSKFttNF9kZWZhdWx0KFskMV0sIFtsaWJsdGRsXSldKQorX0xURExfSU5TVEFMTEFCTEVdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQkxURExfSU5TVEFMTEFCTEVdLCBbXSkKKworCisjIF9MVERMX0lOU1RBTExBQkxFCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIENvZGUgc2hhcmVkIGJ5IExURExfSU5TVEFMTEFCTEUgYW5kIExURExfSU5JVChbaW5zdGFsbGFibGVdKS4KK200X2RlZnVuKFtfTFRETF9JTlNUQUxMQUJMRV0sCitbaWYgdGVzdCAtZiAkcHJlZml4L2xpYi9saWJsdGRsLmxhOyB0aGVuCisgIGx0X3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisgIExERkxBR1M9Ii1MJHByZWZpeC9saWIgJExERkxBR1MiCisgIEFDX0NIRUNLX0xJQihbbHRkbF0sIFtsdF9kbGluaXRdLCBbbHRfbGliX2x0ZGw9eWVzXSkKKyAgTERGTEFHUz0iJGx0X3NhdmVfTERGTEFHUyIKKyAgaWYgdGVzdCB4IiR7bHRfbGliX2x0ZGwtbm99IiA9IHh5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiICE9IHh5ZXM7IHRoZW4KKyAgICAgICMgRG9uJ3Qgb3ZlcndyaXRlICRwcmVmaXgvbGliL2xpYmx0ZGwubGEgd2l0aG91dCAtLWVuYWJsZS1sdGRsLWluc3RhbGwKKyAgICAgIEFDX01TR19XQVJOKFtub3Qgb3ZlcndyaXRpbmcgbGlibHRkbCBhdCAkcHJlZml4LCBmb3JjZSB3aXRoIGAtLWVuYWJsZS1sdGRsLWluc3RhbGwnXSkKKyAgICAgIGVuYWJsZV9sdGRsX2luc3RhbGw9bm8KKyAgICBmaQorICBlbGlmIHRlc3QgeCIkZW5hYmxlX2x0ZGxfaW5zdGFsbCIgPSB4bm87IHRoZW4KKyAgICBBQ19NU0dfV0FSTihbbGlibHRkbCBub3QgaW5zdGFsbGVkLCBidXQgaW5zdGFsbGF0aW9uIGRpc2FibGVkXSkKKyAgZmkKK2ZpCisKKyMgSWYgY29uZmlndXJlLmFjIGRlY2xhcmVkIGFuIGluc3RhbGxhYmxlIGx0ZGwsIGFuZCB0aGUgdXNlciBkaWRuJ3Qgb3ZlcnJpZGUKKyMgd2l0aCAtLWRpc2FibGUtbHRkbC1pbnN0YWxsLCB3ZSB3aWxsIGluc3RhbGwgdGhlIHNoaXBwZWQgbGlibHRkbC4KK2Nhc2UgJGVuYWJsZV9sdGRsX2luc3RhbGwgaW4KKyAgbm8pIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1pbnN0YWxsPW5vIgorICAgICAgTElCTFRETD0iLWxsdGRsIgorICAgICAgTFRETERFUFM9CisgICAgICBMVERMSU5DTD0KKyAgICAgIDs7CisgICopICBlbmFibGVfbHRkbF9pbnN0YWxsPXllcworICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWVuYWJsZS1sdGRsLWluc3RhbGwiCisgICAgICBMSUJMVERMPSdfTFRfQlVJTERfUFJFRklYJyIke2x0X2x0ZGxfZGlyKyRsdF9sdGRsX2Rpci99bGlibHRkbC5sYSIKKyAgICAgIExURExERVBTPSRMSUJMVERMCisgICAgICBMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9JyIke2x0X2x0ZGxfZGlyKy8kbHRfbHRkbF9kaXJ9IgorICAgICAgOzsKK2VzYWMKKworQUNfU1VCU1QoW0xJQkxURExdKQorQUNfU1VCU1QoW0xURExERVBTXSkKK0FDX1NVQlNUKFtMVERMSU5DTF0pCisKKyMgRm9yIGJhY2t3YXJkcyBub24tZ2V0dGV4dCBjb25zaXN0ZW50IGNvbXBhdGliaWxpdHkuLi4KK0lOQ0xUREw9IiRMVERMSU5DTCIKK0FDX1NVQlNUKFtJTkNMVERMXSkKK10pIyBMVERMX0lOU1RBTExBQkxFCisKKworIyBfTFRETF9NT0RFX0RJU1BBVENICisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xURExfTU9ERV9ESVNQQVRDSF0sCitbZG5sIElmIF9MVERMX0RJUiBpcyBgLicsIHRoZW4gd2UgYXJlIGNvbmZpZ3VyaW5nIGxpYmx0ZGwgaXRzZWxmOgorbTRfaWYoX0xURExfRElSLCBbXSwKKwlbXSwKKyAgICBkbmwgaWYgX0xURExfTU9ERSB3YXMgbm90IHNldCBhbHJlYWR5LCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBgc3VicHJvamVjdCc6CisgICAgW200X2Nhc2UobTRfZGVmYXVsdChfTFRETF9NT0RFLCBbc3VicHJvamVjdF0pLAorCSAgW3N1YnByb2plY3RdLCBbQUNfQ09ORklHX1NVQkRJUlMoX0xURExfRElSKQorCQkJICBfTFRfU0hFTExfSU5JVChbbHRfZGxvcGVuX2Rpcj0iJGx0X2x0ZGxfZGlyIl0pXSwKKwkgIFtub25yZWN1cnNpdmVdLCBbX0xUX1NIRUxMX0lOSVQoW2x0X2Rsb3Blbl9kaXI9IiRsdF9sdGRsX2RpciI7IGx0X2xpYm9ial9wcmVmaXg9IiRsdF9sdGRsX2Rpci8iXSldLAorCSAgW3JlY3Vyc2l2ZV0sIFtdLAorCVttNF9mYXRhbChbdW5rbm93biBsaWJsdGRsIG1vZGU6IF1fTFRETF9NT0RFKV0pXSlkbmwKK2RubCBCZSBjYXJlZnVsIG5vdCB0byBleHBhbmQgdHdpY2U6CittNF9kZWZpbmUoWyQwXSwgW10pCitdKSMgX0xURExfTU9ERV9ESVNQQVRDSAorCisKKyMgX0xUX0xJQk9CSihNT0RVTEVfTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTGlrZSBBQ19MSUJPQkosIGV4Y2VwdCB0aGF0IE1PRFVMRV9OQU1FIGdvZXMgaW50byBfTFRfTElCT0JKUyBpbnN0ZWFkCisjIG9mIGludG8gTElCT0JKUy4KK0FDX0RFRlVOKFtfTFRfTElCT0JKXSwgWworICBtNF9wYXR0ZXJuX2FsbG93KFteX0xUX0xJQk9CSlMkXSkKKyAgX0xUX0xJQk9CSlM9IiRfTFRfTElCT0JKUyAkMS4kYWNfb2JqZXh0IgorXSkjIF9MVF9MSUJPQkpTCisKKworIyBMVERMX0lOSVQoW09QVElPTlNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDbGllbnRzIG9mIGxpYmx0ZGwgY2FuIHVzZSB0aGlzIG1hY3JvIHRvIGFsbG93IHRoZSBpbnN0YWxsZXIgdG8KKyMgY2hvb3NlIGJldHdlZW4gYSBzaGlwcGVkIGNvcHkgb2YgdGhlIGx0ZGwgc291cmNlcyBvciBhIHByZWluc3RhbGxlZAorIyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiAgSWYgdGhlIHNoaXBwZWQgbHRkbCBzb3VyY2VzIGFyZSBub3QgaW4gYQorIyBzdWJkaXJlY3RvcnkgbmFtZWQgbGlibHRkbCwgdGhlIGRpcmVjdG9yeSBuYW1lIG11c3QgYmUgZ2l2ZW4gYnkKKyMgTFRfQ09ORklHX0xURExfRElSLgorQUNfREVGVU4oW0xURExfSU5JVF0sCitbZG5sIFBhcnNlIE9QVElPTlMKK19MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQorCitkbmwgV2UgbmVlZCB0byBrZWVwIG91ciBvd24gbGlzdCBvZiBsaWJvYmpzIHNlcGFyYXRlIGZyb20gb3VyIHBhcmVudCBwcm9qZWN0LAorZG5sIGFuZCB0aGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhhdCBpcyByZWRlZmluZSB0aGUgQUNfTElCT0JKcyBtYWNybyB3aGlsZQorZG5sIHdlIGxvb2sgZm9yIG91ciBvd24gTElCT0JKcy4KK200X3B1c2hkZWYoW0FDX0xJQk9CSl0sIG00X2RlZm4oW19MVF9MSUJPQkpdKSkKK200X3B1c2hkZWYoW0FDX0xJQlNPVVJDRVNdKQorCitkbmwgSWYgbm90IG90aGVyd2lzZSBkZWZpbmVkLCBkZWZhdWx0IHRvIHRoZSAxLjUueCBjb21wYXRpYmxlIHN1YnByb2plY3QgbW9kZToKK200X2lmKF9MVERMX01PREUsIFtdLAorICAgICAgICBbbTRfZGVmaW5lKFtfTFRETF9NT0RFXSwgbTRfZGVmYXVsdChbJDJdLCBbc3VicHJvamVjdF0pKQorICAgICAgICBtNF9pZihbLTFdLCBbbTRfYnJlZ2V4cChfTFRETF9NT0RFLCBbXChzdWJwcm9qZWN0XHxcKG5vblwpP3JlY3Vyc2l2ZVwpXSldLAorICAgICAgICAgICAgICAgIFttNF9mYXRhbChbdW5rbm93biBsaWJsdGRsIG1vZGU6IF1fTFRETF9NT0RFKV0pXSkKKworQUNfQVJHX1dJVEgoW2luY2x1ZGVkX2x0ZGxdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWluY2x1ZGVkLWx0ZGxdLAorICAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBHTlUgbHRkbCBzb3VyY2VzIGluY2x1ZGVkIGhlcmVdKV0pCisKK2lmIHRlc3QgIngkd2l0aF9pbmNsdWRlZF9sdGRsIiAhPSB4eWVzOyB0aGVuCisgICMgV2UgYXJlIG5vdCBiZWluZyBmb3JjZWQgdG8gdXNlIHRoZSBpbmNsdWRlZCBsaWJsdGRsIHNvdXJjZXMsIHNvCisgICMgZGVjaWRlIHdoZXRoZXIgdGhlcmUgaXMgYSB1c2VmdWwgaW5zdGFsbGVkIHZlcnNpb24gd2UgY2FuIHVzZS4KKyAgQUNfQ0hFQ0tfSEVBREVSKFtsdGRsLmhdLAorICAgICAgW0FDX0NIRUNLX0RFQ0woW2x0X2RsaW50ZXJmYWNlX3JlZ2lzdGVyXSwKKwkgICBbQUNfQ0hFQ0tfTElCKFtsdGRsXSwgW2x0X2RsYWR2aXNlX3ByZWxvYWRdLAorCSAgICAgICBbd2l0aF9pbmNsdWRlZF9sdGRsPW5vXSwKKwkgICAgICAgW3dpdGhfaW5jbHVkZWRfbHRkbD15ZXNdKV0sCisJICAgW3dpdGhfaW5jbHVkZWRfbHRkbD15ZXNdLAorCSAgIFtBQ19JTkNMVURFU19ERUZBVUxUCisJICAgICNpbmNsdWRlIDxsdGRsLmg+XSldLAorICAgICAgW3dpdGhfaW5jbHVkZWRfbHRkbD15ZXNdLAorICAgICAgW0FDX0lOQ0xVREVTX0RFRkFVTFRdCisgICkKK2ZpCisKK2RubCBJZiBuZWl0aGVyIExUX0NPTkZJR19MVERMX0RJUiwgTFRETF9DT05WRU5JRU5DRSBub3IgTFRETF9JTlNUQUxMQUJMRQorZG5sIHdhcyBjYWxsZWQgeWV0LCB0aGVuIGZvciBvbGQgdGltZXMnIHNha2UsIHdlIGFzc3VtZSBsaWJsdGRsIGlzIGluIGFuCitkbmwgZXBvbnltb3VzIGRpcmVjdG9yeToKK0FDX1BST1ZJREVfSUZFTFNFKFtMVF9DT05GSUdfTFRETF9ESVJdLCBbXSwgW19MVF9DT05GSUdfTFRETF9ESVIoW2xpYmx0ZGxdKV0pCisKK0FDX0FSR19XSVRIKFtsdGRsX2luY2x1ZGVdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWx0ZGwtaW5jbHVkZT1ESVJdLAorICAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBsdGRsIGhlYWRlcnMgaW5zdGFsbGVkIGluIERJUl0pXSkKKworaWYgdGVzdCAtbiAiJHdpdGhfbHRkbF9pbmNsdWRlIjsgdGhlbgorICBpZiB0ZXN0IC1mICIkd2l0aF9sdGRsX2luY2x1ZGUvbHRkbC5oIjsgdGhlbiA6CisgIGVsc2UKKyAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgbHRkbCBpbmNsdWRlIGRpcmVjdG9yeTogYCR3aXRoX2x0ZGxfaW5jbHVkZSddKQorICBmaQorZWxzZQorICB3aXRoX2x0ZGxfaW5jbHVkZT1ubworZmkKKworQUNfQVJHX1dJVEgoW2x0ZGxfbGliXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sdGRsLWxpYj1ESVJdLAorICAgICAgICAgICAgICAgICAgICBbdXNlIHRoZSBsaWJsdGRsLmxhIGluc3RhbGxlZCBpbiBESVJdKV0pCisKK2lmIHRlc3QgLW4gIiR3aXRoX2x0ZGxfbGliIjsgdGhlbgorICBpZiB0ZXN0IC1mICIkd2l0aF9sdGRsX2xpYi9saWJsdGRsLmxhIjsgdGhlbiA6CisgIGVsc2UKKyAgICBBQ19NU0dfRVJST1IoW2ludmFsaWQgbHRkbCBsaWJyYXJ5IGRpcmVjdG9yeTogYCR3aXRoX2x0ZGxfbGliJ10pCisgIGZpCitlbHNlCisgIHdpdGhfbHRkbF9saWI9bm8KK2ZpCisKK2Nhc2UgLCR3aXRoX2luY2x1ZGVkX2x0ZGwsJHdpdGhfbHRkbF9pbmNsdWRlLCR3aXRoX2x0ZGxfbGliLCBpbgorICAseWVzLG5vLG5vLCkKKwltNF9jYXNlKG00X2RlZmF1bHQoX0xURExfVFlQRSwgW2NvbnZlbmllbmNlXSksCisJICAgIFtjb252ZW5pZW5jZV0sIFtfTFRETF9DT05WRU5JRU5DRV0sCisJICAgIFtpbnN0YWxsYWJsZV0sIFtfTFRETF9JTlNUQUxMQUJMRV0sCisJICBbbTRfZmF0YWwoW3Vua25vd24gbGlibHRkbCBidWlsZCB0eXBlOiBdX0xURExfVFlQRSldKQorCTs7CisgICxubyxubyxubywpCisJIyBJZiB0aGUgaW5jbHVkZWQgbHRkbCBpcyBub3QgdG8gYmUgdXNlZCwgdGhlbiB1c2UgdGhlCisJIyBwcmVpbnN0YWxsZWQgbGlibHRkbCB3ZSBmb3VuZC4KKwlBQ19ERUZJTkUoW0hBVkVfTFRETF0sIFsxXSwKKwkgIFtEZWZpbmUgdGhpcyBpZiBhIG1vZGVybiBsaWJsdGRsIGlzIGFscmVhZHkgaW5zdGFsbGVkXSkKKwlMSUJMVERMPS1sbHRkbAorCUxURExERVBTPQorCUxURExJTkNMPQorCTs7CisgICxubyosbm8sKikKKwlBQ19NU0dfRVJST1IoW2AtLXdpdGgtbHRkbC1pbmNsdWRlJyBhbmQgYC0td2l0aC1sdGRsLWxpYicgb3B0aW9ucyBtdXN0IGJlIHVzZWQgdG9nZXRoZXJdKQorCTs7CisgICopCXdpdGhfaW5jbHVkZWRfbHRkbD1ubworCUxJQkxUREw9Ii1MJHdpdGhfbHRkbF9saWIgLWxsdGRsIgorCUxURExERVBTPQorCUxURExJTkNMPSItSSR3aXRoX2x0ZGxfaW5jbHVkZSIKKwk7OworZXNhYworSU5DTFRETD0iJExURExJTkNMIgorCisjIFJlcG9ydCBvdXIgZGVjaXNpb24uLi4KK0FDX01TR19DSEVDS0lORyhbd2hlcmUgdG8gZmluZCBsaWJsdGRsIGhlYWRlcnNdKQorQUNfTVNHX1JFU1VMVChbJExURExJTkNMXSkKK0FDX01TR19DSEVDS0lORyhbd2hlcmUgdG8gZmluZCBsaWJsdGRsIGxpYnJhcnldKQorQUNfTVNHX1JFU1VMVChbJExJQkxURExdKQorCitfTFRETF9TRVRVUAorCitkbmwgcmVzdG9yZSBhdXRvY29uZiBkZWZpbml0aW9uLgorbTRfcG9wZGVmKFtBQ19MSUJPQkpdKQorbTRfcG9wZGVmKFtBQ19MSUJTT1VSQ0VTXSkKKworQUNfQ09ORklHX0NPTU1BTkRTX1BSRShbCisgICAgX2x0ZGxfbGlib2Jqcz0KKyAgICBfbHRkbF9sdGxpYm9ianM9CisgICAgaWYgdGVzdCAtbiAiJF9MVF9MSUJPQkpTIjsgdGhlbgorICAgICAgIyBSZW1vdmUgdGhlIGV4dGVuc2lvbi4KKyAgICAgIF9sdF9zZWRfZHJvcF9vYmpleHQ9J3MvXC5vJC8vO3MvXC5vYmokLy8nCisgICAgICBmb3IgaSBpbiBgZm9yIGkgaW4gJF9MVF9MSUJPQkpTOyBkbyBlY2hvICIkaSI7IGRvbmUgfCBzZWQgIiRfbHRfc2VkX2Ryb3Bfb2JqZXh0IiB8IHNvcnQgLXVgOyBkbworICAgICAgICBfbHRkbF9saWJvYmpzPSIkX2x0ZGxfbGlib2JqcyAkbHRfbGlib2JqX3ByZWZpeCRpLiRhY19vYmpleHQiCisgICAgICAgIF9sdGRsX2x0bGlib2Jqcz0iJF9sdGRsX2x0bGlib2JqcyAkbHRfbGlib2JqX3ByZWZpeCRpLmxvIgorICAgICAgZG9uZQorICAgIGZpCisgICAgQUNfU1VCU1QoW2x0ZGxfTElCT0JKU10sIFskX2x0ZGxfbGlib2Jqc10pCisgICAgQUNfU1VCU1QoW2x0ZGxfTFRMSUJPQkpTXSwgWyRfbHRkbF9sdGxpYm9ianNdKQorXSkKKworIyBPbmx5IGV4cGFuZCBvbmNlOgorbTRfZGVmaW5lKFtMVERMX0lOSVRdKQorXSkjIExURExfSU5JVAorCisjIE9sZCBuYW1lczoKK0FVX0RFRlVOKFtBQ19MSUJfTFRETF0sIFtMVERMX0lOSVQoJEApXSkKK0FVX0RFRlVOKFtBQ19XSVRIX0xURExdLCBbTFRETF9JTklUKCRAKV0pCitBVV9ERUZVTihbTFRfV0lUSF9MVERMXSwgW0xURExfSU5JVCgkQCldKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJfTFRETF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBQ19XSVRIX0xURExdLCBbXSkKK2RubCBBQ19ERUZVTihbTFRfV0lUSF9MVERMXSwgW10pCisKKworIyBfTFRETF9TRVRVUAorIyAtLS0tLS0tLS0tLQorIyBQZXJmb3JtIGFsbCB0aGUgY2hlY2tzIG5lY2Vzc2FyeSBmb3IgY29tcGlsYXRpb24gb2YgdGhlIGx0ZGwgb2JqZWN0cworIyAgLS0gaW5jbHVkaW5nIGNvbXBpbGVyIGNoZWNrcyBhbmQgaGVhZGVyIGNoZWNrcy4gIFRoaXMgaXMgYSBwdWJsaWMKKyMgaW50ZXJmYWNlICBtYWlubHkgZm9yIHRoZSBiZW5lZml0IG9mIGxpYmx0ZGwncyBvd24gY29uZmlndXJlLmFjLCBtb3N0CisjIG90aGVyIHVzZXJzIHNob3VsZCBjYWxsIExURExfSU5JVCBpbnN0ZWFkLgorQUNfREVGVU4oW19MVERMX1NFVFVQXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19NT0RVTEVfRVhUXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19NT0RVTEVfUEFUSF0pZG5sCitBQ19SRVFVSVJFKFtMVF9TWVNfRExTRUFSQ0hfUEFUSF0pZG5sCitBQ19SRVFVSVJFKFtMVF9MSUJfRExMT0FEXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19TWU1CT0xfVVNDT1JFXSlkbmwKK0FDX1JFUVVJUkUoW0xUX0ZVTkNfRExTWU1fVVNDT1JFXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19ETE9QRU5fREVQTElCU10pZG5sCitBQ19SRVFVSVJFKFtnbF9GVU5DX0FSR1pdKWRubAorCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfT0JKRElSXSlkbmwKK200X3JlcXVpcmUoW19MVF9IRUFERVJfRExGQ05dKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX0RMUFJFT1BFTl0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorCitkbmwgRG9uJ3QgcmVxdWlyZSB0aGlzLCBvciBpdCB3aWxsIGJlIGV4cGFuZGVkIGVhcmxpZXIgdGhhbiB0aGUgY29kZQorZG5sIHRoYXQgc2V0cyB0aGUgdmFyaWFibGVzIGl0IHJlbGllcyBvbjoKK19MVF9FTkFCTEVfSU5TVEFMTAorCitkbmwgX0xURExfTU9ERSBzcGVjaWZpYyBjb2RlIG11c3QgYmUgY2FsbGVkIGF0IGxlYXN0IG9uY2U6CitfTFRETF9NT0RFX0RJU1BBVENICisKKyMgSW4gb3JkZXIgdGhhdCBsdGRsLmMgY2FuIGNvbXBpbGUsIGZpbmQgb3V0IHRoZSBmaXJzdCBBQ19DT05GSUdfSEVBREVSUworIyB0aGUgdXNlciB1c2VkLiAgVGhpcyBpcyBzbyB0aGF0IGx0ZGwuaCBjYW4gcGljayB1cCB0aGUgcGFyZW50IHByb2plY3RzCisjIGNvbmZpZy5oIGZpbGUsIFRoZSBmaXJzdCBmaWxlIGluIEFDX0NPTkZJR19IRUFERVJTIG11c3QgY29udGFpbiB0aGUKKyMgZGVmaW5pdGlvbnMgcmVxdWlyZWQgYnkgbHRkbC5jLgorIyBGSVhNRTogUmVtb3ZlIHVzZSBvZiB1bmRvY3VtZW50ZWQgQUNfTElTVF9IRUFERVJTICgyLjU5IGNvbXBhdGliaWxpdHkpLgorQUNfQ09ORklHX0NPTU1BTkRTX1BSRShbZG5sCittNF9wYXR0ZXJuX2FsbG93KFteTFRfQ09ORklHX0gkXSlkbmwKK200X2lmc2V0KFtBSF9IRUFERVJdLAorICAgIFtMVF9DT05GSUdfSD1BSF9IRUFERVJdLAorICAgIFttNF9pZnNldChbQUNfTElTVF9IRUFERVJTXSwKKwkgICAgW0xUX0NPTkZJR19IPWBlY2hvICJBQ19MSVNUX0hFQURFUlMiIHwgJFNFRCAncyxeW1sgICAgICBdXSosLDtzLFtbIDpdXS4qJCwsJ2BdLAorCVtdKV0pXSkKK0FDX1NVQlNUKFtMVF9DT05GSUdfSF0pCisKK0FDX0NIRUNLX0hFQURFUlMoW3VuaXN0ZC5oIGRsLmggc3lzL2RsLmggZGxkLmggbWFjaC1vL2R5bGQuaCBkaXJlbnQuaF0sCisJW10sIFtdLCBbQUNfSU5DTFVERVNfREVGQVVMVF0pCisKK0FDX0NIRUNLX0ZVTkNTKFtjbG9zZWRpciBvcGVuZGlyIHJlYWRkaXJdLCBbXSwgW0FDX0xJQk9CSihbbHRfX2RpcmVudF0pXSkKK0FDX0NIRUNLX0ZVTkNTKFtzdHJsY2F0IHN0cmxjcHldLCBbXSwgW0FDX0xJQk9CSihbbHRfX3N0cmxdKV0pCisKK200X3BhdHRlcm5fYWxsb3coW0xUX0xJQkVYVF0pZG5sCitBQ19ERUZJTkVfVU5RVU9URUQoW0xUX0xJQkVYVF0sWyIkbGliZXh0Il0sW1RoZSBhcmNoaXZlIGV4dGVuc2lvbl0pCisKK25hbWU9CitldmFsICJsdF9saWJwcmVmaXg9XCIkbGlibmFtZV9zcGVjXCIiCittNF9wYXR0ZXJuX2FsbG93KFtMVF9MSUJQUkVGSVhdKWRubAorQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9MSUJQUkVGSVhdLFsiJGx0X2xpYnByZWZpeCJdLFtUaGUgYXJjaGl2ZSBwcmVmaXhdKQorCituYW1lPWx0ZGwKK2V2YWwgIkxURExPUEVOPVwiJGxpYm5hbWVfc3BlY1wiIgorQUNfU1VCU1QoW0xURExPUEVOXSkKK10pIyBfTFRETF9TRVRVUAorCisKKyMgX0xUX0VOQUJMRV9JTlNUQUxMCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0lOU1RBTExdLAorW0FDX0FSR19FTkFCTEUoW2x0ZGwtaW5zdGFsbF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1sdGRsLWluc3RhbGxdLCBbaW5zdGFsbCBsaWJsdGRsXSldKQorCitjYXNlICwke2VuYWJsZV9sdGRsX2luc3RhbGx9LCR7ZW5hYmxlX2x0ZGxfY29udmVuaWVuY2V9IGluCisgICp5ZXMqKSA7OworICAqKSBlbmFibGVfbHRkbF9jb252ZW5pZW5jZT15ZXMgOzsKK2VzYWMKKworbTRfaWZkZWYoW0FNX0NPTkRJVElPTkFMXSwKK1tBTV9DT05ESVRJT05BTChJTlNUQUxMX0xUREwsIHRlc3QgeCIke2VuYWJsZV9sdGRsX2luc3RhbGwtbm99IiAhPSB4bm8pCisgQU1fQ09ORElUSU9OQUwoQ09OVkVOSUVOQ0VfTFRETCwgdGVzdCB4IiR7ZW5hYmxlX2x0ZGxfY29udmVuaWVuY2Utbm99IiAhPSB4bm8pXSkKK10pIyBfTFRfRU5BQkxFX0lOU1RBTEwKKworCisjIExUX1NZU19ETE9QRU5fREVQTElCUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9TWVNfRExPUEVOX0RFUExJQlNdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGRlcGxpYnMgYXJlIGxvYWRlZCBieSBkbG9wZW5dLAorICBbbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzXSwKKyAgWyMgUE9SVE1FIGRvZXMgeW91ciBzeXN0ZW0gYXV0b21hdGljYWxseSBsb2FkIGRlcGxpYnMgZm9yIGRsb3Blbj8KKyAgIyBvciBpdHMgbG9naWNhbCBlcXVpdmFsZW50IChlLmcuIHNobF9sb2FkIGZvciBIUC1VWCA8IDExKQorICAjIEZvciBub3csIHdlIGp1c3QgY2F0Y2ggT1NlcyB3ZSBrbm93IHNvbWV0aGluZyBhYm91dCAtLSBpbiB0aGUKKyAgIyBmdXR1cmUsIHdlJ2xsIHRyeSB0ZXN0IHRoaXMgcHJvZ3JhbW1hdGljYWxseS4KKyAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXVua25vd24KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBhaXgzKnxhaXg0LjEuKnxhaXg0LjIuKikKKyAgICAjIFVua25vd24gd2hldGhlciB0aGlzIGlzIHRydWUgZm9yIHRoZXNlIHZlcnNpb25zIG9mIEFJWCwgYnV0CisgICAgIyB3ZSB3YW50IHRoaXMgYGNhc2UnIGhlcmUgdG8gZXhwbGljaXRseSBjYXRjaCB0aG9zZSB2ZXJzaW9ucy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICAgIDs7CisgIGFpeFtbNC05XV0qKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBhbWlnYW9zKikKKyAgICBjYXNlICRob3N0X2NwdSBpbgorICAgIHBvd2VycGMpCisgICAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9bm8KKyAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGRhcndpbiopCisgICAgIyBBc3N1bWluZyB0aGUgdXNlciBoYXMgaW5zdGFsbGVkIGEgbGliZGwgZnJvbSBzb21ld2hlcmUsIHRoaXMgaXMgdHJ1ZQorICAgICMgSWYgeW91IGFyZSBsb29raW5nIGZvciBvbmUgaHR0cDovL3d3dy5vcGVuZGFyd2luLm9yZy9wcm9qZWN0cy9kbGNvbXBhdAorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGdudSogfCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgIyBHTlUgYW5kIGl0cyB2YXJpYW50cywgdXNpbmcgZ251IGxkLnNvIChHbGliYykKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgaHB1eDEwKnxocHV4MTEqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBpbnRlcml4KikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgaXJpeFtbMTIzNDVdXSp8aXJpeDYuW1swMV1dKikKKyAgICAjIENhdGNoIGFsbCB2ZXJzaW9ucyBvZiBJUklYIGJlZm9yZSA2LjIsIGFuZCBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0CisgICAgIyBrbm93IGhvdyBpdCB3b3JrZWQgZm9yIGFueSBvZiB0aG9zZSB2ZXJzaW9ucy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICAgIDs7CisgIGlyaXgqKQorICAgICMgVGhlIGNhc2UgYWJvdmUgY2F0Y2hlcyBhbnl0aGluZyBiZWZvcmUgNi4yLCBhbmQgaXQncyBrbm93biB0aGF0CisgICAgIyBhdCA2LjIgYW5kIGxhdGVyIGRsb3BlbiBkb2VzIGxvYWQgZGVwbGlicy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBvcGVuYnNkKikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgb3NmW1sxMjM0XV0qKQorICAgICMgZGxvcGVuIGRpZCBsb2FkIGRlcGxpYnMgKGF0IGxlYXN0IGF0IDQueCksIGJ1dCB1bnRpbCB0aGUgNS54IHNlcmllcywKKyAgICAjIGl0IGRpZCAqbm90KiB1c2UgYW4gUlBBVEggaW4gYSBzaGFyZWQgbGlicmFyeSB0byBmaW5kIG9iamVjdHMgdGhlCisgICAgIyBsaWJyYXJ5IGRlcGVuZHMgb24sIHNvIHdlIGV4cGxpY2l0bHkgc2F5IGBubycuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPW5vCisgICAgOzsKKyAgb3NmNS4wfG9zZjUuMGF8b3NmNS4xKQorICAgICMgZGxvcGVuICpkb2VzKiBsb2FkIGRlcGxpYnMgYW5kIHdpdGggdGhlIHJpZ2h0IGxvYWRlciBwYXRjaCBhcHBsaWVkCisgICAgIyBpdCBldmVuIHVzZXMgUlBBVEggaW4gYSBzaGFyZWQgbGlicmFyeSB0byBzZWFyY2ggZm9yIHNoYXJlZCBvYmplY3RzCisgICAgIyB0aGF0IHRoZSBsaWJyYXJ5IGRlcGVuZHMgb24sIGJ1dCB0aGVyZSdzIG5vIGVhc3kgd2F5IHRvIGtub3cgaWYgdGhhdAorICAgICMgcGF0Y2ggaXMgaW5zdGFsbGVkLiAgU2luY2UgdGhpcyBpcyB0aGUgY2FzZSwgYWxsIHdlIGNhbiByZWFsbHkKKyAgICAjIHNheSBpcyB1bmtub3duIC0tIGl0IGRlcGVuZHMgb24gdGhlIHBhdGNoIGJlaW5nIGluc3RhbGxlZC4gIElmCisgICAgIyBpdCBpcywgdGhpcyBjaGFuZ2VzIHRvIGB5ZXMnLiAgV2l0aG91dCBpdCwgaXQgd291bGQgYmUgYG5vJy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICAgIDs7CisgIG9zZiopCisgICAgIyB0aGUgdHdvIGNhc2VzIGFib3ZlIHNob3VsZCBjYXRjaCBhbGwgdmVyc2lvbnMgb2Ygb3NmIDw9IDUuMS4gIFJlYWQKKyAgICAjIHRoZSBjb21tZW50cyBhYm92ZSBmb3Igd2hhdCB3ZSBrbm93IGFib3V0IHRoZW0uCisgICAgIyBBdCA+IDUuMSwgZGVwbGlicyBhcmUgbG9hZGVkICphbmQqIGFueSBSUEFUSCBpbiBhIHNoYXJlZCBsaWJyYXJ5CisgICAgIyBpcyB1c2VkIHRvIGZpbmQgdGhlbSBzbyB3ZSBjYW4gZmluYWxseSBzYXkgYHllcycuCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIHFueCopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIHNvbGFyaXMqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgICBsaWJsdGRsX2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBlc2FjCisgIF0pCitpZiB0ZXN0ICIkbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzIiAhPSB5ZXM7IHRoZW4KKyBBQ19ERUZJTkUoW0xURExfRExPUEVOX0RFUExJQlNdLCBbMV0sCisgICAgW0RlZmluZSBpZiB0aGUgT1MgbmVlZHMgaGVscCB0byBsb2FkIGRlcGVuZGVudCBsaWJyYXJpZXMgZm9yIGRsb3BlbigpLl0pCitmaQorXSkjIExUX1NZU19ETE9QRU5fREVQTElCUworCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTXSwgW0xUX1NZU19ETE9QRU5fREVQTElCU10pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU1lTX0RMT1BFTl9ERVBMSUJTXSwgW10pCisKKworIyBMVF9TWVNfTU9EVUxFX0VYVAorIyAtLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19NT0RVTEVfRVhUXSwKK1ttNF9yZXF1aXJlKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGljaCBleHRlbnNpb24gaXMgdXNlZCBmb3IgcnVudGltZSBsb2FkYWJsZSBtb2R1bGVzXSwKKyAgW2xpYmx0ZGxfY3Zfc2hsaWJleHRdLAorWworbW9kdWxlPXllcworZXZhbCBsaWJsdGRsX2N2X3NobGliZXh0PSRzaHJleHRfY21kcworbW9kdWxlPW5vCitldmFsIGxpYmx0ZGxfY3Zfc2hyZXh0PSRzaHJleHRfY21kcworICBdKQoraWYgdGVzdCAtbiAiJGxpYmx0ZGxfY3Zfc2hsaWJleHQiOyB0aGVuCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX01PRFVMRV9FWFRdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX01PRFVMRV9FWFRdLCBbIiRsaWJsdGRsX2N2X3NobGliZXh0Il0sCisgICAgW0RlZmluZSB0byB0aGUgZXh0ZW5zaW9uIHVzZWQgZm9yIHJ1bnRpbWUgbG9hZGFibGUgbW9kdWxlcywgc2F5LCAiLnNvIi5dKQorZmkKK2lmIHRlc3QgIiRsaWJsdGRsX2N2X3NocmV4dCIgIT0gIiRsaWJsdGRsX2N2X3NobGliZXh0IjsgdGhlbgorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9TSEFSRURfRVhUXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9TSEFSRURfRVhUXSwgWyIkbGlibHRkbF9jdl9zaHJleHQiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBzaGFyZWQgbGlicmFyeSBzdWZmaXgsIHNheSwgIi5keWxpYiIuXSkKK2ZpCitdKSMgTFRfU1lTX01PRFVMRV9FWFQKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NITElCRVhUXSwgW0xUX1NZU19NT0RVTEVfRVhUXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TSExJQkVYVF0sIFtdKQorCisKKyMgTFRfU1lTX01PRFVMRV9QQVRICisjIC0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19NT0RVTEVfUEFUSF0sCitbbTRfcmVxdWlyZShbX0xUX1NZU19EWU5BTUlDX0xJTktFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbd2hpY2ggdmFyaWFibGUgc3BlY2lmaWVzIHJ1bi10aW1lIG1vZHVsZSBzZWFyY2ggcGF0aF0sCisgIFtsdF9jdl9tb2R1bGVfcGF0aF92YXJdLCBbbHRfY3ZfbW9kdWxlX3BhdGhfdmFyPSIkc2hsaWJwYXRoX3ZhciJdKQoraWYgdGVzdCAtbiAiJGx0X2N2X21vZHVsZV9wYXRoX3ZhciI7IHRoZW4KKyAgbTRfcGF0dGVybl9hbGxvdyhbTFRfTU9EVUxFX1BBVEhfVkFSXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9NT0RVTEVfUEFUSF9WQVJdLCBbIiRsdF9jdl9tb2R1bGVfcGF0aF92YXIiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0aGF0IGRldGVybWluZXMgdGhlIHJ1bi10aW1lIG1vZHVsZSBzZWFyY2ggcGF0aC5dKQorZmkKK10pIyBMVF9TWVNfTU9EVUxFX1BBVEgKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NITElCUEFUSF0sIFtMVF9TWVNfTU9EVUxFX1BBVEhdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NITElCUEFUSF0sIFtdKQorCisKKyMgTFRfU1lTX0RMU0VBUkNIX1BBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9TWVNfRExTRUFSQ0hfUEFUSF0sCitbbTRfcmVxdWlyZShbX0xUX1NZU19EWU5BTUlDX0xJTktFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9yIHRoZSBkZWZhdWx0IGxpYnJhcnkgc2VhcmNoIHBhdGhdLAorICBbbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGhdLAorICBbbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGg9IiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyJdKQoraWYgdGVzdCAtbiAiJGx0X2N2X3N5c19kbHNlYXJjaF9wYXRoIjsgdGhlbgorICBzeXNfZGxzZWFyY2hfcGF0aD0KKyAgZm9yIGRpciBpbiAkbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGg7IGRvCisgICAgaWYgdGVzdCAteiAiJHN5c19kbHNlYXJjaF9wYXRoIjsgdGhlbgorICAgICAgc3lzX2Rsc2VhcmNoX3BhdGg9IiRkaXIiCisgICAgZWxzZQorICAgICAgc3lzX2Rsc2VhcmNoX3BhdGg9IiRzeXNfZGxzZWFyY2hfcGF0aCRQQVRIX1NFUEFSQVRPUiRkaXIiCisgICAgZmkKKyAgZG9uZQorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9ETFNFQVJDSF9QQVRIXSlkbmwKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9ETFNFQVJDSF9QQVRIXSwgWyIkc3lzX2Rsc2VhcmNoX3BhdGgiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaWJyYXJ5IHNlYXJjaCBwYXRoLl0pCitmaQorXSkjIExUX1NZU19ETFNFQVJDSF9QQVRICisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TWVNTRUFSQ0hQQVRIXSwgW0xUX1NZU19ETFNFQVJDSF9QQVRIXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TWVNTRUFSQ0hQQVRIXSwgW10pCisKKworIyBfTFRfQ0hFQ0tfRExQUkVPUEVOCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ0hFQ0tfRExQUkVPUEVOXSwKK1ttNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGxpYnRvb2wgc3VwcG9ydHMgLWRsb3Blbi8tZGxwcmVvcGVuXSwKKyAgW2xpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHNdLAorICBbaWYgdGVzdCAtbiAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCisgICAgbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9scz15ZXMKKyAgZWxzZQorICAgIGxpYmx0ZGxfY3ZfcHJlbG9hZGVkX3N5bWJvbHM9bm8KKyAgZmkKKyAgXSkKK2lmIHRlc3QgeCIkbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9scyIgPSB4eWVzOyB0aGVuCisgIEFDX0RFRklORShbSEFWRV9QUkVMT0FERURfU1lNQk9MU10sIFsxXSwKKyAgICBbRGVmaW5lIGlmIGxpYnRvb2wgY2FuIGV4dHJhY3Qgc3ltYm9sIGxpc3RzIGZyb20gb2JqZWN0IGZpbGVzLl0pCitmaQorXSkjIF9MVF9DSEVDS19ETFBSRU9QRU4KKworCisjIExUX0xJQl9ETExPQUQKKyMgLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX0xJQl9ETExPQURdLAorW200X3BhdHRlcm5fYWxsb3coW15MVF9ETExPQURFUlMkXSkKK0xUX0RMTE9BREVSUz0KK0FDX1NVQlNUKFtMVF9ETExPQURFUlNdKQorCitBQ19MQU5HX1BVU0goW0NdKQorCitMSUJBRERfRExPUEVOPQorQUNfU0VBUkNIX0xJQlMoW2Rsb3Blbl0sIFtkbF0sCisJW0FDX0RFRklORShbSEFWRV9MSUJETF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliZGwgbGlicmFyeSBvciBlcXVpdmFsZW50Ll0pCisJaWYgdGVzdCAiJGFjX2N2X3NlYXJjaF9kbG9wZW4iICE9ICJub25lIHJlcXVpcmVkIiA7IHRoZW4KKwkgIExJQkFERF9ETE9QRU49Ii1sZGwiCisJZmkKKwlsaWJsdGRsX2N2X2xpYl9kbF9kbG9wZW49InllcyIKKwlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbG9wZW4ubGEiXSwKKyAgICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpZiBIQVZFX0RMRkNOX0gKKyMgIGluY2x1ZGUgPGRsZmNuLmg+CisjZW5kaWYKKyAgICBdXSwgW1tkbG9wZW4oMCwgMCk7XV0pXSwKKwkgICAgW0FDX0RFRklORShbSEFWRV9MSUJETF0sIFsxXSwKKwkJICAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYmRsIGxpYnJhcnkgb3IgZXF1aXZhbGVudC5dKQorCSAgICBsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuPSJ5ZXMiCisJICAgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsb3Blbi5sYSJdLAorCVtBQ19DSEVDS19MSUIoW3N2bGRdLCBbZGxvcGVuXSwKKwkJW0FDX0RFRklORShbSEFWRV9MSUJETF0sIFsxXSwKKwkJCSBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsaWJkbCBsaWJyYXJ5IG9yIGVxdWl2YWxlbnQuXSkKKwkgICAgICAgIExJQkFERF9ETE9QRU49Ii1sc3ZsZCIgbGlibHRkbF9jdl9mdW5jX2Rsb3Blbj0ieWVzIgorCQlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbG9wZW4ubGEiXSldKV0pCitpZiB0ZXN0IHgiJGxpYmx0ZGxfY3ZfZnVuY19kbG9wZW4iID0geHllcyB8fCB0ZXN0IHgiJGxpYmx0ZGxfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzCit0aGVuCisgIGx0X3NhdmVfTElCUz0iJExJQlMiCisgIExJQlM9IiRMSUJTICRMSUJBRERfRExPUEVOIgorICBBQ19DSEVDS19GVU5DUyhbZGxlcnJvcl0pCisgIExJQlM9IiRsdF9zYXZlX0xJQlMiCitmaQorQUNfU1VCU1QoW0xJQkFERF9ETE9QRU5dKQorCitMSUJBRERfU0hMX0xPQUQ9CitBQ19DSEVDS19GVU5DKFtzaGxfbG9hZF0sCisJW0FDX0RFRklORShbSEFWRV9TSExfTE9BRF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgc2hsX2xvYWQgZnVuY3Rpb24uXSkKKwlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31zaGxfbG9hZC5sYSJdLAorICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtzaGxfbG9hZF0sCisJICAgIFtBQ19ERUZJTkUoW0hBVkVfU0hMX0xPQURdLCBbMV0sCisJCSAgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzaGxfbG9hZCBmdW5jdGlvbi5dKQorCSAgICBMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31zaGxfbG9hZC5sYSIKKwkgICAgTElCQUREX1NITF9MT0FEPSItbGRsZCJdKV0pCitBQ19TVUJTVChbTElCQUREX1NITF9MT0FEXSkKKworY2FzZSAkaG9zdF9vcyBpbgorZGFyd2luW1sxNTY3XV0uKikKKyMgV2Ugb25seSB3YW50IHRoaXMgZm9yIHByZS1NYWMgT1MgWCAxMC40LgorICBBQ19DSEVDS19GVU5DKFtfZHlsZF9mdW5jX2xvb2t1cF0sCisJW0FDX0RFRklORShbSEFWRV9EWUxEXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBfZHlsZF9mdW5jX2xvb2t1cCBmdW5jdGlvbi5dKQorCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWR5bGQubGEiXSkKKyAgOzsKK2Jlb3MqKQorICBMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31sb2FkX2FkZF9vbi5sYSIKKyAgOzsKK2N5Z3dpbiogfCBtaW5ndyogfCBvczIqIHwgcHczMiopCisgIEFDX0NIRUNLX0RFQ0xTKFtjeWd3aW5fY29udl9wYXRoXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxzeXMvY3lnd2luLmg+XV0pCisgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWxvYWRsaWJyYXJ5LmxhIgorICA7OworZXNhYworCitBQ19DSEVDS19MSUIoW2RsZF0sIFtkbGRfbGlua10sCisJW0FDX0RFRklORShbSEFWRV9ETERdLCBbMV0sCisJCSAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIEdOVSBkbGQgbGlicmFyeS5dKQorCQlMVF9ETExPQURFUlM9IiRMVF9ETExPQURFUlMgJHtsdF9kbG9wZW5fZGlyKyRsdF9kbG9wZW5fZGlyL31kbGRfbGluay5sYSJdKQorQUNfU1VCU1QoW0xJQkFERF9ETERfTElOS10pCisKK200X3BhdHRlcm5fYWxsb3coW15MVF9ETFBSRU9QRU4kXSkKK0xUX0RMUFJFT1BFTj0KK2lmIHRlc3QgLW4gIiRMVF9ETExPQURFUlMiCit0aGVuCisgIGZvciBsdF9sb2FkZXIgaW4gJExUX0RMTE9BREVSUzsgZG8KKyAgICBMVF9ETFBSRU9QRU49IiRMVF9ETFBSRU9QRU4tZGxwcmVvcGVuICRsdF9sb2FkZXIgIgorICBkb25lCisgIEFDX0RFRklORShbSEFWRV9MSUJETExPQURFUl0sIFsxXSwKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgbGliZGxsb2FkZXIgd2lsbCBiZSBidWlsdCBvbiB0aGlzIHBsYXRmb3JtXSkKK2ZpCitBQ19TVUJTVChbTFRfRExQUkVPUEVOXSkKKworZG5sIFRoaXMgaXNuJ3QgdXNlZCBhbnltb3JlLCBidXQgc2V0IGl0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQorTElCQUREX0RMPSIkTElCQUREX0RMT1BFTiAkTElCQUREX1NITF9MT0FEIgorQUNfU1VCU1QoW0xJQkFERF9ETF0pCisKK0FDX0xBTkdfUE9QCitdKSMgTFRfTElCX0RMTE9BRAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfRExMSUJdLCBbTFRfTElCX0RMTE9BRF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfRExMSUJdLCBbXSkKKworCisjIExUX1NZU19TWU1CT0xfVVNDT1JFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGRvZXMgdGhlIGNvbXBpbGVyIHByZWZpeCBnbG9iYWwgc3ltYm9scyB3aXRoIGFuIHVuZGVyc2NvcmU/CitBQ19ERUZVTihbTFRfU1lTX1NZTUJPTF9VU0NPUkVdLAorW200X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfIHByZWZpeCBpbiBjb21waWxlZCBzeW1ib2xzXSwKKyAgW2x0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZV0sCisgIFtsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9bm8KKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3ZvaWQgbm1fdGVzdF9mdW5jKCl7fQoraW50IG1haW4oKXtubV90ZXN0X2Z1bmM7cmV0dXJuIDA7fQorX0xUX0VPRgorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgorICAgIGFjX25saXN0PWNvbmZ0ZXN0Lm5tCisgICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkYWNfbmxpc3QpICYmIHRlc3QgLXMgIiRhY19ubGlzdCI7IHRoZW4KKyAgICAgICMgU2VlIHdoZXRoZXIgdGhlIHN5bWJvbHMgaGF2ZSBhIGxlYWRpbmcgdW5kZXJzY29yZS4KKyAgICAgIGlmIGdyZXAgJ14uIF9ubV90ZXN0X2Z1bmMnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlPXllcworICAgICAgZWxzZQorICAgICAgICBpZiBncmVwICdeLiBubV90ZXN0X2Z1bmMgJyAiJGFjX25saXN0IiA+L2Rldi9udWxsOyB0aGVuCisJICA6CisgICAgICAgIGVsc2UKKwkgIGVjaG8gImNvbmZpZ3VyZTogY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRhY19ubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgICBmaQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBlY2hvICJjb25maWd1cmU6IGNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgY2F0IGNvbmZ0ZXN0LmMgPiZBU19NRVNTQUdFX0xPR19GRAorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIF0pCisgIHN5c19zeW1ib2xfdW5kZXJzY29yZT0kbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlCisgIEFDX1NVQlNUKFtzeXNfc3ltYm9sX3VuZGVyc2NvcmVdKQorXSkjIExUX1NZU19TWU1CT0xfVVNDT1JFCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TWU1CT0xfVVNDT1JFXSwgW0xUX1NZU19TWU1CT0xfVVNDT1JFXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TWU1CT0xfVVNDT1JFXSwgW10pCisKKworIyBMVF9GVU5DX0RMU1lNX1VTQ09SRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX0ZVTkNfRExTWU1fVVNDT1JFXSwKK1tBQ19SRVFVSVJFKFtMVF9TWVNfU1lNQk9MX1VTQ09SRV0pZG5sCitpZiB0ZXN0IHgiJGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZSIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgeCIkbGlibHRkbF9jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzIHx8CisgICAgIHRlc3QgeCIkbGlibHRkbF9jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXMgOyB0aGVuCisJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgd2UgaGF2ZSB0byBhZGQgYW4gdW5kZXJzY29yZSBmb3IgZGxzeW1dLAorCSAgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmVdLAorCSAgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9dW5rbm93bgorICAgICAgICAgIHNhdmVfTElCUz0iJExJQlMiCisgICAgICAgICAgTElCUz0iJExJQlMgJExJQkFERF9ETE9QRU4iCisJICBfTFRfVFJZX0RMT1BFTl9TRUxGKAorCSAgICBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT1ub10sIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlPXllc10sCisJICAgIFtdLAkJCQkgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9Y3Jvc3NdKQorCSAgTElCUz0iJHNhdmVfTElCUyIKKwldKQorICBmaQorZmkKKworaWYgdGVzdCB4IiRsaWJsdGRsX2N2X25lZWRfdXNjb3JlIiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKFtORUVEX1VTQ09SRV0sIFsxXSwKKyAgICBbRGVmaW5lIGlmIGRsc3ltKCkgcmVxdWlyZXMgYSBsZWFkaW5nIHVuZGVyc2NvcmUgaW4gc3ltYm9sIG5hbWVzLl0pCitmaQorXSkjIExUX0ZVTkNfRExTWU1fVVNDT1JFCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9ETFNZTV9VU0NPUkVdLCBbTFRfRlVOQ19ETFNZTV9VU0NPUkVdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX0RMU1lNX1VTQ09SRV0sIFtdKQorCisjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fQVVUT01BS0VfVkVSU0lPTihWRVJTSU9OKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUgYWNsb2NhbC5tNCBoYXMgYmVlbgpAQCAtMzQsNyArODU2LDcgQEAKIFthbV9fYXBpX3ZlcnNpb249JzEuMTEnCiBkbmwgU29tZSB1c2VycyBmaW5kIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIG1pc3Rha2UgaXQgZm9yIGEgd2F5IHRvCiBkbmwgcmVxdWlyZSBzb21lIG1pbmltdW0gdmVyc2lvbi4gIFBvaW50IHRoZW0gdG8gdGhlIHJpZ2h0IG1hY3JvLgotbTRfaWYoWyQxXSwgWzEuMTEuMV0sIFtdLAorbTRfaWYoWyQxXSwgWzEuMTEuM10sIFtdLAogICAgICAgW0FDX0ZBVEFMKFtEbyBub3QgY2FsbCAkMCwgdXNlIEFNX0lOSVRfQVVUT01BS0UoWyQxXSkuXSldKWRubAogXSkKIApAQCAtNTAsNyArODcyLDcgQEAKICMgQ2FsbCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBBTV9BVVRPTUFLRV9WRVJTSU9OIHNvIHRoZXkgY2FuIGJlIHRyYWNlZC4KICMgVGhpcyBmdW5jdGlvbiBpcyBBQ19SRVFVSVJFZCBieSBBTV9JTklUX0FVVE9NQUtFLgogQUNfREVGVU4oW0FNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT05dLAotW0FNX0FVVE9NQUtFX1ZFUlNJT04oWzEuMTEuMV0pZG5sCitbQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xMS4zXSlkbmwKIG00X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCiAgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKIF9BTV9BVVRPQ09ORl9WRVJTSU9OKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSldKQpAQCAtNzksMTIgKzkwMSwxNCBAQAogCiAjIEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBGb3IgcHJvamVjdHMgdXNpbmcgQUNfQ09ORklHX0FVWF9ESVIoW2Zvb10pLCBBdXRvY29uZiBzZXRzCiAjICRhY19hdXhfZGlyIHRvIGAkc3JjZGlyL2ZvbycuICBJbiBvdGhlciBwcm9qZWN0cywgaXQgaXMgc2V0IHRvCiAjIGAkc3JjZGlyJywgYCRzcmNkaXIvLi4nLCBvciBgJHNyY2Rpci8uLi8uLicuCkBAIC0xNjYsMTQgKzk5MCwxNCBAQAogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuXV0pCiBmaV0pXSkKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDkKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwKKyMgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCAxMAorIyBzZXJpYWwgMTIKIAogIyBUaGVyZSBhcmUgYSBmZXcgZGlydHkgaGFja3MgYmVsb3cgdG8gYXZvaWQgbGV0dGluZyBgQUNfUFJPR19DQycgYmUKICMgd3JpdHRlbiBpbiBjbGVhciwgaW4gd2hpY2ggY2FzZSBhdXRvbWFrZSwgd2hlbiByZWFkaW5nIGFjbG9jYWwubTQsCkBAIC0yMTMsNiArMTAzNyw3IEBACiAgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKICAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgogICBta2RpciBjb25mdGVzdC5kaXIKICAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKICAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KQEAgLTI3Nyw3ICsxMTAyLDcgQEAKIAlicmVhawogICAgICAgZmkKICAgICAgIDs7Ci0gICAgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKKyAgICBtc3ZjNyB8IG1zdmM3bXN5cyB8IG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCiAgICAgICAjIFRoaXMgY29tcGlsZXIgd29uJ3QgZ3JvayBgLWMgLW8nLCBidXQgYWxzbywgdGhlIG1pbnVzbyB0ZXN0IGhhcwogICAgICAgIyBub3QgcnVuIHlldC4gIFRoZXNlIGRlcG1vZGVzIGFyZSBsYXRlIGVub3VnaCBpbiB0aGUgZ2FtZSwgYW5kCiAgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLgpAQCAtMzQyLDEwICsxMTY3LDEzIEBACiBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKICAgQU1ERVBCQUNLU0xBU0g9J1wnCisgIGFtX19ub2RlcD0nX25vJwogZmkKIEFNX0NPTkRJVElPTkFMKFtBTURFUF0sIFt0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm9dKQogQUNfU1VCU1QoW0FNREVQQkFDS1NMQVNIXSlkbmwKIF9BTV9TVUJTVF9OT1RNQUtFKFtBTURFUEJBQ0tTTEFTSF0pZG5sCitBQ19TVUJTVChbYW1fX25vZGVwXSlkbmwKK19BTV9TVUJTVF9OT1RNQUtFKFthbV9fbm9kZXBdKWRubAogXSkKIAogIyBHZW5lcmF0ZSBjb2RlIHRvIHNldCB1cCBkZXBlbmRlbmN5IHRyYWNraW5nLiAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQpAQCAtNTY3LDEyICsxMzk1LDE1IEBACiBkb25lCiBlY2hvICJ0aW1lc3RhbXAgZm9yICRfYW1fYXJnIiA+YEFTX0RJUk5BTUUoWyIkX2FtX2FyZyJdKWAvc3RhbXAtaFtdJF9hbV9zdGFtcF9jb3VudF0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9QUk9HX0lOU1RBTExfU0gKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiAjIERlZmluZSAkaW5zdGFsbF9zaC4KQEAgLTYxMiw4ICsxNDQzLDggQEAKICMgQWRkIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSBvcHRpb24gdG8gY29uZmlndXJlLiAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KICMgRnJvbSBKaW0gTWV5ZXJpbmcKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTgsIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgKLSMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOCwKKyMgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKQEAgLTYzMyw3ICsxNDY0LDcgQEAKICAgICAgICBbZGlzYWJsZV0sIFttNF9kZWZpbmUoW2FtX21haW50YWluZXJfb3RoZXJdLCBbZW5hYmxlXSldLAogICAgICAgIFttNF9kZWZpbmUoW2FtX21haW50YWluZXJfb3RoZXJdLCBbZW5hYmxlXSkKICAgICAgICAgbTRfd2Fybihbc3ludGF4XSwgW3VuZXhwZWN0ZWQgYXJndW1lbnQgdG8gQU1AJnRAX01BSU5UQUlORVJfTU9ERTogJDFdKV0pCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYW1fbWFpbnRhaW5lcl9vdGhlciBtYWludGFpbmVyLXNwZWNpZmljIHBvcnRpb25zIG9mIE1ha2VmaWxlc10pCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkKICAgZG5sIG1haW50YWluZXItbW9kZSdzIGRlZmF1bHQgaXMgJ2Rpc2FibGUnIHVubGVzcyAnZW5hYmxlJyBpcyBwYXNzZWQKICAgQUNfQVJHX0VOQUJMRShbbWFpbnRhaW5lci1tb2RlXSwKIFsgIC0tXVthbV9tYWludGFpbmVyX290aGVyXVstbWFpbnRhaW5lci1tb2RlICBhbV9tYWludGFpbmVyX290aGVyIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNlZnVsCkBAIC03NzksMTIgKzE2MTAsMTUgQEAKIGZpCiBdKQogCi0jIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fUFJPR19NS0RJUl9QCiAjIC0tLS0tLS0tLS0tLS0tLQogIyBDaGVjayBmb3IgYG1rZGlyIC1wJy4KQEAgLTgwNywxMyArMTY0MSwxNCBAQAogCiAjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA1LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDQKKyMgc2VyaWFsIDUKIAogIyBfQU1fTUFOR0xFX09QVElPTihOQU1FKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODIxLDEzICsxNjU2LDEzIEBACiBbW19BTV9PUFRJT05fXW00X2JwYXRzdWJzdCgkMSwgW1teYS16QS1aMC05X11dLCBbX10pXSkKIAogIyBfQU1fU0VUX09QVElPTihOQU1FKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgU2V0IG9wdGlvbiBOQU1FLiAgUHJlc2VudGx5IHRoYXQgb25seSBtZWFucyBkZWZpbmluZyBhIGZsYWcgZm9yIHRoaXMgb3B0aW9uLgogQUNfREVGVU4oW19BTV9TRVRfT1BUSU9OXSwKIFttNF9kZWZpbmUoX0FNX01BTkdMRV9PUFRJT04oWyQxXSksIDEpXSkKIAogIyBfQU1fU0VUX09QVElPTlMoT1BUSU9OUykKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT1BUSU9OUyBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMuCiBBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05TXSwKIFttNF9mb3JlYWNoX3coW19BTV9PcHRpb25dLCBbJDFdLCBbX0FNX1NFVF9PUFRJT04oX0FNX09wdGlvbildKV0pCkBAIC05MDMsMTIgKzE3MzgsMTQgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKHllcyldKQogCi0jIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCisjIHNlcmlhbCAxCisKICMgQU1fUFJPR19JTlNUQUxMX1NUUklQCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QKQEAgLTkzMSwxMyArMTc2OCwxMyBAQAogSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSJcJChpbnN0YWxsX3NoKSAtYyAtcyIKIEFDX1NVQlNUKFtJTlNUQUxMX1NUUklQX1BST0dSQU1dKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA4LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDIKKyMgc2VyaWFsIDMKIAogIyBfQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05NDYsMTMgKzE3ODMsMTMgQEAKIEFDX0RFRlVOKFtfQU1fU1VCU1RfTk9UTUFLRV0pCiAKICMgQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFB1YmxpYyBzaXN0ZXIgb2YgX0FNX1NVQlNUX05PVE1BS0UuCiBBQ19ERUZVTihbQU1fU1VCU1RfTk9UTUFLRV0sIFtfQU1fU1VCU1RfTk9UTUFLRSgkQCldKQogCiAjIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAKLSMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LApAQCAtOTc0LDEwICsxODExLDExIEBACiAjIGEgdGFyYmFsbCByZWFkIGZyb20gc3RkaW4uCiAjICAgICAkKGFtX191bnRhcikgPCByZXN1bHQudGFyCiBBQ19ERUZVTihbX0FNX1BST0dfVEFSXSwKLVsjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi1BTV9NSVNTSU5HX1BST0coW0FNVEFSXSwgW3Rhcl0pCitbIyBBbHdheXMgZGVmaW5lIEFNVEFSIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAgWWVzLCBpdCdzIHN0aWxsIHVzZWQKKyMgaW4gdGhlIHdpbGQgOi0oICBXZSBzaG91bGQgZmluZCBhIHByb3BlciB3YXkgdG8gZGVwcmVjYXRlIGl0IC4uLgorQUNfU1VCU1QoW0FNVEFSXSwgWyckJHtUQVItdGFyfSddKQogbTRfaWYoWyQxXSwgW3Y3XSwKLSAgICAgW2FtX190YXI9JyR7QU1UQVJ9IGNob2YgLSAiJCR0YXJkaXIiJzsgYW1fX3VudGFyPScke0FNVEFSfSB4ZiAtJ10sCisgICAgIFthbV9fdGFyPSckJHtUQVItdGFyfSBjaG9mIC0gIiQkdGFyZGlyIicgYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJ10sCiAgICAgIFttNF9jYXNlKFskMV0sIFt1c3Rhcl0sLCBbcGF4XSwsCiAgICAgICAgICAgICAgIFttNF9mYXRhbChbVW5rbm93biB0YXIgZm9ybWF0XSldKQogQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY3JlYXRlIGEgJDEgdGFyIGFyY2hpdmVdKQpAQCAtMTA0Niw2ICsxODg0LDE2IEBACiBBQ19TVUJTVChbYW1fX3VudGFyXSkKIF0pICMgX0FNX1BST0dfVEFSCiAKK200X2luY2x1ZGUoW200L2FzbWNmaS5tNF0pCittNF9pbmNsdWRlKFttNC9heF9hcHBlbmRfZmxhZy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jY19tYXhvcHQubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jb21waWxlcl92ZW5kb3IubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY29uZmlndXJlX2FyZ3MubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00XSkKK200X2luY2x1ZGUoW200L2F4X2djY19hcmNoZmxhZy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9nY2NfeDg2X2NwdWlkLm00XSkKIG00X2luY2x1ZGUoW200L2xpYnRvb2wubTRdKQogbTRfaW5jbHVkZShbbTQvbHRvcHRpb25zLm00XSkKIG00X2luY2x1ZGUoW200L2x0c3VnYXIubTRdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlCmluZGV4IDFiMWQyMzIuLmMwMDk2YTcgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29tcGlsZQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUKQEAgLTEsOSArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBXcmFwcGVyIGZvciBjb21waWxlcnMgd2hpY2ggZG8gbm90IHVuZGVyc3RhbmQgYC1jIC1vJy4KIAotc2NyaXB0dmVyc2lvbj0yMDA1LTA1LTE0LjIyCitzY3JpcHR2ZXJzaW9uPTIwMDktMTAtMDYuMjA7ICMgVVRDCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDkgIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBXcml0dGVuIGJ5IFRvbSBUcm9tZXkgPHRyb21leUBjeWdudXMuY29tPi4KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTE3LDggKzE4LDcgQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCkBAIC0xMDMsMTMgKzEwMywxMyBAQAogZmkKIAogIyBOYW1lIG9mIGZpbGUgd2UgZXhwZWN0IGNvbXBpbGVyIHRvIGNyZWF0ZS4KLWNvZmlsZT1gZWNobyAiJGNmaWxlIiB8IHNlZCAtZSAnc3xeLiovfHwnIC1lICdzL1wuYyQvLm8vJ2AKK2NvZmlsZT1gZWNobyAiJGNmaWxlIiB8IHNlZCAnc3xeLipbXFwvXXx8OyBzfF5bYS16QS1aXTp8fDsgcy9cLmMkLy5vLydgCiAKICMgQ3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeS4KLSMgTm90ZTogdXNlIGBbLy4tXScgaGVyZSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlIHNhbWUgbmFtZQorIyBOb3RlOiB1c2UgYFsvXFw6Li1dJyBoZXJlIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgc2FtZSBuYW1lCiAjIHRoYXQgd2UgYXJlIHVzaW5nIGZvciB0aGUgLm8gZmlsZS4gIEFsc28sIGJhc2UgdGhlIG5hbWUgb24gdGhlIGV4cGVjdGVkCiAjIG9iamVjdCBmaWxlIG5hbWUsIHNpbmNlIHRoYXQgaXMgd2hhdCBtYXR0ZXJzIHdpdGggYSBwYXJhbGxlbCBidWlsZC4KLWxvY2tkaXI9YGVjaG8gIiRjb2ZpbGUiIHwgc2VkIC1lICdzfFsvLi1dfF98ZydgLmQKK2xvY2tkaXI9YGVjaG8gIiRjb2ZpbGUiIHwgc2VkIC1lICdzfFsvXFw6Li1dfF98ZydgLmQKIHdoaWxlIHRydWU7IGRvCiAgIGlmIG1rZGlyICIkbG9ja2RpciIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgYnJlYWsKQEAgLTEyNCw5ICsxMjQsOSBAQAogcmV0PSQ/CiAKIGlmIHRlc3QgLWYgIiRjb2ZpbGUiOyB0aGVuCi0gIG12ICIkY29maWxlIiAiJG9maWxlIgorICB0ZXN0ICIkY29maWxlIiA9ICIkb2ZpbGUiIHx8IG12ICIkY29maWxlIiAiJG9maWxlIgogZWxpZiB0ZXN0IC1mICIke2NvZmlsZX1iaiI7IHRoZW4KLSAgbXYgIiR7Y29maWxlfWJqIiAiJG9maWxlIgorICB0ZXN0ICIke2NvZmlsZX1iaiIgPSAiJG9maWxlIiB8fCBtdiAiJHtjb2ZpbGV9YmoiICIkb2ZpbGUiCiBmaQogCiBybWRpciAiJGxvY2tkaXIiCkBAIC0xMzgsNSArMTM4LDYgQEAKICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQogIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCiAjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgotIyB0aW1lLXN0YW1wLWVuZDogIiQiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCiAjIEVuZDoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLmd1ZXNzIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MKaW5kZXggZDUzZTMwOS4uYjAyNTY1YyAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KICMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDA5LTExLTE5JwordGltZXN0YW1wPScyMDExLTA2LTAzJwogCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CiAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC01Niw4ICs1Niw5IEBACiBHTlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQogCiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuCi1Db3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCi0yMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCkBAIC0xODAsNyArMTgxLDcgQEAKIAkJZmkKIAkJOzsKIAkgICAgKikKLQkgICAgICAgIG9zPW5ldGJzZAorCQlvcz1uZXRic2QKIAkJOzsKIAllc2FjCiAJIyBUaGUgT1MgcmVsZWFzZQpAQCAtMjIzLDcgKzIyNCw3IEBACiAJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQzfSdgCiAJCTs7CiAJKjUuKikKLQkgICAgICAgIFVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQ0fSdgCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQ0fSdgCiAJCTs7CiAJZXNhYwogCSMgQWNjb3JkaW5nIHRvIENvbXBhcSwgL3Vzci9zYmluL3BzcmluZm8gaGFzIGJlZW4gYXZhaWxhYmxlIG9uCkBAIC0yNjksNyArMjcwLDEwIEBACiAJIyBBIFhuLm4gdmVyc2lvbiBpcyBhbiB1bnJlbGVhc2VkIGV4cGVyaW1lbnRhbCBiYXNlbGV2ZWwuCiAJIyAxLjIgdXNlcyAiMS4yIiBmb3IgdW5hbWUgLXIuCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCi0JZXhpdCA7OworCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KKwlleGl0Y29kZT0kPworCXRyYXAgJycgMAorCWV4aXQgJGV4aXRjb2RlIDs7CiAgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKIAkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CiAJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCkBAIC0yOTUsNyArMjk5LDcgQEAKIAllY2hvIHMzOTAtaWJtLXp2bW9lCiAJZXhpdCA7OwogICAgICo6T1M0MDA6KjoqKQotICAgICAgICBlY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZWNobyBwb3dlcnBjLWlibS1vczQwMAogCWV4aXQgOzsKICAgICBhcm06UklTQyo6MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCiAJZWNobyBhcm0tYWNvcm4tcmlzY2l4JHtVTkFNRV9SRUxFQVNFfQpAQCAtMzMzLDYgKzMzNyw5IEBACiAgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKIAllY2hvIHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAogCWV4aXQgOzsKKyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hvIGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQogCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAlTVU5fQVJDSD0iaTM4NiIKQEAgLTM5MSwyMyArMzk4LDIzIEBACiAgICAgIyBNaU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hvdWxkCiAgICAgIyBiZSBubyBwcm9ibGVtLgogICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRhcmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgYXRhcmkqOipNaU5UOio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQogCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgbWlsYW4qOipNaU5UOio6KiB8IG1pbGFuKjoqbWludDoqOiogfCAqbWlsYW4qOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KLSAgICAgICAgZXhpdCA7OworCWVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBoYWRlcyo6Kk1pTlQ6KjoqIHwgaGFkZXMqOiptaW50Oio6KiB8ICpoYWRlcyo6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQotICAgICAgICBlY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgbTY4azptYWNodGVuOio6KikKIAllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC00NzcsOCArNDg0LDggQEAKIAllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKIAlleGl0IDs7CiAgICAgQVZpaU9OOmRndXg6KjoqKQotICAgICAgICAjIERHL1VYIHJldHVybnMgQVZpaU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcwotICAgICAgICBVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorCSMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKIAlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCiAJdGhlbgogCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKQEAgLTQ5MSw3ICs0OTgsNyBAQAogCWVsc2UKIAkgICAgZWNobyBpNTg2LWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CiAJZmkKLSAJZXhpdCA7OworCWV4aXQgOzsKICAgICBNODgqOkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQogCWVjaG8gbTg4ay1kb2xwaGluLXN5c3YzCiAJZXhpdCA7OwpAQCAtNTQ4LDcgKzU1NSw3IEBACiAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKIAlmaQogCWV4aXQgOzsKLSAgICAqOkFJWDoqOls0NTZdKQorICAgICo6QUlYOio6WzQ1NjddKQogCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAogCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgogCQlJQk1fQVJDSD1yczYwMDAKQEAgLTU5MSw1MiArNTk4LDUyIEBACiAJICAgIDkwMDAvWzY3OF1bMC05XVswLTldKQogCQlpZiBbIC14IC91c3IvYmluL2dldGNvbmYgXTsgdGhlbgogCQkgICAgc2NfY3B1X3ZlcnNpb249YC91c3IvYmluL2dldGNvbmYgU0NfQ1BVX1ZFUlNJT04gMj4vZGV2L251bGxgCi0gICAgICAgICAgICAgICAgICAgIHNjX2tlcm5lbF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgICAgICAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KLSAgICAgICAgICAgICAgICAgICAgICA1MjMpIEhQX0FSQ0g9ImhwcGExLjAiIDs7ICMgQ1BVX1BBX1JJU0MxXzAKLSAgICAgICAgICAgICAgICAgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKLSAgICAgICAgICAgICAgICAgICAgICA1MzIpICAgICAgICAgICAgICAgICAgICAgICMgQ1BVX1BBX1JJU0MyXzAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIgOzsKKwkJICAgIHNjX2tlcm5lbF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAorCQkgICAgY2FzZSAiJHtzY19jcHVfdmVyc2lvbn0iIGluCisJCSAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorCQkgICAgICA1MjgpIEhQX0FSQ0g9ImhwcGExLjEiIDs7ICMgQ1BVX1BBX1JJU0MxXzEKKwkJICAgICAgNTMyKSAgICAgICAgICAgICAgICAgICAgICAjIENQVV9QQV9SSVNDMl8wCisJCQljYXNlICIke3NjX2tlcm5lbF9iaXRzfSIgaW4KKwkJCSAgMzIpIEhQX0FSQ0g9ImhwcGEyLjBuIiA7OworCQkJICA2NCkgSFBfQVJDSD0iaHBwYTIuMHciIDs7CiAJCQkgICcnKSBIUF9BUkNIPSJocHBhMi4wIiA7OyAgICMgSFAtVVggMTAuMjAKLSAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMgOzsKLSAgICAgICAgICAgICAgICAgICAgZXNhYworCQkJZXNhYyA7OworCQkgICAgZXNhYwogCQlmaQogCQlpZiBbICIke0hQX0FSQ0h9IiA9ICIiIF07IHRoZW4KIAkJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKLQkJICAgIHNlZCAncy9eICAgICAgICAgICAgICAvLycgPDwgRU9GID4kZHVtbXkuYworCQkgICAgc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCiAKLSAgICAgICAgICAgICAgI2RlZmluZSBfSFBVWF9TT1VSQ0UKLSAgICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgotICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+CisJCSNkZWZpbmUgX0hQVVhfU09VUkNFCisJCSNpbmNsdWRlIDxzdGRsaWIuaD4KKwkJI2luY2x1ZGUgPHVuaXN0ZC5oPgogCi0gICAgICAgICAgICAgIGludCBtYWluICgpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQotICAgICAgICAgICAgICAgICAgbG9uZyBiaXRzID0gc3lzY29uZihfU0NfS0VSTkVMX0JJVFMpOwotICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIGxvbmcgY3B1ICA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CisJCWludCBtYWluICgpCisJCXsKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkgICAgbG9uZyBiaXRzID0gc3lzY29uZihfU0NfS0VSTkVMX0JJVFMpOworCQkjZW5kaWYKKwkJICAgIGxvbmcgY3B1ICA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY3B1KQotICAgICAgICAgICAgICAJewotICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMSIpOyBicmVhazsKLSAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MyXzA6Ci0gICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKLSAgICAgICAgICAgICAgCSAgICBzd2l0Y2ggKGJpdHMpCi0gICAgICAgICAgICAgIAkJewotICAgICAgICAgICAgICAJCWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBicmVhazsKLSAgICAgICAgICAgICAgCQljYXNlIDMyOiBwdXRzICgiaHBwYTIuMG4iKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAkJZGVmYXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7Ci0gICAgICAgICAgICAgIAkJfSBicmVhazsKLSAgICAgICAgICAgICAgI2Vsc2UgIC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8KLSAgICAgICAgICAgICAgCSAgICBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgIAlkZWZhdWx0OiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgCX0KLSAgICAgICAgICAgICAgICAgIGV4aXQgKDApOwotICAgICAgICAgICAgICB9CisJCSAgICBzd2l0Y2ggKGNwdSkKKwkJCXsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMl8wOgorCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCQkgICAgc3dpdGNoIChiaXRzKQorCQkJCXsKKwkJCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisJCQkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworCQkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkJCX0gYnJlYWs7CisJCSNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisJCQkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCSNlbmRpZgorCQkJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQl9CisJCSAgICBleGl0ICgwKTsKKwkJfQogRU9GCiAJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAogCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQpAQCAtNzI3LDIyICs3MzQsMjIgQEAKIAlleGl0IDs7CiAgICAgQzEqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMSo6KikKIAllY2hvIGMxLWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMyKjoqKQogCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYwogCXRoZW4gZWNobyBjMzItY29udmV4LWJzZAogCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCiAJZmkKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDMzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCiAJZWNobyBjMzQtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEMzOCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzOCo6KikKIAllY2hvIGMzOC1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDNCo6KikKIAllY2hvIGM0LWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDUkFZKlktTVA6KjoqOiopCiAJZWNobyB5bXAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKIAlleGl0IDs7CkBAIC03NjYsMTQgKzc3MywxNCBAQAogCWV4aXQgOzsKICAgICBGMzBbMDFdOlVOSVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKIAlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAotICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCi0gICAgICAgIEZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCi0gICAgICAgIGVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCi0gICAgICAgIGV4aXQgOzsKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisJRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKwllY2hvICIke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKICAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCi0gICAgICAgIEZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKLSAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy8gL18vJ2AKLSAgICAgICAgZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKIAlleGl0IDs7CiAgICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9CkBAIC04MDEsMTQgKzgwOCwxNCBAQAogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMyCiAJZXhpdCA7OwogICAgIGkqOndpbmRvd3MzMio6KikKLSAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCiAJZXhpdCA7OwogICAgIGkqOlBXKjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCiAJZXhpdCA7OwogICAgICo6SW50ZXJpeCo6KikKLSAgICAJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCiAJICAgIHg4NikKIAkJZWNobyBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKQEAgLTg2Myw3ICs4NzAsNyBAQAogCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKIAkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OwogCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0gICAgICAgIGVzYWMKKwllc2FjCiAJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCAtcSBsZC5zby4xCiAJaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0ibGliYzEiIDsgZWxzZSBMSUJDPSIiIDsgZmkKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9CkBAIC04NzUsNyArODgyLDEzIEBACiAJdGhlbgogCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAllbHNlCi0JICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwkgICAgaWYgZWNobyBfX0FSTV9QQ1NfVkZQIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJfCBncmVwIC1xIF9fQVJNX1BDU19WRlAKKwkgICAgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCisJICAgIGVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaWhmCisJICAgIGZpCiAJZmkKIAlleGl0IDs7CiAgICAgYXZyMzIqOkxpbnV4Oio6KikKQEAgLTg4OCw3ICs5MDEsNyBAQAogCWVjaG8gY3Jpc3YzMi1heGlzLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICBmcnY6TGludXg6KjoqKQotICAgIAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQorCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIGkqODY6TGludXg6KjoqKQogCUxJQkM9Z251CkBAIC05NTYsNyArOTY5LDcgQEAKIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CiAJZXhpdCA7OwogICAgIHNoNjQqOkxpbnV4Oio6KikKLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIHNoKjpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CkBAIC05NjQsNiArOTc3LDkgQEAKICAgICBzcGFyYzpMaW51eDoqOiogfCBzcGFyYzY0OkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CisgICAgdGlsZSo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKICAgICB2YXg6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CiAJZXhpdCA7OwpAQCAtOTcxLDcgKzk4Nyw3IEBACiAJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgeHRlbnNhKjpMaW51eDoqOiopCi0gICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQogCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCkBAIC05ODAsMTEgKzk5NiwxMSBAQAogCWVjaG8gaTM4Ni1zZXF1ZW50LXN5c3Y0CiAJZXhpdCA7OwogICAgIGkqODY6VU5JWF9TVjo0LjJNUDoyLiopCi0gICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhhcyBpdHMgb3duIHZlcnNpb24KLSAgICAgICAgIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgotICAgICAgICAjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCisJIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRoIDIuLi4KKwkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdvbid0IG1hdGNoIHRoaXMsCiAJIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgotICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KKwkjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCogbWF0Y2hlcyBpdC4KIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjQuMnV3JHtVTkFNRV9WRVJTSU9OfQogCWV4aXQgOzsKICAgICBpKjg2Ok9TLzI6KjoqKQpAQCAtMTAxNiw3ICsxMDMyLDcgQEAKIAlmaQogCWV4aXQgOzsKICAgICBpKjg2Oio6NTpbNjc4XSopCi0gICAgCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgogCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCiAJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OwogCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKQEAgLTEwNDQsMTMgKzEwNjAsMTMgQEAKIAlleGl0IDs7CiAgICAgcGM6KjoqOiopCiAJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6Ci0gICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCisJIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKKwkjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgogCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKIAkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKIAkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KIAllY2hvIGk1ODYtcGMtbXNkb3NkamdwcAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEludGVsOk1hY2g6Myo6KikKIAllY2hvIGkzODYtcGMtbWFjaDMKIAlleGl0IDs7CkBAIC0xMDg1LDggKzExMDEsOCBAQAogCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAogCSAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKICAgICAzWzM0XT8/Oio6NC4wOiogfCAzWzM0XT8/LCo6Kjo0LjA6KikKLSAgICAgICAgL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCi0gICAgICAgICAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKICAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKIAlPU19SRUw9Jy4zJwogCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXApAQCAtMTEyOSwxMCArMTE0NSwxMCBAQAogCQllY2hvIG5zMzJrLXNuaS1zeXN2CiAJZmkKIAlleGl0IDs7Ci0gICAgUEVOVElVTToqOjQuMCo6KikgIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKLSAgICAgICAgICAgICAgICAgICAgICAjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+Ci0gICAgICAgIGVjaG8gaTU4Ni11bmlzeXMtc3lzdjQKLSAgICAgICAgZXhpdCA7OworICAgIFBFTlRJVU06Kjo0LjAqOiopCSMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisJCQkjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+CisJZWNobyBpNTg2LXVuaXN5cy1zeXN2NAorCWV4aXQgOzsKICAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKIAkjIEZyb20gR2VyYWxkIEhld2VzIDxoZXdlc0BvcGVubWFya2V0LmNvbT4uCiAJIyBIb3cgYWJvdXQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gc3RyYXR1cyBhcmNoaXRlY3R1cmVzPyAtZGptCkBAIC0xMTU4LDExICsxMTc0LDExIEBACiAJZXhpdCA7OwogICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQogCWlmIFsgLWQgL3Vzci9uZWMgXTsgdGhlbgotCSAgICAgICAgZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCQllY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CiAJZWxzZQotCSAgICAgICAgZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwkJZWNobyBtaXBzLXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0KIAlmaQotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KIAllY2hvIHBvd2VycGMtYmUtYmVvcwogCWV4aXQgOzsKQEAgLTEyMjcsNiArMTI0Myw5IEBACiAgICAgKjpRTlg6Kjo0KikKIAllY2hvIGkzODYtcGMtcW54CiAJZXhpdCA7OworICAgIE5FTy0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5lby10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBOU0UtPzpOT05TVE9QX0tFUk5FTDoqOiopCiAJZWNobyBuc2UtdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMjcyLDEzICsxMjkxLDEzIEBACiAJZWNobyBwZHAxMC11bmtub3duLWl0cwogCWV4aXQgOzsKICAgICBTRUk6KjoqOlNFSVVYKQotICAgICAgICBlY2hvIG1pcHMtc2VpLXNlaXV4JHtVTkFNRV9SRUxFQVNFfQorCWVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgICo6RHJhZ29uRmx5Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCiAJZXhpdCA7OwogICAgICo6KlZNUzoqOiopCi0gICAgCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKIAljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgogCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OwogCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CkBAIC0xMzE4LDExICsxMzM3LDExIEBACiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKICNpZmRlZiBORVdTT1M0Ci0gICAgICAgICAgIjQiCisJIjQiCiAjZWxzZQotCSAgIiIKKwkiIgogI2VuZGlmCi0gICAgICAgICApOyBleGl0ICgwKTsKKwkpOyBleGl0ICgwKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YgppbmRleCAxN2M5MTQ1Li43ODE3NmE0IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5zdWIKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNjcmlwdC4KICMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCi0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOQotIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsCisjICAgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAotdGltZXN0YW1wPScyMDA5LTExLTA3JwordGltZXN0YW1wPScyMDExLTEwLTI5JwogCiAjIFRoaXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBzb2Z0d2FyZS4KICMgVGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZSBpbiB0aGlzIGZpbGUgc3VnZ2VzdHMgdGhhdCBTT01FIEdOVSBzb2Z0d2FyZQpAQCAtNzUsOCArNzUsOSBAQAogdmVyc2lvbj0iXAogR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCiAKLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTEyMyw4ICsxMjQsOSBAQAogIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAogY2FzZSAkbWF5YmVfb3MgaW4KLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKLSAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAogICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCkBAIC0xNTYsOCArMTU4LDggQEAKIAkJb3M9CiAJCWJhc2ljX21hY2hpbmU9JDEKIAkJOzsKLSAgICAgICAgLWJsdWVnZW5lKikKLQkgICAgICAgIG9zPS1jbmsKKwktYmx1ZWdlbmUqKQorCQlvcz0tY25rCiAJCTs7CiAJLXNpbSB8IC1jaXNjbyB8IC1va2kgfCAtd2VjIHwgLXdpbmJvbmQpCiAJCW9zPQpAQCAtMTczLDEwICsxNzUsMTAgQEAKIAkJb3M9LWNob3J1c29zCiAJCWJhc2ljX21hY2hpbmU9JDEKIAkJOzsKLSAJLWNob3J1c3JkYikKLSAJCW9zPS1jaG9ydXNyZGIKKwktY2hvcnVzcmRiKQorCQlvcz0tY2hvcnVzcmRiCiAJCWJhc2ljX21hY2hpbmU9JDEKLSAJCTs7CisJCTs7CiAJLWhpdXgqKQogCQlvcz0taGl1eHdlMgogCQk7OwpAQCAtMjQ5LDEzICsyNTEsMTcgQEAKIAl8IGFscGhhNjQgfCBhbHBoYTY0ZXZbNC04XSB8IGFscGhhNjRldjU2IHwgYWxwaGE2NGV2Nls3OF0gfCBhbHBoYTY0cGNhNVs2N10gXAogCXwgYW0zM18yLjAgXAogCXwgYXJjIHwgYXJtIHwgYXJtW2JsXWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIgXAorICAgICAgICB8IGJlMzIgfCBiZTY0IFwKIAl8IGJmaW4gXAogCXwgYzR4IHwgY2xpcHBlciBcCiAJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAorCXwgZXBpcGhhbnkgXAogCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAogCXwgaDgzMDAgfCBoODUwMCB8IGhwcGEgfCBocHBhMS5bMDFdIHwgaHBwYTIuMCB8IGhwcGEyLjBbbnddIHwgaHBwYTY0IFwKKwl8IGhleGFnb24gXAogCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCiAJfCBpcDJrIHwgaXEyMDAwIFwKKwl8IGxlMzIgfCBsZTY0IFwKIAl8IGxtMzIgXAogCXwgbTMyYyB8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayBcCiAJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCkBAIC0yODEsMjcgKzI4NywzOCBAQAogCXwgbW94aWUgXAogCXwgbXQgXAogCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAogCXwgbmlvcyB8IG5pb3MyIFwKIAl8IG5zMTZrIHwgbnMzMmsgXAorCXwgb3BlbjggXAogCXwgb3IzMiBcCiAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAotCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIHwgcHBjYmUgXAorCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIFwKIAl8IHB5cmFtaWQgXAotCXwgcnggXAorCXwgcmw3OCB8IHJ4IFwKIAl8IHNjb3JlIFwKIAl8IHNoIHwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMjNdZSB8IHNoWzM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCiAJfCBzaDY0IHwgc2g2NGxlIFwKIAl8IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJjbGV0IHwgc3BhcmNsaXRlIFwKIAl8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5diBcCi0JfCBzcHUgfCBzdHJvbmdhcm0gXAotCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljODAgfCB0cm9uIFwKKwl8IHNwdSBcCisJfCB0YWhvZSB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAogCXwgdWJpY29tMzIgXAotCXwgdjg1MCB8IHY4NTBlIFwKKwl8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlMiB8IHY4NTBlcyB8IHY4NTBlMnYzIFwKIAl8IHdlMzJrIFwKLQl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorCXwgeDg2IHwgeGMxNnggfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAogCXwgejhrIHwgejgwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJOzsKKwljNTR4KQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC11bmtub3duCisJCTs7CisJYzU1eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgorCQk7OworCWM2eCkKKwkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCisJCTs7CiAJbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgcGljb2NoaXApCiAJCSMgTW90b3JvbGEgNjhIQzExLzEyLgogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KQEAgLTMxMyw2ICszMzAsMTggQEAKIAkJYmFzaWNfbWFjaGluZT1tdC11bmtub3duCiAJCTs7CiAKKwlzdHJvbmdhcm0gfCB0aHVtYiB8IHhzY2FsZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQk7OworCisJeHNjYWxlZWIpCisJCWJhc2ljX21hY2hpbmU9YXJtZWItdW5rbm93bgorCQk7OworCisJeHNjYWxlZWwpCisJCWJhc2ljX21hY2hpbmU9YXJtZWwtdW5rbm93bgorCQk7OworCiAJIyBXZSB1c2UgYHBjJyByYXRoZXIgdGhhbiBgdW5rbm93bicKIAkjIGJlY2F1c2UgKDEpIHRoYXQncyB3aGF0IHRoZXkgbm9ybWFsbHkgYXJlLCBhbmQKIAkjICgyKSB0aGUgd29yZCAidW5rbm93biIgdGVuZHMgdG8gY29uZnVzZSBiZWdpbm5pbmcgdXNlcnMuCkBAIC0zMzIsMTYgKzM2MSwxOSBAQAogCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiBcCiAJfCBhcm0tKiAgfCBhcm1iZS0qIHwgYXJtbGUtKiB8IGFybWViLSogfCBhcm12Ki0qIFwKIAl8IGF2ci0qIHwgYXZyMzItKiBcCisJfCBiZTMyLSogfCBiZTY0LSogXAogCXwgYmZpbi0qIHwgYnMyMDAwLSogXAotCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBjNTV4LSogfCBjNngtKiBcCisJfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiBcCiAJfCBjbGlwcGVyLSogfCBjcmF5bnYtKiB8IGN5ZHJhLSogXAogCXwgZDEwdi0qIHwgZDMwdi0qIHwgZGx4LSogXAogCXwgZWx4c2ktKiBcCiAJfCBmMzBbMDFdLSogfCBmNzAwLSogfCBmaWRvLSogfCBmcjMwLSogfCBmcnYtKiB8IGZ4ODAtKiBcCiAJfCBoODMwMC0qIHwgaDg1MDAtKiBcCiAJfCBocHBhLSogfCBocHBhMS5bMDFdLSogfCBocHBhMi4wLSogfCBocHBhMi4wW253XS0qIHwgaHBwYTY0LSogXAorCXwgaGV4YWdvbi0qIFwKIAl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhNjQtKiBcCiAJfCBpcDJrLSogfCBpcTIwMDAtKiBcCisJfCBsZTMyLSogfCBsZTY0LSogXAogCXwgbG0zMi0qIFwKIAl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKIAl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCkBAIC0zNjcsMjUgKzM5OSwyOSBAQAogCXwgbW1peC0qIFwKIAl8IG10LSogXAogCXwgbXNwNDMwLSogXAorCXwgbmRzMzItKiB8IG5kczMybGUtKiB8IG5kczMyYmUtKiBcCiAJfCBuaW9zLSogfCBuaW9zMi0qIFwKIAl8IG5vbmUtKiB8IG5wMS0qIHwgbnMxNmstKiB8IG5zMzJrLSogXAorCXwgb3BlbjgtKiBcCiAJfCBvcmlvbi0qIFwKIAl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4tKiB8IHBvd2VyLSogXAotCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogfCBwcGNiZS0qIFwKKwl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIFwKIAl8IHB5cmFtaWQtKiBcCi0JfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgcmw3OC0qIHwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKIAl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKIAl8IHNobGUtKiB8IHNoWzEyMzRdbGUtKiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAogCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAogCXwgc3BhcmNsaXRlLSogXAotCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdHJvbmdhcm0tKiB8IHN2MS0qIHwgc3g/LSogXAotCXwgdGFob2UtKiB8IHRodW1iLSogXAotCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogfCB0aWxlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdjEtKiB8IHN4Py0qIFwKKwl8IHRhaG9lLSogXAorCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogXAorCXwgdGlsZSotKiBcCiAJfCB0cm9uLSogXAogCXwgdWJpY29tMzItKiBcCi0JfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAorCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHY4NTBlMS0qIHwgdjg1MGVzLSogfCB2ODUwZTItKiB8IHY4NTBlMnYzLSogXAorCXwgdmF4LSogXAogCXwgd2UzMmstKiBcCi0JfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKwl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogXAogCXwgeHN0b3JteTE2LSogfCB4dGVuc2EqLSogXAogCXwgeW1wLSogXAogCXwgejhrLSogfCB6ODAtKikKQEAgLTQxMCw3ICs0NDYsNyBAQAogCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCiAJCW9zPS11ZGkKIAkJOzsKLSAgICAJYWJhY3VzKQorCWFiYWN1cykKIAkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgogCQk7OwogCWFkb2JlNjhrKQpAQCAtNDgwLDExICs1MTYsMjAgQEAKIAkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQogCQlvcz0tY25rCiAJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OwogCWM5MCkKIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0gICAgICAgIGNlZ2NjKQorCWNlZ2NjKQogCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCiAJCW9zPS1jZWdjYwogCQk7OwpAQCAtNTE2LDcgKzU2MSw3IEBACiAJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKIAkJb3M9LXVuaWNvc21wCiAJCTs7Ci0JY3IxNikKKwljcjE2IHwgY3IxNi0qKQogCQliYXNpY19tYWNoaW5lPWNyMTYtdW5rbm93bgogCQlvcz0tZWxmCiAJCTs7CkBAIC03MzIsNyArNzc3LDcgQEAKIAkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCiAJCW9zPS1zeXN2CiAJCTs7Ci0gICAgICAgIG1pY3JvYmxhemUpCisJbWljcm9ibGF6ZSkKIAkJYmFzaWNfbWFjaGluZT1taWNyb2JsYXplLXhpbGlueAogCQk7OwogCW1pbmd3MzIpCkBAIC03NzUsNiArODIwLDEwIEBACiAJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KIAkJb3M9LW12cwogCQk7OworCW5hY2wpCisJCWJhc2ljX21hY2hpbmU9bGUzMi11bmtub3duCisJCW9zPS1uYWNsCisJCTs7CiAJbmNyMzAwMCkKIAkJYmFzaWNfbWFjaGluZT1pNDg2LW5jcgogCQlvcz0tc3lzdjQKQEAgLTgzOSw2ICs4ODgsMTIgQEAKIAlucDEpCiAJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCiAJCTs7CisJbmVvLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uZW8tdGFuZGVtCisJCTs7CisJbnNlLXRhbmRlbSkKKwkJYmFzaWNfbWFjaGluZT1uc2UtdGFuZGVtCisJCTs7CiAJbnNyLXRhbmRlbSkKIAkJYmFzaWNfbWFjaGluZT1uc3ItdGFuZGVtCiAJCTs7CkBAIC05MjEsOSArOTc2LDEwIEBACiAJCTs7CiAJcG93ZXIpCWJhc2ljX21hY2hpbmU9cG93ZXItaWJtCiAJCTs7Ci0JcHBjKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCXBwYyB8IHBwY2JlKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgogCQk7OwotCXBwYy0qKQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwlwcGMtKiB8IHBwY2JlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAogCQk7OwogCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQogCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCkBAIC0xMDE3LDYgKzEwNzMsOSBAQAogCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cwogCQlvcz0tc3lzdjQKIAkJOzsKKwlzdHJvbmdhcm0tKiB8IHRodW1iLSopCisJCWJhc2ljX21hY2hpbmU9YXJtLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJc3VuMikKIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCiAJCTs7CkBAIC0xMDczLDIwICsxMTMyLDggQEAKIAkJYmFzaWNfbWFjaGluZT10OTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0JdGljNTR4IHwgYzU0eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM1NXggfCBjNTV4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzZ4IHwgYzZ4KikKLQkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCi0JCW9zPS1jb2ZmCi0JCTs7CiAJdGlsZSopCi0JCWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgogCQlvcz0tbGludXgtZ251CiAJCTs7CiAJdHgzOSkKQEAgLTExNTYsNiArMTIwMyw5IEBACiAJeHBzIHwgeHBzMTAwKQogCQliYXNpY19tYWNoaW5lPXhwczEwMC1ob25leXdlbGwKIAkJOzsKKwl4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXnhzY2FsZS9hcm0vJ2AKKwkJOzsKIAl5bXApCiAJCWJhc2ljX21hY2hpbmU9eW1wLWNyYXkKIAkJb3M9LXVuaWNvcwpAQCAtMTI1Myw5ICsxMzAzLDEyIEBACiBpZiBbIHgiJG9zIiAhPSB4IiIgXQogdGhlbgogY2FzZSAkb3MgaW4KLSAgICAgICAgIyBGaXJzdCBtYXRjaCBzb21lIHN5c3RlbSB0eXBlIGFsaWFzZXMKLSAgICAgICAgIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCiAJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKIAktc29sYXJpczEgfCAtc29sYXJpczEuKikKIAkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAogCQk7OwpAQCAtMTI3Nyw4ICsxMzMwLDggQEAKIAkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCiAJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAogCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKLQkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLXNvbGFyaXMqIHwgLXN5bSogXAotCSAgICAgIHwgLWtvcGVuc29sYXJpcyogXAorCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtYXVyb3JhdXgqIHwgLXNvbGFyaXMqIFwKKwkgICAgICB8IC1zeW0qIHwgLWtvcGVuc29sYXJpcyogXAogCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAogCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAogCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCkBAIC0xMjkxLDcgKzEzNDQsOCBAQAogCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAogCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIHwgLWNlZ2NjKiBcCiAJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAotCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LWFuZHJvaWQqIFwKKwkgICAgICB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LXVjbGliYyogXAogCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKIAkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAogCSAgICAgIHwgLW9wZW5zdGVwKiB8IC1vc2tpdCogfCAtY29uaXgqIHwgLXB3MzIqIHwgLW5vbnN0b3B1eCogXApAQCAtMTMzOCw3ICsxMzkyLDcgQEAKIAktb3BlbmVkKikKIAkJb3M9LW9wZW5lZGl0aW9uCiAJCTs7Ci0gICAgICAgIC1vczQwMCopCisJLW9zNDAwKikKIAkJb3M9LW9zNDAwCiAJCTs7CiAJLXdpbmNlKikKQEAgLTEzODcsNyArMTQ0MSw3IEBACiAJLXNpbml4KikKIAkJb3M9LXN5c3Y0CiAJCTs7Ci0gICAgICAgIC10cGYqKQorCS10cGYqKQogCQlvcz0tdHBmCiAJCTs7CiAJLXRyaXRvbiopCkBAIC0xNDMyLDYgKzE0ODYsOCBAQAogCS1kaWNvcyopCiAJCW9zPS1kaWNvcwogCQk7OworCS1uYWNsKikKKwkJOzsKIAktbm9uZSkKIAkJOzsKIAkqKQpAQCAtMTQ1NCwxMCArMTUxMCwxMCBAQAogIyBzeXN0ZW0sIGFuZCB3ZSdsbCBuZXZlciBnZXQgdG8gdGhpcyBwb2ludC4KIAogY2FzZSAkYmFzaWNfbWFjaGluZSBpbgotICAgICAgICBzY29yZS0qKQorCXNjb3JlLSopCiAJCW9zPS1lbGYKIAkJOzsKLSAgICAgICAgc3B1LSopCisJc3B1LSopCiAJCW9zPS1lbGYKIAkJOzsKIAkqLWFjb3JuKQpAQCAtMTQ2OSw4ICsxNTI1LDE3IEBACiAJYXJtKi1zZW1pKQogCQlvcz0tYW91dAogCQk7OwotICAgICAgICBjNHgtKiB8IHRpYzR4LSopCi0gICAgICAgIAlvcz0tY29mZgorCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM1NXgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWM2eC0qKQorCQlvcz0tY29mZgogCQk7OwogCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KIAlwZHAxMC0qKQpAQCAtMTQ5Nyw3ICsxNTYyLDcgQEAKIAltNjgqLWNpc2NvKQogCQlvcz0tYW91dAogCQk7OwotICAgICAgICBtZXAtKikKKwltZXAtKikKIAkJb3M9LWVsZgogCQk7OwogCW1pcHMqLWNpc2NvKQpAQCAtMTUyNCw3ICsxNTg5LDcgQEAKIAkqLWlibSkKIAkJb3M9LWFpeAogCQk7OwotICAgIAkqLWtudXRoKQorCSota251dGgpCiAJCW9zPS1tbWl4d2FyZQogCQk7OwogCSotd2VjKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZQppbmRleCBjNWM3MGIxLi5jODZhNTk3IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZQpAQCAtMSwxMyArMSwxMyBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUgZm9yIGxpYmZmaSAzLjAuMTByYzAuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgbGliZmZpIDMuMC4xMS4KICMKLSMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+LgorIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzPi4KICMKICMKICMgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIwogIwogIyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgpAQCAtOTEsNiArOTEsNyBAQAogSUZTPSIgIiIJJGFzX25sIgogCiAjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorYXNfbXlzZWxmPQogY2FzZSAkMCBpbiAjKCgKICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwogICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0xNzMsNiArMTc0LDE0IEBACiAgIGFzX2xpbmVub18yPSI7YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQkTElORU5PO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkIiBhc19saW5lbm9fMmE9XCRMSU5FTk8KICAgZXZhbCAndGVzdCBcInhcJGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIgJiYKICAgdGVzdCBcInhcYGV4cHIgXCRhc19saW5lbm9fMSdcJGFzX3J1bicgKyAxXGBcIiA9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCInIHx8IGV4aXQgMQorCisgIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCR7QkFTSF9WRVJTSU9OK3NldH1cIiB8fCAoCisgICAgRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCisgICAgRUNITz1cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE9cJEVDSE8KKyAgICBFQ0hPPVwkRUNIT1wkRUNIT1wkRUNIT1wkRUNIT1wkRUNIT1wkRUNITworICAgIFBBVEg9L2VtcHR5IEZQQVRIPS9lbXB0eTsgZXhwb3J0IFBBVEggRlBBVEgKKyAgICB0ZXN0IFwiWFxgcHJpbnRmICVzIFwkRUNIT1xgXCIgPSBcIlhcJEVDSE9cIiBcXAorICAgICAgfHwgdGVzdCBcIlhcYHByaW50IC1yIC0tIFwkRUNIT1xgXCIgPSBcIlhcJEVDSE9cIiApIHx8IGV4aXQgMQogdGVzdCBcJCgoIDEgKyAxICkpID0gMiB8fCBleGl0IDEiCiAgIGlmIChldmFsICIkYXNfcmVxdWlyZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CiAgIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCkBAIC0yMTYsMTEgKzIyNSwxOCBAQAogICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQogCSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCiAJIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKwkjIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCiAJQkFTSF9FTlY9L2Rldi9udWxsCiAJRU5WPS9kZXYvbnVsbAogCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgogCWV4cG9ydCBDT05GSUdfU0hFTEwKLQlleGVjICIkQ09ORklHX1NIRUxMIiAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CisJY2FzZSAkLSBpbiAjICgoKCgKKwkgICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OworCSAgKnYqICkgYXNfb3B0cz0tdiA7OworCSAgKngqICkgYXNfb3B0cz0teCA7OworCSAgKiApIGFzX29wdHM9IDs7CisJZXNhYworCWV4ZWMgIiRDT05GSUdfU0hFTEwiICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KIGZpCiAKICAgICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHhubzsgdGhlbiA6CkBAIC0yMzEsOCArMjQ3LDggQEAKICAgICAkYXNfZWNobyAiJDA6IGJlIHVwZ3JhZGVkIHRvIHpzaCA0LjMuNCBvciBsYXRlci4iCiAgIGVsc2UKICAgICAkYXNfZWNobyAiJDA6IFBsZWFzZSB0ZWxsIGJ1Zy1hdXRvY29uZkBnbnUub3JnIGFuZAotJDA6IGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWwgYWJvdXQgeW91ciBzeXN0ZW0sCi0kMDogaW5jbHVkaW5nIGFueSBlcnJvciBwb3NzaWJseSBvdXRwdXQgYmVmb3JlIHRoaXMKKyQwOiBodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXMgYWJvdXQgeW91cgorJDA6IHN5c3RlbSwgaW5jbHVkaW5nIGFueSBlcnJvciBwb3NzaWJseSBvdXRwdXQgYmVmb3JlIHRoaXMKICQwOiBtZXNzYWdlLiBUaGVuIGluc3RhbGwgYSBtb2Rlcm4gc2hlbGwsIG9yIG1hbnVhbGx5IHJ1bgogJDA6IHRoZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlmIHlvdSBkbyBoYXZlIG9uZS4iCiAgIGZpCkBAIC0zMTksNyArMzM1LDcgQEAKICAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCiAgICAgZG9uZQogICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKLSAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKIAogCiB9ICMgYXNfZm5fbWtkaXJfcApAQCAtMzU5LDE5ICszNzUsMTkgQEAKIGZpICMgYXNfZm5fYXJpdGgKIAogCi0jIGFzX2ZuX2Vycm9yIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQogIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCi0jIHNjcmlwdCB3aXRoIHN0YXR1cyAkPywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorIyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KIGFzX2ZuX2Vycm9yICgpCiB7Ci0gIGFzX3N0YXR1cz0kPzsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0gIGlmIHRlc3QgIiQzIjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDIifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDEiID4mJDMKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAogICBmaQotICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDEiID4mMgorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgogICBhc19mbl9leGl0ICRhc19zdGF0dXMKIH0gIyBhc19mbl9lcnJvcgogCkBAIC01MjgsMTYxICs1NDQsMTQgQEAKICMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgogYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKIAotCi0KLSMgQ2hlY2sgdGhhdCB3ZSBhcmUgcnVubmluZyB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KIFNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CiAKLWNhc2UgWCRsdF9FQ0hPIGluCi1YKi0tZmFsbGJhY2stZWNobykKLSAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RhdGlvbiAod2hpY2ggd2FzIHJlcXVpcmVkIGZvciBNYWtlKS4KLSAgRUNITz1gZWNobyAiJGx0X0VDSE8iIHwgc2VkICdzLFxcXFxcJFxcJDAsJyQwJywnYAotICA7OwotZXNhYwotCi1FQ0hPPSR7bHRfRUNITy1lY2hvfQotaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIiQwIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KLWZpCi0KLWlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PF9MVF9FT0YKLSQqCi1fTFRfRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJGx0X0VDSE8iOyB0aGVuCi0gIGlmIHRlc3QgIlgke2VjaG9fdGVzdF9zdHJpbmcrc2V0fSIgIT0gWHNldDsgdGhlbgotICAgICMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICAgIGZvciBjbWQgaW4gJ3NlZCA1MHEgIiQwIicgJ3NlZCAyMHEgIiQwIicgJ3NlZCAxMHEgIiQwIicgJ3NlZCAycSAiJDAiJyAnZWNobyB0ZXN0JzsgZG8KLSAgICAgICMgZXhwZWN0ZWQgc2l6ZXM6IGxlc3MgdGhhbiAyS2IsIDFLYiwgNTEyIGJ5dGVzLCAxNiBieXRlcywgLi4uCi0gICAgICBpZiB7IGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGA7IH0gMj4vZGV2L251bGwgJiYKLQkgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGwKLSAgICAgIHRoZW4KLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICBmaQotCi0gIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7ICRFQ0hPICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgIDoKLSAgZWxzZQotICAgICMgVGhlIFNvbGFyaXMsIEFJWCwgYW5kIERpZ2l0YWwgVW5peCBkZWZhdWx0IGVjaG8gcHJvZ3JhbXMgdW5xdW90ZQotICAgICMgYmFja3NsYXNoZXMuICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcXVvdGUgYmFja3NsYXNoZXMgdXNpbmcKLSAgICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwotICAgICMKLSAgICAjIFNvLCBmaXJzdCB3ZSBsb29rIGZvciBhIHdvcmtpbmcgZWNobyBpbiB0aGUgdXNlcidzIFBBVEguCi0KLSAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSAgICBmb3IgZGlyIGluICRQQVRIIC91c3IvdWNiOyBkbwotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0gICAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgotICAgICAgICAgdGVzdCAiWGAoJGRpci9lY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRkaXIvZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICBFQ0hPPSIkZGlyL2VjaG8iCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLQotICAgIGlmIHRlc3QgIlgkRUNITyIgPSBYZWNobzsgdGhlbgotICAgICAgIyBXZSBkaWRuJ3QgZmluZCBhIGJldHRlciBlY2hvLCBzbyBsb29rIGZvciBhbHRlcm5hdGl2ZXMuCi0gICAgICBpZiB0ZXN0ICJYYHsgcHJpbnQgLXIgJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgcHJpbnQgLXIgIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgICAjIFRoaXMgc2hlbGwgaGFzIGEgYnVpbHRpbiBwcmludCAtciB0aGF0IGRvZXMgdGhlIHRyaWNrLgotICAgICAgICBFQ0hPPSdwcmludCAtcicKLSAgICAgIGVsaWYgeyB0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0OyB9ICYmCi0JICAgdGVzdCAiWCRDT05GSUdfU0hFTEwiICE9IFgvYmluL2tzaDsgdGhlbgotICAgICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KLSAgICAgICAgT1JJR0lOQUxfQ09ORklHX1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9Ci0gICAgICAgIGV4cG9ydCBPUklHSU5BTF9DT05GSUdfU0hFTEwKLSAgICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCi0gICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKLSAgICAgICAgZXhlYyAkQ09ORklHX1NIRUxMICIkMCIgLS1uby1yZWV4ZWMgJHsxKyIkQCJ9Ci0gICAgICBlbHNlCi0gICAgICAgICMgVHJ5IHVzaW5nIHByaW50Zi4KLSAgICAgICAgRUNITz0ncHJpbnRmICVzXG4nCi0gICAgICAgIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotCSAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgICMgQ29vbCwgcHJpbnRmIHdvcmtzCi0JICA6Ci0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkT1JJR0lOQUxfQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAotCSAgZXhwb3J0IENPTkZJR19TSEVMTAotCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCi0JICBleHBvcnQgU0hFTEwKLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgJDAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJENPTkZJR19TSEVMTCAiJDAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgRUNITz0iJENPTkZJR19TSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsc2UKLQkgICMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JICBwcmV2PToKLQotCSAgZm9yIGNtZCBpbiAnZWNobyB0ZXN0JyAnc2VkIDJxICIkMCInICdzZWQgMTBxICIkMCInICdzZWQgMjBxICIkMCInICdzZWQgNTBxICIkMCInOyBkbwotCSAgICBpZiB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWGBldmFsICRjbWRgIjsgfSAyPi9kZXYvbnVsbAotCSAgICB0aGVuCi0JICAgICAgYnJlYWsKLQkgICAgZmkKLQkgICAgcHJldj0iJGNtZCIKLQkgIGRvbmUKLQotCSAgaWYgdGVzdCAiJHByZXYiICE9ICdzZWQgNTBxICIkMCInOyB0aGVuCi0JICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCi0JICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICIkMCIgJHsxKyIkQCJ9Ci0JICBlbHNlCi0JICAgICMgT29wcy4gIFdlIGxvc3QgY29tcGxldGVseSwgc28ganVzdCBzdGljayB3aXRoIGVjaG8uCi0JICAgIEVDSE89ZWNobwotCSAgZmkKLSAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi0KLSMgQ29weSBlY2hvIGFuZCBxdW90ZSB0aGUgY29weSBzdWl0YWJseSBmb3IgcGFzc2luZyB0byBsaWJ0b29sIGZyb20KLSMgdGhlIE1ha2VmaWxlLCBpbnN0ZWFkIG9mIHF1b3RpbmcgdGhlIG9yaWdpbmFsLCB3aGljaCBpcyB1c2VkIGxhdGVyLgotbHRfRUNITz0kRUNITwotaWYgdGVzdCAiWCRsdF9FQ0hPIiA9ICJYJENPTkZJR19TSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcJDAgLS1mYWxsYmFjay1lY2hvIgotZmkKLQotCi0KIAogdGVzdCAtbiAiJERKRElSIiB8fCBleGVjIDc8JjAgPC9kZXYvbnVsbAogZXhlYyA2PiYxCiAKICMgTmFtZSBvZiB0aGUgaG9zdC4KLSMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIExpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsCisjIGhvc3RuYW1lIG9uIHNvbWUgc3lzdGVtcyAoU1ZSMy4yLCBvbGQgR05VL0xpbnV4KSByZXR1cm5zIGEgYm9ndXMgZXhpdCBzdGF0dXMsCiAjIHNvIHVuYW1lIGdldHMgcnVuIHRvby4KIGFjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAogCkBAIC03MDEsOSArNTcwLDkgQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdsaWJmZmknCiBQQUNLQUdFX1RBUk5BTUU9J2xpYmZmaScKLVBBQ0tBR0VfVkVSU0lPTj0nMy4wLjEwcmMwJwotUEFDS0FHRV9TVFJJTkc9J2xpYmZmaSAzLjAuMTByYzAnCi1QQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbCcKK1BBQ0tBR0VfVkVSU0lPTj0nMy4wLjExJworUEFDS0FHRV9TVFJJTkc9J2xpYmZmaSAzLjAuMTEnCitQQUNLQUdFX0JVR1JFUE9SVD0naHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzJwogUEFDS0FHRV9VUkw9JycKIAogIyBGYWN0b3JpbmcgZGVmYXVsdCBoZWFkZXJzIGZvciBtb3N0IHRlc3RzLgpAQCAtNzQ4LDggKzYxNywxNCBAQAogTElCT0JKUwogdG9vbGV4ZWNsaWJkaXIKIHRvb2xleGVjZGlyCitGRklfREVCVUdfRkFMU0UKK0ZGSV9ERUJVR19UUlVFCiBUQVJHRVRESVIKIFRBUkdFVAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRQorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFCitzeXNfc3ltYm9sX3VuZGVyc2NvcmUKIEhBVkVfTE9OR19ET1VCTEUKIEFMTE9DQQogUEE2NF9IUFVYX0ZBTFNFCkBAIC03ODIsNiArNjU3LDggQEAKIFBPV0VSUENfQUlYX1RSVUUKIFBPV0VSUENfRkFMU0UKIFBPV0VSUENfVFJVRQorTU9YSUVfRkFMU0UKK01PWElFX1RSVUUKIE02OEtfRkFMU0UKIE02OEtfVFJVRQogTTMyUl9GQUxTRQpAQCAtODExLDE1ICs2ODgsMTggQEAKIE1BSU5UCiBNQUlOVEFJTkVSX01PREVfRkFMU0UKIE1BSU5UQUlORVJfTU9ERV9UUlVFCitQUlRESUFHCiBDUFAKIE9UT09MNjQKIE9UT09MCiBMSVBPCiBOTUVESVQKIERTWU1VVElMCi1sdF9FQ0hPCitNQU5JRkVTVF9UT09MCiBSQU5MSUIKK2FjX2N0X0FSCiBBUgorRExMVE9PTAogT0JKRFVNUAogTE5fUwogTk0KQEAgLTgzOSw2ICs3MTksNyBAQAogYW1fX2Zhc3RkZXBDQ19GQUxTRQogYW1fX2Zhc3RkZXBDQ19UUlVFCiBDQ0RFUE1PREUKK2FtX19ub2RlcAogQU1ERVBCQUNLU0xBU0gKIEFNREVQX0ZBTFNFCiBBTURFUF9UUlVFCkBAIC04NzUsNiArNzU2LDcgQEAKIElOU1RBTExfREFUQQogSU5TVEFMTF9TQ1JJUFQKIElOU1RBTExfUFJPR1JBTQorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZAogdGFyZ2V0X29zCiB0YXJnZXRfdmVuZG9yCiB0YXJnZXRfY3B1CkBAIC05MjgsMTMgKzgxMCwxNyBAQAogYWNfc3Vic3RfZmlsZXM9JycKIGFjX3VzZXJfb3B0cz0nCiBlbmFibGVfb3B0aW9uX2NoZWNraW5nCitlbmFibGVfYnVpbGRkaXIKIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCiBlbmFibGVfc2hhcmVkCiBlbmFibGVfc3RhdGljCiB3aXRoX3BpYwogZW5hYmxlX2Zhc3RfaW5zdGFsbAogd2l0aF9nbnVfbGQKK3dpdGhfc3lzcm9vdAogZW5hYmxlX2xpYnRvb2xfbG9jaworZW5hYmxlX3BvcnRhYmxlX2JpbmFyeQord2l0aF9nY2NfYXJjaAogZW5hYmxlX21haW50YWluZXJfbW9kZQogZW5hYmxlX2RlYnVnCiBlbmFibGVfc3RydWN0cwpAQCAtMTAxMCw4ICs4OTYsOSBAQAogICBmaQogCiAgIGNhc2UgJGFjX29wdGlvbiBpbgotICAqPSopCWFjX29wdGFyZz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwoLipcKSdgIDs7Ci0gICopCWFjX29wdGFyZz15ZXMgOzsKKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7OworICAqKSAgICBhY19vcHRhcmc9eWVzIDs7CiAgIGVzYWMKIAogICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgpAQCAtMTA1Niw3ICs5NDMsNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSpkaXNhYmxlLVwoLipcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMDgyLDcgKzk2OSw3IEBACiAgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTI4Niw3ICsxMTczLDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aC1cKFtePV0qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTMwMiw3ICsxMTg5LDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qd2l0aG91dC1cKC4qXCknYAogICAgICMgUmVqZWN0IG5hbWVzIHRoYXQgYXJlIG5vdCB2YWxpZCBzaGVsbCB2YXJpYWJsZSBuYW1lcy4KICAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCiAgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CiAgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAogICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgpAQCAtMTMzMiw4ICsxMjE5LDggQEAKICAgfCAtLXgtbGlicmFyPSogfCAtLXgtbGlicmE9KiB8IC0teC1saWJyPSogfCAtLXgtbGliPSogfCAtLXgtbGk9KiB8IC0teC1sPSopCiAgICAgeF9saWJyYXJpZXM9JGFjX29wdGFyZyA7OwogCi0gIC0qKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0aW9uJwotVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkYWNfb3B0aW9uJworVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiIKICAgICA7OwogCiAgICo9KikKQEAgLTEzNDEsNyArMTIyOCw3IEBACiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGNhc2UgJGFjX2VudnZhciBpbiAjKAogICAgICAgJycgfCBbMC05XSogfCAqWyFfJGFzX2NyX2FsbnVtXSogKQotICAgICAgYXNfZm5fZXJyb3IgImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52dmFyJyIgOzsKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFxgJGFjX2VudnZhciciIDs7CiAgICAgZXNhYwogICAgIGV2YWwgJGFjX2VudnZhcj1cJGFjX29wdGFyZwogICAgIGV4cG9ydCAkYWNfZW52dmFyIDs7CkBAIC0xMzUxLDcgKzEyMzgsNyBAQAogICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgogICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgogICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgotICAgIDogJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0gJHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0KKyAgICA6ICIke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufSIKICAgICA7OwogCiAgIGVzYWMKQEAgLTEzNTksMTMgKzEyNDYsMTMgQEAKIAogaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCiAgIGFjX29wdGlvbj0tLWBlY2hvICRhY19wcmV2IHwgc2VkICdzL18vLS9nJ2AKLSAgYXNfZm5fZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKKyAgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgYXJndW1lbnQgdG8gJGFjX29wdGlvbiIKIGZpCiAKIGlmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRfb3B0cyI7IHRoZW4KICAgY2FzZSAkZW5hYmxlX29wdGlvbl9jaGVja2luZyBpbgogICAgIG5vKSA7OwotICAgIGZhdGFsKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKKyAgICBmYXRhbCkgYXNfZm5fZXJyb3IgJD8gInVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiIDs7CiAgICAgKikgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mMiA7OwogICBlc2FjCiBmaQpAQCAtMTM4OCw3ICsxMjc1LDcgQEAKICAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7OwogICAgIE5PTkUgfCAnJyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkgY29udGludWU7OyBlc2FjOzsKICAgZXNhYwotICBhc19mbl9lcnJvciAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIKKyAgYXNfZm5fZXJyb3IgJD8gImV4cGVjdGVkIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIGZvciAtLSRhY192YXI6ICRhY192YWwiCiBkb25lCiAKICMgVGhlcmUgbWlnaHQgYmUgcGVvcGxlIHdobyBkZXBlbmQgb24gdGhlIG9sZCBicm9rZW4gYmVoYXZpb3I6IGAkaG9zdCcKQEAgLTE0MDIsOCArMTI4OSw4IEBACiBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRoZW4KICAgaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgPSB4OyB0aGVuCiAgICAgY3Jvc3NfY29tcGlsaW5nPW1heWJlCi0gICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogSWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KLSAgICBJZiBhIGNyb3NzIGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUgdXNlZC4iID4mMgorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGlmIHlvdSB3YW50ZWQgdG8gc2V0IHRoZSAtLWJ1aWxkIHR5cGUsIGRvbid0IHVzZSAtLWhvc3QuCisgICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQiID4mMgogICBlbGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiICE9ICJ4JGhvc3RfYWxpYXMiOyB0aGVuCiAgICAgY3Jvc3NfY29tcGlsaW5nPXllcwogICBmaQpAQCAtMTQxOCw5ICsxMzA1LDkgQEAKIGFjX3B3ZD1gcHdkYCAmJiB0ZXN0IC1uICIkYWNfcHdkIiAmJgogYWNfbHNfZGk9YGxzIC1kaSAuYCAmJgogYWNfcHdkX2xzX2RpPWBjZCAiJGFjX3B3ZCIgJiYgbHMgLWRpIC5gIHx8Ci0gIGFzX2ZuX2Vycm9yICJ3b3JraW5nIGRpcmVjdG9yeSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCIKKyAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgogdGVzdCAiWCRhY19sc19kaSIgPSAiWCRhY19wd2RfbHNfZGkiIHx8Ci0gIGFzX2ZuX2Vycm9yICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiCisgIGFzX2ZuX2Vycm9yICQ/ICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiCiAKIAogIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0aW9uIHdhcyBub3Qgc3BlY2lmaWVkLgpAQCAtMTQ1OSwxMSArMTM0NiwxMSBAQAogZmkKIGlmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCiAgIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHllcyAmJiBzcmNkaXI9IiRhY19jb25mZGlyIG9yIC4uIgotICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgogZmkKIGFjX21zZz0ic291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9lcyBub3Qgd29yayIKIGFjX2Fic19jb25mZGlyPWAoCi0JY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIiB8fCBhc19mbl9lcnJvciAiJGFjX21zZyIKKwljZCAiJHNyY2RpciIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9yICQ/ICIkYWNfbXNnIgogCXB3ZClgCiAjIFdoZW4gYnVpbGRpbmcgaW4gcGxhY2UsIHNldCBzcmNkaXI9LgogaWYgdGVzdCAiJGFjX2Fic19jb25mZGlyIiA9ICIkYWNfcHdkIjsgdGhlbgpAQCAtMTQ4OSw3ICsxMzc2LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBsaWJmZmkgMy4wLjEwcmMwIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIGxpYmZmaSAzLjAuMTEgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTUwMyw3ICsxMzkwLDcgQEAKICAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQogICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKICAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nLi4uJyBtZXNzYWdlcworICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgXGBjaGVja2luZyAuLi4nIG1lc3NhZ2VzCiAgICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVzdWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KICAgLUMsIC0tY29uZmlnLWNhY2hlICAgICAgYWxpYXMgZm9yIFxgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKICAgLW4sIC0tbm8tY3JlYXRlICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMKQEAgLTE1NjAsNyArMTQ0Nyw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbGliZmZpIDMuMC4xMHJjMDoiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIGxpYmZmaSAzLjAuMTE6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTU2OCw2ICsxNDU1LDggQEAKICAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucwogICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCiAgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgLS1kaXNhYmxlLWJ1aWxkZGlyICAgICAgZGlzYWJsZSBhdXRvbWF0aWMgYnVpbGQgaW4gc3ViZGlyIG9mIHNvdXJjZXMKKwogICAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAgc3BlZWRzIHVwIG9uZS10aW1lIGJ1aWxkCiAgIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICBkbyBub3QgcmVqZWN0IHNsb3cgZGVwZW5kZW5jeSBleHRyYWN0b3JzCiAgIC0tZW5hYmxlLXNoYXJlZFs9UEtHU10gIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgW2RlZmF1bHQ9eWVzXQpAQCAtMTU3NSw2ICsxNDY0LDkgQEAKICAgLS1lbmFibGUtZmFzdC1pbnN0YWxsWz1QS0dTXQogICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24gW2RlZmF1bHQ9eWVzXQogICAtLWRpc2FibGUtbGlidG9vbC1sb2NrICBhdm9pZCBsb2NraW5nIChtaWdodCBicmVhayBwYXJhbGxlbCBidWlsZHMpCisgIC0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIGNvbXBpbGVyIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCBwcm9kdWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVucG9ydGFibGUgYmluYXJpZXMKICAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlICBlbmFibGUgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKIAkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0byB0aGUgY2FzdWFsIGluc3RhbGxlcgogICAtLWVuYWJsZS1kZWJ1ZyAgICAgICAgICBkZWJ1Z2dpbmcgbW9kZQpAQCAtMTU4NSw5ICsxNDc3LDEzIEBACiBPcHRpb25hbCBQYWNrYWdlczoKICAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FSRz15ZXNdCiAgIC0td2l0aG91dC1QQUNLQUdFICAgICAgIGRvIG5vdCB1c2UgUEFDS0FHRSAoc2FtZSBhcyAtLXdpdGgtUEFDS0FHRT1ubykKLSAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgIC0td2l0aC1waWNbPVBLR1NdICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgIC0td2l0aC1nY2MtYXJjaD08YXJjaD4gIHVzZSBhcmNoaXRlY3R1cmUgPGFyY2g+IGZvciBnY2MgLW1hcmNoLy1tdHVuZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiBndWVzc2luZwogCiBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCkBAIC0xNjA0LDcgKzE1MDAsNyBAQAogVXNlIHRoZXNlIHZhcmlhYmxlcyB0byBvdmVycmlkZSB0aGUgY2hvaWNlcyBtYWRlIGJ5IGBjb25maWd1cmUnIG9yIHRvIGhlbHAKIGl0IHRvIGZpbmQgbGlicmFyaWVzIGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KIAotUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+LgorUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlcz4uCiBfQUNFT0YKIGFjX3N0YXR1cz0kPwogZmkKQEAgLTE2NjcsMTAgKzE1NjMsMTAgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1saWJmZmkgY29uZmlndXJlIDMuMC4xMHJjMAotZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY1CitsaWJmZmkgY29uZmlndXJlIDMuMC4xMQorZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4CiAKLUNvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuCiBfQUNFT0YKQEAgLTE3MTQsNyArMTYxMCw3IEBACiAKIAlhY19yZXR2YWw9MQogZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfY29tcGlsZQpAQCAtMTc2MCw3ICsxNjU2LDcgQEAKICAgIyBpbnRlcmZlcmUgd2l0aCB0aGUgbmV4dCBsaW5rIGNvbW1hbmQ7IGFsc28gZGVsZXRlIGEgZGlyZWN0b3J5IHRoYXQgaXMKICAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAgV2UgZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgogICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfdHJ5X2xpbmsKQEAgLTE3NzQsNyArMTY3MCw3IEBACiAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTc5Miw3ICsxNjg4LDcgQEAKIGV2YWwgYWNfcmVzPVwkJDMKIAkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQogJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KIAogfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUKIApAQCAtMTgxNyw3ICsxNzEzLDcgQEAKICAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCiAgIGZpCiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4vZGV2L251bGwgJiYgeworICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7CiAJIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8CiAJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKICAgICAgICB9OyB0aGVuIDoKQEAgLTE4MjgsNyArMTcyNCw3IEBACiAKICAgICBhY19yZXR2YWw9MQogZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfY3BwCkBAIC0xODcwLDcgKzE3NjYsNyBAQAogICAgICAgIGFjX3JldHZhbD0kYWNfc3RhdHVzCiBmaQogICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKIAogfSAjIGFjX2ZuX2NfdHJ5X3J1bgpAQCAtMTg4Myw3ICsxNzc5LDcgQEAKICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xOTM4LDcgKzE4MzQsNyBAQAogZXZhbCBhY19yZXM9XCQkMwogCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiAkYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogCiB9ICMgYWNfZm5fY19jaGVja19mdW5jCiAKQEAgLTE5NTAsMTAgKzE4NDYsMTAgQEAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKIHsKICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICBpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CisgIGlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZmkKIGV2YWwgYWNfcmVzPVwkJDMKQEAgLTE5ODksNyArMTg4NSw3IEBACiBlbHNlCiAgIGFjX2hlYWRlcl9wcmVwcm9jPW5vCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQogJGFzX2VjaG8gIiRhY19oZWFkZXJfcHJlcHJvYyIgPiY2OyB9CiAKQEAgLTIwMTIsMTcgKzE5MDgsMTUgQEAKICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0oIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLSMjIFJlcG9ydCB0aGlzIHRvIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWwgIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorKCAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBSZXBvcnQgdGhpcyB0byBodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXMgIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICAgKSB8IHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4mMgogICAgIDs7CiBlc2FjCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGV2YWwgIiQzPVwkYWNfaGVhZGVyX2NvbXBpbGVyIgpAQCAtMjAzMSwxMCArMTkyNSw2NCBAQAogCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiAkYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CiBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KIAogfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKIAorIyBhY19mbl9jX2NoZWNrX3R5cGUgTElORU5PIFRZUEUgVkFSIElOQ0xVREVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBUWVBFIGV4aXN0cyBhZnRlciBoYXZpbmcgaW5jbHVkZWQgSU5DTFVERVMsIHNldHRpbmcgY2FjaGUKKyMgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja190eXBlICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgZXZhbCAiJDM9bm8iCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQKK21haW4gKCkKK3sKK2lmIChzaXplb2YgKCQyKSkKKwkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoKCQyKSkpCisJICAgIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgZXZhbCAiJDM9eWVzIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQorCiAjIGFjX2ZuX2NfY29tcHV0ZV9pbnQgTElORU5PIEVYUFIgVkFSIElOQ0xVREVTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFRyaWVzIHRvIGZpbmQgdGhlIGNvbXBpbGUtdGltZSB2YWx1ZSBvZiBFWFBSIGluIGEgcHJvZ3JhbSB0aGF0IGluY2x1ZGVzCkBAIC0yMjA4LDcgKzIxNTYsNyBAQAogcm0gLWYgY29uZnRlc3QudmFsCiAKICAgZmkKLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY19jb21wdXRlX2ludApAQCAtMjIxNiw4ICsyMTY0LDggQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBsaWJmZmkgJGFzX21lIDMuMC4xMHJjMCwgd2hpY2ggd2FzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKK0l0IHdhcyBjcmVhdGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjExLCB3aGljaCB3YXMKK2dlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OC4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgICQgJDAgJEAKIApAQCAtMjMyNywxMSArMjI3NSw5IEBACiAgIHsKICAgICBlY2hvCiAKLSAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLS0tLS0tICMjCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIENhY2hlIHZhcmlhYmxlcy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICBlY2hvCiAgICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKICgKQEAgLTIzNjUsMTEgKzIzMTEsOSBAQAogKQogICAgIGVjaG8KIAotICAgIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCiAjIyBPdXRwdXQgdmFyaWFibGVzLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMiCiAgICAgZWNobwogICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X3ZhcnMKICAgICBkbwpAQCAtMjM4MiwxMSArMjMyNiw5IEBACiAgICAgZWNobwogCiAgICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgotICAgICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIEZpbGUgc3Vic3RpdHV0aW9ucy4gIyMKLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICAgIGVjaG8KICAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzCiAgICAgICBkbwpAQCAtMjQwMCwxMSArMjM0Miw5IEBACiAgICAgZmkKIAogICAgIGlmIHRlc3QgLXMgY29uZmRlZnMuaDsgdGhlbgotICAgICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0gIyMKKyAgICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLSAjIwogIyMgY29uZmRlZnMuaC4gIyMKLSMjIC0tLS0tLS0tLS0tICMjCi1fQVNCT1gKKyMjIC0tLS0tLS0tLS0tICMjIgogICAgICAgZWNobwogICAgICAgY2F0IGNvbmZkZWZzLmgKICAgICAgIGVjaG8KQEAgLTI0NTksNyArMjM5OSwxMiBAQAogYWNfc2l0ZV9maWxlMT1OT05FCiBhY19zaXRlX2ZpbGUyPU5PTkUKIGlmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KLSAgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEUKKyAgIyBXZSBkbyBub3Qgd2FudCBhIFBBVEggc2VhcmNoIGZvciBjb25maWcuc2l0ZS4KKyAgY2FzZSAkQ09ORklHX1NJVEUgaW4gIygoCisgICAgLSopICBhY19zaXRlX2ZpbGUxPS4vJENPTkZJR19TSVRFOzsKKyAgICAqLyopIGFjX3NpdGVfZmlsZTE9JENPTkZJR19TSVRFOzsKKyAgICAqKSAgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICBlc2FjCiBlbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgogICBhY19zaXRlX2ZpbGUxPSRwcmVmaXgvc2hhcmUvY29uZmlnLnNpdGUKICAgYWNfc2l0ZV9maWxlMj0kcHJlZml4L2V0Yy9jb25maWcuc2l0ZQpAQCAtMjQ3NCw3ICsyNDE5LDExIEBACiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNQogJGFzX2VjaG8gIiRhc19tZTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlIiA+JjY7fQogICAgIHNlZCAncy9eL3wgLycgIiRhY19zaXRlX2ZpbGUiID4mNQotICAgIC4gIiRhY19zaXRlX2ZpbGUiCisgICAgLiAiJGFjX3NpdGVfZmlsZSIgXAorICAgICAgfHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiZmFpbGVkIHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgZmkKIGRvbmUKIApAQCAtMjU1MCw3ICsyNDk5LDcgQEAKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9Ci0gIGFzX2ZuX2Vycm9yICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAicnVuIFxgbWFrZSBkaXN0Y2xlYW4nIGFuZC9vciBcYHJtICRjYWNoZV9maWxlJyBhbmQgc3RhcnQgb3ZlciIgIiRMSU5FTk8iIDUKIGZpCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgTWFpbiBib2R5IG9mIHNjcmlwdC4gIyMKQEAgLTI1NjgsMTYgKzI1MTcsMjIgQEAKIAogYWNfYXV4X2Rpcj0KIGZvciBhY19kaXIgaW4gIiRzcmNkaXIiICIkc3JjZGlyLy4uIiAiJHNyY2Rpci8uLi8uLiI7IGRvCi0gIGZvciBhY190IGluIGluc3RhbGwtc2ggaW5zdGFsbC5zaCBzaHRvb2w7IGRvCi0gICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfdCI7IHRoZW4KLSAgICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvJGFjX3QgLWMiCi0gICAgICBicmVhayAyCi0gICAgZmkKLSAgZG9uZQorICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKIGRvbmUKIGlmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgotICBhc19mbl9lcnJvciAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQogZmkKIAogIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCkBAIC0yNTkxLDI3ICsyNTQ2LDI3IEBACiAKICMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KICRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKLSAgYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2J1aWxkK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKIHRlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgogICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAogdGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCi0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CiBhY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8Ci0gIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKIAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQogJGFzX2VjaG8gIiRhY19jdl9idWlsZCIgPiY2OyB9CiBjYXNlICRhY19jdl9idWlsZCBpbgogKi0qLSopIDs7Ci0qKSBhc19mbl9lcnJvciAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OwogZXNhYwogYnVpbGQ9JGFjX2N2X2J1aWxkCiBhY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCkBAIC0yNjI5LDE0ICsyNTg0LDE0IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2hvc3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9ob3N0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KICAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQKIGVsc2UKICAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwKLSAgICBhc19mbl9lcnJvciAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CiBmaQogCiBmaQpAQCAtMjY0NCw3ICsyNTk5LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CiBjYXNlICRhY19jdl9ob3N0IGluCiAqLSotKikgOzsKLSopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OwogZXNhYwogaG9zdD0kYWNfY3ZfaG9zdAogYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJwpAQCAtMjY2MiwxNCArMjYxNywxNCBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfdGFyZ2V0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfdGFyZ2V0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAieCR0YXJnZXRfYWxpYXMiID0geDsgdGhlbgogICBhY19jdl90YXJnZXQ9JGFjX2N2X2hvc3QKIGVsc2UKICAgYWNfY3ZfdGFyZ2V0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICR0YXJnZXRfYWxpYXNgIHx8Ci0gICAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICR0YXJnZXRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkdGFyZ2V0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKIGZpCiAKIGZpCkBAIC0yNjc3LDcgKzI2MzIsNyBAQAogJGFzX2VjaG8gIiRhY19jdl90YXJnZXQiID4mNjsgfQogY2FzZSAkYWNfY3ZfdGFyZ2V0IGluCiAqLSotKikgOzsKLSopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCB0YXJnZXQiICIkTElORU5PIiA1OzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCB0YXJnZXQiICIkTElORU5PIiA1OzsKIGVzYWMKIHRhcmdldD0kYWNfY3ZfdGFyZ2V0CiBhY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCkBAIC0yNzA0LDYgKzI2NTksMTEwIEBACiAKIC4gJHtzcmNkaXJ9L2NvbmZpZ3VyZS5ob3N0CiAKKworICAgIyBbJF1AIGlzIHVuc2FibGUgaW4gMi42MCsgYnV0IGVhcmxpZXIgYXV0b2NvbmYgaGFkIG5vIGFjX2NvbmZpZ3VyZV9hcmdzCisgICBpZiB0ZXN0ICIke2FjX2NvbmZpZ3VyZV9hcmdzK3NldH0iICE9ICJzZXQiIDsgdGhlbgorICAgICAgYWNfY29uZmlndXJlX2FyZ3M9CisgICAgICBmb3IgYWNfYXJnIGluICR7MSsiJEAifTsgZG8KKyAgICAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgJyRhY19hcmcnIgorICAgICAgZG9uZQorICAgZmkKKworIyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAorYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYAorCisKK2F4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1idWlsZGRpciB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9idWlsZGRpcitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2J1aWxkZGlyOyBheF9lbmFibGVfYnVpbGRkaXI9IiRlbmFibGV2YWwiCitlbHNlCisgIGF4X2VuYWJsZV9idWlsZGRpcj0iYXV0byIKK2ZpCisKK2lmIHRlc3QgIi4kYWNfc3JjZGlyX2RlZmF1bHRlZCIgIT0gIi5ubyIgOyB0aGVuCitpZiB0ZXN0ICIuJHNyY2RpciIgPSAiLi4iIDsgdGhlbgorICBpZiB0ZXN0IC1mIGNvbmZpZy5zdGF0dXMgOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiB0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCIgPiY2O30KKyAgZWxzZQorICAgIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuIiAgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorICAgIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIubm8iICAmJiBheF9lbmFibGVfYnVpbGRkaXI9Ii4iCisgICAgdGVzdCAiLiRUQVJHRVQiID0gIi4iICYmIFRBUkdFVD0iJHRhcmdldCIKKyAgICB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLmF1dG8iICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iJFRBUkdFVCIKKyAgICBpZiB0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgIT0gIi4uIiA7IHRoZW4gICAgIyB3ZSBrbm93IHdoZXJlIHRvIGdvIGFuZAorICAgICAgYXNfZGlyPSRheF9lbmFibGVfYnVpbGRkaXI7IGFzX2ZuX21rZGlyX3AKKyAgICAgIGVjaG8gX18uJGF4X2VuYWJsZV9idWlsZGRpci5fXyA+ICRheF9lbmFibGVfYnVpbGRkaXIvY29uZnRlc3QudG1wCisgICAgICBjZCAkYXhfZW5hYmxlX2J1aWxkZGlyCisgICAgICBpZiBncmVwIF9fLiRheF9lbmFibGVfYnVpbGRkaXIuX18gY29uZnRlc3QudG1wID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHJtIGNvbmZ0ZXN0LnRtcAorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogY29udGludWUgY29uZmlndXJlIGluIGRlZmF1bHQgYnVpbGRkaXIgXCIuLyRheF9lbmFibGVfYnVpbGRkaXJcIiIgPiY1CiskYXNfZWNobyAiY29udGludWUgY29uZmlndXJlIGluIGRlZmF1bHQgYnVpbGRkaXIgXCIuLyRheF9lbmFibGVfYnVpbGRkaXJcIiIgPiY2OyB9CisgICAgICBlbHNlCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY2hhbmdlIHRvIGRlZmF1bHQgYnVpbGRkaXIgXCIuLyRheF9lbmFibGVfYnVpbGRkaXJcIiIgIiRMSU5FTk8iIDUKKyAgICAgIGZpCisgICAgICBzcmNkaXI9YGVjaG8gIiRheF9lbmFibGVfYnVpbGRkaXIiIHwKKyAgICAgICAgICAgICAgc2VkIC1lICdzLF5cLi8sLDtzLFteL10kLCYvLDtzLFteL10qLywuLi8sZztzLFsvXSQsLDsnYAorICAgICAgIyBnb2luZyB0byByZXN0YXJ0IGZyb20gc3ViZGlyZWN0b3J5IGxvY2F0aW9uCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLmxvZyAgICYmIG12ICRzcmNkaXIvY29uZmlnLmxvZyAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mZGVmcy5oICAgJiYgbXYgJHNyY2Rpci9jb25mZGVmcy5oICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAmJiBtdiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvJGNhY2hlX2ZpbGUgICYmIG12ICRzcmNkaXIvJGNhY2hlX2ZpbGUgIC4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAuLi4uZXhlYyAkU0hFTEwgJHNyY2Rpci8kMCBcIi0tc3JjZGlyPSRzcmNkaXJcIiBcIi0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXJcIiAkezErXCIkQFwifSIgPiY1CiskYXNfZWNobyAiLi4uLmV4ZWMgJFNIRUxMICRzcmNkaXIvJDAgXCItLXNyY2Rpcj0kc3JjZGlyXCIgXCItLWVuYWJsZS1idWlsZGRpcj0kYXhfZW5hYmxlX2J1aWxkZGlyXCIgJHsxK1wiJEBcIn0iID4mNjsgfQorICAgICAgY2FzZSAiJDAiIGluICMgcmVzdGFydAorICAgICAgIC9cXCopIGV2YWwgJFNIRUxMICInJDAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgICAqKSBldmFsICRTSEVMTCAiJyRzcmNkaXIvJDAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgIGVzYWMgOyBleGl0ICQ/CisgICAgZmkKKyAgZmkKK2ZpIGZpCit0ZXN0ICIuJGF4X2VuYWJsZV9idWlsZGRpciIgPSAiLmF1dG8iICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ3NlZCBzZWQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdzZWQgc2VkOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkIiAmJiBhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9InNlZCIKKyAgOzsKK2VzYWMKK2ZpCitheF9lbmFibGVfYnVpbGRkaXJfc2VkPSRhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQKK2lmIHRlc3QgLW4gIiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiID4mNQorJGFzX2VjaG8gIiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXI9IiRhbV9hdXhfZGlyIgorYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIGJ1aWxkaXIiCisKKwogYW1fX2FwaV92ZXJzaW9uPScxLjExJwogCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKQEAgLTI3MjMsNyArMjc4Miw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQogaWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCi1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfaW5zdGFsbCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTI4MTAsMTEgKzI4NjksMTEgQEAKICcKIGNhc2UgYHB3ZGAgaW4KICAgKltcXFwiXCNcJFwmXCdcYCRhbV9sZl0qKQotICAgIGFzX2ZuX2Vycm9yICJ1bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZSIgIiRMSU5FTk8iIDU7OworICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bnNhZmUgYWJzb2x1dGUgd29ya2luZyBkaXJlY3RvcnkgbmFtZSIgIiRMSU5FTk8iIDU7OwogZXNhYwogY2FzZSAkc3JjZGlyIGluCiAgICpbXFxcIlwjXCRcJlwnXGAkYW1fbGZcIFwJXSopCi0gICAgYXNfZm5fZXJyb3IgInVuc2FmZSBzcmNkaXIgdmFsdWU6IFxgJHNyY2RpciciICIkTElORU5PIiA1OzsKKyAgICBhc19mbl9lcnJvciAkPyAidW5zYWZlIHNyY2RpciB2YWx1ZTogXGAkc3JjZGlyJyIgIiRMSU5FTk8iIDU7OwogZXNhYwogCiAjIERvIGBzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzCkBAIC0yODM2LDcgKzI4OTUsNyBAQAogICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQogICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQogICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQgInNhbmUiLgotICAgICAgYXNfZm5fZXJyb3IgImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuCiBhbGlhcyBpbiB5b3VyIGVudmlyb25tZW50IiAiJExJTkVOTyIgNQogICAgZmkKIApAQCAtMjg0Niw3ICsyOTA1LDcgQEAKICAgICMgT2suCiAgICA6CiBlbHNlCi0gICBhc19mbl9lcnJvciAibmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCisgICBhc19mbl9lcnJvciAkPyAibmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCiBDaGVjayB5b3VyIHN5c3RlbSBjbG9jayIgIiRMSU5FTk8iIDUKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKQEAgLTI4NjEsOSArMjkyMCw2IEBACiBhY19zY3JpcHQ9J3MvW1xcJF0vJiYvZztzLztzLHgseCwkLy8nCiBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lPWAkYXNfZWNobyAiJHByb2dyYW1fdHJhbnNmb3JtX25hbWUiIHwgc2VkICIkYWNfc2NyaXB0ImAKIAotIyBleHBhbmQgJGFjX2F1eF9kaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAotYW1fYXV4X2Rpcj1gY2QgJGFjX2F1eF9kaXIgJiYgcHdkYAotCiBpZiB0ZXN0IHgiJHtNSVNTSU5HK3NldH0iICE9IHhzZXQ7IHRoZW4KICAgY2FzZSAkYW1fYXV4X2RpciBpbgogICAqXCAqIHwgKlwJKikKQEAgLTI5MDAsNyArMjk1Niw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgpAQCAtMjk0MCw3ICsyOTk2LDcgQEAKIHNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgpAQCAtMjk5Myw3ICszMDQ5LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAuLi4gIiA+JjY7IH0KIGlmIHRlc3QgLXogIiRNS0RJUl9QIjsgdGhlbgotICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfbWtkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBpZiAke2FjX2N2X3BhdGhfbWtkaXIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0zMDQ0LDcgKzMxMDAsNyBAQAogc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BV0src2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0FXSys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRBV0siOyB0aGVuCkBAIC0zMDg0LDcgKzMxNDAsNyBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAiID4mNjsgfQogc2V0IHggJHtNQUtFLW1ha2V9CiBhY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKLWlmIHsgYXNfdmFyPWFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldDsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwke2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCA+Y29uZnRlc3QubWFrZSA8PFxfQUNFT0YKQEAgLTMwOTIsNyArMzE0OCw3IEBACiBhbGw6CiAJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUlJScKIF9BQ0VPRgotIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZy4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCisjIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5nIC4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCiBjYXNlIGAke01BS0UtbWFrZX0gLWYgY29uZnRlc3QubWFrZSAyPi9kZXYvbnVsbGAgaW4KICAgKkBAQCUlJT0/Kj1AQEAlJSUqKQogICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllczs7CkBAIC0zMTI2LDcgKzMxODIsNyBAQAogICBhbV9faXNyYz0nIC1JJChzcmNkaXIpJwogICAjIHRlc3QgdG8gc2VlIGlmIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQKICAgaWYgdGVzdCAtZiAkc3JjZGlyL2NvbmZpZy5zdGF0dXM7IHRoZW4KLSAgICBhc19mbl9lcnJvciAic291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biBcIm1ha2UgZGlzdGNsZWFuXCIgdGhlcmUgZmlyc3QiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gInNvdXJjZSBkaXJlY3RvcnkgYWxyZWFkeSBjb25maWd1cmVkOyBydW4gXCJtYWtlIGRpc3RjbGVhblwiIHRoZXJlIGZpcnN0IiAiJExJTkVOTyIgNQogICBmaQogZmkKIApAQCAtMzE0Miw3ICszMTk4LDcgQEAKIAogIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLgogIFBBQ0tBR0U9J2xpYmZmaScKLSBWRVJTSU9OPSczLjAuMTByYzAnCisgVkVSU0lPTj0nMy4wLjExJwogCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKQEAgLTMxNzIsMTEgKzMyMjgsMTEgQEAKIAogIyBXZSBuZWVkIGF3ayBmb3IgdGhlICJjaGVjayIgdGFyZ2V0LiAgVGhlIHN5c3RlbSAiYXdrIiBpcyBiYWQgb24KICMgc29tZSBwbGF0Zm9ybXMuCi0jIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICBZZXMsIGl0J3Mgc3RpbGwgdXNlZAorIyBpbiB0aGUgd2lsZCA6LSggIFdlIHNob3VsZCBmaW5kIGEgcHJvcGVyIHdheSB0byBkZXByZWNhdGUgaXQgLi4uCitBTVRBUj0nJCR7VEFSLXRhcn0nCiAKLUFNVEFSPSR7QU1UQVItIiR7YW1fbWlzc2luZ19ydW59dGFyIn0KLQotYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtICIkJHRhcmRpciInOyBhbV9fdW50YXI9JyR7QU1UQVJ9IHhmIC0nCithbV9fdGFyPSckJHtUQVItdGFyfSBjaG9mIC0gIiQkdGFyZGlyIicgYW1fX3VudGFyPSckJHtUQVItdGFyfSB4ZiAtJwogCiAKIApAQCAtMzE4Nyw5ICszMjQzLDEyIEBACiAjIFdlIG11c3QgZm9yY2UgQ0MgdG8gL25vdC8gYmUgcHJlY2lvdXMgdmFyaWFibGVzOyBvdGhlcndpc2UKICMgdGhlIHdyb25nLCBub24tbXVsdGlsaWItYWRqdXN0ZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGluIG11bHRpbGlicy4KICMgQXMgYSBzaWRlIGVmZmVjdCwgd2UgaGF2ZSB0byBzdWJzdCBDRkxBR1Mgb3Vyc2VsdmVzLgorIyBBbHNvIHNhdmUgYW5kIHJlc3RvcmUgQ0ZMQUdTLCBzaW5jZSBBQ19QUk9HX0NDIHdpbGwgY29tZSB1cCB3aXRoCisjIGRlZmF1bHRzIG9mIGl0cyBvd24gaWYgbm9uZSBhcmUgcHJvdmlkZWQuCiAKIAogCitzYXZlX0NGTEFHUz0kQ0ZMQUdTCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTMyMDAsNyArMzI1OSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1nY2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTMyNDAsNyArMzI5OSw3IEBACiBzZXQgZHVtbXkgZ2NjOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9DQytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCkBAIC0zMjkzLDcgKzMzNTIsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTMzMzMsNyArMzM5Miw3IEBACiBzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTMzOTIsNyArMzQ1MSw3IEBACiBzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KQEAgLTM0MzYsNyArMzQ5NSw3IEBACiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KQEAgLTM0OTAsOCArMzU0OSw4IEBACiAKIHRlc3QgLXogIiRDQyIgJiYgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGluIFwkUEFUSAorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIAogIyBQcm92aWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyLgogJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVyc2lvbiIgPiY1CkBAIC0zNjA1LDkgKzM2NjQsOCBAQAogCiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLXsgYXNfZm5fc2V0X3N0YXR1cyA3NwotYXNfZm5fZXJyb3IgIkMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcwotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9OyB9Cithc19mbl9lcnJvciA3NyAiQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKICRhc19lY2hvICJ5ZXMiID4mNjsgfQpAQCAtMzY0OSw4ICszNzA3LDggQEAKIGVsc2UKICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluawotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGZpCiBybSAtZiBjb25mdGVzdCBjb25mdGVzdCRhY19jdl9leGVleHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXhlZXh0IiA+JjUKQEAgLTM3MDcsOSArMzc2NSw5IEBACiAgICAgZWxzZQogCXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgImNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCiBJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgICBmaQogICBmaQogZmkKQEAgLTM3MjAsNyArMzc3OCw3IEBACiBhY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9vYmpleHQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9vYmpleHQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0zNzYwLDggKzM4MTgsOCBAQAogCiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBmaQogcm0gLWYgY29uZnRlc3QuJGFjX2N2X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQpAQCAtMzc3MSw3ICszODI5LDcgQEAKIGFjX29iamV4dD0kT0JKRVhUCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfY19jb21waWxlcl9nbnUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9jX2NvbXBpbGVyX2dudSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTM4MDgsNyArMzg2Niw3IEBACiBhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWciID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2crc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcKQEAgLTM4ODYsNyArMzk0NCw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBhY2NlcHQgSVNPIEM4OS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2NjX2M4OStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfY2NfYzg5Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY3ZfcHJvZ19jY19jODk9bm8KQEAgLTQwMzIsNiArNDA5MCw3IEBACiBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKICAgQU1ERVBCQUNLU0xBU0g9J1wnCisgIGFtX19ub2RlcD0nX25vJwogZmkKICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KICAgQU1ERVBfVFJVRT0KQEAgLTQwNDcsNyArNDEwNiw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YW1fY3ZfQ0NfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4KQEAgLTQwNTYsNiArNDExNSw3IEBACiAgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKICAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgogICBta2RpciBjb25mdGVzdC5kaXIKICAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKICAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KQEAgLTQxMTUsNyArNDE3NSw3IEBACiAJYnJlYWsKICAgICAgIGZpCiAgICAgICA7OwotICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQogICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKICAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAogICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KQEAgLTQxNzAsNiArNDIzMCw3IEBACiBmaQogCiAKK0NGTEFHUz0kc2F2ZV9DRkxBR1MKIAogCiAKQEAgLTQxODYsNyArNDI0Nyw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGVwZW5kZW5jeSBzdHlsZSBvZiAkZGVwY2MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YW1fY3ZfQ0NBU19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FtX2N2X0NDQVNfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkQU1ERVBfVFJVRSIgJiYgdGVzdCAtZiAiJGFtX2RlcGNvbXAiOyB0aGVuCkBAIC00MTk1LDYgKzQyNTYsNyBAQAogICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cAogICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0CiAgICMgaW4gRCcuCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKICAgbWtkaXIgY29uZnRlc3QuZGlyCiAgICMgQ29weSBkZXBjb21wIHRvIHN1YmRpciBiZWNhdXNlIG90aGVyd2lzZSB3ZSB3b24ndCBmaW5kIGl0IGlmIHdlJ3JlCiAgICMgdXNpbmcgYSByZWxhdGl2ZSBkaXJlY3RvcnkuCkBAIC00MjUyLDcgKzQzMTQsNyBAQAogCWJyZWFrCiAgICAgICBmaQogICAgICAgOzsKLSAgICBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgIG1zdmM3IHwgbXN2Yzdtc3lzIHwgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKICAgICAgICMgVGhpcyBjb21waWxlciB3b24ndCBncm9rIGAtYyAtbycsIGJ1dCBhbHNvLCB0aGUgbWludXNvIHRlc3QgaGFzCiAgICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQKICAgICAgICMgc28gd2VhayB0aGF0IHRoZWlyIGZ1bmN0aW9uaW5nIHNob3VsZCBub3QgYmUgaW1wYWN0ZWQuCkBAIC00MzE2LDcgKzQzNzgsNyBAQAogZmkKIHNldCBkdW1teSAkQ0M7IGFjX2NjPWAkYXNfZWNobyAiJDIiIHwKIAkJICAgICAgc2VkICdzL1teYS16QS1aMC05X10vXy9nO3MvXlswLTldL18vJ2AKLWlmIHsgYXNfdmFyPWFjX2N2X3Byb2dfY2NfJHthY19jY31fY19vOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19jY18ke2FjX2NjfV9jX28rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC00NDQxLDggKzQ1MDMsOCBAQAogCiAKIAotbWFjcm9fdmVyc2lvbj0nMi4yLjYnCi1tYWNyb19yZXZpc2lvbj0nMS4zMDEyJworbWFjcm9fdmVyc2lvbj0nMi40LjInCittYWNyb19yZXZpc2lvbj0nMS4zMzM3JwogCiAKIApAQCAtNDQ1OCw5ICs0NTIwLDc4IEBACiAKIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogCisjIEJhY2tzbGFzaGlmeSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluCisjIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQorIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgorZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KK2RlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCisKK0VDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgoraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludCAtciAtLScKK2VsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50ZiAlc1xuJworZWxzZQorICAjIFVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZmFsbGJhY2sgdGhhdCBhbHdheXMgd29ya3MuCisgIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorICB7CisgICAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyQxCitfTFRFQ0hPX0VPRicKKyAgfQorICBFQ0hPPSdmdW5jX2ZhbGxiYWNrX2VjaG8nCitmaQorCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiIKK30KKworY2FzZSAiJEVDSE8iIGluCisgIHByaW50ZiopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBwcmludGYiID4mNQorJGFzX2VjaG8gInByaW50ZiIgPiY2OyB9IDs7CisgIHByaW50KikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHByaW50IC1yIiA+JjUKKyRhc19lY2hvICJwcmludCAtciIgPiY2OyB9IDs7CisgICopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBjYXQiID4mNQorJGFzX2VjaG8gImNhdCIgPiY2OyB9IDs7Citlc2FjCisKKworCisKKworCisKKworCisKKworCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfU0VEK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLwpAQCAtNDUxNSw3ICs0NjQ2LDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX1NFRD0kU0VECkBAIC00NTQyLDcgKzQ2NzMsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9HUkVQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9HUkVQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAteiAiJEdSRVAiOyB0aGVuCkBAIC00NTkxLDcgKzQ3MjIsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0dSRVAiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfR1JFUD0kR1JFUApAQCAtNDYwNSw3ICs0NzM2LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfRUdSRVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX0VHUkVQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgZWNobyBhIHwgJEdSRVAgLUUgJyhhfGIpJyA+L2Rldi9udWxsIDI+JjEKQEAgLTQ2NTcsNyArNDc4OCw3IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKICAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfRUdSRVAiOyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKICAgZmkKIGVsc2UKICAgYWNfY3ZfcGF0aF9FR1JFUD0kRUdSRVAKQEAgLTQ2NzIsNyArNDgwMyw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZncmVwIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBmZ3JlcC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wYXRoX0ZHUkVQK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9GR1JFUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIGVjaG8gJ2FiKmMnIHwgJEdSRVAgLUYgJ2FiKmMnID4vZGV2L251bGwgMj4mMQpAQCAtNDcyNCw3ICs0ODU1LDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9GR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBmZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZmdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX0ZHUkVQPSRGR1JFUApAQCAtNDgwMyw3ICs0OTM0LDcgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igbm9uLUdOVSBsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igbm9uLUdOVSBsZC4uLiAiID4mNjsgfQogZmkKLWlmIHRlc3QgIiR7bHRfY3ZfcGF0aF9MRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTEQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCkBAIC00ODQwLDEwICs0OTcxLDEwIEBACiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKLXRlc3QgLXogIiRMRCIgJiYgYXNfZm5fZXJyb3IgIm5vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQordGVzdCAteiAiJExEIiAmJiBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfZ251X2xkK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19nbnVfbGQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiBoZXJlLCBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZHMgb25seSBhY2NlcHQgLXYuCkBAIC00ODcwLDcgKzUwMDEsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIgKG5tKSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgQlNELSBvciBNUy1jb21wYXRpYmxlIG5hbWUgbGlzdGVyIChubSkuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcGF0aF9OTStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTk0rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkTk0iOyB0aGVuCkBAIC00OTIzLDE0ICs1MDU0LDE3IEBACiAgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKIGVsc2UKICAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCi0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgZm9yIGFjX3Byb2cgaW4gImR1bXBiaW4gLXN5bWJvbHMiICJsaW5rIC1kdW1wIC1zeW1ib2xzIgorICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4gOgorICAgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBlbHNlCisgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBkdW1wYmluICJsaW5rIC1kdW1wIgogICBkbwogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19EVU1QQklOK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19EVU1QQklOKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuCkBAIC00OTY4LDEzICs1MTAyLDEzIEBACiBmaQogaWYgdGVzdCAteiAiJERVTVBCSU4iOyB0aGVuCiAgIGFjX2N0X0RVTVBCSU49JERVTVBCSU4KLSAgZm9yIGFjX3Byb2cgaW4gImR1bXBiaW4gLXN5bWJvbHMiICJsaW5rIC1kdW1wIC1zeW1ib2xzIgorICBmb3IgYWNfcHJvZyBpbiBkdW1wYmluICJsaW5rIC1kdW1wIgogZG8KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RVTVBCSU4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0RVTVBCSU4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfRFVNUEJJTiI7IHRoZW4KQEAgLTUwMjMsNiArNTE1NywxNSBAQAogICBmaQogZmkKIAorICAgIGNhc2UgYCREVU1QQklOIC1zeW1ib2xzIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCisgICAgKkNPRkYqKQorICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMiCisgICAgICA7OworICAgICopCisgICAgICBEVU1QQklOPToKKyAgICAgIDs7CisgICAgZXNhYworICBmaQogCiAgIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KICAgICBOTT0iJERVTVBCSU4iCkBAIC01MDM3LDE4ICs1MTgwLDE4IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X25tX2ludGVyZmFjZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X25tX2ludGVyZmFjZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X25tX2ludGVyZmFjZT0iQlNEIG5tIgogICBlY2hvICJpbnQgc29tZV92YXJpYWJsZSA9IDA7IiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjUwNDU6ICRhY19jb21waWxlXCIiID4mNSkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRhY19jb21waWxlXCIiID4mNSkKICAgKGV2YWwgIiRhY19jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjUwNDg6ICROTSBcXFwiY29uZnRlc3QuJGFjX29iamV4dFxcXCJcIiIgPiY1KQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JjUpCiAgIChldmFsICIkTk0gXCJjb25mdGVzdC4kYWNfb2JqZXh0XCIiIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0KQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6NTA1MTogb3V0cHV0XCIiID4mNSkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86IG91dHB1dFwiIiA+JjUpCiAgIGNhdCBjb25mdGVzdC5vdXQgPiY1CiAgIGlmICRHUkVQICdFeHRlcm5hbC4qc29tZV92YXJpYWJsZScgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJNUyBkdW1wYmluIgpAQCAtNTA3Miw3ICs1MjE1LDcgQEAKICMgZmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbWF4X2NtZF9sZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9zeXNfbWF4X2NtZF9sZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgIGk9MApAQCAtNTEwNSw2ICs1MjQ4LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAorICBtaW50KikKKyAgICAjIE9uIE1pTlQgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgcnVuIG91dCBvZiBtZW1vcnkuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKwogICBhbWlnYW9zKikKICAgICAjIE9uIEFtaWdhT1Mgd2l0aCBwZGtzaCwgdGhpcyB0ZXN0IHRha2VzIGhvdXJzLCBsaXRlcmFsbHkuCiAgICAgIyBTbyB3ZSBqdXN0IHB1bnQgYW5kIHVzZSBhIG1pbmltdW0gbGluZSBsZW5ndGggb2YgODE5Mi4KQEAgLTUxMzAsNiArNTI3OCwxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xOTY2MDgKICAgICA7OwogCisgIG9zMiopCisgICAgIyBUaGUgdGVzdCB0YWtlcyBhIGxvbmcgdGltZSBvbiBPUy8yLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyCisgICAgOzsKKwogICBvc2YqKQogICAgICMgRHIuIEhhbnMgRWtrZWhhcmQgUGxlc3NlciByZXBvcnRzIHNlZWluZyBhIGtlcm5lbCBwYW5pYyBydW5uaW5nIGNvbmZpZ3VyZQogICAgICMgZHVlIHRvIHRoaXMgdGVzdCB3aGVuIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXQgaXMgMSBvbiBUcnU2NC4gSXQgaXMgbm90CkBAIC01MTY5LDggKzUzMjIsOCBAQAogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYCRTSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAotCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisgICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorCSAgICAgICAgID0gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKIAkgICAgICB0ZXN0ICRpICE9IDE3ICMgMS8yIE1CIHNob3VsZCBiZSBlbm91Z2gKICAgICAgIGRvCiAgICAgICAgIGk9YGV4cHIgJGkgKyAxYApAQCAtNTIxMiw4ICs1MzY1LDggQEAKICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiB4c2lfc2hlbGw9bm8KICggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsLCBcCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLGIvYywgXAogICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAmJiB4c2lfc2hlbGw9eWVzCkBAIC01MjYyLDkgKzU0MTUsODMgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKi0qLWN5Z3dpbiogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgIDs7Citlc2FjCisKK2ZpCisKK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CitpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCitsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKK2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworZXNhYworCitmaQorCit0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKworCisKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfbGRfcmVsb2FkX2ZsYWc9Jy1yJwpAQCAtNTI3OCw2ICs1NTA1LDExIEBACiBlc2FjCiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisgICAgZmkKKyAgICA7OwogICBkYXJ3aW4qKQogICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCkBAIC01MzAwLDcgKzU1MzIsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b2JqZHVtcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfT0JKRFVNUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfT0JKRFVNUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRPQkpEVU1QIjsgdGhlbgpAQCAtNTM0MCw3ICs1NTcyLDcgQEAKIHNldCBkdW1teSBvYmpkdW1wOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PQkpEVU1QK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PQkpEVU1QKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X09CSkRVTVAiOyB0aGVuCkBAIC01Mzk5LDcgKzU2MzEsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byByZWNvZ25pemUgZGVwZW5kZW50IGxpYnJhcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcmVjb2duaXplIGRlcGVuZGVudCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJwpAQCAtNTQ0MSwxNiArNTY3MywxOCBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCisgIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgIGZpCiAgIDs7CiAKLWNlZ2NjKQorY2VnY2MqKQogICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JwogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCkBAIC01NDgwLDYgKzU3MTQsMTAgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAoraGFpa3UqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCiBocHV4MTAuMjAqIHwgaHB1eDExKikKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQogICBjYXNlICRob3N0X2NwdSBpbgpAQCAtNTQ4OCwxMSArNTcyNiwxMSBAQAogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2hwdXgzMi9saWJjLnNvCiAgICAgOzsKICAgaHBwYSo2NCopCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGWyAtXVswLTldWzAtOV0pKC1iaXQpPyggW0xNXVNCKT8gc2hhcmVkIG9iamVjdCggZmlsZSk/WywgLV0qIFBBLVJJU0MgWzAtOV1cLlswLTldJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAogICAgIDs7CiAgICopCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18UEEtUklTQ1swLTldLlswLTldKSBzaGFyZWQgbGlicmFyeScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxQQS1SSVNDWzAtOV1cLlswLTldKSBzaGFyZWQgbGlicmFyeScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAgICAgOzsKICAgZXNhYwpAQCAtNTUxMywxMiArNTc1MSwxMiBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQorIyBUaGlzIG11c3QgYmUgZ2xpYmMvRUxGLgorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi1uZXRic2QqKQorbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwogICBlbHNlCkBAIC01NTk1LDYgKzU4MzMsMjEgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorCitmaWxlX21hZ2ljX2dsb2I9Cit3YW50X25vY2FzZWdsb2I9bm8KK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgbWluZ3cqIHwgcHczMiopCisgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworICAgIGVsc2UKKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisgICAgZmkKKyAgICA7OworICBlc2FjCitmaQorCiBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCkBAIC01NjEwLDEyICs1ODYzLDE2NiBAQAogCiAKIAorCisKKworCisKKworCisKKworCiBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAoraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CiskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAoraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKyAgICBETExUT09MPSJmYWxzZSIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisgIGZpCitlbHNlCisgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCitmaQorCit0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisKKworCisKKworCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorICAqLS1pZGVudGlmeS1zdHJpY3QqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorICAgIDs7CisgICopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisgICAgOzsKKyAgZXNhYworICA7OworKikKKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKyAgOzsKK2VzYWMKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9CitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKworCisKKworCisKKworCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGFyCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJEFSIjsgdGhlbgpAQCAtNTYyOCw3ICs2MDM1LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTY0OCwxNCArNjA1NSwxOCBAQAogZmkKIAogCisgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICBkb25lCiBmaQotaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCitpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCiAgIGFjX2N0X0FSPSRBUgotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorICBmb3IgYWNfcHJvZyBpbiBhcgorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KQEAgLTU2NjgsNyArNjA3OSw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01Njg3LDYgKzYwOTgsMTAgQEAKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisKKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworZG9uZQorCiAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgIEFSPSJmYWxzZSIKICAgZWxzZQpAQCAtNTY5OCwxMiArNjExMywxMCBAQAogZXNhYwogICAgIEFSPSRhY19jdF9BUgogICBmaQotZWxzZQotICBBUj0iJGFjX2N2X3Byb2dfQVIiCiBmaQogCi10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorOiAke0FSPWFyfQorOiAke0FSX0ZMQUdTPWNydX0KIAogCiAKQEAgLTU3MTUsMTIgKzYxMjgsNzAgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CiskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorCitpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KK2Vsc2UKKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCitmaQorCisKKworCisKKworCiBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgpAQCAtNTc2MCw3ICs2MjMxLDcgQEAKIHNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1NUUklQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhlbgpAQCAtNTgxOSw3ICs2MjkwLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19SQU5MSUIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgpAQCAtNTg1OSw3ICs2MzMwLDcgQEAKIHNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfUkFOTElCKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4KQEAgLTU5MjEsMTUgKzYzOTIsMjcgQEAKIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgb3BlbmJzZCopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJG9sZGxpYiIKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCR0b29sX29sZGxpYiIKICAgICA7OwogICBlc2FjCi0gIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogZmkKIAorY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj15ZXMgOzsKKyAgKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249bm8gOzsKK2VzYWMKKworCisKKworCisKIAogCiAKQEAgLTU5NzYsNyArNjQ1OSw3IEBACiAjIENoZWNrIGZvciBjb21tYW5kIHRvIGdyYWIgdGhlIHJhdyBzeW1ib2wgbmFtZSBmb2xsb3dlZCBieSBDIHN5bWJvbCBmcm9tIG5tLgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBjb21tYW5kIHRvIHBhcnNlICROTSBvdXRwdXQgZnJvbSAkY29tcGlsZXIgb2JqZWN0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGNvbW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dCBmcm9tICRjb21waWxlciBvYmplY3QuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCkBAIC02MDM3LDggKzY1MjAsOCBAQAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKIAogIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtNjA2Miw2ICs2NTQ1LDcgQEAKICAgICAjIHdoaWNoIHN0YXJ0IHdpdGggQCBvciA/LgogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRBV0sgJyJcCiAiICAgICB7bGFzdF9zZWN0aW9uPXNlY3Rpb247IHNlY3Rpb249XCQgM307IlwKKyIgICAgIC9eQ09GRiBTWU1CT0wgVEFCTEUve2ZvcihpIGluIGhpZGUpIGRlbGV0ZSBoaWRlW2ldfTsiXAogIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCiAiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAogIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXApAQCAtNjA3NCw2ICs2NTU4LDcgQEAKICAgZWxzZQogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgIGZpCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKIAogICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgcGlwZV93b3Jrcz1ubwpAQCAtNjA5OSw4ICs2NTg0LDggQEAKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgogICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgogICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCi0gICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJG5saXN0XCIiOyB9ID4mNQotICAoZXZhbCAkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpIDI+JjUKKyAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIFw+ICRubGlzdFwiIjsgfSA+JjUKKyAgKGV2YWwgJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3QpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KQEAgLTYxMTUsNiArNjYwMCwxOCBAQAogICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC02MTI2LDcgKzY2MjMsNyBAQAogCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLWNvbnN0IHN0cnVjdCB7CitMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICAgICAgICphZGRyZXNzOwogfQpAQCAtNjE1Miw4ICs2NjQ5LDggQEAKIF9MVF9FT0YKIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKQEAgLTYxNjMsOCArNjY2MCw4IEBACiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogCSAgICBwaXBlX3dvcmtzPXllcwogCSAgZmkKLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKIAllbHNlCiAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKIAlmaQpAQCAtNjIwMSw2ICs2Njk4LDEyIEBACiAkYXNfZWNobyAib2siID4mNjsgfQogZmkKIAorIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCitpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitmaQogCiAKIApAQCAtNjIyMyw2ICs2NzI2LDQ4IEBACiAKIAogCisKKworCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLXN5c3Jvb3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX3N5c3Jvb3Q7CitlbHNlCisgIHdpdGhfc3lzcm9vdD1ubworZmkKKworCitsdF9zeXNyb290PQorY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKKyB5ZXMpCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorICAgZmkKKyAgIDs7ICMoCisgLyopCisgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICA7OyAjKAorIG5vfCcnKQorICAgOzsgIygKKyAqKQorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9zeXNyb290fSIgPiY1CiskYXNfZWNobyAiJHt3aXRoX3N5c3Jvb3R9IiA+JjY7IH0KKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorICAgOzsKK2VzYWMKKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorCisKKworCisKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOwpAQCAtNjI1NCw3ICs2Nzk5LDcgQEAKICAgOzsKICotKi1pcml4NiopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnI2xpbmUgNjI1NyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGVjaG8gJyNsaW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KQEAgLTYzNDgsNyArNjg5Myw3IEBACiAgIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIG5lZWRzIC1iZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfY2NfbmVlZHNfYmVsZitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2NjX25lZWRzX2JlbGYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19leHQ9YwpAQCAtNjM4OSw3ICs2OTM0LDcgQEAKICAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKICAgZmkKICAgOzsKLXNwYXJjKi0qc29sYXJpcyopCisqLSpzb2xhcmlzKikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKQEAgLTY0MDAsNyArNjk0NSwyMCBAQAogICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KICAgICAqNjQtYml0KikKICAgICAgIGNhc2UgJGx0X2N2X3Byb2dfZ251X2xkIGluCi0gICAgICB5ZXMqKSBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiIDs7CisgICAgICB5ZXMqKQorICAgICAgICBjYXNlICRob3N0IGluCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKKyAgICAgICAgICA7OworICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKKyAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICAjIEdOVSBsZCAyLjIxIGludHJvZHVjZWQgX3NvbDIgZW11bGF0aW9ucy4gIFVzZSB0aGVtIGlmIGF2YWlsYWJsZS4KKyAgICAgICAgaWYgJHtMRC1sZH0gLVYgfCBncmVwIF9zb2wyID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIExEPSIke0xELWxkfV9zb2wyIgorICAgICAgICBmaQorICAgICAgICA7OwogICAgICAgKikKIAlpZiAke0xELWxkfSAtNjQgLXIgLW8gY29uZnRlc3QyLm8gY29uZnRlc3QubyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KIAkgIExEPSIke0xELWxkfSAtNjQiCkBAIC02NDE2LDYgKzY5NzQsMTIzIEBACiAKIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IG10OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisgICAgTUFOSUZFU1RfVE9PTD0iOiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisgIGZpCitlbHNlCisgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCitmaQorCit0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QqCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQoraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKyAgTUFOSUZFU1RfVE9PTD06CitmaQorCisKKworCisKIAogICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKQEAgLTY0MjQsNyArNzA5OSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kc3ltdXRpbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfRFNZTVVUSUwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0RTWU1VVElMKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJERTWU1VVElMIjsgdGhlbgpAQCAtNjQ2NCw3ICs3MTM5LDcgQEAKIHNldCBkdW1teSBkc3ltdXRpbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRFNZTVVUSUwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0RTWU1VVElMKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0RTWU1VVElMIjsgdGhlbgpAQCAtNjUxNiw3ICs3MTkxLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW5tZWRpdDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfTk1FRElUK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19OTUVESVQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkTk1FRElUIjsgdGhlbgpAQCAtNjU1Niw3ICs3MjMxLDcgQEAKIHNldCBkdW1teSBubWVkaXQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X05NRURJVCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfTk1FRElUKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X05NRURJVCI7IHRoZW4KQEAgLTY2MDgsNyArNzI4Myw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1saXBvOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19MSVBPK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19MSVBPKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJExJUE8iOyB0aGVuCkBAIC02NjQ4LDcgKzczMjMsNyBAQAogc2V0IGR1bW15IGxpcG87IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0xJUE8rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0xJUE8rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfTElQTyI7IHRoZW4KQEAgLTY3MDAsNyArNzM3NSw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vdG9vbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfT1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX09UT09MKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE9UT09MIjsgdGhlbgpAQCAtNjc0MCw3ICs3NDE1LDcgQEAKIHNldCBkdW1teSBvdG9vbDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X09UT09MKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X09UT09MIjsgdGhlbgpAQCAtNjc5Miw3ICs3NDY3LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW90b29sNjQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX09UT09MNjQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX09UT09MNjQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkT1RPT0w2NCI7IHRoZW4KQEAgLTY4MzIsNyArNzUwNyw3IEBACiBzZXQgZHVtbXkgb3Rvb2w2NDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0w2NCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0w2NCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9PVE9PTDY0IjsgdGhlbgpAQCAtNjkwNyw3ICs3NTgyLDcgQEAKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1zaW5nbGVfbW9kdWxlIGxpbmtlciBmbGFnIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtc2luZ2xlX21vZHVsZSBsaW5rZXIgZmxhZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KQEAgLTY5MjMsNyArNzU5OCwxMyBAQAogCSRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCiAJICAtZHluYW1pY2xpYiAtV2wsLXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYyAyPmNvbmZ0ZXN0LmVycgogICAgICAgICBfbHRfcmVzdWx0PSQ/Ci0JaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwOyB0aGVuCisJIyBJZiB0aGVyZSBpcyBhIG5vbi1lbXB0eSBlcnJvciBsb2csIGFuZCAic2luZ2xlX21vZHVsZSIKKwkjIGFwcGVhcnMgaW4gaXQsIGFzc3VtZSB0aGUgZmxhZyBjYXVzZWQgYSBsaW5rZXIgd2FybmluZworICAgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBzaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmVycjsgdGhlbgorCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKwkjIE90aGVyd2lzZSwgaWYgdGhlIG91dHB1dCB3YXMgY3JlYXRlZCB3aXRoIGEgMCBleGl0IGNvZGUgZnJvbQorCSMgdGhlIGNvbXBpbGVyLCBpdCB3b3JrZWQuCisJZWxpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDA7IHRoZW4KIAkgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9eWVzCiAJZWxzZQogCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKQEAgLTY5MzQsOSArNzYxNSwxMCBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiID4mNjsgfQorCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm8KQEAgLTY5NjYsNiArNzY0OCw0MSBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IiA+JjUKICRhc19lY2hvICIkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IiA+JjY7IH0KKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtZm9yY2VfbG9hZCBsaW5rZXIgZmxhZy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9sZF9mb3JjZV9sb2FkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfbGRfZm9yY2VfbG9hZD1ubworICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgZm9yY2VkX2xvYWRlZCgpIHsgcmV0dXJuIDI7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyIgPiY1CisgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSIgPiY1CisgICAgICAkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIDI+Y29uZnRlc3QuZXJyCisgICAgICBfbHRfcmVzdWx0PSQ/CisgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBmb3JjZV9sb2FkIGNvbmZ0ZXN0LmVycjsgdGhlbgorCWNhdCBjb25mdGVzdC5lcnIgPiY1CisgICAgICBlbGlmIHRlc3QgLWYgY29uZnRlc3QgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMCAmJiAkR1JFUCBmb3JjZWRfbG9hZCBjb25mdGVzdCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJbHRfY3ZfbGRfZm9yY2VfbG9hZD15ZXMKKyAgICAgIGVsc2UKKwljYXQgY29uZnRlc3QuZXJyID4mNQorICAgICAgZmkKKyAgICAgICAgcm0gLWYgY29uZnRlc3QuZXJyIGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QgY29uZnRlc3QuYworICAgICAgICBybSAtcmYgY29uZnRlc3QuZFNZTQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9sZF9mb3JjZV9sb2FkIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPiY2OyB9CiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuWzAxMl0pCiAgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CkBAIC02OTkzLDcgKzc3MTAsNyBAQAogICAgIGVsc2UKICAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTcwMTMsNyArNzczMCw3IEBACiAgIENQUD0KIGZpCiBpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgotICBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ1BQK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgaWYgJHthY19jdl9wcm9nX0NQUCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKQEAgLTcwNDMsNyArNzc2MCw3IEBACiAgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KIGNvbnRpbnVlCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgpAQCAtNzA1OSwxMSArNzc3NiwxMSBAQAogYWNfcHJlcHJvY19vaz06CiBicmVhawogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKIGRvbmUKICMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKICAgYnJlYWsKIGZpCkBAIC03MTAyLDcgKzc4MTksNyBAQAogICAjIEJyb2tlbjogZmFpbHMgb24gdmFsaWQgaW5wdXQuCiBjb250aW51ZQogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKICAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKICAgIyBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGhvdy4KQEAgLTcxMTgsMTggKzc4MzUsMTggQEAKIGFjX3ByZXByb2Nfb2s9OgogYnJlYWsKIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogCiBkb25lCiAjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CiBpZiAkYWNfcHJlcHJvY19vazsgdGhlbiA6CiAKIGVsc2UKICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5IGNoZWNrCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBmaQogCiBhY19leHQ9YwpAQCAtNzE0MSw3ICs3ODU4LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2hlYWRlcl9zdGRjKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNzI1OCw4ICs3OTc1LDcgQEAKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQKICIKLWV2YWwgYXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotICAgaWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCiBfQUNFT0YKQEAgLTcyNzMsNyArNzk4OSw3IEBACiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJkbGZjbi5oIiAiYWNfY3ZfaGVhZGVyX2RsZmNuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdAogIgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX0RMRkNOX0ggMQogX0FDRU9GCkBAIC03Mjg0LDYgKzgwMDAsOCBAQAogCiAKIAorCisKICMgU2V0IG9wdGlvbnMKIAogCkBAIC03MzU5LDcgKzgwNzcsMjIgQEAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1waWMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfcGljOyBwaWNfbW9kZT0iJHdpdGh2YWwiCisgIHdpdGh2YWw9JHdpdGhfcGljOyBsdF9wPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJHdpdGh2YWwgaW4KKyAgICB5ZXN8bm8pIHBpY19tb2RlPSR3aXRodmFsIDs7CisgICAgKikKKyAgICAgIHBpY19tb2RlPWRlZmF1bHQKKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIGx0X3BrZyBpbiAkd2l0aHZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgorCSAgcGljX21vZGU9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjCiBlbHNlCiAgIHBpY19tb2RlPWRlZmF1bHQKIGZpCkBAIC03NDM2LDYgKzgxNjksMTEgQEAKIAogCiAKKworCisKKworCiB0ZXN0IC16ICIkTE5fUyIgJiYgTE5fUz0ibG4gLXMiCiAKIApAQCAtNzQ1Nyw3ICs4MTk1LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igb2JqZGlyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBvYmpkaXIuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfb2JqZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfb2JqZGlyKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgcm0gLWYgLmxpYnMgMj4vZGV2L251bGwKQEAgLTc0ODUsMTkgKzgyMjMsNiBAQAogCiAKIAotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgIyBBSVggc29tZXRpbWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3JhbS4gIEZvciBzb21lCkBAIC03NTEwLDIzICs4MjM1LDYgQEAKICAgOzsKIGVzYWMKIAotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQotIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgotZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KLWRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucwotbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCi0KICMgR2xvYmFsIHZhcmlhYmxlczoKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCkBAIC03NTU1LDcgKzgyNjMsNyBAQAogICAgICopIGJyZWFrOzsKICAgZXNhYwogZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCitjY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKIAogCiAjIE9ubHkgcGVyZm9ybSB0aGUgY2hlY2sgZm9yIGZpbGUsIGlmIHRoZSBjaGVjayBtZXRob2QgcmVxdWlyZXMgaXQKQEAgLTc1NjUsNyArODI3Myw3IEBACiAgIGlmIHRlc3QgIiRmaWxlX21hZ2ljX2NtZCIgPSAnJE1BR0lDX0NNRCc7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAke2FjX3Rvb2xfcHJlZml4fWZpbGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX01BR0lDX0NNRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTUFHSUNfQ01EKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2FzZSAkTUFHSUNfQ01EIGluCkBAIC03NjMxLDcgKzgzMzksNyBAQAogICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZmlsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZmlsZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX01BR0lDX0NNRCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3BhdGhfTUFHSUNfQ01EKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2FzZSAkTUFHSUNfQ01EIGluCkBAIC03NzY0LDExICs4NDcyLDE2IEBACiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0KIAogaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtZm5vLWJ1aWx0aW4nCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgIG52Y2MqKQorICAgIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CisgICopCisgICAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtZm5vLWJ1aWx0aW4nIDs7CisgIGVzYWMKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucz1ubwpAQCAtNzc4NCwxNSArODQ5NywxNSBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo3Nzg3OiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo3NzkxOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnM9eWVzCkBAIC03ODIxLDggKzg1MzQsNiBAQAogbHRfcHJvZ19jb21waWxlcl9waWM9CiBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQogCiAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKQEAgLTc4NzAsNiArODU4MSwxMiBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mbm8tY29tbW9uJwogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorICAgICAgOzsKKwogICAgIGhwdXgqKQogICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIDY0LWJpdCBQQSBIUC1VWCwgYnV0IG5vdCBmb3IgMzItYml0CiAgICAgICAjIFBBIEhQLVVYLiAgT24gSUE2NCBIUC1VWCwgUElDIGlzIHRoZSBkZWZhdWx0IGJ1dCB0aGUgcGljIGZsYWcKQEAgLTc5MTIsNiArODYyOSwxNSBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mUElDJwogICAgICAgOzsKICAgICBlc2FjCisKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIG52Y2MqKSAjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVhsaW5rZXIgJworICAgICAgaWYgdGVzdCAtbiAiJGx0X3Byb2dfY29tcGlsZXJfcGljIjsgdGhlbgorICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iLVhjb21waWxlciAkbHRfcHJvZ19jb21waWxlcl9waWMiCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCiAgIGVsc2UKICAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtNzk1Myw3ICs4Njc5LDcgQEAKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctbm9uX3NoYXJlZCcKICAgICAgIDs7CiAKLSAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KICAgICAgIGVjYyopCkBAIC03OTc0LDcgKzg3MDAsMTMgQEAKIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogCTs7Ci0gICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgIG5hZ2ZvciopCisJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisJOzsKKyAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCkBAIC03OTg2LDI1ICs4NzE4LDQwIEBACiAgICAgICAgICMgQWxsIEFscGhhIGNvZGUgaXMgUElDLgogICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLW5vbl9zaGFyZWQnCiAgICAgICAgIDs7Ci0gICAgICB4bCopCi0JIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xIG9uIFBQQworICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSwgMTEuMSBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLXFwaWMnCiAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1xc3RhdGljbGluaycKIAk7OwogICAgICAgKikKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDZXJlc1wgRm9ydHJhbiogfCAqU3VuKkZvcnRyYW4qXCBbMS03XS4qIHwgKlN1bipGb3J0cmFuKlwgOC5bMC0zXSopCisJICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCisJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisJICBsdF9wcm9nX2NvbXBpbGVyX3dsPScnCisJICA7OworCSpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKwkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICcKKwkgIDs7CiAJKlN1blwgQyopCiAJICAjIFN1biBDIDUuOQogCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKIAkgIDs7Ci0JKlN1blwgRiopCi0JICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCi0JICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgICpJbnRlbCpcIFtDRl0qQ29tcGlsZXIqKQorCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctZlBJQycKKwkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctc3RhdGljJworCSAgOzsKKwkqUG9ydGxhbmRcIEdyb3VwKikKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCisJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZwaWMnCiAJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0JICBsdF9wcm9nX2NvbXBpbGVyX3dsPScnCiAJICA7OwogCWVzYWMKIAk7OwpAQCAtODAzNiw3ICs4NzgzLDcgQEAKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAqKQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKQEAgLTgwOTMsMTMgKzg4NDAsMTcgQEAKICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgIDs7CiBlc2FjCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQogCi0KLQotCi0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCiAKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KQEAgLTgxMDcsNyArODg1OCw3IEBACiBpZiB0ZXN0IC1uICIkbHRfcHJvZ19jb21waWxlcl9waWMiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRsdF9wcm9nX2NvbXBpbGVyX3BpYyB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgUElDIGZsYWcgJGx0X3Byb2dfY29tcGlsZXJfcGljIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcz1ubwpAQCAtODEyMywxNSArODg3NCwxNSBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo4MTI2OiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPmNvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo4MTMwOiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3M9eWVzCkBAIC04MTYwLDEzICs4OTExLDE4IEBACiAKIAogCisKKworCisKKwogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogIwogd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wgZXZhbCBsdF90bXBfc3RhdGljX2ZsYWc9XCIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJGx0X3RtcF9zdGF0aWNfZmxhZyB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJGx0X3RtcF9zdGF0aWNfZmxhZyB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3JrcytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3M9bm8KQEAgLTgxNzksNyArODkzNSw3IEBACiAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCiAgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKLSAgICAgICAkRUNITyAiWCRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkRUNITyAiJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gY29uZnRlc3QuZXhwCiAgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzPXllcwpAQCAtODIwOSw3ICs4OTY1LDcgQEAKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLiRhY19vYmpleHQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289bm8KQEAgLTgyMjgsMTYgKzg5ODQsMTYgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbXiBdKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6ODIzMTogJGx0X2NvbXBpbGVcIiIgPiY1KQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mNSkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5vdXQvY29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgb3V0L2NvbmZ0ZXN0LmVyciA+JjUKLSAgIGVjaG8gIiRhc19tZTo4MjM1OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289eWVzCkBAIC04MjY0LDcgKzkwMjAsNyBAQAogCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz1ubwpAQCAtODI4MywxNiArOTAzOSwxNiBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo4Mjg2OiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjgyOTA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz15ZXMKQEAgLTgzNTgsNyArOTExNCw2IEBACiAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICBoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9bm8KICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0KICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KICAgaGFyZGNvZGVfbWludXNfTD1ubwogICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPXVuc3VwcG9ydGVkCkBAIC04NDAyLDEwICs5MTU3LDM5IEBACiAgIG9wZW5ic2QqKQogICAgIHdpdGhfZ251X2xkPW5vCiAgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGdudSopCisgICAgbGlua19hbGxfZGVwbGlicz1ubworICAgIDs7CiAgIGVzYWMKIAogICBsZF9zaGxpYnM9eWVzCisKKyAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCisgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgorICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwogICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKwkjIFRoZSBBSVggcG9ydCBvZiBHTlUgbGQgaGFzIGFsd2F5cyBhc3BpcmVkIHRvIGNvbXBhdGliaWxpdHkKKwkjIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIuICBIb3dldmVyLCBhcyB0aGUgd2FybmluZyBpbiB0aGUgR05VIGxkCisJIyBibG9jayBzYXlzLCB2ZXJzaW9ucyBiZWZvcmUgMi4xOS41KiBjb3VsZG4ndCByZWFsbHkgY3JlYXRlIHdvcmtpbmcKKwkjIHNoYXJlZCBsaWJyYXJpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVyZmFjZSB1c2VkLgorCWNhc2UgYCRMRCAtdiAyPiYxYCBpbgorCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuMTkuNSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi5bMi05XSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgWzMtOV0qKSA7OworCSAgKikKKwkgICAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICAqKQorCWx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCTs7CisgICAgZXNhYworICBmaQorCisgIGlmIHRlc3QgIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSIgPSB5ZXM7IHRoZW4KICAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQogICAgIHdsYXJjPScke3dsfScKIApAQCAtODQyMyw2ICs5MjA3LDcgQEAKICAgICBmaQogICAgIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz1ubwogICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgKkdOVVwgZ29sZCopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsKICAgICAgICpcIFswMV0uKiB8ICpcIDIuWzAtOV0uKiB8ICpcIDIuMTAuKikgOzsgIyBjYXRjaCB2ZXJzaW9ucyA8IDIuMTEKICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCiAgICAgICAqXCAyLjExLjkyLjAuMTJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBNYW5kcmFrZSA4LjIgLi4uCkBAIC04NDM4LDExICs5MjIzLDEyIEBACiAJbGRfc2hsaWJzPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjE5LCBpcyByZXBvcnRlZAogKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCiAqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKLSoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKLSoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGJpbnV0aWxzCisqKiogMi4yMCBvciBhYm92ZSwgb3IgbW9kaWZ5IHlvdXIgUEFUSCBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQuCisqKiogWW91IHdpbGwgdGhlbiBuZWVkIHRvIHJlc3RhcnQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KIAogX0xUX0VPRgogICAgICAgZmkKQEAgLTg0NzgsMTAgKzkyNjQsMTIgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCApIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAogICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwpAQCAtODQ5OSw2ICs5Mjg3LDExIEBACiAgICAgICBmaQogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBsaW5rX2FsbF9kZXBsaWJzPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbMy05XSopCiAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KQEAgLTg1MTQsNyArOTMwNyw3IEBACiAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogICAgICAgOzsKIAotICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSkKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCiAgICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC04NTI0LDE1ICs5MzE3LDE2IEBACiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkRUdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbCBcCiAJICYmIHRlc3QgIiR0bXBfZGlldCIgPSBubwogICAgICAgdGhlbgotCXRtcF9hZGRmbGFnPQorCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJICA7OwotCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKwkJCQkJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtODU0MywxMyArOTMzNywxNyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0KIAkgIHRtcF9zaGFyZWRmbGFnPSctLXNoYXJlZCcgOzsKLQl4bFtjQ10qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwl4bFtjQ10qIHwgYmd4bFtjQ10qIHwgbXBpeGxbY0NdKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKKwludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGNvbXBpbGVyX25lZWRzX29iamVjdD15ZXMKKwkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGNvbXBpbGVyX25lZWRzX29iamVjdD15ZXMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwpAQCAtODU2NSwxNyArOTM2MywxNiBAQAogICAgICAgICBmaQogCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQl4bGYqKQorCXhsZiogfCBiZ2YqIHwgYmd4bGYqIHwgbXBpeGxmKikKIAkgICMgSUJNIFhMIEZvcnRyYW4gMTAuMSBvbiBQUEMgY2Fubm90IGNyZWF0ZSBzaGFyZWQgbGlicyBpdHNlbGYKIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLQkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCiAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCiAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgIGZpCiAJICA7OwogCWVzYWMKQEAgLTg1ODQsMTMgKzkzODEsMTMgQEAKICAgICAgIGZpCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC04NjA4LDggKzk0MDUsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCkBAIC04NjU1LDggKzk0NTIsOCBAQAogCiAgICAgKikKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCkBAIC04Njk2LDggKzk0OTMsMTAgQEAKICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KIAkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisJIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCisJIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQogCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKQEAgLTg3NTksNiArOTU1OCw3IEBACiAJaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCiAJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKIAlmaQorCWxpbmtfYWxsX2RlcGxpYnM9bm8KICAgICAgIGVsc2UKIAkjIG5vdCB1c2luZyBnY2MKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgpAQCAtODc4NCw3ICs5NTg0LDEzIEBACiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50CkBAIC04Nzk3LDI1ICs5NjAzLDMyIEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKIAotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maQorICBsdF9haXhfbGlicGF0aF9zZWQ9JworICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworCSAgL14wLyB7CisJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKwkgICAgICBwCisJICB9CisgICAgICB9JworICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKyAgZmkKKworZmkKKworICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCitmaQogCiAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgogICAgICAgZWxzZQogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTg4MjQsNyArOTYzNywxMyBAQAogCWVsc2UKIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50CkBAIC04ODM3LDMwICs5NjU2LDQyIEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKIAotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maQorICBsdF9haXhfbGlicGF0aF9zZWQ9JworICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworCSAgL14wLyB7CisJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKwkgICAgICBwCisJICB9CisgICAgICB9JworICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKyAgZmkKKworZmkKKworICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCitmaQogCiAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1iZXJub3RvaycKIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tYmVyb2snCi0JICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSckY29udmVuaWVuY2UnCisJICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGVsc2UKKwkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSckY29udmVuaWVuY2UnCisJICBmaQogCSAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9eWVzCiAJICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgogCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJwpAQCAtODg5MiwyMCArOTcyMyw2NCBAQAogICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYCRFQ0hPICJYJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICBjbCopCisJIyBOYXRpdmUgTVNWQworCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisJZmlsZV9saXN0X3NwZWM9J0AnCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGVsc2UKKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGZpfgorCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgbGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKwlleGNsdWRlX2V4cHN5bXM9J19OVUxMX0lNUE9SVF9ERVNDUklQVE9SfF9JTVBPUlRfREVTQ1JJUFRPUl8uKicKKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisJIyBEb24ndCB1c2UgcmFubGliCisJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisJICAgICouZXhlfCouRVhFKSA7OworCSAgICAqKQorCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorCSAgICAgIDs7CisJICBlc2FjfgorCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisJICBmaScKKwk7OworICAgICAgKikKKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQpAQCAtODkxNSw3ICs5NzkwLDEyIEBACiAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICBoYXJkY29kZV9hdXRvbWF0aWM9eWVzCiAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKLSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JycKKyAgaWYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gInllcyI7IHRoZW4KKyAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisKKyAgZWxzZQorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScnCisgIGZpCiAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCiAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC04OTIzLDcgKzk4MDMsNyBAQAogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCiAgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogICAgIGFyY2hpdmVfY21kcz0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKICAgICBtb2R1bGVfY21kcz0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgogICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKQEAgLTg5NDEsMTAgKzk4MjEsNiBAQAogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwogICAgICAgOzsKIAotICAgIGZyZWVic2QxKikKLSAgICAgIGxkX3NobGlicz1ubwotICAgICAgOzsKLQogICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgogICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwogICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQpAQCAtODk1Nyw3ICs5ODMzLDcgQEAKICAgICAgIDs7CiAKICAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCi0gICAgZnJlZWJzZDIqKQorICAgIGZyZWVic2QyLiopCiAgICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICBoYXJkY29kZV9taW51c19MPXllcwpAQCAtODk2Niw3ICs5ODQyLDcgQEAKIAogICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCiAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCkBAIC04OTc0LDcgKzk4NTAsNyBAQAogCiAgICAgaHB1eDkqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGVsc2UKIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZmkKQEAgLTg5ODksMTQgKzk4NjUsMTMgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9JytiICRsaWJkaXInCiAJaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CiAJaGFyZGNvZGVfZGlyZWN0PXllcwogCWhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT15ZXMKQEAgLTkwMDgsMTYgKzk4ODMsMTYgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQpAQCAtOTAyOSw3ICs5OTA0LDQ2IEBACiAJICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisKKwkgICMgT2xkZXIgdmVyc2lvbnMgb2YgdGhlIDExLjAwIGNvbXBpbGVyIGRvIG5vdCB1bmRlcnN0YW5kIC1iIHlldAorCSAgIyAoSFA5MjQ1My0wMSBBLjExLjAxLjIwIGRvZXNuJ3QsIEhQOTI0NTMtMDEgQi4xMS5YLjM1MTc1LTM1MTc2LkdQIGRvZXMpCisJICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRDQyB1bmRlcnN0YW5kcyAtYiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiAkQ0MgdW5kZXJzdGFuZHMgLWIuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9fYis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3Byb2dfY29tcGlsZXJfX2I9bm8KKyAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICBMREZMQUdTPSIkTERGTEFHUyAtYiIKKyAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCisgICAgICMgVGhlIGxpbmtlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAorICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKKyAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgorICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKKyAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9fYj15ZXMKKyAgICAgICBmaQorICAgICBlbHNlCisgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9fYj15ZXMKKyAgICAgZmkKKyAgIGZpCisgICAkUk0gLXIgY29uZnRlc3QqCisgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9fYiIgPiY2OyB9CisKK2lmIHRlc3QgeCIkbHRfY3ZfcHJvZ19jb21waWxlcl9fYiIgPSB4eWVzOyB0aGVuCisgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKK2Vsc2UKKyAgICBhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCitmaQorCiAJICA7OwogCWVzYWMKICAgICAgIGZpCkBAIC05MDU3LDI2ICs5OTcxLDM5IEBACiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAogCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwotaW50IGZvbyh2b2lkKSB7fQoraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0KKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCitlbHNlCisgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWZpCiAgICAgICBlbHNlCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9J25vJwogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtOTA4NSw3ICsxMDAxMiw3IEBACiAgICAgICBsaW5rX2FsbF9kZXBsaWJzPXllcwogICAgICAgOzsKIAotICAgIG5ldGJzZCopCisgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEub3V0CiAgICAgICBlbHNlCkBAIC05MTM4LDE3ICsxMDA2NSwxNyBAQAogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICBhcmNoaXZlX2NtZHM9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIGFyY2hpdmVfY21kcz0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgOzsKIAogICAgIG9zZjMqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9J25vJwogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtOTE1OCwxMyArMTAwODUsMTMgQEAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgZWxzZQogCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisJJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCkBAIC05MTc3LDkgKzEwMTA0LDkgQEAKICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJd2xhcmM9JyR7d2x9JwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogICAgICAgZWxzZQogCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSoiQ29tcGlsZXJzIDUuMCIqKQpAQCAtOTM2Nyw0NCArMTAyOTQsNTAgQEAKICAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW4iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluLi4uICIgPiY2OyB9Ci0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKK2lmICR7bHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAkUk0gY29uZnRlc3QqCisJZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CiAKLSAgICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorCWlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gMj5jb25mdGVzdC5lcnI7IHRoZW4KLSAgICAgICAgc29uYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYj1jb25mdGVzdAotICAgICAgICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgICAgICAgZGVwbGlicz0KLSAgICAgICAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wKLQlwaWNfZmxhZz0kbHRfcHJvZ19jb21waWxlcl9waWMKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKLSAgICAgICAgbGlua2VyX2ZsYWdzPS12Ci0gICAgICAgIHZlcnN0cmluZz0KLSAgICAgICAgb3V0cHV0X29iamRpcj0uCi0gICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKLSAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kYWxsb3dfdW5kZWZpbmVkX2ZsYWcKLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Ci0gICAgICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjFcIiI7IH0gPiY1CisJICBzb25hbWU9Y29uZnRlc3QKKwkgIGxpYj1jb25mdGVzdAorCSAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisJICBkZXBsaWJzPQorCSAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wKKwkgIHBpY19mbGFnPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworCSAgY29tcGlsZXJfZmxhZ3M9LXYKKwkgIGxpbmtlcl9mbGFncz0tdgorCSAgdmVyc3RyaW5nPQorCSAgb3V0cHV0X29iamRpcj0uCisJICBsaWJuYW1lPWNvbmZ0ZXN0CisJICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRhbGxvd191bmRlZmluZWRfZmxhZworCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9CisJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYXJjaGl2ZV9jbWRzIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxXCIiOyB9ID4mNQogICAoZXZhbCAkYXJjaGl2ZV9jbWRzIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotICAgICAgICB0aGVuCi0JICBhcmNoaXZlX2NtZHNfbmVlZF9sYz1ubwotICAgICAgICBlbHNlCi0JICBhcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKLSAgICAgIGVsc2UKLSAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1Ci0gICAgICBmaQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY1Ci0kYXNfZWNobyAiJGFyY2hpdmVfY21kc19uZWVkX2xjIiA+JjY7IH0KKwkgIHRoZW4KKwkgICAgbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGM9bm8KKwkgIGVsc2UKKwkgICAgbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGM9eWVzCisJICBmaQorCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKKwllbHNlCisJICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKKwlmaQorCSRSTSBjb25mdGVzdCoKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY2OyB9CisgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz0kbHRfY3ZfYXJjaGl2ZV9jbWRzX25lZWRfbGMKICAgICAgIDs7CiAgICAgZXNhYwogICBmaQpAQCAtOTU2MiwxMSArMTA0OTUsNiBAQAogCiAKIAotCi0KLQotCi0KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzLi4uICIgPiY2OyB9CiAKQEAgLTk1NzUsMTYgKzEwNTAzLDIzIEBACiAgICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwogICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CiAgIGVzYWMKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgaWYgJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7JyA+L2Rldi9udWxsIDsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWRfc3RyaXBfZXE9InMsPVwoW0EtWmEtel06XCksXDEsZyIgOzsKKyAgICAqKSBsdF9zZWRfc3RyaXBfZXE9InMsPS8sLyxnIiA7OworICBlc2FjCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICRsdF9zZWRfc3RyaXBfZXFgCisgIGNhc2UgJGx0X3NlYXJjaF9wYXRoX3NwZWMgaW4KKyAgKlw7KikKICAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCiAgICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCiAgICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCiAgICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICBlbHNlCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICBmaQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICdzLzsvIC9nJ2AKKyAgICA7OworICAqKQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgIDs7CisgIGVzYWMKICAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKICAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCiAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQpAQCAtOTU5Nyw3ICsxMDUzMiw3IEBACiAJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCiAgICAgZmkKICAgZG9uZQotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIiB8IGF3ayAnCiBCRUdJTiB7UlM9IiAiOyBGUz0iL3xcbiI7fSB7CiAgIGx0X2Zvbz0iIjsKICAgbHRfY291bnQ9MDsKQEAgLTk2MTcsNyArMTA1NTIsMTMgQEAKICAgaWYgKGx0X2ZvbyAhPSAiIikgeyBsdF9mcmVxW2x0X2Zvb10rKzsgfQogICBpZiAobHRfZnJlcVtsdF9mb29dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9CiB9J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfc2VhcmNoX3BhdGhfc3BlY2AKKyAgIyBBV0sgcHJvZ3JhbSBhYm92ZSBlcnJvbmVvdXNseSBwcmVwZW5kcyAnLycgdG8gQzovZG9zL3BhdGhzCisgICMgZm9yIHRoZXNlIGhvc3RzLgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHxcCisgICAgICAkU0VEICdzLC9cKFtBLVphLXpdOlwpLFwxLGcnYCA7OworICBlc2FjCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRsdF9OTDJTUGAKIGVsc2UKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgogZmkKQEAgLTk2NDMsNyArMTA1ODQsNyBAQAogCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCkBAIC05NjUyLDcgKzEwNTkzLDcgQEAKICAgOzsKIAogYWl4WzQtOV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTk3MDUsNyArMTA2NDYsNyBAQAogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKICAgICA7OwogICBlc2FjCiAgIDs7CkBAIC05NzE3LDcgKzEwNjU4LDcgQEAKICAgOzsKIAogYnNkaVs0NV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCkBAIC05NzM2LDggKzEwNjc3LDkgQEAKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCi0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisgIHllcywqKQorICAgICMgZ2NjCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CkBAIC05NzU4LDM2ICsxMDcwMCw4MyBAQAogICAgIGN5Z3dpbiopCiAgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIgL2xpYi93MzJhcGkgL2xpYiAvdXNyL2xvY2FsL2xpYiIKKworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC91c3IvbGliL3czMmFwaSIKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKICAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8ICRHUkVQICJebGlicmFyaWVzOiIgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5Ci0gICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKLSAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQotICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCi0gICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKLSAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICAgICAgZWxzZQotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICAgICAgZmkKICAgICAgIDs7CiAgICAgcHczMiopCiAgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgIDs7CiAgICAgZXNhYworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgOzsKKworICAqLGNsKikKKyAgICAjIE5hdGl2ZSBNU1ZDCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisKKyAgICBjYXNlICRidWlsZF9vcyBpbgorICAgIG1pbmd3KikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKyAgICAgIElGUz0nOycKKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKyAgICAgIGRvCisgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKyAgICAgIGRvbmUKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisgICAgICA7OworICAgIGN5Z3dpbiopCisgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKICAgICA7OwogCiAgICopCisgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCi0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgOzsKQEAgLTk4MDgsNyArMTA3OTcsNyBAQAogICA7OwogCiBkZ3V4KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCkBAIC05ODE2LDEwICsxMDgwNSw2IEBACiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIDs7CiAKLWZyZWVic2QxKikKLSAgZHluYW1pY19saW5rZXI9bm8KLSAgOzsKLQogZnJlZWJzZCogfCBkcmFnb25mbHkqKQogICAjIERyYWdvbkZseSBkb2VzIG5vdCBoYXZlIGFvdXQuICBXaGVuL2lmIHRoZXkgaW1wbGVtZW50IGEgbmV3CiAgICMgdmVyc2lvbmluZyBtZWNoYW5pc20sIGFkanVzdCB0aGlzLgpAQCAtOTgyNyw3ICsxMDgxMiw3IEBACiAgICAgb2JqZm9ybWF0PWAvdXNyL2Jpbi9vYmpmb3JtYXRgCiAgIGVsc2UKICAgICBjYXNlICRob3N0X29zIGluCi0gICAgZnJlZWJzZFsxMjNdKikgb2JqZm9ybWF0PWFvdXQgOzsKKyAgICBmcmVlYnNkWzIzXS4qKSBvYmpmb3JtYXQ9YW91dCA7OwogICAgICopIG9iamZvcm1hdD1lbGYgOzsKICAgICBlc2FjCiAgIGZpCkBAIC05ODQ1LDcgKzEwODMwLDcgQEAKICAgZXNhYwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X29zIGluCi0gIGZyZWVic2QyKikKKyAgZnJlZWJzZDIuKikKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgICAgOzsKICAgZnJlZWJzZDMuWzAxXSogfCBmcmVlYnNkZWxmMy5bMDFdKikKQEAgLTk4NjUsMTIgKzEwODUwLDI2IEBACiAgIDs7CiAKIGdudSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCitoYWlrdSopCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwogCkBAIC05OTE2LDEyICsxMDkxNSwxNCBAQAogICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICAgOzsKICAgZXNhYwotICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NS4KKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgogICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgIyBvciBmYWlscyBvdXRyaWdodCwgc28gb3ZlcnJpZGUgYXRvbWljYWxseToKKyAgaW5zdGFsbF9vdmVycmlkZV9tb2RlPTU1NQogICA7OwogCiBpbnRlcml4WzMtOV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCkBAIC05OTM3LDcgKzEwOTM4LDcgQEAKICAgICBub25zdG9wdXgqKSB2ZXJzaW9uX3R5cGU9bm9uc3RvcHV4IDs7CiAgICAgKikKIAlpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCi0JCXZlcnNpb25fdHlwZT1saW51eAorCQl2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJZWxzZQogCQl2ZXJzaW9uX3R5cGU9aXJpeAogCWZpIDs7CkBAIC05OTc0LDkgKzEwOTc1LDkgQEAKICAgZHluYW1pY19saW5rZXI9bm8KICAgOzsKIAotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTk5ODQsMTIgKzEwOTg1LDE3IEBACiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworCiAgICMgU29tZSBiaW51dGlscyBsZCBhcmUgcGF0Y2hlZCB0byBzZXQgRFRfUlVOUEFUSAotICBzYXZlX0xERkxBR1M9JExERkxBR1MKLSAgc2F2ZV9saWJkaXI9JGxpYmRpcgotICBldmFsICJsaWJkaXI9L2Zvbzsgd2w9XCIkbHRfcHJvZ19jb21waWxlcl93bFwiOyBcCi0gICAgICAgTERGTEFHUz1cIlwkTERGTEFHUyAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgIGlmICR7bHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgc2F2ZV9saWJkaXI9JGxpYmRpcgorICAgIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRsdF9wcm9nX2NvbXBpbGVyX3dsXCI7IFwKKwkgTERGTEFHUz1cIlwkTERGTEFHUyAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIAogaW50CkBAIC0xMDAwMiwyNiArMTEwMDgsMjcgQEAKIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogICBpZiAgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsOyB0aGVuIDoKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiBmaQogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIExERkxBR1M9JHNhdmVfTERGTEFHUwotICBsaWJkaXI9JHNhdmVfbGliZGlyCisgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgICAgbGliZGlyPSRzYXZlX2xpYmRpcgorCitmaQorCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCiAKICAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCiAgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBZGQgQUJJLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBzeXN0ZW0gbGlicmFyeSBwYXRoLgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYjY0IC91c3IvbGliNjQgL2xpYiAvdXNyL2xpYiIKLQogICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAogICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFwkMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXCQwOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKLSAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICRsdF9sZF9leHRyYSIKKyAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcJDIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFwkMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7cy8iLy9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAorICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliICRsdF9sZF9leHRyYSIKICAgZmkKIAogICAjIFdlIHVzZWQgdG8gdGVzdCBmb3IgL2xpYi9sZC5zby4xIGFuZCBkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMgb24KQEAgLTEwMDMzLDYgKzExMDQwLDE4IEBACiAgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCiAgIDs7CiAKK25ldGJzZGVsZiotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgOzsKKwogbmV0YnNkKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCiAgIG5lZWRfbGliX3ByZWZpeD1ubwpAQCAtMTAwNTIsNyArMTEwNzEsNyBAQAogICA7OwogCiBuZXdzb3M2KQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMTAxMjEsNyArMTExNDAsNyBAQAogICA7OwogCiBzb2xhcmlzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTEwMTQ2LDcgKzExMTY1LDcgQEAKICAgOzsKIAogc3lzdjQgfCBzeXN2NC4zKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0xMDE3MCw3ICsxMTE4OSw3IEBACiAKIHN5c3Y0Kk1QKikKICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgotICAgIHZlcnNpb25fdHlwZT1saW51eAorICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0xMDIwMSw3ICsxMTIyMCw3IEBACiAKIHRwZiopCiAgICMgVFBGIGlzIGEgY3Jvc3MtdGFyZ2V0IG9ubHkuICBQcmVmZXJyZWQgY3Jvc3MtaG9zdCA9IEdOVS9MaW51eC4KLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTEwMjExLDcgKzExMjMwLDcgQEAKICAgOzsKIAogdXRzNCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMTAzMjMsNiArMTEzNDIsMTEgQEAKIAogCiAKKworCisKKworCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zLi4uICIgPiY2OyB9CiBoYXJkY29kZV9hY3Rpb249CkBAIC0xMDM5NSw3ICsxMTQxOSw3IEBACiAgICMgaWYgbGliZGwgaXMgaW5zdGFsbGVkIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IGl0CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbF9kbG9wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA0MjksNyArMTE0NTMsNyBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCIKIGVsc2UKIApAQCAtMTA0NDMsMTIgKzExNDY3LDEyIEBACiAKICAgKikKICAgICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzaGxfbG9hZCIgImFjX2N2X2Z1bmNfc2hsX2xvYWQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2hsX2xvYWQiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19zaGxfbG9hZCIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNobF9sb2FkIGluIC1sZGxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbGRfc2hsX2xvYWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxkX3NobF9sb2FkKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA0ODIsMTYgKzExNTA2LDE2IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGxkIgogZWxzZQogICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJkbG9wZW4iICJhY19jdl9mdW5jX2Rsb3BlbiIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsX2Rsb3BlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDUyNSwxMiArMTE1NDksMTIgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGwiCiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbHN2bGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbHN2bGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX3N2bGRfZGxvcGVuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX3N2bGRfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA1NjQsMTIgKzExNTg4LDEyIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX3N2bGRfZGxvcGVuIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sc3ZsZCIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsZF9saW5rIGluIC1sZGxkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2xpYl9kbGRfZGxkX2xpbmsrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfZGxkX2RsZF9saW5rKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUwpAQCAtMTA2MDMsNyArMTE2MjcsNyBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxkX2xpbmsiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCIKIGZpCiAKQEAgLTEwNjQ0LDcgKzExNjY4LDcgQEAKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBhIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBhIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGYuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfZGxvcGVuX3NlbGYrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9kbG9wZW5fc2VsZis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIAkgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKQEAgLTEwNjUzLDcgKzExNjc3LDcgQEAKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotI2xpbmUgMTA2NTYgImNvbmZpZ3VyZSIKKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xMDY5NCw3ICsxMTcxOCwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTA3MDMsNyArMTE3MzMsMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTEwNzQwLDcgKzExNzc0LDcgQEAKICAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAJICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CkBAIC0xMDc0OSw3ICsxMTc4Myw3IEBACiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLSNsaW5lIDEwNzUyICJjb25maWd1cmUiCisjbGluZSAkTElORU5PICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTA3OTAsNyArMTE4MjQsMTMgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotdm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQorLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCitpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisjZW5kaWYKKworaW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CiBpbnQgbWFpbiAoKQogewogICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKQEAgLTEwNzk5LDcgKzExODM5LDExIEBACiAgIGlmIChzZWxmKQogICAgIHsKICAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOwotICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgICAgIGVsc2UgcHV0cyAoZGxlcnJvciAoKSk7CisJfQogICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCiAgICAgfQogICBlbHNlCkBAIC0xMDk2OCw2ICsxMjAxMiw4IEBACiAKIAogCisKKwogICAgICAgICBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgbGlidG9vbCIKIAogCkBAIC0xMDk3OCw2ICsxMjAyNCw5NzcgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVuZG9yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlbmRvci4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jX2NvbXBpbGVyX3ZlbmRvcis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICMgbm90ZTogZG9uJ3QgY2hlY2sgZm9yIGdjYyBmaXJzdCBzaW5jZSBzb21lIG90aGVyIGNvbXBpbGVycyBkZWZpbmUgX19HTlVDX18KKyAgdmVuZG9ycz0iaW50ZWw6ICAgICBfX0lDQyxfX0VDQyxfX0lOVEVMX0NPTVBJTEVSCisgICAgICAgICAgIGlibTogICAgICAgX194bGNfXyxfX3hsQ19fLF9fSUJNQ19fLF9fSUJNQ1BQX18KKyAgICAgICAgICAgcGF0aHNjYWxlOiBfX1BBVEhDQ19fLF9fUEFUSFNDQUxFX18KKyAgICAgICAgICAgY2xhbmc6ICAgICBfX2NsYW5nX18KKyAgICAgICAgICAgZ251OiAgICAgICBfX0dOVUNfXworICAgICAgICAgICBzdW46ICAgICAgIF9fU1VOUFJPX0MsX19TVU5QUk9fQ0MKKyAgICAgICAgICAgaHA6ICAgICAgICBfX0hQX2NjLF9fSFBfYUNDCisgICAgICAgICAgIGRlYzogICAgICAgX19ERUNDLF9fREVDQ1hYLF9fREVDQ19WRVIsX19ERUNDWFhfVkVSCisgICAgICAgICAgIGJvcmxhbmQ6ICAgX19CT1JMQU5EQ19fLF9fVFVSQk9DX18KKyAgICAgICAgICAgY29tZWF1OiAgICBfX0NPTU9fXworICAgICAgICAgICBjcmF5OiAgICAgIF9DUkFZQworICAgICAgICAgICBrYWk6ICAgICAgIF9fS0NDCisgICAgICAgICAgIGxjYzogICAgICAgX19MQ0NfXworICAgICAgICAgICBzZ2k6ICAgICAgIF9fc2dpLHNnaQorICAgICAgICAgICBtaWNyb3NvZnQ6IF9NU0NfVkVSCisgICAgICAgICAgIG1ldHJvd2Vya3M6IF9fTVdFUktTX18KKyAgICAgICAgICAgd2F0Y29tOiAgICBfX1dBVENPTUNfXworICAgICAgICAgICBwb3J0bGFuZDogIF9fUEdJCisgICAgICAgICAgIHVua25vd246ICAgVU5LTk9XTiIKKyAgZm9yIHZlbnRlc3QgaW4gJHZlbmRvcnM7IGRvCisgICAgY2FzZSAkdmVudGVzdCBpbgorICAgICAgKjopIHZlbmRvcj0kdmVudGVzdDsgY29udGludWUgOzsKKyAgICAgICopICB2ZW5jcHA9ImRlZmluZWQoImBlY2hvICR2ZW50ZXN0IHwgc2VkICdzLywvKSB8fCBkZWZpbmVkKC9nJ2AiKSIgOzsKKyAgICBlc2FjCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICAgICAgI2lmICEoJHZlbmNwcCkKKyAgICAgICAgdGhpc2lzYW5lcnJvcjsKKyAgICAgICNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgZG9uZQorICBheF9jdl9jX2NvbXBpbGVyX3ZlbmRvcj1gZWNobyAkdmVuZG9yIHwgY3V0IC1kOiAtZjFgCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IiID4mNjsgfQorCisKKworCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9wb3J0YWJsZV9iaW5hcnkrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9wb3J0YWJsZV9iaW5hcnk7IGFjeF9tYXhvcHRfcG9ydGFibGU9JHdpdGh2YWwKK2Vsc2UKKyAgYWN4X21heG9wdF9wb3J0YWJsZT1ubworZmkKKworCisjIFRyeSB0byBkZXRlcm1pbmUgImdvb2QiIG5hdGl2ZSBjb21waWxlciBmbGFncyBpZiBub25lIHNwZWNpZmllZCB2aWEgQ0ZMQUdTCitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiICE9ICJzZXQiOyB0aGVuCisgIENGTEFHUz0iIgorICBjYXNlICRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciBpbgorICAgIGRlYykgQ0ZMQUdTPSItbmV3YyAtdzAgLU81IC1hbnNpX2FsaWFzIC1hbnNpX2FyZ3MgLWZwX3Jlb3JkZXIgLXR1bmUgaG9zdCIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgLWFyY2ggaG9zdCIKKyAgICAgICAgIGZpOzsKKworICAgIHN1bikgQ0ZMQUdTPSItbmF0aXZlIC1mYXN0IC14TzUgLWRhbGlnbiIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4KKwkgICBDRkxBR1M9IiRDRkxBR1MgLXhhcmNoPWdlbmVyaWMiCisgICAgICAgICBmaTs7CisKKyAgICBocCkgIENGTEFHUz0iK09hbGwgK09wdHJzX2Fuc2kgK0RTbmF0aXZlIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyArREFwb3J0YWJsZSIKKwkgZmk7OworCisgICAgaWJtKSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIHhsY19vcHQ9Ii1xYXJjaD1hdXRvIC1xdHVuZT1hdXRvIgorCSBlbHNlCisgICAgICAgICAgIHhsY19vcHQ9Ii1xdHVuZT1hdXRvIgorCSBmaQorICAgICAgICAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyR4bGNfb3B0IiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJHhsY19vcHQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJHhsY19vcHQuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkeGxjX29wdCIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13ICR4bGNfb3B0IgorZWxzZQorICBDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgWW91IHNlZW0gdG8gaGF2ZSB0aGUgSUJNICBDIGNvbXBpbGVyLiAgSXQgaXMgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHJlY29tbWVuZGVkIGZvciBiZXN0IHBlcmZvcm1hbmNlIHRoYXQgeW91IHVzZTogICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICBDRkxBR1M9LU8zIC1xYXJjaD14eHggLXF0dW5lPXh4eCAtcWFuc2lhbGlhcyAtdyAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgXl5eICAgICAgICBeXl4gICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICB3aGVyZSB4eHggaXMgcHdyMiwgcHdyMywgNjA0LCBvciB3aGF0ZXZlciBraW5kIG9mICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgQ1BVIHlvdSBoYXZlLiAgKFNldCB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhci4gICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIGFuZCByZS1ydW4gY29uZmlndXJlLikgIEZvciBtb3JlIGluZm8sIG1hbiBjYy4gICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCitmaQorCisgICAgICAgICA7OworCisgICAgaW50ZWwpIENGTEFHUz0iLU8zIC1hbnNpX2FsaWFzIgorCWlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKwkgIGljY19hcmNoZmxhZz11bmtub3duCisJICBpY2NfZmxhZ3M9IiIKKwkgIGNhc2UgJGhvc3RfY3B1IGluCisJICAgIGk2ODYqfHg4Nl82NCopCisgICAgICAgICAgICAgICMgaWNjIGFjY2VwdHMgZ2NjIGFzc2VtYmx5IHN5bnRheCwgc28gdGhlc2Ugc2hvdWxkIHdvcms6CisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDAsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzErOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMSwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCSAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMCBpbiAjIHNlZSBBWF9HQ0NfQVJDSEZMQUcKKyAgICAgICAgICAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisgICAgICAgICAgICAgICAgICAgICo2YT86KlsyMzRdOio6KnwqNls3ODliXT86KjoqOiopIGljY19mbGFncz0iLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmM1szNDddOio6KjoqfCpmNDEzNDc6KjoqOiopIGljY19mbGFncz0iLXhQIC14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmPz86KjoqOiopIGljY19mbGFncz0iLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19mbGFncyIgIT0geDsgdGhlbgorICAgICAgICAgICAgZm9yIGZsYWcgaW4gJGljY19mbGFnczsgZG8KKyAgICAgICAgICAgICAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyRmbGFnIiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWcuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkZmxhZyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIGljY19hcmNoZmxhZz0kZmxhZzsgYnJlYWsKK2Vsc2UKKyAgOgorZmkKKworICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaWNjIGFyY2hpdGVjdHVyZSBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpY2MgYXJjaGl0ZWN0dXJlIGZsYWcuLi4gIiA+JjY7IH0KKwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaWNjX2FyY2hmbGFnIiA+JjUKKyRhc19lY2hvICIkaWNjX2FyY2hmbGFnIiA+JjY7IH0KKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19hcmNoZmxhZyIgIT0geHVua25vd247IHRoZW4KKyAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkaWNjX2FyY2hmbGFnIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisJOzsKKworICAgIGdudSkKKyAgICAgIyBkZWZhdWx0IG9wdGltaXphdGlvbiBmbGFncyBmb3IgZ2NjIG9uIGFsbCBzeXN0ZW1zCisgICAgIENGTEFHUz0iLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIgorCisgICAgICMgLW1hbGlnbi1kb3VibGUgZm9yIHg4NiBzeXN0ZW1zCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLW1hbGlnbi1kb3VibGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLW1hbGlnbi1kb3VibGUuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgLW1hbGlnbi1kb3VibGUiCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlPXllcworZWxzZQorICBheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGUiID4mNjsgfQoraWYgdGVzdCB4IiRheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlIiA9IHh5ZXM7IHRoZW4gOgorICBDRkxBR1M9IiRDRkxBR1MgLW1hbGlnbi1kb3VibGUiCitlbHNlCisgIDoKK2ZpCisKKworICAgICAjICAtZnN0cmljdC1hbGlhc2luZyBmb3IgZ2NjLTIuOTUrCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLWZzdHJpY3QtYWxpYXNpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgLWZzdHJpY3QtYWxpYXNpbmcuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgLWZzdHJpY3QtYWxpYXNpbmciCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nPXllcworZWxzZQorICBheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENGTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFncworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZyIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmciID4mNjsgfQoraWYgdGVzdCB4IiRheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nIiA9IHh5ZXM7IHRoZW4gOgorICBDRkxBR1M9IiRDRkxBR1MgLWZzdHJpY3QtYWxpYXNpbmciCitlbHNlCisgIDoKK2ZpCisKKworICAgICAjIG5vdGUgdGhhdCB3ZSBlbmFibGUgInVuc2FmZSIgZnAgb3B0aW1pemF0aW9uIHdpdGggb3RoZXIgY29tcGlsZXJzLCB0b28KKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZmZhc3QtbWF0aCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZmZhc3QtbWF0aC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAtZmZhc3QtbWF0aCIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGg9eWVzCitlbHNlCisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGg9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aCIgPiY2OyB9CitpZiB0ZXN0IHgiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgiID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iJENGTEFHUyAtZmZhc3QtbWF0aCIKK2Vsc2UKKyAgOgorZmkKKworCisKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZ2NjLWFyY2ggd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2djY19hcmNoK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9nY2NfYXJjaDsgYXhfZ2NjX2FyY2g9JHdpdGh2YWwKK2Vsc2UKKyAgYXhfZ2NjX2FyY2g9eWVzCitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnLi4uICIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogIiA+JjUKKyRhc19lY2hvICIiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfYXJjaGZsYWcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCitheF9jdl9nY2NfYXJjaGZsYWc9InVua25vd24iCisKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giID0geHllczsgdGhlbgorYXhfZ2NjX2FyY2g9IiIKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbm87IHRoZW4KK2Nhc2UgJGhvc3RfY3B1IGluCisgIGlbMzQ1Nl04Nip8eDg2XzY0KikgIyB1c2UgY3B1aWQgY29kZXMsIGluIHBhcnQgZnJvbSB4ODZpbmZvLTEuNyBieSBELiBKb25lcworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAwIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAwLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMD1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDEgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDEsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzEiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzEiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKyAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluCisgICAgICAgKjo3NTZlNjU0NzoqOiopICMgSW50ZWwKKyAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgKjVbNDhdPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0tbW14IHBlbnRpdW0iIDs7CisJICAgICo1Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW0gOzsKKwkgICAgKjZbMzQ1Nl0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqWzAxXToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbMjM0XToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNls5ZF0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tIHBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2Wzc4Yl0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjY/PzoqOio6KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICAgICAgKmYzWzM0N106KjoqOip8KmY0MTM0NzoqOio6KikKKwkJY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICAgICAgICAgIHg4Nl82NCopIGF4X2djY19hcmNoPSJub2NvbmEgcGVudGl1bTQgcGVudGl1bXBybyIgOzsKKyAgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJwcmVzY290dCBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtNCBwZW50aXVtcHJvIjs7CisgICAgICAgICAgZXNhYyA7OworICAgICAgICo6Njg3NDc1NDE6KjoqKSAjIEFNRAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVs2N10/Oio6KjoqKSBheF9nY2NfYXJjaD1rNiA7OworCSAgICAqNVs4ZF0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMiBrNiIgOzsKKwkgICAgKjVbOV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMyBrNiIgOzsKKwkgICAgKjYwPzoqOio6KikgYXhfZ2NjX2FyY2g9azcgOzsKKwkgICAgKjZbMTJdPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbiBrNyIgOzsKKwkgICAgKjZbMzRdPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi10YmlyZCBrNyIgOzsKKwkgICAgKjY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgKjZbNjhhXT86KjoqOiopCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDB4ODAwMDAwMDYgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMHg4MDAwMDAwNiBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDY9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDB4ODAwMDAwMDYsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2PWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDY9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisgIyBMMiBjYWNoZSBzaXplCisJICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiBpbgorICAgICAgICAgICAgICAgICAqOio6KlsxLTlhLWZdPz8/Pz8/OiopICMgKEwyID0gZWN4ID4+IDE2KSA+PSAyNTYKKwkJCWF4X2djY19hcmNoPSJhdGhsb24teHAgYXRobG9uLTQgYXRobG9uIGs3IiA7OworICAgICAgICAgICAgICAgICAqKSBheF9nY2NfYXJjaD0iYXRobG9uLTQgYXRobG9uIGs3IiA7OworCSAgICAgICBlc2FjIDs7CisJICAgICpmWzRjZWY4Yl0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uNjQgazgiIDs7CisJICAgICpmNT86KjoqOiopIGF4X2djY19hcmNoPSJvcHRlcm9uIGs4IiA7OworCSAgICAqZjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLWZ4IG9wdGVyb24gazgiIDs7CisJICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJrOCIgOzsKKyAgICAgICAgICBlc2FjIDs7CisJKjo3NDZlNjU0MzoqOiopICMgSURUCisJICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICAqNTQ/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwLWM2IDs7CisJICAgICAqNTg/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwMiA7OworCSAgICAgKjZbNzhdPzoqOio6KikgYXhfZ2NjX2FyY2g9YzMgOzsKKwkgICAgICo2OT86KjoqOiopIGF4X2djY19hcmNoPSJjMy0yIGMzIiA7OworCSAgIGVzYWMgOzsKKyAgICAgZXNhYworICAgICBpZiB0ZXN0IHgiJGF4X2djY19hcmNoIiA9IHg7IHRoZW4gIyBmYWxsYmFjaworCWNhc2UgJGhvc3RfY3B1IGluCisJICBpNTg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgaTY4NiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgZXNhYworICAgICBmaQorICAgICA7OworCisgIHNwYXJjKikKKyAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwcnRkaWFnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBwcnRkaWFnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9QUlRESUFHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUFJURElBRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QUlRESUFHPSIkUFJURElBRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2FzX2R1bW15PSIkUEFUSDovdXNyL3BsYXRmb3JtL2B1bmFtZSAtaWAvc2Jpbi86L3Vzci9wbGF0Zm9ybS9gdW5hbWUgLW1gL3NiaW4vIgorZm9yIGFzX2RpciBpbiAkYXNfZHVtbXkKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfUFJURElBRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QUlRESUFHIiAmJiBhY19jdl9wYXRoX1BSVERJQUc9InBydGRpYWciCisgIDs7Citlc2FjCitmaQorUFJURElBRz0kYWNfY3ZfcGF0aF9QUlRESUFHCitpZiB0ZXN0IC1uICIkUFJURElBRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQUlRESUFHIiA+JjUKKyRhc19lY2hvICIkUFJURElBRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgIGNwdXR5cGU9YCgoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBjdXQgLWQ6IC1mMikgOyAoJFBSVERJQUcgLXYgfGdyZXAgLWkgc3BhcmMpIDsgZ3JlcCAtaSBjcHUgL3Zhci9ydW4vZG1lc2cuYm9vdCApIHwgaGVhZCAtbiAxKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gIiRjcHV0eXBlIiB8IHRyIC1kICcgLScgfHRyICRhc19jcl9MRVRURVJTICRhc19jcl9sZXR0ZXJzYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgICAqdWx0cmFzcGFyY2l2KikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmM0IHVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyY2lpaSopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnVsdHJhc3BhcmMqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICpzdXBlcnNwYXJjKnwqdG1zMzkwejVbMDVdKikgYXhfZ2NjX2FyY2g9InN1cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqaHlwZXJzcGFyYyp8KnJ0NjJbMDU2XSopIGF4X2djY19hcmNoPSJoeXBlcnNwYXJjIHY4IiA7OworICAgICAgICAgKmN5cHJlc3MqKSBheF9nY2NfYXJjaD1jeXByZXNzIDs7CisgICAgIGVzYWMgOzsKKworICBhbHBoYWV2NSkgYXhfZ2NjX2FyY2g9ZXY1IDs7CisgIGFscGhhZXY1NikgYXhfZ2NjX2FyY2g9ZXY1NiA7OworICBhbHBoYXBjYTU2KSBheF9nY2NfYXJjaD0icGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFwY2E1NykgYXhfZ2NjX2FyY2g9InBjYTU3IHBjYTU2IGV2NTYiIDs7CisgIGFscGhhZXY2KSBheF9nY2NfYXJjaD1ldjYgOzsKKyAgYWxwaGFldjY3KSBheF9nY2NfYXJjaD1ldjY3IDs7CisgIGFscGhhZXY2OCkgYXhfZ2NjX2FyY2g9ImV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjY5KSBheF9nY2NfYXJjaD0iZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3KSBheF9nY2NfYXJjaD0iZXY3IGV2NjkgZXY2OCBldjY3IiA7OworICBhbHBoYWV2NzkpIGF4X2djY19hcmNoPSJldjc5IGV2NyBldjY5IGV2NjggZXY2NyIgOzsKKworICBwb3dlcnBjKikKKyAgICAgY3B1dHlwZT1gKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgaGVhZCAtbiAxIHwgY3V0IC1kOiAtZjIgfCBjdXQgLWQsIC1mMSB8IHNlZCAncy8gLy9nJykgOyAvdXNyL2Jpbi9tYWNoaW5lIDsgL2Jpbi9tYWNoaW5lOyBncmVwIENQVSAvdmFyL3J1bi9kbWVzZy5ib290IHwgaGVhZCAtbiAxIHwgY3V0IC1kIiAiIC1mMikgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICRjcHV0eXBlIHwgc2VkIC1lICdzL3BwYy8vZztzLyAqLy9nJ2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICo3NTAqKSBheF9nY2NfYXJjaD0iNzUwIEczIiA7OworICAgICAgICo3NDBbMC05XSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDAwIEc0IiA7OworICAgICAgICo3NFs0LTVdWzAtOV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQ1MCBHNCIgOzsKKyAgICAgICAqNzRbMC05XVswLTldKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIEc0IiA7OworICAgICAgICo5NzAqKSBheF9nY2NfYXJjaD0iOTcwIEc1IHBvd2VyNCI7OworICAgICAgICpQT1dFUjQqfCpwb3dlcjQqfCpncSopIGF4X2djY19hcmNoPSJwb3dlcjQgOTcwIjs7CisgICAgICAgKlBPV0VSNSp8KnBvd2VyNSp8KmdyKnwqZ3MqKSBheF9nY2NfYXJjaD0icG93ZXI1IHBvd2VyNCA5NzAiOzsKKyAgICAgICA2MDNldnw4MjQwKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNjAzZSA2MDMiOzsKKyAgICAgICAqKSBheF9nY2NfYXJjaD0kY3B1dHlwZSA7OworICAgICBlc2FjCisgICAgIGF4X2djY19hcmNoPSIkYXhfZ2NjX2FyY2ggcG93ZXJwYyIKKyAgICAgOzsKK2VzYWMKK2ZpICMgbm90IGNyb3NzLWNvbXBpbGluZworZmkgIyBndWVzcyBhcmNoCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giICE9IHggLWEgIngkYXhfZ2NjX2FyY2giICE9IHhubzsgdGhlbgorZm9yIGFyY2ggaW4gJGF4X2djY19hcmNoOyBkbworICBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbiAjIGlmIHdlIHJlcXVpcmUgcG9ydGFibGUgY29kZQorICAgIGZsYWdzPSItbXR1bmU9JGFyY2giCisgICAgIyAtbWNwdT0kYXJjaCBhbmQgbSRhcmNoIGdlbmVyYXRlIG5vbnBvcnRhYmxlIGNvZGUgb24gZXZlcnkgYXJjaCBleGNlcHQKKyAgICAjIHg4Ni4gIEFuZCBzb21lIG90aGVyIGFyY2hlcyAoZS5nLiBBbHBoYSkgZG9uJ3QgYWNjZXB0IC1tdHVuZS4gIEdycnIuCisgICAgY2FzZSAkaG9zdF9jcHUgaW4gaSo4Nnx4ODZfNjQqKSBmbGFncz0iJGZsYWdzIC1tY3B1PSRhcmNoIC1tJGFyY2giOzsgZXNhYworICBlbHNlCisgICAgZmxhZ3M9Ii1tYXJjaD0kYXJjaCAtbWNwdT0kYXJjaCAtbSRhcmNoIgorICBmaQorICBmb3IgZmxhZyBpbiAkZmxhZ3M7IGRvCisgICAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyRmbGFnIiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJGZsYWcuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkZmxhZyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIGF4X2N2X2djY19hcmNoZmxhZz0kZmxhZzsgYnJlYWsKK2Vsc2UKKyAgOgorZmkKKworICBkb25lCisgIHRlc3QgIngkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA9IHh1bmtub3duIHx8IGJyZWFrCitkb25lCitmaQorCitmaSAjICRHQ0M9eWVzCisKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnLi4uICIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY19hcmNoZmxhZyIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY19hcmNoZmxhZyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93bjsgdGhlbgorICA6CitlbHNlCisgIENGTEFHUz0iJENGTEFHUyAkYXhfY3ZfZ2NjX2FyY2hmbGFnIgorZmkKKworICAgICA7OworICBlc2FjCisKKyAgaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KKwllY2hvICIiCisJZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogRG9uJ3Qga25vdyB0aGUgYmVzdCBDRkxBR1MgZm9yIHRoaXMgc3lzdGVtICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKwllY2hvICIqIChvdGhlcndpc2UsIGEgZGVmYXVsdCBvZiBDRkxBR1M9LU8zIHdpbGwgYmUgdXNlZCkgICAgKiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKwllY2hvICIiCisgICAgICAgIENGTEFHUz0iLU8zIgorICBmaQorCisgIGFzX0NBQ0hFVkFSPWAkYXNfZWNobyAiYXhfY3ZfY2hlY2tfY2ZsYWdzX18kQ0ZMQUdTIiB8ICRhc190cl9zaGAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIGFjY2VwdHMgJENGTEFHUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkQ0ZMQUdTLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyRhc19DQUNIRVZBUis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgYXhfY2hlY2tfc2F2ZV9mbGFncz0kQ0ZMQUdTCisgIENGTEFHUz0iJENGTEFHUyAgJENGTEFHUyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiRhc19DQUNIRVZBUj15ZXMiCitlbHNlCisgIGV2YWwgIiRhc19DQUNIRVZBUj1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQorZXZhbCBhY19yZXM9XCQkYXNfQ0FDSEVWQVIKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQoraWYgdGVzdCB4ImBldmFsICdhc192YWw9JHsnJGFzX0NBQ0hFVkFSJ307JGFzX2VjaG8gIiRhc192YWwiJ2AiID0geHllczsgdGhlbiA6CisgIDoKK2Vsc2UKKworCWVjaG8gIiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiogV0FSTklORzogVGhlIGd1ZXNzZWQgQ0ZMQUdTIGRvbid0IHNlZW0gdG8gd29yayB3aXRoICAqIgorICAgICAgICBlY2hvICIqIHlvdXIgY29tcGlsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgZWNobyAiKiBVc2UgLi9jb25maWd1cmUgQ0ZMQUdTPS4uLiB0byBzcGVjaWZ5IHlvdXIgb3duIGZsYWdzICoiCisgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIiCisgICAgICAgIENGTEFHUz0iIgorCitmaQorCisKK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBDRkxBR1MgZm9yIG1heGltdW0gd2FybmluZ3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgQ0ZMQUdTIGZvciBtYXhpbXVtIHdhcm5pbmdzLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NmbGFnc193YXJuX2FsbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2N2X2NmbGFnc193YXJuX2FsbD0ibm8sIHVua25vd24iCithY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKK2ZvciBhY19hcmcgaW4gIi13YXJuIGFsbCAgJSAtd2FybiBhbGwiICAgICAgIi1wZWRhbnRpYyAgJSAtV2FsbCIgICAgICAgICAgIi14c3RyY29uc3QgJSAtdiIgICAgICAgICAgICAgIi1zdGQxICAgICAgJSAtdmVyYm9zZSAtdzAgLXdhcm5wcm90b3MiICAgICItcWxhbmdsdmw9YW5zaSAlIC1xc3JjbXNnIC1xaW5mbz1hbGw6bm9wcHQ6bm9wcGM6bm9vYnM6bm9jbmQiICAgICItYW5zaSAtYW5zaUUgJSAtZnVsbHdhcm4iICAgICIrRVNsaXQgICAgICUgK3cxIiAgICAgICAgICAgICItWGMgICAgICAgICUgLXB2Y3RsLGZ1bGxtc2ciICAgICItaCBjb25mb3JtICUgLWggbXNnbGV2ZWwgMiIgICAgIworZG8gQ0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MgImBlY2hvICRhY19hcmcgfCBzZWQgLWUgJ3MsJSUuKiwsJyAtZSAncywlLCwnYAorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2NmbGFnc193YXJuX2FsbD1gZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLC4qJSAqLCwnYCA7IGJyZWFrCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Citkb25lCitDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyIKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIiA+JjY7IH0KK2Nhc2UgIi4kYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIiBpbgorICAgICAub2t8Lm9rLCopICA7OworICAgLnwubm98Lm5vLCopICA7OworICAgKikgaWYgJHtDRkxBR1MrOn0gZmFsc2U7IHRoZW4gOgorICBjYXNlICIgJENGTEFHUyAiIGluCisgICAgKiIgJGFjX2N2X2NmbGFnc193YXJuX2FsbCAiKikKKyAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiA6IENGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIFwkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIjsgfSA+JjUKKyAgKDogQ0ZMQUdTIGFscmVhZHkgY29udGFpbnMgJGFjX2N2X2NmbGFnc193YXJuX2FsbCkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgICAgIDs7CisgICAgKikKKyAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiA6IENGTEFHUz1cIlwkQ0ZMQUdTIFwkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsXCIiOyB9ID4mNQorICAoOiBDRkxBR1M9IiRDRkxBR1MgJGFjX2N2X2NmbGFnc193YXJuX2FsbCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisgICAgICBDRkxBR1M9IiRDRkxBR1MgJGFjX2N2X2NmbGFnc193YXJuX2FsbCIKKyAgICAgIDs7CisgICBlc2FjCitlbHNlCisgIENGTEFHUz0iJGFjX2N2X2NmbGFnc193YXJuX2FsbCIKK2ZpCisgOzsKK2VzYWMKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICBDRkxBR1M9IiRDRkxBR1MgLWZleGNlcHRpb25zIgorZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzLi4uICIgPiY2OyB9CkBAIC0xMTAwNSw3ICsxMzAyMiw3IEBACiBmb3IgYWNfaGVhZGVyIGluIHN5cy9tbWFuLmgKIGRvIDoKICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy9tbWFuLmgiICJhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX1NZU19NTUFOX0ggMQogX0FDRU9GCkBAIC0xMTAxNyw3ICsxMzAzNCw3IEBACiBmb3IgYWNfZnVuYyBpbiBtbWFwCiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1tYXAiICJhY19jdl9mdW5jX21tYXAiCi1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX21tYXAiID0geHllczsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9NTUFQIDEKIF9BQ0VPRgpAQCAtMTEwMjcsNyArMTMwNDQsNyBAQAogCiAKIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzeXMvbW1hbi5oIiAiYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geHllczsgdGhlbiA6CiAgIGxpYmZmaV9oZWFkZXJfc3lzX21tYW5faD15ZXMKIGVsc2UKICAgbGliZmZpX2hlYWRlcl9zeXNfbW1hbl9oPW5vCkBAIC0xMTAzNSw3ICsxMzA1Miw3IEBACiAKIAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibW1hcCIgImFjX2N2X2Z1bmNfbW1hcCIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4eWVzOyB0aGVuIDoKICAgbGliZmZpX2Z1bmNfbW1hcD15ZXMKIGVsc2UKICAgbGliZmZpX2Z1bmNfbW1hcD1ubwpAQCAtMTEwNDksNyArMTMwNjYsNyBAQAogZWxzZQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHJlYWQtb25seSBtbWFwIG9mIGEgcGxhaW4gZmlsZSB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHJlYWQtb25seSBtbWFwIG9mIGEgcGxhaW4gZmlsZSB3b3Jrcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9mdW5jX21tYXBfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfbW1hcF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgIyBBZGQgYSBzeXN0ZW0gdG8gdGhpcyBibGFja2xpc3QgaWYKQEAgLTExMDY4LDcgKzEzMDg1LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfZnVuY19tbWFwX2ZpbGUiID4mNjsgfQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG1tYXAgZnJvbSAvZGV2L3plcm8gd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtbWFwIGZyb20gL2Rldi96ZXJvIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcF9kZXZfemVybytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfbW1hcF9kZXZfemVybys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgQWRkIGEgc3lzdGVtIHRvIHRoaXMgYmxhY2tsaXN0IGlmIGl0IGhhcyBtbWFwKCkgYnV0IC9kZXYvemVybwpAQCAtMTEwOTQsNyArMTMxMTEsNyBAQAogICAgIyBVbmxpa2UgL2Rldi96ZXJvLCB0aGUgTUFQX0FOT04oWU1PVVMpIGRlZmluZXMgY2FuIGJlIHByb2JlZCBmb3IuCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBNQVBfQU5PTihZTU9VUykiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE1BUF9BTk9OKFlNT1VTKS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9kZWNsX21hcF9hbm9uK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZGVjbF9tYXBfYW5vbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExMTMwLDcgKzEzMTQ3LDcgQEAKICAgIGVsc2UKICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtbWFwIHdpdGggTUFQX0FOT04oWU1PVVMpIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcF9hbm9uK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19tbWFwX2Fub24rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEFkZCBhIHN5c3RlbSB0byB0aGlzIGJsYWNrbGlzdCBpZiBpdCBoYXMgbW1hcCgpIGFuZCBNQVBfQU5PTiBvcgpAQCAtMTExODAsNyArMTMxOTcsNyBAQAogY2FzZSAiJGhvc3QiIGluCiAgIGFscGhhKi0qLSopCiAJVEFSR0VUPUFMUEhBOyBUQVJHRVRESVI9YWxwaGE7Ci0JIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUsIGNoYW5nYWJsZSB2aWEgY29tbWFuZC1saW5lIHN3aXRjaC4KKwkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdlYWJsZSB2aWEgY29tbWFuZC1saW5lIHN3aXRjaC4KIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fTE9OR19ET1VCTEVfMTI4X18pJwogCTs7CiAKQEAgLTExMjA4LDcgKzEzMjI1LDcgQEAKIAlUQVJHRVQ9RlJWOyBUQVJHRVRESVI9ZnJ2CiAJOzsKIAotICBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCopCisgIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KiB8IGhwcGEqLSotb3BlbmJzZCopCiAJVEFSR0VUPVBBX0xJTlVYOyBUQVJHRVRESVI9cGEKIAk7OwogICBocHBhKjY0LSotaHB1eCopCkBAIC0xMTIyMSwxMCArMTMyMzgsMTcgQEAKICAgaT84Ni0qLWZyZWVic2QqIHwgaT84Ni0qLW9wZW5ic2QqKQogCVRBUkdFVD1YODZfRlJFRUJTRDsgVEFSR0VURElSPXg4NgogCTs7Ci0gIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqKQorICBpPzg2LXdpbjMyKiB8IGk/ODYtKi1jeWd3aW4qIHwgaT84Ni0qLW1pbmd3KiB8IGk/ODYtKi1vczIqIHwgaT84Ni0qLWludGVyaXgqKQogCVRBUkdFVD1YODZfV0lOMzI7IFRBUkdFVERJUj14ODYKLQkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgdGhpcyBmb3Igc2hhcmVkbGliCi0JQU1fTFRMREZMQUdTPSItbm8tdW5kZWZpbmVkIgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogICBpPzg2LSotZGFyd2luKikKIAlUQVJHRVQ9WDg2X0RBUldJTjsgVEFSR0VURElSPXg4NgpAQCAtMTEyMzYsNyArMTMyNjAsNyBAQAogICAgICAgICBUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CiAgICAgICAgIDs7CiAgIGk/ODYtKi0qKQotCVRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKKwlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAJOzsKIAogICBpYTY0Ki0qLSopCkBAIC0xMTI1MSwzMCArMTMyNzUsNDAgQEAKIAlUQVJHRVQ9TTY4SzsgVEFSR0VURElSPW02OGsKIAk7OwogCi0gIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQorICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKiB8IG1pcHMqLSotcnRlbXMqKQogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKLSAgbWlwcyotKi1saW51eCopCisgIG1pcHMqLSotbGludXgqIHwgbWlwcyotKi1vcGVuYnNkKikKIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKIAorICBtb3hpZS0qLSopCisgICAgICAgIFRBUkdFVD1NT1hJRTsgVEFSR0VURElSPW1veGllCisJOzsKKwogICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjLSotYW1pZ2FvcyopCisJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCisJOzsKICAgcG93ZXJwYy0qLWJlb3MqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7Ci0gIHBvd2VycGMtKi1kYXJ3aW4qKQorICBwb3dlcnBjLSotZGFyd2luKiB8IHBvd2VycGM2NC0qLWRhcndpbiopCiAJVEFSR0VUPVBPV0VSUENfREFSV0lOOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CiAgIHBvd2VycGMtKi1haXgqIHwgcnM2MDAwLSotYWl4KikKIAlUQVJHRVQ9UE9XRVJQQ19BSVg7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWZyZWVic2QqKQorICBwb3dlcnBjLSotZnJlZWJzZCogfCBwb3dlcnBjLSotb3BlbmJzZCopCiAJVEFSR0VUPVBPV0VSUENfRlJFRUJTRDsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjNjQtKi1mcmVlYnNkKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjKi0qLXJ0ZW1zKikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OwpAQCAtMTEzMDAsNiArMTMzMzQsMTUgQEAKIAogICB4ODZfNjQtKi1jeWd3aW4qIHwgeDg2XzY0LSotbWluZ3cqKQogCVRBUkdFVD1YODZfV0lONjQ7IFRBUkdFVERJUj14ODYKKwkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgLW5vLXVuZGVmaW5lZCBmb3Igc2hhcmVkbGliLgorCSMgV2UgbXVzdCBhbHNvIGNoZWNrIHdpdGhfY3Jvc3NfaG9zdCB0byBkZWNpZGUgaWYgdGhpcyBpcyBhIG5hdGl2ZQorCSMgb3IgY3Jvc3MtYnVpbGQgYW5kIHNlbGVjdCB3aGVyZSB0byBpbnN0YWxsIGRsbHMgYXBwcm9wcmlhdGVseS4KKwlpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorCSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQodG9vbGV4ZWNsaWJkaXIpIic7CisJZWxzZQorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQoYmluZGlyKSInOworCWZpCiAJOzsKIAogICB4ODZfNjQtKi0qKQpAQCAtMTEzMTEsNyArMTMzNTQsNyBAQAogCiAKIGlmIHRlc3QgJFRBUkdFVERJUiA9IHVua25vd247IHRoZW4KLSAgYXNfZm5fZXJyb3IgIlwibGliZmZpIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gJGhvc3QuXCIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJcImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LlwiIiAiJExJTkVOTyIgNQogZmkKIAogIGlmIGV4cHIgeCRUQVJHRVQgOiAneE1JUFMnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0xMTQwMiw2ICsxMzQ0NSwxNCBAQAogICBNNjhLX0ZBTFNFPQogZmkKIAorIGlmIHRlc3QgeCRUQVJHRVQgPSB4TU9YSUU7IHRoZW4KKyAgTU9YSUVfVFJVRT0KKyAgTU9YSUVfRkFMU0U9JyMnCitlbHNlCisgIE1PWElFX1RSVUU9JyMnCisgIE1PWElFX0ZBTFNFPQorZmkKKwogIGlmIHRlc3QgeCRUQVJHRVQgPSB4UE9XRVJQQzsgdGhlbgogICBQT1dFUlBDX1RSVUU9CiAgIFBPV0VSUENfRkFMU0U9JyMnCkBAIC0xMTUyNSw3ICsxMzU3Niw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfaGVhZGVyX3N0ZGMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9oZWFkZXJfc3RkYys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNjM4LDcgKzEzNjg5LDcgQEAKIGZvciBhY19mdW5jIGluIG1lbWNweQogZG8gOgogICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtZW1jcHkiICJhY19jdl9mdW5jX21lbWNweSIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tZW1jcHkiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tZW1jcHkiID0geHllczsgdGhlbiA6CiAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgSEFWRV9NRU1DUFkgMQogX0FDRU9GCkBAIC0xMTY0NiwxMSArMTM2OTcsMjIgQEAKIGZpCiBkb25lCiAKK2FjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNpemVfdCIgImFjX2N2X3R5cGVfc2l6ZV90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgc2l6ZV90IHVuc2lnbmVkIGludAorX0FDRU9GCisKK2ZpCisKICMgVGhlIFVsdHJpeCA0LjIgbWlwcyBidWlsdGluIGFsbG9jYSBkZWNsYXJlZCBieSBhbGxvY2EuaCBvbmx5IHdvcmtzCiAjIGZvciBjb25zdGFudCBhcmd1bWVudHMuICBVc2VsZXNzIQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2EuaC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl93b3JraW5nX2FsbG9jYV9oK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfd29ya2luZ19hbGxvY2FfaCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNjgzLDcgKzEzNzQ1LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBhbGxvY2EuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9mdW5jX2FsbG9jYV93b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExNzAyLDcgKzEzNzY0LDcgQEAKICAjcHJhZ21hIGFsbG9jYQogIyAgIGVsc2UKICMgICAgaWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVkIGJ5IEhQIGNjICtPbGliY2FsbHMgKi8KLWNoYXIgKmFsbG9jYSAoKTsKK3ZvaWQgKmFsbG9jYSAoc2l6ZV90KTsKICMgICAgZW5kaWYKICMgICBlbmRpZgogIyAgZW5kaWYKQEAgLTExNzQ2LDcgKzEzODA4LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X29zX2NyYXkrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9vc19jcmF5Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE3NzMsOCArMTM4MzUsNyBAQAogICBmb3IgYWNfZnVuYyBpbiBfZ2V0YjY3IEdFVEI2NyBnZXRiNjc7IGRvCiAgICAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCi1ldmFsIGFzX3ZhbD1cJCRhc19hY192YXIKLSAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsgdGhlbiA6CitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKICNkZWZpbmUgQ1JBWV9TVEFDS1NFR19FTkQgJGFjX2Z1bmMKQEAgLTExNzg4LDcgKzEzODQ5LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfY19zdGFja19kaXJlY3Rpb24rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKQEAgLTExODQzLDcgKzEzOTA0LDcgQEAKICMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgZG91YmxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgZG91YmxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9kb3VibGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9zaXplb2ZfZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAoZG91YmxlKSkiICJhY19jdl9zaXplb2ZfZG91YmxlIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CkBAIC0xMTg1Miw5ICsxMzkxMyw4IEBACiAgIGlmIHRlc3QgIiRhY19jdl90eXBlX2RvdWJsZSIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci17IGFzX2ZuX3NldF9zdGF0dXMgNzcKLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGRvdWJsZSkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfTsgfQorYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAoZG91YmxlKQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KICAgIGVsc2UKICAgICAgYWNfY3Zfc2l6ZW9mX2RvdWJsZT0wCiAgICBmaQpAQCAtMTE4NzcsNyArMTM5MzcsNyBAQAogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGRvdWJsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgZG91YmxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgZG91YmxlKSkiICJhY19jdl9zaXplb2ZfbG9uZ19kb3VibGUiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKQEAgLTExODg2LDkgKzEzOTQ2LDggQEAKICAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfbG9uZ19kb3VibGUiID0geWVzOyB0aGVuCiAgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQoteyBhc19mbl9zZXRfc3RhdHVzIDc3Ci1hc19mbl9lcnJvciAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGRvdWJsZSkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfTsgfQorYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAobG9uZyBkb3VibGUpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQogICAgICBhY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9MAogICAgZmkKQEAgLTExOTIyLDcgKzEzOTgxLDcgQEAKIAogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2NfYmlnZW5kaWFuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfY19iaWdlbmRpYW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCkBAIC0xMjE0MCwxOCArMTQxOTksMTggQEAKIAogICAgICA7OyAjKAogICAgKikKLSAgICAgYXNfZm5fZXJyb3IgInVua25vd24gZW5kaWFubmVzcworICAgICBhc19mbl9lcnJvciAkPyAidW5rbm93biBlbmRpYW5uZXNzCiAgcHJlc2V0dGluZyBhY19jdl9jX2JpZ2VuZGlhbj1ubyAob3IgeWVzKSB3aWxsIGhlbHAiICIkTElORU5PIiA1IDs7CiAgZXNhYwogCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3Arc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKLSAgICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD11bmtub3duCisgICAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGFzbSAoIi5jZmlfc3RhcnRwcm9jXG5cdC5jZmlfZW5kcHJvYyIpOwpAQCAtMTIxNjQsMjUgKzE0MjIzLDI2IEBACiB9CiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9eWVzCisgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPXllcwogZWxzZQotICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ubworICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ubwogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPiY1Ci0kYXNfZWNobyAiJGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wIiA+JjY7IH0KLWlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPiY1CiskYXNfZWNobyAiJGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA+JjY7IH0KKyBpZiB0ZXN0ICJ4JGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19DRklfUFNFVURPX09QIDEiID4+Y29uZmRlZnMuaAogCi1maQorIGZpCisKIAogaWYgdGVzdCB4JFRBUkdFVCA9IHhTUEFSQzsgdGhlbgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgcGMgcmVsYXRlZCByZWxvY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgcGMgcmVsYXRlZCByZWxvY3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX3NwYXJjX3VhX3BjcmVsK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2FzX3NwYXJjX3VhX3BjcmVsKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIApAQCAtMTIyMjEsNyArMTQyODEsNyBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLnJlZ2lzdGVyIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAucmVnaXN0ZXIgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX3JlZ2lzdGVyX3BzZXVkb19vcCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9hc19yZWdpc3Rlcl9wc2V1ZG9fb3ArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCkBAIC0xMjI1OCwxMyArMTQzMTgsMTMgQEAKIGlmIHRlc3QgeCRUQVJHRVQgPSB4WDg2IHx8IHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjMyIHx8IHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgcGMgcmVsYXRlZCByZWxvY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIHN1cHBvcnRzIHBjIHJlbGF0ZWQgcmVsb2NzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9hc194ODZfcGNyZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIAogCWxpYmZmaV9jdl9hc194ODZfcGNyZWw9eWVzCiAJZWNobyAnLnRleHQ7IGZvbzogbm9wOyAuZGF0YTsgLmxvbmcgZm9vLS47IC50ZXh0JyA+IGNvbmZ0ZXN0LnMKLQlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCAkRUdSRVAgLWkgJ2lsbGVnYWx8d2FybmluZycgPiAvZGV2L251bGw7IHRoZW4KIAkgICAgbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD1ubwogCWZpCiAKQEAgLTEyMjc2LDc3ICsxNDMzNiwyNDQgQEAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfWDg2X1BDUkVMIDEiID4+Y29uZmRlZnMuaAogCiAgICAgZmkKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIC5hc2NpaSBwc2V1ZG8tb3Agc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgLmFzY2lpIHBzZXVkby1vcCBzdXBwb3J0Li4uICIgPiY2OyB9CitpZiAke2xpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3ArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgICAgbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD11bmtub3duCisgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIC5hc2NpaQorICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KK2FzbSAoIi5hc2NpaSBcXCJzdHJpbmdcXCIiKTsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD15ZXMKK2Vsc2UKKyAgbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wIiA+JjUKKyRhc19lY2hvICIkbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCIgPiY2OyB9CisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19BU0NJSV9QU0VVRE9fT1AgMSIgPj5jb25mZGVmcy5oCisKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLnN0cmluZyBwc2V1ZG8tb3Agc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgLnN0cmluZyBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICAgICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD11bmtub3duCisgICAgICAgIyBDaGVjayBpZiB3ZSBoYXZlIC5zdHJpbmcKKyAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCithc20gKCIuc3RyaW5nIFxcInN0cmluZ1xcIiIpOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD15ZXMKK2Vsc2UKKyAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3AiID4mNQorJGFzX2VjaG8gIiRsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCIgPiY2OyB9CisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQVNfU1RSSU5HX1BTRVVET19PUCAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCiBmaQogCitpZiB0ZXN0IHgkVEFSR0VUID0geFg4Nl9XSU42NDsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF8gcHJlZml4IGluIGNvbXBpbGVkIHN5bWJvbHMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF8gcHJlZml4IGluIGNvbXBpbGVkIHN5bWJvbHMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlPW5vCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCit2b2lkIG5tX3Rlc3RfZnVuYygpe30KK2ludCBtYWluKCl7bm1fdGVzdF9mdW5jO3JldHVybiAwO30KK19MVF9FT0YKKyAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgIChldmFsICRhY19jb21waWxlKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgorICAgIGFjX25saXN0PWNvbmZ0ZXN0Lm5tCisgICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJGFjX25saXN0XCIiOyB9ID4mNQorICAoZXZhbCAkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkYWNfbmxpc3QpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgIiRhY19ubGlzdCI7IHRoZW4KKyAgICAgICMgU2VlIHdoZXRoZXIgdGhlIHN5bWJvbHMgaGF2ZSBhIGxlYWRpbmcgdW5kZXJzY29yZS4KKyAgICAgIGlmIGdyZXAgJ14uIF9ubV90ZXN0X2Z1bmMnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlPXllcworICAgICAgZWxzZQorICAgICAgICBpZiBncmVwICdeLiBubV90ZXN0X2Z1bmMgJyAiJGFjX25saXN0IiA+L2Rldi9udWxsOyB0aGVuCisJICA6CisgICAgICAgIGVsc2UKKwkgIGVjaG8gImNvbmZpZ3VyZTogY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRhY19ubGlzdCIgPiY1CisgICAgICAgIGZpCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGVjaG8gImNvbmZpZ3VyZTogY2Fubm90IHJ1biAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgPiY1CisgICAgZmkKKyAgZWxzZQorICAgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CisgICAgY2F0IGNvbmZ0ZXN0LmMgPiY1CisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA+JjUKKyRhc19lY2hvICIkbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA+JjY7IH0KKyAgc3lzX3N5bWJvbF91bmRlcnNjb3JlPSRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUKKworCisgICAgaWYgdGVzdCAieCRzeXNfc3ltYm9sX3VuZGVyc2NvcmUiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBTWU1CT0xfVU5ERVJTQ09SRSAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCitmaQorCisKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEU9MAogY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgKi1hcHBsZS1kYXJ3aW4xMCogfCAqLSotZnJlZWJzZCogfCAqLSotb3BlbmJzZCogfCAqLXBjLXNvbGFyaXMqKQorICAgICAqYXJtKi1hcHBsZS1kYXJ3aW4qKQorICAgICAgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEU9MQorCiskYXNfZWNobyAiI2RlZmluZSBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFIDEiID4+Y29uZmRlZnMuaAorCisgICAgIDs7CisgICAgICotYXBwbGUtZGFyd2luMVsxMF0qIHwgKi0qLWZyZWVic2QqIHwgKi0qLWtmcmVlYnNkKiB8ICotKi1vcGVuYnNkKiB8ICotcGMtc29sYXJpcyopCiAKICRhc19lY2hvICIjZGVmaW5lIEZGSV9NTUFQX0VYRUNfV1JJVCAxIiA+PmNvbmZkZWZzLmgKIAogICAgICA7OwogZXNhYworIGlmIHRlc3QgeCRGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0geDE7IHRoZW4KKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFPQorICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFPScjJworZWxzZQorICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUU9JyMnCisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfRkFMU0U9CitmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X3JvX2VoX2ZyYW1lK3NldH0iID0gc2V0OyB0aGVuIDoKKworCitpZiB0ZXN0IHgkVEFSR0VUID0geFg4Nl82NDsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIHN1cHBvcnRzIHVud2luZCBzZWN0aW9uIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIHN1cHBvcnRzIHVud2luZCBzZWN0aW9uIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIAotCWxpYmZmaV9jdl9yb19laF9mcmFtZT1ubwotCWVjaG8gJ2V4dGVybiB2b2lkIGZvbyAodm9pZCk7IHZvaWQgYmFyICh2b2lkKSB7IGZvbyAoKTsgZm9vICgpOyB9JyA+IGNvbmZ0ZXN0LmMKLQlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLioiYSInIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcwotCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKLQkJIHwgZ3JlcCAtdiAnI3dyaXRlJyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGZpCisJbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPXllcworCWVjaG8gJy5zZWN0aW9uIC5laF9mcmFtZSwiYSIsQHVud2luZCcgPiBjb25mdGVzdC5zCisJaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCisJICAgIGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZT1ubwogCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUiID4mNQorJGFzX2VjaG8gIiRsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUiID4mNjsgfQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19YODZfNjRfVU5XSU5EX1NFQ1RJT05fVFlQRSAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCitmaQorCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5Li4uICIgPiY2OyB9CitpZiAke2xpYmZmaV9jdl9yb19laF9mcmFtZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgCWxpYmZmaV9jdl9yb19laF9mcmFtZT1ubworICAJZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYworICAJaWYgJENDICRDRkxBR1MgLVMgLWZwaWMgLWZleGNlcHRpb25zIC1vIGNvbmZ0ZXN0LnMgY29uZnRlc3QuYyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIAkgICAgaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLioiYSInIGNvbmZ0ZXN0LnMgPiAvZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCisgIAkgICAgZWxpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiNhbGxvYycgY29uZnRlc3QuYyBcCisgIAkJIHwgZ3JlcCAtdiAnI3dyaXRlJyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBmaQorICAJZmkKKyAgCXJtIC1mIGNvbmZ0ZXN0LioKIAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA+JjUKICRhc19lY2hvICIkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA+JjY7IH0KLWlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCAieCRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID0geHllczsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1JPX0VIX0ZSQU1FIDEiID4+Y29uZmRlZnMuaAogCiAKICRhc19lY2hvICIjZGVmaW5lIEVIX0ZSQU1FX0ZMQUdTIFwiYVwiIiA+PmNvbmZkZWZzLmgKIAotZWxzZQorICBlbHNlCiAKICRhc19lY2hvICIjZGVmaW5lIEVIX0ZSQU1FX0ZMQUdTIFwiYXdcIiIgPj5jb25mZGVmcy5oCiAKLWZpCisgIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXCJoaWRkZW5cIikpKSIgPiY1CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXCJoaWRkZW5cIikpKSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eShcImhpZGRlblwiKSkpLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2xpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIAotCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxOyB9JyA+IGNvbmZ0ZXN0LmMKLQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCi0JaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1XZXJyb3IgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JjUnCisgIAllY2hvICdpbnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpIGZvbyAodm9pZCkgeyByZXR1cm4gMSAgOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9bm8KKyAgCWlmIHsgYWNfdHJ5PScke0NDLWNjfSAtV2Vycm9yIC1TIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QucyAxPiY1JwogICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfdHJ5XCIiOyB9ID4mNQogICAoZXZhbCAkYWNfdHJ5KSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgotCSAgICBpZiBncmVwICdcLmhpZGRlbi4qZm9vJyBjb25mdGVzdC5zID4vZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT15ZXMKLQkgICAgZmkKLQlmaQotCXJtIC1mIGNvbmZ0ZXN0LioKKyAgCSAgICBpZiBncmVwICdcLmhpZGRlbi4qZm9vJyBjb25mdGVzdC5zID4vZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlIiA+JjUKICRhc19lY2hvICIkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSIgPiY2OyB9Ci1pZiB0ZXN0ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlID0geWVzOyB0aGVuCisgIGlmIHRlc3QgJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUgPSB5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ISURERU5fVklTSUJJTElUWV9BVFRSSUJVVEUgMSIgPj5jb25mZGVmcy5oCiAKKyAgZmkKIGZpCiAKIApAQCAtMTIzNjUsNiArMTQ1OTIsMTQgQEAKICAgZmkKIGZpCiAKKyBpZiB0ZXN0ICIkZW5hYmxlX2RlYnVnIiA9ICJ5ZXMiOyB0aGVuCisgIEZGSV9ERUJVR19UUlVFPQorICBGRklfREVCVUdfRkFMU0U9JyMnCitlbHNlCisgIEZGSV9ERUJVR19UUlVFPScjJworICBGRklfREVCVUdfRkFMU0U9CitmaQorCiAKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zdHJ1Y3RzIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX3N0cnVjdHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgpAQCAtMTIzOTYsMjEgKzE0NjMxLDI1IEBACiBmaQogCiAKLWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCi0gICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KLSAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKLSAgdG9vbGV4ZWNsaWJkaXI9JyQodG9vbGV4ZWNkaXIpL2xpYicKLWVsc2UKLSAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKLSAgdG9vbGV4ZWNsaWJkaXI9JyQobGliZGlyKScKKyMgVGhlc2UgdmFyaWFibGVzIGFyZSBvbmx5IGV2ZXIgdXNlZCB3aGVuIHdlIGNyb3NzLWJ1aWxkIHRvIFg4Nl9XSU4zMi4KKyMgQW5kIHdlIG9ubHkgc3VwcG9ydCB0aGlzIHdpdGggR0NDLCBzby4uLgoraWYgdGVzdCB4IiRHQ0MiICE9IHgibm8iOyB0aGVuCisgIGlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisgICAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorICAgIHRvb2xleGVjZGlyPSckKGV4ZWNfcHJlZml4KS8kKHRhcmdldF9hbGlhcyknCisgICAgdG9vbGV4ZWNsaWJkaXI9JyQodG9vbGV4ZWNkaXIpL2xpYicKKyAgZWxzZQorICAgIHRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9hbGlhcyknCisgICAgdG9vbGV4ZWNsaWJkaXI9JyQobGliZGlyKScKKyAgZmkKKyAgbXVsdGlfb3NfZGlyZWN0b3J5PWAkQ0MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKKyAgY2FzZSAkbXVsdGlfb3NfZGlyZWN0b3J5IGluCisgICAgLikgOzsgIyBBdm9pZCB0cmFpbGluZyAvLgorICAgICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY2xpYmRpci8kbXVsdGlfb3NfZGlyZWN0b3J5IDs7CisgIGVzYWMKKworCiBmaQotbXVsdGlfb3NfZGlyZWN0b3J5PWAkQ0MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLWNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgotICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCi0gICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY2xpYmRpci8kbXVsdGlfb3NfZGlyZWN0b3J5IDs7Ci1lc2FjCi0KLQogCiBpZiB0ZXN0ICIke211bHRpbGlifSIgPSAieWVzIjsgdGhlbgogICBtdWx0aWxpYl9hcmc9Ii0tZW5hYmxlLW11bHRpbGliIgpAQCAtMTI0OTksMTAgKzE0NzM4LDIxIEBACiAgICAgIDplbmQnID4+Y29uZmNhY2hlCiBpZiBkaWZmICIkY2FjaGVfZmlsZSIgY29uZmNhY2hlID4vZGV2L251bGwgMj4mMTsgdGhlbiA6OyBlbHNlCiAgIGlmIHRlc3QgLXcgIiRjYWNoZV9maWxlIjsgdGhlbgotICAgIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiICYmCisgICAgaWYgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCI7IHRoZW4KICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQogJGFzX2VjaG8gIiRhc19tZTogdXBkYXRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9Ci0gICAgY2F0IGNvbmZjYWNoZSA+JGNhY2hlX2ZpbGUKKyAgICAgIGlmIHRlc3QgISAtZiAiJGNhY2hlX2ZpbGUiIHx8IHRlc3QgLWggIiRjYWNoZV9maWxlIjsgdGhlbgorCWNhdCBjb25mY2FjaGUgPiIkY2FjaGVfZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgY2FzZSAkY2FjaGVfZmlsZSBpbiAjKAorICAgICAgICAqLyogfCA/OiopCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiQkICYmCisJICBtdiAtZiAiJGNhY2hlX2ZpbGUiJCQgIiRjYWNoZV9maWxlIiA7OyAjKAorICAgICAgICAqKQorCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIgOzsKKwllc2FjCisgICAgICBmaQorICAgIGZpCiAgIGVsc2UKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQpAQCAtMTI1MTgsNiArMTQ3NjgsNyBAQAogCiBhY19saWJvYmpzPQogYWNfbHRsaWJvYmpzPQorVT0KIGZvciBhY19pIGluIDogJExJQk9CSlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBjb250aW51ZQogICAjIDEuIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLCBhbmQgJFUgaWYgYWxyZWFkeSBpbnN0YWxsZWQuCiAgIGFjX3NjcmlwdD0ncy9cJFVcLi8uLztzL1wubyQvLztzL1wub2JqJC8vJwpAQCAtMTI1NDEsMTMyICsxNDc5MiwxNDQgQEAKIGZpCiAKIGlmIHRlc3QgLXogIiR7QU1ERVBfVFJVRX0iICYmIHRlc3QgLXogIiR7QU1ERVBfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJBTURFUFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBTURFUFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ19UUlVFfSIgJiYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDQVNfVFJVRX0iICYmIHRlc3QgLXogIiR7YW1fX2Zhc3RkZXBDQ0FTX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ0FTXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NBU1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TUFJTlRBSU5FUl9NT0RFX1RSVUV9IiAmJiB0ZXN0IC16ICIke01BSU5UQUlORVJfTU9ERV9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk1BSU5UQUlORVJfTU9ERVwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNQUlOVEFJTkVSX01PREVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1RFU1RTVUJESVJfVFJVRX0iICYmIHRlc3QgLXogIiR7VEVTVFNVQkRJUl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlRFU1RTVUJESVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVEVTVFNVQkRJUlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TUlQU19UUlVFfSIgJiYgdGVzdCAteiAiJHtNSVBTX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTUlQU1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNSVBTXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTUEFSQ19UUlVFfSIgJiYgdGVzdCAteiAiJHtTUEFSQ19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlNQQVJDXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlNQQVJDXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4NlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X0ZSRUVCU0RfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X0ZSRUVCU0RfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfRlJFRUJTRFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfRlJFRUJTRFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X1dJTjMyX1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9XSU4zMl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9XSU4zMlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfV0lOMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9XSU42NF9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfV0lONjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfV0lONjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X1dJTjY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfREFSV0lOX1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9EQVJXSU5fRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0FMUEhBX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FMUEhBX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQUxQSEFcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQUxQSEFcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0lBNjRfVFJVRX0iICYmIHRlc3QgLXogIiR7SUE2NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIklBNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiSUE2NFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7TTMyUl9UUlVFfSIgJiYgdGVzdCAteiAiJHtNMzJSX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTTMyUlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNMzJSXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNNjhLX1RSVUV9IiAmJiB0ZXN0IC16ICIke002OEtfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNNjhLXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk02OEtcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0IC16ICIke01PWElFX1RSVUV9IiAmJiB0ZXN0IC16ICIke01PWElFX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTU9YSUVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BPV0VSUENfVFJVRX0iICYmIHRlc3QgLXogIiR7UE9XRVJQQ19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBPV0VSUENcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUE9XRVJQQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UE9XRVJQQ19BSVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UE9XRVJQQ19BSVhfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0FJWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0FJWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UE9XRVJQQ19EQVJXSU5fVFJVRX0iICYmIHRlc3QgLXogIiR7UE9XRVJQQ19EQVJXSU5fRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0RBUldJTlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0RBUldJTlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UE9XRVJQQ19GUkVFQlNEX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BPV0VSUENfRlJFRUJTRF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBPV0VSUENfRlJFRUJTRFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQT1dFUlBDX0ZSRUVCU0RcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0FSTV9UUlVFfSIgJiYgdGVzdCAteiAiJHtBUk1fRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJBUk1cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQVJNXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtBVlIzMl9UUlVFfSIgJiYgdGVzdCAteiAiJHtBVlIzMl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFWUjMyXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFWUjMyXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtMSUJGRklfQ1JJU19UUlVFfSIgJiYgdGVzdCAteiAiJHtMSUJGRklfQ1JJU19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkxJQkZGSV9DUklTXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkxJQkZGSV9DUklTXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtGUlZfVFJVRX0iICYmIHRlc3QgLXogIiR7RlJWX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiRlJWXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkZSVlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UzM5MF9UUlVFfSIgJiYgdGVzdCAteiAiJHtTMzkwX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUzM5MFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJTMzkwXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfNjRfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2XzY0X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2XzY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl82NFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7U0hfVFJVRX0iICYmIHRlc3QgLXogIiR7U0hfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTSFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJTSFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7U0g2NF9UUlVFfSIgJiYgdGVzdCAteiAiJHtTSDY0X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiU0g2NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJTSDY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQQV9MSU5VWF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQQV9MSU5VWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBBX0xJTlVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBBX0xJTlVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQQV9IUFVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BBX0hQVVhfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQQV9IUFVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBBX0hQVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BBNjRfSFBVWF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQQTY0X0hQVVhfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJQQTY0X0hQVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUEE2NF9IUFVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogCitpZiB0ZXN0IC16ICIke0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRX0iICYmIHRlc3QgLXogIiR7RkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0IC16ICIke0ZGSV9ERUJVR19UUlVFfSIgJiYgdGVzdCAteiAiJHtGRklfREVCVUdfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJGRklfREVCVUdcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCiAKLTogJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30KKzogIiR7Q09ORklHX1NUQVRVUz0uL2NvbmZpZy5zdGF0dXN9IgogYWNfd3JpdGVfZmFpbD0wCiBhY19jbGVhbl9maWxlc19zYXZlPSRhY19jbGVhbl9maWxlcwogYWNfY2xlYW5fZmlsZXM9IiRhY19jbGVhbl9maWxlcyAkQ09ORklHX1NUQVRVUyIKQEAgLTEyNzY3LDYgKzE1MDMwLDcgQEAKIElGUz0iICIiCSRhc19ubCIKIAogIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KK2FzX215c2VsZj0KIGNhc2UgJDAgaW4gIygoCiAgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKICAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtMTI4MTIsMTkgKzE1MDc2LDE5IEBACiAodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICiAKIAotIyBhc19mbl9lcnJvciBFUlJPUiBbTElORU5PIExPR19GRF0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExPR19GRF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBPdXRwdXQgImBiYXNlbmFtZSAkMGA6IGVycm9yOiBFUlJPUiIgdG8gc3RkZXJyLiBJZiBMSU5FTk8gYW5kIExPR19GRCBhcmUKICMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQotIyBzY3JpcHQgd2l0aCBzdGF0dXMgJD8sIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KKyMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCiBhc19mbl9lcnJvciAoKQogewotICBhc19zdGF0dXM9JD87IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQotICBpZiB0ZXN0ICIkMyI7IHRoZW4KLSAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQyIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQxIiA+JiQzCisgIGFzX3N0YXR1cz0kMTsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCisgIGlmIHRlc3QgIiQ0IjsgdGhlbgorICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKICAgZmkKLSAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQxIiA+JjIKKyAgJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6ICQyIiA+JjIKICAgYXNfZm5fZXhpdCAkYXNfc3RhdHVzCiB9ICMgYXNfZm5fZXJyb3IKIApAQCAtMTMwMjAsNyArMTUyODQsNyBAQAogICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKICAgICBkb25lCiAgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgorICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgogCiAKIH0gIyBhc19mbl9ta2Rpcl9wCkBAIC0xMzA3Myw4ICsxNTMzNyw4IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBsaWJmZmkgJGFzX21lIDMuMC4xMHJjMCwgd2hpY2ggd2FzCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgbGliZmZpICRhc19tZSAzLjAuMTEsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwogICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklHX0hFQURFUlMKQEAgLTEzMTM3LDE3ICsxNTQwMSwxNyBAQAogQ29uZmlndXJhdGlvbiBjb21tYW5kczoKICRjb25maWdfY29tbWFuZHMKIAotUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+LiIKK1JlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXM+LiIKIAogX0FDRU9GCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotbGliZmZpIGNvbmZpZy5zdGF0dXMgMy4wLjEwcmMwCi1jb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUsCitsaWJmZmkgY29uZmlnLnN0YXR1cyAzLjAuMTEKK2NvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKLUNvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlnLnN0YXR1cyBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKIApAQCAtMTMxNjUsMTEgKzE1NDI5LDE2IEBACiB3aGlsZSB0ZXN0ICQjICE9IDAKIGRvCiAgIGNhc2UgJDEgaW4KLSAgLS0qPSopCisgIC0tKj0/KikKICAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAogICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdYW149XSo9XCguKlwpJ2AKICAgICBhY19zaGlmdD06CiAgICAgOzsKKyAgLS0qPSkKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAorICAgIGFjX29wdGFyZz0KKyAgICBhY19zaGlmdD06CisgICAgOzsKICAgKikKICAgICBhY19vcHRpb249JDEKICAgICBhY19vcHRhcmc9JDIKQEAgLTEzMTkxLDYgKzE1NDYwLDcgQEAKICAgICAkYWNfc2hpZnQKICAgICBjYXNlICRhY19vcHRhcmcgaW4KICAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgICcnKSBhc19mbl9lcnJvciAkPyAibWlzc2luZyBmaWxlIGFyZ3VtZW50IiA7OwogICAgIGVzYWMKICAgICBhc19mbl9hcHBlbmQgQ09ORklHX0ZJTEVTICIgJyRhY19vcHRhcmcnIgogICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwpAQCAtMTMyMDMsNyArMTU0NzMsNyBAQAogICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OwogICAtLWhlIHwgLS1oKQogICAgICMgQ29uZmxpY3QgYmV0d2VlbiAtLWhlbHAgYW5kIC0taGVhZGVyCi0gICAgYXNfZm5fZXJyb3IgImFtYmlndW91cyBvcHRpb246IFxgJDEnCisgICAgYXNfZm5fZXJyb3IgJD8gImFtYmlndW91cyBvcHRpb246IFxgJDEnCiBUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiI7OwogICAtLWhlbHAgfCAtLWhlbCB8IC1oICkKICAgICAkYXNfZWNobyAiJGFjX2NzX3VzYWdlIjsgZXhpdCA7OwpAQCAtMTMyMTIsNyArMTU0ODIsNyBAQAogICAgIGFjX2NzX3NpbGVudD06IDs7CiAKICAgIyBUaGlzIGlzIGFuIGVycm9yLgotICAtKikgYXNfZm5fZXJyb3IgInVucmVjb2duaXplZCBvcHRpb246IFxgJDEnCisgIC0qKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkMScKIFRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiA7OwogCiAgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWdfdGFyZ2V0cyAiICQxIgpAQCAtMTMyNTYsNiArMTU1MjYsMTQgQEAKICMKICMgSU5JVC1DT01NQU5EUwogIworYXhfZW5hYmxlX2J1aWxkZGlyX3NyY2Rpcj0iJHNyY2RpciIgICAgICAgICAgICAgICAgICAgICMgJHNyY2RpcgorYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3Q9IiRIT1NUIiAgICAgICAgICAgICAgICAgICAgICAgICMgJEhPU1QgLyAkaG9zdAorYXhfZW5hYmxlX2J1aWxkZGlyX3ZlcnNpb249IiRWRVJTSU9OIiAgICAgICAgICAgICAgICAgICMgJFZFUlNJT04KK2F4X2VuYWJsZV9idWlsZGRpcl9wYWNrYWdlPSIkUEFDS0FHRSIgICAgICAgICAgICAgICAgICAjICRQQUNLQUdFCitheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpciIgIyAkQVVYCitheF9lbmFibGVfYnVpbGRkaXJfc2VkPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgICAgICAgIyAkU0VECitheF9lbmFibGVfYnVpbGRkaXI9IiRheF9lbmFibGVfYnVpbGRkaXIiICAgICAgICAgICAgICAgIyAkU1VCCisKIEFNREVQX1RSVUU9IiRBTURFUF9UUlVFIiBhY19hdXhfZGlyPSIkYWNfYXV4X2RpciIKIAogCkBAIC0xMzI2NiwxMzEgKzE1NTQ0LDE1NCBAQAogc2VkX3F1b3RlX3N1YnN0PSckc2VkX3F1b3RlX3N1YnN0JwogZG91YmxlX3F1b3RlX3N1YnN0PSckZG91YmxlX3F1b3RlX3N1YnN0JwogZGVsYXlfdmFyaWFibGVfc3Vic3Q9JyRkZWxheV92YXJpYWJsZV9zdWJzdCcKLW1hY3JvX3ZlcnNpb249J2AkRUNITyAiWCRtYWNyb192ZXJzaW9uIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1tYWNyb19yZXZpc2lvbj0nYCRFQ0hPICJYJG1hY3JvX3JldmlzaW9uIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfc2hhcmVkPSdgJEVDSE8gIlgkZW5hYmxlX3NoYXJlZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX3N0YXRpYz0nYCRFQ0hPICJYJGVuYWJsZV9zdGF0aWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXBpY19tb2RlPSdgJEVDSE8gIlgkcGljX21vZGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9mYXN0X2luc3RhbGw9J2AkRUNITyAiWCRlbmFibGVfZmFzdF9pbnN0YWxsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ob3N0X2FsaWFzPSdgJEVDSE8gIlgkaG9zdF9hbGlhcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaG9zdD0nYCRFQ0hPICJYJGhvc3QiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhvc3Rfb3M9J2AkRUNITyAiWCRob3N0X29zIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1idWlsZF9hbGlhcz0nYCRFQ0hPICJYJGJ1aWxkX2FsaWFzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1idWlsZD0nYCRFQ0hPICJYJGJ1aWxkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1idWlsZF9vcz0nYCRFQ0hPICJYJGJ1aWxkX29zIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1TRUQ9J2AkRUNITyAiWCRTRUQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVhzZWQ9J2AkRUNITyAiWCRYc2VkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1HUkVQPSdgJEVDSE8gIlgkR1JFUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotRUdSRVA9J2AkRUNITyAiWCRFR1JFUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotRkdSRVA9J2AkRUNITyAiWCRGR1JFUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTEQ9J2AkRUNITyAiWCRMRCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTk09J2AkRUNITyAiWCROTSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTE5fUz0nYCRFQ0hPICJYJExOX1MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1heF9jbWRfbGVuPSdgJEVDSE8gIlgkbWF4X2NtZF9sZW4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFjX29iamV4dD0nYCRFQ0hPICJYJGFjX29iamV4dCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXhlZXh0PSdgJEVDSE8gIlgkZXhlZXh0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF91bnNldD0nYCRFQ0hPICJYJGx0X3Vuc2V0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9TUDJOTD0nYCRFQ0hPICJYJGx0X1NQMk5MIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9OTDJTUD0nYCRFQ0hPICJYJGx0X05MMlNQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1yZWxvYWRfZmxhZz0nYCRFQ0hPICJYJHJlbG9hZF9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1yZWxvYWRfY21kcz0nYCRFQ0hPICJYJHJlbG9hZF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1PQkpEVU1QPSdgJEVDSE8gIlgkT0JKRFVNUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiWCRmaWxlX21hZ2ljX2NtZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQVI9J2AkRUNITyAiWCRBUiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQVJfRkxBR1M9J2AkRUNITyAiWCRBUl9GTEFHUyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotU1RSSVA9J2AkRUNITyAiWCRTVFJJUCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotUkFOTElCPSdgJEVDSE8gIlgkUkFOTElCIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICJYJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfcG9zdHVuaW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX2FyY2hpdmVfY21kcz0nYCRFQ0hPICJYJG9sZF9hcmNoaXZlX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUNDPSdgJEVDSE8gIlgkQ0MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUNGTEFHUz0nYCRFQ0hPICJYJENGTEFHUyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotY29tcGlsZXI9J2AkRUNITyAiWCRjb21waWxlciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotR0NDPSdgJEVDSE8gIlgkR0NDIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiWCRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiWCRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9iamRpcj0nYCRFQ0hPICJYJG9iamRpciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotU0hFTEw9J2AkRUNITyAiWCRTSEVMTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotRUNITz0nYCRFQ0hPICJYJEVDSE8iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU1BR0lDX0NNRD0nYCRFQ0hPICJYJE1BR0lDX0NNRCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIlgkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIlgkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIlgkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW5lZWRfbG9ja3M9J2AkRUNITyAiWCRuZWVkX2xvY2tzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1EU1lNVVRJTD0nYCRFQ0hPICJYJERTWU1VVElMIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1OTUVESVQ9J2AkRUNITyAiWCROTUVESVQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUxJUE89J2AkRUNITyAiWCRMSVBPIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1PVE9PTD0nYCRFQ0hPICJYJE9UT09MIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1PVE9PTDY0PSdgJEVDSE8gIlgkT1RPT0w2NCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbGliZXh0PSdgJEVDSE8gIlgkbGliZXh0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zaHJleHRfY21kcz0nYCRFQ0hPICJYJHNocmV4dF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leHRyYWN0X2V4cHN5bXNfY21kcz0nYCRFQ0hPICJYJGV4dHJhY3RfZXhwc3ltc19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hcmNoaXZlX2NtZHNfbmVlZF9sYz0nYCRFQ0hPICJYJGFyY2hpdmVfY21kc19uZWVkX2xjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPSdgJEVDSE8gIlgkZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSdgJEVDSE8gIlgkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi13aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYCRFQ0hPICJYJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1jb21waWxlcl9uZWVkc19vYmplY3Q9J2AkRUNITyAiWCRjb21waWxlcl9uZWVkc19vYmplY3QiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J2AkRUNITyAiWCRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcz0nYCRFQ0hPICJYJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hcmNoaXZlX2NtZHM9J2AkRUNITyAiWCRhcmNoaXZlX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFyY2hpdmVfZXhwc3ltX2NtZHM9J2AkRUNITyAiWCRhcmNoaXZlX2V4cHN5bV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1tb2R1bGVfY21kcz0nYCRFQ0hPICJYJG1vZHVsZV9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1tb2R1bGVfZXhwc3ltX2NtZHM9J2AkRUNITyAiWCRtb2R1bGVfZXhwc3ltX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXdpdGhfZ251X2xkPSdgJEVDSE8gIlgkd2l0aF9nbnVfbGQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFsbG93X3VuZGVmaW5lZF9mbGFnPSdgJEVDSE8gIlgkYWxsb3dfdW5kZWZpbmVkX2ZsYWciIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW5vX3VuZGVmaW5lZF9mbGFnPSdgJEVDSE8gIlgkbm9fdW5kZWZpbmVkX2ZsYWciIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2AkRUNITyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSdgJEVDSE8gIlgkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nYCRFQ0hPICJYJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2RpcmVjdD0nYCRFQ0hPICJYJGhhcmRjb2RlX2RpcmVjdCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPSdgJEVDSE8gIlgkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9taW51c19MPSdgJEVDSE8gIlgkaGFyZGNvZGVfbWludXNfTCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICJYJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICJYJGluaGVyaXRfcnBhdGgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiWCRsaW5rX2FsbF9kZXBsaWJzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIlgkZml4X3NyY2ZpbGVfcGF0aCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIlgkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIlgkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIlgkZXhjbHVkZV9leHBzeW1zIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1pbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXByZWxpbmtfY21kcz0nYCRFQ0hPICJYJHByZWxpbmtfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiWCRmaWxlX2xpc3Rfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiWCR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIlgkbmVlZF9saWJfcHJlZml4IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1uZWVkX3ZlcnNpb249J2AkRUNITyAiWCRuZWVkX3ZlcnNpb24iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXZlcnNpb25fdHlwZT0nYCRFQ0hPICJYJHZlcnNpb25fdHlwZSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcnVucGF0aF92YXI9J2AkRUNITyAiWCRydW5wYXRoX3ZhciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICJYJHNobGlicGF0aF92YXIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0nYCRFQ0hPICJYJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbGlibmFtZV9zcGVjPSdgJEVDSE8gIlgkbGlibmFtZV9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saWJyYXJ5X25hbWVzX3NwZWM9J2AkRUNITyAiWCRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXNvbmFtZV9zcGVjPSdgJEVDSE8gIlgkc29uYW1lX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXBvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiWCRwb3N0aW5zdGFsbF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1wb3N0dW5pbnN0YWxsX2NtZHM9J2AkRUNITyAiWCRwb3N0dW5pbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpbmlzaF9jbWRzPSdgJEVDSE8gIlgkZmluaXNoX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpbmlzaF9ldmFsPSdgJEVDSE8gIlgkZmluaXNoX2V2YWwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2ludG9fbGlicz0nYCRFQ0hPICJYJGhhcmRjb2RlX2ludG9fbGlicyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIlgkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICJYJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9hY3Rpb249J2AkRUNITyAiWCRoYXJkY29kZV9hY3Rpb24iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9kbG9wZW49J2AkRUNITyAiWCRlbmFibGVfZGxvcGVuIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfZGxvcGVuX3NlbGY9J2AkRUNITyAiWCRlbmFibGVfZGxvcGVuX3NlbGYiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9J2AkRUNITyAiWCRlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfc3RyaXBsaWI9J2AkRUNITyAiWCRvbGRfc3RyaXBsaWIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN0cmlwbGliPSdgJEVDSE8gIlgkc3RyaXBsaWIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21hY3JvX3ZlcnNpb249J2AkRUNITyAiJG1hY3JvX3ZlcnNpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbWFjcm9fcmV2aXNpb249J2AkRUNITyAiJG1hY3JvX3JldmlzaW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9zaGFyZWQ9J2AkRUNITyAiJGVuYWJsZV9zaGFyZWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX3N0YXRpYz0nYCRFQ0hPICIkZW5hYmxlX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwaWNfbW9kZT0nYCRFQ0hPICIkcGljX21vZGUiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Zhc3RfaW5zdGFsbD0nYCRFQ0hPICIkZW5hYmxlX2Zhc3RfaW5zdGFsbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitTSEVMTD0nYCRFQ0hPICIkU0hFTEwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRUNITz0nYCRFQ0hPICIkRUNITyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitQQVRIX1NFUEFSQVRPUj0nYCRFQ0hPICIkUEFUSF9TRVBBUkFUT1IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaG9zdF9hbGlhcz0nYCRFQ0hPICIkaG9zdF9hbGlhcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitob3N0PSdgJEVDSE8gIiRob3N0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hvc3Rfb3M9J2AkRUNITyAiJGhvc3Rfb3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYnVpbGRfYWxpYXM9J2AkRUNITyAiJGJ1aWxkX2FsaWFzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2J1aWxkPSdgJEVDSE8gIiRidWlsZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitidWlsZF9vcz0nYCRFQ0hPICIkYnVpbGRfb3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworU0VEPSdgJEVDSE8gIiRTRUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworWHNlZD0nYCRFQ0hPICIkWHNlZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitHUkVQPSdgJEVDSE8gIiRHUkVQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0VHUkVQPSdgJEVDSE8gIiRFR1JFUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitGR1JFUD0nYCRFQ0hPICIkRkdSRVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTEQ9J2AkRUNITyAiJExEIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK05NPSdgJEVDSE8gIiROTSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitMTl9TPSdgJEVDSE8gIiRMTl9TIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21heF9jbWRfbGVuPSdgJEVDSE8gIiRtYXhfY21kX2xlbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithY19vYmpleHQ9J2AkRUNITyAiJGFjX29iamV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3JlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJword2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0FSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9wb3N0dW5pbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX2FyY2hpdmVfY21kcz0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249J2AkRUNITyAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitDQz0nYCRFQ0hPICIkQ0MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQ0ZMQUdTPSdgJEVDSE8gIiRDRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworY29tcGlsZXI9J2AkRUNITyAiJGNvbXBpbGVyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0dDQz0nYCRFQ0hPICIkR0NDIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK01BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitPVE9PTD0nYCRFQ0hPICIkT1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworT1RPT0w2ND0nYCRFQ0hPICIkT1RPT0w2NCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsaWJleHQ9J2AkRUNITyAiJGxpYmV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzaHJleHRfY21kcz0nYCRFQ0hPICIkc2hyZXh0X2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXh0cmFjdF9leHBzeW1zX2NtZHM9J2AkRUNITyAiJGV4dHJhY3RfZXhwc3ltc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVfY21kc19uZWVkX2xjPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPSdgJEVDSE8gIiRlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nYCRFQ0hPICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3dob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgJEVDSE8gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitjb21waWxlcl9uZWVkc19vYmplY3Q9J2AkRUNITyAiJGNvbXBpbGVyX25lZWRzX29iamVjdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithcmNoaXZlX2NtZHM9J2AkRUNITyAiJGFyY2hpdmVfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithcmNoaXZlX2V4cHN5bV9jbWRzPSdgJEVDSE8gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21vZHVsZV9jbWRzPSdgJEVDSE8gIiRtb2R1bGVfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittb2R1bGVfZXhwc3ltX2NtZHM9J2AkRUNITyAiJG1vZHVsZV9leHBzeW1fY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit3aXRoX2dudV9sZD0nYCRFQ0hPICIkd2l0aF9nbnVfbGQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYWxsb3dfdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25vX3VuZGVmaW5lZF9mbGFnPSdgJEVDSE8gIiRub191bmRlZmluZWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgJEVDSE8gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9J2AkRUNITyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfZGlyZWN0PSdgJEVDSE8gIiRoYXJkY29kZV9kaXJlY3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPSdgJEVDSE8gIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfbWludXNfTD0nYCRFQ0hPICIkaGFyZGNvZGVfbWludXNfTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2luaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2luY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3ByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3ZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCituZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCituZWVkX3ZlcnNpb249J2AkRUNITyAiJG5lZWRfdmVyc2lvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit2ZXJzaW9uX3R5cGU9J2AkRUNITyAiJHZlcnNpb25fdHlwZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitydW5wYXRoX3Zhcj0nYCRFQ0hPICIkcnVucGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9J2AkRUNITyAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsaWJuYW1lX3NwZWM9J2AkRUNITyAiJGxpYm5hbWVfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsaWJyYXJ5X25hbWVzX3NwZWM9J2AkRUNITyAiJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzb25hbWVfc3BlYz0nYCRFQ0hPICIkc29uYW1lX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaW5zdGFsbF9vdmVycmlkZV9tb2RlPSdgJEVDSE8gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwb3N0dW5pbnN0YWxsX2NtZHM9J2AkRUNITyAiJHBvc3R1bmluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaW5pc2hfY21kcz0nYCRFQ0hPICIkZmluaXNoX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZmluaXNoX2V2YWw9J2AkRUNITyAiJGZpbmlzaF9ldmFsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2ludG9fbGlicz0nYCRFQ0hPICIkaGFyZGNvZGVfaW50b19saWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9hY3Rpb249J2AkRUNITyAiJGhhcmRjb2RlX2FjdGlvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZGxvcGVuPSdgJEVDSE8gIiRlbmFibGVfZGxvcGVuIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9kbG9wZW5fc2VsZj0nYCRFQ0hPICIkZW5hYmxlX2Rsb3Blbl9zZWxmIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9J2AkRUNITyAiJGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX3N0cmlwbGliPSdgJEVDSE8gIiRvbGRfc3RyaXBsaWIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc3RyaXBsaWI9J2AkRUNITyAiJHN0cmlwbGliIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIAogTFRDQz0nJExUQ0MnCiBMVENGTEFHUz0nJExUQ0ZMQUdTJwogY29tcGlsZXI9JyRjb21waWxlcl9ERUZBVUxUJwogCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKK1wkMQorX0xURUNIT19FT0YnCit9CisKICMgUXVvdGUgZXZhbGVkIHN0cmluZ3MuCi1mb3IgdmFyIGluIFNFRCBcCitmb3IgdmFyIGluIFNIRUxMIFwKK0VDSE8gXAorUEFUSF9TRVBBUkFUT1IgXAorU0VEIFwKIEdSRVAgXAogRUdSRVAgXAogRkdSRVAgXApAQCAtMTM0MDMsOCArMTU3MDQsMTMgQEAKIE9CSkRVTVAgXAogZGVwbGlic19jaGVja19tZXRob2QgXAogZmlsZV9tYWdpY19jbWQgXAorZmlsZV9tYWdpY19nbG9iIFwKK3dhbnRfbm9jYXNlZ2xvYiBcCitETExUT09MIFwKK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKIEFSIFwKIEFSX0ZMQUdTIFwKK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCiBTVFJJUCBcCiBSQU5MSUIgXAogQ0MgXApAQCAtMTM0MTQsMTQgKzE1NzIwLDE0IEBACiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLVNIRUxMIFwKLUVDSE8gXAorbm1fZmlsZV9saXN0X3NwZWMgXAogbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotbHRfcHJvZ19jb21waWxlcl93bCBcCiBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCitsdF9wcm9nX2NvbXBpbGVyX3dsIFwKIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKIG5lZWRfbG9ja3MgXAorTUFOSUZFU1RfVE9PTCBcCiBEU1lNVVRJTCBcCiBOTUVESVQgXAogTElQTyBcCkBAIC0xMzQzNSw5ICsxNTc0MSw3IEBACiBhbGxvd191bmRlZmluZWRfZmxhZyBcCiBub191bmRlZmluZWRfZmxhZyBcCiBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi1maXhfc3JjZmlsZV9wYXRoIFwKIGV4Y2x1ZGVfZXhwc3ltcyBcCiBpbmNsdWRlX2V4cHN5bXMgXAogZmlsZV9saXN0X3NwZWMgXApAQCAtMTM0NDUsMTIgKzE1NzQ5LDEzIEBACiBsaWJuYW1lX3NwZWMgXAogbGlicmFyeV9uYW1lc19zcGVjIFwKIHNvbmFtZV9zcGVjIFwKK2luc3RhbGxfb3ZlcnJpZGVfbW9kZSBcCiBmaW5pc2hfZXZhbCBcCiBvbGRfc3RyaXBsaWIgXAogc3RyaXBsaWI7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTEzNDcyLDE0ICsxNTc3NywxNSBAQAogbW9kdWxlX2V4cHN5bV9jbWRzIFwKIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogcHJlbGlua19jbWRzIFwKK3Bvc3RsaW5rX2NtZHMgXAogcG9zdGluc3RhbGxfY21kcyBcCiBwb3N0dW5pbnN0YWxsX2NtZHMgXAogZmluaXNoX2NtZHMgXAogc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIFwKIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC0xMzQ4NywxMiArMTU3OTMsNiBAQAogICAgIGVzYWMKIGRvbmUKIAotIyBGaXgtdXAgZmFsbGJhY2sgZWNobyBpZiBpdCB3YXMgbWFuZ2xlZCBieSB0aGUgYWJvdmUgcXVvdGluZyBydWxlcy4KLWNhc2UgXCRsdF9FQ0hPIGluCi0qJ1xcXCQwIC0tZmFsbGJhY2stZWNobyInKSAgbHRfRUNITz1cYFwkRUNITyAiWFwkbHRfRUNITyIgfCBcJFhzZWQgLWUgJ3MvXFxcXFxcXFxcXFxcXFxcJDAgLS1mYWxsYmFjay1lY2hvIlwkL1wkMCAtLWZhbGxiYWNrLWVjaG8iLydcYAotICA7OwotZXNhYwotCiBhY19hdXhfZGlyPSckYWNfYXV4X2RpcicKIHhzaV9zaGVsbD0nJHhzaV9zaGVsbCcKIGx0X3NoZWxsX2FwcGVuZD0nJGx0X3NoZWxsX2FwcGVuZCcKQEAgLTEzNTIzLDYgKzE1ODIzLDcgQEAKIGRvCiAgIGNhc2UgJGFjX2NvbmZpZ190YXJnZXQgaW4KICAgICAiZmZpY29uZmlnLmgiKSBDT05GSUdfSEVBREVSUz0iJENPTkZJR19IRUFERVJTIGZmaWNvbmZpZy5oIiA7OworICAgICJidWlsZGlyIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGJ1aWxkaXIiIDs7CiAgICAgImRlcGZpbGVzIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGRlcGZpbGVzIiA7OwogICAgICJsaWJ0b29sIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGxpYnRvb2wiIDs7CiAgICAgImluY2x1ZGUiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgaW5jbHVkZSIgOzsKQEAgLTEzNTM3LDcgKzE1ODM4LDcgQEAKICAgICAiaW5jbHVkZS9mZmlfY29tbW9uLmgiKSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1MgaW5jbHVkZS9mZmlfY29tbW9uLmg6aW5jbHVkZS9mZmlfY29tbW9uLmgiIDs7CiAgICAgImZmaWNvbmZpZy5weSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBmZmljb25maWcucHkiIDs7CiAKLSAgKikgYXNfZm5fZXJyb3IgImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7CisgICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OwogICBlc2FjCiBkb25lCiAKQEAgLTEzNTYxLDkgKzE1ODYyLDEwIEBACiAjIGFmdGVyIGl0cyBjcmVhdGlvbiBidXQgYmVmb3JlIGl0cyBuYW1lIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGAkdG1wJy4KICRkZWJ1ZyB8fAogewotICB0bXA9CisgIHRtcD0gYWNfdG1wPQogICB0cmFwICdleGl0X3N0YXR1cz0kPwotICB7IHRlc3QgLXogIiR0bXAiIHx8IHRlc3QgISAtZCAiJHRtcCIgfHwgcm0gLWZyICIkdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cworICA6ICIke2FjX3RtcDo9JHRtcH0iCisgIHsgdGVzdCAhIC1kICIkYWNfdG1wIiB8fCBybSAtZnIgIiRhY190bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCiAnIDAKICAgdHJhcCAnYXNfZm5fZXhpdCAxJyAxIDIgMTMgMTUKIH0KQEAgLTEzNTcxLDEyICsxNTg3MywxMyBAQAogCiB7CiAgIHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIi4vY29uZlhYWFhYWCIpIDI+L2Rldi9udWxsYCAmJgotICB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIgorICB0ZXN0IC1kICIkdG1wIgogfSAgfHwKIHsKICAgdG1wPS4vY29uZiQkLSRSQU5ET00KICAgKHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpCi19IHx8IGFzX2ZuX2Vycm9yICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJTkVOTyIgNQorfSB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUKK2FjX3RtcD0kdG1wCiAKICMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2VjdGlvbi4KICMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCkBAIC0xMzU5MywxMiArMTU4OTYsMTIgQEAKIGZpCiBhY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251bGxgCiBpZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbgotICBhY19jc19hd2tfY3I9J1xyJworICBhY19jc19hd2tfY3I9J1xccicKIGVsc2UKICAgYWNfY3NfYXdrX2NyPSRhY19jcgogZmkKIAotZWNobyAnQkVHSU4geycgPiIkdG1wL3N1YnMxLmF3ayIgJiYKK2VjaG8gJ0JFR0lOIHsnID4iJGFjX3RtcC9zdWJzMS5hd2siICYmCiBfQUNFT0YKIAogCkBAIC0xMzYwNywxOCArMTU5MTAsMTggQEAKICAgZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJgogICBlY2hvICJfQUNFT0YiCiB9ID5jb25mJCRzdWJzLnNoIHx8Ci0gIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKLWFjX2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnJCdgCisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKK2FjX2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnXidgCiBhY19kZWxpbT0nJSFfISMgJwogZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvCiAgIC4gLi9jb25mJCRzdWJzLnNoIHx8Ci0gICAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKIAogICBhY19kZWxpbV9uPWBzZWQgLW4gInMvLiokYWNfZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3JlcCAtYyBYYAogICBpZiB0ZXN0ICRhY19kZWxpbV9uID0gJGFjX2RlbGltX251bTsgdGhlbgogICAgIGJyZWFrCiAgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKICAgZWxzZQogICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAiCiAgIGZpCkBAIC0xMzYyNiw3ICsxNTkyOSw3IEBACiBybSAtZiBjb25mJCRzdWJzLnNoCiAKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotY2F0ID4+IlwkdG1wL3N1YnMxLmF3ayIgPDxcXF9BQ0FXSyAmJgorY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3ayIgPDxcXF9BQ0FXSyAmJgogX0FDRU9GCiBzZWQgLW4gJwogaApAQCAtMTM2NzQsNyArMTU5NzcsNyBAQAogcm0gLWYgY29uZiQkc3Vicy5hd2sKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogX0FDQVdLCi1jYXQgPj4iXCR0bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJgorY2F0ID4+IlwkYWNfdG1wL3N1YnMxLmF3ayIgPDxfQUNBV0sgJiYKICAgZm9yIChrZXkgaW4gUykgU19pc19zZXRba2V5XSA9IDEKICAgRlMgPSAiByIKIApAQCAtMTM3MDYsMjEgKzE2MDA5LDI5IEBACiAgIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2NyL2ciCiBlbHNlCiAgIGNhdAotZmkgPCAiJHRtcC9zdWJzMS5hd2siID4gIiR0bXAvc3Vicy5hd2siIFwKLSAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQorZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAvc3Vicy5hd2siIFwKKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQogX0FDRU9GCiAKLSMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgJChzcmNkaXIpLAotIyAke3NyY2Rpcn0gYW5kIEBzcmNkaXJAIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAgbGVhZGluZyBhbmQKKyMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29sZSAkKHNyY2RpciksCisjICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZW50cmllcyBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCiAjIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQogIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgogaWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4KLSAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPS97Ci1zLzoqXCQoc3JjZGlyKToqLzovCi1zLzoqXCR7c3JjZGlyfToqLzovCi1zLzoqQHNyY2RpckA6Ki86Lwotcy9eXChbXj1dKj1bCSBdKlwpOiovXDEvCisgIGFjX3Zwc3ViPScvXlsJIF0qVlBBVEhbCSBdKj1bCSBdKi97CitoCitzLy8vCitzL14vOi8KK3MvWwkgXSokLzovCitzLzpcJChzcmNkaXIpOi86L2cKK3MvOlwke3NyY2Rpcn06LzovZworcy86QHNyY2RpckA6LzovZworcy9eOiovLwogcy86KiQvLworeAorcy9cKD1bCSBdKlwpLiovXDEvCitHCitzL1xuLy8KIHMvXltePV0qPVsJIF0qJC8vCiB9JwogZmkKQEAgLTEzNzMyLDcgKzE2MDQzLDcgQEAKICMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfSEVBREVSUy4KICMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3aXRoIGAuL2NvbmZpZy5zdGF0dXMgTWFrZWZpbGUnLgogaWYgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIjsgdGhlbgotY2F0ID4iJHRtcC9kZWZpbmVzLmF3ayIgPDxcX0FDQVdLIHx8CitjYXQgPiIkYWNfdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sgfHwKIEJFR0lOIHsKIF9BQ0VPRgogCkBAIC0xMzc0NCwxMSArMTYwNTUsMTEgQEAKICMgaGFuZGxpbmcgb2YgbG9uZyBsaW5lcy4KIGFjX2RlbGltPSclIV8hIyAnCiBmb3IgYWNfbGFzdF90cnkgaW4gZmFsc2UgZmFsc2UgOjsgZG8KLSAgYWNfdD1gc2VkIC1uICIvJGFjX2RlbGltL3AiIGNvbmZkZWZzLmhgCi0gIGlmIHRlc3QgLXogIiRhY190IjsgdGhlbgorICBhY190dD1gc2VkIC1uICIvJGFjX2RlbGltL3AiIGNvbmZkZWZzLmhgCisgIGlmIHRlc3QgLXogIiRhY190dCI7IHRoZW4KICAgICBicmVhawogICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX0hFQURFUlMiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfSEVBREVSUyIgIiRMSU5FTk8iIDUKICAgZWxzZQogICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAiCiAgIGZpCkBAIC0xMzgzMyw3ICsxNjE0NCw3IEBACiBfQUNBV0sKIF9BQ0VPRgogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQotICBhc19mbl9lcnJvciAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgaGVhZGVycyBtYWNoaW5lcnkiICIkTElORU5PIiA1CiBmaSAjIHRlc3QgLW4gIiRDT05GSUdfSEVBREVSUyIKIAogCkBAIC0xMzg0Niw3ICsxNjE1Nyw3IEBACiAgIGVzYWMKICAgY2FzZSAkYWNfbW9kZSRhY190YWcgaW4KICAgOltGSExdKjoqKTs7Ci0gIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAiaW52YWxpZCB0YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7OworICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsKICAgOltGSF0tKSBhY190YWc9LTotOzsKICAgOltGSF0qKSBhY190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsKICAgZXNhYwpAQCAtMTM4NjUsNyArMTYxNzYsNyBAQAogICAgIGZvciBhY19mCiAgICAgZG8KICAgICAgIGNhc2UgJGFjX2YgaW4KLSAgICAgIC0pIGFjX2Y9IiR0bXAvc3RkaW4iOzsKKyAgICAgIC0pIGFjX2Y9IiRhY190bXAvc3RkaW4iOzsKICAgICAgICopICMgTG9vayBmb3IgdGhlIGZpbGUgZmlyc3QgaW4gdGhlIGJ1aWxkIHRyZWUsIHRoZW4gaW4gdGhlIHNvdXJjZSB0cmVlCiAJICMgKGlmIHRoZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSkuICBUaGUgYWJzb2x1dGUgcGF0aCBjYW5ub3QgYmUgRE9TLXN0eWxlLAogCSAjIGJlY2F1c2UgJGFjX2YgY2Fubm90IGNvbnRhaW4gYDonLgpAQCAtMTM4NzQsNyArMTYxODUsNyBAQAogCSAgIFtcXC8kXSopIGZhbHNlOzsKIAkgICAqKSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIkc3JjZGlyLyRhY19mIjs7CiAJICAgZXNhYyB8fAotCSAgIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OworCSAgIGFzX2ZuX2Vycm9yIDEgImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNTs7CiAgICAgICBlc2FjCiAgICAgICBjYXNlICRhY19mIGluICpcJyopIGFjX2Y9YCRhc19lY2hvICIkYWNfZiIgfCBzZWQgInMvJy8nXFxcXFxcXFwnJy9nImA7OyBlc2FjCiAgICAgICBhc19mbl9hcHBlbmQgYWNfZmlsZV9pbnB1dHMgIiAnJGFjX2YnIgpAQCAtMTM5MDAsOCArMTYyMTEsOCBAQAogICAgIGVzYWMKIAogICAgIGNhc2UgJGFjX3RhZyBpbgotICAgICo6LToqIHwgKjotKSBjYXQgPiIkdG1wL3N0ZGluIiBcCi0gICAgICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgOzsKKyAgICAqOi06KiB8ICo6LSkgY2F0ID4iJGFjX3RtcC9zdGRpbiIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1IDs7CiAgICAgZXNhYwogICAgIDs7CiAgIGVzYWMKQEAgLTE0MDM3LDIzICsxNjM0OCwyNCBAQAogcyZATUtESVJfUEAmJGFjX01LRElSX1AmO3QgdAogJGFjX2RhdGFyb290ZGlyX2hhY2sKICIKLWV2YWwgc2VkIFwiXCRhY19zZWRfZXh0cmFcIiAiJGFjX2ZpbGVfaW5wdXRzIiB8ICRBV0sgLWYgIiR0bXAvc3Vicy5hd2siID4kdG1wL291dCBcCi0gIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAiJGFjX3RtcC9zdWJzLmF3ayIgXAorICA+JGFjX3RtcC9vdXQgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CiAKIHRlc3QgLXogIiRhY19kYXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCi0gIHsgYWNfb3V0PWBzZWQgLW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiR0bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQiOyB9ICYmCi0gIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3AnICIkdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgorICB7IGFjX291dD1gc2VkIC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkYWNfdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0IjsgfSAmJgorICB7IGFjX291dD1gc2VkIC1uICcvXlsJIF0qZGF0YXJvb3RkaXJbCSBdKjoqPS9wJyBcCisgICAgICAiJGFjX3RtcC9vdXQiYDsgdGVzdCAteiAiJGFjX291dCI7IH0gJiYKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZSBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFyaWFibGUgXGBkYXRhcm9vdGRpcicKLXdoaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZC4iID4mNQord2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjUKICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJwotd2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkLiIgPiYyO30KK3doaWNoIHNlZW1zIHRvIGJlIHVuZGVmaW5lZC4gIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZCIgPiYyO30KIAotICBybSAtZiAiJHRtcC9zdGRpbiIKKyAgcm0gLWYgIiRhY190bXAvc3RkaW4iCiAgIGNhc2UgJGFjX2ZpbGUgaW4KLSAgLSkgY2F0ICIkdG1wL291dCIgJiYgcm0gLWYgIiR0bXAvb3V0Ijs7Ci0gICopIHJtIC1mICIkYWNfZmlsZSIgJiYgbXYgIiR0bXAvb3V0IiAiJGFjX2ZpbGUiOzsKKyAgLSkgY2F0ICIkYWNfdG1wL291dCIgJiYgcm0gLWYgIiRhY190bXAvb3V0Ijs7CisgICopIHJtIC1mICIkYWNfZmlsZSIgJiYgbXYgIiRhY190bXAvb3V0IiAiJGFjX2ZpbGUiOzsKICAgZXNhYyBcCi0gIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKICA7OwogICA6SCkKICAgIwpAQCAtMTQwNjIsMjEgKzE2Mzc0LDIxIEBACiAgIGlmIHRlc3QgeCIkYWNfZmlsZSIgIT0geC07IHRoZW4KICAgICB7CiAgICAgICAkYXNfZWNobyAiLyogJGNvbmZpZ3VyZV9pbnB1dCAgKi8iIFwKLSAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiR0bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIgotICAgIH0gPiIkdG1wL2NvbmZpZy5oIiBcCi0gICAgICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKLSAgICBpZiBkaWZmICIkYWNfZmlsZSIgIiR0bXAvY29uZmlnLmgiID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJGFjX3RtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiCisgICAgfSA+IiRhY190bXAvY29uZmlnLmgiIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgIGlmIGRpZmYgIiRhY19maWxlIiAiJGFjX3RtcC9jb25maWcuaCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNjt9CiAgICAgZWxzZQogICAgICAgcm0gLWYgIiRhY19maWxlIgotICAgICAgbXYgIiR0bXAvY29uZmlnLmgiICIkYWNfZmlsZSIgXAotCXx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgICAgbXYgIiRhY190bXAvY29uZmlnLmgiICIkYWNfZmlsZSIgXAorCXx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQogICAgIGZpCiAgIGVsc2UKICAgICAkYXNfZWNobyAiLyogJGNvbmZpZ3VyZV9pbnB1dCAgKi8iIFwKLSAgICAgICYmIGV2YWwgJyRBV0sgLWYgIiR0bXAvZGVmaW5lcy5hd2siJyAiJGFjX2ZpbGVfaW5wdXRzIiBcCi0gICAgICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJGFjX3RtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlIC0iICIkTElORU5PIiA1CiAgIGZpCiAjIENvbXB1dGUgIiRhY19maWxlIidzIGluZGV4IGluICRjb25maWdfaGVhZGVycy4KIF9hbV9hcmc9IiRhY19maWxlIgpAQCAtMTQxMzAsMTkgKzE2NDQyLDE5IEBACiAkYXNfZWNobyAiJGFzX21lOiBsaW5raW5nICRhY19zb3VyY2UgdG8gJGFjX2ZpbGUiID4mNjt9CiAKICAgICBpZiB0ZXN0ICEgLXIgIiRhY19zb3VyY2UiOyB0aGVuCi0gICAgICBhc19mbl9lcnJvciAiJGFjX3NvdXJjZTogZmlsZSBub3QgZm91bmQiICIkTElORU5PIiA1CisgICAgICBhc19mbl9lcnJvciAkPyAiJGFjX3NvdXJjZTogZmlsZSBub3QgZm91bmQiICIkTElORU5PIiA1CiAgICAgZmkKICAgICBybSAtZiAiJGFjX2ZpbGUiCiAKICAgICAjIFRyeSBhIHJlbGF0aXZlIHN5bWxpbmssIHRoZW4gYSBoYXJkIGxpbmssIHRoZW4gYSBjb3B5LgotICAgIGNhc2UgJHNyY2RpciBpbgorICAgIGNhc2UgJGFjX3NvdXJjZSBpbgogICAgIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX3JlbF9zb3VyY2U9JGFjX3NvdXJjZSA7OwogCSopIGFjX3JlbF9zb3VyY2U9JGFjX3RvcF9idWlsZF9wcmVmaXgkYWNfc291cmNlIDs7CiAgICAgZXNhYwogICAgIGxuIC1zICIkYWNfcmVsX3NvdXJjZSIgIiRhY19maWxlIiAyPi9kZXYvbnVsbCB8fAogICAgICAgbG4gIiRhY19zb3VyY2UiICIkYWNfZmlsZSIgMj4vZGV2L251bGwgfHwKICAgICAgIGNwIC1wICIkYWNfc291cmNlIiAiJGFjX2ZpbGUiIHx8Ci0gICAgICBhc19mbl9lcnJvciAiY2Fubm90IGxpbmsgb3IgY29weSAkYWNfc291cmNlIHRvICRhY19maWxlIiAiJExJTkVOTyIgNQorICAgICAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBsaW5rIG9yIGNvcHkgJGFjX3NvdXJjZSB0byAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKICAgZmkKICA7OwogICA6QykgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXhlY3V0aW5nICRhY19maWxlIGNvbW1hbmRzIiA+JjUKQEAgLTE0MTUyLDYgKzE2NDY0LDE1MCBAQAogCiAKICAgY2FzZSAkYWNfZmlsZSRhY19tb2RlIGluCisgICAgImJ1aWxkaXIiOkMpICAgYWNfdG9wX3NyY2Rpcj0iJGF4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXIiCisgIGlmIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuLiIgOyB0aGVuCisgICAgaWYgdGVzdCAtZiAiJHRvcF9zcmNkaXIvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbGVmdCB1bnRvdWNoZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogc2tpcHBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSAtIGxlZnQgdW50b3VjaGVkIiA+JjY7fQorICAgIGVsc2UKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogc2tpcHBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSAtIG5vdCBjcmVhdGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBub3QgY3JlYXRlZCIgPiY2O30KKyAgICBmaQorICBlbHNlCisgICAgaWYgdGVzdCAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgYT1gZ3JlcCAiXlZFUlNJT04gIiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiYCA7IGI9YGdyZXAgIl5WRVJTSU9OICIgTWFrZWZpbGVgCisgICAgICB0ZXN0ICIkYSIgIT0gIiRiIiAmJiBybSAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiCisgICAgZmkKKyAgICBpZiB0ZXN0IC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisJZWNobyAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUgOiAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZS5pbiIgPiAkdG1wL2NvbmZ0ZW1wLm1rCisJZWNobyAiCUAgZWNobyAnUkVNT1ZFRCwsLCcgPlwkQCIgPj4gJHRtcC9jb25mdGVtcC5taworICAgICAgZXZhbCAiJHtNQUtFLW1ha2V9IC1mICR0bXAvY29uZnRlbXAubWsgMj4vZGV2L251bGwgPi9kZXYvbnVsbCIKKyAgICAgIGlmIGdyZXAgJ15SRU1PVkVELCwsJyAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiID4vZGV2L251bGwKKyAgICAgIHRoZW4gcm0gJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUgOyBmaQorICAgICAgY3AgJHRtcC9jb25mdGVtcC5tayAkYWNfdG9wX3NyY2Rpci9tYWtlZmlsZXMubWt+ICAgICAgIyMgREVCVUdHSU5HCisgICAgZmkKKyAgICBpZiB0ZXN0ICEgLWYgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRlIHRvcF9zcmNkaXIvTWFrZWZpbGUgZ3Vlc3NlZCBmcm9tIGxvY2FsIE1ha2VmaWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0ZSB0b3Bfc3JjZGlyL01ha2VmaWxlIGd1ZXNzZWQgZnJvbSBsb2NhbCBNYWtlZmlsZSIgPiY2O30KKyAgICAgIHg9J2AnIDsgY2F0ID4kdG1wL2NvbmZ0ZW1wLnNlZCA8PF9FT0YKKy9eXCQvbgoreAorL15cJC9iUworeAorL1xcXFxcJC97SDtkO30KK3tIO3MvLiovLzt4O30KK2JNCis6UworeAorL1xcXFxcJC97aDtkO30KK3toO3MvLiovLzt4O30KKzpNCitzL1xcKFxcblxcKQkvXFwxIC9nCisvXgkvZAorL15bCSBdKltcXCNdL2QKKy9eVlBBVEggKj0vZAorcy9ec3JjZGlyICo9Liovc3JjZGlyID0gLi8KK3MvXnRvcF9zcmNkaXIgKj0uKi90b3Bfc3JjZGlyID0gLi8KKy9bOj1dLyFkCisvXlxcLi9kCisvID0gL2IKKy8gLj0gL2IKKy86LyFiCitzLzouKi86Lworcy8gLyAgL2cKK3MvIFxcKFthLXpdW2Etei1dKlthLXpBLVowLTldXFwpXFwoWyA6XVxcKS8gXFwxIFxcMS1hbGxcXDIvZworcy9eXFwoW2Etel1bYS16LV0qW2EtekEtWjAtOV1cXClcXChbIDpdXFwpL1xcMSBcXDEtYWxsXFwyLworcy8gIC8gL2cKKy9eYWxsIGFsbC1hbGxbIDpdL2lcXAorYWxsLWNvbmZpZ3VyZWQgOiBhbGwtYWxsCitzLyBbYS16QS1aMC05LV0qLWFsbCBbYS16QS1aMC05LV0qLWFsbC1hbGwvL2cKKy8tYWxsLWFsbC9kCithXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyB1c2U9JHggYmFzZW5hbWUgIlwkXEAiIC1hbGwgJHg7IG49JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkbiAqIFwkXEAiOyBpZiB0ZXN0ICJcJFwkbiIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCA7IGZpIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgdGVzdCAiXCRcJHVzZSIgPSAiXCRcQCIgJiYgQlVJTEQ9JHggZWNobyAiXCRcJEJVSUxEIiB8IHRhaWwgLTEgJHggXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgKGNkICJcJFwkaSIgJiYgdGVzdCAhIC1mIGNvbmZpZ3VyZSAmJiBcJChNQUtFKSBcJFwkdXNlKSB8fCBleGl0OyBkb25lCisvZGlzdC1hbGwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZm91bmQ9JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkZm91bmQgXCQoUEFDS0FHRSktXCQoVkVSU0lPTikudGFyLioiIFxcXFxcXAorCTsgaWYgdGVzdCAiXCRcJGZvdW5kIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCisvZGlzdC1bYS16QS1aMC05XSotYWxsICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAuL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZm91bmQ9JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkZm91bmQgXCQoUEFDS0FHRSktXCQoVkVSU0lPTikuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZmkgOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZm9yIGYgaW4gXCRcJGkvXCQoUEFDS0FHRSktXCQoVkVSU0lPTikuKiBcXFxcXFwKKwk7IGRvIHRlc3QgLWYgIlwkXCRmIiAmJiBtdiAiXCRcJGYiIFwkKFBVQikuIDsgZG9uZSA7IGJyZWFrIDsgZG9uZQorL2Rpc3RjbGVhbi1hbGwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiAtYWxsICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIChhbGwgbG9jYWwgYnVpbGRzKSIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiIyBybSAtciBcJFwkaSI7IGRvbmUgOyBlY2hvICIjIChzbGVlcCAzKSIgOyBzbGVlcCAzIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIlwkXCRpIiB8IGdyZXAgIl4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIlwkXCRpIiB8IGdyZXAgIl4uLi8iID4gL2Rldi9udWxsICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAicm0gLXIgXCRcJGkiOyAocm0gLXIgIlwkXCRpIikgOyBkb25lIDsgcm0gTWFrZWZpbGUKK19FT0YKKyAgICAgIGNwICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRhY190b3Bfc3JjZGlyL21ha2VmaWxlLnNlZH4iICAgICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCAtZiAkdG1wL2NvbmZ0ZW1wLnNlZCBNYWtlZmlsZSA+JGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUKKyAgICAgIGlmIHRlc3QgLWYgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlLm1rIiA7IHRoZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleHRlbmQgdG9wX3NyY2Rpci9NYWtlZmlsZSB3aXRoIHRvcF9zcmNkaXIvTWFrZWZpbGUubWsiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXh0ZW5kIHRvcF9zcmNkaXIvTWFrZWZpbGUgd2l0aCB0b3Bfc3JjZGlyL01ha2VmaWxlLm1rIiA+JjY7fQorICAgICAgICBjYXQgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUubWsgPj4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICAgICAgZmkgOyB4eHh4PSIjIyMjIgorICAgICAgZWNobyAiJHh4eHggQ09ORklHVVJBVElPTlMgRk9SIFRPUExFVkVMIE1BS0VGSUxFOiAiID4+JGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUKKyAgICAgICMgc2FuaXR5IGNoZWNrCisgICAgICBpZiBncmVwICdeOyBlY2hvICJNQUtFICcgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBidWdneSBzZWQgZm91bmQgLSBpdCBkZWxldGVzIHRhYiBpbiBcImFcIiB0ZXh0IHBhcnRzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGJ1Z2d5IHNlZCBmb3VuZCAtIGl0IGRlbGV0ZXMgdGFiIGluIFwiYVwiIHRleHQgcGFydHMiID4mNjt9CisgICAgICAgICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIC1lICcvXkAgSE9TVD0vcy9eLwkvJyAtZSAnL147IC9zL14vCS8nICRhY190b3Bfc3JjZGlyL01ha2VmaWxlIFwKKyAgICAgICAgICA+JGFjX3RvcF9zcmNkaXIvTWFrZWZpbGV+CisgICAgICAgICh0ZXN0IC1zICRhY190b3Bfc3JjZGlyL01ha2VmaWxlfiAmJiBtdiAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZX4gJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUpIDI+L2Rldi9udWxsCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIHh4eHg9IlxcI1xcI1xcI1xcIyIKKyAgICAgICMgZWNobyAiL14keHh4eCAqJGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0IC9kIiA+JHRtcC9jb25mdGVtcC5zZWQKKyAgICAgIGVjaG8gInMhXiR4eHh4IFtefF0qIHwgKiRheF9lbmFibGVfYnVpbGRkaXIgKlwkISR4eHh4IC4uLi4uLiAkYXhfZW5hYmxlX2J1aWxkZGlyISIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCAtZiAiJHRtcC9jb25mdGVtcC5zZWQiICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgPiR0bXAvbWtmaWxlLnRtcAorICAgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkYWNfdG9wX3NyY2Rpci9tYWtlZmlsZXMuc2VkfiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICAgY3AgIiR0bXAvbWtmaWxlLnRtcCIgICAiJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGVzLm91dH4iICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICBpZiBjbXAgLXMgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiAiJHRtcC9ta2ZpbGUudG1wIiAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBrZWVwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBrZWVwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZSIgPiY2O30KKyAgICAgICAgcm0gIiR0bXAvbWtmaWxlLnRtcCIKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXVzaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiByZXVzaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZSIgPiY2O30KKyAgICAgICAgbXYgIiR0bXAvbWtmaWxlLnRtcCIgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIgorICAgICAgZmkKKyAgICBmaQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogYnVpbGQgaW4gJGF4X2VuYWJsZV9idWlsZGRpciAoSE9TVD0kYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QpIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGJ1aWxkIGluICRheF9lbmFibGVfYnVpbGRkaXIgKEhPU1Q9JGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0KSIgPiY2O30KKyAgICB4eHh4PSIjIyMjIgorICAgIGVjaG8gIiR4eHh4IiAiJGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0IiAifCRheF9lbmFibGVfYnVpbGRkaXIiID4+JGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUKKyAgZmkKKyA7OwogICAgICJkZXBmaWxlcyI6QykgdGVzdCB4IiRBTURFUF9UUlVFIiAhPSB4IiIgfHwgewogICAjIEF1dG9jb25mIDIuNjIgcXVvdGVzIC0tZmlsZSBhcmd1bWVudHMgZm9yIGV2YWwsIGJ1dCBub3Qgd2hlbiBmaWxlcwogICAjIGFyZSBsaXN0ZWQgd2l0aG91dCAtLWZpbGUuICBMZXQncyBwbGF5IHNhZmUgYW5kIG9ubHkgZW5hYmxlIHRoZSBldmFsCkBAIC0xNDI2OCw3ICsxNjcyNCw4IEBACiAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICMKICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjICAgICAgICAgICAgICAgICBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgpAQCAtMTQzMTYsNiArMTY3NzMsMTUgQEAKICMgV2hldGhlciBvciBub3QgdG8gb3B0aW1pemUgZm9yIGZhc3QgaW5zdGFsbGF0aW9uLgogZmFzdF9pbnN0YWxsPSRlbmFibGVfZmFzdF9pbnN0YWxsCiAKKyMgU2hlbGwgdG8gdXNlIHdoZW4gaW52b2tpbmcgc2hlbGwgc2NyaXB0cy4KK1NIRUxMPSRsdF9TSEVMTAorCisjIEFuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzLgorRUNITz0kbHRfRUNITworCisjIFRoZSBQQVRIIHNlcGFyYXRvciBmb3IgdGhlIGJ1aWxkIHN5c3RlbS4KK1BBVEhfU0VQQVJBVE9SPSRsdF9QQVRIX1NFUEFSQVRPUgorCiAjIFRoZSBob3N0IHN5c3RlbS4KIGhvc3RfYWxpYXM9JGhvc3RfYWxpYXMKIGhvc3Q9JGhvc3QKQEAgLTE0MzY1LDkgKzE2ODMxLDExIEBACiAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiBOTDJTUD0kbHRfbHRfTkwyU1AKIAotIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLgotcmVsb2FkX2ZsYWc9JGx0X3JlbG9hZF9mbGFnCi1yZWxvYWRfY21kcz0kbHRfcmVsb2FkX2NtZHMKKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKworIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKIAogIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KIE9CSkRVTVA9JGx0X09CSkRVTVAKQEAgLTE0Mzc1LDEzICsxNjg0MywzMCBAQAogIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAogCi0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgogZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCiAKKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCitmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorCisjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisKKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCitETExUT09MPSRsdF9ETExUT09MCisKKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorCiAjIFRoZSBhcmNoaXZlci4KIEFSPSRsdF9BUgorCisjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgogQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCiAKKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKwogIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KIFNUUklQPSRsdF9TVFJJUAogCkBAIC0xNDM5MCw2ICsxNjg3NSw5IEBACiBvbGRfcG9zdGluc3RhbGxfY21kcz0kbHRfb2xkX3Bvc3RpbnN0YWxsX2NtZHMKIG9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0dW5pbnN0YWxsX2NtZHMKIAorIyBXaGV0aGVyIHRvIHVzZSBhIGxvY2sgZm9yIG9sZCBhcmNoaXZlIGV4dHJhY3Rpb24uCitsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249JGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbgorCiAjIEEgQyBjb21waWxlci4KIExUQ0M9JGx0X0NDCiAKQEAgLTE0NDA4LDIxICsxNjg5NiwyNCBAQAogIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogCisjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworCisjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorCiAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KIG9iamRpcj0kb2JqZGlyCiAKLSMgU2hlbGwgdG8gdXNlIHdoZW4gaW52b2tpbmcgc2hlbGwgc2NyaXB0cy4KLVNIRUxMPSRsdF9TSEVMTAotCi0jIEFuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2hlcy4KLUVDSE89JGx0X0VDSE8KLQogIyBVc2VkIHRvIGV4YW1pbmUgbGlicmFyaWVzIHdoZW4gZmlsZV9tYWdpY19jbWQgYmVnaW5zIHdpdGggImZpbGUiLgogTUFHSUNfQ01EPSRNQUdJQ19DTUQKIAogIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKIAorIyBNYW5pZmVzdCB0b29sLgorTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorCiAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKIApAQCAtMTQ0NzksNiArMTY5NzAsOSBAQAogIyBUaGUgY29kZWQgbmFtZSBvZiB0aGUgbGlicmFyeSwgaWYgZGlmZmVyZW50IGZyb20gdGhlIHJlYWwgbmFtZS4KIHNvbmFtZV9zcGVjPSRsdF9zb25hbWVfc3BlYwogCisjIFBlcm1pc3Npb24gbW9kZSBvdmVycmlkZSBmb3IgaW5zdGFsbGF0aW9uIG9mIHNoYXJlZCBsaWJyYXJpZXMuCitpbnN0YWxsX292ZXJyaWRlX21vZGU9JGx0X2luc3RhbGxfb3ZlcnJpZGVfbW9kZQorCiAjIENvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlLgogcG9zdGluc3RhbGxfY21kcz0kbHRfcG9zdGluc3RhbGxfY21kcwogCkBAIC0xNDUxOCw2ICsxNzAxMiwxMCBAQAogIyBUaGUgbGlua2VyIHVzZWQgdG8gYnVpbGQgbGlicmFyaWVzLgogTEQ9JGx0X0xECiAKKyMgSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4KK3JlbG9hZF9mbGFnPSRsdF9yZWxvYWRfZmxhZworcmVsb2FkX2NtZHM9JGx0X3JlbG9hZF9jbWRzCisKICMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbiBvbGQtc3R5bGUgYXJjaGl2ZS4KIG9sZF9hcmNoaXZlX2NtZHM9JGx0X29sZF9hcmNoaXZlX2NtZHMKIApAQCAtMTQ1MzAsMTIgKzE3MDI4LDEyIEBACiAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAKLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0KICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgogcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCiAKKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisKICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAKQEAgLTE0NTg1LDEwICsxNzA4Myw2IEBACiAjIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QKIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JGx0X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMKIAotIyBJZiBsZCBpcyB1c2VkIHdoZW4gbGlua2luZywgZmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5Ci0jIGR1cmluZyBsaW5raW5nLiAgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdC4KLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9JGx0X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQKLQogIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgIi1ycGF0aCIgZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgogaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0kbHRfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcgogCkBAIC0xNDYyMiw5ICsxNzExNiw2IEBACiAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKIAotIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotCiAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAKQEAgLTE0NjQwLDYgKzE3MTMxLDkgQEAKICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogCisjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCitwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisKICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAKQEAgLTE0NjcyLDIxMiArMTcxNjYsMTY5IEBACiAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCiAKLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0gIHllcykKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotIyBjYWxsOgotIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci19Ci0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotICBlc2FjCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAotfQorICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCitmdW5jX2Rpcm5hbWUgKClcCit7XAorXCAgICBjYXNlICR7MX0gaW5cCitcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCitcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKK1wgICAgZXNhY1wKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIAogCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gIGNhc2UgJHsyfSBpbgotICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJVxcXFwkezJ9XCQlJSJgOzsKLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyUkezJ9XCQlJSJgOzsKLSAgZXNhYwotfQotCi0jIHNlZCBzY3JpcHRzOgotbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19vcHQiYAotICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX2FyZyJgCi19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICdzL1wuW14uXSokLy5sby8nYAotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi19Ci0KLV9MVF9FT0YKLWVzYWMKLQotY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0gIHllcykKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkMSs9XCQyIgotfQotX0xUX0VPRgotICAgIDs7Ci0gICopCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJDE9XCQkMVwkMiIKLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gIGVzYWMKKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorZnVuY19iYXNlbmFtZSAoKVwKK3tcCitcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogCiAKLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCit7XAorXCAgICBjYXNlICR7MX0gaW5cCitcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCitcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKK1wgICAgZXNhY1wKK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiAKLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorCisgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorZnVuY19zdHJpcG5hbWUgKClcCit7XAorXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCitcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCitmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAore1wKK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCit7XAorXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKK2Z1bmNfbG8ybyAoKVwKK3tcCitcICAgIGNhc2UgJHsxfSBpblwKK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCitcICAgIGVzYWNcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCitmdW5jX3hmb3JtICgpXAore1wKKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKK2Z1bmNfYXJpdGggKClcCit7XAorICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKK2Z1bmNfbGVuICgpXAore1wKKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworZmkKKworaWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKK2Z1bmNfYXBwZW5kICgpXAore1wKKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorZnVuY19hcHBlbmRfcXVvdGVkICgpXAore1wKK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCitcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitlbHNlCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZmkKKworaWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CitmaQorCisKKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICBjaG1vZCAreCAiJG9maWxlIgogCkBAIC0xNDg5Nyw3ICsxNzM0OCw3IEBACiBhY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQogCiB0ZXN0ICRhY193cml0ZV9mYWlsID0gMCB8fAotICBhc19mbl9lcnJvciAid3JpdGUgZmFpbHVyZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gIndyaXRlIGZhaWx1cmUgY3JlYXRpbmcgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CiAKIAogIyBjb25maWd1cmUgaXMgd3JpdGluZyB0byBjb25maWcubG9nLCBhbmQgdGhlbiBjYWxscyBjb25maWcuc3RhdHVzLgpAQCAtMTQ5MTgsNyArMTczNjksNyBAQAogICBleGVjIDU+PmNvbmZpZy5sb2cKICAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRoZSBpZiB3aXRoICQ/ID0gMSwgd2hpY2gKICAgIyB3b3VsZCBtYWtlIGNvbmZpZ3VyZSBmYWlsIGlmIHRoaXMgaXMgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24uCi0gICRhY19jc19zdWNjZXNzIHx8IGFzX2ZuX2V4aXQgJD8KKyAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5fZXhpdCAxCiBmaQogaWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIiAmJiB0ZXN0ICIkZW5hYmxlX29wdGlvbl9jaGVja2luZyIgIT0gbm87IHRoZW4KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjUKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUuYWMKaW5kZXggODdjNjNlMS4uZDg2NTJhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUuYWMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUuYWMKQEAgLTMsOSArMyw5IEBACiAjIGZpbGUgZnJvbSBsaWJmZmkgLSBzbGlnaHRseSBwYXRjaGVkIGZvciBjdHlwZXMKICMKIAotQUNfUFJFUkVRKDIuNjMpCitBQ19QUkVSRVEoMi42OCkKIAotQUNfSU5JVChbbGliZmZpXSwgWzMuMC4xMHJjMF0sIFtodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sXSkKK0FDX0lOSVQoW2xpYmZmaV0sIFszLjAuMTFdLCBbaHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzXSkKIEFDX0NPTkZJR19IRUFERVJTKFtmZmljb25maWcuaF0pCiAKIEFDX0NBTk9OSUNBTF9TWVNURU0KQEAgLTEzLDE2ICsxMywyMiBAQAogCiAuICR7c3JjZGlyfS9jb25maWd1cmUuaG9zdAogCitBWF9FTkFCTEVfQlVJTERESVIKKwogQU1fSU5JVF9BVVRPTUFLRQogCiAjIFRoZSBzYW1lIGFzIGluIGJvZWhtLWdjIGFuZCBsaWJzdGRjKysuIEhhdmUgdG8gYm9ycm93IGl0IGZyb20gdGhlcmUuCiAjIFdlIG11c3QgZm9yY2UgQ0MgdG8gL25vdC8gYmUgcHJlY2lvdXMgdmFyaWFibGVzOyBvdGhlcndpc2UKICMgdGhlIHdyb25nLCBub24tbXVsdGlsaWItYWRqdXN0ZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGluIG11bHRpbGlicy4KICMgQXMgYSBzaWRlIGVmZmVjdCwgd2UgaGF2ZSB0byBzdWJzdCBDRkxBR1Mgb3Vyc2VsdmVzLgorIyBBbHNvIHNhdmUgYW5kIHJlc3RvcmUgQ0ZMQUdTLCBzaW5jZSBBQ19QUk9HX0NDIHdpbGwgY29tZSB1cCB3aXRoCisjIGRlZmF1bHRzIG9mIGl0cyBvd24gaWYgbm9uZSBhcmUgcHJvdmlkZWQuCiAKIG00X3JlbmFtZShbX0FDX0FSR19WQVJfUFJFQ0lPVVNdLFtyZWFsX1BSRUNJT1VTXSkKIG00X2RlZmluZShbX0FDX0FSR19WQVJfUFJFQ0lPVVNdLFtdKQorc2F2ZV9DRkxBR1M9JENGTEFHUwogQUNfUFJPR19DQworQ0ZMQUdTPSRzYXZlX0NGTEFHUwogbTRfdW5kZWZpbmUoW19BQ19BUkdfVkFSX1BSRUNJT1VTXSkKIG00X3JlbmFtZShbcmVhbF9QUkVDSU9VU10sW19BQ19BUkdfVkFSX1BSRUNJT1VTXSkKIApAQCAtMzMsNiArMzksMTIgQEAKIEFDX1BST0dfTElCVE9PTAogQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQogCitBWF9DQ19NQVhPUFQKK0FYX0NGTEFHU19XQVJOX0FMTAoraWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgIENGTEFHUz0iJENGTEFHUyAtZmV4Y2VwdGlvbnMiCitmaQorCiBBTV9NQUlOVEFJTkVSX01PREUKIAogQUNfQ0hFQ0tfSEVBREVSUyhzeXMvbW1hbi5oKQpAQCAtNDYsNyArNTgsNyBAQAogY2FzZSAiJGhvc3QiIGluCiAgIGFscGhhKi0qLSopCiAJVEFSR0VUPUFMUEhBOyBUQVJHRVRESVI9YWxwaGE7Ci0JIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUsIGNoYW5nYWJsZSB2aWEgY29tbWFuZC1saW5lIHN3aXRjaC4KKwkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdlYWJsZSB2aWEgY29tbWFuZC1saW5lIHN3aXRjaC4KIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fTE9OR19ET1VCTEVfMTI4X18pJwogCTs7CiAKQEAgLTc0LDcgKzg2LDcgQEAKIAlUQVJHRVQ9RlJWOyBUQVJHRVRESVI9ZnJ2CiAJOzsKIAotICBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCopCisgIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KiB8IGhwcGEqLSotb3BlbmJzZCopCiAJVEFSR0VUPVBBX0xJTlVYOyBUQVJHRVRESVI9cGEKIAk7OwogICBocHBhKjY0LSotaHB1eCopCkBAIC04NywxMCArOTksMTcgQEAKICAgaT84Ni0qLWZyZWVic2QqIHwgaT84Ni0qLW9wZW5ic2QqKQogCVRBUkdFVD1YODZfRlJFRUJTRDsgVEFSR0VURElSPXg4NgogCTs7Ci0gIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqKQorICBpPzg2LXdpbjMyKiB8IGk/ODYtKi1jeWd3aW4qIHwgaT84Ni0qLW1pbmd3KiB8IGk/ODYtKi1vczIqIHwgaT84Ni0qLWludGVyaXgqKQogCVRBUkdFVD1YODZfV0lOMzI7IFRBUkdFVERJUj14ODYKLQkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgdGhpcyBmb3Igc2hhcmVkbGliCi0JQU1fTFRMREZMQUdTPSItbm8tdW5kZWZpbmVkIgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogICBpPzg2LSotZGFyd2luKikKIAlUQVJHRVQ9WDg2X0RBUldJTjsgVEFSR0VURElSPXg4NgpAQCAtMTAyLDcgKzEyMSw3IEBACiAgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKICAgICAgICAgOzsKICAgaT84Ni0qLSopCi0JVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgorCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKIAk7OwogCiAgIGlhNjQqLSotKikKQEAgLTExNywzMCArMTM2LDQwIEBACiAJVEFSR0VUPU02OEs7IFRBUkdFVERJUj1tNjhrCiAJOzsKIAotICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKikKKyAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiogfCBtaXBzKi0qLXJ0ZW1zKikKIAlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogCTs7Ci0gIG1pcHMqLSotbGludXgqKQorICBtaXBzKi0qLWxpbnV4KiB8IG1pcHMqLSotb3BlbmJzZCopCiAJIyBTdXBwb3J0IDEyOC1iaXQgbG9uZyBkb3VibGUgZm9yIE5ld0FCSS4KIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fbWlwczY0KScKIAlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwogCTs7CiAKKyAgbW94aWUtKi0qKQorICAgICAgICBUQVJHRVQ9TU9YSUU7IFRBUkdFVERJUj1tb3hpZQorCTs7CisKICAgcG93ZXJwYyotKi1saW51eCogfCBwb3dlcnBjLSotc3lzdiopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKKyAgcG93ZXJwYy0qLWFtaWdhb3MqKQorCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYworCTs7CiAgIHBvd2VycGMtKi1iZW9zKikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OwotICBwb3dlcnBjLSotZGFyd2luKikKKyAgcG93ZXJwYy0qLWRhcndpbiogfCBwb3dlcnBjNjQtKi1kYXJ3aW4qKQogCVRBUkdFVD1QT1dFUlBDX0RBUldJTjsgVEFSR0VURElSPXBvd2VycGMKIAk7OwogICBwb3dlcnBjLSotYWl4KiB8IHJzNjAwMC0qLWFpeCopCiAJVEFSR0VUPVBPV0VSUENfQUlYOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7Ci0gIHBvd2VycGMtKi1mcmVlYnNkKikKKyAgcG93ZXJwYy0qLWZyZWVic2QqIHwgcG93ZXJwYy0qLW9wZW5ic2QqKQogCVRBUkdFVD1QT1dFUlBDX0ZSRUVCU0Q7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKKyAgcG93ZXJwYzY0LSotZnJlZWJzZCopCisJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCisJOzsKICAgcG93ZXJwYyotKi1ydGVtcyopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKQEAgLTE2Niw2ICsxOTUsMTUgQEAKIAogICB4ODZfNjQtKi1jeWd3aW4qIHwgeDg2XzY0LSotbWluZ3cqKQogCVRBUkdFVD1YODZfV0lONjQ7IFRBUkdFVERJUj14ODYKKwkjIEFsbCBtaW5ndy9jeWd3aW4vd2luMzIgYnVpbGRzIHJlcXVpcmUgLW5vLXVuZGVmaW5lZCBmb3Igc2hhcmVkbGliLgorCSMgV2UgbXVzdCBhbHNvIGNoZWNrIHdpdGhfY3Jvc3NfaG9zdCB0byBkZWNpZGUgaWYgdGhpcyBpcyBhIG5hdGl2ZQorCSMgb3IgY3Jvc3MtYnVpbGQgYW5kIHNlbGVjdCB3aGVyZSB0byBpbnN0YWxsIGRsbHMgYXBwcm9wcmlhdGVseS4KKwlpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorCSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQodG9vbGV4ZWNsaWJkaXIpIic7CisJZWxzZQorCSAgQU1fTFRMREZMQUdTPSctbm8tdW5kZWZpbmVkIC1iaW5kaXIgIiQoYmluZGlyKSInOworCWZpCiAJOzsKIAogICB4ODZfNjQtKi0qKQpAQCAtMTkxLDYgKzIyOSw3IEBACiBBTV9DT05ESVRJT05BTChJQTY0LCB0ZXN0IHgkVEFSR0VUID0geElBNjQpCiBBTV9DT05ESVRJT05BTChNMzJSLCB0ZXN0IHgkVEFSR0VUID0geE0zMlIpCiBBTV9DT05ESVRJT05BTChNNjhLLCB0ZXN0IHgkVEFSR0VUID0geE02OEspCitBTV9DT05ESVRJT05BTChNT1hJRSwgdGVzdCB4JFRBUkdFVCA9IHhNT1hJRSkKIEFNX0NPTkRJVElPTkFMKFBPV0VSUEMsIHRlc3QgeCRUQVJHRVQgPSB4UE9XRVJQQykKIEFNX0NPTkRJVElPTkFMKFBPV0VSUENfQUlYLCB0ZXN0IHgkVEFSR0VUID0geFBPV0VSUENfQUlYKQogQU1fQ09ORElUSU9OQUwoUE9XRVJQQ19EQVJXSU4sIHRlc3QgeCRUQVJHRVQgPSB4UE9XRVJQQ19EQVJXSU4pCkBAIC0yMjgsMTcgKzI2Nyw3IEBACiAKIEFDX0NfQklHRU5ESUFOCiAKLUFDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgLmNmaSBwc2V1ZG8tb3Agc3VwcG9ydF0sCi0gICAgbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AsIFsKLSAgICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD11bmtub3duCi0gICAgQUNfVFJZX0NPTVBJTEUoW2FzbSAoIi5jZmlfc3RhcnRwcm9jXG5cdC5jZmlfZW5kcHJvYyIpO10sLAotCQkgICBbbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9eWVzXSwKLQkJICAgW2xpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPW5vXSkKLV0pCi1pZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KLSAgICBBQ19ERUZJTkUoSEFWRV9BU19DRklfUFNFVURPX09QLCAxLAotCSAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmNmaV8qIGRpcmVjdGl2ZXMuXSkKLWZpCitHQ0NfQVNfQ0ZJX1BTRVVET19PUAogCiBpZiB0ZXN0IHgkVEFSR0VUID0geFNQQVJDOyB0aGVuCiAgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciBhbmQgbGlua2VyIHN1cHBvcnQgdW5hbGlnbmVkIHBjIHJlbGF0ZWQgcmVsb2NzXSwKQEAgLTI3Niw3ICszMDUsNyBAQAogCWxpYmZmaV9jdl9hc194ODZfcGNyZWwsIFsKIAlsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPXllcwogCWVjaG8gJy50ZXh0OyBmb286IG5vcDsgLmRhdGE7IC5sb25nIGZvby0uOyAudGV4dCcgPiBjb25mdGVzdC5zCi0JaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgZ3JlcCAtaSB3YXJuaW5nID4gL2Rldi9udWxsOyB0aGVuCisJaWYgJENDICRDRkxBR1MgLWMgY29uZnRlc3QucyAyPiYxIHwgJEVHUkVQIC1pICdpbGxlZ2FsfHdhcm5pbmcnID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIGxpYmZmaV9jdl9hc194ODZfcGNyZWw9bm8KIAlmaQogCV0pCkBAIC0yODQsNTQgKzMxMywxMTQgQEAKIAlBQ19ERUZJTkUoSEFWRV9BU19YODZfUENSRUwsIDEsCiAJCSAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBQQyByZWxhdGl2ZSByZWxvY3MuXSkKICAgICBmaQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuYXNjaWkgcHNldWRvLW9wIHN1cHBvcnRdLAorICAgICAgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AsIFsKKyAgICAgICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLmFzY2lpCisgICAgICAgQUNfVFJZX0NPTVBJTEUoW2FzbSAoIi5hc2NpaSBcXCJzdHJpbmdcXCIiKTtdLCwKKwkJICAgICAgIFtsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXllc10sCisJCSAgICAgICBbbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcD1ub10pCisgICAgXSkKKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgorICAgICAgIEFDX0RFRklORShIQVZFX0FTX0FTQ0lJX1BTRVVET19PUCwgMSwKKwkgICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuYXNjaWkuXSkKKyAgICBmaQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuc3RyaW5nIHBzZXVkby1vcCBzdXBwb3J0XSwKKyAgICAgICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCwgWworICAgICAgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLnN0cmluZworICAgICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuc3RyaW5nIFxcInN0cmluZ1xcIiIpO10sLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXllc10sCisJCSAgICAgICBbbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9bm9dKQorICAgIF0pCisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisgICAgICAgQUNfREVGSU5FKEhBVkVfQVNfU1RSSU5HX1BTRVVET19PUCwgMSwKKwkgICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuc3RyaW5nLl0pCisgICAgZmkKIGZpCiAKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjY0OyB0aGVuCisgICAgTFRfU1lTX1NZTUJPTF9VU0NPUkUKKyAgICBpZiB0ZXN0ICJ4JHN5c19zeW1ib2xfdW5kZXJzY29yZSIgPSB4eWVzOyB0aGVuCisgICAgICAgIEFDX0RFRklORShTWU1CT0xfVU5ERVJTQ09SRSwgMSwgW0RlZmluZSBpZiBzeW1ib2xzIGFyZSB1bmRlcnNjb3JlZC5dKQorICAgIGZpCitmaQorCisKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEU9MAogY2FzZSAiJHRhcmdldCIgaW4KLSAgICAgKi1hcHBsZS1kYXJ3aW4xMCogfCAqLSotZnJlZWJzZCogfCAqLSotb3BlbmJzZCogfCAqLXBjLXNvbGFyaXMqKQorICAgICAqYXJtKi1hcHBsZS1kYXJ3aW4qKQorICAgICAgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEU9MQorICAgICAgIEFDX0RFRklORShGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFLCAxLAorICAgICAgICAgICAgICAgICBbQ2Fubm90IHVzZSBQUk9UX0VYRUMgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8KKyAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZSBtZWFuc10pCisgICAgIDs7CisgICAgICotYXBwbGUtZGFyd2luMVtbMTBdXSogfCAqLSotZnJlZWJzZCogfCAqLSota2ZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKICAgICAgICBBQ19ERUZJTkUoRkZJX01NQVBfRVhFQ19XUklULCAxLAogICAgICAgICAgICAgICAgICBbQ2Fubm90IHVzZSBtYWxsb2Mgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8KICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZSBtZWFuc10pCiAgICAgIDs7CiBlc2FjCitBTV9DT05ESVRJT05BTChGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFLCB0ZXN0IHgkRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IHgxKQorQUNfU1VCU1QoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSkKIAotQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seV0sCi0gICAgbGliZmZpX2N2X3JvX2VoX2ZyYW1lLCBbCi0JbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCi0JZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYwotCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAotCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZmkKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlXSwKKwlsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUsIFsKKwlsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9eWVzCisJZWNobyAnLnNlY3Rpb24gLmVoX2ZyYW1lLCJhIixAdW53aW5kJyA+IGNvbmZ0ZXN0LnMKKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPW5vCiAJZmkKLQlybSAtZiBjb25mdGVzdC4qCi0gICAgXSkKLWlmIHRlc3QgIngkbGliZmZpX2N2X3JvX2VoX2ZyYW1lIiA9IHh5ZXM7IHRoZW4KLSAgICBBQ19ERUZJTkUoSEFWRV9ST19FSF9GUkFNRSwgMSwKLQkgICAgICBbRGVmaW5lIGlmIC5laF9mcmFtZSBzZWN0aW9ucyBzaG91bGQgYmUgcmVhZC1vbmx5Ll0pCi0gICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYSIsCi0JICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS5dKQotZWxzZQotICAgIEFDX0RFRklORShFSF9GUkFNRV9GTEFHUywgImF3IiwKLQkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLl0pCisJXSkKKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPSB4eWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUsIDEsCisJCSAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyB1bndpbmQgc2VjdGlvbiB0eXBlLl0pCisgICAgZmkKIGZpCiAKLUFDX0NBQ0hFX0NIRUNLKFtmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKV0sCi0gICAgbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSwgWwotCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxOyB9JyA+IGNvbmZ0ZXN0LmMKLQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCi0JaWYgQUNfVFJZX0NPTU1BTkQoJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCi0JICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcwotCSAgICBmaQotCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgotICAgIF0pCi1pZiB0ZXN0ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlID0geWVzOyB0aGVuCi0gICAgQUNfREVGSU5FKEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFLCAxLAotCSAgICAgIFtEZWZpbmUgaWYgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKSBpcyBzdXBwb3J0ZWQuXSkKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5XSwKKyAgICAgIGxpYmZmaV9jdl9yb19laF9mcmFtZSwgWworICAJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCisgIAllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCisgIAlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKKyAgCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgorICAgICAgXSkKKyAgaWYgdGVzdCAieCRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID0geHllczsgdGhlbgorICAgICAgQUNfREVGSU5FKEhBVkVfUk9fRUhfRlJBTUUsIDEsCisgIAkgICAgICBbRGVmaW5lIGlmIC5laF9mcmFtZSBzZWN0aW9ucyBzaG91bGQgYmUgcmVhZC1vbmx5Ll0pCisgICAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhIiwKKyAgCSAgICAgIFtEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuICBdKQorICBlbHNlCisgICAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhdyIsCisgIAkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLiAgXSkKKyAgZmkKKworICBBQ19DQUNIRV9DSEVDSyhbZm9yIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSldLAorICAgICAgbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSwgWworICAJZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDEgIDsgfScgPiBjb25mdGVzdC5jCisgIAlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPW5vCisgIAlpZiBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAtV2Vycm9yIC1TIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QucyAxPiZBU19NRVNTQUdFX0xPR19GRCk7IHRoZW4KKyAgCSAgICBpZiBncmVwICdcLmhpZGRlbi4qZm9vJyBjb25mdGVzdC5zID4vZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgorICAgICAgXSkKKyAgaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgorICAgICAgQUNfREVGSU5FKEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFLCAxLAorICAJICAgICAgW0RlZmluZSBpZiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpIGlzIHN1cHBvcnRlZC5dKQorICBmaQogZmkKIAogQUhfQk9UVE9NKFsKQEAgLTM2MCw2ICs0NDksNyBAQAogICBpZiB0ZXN0ICIkZW5hYmxlX2RlYnVnIiA9ICJ5ZXMiOyB0aGVuCiAgICAgQUNfREVGSU5FKEZGSV9ERUJVRywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSB3YW50IGV4dHJhIGRlYnVnZ2luZy5dKQogICBmaSkKK0FNX0NPTkRJVElPTkFMKEZGSV9ERUJVRywgdGVzdCAiJGVuYWJsZV9kZWJ1ZyIgPSAieWVzIikKIAogQUNfQVJHX0VOQUJMRShzdHJ1Y3RzLAogWyAgLS1kaXNhYmxlLXN0cnVjdHMgICAgICAgb21pdCBjb2RlIGZvciBzdHJ1Y3Qgc3VwcG9ydF0sCkBAIC0zNzksMjEgKzQ2OSwyNSBAQAogICAgIEFDX0RFRklORShVU0lOR19QVVJJRlksIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIFB1cmlmeSBhbmQgd2FudCB0byBzdXBwcmVzcyBzcHVyaW91cyBtZXNzYWdlcy5dKQogICBmaSkKIAotaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgotICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJwotZWxzZQotICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworIyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgZXZlciB1c2VkIHdoZW4gd2UgY3Jvc3MtYnVpbGQgdG8gWDg2X1dJTjMyLgorIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCitpZiB0ZXN0IHgiJEdDQyIgIT0geCJubyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKyAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisgICAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJworICBlbHNlCisgICAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworICBmaQorICBtdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorICBjYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KKyAgICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCisgICAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKKyAgZXNhYworICBBQ19TVUJTVCh0b29sZXhlY2RpcikKKyAgQUNfU1VCU1QodG9vbGV4ZWNsaWJkaXIpCiBmaQotbXVsdGlfb3NfZGlyZWN0b3J5PWAkQ0MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLWNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgotICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCi0gICopIHRvb2xleGVjbGliZGlyPSR0b29sZXhlY2xpYmRpci8kbXVsdGlfb3NfZGlyZWN0b3J5IDs7Ci1lc2FjCi1BQ19TVUJTVCh0b29sZXhlY2RpcikKLUFDX1NVQlNUKHRvb2xleGVjbGliZGlyKQogCiBpZiB0ZXN0ICIke211bHRpbGlifSIgPSAieWVzIjsgdGhlbgogICBtdWx0aWxpYl9hcmc9Ii0tZW5hYmxlLW11bHRpbGliIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wCmluZGV4IGNhNWVhNGUuLmRmOGVlYTcgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RlcGNvbXAKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgZGVwY29tcCAtIGNvbXBpbGUgYSBwcm9ncmFtIGdlbmVyYXRpbmcgZGVwZW5kZW5jaWVzIGFzIHNpZGUtZWZmZWN0cwogCi1zY3JpcHR2ZXJzaW9uPTIwMDYtMTAtMTUuMTgKK3NjcmlwdHZlcnNpb249MjAwOS0wNC0yOC4yMTsgIyBVVEMKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBGcmVlCisjIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTcsOSArMTcsNyBAQAogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKLSMgMDIxMTAtMTMwMSwgVVNBLgorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CiAjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQpAQCAtODcsNiArODUsMTUgQEAKICAgIGRlcG1vZGU9ZGFzaG1zdGRvdXQKIGZpCiAKK2N5Z3BhdGhfdT0iY3lncGF0aCAtdSAtZiAtIgoraWYgdGVzdCAiJGRlcG1vZGUiID0gbXN2Y21zeXM7IHRoZW4KKyAgICMgVGhpcyBpcyBqdXN0IGxpa2UgbXN2aXN1YWxjcHAgYnV0IHcvbyBjeWdwYXRoIHRyYW5zbGF0aW9uLgorICAgIyBKdXN0IGNvbnZlcnQgdGhlIGJhY2tzbGFzaC1lc2NhcGVkIGJhY2tzbGFzaGVzIHRvIHNpbmdsZSBmb3J3YXJkCisgICAjIHNsYXNoZXMgdG8gc2F0aXNmeSBkZXBlbmQubTQKKyAgIGN5Z3BhdGhfdT0ic2VkIHMsXFxcXFxcXFwsLyxnIgorICAgZGVwbW9kZT1tc3Zpc3VhbGNwcAorZmkKKwogY2FzZSAiJGRlcG1vZGUiIGluCiBnY2MzKQogIyMgZ2NjIDMgaW1wbGVtZW50cyBkZXBlbmRlbmN5IHRyYWNraW5nIHRoYXQgZG9lcyBleGFjdGx5IHdoYXQKQEAgLTE5MiwxNCArMTk5LDE0IEBACiAnIDwgIiR0bXBkZXBmaWxlIiBcCiAgICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIHwgXAogICAgIHRyICcKLScgJyAnID4+ICRkZXBmaWxlCi0gICAgZWNobyA+PiAkZGVwZmlsZQorJyAnICcgPj4gIiRkZXBmaWxlIgorICAgIGVjaG8gPj4gIiRkZXBmaWxlIgogCiAgICAgIyBUaGUgc2Vjb25kIHBhc3MgZ2VuZXJhdGVzIGEgZHVtbXkgZW50cnkgZm9yIGVhY2ggaGVhZGVyIGZpbGUuCiAgICAgdHIgJyAnICcKICcgPCAiJHRtcGRlcGZpbGUiIFwKICAgIHwgc2VkIC1lICdzL14uKlwubzovLycgLWUgJ3MvIy4qJC8vJyAtZSAnL14kLyBkJyAtZSAncy8kLzovJyBcCi0gICA+PiAkZGVwZmlsZQorICAgPj4gIiRkZXBmaWxlIgogICBlbHNlCiAgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKICAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKQEAgLTIxNSwzNCArMjIyLDM5IEBACiAgICMgY3VycmVudCBkaXJlY3RvcnkuICBBbHNvLCB0aGUgQUlYIGNvbXBpbGVyIHB1dHMgYCRvYmplY3Q6JyBhdCB0aGUKICAgIyBzdGFydCBvZiBlYWNoIGxpbmU7ICRvYmplY3QgZG9lc24ndCBoYXZlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KICAgIyBWZXJzaW9uIDYgdXNlcyB0aGUgZGlyZWN0b3J5IGluIGJvdGggY2FzZXMuCi0gIHN0cmlwcGVkPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAncy9cKC4qXClcLi4qJC9cMS8nYAotICB0bXBkZXBmaWxlPSIkc3RyaXBwZWQudSIKKyAgZGlyPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3wvW14vXSokfC98J2AKKyAgdGVzdCAieCRkaXIiID0gIngkb2JqZWN0IiAmJiBkaXI9CisgIGJhc2U9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfF4uKi98fCcgLWUgJ3MvXC5vJC8vJyAtZSAncy9cLmxvJC8vJ2AKICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgdG1wZGVwZmlsZTE9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMj0kYmFzZS51CisgICAgdG1wZGVwZmlsZTM9JGRpci5saWJzLyRiYXNlLnUKICAgICAiJEAiIC1XYywtTQogICBlbHNlCisgICAgdG1wZGVwZmlsZTE9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMj0kZGlyJGJhc2UudQorICAgIHRtcGRlcGZpbGUzPSRkaXIkYmFzZS51CiAgICAgIiRAIiAtTQogICBmaQogICBzdGF0PSQ/CiAKLSAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuIDoKLSAgZWxzZQotICAgIHN0cmlwcGVkPWBlY2hvICIkc3RyaXBwZWQiIHwgc2VkICdzLF4uKi8sLCdgCi0gICAgdG1wZGVwZmlsZT0iJHN0cmlwcGVkLnUiCi0gIGZpCi0KICAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CiAgIGVsc2UKLSAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKICAgICBleGl0ICRzdGF0CiAgIGZpCiAKKyAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKKyAgZG8KKyAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgZG9uZQogICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KLSAgICBvdXRuYW1lPSIkc3RyaXBwZWQubyIKICAgICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJy4KICAgICAjIERvIHR3byBwYXNzZXMsIG9uZSB0byBqdXN0IGNoYW5nZSB0aGVzZSB0bwogICAgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KLSAgICBzZWQgLWUgInMsXiRvdXRuYW1lOiwkb2JqZWN0IDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCi0gICAgc2VkIC1lICJzLF4kb3V0bmFtZTogXCguKlwpJCxcMTosIiA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgorICAgIHNlZCAtZSAicyxeLipcLlthLXpdKjosJG9iamVjdDosIiA8ICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCisgICAgIyBUaGF0J3MgYSB0YWIgYW5kIGEgc3BhY2UgaW4gdGhlIFtdLgorICAgIHNlZCAtZSAncyxeLipcLlthLXpdKjpbCSBdKiwsJyAtZSAncywkLDosJyA8ICIkdG1wZGVwZmlsZSIgPj4gIiRkZXBmaWxlIgogICBlbHNlCiAgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKICAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKQEAgLTMyMyw3ICszMzUsMTIgQEAKICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuCiAgICAgc2VkIC1lICJzLF4uKlwuW2Etel0qOiwkb2JqZWN0OiwiICIkdG1wZGVwZmlsZSIgPiAiJGRlcGZpbGUiCiAgICAgIyBBZGQgYGRlcGVuZGVudC5oOicgbGluZXMuCi0gICAgc2VkIC1uZSAnMiwkezsgcy9eICovLzsgcy8gXFwqJC8vOyBzLyQvOi87IHA7fScgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisgICAgc2VkIC1uZSAnMiwkeworCSAgICAgICBzL14gKi8vCisJICAgICAgIHMvIFxcKiQvLworCSAgICAgICBzLyQvOi8KKwkgICAgICAgcAorCSAgICAgfScgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCiAgIGVsc2UKICAgICBlY2hvICIjZHVtbXkiID4gIiRkZXBmaWxlIgogICBmaQpAQCAtMzk5LDcgKzQxNiw3IEBACiAKICAgIyBSZW1vdmUgdGhlIGNhbGwgdG8gTGlidG9vbC4KICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCi0gICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCiAgICAgICBzaGlmdAogICAgIGRvbmUKICAgICBzaGlmdApAQCAtNDUwLDMyICs0NjcsMzkgQEAKICAgIiRAIiB8fCBleGl0ICQ/CiAgICMgUmVtb3ZlIGFueSBMaWJ0b29sIGNhbGwKICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCi0gICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCiAgICAgICBzaGlmdAogICAgIGRvbmUKICAgICBzaGlmdAogICBmaQogICAjIFggbWFrZWRlcGVuZAogICBzaGlmdAotICBjbGVhcmVkPW5vCi0gIGZvciBhcmcgaW4gIiRAIjsgZG8KKyAgY2xlYXJlZD1ubyBlYXQ9bm8KKyAgZm9yIGFyZworICBkbwogICAgIGNhc2UgJGNsZWFyZWQgaW4KICAgICBubykKICAgICAgIHNldCAiIjsgc2hpZnQKICAgICAgIGNsZWFyZWQ9eWVzIDs7CiAgICAgZXNhYworICAgIGlmIHRlc3QgJGVhdCA9IHllczsgdGhlbgorICAgICAgZWF0PW5vCisgICAgICBjb250aW51ZQorICAgIGZpCiAgICAgY2FzZSAiJGFyZyIgaW4KICAgICAtRCp8LUkqKQogICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciOyBzaGlmdCA7OwogICAgICMgU3RyaXAgYW55IG9wdGlvbiB0aGF0IG1ha2VkZXBlbmQgbWF5IG5vdCB1bmRlcnN0YW5kLiAgUmVtb3ZlCiAgICAgIyB0aGUgb2JqZWN0IHRvbywgb3RoZXJ3aXNlIG1ha2VkZXBlbmQgd2lsbCBwYXJzZSBpdCBhcyBhIHNvdXJjZSBmaWxlLgorICAgIC1hcmNoKQorICAgICAgZWF0PXllcyA7OwogICAgIC0qfCRvYmplY3QpCiAgICAgICA7OwogICAgICopCiAgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyI7IHNoaWZ0IDs7CiAgICAgZXNhYwogICBkb25lCi0gIG9ial9zdWZmaXg9ImBlY2hvICRvYmplY3QgfCBzZWQgJ3MvXi4qXC4vLi8nYCIKKyAgb2JqX3N1ZmZpeD1gZWNobyAiJG9iamVjdCIgfCBzZWQgJ3MvXi4qXC4vLi8nYAogICB0b3VjaCAiJHRtcGRlcGZpbGUiCiAgICR7TUFLRURFUEVORC1tYWtlZGVwZW5kfSAtbyIkb2JqX3N1ZmZpeCIgLWYiJHRtcGRlcGZpbGUiICIkQCIKICAgcm0gLWYgIiRkZXBmaWxlIgpAQCAtNDk1LDcgKzUxOSw3IEBACiAKICAgIyBSZW1vdmUgdGhlIGNhbGwgdG8gTGlidG9vbC4KICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCi0gICAgd2hpbGUgdGVzdCAkMSAhPSAnLS1tb2RlPWNvbXBpbGUnOyBkbworICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCiAgICAgICBzaGlmdAogICAgIGRvbmUKICAgICBzaGlmdApAQCAtNTMzLDEzICs1NTcsMjcgQEAKIAogbXN2aXN1YWxjcHApCiAgICMgSW1wb3J0YW50IG5vdGU6IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBtb2RlLCBhIGNvbXBpbGVyICptdXN0KgotICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LCByZWdhcmRsZXNzIG9mIC1vLAotICAjIGJlY2F1c2Ugd2UgbXVzdCB1c2UgLW8gd2hlbiBydW5uaW5nIGxpYnRvb2wuCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQuCiAgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorCiAgIElGUz0iICIKICAgZm9yIGFyZwogICBkbwogICAgIGNhc2UgIiRhcmciIGluCisgICAgLW8pCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAkb2JqZWN0KQorICAgICAgc2hpZnQKKyAgICAgIDs7CiAgICAgIi1HbSJ8Ii9HbSJ8Ii1HaSJ8Ii9HaSJ8Ii1aSSJ8Ii9aSSIpCiAJc2V0IGZub3JkICIkQCIKIAlzaGlmdApAQCAtNTUyLDE2ICs1OTAsMjMgQEAKIAk7OwogICAgIGVzYWMKICAgZG9uZQotICAiJEAiIC1FIHwKLSAgc2VkIC1uICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLyBzOjplY2hvICJgY3lncGF0aCAtdSBcXCJcMVxcImAiOnAnIHwgc29ydCB8IHVuaXEgPiAiJHRtcGRlcGZpbGUiCisgICIkQCIgLUUgMj4vZGV2L251bGwgfAorICBzZWQgLW4gJy9eI2xpbmUgWzAtOV1bMC05XSogIlwoW14iXSpcKSIvIHM6OlwxOnAnIHwgJGN5Z3BhdGhfdSB8IHNvcnQgLXUgPiAiJHRtcGRlcGZpbGUiCiAgIHJtIC1mICIkZGVwZmlsZSIKICAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKLSAgLiAiJHRtcGRlcGZpbGUiIHwgc2VkICdzJSAlXFwgJWcnIHwgc2VkIC1uICcvXlwoLipcKSQvIHM6OglcMSBcXDpwJyA+PiAiJGRlcGZpbGUiCisgIHNlZCA8ICIkdG1wZGVwZmlsZSIgLW4gLWUgJ3MlICVcXCAlZycgLWUgJy9eXCguKlwpJC8gczo6CVwxIFxcOnAnID4+ICIkZGVwZmlsZSIKICAgZWNobyAiCSIgPj4gIiRkZXBmaWxlIgotICAuICIkdG1wZGVwZmlsZSIgfCBzZWQgJ3MlICVcXCAlZycgfCBzZWQgLW4gJy9eXCguKlwpJC8gczo6XDFcOjpwJyA+PiAiJGRlcGZpbGUiCisgIHNlZCA8ICIkdG1wZGVwZmlsZSIgLW4gLWUgJ3MlICVcXCAlZycgLWUgJy9eXCguKlwpJC8gczo6XDFcOjpwJyA+PiAiJGRlcGZpbGUiCiAgIHJtIC1mICIkdG1wZGVwZmlsZSIKICAgOzsKIAorbXN2Y21zeXMpCisgICMgVGhpcyBjYXNlIGV4aXN0cyBvbmx5IHRvIGxldCBkZXBlbmQubTQgZG8gaXRzIHdvcmsuICBJdCB3b3JrcyBieQorICAjIGxvb2tpbmcgYXQgdGhlIHRleHQgb2YgdGhpcyBzY3JpcHQuICBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSBydW4sCisgICMgc2luY2UgaXQgaXMgY2hlY2tlZCBmb3IgYWJvdmUuCisgIGV4aXQgMQorICA7OworCiBub25lKQogICBleGVjICIkQCIKICAgOzsKQEAgLTU4MCw1ICs2MjUsNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLmluZm8gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbwppbmRleCA4OTZhNWVjLi40MDJmNzYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkudGV4aSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpCmluZGV4IDlmYTViMTcuLmYwZTY1MTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpCkBAIC0xOSw3ICsxOSw3IEBACiBUaGlzIG1hbnVhbCBpcyBmb3IgTGliZmZpLCBhIHBvcnRhYmxlIGZvcmVpZ24tZnVuY3Rpb24gaW50ZXJmYWNlCiBsaWJyYXJ5LgogCi1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMDgsIDIwMTAgUmVkIEhhdCwgSW5jLgorQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAyMDA4LCAyMDEwLCAyMDExIFJlZCBIYXQsIEluYy4KIAogQHF1b3RhdGlvbgogUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CkBAIC0xMzMsOCArMTMzLDYgQEAKIHlvdSB3YW50LiAgQHJlZntNdWx0aXBsZSBBQklzfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogQHZhcntuYXJnc30gaXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdGhhdCB0aGlzIGZ1bmN0aW9uIGFjY2VwdHMuCi1Ac2FtcHtsaWJmZml9IGRvZXMgbm90IHlldCBoYW5kbGUgdmFyYXJncyBmdW5jdGlvbnM7IHNlZSBAcmVme01pc3NpbmcKLUZlYXR1cmVzfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogQHZhcntydHlwZX0gaXMgYSBwb2ludGVyIHRvIGFuIEBjb2Rle2ZmaV90eXBlfSBzdHJ1Y3R1cmUgdGhhdAogZGVzY3JpYmVzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uICBAeHJlZntUeXBlc30uCkBAIC0xNTAsNiArMTQ4LDMwIEBACiBpcyBpbnZhbGlkLgogQGVuZCBkZWZ1bgogCitJZiB0aGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGlzIHZhcmlhZGljICh2YXJhcmdzKSB0aGVuCitAY29kZXtmZmlfcHJlcF9jaWZfdmFyfSBtdXN0IGJlIHVzZWQgaW5zdGVhZCBvZiBAY29kZXtmZmlfcHJlcF9jaWZ9LgorCitAZmluZGV4IGZmaV9wcmVwX2NpZl92YXIKK0BkZWZ1biBmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl92YXIgKGZmaV9jaWYgKkB2YXJ7Y2lmfSwgZmZpX2FiaSB2YXJ7YWJpfSwgdW5zaWduZWQgaW50IEB2YXJ7bmZpeGVkYXJnc30sIHVuc2lnbmVkIGludCB2YXJ7bnRvdGFsYXJnc30sIGZmaV90eXBlICpAdmFye3J0eXBlfSwgZmZpX3R5cGUgKipAdmFye2FyZ3R5cGVzfSkKK1RoaXMgaW5pdGlhbGl6ZXMgQHZhcntjaWZ9IGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gcGFyYW1ldGVycyBmb3IKK2EgY2FsbCB0byBhIHZhcmlhZGljIGZ1bmN0aW9uLiAgSW4gZ2VuZXJhbCBpdCdzIG9wZXJhdGlvbiBpcyB0aGUKK3NhbWUgYXMgZm9yIEBjb2Rle2ZmaV9wcmVwX2NpZn0gZXhjZXB0IHRoYXQ6CisKK0B2YXJ7bmZpeGVkYXJnc30gaXMgdGhlIG51bWJlciBvZiBmaXhlZCBhcmd1bWVudHMsIHByaW9yIHRvIGFueQordmFyaWFkaWMgYXJndW1lbnRzLiAgSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KKworQHZhcntudG90YWxhcmdzfSB0aGUgdG90YWwgbnVtYmVyIG9mIGFyZ3VtZW50cywgaW5jbHVkaW5nIHZhcmlhZGljCithbmQgZml4ZWQgYXJndW1lbnRzLgorCitOb3RlIHRoYXQsIGRpZmZlcmVudCBjaWYncyBtdXN0IGJlIHByZXBwZWQgZm9yIGNhbGxzIHRvIHRoZSBzYW1lCitmdW5jdGlvbiB3aGVuIGRpZmZlcmVudCBudW1iZXJzIG9mIGFyZ3VtZW50cyBhcmUgcGFzc2VkLgorCitBbHNvIG5vdGUgdGhhdCBhIGNhbGwgdG8gQGNvZGV7ZmZpX3ByZXBfY2lmX3Zhcn0gd2l0aAorQHZhcntuZml4ZWRhcmdzfT1AdmFye25vdG90YWxhcmdzfSBpcyBOT1QgZXF1aXZhbGVudCB0byBhIGNhbGwgdG8KK0Bjb2Rle2ZmaV9wcmVwX2NpZn0uCisKK0BlbmQgZGVmdW4KKwogCiBUbyBjYWxsIGEgZnVuY3Rpb24gdXNpbmcgYW4gaW5pdGlhbGl6ZWQgQGNvZGV7ZmZpX2NpZn0sIHVzZSB0aGUKIEBjb2Rle2ZmaV9jYWxsfSBmdW5jdGlvbjoKQEAgLTE3MSw3ICsxOTMsOSBAQAogQHZhcnthdmFsdWVzfSBpcyBhIHZlY3RvciBvZiBAY29kZXt2b2lkICp9IHBvaW50ZXJzIHRoYXQgcG9pbnQgdG8gdGhlCiBtZW1vcnkgbG9jYXRpb25zIGhvbGRpbmcgdGhlIGFyZ3VtZW50IHZhbHVlcyBmb3IgYSBjYWxsLiAgSWYgQHZhcntjaWZ9CiBkZWNsYXJlcyB0aGF0IHRoZSBmdW5jdGlvbiBoYXMgbm8gYXJndW1lbnRzIChpLmUuLCBAdmFye25hcmdzfSB3YXMgMCksCi10aGVuIEB2YXJ7YXZhbHVlc30gaXMgaWdub3JlZC4KK3RoZW4gQHZhcnthdmFsdWVzfSBpcyBpZ25vcmVkLiAgTm90ZSB0aGF0IGFyZ3VtZW50IHZhbHVlcyBtYXkgYmUKK21vZGlmaWVkIGJ5IHRoZSBjYWxsZWUgKGZvciBpbnN0YW5jZSwgc3RydWN0cyBwYXNzZWQgYnkgdmFsdWUpOyB0aGUKK2J1cmRlbiBvZiBjb3B5aW5nIHBhc3MtYnktdmFsdWUgYXJndW1lbnRzIGlzIHBsYWNlZCBvbiB0aGUgY2FsbGVyLgogQGVuZCBkZWZ1bgogCiAKQEAgLTQzOCw3ICs0NjIsNyBAQAogaGVhcC4gIE1lbW9yeSBtYW5hZ2VtZW50IGZvciBjbG9zdXJlcyBpcyBoYW5kbGVkIGJ5IGEgcGFpciBvZgogZnVuY3Rpb25zOgogCi1AZmluZGV4IGZmaV9jbG9zdXJlX2FsbG9jYQorQGZpbmRleCBmZmlfY2xvc3VyZV9hbGxvYwogQGRlZnVuIHZvaWQgKmZmaV9jbG9zdXJlX2FsbG9jIChzaXplX3QgQHZhcntzaXplfSwgdm9pZCAqKkB2YXJ7Y29kZX0pCiBBbGxvY2F0ZSBhIGNodW5rIG9mIG1lbW9yeSBob2xkaW5nIEB2YXJ7c2l6ZX0gYnl0ZXMuICBUaGlzIHJldHVybnMgYQogcG9pbnRlciB0byB0aGUgd3JpdGFibGUgYWRkcmVzcywgYW5kIHNldHMgKkB2YXJ7Y29kZX0gdG8gdGhlCkBAIC01NzAsOSArNTk0LDcgQEAKIAogQGl0ZW1pemUgQGJ1bGxldAogQGl0ZW0KLVRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGNhbGxpbmcgdmFyYXJncyBmdW5jdGlvbnMuICBUaGlzIG1heSB3b3JrIG9uCi1zb21lIHBsYXRmb3JtcywgZGVwZW5kaW5nIG9uIGhvdyB0aGUgQUJJIGlzIGRlZmluZWQsIGJ1dCBpdCBpcyBub3QKLXJlbGlhYmxlLgorVmFyaWFkaWMgY2xvc3VyZXMuCiAKIEBpdGVtCiBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciBiaXQgZmllbGRzIGluIHN0cnVjdHVyZXMuCkBAIC01ODksNiArNjExLDggQEAKIEBjIGFueXRoaW5nIGVsc2U/CiBAZW5kIGl0ZW1pemUKIAorTm90ZSB0aGF0IHZhcmlhZGljIHN1cHBvcnQgaXMgdmVyeSBuZXcgYW5kIHRlc3RlZCBvbiBhIHJlbGF0aXZlbHkKK3NtYWxsIG51bWJlciBvZiBwbGF0Zm9ybXMuCiAKIEBub2RlIEluZGV4CiBAdW5udW1iZXJlZCBJbmRleApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpCmluZGV4IDgxZDBiNzkuLmUyNTlhMTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9zdGFtcC12dGkKQEAgLTEsNCArMSw0IEBACi1Ac2V0IFVQREFURUQgMTQgRmVicnVhcnkgMjAwOAotQHNldCBVUERBVEVELU1PTlRIIEZlYnJ1YXJ5IDIwMDgKLUBzZXQgRURJVElPTiAzLjAuOAotQHNldCBWRVJTSU9OIDMuMC44CitAc2V0IFVQREFURUQgMTEgQXByaWwgMjAxMgorQHNldCBVUERBVEVELU1PTlRIIEFwcmlsIDIwMTIKK0BzZXQgRURJVElPTiAzLjAuMTEKK0BzZXQgVkVSU0lPTiAzLjAuMTEKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aQppbmRleCA4MWQwYjc5Li5lMjU5YTEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvdmVyc2lvbi50ZXhpCkBAIC0xLDQgKzEsNCBAQAotQHNldCBVUERBVEVEIDE0IEZlYnJ1YXJ5IDIwMDgKLUBzZXQgVVBEQVRFRC1NT05USCBGZWJydWFyeSAyMDA4Ci1Ac2V0IEVESVRJT04gMy4wLjgKLUBzZXQgVkVSU0lPTiAzLjAuOAorQHNldCBVUERBVEVEIDExIEFwcmlsIDIwMTIKK0BzZXQgVVBEQVRFRC1NT05USCBBcHJpbCAyMDEyCitAc2V0IEVESVRJT04gMy4wLjExCitAc2V0IFZFUlNJT04gMy4wLjExCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbgppbmRleCBlMDNiYmY5Li4xNjhlYmMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZmZpY29uZmlnLmguaW4KQEAgLTE3LDYgKzE3LDkgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IGV4dHJhIGRlYnVnZ2luZy4gKi8KICN1bmRlZiBGRklfREVCVUcKIAorLyogQ2Fubm90IHVzZSBQUk9UX0VYRUMgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8gYWx0ZXJuYXRpdmUgbWVhbnMgKi8KKyN1bmRlZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisKIC8qIENhbm5vdCB1c2UgbWFsbG9jIG9uIHRoaXMgdGFyZ2V0LCBzbywgd2UgcmV2ZXJ0IHRvIGFsdGVybmF0aXZlIG1lYW5zICovCiAjdW5kZWYgRkZJX01NQVBfRVhFQ19XUklUCiAKQEAgLTMzLDYgKzM2LDkgQEAKICAgICovCiAjdW5kZWYgSEFWRV9BTExPQ0FfSAogCisvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmFzY2lpLiAqLworI3VuZGVmIEhBVkVfQVNfQVNDSUlfUFNFVURPX09QCisKIC8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuY2ZpXyogZGlyZWN0aXZlcy4gKi8KICN1bmRlZiBIQVZFX0FTX0NGSV9QU0VVRE9fT1AKIApAQCAtNDMsNiArNDksMTIgQEAKICAgICovCiAjdW5kZWYgSEFWRV9BU19TUEFSQ19VQV9QQ1JFTAogCisvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnN0cmluZy4gKi8KKyN1bmRlZiBIQVZFX0FTX1NUUklOR19QU0VVRE9fT1AKKworLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIHVud2luZCBzZWN0aW9uIHR5cGUuICovCisjdW5kZWYgSEFWRV9BU19YODZfNjRfVU5XSU5EX1NFQ1RJT05fVFlQRQorCiAvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgUEMgcmVsYXRpdmUgcmVsb2NzLiAqLwogI3VuZGVmIEhBVkVfQVNfWDg2X1BDUkVMCiAKQEAgLTE0OCw2ICsxNjAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCiAjdW5kZWYgU1REQ19IRUFERVJTCiAKKy8qIERlZmluZSBpZiBzeW1ib2xzIGFyZSB1bmRlcnNjb3JlZC4gKi8KKyN1bmRlZiBTWU1CT0xfVU5ERVJTQ09SRQorCiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIFB1cmlmeSBhbmQgd2FudCB0byBzdXBwcmVzcyBzcHVyaW91cyBtZXNzYWdlcy4KICAgICovCiAjdW5kZWYgVVNJTkdfUFVSSUZZCkBAIC0xNjcsNiArMTgyLDkgQEAKICMgZW5kaWYKICNlbmRpZgogCisvKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgc2l6ZV90CisKIAogI2lmZGVmIEhBVkVfSElEREVOX1ZJU0lCSUxJVFlfQVRUUklCVVRFCiAjaWZkZWYgTElCRkZJX0FTTQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYmNhNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHJlCitpbXBvcnQgb3MKK2ltcG9ydCBlcnJubworaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgc3lzCisKK2NsYXNzIFBsYXRmb3JtKG9iamVjdCk6CisgICAgcGFzcworCitzZGtfcmUgPSByZS5jb21waWxlKHInLiotc2RrIChbYS16QS1aMC05Ll0qKScpCisKK2RlZiBzZGtpbmZvKHNka25hbWUpOgorICAgIHJldCA9IHt9CisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNkaycsIHNka25hbWUsICctdmVyc2lvbiddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIGt2ID0gbGluZS5zdHJpcCgpLnNwbGl0KCc6ICcsIDEpCisgICAgICAgIGlmIGxlbihrdikgPT0gMjoKKyAgICAgICAgICAgIGssdiA9IGt2CisgICAgICAgICAgICByZXRba10gPSB2CisgICAgcmV0dXJuIHJldAorCitzaW1fc2RrX2luZm8gPSBzZGtpbmZvKCdpcGhvbmVzaW11bGF0b3InKQorZGV2aWNlX3Nka19pbmZvID0gc2RraW5mbygnaXBob25lb3MnKQorCitkZWYgbGF0ZXN0X3Nka3MoKToKKyAgICBsYXRlc3Rfc2ltID0gTm9uZQorICAgIGxhdGVzdF9kZXZpY2UgPSBOb25lCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5Qb3BlbihbJ3hjb2RlYnVpbGQnLCAnLXNob3dzZGtzJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAgbWF0Y2ggPSBzZGtfcmUubWF0Y2gobGluZSkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBpZiAnU2ltdWxhdG9yJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxhdGVzdF9zaW0gPSBtYXRjaC5ncm91cCgxKQorICAgICAgICAgICAgZWxpZiAnaU9TJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxhdGVzdF9kZXZpY2UgPSBtYXRjaC5ncm91cCgxKQorCisgICAgcmV0dXJuIGxhdGVzdF9zaW0sIGxhdGVzdF9kZXZpY2UKKworc2ltX3NkaywgZGV2aWNlX3NkayA9IGxhdGVzdF9zZGtzKCkKKworY2xhc3Mgc2ltdWxhdG9yX3BsYXRmb3JtKFBsYXRmb3JtKToKKyAgICBzZGs9J2lwaG9uZXNpbXVsYXRvcicKKyAgICBhcmNoID0gJ2kzODYnCisgICAgbmFtZSA9ICdzaW11bGF0b3InCisgICAgdHJpcGxlID0gJ2kzODYtYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IHNpbV9zZGtfaW5mb1snUGF0aCddCisKKyAgICBwcmVmaXggPSAiI2lmICFkZWZpbmVkKF9fYXJtX18pICYmIGRlZmluZWQoX19pMzg2X18pXG5cbiIKKyAgICBzdWZmaXggPSAiXG5cbiNlbmRpZiIKKworY2xhc3MgZGV2aWNlX3BsYXRmb3JtKFBsYXRmb3JtKToKKyAgICBzZGs9J2lwaG9uZW9zJworICAgIG5hbWUgPSAnaW9zJworICAgIGFyY2ggPSAnYXJtdjcnCisgICAgdHJpcGxlID0gJ2FybS1hcHBsZS1kYXJ3aW4xMCcKKyAgICBzZGtyb290ID0gZGV2aWNlX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWZkZWYgX19hcm1fX1xuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKKworZGVmIG1vdmVfZmlsZShzcmNfZGlyLCBkc3RfZGlyLCBmaWxlbmFtZSwgZmlsZV9zdWZmaXg9Tm9uZSwgcHJlZml4PScnLCBzdWZmaXg9JycpOgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoZHN0X2RpcikKKworICAgIG91dF9maWxlbmFtZSA9IGZpbGVuYW1lCisKKyAgICBpZiBmaWxlX3N1ZmZpeDoKKyAgICAgICAgc3BsaXRfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgICAgIG91dF9maWxlbmFtZSA9ICAiJXNfJXMlcyIgJSAoc3BsaXRfbmFtZVswXSwgZmlsZV9zdWZmaXgsIHNwbGl0X25hbWVbMV0pCisKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNyY19kaXIsIGZpbGVuYW1lKSkgYXMgaW5fZmlsZToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkc3RfZGlyLCBvdXRfZmlsZW5hbWUpLCAndycpIGFzIG91dF9maWxlOgorICAgICAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHByZWZpeCkKKworICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoaW5fZmlsZS5yZWFkKCkpCisKKyAgICAgICAgICAgIGlmIHN1ZmZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShzdWZmaXgpCisKK2hlYWRlcnNfc2VlbiA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KHNldCkKKworZGVmIG1vdmVfc291cmNlX3RyZWUoc3JjX2RpciwgZGVzdF9kaXIsIGRlc3RfaW5jbHVkZV9kaXIsIGFyY2g9Tm9uZSwgcHJlZml4PU5vbmUsIHN1ZmZpeD1Ob25lKToKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzcmNfZGlyLCBmb2xsb3dsaW5rcz1UcnVlKToKKyAgICAgICAgcmVscm9vdCA9IG9zLnBhdGgucmVscGF0aChyb290LHNyY19kaXIpCisKKyAgICAgICAgZGVmIG1vdmVfZGlyKGFyY2gsIHByZWZpeD0nJywgc3VmZml4PScnLCBmaWxlcz1bXSk6CisgICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmaWxlX3N1ZmZpeCA9IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCcuaCcpOgorICAgICAgICAgICAgICAgICAgICBpZiBkZXN0X2luY2x1ZGVfZGlyOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBhcmNoCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNfc2VlbltmaWxlXS5hZGQoYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBkZXN0X2luY2x1ZGVfZGlyLCBmaWxlLCBhcmNoLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgICAgICAgICAgZWxpZiBkZXN0X2RpcjoKKyAgICAgICAgICAgICAgICAgICAgb3V0cm9vdCA9IG9zLnBhdGguam9pbihkZXN0X2RpciwgcmVscm9vdCkKKyAgICAgICAgICAgICAgICAgICAgbW92ZV9maWxlKHJvb3QsIG91dHJvb3QsIGZpbGUsIHByZWZpeD1wcmVmaXgsIHN1ZmZpeD1zdWZmaXgpCisKKyAgICAgICAgaWYgcmVscm9vdCA9PSAnLic6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPWFyY2gsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9c3VmZml4KQorICAgICAgICBlbGlmIHJlbHJvb3QgPT0gJ2FybSc6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPSdhcm0nLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSIjaWZkZWYgX19hcm1fX1xuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorICAgICAgICBlbGlmIHJlbHJvb3QgPT0gJ3g4Nic6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPSdpMzg2JywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmICFkZWZpbmVkKF9fYXJtX18pICYmIGRlZmluZWQoX19pMzg2X18pXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9IlxuXG4jZW5kaWYiLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMpCisKK2RlZiBidWlsZF90YXJnZXQocGxhdGZvcm0pOgorICAgIGRlZiB4Y3J1bl9jbWQoY21kKToKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnLXNkaycsIHBsYXRmb3JtLnNka3Jvb3QsICctZmluZCcsIGNtZF0pLnN0cmlwKCkKKworICAgIGJ1aWxkX2RpciA9ICdidWlsZF8nICsgcGxhdGZvcm0ubmFtZQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhidWlsZF9kaXIpCisgICAgICAgIGVudiA9IGRpY3QoQ0M9eGNydW5fY21kKCdjbGFuZycpLAorICAgICAgICAgICAgICAgICAgIExEPXhjcnVuX2NtZCgnbGQnKSwKKyAgICAgICAgICAgICAgICAgICBDRkxBR1M9Jy1hcmNoICVzIC1pc3lzcm9vdCAlcyAtbWlwaG9uZW9zLXZlcnNpb24tbWluPTQuMCcgJSAocGxhdGZvcm0uYXJjaCwgcGxhdGZvcm0uc2Rrcm9vdCkpCisgICAgICAgIHdvcmtpbmdfZGlyPW9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKGJ1aWxkX2RpcikKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJy4uL2NvbmZpZ3VyZScsICctaG9zdCcsIHBsYXRmb3JtLnRyaXBsZV0sIGVudj1lbnYpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuJywgTm9uZSwgJy4uL2lvcy9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaD1wbGF0Zm9ybS5hcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLi9pbmNsdWRlJywgTm9uZSwgJy4uL2lvcy9pbmNsdWRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXBsYXRmb3JtLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9cGxhdGZvcm0uc3VmZml4KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIod29ya2luZ19kaXIpCisKKyAgICAgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKworZGVmIG1haW4oKToKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdzcmMnLCAnaW9zL3NyYycsICdpb3MvaW5jbHVkZScpCisgICAgbW92ZV9zb3VyY2VfdHJlZSgnaW5jbHVkZScsIE5vbmUsICdpb3MvaW5jbHVkZScpCisgICAgYnVpbGRfdGFyZ2V0KHNpbXVsYXRvcl9wbGF0Zm9ybSkKKyAgICBidWlsZF90YXJnZXQoZGV2aWNlX3BsYXRmb3JtKQorCisgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgIGJhc2VuYW1lLCBzdWZmaXggPSBvcy5wYXRoLnNwbGl0ZXh0KGhlYWRlcl9uYW1lKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdpb3MvaW5jbHVkZScsIGhlYWRlcl9uYW1lKSwgJ3cnKSBhcyBoZWFkZXI6CisgICAgICAgICAgICBmb3IgYXJjaCBpbiBhcmNoczoKKyAgICAgICAgICAgICAgICBoZWFkZXIud3JpdGUoJyNpbmNsdWRlIDwlc18lcyVzPlxuJyAlIChiYXNlbmFtZSwgYXJjaCwgc3VmZml4KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDMxM2MxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5CkBAIC0wLDAgKzEsMTUzIEBACisjIS91c3IvYmluL2VudiBweXRob24KK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgcmUKK2ltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBzeXMKKworY2xhc3MgUGxhdGZvcm0ob2JqZWN0KToKKyAgICBwYXNzCisKK3Nka19yZSA9IHJlLmNvbXBpbGUocicuKi1zZGsgKFthLXpBLVowLTkuXSopJykKKworZGVmIHNka2luZm8oc2RrbmFtZSk6CisgICAgcmV0ID0ge30KKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLlBvcGVuKFsneGNvZGVidWlsZCcsICctc2RrJywgc2RrbmFtZSwgJy12ZXJzaW9uJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAga3YgPSBsaW5lLnN0cmlwKCkuc3BsaXQoJzogJywgMSkKKyAgICAgICAgaWYgbGVuKGt2KSA9PSAyOgorICAgICAgICAgICAgayx2ID0ga3YKKyAgICAgICAgICAgIHJldFtrXSA9IHYKKyAgICByZXR1cm4gcmV0CisKK2Rlc2t0b3Bfc2RrX2luZm8gPSBzZGtpbmZvKCdtYWNvc3gnKQorCitkZWYgbGF0ZXN0X3Nka3MoKToKKyAgICBsYXRlc3RfZGVza3RvcCA9IE5vbmUKKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLlBvcGVuKFsneGNvZGVidWlsZCcsICctc2hvd3Nka3MnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0OgorICAgICAgICBtYXRjaCA9IHNka19yZS5tYXRjaChsaW5lKQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIGlmICdPUyBYJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgIGxhdGVzdF9kZXNrdG9wID0gbWF0Y2guZ3JvdXAoMSkKKworICAgIHJldHVybiBsYXRlc3RfZGVza3RvcAorCitkZXNrdG9wX3NkayA9IGxhdGVzdF9zZGtzKCkKKworY2xhc3MgZGVza3RvcF9wbGF0Zm9ybV8zMihQbGF0Zm9ybSk6CisgICAgc2RrPSdtYWNvc3gnCisgICAgYXJjaCA9ICdpMzg2JworICAgIG5hbWUgPSAnbWFjMzInCisgICAgdHJpcGxlID0gJ2kzODYtYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IGRlc2t0b3Bfc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKK2NsYXNzIGRlc2t0b3BfcGxhdGZvcm1fNjQoUGxhdGZvcm0pOgorICAgIHNkaz0nbWFjb3N4JworICAgIGFyY2ggPSAneDg2XzY0JworICAgIG5hbWUgPSAnbWFjJworICAgIHRyaXBsZSA9ICd4ODZfNjQtYXBwbGUtZGFyd2luMTAnCisgICAgc2Rrcm9vdCA9IGRlc2t0b3Bfc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZiAhZGVmaW5lZChfX2kzODZfXykgJiYgZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iCisgICAgc3VmZml4ID0gIlxuXG4jZW5kaWYiCisKK2RlZiBtb3ZlX2ZpbGUoc3JjX2RpciwgZHN0X2RpciwgZmlsZW5hbWUsIGZpbGVfc3VmZml4PU5vbmUsIHByZWZpeD0nJywgc3VmZml4PScnKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGRzdF9kaXIpCisKKyAgICBvdXRfZmlsZW5hbWUgPSBmaWxlbmFtZQorCisgICAgaWYgZmlsZV9zdWZmaXg6CisgICAgICAgIHNwbGl0X25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQorICAgICAgICBvdXRfZmlsZW5hbWUgPSAgIiVzXyVzJXMiICUgKHNwbGl0X25hbWVbMF0sIGZpbGVfc3VmZml4LCBzcGxpdF9uYW1lWzFdKQorCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzcmNfZGlyLCBmaWxlbmFtZSkpIGFzIGluX2ZpbGU6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZHN0X2Rpciwgb3V0X2ZpbGVuYW1lKSwgJ3cnKSBhcyBvdXRfZmlsZToKKyAgICAgICAgICAgIGlmIHByZWZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShwcmVmaXgpCisKKyAgICAgICAgICAgIG91dF9maWxlLndyaXRlKGluX2ZpbGUucmVhZCgpKQorCisgICAgICAgICAgICBpZiBzdWZmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoc3VmZml4KQorCitoZWFkZXJzX3NlZW4gPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChzZXQpCisKK2RlZiBtb3ZlX3NvdXJjZV90cmVlKHNyY19kaXIsIGRlc3RfZGlyLCBkZXN0X2luY2x1ZGVfZGlyLCBhcmNoPU5vbmUsIHByZWZpeD1Ob25lLCBzdWZmaXg9Tm9uZSk6CisgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjX2RpciwgZm9sbG93bGlua3M9VHJ1ZSk6CisgICAgICAgIHJlbHJvb3QgPSBvcy5wYXRoLnJlbHBhdGgocm9vdCxzcmNfZGlyKQorCisgICAgICAgIGRlZiBtb3ZlX2RpcihhcmNoLCBwcmVmaXg9JycsIHN1ZmZpeD0nJywgZmlsZXM9W10pOgorICAgICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBOb25lCisgICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmgnKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVzdF9pbmNsdWRlX2RpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gYXJjaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJjaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzX3NlZW5bZmlsZV0uYWRkKGFyY2gpCisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgZGVzdF9pbmNsdWRlX2RpciwgZmlsZSwgYXJjaCwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICAgICAgICAgIGVsaWYgZGVzdF9kaXI6CisgICAgICAgICAgICAgICAgICAgIG91dHJvb3QgPSBvcy5wYXRoLmpvaW4oZGVzdF9kaXIsIHJlbHJvb3QpCisgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBvdXRyb290LCBmaWxlLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgIGlmIHJlbHJvb3QgPT0gJy4nOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD1hcmNoLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXN1ZmZpeCkKKyAgICAgICAgZWxpZiByZWxyb290ID09ICd4ODYnOgorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0naTM4NicsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZiBkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX3g4Nl82NF9fKVxuXG4iLAorICAgICAgICAgICAgICAgICAgICAgc3VmZml4PSJcblxuI2VuZGlmIiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzKQorICAgICAgICAgICAgbW92ZV9kaXIoYXJjaD0neDg2XzY0JywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9IlxuXG4jZW5kaWYiLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMpCisKK2RlZiBidWlsZF90YXJnZXQocGxhdGZvcm0pOgorICAgIGRlZiB4Y3J1bl9jbWQoY21kKToKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsneGNydW4nLCAnLXNkaycsIHBsYXRmb3JtLnNka3Jvb3QsICctZmluZCcsIGNtZF0pLnN0cmlwKCkKKworICAgIGJ1aWxkX2RpciA9ICdidWlsZF8nICsgcGxhdGZvcm0ubmFtZQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhidWlsZF9kaXIpCisgICAgICAgIGVudiA9IGRpY3QoQ0M9eGNydW5fY21kKCdjbGFuZycpLAorICAgICAgICAgICAgICAgICAgIExEPXhjcnVuX2NtZCgnbGQnKSwKKyAgICAgICAgICAgICAgICAgICBDRkxBR1M9Jy1hcmNoICVzIC1pc3lzcm9vdCAlcyAtbW1hY29zeC12ZXJzaW9uLW1pbj0xMC42JyAlIChwbGF0Zm9ybS5hcmNoLCBwbGF0Zm9ybS5zZGtyb290KSkKKyAgICAgICAgd29ya2luZ19kaXI9b3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoYnVpbGRfZGlyKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsnLi4vY29uZmlndXJlJywgJy1ob3N0JywgcGxhdGZvcm0udHJpcGxlXSwgZW52PWVudikKKyAgICAgICAgICAgIG1vdmVfc291cmNlX3RyZWUoJy4nLCBOb25lLCAnLi4vb3N4L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1wbGF0Zm9ybS5zdWZmaXgpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuL2luY2x1ZGUnLCBOb25lLCAnLi4vb3N4L2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1wbGF0Zm9ybS5zdWZmaXgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcih3b3JraW5nX2RpcikKKworICAgICAgICBmb3IgaGVhZGVyX25hbWUsIGFyY2hzIGluIGhlYWRlcnNfc2Vlbi5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGJhc2VuYW1lLCBzdWZmaXggPSBvcy5wYXRoLnNwbGl0ZXh0KGhlYWRlcl9uYW1lKQorCitkZWYgbWFpbigpOgorICAgIG1vdmVfc291cmNlX3RyZWUoJ3NyYycsICdvc3gvc3JjJywgJ29zeC9pbmNsdWRlJykKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdpbmNsdWRlJywgTm9uZSwgJ29zeC9pbmNsdWRlJykKKyAgICBidWlsZF90YXJnZXQoZGVza3RvcF9wbGF0Zm9ybV8zMikKKyAgICBidWlsZF90YXJnZXQoZGVza3RvcF9wbGF0Zm9ybV82NCkKKworICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICBiYXNlbmFtZSwgc3VmZml4ID0gb3MucGF0aC5zcGxpdGV4dChoZWFkZXJfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbignb3N4L2luY2x1ZGUnLCBoZWFkZXJfbmFtZSksICd3JykgYXMgaGVhZGVyOgorICAgICAgICAgICAgZm9yIGFyY2ggaW4gYXJjaHM6CisgICAgICAgICAgICAgICAgaGVhZGVyLndyaXRlKCcjaW5jbHVkZSA8JXNfJXMlcz5cbicgJSAoYmFzZW5hbWUsIGFyY2gsIHN1ZmZpeCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4KaW5kZXggMTM2ZjM2Yy4uNzlkNDkzZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0zNyw3ICszNyw3IEBACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACiBzdWJkaXIgPSBpbmNsdWRlCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAotCSQoc3JjZGlyKS9mZmkuaC5pbgorCSQoc3JjZGlyKS9mZmkuaC5pbiAkKHNyY2RpcikvZmZpX2NvbW1vbi5oCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9hY2luY2x1ZGUubTQgXAogCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCkBAIC00Niw3ICs0Niw3IEBACiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9mZmljb25maWcuaAogQ09ORklHX0NMRUFOX0ZJTEVTID0gZmZpLmggZmZpdGFyZ2V0LmgKLUNPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CitDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPSBmZmlfY29tbW9uLmgKIFNPVVJDRVMgPQogRElTVF9TT1VSQ0VTID0KIGFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwpAQCAtNzAsNiArNzAsMTIgQEAKIGFtX19iYXNlX2xpc3QgPSBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCiAgIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKK2FtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKKyAgdGVzdCAteiAiJCRmaWxlcyIgXAorICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAorICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKyAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKKyAgfQogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGluY2x1ZGVzZGlyKSIKIEhFQURFUlMgPSAkKG5vZGlzdF9pbmNsdWRlc19IRUFERVJTKQogRVRBR1MgPSBldGFncwpAQCAtNzgsNiArODQsNyBAQAogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUxMT0NBID0gQEFMTE9DQUAKIEFNVEFSID0gQEFNVEFSQAorQU1fTFRMREZMQUdTID0gQEFNX0xUTERGTEFHU0AKIEFNX1JVTlRFU1RGTEFHUyA9IEBBTV9SVU5URVNURkxBR1NACiBBUiA9IEBBUkAKIEFVVE9DT05GID0gQEFVVE9DT05GQApAQCAtOTUsNiArMTAyLDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtMTAyLDYgKzExMCw3IEBACiBFQ0hPX1QgPSBARUNIT19UQAogRUdSRVAgPSBARUdSRVBACiBFWEVFWFQgPSBARVhFRVhUQAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAogRkdSRVAgPSBARkdSRVBACiBHUkVQID0gQEdSRVBACiBIQVZFX0xPTkdfRE9VQkxFID0gQEhBVkVfTE9OR19ET1VCTEVACkBAIC0xMjAsNiArMTI5LDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMTMyLDYgKzE0Miw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMTQ2LDYgKzE1Nyw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTE3OCw3ICsxOTAsNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0yNjMsOSArMjc0LDcgQEAKIAlAJChOT1JNQUxfVU5JTlNUQUxMKQogCUBsaXN0PSckKG5vZGlzdF9pbmNsdWRlc19IRUFERVJTKSc7IHRlc3QgLW4gIiQoaW5jbHVkZXNkaXIpIiB8fCBsaXN0PTsgXAogCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCi0JdGVzdCAtbiAiJCRmaWxlcyIgfHwgZXhpdCAwOyBcCi0JZWNobyAiICggY2QgJyQoREVTVERJUikkKGluY2x1ZGVzZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JY2QgIiQoREVTVERJUikkKGluY2x1ZGVzZGlyKSIgJiYgcm0gLWYgJCRmaWxlcworCWRpcj0nJChERVNURElSKSQoaW5jbHVkZXNkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQogCiBJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQogCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCkBAIC0zNjYsMTAgKzM3NSwxNSBAQAogCiBpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4KaW5kZXggZGY3ZDJjZC4uYTUxNTgzYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmkuaC5pbgpAQCAtMSwxNiArMSwxNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGxpYmZmaSBAVkVSU0lPTkAgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgorICAgbGliZmZpIEBWRVJTSU9OQCAtIENvcHlyaWdodCAoYykgMjAxMSBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgICAgIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMDcsIDIwMDggUmVkIEhhdCwgSW5jLgogCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24KKyAgIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCisgICBmaWxlcyAodGhlIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQKKyAgIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LAorICAgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgICBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKIAotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKKyAgIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAogICAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCkBAIC01Nyw3ICs1OCw5IEBACiAjZW5kaWYKIAogLyogU3BlY2lmeSB3aGljaCBhcmNoaXRlY3R1cmUgbGliZmZpIGlzIGNvbmZpZ3VyZWQgZm9yLiAqLworI2lmbmRlZiBAVEFSR0VUQAogI2RlZmluZSBAVEFSR0VUQAorI2VuZGlmCiAKIC8qIC0tLS0gU3lzdGVtIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTc1LDE1ICs3OCwzMSBAQAogLyogTE9OR19MT05HX01BWCBpcyBub3QgYWx3YXlzIGRlZmluZWQgKG5vdCBpZiBTVFJJQ1RfQU5TSSwgZm9yIGV4YW1wbGUpLgogICAgQnV0IHdlIGNhbiBmaW5kIGl0IGVpdGhlciB1bmRlciB0aGUgY29ycmVjdCBBTlNJIG5hbWUsIG9yIHVuZGVyIEdOVQogICAgQydzIGludGVybmFsIG5hbWUuICAqLworCisjZGVmaW5lIEZGSV82NF9CSVRfTUFYIDkyMjMzNzIwMzY4NTQ3NzU4MDcKKwogI2lmZGVmIExPTkdfTE9OR19NQVgKICMgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExPTkdfTE9OR19NQVgKICNlbHNlCiAjIGlmZGVmIExMT05HX01BWAogIyAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExMT05HX01BWAorIyAgaWZkZWYgX0FJWDUyIC8qIG9yIG5ld2VyIGhhcyBDOTkgTExPTkdfTUFYICovCisjICAgdW5kZWYgRkZJXzY0X0JJVF9NQVgKKyMgICBkZWZpbmUgRkZJXzY0X0JJVF9NQVggOTIyMzM3MjAzNjg1NDc3NTgwN0xMCisjICBlbmRpZiAvKiBfQUlYNTIgb3IgbmV3ZXIgKi8KICMgZWxzZQogIyAgaWZkZWYgX19HTlVDX18KICMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KICMgIGVuZGlmCisjICBpZmRlZiBfQUlYIC8qIEFJWCA1LjEgYW5kIGVhcmxpZXIgaGF2ZSBMT05HTE9OR19NQVggKi8KKyMgICBpZm5kZWYgX19QUEM2NF9fCisjICAgIGlmIGRlZmluZWQgKF9fSUJNQ19fKSB8fCBkZWZpbmVkIChfX0lCTUNQUF9fKQorIyAgICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExPTkdMT05HX01BWAorIyAgICBlbmRpZgorIyAgIGVuZGlmIC8qIF9fUFBDNjRfXyAqLworIyAgIHVuZGVmICBGRklfNjRfQklUX01BWAorIyAgIGRlZmluZSBGRklfNjRfQklUX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKKyMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKIApAQCAtMTMwLDM5ICsxNDksNTMgQEAKICNlbmRpZgogCiAjaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwotIyBpZiBGRklfTE9OR19MT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3CisjIGlmIEZGSV9MT05HX0xPTkdfTUFYICE9IEZGSV82NF9CSVRfTUFYCiAgI2Vycm9yICJubyA2NC1iaXQgZGF0YSB0eXBlIHN1cHBvcnRlZCIKICMgZW5kaWYKLSNlbGlmIExPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyNlbGlmIExPTkdfTUFYICE9IEZGSV82NF9CSVRfTUFYCiAgI2Vycm9yICJsb25nIHNpemUgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCiAjaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwogIyBkZWZpbmUgZmZpX3R5cGVfdWxvbmcgICAgICAgIGZmaV90eXBlX3VpbnQzMgogIyBkZWZpbmUgZmZpX3R5cGVfc2xvbmcgICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2VsaWYgTE9OR19NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNworI2VsaWYgTE9OR19NQVggPT0gRkZJXzY0X0JJVF9NQVgKICMgZGVmaW5lIGZmaV90eXBlX3Vsb25nICAgICAgICBmZmlfdHlwZV91aW50NjQKICMgZGVmaW5lIGZmaV90eXBlX3Nsb25nICAgICAgICBmZmlfdHlwZV9zaW50NjQKICNlbHNlCiAgI2Vycm9yICJsb25nIHNpemUgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCisvKiBOZWVkIG1pbmltYWwgZGVjb3JhdGlvbnMgZm9yIERMTHMgdG8gd29ya3Mgb24gV2luZG93cy4gKi8KKy8qIEdDQyBoYXMgYXV0b2ltcG9ydCBhbmQgYXV0b2V4cG9ydC4gIFJlbHkgb24gTGlidG9vbCB0byAqLworLyogaGVscCBNU1ZDIGV4cG9ydCBmcm9tIGEgRExMLCBidXQgYWx3YXlzIGRlY2xhcmUgZGF0YSAgICovCisvKiB0byBiZSBpbXBvcnRlZCBmb3IgTVNWQyBjbGllbnRzLiAgVGhpcyBjb3N0cyBhbiBleHRyYSAgKi8KKy8qIGluZGlyZWN0aW9uIGZvciBNU1ZDIGNsaWVudHMgdXNpbmcgdGhlIHN0YXRpYyB2ZXJzaW9uICAqLworLyogb2YgdGhlIGxpYnJhcnksIGJ1dCBkb24ndCB3b3JyeSBhYm91dCB0aGF0LiAgQmVzaWRlcywgICovCisvKiBhcyBhIHdvcmthcm91bmQsIHRoZXkgY2FuIGRlZmluZSBGRklfQlVJTERJTkcgaWYgdGhleSAgKi8KKy8qICprbm93KiB0aGV5IGFyZSBnb2luZyB0byBsaW5rIHdpdGggdGhlIHN0YXRpYyBsaWJyYXJ5LiAqLworI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgIWRlZmluZWQgRkZJX0JVSUxESU5HCisjZGVmaW5lIEZGSV9FWFRFUk4gZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgRkZJX0VYVEVSTiBleHRlcm4KKyNlbmRpZgorCiAvKiBUaGVzZSBhcmUgZGVmaW5lZCBpbiB0eXBlcy5jICovCi1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdm9pZDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50ODsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9mbG9hdDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9kb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdm9pZDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ4OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MTY7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDMyOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MzI7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDY0OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9mbG9hdDsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9wb2ludGVyOwogCiAjaWYgQEhBVkVfTE9OR19ET1VCTEVACi1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfbG9uZ2RvdWJsZTsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfbG9uZ2RvdWJsZTsKICNlbHNlCiAjZGVmaW5lIGZmaV90eXBlX2xvbmdkb3VibGUgZmZpX3R5cGVfZG91YmxlCiAjZW5kaWYKQEAgLTE4OCwxMiArMjIxLDIxIEBACiAjZW5kaWYKIH0gZmZpX2NpZjsKIAorLyogVXNlZCBpbnRlcm5hbGx5LCBidXQgb3ZlcnJpZGRlbiBieSBzb21lIGFyY2hpdGVjdHVyZXMgKi8KK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX2NvcmUoZmZpX2NpZiAqY2lmLAorCQkJICAgICBmZmlfYWJpIGFiaSwKKwkJCSAgICAgdW5zaWduZWQgaW50IGlzdmFyaWFkaWMsCisJCQkgICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorCQkJICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkJCSAgICAgZmZpX3R5cGUgKnJ0eXBlLAorCQkJICAgICBmZmlfdHlwZSAqKmF0eXBlcyk7CisKIC8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIHRoZSByYXcgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgRkZJX1NJWkVPRl9BUkcKICMgaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwogIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA0Ci0jIGVsaWYgTE9OR19NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNworIyBlbGlmIExPTkdfTUFYID09IEZGSV82NF9CSVRfTUFYCiAjICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDgKICMgZW5kaWYKICNlbmRpZgpAQCAtMjU1LDcgKzI5NywxMiBAQAogX19kZWNsc3BlYyhhbGlnbig4KSkKICNlbmRpZgogdHlwZWRlZiBzdHJ1Y3QgeworI2lmIEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAorICB2b2lkICp0cmFtcG9saW5lX3RhYmxlOworICB2b2lkICp0cmFtcG9saW5lX3RhYmxlX2VudHJ5OworI2Vsc2UKICAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKKyNlbmRpZgogICBmZmlfY2lmICAgKmNpZjsKICAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKik7CiAgIHZvaWQgICAgICAqdXNlcl9kYXRhOwpAQCAtMjYzLDYgKzMxMCw5IEBACiB9IGZmaV9jbG9zdXJlIF9fYXR0cmlidXRlX18oKGFsaWduZWQgKDgpKSk7CiAjZWxzZQogfSBmZmlfY2xvc3VyZTsKKyMgaWZkZWYgX19zZ2kKKyMgIHByYWdtYSBwYWNrIDAKKyMgZW5kaWYKICNlbmRpZgogCiB2b2lkICpmZmlfY2xvc3VyZV9hbGxvYyAoc2l6ZV90IHNpemUsIHZvaWQgKipjb2RlKTsKQEAgLTI4MSw5ICszMzEsMTYgQEAKIAkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAogCQkgICAgICB2b2lkKmNvZGVsb2MpOwogCisjaWZkZWYgX19zZ2kKKyMgcHJhZ21hIHBhY2sgOAorI2VuZGlmCiB0eXBlZGVmIHN0cnVjdCB7CisjaWYgQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGU7CisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGVfZW50cnk7CisjZWxzZQogICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOwotCisjZW5kaWYKICAgZmZpX2NpZiAgICpjaWY7CiAKICNpZiAhRkZJX05BVElWRV9SQVdfQVBJCkBAIC0zMDMsNyArMzYwLDEyIEBACiB9IGZmaV9yYXdfY2xvc3VyZTsKIAogdHlwZWRlZiBzdHJ1Y3QgeworI2lmIEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAorICB2b2lkICp0cmFtcG9saW5lX3RhYmxlOworICB2b2lkICp0cmFtcG9saW5lX3RhYmxlX2VudHJ5OworI2Vsc2UKICAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKKyNlbmRpZgogCiAgIGZmaV9jaWYgICAqY2lmOwogCkBAIC0zNTksNiArNDIxLDEzIEBACiAJCQlmZmlfdHlwZSAqcnR5cGUsCiAJCQlmZmlfdHlwZSAqKmF0eXBlcyk7CiAKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX3ZhcihmZmlfY2lmICpjaWYsCisJCQkgICAgZmZpX2FiaSBhYmksCisJCQkgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisJCQkgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJCQkgICAgZmZpX3R5cGUgKnJ0eXBlLAorCQkJICAgIGZmaV90eXBlICoqYXR5cGVzKTsKKwogdm9pZCBmZmlfY2FsbChmZmlfY2lmICpjaWYsCiAJICAgICAgdm9pZCAoKmZuKSh2b2lkKSwKIAkgICAgICB2b2lkICpydmFsdWUsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaAppbmRleCA0MmNhY2U5Li5jMTc5ZDY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmlfY29tbW9uLmgKQEAgLTEsNyArMSw4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpX2NvbW1vbi5oIC0gQ29weXJpZ2h0IChjKSAxOTk2ICBSZWQgSGF0LCBJbmMuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKLQorICAgZmZpX2NvbW1vbi5oIC0gQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYgIFJlZCBIYXQsIEluYy4KKyAgICAgICAgICAgICAgICAgIAogICAgQ29tbW9uIGludGVybmFsIGRlZmluaXRpb25zIGFuZCBtYWNyb3MuIE9ubHkgbmVjZXNzYXJ5IGZvciBidWlsZGluZwogICAgbGliZmZpLgogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTc0LDYgKzc1LDggQEAKIAogLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwogZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpOworZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcF92YXIoZmZpX2NpZiAqY2lmLAorCSB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MpOwogCiAvKiBFeHRlbmRlZCBjaWYsIHVzZWQgaW4gY2FsbGJhY2sgZnJvbSBhc3NlbWJseSByb3V0aW5lICovCiB0eXBlZGVmIHN0cnVjdApAQCAtMTEyLDExICsxMTUsMTQgQEAKIAogdHlwZWRlZiBmbG9hdCBGTE9BVDMyOwogCisjaWZuZGVmIF9fR05VQ19fCisjZGVmaW5lIF9fYnVpbHRpbl9leHBlY3QoeCwgZXhwZWN0ZWRfdmFsdWUpICh4KQorI2VuZGlmCisjZGVmaW5lIExJS0VMWSh4KSAgICBfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLDEpCisjZGVmaW5lIFVOTElLRUxZKHgpICBfX2J1aWx0aW5fZXhwZWN0KCh4KSE9MCwwKQogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgogCiAjZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2gKaW5kZXggNmViZTQ2ZC4uNjc4MWI5OCAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5zdGFsbC1zaApAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKIAotc2NyaXB0dmVyc2lvbj0yMDA0LTEyLTE3LjA5CitzY3JpcHR2ZXJzaW9uPTIwMDktMDQtMjguMjE7ICMgVVRDCiAKICMgVGhpcyBvcmlnaW5hdGVzIGZyb20gWDExUjUgKG1pdC91dGlsL3NjcmlwdHMvaW5zdGFsbC5zaCksIHdoaWNoIHdhcwogIyBsYXRlciByZWxlYXNlZCBpbiBYMTFSNiAoeGMvY29uZmlnL3V0aWwvaW5zdGFsbC5zaCkgd2l0aCB0aGUKQEAgLTM5LDM4ICszOSw2OCBAQAogIyB3aGVuIHRoZXJlIGlzIG5vIE1ha2VmaWxlLgogIwogIyBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCi0jIGZyb20gc2NyYXRjaC4gIEl0IGNhbiBvbmx5IGluc3RhbGwgb25lIGZpbGUgYXQgYSB0aW1lLCBhIHJlc3RyaWN0aW9uCi0jIHNoYXJlZCB3aXRoIG1hbnkgT1MncyBpbnN0YWxsIHByb2dyYW1zLgorIyBmcm9tIHNjcmF0Y2guCisKK25sPScKKycKK0lGUz0iICIiCSRubCIKIAogIyBzZXQgRE9JVFBST0cgdG8gZWNobyB0byB0ZXN0IHRoaXMgc2NyaXB0CiAKICMgRG9uJ3QgdXNlIDotIHNpbmNlIDQuM0JTRCBhbmQgZWFybGllciBzaGVsbHMgZG9uJ3QgbGlrZSBpdC4KLWRvaXQ9IiR7RE9JVFBST0ctfSIKK2RvaXQ9JHtET0lUUFJPRy19CitpZiB0ZXN0IC16ICIkZG9pdCI7IHRoZW4KKyAgZG9pdF9leGVjPWV4ZWMKK2Vsc2UKKyAgZG9pdF9leGVjPSRkb2l0CitmaQogCi0jIHB1dCBpbiBhYnNvbHV0ZSBwYXRocyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsgb3IgdXNlIGVudi4gdmFycy4KKyMgUHV0IGluIGFic29sdXRlIGZpbGUgbmFtZXMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7CisjIG9yIHVzZSBlbnZpcm9ubWVudCB2YXJzLgogCi1tdnByb2c9IiR7TVZQUk9HLW12fSIKLWNwcHJvZz0iJHtDUFBST0ctY3B9IgotY2htb2Rwcm9nPSIke0NITU9EUFJPRy1jaG1vZH0iCi1jaG93bnByb2c9IiR7Q0hPV05QUk9HLWNob3dufSIKLWNoZ3JwcHJvZz0iJHtDSEdSUFBST0ctY2hncnB9Igotc3RyaXBwcm9nPSIke1NUUklQUFJPRy1zdHJpcH0iCi1ybXByb2c9IiR7Uk1QUk9HLXJtfSIKLW1rZGlycHJvZz0iJHtNS0RJUlBST0ctbWtkaXJ9IgorY2hncnBwcm9nPSR7Q0hHUlBQUk9HLWNoZ3JwfQorY2htb2Rwcm9nPSR7Q0hNT0RQUk9HLWNobW9kfQorY2hvd25wcm9nPSR7Q0hPV05QUk9HLWNob3dufQorY21wcHJvZz0ke0NNUFBST0ctY21wfQorY3Bwcm9nPSR7Q1BQUk9HLWNwfQorbWtkaXJwcm9nPSR7TUtESVJQUk9HLW1rZGlyfQorbXZwcm9nPSR7TVZQUk9HLW12fQorcm1wcm9nPSR7Uk1QUk9HLXJtfQorc3RyaXBwcm9nPSR7U1RSSVBQUk9HLXN0cmlwfQogCi1jaG1vZGNtZD0iJGNobW9kcHJvZyAwNzU1IgotY2hvd25jbWQ9Citwb3NpeF9nbG9iPSc/JworaW5pdGlhbGl6ZV9wb3NpeF9nbG9iPScKKyAgdGVzdCAiJHBvc2l4X2dsb2IiICE9ICI/IiB8fCB7CisgICAgaWYgKHNldCAtZikgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIHBvc2l4X2dsb2I9CisgICAgZWxzZQorICAgICAgcG9zaXhfZ2xvYj06CisgICAgZmkKKyAgfQorJworCitwb3NpeF9ta2Rpcj0KKworIyBEZXNpcmVkIG1vZGUgb2YgaW5zdGFsbGVkIGZpbGUuCittb2RlPTA3NTUKKwogY2hncnBjbWQ9Ci1zdHJpcGNtZD0KK2NobW9kY21kPSRjaG1vZHByb2cKK2Nob3duY21kPQorbXZjbWQ9JG12cHJvZwogcm1jbWQ9IiRybXByb2cgLWYiCi1tdmNtZD0iJG12cHJvZyIKK3N0cmlwY21kPQorCiBzcmM9CiBkc3Q9CiBkaXJfYXJnPQotZHN0YXJnPQorZHN0X2FyZz0KKworY29weV9vbl9jaGFuZ2U9ZmFsc2UKIG5vX3RhcmdldF9kaXJlY3Rvcnk9CiAKLXVzYWdlPSJVc2FnZTogJDAgW09QVElPTl0uLi4gWy1UXSBTUkNGSUxFIERTVEZJTEUKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0uLi4gWy1UXSBTUkNGSUxFIERTVEZJTEUKICAgIG9yOiAkMCBbT1BUSU9OXS4uLiBTUkNGSUxFUy4uLiBESVJFQ1RPUlkKICAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtdCBESVJFQ1RPUlkgU1JDRklMRVMuLi4KICAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtZCBESVJFQ1RPUklFUy4uLgpAQCAtODAsODEgKzExMCw4NiBAQAogSW4gdGhlIDR0aCwgY3JlYXRlIERJUkVDVE9SSUVTLgogCiBPcHRpb25zOgotLWMgICAgICAgICAoaWdub3JlZCkKLS1kICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KLS1nIEdST1VQICAgJGNoZ3JwcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gR1JPVVAuCi0tbSBNT0RFICAgICRjaG1vZHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIE1PREUuCi0tbyBVU0VSICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCi0tcyAgICAgICAgICRzdHJpcHByb2cgaW5zdGFsbGVkIGZpbGVzLgotLXQgRElSRUNUT1JZICBpbnN0YWxsIGludG8gRElSRUNUT1JZLgotLVQgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KLS0taGVscCAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQuCi0tLXZlcnNpb24gIGRpc3BsYXkgdmVyc2lvbiBpbmZvIGFuZCBleGl0LgorICAgICAtLWhlbHAgICAgIGRpc3BsYXkgdGhpcyBoZWxwIGFuZCBleGl0LgorICAgICAtLXZlcnNpb24gIGRpc3BsYXkgdmVyc2lvbiBpbmZvIGFuZCBleGl0LgorCisgIC1jICAgICAgICAgICAgKGlnbm9yZWQpCisgIC1DICAgICAgICAgICAgaW5zdGFsbCBvbmx5IGlmIGRpZmZlcmVudCAocHJlc2VydmUgdGhlIGxhc3QgZGF0YSBtb2RpZmljYXRpb24gdGltZSkKKyAgLWQgICAgICAgICAgICBjcmVhdGUgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIGZpbGVzLgorICAtZyBHUk9VUCAgICAgICRjaGdycHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIEdST1VQLgorICAtbSBNT0RFICAgICAgICRjaG1vZHByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIE1PREUuCisgIC1vIFVTRVIgICAgICAgJGNob3ducHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gVVNFUi4KKyAgLXMgICAgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KKyAgLXQgRElSRUNUT1JZICBpbnN0YWxsIGludG8gRElSRUNUT1JZLgorICAtVCAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvciBpZiBEU1RGSUxFIGlzIGEgZGlyZWN0b3J5LgogCiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29tbWFuZHM6Ci0gIENIR1JQUFJPRyBDSE1PRFBST0cgQ0hPV05QUk9HIENQUFJPRyBNS0RJUlBST0cgTVZQUk9HIFJNUFJPRyBTVFJJUFBST0cKKyAgQ0hHUlBQUk9HIENITU9EUFJPRyBDSE9XTlBST0cgQ01QUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRworICBSTVBST0cgU1RSSVBQUk9HCiAiCiAKLXdoaWxlIHRlc3QgLW4gIiQxIjsgZG8KK3doaWxlIHRlc3QgJCMgLW5lIDA7IGRvCiAgIGNhc2UgJDEgaW4KLSAgICAtYykgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1jKSA7OwogCi0gICAgLWQpIGRpcl9hcmc9dHJ1ZQotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisgICAgLUMpIGNvcHlfb25fY2hhbmdlPXRydWU7OworCisgICAgLWQpIGRpcl9hcmc9dHJ1ZTs7CiAKICAgICAtZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKwlzaGlmdDs7CiAKLSAgICAtLWhlbHApIGVjaG8gIiR1c2FnZSI7IGV4aXQgMDs7CisgICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0ICQ/OzsKIAotICAgIC1tKSBjaG1vZGNtZD0iJGNobW9kcHJvZyAkMiIKLSAgICAgICAgc2hpZnQKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1tKSBtb2RlPSQyCisJY2FzZSAkbW9kZSBpbgorCSAgKicgJyogfCAqJwknKiB8IConCisnKgkgIHwgKicqJyogfCAqJz8nKiB8IConWycqKQorCSAgICBlY2hvICIkMDogaW52YWxpZCBtb2RlOiAkbW9kZSIgPiYyCisJICAgIGV4aXQgMTs7CisJZXNhYworCXNoaWZ0OzsKIAogICAgIC1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKLSAgICAgICAgc2hpZnQKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworCXNoaWZ0OzsKIAotICAgIC1zKSBzdHJpcGNtZD0kc3RyaXBwcm9nCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZzs7CiAKLSAgICAtdCkgZHN0YXJnPSQyCi0Jc2hpZnQKLQlzaGlmdAotCWNvbnRpbnVlOzsKKyAgICAtdCkgZHN0X2FyZz0kMgorCXNoaWZ0OzsKIAotICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWUKLQlzaGlmdAotCWNvbnRpbnVlOzsKKyAgICAtVCkgbm9fdGFyZ2V0X2RpcmVjdG9yeT10cnVlOzsKIAotICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0IDA7OworICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0ICQ/OzsKIAotICAgICopICAjIFdoZW4gLWQgaXMgdXNlZCwgYWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIGRpcmVjdG9yaWVzIHRvIGNyZWF0ZS4KLQkjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgotCXRlc3QgLW4gIiRkaXJfYXJnJGRzdGFyZyIgJiYgYnJlYWsKLSAgICAgICAgIyBPdGhlcndpc2UsIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBkZXN0aW5hdGlvbi4gIFJlbW92ZSBpdCBmcm9tICRALgotCWZvciBhcmcKLQlkbwotICAgICAgICAgIGlmIHRlc3QgLW4gIiRkc3RhcmciOyB0aGVuCi0JICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgotCSAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdGFyZyIKLQkgICAgc2hpZnQgIyBmbm9yZAotCSAgZmkKLQkgIHNoaWZ0ICMgYXJnCi0JICBkc3Rhcmc9JGFyZwotCWRvbmUKKyAgICAtLSkJc2hpZnQKIAlicmVhazs7CisKKyAgICAtKikJZWNobyAiJDA6IGludmFsaWQgb3B0aW9uOiAkMSIgPiYyCisJZXhpdCAxOzsKKworICAgICopICBicmVhazs7CiAgIGVzYWMKKyAgc2hpZnQKIGRvbmUKIAotaWYgdGVzdCAteiAiJDEiOyB0aGVuCitpZiB0ZXN0ICQjIC1uZSAwICYmIHRlc3QgLXogIiRkaXJfYXJnJGRzdF9hcmciOyB0aGVuCisgICMgV2hlbiAtZCBpcyB1c2VkLCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLgorICAjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgorICAjIE90aGVyd2lzZSwgdGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIGRlc3RpbmF0aW9uLiAgUmVtb3ZlIGl0IGZyb20gJEAuCisgIGZvciBhcmcKKyAgZG8KKyAgICBpZiB0ZXN0IC1uICIkZHN0X2FyZyI7IHRoZW4KKyAgICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgorICAgICAgc2V0IGZub3JkICIkQCIgIiRkc3RfYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgIGZpCisgICAgc2hpZnQgIyBhcmcKKyAgICBkc3RfYXJnPSRhcmcKKyAgZG9uZQorZmkKKworaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgogICBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KICAgICBlY2hvICIkMDogbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQuIiA+JjIKICAgICBleGl0IDEKQEAgLTE2NCwyNCArMTk5LDQ3IEBACiAgIGV4aXQgMAogZmkKIAoraWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCisgIHRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1CisKKyAgIyBTZXQgdW1hc2sgc28gYXMgbm90IHRvIGNyZWF0ZSB0ZW1wcyB3aXRoIHRvby1nZW5lcm91cyBtb2Rlcy4KKyAgIyBIb3dldmVyLCAnc3RyaXAnIHJlcXVpcmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRlbXBzLgorICBjYXNlICRtb2RlIGluCisgICAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCisgICAgKjY0NCkgY3BfdW1hc2s9MTMzOzsKKyAgICAqNzU1KSBjcF91bWFzaz0yMjs7CisKKyAgICAqWzAtN10pCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0nJSAyMDAnCisgICAgICBmaQorICAgICAgY3BfdW1hc2s9YGV4cHIgJygnIDc3NyAtICRtb2RlICUgMTAwMCAnKScgJHVfcGx1c19yd2A7OworICAgICopCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0sdStydworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPSRtb2RlJHVfcGx1c19ydzs7CisgIGVzYWMKK2ZpCisKIGZvciBzcmMKIGRvCiAgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KICAgY2FzZSAkc3JjIGluCi0gICAgLSopIHNyYz0uLyRzcmMgOzsKKyAgICAtKikgc3JjPS4vJHNyYzs7CiAgIGVzYWMKIAogICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KICAgICBkc3Q9JHNyYwotICAgIHNyYz0KLQotICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCi0gICAgICBta2RpcmNtZD06Ci0gICAgICBjaG1vZGNtZD0KLSAgICBlbHNlCi0gICAgICBta2RpcmNtZD0kbWtkaXJwcm9nCi0gICAgZmkKKyAgICBkc3RkaXI9JGRzdAorICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgZHN0ZGlyX3N0YXR1cz0kPwogICBlbHNlCisKICAgICAjIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZAogICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKICAgICAjIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KQEAgLTE5MCw3MSArMjQ4LDE5OSBAQAogICAgICAgZXhpdCAxCiAgICAgZmkKIAotICAgIGlmIHRlc3QgLXogIiRkc3RhcmciOyB0aGVuCisgICAgaWYgdGVzdCAteiAiJGRzdF9hcmciOyB0aGVuCiAgICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkLiIgPiYyCiAgICAgICBleGl0IDEKICAgICBmaQogCi0gICAgZHN0PSRkc3RhcmcKKyAgICBkc3Q9JGRzdF9hcmcKICAgICAjIFByb3RlY3QgbmFtZXMgc3RhcnRpbmcgd2l0aCBgLScuCiAgICAgY2FzZSAkZHN0IGluCi0gICAgICAtKikgZHN0PS4vJGRzdCA7OworICAgICAgLSopIGRzdD0uLyRkc3Q7OwogICAgIGVzYWMKIAogICAgICMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IHdvbid0IHdvcmsKICAgICAjIGlmIGRvdWJsZSBzbGFzaGVzIGFyZW4ndCBpZ25vcmVkLgogICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC1uICIkbm9fdGFyZ2V0X2RpcmVjdG9yeSI7IHRoZW4KLQllY2hvICIkMDogJGRzdGFyZzogSXMgYSBkaXJlY3RvcnkiID4mMgorCWVjaG8gIiQwOiAkZHN0X2FyZzogSXMgYSBkaXJlY3RvcnkiID4mMgogCWV4aXQgMQogICAgICAgZmkKLSAgICAgIGRzdD0kZHN0L2BiYXNlbmFtZSAiJHNyYyJgCisgICAgICBkc3RkaXI9JGRzdAorICAgICAgZHN0PSRkc3RkaXIvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcl9zdGF0dXM9MAorICAgIGVsc2UKKyAgICAgICMgUHJlZmVyIGRpcm5hbWUsIGJ1dCBmYWxsIGJhY2sgb24gYSBzdWJzdGl0dXRlIGlmIGRpcm5hbWUgZmFpbHMuCisgICAgICBkc3RkaXI9YAorCShkaXJuYW1lICIkZHN0IikgMj4vZGV2L251bGwgfHwKKwlleHByIFgiJGRzdCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CisJZWNobyBYIiRkc3QiIHwKKwkgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXCkuKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSBzLy4qLy4vOyBxJworICAgICAgYAorCisgICAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgICAgZHN0ZGlyX3N0YXR1cz0kPwogICAgIGZpCiAgIGZpCiAKLSAgIyBUaGlzIHNlZCBjb21tYW5kIGVtdWxhdGVzIHRoZSBkaXJuYW1lIGNvbW1hbmQuCi0gIGRzdGRpcj1gZWNobyAiJGRzdCIgfCBzZWQgLWUgJ3MsLyokLCw7cyxbXi9dKiQsLDtzLC8qJCwsO3MsXiQsLiwnYAorICBvYnNvbGV0ZV9ta2Rpcl91c2VkPWZhbHNlCiAKLSAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0cy4KKyAgaWYgdGVzdCAkZHN0ZGlyX3N0YXR1cyAhPSAwOyB0aGVuCisgICAgY2FzZSAkcG9zaXhfbWtkaXIgaW4KKyAgICAgICcnKQorCSMgQ3JlYXRlIGludGVybWVkaWF0ZSBkaXJzIHVzaW5nIG1vZGUgNzU1IGFzIG1vZGlmaWVkIGJ5IHRoZSB1bWFzay4KKwkjIFRoaXMgaXMgbGlrZSBGcmVlQlNEICdpbnN0YWxsJyBhcyBvZiAxOTk3LTEwLTI4LgorCXVtYXNrPWB1bWFza2AKKwljYXNlICRzdHJpcGNtZC4kdW1hc2sgaW4KKwkgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorCSAgKlsyMzY3XVsyMzY3XSkgbWtkaXJfdW1hc2s9JHVtYXNrOzsKKwkgIC4qMFswMl1bMDJdIHwgLlswMl1bMDJdIHwgLlswMl0pIG1rZGlyX3VtYXNrPTIyOzsKIAotICAjIFNraXAgbG90cyBvZiBzdGF0IGNhbGxzIGluIHRoZSB1c3VhbCBjYXNlLgotICBpZiB0ZXN0ICEgLWQgIiRkc3RkaXIiOyB0aGVuCi0gICAgZGVmYXVsdElGUz0nCi0JICcKLSAgICBJRlM9IiR7SUZTLSRkZWZhdWx0SUZTfSIKKwkgICpbMC03XSkKKwkgICAgbWtkaXJfdW1hc2s9YGV4cHIgJHVtYXNrICsgMjIgXAorCSAgICAgIC0gJHVtYXNrICUgMTAwICUgNDAgKyAkdW1hc2sgJSAyMCBcCisJICAgICAgLSAkdW1hc2sgJSAxMCAlIDQgKyAkdW1hc2sgJSAyCisJICAgIGA7OworCSAgKikgbWtkaXJfdW1hc2s9JHVtYXNrLGdvLXc7OworCWVzYWMKIAotICAgIG9JRlM9JElGUwotICAgICMgU29tZSBzaCdzIGNhbid0IGhhbmRsZSBJRlM9LyBmb3Igc29tZSByZWFzb24uCi0gICAgSUZTPSclJwotICAgIHNldCB4IGBlY2hvICIkZHN0ZGlyIiB8IHNlZCAtZSAnc0AvQCVAZycgLWUgJ3NAXiVAL0AnYAotICAgIHNoaWZ0Ci0gICAgSUZTPSRvSUZTCisJIyBXaXRoIC1kLCBjcmVhdGUgdGhlIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUgdXNlci1zcGVjaWZpZWQgbW9kZS4KKwkjIE90aGVyd2lzZSwgcmVseSBvbiAkbWtkaXJfdW1hc2suCisJaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisJICBta2Rpcl9tb2RlPS1tJG1vZGUKKwllbHNlCisJICBta2Rpcl9tb2RlPQorCWZpCiAKLSAgICBwYXRoY29tcD0KKwlwb3NpeF9ta2Rpcj1mYWxzZQorCWNhc2UgJHVtYXNrIGluCisJICAqWzEyMzU2N11bMC03XVswLTddKQorCSAgICAjIFBPU0lYIG1rZGlyIC1wIHNldHMgdSt3eCBiaXRzIHJlZ2FyZGxlc3Mgb2YgdW1hc2ssIHdoaWNoCisJICAgICMgaXMgaW5jb21wYXRpYmxlIHdpdGggRnJlZUJTRCAnaW5zdGFsbCcgd2hlbiAodW1hc2sgJiAzMDApICE9IDAuCisJICAgIDs7CisJICAqKQorCSAgICB0bXBkaXI9JHtUTVBESVItL3RtcH0vaW5zJFJBTkRPTS0kJAorCSAgICB0cmFwICdyZXQ9JD87IHJtZGlyICIkdG1wZGlyL2QiICIkdG1wZGlyIiAyPi9kZXYvbnVsbDsgZXhpdCAkcmV0JyAwCiAKLSAgICB3aGlsZSB0ZXN0ICQjIC1uZSAwIDsgZG8KLSAgICAgIHBhdGhjb21wPSRwYXRoY29tcCQxCisJICAgIGlmICh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkJZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkdG1wZGlyL2QiKSA+L2Rldi9udWxsIDI+JjEKKwkgICAgdGhlbgorCSAgICAgIGlmIHRlc3QgLXogIiRkaXJfYXJnIiB8fCB7CisJCSAgICMgQ2hlY2sgZm9yIFBPU0lYIGluY29tcGF0aWJpbGl0aWVzIHdpdGggLW0uCisJCSAgICMgSFAtVVggMTEuMjMgYW5kIElSSVggNi41IG1rZGlyIC1tIC1wIHNldHMgZ3JvdXAtIG9yCisJCSAgICMgb3RoZXItd3JpdGVhYmxlIGJpdCBvZiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gaXQgc2hvdWxkbid0LgorCQkgICAjIEZyZWVCU0QgNi4xIG1rZGlyIC1tIC1wIHNldHMgbW9kZSBvZiBleGlzdGluZyBkaXJlY3RvcnkuCisJCSAgIGxzX2xkX3RtcGRpcj1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgY2FzZSAkbHNfbGRfdG1wZGlyIGluCisJCSAgICAgZD8/Pz8tP3ItKikgZGlmZmVyZW50X21vZGU9NzAwOzsKKwkJICAgICBkPz8/Py0/LS0qKSBkaWZmZXJlbnRfbW9kZT03NTU7OworCQkgICAgICopIGZhbHNlOzsKKwkJICAgZXNhYyAmJgorCQkgICAkbWtkaXJwcm9nIC1tJGRpZmZlcmVudF9tb2RlIC1wIC0tICIkdG1wZGlyIiAmJiB7CisJCSAgICAgbHNfbGRfdG1wZGlyXzE9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgICAgdGVzdCAiJGxzX2xkX3RtcGRpciIgPSAiJGxzX2xkX3RtcGRpcl8xIgorCQkgICB9CisJCSB9CisJICAgICAgdGhlbiBwb3NpeF9ta2Rpcj06CisJICAgICAgZmkKKwkgICAgICBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIKKwkgICAgZWxzZQorCSAgICAgICMgUmVtb3ZlIGFueSBkaXJzIGxlZnQgYmVoaW5kIGJ5IGFuY2llbnQgbWtkaXIgaW1wbGVtZW50YXRpb25zLgorCSAgICAgIHJtZGlyIC4vJG1rZGlyX21vZGUgLi8tcCAuLy0tIDI+L2Rldi9udWxsCisJICAgIGZpCisJICAgIHRyYXAgJycgMDs7CisJZXNhYzs7CisgICAgZXNhYworCisgICAgaWYKKyAgICAgICRwb3NpeF9ta2RpciAmJiAoCisJdW1hc2sgJG1rZGlyX3VtYXNrICYmCisJJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIgorICAgICAgKQorICAgIHRoZW4gOgorICAgIGVsc2UKKworICAgICAgIyBUaGUgdW1hc2sgaXMgcmlkaWN1bG91cywgb3IgbWtkaXIgZG9lcyBub3QgY29uZm9ybSB0byBQT1NJWCwKKyAgICAgICMgb3IgaXQgZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiAgQ3JlYXRlIHRoZQorICAgICAgIyBkaXJlY3RvcnkgdGhlIHNsb3cgd2F5LCBzdGVwIGJ5IHN0ZXAsIGNoZWNraW5nIGZvciByYWNlcyBhcyB3ZSBnby4KKworICAgICAgY2FzZSAkZHN0ZGlyIGluCisJLyopIHByZWZpeD0nLyc7OworCS0qKSBwcmVmaXg9Jy4vJzs7CisJKikgIHByZWZpeD0nJzs7CisgICAgICBlc2FjCisKKyAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiCisKKyAgICAgIG9JRlM9JElGUworICAgICAgSUZTPS8KKyAgICAgICRwb3NpeF9nbG9iIHNldCAtZgorICAgICAgc2V0IGZub3JkICRkc3RkaXIKICAgICAgIHNoaWZ0Ci0gICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLSAgICAgICAgJG1rZGlycHJvZyAiJHBhdGhjb21wIgotCSMgbWtkaXIgY2FuIGZhaWwgd2l0aCBhIGBGaWxlIGV4aXN0JyBlcnJvciBpbiBjYXNlIHNldmVyYWwKLQkjIGluc3RhbGwtc2ggYXJlIGNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgY29uY3VycmVudGx5LiAgVGhpcwotCSMgaXMgT0suCi0JdGVzdCAtZCAiJHBhdGhjb21wIiB8fCBleGl0CisgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YKKyAgICAgIElGUz0kb0lGUworCisgICAgICBwcmVmaXhlcz0KKworICAgICAgZm9yIGQKKyAgICAgIGRvCisJdGVzdCAteiAiJGQiICYmIGNvbnRpbnVlCisKKwlwcmVmaXg9JHByZWZpeCRkCisJaWYgdGVzdCAtZCAiJHByZWZpeCI7IHRoZW4KKwkgIHByZWZpeGVzPQorCWVsc2UKKwkgIGlmICRwb3NpeF9ta2RpcjsgdGhlbgorCSAgICAodW1hc2s9JG1rZGlyX3VtYXNrICYmCisJICAgICAkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhaworCSAgICAjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJICAgIHRlc3QgLWQgIiRwcmVmaXgiIHx8IGV4aXQgMQorCSAgZWxzZQorCSAgICBjYXNlICRwcmVmaXggaW4KKwkgICAgICAqXCcqKSBxcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisJICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKKwkgICAgZXNhYworCSAgICBwcmVmaXhlcz0iJHByZWZpeGVzICckcXByZWZpeCciCisJICBmaQorCWZpCisJcHJlZml4PSRwcmVmaXgvCisgICAgICBkb25lCisKKyAgICAgIGlmIHRlc3QgLW4gIiRwcmVmaXhlcyI7IHRoZW4KKwkjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJKHVtYXNrICRta2Rpcl91bWFzayAmJgorCSBldmFsICJcJGRvaXRfZXhlYyBcJG1rZGlycHJvZyAkcHJlZml4ZXMiKSB8fAorCSAgdGVzdCAtZCAiJGRzdGRpciIgfHwgZXhpdCAxCisJb2Jzb2xldGVfbWtkaXJfdXNlZD10cnVlCiAgICAgICBmaQotICAgICAgcGF0aGNvbXA9JHBhdGhjb21wLwotICAgIGRvbmUKKyAgICBmaQogICBmaQogCiAgIGlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgotICAgICRkb2l0ICRta2RpcmNtZCAiJGRzdCIgXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRkb2l0ICRzdHJpcGNtZCAiJGRzdCI7IH0gXAotICAgICAgJiYgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAiJGRzdCI7IH0KLQorICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7IH0gJiYKKyAgICB7IHRlc3QgIiRvYnNvbGV0ZV9ta2Rpcl91c2VkJGNob3duY21kJGNoZ3JwY21kIiA9IGZhbHNlIHx8CisgICAgICB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAkbW9kZSAiJGRzdCI7IH0gfHwgZXhpdCAxCiAgIGVsc2UKLSAgICBkc3RmaWxlPWBiYXNlbmFtZSAiJGRzdCJgCiAKICAgICAjIE1ha2UgYSBjb3VwbGUgb2YgdGVtcCBmaWxlIG5hbWVzIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5LgogICAgIGRzdHRtcD0kZHN0ZGlyL19pbnN0LiQkXwpAQCAtMjYyLDEwICs0NDgsOSBAQAogCiAgICAgIyBUcmFwIHRvIGNsZWFuIHVwIHRob3NlIHRlbXAgZmlsZXMgYXQgZXhpdC4KICAgICB0cmFwICdyZXQ9JD87IHJtIC1mICIkZHN0dG1wIiAiJHJtdG1wIiAmJiBleGl0ICRyZXQnIDAKLSAgICB0cmFwICcoZXhpdCAkPyk7IGV4aXQnIDEgMiAxMyAxNQogCiAgICAgIyBDb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZS4KLSAgICAkZG9pdCAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIgJiYKKyAgICAodW1hc2sgJGNwX3VtYXNrICYmICRkb2l0X2V4ZWMgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiKSAmJgogCiAgICAgIyBhbmQgc2V0IGFueSBvcHRpb25zOyBkbyBjaG1vZCBsYXN0IHRvIHByZXNlcnZlIHNldHVpZCBiaXRzLgogICAgICMKQEAgLTI3Myw1MSArNDU4LDYzIEBACiAgICAgIyBpZ25vcmUgZXJyb3JzIGZyb20gYW55IG9mIHRoZXNlLCBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gaWdub3JlCiAgICAgIyBlcnJvcnMgZnJvbSB0aGUgYWJvdmUgIiRkb2l0ICRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kLgogICAgICMKLSAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0dG1wIjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0dG1wIjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3R0bXAiOyB9ICYmCiAKLSAgICAjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCi0gICAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3R0bXAiICIkZHN0ZGlyLyRkc3RmaWxlIiAyPi9kZXYvbnVsbCBcCi0gICAgICB8fCB7Ci0JICAgIyBUaGUgcmVuYW1lIGZhaWxlZCwgcGVyaGFwcyBiZWNhdXNlIG12IGNhbid0IHJlbmFtZSBzb21ldGhpbmcgZWxzZQotCSAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90Ci0JICAgIyBzdXBwb3J0IC1mLgorICAgICMgSWYgLUMsIGRvbid0IGJvdGhlciB0byBjb3B5IGlmIGl0IHdvdWxkbid0IGNoYW5nZSB0aGUgZmlsZS4KKyAgICBpZiAkY29weV9vbl9jaGFuZ2UgJiYKKyAgICAgICBvbGQ9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3QiCTI+L2Rldi9udWxsYCAmJgorICAgICAgIG5ldz1gTENfQUxMPUMgbHMgLWRsTCAiJGRzdHRtcCIJMj4vZGV2L251bGxgICYmCiAKLQkgICAjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCi0JICAgIyBXZSB0cnkgdGhpcyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUKLQkgICAjIHN5c3RlbXMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG1pZ2h0IGJlIGJ1c3kgZm9yIG90aGVyCi0JICAgIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xlYW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3Ci0JICAgIyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KLQkgICB7Ci0JICAgICBpZiB0ZXN0IC1mICIkZHN0ZGlyLyRkc3RmaWxlIjsgdGhlbgotCSAgICAgICAkZG9pdCAkcm1jbWQgLWYgIiRkc3RkaXIvJGRzdGZpbGUiIDI+L2Rldi9udWxsIFwKLQkgICAgICAgfHwgJGRvaXQgJG12Y21kIC1mICIkZHN0ZGlyLyRkc3RmaWxlIiAiJHJtdG1wIiAyPi9kZXYvbnVsbCBcCi0JICAgICAgIHx8IHsKLQkJIGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0ZGlyLyRkc3RmaWxlIiA+JjIKLQkJIChleGl0IDEpOyBleGl0IDEKLQkgICAgICAgfQotCSAgICAgZWxzZQotCSAgICAgICA6Ci0JICAgICBmaQotCSAgIH0gJiYKKyAgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCAtZiAmJgorICAgICAgIHNldCBYICRvbGQgJiYgb2xkPTokMjokNDokNTokNiAmJgorICAgICAgIHNldCBYICRuZXcgJiYgbmV3PTokMjokNDokNTokNiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCArZiAmJgogCi0JICAgIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgotCSAgICRkb2l0ICRtdmNtZCAiJGRzdHRtcCIgIiRkc3RkaXIvJGRzdGZpbGUiCi0JIH0KLSAgICB9Ci0gIGZpIHx8IHsgKGV4aXQgMSk7IGV4aXQgMTsgfQorICAgICAgIHRlc3QgIiRvbGQiID0gIiRuZXciICYmCisgICAgICAgJGNtcHByb2cgIiRkc3QiICIkZHN0dG1wIiA+L2Rldi9udWxsIDI+JjEKKyAgICB0aGVuCisgICAgICBybSAtZiAiJGRzdHRtcCIKKyAgICBlbHNlCisgICAgICAjIFJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKyAgICAgICRkb2l0ICRtdmNtZCAtZiAiJGRzdHRtcCIgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisKKyAgICAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKKyAgICAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90CisgICAgICAjIHN1cHBvcnQgLWYuCisgICAgICB7CisJIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorCSMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCisJIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgorCSMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldworCSMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCisJeworCSAgdGVzdCAhIC1mICIkZHN0IiB8fAorCSAgJGRvaXQgJHJtY21kIC1mICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCSAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3QiICIkcm10bXAiIDI+L2Rldi9udWxsICYmCisJICAgIHsgJGRvaXQgJHJtY21kIC1mICIkcm10bXAiIDI+L2Rldi9udWxsOyA6OyB9CisJICB9IHx8CisJICB7IGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0IiA+JjIKKwkgICAgKGV4aXQgMSk7IGV4aXQgMQorCSAgfQorCX0gJiYKKworCSMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKwkkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0IgorICAgICAgfQorICAgIGZpIHx8IGV4aXQgMQorCisgICAgdHJhcCAnJyAwCisgIGZpCiBkb25lCiAKLSMgVGhlIGZpbmFsIGxpdHRsZSB0cmljayB0byAiY29ycmVjdGx5IiBwYXNzIHRoZSBleGl0IHN0YXR1cyB0byB0aGUgZXhpdCB0cmFwLgotewotICAoZXhpdCAwKTsgZXhpdCAwCi19Ci0KICMgTG9jYWwgdmFyaWFibGVzOgogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhlNDkwMgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSw1OTUgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQk2QzQzQ0JEQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JCRDE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi87IH07CisJCTZDNDNDQkREMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JCRjE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TICovOyB9OworCQk2QzQzQ0JERTE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQzAxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyAqLzsgfTsKKwkJNkM0M0NCRTYxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQzkxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TICovOyB9OworCQk2QzQzQ0JFODE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JDQjE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi87IH07CisJCTZDNDNDQkU5MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NCQ0MxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgKi87IH07CisJCTZDNDNDQzFGMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA1MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLzsgfTsKKwkJNkM0M0NDMjAxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwNjE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyAqLzsgfTsKKwkJNkM0M0NDMjExNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMDcxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jICovOyB9OworCQk2QzQzQ0MyMjE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA4MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jICovOyB9OworCQk2QzQzQ0MyRjE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovOyB9OworCQk2QzQzQ0MzMDE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI4MTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jICovOyB9OworCQk2QzQzQ0MzMTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovOyB9OworCQk2QzQzQ0MzMjE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovOyB9OworCQk2QzQzQ0MzMzE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovOyB9OworCQk2QzQzQ0MzNDE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovOyB9OworCQk2QzQzQ0MzNTE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzM2MTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLzsgfTsKKwkJNkM0M0NDMzcxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLzsgfTsKKwkJNkM0M0NDMzgxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLzsgfTsKKwkJNkM0M0NDMzkxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzNBMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MyRDE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzQjE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovOyB9OworCQk2QzQzQ0MzQzE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJFMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jICovOyB9OworCQk2QzQzQ0M5NzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M4RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5ODE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOEUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzk5MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOEYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0M5QTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzlCMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkxMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLzsgfTsKKwkJNkM0M0NDOUMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLzsgfTsKKwkJNkM0M0NDOUQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkzMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggKi87IH07CisJCTZDNDNDQzlFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzk0MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzlGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NBMDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0FEMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0EyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0FFMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0EzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0FGMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjAxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0IxMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLzsgfTsKKwkJNkM0M0NDQjIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oICovOyB9OworCQk2QzQzQ0NCMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E4MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovOyB9OworCQk2QzQzQ0NCNDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBOTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQUExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0I2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0FCMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0I3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQUMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzRDE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmZmaS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk2QzQzQ0JCRDE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JCRjE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBzeXN2LlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkMwMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IHRyYW1wb2xpbmUuUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQzkxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBkYXJ3aW4uUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQ0IxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmkuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQ0MxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaTY0LmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzA1MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gZGFyd2luLlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzA2MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBkYXJ3aW42NC5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwNzE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MwODE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpNjQuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMjgxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGNsb3N1cmVzLmM7IHBhdGggPSBzcmMvY2xvc3VyZXMuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gZGVidWcuYzsgcGF0aCA9IHNyYy9kZWJ1Zy5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJBMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBkbG1hbGxvYy5jOyBwYXRoID0gc3JjL2RsbWFsbG9jLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBqYXZhX3Jhd19hcGkuYzsgcGF0aCA9IHNyYy9qYXZhX3Jhd19hcGkuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyQzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gcHJlcF9jaWYuYzsgcGF0aCA9IHNyYy9wcmVwX2NpZi5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHJhd19hcGkuYzsgcGF0aCA9IHNyYy9yYXdfYXBpLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkUxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IHR5cGVzLmM7IHBhdGggPSBzcmMvdHlwZXMuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0M4RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M4RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfY29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzhGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfeDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzkxMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzkyMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5MzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfeDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzk0MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzk1MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0M5NjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfeDg2XzY0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0EyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0EzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2FybXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9jb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpY29uZmlnX2FybXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E4MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBOTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBQTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfYXJtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0FCMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0X2FybXY3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0FDMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfaTM4Ni5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNkY5ODBCQTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmZmaS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTZDNDNDQjNBMTUzNEU5RDEwMDE2MjM2NCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUY2Rjk4MEI3MTQ3Mzg2MTMwMDA4RjEyMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTZDNDNDQkFGMTUzNEY3NkYwMDE2MjM2NCAvKiBpT1MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQ0ExMTUzNTAzOTYwMDE2MjM2NCAvKiBpbmNsdWRlICovLAorCQkJCTZDNDNDQkJCMTUzNEY3NkYwMDE2MjM2NCAvKiBzcmMgKi8sCisJCQkpOworCQkJbmFtZSA9IGlPUzsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JCQjE1MzRGNzZGMDAxNjIzNjQgLyogc3JjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0JDODE1MzRGNzZGMDAxNjIzNjQgLyogeDg2ICovLAorCQkJCTZDNDNDQkJDMTUzNEY3NkYwMDE2MjM2NCAvKiBhcm0gKi8sCisJCQkpOworCQkJcGF0aCA9IHNyYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkJDMTUzNEY3NkYwMDE2MjM2NCAvKiBhcm0gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQkJEMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLywKKwkJCQk2QzQzQ0JCRjE1MzRGNzZGMDAxNjIzNjQgLyogc3lzdi5TICovLAorCQkJCTZDNDNDQkMwMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgKi8sCisJCQkpOworCQkJcGF0aCA9IGFybTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkM4MTUzNEY3NkYwMDE2MjM2NCAvKiB4ODYgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQkM5MTUzNEY3NkYwMDE2MjM2NCAvKiBkYXJ3aW4uUyAqLywKKwkJCQk2QzQzQ0JDQjE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8sCisJCQkJNkM0M0NCQ0MxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgKi8sCisJCQkpOworCQkJcGF0aCA9IHg4NjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkYwMTUzNEY3NzgwMDE2MjM2NCAvKiBPUyBYICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0M4QzE1MzUwMzI2MDAxNjIzNjQgLyogaW5jbHVkZSAqLywKKwkJCQk2QzQzQ0JGQzE1MzRGNzc4MDAxNjIzNjQgLyogc3JjICovLAorCQkJKTsKKwkJCW5hbWUgPSAiT1MgWCI7CisJCQlwYXRoID0gb3N4OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCRkMxNTM0Rjc3ODAwMTYyMzY0IC8qIHNyYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDMDQxNTM0Rjc3ODAwMTYyMzY0IC8qIHg4NiAqLywKKwkJCSk7CisJCQlwYXRoID0gc3JjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDMDQxNTM0Rjc3ODAwMTYyMzY0IC8qIHg4NiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDMDUxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbi5TICovLAorCQkJCTZDNDNDQzA2MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TICovLAorCQkJCTZDNDNDQzA3MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyAqLywKKwkJCQk2QzQzQ0MwODE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyAqLywKKwkJCSk7CisJCQlwYXRoID0geDg2OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDM0QxNTM0RjdDNDAwMTYyMzY0IC8qIHNyYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDMjgxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgKi8sCisJCQkJNkM0M0NDMjkxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgKi8sCisJCQkJNkM0M0NDMkExNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgKi8sCisJCQkJNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovLAorCQkJCTZDNDNDQzJDMTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jICovLAorCQkJCTZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi8sCisJCQkJNkM0M0NDMkUxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgKi8sCisJCQkpOworCQkJbmFtZSA9IHNyYzsKKwkJCXBhdGggPSBpb3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0M4QzE1MzUwMzI2MDAxNjIzNjQgLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDOEQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oICovLAorCQkJCTZDNDNDQzhFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8sCisJCQkJNkM0M0NDOEYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8sCisJCQkJNkM0M0NDOTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCAqLywKKwkJCQk2QzQzQ0M5MTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8sCisJCQkJNkM0M0NDOTIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi8sCisJCQkJNkM0M0NDOTMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCAqLywKKwkJCQk2QzQzQ0M5NDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8sCisJCQkJNkM0M0NDOTUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi8sCisJCQkJNkM0M0NDOTYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW5jbHVkZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQ0ExMTUzNTAzOTYwMDE2MjM2NCAvKiBpbmNsdWRlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0NBMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpLmggKi8sCisJCQkJNkM0M0NDQTMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9hcm12Ny5oICovLAorCQkJCTZDNDNDQ0E0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8sCisJCQkJNkM0M0NDQTUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8sCisJCQkJNkM0M0NDQTYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovLAorCQkJCTZDNDNDQ0E3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCAqLywKKwkJCQk2QzQzQ0NBODE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLywKKwkJCQk2QzQzQ0NBOTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0LmggKi8sCisJCQkJNkM0M0NDQUExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCAqLywKKwkJCQk2QzQzQ0NBQjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggKi8sCisJCQkJNkM0M0NDQUMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGluY2x1ZGU7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlGNkIwODM5NTE0NzIxRUU1MDAzMUQ4QTEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzNEMTUzNEY3QzQwMDE2MjM2NCAvKiBzcmMgKi8sCisJCQkJNkM0M0NCQUYxNTM0Rjc2RjAwMTYyMzY0IC8qIGlPUyAqLywKKwkJCQk2QzQzQ0JGMDE1MzRGNzc4MDAxNjIzNjQgLyogT1MgWCAqLywKKwkJCQlGNkY5ODBDNjE0NzM4NjI2MDAwOEYxMjEgLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRjZGOTgwQzYxNDczODYyNjAwMDhGMTIxIC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlGNkY5ODBCQTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpLmEgKi8sCisJCQkJNkM0M0NCM0QxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaS5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXBhdGggPSAuLi8uLjsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTZDNDNDQjNCMTUzNEU5RDEwMDE2MjM2NCAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNkM0M0NDOTcxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOTgxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzk5MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV94ODZfNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlGMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQTAxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF94ODZfNjQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlCMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQzlDMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlGNkY5ODBCODE0NzM4NjEzMDAwOEYxMjEgLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQ0FEMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0FFMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfYXJtdjcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0FGMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCMDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0I0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0I1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybXY3LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NCNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IxMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfYXJtdjcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQk2QzQzQ0IzQzE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpIE9TIFggKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNkM0M0NCNEExNTM0RTlEMTAwMTYyMzY0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgT1MgWCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk2QzQzQ0M0MDE1MzRGRjNCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovLAorCQkJCTZDNDNDQjM5MTUzNEU5RDEwMDE2MjM2NCAvKiBTb3VyY2VzICovLAorCQkJCTZDNDNDQjNBMTUzNEU5RDEwMDE2MjM2NCAvKiBGcmFtZXdvcmtzICovLAorCQkJCTZDNDNDQjNCMTUzNEU5RDEwMDE2MjM2NCAvKiBIZWFkZXJzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAibGliZmZpIE9TIFgiOworCQkJcHJvZHVjdE5hbWUgPSAiZmZpIE9TIFgiOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDZDNDNDQjNEMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQlGNkY5ODBCOTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpIGlPUyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBGNkY5ODBDNDE0NzM4NjEzMDAwOEYxMjEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYmZmaSBpT1MiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNkM0M0NDM0UxNTM0RjhFMjAwMTYyMzY0IC8qIEdlbmVyYXRlIFRyYW1wb2xpbmUgKi8sCisJCQkJNkM0M0NDM0YxNTM0RkYxQjAwMTYyMzY0IC8qIEdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyAqLywKKwkJCQlGNkY5ODBCNjE0NzM4NjEzMDAwOEYxMjEgLyogU291cmNlcyAqLywKKwkJCQlGNkY5ODBCNzE0NzM4NjEzMDAwOEYxMjEgLyogRnJhbWV3b3JrcyAqLywKKwkJCQlGNkY5ODBCODE0NzM4NjEzMDAwOEYxMjEgLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gImxpYmZmaSBpT1MiOworCQkJcHJvZHVjdE5hbWUgPSBmZmk7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gRjZGOTgwQkExNDczODYxMzAwMDhGMTIxIC8qIGxpYmZmaS5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCUY2QjA4Mzk3MTQ3MjFFRTUwMDMxRDhBMSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNDMwOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBGNkIwODM5QTE0NzIxRUU1MDAzMUQ4QTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsaWJmZmkiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IEY2QjA4Mzk1MTQ3MjFFRTUwMDMxRDhBMTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IEY2QjA4Mzk1MTQ3MjFFRTUwMDMxRDhBMTsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQlGNkY5ODBCOTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpIGlPUyAqLywKKwkJCQk2QzQzQ0IzQzE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpIE9TIFggKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0MzRTE1MzRGOEUyMDAxNjIzNjQgLyogR2VuZXJhdGUgVHJhbXBvbGluZSAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgVHJhbXBvbGluZSI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC91c3IvYmluL3B5dGhvbjsKKwkJCXNoZWxsU2NyaXB0ID0gImltcG9ydCBzdWJwcm9jZXNzXG5pbXBvcnQgcmVcbmltcG9ydCBvc1xuaW1wb3J0IGVycm5vXG5pbXBvcnQgc3lzXG5cbmRlZiBtYWluKCk6XG4gICAgd2l0aCBvcGVuKCdzcmMvYXJtL3RyYW1wb2xpbmUuUycsICd3JykgYXMgdHJhbXBfb3V0OlxuICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2Jhc2gnLCAnc3JjL2FybS9nZW50cmFtcC5zaCddLCBzdGRvdXQ9dHJhbXBfb3V0KVxuICAgICAgICBwLndhaXQoKVxuXG5pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOlxuICAgIG1haW4oKSI7CisJCX07CisJCTZDNDNDQzNGMTUzNEZGMUIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICIvdXNyL2Jpbi9weXRob24gZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSI7CisJCX07CisJCTZDNDNDQzQwMTUzNEZGM0IwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICIvdXNyL2Jpbi9weXRob24gZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSI7CisJCX07CisvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2QzQzQ0IzOTE1MzRFOUQxMDAxNjIzNjQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQzFGMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW4uUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzIwMTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMjExNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMjIxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMDE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMyMTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzQxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzODE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzNBMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzQzE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlGNkY5ODBCNjE0NzM4NjEzMDAwOEYxMjEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTZDNDNDQkRDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkREMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JERTE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCRTYxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCRTgxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCRTkxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MyRjE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMxMTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzMxNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNTE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM5MTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzQjE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk2QzQzQ0I0QjE1MzRFOUQxMDAxNjIzNjQgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQpIjsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCQkiXCIkKFNZU1RFTV9BUFBTX0RJUikvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9MaWJyYXJ5L0ZyYW1ld29ya3NcIiIsCisJCQkJKTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC42OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk2QzQzQ0I0QzE1MzRFOUQxMDAxNjIzNjQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCkiOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCURTVFJPT1QgPSAvdG1wL2ZmaS5kc3Q7CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJcIiQoU1lTVEVNX0FQUFNfRElSKS9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL0xpYnJhcnkvRnJhbWV3b3Jrc1wiIiwKKwkJCQkpOworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjY7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2QjA4M0FCMTQ3MjFFRTUwMDMxRDhBMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzMyX0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQUxVRSA9IE5POworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gaW9zL2luY2x1ZGU7CisJCQkJU0RLUk9PVCA9IGlwaG9uZW9zOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRjZCMDgzQUMxNDcyMUVFNTAwMzFEOEExIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF8zMl9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICIiOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQUxVRSA9IE5POworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gaW9zL2luY2x1ZGU7CisJCQkJU0RLUk9PVCA9IGlwaG9uZW9zOworCQkJCVZBTElEQVRFX1BST0RVQ1QgPSBZRVM7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2Rjk4MEMyMTQ3Mzg2MTMwMDA4RjEyMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICgKKwkJCQkJYXJtdjYsCisJCQkJCWFybXY3LAorCQkJCSk7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworCQkJCUdDQ19USFVNQl9TVVBQT1JUID0gTk87CisJCQkJSVBIT05FT1NfREVQTE9ZTUVOVF9UQVJHRVQgPSA0LjA7CisJCQkJT1RIRVJfTERGTEFHUyA9ICItT2JqQyI7CisJCQkJUFJPRFVDVF9OQU1FID0gZmZpOworCQkJCVNLSVBfSU5TVEFMTCA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUY2Rjk4MEMzMTQ3Mzg2MTMwMDA4RjEyMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFSQ0hTID0gKAorCQkJCQlhcm12NiwKKwkJCQkJYXJtdjcsCisJCQkJKTsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CisJCQkJR0NDX1RIVU1CX1NVUFBPUlQgPSBOTzsKKwkJCQlJUEhPTkVPU19ERVBMT1lNRU5UX1RBUkdFVCA9IDQuMDsKKwkJCQlPVEhFUl9MREZMQUdTID0gIi1PYmpDIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBmZmk7CisJCQkJU0tJUF9JTlNUQUxMID0gWUVTOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTZDNDNDQjRBMTUzNEU5RDEwMDE2MjM2NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIE9TIFgiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJNkM0M0NCNEIxNTM0RTlEMTAwMTYyMzY0IC8qIERlYnVnICovLAorCQkJCTZDNDNDQjRDMTUzNEU5RDEwMDE2MjM2NCAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUY2QjA4MzlBMTQ3MjFFRTUwMDMxRDhBMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxpYmZmaSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlGNkIwODNBQjE0NzIxRUU1MDAzMUQ4QTEgLyogRGVidWcgKi8sCisJCQkJRjZCMDgzQUMxNDcyMUVFNTAwMzFEOEExIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRjZGOTgwQzQxNDczODYxMzAwMDhGMTIxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgaU9TIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUY2Rjk4MEMyMTQ3Mzg2MTMwMDA4RjEyMSAvKiBEZWJ1ZyAqLywKKwkJCQlGNkY5ODBDMzE0NzM4NjEzMDAwOEYxMjEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IEY2QjA4Mzk3MTQ3MjFFRTUwMDMxRDhBMSAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbGlidG9vbC12ZXJzaW9uIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24KaW5kZXggYjhiODBlMC4uOTVmNDhjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24KQEAgLTI2LDQgKzI2LDQgQEAKICMgICAgcmVsZWFzZSwgdGhlbiBzZXQgYWdlIHRvIDAuCiAjCiAjIENVUlJFTlQ6UkVWSVNJT046QUdFCi01OjEwOjAKKzY6MDowCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbHRtYWluLnNoCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggNjkzOWRjYy4uYzI4NTJkOAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2x0bWFpbi5zaApAQCAtMSw5ICsxLDkgQEAKLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCiAKLSMgbHRtYWluLnNoIChHTlUgbGlidG9vbCkgMi4yLjYKKyMgbGlidG9vbCAoR05VIGxpYnRvb2wpIDIuNC4yCiAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCiAKQEAgLTMyLDUwICszMiw1NyBAQAogIwogIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KICMKLSMgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0jICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCi0jIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotIyAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0jICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotIyAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcwotIyAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwotIyAgICAgLS10YWc9VEFHICAgICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRwotIyAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKLSMgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KLSMgLWgsIC0taGVscCAgICAgICAgICAgICAgIHByaW50IHNob3J0IG9yIGxvbmcgaGVscCBtZXNzYWdlCisjICAgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisjICAgICAgIC0tZGVidWcgICAgICAgICAgICAgIGVuYWJsZSB2ZXJib3NlIHNoZWxsIHRyYWNpbmcKKyMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisjICAgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCisjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyMgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0KQorIyAgICAgICAtLW5vLXdhcm4gICAgICAgICAgICBkb24ndCBkaXNwbGF5IHdhcm5pbmcgbWVzc2FnZXMKKyMgICAgICAgLS10YWc9VEFHICAgICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRworIyAgIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBwcmludCBtb3JlIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgdGhhbiBkZWZhdWx0CisjICAgICAgIC0tbm8tdmVyYm9zZSAgICAgICAgIGRvbid0IHByaW50IHRoZSBleHRyYSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisjICAgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KKyMgICAtaCwgLS1oZWxwLCAtLWhlbHAtYWxsICAgcHJpbnQgc2hvcnQsIGxvbmcsIG9yIGRldGFpbGVkIGhlbHAgbWVzc2FnZQogIwogIyBNT0RFIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAjCi0jICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5Ci0jICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0Ci0jICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQotIyAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcwotIyAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKLSMgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQotIyAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKKyMgICAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQorIyAgICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0CisjICAgICAgICAgZXhlY3V0ZSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCisjICAgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKKyMgICAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKKyMgICAgICAgICBsaW5rICAgICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCisjICAgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CiAjCi0jIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4KKyMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLiAgV2hlbiBwYXNzZWQgYXMgZmlyc3Qgb3B0aW9uLAorIyBgLS1tb2RlPU1PREUnIG1heSBiZSBhYmJyZXZpYXRlZCBhcyBgTU9ERScgb3IgYSB1bmlxdWUgYWJicmV2aWF0aW9uIG9mIHRoYXQuCiAjIFRyeSBgJHByb2duYW1lIC0taGVscCAtLW1vZGU9TU9ERScgZm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBNT0RFLgogIwogIyBXaGVuIHJlcG9ydGluZyBhIGJ1ZywgcGxlYXNlIGRlc2NyaWJlIGEgdGVzdCBjYXNlIHRvIHJlcHJvZHVjZSBpdCBhbmQKICMgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgogIwotIyAgICAgICBob3N0LXRyaXBsZXQ6CSRob3N0Ci0jICAgICAgIHNoZWxsOgkJJFNIRUxMCi0jICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKLSMgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKLSMgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKLSMgICAgICAgJHByb2duYW1lOgkJKEdOVSBsaWJ0b29sKSAyLjIuNgotIyAgICAgICBhdXRvbWFrZToJCSRhdXRvbWFrZV92ZXJzaW9uCi0jICAgICAgIGF1dG9jb25mOgkJJGF1dG9jb25mX3ZlcnNpb24KKyMgICAgICAgICBob3N0LXRyaXBsZXQ6CSRob3N0CisjICAgICAgICAgc2hlbGw6CQkkU0hFTEwKKyMgICAgICAgICBjb21waWxlcjoJCSRMVENDCisjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKKyMgICAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQorIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sKSAyLjQuMiBEZWJpYW4tMi40LjItMXVidW50dTEKKyMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KKyMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgorIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgorIyBHZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhlbHAvPi4KIAotUFJPR1JBTT1sdG1haW4uc2gKK1BST0dSQU09bGlidG9vbAogUEFDS0FHRT1saWJ0b29sCi1WRVJTSU9OPTIuMi42CitWRVJTSU9OPSIyLjQuMiBEZWJpYW4tMi40LjItMXVidW50dTEiCiBUSU1FU1RBTVA9IiIKLXBhY2thZ2VfcmV2aXNpb249MS4zMDEyCitwYWNrYWdlX3JldmlzaW9uPTEuMzMzNwogCiAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCiBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KQEAgLTkxLDEwICs5OCwxNSBAQAogQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKIERVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskMQorX0xURUNIT19FT0YnCit9CisKICMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgotIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLSMgZS5nLiBMQU5HPUMgKG5vdGFibHkgU0NPKS4KIGx0X3VzZXJfbG9jYWxlPQogbHRfc2FmZV9sb2NhbGU9CiBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKQEAgLTEwNywyNCArMTE5LDI4IEBACiAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCiAJZmkiCiBkb25lCitMQ19BTEw9QworTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFIExDX0FMTAogCiAkbHRfdW5zZXQgQ0RQQVRICiAKIAorIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCisjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgorIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKKyMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQorIyBmdW5jdGlvbi4KK3Byb2dwYXRoPSIkMCIKIAogCiAKIDogJHtDUD0iY3AgLWYifQotOiAke0VDSE89ImVjaG8ifQotOiAke0VHUkVQPSIvYmluL2dyZXAgLUUifQotOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQotOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9Ci06ICR7TE5fUz0ibG4gLXMifQordGVzdCAiJHtFQ0hPK3NldH0iID0gc2V0IHx8IEVDSE89JHthc19lY2hvLSdwcmludGYgJXNcbid9CiA6ICR7TUFLRT0ibWFrZSJ9CiA6ICR7TUtESVI9Im1rZGlyIn0KIDogJHtNVj0ibXYgLWYifQogOiAke1JNPSJybSAtZiJ9Ci06ICR7U0VEPSIvYmluL3NlZCJ9CiA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KIDogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQogCkBAIC0xNDQsNiArMTYwLDI3IEBACiBkaXJuYW1lPSJzLC9bXi9dKiQsLCIKIGJhc2VuYW1lPSJzLF4uKi8sLCIKIAorIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KK2Z1bmNfZGlybmFtZSAoKQoreworICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKyAgICBlbHNlCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisgICAgZmkKK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2Jhc2VuYW1lIGZpbGUKK2Z1bmNfYmFzZW5hbWUgKCkKK3sKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKK30gIyBmdW5jX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KICMgY2FsbDoKQEAgLTE1OCwzMyArMTk1LDE4MyBAQAogIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCiBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCiB7Ci0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAotICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gIGVsc2UKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gIGZpCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCisgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICAgIGZpCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCit9ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKK2Z1bmNfc3RyaXBuYW1lICgpCit7CisgICAgY2FzZSAkezJ9IGluCisgICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworICAgIGVzYWMKK30gIyBmdW5jX3N0cmlwbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCitwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKK3BhdGhjZHI9J3MsXi9bXi9dKiwsJworcmVtb3ZlZG90cGFydHM9Jzpkb3RzbAorCQlzQC9cLi9AL0BnCisJCXQgZG90c2wKKwkJcywvXC4kLC8sJworY29sbGFwc2VzbGFzaGVzPSdzQC9cezEsXH1AL0BnJworZmluYWxzbGFzaD0ncywvKiQsLywnCisKKyMgZnVuY19ub3JtYWxfYWJzcGF0aCBQQVRICisjIFJlbW92ZSBkb3VibGVkLXVwIGFuZCB0cmFpbGluZyBzbGFzaGVzLCAiLiIgcGF0aCBjb21wb25lbnRzLAorIyBhbmQgY2FuY2VsIG91dCBhbnkgIi4uIiBwYXRoIGNvbXBvbmVudHMgaW4gUEFUSCBhZnRlciBtYWtpbmcKKyMgaXQgYW4gYWJzb2x1dGUgcGF0aC4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKK2Z1bmNfbm9ybWFsX2Fic3BhdGggKCkKK3sKKyAgIyBTdGFydCBmcm9tIHJvb3QgZGlyIGFuZCByZWFzc2VtYmxlIHRoZSBwYXRoLgorICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD0kMQorICBmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZT0KKyAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCBpbgorICAgICIiKQorICAgICAgIyBFbXB0eSBwYXRoLCB0aGF0IGp1c3QgbWVhbnMgJGN3ZC4KKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiYHB3ZGAiCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgICByZXR1cm4KKyAgICA7OworICAgICMgVGhlIG5leHQgdGhyZWUgZW50cmllcyBhcmUgdXNlZCB0byBzcG90IGEgcnVuIG9mIHByZWNpc2VseQorICAgICMgdHdvIGxlYWRpbmcgc2xhc2hlcyB3aXRob3V0IHVzaW5nIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzZXM7CisgICAgIyB3ZSB0YWtlIGFkdmFudGFnZSBvZiBjYXNlJ3MgZmlyc3QtbWF0Y2ggYmVoYXZpb3VyLgorICAgIC8vLyopCisgICAgICAjIFVudXN1YWwgZm9ybSBvZiBhYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgorICAgIDs7CisgICAgLy8qKQorICAgICAgIyBOb3QgbmVjZXNzYXJpbHkgYW4gb3JkaW5hcnkgcGF0aDsgUE9TSVggcmVzZXJ2ZXMgbGVhZGluZyAnLy8nCisgICAgICAjIGFuZCBmb3IgZXhhbXBsZSBDeWd3aW4gdXNlcyBpdCB0byBhY2Nlc3MgcmVtb3RlIGZpbGUgc2hhcmVzCisgICAgICAjIG92ZXIgQ0lGUy9TTUIsIHNvIHdlIGNvbnNlcnZlIGEgbGVhZGluZyBkb3VibGUgc2xhc2ggaWYgZm91bmQuCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZT0vCisgICAgOzsKKyAgICAvKikKKyAgICAgICMgQWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KKyAgICA7OworICAgICopCisgICAgICAjIFJlbGF0aXZlIHBhdGgsIHByZXBlbmQgJGN3ZC4KKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YHB3ZGAvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgKKyAgICA7OworICBlc2FjCisgICMgQ2FuY2VsIG91dCBhbGwgdGhlIHNpbXBsZSBzdHVmZiB0byBzYXZlIGl0ZXJhdGlvbnMuICBXZSBhbHNvIHdhbnQKKyAgIyB0aGUgcGF0aCB0byBlbmQgd2l0aCBhIHNsYXNoIGZvciBlYXNlIG9mIHBhcnNpbmcsIHNvIG1ha2Ugc3VyZQorICAjIHRoZXJlIGlzIG9uZSAoYW5kIG9ubHkgb25lKSBoZXJlLgorICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcmVtb3ZlZG90cGFydHMiIC1lICIkY29sbGFwc2VzbGFzaGVzIiAtZSAiJGZpbmFsc2xhc2giYAorICB3aGlsZSA6OyBkbworICAgICMgUHJvY2Vzc2VkIGl0IGFsbCB5ZXQ/CisgICAgaWYgdGVzdCAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiID0gLyA7IHRoZW4KKyAgICAgICMgSWYgd2UgYXNjZW5kZWQgdG8gdGhlIHJvb3QgdXNpbmcgIi4uIiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eSBub3cuCisgICAgICBpZiB0ZXN0IC16ICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiIDsgdGhlbgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0vCisgICAgICBmaQorICAgICAgYnJlYWsKKyAgICBmaQorICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHBhdGhjYXIiYAorICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRwYXRoY2RyImAKKyAgICAjIEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIGl0CisgICAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50IGluCisgICAgICAiIikKKyAgICAgICAgIyBUcmFpbGluZyBlbXB0eSBwYXRoIGNvbXBvbmVudCwgaWdub3JlIGl0LgorICAgICAgOzsKKyAgICAgIC4uKQorICAgICAgICAjIFBhcmVudCBkaXI7IHN0cmlwIGxhc3QgYXNzZW1ibGVkIGNvbXBvbmVudCBmcm9tIHJlc3VsdC4KKyAgICAgICAgZnVuY19kaXJuYW1lICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgICA7OworICAgICAgKikKKyAgICAgICAgIyBBY3R1YWwgcGF0aCBjb21wb25lbnQsIGFwcGVuZCBpdC4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0LyRmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisgICMgUmVzdG9yZSBsZWFkaW5nIGRvdWJsZS1zbGFzaCBpZiBvbmUgd2FzIGZvdW5kIG9uIGVudHJ5LgorICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2UkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIH0KIAotIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisjIGZ1bmNfcmVsYXRpdmVfcGF0aCBTUkNESVIgRFNURElSCisjIGdlbmVyYXRlcyBhIHJlbGF0aXZlIHBhdGggZnJvbSBTUkNESVIgdG8gRFNURElSLCB3aXRoIGEgdHJhaWxpbmcKKyMgc2xhc2ggaWYgbm9uLWVtcHR5LCBzdWl0YWJsZSBmb3IgaW1tZWRpYXRlbHkgYXBwZW5kaW5nIGEgZmlsZW5hbWUKKyMgd2l0aG91dCBuZWVkaW5nIHRvIGFwcGVuZCBhIHNlcGFyYXRvci4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgorZnVuY19yZWxhdGl2ZV9wYXRoICgpCit7CisgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQxIgorICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKyAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDIiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAogCi0jIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKLSMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0jIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAotIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCi0jIGZ1bmN0aW9uLgotcHJvZ3BhdGg9IiQwIgorICAjIEFzY2VuZCB0aGUgdHJlZSBzdGFydGluZyBmcm9tIGxpYmRpcgorICB3aGlsZSA6OyBkbworICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBmb3VuZCBhIHByZWZpeCBvZiBiaW5kaXIKKyAgICBjYXNlICRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciBpbgorICAgICAgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyKQorICAgICAgICAjIGZvdW5kIGFuIGV4YWN0IG1hdGNoCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPQorICAgICAgICBicmVhaworICAgICAgICA7OworICAgICAgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyKikKKyAgICAgICAgIyBmb3VuZCBhIG1hdGNoaW5nIHByZWZpeAorICAgICAgICBmdW5jX3N0cmlwbmFtZSAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIgorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9LgorICAgICAgICBmaQorICAgICAgICBicmVhaworICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgZnVuY19kaXJuYW1lICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcgorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0ke2Z1bmNfZGlybmFtZV9yZXN1bHR9CisgICAgICAgIGlmIHRlc3QgIngkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIiID0geCA7IHRoZW4KKyAgICAgICAgICAjIEhhdmUgdG8gZGVzY2VuZCBhbGwgdGhlIHdheSB0byB0aGUgcm9vdCEKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgTm93IGNhbGN1bGF0ZSBwYXRoOyB0YWtlIGNhcmUgdG8gYXZvaWQgZG91YmxpbmctdXAgc2xhc2hlcy4KKyAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgIGZ1bmNfc3RyaXBuYW1lICcvJyAnLycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZCIKKyAgaWYgdGVzdCAieCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiICE9IHggOyB0aGVuCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0ke2Z1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHR9LyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fQorICBmaQorCisgICMgTm9ybWFsaXNhdGlvbi4gSWYgYmluZGlyIGlzIGxpYmRpciwgcmV0dXJuIGVtcHR5IHN0cmluZywKKyAgIyBlbHNlIHJlbGF0aXZlIHBhdGggZW5kaW5nIHdpdGggYSBzbGFzaDsgZWl0aGVyIHdheSwgdGFyZ2V0CisgICMgZmlsZSBuYW1lIGNhbiBiZSBkaXJlY3RseSBhcHBlbmRlZC4KKyAgaWYgdGVzdCAhIC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICBmdW5jX3N0cmlwbmFtZSAnLi8nICcnICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdC8iCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgIGZpCit9CiAKICMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgotIyBJbiB0aGUgdW5saWtlbHkgZXZlbnQgJHByb2duYW1lIGJlZ2FuIHdpdGggYSAnLScsIGl0IHdvdWxkIHBsYXkgaGF2b2Mgd2l0aAotIyBmdW5jX2VjaG8gKGltYWdpbmUgcHJvZ25hbWU9LW4pLCBzbyB3ZSBwcmVwZW5kIC4vIGluIHRoYXQgY2FzZToKIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRwcm9ncGF0aCIKIHByb2duYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotY2FzZSAkcHJvZ25hbWUgaW4KLSAgLSopIHByb2duYW1lPS4vJHByb2duYW1lIDs7Ci1lc2FjCiAKICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgcmVleGVjdXRpb246CiBjYXNlICRwcm9ncGF0aCBpbgpAQCAtMTk2LDcgKzM4Myw3IEBACiAgICAgIDs7CiAgICopCiAgICAgIHNhdmVfSUZTPSIkSUZTIgotICAgICBJRlM9OgorICAgICBJRlM9JHtQQVRIX1NFUEFSQVRPUi06fQogICAgICBmb3IgcHJvZ2RpciBpbiAkUEFUSDsgZG8KICAgICAgICBJRlM9IiRzYXZlX0lGUyIKICAgICAgICB0ZXN0IC14ICIkcHJvZ2Rpci8kcHJvZ25hbWUiICYmIGJyZWFrCkBAIC0yMTUsNiArNDAyLDE1IEBACiAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KIGRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKIAorIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKyMgc3RyaW5nIGxpdGVyYWxseS4KK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAorIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgorbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworCiAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQogIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJwogIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCkBAIC0yNDMsNyArNDM5LDcgQEAKICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgogZnVuY19lY2hvICgpCiB7Ci0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCisgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0kKiIKIH0KIAogIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCkBAIC0yNTgsMTggKzQ1NCwyNSBAQAogICAgIDoKIH0KIAorIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIkKiIKK30KKwogIyBmdW5jX2Vycm9yIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgogZnVuY19lcnJvciAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgorICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCiB9CiAKICMgZnVuY193YXJuaW5nIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCiBmdW5jX3dhcm5pbmcgKCkKIHsKLSAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogd2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCiAKICAgICAjIGJhc2ggYnVnIGFnYWluOgogICAgIDoKQEAgLTMyNiw5ICs1MjksOSBAQAogICAgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbiAqLyopIDs7ICopIGJyZWFrIDs7IGVzYWMKIAogICAgICAgICAjIC4uLm90aGVyd2lzZSB0aHJvdyBhd2F5IHRoZSBjaGlsZCBkaXJlY3RvcnkgYW5kIGxvb3AKLSAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICJYJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgICAgICAgIG15X2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKICAgICAgIGRvbmUKLSAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiWCRteV9kaXJfbGlzdCIgfCAkWHNlZCAtZSAncyw6KiQsLCdgCisgICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIiRteV9kaXJfbGlzdCIgfCAkU0VEICdzLDoqJCwsJ2AKIAogICAgICAgc2F2ZV9ta2Rpcl9wX0lGUz0iJElGUyI7IElGUz0nOicKICAgICAgIGZvciBteV9kaXIgaW4gJG15X2Rpcl9saXN0OyBkbwpAQCAtMzc4LDcgKzU4MSw3IEBACiAgICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBcYCRteV90bXBkaXInIgogICAgIGZpCiAKLSAgICAkRUNITyAiWCRteV90bXBkaXIiIHwgJFhzZWQKKyAgICAkRUNITyAiJG15X3RtcGRpciIKIH0KIAogCkBAIC0zOTIsNyArNTk1LDcgQEAKIHsKICAgICBjYXNlICQxIGluCiAgICAgICAqW1xcXGBcIlwkXSopCi0JZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9YCRFQ0hPICJYJDEiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OworCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CiAgICAgICAqKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD0iJDEiIDs7CiAgICAgZXNhYwpAQCAtNDE5LDcgKzYyMiw3IEBACiB7CiAgICAgY2FzZSAkMSBpbgogICAgICAgKltcXFxgXCJdKikKLQlteV9hcmc9YCRFQ0hPICJYJDEiIHwgJFhzZWQgXAorCW15X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgXAogCSAgICAtZSAiJGRvdWJsZV9xdW90ZV9zdWJzdCIgLWUgIiRzZWRfZG91YmxlX2JhY2tzbGFzaCJgIDs7CiAgICAgICAqKQogICAgICAgICBteV9hcmc9IiQxIiA7OwpAQCAtNDg4LDE1ICs2OTEsMzkgQEAKICAgICBmaQogfQogCi0KLQorIyBmdW5jX3RyX3NoCisjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgorIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCisjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAorIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KK2Z1bmNfdHJfc2ggKCkKK3sKKyAgY2FzZSAkMSBpbgorICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCisgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCisgICAgOzsKKyAgKiApCisgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKKyAgICA7OworICBlc2FjCit9CiAKIAogIyBmdW5jX3ZlcnNpb24KICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY192ZXJzaW9uICgpCiB7Ci0gICAgJFNFRCAtbiAnL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKKyAgICAkb3B0X2RlYnVnCisKKyAgICAkU0VEIC1uICcvKEMpLyFiIGdvCisJOm1vcmUKKwkvXC4vIXsKKwkgIE4KKwkgIHMvXG4jIC8gLworCSAgYiBtb3JlCisJfQorCTpnbworCS9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CiAgICAgICAgIHMvXiMgLy8KIAlzL14jICokLy8KICAgICAgICAgcy9cKChDKVwpWyAwLTksLV0qXCggWzEtOV1bMC05XSpcKS9cMVwyLwpAQCAtNTA5LDIyICs3MzYsMjggQEAKICMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY191c2FnZSAoKQogewotICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIC1oLyB7CisgICAgJG9wdF9kZWJ1ZworCisgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLiotLWhlbHAvIHsKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogCXMvXCRwcm9nbmFtZS8nJHByb2duYW1lJy8KIAlwCiAgICAgfScgPCAiJHByb2dwYXRoIgotICAgICRFQ0hPCisgICAgZWNobwogICAgICRFQ0hPICJydW4gXGAkcHJvZ25hbWUgLS1oZWxwIHwgbW9yZScgZm9yIGZ1bGwgdXNhZ2UiCiAgICAgZXhpdCAkPwogfQogCi0jIGZ1bmNfaGVscAotIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyMgZnVuY19oZWxwIFtOT0VYSVRdCisjIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LAorIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgogZnVuY19oZWxwICgpCiB7CisgICAgJG9wdF9kZWJ1ZworCiAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKKwk6cHJpbnQKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKQEAgLTUzNCwxMSArNzY3LDE4IEBACiAJcypcJExUQ0ZMQUdTKiciJExUQ0ZMQUdTIicqCiAJcypcJExEKiciJExEIicqCiAJcy9cJHdpdGhfZ251X2xkLyciJHdpdGhfZ251X2xkIicvCi0Jcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0Jcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKCR7QVVUT01BS0UtYXV0b21ha2V9IC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKCR7QVVUT0NPTkYtYXV0b2NvbmZ9IC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCiAJcAotICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgZXhpdCAkPworCWQKKyAgICAgfQorICAgICAvXiMgLiogaG9tZSBwYWdlOi9iIHByaW50CisgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAorICAgICAnIDwgIiRwcm9ncGF0aCIKKyAgICByZXQ9JD8KKyAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KKyAgICAgIGV4aXQgJHJldAorICAgIGZpCiB9CiAKICMgZnVuY19taXNzaW5nX2FyZyBhcmduYW1lCkBAIC01NDYsNjMgKzc4NiwxMDYgQEAKICMgZXhpdF9jbWQuCiBmdW5jX21pc3NpbmdfYXJnICgpCiB7Ci0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisgICAgJG9wdF9kZWJ1ZworCisgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgogICAgIGV4aXRfY21kPWV4aXQKIH0KIAorCisjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0CisjIFNldCBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcgc2hlbGwKKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCit7CisgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKKworICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKK30gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbG9uZ29wdAorIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAorIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgorZnVuY19zcGxpdF9sb25nX29wdCAoKQoreworICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJworICAgIG15X3NlZF9sb25nX2FyZz0nMXMvXi0tW149XSo9Ly8nCisKKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKIGV4aXRfY21kPToKIAogCiAKIAogCi0jIENoZWNrIHRoYXQgd2UgaGF2ZSBhIHdvcmtpbmcgJEVDSE8uCi1pZiB0ZXN0ICJYJDEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCi0gIDoKLWVsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnOyB0aGVuCi0gICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKLSAgOgotZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlICRFQ0hPIHdpbGwgd29yay4KLSAgZXhlYyAkU0hFTEwgIiRwcm9ncGF0aCIgLS1uby1yZWV4ZWMgJHsxKyIkQCJ9Ci1maQotCi1pZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwotICBzaGlmdAotICBjYXQgPDxFT0YKLSQqCi1FT0YKLSAgZXhpdCAkRVhJVF9TVUNDRVNTCi1maQotCiBtYWdpYz0iJSUlTUFHSUMgdmFyaWFibGUlJSUiCiBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKIAogIyBHbG9iYWwgdmFyaWFibGVzLgotIyAkbW9kZSBpcyB1bnNldAogbm9ub3B0PQotZXhlY3V0ZV9kbGZpbGVzPQogcHJlc2VydmVfYXJncz0KIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKIG8ybG89InMvXFwuJHtvYmpleHR9XCQvLmxvLyIKIGV4dHJhY3RlZF9hcmNoaXZlcz0KIGV4dHJhY3RlZF9zZXJpYWw9MAogCi1vcHRfZHJ5X3J1bj1mYWxzZQotb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCi1vcHRfc2lsZW50PWZhbHNlCi1vcHRfZGVidWc9OgotCiAjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZwogIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgogZXhlY19jbWQ9CiAKKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCisjIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KK2Z1bmNfYXBwZW5kICgpCit7CisgICAgZXZhbCAiJHsxfT1cJCR7MX1cJHsyfSIKK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworIyBmdW5jX2FwcGVuZF9xdW90ZWQgdmFyIHZhbHVlCisjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAorIyBieSBhIHNwYWNlLgorZnVuY19hcHBlbmRfcXVvdGVkICgpCit7CisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKyAgICBldmFsICIkezF9PVwkJHsxfVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCit9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KK2Z1bmNfYXJpdGggKCkKK3sKKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCit9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfbGVuIHN0cmluZworIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorZnVuY19sZW4gKCkKK3sKKyAgICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiR7MX0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfbG8ybyBvYmplY3QKK2Z1bmNfbG8ybyAoKQoreworICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKK2Z1bmNfeGZvcm0gKCkKK3sKKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKK30gIyBmdW5jX3hmb3JtIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKICMgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uIGFyZy4uLgogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQogIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KQEAgLTYzNiwxNiArOTE5LDE2IEBACiAjIERpc3BsYXkgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdC4KIGZ1bmNfZmVhdHVyZXMgKCkKIHsKLSAgICAkRUNITyAiaG9zdDogJGhvc3QiCisgICAgZWNobyAiaG9zdDogJGhvc3QiCiAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgICRFQ0hPICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGVsc2UKLSAgICAgICRFQ0hPICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICAgZmkKICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkRUNITyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICBlY2hvICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBlbHNlCi0gICAgICAkRUNITyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgogICAgIGZpCiAKICAgICBleGl0ICQ/CkBAIC02OTIsMTMzICs5NzUsNiBAQAogICBlc2FjCiB9CiAKLSMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCi0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgotewotCi0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAotICBjYXNlICQxIGluCi0gIGNsZWFufGNsZWF8Y2xlfGNsKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGxpbmt8bGlufGxpfGwpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBlc2FjCi0KLSAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6Ci0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KLSAgICBvcHQ9IiQxIgotICAgIHNoaWZ0Ci0KLSAgICBjYXNlICRvcHQgaW4KLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7Ci0KLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgotCQkJb3B0X2RlYnVnPSdzZXQgLXgnCi0JCQkkb3B0X2RlYnVnCi0JCQk7OwotCi0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7Ci0gICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OwotICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OwotCi0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLQkJCWNhc2UgJDEgaW4KLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKLQkJCSAgY2xlYW4pCTs7Ci0JCQkgIGNvbXBpbGUpCTs7Ci0JCQkgIGV4ZWN1dGUpCTs7Ci0JCQkgIGZpbmlzaCkJOzsKLQkJCSAgaW5zdGFsbCkJOzsKLQkJCSAgbGluaykJCTs7Ci0JCQkgIHJlbGluaykJOzsKLQkJCSAgdW5pbnN0YWxsKQk7OwotCi0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgotCQkJICAgICBleGl0X2NtZD1leGl0Ci0JCQkgICAgIGJyZWFrCi0JCQkgICAgIDs7Ci0JCSAgICAgICAgZXNhYwotCi0JCQltb2RlPSIkMSIKLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQotCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKLQotICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCW9wdF9zaWxlbnQ9OgotCQkJOzsKLQotICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKLQkJCTs7Ci0KLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgotCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQotCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCi0JCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OwotICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OwotCi0gICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OwotCi0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgotCQkJYnJlYWsKLQkJCTs7Ci0gICAgZXNhYwotICBkb25lCi0KLQotICBjYXNlICRob3N0IGluCi0gICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKikKLSAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcwotICAgICAgOzsKLSAgZXNhYwotCi0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgotICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KLSAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKLX0KLQogIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKICMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKICMgcmVsZWFzZSBvZiBsaWJ0b29sLgpAQCAtODU1LDM4ICsxMDExLDIxOSBAQAogfQogCiAKKyMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorY2FzZSAkMSBpbgorY2xlYW58Y2xlYXxjbGV8Y2wpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CisgIDs7CitmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworbGlua3xsaW58bGl8bCkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CisgIDs7Cit1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2VzYWMKKworCisKKyMgT3B0aW9uIGRlZmF1bHRzOgorb3B0X2RlYnVnPToKK29wdF9kcnlfcnVuPWZhbHNlCitvcHRfY29uZmlnPWZhbHNlCitvcHRfcHJlc2VydmVfZHVwX2RlcHM9ZmFsc2UKK29wdF9mZWF0dXJlcz1mYWxzZQorb3B0X2ZpbmlzaD1mYWxzZQorb3B0X2hlbHA9ZmFsc2UKK29wdF9oZWxwX2FsbD1mYWxzZQorb3B0X3NpbGVudD06CitvcHRfd2FybmluZz06CitvcHRfdmVyYm9zZT06CitvcHRfc2lsZW50PWZhbHNlCitvcHRfdmVyYm9zZT1mYWxzZQorCisKKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQorIyBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgLS12ZXJzaW9uJyBoYXBwZW4gYXMgcXVpY2tseSBhcyB3ZSBjYW4uCit7CisgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKKyAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICBvcHQ9IiQxIgorICAgIHNoaWZ0CisgICAgY2FzZSAkb3B0IGluCisgICAgICAtLWRlYnVnfC14KQlvcHRfZGVidWc9J3NldCAteCcKKwkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKwkJCSRvcHRfZGVidWcKKwkJCTs7CisgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCisJCQlvcHRfZHJ5X3J1bj06CisJCQk7OworICAgICAgLS1jb25maWcpCisJCQlvcHRfY29uZmlnPToKK2Z1bmNfY29uZmlnCisJCQk7OworICAgICAgLS1kbG9wZW58LWRsb3BlbikKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KK30kb3B0YXJnIgorCQkJc2hpZnQKKwkJCTs7CisgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQorCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKKwkJCTs7CisgICAgICAtLWZlYXR1cmVzKQorCQkJb3B0X2ZlYXR1cmVzPToKK2Z1bmNfZmVhdHVyZXMKKwkJCTs7CisgICAgICAtLWZpbmlzaCkKKwkJCW9wdF9maW5pc2g9Ogorc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorCQkJOzsKKyAgICAgIC0taGVscCkKKwkJCW9wdF9oZWxwPToKKwkJCTs7CisgICAgICAtLWhlbHAtYWxsKQorCQkJb3B0X2hlbHBfYWxsPToKK29wdF9oZWxwPSc6IGhlbHAtYWxsJworCQkJOzsKKyAgICAgIC0tbW9kZSkKKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworCQkJb3B0YXJnPSIkMSIKKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgorY2FzZSAkb3B0YXJnIGluCisgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6CisgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7CisKKyAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCisgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCisgICAgIGV4aXRfY21kPWV4aXQKKyAgICAgYnJlYWsKKyAgICAgOzsKK2VzYWMKKwkJCXNoaWZ0CisJCQk7OworICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKKwkJCW9wdF9zaWxlbnQ9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tbm8td2FybmluZ3wtLW5vLXdhcm4pCisJCQlvcHRfd2FybmluZz1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1uby12ZXJib3NlKQorCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorCQkJOzsKKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisJCQlvcHRfc2lsZW50PToKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorCQkJOzsKKyAgICAgIC0tdmVyYm9zZXwtdikKKwkJCW9wdF92ZXJib3NlPToKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0Igorb3B0X3NpbGVudD1mYWxzZQorCQkJOzsKKyAgICAgIC0tdGFnKQorCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X3RhZz0iJG9wdGFyZyIKK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCitmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OworICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7CisgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgorICAgICAgLS0qPSopCisJCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgorCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgorICAgICAgLVw/KnwtaCp8LW4qfC12KikKKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgorCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtLSkJCWJyZWFrCQkJCQk7OworICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKKyAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgVmFsaWRhdGUgb3B0aW9uczoKKworICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAorICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKyAgICBub25vcHQ9IiRvcHQiCisgICAgc2hpZnQKKyAgZmkKKworICAjIHByZXNlcnZlIC0tZGVidWcKKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgorCisgIGNhc2UgJGhvc3QgaW4KKyAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQorICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgorICAgICAgOzsKKyAgICAqKQorICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCisgICAgICA7OworICBlc2FjCisKKyAgJG9wdF9oZWxwIHx8IHsKKyAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CisgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisKKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKyAgICBmaQorCisgICAgIyBEYXJ3aW4gc3Vja3MKKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorCisgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCisgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisgICAgICAkRUNITyAiJGhlbHAiIDE+JjIKKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgIGZpCisKKyAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCisgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgfQorCisKKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAorICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorfQorCisKKworCiAjIyAtLS0tLS0tLS0tLSAjIwogIyMgICAgTWFpbi4gICAgIyMKICMjIC0tLS0tLS0tLS0tICMjCiAKLSRvcHRfaGVscCB8fCB7Ci0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLSAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0KLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0gICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotICBmaQotCi0gIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgotCi0KLSAgIyBEYXJ3aW4gc3Vja3MKLSAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKLQotCi0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotICAgICRFQ0hPICIkaGVscCIgMT4mMgotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICBmaQotCi0gICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLX0KLQotCiAjIGZ1bmNfbGFsaWJfcCBmaWxlCiAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCiAjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CkBAIC05NTAsMTIgKzEyODcsOSBAQAogIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgKCkKIHsKLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgotICAgIGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJDEiOyB0aGVuCi0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCWZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLSAgICBmaQorICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKyAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCiB9CiAKICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCkBAIC0xMDAxLDYgKzEzMzUsMzcgQEAKIH0KIAogCisjIGZ1bmNfcmVzb2x2ZV9zeXNyb290IFBBVEgKKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCisjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorZnVuY19yZXNvbHZlX3N5c3Jvb3QgKCkKK3sKKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCisgIGNhc2UgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCBpbgorICA9KikKKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIDs7CisgIGVzYWMKK30KKworIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICisjIElmIFBBVEggYmVnaW5zIHdpdGggdGhlIHN5c3Jvb3QsIHJlcGxhY2UgaXQgd2l0aCA9IGFuZAorIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgorZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKK3sKKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisgID8qOiIkbHRfc3lzcm9vdCIqKQorICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgorICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisgICAgOzsKKyAgKikKKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgorICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQorICAgIDs7CisgIGVzYWMKK30KKwogIyBmdW5jX2luZmVyX3RhZyBhcmcKICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAogIyBpZiBvbmUgd2Fzbid0IGNob3NlbiB2aWEgdGhlICItLXRhZyIgY29tbWFuZCBsaW5lIG9wdGlvbi4KQEAgLTEwMTMsMTMgKzEzNzgsMTUgQEAKICAgICBpZiB0ZXN0IC1uICIkYXZhaWxhYmxlX3RhZ3MiICYmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgogICAgICAgQ0NfcXVvdGVkPQogICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgogICAgICAgZG9uZQorICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAorICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCiAgICAgICBjYXNlICRAIGluCiAgICAgICAjIEJsYW5rcyBpbiB0aGUgY29tbWFuZCBtYXkgaGF2ZSBiZWVuIHN0cmlwcGVkIGJ5IHRoZSBjYWxsaW5nIHNoZWxsLAogICAgICAgIyBidXQgbm90IGZyb20gdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gY29uZmlndXJlIHdhcyBydW4uCi0gICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikgOzsKKyAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgJENDX2V4cGFuZGVkICIqIHwgIiRDQ19leHBhbmRlZCAiKiB8IFwKKyAgICAgICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiICRDQ19xdW90ZWRfZXhwYW5kZWQgIiogfCAiJENDX3F1b3RlZF9leHBhbmRlZCAiKikgOzsKICAgICAgICMgQmxhbmtzIGF0IHRoZSBzdGFydCBvZiAkYmFzZV9jb21waWxlIHdpbGwgY2F1c2UgdGhpcyB0byBmYWlsCiAgICAgICAjIGlmIHdlIGRvbid0IGNoZWNrIGZvciB0aGVtIGFzIHdlbGwuCiAgICAgICAqKQpAQCAtMTAzMCwxMSArMTM5NywxMyBAQAogCSAgICBDQ19xdW90ZWQ9CiAJICAgIGZvciBhcmcgaW4gJENDOyBkbwogCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKIAkgICAgZG9uZQorCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisJICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAogCSAgICBjYXNlICIkQCAiIGluCi0JICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopCisJICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgJENDX2V4cGFuZGVkICIqIHwgIiRDQ19leHBhbmRlZCAiKiB8IFwKKwkgICAgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgJENDX3F1b3RlZF9leHBhbmRlZCAiKiB8ICIkQ0NfcXVvdGVkX2V4cGFuZGVkICIqKQogCSAgICAgICMgVGhlIGNvbXBpbGVyIGluIHRoZSBiYXNlIGNvbXBpbGUgY29tbWFuZCBtYXRjaGVzCiAJICAgICAgIyB0aGUgb25lIGluIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbi4KIAkgICAgICAjIEFzc3VtZSB0aGlzIGlzIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbiB3ZSB3YW50LgpAQCAtMTA5Nyw2ICsxNDY2LDQ4NiBAQAogICAgIH0KIH0KIAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKKyMgSGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsCisjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KKyMgaW4gJGJ1aWxkJ3MgJFBBVEguCisjCisjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQsIGFuZCB3aWxsCisjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQorICAgICMgY29tbWFuZCBpcyBub3QgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCisgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAorICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgZWxzZQorICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CisgICAgZmkKKyAgZmkKK30KKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyIEFSRworIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAorIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5CisjIGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0gaW4gJGJ1aWxkJ3MKKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisjCisjIEFSRyBpcyBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gd2luMzIuCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgorIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKKyMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgorZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgb2xkSUZTPSRJRlMKKyAgICBJRlM9OgorICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCisgICAgICBJRlM9JG9sZElGUworICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgICAgICBlbHNlCisgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9JG9sZElGUworICBmaQorfQorIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKKworCisjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCisjIFdyYXBwZXIgYXJvdW5kIGNhbGxpbmcgdGhlIGN5Z3BhdGggcHJvZ3JhbSB2aWEgTFRfQ1lHUEFUSC4gVGhpcyBpcyB1c2VkIHdoZW4KKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCisjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgorIyAoMiksIHJldHVybnMgdGhlIEN5Z3dpbiBmaWxlIG5hbWUgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dAorIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCisjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCisjIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQgZmlsZSBuYW1lIG9yIHBhdGggaXMgYXNzdW1lZCB0byBiZSBpbgorIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCisjCisjIEFSR1MgYXJlIHBhc3NlZCB0byBjeWdwYXRoLCB3aXRoIHRoZSBsYXN0IG9uZSBiZWluZyB0aGUgZmlsZSBuYW1lIG9yIHBhdGggdG8KKyMgYmUgY29udmVydGVkLgorIworIyBTcGVjaWZ5IHRoZSBhYnNvbHV0ZSAqbml4IChvciB3MzIpIG5hbWUgdG8gY3lncGF0aCBpbiB0aGUgTFRfQ1lHUEFUSAorIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KK2Z1bmNfY3lncGF0aCAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAorICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgorICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5CisgICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorICAgIGZpCisgIGVsc2UKKyAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PQorICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKKyAgZmkKK30KKyNlbmQ6IGZ1bmNfY3lncGF0aAorCisKKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgorIyByZXN1bHQgaW4gZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0LgorZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKK30KKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKKyMgVmVyaWZ5IHRoYXQgQVJHMSAoYSBmaWxlIG5hbWUgaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KK2Z1bmNfY29udmVydF9maWxlX2NoZWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCisgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKyAgICAjIEZhbGxiYWNrOgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjaworCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKKyMgVmVyaWZ5IHRoYXQgRlJPTV9QQVRIIChhIHBhdGggaW4gJGJ1aWxkIGZvcm1hdCkgd2FzIGNvbnZlcnRlZCB0byAkaG9zdAorIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCitmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAorICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KKyAgICBpZiB0ZXN0ICJ4JDEiICE9ICJ4JDIiOyB0aGVuCisgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKKyAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycyJgCisgICAgZWxzZQorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKKyAgICBmaQorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCBGUk9OVFBBVCBCQUNLUEFUIFJFUEwgT1JJRworIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAorIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCitmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBjYXNlICQ0IGluCisgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgOzsKKyAgZXNhYworICBjYXNlICQ0IGluCisgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKKyAgICA7OworICBlc2FjCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCisjCisjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorCisKKyMgZnVuY190b19ob3N0X2ZpbGUgQVJHCisjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY190b19ob3N0X2ZpbGUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCit9CisjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQorCisKKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKKyMgY29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHRvb2xjaGFpbiBmb3JtYXQuIFJldHVybgorIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAorIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KK2Z1bmNfdG9fdG9vbF9maWxlICgpCit7CisgICRvcHRfZGVidWcKKyAgY2FzZSAsJDIsIGluCisgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKKyAgICAgIDs7CisgICAgKikKKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0CisgICAgICA7OworICBlc2FjCit9CisjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQoreworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKKyAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50CisjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZAorIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0CisjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKKyMKKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKyMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorIworIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgorIyBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQKKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgorIworIyBBbGwgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgbmFtZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb252ZW50aW9uOgorIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCisjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKKyMgd2hlcmUsIGZvciBhbnkgZ2l2ZW4gJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9uIHRoZSAnWF90b19ZJyB2YWx1ZSBpcyB0aGUKKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCisjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisjIHdpbGwgYnJlYWsuCisKKworIyBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KK3RvX2hvc3RfcGF0aF9jbWQ9CitmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgorICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKKyAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCisgIGZpCit9CisKKworIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKKyMgQ29udmVydHMgdGhlIHBhdGggQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY190b19ob3N0X3BhdGggKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorICAkdG9faG9zdF9wYXRoX2NtZCAiJDEiCit9CisjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQoreworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUworICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7CisgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCisjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKKyMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQgaW4gYQorIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKyAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCisgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KKworCiAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgogZnVuY19tb2RlX2NvbXBpbGUgKCkKIHsKQEAgLTExMzcsMTIgKzE5ODYsMTIgQEAKIAkgIDs7CiAKIAktcGllIHwgLWZwaWUgfCAtZlBJRSkKLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCisgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKIAktc2hhcmVkIHwgLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQotCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgorCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKQEAgLTExNjMsMTUgKzIwMTIsMTQgQEAKIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwogCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCiAJICBkb25lCiAJICBJRlM9IiRzYXZlX2lmcyIKIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCiAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAogCSAgIyBBZGQgdGhlIGFyZ3VtZW50cyB0byBiYXNlX2NvbXBpbGUuCi0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCisJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCkBAIC0xMTg3LDggKzIwMzUsNyBAQAogICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQogCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIHByZXZpb3VzIGFyZ3VtZW50LgotICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCi0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGJhc2VfY29tcGlsZSAiJGxhc3RhcmciCiAgICAgZG9uZSAjIGZvciBhcmcKIAogICAgIGNhc2UgJGFyZ19tb2RlIGluCkBAIC0xMjEzLDcgKzIwNjAsNyBAQAogICAgICouW2NDRlNpZm1zb10gfCBcCiAgICAgKi5hZGEgfCAqLmFkYiB8ICouYWRzIHwgKi5hc20gfCBcCiAgICAgKi5jKysgfCAqLmNjIHwgKi5paSB8ICouY2xhc3MgfCAqLmNwcCB8ICouY3h4IHwgXAotICAgICouW2ZGXVswOV0/IHwgKi5mb3IgfCAqLmphdmEgfCAqLm9iaiB8ICouc3gpCisgICAgKi5bZkZdWzA5XT8gfCAqLmZvciB8ICouamF2YSB8ICouZ28gfCAqLm9iaiB8ICouc3ggfCAqLmN1IHwgKi5jdXApCiAgICAgICBmdW5jX3hmb3JtICIkbGlib2JqIgogICAgICAgbGlib2JqPSRmdW5jX3hmb3JtX3Jlc3VsdAogICAgICAgOzsKQEAgLTEyODgsNyArMjEzNSw3IEBACiAgICAgIyBDYWxjdWxhdGUgdGhlIGZpbGVuYW1lIG9mIHRoZSBvdXRwdXQgb2JqZWN0IGlmIGNvbXBpbGVyIGRvZXMKICAgICAjIG5vdCBzdXBwb3J0IC1vIHdpdGggLWMKICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IG5vOyB0aGVuCi0gICAgICBvdXRwdXRfb2JqPWAkRUNITyAiWCRzcmNmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJScgLWUgJ3MlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQorICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIiRzcmNmaWxlIiB8ICRTRUQgJ3MlXi4qLyUlOyBzJVwuW14uXSokJSUnYC4ke29iamV4dH0KICAgICAgIGxvY2tmaWxlPSIkb3V0cHV0X29iai5sb2NrIgogICAgIGVsc2UKICAgICAgIG91dHB1dF9vYmo9CkBAIC0xMzE5LDE3ICsyMTY2LDE2IEBACiAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgorICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgogICAgICAgJEVDSE8gIiRzcmNmaWxlIiA+ICIkbG9ja2ZpbGUiCiAgICAgZmkKIAogICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCisgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKICAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQogCi0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCi0gICAgICBldmFsIHNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiCi0gICAgZmkKKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHNyY2ZpbGUiCiAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiAKQEAgLTEzNDksNyArMjE5NSw3IEBACiAKICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgogCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgotCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRsb2JqIgorCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKQEAgLTEzOTYsMTEgKzIyNDIsMTEgQEAKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgorCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkb2JqIgogICAgICAgZmkKIAogICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCi0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCisgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgogICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIgXAogICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwogCkBAIC0xNDQ1LDEzICsyMjkxLDEzIEBACiB9CiAKICRvcHRfaGVscCB8fCB7Ci10ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorICB0ZXN0ICIkb3B0X21vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KIH0KIAogZnVuY19tb2RlX2hlbHAgKCkKIHsKICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLSAgICBjYXNlICRtb2RlIGluCisgICAgY2FzZSAkb3B0X21vZGUgaW4KICAgICAgICIiKQogICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgpAQCAtMTQ4MiwxMCArMjMyOCwxMSBAQAogCiAgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQogICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKLSAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkaW5nIG5vbi1QSUMgb2JqZWN0cyBvbmx5CisgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5CisgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQogICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwogICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgogCiBDT01QSUxFLUNPTU1BTkQgaXMgYSBjb21tYW5kIHRvIGJlIHVzZWQgaW4gY3JlYXRpbmcgYSBcYHN0YW5kYXJkJyBvYmplY3QgZmlsZQogZnJvbSB0aGUgZ2l2ZW4gU09VUkNFRklMRS4KQEAgLTE1MzgsNyArMjM4NSw3IEBACiAKIFRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBJTlNUQUxMLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgogCi0gIC1pbnN0LXByZWZpeCBQUkVGSVgtRElSICBVc2UgUFJFRklYLURJUiBhcyBhIHN0YWdpbmcgYXJlYSBmb3IgaW5zdGFsbGF0aW9uCisgIC1pbnN0LXByZWZpeC1kaXIgUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgogCiBUaGUgcmVzdCBvZiB0aGUgY29tcG9uZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMgYXJndW1lbnRzIHRvIHRoYXQgY29tbWFuZCAob25seQogQlNELWNvbXBhdGlibGUgaW5zdGFsbCBvcHRpb25zIGFyZSByZWNvZ25pemVkKS4iCkBAIC0xNTU4LDYgKzI0MDUsOCBAQAogCiAgIC1hbGwtc3RhdGljICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIGF0IGFsbAogICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKKyAgLWJpbmRpciBCSU5ESVIgICAgc3BlY2lmeSBwYXRoIHRvIGJpbmFyaWVzIGRpcmVjdG9yeSAoZm9yIHN5c3RlbXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIG11c3QgYmUgZm91bmQgaW4gdGhlIFBBVEggc2V0dGluZyBhdCBydW50aW1lKQogICAtZGxvcGVuIEZJTEUgICAgICBcYC1kbHByZW9wZW4nIEZJTEUgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkIGF0IHJ1bnRpbWUKICAgLWRscHJlb3BlbiBGSUxFICAgbGluayBpbiBGSUxFIGFuZCBhZGQgaXRzIHN5bWJvbHMgdG8gbHRfcHJlbG9hZGVkX3N5bWJvbHMKICAgLWV4cG9ydC1keW5hbWljICAgYWxsb3cgc3ltYm9scyBmcm9tIE9VVFBVVC1GSUxFIHRvIGJlIHJlc29sdmVkIHdpdGggZGxzeW0oMykKQEAgLTE1ODYsNiArMjQzNSwxMSBAQAogICAtdmVyc2lvbi1pbmZvIENVUlJFTlRbOlJFVklTSU9OWzpBR0VdXQogICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGxpYnJhcnkgdmVyc2lvbiBpbmZvIFtlYWNoIHZhcmlhYmxlIGRlZmF1bHRzIHRvIDBdCiAgIC13ZWFrIExJQk5BTUUgICAgIGRlY2xhcmUgdGhhdCB0aGUgdGFyZ2V0IHByb3ZpZGVzIHRoZSBMSUJOQU1FIGludGVyZmFjZQorICAtV2MsRkxBRworICAtWGNvbXBpbGVyIEZMQUcgICBwYXNzIGxpbmtlci1zcGVjaWZpYyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgorICAtV2wsRkxBRworICAtWGxpbmtlciBGTEFHICAgICBwYXNzIGxpbmtlci1zcGVjaWZpYyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBsaW5rZXIKKyAgLVhDQ2xpbmtlciBGTEFHICAgcGFzcyBsaW5rLXNwZWNpZmljIEZMQUcgdG8gdGhlIGNvbXBpbGVyIGRyaXZlciAoQ0MpCiAKIEFsbCBvdGhlciBvcHRpb25zIChhcmd1bWVudHMgYmVnaW5uaW5nIHdpdGggXGAtJykgYXJlIGlnbm9yZWQuCiAKQEAgLTE2MTksMTggKzI0NzMsNDQgQEAKICAgICAgICAgOzsKIAogICAgICAgKikKLSAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgorICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgogICAgICAgICA7OwogICAgIGVzYWMKIAotICAgICRFQ0hPCisgICAgZWNobwogICAgICRFQ0hPICJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCi0KLSAgICBleGl0ICQ/CiB9CiAKLSAgIyBOb3cgdGhhdCB3ZSd2ZSBjb2xsZWN0ZWQgYSBwb3NzaWJsZSAtLW1vZGUgYXJnLCBzaG93IGhlbHAgaWYgbmVjZXNzYXJ5Ci0gICRvcHRfaGVscCAmJiBmdW5jX21vZGVfaGVscAorIyBOb3cgdGhhdCB3ZSd2ZSBjb2xsZWN0ZWQgYSBwb3NzaWJsZSAtLW1vZGUgYXJnLCBzaG93IGhlbHAgaWYgbmVjZXNzYXJ5CitpZiAkb3B0X2hlbHA7IHRoZW4KKyAgaWYgdGVzdCAiJG9wdF9oZWxwIiA9IDo7IHRoZW4KKyAgICBmdW5jX21vZGVfaGVscAorICBlbHNlCisgICAgeworICAgICAgZnVuY19oZWxwIG5vZXhpdAorICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKwlmdW5jX21vZGVfaGVscAorICAgICAgZG9uZQorICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCisgICAgeworICAgICAgZnVuY19oZWxwIG5vZXhpdAorICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKwllY2hvCisJZnVuY19tb2RlX2hlbHAKKyAgICAgIGRvbmUKKyAgICB9IHwKKyAgICBzZWQgJzFkCisgICAgICAvXldoZW4gcmVwb3J0aW5nLywvXlJlcG9ydC97CisJSAorCWQKKyAgICAgIH0KKyAgICAgICR4CisgICAgICAvaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMvZAorICAgICAgL21vcmUgZGV0YWlsZWQgLipNT0RFL2QKKyAgICAgIHMvXlVzYWdlOi4qLS1tb2RlPVwoW14gXSpcKSAuKi9EZXNjcmlwdGlvbiBvZiBcMSBtb2RlOi8nCisgIGZpCisgIGV4aXQgJD8KK2ZpCiAKIAogIyBmdW5jX21vZGVfZXhlY3V0ZSBhcmcuLi4KQEAgLTE2NDMsMTMgKzI1MjMsMTYgQEAKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCiAKICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgotICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCisgICAgZm9yIGZpbGUgaW4gJG9wdF9kbG9wZW47IGRvCiAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAogCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKIAogICAgICAgZGlyPQogICAgICAgY2FzZSAkZmlsZSBpbgogICAgICAgKi5sYSkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCiAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgpAQCAtMTY3MSw3ICsyNTU0LDcgQEAKIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCiAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCi0JICBkaXI9IiRkaXIvJG9iamRpciIKKwkgIGZ1bmNfYXBwZW5kIGRpciAiLyRvYmpkaXIiCiAJZWxzZQogCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCkBAIC0xNzEyLDcgKzI1OTUsNyBAQAogICAgIGZvciBmaWxlCiAgICAgZG8KICAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgIC0qKSA7OworICAgICAgLSogfCAqLmxhIHwgKi5sbyApIDs7CiAgICAgICAqKQogCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KIAlpZiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAiJGZpbGUiOyB0aGVuCkBAIC0xNzI4LDggKzI2MTEsNyBAQAogCTs7CiAgICAgICBlc2FjCiAgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgotICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCi0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYXJncyAiJGZpbGUiCiAgICAgZG9uZQogCiAgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KQEAgLTE3NTQsMjkgKzI2MzYsNjYgQEAKICAgICAgICMgRGlzcGxheSB3aGF0IHdvdWxkIGJlIGRvbmUuCiAgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KIAlldmFsICJcJEVDSE8gXCJcJHNobGlicGF0aF92YXI9XCQkc2hsaWJwYXRoX3ZhclwiIgotCSRFQ0hPICJleHBvcnQgJHNobGlicGF0aF92YXIiCisJZWNobyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgogICAgICAgZmkKICAgICAgICRFQ0hPICIkY21kJGFyZ3MiCiAgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKICAgICBmaQogfQogCi10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9CiAKIAogIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgogZnVuY19tb2RlX2ZpbmlzaCAoKQogewogICAgICRvcHRfZGVidWcKLSAgICBsaWJkaXJzPSIkbm9ub3B0IgorICAgIGxpYnM9CisgICAgbGliZGlycz0KICAgICBhZG1pbmNtZHM9CiAKLSAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgotICAgICAgZm9yIGRpcgotICAgICAgZG8KLQlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgotICAgICAgZG9uZQorICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQorICAgIGRvCisgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgorCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgogCisgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCisJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KKwkgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkb3B0IgorCWVsc2UKKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJZmkKKworICAgICAgZWxzZQorCWZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgYXJndW1lbnQgXGAkb3B0JyIKKyAgICAgIGZpCisgICAgZG9uZQorCisgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KKyAgICAgICAgc3lzcm9vdF9yZWdleD1gJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKKyAgICAgIGVsc2UKKyAgICAgICAgc3lzcm9vdF9jbWQ9CisgICAgICBmaQorCisgICAgICAjIFJlbW92ZSBzeXNyb290IHJlZmVyZW5jZXMKKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgorICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworICAgICAgICAgIGVjaG8gInJlbW92aW5nIHJlZmVyZW5jZXMgdG8gJGx0X3N5c3Jvb3QgYW5kIFxgPScgcHJlZml4ZXMgZnJvbSAkbGliIgorICAgICAgICBkb25lCisgICAgICBlbHNlCisgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCisgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCisJICAgID4gJHRtcGRpci90bXAtbGEKKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKKwlkb25lCisgICAgICAgICR7Uk19ciAiJHRtcGRpciIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCiAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwogCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCkBAIC0xNzg2LDcgKzI3MDUsNyBAQAogCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KIAkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCi0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBmdW5jX2FwcGVuZCBhZG1pbmNtZHMgIgogICAgICAgICRjbWRzIgogCWZpCiAgICAgICBkb25lCkBAIC0xNzk1LDUzICsyNzE0LDU1IEBACiAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCiAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCiAKLSAgICAkRUNITyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKLSAgICAkRUNITyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgotICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0gICAgICAkRUNITyAiICAgJGxpYmRpciIKLSAgICBkb25lCi0gICAgJEVDSE8KLSAgICAkRUNITyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCi0gICAgJEVDSE8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotICAgICRFQ0hPICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotICAgICRFQ0hPICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCi0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSAgICAgICRFQ0hPICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkRUNITyAiICAgICBkdXJpbmcgbGlua2luZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotICAgICAgbGliZGlyPUxJQkRJUgotICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCisgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgICAgZWNobyAiTGlicmFyaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWQgaW46IgorICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKwkkRUNITyAiICAgJGxpYmRpciIKKyAgICAgIGRvbmUKKyAgICAgIGVjaG8KKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCisgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorCWVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisJbGliZGlyPUxJQkRJUgorCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKIAotICAgICAgJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotICAgIGZpCi0gICAgJEVDSE8KKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCisJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCisJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisgICAgICBmaQorICAgICAgZWNobwogCi0gICAgJEVDSE8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgIHNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0gICAgICAgICRFQ0hPICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgotCSRFQ0hPICJwYWdlcy4iCi0JOzsKLSAgICAgICopCi0gICAgICAgICRFQ0hPICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCisgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKyAgICAgIGNhc2UgJGhvc3QgaW4KKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKwkgIGVjaG8gInBhZ2VzLiIKKwkgIDs7CisJKikKKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgorCSAgOzsKKyAgICAgIGVzYWMKKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgZmkKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKIH0KIAotdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CiAKIAogIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KQEAgLTE4NTIsNyArMjc3Myw3IEBACiAgICAgIyBpbnN0YWxsX3Byb2cgKGVzcGVjaWFsbHkgb24gV2luZG93cyBOVCkuCiAgICAgaWYgdGVzdCAiJG5vbm9wdCIgPSAiJFNIRUxMIiB8fCB0ZXN0ICIkbm9ub3B0IiA9IC9iaW4vc2ggfHwKICAgICAgICAjIEFsbG93IHRoZSB1c2Ugb2YgR05VIHNodG9vbCdzIGluc3RhbGwgY29tbWFuZC4KLSAgICAgICAkRUNITyAiWCRub25vcHQiIHwgJEdSRVAgc2h0b29sID4vZGV2L251bGw7IHRoZW4KKyAgICAgICBjYXNlICRub25vcHQgaW4gKnNodG9vbCopIDo7OyAqKSBmYWxzZTs7IGVzYWM7IHRoZW4KICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRub25vcHQiCiAgICAgICBpbnN0YWxsX3Byb2c9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCAiCkBAIC0xODY2LDcgKzI3ODcsMTIgQEAKICAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCiAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0gICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZworICAgIGNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KKyAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OworICAgICAgKikgaW5zdGFsbF9jcD1mYWxzZSA7OworICAgIGVzYWMKIAogICAgICMgV2UgbmVlZCB0byBhY2NlcHQgYXQgbGVhc3QgYWxsIHRoZSBCU0QgaW5zdGFsbCBmbGFncy4KICAgICBkZXN0PQpAQCAtMTg3NiwxMCArMjgwMiwxMiBAQAogICAgIGluc3RhbGxfdHlwZT0KICAgICBpc2Rpcj1ubwogICAgIHN0cmlwbWU9CisgICAgbm9fbW9kZT06CiAgICAgZm9yIGFyZwogICAgIGRvCisgICAgICBhcmcyPQogICAgICAgaWYgdGVzdCAtbiAiJGRlc3QiOyB0aGVuCi0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgogCWRlc3Q9JGFyZwogCWNvbnRpbnVlCiAgICAgICBmaQpAQCAtMTg4NywxMCArMjgxNSw5IEBACiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKICAgICAgIC1mKQotCWNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KLQkqW1xcXCAvXWNwXCAqKSA7OwotCSopIHByZXY9JGFyZyA7OwotCWVzYWMKKwlpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisJICBwcmV2PSRhcmcKKwlmaQogCTs7CiAgICAgICAtZyB8IC1tIHwgLW8pCiAJcHJldj0kYXJnCkBAIC0xOTA0LDYgKzI4MzEsMTAgQEAKICAgICAgICopCiAJIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgogCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgorCSAgaWYgdGVzdCAieCRwcmV2IiA9IHgtbSAmJiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIjsgdGhlbgorCSAgICBhcmcyPSRpbnN0YWxsX292ZXJyaWRlX21vZGUKKwkgICAgbm9fbW9kZT1mYWxzZQorCSAgZmkKIAkgIHByZXY9CiAJZWxzZQogCSAgZGVzdD0kYXJnCkBAIC0xOTE0LDcgKzI4NDUsMTEgQEAKIAogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZzIiCisgICAgICBmaQorICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICBkb25lCiAKICAgICB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIiAmJiBcCkBAIC0xOTIzLDYgKzI4NTgsMTMgQEAKICAgICB0ZXN0IC1uICIkcHJldiIgJiYgXAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldicgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgogCisgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgJiYgJG5vX21vZGU7IHRoZW4KKyAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgorCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmaQorICAgIGZpCisKICAgICBpZiB0ZXN0IC16ICIkZmlsZXMiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC16ICIkZGVzdCI7IHRoZW4KIAlmdW5jX2ZhdGFsX2hlbHAgIm5vIGZpbGUgb3IgZGVzdGluYXRpb24gc3BlY2lmaWVkIgpAQCAtMTk3NywxMCArMjkxOSwxMyBAQAogICAgICAgY2FzZSAkZmlsZSBpbgogICAgICAgKi4kbGliZXh0KQogCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCi0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCisJZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRmaWxlIgogCTs7CiAKICAgICAgICoubGEpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAogCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCkBAIC0xOTk0LDIzICsyOTM5LDIzIEBACiAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KIAkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgY3VycmVudF9saWJkaXJzICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAllbHNlCiAJICAjIE5vdGUgdGhlIGxpYmRpciBhcyBhIGZ1dHVyZSBsaWJkaXIuCiAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZ1dHVyZV9saWJkaXJzPSIkZnV0dXJlX2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlmaQogCiAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCiAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLQlkaXI9IiRkaXIkb2JqZGlyIgorCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKIAogCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCi0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJGRlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGxpYmRpclwkJSUiYAorCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCiAKIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKIAkgICMgbG9jYXRpb24gYi9jIHRoaXMgcHJldmVudHMgZmluZGluZyBkZXBlbmRlbnQgbGlicmFyaWVzIHRoYXQKQEAgLTIwMjMsOSArMjk2OCw5IEBACiAKIAkgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJICAgICMgU3RpY2sgdGhlIGluc3RfcHJlZml4X2RpciBkYXRhIGludG8gdGhlIGxpbmsgY29tbWFuZC4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJS1pbnN0LXByZWZpeC1kaXIgJGluc3RfcHJlZml4X2RpciUiYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJS1pbnN0LXByZWZpeC1kaXIgJGluc3RfcHJlZml4X2RpciUiYAogCSAgZWxzZQotCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQGluc3RfcHJlZml4X2RpckAlJSJgCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlJSJgCiAJICBmaQogCiAJICBmdW5jX3dhcm5pbmcgInJlbGlua2luZyBcYCRmaWxlJyIKQEAgLTIwNDMsNyArMjk4OCw3IEBACiAJICB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiICYmIHNyY25hbWU9IiRyZWFsbmFtZSJUCiAKIAkgICMgSW5zdGFsbCB0aGUgc2hhcmVkIGxpYnJhcnkgYW5kIGJ1aWxkIHRoZSBzeW1saW5rcy4KLQkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCisJICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIFwKIAkgICAgICAnZXhpdCAkPycKIAkgIHRzdHJpcG1lPSIkc3RyaXBtZSIKIAkgIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTIwODMsNyArMzAyOCw3IEBACiAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKIAogCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgc3RhdGljbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgogCTs7CiAKICAgICAgICoubG8pCkBAIC0yMTgzLDcgKzMxMjgsNyBAQAogCSAgICBpZiB0ZXN0IC1mICIkbGliIjsgdGhlbgogCSAgICAgIGZ1bmNfc291cmNlICIkbGliIgogCSAgICBmaQotCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKwkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICIkbGliIiB8ICRTRUQgJ3MlXi4qLyUlZydgICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAogCSAgICBpZiB0ZXN0IC1uICIkbGliZGlyIiAmJiB0ZXN0ICEgLWYgIiRsaWJmaWxlIjsgdGhlbgogCSAgICAgIGZ1bmNfd2FybmluZyAiXGAkbGliJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIFxgJGxpYmRpciciCiAJICAgICAgZmluYWxpemU9bm8KQEAgLTIyMDIsNyArMzE0Nyw3IEBACiAJCWZpbGU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKIAkgICAgICAgIG91dHB1dG5hbWU9IiR0bXBkaXIvJGZpbGUiCiAJICAgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JICAgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAorCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZydgCiAKIAkgICAgICAgICRvcHRfc2lsZW50IHx8IHsKIAkgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkcmVsaW5rX2NvbW1hbmQiCkBAIC0yMjIxLDcgKzMxNjYsNyBAQAogCSAgICB9CiAJICBlbHNlCiAJICAgICMgSW5zdGFsbCB0aGUgYmluYXJ5IHRoYXQgd2UgY29tcGlsZWQgZWFybGllci4KLQkgICAgZmlsZT1gJEVDSE8gIlgkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCisJICAgIGZpbGU9YCRFQ0hPICIkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFNFRCAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKIAkgIGZpCiAJZmkKIApAQCAtMjI1NywxMSArMzIwMiwxMyBAQAogCiAgICAgICAjIFNldCB1cCB0aGUgcmFubGliIHBhcmFtZXRlcnMuCiAgICAgICBvbGRsaWI9IiRkZXN0ZGlyLyRuYW1lIgorICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvbGRsaWIiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICB0b29sX29sZGxpYj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nIFwkZmlsZSBcJG9sZGxpYiIgJ2V4aXQgJD8nCiAKICAgICAgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkb2xkX3N0cmlwbGliIjsgdGhlbgotCWZ1bmNfc2hvd19ldmFsICIkb2xkX3N0cmlwbGliICRvbGRsaWIiICdleGl0ICQ/JworCWZ1bmNfc2hvd19ldmFsICIkb2xkX3N0cmlwbGliICR0b29sX29sZGxpYiIgJ2V4aXQgJD8nCiAgICAgICBmaQogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCkBAIC0yMjgwLDcgKzMyMjcsNyBAQAogICAgIGZpCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KIAogCiAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcApAQCAtMjMyMyw2ICszMjcwLDIyIEBACiBleHRlcm4gXCJDXCIgewogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpIHx8IChfX0dOVUNfXyA+IDQpKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCisjZW5kaWYKKworLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2VsaWYgZGVmaW5lZChfX29zZl9fKQorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisjZW5kaWYKKwogLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKICIKIApAQCAtMjMzMiwxMCArMzI5NSwxMSBAQAogCSAgJG9wdF9kcnlfcnVuIHx8IGVjaG8gJzogQFBST0dSQU1AICcgPiAiJG5saXN0IgogCiAJICAjIEFkZCBvdXIgb3duIHByb2dyYW0gb2JqZWN0cyB0byB0aGUgc3ltYm9sIGxpc3QuCi0JICBwcm9nZmlsZXM9YCRFQ0hPICJYJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAkgIGZvciBwcm9nZmlsZSBpbiAkcHJvZ2ZpbGVzOyBkbwotCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHByb2dmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCisJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCiAJICBkb25lCiAKIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCkBAIC0yMzcxLDcgKzMzMzUsNyBAQAogCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCiAJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKIAkgICAgICBjYXNlICRob3N0IGluCi0JICAgICAgICAqY3lnd2luIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCiAJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKIAkgICAgICAgICAgOzsKQEAgLTIzODQsMTAgKzMzNDgsNTIgQEAKIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCiAJICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JICAkb3B0X2RyeV9ydW4gfHwgewotCSAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0JICB9CisgICAgICAgICAgY2FzZSAkaG9zdCBpbgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCisJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgorCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCisJICAgICAgICAgICMgVXNlIHN1YnNoZWxsLCB0byBhdm9pZCBjbG9iYmVyaW5nIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzCisJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgorCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgorCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICAgICAgICAgIGVsc2UKKwkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCisJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgorCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorCSAgICAgICAgICBmaQorCSAgICAgICAgZmkKKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCisJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZWxzZQorCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBmaQorCSAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8CisJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKKwkgICAgICAgIH0KKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorCSAgICAgICAgfQorCSAgICAgIGZpCisJICAgIDs7CisJICAgICopCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGRscHJlZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgICAgfQorCSAgICA7OworICAgICAgICAgIGVzYWMKIAlkb25lCiAKIAkkb3B0X2RyeV9ydW4gfHwgewpAQCAtMjQxNSwzNiArMzQyMSwxOSBAQAogCSAgaWYgdGVzdCAtZiAiJG5saXN0IlM7IHRoZW4KIAkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY2RlY2wiJyA8ICIkbmxpc3QiUyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyInCiAJICBlbHNlCi0JICAgICRFQ0hPICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgICAgZWNobyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCiAJICBmaQogCi0JICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKwkgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgdm9pZCAqYWRkcmVzczsKIH0gbHRfZGxzeW1saXN0OwotIgotCSAgY2FzZSAkaG9zdCBpbgotCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0JICAgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZQotICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKLQkgICAgbHRfZGxzeW1fY29uc3Q9IDs7Ci0JICAqb3NmNSopCi0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhICovIgotCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLQkgICopCi0JICAgIGx0X2Rsc3ltX2NvbnN0PWNvbnN0IDs7Ci0JICBlc2FjCi0KLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotZXh0ZXJuICRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKLSRsdF9kbHN5bV9jb25zdCBsdF9kbHN5bWxpc3QKK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KIHtcCiAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgpAQCAtMjQ1Nyw3ICszNDQ2LDcgQEAKIAkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgPCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgICAgOzsKIAkgIGVzYWMKLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKICAgezAsICh2b2lkICopIDB9CiB9OwogCkBAIC0yNDg0LDcgKzM0NzMsNyBAQAogCSAgIyBsaW5rZWQgYmVmb3JlIGFueSBvdGhlciBQSUMgb2JqZWN0LiAgQnV0IHdlIG11c3Qgbm90IHVzZQogCSAgIyBwaWNfZmxhZyB3aGVuIGxpbmtpbmcgd2l0aCAtc3RhdGljLiAgVGhlIHByb2JsZW0gZXhpc3RzIGluCiAJICAjIEZyZWVCU0QgMi4yLjYgYW5kIGlzIGZpeGVkIGluIEZyZWVCU0QgMy4xLgotCSAgKi0qLWZyZWVic2QyKnwqLSotZnJlZWJzZDMuMCp8Ki0qLWZyZWVic2RlbGYzLjAqKQorCSAgKi0qLWZyZWVic2QyLip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKIAkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIC1ERlJFRUJTRF9XT1JLQVJPVU5EIiA7OwogCSAgKi0qLWhwdXgqKQogCSAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciICA7OwpAQCAtMjUwMCw3ICszNDg5LDcgQEAKIAlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KIAkgIGNhc2UgJGFyZyBpbgogCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7Ci0JICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OworCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7CiAJICBlc2FjCiAJZG9uZQogCkBAIC0yNTE1LDE2ICszNTA0LDE2IEBACiAJY2FzZSAkaG9zdCBpbgogCSpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmIjsgdGhlbgotCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCi0JICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCiAJICBlbHNlCi0JICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAotCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAogCSAgZmkKIAkgIDs7CiAJKikKLQkgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAotCSAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAogCSAgOzsKIAllc2FjCiAJOzsKQEAgLTI1MzgsOCArMzUyNyw4IEBACiAgICAgICAjIHJlYWxseSB3YXMgcmVxdWlyZWQuCiAKICAgICAgICMgTnVsbGlmeSB0aGUgc3ltYm9sIGZpbGUuCi0gICAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAotICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJSBAU1lNRklMRUAlJSJgCisgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyUgQFNZTUZJTEVAJSUiYAogICAgIGZpCiB9CiAKQEAgLTI1NDksNiArMzUzOCw3IEBACiAjIE5lZWQgYSBsb3Qgb2YgZ29vIHRvIGhhbmRsZSAqYm90aCogRExMcyBhbmQgaW1wb3J0IGxpYnMKICMgSGFzIHRvIGJlIGEgc2hlbGwgZnVuY3Rpb24gaW4gb3JkZXIgdG8gJ2VhdCcgdGhlIGFyZ3VtZW50CiAjIHRoYXQgaXMgc3VwcGxpZWQgd2hlbiAkZmlsZV9tYWdpY19jb21tYW5kIGlzIGNhbGxlZC4KKyMgRGVzcGl0ZSB0aGUgbmFtZSwgYWxzbyBkZWFsIHdpdGggNjQgYml0IGJpbmFyaWVzLgogZnVuY193aW4zMl9saWJpZCAoKQogewogICAkb3B0X2RlYnVnCkBAIC0yNTU5LDkgKzM1NDksMTEgQEAKICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCiAgICAgOzsKICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgogICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLSAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycgPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSAkMSB8CisgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8CiAJJFNFRCAtbiAtZSAnCiAJICAgIDEsMTAwewogCQkvIEkgL3sKQEAgLTI1OTAsNiArMzU4MiwxMzEgQEAKICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgogfQogCisjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKKyMKKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAorfQorCisjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcworIworIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCisjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCisjIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeSBMSUJOQU1FLgorIworIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKKyMgb24gdGhlIHBsYXRmb3JtIGFuZCBjb21waWxlciB0aGF0IGNyZWF0ZWQgdGhlIGltcGxpYi4KKyMKKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCisjIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeS4KK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCit7CisgICRvcHRfZGVidWcKKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8CisgICAgJFNFRCAnL15Db250ZW50cyBvZiBzZWN0aW9uICciJG1hdGNoX2xpdGVyYWwiJzoveworICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgorICAgICAgcy8uKi89PT09TUFSSz09PT0vCisgICAgICBwCisgICAgICBkCisgICAgfQorICAgICMgVGhlc2UgbGluZXMgY2FuIHNvbWV0aW1lcyBiZSBsb25nZXIgdGhhbiA0MyBjaGFyYWN0ZXJzLCBidXQKKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZworICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAorICAgIC9eSW4gYXJjaGl2ZSBbXjpdKjovZAorICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCisgICAgL149PT09TUFSSz09PT0vcAorICAgICMgUmVtb3ZlIGFsbCBsaW5lcyB3aXRoIGxlc3MgdGhhbiA0MyBjaGFyYWN0ZXJzCisgICAgL14uXHs0M1x9LyFkCisgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKKyAgICBzL14uXHs0M1x9Ly8nIHwKKyAgICAkU0VEIC1uICcKKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKKyAgICAgIC9ePT09PU1BUks9PT09LyBiIHBhcmEKKyAgICAgIEgKKyAgICAgICQgYiBwYXJhCisgICAgICBiCisgICAgICA6cGFyYQorICAgICAgeAorICAgICAgcy9cbi8vZworICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgorICAgICAgcy9ePT09PU1BUks9PT09Ly8KKyAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIGRvdHMgYW5kIHdoaXRlc3BhY2UKKyAgICAgIHMvW1wuIFx0XSokLy8KKyAgICAgICMgUHJpbnQKKyAgICAgIC8uL3AnIHwKKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQorICAgICMgYXJjaGl2ZSB3aGljaCBwb3NzZXNzIHRoYXQgc2VjdGlvbi4gSGV1cmlzdGljOiBlbGltaW5hdGUKKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCisgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCisgICAgIyBjaGFyYWN0ZXIuKSBUaGlzIHNob3VsZCB3b3JrIGZvciBhbGwgYXJjaGl2ZXMgd2l0aCBsZXNzIHRoYW4KKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQorICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKKyAgICAjIGEgJy4nLgorICAgICMKKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgorICAgICRTRUQgLWUgJy9eXC4vZDsvXi5cLi9kO3EnCit9CisKKyMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgorfQorCisjIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCisgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcCIKK30KKworIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgQVJHCisjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorIyBpbXBvcnQgbGlicmFyeSBBUkcuCisjCisjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCisjIGRvZXMgbm90IHN1cHBvcnQgdGhlIC0taWRlbnRpZnktc3RyaWN0IG9wdGlvbi4KKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiB0aGUgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCisgICAgIyBiaW51dGlscyBpbXBvcnQgbGlicmFyeQorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCisgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCisgICAgIyBtcy1nZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAorICBlbHNlCisgICAgIyB1bmtub3duCisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKKyAgZmkKK30KIAogCiAjIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlIGRpciBvbGRsaWIKQEAgLTI1OTgsNyArMzcxNSwxOCBAQAogICAgICRvcHRfZGVidWcKICAgICBmX2V4X2FuX2FyX2Rpcj0iJDEiOyBzaGlmdAogICAgIGZfZXhfYW5fYXJfb2xkbGliPSIkMSIKLSAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiAnZXhpdCAkPycKKyAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICAgbG9ja2ZpbGU9JGZfZXhfYW5fYXJfb2xkbGliLmxvY2sKKyAgICAgIHVudGlsICRvcHRfZHJ5X3J1biB8fCBsbiAiJHByb2dwYXRoIiAiJGxvY2tmaWxlIiAyPi9kZXYvbnVsbDsgZG8KKwlmdW5jX2VjaG8gIldhaXRpbmcgZm9yICRsb2NrZmlsZSB0byBiZSByZW1vdmVkIgorCXNsZWVwIDIKKyAgICAgIGRvbmUKKyAgICBmaQorICAgIGZ1bmNfc2hvd19ldmFsICIoY2QgXCRmX2V4X2FuX2FyX2RpciAmJiAkQVIgeCBcIlwkZl9leF9hbl9hcl9vbGRsaWJcIikiIFwKKwkJICAgJ3N0YXQ9JD87IHJtIC1mICIkbG9ja2ZpbGUiOyBleGl0ICRzdGF0JworICAgIGlmIHRlc3QgIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iID0geWVzOyB0aGVuCisgICAgICAkb3B0X2RyeV9ydW4gfHwgcm0gLWYgIiRsb2NrZmlsZSIKKyAgICBmaQogICAgIGlmICgkQVIgdCAiJGZfZXhfYW5fYXJfb2xkbGliIiB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCiAgICAgIDoKICAgICBlbHNlCkBAIC0yNjY5LDcgKzM3OTcsNyBAQAogCSAgICBkYXJ3aW5fZmlsZT0KIAkgICAgZGFyd2luX2ZpbGVzPQogCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKKwkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCiAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKIAkgICAgJFJNIC1yZiB1bmZhdC0kJApAQCAtMjY4NCwyNSArMzgxMiwzMCBAQAogICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKIAk7OwogICAgICAgZXNhYwotICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogICAgIGRvbmUKIAogICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgogfQogCiAKLQotIyBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSBbYXJnPW5vXQorIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQogIwotIyBFbWl0IHRoZSBmaXJzdCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAotIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KLWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICgpCisjIEVtaXQgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KKyMgRG9uJ3QgZGlyZWN0bHkgb3BlbiBhIGZpbGUgYmVjYXVzZSB3ZSBtYXkgd2FudCB0bworIyBpbmNvcnBvcmF0ZSB0aGUgc2NyaXB0IGNvbnRlbnRzIHdpdGhpbiBhIGN5Z3dpbi9taW5ndworIyB3cmFwcGVyIGV4ZWN1dGFibGUuICBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluCisjIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB2YXJpYWJsZXMKKyMgc2V0IHRoZXJlaW4uCisjCisjIEFSRyBpcyB0aGUgdmFsdWUgdGhhdCB0aGUgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVIKKyMgdmFyaWFibGUgd2lsbCB0YWtlLiAgSWYgJ3llcycsIHRoZW4gdGhlIGVtaXR0ZWQgc2NyaXB0CisjIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBzdG9yZWQgaXMKKyMgdGhlICRvYmpkaXIgZGlyZWN0b3J5LiAgVGhpcyBpcyBhIGN5Z3dpbi9taW5ndy1zcGVjaWZpYworIyBiZWhhdmlvci4KK2Z1bmNfZW1pdF93cmFwcGVyICgpCiB7Ci0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDFfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9JDEKLQlmaQorCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9JHsxLW5vfQogCiAJJEVDSE8gIlwKICMhICRTSEVMTApAQCAtMjcxOCw3ICszODUxLDYgQEAKIAogIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwogIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLVhzZWQ9JyR7U0VEfSAtZSAxcy9eWC8vJwogc2VkX3F1b3RlX3N1YnN0PSckc2VkX3F1b3RlX3N1YnN0JwogCiAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCkBAIC0yNzQ5LDMxICszODgxLDEzNSBAQAogZWxzZQogICAjIFdoZW4gd2UgYXJlIHNvdXJjZWQgaW4gZXhlY3V0ZSBtb2RlLCBcJGZpbGUgYW5kIFwkRUNITyBhcmUgYWxyZWFkeSBzZXQuCiAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KLSAgICBFQ0hPPVwiJHFlY2hvXCIKLSAgICBmaWxlPVwiXCQwXCIKLSAgICAjIE1ha2Ugc3VyZSBlY2hvIHdvcmtzLgotICAgIGlmIHRlc3QgXCJYXCQxXCIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgICAgICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICAgICAgc2hpZnQKLSAgICBlbGlmIHRlc3QgXCJYXGB7IFwkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsXGBcIiA9ICdYXHQnOyB0aGVuCi0gICAgICAjIFlpcHBlZSwgXCRFQ0hPIHdvcmtzIQotICAgICAgOgotICAgIGVsc2UKLSAgICAgICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgXCRFQ0hPIHdpbGwgd29yay4KLSAgICAgIGV4ZWMgJFNIRUxMIFwiXCQwXCIgLS1uby1yZWV4ZWMgXCR7MStcIlwkQFwifQotICAgIGZpCi0gIGZpXAorICAgIGZpbGU9XCJcJDBcIiIKKworICAgIHFFQ0hPPWAkRUNITyAiJEVDSE8iIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgJEVDSE8gIlwKKworIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCitcJDEKK19MVEVDSE9fRU9GJworfQorICAgIEVDSE89XCIkcUVDSE9cIgorICBmaQorCisjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bworIyB0aGUgbGlidG9vbCB3cmFwcGVyLCAoYikgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB3cmFwcGVyCisjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCisjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgorIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB3aGljaCBtYXRjaAorIyB0aGlzIHBhdHRlcm4pLgorIworIyBUaGVyZSBhcmUgb25seSB0d28gc3VwcG9ydGVkIG9wdGlvbnM6IC0tbHQtZGVidWcgYW5kCisjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KKyMKKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoaXMgcGFyc2luZyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlCisjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgorbHRfb3B0aW9uX2RlYnVnPQorZnVuY19wYXJzZV9sdF9vcHRpb25zICgpCit7CisgIGx0X3NjcmlwdF9hcmcwPVwkMAorICBzaGlmdAorICBmb3IgbHRfb3B0CisgIGRvCisgICAgY2FzZSBcIlwkbHRfb3B0XCIgaW4KKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OworICAgIC0tbHQtZHVtcC1zY3JpcHQpCisgICAgICAgIGx0X2R1bXBfRD1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJS9bXi9dKiQlJSdcYAorICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCisgICAgICAgIGNhdCBcIlwkbHRfZHVtcF9EL1wkbHRfZHVtcF9GXCIKKyAgICAgICAgZXhpdCAwCisgICAgICA7OworICAgIC0tbHQtKikKKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKKyAgICAgICAgZXhpdCAxCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICBlY2hvIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlwiIDE+JjIKKyAgZmkKK30KKworIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0CisjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKK2Z1bmNfbHRfZHVtcF9hcmdzICgpCit7CisgIGx0X2R1bXBfYXJnc19OPTE7CisgIGZvciBsdF9hcmcKKyAgZG8KKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCisgICAgbHRfZHVtcF9hcmdzX049XGBleHByIFwkbHRfZHVtcF9hcmdzX04gKyAxXGAKKyAgZG9uZQorfQorCisjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCitmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCit7CiAiCi0JJEVDSE8gIlwKKyAgY2FzZSAkaG9zdCBpbgorICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKyAgICAkRUNITyAiXAorICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisgICAgICBmaQorICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisgICAgOzsKKworICAqKQorICAgICRFQ0hPICJcCisgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgorICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKyAgICAgIGZpCisgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKyAgICA7OworICBlc2FjCisgICRFQ0hPICJcCisgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisgICAgICBleGl0IDEKK30KKworIyBBIGZ1bmN0aW9uIHRvIGVuY2Fwc3VsYXRlIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAorIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KK2Z1bmNfZXhlY19wcm9ncmFtICgpCit7CisgIGNhc2UgXCIgXCQqIFwiIGluCisgICpcXCAtLWx0LSopCisgICAgZm9yIGx0X3dyX2FyZworICAgIGRvCisgICAgICBjYXNlIFwkbHRfd3JfYXJnIGluCisgICAgICAtLWx0LSopIDs7CisgICAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworICAgICAgZXNhYworICAgICAgc2hpZnQKKyAgICBkb25lIDs7CisgIGVzYWMKKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9Cit9CisKKyAgIyBQYXJzZSBvcHRpb25zCisgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KIAogICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgotICB0aGlzZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKiQlJSdcYAorICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAogICB0ZXN0IFwieFwkdGhpc2RpclwiID0gXCJ4XCRmaWxlXCIgJiYgdGhpc2Rpcj0uCiAKICAgIyBGb2xsb3cgc3ltYm9saWMgbGlua3MgdW50aWwgd2UgZ2V0IHRvIHRoZSByZWFsIHRoaXNkaXIuCi0gIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAorICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAkU0VEIC1uICdzLy4qLT4gLy9wJ1xgCiAgIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KLSAgICBkZXN0ZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKlwkJSUnXGAKKyAgICBkZXN0ZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKlwkJSUnXGAKIAogICAgICMgSWYgdGhlcmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KICAgICBpZiB0ZXN0IFwieFwkZGVzdGRpclwiICE9IFwieFwkZmlsZVwiOyB0aGVuCkBAIC0yNzgzLDMwICs0MDE5LDEzIEBACiAgICAgICBlc2FjCiAgICAgZmkKIAotICAgIGZpbGU9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlXi4qLyUlJ1xgCi0gICAgZmlsZT1cYGxzIC1sZCBcIlwkdGhpc2Rpci9cJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAorICAgIGZpbGU9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlXi4qLyUlJ1xgCisgICAgZmlsZT1cYGxzIC1sZCBcIlwkdGhpc2Rpci9cJGZpbGVcIiB8ICRTRUQgLW4gJ3MvLiotPiAvL3AnXGAKICAgZG9uZQotIgotfQotIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxCi0KLSMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgW2FyZz1ub10KLSMKLSMgRW1pdCB0aGUgc2Vjb25kIHBhcnQgb2YgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgZGVzY3JpcHRpb24gYXNzb2NpYXRlZCB3aXRoCi0jIGZ1bmNfZW1pdF93cmFwcGVyKCksIGJlbG93LgotZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgKCkKLXsKLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxPW5vCi0JaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotCSAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT0kMQotCWZpCi0KLQkkRUNITyAiXAogCiAgICMgVXN1YWxseSAnbm8nLCBleGNlcHQgb24gY3lnd2luL21pbmd3IHdoZW4gZW1iZWRkZWQgaW50bwogICAjIHRoZSBjd3JhcHBlci4KLSAgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVI9JGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzEKKyAgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVI9JGZ1bmNfZW1pdF93cmFwcGVyX2FyZzEKICAgaWYgdGVzdCBcIlwkV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVJcIiA9IFwieWVzXCI7IHRoZW4KICAgICAjIHNwZWNpYWwgY2FzZSBmb3IgJy4nCiAgICAgaWYgdGVzdCBcIlwkdGhpc2RpclwiID0gXCIuXCI7IHRoZW4KQEAgLTI4MTQsNyArNDAzMyw3IEBACiAgICAgZmkKICAgICAjIHJlbW92ZSAubGlicyBmcm9tIHRoaXNkaXIKICAgICBjYXNlIFwiXCR0aGlzZGlyXCIgaW4KLSAgICAqW1xcXFwvXSRvYmpkaXIgKSB0aGlzZGlyPVxgXCRFQ0hPIFwiWFwkdGhpc2RpclwiIHwgXCRYc2VkIC1lICdzJVtcXFxcL11bXlxcXFwvXSokJSUnXGAgOzsKKyAgICAqW1xcXFwvXSRvYmpkaXIgKSB0aGlzZGlyPVxgXCRFQ0hPIFwiXCR0aGlzZGlyXCIgfCAkU0VEICdzJVtcXFxcL11bXlxcXFwvXSokJSUnXGAgOzsKICAgICAkb2JqZGlyICkgICB0aGlzZGlyPS4gOzsKICAgICBlc2FjCiAgIGZpCkBAIC0yODY5LDYgKzQwODgsMTggQEAKIAogICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgogCisJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKwkjCisJIyBGaXggdGhlIERMTCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uICBEbyB0aGlzIGJlZm9yZSBwcmVwZW5kaW5nCisJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCisJaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCisJICAkRUNITyAiXAorICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICisgICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKKyIKKwlmaQorCiAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCiAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgogCSAgJEVDSE8gIlwKQEAgLTI4NzcsMjU0ICs0MTA4LDI5IEBACiAKICAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKICAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAotICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCisgICAgJHNobGlicGF0aF92YXI9XGBcJEVDSE8gXCJcJCRzaGxpYnBhdGhfdmFyXCIgfCAkU0VEICdzLzo6KlwkLy8nXGAKIAogICAgIGV4cG9ydCAkc2hsaWJwYXRoX3ZhcgogIgogCWZpCiAKLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotCSAgJEVDSE8gIlwKLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0iCi0JZmkKLQogCSRFQ0hPICJcCiAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgogICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KLSIKLQljYXNlICRob3N0IGluCi0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0JKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgICRFQ0hPICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKLQkgIDs7Ci0KLQkqKQotCSAgJEVDSE8gIlwKLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotIgotCSAgOzsKLQllc2FjCi0JJEVDSE8gIlwKLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKLSAgICAgIGV4aXQgMQorICAgICAgZnVuY19leGVjX3Byb2dyYW0gXCR7MStcIlwkQFwifQogICAgIGZpCiAgIGVsc2UKICAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCiAgICAgXCRFQ0hPIFwiXCQwOiBlcnJvcjogXFxcYFwkcHJvZ2Rpci9cJHByb2dyYW0nIGRvZXMgbm90IGV4aXN0XCIgMT4mMgogICAgIFwkRUNITyBcIlRoaXMgc2NyaXB0IGlzIGp1c3QgYSB3cmFwcGVyIGZvciBcJHByb2dyYW0uXCIgMT4mMgotICAgICRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKKyAgICBcJEVDSE8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgogICAgIGV4aXQgMQogICBmaQogZmlcCiAiCiB9Ci0jIGVuZDogZnVuY19lbWl0X3dyYXBwZXJfcGFydDIKIAogCi0jIGZ1bmNfZW1pdF93cmFwcGVyIFthcmc9bm9dCi0jCi0jIEVtaXQgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KLSMgRG9uJ3QgZGlyZWN0bHkgb3BlbiBhIGZpbGUgYmVjYXVzZSB3ZSBtYXkgd2FudCB0bwotIyBpbmNvcnBvcmF0ZSB0aGUgc2NyaXB0IGNvbnRlbnRzIHdpdGhpbiBhIGN5Z3dpbi9taW5ndwotIyB3cmFwcGVyIGV4ZWN1dGFibGUuICBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluCi0jIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB2YXJpYWJsZXMKLSMgc2V0IHRoZXJlaW4uCi0jCi0jIEFSRyBpcyB0aGUgdmFsdWUgdGhhdCB0aGUgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVIKLSMgdmFyaWFibGUgd2lsbCB0YWtlLiAgSWYgJ3llcycsIHRoZW4gdGhlIGVtaXR0ZWQgc2NyaXB0Ci0jIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBzdG9yZWQgaXMKLSMgdGhlICRvYmpkaXIgZGlyZWN0b3J5LiAgVGhpcyBpcyBhIGN5Z3dpbi9taW5ndy1zcGVjaWZpYwotIyBiZWhhdmlvci4KLWZ1bmNfZW1pdF93cmFwcGVyICgpCi17Ci0JZnVuY19lbWl0X3dyYXBwZXJfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9JDEKLQlmaQotCi0JIyBzcGxpdCB0aGlzIHVwIHNvIHRoYXQgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwotCSMgY2FuIGNhbGwgZWFjaCBwYXJ0IGluZGVwZW5kZW50bHkuCi0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgIiR7ZnVuY19lbWl0X3dyYXBwZXJfYXJnMX0iCi0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgIiR7ZnVuY19lbWl0X3dyYXBwZXJfYXJnMX0iCi19Ci0KLQotIyBmdW5jX3RvX2hvc3RfcGF0aCBhcmcKLSMKLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLSMgSW50ZW5kZWQgZm9yIHVzZSB3aXRoICJuYXRpdmUiIG1pbmd3ICh3aGVyZSBsaWJ0b29sIGl0c2VsZgotIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KLSMgYnVpbGQgZW52aXJvbm1lbnRzOgotIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCi0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5Ci0jIGNvbnZlcnRzIHBhdGhzIGZvciBhbnkgbm9uLW1zeXMgYXBwbGljYXRpb25zIGl0IGxhdW5jaGVzLAotIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgotIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAotIyAkYnVpbGQgY3lnd2luLiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm8gaGFybSBmb3Igb3RoZXIKLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgotIwotIyBBUkcgaXMgdGhlIHBhdGggKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotZnVuY190b19ob3N0X3BhdGggKCkKLXsKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICptaW5ndyogKQotICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotICAgICAgICAgICAgbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcz0icy9bIF0qXCQvLyIKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YCggY21kIC8vYyBlY2hvICIkMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKmN5Z3dpbiogKQotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gY3lncGF0aCAtdyAiJDEiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKLSAgICAgICAgICAgICMgc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGNvbW1hbmQgaXMgbm90Ci0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAotICAgICAgICAgICAgIyBlcnJvciBjb2RlIG9mIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zCi0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfdG9faG9zdF9wYXRoX3RtcDF9IjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiIKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0gICAgICAgICAgZnVuY19lcnJvciAiICAnJDEnIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotICAgICAgICAgICMgRmFsbGJhY2s6Ci0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSAgICAgICAgZmkKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi19Ci0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKLQotIyBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgYXJnCi0jCi0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotIyBTZWUgZnVuY190b19ob3N0X3BhdGgoKSwgYWJvdmUuIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgdGhlCi0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgotIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0jCi0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCi0jICRob3N0IGZvcm1hdC4gSWYgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvcgotIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCi0jIG9uIG91dHB1dC4KLSMKLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0jIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0LgotZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCi17Ci0gIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiQxIgotICBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0gICAgY2FzZSAkaG9zdCBpbgotICAgICAgKm1pbmd3KiApCi0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCi0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLSAgICAgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9IiQxIgotICAgICAgICAjIE9uY2Ugc2V0IGZvciB0aGlzIGNhbGwsIHRoaXMgdmFyaWFibGUgc2hvdWxkIG5vdCBiZQotICAgICAgICAjIHJlYXNzaWduZWQuIEl0IGlzIHVzZWQgaW4gdGhhIGZhbGxiYWNrIGNhc2UuCi0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxPWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCi0gICAgICAgICAgJFNFRCAtZSAnc3xeOip8fCcgLWUgJ3N8OiokfHwnYAotICAgICAgICBjYXNlICRidWlsZCBpbgotICAgICAgICAgICptaW5ndyogKSAjIEFjdHVhbGx5LCBtc3lzLgotICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgotICAgICAgICAgICAgbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcz0icy9bIF0qXCQvLyIKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPWAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcyIgKSAyPi9kZXYvbnVsbCB8fCBlY2hvICIiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICpjeWd3aW4qICkKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICogKQotICAgICAgICAgICAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aGxpc3RzCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKLSAgICAgICAgICAgIElGUz06Ci0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0gICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIgOyB0aGVuCi0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSAgICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgSUZTPToKLSAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSB0aGUgaG9zdCBwYXRoKHMpIGNvcnJlc3BvbmRpbmcgdG8iCi0gICAgICAgICAgZnVuY19lcnJvciAiICAnJDEnIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQotICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KLSAgICAgICAgICAjIGJlbG93LCBidXQgZm9yIHRoZSB1c2VyIHRvIHByb3ZpZGUgYSB3b3JraW5nIHdpbmUgaW5zdGFsbGF0aW9uCi0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCi0gICAgICAgICAgbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3M9InN8Onw7fGciCi0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAotICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKLSAgICAgICAgZmkKLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKLSAgICAgICAgY2FzZSAiJDEiIGluCi0gICAgICAgICAgOiogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSI7JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIGNhc2UgIiQxIiBpbgotICAgICAgICAgICo6ICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ7IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICA7OwotICAgIGVzYWMKLSAgZmkKLX0KLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aGxpc3QKLQogIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCiAjIGVtaXQgdGhlIHNvdXJjZSBjb2RlIGZvciBhIHdyYXBwZXIgZXhlY3V0YWJsZSBvbiBzdGRvdXQKICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCkBAIC0zMTQxLDMxICs0MTQ3LDIzIEBACiAKICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KICAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KLQotICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKLSAgIGJ1dCBjb3VsZCBldmVudHVhbGx5IGFic29yYiBhbGwgb2YgdGhlIHNjcmlwdHMgZnVuY3Rpb25hbGl0eSBhbmQKLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KICovCiBFT0YKIAkgICAgY2F0IDw8IkVPRiIKKyNpZmRlZiBfTVNDX1ZFUgorIyBkZWZpbmUgX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIDEKKyNlbmRpZgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaWZkZWYgX01TQ19WRVIKICMgaW5jbHVkZSA8ZGlyZWN0Lmg+CiAjIGluY2x1ZGUgPHByb2Nlc3MuaD4KICMgaW5jbHVkZSA8aW8uaD4KLSMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKICNlbHNlCiAjIGluY2x1ZGUgPHVuaXN0ZC5oPgogIyBpbmNsdWRlIDxzdGRpbnQuaD4KICMgaWZkZWYgX19DWUdXSU5fXwogIyAgaW5jbHVkZSA8aW8uaD4KLSMgIGRlZmluZSBIQVZFX1NFVEVOVgotIyAgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCi1jaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOwotaW50IHB1dGVudiAoY2hhciAqKTsKLWludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZgogI2luY2x1ZGUgPG1hbGxvYy5oPgpAQCAtMzE3Nyw2ICs0MTc1LDQ0IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCisvKiBkZWNsYXJhdGlvbnMgb2Ygbm9uLUFOU0kgZnVuY3Rpb25zICovCisjaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCitpbnQgX3B1dGVudiAoY29uc3QgY2hhciAqKTsKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKKyMgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCitjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOworaW50IHB1dGVudiAoY2hhciAqKTsKK2ludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworIyBlbmRpZgorLyogI2VsaWYgZGVmaW5lZCAob3RoZXIgcGxhdGZvcm1zKSAuLi4gKi8KKyNlbmRpZgorCisvKiBwb3J0YWJpbGl0eSBkZWZpbmVzLCBleGNsdWRpbmcgcGF0aCBoYW5kbGluZyBtYWNyb3MgKi8KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQorIyBkZWZpbmUgc3RhdCAgICBfc3RhdAorIyBkZWZpbmUgY2htb2QgICBfY2htb2QKKyMgZGVmaW5lIGdldGN3ZCAgX2dldGN3ZAorIyBkZWZpbmUgcHV0ZW52ICBfcHV0ZW52CisjIGRlZmluZSBTX0lYVVNSIF9TX0lFWEVDCisjIGlmbmRlZiBfSU5UUFRSX1RfREVGSU5FRAorIyAgZGVmaW5lIF9JTlRQVFJfVF9ERUZJTkVECisjICBkZWZpbmUgaW50cHRyX3QgaW50CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQorIyBkZWZpbmUgc3RhdCAgICBfc3RhdAorIyBkZWZpbmUgY2htb2QgICBfY2htb2QKKyMgZGVmaW5lIGdldGN3ZCAgX2dldGN3ZAorIyBkZWZpbmUgcHV0ZW52ICBfcHV0ZW52CisjZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjIGRlZmluZSBIQVZFX1NFVEVOVgorIyBkZWZpbmUgRk9QRU5fV0IgIndiIgorLyogI2VsaWYgZGVmaW5lZCAob3RoZXIgcGxhdGZvcm1zKSAuLi4gKi8KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChQQVRIX01BWCkKICMgZGVmaW5lIExUX1BBVEhNQVggUEFUSF9NQVgKICNlbGlmIGRlZmluZWQoTUFYUEFUSExFTikKQEAgLTMxOTIsMTQgKzQyMjgsNyBAQAogIyBkZWZpbmUgU19JWEdSUCAwCiAjZW5kaWYKIAotI2lmZGVmIF9NU0NfVkVSCi0jIGRlZmluZSBTX0lYVVNSIF9TX0lFWEVDCi0jIGRlZmluZSBzdGF0IF9zdGF0Ci0jIGlmbmRlZiBfSU5UUFRSX1RfREVGSU5FRAotIyAgZGVmaW5lIGludHB0cl90IGludAotIyBlbmRpZgotI2VuZGlmCi0KKy8qIHBhdGggaGFuZGxpbmcgcG9ydGFiaWxpdHkgbWFjcm9zICovCiAjaWZuZGVmIERJUl9TRVBBUkFUT1IKICMgZGVmaW5lIERJUl9TRVBBUkFUT1IgJy8nCiAjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKQEAgLTMyMzAsMTAgKzQyNTksNiBAQAogIyBkZWZpbmUgSVNfUEFUSF9TRVBBUkFUT1IoY2gpICgoY2gpID09IFBBVEhfU0VQQVJBVE9SXzIpCiAjZW5kaWYgLyogUEFUSF9TRVBBUkFUT1JfMiAqLwogCi0jaWZkZWYgX19DWUdXSU5fXwotIyBkZWZpbmUgRk9QRU5fV0IgIndiIgotI2VuZGlmCi0KICNpZm5kZWYgRk9QRU5fV0IKICMgZGVmaW5lIEZPUEVOX1dCICJ3IgogI2VuZGlmCkBAIC0zMjQ2LDIyICs0MjcxLDEzIEBACiAgIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCiB9IHdoaWxlICgwKQogCi0jdW5kZWYgTFRXUkFQUEVSX0RFQlVHUFJJTlRGCi0jaWYgZGVmaW5lZCBERUJVR1dSQVBQRVIKLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncwotc3RhdGljIHZvaWQKLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCi17Ci0gICAgdmFfbGlzdCBhcmdzOwotICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotICAgIHZhX2VuZCAoYXJncyk7Ci19CisjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCitzdGF0aWMgaW50IGx0X2RlYnVnID0gMTsKICNlbHNlCi0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAwOwogI2VuZGlmCiAKLWNvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7Citjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCiAKIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOwogY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKQEAgLTMyNzEsNDEgKzQyODcsMjcgQEAKIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwogaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwogY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Ci12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwordm9pZCBsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOworc3RhdGljIGNvbnN0IGNoYXIgKm5vbmVtcHR5IChjb25zdCBjaGFyICpzKTsKIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOwotdm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChjb25zdCBjaGFyICphcmcpOwotdm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoY29uc3QgY2hhciAqYXJnKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoY29uc3QgY2hhciAqYXJnKTsKLWludCBsdF9zcGxpdF9uYW1lX3ZhbHVlIChjb25zdCBjaGFyICphcmcsIGNoYXIqKiBuYW1lLCBjaGFyKiogdmFsdWUpOwogdm9pZCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKIHZvaWQgbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci0KLXN0YXRpYyBjb25zdCBjaGFyICpzY3JpcHRfdGV4dF9wYXJ0MSA9CitjaGFyICoqcHJlcGFyZV9zcGF3biAoY2hhciAqKmFyZ3YpOwordm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7CiBFT0YKIAotCSAgICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSB5ZXMgfAotCSAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCi0JICAgICAgICAgICAgIC1lICdzL14vICAiLycgLWUgJ3MvJC9cXG4iLycKLQkgICAgZWNobyAiOyIKIAkgICAgY2F0IDw8RU9GCi0KLXN0YXRpYyBjb25zdCBjaGFyICpzY3JpcHRfdGV4dF9wYXJ0MiA9Ci1FT0YKLQkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDIgeWVzIHwKLQkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAotCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCi0JICAgIGVjaG8gIjsiCi0KLQkgICAgY2F0IDw8RU9GCi1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwordm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKIGNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQVJOQU1FID0gIiRzaGxpYnBhdGhfdmFyIjsKIEVPRgogCiAJICAgIGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgogCSAgICAgIGNhdCA8PEVPRgotY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CiBFT0YKIAkgICAgZWxzZQogCSAgICAgIGNhdCA8PCJFT0YiCkBAIC0zMzE0LDEwICs0MzE2LDEwIEBACiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGRsbHNlYXJjaHBhdGg6IgogCSAgICAgIGNhdCA8PEVPRgogY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Ci1jb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Citjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKIEVPRgogCSAgICBlbHNlCiAJICAgICAgY2F0IDw8IkVPRiIKQEAgLTMzNDAsMjQgKzQzNDIsMTAgQEAKIAkgICAgY2F0IDw8IkVPRiIKIAogI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAgICAgICAgICItLWx0LSIKLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1CiAKLXN0YXRpYyBjb25zdCBzaXplX3Qgb3B0X3ByZWZpeF9sZW4gICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSDsKIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOwotCiBzdGF0aWMgY29uc3QgY2hhciAqZHVtcHNjcmlwdF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZHVtcC1zY3JpcHQiOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9zZXRfb3B0X2xlbiAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyA3Owotc3RhdGljIGNvbnN0IGNoYXIgKmVudl9zZXRfb3B0ICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1zZXQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCB2YWx1ZSBvZiBmb28gaXMgc2V0IHRvIGJhciAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9wcmVwZW5kX29wdF9sZW4gPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMTsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfcHJlcGVuZF9vcHQgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtcHJlcGVuZCI7Ci0gIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIG5ldyB2YWx1ZSBvZiBmb28gaXMgYmFyJHtmb299ICovCi0KLXN0YXRpYyBjb25zdCBzaXplX3QgZW52X2FwcGVuZF9vcHRfbGVuICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDEwOwotc3RhdGljIGNvbnN0IGNoYXIgKmVudl9hcHBlbmRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1hcHBlbmQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzICR7Zm9vfWJhciAqLworc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKIAogaW50CiBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQpAQCAtMzM3NCwxMCArNDM2MiwxMyBAQAogICBpbnQgaTsKIAogICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwogCi0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCisgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0CisgICAqIGFsc28sIGNvcHkgYWxsIG5vbiBjd3JhcHBlciBvcHRpb25zIHRvIG5ld2FyZ3osIGV4Y2VwdAorICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5CisgICAqLworICBuZXdhcmdjPTA7CiAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCiAgICAgewogICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpID09IDApCkBAIC0zMzkxLDI1ICs0MzgyLDU3IEBACiAJICAgICAgZXNhYwogCiAJICAgIGNhdCA8PCJFT0YiCi0JICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQxKTsKLQkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDIpOworCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7CiAJICByZXR1cm4gMDsKIAl9CisgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCisJeworICAgICAgICAgIGx0X2RlYnVnID0gMTsKKyAgICAgICAgICBjb250aW51ZTsKKwl9CisgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCisgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKyAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCisgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgorICAgICAgICAgICAqLworICAgICAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCisgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKyAgICAgICAgfQorICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLworICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CiAgICAgfQorICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwogCi0gIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKK0VPRgorCSAgICBjYXQgPDxFT0YKKyAgLyogVGhlIEdOVSBiYW5uZXIgbXVzdCBiZSB0aGUgZmlyc3Qgbm9uLWVycm9yIGRlYnVnIG1lc3NhZ2UgKi8KKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOworRU9GCisJICAgIGNhdCA8PCJFT0YiCisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7CisKICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQotICAgIGx0X2ZhdGFsICgiQ291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0JCQkgIHRtcF9wYXRoc3BlYykpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJjb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKwkJICB0bXBfcGF0aHNwZWMpOwogCiAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CiAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwogCi0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOworICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKICAgc3RyZW5kemFwIChhY3R1YWxfY3dyYXBwZXJfcGF0aCwgYWN0dWFsX2N3cmFwcGVyX25hbWUpOwogCiAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCkBAIC0zNDI3LDggKzQ0NTAsOSBAQAogICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKICAgdG1wX3BhdGhzcGVjID0gMDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotCQkJICB0YXJnZXRfbmFtZSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCisJCSAgdGFyZ2V0X25hbWUpOwogRU9GCiAKIAkgICAgY2F0IDw8RU9GCkBAIC0zNDc4LDgwICs0NTAyLDE5IEBACiAKICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCiAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KLSAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CisgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCisgICAgIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCAqX1ZBUk5BTUVzIGFyZSBQQVRIIGJ1dCB1bmluc3RhbGxlZAorICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLwogICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CiAKLSAgbmV3YXJnYz0wOwotICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQotICAgIHsKLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfc2V0X29wdCwgZW52X3NldF9vcHRfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnPScpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X3NldF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAocCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfc2V0X29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3NldF9vcHQpOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3ByZXBlbmRfb3B0LCBlbnZfcHJlcGVuZF9vcHRfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9wcmVwZW5kX29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAocCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfcHJlcGVuZF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfcHJlcGVuZF9vcHQpOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X2FwcGVuZF9vcHQsIGVudl9hcHBlbmRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9hcHBlbmRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X2FwcGVuZF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9hcHBlbmRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBvcHRfcHJlZml4X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCi0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0gICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgotICAgICAgICAgICAqLwotICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAotICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7Ci0gICAgICAgIH0KLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLSAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwotICAgIH0KLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLQotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCisJCSAgbm9ubnVsbCAobHRfYXJndl96ZXJvKSk7CiAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCiAgICAgewotICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsIGksIChuZXdhcmd6W2ldID8gbmV3YXJneltpXSA6ICI8TlVMTD4iKSkpOworICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCisJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKICAgICB9CiAKIEVPRgpAQCAtMzU2MCwxMSArNDUyMywxNCBAQAogCSAgICAgIG1pbmd3KikKIAkJY2F0IDw8IkVPRiIKICAgLyogZXhlY3YgZG9lc24ndCBhY3R1YWxseSB3b3JrIG9uIG1pbmd3IGFzIGV4cGVjdGVkIG9uIHVuaXggKi8KKyAgbmV3YXJneiA9IHByZXBhcmVfc3Bhd24gKG5ld2FyZ3opOwogICBydmFsID0gX3NwYXdudiAoX1BfV0FJVCwgbHRfYXJndl96ZXJvLCAoY29uc3QgY2hhciAqIGNvbnN0ICopIG5ld2FyZ3opOwogICBpZiAocnZhbCA9PSAtMSkKICAgICB7CiAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLwotICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKKwkJICAgICAgbHRfYXJndl96ZXJvLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAgICAgICByZXR1cm4gMTI3OwogICAgIH0KICAgcmV0dXJuIHJ2YWw7CkBAIC0zNTg2LDcgKzQ1NTIsNyBAQAogewogICB2b2lkICpwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOwogICBpZiAoIXApCi0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7CisgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgIm1lbW9yeSBleGhhdXN0ZWQiKTsKIAogICByZXR1cm4gcDsKIH0KQEAgLTM2MjAsOCArNDU4Niw4IEBACiB7CiAgIHN0cnVjdCBzdGF0IHN0OwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCi0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CiAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQogICAgIHJldHVybiAwOwogCkBAIC0zNjM4LDggKzQ2MDQsOCBAQAogICBpbnQgcnZhbCA9IDA7CiAgIHN0cnVjdCBzdGF0IHN0OwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFrZV9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCiAgICAgcmV0dXJuIDA7CiAKQEAgLTM2NjUsOCArNDYzMSw4IEBACiAgIGludCB0bXBfbGVuOwogICBjaGFyICpjb25jYXRfbmFtZTsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihmaW5kX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7CiAKICAgaWYgKCh3cmFwcGVyID09IE5VTEwpIHx8ICgqd3JhcHBlciA9PSAnXDAnKSkKICAgICByZXR1cm4gTlVMTDsKQEAgLTM3MTksNyArNDY4NSw4IEBACiAJCXsKIAkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLwogCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworCQkgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOwogCQkgIGNvbmNhdF9uYW1lID0KIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwpAQCAtMzc0NCw3ICs0NzExLDggQEAKICAgICB9CiAgIC8qIFJlbGF0aXZlIHBhdGggfCBub3QgZm91bmQgaW4gcGF0aDogcHJlcGVuZCBjd2QgKi8KICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKICAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKQEAgLTM3NzAsOCArNDczOCw5IEBACiAgIGludCBoYXNfc3ltbGlua3MgPSAwOwogICB3aGlsZSAoc3RybGVuICh0bXBfcGF0aHNwZWMpICYmICFoYXNfc3ltbGlua3MpCiAgICAgewotICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0JCQkgICAgICB0bXBfcGF0aHNwZWMpKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorCQkgICAgICB0bXBfcGF0aHNwZWMpOwogICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQogCXsKIAkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCkBAIC0zNzkzLDggKzQ3NjIsOSBAQAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOwotCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOworCSAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogCX0KICAgICB9CiAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwpAQCAtMzgwNyw3ICs0Nzc3LDggQEAKICAgdG1wX3BhdGhzcGVjID0gcmVhbHBhdGggKHBhdGhzcGVjLCBidWYpOwogICBpZiAodG1wX3BhdGhzcGVjID09IDApCiAgICAgewotICAgICAgbHRfZmF0YWwgKCJDb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKICAgICB9CiAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOwogI2VuZGlmCkBAIC0zODMzLDExICs0ODA0LDI1IEBACiAgIHJldHVybiBzdHI7CiB9CiAKK3ZvaWQKK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaWYgKGx0X2RlYnVnKQorICAgIHsKKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworICAgICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7CisgICAgICB2YV9lbmQgKGFyZ3MpOworICAgIH0KK30KKwogc3RhdGljIHZvaWQKLWx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCiAJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCiB7Ci0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICVzOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUsIG1vZGUpOwogICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CiAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwogCkBAIC0zODQ2LDIwICs0ODMxLDMyIEBACiB9CiAKIHZvaWQKLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCitsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKIHsKICAgdmFfbGlzdCBhcDsKICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwogICB2YV9lbmQgKGFwKTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKgorbm9ubnVsbCAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK25vbmVtcHR5IChjb25zdCBjaGFyICpzKQoreworICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOworfQorCiB2b2lkCiBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCisgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKICAgewogI2lmZGVmIEhBVkVfU0VURU5WCiAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KQEAgLTM5MDQsOTUgKzQ5MDEsMTIgQEAKICAgcmV0dXJuIG5ld192YWx1ZTsKIH0KIAotaW50Ci1sdF9zcGxpdF9uYW1lX3ZhbHVlIChjb25zdCBjaGFyICphcmcsIGNoYXIqKiBuYW1lLCBjaGFyKiogdmFsdWUpCi17Ci0gIGNvbnN0IGNoYXIgKnA7Ci0gIGludCBsZW47Ci0gIGlmICghYXJnIHx8ICEqYXJnKQotICAgIHJldHVybiAxOwotCi0gIHAgPSBzdHJjaHIgKGFyZywgKGludCknPScpOwotCi0gIGlmICghcCkKLSAgICByZXR1cm4gMTsKLQotICAqdmFsdWUgPSB4c3RyZHVwICgrK3ApOwotCi0gIGxlbiA9IHN0cmxlbiAoYXJnKSAtIHN0cmxlbiAoKnZhbHVlKTsKLSAgKm5hbWUgPSBYTUFMTE9DIChjaGFyLCBsZW4pOwotICBzdHJuY3B5ICgqbmFtZSwgYXJnLCBsZW4tMSk7Ci0gICgqbmFtZSlbbGVuIC0gMV0gPSAnXDAnOwotCi0gIHJldHVybiAwOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChjb25zdCBjaGFyICphcmcpCi17Ci0gIGNoYXIgKm5hbWUgPSBOVUxMOwotICBjaGFyICp2YWx1ZSA9IE5VTEw7Ci0KLSAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKLSAgICB7Ci0gICAgICBYRlJFRSAobmFtZSk7Ci0gICAgICBYRlJFRSAodmFsdWUpOwotICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3NldF9vcHQsIGFyZyk7Ci0gICAgfQotCi0gIGx0X3NldGVudiAobmFtZSwgdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpCi17Ci0gIGNoYXIgKm5hbWUgPSBOVUxMOwotICBjaGFyICp2YWx1ZSA9IE5VTEw7Ci0gIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7Ci0KLSAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKLSAgICB7Ci0gICAgICBYRlJFRSAobmFtZSk7Ci0gICAgICBYRlJFRSAodmFsdWUpOwotICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3ByZXBlbmRfb3B0LCBhcmcpOwotICAgIH0KLQotICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMCk7Ci0gIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuYW1lKTsKLSAgWEZSRUUgKHZhbHVlKTsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9hcHBlbmRfb3B0LCBhcmcpOwotICAgIH0KLQotICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMSk7Ci0gIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuYW1lKTsKLSAgWEZSRUUgKHZhbHVlKTsKLX0KLQogdm9pZAogbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKIAogICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCiAgICAgewpAQCAtNDAxMSw5ICs0OTI1LDkgQEAKIHZvaWQKIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAKICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgIHsKQEAgLTQwMjMsMTEgKzQ5MzcsMTU4IEBACiAgICAgfQogfQogCitFT0YKKwkgICAgY2FzZSAkaG9zdF9vcyBpbgorCSAgICAgIG1pbmd3KikKKwkJY2F0IDw8IkVPRiIKIAorLyogUHJlcGFyZXMgYW4gYXJndW1lbnQgdmVjdG9yIGJlZm9yZSBjYWxsaW5nIHNwYXduKCkuCisgICBOb3RlIHRoYXQgc3Bhd24oKSBkb2VzIG5vdCBieSBpdHNlbGYgY2FsbCB0aGUgY29tbWFuZCBpbnRlcnByZXRlcgorICAgICAoZ2V0ZW52ICgiQ09NU1BFQyIpICE9IE5VTEwgPyBnZXRlbnYgKCJDT01TUEVDIikgOgorICAgICAgKHsgT1NWRVJTSU9OSU5GTyB2OyB2LmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2YoT1NWRVJTSU9OSU5GTyk7CisgICAgICAgICBHZXRWZXJzaW9uRXgoJnYpOworICAgICAgICAgdi5kd1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UOworICAgICAgfSkgPyAiY21kLmV4ZSIgOiAiY29tbWFuZC5jb20iKS4KKyAgIEluc3RlYWQgaXQgc2ltcGx5IGNvbmNhdGVuYXRlcyB0aGUgYXJndW1lbnRzLCBzZXBhcmF0ZWQgYnkgJyAnLCBhbmQgY2FsbHMKKyAgIENyZWF0ZVByb2Nlc3MoKS4gIFdlIG11c3QgcXVvdGUgdGhlIGFyZ3VtZW50cyBzaW5jZSBXaW4zMiBDcmVhdGVQcm9jZXNzKCkKKyAgIGludGVycHJldHMgY2hhcmFjdGVycyBsaWtlICcgJywgJ1x0JywgJ1xcJywgJyInIChidXQgbm90ICc8JyBhbmQgJz4nKSBpbiBhCisgICBzcGVjaWFsIHdheToKKyAgIC0gU3BhY2UgYW5kIHRhYiBhcmUgaW50ZXJwcmV0ZWQgYXMgZGVsaW1pdGVycy4gVGhleSBhcmUgbm90IHRyZWF0ZWQgYXMKKyAgICAgZGVsaW1pdGVycyBpZiB0aGV5IGFyZSBzdXJyb3VuZGVkIGJ5IGRvdWJsZSBxdW90ZXM6ICIuLi4iLgorICAgLSBVbmVzY2FwZWQgZG91YmxlIHF1b3RlcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBpbnB1dC4gVGhlaXIgb25seSBlZmZlY3QgaXMKKyAgICAgdGhhdCB3aXRoaW4gZG91YmxlIHF1b3Rlcywgc3BhY2UgYW5kIHRhYiBhcmUgdHJlYXRlZCBsaWtlIG5vcm1hbAorICAgICBjaGFyYWN0ZXJzLgorICAgLSBCYWNrc2xhc2hlcyBub3QgZm9sbG93ZWQgYnkgZG91YmxlIHF1b3RlcyBhcmUgbm90IHNwZWNpYWwuCisgICAtIEJ1dCAyKm4rMSBiYWNrc2xhc2hlcyBmb2xsb3dlZCBieSBhIGRvdWJsZSBxdW90ZSBiZWNvbWUKKyAgICAgbiBiYWNrc2xhc2hlcyBmb2xsb3dlZCBieSBhIGRvdWJsZSBxdW90ZSAobiA+PSAwKToKKyAgICAgICBcIiAtPiAiCisgICAgICAgXFxcIiAtPiBcIgorICAgICAgIFxcXFxcIiAtPiBcXCIKKyAqLworI2RlZmluZSBTSEVMTF9TUEVDSUFMX0NIQVJTICJcIlxcIFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzciCisjZGVmaW5lIFNIRUxMX1NQQUNFX0NIQVJTICIgXDAwMVwwMDJcMDAzXDAwNFwwMDVcMDA2XDAwN1wwMTBcMDExXDAxMlwwMTNcMDE0XDAxNVwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcMDI1XDAyNlwwMjdcMDMwXDAzMVwwMzJcMDMzXDAzNFwwMzVcMDM2XDAzNyIKK2NoYXIgKioKK3ByZXBhcmVfc3Bhd24gKGNoYXIgKiphcmd2KQoreworICBzaXplX3QgYXJnYzsKKyAgY2hhciAqKm5ld19hcmd2OworICBzaXplX3QgaTsKKworICAvKiBDb3VudCBudW1iZXIgb2YgYXJndW1lbnRzLiAgKi8KKyAgZm9yIChhcmdjID0gMDsgYXJndlthcmdjXSAhPSBOVUxMOyBhcmdjKyspCisgICAgOworCisgIC8qIEFsbG9jYXRlIG5ldyBhcmd1bWVudCB2ZWN0b3IuICAqLworICBuZXdfYXJndiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworCisgIC8qIFB1dCBxdW90ZWQgYXJndW1lbnRzIGludG8gdGhlIG5ldyBhcmd1bWVudCB2ZWN0b3IuICAqLworICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKnN0cmluZyA9IGFyZ3ZbaV07CisKKyAgICAgIGlmIChzdHJpbmdbMF0gPT0gJ1wwJykKKwluZXdfYXJndltpXSA9IHhzdHJkdXAgKCJcIlwiIik7CisgICAgICBlbHNlIGlmIChzdHJwYnJrIChzdHJpbmcsIFNIRUxMX1NQRUNJQUxfQ0hBUlMpICE9IE5VTEwpCisJeworCSAgaW50IHF1b3RlX2Fyb3VuZCA9IChzdHJwYnJrIChzdHJpbmcsIFNIRUxMX1NQQUNFX0NIQVJTKSAhPSBOVUxMKTsKKwkgIHNpemVfdCBsZW5ndGg7CisJICB1bnNpZ25lZCBpbnQgYmFja3NsYXNoZXM7CisJICBjb25zdCBjaGFyICpzOworCSAgY2hhciAqcXVvdGVkX3N0cmluZzsKKwkgIGNoYXIgKnA7CisKKwkgIGxlbmd0aCA9IDA7CisJICBiYWNrc2xhc2hlcyA9IDA7CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICBsZW5ndGgrKzsKKwkgIGZvciAocyA9IHN0cmluZzsgKnMgIT0gJ1wwJzsgcysrKQorCSAgICB7CisJICAgICAgY2hhciBjID0gKnM7CisJICAgICAgaWYgKGMgPT0gJyInKQorCQlsZW5ndGggKz0gYmFja3NsYXNoZXMgKyAxOworCSAgICAgIGxlbmd0aCsrOworCSAgICAgIGlmIChjID09ICdcXCcpCisJCWJhY2tzbGFzaGVzKys7CisJICAgICAgZWxzZQorCQliYWNrc2xhc2hlcyA9IDA7CisJICAgIH0KKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgIGxlbmd0aCArPSBiYWNrc2xhc2hlcyArIDE7CisKKwkgIHF1b3RlZF9zdHJpbmcgPSBYTUFMTE9DIChjaGFyLCBsZW5ndGggKyAxKTsKKworCSAgcCA9IHF1b3RlZF9zdHJpbmc7CisJICBiYWNrc2xhc2hlcyA9IDA7CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICAqcCsrID0gJyInOworCSAgZm9yIChzID0gc3RyaW5nOyAqcyAhPSAnXDAnOyBzKyspCisJICAgIHsKKwkgICAgICBjaGFyIGMgPSAqczsKKwkgICAgICBpZiAoYyA9PSAnIicpCisJCXsKKwkJICB1bnNpZ25lZCBpbnQgajsKKwkJICBmb3IgKGogPSBiYWNrc2xhc2hlcyArIDE7IGogPiAwOyBqLS0pCisJCSAgICAqcCsrID0gJ1xcJzsKKwkJfQorCSAgICAgICpwKysgPSBjOworCSAgICAgIGlmIChjID09ICdcXCcpCisJCWJhY2tzbGFzaGVzKys7CisJICAgICAgZWxzZQorCQliYWNrc2xhc2hlcyA9IDA7CisJICAgIH0KKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgIHsKKwkgICAgICB1bnNpZ25lZCBpbnQgajsKKwkgICAgICBmb3IgKGogPSBiYWNrc2xhc2hlczsgaiA+IDA7IGotLSkKKwkJKnArKyA9ICdcXCc7CisJICAgICAgKnArKyA9ICciJzsKKwkgICAgfQorCSAgKnAgPSAnXDAnOworCisJICBuZXdfYXJndltpXSA9IHF1b3RlZF9zdHJpbmc7CisJfQorICAgICAgZWxzZQorCW5ld19hcmd2W2ldID0gKGNoYXIgKikgc3RyaW5nOworICAgIH0KKyAgbmV3X2FyZ3ZbYXJnY10gPSBOVUxMOworCisgIHJldHVybiBuZXdfYXJndjsKK30KK0VPRgorCQk7OworCSAgICBlc2FjCisKKyAgICAgICAgICAgIGNhdCA8PCJFT0YiCit2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFKiBmKQoreworRU9GCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyIHllcyB8CisJICAgICAgJFNFRCAtbiAtZSAnCitzL15cKC5cezc5XH1cKVwoLi4qXCkvXDFcCitcMi8KK2gKK3MvXChbXFwiXVwpL1xcXDEvZworcy8kL1xcbi8KK3MvXChbXlxuXSpcKS4qLyAgZnB1dHMgKCJcMSIsIGYpOy9wCitnCitEJworICAgICAgICAgICAgY2F0IDw8IkVPRiIKK30KIEVPRgogfQogIyBlbmQ6IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKIAorIyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCBBUkcKKyMgVHJ1ZSBpZiBBUkcgaXMgYW4gaW1wb3J0IGxpYiwgYXMgaW5kaWNhdGVkIGJ5ICRmaWxlX21hZ2ljX2NtZAorZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICppbXBvcnQqKSA6IDs7CisgICAgKikgZmFsc2UgOzsKKyAgICBlc2FjCit9CisKICMgZnVuY19tb2RlX2xpbmsgYXJnLi4uCiBmdW5jX21vZGVfbGluayAoKQogewpAQCAtNDA3Miw2ICs1MTMzLDcgQEAKICAgICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0KIAogICAgIGF2b2lkX3ZlcnNpb249bm8KKyAgICBiaW5kaXI9CiAgICAgZGxmaWxlcz0KICAgICBkbHByZWZpbGVzPQogICAgIGRsc2VsZj1ubwpAQCAtNDE2NCw2ICs1MjI2LDExIEBACiAJZXNhYwogCiAJY2FzZSAkcHJldiBpbgorCWJpbmRpcikKKwkgIGJpbmRpcj0iJGFyZyIKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKIAlkbGZpbGVzfGRscHJlZmlsZXMpCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgpAQCAtNDE5NSw5ICs1MjYyLDkgQEAKIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgogCSAgICBlbHNlCi0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKIAkgICAgZmkKIAkgICAgcHJldj0KIAkgICAgY29udGludWUKQEAgLTQyMjEsNyArNTI4OCw3IEBACiAJICAgICotKi1kYXJ3aW4qKQogCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7Ci0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKIAkJICAgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKQEAgLTQyNDAsNyArNTMwNyw3IEBACiAJICAgIG1vcmVhcmdzPQogCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCiAJICAgIGRvCi0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgogCSAgICAgIGFyZz0kZmlsCiAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKQEAgLTQyNjksNyArNTMzNiw3IEBACiAKIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICAgIHByZXY9CiAJCSAgICAgIGNvbnRpbnVlCiAJCSAgICBlbHNlCkBAIC00MjgxLDcgKzUzNDgsNyBAQAogCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICBwcmV2PQogCQkgIGZpCiAKQEAgLTQzNTEsMTIgKzU0MTgsMTIgQEAKIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCiAJICAgIGNhc2UgIiRycGF0aCAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwogCSAgICBlc2FjCiAJICBlbHNlCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZmkKIAkgIHByZXY9CkBAIC00MzY4LDI4ICs1NDM1LDI4IEBACiAJICBjb250aW51ZQogCSAgOzsKIAl3ZWFrKQotCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjY2xpbmtlcikKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4Y29tcGlsZXIpCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgpAQCAtNDQyNSw2ICs1NDkyLDExIEBACiAJY29udGludWUKIAk7OwogCisgICAgICAtYmluZGlyKQorCXByZXY9YmluZGlyCisJY29udGludWUKKwk7OworCiAgICAgICAtZGxvcGVuKQogCXByZXY9ZGxmaWxlcwogCWNvbnRpbnVlCkBAIC00NDc1LDE1ICs1NTQ3LDE2IEBACiAJOzsKIAogICAgICAgLUwqKQotCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgogCSAgZWxzZQogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKIAkgIGZpCiAJZmkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKQEAgLTQ0OTUsMjQgKzU1NjgsMzAgQEAKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiRkZXBsaWJzICIgaW4KLQkqIiAtTCRkaXIgIiopIDs7CisJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKKwkgIDs7CiAJKikKLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworCSAgY2FzZSAkZGlyIGluCisJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKwkgIGVzYWMKKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCiAJICA7OwogCWVzYWMKIAljYXNlICRob3N0IGluCiAJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgIHRlc3RiaW5kaXI9YCRFQ0hPICJYJGRpciIgfCAkWHNlZCAtZSAncyovbGliJCovYmluKidgCisJICB0ZXN0YmluZGlyPWAkRUNITyAiJGRpciIgfCAkU0VEICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKIAkgIGVzYWMKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTQ1MjIsNyArNTYwMSw3IEBACiAgICAgICAtbCopCiAJaWYgdGVzdCAiWCRhcmciID0gIlgtbGMiIHx8IHRlc3QgIlgkYXJnIiA9ICJYLWxtIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBvciBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CkBAIC00NTM2LDcgKzU2MTUsNyBAQAogCSAgICA7OwogCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCkBAIC00NTU2LDcgKzU2MzUsNyBAQAogCSAgIDs7CiAJIGVzYWMKIAlmaQotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCiAJY29udGludWUKIAk7OwogCkBAIC00NTY4LDIxICs1NjQ3LDIyIEBACiAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCiAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCiAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgotICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAlwcmV2PXhjb21waWxlcgogCWNvbnRpbnVlCiAJOzsKIAotICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlIFwKKyAgICAgIHwtdGhyZWFkc3wtZm9wZW5tcHwtb3Blbm1wfC1tcHwteG9wZW5tcHwtb21wfC1xc21wPSopCisJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKKwkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGFyZyIgOzsKIAllc2FjCiAJY29udGludWUKIAk7OwpAQCAtNDY0OSwxMyArNTcyOSwxNyBAQAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKKwk9KikKKwkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGRpciIKKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgIDs7CiAJKikKIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgogCSAgOzsKIAllc2FjCiAJY2FzZSAiJHhycGF0aCAiIGluCiAJKiIgJGRpciAiKikgOzsKLQkqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CkBAIC00NzA4LDggKzU3OTIsOCBAQAogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAlkb25lCiAJSUZTPSIkc2F2ZV9pZnMiCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgpAQCAtNDcyNCw5ICs1ODA4LDkgQEAKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKIAlJRlM9IiRzYXZlX2lmcyIKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCkBAIC00NzU0LDIzICs1ODM4LDI3IEBACiAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJOzsKIAotICAgICAgIyAtNjQsIC1taXBzWzAtOV0gZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCi0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCi0gICAgICAjICtEQSosICtERCogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBIUCBjb21waWxlcgotICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCisgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CisgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAtclswLTldWzAtOV0qICAgICAgICBzcGVjaWZ5IHByb2Nlc3NvciBmb3IgdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKKyAgICAgICMgLXEqICAgICAgICAgICAgICAgICAgY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQworICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKyAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCisgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcworICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCiAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKikKKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAorICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgogCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIDs7CiAKQEAgLTQ3ODIsNyArNTg3MCw3IEBACiAKICAgICAgICouJG9iamV4dCkKIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgotCW9ianM9IiRvYmpzICRhcmciCisJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCiAJOzsKIAogICAgICAgKi5sbykKQEAgLTQ4MTMsNyArNTkwMSw3IEBACiAKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKIAkJcHJldj0KIAkJY29udGludWUKIAkgICAgICBlbHNlCkBAIC00ODI1LDcgKzU5MTMsNyBAQAogCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKIAkgICAgICBwcmV2PQogCSAgICBmaQogCkBAIC00ODcwLDI0ICs1OTU4LDI1IEBACiAKICAgICAgICouJGxpYmV4dCkKIAkjIEFuIGFyY2hpdmUuCi0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgKi5sYSkKIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCiAKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KIAllbHNlCi0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJZmkKIAljb250aW51ZQogCTs7CkBAIC00OTI1LDcgKzYwMTQsNyBAQAogCiAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCi0gICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRTRUQgXCdzLzovIC9nXCdcYAogICAgIGVsc2UKICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQogICAgIGZpCkBAIC00OTM0LDYgKzYwMjMsOCBAQAogCiAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgogICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCiAKQEAgLTQ5NTQsMTIgKzYwNDUsMTIgQEAKICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJY2FzZSAiJGxpYnMgIiBpbgotCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCisgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKICAgICBkb25lCiAKICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCkBAIC00OTcyLDkgKzYwNjMsOSBAQAogICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7CisJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OwogCSAgZXNhYwotCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgogCWRvbmUKICAgICAgIGZpCiAgICAgICBwcmVfcG9zdF9kZXBzPQpAQCAtNTAzMyw3ICs2MTI0LDEwIEBACiAJY2FzZSAkcGFzcyBpbgogCWRsb3BlbikgbGlicz0iJGRsZmlsZXMiIDs7CiAJZGxwcmVvcGVuKSBsaWJzPSIkZGxwcmVmaWxlcyIgOzsKLQlsaW5rKSBsaWJzPSIkZGVwbGlicyAlREVQTElCUyUgJGRlcGVuZGVuY3lfbGlicyIgOzsKKwlsaW5rKQorCSAgbGlicz0iJGRlcGxpYnMgJURFUExJQlMlIgorCSAgdGVzdCAiWCRsaW5rX2FsbF9kZXBsaWJzIiAhPSBYbm8gJiYgbGlicz0iJGxpYnMgJGRlcGVuZGVuY3lfbGlicyIKKwkgIDs7CiAJZXNhYwogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGRscHJlb3BlbiI7IHRoZW4KQEAgLTUwNDEsMTcgKzYxMzUsMTkgQEAKIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwogCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicwogCSAgZGVwZW5kZW5jeV9saWJzPQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCiAJICBjYXNlICRsaWIgaW4KLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CiAJICBlc2FjCiAKIAkgICMgQ29sbGVjdCBwcmVvcGVuZWQgbGlidG9vbCBkZXBsaWJzLCBleGNlcHQgYW55IHRoaXMgbGlicmFyeQogCSAgIyBoYXMgZGVjbGFyZWQgYXMgd2VhayBsaWJzCiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gICAgICAgICAgICBkZXBsaWJfYmFzZT1gJEVDSE8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorCSAgICBmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgorICAgICAgICAgICAgZGVwbGliX2Jhc2U9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OwotCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWRvbmUKQEAgLTUwNjcsMTYgKzYxNjMsMTcgQEAKIAlsaWI9CiAJZm91bmQ9bm8KIAljYXNlICRkZXBsaWIgaW4KLQktbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQorCS1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmUgXAorICAgICAgICB8LXRocmVhZHN8LWZvcGVubXB8LW9wZW5tcHwtbXB8LXhvcGVubXB8LW9tcHwtcXNtcD0qKQogCSAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCiAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQotCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGRlcGxpYiIKIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKIAkJZXNhYwogCSAgICBmaQogCSAgZmkKQEAgLTUxNjEsNyArNjI1OCw3IEBACiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgZmkKIAkgIGZpCkBAIC01MTc0LDcgKzYyNzEsOCBAQAogCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCiAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICBwcm9nKQogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCkBAIC01MTg4LDcgKzYyODYsOCBAQAogCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGZpCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgICAgOzsKIAkgICopCiAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKQEAgLTUxOTksMTcgKzYyOTgsMjEgQEAKIAktUiopCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCi0JICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSAgICAjIE1ha2Ugc3VyZSB0aGUgeHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgogCSAgICBjYXNlICIkeHJwYXRoICIgaW4KIAkgICAgKiIgJGRpciAiKikgOzsKLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CiAJICAgIGVzYWMKIAkgIGZpCiAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgY29udGludWUKIAkgIDs7Ci0JKi5sYSkgbGliPSIkZGVwbGliIiA7OworCSoubGEpCisJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisJICA7OwogCSouJGxpYmV4dCkKIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKQEAgLTUyMjcsNyArNjMzMCw3IEBACiAJCW1hdGNoX3BhdHRlcm4qKQogCQkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2Q7IHNoaWZ0CiAJCSAgbWF0Y2hfcGF0dGVybl9yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMSBcKC4qXCkiYAotCQkgIGlmIGV2YWwgIlwkRUNITyBcIlgkZGVwbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIFwKKwkJICBpZiBldmFsICJcJEVDSE8gXCIkZGVwbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgXAogCQkgICAgfCAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgogCQkgICAgdmFsaWRfYV9saWI9eWVzCiAJCSAgZmkKQEAgLTUyMzcsMTUgKzYzNDAsMTUgQEAKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgICAgaWYgdGVzdCAiJHZhbGlkX2FfbGliIiAhPSB5ZXM7IHRoZW4KLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IFRyeWluZyB0byBsaW5rIHdpdGggc3RhdGljIGxpYiBhcmNoaXZlICRkZXBsaWIuIgotCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRFQ0hPICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKLQkJJEVDSE8gIioqKiB0aGF0IGl0IGlzIGp1c3QgYSBzdGF0aWMgYXJjaGl2ZSB0aGF0IEkgc2hvdWxkIG5vdCB1c2UgaGVyZS4iCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgdGhlIGZpbGUgZXh0ZW5zaW9ucyAuJGxpYmV4dCBvZiB0aGlzIGFyZ3VtZW50IG1ha2VzIG1lIGJlbGlldmUiCisJCWVjaG8gIioqKiB0aGF0IGl0IGlzIGp1c3QgYSBzdGF0aWMgYXJjaGl2ZSB0aGF0IEkgc2hvdWxkIG5vdCB1c2UgaGVyZS4iCiAJICAgICAgZWxzZQotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSIKIAkJJEVDSE8gIioqKiBzdGF0aWMgbGlicmFyeSAkZGVwbGliIGlzIG5vdCBwb3J0YWJsZSEiCiAJCWRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCkBAIC01MjcyLDExICs2Mzc1LDExIEBACiAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbiB8fCB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCiAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCiAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCi0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBlbHNlCi0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGRlcGxpYiIKIAkgICAgZmkKIAkgIGZpCiAJICBjb250aW51ZQpAQCAtNTMxOCwyMCArNjQyMSwyMCBAQAogCiAJIyBDb252ZXJ0ICItZnJhbWV3b3JrIGZvbyIgdG8gImZvby5sdGZyYW1ld29yayIKIAlpZiB0ZXN0IC1uICIkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyI7IHRoZW4KLQkgIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiWCRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzLy1mcmFtZXdvcmsgXChbXiAkXSpcKS9cMS5sdGZyYW1ld29yay9nJ2AKKwkgIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCiAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCiAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCSAgICAgICoiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnICIqKSA7OwotCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQotCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlggJGRlcGVuZGVuY3lfbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICIgJGRlcGVuZGVuY3lfbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CiAJICAgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iIHx8CiAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCi0JICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkZGxwcmVvcGVuIgorCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCisJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKIAlmaQogCiAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtNTM0MiwzMCArNjQ0NSwzNiBAQAogCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgogCSAgICBmaQogCSAgICAjIEl0IGlzIGEgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5LCBzbyBhZGQgaW4gaXRzIG9iamVjdHMuCi0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgICBmdW5jX2FwcGVuZCBjb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgICB0bXBfbGlicz0KKwkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKwkJY2FzZSAiJHRtcF9saWJzICIgaW4KKwkJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworCQllc2FjCisJICAgICAgZmkKKwkgICAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCisJICAgIGRvbmUKIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKIAkgIGZpCi0JICB0bXBfbGlicz0KLQkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLQkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLQkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLQkgICAgICBlc2FjCi0JICAgIGZpCi0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLQkgIGRvbmUKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGNvbnYKIAogCiAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgogCWxpbmtsaWI9Ci0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgbGlua2xpYj0iJGwiCi0JZG9uZQorCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8CisJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKwllbHNlCisJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisJICAgIGxpbmtsaWI9IiRsIgorCSAgZG9uZQorCWZpCiAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAlmaQpAQCAtNTM4Miw5ICs2NDkxLDkgQEAKIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCiAJICBlbHNlCi0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgogCSAgZmkKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGRsb3BlbgpAQCAtNTQwNiwxNCArNjUxNSwxNCBAQAogCiAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCiAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgorCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCiAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKIAkgIGVsc2UKLQkgICAgZGlyPSIkbGliZGlyIgotCSAgICBhYnNkaXI9IiRsaWJkaXIiCisJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKIAkgIGZpCiAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcwogCWVsc2UKQEAgLTU0MjEsMTIgKzY1MzAsMTIgQEAKIAkgICAgZGlyPSIkbGFkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGVsc2UKIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBmaQogCWZpICMgJGluc3RhbGxlZCA9IHllcwogCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgpAQCAtNTQzNywyMCArNjU0Niw0NiBAQAogCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgogCSAgZmkKLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgotCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKLQkgIGVsc2UKLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKLQkgIGZpCisJICBjYXNlICIkaG9zdCIgaW4KKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAorCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgorCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCisJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKiApCisJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCisJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCisJICAgICAgZWxzZQorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisJICAgICAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCiAKIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgpAQCAtNTQ2OCw3ICs2NjAzLDcgQEAKIAogCiAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCiAJICBsaW5rYWxsZGVwbGlicz1ubwpAQCAtNTQ4MSw3ICs2NjE2LDggQEAKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgY2FzZSAkZGVwbGliIGluCiAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCQkgOzsKIAkgICAgZXNhYwogCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/CkBAIC01NDkyLDEyICs2NjI4LDEyIEBACiAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZmkKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgIGRvbmUgIyBmb3IgZGVwbGliCiAJICBjb250aW51ZQogCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgpAQCAtNTUxMiw3ICs2NjQ4LDcgQEAKIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgogCSAgICAgICoiJGFic2RpcjoiKikgOzsKLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIApAQCAtNTUyNCw3ICs2NjYwLDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTMzLDcgKzY2NjksNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTU4LDEyICs2Njk0LDEyIEBACiAJICBjYXNlICRob3N0IGluCiAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQogCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPW5vCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz15ZXMKIAkgICAgZmkKIAkgICAgOzsKQEAgLTU1ODAsNyArNjcxNiw3IEBACiAJICAgIGZpCiAJICBkb25lCiAJICBpZiB0ZXN0IC16ICIkZGxvcGVubW9kdWxlIiAmJiB0ZXN0ICIkc2hvdWxkbm90bGluayIgPSB5ZXMgJiYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgogCSAgICBlbHNlCkBAIC01NTk4LDcgKzY3MzQsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2MDcsNyArNjc0Myw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2NjEsNyArNjc5Nyw3IEBACiAJICAgIGxpbmtsaWI9JG5ld2xpYgogCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU2ODMsOSArNjgxOSw5IEBACiAJCSAgICAgIGlmIHRlc3QgIlgkZGxvcGVubW9kdWxlIiAhPSAiWCRsaWIiOyB0aGVuCiAJCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpYiAkbGlua2xpYiBpcyBhIG1vZHVsZSwgbm90IGEgc2hhcmVkIGxpYnJhcnkiCiAJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgotCQkJICAkRUNITwotCQkJICAkRUNITyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCi0JCQkgICRFQ0hPICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKKwkJCSAgZWNobworCQkJICBlY2hvICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKKwkJCSAgZWNobyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCiAJCQllbHNlCiAJCQkgIGFkZD0iJGRpci8kb2xkX2xpYnJhcnkiCiAJCQlmaQpAQCAtNTcxMiwxMiArNjg0OCwxMiBAQAogCSAgICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KIAkJYWRkPSIkZGlyLyRsaW5rbGliIgogCSAgICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCi0JCWFkZF9kaXI9Ii1MJGRpciIKKwkJYWRkX2Rpcj0iLUwkYWJzZGlyIgogCQkjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCiAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJCSAgY2FzZSAkbGliZGlyIGluCiAJCSAgICBbXFwvXSopCi0JCSAgICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgogCQkgICAgICA7OwogCQkgIGVzYWMKIAkJZmkKQEAgLTU3MzksNyArNjg3NSw3IEBACiAJICAgIGlmIHRlc3QgLW4gIiRhZGRfc2hsaWJwYXRoIjsgdGhlbgogCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3NobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJGFkZF9zaGxpYnBhdGg6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgpAQCAtNTc1MywxMyArNjg4OSwxMyBAQAogCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJCSoiOiRsaWJkaXI6IiopIDs7Ci0JCSopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCQllc2FjCiAJICAgICAgZmkKIAkgICAgZmkKIAkgIGZpCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CkBAIC01NzczLDcgKzY5MDksNyBAQAogCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgogCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgICBhZGQ9Ii1sJG5hbWUiCiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KQEAgLTU3OTAsNyArNjkyNiw3IEBACiAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJY2FzZSAkbGliZGlyIGluCiAJCSAgW1xcL10qKQotCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgogCQkgICAgOzsKIAkJZXNhYwogCSAgICAgIGZpCkBAIC01ODI1LDIxICs2OTYxLDIxIEBACiAKIAkgICAgIyBKdXN0IHByaW50IGEgd2FybmluZyBhbmQgYWRkIHRoZSBsaWJyYXJ5IHRvIGRlcGVuZGVuY3lfbGlicyBzbwogCSAgICAjIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IHRoZSBzdGF0aWMgbGlicmFyeS4KLQkgICAgJEVDSE8KKwkgICAgZWNobwogCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IFRoaXMgc3lzdGVtIGNhbiBub3QgbGluayB0byBzdGF0aWMgbGliIGFyY2hpdmUgJGxpYi4iCi0JICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCSAgICAkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCisJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCiAJICAgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKLQkgICAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCi0JICAgICAgJEVDSE8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKKwkgICAgICBlY2hvICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCisJICAgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCisJICAgICAgZWNobyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgogCSAgICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JCSRFQ0hPCi0JCSRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkJJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCi0JCSRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JCSRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkJZWNobworCQllY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkJZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkJZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgorCQllY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC01ODY3LDM3ICs3MDAzLDQ2IEBACiAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJCSAgIGNhc2UgIiAkeHJwYXRoICIgaW4KIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OwotCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7CisJCSAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICR0ZW1wX3hycGF0aCI7OwogCQkgICBlc2FjOzsKLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfZGVwbGlicyAiICRsaWJkaXIiOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF9kZXBsaWJzIgogCSAgZmkKIAotCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRhYnNkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgogCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5CiAJICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgIGNhc2UgJGRlcGxpYiBpbgorICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKKyAgICAgICAgICAgICAgKikgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiIDs7CisgICAgICAgICAgICBlc2FjCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKKyAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIGRvbmUKIAogCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCiAJICAgICMgQWRkIHRoZSBzZWFyY2ggcGF0aHMgb2YgYWxsIGRlcGVuZGVuY3kgbGlicmFyaWVzCiAJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKwkgICAgICBwYXRoPQogCSAgICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKIAkgICAgICAqLmxhKQorCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSAgICAgICAgZnVuY19kaXJuYW1lICIkZGVwbGliIiAiIiAiLiIKLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCQljYXNlICRkaXIgaW4KIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CkBAIC01OTI0LDggKzcwNjksOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKICAgICAgICAgICAgICAgICAgICAgICBmaQotCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0JCSAgICAgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgogCQkgICAgICBwYXRoPQogCQkgICAgZmkKIAkJICBmaQpAQCAtNTk1OCw3ICs3MTAzLDcgQEAKIAkgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRjb21waWxlX2RlcGxpYnMiCiAJICBmaW5hbGl6ZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGZpbmFsaXplX2RlcGxpYnMiCiAJZWxzZQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAiYCRFQ0hPICJYICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWZpCiAgICAgICBmaQogICAgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtNTk3NSw3ICs3MTIwLDcgQEAKIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJICBuZXdsaWJfc2VhcmNoX3BhdGg9CkBAIC02MDMzLDEwICs3MTc4LDEwIEBACiAJICAgIC1MKikKIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKSA7OwotCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7Ci0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgpAQCAtNjA1Miw3ICs3MTk3LDcgQEAKIAkgIDs7CiAJZXNhYwogCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgogCWZpCiAgICAgICBkb25lCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCkBAIC02MDkzLDcgKzcyMzgsNyBAQAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCi0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKICAgICAgIDs7CiAKICAgICBsaWIpCkBAIC02MTI2LDEwICs3MjcxLDEwIEBACiAJaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgogCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCiAJZWxzZQotCSAgJEVDSE8KKwkgIGVjaG8KIAkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgotCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCisJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJG9ianMiCiAJZmkKICAgICAgIGZpCiAKQEAgLTYxODgsMTMgKzczMzMsMTQgQEAKIAkgICMgd2hpY2ggaGFzIGFuIGV4dHJhIDEgYWRkZWQganVzdCBmb3IgZnVuCiAJICAjCiAJICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KKwkgICMgY29ycmVjdCBsaW51eCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCSAgZGFyd2lufGxpbnV4fG9zZnx3aW5kb3dzfG5vbmUpCiAJICAgIGZ1bmNfYXJpdGggJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IKIAkgICAgY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9yZXZpc2lvbiIKIAkgICAgOzsKLQkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxzdW5vcykKKwkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxxbnh8c3Vub3MpCiAJICAgIGN1cnJlbnQ9IiRudW1iZXJfbWFqb3IiCiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgogCSAgICBhZ2U9IjAiCkBAIC02MjA2LDYgKzczNTIsOSBAQAogCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKIAkgICAgbHRfaXJpeF9pbmNyZW1lbnQ9bm8KIAkgICAgOzsKKwkgICopCisJICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiJG1vZGVuYW1lOiB1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlIFxgJHZlcnNpb25fdHlwZSciCisJICAgIDs7CiAJICBlc2FjCiAJICA7OwogCW5vKQpAQCAtNjMwNCw3ICs3NDUzLDcgQEAKIAkgIHZlcnN1ZmZpeD0iJG1ham9yLiRyZXZpc2lvbiIKIAkgIDs7CiAKLQlsaW51eCkKKwlsaW51eCkgIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQogCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCkBAIC02MzI3LDcgKzc0NzYsNyBAQAogCSAgZG9uZQogCiAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgogCSAgOzsKIAogCXFueCkKQEAgLTYzOTUsMTAgKzc1NDQsMTAgQEAKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgotICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCiAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCi0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CiAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCiAJcmVtb3ZlbGlzdD0KQEAgLTY0MTQsNyArNzU2Myw3IEBACiAJCSAgIGNvbnRpbnVlCiAJCSBmaQogCSAgICAgICBmaQotCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgogCSAgICAgICA7OwogCSAgICAqKSA7OwogCSAgZXNhYwpAQCAtNjQyNSwyNyArNzU3NCwyOCBAQAogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAogCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLQlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KICAgICAgICNmb3IgcGF0aCBpbiAkbm90aW5zdF9wYXRoOyBkbwotICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICJYJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFhzZWQgLWUgInMlICRwYXRoICUgJWciYAotICAgICAgIwlkZXBsaWJzPWAkRUNITyAiWCRkZXBsaWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKLSAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCRkZXBlbmRlbmN5X2xpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICIkbGliX3NlYXJjaF9wYXRoICIgfCAkU0VEICJzJSAkcGF0aCAlICVnImAKKyAgICAgICMJZGVwbGlicz1gJEVDSE8gIiRkZXBsaWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICIkZGVwZW5kZW5jeV9saWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAogICAgICAgI2RvbmUKIAogICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCiAJdGVtcF94cnBhdGg9CiAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCisJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCkBAIC02NDU5LDcgKzc2MDksNyBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCiAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KIAkqIiAkbGliICIqKSA7OwotCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogCkBAIC02NDY5LDE5ICs3NjE5LDE5IEBACiAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIAogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgdGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgYyBsaWJyYXJ5IChhcyBzdWNoKSEKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICA7OwogCSAgKi0qLW5ldGJzZCopCiAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgpAQCAtNjQ5OCw3ICs3NjQ4LDcgQEAKIAkgICopCiAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCiAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCisJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKIAkgICAgZmkKIAkgICAgOzsKIAkgIGVzYWMKQEAgLTY1NDcsNyArNzY5Nyw3IEBACiAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAqIiAkaSAiKikKLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgaT0iIgogCQkgICAgOzsKIAkJICBlc2FjCkBAIC02NTU4LDIxICs3NzA4LDIxIEBACiAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICBkZXBsaWJfbWF0Y2g9JDEKIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICBlbHNlCiAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICRFQ0hPCisJCSAgICBlY2hvCiAJCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKLQkJICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCi0JCSAgICAkRUNITyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCisJCSAgICBlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCisJCSAgICBlY2hvICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgZmkKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjU5MCw3ICs3NzQwLDcgQEAKIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAgICoiICRpICIqKQotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgICBpPSIiCiAJCSAgICAgIDs7CiAJCSAgICBlc2FjCkBAIC02NjAxLDI5ICs3NzUxLDI5IEBACiAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAogCQkgICAgZGVwbGliX21hdGNoPSQxCiAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICBlbHNlCiAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwotCQkgICAgICAkRUNITworCQkgICAgICBlY2hvCiAJCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCi0JCSAgICAgICRFQ0hPICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJICAgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgIGVjaG8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKIAkJICAgIGZpCiAJCSAgZmkKIAkJZWxzZQogCQkgIGRyb3BwZWRkZXBzPXllcwotCQkgICRFQ0hPCisJCSAgZWNobwogCQkgICRFQ0hPICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCi0JCSAgJEVDSE8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKLQkJICAkRUNITyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKLQkJICAkRUNITyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKKwkJICBlY2hvICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCisJCSAgZWNobyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKKwkJICBlY2hvICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgogCQlmaQogCQk7OwogCSAgICAgICopCi0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC02NjQwLDE1ICs3NzkwLDI3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCisJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKwkJZWxzZQorCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCisJCWZpCisJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgICAkbm9jYXNlZ2xvYgorCQkgIGVsc2UKKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBmaQogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKQEAgLTY2NjUsMTMgKzc4MjcsMTMgQEAKIAkJCXBvdGxpYmxpbms9YGxzIC1sZCAkcG90bGliIHwgJHtTRUR9ICdzLy4qIC0+IC8vJ2AKIAkJCWNhc2UgJHBvdGxpYmxpbmsgaW4KIAkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSIkcG90bGlibGluayI7OwotCQkJKikgcG90bGliPWAkRUNITyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQogCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAogCQkJICRTRUQgLWUgMTBxIHwKIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJCWFfZGVwbGliPSIiCiAJCQlicmVhayAyCiAJCSAgICAgIGZpCkBAIC02NjgwLDEyICs3ODQyLDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgZmlsZSBtYWdpYyB0ZXN0KSIKIAkJZWxzZQpAQCAtNjY5Niw3ICs3ODU4LDcgQEAKIAkgICAgICA7OwogCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KQEAgLTY3MTIsNyArNzg3NCw3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwpAQCAtNjcyMyw5ICs3ODg1LDkgQEAKIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIHwgXAorCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICAgICAgYV9kZXBsaWI9IiIKIAkJICAgICAgYnJlYWsgMgogCQkgICAgZmkKQEAgLTY3MzQsMTIgKzc4OTYsMTIgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciByZWdleCBwYXR0ZXJuIHRlc3QpIgogCQllbHNlCkBAIC02NzUwLDMyICs3OTEyLDMyIEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKIAkgIG5ld2RlcGxpYnM9IiIKLQkgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCBcCi0JICAgICAgLWUgJ3MvIC1sYyQvLycgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAorCSAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncy8gLWxjJC8vOyBzLyAtW0xSXVteIF0qLy9nJ2AKIAkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkgICAgZm9yIGkgaW4gJHByZWRlcHMgJHBvc3RkZXBzIDsgZG8KIAkgICAgICAjIGNhbid0IHVzZSBYc2VkIGJlbG93LCBiZWNhdXNlICRpIG1pZ2h0IGNvbnRhaW4gJy8nCi0JICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAicywkaSwsImAKKwkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkdG1wX2RlcGxpYnMiIHwgJFNFRCAicywkaSwsImAKIAkgICAgZG9uZQogCSAgZmkKLQkgIGlmICRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bCSBdLy9nJyB8Ci0JICAgICAkR1JFUCAuID4vZGV2L251bGw7IHRoZW4KLQkgICAgJEVDSE8KKwkgIGNhc2UgJHRtcF9kZXBsaWJzIGluCisJICAqWyFcCVwgXSopCisJICAgIGVjaG8KIAkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCiAJICAgIGVsc2UKLQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgogCSAgICBmaQotCSAgICAkRUNITyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCisJICAgIGVjaG8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgogCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkgIGZpCisJICAgIDs7CisJICBlc2FjCiAJICA7OwogCWVzYWMKIAl2ZXJzdWZmaXg9JHZlcnN1ZmZpeF9zYXZlCkBAIC02Nzg3LDIzICs3OTQ5LDIzIEBACiAJY2FzZSAkaG9zdCBpbgogCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IHdpdGggdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGRyb3BwZWRkZXBzIiA9IHllczsgdGhlbgogCSAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgJEVDSE8KLQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgorCSAgICBlY2hvCisJICAgIGVjaG8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgogCSAgICAkRUNITyAiKioqIGRlcGVuZGVuY2llcyBvZiBtb2R1bGUgJGxpYm5hbWUuICBUaGVyZWZvcmUsIGxpYnRvb2wgd2lsbCBjcmVhdGUiCi0JICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyIKLQkgICAgJEVDSE8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKKwkgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCisJICAgIGVjaG8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKIAkgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkgICAgICAkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkgICAgICAkRUNITyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCSAgICAgICRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJICAgICAgZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkgICAgICBlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJICAgICAgZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCSAgICAgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCkBAIC02ODEzLDE2ICs3OTc1LDE2IEBACiAJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJICAgIGZpCiAJICBlbHNlCi0JICAgICRFQ0hPICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgotCSAgICAkRUNITyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKLQkgICAgJEVDSE8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKKwkgICAgZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKKwkgICAgZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgZWNobyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgogCiAJICAgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0gbm87IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgotCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKLQkgICAgICAkRUNITyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgotCSAgICAgICRFQ0hPICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgorCSAgICAgIGVjaG8KKwkgICAgICBlY2hvICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgorCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgorCSAgICAgIGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKKwkgICAgICBlY2hvICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC02ODM5LDkgKzgwMDEsOSBAQAogICAgICAgIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgogICAgICAgY2FzZSAkaG9zdCBpbgogCSotKi1kYXJ3aW4qKQotCSAgbmV3ZGVwbGlicz1gJEVDSE8gIlggJG5ld2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGRlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAkgIDs7CiAgICAgICBlc2FjCiAKQEAgLTY4NTQsNyArODAxNiw3IEBACiAJKikKIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNjg2NCwxMCArODAyNiwxMCBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCkBAIC02ODc5LDE1ICs4MDQxLDIyIEBACiAKICAgICAgICMgVGVzdCBhZ2Fpbiwgd2UgbWF5IGhhdmUgZGVjaWRlZCBub3QgdG8gYnVpbGQgaXQgYW55IG1vcmUKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisJIyBSZW1vdmUgJHt3bH0gaW5zdGFuY2VzIHdoZW4gbGlua2luZyB3aXRoIGxkLgorCSMgRklYTUU6IHNob3VsZCB0ZXN0IHRoZSByaWdodCBfY21kcyB2YXJpYWJsZS4KKwljYXNlICRhcmNoaXZlX2NtZHMgaW4KKwkgICpcJExEXCAqKSB3bD0gOzsKKyAgICAgICAgZXNhYwogCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiID0geWVzOyB0aGVuCiAJICAjIEhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCiAJICBoYXJkY29kZV9saWJkaXJzPQogCSAgZGVwX3JwYXRoPQogCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgogCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCiAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKIAkJZWxzZQpAQCAtNjg5NiwxOCArODA2NSwxOCBAQAogCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJICAgIDs7CiAJCSAgKikKLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQkgICAgOzsKIAkJICBlc2FjCiAJCWZpCiAJICAgICAgZWxzZQogCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCiAJICAgICAgZmkKIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBkb25lCkBAIC02OTE1LDE3ICs4MDg0LDEzIEBACiAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KLQkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKLQkgICAgZWxzZQotCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBmaQorCSAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgogCSAgZmkKIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCiAJICAgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICAgIHJwYXRoPQogCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotCSAgICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCiAJICAgIGRvbmUKIAkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCiAJICBmaQpAQCAtNjkzMyw3ICs4MDk4LDcgQEAKIAlmaQogCiAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgotCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorCXRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgogCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgogCWZpCkBAIC02OTU5LDE4ICs4MTI0LDE4IEBACiAJbGlua25hbWVzPQogCWZvciBsaW5rCiAJZG8KLQkgIGxpbmtuYW1lcz0iJGxpbmtuYW1lcyAkbGluayIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgogCWRvbmUKIAogCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCi0JdGVzdCAteiAiJHBpY19mbGFnIiAmJiBsaWJvYmpzPWAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJdGVzdCAteiAiJHBpY19mbGFnIiAmJiBsaWJvYmpzPWAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCXRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAKIAlkZWxmaWxlcz0KIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCiAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgorCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCiAJZmkKIAogCW9yaWdfZXhwb3J0X3N5bWJvbHM9CkBAIC03MDAxLDE0ICs4MTY2LDQ2IEBACiAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCiAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKIAkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCisJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbwogCSAgICAgIElGUz0iJHNhdmVfaWZzIgotCSAgICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICAgZnVuY19sZW4gIiAkY21kIgotCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0JICAgICAgaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCisJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KKwkgICAgICBjYXNlICRubV9maWxlX2xpc3Rfc3BlY34kdG9fdG9vbF9maWxlX2NtZCBpbgorCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCisJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCisJCSAgZXZhbCBjbWQ9XCIkY21kMVwiCisJCSAgZnVuY19sZW4gIiAkY21kIgorCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0CisJCSAgOzsKKwkJKikKKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubworCQkgIDs7CisJICAgICAgZXNhYworCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAorCQkgJiYgeyB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgXAorCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQorCSAgICAgIHRoZW4KIAkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JwogCQlza2lwcGVkX2V4cG9ydD1mYWxzZQorCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgorCQlmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJCXNhdmVfbGlib2Jqcz0kbGlib2JqcworCQlzYXZlX291dHB1dD0kb3V0cHV0CisJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQorCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkJbGlib2Jqcz0kbm1fZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorCQlmb3Igb2JqIGluICRzYXZlX2xpYm9ianM7IGRvCisJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJCWRvbmUgPiAiJG91dHB1dCIKKwkJZXZhbCBjbWQ9XCIkY21kMVwiCisJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKwkJb3V0cHV0PSRzYXZlX291dHB1dAorCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKKwkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKIAkgICAgICBlbHNlCiAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgogCQlmdW5jX3ZlcmJvc2UgInVzaW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUgZm9yIGV4cG9ydCBsaXN0Li4uIgpAQCAtNzAyOSw3ICs4MjI2LDcgQEAKIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCiAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKIAkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKIAlmaQogCiAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KQEAgLTcwNDEsNyArODIzOCw3IEBACiAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQogCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgogCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCiAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCWZpCkBAIC03MDUxLDcgKzgyNDgsNyBAQAogCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCiAJICAqIiAkdGVzdF9kZXBsaWIgIiopIDs7CiAJICAqKQotCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgdG1wX2RlcGxpYnMgIiAkdGVzdF9kZXBsaWIiCiAJICAgIDs7CiAJICBlc2FjCiAJZG9uZQpAQCAtNzA3MSwyMSArODI2OCwyMSBAQAogCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZWxzZQogCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgICAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGZpCiAJZmkKIAogCWlmIHRlc3QgIiR0aHJlYWRfc2FmZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJHRocmVhZF9zYWZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCiAJZmkKIAogCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZwotCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KIAlmaQogCkBAIC03MTMwLDcgKzgzMjcsOCBAQAogCSAgICBzYXZlX2xpYm9ianM9JGxpYm9ianMKIAkgIGZpCiAJICBzYXZlX291dHB1dD0kb3V0cHV0Ci0JICBvdXRwdXRfbGE9YCRFQ0hPICJYJG91dHB1dCIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKwkgIGZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisJICBvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAKIAkgICMgQ2xlYXIgdGhlIHJlbG9hZGFibGUgb2JqZWN0IGNyZWF0aW9uIGNvbW1hbmQgcXVldWUgYW5kCiAJICAjIGluaXRpYWxpemUgayB0byBvbmUuCkBAIC03MTQzLDEzICs4MzQxLDE2IEBACiAJICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lmxua3NjcmlwdAogCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIEdOVSBsZCBzY3JpcHQ6ICRvdXRwdXQiCi0JICAgICRFQ0hPICdJTlBVVCAoJyA+ICRvdXRwdXQKKwkgICAgZWNobyAnSU5QVVQgKCcgPiAkb3V0cHV0CiAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcwogCSAgICBkbwotCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKIAkgICAgZG9uZQotCSAgICAkRUNITyAnKScgPj4gJG91dHB1dAotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKIAkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCiAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgpAQCAtNzE2MywxMCArODM2NCwxMiBAQAogCSAgICBmaQogCSAgICBmb3Igb2JqCiAJICAgIGRvCi0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAogCSAgICBkb25lCi0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCisJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgogCSAgZWxzZQogCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgogCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCkBAIC03MTkwLDE3ICs4MzkzLDE5IEBACiAJCSAgIyBjb21tYW5kIHRvIHRoZSBxdWV1ZS4KIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCiAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgotCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKKwkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0CisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKIAkJICBlbHNlCiAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgogCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLQkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqflwkUk0gJGxhc3Rfcm9ialwiCisJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgogCQkgIGZpCiAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CiAJCSAgZnVuY19hcml0aCAkayArIDEKIAkJICBrPSRmdW5jX2FyaXRoX3Jlc3VsdAogCQkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCQkgIG9iamxpc3Q9JG9iagorCQkgIG9iamxpc3Q9IiAkb2JqIgogCQkgIGZ1bmNfbGVuICIgJGxhc3Rfcm9iaiIKIAkJICBmdW5jX2FyaXRoICRsZW4wICsgJGZ1bmNfbGVuX3Jlc3VsdAogCQkgIGxlbj0kZnVuY19hcml0aF9yZXN1bHQKQEAgLTcyMTAsMTEgKzg0MTUsMTIgQEAKIAkgICAgICAjIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUuICBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdAogCSAgICAgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgogCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJICAgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCiAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KIAkgICAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIKIAkgICAgICBmaQotCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCiAKIAkgICAgZWxzZQogCSAgICAgIG91dHB1dD0KQEAgLTcyNDgsNyArODQ1NCw3IEBACiAJCWx0X2V4aXQ9JD8KIAogCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAogCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKIAkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC03MjY5LDcgKzg0NzUsNyBAQAogCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCiAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCiAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0JICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCkBAIC03MjgxLDcgKzg0ODcsNyBAQAogCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CiAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgogCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgogCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCiAJICAgIGZpCkBAIC03MzIyLDEwICs4NTI4LDEwIEBACiAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotCSAgbGlib2Jqcz0iJGxpYm9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCWZpCiAKQEAgLTczNDEsNyArODU0Nyw3IEBACiAJICAgIGx0X2V4aXQ9JD8KIAogCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkgICAgaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAogCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKQEAgLTczNTMsNyArODU1OSw3IEBACiAJSUZTPSIkc2F2ZV9pZnMiCiAKIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CiAKIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KQEAgLTc0MzQsMTggKzg2NDAsMjEgQEAKICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLQkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIlgkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFhzZWQgLWUgJ3N8LHwgfGcnYAorCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAogCWVsc2UKIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCiAJICByZWxvYWRfY29udl9vYmpzPSIkcmVsb2FkX29ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJZmkKICAgICAgIGZpCiAKKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCisgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKKwogICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0gICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JCcvZCcgLWUgJy9cLmxpYiQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKyAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7IC9cLmxpYiQvZDsgJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAogCiAgICAgICBvdXRwdXQ9IiRvYmoiCiAgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJHJlbG9hZF9jbWRzIiAnZXhpdCAkPycKQEAgLTc1MDUsOCArODcxNCw4IEBACiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJIyBPbiBSaGFwc29keSByZXBsYWNlIHRoZSBDIGxpYnJhcnkgaXMgdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQljb21waWxlX2RlcGxpYnM9YCRFQ0hPICJYICRjb21waWxlX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIiAkY29tcGlsZV9kZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAk7OwogICAgICAgZXNhYwogCkBAIC03NTE3LDE0ICs4NzI2LDE0IEBACiAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgogCSAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSBpbgogCSAgICAxMC5bMDEyM10pCi0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLQkgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCiAJICAgIDs7CiAJICBlc2FjCiAJZmkKIAkjIFRpbWUgdG8gY2hhbmdlIGFsbCBvdXIgImZvby5sdGZyYW1ld29yayIgc3R1ZmYgYmFjayB0byAiLWZyYW1ld29yayBmb28iCi0JY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICJYICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIiAkY29tcGlsZV9kZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIiAkZmluYWxpemVfZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCTs7CiAgICAgICBlc2FjCiAKQEAgLTc1MzgsNyArODc0Nyw3IEBACiAJKikKIAkgIGNhc2UgIiAkY29tcGlsZV9kZXBsaWJzICIgaW4KIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC03NTQ4LDE3ICs4NzU3LDE3IEBACiAJLUwqKQogCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCiAJICAqIiAkZGVwbGliICIqKSA7OwotCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwogCSAgZXNhYwogCSAgOzsKLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgogCiAKLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgotICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGZpbmFsaXplX2RlcGxpYnMiCisgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgogCiAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgogCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KQEAgLTc1NjYsNyArODc3NSw3IEBACiAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCiAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlkb25lCiAgICAgICBmaQpAQCAtNzU4NSwxOCArODc5NCwxOCBAQAogCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJOzsKIAkgICAgICAqKQotCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgogCSAgZmkKIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKIAljYXNlICRob3N0IGluCkBAIC03NjA1LDEyICs4ODE0LDEyIEBACiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiRsaWJkaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kbGliZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7CiAJICBlc2FjCiAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC03NjM2LDE4ICs4ODQ1LDE4IEBACiAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQogCQk7OwogCSAgICAgICopCi0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZWxzZQogCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCiAJICBmaQogCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9wZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlmaQogICAgICAgZG9uZQpAQCAtNzY2MSw4ICs4ODcwLDggQEAKIAogICAgICAgaWYgdGVzdCAtbiAiJGxpYm9ianMiICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KIAkjIFRyYW5zZm9ybSBhbGwgdGhlIGxpYnJhcnkgb2JqZWN0cyBpbnRvIHN0YW5kYXJkIG9iamVjdHMuCi0JY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKLQlmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCisJZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkb3V0cHV0bmFtZSIgIkBQUk9HUkFNQCIgIm5vIgpAQCAtNzY3NCwxNSArODg4MywxNSBAQAogCiAgICAgICB3cmFwcGVyc19yZXF1aXJlZD15ZXMKICAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICpjZWdjYyogfCAqbWluZ3czMmNlKikKKyAgICAgICAgIyBEaXNhYmxlIHdyYXBwZXJzIGZvciBjZWdjYyBhbmQgbWluZ3czMmNlIGhvc3RzLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KKyAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KKyAgICAgICAgOzsKICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiApCiAgICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgogICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCiAgICAgICAgIGZpCiAgICAgICAgIDs7Ci0gICAgICAqY2VnY2MpCi0gICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MsIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgYW55d2F5LgotICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwotICAgICAgICA7OwogICAgICAgKikKICAgICAgICAgaWYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IG5vIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgogICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCkBAIC03NjkxLDEzICs4OTAwLDE5IEBACiAgICAgICBlc2FjCiAgICAgICBpZiB0ZXN0ICIkd3JhcHBlcnNfcmVxdWlyZWQiID0gbm87IHRoZW4KIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCiAJIyBXZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSByaWdodCBub3cuCiAJZXhpdF9zdGF0dXM9MAogCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCiAKKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKwlmaQorCiAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCiAJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJwpAQCAtNzcyMCw3ICs4OTM1LDcgQEAKIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICBycGF0aD0KIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgZG9uZQogCSAgY29tcGlsZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgogCWZpCkBAIC03NzI4LDcgKzg5NDMsNyBAQAogCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KIAkgIHJwYXRoPQogCSAgZm9yIGRpciBpbiAkZmluYWxpemVfcGVybV9ycGF0aDsgZG8KLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCiAJICBkb25lCiAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgogCWZpCkBAIC03NzM4LDExICs4OTUzLDE4IEBACiAJIyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0LgogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQlsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKKwlsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCiAJIyBEZWxldGUgdGhlIG9sZCBvdXRwdXQgZmlsZS4KIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCisKKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKwlmaQorCiAJZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICBmaQogCkBAIC03NzU3LDcgKzg5NzksNyBAQAogCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiICE9IG5vOyB0aGVuCiAJICBsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkY29tcGlsZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgogCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRTRUQgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKIAkgIGVsc2UKIAkgICAgIyBmYXN0X2luc3RhbGwgaXMgc2V0IHRvIG5lZWRsZXNzCiAJICAgIHJlbGlua19jb21tYW5kPQpAQCAtNzc2OSwxMyArODk5MSwxOSBAQAogICAgICAgZmkKIAogICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAorICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKIAogICAgICAgIyBEZWxldGUgdGhlIG9sZCBvdXRwdXQgZmlsZXMuCiAgICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgJG91dHB1dF9vYmpkaXIvbHQtJG91dHB1dG5hbWUKIAogICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwogCisgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiCisJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworICAgICAgZmkKKwogICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KICAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKIApAQCAtNzc5MywxOCArOTAyMSw3IEBACiAJICBmaQogCWRvbmUKIAlyZWxpbmtfY29tbWFuZD0iKGNkIGBwd2RgOyAkcmVsaW5rX2NvbW1hbmQpIgotCXJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBmaQotCi0gICAgICAjIFF1b3RlICRFQ0hPIGZvciBzaGlwcGluZy4KLSAgICAgIGlmIHRlc3QgIlgkRUNITyIgPSAiWCRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjsgdGhlbgotCWNhc2UgJHByb2dwYXRoIGluCi0JW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBxZWNobz0iJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOzsKLQkqKSBxZWNobz0iJFNIRUxMIGBwd2RgLyRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOzsKLQllc2FjCi0JcWVjaG89YCRFQ0hPICJYJHFlY2hvIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICAgIGVsc2UKLQlxZWNobz1gJEVDSE8gIlgkRUNITyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisJcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBmaQogCiAgICAgICAjIE9ubHkgYWN0dWFsbHkgZG8gdGhpbmdzIGlmIG5vdCBpbiBkcnkgcnVuIG1vZGUuCkBAIC03ODg0LDcgKzkxMDEsNyBAQAogCWVsc2UKIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgotCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKwkgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgogCSAgZmkKIAlmaQogCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCkBAIC03ODkyLDEwICs5MTA5LDEwIEBACiAKICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgogCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCWZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRhZGRsaWJzCi0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogICAgICAgZmkKIAogICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCkBAIC03OTA2LDEwICs5MTIzLDEwIEBACiAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotCSAgb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJZmkKIAogCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQpAQCAtNzkyNSw5ICs5MTQyLDkgQEAKIAkgICAgZG9uZSB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCiAJICA6CiAJZWxzZQotCSAgJEVDSE8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKKwkgIGVjaG8gImNvcHlpbmcgc2VsZWN0ZWQgb2JqZWN0IGZpbGVzIHRvIGF2b2lkIGJhc2VuYW1lIGNvbmZsaWN0cy4uLiIKIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCiAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKIAkgIG9sZG9ianM9CkBAIC03OTUxLDE4ICs5MTY4LDMwIEBACiAJCWVzYWMKIAkgICAgICBkb25lCiAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotCSAgICAgIG9sZG9ianM9IiRvbGRvYmpzICRnZW50b3AvJG5ld29iaiIKKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgogCSAgICAgIDs7Ci0JICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKKwlmdW5jX3RvX3Rvb2xfZmlsZSAiJG9sZGxpYiIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwl0b29sX29sZGxpYj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgogCiAJZnVuY19sZW4gIiAkY21kcyIKIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAogCWlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgogCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcworCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KKwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgY29tbWFuZCBmaWxlIGFyY2hpdmUgbGlua2luZy4uLiIKKwkgIGZvciBvYmogaW4gJG9sZG9ianMKKwkgIGRvCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQiCisJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCiAJZWxzZQogCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKQEAgLTgwMzYsNyArOTI2NSw3IEBACiAgICAgICBkb25lCiAgICAgICAjIFF1b3RlIHRoZSBsaW5rIGNvbW1hbmQgZm9yIHNoaXBwaW5nLgogICAgICAgcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLW1vZGU9cmVsaW5rICRsaWJ0b29sX2FyZ3MgQGluc3RfcHJlZml4X2RpckApIgotICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXMgOyB0aGVuCiAJcmVsaW5rX2NvbW1hbmQ9CiAgICAgICBmaQpAQCAtODA1NiwxMiArOTI4NSwyMyBAQAogCSAgICAgICoubGEpCiAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCiAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwotCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OworCSAgICAgIC1MKikKKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisJCTs7CisJICAgICAgLVIqKQorCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKwkJOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCkBAIC04MDc1LDkgKzkzMTUsOSBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKQEAgLTgwOTQsNyArOTMzNCw3IEBACiAJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKKwkJZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtODEwNiw3ICs5MzQ2LDcgQEAKIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CiAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKIAkgICAgICBlc2FjCi0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGFicyIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKIAkgICAgZG9uZQogCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKIAkgICAgbmV3ZGxwcmVmaWxlcz0KQEAgLTgxMTUsMTUgKzkzNTUsMzMgQEAKIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CiAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKIAkgICAgICBlc2FjCi0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGFicyIKIAkgICAgZG9uZQogCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKIAkgIGZpCiAJICAkUk0gJG91dHB1dAogCSAgIyBwbGFjZSBkbG5hbWUgaW4gY29ycmVjdCBwb3NpdGlvbiBmb3IgY3lnd2luCisJICAjIEluIGZhY3QsIGl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgdXNlIHRoaXMgY29kZSBmb3IgYWxsIHRhcmdldAorCSAgIyBzeXN0ZW1zIHRoYXQgY2FuJ3QgaGFyZC1jb2RlIGxpYnJhcnkgcGF0aHMgaW50byB0aGVpciBleGVjdXRhYmxlcworCSAgIyBhbmQgdGhhdCBoYXZlIG5vIHNoYXJlZCBsaWJyYXJ5IHBhdGggdmFyaWFibGUgaW5kZXBlbmRlbnQgb2YgUEFUSCwKKwkgICMgYnV0IGl0IHR1cm5zIG91dCB3ZSBjYW4ndCBlYXNpbHkgZGV0ZXJtaW5lIHRoYXQgZnJvbSBpbnNwZWN0aW5nCisJICAjIGxpYnRvb2wgdmFyaWFibGVzLCBzbyB3ZSBoYXZlIHRvIGhhcmQtY29kZSB0aGUgT1NzIHRvIHdoaWNoIGl0CisJICAjIGFwcGxpZXMgaGVyZTsgYXQgdGhlIG1vbWVudCwgdGhhdCBtZWFucyBwbGF0Zm9ybXMgdGhhdCB1c2UgdGhlIFBFCisJICAjIG9iamVjdCBmb3JtYXQgd2l0aCBETEwgZmlsZXMuICBTZWUgdGhlIGxvbmcgY29tbWVudCBhdCB0aGUgdG9wIG9mCisJICAjIHRlc3RzL2JpbmRpci5hdCBmb3IgZnVsbCBkZXRhaWxzLgogCSAgdGRsbmFtZT0kZGxuYW1lCiAJICBjYXNlICRob3N0LCRvdXRwdXQsJGluc3RhbGxlZCwkbW9kdWxlLCRkbG5hbWUgaW4KLQkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkgdGRsbmFtZT0uLi9iaW4vJGRsbmFtZSA7OworCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqY2VnY2MqLCpsYWkseWVzLG5vLCouZGxsKQorCSAgICAgICMgSWYgYSAtYmluZGlyIGFyZ3VtZW50IHdhcyBzdXBwbGllZCwgcGxhY2UgdGhlIGRsbCB0aGVyZS4KKwkgICAgICBpZiB0ZXN0ICJ4JGJpbmRpciIgIT0geCA7CisJICAgICAgdGhlbgorCQlmdW5jX3JlbGF0aXZlX3BhdGggIiRpbnN0YWxsX2xpYmRpciIgIiRiaW5kaXIiCisJCXRkbG5hbWU9JGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQkZGxuYW1lCisJICAgICAgZWxzZQorCQkjIE90aGVyd2lzZSBmYWxsIGJhY2sgb24gaGV1cmlzdGljLgorCQl0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lCisJICAgICAgZmkKKwkgICAgICA7OwogCSAgZXNhYwogCSAgJEVDSE8gPiAkb3V0cHV0ICJcCiAjICRvdXRwdXRuYW1lIC0gYSBsaWJ0b29sIGxpYnJhcnkgZmlsZQpAQCAtODE4Miw3ICs5NDQwLDcgQEAKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKIH0KIAoteyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgoreyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCiAgICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9CiAKIApAQCAtODIwMiw5ICs5NDYwLDkgQEAKICAgICBmb3IgYXJnCiAgICAgZG8KICAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgLWYpIFJNPSIkUk0gJGFyZyI7IHJtZm9yY2U9eWVzIDs7Ci0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OwotICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OworICAgICAgLWYpIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyI7IHJtZm9yY2U9eWVzIDs7CisgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OworICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OwogICAgICAgZXNhYwogICAgIGRvbmUKIApAQCAtODIxMywyNCArOTQ3MSwyMyBAQAogCiAgICAgcm1kaXJzPQogCi0gICAgb3JpZ29iamRpcj0iJG9iamRpciIKICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCiAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKICAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgotCW9iamRpcj0iJG9yaWdvYmpkaXIiCisJb2Rpcj0iJG9iamRpciIKICAgICAgIGVsc2UKLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCisJb2Rpcj0iJGRpci8kb2JqZGlyIgogICAgICAgZmkKICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgogICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKIAotICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KKyAgICAgICMgUmVtZW1iZXIgb2RpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCisgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KIAljYXNlICIgJHJtZGlycyAiIGluCi0JICAqIiAkb2JqZGlyICIqKSA7OwotCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7CisJICAqIiAkb2RpciAiKikgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHJtZGlycyAiICRvZGlyIiA7OwogCWVzYWMKICAgICAgIGZpCiAKQEAgLTgyNTYsMTggKzk1MTMsMTcgQEAKIAogCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KIAkgIGZvciBuIGluICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCiAJICBkb25lCi0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgogCi0JICBjYXNlICIkbW9kZSIgaW4KKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KIAkgIGNsZWFuKQotCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCisJICAgIGNhc2UgIiAkbGlicmFyeV9uYW1lcyAiIGluCiAJICAgICoiICRkbG5hbWUgIiopIDs7Ci0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKKwkgICAgKikgdGVzdCAtbiAiJGRsbmFtZSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUiIDs7CiAJICAgIGVzYWMKLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfWkiCiAJICAgIDs7CiAJICB1bmluc3RhbGwpCiAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgpAQCAtODI5NSwxOSArOTU1MSwxOSBAQAogCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCiAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKIAkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgogCSAgZmkKIAogCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgogCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgogCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kbm9uX3BpY19vYmplY3QiCiAJICBmaQogCWZpCiAJOzsKIAogICAgICAgKikKLQlpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbiA7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCiAJICBub2V4ZW5hbWU9JG5hbWUKIAkgIGNhc2UgJGZpbGUgaW4KIAkgICouZXhlKQpAQCAtODMxNyw3ICs5NTczLDcgQEAKIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgICAgIyAkZmlsZSB3aXRoIC5leGUgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCB0byBybWZpbGVzLAogCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZmlsZSIKIAkgICAgOzsKIAkgIGVzYWMKIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgpAQCAtODMyNiw3ICs5NTgyLDcgQEAKIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKIAkgICAgICByZWxpbmtfY29tbWFuZD0KIAkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKIAkgICAgZWxzZQogCSAgICAgIHJlbGlua19jb21tYW5kPQogCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQpAQCAtODMzNCwxMiArOTU5MCwxMiBAQAogCiAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CiAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9Uy4ke29iamV4dH0iCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCiAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSRuYW1lIgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKIAkgICAgZmkKIAkgICAgaWYgdGVzdCAiWCRub2V4ZW5hbWUiICE9ICJYJG5hbWUiIDsgdGhlbgotCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgogCSAgICBmaQogCSAgZmkKIAlmaQpAQCAtODM0Nyw3ICs5NjAzLDYgQEAKICAgICAgIGVzYWMKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJwogICAgIGRvbmUKLSAgICBvYmpkaXI9IiRvcmlnb2JqZGlyIgogCiAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCiAgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbwpAQCAtODM1OSwxNiArOTYxNCwxNiBAQAogICAgIGV4aXQgJGV4aXRfc3RhdHVzCiB9CiAKLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCit7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCiAgICAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KIAotdGVzdCAteiAiJG1vZGUiICYmIHsKK3Rlc3QgLXogIiRvcHRfbW9kZSIgJiYgewogICBoZWxwPSIkZ2VuZXJpY19oZWxwIgogICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgogfQogCiB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKLSAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIgorICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgogCiBpZiB0ZXN0IC1uICIkZXhlY19jbWQiOyB0aGVuCiAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9hc21jZmkubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2FzbWNmaS5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmY3M2EwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9hc21jZmkubTQKQEAgLTAsMCArMSwxMyBAQAorQUNfREVGVU4oW0dDQ19BU19DRklfUFNFVURPX09QXSwKK1tBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIC5jZmkgcHNldWRvLW9wIHN1cHBvcnRdLAorICAgIGdjY19jdl9hc19jZmlfcHNldWRvX29wLCBbCisgICAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9dW5rbm93bgorICAgIEFDX1RSWV9DT01QSUxFKFthc20gKCIuY2ZpX3N0YXJ0cHJvY1xuXHQuY2ZpX2VuZHByb2MiKTtdLCwKKwkJICAgW2djY19jdl9hc19jZmlfcHNldWRvX29wPXllc10sCisJCSAgIFtnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD1ub10pCisgXSkKKyBpZiB0ZXN0ICJ4JGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9BU19DRklfUFNFVURPX09QLCAxLAorCSAgICAgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLmNmaV8qIGRpcmVjdGl2ZXMuXSkKKyBmaQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfYXBwZW5kX2ZsYWcubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2FwcGVuZF9mbGFnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMzhiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2FwcGVuZF9mbGFnLm00CkBAIC0wLDAgKzEsNjkgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfYXBwZW5kX2ZsYWcuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9BUFBFTkRfRkxBRyhGTEFHLCBbRkxBR1MtVkFSSUFCTEVdKQorIworIyBERVNDUklQVElPTgorIworIyAgIEZMQUcgaXMgYXBwZW5kZWQgdG8gdGhlIEZMQUdTLVZBUklBQkxFIHNoZWxsIHZhcmlhYmxlLCB3aXRoIGEgc3BhY2UKKyMgICBhZGRlZCBpbiBiZXR3ZWVuLgorIworIyAgIElmIEZMQUdTLVZBUklBQkxFIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IGxhbmd1YWdlJ3MgZmxhZ3MgKGUuZy4KKyMgICBDRkxBR1MpIGlzIHVzZWQuICBGTEFHUy1WQVJJQUJMRSBpcyBub3QgY2hhbmdlZCBpZiBpdCBhbHJlYWR5IGNvbnRhaW5zCisjICAgRkxBRy4gIElmIEZMQUdTLVZBUklBQkxFIGlzIHVuc2V0IGluIHRoZSBzaGVsbCwgaXQgaXMgc2V0IHRvIGV4YWN0bHkKKyMgICBGTEFHLgorIworIyAgIE5PVEU6IEltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEFYX0NGTEFHU19HQ0NfT1BUSU9OLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDExIE1hYXJ0ZW4gQm9zbWFucyA8bWtib3NtYW5zQGdtYWlsLmNvbT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMgorCitBQ19ERUZVTihbQVhfQVBQRU5EX0ZMQUddLAorW0FDX1BSRVJFUSgyLjU5KWRubCBmb3IgX0FDX0xBTkdfUFJFRklYCitBU19WQVJfUFVTSERFRihbRkxBR1NdLCBbbTRfZGVmYXVsdCgkMixfQUNfTEFOR19QUkVGSVhbRkxBR1NdKV0pZG5sCitBU19WQVJfU0VUX0lGKEZMQUdTLAorICBbY2FzZSAiIEFTX1ZBUl9HRVQoRkxBR1MpICIgaW4KKyAgICAqIiAkMSAiKikKKyAgICAgIEFDX1JVTl9MT0coWzogRkxBR1MgYWxyZWFkeSBjb250YWlucyAkMV0pCisgICAgICA7OworICAgICopCisgICAgICBBQ19SVU5fTE9HKFs6IEZMQUdTPSIkRkxBR1MgJDEiXSkKKyAgICAgIEFTX1ZBUl9TRVQoRkxBR1MsIFsiQVNfVkFSX0dFVChGTEFHUykgJDEiXSkKKyAgICAgIDs7CisgICBlc2FjXSwKKyAgW0FTX1ZBUl9TRVQoRkxBR1MsWyIkMSJdKV0pCitBU19WQVJfUE9QREVGKFtGTEFHU10pZG5sCitdKWRubCBBWF9BUFBFTkRfRkxBRwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jY19tYXhvcHQubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NjX21heG9wdC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTc1MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jY19tYXhvcHQubTQKQEAgLTAsMCArMSwxODAgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NjX21heG9wdC5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NDX01BWE9QVAorIworIyBERVNDUklQVElPTgorIworIyAgIFRyeSB0byB0dXJuIG9uICJnb29kIiBDIG9wdGltaXphdGlvbiBmbGFncyBmb3IgdmFyaW91cyBjb21waWxlcnMgYW5kCisjICAgYXJjaGl0ZWN0dXJlcywgZm9yIHNvbWUgZGVmaW5pdGlvbiBvZiAiZ29vZCIuIChJbiBvdXIgY2FzZSwgZ29vZCBmb3IKKyMgICBGRlRXIGFuZCBob3BlZnVsbHkgZm9yIG90aGVyIHNjaWVudGlmaWMgY29kZXMuIE1vZGlmeSBhcyBuZWVkZWQuKQorIworIyAgIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aGUgZmxhZ3MgYnkgc2V0dGluZyB0aGUgQ0ZMQUdTIGVudmlyb25tZW50CisjICAgdmFyaWFibGUuIFRoZSB1c2VyIGNhbiBhbHNvIHNwZWNpZnkgLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5IGluIG9yZGVyIHRvCisjICAgZGlzYWJsZSBhbnkgb3B0aW1pemF0aW9uIGZsYWdzIHRoYXQgbWlnaHQgcmVzdWx0IGluIGEgYmluYXJ5IHRoYXQgb25seQorIyAgIHJ1bnMgb24gdGhlIGhvc3QgYXJjaGl0ZWN0dXJlLgorIworIyAgIE5vdGUgYWxzbyB0aGF0IHRoZSBmbGFncyBhc3N1bWUgdGhhdCBBTlNJIEMgYWxpYXNpbmcgcnVsZXMgYXJlIGZvbGxvd2VkCisjICAgYnkgdGhlIGNvZGUgKGUuZy4gZm9yIGdjYydzIC1mc3RyaWN0LWFsaWFzaW5nKSwgYW5kIHRoYXQgZmxvYXRpbmctcG9pbnQKKyMgICBjb21wdXRhdGlvbnMgY2FuIGJlIHJlLW9yZGVyZWQgYXMgbmVlZGVkLgorIworIyAgIFJlcXVpcmVzIG1hY3JvczogQVhfQ0hFQ0tfQ09NUElMRV9GTEFHLCBBWF9DT01QSUxFUl9WRU5ET1IsCisjICAgQVhfR0NDX0FSQ0hGTEFHLCBBWF9HQ0NfWDg2X0NQVUlELgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDEyCisKK0FDX0RFRlVOKFtBWF9DQ19NQVhPUFRdLAorWworQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19SRVFVSVJFKFtBWF9DT01QSUxFUl9WRU5ET1JdKQorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorCitBQ19BUkdfRU5BQkxFKHBvcnRhYmxlLWJpbmFyeSwgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb3J0YWJsZS1iaW5hcnldLCBbZGlzYWJsZSBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgd291bGQgcHJvZHVjZSB1bnBvcnRhYmxlIGJpbmFyaWVzXSldLAorCWFjeF9tYXhvcHRfcG9ydGFibGU9JHdpdGh2YWwsIGFjeF9tYXhvcHRfcG9ydGFibGU9bm8pCisKKyMgVHJ5IHRvIGRldGVybWluZSAiZ29vZCIgbmF0aXZlIGNvbXBpbGVyIGZsYWdzIGlmIG5vbmUgc3BlY2lmaWVkIHZpYSBDRkxBR1MKK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgIT0gInNldCI7IHRoZW4KKyAgQ0ZMQUdTPSIiCisgIGNhc2UgJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIGluCisgICAgZGVjKSBDRkxBR1M9Ii1uZXdjIC13MCAtTzUgLWFuc2lfYWxpYXMgLWFuc2lfYXJncyAtZnBfcmVvcmRlciAtdHVuZSBob3N0IgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtYXJjaCBob3N0IgorICAgICAgICAgZmk7OworCisgICAgc3VuKSBDRkxBR1M9Ii1uYXRpdmUgLWZhc3QgLXhPNSAtZGFsaWduIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyAteGFyY2g9Z2VuZXJpYyIKKyAgICAgICAgIGZpOzsKKworICAgIGhwKSAgQ0ZMQUdTPSIrT2FsbCArT3B0cnNfYW5zaSArRFNuYXRpdmUiCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuCisJICAgQ0ZMQUdTPSIkQ0ZMQUdTICtEQXBvcnRhYmxlIgorCSBmaTs7CisKKyAgICBpYm0pIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKyAgICAgICAgICAgeGxjX29wdD0iLXFhcmNoPWF1dG8gLXF0dW5lPWF1dG8iCisJIGVsc2UKKyAgICAgICAgICAgeGxjX29wdD0iLXF0dW5lPWF1dG8iCisJIGZpCisgICAgICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoJHhsY19vcHQsCisJCUNGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13ICR4bGNfb3B0IiwKKyAgICAgICAgICAgICAgIFtDRkxBR1M9Ii1PMyAtcWFuc2lhbGlhcyAtdyIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgWW91IHNlZW0gdG8gaGF2ZSB0aGUgSUJNICBDIGNvbXBpbGVyLiAgSXQgaXMgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHJlY29tbWVuZGVkIGZvciBiZXN0IHBlcmZvcm1hbmNlIHRoYXQgeW91IHVzZTogICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICBDRkxBR1M9LU8zIC1xYXJjaD14eHggLXF0dW5lPXh4eCAtcWFuc2lhbGlhcyAtdyAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgXl5eICAgICAgICBeXl4gICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICB3aGVyZSB4eHggaXMgcHdyMiwgcHdyMywgNjA0LCBvciB3aGF0ZXZlciBraW5kIG9mICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgQ1BVIHlvdSBoYXZlLiAgKFNldCB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhci4gICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIGFuZCByZS1ydW4gY29uZmlndXJlLikgIEZvciBtb3JlIGluZm8sIG1hbiBjYy4gICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiXSkKKyAgICAgICAgIDs7CisKKyAgICBpbnRlbCkgQ0ZMQUdTPSItTzMgLWFuc2lfYWxpYXMiCisJaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorCSAgaWNjX2FyY2hmbGFnPXVua25vd24KKwkgIGljY19mbGFncz0iIgorCSAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgaTY4Nip8eDg2XzY0KikKKyAgICAgICAgICAgICAgIyBpY2MgYWNjZXB0cyBnY2MgYXNzZW1ibHkgc3ludGF4LCBzbyB0aGVzZSBzaG91bGQgd29yazoKKwkgICAgICBBWF9HQ0NfWDg2X0NQVUlEKDApCisgICAgICAgICAgICAgIEFYX0dDQ19YODZfQ1BVSUQoMSkKKwkgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4gIyBzZWUgQVhfR0NDX0FSQ0hGTEFHCisgICAgICAgICAgICAgICAgKjo3NTZlNjU0NzoqOiopICMgSW50ZWwKKyAgICAgICAgICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorICAgICAgICAgICAgICAgICAgICAqNmE/OipbWzIzNF1dOio6KnwqNltbNzg5Yl1dPzoqOio6KikgaWNjX2ZsYWdzPSIteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmYzW1szNDddXToqOio6KnwqZjRbMTM0N106KjoqOiopIGljY19mbGFncz0iLXhQIC14TiAteFcgLXhLIjs7CisgICAgICAgICAgICAgICAgICAgICpmPz86KjoqOiopIGljY19mbGFncz0iLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICBpZiB0ZXN0ICJ4JGljY19mbGFncyIgIT0geDsgdGhlbgorICAgICAgICAgICAgZm9yIGZsYWcgaW4gJGljY19mbGFnczsgZG8KKyAgICAgICAgICAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCRmbGFnLCBbaWNjX2FyY2hmbGFnPSRmbGFnOyBicmVha10pCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBpY2MgYXJjaGl0ZWN0dXJlIGZsYWddKQorCSAgQUNfTVNHX1JFU1VMVCgkaWNjX2FyY2hmbGFnKQorICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2FyY2hmbGFnIiAhPSB4dW5rbm93bjsgdGhlbgorICAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRpY2NfYXJjaGZsYWciCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKwk7OworCisgICAgZ251KQorICAgICAjIGRlZmF1bHQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBnY2Mgb24gYWxsIHN5c3RlbXMKKyAgICAgQ0ZMQUdTPSItTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKKyAgICAgIyAtbWFsaWduLWRvdWJsZSBmb3IgeDg2IHN5c3RlbXMKKyAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKC1tYWxpZ24tZG91YmxlLCBDRkxBR1M9IiRDRkxBR1MgLW1hbGlnbi1kb3VibGUiKQorCisgICAgICMgIC1mc3RyaWN0LWFsaWFzaW5nIGZvciBnY2MtMi45NSsKKyAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKC1mc3RyaWN0LWFsaWFzaW5nLAorCUNGTEFHUz0iJENGTEFHUyAtZnN0cmljdC1hbGlhc2luZyIpCisKKyAgICAgIyBub3RlIHRoYXQgd2UgZW5hYmxlICJ1bnNhZmUiIGZwIG9wdGltaXphdGlvbiB3aXRoIG90aGVyIGNvbXBpbGVycywgdG9vCisgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygtZmZhc3QtbWF0aCwgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZmFzdC1tYXRoIikKKworICAgICBBWF9HQ0NfQVJDSEZMQUcoJGFjeF9tYXhvcHRfcG9ydGFibGUpCisgICAgIDs7CisgIGVzYWMKKworICBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgorCWVjaG8gIiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBEb24ndCBrbm93IHRoZSBiZXN0IENGTEFHUyBmb3IgdGhpcyBzeXN0ZW0gICoiCisgICAgICAgIGVjaG8gIiogVXNlIC4vY29uZmlndXJlIENGTEFHUz0uLi4gdG8gc3BlY2lmeSB5b3VyIG93biBmbGFncyAqIgorCWVjaG8gIiogKG90aGVyd2lzZSwgYSBkZWZhdWx0IG9mIENGTEFHUz0tTzMgd2lsbCBiZSB1c2VkKSAgICAqIgorCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorCWVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSItTzMiCisgIGZpCisKKyAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKCRDRkxBR1MsIFtdLCBbCisJZWNobyAiIgorICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBUaGUgZ3Vlc3NlZCBDRkxBR1MgZG9uJ3Qgc2VlbSB0byB3b3JrIHdpdGggICoiCisgICAgICAgIGVjaG8gIiogeW91ciBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSIiCisgIF0pCisKK2ZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NmbGFnc193YXJuX2FsbC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjJlMzdmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTQKQEAgLTAsMCArMSwxMjEgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NmbGFnc193YXJuX2FsbC5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NGTEFHU19XQVJOX0FMTCAgIFsoc2hlbGx2YXIgWyxkZWZhdWx0LCBbQS9OQV1dKV0KKyMgICBBWF9DWFhGTEFHU19XQVJOX0FMTCBbKHNoZWxsdmFyIFssZGVmYXVsdCwgW0EvTkFdXSldCisjICAgQVhfRkNGTEFHU19XQVJOX0FMTCAgWyhzaGVsbHZhciBbLGRlZmF1bHQsIFtBL05BXV0pXQorIworIyBERVNDUklQVElPTgorIworIyAgIFRyeSB0byBmaW5kIGEgY29tcGlsZXIgb3B0aW9uIHRoYXQgZW5hYmxlcyBtb3N0IHJlYXNvbmFibGUgd2FybmluZ3MuCisjCisjICAgRm9yIHRoZSBHTlUgY29tcGlsZXIgaXQgd2lsbCBiZSAtV2FsbCAoYW5kIC1hbnNpIC1wZWRhbnRpYykgVGhlIHJlc3VsdAorIyAgIGlzIGFkZGVkIHRvIHRoZSBzaGVsbHZhciBiZWluZyBDRkxBR1MsIENYWEZMQUdTLCBvciBGQ0ZMQUdTIGJ5IGRlZmF1bHQuCisjCisjICAgQ3VycmVudGx5IHRoaXMgbWFjcm8ga25vd3MgYWJvdXQgdGhlIEdDQywgU29sYXJpcywgRGlnaXRhbCBVbml4LCBBSVgsCisjICAgSFAtVVgsIElSSVgsIE5FQyBTWC01IChTdXBlci1VWCAxMCksIENyYXkgSjkwIChVbmljb3MgMTAuMC4wLjgpLCBhbmQKKyMgICBJbnRlbCBjb21waWxlcnMuICBGb3IgYSBnaXZlbiBjb21waWxlciwgdGhlIEZvcnRyYW4gZmxhZ3MgYXJlIG11Y2ggbW9yZQorIyAgIGV4cGVyaW1lbnRhbCB0aGFuIHRoZWlyIEMgZXF1aXZhbGVudHMuCisjCisjICAgIC0gJDEgc2hlbGwtdmFyaWFibGUtdG8tYWRkLXRvIDogQ0ZMQUdTLCBDWFhGTEFHUywgb3IgRkNGTEFHUworIyAgICAtICQyIGFkZC12YWx1ZS1pZi1ub3QtZm91bmQgOiBub3RoaW5nCisjICAgIC0gJDMgYWN0aW9uLWlmLWZvdW5kIDogYWRkIHZhbHVlIHRvIHNoZWxsdmFyaWFibGUKKyMgICAgLSAkNCBhY3Rpb24taWYtbm90LWZvdW5kIDogbm90aGluZworIworIyAgIE5PVEU6IFRoZXNlIG1hY3JvcyBkZXBlbmQgb24gQVhfQVBQRU5EX0ZMQUcuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMTAgUmh5cyBVbGVyaWNoIDxyaHlzLnVsZXJpY2hAZ21haWwuY29tPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMworCitBQ19ERUZVTihbQVhfRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FTX1ZBUl9QVVNIREVGKFtGTEFHU10sW19BQ19MQU5HX1BSRUZJWFtdRkxBR1NdKWRubAorQVNfVkFSX1BVU0hERUYoW1ZBUl0sW2FjX2N2X1tdX0FDX0xBTkdfQUJCUkVWW11mbGFnc193YXJuX2FsbF0pZG5sCitBQ19DQUNIRV9DSEVDSyhbbTRfaWZ2YWwoJDEsJDEsRkxBR1MpIGZvciBtYXhpbXVtIHdhcm5pbmdzXSwKK1ZBUixbVkFSPSJubywgdW5rbm93biIKK2FjX3NhdmVfW11GTEFHUz0iJFtdRkxBR1MiCitmb3IgYWNfYXJnIGRubAoraW4gIi13YXJuIGFsbCAgJSAtd2FybiBhbGwiICAgZG5sIEludGVsCisgICAiLXBlZGFudGljICAlIC1XYWxsIiAgICAgICBkbmwgR0NDCisgICAiLXhzdHJjb25zdCAlIC12IiAgICAgICAgICBkbmwgU29sYXJpcyBDCisgICAiLXN0ZDEgICAgICAlIC12ZXJib3NlIC13MCAtd2FybnByb3RvcyIgZG5sIERpZ2l0YWwgVW5peAorICAgIi1xbGFuZ2x2bD1hbnNpICUgLXFzcmNtc2cgLXFpbmZvPWFsbDpub3BwdDpub3BwYzpub29iczpub2NuZCIgZG5sIEFJWAorICAgIi1hbnNpIC1hbnNpRSAlIC1mdWxsd2FybiIgZG5sIElSSVgKKyAgICIrRVNsaXQgICAgICUgK3cxIiAgICAgICAgIGRubCBIUC1VWCBDCisgICAiLVhjICAgICAgICAlIC1wdmN0bFssXWZ1bGxtc2ciIGRubCBORUMgU1gtNSAoU3VwZXItVVggMTApCisgICAiLWggY29uZm9ybSAlIC1oIG1zZ2xldmVsIDIiIGRubCBDcmF5IEMgKFVuaWNvcykKKyAgICMKK2RvIEZMQUdTPSIkYWNfc2F2ZV9bXUZMQUdTICJgZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLCUlLiosLCcgLWUgJ3MsJSwsJ2AKKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAorICAgICAgICAgICAgICAgICAgICAgW1ZBUj1gZWNobyAkYWNfYXJnIHwgc2VkIC1lICdzLC4qJSAqLCwnYCA7IGJyZWFrXSkKK2RvbmUKK0ZMQUdTPSIkYWNfc2F2ZV9bXUZMQUdTIgorXSkKK0FTX1ZBUl9QT1BERUYoW0ZMQUdTXSlkbmwKK2Nhc2UgIi4kVkFSIiBpbgorICAgICAub2t8Lm9rLCopIG00X2lmdmFsbigkMywkMykgOzsKKyAgIC58Lm5vfC5ubywqKSBtNF9kZWZhdWx0KCQ0LFttNF9pZnZhbCgkMixbQVhfQVBQRU5EX0ZMQUcoWyQyXSwgWyQxXSldKV0pIDs7CisgICAqKSBtNF9kZWZhdWx0KCQzLFtBWF9BUFBFTkRfRkxBRyhbJFZBUl0sIFskMV0pXSkgOzsKK2VzYWMKK0FTX1ZBUl9QT1BERUYoW1ZBUl0pZG5sCitdKWRubCBBWF9GTEFHU19XQVJOX0FMTAorZG5sICBpbXBsZW1lbnRhdGlvbiB0YWN0aWNzOgorZG5sICAgdGhlIGZvci1hcmd1bWVudCBjb250YWlucyBhIGxpc3Qgb2Ygb3B0aW9ucy4gVGhlIGZpcnN0IHBhcnQgb2YKK2RubCAgIHRoZXNlIGRvZXMgb25seSBleGlzdCB0byBkZXRlY3QgdGhlIGNvbXBpbGVyIC0gdXN1YWxseSBpdCBpcworZG5sICAgYSBnbG9iYWwgb3B0aW9uIHRvIGVuYWJsZSAtYW5zaSBvciAtZXh0cmF3YXJuaW5ncy4gQWxsIG90aGVyCitkbmwgICBjb21waWxlcnMgd2lsbCBmYWlsIGFib3V0IGl0LiBUaGF0IHdhcyBuZWVkZWQgc2luY2UgYSBsb3Qgb2YKK2RubCAgIGNvbXBpbGVycyB3aWxsIGdpdmUgZmFsc2UgcG9zaXRpdmVzIGZvciBzb21lIG9wdGlvbi1zeW50YXgKK2RubCAgIGxpa2UgLVdvcHRpb24gb3IgLVhvcHRpb24gYXMgdGhleSB0aGluayBvZiBpdCBpcyBhIHBhc3MtdGhyb3VnaAorZG5sICAgdG8gbGF0ZXIgY29tcGlsZSBzdGFnZXMgb3Igc29tZXRoaW5nLiBUaGUgIiUiIGlzIHVzZWQgYXMgYQorZG5sICAgZGVsaW1pdGVyLiBBIG5vbi1vcHRpb24gY29tbWVudCBjYW4gYmUgZ2l2ZW4gYWZ0ZXIgIiUlIiBtYXJrcworZG5sICAgd2hpY2ggd2lsbCBiZSBzaG93biBidXQgbm90IGFkZGVkIHRvIHRoZSByZXNwZWN0aXZlIEMvQ1hYRkxBR1MuCisKK0FDX0RFRlVOKFtBWF9DRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FDX0xBTkdfUFVTSChbQ10pCitBWF9GTEFHU19XQVJOX0FMTChbJDFdLCBbJDJdLCBbJDNdLCBbJDRdKQorQUNfTEFOR19QT1AoW0NdKQorXSkKKworQUNfREVGVU4oW0FYX0NYWEZMQUdTX1dBUk5fQUxMXSxbZG5sCitBQ19MQU5HX1BVU0goW0MrK10pCitBWF9GTEFHU19XQVJOX0FMTChbJDFdLCBbJDJdLCBbJDNdLCBbJDRdKQorQUNfTEFOR19QT1AoW0MrK10pCitdKQorCitBQ19ERUZVTihbQVhfRkNGTEFHU19XQVJOX0FMTF0sW2RubAorQUNfTEFOR19QVVNIKFtGb3J0cmFuXSkKK0FYX0ZMQUdTX1dBUk5fQUxMKFskMV0sIFskMl0sIFskM10sIFskNF0pCitBQ19MQU5HX1BPUChbRm9ydHJhbl0pCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2E4ZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKQEAgLTAsMCArMSw3MiBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9jaGVja19jb21waWxlX2ZsYWcuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoRkxBRywgW0FDVElPTi1TVUNDRVNTXSwgW0FDVElPTi1GQUlMVVJFXSwgW0VYVFJBLUZMQUdTXSkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBGTEFHIHdvcmtzIHdpdGggdGhlIGN1cnJlbnQgbGFuZ3VhZ2UncyBjb21waWxlcgorIyAgIG9yIGdpdmVzIGFuIGVycm9yLiAgKFdhcm5pbmdzLCBob3dldmVyLCBhcmUgaWdub3JlZCkKKyMKKyMgICBBQ1RJT04tU1VDQ0VTUy9BQ1RJT04tRkFJTFVSRSBhcmUgc2hlbGwgY29tbWFuZHMgdG8gZXhlY3V0ZSBvbgorIyAgIHN1Y2Nlc3MvZmFpbHVyZS4KKyMKKyMgICBJZiBFWFRSQS1GTEFHUyBpcyBkZWZpbmVkLCBpdCBpcyBhZGRlZCB0byB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGRlZmF1bHQKKyMgICBmbGFncyAoZS5nLiBDRkxBR1MpIHdoZW4gdGhlIGNoZWNrIGlzIGRvbmUuICBUaGUgY2hlY2sgaXMgdGh1cyBtYWRlIHdpdGgKKyMgICB0aGUgZmxhZ3M6ICJDRkxBR1MgRVhUUkEtRkxBR1MgRkxBRyIuICBUaGlzIGNhbiBmb3IgZXhhbXBsZSBiZSB1c2VkIHRvCisjICAgZm9yY2UgdGhlIGNvbXBpbGVyIHRvIGlzc3VlIGFuIGVycm9yIHdoZW4gYSBiYWQgZmxhZyBpcyBnaXZlbi4KKyMKKyMgICBOT1RFOiBJbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBBWF9DRkxBR1NfR0NDX09QVElPTi4gUGxlYXNlIGtlZXAgdGhpcworIyAgIG1hY3JvIGluIHN5bmMgd2l0aCBBWF9DSEVDS197UFJFUFJPQyxMSU5LfV9GTEFHLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDExIE1hYXJ0ZW4gQm9zbWFucyA8bWtib3NtYW5zQGdtYWlsLmNvbT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMgorCitBQ19ERUZVTihbQVhfQ0hFQ0tfQ09NUElMRV9GTEFHXSwKK1tBQ19QUkVSRVEoMi41OSlkbmwgZm9yIF9BQ19MQU5HX1BSRUZJWAorQVNfVkFSX1BVU0hERUYoW0NBQ0hFVkFSXSxbYXhfY3ZfY2hlY2tfW11fQUNfTEFOR19BQkJSRVZbXWZsYWdzXyQ0XyQxXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIF9BQ19MQU5HIGNvbXBpbGVyIGFjY2VwdHMgJDFdLCBDQUNIRVZBUiwgWworICBheF9jaGVja19zYXZlX2ZsYWdzPSRbXV9BQ19MQU5HX1BSRUZJWFtdRkxBR1MKKyAgX0FDX0xBTkdfUFJFRklYW11GTEFHUz0iJFtdX0FDX0xBTkdfUFJFRklYW11GTEFHUyAkNCAkMSIKKyAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgpXSwKKyAgICBbQVNfVkFSX1NFVChDQUNIRVZBUixbeWVzXSldLAorICAgIFtBU19WQVJfU0VUKENBQ0hFVkFSLFtub10pXSkKKyAgX0FDX0xBTkdfUFJFRklYW11GTEFHUz0kYXhfY2hlY2tfc2F2ZV9mbGFnc10pCitBU19JRihbdGVzdCB4IkFTX1ZBUl9HRVQoQ0FDSEVWQVIpIiA9IHh5ZXNdLAorICBbbTRfZGVmYXVsdChbJDJdLCA6KV0sCisgIFttNF9kZWZhdWx0KFskM10sIDopXSkKK0FTX1ZBUl9QT1BERUYoW0NBQ0hFVkFSXSlkbmwKK10pZG5sIEFYX0NIRUNLX0NPTVBJTEVfRkxBR1MKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb21waWxlcl92ZW5kb3IubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNlMzJlYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29tcGlsZXJfdmVuZG9yLm00CkBAIC0wLDAgKzEsODQgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NvbXBpbGVyX3ZlbmRvci5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NPTVBJTEVSX1ZFTkRPUgorIworIyBERVNDUklQVElPTgorIworIyAgIERldGVybWluZSB0aGUgdmVuZG9yIG9mIHRoZSBDL0MrKyBjb21waWxlciwgZS5nLiwgZ251LCBpbnRlbCwgaWJtLCBzdW4sCisjICAgaHAsIGJvcmxhbmQsIGNvbWVhdSwgZGVjLCBjcmF5LCBrYWksIGxjYywgbWV0cm93ZXJrcywgc2dpLCBtaWNyb3NvZnQsCisjICAgd2F0Y29tLCBldGMuIFRoZSB2ZW5kb3IgaXMgcmV0dXJuZWQgaW4gdGhlIGNhY2hlIHZhcmlhYmxlCisjICAgJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIGZvciBDIGFuZCAkYXhfY3ZfY3h4X2NvbXBpbGVyX3ZlbmRvciBmb3IgQysrLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDExCisKK0FDX0RFRlVOKFtBWF9DT01QSUxFUl9WRU5ET1JdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgX0FDX0xBTkcgY29tcGlsZXIgdmVuZG9yXSwgYXhfY3ZfW11fQUNfTEFOR19BQkJSRVZbXV9jb21waWxlcl92ZW5kb3IsCisgIFsjIG5vdGU6IGRvbid0IGNoZWNrIGZvciBnY2MgZmlyc3Qgc2luY2Ugc29tZSBvdGhlciBjb21waWxlcnMgZGVmaW5lIF9fR05VQ19fCisgIHZlbmRvcnM9ImludGVsOiAgICAgX19JQ0MsX19FQ0MsX19JTlRFTF9DT01QSUxFUgorICAgICAgICAgICBpYm06ICAgICAgIF9feGxjX18sX194bENfXyxfX0lCTUNfXyxfX0lCTUNQUF9fCisgICAgICAgICAgIHBhdGhzY2FsZTogX19QQVRIQ0NfXyxfX1BBVEhTQ0FMRV9fCisgICAgICAgICAgIGNsYW5nOiAgICAgX19jbGFuZ19fCisgICAgICAgICAgIGdudTogICAgICAgX19HTlVDX18KKyAgICAgICAgICAgc3VuOiAgICAgICBfX1NVTlBST19DLF9fU1VOUFJPX0NDCisgICAgICAgICAgIGhwOiAgICAgICAgX19IUF9jYyxfX0hQX2FDQworICAgICAgICAgICBkZWM6ICAgICAgIF9fREVDQyxfX0RFQ0NYWCxfX0RFQ0NfVkVSLF9fREVDQ1hYX1ZFUgorICAgICAgICAgICBib3JsYW5kOiAgIF9fQk9STEFORENfXyxfX1RVUkJPQ19fCisgICAgICAgICAgIGNvbWVhdTogICAgX19DT01PX18KKyAgICAgICAgICAgY3JheTogICAgICBfQ1JBWUMKKyAgICAgICAgICAga2FpOiAgICAgICBfX0tDQworICAgICAgICAgICBsY2M6ICAgICAgIF9fTENDX18KKyAgICAgICAgICAgc2dpOiAgICAgICBfX3NnaSxzZ2kKKyAgICAgICAgICAgbWljcm9zb2Z0OiBfTVNDX1ZFUgorICAgICAgICAgICBtZXRyb3dlcmtzOiBfX01XRVJLU19fCisgICAgICAgICAgIHdhdGNvbTogICAgX19XQVRDT01DX18KKyAgICAgICAgICAgcG9ydGxhbmQ6ICBfX1BHSQorICAgICAgICAgICB1bmtub3duOiAgIFVOS05PV04iCisgIGZvciB2ZW50ZXN0IGluICR2ZW5kb3JzOyBkbworICAgIGNhc2UgJHZlbnRlc3QgaW4KKyAgICAgICo6KSB2ZW5kb3I9JHZlbnRlc3Q7IGNvbnRpbnVlIDs7CisgICAgICAqKSAgdmVuY3BwPSJkZWZpbmVkKCJgZWNobyAkdmVudGVzdCB8IHNlZCAncy8sLykgfHwgZGVmaW5lZCgvZydgIikiIDs7CisgICAgZXNhYworICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oLFsKKyAgICAgICNpZiAhKCR2ZW5jcHApCisgICAgICAgIHRoaXNpc2FuZXJyb3I7CisgICAgICAjZW5kaWYKKyAgICBdKV0sIFticmVha10pCisgIGRvbmUKKyAgYXhfY3ZfW11fQUNfTEFOR19BQkJSRVZbXV9jb21waWxlcl92ZW5kb3I9YGVjaG8gJHZlbmRvciB8IGN1dCAtZDogLWYxYAorIF0pCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb25maWd1cmVfYXJncy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcyNmIxYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQKQEAgLTAsMCArMSw3MCBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NvbmZpZ3VyZV9hcmdzLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ09ORklHVVJFX0FSR1MKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBIZWxwZXIgbWFjcm8gZm9yIEFYX0VOQUJMRV9CVUlMRERJUi4KKyMKKyMgICBUaGUgdHJhZGl0aW9uYWwgd2F5IG9mIHN0YXJ0aW5nIGEgc3ViZGlyLWNvbmZpZ3VyZSBpcyBydW5uaW5nIHRoZSBzY3JpcHQKKyMgICB3aXRoICR7MSsiJEAifSBidXQgc2luY2UgYXV0b2NvbmYgMi42MCB0aGlzIGlzIGJyb2tlbi4gSW5zdGVhZCB3ZSBoYXZlCisjICAgdG8gcmVseSBvbiBldmFsJ2luZyAkYWNfY29uZmlndXJlX2FyZ3MgaG93ZXZlciBzb21lIG9sZCBhdXRvY29uZgorIyAgIHZlcnNpb25zIGRvIG5vdCBwcm92aWRlIHRoYXQuIFRvIGVuc3VyZSBtYXhpbXVtIHBvcnRhYmlsaXR5IG9mIGF1dG9jb25mCisjICAgZXh0ZW5zaW9uIG1hY3JvcyB0aGlzIGhlbHBlciBjYW4gYmUgQUNfUkVRVUlSRSdkIHNvIHRoYXQKKyMgICAkYWNfY29uZmlndXJlX2FyZ3Mgd2lsbCBhbHN3YXlzIGJlIHByZXNlbnQuCisjCisjICAgU2FkbHksIHRoZSB0cmFkaXRpb25hbCAiZXhlYyAkU0hFTEwiIG9mIHRoZSBlbmFibGVfYnVpbGRkaXIgbWFjcm9zIGlzCisjICAgc3BvaWxlZCBub3cgYW5kIG11c3QgYmUgcmVwbGFjZWQgYnkgImV2YWwgKyBleGl0ICQ/Ii4KKyMKKyMgICBFeGFtcGxlOgorIworIyAgICAgQUNfREVGVU4oW0FYX0VOQUJMRV9TVUJESVJdLFtkbmwKKyMgICAgICAgQUNfUkVRVUlSRShbQVhfQ09ORklHVVJFX0FSR1NdKWRubAorIyAgICAgICBldmFsICRTSEVMTCAkYWNfY29uZmlndXJlX2FyZ3MgfHwgZXhpdCAkPworIyAgICAgICAuLi5dKQorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDkKKworQUNfREVGVU4oW0FYX0NPTkZJR1VSRV9BUkdTXSxbCisgICAjIFskXUAgaXMgdW5zYWJsZSBpbiAyLjYwKyBidXQgZWFybGllciBhdXRvY29uZiBoYWQgbm8gYWNfY29uZmlndXJlX2FyZ3MKKyAgIGlmIHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3Mrc2V0fSIgIT0gInNldCIgOyB0aGVuCisgICAgICBhY19jb25maWd1cmVfYXJncz0KKyAgICAgIGZvciBhY19hcmcgaW4gJHsxKyJbJF1AIn07IGRvCisgICAgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIKKyAgICAgIGRvbmUKKyAgIGZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2VuYWJsZV9idWlsZGRpci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmI4NzMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQKQEAgLTAsMCArMSwzMDAgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2VuYWJsZV9idWlsZGRpci5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0VOQUJMRV9CVUlMRERJUiBbKGRpcnN0cmluZy1vci1jb21tYW5kIFssTWFrZWZpbGUubWsgWywtYWxsXV0pXQorIworIyBERVNDUklQVElPTgorIworIyAgIElmIHRoZSBjdXJyZW50IGNvbmZpZ3VyZSB3YXMgcnVuIHdpdGhpbiB0aGUgc3JjZGlyIHRoZW4gd2UgbW92ZSBhbGwKKyMgICBjb25maWd1cmUtZmlsZXMgaW50byBhIHN1YmRpciBhbmQgbGV0IHRoZSBjb25maWd1cmUgc3RlcHMgY29udGludWUKKyMgICB0aGVyZS4gV2UgcHJvdmlkZSBhbiBvcHRpb24gLS1kaXNhYmxlLWJ1aWxkZGlyIHRvIHN1cHByZXNzIHRoZSBtb3ZlIGludG8KKyMgICBhIHNlcGFyYXRlIGJ1aWxkZGlyLgorIworIyAgIERlZmF1bHRzOgorIworIyAgICAgJDEgPSAkaG9zdCAob3ZlcnJpZGRlbiB3aXRoICRIT1NUKQorIyAgICAgJDIgPSBNYWtlZmlsZS5taworIyAgICAgJDMgPSAtYWxsCisjCisjICAgVGhpcyBtYWNybyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgQU1fSU5JVF9BVVRPTUFLRS4gSXQgY3JlYXRlcyBhIGRlZmF1bHQKKyMgICB0b3BsZXZlbCBzcmNkaXIgTWFrZWZpbGUgZnJvbSB0aGUgaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIGNyZWF0ZWQKKyMgICB0b3BsZXZlbCBidWlsZGRpciBNYWtlZmlsZS4gSXQganVzdCBjb3BpZXMgdGhlIHZhcmlhYmxlcyBhbmQKKyMgICBydWxlLXRhcmdldHMsIGVhY2ggZXh0ZW5kZWQgd2l0aCBhIGRlZmF1bHQgcnVsZS1leGVjdXRpb24gdGhhdCByZWN1cnNlcworIyAgIGludG8gdGhlIGJ1aWxkIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCAiSE9TVCIuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlCisjICAgYXV0by1kZWN0aW9uIHRocm91Z2ggYGNvbmZpZy5ndWVzc2AgYW5kIGJ1aWxkLXRpbWUgb2YgY291cnNlLCBhcyBpbgorIworIyAgICAgbWFrZSBIT1NUPWkzODYtbWluZ3ctY3Jvc3MKKyMKKyMgICB3aGljaCBjYW4gb2YgY291cnNlIHNldCBhdCBjb25maWd1cmUgdGltZSBhcyB3ZWxsIHVzaW5nCisjCisjICAgICBjb25maWd1cmUgLS1ob3N0PWkzODYtbWluZ3ctY3Jvc3MKKyMKKyMgICBBZnRlciB0aGUgZGVmYXVsdCBoYXMgYmVlbiBjcmVhdGVkLCBhZGRpdGlvbmFsIHJ1bGVzIGNhbiBiZSBhcHBlbmRlZAorIyAgIHRoYXQgd2lsbCBub3QganVzdCByZWN1cnNlIGludG8gdGhlIHN1YmRpcmVjdG9yaWVzIGFuZCBvbmx5IGV2ZXIgZXhpc3QKKyMgICBpbiB0aGUgc3JjZGlyIHRvcGxldmVsIG1ha2VmaWxlIC0gdGhlc2UgcGFydHMgYXJlIHJlYWQgZnJvbSB0aGUgJDIgPQorIyAgIE1ha2VmaWxlLm1rIGZpbGUKKyMKKyMgICBUaGUgYXV0b21hdGljIHJ1bGVzIGFyZSB1c3VhbGx5IHNjYW5uaW5nIHRoZSB0b3BsZXZlbCBNYWtlZmlsZSBmb3IgbGluZXMKKyMgICBsaWtlICcjIyMjICRob3N0IHwkYnVpbGRkaXInIHRvIHJlY29nbml6ZSB0aGUgcGxhY2Ugd2hlcmUgdG8gcmVjdXJzZQorIyAgIGludG8uIFVzdWFsbHksIHRoZSBsYXN0IG9uZSBpcyB0aGUgb25seSBvbmUgdXNlZC4gSG93ZXZlciwgYWxtb3N0IGFsbAorIyAgIHRhcmdldHMgaGF2ZSBhbiBhZGRpdGlvbmFsICIqLWFsbCIgcnVsZSB3aGljaCBtYWtlcyB0aGUgc2NyaXB0IHRvCisjICAgcmVjdXJzZSBpbnRvIF9hbGxfIHZhcmlhbnRzIG9mIHRoZSBjdXJyZW50IEhPU1QgKCEhKSBzZXR0aW5nLiBUaGUgIi1hbGwiCisjICAgc3VmZml4IGNhbiBiZSBvdmVycmlkZW4gZm9yIHRoZSBtYWNybyBhcyB3ZWxsLgorIworIyAgIGEgc3BlY2lhbCBydWxlIGlzIG9ubHkgZ2l2ZW4gZm9yIHRoaW5ncyBsaWtlICJkaXN0IiB0aGF0IHdpbGwgY29weSB0aGUKKyMgICB0YXJiYWxsIGZyb20gdGhlIGJ1aWxkZGlyIHRvIHRoZSBzb3VyY2VkaXIgKG9yICQoUFVCKSkgZm9yIHJlYXNvbiBvZgorIyAgIGNvbnZlbmllbmNlLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA5IEd1aWRvIFUuIERyYWhlaW0gPGd1aWRvZEBnbXguZGU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA5IEFsYW4gSmVua2lucyA8YWxhbi1qZW5raW5zQHR1ZmZtYWlsLmNvLnVrPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAyMworCitBQ19ERUZVTihbQVhfRU5BQkxFX0JVSUxERElSXSxbCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pW11kbmwKK0FDX1JFUVVJUkUoW0FYX0NPTkZJR1VSRV9BUkdTXSlbXWRubAorQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKVtdZG5sCitBQ19CRUZPUkUoWyQwXSxbQU1fSU5JVF9BVVRPTUFLRV0pZG5sCitBU19WQVJfUFVTSERFRihbU1VCXSxbYXhfZW5hYmxlX2J1aWxkZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtBVVhdLFtheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTRURdLFtheF9lbmFibGVfYnVpbGRkaXJfc2VkXSlkbmwKK1NVQj0iLiIKK0FDX0FSR19FTkFCTEUoW2J1aWxkZGlyXSwgQVNfSEVMUF9TVFJJTkcoCisgIFstLWRpc2FibGUtYnVpbGRkaXJdLFtkaXNhYmxlIGF1dG9tYXRpYyBidWlsZCBpbiBzdWJkaXIgb2Ygc291cmNlc10pCisgICxbU1VCPSIkZW5hYmxldmFsIl0sIFtTVUI9ImF1dG8iXSkKK2lmIHRlc3QgIi4kYWNfc3JjZGlyX2RlZmF1bHRlZCIgIT0gIi5ubyIgOyB0aGVuCitpZiB0ZXN0ICIuJHNyY2RpciIgPSAiLi4iIDsgdGhlbgorICBpZiB0ZXN0IC1mIGNvbmZpZy5zdGF0dXMgOyB0aGVuCisgICAgQUNfTVNHX05PVElDRSh0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCkKKyAgZWxzZQorICAgIHRlc3QgIi4kU1VCIiA9ICIuIiAgJiYgU1VCPSIuIgorICAgIHRlc3QgIi4kU1VCIiA9ICIubm8iICAmJiBTVUI9Ii4iCisgICAgdGVzdCAiLiRUQVJHRVQiID0gIi4iICYmIFRBUkdFVD0iJHRhcmdldCIKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLmF1dG8iICYmIFNVQj0ibTRfaWZ2YWwoWyQxXSwgWyQxXSxbJFRBUkdFVF0pIgorICAgIGlmIHRlc3QgIi4kU1VCIiAhPSAiLi4iIDsgdGhlbiAgICAjIHdlIGtub3cgd2hlcmUgdG8gZ28gYW5kCisgICAgICBBU19NS0RJUl9QKFskU1VCXSkKKyAgICAgIGVjaG8gX18uJFNVQi5fXyA+ICRTVUIvY29uZnRlc3QudG1wCisgICAgICBjZCAkU1VCCisgICAgICBpZiBncmVwIF9fLiRTVUIuX18gY29uZnRlc3QudG1wID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHJtIGNvbmZ0ZXN0LnRtcAorICAgICAgICBBQ19NU0dfUkVTVUxUKFtjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciAiLi8kU1VCIl0pCisgICAgICBlbHNlCisgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGNoYW5nZSB0byBkZWZhdWx0IGJ1aWxkZGlyICIuLyRTVUIiXSkKKyAgICAgIGZpCisgICAgICBzcmNkaXI9YGVjaG8gIiRTVUIiIHwKKyAgICAgICAgICAgICAgc2VkIC1lICdzLF5cLi8sLDtzLFtbXi9dXSQsJi8sO3MsW1teL11dKi8sLi4vLGc7cyxbWy9dXSQsLDsnYAorICAgICAgIyBnb2luZyB0byByZXN0YXJ0IGZyb20gc3ViZGlyZWN0b3J5IGxvY2F0aW9uCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLmxvZyAgICYmIG12ICRzcmNkaXIvY29uZmlnLmxvZyAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mZGVmcy5oICAgJiYgbXYgJHNyY2Rpci9jb25mZGVmcy5oICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAmJiBtdiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvJGNhY2hlX2ZpbGUgICYmIG12ICRzcmNkaXIvJGNhY2hlX2ZpbGUgIC4KKyAgICAgIEFDX01TR19SRVNVTFQoLi4uLmV4ZWMgJFNIRUxMICRzcmNkaXIvWyRdMCAiLS1zcmNkaXI9JHNyY2RpciIgIi0tZW5hYmxlLWJ1aWxkZGlyPSRTVUIiICR7MSsiWyRdQCJ9KQorICAgICAgY2FzZSAiWyRdMCIgaW4gIyByZXN0YXJ0CisgICAgICAgWy9cXF0qKSBldmFsICRTSEVMTCAiJ1skXTAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRTVUInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgICAqKSBldmFsICRTSEVMTCAiJyRzcmNkaXIvWyRdMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JFNVQiciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgZXNhYyA7IGV4aXQgJD8KKyAgICBmaQorICBmaQorZmkgZmkKK3Rlc3QgIi4kU1VCIiA9ICIuYXV0byIgJiYgU1VCPSIuIgorZG5sIGFjX3BhdGhfcHJvZyB1c2VzICJzZXQgZHVtbXkiIHRvIG92ZXJyaWRlICRAIHdoaWNoIHdvdWxkIGRlZmVhdCB0aGUgImV4ZWMiCitBQ19QQVRIX1BST0coU0VELGdzZWQgc2VkLCBzZWQpCitBVVg9IiRhbV9hdXhfZGlyIgorQVNfVkFSX1BPUERFRihbU0VEXSlkbmwKK0FTX1ZBUl9QT1BERUYoW0FVWF0pZG5sCitBU19WQVJfUE9QREVGKFtTVUJdKWRubAorQUNfQ09ORklHX0NPTU1BTkRTKFtidWlsZGlyXSxbZG5sIC4uLi4uLi4uLi4uLi4uIGNvbmZpZy5zdGF0dXMgLi4uLi4uLi4uLi4uLi4KK0FTX1ZBUl9QVVNIREVGKFtTVUJdLFtheF9lbmFibGVfYnVpbGRkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1RPUF0sW3RvcF9zcmNkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NSQ10sW2FjX3RvcF9zcmNkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW0FVWF0sW2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NFRF0sW2F4X2VuYWJsZV9idWlsZGRpcl9zZWRdKWRubAorcHVzaGRlZihbRU5EXSxbTWFrZWZpbGUubWtdKWRubAorcHVzaGRlZihbX0FMTF0sW2lmZWxzZShbJDNdLCxbLWFsbF0sWyQzXSldKWRubAorICBTUkM9IiRheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyIgorICBpZiB0ZXN0ICIuJFNVQiIgPSAiLi4iIDsgdGhlbgorICAgIGlmIHRlc3QgLWYgIiRUT1AvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgQUNfTVNHX05PVElDRShbc2tpcHBpbmcgVE9QL01ha2VmaWxlIC0gbGVmdCB1bnRvdWNoZWRdKQorICAgIGVsc2UKKyAgICAgIEFDX01TR19OT1RJQ0UoW3NraXBwaW5nIFRPUC9NYWtlZmlsZSAtIG5vdCBjcmVhdGVkXSkKKyAgICBmaQorICBlbHNlCisgICAgaWYgdGVzdCAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBhPWBncmVwICJeVkVSU0lPTiAiICIkU1JDL01ha2VmaWxlImAgOyBiPWBncmVwICJeVkVSU0lPTiAiIE1ha2VmaWxlYAorICAgICAgdGVzdCAiJGEiICE9ICIkYiIgJiYgcm0gIiRTUkMvTWFrZWZpbGUiCisgICAgZmkKKyAgICBpZiB0ZXN0IC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKwllY2hvICIkU1JDL01ha2VmaWxlIDogJFNSQy9NYWtlZmlsZS5pbiIgPiAkdG1wL2NvbmZ0ZW1wLm1rCisJZWNobyAiCVtdQCBlY2hvICdSRU1PVkVELCwsJyA+XCRbXUAiID4+ICR0bXAvY29uZnRlbXAubWsKKyAgICAgIGV2YWwgIiR7TUFLRS1tYWtlfSAtZiAkdG1wL2NvbmZ0ZW1wLm1rIDI+L2Rldi9udWxsID4vZGV2L251bGwiCisgICAgICBpZiBncmVwICdeUkVNT1ZFRCwsLCcgIiRTUkMvTWFrZWZpbGUiID4vZGV2L251bGwKKyAgICAgIHRoZW4gcm0gJFNSQy9NYWtlZmlsZSA7IGZpCisgICAgICBjcCAkdG1wL2NvbmZ0ZW1wLm1rICRTUkMvbWFrZWZpbGVzLm1rfiAgICAgICMjIERFQlVHR0lORworICAgIGZpCisgICAgaWYgdGVzdCAhIC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW2NyZWF0ZSBUT1AvTWFrZWZpbGUgZ3Vlc3NlZCBmcm9tIGxvY2FsIE1ha2VmaWxlXSkKKyAgICAgIHg9J2AnIDsgY2F0ID4kdG1wL2NvbmZ0ZW1wLnNlZCA8PF9FT0YKKy9eXCQvbgoreAorL15cJC9iUworeAorL1xcXFxcJC97SDtkO30KK3tIO3MvLiovLzt4O30KK2JNCis6UworeAorL1xcXFxcJC97aDtkO30KK3toO3MvLiovLzt4O30KKzpNCitzL1xcKFxcblxcKQkvXFwxIC9nCisvXgkvZAorL15bWwkgXV0qW1tcXCNdXS9kCisvXlZQQVRIICo9L2QKK3MvXnNyY2RpciAqPS4qL3NyY2RpciA9IC4vCitzL150b3Bfc3JjZGlyICo9LiovdG9wX3NyY2RpciA9IC4vCisvW1s6PV1dLyFkCisvXlxcLi9kCitkbmwgTm93IGhhbmRsZSBydWxlcyAoaS5lLiBsaW5lcyBjb250YWluaW5nICI6IiBidXQgbm90ICIgPSAiKS4KKy8gPSAvYgorLyAuPSAvYgorLzovIWIKK3MvOi4qLzovCitzLyAvICAvZworcy8gXFwoW1thLXpdXVtbYS16LV1dKltbYS16QS1aMC05XV1cXClcXChbWyA6XV1cXCkvIFxcMSBcXDFbXV9BTExcXDIvZworcy9eXFwoW1thLXpdXVtbYS16LV1dKltbYS16QS1aMC05XV1cXClcXChbWyA6XV1cXCkvXFwxIFxcMVtdX0FMTFxcMi8KK3MvICAvIC9nCisvXmFsbCBhbGxbXV9BTExbWyA6XV0vaVxcCithbGwtY29uZmlndXJlZCA6IGFsbFtdX0FMTAorZG5sIGRpc3QtYWxsIGV4aXN0cy4uLiBhbmQgd291bGQgbWFrZSBmb3IgZGlzdC1hbGwtYWxsCitzLyBbW2EtekEtWjAtOS1dXSpbXV9BTEwgW1thLXpBLVowLTktXV0qW11fQUxMW11fQUxMLy9nCisvW11fQUxMW11fQUxML2QKK2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkQVVYL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiBfQUxMICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIjsgaWYgdGVzdCAiXCRcJG4iIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIy4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggOyBmaSBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IHRlc3QgIlwkXCR1c2UiID0gIlwkXEAiICYmIEJVSUxEPSR4IGVjaG8gIlwkXCRCVUlMRCIgfCB0YWlsIC0xICR4IFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IChjZCAiXCRcJGkiICYmIHRlc3QgISAtZiBjb25maWd1cmUgJiYgXCQoTUFLRSkgXCRcJHVzZSkgfHwgZXhpdDsgZG9uZQorZG5sIHNwZWNpYWwgcnVsZSBhZGQtb246ICJkaXN0IiBjb3BpZXMgdGhlIHRhcmJhbGwgdG8gJChQVUIpLiAoc291cmNlIHRyZWUpCisvZGlzdFtdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiBcXFxcXFwKKwk7IGRvIHRlc3QgLWYgIlwkXCRmIiAmJiBtdiAiXCRcJGYiIFwkKFBVQikuIDsgZG9uZSA7IGJyZWFrIDsgZG9uZQorZG5sIHNwZWNpYWwgcnVsZSBhZGQtb246ICJkaXN0LWZvbyIgY29waWVzIGFsbCB0aGUgYXJjaGl2ZXMgdG8gJChQVUIpLiAoc291cmNlIHRyZWUpCisvZGlzdC1bW2EtekEtWjAtOV1dKltdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggLi9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZvdW5kPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJGZvdW5kIFwkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLioiIFxcXFxcXAorCTsgaWYgdGVzdCAiXCRcJGZvdW5kIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdGNsZWFuIiByZW1vdmVzIGFsbCBsb2NhbCBidWlsZGRpcnMgY29tcGxldGVseQorL2Rpc3RjbGVhbltdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgX0FMTCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCAoYWxsIGxvY2FsIGJ1aWxkcykiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIiMgcm0gLXIgXCRcJGkiOyBkb25lIDsgZWNobyAiIyAoc2xlZXAgMykiIDsgc2xlZXAgMyBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLi4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gInJtIC1yIFwkXCRpIjsgKHJtIC1yICJcJFwkaSIpIDsgZG9uZSA7IHJtIE1ha2VmaWxlCitfRU9GCisgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkU1JDL21ha2VmaWxlLnNlZH4iICAgICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAkU0VEIC1mICR0bXAvY29uZnRlbXAuc2VkIE1ha2VmaWxlID4kU1JDL01ha2VmaWxlCisgICAgICBpZiB0ZXN0IC1mICIkU1JDL200X2lmdmFsKFskMl0sWyQyXSxbRU5EXSkiIDsgdGhlbgorICAgICAgICBBQ19NU0dfTk9USUNFKFtleHRlbmQgVE9QL01ha2VmaWxlIHdpdGggVE9QL200X2lmdmFsKFskMl0sWyQyXSxbRU5EXSldKQorICAgICAgICBjYXQgJFNSQy9FTkQgPj4kU1JDL01ha2VmaWxlCisgICAgICBmaSA7IHh4eHg9IiMjIyMiCisgICAgICBlY2hvICIkeHh4eCBDT05GSUdVUkFUSU9OUyBGT1IgVE9QTEVWRUwgTUFLRUZJTEU6ICIgPj4kU1JDL01ha2VmaWxlCisgICAgICAjIHNhbml0eSBjaGVjaworICAgICAgaWYgZ3JlcCAnXjsgZWNobyAiTUFLRSAnICRTUkMvTWFrZWZpbGUgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgQUNfTVNHX05PVElDRShbYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gImEiIHRleHQgcGFydHNdKQorICAgICAgICAkU0VEIC1lICcvXkAgSE9TVD0vcy9eLwkvJyAtZSAnL147IC9zL14vCS8nICRTUkMvTWFrZWZpbGUgXAorICAgICAgICAgID4kU1JDL01ha2VmaWxlfgorICAgICAgICAodGVzdCAtcyAkU1JDL01ha2VmaWxlfiAmJiBtdiAkU1JDL01ha2VmaWxlfiAkU1JDL01ha2VmaWxlKSAyPi9kZXYvbnVsbAorICAgICAgZmkKKyAgICBlbHNlCisgICAgICB4eHh4PSJcXCNcXCNcXCNcXCMiCisgICAgICAjIGVjaG8gIi9eJHh4eHggKiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCAvZCIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICBlY2hvICJzIV4keHh4eCBbW158XV0qIHwgKiRTVUIgKlwkISR4eHh4IC4uLi4uLiAkU1VCISIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICAkU0VEIC1mICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRTUkMvTWFrZWZpbGUiID4kdG1wL21rZmlsZS50bXAKKyAgICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJFNSQy9tYWtlZmlsZXMuc2VkfiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICAgY3AgIiR0bXAvbWtmaWxlLnRtcCIgICAiJFNSQy9tYWtlZmlsZXMub3V0fiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgIGlmIGNtcCAtcyAiJFNSQy9NYWtlZmlsZSIgIiR0bXAvbWtmaWxlLnRtcCIgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIEFDX01TR19OT1RJQ0UoW2tlZXBpbmcgVE9QL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmVdKQorICAgICAgICBybSAiJHRtcC9ta2ZpbGUudG1wIgorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfTk9USUNFKFtyZXVzaW5nIFRPUC9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlXSkKKyAgICAgICAgbXYgIiR0bXAvbWtmaWxlLnRtcCIgIiRTUkMvTWFrZWZpbGUiCisgICAgICBmaQorICAgIGZpCisgICAgQUNfTVNHX05PVElDRShbYnVpbGQgaW4gJFNVQiAoSE9TVD0kYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QpXSkKKyAgICB4eHh4PSIjIyMjIgorICAgIGVjaG8gIiR4eHh4IiAiJGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0IiAifCRTVUIiID4+JFNSQy9NYWtlZmlsZQorICBmaQorcG9wZGVmKFtFTkRdKWRubAorQVNfVkFSX1BPUERFRihbU0VEXSlkbmwKK0FTX1ZBUl9QT1BERUYoW0FVWF0pZG5sCitBU19WQVJfUE9QREVGKFtTUkNdKWRubAorQVNfVkFSX1BPUERFRihbVE9QXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NVQl0pZG5sCitdLFtkbmwKK2F4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXI9IiRzcmNkaXIiICAgICAgICAgICAgICAgICAgICAjICRzcmNkaXIKK2F4X2VuYWJsZV9idWlsZGRpcl9ob3N0PSIkSE9TVCIgICAgICAgICAgICAgICAgICAgICAgICAjICRIT1NUIC8gJGhvc3QKK2F4X2VuYWJsZV9idWlsZGRpcl92ZXJzaW9uPSIkVkVSU0lPTiIgICAgICAgICAgICAgICAgICAjICRWRVJTSU9OCitheF9lbmFibGVfYnVpbGRkaXJfcGFja2FnZT0iJFBBQ0tBR0UiICAgICAgICAgICAgICAgICAgIyAkUEFDS0FHRQorYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIiICMgJEFVWAorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiICAgICAgICMgJFNFRAorYXhfZW5hYmxlX2J1aWxkZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyIiAgICAgICAgICAgICAgICMgJFNVQgorXSlkbmwKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY19hcmNoZmxhZy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX2FyY2hmbGFnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MTFiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY19hcmNoZmxhZy5tNApAQCAtMCwwICsxLDIxNSBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9nY2NfYXJjaGZsYWcuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9HQ0NfQVJDSEZMQUcoW1BPUlRBQkxFP10sIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0pCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgVGhpcyBtYWNybyB0cmllcyB0byBndWVzcyB0aGUgIm5hdGl2ZSIgYXJjaCBjb3JyZXNwb25kaW5nIHRvIHRoZSB0YXJnZXQKKyMgICBhcmNoaXRlY3R1cmUgZm9yIHVzZSB3aXRoIGdjYydzIC1tYXJjaD1hcmNoIG9yIC1tdHVuZT1hcmNoIGZsYWdzLiBJZgorIyAgIGZvdW5kLCB0aGUgY2FjaGUgdmFyaWFibGUgJGF4X2N2X2djY19hcmNoZmxhZyBpcyBzZXQgdG8gdGhpcyBmbGFnIGFuZAorIyAgIEFDVElPTi1TVUNDRVNTIGlzIGV4ZWN1dGVkOyBvdGhlcndpc2UgJGF4X2N2X2djY19hcmNoZmxhZyBpcyBzZXQgdG8KKyMgICAidW5rbm93biIgYW5kIEFDVElPTi1GQUlMVVJFIGlzIGV4ZWN1dGVkLiBUaGUgZGVmYXVsdCBBQ1RJT04tU1VDQ0VTUyBpcworIyAgIHRvIGFkZCAkYXhfY3ZfZ2NjX2FyY2hmbGFnIHRvIHRoZSBlbmQgb2YgJENGTEFHUy4KKyMKKyMgICBQT1JUQUJMRT8gc2hvdWxkIGJlIGVpdGhlciBbeWVzXSAoZGVmYXVsdCkgb3IgW25vXS4gSW4gdGhlIGZvcm1lciBjYXNlLAorIyAgIHRoZSBmbGFnIGlzIHNldCB0byAtbXR1bmUgKG9yIGVxdWl2YWxlbnQpIHNvIHRoYXQgdGhlIGFyY2hpdGVjdHVyZSBpcworIyAgIG9ubHkgdXNlZCBmb3IgdHVuaW5nLCBidXQgdGhlIGluc3RydWN0aW9uIHNldCB1c2VkIGlzIHN0aWxsIHBvcnRhYmxlLiBJbgorIyAgIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIGZsYWcgaXMgc2V0IHRvIC1tYXJjaCAob3IgZXF1aXZhbGVudCkgc28gdGhhdAorIyAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbnN0cnVjdGlvbnMgYXJlIGVuYWJsZWQuCisjCisjICAgVGhlIHVzZXIgY2FuIHNwZWNpZnkgLS13aXRoLWdjYy1hcmNoPTxhcmNoPiBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKKyMgICBtYWNybydzIGNob2ljZSBvZiBhcmNoaXRlY3R1cmUsIG9yIC0td2l0aG91dC1nY2MtYXJjaCB0byBkaXNhYmxlIHRoaXMuCisjCisjICAgV2hlbiBjcm9zcy1jb21waWxpbmcsIG9yIGlmICRDQyBpcyBub3QgZ2NjLCB0aGVuIEFDVElPTi1GQUlMVVJFIGlzCisjICAgY2FsbGVkIHVubGVzcyB0aGUgdXNlciBzcGVjaWZpZWQgLS13aXRoLWdjYy1hcmNoIG1hbnVhbGx5LgorIworIyAgIFJlcXVpcmVzIG1hY3JvczogQVhfQ0hFQ0tfQ09NUElMRV9GTEFHLCBBWF9HQ0NfWDg2X0NQVUlECisjCisjICAgKFRoZSBtYWluIGVtcGhhc2lzIGhlcmUgaXMgb24gcmVjZW50IENQVXMsIG9uIHRoZSBwcmluY2lwbGUgdGhhdCBkb2luZworIyAgIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nIG9uIG9sZCBoYXJkd2FyZSBpcyB1bmNvbW1vbi4pCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PgorIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXR0ZW8gRnJpZ28KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMTAKKworQUNfREVGVU4oW0FYX0dDQ19BUkNIRkxBR10sCitbQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisKK0FDX0FSR19XSVRIKGdjYy1hcmNoLCBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nY2MtYXJjaD08YXJjaD5dLCBbdXNlIGFyY2hpdGVjdHVyZSA8YXJjaD4gZm9yIGdjYyAtbWFyY2gvLW10dW5lLCBpbnN0ZWFkIG9mIGd1ZXNzaW5nXSldLAorCWF4X2djY19hcmNoPSR3aXRodmFsLCBheF9nY2NfYXJjaD15ZXMpCisKK0FDX01TR19DSEVDS0lORyhbZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZ10pCitBQ19NU0dfUkVTVUxUKFtdKQorQUNfQ0FDSEVfVkFMKGF4X2N2X2djY19hcmNoZmxhZywKK1sKK2F4X2N2X2djY19hcmNoZmxhZz0idW5rbm93biIKKworaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgPSB4eWVzOyB0aGVuCitheF9nY2NfYXJjaD0iIgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorY2FzZSAkaG9zdF9jcHUgaW4KKyAgaVtbMzQ1Nl1dODYqfHg4Nl82NCopICMgdXNlIGNwdWlkIGNvZGVzLCBpbiBwYXJ0IGZyb20geDg2aW5mby0xLjcgYnkgRC4gSm9uZXMKKyAgICAgQVhfR0NDX1g4Nl9DUFVJRCgwKQorICAgICBBWF9HQ0NfWDg2X0NQVUlEKDEpCisgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMCBpbgorICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1W1s0OF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0tbW14IHBlbnRpdW0iIDs7CisJICAgICo1Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW0gOzsKKwkgICAgKjZbWzM0NTZdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbWzAxXV06KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTIgcGVudGl1bXBybyIgOzsKKwkgICAgKjZhPzoqW1syMzRdXToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNltbOWRdXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW0gcGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbWzc4Yl1dPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2Pz86KjoqOiopIGF4X2djY19hcmNoPXBlbnRpdW1wcm8gOzsKKyAgICAgICAgICAgICpmM1tbMzQ3XV06KjoqOip8KmY0WzEzNDddOio6KjoqKQorCQljYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgICAgICAgICAgeDg2XzY0KikgYXhfZ2NjX2FyY2g9Im5vY29uYSBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9InByZXNjb3R0IHBlbnRpdW00IHBlbnRpdW1wcm8iIDs7CisgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW00IHBlbnRpdW1wcm8iOzsKKyAgICAgICAgICBlc2FjIDs7CisgICAgICAgKjo2ODc0NzU0MToqOiopICMgQU1ECisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1W1s2N11dPzoqOio6KikgYXhfZ2NjX2FyY2g9azYgOzsKKwkgICAgKjVbWzhkXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iazYtMiBrNiIgOzsKKwkgICAgKjVbWzldXT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0zIGs2IiA7OworCSAgICAqNjA/Oio6KjoqKSBheF9nY2NfYXJjaD1rNyA7OworCSAgICAqNltbMTJdXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24gazciIDs7CisJICAgICo2W1szNF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi10YmlyZCBrNyIgOzsKKwkgICAgKjY3PzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgKjZbWzY4YV1dPzoqOio6KikKKwkgICAgICAgQVhfR0NDX1g4Nl9DUFVJRCgweDgwMDAwMDA2KSAjIEwyIGNhY2hlIHNpemUKKwkgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2IGluCisgICAgICAgICAgICAgICAgICo6KjoqW1sxLTlhLWZdXT8/Pz8/PzoqKSAjIChMMiA9IGVjeCA+PiAxNikgPj0gMjU2CisJCQlheF9nY2NfYXJjaD0iYXRobG9uLXhwIGF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKyAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9ImF0aGxvbi00IGF0aGxvbiBrNyIgOzsKKwkgICAgICAgZXNhYyA7OworCSAgICAqZltbNGNlZjhiXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uNjQgazgiIDs7CisJICAgICpmNT86KjoqOiopIGF4X2djY19hcmNoPSJvcHRlcm9uIGs4IiA7OworCSAgICAqZjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLWZ4IG9wdGVyb24gazgiIDs7CisJICAgICpmPz86KjoqOiopIGF4X2djY19hcmNoPSJrOCIgOzsKKyAgICAgICAgICBlc2FjIDs7CisJKjo3NDZlNjU0MzoqOiopICMgSURUCisJICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICAqNTQ/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwLWM2IDs7CisJICAgICAqNTg/Oio6KjoqKSBheF9nY2NfYXJjaD13aW5jaGlwMiA7OworCSAgICAgKjZbWzc4XV0/Oio6KjoqKSBheF9nY2NfYXJjaD1jMyA7OworCSAgICAgKjY5PzoqOio6KikgYXhfZ2NjX2FyY2g9ImMzLTIgYzMiIDs7CisJICAgZXNhYyA7OworICAgICBlc2FjCisgICAgIGlmIHRlc3QgeCIkYXhfZ2NjX2FyY2giID0geDsgdGhlbiAjIGZhbGxiYWNrCisJY2FzZSAkaG9zdF9jcHUgaW4KKwkgIGk1ODYqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICBpNjg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICBlc2FjCisgICAgIGZpCisgICAgIDs7CisKKyAgc3BhcmMqKQorICAgICBBQ19QQVRIX1BST0coW1BSVERJQUddLCBbcHJ0ZGlhZ10sIFtwcnRkaWFnXSwgWyRQQVRIOi91c3IvcGxhdGZvcm0vYHVuYW1lIC1pYC9zYmluLzovdXNyL3BsYXRmb3JtL2B1bmFtZSAtbWAvc2Jpbi9dKQorICAgICBjcHV0eXBlPWAoKChncmVwIGNwdSAvcHJvYy9jcHVpbmZvIHwgY3V0IC1kOiAtZjIpIDsgKCRQUlRESUFHIC12IHxncmVwIC1pIHNwYXJjKSA7IGdyZXAgLWkgY3B1IC92YXIvcnVuL2RtZXNnLmJvb3QgKSB8IGhlYWQgLW4gMSkgMj4gL2Rldi9udWxsYAorICAgICBjcHV0eXBlPWBlY2hvICIkY3B1dHlwZSIgfCB0ciAtZCAnIC0nIHx0ciAkYXNfY3JfTEVUVEVSUyAkYXNfY3JfbGV0dGVyc2AKKyAgICAgY2FzZSAkY3B1dHlwZSBpbgorICAgICAgICAgKnVsdHJhc3BhcmNpdiopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjNCB1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnVsdHJhc3BhcmNpaWkqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqc3VwZXJzcGFyYyp8KnRtczM5MHo1W1swNV1dKikgYXhfZ2NjX2FyY2g9InN1cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqaHlwZXJzcGFyYyp8KnJ0NjJbWzA1Nl1dKikgYXhfZ2NjX2FyY2g9Imh5cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqY3lwcmVzcyopIGF4X2djY19hcmNoPWN5cHJlc3MgOzsKKyAgICAgZXNhYyA7OworCisgIGFscGhhZXY1KSBheF9nY2NfYXJjaD1ldjUgOzsKKyAgYWxwaGFldjU2KSBheF9nY2NfYXJjaD1ldjU2IDs7CisgIGFscGhhcGNhNTYpIGF4X2djY19hcmNoPSJwY2E1NiBldjU2IiA7OworICBhbHBoYXBjYTU3KSBheF9nY2NfYXJjaD0icGNhNTcgcGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFldjYpIGF4X2djY19hcmNoPWV2NiA7OworICBhbHBoYWV2NjcpIGF4X2djY19hcmNoPWV2NjcgOzsKKyAgYWxwaGFldjY4KSBheF9nY2NfYXJjaD0iZXY2OCBldjY3IiA7OworICBhbHBoYWV2NjkpIGF4X2djY19hcmNoPSJldjY5IGV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjcpIGF4X2djY19hcmNoPSJldjcgZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3OSkgYXhfZ2NjX2FyY2g9ImV2NzkgZXY3IGV2NjkgZXY2OCBldjY3IiA7OworCisgIHBvd2VycGMqKQorICAgICBjcHV0eXBlPWAoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBoZWFkIC1uIDEgfCBjdXQgLWQ6IC1mMiB8IGN1dCAtZCwgLWYxIHwgc2VkICdzLyAvL2cnKSA7IC91c3IvYmluL21hY2hpbmUgOyAvYmluL21hY2hpbmU7IGdyZXAgQ1BVIC92YXIvcnVuL2RtZXNnLmJvb3QgfCBoZWFkIC1uIDEgfCBjdXQgLWQiICIgLWYyKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gJGNwdXR5cGUgfCBzZWQgLWUgJ3MvcHBjLy9nO3MvICovL2cnYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgKjc1MCopIGF4X2djY19hcmNoPSI3NTAgRzMiIDs7CisgICAgICAgKjc0MFtbMC05XV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNzQwMCBHNCIgOzsKKyAgICAgICAqNzRbWzQtNV1dW1swLTldXSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDUwIEc0IiA7OworICAgICAgICo3NFtbMC05XV1bWzAtOV1dKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIEc0IiA7OworICAgICAgICo5NzAqKSBheF9nY2NfYXJjaD0iOTcwIEc1IHBvd2VyNCI7OworICAgICAgICpQT1dFUjQqfCpwb3dlcjQqfCpncSopIGF4X2djY19hcmNoPSJwb3dlcjQgOTcwIjs7CisgICAgICAgKlBPV0VSNSp8KnBvd2VyNSp8KmdyKnwqZ3MqKSBheF9nY2NfYXJjaD0icG93ZXI1IHBvd2VyNCA5NzAiOzsKKyAgICAgICA2MDNldnw4MjQwKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgNjAzZSA2MDMiOzsKKyAgICAgICAqKSBheF9nY2NfYXJjaD0kY3B1dHlwZSA7OworICAgICBlc2FjCisgICAgIGF4X2djY19hcmNoPSIkYXhfZ2NjX2FyY2ggcG93ZXJwYyIKKyAgICAgOzsKK2VzYWMKK2ZpICMgbm90IGNyb3NzLWNvbXBpbGluZworZmkgIyBndWVzcyBhcmNoCisKK2lmIHRlc3QgIngkYXhfZ2NjX2FyY2giICE9IHggLWEgIngkYXhfZ2NjX2FyY2giICE9IHhubzsgdGhlbgorZm9yIGFyY2ggaW4gJGF4X2djY19hcmNoOyBkbworICBpZiB0ZXN0ICJ4W11tNF9kZWZhdWx0KFskMV0seWVzKSIgPSB4eWVzOyB0aGVuICMgaWYgd2UgcmVxdWlyZSBwb3J0YWJsZSBjb2RlCisgICAgZmxhZ3M9Ii1tdHVuZT0kYXJjaCIKKyAgICAjIC1tY3B1PSRhcmNoIGFuZCBtJGFyY2ggZ2VuZXJhdGUgbm9ucG9ydGFibGUgY29kZSBvbiBldmVyeSBhcmNoIGV4Y2VwdAorICAgICMgeDg2LiAgQW5kIHNvbWUgb3RoZXIgYXJjaGVzIChlLmcuIEFscGhhKSBkb24ndCBhY2NlcHQgLW10dW5lLiAgR3Jyci4KKyAgICBjYXNlICRob3N0X2NwdSBpbiBpKjg2fHg4Nl82NCopIGZsYWdzPSIkZmxhZ3MgLW1jcHU9JGFyY2ggLW0kYXJjaCI7OyBlc2FjCisgIGVsc2UKKyAgICBmbGFncz0iLW1hcmNoPSRhcmNoIC1tY3B1PSRhcmNoIC1tJGFyY2giCisgIGZpCisgIGZvciBmbGFnIGluICRmbGFnczsgZG8KKyAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoJGZsYWcsIFtheF9jdl9nY2NfYXJjaGZsYWc9JGZsYWc7IGJyZWFrXSkKKyAgZG9uZQorICB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93biB8fCBicmVhaworZG9uZQorZmkKKworZmkgIyAkR0NDPXllcworXSkKK0FDX01TR19DSEVDS0lORyhbZm9yIGdjYyBhcmNoaXRlY3R1cmUgZmxhZ10pCitBQ19NU0dfUkVTVUxUKCRheF9jdl9nY2NfYXJjaGZsYWcpCitpZiB0ZXN0ICJ4JGF4X2N2X2djY19hcmNoZmxhZyIgPSB4dW5rbm93bjsgdGhlbgorICBtNF9kZWZhdWx0KFskM10sOikKK2Vsc2UKKyAgbTRfZGVmYXVsdChbJDJdLCBbQ0ZMQUdTPSIkQ0ZMQUdTICRheF9jdl9nY2NfYXJjaGZsYWciXSkKK2ZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfeDg2X2NwdWlkLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfeDg2X2NwdWlkLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNDZmZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY194ODZfY3B1aWQubTQKQEAgLTAsMCArMSw3OSBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2djY194ODZfY3B1aWQuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9HQ0NfWDg2X0NQVUlEKE9QKQorIworIyBERVNDUklQVElPTgorIworIyAgIE9uIFBlbnRpdW0gYW5kIGxhdGVyIHg4NiBwcm9jZXNzb3JzLCB3aXRoIGdjYyBvciBhIGNvbXBpbGVyIHRoYXQgaGFzIGEKKyMgICBjb21wYXRpYmxlIHN5bnRheCBmb3IgaW5saW5lIGFzc2VtYmx5IGluc3RydWN0aW9ucywgcnVuIGEgc21hbGwgcHJvZ3JhbQorIyAgIHRoYXQgZXhlY3V0ZXMgdGhlIGNwdWlkIGluc3RydWN0aW9uIHdpdGggaW5wdXQgT1AuIFRoaXMgY2FuIGJlIHVzZWQgdG8KKyMgICBkZXRlY3QgdGhlIENQVSB0eXBlLgorIworIyAgIE9uIG91dHB1dCwgdGhlIHZhbHVlcyBvZiB0aGUgZWF4LCBlYngsIGVjeCwgYW5kIGVkeCByZWdpc3RlcnMgYXJlIHN0b3JlZAorIyAgIGFzIGhleGFkZWNpbWFsIHN0cmluZ3MgYXMgImVheDplYng6ZWN4OmVkeCIgaW4gdGhlIGNhY2hlIHZhcmlhYmxlCisjICAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF9PUC4KKyMKKyMgICBJZiB0aGUgY3B1aWQgaW5zdHJ1Y3Rpb24gZmFpbHMgKGJlY2F1c2UgeW91IGFyZSBydW5uaW5nIGEKKyMgICBjcm9zcy1jb21waWxlciwgb3IgYmVjYXVzZSB5b3UgYXJlIG5vdCB1c2luZyBnY2MsIG9yIGJlY2F1c2UgeW91IGFyZSBvbgorIyAgIGEgcHJvY2Vzc29yIHRoYXQgZG9lc24ndCBoYXZlIHRoaXMgaW5zdHJ1Y3Rpb24pLCBheF9jdl9nY2NfeDg2X2NwdWlkX09QCisjICAgaXMgc2V0IHRvIHRoZSBzdHJpbmcgInVua25vd24iLgorIworIyAgIFRoaXMgbWFjcm8gbWFpbmx5IGV4aXN0cyB0byBiZSB1c2VkIGluIEFYX0dDQ19BUkNIRkxBRy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCA3CisKK0FDX0RFRlVOKFtBWF9HQ0NfWDg2X0NQVUlEXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKK0FDX0xBTkdfUFVTSChbQ10pCitBQ19DQUNIRV9DSEVDSyhmb3IgeDg2IGNwdWlkICQxIG91dHB1dCwgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMSwKKyBbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8c3RkaW8uaD5dLCBbCisgICAgIGludCBvcCA9ICQxLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CitdKV0sCisgICAgIFtheF9jdl9nY2NfeDg2X2NwdWlkXyQxPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZF0sCisgICAgIFtheF9jdl9nY2NfeDg2X2NwdWlkXyQxPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkXSwKKyAgICAgW2F4X2N2X2djY194ODZfY3B1aWRfJDE9dW5rbm93bl0pXSkKK0FDX0xBTkdfUE9QKFtDXSkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQKaW5kZXggNjcxY2RlMS4uODI4MTA0YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbGlidG9vbC5tNApAQCAtMSw3ICsxLDggQEAKICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCiAjCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTEwLDcgKzExLDggQEAKIAogbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjICAgICAgICAgICAgICAgICBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgpAQCAtMzcsNyArMzksNyBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIF0pCiAKLSMgc2VyaWFsIDU2IExUX0lOSVQKKyMgc2VyaWFsIDU3IExUX0lOSVQKIAogCiAjIExUX1BSRVJFUShWRVJTSU9OKQpAQCAtNjYsNiArNjgsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtMVF9JTklUXSwKIFtBQ19QUkVSRVEoWzIuNThdKWRubCBXZSB1c2UgQUNfSU5DTFVERVNfREVGQVVMVAorQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX0xBTkddKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubApAQCAtODIsNiArODUsOCBAQAogQUNfUkVRVUlSRShbTFRPQlNPTEVURV9WRVJTSU9OXSlkbmwKIG00X3JlcXVpcmUoW19MVF9QUk9HX0xUTUFJTl0pZG5sCiAKK19MVF9TSEVMTF9JTklUKFtTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofV0pCisKIGRubCBQYXJzZSBPUFRJT05TCiBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKIApAQCAtMTE4LDcgKzEyMyw3IEBACiAgICAgKikgYnJlYWs7OwogICBlc2FjCiBkb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK2NjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAogXSkKIAogCkBAIC0xMzgsNiArMTQzLDExIEBACiBtNF9kZWZ1bihbX0xUX1NFVFVQXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfUkVRVUlSRShbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdKWRubAorQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAorCitfTFRfREVDTChbXSwgW1BBVEhfU0VQQVJBVE9SXSwgWzFdLCBbVGhlIFBBVEggc2VwYXJhdG9yIGZvciB0aGUgYnVpbGQgc3lzdGVtXSlkbmwKK2RubAogX0xUX0RFQ0woW10sIFtob3N0X2FsaWFzXSwgWzBdLCBbVGhlIGhvc3Qgc3lzdGVtXSlkbmwKIF9MVF9ERUNMKFtdLCBbaG9zdF0sIFswXSlkbmwKIF9MVF9ERUNMKFtdLCBbaG9zdF9vc10sIFswXSlkbmwKQEAgLTE2MCwxMCArMTcwLDEzIEBACiBkbmwKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfUkVMT0FEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9PTERfQVJDSElWRV0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKK200X3JlcXVpcmUoW19MVF9XSVRIX1NZU1JPT1RdKWRubAogCiBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCiAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyCkBAIC0xNzksNyArMTkyLDYgQEAKIF9MVF9DSEVDS19PQkpESVIKIAogbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCi1fTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKQEAgLTE5MywyMyArMjA1LDYgQEAKICAgOzsKIGVzYWMKIAotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFtbImAkXFxdXVwpL1xcXDEvZycKLQotIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi1kb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbWyJgXFxdXVwpL1xcXDEvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKLSMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KLWRlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaW5nbGUgcXVvdGUuCi1kZWxheV9zaW5nbGVfcXVvdGVfc3Vic3Q9J3MvJ1wnJy8nXCdcXFxcXFxcJ1wnJy9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbCBnbG9iYmluZyBpbiBldmFsZWQgZXhwcmVzc2lvbnMKLW5vX2dsb2Jfc3Vic3Q9J3MvXCovXFxcKi9nJwotCiAjIEdsb2JhbCB2YXJpYWJsZXM6CiBvZmlsZT1saWJ0b29sCiBjYW5fYnVpbGRfc2hhcmVkPXllcwpAQCAtMjUwLDYgKzI0NSwyOCBAQAogXSkjIF9MVF9TRVRVUAogCiAKKyMgX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmaW5lIGEgZmV3IHNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwIHVzIGRvIHJvYnVzdCBxdW90aW5nLgorbTRfZGVmdW4oW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSwKK1sjIEJhY2tzbGFzaGlmeSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluCisjIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFtbImAkXFxdXVwpL1xcXDEvZycKKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbWyJgXFxdXVwpL1xcXDEvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKKyMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KK2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaW5nbGUgcXVvdGUuCitkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3Q9J3MvJ1wnJy8nXCdcXFxcXFxcJ1wnJy9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gYXZvaWQgYWNjaWRlbnRhbCBnbG9iYmluZyBpbiBldmFsZWQgZXhwcmVzc2lvbnMKK25vX2dsb2Jfc3Vic3Q9J3MvXCovXFxcKi9nJworXSkKKwogIyBfTFRfUFJPR19MVE1BSU4KICMgLS0tLS0tLS0tLS0tLS0tCiAjIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgY2FsbGVkIGJvdGggZnJvbSBgY29uZmlndXJlJywgYW5kIGBjb25maWcuc3RhdHVzJwpAQCAtNDA4LDcgKzQyNSw3IEBACiAjIGRlY2xhcmF0aW9uIHRoZXJlIHdpbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiBgY29uZmlndXJlJy4gIFZBUk5BTUUKICMgbXVzdCBoYXZlIGEgc2luZ2xlIHF1b3RlIGRlbGltaXRlZCB2YWx1ZSBmb3IgdGhpcyB0byB3b3JrLgogbTRfZGVmaW5lKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFXSwKLVskMT0nYCRFQ0hPICJYJF1bJDEiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCddKQorWyQxPSdgJEVDSE8gIiRdWyQxIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCddKQogCiAKICMgX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSQVRJT05TCkBAIC00MTgsNyArNDM1LDcgQEAKICMgZW1iZWRkZWQgc2luZ2xlIHF1b3RlcyBwcm9wZXJseS4gIEluIGNvbmZpZ3VyZSwgdGhpcyBtYWNybyBleHBhbmRzCiAjIGVhY2ggdmFyaWFibGUgZGVjbGFyZWQgd2l0aCBfTFRfREVDTCAoYW5kIF9MVF9UQUdERUNMKSBpbnRvOgogIwotIyAgICA8dmFyPj0nYCRFQ0hPICJYJDx2YXI+IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisjICAgIDx2YXI+PSdgJEVDSE8gIiQ8dmFyPiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBtNF9kZWZ1bihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSQVRJT05TXSwKIFttNF9mb3JlYWNoKFtfbHRfdmFyXSwgbTRfcXVvdGUobHRfZGVjbF9hbGxfdmFybmFtZXMpLAogICAgIFttNF9uKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFKF9sdF92YXIpXSldKV0pCkBAIC01MTcsMTIgKzUzNCwyMCBAQAogTFRDRkxBR1M9JyRMVENGTEFHUycKIGNvbXBpbGVyPSckY29tcGlsZXJfREVGQVVMVCcKIAorIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCitcJFtdMQorX0xURUNIT19FT0YnCit9CisKICMgUXVvdGUgZXZhbGVkIHN0cmluZ3MuCiBmb3IgdmFyIGluIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtbIFwKIF1dLCBsdF9kZWNsX3F1b3RlX3Zhcm5hbWVzKTsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC01MzMsOSArNTU4LDkgQEAKICMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3RyaW5ncy4KIGZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAogXV0sIGx0X2RlY2xfZHF1b3RlX3Zhcm5hbWVzKTsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC01NDMsMTYgKzU2OCwzOCBAQAogICAgIGVzYWMKIGRvbmUKIAotIyBGaXgtdXAgZmFsbGJhY2sgZWNobyBpZiBpdCB3YXMgbWFuZ2xlZCBieSB0aGUgYWJvdmUgcXVvdGluZyBydWxlcy4KLWNhc2UgXCRsdF9FQ0hPIGluCi0qJ1xcXFskXTAgLS1mYWxsYmFjay1lY2hvIicpZG5sICIKLSAgbHRfRUNITz1cYFwkRUNITyAiWFwkbHRfRUNITyIgfCBcJFhzZWQgLWUgJ3MvXFxcXFxcXFxcXFxcXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iXFskXS9cWyRdMCAtLWZhbGxiYWNrLWVjaG8iLydcYAotICA7OwotZXNhYwotCiBfTFRfT1VUUFVUX0xJQlRPT0xfSU5JVAogXSkKIAorIyBfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVChGSUxFLCBbQ09NTUVOVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBHZW5lcmF0ZSBhIGNoaWxkIHNjcmlwdCBGSUxFIHdpdGggYWxsIGluaXRpYWxpemF0aW9uIG5lY2Vzc2FyeSB0bworIyByZXVzZSB0aGUgZW52aXJvbm1lbnQgbGVhcm5lZCBieSB0aGUgcGFyZW50IHNjcmlwdCwgYW5kIG1ha2UgdGhlCisjIGZpbGUgZXhlY3V0YWJsZS4gIElmIENPTU1FTlQgaXMgc3VwcGxpZWQsIGl0IGlzIGluc2VydGVkIGFmdGVyIHRoZQorIyBgIyEnIHNlcXVlbmNlIGJ1dCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gdGV4dCBiZWdpbnMuICBBZnRlciB0aGlzCisjIG1hY3JvLCBhZGRpdGlvbmFsIHRleHQgY2FuIGJlIGFwcGVuZGVkIHRvIEZJTEUgdG8gZm9ybSB0aGUgYm9keSBvZgorIyB0aGUgY2hpbGQgc2NyaXB0LiAgVGhlIG1hY3JvIGVuZHMgd2l0aCBub24temVybyBzdGF0dXMgaWYgdGhlCisjIGZpbGUgY291bGQgbm90IGJlIGZ1bGx5IHdyaXR0ZW4gKHN1Y2ggYXMgaWYgdGhlIGRpc2sgaXMgZnVsbCkuCittNF9pZmRlZihbQVNfSU5JVF9HRU5FUkFURURdLAorW200X2RlZnVuKFtfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVF0sW0FTX0lOSVRfR0VORVJBVEVEKCRAKV0pXSwKK1ttNF9kZWZ1bihbX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVRdLAorW200X3JlcXVpcmUoW0FTX1BSRVBBUkVdKV1kbmwKK1ttNF9wdXNoZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pXWRubAorW2x0X3dyaXRlX2ZhaWw9MAorY2F0ID4kMSA8PF9BU0VPRiB8fCBsdF93cml0ZV9mYWlsPTEKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgorJDIKK1NIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9CitleHBvcnQgU0hFTEwKK19BU0VPRgorY2F0ID4+JDEgPDxcX0FTRU9GIHx8IGx0X3dyaXRlX2ZhaWw9MQorQVNfU0hFTExfU0FOSVRJWkUKK19BU19QUkVQQVJFCitleGVjIEFTX01FU1NBR0VfRkQ+JjEKK19BU0VPRgordGVzdCAkbHRfd3JpdGVfZmFpbCA9IDAgJiYgY2htb2QgK3ggJDFbXWRubAorbTRfcG9wZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pXSldKSMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQKIAogIyBMVF9PVVRQVVQKICMgLS0tLS0tLS0tCkBAIC01NjIsMjAgKzYwOSwxMSBAQAogQUNfREVGVU4oW0xUX09VVFBVVF0sCiBbOiAke0NPTkZJR19MVD0uL2NvbmZpZy5sdH0KIEFDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRDT05GSUdfTFRdKQotY2F0ID4iJENPTkZJR19MVCIgPDxfTFRFT0YKLSMhICRTSEVMTAotIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgotIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLQotbHRfY2xfc2lsZW50PWZhbHNlCi1TSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQotX0xURU9GCitfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVChbIiRDT05GSUdfTFQiXSwKK1sjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgYSBsaWJ0b29sIHN0dWIgd2l0aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLl0pCiAKIGNhdCA+PiIkQ09ORklHX0xUIiA8PFxfTFRFT0YKLUFTX1NIRUxMX1NBTklUSVpFCi1fQVNfUFJFUEFSRQotCi1leGVjIEFTX01FU1NBR0VfRkQ+JjEKK2x0X2NsX3NpbGVudD1mYWxzZQogZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZwogewogICBlY2hvCkBAIC02MDEsNyArNjM5LDcgQEAKIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCiBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KIAotQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogVGhpcyBjb25maWcubHQgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKIApAQCAtNjQ2LDE1ICs2ODQsMTMgQEAKICMgYXBwZW5kaW5nIHRvIGNvbmZpZy5sb2csIHdoaWNoIGZhaWxzIG9uIERPUywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0CiAjIG9wZW4gYnkgY29uZmlndXJlLiAgSGVyZSB3ZSBleGVjIHRoZSBGRCB0byAvZGV2L251bGwsIGVmZmVjdGl2ZWx5IGNsb3NpbmcKICMgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5sdC4KLWlmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgotICBsdF9jbF9zdWNjZXNzPToKLSAgdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKLSAgICBsdF9jb25maWdfbHRfYXJncz0iJGx0X2NvbmZpZ19sdF9hcmdzIC0tcXVpZXQiCi0gIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+L2Rldi9udWxsCi0gICRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKLSAgZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZwotICAkbHRfY2xfc3VjY2VzcyB8fCBBU19FWElUKDEpCi1maQorbHRfY2xfc3VjY2Vzcz06Cit0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgorICBsdF9jb25maWdfbHRfYXJncz0iJGx0X2NvbmZpZ19sdF9hcmdzIC0tcXVpZXQiCitleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAorJFNIRUxMICIkQ09ORklHX0xUIiAkbHRfY29uZmlnX2x0X2FyZ3MgfHwgbHRfY2xfc3VjY2Vzcz1mYWxzZQorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4+Y29uZmlnLmxvZworJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQogXSkjIExUX09VVFBVVAogCiAKQEAgLTcxNywxNSArNzUzLDEyIEBACiAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCiAKLSAgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKIAotICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLQotICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgY2htb2QgK3ggIiRvZmlsZSIKIF0sCkBAIC03NzAsNiArODAzLDcgQEAKIG00X2Nhc2UoWyQxXSwKICAgW0NdLAkJCVtfTFRfTEFORyhDKV0sCiAgIFtDKytdLAkJW19MVF9MQU5HKENYWCldLAorICBbR29dLAkJCVtfTFRfTEFORyhHTyldLAogICBbSmF2YV0sCQlbX0xUX0xBTkcoR0NKKV0sCiAgIFtGb3J0cmFuIDc3XSwJCVtfTFRfTEFORyhGNzcpXSwKICAgW0ZvcnRyYW5dLAkJW19MVF9MQU5HKEZDKV0sCkBAIC03OTEsNiArODI1LDMxIEBACiBdKSMgX0xUX0xBTkcKIAogCittNF9pZm5kZWYoW0FDX1BST0dfR09dLCBbCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTk9URTogVGhpcyBtYWNybyBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbnRvICAgIworIyAgR05VIEF1dG9jb25mIGFzIEFDX1BST0dfR08uICBXaGVuIGl0IGlzIGF2YWlsYWJsZSBpbiAgICAjCisjICBhIHJlbGVhc2VkIHZlcnNpb24gb2YgQXV0b2NvbmYgd2Ugc2hvdWxkIHJlbW92ZSB0aGlzICAgICMKKyMgIG1hY3JvIGFuZCB1c2UgaXQgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCittNF9kZWZ1bihbQUNfUFJPR19HT10sCitbQUNfTEFOR19QVVNIKEdvKWRubAorQUNfQVJHX1ZBUihbR09DXSwgICAgIFtHbyBjb21waWxlciBjb21tYW5kXSlkbmwKK0FDX0FSR19WQVIoW0dPRkxBR1NdLCBbR28gY29tcGlsZXIgZmxhZ3NdKWRubAorX0FDX0FSR19WQVJfTERGTEFHUygpZG5sCitBQ19DSEVDS19UT09MKEdPQywgZ2NjZ28pCitpZiB0ZXN0IC16ICIkR09DIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgQUNfQ0hFQ0tfUFJPRyhHT0MsIFske2FjX3Rvb2xfcHJlZml4fWdjY2dvXSwgWyR7YWNfdG9vbF9wcmVmaXh9Z2NjZ29dKQorICBmaQorZmkKK2lmIHRlc3QgLXogIiRHT0MiOyB0aGVuCisgIEFDX0NIRUNLX1BST0coR09DLCBnY2NnbywgZ2NjZ28sIGZhbHNlKQorZmkKK10pI200X2RlZnVuCitdKSNtNF9pZm5kZWYKKworCiAjIF9MVF9MQU5HX0RFRkFVTFRfQ09ORklHCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0xBTkdfREVGQVVMVF9DT05GSUddLApAQCAtODIxLDYgKzg4MCwxMCBAQAogICAgICAgIG00X2lmZGVmKFtMVF9QUk9HX0dDSl0sCiAJW200X2RlZmluZShbTFRfUFJPR19HQ0pdLCBkZWZuKFtMVF9QUk9HX0dDSl0pW0xUX0xBTkcoR0NKKV0pXSldKV0pXSkKIAorQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfR09dLAorICBbTFRfTEFORyhHTyldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0dPXSwgZGVmbihbQUNfUFJPR19HT10pW0xUX0xBTkcoR08pXSldKQorCiBBQ19QUk9WSURFX0lGRUxTRShbTFRfUFJPR19SQ10sCiAgIFtMVF9MQU5HKFJDKV0sCiAgIFttNF9kZWZpbmUoW0xUX1BST0dfUkNdLCBkZWZuKFtMVF9QUk9HX1JDXSlbTFRfTEFORyhSQyldKV0pCkBAIC04MzEsMTEgKzg5NCwxMyBAQAogQVVfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW0xUX0xBTkcoRm9ydHJhbiA3NyldKQogQVVfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbTFRfTEFORyhGb3J0cmFuKV0pCiBBVV9ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbTFRfTEFORyhKYXZhKV0pCitBVV9ERUZVTihbQUNfTElCVE9PTF9SQ10sIFtMVF9MQU5HKFdpbmRvd3MgUmVzb3VyY2UpXSkKIGRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9DWFhdLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9GNzddLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9GQ10sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0dDSl0sIFtdKQorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSwgW10pCiAKIAogIyBfTFRfVEFHX0NPTVBJTEVSCkBAIC05MjEsNyArOTg2LDEzIEBACiAJJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGxpYmNvbmZ0ZXN0LmR5bGliIFwKIAkgIC1keW5hbWljbGliIC1XbCwtc2luZ2xlX21vZHVsZSBjb25mdGVzdC5jIDI+Y29uZnRlc3QuZXJyCiAgICAgICAgIF9sdF9yZXN1bHQ9JD8KLQlpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgISAtcyBjb25mdGVzdC5lcnIgJiYgdGVzdCAkX2x0X3Jlc3VsdCA9IDA7IHRoZW4KKwkjIElmIHRoZXJlIGlzIGEgbm9uLWVtcHR5IGVycm9yIGxvZywgYW5kICJzaW5nbGVfbW9kdWxlIgorCSMgYXBwZWFycyBpbiBpdCwgYXNzdW1lIHRoZSBmbGFnIGNhdXNlZCBhIGxpbmtlciB3YXJuaW5nCisgICAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIHNpbmdsZV9tb2R1bGUgY29uZnRlc3QuZXJyOyB0aGVuCisJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKwkjIE90aGVyd2lzZSwgaWYgdGhlIG91dHB1dCB3YXMgY3JlYXRlZCB3aXRoIGEgMCBleGl0IGNvZGUgZnJvbQorCSMgdGhlIGNvbXBpbGVyLCBpdCB3b3JrZWQuCisJZWxpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDA7IHRoZW4KIAkgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9eWVzCiAJZWxzZQogCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECkBAIC05MjksNiArMTAwMCw3IEBACiAJcm0gLXJmIGxpYmNvbmZ0ZXN0LmR5bGliKgogCXJtIC1mIGNvbmZ0ZXN0LioKICAgICAgIGZpXSkKKwogICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZ10sCiAgICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0XSwKICAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm8KQEAgLTk0MCw2ICsxMDEyLDM0IEBACiAJW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ub10pCiAJTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKICAgICBdKQorCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtZm9yY2VfbG9hZCBsaW5rZXIgZmxhZ10sW2x0X2N2X2xkX2ZvcmNlX2xvYWRdLAorICAgICAgW2x0X2N2X2xkX2ZvcmNlX2xvYWQ9bm8KKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IGZvcmNlZF9sb2FkZWQoKSB7IHJldHVybiAyO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgoraW50IG1haW4oKSB7IHJldHVybiAwO30KK19MVF9FT0YKKyAgICAgIGVjaG8gIiRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEgMj5jb25mdGVzdC5lcnIKKyAgICAgIF9sdF9yZXN1bHQ9JD8KKyAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIGZvcmNlX2xvYWQgY29uZnRlc3QuZXJyOyB0aGVuCisJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlbGlmIHRlc3QgLWYgY29uZnRlc3QgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMCAmJiAkR1JFUCBmb3JjZWRfbG9hZCBjb25mdGVzdCA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJbHRfY3ZfbGRfZm9yY2VfbG9hZD15ZXMKKyAgICAgIGVsc2UKKwljYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGZpCisgICAgICAgIHJtIC1mIGNvbmZ0ZXN0LmVyciBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMKKyAgICAgICAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0KKyAgICBdKQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4xLltbMDEyXV0pCiAgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CkBAIC05NjcsNyArMTA2Nyw3IEBACiAgICAgZWxzZQogICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IjsgdGhlbgorICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiICYmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJubyI7IHRoZW4KICAgICAgIF9sdF9kc3ltdXRpbD0nfiREU1lNVVRJTCAkbGliIHx8IDonCiAgICAgZWxzZQogICAgICAgX2x0X2RzeW11dGlsPQpAQCAtOTc3LDggKzEwNzcsOCBAQAogXSkKIAogCi0jIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2tzIGZvciBsaW5rZXIgYW5kIGNvbXBpbGVyIGZlYXR1cmVzIG9uIGRhcndpbgogbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKIFsKQEAgLTk4Nyw3ICsxMDg3LDEzIEBACiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKLSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIGlmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJ5ZXMiOyB0aGVuCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKyAgICBtNF9jYXNlKFskMV0sIFtGNzddLCBbX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXNdLAorICAgICAgICAgICAgICAgICAgW0ZDXSwgIFtfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllc10pCisgIGVsc2UKKyAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JycKKyAgZmkKICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iJF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkIgogICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtOTk1LDcgKzExMDEsNyBAQAogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCiAgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCiAgICAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kc3ltdXRpbH0iCiAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKQEAgLTEwMTEsMjAzICsxMTE3LDE0MiBAQAogICBmaQogXSkKIAotIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQogIyBmb3IgdGhlIHN5c3RlbSBkZWZhdWx0IGhhcmRjb2RlZCBsaWJyYXJ5IHBhdGguIEluIG1vc3QgY2FzZXMsCiAjIHRoaXMgaXMgL3Vzci9saWI6L2xpYiwgYnV0IHdoZW4gdGhlIE1QSSBjb21waWxlcnMgYXJlIHVzZWQKICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgogIyBJZiB3ZSBkb24ndCBmaW5kIGFueXRoaW5nLCB1c2UgdGhlIGRlZmF1bHQgbGlicmFyeSBwYXRoIGFjY29yZGluZwogIyB0byB0aGUgYWl4IGxkIG1hbnVhbC4KKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgorIyBBbGxvdyB0byBvdmVycmlkZSB0aGVtIGZvciBhbGwgdGFncyB0aHJvdWdoIGx0X2N2X2FpeF9saWJwYXRoLgogbTRfZGVmdW4oW19MVF9TWVNfTU9EVUxFX1BBVEhfQUlYXSwKIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNLFsKLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotCS9eMC8gewotCSAgICBzL14wICAqXCguKlwpJC9cMS8KLQkgICAgcAotCX0KLSAgICB9JwotYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotZmldLFtdKQotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorZWxzZQorICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKyAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLFsKKyAgbHRfYWl4X2xpYnBhdGhfc2VkPSdbCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH1dJworICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisgIGZpXSxbXSkKKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorICBmaQorICBdKQorICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKK2ZpCiBdKSMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKIAogCiAjIF9MVF9TSEVMTF9JTklUKEFSRykKICMgLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmaW5lKFtfTFRfU0hFTExfSU5JVF0sCi1baWZkZWYoW0FDX0RJVkVSU0lPTl9OT1RJQ0VdLAotCSAgICAgW0FDX0RJVkVSVF9QVVNIKEFDX0RJVkVSU0lPTl9OT1RJQ0UpXSwKLQkgW0FDX0RJVkVSVF9QVVNIKE5PVElDRSldKQotJDEKLUFDX0RJVkVSVF9QT1AKLV0pIyBfTFRfU0hFTExfSU5JVAorW200X2RpdmVydF90ZXh0KFtNNFNILUlOSVRdLCBbJDEKK10pXSkjIF9MVF9TSEVMTF9JTklUCisKIAogCiAjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEFkZCBzb21lIGNvZGUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB3aGljaAotIyB3aWxsIGZpbmQgYW4gZWNobyBjb21tYW5kIHdoaWNoIGRvZXNuJ3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgorIyBGaW5kIGhvdyB3ZSBjYW4gZmFrZSBhbiBlY2hvIGNvbW1hbmQgdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoLgorIyBJbiBwYXJ0aWN1bGFyLCB3aXRoIEF1dG9jb25mIDIuNjAgb3IgbGF0ZXIgd2UgYWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQKKyMgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoIHdpbGwgZmluZCBhIHNoZWxsIHdpdGggYSBidWlsdGluCisjIHByaW50ZiAod2hpY2ggd2UgY2FuIHVzZSBhcyBhbiBlY2hvIGNvbW1hbmQpLgogbTRfZGVmdW4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwKLVtfTFRfU0hFTExfSU5JVChbCi0jIENoZWNrIHRoYXQgd2UgYXJlIHJ1bm5pbmcgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi1TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorW0VDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCitFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAKLWNhc2UgWCRsdF9FQ0hPIGluCi1YKi0tZmFsbGJhY2stZWNobykKLSAgIyBSZW1vdmUgb25lIGxldmVsIG9mIHF1b3RhdGlvbiAod2hpY2ggd2FzIHJlcXVpcmVkIGZvciBNYWtlKS4KLSAgRUNITz1gZWNobyAiJGx0X0VDSE8iIHwgc2VkICdzLFxcXFxcWyRdXFxbJF0wLCdbJF0wJywnYAotICA7OworQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnQgLXIgLS0nCitlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludGYgJXNcbicKK2Vsc2UKKyAgIyBVc2UgdGhpcyBmdW5jdGlvbiBhcyBhIGZhbGxiYWNrIHRoYXQgYWx3YXlzIHdvcmtzLgorICBmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKKyAgeworICAgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskW10xCitfTFRFQ0hPX0VPRicKKyAgfQorICBFQ0hPPSdmdW5jX2ZhbGxiYWNrX2VjaG8nCitmaQorCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiQqIiAKK30KKworY2FzZSAiJEVDSE8iIGluCisgIHByaW50ZiopIEFDX01TR19SRVNVTFQoW3ByaW50Zl0pIDs7CisgIHByaW50KikgQUNfTVNHX1JFU1VMVChbcHJpbnQgLXJdKSA7OworICAqKSBBQ19NU0dfUkVTVUxUKFtjYXRdKSA7OwogZXNhYwogCi1FQ0hPPSR7bHRfRUNITy1lY2hvfQotaWYgdGVzdCAiWFskXTEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKLSAgOgotZWxpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgOyB0aGVuCi0gICMgWWlwcGVlLCAkRUNITyB3b3JrcyEKLSAgOgotZWxzZQotICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwuCi0gIGV4ZWMgJFNIRUxMICJbJF0wIiAtLW5vLXJlZXhlYyAkezErIlskXUAifQotZmkKK200X2lmZGVmKFtfQVNfREVURUNUX1NVR0dFU1RFRF0sCitbX0FTX0RFVEVDVF9TVUdHRVNURUQoWworICB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0ke0JBU0hfVkVSU0lPTitzZXR9IiB8fCAoCisgICAgRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKKyAgICBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyAgICBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworICAgIFBBVEg9L2VtcHR5IEZQQVRIPS9lbXB0eTsgZXhwb3J0IFBBVEggRlBBVEgKKyAgICB0ZXN0ICJYYHByaW50ZiAlcyAkRUNIT2AiID0gIlgkRUNITyIgXAorICAgICAgfHwgdGVzdCAiWGBwcmludCAtciAtLSAkRUNIT2AiID0gIlgkRUNITyIgKV0pXSkKIAotaWYgdGVzdCAiWFskXTEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIHVzZWQgYXMgZmFsbGJhY2sgZWNobwotICBzaGlmdAotICBjYXQgPDxfTFRfRU9GCi1bJF0qCi1fTFRfRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJGx0X0VDSE8iOyB0aGVuCi0gIGlmIHRlc3QgIlgke2VjaG9fdGVzdF9zdHJpbmcrc2V0fSIgIT0gWHNldDsgdGhlbgotICAgICMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICAgIGZvciBjbWQgaW4gJ3NlZCA1MHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgMTBxICJbJF0wIicgJ3NlZCAycSAiWyRdMCInICdlY2hvIHRlc3QnOyBkbwotICAgICAgIyBleHBlY3RlZCBzaXplczogbGVzcyB0aGFuIDJLYiwgMUtiLCA1MTIgYnl0ZXMsIDE2IGJ5dGVzLCAuLi4KLSAgICAgIGlmIHsgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkY21kYDsgfSAyPi9kZXYvbnVsbCAmJgotCSB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbAotICAgICAgdGhlbgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gIGZpCi0KLSAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgIyBUaGUgU29sYXJpcywgQUlYLCBhbmQgRGlnaXRhbCBVbml4IGRlZmF1bHQgZWNobyBwcm9ncmFtcyB1bnF1b3RlCi0gICAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAgICMgICBlY2hvICIkc29tZXRoaW5nIiB8IHNlZCAncy9cXC9cXFxcL2cnCi0gICAgIwotICAgICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBkaXIgaW4gJFBBVEggL3Vzci91Y2I7IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIGlmICh0ZXN0IC1mICRkaXIvZWNobyB8fCB0ZXN0IC1mICRkaXIvZWNobyRhY19leGVleHQpICYmCi0gICAgICAgICB0ZXN0ICJYYCgkZGlyL2VjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgIEVDSE89IiRkaXIvZWNobyIKLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gICAgaWYgdGVzdCAiWCRFQ0hPIiA9IFhlY2hvOyB0aGVuCi0gICAgICAjIFdlIGRpZG4ndCBmaW5kIGEgYmV0dGVyIGVjaG8sIHNvIGxvb2sgZm9yIGFsdGVybmF0aXZlcy4KLSAgICAgIGlmIHRlc3QgIlhgeyBwcmludCAtciAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyBwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICAgIEVDSE89J3ByaW50IC1yJwotICAgICAgZWxpZiB7IHRlc3QgLWYgL2Jpbi9rc2ggfHwgdGVzdCAtZiAvYmluL2tzaCRhY19leGVleHQ7IH0gJiYKLQkgICB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAgICMgSWYgd2UgaGF2ZSBrc2gsIHRyeSBydW5uaW5nIGNvbmZpZ3VyZSBhZ2FpbiB3aXRoIGl0LgotICAgICAgICBPUklHSU5BTF9DT05GSUdfU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSAgICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgICBDT05GSUdfU0hFTEw9L2Jpbi9rc2gKLSAgICAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotICAgICAgICBleGVjICRDT05GSUdfU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci0gICAgICBlbHNlCi0gICAgICAgICMgVHJ5IHVzaW5nIHByaW50Zi4KLSAgICAgICAgRUNITz0ncHJpbnRmICVzXG4nCi0gICAgICAgIGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotCSAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgICMgQ29vbCwgcHJpbnRmIHdvcmtzCi0JICA6Ci0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgQ09ORklHX1NIRUxMPSRPUklHSU5BTF9DT05GSUdfU0hFTEwKLQkgIGV4cG9ydCBDT05GSUdfU0hFTEwKLQkgIFNIRUxMPSIkQ09ORklHX1NIRUxMIgotCSAgZXhwb3J0IFNIRUxMCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsc2UKLQkgICMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JICBwcmV2PToKLQotCSAgZm9yIGNtZCBpbiAnZWNobyB0ZXN0JyAnc2VkIDJxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDIwcSAiWyRdMCInICdzZWQgNTBxICJbJF0wIic7IGRvCi0JICAgIGlmIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYYGV2YWwgJGNtZGAiOyB9IDI+L2Rldi9udWxsCi0JICAgIHRoZW4KLQkgICAgICBicmVhawotCSAgICBmaQotCSAgICBwcmV2PSIkY21kIgotCSAgZG9uZQotCi0JICBpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIlskXTAiJzsgdGhlbgotCSAgICBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRwcmV2YAotCSAgICBleHBvcnQgZWNob190ZXN0X3N0cmluZwotCSAgICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiWyRdMCIgJHsxKyJbJF1AIn0KLQkgIGVsc2UKLQkgICAgIyBPb3BzLiAgV2UgbG9zdCBjb21wbGV0ZWx5LCBzbyBqdXN0IHN0aWNrIHdpdGggZWNoby4KLQkgICAgRUNITz1lY2hvCi0JICBmaQotICAgICAgICBmaQotICAgICAgZmkKLSAgICBmaQotICBmaQotZmkKLQotIyBDb3B5IGVjaG8gYW5kIHF1b3RlIHRoZSBjb3B5IHN1aXRhYmx5IGZvciBwYXNzaW5nIHRvIGxpYnRvb2wgZnJvbQotIyB0aGUgTWFrZWZpbGUsIGluc3RlYWQgb2YgcXVvdGluZyB0aGUgb3JpZ2luYWwsIHdoaWNoIGlzIHVzZWQgbGF0ZXIuCi1sdF9FQ0hPPSRFQ0hPCi1pZiB0ZXN0ICJYJGx0X0VDSE8iID0gIlgkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIjsgdGhlbgotICAgbHRfRUNITz0iJENPTkZJR19TSEVMTCBcXFwkXFskXTAgLS1mYWxsYmFjay1lY2hvIgotZmkKLQotQUNfU1VCU1QobHRfRUNITykKLV0pCiBfTFRfREVDTChbXSwgW1NIRUxMXSwgWzFdLCBbU2hlbGwgdG8gdXNlIHdoZW4gaW52b2tpbmcgc2hlbGwgc2NyaXB0c10pCi1fTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sCi0gICAgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2hlc10pCitfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlc10pCiBdKSMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogCisjIF9MVF9XSVRIX1NZU1JPT1QKKyMgLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19MVF9XSVRIX1NZU1JPT1RdLAorW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQorQUNfQVJHX1dJVEgoW3N5c3Jvb3RdLAorWyAgLS13aXRoLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCitbXSwgW3dpdGhfc3lzcm9vdD1ub10pCisKK2RubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorbHRfc3lzcm9vdD0KK2Nhc2UgJHt3aXRoX3N5c3Jvb3R9IGluICMoCisgeWVzKQorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKyAgIGZpCisgICA7OyAjKAorIC8qKQorICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgOzsgIygKKyBub3wnJykKKyAgIDs7ICMoCisgKikKKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9zeXNyb290fV0pCisgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorICAgOzsKK2VzYWMKKworIEFDX01TR19SRVNVTFQoWyR7bHRfc3lzcm9vdDotbm99XSkKK19MVF9ERUNMKFtdLCBbbHRfc3lzcm9vdF0sIFswXSwgW1RoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgXWRubAorW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorCiAjIF9MVF9FTkFCTEVfTE9DSwogIyAtLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfRU5BQkxFX0xPQ0tdLApAQCAtMTIzNiw3ICsxMjgxLDcgQEAKICAgOzsKICotKi1pcml4NiopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnWyNdbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBlY2hvICdbI11saW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgogICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgpAQCAtMTMyOSwxNCArMTM3NCwyNyBAQAogICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgogICBmaQogICA7Owotc3BhcmMqLSpzb2xhcmlzKikKKyotKnNvbGFyaXMqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgogICAgICo2NC1iaXQqKQogICAgICAgY2FzZSAkbHRfY3ZfcHJvZ19nbnVfbGQgaW4KLSAgICAgIHllcyopIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIgOzsKKyAgICAgIHllcyopCisgICAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICAgaT84Ni0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgorICAgICAgICAgIDs7CisgICAgICAgIHNwYXJjKi0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgICMgR05VIGxkIDIuMjEgaW50cm9kdWNlZCBfc29sMiBlbXVsYXRpb25zLiAgVXNlIHRoZW0gaWYgYXZhaWxhYmxlLgorICAgICAgICBpZiAke0xELWxkfSAtViB8IGdyZXAgX3NvbDIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgICAgTEQ9IiR7TEQtbGR9X3NvbDIiCisgICAgICAgIGZpCisgICAgICAgIDs7CiAgICAgICAqKQogCWlmICR7TEQtbGR9IC02NCAtciAtbyBjb25mdGVzdDIubyBjb25mdGVzdC5vID4vZGV2L251bGwgMj4mMTsgdGhlbgogCSAgTEQ9IiR7TEQtbGR9IC02NCIKQEAgLTEzNTQsMTQgKzE0MTIsNDcgQEAKIF0pIyBfTFRfRU5BQkxFX0xPQ0sKIAogCisjIF9MVF9QUk9HX0FSCisjIC0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX1BST0dfQVJdLAorW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKKzogJHtBUj1hcn0KKzogJHtBUl9GTEFHUz1jcnV9CitfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKK19MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0sIFtGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZV0pCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKKyAgW2x0X2N2X2FyX2F0X2ZpbGU9bm8KKyAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLAorICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mQVNfTUVTU0FHRV9MT0dfRkQnCisgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorICAgICAgICBmaQorICAgICAgZmkKKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorICAgICBdKQorICBdKQorCitpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KK2Vsc2UKKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCitmaQorX0xUX0RFQ0woW10sIFthcmNoaXZlcl9saXN0X3NwZWNdLCBbMV0sCisgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQorXSkjIF9MVF9QUk9HX0FSCisKKwogIyBfTFRfQ01EX09MRF9BUkNISVZFCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKLVtBQ19DSEVDS19UT09MKEFSLCBhciwgZmFsc2UpCi10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCi1fTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdKQorW19MVF9QUk9HX0FSCiAKIEFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQogdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CkBAIC0xMzgwLDE4ICsxNDcxLDI3IEBACiBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCiAgIG9wZW5ic2QqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgICopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgZXNhYwotICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCR0b29sX29sZGxpYiIKIGZpCisKK2Nhc2UgJGhvc3Rfb3MgaW4KKyAgZGFyd2luKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249eWVzIDs7CisgICopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPW5vIDs7Citlc2FjCiBfTFRfREVDTChbXSwgW29sZF9wb3N0aW5zdGFsbF9jbWRzXSwgWzJdKQogX0xUX0RFQ0woW10sIFtvbGRfcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdKQogX0xUX1RBR0RFQ0woW10sIFtvbGRfYXJjaGl2ZV9jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuIG9sZC1zdHlsZSBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uXSwgWzBdLAorICAgIFtXaGV0aGVyIHRvIHVzZSBhIGxvY2sgZm9yIG9sZCBhcmNoaXZlIGV4dHJhY3Rpb25dKQogXSkjIF9MVF9DTURfT0xEX0FSQ0hJVkUKIAogCkBAIC0xNDE2LDE1ICsxNTE2LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zICIkYWNfb3V0ZmlsZSI7IHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzIG90aGVyIHRoYW4gdGhlIHVzdWFsIG91dHB1dC4KLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPmNvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyMiB8fCBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICQyPXllcwpAQCAtMTQ2NCw3ICsxNTY0LDcgQEAKICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgogICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICAkRUNITyAiWCRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBjb25mdGVzdC5leHAKKyAgICAgICAkRUNITyAiJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gY29uZnRlc3QuZXhwCiAgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgICQyPXllcwpAQCAtMTUyNyw2ICsxNjI3LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAorICBtaW50KikKKyAgICAjIE9uIE1pTlQgdGhpcyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgcnVuIG91dCBvZiBtZW1vcnkuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKwogICBhbWlnYW9zKikKICAgICAjIE9uIEFtaWdhT1Mgd2l0aCBwZGtzaCwgdGhpcyB0ZXN0IHRha2VzIGhvdXJzLCBsaXRlcmFsbHkuCiAgICAgIyBTbyB3ZSBqdXN0IHB1bnQgYW5kIHVzZSBhIG1pbmltdW0gbGluZSBsZW5ndGggb2YgODE5Mi4KQEAgLTE1NTIsNiArMTY1NywxMSBAQAogICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xOTY2MDgKICAgICA7OwogCisgIG9zMiopCisgICAgIyBUaGUgdGVzdCB0YWtlcyBhIGxvbmcgdGltZSBvbiBPUy8yLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyCisgICAgOzsKKwogICBvc2YqKQogICAgICMgRHIuIEhhbnMgRWtrZWhhcmQgUGxlc3NlciByZXBvcnRzIHNlZWluZyBhIGtlcm5lbCBwYW5pYyBydW5uaW5nIGNvbmZpZ3VyZQogICAgICMgZHVlIHRvIHRoaXMgdGVzdCB3aGVuIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXQgaXMgMSBvbiBUcnU2NC4gSXQgaXMgbm90CkBAIC0xNTkxLDggKzE3MDEsOCBAQAogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYCRTSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCi0JICAgICAgICAgPSAiWFgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKKyAgICAgIHdoaWxlIHsgdGVzdCAiWCJgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCisJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgogCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAogICAgICAgZG8KICAgICAgICAgaT1gZXhwciAkaSArIDFgCkBAIC0xNjQzLDcgKzE3NTMsNyBAQAogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi1bI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCitbI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTE2ODQsNyArMTc5NCwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTY5Myw3ICsxODA5LDExIEBACiAgIGlmIChzZWxmKQogICAgIHsKICAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOwotICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIGVsc2UKKyAgICAgICAgeworCSAgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgICAgIGVsc2UgcHV0cyAoZGxlcnJvciAoKSk7CisJfQogICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCiAgICAgfQogICBlbHNlCkBAIC0xODY5LDE2ICsxOTg5LDE2IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKICAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCi0gICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CiAgICB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAogICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcwpAQCAtMjAzNyw2ICsyMTU3LDcgQEAKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKIEFDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKIG00X2lmKFskMV0sCiAJW10sIFsKQEAgLTIwNDUsMTYgKzIxNjYsMjMgQEAKICAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CiAgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKICAgZXNhYwotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0icyw9XChbW0EtWmEtel1dOlwpLFwxLGciIDs7CisgICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgZXNhYworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAkbHRfc2VkX3N0cmlwX2VxYAorICBjYXNlICRsdF9zZWFyY2hfcGF0aF9zcGVjIGluCisgICpcOyopCiAgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgogICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcwogICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAogICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgZWxzZQotICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgZmkKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAncy87LyAvZydgCisgICAgOzsKKyAgKikKKyAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICA7OworICBlc2FjCiAgICMgT2ssIG5vdyB3ZSBoYXZlIHRoZSBwYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB3ZSBjYW4gc3RlcCB0aHJvdWdoIGl0CiAgICMgYW5kIGFkZCBtdWx0aWxpYiBkaXIgaWYgbmVjZXNzYXJ5LgogICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0KQEAgLTIwNjcsNyArMjE5NSw3IEBACiAJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCiAgICAgZmkKICAgZG9uZQotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIiB8IGF3ayAnCiBCRUdJTiB7UlM9IiAiOyBGUz0iL3xcbiI7fSB7CiAgIGx0X2Zvbz0iIjsKICAgbHRfY291bnQ9MDsKQEAgLTIwODcsNyArMjIxNSwxMyBAQAogICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbW2x0X2Zvb11dKys7IH0KICAgaWYgKGx0X2ZyZXFbW2x0X2Zvb11dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9CiB9J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAkbHRfc2VhcmNoX3BhdGhfc3BlY2AKKyAgIyBBV0sgcHJvZ3JhbSBhYm92ZSBlcnJvbmVvdXNseSBwcmVwZW5kcyAnLycgdG8gQzovZG9zL3BhdGhzCisgICMgZm9yIHRoZXNlIGhvc3RzLgorICBjYXNlICRob3N0X29zIGluCisgICAgbWluZ3cqIHwgY2VnY2MqKSBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHxcCisgICAgICAkU0VEICdzLC9cKFtbQS1aYS16XV06XCksXDEsZydgIDs7CisgIGVzYWMKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCiBmaV0pCkBAIC0yMTEzLDcgKzIyNDcsNyBAQAogCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCkBAIC0yMTIyLDcgKzIyNTYsNyBAQAogICA7OwogCiBhaXhbWzQtOV1dKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCkBAIC0yMTc1LDcgKzIzMDksNyBAQAogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJworICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gZnVuY19lY2hvX2FsbCAiJGxpYiIgfCAkU0VEICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwpAQCAtMjE4Nyw3ICsyMzIxLDcgQEAKICAgOzsKIAogYnNkaVtbNDVdXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKQEAgLTIyMDYsOCArMjM0MCw5IEBACiAgIG5lZWRfdmVyc2lvbj1ubwogICBuZWVkX2xpYl9wcmVmaXg9bm8KIAotICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorICB5ZXMsKikKKyAgICAjIGdjYwogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwogICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgpAQCAtMjIyOCwzNiArMjM2Myw4MyBAQAogICAgIGN5Z3dpbiopCiAgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorbTRfaWYoWyQxXSwgW10sWworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC91c3IvbGliL3czMmFwaSJdKQogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAogICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCAkR1JFUCAiXmxpYnJhcmllczoiIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KLSAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5Ci0gICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKLSAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQotICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCi0gICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKLSAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICAgICAgZWxzZQotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICAgICAgZmkKICAgICAgIDs7CiAgICAgcHczMiopCiAgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgOzsKICAgICBlc2FjCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICA7OworCisgICosY2wqKQorICAgICMgTmF0aXZlIE1TVkMKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworCisgICAgY2FzZSAkYnVpbGRfb3MgaW4KKyAgICBtaW5ndyopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisgICAgICBsdF9zYXZlX2lmcz0kSUZTCisgICAgICBJRlM9JzsnCisgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisgICAgICBkbworICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisgICAgICBkb25lCisgICAgICBJRlM9JGx0X3NhdmVfaWZzCisgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW1thLXpBLVpdXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisgICAgICA7OworICAgIGN5Z3dpbiopCisgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCisgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisgICAgICBlbHNlCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIGZpCisgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorICAgICAgICRSTSBcJGRscGF0aCcKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwogICAgIDs7CiAKICAgKikKKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICAgOzsKICAgZXNhYwotICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgIDs7CkBAIC0yMjc4LDcgKzI0NjAsNyBAQAogICA7OwogCiBkZ3V4KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCkBAIC0yMjg2LDEwICsyNDY4LDYgQEAKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIAotZnJlZWJzZDEqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCiBmcmVlYnNkKiB8IGRyYWdvbmZseSopCiAgICMgRHJhZ29uRmx5IGRvZXMgbm90IGhhdmUgYW91dC4gIFdoZW4vaWYgdGhleSBpbXBsZW1lbnQgYSBuZXcKICAgIyB2ZXJzaW9uaW5nIG1lY2hhbmlzbSwgYWRqdXN0IHRoaXMuCkBAIC0yMjk3LDcgKzI0NzUsNyBAQAogICAgIG9iamZvcm1hdD1gL3Vzci9iaW4vb2JqZm9ybWF0YAogICBlbHNlCiAgICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGZyZWVic2RbWzEyM11dKikgb2JqZm9ybWF0PWFvdXQgOzsKKyAgICBmcmVlYnNkW1syM11dLiopIG9iamZvcm1hdD1hb3V0IDs7CiAgICAgKikgb2JqZm9ybWF0PWVsZiA7OwogICAgIGVzYWMKICAgZmkKQEAgLTIzMTUsNyArMjQ5Myw3IEBACiAgIGVzYWMKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgY2FzZSAkaG9zdF9vcyBpbgotICBmcmVlYnNkMiopCisgIGZyZWVic2QyLiopCiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogICAgIDs7CiAgIGZyZWVic2QzLltbMDFdXSogfCBmcmVlYnNkZWxmMy5bWzAxXV0qKQpAQCAtMjMzNSwxMiArMjUxMywyNiBAQAogICA7OwogCiBnbnUqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworaGFpa3UqKQorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIHJ1bnRpbWVfbG9hZGVyIgorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIApAQCAtMjM4NiwxMiArMjU3OCwxNCBAQAogICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICAgOzsKICAgZXNhYwotICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NS4KKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgogICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgIyBvciBmYWlscyBvdXRyaWdodCwgc28gb3ZlcnJpZGUgYXRvbWljYWxseToKKyAgaW5zdGFsbF9vdmVycmlkZV9tb2RlPTU1NQogICA7OwogCiBpbnRlcml4W1szLTldXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKQEAgLTI0MDcsNyArMjYwMSw3IEBACiAgICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwogICAgICopCiAJaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotCQl2ZXJzaW9uX3R5cGU9bGludXgKKwkJdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCWVsc2UKIAkJdmVyc2lvbl90eXBlPWlyaXgKIAlmaSA7OwpAQCAtMjQ0NCw5ICsyNjM4LDkgQEAKICAgZHluYW1pY19saW5rZXI9bm8KICAgOzsKIAotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKQEAgLTI0NTQsMjkgKzI2NDgsMzEgQEAKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisKICAgIyBTb21lIGJpbnV0aWxzIGxkIGFyZSBwYXRjaGVkIHRvIHNldCBEVF9SVU5QQVRICi0gIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICBzYXZlX2xpYmRpcj0kbGliZGlyCi0gIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKVwiOyBcCi0gICAgICAgTERGTEFHUz1cIlwkTERGTEFHUyAkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSlcIiIKLSAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAotICAgIFtBU19JRihbICgkT0JKRFVNUCAtcCBjb25mdGVzdCRhY19leGVleHQpIDI+L2Rldi9udWxsIHwgZ3JlcCAiUlVOUEFUSC4qJGxpYmRpciIgPi9kZXYvbnVsbF0sCi0gICAgICAgW3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXNdKV0pCi0gIExERkxBR1M9JHNhdmVfTERGTEFHUwotICBsaWJkaXI9JHNhdmVfbGliZGlyCisgIEFDX0NBQ0hFX1ZBTChbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoXSwKKyAgICBbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgc2F2ZV9saWJkaXI9JGxpYmRpcgorICAgIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKVwiOyBcCisJIExERkxBR1M9XCJcJExERkxBR1MgJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpXCIiCisgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAorICAgICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKKwkgW2x0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXNdKV0pCisgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgICAgbGliZGlyPSRzYXZlX2xpYmRpcgorICAgIF0pCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCiAKICAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCiAgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBZGQgQUJJLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBzeXN0ZW0gbGlicmFyeSBwYXRoLgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYjY0IC91c3IvbGliNjQgL2xpYiAvdXNyL2xpYiIKLQogICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAogICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCi0gICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyAkbHRfbGRfZXh0cmEiCisgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZztzLyIvL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgogICBmaQogCiAgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgpAQCAtMjQ4OCw2ICsyNjg0LDE4IEBACiAgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCiAgIDs7CiAKK25ldGJzZGVsZiotZ251KQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgOzsKKwogbmV0YnNkKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCiAgIG5lZWRfbGliX3ByZWZpeD1ubwpAQCAtMjUwNyw3ICsyNzE1LDcgQEAKICAgOzsKIAogbmV3c29zNikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTI1NzYsNyArMjc4NCw3IEBACiAgIDs7CiAKIHNvbGFyaXMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMjYwMSw3ICsyODA5LDcgQEAKICAgOzsKIAogc3lzdjQgfCBzeXN2NC4zKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0yNjI1LDcgKzI4MzMsNyBAQAogCiBzeXN2NCpNUCopCiAgIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KLSAgICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvcicKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjY1Niw3ICsyODY0LDcgQEAKIAogdHBmKikKICAgIyBUUEYgaXMgYSBjcm9zcy10YXJnZXQgb25seS4gIFByZWZlcnJlZCBjcm9zcy1ob3N0ID0gR05VL0xpbnV4LgotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMjY2Niw3ICsyODc0LDcgQEAKICAgOzsKIAogdXRzNCopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjcwOCw2ICsyOTE2LDggQEAKICAgICBUaGUgbGFzdCBuYW1lIGlzIHRoZSBvbmUgdGhhdCB0aGUgbGlua2VyIGZpbmRzIHdpdGggLWxOQU1FXV0pCiBfTFRfREVDTChbXSwgW3NvbmFtZV9zcGVjXSwgWzFdLAogICAgIFtbVGhlIGNvZGVkIG5hbWUgb2YgdGhlIGxpYnJhcnksIGlmIGRpZmZlcmVudCBmcm9tIHRoZSByZWFsIG5hbWVdXSkKK19MVF9ERUNMKFtdLCBbaW5zdGFsbF9vdmVycmlkZV9tb2RlXSwgWzFdLAorICAgIFtQZXJtaXNzaW9uIG1vZGUgb3ZlcnJpZGUgZm9yIGluc3RhbGxhdGlvbiBvZiBzaGFyZWQgbGlicmFyaWVzXSkKIF9MVF9ERUNMKFtdLCBbcG9zdGluc3RhbGxfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZCB0byB1c2UgYWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIGEgc2hhcmVkIGFyY2hpdmVdKQogX0xUX0RFQ0woW10sIFtwb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0sCkBAIC0yODIwLDYgKzMwMzAsNyBAQAogQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pZG5sCiAKIEFDX0FSR19XSVRIKFtnbnUtbGRdLAogICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCkBAIC0yOTQxLDYgKzMxNTIsMTEgQEAKIGVzYWMKIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKIGNhc2UgJGhvc3Rfb3MgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKyAgICBmaQorICAgIDs7CiAgIGRhcndpbiopCiAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKQEAgLTI5NDksOCArMzE2NSw4IEBACiAgICAgZmkKICAgICA7OwogZXNhYwotX0xUX0RFQ0woW10sIFtyZWxvYWRfZmxhZ10sIFsxXSwgW0hvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXNdKWRubAotX0xUX0RFQ0woW10sIFtyZWxvYWRfY21kc10sIFsyXSlkbmwKK19MVF9UQUdERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKK19MVF9UQUdERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCiBdKSMgX0xUX0NNRF9SRUxPQUQKIAogCkBAIC0zMDAyLDE2ICszMjE4LDE4IEBACiAgICMgQmFzZSBNU1lTL01pbkdXIGRvIG5vdCBwcm92aWRlIHRoZSAnZmlsZScgY29tbWFuZCBuZWVkZWQgYnkKICAgIyBmdW5jX3dpbjMyX2xpYmlkIHNoZWxsIGZ1bmN0aW9uLCBzbyB1c2UgYSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcsCiAgICMgdW5sZXNzIHdlIGZpbmQgJ2ZpbGUnLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHdlIGFyZSBjcm9zcy1jb21waWxpbmcuCi0gIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICMgZnVuY193aW4zMl9saWJpZCBhc3N1bWVzIEJTRCBubSwgc28gZGlzYWxsb3cgaXQgaWYgdXNpbmcgTVMgZHVtcGJpbi4KKyAgaWYgKCB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJCU0Qgbm0iICYmIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgIGVsc2UKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgZmkKICAgOzsKIAotY2VnY2MpCitjZWdjYyopCiAgICMgdXNlIHRoZSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcuIFNlZSBtaW5ndyouCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlLWFybS0uKmxpdHRsZSguKmFyY2hpdGVjdHVyZTogYXJtKT8nCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKQEAgLTMwNDEsNiArMzI1OSwxMCBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCitoYWlrdSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKIGhwdXgxMC4yMCogfCBocHV4MTEqKQogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCiAgIGNhc2UgJGhvc3RfY3B1IGluCkBAIC0zMDQ5LDExICszMjcxLDExIEBACiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KICAgICA7OwogICBocHBhKjY0KikKLSAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nXQorICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEZbIC1dWzAtOV1bMC05XSkoLWJpdCk/KCBbTE1dU0IpPyBzaGFyZWQgb2JqZWN0KCBmaWxlKT9bLCAtXSogUEEtUklTQyBbMC05XVwuWzAtOV0nXQogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAogICAgIDs7CiAgICopCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV0uW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV1cLltbMC05XV0pIHNoYXJlZCBsaWJyYXJ5JwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2xpYmMuc2wKICAgICA7OwogICBlc2FjCkBAIC0zMDc0LDEyICszMjk2LDEyIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLW5ldGJzZCopCituZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCiAgIGVsc2UKQEAgLTMxNTMsNiArMzM3NSwyMSBAQAogICA7OwogZXNhYwogXSkKKworZmlsZV9tYWdpY19nbG9iPQord2FudF9ub2Nhc2VnbG9iPW5vCitpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorICBjYXNlICRob3N0X29zIGluCisgIG1pbmd3KiB8IHB3MzIqKQorICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKyAgICBlbHNlCisgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tbXDFdXVwvW1tcMV1dXC9nOy9nImAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK2ZpCisKIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KQEAgLTMxNjAsNyArMzM5NywxMSBAQAogX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKICAgICBbTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHNdKQogX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLSAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyJdKQorICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorICAgIFtIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCitfTFRfREVDTChbXSwgW3dhbnRfbm9jYXNlZ2xvYl0sIFsxXSwKKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKIF0pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECiAKIApAQCAtMzIxNyw3ICszNDU4LDE5IEBACiAgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKIGVsc2UKICAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCi0gIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFsiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiXSwgOikKKyAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuIDoKKyAgICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKyAgZWxzZQorICAgIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFtkdW1wYmluICJsaW5rIC1kdW1wIl0sIDopCisgICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICAqQ09GRiopCisgICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIERVTVBCSU49OgorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCiAgIEFDX1NVQlNUKFtEVU1QQklOXSkKICAgaWYgdGVzdCAiJERVTVBCSU4iICE9ICI6IjsgdGhlbgogICAgIE5NPSIkRFVNUEJJTiIKQEAgLTMyMzAsMTMgKzM0ODMsMTMgQEAKIEFDX0NBQ0hFX0NIRUNLKFt0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlXSwgW2x0X2N2X25tX2ludGVyZmFjZV0sCiAgIFtsdF9jdl9ubV9pbnRlcmZhY2U9IkJTRCBubSIKICAgZWNobyAiaW50IHNvbWVfdmFyaWFibGUgPSAwOyIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQogICAoZXZhbCAiJE5NIFwiY29uZnRlc3QuJGFjX29iamV4dFwiIiAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dCkKICAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIGNhdCBjb25mdGVzdC5vdXQgPiZBU19NRVNTQUdFX0xPR19GRAogICBpZiAkR1JFUCAnRXh0ZXJuYWwuKnNvbWVfdmFyaWFibGUnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X25tX2ludGVyZmFjZT0iTVMgZHVtcGJpbiIKQEAgLTMyNTEsNiArMzUwNCw2NyBAQAogZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX1BST0dfTk1dLCBbXSkKIAorIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBob3cgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeQorIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCittNF9kZWZ1bihbX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUJdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRExMVE9PTF0pCitBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCitsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCwKK1tsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKworY2FzZSAkaG9zdF9vcyBpbgorY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisgICotLWlkZW50aWZ5LXN0cmljdCopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisgICAgOzsKKyAgKikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKyAgICA7OworICBlc2FjCisgIDs7CisqKQorICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorICA7OworZXNhYworXSkKK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAordGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworCitfTFRfREVDTChbXSwgW3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kXSwgWzFdLAorICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKK10pIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorCisKKyMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorbTRfZGVmdW4oW19MVF9QQVRIX01BTklGRVNUX1RPT0xdLAorW0FDX0NIRUNLX1RPT0woTUFOSUZFU1RfVE9PTCwgbXQsIDopCit0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorQUNfQ0FDSEVfQ0hFQ0soW2lmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbF0sIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2xdLAorICBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0Kl0pCitpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorICBNQU5JRkVTVF9UT09MPToKK2ZpCitfTFRfREVDTChbXSwgW01BTklGRVNUX1RPT0xdLCBbMV0sIFtNYW5pZmVzdCB0b29sXSlkbmwKK10pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisKIAogIyBMVF9MSUJfTQogIyAtLS0tLS0tLQpAQCAtMzI1OSw3ICszNTczLDcgQEAKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBMSUJNPQogY2FzZSAkaG9zdCBpbgotKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKKyotKi1iZW9zKiB8ICotKi1jZWdjYyogfCAqLSotY3lnd2luKiB8ICotKi1oYWlrdSogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKICAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CiAgIDs7CiAqLW5jci1zeXN2NC4zKikKQEAgLTMyODcsNyArMzYwMSwxMiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQogCiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgIG52Y2MqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1YY29tcGlsZXIgLWZuby1idWlsdGluJyA7OworICAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicgOzsKKyAgZXNhYwogCiAgIF9MVF9DT01QSUxFUl9PUFRJT04oW2lmICRjb21waWxlciBzdXBwb3J0cyAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zXSwKICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucywKQEAgLTMzMDQsNiArMzYyMyw3IEBACiBtNF9kZWZ1bihbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10sCiBbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAogQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0FXS10pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKQEAgLTMzNzEsOCArMzY5MSw4IEBACiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKIAogIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiBvcHRfY3I9CkBAIC0zMzk2LDYgKzM3MTYsNyBAQAogICAgICMgd2hpY2ggc3RhcnQgd2l0aCBAIG9yID8uCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJEFXSyBbJyJcCiAiICAgICB7bGFzdF9zZWN0aW9uPXNlY3Rpb247IHNlY3Rpb249XCQgM307IlwKKyIgICAgIC9eQ09GRiBTWU1CT0wgVEFCTEUve2ZvcihpIGluIGhpZGUpIGRlbGV0ZSBoaWRlW2ldfTsiXAogIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCiAiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAogIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXApAQCAtMzQwOCw2ICszNzI5LDcgQEAKICAgZWxzZQogICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWwkgXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWwkgXV1bWwkgXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgIGZpCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKIAogICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgcGlwZV93b3Jrcz1ubwpAQCAtMzQyOSw3ICszNzUxLDcgQEAKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICAjIE5vdyB0cnkgdG8gZ3JhYiB0aGUgc3ltYm9scy4KICAgICBubGlzdD1jb25mdGVzdC5ubQotICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXD4gJG5saXN0KSAmJiB0ZXN0IC1zICIkbmxpc3QiOyB0aGVuCisgICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgogICAgICAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KICAgICAgIGlmIHNvcnQgIiRubGlzdCIgfCB1bmlxID4gIiRubGlzdCJUOyB0aGVuCiAJbXYgLWYgIiRubGlzdCJUICIkbmxpc3QiCkBAIC0zNDQxLDYgKzM3NjMsMTggQEAKICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUIGNvbnN0CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtMzQ1Miw3ICszNzg2LDcgQEAKIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogCiAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi1jb25zdCBzdHJ1Y3QgeworTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiB9CkBAIC0zNDc4LDE1ICszODEyLDE1IEBACiBfTFRfRU9GCiAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgogCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKIAkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KIAkgICAgcGlwZV93b3Jrcz15ZXMKIAkgIGZpCi0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCiAJZWxzZQogCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAogCWZpCkBAIC0zNTE5LDYgKzM4NTMsMTMgQEAKICAgQUNfTVNHX1JFU1VMVChvaykKIGZpCiAKKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgoraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCitmaQorCiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF9waXBlXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLCBbMV0sCiAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCkBAIC0zNTI5LDYgKzM4NzAsOCBAQAogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sCiAgICAgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLCBbMV0sCiAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKK19MVF9ERUNMKFtdLCBbbm1fZmlsZV9saXN0X3NwZWNdLCBbMV0sCisgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgJE5NXSkKIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUwogCiAKQEAgLTM1NDAsNyArMzg4Myw2IEBACiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CiAKLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgogICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtMzU5MSw2ICszOTMzLDExIEBACiAgICAgICAjIERKR1BQIGRvZXMgbm90IHN1cHBvcnQgc2hhcmVkIGxpYnJhcmllcyBhdCBhbGwKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KICAgICAgIDs7CisgICAgaGFpa3UqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEhhaWt1LgorICAgICAgIyBUaGUgIi1zdGF0aWMiIGZsYWcgZXhpc3RzLCBidXQgaXMgYnJva2VuLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorICAgICAgOzsKICAgICBpbnRlcml4W1szLTldXSopCiAgICAgICAjIEludGVyaXggMy54IGdjYyAtZnBpYy8tZlBJQyBvcHRpb25zIGdlbmVyYXRlIGJyb2tlbiBjb2RlLgogICAgICAgIyBJbnN0ZWFkLCB3ZSByZWxvY2F0ZSBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUuCkBAIC0zNjQwLDYgKzM5ODcsMTIgQEAKIAkgIDs7CiAJZXNhYwogCTs7CisgICAgICBtaW5ndyogfCBjeWd3aW4qIHwgb3MyKiB8IHB3MzIqIHwgY2VnY2MqKQorCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorCW00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorCTs7CiAgICAgICBkZ3V4KikKIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgZWMrKyopCkBAIC0zNjk2LDcgKzQwNDksNyBAQAogCSAgICA7OwogCWVzYWMKIAk7OwotICAgICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgS0NDKikKIAkgICAgIyBLQUkgQysrIENvbXBpbGVyCkBAIC0zNzI5LDggKzQwODIsOCBAQAogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAJICAgIDs7Ci0JICB4bGMqIHwgeGxDKikKLQkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQworCSAgeGxjKiB8IHhsQyogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikKKwkgICAgIyBJQk0gWEwgOC4wLCA5LjAgb24gUFBDIGFuZCBCbHVlR2VuZQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctcXN0YXRpY2xpbmsnCkBAIC0zNzYwLDcgKzQxMTMsNyBAQAogCSAgICA7OwogCWVzYWMKIAk7OwotICAgICAgbmV0YnNkKikKKyAgICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKIAk7OwogICAgICAgKnFueCogfCAqbnRvKikKICAgICAgICAgIyBRTlggdXNlcyBHTlUgQysrLCBidXQgbmVlZCB0byBkZWZpbmUgLXNoYXJlZCBvcHRpb24gdG9vLCBvdGhlcndpc2UKQEAgLTM3OTIsNyArNDE0NSw3IEBACiAJOzsKICAgICAgIHNvbGFyaXMqKQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCisJICBDQyogfCBzdW5DQyopCiAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKQEAgLTM4OTYsNiArNDI0OSwxMiBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSGFpa3UuCisgICAgICAjIFRoZSAiLXN0YXRpYyIgZmxhZyBleGlzdHMsIGJ1dCBpcyBicm9rZW4uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgICAgICA7OworCiAgICAgaHB1eCopCiAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKICAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZwpAQCAtMzkzOCw2ICs0Mjk3LDE1IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwogICAgICAgOzsKICAgICBlc2FjCisKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIG52Y2MqKSAjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1YbGlua2VyICcKKyAgICAgIGlmIHRlc3QgLW4gIiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkiOyB0aGVuCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iLVhjb21waWxlciAkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIgorICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYwogICBlbHNlCiAgICAgIyBQT1JUTUUgQ2hlY2sgZm9yIGZsYWcgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaCB0aGUgc3lzdGVtIGNvbXBpbGVyLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTM5ODAsNyArNDM0OCw3IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogICAgICAgOzsKIAotICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICMgb2xkIEludGVsIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogICAgICAgZWNjKikKQEAgLTQwMDEsNyArNDM2OSwxMyBAQAogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLS1zaGFyZWQnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctLXN0YXRpYycKIAk7OwotICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCisgICAgICBuYWdmb3IqKQorCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLC1XbCwsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCTs7CisgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKQEAgLTQwMTMsMjUgKzQzODcsNDAgQEAKICAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCiAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAgICAgICAgIDs7Ci0gICAgICB4bCopCi0JIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xIG9uIFBQQworICAgICAgeGwqIHwgYmd4bCogfCBiZ2YqIHwgbXBpeGwqKQorCSMgSUJNIFhMIEMgOC4wL0ZvcnRyYW4gMTAuMSwgMTEuMSBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKIAk7OwogICAgICAgKikKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDZXJlc1wgRm9ydHJhbiogfCAqU3VuKkZvcnRyYW4qXCBbWzEtN11dLiogfCAqU3VuKkZvcnRyYW4qXCA4LltbMC0zXV0qKQorCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nJworCSAgOzsKKwkqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCisJICA7OwogCSpTdW5cIEMqKQogCSAgIyBTdW4gQyA1LjkKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICA7OwotCSpTdW5cIEYqKQotCSAgIyBTdW4gRm9ydHJhbiA4LjMgcGFzc2VzIGFsbCB1bnJlY29nbml6ZWQgZmxhZ3MgdG8gdGhlIGxpbmtlcgotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgICAgKkludGVsKlwgW1tDRl1dKkNvbXBpbGVyKikKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKwkgIDs7CisJKlBvcnRsYW5kXCBHcm91cCopCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZwaWMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC00MDYzLDcgKzQ0NTIsNyBAQAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICopCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKQEAgLTQxMjAsOSArNDUwOSwxMSBAQAogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKUAmdEBtNF9pZihbJDFdLFtdLFsgLURQSUNdLFttNF9pZihbJDFdLFtDWFhdLFsgLURQSUNdLFtdKV0pIgogICAgIDs7CiBlc2FjCi1BQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKLV9MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAotCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKworQUNfQ0FDSEVfQ0hFQ0soW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSwKKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCitfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKQogCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCkBAIC00MTQxLDYgKzQ1MzIsOCBAQAogX0xUX1RBR0RFQ0woW3BpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfcGljXSwgWzFdLAogCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQogCitfTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKKwlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAjCkBAIC00MTYxLDYgKzQ1NTQsNyBAQAogbTRfZGVmdW4oW19MVF9MSU5LRVJfU0hMSUJTXSwKIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCkBAIC00MTY5LDI3ICs0NTYzLDQwIEBACiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCiBtNF9pZihbJDFdLCBbQ1hYXSwgWwogICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXhbWzQtOV1dKikKICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KICAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisgICAgIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsIGRlZmluZWQKKyAgICAjIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgogICAgIGlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZWxzZQogICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZmkKICAgICA7OwogICBwdzMyKikKICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0iJGx0ZGxsX2NtZHMiCi0gIDs7CisgICAgOzsKICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKLSAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gIDs7CisgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICBjbCopCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPSdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUnxfSU1QT1JUX0RFU0NSSVBUT1JfLionCisgICAgICA7OworICAgICopCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGdudSopCisgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KKyAgICA7OwogICAqKQogICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gIDs7CisgICAgOzsKICAgZXNhYwotICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KIF0sIFsKICAgcnVucGF0aF92YXI9CiAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTQyMDQsNyArNDYxMSw2IEBACiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQogICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZApAQCAtNDI0OSwxMCArNDY1NSwzOSBAQAogICBvcGVuYnNkKikKICAgICB3aXRoX2dudV9sZD1ubwogICAgIDs7CisgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBnbnUqKQorICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPW5vCisgICAgOzsKICAgZXNhYwogCiAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisKKyAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCisgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgorICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwogICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKwkjIFRoZSBBSVggcG9ydCBvZiBHTlUgbGQgaGFzIGFsd2F5cyBhc3BpcmVkIHRvIGNvbXBhdGliaWxpdHkKKwkjIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIuICBIb3dldmVyLCBhcyB0aGUgd2FybmluZyBpbiB0aGUgR05VIGxkCisJIyBibG9jayBzYXlzLCB2ZXJzaW9ucyBiZWZvcmUgMi4xOS41KiBjb3VsZG4ndCByZWFsbHkgY3JlYXRlIHdvcmtpbmcKKwkjIHNoYXJlZCBsaWJyYXJpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVyZmFjZSB1c2VkLgorCWNhc2UgYCRMRCAtdiAyPiYxYCBpbgorCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuMTkuNSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi5bWzItOV1dKikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCBbWzMtOV1dKikgOzsKKwkgICopCisJICAgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCSAgICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwk7OworICAgIGVzYWMKKyAgZmkKKworICBpZiB0ZXN0ICIkbHRfdXNlX2dudV9sZF9pbnRlcmZhY2UiID0geWVzOyB0aGVuCiAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKICAgICB3bGFyYz0nJHt3bH0nCiAKQEAgLTQyNzAsNiArNDcwNSw3IEBACiAgICAgZmkKICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICpHTlVcIGdvbGQqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CiAgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KQEAgLTQyODUsMTEgKzQ3MjEsMTIgQEAKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjE5LCBpcyByZXBvcnRlZAogKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCiAqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKLSoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKLSoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGJpbnV0aWxzCisqKiogMi4yMCBvciBhYm92ZSwgb3IgbW9kaWZ5IHlvdXIgUEFUSCBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQuCisqKiogWW91IHdpbGwgdGhlbiBuZWVkIHRvIHJlc3RhcnQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KIAogX0xUX0VPRgogICAgICAgZmkKQEAgLTQzMjUsMTAgKzQ3NjIsMTIgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKQEAgLTQzNDYsNiArNDc4NSwxMSBAQAogICAgICAgZmkKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00MzYxLDcgKzQ4MDUsNyBAQAogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCi0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251KQorICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KICAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTQzNzEsMTUgKzQ4MTUsMTYgQEAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKIAkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCiAgICAgICB0aGVuCi0JdG1wX2FkZGZsYWc9CisJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtNDM5MCwxMyArNDgzNSwxNyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7Ci0JeGxbW2NDXV0qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwl4bFtbY0NdXSogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKKwludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcworCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCkBAIC00NDEyLDE3ICs0ODYxLDE2IEBACiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCXhsZiopCisJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0JICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgogCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgIGZpCiAJICA7OwogCWVzYWMKQEAgLTQ0MzEsMTMgKzQ4NzksMTMgQEAKICAgICAgIGZpCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAJd2xhcmM9CiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTQ0NTUsOCArNDkwMyw4IEBACiAKIF9MVF9FT0YKICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDUwMiw4ICs0OTUwLDggQEAKIAogICAgICopCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCkBAIC00NTQzLDggKzQ5OTEsMTAgQEAKICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KIAkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCisJIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCisJIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQogCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKQEAgLTQ2MDYsNiArNTA1Niw3IEBACiAJaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCiAJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKIAlmaQorCV9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPW5vCiAgICAgICBlbHNlCiAJIyBub3QgdXNpbmcgZ2NjCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KQEAgLTQ2MzEsOSArNTA4Miw5IEBACiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCiAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0gICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgogICAgICAgZWxzZQogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCkBAIC00NjQyLDE0ICs1MDkzLDE5IEBACiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKIAkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJwotCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGVsc2UKKwkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgZmkKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKIAkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJwpAQCAtNDY4MSwyMCArNTEzNyw2NCBAQAogICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSAgICAgIGxpYmV4dD1saWIKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYCRFQ0hPICJYJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotICAgICAgX0xUX1RBR1ZBUihmaXhfc3JjZmlsZV9wYXRoLCAkMSk9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgY2wqKQorCSMgTmF0aXZlIE1TVkMKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworCV9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICBlbHNlCisJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICBmaX4KKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKwkgIGxpbmtuYW1lcz0nCisJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT0nX05VTExfSU1QT1JUX0RFU0NSSVBUT1J8X0lNUE9SVF9ERVNDUklQVE9SXy4qJworCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKwkjIERvbid0IHVzZSByYW5saWIKKwlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgKikKKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICA7OworCSAgZXNhY34KKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgZmknCisJOzsKKyAgICAgICopCisJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKQEAgLTQ3MDcsMTAgKzUyMDcsNiBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KICAgICAgIDs7CiAKLSAgICBmcmVlYnNkMSopCi0gICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICA7OwotCiAgICAgIyBGcmVlQlNEIDIuMi5bMDEyXSBhbGxvd3MgdXMgdG8gaW5jbHVkZSBjKytydDAubyB0byBnZXQgQysrIGNvbnN0cnVjdG9yCiAgICAgIyBzdXBwb3J0LiAgRnV0dXJlIHZlcnNpb25zIGRvIHRoaXMgYXV0b21hdGljYWxseSwgYnV0IGFuIGV4cGxpY2l0IGMrK3J0MC5vCiAgICAgIyBkb2VzIG5vdCBicmVhayBhbnl0aGluZywgYW5kIGhlbHBzIHNpZ25pZmljYW50bHkgKGF0IHRoZSBjb3N0IG9mIGEgbGl0dGxlCkBAIC00NzIzLDcgKzUyMTksNyBAQAogICAgICAgOzsKIAogICAgICMgVW5mb3J0dW5hdGVseSwgb2xkZXIgdmVyc2lvbnMgb2YgRnJlZUJTRCAyIGRvIG5vdCBoYXZlIHRoaXMgZmVhdHVyZS4KLSAgICBmcmVlYnNkMiopCisgICAgZnJlZWJzZDIuKikKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCkBAIC00NzMyLDcgKzUyMjgsNyBAQAogCiAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwpAQCAtNDc0MCw3ICs1MjM2LDcgQEAKIAogICAgIGhwdXg5KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGZpCkBAIC00NzU1LDE0ICs1MjUxLDEzIEBACiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0JX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9JytiICRsaWJkaXInCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKQEAgLTQ3NzQsMTYgKzUyNjksMTYgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAlpYTY0KikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAllc2FjCiAgICAgICBlbHNlCkBAIC00Nzk1LDcgKzUyOTAsMTQgQEAKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCW00X2lmKCQxLCBbXSwgWworCSAgIyBPbGRlciB2ZXJzaW9ucyBvZiB0aGUgMTEuMDAgY29tcGlsZXIgZG8gbm90IHVuZGVyc3RhbmQgLWIgeWV0CisJICAjIChIUDkyNDUzLTAxIEEuMTEuMDEuMjAgZG9lc24ndCwgSFA5MjQ1My0wMSBCLjExLlguMzUxNzUtMzUxNzYuR1AgZG9lcykKKwkgIF9MVF9MSU5LRVJfT1BUSU9OKFtpZiAkQ0MgdW5kZXJzdGFuZHMgLWJdLAorCSAgICBfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfX2IsICQxKSwgWy1iXSwKKwkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJ10pXSwKKwkgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddKQogCSAgOzsKIAllc2FjCiAgICAgICBmaQpAQCAtNDgyMywxOSArNTMyNSwzNCBAQAogCiAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAogCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0gICAgICAgIEFDX0xJTktfSUZFTFNFKGludCBmb28odm9pZCkge30sCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgICkKLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKKwkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCisJICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisJICAgQUNfTElOS19JRkVMU0UoCisJICAgICBbQUNfTEFOR19TT1VSQ0UoCisJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisJCQkgICAgICBbQysrXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisJCQkgICAgICBbRm9ydHJhbiA3N10sIFtbCisgICAgICBzdWJyb3V0aW5lIGZvbworICAgICAgZW5kXV0sCisJCQkgICAgICBbRm9ydHJhbl0sIFtbCisgICAgICBzdWJyb3V0aW5lIGZvbworICAgICAgZW5kXV0pXSldLAorCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAorCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCisgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJZmkKICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC00ODQ0LDcgKzUzNjEsNyBAQAogICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEub3V0CiAgICAgICBlbHNlCkBAIC00ODk3LDE3ICs1NDE0LDE3IEBACiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKICAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICA7OwogCiAgICAgb3NmMyopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKQEAgLTQ5MTcsMTMgKzU0MzQsMTMgQEAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKwkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKIAogCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCkBAIC00OTM2LDkgKzU0NTMsOSBAQAogICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJd2xhcmM9JyR7d2x9JwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogICAgICAgZWxzZQogCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSoiQ29tcGlsZXJzIDUuMCIqKQpAQCAtNTExNCwzNiArNTYzMSwzOCBAQAogICAgICAgIyBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIGltcGxpY2l0bHkgbGlua3Mgd2l0aCAtbGMgc2luY2Ugb24gc29tZQogICAgICAgIyBzeXN0ZW1zLCAtbGdjYyBoYXMgdG8gY29tZSBiZWZvcmUgLWxjLiBJZiBnY2MgYWxyZWFkeSBwYXNzZXMgLWxjCiAgICAgICAjIHRvIGxkLCBkb24ndCBhZGQgLWxjIGJlZm9yZSAtbGdjYy4KLSAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluXSkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAorICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0sCisJW2x0X2N2X11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSksCisJWyRSTSBjb25mdGVzdCoKKwllY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKIAotICAgICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcnI7IHRoZW4KLSAgICAgICAgc29uYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYj1jb25mdGVzdAotICAgICAgICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKLSAgICAgICAgZGVwbGlicz0KLSAgICAgICAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCi0JcGljX2ZsYWc9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKQotICAgICAgICBjb21waWxlcl9mbGFncz0tdgotICAgICAgICBsaW5rZXJfZmxhZ3M9LXYKLSAgICAgICAgdmVyc3RyaW5nPQotICAgICAgICBvdXRwdXRfb2JqZGlyPS4KLSAgICAgICAgbGlibmFtZT1jb25mdGVzdAotICAgICAgICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQotICAgICAgICBpZiBBQ19UUllfRVZBTChfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKQotICAgICAgICB0aGVuCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLSAgICAgICAgZWxzZQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwotICAgICAgICBmaQotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKLSAgICAgIGVsc2UKLSAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1Ci0gICAgICBmaQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKV0pCisJaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcnI7IHRoZW4KKwkgIHNvbmFtZT1jb25mdGVzdAorCSAgbGliPWNvbmZ0ZXN0CisJICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKKwkgIGRlcGxpYnM9CisJICB3bD0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKKwkgIHBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKKwkgIGNvbXBpbGVyX2ZsYWdzPS12CisJICBsaW5rZXJfZmxhZ3M9LXYKKwkgIHZlcnN0cmluZz0KKwkgIG91dHB1dF9vYmpkaXI9LgorCSAgbGlibmFtZT1jb25mdGVzdAorCSAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CisJICBpZiBBQ19UUllfRVZBTChfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIDJcPlwmMSBcfCAkR1JFUCBcIiAtbGMgXCIgXD4vZGV2L251bGwgMlw+XCYxKQorCSAgdGhlbgorCSAgICBsdF9jdl9bXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCSAgZWxzZQorCSAgICBsdF9jdl9bXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkgIGZpCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWcKKwllbHNlCisJICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKKwlmaQorCSRSTSBjb25mdGVzdCoKKwldKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSRsdF9jdl9bXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKQogICAgICAgOzsKICAgICBlc2FjCiAgIGZpCkBAIC01MTgwLDkgKzU2OTksNiBAQAogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXSwgWzFdLAogICAgIFtGbGFnIHRvIGhhcmRjb2RlICRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KICAgICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdKQotX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXSwgWzFdLAotICAgIFtbSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgJGxpYmRpciBpbnRvIGEgYmluYXJ5Ci0gICAgZHVyaW5nIGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdXSkKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl0sIFsxXSwKICAgICBbV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudF0pCiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF0sIFswXSwKQEAgLTUyMDgsOCArNTcyNCw2IEBACiAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQogX0xUX1RBR0RFQ0woW10sIFtsaW5rX2FsbF9kZXBsaWJzXSwgWzBdLAogICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQotX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAotICAgIFtGaXggdGhlIHNoZWxsIHZhcmlhYmxlICRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXJdKQogX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCiAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCiBfTFRfVEFHREVDTChbXSwgW2V4cG9ydF9zeW1ib2xzX2NtZHNdLCBbMl0sCkBAIC01MjIwLDYgKzU3MzQsOCBAQAogICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQogX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKK19MVF9UQUdERUNMKFtdLCBbcG9zdGxpbmtfY21kc10sIFsyXSwKKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCiBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAogICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXNdKQogZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCkBAIC01MzEzLDE0ICs1ODI5LDE1IEBACiBdKSMgX0xUX0xBTkdfQ19DT05GSUcKIAogCi0jIF9MVF9QUk9HX0NYWAotIyAtLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19DWFggaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgZysrIGlmIHRoZXJlIGlzIG5vIGMrKwotIyBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19DWFhdLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9jYXVnaHRfQ1hYX2Vycm9yPXllc10pCi1BQ19QUk9HX0NYWAorIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQorIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKK1ttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KQEAgLTUzMjgsMjIgKzU4NDUsNiBAQAogZWxzZQogICBfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXMKIGZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfQ1hYCi0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSwgW10pCi0KLQotIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQotIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCi0jIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KLW00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19DWFhdKWRubAotbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi1tNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiAKIEFDX0xBTkdfUFVTSChDKyspCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KQEAgLTUzNTUsNyArNTg1Niw2IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKQEAgLTUzNjUsNiArNTg2NSw4IEBACiBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQogX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9dW5rbm93bgogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0KIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCkBAIC01Mzk2LDYgKzU4OTgsNyBAQAogCiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9JENDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgbHRfc2F2ZV9MRD0kTEQKICAgbHRfc2F2ZV9HQ0M9JEdDQwogICBHQ0M9JEdYWApAQCAtNTQxMyw2ICs1OTE2LDcgQEAKICAgZmkKICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKICAgQ0M9JHtDWFgtImMrKyJ9CisgIENGTEFHUz0kQ1hYRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNTQzNCw4ICs1OTM4LDggQEAKICAgICAgICMgQ2hlY2sgaWYgR05VIEMrKyB1c2VzIEdOVSBsZCBhcyB0aGUgdW5kZXJseWluZyBsaW5rZXIsIHNpbmNlIHRoZQogICAgICAgIyBhcmNoaXZpbmcgY29tbWFuZHMgYmVsb3cgYXNzdW1lIHRoYXQgR05VIGxkIGlzIGJlaW5nIHVzZWQuCiAgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTQ2Nyw3ICs1OTcxLDcgQEAKICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0gICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKyAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAogICAgIGVsc2UKICAgICAgIEdYWD1ubwpAQCAtNTU3NiwxMCArNjA4MCwxMCBAQAogICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICMgZXhlY3V0YWJsZS4KLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAKLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICAgIGVsc2UKICAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCkBAIC01NTg4LDE0ICs2MDkyLDE5IEBACiAgICAgICAgICAgZWxzZQogCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKIAkgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgZWxzZQorCSAgICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBmaQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZAogCSAgICAjIGxpYnJhcmllcy4KQEAgLTU2MjUsMjggKzYxMzQsNzUgQEAKICAgICAgICAgOzsKIAogICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwljYXNlICRHWFgsJGNjX2Jhc2VuYW1lIGluCisJLGNsKiB8IG5vLGNsKikKKwkgICMgTmF0aXZlIE1TVkMKKwkgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJICBsaWJleHQ9bGliCisJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwkgIHNocmV4dF9jbWRzPSIuZGxsIgorCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgICAgZWxzZQorCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgICBmaX4KKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgICBsaW5rbmFtZXM9JworCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCSAgIyBEb24ndCB1c2UgcmFubGliCisJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCSAgX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAgICouZXhlfCouRVhFKSA7OworCSAgICAgICopCisJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkJOzsKKwkgICAgZXNhY34KKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgICBmaScKKwkgIDs7CisJKikKKwkgICMgZysrCisJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKIAotICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICAgICAgZWxzZQotCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgICAgICBmaX4KLSAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgIGZpCi0gICAgICAgIDs7CisJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgIGVsc2UKKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICBmaX4KKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgZWxzZQorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICBmaQorCSAgOzsKKwllc2FjCisJOzsKICAgICAgIGRhcndpbiogfCByaGFwc29keSopCiAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQogCTs7CkBAIC01NjY5LDcgKzYyMjUsNyBAQAogICAgICAgICBlc2FjCiAgICAgICAgIDs7CiAKLSAgICAgIGZyZWVic2RbWzEyXV0qKQorICAgICAgZnJlZWJzZDIuKikKICAgICAgICAgIyBDKysgc2hhcmVkIGxpYnJhcmllcyByZXBvcnRlZCB0byBiZSBmYWlybHkgYnJva2VuIGJlZm9yZQogCSMgc3dpdGNoIHRvIEVMRgogICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC01Njg4LDYgKzYyNDQsMTEgQEAKICAgICAgIGdudSopCiAgICAgICAgIDs7CiAKKyAgICAgIGhhaWt1KikKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgICA7OworCiAgICAgICBocHV4OSopCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgpAQCAtNTcxMiwxMSArNjI3MywxMSBAQAogICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KICAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKICAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAgICAgICAgICAgICA7OwogICAgICAgICAgICopCiAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNTc3Nyw3ICs2MzM4LDcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAgICAgICAgICAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTU3ODcsMTAgKzYzNDgsMTAgQEAKIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgaWE2NCopCi0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgKikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgIGVzYWMKIAkgICAgICBmaQpAQCAtNTgyMCw3ICs2MzgxLDcgQEAKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgICBDQyopCiAJICAgICMgU0dJIEMrKwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAtYXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBJUklYIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTU4MzEsOSArNjM5Miw5IEBACiAgICAgICAgICAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgIGVsc2UKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwogCSAgICAgIGZpCiAJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwpAQCAtNTg0NCw3ICs2NDA1LDcgQEAKICAgICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCiAgICAgICAgIDs7CiAKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgS0NDKikKIAkgICAgIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgpAQCAtNTg2Miw3ICs2NDIzLDcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01ODk5LDI2ICs2NDYwLDI2IEBACiAgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCiAgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgogCSAgICBjYXNlIGAkQ0MgLVZgIGluCi0JICAgICpwZ0NDXCBbWzEtNV1dKiB8ICpwZ2NwcFwgW1sxLTVdXSopCisJICAgICpwZ0NDXCBbWzEtNV1dLiogfCAqcGdjcHBcIFtbMS01XV0uKikKIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogCQlybSAtcmYgJHRwbGRpcn4KIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCiAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KIAkJJFJBTkxJQiAkb2xkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7Ci0JICAgICopICMgVmVyc2lvbiA2IHdpbGwgdXNlIHdlYWsgc3ltYm9scworCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7CkBAIC01OTI2LDcgKzY0ODcsNyBAQAogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICAgICAgOzsKIAkgIGN4eCopCiAJICAgICMgQ29tcGFxIEMrKwpAQCAtNTk0NSw5ICs2NTA2LDkgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gJEVDSE8gIlgkdGVtcGxpc3QiIHwgJFhzZWQgLWUgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiWCRsaXN0IiB8ICRYc2VkJwogCSAgICA7OwotCSAgeGwqKQorCSAgeGwqIHwgbXBpeGwqIHwgYmd4bCopCiAJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU5NjcsMTMgKzY1MjgsMTMgQEAKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJwogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAogCSAgICAgICMgTm90IHN1cmUgd2hldGhlciBzb21ldGhpbmcgYmFzZWQgb24KIAkgICAgICAjICRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxCiAJICAgICAgIyB3b3VsZCBiZSBiZXR0ZXIuCi0JICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2Z1bmNfZWNob19hbGwnCiAKIAkgICAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTYwNDIsNyArNjYwMyw3IEBACiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCiAJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGZpCi0JICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisJICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAJZWxzZQogCSAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWZpCkBAIC02MDc3LDE1ICs2NjM4LDE1IEBACiAJICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICBvc2YzKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAJCTs7CiAJICAgICAgKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+CiAJICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKwkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgogCSAgICAgICAgICAkUk0gJGxpYi5leHAnCiAJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCiAJCTs7CkBAIC02MTAxLDE3ICs2NjYyLDE3IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiIHwgJEdSRVAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gJEVDSE8gIlgkdGVtcGxpc3QiIHwgJFhzZWQgLWUgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKIAkgICAgICBjYXNlICRob3N0IGluCiAJICAgICAgICBvc2YzKikKLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgICAqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgZXNhYwogCkBAIC02MTIxLDcgKzY2ODIsNyBAQAogCSAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAKIAkgICAgZWxzZQogCSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydApAQCAtNjE1Nyw3ICs2NzE4LDcgQEAKIAogICAgICAgc29sYXJpcyopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgQ0MqKQorICAgICAgICAgIENDKiB8IHN1bkNDKikKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKQEAgLTYxNzgsNyArNjczOSw3IEBACiAJICAgIGVzYWMKIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAKLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdmdW5jX2VjaG9fYWxsJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKQEAgLTYxOTgsMTQgKzY3NTksMTQgQEAKIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCiAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAkgICAgICBlbHNlCiAJICAgICAgICAjIGcrKyAyLjcgYXBwZWFycyB0byByZXF1aXJlIGAtRycgTk9UIGAtc2hhcmVkJyBvbiB0aGlzCiAJICAgICAgICAjIHBsYXRmb3JtLgpAQCAtNjIxNiw3ICs2Nzc3LDcgQEAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGZpCiAKIAkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkd2wkbGliZGlyJwpAQCAtNjI3MCw2ICs2ODMxLDEwIEBACiAgICAgICAgICAgQ0MqKQogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkb2xkb2Jqc34KKwkgICAgICAnIiRfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKSIKKwkgICAgX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJHJlbG9hZF9vYmpzfgorCSAgICAgICciJF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKSIKIAkgICAgOzsKIAkgICopCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKQEAgLTYzMjUsNiArNjg5MCw3IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKICAgTERDWFg9JExECiAgIExEPSRsdF9zYXZlX0xECiAgIEdDQz0kbHRfc2F2ZV9HQ0MKQEAgLTYzMzksNiArNjkwNSwyOSBAQAogXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKIAogCisjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorIworIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCisjIGV4Y2VwdCB0aGlzIG9uZSBjYW4gYmUgdXNlZCBieSBtNCBjb2RlIHRoYXQgbWF5IGJlIGV4ZWN1dGVkIGJ5IGNvbmZpZ3VyZSwKKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgorbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCitmdW5jX3N0cmlwbmFtZV9jbmYgKCkKK3sKKyAgY2FzZSAkezJ9IGluCisgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgZXNhYworfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKKwogIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCkBAIC02MzQ3LDYgKzY5MzYsNyBAQAogIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCiBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCiBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCitBQ19SRVFVSVJFKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSlkbmwKICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6CiBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CiBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPQpAQCAtNjM5Niw3ICs2OTg2LDIwIEBACiAgIH0KIH07CiBfTFRfRU9GCitdLCBbJDFdLCBbR09dLCBbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3BhY2thZ2UgZm9vCitmdW5jIGZvbygpIHsKK30KK19MVF9FT0YKIF0pCisKK19sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKlwgLWZ3aG9wcipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXdob3ByIiA7OworKlwgLWZ1c2UtbGlua2VyLXBsdWdpbipcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLXVzZS1saW5rZXItcGx1Z2luIiA7OworZXNhYworCiBkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5CiBkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgogaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KQEAgLTY0MDgsNyArNzAxMSw3IEBACiAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KIAogICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0gICAgY2FzZSAkcCBpbgorICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KIAogICAgIC1MKiB8IC1SKiB8IC1sKikKICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgpAQCAtNjQxNywxMyArNzAyMCwyMiBAQAogICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCiAJIHByZXY9JHAKIAkgY29udGludWUKLSAgICAgICBlbHNlCi0JIHByZXY9CiAgICAgICAgZmkKIAorICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCisgICAgICAgICBjYXNlICRwIGluCisgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICBlc2FjCisgICAgICAgZmkKKyAgICAgICBjYXNlICRwIGluCisgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICBlc2FjCiAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAkcCBpbgotCSAtTCogfCAtUiopCisJIGNhc2UgJHtwcmV2fSBpbgorCSAtTCB8IC1SKQogCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQogCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgpAQCAtNjQ0Myw4ICs3MDU1LDEwIEBACiAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCiAJIGZpCiAgICAgICAgZmkKKyAgICAgICBwcmV2PQogICAgICAgIDs7CiAKKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKICAgICAqLiRvYmpleHQpCiAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCiAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCkBAIC02NDgwLDYgKzcwOTQsNyBAQAogZmkKIAogJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwogCiAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgogbTRfaWYoWyQxXSwgW0NYWF0sCkBAIC02NTE2LDcgKzcxMzEsNyBAQAogCiBzb2xhcmlzKikKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqKQorICBDQyogfCBzdW5DQyopCiAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCiAgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCiAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwpAQCAtNjU2MCwzMiArNzE3NSwxNiBAQAogXSkjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMKIAogCi0jIF9MVF9QUk9HX0Y3NwotIyAtLS0tLS0tLS0tLS0KLSMgU2luY2UgQUNfUFJPR19GNzcgaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZwotIyBpZiB0aGVyZSBpcyBubyBmb3J0cmFuIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0Y3N10sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRjc3PXllc10pCi1BQ19QUk9HX0Y3NwotaWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KLSAgX2x0X2Rpc2FibGVfRjc3PXllcwotZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19GNzcKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GNzddLCBbXSkKLQotCiAjIF9MVF9MQU5HX0Y3N19DT05GSUcoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIDc3IGNvbXBpbGVyIGFyZQogIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCiAjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19GNzdfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtfTFRfUFJPR19GNzddKWRubAotQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCitbQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCitpZiB0ZXN0IC16ICIkRjc3IiB8fCB0ZXN0ICJYJEY3NyIgPSAiWG5vIjsgdGhlbgorICBfbHRfZGlzYWJsZV9GNzc9eWVzCitmaQogCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTY1OTUsNyArNzE5NCw2IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubwpAQCAtNjYwNCw2ICs3MjAyLDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY2NDMsNyArNzI0Myw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7Rjc3LSJmNzcifQorICBDRkxBR1M9JEZGTEFHUwogICBjb21waWxlcj0kQ0MKICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02Njk3LDM4ICs3Mjk5LDI0IEBACiAKICAgR0NDPSRsdF9zYXZlX0dDQwogICBDQz0iJGx0X3NhdmVfQ0MiCisgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgogZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKIF0pIyBfTFRfTEFOR19GNzdfQ09ORklHCiAKIAotIyBfTFRfUFJPR19GQwotIyAtLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0ZDIGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GQ10sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2Rpc2FibGVfRkM9eWVzXSkKLUFDX1BST0dfRkMKLWlmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgotICBfbHRfZGlzYWJsZV9GQz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRkMKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19GQ10sIFtdKQotCi0KICMgX0xUX0xBTkdfRkNfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIGNvbXBpbGVyIGFyZQogIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCiAjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19GQ19DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0ZDXSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuKQorW0FDX0xBTkdfUFVTSChGb3J0cmFuKQorCitpZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRkM9eWVzCitmaQogCiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KQEAgLTY3MzgsNyArNzMyNiw2IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQogX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwogX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubwpAQCAtNjc0Nyw2ICs3MzM0LDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY3ODYsNyArNzM3NSw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7RkMtImY5NSJ9CisgIENGTEFHUz0kRkNGTEFHUwogICBjb21waWxlcj0kQ0MKICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKIApAQCAtNjg0Miw3ICs3NDMzLDggQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgR0NDPSRsdF9zYXZlX0dDQwotICBDQz0iJGx0X3NhdmVfQ0MiCisgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKQEAgLTY4NzksMTAgKzc0NzEsMTIgQEAKIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9eWVzCiBDQz0ke0dDSi0iZ2NqIn0KK0NGTEFHUz0kR0NKRkxBR1MKIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCkBAIC02ODkyLDYgKzc0ODYsOCBAQAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAKIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiAKICMjIENBVkVBVCBFTVBUT1I6CiAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNjkxMSwxMCArNzUwNyw4MiBAQAogQUNfTEFOR19SRVNUT1JFCiAKIEdDQz0kbHRfc2F2ZV9HQ0MKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBdKSMgX0xUX0xBTkdfR0NKX0NPTkZJRwogCiAKKyMgX0xUX0xBTkdfR09fQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBHTlUgR28gY29tcGlsZXIKKyMgYXJlIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKKyMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0dPX0NPTkZJR10sCitbQUNfUkVRVUlSRShbTFRfUFJPR19HT10pZG5sCitBQ19MQU5HX1NBVkUKKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEdvIHRlc3Qgc291cmNlcy4KK2FjX2V4dD1nbworCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgR28gdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJwYWNrYWdlIG1haW47IGZ1bmMgbWFpbigpIHsgfSIKKworIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKK2x0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0ncGFja2FnZSBtYWluOyBmdW5jIG1haW4oKSB7IH0nCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9UQUdfQ09NUElMRVIKKworIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKK19MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorbHRfc2F2ZV9DQz0kQ0MKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK2x0X3NhdmVfR0NDPSRHQ0MKK0dDQz15ZXMKK0NDPSR7R09DLSJnY2NnbyJ9CitDRkxBR1M9JEdPRkxBR1MKK2NvbXBpbGVyPSRDQworX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCisKKyMgR28gZGlkIG5vdCBleGlzdCBhdCB0aGUgdGltZSBHQ0MgZGlkbid0IGltcGxpY2l0bHkgbGluayBsaWJjIGluLgorX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisKK19MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCisKKyMjIENBVkVBVCBFTVBUT1I6CisjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgoraWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICBfTFRfQ09NUElMRVJfTk9fUlRUSSgkMSkKKyAgX0xUX0NPTVBJTEVSX1BJQygkMSkKKyAgX0xUX0NPTVBJTEVSX0NfTygkMSkKKyAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgIF9MVF9MSU5LRVJfU0hMSUJTKCQxKQorICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgX0xUX0NPTkZJRygkMSkKK2ZpCisKK0FDX0xBTkdfUkVTVE9SRQorCitHQ0M9JGx0X3NhdmVfR0NDCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworXSkjIF9MVF9MQU5HX0dPX0NPTkZJRworCisKICMgX0xUX0xBTkdfUkNfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIFdpbmRvd3MgcmVzb3VyY2UgY29tcGlsZXIKQEAgLTY5NDYsOSArNzYxNCwxMSBAQAogCiAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogbHRfc2F2ZV9HQ0M9JEdDQwogR0NDPQogQ0M9JHtSQy0id2luZHJlcyJ9CitDRkxBR1M9CiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTY5NjEsNyArNzYzMSw4IEBACiAKIEdDQz0kbHRfc2F2ZV9HQ0MKIEFDX0xBTkdfUkVTVE9SRQotQ0M9IiRsdF9zYXZlX0NDIgorQ0M9JGx0X3NhdmVfQ0MKK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKIAogCkBAIC02OTgxLDYgKzc2NTIsMTMgQEAKIGRubCBBQ19ERUZVTihbTFRfQUNfUFJPR19HQ0pdLCBbXSkKIAogCisjIExUX1BST0dfR08KKyMgLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1BST0dfR09dLAorW0FDX0NIRUNLX1RPT0woR09DLCBnY2NnbywpCitdKQorCisKICMgTFRfUFJPR19SQwogIyAtLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfUFJPR19SQ10sCkBAIC03MDIwLDYgKzc2OTgsMTUgQEAKIEFDX1NVQlNUKFtPQkpEVU1QXSkKIF0pCiAKKyMgX0xUX0RFQ0xfRExMVE9PTAorIyAtLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSBETExUT09MIHZhcmlhYmxlIGlzIHNldC4KK200X2RlZnVuKFtfTFRfREVDTF9ETExUT09MXSwKK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQordGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKQorQUNfU1VCU1QoW0RMTFRPT0xdKQorXSkKIAogIyBfTFRfREVDTF9TRUQKICMgLS0tLS0tLS0tLS0tCkBAIC03MTEzLDggKzc4MDAsOCBAQAogIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKIHhzaV9zaGVsbD1ubwogKCBfbHRfZHVtbXk9ImEvYi9jIgotICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotICAgICAgPSBjLGEvYiwsIFwKKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKyAgICAgID0gYyxhL2IsYi9jLCBcCiAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICYmIHhzaV9zaGVsbD15ZXMKQEAgLTcxNTMsMjA4ICs3ODQwLDE2MiBAQAogXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUwogCiAKLSMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KLW00X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAotW2Nhc2UgJHhzaV9zaGVsbCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLSMgY2FsbDoKLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotfQotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLSAgZXNhYwotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLWZ1bmNfZGlybmFtZSAoKQotewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotfQotCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAotfQotCi1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQotZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgotCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLWZ1bmNfc3RyaXBuYW1lICgpCi17Ci0gIGNhc2UgJHsyfSBpbgotICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJVxcXFwkezJ9XCQlJSJgOzsKLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyUkezJ9XCQlJSJgOzsKLSAgZXNhYwotfQotCi0jIHNlZCBzY3JpcHRzOgotbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJwotbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCi0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfb3B0ImAKLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19hcmciYAotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRsbzJvImAKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAncy9cLltbXi5dXSokLy5sby8nYAotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotfQotCi1fTFRfRU9GCi1lc2FjCi0KLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotICB5ZXMpCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJFsxXSs9XCRbMl0iCi19Ci1fTFRfRU9GCi0gICAgOzsKLSAgKikKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgZXNhYworIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCisjICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCittNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCitbZG5sIHsKK3NlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAorJDEgKClcCit7XAorbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCit9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIF0pCisKKworIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAorIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KK200X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKK1tpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgICAgZXNhY10pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgICBlc2FjCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCisgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9CisgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CisgICAgZXNhY10pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQorZmkKKworaWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCitkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCisKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2Vsc2UKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2ZpCisKK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKK2ZpCitdKQorCisjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKKyMgZnVuY190b19ob3N0X2ZpbGUgKGFuZCwgaW1wbGljaXRseSwgYnkgZnVuY190b19ob3N0X3BhdGgpLiAgVGhlc2UgYXJlIG5lZWRlZAorIyBmb3IgY2VydGFpbiBjcm9zcy1jb21waWxlIGNvbmZpZ3VyYXRpb25zIGFuZCBuYXRpdmUgbWluZ3cuCittNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfdG9faG9zdF9maWxlX2NtZCwKK1tjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqLSotY3lnd2luKiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgOzsKK2VzYWMKK10pCit0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCitBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0pCitfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSlkbmwKKworQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKK0FDX0NBQ0hFX1ZBTChsdF9jdl90b190b29sX2ZpbGVfY21kLAorWyNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7Citlc2FjCitdKQordG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQorX0xUX0RFQ0woW3RvX3Rvb2xfZmlsZV9jbWRdLCBbbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0sCisgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0XSlkbmwKK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdG9wdGlvbnMubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNAppbmRleCAzNDE1MWEzLi41ZDlhY2Q4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNApAQCAtMSwxMyArMSwxNCBAQAogIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjICAgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDA0CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CiAKICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCiBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCkBAIC0xMjUsNyArMTI2LDcgQEAKIFtlbmFibGVfd2luMzJfZGxsPXllcwogCiBjYXNlICRob3N0IGluCi0qLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLWNlZ2NjKikKKyotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1jZWdjYyopCiAgIEFDX0NIRUNLX1RPT0woQVMsIGFzLCBmYWxzZSkKICAgQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKICAgQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKQEAgLTEzMywxMyArMTM0LDEzIEBACiBlc2FjCiAKIHRlc3QgLXogIiRBUyIgJiYgQVM9YXMKLV9MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFswXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKK19MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFsxXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKIAogdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzBdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAogCiB0ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCi1fTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMF0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbT2JqZWN0IGR1bXBlciBwcm9ncmFtXSlkbmwKIF0pIyB3aW4zMi1kbGwKIAogQVVfREVGVU4oW0FDX0xJQlRPT0xfV0lOMzJfRExMXSwKQEAgLTMyNSw5ICszMjYsMjQgQEAKICMgTU9ERSBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBib3RoJy4KIG00X2RlZmluZShbX0xUX1dJVEhfUElDXSwKIFtBQ19BUkdfV0lUSChbcGljXSwKLSAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1waWNdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLXBpY0A8OkA9UEtHU0A6PkBdLAogCVt0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBAPDpAZGVmYXVsdD11c2UgYm90aEA6PkBdKV0sCi0gICAgW3BpY19tb2RlPSIkd2l0aHZhbCJdLAorICAgIFtsdF9wPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJHdpdGh2YWwgaW4KKyAgICB5ZXN8bm8pIHBpY19tb2RlPSR3aXRodmFsIDs7CisgICAgKikKKyAgICAgIHBpY19tb2RlPWRlZmF1bHQKKyAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KKyAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgZm9yIGx0X3BrZyBpbiAkd2l0aHZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgorCSAgcGljX21vZGU9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKICAgICBbcGljX21vZGU9ZGVmYXVsdF0pCiAKIHRlc3QgLXogIiRwaWNfbW9kZSIgJiYgcGljX21vZGU9bTRfZGVmYXVsdChbJDFdLCBbZGVmYXVsdF0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0dmVyc2lvbi5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00CmluZGV4IGI4ZTE1NGYuLjA3YTg2MDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00CkBAIC03LDE3ICs3LDE3IEBACiAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisjIEBjb25maWd1cmVfaW5wdXRACiAKLSMgc2VyaWFsIDMwMTIgbHR2ZXJzaW9uLm00CisjIHNlcmlhbCAzMzM3IGx0dmVyc2lvbi5tNAogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAogCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuNl0pCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMDEyXSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNC4yXSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMzMzddKQogCiBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotW21hY3JvX3ZlcnNpb249JzIuMi42JwotbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK1ttYWNyb192ZXJzaW9uPScyLjQuMicKK21hY3JvX3JldmlzaW9uPScxLjMzMzcnCiBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCiBdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQKaW5kZXggNjM3YmIyMC4uYzU3M2RhOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0fm9ic29sZXRlLm00CkBAIC0xLDEzICsxLDEzIEBACiAjIGx0fm9ic29sZXRlLm00IC0tIGFjbG9jYWwgc2F0aXNmeWluZyBvYnNvbGV0ZSBkZWZpbml0aW9ucy4gICAgLSotQXV0b2NvbmYtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgU2NvdHQgSmFtZXMgUmVtbmFudCwgMjAwNC4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00CisjIHNlcmlhbCA1IGx0fm9ic29sZXRlLm00CiAKICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogIwpAQCAtNzcsNyArNzcsNiBAQAogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKXSldKQotbTRfaWZuZGVmKFtBQ19MSUJUT09MX1JDXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DX0NPTkZJR10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSldKQpAQCAtOTAsMyArODksMTAgQEAKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddKV0pCiBtNF9pZm5kZWYoW0FDX0xJQlRPT0xfQ09ORklHXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddKV0pCiBtNF9pZm5kZWYoW19MVF9BQ19GSUxFX0xURExMX0NdLAlbQUNfREVGVU4oW19MVF9BQ19GSUxFX0xURExMX0NdKV0pCittNF9pZm5kZWYoW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSwJW0FDX0RFRlVOKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10pXSkKK200X2lmbmRlZihbX0xUX0FDX1BST0dfQ1hYQ1BQXSwJCVtBQ19ERUZVTihbX0xUX0FDX1BST0dfQ1hYQ1BQXSldKQorbTRfaWZuZGVmKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCVtBQ19ERUZVTihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwJW0FDX0RFRlVOKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRjc3XSwJCVtBQ19ERUZVTihbX0xUX1BST0dfRjc3XSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19GQ10sCQlbQUNfREVGVU4oW19MVF9QUk9HX0ZDXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19DWFhdKV0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5hbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtCmluZGV4IDI1MTkyNzcuLmFmY2JmYjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtCkBAIC0yLDcgKzIsNyBAQAogCiBBVVRPTUFLRV9PUFRJT05TPWZvcmVpZ24KIAotRVhUUkFfRElTVCA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKK0VYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMwogCi1tYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKK21hbl9NQU5TID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMyBmZmlfcHJlcF9jaWZfdmFyLjMKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbgppbmRleCAzZTQwYmUyLi5iMjlmYjE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC02OCw2ICs2OCwxMiBAQAogYW1fX2Jhc2VfbGlzdCA9IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CiBtYW4zZGlyID0gJChtYW5kaXIpL21hbjMKIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChtYW4zZGlyKSIKIE5ST0ZGID0gbnJvZmYKQEAgLTc2LDYgKzgyLDcgQEAKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACiBBTVRBUiA9IEBBTVRBUkAKK0FNX0xUTERGTEFHUyA9IEBBTV9MVExERkxBR1NACiBBTV9SVU5URVNURkxBR1MgPSBAQU1fUlVOVEVTVEZMQUdTQAogQVIgPSBAQVJACiBBVVRPQ09ORiA9IEBBVVRPQ09ORkAKQEAgLTkzLDYgKzEwMCw3IEBACiBDWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAogREVGUyA9IEBERUZTQAogREVQRElSID0gQERFUERJUkAKK0RMTFRPT0wgPSBARExMVE9PTEAKIERTWU1VVElMID0gQERTWU1VVElMQAogRFVNUEJJTiA9IEBEVU1QQklOQAogRUNIT19DID0gQEVDSE9fQ0AKQEAgLTEwMCw2ICsxMDgsNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtMTE4LDYgKzEyNyw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTEzMCw2ICsxNDAsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTE0NCw2ICsxNTUsNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0xNzYsNyArMTg4LDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMTk5LDggKzIxMCw4IEBACiB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24KLUVYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zCi1tYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKK0VYVFJBX0RJU1QgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMworbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMwogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtMjc1LDkgKzI4Niw3IEBACiAJICBzZWQgLW4gJy9cLjNbYS16XSokJC9wJzsgXAogCX0gfCBzZWQgLWUgJ3MsLiovLCw7aDtzLC4qXC4sLDtzLF5bXjNdWzAtOWEtel0qJCQsMyw7eCcgXAogCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKLQl0ZXN0IC16ICIkJGZpbGVzIiB8fCB7IFwKLQkgIGVjaG8gIiAoIGNkICckKERFU1RESVIpJChtYW4zZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JICBjZCAiJChERVNURElSKSQobWFuM2RpcikiICYmIHJtIC1mICQkZmlsZXM7IH0KKwlkaXI9JyQoREVTVERJUikkKG1hbjNkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQogdGFnczogVEFHUwogVEFHUzoKIApAQCAtMzQ1LDEwICszNTQsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KIGluc3RhbGwtc3RyaXA6Ci0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcCi0JICAgIGVjaG8gIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsCisJaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAgIGluc3RhbGw7IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAorCWZpCiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpLjMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMwppbmRleCAxOGI1ZDVkLi4xZjFkMzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMwpAQCAtMTYsNiArMTYsMTUgQEAKIC5GYSAiZmZpX3R5cGUgKiphdHlwZXMiCiAuRmMKIC5GdCB2b2lkCisuRm8gZmZpX3ByZXBfY2lmX3ZhcgorLkZhICJmZmlfY2lmICpjaWYiCisuRmEgImZmaV9hYmkgYWJpIgorLkZhICJ1bnNpZ25lZCBpbnQgbmZpeGVkYXJncyIKKy5GYSAidW5zaWduZWQgaW50IG50b3RhbGFyZ3MiCisuRmEgImZmaV90eXBlICpydHlwZSIKKy5GYSAiZmZpX3R5cGUgKiphdHlwZXMiCisuRmMKKy5GdCB2b2lkCiAuRm8gZmZpX2NhbGwKIC5GYSAiZmZpX2NpZiAqY2lmIgogLkZhICJ2b2lkICgqZm4pKHZvaWQpIgpAQCAtMjgsNCArMzcsNSBAQAogdGhlIGNhbGxlZCBmdW5jdGlvbidzIGludGVyZmFjZSBhdCBjb21waWxlIHRpbWUuCiAuU2ggU0VFIEFMU08KIC5YciBmZmlfcHJlcF9jaWYgMyAsCisuWHIgZmZpX3ByZXBfY2lmX3ZhciAzICwKIC5YciBmZmlfY2FsbCAzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWYuMyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zCmluZGV4IDk0MzZiMzEuLmUxYmRiZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zCkBAIC0zNyw3ICszNyw5IEBACiBwb2ludHMgdG8gYW4KIC5ObSBmZmlfdHlwZQogdGhhdCBkZXNjcmliZXMgdGhlIGRhdGEgdHlwZSwgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIHRoZQotcmV0dXJuIHZhbHVlLgorcmV0dXJuIHZhbHVlLiBOb3RlIHRoYXQgdG8gY2FsbCBhIHZhcmlhZGljIGZ1bmN0aW9uCisuTm0gZmZpX3ByZXBfY2lmX3ZhcgorbXVzdCBiZSB1c2VkIGluc3RlYWQuCiAuU2ggUkVUVVJOIFZBTFVFUwogVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sCiAuTm0gZmZpX3ByZXBfY2lmCkBAIC02Myw0ICs2NSw2IEBACiAuCiAuU2ggU0VFIEFMU08KIC5YciBmZmkgMyAsCi0uWHIgZmZpX2NhbGwgMyAKKy5YciBmZmlfY2FsbCAzICwKKy5YciBmZmlfcHJlcF9jaWZfdmFyIDMKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmX3Zhci4zIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmX3Zhci4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMTlkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWZfdmFyLjMKQEAgLTAsMCArMSw3MyBAQAorLkRkIEphbnVhcnkgMjUsIDIwMTEKKy5EdCBmZmlfcHJlcF9jaWZfdmFyIDMKKy5TaCBOQU1FCisuTm0gZmZpX3ByZXBfY2lmX3ZhcgorLk5kIFByZXBhcmUgYQorLk5tIGZmaV9jaWYKK3N0cnVjdHVyZSBmb3IgdXNlIHdpdGgKKy5ObSBmZmlfY2FsbAorZm9yIHZhcmlhZGljIGZ1bmN0aW9ucy4KKy5TaCBTWU5PUFNJUworLkluIGZmaS5oCisuRnQgZmZpX3N0YXR1cworLkZvIGZmaV9wcmVwX2NpZl92YXIKKy5GYSAiZmZpX2NpZiAqY2lmIgorLkZhICJmZmlfYWJpIGFiaSIKKy5GYSAidW5zaWduZWQgaW50IG5maXhlZGFyZ3MiCisuRmEgInVuc2lnbmVkIGludCBudG90YWxhcmdzIgorLkZhICJmZmlfdHlwZSAqcnR5cGUiCisuRmEgImZmaV90eXBlICoqYXR5cGVzIgorLkZjCisuU2ggREVTQ1JJUFRJT04KK1RoZQorLk5tIGZmaV9wcmVwX2NpZl92YXIKK2Z1bmN0aW9uIHByZXBhcmVzIGEKKy5ObSBmZmlfY2lmCitzdHJ1Y3R1cmUgZm9yIHVzZSB3aXRoCisuTm0gZmZpX2NhbGwKK2ZvciB2YXJpYWRpYyBmdW5jdGlvbnMuCisuRmEgYWJpCitzcGVjaWZpZXMgYSBzZXQgb2YgY2FsbGluZyBjb252ZW50aW9ucyB0byB1c2UuCisuRmEgYXR5cGVzCitpcyBhbiBhcnJheSBvZgorLkZhIG50b3RhbGFyZ3MKK3BvaW50ZXJzIHRvCisuTm0gZmZpX3R5cGUKK3N0cnVjdHMgdGhhdCBkZXNjcmliZSB0aGUgZGF0YSB0eXBlLCBzaXplIGFuZCBhbGlnbm1lbnQgb2YgZWFjaCBhcmd1bWVudC4KKy5GYSBydHlwZQorcG9pbnRzIHRvIGFuCisuTm0gZmZpX3R5cGUKK3RoYXQgZGVzY3JpYmVzIHRoZSBkYXRhIHR5cGUsIHNpemUgYW5kIGFsaWdubWVudCBvZiB0aGUKK3JldHVybiB2YWx1ZS4KKy5GYSBuZml4ZWRhcmdzCittdXN0IGNvbnRhaW4gdGhlIG51bWJlciBvZiBmaXhlZCAobm9uLXZhcmlhZGljKSBhcmd1bWVudHMuCitOb3RlIHRoYXQgdG8gY2FsbCBhIG5vbi12YXJpYWRpYyBmdW5jdGlvbgorLk5tIGZmaV9wcmVwX2NpZgorbXVzdCBiZSB1c2VkLgorLlNoIFJFVFVSTiBWQUxVRVMKK1Vwb24gc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLAorLk5tIGZmaV9wcmVwX2NpZl92YXIKK3JldHVybnMKKy5ObSBGRklfT0sgLgorSXQgd2lsbCByZXR1cm4KKy5ObSBGRklfQkFEX1RZUEVERUYKK2lmCisuRmEgY2lmCitpcworLk5tIE5VTEwKK29yCisuRmEgYXR5cGVzCitvcgorLkZhIHJ0eXBlCitpcyBtYWxmb3JtZWQuIElmCisuRmEgYWJpCitkb2VzIG5vdCByZWZlciB0byBhIHZhbGlkIEFCSSwKKy5ObSBGRklfQkFEX0FCSQord2lsbCBiZSByZXR1cm5lZC4gQXZhaWxhYmxlIEFCSXMgYXJlCitkZWZpbmVkIGluCisuTm0gPGZmaXRhcmdldC5oPgorLgorLlNoIFNFRSBBTFNPCisuWHIgZmZpIDMgLAorLlhyIGZmaV9jYWxsIDMgLAorLlhyIGZmaV9wcmVwX2NpZiAzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcKaW5kZXggODk0ZTc4Ni4uMjgwNTVkMiAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWlzc2luZwpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBDb21tb24gc3R1YiBmb3IgYSBmZXcgbWlzc2luZyBHTlUgcHJvZ3JhbXMgd2hpbGUgaW5zdGFsbGluZy4KIAotc2NyaXB0dmVyc2lvbj0yMDA1LTA2LTA4LjIxCitzY3JpcHR2ZXJzaW9uPTIwMDktMDQtMjguMjE7ICMgVVRDCiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKyMgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgT3JpZ2luYWxseSBieSBGcmFuLGNvaXMgUGluYXJkIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4sIDE5OTYuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTE4LDkgKzE4LDcgQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIAogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCi0jIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKICMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQogIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKQEAgLTMzLDYgKzMxLDggQEAKIGZpCiAKIHJ1bj06CitzZWRfb3V0cHV0PSdzLy4qIC0tb3V0cHV0WyA9XVwoW14gXSpcKS4qL1wxL3AnCitzZWRfbWludXNvPSdzLy4qIC1vIFwoW14gXSpcKS4qL1wxL3AnCiAKICMgSW4gdGhlIGNhc2VzIHdoZXJlIHRoaXMgbWF0dGVycywgYG1pc3NpbmcnIGlzIGJlaW5nIHJ1biBpbiB0aGUKICMgc3JjZGlyIGFscmVhZHkuCkBAIC00NCw3ICs0NCw3IEBACiAKIG1zZz0ibWlzc2luZyBvbiB5b3VyIHN5c3RlbSIKIAotY2FzZSAiJDEiIGluCitjYXNlICQxIGluCiAtLXJ1bikKICAgIyBUcnkgdG8gcnVuIHJlcXVlc3RlZCBwcm9ncmFtLCBhbmQganVzdCBleGl0IGlmIGl0IHN1Y2NlZWRzLgogICBydW49CkBAIC03Nyw2ICs3Nyw3IEBACiAgIGFjbG9jYWwgICAgICB0b3VjaCBmaWxlIFxgYWNsb2NhbC5tNCcKICAgYXV0b2NvbmYgICAgIHRvdWNoIGZpbGUgXGBjb25maWd1cmUnCiAgIGF1dG9oZWFkZXIgICB0b3VjaCBmaWxlIFxgY29uZmlnLmguaW4nCisgIGF1dG9tNHRlICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUsIG9yIGNyZWF0ZSBhIHN0dWIgb25lCiAgIGF1dG9tYWtlICAgICB0b3VjaCBhbGwgXGBNYWtlZmlsZS5pbicgZmlsZXMKICAgYmlzb24gICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQogICBmbGV4ICAgICAgICAgY3JlYXRlIFxgbGV4Lnl5LmMnLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuYwpAQCAtODYsNiArODcsOSBAQAogICB0YXIgICAgICAgICAgdHJ5IHRhciwgZ251dGFyLCBndGFyLCB0aGVuIHRhciB3aXRob3V0IG5vbi1wb3J0YWJsZSBmbGFncwogICB5YWNjICAgICAgICAgY3JlYXRlIFxgeS50YWIuW2NoXScsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5bY2hdCiAKK1ZlcnNpb24gc3VmZml4ZXMgdG8gUFJPR1JBTSBhcyB3ZWxsIGFzIHRoZSBwcmVmaXhlcyBcYGdudS0nLCBcYGdudScsIGFuZAorXGBnJyBhcmUgaWdub3JlZCB3aGVuIGNoZWNraW5nIHRoZSBuYW1lLgorCiBTZW5kIGJ1ZyByZXBvcnRzIHRvIDxidWctYXV0b21ha2VAZ251Lm9yZz4uIgogICAgIGV4aXQgJD8KICAgICA7OwpAQCAtMTAzLDE1ICsxMDcsMjIgQEAKIAogZXNhYwogCisjIG5vcm1hbGl6ZSBwcm9ncmFtIG5hbWUgdG8gY2hlY2sgZm9yLgorcHJvZ3JhbT1gZWNobyAiJDEiIHwgc2VkICcKKyAgcy9eZ251LS8vOyB0CisgIHMvXmdudS8vOyB0CisgIHMvXmcvLzsgdCdgCisKICMgTm93IGV4aXQgaWYgd2UgaGF2ZSBpdCwgYnV0IGl0IGZhaWxlZC4gIEFsc28gZXhpdCBub3cgaWYgd2UKICMgZG9uJ3QgaGF2ZSBpdCBhbmQgLS12ZXJzaW9uIHdhcyBwYXNzZWQgKG1vc3QgbGlrZWx5IHRvIGRldGVjdAotIyB0aGUgcHJvZ3JhbSkuCi1jYXNlICIkMSIgaW4KLSAgbGV4fHlhY2MpCisjIHRoZSBwcm9ncmFtKS4gIFRoaXMgaXMgYWJvdXQgbm9uLUdOVSBwcm9ncmFtcywgc28gdXNlICQxIG5vdAorIyAkcHJvZ3JhbS4KK2Nhc2UgJDEgaW4KKyAgbGV4Knx5YWNjKikKICAgICAjIE5vdCBHTlUgcHJvZ3JhbXMsIHRoZXkgZG9uJ3QgaGF2ZSAtLXZlcnNpb24uCiAgICAgOzsKIAotICB0YXIpCisgIHRhciopCiAgICAgaWYgdGVzdCAtbiAiJHJ1biI7IHRoZW4KICAgICAgICBlY2hvIDE+JjIgIkVSUk9SOiBcYHRhcicgcmVxdWlyZXMgLS1ydW4iCiAgICAgICAgZXhpdCAxCkBAIC0xMzUsNyArMTQ2LDcgQEAKIAogIyBJZiBpdCBkb2VzIG5vdCBleGlzdCwgb3IgZmFpbHMgdG8gcnVuIChwb3NzaWJseSBhbiBvdXRkYXRlZCB2ZXJzaW9uKSwKICMgdHJ5IHRvIGVtdWxhdGUgaXQuCi1jYXNlICIkMSIgaW4KK2Nhc2UgJHByb2dyYW0gaW4KICAgYWNsb2NhbCopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKQEAgLTE0NSw3ICsxNTYsNyBAQAogICAgIHRvdWNoIGFjbG9jYWwubTQKICAgICA7OwogCi0gIGF1dG9jb25mKQorICBhdXRvY29uZiopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKICAgICAgICAgIHlvdSBtb2RpZmllZCBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZQpAQCAtMTU0LDcgKzE2NSw3IEBACiAgICAgdG91Y2ggY29uZmlndXJlCiAgICAgOzsKIAotICBhdXRvaGVhZGVyKQorICBhdXRvaGVhZGVyKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIFxgYWNjb25maWcuaCcgb3IgXGAke2NvbmZpZ3VyZV9hY30nLiAgWW91IG1pZ2h0IHdhbnQKQEAgLTE2NCw3ICsxNzUsNyBAQAogICAgIHRlc3QgLXogIiRmaWxlcyIgJiYgZmlsZXM9ImNvbmZpZy5oIgogICAgIHRvdWNoX2ZpbGVzPQogICAgIGZvciBmIGluICRmaWxlczsgZG8KLSAgICAgIGNhc2UgIiRmIiBpbgorICAgICAgY2FzZSAkZiBpbgogICAgICAgKjoqKSB0b3VjaF9maWxlcz0iJHRvdWNoX2ZpbGVzICJgZWNobyAiJGYiIHwKIAkJCQkgICAgICAgc2VkIC1lICdzL15bXjpdKjovLycgLWUgJ3MvOi4qLy8nYDs7CiAgICAgICAqKSB0b3VjaF9maWxlcz0iJHRvdWNoX2ZpbGVzICRmLmluIjs7CkBAIC0xODQsNyArMTk1LDcgQEAKIAkgICB3aGlsZSByZWFkIGY7IGRvIHRvdWNoICIkZiI7IGRvbmUKICAgICA7OwogCi0gIGF1dG9tNHRlKQorICBhdXRvbTR0ZSopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyBuZWVkZWQsIGJ1dCBpcyAkbXNnLgogICAgICAgICAgWW91IG1pZ2h0IGhhdmUgbW9kaWZpZWQgc29tZSBmaWxlcyB3aXRob3V0IGhhdmluZyB0aGUKQEAgLTE5Miw4ICsyMDMsOCBAQAogICAgICAgICAgWW91IGNhbiBnZXQgXGAkMScgYXMgcGFydCBvZiBcYEF1dG9jb25mJyBmcm9tIGFueSBHTlUKICAgICAgICAgIGFyY2hpdmUgc2l0ZS4iCiAKLSAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotLW91dHB1dFsgPV0qXChbXiBdKlwpLiovXDEvcCdgCi0gICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vWyBdKlwoW14gXSpcKS4qL1wxL3AnYAorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKICAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KIAl0b3VjaCAkZmlsZQogICAgIGVsc2UKQEAgLTIwNyw4MCArMjE4LDc4IEBACiAgICAgZmkKICAgICA7OwogCi0gIGJpc29ufHlhY2MpCisgIGJpc29uKnx5YWNjKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAueScgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBCaXNvbicgcGFja2FnZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAogICAgICAgICAgXGBCaXNvbicgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCiAgICAgcm0gLWYgeS50YWIuYyB5LnRhYi5oCi0gICAgaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICAgaWYgdGVzdCAkIyAtbmUgMTsgdGhlbgogICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKLQljYXNlICIkTEFTVEFSRyIgaW4KKwljYXNlICRMQVNUQVJHIGluCiAJKi55KQogCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MveSQvYy8nYAotCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KIAkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIHkudGFiLmMKIAkgICAgZmkKIAkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2gvJ2AKLQkgICAgaWYgWyAtZiAiJFNSQ0ZJTEUiIF07IHRoZW4KKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCiAJICAgICAgICAgY3AgIiRTUkNGSUxFIiB5LnRhYi5oCiAJICAgIGZpCiAJICA7OwogCWVzYWMKICAgICBmaQotICAgIGlmIFsgISAtZiB5LnRhYi5oIF07IHRoZW4KKyAgICBpZiB0ZXN0ICEgLWYgeS50YWIuaDsgdGhlbgogCWVjaG8gPnkudGFiLmgKICAgICBmaQotICAgIGlmIFsgISAtZiB5LnRhYi5jIF07IHRoZW4KKyAgICBpZiB0ZXN0ICEgLWYgeS50YWIuYzsgdGhlbgogCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+eS50YWIuYwogICAgIGZpCiAgICAgOzsKIAotICBsZXh8ZmxleCkKKyAgbGV4KnxmbGV4KikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAubCcgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBGbGV4JyBwYWNrYWdlCiAgICAgICAgICBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlIGVmZmVjdC4gIFlvdSBjYW4gZ2V0CiAgICAgICAgICBcYEZsZXgnIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogICAgIHJtIC1mIGxleC55eS5jCi0gICAgaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICAgaWYgdGVzdCAkIyAtbmUgMTsgdGhlbgogICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKLQljYXNlICIkTEFTVEFSRyIgaW4KKwljYXNlICRMQVNUQVJHIGluCiAJKi5sKQogCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MvbCQvYy8nYAotCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KIAkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIGxleC55eS5jCiAJICAgIGZpCiAJICA7OwogCWVzYWMKICAgICBmaQotICAgIGlmIFsgISAtZiBsZXgueXkuYyBdOyB0aGVuCisgICAgaWYgdGVzdCAhIC1mIGxleC55eS5jOyB0aGVuCiAJZWNobyAnbWFpbigpIHsgcmV0dXJuIDA7IH0nID5sZXgueXkuYwogICAgIGZpCiAgICAgOzsKIAotICBoZWxwMm1hbikKKyAgaGVscDJtYW4qKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAJIHlvdSBtb2RpZmllZCBhIGRlcGVuZGVuY3kgb2YgYSBtYW51YWwgcGFnZS4gIFlvdSBtYXkgbmVlZCB0aGUKIAkgXGBIZWxwMm1hbicgcGFja2FnZSBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlCiAJIGVmZmVjdC4gIFlvdSBjYW4gZ2V0IFxgSGVscDJtYW4nIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgogCi0gICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLW8gXChbXiBdKlwpLiovXDEvcCdgCi0gICAgaWYgdGVzdCAteiAiJGZpbGUiOyB0aGVuCi0JZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLS1vdXRwdXQ9XChbXiBdKlwpLiovXDEvcCdgCi0gICAgZmkKLSAgICBpZiBbIC1mICIkZmlsZSIgXTsgdGhlbgorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKKyAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KIAl0b3VjaCAkZmlsZQogICAgIGVsc2UKIAl0ZXN0IC16ICIkZmlsZSIgfHwgZXhlYyA+JGZpbGUKIAllY2hvICIuYWIgaGVscDJtYW4gaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWdlIgotCWV4aXQgMQorCWV4aXQgJD8KICAgICBmaQogICAgIDs7CiAKLSAgbWFrZWluZm8pCisgIG1ha2VpbmZvKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAudGV4aScgb3IgXGAudGV4aW5mbycgZmlsZSwgb3IgYW55IG90aGVyIGZpbGUKQEAgLTI4OSwxMSArMjk4LDE3IEBACiAgICAgICAgICBEVSwgSVJJWCkuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZSBcYFRleGluZm8nIHBhY2thZ2Ugb3IKICAgICAgICAgIHRoZSBcYEdOVSBtYWtlJyBwYWNrYWdlLiAgR3JhYiBlaXRoZXIgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCiAgICAgIyBUaGUgZmlsZSB0byB0b3VjaCBpcyB0aGF0IHNwZWNpZmllZCB3aXRoIC1vIC4uLgotICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi1vIFwoW14gXSpcKS4qL1wxL3AnYAorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKICAgICBpZiB0ZXN0IC16ICIkZmlsZSI7IHRoZW4KICAgICAgICMgLi4uIG9yIGl0IGlzIHRoZSBvbmUgc3BlY2lmaWVkIHdpdGggQHNldGZpbGVuYW1lIC4uLgogICAgICAgaW5maWxlPWBlY2hvICIkKiIgfCBzZWQgJ3MvLiogXChbXiBdKlwpICokL1wxLydgCi0gICAgICBmaWxlPWBzZWQgLW4gJy9eQHNldGZpbGVuYW1lLyB7IHMvLiogXChbXiBdKlwpICokL1wxLzsgcDsgcTsgfScgJGluZmlsZWAKKyAgICAgIGZpbGU9YHNlZCAtbiAnCisJL15Ac2V0ZmlsZW5hbWUveworCSAgcy8uKiBcKFteIF0qXCkgKiQvXDEvCisJICBwCisJICBxCisJfScgJGluZmlsZWAKICAgICAgICMgLi4uIG9yIGl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgc291cmNlIG5hbWUgKGRpci9mLnRleGkgYmVjb21lcyBmLmluZm8pCiAgICAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJGluZmlsZSIgfCBzZWQgJ3MsLiovLCw7cywuW14uXSokLCwnYC5pbmZvCiAgICAgZmkKQEAgLTMwMyw3ICszMTgsNyBAQAogICAgIHRvdWNoICRmaWxlCiAgICAgOzsKIAotICB0YXIpCisgIHRhciopCiAgICAgc2hpZnQKIAogICAgICMgV2UgaGF2ZSBhbHJlYWR5IHRyaWVkIHRhciBpbiB0aGUgZ2VuZXJpYyBwYXJ0LgpAQCAtMzE3LDEzICszMzIsMTMgQEAKICAgICBmaQogICAgIGZpcnN0YXJnPSIkMSIKICAgICBpZiBzaGlmdDsgdGhlbgotCWNhc2UgIiRmaXJzdGFyZyIgaW4KKwljYXNlICRmaXJzdGFyZyBpbgogCSpvKikKIAkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9vLy9gCiAJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMAogCSAgICA7OwogCWVzYWMKLQljYXNlICIkZmlyc3RhcmciIGluCisJY2FzZSAkZmlyc3RhcmcgaW4KIAkqaCopCiAJICAgIGZpcnN0YXJnPWBlY2hvICIkZmlyc3RhcmciIHwgc2VkIHMvaC8vYAogCSAgICB0YXIgIiRmaXJzdGFyZyIgIiRAIiAmJiBleGl0IDAKQEAgLTM1Niw1ICszNzEsNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tc3ZjYy5zaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4MzAxODM5Li5kY2RiZWFiCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbXN2Y2Muc2gKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tc3ZjYy5zaApAQCAtNDIsMTMgKzQyLDExIEBACiAjIGZvcm1hdCBhbmQgdHJhbnNsYXRlZCBpbnRvIHNvbWV0aGluZyBzZW5zaWJsZSBmb3IgY2wgb3IgbWwuCiAjCiAKLSMgRGlzYWJsZSBzcGVjaWZpYyB3YXJuaW5ncywgYW5kIGVuYWJsZSB3YXJuaW5ncy1hcy1lcnJvcnMgc28gd2UgY2F0Y2ggYW55Ci0jIG1pc3RyYW5zbGF0ZWQgYXJncy4KLW5vd2Fybj0iLXdkNDEyNyAtd2Q0ODIwIC13ZDQ3MDYgLXdkNDEwMCAtd2Q0MjU1IC13ZDQ2NjggLXdkNDA1MyAtd2Q0MzI0IgotYXJncz0iLW5vbG9nbyAtVzMgLVdYICRub3dhcm4iCithcmdzPSItbm9sb2dvIC1XMyIKIG1kPS1NRAogY2w9ImNsIgogbWw9Im1sIgorc2FmZXNlaD0iLXNhZmVzZWgiCiBvdXRwdXQ9CiAKIHdoaWxlIFsgJCMgLWd0IDAgXQpAQCAtNjYsMTUgKzY0LDI4IEBACiAgICAgLW02NCkKICAgICAgIGNsPSJjbCIgICAjICIkTVNWQy94ODZfYW1kNjQvY2wiCiAgICAgICBtbD0ibWw2NCIgIyAiJE1TVkMveDg2X2FtZDY0L21sNjQiCisgICAgICBzYWZlc2VoPQorICAgICAgc2hpZnQgMQorICAgIDs7CisgICAgLU8wKQorICAgICAgYXJncz0iJGFyZ3MgLU9kIgogICAgICAgc2hpZnQgMQogICAgIDs7CiAgICAgLU8qKQotICAgICAgYXJncz0iJGFyZ3MgJDEiCisgICAgICAjIElmIHdlJ3JlIG9wdGltaXppbmcsIG1ha2Ugc3VyZSB3ZSBleHBsaWNpdGx5IHR1cm4gb24gc29tZSBvcHRpbWl6YXRpb25zCisgICAgICAjIHRoYXQgYXJlIGltcGxpY2l0bHkgZGlzYWJsZWQgYnkgZGVidWcgc3ltYm9scyAoLVppKS4KKyAgICAgIGFyZ3M9IiRhcmdzICQxIC1PUFQ6UkVGIC1PUFQ6SUNGIC1JTkNSRU1FTlRBTDpOTyIKICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1nKQotICAgICAgIyBDYW4ndCBzcGVjaWZ5IC1SVEMxIG9yIC1aaSBpbiBvcHQuIC1HeSBpcyBvay4gVXNlIC1PUFQ6UkVGPwotICAgICAgYXJncz0iJGFyZ3MgLURfREVCVUcgLVJUQzEgLVppIgorICAgICAgIyBFbmFibGUgZGVidWcgc3ltYm9sIGdlbmVyYXRpb24uCisgICAgICBhcmdzPSIkYXJncyAtWmkgLURFQlVHIgorICAgICAgc2hpZnQgMQorICAgIDs7CisgICAgLURGRklfREVCVUcpCisgICAgICAjIExpbmsgYWdhaW5zdCBkZWJ1ZyBDUlQgYW5kIGVuYWJsZSBydW50aW1lIGVycm9yIGNoZWNrcy4KKyAgICAgIGFyZ3M9IiRhcmdzIC1SVEMxIgorICAgICAgZGVmaW5lcz0iJGRlZmluZXMgJDEiCiAgICAgICBtZD0tTURkCiAgICAgICBzaGlmdCAxCiAgICAgOzsKQEAgLTExMSw3ICsxMjIsOCBAQAogICAgICAgc2hpZnQgMQogICAgIDs7CiAgICAgLVdhbGwpCi0gICAgICBhcmdzPSIkYXJncyAtV2FsbCIKKyAgICAgICMgLVdhbGwgb24gTVNWQyBpcyBvdmVyemVhbG91cywgYW5kIHdlIGFscmVhZHkgYnVpbGQgd2l0aCAtVzMuIE5vdGhpbmcKKyAgICAgICMgdG8gZG8gaGVyZS4KICAgICAgIHNoaWZ0IDEKICAgICA7OwogICAgIC1XZXJyb3IpCkBAIC0xNjYsNyArMTc4LDcgQEAKICAgICBlY2hvICIkY2wgLW5vbG9nbyAtRVAgJGluY2x1ZGVzICRkZWZpbmVzICRzcmMgPiAkcHBzcmMiCiAgICAgIiRjbCIgLW5vbG9nbyAtRVAgJGluY2x1ZGVzICRkZWZpbmVzICRzcmMgPiAkcHBzcmMgfHwgZXhpdCAkPwogICAgIG91dHB1dD0iJChlY2hvICRvdXRwdXQgfCBzZWQgJ3MlL0ZbZHBhXVteIF0qJSVnJykiCi0gICAgYXJncz0iLW5vbG9nbyAtc2FmZXNlaCAkc2luZ2xlICRvdXRwdXQgJHBwc3JjIgorICAgIGFyZ3M9Ii1ub2xvZ28gJHNhZmVzZWggJHNpbmdsZSAkb3V0cHV0ICRwcHNyYyIKIAogICAgIGVjaG8gIiRtbCAkYXJncyIKICAgICBldmFsICJcIiRtbFwiICRhcmdzIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYwppbmRleCA4ZDZiMmJhLi4xOTJmNjkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwMSwgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4ICBSZWQgSGF0LCBJbmMuCiAgICAKICAgIEFscGhhIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0xNzgsNiArMTc5LDkgQEAKIHsKICAgdW5zaWduZWQgaW50ICp0cmFtcDsKIAorICBpZiAoY2lmLT5hYmkgIT0gRkZJX09TRikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgdHJhbXBbMF0gPSAweDQ3ZmIwNDAxOwkvKiBtb3YgJDI3LCQxCQkqLwogICB0cmFtcFsxXSA9IDB4YTc3YjAwMTA7CS8qIGxkcSAkMjcsMTYoJDI3KQkqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaAppbmRleCA3ZDA2ZWIwLi5hZjE0NWJjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBbHBoYS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL29zZi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMKaW5kZXggZDBlNzc4Mi4uNmI5ZjRkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgb3NmLlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDggUmVkIEhhdAorICAgb3NmLlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDgsIDIwMTEgUmVkIEhhdAogICAgCiAgICBBbHBoYS9PU0YgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTI5OSwzMyArMjk5LDUxIEBACiAjZW5kaWYKIAogI2lmZGVmIF9fRUxGX18KKyMgZGVmaW5lIFVBX1NJCQkuNGJ5dGUKKyMgZGVmaW5lIEZERV9FTkNPRElORwkweDFiCS8qIHBjcmVsIHNkYXRhNCAqLworIyBkZWZpbmUgRkRFX0VOQ09ERShYKQkuNGJ5dGUgWC0uCisjIGRlZmluZSBGREVfQVJBTkdFKFgpCS40Ynl0ZSBYCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KKyMgZGVmaW5lIFVBX1NJCQkuYWxpZ24gMDsgLmxvbmcKKyMgZGVmaW5lIEZERV9FTkNPRElORwkweDUwCS8qIGFsaWduZWQgYWJzb2x1dGUgKi8KKyMgZGVmaW5lIEZERV9FTkNPREUoWCkJLmFsaWduIDM7IC5xdWFkIFgKKyMgZGVmaW5lIEZERV9BUkFOR0UoWCkJLmFsaWduIDA7IC5xdWFkIFgKKyNlbmRpZgorCisjaWZkZWYgX19FTEZfXwogCS5zZWN0aW9uCS5laF9mcmFtZSxFSF9GUkFNRV9GTEFHUyxAcHJvZ2JpdHMKKyNlbGlmIGRlZmluZWQgX19vc2ZfXworCS5kYXRhCisJLmFsaWduIDMKKwkuZ2xvYmwgX0dMT0JBTF9fRl9mZmlfY2FsbF9vc2YKK19HTE9CQUxfX0ZfZmZpX2NhbGxfb3NmOgorI2VuZGlmCiBfX0ZSQU1FX0JFR0lOX186Ci0JLjRieXRlCSRMRUNJRTEtJExTQ0lFMQkjIExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKKwlVQV9TSQkkTEVDSUUxLSRMU0NJRTEJIyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CiAkTFNDSUUxOgotCS40Ynl0ZQkweDAJCSMgQ0lFIElkZW50aWZpZXIgVGFnCisJVUFfU0kJMHgwCQkjIENJRSBJZGVudGlmaWVyIFRhZwogCS5ieXRlCTB4MQkJIyBDSUUgVmVyc2lvbgogCS5hc2NpaSAielJcMCIJCSMgQ0lFIEF1Z21lbnRhdGlvbgogCS5ieXRlCTB4MQkJIyB1bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTB4NzgJCSMgc2xlYjEyOCAtODsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTI2CQkjIENJRSBSQSBDb2x1bW4KIAkuYnl0ZQkweDEJCSMgdWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplCi0JLmJ5dGUJMHgxYgkJIyBGREUgRW5jb2RpbmcgKHBjcmVsIHNkYXRhNCkKKwkuYnl0ZQlGREVfRU5DT0RJTkcJIyBGREUgRW5jb2RpbmcKIAkuYnl0ZQkweGMJCSMgRFdfQ0ZBX2RlZl9jZmEKIAkuYnl0ZQkzMAkJIyB1bGViMTI4IGNvbHVtbiAzMAogCS5ieXRlCTAJCSMgdWxlYjEyOCBvZmZzZXQgMAogCS5hbGlnbiAzCiAkTEVDSUUxOgogJExTRkRFMToKLQkuNGJ5dGUJJExFRkRFMS0kTEFTRkRFMQkJIyBGREUgTGVuZ3RoCisJVUFfU0kJJExFRkRFMS0kTEFTRkRFMQkJIyBGREUgTGVuZ3RoCiAkTEFTRkRFMToKLQkuNGJ5dGUJJExBU0ZERTEtX19GUkFNRV9CRUdJTl9fCSMgRkRFIENJRSBvZmZzZXQKLQkuNGJ5dGUJJExGQjEtLgkJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS40Ynl0ZQkkTEZFMS0kTEZCMQkjIEZERSBhZGRyZXNzIHJhbmdlCisJVUFfU0kJJExBU0ZERTEtX19GUkFNRV9CRUdJTl9fCSMgRkRFIENJRSBvZmZzZXQKKwlGREVfRU5DT0RFKCRMRkIxKQkJCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KKwlGREVfQVJBTkdFKCRMRkUxLSRMRkIxKQkJCSMgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZQkweDAJCSMgdWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplCiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTEtJExGQjEKKwlVQV9TSQkkTENGSTEtJExGQjEKIAkuYnl0ZQkweDlhCQkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAyNgogCS5ieXRlCTQJCSMgdWxlYjEyOCA0Ki04CiAJLmJ5dGUJMHg4ZgkJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMTUKQEAgLTMzNSwzMiArMzUzLDM1IEBACiAJLmJ5dGUJMzIJCSMgdWxlYjEyOCBvZmZzZXQgMzIKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJMi0kTENGSTEKKwlVQV9TSQkkTENGSTItJExDRkkxCiAJLmJ5dGUJMHhkYQkJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDI2CiAJLmFsaWduIDMKICRMRUZERTE6CiAKICRMU0ZERTM6Ci0JLjRieXRlCSRMRUZERTMtJExBU0ZERTMJCSMgRkRFIExlbmd0aAorCVVBX1NJCSRMRUZERTMtJExBU0ZERTMJCSMgRkRFIExlbmd0aAogJExBU0ZERTM6Ci0JLjRieXRlCSRMQVNGREUzLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0Ci0JLjRieXRlCSRMRkIyLS4JCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuNGJ5dGUJJExGRTItJExGQjIJIyBGREUgYWRkcmVzcyByYW5nZQorCVVBX1NJCSRMQVNGREUzLV9fRlJBTUVfQkVHSU5fXwkjIEZERSBDSUUgb2Zmc2V0CisJRkRFX0VOQ09ERSgkTEZCMikJCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCisJRkRFX0FSQU5HRSgkTEZFMi0kTEZCMikJCQkjIEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUJMHgwCQkjIHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCiAJLmJ5dGUJMHg0CQkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuNGJ5dGUJJExDRkk1LSRMRkIyCisJVUFfU0kJJExDRkk1LSRMRkIyCiAJLmJ5dGUJMHhlCQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAogCS5ieXRlCTB4ODAsMHgxCSMgdWxlYjEyOCAxMjgKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJNi0kTENGSTUKKwlVQV9TSQkkTENGSTYtJExDRkk1CiAJLmJ5dGUJMHg5YQkJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMjYKIAkuYnl0ZQkxNgkJIyB1bGViMTI4IG9mZnNldCAxNiotOAogCS5hbGlnbiAzCiAkTEVGREUzOgotCi0jaWZkZWYgX19saW51eF9fCi0JLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cworI2lmIGRlZmluZWQgX19vc2ZfXworCS5hbGlnbiAwCisJLmxvbmcJMAkJIyBFbmQgb2YgVGFibGUKICNlbmRpZgorCisjaWYgZGVmaW5lZCBfX0VMRl9fICYmIGRlZmluZWQgX19saW51eF9fCisJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMKaW5kZXggZjZhNjQ3NS4uM2NjY2ViOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYwpAQCAtMSw2ICsxLDEwIEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDggIFJlZCBIYXQsIEluYy4KLSAgIAorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgVGltb3RoeSBXYWxsCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMSBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgorCSAgIENvcHlyaWdodCAoYykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4LCAyMDExICBSZWQgSGF0LCBJbmMuCisJICAgCiAgICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjksMTIgKzMzLDIwIEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAotLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQotICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgKi8KKy8qIEZvcndhcmQgZGVjbGFyZXMuICovCitzdGF0aWMgaW50IHZmcF90eXBlX3AgKGZmaV90eXBlICopOworc3RhdGljIHZvaWQgbGF5b3V0X3ZmcF9hcmdzIChmZmlfY2lmICopOwogCi12b2lkIGZmaV9wcmVwX2FyZ3MoY2hhciAqc3RhY2ssIGV4dGVuZGVkX2NpZiAqZWNpZikKKy8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKKyAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzCisgICAKKyAgIFRoZSB2ZnBfc3BhY2UgcGFyYW1ldGVyIGlzIHRoZSBsb2FkIGFyZWEgZm9yIFZGUCByZWdzLCB0aGUgcmV0dXJuCisgICB2YWx1ZSBpcyBjaWYtPnZmcF91c2VkICh3b3JkIGJpdHNldCBvZiBWRlAgcmVncyB1c2VkIGZvciBwYXNzaW5nCisgICBhcmd1bWVudHMpLiBUaGVzZSBhcmUgb25seSB1c2VkIGZvciB0aGUgVkZQIGhhcmQtZmxvYXQgQUJJLgorKi8KK2ludCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYsIGZsb2F0ICp2ZnBfc3BhY2UpCiB7Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOworICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaSwgdmkgPSAwOwogICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwogICByZWdpc3RlciBjaGFyICphcmdwOwogICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwpAQCAtNTMsMTAgKzY1LDMxIEBACiAgICAgICAgaS0tLCBwX2FyZysrKQogICAgIHsKICAgICAgIHNpemVfdCB6OworICAgICAgc2l6ZV90IGFsaWdubWVudDsKKworICAgICAgLyogQWxsb2NhdGVkIGluIFZGUCByZWdpc3RlcnMuICovCisgICAgICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX1ZGUAorCSAgJiYgdmkgPCBlY2lmLT5jaWYtPnZmcF9uYXJncyAmJiB2ZnBfdHlwZV9wICgqcF9hcmcpKQorCXsKKwkgIGZsb2F0KiB2ZnBfc2xvdCA9IHZmcF9zcGFjZSArIGVjaWYtPmNpZi0+dmZwX2FyZ3NbdmkrK107CisJICBpZiAoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQpCisJICAgICooKGZsb2F0Kil2ZnBfc2xvdCkgPSAqKChmbG9hdCopKnBfYXJndik7CisJICBlbHNlIGlmICgoKnBfYXJnKS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJICAgICooKGRvdWJsZSopdmZwX3Nsb3QpID0gKigoZG91YmxlKikqcF9hcmd2KTsKKwkgIGVsc2UKKwkgICAgbWVtY3B5KHZmcF9zbG90LCAqcF9hcmd2LCAoKnBfYXJnKS0+c2l6ZSk7CisJICBwX2FyZ3YrKzsKKwkgIGNvbnRpbnVlOworCX0KIAogICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoKCgqcF9hcmcpLT5hbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCAoKnBfYXJnKS0+YWxpZ25tZW50KTsKKyAgICAgIGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7CisjaWZkZWYgX1dJTjMyX1dDRQorICAgICAgaWYgKGFsaWdubWVudCA+IDQpCisJYWxpZ25tZW50ID0gNDsKKyNlbmRpZgorICAgICAgaWYgKChhbGlnbm1lbnQgLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgeworCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhbGlnbm1lbnQpOwogICAgICAgfQogCiAgICAgICBpZiAoKCpwX2FyZyktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQpAQCAtMTAzLDEzICsxMzYsMTUgQEAKIAkgIHBfYXJndisrOwogCSAgYXJncCArPSB6OwogICAgIH0KLSAgCi0gIHJldHVybjsKKworICAvKiBJbmRpY2F0ZSB0aGUgVkZQIHJlZ2lzdGVycyB1c2VkLiAqLworICByZXR1cm4gZWNpZi0+Y2lmLT52ZnBfdXNlZDsKIH0KIAogLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwogZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpCiB7CisgIGludCB0eXBlX2NvZGU7CiAgIC8qIFJvdW5kIHRoZSBzdGFjayB1cCB0byBhIG11bHRpcGxlIG9mIDggYnl0ZXMuICBUaGlzIGlzbid0IG5lZWRlZCAKICAgICAgZXZlcnl3aGVyZSwgYnV0IGl0IGlzIG9uIHNvbWUgcGxhdGZvcm1zLCBhbmQgaXQgZG9lc24ndCBoYXJtIGFueXRoaW5nCiAgICAgIHdoZW4gaXQgaXNuJ3QgbmVlZGVkLiAgKi8KQEAgLTEzMCw3ICsxNjUsMTQgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0gICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8PSA0KQorICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlAKKwkgICYmICh0eXBlX2NvZGUgPSB2ZnBfdHlwZV9wIChjaWYtPnJ0eXBlKSkgIT0gMCkKKwl7CisJICAvKiBBIENvbXBvc2l0ZSBUeXBlIHBhc3NlZCBpbiBWRlAgcmVnaXN0ZXJzLCBlaXRoZXIKKwkgICAgIEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQgb3IgRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUuICovCisJICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSB0eXBlX2NvZGU7CisJfQorICAgICAgZWxzZSBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8PSA0KQogCS8qIEEgQ29tcG9zaXRlIFR5cGUgbm90IGxhcmdlciB0aGFuIDQgYnl0ZXMgaXMgcmV0dXJuZWQgaW4gcjAuICAqLwogCWNpZi0+ZmxhZ3MgPSAodW5zaWduZWQpRkZJX1RZUEVfSU5UOwogICAgICAgZWxzZQpAQCAtMTQ1LDExICsxODcsMzAgQEAKICAgICAgIGJyZWFrOwogICAgIH0KIAorICAvKiBNYXAgb3V0IHRoZSByZWdpc3RlciBwbGFjZW1lbnRzIG9mIFZGUCByZWdpc3RlciBhcmdzLgorICAgICBUaGUgVkZQIGhhcmQtZmxvYXQgY2FsbGluZyBjb252ZW50aW9ucyBhcmUgc2xpZ2h0bHkgbW9yZSBzb3BoaXN0aWNhdGVkIHRoYW4KKyAgICAgdGhlIGJhc2UgY2FsbGluZyBjb252ZW50aW9ucywgc28gd2UgZG8gaXQgaGVyZSBpbnN0ZWFkIG9mIGluIGZmaV9wcmVwX2FyZ3MoKS4gKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9WRlApCisgICAgbGF5b3V0X3ZmcF9hcmdzIChjaWYpOworCiAgIHJldHVybiBGRklfT0s7CiB9CiAKLWV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIGV4dGVuZGVkX2NpZiAqLAotCQkJICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOworLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyBmb3IgdmFyaWFkaWMgY2FsbHMgKi8KK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXBfdmFyKGZmaV9jaWYgKmNpZiwKKwkJCQkgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisJCQkJICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzKQoreworICAvKiBWRlAgdmFyaWFkaWMgY2FsbHMgYWN0dWFsbHkgdXNlIHRoZSBTWVNWIEFCSSAqLworICBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUCkKKwljaWYtPmFiaSA9IEZGSV9TWVNWOworCisgIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOworfQorCisvKiBQcm90b3R5cGVzIGZvciBhc3NlbWJseSBmdW5jdGlvbnMsIGluIHN5c3YuUyAqLworZXh0ZXJuIHZvaWQgZmZpX2NhbGxfU1lTViAodm9pZCAoKmZuKSh2b2lkKSwgZXh0ZW5kZWRfY2lmICosIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKik7CitleHRlcm4gdm9pZCBmZmlfY2FsbF9WRlAgKHZvaWQgKCpmbikodm9pZCksIGV4dGVuZGVkX2NpZiAqLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICopOwogCiB2b2lkIGZmaV9jYWxsKGZmaV9jaWYgKmNpZiwgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAqcnZhbHVlLCB2b2lkICoqYXZhbHVlKQogewpAQCAtMTU3LDYgKzIxOCw4IEBACiAKICAgaW50IHNtYWxsX3N0cnVjdCA9IChjaWYtPmZsYWdzID09IEZGSV9UWVBFX0lOVCAKIAkJICAgICAgJiYgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpOworICBpbnQgdmZwX3N0cnVjdCA9IChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwkJICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUpOwogCiAgIGVjaWYuY2lmID0gY2lmOwogICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKQEAgLTE3MywzOCArMjM2LDUzIEBACiAgICAgfQogICBlbHNlIGlmIChzbWFsbF9zdHJ1Y3QpCiAgICAgZWNpZi5ydmFsdWUgPSAmdGVtcDsKKyAgZWxzZSBpZiAodmZwX3N0cnVjdCkKKyAgICB7CisgICAgICAvKiBMYXJnZXN0IGNhc2UgaXMgZG91YmxlIHggNC4gKi8KKyAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKDMyKTsKKyAgICB9CiAgIGVsc2UKICAgICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKIAogICBzd2l0Y2ggKGNpZi0+YWJpKSAKICAgICB7CiAgICAgY2FzZSBGRklfU1lTVjoKLSAgICAgIGZmaV9jYWxsX1NZU1YoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLAotCQkgICAgZm4pOwotCisgICAgICBmZmlfY2FsbF9TWVNWIChmbiwgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlKTsKICAgICAgIGJyZWFrOworCisgICAgY2FzZSBGRklfVkZQOgorI2lmZGVmIF9fQVJNX0VBQklfXworICAgICAgZmZpX2NhbGxfVkZQIChmbiwgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlKTsKKyAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICBkZWZhdWx0OgogICAgICAgRkZJX0FTU0VSVCgwKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgaWYgKHNtYWxsX3N0cnVjdCkKICAgICBtZW1jcHkgKHJ2YWx1ZSwgJnRlbXAsIGNpZi0+cnR5cGUtPnNpemUpOworICBlbHNlIGlmICh2ZnBfc3RydWN0KQorICAgIG1lbWNweSAocnZhbHVlLCBlY2lmLnJ2YWx1ZSwgY2lmLT5ydHlwZS0+c2l6ZSk7CiB9CiAKIC8qKiBwcml2YXRlIG1lbWJlcnMgKiovCiAKIHN0YXRpYyB2b2lkIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTViAoY2hhciAqc3RhY2ssIHZvaWQgKipyZXQsCi0JCQkJCSB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmKTsKKwkJCQkJIHZvaWQqKiBhcmdzLCBmZmlfY2lmKiBjaWYsIGZsb2F0ICp2ZnBfc3RhY2spOwogCiB2b2lkIGZmaV9jbG9zdXJlX1NZU1YgKGZmaV9jbG9zdXJlICopOwogCit2b2lkIGZmaV9jbG9zdXJlX1ZGUCAoZmZpX2Nsb3N1cmUgKik7CisKIC8qIFRoaXMgZnVuY3Rpb24gaXMganVtcGVkIHRvIGJ5IHRoZSB0cmFtcG9saW5lICovCiAKIHVuc2lnbmVkIGludAotZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoY2xvc3VyZSwgcmVzcHAsIGFyZ3MpCitmZmlfY2xvc3VyZV9TWVNWX2lubmVyIChjbG9zdXJlLCByZXNwcCwgYXJncywgdmZwX2FyZ3MpCiAgICAgIGZmaV9jbG9zdXJlICpjbG9zdXJlOwogICAgICB2b2lkICoqcmVzcHA7CiAgICAgIHZvaWQgKmFyZ3M7CisgICAgIHZvaWQgKnZmcF9hcmdzOwogewogICAvLyBvdXIgdmFyaW91cyB0aGluZ3MuLi4KICAgZmZpX2NpZiAgICAgICAqY2lmOwpAQCAtMjE5LDcgKzI5Nyw3IEBACiAgICAqIGEgc3RydWN0dXJlLCBpdCB3aWxsIHJlLXNldCBSRVNQIHRvIHBvaW50IHRvIHRoZQogICAgKiBzdHJ1Y3R1cmUgcmV0dXJuIGFkZHJlc3MuICAqLwogCi0gIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihhcmdzLCByZXNwcCwgYXJnX2FyZWEsIGNpZik7CisgIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihhcmdzLCByZXNwcCwgYXJnX2FyZWEsIGNpZiwgdmZwX2FyZ3MpOwogCiAgIChjbG9zdXJlLT5mdW4pIChjaWYsICpyZXNwcCwgYXJnX2FyZWEsIGNsb3N1cmUtPnVzZXJfZGF0YSk7CiAKQEAgLTIyOSwxMCArMzA3LDEyIEBACiAvKkAtZXhwb3J0aGVhZGVyQCovCiBzdGF0aWMgdm9pZCAKIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihjaGFyICpzdGFjaywgdm9pZCAqKnJ2YWx1ZSwKLQkJCSAgICB2b2lkICoqYXZhbHVlLCBmZmlfY2lmICpjaWYpCisJCQkgICAgdm9pZCAqKmF2YWx1ZSwgZmZpX2NpZiAqY2lmLAorCQkJICAgIC8qIFVzZWQgb25seSB1bmRlciBWRlAgaGFyZC1mbG9hdCBBQkkuICovCisJCQkgICAgZmxvYXQgKnZmcF9zdGFjaykKIC8qQD1leHBvcnRoZWFkZXJAKi8KIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7CisgIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpLCB2aSA9IDA7CiAgIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7CiAgIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7CiAgIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7CkBAIC0yNDksMTAgKzMyOSwyMyBAQAogICBmb3IgKGkgPSBjaWYtPm5hcmdzLCBwX2FyZyA9IGNpZi0+YXJnX3R5cGVzOyAoaSAhPSAwKTsgaS0tLCBwX2FyZysrKQogICAgIHsKICAgICAgIHNpemVfdCB6OworICAgICAgc2l6ZV90IGFsaWdubWVudDsKKyAgCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUAorCSAgJiYgdmkgPCBjaWYtPnZmcF9uYXJncyAmJiB2ZnBfdHlwZV9wICgqcF9hcmcpKQorCXsKKwkgICpwX2FyZ3YrKyA9ICh2b2lkKikodmZwX3N0YWNrICsgY2lmLT52ZnBfYXJnc1t2aSsrXSk7CisJICBjb250aW51ZTsKKwl9CiAKLSAgICAgIHNpemVfdCBhbGlnbm1lbnQgPSAoKnBfYXJnKS0+YWxpZ25tZW50OworICAgICAgYWxpZ25tZW50ID0gKCpwX2FyZyktPmFsaWdubWVudDsKICAgICAgIGlmIChhbGlnbm1lbnQgPCA0KQogCWFsaWdubWVudCA9IDQ7CisjaWZkZWYgX1dJTjMyX1dDRQorICAgICAgZWxzZQorCWlmIChhbGlnbm1lbnQgPiA0KQorCSAgYWxpZ25tZW50ID0gNDsKKyNlbmRpZgogICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCiAgICAgICBpZiAoKGFsaWdubWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7CiAJYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFsaWdubWVudCk7CkBAIC0yNzMsMTggKzM2NiwyMzcgQEAKIAogLyogSG93IHRvIG1ha2UgYSB0cmFtcG9saW5lLiAgKi8KIAorZXh0ZXJuIHVuc2lnbmVkIGludCBmZmlfYXJtX3RyYW1wb2xpbmVbM107CisKKyNpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisKKyNpbmNsdWRlIDxtYWNoL21hY2guaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworZXh0ZXJuIHZvaWQgKmZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZTsKKwordHlwZWRlZiBzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGUgZmZpX3RyYW1wb2xpbmVfdGFibGU7Cit0eXBlZGVmIHN0cnVjdCBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKworc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlIHsKKyAgLyogY29udGlnaW91cyB3cml0YWJsZSBhbmQgZXhlY3V0YWJsZSBwYWdlcyAqLworICB2bV9hZGRyZXNzX3QgY29uZmlnX3BhZ2U7CisgIHZtX2FkZHJlc3NfdCB0cmFtcG9saW5lX3BhZ2U7CisKKyAgLyogZnJlZSBsaXN0IHRyYWNraW5nICovCisgIHVpbnQxNl90IGZyZWVfY291bnQ7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICpmcmVlX2xpc3Q7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICpmcmVlX2xpc3RfcG9vbDsKKworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqcHJldjsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKm5leHQ7Cit9OworCitzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgeworICB2b2lkICooKnRyYW1wb2xpbmUpKCk7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICpuZXh0OworfTsKKworLyogT3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGFyY2hpdGVjdHVyZSB0cmFtcG9saW5lIHNpemUgKi8KKy8vIFhYWCBUT0RPIC0gRml4CisjdW5kZWYgRkZJX1RSQU1QT0xJTkVfU0laRQorI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEyCisKKy8qIFRoZSB0cmFtcG9saW5lIGNvbmZpZ3VyYXRpb24gaXMgcGxhY2VkIGF0IDQwODAgYnl0ZXMgcHJpb3IgdG8gdGhlIHRyYW1wb2xpbmUncyBlbnRyeSBwb2ludCAqLworI2RlZmluZSBGRklfVFJBTVBPTElORV9DT0RFTE9DX0NPTkZJRyhjb2RlbG9jKSAoKHZvaWQgKiopICgoKHVpbnQ4X3QgKikgY29kZWxvYykgLSA0MDgwKSk7CisKKy8qIFRoZSBmaXJzdCAxNiBieXRlcyBvZiB0aGUgY29uZmlnIHBhZ2UgYXJlIHVudXNlZCwgYXMgdGhleSBhcmUgdW5hZGRyZXNzYWJsZSBmcm9tIHRoZSB0cmFtcG9saW5lIHBhZ2UuICovCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX0NPTkZJR19QQUdFX09GRlNFVCAxNgorCisvKiBUb3RhbCBudW1iZXIgb2YgdHJhbXBvbGluZXMgdGhhdCBmaXQgaW4gb25lIHRyYW1wb2xpbmUgdGFibGUgKi8KKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfQ09VTlQgKChQQUdFX1NJWkUgLSBGRklfVFJBTVBPTElORV9DT05GSUdfUEFHRV9PRkZTRVQpIC8gRkZJX1RSQU1QT0xJTkVfU0laRSkKKworc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBmZmlfdHJhbXBvbGluZV9sb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKK3N0YXRpYyBmZmlfdHJhbXBvbGluZV90YWJsZSAqZmZpX3RyYW1wb2xpbmVfdGFibGVzID0gTlVMTDsKKworc3RhdGljIGZmaV90cmFtcG9saW5lX3RhYmxlICoKK2ZmaV90cmFtcG9saW5lX3RhYmxlX2FsbG9jICgpCit7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlICp0YWJsZSA9IE5VTEw7CisKKyAgLyogTG9vcCB1bnRpbCB3ZSBjYW4gYWxsb2NhdGUgdHdvIGNvbnRpZ2lvdXMgcGFnZXMgKi8KKyAgd2hpbGUgKHRhYmxlID09IE5VTEwpIHsKKyAgICB2bV9hZGRyZXNzX3QgY29uZmlnX3BhZ2UgPSAweDA7CisgICAga2Vybl9yZXR1cm5fdCBrdDsKKworICAgIC8qIFRyeSB0byBhbGxvY2F0ZSB0d28gcGFnZXMgKi8KKyAgICBrdCA9IHZtX2FsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgJmNvbmZpZ19wYWdlLCBQQUdFX1NJWkUqMiwgVk1fRkxBR1NfQU5ZV0hFUkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fYWxsb2NhdGUoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvKiBOb3cgZHJvcCB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGFsbG9jYXRpb24gdG8gbWFrZSByb29tIGZvciB0aGUgdHJhbXBvbGluZSB0YWJsZSAqLworICAgIHZtX2FkZHJlc3NfdCB0cmFtcG9saW5lX3BhZ2UgPSBjb25maWdfcGFnZStQQUdFX1NJWkU7CisgICAga3QgPSB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgdHJhbXBvbGluZV9wYWdlLCBQQUdFX1NJWkUpOworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fZGVhbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIFJlbWFwIHRoZSB0cmFtcG9saW5lIHRhYmxlIHRvIGRpcmVjdGx5IGZvbGxvdyB0aGUgY29uZmlnIHBhZ2UgKi8KKyAgICB2bV9wcm90X3QgY3VyX3Byb3Q7CisgICAgdm1fcHJvdF90IG1heF9wcm90OworCisgICAga3QgPSB2bV9yZW1hcCAobWFjaF90YXNrX3NlbGYgKCksICZ0cmFtcG9saW5lX3BhZ2UsIFBBR0VfU0laRSwgMHgwLCBGQUxTRSwgbWFjaF90YXNrX3NlbGYgKCksICh2bV9hZGRyZXNzX3QpICZmZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UsIEZBTFNFLCAmY3VyX3Byb3QsICZtYXhfcHJvdCwgVk1fSU5IRVJJVF9TSEFSRSk7CisKKyAgICAvKiBJZiB3ZSBsb3N0IGFjY2VzcyB0byB0aGUgZGVzdGluYXRpb24gdHJhbXBvbGluZSBwYWdlLCBkcm9wIG91ciBjb25maWcgYWxsb2NhdGlvbiBtYXBwaW5nIGFuZCByZXRyeSAqLworICAgIGlmIChrdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgIC8qIExvZyB1bmV4cGVjdGVkIGZhaWx1cmVzICovCisgICAgICBpZiAoa3QgIT0gS0VSTl9OT19TUEFDRSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInZtX3JlbWFwKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgfQorCisgICAgICB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgY29uZmlnX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvKiBXZSBoYXZlIHZhbGlkIHRyYW1wb2xpbmUgYW5kIGNvbmZpZyBwYWdlcyAqLworICAgIHRhYmxlID0gY2FsbG9jICgxLCBzaXplb2YoZmZpX3RyYW1wb2xpbmVfdGFibGUpKTsKKyAgICB0YWJsZS0+ZnJlZV9jb3VudCA9IEZGSV9UUkFNUE9MSU5FX0NPVU5UOworICAgIHRhYmxlLT5jb25maWdfcGFnZSA9IGNvbmZpZ19wYWdlOworICAgIHRhYmxlLT50cmFtcG9saW5lX3BhZ2UgPSB0cmFtcG9saW5lX3BhZ2U7CisKKyAgICAvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGZyZWUgbGlzdCAqLworICAgIHRhYmxlLT5mcmVlX2xpc3RfcG9vbCA9IGNhbGxvYyhGRklfVFJBTVBPTElORV9DT1VOVCwgc2l6ZW9mKGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5KSk7CisKKyAgICB1aW50MTZfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCB0YWJsZS0+ZnJlZV9jb3VudDsgaSsrKSB7CisgICAgICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZW50cnkgPSAmdGFibGUtPmZyZWVfbGlzdF9wb29sW2ldOworICAgICAgZW50cnktPnRyYW1wb2xpbmUgPSAodm9pZCAqKSAodGFibGUtPnRyYW1wb2xpbmVfcGFnZSArIChpICogRkZJX1RSQU1QT0xJTkVfU0laRSkpOworCisgICAgICBpZiAoaSA8IHRhYmxlLT5mcmVlX2NvdW50IC0gMSkKKyAgICAgICAgZW50cnktPm5leHQgPSAmdGFibGUtPmZyZWVfbGlzdF9wb29sW2krMV07CisgICAgfQorCisgICAgdGFibGUtPmZyZWVfbGlzdCA9IHRhYmxlLT5mcmVlX2xpc3RfcG9vbDsKKyAgfQorCisgIHJldHVybiB0YWJsZTsKK30KKwordm9pZCAqCitmZmlfY2xvc3VyZV9hbGxvYyAoc2l6ZV90IHNpemUsIHZvaWQgKipjb2RlKQoreworICAvKiBDcmVhdGUgdGhlIGNsb3N1cmUgKi8KKyAgZmZpX2Nsb3N1cmUgKmNsb3N1cmUgPSBtYWxsb2Moc2l6ZSk7CisgIGlmIChjbG9zdXJlID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcHRocmVhZF9tdXRleF9sb2NrKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBDaGVjayBmb3IgYW4gYWN0aXZlIHRyYW1wb2xpbmUgdGFibGUgd2l0aCBhdmFpbGFibGUgZW50cmllcy4gKi8KKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnRhYmxlID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzOworICBpZiAodGFibGUgPT0gTlVMTCB8fCB0YWJsZS0+ZnJlZV9saXN0ID09IE5VTEwpIHsKKyAgICB0YWJsZSA9IGZmaV90cmFtcG9saW5lX3RhYmxlX2FsbG9jICgpOworICAgIGlmICh0YWJsZSA9PSBOVUxMKSB7CisgICAgICBmcmVlKGNsb3N1cmUpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogSW5zZXJ0IHRoZSBuZXcgdGFibGUgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdCAqLworICAgIHRhYmxlLT5uZXh0ID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzOworICAgIGlmICh0YWJsZS0+bmV4dCAhPSBOVUxMKQorICAgICAgICB0YWJsZS0+bmV4dC0+cHJldiA9IHRhYmxlOworCisgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVzID0gdGFibGU7CisgIH0KKworICAvKiBDbGFpbSB0aGUgZnJlZSBlbnRyeSAqLworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZW50cnkgPSBmZmlfdHJhbXBvbGluZV90YWJsZXMtPmZyZWVfbGlzdDsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5mcmVlX2xpc3QgPSBlbnRyeS0+bmV4dDsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVzLT5mcmVlX2NvdW50LS07CisgIGVudHJ5LT5uZXh0ID0gTlVMTDsKKworICBwdGhyZWFkX211dGV4X3VubG9jaygmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHZhbHVlcyAqLworICAqY29kZSA9IGVudHJ5LT50cmFtcG9saW5lOworICBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlID0gdGFibGU7CisgIGNsb3N1cmUtPnRyYW1wb2xpbmVfdGFibGVfZW50cnkgPSBlbnRyeTsKKworICByZXR1cm4gY2xvc3VyZTsKK30KKwordm9pZAorZmZpX2Nsb3N1cmVfZnJlZSAodm9pZCAqcHRyKQoreworICBmZmlfY2xvc3VyZSAqY2xvc3VyZSA9IHB0cjsKKworICBwdGhyZWFkX211dGV4X2xvY2soJmZmaV90cmFtcG9saW5lX2xvY2spOworCisgIC8qIEZldGNoIHRoZSB0YWJsZSBhbmQgZW50cnkgcmVmZXJlbmNlcyAqLworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqdGFibGUgPSBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlOworICBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSAqZW50cnkgPSBjbG9zdXJlLT50cmFtcG9saW5lX3RhYmxlX2VudHJ5OworCisgIC8qIFJldHVybiB0aGUgZW50cnkgdG8gdGhlIGZyZWUgbGlzdCAqLworICBlbnRyeS0+bmV4dCA9IHRhYmxlLT5mcmVlX2xpc3Q7CisgIHRhYmxlLT5mcmVlX2xpc3QgPSBlbnRyeTsKKyAgdGFibGUtPmZyZWVfY291bnQrKzsKKworICAvKiBJZiBhbGwgdHJhbXBvbGluZXMgd2l0aGluIHRoaXMgdGFibGUgYXJlIGZyZWUsIGFuZCBhdCBsZWFzdCBvbmUgb3RoZXIgdGFibGUgZXhpc3RzLCBkZWFsbG9jYXRlCisgICAqIHRoZSB0YWJsZSAqLworICBpZiAodGFibGUtPmZyZWVfY291bnQgPT0gRkZJX1RSQU1QT0xJTkVfQ09VTlQgJiYgZmZpX3RyYW1wb2xpbmVfdGFibGVzICE9IHRhYmxlKSB7CisgICAgLyogUmVtb3ZlIGZyb20gdGhlIGxpc3QgKi8KKyAgICBpZiAodGFibGUtPnByZXYgIT0gTlVMTCkKKyAgICAgIHRhYmxlLT5wcmV2LT5uZXh0ID0gdGFibGUtPm5leHQ7CisKKyAgICBpZiAodGFibGUtPm5leHQgIT0gTlVMTCkKKyAgICAgIHRhYmxlLT5uZXh0LT5wcmV2ID0gdGFibGUtPnByZXY7CisKKyAgICAvKiBEZWFsbG9jYXRlIHBhZ2VzICovCisgICAga2Vybl9yZXR1cm5fdCBrdDsKKyAgICBrdCA9IHZtX2RlYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCB0YWJsZS0+Y29uZmlnX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fZGVhbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgIGt0ID0gdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIHRhYmxlLT50cmFtcG9saW5lX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykKKyAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fZGVhbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKworICAgIC8qIERlYWxsb2NhdGUgZnJlZSBsaXN0ICovCisgICAgZnJlZSAodGFibGUtPmZyZWVfbGlzdF9wb29sKTsKKyAgICBmcmVlICh0YWJsZSk7CisgIH0gZWxzZSBpZiAoZmZpX3RyYW1wb2xpbmVfdGFibGVzICE9IHRhYmxlKSB7CisgICAgLyogT3RoZXJ3aXNlLCBidW1wIHRoaXMgdGFibGUgdG8gdGhlIHRvcCBvZiB0aGUgbGlzdCAqLworICAgIHRhYmxlLT5wcmV2ID0gTlVMTDsKKyAgICB0YWJsZS0+bmV4dCA9IGZmaV90cmFtcG9saW5lX3RhYmxlczsKKyAgICBpZiAoZmZpX3RyYW1wb2xpbmVfdGFibGVzICE9IE5VTEwpCisgICAgICBmZmlfdHJhbXBvbGluZV90YWJsZXMtPnByZXYgPSB0YWJsZTsKKworICAgIGZmaV90cmFtcG9saW5lX3RhYmxlcyA9IHRhYmxlOworICB9CisKKyAgcHRocmVhZF9tdXRleF91bmxvY2sgKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBGcmVlIHRoZSBjbG9zdXJlICovCisgIGZyZWUgKGNsb3N1cmUpOworfQorCisjZWxzZQorCiAjZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkUoVFJBTVAsRlVOLENUWCkJCQkJXAogKHsgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoVFJBTVApOwkJCVwKICAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KShGVU4pOwkJCQlcCiAgICB1bnNpZ25lZCBpbnQgIF9fY3R4ID0gKHVuc2lnbmVkIGludCkoQ1RYKTsJCQkJXAotICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFswXSA9IDB4ZTkyZDAwMGY7IC8qIHN0bWZkIHNwISwge3IwLXIzfSAqLwlcCi0gICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzRdID0gMHhlNTlmMDAwMDsgLyogbGRyIHIwLCBbcGNdICovCVwKLSAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbOF0gPSAweGU1OWZmMDAwOyAvKiBsZHIgcGMsIFtwY10gKi8JXAorICAgdW5zaWduZWQgY2hhciAqaW5zbnMgPSAodW5zaWduZWQgY2hhciAqKShDVFgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgbWVtY3B5IChfX3RyYW1wLCBmZmlfYXJtX3RyYW1wb2xpbmUsIHNpemVvZiBmZmlfYXJtX3RyYW1wb2xpbmUpOyAgICAgXAogICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFsxMl0gPSBfX2N0eDsJCQkJXAogICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFsxNl0gPSBfX2Z1bjsJCQkJXAotICAgX19jbGVhcl9jYWNoZSgoJl9fdHJhbXBbMF0pLCAoJl9fdHJhbXBbMTldKSk7CQkJXAorICAgX19jbGVhcl9jYWNoZSgoJl9fdHJhbXBbMF0pLCAoJl9fdHJhbXBbMTldKSk7IC8qIENsZWFyIGRhdGEgbWFwcGluZy4gICovIFwKKyAgIF9fY2xlYXJfY2FjaGUoaW5zbnMsIGluc25zICsgMyAqIHNpemVvZiAodW5zaWduZWQgaW50KSk7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDbGVhciBpbnN0cnVjdGlvbiAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLiAgKi8gICAgICAgIFwKICB9KQogCisjZW5kaWYKIAogLyogdGhlIGNpZiBtdXN0IGFscmVhZHkgYmUgcHJlcCdlZCAqLwogCkBAIC0yOTUsMTUgKzYwNywxNTAgQEAKIAkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAogCQkgICAgICB2b2lkICpjb2RlbG9jKQogewotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfU1lTVik7CisgIHZvaWQgKCpjbG9zdXJlX2Z1bmMpKGZmaV9jbG9zdXJlKikgPSBOVUxMOwogCi0gIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgXAotCQkgICAgICAgJmZmaV9jbG9zdXJlX1NZU1YsICBcCi0JCSAgICAgICBjb2RlbG9jKTsKKyAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWKQorICAgIGNsb3N1cmVfZnVuYyA9ICZmZmlfY2xvc3VyZV9TWVNWOworI2lmZGVmIF9fQVJNX0VBQklfXworICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQKQorICAgIGNsb3N1cmVfZnVuYyA9ICZmZmlfY2xvc3VyZV9WRlA7CisjZW5kaWYKKyAgZWxzZQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgICAKKyNpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisgIHZvaWQgKipjb25maWcgPSBGRklfVFJBTVBPTElORV9DT0RFTE9DX0NPTkZJRyhjb2RlbG9jKTsKKyAgY29uZmlnWzBdID0gY2xvc3VyZTsKKyAgY29uZmlnWzFdID0gY2xvc3VyZV9mdW5jOworI2Vsc2UKKyAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLCBcCisJCSAgICAgICBjbG9zdXJlX2Z1bmMsICBcCisJCSAgICAgICBjb2RlbG9jKTsKKyNlbmRpZgorCiAgIGNsb3N1cmUtPmNpZiAgPSBjaWY7CiAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKICAgY2xvc3VyZS0+ZnVuICA9IGZ1bjsKIAogICByZXR1cm4gRkZJX09LOwogfQorCisvKiBCZWxvdyBhcmUgcm91dGluZXMgZm9yIFZGUCBoYXJkLWZsb2F0IHN1cHBvcnQuICovCisKK3N0YXRpYyBpbnQgcmVjX3ZmcF90eXBlX3AgKGZmaV90eXBlICp0LCBpbnQgKmVsdCwgaW50ICplbG51bSkKK3sKKyAgc3dpdGNoICh0LT50eXBlKQorICAgIHsKKyAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorICAgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorICAgICAgKmVsdCA9IChpbnQpIHQtPnR5cGU7CisgICAgICAqZWxudW0gPSAxOworICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQ6CisgICAgICAqZWx0ID0gRkZJX1RZUEVfRkxPQVQ7CisgICAgICAqZWxudW0gPSB0LT5zaXplIC8gc2l6ZW9mIChmbG9hdCk7CisgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEU6CisgICAgICAqZWx0ID0gRkZJX1RZUEVfRE9VQkxFOworICAgICAgKmVsbnVtID0gdC0+c2l6ZSAvIHNpemVvZiAoZG91YmxlKTsKKyAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6OworICAgICAgeworCWludCBiYXNlX2VsdCA9IDAsIHRvdGFsX2VsbnVtID0gMDsKKwlmZmlfdHlwZSAqKmVsID0gdC0+ZWxlbWVudHM7CisJd2hpbGUgKCplbCkKKwkgIHsKKwkgICAgaW50IGVsX2VsdCA9IDAsIGVsX2VsbnVtID0gMDsKKwkgICAgaWYgKCEgcmVjX3ZmcF90eXBlX3AgKCplbCwgJmVsX2VsdCwgJmVsX2VsbnVtKQorCQl8fCAoYmFzZV9lbHQgJiYgYmFzZV9lbHQgIT0gZWxfZWx0KQorCQl8fCB0b3RhbF9lbG51bSArIGVsX2VsbnVtID4gNCkKKwkgICAgICByZXR1cm4gMDsKKwkgICAgYmFzZV9lbHQgPSBlbF9lbHQ7CisJICAgIHRvdGFsX2VsbnVtICs9IGVsX2VsbnVtOworCSAgICBlbCsrOworCSAgfQorCSplbG51bSA9IHRvdGFsX2VsbnVtOworCSplbHQgPSBiYXNlX2VsdDsKKwlyZXR1cm4gMTsKKyAgICAgIH0KKyAgICBkZWZhdWx0OiA7CisgICAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2ZnBfdHlwZV9wIChmZmlfdHlwZSAqdCkKK3sKKyAgaW50IGVsdCwgZWxudW07CisgIGlmIChyZWNfdmZwX3R5cGVfcCAodCwgJmVsdCwgJmVsbnVtKSkKKyAgICB7CisgICAgICBpZiAodC0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJeworCSAgaWYgKGVsbnVtID09IDEpCisJICAgIHQtPnR5cGUgPSBlbHQ7CisJICBlbHNlCisJICAgIHQtPnR5cGUgPSAoZWx0ID09IEZGSV9UWVBFX0ZMT0FUCisJCSAgICAgICA/IEZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwkJICAgICAgIDogRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUpOworCX0KKyAgICAgIHJldHVybiAoaW50KSB0LT50eXBlOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBsYWNlX3ZmcF9hcmcgKGZmaV9jaWYgKmNpZiwgZmZpX3R5cGUgKnQpCit7CisgIGludCByZWcgPSBjaWYtPnZmcF9yZWdfZnJlZTsKKyAgaW50IG5yZWdzID0gdC0+c2l6ZSAvIHNpemVvZiAoZmxvYXQpOworICBpbnQgYWxpZ24gPSAoKHQtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCQl8fCB0LT50eXBlID09IEZGSV9UWVBFX0ZMT0FUKSA/IDEgOiAyKTsKKyAgLyogQWxpZ24gcmVnaXN0ZXIgbnVtYmVyLiAqLworICBpZiAoKHJlZyAmIDEpICYmIGFsaWduID09IDIpCisgICAgcmVnKys7CisgIHdoaWxlIChyZWcgKyBucmVncyA8PSAxNikKKyAgICB7CisgICAgICBpbnQgcywgbmV3X3VzZWQgPSAwOworICAgICAgZm9yIChzID0gcmVnOyBzIDwgcmVnICsgbnJlZ3M7IHMrKykKKwl7CisJICBuZXdfdXNlZCB8PSAoMSA8PCBzKTsKKwkgIGlmIChjaWYtPnZmcF91c2VkICYgKDEgPDwgcykpCisJICAgIHsKKwkgICAgICByZWcgKz0gYWxpZ247CisJICAgICAgZ290byBuZXh0X3JlZzsKKwkgICAgfQorCX0KKyAgICAgIC8qIEZvdW5kIHJlZ3MgdG8gYWxsb2NhdGUuICovCisgICAgICBjaWYtPnZmcF91c2VkIHw9IG5ld191c2VkOworICAgICAgY2lmLT52ZnBfYXJnc1tjaWYtPnZmcF9uYXJncysrXSA9IHJlZzsKKworICAgICAgLyogVXBkYXRlIHZmcF9yZWdfZnJlZS4gKi8KKyAgICAgIGlmIChjaWYtPnZmcF91c2VkICYgKDEgPDwgY2lmLT52ZnBfcmVnX2ZyZWUpKQorCXsKKwkgIHJlZyArPSBucmVnczsKKwkgIHdoaWxlIChjaWYtPnZmcF91c2VkICYgKDEgPDwgcmVnKSkKKwkgICAgcmVnICs9IDE7CisJICBjaWYtPnZmcF9yZWdfZnJlZSA9IHJlZzsKKwl9CisgICAgICByZXR1cm47CisgICAgbmV4dF9yZWc6IDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGxheW91dF92ZnBfYXJncyAoZmZpX2NpZiAqY2lmKQoreworICBpbnQgaTsKKyAgLyogSW5pdCBWRlAgZmllbGRzICovCisgIGNpZi0+dmZwX3VzZWQgPSAwOworICBjaWYtPnZmcF9uYXJncyA9IDA7CisgIGNpZi0+dmZwX3JlZ19mcmVlID0gMDsKKyAgbWVtc2V0IChjaWYtPnZmcF9hcmdzLCAtMSwgMTYpOyAvKiBJbml0IHRvIC0xLiAqLworCisgIGZvciAoaSA9IDA7IGkgPCBjaWYtPm5hcmdzOyBpKyspCisgICAgeworICAgICAgZmZpX3R5cGUgKnQgPSBjaWYtPmFyZ190eXBlc1tpXTsKKyAgICAgIGlmICh2ZnBfdHlwZV9wICh0KSkKKwlwbGFjZV92ZnBfYXJnIChjaWYsIHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaAppbmRleCBhOTU3NDI2Li4yNmQ0OTRkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMCAgQ29kZVNvdXJjZXJ5CisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisKICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQVJNLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzMwLDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsMTEgKzQxLDI3IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKKyAgRkZJX1ZGUCwKKyAgRkZJX0xBU1RfQUJJLAorI2lmZGVmIF9fQVJNX1BDU19WRlAKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1ZGUCwKKyNlbHNlCiAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisjZW5kaWYKIH0gZmZpX2FiaTsKICNlbmRpZgogCisjZGVmaW5lIEZGSV9FWFRSQV9DSUZfRklFTERTCQkJXAorICBpbnQgdmZwX3VzZWQ7CQkJCQlcCisgIHNob3J0IHZmcF9yZWdfZnJlZSwgdmZwX25hcmdzOwkJXAorICBzaWduZWQgY2hhciB2ZnBfYXJnc1sxNl0JCQlcCisKKy8qIEludGVybmFsbHkgdXNlZC4gKi8KKyNkZWZpbmUgRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVCAgKEZGSV9UWVBFX0xBU1QgKyAxKQorI2RlZmluZSBGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRSAoRkZJX1RZUEVfTEFTVCArIDIpCisKKyNkZWZpbmUgRkZJX1RBUkdFVF9TUEVDSUZJQ19WQVJJQURJQworCiAvKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjZGVmaW5lIEZGSV9DTE9TVVJFUyAxCkBAIC00Niw0ICs2OSwzIEBACiAjZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCiAKICNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZ2VudHJhbXAuc2ggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZ2VudHJhbXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmMGI4NgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9nZW50cmFtcC5zaApAQCAtMCwwICsxLDExOCBAQAorIyEvYmluL3NoCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgIGdlbnRyYW1wLnNoIC0gQ29weXJpZ2h0IChjKSAyMDEwLCBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorIyAgCisjICBBUk0gVHJhbXBvbGluZSBQYWdlIEdlbmVyYXRvcgorIworIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisjICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyMgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisjICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisjICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisjICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyMgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorIyAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisjICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisjICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQUk9HTkFNRT0kMAorCisjIEVhY2ggdHJhbXBvbGluZSBpcyBleGFjdGx5IDMgaW5zdHJ1Y3Rpb25zLCBvciAxMiBieXRlcy4gSWYgYW55IG9mIHRoZXNlIHZhbHVlcyBjaGFuZ2UsCisjIHRoZSBlbnRpcmUgYXJtIHRyYW1wb2xpbmUgaW1wbGVtZW50YXRpb24gbXVzdCBiZSB1cGRhdGVkIHRvIG1hdGNoLCB0b28uCisKKyMgU2l6ZSBvZiBhbiBpbmRpdmlkdWFsIHRyYW1wb2xpbmUsIGluIGJ5dGVzCitUUkFNUE9MSU5FX1NJWkU9MTIKKworIyBQYWdlIHNpemUsIGluIGJ5dGVzCitQQUdFX1NJWkU9NDA5NgorCisjIENvbXB1dGUgdGhlIHNpemUgb2YgdGhlIHJlYWNoYWJsZSBjb25maWcgcGFnZTsgVGhlIGZpcnN0IDE2IGJ5dGVzIG9mIHRoZSBjb25maWcgcGFnZQorIyBhcmUgdW5yZWFjaGFibGUgZHVlIHRvIG91ciBtYXhpbXVtIHBjLXJlbGF0aXZlIGxkciBvZmZzZXQuCitQQUdFX0FWQUlMPWBleHByICRQQUdFX1NJWkUgLSAxNmAKKworIyBDb21wdXRlIHRoZSBudW1iZXIgb2Ygb2YgYXZhaWxhYmxlIHRyYW1wb2xpbmVzLiAKK1RSQU1QT0xJTkVfQ09VTlQ9YGV4cHIgJFBBR0VfQVZBSUwgLyAkVFJBTVBPTElORV9TSVpFYAorCitoZWFkZXIgKCkgeworICAgIGVjaG8gIiMgR0VORVJBVEVEIENPREUgLSBETyBOT1QgRURJVCIKKyAgICBlY2hvICIjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5ICRQUk9HTkFNRSIKKyAgICBlY2hvICIiCisKKyAgICAjIFdyaXRlIG91dCB0aGUgbGljZW5zZSBoZWFkZXIKK2NhdCA8PCBFT0YKKyMgIENvcHlyaWdodCAoYykgMjAxMCwgUGxhdXNpYmxlIExhYnMgQ29vcGVyYXRpdmUsIEluYy4KKyMgIAorIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCisjICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyMgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisjICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisjICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisjICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyMgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorIyAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisjICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisjICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFT0YKKworICAgICMgV3JpdGUgb3V0IHRoZSB0cmFtcG9saW5lIHRhYmxlLCBhbGlnbmVkIHRvIHRoZSBwYWdlIGJvdW5kYXJ5CisgICAgZWNobyAiLnRleHQiCisgICAgZWNobyAiLmFsaWduIDEyIgorICAgIGVjaG8gIi5nbG9ibCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlIgorICAgIGVjaG8gIl9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2U6IgorfQorCisKKyMgV0FSTklORyAtIERvbid0IG1vZGlmeSB0aGUgdHJhbXBvbGluZSBjb2RlIHNpemUgd2l0aG91dCBhbHNvIHVwZGF0aW5nIHRoZSByZWxldmVudCBsaWJmZmkgY29kZQordHJhbXBvbGluZSAoKSB7CisgICAgY2F0IDw8IEVORAorCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKK0VORAorfQorCittYWluICgpIHsKKyAgICAjIFdyaXRlIG91dCB0aGUgaGVhZGVyCisgICAgaGVhZGVyCisKKyAgICAjIFdyaXRlIG91dCB0aGUgdHJhbXBvbGluZXMKKyAgICBsb2NhbCBpPTAKKyAgICB3aGlsZSBbICRpIC1sdCAke1RSQU1QT0xJTkVfQ09VTlR9IF07IGRvCisgICAgICAgIHRyYW1wb2xpbmUKKyAgICAgICAgbG9jYWwgaT1gZXhwciAkaSArIDFgCisgICAgZG9uZQorfQorCittYWluCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUwppbmRleCA5MDY0MzE4Li5mYjM4Y2Q2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4IFJlZCBIYXQsIEluYy4KKyAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCwgMjAxMSBSZWQgSGF0LCBJbmMuCisJICAgIENvcHlyaWdodCAoYykgMjAxMSBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgogICAgCiAgICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTM5LDcgKzQwLDExIEBACiAjZWxzZQogI2RlZmluZSBDTkFNRSh4KSB4CiAjZW5kaWYKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgRU5UUlkoeCkgLmdsb2JsIF8jI3g7IF8jI3g6CisjZWxzZQogI2RlZmluZSBFTlRSWSh4KSAuZ2xvYmwgQ05BTUUoeCk7IC50eXBlIENOQU1FKHgpLCVmdW5jdGlvbjsgQ05BTUUoeCk6CisjZW5kaWYgLyogX19BUFBMRV9fICovCiAjZW5kaWYKIAogI2lmZGVmIF9fRUxGX18KQEAgLTQ4LDYgKzUzLDEyIEBACiAjZGVmaW5lIExTWU0oeCkgeAogI2VuZGlmCiAKKy8qIFVzZSB0aGUgU09GVEZQIHJldHVybiB2YWx1ZSBBQkkgb24gTWFjIE9TIFgsIGFzIHBlciB0aGUgaU9TIEFCSQorICBGdW5jdGlvbiBDYWxsIEd1aWRlICovCisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIF9fU09GVEZQX18KKyNlbmRpZgorCiAvKiBXZSBuZWVkIGEgYmV0dGVyIHdheSBvZiB0ZXN0aW5nIGZvciB0aGlzLCBidXQgZm9yIG5vdywgdGhpcyBpcyBhbGwgCiAgICB3ZSBjYW4gZG8uICAqLwogQCBUaGlzIHNlbGVjdHMgdGhlIG1pbmltdW0gYXJjaGl0ZWN0dXJlIGxldmVsIHJlcXVpcmVkLgpAQCAtMTA1LDIxICsxMTYsMzMgQEAKIAkuYWxpZ24gMAogCS50aHVtYgogCS50aHVtYl9mdW5jCisjaWZkZWYgX19BUFBMRV9fCisJRU5UUlkoJDApCisjZWxzZQogCUVOVFJZKFxuYW1lKQorI2VuZGlmCiAJYngJcGMKIAlub3AKIAkuYXJtCiAJVU5XSU5EIC5mbnN0YXJ0CiAvKiBBIGhvb2sgdG8gdGVsbCBnZGIgdGhhdCB3ZSd2ZSBzd2l0Y2hlZCB0byBBUk0gbW9kZS4gIEFsc28gdXNlZCB0byBjYWxsCiAgICBkaXJlY3RseSBmcm9tIG90aGVyIGxvY2FsIGFybSByb3V0aW5lcy4gICovCi1fTF9fXG5hbWU6CQkKKyNpZmRlZiBfX0FQUExFX18KK19MX18kMDoKKyNlbHNlCitfTF9fXG5hbWU6CisjZW5kaWYKIC5lbmRtCiAjZWxzZQogLm1hY3JvCUFSTV9GVU5DX1NUQVJUIG5hbWUKIAkudGV4dAogCS5hbGlnbiAwCiAJLmFybQorI2lmZGVmIF9fQVBQTEVfXworCUVOVFJZKCQwKQorI2Vsc2UKIAlFTlRSWShcbmFtZSkKKyNlbmRpZgogCVVOV0lORCAuZm5zdGFydAogLmVuZG0KICNlbmRpZgpAQCAtMTQxLDEzICsxNjQsMTEgQEAKICNlbmRpZgogLmVuZG0KIAotCiAJQCByMDogICBmZmlfcHJlcF9hcmdzCiAJQCByMTogICAmZWNpZgogCUAgcjI6ICAgY2lmLT5ieXRlcwogCUAgcjM6ICAgZmlnLT5mbGFncwogCUAgc3ArMDogZWNpZi5ydmFsdWUKLQlAIHNwKzQ6IGZuCiAKIAlAIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogQVJNX0ZVTkNfU1RBUlQgZmZpX2NhbGxfU1lTVgpAQCAtMTYyLDI0ICsxODMsMjMgQEAKIAlzdWIJc3AsIGZwLCByMgogCiAJQCBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24KLQltb3YJaXAsIHIwCiAJbW92CXIwLCBzcAogCUAgICAgIHIxIGFscmVhZHkgc2V0CiAKIAlAIENhbGwgZmZpX3ByZXBfYXJncyhzdGFjaywgJmVjaWYpCi0JY2FsbF9yZWcoaXApCisJYmwJQ05BTUUoZmZpX3ByZXBfYXJncykKIAogCUAgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCiAJbGRtaWEJc3AsIHtyMC1yM30KIAogCUAgYW5kIGFkanVzdCBzdGFjawotCWxkcglpcCwgW2ZwLCAjOF0KLSAgICAgICAgY21wCWlwLCAjMTYKLQltb3ZocwlpcCwgIzE2Ci0gICAgICAgIGFkZAlzcCwgc3AsIGlwCisJc3ViCWxyLCBmcCwgc3AJQCBjaWYtPmJ5dGVzID09IGZwIC0gc3AKKwlsZHIJaXAsIFtmcF0JQCBsb2FkIGZuKCkgaW4gYWR2YW5jZQorCWNtcAlsciwgIzE2CisJbW92aHMJbHIsICMxNgorCWFkZAlzcCwgc3AsIGxyCiAKIAlAIGNhbGwgKGZuKSAoLi4uKQotCWxkcglpcCwgW2ZwLCAjMjhdCiAJY2FsbF9yZWcoaXApCiAJCiAJQCBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFyZ3MKQEAgLTIyNCwxMSArMjQ0LDE5IEBACiAjZW5kaWYKIAogTFNZTShMZXBpbG9ndWUpOgotCVJFVExETQkicjAtcjMsZnAiCisjaWYgZGVmaW5lZCAoX19JTlRFUldPUktJTkdfXykKKwlsZG1pYSAgIHNwISwge3IwLXIzLGZwLCBscn0KKwlieAlscgorI2Vsc2UKKwlsZG1pYSAgIHNwISwge3IwLXIzLGZwLCBwY30KKyNlbmRpZgogCiAuZmZpX2NhbGxfU1lTVl9lbmQ6CiAJVU5XSU5EIC5mbmVuZAorI2lmZGVmIF9fRUxGX18KICAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2NhbGxfU1lTViksLmZmaV9jYWxsX1NZU1ZfZW5kLUNOQU1FKGZmaV9jYWxsX1NZU1YpCisjZW5kaWYKKwogCiAvKgogCXVuc2lnbmVkIGludCBGRklfSElEREVOCkBAIC0yNDQsMTEgKzI3MiwxMSBAQAogCXN0bWZkCXNwISwge2lwLCBscn0KIAlVTldJTkQgLnNhdmUJe3IwLCBscn0KIAlhZGQJcjIsIHNwLCAjOAotCS5wYWQgIzE2CisJVU5XSU5EIC5wYWQgIzE2CiAJc3ViCXNwLCBzcCwgIzE2CiAJc3RyCXNwLCBbc3AsICM4XQogCWFkZAlyMSwgc3AsICM4Ci0JYmwJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgorCWJsCUNOQU1FKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCiAJY21wCXIwLCAjRkZJX1RZUEVfSU5UCiAJYmVxCS5McmV0aW50CiAKQEAgLTMwMCw3ICszMjgsMTc3IEBACiAKIC5mZmlfY2xvc3VyZV9TWVNWX2VuZDoKIAlVTldJTkQgLmZuZW5kCisjaWZkZWYgX19FTEZfXwogICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2xvc3VyZV9TWVNWKSwuZmZpX2Nsb3N1cmVfU1lTVl9lbmQtQ05BTUUoZmZpX2Nsb3N1cmVfU1lTVikKKyNlbmRpZgorCisKKy8qIEJlbG93IGFyZSBWRlAgaGFyZC1mbG9hdCBBQkkgY2FsbCBhbmQgY2xvc3VyZSBpbXBsZW1lbnRhdGlvbnMuCisgICBBZGQgVkZQIEZQVSBkaXJlY3RpdmUgaGVyZS4gVGhpcyBpcyBvbmx5IGNvbXBpbGVkIGludG8gdGhlIGxpYnJhcnkKKyAgIHVuZGVyIEVBQkkuICAqLworI2lmZGVmIF9fQVJNX0VBQklfXworCS5mcHUJdmZwCisKKwlAIHIwOiAgIGZuCisJQCByMTogICAmZWNpZgorCUAgcjI6ICAgY2lmLT5ieXRlcworCUAgcjM6ICAgZmlnLT5mbGFncworCUAgc3ArMDogZWNpZi5ydmFsdWUKKworQVJNX0ZVTkNfU1RBUlQgZmZpX2NhbGxfVkZQCisJQCBTYXZlIHJlZ2lzdGVycworICAgICAgICBzdG1mZAlzcCEsIHtyMC1yMywgZnAsIGxyfQorCVVOV0lORCAuc2F2ZQl7cjAtcjMsIGZwLCBscn0KKwltb3YJZnAsIHNwCisJVU5XSU5EIC5zZXRmcAlmcCwgc3AKKworCUAgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgorCXN1YglzcCwgc3AsIHIyCisKKwlAIE1ha2Ugcm9vbSBmb3IgbG9hZGluZyBWRlAgYXJncworCXN1YglzcCwgc3AsICM2NAorCisJQCBQbGFjZSBhbGwgb2YgdGhlIGZmaV9wcmVwX2FyZ3MgaW4gcG9zaXRpb24KKwltb3YJcjAsIHNwCisJQCAgICAgcjEgYWxyZWFkeSBzZXQKKwlzdWIJcjIsIGZwLCAjNjQgICBAIFZGUCBzY3JhdGNoIHNwYWNlCisKKwlAIENhbGwgZmZpX3ByZXBfYXJncyhzdGFjaywgJmVjaWYsIHZmcF9zcGFjZSkKKwlibAlDTkFNRShmZmlfcHJlcF9hcmdzKQorCisJQCBMb2FkIFZGUCByZWdpc3RlciBhcmdzIGlmIG5lZWRlZAorCWNtcAlyMCwgIzAKKwliZXEJTFNZTShMYmFzZV9hcmdzKQorCisJQCBMb2FkIG9ubHkgZDAgaWYgcG9zc2libGUKKwljbXAJcjAsICMzCisJc3ViCWlwLCBmcCwgIzY0CisJZmxkZGxlCWQwLCBbaXBdCisJZmxkbWlhZGd0CWlwLCB7ZDAtZDd9CisKK0xTWU0oTGJhc2VfYXJncyk6CisJQCBtb3ZlIGZpcnN0IDQgcGFyYW1ldGVycyBpbiByZWdpc3RlcnMKKwlsZG1pYQlzcCwge3IwLXIzfQorCisJQCBhbmQgYWRqdXN0IHN0YWNrCisJc3ViCWxyLCBpcCwgc3AJQCBjaWYtPmJ5dGVzID09IChmcCAtIDY0KSAtIHNwCisJbGRyCWlwLCBbZnBdCUAgbG9hZCBmbigpIGluIGFkdmFuY2UKKyAgICAgICAgY21wCWxyLCAjMTYKKwltb3ZocwlsciwgIzE2CisgICAgICAgIGFkZAlzcCwgc3AsIGxyCisKKwlAIGNhbGwgKGZuKSAoLi4uKQorCWNhbGxfcmVnKGlwKQorCisJQCBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFyZ3MKKwltb3YJc3AsIGZwCisKKwlAIExvYWQgcjIgd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvcgorCUAgdGhlIHJldHVybiB2YWx1ZQorCWxkcglyMiwgW3NwLCAjMjRdCisKKwlAIExvYWQgcjMgd2l0aCB0aGUgcmV0dXJuIHR5cGUgY29kZSAKKwlsZHIJcjMsIFtzcCwgIzEyXQorCisJQCBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwKKwlAIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCisJY21wCXIyLCAjMAorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9JTlQKKwlzdHJlcQlyMCwgW3IyXQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9TSU5UNjQKKwlzdG1lcWlhCXIyLCB7cjAsIHIxfQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisKKwljbXAJcjMsICNGRklfVFlQRV9GTE9BVAorCWZzdHNlcQlzMCwgW3IyXQorCWJlcQlMU1lNKExlcGlsb2d1ZV92ZnApCisJCisJY21wCXIzLCAjRkZJX1RZUEVfRE9VQkxFCisJZnN0ZGVxCWQwLCBbcjJdCisJYmVxCUxTWU0oTGVwaWxvZ3VlX3ZmcCkKKworCWNtcAlyMywgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwljbXBuZQlyMywgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFCisJZnN0bWlhZGVxCXIyLCB7ZDAtZDN9CisKK0xTWU0oTGVwaWxvZ3VlX3ZmcCk6CisJUkVUTERNCSJyMC1yMyxmcCIKKworLmZmaV9jYWxsX1ZGUF9lbmQ6CisJVU5XSU5EIC5mbmVuZAorICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2FsbF9WRlApLC5mZmlfY2FsbF9WRlBfZW5kLUNOQU1FKGZmaV9jYWxsX1ZGUCkKKworCitBUk1fRlVOQ19TVEFSVCBmZmlfY2xvc3VyZV9WRlAKKwlmc3RtZmRkCXNwISwge2QwLWQ3fQorCUAgcjAtcjMsIHRoZW4gZDAtZDcKKwlVTldJTkQgLnBhZCAjODAKKwlhZGQJaXAsIHNwLCAjODAKKwlzdG1mZAlzcCEsIHtpcCwgbHJ9CisJVU5XSU5EIC5zYXZlCXtyMCwgbHJ9CisJYWRkCXIyLCBzcCwgIzcyCisJYWRkCXIzLCBzcCwgIzgKKwlVTldJTkQgLnBhZCAjNzIKKwlzdWIJc3AsIHNwLCAjNzIKKwlzdHIJc3AsIFtzcCwgIzY0XQorCWFkZAlyMSwgc3AsICM2NAorCWJsCUNOQU1FKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpCisKKwljbXAJcjAsICNGRklfVFlQRV9JTlQKKwliZXEJLkxyZXRpbnRfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9GTE9BVAorCWJlcQkuTHJldGZsb2F0X3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfRE9VQkxFCisJY21wbmUJcjAsICNGRklfVFlQRV9MT05HRE9VQkxFCisJYmVxCS5McmV0ZG91YmxlX3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfU0lOVDY0CisJYmVxCS5McmV0bG9uZ2xvbmdfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJYmVxCS5McmV0ZmxvYXRfc3RydWN0X3ZmcAorCisJY21wCXIwLCAjRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUKKwliZXEJLkxyZXRkb3VibGVfc3RydWN0X3ZmcAorCQorLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcDoKKwlhZGQJc3AsIHNwLCAjNzIKKwlsZG1mZAlzcCwge3NwLCBwY30KKworLkxyZXRmbG9hdF92ZnA6CisJZmxkcwlzMCwgW3NwXQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRkb3VibGVfdmZwOgorCWZsZGQJZDAsIFtzcF0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0aW50X3ZmcDoKKwlsZHIJcjAsIFtzcF0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0bG9uZ2xvbmdfdmZwOgorCWxkbWlhCXNwLCB7cjAsIHIxfQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRmbG9hdF9zdHJ1Y3RfdmZwOgorCWZsZG1pYWQJc3AsIHtkMC1kMX0KKwliCS5MY2xvc3VyZV9lcGlsb2d1ZV92ZnAKKy5McmV0ZG91YmxlX3N0cnVjdF92ZnA6CisJZmxkbWlhZAlzcCwge2QwLWQzfQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorCisuZmZpX2Nsb3N1cmVfVkZQX2VuZDoKKwlVTldJTkQgLmZuZW5kCisgICAgICAgIC5zaXplICAgIENOQU1FKGZmaV9jbG9zdXJlX1ZGUCksLmZmaV9jbG9zdXJlX1ZGUF9lbmQtQ05BTUUoZmZpX2Nsb3N1cmVfVkZQKQorI2VuZGlmCisKK0VOVFJZKGZmaV9hcm1fdHJhbXBvbGluZSkKKwlzdG1mZCBzcCEsIHtyMC1yM30KKwlsZHIgcjAsIFtwY10KKwlsZHIgcGMsIFtwY10KIAogI2lmIGRlZmluZWQgX19FTEZfXyAmJiBkZWZpbmVkIF9fbGludXhfXwogCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIiwlcHJvZ2JpdHMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS90cmFtcG9saW5lLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNWU4ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TCkBAIC0wLDAgKzEsNDQ1MCBAQAorIyBHRU5FUkFURUQgQ09ERSAtIERPIE5PVCBFRElUCisjIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IHNyYy9hcm0vZ2VudHJhbXAuc2gKKworIyAgQ29weXJpZ2h0IChjKSAyMDEwLCBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorIyAgCisjICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyMgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorIyAgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworIyAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorIyAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisjICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyMgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyMKKyMgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCisjICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorIyAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisjICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIyAgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUCisjICBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyMgIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIyAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIyAgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLnRleHQKKy5hbGlnbiAxMgorLmdsb2JsIF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UKK19mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2U6CisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYwppbmRleCAzOWZiYTJiLi4zZDQzMzk3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA5ICBCcmFkbGV5IFNtaXRoIDxicmFkQGJyYWQtc21pdGguY28udWs+CiAKICAgIEFWUjMyIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAKQEAgLTM5NCw3ICszOTUsOCBAQAogICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLCB2b2lkKiwgdm9pZCoqLCB2b2lkKiksIHZvaWQgKnVzZXJfZGF0YSwKICAgICB2b2lkICpjb2RlbG9jKQogewotICAgIEZGSV9BU1NFUlQoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICAgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikKKyAgICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICAgIHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAgPSAodW5zaWduZWQgY2hhciopKCZjbG9zdXJlLT50cmFtcFswXSk7CiAgICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKCZmZmlfY2xvc3VyZV9TWVNWKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmgKaW5kZXggMWM3OTliMS4uZDBjNzU4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBVlIzMi4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMKaW5kZXggMGIxNTZlMC4uMWIzNzgyNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jbG9zdXJlcy5jCkBAIC0xLDYgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGNsb3N1cmVzLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDcgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgY2xvc3VyZXMuYyAtIENvcHlyaWdodCAoYykgMjAwNywgMjAwOSwgMjAxMCAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMSBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgogCiAgICBDb2RlIHRvIGFsbG9jYXRlIGFuZCBkZWFsbG9jYXRlIG1lbW9yeSBmb3IgY2xvc3VyZXMuCiAKQEAgLTMyLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxmZmkuaD4KICNpbmNsdWRlIDxmZmlfY29tbW9uLmg+CiAKLSNpZm5kZWYgRkZJX01NQVBfRVhFQ19XUklUCisjaWYgIUZGSV9NTUFQX0VYRUNfV1JJVCAmJiAhRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQogIyBpZiBfX2dudV9saW51eF9fCiAvKiBUaGlzIG1hY3JvIGluZGljYXRlcyBpdCBtYXkgYmUgZm9yYmlkZGVuIHRvIG1hcCBhbm9ueW1vdXMgbWVtb3J5CiAgICB3aXRoIGJvdGggd3JpdGUgYW5kIGV4ZWN1dGUgcGVybWlzc2lvbi4gIENvZGUgY29tcGlsZWQgd2hlbiB0aGlzCkBAIC00NCw3ICs0NSw3IEBACiAjICBkZWZpbmUgRkZJX01NQVBfRVhFQ19XUklUIDEKICMgIGRlZmluZSBIQVZFX01OVEVOVCAxCiAjIGVuZGlmCi0jIGlmIGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkKKyMgaWYgZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pCiAvKiBXaW5kb3dzIHN5c3RlbXMgbWF5IGhhdmUgRGF0YSBFeGVjdXRpb24gUHJvdGVjdGlvbiAoREVQKSBlbmFibGVkLCAKICAgIHdoaWNoIHJlcXVpcmVzIHRoZSB1c2Ugb2YgVmlydHVhbE1hbGxvYy9WaXJ0dWFsRnJlZSB0byBhbGxvYy9mcmVlCiAgICBleGVjdXRhYmxlIG1lbW9yeS4gKi8KQEAgLTYzLDcgKzY0LDExIEBACiAKICNpZiBGRklfQ0xPU1VSRVMKIAotIyBpZiBGRklfTU1BUF9FWEVDX1dSSVQKKyMgaWYgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRQorCisvLyBQZXItdGFyZ2V0IGltcGxlbWVudGF0aW9uOyBJdCdzIHVuY2xlYXIgd2hhdCBjYW4gcmVhc29uYWJsZSBiZSBzaGFyZWQgYmV0d2VlbiB0d28gT1MvYXJjaGl0ZWN0dXJlIGltcGxlbWVudGF0aW9ucy4KKworIyBlbGlmIEZGSV9NTUFQX0VYRUNfV1JJVCAvKiAhRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSAqLwogCiAjZGVmaW5lIFVTRV9MT0NLUyAxCiAjZGVmaW5lIFVTRV9ETF9QUkVGSVggMQpAQCAtMTQ2LDcgKzE1MSw3IEBACiAgICAgICBwID0gc3RyY2hyIChwICsgMSwgJyAnKTsKICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIGJyZWFrOwotICAgICAgaWYgKHN0cm5jbXAgKHAgKyAxLCAic2VsaW51eGZzICIsIDEwKSAhPSAwKQorICAgICAgaWYgKHN0cm5jbXAgKHAgKyAxLCAic2VsaW51eGZzICIsIDEwKSA9PSAwKQogICAgICAgICB7CiAgICAgICAgICAgZnJlZSAoYnVmKTsKICAgICAgICAgICBmY2xvc2UgKGYpOwpAQCAtMTY3LDcgKzE3Miw3IEBACiAKICNlbmRpZiAvKiAhRkZJX01NQVBfRVhFQ19TRUxJTlVYICovCiAKLSNlbGlmIGRlZmluZWQgKF9fQ1lHV0lOX18pCisjZWxpZiBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkKIAogI2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAKQEAgLTE5MywxMSArMTk4LDExIEBACiBzdGF0aWMgc2l6ZV90IGRsbWFsbG9jX3VzYWJsZV9zaXplKHZvaWQqKSBNQVlCRV9VTlVTRUQ7CiBzdGF0aWMgdm9pZCBkbG1hbGxvY19zdGF0cyh2b2lkKSBNQVlCRV9VTlVTRUQ7CiAKLSNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pCisjaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKQogLyogVXNlIHRoZXNlIGZvciBtbWFwIGFuZCBtdW5tYXAgd2l0aGluIGRsbWFsbG9jLmMuICAqLwogc3RhdGljIHZvaWQgKmRsbW1hcCh2b2lkICosIHNpemVfdCwgaW50LCBpbnQsIGludCwgb2ZmX3QpOwogc3RhdGljIGludCBkbG11bm1hcCh2b2lkICosIHNpemVfdCk7Ci0jZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSAqLworI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkgKi8KIAogI2RlZmluZSBtbWFwIGRsbW1hcAogI2RlZmluZSBtdW5tYXAgZGxtdW5tYXAKQEAgLTIwNyw3ICsyMTIsNyBAQAogI3VuZGVmIG1tYXAKICN1bmRlZiBtdW5tYXAKIAotI2lmICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykKKyNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpCiAKIC8qIEEgbXV0ZXggdXNlZCB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gKmV4ZWMqIHZhcmlhYmxlcyBpbiB0aGlzIGZpbGUuICAqLwogc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBvcGVuX3RlbXBfZXhlY19maWxlX211dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKQEAgLTI5NCw3ICsyOTksNyBAQAogICAgICAgc3RydWN0IG1udGVudCBtbnQ7CiAgICAgICBjaGFyIGJ1ZltNQVhQQVRITEVOICogM107CiAKLSAgICAgIGlmIChnZXRtbnRlbnRfciAobGFzdF9tbnRlbnQsICZtbnQsIGJ1Ziwgc2l6ZW9mIChidWYpKSkKKyAgICAgIGlmIChnZXRtbnRlbnRfciAobGFzdF9tbnRlbnQsICZtbnQsIGJ1Ziwgc2l6ZW9mIChidWYpKSA9PSBOVUxMKQogCXJldHVybiAtMTsKIAogICAgICAgaWYgKGhhc21udG9wdCAoJm1udCwgInJvIikKQEAgLTUyMiw3ICs1MjcsNyBAQAogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pICovCisjZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKSAqLwogCiAvKiBBbGxvY2F0ZSBhIGNodW5rIG9mIG1lbW9yeSB3aXRoIHRoZSBnaXZlbiBzaXplLiAgUmV0dXJucyBhIHBvaW50ZXIKICAgIHRvIHRoZSB3cml0YWJsZSBhZGRyZXNzLCBhbmQgc2V0cyAqQ09ERSB0byB0aGUgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMKaW5kZXggZTljMzk1My4uYWFjYTViMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaS5jCkBAIC0xNTMsMjEgKzE1MywyNCBAQAogICByZXR1cm4gKHN0cnVjdF9jb3VudCk7CiB9CiAKLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2NpZiAoZmZpX2NpZiAqIGNpZiwKLQkgICAgICBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLAotCSAgICAgIGZmaV90eXBlICogcnR5cGUsIGZmaV90eXBlICoqIGF0eXBlcykKK2ZmaV9zdGF0dXMgRkZJX0hJRERFTgorZmZpX3ByZXBfY2lmX2NvcmUgKGZmaV9jaWYgKiBjaWYsCisJICAgICAgICAgICBmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IGlzdmFyaWFkaWMsCisJCSAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLCB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkgICAgICAgICAgIGZmaV90eXBlICogcnR5cGUsIGZmaV90eXBlICoqIGF0eXBlcykKIHsKICAgdW5zaWduZWQgYnl0ZXMgPSAwOwogICB1bnNpZ25lZCBpbnQgaTsKICAgZmZpX3R5cGUgKipwdHI7CiAKICAgRkZJX0FTU0VSVCAoY2lmICE9IE5VTEwpOwotICBGRklfQVNTRVJUICgoYWJpID4gRkZJX0ZJUlNUX0FCSSkgJiYgKGFiaSA8PSBGRklfREVGQVVMVF9BQkkpKTsKKyAgRkZJX0FTU0VSVCgoIWlzdmFyaWFkaWMpIHx8IChuZml4ZWRhcmdzID49IDEpKTsKKyAgRkZJX0FTU0VSVChuZml4ZWRhcmdzIDw9IG50b3RhbGFyZ3MpOworICBGRklfQVNTRVJUIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSk7CiAKICAgY2lmLT5hYmkgPSBhYmk7CiAgIGNpZi0+YXJnX3R5cGVzID0gYXR5cGVzOwotICBjaWYtPm5hcmdzID0gbmFyZ3M7CisgIGNpZi0+bmFyZ3MgPSBudG90YWxhcmdzOwogICBjaWYtPnJ0eXBlID0gcnR5cGU7CiAKICAgY2lmLT5mbGFncyA9IDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaAppbmRleCA0MjU3ZjEwLi5iODM3ZTk3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgQ1JJUy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKaW5kZXggNTgyZGRjMy4uMjc3Mzk1MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCkBAIC00NjQsNiArNDY0LDE0IEBACiAjZGVmaW5lIF9HTlVfU09VUkNFIDEKICNlbmRpZiAgLyogV0lOMzIgKi8KIAorI2lmZGVmIF9fT1MyX18KKyNkZWZpbmUgSU5DTF9ET1MKKyNpbmNsdWRlIDxvczIuaD4KKyNkZWZpbmUgSEFWRV9NTUFQIDEKKyNkZWZpbmUgSEFWRV9NT1JFQ09SRSAwCisjZGVmaW5lIExBQ0tTX1NZU19NTUFOX0gKKyNlbmRpZiAgLyogX19PUzJfXyAqLworCiAjaWYgZGVmaW5lZChEQVJXSU4pIHx8IGRlZmluZWQoX0RBUldJTikKIC8qIE1hYyBPU1ggZG9jcyBhZHZpc2Ugbm90IHRvIHVzZSBzYnJrOyBpdCBzZWVtcyBiZXR0ZXIgdG8gdXNlIG1tYXAgKi8KICNpZm5kZWYgSEFWRV9NT1JFQ09SRQpAQCAtNjE5LDYgKzYyNyw5IEBACiAjaW5jbHVkZSAiL3Vzci9pbmNsdWRlL21hbGxvYy5oIgogI2Vsc2UgLyogSEFWRV9VU1JfSU5DTFVERV9NQUxMT0NfSCAqLwogCisvKiBIUC1VWCdzIHN0ZGxpYi5oIHJlZGVmaW5lcyBtYWxsaW5mbyB1bmxlc3MgX1NUUlVDVF9NQUxMSU5GTyBpcyBkZWZpbmVkICovCisjZGVmaW5lIF9TVFJVQ1RfTUFMTElORk8KKwogc3RydWN0IG1hbGxpbmZvIHsKICAgTUFMTElORk9fRklFTERfVFlQRSBhcmVuYTsgICAgLyogbm9uLW1tYXBwZWQgc3BhY2UgYWxsb2NhdGVkIGZyb20gc3lzdGVtICovCiAgIE1BTExJTkZPX0ZJRUxEX1RZUEUgb3JkYmxrczsgIC8qIG51bWJlciBvZiBmcmVlIGNodW5rcyAqLwpAQCAtMTI5Myw3ICsxMzA0LDcgQEAKICNkZWZpbmUgSVNfTU1BUFBFRF9CSVQgICAgICAgKFNJWkVfVF9PTkUpCiAjZGVmaW5lIFVTRV9NTUFQX0JJVCAgICAgICAgIChTSVpFX1RfT05FKQogCi0jaWZuZGVmIFdJTjMyCisjaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkIChfX09TMl9fKQogI2RlZmluZSBDQUxMX01VTk1BUChhLCBzKSAgICBtdW5tYXAoKGEpLCAocykpCiAjZGVmaW5lIE1NQVBfUFJPVCAgICAgICAgICAgIChQUk9UX1JFQUR8UFJPVF9XUklURSkKICNpZiAhZGVmaW5lZChNQVBfQU5PTllNT1VTKSAmJiBkZWZpbmVkKE1BUF9BTk9OKQpAQCAtMTMxNiw2ICsxMzI3LDQyIEBACiAjZW5kaWYgLyogTUFQX0FOT05ZTU9VUyAqLwogCiAjZGVmaW5lIERJUkVDVF9NTUFQKHMpICAgICAgIENBTExfTU1BUChzKQorCisjZWxpZiBkZWZpbmVkKF9fT1MyX18pCisKKy8qIE9TLzIgTU1BUCB2aWEgRG9zQWxsb2NNZW0gKi8KK3N0YXRpYyB2b2lkKiBvczJtbWFwKHNpemVfdCBzaXplKSB7CisgIHZvaWQqIHB0cjsKKyAgaWYgKERvc0FsbG9jTWVtKCZwdHIsIHNpemUsIE9CSl9BTll8UEFHX0NPTU1JVHxQQUdfUkVBRHxQQUdfV1JJVEUpICYmCisgICAgICBEb3NBbGxvY01lbSgmcHRyLCBzaXplLCBQQUdfQ09NTUlUfFBBR19SRUFEfFBBR19XUklURSkpCisgICAgcmV0dXJuIE1GQUlMOworICByZXR1cm4gcHRyOworfQorCisjZGVmaW5lIG9zMmRpcmVjdF9tbWFwKG4pICAgICBvczJtbWFwKG4pCisKKy8qIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgcmVsZWFzaW5nIGNvYWxlc2VkIHNlZ21lbnRzICovCitzdGF0aWMgaW50IG9zMm11bm1hcCh2b2lkKiBwdHIsIHNpemVfdCBzaXplKSB7CisgIHdoaWxlIChzaXplKSB7CisgICAgVUxPTkcgdWxTaXplID0gc2l6ZTsKKyAgICBVTE9ORyB1bEZsYWdzID0gMDsKKyAgICBpZiAoRG9zUXVlcnlNZW0ocHRyLCAmdWxTaXplLCAmdWxGbGFncykgIT0gMCkKKyAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoKHVsRmxhZ3MgJiBQQUdfQkFTRSkgPT0gMCB8fCh1bEZsYWdzICYgUEFHX0NPTU1JVCkgPT0gMCB8fAorICAgICAgICB1bFNpemUgPiBzaXplKQorICAgICAgcmV0dXJuIC0xOworICAgIGlmIChEb3NGcmVlTWVtKHB0cikgIT0gMCkKKyAgICAgIHJldHVybiAtMTsKKyAgICBwdHIgPSAoIHZvaWQgKiApICggKCBjaGFyICogKSBwdHIgKyB1bFNpemUgKTsKKyAgICBzaXplIC09IHVsU2l6ZTsKKyAgfQorICByZXR1cm4gMDsKK30KKworI2RlZmluZSBDQUxMX01NQVAocykgICAgICAgICBvczJtbWFwKHMpCisjZGVmaW5lIENBTExfTVVOTUFQKGEsIHMpICAgIG9zMm11bm1hcCgoYSksIChzKSkKKyNkZWZpbmUgRElSRUNUX01NQVAocykgICAgICAgb3MyZGlyZWN0X21tYXAocykKKwogI2Vsc2UgLyogV0lOMzIgKi8KIAogLyogV2luMzIgTU1BUCB2aWEgVmlydHVhbEFsbG9jICovCkBAIC0xMzkyLDcgKzE0MzksNyBAQAogICAgIHVuaXF1ZSBtcGFyYW1zIHZhbHVlcyBhcmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlLgogKi8KIAotI2lmbmRlZiBXSU4zMgorI2lmICFkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChfX09TMl9fKQogLyogQnkgZGVmYXVsdCB1c2UgcG9zaXggbG9ja3MgKi8KICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAjZGVmaW5lIE1MT0NLX1QgcHRocmVhZF9tdXRleF90CkBAIC0xNDA2LDYgKzE0NTMsMTYgQEAKIAogc3RhdGljIE1MT0NLX1QgbWFnaWNfaW5pdF9tdXRleCA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CiAKKyNlbGlmIGRlZmluZWQoX19PUzJfXykKKyNkZWZpbmUgTUxPQ0tfVCBITVRYCisjZGVmaW5lIElOSVRJQUxfTE9DSyhsKSAgICAgIERvc0NyZWF0ZU11dGV4U2VtKDAsIGwsIDAsIEZBTFNFKQorI2RlZmluZSBBQ1FVSVJFX0xPQ0sobCkgICAgICBEb3NSZXF1ZXN0TXV0ZXhTZW0oKmwsIFNFTV9JTkRFRklOSVRFX1dBSVQpCisjZGVmaW5lIFJFTEVBU0VfTE9DSyhsKSAgICAgIERvc1JlbGVhc2VNdXRleFNlbSgqbCkKKyNpZiBIQVZFX01PUkVDT1JFCitzdGF0aWMgTUxPQ0tfVCBtb3JlY29yZV9tdXRleDsKKyNlbmRpZiAvKiBIQVZFX01PUkVDT1JFICovCitzdGF0aWMgTUxPQ0tfVCBtYWdpY19pbml0X211dGV4OworCiAjZWxzZSAvKiBXSU4zMiAqLwogLyoKICAgIEJlY2F1c2UgbG9jay1wcm90ZWN0ZWQgcmVnaW9ucyBoYXZlIGJvdW5kZWQgdGltZXMsIGFuZCB0aGVyZQpAQCAtMjQ5NywxMCArMjU1NCwxNSBAQAogICAgIH0KICAgICBSRUxFQVNFX01BR0lDX0lOSVRfTE9DSygpOwogCi0jaWZuZGVmIFdJTjMyCisjaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fT1MyX18pCiAgICAgbXBhcmFtcy5wYWdlX3NpemUgPSBtYWxsb2NfZ2V0cGFnZXNpemU7CiAgICAgbXBhcmFtcy5ncmFudWxhcml0eSA9ICgoREVGQVVMVF9HUkFOVUxBUklUWSAhPSAwKT8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfR1JBTlVMQVJJVFkgOiBtcGFyYW1zLnBhZ2Vfc2l6ZSk7CisjZWxpZiBkZWZpbmVkIChfX09TMl9fKQorIC8qIGlmIGxvdy1tZW1vcnkgaXMgdXNlZCwgb3MybXVubWFwKCkgd291bGQgYnJlYWsKKyAgICBpZiBpdCB3ZXJlIGFueXRoaW5nIG90aGVyIHRoYW4gNjRrICovCisgICAgbXBhcmFtcy5wYWdlX3NpemUgPSA0MDk2dTsKKyAgICBtcGFyYW1zLmdyYW51bGFyaXR5ID0gNjU1MzZ1OwogI2Vsc2UgLyogV0lOMzIgKi8KICAgICB7CiAgICAgICBTWVNURU1fSU5GTyBzeXN0ZW1faW5mbzsKQEAgLTQxOTcsNyArNDI1OSw3IEBACiAKIHZvaWQgZGxmcmVlKHZvaWQqIG1lbSkgewogICAvKgotICAgICBDb25zb2xpZGF0ZSBmcmVlZCBjaHVua3Mgd2l0aCBwcmVjZWVkaW5nIG9yIHN1Y2NlZWRpbmcgYm9yZGVyaW5nCisgICAgIENvbnNvbGlkYXRlIGZyZWVkIGNodW5rcyB3aXRoIHByZWNlZGluZyBvciBzdWNjZWVkaW5nIGJvcmRlcmluZwogICAgICBmcmVlIGNodW5rcywgaWYgdGhleSBleGlzdCwgYW5kIHRoZW4gcGxhY2UgaW4gYSBiaW4uICBJbnRlcm1peGVkCiAgICAgIHdpdGggc3BlY2lhbCBjYXNlcyBmb3IgdG9wLCBkdiwgbW1hcHBlZCBjaHVua3MsIGFuZCB1c2FnZSBlcnJvcnMuCiAgICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmgKaW5kZXggMWMzMTllYS4uZDQyNTQwZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Zydi9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDA0ICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwNCAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBGUi1WCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzUsMTMgKzQwLDkgQEAKIAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKLQotI2lmZGVmIEZSVgogICBGRklfRUFCSSwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0VBQkksCi0jZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0VBQkkKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYwppbmRleCAzZjhmY2M1Li45NTMzZWY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpLmMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDcsIDIwMDggUmVkIEhhdCwgSW5jLgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDcsIDIwMDgsIDIwMTIgUmVkIEhhdCwgSW5jLgogCSAgIENvcHlyaWdodCAoYykgMjAwMCBIZXdsZXR0IFBhY2thcmQgQ29tcGFueQorCSAgIENvcHlyaWdodCAoYykgMjAxMSBBbnRob255IEdyZWVuCiAgICAKICAgIElBNjQgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTIyNSw3ICsyMjYsNyBAQAogICBpbnQgZmxhZ3M7CiAKICAgLyogQWRqdXN0IGNpZi0+Ynl0ZXMgdG8gaW5jbHVkZSBzcGFjZSBmb3IgdGhlIGJpdHMgb2YgdGhlIGlhNjRfYXJncyBmcmFtZQotICAgICB0aGF0IHByZWNlZWRzIHRoZSBpbnRlZ2VyIHJlZ2lzdGVyIHBvcnRpb24uICBUaGUgZXN0aW1hdGUgdGhhdCB0aGUgCisgICAgIHRoYXQgcHJlY2VkZXMgdGhlIGludGVnZXIgcmVnaXN0ZXIgcG9ydGlvbi4gIFRoZSBlc3RpbWF0ZSB0aGF0IHRoZQogICAgICBnZW5lcmljIGJpdHMgZGlkIGZvciB0aGUgYXJndW1lbnQgc3BhY2UgcmVxdWlyZWQgaXMgZ29vZCBlbm91Z2ggZm9yIHRoZQogICAgICBpbnRlZ2VyIGNvbXBvbmVudC4gICovCiAgIGNpZi0+Ynl0ZXMgKz0gb2Zmc2V0b2Yoc3RydWN0IGlhNjRfYXJncywgZ3BfcmVnc1swXSk7CkBAIC0zMjQsMTMgKzMyNSwxNyBAQAogCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CiAJICBpZiAoZ3Bjb3VudCA8IDggJiYgZnBjb3VudCA8IDgpCiAJICAgIHN0Zl9zcGlsbCAoJnN0YWNrLT5mcF9yZWdzW2ZwY291bnQrK10sICooZmxvYXQgKilhdmFsdWVbaV0pOwotCSAgc3RhY2stPmdwX3JlZ3NbZ3Bjb3VudCsrXSA9ICooVUlOVDMyICopYXZhbHVlW2ldOworCSAgeworCSAgICBVSU5UMzIgdG1wOworCSAgICBtZW1jcHkgKCZ0bXAsIGF2YWx1ZVtpXSwgc2l6ZW9mIChVSU5UMzIpKTsKKwkgICAgc3RhY2stPmdwX3JlZ3NbZ3Bjb3VudCsrXSA9IHRtcDsKKwkgIH0KIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICBpZiAoZ3Bjb3VudCA8IDggJiYgZnBjb3VudCA8IDgpCiAJICAgIHN0Zl9zcGlsbCAoJnN0YWNrLT5mcF9yZWdzW2ZwY291bnQrK10sICooZG91YmxlICopYXZhbHVlW2ldKTsKLQkgIHN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10gPSAqKFVJTlQ2NCAqKWF2YWx1ZVtpXTsKKwkgIG1lbWNweSAoJnN0YWNrLT5ncF9yZWdzW2dwY291bnQrK10sIGF2YWx1ZVtpXSwgc2l6ZW9mIChVSU5UNjQpKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgpAQCAtNDI1LDcgKzQzMCw4IEBACiAgIHN0cnVjdCBmZmlfaWE2NF90cmFtcG9saW5lX3N0cnVjdCAqdHJhbXA7CiAgIHN0cnVjdCBpYTY0X2ZkICpmZDsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfVU5JWCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfVU5JWCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAoc3RydWN0IGZmaV9pYTY0X3RyYW1wb2xpbmVfc3RydWN0ICopY2xvc3VyZS0+dHJhbXA7CiAgIGZkID0gKHN0cnVjdCBpYTY0X2ZkICopKHZvaWQgKilmZmlfY2xvc3VyZV91bml4OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmgKaW5kZXggZDg1YzA0OS4uZTY4Y2VhNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIElBLTY0LgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKQEAgLTM0LDggKzM5LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9VTklYLCAgIAkvKiBMaW51eCBhbmQgYWxsIFVuaXggdmFyaWFudHMgdXNlIHRoZSBzYW1lIGNvbnZlbnRpb25zCSovCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1VOSVgKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9qYXZhX3Jhd19hcGkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jCmluZGV4IDljNTM4M2UuLjUyMmM4YmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jCkBAIC0zMTEsNyArMzExLDcgQEAKICAgZmZpX3Jhd19jbG9zdXJlICpjbCA9IChmZmlfcmF3X2Nsb3N1cmUqKXVzZXJfZGF0YTsKIAogICBmZmlfamF2YV9wdHJhcnJheV90b19yYXcgKGNpZiwgYXZhbHVlLCByYXcpOwotICAoKmNsLT5mdW4pIChjaWYsIHJ2YWx1ZSwgcmF3LCBjbC0+dXNlcl9kYXRhKTsKKyAgKCpjbC0+ZnVuKSAoY2lmLCBydmFsdWUsIChmZmlfcmF3KilyYXcsIGNsLT51c2VyX2RhdGEpOwogICBmZmlfamF2YV9yYXdfdG9fcnZhbHVlIChjaWYsIHJ2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oCmluZGV4IDZhNzYxZjYuLjZjMzQ4MDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTMyci9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAwNCAgUmVuZXNhcyBUZWNobm9sb2d5LgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA0ICBSZW5lc2FzIFRlY2hub2xvZ3kuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE0zMlIuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjYsNiArMjcsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gR2VuZXJpYyB0eXBlIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgTElCRkZJX0FTTQpAQCAtMzYsOCArNDEsOCBAQAogICB7CiAgICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgICAgRkZJX1NZU1YsCi0gICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gICAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICAgIEZGSV9MQVNUX0FCSSwKKyAgICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogICB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMKaW5kZXggNjAwY2YyMC4uMzdhMDc4NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaS5jCkBAIC0xLDcgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGZmaS5jCi0gICAKLSAgIG02OGsgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCisKKyAgIG02OGsgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpbmNsdWRlIDxmZmkuaD4KQEAgLTksOCArOSwxNyBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgX19ydGVtc19fCit2b2lkIHJ0ZW1zX2NhY2hlX2ZsdXNoX211bHRpcGxlX2RhdGFfbGluZXMoIGNvbnN0IHZvaWQgKiwgc2l6ZV90ICk7CisjZWxzZQogI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaWZkZWYgX19NSU5UX18KKyNpbmNsdWRlIDxtaW50L21pbnRiaW5kLmg+CisjaW5jbHVkZSA8bWludC9zc3lzdGVtLmg+CisjZWxzZQogI2luY2x1ZGUgPGFzbS9jYWNoZWN0bC5oPgorI2VuZGlmCisjZW5kaWYKIAogdm9pZCBmZmlfY2FsbF9TWVNWIChleHRlbmRlZF9jaWYgKiwKIAkJICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwKQEAgLTM1LDggKzQ0LDEyIEBACiAKICAgYXJncCA9IHN0YWNrOwogCi0gIGlmIChlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgJiYgIWVjaWYtPmNpZi0+ZmxhZ3MpCisgIGlmICgKKyNpZmRlZiBfX01JTlRfXworICAgICAgKGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkgfHwKKyNlbmRpZgorICAgICAgKCgoZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisgICAgICAgICYmICFlY2lmLT5jaWYtPmZsYWdzKSkpCiAgICAgc3RydWN0X3ZhbHVlX3B0ciA9IGVjaWYtPnJ2YWx1ZTsKICAgZWxzZQogICAgIHN0cnVjdF92YWx1ZV9wdHIgPSBOVUxMOwpAQCAtNDcsMTIgKzYwLDEyIEBACiAgICAgICAgaSAhPSAwOwogICAgICAgIGktLSwgcF9hcmcrKykKICAgICB7Ci0gICAgICBzaXplX3QgejsKKyAgICAgIHNpemVfdCB6ID0gKCpwX2FyZyktPnNpemU7CisgICAgICBpbnQgdHlwZSA9ICgqcF9hcmcpLT50eXBlOwogCi0gICAgICB6ID0gKCpwX2FyZyktPnNpemU7CiAgICAgICBpZiAoeiA8IHNpemVvZiAoaW50KSkKIAl7Ci0JICBzd2l0Y2ggKCgqcF9hcmcpLT50eXBlKQorCSAgc3dpdGNoICh0eXBlKQogCSAgICB7CiAJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJICAgICAgKihzaWduZWQgaW50ICopIGFyZ3AgPSAoc2lnbmVkIGludCkgKihTSU5UOCAqKSAqcF9hcmd2OwpAQCAtNzEsNyArODQsMTQgQEAKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKyNpZmRlZiBfX01JTlRfXworCSAgICAgIGlmICh6ID09IDEgfHwgeiA9PSAyKQorCQltZW1jcHkgKGFyZ3AgKyAyLCAqcF9hcmd2LCB6KTsKKyAgICAgICAgICAgICAgZWxzZQorCQltZW1jcHkgKGFyZ3AsICpwX2FyZ3YsIHopOworI2Vsc2UKIAkgICAgICBtZW1jcHkgKGFyZ3AgKyBzaXplb2YgKGludCkgLSB6LCAqcF9hcmd2LCB6KTsKKyNlbmRpZgogCSAgICAgIGJyZWFrOwogCiAJICAgIGRlZmF1bHQ6CkBAIC0xMTYsMTcgKzEzNiwzNCBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKyAgICAgIGlmIChjaWYtPnJ0eXBlLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYKKyAgICAgICAgICBjaWYtPnJ0eXBlLT5lbGVtZW50c1sxXSkKKyAgICAgICAgeworICAgICAgICAgIGNpZi0+ZmxhZ3MgPSAwOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+c2l6ZSkKIAl7CiAJY2FzZSAxOgorI2lmZGVmIF9fTUlOVF9fCisJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1NUUlVDVDI7CisjZWxzZQogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19TVFJVQ1QxOworI2VuZGlmCiAJICBicmVhazsKIAljYXNlIDI6CiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1NUUlVDVDI7CiAJICBicmVhazsKKyNpZmRlZiBfX01JTlRfXworCWNhc2UgMzoKKyNlbmRpZgogCWNhc2UgNDoKIAkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfSU5UOwogCSAgYnJlYWs7CisjaWZkZWYgX19NSU5UX18KKwljYXNlIDc6CisjZW5kaWYKIAljYXNlIDg6CiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0RJTlQ7CiAJICBicmVhazsKQEAgLTE0NCw5ICsxODEsMTUgQEAKICAgICAgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfRE9VQkxFOwogICAgICAgYnJlYWs7CiAKKyNpZiAoRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUpCiAgICAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorI2lmZGVmIF9fTUlOVF9fCisgICAgICBjaWYtPmZsYWdzID0gMDsKKyNlbHNlCiAgICAgICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX0xET1VCTEU7CisjZW5kaWYKICAgICAgIGJyZWFrOworI2VuZGlmCiAKICAgICBjYXNlIEZGSV9UWVBFX1BPSU5URVI6CiAgICAgICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1BPSU5URVI7CkBAIC0yMTIsNiArMjU1LDI2IEBACiAgICAgICBzaXplX3QgejsKIAogICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOworI2lmZGVmIF9fTUlOVF9fCisgICAgICBpZiAoY2lmLT5mbGFncyAmJgorICAgICAgICAgIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICYmCisgICAgICAgICAgKHogPT0gMSB8fCB6ID09IDIpKQorIAl7CisJICAqcF9hcmd2ID0gKHZvaWQgKikgKGFyZ3AgKyAyKTsKKworCSAgeiA9IDQ7CisJfQorICAgICAgZWxzZQorICAgICAgaWYgKGNpZi0+ZmxhZ3MgJiYKKyAgICAgICAgICBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCAmJgorICAgICAgICAgICh6ID09IDMgfHwgeiA9PSA0KSkKKyAJeworCSAgKnBfYXJndiA9ICh2b2lkICopIChhcmdwKTsKKworCSAgeiA9IDQ7CisJfQorICAgICAgZWxzZQorI2VuZGlmCiAgICAgICBpZiAoeiA8PSA0KQogCXsKIAkgICpwX2FyZ3YgPSAodm9pZCAqKSAoYXJncCArIDQgLSB6KTsKQEAgLTI1NSwxOSArMzE4LDMxIEBACiAJCSAgICAgIHZvaWQgKnVzZXJfZGF0YSwKIAkJICAgICAgdm9pZCAqY29kZWxvYykKIHsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgICoodW5zaWduZWQgc2hvcnQgKiljbG9zdXJlLT50cmFtcCA9IDB4MjA3YzsKICAgKih2b2lkICoqKShjbG9zdXJlLT50cmFtcCArIDIpID0gY29kZWxvYzsKICAgKih1bnNpZ25lZCBzaG9ydCAqKShjbG9zdXJlLT50cmFtcCArIDYpID0gMHg0ZWY5OwotICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKLSAgICAgICYmICFjaWYtPmZsYWdzKQorCisgIGlmICgKKyNpZmRlZiBfX01JTlRfXworICAgICAgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkgfHwKKyNlbmRpZgorICAgICAgKCgoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisgICAgICAgICAmJiAhY2lmLT5mbGFncykpKQogICAgICoodm9pZCAqKikoY2xvc3VyZS0+dHJhbXAgKyA4KSA9IGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWOwogICBlbHNlCiAgICAgKih2b2lkICoqKShjbG9zdXJlLT50cmFtcCArIDgpID0gZmZpX2Nsb3N1cmVfU1lTVjsKIAorI2lmZGVmIF9fcnRlbXNfXworICBydGVtc19jYWNoZV9mbHVzaF9tdWx0aXBsZV9kYXRhX2xpbmVzKCBjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFICk7CisjZWxpZiBkZWZpbmVkKF9fTUlOVF9fKQorICBTc3lzdGVtKFNfRkxVU0hDQUNIRSwgY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSk7CisjZWxzZQogICBzeXNjYWxsKFNZU19jYWNoZWZsdXNoLCBjb2RlbG9jLCBGTFVTSF9TQ09QRV9MSU5FLAogCSAgRkxVU0hfQ0FDSEVfQk9USCwgRkZJX1RSQU1QT0xJTkVfU0laRSk7CisjZW5kaWYKIAogICBjbG9zdXJlLT5jaWYgID0gY2lmOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CkBAIC0yNzUsNCArMzUwLDMgQEAKIAogICByZXR1cm4gRkZJX09LOwogfQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaAppbmRleCA2MzM3MTdiLi5lODFkZGUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTW90b3JvbGEgNjhLLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsOCArMzksOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TCmluZGV4IDU4ODIyZTAuLmY2ZjRlZjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TCkBAIC0xLDUgKzEsNyBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCBBbmRyZWFzIFNjaHdhYgorCQorICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAyMDEyIEFsYW4gSG91cmloYW5lCisJICAgIENvcHlyaWdodCAoYykgMTk5OCwgMjAxMiBBbmRyZWFzIFNjaHdhYgogCSAgICBDb3B5cmlnaHQgKGMpIDIwMDggUmVkIEhhdCwgSW5jLiAKICAgIAogICAgbTY4ayBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKQEAgLTQxLDEzICs0MywxOSBAQAogI2RlZmluZSBDRklfRU5EUFJPQygpCiAjZW5kaWYKIAorI2lmZGVmIF9fTUlOVF9fCisjZGVmaW5lIENBTExGVU5DKGZ1bmNuYW1lKSBfICMjIGZ1bmNuYW1lCisjZWxzZQorI2RlZmluZSBDQUxMRlVOQyhmdW5jbmFtZSkgZnVuY25hbWUKKyNlbmRpZgorCiAJLnRleHQKIAotCS5nbG9ibAlmZmlfY2FsbF9TWVNWCi0JLnR5cGUJZmZpX2NhbGxfU1lTVixAZnVuY3Rpb24KKwkuZ2xvYmwJQ0FMTEZVTkMoZmZpX2NhbGxfU1lTVikKKwkudHlwZQlDQUxMRlVOQyhmZmlfY2FsbF9TWVNWKSxAZnVuY3Rpb24KIAkuYWxpZ24JNAogCi1mZmlfY2FsbF9TWVNWOgorQ0FMTEZVTkMoZmZpX2NhbGxfU1lTVik6CiAJQ0ZJX1NUQVJUUFJPQygpCiAJbGluawklZnAsIzAKIAlDRklfT0ZGU0VUKDE0LC04KQpAQCAtNjIsMTQgKzcwLDE4IEBACiAJbW92ZS5sCTgoJWZwKSwtKCVzcCkKIAlwZWEJNCglc3ApCiAjaWYgIWRlZmluZWQgX19QSUNfXwotCWpzcglmZmlfcHJlcF9hcmdzCisJanNyCUNBTExGVU5DKGZmaV9wcmVwX2FyZ3MpCiAjZWxzZQotCWJzci5sCWZmaV9wcmVwX2FyZ3NAUExUUEMKKwlic3IubAlDQUxMRlVOQyhmZmlfcHJlcF9hcmdzQFBMVFBDKQogI2VuZGlmCiAJYWRkcS5sCSM4LCVzcAkKIAogCXwgUGFzcyBwb2ludGVyIHRvIHN0cnVjdCB2YWx1ZSwgaWYgYW55CisjaWZkZWYgX19NSU5UX18KKwltb3ZlLmwJJWQwLCVhMQorI2Vsc2UKIAltb3ZlLmwJJWEwLCVhMQorI2VuZGlmCiAKIAl8IENhbGwgdGhlIGZ1bmN0aW9uCiAJbW92ZS5sCTI0KCVmcCksJWEwCkBAIC04NSw3ICs5NywxMiBAQAogCW1vdmUubAkxNiglZnApLCVkMgogCiAJfCBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4KKwl8IE5PVEU6IE9uIHRoZSBtYzY4MDAwLCB0c3Qgb24gYW4gYWRkcmVzcyByZWdpc3RlciBpcyBub3Qgc3VwcG9ydGVkLgorI2lmICFkZWZpbmVkKF9fbWM2ODAyMF9fKSAmJiAhZGVmaW5lZChfX21jNjgwMzBfXykgJiYgIWRlZmluZWQoX19tYzY4MDQwX18pICYmICFkZWZpbmVkKF9fbWM2ODA2MF9fKSAmJiAhZGVmaW5lZChfX21jb2xkZmlyZV9fKQorCWNtcC53CSMwLCAlYTEKKyNlbHNlCiAJdHN0LmwJJWExCisjZW5kaWYKIAlqYmVxCW5vcmV0dmFsCiAKIAlidHN0CSMwLCVkMgpAQCAtMTAzLDI1ICsxMjAsNDQgQEAKIHJldGZsb2F0OgogCWJ0c3QJIzIsJWQyCiAJamJlcQlyZXRkb3VibGUKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLnMJJWZwMCwoJWExKQorI2Vsc2UKKwltb3ZlLmwJJWQwLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldGRvdWJsZToKIAlidHN0CSMzLCVkMgogCWpiZXEJcmV0bG9uZ2RvdWJsZQorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUuZAklZnAwLCglYTEpCisjZWxzZQorCW1vdmUubAklZDAsKCVhMSkrCisJbW92ZS5sCSVkMSwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRsb25nZG91YmxlOgogCWJ0c3QJIzQsJWQyCiAJamJlcQlyZXRwb2ludGVyCisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS54CSVmcDAsKCVhMSkKKyNlbHNlCisJbW92ZS5sCSVkMCwoJWExKSsKKwltb3ZlLmwJJWQxLCglYTEpKworCW1vdmUubAklZDIsKCVhMSkKKyNlbmRpZgogCWpicmEJZXBpbG9ndWUKIAogcmV0cG9pbnRlcjoKIAlidHN0CSM1LCVkMgogCWpiZXEJcmV0c3RydWN0MQorI2lmZGVmIF9fTUlOVF9fCisJbW92ZS5sCSVkMCwoJWExKQorI2Vsc2UKIAltb3ZlLmwJJWEwLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldHN0cnVjdDE6CkBAIC0xNDEsMTMgKzE3NywxMyBAQAogCXVubGsJJWZwCiAJcnRzCiAJQ0ZJX0VORFBST0MoKQotCS5zaXplCWZmaV9jYWxsX1NZU1YsLi1mZmlfY2FsbF9TWVNWCisJLnNpemUJQ0FMTEZVTkMoZmZpX2NhbGxfU1lTViksLi1DQUxMRlVOQyhmZmlfY2FsbF9TWVNWKQogCi0JLmdsb2JsCWZmaV9jbG9zdXJlX1NZU1YKLQkudHlwZQlmZmlfY2xvc3VyZV9TWVNWLCBAZnVuY3Rpb24KKwkuZ2xvYmwJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVikKKwkudHlwZQlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKSwgQGZ1bmN0aW9uCiAJLmFsaWduCTQKIAotZmZpX2Nsb3N1cmVfU1lTVjoKK0NBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpOgogCUNGSV9TVEFSVFBST0MoKQogCWxpbmsJJWZwLCMtMTIKIAlDRklfT0ZGU0VUKDE0LC04KQpAQCAtMTU3LDkgKzE5Myw5IEBACiAJcGVhCS0xMiglZnApCiAJbW92ZS5sCSVhMCwtKCVzcCkKICNpZiAhZGVmaW5lZCBfX1BJQ19fCi0JanNyCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKKwlqc3IJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcikKICNlbHNlCi0JYnNyLmwJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lckBQTFRQQworCWJzci5sCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMpCiAjZW5kaWYKIAogCWxzci5sCSMxLCVkMApAQCAtMTc4LDE2ICsyMTQsMzEgQEAKIAltb3ZlLmwJKCVhMCksJWQxCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAuTGNsc19yZXRfZmxvYXQ6CisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS5zCSglYTApLCVmcDAKKyNlbHNlCisJbW92ZS5sCSglYTApLCVkMAorI2VuZGlmCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAxOgogCWxzci5sCSMyLCVkMAogCWpuZQkxZgogCWpjcwkuTGNsc19yZXRfbGRvdWJsZQorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUuZAkoJWEwKSwlZnAwCisjZWxzZQorCW1vdmUubAkoJWEwKSssJWQwCisJbW92ZS5sCSglYTApLCVkMQorI2VuZGlmCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAuTGNsc19yZXRfbGRvdWJsZToKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLngJKCVhMCksJWZwMAorI2Vsc2UKKwltb3ZlLmwJKCVhMCkrLCVkMAorCW1vdmUubAkoJWEwKSssJWQxCisJbW92ZS5sCSglYTApLCVkMgorI2VuZGlmCiAJanJhCS5MY2xzX2VwaWxvZ3VlCiAxOgogCWxzci5sCSMyLCVkMApAQCAtMjA0LDEzICsyNTUsMTMgQEAKIAlqcmEJLkxjbHNfZXBpbG9ndWUKIAlDRklfRU5EUFJPQygpCiAKLQkuc2l6ZQlmZmlfY2xvc3VyZV9TWVNWLC4tZmZpX2Nsb3N1cmVfU1lTVgorCS5zaXplCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpLC4tQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVikKIAotCS5nbG9ibAlmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVgotCS50eXBlCWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWLCBAZnVuY3Rpb24KKwkuZ2xvYmwJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpCisJLnR5cGUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpLCBAZnVuY3Rpb24KIAkuYWxpZ24JNAogCi1mZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVjoKK0NBTExGVU5DKGZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWKToKIAlDRklfU1RBUlRQUk9DKCkKIAlsaW5rCSVmcCwjMAogCUNGSV9PRkZTRVQoMTQsLTgpCkBAIC0yMjAsMTQgKzI3MSwxNCBAQAogCW1vdmUubAklYTEsLSglc3ApCiAJbW92ZS5sCSVhMCwtKCVzcCkKICNpZiAhZGVmaW5lZCBfX1BJQ19fCi0JanNyCWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIKKwlqc3IJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcikKICNlbHNlCi0JYnNyLmwJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lckBQTFRQQworCWJzci5sCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXJAUExUUEMpCiAjZW5kaWYKIAl1bmxrCSVmcAogCXJ0cwogCUNGSV9FTkRQUk9DKCkKLQkuc2l6ZQlmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTViwuLWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWCisJLnNpemUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpLC4tQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpCiAKICNpZiBkZWZpbmVkIF9fRUxGX18gJiYgZGVmaW5lZCBfX2xpbnV4X18KIAkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYwppbmRleCBkNzE0Y2M5Li43OWNmZjliIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpLmMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KLSAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4ICAgICAgIERhdmlkIERhbmV5CisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAxMSAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggIERhdmlkIERhbmV5CisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5NiwgMjAwNywgMjAwOCwgMjAxMSAgUmVkIEhhdCwgSW5jLgogICAgCiAgICBNSVBTIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC0zNyw3ICszOCwxMSBAQAogI2VuZGlmCiAKICNpZm5kZWYgVVNFX19CVUlMVElOX19fQ0xFQVJfQ0FDSEUKLSNpbmNsdWRlIDxzeXMvY2FjaGVjdGwuaD4KKyMgIGlmIGRlZmluZWQoX19PcGVuQlNEX18pCisjICAgIGluY2x1ZGUgPG1pcHM2NC9zeXNhcmNoLmg+CisjICBlbHNlCisjICAgIGluY2x1ZGUgPHN5cy9jYWNoZWN0bC5oPgorIyAgZW5kaWYKICNlbmRpZgogCiAjaWZkZWYgRkZJX0RFQlVHCkBAIC02NjIsMTAgKzY2NywxMiBAQAogICBjaGFyICpjbGVhcl9sb2NhdGlvbiA9IChjaGFyICopIGNvZGVsb2M7CiAKICNpZiBkZWZpbmVkKEZGSV9NSVBTX08zMikKLSAgRkZJX0FTU0VSVChjaWYtPmFiaSA9PSBGRklfTzMyIHx8IGNpZi0+YWJpID09IEZGSV9PMzJfU09GVF9GTE9BVCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfTzMyICYmIGNpZi0+YWJpICE9IEZGSV9PMzJfU09GVF9GTE9BVCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gZmZpX2Nsb3N1cmVfTzMyOwogI2Vsc2UgLyogRkZJX01JUFNfTjMyICovCi0gIEZGSV9BU1NFUlQoY2lmLT5hYmkgPT0gRkZJX04zMiB8fCBjaWYtPmFiaSA9PSBGRklfTjY0KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9OMzIgJiYgY2lmLT5hYmkgIT0gRkZJX042NCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gZmZpX2Nsb3N1cmVfTjMyOwogI2VuZGlmIC8qIEZGSV9NSVBTX08zMiAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaAppbmRleCBjNWY0ZTA1Li43MTdkNjU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTUlQUy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNywxMSArMjgsMjMgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZmRlZiBsaW51eAogIyBpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgotI2Vsc2UKKyNlbGlmIGRlZmluZWQoX19ydGVtc19fKQorLyoKKyAqIFN1YnByb2dyYW0gY2FsbGluZyBjb252ZW50aW9uIC0gY29waWVkIGZyb20gc2dpZGVmcy5oCisgKi8KKyNkZWZpbmUgX01JUFNfU0lNX0FCSTMyCQkxCisjZGVmaW5lIF9NSVBTX1NJTV9OQUJJMzIJMgorI2RlZmluZSBfTUlQU19TSU1fQUJJNjQJCTMKKyNlbGlmICFkZWZpbmVkKF9fT3BlbkJTRF9fKQogIyBpbmNsdWRlIDxzZ2lkZWZzLmg+CiAjZW5kaWYKKwogIyAgaWZuZGVmIF9BQklOMzIKICMgICAgZGVmaW5lIF9BQklOMzIgX01JUFNfU0lNX05BQkkzMgogIyAgZW5kaWYKQEAgLTQzLDcgKzU2LDcgQEAKICMgIGVuZGlmCiAKICNpZiAhZGVmaW5lZChfTUlQU19TSU0pCi0tLSBzb21ldGhpbmcgaXMgdmVyeSB3cm9uZyAtLQorIyBlcnJvciAtLSBzb21ldGhpbmcgaXMgdmVyeSB3cm9uZyAtLQogI2Vsc2UKICMgIGlmIChfTUlQU19TSU09PV9BQklOMzIgJiYgZGVmaW5lZChfQUJJTjMyKSkgfHwgKF9NSVBTX1NJTT09X0FCSTY0ICYmIGRlZmluZWQoX0FCSTY0KSkKICMgICAgZGVmaW5lIEZGSV9NSVBTX04zMgpAQCAtNTEsNyArNjQsNyBAQAogIyAgICBpZiAoX01JUFNfU0lNPT1fQUJJTzMyICYmIGRlZmluZWQoX0FCSU8zMikpCiAjICAgICAgZGVmaW5lIEZGSV9NSVBTX08zMgogIyAgICBlbHNlCi0tLSB0aGlzIGlzIGFuIHVuc3VwcG9ydGVkIHBsYXRmb3JtIC0tCisjICAgICBlcnJvciAtLSB0aGlzIGlzIGFuIHVuc3VwcG9ydGVkIHBsYXRmb3JtIC0tCiAjICAgIGVuZGlmCiAjICBlbmRpZgogI2VuZGlmCkBAIC0xODYsMzAgKzE5OSwyOSBAQAogICBGRklfTzMyX1NPRlRfRkxPQVQsCiAgIEZGSV9OMzJfU09GVF9GTE9BVCwKICAgRkZJX042NF9TT0ZUX0ZMT0FULAorICBGRklfTEFTVF9BQkksCiAKICNpZmRlZiBGRklfTUlQU19PMzIKICNpZmRlZiBfX21pcHNfc29mdF9mbG9hdAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTzMyX1NPRlRfRkxPQVQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzJfU09GVF9GTE9BVAogI2Vsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMiwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMgogI2VuZGlmCiAjZWxzZQogIyBpZiBfTUlQU19TSU09PV9BQkk2NAogIyAgaWZkZWYgX19taXBzX3NvZnRfZmxvYXQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NF9TT0ZUX0ZMT0FULAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjY0X1NPRlRfRkxPQVQKICMgIGVsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX042NAogIyAgZW5kaWYKICMgZWxzZQogIyAgaWZkZWYgX19taXBzX3NvZnRfZmxvYXQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMl9TT0ZUX0ZMT0FULAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjMyX1NPRlRfRkxPQVQKICMgIGVsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMiwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX04zMgogIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKIAogI2RlZmluZSBGRklfRVhUUkFfQ0lGX0ZJRUxEUyB1bnNpZ25lZCByc3RydWN0X2ZsYWcKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TCmluZGV4IGFlMjMwOTQuLmZmNGJiY2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9uMzIuUwpAQCAtNDMsNiArNDMsNyBAQAogI2lmZGVmIF9fR05VQ19fCiAJLmFiaWNhbGxzCiAjZW5kaWYKKwkuc2V0IG1pcHM0CiAJLnRleHQKIAkuYWxpZ24JMgogCS5nbG9ibAlmZmlfY2FsbF9OMzIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21veGllL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbW94aWUvZmZpdGFyZ2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MzA1ZDEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbW94aWUvZmZpdGFyZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMDkgQW50aG9ueSBHcmVlbgotICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBNb3hpZQotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0gICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0gICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKLSAgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAotICAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0gICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0gICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICi0jZGVmaW5lIExJQkZGSV9UQVJHRVRfSAotCi0vKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9BU00KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwotdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwotCi10eXBlZGVmIGVudW0gZmZpX2FiaSB7Ci0gIEZGSV9GSVJTVF9BQkkgPSAwLAotCi0jaWZkZWYgTU9YSUUKLSAgRkZJX0VBQkksCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9FQUJJLAotI2VuZGlmCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQotfSBmZmlfYWJpOwotI2VuZGlmCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNkZWZpbmUgRkZJX0NMT1NVUkVTIDAKLSNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKLQotLyogVHJhbXBvbGluZXMgYXJlIDUgNC1ieXRlIGluc3RydWN0aW9ucyBsb25nLiAgKi8KLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAoNSo0KQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMKaW5kZXggNmQ3NjA2Zi4uNGNlMmJjNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMKQEAgLTEsOSArMSwxMSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gKGMpIDIwMDMtMjAwNCBSYW5kb2xwaCBDaHVuZyA8dGF1c3FAZGViaWFuLm9yZz4KKyAgIGZmaS5jIC0gKGMpIDIwMTEgQW50aG9ueSBHcmVlbgogICAgICAgICAgICAoYykgMjAwOCBSZWQgSGF0LCBJbmMuCi0KKwkgICAoYykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICAgICAgKGMpIDIwMDMtMjAwNCBSYW5kb2xwaCBDaHVuZyA8dGF1c3FAZGViaWFuLm9yZz4KKyAgICAgICAgICAgCiAgICBIUFBBIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCi0gICBIUC1VWCBQQSBBQkkgc3VwcG9ydCAoYykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIEhQLVVYIFBBIEFCSSBzdXBwb3J0IAogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtNjMzLDcgKzYzNSw4IEBACiAgIFVJTlQzMiAqdG1wOwogI2VuZGlmCiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1BBMzIpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1BBMzIpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIC8qIE1ha2UgYSBzbWFsbCB0cmFtcG9saW5lIHRoYXQgd2lsbCBicmFuY2ggdG8gb3VyCiAgICAgIGhhbmRsZXIgZnVuY3Rpb24uIFVzZSBQQy1yZWxhdGl2ZSBhZGRyZXNzaW5nLiAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3BhL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmgKaW5kZXggMDAxZjg5MS4uNWUzNjRkMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgaHBwYS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zOCwyMSArNDMsMjIgQEAKIAogI2lmZGVmIFBBX0xJTlVYCiAgIEZGSV9QQTMyLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMiwKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMgogI2VuZGlmCiAKICNpZmRlZiBQQV9IUFVYCiAgIEZGSV9QQTMyLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMiwKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEEzMgogI2VuZGlmCiAKICNpZmRlZiBQQTY0X0hQVVgKICNlcnJvciAiUEE2NF9IUFVYIEZGSSBpcyBub3QgeWV0IGltcGxlbWVudGVkIgogICBGRklfUEE2NCwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBNjQsCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1BBNjQKICNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUwppbmRleCBjNmY4NzY0Li4yMTNmMmRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4LlMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgYWl4LlMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIGFpeC5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICAgYmFzZWQgb24gZGFyd2luLlMgYnkgSm9obiBIb3Jua3Zpc3QKIAogICAgUG93ZXJQQyBBc3NlbWJseSBnbHVlLgpAQCAtNzksNiArNzksOCBAQAogCS5zZXQgZjIwLDIwCiAJLnNldCBmMjEsMjEKIAorCS5leHRlcm4gLmZmaV9wcmVwX2FyZ3MKKwogI2RlZmluZSBMSUJGRklfQVNNCiAjaW5jbHVkZSA8ZmZpY29uZmlnLmg+CiAjaW5jbHVkZSA8ZmZpLmg+CkBAIC0xMjUsNiArMTI3LDcgQEAKIAkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuICAqLwogCW1yCXI0LCByMQogCWJsCS5mZmlfcHJlcF9hcmdzCisJbm9wCiAKIAkvKiBOb3cgZG8gdGhlIGNhbGwuICAqLwogCWxkCXIwLCAwKHIyOSkKQEAgLTIyNiw2ICsyMjksNyBAQAogCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gICovCiAJbXIJcjQsIHIxCiAJYmwJLmZmaV9wcmVwX2FyZ3MKKwlub3AKIAogCS8qIE5vdyBkbyB0aGUgY2FsbC4gICovCiAJbHd6CXIwLCAwKHIyOSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUwppbmRleCA1Yzc0NDQ4Li5hYWJkM2MzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCkBAIC03OSw2ICs3OSw4IEBACiAJLnNldCBmMjAsMjAKIAkuc2V0IGYyMSwyMQogCisJLmV4dGVybiAuZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgorCiAjZGVmaW5lIExJQkZGSV9BU00KICNkZWZpbmUgSlVNUFRBUkdFVChuYW1lKSBuYW1lCiAjZGVmaW5lIEwoeCkgeApAQCAtMTY1LDYgKzE2Nyw3IEBACiAKIAkvKiBsb29rIHVwIHRoZSBwcm9wZXIgc3RhcnRpbmcgcG9pbnQgaW4gdGFibGUgICovCiAJLyogYnkgdXNpbmcgcmV0dXJuIHR5cGUgYXMgb2Zmc2V0ICovCisJbGh6CXIzLCAxMChyMykJLyogbG9hZCB0eXBlIGZyb20gcmV0dXJuIHR5cGUgKi8KIAlsZAlyNCwgTEMuLjYwKDIpCS8qIGdldCBhZGRyZXNzIG9mIGp1bXAgdGFibGUgKi8KIAlzbGRpCXIzLCByMywgNAkvKiBub3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgMTYgKi8KIAlsZAlyMCwgMjQwKzE2KHIxKQkvKiBsb2FkIHJldHVybiBhZGRyZXNzICovCkBAIC0zMzcsOCArMzQwLDkgQEAKIAogCS8qIGxvb2sgdXAgdGhlIHByb3BlciBzdGFydGluZyBwb2ludCBpbiB0YWJsZSAgKi8KIAkvKiBieSB1c2luZyByZXR1cm4gdHlwZSBhcyBvZmZzZXQgKi8KKwlsaHoJcjMsIDYocjMpCS8qIGxvYWQgdHlwZSBmcm9tIHJldHVybiB0eXBlICovCiAJbHd6CXI0LCBMQy4uNjAoMikJLyogZ2V0IGFkZHJlc3Mgb2YganVtcCB0YWJsZSAqLwotCXNsd2kJcjMsIHIzLCA0CS8qIG5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSA0ICovCisJc2x3aQlyMywgcjMsIDQJLyogbm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2ICovCiAJbHd6CXIwLCAxNzYrOChyMSkJLyogbG9hZCByZXR1cm4gYWRkcmVzcyAqLwogCWFkZAlyMywgcjMsIHI0CS8qIGFkZCBjb250ZW50cyBvZiB0YWJsZSB0byB0YWJsZSBhZGRyZXNzICovCiAJbXRjdHIJcjMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oCmluZGV4IGU4NmU2YjAuLjk5NGY2MmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9hc20uaApAQCAtNDIsNyArNDIsNyBAQAogCiAvKiBJZiBjb21waWxlZCBmb3IgcHJvZmlsaW5nLCBjYWxsIGBfbWNvdW50JyBhdCB0aGUgc3RhcnQgb2YgZWFjaCBmdW5jdGlvbi4gICovCiAjaWZkZWYJUFJPRgotLyogVGhlIG1jb3VudCBjb2RlIHJlbGllcyBvbiBhIHRoZSByZXR1cm4gYWRkcmVzcyBiZWluZyBvbiB0aGUgc3RhY2sKKy8qIFRoZSBtY291bnQgY29kZSByZWxpZXMgb24gdGhlIHJldHVybiBhZGRyZXNzIGJlaW5nIG9uIHRoZSBzdGFjawogICAgdG8gbG9jYXRlIG91ciBjYWxsZXIgYW5kIHNvIGl0IGNhbiByZXN0b3JlIGl0OyBzbyBzdG9yZSBvbmUganVzdAogICAgZm9yIGl0cyBiZW5lZml0LiAgKi8KICNpZmRlZiBQSUMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TCmluZGV4IGQ4YTFkZjUuLjRmOTg3ZGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW4uUwpAQCAtMSw2ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBkYXJ3aW4uUyAtIENvcHlyaWdodCAoYykgMjAwMCBKb2huIEhvcm5rdmlzdAotCSAgICAgIENvcHlyaWdodCAoYykgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwkgICAgICBDb3B5cmlnaHQgKGMpIDIwMDQsIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFBvd2VyUEMgQXNzZW1ibHkgZ2x1ZS4KIApAQCAtMjQsNTEgKzI0LDkyIEBACiAgICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisjZGVmaW5lIExJQkZGSV9BU00KICNpZiBkZWZpbmVkKF9fcHBjNjRfXykKICNkZWZpbmUgTU9ERV9DSE9JQ0UoeCwgeSkgeQogI2Vsc2UKICNkZWZpbmUgTU9ERV9DSE9JQ0UoeCwgeSkgeAogI2VuZGlmCiAKLSNkZWZpbmUgZ19sb25nICBNT0RFX0NIT0lDRShsb25nLCBxdWFkKSAgICAgICAgIC8qIHVzYWdlIGlzICIuZ19sb25nIiAqLworI2RlZmluZSBtYWNoaW5lX2Nob2ljZQlNT0RFX0NIT0lDRShwcGM3NDAwLHBwYzY0KQogCi0jZGVmaW5lIExPRzJfR1BSX0JZVEVTICBNT0RFX0NIT0lDRSgyLDMpICAgICAgICAvKiBsb2cyKEdQUl9CWVRFUykgKi8KKzsgRGVmaW5lIHNvbWUgcHNldWRvLW9wY29kZXMgZm9yIHNpemUtaW5kZXBlbmRlbnQgbG9hZCAmIHN0b3JlIG9mIEdQUnMgLi4uCisjZGVmaW5lIGxndQkJTU9ERV9DSE9JQ0UobHd6dSwgbGR1KQorI2RlZmluZSBsZwkJTU9ERV9DSE9JQ0UobHd6LGxkKQorI2RlZmluZSBzZwkJTU9ERV9DSE9JQ0Uoc3R3LHN0ZCkKKyNkZWZpbmUgc2d1CQlNT0RFX0NIT0lDRShzdHd1LHN0ZHUpCisjZGVmaW5lIHNndXgJCU1PREVfQ0hPSUNFKHN0d3V4LHN0ZHV4KQogCi0jZGVmaW5lIExJQkZGSV9BU00KKzsgLi4uIGFuZCB0aGUgc2l6ZSBvZiBHUFJzIGFuZCB0aGVpciBzdG9yYWdlIGluZGljYXRvci4KKyNkZWZpbmUgR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDQsOCkKKyNkZWZpbmUgTE9HMl9HUFJfQllURVMJTU9ERV9DSE9JQ0UoMiwzKQkvKiBsb2cyKEdQUl9CWVRFUykgKi8KKyNkZWZpbmUgZ19sb25nCQlNT0RFX0NIT0lDRShsb25nLCBxdWFkKQkvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKworOyBGcm9tIHRoZSBBQkkgZG9jOiAiTWFjIE9TIFggQUJJIEZ1bmN0aW9uIENhbGwgR3VpZGUiIFZlcnNpb24gMjAwOS0wMi0wNC4KKyNkZWZpbmUgTElOS0FHRV9TSVpFCU1PREVfQ0hPSUNFKDI0LDQ4KQorI2RlZmluZSBQQVJBTV9BUkVBCU1PREVfQ0hPSUNFKDMyLDY0KQorI2RlZmluZSBTQVZFRF9MUl9PRkZTRVQJTU9ERV9DSE9JQ0UoOCwxNikJLyogc2F2ZSBwb3NpdGlvbiBmb3IgbHIgKi8KKworLyogSWYgdGhlcmUgaXMgYW55IEZQIHN0dWZmIHdlIG1ha2Ugc3BhY2UgZm9yIGFsbCBvZiB0aGUgcmVncy4gICovCisjZGVmaW5lIFNBVkVEX0ZQUl9DT1VOVCAxMworI2RlZmluZSBGUFJfU0laRQk4CisjZGVmaW5lIFJFU1VMVF9CWVRFUwkxNgorCisvKiBUaGlzIHNob3VsZCBiZSBrZXB0IGluIHN0ZXAgd2l0aCB0aGUgc2FtZSB2YWx1ZSBpbiBmZmlfZGFyd2luLmMuICAqLworI2RlZmluZSBBU01fTkVFRFNfUkVHSVNURVJTIDQKKyNkZWZpbmUgU0FWRV9SRUdTX1NJWkUgKEFTTV9ORUVEU19SRUdJU1RFUlMgKiBHUFJfQllURVMpCisKICNpbmNsdWRlIDxmZmljb25maWcuaD4KICNpbmNsdWRlIDxmZmkuaD4KKwogI2RlZmluZSBKVU1QVEFSR0VUKG5hbWUpIG5hbWUKICNkZWZpbmUgTCh4KSB4Ci0udGV4dAotCS5hbGlnbiAyCi0uZ2xvYmwgX2ZmaV9wcmVwX2FyZ3MKIAotLnRleHQKKwkudGV4dAogCS5hbGlnbiAyCi0uZ2xvYmwgX2ZmaV9jYWxsX0RBUldJTgotLnRleHQKKwkuZ2xvYmwgX2ZmaV9wcmVwX2FyZ3MKKwogCS5hbGlnbiAyCisJLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4KKworCS8qIFdlIGFycml2ZSBoZXJlIHdpdGg6CisJICAgcjMgPSBwdHIgdG8gZXh0ZW5kZWQgY2lmLgorCSAgIHI0ID0gLWJ5dGVzLgorCSAgIHI1ID0gY2lmIGZsYWdzLgorCSAgIHI2ID0gcHRyIHRvIHJldHVybiB2YWx1ZS4KKwkgICByNyA9IGZuIHBvaW50ZXIgKHVzZXIgZnVuYykuCisJICAgcjggPSBmbiBwb2ludGVyIChmZmlfcHJlcF9hcmdzKS4KKwkgICByOSA9IGZmaV90eXBlKiBmb3IgdGhlIHJldCB2YWwuICAqLworCiBfZmZpX2NhbGxfREFSV0lOOgotTEZCMDoKK0xzdGFydGNvZGU6CiAJbXIgICAJcjEyLHI4CS8qIFdlIG9ubHkgbmVlZCByMTIgdW50aWwgdGhlIGNhbGwsCi0JCQkgICBzbyBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgc2F2ZWQuICAqLworCQkJICAgc28gaXQgZG9lcyBub3QgaGF2ZSB0byBiZSBzYXZlZC4gICovCiBMRkIxOgogCS8qIFNhdmUgdGhlIG9sZCBzdGFjayBwb2ludGVyIGFzIEFQLiAgKi8KIAltcglyOCxyMQogTENGSTA6CisJCisJLyogU2F2ZSB0aGUgcmV0dmFsIHR5cGUgaW4gcGFyZW50cyBmcmFtZS4gICovCisJc2cJcjksKExJTktBR0VfU0laRSs2KkdQUl9CWVRFUykocjgpCisKIAkvKiBBbGxvY2F0ZSB0aGUgc3RhY2sgc3BhY2Ugd2UgbmVlZC4gICovCi0Jc3R3dXgJcjEscjEscjQKKwlzZ3V4CXIxLHIxLHI0CiAKIAkvKiBTYXZlIHJlZ2lzdGVycyB3ZSB1c2UuICAqLwogCW1mbHIJcjkKKwlzZwlyOSxTQVZFRF9MUl9PRkZTRVQocjgpCiAKLQlzdHcJcjI4LC0xNihyOCkJCi0Jc3R3CXIyOSwtMTIocjgpCi0Jc3R3CXIzMCwtOChyOCkKLQlzdHcJcjMxLC00KHI4KQorCXNnCXIyOCwtKDQgKiBHUFJfQllURVMpKHI4KQkKKwlzZwlyMjksLSgzICogR1BSX0JZVEVTKShyOCkKKwlzZwlyMzAsLSgyICogR1BSX0JZVEVTKShyOCkKKwlzZwlyMzEsLSggICAgR1BSX0JZVEVTKShyOCkKIAotCXN0dwlyOSw4KHI4KQotCXN0dwlyMiwyMChyMSkKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTikKKwkvKiBUaGUgVE9DIHNsb3QgaXMgcmVzZXJ2ZWQgaW4gdGhlIERhcndpbiBBQkkgYW5kIHIyIGlzIHZvbGF0aWxlLiAgKi8KKwlzZwlyMiwoNSAqIEdQUl9CWVRFUykocjEpCisjZW5kaWYKKwogTENGSTE6CiAKIAkvKiBTYXZlIGFyZ3VtZW50cyBvdmVyIGNhbGwuICAqLwpAQCAtNzcsMTQgKzExOCwxNyBAQAogCW1yCXIyOSxyNwkvKiBmdW5jdGlvbiBhZGRyZXNzLCAgKi8KIAltcglyMjgscjgJLyogb3VyIEFQLiAgKi8KIExDRkkyOgotCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gICovCisJLyogQ2FsbCBmZmlfcHJlcF9hcmdzLiByMyA9IGV4dGVuZGVkIGNpZiwgcjQgPSBzdGFjayBwdHIgY29weS4gICovCiAJbXIJcjQscjEKIAlsaQlyOSwwCiAKIAltdGN0cglyMTIgLyogcjEyIGhvbGRzIGFkZHJlc3Mgb2YgX2ZmaV9wcmVwX2FyZ3MuICAqLwogCWJjdHJsCi0JbHd6ICAgICByMiwyMChyMSkKIAorI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lOKQorCS8qIFRoZSBUT0Mgc2xvdCBpcyByZXNlcnZlZCBpbiB0aGUgRGFyd2luIEFCSSBhbmQgcjIgaXMgdm9sYXRpbGUuICAqLworCWxnICAgICByMiwoNSAqIEdQUl9CWVRFUykocjEpCisjZW5kaWYKIAkvKiBOb3cgZG8gdGhlIGNhbGwuCiAJICAgU2V0IHVwIGNyMSB3aXRoIGJpdHMgNC03IG9mIHRoZSBmbGFncy4gICovCiAJbXRjcmYJMHg0MCxyMzEKQEAgLTkyLDcxICsxMzYsMTMwIEBACiAJbXRjdHIJcjI5CiAJLyogTG9hZCBhbGwgdGhvc2UgYXJndW1lbnQgcmVnaXN0ZXJzLgogCSAgIFdlIGhhdmUgc2V0IHVwIGEgbmljZSBzdGFjayBmcmFtZSwganVzdCBsb2FkIGl0IGludG8gcmVnaXN0ZXJzLiAgKi8KLQlsd3ogICAgIHIzLDIwKygxKjQpKHIxKQotCWx3eiAgICAgcjQsMjArKDIqNCkocjEpCi0JbHd6ICAgICByNSwyMCsoMyo0KShyMSkKLQlsd3ogICAgIHI2LDIwKyg0KjQpKHIxKQorCWxnICAgICByMywgKExJTktBR0VfU0laRSAgICAgICAgICAgICAgICApKHIxKQorCWxnICAgICByNCwgKExJTktBR0VfU0laRSArICAgICBHUFJfQllURVMpKHIxKQorCWxnICAgICByNSwgKExJTktBR0VfU0laRSArIDIgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByNiwgKExJTktBR0VfU0laRSArIDMgKiBHUFJfQllURVMpKHIxKQogCW5vcAotCWx3eiAgICAgcjcsMjArKDUqNCkocjEpCi0JbHd6ICAgICByOCwyMCsoNio0KShyMSkKLQlsd3ogICAgIHI5LDIwKyg3KjQpKHIxKQotCWx3eiAgICAgcjEwLDIwKyg4KjQpKHIxKQorCWxnICAgICByNywgKExJTktBR0VfU0laRSArIDQgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByOCwgKExJTktBR0VfU0laRSArIDUgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByOSwgKExJTktBR0VfU0laRSArIDYgKiBHUFJfQllURVMpKHIxKQorCWxnICAgICByMTAsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpKHIxKQogCiBMMToKLQkvKiBMb2FkIGFsbCB0aGUgRlAgcmVnaXN0ZXJzLiAgKi8KKwkvKiAuLi4gTG9hZCBhbGwgdGhlIEZQIHJlZ2lzdGVycy4gICovCiAJYmYJNixMMgkvKiBObyBmbG9hdHMgdG8gbG9hZC4gICovCi0JbGZkCWYxLC0xNi0oMTMqOCkocjI4KQotCWxmZAlmMiwtMTYtKDEyKjgpKHIyOCkKLQlsZmQJZjMsLTE2LSgxMSo4KShyMjgpCi0JbGZkCWY0LC0xNi0oMTAqOCkocjI4KQorCWxmZAlmMSwgLVNBVkVfUkVHU19TSVpFLSgxMypGUFJfU0laRSkocjI4KQorCWxmZAlmMiwgLVNBVkVfUkVHU19TSVpFLSgxMipGUFJfU0laRSkocjI4KQorCWxmZAlmMywgLVNBVkVfUkVHU19TSVpFLSgxMSpGUFJfU0laRSkocjI4KQorCWxmZAlmNCwgLVNBVkVfUkVHU19TSVpFLSgxMCpGUFJfU0laRSkocjI4KQogCW5vcAotCWxmZAlmNSwtMTYtKDkqOCkocjI4KQotCWxmZAlmNiwtMTYtKDgqOCkocjI4KQotCWxmZAlmNywtMTYtKDcqOCkocjI4KQotCWxmZAlmOCwtMTYtKDYqOCkocjI4KQorCWxmZAlmNSwgLVNBVkVfUkVHU19TSVpFLSggOSpGUFJfU0laRSkocjI4KQorCWxmZAlmNiwgLVNBVkVfUkVHU19TSVpFLSggOCpGUFJfU0laRSkocjI4KQorCWxmZAlmNywgLVNBVkVfUkVHU19TSVpFLSggNypGUFJfU0laRSkocjI4KQorCWxmZAlmOCwgLVNBVkVfUkVHU19TSVpFLSggNipGUFJfU0laRSkocjI4KQogCW5vcAotCWxmZCAgICAgZjksLTE2LSg1KjgpKHIyOCkKLQlsZmQgICAgIGYxMCwtMTYtKDQqOCkocjI4KQotCWxmZCAgICAgZjExLC0xNi0oMyo4KShyMjgpCi0JbGZkICAgICBmMTIsLTE2LSgyKjgpKHIyOCkKKwlsZmQgICAgIGY5LCAtU0FWRV9SRUdTX1NJWkUtKCA1KkZQUl9TSVpFKShyMjgpCisJbGZkICAgICBmMTAsLVNBVkVfUkVHU19TSVpFLSggNCpGUFJfU0laRSkocjI4KQorCWxmZCAgICAgZjExLC1TQVZFX1JFR1NfU0laRS0oIDMqRlBSX1NJWkUpKHIyOCkKKwlsZmQgICAgIGYxMiwtU0FWRV9SRUdTX1NJWkUtKCAyKkZQUl9TSVpFKShyMjgpCiAJbm9wCi0JbGZkICAgICBmMTMsLTE2LSgxKjgpKHIyOCkKKwlsZmQgICAgIGYxMywtU0FWRV9SRUdTX1NJWkUtKCAxKkZQUl9TSVpFKShyMjgpCiAKIEwyOgogCW1yCXIxMixyMjkJLyogUHV0IHRoZSB0YXJnZXQgYWRkcmVzcyBpbiByMTIgYXMgc3BlY2lmaWVkLiAgKi8KIAltdGN0ciAgCXIxMgogCW5vcAogCW5vcAorCiAJLyogTWFrZSB0aGUgY2FsbC4gICovCiAJYmN0cmwKIAogCS8qIE5vdywgZGVhbCB3aXRoIHRoZSByZXR1cm4gdmFsdWUuICAqLwotCW10Y3JmCTB4MDEscjMxCiAKLQlidAkzMCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQotCWJ0CTI5LEwoZnBfcmV0dXJuX3ZhbHVlKQotCXN0dwlyMywwKHIzMCkKLQliZgkyOCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQotCXN0dwlyNCw0KHIzMCkKKwkvKiBtNjQgc3RydWN0dXJlIHJldHVybnMgY2FuIG9jY3VweSB0aGUgc2FtZSBzZXQgb2YgcmVnaXN0ZXJzIGFzCisJICAgd291bGQgYmUgdXNlZCB0byBwYXNzIHN1Y2ggYSBzdHJ1Y3R1cmUgYXMgYXJnMCAtIHNvIHRha2UgY2FyZSAKKwkgICBub3QgdG8gc3RlcCBvbiBhbnkgcG9zc2libHkgaG90IHJlZ3MuICAqLwogCi0JLyogRmFsbCB0aHJvdWdoLiAgKi8KKwkvKiBHZXQgdGhlIGZsYWdzLi4gKi8KKwltdGNyZgkweDAzLHIzMSA7IHdlIG5lZWQgYzYgJiBjcjcgbm93LgorCTsgRkxBR19SRVRVUk5TX05PVEhJTkcgYWxzbyBjb3ZlcnMgc3RydWN0IHJldC1ieS1yZWYuCisJYnQJMzAsTChkb25lX3JldHVybl92YWx1ZSkJICA7IEZMQUdfUkVUVVJOU19OT1RISU5HCisJYmYJMjcsTChzY2FsYXJfcmV0dXJuX3ZhbHVlKSA7IG5vdCBGTEFHX1JFVFVSTlNfU1RSVUNUCisJCisJLyogT0ssIHNvIHdlIGhhdmUgYSBzdHJ1Y3QuICAqLworI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWJ0CTMxLEwobWF5YmVfcmV0dXJuXzEyOCkgOyBGTEFHX1JFVFVSTlNfMTI4QklUUywgc3BlY2lhbCBjYXNlIAogCi1MKGRvbmVfcmV0dXJuX3ZhbHVlKToKLQkvKiBSZXN0b3JlIHRoZSByZWdpc3RlcnMgd2UgdXNlZCBhbmQgcmV0dXJuLiAgKi8KLQlsd3oJcjksOChyMjgpCi0JbHd6CXIzMSwtNChyMjgpCi0JbXRscglyOQotCWx3eglyMzAsLTgocjI4KQotCWx3eglyMjksLTEyKHIyOCkKLQlsd3oJcjI4LC0xNihyMjgpCi0JbHd6CXIxLDAocjEpCi0JYmxyCisJLyogT0ssIHdlIGhhdmUgdG8gbWFwIHRoZSByZXR1cm4gYmFjayB0byBhIG1lbSBzdHJ1Y3QuCisJICAgV2UgYXJlIGFib3V0IHRvIHRyYW1wbGUgdGhlIHBhcmVudHMgcGFyYW0gYXJlYSwgc28gcmVjb3ZlciB0aGUKKwkgICByZXR1cm4gdHlwZS4gIHIyOSBpcyBmcmVlLCBzaW5jZSB0aGUgY2FsbCBpcyBkb25lLiAgKi8KKwlsZwlyMjksKExJTktBR0VfU0laRSArIDYgKiBHUFJfQllURVMpKHIyOCkKKworCXNnCXIzLCAoTElOS0FHRV9TSVpFICAgICAgICAgICAgICAgICkocjI4KQorCXNnCXI0LCAoTElOS0FHRV9TSVpFICsgICAgIEdQUl9CWVRFUykocjI4KQorCXNnCXI1LCAoTElOS0FHRV9TSVpFICsgMiAqIEdQUl9CWVRFUykocjI4KQorCXNnCXI2LCAoTElOS0FHRV9TSVpFICsgMyAqIEdQUl9CWVRFUykocjI4KQorCW5vcAorCXNnCXI3LCAoTElOS0FHRV9TSVpFICsgNCAqIEdQUl9CWVRFUykocjI4KQorCXNnCXI4LCAoTElOS0FHRV9TSVpFICsgNSAqIEdQUl9CWVRFUykocjI4KQorCXNnCXI5LCAoTElOS0FHRV9TSVpFICsgNiAqIEdQUl9CWVRFUykocjI4KQorCXNnCXIxMCwoTElOS0FHRV9TSVpFICsgNyAqIEdQUl9CWVRFUykocjI4KQorCS8qIE9LLCBzbyBkbyB0aGUgYmxvY2sgbW92ZSAtIHdlIHRydXN0IHRoYXQgbWVtY3B5IHdpbGwgbm90IHRyYW1wbGUKKwkgICB0aGUgZnBycy4uLiAgKi8KKwltciAJcjMscjMwIDsgZGVzdAorCWFkZGkJcjQscjI4LExJTktBR0VfU0laRSA7IHNvdXJjZQorCS8qIFRoZSBzaXplIGlzIGEgc2l6ZV90LCBzaG91bGQgYmUgbG9uZy4gICovCisJbGcJcjUsMChyMjkpCisJLyogRmlndXJlIG91dCBzbWFsbCBzdHJ1Y3RzICovCisJY21waQkwLHI1LDQKKwliZ3QJTDMJOyAxLCAyIGFuZCA0IGJ5dGVzIGhhdmUgc3BlY2lhbCBydWxlcy4KKwljbXBpCTAscjUsMworCWJlcQlMMwk7IG5vdCAzCisJYWRkaQlyNCxyNCw4CisJc3ViZglyNCxyNSxyNAorTDM6CisJYmwJX21lbWNweQorCQorCS8qIC4uLiBkbyB3ZSBuZWVkIHRoZSBGUCByZWdpc3RlcnM/IC0gcmVjb3ZlciB0aGUgZmxhZ3MuLiAqLworCW10Y3JmCTB4MDMscjMxIDsgd2UgbmVlZCBjNiAmIGNyNyBub3cuCisJYmYJMjksTChkb25lX3JldHVybl92YWx1ZSkJLyogTm8gZmxvYXRzIGluIHRoZSBzdHJ1Y3QuICAqLworCXN0ZmQJZjEsIC1TQVZFX1JFR1NfU0laRS0oMTMqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYyLCAtU0FWRV9SRUdTX1NJWkUtKDEyKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMywgLVNBVkVfUkVHU19TSVpFLSgxMSpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjQsIC1TQVZFX1JFR1NfU0laRS0oMTAqRlBSX1NJWkUpKHIyOCkKKwlub3AKKwlzdGZkCWY1LCAtU0FWRV9SRUdTX1NJWkUtKCA5KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmNiwgLVNBVkVfUkVHU19TSVpFLSggOCpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjcsIC1TQVZFX1JFR1NfU0laRS0oIDcqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY4LCAtU0FWRV9SRUdTX1NJWkUtKCA2KkZQUl9TSVpFKShyMjgpCisJbm9wCisJc3RmZAlmOSwgLVNBVkVfUkVHU19TSVpFLSggNSpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjEwLC1TQVZFX1JFR1NfU0laRS0oIDQqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYxMSwtU0FWRV9SRUdTX1NJWkUtKCAzKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMTIsLVNBVkVfUkVHU19TSVpFLSggMipGUFJfU0laRSkocjI4KQorCW5vcAorCXN0ZmQJZjEzLC1TQVZFX1JFR1NfU0laRS0oIDEqRlBSX1NJWkUpKHIyOCkKKworCW1yCXIzLHIyOQk7IGZmaV90eXBlICoKKwltcglyNCxyMzAJOyBkZXN0CisJYWRkaQlyNSxyMjgsLVNBVkVfUkVHU19TSVpFLSgxMypGUFJfU0laRSkgOyBmcHJzCisJeG9yCXI2LHI2LHI2CisJc2cJcjYsKExJTktBR0VfU0laRSArIDcgKiBHUFJfQllURVMpKHIyOCkKKwlhZGRpCXI2LHIyOCwoTElOS0FHRV9TSVpFICsgNyAqIEdQUl9CWVRFUykgOyBwb2ludCB0byBhIHplcm9lZCBjb3VudGVyLgorCWJsIAlfZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0KKworCWIgTChkb25lX3JldHVybl92YWx1ZSkKKyNlbHNlCisJc3R3CXIzLDAocjMwKSA7IG0zMiB0aGUgb25seSBzdHJ1Y3QgcmV0dXJuIGluIHJlZyBpcyA0IGJ5dGVzLgorI2VuZGlmCisJYiBMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCiBMKGZwX3JldHVybl92YWx1ZSk6CiAJLyogRG8gd2UgaGF2ZSBsb25nIGRvdWJsZSB0byBzdG9yZT8gICovCi0JYmYJMzEsTChmZF9yZXR1cm5fdmFsdWUpCisJYmYJMzEsTChmZF9yZXR1cm5fdmFsdWUpIDsgRkxBR19SRVRVUk5TXzEyOEJJVFMKIAlzdGZkCWYxLDAocjMwKQotCXN0ZmQJZjIsOChyMzApCisJc3RmZAlmMixGUFJfU0laRShyMzApCiAJYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCiBMKGZkX3JldHVybl92YWx1ZSk6CkBAIC0xNzAsMjEgKzI3Myw1NyBAQAogCXN0ZnMJZjEsMChyMzApCiAJYglMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCitMKHNjYWxhcl9yZXR1cm5fdmFsdWUpOgorCWJ0CTI5LEwoZnBfcmV0dXJuX3ZhbHVlKQk7IEZMQUdfUkVUVVJOU19GUAorCTsgZmZpX2FyZyBpcyBkZWZpbmVkIGFzIHVuc2lnbmVkIGxvbmcuIAorCXNnCXIzLDAocjMwKQkJOyBTYXZlIHRoZSByZWcuCisJYmYJMjgsTChkb25lX3JldHVybl92YWx1ZSkgOyBub3QgRkxBR19SRVRVUk5TXzY0QklUUyAKKworI2lmIGRlZmluZWQoX19wcGM2NF9fKQorTChtYXliZV9yZXR1cm5fMTI4KToKKwlzdGQJcjMsMChyMzApCisJYmYJMzEsTChkb25lX3JldHVybl92YWx1ZSkgOyBub3QgRkxBR19SRVRVUk5TXzEyOEJJVFMgCisJc3RkCXI0LDgocjMwKQorI2Vsc2UKKwlzdHcJcjQsNChyMzApCisjZW5kaWYKKworCS8qIEZhbGwgdGhyb3VnaC4gICovCisJLyogV2Ugd2FudCB0aGlzIGF0IHRoZSBlbmQgdG8gc2ltcGxpZnkgZWggZXBpbG9nIGNvbXB1dGF0aW9uLiAgKi8KKworTChkb25lX3JldHVybl92YWx1ZSk6CisJLyogUmVzdG9yZSB0aGUgcmVnaXN0ZXJzIHdlIHVzZWQgYW5kIHJldHVybi4gICovCisJbGcJcjI5LFNBVkVEX0xSX09GRlNFVChyMjgpCisJOyBlcGlsb2cKKwlsZwlyMzEsLSgxICogR1BSX0JZVEVTKShyMjgpCisJbXRscglyMjkKKwlsZwlyMzAsLSgyICogR1BSX0JZVEVTKShyMjgpCisJbGcJcjI5LC0oMyAqIEdQUl9CWVRFUykocjI4KQorCWxnCXIyOCwtKDQgKiBHUFJfQllURVMpKHIyOCkKKwlsZwlyMSwwKHIxKQorCWJscgogTEZFMToKKwkuYWxpZ24JMQogLyogRU5EKF9mZmlfY2FsbF9EQVJXSU4pICAqLwogCiAvKiBQcm92aWRlIGEgbnVsbCBkZWZpbml0aW9uIG9mIF9mZmlfY2FsbF9BSVguICAqLwotLnRleHQKLQkuYWxpZ24gMgotLmdsb2JsIF9mZmlfY2FsbF9BSVgKLS50ZXh0CisJLnRleHQKKwkuZ2xvYmwgX2ZmaV9jYWxsX0FJWAogCS5hbGlnbiAyCiBfZmZpX2NhbGxfQUlYOgogCWJscgogLyogRU5EKF9mZmlfY2FsbF9BSVgpICAqLwogCi0uZGF0YQotLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcworLyogRUggc3R1ZmYuICAqLworCisjZGVmaW5lIEVIX0RBVEFfQUxJR05fRkFDVCBNT0RFX0NIT0lDRSgweDdjLDB4NzgpCisKKwkuc3RhdGljX2RhdGEKKwkuYWxpZ24gTE9HMl9HUFJfQllURVMKK0xMRkIwJG5vbl9sYXp5X3B0cjoKKwkuZ19sb25nIExzdGFydGNvZGUKKworCS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMrbGl2ZV9zdXBwb3J0CiBFSF9mcmFtZTE6CiAJLnNldAlMJHNldCQwLExFQ0lFMS1MU0NJRTEKIAkubG9uZwlMJHNldCQwCTsgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQpAQCAtMTkzLDE2ICszMzIsMTcgQEAKIAkuYnl0ZQkweDEJOyBDSUUgVmVyc2lvbgogCS5hc2NpaQkielJcMCIJOyBDSUUgQXVnbWVudGF0aW9uCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDE7IENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKLQkuYnl0ZQkweDdjCTsgc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgorCS5ieXRlCUVIX0RBVEFfQUxJR05fRkFDVCA7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkweDQxCTsgQ0lFIFJBIENvbHVtbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZQotCS5ieXRlCTB4OTAJOyBGREUgRW5jb2RpbmcgKGluZGlyZWN0IHBjcmVsKQorCS5ieXRlCTB4MTAJOyBGREUgRW5jb2RpbmcgKGluZGlyZWN0IHBjcmVsKQogCS5ieXRlCTB4Ywk7IERXX0NGQV9kZWZfY2ZhCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDEKIAkuYnl0ZQkweDAJOyB1bGViMTI4IDB4MAogCS5hbGlnbglMT0cyX0dQUl9CWVRFUwogTEVDSUUxOgotLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4uZWgKKworCS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOLmVoCiBfZmZpX2NhbGxfREFSV0lOLmVoOgogTFNGREUxOgogCS5zZXQJTCRzZXQkMSxMRUZERTEtTEFTRkRFMQpAQCAtMjEwLDExICszNTAsMTEgQEAKIExBU0ZERTE6CiAJLmxvbmcJTEFTRkRFMS1FSF9mcmFtZTEgOyBGREUgQ0lFIG9mZnNldAogCS5nX2xvbmcJTExGQjAkbm9uX2xhenlfcHRyLS4JOyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS5zZXQJTCRzZXQkMyxMRkUxLUxGQjAKKwkuc2V0CUwkc2V0JDMsTEZFMS1Mc3RhcnRjb2RlCiAJLmdfbG9uZwlMJHNldCQzCTsgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZSAgIDB4MCAgICAgOyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAkuYnl0ZQkweDQJOyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLnNldAlMJHNldCQ0LExDRkkwLUxGQjEKKwkuc2V0CUwkc2V0JDQsTENGSTAtTHN0YXJ0Y29kZQogCS5sb25nCUwkc2V0JDQKIAkuYnl0ZQkweGQJOyBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcgogCS5ieXRlCTB4MDgJOyB1bGViMTI4IDB4MDgKQEAgLTIzOSw3ICszNzksNSBAQAogCS5ieXRlCTB4MWMJOyB1bGViMTI4IDB4MWMKIAkuYWxpZ24gTE9HMl9HUFJfQllURVMKIExFRkRFMToKLS5kYXRhCi0JLmFsaWduIExPRzJfR1BSX0JZVEVTCi1MTEZCMCRub25fbGF6eV9wdHI6Ci0JLmdfbG9uZyBMRkIwCisJLmFsaWduIDEKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCmluZGV4IDc5NTk4MzguLjNmNjc5MGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZGFyd2luX2Nsb3N1cmUuUyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMywgMjAwNCwgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotICAgSW5jLiBiYXNlZCBvbiBwcGNfY2xvc3VyZS5TCisgICBkYXJ3aW5fY2xvc3VyZS5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDEwLCAKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAKKyAgIGJhc2VkIG9uIHBwY19jbG9zdXJlLlMKIAogICAgUG93ZXJQQyBBc3NlbWJseSBnbHVlLgogCkBAIC0zMyw5MSArMzQsMTc3IEBACiAjZGVmaW5lIE1PREVfQ0hPSUNFKHgsIHkpIHgKICNlbmRpZgogCi0jZGVmaW5lIGxndSAgICAgTU9ERV9DSE9JQ0UobHd6dSwgbGR1KQorI2RlZmluZSBtYWNoaW5lX2Nob2ljZQlNT0RFX0NIT0lDRShwcGM3NDAwLHBwYzY0KQogCi0jZGVmaW5lIGdfbG9uZyAgTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkgICAgICAgICAvKiB1c2FnZSBpcyAiLmdfbG9uZyIgKi8KKzsgRGVmaW5lIHNvbWUgcHNldWRvLW9wY29kZXMgZm9yIHNpemUtaW5kZXBlbmRlbnQgbG9hZCAmIHN0b3JlIG9mIEdQUnMgLi4uCisjZGVmaW5lIGxndQkJTU9ERV9DSE9JQ0UobHd6dSwgbGR1KQorI2RlZmluZSBsZwkJTU9ERV9DSE9JQ0UobHd6LGxkKQorI2RlZmluZSBzZwkJTU9ERV9DSE9JQ0Uoc3R3LHN0ZCkKKyNkZWZpbmUgc2d1CQlNT0RFX0NIT0lDRShzdHd1LHN0ZHUpCiAKLSNkZWZpbmUgTE9HMl9HUFJfQllURVMgIE1PREVfQ0hPSUNFKDIsMykgICAgICAgIC8qIGxvZzIoR1BSX0JZVEVTKSAqLworOyAuLi4gYW5kIHRoZSBzaXplIG9mIEdQUnMgYW5kIHRoZWlyIHN0b3JhZ2UgaW5kaWNhdG9yLgorI2RlZmluZSBHUFJfQllURVMJTU9ERV9DSE9JQ0UoNCw4KQorI2RlZmluZSBMT0cyX0dQUl9CWVRFUwlNT0RFX0NIT0lDRSgyLDMpCS8qIGxvZzIoR1BSX0JZVEVTKSAqLworI2RlZmluZSBnX2xvbmcJCU1PREVfQ0hPSUNFKGxvbmcsIHF1YWQpCS8qIHVzYWdlIGlzICIuZ19sb25nIiAqLworCis7IEZyb20gdGhlIEFCSSBkb2M6ICJNYWMgT1MgWCBBQkkgRnVuY3Rpb24gQ2FsbCBHdWlkZSIgVmVyc2lvbiAyMDA5LTAyLTA0LgorI2RlZmluZSBMSU5LQUdFX1NJWkUJTU9ERV9DSE9JQ0UoMjQsNDgpCisjZGVmaW5lIFBBUkFNX0FSRUEJTU9ERV9DSE9JQ0UoMzIsNjQpCisKKyNkZWZpbmUgU0FWRURfQ1JfT0ZGU0VUCU1PREVfQ0hPSUNFKDQsOCkJLyogc2F2ZSBwb3NpdGlvbiBmb3IgQ1IgKi8KKyNkZWZpbmUgU0FWRURfTFJfT0ZGU0VUCU1PREVfQ0hPSUNFKDgsMTYpCS8qIHNhdmUgcG9zaXRpb24gZm9yIGxyICovCisKKy8qIFdBUk5JTkc6IGlmIGZmaV90eXBlIGlzIGNoYW5nZWQuLi4gaGVyZSBiZSBtb25zdGVycy4gIAorICAgT2Zmc2V0cyBvZiBpdGVtcyB3aXRoaW4gdGhlIHJlc3VsdCB0eXBlLiAgKi8KKyNkZWZpbmUgRkZJX1RZUEVfVFlQRQlNT0RFX0NIT0lDRSg2LDEwKQorI2RlZmluZSBGRklfVFlQRV9FTEVNCU1PREVfQ0hPSUNFKDgsMTYpCisKKyNkZWZpbmUgU0FWRURfRlBSX0NPVU5UIDEzCisjZGVmaW5lIEZQUl9TSVpFCTgKKy8qIGJpZ2dlc3QgbTY0IHN0cnVjdCByZXQgaXMgOEdQUlMgKyAxM0ZQUlMgPSAxNjggYnl0ZXMgLSByb3VuZGVkIHRvIDE2Ynl0ZXMgPSAxNzYuICovCisjZGVmaW5lIFJFU1VMVF9CWVRFUwlNT0RFX0NIT0lDRSgxNiwxNzYpCisKKzsgVGhlIHdob2xlIHN0YWNrIGZyYW1lICoqTVVTVCoqIGJlIDE2Ynl0ZS1hbGlnbmVkLgorI2RlZmluZSBTQVZFX1NJWkUgKCgoTElOS0FHRV9TSVpFK1BBUkFNX0FSRUErU0FWRURfRlBSX0NPVU5UKkZQUl9TSVpFK1JFU1VMVF9CWVRFUykrMTUpICYgLTE2TEwpCisjZGVmaW5lIFBBRF9TSVpFIChTQVZFX1NJWkUtKExJTktBR0VfU0laRStQQVJBTV9BUkVBK1NBVkVEX0ZQUl9DT1VOVCpGUFJfU0laRStSRVNVTFRfQllURVMpKQorCisjZGVmaW5lIFBBUkVOVF9QQVJNX0JBU0UgKFNBVkVfU0laRStMSU5LQUdFX1NJWkUpCisjZGVmaW5lIEZQX1NBVkVfQkFTRSAoTElOS0FHRV9TSVpFK1BBUkFNX0FSRUEpCisKKyNpZiBkZWZpbmVkKF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXykgJiYgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fID49IDEwNTAKKzsgV2Ugbm8gbG9uZ2VyIG5lZWQgdGhlIHBpYyBzeW1ib2wgc3R1YiBmb3IgRGFyd2luID49IDkuCisjZGVmaW5lIEJMQ0xTX0hFTFAgX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KKyNkZWZpbmUgU1RSVUNUX1JFVFZBTFVFX1AgX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcAorI2RlZmluZSBQQVNTX1NUUl9GTE9BVFMgX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cworI3VuZGVmIFdBTlRfU1RVQgorI2Vsc2UKKyNkZWZpbmUgQkxDTFNfSEVMUCBMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YgorI2RlZmluZSBTVFJVQ1RfUkVUVkFMVUVfUCBMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRzdHViCisjZGVmaW5lIFBBU1NfU1RSX0ZMT0FUUyBMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRzdHViCisjZGVmaW5lIFdBTlRfU1RVQgorI2VuZGlmCisKKy8qIG0zMi9tNjQKKworICAgVGhlIHN0YWNrIGxheW91dCBsb29rcyBsaWtlIHRoaXM6CisKKyAgIHwgICBBZGRpdGlvbmFsIHBhcmFtcy4uLgkJCXwgfCAgICAgSGlnaGVyIGFkZHJlc3MKKyAgIH4JCQkJCQl+IH4KKyAgIHwgICBQYXJhbWV0ZXJzICAgICAgKGF0IGxlYXN0IDgqNC84PTMyLzY0KQl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlYHMgTFIJCTQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLyBQYXJlbnRgcyBmcmFtZS4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgPCsgPDw8IG9uIGVudHJ5IHRvCisgICB8ICAgUmVzdWx0IEJ5dGVzCQkgICAgICAgMTYvMTc2CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB+ICAgcGFkZGluZyB0byAxNi1ieXRlIGFsaWdubWVudAkJfiB+CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgc2xvdHMJCXwgfAorICAgfCAgIGhlcmUgZnAxMyAuLiBmcDEJCSAgICAgICAxMyo4CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUjMuLlIxMAkJCSAgOCo0Lzg9MzIvNjQJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CXN0YWNrCXwKKyAgIHwgICBSZXNlcnZlZCBbY29tcGlsZXIsYmluZGVyXSAgICAgMio0LzgJfCB8CWdyb3dzCXwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlkb3duCVYKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlcyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWxvd2VyIGFkZHJlc3NlcworICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfCAgICAgc3RhY2sgcG9pbnRlciBoZXJlCisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vCWR1cmluZworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgIDw8PAljYWxsLgorCisqLwogCiAJLmZpbGUJImRhcndpbl9jbG9zdXJlLlMiCi0udGV4dAotCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwotLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00KIAotLnRleHQKKwkubWFjaGluZSBtYWNoaW5lX2Nob2ljZQorCisJLnRleHQKKwkuZ2xvYmwgX2ZmaV9jbG9zdXJlX0FTTQogCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwogX2ZmaV9jbG9zdXJlX0FTTToKIExGQjE6Ci0JbWZscglyMAkJLyogZXh0cmFjdCByZXR1cm4gYWRkcmVzcyAgKi8KLQlzdHcJcjAsOChyMSkJLyogc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgICovCitMc3RhcnRjb2RlOgorCW1mbHIJcjAJCQkvKiBleHRyYWN0IHJldHVybiBhZGRyZXNzICAqLworCXNnCXIwLFNBVkVEX0xSX09GRlNFVChyMSkJLyogc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgICovCiBMQ0ZJMDoKLQkvKiAyNCBCeXRlcyAoTGlua2FnZSBBcmVhKQotCSAgIDMyIEJ5dGVzIChvdXRnb2luZyBwYXJhbWV0ZXIgYXJlYSwgYWx3YXlzIHJlc2VydmVkKQotCSAgIDEwNCBCeXRlcyAoMTMqOCBmcm9tIEZQUikKLQkgICAxNiBCeXRlcyAocmVzdWx0KQotCSAgIDE3NiBCeXRlcyAgKi8KLQotCXN0d3UJcjEsLTE3NihyMSkJLyogc2tpcCBvdmVyIGNhbGxlciBzYXZlIGFyZWEKLQkJCQlrZWVwIHN0YWNrIGFsaWduZWQgdG8gMTYuICAqLworCXNndQlyMSwtU0FWRV9TSVpFKHIxKQkvKiBza2lwIG92ZXIgY2FsbGVyIHNhdmUgYXJlYQorCQkJCQlrZWVwIHN0YWNrIGFsaWduZWQgdG8gMTYuICAqLwogTENGSTE6CiAJLyogV2Ugd2FudCB0byBidWlsZCB1cCBhbiBhcmVhIGZvciB0aGUgcGFyYW1ldGVycyBwYXNzZWQKIAkgICBpbiByZWdpc3RlcnMuIChib3RoIGZsb2F0aW5nIHBvaW50IGFuZCBpbnRlZ2VyKSAgKi8KIAotCS8qIFdlIHN0b3JlIGdwciAzIHRvIGdwciAxMCAoYWxpZ25lZCB0byA0KQotCSAgIGluIHRoZSBwYXJlbnRzIG91dGdvaW5nIGFyZWEuICAqLwotCXN0dyAgIHIzLDIwMChyMSkKLQlzdHcgICByNCwyMDQocjEpCi0Jc3R3ICAgcjUsMjA4KHIxKQotCXN0dyAgIHI2LDIxMihyMSkKLQlzdHcgICByNywyMTYocjEpCi0Jc3R3ICAgcjgsMjIwKHIxKQotCXN0dyAgIHI5LDIyNChyMSkKLQlzdHcgICByMTAsMjI4KHIxKQorCS8qIFB1dCBncHIgMyB0byBncHIgMTAgaW4gdGhlIHBhcmVudHMgb3V0Z29pbmcgYXJlYS4uLgorCSAgIC4uLiB0aGUgcmVtYWluZGVyIG9mIGFueSBwYXJhbXMgdGhhdCBvdmVyZmxvd2VkIHRoZSByZWdzIHdpbGwKKwkgICBmb2xsb3cgaGVyZS4gICovCisJc2cJcjMsIChQQVJFTlRfUEFSTV9CQVNFICAgICAgICAgICAgICAgICkocjEpCisJc2cJcjQsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICAgICkocjEpCisJc2cJcjUsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogMikocjEpCisJc2cJcjYsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogMykocjEpCisJc2cJcjcsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNCkocjEpCisJc2cJcjgsIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNSkocjEpCisJc2cJcjksIChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNikocjEpCisJc2cJcjEwLChQQVJFTlRfUEFSTV9CQVNFICsgR1BSX0JZVEVTICogNykocjEpCiAKLQkvKiBXZSBzYXZlIGZwciAxIHRvIGZwciAxMy4gKGFsaWduZWQgdG8gOCkgICovCi0Jc3RmZCAgZjEsNTYocjEpCi0Jc3RmZCAgZjIsNjQocjEpCi0Jc3RmZCAgZjMsNzIocjEpCi0Jc3RmZCAgZjQsODAocjEpCi0Jc3RmZCAgZjUsODgocjEpCi0Jc3RmZCAgZjYsOTYocjEpCi0Jc3RmZCAgZjcsMTA0KHIxKQotCXN0ZmQgIGY4LDExMihyMSkKLQlzdGZkICBmOSwxMjAocjEpCi0Jc3RmZCAgZjEwLDEyOChyMSkKLQlzdGZkICBmMTEsMTM2KHIxKQotCXN0ZmQgIGYxMiwxNDQocjEpCi0Jc3RmZCAgZjEzLDE1MihyMSkKKwkvKiBXZSBzYXZlIGZwciAxIHRvIGZwciAxNCBpbiBvdXIgb3duIHNhdmUgZnJhbWUuICAqLworCXN0ZmQJZjEsIChGUF9TQVZFX0JBU0UgICAgICAgICAgICAgICAgICkocjEpCisJc3RmZAlmMiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAgICAgKShyMSkKKwlzdGZkCWYzLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMiApKHIxKQorCXN0ZmQJZjQsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAzICkocjEpCisJc3RmZAlmNSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDQgKShyMSkKKwlzdGZkCWY2LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNSApKHIxKQorCXN0ZmQJZjcsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA2ICkocjEpCisJc3RmZAlmOCwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDcgKShyMSkKKwlzdGZkCWY5LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOCApKHIxKQorCXN0ZmQJZjEwLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA5ICkocjEpCisJc3RmZAlmMTEsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDEwKShyMSkKKwlzdGZkCWYxMiwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTEpKHIxKQorCXN0ZmQJZjEzLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMikocjEpCiAKIAkvKiBTZXQgdXAgcmVnaXN0ZXJzIGZvciB0aGUgcm91dGluZSB0aGF0IGFjdHVhbGx5IGRvZXMgdGhlIHdvcmsKIAkgICBnZXQgdGhlIGNvbnRleHQgcG9pbnRlciBmcm9tIHRoZSB0cmFtcG9saW5lLiAgKi8KLQltciByMyxyMTEKKwltcglyMyxyMTEKIAogCS8qIE5vdyBsb2FkIHVwIHRoZSBwb2ludGVyIHRvIHRoZSByZXN1bHQgc3RvcmFnZS4gICovCi0JYWRkaSByNCxyMSwxNjAKKwlhZGRpCXI0LHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKQogCiAJLyogTm93IGxvYWQgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIHNhdmVkIGdwciByZWdpc3RlcnMuICAqLwotCWFkZGkgcjUscjEsMjAwCisJYWRkaQlyNSxyMSxQQVJFTlRfUEFSTV9CQVNFCiAKIAkvKiBOb3cgbG9hZCB1cCB0aGUgcG9pbnRlciB0byB0aGUgc2F2ZWQgZnByIHJlZ2lzdGVycy4gICovCi0JYWRkaSByNixyMSw1NgorCWFkZGkJcjYscjEsRlBfU0FWRV9CQVNFCiAKIAkvKiBNYWtlIHRoZSBjYWxsLiAgKi8KLQlibAlMZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViCisJYmwJQkxDTFNfSEVMUAogCi0JLyogTm93IHIzIGNvbnRhaW5zIHRoZSByZXR1cm4gdHlwZQotCSAgIHNvIHVzZSBpdCB0byBsb29rIHVwIGluIGEgdGFibGUKKwkvKiByMyBjb250YWlucyB0aGUgcnR5cGUgcG9pbnRlci4uLiBzYXZlIGl0IHNpbmNlIHdlIHdpbGwgbmVlZAorCSAgIGl0IGxhdGVyLiAgKi8KKwlzZwlyMyxMSU5LQUdFX1NJWkUocjEpCTsgZmZpX3R5cGUgKiByZXN1bHRfdHlwZQorCWxnCXIwLDAocjMpCQk7IHNpemUgPT4gcjAKKwlsaHoJcjMsRkZJX1RZUEVfVFlQRShyMykJOyB0eXBlID0+IHIzCisKKwkvKiBUaGUgaGVscGVyIHdpbGwgaGF2ZSBpbnRlcmNlcHRlZCBzdHJ1dHVyZSByZXR1cm5zIGFuZCBpbnNlcnRlZAorCSAgIHRoZSBjYWxsZXJgcyBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBzdHJ1Y3RzIHJldHVybmVkIGJ5IHJlZi4gICovCisKKwkvKiByMyBjb250YWlucyB0aGUgcmV0dXJuIHR5cGUgIHNvIHVzZSBpdCB0byBsb29rIHVwIGluIGEgdGFibGUKIAkgICBzbyB3ZSBrbm93IGhvdyB0byBkZWFsIHdpdGggZWFjaCB0eXBlLiAgKi8KIAotCS8qIExvb2sgdXAgdGhlIHByb3BlciBzdGFydGluZyBwb2ludCBpbiB0YWJsZQotCSAgIGJ5IHVzaW5nIHJldHVybiB0eXBlIGFzIG9mZnNldC4gICovCi0JYWRkaSAgcjUscjEsMTYwCQkgIC8qIEdldCBwb2ludGVyIHRvIHJlc3VsdHMgYXJlYS4gICovCi0JYmwgICAgTGdldF9yZXRfdHlwZTBfYWRkciAvKiBHZXQgcG9pbnRlciB0byBMcmV0X3R5cGUwIGludG8gTFIuICAqLwotCW1mbHIgIHI0CQkgIC8qIE1vdmUgdG8gcjQuICAqLwotCXNsd2kgIHIzLHIzLDQJCSAgLyogTm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDE2LiAgKi8KLQlhZGQgICByMyxyMyxyNAkJICAvKiBBZGQgY29udGVudHMgb2YgdGFibGUgdG8gdGFibGUgYWRkcmVzcy4gICovCi0JbXRjdHIgcjMKLQliY3RyCQkJICAvKiBKdW1wIHRvIGl0LiAgKi8KKwlhZGRpCXI1LHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKSAvKiBPdGhlcndpc2UsIG91ciByZXR1cm4gaXMgaGVyZS4gICovCisJYmwJTGdldF9yZXRfdHlwZTBfYWRkcgkvKiBHZXQgcG9pbnRlciB0byBMcmV0X3R5cGUwIGludG8gTFIuICAqLworCW1mbHIJcjQJCQkvKiBNb3ZlIHRvIHI0LiAgKi8KKwlzbHdpCXIzLHIzLDQJCQkvKiBOb3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgMTYuICAqLworCWFkZAlyMyxyMyxyNAkJLyogQWRkIGNvbnRlbnRzIG9mIHRhYmxlIHRvIHRhYmxlIGFkZHJlc3MuICAqLworCW10Y3RyCXIzCisJYmN0cgkJCSAJIC8qIEp1bXAgdG8gaXQuICAqLwogTEZFMToKIC8qIEVhY2ggb2YgdGhlIHJldF90eXBlWCBjb2RlIGZyYWdtZW50cyBoYXMgdG8gYmUgZXhhY3RseSAxNiBieXRlcyBsb25nCiAgICAoNCBpbnN0cnVjdGlvbnMpLiBGb3IgY2FjaGUgZWZmZWN0aXZlbmVzcyB3ZSBhbGlnbiB0byBhIDE2IGJ5dGUgYm91bmRhcnkKQEAgLTE0MCw3ICsyMjcsNyBAQAogCiAvKiBjYXNlIEZGSV9UWVBFX0lOVCAgKi8KIExyZXRfdHlwZTE6Ci0JbHd6CXIzLDAocjUpCisJbGcJcjMsMChyNSkKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKQEAgLTE2OCw4NSArMjU1LDIyNCBAQAogCiAvKiBjYXNlIEZGSV9UWVBFX1VJTlQ4ICAqLwogTHJldF90eXBlNToKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsYnoJcjMsNyhyNSkKKyNlbHNlCiAJbGJ6CXIzLDMocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UOCAgKi8KIExyZXRfdHlwZTY6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGJ6CXIzLDcocjUpCisjZWxzZQogCWxieglyMywzKHI1KQorI2VuZGlmCiAJZXh0c2IJcjMscjMKIAliCUxmaW5pc2gKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UMTYgICovCiBMcmV0X3R5cGU3OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxoeglyMyw2KHI1KQorI2Vsc2UKIAlsaHoJcjMsMihyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NJTlQxNiAgKi8KIExyZXRfdHlwZTg6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGhhCXIzLDYocjUpCisjZWxzZQogCWxoYQlyMywyKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDMyICAqLwogTHJldF90eXBlOToKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsd3oJcjMsNChyNSkKKyNlbHNlCiAJbHd6CXIzLDAocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TSU5UMzIgICovCiBMcmV0X3R5cGUxMDoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsd3oJcjMsNChyNSkKKyNlbHNlCiAJbHd6CXIzLDAocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UNjQgICovCiBMcmV0X3R5cGUxMToKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsZwlyMywwKHI1KQorCWIJTGZpbmlzaAorCW5vcAorI2Vsc2UKIAlsd3oJcjMsMChyNSkKIAlsd3oJcjQsNChyNSkKIAliCUxmaW5pc2gKKyNlbmRpZgogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NJTlQ2NCAgKi8KIExyZXRfdHlwZTEyOgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxnCXIzLDAocjUpCisJYglMZmluaXNoCisJbm9wCisjZWxzZQogCWx3eglyMywwKHI1KQogCWx3eglyNCw0KHI1KQogCWIJTGZpbmlzaAorI2VuZGlmCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU1RSVUNUICAqLwogTHJldF90eXBlMTM6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGcJcjMsMChyNSkJCTsgd2UgbmVlZCBhdCBsZWFzdCB0aGlzLi4uCisJY21waQkwLHIwLDQKKwliZ3QJTHN0cnVjdGVuZAkJOyBub3QgYSBzcGVjaWFsIHNtYWxsIGNhc2UKKwliCUxzbWFsbHN0cnVjdAkJOyBzZWUgaWYgd2UgbmVlZCBtb3JlLgorI2Vsc2UKKwljbXBpCTAscjAsNAorCWJndAlMZmluaXNoCQk7IG5vdCBieSB2YWx1ZQorCWxnCXIzLDAocjUpCiAJYglMZmluaXNoCi0Jbm9wCisjZW5kaWYKKy8qIGNhc2UgRkZJX1RZUEVfUE9JTlRFUiAgKi8KK0xyZXRfdHlwZTE0OgorCWxnCXIzLDAocjUpCisJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKLS8qIGNhc2UgRkZJX1RZUEVfUE9JTlRFUiAgKi8KLUxyZXRfdHlwZTE0OgotCWx3eglyMywwKHI1KQotCWIJTGZpbmlzaAotCW5vcAotCW5vcAorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorTHNtYWxsc3RydWN0OgorCWJlcQlMZm91cgkJCTsgY29udGludWF0aW9uIG9mIExyZXQxMy4KKwljbXBpCTAscjAsMworCWJlcQlMZmluaXNoCQkJOyBkb25gdCBhZGp1c3QgdGhpcyAtIGNhbmB0IGJlIGFueSBmbG9hdHMgaGVyZS4uLgorCXNyZGkJcjMscjMsNDgKKwljbXBpCTAscjAsMgorCWJlcQlMZmluaXNoCQkJOyAuLiBvciBoZXJlIC4uCisJc3JkaQlyMyxyMyw4CisJYiAJTGZpbmlzaAkJCTsgLi4gb3IgaGVyZS4KKworTGZvdXI6CisJbGcJcjYsTElOS0FHRV9TSVpFKHIxKQk7IGdldCB0aGUgcmVzdWx0IHR5cGUKKwlsZwlyNixGRklfVFlQRV9FTEVNKHI2KQk7IGVsZW1lbnRzIGFycmF5IHBvaW50ZXIKKwlsZwlyNiwwKHI2KQkJOyBmaXJzdCBlbGVtZW50CisJbGh6CXIwLEZGSV9UWVBFX1RZUEUocjYpCTsgT0sgZ28gdGhlIHR5cGUKKwljbXBpCTAscjAsMgkJCTsgRkZJX1RZUEVfRkxPQVQKKwlibmUJTGZvdXJpbnQKKwlsZnMJZjEsMChyNSkJCTsganVzdCBvbmUgZmxvYXQgaW4gdGhlIHN0cnVjdC4KKwliIAlMZmluaXNoCisKK0xmb3VyaW50OgorCXNyZGkJcjMscjMsMzIJCTsgZm91ciBieXRlcy4KKwliIAlMZmluaXNoCisKK0xzdHJ1Y3RlbmQ6CisJbGcJcjMsTElOS0FHRV9TSVpFKHIxKQk7IGdldCB0aGUgcmVzdWx0IHR5cGUKKwlibAlTVFJVQ1RfUkVUVkFMVUVfUAorCWNtcGkJMCxyMywwCisJYmVxCUxmaW5pc2gJCQk7IG5vcGUuCisJLyogUmVjb3ZlciBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdHMuICAqLworCWFkZGkJcjExLHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKQorCWxnCXIzLDAocjExKQkJOyB3ZSBuZWVkIGF0IGxlYXN0IHRoaXMuLi4KKwlsZwlyNCw4KHIxMSkKKwljbXBpCTAscjAsMTYKKwliZXEJTGZpbmlzaAkJOyBzcGVjaWFsIGNhc2UgMTYgYnl0ZXMgd2UgZG9uJ3QgY29uc2lkZXIgZmxvYXRzLgorCisJLyogT0ssIGZydXN0cmF0aW5nbHksIHRoZSBwcm9jZXNzIG9mIHNhdmluZyB0aGUgc3RydWN0IHRvIG1lbSBtaWdodCBoYXZlCisJICAgbWVzc2VkIHdpdGggdGhlIEZQUnMsIHNvIHdlIGhhdmUgdG8gcmUtbG9hZCB0aGVtIDooLgorCSAgIFdlYGxsIHVzZSBvdXIgRlBScyBzcGFjZSBhZ2FpbiAtIGNhbGxpbmc6IAorCSAgIHZvaWQgZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzIChmZmlfdHlwZSAqcywgY2hhciAqc3JjLCAKKwkJCQkJICAgICB1bnNpZ25lZCAqbmZwciwgZG91YmxlICoqZnBycykgCisJICAgV2VgbGwgdGVtcG9yYXJpbHkgcGluY2ggdGhlIGZpcnN0IHR3byBzbG90cyBvZiB0aGUgcGFyYW0gYXJlYSBmb3IgbG9jYWwKKwkgICB2YXJzIHVzZWQgYnkgdGhlIHJvdXRpbmUuICAqLworCXhvcglyNixyNixyNgorCWFkZGkJcjUscjEsUEFSRU5UX1BBUk1fQkFTRQkJOyBzb21lIHNwYWNlCisJc2cJcjYsMChyNSkJCQk7ICpuZnByIHplcm9lZC4KKwlhZGRpCXI2LHI1LDgJCQkJOyAqKmZwcnMKKwlhZGRpCXIzLHIxLEZQX1NBVkVfQkFTRQkJOyBwb2ludGVyIHRvIEZQUnMgc3BhY2UKKwlzZwlyMywwKHI2KQorCW1yCXI0LHIxMQkJCQk7IHRoZSBzdHJ1Y3QgaXMgaGVyZS4uLgorCWxnCXIzLExJTktBR0VfU0laRShyMSkJCTsgZmZpX3R5cGUgKiByZXN1bHRfdHlwZS4KKwlibAlQQVNTX1NUUl9GTE9BVFMJCQk7IGdldCBzdHJ1Y3QgZmxvYXRzIGludG8gRlBSIHNhdmUgc3BhY2UuCisJLyogU2VlIGlmIHdlIHVzZWQgYW55IGZsb2F0cyAgKi8KKwlsd3oJcjAsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpKHIxKQkKKwljbXBpCTAscjAsMAorCWJlcQlMc3RydWN0aW50cwkJCTsgbm9wZS4KKwkvKiBPSyBsb2FkIGBlbSB1cC4uLiAqLworCWxmZAlmMSwgKEZQX1NBVkVfQkFTRSAgICAgICAgICAgICAgICAgKShyMSkKKwlsZmQJZjIsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgICAgICkocjEpCisJbGZkCWYzLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMiApKHIxKQorCWxmZAlmNCwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDMgKShyMSkKKwlsZmQJZjUsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA0ICkocjEpCisJbGZkCWY2LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNSApKHIxKQorCWxmZAlmNywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDYgKShyMSkKKwlsZmQJZjgsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA3ICkocjEpCisJbGZkCWY5LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOCApKHIxKQorCWxmZAlmMTAsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDkgKShyMSkKKwlsZmQJZjExLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMCkocjEpCisJbGZkCWYxMiwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTEpKHIxKQorCWxmZAlmMTMsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDEyKShyMSkKKworCS8qIHBvaW50IGJhY2sgYXQgb3VyIHNhdmVkIHN0cnVjdC4gICovCitMc3RydWN0aW50czoKKwlhZGRpCXIxMSxyMSwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykKKwlsZwlyMywwKHIxMSkJCQk7IHdlIGVuZCB1cCBwaWNraW5nIHRoZQorCWxnCXI0LDgocjExKQkJCTsgZmlyc3QgdHdvIGFnYWluLgorCWxnCXI1LDE2KHIxMSkKKwlsZwlyNiwyNChyMTEpCisJbGcJcjcsMzIocjExKQorCWxnCXI4LDQwKHIxMSkKKwlsZwlyOSw0OChyMTEpCisJbGcJcjEwLDU2KHIxMSkKKyNlbmRpZgogCiAvKiBjYXNlIGRvbmUgICovCiBMZmluaXNoOgotCWFkZGkJcjEscjEsMTc2CS8qIFJlc3RvcmUgc3RhY2sgcG9pbnRlci4gICovCi0JbHd6CXIwLDgocjEpCS8qIEdldCByZXR1cm4gYWRkcmVzcy4gICovCi0JbXRscglyMAkJLyogUmVzZXQgbGluayByZWdpc3Rlci4gICovCisJYWRkaQlyMSxyMSxTQVZFX1NJWkUJCS8qIFJlc3RvcmUgc3RhY2sgcG9pbnRlci4gICovCisJbGcJcjAsU0FWRURfTFJfT0ZGU0VUKHIxKQkvKiBHZXQgcmV0dXJuIGFkZHJlc3MuICAqLworCW10bHIJcjAJCQkvKiBSZXNldCBsaW5rIHJlZ2lzdGVyLiAgKi8KIAlibHIKLQorTGVuZGNvZGU6CisJLmFsaWduIDEKKwkKIC8qIEVORChmZmlfY2xvc3VyZV9BU00pICAqLwogCi0uZGF0YQotLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcytsaXZlX3N1cHBvcnQKKy8qIEVIIGZyYW1lIHN0dWZmLiAgKi8KKyNkZWZpbmUgRUhfREFUQV9BTElHTl9GQUNUIE1PREVfQ0hPSUNFKDB4N2MsMHg3OCkKKy8qIDE3NiwgNDAwICovCisjZGVmaW5lIEVIX0ZSQU1FX09GRlNFVEEgTU9ERV9DSE9JQ0UoMTc2LDB4OTApCisjZGVmaW5lIEVIX0ZSQU1FX09GRlNFVEIgTU9ERV9DSE9JQ0UoMSwzKQorCisJLnN0YXRpY19kYXRhCisJLmFsaWduIExPRzJfR1BSX0JZVEVTCitMTEZCMSRub25fbGF6eV9wdHI6CisJLmdfbG9uZyBMc3RhcnRjb2RlCisKKwkuc2VjdGlvbiBfX1RFWFQsX19laF9mcmFtZSxjb2FsZXNjZWQsbm9fdG9jK3N0cmlwX3N0YXRpY19zeW1zK2xpdmVfc3VwcG9ydAogRUhfZnJhbWUxOgogCS5zZXQJTCRzZXQkMCxMRUNJRTEtTFNDSUUxCiAJLmxvbmcJTCRzZXQkMAk7IExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKQEAgLTI1NSwxNiArNDgxLDE2IEBACiAJLmJ5dGUJMHgxCTsgQ0lFIFZlcnNpb24KIAkuYXNjaWkJInpSXDAiCTsgQ0lFIEF1Z21lbnRhdGlvbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yCi0JLmJ5dGUJMHg3Ywk7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKKwkuYnl0ZQlFSF9EQVRBX0FMSUdOX0ZBQ1QgOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCiAJLmJ5dGUJMHg0MQk7IENJRSBSQSBDb2x1bW4KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQXVnbWVudGF0aW9uIHNpemUKLQkuYnl0ZQkweDkwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKKwkuYnl0ZQkweDEwCTsgRkRFIEVuY29kaW5nIChpbmRpcmVjdCBwY3JlbCkKIAkuYnl0ZQkweGMJOyBEV19DRkFfZGVmX2NmYQogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxCiAJLmJ5dGUJMHgwCTsgdWxlYjEyOCAweDAKIAkuYWxpZ24JTE9HMl9HUFJfQllURVMKIExFQ0lFMToKLS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNLmVoCisJLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00uZWgKIF9mZmlfY2xvc3VyZV9BU00uZWg6CiBMU0ZERTE6CiAJLnNldAlMJHNldCQxLExFRkRFMS1MQVNGREUxCkBAIC0yNzMsNDUgKzQ5OSw3OCBAQAogTEFTRkRFMToKIAkubG9uZwlMQVNGREUxLUVIX2ZyYW1lMQk7IEZERSBDSUUgb2Zmc2V0CiAJLmdfbG9uZwlMTEZCMSRub25fbGF6eV9wdHItLgk7IEZERSBpbml0aWFsIGxvY2F0aW9uCi0JLnNldAlMJHNldCQzLExGRTEtTEZCMQorCS5zZXQJTCRzZXQkMyxMRkUxLUxzdGFydGNvZGUKIAkuZ19sb25nCUwkc2V0JDMJOyBGREUgYWRkcmVzcyByYW5nZQogCS5ieXRlICAgMHgwICAgICA7IHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCS5ieXRlCTB4NAk7IERXX0NGQV9hZHZhbmNlX2xvYzQKIAkuc2V0CUwkc2V0JDMsTENGSTEtTENGSTAKIAkubG9uZwlMJHNldCQzCiAJLmJ5dGUJMHhlCTsgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0Ci0JLmJ5dGUJMTc2LDEJOyB1bGViMTI4IDE3NgorCS5ieXRlCUVIX0ZSQU1FX09GRlNFVEEsRUhfRlJBTUVfT0ZGU0VUQgk7IHVsZWIxMjggMTc2LDEvMTkwLDMKIAkuYnl0ZQkweDQJOyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLnNldAlMJHNldCQ0LExDRkkwLUxGQjEKKwkuc2V0CUwkc2V0JDQsTENGSTAtTHN0YXJ0Y29kZQogCS5sb25nCUwkc2V0JDQKIAkuYnl0ZSAgIDB4MTEgICAgOyBEV19DRkFfb2Zmc2V0X2V4dGVuZGVkX3NmCiAJLmJ5dGUJMHg0MQk7IHVsZWIxMjggMHg0MQogCS5ieXRlICAgMHg3ZSAgICA7IHNsZWIxMjggLTIKIAkuYWxpZ24JTE9HMl9HUFJfQllURVMKIExFRkRFMToKLS5kYXRhCi0JLmFsaWduCUxPRzJfR1BSX0JZVEVTCi1MREZDTTA6Ci0uc2VjdGlvbiBfX1RFWFQsX19waWNzeW1ib2xzdHViMSxzeW1ib2xfc3R1YnMscHVyZV9pbnN0cnVjdGlvbnMsMzIKLQkuYWxpZ24JTE9HMl9HUFJfQllURVMKLUxmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJHN0dWI6Ci0jaWYgMQorCS5hbGlnbiAJMQorCisjaWZkZWYgV0FOVF9TVFVCCisJLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCisJLmFsaWduIDUKK0xfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViOgogCS5pbmRpcmVjdF9zeW1ib2wgX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KLQltZmxyCXIwCi0JYmNsCTIwLDMxLExPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KLUxPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU46Ci0JbWZscglyMTEKLQlhZGRpcwlyMTEscjExLGhhMTYoTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyIC0gTE8kZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTikKLQltdGxyCXIwCi0JbGd1CXIxMixsbzE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ciAtIExPJGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4pKHIxMSkKLQltdGN0cglyMTIKKwltZmxyIHIwCisJYmNsIDIwLDMxLCJMMDAwMDAwMDAwMDEkc3BiIgorIkwwMDAwMDAwMDAwMSRzcGIiOgorCW1mbHIgcjExCisJYWRkaXMgcjExLHIxMSxoYTE2KExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0ci0iTDAwMDAwMDAwMDAxJHNwYiIpCisJbXRsciByMAorCWx3enUgcjEyLGxvMTYoTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyLSJMMDAwMDAwMDAwMDEkc3BiIikocjExKQorCW10Y3RyIHIxMgogCWJjdHIKLS5sYXp5X3N5bWJvbF9wb2ludGVyCisJLmxhenlfc3ltYm9sX3BvaW50ZXIKIExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRsYXp5X3B0cjoKIAkuaW5kaXJlY3Rfc3ltYm9sIF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCi0JLmdfbG9uZyBkeWxkX3N0dWJfYmluZGluZ19oZWxwZXIKKwkuZ19sb25nCWR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorCisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCisJLmFsaWduIDUKK0xfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJHN0dWI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wCisJbWZsciByMAorCWJjbCAyMCwzMSwiTDAwMDAwMDAwMDAyJHNwYiIKKyJMMDAwMDAwMDAwMDIkc3BiIjoKKwltZmxyIHIxMQorCWFkZGlzIHIxMSxyMTEsaGExNihMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRsYXp5X3B0ci0iTDAwMDAwMDAwMDAyJHNwYiIpCisJbXRsciByMAorCWx3enUgcjEyLGxvMTYoTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AkbGF6eV9wdHItIkwwMDAwMDAwMDAwMiRzcGIiKShyMTEpCisJbXRjdHIgcjEyCisJYmN0cgorCS5sYXp5X3N5bWJvbF9wb2ludGVyCitMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRsYXp5X3B0cjoKKwkuaW5kaXJlY3Rfc3ltYm9sIF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AKKwkuZ19sb25nCWR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorCisJLnNlY3Rpb24gX19URVhULF9fcGljc3ltYm9sc3R1YjEsc3ltYm9sX3N0dWJzLHB1cmVfaW5zdHJ1Y3Rpb25zLDMyCisJLmFsaWduIDUKK0xfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJHN0dWI6CisJLmluZGlyZWN0X3N5bWJvbCBfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzCisJbWZsciByMAorCWJjbCAyMCwzMSwiTDAwMDAwMDAwMDAzJHNwYiIKKyJMMDAwMDAwMDAwMDMkc3BiIjoKKwltZmxyIHIxMQorCWFkZGlzIHIxMSxyMTEsaGExNihMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRsYXp5X3B0ci0iTDAwMDAwMDAwMDAzJHNwYiIpCisJbXRsciByMAorCWx3enUgcjEyLGxvMTYoTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkbGF6eV9wdHItIkwwMDAwMDAwMDAwMyRzcGIiKShyMTEpCisJbXRjdHIgcjEyCisJYmN0cgorCS5sYXp5X3N5bWJvbF9wb2ludGVyCitMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRsYXp5X3B0cjoKKwkuaW5kaXJlY3Rfc3ltYm9sIF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMKKwkuZ19sb25nCWR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorIyAgZW5kaWYKICNlbmRpZgotLmRhdGEKLQkuYWxpZ24gTE9HMl9HUFJfQllURVMKLUxMRkIxJG5vbl9sYXp5X3B0cjoKLQkuZ19sb25nIExGQjEKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jCmluZGV4IDc1Nzg0YTkuLmJhY2E2OTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmkuYwpAQCAtMSw3ICsxLDkgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCBHZW9mZnJleSBLZWF0aW5nCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKLSAgIENvcHlyaWdodCAoQykgMjAwOCBSZWQgSGF0LCBJbmMKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChDKSAyMDExIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDExIEt5bGUgTW9mZmV0dAorICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDggUmVkIEhhdCwgSW5jCisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworCSAgIENvcHlyaWdodCAoYykgMTk5OCBHZW9mZnJleSBLZWF0aW5nCiAKICAgIFBvd2VyUEMgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKIApAQCAtMzksMzIgKzQxLDI4IEBACiAgIC8qIFRoZSBhc3NlbWJseSBkZXBlbmRzIG9uIHRoZXNlIGV4YWN0IGZsYWdzLiAgKi8KICAgRkxBR19SRVRVUk5TX1NNU1QJPSAxIDw8ICgzMS0zMSksIC8qIFVzZWQgZm9yIEZGSV9TWVNWIHNtYWxsIHN0cnVjdHMuICAqLwogICBGTEFHX1JFVFVSTlNfTk9USElORyAgPSAxIDw8ICgzMS0zMCksIC8qIFRoZXNlIGdvIGluIGNyNyAqLworI2lmbmRlZiBfX05PX0ZQUlNfXwogICBGTEFHX1JFVFVSTlNfRlAgICAgICAgPSAxIDw8ICgzMS0yOSksCisjZW5kaWYKICAgRkxBR19SRVRVUk5TXzY0QklUUyAgID0gMSA8PCAoMzEtMjgpLAogCiAgIEZMQUdfUkVUVVJOU18xMjhCSVRTICA9IDEgPDwgKDMxLTI3KSwgLyogY3I2ICAqLwotICBGTEFHX1NZU1ZfU01TVF9SNCAgICAgPSAxIDw8ICgzMS0yNiksIC8qIHVzZSByNCBmb3IgRkZJX1NZU1YgOCBieXRlCi0JCQkJCSAgIHN0cnVjdHMuICAqLwotICBGTEFHX1NZU1ZfU01TVF9SMyAgICAgPSAxIDw8ICgzMS0yNSksIC8qIHVzZSByMyBmb3IgRkZJX1NZU1YgNCBieXRlCi0JCQkJCSAgIHN0cnVjdHMuICAqLwotICAvKiBCaXRzICgzMS0yNCkgdGhyb3VnaCAoMzEtMTkpIHN0b3JlIHNoaWZ0IHZhbHVlIGZvciBTTVNUICovCiAKICAgRkxBR19BUkdfTkVFRFNfQ09QWSAgID0gMSA8PCAoMzEtIDcpLAorI2lmbmRlZiBfX05PX0ZQUlNfXwogICBGTEFHX0ZQX0FSR1VNRU5UUyAgICAgPSAxIDw8ICgzMS0gNiksIC8qIGNyMS5lcTsgc3BlY2lmaWVkIGJ5IEFCSSAqLworI2VuZGlmCiAgIEZMQUdfNF9HUFJfQVJHVU1FTlRTICA9IDEgPDwgKDMxLSA1KSwKICAgRkxBR19SRVRWQUxfUkVGRVJFTkNFID0gMSA8PCAoMzEtIDQpCiB9OwogCiAvKiBBYm91dCB0aGUgU1lTViBBQkkuICAqLwotdW5zaWduZWQgaW50IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyA9IDg7CisjZGVmaW5lIEFTTV9ORUVEU19SRUdJU1RFUlMgNAorI2RlZmluZSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgOAogI2lmbmRlZiBfX05PX0ZQUlNfXwotdW5zaWduZWQgaW50IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDg7Ci0jZWxzZQotdW5zaWduZWQgaW50IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDA7CisjIGRlZmluZSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgOAogI2VuZGlmCiAKLWVudW0geyBBU01fTkVFRFNfUkVHSVNURVJTID0gNCB9OwotCiAvKiBmZmlfcHJlcF9hcmdzX1NZU1YgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKICAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgogCkBAIC0xMTMsMTAgKzExMSwxMiBAQAogICB2YWxwIGdwcl9iYXNlOwogICBpbnQgaW50YXJnX2NvdW50OwogCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIC8qICdmcHJfYmFzZScgcG9pbnRzIGF0IHRoZSBzcGFjZSBmb3IgZnByMSwgYW5kIGdyb3dzIHVwd2FyZHMgYXMKICAgICAgd2UgdXNlIEZQUiByZWdpc3RlcnMuICAqLwogICB2YWxwIGZwcl9iYXNlOwogICBpbnQgZnBhcmdfY291bnQ7CisjZW5kaWYKIAogICAvKiAnY29weV9zcGFjZScgZ3Jvd3MgZG93biBhcyB3ZSBwdXQgc3RydWN0dXJlcyBpbiBpdC4gIEl0IHNob3VsZAogICAgICBzdGF5IDE2LWJ5dGUgYWxpZ25lZC4gICovCkBAIC0xMjUsOSArMTI1LDggQEAKICAgLyogJ25leHRfYXJnJyBncm93cyB1cCBhcyB3ZSBwdXQgcGFyYW1ldGVycyBpbiBpdC4gICovCiAgIHZhbHAgbmV4dF9hcmc7CiAKLSAgaW50IGksIGlpIE1BWUJFX1VOVVNFRDsKKyAgaW50IGk7CiAgIGZmaV90eXBlICoqcHRyOwotICBkb3VibGUgZG91YmxlX3RtcDsKICAgdW5pb24gewogICAgIHZvaWQgKip2OwogICAgIGNoYXIgKipjOwpAQCAtMTQzLDIxICsxNDIsMjMgQEAKICAgc2l6ZV90IHN0cnVjdF9jb3B5X3NpemU7CiAgIHVuc2lnbmVkIGdwcnZhbHVlOwogCi0gIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSAgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAwOwotCiAgIHN0YWNrdG9wLmMgPSAoY2hhciAqKSBzdGFjayArIGJ5dGVzOwogICBncHJfYmFzZS51ID0gc3RhY2t0b3AudSAtIEFTTV9ORUVEU19SRUdJU1RFUlMgLSBOVU1fR1BSX0FSR19SRUdJU1RFUlM7CiAgIGludGFyZ19jb3VudCA9IDA7CisjaWZuZGVmIF9fTk9fRlBSU19fCisgIGRvdWJsZSBkb3VibGVfdG1wOwogICBmcHJfYmFzZS5kID0gZ3ByX2Jhc2UuZCAtIE5VTV9GUFJfQVJHX1JFR0lTVEVSUzsKICAgZnBhcmdfY291bnQgPSAwOwogICBjb3B5X3NwYWNlLmMgPSAoKGZsYWdzICYgRkxBR19GUF9BUkdVTUVOVFMpID8gZnByX2Jhc2UuYyA6IGdwcl9iYXNlLmMpOworI2Vsc2UKKyAgY29weV9zcGFjZS5jID0gZ3ByX2Jhc2UuYzsKKyNlbmRpZgogICBuZXh0X2FyZy51ID0gc3RhY2sgKyAyOwogCiAgIC8qIENoZWNrIHRoYXQgZXZlcnl0aGluZyBzdGFydHMgYWxpZ25lZCBwcm9wZXJseS4gICovCi0gIEZGSV9BU1NFUlQgKCgodW5zaWduZWQpIChjaGFyICopIHN0YWNrICYgMHhGKSA9PSAwKTsKLSAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCkgY29weV9zcGFjZS5jICYgMHhGKSA9PSAwKTsKLSAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCkgc3RhY2t0b3AuYyAmIDB4RikgPT0gMCk7CisgIEZGSV9BU1NFUlQgKCgodW5zaWduZWQgbG9uZykgKGNoYXIgKikgc3RhY2sgJiAweEYpID09IDApOworICBGRklfQVNTRVJUICgoKHVuc2lnbmVkIGxvbmcpIGNvcHlfc3BhY2UuYyAmIDB4RikgPT0gMCk7CisgIEZGSV9BU1NFUlQgKCgodW5zaWduZWQgbG9uZykgc3RhY2t0b3AuYyAmIDB4RikgPT0gMCk7CiAgIEZGSV9BU1NFUlQgKChieXRlcyAmIDB4RikgPT0gMCk7CiAgIEZGSV9BU1NFUlQgKGNvcHlfc3BhY2UuYyA+PSBuZXh0X2FyZy5jKTsKIApAQCAtMTc0LDEyICsxNzUsMjggQEAKICAgICAgICBpID4gMDsKICAgICAgICBpLS0sIHB0cisrLCBwX2FyZ3YudisrKQogICAgIHsKLSAgICAgIHN3aXRjaCAoKCpwdHIpLT50eXBlKQotCXsKKyAgICAgIHVuc2lnbmVkIHNob3J0IHR5cGVudW0gPSAoKnB0ciktPnR5cGU7CisKKyAgICAgIC8qIFdlIG1heSBuZWVkIHRvIGhhbmRsZSBzb21lIHZhbHVlcyBkZXBlbmRpbmcgb24gQUJJICovCisgICAgICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgICAgICB9IGVsc2UgaWYgKGVjaWYtPmNpZi0+YWJpICE9IEZGSV9MSU5VWCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgICAgICB9CisKKyAgICAgIC8qIE5vdyB0ZXN0IHRoZSB0cmFuc2xhdGVkIHZhbHVlICovCisgICAgICBzd2l0Y2ggKHR5cGVudW0pIHsKKyNpZm5kZWYgX19OT19GUFJTX18KIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIuICAqLwotCSAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZmxvYXRfcHJlcDsKIAkgIGRvdWJsZV90bXAgPSAqKnBfYXJndi5mOwogCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgewpAQCAtMTk1LDggKzIxMiw2IEBACiAKIAljYXNlIEZGSV9UWVBFX0RPVUJMRToKIAkgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQ2NC4gICovCi0JICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gc29mdF9kb3VibGVfcHJlcDsKIAkgIGRvdWJsZV90bXAgPSAqKnBfYXJndi5kOwogCiAJICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQpAQCAtMjE4LDQzICsyMzMsNiBAQAogCiAjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0JICBpZiAoKGVjaWYtPmNpZi0+YWJpICE9IEZGSV9MSU5VWCkKLQkJJiYgKGVjaWYtPmNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSkKLQkgICAgZ290byBkb19zdHJ1Y3Q7Ci0JICAvKiBUaGUgc29mdCBmbG9hdCBBQkkgZm9yIGxvbmcgZG91YmxlcyB3b3JrcyBsaWtlIHRoaXMsCi0JICAgICBhIGxvbmcgZG91YmxlIGlzIHBhc3NlZCBpbiBmb3VyIGNvbnNlY3V0aXZlIGdwcnMgaWYgYXZhaWxhYmxlLgotCSAgICAgQSBtYXhpbXVtIG9mIDIgbG9uZyBkb3VibGVzIGNhbiBiZSBwYXNzZWQgaW4gZ3Bycy4KLQkgICAgIElmIHdlIGRvIG5vdCBoYXZlIDQgZ3BycyBsZWZ0LCB0aGUgbG9uZyBkb3VibGUgaXMgcGFzc2VkIG9uIHRoZQotCSAgICAgc3RhY2ssIDQtYnl0ZSBhbGlnbmVkLiAgKi8KLQkgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgewotCSAgICAgIHVuc2lnbmVkIGludCBpbnRfdG1wID0gKCpwX2FyZ3YudWkpWzBdOwotCSAgICAgIGlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMykKLQkJewotCQkgIGlmIChpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCi0JCSAgICBpbnRhcmdfY291bnQgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gaW50YXJnX2NvdW50OwotCQkgICpuZXh0X2FyZy51ID0gaW50X3RtcDsKLQkJICBuZXh0X2FyZy51Kys7Ci0JCSAgZm9yIChpaSA9IDE7IGlpIDwgNDsgaWkrKykKLQkJICAgIHsKLQkJICAgICAgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07Ci0JCSAgICAgICpuZXh0X2FyZy51ID0gaW50X3RtcDsKLQkJICAgICAgbmV4dF9hcmcudSsrOwotCQkgICAgfQotCQl9Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAgKmdwcl9iYXNlLnUrKyA9IGludF90bXA7Ci0JCSAgZm9yIChpaSA9IDE7IGlpIDwgNDsgaWkrKykKLQkJICAgIHsKLQkJICAgICAgaW50X3RtcCA9ICgqcF9hcmd2LnVpKVtpaV07Ci0JCSAgICAgICpncHJfYmFzZS51KysgPSBpbnRfdG1wOwotCQkgICAgfQotCQl9Ci0JICAgICAgaW50YXJnX2NvdW50ICs9NDsKLQkgICAgfQotCSAgZWxzZQotCSAgICB7CiAJICAgICAgZG91YmxlX3RtcCA9ICgqcF9hcmd2LmQpWzBdOwogCiAJICAgICAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAtIDEpCkBAIC0yODAsMTMgKzI1OCw0MCBAQAogCiAJICAgICAgZnBhcmdfY291bnQgKz0gMjsKIAkgICAgICBGRklfQVNTRVJUIChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKLQkgICAgfQogCSAgYnJlYWs7CiAjZW5kaWYKKyNlbmRpZiAvKiBoYXZlIEZQUnMgKi8KKworCS8qCisJICogVGhlIHNvZnQgZmxvYXQgQUJJIGZvciBsb25nIGRvdWJsZXMgd29ya3MgbGlrZSB0aGlzLCBhIGxvbmcgZG91YmxlCisJICogaXMgcGFzc2VkIGluIGZvdXIgY29uc2VjdXRpdmUgR1BScyBpZiBhdmFpbGFibGUuICBBIG1heGltdW0gb2YgMgorCSAqIGxvbmcgZG91YmxlcyBjYW4gYmUgcGFzc2VkIGluIGdwcnMuICBJZiB3ZSBkbyBub3QgaGF2ZSA0IEdQUnMKKwkgKiBsZWZ0LCB0aGUgbG9uZyBkb3VibGUgaXMgcGFzc2VkIG9uIHRoZSBzdGFjaywgNC1ieXRlIGFsaWduZWQuCisJICovCisJY2FzZSBGRklfVFlQRV9VSU5UMTI4OiB7CisJCXVuc2lnbmVkIGludCBpbnRfdG1wID0gKCpwX2FyZ3YudWkpWzBdOworCQl1bnNpZ25lZCBpbnQgaWk7CisJCWlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMykgeworCQkJaWYgKGludGFyZ19jb3VudCA8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKKwkJCQlpbnRhcmdfY291bnQgKz0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gaW50YXJnX2NvdW50OworCQkJKihuZXh0X2FyZy51KyspID0gaW50X3RtcDsKKwkJCWZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspIHsKKwkJCQlpbnRfdG1wID0gKCpwX2FyZ3YudWkpW2lpXTsKKwkJCQkqKG5leHRfYXJnLnUrKykgPSBpbnRfdG1wOworCQkJfQorCQl9IGVsc2UgeworCQkJKihncHJfYmFzZS51KyspID0gaW50X3RtcDsKKwkJCWZvciAoaWkgPSAxOyBpaSA8IDQ7IGlpKyspIHsKKwkJCQlpbnRfdG1wID0gKCpwX2FyZ3YudWkpW2lpXTsKKwkJCQkqKGdwcl9iYXNlLnUrKykgPSBpbnRfdG1wOworCQkJfQorCQl9CisJCWludGFyZ19jb3VudCArPSA0OworCQlicmVhazsKKwl9CiAKIAljYXNlIEZGSV9UWVBFX1VJTlQ2NDoKIAljYXNlIEZGSV9UWVBFX1NJTlQ2NDoKLQlzb2Z0X2RvdWJsZV9wcmVwOgogCSAgaWYgKGludGFyZ19jb3VudCA9PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMtMSkKIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICBpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKQEAgLTMxOSw5ICszMjQsNiBAQAogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWRvX3N0cnVjdDoKLSNlbmRpZgogCSAgc3RydWN0X2NvcHlfc2l6ZSA9ICgoKnB0ciktPnNpemUgKyAxNSkgJiB+MHhGOwogCSAgY29weV9zcGFjZS5jIC09IHN0cnVjdF9jb3B5X3NpemU7CiAJICBtZW1jcHkgKGNvcHlfc3BhY2UuYywgKnBfYXJndi5jLCAoKnB0ciktPnNpemUpOwpAQCAtMzQ5LDcgKzM1MSw2IEBACiAJY2FzZSBGRklfVFlQRV9VSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9TSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgotCXNvZnRfZmxvYXRfcHJlcDoKIAogCSAgZ3BydmFsdWUgPSAqKnBfYXJndi51aTsKIApAQCAtMzY2LDggKzM2NywxMCBAQAogICAvKiBDaGVjayB0aGF0IHdlIGRpZG4ndCBvdmVycnVuIHRoZSBzdGFjay4uLiAgKi8KICAgRkZJX0FTU0VSVCAoY29weV9zcGFjZS5jID49IG5leHRfYXJnLmMpOwogICBGRklfQVNTRVJUIChncHJfYmFzZS51IDw9IHN0YWNrdG9wLnUgLSBBU01fTkVFRFNfUkVHSVNURVJTKTsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgRkZJX0FTU0VSVCAoZnByX2Jhc2UudQogCSAgICAgIDw9IHN0YWNrdG9wLnUgLSBBU01fTkVFRFNfUkVHSVNURVJTIC0gTlVNX0dQUl9BUkdfUkVHSVNURVJTKTsKKyNlbmRpZgogICBGRklfQVNTRVJUIChmbGFncyAmIEZMQUdfNF9HUFJfQVJHVU1FTlRTIHx8IGludGFyZ19jb3VudCA8PSA0KTsKIH0KIApAQCAtNjA0LDkgKzYwNyw2IEBACiAgIHVuc2lnbmVkIHR5cGUgPSBjaWYtPnJ0eXBlLT50eXBlOwogICB1bnNpZ25lZCBzaXplID0gY2lmLT5ydHlwZS0+c2l6ZTsKIAotICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMDsKLQogICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpCiAgICAgewogICAgICAgLyogQWxsIHRoZSBtYWNoaW5lLWluZGVwZW5kZW50IGNhbGN1bGF0aW9uIG9mIGNpZi0+Ynl0ZXMgd2lsbCBiZSB3cm9uZy4KQEAgLTY0Niw2MiArNjQ2LDU2IEBACiAgICAgIC0gU2luZ2xlL2RvdWJsZSBGUCB2YWx1ZXMgaW4gZnByMSwgbG9uZyBkb3VibGUgaW4gZnByMSxmcHIyLgogICAgICAtIHNvZnQtZmxvYXQgZmxvYXQvZG91YmxlcyBhcmUgdHJlYXRlZCBhcyBVSU5UMzIvVUlOVDY0IHJlc3BlY3RpdmxleS4KICAgICAgLSBzb2Z0LWZsb2F0IGxvbmcgZG91YmxlcyBhcmUgcmV0dXJuZWQgaW4gZ3ByMy1ncHI2LiAgKi8KKyAgLyogRmlyc3QgdHJhbnNsYXRlIGZvciBzb2Z0ZmxvYXQvbm9ubGludXggKi8KKyAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfRkxPQVQpCisJCXR5cGUgPSBGRklfVFlQRV9VSU5UMzI7CisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCQl0eXBlID0gRkZJX1RZUEVfVUlOVDY0OworCWlmICh0eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXR5cGUgPSBGRklfVFlQRV9VSU5UMTI4OworICB9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJdHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorICB9CisKICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLSAgICAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQKLQkmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQlnb3RvIGJ5cmVmOwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzEyOEJJVFM7CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotI2VuZGlmCiAgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfNjRCSVRTOwogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgotICAgICAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBubyBmcCByZWdpc3RlcnMgYXJlIHVzZWQuICAqLwotICAgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCWZsYWdzIHw9IEZMQUdfUkVUVVJOU19GUDsKKyAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19GUDsKICAgICAgIGJyZWFrOworI2VuZGlmCiAKKyAgICBjYXNlIEZGSV9UWVBFX1VJTlQxMjg6CisgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfMTI4QklUUzsKKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCiAgICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfNjRCSVRTOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTVikKLQl7Ci0JICAvKiBUaGUgZmluYWwgU1lTViBBQkkgc2F5cyB0aGF0IHN0cnVjdHVyZXMgc21hbGxlciBvciBlcXVhbCA4IGJ5dGVzCi0JICAgICBhcmUgcmV0dXJuZWQgaW4gcjMvcjQuIFRoZSBGRklfR0NDX1NZU1YgQUJJIGluc3RlYWQgcmV0dXJucyB0aGVtCi0JICAgICBpbiBtZW1vcnkuICAqLwotCi0JICAvKiBUcmVhdCBzdHJ1Y3RzIHdpdGggc2l6ZSA8PSA4IGJ5dGVzLiAgKi8KLQkgIGlmIChzaXplIDw9IDgpCi0JICAgIHsKLQkgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfU01TVDsKLQkgICAgICAvKiBUaGVzZSBzdHJ1Y3RzIGFyZSByZXR1cm5lZCBpbiByMy4gV2UgcGFjayB0aGUgdHlwZSBhbmQgdGhlCi0JCSBwcmVjYWxjdWxhdGVkIHNoaWZ0IHZhbHVlIChuZWVkZWQgaW4gdGhlIHN5c3YuUykgaW50byBmbGFncy4KLQkJIFRoZSBzYW1lIGFwcGxpZXMgZm9yIHRoZSBzdHJ1Y3RzIHJldHVybmVkIGluIHIzL3I0LiAgKi8KLQkgICAgICBpZiAoc2l6ZSA8PSA0KQotCQl7Ci0JCSAgZmxhZ3MgfD0gRkxBR19TWVNWX1NNU1RfUjM7Ci0JCSAgZmxhZ3MgfD0gOCAqICg0IC0gc2l6ZSkgPDwgODsKLQkJICBicmVhazsKLQkJfQotCSAgICAgIC8qIFRoZXNlIHN0cnVjdHMgYXJlIHJldHVybmVkIGluIHIzIGFuZCByNC4gU2VlIGFib3ZlLiAgICovCi0JICAgICAgaWYgIChzaXplIDw9IDgpCi0JCXsKLQkJICBmbGFncyB8PSBGTEFHX1NZU1ZfU01TVF9SMyB8IEZMQUdfU1lTVl9TTVNUX1I0OwotCQkgIGZsYWdzIHw9IDggKiAoOCAtIHNpemUpIDw8IDg7Ci0JCSAgYnJlYWs7Ci0JCX0KLQkgICAgfQotCX0KLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotICAgIGJ5cmVmOgotI2VuZGlmCisgICAgICAvKgorICAgICAgICogVGhlIGZpbmFsIFNZU1YgQUJJIHNheXMgdGhhdCBzdHJ1Y3R1cmVzIHNtYWxsZXIgb3IgZXF1YWwgOCBieXRlcworICAgICAgICogYXJlIHJldHVybmVkIGluIHIzL3I0LiBUaGUgRkZJX0dDQ19TWVNWIEFCSSBpbnN0ZWFkIHJldHVybnMgdGhlbQorICAgICAgICogaW4gbWVtb3J5LgorICAgICAgICoKKyAgICAgICAqIE5PVEU6IFRoZSBhc3NlbWJseSBjb2RlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgaXQganVzdCBuZWVkcyB0bworICAgICAgICogICAgICAgc3RvcmUgYm90aCByMyBhbmQgcjQgaW50byBhIDgtYnl0ZSB3b3JkLWFsaWduZWQgYnVmZmVyLCBhcworICAgICAgICogICAgICAgd2UgYWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIGluIGZmaV9jYWxsKCkgaWYgdGhpcyBmbGFnIGlzCisgICAgICAgKiAgICAgICBzZXQuCisgICAgICAgKi8KKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTViAmJiBzaXplIDw9IDgpCisJZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NNU1Q7CiAgICAgICBpbnRhcmdfY291bnQrKzsKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCkBAIC03MjIsMzkgKzcxNiwzNiBAQAogICAgICAgIFN0dWZmIG9uIHRoZSBzdGFjayBuZWVkcyB0byBrZWVwIHByb3BlciBhbGlnbm1lbnQuICAqLwogICAgIGZvciAocHRyID0gY2lmLT5hcmdfdHlwZXMsIGkgPSBjaWYtPm5hcmdzOyBpID4gMDsgaS0tLCBwdHIrKykKICAgICAgIHsKLQlzd2l0Y2ggKCgqcHRyKS0+dHlwZSkKLQkgIHsKKwl1bnNpZ25lZCBzaG9ydCB0eXBlbnVtID0gKCpwdHIpLT50eXBlOworCisJLyogV2UgbWF5IG5lZWQgdG8gaGFuZGxlIHNvbWUgdmFsdWVzIGRlcGVuZGluZyBvbiBBQkkgKi8KKwlpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisJfSBlbHNlIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorCX0KKworCXN3aXRjaCAodHlwZW51bSkgeworI2lmbmRlZiBfX05PX0ZQUlNfXwogCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKLQkgICAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIuICAqLwotCSAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgZ290byBzb2Z0X2Zsb2F0X2NpZjsKIAkgICAgZnBhcmdfY291bnQrKzsKIAkgICAgLyogZmxvYXRpbmcgc2luZ2xlcyBhcmUgbm90IDgtYWxpZ25lZCBvbiBzdGFjayAqLwogCSAgICBicmVhazsKIAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCiAJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0JICAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgICAgZ290byBkb19zdHJ1Y3Q7Ci0JICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgICB7Ci0JCWlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMwotCQkgIHx8IGludGFyZ19jb3VudCA8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKLQkJICAvKiBBIGxvbmcgZG91YmxlIGluIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGNhbiB1c2Ugb25seQotCQkgICAgIGEgc2V0IG9mIGZvdXIgY29uc2VjdXRpdmUgZ3Bycy4gSWYgd2UgaGF2ZSBub3QgZW5vdWdoLAotCQkgICAgIHdlIGhhdmUgdG8gYWRqdXN0IHRoZSBpbnRhcmdfY291bnQgdmFsdWUuICAqLwotCQkgIGludGFyZ19jb3VudCArPSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSBpbnRhcmdfY291bnQ7Ci0JCWludGFyZ19jb3VudCArPSA0OwotCQlicmVhazsKLQkgICAgICB9Ci0JICAgIGVsc2UKLQkgICAgICBmcGFyZ19jb3VudCsrOworCSAgICBmcGFyZ19jb3VudCsrOwogCSAgICAvKiBGYWxsIHRocnUgKi8KICNlbmRpZgogCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0JICAgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQ2NC4gICovCi0JICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgICBnb3RvIHNvZnRfZG91YmxlX2NpZjsKIAkgICAgZnBhcmdfY291bnQrKzsKIAkgICAgLyogSWYgdGhpcyBGUCBhcmcgaXMgZ29pbmcgb24gdGhlIHN0YWNrLCBpdCBtdXN0IGJlCiAJICAgICAgIDgtYnl0ZS1hbGlnbmVkLiAgKi8KQEAgLTc2MywxMCArNzU0LDIxIEBACiAJCSYmIGludGFyZ19jb3VudCAlIDIgIT0gMCkKIAkgICAgICBpbnRhcmdfY291bnQrKzsKIAkgICAgYnJlYWs7CisjZW5kaWYKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDEyODoKKwkJLyoKKwkJICogQSBsb25nIGRvdWJsZSBpbiBGRklfTElOVVhfU09GVF9GTE9BVCBjYW4gdXNlIG9ubHkgYSBzZXQKKwkJICogb2YgZm91ciBjb25zZWN1dGl2ZSBncHJzLiBJZiB3ZSBkbyBub3QgaGF2ZSBlbm91Z2gsIHdlCisJCSAqIGhhdmUgdG8gYWRqdXN0IHRoZSBpbnRhcmdfY291bnQgdmFsdWUuCisJCSAqLworCQlpZiAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIDMKKwkJCQkmJiBpbnRhcmdfY291bnQgPCBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCisJCQlpbnRhcmdfY291bnQgPSBOVU1fR1BSX0FSR19SRUdJU1RFUlM7CisJCWludGFyZ19jb3VudCArPSA0OworCQlicmVhazsKIAogCSAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAJICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKLQkgIHNvZnRfZG91YmxlX2NpZjoKIAkgICAgLyogJ2xvbmcgbG9uZycgYXJndW1lbnRzIGFyZSBwYXNzZWQgYXMgdHdvIHdvcmRzLCBidXQKIAkgICAgICAgZWl0aGVyIGJvdGggd29yZHMgbXVzdCBmaXQgaW4gcmVnaXN0ZXJzIG9yIGJvdGggZ28KIAkgICAgICAgb24gdGhlIHN0YWNrLiAgSWYgdGhleSBnbyBvbiB0aGUgc3RhY2ssIHRoZXkgbXVzdApAQCAtNzgzLDkgKzc4NSw2IEBACiAJICAgIGJyZWFrOwogCiAJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCSAgZG9fc3RydWN0OgotI2VuZGlmCiAJICAgIC8qIFdlIG11c3QgYWxsb2NhdGUgc3BhY2UgZm9yIGEgY29weSBvZiB0aGVzZSB0byBlbmZvcmNlCiAJICAgICAgIHBhc3MtYnktdmFsdWUuICBQYWQgdGhlIHNwYWNlIHVwIHRvIGEgbXVsdGlwbGUgb2YgMTYKIAkgICAgICAgYnl0ZXMgKHRoZSBtYXhpbXVtIGFsaWdubWVudCByZXF1aXJlZCBmb3IgYW55dGhpbmcgdW5kZXIKQEAgLTc5MywxMiArNzkyLDIwIEBACiAJICAgIHN0cnVjdF9jb3B5X3NpemUgKz0gKCgqcHRyKS0+c2l6ZSArIDE1KSAmIH4weEY7CiAJICAgIC8qIEZhbGwgdGhyb3VnaCAoYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBwb2ludGVyKS4gICovCiAKLQkgIGRlZmF1bHQ6Ci0JICBzb2Z0X2Zsb2F0X2NpZjoKKwkgIGNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKKwkgIGNhc2UgRkZJX1RZUEVfSU5UOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMTY6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UODoKIAkgICAgLyogRXZlcnl0aGluZyBlbHNlIGlzIHBhc3NlZCBhcyBhIDQtYnl0ZSB3b3JkIGluIGEgR1BSLCBlaXRoZXIKIAkgICAgICAgdGhlIG9iamVjdCBpdHNlbGYgb3IgYSBwb2ludGVyIHRvIGl0LiAgKi8KIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkJRkZJX0FTU0VSVCAoMCk7CiAJICB9CiAgICAgICB9CiAgIGVsc2UKQEAgLTgyNywxNiArODM0LDI5IEBACiAJICAgIGludGFyZ19jb3VudCArPSAoKCpwdHIpLT5zaXplICsgNykgLyA4OwogCSAgICBicmVhazsKIAotCSAgZGVmYXVsdDoKKwkgIGNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDY0OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6CisJICBjYXNlIEZGSV9UWVBFX0lOVDoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9VSU5UODoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJICAgIC8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBwYXNzZWQgYXMgYSA4LWJ5dGUgd29yZCBpbiBhIEdQUiwgZWl0aGVyCiAJICAgICAgIHRoZSBvYmplY3QgaXRzZWxmIG9yIGEgcG9pbnRlciB0byBpdC4gICovCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJCUZGSV9BU1NFUlQgKDApOwogCSAgfQogICAgICAgfQogCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogICAgIGZsYWdzIHw9IEZMQUdfRlBfQVJHVU1FTlRTOworI2VuZGlmCiAgIGlmIChpbnRhcmdfY291bnQgPiA0KQogICAgIGZsYWdzIHw9IEZMQUdfNF9HUFJfQVJHVU1FTlRTOwogICBpZiAoc3RydWN0X2NvcHlfc2l6ZSAhPSAwKQpAQCAtODQ0LDIxICs4NjQsMjcgQEAKIAogICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpCiAgICAgeworI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgICAgLyogU3BhY2UgZm9yIHRoZSBGUFIgcmVnaXN0ZXJzLCBpZiBuZWVkZWQuICAqLwogICAgICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAJYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mIChkb3VibGUpOworI2VuZGlmCiAKICAgICAgIC8qIFN0YWNrIHNwYWNlLiAgKi8KICAgICAgIGlmIChpbnRhcmdfY291bnQgPiBOVU1fR1BSX0FSR19SRUdJU1RFUlMpCiAJYnl0ZXMgKz0gKGludGFyZ19jb3VudCAtIE5VTV9HUFJfQVJHX1JFR0lTVEVSUykgKiBzaXplb2YgKGludCk7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgICBpZiAoZnBhcmdfY291bnQgPiBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJYnl0ZXMgKz0gKGZwYXJnX2NvdW50IC0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKSAqIHNpemVvZiAoZG91YmxlKTsKKyNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICAgIC8qIFNwYWNlIGZvciB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkLiAgKi8KICAgICAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogCWJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUzY0ICogc2l6ZW9mIChkb3VibGUpOworI2VuZGlmCiAKICAgICAgIC8qIFN0YWNrIHNwYWNlLiAgKi8KICAgICAgIGlmIChpbnRhcmdfY291bnQgPiBOVU1fR1BSX0FSR19SRUdJU1RFUlM2NCkKQEAgLTg4NiwyOCArOTEyLDQxIEBACiB2b2lkCiBmZmlfY2FsbChmZmlfY2lmICpjaWYsIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKnJ2YWx1ZSwgdm9pZCAqKmF2YWx1ZSkKIHsKKyAgLyoKKyAgICogVGhlIGZpbmFsIFNZU1YgQUJJIHNheXMgdGhhdCBzdHJ1Y3R1cmVzIHNtYWxsZXIgb3IgZXF1YWwgOCBieXRlcworICAgKiBhcmUgcmV0dXJuZWQgaW4gcjMvcjQuIFRoZSBGRklfR0NDX1NZU1YgQUJJIGluc3RlYWQgcmV0dXJucyB0aGVtCisgICAqIGluIG1lbW9yeS4KKyAgICoKKyAgICogSnVzdCB0byBrZWVwIHRoaW5ncyBzaW1wbGUgZm9yIHRoZSBhc3NlbWJseSBjb2RlLCB3ZSB3aWxsIGFsd2F5cworICAgKiBib3VuY2UtYnVmZmVyIHN0cnVjdCByZXR1cm4gdmFsdWVzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA4IGJ5dGVzLgorICAgKiBUaGlzIGFsbG93cyB0aGUgQVNNIHRvIGhhbmRsZSBTWVNWIHNtYWxsIHN0cnVjdHVyZXMgYnkgZGlyZWN0bHkKKyAgICogd3JpdGluZyByMyBhbmQgcjQgdG8gbWVtb3J5IHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgc3RydWN0IHNpemUuCisgICAqLworICB1bnNpZ25lZCBpbnQgc21zdF9idWZmZXJbMl07CiAgIGV4dGVuZGVkX2NpZiBlY2lmOworICB1bnNpZ25lZCBpbnQgcnNpemUgPSAwOwogCiAgIGVjaWYuY2lmID0gY2lmOwogICBlY2lmLmF2YWx1ZSA9IGF2YWx1ZTsKIAotICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0IGFuZCB3ZSBkb24ndCBoYXZlIGEgcmV0dXJuCSovCi0gIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugb25lCQkgICAgICAgICovCi0KLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSkKLSAgICB7Ci0gICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKLSAgICB9Ci0gIGVsc2UKLSAgICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKLQorICAvKiBFbnN1cmUgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgc3RydWN0IHJldHVybiB2YWx1ZSAqLworICBlY2lmLnJ2YWx1ZSA9IHJ2YWx1ZTsKKyAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSB7CisgICAgcnNpemUgPSBjaWYtPnJ0eXBlLT5zaXplOworICAgIGlmIChyc2l6ZSA8PSA4KQorICAgICAgZWNpZi5ydmFsdWUgPSBzbXN0X2J1ZmZlcjsKKyAgICBlbHNlIGlmICghcnZhbHVlKQorICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EocnNpemUpOworICB9CiAKICAgc3dpdGNoIChjaWYtPmFiaSkKICAgICB7CiAjaWZuZGVmIFBPV0VSUEM2NAorIyBpZm5kZWYgX19OT19GUFJTX18KICAgICBjYXNlIEZGSV9TWVNWOgogICAgIGNhc2UgRkZJX0dDQ19TWVNWOgogICAgIGNhc2UgRkZJX0xJTlVYOgorIyBlbmRpZgogICAgIGNhc2UgRkZJX0xJTlVYX1NPRlRfRkxPQVQ6CiAgICAgICBmZmlfY2FsbF9TWVNWICgmZWNpZiwgLWNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7CiAgICAgICBicmVhazsKQEAgLTkyMCw2ICs5NTksMTAgQEAKICAgICAgIEZGSV9BU1NFUlQgKDApOwogICAgICAgYnJlYWs7CiAgICAgfQorCisgIC8qIENoZWNrIGZvciBhIGJvdW5jZS1idWZmZXJlZCByZXR1cm4gdmFsdWUgKi8KKyAgaWYgKHJ2YWx1ZSAmJiBlY2lmLnJ2YWx1ZSA9PSBzbXN0X2J1ZmZlcikKKyAgICBtZW1jcHkocnZhbHVlLCBzbXN0X2J1ZmZlciwgcnNpemUpOwogfQogCiAKQEAgLTk0OSwxNCArOTkyLDE5IEBACiAjaWZkZWYgUE9XRVJQQzY0CiAgIHZvaWQgKip0cmFtcCA9ICh2b2lkICoqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYNjQpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICAvKiBDb3B5IGZ1bmN0aW9uIGFkZHJlc3MgYW5kIFRPQyBmcm9tIGZmaV9jbG9zdXJlX0xJTlVYNjQuICAqLwogICBtZW1jcHkgKHRyYW1wLCAoY2hhciAqKSBmZmlfY2xvc3VyZV9MSU5VWDY0LCAxNik7CiAgIHRyYW1wWzJdID0gY29kZWxvYzsKICNlbHNlCiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWIHx8IGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgaWYgKCEgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTViAKKwkgfHwgY2lmLT5hYmkgPT0gRkZJX1NZU1YKKwkgfHwgY2lmLT5hYmkgPT0gRkZJX0xJTlVYCisJIHx8IGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgdHJhbXBbMF0gPSAweDdjMDgwMmE2OyAgLyogICBtZmxyICAgIHIwICovCkBAIC0xMDExLDMyICsxMDU5LDM4IEBACiAgIHZvaWQgKiogICAgICAgICAgYXZhbHVlOwogICBmZmlfdHlwZSAqKiAgICAgIGFyZ190eXBlczsKICAgbG9uZyAgICAgICAgICAgICBpLCBhdm47Ci0gIGxvbmcgICAgICAgICAgICAgbmY7ICAgLyogbnVtYmVyIG9mIGZsb2F0aW5nIHJlZ2lzdGVycyBhbHJlYWR5IHVzZWQgKi8KLSAgbG9uZyAgICAgICAgICAgICBuZzsgICAvKiBudW1iZXIgb2YgZ2VuZXJhbCByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCi0gIGZmaV9jaWYgKiAgICAgICAgY2lmOwotICBkb3VibGUgICAgICAgICAgIHRlbXA7Ci0gIHVuc2lnbmVkICAgICAgICAgc2l6ZTsKKyNpZm5kZWYgX19OT19GUFJTX18KKyAgbG9uZyAgICAgICAgICAgICBuZiA9IDA7ICAgLyogbnVtYmVyIG9mIGZsb2F0aW5nIHJlZ2lzdGVycyBhbHJlYWR5IHVzZWQgKi8KKyNlbmRpZgorICBsb25nICAgICAgICAgICAgIG5nID0gMDsgICAvKiBudW1iZXIgb2YgZ2VuZXJhbCByZWdpc3RlcnMgYWxyZWFkeSB1c2VkICovCiAKLSAgY2lmID0gY2xvc3VyZS0+Y2lmOworICBmZmlfY2lmICpjaWYgPSBjbG9zdXJlLT5jaWY7CisgIHVuc2lnbmVkICAgICAgIHNpemUgICAgID0gY2lmLT5ydHlwZS0+c2l6ZTsKKyAgdW5zaWduZWQgc2hvcnQgcnR5cGVudW0gPSBjaWYtPnJ0eXBlLT50eXBlOworCiAgIGF2YWx1ZSA9IGFsbG9jYSAoY2lmLT5uYXJncyAqIHNpemVvZiAodm9pZCAqKSk7Ci0gIHNpemUgPSBjaWYtPnJ0eXBlLT5zaXplOwogCi0gIG5mID0gMDsKLSAgbmcgPSAwOworICAvKiBGaXJzdCB0cmFuc2xhdGUgZm9yIHNvZnRmbG9hdC9ub25saW51eCAqLworICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfRkxPQVQpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDMyOworCWlmIChydHlwZW51bSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDY0OworCWlmIChydHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgIH0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwlpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJcnR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgfQorCiAKICAgLyogQ29weSB0aGUgY2FsbGVyJ3Mgc3RydWN0dXJlIHJldHVybiB2YWx1ZSBhZGRyZXNzIHNvIHRoYXQgdGhlIGNsb3N1cmUKICAgICAgcmV0dXJucyB0aGUgZGF0YSBkaXJlY3RseSB0byB0aGUgY2FsbGVyLgogICAgICBGb3IgRkZJX1NZU1YgdGhlIHJlc3VsdCBpcyBwYXNzZWQgaW4gcjMvcjQgaWYgdGhlIHN0cnVjdCBzaXplIGlzIGxlc3MKICAgICAgb3IgZXF1YWwgOCBieXRlcy4gICovCi0KLSAgaWYgKChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgICYmICEoKGNpZi0+YWJpID09IEZGSV9TWVNWKSAmJiAoc2l6ZSA8PSA4KSkpCi0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgICAgIHx8IChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSNlbmRpZgotICAgICAgKQotICAgIHsKKyAgaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX1NUUlVDVCAmJiAoKGNpZi0+YWJpICE9IEZGSV9TWVNWKSB8fCAoc2l6ZSA+IDgpKSkgewogICAgICAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKICAgICAgIG5nKys7CiAgICAgICBwZ3IrKzsKQEAgLTEwNDcsMTAgKzExMDEsMTA5IEBACiAgIGFyZ190eXBlcyA9IGNpZi0+YXJnX3R5cGVzOwogCiAgIC8qIEdyYWIgdGhlIGFkZHJlc3NlcyBvZiB0aGUgYXJndW1lbnRzIGZyb20gdGhlIHN0YWNrIGZyYW1lLiAgKi8KLSAgd2hpbGUgKGkgPCBhdm4pCi0gICAgewotICAgICAgc3dpdGNoIChhcmdfdHlwZXNbaV0tPnR5cGUpCi0JeworICB3aGlsZSAoaSA8IGF2bikgeworICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZW51bSA9IGFyZ190eXBlc1tpXS0+dHlwZTsKKworICAgICAgLyogV2UgbWF5IG5lZWQgdG8gaGFuZGxlIHNvbWUgdmFsdWVzIGRlcGVuZGluZyBvbiBBQkkgKi8KKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9GTE9BVCkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMzI7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UNjQ7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDEyODsKKyAgICAgIH0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgICAgIH0KKworICAgICAgc3dpdGNoICh0eXBlbnVtKSB7CisjaWZuZGVmIF9fTk9fRlBSU19fCisJY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgIC8qIHVuZm9ydHVuYXRlbHkgZmxvYXQgdmFsdWVzIGFyZSBzdG9yZWQgYXMgZG91YmxlcworCSAgICogaW4gdGhlIGZmaV9jbG9zdXJlX1NZU1YgY29kZSAoc2luY2Ugd2UgZG9uJ3QgY2hlY2sKKwkgICAqIHRoZSB0eXBlIGluIHRoYXQgcm91dGluZSkuCisJICAgKi8KKworCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCisKKwkgIGlmIChuZiA8IDgpCisJICAgIHsKKwkgICAgICBkb3VibGUgdGVtcCA9IHBmci0+ZDsKKwkgICAgICBwZnItPmYgPSAoZmxvYXQpIHRlbXA7CisJICAgICAgYXZhbHVlW2ldID0gcGZyOworCSAgICAgIG5mKys7CisJICAgICAgcGZyKys7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIEZJWE1FPyBoZXJlIHdlIGFyZSByZWFsbHkgY2hhbmdpbmcgdGhlIHZhbHVlcworCSAgICAgICAqIHN0b3JlZCBpbiB0aGUgb3JpZ2luYWwgY2FsbGluZyByb3V0aW5lcyBvdXRnb2luZworCSAgICAgICAqIHBhcmFtZXRlciBzdGFjay4gIFRoaXMgaXMgcHJvYmFibHkgYSByZWFsbHkKKwkgICAgICAgKiBuYXVnaHR5IHRoaW5nIHRvIGRvIGJ1dC4uLgorCSAgICAgICAqLworCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKKwkgICAgICBwc3QgKz0gMTsKKwkgICAgfQorCSAgYnJlYWs7CisKKwljYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgIC8qIE9uIHRoZSBvdXRnb2luZyBzdGFjayBhbGwgdmFsdWVzIGFyZSBhbGlnbmVkIHRvIDggKi8KKwkgIC8qIHRoZXJlIGFyZSA4IDY0Yml0IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAqLworCisJICBpZiAobmYgPCA4KQorCSAgICB7CisJICAgICAgYXZhbHVlW2ldID0gcGZyOworCSAgICAgIG5mKys7CisJICAgICAgcGZyKys7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmICgoKGxvbmcpIHBzdCkgJiA0KQorCQlwc3QrKzsKKwkgICAgICBhdmFsdWVbaV0gPSBwc3Q7CisJICAgICAgcHN0ICs9IDI7CisJICAgIH0KKwkgIGJyZWFrOworCisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICBpZiAobmYgPCA3KQorCSAgICB7CisJICAgICAgYXZhbHVlW2ldID0gcGZyOworCSAgICAgIHBmciArPSAyOworCSAgICAgIG5mICs9IDI7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIGlmICgoKGxvbmcpIHBzdCkgJiA0KQorCQlwc3QrKzsKKwkgICAgICBhdmFsdWVbaV0gPSBwc3Q7CisJICAgICAgcHN0ICs9IDQ7CisJICAgICAgbmYgPSA4OworCSAgICB9CisJICBicmVhazsKKyNlbmRpZgorI2VuZGlmIC8qIGhhdmUgRlBSUyAqLworCisJY2FzZSBGRklfVFlQRV9VSU5UMTI4OgorCQkvKgorCQkgKiBUZXN0IGlmIGZvciB0aGUgd2hvbGUgbG9uZyBkb3VibGUsIDQgZ3BycyBhcmUgYXZhaWxhYmxlLgorCQkgKiBvdGhlcndpc2UgdGhlIHN0dWZmIGVuZHMgdXAgb24gdGhlIHN0YWNrLgorCQkgKi8KKwkJaWYgKG5nIDwgNSkgeworCQkJYXZhbHVlW2ldID0gcGdyOworCQkJcGdyICs9IDQ7CisJCQluZyArPSA0OworCQl9IGVsc2UgeworCQkJYXZhbHVlW2ldID0gcHN0OworCQkJcHN0ICs9IDQ7CisJCQluZyA9IDgrNDsKKwkJfQorCQlicmVhazsKKwogCWNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJY2FzZSBGRklfVFlQRV9VSU5UODoKIAkgIC8qIHRoZXJlIGFyZSA4IGdwciByZWdpc3RlcnMgdXNlZCB0byBwYXNzIHZhbHVlcyAqLwpAQCAtMTA4Niw3ICsxMjM5LDYgQEAKIAljYXNlIEZGSV9UWVBFX1NJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1VJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6Ci0Jc29mdF9mbG9hdF9jbG9zdXJlOgogCSAgLyogdGhlcmUgYXJlIDggZ3ByIHJlZ2lzdGVycyB1c2VkIHRvIHBhc3MgdmFsdWVzICovCiAJICBpZiAobmcgPCA4KQogCSAgICB7CkBAIC0xMTAyLDkgKzEyNTQsNiBAQAogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotCWRvX3N0cnVjdDoKLSNlbmRpZgogCSAgLyogU3RydWN0cyBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZS4gVGhlIGFkZHJlc3Mgd2lsbCBhcHBlYXIgaW4gYQogCSAgICAgZ3ByIGlmIGl0IGlzIG9uZSBvZiB0aGUgZmlyc3QgOCBhcmd1bWVudHMuICAqLwogCSAgaWYgKG5nIDwgOCkKQEAgLTExMjIsNyArMTI3MSw2IEBACiAKIAljYXNlIEZGSV9UWVBFX1NJTlQ2NDoKIAljYXNlIEZGSV9UWVBFX1VJTlQ2NDoKLQlzb2Z0X2RvdWJsZV9jbG9zdXJlOgogCSAgLyogcGFzc2luZyBsb25nIGxvbmcgaW50cyBhcmUgY29tcGxleCwgdGhleSBtdXN0CiAJICAgKiBiZSBwYXNzZWQgaW4gc3VpdGFibGUgcmVnaXN0ZXIgcGFpcnMgc3VjaCBhcwogCSAgICogKHIzLHI0KSBvciAocjUscjYpIG9yIChyNixyNyksIG9yIChyNyxyOCkgb3IgKHI5LHIxMCkKQEAgLTExNTQsOTkgKzEzMDIsOCBAQAogCSAgICB9CiAJICBicmVhazsKIAotCWNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0JICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGZsb2F0cyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQzMi4gICovCi0JICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gc29mdF9mbG9hdF9jbG9zdXJlOwotCSAgLyogdW5mb3J0dW5hdGVseSBmbG9hdCB2YWx1ZXMgYXJlIHN0b3JlZCBhcyBkb3VibGVzCi0JICAgKiBpbiB0aGUgZmZpX2Nsb3N1cmVfU1lTViBjb2RlIChzaW5jZSB3ZSBkb24ndCBjaGVjawotCSAgICogdGhlIHR5cGUgaW4gdGhhdCByb3V0aW5lKS4KLQkgICAqLwotCi0JICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KLQotCSAgaWYgKG5mIDwgOCkKLQkgICAgewotCSAgICAgIHRlbXAgPSBwZnItPmQ7Ci0JICAgICAgcGZyLT5mID0gKGZsb2F0KSB0ZW1wOwotCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKLQkgICAgICBuZisrOwotCSAgICAgIHBmcisrOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICAvKiBGSVhNRT8gaGVyZSB3ZSBhcmUgcmVhbGx5IGNoYW5naW5nIHRoZSB2YWx1ZXMKLQkgICAgICAgKiBzdG9yZWQgaW4gdGhlIG9yaWdpbmFsIGNhbGxpbmcgcm91dGluZXMgb3V0Z29pbmcKLQkgICAgICAgKiBwYXJhbWV0ZXIgc3RhY2suICBUaGlzIGlzIHByb2JhYmx5IGEgcmVhbGx5Ci0JICAgICAgICogbmF1Z2h0eSB0aGluZyB0byBkbyBidXQuLi4KLQkgICAgICAgKi8KLQkgICAgICBhdmFsdWVbaV0gPSBwc3Q7Ci0JICAgICAgcHN0ICs9IDE7Ci0JICAgIH0KLQkgIGJyZWFrOwotCi0JY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0JICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UNjQuICAqLwotCSAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIHNvZnRfZG91YmxlX2Nsb3N1cmU7Ci0JICAvKiBPbiB0aGUgb3V0Z29pbmcgc3RhY2sgYWxsIHZhbHVlcyBhcmUgYWxpZ25lZCB0byA4ICovCi0JICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KLQotCSAgaWYgKG5mIDwgOCkKLQkgICAgewotCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKLQkgICAgICBuZisrOwotCSAgICAgIHBmcisrOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKLQkJcHN0Kys7Ci0JICAgICAgYXZhbHVlW2ldID0gcHN0OwotCSAgICAgIHBzdCArPSAyOwotCSAgICB9Ci0JICBicmVhazsKLQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBkb19zdHJ1Y3Q7Ci0JICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIHsgLyogVGVzdCBpZiBmb3IgdGhlIHdob2xlIGxvbmcgZG91YmxlLCA0IGdwcnMgYXJlIGF2YWlsYWJsZS4KLQkJIG90aGVyd2lzZSB0aGUgc3R1ZmYgZW5kcyB1cCBvbiB0aGUgc3RhY2suICAqLwotCSAgICAgIGlmIChuZyA8IDUpCi0JCXsKLQkJICBhdmFsdWVbaV0gPSBwZ3I7Ci0JCSAgcGdyICs9IDQ7Ci0JCSAgbmcgKz0gNDsKLQkJfQotCSAgICAgIGVsc2UKLQkJewotCQkgIGF2YWx1ZVtpXSA9IHBzdDsKLQkJICBwc3QgKz0gNDsKLQkJICBuZyA9IDg7Ci0JCX0KLQkgICAgICBicmVhazsKLQkgICAgfQotCSAgaWYgKG5mIDwgNykKLQkgICAgewotCSAgICAgIGF2YWx1ZVtpXSA9IHBmcjsKLQkgICAgICBwZnIgKz0gMjsKLQkgICAgICBuZiArPSAyOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBpZiAoKChsb25nKSBwc3QpICYgNCkKLQkJcHN0Kys7Ci0JICAgICAgYXZhbHVlW2ldID0gcHN0OwotCSAgICAgIHBzdCArPSA0OwotCSAgICAgIG5mID0gODsKLQkgICAgfQotCSAgYnJlYWs7Ci0jZW5kaWYKLQogCWRlZmF1bHQ6Ci0JICBGRklfQVNTRVJUICgwKTsKKwkJRkZJX0FTU0VSVCAoMCk7CiAJfQogCiAgICAgICBpKys7CkBAIC0xMjYzLDM5ICsxMzIwLDkgQEAKICAgICAgYWxyZWFkeSB1c2VkIGFuZCB3ZSBuZXZlciBoYXZlIGEgc3RydWN0IHdpdGggc2l6ZSB6ZXJvLiBUaGF0IGlzIHRoZSByZWFzb24KICAgICAgZm9yIHRoZSBzdWJ0cmFjdGlvbiBvZiAxLiBTZWUgdGhlIGNvbW1lbnQgaW4gZmZpdGFyZ2V0LmggYWJvdXQgb3JkZXJpbmcuCiAgICovCi0gIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTViAmJiBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgJiYgc2l6ZSA8PSA4KQorICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YgJiYgcnR5cGVudW0gPT0gRkZJX1RZUEVfU1RSVUNUICYmIHNpemUgPD0gOCkKICAgICByZXR1cm4gKEZGSV9TWVNWX1RZUEVfU01BTExfU1RSVUNUIC0gMSkgKyBzaXplOwotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gIGVsc2UgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotCSAgICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSAgICByZXR1cm4gRkZJX1RZUEVfU1RSVUNUOwotI2VuZGlmCi0gIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFuZCBkb3VibGVzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyCi0gICAgIHJlc3BlY3RpdmxleSBVSU5UNjQuICAqLwotICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0gICAgewotICAgICAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQotCXsKLQljYXNlIEZGSV9UWVBFX0ZMT0FUOgotCSAgcmV0dXJuIEZGSV9UWVBFX1VJTlQzMjsKLQkgIGJyZWFrOwotCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgotCSAgcmV0dXJuIEZGSV9UWVBFX1VJTlQ2NDsKLQkgIGJyZWFrOwotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotCSAgcmV0dXJuIEZGSV9UWVBFX1VJTlQxMjg7Ci0JICBicmVhazsKLSNlbmRpZgotCWRlZmF1bHQ6Ci0JICByZXR1cm4gY2lmLT5ydHlwZS0+dHlwZTsKLQl9Ci0gICAgfQotICBlbHNlCi0gICAgewotICAgICAgcmV0dXJuIGNpZi0+cnR5cGUtPnR5cGU7Ci0gICAgfQorICByZXR1cm4gcnR5cGVudW07CiB9CiAKIGludCBGRklfSElEREVOIGZmaV9jbG9zdXJlX2hlbHBlcl9MSU5VWDY0IChmZmlfY2xvc3VyZSAqLCB2b2lkICosCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jCmluZGV4IGQ4NGYxYzMuLmRkODk3ZjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jCkBAIC0zLDcgKzMsNyBAQAogCiAgICBDb3B5cmlnaHQgKEMpIDE5OTggR2VvZmZyZXkgS2VhdGluZwogICAgQ29weXJpZ2h0IChDKSAyMDAxIEpvaG4gSG9ybmt2aXN0Ci0gICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDYsIDIwMDcsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIEZGSSBzdXBwb3J0IGZvciBEYXJ3aW4gYW5kIEFJWC4KICAgIApAQCAtMzUsMTEgKzM1LDE3IEBACiBleHRlcm4gdm9pZCBmZmlfY2xvc3VyZV9BU00gKHZvaWQpOwogCiBlbnVtIHsKLSAgLyogVGhlIGFzc2VtYmx5IGRlcGVuZHMgb24gdGhlc2UgZXhhY3QgZmxhZ3MuICAqLwotICBGTEFHX1JFVFVSTlNfTk9USElORyAgPSAxIDw8ICgzMS0zMCksIC8qIFRoZXNlIGdvIGluIGNyNyAgKi8KLSAgRkxBR19SRVRVUk5TX0ZQICAgICAgID0gMSA8PCAoMzEtMjkpLAotICBGTEFHX1JFVFVSTlNfNjRCSVRTICAgPSAxIDw8ICgzMS0yOCksCi0gIEZMQUdfUkVUVVJOU18xMjhCSVRTICA9IDEgPDwgKDMxLTMxKSwKKyAgLyogVGhlIGFzc2VtYmx5IGRlcGVuZHMgb24gdGhlc2UgZXhhY3QgZmxhZ3MuICAKKyAgICAgRm9yIERhcndpbjY0ICh3aGVuIEZMQUdfUkVUVVJOU19TVFJVQ1QgaXMgc2V0KToKKyAgICAgICBGTEFHX1JFVFVSTlNfRlAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0cnVjdHVyZSBlbWJlZHMgRlAgZGF0YS4KKyAgICAgICBGTEFHX1JFVFVSTlNfMTI4QklUUyBzaWduYWxzIGEgc3BlY2lhbCBzdHJ1Y3Qgc2l6ZSB0aGF0IGlzIG5vdAorICAgICAgIGV4cGFuZGVkIGZvciBmbG9hdCBjb250ZW50LiAgKi8KKyAgRkxBR19SRVRVUk5TXzEyOEJJVFMJPSAxIDw8ICgzMS0zMSksIC8qIFRoZXNlIGdvIGluIGNyNyAgKi8KKyAgRkxBR19SRVRVUk5TX05PVEhJTkcJPSAxIDw8ICgzMS0zMCksCisgIEZMQUdfUkVUVVJOU19GUAk9IDEgPDwgKDMxLTI5KSwKKyAgRkxBR19SRVRVUk5TXzY0QklUUwk9IDEgPDwgKDMxLTI4KSwKKworICBGTEFHX1JFVFVSTlNfU1RSVUNUCT0gMSA8PCAoMzEtMjcpLCAvKiBUaGlzIGdvZXMgaW4gY3I2ICAqLwogCiAgIEZMQUdfQVJHX05FRURTX0NPUFkgICA9IDEgPDwgKDMxLSA3KSwKICAgRkxBR19GUF9BUkdVTUVOVFMgICAgID0gMSA8PCAoMzEtIDYpLCAvKiBjcjEuZXE7IHNwZWNpZmllZCBieSBBQkkgICovCkBAIC01MCw0MyArNTYsNjEgQEAKIC8qIEFib3V0IHRoZSBEQVJXSU4gQUJJLiAgKi8KIGVudW0gewogICBOVU1fR1BSX0FSR19SRUdJU1RFUlMgPSA4LAotICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAxMworICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAxMywKKyAgTElOS0FHRV9BUkVBX0dQUlMgPSA2CiB9OwotZW51bSB7IEFTTV9ORUVEU19SRUdJU1RFUlMgPSA0IH07CisKK2VudW0geyBBU01fTkVFRFNfUkVHSVNURVJTID0gNCB9OyAvKiByMjgtcjMxICovCiAKIC8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKICAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgorICAgCisgICBtMzIvbTY0CiAKICAgIFRoZSBzdGFjayBsYXlvdXQgd2Ugd2FudCBsb29rcyBsaWtlIHRoaXM6CiAKICAgIHwgICBSZXR1cm4gYWRkcmVzcyBmcm9tIGZmaV9jYWxsX0RBUldJTiAgICAgIHwJaGlnaGVyIGFkZHJlc3NlcwogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICAgfCAgIFByZXZpb3VzIGJhY2tjaGFpbiBwb2ludGVyCTQJfAlzdGFjayBwb2ludGVyIGhlcmUKKyAgIHwgICBQcmV2aW91cyBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfAlzdGFjayBwb2ludGVyIGhlcmUKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXw8KyA8PDwJb24gZW50cnkgdG8KLSAgIHwgICBTYXZlZCByMjgtcjMxCQkJNCo0CXwgfAlmZmlfY2FsbF9EQVJXSU4KKyAgIHwgICBBU01fTkVFRFNfUkVHSVNURVJTPXIyOC1yMzEgICA0Kig0LzgpCXwgfAlmZmlfY2FsbF9EQVJXSU4KICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAotICAgfCAgIFBhcmFtZXRlcnMgICAgICAgICAgICAgKGF0IGxlYXN0IDgqND0zMikgfCB8CisgICB8ICAgV2hlbiB3ZSBoYXZlIGFueSBGUCBhY3Rpdml0eS4uLiB0aGUJfCB8CisgICB8ICAgRlBScyBvY2N1cHkgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIHNsb3RzCXwgfAorICAgfCAgIGhlcmUgZnAxMyAuLiBmcDEgZnJvbSBoaWdoIHRvIGxvdyBhZGRyLgl8IHwKKyAgIH4JCQkJCQl+IH4KKyAgIHwgICBQYXJhbWV0ZXJzICAgICAgKGF0IGxlYXN0IDgqNC84PTMyLzY0KQl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKLSAgIHwgICBTcGFjZSBmb3IgR1BSMiAgICAgICAgICAgICAgICAgICA0ICAgICAgIHwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlzdGFjawl8Ci0gICB8ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIDIqNCAgICAgICB8IHwJZ3Jvd3MJfAorICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQvOAl8IHwJZ3Jvd3MJfAogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWRvd24JVgotICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNAl8IHwKKyAgIHwgICBTcGFjZSBmb3IgY2FsbGVlJ3MgTFIJCTQvOAl8IHwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlsb3dlciBhZGRyZXNzZXMKLSAgIHwgICBTYXZlZCBDUiAgICAgICAgICAgICAgICAgICAgICAgICA0ICAgICAgIHwgfAorICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfCAgICAgc3RhY2sgcG9pbnRlciBoZXJlCi0gICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0CXwtLwlkdXJpbmcKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8JZHVyaW5nCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18ICAgPDw8CWZmaV9jYWxsX0RBUldJTgogCiAgICAqLwogCisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorc3RhdGljIHZvaWQKK2RhcndpbjY0X3Bhc3Nfc3RydWN0X2J5X3ZhbHVlIAorICAoZmZpX3R5cGUgKiwgY2hhciAqLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgZG91YmxlICoqLCB1bnNpZ25lZCBsb25nICoqKTsKKyNlbmRpZgorCisvKiBUaGlzIGRlcGVuZHMgb24gR1BSX1NJWkUgPSBzaXplb2YgKHVuc2lnbmVkIGxvbmcpICovCisKIHZvaWQKIGZmaV9wcmVwX2FyZ3MgKGV4dGVuZGVkX2NpZiAqZWNpZiwgdW5zaWduZWQgbG9uZyAqY29uc3Qgc3RhY2spCiB7CiAgIGNvbnN0IHVuc2lnbmVkIGJ5dGVzID0gZWNpZi0+Y2lmLT5ieXRlczsKICAgY29uc3QgdW5zaWduZWQgZmxhZ3MgPSBlY2lmLT5jaWYtPmZsYWdzOwogICBjb25zdCB1bnNpZ25lZCBuYXJncyA9IGVjaWYtPmNpZi0+bmFyZ3M7CisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkgCiAgIGNvbnN0IGZmaV9hYmkgYWJpID0gZWNpZi0+Y2lmLT5hYmk7CisjZW5kaWYKIAogICAvKiAnc3RhY2t0b3AnIHBvaW50cyBhdCB0aGUgcHJldmlvdXMgYmFja2NoYWluIHBvaW50ZXIuICAqLwogICB1bnNpZ25lZCBsb25nICpjb25zdCBzdGFja3RvcCA9IHN0YWNrICsgKGJ5dGVzIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKQEAgLTk0LDE4ICsxMTgsMTkgQEAKICAgLyogJ2Zwcl9iYXNlJyBwb2ludHMgYXQgdGhlIHNwYWNlIGZvciBmcHIxLCBhbmQgZ3Jvd3MgdXB3YXJkcyBhcwogICAgICB3ZSB1c2UgRlBSIHJlZ2lzdGVycy4gICovCiAgIGRvdWJsZSAqZnByX2Jhc2UgPSAoZG91YmxlICopIChzdGFja3RvcCAtIEFTTV9ORUVEU19SRUdJU1RFUlMpIC0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTOwotICBpbnQgZnBhcmdfY291bnQgPSAwOwotCisgIGludCBncF9jb3VudCA9IDAsIGZwYXJnX2NvdW50ID0gMDsKIAogICAvKiAnbmV4dF9hcmcnIGdyb3dzIHVwIGFzIHdlIHB1dCBwYXJhbWV0ZXJzIGluIGl0LiAgKi8KLSAgdW5zaWduZWQgbG9uZyAqbmV4dF9hcmcgPSBzdGFjayArIDY7IC8qIDYgcmVzZXJ2ZWQgcG9zaXRpb25zLiAgKi8KKyAgdW5zaWduZWQgbG9uZyAqbmV4dF9hcmcgPSBzdGFjayArIExJTktBR0VfQVJFQV9HUFJTOyAvKiA2IHJlc2VydmVkIHBvc2l0aW9ucy4gICovCiAKICAgaW50IGk7CiAgIGRvdWJsZSBkb3VibGVfdG1wOwogICB2b2lkICoqcF9hcmd2ID0gZWNpZi0+YXZhbHVlOwogICB1bnNpZ25lZCBsb25nIGdwcnZhbHVlOwogICBmZmlfdHlwZSoqIHB0ciA9IGVjaWYtPmNpZi0+YXJnX3R5cGVzOworI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpIAogICBjaGFyICpkZXN0X2NweTsKKyNlbmRpZgogICB1bnNpZ25lZCBzaXplX2FsID0gMDsKIAogICAvKiBDaGVjayB0aGF0IGV2ZXJ5dGhpbmcgc3RhcnRzIGFsaWduZWQgcHJvcGVybHkuICAqLwpAQCAtMTMwLDI1ICsxNTUsMzAgQEAKIAkgICB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmctcG9pbnQgcGFyYW1ldGVyIGFyZSBza2lwcGVkLiAgKi8KIAljYXNlIEZGSV9UWVBFX0ZMT0FUOgogCSAgZG91YmxlX3RtcCA9ICooZmxvYXQgKikgKnBfYXJndjsKLQkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCi0JICAgICooZG91YmxlICopbmV4dF9hcmcgPSBkb3VibGVfdG1wOwotCSAgZWxzZQorCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTikKKwkgICooZmxvYXQgKiluZXh0X2FyZyA9ICooZmxvYXQgKikgKnBfYXJndjsKKyNlbHNlCisJICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKKyNlbmRpZgogCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CiAJICBmcGFyZ19jb3VudCsrOwogCSAgRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICBkb3VibGVfdG1wID0gKihkb3VibGUgKikgKnBfYXJndjsKLQkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCi0JICAgICooZG91YmxlICopbmV4dF9hcmcgPSBkb3VibGVfdG1wOwotCSAgZWxzZQorCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqZnByX2Jhc2UrKyA9IGRvdWJsZV90bXA7CisJICAqKGRvdWJsZSAqKW5leHRfYXJnID0gZG91YmxlX3RtcDsKICNpZmRlZiBQT1dFUlBDNjQKIAkgIG5leHRfYXJnKys7CisJICBncF9jb3VudCsrOwogI2Vsc2UKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOwogI2VuZGlmCiAJICBmcGFyZ19jb3VudCsrOwogCSAgRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKQEAgLTE1NywzMCArMTg3LDQxIEBACiAjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKIAogCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLSNpZmRlZiBQT1dFUlBDNjQKKyMgIGlmIGRlZmluZWQoUE9XRVJQQzY0KSAmJiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgLyogPz8/IFRoaXMgd2lsbCBleGNlZWQgdGhlIHJlZ3MgY291bnQgd2hlbiB0aGUgdmFsdWUgc3RhcnRzIGF0IGZwMTMKKwkgICAgIGFuZCBpdCB3aWxsIG5vdCBwdXQgdGhlIGV4dHJhIGJpdCBvbiB0aGUgc3RhY2suICAqLwogCSAgaWYgKGZwYXJnX2NvdW50IDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICAqKGxvbmcgZG91YmxlICopIGZwcl9iYXNlKysgPSAqKGxvbmcgZG91YmxlICopICpwX2FyZ3Y7CiAJICBlbHNlCiAJICAgICoobG9uZyBkb3VibGUgKikgbmV4dF9hcmcgPSAqKGxvbmcgZG91YmxlICopICpwX2FyZ3Y7CiAJICBuZXh0X2FyZyArPSAyOwogCSAgZnBhcmdfY291bnQgKz0gMjsKLSNlbHNlCisjICBlbHNlCiAJICBkb3VibGVfdG1wID0gKChkb3VibGUgKikgKnBfYXJndilbMF07CiAJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICpmcHJfYmFzZSsrID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKLQkgICAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworCSAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworIyAgICBpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKKyMgICAgZWxzZQogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CisjICAgIGVuZGlmCiAJICBmcGFyZ19jb3VudCsrOwotCiAJICBkb3VibGVfdG1wID0gKChkb3VibGUgKikgKnBfYXJndilbMV07CiAJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICpmcHJfYmFzZSsrID0gZG91YmxlX3RtcDsKLQkgIGVsc2UKLQkgICAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworCSAgKihkb3VibGUgKikgbmV4dF9hcmcgPSBkb3VibGVfdG1wOworIyAgICBpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKKyMgICAgZWxzZQogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CisjICAgIGVuZGlmCiAJICBmcGFyZ19jb3VudCsrOwotI2VuZGlmCisjICBlbmRpZgogCSAgRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfRlBfQVJHVU1FTlRTKTsKIAkgIGJyZWFrOwogI2VuZGlmCkBAIC0xOTIsNiArMjMzLDcgQEAKICNlbHNlCiAJICAqKGxvbmcgbG9uZyAqKSBuZXh0X2FyZyA9ICoobG9uZyBsb25nICopICpwX2FyZ3Y7CiAJICBuZXh0X2FyZyArPSAyOworCSAgZ3BfY291bnQgKz0gMjsKICNlbmRpZgogCSAgYnJlYWs7CiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgpAQCAtMjExLDMyICsyNTMsMzUgQEAKIAkgIGdvdG8gcHV0Z3ByOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWZkZWYgUE9XRVJQQzY0Ci0JICBkZXN0X2NweSA9IChjaGFyICopIG5leHRfYXJnOwogCSAgc2l6ZV9hbCA9ICgqcHRyKS0+c2l6ZTsKLQkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IDMpCi0JICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOwotCSAgaWYgKHNpemVfYWwgPCAzICYmIGFiaSA9PSBGRklfREFSV0lOKQotCSAgICBkZXN0X2NweSArPSA0IC0gc2l6ZV9hbDsKLQotCSAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgKGNoYXIgKikgKnBfYXJndiwgc2l6ZV9hbCk7Ci0JICBuZXh0X2FyZyArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBuZXh0X2FyZyA9ICh1bnNpZ25lZCBsb25nICopQUxJR04oKGNoYXIgKiluZXh0X2FyZywgKCpwdHIpLT5hbGlnbm1lbnQpOworCSAgZGFyd2luNjRfcGFzc19zdHJ1Y3RfYnlfdmFsdWUgKCpwdHIsIChjaGFyICopICpwX2FyZ3YsIAorCQkJCQkgKHVuc2lnbmVkKSBzaXplX2FsLAorCQkJCQkgKHVuc2lnbmVkIGludCAqKSAmZnBhcmdfY291bnQsCisJCQkJCSAmZnByX2Jhc2UsICZuZXh0X2FyZyk7CiAjZWxzZQogCSAgZGVzdF9jcHkgPSAoY2hhciAqKSBuZXh0X2FyZzsKIAorCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGluY2x1ZGUgZW5vdWdoCisJICAgICBwYWRkaW5nIGluIHRoZSBzdHJ1Y3Qgc2l6ZSB0byBhbGlnbiBpdCB0byBkb3VibGUtd29yZC4gICovCisJICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOworCisjICBpZiBkZWZpbmVkKFBPV0VSUEM2NCkgCisJICBGRklfQVNTRVJUIChhYmkgIT0gRkZJX0RBUldJTik7CisJICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCAoY2hhciAqKSAqcF9hcmd2LCBzaXplX2FsKTsKKwkgIG5leHRfYXJnICs9IChzaXplX2FsICsgNykgLyA4OworIyAgZWxzZQogCSAgLyogU3RydWN0dXJlcyB0aGF0IG1hdGNoIHRoZSBiYXNpYyBtb2RlcyAoUUkgMSBieXRlLCBISSAyIGJ5dGVzLAogCSAgICAgU0kgNCBieXRlcykgYXJlIGFsaWduZWQgYXMgaWYgdGhleSB3ZXJlIHRob3NlIG1vZGVzLgogCSAgICAgU3RydWN0dXJlcyB3aXRoIDMgYnl0ZSBpbiBzaXplIGFyZSBwYWRkZWQgdXB3YXJkcy4gICovCi0JICBzaXplX2FsID0gKCpwdHIpLT5zaXplOwotCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGFsaWduCi0JICAgICB0aGUgc3RydWN0IHRvIGRvdWJsZS13b3JkLiAgKi8KLQkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKLQkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7CiAJICBpZiAoc2l6ZV9hbCA8IDMgJiYgYWJpID09IEZGSV9EQVJXSU4pCiAJICAgIGRlc3RfY3B5ICs9IDQgLSBzaXplX2FsOwogCiAJICBtZW1jcHkoKGNoYXIgKikgZGVzdF9jcHksIChjaGFyICopICpwX2FyZ3YsIHNpemVfYWwpOwogCSAgbmV4dF9hcmcgKz0gKHNpemVfYWwgKyAzKSAvIDQ7CisjICBlbmRpZgogI2VuZGlmCiAJICBicmVhazsKIApAQCAtMjQ5LDYgKzI5NCw3IEBACiAJICBncHJ2YWx1ZSA9ICoodW5zaWduZWQgaW50ICopICpwX2FyZ3Y7CiAJcHV0Z3ByOgogCSAgKm5leHRfYXJnKysgPSBncHJ2YWx1ZTsKKwkgIGdwX2NvdW50Kys7CiAJICBicmVhazsKIAlkZWZhdWx0OgogCSAgYnJlYWs7CkBAIC0yNjIsOCArMzA4LDI2OSBAQAogICAvL0ZGSV9BU1NFUlQoZmxhZ3MgJiBGTEFHXzRfR1BSX0FSR1VNRU5UUyB8fCBpbnRhcmdfY291bnQgPD0gNCk7CiB9CiAKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisKKy8qIFNlZSBpZiB3ZSBjYW4gcHV0IHNvbWUgb2YgdGhlIHN0cnVjdCBpbnRvIGZwcnMuCisgICBUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIGZvciBzdHJ1Y3R1cmVzIG9mIHNpemUgMTYgYnl0ZXMsIHNpbmNlIHRoZXNlIGFyZSBub3QKKyAgIGJyb2tlbiBvdXQgdGhpcyB3YXkuICAqLworc3RhdGljIHZvaWQKK2RhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKGZmaV90eXBlICpzLCB1bnNpZ25lZCAqbmZwcikKK3sKKyAgaW50IGk7CisKKyAgRkZJX0FTU0VSVCAocy0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisKKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKHAsIG5mcHIpOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgKCpuZnByKSArPSAyOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgfQorfQorCitzdGF0aWMgaW50CitkYXJ3aW42NF9zdHJ1Y3Rfc2l6ZV9leGNlZWRzX2dwcnNfcCAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgdW5zaWduZWQgKm5mcHIpCit7CisgIHVuc2lnbmVkIHN0cnVjdF9vZmZzZXQ9MCwgaTsKKworICBmb3IgKGkgPSAwOyBzLT5lbGVtZW50c1tpXSAhPSBOVUxMOyBpKyspCisgICAgeworICAgICAgY2hhciAqaXRlbV9iYXNlOworICAgICAgZmZpX3R5cGUgKnAgPSBzLT5lbGVtZW50c1tpXTsKKyAgICAgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoaXMgaXRlbSAoMCBmb3IgdGhlIGZpcnN0IG9uZSkuICAqLworICAgICAgaWYgKGkgPiAwKQorICAgICAgICBzdHJ1Y3Rfb2Zmc2V0ID0gQUxJR04oc3RydWN0X29mZnNldCwgcC0+YWxpZ25tZW50KTsKKworICAgICAgaXRlbV9iYXNlID0gc3JjICsgc3RydWN0X29mZnNldDsKKworICAgICAgc3dpdGNoIChwLT50eXBlKQorCXsKKwkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorCSAgICBpZiAoZGFyd2luNjRfc3RydWN0X3NpemVfZXhjZWVkc19ncHJzX3AgKHAsIGl0ZW1fYmFzZSwgbmZwcikpCisJICAgICAgcmV0dXJuIDE7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgICBpZiAoKm5mcHIgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHJldHVybiAxOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGl0ZW1fYmFzZSArPSA4OworCSAgLyogRkFMTCBUSFJPVUdIICovCisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgaWYgKCpuZnByID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICByZXR1cm4gMTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgIGlmICgqbmZwciA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgcmV0dXJuIDE7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICAvKiBJZiB3ZSB0cnkgYW5kIHBsYWNlIGFueSBpdGVtLCB0aGF0IGlzIG5vbi1mbG9hdCwgb25jZSB3ZSd2ZQorCSAgICAgICBleGNlZWRlZCB0aGUgOCBHUFIgbWFyaywgdGhlbiB3ZSBjYW4ndCBmaXQgdGhlIHN0cnVjdC4gICovCisJICAgIGlmICgodW5zaWduZWQgbG9uZylpdGVtX2Jhc2UgPj0gOCo4KSAKKwkgICAgICByZXR1cm4gMTsKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICAgIC8qIG5vdyBjb3VudCB0aGUgc2l6ZSBvZiB3aGF0IHdlIGp1c3QgdXNlZC4gICovCisgICAgICBzdHJ1Y3Rfb2Zmc2V0ICs9IHAtPnNpemU7CisgICAgfQorICByZXR1cm4gMDsKK30KKworLyogQ2FuIHRoaXMgc3RydWN0IGJlIHJldHVybmVkIGJ5IHZhbHVlPyAgKi8KK2ludCAKK2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCAoZmZpX3R5cGUgKnMpCit7CisgIHVuc2lnbmVkIG5mcCA9IDA7CisKKyAgRkZJX0FTU0VSVCAocyAmJiBzLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCk7CisgIAorICAvKiBUaGUgbGFyZ2VzdCBzdHJ1Y3R1cmUgd2UgY2FuIHJldHVybiBpcyA4bG9uZyArIDEzIGRvdWJsZXMuICAqLworICBpZiAocy0+c2l6ZSA+IDE2OCkKKyAgICByZXR1cm4gMDsKKyAgCisgIC8qIFdlIGNhbid0IHBhc3MgbW9yZSB0aGFuIDEzIGZsb2F0cy4gICovCisgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKHMsICZuZnApOworICBpZiAobmZwID4gMTMpCisgICAgcmV0dXJuIDA7CisgIAorICAvKiBJZiB0aGVyZSBhcmUgbm90IHRvbyBtYW55IGZsb2F0cywgYW5kIHRoZSBzdHJ1Y3QgaXMKKyAgICAgc21hbGwgZW5vdWdoIHRvIGFjY29tbW9kYXRlIGluIHRoZSBHUFJzLCB0aGVuIGl0IG11c3QgYmUgT0suICAqLworICBpZiAocy0+c2l6ZSA8PSA2NCkKKyAgICByZXR1cm4gMTsKKyAgCisgIC8qIFdlbGwsIHdlIGhhdmUgdG8gbG9vayBoYXJkZXIuICAqLworICBuZnAgPSAwOworICBpZiAoZGFyd2luNjRfc3RydWN0X3NpemVfZXhjZWVkc19ncHJzX3AgKHMsIE5VTEwsICZuZnApKQorICAgIHJldHVybiAwOworICAKKyAgcmV0dXJuIDE7Cit9CisKK3ZvaWQKK2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgCisJCQkgICAgIHVuc2lnbmVkICpuZnByLCBkb3VibGUgKipmcHJzKQoreworICBpbnQgaTsKKyAgZG91YmxlICpmcHJfYmFzZSA9ICpmcHJzOworICB1bnNpZ25lZCBzdHJ1Y3Rfb2Zmc2V0ID0gMDsKKworICAvKiBXZSBkb24ndCBhc3N1bWUgYW55dGhpbmcgYWJvdXQgdGhlIGFsaWdubWVudCBvZiB0aGUgc291cmNlLiAgKi8KKyAgZm9yIChpID0gMDsgcy0+ZWxlbWVudHNbaV0gIT0gTlVMTDsgaSsrKQorICAgIHsKKyAgICAgIGNoYXIgKml0ZW1fYmFzZTsKKyAgICAgIGZmaV90eXBlICpwID0gcy0+ZWxlbWVudHNbaV07CisgICAgICAvKiBGaW5kIHRoZSBzdGFydCBvZiB0aGlzIGl0ZW0gKDAgZm9yIHRoZSBmaXJzdCBvbmUpLiAgKi8KKyAgICAgIGlmIChpID4gMCkKKyAgICAgICAgc3RydWN0X29mZnNldCA9IEFMSUdOKHN0cnVjdF9vZmZzZXQsIHAtPmFsaWdubWVudCk7CisgICAgICBpdGVtX2Jhc2UgPSBzcmMgKyBzdHJ1Y3Rfb2Zmc2V0OworCisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAocCwgaXRlbV9iYXNlLCBuZnByLAorCQkJCQkgICAmZnByX2Jhc2UpOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgICAgaWYgKCpuZnByIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgICpmcHJfYmFzZSsrID0gKihkb3VibGUgKilpdGVtX2Jhc2U7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgaXRlbV9iYXNlICs9IDg7CisJICAvKiBGQUxMIFRIUk9VR0ggKi8KKwkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgICBpZiAoKm5mcHIgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgKmZwcl9iYXNlKysgPSAqKGRvdWJsZSAqKWl0ZW1fYmFzZTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgIGlmICgqbmZwciA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICAqZnByX2Jhc2UrKyA9IChkb3VibGUpICooZmxvYXQgKilpdGVtX2Jhc2U7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICBicmVhazsgICAgCisJfQorICAgICAgLyogbm93IGNvdW50IHRoZSBzaXplIG9mIHdoYXQgd2UganVzdCB1c2VkLiAgKi8KKyAgICAgIHN0cnVjdF9vZmZzZXQgKz0gcC0+c2l6ZTsKKyAgICB9CisgIC8qIFVwZGF0ZSB0aGUgc2NvcmVzLiAgKi8KKyAgKmZwcnMgPSBmcHJfYmFzZTsKK30KKworLyogRGFyd2luNjQgc3BlY2lhbCBydWxlcy4KKyAgIEJyZWFrIG91dCBhIHN0cnVjdCBpbnRvIHBhcmFtcyBhbmQgZmxvYXQgcmVnaXN0ZXJzLiAgKi8KK3N0YXRpYyB2b2lkCitkYXJ3aW42NF9wYXNzX3N0cnVjdF9ieV92YWx1ZSAoZmZpX3R5cGUgKnMsIGNoYXIgKnNyYywgdW5zaWduZWQgc2l6ZSwKKwkJCSAgICAgICB1bnNpZ25lZCAqbmZwciwgZG91YmxlICoqZnBycywgdW5zaWduZWQgbG9uZyAqKmFyZykKK3sKKyAgdW5zaWduZWQgbG9uZyAqbmV4dF9hcmcgPSAqYXJnOworICBjaGFyICpkZXN0X2NweSA9IChjaGFyICopbmV4dF9hcmc7CisKKyAgRkZJX0FTU0VSVCAocy0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisKKyAgaWYgKCFzaXplKQorICAgIHJldHVybjsKKworICAvKiBGaXJzdC4uLiBzcGVjaWFsIGNhc2VzLiAgKi8KKyAgaWYgKHNpemUgPCAzCisgICAgICB8fCAoc2l6ZSA9PSA0IAorCSAgJiYgcy0+ZWxlbWVudHNbMF0gCisJICAmJiBzLT5lbGVtZW50c1swXS0+dHlwZSAhPSBGRklfVFlQRV9GTE9BVCkpCisgICAgeworICAgICAgLyogTXVzdCBiZSBhdCBsZWFzdCBvbmUgR1BSLCBwYWRkaW5nIGlzIHVuc3BlY2lmaWVkIGluIHZhbHVlLCAKKwkgbGV0J3MgbWFrZSBpdCB6ZXJvLiAgKi8KKyAgICAgICpuZXh0X2FyZyA9IDBVTDsgCisgICAgICBkZXN0X2NweSArPSA4IC0gc2l6ZTsKKyAgICAgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIHNyYywgc2l6ZSk7CisgICAgICBuZXh0X2FyZysrOworICAgIH0KKyAgZWxzZSBpZiAoc2l6ZSA9PSAxNikKKyAgICB7CisgICAgICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCBzcmMsIHNpemUpOworICAgICAgbmV4dF9hcmcgKz0gMjsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBub3cgdGhlIGdlbmVyYWwgY2FzZSwgd2UgY29uc2lkZXIgZW1iZWRkZWQgZmxvYXRzLiAgKi8KKyAgICAgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIHNyYywgc2l6ZSk7CisgICAgICBkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKHMsIHNyYywgbmZwciwgZnBycyk7CisgICAgICBuZXh0X2FyZyArPSAoc2l6ZSs3KS84OworICAgIH0KKyAgICAKKyAgKmFyZyA9IG5leHRfYXJnOworfQorCitkb3VibGUgKgorZGFyd2luNjRfc3RydWN0X2Zsb2F0c190b19tZW0gKGZmaV90eXBlICpzLCBjaGFyICpkZXN0LCBkb3VibGUgKmZwcnMsIHVuc2lnbmVkICpuZikKK3sKKyAgaW50IGk7CisgIHVuc2lnbmVkIHN0cnVjdF9vZmZzZXQgPSAwOworCisgIC8qIFdlIGRvbid0IGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUgYWxpZ25tZW50IG9mIHRoZSBzb3VyY2UuICAqLworICBmb3IgKGkgPSAwOyBzLT5lbGVtZW50c1tpXSAhPSBOVUxMOyBpKyspCisgICAgeworICAgICAgY2hhciAqaXRlbV9iYXNlOworICAgICAgZmZpX3R5cGUgKnAgPSBzLT5lbGVtZW50c1tpXTsKKyAgICAgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoaXMgaXRlbSAoMCBmb3IgdGhlIGZpcnN0IG9uZSkuICAqLworICAgICAgaWYgKGkgPiAwKQorICAgICAgICBzdHJ1Y3Rfb2Zmc2V0ID0gQUxJR04oc3RydWN0X29mZnNldCwgcC0+YWxpZ25tZW50KTsKKyAgICAgIGl0ZW1fYmFzZSA9IGRlc3QgKyBzdHJ1Y3Rfb2Zmc2V0OworCisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGZwcnMgPSBkYXJ3aW42NF9zdHJ1Y3RfZmxvYXRzX3RvX21lbSAocCwgaXRlbV9iYXNlLCBmcHJzLCBuZik7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgICBpZiAoKm5mIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHsKKwkJKihkb3VibGUgKilpdGVtX2Jhc2UgPSAqZnBycysrIDsKKwkJKCpuZikgKz0gMTsKKwkgICAgICB9CisJICAgIGl0ZW1fYmFzZSArPSA4OworCSAgLyogRkFMTCBUSFJPVUdIICovCisJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKKwkgICAgaWYgKCpuZiA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICB7CisJCSooZG91YmxlICopaXRlbV9iYXNlID0gKmZwcnMrKyA7CisJCSgqbmYpICs9IDE7CisJICAgICAgfQorCSAgICBicmVhazsKKwkgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisJICAgIGlmICgqbmYgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgeworCQkqKGZsb2F0ICopaXRlbV9iYXNlID0gKGZsb2F0KSAqZnBycysrIDsKKwkJKCpuZikgKz0gMTsKKwkgICAgICB9CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICAgIC8qIG5vdyBjb3VudCB0aGUgc2l6ZSBvZiB3aGF0IHdlIGp1c3QgdXNlZC4gICovCisgICAgICBzdHJ1Y3Rfb2Zmc2V0ICs9IHAtPnNpemU7CisgICAgfQorICByZXR1cm4gZnByczsKK30KKworI2VuZGlmCisKIC8qIEFkanVzdCB0aGUgc2l6ZSBvZiBTIHRvIGJlIGNvcnJlY3QgZm9yIERhcndpbi4KLSAgIE9uIERhcndpbiwgdGhlIGZpcnN0IGZpZWxkIG9mIGEgc3RydWN0dXJlIGhhcyBuYXR1cmFsIGFsaWdubWVudC4gICovCisgICBPbiBEYXJ3aW4gbTMyLCB0aGUgZmlyc3QgZmllbGQgb2YgYSBzdHJ1Y3R1cmUgaGFzIG5hdHVyYWwgYWxpZ25tZW50LiAgCisgICBPbiBEYXJ3aW4gbTY0LCBhbGwgZmllbGRzIGhhdmUgbmF0dXJhbCBhbGlnbm1lbnQuICAqLwogCiBzdGF0aWMgdm9pZAogZGFyd2luX2FkanVzdF9hZ2dyZWdhdGVfc2l6ZXMgKGZmaV90eXBlICpzKQpAQCAtMjgwLDIyICs1ODcsMjkgQEAKICAgICAgIGludCBhbGlnbjsKICAgICAgIAogICAgICAgcCA9IHMtPmVsZW1lbnRzW2ldOwotICAgICAgZGFyd2luX2FkanVzdF9hZ2dyZWdhdGVfc2l6ZXMgKHApOwotICAgICAgaWYgKGkgPT0gMAotCSAgJiYgKHAtPnR5cGUgPT0gRkZJX1RZUEVfVUlOVDY0Ci0JICAgICAgfHwgcC0+dHlwZSA9PSBGRklfVFlQRV9TSU5UNjQKLQkgICAgICB8fCBwLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRQotCSAgICAgIHx8IHAtPmFsaWdubWVudCA9PSA4KSkKLQlhbGlnbiA9IDg7CisgICAgICBpZiAocC0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJZGFyd2luX2FkanVzdF9hZ2dyZWdhdGVfc2l6ZXMgKHApOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgICAgIC8qIE5hdHVyYWwgYWxpZ25tZW50IGZvciBhbGwgaXRlbXMuICAqLworICAgICAgYWxpZ24gPSBwLT5hbGlnbm1lbnQ7CisjZWxzZQorICAgICAgLyogTmF0cnVhbCBhbGlnbm1lbnQgZm9yIHRoZSBmaXJzdCBpdGVtLi4uICovCisgICAgICBpZiAoaSA9PSAwKQorCWFsaWduID0gcC0+YWxpZ25tZW50OwogICAgICAgZWxzZSBpZiAocC0+YWxpZ25tZW50ID09IDE2IHx8IHAtPmFsaWdubWVudCA8IDQpCisJLyogLi4gc3Vic2VxdWVudCBpdGVtcyB3aXRoIHZlY3RvciBvciBhbGlnbiA8IDQgaGF2ZSBuYXR1cmFsIGFsaWduLiAgKi8KIAlhbGlnbiA9IHAtPmFsaWdubWVudDsKICAgICAgIGVsc2UKKwkvKiAuLiBvciBhbGlnbiBpcyA0LiAgKi8KIAlhbGlnbiA9IDQ7CisjZW5kaWYKKyAgICAgIC8qIFBhZCwgaWYgbmVjZXNzYXJ5LCBiZWZvcmUgYWRkaW5nIHRoZSBjdXJyZW50IGl0ZW0uICAqLwogICAgICAgcy0+c2l6ZSA9IEFMSUdOKHMtPnNpemUsIGFsaWduKSArIHAtPnNpemU7CiAgICAgfQogICAKICAgcy0+c2l6ZSA9IEFMSUdOKHMtPnNpemUsIHMtPmFsaWdubWVudCk7CiAgIAorICAvKiBUaGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IG9uIG02NCwgYnV0IGhhcm1sZXNzLiAgKi8KICAgaWYgKHMtPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgfHwgcy0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfU0lOVDY0CiAgICAgICB8fCBzLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUKQEAgLTM0NCwxMCArNjU4LDEwIEBACiBmZmlfcHJlcF9jaWZfbWFjaGRlcCAoZmZpX2NpZiAqY2lmKQogewogICAvKiBBbGwgdGhpcyBpcyBmb3IgdGhlIERBUldJTiBBQkkuICAqLwotICBpbnQgaTsKKyAgdW5zaWduZWQgaTsKICAgZmZpX3R5cGUgKipwdHI7CiAgIHVuc2lnbmVkIGJ5dGVzOwotICBpbnQgZnBhcmdfY291bnQgPSAwLCBpbnRhcmdfY291bnQgPSAwOworICB1bnNpZ25lZCBmcGFyZ19jb3VudCA9IDAsIGludGFyZ19jb3VudCA9IDA7CiAgIHVuc2lnbmVkIGZsYWdzID0gMDsKICAgdW5zaWduZWQgc2l6ZV9hbCA9IDA7CiAKQEAgLTM3MiwxNiArNjg2LDI1IEBACiAgIC8qIFNwYWNlIGZvciB0aGUgZnJhbWUgcG9pbnRlciwgY2FsbGVlJ3MgTFIsIENSLCBldGMsIGFuZCBmb3IKICAgICAgdGhlIGFzbSdzIHRlbXAgcmVncy4gICovCiAKLSAgYnl0ZXMgPSAoNiArIEFTTV9ORUVEU19SRUdJU1RFUlMpICogc2l6ZW9mKGxvbmcpOworICBieXRlcyA9IChMSU5LQUdFX0FSRUFfR1BSUyArIEFTTV9ORUVEU19SRUdJU1RFUlMpICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwogCi0gIC8qIFJldHVybiB2YWx1ZSBoYW5kbGluZy4gIFRoZSBydWxlcyBhcmUgYXMgZm9sbG93czoKKyAgLyogUmV0dXJuIHZhbHVlIGhhbmRsaW5nLiAgCisgICAgVGhlIHJ1bGVzIG0zMiBhcmUgYXMgZm9sbG93czoKICAgICAgLSAzMi1iaXQgKG9yIGxlc3MpIGludGVnZXIgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBncHIzOwotICAgICAtIFN0cnVjdHVyZXMgb2Ygc2l6ZSA8PSA0IGJ5dGVzIGFsc28gcmV0dXJuZWQgaW4gZ3ByMzsKLSAgICAgLSA2NC1iaXQgaW50ZWdlciB2YWx1ZXMgYW5kIHN0cnVjdHVyZXMgYmV0d2VlbiA1IGFuZCA4IGJ5dGVzIGFyZSByZXR1cm5lZAotICAgICAgIGluIGdwcjMgYW5kIGdwcjQ7CisgICAgIC0gc3RydWN0dXJlcyBvZiBzaXplIDw9IDQgYnl0ZXMgYWxzbyByZXR1cm5lZCBpbiBncHIzOworICAgICAtIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcyBbPz8/IGFuZCBzdHJ1Y3R1cmVzIGJldHdlZW4gNSBhbmQgOCBieXRlc10gYXJlCisgICAgICAgcmV0dXJuZWQgaW4gZ3ByMyBhbmQgZ3ByNDsKICAgICAgLSBTaW5nbGUvZG91YmxlIEZQIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZnByMTsKICAgICAgLSBMb25nIGRvdWJsZSBGUCAoaWYgbm90IGVxdWl2YWxlbnQgdG8gZG91YmxlKSB2YWx1ZXMgYXJlIHJldHVybmVkIGluCiAgICAgICAgZnByMSBhbmQgZnByMjsKKyAgICAgbTY0OgorICAgICAtIDY0LWJpdCBvciBzbWFsbGVyIGludGVncmFsIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gR1BSMworICAgICAtIFNpbmdsZS9kb3VibGUgRlAgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBmcHIxOworICAgICAtIExvbmcgZG91YmxlIEZQIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4gZnByMSBhbmQgZnByMjsKKyAgICAgbTY0IFN0cnVjdHVyZXM6CisgICAgIC0gSWYgdGhlIHN0cnVjdHVyZSBjb3VsZCBiZSBhY2NvbW1vZGF0ZWQgaW4gcmVnaXN0ZXJzIHdlcmUgaXQgdG8gYmUgdGhlCisgICAgICAgZmlyc3QgYXJndW1lbnQgdG8gYSByb3V0aW5lLCB0aGVuIGl0IGlzIHJldHVybmVkIGluIHRob3NlIHJlZ2lzdGVycy4KKyAgICAgbTMyL202NCBzdHJ1Y3R1cmVzIG90aGVyd2lzZToKICAgICAgLSBMYXJnZXIgc3RydWN0dXJlcyB2YWx1ZXMgYXJlIGFsbG9jYXRlZCBzcGFjZSBhbmQgYSBwb2ludGVyIGlzIHBhc3NlZAogICAgICAgIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gICovCiAgIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKQEAgLTQxMCw5ICs3MzMsNDIgQEAKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAgICAgeworCS8qIENhbiB3ZSBmaXQgdGhlIHN0cnVjdCBpbnRvIHJlZ3M/ICAqLworCWlmIChkYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AgKGNpZi0+cnR5cGUpKQorCSAgeworCSAgICB1bnNpZ25lZCBuZnByID0gMDsKKwkgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX1NUUlVDVDsKKwkgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgIT0gMTYpCisJICAgICAgZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAoY2lmLT5ydHlwZSwgJm5mcHIpIDsKKwkgICAgZWxzZQorCSAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU18xMjhCSVRTOworCSAgICAvKiBXaWxsIGJlIDAgZm9yIDE2Ynl0ZSBzdHJ1Y3QuICAqLworCSAgICBpZiAobmZwcikKKwkgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfRlA7CisJICB9CisJZWxzZSAvKiBCeSByZWYuICovCisJICB7CisJICAgIGZsYWdzIHw9IEZMQUdfUkVUVkFMX1JFRkVSRU5DRTsKKwkgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CisJICAgIGludGFyZ19jb3VudCsrOworCSAgfQorICAgICAgfQorI2VsaWYgZGVmaW5lZChEQVJXSU5fUFBDKQorICAgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgPD0gNCkKKwlmbGFncyB8PSBGTEFHX1JFVFVSTlNfU1RSVUNUOworICAgICAgZWxzZSAvKiBlbHNlIGJ5IHJlZmVyZW5jZS4gICovCisJeworCSAgZmxhZ3MgfD0gRkxBR19SRVRWQUxfUkVGRVJFTkNFOworCSAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CisJICBpbnRhcmdfY291bnQrKzsKKwl9CisjZWxzZSAvKiBhc3N1bWUgd2UgcGFzcyBieSByZWYuICAqLwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRWQUxfUkVGRVJFTkNFOwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CiAgICAgICBpbnRhcmdfY291bnQrKzsKKyNlbmRpZgogICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRklfVFlQRV9WT0lEOgogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX05PVEhJTkc7CkBAIC00MjUsNTcgKzc4MSw4MyBAQAogCiAgIC8qIFRoZSBmaXJzdCBOVU1fR1BSX0FSR19SRUdJU1RFUlMgd29yZHMgb2YgaW50ZWdlciBhcmd1bWVudHMsIGFuZCB0aGUKICAgICAgZmlyc3QgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIGZwIGFyZ3VtZW50cywgZ28gaW4gcmVnaXN0ZXJzOyB0aGUgcmVzdAotICAgICBnb2VzIG9uIHRoZSBzdGFjay4gIFN0cnVjdHVyZXMgYXJlIHBhc3NlZCBhcyBhIHBvaW50ZXIgdG8gYSBjb3B5IG9mCi0gICAgIHRoZSBzdHJ1Y3R1cmUuIFN0dWZmIG9uIHRoZSBzdGFjayBuZWVkcyB0byBrZWVwIHByb3BlciBhbGlnbm1lbnQuICAqLworICAgICBnb2VzIG9uIHRoZSBzdGFjay4gIAorICAgICA/Pz8gU3RydWN0dXJlcyBhcmUgcGFzc2VkIGFzIGEgcG9pbnRlciB0byBhIGNvcHkgb2YgdGhlIHN0cnVjdHVyZS4gCisgICAgIFN0dWZmIG9uIHRoZSBzdGFjayBuZWVkcyB0byBrZWVwIHByb3BlciBhbGlnbm1lbnQuICAKKyAgICAgRm9yIG02NCB0aGUgY291bnQgaXMgZWZmZWN0aXZlbHkgb2YgaGFsZi1HUFJzLiAgKi8KICAgZm9yIChwdHIgPSBjaWYtPmFyZ190eXBlcywgaSA9IGNpZi0+bmFyZ3M7IGkgPiAwOyBpLS0sIHB0cisrKQogICAgIHsKKyAgICAgIHVuc2lnbmVkIGFsaWduX3dvcmRzOwogICAgICAgc3dpdGNoICgoKnB0ciktPnR5cGUpCiAJewogCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CiAJY2FzZSBGRklfVFlQRV9ET1VCTEU6CiAJICBmcGFyZ19jb3VudCsrOworI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCiAJICAvKiBJZiB0aGlzIEZQIGFyZyBpcyBnb2luZyBvbiB0aGUgc3RhY2ssIGl0IG11c3QgYmUKIAkgICAgIDgtYnl0ZS1hbGlnbmVkLiAgKi8KIAkgIGlmIChmcGFyZ19jb3VudCA+IE5VTV9GUFJfQVJHX1JFR0lTVEVSUwotCSAgICAgICYmIGludGFyZ19jb3VudCUyICE9IDApCisJICAgICAgJiYgKGludGFyZ19jb3VudCAmIDB4MDEpICE9IDApCiAJICAgIGludGFyZ19jb3VudCsrOworI2VuZGlmCiAJICBicmVhazsKIAogI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0KIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CiAJICBmcGFyZ19jb3VudCArPSAyOwogCSAgLyogSWYgdGhpcyBGUCBhcmcgaXMgZ29pbmcgb24gdGhlIHN0YWNrLCBpdCBtdXN0IGJlCi0JICAgICA4LWJ5dGUtYWxpZ25lZC4gICovCi0JICBpZiAoZnBhcmdfY291bnQgPiBOVU1fRlBSX0FSR19SRUdJU1RFUlMKLQkgICAgICAmJiBpbnRhcmdfY291bnQlMiAhPSAwKQotCSAgICBpbnRhcmdfY291bnQrKzsKLQkgIGludGFyZ19jb3VudCArPTI7CisJICAgICAxNi1ieXRlLWFsaWduZWQuICAqLworCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKyNpZiBkZWZpbmVkIChQT1dFUlBDNjQpCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgMik7CisjZWxzZQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIDQpOworI2VuZGlmCiAJICBicmVhazsKICNlbmRpZgogCiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6CisjaWYgZGVmaW5lZChQT1dFUlBDNjQpCisJICBpbnRhcmdfY291bnQrKzsKKyNlbHNlCiAJICAvKiAnbG9uZyBsb25nJyBhcmd1bWVudHMgYXJlIHBhc3NlZCBhcyB0d28gd29yZHMsIGJ1dAogCSAgICAgZWl0aGVyIGJvdGggd29yZHMgbXVzdCBmaXQgaW4gcmVnaXN0ZXJzIG9yIGJvdGggZ28KIAkgICAgIG9uIHRoZSBzdGFjay4gIElmIHRoZXkgZ28gb24gdGhlIHN0YWNrLCB0aGV5IG11c3QKIAkgICAgIGJlIDgtYnl0ZS1hbGlnbmVkLiAgKi8KIAkgIGlmIChpbnRhcmdfY291bnQgPT0gTlVNX0dQUl9BUkdfUkVHSVNURVJTLTEKLQkgICAgICB8fCAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAmJiBpbnRhcmdfY291bnQlMiAhPSAwKSkKKwkgICAgICB8fCAoaW50YXJnX2NvdW50ID49IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAKKwkgICAgICAgICAgJiYgKGludGFyZ19jb3VudCAmIDB4MDEpICE9IDApKQogCSAgICBpbnRhcmdfY291bnQrKzsKIAkgIGludGFyZ19jb3VudCArPSAyOworI2VuZGlmCiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgogCSAgc2l6ZV9hbCA9ICgqcHRyKS0+c2l6ZTsKLQkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgotCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gICovCi0JICBpZiAoKCpwdHIpLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCi0JICAgIHNpemVfYWwgPSBBTElHTigoKnB0ciktPnNpemUsIDgpOwotI2lmZGVmIFBPV0VSUEM2NAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIGFsaWduX3dvcmRzID0gKCpwdHIpLT5hbGlnbm1lbnQgPj4gMzsKKwkgIGlmIChhbGlnbl93b3JkcykKKwkgICAgaW50YXJnX2NvdW50ID0gQUxJR04oaW50YXJnX2NvdW50LCBhbGlnbl93b3Jkcyk7CisJICAvKiBCYXNlIHNpemUgb2YgdGhlIHN0cnVjdC4gICovCiAJICBpbnRhcmdfY291bnQgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisJICAvKiBJZiAxNiBieXRlcyB0aGVuIGRvbid0IHdvcnJ5IGFib3V0IGZsb2F0cy4gICovCisJICBpZiAoc2l6ZV9hbCAhPSAxNikKKwkgICAgLyogU2NhbiB0aHJvdWdoIGZvciBmbG9hdHMgdG8gYmUgcGxhY2VkIGluIHJlZ3MuICAqLworCSAgICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzICgqcHRyLCAmZnBhcmdfY291bnQpIDsKICNlbHNlCisJICBhbGlnbl93b3JkcyA9ICgqcHRyKS0+YWxpZ25tZW50ID4+IDI7CisJICBpZiAoYWxpZ25fd29yZHMpCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgYWxpZ25fd29yZHMpOworCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGFsaWduCisJICAgICB0aGUgc3RydWN0IHRvIGRvdWJsZS13b3JkLiAKKwkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKKwkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7ICovCisjICBpZmRlZiBQT1dFUlBDNjQKKwkgIGludGFyZ19jb3VudCArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyMgIGVsc2UKIAkgIGludGFyZ19jb3VudCArPSAoc2l6ZV9hbCArIDMpIC8gNDsKKyMgIGVuZGlmCiAjZW5kaWYKIAkgIGJyZWFrOwogCkBAIC00OTAsOSArODcyLDE4IEBACiAgIGlmIChmcGFyZ19jb3VudCAhPSAwKQogICAgIGZsYWdzIHw9IEZMQUdfRlBfQVJHVU1FTlRTOwogCisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAvKiBTcGFjZSB0byBpbWFnZSB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkIC0gd2hpY2ggaW5jbHVkZXMgd2hlbiB0aGV5IG1pZ2h0IGJlCisgICAgIHVzZWQgaW4gYSBzdHJ1Y3QgcmV0dXJuLiAgKi8KKyAgaWYgKGZwYXJnX2NvdW50ICE9IDAgCisgICAgICB8fCAoKGZsYWdzICYgRkxBR19SRVRVUk5TX1NUUlVDVCkKKwkgICAmJiAoZmxhZ3MgJiBGTEFHX1JFVFVSTlNfRlApKSkKKyAgICBieXRlcyArPSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgKiBzaXplb2YoZG91YmxlKTsKKyNlbHNlCiAgIC8qIFNwYWNlIGZvciB0aGUgRlBSIHJlZ2lzdGVycywgaWYgbmVlZGVkLiAgKi8KICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAgICAgYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTICogc2l6ZW9mKGRvdWJsZSk7CisjZW5kaWYKIAogICAvKiBTdGFjayBzcGFjZS4gICovCiAjaWZkZWYgUE9XRVJQQzY0CkBAIC01MDYsNyArODk3LDcgQEAKICAgICBieXRlcyArPSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgKiBzaXplb2YobG9uZyk7CiAKICAgLyogVGhlIHN0YWNrIHNwYWNlIGFsbG9jYXRlZCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDE2IGJ5dGVzLiAgKi8KLSAgYnl0ZXMgPSAoYnl0ZXMgKyAxNSkgJiB+MHhGOworICBieXRlcyA9IEFMSUdOKGJ5dGVzLCAxNikgOwogCiAgIGNpZi0+ZmxhZ3MgPSBmbGFnczsKICAgY2lmLT5ieXRlcyA9IGJ5dGVzOwpAQCAtNTE2LDggKzkwNyw5IEBACiAKIGV4dGVybiB2b2lkIGZmaV9jYWxsX0FJWChleHRlbmRlZF9jaWYgKiwgbG9uZywgdW5zaWduZWQsIHVuc2lnbmVkICosCiAJCQkgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAoKmZuMikodm9pZCkpOworCiBleHRlcm4gdm9pZCBmZmlfY2FsbF9EQVJXSU4oZXh0ZW5kZWRfY2lmICosIGxvbmcsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLAotCQkJICAgIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKCpmbjIpKHZvaWQpKTsKKwkJCSAgICB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICgqZm4yKSh2b2lkKSwgZmZpX3R5cGUqKTsKIAogdm9pZAogZmZpX2NhbGwgKGZmaV9jaWYgKmNpZiwgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAqcnZhbHVlLCB2b2lkICoqYXZhbHVlKQpAQCAtNTQyLDExICs5MzQsMTEgQEAKICAgICB7CiAgICAgY2FzZSBGRklfQUlYOgogICAgICAgZmZpX2NhbGxfQUlYKCZlY2lmLCAtKGxvbmcpY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuLAotCQkgICBmZmlfcHJlcF9hcmdzKTsKKwkJICAgRkZJX0ZOKGZmaV9wcmVwX2FyZ3MpKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkZJX0RBUldJTjoKICAgICAgIGZmaV9jYWxsX0RBUldJTigmZWNpZiwgLShsb25nKWNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbiwKLQkJICAgICAgZmZpX3ByZXBfYXJncyk7CisJCSAgICAgIEZGSV9GTihmZmlfcHJlcF9hcmdzKSwgY2lmLT5ydHlwZSk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgRkZJX0FTU0VSVCgwKTsKQEAgLTU2Niw1OCArOTU4LDQ4IEBACiB9IGFpeF9mZDsKIAogLyogaGVyZSBJJ2QgbGlrZSB0byBhZGQgdGhlIHN0YWNrIGZyYW1lIGxheW91dCB3ZSB1c2UgaW4gZGFyd2luX2Nsb3N1cmUuUwotICAgYW5kIGFpeF9jbHNvdXJlLlMKKyAgIGFuZCBhaXhfY2xvc3VyZS5TCiAKLSAgIFNQIHByZXZpb3VzIC0+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLS0gY2hpbGQgZnJhbWUKLQkJICB8IGJhY2sgY2hhaW4gdG8gY2FsbGVyIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDQKLQkJICB8IHNhdmVkIENSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDgKLQkJICB8IHNhdmVkIExSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDEyCi0JCSAgfCByZXNlcnZlZCBmb3IgY29tcGlsZXJzIDQgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNgotCQkgIHwgcmVzZXJ2ZWQgZm9yIGJpbmRlcnMgNCAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjAKLQkJICB8IHNhdmVkIFRPQyBwb2ludGVyIDQgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDI0Ci0JCSAgfCBhbHdheXMgcmVzZXJ2ZWQgOCo0PTMyIChwcmV2aW91cyBHUFJzKXwKLQkJICB8IGFjY29yZGluZyB0byB0aGUgbGlua2FnZSBjb252ZW50aW9uICAgfAotCQkgIHwgZnJvbSBBSVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgNTYKLQkJICB8IG91ciBGUFIgYXJlYSAxMyo4PTEwNCAgICAgICAgICAgICAgICAgfAotCQkgIHwgZjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IGYxMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE2MAotCQkgIHwgcmVzdWx0IGFyZWEgOCAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTY4Ci0JCSAgfCBhbGlnbmVtZW50IHRvIHRoZSBuZXh0IG11bHRpcGxlIG9mIDE2IHwKLVNQIGN1cnJlbnQgLS0+ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE3NiA8LSBwYXJlbnQgZnJhbWUKLQkJICB8IGJhY2sgY2hhaW4gdG8gY2FsbGVyIDQgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE4MAotCQkgIHwgc2F2ZWQgQ1IgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTg0Ci0JCSAgfCBzYXZlZCBMUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxODgKLQkJICB8IHJlc2VydmVkIGZvciBjb21waWxlcnMgNCAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE5MgotCQkgIHwgcmVzZXJ2ZWQgZm9yIGJpbmRlcnMgNCAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTk2Ci0JCSAgfCBzYXZlZCBUT0MgcG9pbnRlciA0ICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAyMDAKLQkJICB8IGFsd2F5cyByZXNlcnZlZCA4KjQ9MzIgIHdlIHN0b3JlIG91ciAgfAotCQkgIHwgR1BScyBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCByMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgcjEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjMyCi0JCSAgfCBvdmVyZmxvdyBwYXJ0ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB4eHgKLQkJICB8ID8/Pz8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHh4eAorICAgbTMyL202NAorCisgICBUaGUgc3RhY2sgbGF5b3V0IGxvb2tzIGxpa2UgdGhpczoKKworICAgfCAgIEFkZGl0aW9uYWwgcGFyYW1zLi4uCQkJfCB8ICAgICBIaWdoZXIgYWRkcmVzcworICAgfgkJCQkJCX4gfgorICAgfCAgIFBhcmFtZXRlcnMgICAgICAoYXQgbGVhc3QgOCo0Lzg9MzIvNjQpCXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgU2F2ZWQgQ1IgW2xvdyB3b3JkIGZvciBtNjRdICAgICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vIFBhcmVudCdzIGZyYW1lLgorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCA8KyA8PDwgb24gZW50cnkgdG8gZmZpX2Nsb3N1cmVfQVNNCisgICB8ICAgUmVzdWx0IEJ5dGVzCQkJMTYJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIH4gICBwYWRkaW5nIHRvIDE2LWJ5dGUgYWxpZ25tZW50CQl+IH4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBzbG90cwkJfCB8CisgICB8ICAgaGVyZSBmcDEzIC4uIGZwMQkJICAgICAgIDEzKjgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSMy4uUjEwCQkJICA4KjQvOD0zMi82NAl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJc3RhY2sJfAorICAgfCAgIFJlc2VydmVkIFtjb21waWxlcixiaW5kZXJdICAgICAyKjQvOAl8IHwJZ3Jvd3MJfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWRvd24JVgorICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWxvd2VyIGFkZHJlc3NlcworICAgfCAgIFNhdmVkIENSIFtsb3cgd29yZCBmb3IgbTY0XSAgICAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfCAgICAgc3RhY2sgcG9pbnRlciBoZXJlCisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vCWR1cmluZworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgIDw8PAlmZmlfY2xvc3VyZV9BU00uCiAKICovCisKIGZmaV9zdGF0dXMKIGZmaV9wcmVwX2Nsb3N1cmVfbG9jIChmZmlfY2xvc3VyZSogY2xvc3VyZSwKIAkJICAgICAgZmZpX2NpZiogY2lmLApAQCAtNjMxLDMwICsxMDEzLDQ0IEBACiAKICAgc3dpdGNoIChjaWYtPmFiaSkKICAgICB7Ci0gICAgY2FzZSBGRklfREFSV0lOOgorICAgICAgY2FzZSBGRklfREFSV0lOOgogCi0gICAgICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfREFSV0lOKTsKKwlGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfREFSV0lOKTsKIAotICAgICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKLSAgICAgIHRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAgKi8KLSAgICAgIHRyYW1wWzFdID0gMHg0MjlmMDAwZDsgIC8qICAgYmNsLSAgICAyMCw0KmNyNytzbywweDEwICAqLwotICAgICAgdHJhbXBbNF0gPSAweDdkNjgwMmE2OyAgLyogICBtZmxyICAgIHIxMSAgKi8KLSAgICAgIHRyYW1wWzVdID0gMHg4MThiMDAwMDsgIC8qICAgbHd6ICAgICByMTIsMChyMTEpIGZ1bmN0aW9uIGFkZHJlc3MgICovCi0gICAgICB0cmFtcFs2XSA9IDB4N2MwODAzYTY7ICAvKiAgIG10bHIgICAgcjAgICAqLwotICAgICAgdHJhbXBbN10gPSAweDdkODkwM2E2OyAgLyogICBtdGN0ciAgIHIxMiAgKi8KLSAgICAgIHRyYW1wWzhdID0gMHg4MTZiMDAwNDsgIC8qICAgbHd6ICAgICByMTEsNChyMTEpIHN0YXRpYyBjaGFpbiAgKi8KLSAgICAgIHRyYW1wWzldID0gMHg0ZTgwMDQyMDsgIC8qICAgYmN0ciAgKi8KLSAgICAgIHRyYW1wWzJdID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX0FTTTsgLyogZnVuY3Rpb24gICovCi0gICAgICB0cmFtcFszXSA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOyAvKiBjb250ZXh0ICAqLworCXRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCXRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAgKi8KKwl0cmFtcFsxXSA9IDB4NDI5ZjAwMTU7ICAvKiAgIGJjbC0gICAgMjAsNCpjcjcrc28sICArMHgxOCAoTDEpICAqLworCS8qIFdlIHB1dCB0aGUgYWRkcmVzc2VzIGhlcmUuICAqLworCXRyYW1wWzZdID0gMHg3ZDY4MDJhNjsgIC8qTDE6ICAgbWZsciAgICByMTEgICovCisJdHJhbXBbN10gPSAweGU5OGIwMDAwOyAgLyogICBsZCAgICAgcjEyLDAocjExKSBmdW5jdGlvbiBhZGRyZXNzICAqLworCXRyYW1wWzhdID0gMHg3YzA4MDNhNjsgIC8qICAgbXRsciAgICByMCAgICovCisJdHJhbXBbOV0gPSAweDdkODkwM2E2OyAgLyogICBtdGN0ciAgIHIxMiAgKi8KKwl0cmFtcFsxMF0gPSAweGU5NmIwMDA4OyAgLyogICBsd3ogICAgIHIxMSw4KHIxMSkgc3RhdGljIGNoYWluICAqLworCXRyYW1wWzExXSA9IDB4NGU4MDA0MjA7ICAvKiAgIGJjdHIgICovCiAKLSAgICAgIGNsb3N1cmUtPmNpZiA9IGNpZjsKLSAgICAgIGNsb3N1cmUtPmZ1biA9IGZ1bjsKLSAgICAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKwkqKCh1bnNpZ25lZCBsb25nICopJnRyYW1wWzJdKSA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV9BU007IC8qIGZ1bmN0aW9uICAqLworCSooKHVuc2lnbmVkIGxvbmcgKikmdHJhbXBbNF0pID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7IC8qIGNvbnRleHQgICovCisjZWxzZQorCXRyYW1wWzBdID0gMHg3YzA4MDJhNjsgIC8qICAgbWZsciAgICByMCAgKi8KKwl0cmFtcFsxXSA9IDB4NDI5ZjAwMGQ7ICAvKiAgIGJjbC0gICAgMjAsNCpjcjcrc28sMHgxMCAgKi8KKwl0cmFtcFs0XSA9IDB4N2Q2ODAyYTY7ICAvKiAgIG1mbHIgICAgcjExICAqLworCXRyYW1wWzVdID0gMHg4MThiMDAwMDsgIC8qICAgbHd6ICAgICByMTIsMChyMTEpIGZ1bmN0aW9uIGFkZHJlc3MgICovCisJdHJhbXBbNl0gPSAweDdjMDgwM2E2OyAgLyogICBtdGxyICAgIHIwICAgKi8KKwl0cmFtcFs3XSA9IDB4N2Q4OTAzYTY7ICAvKiAgIG10Y3RyICAgcjEyICAqLworCXRyYW1wWzhdID0gMHg4MTZiMDAwNDsgIC8qICAgbHd6ICAgICByMTEsNChyMTEpIHN0YXRpYyBjaGFpbiAgKi8KKwl0cmFtcFs5XSA9IDB4NGU4MDA0MjA7ICAvKiAgIGJjdHIgICovCisJdHJhbXBbMl0gPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfQVNNOyAvKiBmdW5jdGlvbiAgKi8KKwl0cmFtcFszXSA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOyAvKiBjb250ZXh0ICAqLworI2VuZGlmCisJY2xvc3VyZS0+Y2lmID0gY2lmOworCWNsb3N1cmUtPmZ1biA9IGZ1bjsKKwljbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAKLSAgICAgIC8qIEZsdXNoIHRoZSBpY2FjaGUuIE9ubHkgbmVjZXNzYXJ5IG9uIERhcndpbi4gICovCi0gICAgICBmbHVzaF9yYW5nZShjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFKTsKKwkvKiBGbHVzaCB0aGUgaWNhY2hlLiBPbmx5IG5lY2Vzc2FyeSBvbiBEYXJ3aW4uICAqLworCWZsdXNoX3JhbmdlKGNvZGVsb2MsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOwogCi0gICAgICBicmVhazsKKwlicmVhazsKIAogICAgIGNhc2UgRkZJX0FJWDoKIApAQCAtNjY5LDEwICsxMDY1LDEwIEBACiAgICAgICBjbG9zdXJlLT5jaWYgPSBjaWY7CiAgICAgICBjbG9zdXJlLT5mdW4gPSBmdW47CiAgICAgICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0KLSAgICAgIEZGSV9BU1NFUlQoMCk7CisgICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgICAgICBicmVhazsKICAgICB9CiAgIHJldHVybiBGRklfT0s7CkBAIC03MDgsNyArMTEwNCw3IEBACiAgIGRvdWJsZSBkOwogfSBmZmlfZGJsZmw7CiAKLWludAorZmZpX3R5cGUgKgogZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiAoZmZpX2Nsb3N1cmUgKiwgdm9pZCAqLAogCQkJICAgdW5zaWduZWQgbG9uZyAqLCBmZmlfZGJsZmwgKik7CiAKQEAgLTcxOSw3ICsxMTE1LDcgQEAKICAgIHVwIHNwYWNlIGZvciBhIHJldHVybiB2YWx1ZSwgZmZpX2Nsb3N1cmVfQVNNIGludm9rZXMgdGhlCiAgICBmb2xsb3dpbmcgaGVscGVyIGZ1bmN0aW9uIHRvIGRvIG1vc3Qgb2YgdGhlIHdvcmsuICAqLwogCi1pbnQKK2ZmaV90eXBlICoKIGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4gKGZmaV9jbG9zdXJlICpjbG9zdXJlLCB2b2lkICpydmFsdWUsCiAJCQkgICB1bnNpZ25lZCBsb25nICpwZ3IsIGZmaV9kYmxmbCAqcGZyKQogewpAQCAtNzQxLDE2ICsxMTM3LDMyIEBACiAgIGZmaV9jaWYgKiAgICAgICAgY2lmOwogICBmZmlfZGJsZmwgKiAgICAgIGVuZF9wZnIgPSBwZnIgKyBOVU1fRlBSX0FSR19SRUdJU1RFUlM7CiAgIHVuc2lnbmVkICAgICAgICAgc2l6ZV9hbDsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgIHVuc2lnbmVkIAkgICBmcHN1c2VkID0gMDsKKyNlbmRpZgogCiAgIGNpZiA9IGNsb3N1cmUtPmNpZjsKICAgYXZhbHVlID0gYWxsb2NhIChjaWYtPm5hcmdzICogc2l6ZW9mKHZvaWQgKikpOwogCi0gIC8qIENvcHkgdGhlIGNhbGxlcidzIHN0cnVjdHVyZSByZXR1cm4gdmFsdWUgYWRkcmVzcyBzbyB0aGF0IHRoZSBjbG9zdXJlCi0gICAgIHJldHVybnMgdGhlIGRhdGEgZGlyZWN0bHkgdG8gdGhlIGNhbGxlci4gICovCiAgIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKICAgICB7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAgICAgaWYgKCFkYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AgKGNpZi0+cnR5cGUpKQorCXsKKyAgICAJICAvKiBXb24ndCBmaXQgaW50byB0aGUgcmVncyAtIHJldHVybiBieSByZWYuICAqLworCSAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKKwkgIHBncisrOworCX0KKyNlbGlmIGRlZmluZWQoREFSV0lOX1BQQykKKyAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplID4gNCkKKwl7CisJICBydmFsdWUgPSAodm9pZCAqKSAqcGdyOworCSAgcGdyKys7CisJfQorI2Vsc2UgLyogYXNzdW1lIHdlIHJldHVybiBieSByZWYuICAqLwogICAgICAgcnZhbHVlID0gKHZvaWQgKikgKnBncjsKICAgICAgIHBncisrOworI2VuZGlmCiAgICAgfQogCiAgIGkgPSAwOwpAQCAtNzY0LDcgKzExNzYsNyBAQAogCXsKIAljYXNlIEZGSV9UWVBFX1NJTlQ4OgogCWNhc2UgRkZJX1RZUEVfVUlOVDg6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgNzsKICNlbHNlCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyAzOwpAQCAtNzc0LDcgKzExODYsNyBAQAogCiAJY2FzZSBGRklfVFlQRV9TSU5UMTY6CiAJY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgNjsKICNlbHNlCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyAyOwpAQCAtNzg0LDcgKzExOTYsNyBAQAogCiAJY2FzZSBGRklfVFlQRV9TSU5UMzI6CiAJY2FzZSBGRklfVFlQRV9VSU5UMzI6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCSAgYXZhbHVlW2ldID0gKGNoYXIgKikgcGdyICsgNDsKICNlbHNlCiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgpAQCAtNzk0LDM0ICsxMjA2LDUzIEBACiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmZGVmIFBPV0VSUEM2NAogCSAgc2l6ZV9hbCA9IGFyZ190eXBlc1tpXS0+c2l6ZTsKLQkgIGlmIChhcmdfdHlwZXNbaV0tPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKLQkgICAgc2l6ZV9hbCA9IEFMSUdOIChhcmdfdHlwZXNbaV0tPnNpemUsIDgpOwotCSAgaWYgKHNpemVfYWwgPCAzICYmIGNpZi0+YWJpID09IEZGSV9EQVJXSU4pCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkICopIHBnciArIDggLSBzaXplX2FsOwotCSAgZWxzZQotCSAgICBhdmFsdWVbaV0gPSAodm9pZCAqKSBwZ3I7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgcGdyID0gKHVuc2lnbmVkIGxvbmcgKilBTElHTigoY2hhciAqKXBnciwgYXJnX3R5cGVzW2ldLT5hbGlnbm1lbnQpOworCSAgaWYgKHNpemVfYWwgPCAzIHx8IHNpemVfYWwgPT0gNCkKKwkgICAgeworCSAgICAgIGF2YWx1ZVtpXSA9ICgoY2hhciAqKXBncikrOC1zaXplX2FsOworCSAgICAgIGlmIChhcmdfdHlwZXNbaV0tPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUCisJCSAgJiYgZnBzdXNlZCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkJeworCQkgICooZmxvYXQgKilwZ3IgPSAoZmxvYXQpICooZG91YmxlICopcGZyOworCQkgIHBmcisrOworCQkgIGZwc3VzZWQrKzsKKwkJfQorCSAgICB9CisJICBlbHNlIAorCSAgICB7CisJICAgICAgaWYgKHNpemVfYWwgIT0gMTYpCisJCXBmciA9IChmZmlfZGJsZmwgKikgCisJCSAgICBkYXJ3aW42NF9zdHJ1Y3RfZmxvYXRzX3RvX21lbSAoYXJnX3R5cGVzW2ldLCAoY2hhciAqKXBnciwKKwkJCQkJCSAgIChkb3VibGUgKilwZnIsICZmcHN1c2VkKTsKKwkgICAgICBhdmFsdWVbaV0gPSBwZ3I7CisJICAgIH0KIAkgIHBnciArPSAoc2l6ZV9hbCArIDcpIC8gODsKICNlbHNlCi0JICAvKiBTdHJ1Y3R1cmVzIHRoYXQgbWF0Y2ggdGhlIGJhc2ljIG1vZGVzIChRSSAxIGJ5dGUsIEhJIDIgYnl0ZXMsCi0JICAgICBTSSA0IGJ5dGVzKSBhcmUgYWxpZ25lZCBhcyBpZiB0aGV5IHdlcmUgdGhvc2UgbW9kZXMuICAqLwotCSAgc2l6ZV9hbCA9IGFyZ190eXBlc1tpXS0+c2l6ZTsKIAkgIC8qIElmIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIHN0cnVjdCBpcyBhIGRvdWJsZSwgdGhlbiBhbGlnbgogCSAgICAgdGhlIHN0cnVjdCB0byBkb3VibGUtd29yZC4gICovCiAJICBpZiAoYXJnX3R5cGVzW2ldLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCiAJICAgIHNpemVfYWwgPSBBTElHTihhcmdfdHlwZXNbaV0tPnNpemUsIDgpOworIyAgaWYgZGVmaW5lZChQT1dFUlBDNjQpCisJICBGRklfQVNTRVJUIChjaWYtPmFiaSAhPSBGRklfREFSV0lOKTsKKwkgIGF2YWx1ZVtpXSA9IHBncjsKKwkgIHBnciArPSAoc2l6ZV9hbCArIDcpIC8gODsKKyMgIGVsc2UKKwkgIC8qIFN0cnVjdHVyZXMgdGhhdCBtYXRjaCB0aGUgYmFzaWMgbW9kZXMgKFFJIDEgYnl0ZSwgSEkgMiBieXRlcywKKwkgICAgIFNJIDQgYnl0ZXMpIGFyZSBhbGlnbmVkIGFzIGlmIHRoZXkgd2VyZSB0aG9zZSBtb2Rlcy4gICovCiAJICBpZiAoc2l6ZV9hbCA8IDMgJiYgY2lmLT5hYmkgPT0gRkZJX0RBUldJTikKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQqKSBwZ3IgKyA0IC0gc2l6ZV9hbDsKKwkgICAgYXZhbHVlW2ldID0gKGNoYXIqKSBwZ3IgKyA0IC0gc2l6ZV9hbDsKIAkgIGVsc2UKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQqKSBwZ3I7CisJICAgIGF2YWx1ZVtpXSA9IHBncjsKIAkgIHBnciArPSAoc2l6ZV9hbCArIDMpIC8gNDsKKyMgIGVuZGlmCiAjZW5kaWYKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TSU5UNjQ6CiAJY2FzZSBGRklfVFlQRV9VSU5UNjQ6Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgIGRlZmluZWQoUE9XRVJQQzY0KQogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKIAkgIGF2YWx1ZVtpXSA9IHBncjsKIAkgIHBncisrOwpAQCAtOTI0LDUgKzEzNTUsNSBAQAogICAoY2xvc3VyZS0+ZnVuKSAoY2lmLCBydmFsdWUsIGF2YWx1ZSwgY2xvc3VyZS0+dXNlcl9kYXRhKTsKIAogICAvKiBUZWxsIGZmaV9jbG9zdXJlX0FTTSB0byBwZXJmb3JtIHJldHVybiB0eXBlIHByb21vdGlvbnMuICAqLwotICByZXR1cm4gY2lmLT5ydHlwZS0+dHlwZTsKKyAgcmV0dXJuIGNpZi0+cnR5cGU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaAppbmRleCBiNGY5OTJlLi4zYzlkYjQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgKQEAgLTEsNiArMSw4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKwogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBQb3dlclBDLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI4LDE1ICszMCwyOCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmIGRlZmluZWQgKFBPV0VSUEMpICYmIGRlZmluZWQgKF9fcG93ZXJwYzY0X18pCS8qIGxpbnV4NjQgKi8KKyNpZm5kZWYgUE9XRVJQQzY0CiAjZGVmaW5lIFBPV0VSUEM2NAotI2VsaWYgZGVmaW5lZCAoUE9XRVJQQ19EQVJXSU4pICYmIGRlZmluZWQgKF9fcHBjNjRfXykJLyogRGFyd2luICovCisjZW5kaWYKKyNlbGlmIGRlZmluZWQgKFBPV0VSUENfREFSV0lOKSAmJiBkZWZpbmVkIChfX3BwYzY0X18pCS8qIERhcndpbjY0ICovCisjaWZuZGVmIFBPV0VSUEM2NAogI2RlZmluZSBQT1dFUlBDNjQKKyNlbmRpZgorI2lmbmRlZiBQT1dFUlBDX0RBUldJTjY0CisjZGVmaW5lIFBPV0VSUENfREFSV0lONjQKKyNlbmRpZgogI2VsaWYgZGVmaW5lZCAoUE9XRVJQQ19BSVgpICYmIGRlZmluZWQgKF9fNjRCSVRfXykJLyogQUlYNjQgKi8KKyNpZm5kZWYgUE9XRVJQQzY0CiAjZGVmaW5lIFBPV0VSUEM2NAogI2VuZGlmCisjZW5kaWYKIAogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKQEAgLTUxLDE4ICs2NiwxNCBAQAogICBGRklfTElOVVg2NCwKICAgRkZJX0xJTlVYLAogICBGRklfTElOVVhfU09GVF9GTE9BVCwKLSMgaWZkZWYgUE9XRVJQQzY0CisjIGlmIGRlZmluZWQoUE9XRVJQQzY0KQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfTElOVVg2NCwKLSMgZWxzZQotIyAgaWYgKCFkZWZpbmVkKF9fTk9fRlBSU19fKSAmJiAoX19MREJMX01BTlRfRElHX18gPT0gMTA2KSkKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYLAotIyAgZWxzZQotIyAgIGlmZGVmIF9fTk9fRlBSU19fCisjIGVsaWYgZGVmaW5lZChfX05PX0ZQUlNfXykKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYX1NPRlRfRkxPQVQsCi0jICAgZWxzZQorIyBlbGlmIChfX0xEQkxfTUFOVF9ESUdfXyA9PSAxMDYpCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWCwKKyMgZWxzZQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfR0NDX1NZU1YsCi0jICAgZW5kaWYKLSMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKIApAQCAtMTA4LDkgKzExOSwxMyBAQAogI2RlZmluZSBGRklfU1lTVl9UWVBFX1NNQUxMX1NUUlVDVCAoRkZJX1RZUEVfTEFTVCArIDIpCiAKICNpZiBkZWZpbmVkKFBPV0VSUEM2NCkgfHwgZGVmaW5lZChQT1dFUlBDX0FJWCkKLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyNAorIyAgaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorIyAgICBkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSA0OAorIyAgZWxzZQorIyAgICBkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyNAorIyAgZW5kaWYKICNlbHNlIC8qIFBPV0VSUEMgfHwgUE9XRVJQQ19BSVggKi8KLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSA0MAorIyAgZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNDAKICNlbmRpZgogCiAjaWZuZGVmIExJQkZGSV9BU00KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUwppbmRleCA1NmY3ZDFhLi40MWZiODg1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCkBAIC0xMjIsMjIgKzEyMiw0MSBAQAogCWJscgogCiAjIGNhc2UgRkZJX1RZUEVfRkxPQVQKKyNpZm5kZWYgX19OT19GUFJTX18KIAlsZnMgJWYxLDExMiswKCVyMSkKIAltdGxyICVyMAogCWFkZGkgJXIxLCVyMSwxNDQKKyNlbHNlCisJbm9wCisJbm9wCisJbm9wCisjZW5kaWYKIAlibHIKIAogIyBjYXNlIEZGSV9UWVBFX0RPVUJMRQorI2lmbmRlZiBfX05PX0ZQUlNfXwogCWxmZCAlZjEsMTEyKzAoJXIxKQogCW10bHIgJXIwCiAJYWRkaSAlcjEsJXIxLDE0NAorI2Vsc2UKKwlub3AKKwlub3AKKwlub3AKKyNlbmRpZgogCWJscgogCiAjIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRQorI2lmbmRlZiBfX05PX0ZQUlNfXwogCWxmZCAlZjEsMTEyKzAoJXIxKQogCWxmZCAlZjIsMTEyKzgoJXIxKQogCW10bHIgJXIwCiAJYiAuTGZpbmlzaAorI2Vsc2UKKwlub3AKKwlub3AKKwlub3AKKwlibHIKKyNlbmRpZgogCiAjIGNhc2UgRkZJX1RZUEVfVUlOVDgKIAlsYnogJXIzLDExMiszKCVyMSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMKaW5kZXggOTZlYTIyYi4uNjc1ZWQwMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMKQEAgLTgzLDYgKzgzLDcgQEAKIAlub3AKIDE6CiAKKyNpZm5kZWYgX19OT19GUFJTX18KIAkvKiBMb2FkIGFsbCB0aGUgRlAgcmVnaXN0ZXJzLiAgKi8KIAliZi0JNiwyZgogCWxmZAklZjEsLTE2LSg4KjQpLSg4KjgpKCVyMjgpCkBAIC05NCw2ICs5NSw3IEBACiAJbGZkCSVmNiwtMTYtKDgqNCktKDMqOCkoJXIyOCkKIAlsZmQJJWY3LC0xNi0oOCo0KS0oMio4KSglcjI4KQogCWxmZAklZjgsLTE2LSg4KjQpLSgxKjgpKCVyMjgpCisjZW5kaWYKIDI6CiAKIAkvKiBNYWtlIHRoZSBjYWxsLiAgKi8KQEAgLTEwMyw3ICsxMDUsOSBAQAogCW10Y3JmCTB4MDEsJXIzMSAvKiBjcjcgICovCiAJYnQtCTMxLEwoc21hbGxfc3RydWN0X3JldHVybl92YWx1ZSkKIAlidC0JMzAsTChkb25lX3JldHVybl92YWx1ZSkKKyNpZm5kZWYgX19OT19GUFJTX18KIAlidC0JMjksTChmcF9yZXR1cm5fdmFsdWUpCisjZW5kaWYKIAlzdHcJJXIzLDAoJXIzMCkKIAliZisJMjgsTChkb25lX3JldHVybl92YWx1ZSkKIAlzdHcJJXI0LDQoJXIzMCkKQEAgLTEyNCw2ICsxMjgsNyBAQAogCWx3egklcjEsMCglcjEpCiAJYmxyCiAKKyNpZm5kZWYgX19OT19GUFJTX18KIEwoZnBfcmV0dXJuX3ZhbHVlKToKIAliZgkyOCxMKGZsb2F0X3JldHVybl92YWx1ZSkKIAlzdGZkCSVmMSwwKCVyMzApCkBAIC0xMzQsMjEgKzEzOSwxNyBAQAogTChmbG9hdF9yZXR1cm5fdmFsdWUpOgogCXN0ZnMJJWYxLDAoJXIzMCkKIAliCUwoZG9uZV9yZXR1cm5fdmFsdWUpCisjZW5kaWYKIAogTChzbWFsbF9zdHJ1Y3RfcmV0dXJuX3ZhbHVlKToKLQlleHRyd2kJJXI2LCVyMzEsMiwxOSAgICAgICAgIC8qIG51bWJlciBvZiBieXRlcyBwYWRkaW5nID0gc2hpZnQvOCAqLwotCW10Y3JmCTB4MDIsJXIzMQkgICAgICAvKiBjb3B5IGZsYWdzIHRvIGNyWzI0OjI3XSAoY3I2KSAqLwotCWV4dHJ3aQklcjUsJXIzMSw1LDE5ICAgICAgICAgLyogcjUgPC0gbnVtYmVyIG9mIGJpdHMgb2YgcGFkZGluZyAqLwotCXN1YmZpYyAgJXI2LCVyNiw0ICAgICAgICAgICAgIC8qIHI2IDwtIG51bWJlciBvZiB1c2VmdWwgYnl0ZXMgaW4gcjMgKi8KLQliZi0JMjUsTChkb25lX3JldHVybl92YWx1ZSkgLyogc3RydWN0IGluIHIzID8gaWYgbm90LCBkb25lLiAqLwotLyogc21zdF9vbmVfcmVnaXN0ZXI6ICovCi0Jc2x3CSVyMywlcjMsJXI1ICAgICAgICAgICAvKiBMZWZ0LWp1c3RpZnkgdmFsdWUgaW4gcjMgKi8KLQltdHhlcgklcjYgICAgICAgICAgICAgICAgICAgLyogbW92ZSBieXRlIGNvdW50IHRvIFhFUiAuLi4gKi8KLQlzdHN3eAklcjMsMCwlcjMwICAgICAgICAgICAgLyogLi4uIGFuZCBzdG9yZSB0aGF0IG1hbnkgYnl0ZXMgKi8KLQliZisJMjYsTChkb25lX3JldHVybl92YWx1ZSkgIC8qIHN0cnVjdCBpbiByMzpyNCA/ICovCi0JYWRkCSVyNiwlcjYsJXIzMCAgICAgICAgICAvKiBhZGp1c3QgcG9pbnRlciAqLwotCXN0c3dpCSVyNCwlcjYsNCAgICAgICAgICAgICAvKiBzdG9yZSBsYXN0IGZvdXIgYnl0ZXMgKi8KLQliCUwoZG9uZV9yZXR1cm5fdmFsdWUpCisJLyoKKwkgKiBUaGUgQyBjb2RlIGFsd2F5cyBhbGxvY2F0ZXMgYSBwcm9wZXJseS1hbGlnbmVkIDgtYnl0ZSBib3VuY2UKKwkgKiBidWZmZXIgdG8gbWFrZSB0aGlzIGFzc2VtYmx5IGNvZGUgdmVyeSBzaW1wbGUuICBKdXN0IHdyaXRlIG91dAorCSAqIHIzIGFuZCByNCB0byB0aGUgYnVmZmVyIHRvIGFsbG93IHRoZSBDIGNvZGUgdG8gaGFuZGxlIHRoZSByZXN0LgorCSAqLworCXN0dyAlcjMsIDAoJXIzMCkKKwlzdHcgJXI0LCA0KCVyMzApCisJYiBMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCiAuTEZFMToKIEVORChmZmlfY2FsbF9TWVNWKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMKaW5kZXggYzFjM2I5YS4uZWI2ODM0MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wcmVwX2NpZi5jCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDcgIFJlZCBIYXQsIEluYy4KKyAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEsIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDcgIFJlZCBIYXQsIEluYy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAgICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKQEAgLTM3LDE3ICszOCwyMSBAQAogewogICBmZmlfdHlwZSAqKnB0cjsKIAotICBGRklfQVNTRVJUKGFyZyAhPSBOVUxMKTsKKyAgaWYgKFVOTElLRUxZKGFyZyA9PSBOVUxMIHx8IGFyZy0+ZWxlbWVudHMgPT0gTlVMTCkpCisgICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKIAotICBGRklfQVNTRVJUKGFyZy0+ZWxlbWVudHMgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5zaXplID09IDApOwotICBGRklfQVNTRVJUKGFyZy0+YWxpZ25tZW50ID09IDApOworICBhcmctPnNpemUgPSAwOworICBhcmctPmFsaWdubWVudCA9IDA7CiAKICAgcHRyID0gJihhcmctPmVsZW1lbnRzWzBdKTsKIAorICBpZiAoVU5MSUtFTFkocHRyID09IDApKQorICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7CisKICAgd2hpbGUgKCgqcHRyKSAhPSBOVUxMKQogICAgIHsKLSAgICAgIGlmICgoKCpwdHIpLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSgoKnB0cikpICE9IEZGSV9PSykpCisgICAgICBpZiAoVU5MSUtFTFkoKCgqcHRyKS0+c2l6ZSA9PSAwKQorCQkgICAgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkpCiAJcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKIAogICAgICAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgYXJndW1lbnQgdHlwZSAqLwpAQCAtODUsMTkgKzkwLDM4IEBACiAvKiBQZXJmb3JtIG1hY2hpbmUgaW5kZXBlbmRlbnQgZmZpX2NpZiBwcmVwYXJhdGlvbiwgdGhlbiBjYWxsCiAgICBtYWNoaW5lIGRlcGVuZGVudCByb3V0aW5lLiAqLwogCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZihmZmlfY2lmICpjaWYsIGZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsCi0JCQlmZmlfdHlwZSAqcnR5cGUsIGZmaV90eXBlICoqYXR5cGVzKQorLyogRm9yIG5vbiB2YXJpYWRpYyBmdW5jdGlvbnMgaXN2YXJpYWRpYyBzaG91bGQgYmUgMCBhbmQKKyAgIG5maXhlZGFyZ3M9PW50b3RhbGFyZ3MuCisKKyAgIEZvciB2YXJpYWRpYyBjYWxscywgaXN2YXJpYWRpYyBzaG91bGQgYmUgMSBhbmQgbmZpeGVkYXJncworICAgYW5kIG50b3RhbGFyZ3Mgc2V0IGFzIGFwcHJvcHJpYXRlLiBuZml4ZWRhcmdzIG11c3QgYWx3YXlzIGJlID49MSAqLworCisKK2ZmaV9zdGF0dXMgRkZJX0hJRERFTiBmZmlfcHJlcF9jaWZfY29yZShmZmlfY2lmICpjaWYsIGZmaV9hYmkgYWJpLAorCQkJICAgICB1bnNpZ25lZCBpbnQgaXN2YXJpYWRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorCQkJICAgICBmZmlfdHlwZSAqcnR5cGUsIGZmaV90eXBlICoqYXR5cGVzKQogewogICB1bnNpZ25lZCBieXRlcyA9IDA7CiAgIHVuc2lnbmVkIGludCBpOwogICBmZmlfdHlwZSAqKnB0cjsKIAogICBGRklfQVNTRVJUKGNpZiAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVCgoYWJpID4gRkZJX0ZJUlNUX0FCSSkgJiYgKGFiaSA8PSBGRklfREVGQVVMVF9BQkkpKTsKKyAgRkZJX0FTU0VSVCgoIWlzdmFyaWFkaWMpIHx8IChuZml4ZWRhcmdzID49IDEpKTsKKyAgRkZJX0FTU0VSVChuZml4ZWRhcmdzIDw9IG50b3RhbGFyZ3MpOworCisjaWZuZGVmIFg4Nl9XSU4zMgorICBpZiAoISAoYWJpID4gRkZJX0ZJUlNUX0FCSSAmJiBhYmkgPCBGRklfTEFTVF9BQkkpKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKKyNlbHNlCisgIGlmICghIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSB8fCBhYmkgPT0gRkZJX1RISVNDQUxMKSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisjZW5kaWYKIAogICBjaWYtPmFiaSA9IGFiaTsKICAgY2lmLT5hcmdfdHlwZXMgPSBhdHlwZXM7Ci0gIGNpZi0+bmFyZ3MgPSBuYXJnczsKKyAgY2lmLT5uYXJncyA9IG50b3RhbGFyZ3M7CiAgIGNpZi0+cnR5cGUgPSBydHlwZTsKIAogICBjaWYtPmZsYWdzID0gMDsKQEAgLTExMCw3ICsxMzQsNyBAQAogICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoY2lmLT5ydHlwZSk7CiAKICAgLyogeDg2LCB4ODYtNjQgYW5kIHMzOTAgc3RhY2sgc3BhY2UgYWxsb2NhdGlvbiBpcyBoYW5kbGVkIGluIHByZXBfbWFjaGRlcC4gKi8KLSNpZiAhZGVmaW5lZCBNNjhLICYmICFkZWZpbmVkIF9faTM4Nl9fICYmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MCAmJiAhZGVmaW5lZCBQQQorI2lmICFkZWZpbmVkIE02OEsgJiYgIWRlZmluZWQgWDg2X0FOWSAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCiAgIC8qIE1ha2Ugc3BhY2UgZm9yIHRoZSByZXR1cm4gc3RydWN0dXJlIHBvaW50ZXIgKi8KICAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCiAjaWZkZWYgU1BBUkMKQEAgLTEzMSw3ICsxNTUsNyBAQAogCSBjaGVjayBhZnRlciB0aGUgaW5pdGlhbGl6YXRpb24uICAqLwogICAgICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKCpwdHIpOwogCi0jaWYgIWRlZmluZWQgX19pMzg2X18gJiYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCisjaWYgIWRlZmluZWQgWDg2X0FOWSAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCiAjaWZkZWYgU1BBUkMKICAgICAgIGlmICgoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAogCSAgICYmICgoKnB0ciktPnNpemUgPiAxNiB8fCBjaWYtPmFiaSAhPSBGRklfVjkpKQpAQCAtMTUzLDEwICsxNzcsMzEgQEAKICAgY2lmLT5ieXRlcyA9IGJ5dGVzOwogCiAgIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KKyNpZmRlZiBGRklfVEFSR0VUX1NQRUNJRklDX1ZBUklBRElDCisgIGlmIChpc3ZhcmlhZGljKQorCXJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcF92YXIoY2lmLCBuZml4ZWRhcmdzLCBudG90YWxhcmdzKTsKKyNlbmRpZgorCiAgIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOwogfQogI2VuZGlmIC8qIG5vdCBfX0NSSVNfXyAqLwogCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZihmZmlfY2lmICpjaWYsIGZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsCisJCQkgICAgIGZmaV90eXBlICpydHlwZSwgZmZpX3R5cGUgKiphdHlwZXMpCit7CisgIHJldHVybiBmZmlfcHJlcF9jaWZfY29yZShjaWYsIGFiaSwgMCwgbmFyZ3MsIG5hcmdzLCBydHlwZSwgYXR5cGVzKTsKK30KKworZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfdmFyKGZmaV9jaWYgKmNpZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfYWJpIGFiaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfdHlwZSAqcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX3R5cGUgKiphdHlwZXMpCit7CisgIHJldHVybiBmZmlfcHJlcF9jaWZfY29yZShjaWYsIGFiaSwgMSwgbmZpeGVkYXJncywgbnRvdGFsYXJncywgcnR5cGUsIGF0eXBlcyk7Cit9CisKICNpZiBGRklfQ0xPU1VSRVMKIAogZmZpX3N0YXR1cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmgKaW5kZXggNzhmM2M2NS4uOTdmYTVjNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zMzkwL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFMzOTAuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsOSArMjgsMTUgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZiBkZWZpbmVkIChfX3MzOTB4X18pCisjaWZuZGVmIFMzOTBYCiAjZGVmaW5lIFMzOTBYCiAjZW5kaWYKKyNlbmRpZgogCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC00MCw4ICs0Nyw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMKaW5kZXggNjliZDAyNS4uMzUxNWI5MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMKQEAgLTEsNSArMSw1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggS2F6IEtvamltYQorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMDItMjAwOCwgMjAxMiBLYXogS29qaW1hCiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCBSZWQgSGF0LCBJbmMuCiAgICAKICAgIFN1cGVySCBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKQEAgLTQ2Myw3ICs0NjMsOCBAQAogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogICB1bnNpZ25lZCBpbnQgaW5zbjsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfR0NDX1NZU1YpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIC8qIFNldCBUIGJpdCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHN0cnVjdCBwb2ludGVkIHdpdGggUjIuICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaAppbmRleCAyMThhZTNkLi5hMzZiZjQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFN1cGVySC4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zNiw4ICs0MSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jCmluZGV4IDhmYmMwNWMuLjEyM2I4N2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZmkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNyBLYXogS29qaW1hCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwMywgMjAwNCwgMjAwNiwgMjAwNywgMjAxMiBLYXogS29qaW1hCiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCBBbnRob255IEdyZWVuCiAgICAKICAgIFN1cGVySCBTSG1lZGlhIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIApAQCAtMzAyLDcgKzMwMiw4IEBACiB7CiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogICAvKiBTaW5jZSBmZmlfY2xvc3VyZSBpcyBhbiBhbGlnbmVkIG9iamVjdCwgdGhlIGZmaSB0cmFtcG9saW5lIGlzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaAppbmRleCA0ZTkyMmZjLi4wOGE2ZmU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgU3VwZXJIIC0gU0htZWRpYS4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zNiw4ICs0MSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogCiAjZGVmaW5lIEZGSV9FWFRSQV9DSUZfRklFTERTIGxvbmcgbG9uZyBmbGFnczIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMKaW5kZXggMWQwMWY1OS4uMWFjNWQ0NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDMsIDIwMDQsIDIwMDcsIDIwMDggUmVkIEhhdCwgSW5jLgorICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDIwMTEgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDIwMDMtMjAwNCwgMjAwNy0yMDA4IFJlZCBIYXQsIEluYy4KICAgIAogICAgU1BBUkMgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTQwNiw4ICs0MDcsNTAgQEAKICAgICAgIC8qIFdlIGRvbid0IHlldCBzdXBwb3J0IGNhbGxpbmcgMzJiaXQgY29kZSBmcm9tIDY0Yml0ICovCiAgICAgICBGRklfQVNTRVJUKDApOwogI2Vsc2UKLSAgICAgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLCAKLQkJICBjaWYtPmZsYWdzLCBydmFsdWUsIGZuKTsKKyAgICAgIGlmIChydmFsdWUgJiYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQorI2VuZGlmCisJICApKQorCXsKKwkgIC8qIEZvciB2OCwgd2UgbmVlZCBhbiAidW5pbXAiIHdpdGggc2l6ZSBvZiByZXR1cm5pbmcgc3RydWN0ICovCisJICAvKiBiZWhpbmQgImNhbGwiLCBzbyB3ZSBhbGxvYyBzb21lIGV4ZWN1dGFibGUgc3BhY2UgZm9yIGl0LiAqLworCSAgLyogbDcgaXMgdXNlZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdjguUyBkb2Vzbid0IHVzZSAlbDcuICAgKi8KKwkgIHVuc2lnbmVkIGludCAqY2FsbF9zdHJ1Y3QgPSBOVUxMOworCSAgZmZpX2Nsb3N1cmVfYWxsb2MoMzIsICZjYWxsX3N0cnVjdCk7CisJICBpZiAoY2FsbF9zdHJ1Y3QpCisJICAgIHsKKwkgICAgICB1bnNpZ25lZCBsb25nIGYgPSAodW5zaWduZWQgbG9uZylmbjsKKwkgICAgICBjYWxsX3N0cnVjdFswXSA9IDB4YWUxMDAwMWY7CQkgLyogbW92ICAgJWk3LCAlbDcJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbMV0gPSAweGJlMTAwMDBmOwkJIC8qIG1vdiAgICVvNywgJWk3CSAqLworCSAgICAgIGNhbGxfc3RydWN0WzJdID0gMHgwMzAwMDAwMCB8IGYgPj4gMTA7ICAgICAvKiBzZXRoaSAlaGkoZm4pLCAlZzEJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbM10gPSAweDlmYzA2MDAwIHwgKGYgJiAweDNmZik7IC8qIGptcCAlZzErJWxvKGZuKSwgJW83ICovCisJICAgICAgY2FsbF9zdHJ1Y3RbNF0gPSAweDAxMDAwMDAwOwkJIC8qIG5vcAkJCSAqLworCSAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplIDwgMHg3ZikKKwkJY2FsbF9zdHJ1Y3RbNV0gPSBjaWYtPnJ0eXBlLT5zaXplOwkgLyogdW5pbXAJCSAqLworCSAgICAgIGVsc2UKKwkJY2FsbF9zdHJ1Y3RbNV0gPSAweDAxMDAwMDAwOwkgICAgIAkgLyogbm9wCQkJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbNl0gPSAweDgxYzdlMDA4OwkJIC8qIHJldAkJCSAqLworCSAgICAgIGNhbGxfc3RydWN0WzddID0gMHhiZTEwMDAxNzsJCSAvKiBtb3YgICAlbDcsICVpNwkgKi8KKwkgICAgICBhc20gdm9sYXRpbGUgKCJpZmx1c2ggJTA7IGlmbHVzaCAlMCs4OyBpZmx1c2ggJTArMTY7IGlmbHVzaCAlMCsyNCIgOiA6CisJCQkgICAgInIiIChjYWxsX3N0cnVjdCkgOiAibWVtb3J5Iik7CisJICAgICAgLyogU1BBUkMgdjggcmVxdWlyZXMgNSBpbnN0cnVjdGlvbnMgZm9yIGZsdXNoIHRvIGJlIHZpc2libGUgKi8KKwkgICAgICBhc20gdm9sYXRpbGUgKCJub3A7IG5vcDsgbm9wOyBub3A7IG5vcCIpOworCSAgICAgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLAorCQkJICBjaWYtPmZsYWdzLCBydmFsdWUsIGNhbGxfc3RydWN0KTsKKwkgICAgICBmZmlfY2xvc3VyZV9mcmVlKGNhbGxfc3RydWN0KTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgZmZpX2NhbGxfdjgoZmZpX3ByZXBfYXJnc192OCwgJmVjaWYsIGNpZi0+Ynl0ZXMsCisJCQkgIGNpZi0+ZmxhZ3MsIHJ2YWx1ZSwgZm4pOworCSAgICB9CisJfQorICAgICAgZWxzZQorCXsKKwkgIGZmaV9jYWxsX3Y4KGZmaV9wcmVwX2FyZ3NfdjgsICZlY2lmLCBjaWYtPmJ5dGVzLAorCQkgICAgICBjaWYtPmZsYWdzLCBydmFsdWUsIGZuKTsKKwl9CiAjZW5kaWYKICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkZJX1Y5OgpAQCAtNDI1LDcgKzQ2OCw2IEBACiAgICAgICBGRklfQVNTRVJUKDApOwogICAgICAgYnJlYWs7CiAgICAgfQotCiB9CiAKIApAQCAtNDQ3LDcgKzQ4OSw4IEBACiAjaWZkZWYgU1BBUkM2NAogICAvKiBUcmFtcG9saW5lIGFkZHJlc3MgaXMgZXF1YWwgdG8gdGhlIGNsb3N1cmUgYWRkcmVzcy4gIFdlIHRha2UgYWR2YW50YWdlCiAgICAgIG9mIHRoYXQgdG8gcmVkdWNlIHRoZSB0cmFtcG9saW5lIHNpemUgYnkgOCBieXRlcy4gKi8KLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1Y5KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9WOSkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX3Y5OwogICB0cmFtcFswXSA9IDB4ODM0MTQwMDA7CS8qIHJkCSVwYywgJWcxCSovCiAgIHRyYW1wWzFdID0gMHhjYTU4NjAxMDsJLyogbGR4CVslZzErMTZdLCAlZzUJKi8KQEAgLTQ1Niw3ICs0OTksOCBAQAogICAqKCh1bnNpZ25lZCBsb25nICopICZ0cmFtcFs0XSkgPSBmbjsKICNlbHNlCiAgIHVuc2lnbmVkIGxvbmcgY3R4ID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9WOCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfVjgpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICBmbiA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV92ODsKICAgdHJhbXBbMF0gPSAweDAzMDAwMDAwIHwgZm4gPj4gMTA7CS8qIHNldGhpICVoaShmbiksICVnMQkqLwogICB0cmFtcFsxXSA9IDB4MDUwMDAwMDAgfCBjdHggPj4gMTA7CS8qIHNldGhpICVoaShjdHgpLCAlZzIJKi8KQEAgLTQ2OCwxMyArNTEyLDEzIEBACiAgIGNsb3N1cmUtPmZ1biA9IGZ1bjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogCi0gIC8qIEZsdXNoIHRoZSBJY2FjaGUuICBGSVhNRTogYWxpZ25tZW50IGlzbid0IGNlcnRhaW4sIGFzc3VtZSA4IGJ5dGVzICovCisgIC8qIEZsdXNoIHRoZSBJY2FjaGUuICBjbG9zdXJlIGlzIDggYnl0ZXMgYWxpZ25lZC4gICovCiAjaWZkZWYgU1BBUkM2NAotICBhc20gdm9sYXRpbGUgKCJmbHVzaAklMCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7Ci0gIGFzbSB2b2xhdGlsZSAoImZsdXNoCSUwIiA6IDogInIiICgoKGNoYXIgKikgY2xvc3VyZSkgKyA4KSA6ICJtZW1vcnkiKTsKKyAgYXNtIHZvbGF0aWxlICgiZmx1c2gJJTA7IGZsdXNoICUwKzgiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOwogI2Vsc2UKLSAgYXNtIHZvbGF0aWxlICgiaWZsdXNoCSUwIiA6IDogInIiIChjbG9zdXJlKSA6ICJtZW1vcnkiKTsKLSAgYXNtIHZvbGF0aWxlICgiaWZsdXNoCSUwIiA6IDogInIiICgoKGNoYXIgKikgY2xvc3VyZSkgKyA4KSA6ICJtZW1vcnkiKTsKKyAgYXNtIHZvbGF0aWxlICgiaWZsdXNoCSUwOyBpZmx1c2ggJTArOCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7CisgIC8qIFNQQVJDIHY4IHJlcXVpcmVzIDUgaW5zdHJ1Y3Rpb25zIGZvciBmbHVzaCB0byBiZSB2aXNpYmxlICovCisgIGFzbSB2b2xhdGlsZSAoIm5vcDsgbm9wOyBub3A7IG5vcDsgbm9wIik7CiAjZW5kaWYKIAogICByZXR1cm4gRkZJX09LOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaAppbmRleCAxYTFhMWFjLi5kODlmNzg3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTUEFSQy4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNywxMSArMjgsMTcgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZiBkZWZpbmVkKF9fYXJjaDY0X18pIHx8IGRlZmluZWQoX19zcGFyY3Y5KQorI2lmbmRlZiBTUEFSQzY0CiAjZGVmaW5lIFNQQVJDNjQKICNlbmRpZgorI2VuZGlmCiAKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CkBAIC00MiwxMiArNDksMTIgQEAKICAgRkZJX1Y4LAogICBGRklfVjhQTFVTLAogICBGRklfVjksCisgIEZGSV9MQVNUX0FCSSwKICNpZmRlZiBTUEFSQzY0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1Y5CiAjZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjgsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOAogI2VuZGlmCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUwppbmRleCA0ODlmZjAyLi5iZjMxYTJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL3Y5LlMKQEAgLTMyLDcgKzMyLDcgQEAKIC8qIE9ubHkgY29tcGlsZSB0aGlzIGluIGZvciA2NGJpdCBidWlsZHMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBvYmplY3QgZmlsZQogICAgd2lsbCBoYXZlIGlucHJvcGVyIGFyY2hpdGVjdHVyZSBkdWUgdG8gdXNlZCBpbnN0cnVjdGlvbnMuICAqLwogCi0jZGVmaW5lIFNUQUNLRlJBTUUgMTI4CQkvKiBNaW5pbXVtIHN0YWNrIGZyYW1lc2l6ZSBmb3IgU1BBUkMgKi8KKyNkZWZpbmUgU1RBQ0tGUkFNRSAxNzYJCS8qIE1pbmltdW0gc3RhY2sgZnJhbWVzaXplIGZvciBTUEFSQyA2NC1iaXQgKi8KICNkZWZpbmUgU1RBQ0tfQklBUyAyMDQ3CiAjZGVmaW5lIEFSR1MgKDEyOCkJCS8qIE9mZnNldCBvZiByZWdpc3RlciBhcmVhIGluIGZyYW1lICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYwppbmRleCA4MDQ5NjUzLi42MTFlMjIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaS5jCkBAIC0zLDcgKzMsNyBAQAogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDIgIFJhbmppdCBNYXRoZXcKICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyICBCbyBUaG9yc2VuCiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiAgUm9nZXIgU2F5bGUKLSAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEwICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgeDg2IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlCiAKQEAgLTQ4LDEwICs0OCwxOCBAQAogICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwogICByZWdpc3RlciBjaGFyICphcmdwOwogICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOworI2lmZGVmIFg4Nl9XSU4zMgorICBzaXplX3QgcF9zdGFja19hcmdzWzJdOworICB2b2lkICpwX3N0YWNrX2RhdGFbMl07CisgIGNoYXIgKmFyZ3AyID0gc3RhY2s7CisgIGludCBzdGFja19hcmdzX2NvdW50ID0gMDsKKyAgaW50IGNhYmkgPSBlY2lmLT5jaWYtPmFiaTsKKyNlbmRpZgogCiAgIGFyZ3AgPSBzdGFjazsKIAotICBpZiAoZWNpZi0+Y2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgaWYgKChlY2lmLT5jaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgIHx8IGVjaWYtPmNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUKQogI2lmZGVmIFg4Nl9XSU42NAogICAgICAgJiYgKGVjaWYtPmNpZi0+cnR5cGUtPnNpemUgIT0gMSAmJiBlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDIKICAgICAgICAgICAmJiBlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDQgJiYgZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSA4KQpAQCAtNTksNiArNjcsMTYgQEAKICAgICAgICkKICAgICB7CiAgICAgICAqKHZvaWQgKiopIGFyZ3AgPSBlY2lmLT5ydmFsdWU7CisjaWZkZWYgWDg2X1dJTjMyCisgICAgICAvKiBGb3IgZmFzdGNhbGwvdGhpc2NhbGwgdGhpcyBpcyBmaXJzdCByZWdpc3Rlci1wYXNzZWQKKyAgICAgICAgIGFyZ3VtZW50LiAgKi8KKyAgICAgIGlmIChjYWJpID09IEZGSV9USElTQ0FMTCB8fCBjYWJpID09IEZGSV9GQVNUQ0FMTCkKKwl7CisJICBwX3N0YWNrX2FyZ3Nbc3RhY2tfYXJnc19jb3VudF0gPSBzaXplb2YgKHZvaWQqKTsKKwkgIHBfc3RhY2tfZGF0YVtzdGFja19hcmdzX2NvdW50XSA9IGFyZ3A7CisJICArK3N0YWNrX2FyZ3NfY291bnQ7CisJfQorI2VuZGlmCiAgICAgICBhcmdwICs9IHNpemVvZih2b2lkKik7CiAgICAgfQogCkBAIC0xMzQsNiArMTUyLDI0IEBACiAgICAgICAgIHsKICAgICAgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7CiAgICAgICAgIH0KKworI2lmZGVmIFg4Nl9XSU4zMgorICAgIC8qIEZvciB0aGlzY2FsbC9mYXN0Y2FsbCBjb252ZW50aW9uIHJlZ2lzdGVyLXBhc3NlZCBhcmd1bWVudHMKKyAgICAgICBhcmUgdGhlIGZpcnN0IHR3byBub25lLWZsb2F0aW5nLXBvaW50IGFyZ3VtZW50cyB3aXRoIGEgc2l6ZQorICAgICAgIHNtYWxsZXIgb3IgZXF1YWwgdG8gc2l6ZW9mICh2b2lkKikuICAqLworICAgIGlmICgoY2FiaSA9PSBGRklfVEhJU0NBTEwgJiYgc3RhY2tfYXJnc19jb3VudCA8IDEpCisgICAgICAgIHx8IChjYWJpID09IEZGSV9GQVNUQ0FMTCAmJiBzdGFja19hcmdzX2NvdW50IDwgMikpCisgICAgICB7CisJaWYgKHogPD0gNAorCSAgICAmJiAoKCpwX2FyZyktPnR5cGUgIT0gRkZJX1RZUEVfRkxPQVQKKwkgICAgICAgICYmICgqcF9hcmcpLT50eXBlICE9IEZGSV9UWVBFX1NUUlVDVCkpCisJICB7CisJICAgIHBfc3RhY2tfYXJnc1tzdGFja19hcmdzX2NvdW50XSA9IHo7CisJICAgIHBfc3RhY2tfZGF0YVtzdGFja19hcmdzX2NvdW50XSA9IGFyZ3A7CisJICAgICsrc3RhY2tfYXJnc19jb3VudDsKKwkgIH0KKyAgICAgIH0KKyNlbmRpZgogICAgICAgcF9hcmd2Kys7CiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgICBhcmdwICs9ICh6ICsgc2l6ZW9mKHZvaWQqKSAtIDEpICYgfihzaXplb2Yodm9pZCopIC0gMSk7CkBAIC0xNDEsNyArMTc3LDQ1IEBACiAgICAgICBhcmdwICs9IHo7CiAjZW5kaWYKICAgICB9Ci0gIAorCisjaWZkZWYgWDg2X1dJTjMyCisgIC8qIFdlIG5lZWQgdG8gbW92ZSB0aGUgcmVnaXN0ZXItcGFzc2VkIGFyZ3VtZW50cyBmb3IgdGhpc2NhbGwvZmFzdGNhbGwKKyAgICAgb24gdG9wIG9mIHN0YWNrLCBzbyB0aGF0IHRob3NlIGNhbiBiZSBtb3ZlZCB0byByZWdpc3RlcnMgZWN4L2VkeCBieQorICAgICBjYWxsLWhhbmRsZXIuICAqLworICBpZiAoc3RhY2tfYXJnc19jb3VudCA+IDApCisgICAgeworICAgICAgc2l6ZV90IHp6ID0gKHBfc3RhY2tfYXJnc1swXSArIDMpICYgfjM7CisgICAgICBjaGFyICpoOworCisgICAgICAvKiBNb3ZlIGZpcnN0IGFyZ3VtZW50IHRvIHRvcC1zdGFjayBwb3NpdGlvbi4gICovCisgICAgICBpZiAocF9zdGFja19kYXRhWzBdICE9IGFyZ3AyKQorCXsKKwkgIGggPSBhbGxvY2EgKHp6ICsgMSk7CisJICBtZW1jcHkgKGgsIHBfc3RhY2tfZGF0YVswXSwgenopOworCSAgbWVtbW92ZSAoYXJncDIgKyB6eiwgYXJncDIsCisJICAgICAgICAgICAoc2l6ZV90KSAoKGNoYXIgKikgcF9zdGFja19kYXRhWzBdIC0gKGNoYXIqKWFyZ3AyKSk7CisJICBtZW1jcHkgKGFyZ3AyLCBoLCB6eik7CisJfQorCisgICAgICBhcmdwMiArPSB6ejsKKyAgICAgIC0tc3RhY2tfYXJnc19jb3VudDsKKyAgICAgIGlmICh6eiA+IDQpCisJc3RhY2tfYXJnc19jb3VudCA9IDA7CisKKyAgICAgIC8qIElmIHdlIGhhdmUgYSBzZWNvbmQgYXJndW1lbnQsIHRoZW4gbW92ZSBpdCBvbiB0b3AKKyAgICAgICAgIGFmdGVyIHRoZSBmaXJzdCBvbmUuICAqLworICAgICAgaWYgKHN0YWNrX2FyZ3NfY291bnQgPiAwICYmIHBfc3RhY2tfZGF0YVsxXSAhPSBhcmdwMikKKwl7CisJICB6eiA9IHBfc3RhY2tfYXJnc1sxXTsKKwkgIHp6ID0gKHp6ICsgMykgJiB+MzsKKwkgIGggPSBhbGxvY2EgKHp6ICsgMSk7CisJICBoID0gYWxsb2NhICh6eiArIDEpOworCSAgbWVtY3B5IChoLCBwX3N0YWNrX2RhdGFbMV0sIHp6KTsKKwkgIG1lbW1vdmUgKGFyZ3AyICsgenosIGFyZ3AyLCAoc2l6ZV90KSAoKGNoYXIqKSBwX3N0YWNrX2RhdGFbMV0gLSAoY2hhciopYXJncDIpKTsKKwkgIG1lbWNweSAoYXJncDIsIGgsIHp6KTsKKwl9CisgICAgfQorI2VuZGlmCiAgIHJldHVybjsKIH0KIApAQCAtMTU1LDEyICsyMjksMTAgQEAKICAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQogICAgIHsKICAgICBjYXNlIEZGSV9UWVBFX1ZPSUQ6Ci0jaWYgZGVmaW5lZChYODYpIHx8IGRlZmluZWQgKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfRlJFRUJTRCkgfHwgZGVmaW5lZChYODZfREFSV0lOKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkKICAgICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgogICAgIGNhc2UgRkZJX1RZUEVfVUlOVDE2OgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDg6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UMTY6Ci0jZW5kaWYKICNpZmRlZiBYODZfV0lONjQKICAgICBjYXNlIEZGSV9UWVBFX1VJTlQzMjoKICAgICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKQEAgLTIwOCw4ICsyODAsMTMgQEAKICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICB7Ci0gICAgICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX1NUUlVDVDsKLSAgICAgICAgICAvLyBhbGxvY2F0ZSBzcGFjZSBmb3IgcmV0dXJuIHZhbHVlIHBvaW50ZXIKKyNpZmRlZiBYODZfV0lOMzIKKyAgICAgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX01TX0NERUNMKQorICAgICAgICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX01TX1NUUlVDVDsKKyAgICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TVFJVQ1Q7CisgICAgICAgICAgLyogYWxsb2NhdGUgc3BhY2UgZm9yIHJldHVybiB2YWx1ZSBwb2ludGVyICovCiAgICAgICAgICAgY2lmLT5ieXRlcyArPSBBTElHTihzaXplb2Yodm9pZCopLCBGRklfU0laRU9GX0FSRyk7CiAgICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMjM0LDcgKzMxMSw3IEBACiAgICAgfQogCiAjaWZkZWYgWDg2X1dJTjY0Ci0gIC8vIGVuc3VyZSBzcGFjZSBmb3Igc3RvcmluZyBmb3VyIHJlZ2lzdGVycworICAvKiBlbnN1cmUgc3BhY2UgZm9yIHN0b3JpbmcgZm91ciByZWdpc3RlcnMgKi8KICAgY2lmLT5ieXRlcyArPSA0ICogc2l6ZW9mKGZmaV9hcmcpOwogI2VuZGlmCiAKQEAgLTI1Miw3ICszMjksNyBAQAogI2VsaWYgZGVmaW5lZChYODZfV0lOMzIpCiBleHRlcm4gdm9pZAogZmZpX2NhbGxfd2luMzIodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIGV4dGVuZGVkX2NpZiAqLAotICAgICAgICAgICAgICAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCB2b2lkICgqZm4pKHZvaWQpKTsKKyAgICAgICAgICAgICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOwogI2Vsc2UKIGV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIGV4dGVuZGVkX2NpZiAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOwpAQCAtMjc4LDcgKzM1NSw4IEBACiAgICAgfQogI2Vsc2UKICAgaWYgKHJ2YWx1ZSA9PSBOVUxMCi0gICAgICAmJiBjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCkKKyAgICAgICYmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUKSkKICAgICB7CiAgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKICAgICB9CkBAIC0yOTEsMzMgKzM2OSw0NCBAQAogICAgIHsKICNpZmRlZiBYODZfV0lONjQKICAgICBjYXNlIEZGSV9XSU42NDoKLSAgICAgIHsKLSAgICAgICAgLy8gTWFrZSBjb3BpZXMgb2YgYWxsIHN0cnVjdCBhcmd1bWVudHMKLSAgICAgICAgLy8gTk9URTogbm90IHN1cmUgaWYgcmVzcG9uc2liaWxpdHkgc2hvdWxkIGJlIGhlcmUgb3IgaW4gY2FsbGVyCi0gICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICBmb3IgKGk9MDsgaSA8IGNpZi0+bmFyZ3M7aSsrKSB7Ci0gICAgICAgICAgc2l6ZV90IHNpemUgPSBjaWYtPmFyZ190eXBlc1tpXS0+c2l6ZTsKLSAgICAgICAgICBpZiAoKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgICAgICAgICAgJiYgKHNpemUgIT0gMSAmJiBzaXplICE9IDIgJiYgc2l6ZSAhPSA0ICYmIHNpemUgIT0gOCkpCi0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgICAgICAgICAgICAgfHwgY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotI2VuZGlmCi0gICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdm9pZCAqbG9jYWwgPSBhbGxvY2Eoc2l6ZSk7Ci0gICAgICAgICAgICAgIG1lbWNweShsb2NhbCwgYXZhbHVlW2ldLCBzaXplKTsKLSAgICAgICAgICAgICAgYXZhbHVlW2ldID0gbG9jYWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZmZpX2NhbGxfd2luNjQoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7Ci0gICAgICB9CisgICAgICBmZmlfY2FsbF93aW42NChmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywKKyAgICAgICAgICAgICAgICAgICAgIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7CiAgICAgICBicmVhazsKICNlbGlmIGRlZmluZWQoWDg2X1dJTjMyKQogICAgIGNhc2UgRkZJX1NZU1Y6CiAgICAgY2FzZSBGRklfU1REQ0FMTDoKLSAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICBjYXNlIEZGSV9NU19DREVDTDoKKyAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKwkJICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGRklfVEhJU0NBTEw6CisgICAgY2FzZSBGRklfRkFTVENBTEw6CisgICAgICB7CisJdW5zaWduZWQgaW50IGFiaSA9IGNpZi0+YWJpOworCXVuc2lnbmVkIGludCBpLCBwYXNzZWRfcmVncyA9IDA7CisKKwlpZiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICArK3Bhc3NlZF9yZWdzOworCisJZm9yIChpPTA7IGkgPCBjaWYtPm5hcmdzICYmIHBhc3NlZF9yZWdzIDwgMjtpKyspCisJICB7CisJICAgIHNpemVfdCBzejsKKworCSAgICBpZiAoY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQKKwkgICAgICAgIHx8IGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKwkgICAgICBjb250aW51ZTsKKwkgICAgc3ogPSAoY2lmLT5hcmdfdHlwZXNbaV0tPnNpemUgKyAzKSAmIH4zOworCSAgICBpZiAoc3ogPT0gMCB8fCBzeiA+IDQpCisJICAgICAgY29udGludWU7CisJICAgICsrcGFzc2VkX3JlZ3M7CisJICB9CisJaWYgKHBhc3NlZF9yZWdzIDwgMiAmJiBhYmkgPT0gRkZJX0ZBU1RDQUxMKQorCSAgYWJpID0gRkZJX1RISVNDQUxMOworCWlmIChwYXNzZWRfcmVncyA8IDEgJiYgYWJpID09IEZGSV9USElTQ0FMTCkKKwkgIGFiaSA9IEZGSV9TVERDQUxMOworICAgICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgYWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgfQogICAgICAgYnJlYWs7CiAjZWxzZQogICAgIGNhc2UgRkZJX1NZU1Y6CkBAIC0zNDUsOCArNDM0LDEyIEBACiB2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfcmF3X1NZU1YgKGZmaV9yYXdfY2xvc3VyZSAqKQogICAgICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgxKSkpOwogI2lmZGVmIFg4Nl9XSU4zMgordm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCAoZmZpX3Jhd19jbG9zdXJlICopCisgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7CiB2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfU1REQ0FMTCAoZmZpX2Nsb3N1cmUgKikKICAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKK3ZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9USElTQ0FMTCAoZmZpX2Nsb3N1cmUgKikKKyAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKICNlbmRpZgogI2lmZGVmIFg4Nl9XSU42NAogdm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX3dpbjY0IChmZmlfY2xvc3VyZSAqKTsKQEAgLTQyOCw3ICs1MjEsOCBAQAogICAgIGFyZ3AgKz0gc2l6ZW9mKHZvaWQgKik7CiAgIH0KICNlbHNlCi0gIGlmICggY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7CisgIGlmICggY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QKKyAgICAgICB8fCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX01TX1NUUlVDVCApIHsKICAgICAqcnZhbHVlID0gKih2b2lkICoqKSBhcmdwOwogICAgIGFyZ3AgKz0gc2l6ZW9mKHZvaWQgKik7CiAgIH0KQEAgLTUwNiw2ICs2MDAsMzMgQEAKICAgICoodW5zaWduZWQgaW50KikgICZfX3RyYW1wWzZdID0gX19kaXM7IC8qIGptcCBfX2Z1biAgKi8gXAogIH0KIAorI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMKFRSQU1QLEZVTixDVFgsU0laRSkgXAoreyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7IFwKKyAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KShGVU4pOyBcCisgICB1bnNpZ25lZCBpbnQgIF9fY3R4ID0gKHVuc2lnbmVkIGludCkoQ1RYKTsgXAorICAgdW5zaWduZWQgaW50ICBfX2RpcyA9IF9fZnVuIC0gKF9fY3R4ICsgNDkpOyAgXAorICAgdW5zaWduZWQgc2hvcnQgX19zaXplID0gKHVuc2lnbmVkIHNob3J0KShTSVpFKTsgXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMF0gPSAweDgzMjQwNDhiOwkvKiBtb3YgKCVlc3ApLCAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzRdID0gMHg0Yzg5MGNlYzsJLyogc3ViICQxMiwgJWVzcCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFs4XSA9IDB4MDQ4OTA0MjQ7CS8qIG1vdiAlZWN4LCA0KCVlc3ApICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzEyXSA9IDB4MjQ7CS8qIG1vdiAlZWF4LCAoJWVzcCkgKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgJl9fdHJhbXBbMTNdID0gMHhiODsgXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMTRdID0gX19zaXplOwkvKiBtb3YgX19zaXplLCAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzE4XSA9IDB4MDgyNDRjOGQ7CS8qIGxlYSA4KCVlc3ApLCAlZWN4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzIyXSA9IDB4NDgwMmU4YzE7IC8qIHNociAkMiwgJWVheCA7IGRlYyAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgc2hvcnQqKSAmX190cmFtcFsyNl0gPSAweDBiNzQ7CS8qIGp6IDFmICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzI4XSA9IDB4ODkwODUxOGI7CS8qIDJiOiBtb3YgOCglZWN4KSwgJWVkeCAqLyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFszMl0gPSAweDA0YzE4MzExOyAvKiBtb3YgJWVkeCwgKCVlY3gpIDsgYWRkICQ0LCAlZWN4ICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzM2XSA9IDB4NDg7CS8qIGRlYyAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgc2hvcnQqKSAmX190cmFtcFszN10gPSAweGY1NzU7CS8qIGpueiAyYiA7IDFmOiAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFszOV0gPSAweGI4OyBcCisgICAqKHVuc2lnbmVkIGludCopICAmX190cmFtcFs0MF0gPSBfX2N0eDsgLyogbW92bCBfX2N0eCwgJWVheCAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIgKikgICZfX3RyYW1wWzQ0XSA9IDB4ZTg7IFwKKyAgICoodW5zaWduZWQgaW50KikgICZfX3RyYW1wWzQ1XSA9IF9fZGlzOyAvKiBjYWxsIF9fZnVuICAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAgJl9fdHJhbXBbNDldID0gMHhjMjsgLyogcmV0ICAqLyBcCisgICAqKHVuc2lnbmVkIHNob3J0KikgICZfX3RyYW1wWzUwXSA9IChfX3NpemUgKyA4KTsgLyogcmV0IChfX3NpemUgKyA4KSAgKi8gXAorIH0KKwogI2RlZmluZSBGRklfSU5JVF9UUkFNUE9MSU5FX1NURENBTEwoVFJBTVAsRlVOLENUWCxTSVpFKSAgXAogeyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7IFwKICAgIHVuc2lnbmVkIGludCAgX19mdW4gPSAodW5zaWduZWQgaW50KShGVU4pOyBcCkBAIC01NDgsMTIgKzY2OSwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKWNvZGVsb2MpOwogICAgIH0KICNpZmRlZiBYODZfV0lOMzIKKyAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1RISVNDQUxMKQorICAgIHsKKyAgICAgIEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwgKCZjbG9zdXJlLT50cmFtcFswXSwKKwkJCQkgICAgJmZmaV9jbG9zdXJlX1RISVNDQUxMLAorCQkJCSAgICAodm9pZCopY29kZWxvYywKKwkJCQkgICAgY2lmLT5ieXRlcyk7CisgICAgfQogICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfU1REQ0FMTCkKICAgICB7CiAgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FX1NURENBTEwgKCZjbG9zdXJlLT50cmFtcFswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZmaV9jbG9zdXJlX1NURENBTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiljb2RlbG9jLCBjaWYtPmJ5dGVzKTsKICAgICB9CisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9NU19DREVDTCkKKyAgICB7CisgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmZpX2Nsb3N1cmVfU1lTViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKiljb2RlbG9jKTsKKyAgICB9CiAjZW5kaWYgLyogWDg2X1dJTjMyICovCiAjZW5kaWYgLyogIVg4Nl9XSU42NCAqLwogICBlbHNlCkBAIC01ODIsNiArNzE2LDkgQEAKICAgaW50IGk7CiAKICAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKSB7CisjaWZkZWYgWDg2X1dJTjMyCisgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9USElTQ0FMTCkKKyNlbmRpZgogICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgfQogCkBAIC01OTYsMTAgKzczMywyMCBAQAogICAgICAgRkZJX0FTU0VSVCAoY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgIT0gRkZJX1RZUEVfTE9OR0RPVUJMRSk7CiAgICAgfQogICAKLQorI2lmZGVmIFg4Nl9XSU4zMgorICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpCisgICAgeworI2VuZGlmCiAgIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgJmZmaV9jbG9zdXJlX3Jhd19TWVNWLAogICAgICAgICAgICAgICAgICAgICAgICBjb2RlbG9jKTsKLSAgICAKKyNpZmRlZiBYODZfV0lOMzIKKyAgICB9CisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9USElTQ0FMTCkKKyAgICB7CisgICAgICBGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMICgmY2xvc3VyZS0+dHJhbXBbMF0sICZmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwsCisJCQkJICAgIGNvZGVsb2MsIGNpZi0+Ynl0ZXMpOworICAgIH0KKyNlbmRpZgogICBjbG9zdXJlLT5jaWYgID0gY2lmOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAgIGNsb3N1cmUtPmZ1biAgPSBmdW47CkBAIC02MzAsOCArNzc3LDkgQEAKICAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHJldHVybiAqLwogICAvKiB2YWx1ZSBhZGRyZXNzIHRoZW4gd2UgbmVlZCB0byBtYWtlIG9uZSAgICAgICAgICAgICAgICAgICAgICovCiAKLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgCi0gICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQorICBpZiAocnZhbHVlID09IE5VTEwKKyAgICAgICYmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUKSkKICAgICB7CiAgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKICAgICB9CkBAIC02NDQsOCArNzkyLDM4IEBACiAjaWZkZWYgWDg2X1dJTjMyCiAgICAgY2FzZSBGRklfU1lTVjoKICAgICBjYXNlIEZGSV9TVERDQUxMOgotICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJnc19yYXcsICZlY2lmLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICBjYXNlIEZGSV9NU19DREVDTDoKKyAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3NfcmF3LCAmZWNpZiwgY2lmLT5hYmksIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCisJCSAgICAgZWNpZi5ydmFsdWUsIGZuKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRkZJX1RISVNDQUxMOgorICAgIGNhc2UgRkZJX0ZBU1RDQUxMOgorICAgICAgeworCXVuc2lnbmVkIGludCBhYmkgPSBjaWYtPmFiaTsKKwl1bnNpZ25lZCBpbnQgaSwgcGFzc2VkX3JlZ3MgPSAwOworCisJaWYgKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgKytwYXNzZWRfcmVnczsKKworCWZvciAoaT0wOyBpIDwgY2lmLT5uYXJncyAmJiBwYXNzZWRfcmVncyA8IDI7aSsrKQorCSAgeworCSAgICBzaXplX3Qgc3o7CisKKwkgICAgaWYgKGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX0ZMT0FUCisJICAgICAgICB8fCBjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICAgICAgY29udGludWU7CisJICAgIHN6ID0gKGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplICsgMykgJiB+MzsKKwkgICAgaWYgKHN6ID09IDAgfHwgc3ogPiA0KQorCSAgICAgIGNvbnRpbnVlOworCSAgICArK3Bhc3NlZF9yZWdzOworCSAgfQorCWlmIChwYXNzZWRfcmVncyA8IDIgJiYgYWJpID09IEZGSV9GQVNUQ0FMTCkKKwkgIGNpZi0+YWJpID0gYWJpID0gRkZJX1RISVNDQUxMOworCWlmIChwYXNzZWRfcmVncyA8IDEgJiYgYWJpID09IEZGSV9USElTQ0FMTCkKKwkgIGNpZi0+YWJpID0gYWJpID0gRkZJX1NURENBTEw7CisgICAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3NfcmF3LCAmZWNpZiwgYWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgfQogICAgICAgYnJlYWs7CiAjZWxzZQogICAgIGNhc2UgRkZJX1NZU1Y6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpNjQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jCmluZGV4IDA3YTI2MjcuLjFkYWExYzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jCkBAIC0xLDcgKzEsOCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaTY0LmMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDcgIEJvIFRob3JzZW4gPGJvQHN1c2UuZGU+Ci0gICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4ICBSZWQgSGF0LCBJbmMuCi0gICAKKyAgIGZmaTY0LmMgLSBDb3B5cmlnaHQgKGMpIDIwMDExICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEwICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyLCAyMDA3ICBCbyBUaG9yc2VuIDxib0BzdXNlLmRlPgorICAgICAgICAgICAgIAogICAgeDg2LTY0IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTM2LDExICszNywxNyBAQAogI2RlZmluZSBNQVhfR1BSX1JFR1MgNgogI2RlZmluZSBNQVhfU1NFX1JFR1MgOAogCisjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorI2RlZmluZSBVSU5UMTI4IF9fbTEyOAorI2Vsc2UKKyNkZWZpbmUgVUlOVDEyOCBfX2ludDEyOF90CisjZW5kaWYKKwogc3RydWN0IHJlZ2lzdGVyX2FyZ3MKIHsKICAgLyogUmVnaXN0ZXJzIGZvciBhcmd1bWVudCBwYXNzaW5nLiAgKi8KICAgVUlOVDY0IGdwcltNQVhfR1BSX1JFR1NdOwotICBfX2ludDEyOF90IHNzZVtNQVhfU1NFX1JFR1NdOworICBVSU5UMTI4IHNzZVtNQVhfU1NFX1JFR1NdOwogfTsKIAogZXh0ZXJuIHZvaWQgZmZpX2NhbGxfdW5peDY0ICh2b2lkICphcmdzLCB1bnNpZ25lZCBsb25nIGJ5dGVzLCB1bnNpZ25lZCBmbGFncywKQEAgLTM3OCw3ICszODUsNyBAQAogCSAgaWYgKGFsaWduIDwgOCkKIAkgICAgYWxpZ24gPSA4OwogCi0JICBieXRlcyA9IEFMSUdOKGJ5dGVzLCBhbGlnbik7CisJICBieXRlcyA9IEFMSUdOIChieXRlcywgYWxpZ24pOwogCSAgYnl0ZXMgKz0gY2lmLT5hcmdfdHlwZXNbaV0tPnNpemU7CiAJfQogICAgICAgZWxzZQpAQCAtMzkwLDcgKzM5Nyw3IEBACiAgIGlmIChzc2Vjb3VudCkKICAgICBmbGFncyB8PSAxIDw8IDExOwogICBjaWYtPmZsYWdzID0gZmxhZ3M7Ci0gIGNpZi0+Ynl0ZXMgPSBieXRlczsKKyAgY2lmLT5ieXRlcyA9IEFMSUdOIChieXRlcywgOCk7CiAKICAgcmV0dXJuIEZGSV9PSzsKIH0KQEAgLTQyNiw3ICs0MzMsNyBAQAogICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIHBhc3NlZCBpbiBtZW1vcnksIGFkZCB0aGUgcG9pbnRlciBhcyB0aGUKICAgICAgZmlyc3QgaW50ZWdlciBhcmd1bWVudC4gICovCiAgIGlmIChyZXRfaW5fbWVtb3J5KQotICAgIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK10gPSAobG9uZykgcnZhbHVlOworICAgIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK10gPSAodW5zaWduZWQgbG9uZykgcnZhbHVlOwogCiAgIGF2biA9IGNpZi0+bmFyZ3M7CiAgIGFyZ190eXBlcyA9IGNpZi0+YXJnX3R5cGVzOwpAQCAtNDk4LDEyICs1MDUsMjEgQEAKIHsKICAgdm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKnRyYW1wOwogCisgIC8qIFNhbml0eSBjaGVjayBvbiB0aGUgY2lmIEFCSS4gICovCisgIHsKKyAgICBpbnQgYWJpID0gY2lmLT5hYmk7CisgICAgaWYgKFVOTElLRUxZICghIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSkpKQorICAgICAgcmV0dXJuIEZGSV9CQURfQUJJOworICB9CisKICAgdHJhbXAgPSAodm9sYXRpbGUgdW5zaWduZWQgc2hvcnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogCiAgIHRyYW1wWzBdID0gMHhiYjQ5OwkJLyogbW92IDxjb2RlPiwgJXIxMQkqLwotICAqKHZvaWQgKiB2b2xhdGlsZSAqKSAmdHJhbXBbMV0gPSBmZmlfY2xvc3VyZV91bml4NjQ7CisgICooKHVuc2lnbmVkIGxvbmcgbG9uZyAqIHZvbGF0aWxlKSAmdHJhbXBbMV0pCisgICAgPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfdW5peDY0OwogICB0cmFtcFs1XSA9IDB4YmE0OTsJCS8qIG1vdiA8ZGF0YT4sICVyMTAJKi8KLSAgKih2b2lkICogdm9sYXRpbGUgKikgJnRyYW1wWzZdID0gY29kZWxvYzsKKyAgKigodW5zaWduZWQgbG9uZyBsb25nICogdm9sYXRpbGUpICZ0cmFtcFs2XSkKKyAgICA9ICh1bnNpZ25lZCBsb25nKSBjb2RlbG9jOwogCiAgIC8qIFNldCB0aGUgY2FycnkgYml0IGlmZiB0aGUgZnVuY3Rpb24gdXNlcyBhbnkgc3NlIHJlZ2lzdGVycy4KICAgICAgVGhpcyBpcyBjbGMgb3Igc3RjLCB0b2dldGhlciB3aXRoIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBqbXAuICAqLwpAQCAtNTQyLDcgKzU1OCw3IEBACiAJewogCSAgLyogVGhlIHJldHVybiB2YWx1ZSBnb2VzIGluIG1lbW9yeS4gIEFycmFuZ2UgZm9yIHRoZSBjbG9zdXJlCiAJICAgICByZXR1cm4gdmFsdWUgdG8gZ28gZGlyZWN0bHkgYmFjayB0byB0aGUgb3JpZ2luYWwgY2FsbGVyLiAgKi8KLQkgIHJ2YWx1ZSA9ICh2b2lkICopIHJlZ19hcmdzLT5ncHJbZ3ByY291bnQrK107CisJICBydmFsdWUgPSAodm9pZCAqKSAodW5zaWduZWQgbG9uZykgcmVnX2FyZ3MtPmdwcltncHJjb3VudCsrXTsKIAkgIC8qIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcgaW4gYXNtIGZvciB0aGUgcmV0dXJuLiAgKi8KIAkgIHJldCA9IEZGSV9UWVBFX1ZPSUQ7CiAJfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oCmluZGV4IDg5YTg5ODMuLmY0NDI2NTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpdGFyZ2V0LmgKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAxMCAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzLCAyMDEwICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgeDg2IGFuZCB4ODYtNjQuCiAKQEAgLTI5LDggKzMwLDE1IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBGb3IgY29kZSBjb21tb24gdG8gYWxsIHBsYXRmb3JtcyBvbiB4ODYgYW5kIHg4Nl82NC4gKi8KKyNkZWZpbmUgWDg2X0FOWQorCiAjaWYgZGVmaW5lZCAoWDg2XzY0KSAmJiBkZWZpbmVkIChfX2kzODZfXykKICN1bmRlZiBYODZfNjQKICNkZWZpbmUgWDg2CkBAIC0zOCw3ICs0Niw3IEBACiAKICNpZmRlZiBYODZfV0lONjQKICNkZWZpbmUgRkZJX1NJWkVPRl9BUkcgOAotI2RlZmluZSBVU0VfQlVJTFRJTl9GRlMgMCAvLyBub3QgeWV0IGltcGxlbWVudGVkIGluIG1pbmd3LTY0IAorI2RlZmluZSBVU0VfQlVJTFRJTl9GRlMgMCAvKiBub3QgeWV0IGltcGxlbWVudGVkIGluIG1pbmd3LTY0ICovCiAjZW5kaWYKIAogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTUzLDkgKzYxLDE1IEBACiB0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgICAgZmZpX3Nhcmc7CiAjZW5kaWYKICNlbHNlCisjaWYgZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIF9fTFA2NF9fCisjZGVmaW5lIEZGSV9TSVpFT0ZfQVJHIDgKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nICAgICBmZmlfYXJnOwordHlwZWRlZiBsb25nIGxvbmcgICAgICAgICAgICAgIGZmaV9zYXJnOworI2Vsc2UKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwogI2VuZGlmCisjZW5kaWYKIAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKQEAgLTY0LDI4ICs3OCwzMiBAQAogI2lmZGVmIFg4Nl9XSU4zMgogICBGRklfU1lTViwKICAgRkZJX1NURENBTEwsCi0gIC8qIFRPRE86IEFkZCBmYXN0Y2FsbCBzdXBwb3J0IGZvciB0aGUgc2FrZSBvZiBjb21wbGV0ZW5lc3MgKi8KLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCisgIEZGSV9USElTQ0FMTCwKKyAgRkZJX0ZBU1RDQUxMLAorICBGRklfTVNfQ0RFQ0wsCisgIEZGSV9MQVNUX0FCSSwKKyNpZmRlZiBfTVNDX1ZFUgorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTVNfQ0RFQ0wKKyNlbHNlCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiAjZW5kaWYKIAotI2lmZGVmIFg4Nl9XSU42NAorI2VsaWYgZGVmaW5lZChYODZfV0lONjQpCiAgIEZGSV9XSU42NCwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1dJTjY0LAotI2Vsc2UKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfV0lONjQKIAorI2Vsc2UKICAgLyogLS0tLSBJbnRlbCB4ODYgYW5kIEFNRCB4ODYtNjQgLSAqLwotI2lmICFkZWZpbmVkKFg4Nl9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX19hbWQ2NCkpCiAgIEZGSV9TWVNWLAogICBGRklfVU5JWDY0LCAgIC8qIFVuaXggdmFyaWFudHMgYWxsIHVzZSB0aGUgc2FtZSBBQkkgZm9yIHg4Ni02NCAgKi8KKyAgRkZJX0xBU1RfQUJJLAogI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19pMzg2KQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKICNlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYNjQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9VTklYNjQKICNlbmRpZgogI2VuZGlmCi0jZW5kaWYgLyogWDg2X1dJTjY0ICovCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQogfSBmZmlfYWJpOwogI2VuZGlmCiAKQEAgLTk1LDEzICsxMTMsMTQgQEAKICNkZWZpbmUgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCIChGRklfVFlQRV9MQVNUICsgMSkKICNkZWZpbmUgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCIChGRklfVFlQRV9MQVNUICsgMikKICNkZWZpbmUgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCIChGRklfVFlQRV9MQVNUICsgMykKKyNkZWZpbmUgRkZJX1RZUEVfTVNfU1RSVUNUICAgICAgIChGRklfVFlQRV9MQVNUICsgNCkKIAogI2lmIGRlZmluZWQgKFg4Nl82NCkgfHwgKGRlZmluZWQgKF9feDg2XzY0X18pICYmIGRlZmluZWQgKFg4Nl9EQVJXSU4pKQogI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI0CiAjZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCiAjZWxzZQogI2lmZGVmIFg4Nl9XSU4zMgotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEzCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgNTIKICNlbHNlCiAjaWZkZWYgWDg2X1dJTjY0CiAjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TCmluZGV4IGY0YjZjMWUuLmYxMDhkZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3N5c3YuUwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDEtMjAwMywgMjAwNSwgMjAwOCAgUmVkIEhhdCwgSW5jLgorICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4LCAyMDAxLTIwMDMsIDIwMDUsIDIwMDgsIDIwMTAgIFJlZCBIYXQsIEluYy4KICAgIAogICAgWDg2IEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAogCkBAIC00OCw2ICs0OCw5IEBACiAJbW92bCAgMTYoJWVicCksJWVjeAogCXN1YmwgICVlY3gsJWVzcAogCisgICAgICAgIC8qIEFsaWduIHRoZSBzdGFjayBwb2ludGVyIHRvIDE2LWJ5dGVzICovCisgICAgICAgIGFuZGwgICQweGZmZmZmZmYwLCAlZXNwCisKIAltb3ZsICAlZXNwLCVlYXgKIAogCS8qIFBsYWNlIGFsbCBvZiB0aGUgZmZpX3ByZXBfYXJncyBpbiBwb3NpdGlvbiAgKi8KQEAgLTMyNSwyMyArMzI4LDUyIEBACiAJLnNpemUJZmZpX2Nsb3N1cmVfcmF3X1NZU1YsIC4tZmZpX2Nsb3N1cmVfcmF3X1NZU1YKICNlbmRpZgogCisjaWYgZGVmaW5lZCBfX1BJQ19fCisjIGlmIGRlZmluZWQgX19zdW5fXyAmJiBkZWZpbmVkIF9fc3ZyNF9fCisvKiAzMi1iaXQgU29sYXJpcyAyL3g4NiB1c2VzIGRhdGFyZWwgZW5jb2RpbmcgZm9yIFBJQy4gIEdOVSBsZCBiZWZvcmUgMi4yMgorICAgZG9lc24ndCBjb3JyZWN0bHkgc29ydCAuZWhfZnJhbWVfaGRyIHdpdGggbWl4ZWQgZW5jb2RpbmdzLCBzbyBtYXRjaCB0aGlzLiAgKi8KKyMgIGRlZmluZSBGREVfRU5DT0RJTkcJCTB4MzAJLyogZGF0YXJlbCAqLworIyAgZGVmaW5lIEZERV9FTkNPREUoWCkJCVhAR09UT0ZGCisjIGVsc2UKKyMgIGRlZmluZSBGREVfRU5DT0RJTkcJCTB4MWIJLyogcGNyZWwgc2RhdGE0ICovCisjICBpZiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCisjICAgZGVmaW5lIEZERV9FTkNPREUoWCkJWC0uCisjICBlbHNlCisjICAgZGVmaW5lIEZERV9FTkNPREUoWCkJWEByZWwKKyMgIGVuZGlmCisjIGVuZGlmCisjZWxzZQorIyBkZWZpbmUgRkRFX0VOQ09ESU5HCQkwCS8qIGFic29sdXRlICovCisjIGRlZmluZSBGREVfRU5DT0RFKFgpCQlYCisjZW5kaWYKKwogCS5zZWN0aW9uCS5laF9mcmFtZSxFSF9GUkFNRV9GTEFHUyxAcHJvZ2JpdHMKIC5MZnJhbWUxOgogCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQkvKiBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5ICovCiAuTFNDSUUxOgogCS5sb25nCTB4MAkvKiBDSUUgSWRlbnRpZmllciBUYWcgKi8KIAkuYnl0ZQkweDEJLyogQ0lFIFZlcnNpb24gKi8KKyNpZmRlZiBIQVZFX0FTX0FTQ0lJX1BTRVVET19PUAogI2lmZGVmIF9fUElDX18KIAkuYXNjaWkgInpSXDAiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KICNlbHNlCiAJLmFzY2lpICJcMCIJLyogQ0lFIEF1Z21lbnRhdGlvbiAqLwogI2VuZGlmCisjZWxpZiBkZWZpbmVkIEhBVkVfQVNfU1RSSU5HX1BTRVVET19PUAorI2lmZGVmIF9fUElDX18KKwkuc3RyaW5nICJ6UiIJLyogQ0lFIEF1Z21lbnRhdGlvbiAqLworI2Vsc2UKKwkuc3RyaW5nICIiCS8qIENJRSBBdWdtZW50YXRpb24gKi8KKyNlbmRpZgorI2Vsc2UKKyNlcnJvciBtaXNzaW5nIC5hc2NpaS8uc3RyaW5nCisjZW5kaWYKIAkuYnl0ZQkweDEJLyogLnVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yICovCiAJLmJ5dGUJMHg3YwkvKiAuc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvciAqLwogCS5ieXRlCTB4OAkvKiBDSUUgUkEgQ29sdW1uICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MQkvKiAudWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplICovCi0JLmJ5dGUJMHgxYgkvKiBGREUgRW5jb2RpbmcgKHBjcmVsIHNkYXRhNCkgKi8KKwkuYnl0ZQlGREVfRU5DT0RJTkcKICNlbmRpZgogCS5ieXRlCTB4YwkvKiBEV19DRkFfZGVmX2NmYSAqLwogCS5ieXRlCTB4NAkvKiAudWxlYjEyOCAweDQgKi8KQEAgLTM1NCwxNCArMzg2LDggQEAKIAkubG9uZwkuTEVGREUxLS5MQVNGREUxCS8qIEZERSBMZW5ndGggKi8KIC5MQVNGREUxOgogCS5sb25nCS5MQVNGREUxLS5MZnJhbWUxCS8qIEZERSBDSUUgb2Zmc2V0ICovCi0jaWYgZGVmaW5lZCBfX1BJQ19fICYmIGRlZmluZWQgSEFWRV9BU19YODZfUENSRUwKLQkubG9uZwkuTEZCMS0uCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCi0jZWxpZiBkZWZpbmVkIF9fUElDX18KLQkubG9uZwkuTEZCMUByZWwKLSNlbHNlCi0JLmxvbmcJLkxGQjEKLSNlbmRpZgotCS5sb25nCS5MRkUxLS5MRkIxCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCisJLmxvbmcJRkRFX0VOQ09ERSguTEZCMSkJLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KKwkubG9uZwkuTEZFMS0uTEZCMQkJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KICNpZmRlZiBfX1BJQ19fCiAJLmJ5dGUJMHgwCS8qIC51bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUgKi8KICNlbmRpZgpAQCAtMzgxLDE0ICs0MDcsOCBAQAogCS5sb25nCS5MRUZERTItLkxBU0ZERTIJLyogRkRFIExlbmd0aCAqLwogLkxBU0ZERTI6CiAJLmxvbmcJLkxBU0ZERTItLkxmcmFtZTEJLyogRkRFIENJRSBvZmZzZXQgKi8KLSNpZiBkZWZpbmVkIF9fUElDX18gJiYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAotCS5sb25nCS5MRkIyLS4JLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KLSNlbGlmIGRlZmluZWQgX19QSUNfXwotCS5sb25nCS5MRkIyQHJlbAotI2Vsc2UKLQkubG9uZwkuTEZCMgotI2VuZGlmCi0JLmxvbmcJLkxGRTItLkxGQjIJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KKwkubG9uZwlGREVfRU5DT0RFKC5MRkIyKQkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLworCS5sb25nCS5MRkUyLS5MRkIyCQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDAJLyogLnVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZSAqLwogI2VuZGlmCkBAIC00MTcsMTQgKzQzNyw4IEBACiAJLmxvbmcJLkxFRkRFMy0uTEFTRkRFMwkvKiBGREUgTGVuZ3RoICovCiAuTEFTRkRFMzoKIAkubG9uZwkuTEFTRkRFMy0uTGZyYW1lMQkvKiBGREUgQ0lFIG9mZnNldCAqLwotI2lmIGRlZmluZWQgX19QSUNfXyAmJiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCi0JLmxvbmcJLkxGQjMtLgkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLwotI2VsaWYgZGVmaW5lZCBfX1BJQ19fCi0JLmxvbmcJLkxGQjNAcmVsCi0jZWxzZQotCS5sb25nCS5MRkIzCi0jZW5kaWYKLQkubG9uZwkuTEZFMy0uTEZCMwkvKiBGREUgYWRkcmVzcyByYW5nZSAqLworCS5sb25nCUZERV9FTkNPREUoLkxGQjMpCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCisJLmxvbmcJLkxGRTMtLkxGQjMJCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MAkvKiAudWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUwppbmRleCBmZTNmNGZkLi43YTY2MTlhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TCkBAIC0zMjQsNyArMzI0LDExIEBACiAuTFVXOToKIAkuc2l6ZQlmZmlfY2xvc3VyZV91bml4NjQsLi1mZmlfY2xvc3VyZV91bml4NjQKIAorI2lmZGVmIEhBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEUKKwkuc2VjdGlvbgkuZWhfZnJhbWUsImEiLEB1bndpbmQKKyNlbHNlCiAJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMKKyNlbmRpZgogLkxmcmFtZTE6CiAJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCQkvKiBDSUUgTGVuZ3RoICovCiAuTFNDSUUxOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjMyLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUwppbmRleCBhYzFlZDZmLi4yNGI3YmJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUwpAQCAtNDUsNiArNDUsNyBAQAogZmZpX2NhbGxfd2luMzIgUFJPQyBORUFSLAogICAgIGZmaV9wcmVwX2FyZ3MgOiBORUFSIFBUUiBEV09SRCwKICAgICBlY2lmICAgICAgICAgIDogTkVBUiBQVFIgRFdPUkQsCisgICAgY2lmX2FiaSAgICAgICA6IERXT1JELAogICAgIGNpZl9ieXRlcyAgICAgOiBEV09SRCwKICAgICBjaWZfZmxhZ3MgICAgIDogRFdPUkQsCiAgICAgcnZhbHVlICAgICAgICA6IE5FQVIgUFRSIERXT1JELApAQCAtNjQsNiArNjUsMTkgQEAKICAgICAgICAgOzsgUmV0dXJuIHN0YWNrIHRvIHByZXZpb3VzIHN0YXRlIGFuZCBjYWxsIHRoZSBmdW5jdGlvbgogICAgICAgICBhZGQgIGVzcCwgOAogCisJOzsgSGFuZGxlIHRoaXNjYWxsIGFuZCBmYXN0Y2FsbAorCWNtcCBjaWZfYWJpLCAzIDs7IEZGSV9USElTQ0FMTAorCWp6IGRvX3RoaXNjYWxsCisJY21wIGNpZl9hYmksIDQgOzsgRkZJX0ZBU1RDQUxMCisJam56IGRvX3N0ZGNhbGwKKwltb3YgZWN4LCBEV09SRCBQVFIgW2VzcF0KKwltb3YgZWR4LCBEV09SRCBQVFIgW2VzcCs0XQorCWFkZCBlc3AsIDgKKwlqbXAgZG9fc3RkY2FsbAorZG9fdGhpc2NhbGw6CisJbW92IGVjeCwgRFdPUkQgUFRSIFtlc3BdCisJYWRkIGVzcCwgNAorZG9fc3RkY2FsbDoKICAgICAgICAgY2FsbCBmbgogCiAgICAgICAgIDs7IGNkZWNsOiAgIHdlIHJlc3RvcmUgZXNwIGluIHRoZSBlcGlsb2d1ZSwgc28gdGhlcmUncyBubyBuZWVkIHRvCkBAIC05NCwzMSArMTA4LDM3IEBACiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjYV9yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNhX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHN0cnVjdDFiICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c3RydWN0MmIgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKKyAgICAgICAgZGQgb2Zmc2V0IGNhX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX01TX1NUUlVDVAogCi1jYV9yZXRpbnQ4OgotICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCi0gICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYWwKLSAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKKyAgICAgICAgLyogU2lnbi96ZXJvIGV4dGVuZCBhcyBhcHByb3ByaWF0ZS4gICovCitjYV9yZXR1aW50ODoKKyAgICAgICAgbW92enggZWF4LCBhbAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKIAotY2FfcmV0aW50MTY6Ci0gICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92ICAgZWN4LCBydmFsdWUKLSAgICAgICAgbW92ICAgW2VjeCArIDBdLCBheAotICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQorY2FfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgYWwKKyAgICAgICAgam1wICAgY2FfcmV0aW50CisKK2NhX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBheAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKKworY2FfcmV0c2ludDE2OgorICAgICAgICBtb3ZzeCBlYXgsIGF4CisgICAgICAgIGptcCAgIGNhX3JldGludAogCiBjYV9yZXRpbnQ6CiAgICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKQEAgLTE1MSwxMSArMTcxLDMxIEBACiAgICAgICAgIGZzdHAgIFRCWVRFIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQogCitjYV9yZXRzdHJ1Y3QxYjoKKyAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQorICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQorICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGFsCisgICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCisKK2NhX3JldHN0cnVjdDJiOgorICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCisgICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYXgKKyAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKKwogY2FfZXBpbG9ndWU6CiAgICAgICAgIDs7IEVwaWxvZ3VlIGNvZGUgaXMgYXV0b2dlbmVyYXRlZC4KICAgICAgICAgcmV0CiBmZmlfY2FsbF93aW4zMiBFTkRQCiAKK2ZmaV9jbG9zdXJlX1RISVNDQUxMIFBST0MgTkVBUiBGT1JDRUZSQU1FCisJc3ViCWVzcCwgNDAKKwlsZWEJZWR4LCBbZWJwIC0yNF0KKwltb3YJW2VicCAtIDEyXSwgZWR4CS8qIHJlc3AgKi8KKwlsZWEJZWR4LCBbZWJwICsgMTJdICAvKiBhY2NvdW50IGZvciBzdHViIHJldHVybiBhZGRyZXNzIG9uIHN0YWNrICovCisJam1wCXN0dWIKK2ZmaV9jbG9zdXJlX1RISVNDQUxMIEVORFAKKwogZmZpX2Nsb3N1cmVfU1lTViBQUk9DIE5FQVIgRk9SQ0VGUkFNRQogICAgIDs7IHRoZSBmZmlfY2xvc3VyZSBjdHggaXMgcGFzc2VkIGluIGVheCBieSB0aGUgdHJhbXBvbGluZS4KIApAQCAtMTYzLDYgKzIwMyw3IEBACiAgICAgICAgIGxlYSAgZWR4LCBbZWJwIC0gMjRdCiAgICAgICAgIG1vdiAgW2VicCAtIDEyXSwgZWR4ICAgICAgICAgOzsgcmVzcAogICAgICAgICBsZWEgIGVkeCwgW2VicCArIDhdCitzdHViOjoKICAgICAgICAgbW92ICBbZXNwICsgOF0sIGVkeCAgICAgICAgICA7OyBhcmdzCiAgICAgICAgIGxlYSAgZWR4LCBbZWJwIC0gMTJdCiAgICAgICAgIG1vdiAgW2VzcCArIDRdLCBlZHggICAgICAgICAgOzsgJnJlc3AKQEAgLTE3OSwyNiArMjIwLDM1IEBACiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjc19yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHN0cnVjdCAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldG1zc3RydWN0ICAgIDs7IEZGSV9UWVBFX01TX1NUUlVDVAogCi1jc19yZXRpbnQ4OgotICAgICAgICBtb3YgICBhbCwgW2VjeF0KK2NzX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCiAKLWNzX3JldGludDE2OgotICAgICAgICBtb3YgICBheCwgW2VjeF0KK2NzX3JldHNpbnQ4OgorICAgICAgICBtb3ZzeCBlYXgsIEJZVEUgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCisKK2NzX3JldHVpbnQxNjoKKyAgICAgICAgbW92enggZWF4LCBXT1JEIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQorCitjc19yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgV09SRCBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKIAogY3NfcmV0aW50OgpAQCAtMjI3LDYgKzI3NywxMiBAQAogICAgICAgICA7OyBFcGlsb2d1ZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuCiAgICAgICAgIHJldAk0CiAKK2NzX3JldG1zc3RydWN0OgorICAgICAgICA7OyBDYWxsZXIgZXhwZWN0cyB1cyB0byByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZWFsIHJldHVybiB2YWx1ZS4KKyAgICAgICAgbW92ICAgZWF4LCBlY3gKKyAgICAgICAgOzsgQ2FsbGVyIGRvZXNuJ3QgZXhwZWN0cyB1cyB0byBwb3Agc3RydWN0IHJldHVybiB2YWx1ZSBwb2ludGVyIGhpZGRlbiBhcmcuCisgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCisKIGNzX2VwaWxvZ3VlOgogICAgICAgICA7OyBFcGlsb2d1ZSBjb2RlIGlzIGF1dG9nZW5lcmF0ZWQuCiAgICAgICAgIHJldApAQCAtMjM5LDcgKzI5NSwxNiBAQAogI2RlZmluZSBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUIChSQVdfQ0xPU1VSRV9GVU5fT0ZGU0VUICsgNCkKICNkZWZpbmUgQ0lGX0ZMQUdTX09GRlNFVCAyMAogCi1mZmlfY2xvc3VyZV9yYXdfU1lTViBQUk9DIE5FQVIgVVNFUyBlc2kKK2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBQUk9DIE5FQVIgVVNFUyBlc2kgRk9SQ0VGUkFNRQorCXN1YiBlc3AsIDM2CisJbW92ICBlc2ksIFtlYXggKyBSQVdfQ0xPU1VSRV9DSUZfT0ZGU0VUXSAgICAgICAgOzsgY2xvc3VyZS0+Y2lmCisJbW92ICBlZHgsIFtlYXggKyBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUXSAgOzsgY2xvc3VyZS0+dXNlcl9kYXRhCisJbW92IFtlc3AgKyAxMl0sIGVkeAorCWxlYSBlZHgsIFtlYnAgKyAxMl0KKwlqbXAgc3R1YnJhdworZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIEVORFAKKworZmZpX2Nsb3N1cmVfcmF3X1NZU1YgUFJPQyBORUFSIFVTRVMgZXNpIEZPUkNFRlJBTUUKICAgICA7OyB0aGUgZmZpX2Nsb3N1cmUgY3R4IGlzIHBhc3NlZCBpbiBlYXggYnkgdGhlIHRyYW1wb2xpbmUuCiAKICAgICAgICAgc3ViICBlc3AsIDQwCkBAIC0yNDcsNiArMzEyLDcgQEAKICAgICAgICAgbW92ICBlZHgsIFtlYXggKyBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUXSAgOzsgY2xvc3VyZS0+dXNlcl9kYXRhCiAgICAgICAgIG1vdiAgW2VzcCArIDEyXSwgZWR4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVzZXJfZGF0YQogICAgICAgICBsZWEgIGVkeCwgW2VicCArIDhdCitzdHVicmF3OjoKICAgICAgICAgbW92ICBbZXNwICsgOF0sIGVkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgcmF3X2FyZ3MKICAgICAgICAgbGVhICBlZHgsIFtlYnAgLSAyNF0KICAgICAgICAgbW92ICBbZXNwICsgNF0sIGVkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgJnJlcwpAQCAtMjY0LDI2ICszMzAsMzUgQEAKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGZsb2F0ICAgICAgIDs7IEZGSV9UWVBFX0ZMT0FUCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRkb3VibGUgICAgICA7OyBGRklfVFlQRV9ET1VCTEUKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGxvbmdkb3VibGUgIDs7IEZGSV9UWVBFX0xPTkdET1VCTEUKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2Ci0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHVpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0dWludDE2ICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1VJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9VSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY3JfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfU1RSVUNUCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9QT0lOVEVSCi0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QgorICAgICAgICBkZCBvZmZzZXQgY3JfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfTVNfU1RSVUNUCiAKLWNyX3JldGludDg6Ci0gICAgICAgIG1vdiAgIGFsLCBbZWN4XQorY3JfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKIAotY3JfcmV0aW50MTY6Ci0gICAgICAgIG1vdiAgIGF4LCBbZWN4XQorY3JfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgQllURSBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKKworY3JfcmV0dWludDE2OgorICAgICAgICBtb3Z6eCBlYXgsIFdPUkQgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCisKK2NyX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBXT1JEIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjcl9lcGlsb2d1ZQogCiBjcl9yZXRpbnQ6CkBAIC0zMzcsMjYgKzQxMiwzNCBAQAogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjZF9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjZF9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCiAKLWNkX3JldGludDg6Ci0gICAgICAgIG1vdiAgIGFsLCBbZWN4XQorY2RfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKIAotY2RfcmV0aW50MTY6Ci0gICAgICAgIG1vdiAgIGF4LCBbZWN4XQorY2RfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgQllURSBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKKworY2RfcmV0dWludDE2OgorICAgICAgICBtb3Z6eCBlYXgsIFdPUkQgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCisKK2NkX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBXT1JEIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjZF9lcGlsb2d1ZQogCiBjZF9yZXRpbnQ6CkBAIC0zOTUsNyArNDc4LDkgQEAKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KICAgICAgICAgLmJhbGlnbiAxNgogCS5nbG9ibAlfZmZpX2NhbGxfd2luMzIKKyNpZm5kZWYgX19PUzJfXwogCS5kZWYJX2ZmaV9jYWxsX3dpbjMyOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jYWxsX3dpbjMyOgogLkxGQjE6CiAgICAgICAgIHB1c2hsICVlYnAKQEAgLTQwMyw3ICs0ODgsNyBAQAogICAgICAgICBtb3ZsICAlZXNwLCVlYnAKIC5MQ0ZJMToKICAgICAgICAgIyBNYWtlIHJvb20gZm9yIGFsbCBvZiB0aGUgbmV3IGFyZ3MuCi0gICAgICAgIG1vdmwgIDE2KCVlYnApLCVlY3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBtb3ZsICAyMCglZWJwKSwlZWN4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgc3VibCAgJWVjeCwlZXNwCiAgCiAgICAgICAgIG1vdmwgICVlc3AsJWVheApAQCAtNDE1LDE5ICs1MDAsMzQgQEAKICAKICAgICAgICAgIyBSZXR1cm4gc3RhY2sgdG8gcHJldmlvdXMgc3RhdGUgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uCiAgICAgICAgIGFkZGwgICQ4LCVlc3AKLSAKKworCSMgSGFuZGxlIGZhc3RjYWxsIGFuZCB0aGlzY2FsbAorCWNtcGwgJDMsIDE2KCVlYnApICAjIEZGSV9USElTQ0FMTAorCWp6IC5kb190aGlzY2FsbAorCWNtcGwgJDQsIDE2KCVlYnApICMgRkZJX0ZBU1RDQUxMCisJam56IC5kb19mbmNhbGwKKwltb3ZsICglZXNwKSwgJWVjeAorCW1vdmwgNCglZXNwKSwgJWVkeAorCWFkZGwgJDgsICVlc3AKKwlqbXAgLmRvX2ZuY2FsbAorLmRvX3RoaXNjYWxsOgorCW1vdmwgKCVlc3ApLCAlZWN4CisJYWRkbCAkNCwgJWVzcAorCisuZG9fZm5jYWxsOgorCSAKICAgICAgICAgIyBGSVhNRTogQWxpZ24gdGhlIHN0YWNrIHRvIGEgMTI4LWJpdCBib3VuZGFyeSB0byBhdm9pZAogICAgICAgICAjIHBvdGVudGlhbCBwZXJmb3JtYW5jZSBoaXRzLgogCi0gICAgICAgIGNhbGwgICoyOCglZWJwKQorICAgICAgICBjYWxsICAqMzIoJWVicCkKICAKICAgICAgICAgIyBzdGRjYWxsIGZ1bmN0aW9ucyBwb3AgYXJndW1lbnRzIG9mZiB0aGUgc3RhY2sgdGhlbXNlbHZlcwogCiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHJldHVybiB0eXBlIGNvZGUKLSAgICAgICAgbW92bCAgMjAoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CiAgCiAgICAgICAgICMgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCi0gICAgICAgIGNtcGwgICQwLDI0KCVlYnApCisgICAgICAgIGNtcGwgICQwLDI4KCVlYnApCiAgICAgICAgIGpuZSAgIDBmCiAgCiAgICAgICAgICMgRXZlbiBpZiB0aGVyZSBpcyBubyBzcGFjZSBmb3IgdGhlIHJldHVybiB2YWx1ZSwgd2UgYXJlCkBAIC00NjAsNiArNTYwLDcgQEAKIAkubG9uZwkuTHJldHN0cnVjdDFiCQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIgKi8KIAkubG9uZwkuTHJldHN0cnVjdDJiCQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKi8KIAkubG9uZwkuTHJldHN0cnVjdDRiCQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKi8KKwkubG9uZwkuTHJldHN0cnVjdAkJLyogRkZJX1RZUEVfTVNfU1RSVUNUICovCiAxOgogCWFkZAklZWN4LCAlZWN4CiAJYWRkCSVlY3gsICVlY3gKQEAgLTQ4Niw1MCArNTg3LDUwIEBACiAKIC5McmV0aW50OgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmwgICVlYXgsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldGZsb2F0OgogICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBmc3RwcyAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRkb3VibGU6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgZnN0cGwgKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0bG9uZ2RvdWJsZToKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBmc3RwdCAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRpbnQ2NDoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3ZsICAlZWF4LDAoJWVjeCkKICAgICAgICAgbW92bCAgJWVkeCw0KCVlY3gpCiAJam1wICAgLkxlcGlsb2d1ZQogCiAuTHJldHN0cnVjdDFiOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmIgICVhbCwwKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0c3RydWN0MmI6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92dyAgJWF4LDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogCiAuTHJldHN0cnVjdDRiOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmwgICVlYXgsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAKQEAgLTU0MiwxMiArNjQzLDI3IEBACiAgICAgICAgIHBvcGwgJWVicAogICAgICAgICByZXQKIC5mZmlfY2FsbF93aW4zMl9lbmQ6CisgICAgICAgIC5iYWxpZ24gMTYKKwkuZ2xvYmwJX2ZmaV9jbG9zdXJlX1RISVNDQUxMCisjaWZuZGVmIF9fT1MyX18KKwkuZGVmCV9mZmlfY2xvc3VyZV9USElTQ0FMTDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKK19mZmlfY2xvc3VyZV9USElTQ0FMTDoKKwlwdXNobAklZWJwCisJbW92bAklZXNwLCAlZWJwCisJc3VibAkkNDAsICVlc3AKKwlsZWFsCS0yNCglZWJwKSwgJWVkeAorCW1vdmwJJWVkeCwgLTEyKCVlYnApCS8qIHJlc3AgKi8KKwlsZWFsCTEyKCVlYnApLCAlZWR4ICAvKiBhY2NvdW50IGZvciBzdHViIHJldHVybiBhZGRyZXNzIG9uIHN0YWNrICovCisJam1wCS5zdHViCiAuTEZFMToKIAogICAgICAgICAjIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogICAgICAgICAuYmFsaWduIDE2CiAJLmdsb2JsCV9mZmlfY2xvc3VyZV9TWVNWCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2xvc3VyZV9TWVNWOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jbG9zdXJlX1NZU1Y6CiAuTEZCMzoKIAlwdXNobAklZWJwCkBAIC01NTgsNiArNjc0LDcgQEAKIAlsZWFsCS0yNCglZWJwKSwgJWVkeAogCW1vdmwJJWVkeCwgLTEyKCVlYnApCS8qIHJlc3AgKi8KIAlsZWFsCTgoJWVicCksICVlZHgKKy5zdHViOgogCW1vdmwJJWVkeCwgNCglZXNwKQkvKiBhcmdzID0gX19idWlsdGluX2R3YXJmX2NmYSAoKSAqLwogCWxlYWwJLTEyKCVlYnApLCAlZWR4CiAJbW92bAklZWR4LCAoJWVzcCkJLyogJnJlc3AgKi8KQEAgLTU4Niw2ICs3MDMsNyBAQAogCS5sb25nCS5MY2xzX3JldHN0cnVjdDEJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCICovCiAJLmxvbmcJLkxjbHNfcmV0c3RydWN0MgkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKi8KIAkubG9uZwkuTGNsc19yZXRzdHJ1Y3Q0CS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QiAqLworCS5sb25nCS5MY2xzX3JldG1zc3RydWN0CS8qIEZGSV9UWVBFX01TX1NUUlVDVCAqLwogCiAxOgogCWFkZAklZWF4LCAlZWF4CkBAIC02NTAsNiArNzY4LDEyIEBACiAJcG9wbAklZWJwCiAJcmV0CSQweDQKIAorLkxjbHNfcmV0bXNzdHJ1Y3Q6CisJIyBDYWxsZXIgZXhwZWN0cyB1cyB0byByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZWFsIHJldHVybiB2YWx1ZS4KKwltb3YJJWVjeCwgJWVheAorCSMgQ2FsbGVyIGRvZXNuJ3QgZXhwZWN0cyB1cyB0byBwb3Agc3RydWN0IHJldHVybiB2YWx1ZSBwb2ludGVyIGhpZGRlbiBhcmcuCisJam1wCS5MY2xzX2VwaWxvZ3VlCisKIC5MY2xzX25vcmV0dmFsOgogLkxjbHNfZXBpbG9ndWU6CiAJbW92bAklZWJwLCAlZXNwCkBAIC02NjQsMTEgKzc4OCwyNyBAQAogI2RlZmluZSBSQVdfQ0xPU1VSRV9GVU5fT0ZGU0VUIChSQVdfQ0xPU1VSRV9DSUZfT0ZGU0VUICsgNCkKICNkZWZpbmUgUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCAoUkFXX0NMT1NVUkVfRlVOX09GRlNFVCArIDQpCiAjZGVmaW5lIENJRl9GTEFHU19PRkZTRVQgMjAKLQorICAgICAgICAuYmFsaWduIDE2CisJLmdsb2JsCV9mZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwKKyNpZm5kZWYgX19PUzJfXworCS5kZWYJX2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKK19mZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEw6CisJcHVzaGwJJWVicAorCW1vdmwJJWVzcCwgJWVicAorCXB1c2hsCSVlc2kKKwlzdWJsCSQzNiwgJWVzcAorCW1vdmwJUkFXX0NMT1NVUkVfQ0lGX09GRlNFVCglZWF4KSwgJWVzaQkgLyogY2xvc3VyZS0+Y2lmICovCisJbW92bAlSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUKCVlYXgpLCAlZWR4IC8qIGNsb3N1cmUtPnVzZXJfZGF0YSAqLworCW1vdmwJJWVkeCwgMTIoJWVzcCkJLyogdXNlcl9kYXRhICovCisJbGVhbAkxMiglZWJwKSwgJWVkeAkvKiBfX2J1aWx0aW5fZHdhcmZfY2ZhICgpICovCisJam1wCS5zdHVicmF3CiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAgICAgICAgIC5iYWxpZ24gMTYKIAkuZ2xvYmwJX2ZmaV9jbG9zdXJlX3Jhd19TWVNWCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2xvc3VyZV9yYXdfU1lTVjsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmCisjZW5kaWYKIF9mZmlfY2xvc3VyZV9yYXdfU1lTVjoKIC5MRkI0OgogCXB1c2hsCSVlYnAKQEAgLTY4Miw2ICs4MjIsNyBAQAogCW1vdmwJUkFXX0NMT1NVUkVfVVNFUl9EQVRBX09GRlNFVCglZWF4KSwgJWVkeCAvKiBjbG9zdXJlLT51c2VyX2RhdGEgKi8KIAltb3ZsCSVlZHgsIDEyKCVlc3ApCS8qIHVzZXJfZGF0YSAqLwogCWxlYWwJOCglZWJwKSwgJWVkeAkvKiBfX2J1aWx0aW5fZHdhcmZfY2ZhICgpICovCisuc3R1YnJhdzoKIAltb3ZsCSVlZHgsIDgoJWVzcCkJLyogcmF3X2FyZ3MgKi8KIAlsZWFsCS0yNCglZWJwKSwgJWVkeAogCW1vdmwJJWVkeCwgNCglZXNwKQkvKiAmcmVzICovCkBAIC03MTAsNiArODUxLDcgQEAKIAkubG9uZwkuTHJjbHNfcmV0c3RydWN0MQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIgKi8KIAkubG9uZwkuTHJjbHNfcmV0c3RydWN0MgkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKi8KIAkubG9uZwkuTHJjbHNfcmV0c3RydWN0NAkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKi8KKwkubG9uZwkuTHJjbHNfcmV0c3RydWN0CS8qIEZGSV9UWVBFX01TX1NUUlVDVCAqLwogMToKIAlhZGQJJWVheCwgJWVheAogCWFkZAklZWF4LCAlZWF4CkBAIC03ODQsNyArOTI2LDkgQEAKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KIAkuYmFsaWduCTE2CiAJLmdsb2JsCV9mZmlfY2xvc3VyZV9TVERDQUxMCisjaWZuZGVmIF9fT1MyX18KIAkuZGVmCV9mZmlfY2xvc3VyZV9TVERDQUxMOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jbG9zdXJlX1NURENBTEw6CiAuTEZCNToKIAlwdXNobAklZWJwCkBAIC04OTAsNyArMTAzNCw5IEBACiAuZmZpX2Nsb3N1cmVfU1REQ0FMTF9lbmQ6CiAuTEZFNToKIAorI2lmbmRlZiBfX09TMl9fCiAJLnNlY3Rpb24JLmVoX2ZyYW1lLCJ3IgorI2VuZGlmCiAuTGZyYW1lMToKIC5MU0NJRTE6CiAJLmxvbmcJLkxFQ0lFMS0uTEFTQ0lFMSAgLyogTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3dpbjY0LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUwppbmRleCA2ZTkxODE4Li5mY2RiMjcwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUwpAQCAtMjMyLDEwICsyMzIsMTggQEAKIGZmaV9jYWxsX3dpbjY0IEVORFAKIF9URVhUCUVORFMKIEVORAotI2Vsc2UgICAgICAgIAorCisjZWxzZQorCisjaWZkZWYgU1lNQk9MX1VOREVSU0NPUkUKKyNkZWZpbmUgU1lNQk9MX05BTUUobmFtZSkgXyMjbmFtZQorI2Vsc2UKKyNkZWZpbmUgU1lNQk9MX05BTUUobmFtZSkgbmFtZQorI2VuZGlmCisKIC50ZXh0CiAKLS5leHRlcm4gX2ZmaV9jbG9zdXJlX3dpbjY0X2lubmVyCisuZXh0ZXJuIFNZTUJPTF9OQU1FKGZmaV9jbG9zdXJlX3dpbjY0X2lubmVyKQogCiAjIGZmaV9jbG9zdXJlX3dpbjY0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlc2UgcmVnaXN0ZXJzIHNldDoKICMgICAgcmF4IHBvaW50cyB0byAnY2xvc3VyZScKQEAgLTI0Niw4ICsyNTQsOCBAQAogIyBjYWxsIGZmaV9jbG9zdXJlX3dpbjY0X2lubmVyIGZvciB0aGUgYWN0dWFsIHdvcmssIHRoZW4gcmV0dXJuIHRoZSByZXN1bHQuCiAjIAogCS5iYWxpZ24gMTYKLSAgICAgICAgLmdsb2JsIF9mZmlfY2xvc3VyZV93aW42NAkKLV9mZmlfY2xvc3VyZV93aW42NDogICAgIAorICAgICAgICAuZ2xvYmwgU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjQpCitTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NCk6CiAJIyBjb3B5IHJlZ2lzdGVyIGFyZ3VtZW50cyBvbnRvIHN0YWNrCiAJdGVzdAkkMSwlcjExCiAJam5lCS5MZmlyc3RfaXNfZmxvYXQJCkBAIC0yODcsNyArMjk1LDcgQEAKIAltb3YJJXJheCwgJXJjeAkjIGNvbnRleHQgaXMgZmlyc3QgcGFyYW1ldGVyCiAJbW92CSVyc3AsICVyZHgJIyBzdGFjayBpcyBzZWNvbmQgcGFyYW1ldGVyCiAJYWRkCSQ0OCwgJXJkeAkjIHBvaW50IHRvIHN0YXJ0IG9mIGFyZ3VtZW50cwotCW1vdgkkX2ZmaV9jbG9zdXJlX3dpbjY0X2lubmVyLCAlcmF4CisJbW92CSRTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NF9pbm5lciksICVyYXgKIAljYWxscQkqJXJheAkJIyBjYWxsIHRoZSByZWFsIGNsb3N1cmUgZnVuY3Rpb24KIAlhZGQJJDQwLCAlcnNwCiAJbW92cQklcmF4LCAleG1tMAkjIElmIHRoZSBjbG9zdXJlIHJldHVybmVkIGEgZmxvYXQsCkBAIC0yOTYsOCArMzA0LDggQEAKIC5mZmlfY2xvc3VyZV93aW42NF9lbmQ6CiAKIAkuYmFsaWduIDE2Ci0gICAgICAgIC5nbG9ibAlfZmZpX2NhbGxfd2luNjQKLV9mZmlfY2FsbF93aW42NDogICAgICAgIAorICAgICAgICAuZ2xvYmwJU1lNQk9MX05BTUUoZmZpX2NhbGxfd2luNjQpCitTWU1CT0xfTkFNRShmZmlfY2FsbF93aW42NCk6CiAgICAgICAgICMgY29weSByZWdpc3RlcnMgb250byBzdGFjawogCW1vdgklcjksMzIoJXJzcCkKIAltb3YJJXI4LDI0KCVyc3ApCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtCmluZGV4IGVhZTNkNzQuLjE0NmZkZjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtCkBAIC0xNSw2NiArMTUsNzEgQEAKIAogQ0xFQU5GSUxFUyA9ICouZXhlIGNvcmUqICoubG9nICouc3VtCiAKLUVYVFJBX0RJU1QgPSBsaWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cAlcCi1saWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0X2ZmaV9jYWxsLmNjIGxpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3QuY2MgXAotbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIGNvbmZpZy9kZWZhdWx0LmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIFwKLWxpYi9saWJmZmktZGcuZXhwIGxpYi93cmFwcGVyLmV4cCBsaWJmZmkuY2FsbC9mbG9hdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jIGxpYmZmaS5jYWxsL2Zsb2F0My5jIFwKLWxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgXAotbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgXAotbGliZmZpLmNhbGwvcHJvbW90aW9uLmMgbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAotbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNC5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDIuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIFwKLWxpYmZmaS5jYWxsL2Nsc191aW50LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKLWxpYmZmaS5jYWxsL2Zsb2F0MS5jIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIGxpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDEuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbHNfc3Nob3J0LmMgbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jIFwKLWxpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAotbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ni5jIGxpYmZmaS5jYWxsL3JldHVybl91Yy5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCi1saWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2xvY19mbjAuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCVwKLWxpYmZmaS5jYWxsL3JldHVybl9sbC5jIGxpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIFwKLWxpYmZmaS5jYWxsL2NhbGwuZXhwIGxpYmZmaS5jYWxsL2ZmaXRlc3QuaCBsaWJmZmkuY2FsbC9zdHJsZW4uYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fc2wuYyBsaWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgbGliZmZpLmNhbGwvcmV0dXJuX3VsLmMgXAotbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCi1saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMJXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydGNoYXIuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0LmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAotbGliZmZpLmNhbGwvc3RybGVuX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xkbC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGxpYmZmaS5jYWxsL3N0cnVjdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBsaWJmZmkuY2FsbC9jbHNfc2ludC5jIGxpYmZmaS5jYWxsL2Zsb2F0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgXAotbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0LmMgXAotbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZGJsLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKLWxpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIGxpYmZmaS5jYWxsL3B5b2JqYy10Yy5jCVwKLWxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfc2NoYXIuYyBcCi1saWJmZmkuY2FsbC9jbHNfMThieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBcCi1saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jCVwKLWxpYmZmaS5jYWxsL3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDMuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMJXAotbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgbGliZmZpLmNhbGwvc3RydWN0OS5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBsaWJmZmkuY2FsbC9tYW55LmMgXAotbGliZmZpLmNhbGwvc3RydWN0OC5jIGxpYmZmaS5jYWxsL25lZ2ludC5jIGxpYmZmaS5jYWxsL3N0cnVjdDUuYyBcCi1saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIFwKK0VYVFJBX0RJU1QgPSBjb25maWcvZGVmYXVsdC5leHAgbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgXAorbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYyBcCitsaWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgXAorbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9mZml0ZXN0LmggXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0LmMgXAorbGliZmZpLmNhbGwvc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBcCitsaWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgbGliZmZpLmNhbGwvc3RydWN0OC5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBsaWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIGxpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIFwKK2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jYWxsLmV4cCBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc191aW50LmMgbGliZmZpLmNhbGwvcmV0dXJuX2xsMS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNC5jIGxpYmZmaS5jYWxsL2Nsc191Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW4uYyBcCitsaWJmZmkuY2FsbC9tYW55LmMgbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9hLm91dCBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMy5jIGxpYmZmaS5jYWxsL2Zsb2F0My5jIGxpYmZmaS5jYWxsL21hbnkyLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYyBcCitsaWJmZmkuY2FsbC9jbHNfc3Nob3J0LmMgbGliZmZpLmNhbGwvbWFueV93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMgXAorbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsLmMgbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMgbGliZmZpLmNhbGwvZmxvYXQuYyBcCitsaWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9mbG9hdF92YS5jIGxpYmZmaS5jYWxsL25lZ2ludC5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9kYmwxLmMgbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgXAogbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYyBcCi1saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCitsaWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgXAorbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYyBsaWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCitsaWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbHNfc2ludC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jIFwKK2xpYmZmaS5jYWxsL2Nsc191c2hvcnQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIFwKK2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBcCitsaWJmZmkuY2FsbC9jbHNfZmxvYXQuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIFwKK2xpYmZmaS5jYWxsL3B5b2JqYy10Yy5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnRjaGFyLmMgXAorbGliZmZpLmNhbGwvc3RydWN0MS5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAorbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9wcm9ibGVtMS5jIGxpYmZmaS5jYWxsL2Zsb2F0NC5jIFwKK2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCitsaWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMgbGliZmZpLmNhbGwvc3RydWN0Ni5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9sbC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3QuY2MgbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAgXAorbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC9mZml0ZXN0Y3h4LmggXAorbGliL3dyYXBwZXIuZXhwIGxpYi90YXJnZXQtbGlicGF0aC5leHAgbGliL2xpYmZmaS5leHAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmluIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KaW5kZXggNjk4YzQ2MS4uNGNmNDBjYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4KQEAgLTEsOSArMSw5IEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExIGZyb20gTWFrZWZpbGUuYW0uCisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjMgZnJvbSBNYWtlZmlsZS5hbS4KICMgQGNvbmZpZ3VyZV9pbnB1dEAKIAogIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCi0jIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgSW5jLgorIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KICMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKICMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtNTMsNiArNTMsNyBAQAogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUxMT0NBID0gQEFMTE9DQUAKIEFNVEFSID0gQEFNVEFSQAorQU1fTFRMREZMQUdTID0gQEFNX0xUTERGTEFHU0AKIEFNX1JVTlRFU1RGTEFHUyA9IAogQVIgPSBAQVJACiBBVVRPQ09ORiA9IEBBVVRPQ09ORkAKQEAgLTcwLDYgKzcxLDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtNzcsNiArNzksNyBAQAogRUNIT19UID0gQEVDSE9fVEAKIEVHUkVQID0gQEVHUkVQQAogRVhFRVhUID0gQEVYRUVYVEAKK0ZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKIEZHUkVQID0gQEZHUkVQQAogR1JFUCA9IEBHUkVQQAogSEFWRV9MT05HX0RPVUJMRSA9IEBIQVZFX0xPTkdfRE9VQkxFQApAQCAtOTUsNiArOTgsNyBAQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACiBNS0RJUl9QID0gQE1LRElSX1BACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACkBAIC0xMDcsNiArMTExLDcgQEAKIFBBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACiBQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKIFBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKIFBBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACiBQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKIFJBTkxJQiA9IEBSQU5MSUJACkBAIC0xMjEsNiArMTI2LDcgQEAKIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKIGFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACiBhY19jdF9DQyA9IEBhY19jdF9DQ0AKIGFjX2N0X0RVTVBCSU4gPSBAYWNfY3RfRFVNUEJJTkAKIGFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQApAQCAtMTUzLDcgKzE1OSw2IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbHRfRUNITyA9IEBsdF9FQ0hPQAogbWFuZGlyID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKQEAgLTE4Nyw2OSArMTkyLDc0IEBACiAJICAgIGVsc2UgZWNobyBydW50ZXN0OyBmaWAKIAogQ0xFQU5GSUxFUyA9ICouZXhlIGNvcmUqICoubG9nICouc3VtCi1FWFRSQV9ESVNUID0gbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAJXAotbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIFwKLWxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBjb25maWcvZGVmYXVsdC5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBcCi1saWIvbGliZmZpLWRnLmV4cCBsaWIvd3JhcHBlci5leHAgbGliZmZpLmNhbGwvZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKLWxpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCi1saWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCi1saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKLWxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAotbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBcCi1saWJmZmkuY2FsbC9jYWxsLmV4cCBsaWJmZmkuY2FsbC9mZml0ZXN0LmggbGliZmZpLmNhbGwvc3RybGVuLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwlcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKLWxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgXAotbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKLWxpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCi1saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBsaWJmZmkuY2FsbC9weW9iamMtdGMuYwlcCi1saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgXAotbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYwlcCi1saWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCVwKLWxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAotbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgXAotbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvbWFueS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDguYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitFWFRSQV9ESVNUID0gY29uZmlnL2RlZmF1bHQuZXhwIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zY2hhci5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAorbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvZmZpdGVzdC5oIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cnVjdDguYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCitsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBsaWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBcCitsaWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc2NoYXIuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAorbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2FsbC5leHAgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfdWludC5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjQuYyBsaWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyLmMgbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuLmMgXAorbGliZmZpLmNhbGwvbWFueS5jIGxpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NS5jIGxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvYS5vdXQgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBsaWJmZmkuY2FsbC9mbG9hdDMuYyBsaWJmZmkuY2FsbC9tYW55Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBcCitsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMgXAorbGliZmZpLmNhbGwvY2xzX3NzaG9ydC5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibC5jIGxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvY2xzXzZieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAorbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvZmxvYXRfdmEuYyBsaWJmZmkuY2FsbC9uZWdpbnQuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIGxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIFwKIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMgXAotbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYworbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIGxpYmZmaS5jYWxsL3JldHVybl9zbC5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzXzJieXRlLmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAorbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xzX3NpbnQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc191bG9uZ2xvbmcuYyBcCitsaWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBcCitsaWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgXAorbGliZmZpLmNhbGwvY2xzX2Zsb2F0LmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBcCitsaWJmZmkuY2FsbC9weW9iamMtdGMuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKK2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMgbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCitsaWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAorbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3N0cnVjdDYuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fbGwuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBcCitsaWJmZmkuY2FsbC9jbHNfNGJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYyBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0LmNjIGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIFwKK2xpYi93cmFwcGVyLmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIGxpYi9saWJmZmkuZXhwCiAKIGFsbDogYWxsLWFtCiAKQEAgLTI5OCw3ICszMDgsNyBAQAogCiAKIGNoZWNrLURFSkFHTlU6IHNpdGUuZXhwCi0Jc3JjZGlyPWAkKGFtX19jZCkgJChzcmNkaXIpICYmIHB3ZGA7IGV4cG9ydCBzcmNkaXI7IFwKKwlzcmNkaXI9JyQoc3JjZGlyKSc7IGV4cG9ydCBzcmNkaXI7IFwKIAlFWFBFQ1Q9JChFWFBFQ1QpOyBleHBvcnQgRVhQRUNUOyBcCiAJcnVudGVzdD0kKFJVTlRFU1QpOyBcCiAJaWYgJChTSEVMTCkgLWMgIiQkcnVudGVzdCAtLXZlcnNpb24iID4gL2Rldi9udWxsIDI+JjE7IHRoZW4gXApAQCAtMzA5LDEyICszMTksMTIgQEAKIAllbHNlIGVjaG8gIldBUk5JTkc6IGNvdWxkIG5vdCBmaW5kIFxgcnVudGVzdCciIDE+JjI7IDo7XAogCWZpOyBcCiAJZXhpdCAkJGV4aXRfc3RhdHVzCi1zaXRlLmV4cDogTWFrZWZpbGUKK3NpdGUuZXhwOiBNYWtlZmlsZSAkKEVYVFJBX0RFSkFHTlVfU0lURV9DT05GSUcpCiAJQGVjaG8gJ01ha2luZyBhIG5ldyBzaXRlLmV4cCBmaWxlLi4uJwogCUBlY2hvICcjIyB0aGVzZSB2YXJpYWJsZXMgYXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IG1ha2UgIyMnID5zaXRlLnRtcAogCUBlY2hvICcjIERvIG5vdCBlZGl0IGhlcmUuICBJZiB5b3Ugd2lzaCB0byBvdmVycmlkZSB0aGVzZSB2YWx1ZXMnID4+c2l0ZS50bXAKIAlAZWNobyAnIyBlZGl0IHRoZSBsYXN0IHNlY3Rpb24nID4+c2l0ZS50bXAKLQlAZWNobyAnc2V0IHNyY2RpciAkKHNyY2RpciknID4+c2l0ZS50bXAKKwlAZWNobyAnc2V0IHNyY2RpciAiJChzcmNkaXIpIicgPj5zaXRlLnRtcAogCUBlY2hvICJzZXQgb2JqZGlyIGBwd2RgIiA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCBidWlsZF9hbGlhcyAiJChidWlsZF9hbGlhcykiJyA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCBidWlsZF90cmlwbGV0ICQoYnVpbGRfdHJpcGxldCknID4+c2l0ZS50bXAKQEAgLTMyMiw5ICszMzIsMTYgQEAKIAlAZWNobyAnc2V0IGhvc3RfdHJpcGxldCAkKGhvc3RfdHJpcGxldCknID4+c2l0ZS50bXAKIAlAZWNobyAnc2V0IHRhcmdldF9hbGlhcyAiJCh0YXJnZXRfYWxpYXMpIicgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgdGFyZ2V0X3RyaXBsZXQgJCh0YXJnZXRfdHJpcGxldCknID4+c2l0ZS50bXAKLQlAZWNobyAnIyMgQWxsIHZhcmlhYmxlcyBhYm92ZSBhcmUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gRG8gTm90IEVkaXQgIyMnID4+c2l0ZS50bXAKLQlAdGVzdCAhIC1mIHNpdGUuZXhwIHx8IFwKLQkgIHNlZCAnMSwvXiMjIEFsbCB2YXJpYWJsZXMgYWJvdmUgYXJlLiojIy8gZCcgc2l0ZS5leHAgPj4gc2l0ZS50bXAKKwlAbGlzdD0nJChFWFRSQV9ERUpBR05VX1NJVEVfQ09ORklHKSc7IGZvciBmIGluICQkbGlzdDsgZG8gXAorCSAgZWNobyAiIyMgQmVnaW4gY29udGVudCBpbmNsdWRlZCBmcm9tIGZpbGUgJCRmLiAgRG8gbm90IG1vZGlmeS4gIyMiIFwKKwkgICAmJiBjYXQgYHRlc3QgLWYgIiQkZiIgfHwgZWNobyAnJChzcmNkaXIpLydgJCRmIFwKKwkgICAmJiBlY2hvICIjIyBFbmQgY29udGVudCBpbmNsdWRlZCBmcm9tIGZpbGUgJCRmLiAjIyIgXAorCSAgIHx8IGV4aXQgMTsgXAorCSBkb25lID4+IHNpdGUudG1wCisJQGVjaG8gIiMjIEVuZCBvZiBhdXRvLWdlbmVyYXRlZCBjb250ZW50OyB5b3UgY2FuIGVkaXQgZnJvbSBoZXJlLiAjIyIgPj4gc2l0ZS50bXAKKwlAaWYgdGVzdCAtZiBzaXRlLmV4cDsgdGhlbiBcCisJICAgc2VkIC1lICcxLC9eIyMgRW5kIG9mIGF1dG8tZ2VuZXJhdGVkIGNvbnRlbnQuKiMjL2QnIHNpdGUuZXhwID4+IHNpdGUudG1wOyBcCisJIGZpCiAJQC1ybSAtZiBzaXRlLmJhawogCUB0ZXN0ICEgLWYgc2l0ZS5leHAgfHwgbXYgc2l0ZS5leHAgc2l0ZS5iYWsKIAlAbXYgc2l0ZS50bXAgc2l0ZS5leHAKQEAgLTM4MCwxMCArMzk3LDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS5leHAKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHAKcmVuYW1lIHRvIE1vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwCmluZGV4IDgzOGEzMDYuLjRhNjVlZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwCkBAIC0xLDQgKzEsNCBAQAotIyAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTExLDggKzExLDggQEAKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiBwcm9jIGxvYWRfZ2NjX2xpYiB7IGZpbGVuYW1lIH0gewogICAgIGdsb2JhbCBzcmNkaXIKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgIGdsb2JhbCB0b29sX3Jvb3RfZGlyCiAgICAgZ2xvYmFsIGxkX2xpYnJhcnlfcGF0aAogCi0gICAgc2V0IGJsZGRpcmZmaSBbcHdkXS8uLgorICAgIHNldCBibGRkaXJmZmkgW3B3ZF0vLi4gCiAgICAgdmVyYm9zZSAibGliZmZpICRibGRkaXJmZmkiCiAKICAgICBzZXQgZ2NjZGlyIFtsb29rZm9yX2ZpbGUgJHRvb2xfcm9vdF9kaXIgZ2NjL2xpYmdjYy5hXQpAQCAtMjY2LDYgKzI2Niw1NiBAQAogICAgIH0KIH0KIAorcHJvYyBjaGVjay1mbGFncyB7IGFyZ3MgfSB7CisKKyAgICAjIFRoZSBhcmdzIGFyZSB3aXRoaW4gYW5vdGhlciBsaXN0OyBwdWxsIHRoZW0gb3V0LgorICAgIHNldCBhcmdzIFtsaW5kZXggJGFyZ3MgMF0KKworICAgICMgVGhlIG5leHQgdHdvIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuICBJZiB0aGV5IHdlcmUgbm90IHNwZWNpZmllZCwKKyAgICAjIHVzZSB0aGUgZGVmYXVsdHMuCisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPT0gMiB9IHsKKwlsYXBwZW5kICRhcmdzIFtsaXN0ICIqIl0KKyAgICB9CisgICAgaWYgeyBbbGxlbmd0aCAkYXJnc10gPT0gMyB9IHsKKwlsYXBwZW5kICRhcmdzIFtsaXN0ICIiXQorICAgIH0KKworICAgICMgSWYgdGhlIG9wdGlvbiBzdHJpbmdzIGFyZSB0aGUgZGVmYXVsdHMsIG9yIHRoZSBzYW1lIGFzIHRoZQorICAgICMgZGVmYXVsdHMsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBjaGVja19jb25kaXRpb25hbF94ZmFpbCB0bworICAgICMgY29tcGFyZSB0aGVtIHRvIHRoZSBhY3R1YWwgb3B0aW9ucy4KKyAgICBpZiB7IFtzdHJpbmcgY29tcGFyZSBbbGluZGV4ICRhcmdzIDJdICIqIl0gPT0gMAorCSAmJiBbc3RyaW5nIGNvbXBhcmUgW2xpbmRleCAkYXJncyAzXSAiIiBdID09IDAgfSB7CisJc2V0IHJlc3VsdCAxICAgIAorICAgIH0gZWxzZSB7CisJIyBUaGUgdGFyZ2V0IGxpc3QgbWlnaHQgYmUgYW4gZWZmZWN0aXZlLXRhcmdldCBrZXl3b3JkLCBzbyByZXBsYWNlCisJIyB0aGUgb3JpZ2luYWwgbGlzdCB3aXRoICIqLSotKiIsIHNpbmNlIHdlIGFscmVhZHkga25vdyBpdCBtYXRjaGVzLgorCXNldCByZXN1bHQgW2NoZWNrX2NvbmRpdGlvbmFsX3hmYWlsIFtscmVwbGFjZSAkYXJncyAxIDEgIiotKi0qIl1dCisgICAgfQorCisgICAgcmV0dXJuICRyZXN1bHQKK30KKworcHJvYyBkZy1za2lwLWlmIHsgYXJncyB9IHsKKyAgICAjIFZlcmlmeSB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4gIFRoZSBsYXN0IHR3byBhcmUgb3B0aW9uYWwuCisgICAgc2V0IGFyZ3MgW2xyZXBsYWNlICRhcmdzIDAgMF0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA8IDIgfHwgW2xsZW5ndGggJGFyZ3NdID4gNCB9IHsKKyAgICAgICAgZXJyb3IgImRnLXNraXAtaWYgMjogbmVlZCAyLCAzLCBvciA0IGFyZ3VtZW50cyIKKyAgICB9CisKKyAgICAjIERvbid0IGJvdGhlciBpZiB3ZSdyZSBhbHJlYWR5IHNraXBwaW5nIHRoZSB0ZXN0LgorICAgIHVwdmFyIGRnLWRvLXdoYXQgZGctZG8td2hhdAorICAgIGlmIHsgW2xpbmRleCAke2RnLWRvLXdoYXR9IDFdID09ICJOIiB9IHsKKyAgICAgIHJldHVybgorICAgIH0KKworICAgIHNldCBzZWxlY3RvciBbbGlzdCB0YXJnZXQgW2xpbmRleCAkYXJncyAxXV0KKyAgICBpZiB7IFtkZy1wcm9jZXNzLXRhcmdldCAkc2VsZWN0b3JdID09ICJTIiB9IHsKKyAgICAgICAgaWYgW2NoZWNrLWZsYWdzICRhcmdzXSB7CisgICAgICAgICAgICB1cHZhciBkZy1kby13aGF0IGRnLWRvLXdoYXQKKyAgICAgICAgICAgIHNldCBkZy1kby13aGF0IFtsaXN0IFtsaW5kZXggJHtkZy1kby13aGF0fSAwXSAiTiIgIlAiXQorICAgICAgICB9CisgICAgfQorfQogCiAjIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYWRkaXRpb25hbF9maWxlcyBhbmQgYWRkaXRpb25hbF9zb3VyY2VzCiAjIGFyZSBib3RoIGNsZWFyZWQgb3V0IGFmdGVyIGV2ZXJ5IHRlc3QuICBJdCBpcyBub3QgZW5vdWdoIHRvIGNsZWFyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cAppbmRleCA4OTk5YWE0Li42YjdiZWJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAKQEAgLTI1LDcgKzI1LDcgQEAKIHNldCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMl9zYXZlZCAwCiBzZXQgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjRfc2F2ZWQgMAogc2V0IG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQgMAotCitzZXQgb3JpZ19wYXRoX3NhdmVkIDAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHByb2Mgc2V0X2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFycyB7IH0KQEAgLTQyLDYgKzQyLDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NF9zYXZlZAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aF9zYXZlZAorICBnbG9iYWwgb3JpZ19wYXRoX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aAogICBnbG9iYWwgb3JpZ19sZF9ydW5fcGF0aAogICBnbG9iYWwgb3JpZ19zaGxpYl9wYXRoCkBAIC01MCw2ICs1MSw3IEBACiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF8zMgogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfNjQKICAgZ2xvYmFsIG9yaWdfZHlsZF9saWJyYXJ5X3BhdGgKKyAgZ2xvYmFsIG9yaWdfcGF0aAogICBnbG9iYWwgR0NDX0VYRUNfUFJFRklYCiAKICAgIyBTZXQgdGhlIHJlbG9jYXRlZCBjb21waWxlciBwcmVmaXgsIGJ1dCBvbmx5IGlmIHRoZSB1c2VyIGhhc24ndCBzcGVjaWZpZWQgb25lLgpAQCAtMTAwLDYgKzEwMiwxMCBAQAogICAgICAgc2V0IG9yaWdfZHlsZF9saWJyYXJ5X3BhdGggIiRlbnYoRFlMRF9MSUJSQVJZX1BBVEgpIgogICAgICAgc2V0IG9yaWdfZHlsZF9saWJyYXJ5X3BhdGhfc2F2ZWQgMQogICAgIH0KKyAgICBpZiBbaW5mbyBleGlzdHMgZW52KFBBVEgpXSB7CisgICAgICBzZXQgb3JpZ19wYXRoICIkZW52KFBBVEgpIgorICAgICAgc2V0IG9yaWdfcGF0aF9zYXZlZCAxCisgICAgfQogICB9CiAKICAgIyBXZSBuZWVkIHRvIHNldCBsZCBsaWJyYXJ5IHBhdGggaW4gdGhlIGVudmlyb25tZW50LiAgQ3VycmVudGx5LApAQCAtMTY5LDYgKzE3NSwxMyBAQAogICB9IGVsc2UgewogICAgIHNldGVudiBEWUxEX0xJQlJBUllfUEFUSCAiJGxkX2xpYnJhcnlfcGF0aCIKICAgfQorICBpZiB7IFtpc3RhcmdldCAqLSotY3lnd2luKl0gfHwgW2lzdGFyZ2V0ICotKi1taW5ndypdIH0geworICAgIGlmIHsgJG9yaWdfcGF0aF9zYXZlZCB9IHsKKyAgICAgIHNldGVudiBQQVRIICIkbGRfbGlicmFyeV9wYXRoOiRvcmlnX3BhdGgiCisgICAgfSBlbHNlIHsKKyAgICAgIHNldGVudiBQQVRIICIkbGRfbGlicmFyeV9wYXRoIgorICAgIH0KKyAgfQogCiAgIHZlcmJvc2UgLWxvZyAic2V0X2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFyczogbGRfbGlicmFyeV9wYXRoPSRsZF9saWJyYXJ5X3BhdGgiCiB9CkBAIC0xODcsNiArMjAwLDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NF9zYXZlZAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aF9zYXZlZAorICBnbG9iYWwgb3JpZ19wYXRoX3NhdmVkCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aAogICBnbG9iYWwgb3JpZ19sZF9ydW5fcGF0aAogICBnbG9iYWwgb3JpZ19zaGxpYl9wYXRoCkBAIC0xOTUsNiArMjA5LDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aAorICBnbG9iYWwgb3JpZ19wYXRoCiAKICAgaWYgeyAkb3JpZ19lbnZpcm9ubWVudF9zYXZlZCA9PSAwIH0gewogICAgIHJldHVybgpAQCAtMjQwLDYgKzI1NSwxMSBAQAogICB9IGVsc2VpZiBbaW5mbyBleGlzdHMgZW52KERZTERfTElCUkFSWV9QQVRIKV0gewogICAgIHVuc2V0ZW52IERZTERfTElCUkFSWV9QQVRICiAgIH0KKyAgaWYgeyAkb3JpZ19wYXRoX3NhdmVkIH0geworICAgIHNldGVudiBQQVRIICIkb3JpZ19wYXRoIgorICB9IGVsc2VpZiBbaW5mbyBleGlzdHMgZW52KFBBVEgpXSB7CisgICAgdW5zZXRlbnYgUEFUSAorICB9CiB9CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9hLm91dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45M2VlODViCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvYS5vdXQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHAgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cAppbmRleCAxZTk5ODVlLi4yNmFjZDgxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cApAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE0LDEwICsxNCw2IEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotIyBsaWJmZmkgdGVzdHN1aXRlIHRoYXQgdXNlcyB0aGUgJ2RnLmV4cCcgZHJpdmVyLgotCi1sb2FkX2xpYiBsaWJmZmktZGcuZXhwCi0KIGRnLWluaXQKIGxpYmZmaS1pbml0CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfc3RkY2FsbC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMKaW5kZXggNmJmY2MxZi4uMTQwN2YwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMKQEAgLTQ5LDkgKzQ5LDE3IEBACiAgIENIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xvc3VyZV90ZXN0X3N0ZGNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIDMgLyogdXNlcmRhdGEgKi8sIGNvZGUpID09IEZGSV9PSyk7CiAKKyNpZmRlZiBfTVNDX1ZFUgorICBfX2FzbSB7IG1vdiBzcF9wcmUsIGVzcCB9CisjZWxzZQogICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wcmUpKTsKKyNlbmRpZgogICByZXMgPSAoKihjbG9zdXJlX3Rlc3RfdHlwZTApY29kZSkoMCwgMSwgMiwgMyk7CisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcG9zdCwgZXNwIH0KKyNlbHNlCiAgIGFzbSB2b2xhdGlsZSAoIiBtb3ZsICUlZXNwLCUwIiA6ICI9ZyIgKHNwX3Bvc3QpKTsKKyNlbmRpZgogICAvKiB7IGRnLW91dHB1dCAiMCAxIDIgMzogOSIgfSAqLwogCiAgIHByaW50ZigicmVzOiAlZFxuIixyZXMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOTM2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMKQEAgLTAsMCArMSw3MiBAQAorLyogQXJlYToJY2xvc3VyZV9jYWxsICh0aGlzY2FsbCBjb252ZW50aW9uKQorICAgUHVycG9zZToJQ2hlY2sgaGFuZGxpbmcgd2hlbiBjYWxsZXIgZXhwZWN0cyB0aGlzY2FsbCBjYWxsZWUKKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJPGt0aWV0ekByZWRoYXQuY29tPiAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHZvaWQKK2Nsb3N1cmVfdGVzdF90aGlzY2FsbChmZmlfY2lmKiBjaWYgX19VTlVTRURfXywgdm9pZCogcmVzcCwgdm9pZCoqIGFyZ3MsCisJCSAgICAgIHZvaWQqIHVzZXJkYXRhKQoreworICAqKGZmaV9hcmcqKXJlc3AgPQorICAgIChpbnQpKihpbnQgKilhcmdzWzBdICsgKGludCkoKihpbnQgKilhcmdzWzFdKQorICAgICsgKGludCkoKihpbnQgKilhcmdzWzJdKSAgKyAoaW50KSgqKGludCAqKWFyZ3NbM10pCisgICAgKyAoaW50KShpbnRwdHJfdCl1c2VyZGF0YTsKKworICBwcmludGYoIiVkICVkICVkICVkOiAlZFxuIiwKKwkgKGludCkqKGludCAqKWFyZ3NbMF0sIChpbnQpKCooaW50ICopYXJnc1sxXSksCisJIChpbnQpKCooaW50ICopYXJnc1syXSksIChpbnQpKCooaW50ICopYXJnc1szXSksCisgICAgICAgICAoaW50KSooZmZpX2FyZyAqKXJlc3ApOworCit9CisKK3R5cGVkZWYgaW50IChfX3RoaXNjYWxsICpjbG9zdXJlX3Rlc3RfdHlwZTApKGludCwgaW50LCBpbnQsIGludCk7CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgdm9pZCAqY29kZTsKKyAgZmZpX2Nsb3N1cmUgKnBjbCA9IGZmaV9jbG9zdXJlX2FsbG9jKHNpemVvZihmZmlfY2xvc3VyZSksICZjb2RlKTsKKyAgZmZpX3R5cGUgKiBjbF9hcmdfdHlwZXNbMTddOworICBpbnQgcmVzOworICB2b2lkKiBzcF9wcmU7CisgIHZvaWQqIHNwX3Bvc3Q7CisgIGNoYXIgYnVmWzEwMjRdOworCisgIGNsX2FyZ190eXBlc1swXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbMV0gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzJdID0gJmZmaV90eXBlX3VpbnQ7CisgIGNsX2FyZ190eXBlc1szXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbNF0gPSBOVUxMOworCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX1RISVNDQUxMLCA0LAorCQkgICAgICZmZmlfdHlwZV9zaW50LCBjbF9hcmdfdHlwZXMpID09IEZGSV9PSyk7CisKKyAgQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbG9zdXJlX3Rlc3RfdGhpc2NhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIDMgLyogdXNlcmRhdGEgKi8sIGNvZGUpID09IEZGSV9PSyk7CisKKyNpZmRlZiBfTVNDX1ZFUgorICBfX2FzbSB7IG1vdiBzcF9wcmUsIGVzcCB9CisjZWxzZQorICBhc20gdm9sYXRpbGUgKCIgbW92bCAlJWVzcCwlMCIgOiAiPWciIChzcF9wcmUpKTsKKyNlbmRpZgorICByZXMgPSAoKihjbG9zdXJlX3Rlc3RfdHlwZTApY29kZSkoMCwgMSwgMiwgMyk7CisjaWZkZWYgX01TQ19WRVIKKyAgX19hc20geyBtb3Ygc3BfcG9zdCwgZXNwIH0KKyNlbHNlCisgIGFzbSB2b2xhdGlsZSAoIiBtb3ZsICUlZXNwLCUwIiA6ICI9ZyIgKHNwX3Bvc3QpKTsKKyNlbmRpZgorICAvKiB7IGRnLW91dHB1dCAiMCAxIDIgMzogOSIgfSAqLworCisgIHByaW50ZigicmVzOiAlZFxuIixyZXMpOworICAvKiB7IGRnLW91dHB1dCAiXG5yZXM6IDkiIH0gKi8KKworICBzcHJpbnRmKGJ1ZiwgIm1pc21hdGNoOiBwcmU9JXAgdnMgcG9zdD0lcCIsIHNwX3ByZSwgc3BfcG9zdCk7CisgIHByaW50Zigic3RhY2sgcG9pbnRlciAlc1xuIiwgKHNwX3ByZSA9PSBzcF9wb3N0ID8gIm1hdGNoIiA6IGJ1ZikpOworICAvKiB7IGRnLW91dHB1dCAiXG5zdGFjayBwb2ludGVyIG1hdGNoIiB9ICovCisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMKaW5kZXggZjBhMzM0Zi4uZWEwODI1ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYwpAQCAtNDksMTUgKzQ5LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIGhfZGJsID0geyA3LCA0LCA5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBqX2RibCA9IHsgMSwgNSwgMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIGhfZGJsID0geyA3LCA0LCA5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSBqX2RibCA9IHsgMSwgNSwgMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jCmluZGV4IDliOTI5MmEuLjg5YTA4YTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSBoX2RibCA9IHsgNywgOC4wLCA5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSBqX2RibCA9IHsgMSwgOS4wLCAzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgaF9kYmwgPSB7IDcsIDguMCwgOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgal9kYmwgPSB7IDEsIDkuMCwgMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMKaW5kZXggNDBjOGM2ZC4uOWY3NWRhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYwpAQCAtNTQsMTUgKzU0LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIGdfZGJsID0geyAxLjAsIDEyNywgMTI2LCAzLjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE4Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jCmluZGV4IGFhNjQyNDguLjI3ODc5NGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMKQEAgLTU3LDE1ICs1NywxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBnX2RibCA9IHsgMS4wLCAxMjcsIDEyNiwgMy4wLCAxMjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAsIDExOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGdfZGJsID0geyAxLjAsIDEyNywgMTI2LCAzLjAsIDEyMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgZl9kYmwgPSB7IDQuMCwgMTI1LCAxMjQsIDUuMCwgMTE5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMKaW5kZXggYjk0MDJkNi4uODI0OTJjMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGdfZGJsID0geyAxMiB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGZfZGJsID0geyAxNzggfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGdfZGJsID0geyAxMiB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIGZfZGJsID0geyAxNzggfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMV8xYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYwppbmRleCA4MGRkN2FjLi4zZjhiYjI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEuMCwgMi4wLCAzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNC4wLCA1LjAsIDcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBnX2RibCA9IHsgMS4wLCAyLjAsIDMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGZfZGJsID0geyA0LjAsIDUuMCwgNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jCmluZGV4IDUwYmNiYmYuLjY1NjI3MjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYwpAQCAtNTIsMTUgKzUyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLCAyLjAsIDMuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQsIDUuMCwgNy4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCwgMy4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNCwgNS4wLCA3LjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMKaW5kZXggNDZhNmViNC4uMWQ4MmY2ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYwpAQCAtNjEsMTcgKzYxLDE3IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLSAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYsIDUuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLCA3LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNywgOS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEsIDQuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgcmVzX2RibDsKIAorICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jCmluZGV4IDEwMWUxMzAuLjgxYmIwYTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSBnX2RibCA9IHsgMTIsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSBmX2RibCA9IHsgMSwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZ19kYmwgPSB7IDEyLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgZl9kYmwgPSB7IDEsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYwppbmRleCBmYzc4MGMzLi5iNzgyNzQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMKQEAgLTU0LDE1ICs1NCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSBmX2RibCA9IHsgMTc4LCAxNzksIDE4MCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSBmX2RibCA9IHsgMTc4LCAxNzksIDE4MCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYwppbmRleCA1NzA1Y2UzLi5hMDJjNDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSBnX2RibCA9IHsgMTIsIDExOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSBmX2RibCA9IHsgMSwgMTUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZ19kYmwgPSB7IDEyLCAxMTkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgZl9kYmwgPSB7IDEsIDE1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jCmluZGV4IDAxNzcwYTAuLmM3MjUxY2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZ19kYmwgPSB7IDE1LCAxMjUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSBmX2RibCA9IHsgOSwgMTkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGdfZGJsID0geyAxNSwgMTI1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZl9kYmwgPSB7IDksIDE5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYwppbmRleCBmMzgwNmQ3Li4yZDZkOGI2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMKQEAgLTU2LDE1ICs1NiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQsIDE1IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAsIDE4MSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZ19kYmwgPSB7IDEyLCAxMywgMTQsIDE1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgZl9kYmwgPSB7IDE3OCwgMTc5LCAxODAsIDE4MSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF80XzFieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMKaW5kZXggYTFhYmEzYy4uNGFjMzc4NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIGdfZGJsID0geyAxMjcsIDEyMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZl9kYmwgPSB7IDEyLCAxMjggfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYwppbmRleCAyY2ViYTNkLi5hZDlkNTFjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYwpAQCAtNTgsMTUgKzU4LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYwppbmRleCA2MWQ1OTVjLi40ZTBjMDAwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYwpAQCAtNTMsMTUgKzUzLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzVieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMKaW5kZXggNTc2ZWJlMC4uYTU1ZWRjMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYwpAQCAtNjYsMTcgKzY2LDE3IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLSAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLSAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0gIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA2LjAsIDcuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIHJlc19kYmw7CiAKKyAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jCmluZGV4IDlmMmVmZjYuLmI0ZGNkYmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jCkBAIC02MCwxNSArNjAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQsIDUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQsIDUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jCmluZGV4IDczMjU3YjA5OC4uNzQwNjc4MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmMKQEAgLTU2LDE1ICs1NiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMTI4IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAxMjggfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMKaW5kZXggNTBkMDljOS4uMTRhN2U5NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMKQEAgLTYyLDE1ICs2MiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCwgNSwgNiB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCwgNSwgNiB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCwgNSwgNiB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCwgNSwgNiB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwIH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdieXRlLmMKaW5kZXggZjVjMDAwMC4uMTY0NWNjNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdieXRlLmMKQEAgLTU1LDE1ICs1NSwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMjU0IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAyNTUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAyNTQgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDI1NSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmMKaW5kZXggNGFhOTlkMS4uZjZjMWVhNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmMKQEAgLTQ5LDE1ICs0OSwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIGdfZGJsID0geyAxLCAyLjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgZl9kYmwgPSB7IDQsIDUuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBnX2RibCA9IHsgMSwgMi4wIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIGZfZGJsID0geyA0LCA1LjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCmluZGV4IGNjNWU5ZDYuLjBiODU3MjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LCA4LjB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMSwgOS4wfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgaF9kYmwgPSB7IDcsIDguMH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGpfZGJsID0geyAxLCA5LjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jCmluZGV4IDVjMGJhMGQuLmVkZjk5MWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGhfZGJsID0geyA3LjAsIDh9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBqX2RibCA9IHsgMS4wLCA5fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgaF9kYmwgPSB7IDcuMCwgOH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGpfZGJsID0geyAxLjAsIDl9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCmluZGV4IDIyYjk0ZDUuLmFhZDVmM2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMKQEAgLTUyLDE1ICs1MiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMKaW5kZXggNjI2MzdmMi4uMzdlMDg1NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMKaW5kZXggYWYzODA2MC4uYjMzMjJkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jCkBAIC01MSwxNSArNTEsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMKaW5kZXggNDI3NGFmMS4uMTVmOTM2NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jCkBAIC02LDcgKzYsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIm5vIGxvbmcgZG91YmxlIGZvcm1hdCIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLSogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLWxpbnV4KiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAKICNpbmNsdWRlICJmZml0ZXN0LmgiCkBAIC04NywxNSArODcsMTUgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMSwgMiwgMywgNCwgNSwgNiwgNyB9OworCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQgfTsKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0IH07Ci0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYwppbmRleCAwODhmMGQzLi5jYTFjMzU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYwpAQCAtNyw3ICs3LDcgQEAKIAogLyogeyBkZy1leGNlc3MtZXJyb3JzICJubyBsb25nIGRvdWJsZSBmb3JtYXQiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpAQCAtNjcsMTUgKzY3LDE1IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKIAljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKIAljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKIAljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07Ci0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jCmluZGV4IGNiYzRmOTUuLjhmYmYzNmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYwpAQCAtNTQsMTUgKzU0LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCAodm9pZCAqKTQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgKHZvaWQgKik5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsICh2b2lkICopNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCAodm9pZCAqKTkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3BvaW50ZXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jCmluZGV4IDM4M2VhNDEuLjAzOWI4NzQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfc3Nob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYwppbmRleCA3MDVkNzhjLi5jOTZjNmQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jCmluZGV4IDMxZDUzYWYuLjlhYTdiZGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMKQEAgLTUxLDE1ICs1MSwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfc2ludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYwppbmRleCBjYjZiNzQ4Li45NzYyMGI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMKaW5kZXggZTQ1M2QzZS4uNTc2NmZhZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91aW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYwppbmRleCA0OTVjNzlmLi5hNTJjYjg5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jCkBAIC01MiwxNSArNTIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jCmluZGV4IDY2MGRhYmIuLmQ2NjM3OTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jCkBAIC0zNyw2ICszNyw4IEBACiAJZmZpX3R5cGUJdHMxX3R5cGU7CiAJZmZpX3R5cGUqCXRzMV90eXBlX2VsZW1lbnRzWzRdOwogCisJRGJscyBhcmcgPSB7IDEuMCwgMi4wIH07CisKIAl0czFfdHlwZS5zaXplID0gMDsKIAl0czFfdHlwZS5hbGlnbm1lbnQgPSAwOwogCXRzMV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC00OCw4ICs1MCw2IEBACiAKIAljbF9hcmdfdHlwZXNbMF0gPSAmdHMxX3R5cGU7CiAKLQlEYmxzIGFyZyA9IHsgMS4wLCAyLjAgfTsKLQogCS8qIEluaXRpYWxpemUgdGhlIGNpZiAqLwogCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDEsCiAJCQkJICZmZmlfdHlwZV92b2lkLCBjbF9hcmdfdHlwZXMpID09IEZGSV9PSyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMKaW5kZXggMDY5NTg3NC4uZGJmMjAwMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYwpAQCAtNiw2ICs2LDggQEAKIAogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgYXZyMzIqLSotKiB9IH0gKi8KKy8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgbWlwcy1zZ2ktaXJpeDYqIH0gfSBQUiBsaWJmZmkvNDY2NjAgKi8KKwogI2luY2x1ZGUgImZmaXRlc3QuaCIKIAogc3RhdGljIHZvaWQKQEAgLTM0LDcgKzM2LDggQEAKIAlhcmdfdHlwZXNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWFyZ190eXBlc1syXSA9IE5VTEw7CiAKLQlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAmZmZpX3R5cGVfc2ludCwKKwkvKiBUaGlzIHByaW50ZiBjYWxsIGlzIHZhcmlhZGljICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmX3ZhcigmY2lmLCBGRklfREVGQVVMVF9BQkksIDEsIDIsICZmZmlfdHlwZV9zaW50LAogCQlhcmdfdHlwZXMpID09IEZGSV9PSyk7CiAKIAlhcmdzWzBdID0gJmZvcm1hdDsKQEAgLTQ2LDYgKzQ5LDkgQEAKIAlwcmludGYoInJlczogJWRcbiIsIChpbnQpIHJlcyk7CiAJLy8geyBkZy1vdXRwdXQgIlxucmVzOiA0IiB9CiAKKwkvKiBUaGUgY2FsbCB0byBjbHNfZG91YmxlX3ZhX2ZuIGlzIHN0YXRpYywgc28gaGF2ZSB0byB1c2UgYSBub3JtYWwgcHJlcF9jaWYgKi8KKwlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAmZmZpX3R5cGVfc2ludCwgYXJnX3R5cGVzKSA9PSBGRklfT0spOworCiAJQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbHNfZG91YmxlX3ZhX2ZuLCBOVUxMLCBjb2RlKSA9PSBGRklfT0spOwogCiAJcmVzCT0gKChpbnQoKikoY2hhciosIGRvdWJsZSkpKGNvZGUpKShmb3JtYXQsIGRvdWJsZUFyZyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYwppbmRleCA1MmFmNmNmLi5lNmJhYzFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMKQEAgLTYsNyArNiw3IEBACiAKIC8qIHsgZGctZXhjZXNzLWVycm9ycyAibm8gbG9uZyBkb3VibGUgZm9ybWF0IiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBhcm0qLSotKiBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotKiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotbGludXgqIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIAogI2luY2x1ZGUgImZmaXRlc3QuaCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jCmluZGV4IDM4NTY0Y2IuLjRmYTFlYTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYwpAQCAtNiw2ICs2LDggQEAKIAogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgYXZyMzIqLSotKiB4ODZfNjQtKi1taW5ndyogfSB9ICovCisvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIG1pcHMtc2dpLWlyaXg2KiB9IH0gUFIgbGliZmZpLzQ2NjYwICovCisKICNpbmNsdWRlICJmZml0ZXN0LmgiCiAKIHN0YXRpYyB2b2lkCkBAIC0zNCw3ICszNiw4IEBACiAJYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJYXJnX3R5cGVzWzJdID0gTlVMTDsKIAotCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsICZmZmlfdHlwZV9zaW50LAorCS8qIFRoaXMgcHJpbnRmIGNhbGwgaXMgdmFyaWFkaWMgKi8KKwlDSEVDSyhmZmlfcHJlcF9jaWZfdmFyKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMSwgMiwgJmZmaV90eXBlX3NpbnQsCiAJCWFyZ190eXBlcykgPT0gRkZJX09LKTsKIAogCWFyZ3NbMF0gPSAmZm9ybWF0OwpAQCAtNDYsNiArNDksMTAgQEAKIAlwcmludGYoInJlczogJWRcbiIsIChpbnQpIHJlcyk7CiAJLy8geyBkZy1vdXRwdXQgIlxucmVzOiA0IiB9CiAKKwkvKiBUaGUgY2FsbCB0byBjbHNfbG9uZ2RvdWJsZV92YV9mbiBpcyBzdGF0aWMsIHNvIGhhdmUgdG8gdXNlIGEgbm9ybWFsIHByZXBfY2lmICovCisJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsCisJCWFyZ190eXBlcykgPT0gRkZJX09LKTsKKwogCUNIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xzX2xvbmdkb3VibGVfdmFfZm4sIE5VTEwsIGNvZGUpID09IEZGSV9PSyk7CiAKIAlyZXMJPSAoKGludCgqKShjaGFyKiwgbG9uZyBkb3VibGUpKShjb2RlKSkoZm9ybWF0LCBsZEFyZyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYwppbmRleCBmYWRkMzUzLi5jZjAzOTkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMKQEAgLTY1LDcgKzY1LDcgQEAKIAogCUNIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xzX3BvaW50ZXJfZ24sIE5VTEwsIGNvZGUpID09IEZGSV9PSyk7CiAKLQlyZXMgPSAoZmZpX2FyZykoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKKwlyZXMgPSAoZmZpX2FyZykodWludHB0cl90KSgodm9pZCooKikodm9pZCosIHZvaWQqKSkoY29kZSkpKGFyZzEsIGFyZzIpOwogCS8qIHsgZGctb3V0cHV0ICJcbjB4MTIzNDU2NzggMHg4OWFiY2RlZjogMHg5YmUwMjQ2NyIgfSAqLwogCXByaW50ZigicmVzOiAweCUwOHhcbiIsICh1bnNpZ25lZCBpbnQpIHJlcyk7CiAJLyogeyBkZy1vdXRwdXQgIlxucmVzOiAweDliZTAyNDY3IiB9ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYwppbmRleCA2OTdmMjcxLi5lMzExMzllIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMKQEAgLTI4LDExICsyOCwxMiBAQAogCWNoYXIJCXRyYW1wbGU2CT0gdHJhbXBsZTQgKyAoKGNoYXIqKSZhMilbMV07CiAJbG9uZyBkb3VibGUJdHJhbXBsZTcJPSAoaW50cHRyX3QpdHJhbXBsZTUgKyAoaW50cHRyX3QpdHJhbXBsZTE7CiAJY2hhcgkJdHJhbXBsZTgJPSB0cmFtcGxlNiArIHRyYW1wbGUyOworCXZvaWQqCQlyZXN1bHQ7CiAKIAlkdW1teVZhcgk9IGR1bW15X2Z1bmModHJhbXBsZTEsIHRyYW1wbGUyLCB0cmFtcGxlMywgdHJhbXBsZTQsCiAJCXRyYW1wbGU1LCB0cmFtcGxlNiwgdHJhbXBsZTcsIHRyYW1wbGU4KTsKIAotCXZvaWQqCXJlc3VsdAk9ICh2b2lkKikoKGludHB0cl90KWExICsgKGludHB0cl90KWEyKTsKKwlyZXN1bHQJPSAodm9pZCopKChpbnRwdHJfdClhMSArIChpbnRwdHJfdClhMik7CiAKIAlwcmludGYoIjB4JTA4eCAweCUwOHg6IDB4JTA4eFxuIiwgCiAJICAgICAgICh1bnNpZ25lZCBpbnQpKHVpbnRwdHJfdCkgYTEsCkBAIC01MiwxMSArNTMsMTIgQEAKIAljaGFyCQl0cmFtcGxlNgk9IHRyYW1wbGU0ICsgKChjaGFyKikmYTIpWzFdOwogCWxvbmcgZG91YmxlCXRyYW1wbGU3CT0gKGludHB0cl90KXRyYW1wbGU1ICsgKGludHB0cl90KXRyYW1wbGUxOwogCWNoYXIJCXRyYW1wbGU4CT0gdHJhbXBsZTYgKyB0cmFtcGxlMjsKKwl2b2lkKgkJcmVzdWx0OwogCiAJZHVtbXlWYXIJPSBkdW1teV9mdW5jKHRyYW1wbGUxLCB0cmFtcGxlMiwgdHJhbXBsZTMsIHRyYW1wbGU0LAogCQl0cmFtcGxlNSwgdHJhbXBsZTYsIHRyYW1wbGU3LCB0cmFtcGxlOCk7CiAKLQl2b2lkKglyZXN1bHQJPSAodm9pZCopKChpbnRwdHJfdClhMSArIChpbnRwdHJfdClhMik7CisJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOwogCiAJcHJpbnRmKCIweCUwOHggMHglMDh4OiAweCUwOHhcbiIsCiAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KShpbnRwdHJfdCkgYTEsCkBAIC0xMjksNyArMTMxLDcgQEAKIAogCUNIRUNLKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKHBjbCwgJmNpZiwgY2xzX3BvaW50ZXJfZ24sIE5VTEwsIGNvZGUpID09IEZGSV9PSyk7CiAKLQlyZXMgPSAoZmZpX2FyZykoKHZvaWQqKCopKHZvaWQqLCB2b2lkKikpKGNvZGUpKShhcmcxLCBhcmcyKTsKKwlyZXMgPSAoZmZpX2FyZykodWludHB0cl90KSgodm9pZCooKikodm9pZCosIHZvaWQqKSkoY29kZSkpKGFyZzEsIGFyZzIpOwogCiAJcHJpbnRmKCJyZXM6IDB4JTA4eFxuIiwgKHVuc2lnbmVkIGludCkgcmVzKTsKIAkvLyB7IGRnLW91dHB1dCAiXG4weDAxMjM0NTY3IDB4ODlhYmNkZWY6IDB4OGFjZjEzNTYiIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jCmluZGV4IGEyMWEzZmQuLmY1YTczMTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYwpAQCAtNCw3ICs0LDggQEAKICAgIFBSOgkJCW5vbmUuCiAgICBPcmlnaW5hdG9yOglCbGFrZSBDaGFmZmluIDYvNi8yMDA3CSAqLwogCi0vKiB7IGRnLWRvIHJ1biB7IHhmYWlsICotKi0qIH0gfSAqLworLyogeyBkZy1kbyBydW4gfSAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBzdGF0aWMgdm9pZApAQCAtMTcsMTEgKzE4LDkgQEAKIAlmZmlfY2lmIGNpZjsKICAgICAgICAgdm9pZCAqY29kZTsKIAlmZmlfY2xvc3VyZSAqcGNsID0gZmZpX2Nsb3N1cmVfYWxsb2Moc2l6ZW9mKGZmaV9jbG9zdXJlKSwgJmNvZGUpOwotCXZvaWQqIGFyZ3NbMV07CiAJZmZpX3R5cGUqIGFyZ190eXBlc1sxXTsKIAogCWFyZ190eXBlc1swXSA9IE5VTEw7Ci0JYXJnc1swXSA9IE5VTEw7CiAKIAlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgMjU1LCAwLCAmZmZpX3R5cGVfdm9pZCwKIAkJYXJnX3R5cGVzKSA9PSBGRklfQkFEX0FCSSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jCmluZGV4IGJkMmZjNTQuLmJmNjAxNjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jCkBAIC00LDcgKzQsOCBAQAogICAgUFI6CQkJbm9uZS4KICAgIE9yaWdpbmF0b3I6CUJsYWtlIENoYWZmaW4gNi82LzIwMDcJICovCiAKLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgKi0qLSogfSB9ICovCisvKiB7IGRnLWRvIHJ1biB9ICovCisKICNpbmNsdWRlICJmZml0ZXN0LmgiCiAKIGludCBtYWluICh2b2lkKQpAQCAtMTIsMTAgKzEzLDEwIEBACiAJZmZpX2NpZiBjaWY7CiAJZmZpX3R5cGUqIGFyZ190eXBlc1sxXTsKIAotCWFyZ190eXBlc1swXSA9IE5VTEw7Ci0KIAlmZmlfdHlwZQliYWRUeXBlCT0gZmZpX3R5cGVfdm9pZDsKIAorCWFyZ190eXBlc1swXSA9IE5VTEw7CisKIAliYWRUeXBlLnNpemUgPSAwOwogCiAJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMCwgJmJhZFR5cGUsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYzQ3MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYwpAQCAtMCwwICsxLDUwIEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgZmN0IGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHNpemVfdCBfX0ZBU1RDQUxMX18gbXlfZmFzdGNhbGxfZihjaGFyICpzLCBmbG9hdCBhKQoreworICByZXR1cm4gKHNpemVfdCkgKChpbnQpIHN0cmxlbihzKSArIChpbnQpIGEpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX2FyZyByaW50OworICBjaGFyICpzOworICBmbG9hdCB2MjsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9wb2ludGVyOworICBhcmdzWzFdID0gJmZmaV90eXBlX2Zsb2F0OworICB2YWx1ZXNbMF0gPSAodm9pZCopICZzOworICB2YWx1ZXNbMV0gPSAodm9pZCopICZ2MjsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAyLAorCQkgICAgICAgJmZmaV90eXBlX3NpbnQsIGFyZ3MpID09IEZGSV9PSyk7CisgIAorICBzID0gImEiOworICB2MiA9IDAuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAxKTsKKyAgCisgIHMgPSAiMTIzNDU2NyI7CisgIHYyID0gLTEuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSA2KTsKKyAgCisgIHMgPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NSI7CisgIHYyID0gMS4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDI2KTsKKyAgCisgIHByaW50ZigiZmFzdGNhbGwgZmN0MSB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmRkMGUxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMyX3dpbjMyLmMKQEAgLTAsMCArMSw1MCBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIGZhc3RjYWxsIGZjdCBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX2YoZmxvYXQgYSwgY2hhciAqcykKK3sKKyAgcmV0dXJuIChzaXplX3QpICgoaW50KSBzdHJsZW4ocykgKyAoaW50KSBhKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgZmxvYXQgdjI7CisgIGFyZ3NbMV0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgYXJnc1swXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgdmFsdWVzWzFdID0gKHZvaWQqKSAmczsKKyAgdmFsdWVzWzBdID0gKHZvaWQqKSAmdjI7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMiwKKwkJICAgICAgICZmZmlfdHlwZV9zaW50LCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgcyA9ICJhIjsKKyAgdjIgPSAwLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMSk7CisgIAorICBzID0gIjEyMzQ1NjciOworICB2MiA9IC0xLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNik7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICB2MiA9IDEuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyNik7CisgIAorICBwcmludGYoImZhc3RjYWxsIGZjdDIgdGVzdHMgcGFzc2VkXG4iKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVkNjA2ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBmYXN0Y2FsbCBmIGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHNpemVfdCBfX0ZBU1RDQUxMX18gbXlfZmFzdGNhbGxfZihmbG9hdCBhLCBjaGFyICpzLCBpbnQgaSkKK3sKKyAgcmV0dXJuIChzaXplX3QpICgoaW50KSBzdHJsZW4ocykgKyAoaW50KSBhICsgaSk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfYXJnIHJpbnQ7CisgIGNoYXIgKnM7CisgIGludCB2MTsKKyAgZmxvYXQgdjI7CisgIGFyZ3NbMl0gPSAmZmZpX3R5cGVfc2ludDsKKyAgYXJnc1sxXSA9ICZmZmlfdHlwZV9wb2ludGVyOworICBhcmdzWzBdID0gJmZmaV90eXBlX2Zsb2F0OworICB2YWx1ZXNbMl0gPSAodm9pZCopICZ2MTsKKyAgdmFsdWVzWzFdID0gKHZvaWQqKSAmczsKKyAgdmFsdWVzWzBdID0gKHZvaWQqKSAmdjI7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMywKKwkJICAgICAgICZmZmlfdHlwZV9zaW50LCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgcyA9ICJhIjsKKyAgdjEgPSAxOworICB2MiA9IDAuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyKTsKKyAgCisgIHMgPSAiMTIzNDU2NyI7CisgIHYyID0gLTEuMDsKKyAgdjEgPSAtMjsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSA0KTsKKyAgCisgIHMgPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NSI7CisgIHYyID0gMS4wOworICB2MSA9IDI7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMjgpOworICAKKyAgcHJpbnRmKCJmYXN0Y2FsbCBmY3QzIHRlc3RzIHBhc3NlZFxuIik7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmgKaW5kZXggMmNiOTg0OS4uZDgxZDRkYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaApAQCAtMjUsNiArMjUsMTQgQEAKICNkZWZpbmUgX19VTlVTRURfXwogI2VuZGlmCiAKKy8qIERlZmluZSBfX0ZBU1RDQUxMX18gc28gdGhhdCBvdGhlciBjb21waWxlcnMgdGhhbiBnY2MgY2FuIHJ1biB0aGUgdGVzdHMuICAqLworI3VuZGVmIF9fRkFTVENBTExfXworI2lmIGRlZmluZWQgX01TQ19WRVIKKyNkZWZpbmUgX19GQVNUQ0FMTF9fIF9fZmFzdGNhbGwKKyNlbHNlCisjZGVmaW5lIF9fRkFTVENBTExfXyBfX2F0dHJpYnV0ZV9fKChmYXN0Y2FsbCkpCisjZW5kaWYKKwogLyogUHJlZmVyIE1BUF9BTk9OKFlNT1VTKSB0byAvZGV2L3plcm8sIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8ga2VlcCBhCiAgICBmaWxlIG9wZW4uICAqLwogI2lmZGVmIEhBVkVfTU1BUF9BTk9OCkBAIC02Nyw2ICs3NSw4IEBACiAjZGVmaW5lIFBSSWRMTCAibGQiCiAjdW5kZWYgUFJJdUxMCiAjZGVmaW5lIFBSSXVMTCAibHUiCisjZGVmaW5lIFBSSWQ4ICJoZCIKKyNkZWZpbmUgUFJJdTggImh1IgogI2RlZmluZSBQUklkNjQgImxkIgogI2RlZmluZSBQUkl1NjQgImx1IgogI2RlZmluZSBQUkl1UFRSICJsdSIKQEAgLTc3LDYgKzg3LDI4IEBACiAjZGVmaW5lIFBSSXVQVFIgImx1IgogI2VuZGlmCiAKKy8qIElSSVgga2x1ZGdlLiAgKi8KKyNpZiBkZWZpbmVkKF9fc2dpKQorLyogSVJJWCA2LjUgPGludHR5cGVzLmg+IHByb3ZpZGVzIGFsbCBkZWZpbml0aW9ucywgYnV0IG9ubHkgZm9yIEM5OQorICAgY29tcGlsYXRpb25zLiAgKi8KKyNkZWZpbmUgUFJJZDggImhoZCIKKyNkZWZpbmUgUFJJdTggImhodSIKKyNpZiAoX01JUFNfU1pMT05HID09IDMyKQorI2RlZmluZSBQUklkNjQgImxsZCIKKyNkZWZpbmUgUFJJdTY0ICJsbHUiCisjZW5kaWYKKy8qIFRoaXMgZG9lc24ndCBtYXRjaCA8aW50dHlwZXMuaD4sIHdoaWNoIGFsd2F5cyBoYXMgImxsZCIgaGVyZSwgYnV0IHRoZQorICAgYXJndW1lbnRzIGFyZSB1aW50NjRfdCwgaW50NjRfdCwgd2hpY2ggYXJlIHVuc2lnbmVkIGxvbmcsIGxvbmcgZm9yCisgICA2NC1iaXQgaW4gPHNnaWRlZnMuaD4uICAqLworI2lmIChfTUlQU19TWkxPTkcgPT0gNjQpCisjZGVmaW5lIFBSSWQ2NCAibGQiCisjZGVmaW5lIFBSSXU2NCAibHUiCisjZW5kaWYKKy8qIFRoaXMgZG9lc24ndCBtYXRjaCA8aW50dHlwZXMuaD4sIHdoaWNoIGhhcyAidSIgaGVyZSwgYnV0IHRoZSBhcmd1bWVudHMKKyAgIGFyZSB1aW50cHRyX3QsIHdoaWNoIGlzIGFsd2F5cyB1bnNpZ25lZCBsb25nLiAgKi8KKyNkZWZpbmUgUFJJdVBUUiAibHUiCisjZW5kaWYKKwogLyogU29sYXJpcyA8IDEwIGtsdWRnZS4gICovCiAjaWYgZGVmaW5lZChfX3N1bl9fKSAmJiBkZWZpbmVkKF9fc3ZyNF9fKSAmJiAhZGVmaW5lZChQUkl1UFRSKQogI2lmIGRlZmluZWQoX19hcmNoNjRfXykgfHwgZGVmaW5lZCAoX194ODZfNjRfXykKQEAgLTg2LDYgKzExOCwxNSBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyogTVNWQyBrbHVkZ2UuICAqLworI2lmIGRlZmluZWQgX01TQ19WRVIKKyNkZWZpbmUgUFJJdVBUUiAibHUiCisjZGVmaW5lIFBSSXU4ICJ1IgorI2RlZmluZSBQUklkOCAiZCIKKyNkZWZpbmUgUFJJdTY0ICJJNjR1IgorI2RlZmluZSBQUklkNjQgIkk2NGQiCisjZW5kaWYKKwogI2lmZGVmIFVTSU5HX01NQVAKIHN0YXRpYyBpbmxpbmUgdm9pZCAqCiBhbGxvY2F0ZV9tbWFwIChzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZTE1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mbG9hdF92YS5jCkBAIC0wLDAgKzEsMTA3IEBACisvKiBBcmVhOiAgICAgICAgZnAgYW5kIHZhcmlhZGljcworICAgUHVycG9zZTogICAgIGNoZWNrIGZwIGlucHV0cyBhbmQgcmV0dXJucyB3b3JrIG9uIHZhcmlhZGljcywgZXZlbiB0aGUgZml4ZWQgcGFyYW1zCisgICBMaW1pdGF0aW9uczogTm9uZQorICAgUFI6ICAgICAgICAgIG5vbmUKKyAgIE9yaWdpbmF0b3I6ICA8ZGF2aWQuZ2lsYmVydEBsaW5hcm8ub3JnPiAyMDExLTAxLTI1CisKKyAgIEludGVuZGVkIHRvIHN0cmVzcyB0aGUgZGlmZmVyZW5jZSBpbiBBQkkgb24gQVJNIHZmcAorKi8KKworLyogeyBkZy1kbyBydW4gfSAqLworCisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKKy8qIHByaW50cyBvdXQgYWxsIHRoZSBwYXJhbWV0ZXJzLCBhbmQgcmV0dXJucyB0aGUgc3VtIG9mIHRoZW0gYWxsLgorICogJ3gnIGlzIHRoZSBudW1iZXIgb2YgdmFyaWFkaWMgcGFyYW1ldGVycyBhbGwgb2Ygd2hpY2ggYXJlIGRvdWJsZSBpbiB0aGlzIHRlc3QKKyAqLworZG91YmxlIGZsb2F0X3ZhX2ZuKHVuc2lnbmVkIGludCB4LCBkb3VibGUgeSwuLi4pCit7CisgIGRvdWJsZSB0b3RhbD0wLjA7CisgIHZhX2xpc3QgYXA7CisgIHVuc2lnbmVkIGludCBpOworCisgIHRvdGFsKz0oZG91YmxlKXg7CisgIHRvdGFsKz15OworCisgIHByaW50ZigiJXU6ICUuMWYgOiIsIHgsIHkpOworCisgIHZhX3N0YXJ0KGFwLCB5KTsKKyAgZm9yKGk9MDtpPHg7aSsrKQorICB7CisgICAgZG91YmxlIGFyZz12YV9hcmcoYXAsIGRvdWJsZSk7CisgICAgdG90YWwrPWFyZzsKKyAgICBwcmludGYoIiAlZDolLjFmICIsIGksIGFyZyk7CisgIH0KKyAgdmFfZW5kKGFwKTsKKworICBwcmludGYoIiB0b3RhbDogJS4xZlxuIiwgdG90YWwpOworCisgIHJldHVybiB0b3RhbDsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgICAgY2lmOworCisgIGZmaV90eXBlICAgICphcmdfdHlwZXNbNV07CisgIHZvaWQgICAgICAgICp2YWx1ZXNbNV07CisgIGRvdWJsZSAgICAgICAgZG91Ymxlc1s1XTsKKyAgdW5zaWduZWQgaW50IGZpcnN0YXJnOworICBkb3VibGUgICAgICAgIHJlc2ZwOworCisgIC8qIEZpcnN0IHRlc3QsIHBhc3MgZmxvYXRfdmFfZm4oMCwyLjApIC0gbm90ZSB0aGVyZSBhcmUgbm8gYWN0dWFsCisgICAqIHZhcmlhZGljIHBhcmFtZXRlcnMsIGJ1dCBpdCdzIGRlY2xhcmVkIHZhcmlhZGljIHNvIHRoZSBBQkkgbWF5IGJlCisgICAqIGRpZmZlcmVudC4gKi8KKyAgLyogQ2FsbCBpdCBzdGF0aWNhbGx5IGFuZCB0aGVuIHZpYSBmZmkgKi8KKyAgcmVzZnA9ZmxvYXRfdmFfZm4oMCwyLjApOworICAvLyB7IGRnLW91dHB1dCAiMDogMi4wIDogdG90YWw6IDIuMCIgfQorICBwcmludGYoImNvbXBpbGVkOiAlLjFmXG4iLCByZXNmcCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbmNvbXBpbGVkOiAyLjAiIH0KKworICBhcmdfdHlwZXNbMF0gPSAmZmZpX3R5cGVfdWludDsKKyAgYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgYXJnX3R5cGVzWzJdID0gTlVMTDsKKyAgQ0hFQ0soZmZpX3ByZXBfY2lmX3ZhcigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsIDIsCisgICAgICAgICZmZmlfdHlwZV9kb3VibGUsIGFyZ190eXBlcykgPT0gRkZJX09LKTsKKworICBmaXJzdGFyZyA9IDA7CisgIGRvdWJsZXNbMF0gPSAyLjA7CisgIHZhbHVlc1swXSA9ICZmaXJzdGFyZzsKKyAgdmFsdWVzWzFdID0gJmRvdWJsZXNbMF07CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihmbG9hdF92YV9mbiksICZyZXNmcCwgdmFsdWVzKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuMDogMi4wIDogdG90YWw6IDIuMCIgfQorICBwcmludGYoImZmaTogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5mZmk6IDIuMCIgfQorCisgIC8qIFNlY29uZCB0ZXN0LCBmbG9hdF92YV9mbigyLDIuMCwzLjAsNC4wKSwgbm93IHdpdGggdmFyaWFkaWMgcGFyYW1zICovCisgIC8qIENhbGwgaXQgc3RhdGljYWxseSBhbmQgdGhlbiB2aWEgZmZpICovCisgIHJlc2ZwPWZsb2F0X3ZhX2ZuKDIsMi4wLDMuMCw0LjApOworICAvLyB7IGRnLW91dHB1dCAiXG4yOiAyLjAgOiAwOjMuMCAgMTo0LjAgIHRvdGFsOiAxMS4wIiB9CisgIHByaW50ZigiY29tcGlsZWQ6ICUuMWZcbiIsIHJlc2ZwKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuY29tcGlsZWQ6IDExLjAiIH0KKworICBhcmdfdHlwZXNbMF0gPSAmZmZpX3R5cGVfdWludDsKKyAgYXJnX3R5cGVzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgYXJnX3R5cGVzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgYXJnX3R5cGVzWzNdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgYXJnX3R5cGVzWzRdID0gTlVMTDsKKyAgQ0hFQ0soZmZpX3ByZXBfY2lmX3ZhcigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsIDQsCisgICAgICAgICZmZmlfdHlwZV9kb3VibGUsIGFyZ190eXBlcykgPT0gRkZJX09LKTsKKworICBmaXJzdGFyZyA9IDI7CisgIGRvdWJsZXNbMF0gPSAyLjA7CisgIGRvdWJsZXNbMV0gPSAzLjA7CisgIGRvdWJsZXNbMl0gPSA0LjA7CisgIHZhbHVlc1swXSA9ICZmaXJzdGFyZzsKKyAgdmFsdWVzWzFdID0gJmRvdWJsZXNbMF07CisgIHZhbHVlc1syXSA9ICZkb3VibGVzWzFdOworICB2YWx1ZXNbM10gPSAmZG91Ymxlc1syXTsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKGZsb2F0X3ZhX2ZuKSwgJnJlc2ZwLCB2YWx1ZXMpOworICAvLyB7IGRnLW91dHB1dCAiXG4yOiAyLjAgOiAwOjMuMCAgMTo0LjAgIHRvdGFsOiAxMS4wIiB9CisgIHByaW50ZigiZmZpOiAlLjFmXG4iLCByZXNmcCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbmZmaTogMTEuMCIgfQorCisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYwppbmRleCA5Y2ZmYjcxLi4zODBmZWRmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKQEAgLTcsNyArNyw3IEBACiAKIC8qIHsgZGctZXhjZXNzLWVycm9ycyAiIiB7IHRhcmdldCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogeHNjYWxlKi0qLSogfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLSogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLWxpbnV4KiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAKICNpbmNsdWRlICJmZml0ZXN0LmgiCkBAIC0xMjksMTQgKzEyOSwxNCBAQAogCQkJdWk2NF80ICsgNCwgc2k2NF80ICsgNCwgZl80ICsgNCwgZF80ICsgNCwgbGRfNCArIDQsIChjaGFyKikoKGludHB0cl90KXBfNCArIDQpLCAKIAkJdWk4XzUgKyA1LCBzaThfNSArIDV9OwogCi0JcHJpbnRmKCIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlaGh1ICVoaGQ6ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICVoaHUgJWhoZFxuIiwKKwlwcmludGYoIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICUiIFBSSXU4ICIgJSIgUFJJZDggIjogIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJSIgUFJJdTggIiAlIiBQUklkOCAiXG4iLAogCSAgICAgICB1aThfMSwgc2k4XzEsIHVpMTZfMSwgc2kxNl8xLCB1aTMyXzEsIHNpMzJfMSwgdWk2NF8xLCBzaTY0XzEsIGZfMSwgZF8xLCBsZF8xLCAodW5zaWduZWQgbG9uZylwXzEsCiAJCXVpOF8yLCBzaThfMiwgdWkxNl8yLCBzaTE2XzIsIHVpMzJfMiwgc2kzMl8yLCB1aTY0XzIsIHNpNjRfMiwgZl8yLCBkXzIsIGxkXzIsICh1bnNpZ25lZCBsb25nKXBfMiwKIAkJdWk4XzMsIHNpOF8zLCB1aTE2XzMsIHNpMTZfMywgdWkzMl8zLCBzaTMyXzMsIHVpNjRfMywgc2k2NF8zLCBmXzMsIGRfMywgbGRfMywgKHVuc2lnbmVkIGxvbmcpcF8zLApAQCAtMjI5LDYgKzIyOSwxOSBAQAogCWZmaV90eXBlKglzdF9maWVsZHNbNTFdOwogCUJpZ1N0cnVjdAlyZXRWYWw7CiAKKwl1aW50OF90CQl1aTgJCT0gMTsKKwlpbnQ4X3QJCXNpOAkJPSAyOworCXVpbnQxNl90CXVpMTYJPSAzOworCWludDE2X3QJCXNpMTYJPSA0OworCXVpbnQzMl90CXVpMzIJPSA1OworCWludDMyX3QJCXNpMzIJPSA2OworCXVpbnQ2NF90CXVpNjQJPSA3OworCWludDY0X3QJCXNpNjQJPSA4OworCWZsb2F0CQlmCQk9IDk7CisJZG91YmxlCQlkCQk9IDEwOworCWxvbmcgZG91YmxlCWxkCQk9IDExOworCWNoYXIqCQlwCQk9IChjaGFyKikweDEyMzQ1Njc4OworCiAJbWVtc2V0ICgmcmV0VmFsLCAwLCBzaXplb2YocmV0VmFsKSk7CiAKIAlyZXRfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CkBAIC0yNTEsMTkgKzI2NCw2IEBACiAKIAlzdF9maWVsZHNbNTBdID0gTlVMTDsKIAotCXVpbnQ4X3QJCXVpOAkJPSAxOwotCWludDhfdAkJc2k4CQk9IDI7Ci0JdWludDE2X3QJdWkxNgk9IDM7Ci0JaW50MTZfdAkJc2kxNgk9IDQ7Ci0JdWludDMyX3QJdWkzMgk9IDU7Ci0JaW50MzJfdAkJc2kzMgk9IDY7Ci0JdWludDY0X3QJdWk2NAk9IDc7Ci0JaW50NjRfdAkJc2k2NAk9IDg7Ci0JZmxvYXQJCWYJCT0gOTsKLQlkb3VibGUJCWQJCT0gMTA7Ci0JbG9uZyBkb3VibGUJbGQJCT0gMTE7Ci0JY2hhcioJCXAJCT0gKGNoYXIqKTB4MTIzNDU2Nzg7Ci0KIAlhcmdUeXBlc1swXQkJPSBhcmdUeXBlc1sxMl0JPSBhcmdUeXBlc1syNF0JPSBhcmdUeXBlc1szNl0JPSBhcmdUeXBlc1s0OF0JPSAmZmZpX3R5cGVfdWludDg7CiAJYXJnVmFsdWVzWzBdCT0gYXJnVmFsdWVzWzEyXQk9IGFyZ1ZhbHVlc1syNF0JPSBhcmdWYWx1ZXNbMzZdCT0gYXJnVmFsdWVzWzQ4XQk9ICZ1aTg7CiAJYXJnVHlwZXNbMV0JCT0gYXJnVHlwZXNbMTNdCT0gYXJnVHlwZXNbMjVdCT0gYXJnVHlwZXNbMzddCT0gYXJnVHlwZXNbNDldCT0gJmZmaV90eXBlX3NpbnQ4OwpAQCAtMjk2LDEwICsyOTYsMTAgQEAKIAogCWZmaV9jYWxsKCZjaWYsIEZGSV9GTih0ZXN0X2xhcmdlX2ZuKSwgJnJldFZhbCwgYXJnVmFsdWVzKTsKIAkvLyB7IGRnLW91dHB1dCAiMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDI6IDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAweDEyMzQ1Njc5IDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMHgxMjM0NTY3YSA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAweDEyMzQ1NjdiIDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAweDEyMzQ1NjdjIDYgNyIgfQotCXByaW50ZigicmVzOiAlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlaGh1ICVoaGRcbiIsCisJcHJpbnRmKCJyZXM6ICUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICUiIFBSSXU4ICIgJSIgUFJJZDggIlxuIiwKIAkJcmV0VmFsLmEsIHJldFZhbC5iLCByZXRWYWwuYywgcmV0VmFsLmQsIHJldFZhbC5lLCByZXRWYWwuZiwKIAkgICAgICAgcmV0VmFsLmcsIHJldFZhbC5oLCByZXRWYWwuaSwgcmV0VmFsLmosIHJldFZhbC5rLCAodW5zaWduZWQgbG9uZylyZXRWYWwubCwKIAkJcmV0VmFsLm0sIHJldFZhbC5uLCByZXRWYWwubywgcmV0VmFsLnAsIHJldFZhbC5xLCByZXRWYWwuciwKQEAgLTMyNCwxMCArMzI0LDEwIEBACiAJCXVpOCwgc2k4LCB1aTE2LCBzaTE2LCB1aTMyLCBzaTMyLCB1aTY0LCBzaTY0LCBmLCBkLCBsZCwgcCwKIAkJdWk4LCBzaTgpOwogCS8vIHsgZGctb3V0cHV0ICJcbjEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyOiAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMHgxMjM0NTY3OSAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDB4MTIzNDU2N2EgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMHgxMjM0NTY3YiA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMHgxMjM0NTY3YyA2IDciIH0KLQlwcmludGYoInJlczogJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkXG4iLAorCXByaW50ZigicmVzOiAlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICJcbiIsCiAJCXJldFZhbC5hLCByZXRWYWwuYiwgcmV0VmFsLmMsIHJldFZhbC5kLCByZXRWYWwuZSwgcmV0VmFsLmYsCiAJICAgICAgIHJldFZhbC5nLCByZXRWYWwuaCwgcmV0VmFsLmksIHJldFZhbC5qLCByZXRWYWwuaywgKHVuc2lnbmVkIGxvbmcpcmV0VmFsLmwsCiAJCXJldFZhbC5tLCByZXRWYWwubiwgcmV0VmFsLm8sIHJldFZhbC5wLCByZXRWYWwucSwgcmV0VmFsLnIsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Mi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDc3MTU5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYwpAQCAtMCwwICsxLDU0IEBACisvKiBBcmVhOiAgICAgICAgZmZpX2NhbGwKKyAgIFB1cnBvc2U6ICAgICBDaGVjayB1aW50OF90IGFyZ3VtZW50cy4KKyAgIExpbWl0YXRpb25zOiBub25lLgorICAgUFI6ICAgICAgICAgIFBSNDU2NzcuCisgICBPcmlnaW5hdG9yOiAgRGFuIFdpdHRlIDxkd2l0dGVAZ21haWwuY29tPiAyMDEwMDkxNiAgKi8KKworLyogeyBkZy1kbyBydW4gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCisjZGVmaW5lIE5BUkdTIDcKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OworCitfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHVpbnQ4X3QKK2ZvbyAodWludDhfdCBhLCB1aW50OF90IGIsIHVpbnQ4X3QgYywgdWludDhfdCBkLAorICAgICB1aW50OF90IGUsIHVpbnQ4X3QgZiwgdWludDhfdCBnKQoreworICByZXR1cm4gYSArIGIgKyBjICsgZCArIGUgKyBmICsgZzsKK30KKwordWludDhfdAorYmFyICh1aW50OF90IGEsIHVpbnQ4X3QgYiwgdWludDhfdCBjLCB1aW50OF90IGQsCisgICAgIHVpbnQ4X3QgZSwgdWludDhfdCBmLCB1aW50OF90IGcpCit7CisgIHJldHVybiBmb28gKGEsIGIsIGMsIGQsIGUsIGYsIGcpOworfQorCitpbnQKK21haW4gKHZvaWQpCit7CisgIGZmaV90eXBlICpmZml0eXBlc1tOQVJHU107CisgIGludCBpOworICBmZmlfY2lmIGNpZjsKKyAgZmZpX2FyZyByZXN1bHQgPSAwOworICB1aW50OF90IGFyZ3NbTkFSR1NdOworICB2b2lkICphcmdwdHJzW05BUkdTXTsKKworICBmb3IgKGkgPSAwOyBpIDwgTkFSR1M7ICsraSkKKyAgICBmZml0eXBlc1tpXSA9ICZmZmlfdHlwZV91aW50ODsKKworICBDSEVDSyAoZmZpX3ByZXBfY2lmICgmY2lmLCBGRklfREVGQVVMVF9BQkksIE5BUkdTLAorCQkgICAgICAgJmZmaV90eXBlX3VpbnQ4LCBmZml0eXBlcykgPT0gRkZJX09LKTsKKworICBmb3IgKGkgPSAwOyBpIDwgTkFSR1M7ICsraSkKKyAgICB7CisgICAgICBhcmdzW2ldID0gaTsKKyAgICAgIGFyZ3B0cnNbaV0gPSAmYXJnc1tpXTsKKyAgICB9CisgIGZmaV9jYWxsICgmY2lmLCBGRklfRk4gKGJhciksICZyZXN1bHQsIGFyZ3B0cnMpOworCisgIENIRUNLIChyZXN1bHQgPT0gMjEpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZGJlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jCkBAIC0wLDAgKzEsNjMgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBzdGRjYWxsIG1hbnkgY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorI2luY2x1ZGUgPGZsb2F0Lmg+CisKK3N0YXRpYyBmbG9hdCBfX2F0dHJpYnV0ZV9fKChmYXN0Y2FsbCkpIGZhc3RjYWxsX21hbnkoZmxvYXQgZjEsCisJCQkJCQkgICBmbG9hdCBmMiwKKwkJCQkJCSAgIGZsb2F0IGYzLAorCQkJCQkJICAgZmxvYXQgZjQsCisJCQkJCQkgICBmbG9hdCBmNSwKKwkJCQkJCSAgIGZsb2F0IGY2LAorCQkJCQkJICAgZmxvYXQgZjcsCisJCQkJCQkgICBmbG9hdCBmOCwKKwkJCQkJCSAgIGZsb2F0IGY5LAorCQkJCQkJICAgZmxvYXQgZjEwLAorCQkJCQkJICAgZmxvYXQgZjExLAorCQkJCQkJICAgZmxvYXQgZjEyLAorCQkJCQkJICAgZmxvYXQgZjEzKQoreworICByZXR1cm4gKChmMS9mMitmMy9mNCtmNS9mNitmNy9mOCtmOS9mMTArZjExL2YxMikgKiBmMTMpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzWzEzXTsKKyAgdm9pZCAqdmFsdWVzWzEzXTsKKyAgZmxvYXQgZmFbMTNdOworICBmbG9hdCBmLCBmZjsKKyAgdW5zaWduZWQgbG9uZyB1bDsKKworICBmb3IgKHVsID0gMDsgdWwgPCAxMzsgdWwrKykKKyAgICB7CisgICAgICBhcmdzW3VsXSA9ICZmZmlfdHlwZV9mbG9hdDsKKyAgICAgIHZhbHVlc1t1bF0gPSAmZmFbdWxdOworCWZhW3VsXSA9IChmbG9hdCkgdWw7CisgICAgfQorCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAxMywKKwkJICAgICAmZmZpX3R5cGVfZmxvYXQsIGFyZ3MpID09IEZGSV9PSyk7CisKKyAgZmYgPSAgZmFzdGNhbGxfbWFueShmYVswXSwgZmFbMV0sCisJCSAgICAgZmFbMl0sIGZhWzNdLAorCQkgICAgIGZhWzRdLCBmYVs1XSwKKwkJICAgICBmYVs2XSwgZmFbN10sCisJCSAgICAgZmFbOF0sIGZhWzldLAorCQkgICAgIGZhWzEwXSwgZmFbMTFdLCBmYVsxMl0pOworCisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihmYXN0Y2FsbF9tYW55KSwgJmYsIHZhbHVlcyk7CisKKyAgaWYgKGYgLSBmZiA8IEZMVF9FUFNJTE9OKQorICAgIHByaW50ZigiZmFzdGNhbGwgbWFueSBhcmcgdGVzdHMgb2shXG4iKTsKKyAgZWxzZQorICAgIENIRUNLKDApOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jCmluZGV4IDhhYTUyN2UuLmMxNWUzYTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMKQEAgLTc3LDYgKzc3LDEyIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCisJCQkJICAgICAgezMsIDEuMCwgOC4wfX07CisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC05MiwxMiArOTgsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBlX2RibCA9IHsgOS4wLCAyLjAsIDZ9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUyIGZfZGJsID0geyAxLCAyLjAsIDMuMH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0ge3s0LjAsIDUuMCwgNn0sCi0JCQkJICAgICAgezMsIDEuMCwgOC4wfX07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jCmluZGV4IDJhOWY1MTUuLjEwODdmN2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYwpAQCAtODEsNiArODEsMTMgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIGVfZGJsID0geyA5LjAsIDIuMCwgNn07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTIgZl9kYmwgPSB7IDEsIDIuMCwgMy4wfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7ezQuMCwgNS4wLCA2fSwKKwkJCQkgICAgICB7MywgMS4wLCA4LjB9fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBoX2RibCA9IHsgMy4wLCAyLjAsIDR9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtOTYsMTMgKzEwMyw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIGVfZGJsID0geyA5LjAsIDIuMCwgNn07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTIgZl9kYmwgPSB7IDEsIDIuMCwgMy4wfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7ezQuMCwgNS4wLCA2fSwKLQkJCQkgICAgICB7MywgMS4wLCA4LjB9fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMSBoX2RibCA9IHsgMy4wLCAyLjAsIDR9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jCmluZGV4IGQ2YTcxOGIuLjM0YTc0ZTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jCkBAIC02Nyw2ICs2NywxMiBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzRdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHsgOTksIHsxMkxMICwgMTI3fSwgMjU1fTsKKyAgc3RydWN0IEMgZ19kYmwgPSB7IDJMTCwgOX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTgyLDEyICs4OCw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7IDk5LCB7MTJMTCAsIDEyN30sIDI1NX07Ci0gIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMKaW5kZXggZGUxNTg0Yy4uNjkyNjhjZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jCkBAIC01Nyw2ICs1NywxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02NywxMSArNzIsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91bG9uZzsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jCmluZGV4IDU4YWE4NTMuLmFiMThjYWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyTEwgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY4LDExICs3Myw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyTEwgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYwppbmRleCA5OGU0OTFlLi4yZmZiNGQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMKaW5kZXggZDhlMzUzNy4uNmM3OTg0NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jCkBAIC01OCw2ICs1OCwxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjgsMTEgKzczLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYwppbmRleCAyZjJiMjVhLi41OWQzNTc5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMKQEAgLTY2LDYgKzY2LDEyIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNF07CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTgxLDEyICs4Nyw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0gIHN0cnVjdCBDIGdfZGJsID0geyAyLCA5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jCmluZGV4IDE0YzcwMjMuLjI3NTk1ZTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY4LDExICs3Myw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYwppbmRleCBiYjc3ZWFkLi4wZTZjNjgyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMKQEAgLTY2LDYgKzY2LDEyIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNF07CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OworICBzdHJ1Y3QgQyBnX2RibCA9IHsgMkxMLCA5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtODEsMTIgKzg3LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTJMTCAsIDEyN30sIDk5fTsKLSAgc3RydWN0IEMgZ19kYmwgPSB7IDJMTCwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYwppbmRleCBlOWY1NDFjLi41ZjdhYzY3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMKQEAgLTY2LDYgKzY2LDEyIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNF07CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDEsIDdMTH07CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworICBzdHJ1Y3QgQyBnX2RibCA9IHsgMiwgOX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTgxLDEyICs4Nyw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMSwgN0xMfTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0gIHN0cnVjdCBDIGdfZGJsID0geyAyLCA5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3JldHVybl9zYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMKaW5kZXggMTk2MDhlZS4uYTM2Y2YzZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICBzYyA8IChzaWduZWQgY2hhcikgMTI3OyBzYysrKQogICAgIHsKICAgICAgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihyZXR1cm5fc2MpLCAmcmludCwgdmFsdWVzKTsKLSAgICAgIENIRUNLKHJpbnQgPT0gKGZmaV9hcmcpIHNjKTsKKyAgICAgIENIRUNLKChzaWduZWQgY2hhcilyaW50ID09IHNjKTsKICAgICB9CiAgIGV4aXQoMCk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYwppbmRleCAyM2E5M2I5Li5mMzI5MzhjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMKQEAgLTgyLDE3ICs4MiwxNyBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLQljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLQljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLQljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogCXN0cnVjdF8xMDhieXRlIGVfZGJsID0geyA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgNC4wLCA4LjAsIDEuMCwgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDcgfTsKIAlzdHJ1Y3RfMTA4Ynl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAsIDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCA0IH07CiAJc3RydWN0XzEwOGJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wLCA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgMyB9OwogCXN0cnVjdF8xMDhieXRlIGhfZGJsID0geyA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgMy4wLCAzLjAsIDEuMCwgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDIgfTsKIAlzdHJ1Y3RfMTA4Ynl0ZSByZXNfZGJsOwogCisJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jCmluZGV4IGUyNTk5ZDIuLjNiMGVmOWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jCkBAIC04NCwxNyArODQsMTcgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLQljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0JY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KIAlzdHJ1Y3RfMTE2Ynl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDcgfTsKIAlzdHJ1Y3RfMTE2Ynl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAsIDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCA2LjAsIDQgfTsKIAlzdHJ1Y3RfMTE2Ynl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDEuMCwgMi4wLCA5LjAsIDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCA3LjAsIDMgfTsKIAlzdHJ1Y3RfMTE2Ynl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA4LjAsIDIgfTsKIAlzdHJ1Y3RfMTE2Ynl0ZSByZXNfZGJsOwogCisJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jCmluZGV4IDFmYzZhOWUuLjk3M2VlMDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jCkBAIC02OCwxNyArNjgsMTcgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLQljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0JY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KIAlzdHJ1Y3RfNzJieXRlIGVfZGJsID0geyA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgNC4wLCA4LjAsIDEuMCwgNy4wIH07CiAJc3RydWN0XzcyYnl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNi4wLCA3LjAsIDQuMCB9OwogCXN0cnVjdF83MmJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wLCAzLjAgfTsKIAlzdHJ1Y3RfNzJieXRlIGhfZGJsID0geyA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgMy4wLCAzLjAsIDEuMCwgMi4wIH07CiAJc3RydWN0XzcyYnl0ZSByZXNfZGJsOwogCisJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOworCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMKaW5kZXggY2IyZjJmYi4uODQzMjNkMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYwpAQCAtNjksMTcgKzY5LDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzcyYnl0ZSBlX2RibCA9IHsgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDQuMCwgOC4wLCAxLjAsIDcgfTsKIAlzdHJ1Y3RfNzJieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA2LjAsIDcuMCwgNCB9OwogCXN0cnVjdF83MmJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LjAsIDkuMCwgMS4wLCAxLjAsIDIuMCwgOS4wLCAzIH07CiAJc3RydWN0XzcyYnl0ZSBoX2RibCA9IHsgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDMuMCwgMy4wLCAxLjAsIDIgfTsKIAlzdHJ1Y3RfNzJieXRlIHJlc19kYmw7CiAKKwljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDgxMDYxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jCkBAIC0wLDAgKzEsNDQgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBmYXN0Y2FsbCBzdHJsZW4gY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgc2l6ZV90IF9fRkFTVENBTExfXyBteV9mYXN0Y2FsbF9zdHJsZW4oY2hhciAqcykKK3sKKyAgcmV0dXJuIChzdHJsZW4ocykpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX2FyZyByaW50OworICBjaGFyICpzOworICBhcmdzWzBdID0gJmZmaV90eXBlX3BvaW50ZXI7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnM7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMSwKKwkJICAgICAgICZmZmlfdHlwZV9zaW50LCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgcyA9ICJhIjsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX3N0cmxlbiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDEpOworICAKKyAgcyA9ICIxMjM0NTY3IjsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX3N0cmxlbiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDcpOworICAKKyAgcyA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX3N0cmxlbiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDI1KTsKKyAgCisgIHByaW50ZigiZmFzdGNhbGwgc3RybGVuIHRlc3RzIHBhc3NlZFxuIik7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmMKaW5kZXggZWE3NmM4NS4uYmZjMjNmNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYwpAQCAtMzAsNiArMzAsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHMxX3R5cGU7CiAgIGZmaV90eXBlICp0czFfdHlwZV9lbGVtZW50c1s0XTsKKworICB0ZXN0X3N0cnVjdHVyZV8xIHRzMV9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzEgKnRzMV9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8xICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzEpKTsKKwogICB0czFfdHlwZS5zaXplID0gMDsKICAgdHMxX3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHMxX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM5LDExICs0Niw2IEBACiAgIHRzMV90eXBlX2VsZW1lbnRzWzJdID0gJmZmaV90eXBlX3VpbnQ7CiAgIHRzMV90eXBlX2VsZW1lbnRzWzNdID0gTlVMTDsKICAgCi0gIHRlc3Rfc3RydWN0dXJlXzEgdHMxX2FyZzsKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzEgKnRzMV9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfMSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8xKSk7Ci0gIAogICBhcmdzWzBdID0gJnRzMV90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHMxX2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc1NmY1YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYwpAQCAtMCwwICsxLDY3IEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgc3RydWN0dXJlcyB3aXRoIGZhc3RjYWxsL3RoaXNjYWxsIGNvbnZlbnRpb24uCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIGNoYXIgdWM7CisgIGRvdWJsZSBkOworICB1bnNpZ25lZCBpbnQgdWk7Cit9IHRlc3Rfc3RydWN0dXJlXzE7CisKK3N0YXRpYyB0ZXN0X3N0cnVjdHVyZV8xIF9fRkFTVENBTExfXyBzdHJ1Y3QxKHRlc3Rfc3RydWN0dXJlXzEgdHMpCit7CisgIHRzLnVjKys7CisgIHRzLmQtLTsKKyAgdHMudWkrKzsKKworICByZXR1cm4gdHM7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfdHlwZSB0czFfdHlwZTsKKyAgZmZpX3R5cGUgKnRzMV90eXBlX2VsZW1lbnRzWzRdOworCisgIHRlc3Rfc3RydWN0dXJlXzEgdHMxX2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfMSAqdHMxX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzEgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMSkpOworCisgIHRzMV90eXBlLnNpemUgPSAwOworICB0czFfdHlwZS5hbGlnbm1lbnQgPSAwOworICB0czFfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICB0czFfdHlwZS5lbGVtZW50cyA9IHRzMV90eXBlX2VsZW1lbnRzOworICB0czFfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKKyAgdHMxX3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOworICB0czFfdHlwZV9lbGVtZW50c1syXSA9ICZmZmlfdHlwZV91aW50OworICB0czFfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CisgIAorICBhcmdzWzBdID0gJnRzMV90eXBlOworICB2YWx1ZXNbMF0gPSAmdHMxX2FyZzsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAxLCAKKwkJICAgICAmdHMxX3R5cGUsIGFyZ3MpID09IEZGSV9PSyk7CisgIAorICB0czFfYXJnLnVjID0gJ1x4MDEnOworICB0czFfYXJnLmQgPSAzLjE0MTU5OworICB0czFfYXJnLnVpID0gNTU1OworCisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihzdHJ1Y3QxKSwgdHMxX3Jlc3VsdCwgdmFsdWVzKTsKKyAgCisgIENIRUNLKHRzMV9yZXN1bHQtPnVpID09IDU1Nik7CisgIENIRUNLKHRzMV9yZXN1bHQtPmQgPT0gMy4xNDE1OSAtIDEpOworIAorICBmcmVlICh0czFfcmVzdWx0KTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYwppbmRleCAxNGJjOWZkLi5kODUzODVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jCkBAIC0yOSw2ICsyOSwxMSBAQAogICB0ZXN0X3N0cnVjdHVyZV8yIHRzMl9hcmc7CiAgIGZmaV90eXBlIHRzMl90eXBlOwogICBmZmlfdHlwZSAqdHMyX3R5cGVfZWxlbWVudHNbM107CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzIgKnRzMl9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8yICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzIpKTsKKwogICB0czJfdHlwZS5zaXplID0gMDsKICAgdHMyX3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHMyX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM3LDExICs0Miw2IEBACiAgIHRzMl90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgdHMyX3R5cGVfZWxlbWVudHNbMl0gPSBOVUxMOwogCi0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfMiAqdHMyX3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV8yICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzIpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHMyX3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czJfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDAyMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jCkBAIC0wLDAgKzEsNjcgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBzdHJ1Y3R1cmVzIGluIGZhc3RjYWxsL3N0ZGNhbGwgZnVuY3Rpb24KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworI2luY2x1ZGUgImZmaXRlc3QuaCIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgZG91YmxlIGQxOworICBkb3VibGUgZDI7Cit9IHRlc3Rfc3RydWN0dXJlXzI7CisKK3N0YXRpYyB0ZXN0X3N0cnVjdHVyZV8yIF9fRkFTVENBTExfXyBzdHJ1Y3QyKHRlc3Rfc3RydWN0dXJlXzIgdHMpCit7CisgIHRzLmQxLS07CisgIHRzLmQyLS07CisKKyAgcmV0dXJuIHRzOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgdGVzdF9zdHJ1Y3R1cmVfMiB0czJfYXJnOworICBmZmlfdHlwZSB0czJfdHlwZTsKKyAgZmZpX3R5cGUgKnRzMl90eXBlX2VsZW1lbnRzWzNdOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8yICp0czJfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8yKSk7CisKKyAgdHMyX3R5cGUuc2l6ZSA9IDA7CisgIHRzMl90eXBlLmFsaWdubWVudCA9IDA7CisgIHRzMl90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisgIHRzMl90eXBlLmVsZW1lbnRzID0gdHMyX3R5cGVfZWxlbWVudHM7CisgIHRzMl90eXBlX2VsZW1lbnRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKKyAgdHMyX3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOworICB0czJfdHlwZV9lbGVtZW50c1syXSA9IE5VTEw7CisKKyAgYXJnc1swXSA9ICZ0czJfdHlwZTsKKyAgdmFsdWVzWzBdID0gJnRzMl9hcmc7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBjaWYgKi8KKyAgQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9GQVNUQ0FMTCwgMSwgJnRzMl90eXBlLCBhcmdzKSA9PSBGRklfT0spOworICAKKyAgdHMyX2FyZy5kMSA9IDUuNTU7CisgIHRzMl9hcmcuZDIgPSA2LjY2OworICAKKyAgcHJpbnRmICgiJWdcbiIsIHRzMl9hcmcuZDEpOworICBwcmludGYgKCIlZ1xuIiwgdHMyX2FyZy5kMik7CisgIAorICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oc3RydWN0MiksIHRzMl9yZXN1bHQsIHZhbHVlcyk7CisgIAorICBwcmludGYgKCIlZ1xuIiwgdHMyX3Jlc3VsdC0+ZDEpOworICBwcmludGYgKCIlZ1xuIiwgdHMyX3Jlc3VsdC0+ZDIpOworICAKKyAgQ0hFQ0sodHMyX3Jlc3VsdC0+ZDEgPT0gNS41NSAtIDEpOworICBDSEVDSyh0czJfcmVzdWx0LT5kMiA9PSA2LjY2IC0gMSk7CisgIAorICBmcmVlICh0czJfcmVzdWx0KTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYwppbmRleCBlMGJiMDliLi5kZTg4M2MyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jCkBAIC0yNyw2ICsyNywxMSBAQAogICBpbnQgY29tcGFyZV92YWx1ZTsKICAgZmZpX3R5cGUgdHMzX3R5cGU7CiAgIGZmaV90eXBlICp0czNfdHlwZV9lbGVtZW50c1syXTsKKworICB0ZXN0X3N0cnVjdHVyZV8zIHRzM19hcmc7CisgIHRlc3Rfc3RydWN0dXJlXzMgKnRzM19yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8zICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzMpKTsKKwogICB0czNfdHlwZS5zaXplID0gMDsKICAgdHMzX3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHMzX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM0LDEwICszOSw2IEBACiAgIHRzM190eXBlX2VsZW1lbnRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIHRzM190eXBlX2VsZW1lbnRzWzFdID0gTlVMTDsKIAotICB0ZXN0X3N0cnVjdHVyZV8zIHRzM19hcmc7Ci0gIHRlc3Rfc3RydWN0dXJlXzMgKnRzM19yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfMyAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8zKSk7Ci0gIAogICBhcmdzWzBdID0gJnRzM190eXBlOwogICB2YWx1ZXNbMF0gPSAmdHMzX2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMKaW5kZXggMGFkMGE4My4uNDhlMDM0OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYwpAQCAtMjgsMjEgKzI4LDIyIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzNF90eXBlOwogICBmZmlfdHlwZSAqdHM0X3R5cGVfZWxlbWVudHNbNF07ICAKKworICB0ZXN0X3N0cnVjdHVyZV80IHRzNF9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzQgKnRzNF9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV80ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzQpKTsKKwogICB0czRfdHlwZS5zaXplID0gMDsKICAgdHM0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLSAgdGVzdF9zdHJ1Y3R1cmVfNCB0czRfYXJnOwogICB0czRfdHlwZS5lbGVtZW50cyA9IHRzNF90eXBlX2VsZW1lbnRzOwogICB0czRfdHlwZV9lbGVtZW50c1swXSA9ICZmZmlfdHlwZV91aW50OwogICB0czRfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV91aW50OwogICB0czRfdHlwZV9lbGVtZW50c1syXSA9ICZmZmlfdHlwZV91aW50OwogICB0czRfdHlwZV9lbGVtZW50c1szXSA9IE5VTEw7CiAKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV80ICp0czRfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzQgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNCkpOwotICAKICAgYXJnc1swXSA9ICZ0czRfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzNF9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jCmluZGV4IGMwM2NjOTcuLjI4YjFmMGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmMKQEAgLTI3LDYgKzI3LDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzNV90eXBlOwogICBmZmlfdHlwZSAqdHM1X3R5cGVfZWxlbWVudHNbM107CisKKyAgdGVzdF9zdHJ1Y3R1cmVfNSB0czVfYXJnMSwgdHM1X2FyZzI7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzUgKnRzNV9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV81ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzUpKTsKKwogICB0czVfdHlwZS5zaXplID0gMDsKICAgdHM1X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM1X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM1LDEyICs0Miw2IEBACiAgIHRzNV90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX3NjaGFyOwogICB0czVfdHlwZV9lbGVtZW50c1syXSA9IE5VTEw7CiAKLSAgdGVzdF9zdHJ1Y3R1cmVfNSB0czVfYXJnMSwgdHM1X2FyZzI7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNSAqdHM1X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV81ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzUpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM1X3R5cGU7CiAgIGFyZ3NbMV0gPSAmdHM1X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czVfYXJnMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYwppbmRleCA4M2RiOWFmLi4wZTI2NzQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jCkBAIC0yNyw2ICsyNywxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czZfdHlwZTsKICAgZmZpX3R5cGUgKnRzNl90eXBlX2VsZW1lbnRzWzNdOworCisgIHRlc3Rfc3RydWN0dXJlXzYgdHM2X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfNiAqdHM2X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzYgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNikpOworCiAgIHRzNl90eXBlLnNpemUgPSAwOwogICB0czZfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czZfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzUsMTMgKzQyLDYgQEAKICAgdHM2X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICB0czZfdHlwZV9lbGVtZW50c1syXSA9IE5VTEw7CiAKLQotICB0ZXN0X3N0cnVjdHVyZV82IHRzNl9hcmc7Ci0KLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzYgKnRzNl9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfNiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV82KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzNl90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM2X2FyZzsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jCmluZGV4IDU4YWFjNGMuLjhmMmJiZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMKQEAgLTI5LDYgKzI5LDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzN190eXBlOwogICBmZmlfdHlwZSAqdHM3X3R5cGVfZWxlbWVudHNbNF07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfNyB0czdfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV83ICp0czdfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNyAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV83KSk7CisKICAgdHM3X3R5cGUuc2l6ZSA9IDA7CiAgIHRzN190eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzN190eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zOCwxMyArNDUsNiBAQAogICB0czdfdHlwZV9lbGVtZW50c1syXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIHRzN190eXBlX2VsZW1lbnRzWzNdID0gTlVMTDsKIAotCi0gIHRlc3Rfc3RydWN0dXJlXzcgdHM3X2FyZzsKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV83ICp0czdfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzcgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNykpOwotICAKICAgYXJnc1swXSA9ICZ0czdfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzN19hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jCmluZGV4IGM3NzNhYzcuLjI2NmUxZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMKQEAgLTMxLDYgKzMxLDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzOF90eXBlOwogICBmZmlfdHlwZSAqdHM4X3R5cGVfZWxlbWVudHNbNV07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfOCB0czhfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV84ICp0czhfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfOCAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV84KSk7CisKICAgdHM4X3R5cGUuc2l6ZSA9IDA7CiAgIHRzOF90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzOF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC00MSwxMiArNDgsNiBAQAogICB0czhfdHlwZV9lbGVtZW50c1szXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgdHM4X3R5cGVfZWxlbWVudHNbNF0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzggdHM4X2FyZzsKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV84ICp0czhfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzggKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfOCkpOwotICAKICAgYXJnc1swXSA9ICZ0czhfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzOF9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jCmluZGV4IGYzMDA5MWYuLmVmZWI3MTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmMKQEAgLTI4LDYgKzI4LDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzOV90eXBlOwogICBmZmlfdHlwZSAqdHM5X3R5cGVfZWxlbWVudHNbM107CisKKyAgdGVzdF9zdHJ1Y3R1cmVfOSB0czlfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV85ICp0czlfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfOSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV85KSk7CisKICAgdHM5X3R5cGUuc2l6ZSA9IDA7CiAgIHRzOV90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzOV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNiwxMiArNDMsNiBAQAogICB0czlfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICB0czlfdHlwZV9lbGVtZW50c1syXSA9IE5VTEw7CiAKLSAgdGVzdF9zdHJ1Y3R1cmVfOSB0czlfYXJnOwotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzkgKnRzOV9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfOSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV85KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzOV90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM5X2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYwppbmRleCAxNjFjYzg5Li5jYTMxMDU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMKQEAgLTQzLDEzICs0MywxMyBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUwOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHs0LjAsIDUuMCwgMS4wLCA4LjB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZTAuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZTAuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlMC50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUwLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMwOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0gezQuMCwgNS4wLCAxLjAsIDguMH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHMwWzBdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkczBbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzMFsyXSA9ICZmZmlfdHlwZV9mbG9hdDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAKaW5kZXggZTE2N2U4Ni4uNzQ2NzFiMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNCw4ICsxNCw2IEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAotbG9hZF9saWIgbGliZmZpLWRnLmV4cAotCiBkZy1pbml0CiBsaWJmZmktaW5pdAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jIGIvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYwppbmRleCAyNjJkMGI0Li5lNWIwZTRjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKQEAgLTQyNiw5ICs0MjYsOSBAQAogICAgICAgICBTdGdEaWN0T2JqZWN0ICpkaWN0OwogICAgICAgICBpbnQgYml0c2l6ZSA9IDA7CiAKLSAgICAgICAgaWYgKCFwYWlyIHx8ICFQeUFyZ19QYXJzZVR1cGxlKHBhaXIsICJPT3xpIiwgJm5hbWUsICZkZXNjLCAmYml0c2l6ZSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ19maWVsZHNfJyBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgcGFpcnMiKTsKKyAgICAgICAgaWYgKCFwYWlyIHx8ICFQeUFyZ19QYXJzZVR1cGxlKHBhaXIsICJVT3xpIiwgJm5hbWUsICZkZXNjLCAmYml0c2l6ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidfZmllbGRzXycgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIChuYW1lLCBDIHR5cGUpIHBhaXJzIik7CiAgICAgICAgICAgICBQeV9YREVDUkVGKHBhaXIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC00NzgsNiArNDc4LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBiaXRzaXplID0gMDsKKwogICAgICAgICBpZiAoaXNTdHJ1Y3QgJiYgIWlzUGFja2VkKSB7CiAgICAgICAgICAgICBjaGFyICpmaWVsZGZtdCA9IGRpY3QtPmZvcm1hdCA/IGRpY3QtPmZvcm1hdCA6ICJCIjsKICAgICAgICAgICAgIGNoYXIgKmZpZWxkbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CkBAIC00ODcsMTAgKzQ4OCw2IEBACiAKICAgICAgICAgICAgIGlmIChmaWVsZG5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RydWN0dXJlIGZpZWxkIG5hbWUgbXVzdCBiZSBzdHJpbmcgbm90ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYWlyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CkBAIC01MTUsNiArNTEyLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNTdHJ1Y3QpIHsKICAgICAgICAgICAgIHByb3AgPSBQeUNGaWVsZF9Gcm9tRGVzYyhkZXNjLCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmllbGRfc2l6ZSwgYml0c2l6ZSwgJmJpdG9mcywKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jIGIvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKaW5kZXggODU2MWEyZS4uMWM3ZDA4NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKKysrIGIvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKQEAgLTE2LDggKzE2LDM3IEBACiAKICNpbmNsdWRlIDxwYW5lbC5oPgogCi1zdGF0aWMgUHlPYmplY3QgKlB5Q3Vyc2VzRXJyb3I7Cit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKlB5Q3Vyc2VzRXJyb3I7CisgICAgUHlPYmplY3QgKlB5Q3Vyc2VzUGFuZWxfVHlwZTsKK30gX2N1cnNlc19wYW5lbHN0YXRlOwogCisjZGVmaW5lIF9jdXJzZXNfcGFuZWxzdGF0ZShvKSAoKF9jdXJzZXNfcGFuZWxzdGF0ZSAqKVB5TW9kdWxlX0dldFN0YXRlKG8pKQorCitzdGF0aWMgaW50CitfY3Vyc2VzX3BhbmVsX2NsZWFyKFB5T2JqZWN0ICptKQoreworICAgIFB5X0NMRUFSKF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvcik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19jdXJzZXNfcGFuZWxfdHJhdmVyc2UoUHlPYmplY3QgKm0sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNFcnJvcik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitfY3Vyc2VzX3BhbmVsX2ZyZWUodm9pZCAqbSkKK3sKKyAgICBfY3Vyc2VzX3BhbmVsX2NsZWFyKChQeU9iamVjdCAqKSBtKTsKK30KKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfY3Vyc2VzX3BhbmVsbW9kdWxlOworCisjZGVmaW5lIF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwgXAorKChfY3Vyc2VzX3BhbmVsc3RhdGUgKikgUHlNb2R1bGVfR2V0U3RhdGUoUHlTdGF0ZV9GaW5kTW9kdWxlKCZfY3Vyc2VzX3BhbmVsbW9kdWxlKSkpCiAKIC8qIFV0aWxpdHkgRnVuY3Rpb25zICovCiAKQEAgLTM0LDkgKzYzLDkgQEAKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGZuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9FUlIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsIGNhdGNoYWxsX0VSUik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlDdXJzZXNFcnJvciwgIiVzKCkgcmV0dXJuZWQgRVJSIiwgZm5hbWUpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsICIlcygpIHJldHVybmVkIEVSUiIsIGZuYW1lKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01NCw5ICs4Myw4IEBACiAgICAgUHlDdXJzZXNXaW5kb3dPYmplY3QgKndvOyAgIC8qIGZvciByZWZlcmVuY2UgY291bnRzICovCiB9IFB5Q3Vyc2VzUGFuZWxPYmplY3Q7CiAKLVB5VHlwZU9iamVjdCBQeUN1cnNlc1BhbmVsX1R5cGU7Ci0KLSNkZWZpbmUgUHlDdXJzZXNQYW5lbF9DaGVjayh2KSAgIChQeV9UWVBFKHYpID09ICZQeUN1cnNlc1BhbmVsX1R5cGUpCisjZGVmaW5lIFB5Q3Vyc2VzUGFuZWxfQ2hlY2sodikgIFwKKyAoUHlfVFlQRSh2KSA9PSBfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc1BhbmVsX1R5cGUpCiAKIC8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucy4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGVyZSdzIGFsd2F5cyBhIHdpbmRvdwogICAgYXNzb2NpYXRlZCB3aXRoIGEgcGFuZWwuIFRvIGVuc3VyZSB0aGF0IFB5dGhvbidzIEdDIGRvZXNuJ3QgcHVsbApAQCAtMTc1LDcgKzIwMyw4IEBACiB7CiAgICAgUHlDdXJzZXNQYW5lbE9iamVjdCAqcG87CiAKLSAgICBwbyA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1BhbmVsT2JqZWN0LCAmUHlDdXJzZXNQYW5lbF9UeXBlKTsKKyAgICBwbyA9IFB5T2JqZWN0X05FVyhQeUN1cnNlc1BhbmVsT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKikoX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbCktPlB5Q3Vyc2VzUGFuZWxfVHlwZSk7CiAgICAgaWYgKHBvID09IE5VTEwpIHJldHVybiBOVUxMOwogICAgIHBvLT5wYW4gPSBwYW47CiAgICAgaWYgKGluc2VydF9sb3AocG8pIDwgMCkgewpAQCAtMjgwLDcgKzMwOSw3IEBACiAKICAgICBydG4gPSByZXBsYWNlX3BhbmVsKHNlbGYtPnBhbiwgdGVtcC0+d2luKTsKICAgICBpZiAocnRuID09IEVSUikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgInJlcGxhY2VfcGFuZWwoKSByZXR1cm5lZCBFUlIiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsICJyZXBsYWNlX3BhbmVsKCkgcmV0dXJuZWQgRVJSIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9ERUNSRUYocG8tPndvKTsKQEAgLTMwNSw3ICszMzQsNyBAQAogICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CiAgICAgb2JqID0gKFB5T2JqZWN0ICopIHBhbmVsX3VzZXJwdHIoc2VsZi0+cGFuKTsKICAgICBpZiAob2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJubyB1c2VycHRyIHNldCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNFcnJvciwgIm5vIHVzZXJwdHIgc2V0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzM0LDM2ICszNjMsMTggQEAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKLVB5VHlwZU9iamVjdCBQeUN1cnNlc1BhbmVsX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9jdXJzZXNfcGFuZWwuY3Vyc2VzIHBhbmVsIiwgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoUHlDdXJzZXNQYW5lbE9iamVjdCksICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpUHlDdXJzZXNQYW5lbF9EZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgUHlDdXJzZXNQYW5lbF9NZXRob2RzLCAvKnRwX21ldGhvZHMqLworc3RhdGljIFB5VHlwZV9TbG90IFB5Q3Vyc2VzUGFuZWxfVHlwZV9zbG90c1tdID0geworICAgIHtQeV90cF9kZWFsbG9jLCBQeUN1cnNlc1BhbmVsX0RlYWxsb2N9LAorICAgIHtQeV90cF9tZXRob2RzLCBQeUN1cnNlc1BhbmVsX01ldGhvZHN9LAorICAgIHswLCAwfSwKK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBQeUN1cnNlc1BhbmVsX1R5cGVfc3BlYyA9IHsKKyAgICAiX2N1cnNlc19wYW5lbC5jdXJzZXMgcGFuZWwiLAorICAgIHNpemVvZihQeUN1cnNlc1BhbmVsT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICBQeUN1cnNlc1BhbmVsX1R5cGVfc2xvdHMKIH07CiAKIC8qIFdyYXBwZXIgZm9yIHBhbmVsX2Fib3ZlKE5VTEwpLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGJvdHRvbQpAQCAtNDA1LDcgKzQxNiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHBhbiA9IG5ld19wYW5lbCh3aW4tPndpbik7CiAgICAgaWYgKHBhbiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCBjYXRjaGFsbF9OVUxMKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzRXJyb3IsIGNhdGNoYWxsX05VTEwpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzUGFuZWxfTmV3KHBhbiwgd2luKTsKQEAgLTQ2NywxMiArNDc4LDEyIEBACiAgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAgICAgIl9jdXJzZXNfcGFuZWwiLAogICAgICAgICBOVUxMLAotICAgICAgICAtMSwKKyAgICAgICAgc2l6ZW9mKF9jdXJzZXNfcGFuZWxzdGF0ZSksCiAgICAgICAgIFB5Q3Vyc2VzX21ldGhvZHMsCiAgICAgICAgIE5VTEwsCi0gICAgICAgIE5VTEwsCi0gICAgICAgIE5VTEwsCi0gICAgICAgIE5VTEwKKyAgICAgICAgX2N1cnNlc19wYW5lbF90cmF2ZXJzZSwKKyAgICAgICAgX2N1cnNlc19wYW5lbF9jbGVhciwKKyAgICAgICAgX2N1cnNlc19wYW5lbF9mcmVlCiB9OwogCiBQeU1PRElOSVRfRlVOQwpAQCAtNDgwLDIxICs0OTEsMjMgQEAKIHsKICAgICBQeU9iamVjdCAqbSwgKmQsICp2OwogCi0gICAgLyogSW5pdGlhbGl6ZSBvYmplY3QgdHlwZSAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Q3Vyc2VzUGFuZWxfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGltcG9ydF9jdXJzZXMoKTsKLQogICAgIC8qIENyZWF0ZSB0aGUgbW9kdWxlIGFuZCBhZGQgdGhlIGZ1bmN0aW9ucyAqLwogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9jdXJzZXNfcGFuZWxtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGZhaWw7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAKKyAgICAvKiBJbml0aWFsaXplIG9iamVjdCB0eXBlICovCisgICAgX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc1BhbmVsX1R5cGUgPSBcCisgICAgICAgIFB5VHlwZV9Gcm9tU3BlYygmUHlDdXJzZXNQYW5lbF9UeXBlX3NwZWMpOworICAgIGlmIChfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzUGFuZWxfVHlwZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBpbXBvcnRfY3Vyc2VzKCk7CisKICAgICAvKiBGb3IgZXhjZXB0aW9uIF9jdXJzZXNfcGFuZWwuZXJyb3IgKi8KLSAgICBQeUN1cnNlc0Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfY3Vyc2VzX3BhbmVsLmVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImVycm9yIiwgUHlDdXJzZXNFcnJvcik7CisgICAgX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc0Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfY3Vyc2VzX3BhbmVsLmVycm9yIiwgTlVMTCwgTlVMTCk7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImVycm9yIiwgX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc0Vycm9yKTsKIAogICAgIC8qIE1ha2UgdGhlIHZlcnNpb24gYXZhaWxhYmxlICovCiAgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5Q3Vyc2VzVmVyc2lvbik7CkBAIC01MDIsNCArNTE1LDcgQEAKICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX192ZXJzaW9uX18iLCB2KTsKICAgICBQeV9ERUNSRUYodik7CiAgICAgcmV0dXJuIG07CisgIGZhaWw6CisgICAgUHlfWERFQ1JFRihtKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jIGIvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKaW5kZXggNWUxYWZhOS4uNGUxNDQ5YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKQEAgLTEwNSwxMCArMTA1LDYgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogCi0jaWZkZWYgX19vc2ZfXwotI2RlZmluZSBTVFJJQ1RfU1lTVl9DVVJTRVMgICAgICAvKiBEb24ndCB1c2UgbmN1cnNlcyBleHRlbnNpb25zICovCi0jZW5kaWYKLQogI2lmZGVmIF9faHB1eAogI2RlZmluZSBTVFJJQ1RfU1lTVl9DVVJTRVMKICNlbmRpZgpAQCAtMTI1LDYgKzEyMSwxMCBAQAogI2luY2x1ZGUgPHRlcm0uaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9MQU5HSU5GT19ICisjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoSEFWRV9OQ1VSU0VTX0gpICYmIChkZWZpbmVkKHNnaSkgfHwgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChTQ081KSkKICNkZWZpbmUgU1RSSUNUX1NZU1ZfQ1VSU0VTICAgICAgIC8qIERvbid0IHVzZSBuY3Vyc2VzIGV4dGVuc2lvbnMgKi8KIHR5cGVkZWYgY2h0eXBlIGF0dHJfdDsgICAgICAgICAgIC8qIE5vIGF0dHJfdCB0eXBlIGlzIGF2YWlsYWJsZSAqLwpAQCAtMTQ3LDYgKzE0Nyw4IEBACiAvKiBUZWxscyB3aGV0aGVyIHN0YXJ0X2NvbG9yKCkgaGFzIGJlZW4gY2FsbGVkIHRvIGluaXRpYWxpc2UgY29sb3IgdXNhZ2UuICovCiBzdGF0aWMgaW50IGluaXRpYWxpc2VkY29sb3JzID0gRkFMU0U7CiAKK3N0YXRpYyBjaGFyICpzY3JlZW5fZW5jb2RpbmcgPSBOVUxMOworCiAvKiBVdGlsaXR5IE1hY3JvcyAqLwogI2RlZmluZSBQeUN1cnNlc1NldHVwVGVybUNhbGxlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmIChpbml0aWFsaXNlZF9zZXR1cHRlcm0gIT0gVFJVRSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTc5LDcgKzE4MSw3IEBACiAgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNoYXIgKmZuYW1lKQorUHlDdXJzZXNDaGVja0VSUihpbnQgY29kZSwgY29uc3QgY2hhciAqZm5hbWUpCiB7CiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTE5NCwyNyArMTk2LDE3NSBAQAogICAgIH0KIH0KIAorLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBieXRlIChhbiBpbnRlZ2VyIG9mIHR5cGUgY2h0eXBlKToKKworICAgLSBpbnQKKyAgIC0gYnl0ZXMgb2YgbGVuZ3RoIDEKKyAgIC0gc3RyIG9mIGxlbmd0aCAxCisKKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MsIDAgb24gZXJyb3IgKGludmFsaWQgdHlwZSBvciBpbnRlZ2VyIG92ZXJmbG93KS4gKi8KIHN0YXRpYyBpbnQKLVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShQeU9iamVjdCAqb2JqLCBjaHR5cGUgKmNoKQorUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW4sIFB5T2JqZWN0ICpvYmosIGNodHlwZSAqY2gpCiB7Ci0gICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKLSAgICAgICAgaW50IG92ZXJmbG93OwotICAgICAgICAvKiBYWFggc2hvdWxkIHRoZSB0cnVuY2F0aW9uIGJ5IHRoZSBjYXN0IGFsc28gYmUgcmVwb3J0ZWQKLSAgICAgICAgICAgYXMgYW4gZXJyb3I/ICovCi0gICAgICAgICpjaCA9IChjaHR5cGUpIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhvYmosICZvdmVyZmxvdyk7Ci0gICAgICAgIGlmIChvdmVyZmxvdykKKyAgICBsb25nIHZhbHVlOworICAgIGlmKFB5Qnl0ZXNfQ2hlY2sob2JqKSAmJiBQeUJ5dGVzX1NpemUob2JqKSA9PSAxKSB7CisgICAgICAgIHZhbHVlID0gKHVuc2lnbmVkIGNoYXIpUHlCeXRlc19Bc1N0cmluZyhvYmopWzBdOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0dldExlbmd0aChvYmopICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYSBzdHIgb2YgbGVuZ3RoICV6aSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9IGVsc2UgaWYoUHlCeXRlc19DaGVjayhvYmopCi0gICAgICAgICAgICAgICYmIChQeUJ5dGVzX1NpemUob2JqKSA9PSAxKSkgewotICAgICAgICAqY2ggPSAoY2h0eXBlKSAqUHlCeXRlc19Bc1N0cmluZyhvYmopOwotICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikgJiYgUHlVbmljb2RlX0dldFNpemUob2JqKSA9PSAxKSB7Ci0gICAgICAgICpjaCA9IChjaHR5cGUpICpQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOwotICAgIH0gZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7CisgICAgICAgIGlmICgxMjggPCB2YWx1ZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmJ5dGVzOworICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisgICAgICAgICAgICBpZiAod2luKQorICAgICAgICAgICAgICAgIGVuY29kaW5nID0gd2luLT5lbmNvZGluZzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHNjcmVlbl9lbmNvZGluZzsKKyAgICAgICAgICAgIGJ5dGVzID0gUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChvYmosIGVuY29kaW5nLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpID09IDEpCisgICAgICAgICAgICAgICAgdmFsdWUgPSAodW5zaWduZWQgY2hhcilQeUJ5dGVzX0FTX1NUUklORyhieXRlcylbMF07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWUgPSAtMTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgICAgICBpZiAodmFsdWUgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBpbnQgbG9uZ19vdmVyZmxvdzsKKyAgICAgICAgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2JqLCAmbG9uZ19vdmVyZmxvdyk7CisgICAgICAgIGlmIChsb25nX292ZXJmbG93KQorICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCBnb3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICpjaCA9IChjaHR5cGUpdmFsdWU7CisgICAgaWYgKChsb25nKSpjaCAhPSB2YWx1ZSkKKyAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICByZXR1cm4gMTsKKworb3ZlcmZsb3c6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJieXRlIGRvZXNuJ3QgZml0IGluIGNodHlwZSIpOworICAgIHJldHVybiAwOworfQorCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGJ5dGUgKGNodHlwZSkgb3IgYSBjaGFyYWN0ZXIgKGNjaGFyX3QpOgorCisgICAgLSBpbnQKKyAgICAtIGJ5dGVzIG9mIGxlbmd0aCAxCisgICAgLSBzdHIgb2YgbGVuZ3RoIDEKKworICAgUmV0dXJuOgorCisgICAgLSAyIGlmIG9iaiBpcyBhIGNoYXJhY3RlciAod3JpdHRlbiBpbnRvICp3Y2gpCisgICAgLSAxIGlmIG9iaiBpcyBhIGJ5dGUgKHdyaXR0ZW4gaW50byAqY2gpCisgICAgLSAwIG9uIGVycm9yOiByYWlzZSBhbiBleGNlcHRpb24gKi8KK3N0YXRpYyBpbnQKK1B5Q3Vyc2VzX0NvbnZlcnRUb0NjaGFyX3QoUHlDdXJzZXNXaW5kb3dPYmplY3QgKndpbiwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2h0eXBlICpjaAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLCBjY2hhcl90ICp3Y2gKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICApCit7CisgICAgbG9uZyB2YWx1ZTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCBidWZmZXJbMl07CisjZW5kaWYKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Bc1dpZGVDaGFyKG9iaiwgYnVmZmVyLCAyKSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGEgc3RyIG9mIGxlbmd0aCAlemkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgbWVtc2V0KHdjaC0+Y2hhcnMsIDAsIHNpemVvZih3Y2gtPmNoYXJzKSk7CisgICAgICAgIHdjaC0+Y2hhcnNbMF0gPSBidWZmZXJbMF07CisgICAgICAgIHJldHVybiAyOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh3aW4sIG9iaiwgY2gpOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgaWYoUHlCeXRlc19DaGVjayhvYmopICYmIFB5Qnl0ZXNfU2l6ZShvYmopID09IDEpIHsKKyAgICAgICAgdmFsdWUgPSAodW5zaWduZWQgY2hhcilQeUJ5dGVzX0FzU3RyaW5nKG9iailbMF07CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgaW50IG92ZXJmbG93OworICAgICAgICB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhvYmosICZvdmVyZmxvdyk7CisgICAgICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludCBkb2Vzbid0IGZpdCBpbiBsb25nIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsIGdvdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqY2ggPSAoY2h0eXBlKXZhbHVlOworICAgIGlmICgobG9uZykqY2ggIT0gdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYnl0ZSBkb2Vzbid0IGZpdCBpbiBjaHR5cGUiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHJldHVybiAxOwogfQogCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGJ5dGUgc3RyaW5nIChjaGFyKikgb3IgYSB3aWRlIGNoYXJhY3RlciBzdHJpbmcKKyAgICh3Y2hhcl90KikuIFJldHVybjoKKworICAgIC0gMiBpZiBvYmogaXMgYSBjaGFyYWN0ZXIgc3RyaW5nICh3cml0dGVuIGludG8gKndjaCkKKyAgICAtIDEgaWYgb2JqIGlzIGEgYnl0ZSBzdHJpbmcgKHdyaXR0ZW4gaW50byAqYnl0ZXMpCisgICAgLSAwIG9uIGVycm9yOiByYWlzZSBhbiBleGNlcHRpb24gKi8KK3N0YXRpYyBpbnQKK1B5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqYnl0ZXMsIHdjaGFyX3QgKip3c3RyKQoreworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICAgICAgYXNzZXJ0ICh3c3RyICE9IE5VTEwpOworICAgICAgICAqd3N0ciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKG9iaiwgTlVMTCk7CisgICAgICAgIGlmICgqd3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAyOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0ICh3c3RyID09IE5VTEwpOworICAgICAgICAqYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KG9iaiwgd2luLT5lbmNvZGluZywgTlVMTCk7CisgICAgICAgIGlmICgqYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyNlbmRpZgorICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKG9iaikpIHsKKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgICAgICpieXRlcyA9IG9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdCBieXRlcyBvciBzdHIsIGdvdCAlcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIEZ1bmN0aW9uIHZlcnNpb25zIG9mIHRoZSAzIGZ1bmN0aW9ucyBmb3IgdGVzdGluZyB3aGV0aGVyIGN1cnNlcyBoYXMgYmVlbgogICAgaW5pdGlhbGlzZWQgb3Igbm90LiAqLwogCkBAIC0zNTgsMTMgKzUwOCwzNyBAQAogLyogQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIG9mIFdpbmRvdyBPYmplY3RzICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc1dpbmRvd19OZXcoV0lORE9XICp3aW4pCitQeUN1cnNlc1dpbmRvd19OZXcoV0lORE9XICp3aW4sIGNvbnN0IGNoYXIgKmVuY29kaW5nKQogewogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3bzsKIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICBjaGFyICpidWZmZXJbMTAwXTsKKyAgICAgICAgVUlOVCBjcDsKKyAgICAgICAgY3AgPSBHZXRDb25zb2xlT3V0cHV0Q1AoKTsKKyAgICAgICAgaWYgKGNwICE9IDApIHsKKyAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgImNwJXUiLCBjcCk7CisgICAgICAgICAgICBlbmNvZGluZyA9IGJ1ZmZlcjsKKyAgICAgICAgfQorI2VsaWYgZGVmaW5lZChDT0RFU0VUKQorICAgICAgICBjb25zdCBjaGFyICpjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CisgICAgICAgIGlmIChjb2Rlc2V0ICE9IE5VTEwgJiYgY29kZXNldFswXSAhPSAwKQorICAgICAgICAgICAgZW5jb2RpbmcgPSBjb2Rlc2V0OworI2VuZGlmCisgICAgICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiOworICAgIH0KKwogICAgIHdvID0gUHlPYmplY3RfTkVXKFB5Q3Vyc2VzV2luZG93T2JqZWN0LCAmUHlDdXJzZXNXaW5kb3dfVHlwZSk7CiAgICAgaWYgKHdvID09IE5VTEwpIHJldHVybiBOVUxMOwogICAgIHdvLT53aW4gPSB3aW47CisgICAgd28tPmVuY29kaW5nID0gc3RyZHVwKGVuY29kaW5nKTsKKyAgICBpZiAod28tPmVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHdvKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKil3bzsKIH0KIApAQCAtMzcyLDYgKzU0Niw4IEBACiBQeUN1cnNlc1dpbmRvd19EZWFsbG9jKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3bykKIHsKICAgICBpZiAod28tPndpbiAhPSBzdGRzY3IpIGRlbHdpbih3by0+d2luKTsKKyAgICBpZiAod28tPmVuY29kaW5nICE9IE5VTEwpCisgICAgICAgIGZyZWUod28tPmVuY29kaW5nKTsKICAgICBQeU9iamVjdF9ERUwod28pOwogfQogCkBAIC0zODEsMjkgKzU1NywzNCBAQAogUHlDdXJzZXNXaW5kb3dfQWRkQ2goUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBydG4sIHgsIHksIHVzZV94eSA9IEZBTFNFOwotICAgIFB5T2JqZWN0ICp0ZW1wOwotICAgIGNodHlwZSBjaCA9IDA7CisgICAgUHlPYmplY3QgKmNob2JqOworICAgIGludCB0eXBlOworICAgIGNodHlwZSBjaDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgY2NoYXJfdCB3Y2g7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPO2NoIG9yIGludCIsICZ0ZW1wKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPO2NoIG9yIGludCIsICZjaG9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9sO2NoIG9yIGludCxhdHRyIiwgJnRlbXAsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w7Y2ggb3IgaW50LGF0dHIiLCAmY2hvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU87eSx4LGNoIG9yIGludCIsICZ5LCAmeCwgJnRlbXApKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPO3kseCxjaCBvciBpbnQiLCAmeSwgJngsICZjaG9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgogICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPbDt5LHgsY2ggb3IgaW50LCBhdHRyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5LCAmeCwgJnRlbXAsICZsYXR0cikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJngsICZjaG9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CkBAIC00MTMsMTcgKzU5NCwzMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCAxIG9yIDMgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvQ2NoYXJfdChzZWxmLCBjaG9iaiwgJmNoLCAmd2NoKTsKKyAgICBpZiAodHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZF93Y2giOworICAgICAgICB3Y2guYXR0ciA9IGF0dHI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZF93Y2goc2VsZi0+d2luLHkseCwgJndjaCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcnRuID0gd2FkZF93Y2goc2VsZi0+d2luLCAmd2NoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisjZWxzZQorICAgIHR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9DY2hhcl90KHNlbGYsIGNob2JqLCAmY2gpOworI2VuZGlmCisgICAgaWYgKHR5cGUgPT0gMSkgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGRjaCI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZGNoKHNlbGYtPndpbix5LHgsIGNoIHwgYXR0cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcnRuID0gd2FkZGNoKHNlbGYtPndpbiwgY2ggfCBhdHRyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndhZGRjaChzZWxmLT53aW4seSx4LCBjaCB8IGF0dHIpOwotICAgIGVsc2UgewotICAgICAgICBydG4gPSB3YWRkY2goc2VsZi0+d2luLCBjaCB8IGF0dHIpOwotICAgIH0KLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJhZGRjaCIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDMxLDI5ICs2MjgsMzQgQEAKIHsKICAgICBpbnQgcnRuOwogICAgIGludCB4LCB5OwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzO3N0ciIsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztzdHIiLCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzbDtzdHIsYXR0ciIsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPbDtzdHIsYXR0ciIsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfYXR0ciA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpcztpbnQsaW50LHN0ciIsICZ5LCAmeCwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU87aW50LGludCxzdHIiLCAmeSwgJngsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2w7aW50LGludCxzdHIsYXR0ciIsICZ5LCAmeCwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2w7aW50LGludCxzdHIsYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV94eSA9IHVzZV9hdHRyID0gVFJVRTsKQEAgLTQ2Miw0NyArNjY0LDc0IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhZGRzdHIgcmVxdWlyZXMgMSB0byA0IGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgJndzdHIpOworI2Vsc2UKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCBOVUxMKTsKKyNlbmRpZgorICAgIGlmIChzdHJ0eXBlID09IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2FkZHN0cihzZWxmLT53aW4seSx4LHN0cik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkd3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZHdzdHIoc2VsZi0+d2luLHkseCx3c3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2FkZHdzdHIoc2VsZi0+d2luLHdzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdhZGRzdHIoc2VsZi0+d2luLHN0cik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3YWRkc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2FkZHN0cihzZWxmLT53aW4sc3RyKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiYWRkc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc1dpbmRvd19BZGROU3RyKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcnRuLCB4LCB5LCBuOwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaTtzdHIsbiIsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pO3N0cixuIiwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpbDtzdHIsbixhdHRyIiwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaWw7c3RyLG4sYXR0ciIsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDU6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNpbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0ciwgJm4sICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pbDt5LHgsc3RyLG4sYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfeHkgPSB1c2VfYXR0ciA9IFRSVUU7CkBAIC01MTEsMTggKzc0MCw0MSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYWRkbnN0ciByZXF1aXJlcyAyIHRvIDUgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgJndzdHIpOworI2Vsc2UKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCBOVUxMKTsKKyNlbmRpZgorICAgIGlmIChzdHJ0eXBlID09IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpIHsKICAgICAgICAgYXR0cl9vbGQgPSBnZXRhdHRycyhzZWxmLT53aW4pOwogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cik7CiAgICAgfQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3YWRkbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgaWYgKHN0cnR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGRud3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZG53c3RyKHNlbGYtPndpbix5LHgsd3N0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2FkZG53c3RyKHNlbGYtPndpbix3c3RyLG4pOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdhZGRuc3RyKHNlbGYtPndpbixzdHIsbik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkbnN0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2FkZG5zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdhZGRuc3RyKHNlbGYtPndpbixzdHIsbik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImFkZG5zdHIiKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTU0OCwxMCArODAwLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmJrZ2QpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCAxIG9yIDMgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZia2dkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIod2JrZ2Qoc2VsZi0+d2luLCBia2dkIHwgYXR0ciksICJia2dkIik7CiB9CkBAIC02MDYsMTAgKzg1Niw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZia2dkKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmJrZ2QpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICB3YmtnZHNldChzZWxmLT53aW4sIGJrZ2QgfCBhdHRyKTsKICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUigwLCAiYmtnZHNldCIpOwpAQCAtNjM0LDExICs4ODIsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvcihpPTA7IGk8ODsgaSsrKSB7Ci0gICAgICAgIGlmICh0ZW1wW2ldICE9IE5VTEwgJiYgIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wW2ldLCAmY2hbaV0pKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAlaSBtdXN0IGJlIGEgY2ggb3IgYW4gaW50IiwgaSsxKTsKKyAgICAgICAgaWYgKHRlbXBbaV0gIT0gTlVMTCAmJiAhUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXBbaV0sICZjaFtpXSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHdib3JkZXIoc2VsZi0+d2luLApAQCAtNzgzLDcgKzEwMjgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODExLDEwICsxMDU2LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgMSBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAjaWZkZWYgV0lORE9XX0hBU19GTEFHUwogICAgIGlmIChzZWxmLT53aW4tPl9mbGFncyAmIF9JU1BBRCkKQEAgLTkxMCw2ICsxMTUzLDQzIEBACiAgICAgfQogfQogCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzV2luZG93X0dldF9XQ2goUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCB4LCB5OworICAgIGludCBjdDsKKyAgICB3aW50X3QgcnRuOworCisgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKKyAgICBjYXNlIDA6CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgY3QgPSB3Z2V0X3djaChzZWxmLT53aW4sJnJ0bik7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpO3kseCIsJnksJngpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgY3QgPSBtdndnZXRfd2NoKHNlbGYtPndpbix5LHgsJnJ0bik7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnZXRfd2NoIHJlcXVpcmVzIDAgb3IgMiBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChjdCA9PSBFUlIpIHsKKyAgICAgICAgLyogZ2V0X3djaCgpIHJldHVybnMgRVJSIGluIG5vZGVsYXkgbW9kZSAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgIm5vIGlucHV0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoY3QgPT0gS0VZX0NPREVfWUVTKQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJ0bik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHJ0bik7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzV2luZG93X0dldFN0cihQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMDAxLDExICsxMjgxLDggQEAKICAgICB9CiAKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKLSAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmNoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHdobGluZShzZWxmLT53aW4sIGNoIHwgYXR0ciwgbiksICJobGluZSIpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihjb2RlLCAid21vdmUiKTsKQEAgLTEwNDYsMTEgKzEzMjMsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgMSBvciAzIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmY2gpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBpZiAodXNlX3h5ID09IFRSVUUpCiAgICAgICAgIHJ0biA9IG12d2luc2NoKHNlbGYtPndpbix5LHgsIGNoIHwgYXR0cik7CkBAIC0xMTIxLDI5ICsxMzk1LDM0IEBACiB7CiAgICAgaW50IHJ0bjsKICAgICBpbnQgeCwgeTsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywicztzdHIiLCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87c3RyIiwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2w7c3RyLGF0dHIiLCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2w7c3RyLGF0dHIiLCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX2F0dHIgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXM7eSx4LHN0ciIsICZ5LCAmeCwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU87eSx4LHN0ciIsICZ5LCAmeCwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzbDt5LHgsc3RyLGF0dHIiLCAmeSwgJngsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9sO3kseCxzdHIsYXR0ciIsICZ5LCAmeCwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV94eSA9IHVzZV9hdHRyID0gVFJVRTsKQEAgLTExNTMsNDYgKzE0MzIsNzUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2luc3N0cihzZWxmLT53aW4seSx4LHN0cik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zd3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc193c3RyKHNlbGYtPndpbix5LHgsd3N0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNfd3N0cihzZWxmLT53aW4sd3N0cik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2luc3N0cihzZWxmLT53aW4sc3RyKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJpbnNzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNzdHIoc2VsZi0+d2luLHkseCxzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zc3RyKHNlbGYtPndpbixzdHIpOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJpbnNzdHIiKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzV2luZG93X0luc05TdHIoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBydG4sIHgsIHksIG47Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpO3N0cixuIiwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2k7c3RyLG4iLCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2lsO3N0cixuLGF0dHIiLCAmc3RyLCAmbiwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pbDtzdHIsbixhdHRyIiwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfYXR0ciA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2lsO3kseCxzdHIsbixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbiwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2lsO3kseCxzdHIsbixhdHRyIiwgJnksICZ4LCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV94eSA9IHVzZV9hdHRyID0gVFJVRTsKQEAgLTEyMDIsMTcgKzE1MTAsNDEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosICZ3c3RyKTsKKyNlbHNlCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgTlVMTCk7CisjZW5kaWYKKyAgICBpZiAoc3RydHlwZSA9PSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKSB7CiAgICAgICAgIGF0dHJfb2xkID0gZ2V0YXR0cnMoc2VsZi0+d2luKTsKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHIpOwogICAgIH0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2luc25zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIGlmIChzdHJ0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zbl93c3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zX253c3RyKHNlbGYtPndpbix5LHgsd3N0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc19ud3N0cihzZWxmLT53aW4sd3N0cixuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3aW5zbnN0cihzZWxmLT53aW4sc3RyLG4pOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImluc25zdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zbnN0cihzZWxmLT53aW4sc3RyLG4pOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJpbnNuc3RyIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzg1LDEwICsxNzE3LDEyIEBACiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgY2hhciBidWZbQlVGU0laXTsKICAgICAgICAgUHlfc3NpemVfdCBuID0gZnJlYWQoYnVmLCAxLCBCVUZTSVosIGZwKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgICAgIGlmIChuIDw9IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RyZWFtLCAid3JpdGUiLCAieSMiLCBidWYsIG4pOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfd3JpdGUsICJ5IyIsIGJ1Ziwgbik7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE0OTMsNyArMTgyNyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgc2VsZi0+ZW5jb2RpbmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTU2OSwxNiArMTkwMyw1MiBAQAogICAgIH0KIAogICAgIGlmIChjb2RlICE9IEVSUikgewotICAgICAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAxIG9yIDMgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgICAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmY2gpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIod3ZsaW5lKHNlbGYtPndpbiwgY2ggfCBhdHRyLCBuKSwgInZsaW5lIik7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKGNvZGUsICJ3bW92ZSIpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorUHlDdXJzZXNXaW5kb3dfZ2V0X2VuY29kaW5nKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzZWxmLT5lbmNvZGluZyk7Cit9CisKK3N0YXRpYyBpbnQKK1B5Q3Vyc2VzV2luZG93X3NldF9lbmNvZGluZyhQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICphc2NpaTsKKyAgICBjaGFyICplbmNvZGluZzsKKworICAgIC8qIEl0IGlzIGlsbGVnYWwgdG8gZGVsIHdpbi5lbmNvZGluZyAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RpbmcgbWF5IG5vdCBiZSBkZWxldGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIGVuY29kaW5nIHRvIGEgbm9uLXN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGFzY2lpID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodmFsdWUpOworICAgIGlmIChhc2NpaSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZW5jb2RpbmcgPSBzdHJkdXAoUHlCeXRlc19BU19TVFJJTkcoYXNjaWkpKTsKKyAgICBQeV9ERUNSRUYoYXNjaWkpOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZnJlZShzZWxmLT5lbmNvZGluZyk7CisgICAgc2VsZi0+ZW5jb2RpbmcgPSBlbmNvZGluZzsKKyAgICByZXR1cm4gMDsKK30KKworCiBzdGF0aWMgUHlNZXRob2REZWYgUHlDdXJzZXNXaW5kb3dfTWV0aG9kc1tdID0gewogICAgIHsiYWRkY2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0FkZENoLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiYWRkbnN0ciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0FkZE5TdHIsIE1FVEhfVkFSQVJHU30sCkBAIC0xNjA4LDYgKzE5NzgsOSBAQAogICAgIHsiZ2V0YmtnZCIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldEJrZ2QsIE1FVEhfTk9BUkdTfSwKICAgICB7ImdldGNoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRDaCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGtleSIsICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRLZXksIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHsiZ2V0X3djaCIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldF9XQ2gsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKICAgICB7ImdldG1heHl4IiwgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19nZXRtYXh5eCwgTUVUSF9OT0FSR1N9LAogICAgIHsiZ2V0cGFyeXgiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X2dldHBhcnl4LCBNRVRIX05PQVJHU30sCiAgICAgeyJnZXRzdHIiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0U3RyLCBNRVRIX1ZBUkFSR1N9LApAQCAtMTY2Myw2ICsyMDM2LDE0IEBACiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLwogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIFB5Q3Vyc2VzV2luZG93X2dldHNldHNbXSA9IHsKKyAgICB7ImVuY29kaW5nIiwKKyAgICAgKGdldHRlcilQeUN1cnNlc1dpbmRvd19nZXRfZW5jb2RpbmcsCisgICAgIChzZXR0ZXIpUHlDdXJzZXNXaW5kb3dfc2V0X2VuY29kaW5nLAorICAgICAidGhlIHR5cGVjb2RlIGNoYXJhY3RlciB1c2VkIHRvIGNyZWF0ZSB0aGUgYXJyYXkifSwKKyAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9ICAvKiBzZW50aW5lbCAqLworfTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAKIFB5VHlwZU9iamVjdCBQeUN1cnNlc1dpbmRvd19UeXBlID0gewpAQCAtMTY5NSw2ICsyMDc2LDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCiAgICAgUHlDdXJzZXNXaW5kb3dfTWV0aG9kcywgICAgIC8qdHBfbWV0aG9kcyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBQeUN1cnNlc1dpbmRvd19nZXRzZXRzLCAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xODc1LDYgKzIyNTgsNyBAQAogICAgIFdJTkRPVyAqd2luOwogCiAgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAogICAgIHN0cmNweShmbiwgIi90bXAvcHkuY3Vyc2VzLmdldHdpbi5YWFhYWFgiKTsKICAgICBmZCA9IG1rc3RlbXAoZm4pOwpAQCAtMTg4Niw3ICsyMjcwLDcgQEAKICAgICAgICAgcmVtb3ZlKGZuKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCBmbik7CiAgICAgfQotICAgIGRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cmVhbSwgInJlYWQiLCAiIik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RyZWFtLCAmUHlJZF9yZWFkLCAiIik7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkgewogICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICByZW1vdmUoZm4pOwpAQCAtMTkxNyw3ICsyMzAxLDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsIGNhdGNoYWxsX05VTEwpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiBQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5OTUsMTAgKzIzNzksMTEgQEAKIFB5Q3Vyc2VzX0luaXRTY3IoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgV0lORE9XICp3aW47CisgICAgUHlDdXJzZXNXaW5kb3dPYmplY3QgKndpbm9iajsKIAogICAgIGlmIChpbml0aWFsaXNlZCA9PSBUUlVFKSB7CiAgICAgICAgIHdyZWZyZXNoKHN0ZHNjcik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcoc3Rkc2NyKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyhzdGRzY3IsIE5VTEwpOwogICAgIH0KIAogICAgIHdpbiA9IGluaXRzY3IoKTsKQEAgLTIwOTAsNyArMjQ3NSw5IEBACiAgICAgU2V0RGljdEludCgiTElORVMiLCBMSU5FUyk7CiAgICAgU2V0RGljdEludCgiQ09MUyIsIENPTFMpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHdpbm9iaiA9IChQeUN1cnNlc1dpbmRvd09iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOworICAgIHNjcmVlbl9lbmNvZGluZyA9IHdpbm9iai0+ZW5jb2Rpbmc7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXdpbm9iajsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIyOTIsNyArMjY3OSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMzI0LDcgKzI3MTEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjQxNiw2ICsyODAzLDggQEAKIHsKICAgICBQeU9iamVjdCAqbzsKICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soImN1cnNlcyIpOworICAgIF9QeV9JREVOVElGSUVSKExJTkVTKTsKKyAgICBfUHlfSURFTlRJRklFUihDT0xTKTsKIAogICAgIGlmICghbSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDI1LDEyICsyODE0LDEzIEBACiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKG0sICJMSU5FUyIsIG8pKSB7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQobSwgJlB5SWRfTElORVMsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKE1vZERpY3QsICJMSU5FUyIsIG8pKSB7CisgICAgLyogUHlJZF9MSU5FUy5vYmplY3Qgd2lsbCBiZSBpbml0aWFsaXplZCBoZXJlLiAqLworICAgIGlmIChQeURpY3RfU2V0SXRlbShNb2REaWN0LCBQeUlkX0xJTkVTLm9iamVjdCwgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ0MSwxMiArMjgzMSwxMiBAQAogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtLCAiQ09MUyIsIG8pKSB7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQobSwgJlB5SWRfQ09MUywgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoTW9kRGljdCwgIkNPTFMiLCBvKSkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShNb2REaWN0LCBQeUlkX0NPTFMub2JqZWN0LCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNjM4LDEwICszMDI4LDggQEAKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO2NoIG9yIGludCIsJnRlbXApKSByZXR1cm4gTlVMTDsKIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShOVUxMLCB0ZW1wLCAmY2gpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKHVuY3RybChjaCkpOwogfQpAQCAtMjY1NCwxNiArMzA0Miw4MCBAQAogCiAgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO2NoIG9yIGludCIsJnRlbXApKSByZXR1cm4gTlVMTDsKLQotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoTlVMTCwgdGVtcCwgJmNoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih1bmdldGNoKGNoKSwgInVuZ2V0Y2giKTsKIH0KIAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgY2hhcmFjdGVyICh3Y2hhcl90KToKKworICAgIC0gaW50CisgICAgLSBzdHIgb2YgbGVuZ3RoIDEKKworICAgUmV0dXJuIDEgb24gc3VjY2VzcywgMCBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK1B5Q3Vyc2VzX0NvbnZlcnRUb1djaGFyX3QoUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd2NoKQoreworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICB3Y2hhcl90IGJ1ZmZlclsyXTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Bc1dpZGVDaGFyKG9iaiwgYnVmZmVyLCAyKSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGEgc3RyIG9mIGxlbmd0aCAlemkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKndjaCA9IGJ1ZmZlclswXTsKKyAgICAgICAgcmV0dXJuIDI7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgbG9uZyB2YWx1ZTsKKyAgICAgICAgaW50IG92ZXJmbG93OworICAgICAgICB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhvYmosICZvdmVyZmxvdyk7CisgICAgICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludCBkb2Vzbid0IGZpdCBpbiBsb25nIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAqd2NoID0gKHdjaGFyX3QpdmFsdWU7CisgICAgICAgIGlmICgobG9uZykqd2NoICE9IHZhbHVlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIGRvZXNuJ3QgZml0IGluIHdjaGFyX3QiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsIGdvdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc19VbmdldF9XY2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgd2NoYXJfdCB3Y2g7CisKKyAgICBQeUN1cnNlc0luaXRpYWxpc2VkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk8iLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb1djaGFyX3Qob2JqLCAmd2NoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIodW5nZXRfd2NoKHdjaCksICJ1bmdldF93Y2giKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfVXNlX0VudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yNzkxLDYgKzMyNDMsOSBAQAogICAgIHsidHlwZWFoZWFkIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19UeXBlQWhlYWQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmN0cmwiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuQ3RybCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuZ2V0Y2giLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRDaCwgTUVUSF9WQVJBUkdTfSwKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgeyJ1bmdldF93Y2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0X1djaCwgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgogICAgIHsidXNlX2VudiIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19Vc2VfRW52LCBNRVRIX1ZBUkFSR1N9LAogI2lmbmRlZiBTVFJJQ1RfU1lTVl9DVVJTRVMKICAgICB7InVzZV9kZWZhdWx0X2NvbG9ycyIsICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVXNlX0RlZmF1bHRfQ29sb3JzLCBNRVRIX05PQVJHU30sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwppbmRleCBlZjJmN2IzLi4wMWM4NWQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKQEAgLTcsOCArNyw2IEBACiAKICNpbmNsdWRlIDx0aW1lLmg+CiAKLSNpbmNsdWRlICJfdGltZS5oIgotCiAvKiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gYnVpbGRpbmcgdGhlIGNvcmUgbW9kdWxlIGFuZCBidWlsZGluZyBleHRlbnNpb24KICAqIG1vZHVsZXMuCiAgKi8KQEAgLTc2Niw4ICs3NjQsMTAgQEAKICAgICBQeU9iamVjdCAqbmFtZTsKIH0gUHlEYXRlVGltZV9UaW1lWm9uZTsKIAotLyogVGhlIGludGVybmVkIFVUQyB0aW1lem9uZSBpbnN0YW5jZSAqLyAKKy8qIFRoZSBpbnRlcm5lZCBVVEMgdGltZXpvbmUgaW5zdGFuY2UgKi8KIHN0YXRpYyBQeU9iamVjdCAqUHlEYXRlVGltZV9UaW1lWm9uZV9VVEM7CisvKiBUaGUgaW50ZXJuZWQgRXBvY2ggZGF0ZXRpbWUgaW5zdGFuY2UgKi8KK3N0YXRpYyBQeU9iamVjdCAqUHlEYXRlVGltZV9FcG9jaDsKIAogLyogQ3JlYXRlIG5ldyB0aW1lem9uZSBpbnN0YW5jZSBjaGVja2luZyBvZmZzZXQgcmFuZ2UuICBUaGlzCiAgICBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgbmFtZSBhcmd1bWVudC4gIENhbGxlciBtdXN0IGFzc3VyZQpAQCAtODA5LDE0ICs4MDksMTYgQEAKICAgICB9CiAgICAgaWYgKEdFVF9URF9NSUNST1NFQ09ORFMob2Zmc2V0KSAhPSAwIHx8IEdFVF9URF9TRUNPTkRTKG9mZnNldCkgJSA2MCAhPSAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzIik7CisgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzLCIKKyAgICAgICAgICAgICAgICAgICAgICIgbm90ICVSLiIsIG9mZnNldCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoKEdFVF9URF9EQVlTKG9mZnNldCkgPT0gLTEgJiYgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSA9PSAwKSB8fAogICAgICAgICBHRVRfVERfREFZUyhvZmZzZXQpIDwgLTEgfHwgR0VUX1REX0RBWVMob2Zmc2V0KSA+PSAxKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCiAgICAgICAgICAgICAgICAgICAgICAiIHN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIgotICAgICAgICAgICAgICAgICAgICAgIiB0aW1lZGVsdGEoaG91cnM9MjQpLiIpOworICAgICAgICAgICAgICAgICAgICAgIiB0aW1lZGVsdGEoaG91cnM9MjQpLCIKKyAgICAgICAgICAgICAgICAgICAgICIgbm90ICVSLiIsIG9mZnNldCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtOTQ2LDYgKzk0OCw3IEBACiBjYWxsX3R6bmFtZShQeU9iamVjdCAqdHppbmZvLCBQeU9iamVjdCAqdHppbmZvYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIodHpuYW1lKTsKIAogICAgIGFzc2VydCh0emluZm8gIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pID49IDApOwpAQCAtOTU0LDcgKzk1Nyw3IEBACiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAidHpuYW1lIiwgIk8iLCB0emluZm9hcmcpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF90em5hbWUsICJPIiwgdHppbmZvYXJnKTsKIAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCByZXN1bHQgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTk4NSw5ICs5ODgsOCBAQAogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJlcHI7CiAgICAgLyogR2V0IHJpZCBvZiB0aGUgdHJhaWxpbmcgJyknLiAqLwotICAgIGFzc2VydChQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVtQeVVuaWNvZGVfR0VUX1NJWkUocmVwciktMV0gPT0gJyknKTsKLSAgICB0ZW1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocmVwcikgLSAxKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX1JFQURfQ0hBUihyZXByLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKS0xKSA9PSAnKScpOworICAgIHRlbXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHJlcHIsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpIC0gMSk7CiAgICAgUHlfREVDUkVGKHJlcHIpOwogICAgIGlmICh0ZW1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA3OSw2ICsxMDgxLDggQEAKICAgICBQeU9iamVjdCAqdGVtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gZ2V0X3R6aW5mb19tZW1iZXIob2JqZWN0KTsKICAgICBQeU9iamVjdCAqWnJlcGxhY2VtZW50ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOworCiAgICAgaWYgKFpyZXBsYWNlbWVudCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodHppbmZvID09IFB5X05vbmUgfHwgdHppbmZvID09IE5VTEwpCkBAIC0xMDk5LDcgKzExMDMsNyBAQAogICAgICAqIHN0cmZ0aW1lIGRvZXNuJ3QgdHJlYXQgdGhlbSBhcyBmb3JtYXQgY29kZXMuCiAgICAgICovCiAgICAgUHlfREVDUkVGKFpyZXBsYWNlbWVudCk7Ci0gICAgWnJlcGxhY2VtZW50ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0ZW1wLCAicmVwbGFjZSIsICJzcyIsICIlIiwgIiUlIik7CisgICAgWnJlcGxhY2VtZW50ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0ZW1wLCAmUHlJZF9yZXBsYWNlLCAic3MiLCAiJSIsICIlJSIpOwogICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICBpZiAoWnJlcGxhY2VtZW50ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2NiwzMSArMTE3MCw2IEBACiAgICAgaWYgKCFwaW4pCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogR2l2ZSB1cCBpZiB0aGUgeWVhciBpcyBiZWZvcmUgMTAwMC4KLSAgICAgKiBQeXRob24gc3RyZnRpbWUoKSBwbGF5cyBnYW1lcyB3aXRoIHRoZSB5ZWFyLCBhbmQgZGlmZmVyZW50Ci0gICAgICogZ2FtZXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgZW52YXIgUFlUSE9OMksgaXMgc2V0LiAgVGhpcyBtYWtlcwotICAgICAqIHllYXJzIGJlZm9yZSAxMDAwIGEgbmlnaHRtYXJlLCBldmVuIGlmIHRoZSBwbGF0Zm9ybSBzdHJmdGltZQotICAgICAqIHN1cHBvcnRzIHRoZW0gKGFuZCBub3QgYWxsIGRvKS4KLSAgICAgKiBXZSBjb3VsZCBnZXQgYSBsb3QgZmFydGhlciBoZXJlIGJ5IGF2b2lkaW5nIFB5dGhvbidzIHN0cmZ0aW1lCi0gICAgICogd3JhcHBlciBhbmQgY2FsbGluZyB0aGUgQyBzdHJmdGltZSgpIGRpcmVjdGx5LCBidXQgdGhhdCBpc24ndAotICAgICAqIGFuIG9wdGlvbiBpbiB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbW9kdWxlLgotICAgICAqLwotICAgIHsKLSAgICAgICAgbG9uZyB5ZWFyOwotICAgICAgICBQeU9iamVjdCAqcHl5ZWFyID0gUHlTZXF1ZW5jZV9HZXRJdGVtKHRpbWV0dXBsZSwgMCk7Ci0gICAgICAgIGlmIChweXllYXIgPT0gTlVMTCkgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFzc2VydChQeUxvbmdfQ2hlY2socHl5ZWFyKSk7Ci0gICAgICAgIHllYXIgPSBQeUxvbmdfQXNMb25nKHB5eWVhcik7Ci0gICAgICAgIFB5X0RFQ1JFRihweXllYXIpOwotICAgICAgICBpZiAoeWVhciA8IDEwMDApIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAieWVhcj0lbGQgaXMgYmVmb3JlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiMTAwMDsgdGhlIGRhdGV0aW1lIHN0cmZ0aW1lKCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIHJlcXVpcmUgeWVhciA+PSAxMDAwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLyogU2NhbiB0aGUgaW5wdXQgZm9ybWF0LCBsb29raW5nIGZvciAlei8lWi8lZiBlc2NhcGVzLCBidWlsZGluZwogICAgICAqIGEgbmV3IGZvcm1hdC4gIFNpbmNlIGNvbXB1dGluZyB0aGUgcmVwbGFjZW1lbnRzIGZvciB0aG9zZSBjb2RlcwogICAgICAqIGlzIGV4cGVuc2l2ZSwgZG9uJ3QgdW5sZXNzIHRoZXkncmUgYWN0dWFsbHkgdXNlZC4KQEAgLTEzMDcsMTIgKzEyODYsMTUgQEAKICAgICB7CiAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXQ7CiAgICAgICAgIFB5T2JqZWN0ICp0aW1lID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOworCiAgICAgICAgIGlmICh0aW1lID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld2ZtdCkpOwogICAgICAgICBpZiAoZm9ybWF0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInN0cmZ0aW1lIiwgIk9PIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0aW1ldHVwbGUsIE5VTEwpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3RyZnRpbWUpOworCisgICAgICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRpbWUsICZQeUlkX3N0cmZ0aW1lLCAiT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHRpbWV0dXBsZSwgTlVMTCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZm9ybWF0KTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodGltZSk7CkBAIC0xMzM4LDcgKzEzMjAsOSBAQAogICAgIFB5T2JqZWN0ICp0aW1lID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOwogCiAgICAgaWYgKHRpbWUgIT0gTlVMTCkgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRpbWUsICJ0aW1lIiwgIigpIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHRpbWUpOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgIigpIik7CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzNTUsMTMgKzEzMzksMTUgQEAKIAogICAgIHRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CiAgICAgaWYgKHRpbWUgIT0gTlVMTCkgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRpbWUsICJzdHJ1Y3RfdGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigoaWlpaWlpaWlpKSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIG0sIGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGgsIG1tLCBzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5KHksIG0sIGQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc3RydWN0X3RpbWUpOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfc3RydWN0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigoaWlpaWlpaWlpKSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIG0sIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGgsIG1tLCBzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5KHksIG0sIGQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ2MSw3ICsxNDQ3LDcgQEAKICAgICAgICAgZ290byBEb25lOwogICAgIFB5X0RFQ1JFRih4MSk7CiAgICAgUHlfREVDUkVGKHgyKTsKLSAgICB4MSA9IHgyID0gTlVMTDsKKyAgICAvKiB4MSA9ICovIHgyID0gTlVMTDsKIAogICAgIC8qIHgzIGhhcyBkYXlzK3NlY29uZHMgaW4gc2Vjb25kcyAqLwogICAgIHgxID0gUHlOdW1iZXJfTXVsdGlwbHkoeDMsIHVzX3Blcl9zZWNvbmQpOyAgICAgICAgICAvKiB1cyAqLwpAQCAtMTU5NCwxMSArMTU4MCwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpweXVzX2luID0gTlVMTCwgKnRlbXAsICpweXVzX291dDsKICAgICBQeU9iamVjdCAqcmF0aW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGFzX2ludGVnZXJfcmF0aW8pOwogCiAgICAgcHl1c19pbiA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcyhkZWx0YSk7CiAgICAgaWYgKHB5dXNfaW4gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmF0aW8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZsb2F0b2JqLCAiYXNfaW50ZWdlcl9yYXRpbyIsIE5VTEwpOworICAgIHJhdGlvID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmbG9hdG9iaiwgJlB5SWRfYXNfaW50ZWdlcl9yYXRpbywgTlVMTCk7CiAgICAgaWYgKHJhdGlvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgdGVtcCA9IFB5TnVtYmVyX011bHRpcGx5KHB5dXNfaW4sIFB5VHVwbGVfR0VUX0lURU0ocmF0aW8sIDApKTsKQEAgLTE2OTIsMTEgKzE2NzksMTIgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqcHl1c19pbiA9IE5VTEwsICp0ZW1wLCAqcHl1c19vdXQ7CiAgICAgUHlPYmplY3QgKnJhdGlvID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihhc19pbnRlZ2VyX3JhdGlvKTsKIAogICAgIHB5dXNfaW4gPSBkZWx0YV90b19taWNyb3NlY29uZHMoZGVsdGEpOwogICAgIGlmIChweXVzX2luID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJhdGlvID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAiYXNfaW50ZWdlcl9yYXRpbyIsIE5VTEwpOworICAgIHJhdGlvID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9hc19pbnRlZ2VyX3JhdGlvLCBOVUxMKTsKICAgICBpZiAocmF0aW8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB0ZW1wID0gUHlOdW1iZXJfTXVsdGlwbHkocHl1c19pbiwgUHlUdXBsZV9HRVRfSVRFTShyYXRpbywgMSkpOwpAQCAtMTgzNyw4ICsxODI1LDcgQEAKICAgICAgICAgcmV0dXJuIGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiB9CiAKQEAgLTE5MzYsMTAgKzE5MjMsOCBAQAogICAgIFB5T2JqZWN0ICpweXVzX3JlbWFpbmRlcjsKICAgICBQeU9iamVjdCAqcmVtYWluZGVyOwogCi0gICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlEZWx0YV9DaGVjayhsZWZ0KSB8fCAhUHlEZWx0YV9DaGVjayhyaWdodCkpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHB5dXNfbGVmdCA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcygoUHlEYXRlVGltZV9EZWx0YSAqKWxlZnQpOwogICAgIGlmIChweXVzX2xlZnQgPT0gTlVMTCkKQEAgLTE5NzQsMTAgKzE5NTksOCBAQAogICAgIFB5T2JqZWN0ICpkZWx0YTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlEZWx0YV9DaGVjayhsZWZ0KSB8fCAhUHlEZWx0YV9DaGVjayhyaWdodCkpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHB5dXNfbGVmdCA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcygoUHlEYXRlVGltZV9EZWx0YSAqKWxlZnQpOwogICAgIGlmIChweXVzX2xlZnQgPT0gTlVMTCkKQEAgLTI0NjAsMjYgKzI0NDMsMjkgQEAKIAogLyogUmV0dXJuIG5ldyBkYXRlIGZyb20gbG9jYWx0aW1lKHQpLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGVfbG9jYWxfZnJvbV90aW1lX3QoUHlPYmplY3QgKmNscywgZG91YmxlIHRzKQorZGF0ZV9sb2NhbF9mcm9tX29iamVjdChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqb2JqKQogewogICAgIHN0cnVjdCB0bSAqdG07CiAgICAgdGltZV90IHQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICB0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRzKTsKLSAgICBpZiAodCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmdCkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgdG0gPSBsb2NhbHRpbWUoJnQpOwotICAgIGlmICh0bSkKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5KTsKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBsb2NhbHRpbWUoKSBmdW5jdGlvbiIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYgKHRtID09IE5VTEwpIHsKKyAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5KTsKIH0KIAogLyogUmV0dXJuIG5ldyBkYXRlIGZyb20gY3VycmVudCB0aW1lLgpAQCAtMjQ5Miw2ICsyNDc4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqdGltZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGZyb210aW1lc3RhbXApOwogCiAgICAgdGltZSA9IHRpbWVfdGltZSgpOwogICAgIGlmICh0aW1lID09IE5VTEwpCkBAIC0yNTAzLDcgKzI0OTAsNyBAQAogICAgICAqIHRpbWUudGltZSgpIGRlbGl2ZXJzOyBpZiBzb21lb25lIHdlcmUgZ29uem8gYWJvdXQgb3B0aW1pemF0aW9uLAogICAgICAqIGRhdGUudG9kYXkoKSBjb3VsZCBnZXQgYXdheSB3aXRoIHBsYWluIEMgdGltZSgpLgogICAgICAqLwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY2xzLCAiZnJvbXRpbWVzdGFtcCIsICJPIiwgdGltZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjbHMsICZQeUlkX2Zyb210aW1lc3RhbXAsICJPIiwgdGltZSk7CiAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNTEyLDExICsyNDk5LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9mcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOmZyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKLSAgICAgICAgcmVzdWx0ID0gZGF0ZV9sb2NhbF9mcm9tX3RpbWVfdChjbHMsIHRpbWVzdGFtcCk7CisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQorICAgICAgICByZXN1bHQgPSBkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KGNscywgdGltZXN0YW1wKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNTcxLDEwICsyNTU4LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2FkZChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIGlmIChQeURhdGVUaW1lX0NoZWNrKGxlZnQpIHx8IFB5RGF0ZVRpbWVfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIGlmIChQeURhdGVfQ2hlY2sobGVmdCkpIHsKICAgICAgICAgLyogZGF0ZSArID8/PyAqLwogICAgICAgICBpZiAoUHlEZWx0YV9DaGVjayhyaWdodCkpCkBAIC0yNTkzLDE3ICsyNTc5LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopIGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX3N1YnRyYWN0KFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKFB5RGF0ZV9DaGVjayhsZWZ0KSkgewogICAgICAgICBpZiAoUHlEYXRlX0NoZWNrKHJpZ2h0KSkgewogICAgICAgICAgICAgLyogZGF0ZSAtIGRhdGUgKi8KQEAgLTI2MjIsOCArMjYwNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogCkBAIC0yNjQ4LDcgKzI2MzEsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3RyKFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiaXNvZm9ybWF0IiwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoaXNvZm9ybWF0KTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CiB9CiAKIApAQCAtMjY2NywxMyArMjY1MiwxNCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKnR1cGxlOwogICAgIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgX1B5X0lERU5USUZJRVIodGltZXR1cGxlKTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZm9ybWF0IiwgTlVMTH07CiAKICAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJVOnN0cmZ0aW1lIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHR1cGxlID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAidGltZXR1cGxlIiwgIigpIik7CisgICAgdHVwbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3RpbWV0dXBsZSwgIigpIik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlc3VsdCA9IHdyYXBfc3RyZnRpbWUoKFB5T2JqZWN0ICopc2VsZiwgZm9ybWF0LCB0dXBsZSwKQEAgLTI2ODYsMTUgKzI2NzIsMTYgQEAKIGRhdGVfZm9ybWF0KFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUihzdHJmdGltZSk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGlmIHRoZSBmb3JtYXQgaXMgemVybyBsZW5ndGgsIHJldHVybiBzdHIoc2VsZikgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoZm9ybWF0KSA9PSAwKQorICAgIGlmIChQeVVuaWNvZGVfR2V0TGVuZ3RoKGZvcm1hdCkgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cigoUHlPYmplY3QgKilzZWxmKTsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJzdHJmdGltZSIsICJPIiwgZm9ybWF0KTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9zdHJmdGltZSwgIk8iLCBmb3JtYXQpOwogfQogCiAvKiBJU08gbWV0aG9kcy4gKi8KQEAgLTI3NDAsMTAgKzI3MjcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFX0RBVEFTSVpFKTsKICAgICAgICAgcmV0dXJuIGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjc3NSwyNyArMjc2MCwxMCBAQAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotLyoKLSAgICBCb3Jyb3dlZCBmcm9tIHN0cmluZ29iamVjdC5jLCBvcmlnaW5hbGx5IGl0IHdhcyBzdHJpbmdfaGFzaCgpCi0qLwogc3RhdGljIFB5X2hhc2hfdAogZ2VuZXJpY19oYXNoKHVuc2lnbmVkIGNoYXIgKmRhdGEsIGludCBsZW4pCiB7Ci0gICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqcDsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgeDsKLQotICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7Ci0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7Ci0gICAgeCA9IF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKLSAgICB4IF49ICpwIDw8IDc7Ci0gICAgd2hpbGUgKC0tbGVuID49IDApCi0gICAgICAgIHggPSAoMTAwMDAwMyp4KSBeICpwKys7Ci0gICAgeCBePSBsZW47Ci0gICAgeCBePSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7Ci0gICAgaWYgKHggPT0gLTEpCi0gICAgICAgIHggPSAtMjsKLQotICAgIHJldHVybiB4OworICAgIHJldHVybiBfUHlfSGFzaEJ5dGVzKGRhdGEsIGxlbik7CiB9CiAKIApAQCAtMzEwMCwxMiArMzA2OCwxNCBAQAogewogICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGUsICp0bXA7CiAgICAgUHlPYmplY3QgKmdldGluaXRhcmdzLCAqZ2V0c3RhdGU7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRpbml0YXJnc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldHN0YXRlX18pOwogCiAgICAgdG1wID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGdldGluaXRhcmdzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLCAiX19nZXRpbml0YXJnc19fIik7CisgICAgZ2V0aW5pdGFyZ3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgaWYgKGdldGluaXRhcmdzICE9IE5VTEwpIHsKICAgICAgICAgYXJncyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0aW5pdGFyZ3MsIHRtcCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRpbml0YXJncyk7CkBAIC0zMTIwLDcgKzMwOTAsNyBAQAogICAgICAgICBQeV9JTkNSRUYoYXJncyk7CiAgICAgfQogCi0gICAgZ2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2dldHN0YXRlX18iKTsKKyAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRzdGF0ZV9fKTsKICAgICBpZiAoZ2V0c3RhdGUgIT0gTlVMTCkgewogICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0c3RhdGUsIHRtcCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CkBAIC0zMjQzLDEwICszMjEzLDggQEAKIHRpbWV6b25lX3JpY2hjb21wYXJlKFB5RGF0ZVRpbWVfVGltZVpvbmUgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lICpvdGhlciwgaW50IG9wKQogewotICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIGlmIChQeV9UWVBFKG90aGVyKSAhPSAmUHlEYXRlVGltZV9UaW1lWm9uZVR5cGUpIHsKIAlpZiAob3AgPT0gUHlfRVEpCiAJICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTMyOTcsNyArMzI2NSw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGltZXpvbmVfc3RyKFB5RGF0ZVRpbWVfVGltZVpvbmUgKnNlbGYpCiB7Ci0gICAgY2hhciBidWZbMTBdOwogICAgIGludCBob3VycywgbWludXRlcywgc2Vjb25kczsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogICAgIGNoYXIgc2lnbjsKQEAgLTMzMjMsMTEgKzMyOTAsOSBAQAogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIG1pbnV0ZXMgPSBkaXZtb2Qoc2Vjb25kcywgNjAsICZzZWNvbmRzKTsKICAgICBob3VycyA9IGRpdm1vZChtaW51dGVzLCA2MCwgJm1pbnV0ZXMpOwotICAgIGFzc2VydChzZWNvbmRzID09IDApOwogICAgIC8qIFhYWCBpZ25vcmUgc3ViLW1pbnV0ZSBkYXRhLCBjdXJlbnRseSBub3QgYWxsb3dlZC4gKi8KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJVVEMlYyUwMmQ6JTAyZCIsIHNpZ24sIGhvdXJzLCBtaW51dGVzKTsKLQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIGFzc2VydChzZWNvbmRzID09IDApOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiVVRDJWMlMDJkOiUwMmQiLCBzaWduLCBob3VycywgbWludXRlcyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNjI0LDcgKzM1ODksOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc3RyKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiaXNvZm9ybWF0IiwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoaXNvZm9ybWF0KTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNzAxLDEwICszNjY4LDggQEAKICAgICBQeU9iamVjdCAqb2Zmc2V0MSwgKm9mZnNldDI7CiAgICAgaW50IGRpZmY7CiAKLSAgICBpZiAoISBQeVRpbWVfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCEgUHlUaW1lX0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgaWYgKEdFVF9USU1FX1RaSU5GTyhzZWxmKSA9PSBHRVRfVElNRV9UWklORk8ob3RoZXIpKSB7CiAgICAgICAgIGRpZmYgPSBtZW1jbXAoKChQeURhdGVUaW1lX1RpbWUgKilzZWxmKS0+ZGF0YSwKQEAgLTM3NTAsNiArMzcxNSwxNCBAQAogICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKG90aGVyKTsKICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfRmFsc2U7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9ORSkgeworICAgICAgICByZXN1bHQgPSBQeV9UcnVlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgY29tcGFyZSBvZmZzZXQtbmFpdmUgYW5kICIKQEAgLTQxMDUsMzMgKzQwNzgsMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgc3RydWN0IHRtICp0bTsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAogICAgIHRtID0gZigmdGltZXQpOwotICAgIGlmICh0bSkgewotICAgICAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKLSAgICAgICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKLSAgICAgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCi0gICAgICAgICAqIGNvbnN0cnVjdG9yIHdvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGEgcmVhc29uIHRoYXQKLSAgICAgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KLSAgICAgICAgICovCi0gICAgICAgIGlmICh0bS0+dG1fc2VjID4gNTkpCi0gICAgICAgICAgICB0bS0+dG1fc2VjID0gNTk7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKKyAgICBpZiAodG0gPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIGxvY2FsdGltZSgpL2dtdGltZSgpIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8qIFRoZSBwbGF0Zm9ybSBsb2NhbHRpbWUvZ210aW1lIG1heSBpbnNlcnQgbGVhcCBzZWNvbmRzLAorICAgICAqIGluZGljYXRlZCBieSB0bS0+dG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCisgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCisgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAorICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCisgICAgICovCisgICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKKyAgICAgICAgdG0tPnRtX3NlYyA9IDU5OworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQxNDIsMzIgKzQxMTUsMTUgQEAKICAqIHRvIGdldCB0aGF0IG11Y2ggcHJlY2lzaW9uIChlLmcuLCBDIHRpbWUoKSBpc24ndCBnb29kIGVub3VnaCkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIGRvdWJsZSB0aW1lc3RhbXAsCitkYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIFB5T2JqZWN0ICp0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHRpbWVfdCB0aW1ldDsKLSAgICBkb3VibGUgZnJhY3Rpb247Ci0gICAgaW50IHVzOworICAgIGxvbmcgdXM7CiAKLSAgICB0aW1ldCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh0aW1lc3RhbXApOwotICAgIGlmICh0aW1ldCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRpbWVzdGFtcCwgJnRpbWV0LCAmdXMpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcmFjdGlvbiA9IHRpbWVzdGFtcCAtIChkb3VibGUpdGltZXQ7Ci0gICAgdXMgPSAoaW50KXJvdW5kX3RvX2xvbmcoZnJhY3Rpb24gKiAxZTYpOwotICAgIGlmICh1cyA8IDApIHsKLSAgICAgICAgLyogVHJ1bmNhdGlvbiB0b3dhcmRzIHplcm8gaXMgbm90IHdoYXQgd2Ugd2FudGVkCi0gICAgICAgICAgIGZvciBuZWdhdGl2ZSBudW1iZXJzIChQeXRob24ncyBtb2Qgc2VtYW50aWNzKSAqLwotICAgICAgICB0aW1ldCAtPSAxOwotICAgICAgICB1cyArPSAxMDAwMDAwOwotICAgIH0KLSAgICAvKiBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQotICAgICAqIGZ1bGwgc2Vjb25kLCByb3VuZCB1cC4gT3RoZXJ3aXNlLCBWYWx1ZUVycm9ycyBhcmUgcmFpc2VkCi0gICAgICogZm9yIHNvbWUgZmxvYXRzLiAqLwotICAgIGlmICh1cyA9PSAxMDAwMDAwKSB7Ci0gICAgICAgIHRpbWV0ICs9IDE7Ci0gICAgICAgIHVzID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIHVzLCB0emluZm8pOworICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHRpbWV0LCAoaW50KXVzLCB0emluZm8pOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCkBAIC00MjA1LDcgKzQxNjEsOSBAQAogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotICAgICAgICBzZWxmID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJmcm9tdXRjIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZnJvbXV0Yyk7CisKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwogICAgICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwpAQCAtNDIyNSwxMSArNDE4MywxMSBAQAogZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXN0YW1wIiwgInR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJkfE86ZnJvbXRpbWVzdGFtcCIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xPOmZyb210aW1lc3RhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywgJnRpbWVzdGFtcCwgJnR6aW5mbykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCkBAIC00MjQyLDcgKzQyMDAsOSBAQAogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotICAgICAgICBzZWxmID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJmcm9tdXRjIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZnJvbXV0Yyk7CisKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwogICAgICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwpAQCAtNDI1MiwxMCArNDIxMiwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBnbXRpbWUsIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQyNjYsOSArNDIyNiwxMCBAQAogZGF0ZXRpbWVfc3RycHRpbWUoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnN0cmluZywgKmZvcm1hdDsKKyAgICBQeU9iamVjdCAqc3RyaW5nLCAqZm9ybWF0OworICAgIF9QeV9JREVOVElGSUVSKF9zdHJwdGltZV9kYXRldGltZSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInV1OnN0cnB0aW1lIiwgJnN0cmluZywgJmZvcm1hdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpzdHJwdGltZSIsICZzdHJpbmcsICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewpAQCAtNDI3Niw4ICs0MjM3LDggQEAKICAgICAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKG1vZHVsZSwgIl9zdHJwdGltZV9kYXRldGltZSIsICJPdXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscywgc3RyaW5nLCBmb3JtYXQpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfX3N0cnB0aW1lX2RhdGV0aW1lLCAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscywgc3RyaW5nLCBmb3JtYXQpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGV0aW1lIGZyb20gZGF0ZS9kYXRldGltZSBhbmQgdGltZSBhcmd1bWVudHMuICovCkBAIC00MzkzLDggKzQzNTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKSBsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUyMyw3ICs0NDgzLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9zdHIoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiaXNvZm9ybWF0IiwgIihzKSIsICIgIik7CisgICAgX1B5X0lERU5USUZJRVIoaXNvZm9ybWF0KTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIihzKSIsICIgIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTk2LDggKzQ1NTgsNyBAQAogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICAgICAgcmV0dXJuIGNtcGVycm9yKHNlbGYsIG90aGVyKTsKICAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBpZiAoR0VUX0RUX1RaSU5GTyhzZWxmKSA9PSBHRVRfRFRfVFpJTkZPKG90aGVyKSkgewpAQCAtNDYzOSw2ICs0NjAwLDE0IEBACiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X0ZhbHNlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfTkUpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfVHJ1ZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGNvbXBhcmUgb2Zmc2V0LW5haXZlIGFuZCAiCkBAIC00NzI1LDE2ICs0Njk0LDgzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgdG0gKnRpbWVwOworICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKmRlbHRhOworICAgIFB5T2JqZWN0ICpvbmVfc2Vjb25kOworICAgIFB5T2JqZWN0ICpzZWNvbmRzOworICAgIFB5T2JqZWN0ICpuYW1lbyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqem9uZSA9IE5VTEw7CisKKyAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXV0Y190aW1lLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb25lX3NlY29uZCA9IG5ld19kZWx0YSgwLCAxLCAwLCAwKTsKKyAgICBpZiAob25lX3NlY29uZCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHNlY29uZHMgPSBkaXZpZGVfdGltZWRlbHRhX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EZWx0YSAqKWRlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9uZV9zZWNvbmQpOworICAgIFB5X0RFQ1JFRihvbmVfc2Vjb25kKTsKKyAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgdGltZXN0YW1wID0gUHlMb25nX0FzTG9uZyhzZWNvbmRzKTsKKyAgICBQeV9ERUNSRUYoc2Vjb25kcyk7CisgICAgaWYgKHRpbWVzdGFtcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0aW1lcCA9IGxvY2FsdGltZSgmdGltZXN0YW1wKTsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgem9uZSA9IHRpbWVwLT50bV96b25lOworICAgIGRlbHRhID0gbmV3X2RlbHRhKDAsIHRpbWVwLT50bV9nbXRvZmYsIDAsIDEpOworI2Vsc2UgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIHsKKyAgICAgICAgUHlPYmplY3QgKmxvY2FsX3RpbWU7CisgICAgICAgIGxvY2FsX3RpbWUgPSBuZXdfZGF0ZXRpbWUodGltZXAtPnRtX3llYXIgKyAxOTAwLCB0aW1lcC0+dG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fbWRheSwgdGltZXAtPnRtX2hvdXIsIHRpbWVwLT50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX3NlYywgREFURV9HRVRfTUlDUk9TRUNPTkQodXRjX3RpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lLT50emluZm8pOworICAgICAgICBpZiAobG9jYWxfdGltZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdChsb2NhbF90aW1lLCAoUHlPYmplY3QqKXV0Y190aW1lKTsKKyAgICAgICAgLyogWFhYOiBiZWZvcmUgcmVseWluZyBvbiB0em5hbWUsIHdlIHNob3VsZCBjb21wYXJlIGRlbHRhCisgICAgICAgICAgIHRvIHRoZSBvZmZzZXQgaW1wbGllZCBieSB0aW1lem9uZS9hbHR6b25lICovCisgICAgICAgIGlmIChkYXlsaWdodCAmJiB0aW1lcC0+dG1faXNkc3QgPj0gMCkKKyAgICAgICAgICAgIHpvbmUgPSB0em5hbWVbdGltZXAtPnRtX2lzZHN0ICUgMl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHpvbmUgPSB0em5hbWVbMF07CisgICAgICAgIFB5X0RFQ1JFRihsb2NhbF90aW1lKTsKKyAgICB9CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIGlmICh6b25lICE9IE5VTEwpIHsKKyAgICAgICAgbmFtZW8gPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgaWYgKG5hbWVvID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICByZXN1bHQgPSBuZXdfdGltZXpvbmUoZGVsdGEsIG5hbWVvKTsKKyAgICBQeV9ERUNSRUYobmFtZW8pOworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeURhdGVUaW1lX0RhdGVUaW1lICoKIGRhdGV0aW1lX2FzdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogICAgIFB5T2JqZWN0ICp0ZW1wOwotICAgIFB5T2JqZWN0ICp0emluZm87CisgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CisgICAgX1B5X0lERU5USUZJRVIoZnJvbXV0Yyk7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPITphc3RpbWV6b25lIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RaSW5mb1R5cGUsICZ0emluZm8pKQorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPOmFzdGltZXpvbmUiLCBrZXl3b3JkcywKKwkJCQkgICAgICAmdHppbmZvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCkBAIC00NzQzLDcgKzQ3NzksNyBAQAogICAgIC8qIENvbnZlcnNpb24gdG8gc2VsZidzIG93biB0aW1lIHpvbmUgaXMgYSBOT1AuICovCiAgICAgaWYgKHNlbGYtPnR6aW5mbyA9PSB0emluZm8pIHsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgfQogCiAgICAgLyogQ29udmVydCBzZWxmIHRvIFVUQy4gKi8KQEAgLTQ3NTksMjAgKzQ3OTUsMjkgQEAKICAgICB9CiAKICAgICAvKiByZXN1bHQgPSBzZWxmIC0gb2Zmc2V0ICovCi0gICAgcmVzdWx0ID0gYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAotICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0LCAtMSk7CisgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOwogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBdHRhY2ggbmV3IHR6aW5mbyBhbmQgbGV0IGZyb211dGMoKSBkbyB0aGUgcmVzdC4gKi8KLSAgICB0ZW1wID0gKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0KS0+dHppbmZvOwotICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCktPnR6aW5mbyA9IHR6aW5mbzsKLSAgICBQeV9JTkNSRUYodHppbmZvKTsKKyAgICB0ZW1wID0gcmVzdWx0LT50emluZm87CisgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lKSB7CisgICAgICAgIHR6aW5mbyA9IGxvY2FsX3RpbWV6b25lKHJlc3VsdCk7CisgICAgICAgIGlmICh0emluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICBQeV9JTkNSRUYodHppbmZvKTsKKyAgICByZXN1bHQtPnR6aW5mbyA9IHR6aW5mbzsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAKLSAgICB0ZW1wID0gcmVzdWx0OwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAiZnJvbXV0YyIsICJPIiwgdGVtcCk7CisgICAgdGVtcCA9IChQeU9iamVjdCAqKXJlc3VsdDsKKyAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKQorICAgICAgICBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCB0ZW1wKTsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDgwNCw2ICs0ODQ5LDQ0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV90aW1lc3RhbXAoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKEhBU1RaSU5GTyhzZWxmKSAmJiBzZWxmLT50emluZm8gIT0gUHlfTm9uZSkgeworICAgICAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopc2VsZiwgUHlEYXRlVGltZV9FcG9jaCk7CisgICAgICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJlc3VsdCA9IGRlbHRhX3RvdGFsX3NlY29uZHMoZGVsdGEpOworICAgICAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RydWN0IHRtIHRpbWU7CisgICAgICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgICAgIG1lbXNldCgodm9pZCAqKSAmdGltZSwgJ1wwJywgc2l6ZW9mKHN0cnVjdCB0bSkpOworICAgICAgICB0aW1lLnRtX3llYXIgPSBHRVRfWUVBUihzZWxmKSAtIDE5MDA7CisgICAgICAgIHRpbWUudG1fbW9uID0gR0VUX01PTlRIKHNlbGYpIC0gMTsKKyAgICAgICAgdGltZS50bV9tZGF5ID0gR0VUX0RBWShzZWxmKTsKKyAgICAgICAgdGltZS50bV9ob3VyID0gREFURV9HRVRfSE9VUihzZWxmKTsKKyAgICAgICAgdGltZS50bV9taW4gPSBEQVRFX0dFVF9NSU5VVEUoc2VsZik7CisgICAgICAgIHRpbWUudG1fc2VjID0gREFURV9HRVRfU0VDT05EKHNlbGYpOworICAgICAgICB0aW1lLnRtX3dkYXkgPSAtMTsKKyAgICAgICAgdGltZS50bV9pc2RzdCA9IC0xOworICAgICAgICB0aW1lc3RhbXAgPSBta3RpbWUoJnRpbWUpOworICAgICAgICAvKiBSZXR1cm4gdmFsdWUgb2YgLTEgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiBhbiBlcnJvciwgYnV0IHRtX3dkYXkKKyAgICAgICAgICogY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KKyAgICAgICAgaWYgKHRpbWVzdGFtcCA9PSAodGltZV90KSgtMSkgJiYgdGltZS50bV93ZGF5ID09IC0xKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHRpbWVzdGFtcCArIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2dldGRhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKICAgICByZXR1cm4gbmV3X2RhdGUoR0VUX1lFQVIoc2VsZiksCkBAIC00OTUwLDYgKzUwMzMsOSBAQAogICAgIHsidGltZXR1cGxlIiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdGltZXR1cGxlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gdGltZSB0dXBsZSwgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIil9LAogCisgICAgeyJ0aW1lc3RhbXAiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV90aW1lc3RhbXAsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIlJldHVybiBQT1NJWCB0aW1lc3RhbXAgYXMgZmxvYXQuIil9LAorCiAgICAgeyJ1dGN0aW1ldHVwbGUiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV91dGN0aW1ldHVwbGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIlJldHVybiBVVEMgdGltZSB0dXBsZSwgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIil9LAogCkBAIC01MjA3LDYgKzUyOTMsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwogCisgICAgLyogRXBvY2ggKi8KKyAgICBQeURhdGVUaW1lX0Vwb2NoID0gbmV3X2RhdGV0aW1lKDE5NzAsIDEsIDEsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQyk7CisgICAgaWYgKFB5RGF0ZVRpbWVfRXBvY2ggPT0gTlVMTCkKKyAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogbW9kdWxlIGluaXRpYWxpemF0aW9uICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1JTllFQVIiLCBNSU5ZRUFSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTUFYWUVBUiIsIE1BWFlFQVIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCA4MjdhY2NlLi4zMjdiODczIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBACiB7CiAgICAgZGJtb2JqZWN0ICpkcCA9IChkYm1vYmplY3QgKilzZWxmOwogICAgIGRhdHVtIGtleSwgdmFsOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAogICAgIGlmICgoZHApLT5kaV9kYm0gPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoRGJtRXJyb3IsCkBAIC0yMTksOCArMjIwLDkgQEAKICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGFyZyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhhcmcsIE5VTEwpOwotICAgICAgICBpZiAoYXJnID09IE5VTEwpCisgICAgICAgIGtleS5kcHRyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmc2l6ZSk7CisgICAgICAgIGtleS5kc2l6ZSA9IHNpemU7CisgICAgICAgIGlmIChrZXkuZHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soYXJnKSkgewpAQCAtMjI5LDggKzIzMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBrZXkuZHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyk7Ci0gICAga2V5LmRzaXplID0gUHlCeXRlc19HRVRfU0laRShhcmcpOworICAgIGVsc2UgeworICAgICAgICBrZXkuZHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyk7CisgICAgICAgIGtleS5kc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKTsKKyAgICB9CiAgICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGtleSk7CiAgICAgcmV0dXJuIHZhbC5kcHRyICE9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL1JFQURNRS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxN2NmZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvUkVBRE1FLnR4dApAQCAtMCwwICsxLDQ2IEBACisKKworQWJvdXQKKz09PT09CisKK19kZWNpbWFsLmMgaXMgYSB3cmFwcGVyIGZvciB0aGUgbGlibXBkZWMgbGlicmFyeS4gbGlibXBkZWMgaXMgYSBmYXN0IEMKK2xpYnJhcnkgZm9yIGNvcnJlY3RseS1yb3VuZGVkIGFyYml0cmFyeSBwcmVjaXNpb24gZGVjaW1hbCBmbG9hdGluZyBwb2ludAorYXJpdGhtZXRpYy4gSXQgaXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBNaWtlIENvd2xpc2hhdy9JQk0ncworR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbi4KKworCitCdWlsZCBwcm9jZXNzIGZvciB0aGUgbW9kdWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIHVzdWFsLCB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgX2RlY2ltYWwuc28gaXMgZHJpdmVuIGJ5IHNldHVwLnB5IGluIHRoZSB0b3AKK2xldmVsIGRpcmVjdG9yeS4gc2V0dXAucHkgYXV0b2RldGVjdHMgdGhlIGZvbGxvd2luZyBidWlsZCBjb25maWd1cmF0aW9uczoKKworICAgMSkgeDY0ICAgICAgICAgLSA2NC1iaXQgUHl0aG9uLCB4ODZfNjQgcHJvY2Vzc29yIChBTUQsIEludGVsKQorCisgICAyKSB1aW50MTI4ICAgICAtIDY0LWJpdCBQeXRob24sIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90IChnY2MpCisKKyAgIDMpIGFuc2k2NCAgICAgIC0gNjQtYml0IFB5dGhvbiwgQU5TSSBDCisKKyAgIDQpIHBwcm8gICAgICAgIC0gMzItYml0IFB5dGhvbiwgeDg2IENQVSwgUGVudGl1bVBybyBvciBsYXRlcgorCisgICA1KSBhbnNpMzIgICAgICAtIDMyLWJpdCBQeXRob24sIEFOU0kgQworCisgICA2KSBhbnNpLWxlZ2FjeSAtIDMyLWJpdCBQeXRob24sIGNvbXBpbGVyIHdpdGhvdXQgdWludDY0X3QKKworICAgNykgdW5pdmVyc2FsICAgLSBNYWMgT1Mgb25seSAobXVsdGktYXJjaCkKKworCitJdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZSBhdXRvZGV0ZWN0aW9uIGJ5IGV4cG9ydGluZzoKKworICAgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FPXZhbHVlLCB3aGVyZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMuCisKKworTk9URQorPT09PQorIAorZGVjaW1hbC5zbyBpcyBub3QgYnVpbHQgZnJvbSBhIHN0YXRpYyBsaWJtcGRlYy5hIHNpbmNlIGRvaW5nIHNvIGxlZCB0bworZmFpbHVyZXMgb24gQUlYICh1c2VyIHJlcG9ydCkgYW5kIFdpbmRvd3MgKG1peGluZyBzdGF0aWMgYW5kIGR5bmFtaWMgQ1JUcworY2F1c2VzIGxvY2FsZSBwcm9ibGVtcyBhbmQgbW9yZSkuCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk2ZjlkYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtMCwwICsxLDU2NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlICJsb25naW50cmVwci5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiY29tcGxleG9iamVjdC5oIgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+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+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHZhbGdyaW5kID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgJHZhbGdyaW5kIC4vcHl0aG9uIE1vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKyAgICBkb25lCitkb25lCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC5iYXQgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWJjODcyYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLmJhdApAQCAtMCwwICsxLDExMSBAQAorQEVDSE8gT0ZGCisKK3JlbSBUZXN0IGFsbCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLCBweWRlYnVnLCByZWZsZWFrcywgcmVsZWFzZSBidWlsZC4KKworY2QgLi5cLi5cLi5cCisKKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGRpbmcgUHl0aG9uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciAvdGFyZ2V0OmNsZWFuIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIC90YXJnZXQ6Y2xlYW4gUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPXg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT14NjQKKworY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODYKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMgorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT1XaW4zMgorZWNoby4KK2VjaG8uCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2RlY2ltYWw6IHBsYXRmb3JtPXg2NAorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2NkIFBDYnVpbGRcYW1kNjQKKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZmxlYWsgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLW0gdGVzdCAtdWFsbCAtUiAyOjIgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworY2QgLi4KKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZGVjaW1hbDogcGxhdGZvcm09eDg2CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZmxlYWsgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLW0gdGVzdCAtdWFsbCAtUiAyOjIgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworY2QgYW1kNjQKKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgZGVjY2hlY2s6IHBsYXRmb3JtPXg2NAorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSBkZWJ1ZyBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT0gcmVsZWFzZSBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworY2QgLi4KKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgZGVjY2hlY2s6IHBsYXRmb3JtPXg4NgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gZGVidWcgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09IHJlbGVhc2UgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKKworY2QgLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0cworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKaW5kZXggYzM2YWY1ZC4uNDNmOWQ5YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYworKysgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCkBAIC00OCw2ICs0OCw3IEBACiAvKiBTZWUgaHR0cDovL3d3dy5weXRob24ub3JnL3BzZi9saWNlbnNlIGZvciBsaWNlbnNpbmcgZGV0YWlscy4gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiAjZGVmaW5lIFZFUlNJT04gIjEuMC42IgogCkBAIC01Nyw5ICs1OCw2IEBACiAvKiBMZWF2ZSBkZWZpbmVkIHRvIGluY2x1ZGUgdGhlIGV4cGF0LWJhc2VkIFhNTFBhcnNlciB0eXBlICovCiAjZGVmaW5lIFVTRV9FWFBBVAogCi0vKiBEZWZpbmUgdG8gZG8gYWxsIGV4cGF0IGNhbGxzIHZpYSBweWV4cGF0J3MgZW1iZWRkZWQgZXhwYXQgbGlicmFyeSAqLwotLyogI2RlZmluZSBVU0VfUFlFWFBBVF9DQVBJICovCi0KIC8qIEFuIGVsZW1lbnQgY2FuIGhvbGQgdGhpcyBtYW55IGNoaWxkcmVuIHdpdGhvdXQgZXh0cmEgbWVtb3J5CiAgICBhbGxvY2F0aW9ucy4gKi8KICNkZWZpbmUgU1RBVElDX0NISUxEUkVOIDQKQEAgLTcwLDcgKzY4LDcgQEAKICAgIGhlbHBzIGlmIHlvdSBoYXZlIGxvdHMgb2YgbGVhZiBub2RlcyB3aXRoIGF0dHJpYnV0ZXMpLiAqLwogCiAvKiBBbHNvIG5vdGUgdGhhdCBweW1hbGxvYyBhbHdheXMgYWxsb2NhdGVzIGJsb2NrcyBpbiBtdWx0aXBsZXMgb2YKLSAgIGVpZ2h0IGJ5dGVzLiAgRm9yIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgY0VsZW1lbnRUcmVlLCB0aGlzIG1lYW5zCisgICBlaWdodCBieXRlcy4gIEZvciB0aGUgY3VycmVudCBDIHZlcnNpb24gb2YgRWxlbWVudFRyZWUsIHRoaXMgbWVhbnMKICAgIHRoYXQgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBzaG91bGQgYmUgYW4gZXZlbiBudW1iZXIsIGF0IGxlYXN0IG9uCiAgICAzMi1iaXQgcGxhdGZvcm1zLiAqLwogCkBAIC05NCwzOSArOTIsMTcgQEAKICNkZWZpbmUgTE9DQUwodHlwZSkgc3RhdGljIHR5cGUKICNlbmRpZgogCi0vKiBjb21wYXRpYmlsaXR5IG1hY3JvcyAqLwotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNjAwMDApCi0jZGVmaW5lIFB5X1JFRkNOVChvYikgKCgoUHlPYmplY3QqKShvYikpLT5vYl9yZWZjbnQpCi0jZGVmaW5lIFB5X1RZUEUob2IpICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfdHlwZSkKLSNlbmRpZgotCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLXR5cGVkZWYgaW50IFB5X3NzaXplX3Q7Ci0jZGVmaW5lIGxlbmZ1bmMgaW5xdWlyeQotI2VuZGlmCi0KLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDQwMDAwKQotI2RlZmluZSBQeURpY3RfQ2hlY2tFeGFjdCBQeURpY3RfQ2hlY2sKLQotI2lmICFkZWZpbmVkKFB5X1JFVFVSTl9OT05FKQotI2RlZmluZSBQeV9SRVRVUk5fTk9ORSByZXR1cm4gUHlfSU5DUkVGKFB5X05vbmUpLCBQeV9Ob25lCi0jZW5kaWYKLSNlbmRpZgotCiAvKiBtYWNyb3MgdXNlZCB0byBzdG9yZSAnam9pbicgZmxhZ3MgaW4gc3RyaW5nIG9iamVjdCBwb2ludGVycy4gIG5vdGUKICAgIHRoYXQgYWxsIHVzZSBvZiB0ZXh0IGFuZCB0YWlsIGFzIG9iamVjdCBwb2ludGVycyBtdXN0IGJlIHdyYXBwZWQgaW4KICAgIEpPSU5fT0JKLiAgc2VlIGNvbW1lbnRzIGluIHRoZSBFbGVtZW50T2JqZWN0IGRlZmluaXRpb24gZm9yIG1vcmUKICAgIGluZm8uICovCiAjZGVmaW5lIEpPSU5fR0VUKHApICgoUHlfdWludHB0cl90KSAocCkgJiAxKQogI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKFB5X3VpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCi0jZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfjEpKQorI2RlZmluZSBKT0lOX09CSihwKSAoKFB5T2JqZWN0KikgKChQeV91aW50cHRyX3QpIChwKSAmIH4oUHlfdWludHB0cl90KTEpKQogCiAvKiBnbHVlIGZ1bmN0aW9ucyAoc2VlIHRoZSBpbml0IGZ1bmN0aW9uIGZvciBkZXRhaWxzKSAqLwogc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqOwogc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9kZWVwY29weV9vYmo7Ci1zdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2l0ZXJfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9pdGVydGV4dF9vYmo7CiBzdGF0aWMgUHlPYmplY3QqIGVsZW1lbnRwYXRoX29iajsKIAogLyogaGVscGVycyAqLwpAQCAtMjEwLDggKzE4NiwxNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIElzIHRoZSBnaXZlbiBvYmplY3QgYW4gZW1wdHkgZGljdGlvbmFyeT8KKyovCitzdGF0aWMgaW50Citpc19lbXB0eV9kaWN0KFB5T2JqZWN0ICpvYmopCit7CisgICAgcmV0dXJuIFB5RGljdF9DaGVja0V4YWN0KG9iaikgJiYgUHlEaWN0X1NpemUob2JqKSA9PSAwOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiB0aGUgZWxlbWVudCB0eXBlICovCisvKiB0aGUgRWxlbWVudCB0eXBlICovCiAKIHR5cGVkZWYgc3RydWN0IHsKIApAQCAtMjI2LDcgKzIxMSw3IEBACiAgICAgUHlPYmplY3QqICpjaGlsZHJlbjsKIAogICAgIFB5T2JqZWN0KiBfY2hpbGRyZW5bU1RBVElDX0NISUxEUkVOXTsKLSAgICAKKwogfSBFbGVtZW50T2JqZWN0RXh0cmE7CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTI0OSw2ICsyMzQsOCBAQAogCiAgICAgRWxlbWVudE9iamVjdEV4dHJhKiBleHRyYTsKIAorICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogRm9yIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisKIH0gRWxlbWVudE9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGU7CkBAIC0yNTYsMTAgKzI0MywxMCBAQAogI2RlZmluZSBFbGVtZW50X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmRWxlbWVudF9UeXBlKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogZWxlbWVudCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciAqLworLyogRWxlbWVudCBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3IgKi8KIAogTE9DQUwoaW50KQotZWxlbWVudF9uZXdfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGF0dHJpYikKK2NyZWF0ZV9leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXR0cmliKQogewogICAgIHNlbGYtPmV4dHJhID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihFbGVtZW50T2JqZWN0RXh0cmEpKTsKICAgICBpZiAoIXNlbGYtPmV4dHJhKQpAQCAtMjc5LDQ3ICsyNjYsNDggQEAKIH0KIAogTE9DQUwodm9pZCkKLWVsZW1lbnRfZGVhbGxvY19leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmKQorZGVhbGxvY19leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmKQogeworICAgIEVsZW1lbnRPYmplY3RFeHRyYSAqbXlleHRyYTsKICAgICBpbnQgaTsKIAotICAgIFB5X0RFQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKKyAgICBpZiAoIXNlbGYtPmV4dHJhKQorICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgaSsrKQotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKyAgICAvKiBBdm9pZCBERUNSRUZzIGNhbGxpbmcgaW50byB0aGlzIGNvZGUgYWdhaW4gKGN5Y2xlcywgZXRjLikKKyAgICAqLworICAgIG15ZXh0cmEgPSBzZWxmLT5leHRyYTsKKyAgICBzZWxmLT5leHRyYSA9IE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuKTsKKyAgICBQeV9ERUNSRUYobXlleHRyYS0+YXR0cmliKTsKIAotICAgIFB5T2JqZWN0X0ZyZWUoc2VsZi0+ZXh0cmEpOworICAgIGZvciAoaSA9IDA7IGkgPCBteWV4dHJhLT5sZW5ndGg7IGkrKykKKyAgICAgICAgUHlfREVDUkVGKG15ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKworICAgIGlmIChteWV4dHJhLT5jaGlsZHJlbiAhPSBteWV4dHJhLT5fY2hpbGRyZW4pCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobXlleHRyYS0+Y2hpbGRyZW4pOworCisgICAgUHlPYmplY3RfRnJlZShteWV4dHJhKTsKIH0KIAorLyogQ29udmVuaWVuY2UgaW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIG5ldyBFbGVtZW50IG9iamVjdHMgd2l0aCB0aGUgZ2l2ZW4KKyAqIHRhZyBhbmQgYXR0cmlidXRlcy4KKyovCiBMT0NBTChQeU9iamVjdCopCi1lbGVtZW50X25ldyhQeU9iamVjdCogdGFnLCBQeU9iamVjdCogYXR0cmliKQorY3JlYXRlX25ld19lbGVtZW50KFB5T2JqZWN0KiB0YWcsIFB5T2JqZWN0KiBhdHRyaWIpCiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZjsKIAotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoRWxlbWVudE9iamVjdCwgJkVsZW1lbnRfVHlwZSk7CisgICAgc2VsZiA9IFB5T2JqZWN0X0dDX05ldyhFbGVtZW50T2JqZWN0LCAmRWxlbWVudF9UeXBlKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIHVzZSBOb25lIGZvciBlbXB0eSBkaWN0aW9uYXJpZXMgKi8KLSAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoYXR0cmliKSAmJiAhUHlEaWN0X1NpemUoYXR0cmliKSkKLSAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKLQogICAgIHNlbGYtPmV4dHJhID0gTlVMTDsKIAotICAgIGlmIChhdHRyaWIgIT0gUHlfTm9uZSkgewotCi0gICAgICAgIGlmIChlbGVtZW50X25ld19leHRyYShzZWxmLCBhdHRyaWIpIDwgMCkgeworICAgIGlmIChhdHRyaWIgIT0gUHlfTm9uZSAmJiAhaXNfZW1wdHlfZGljdChhdHRyaWIpKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgYXR0cmliKSA8IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KLSAgICAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCA9IDA7Ci0gICAgICAgIHNlbGYtPmV4dHJhLT5hbGxvY2F0ZWQgPSBTVEFUSUNfQ0hJTERSRU47Ci0gICAgICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbiA9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW47Ci0KICAgICB9CiAKICAgICBQeV9JTkNSRUYodGFnKTsKQEAgLTMzMSwxMSArMzE5LDEzMSBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBzZWxmLT50YWlsID0gUHlfTm9uZTsKIAotICAgIEFMTE9DKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImNyZWF0ZSBlbGVtZW50Iik7CisgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOwogCisgICAgQUxMT0Moc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAiY3JlYXRlIGVsZW1lbnQiKTsKKyAgICBQeU9iamVjdF9HQ19UcmFjayhzZWxmKTsKICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEVsZW1lbnRPYmplY3QgKmUgPSAoRWxlbWVudE9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChlICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBlLT50YWcgPSBQeV9Ob25lOworCisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgZS0+dGV4dCA9IFB5X05vbmU7CisKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBlLT50YWlsID0gUHlfTm9uZTsKKworICAgICAgICBlLT5leHRyYSA9IE5VTEw7CisgICAgICAgIGUtPndlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWU7Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyB0aGUgYXR0cmliIGRpY3Rpb25hcnkgZnJvbSBhIGtleXdvcmRzIGRpY3QuCisgKiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHNvbWUgY29uc3RydWN0b3JzL2Z1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB0aGF0IGNhbgorICogZWl0aGVyIGFjY2VwdCBhdHRyaWIgYXMgYSBrZXl3b3JkIGFyZ3VtZW50IG9yIGFsbCBhdHRyaWJ1dGVzIHNwbGFzaGVkIAorICogZGlyZWN0bHkgaW50byAqa3dkcy4KKyAqIElmIHRoZXJlIGlzIG5vICdhdHRyaWInIGtleXdvcmQsIHJldHVybiBhbiBlbXB0eSBkaWN0LgorICovCitzdGF0aWMgUHlPYmplY3QqCitnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKmF0dHJpYl9zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiYXR0cmliIik7CisgICAgUHlPYmplY3QgKmF0dHJpYiA9IFB5RGljdF9HZXRJdGVtKGt3ZHMsIGF0dHJpYl9zdHIpOworCisgICAgaWYgKGF0dHJpYikgeworICAgICAgICAvKiBJZiBhdHRyaWIgd2FzIGZvdW5kIGluIGt3ZHMsIGNvcHkgaXRzIHZhbHVlIGFuZCByZW1vdmUgaXQgZnJvbQorICAgICAgICAgKiBrd2RzCisgICAgICAgICAqLworICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhhdHRyaWIpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliX3N0cik7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXR0cmliIG11c3QgYmUgZGljdCwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhdHRyaWIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CisgICAgICAgIFB5RGljdF9EZWxJdGVtKGt3ZHMsIGF0dHJpYl9zdHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoYXR0cmliX3N0cik7CisKKyAgICBpZiAoYXR0cmliKQorICAgICAgICBQeURpY3RfVXBkYXRlKGF0dHJpYiwga3dkcyk7CisgICAgcmV0dXJuIGF0dHJpYjsKK30KKworc3RhdGljIGludAorZWxlbWVudF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5T2JqZWN0ICphdHRyaWIgPSBOVUxMOworICAgIEVsZW1lbnRPYmplY3QgKnNlbGZfZWxlbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPITpFbGVtZW50IiwgJnRhZywgJlB5RGljdF9UeXBlLCAmYXR0cmliKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGF0dHJpYikgeworICAgICAgICAvKiBhdHRyaWIgcGFzc2VkIGFzIHBvc2l0aW9uYWwgYXJnICovCisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoa3dkcykgeworICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGt3ZHMpIHsKKyAgICAgICAgLyogaGF2ZSBrZXl3b3JkcyBhcmdzICovCisgICAgICAgIGF0dHJpYiA9IGdldF9hdHRyaWJfZnJvbV9rZXl3b3Jkcyhrd2RzKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbm8gYXR0cmliIGFyZywgbm8ga3dkcywgc28gbm8gYXR0cmlidXRlcyAqLworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGF0dHJpYiA9IFB5X05vbmU7CisgICAgfQorCisgICAgc2VsZl9lbGVtID0gKEVsZW1lbnRPYmplY3QgKilzZWxmOworCisgICAgaWYgKGF0dHJpYiAhPSBQeV9Ob25lICYmICFpc19lbXB0eV9kaWN0KGF0dHJpYikpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmX2VsZW0sIGF0dHJpYikgPCAwKSB7CisgICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZl9lbGVtKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFdlIG93biBhIHJlZmVyZW5jZSB0byBhdHRyaWIgaGVyZSBhbmQgaXQncyBubyBsb25nZXIgbmVlZGVkLiAqLworICAgIFB5X0RFQ1JFRihhdHRyaWIpOworCisgICAgLyogUmVwbGFjZSB0aGUgb2JqZWN0cyBhbHJlYWR5IHBvaW50ZWQgdG8gYnkgdGFnLCB0ZXh0IGFuZCB0YWlsLiAqLworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFnOworICAgIHNlbGZfZWxlbS0+dGFnID0gdGFnOworICAgIFB5X0lOQ1JFRih0YWcpOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgdG1wID0gc2VsZl9lbGVtLT50ZXh0OworICAgIHNlbGZfZWxlbS0+dGV4dCA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSih0bXApKTsKKworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFpbDsKKyAgICBzZWxmX2VsZW0tPnRhaWwgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkoodG1wKSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogTE9DQUwoaW50KQogZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgaW50IGV4dHJhKQogewpAQCAtMzQ2LDcgKzQ1NCw3IEBACiAgICAgICAgZWxlbWVudHMuICBzZXQgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgaWYgYWxsb2NhdGlvbiBmYWlsZWQgKi8KIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOwogCkBAIC0zNTQsMTQgKzQ2MiwxNCBAQAogICAgICAgICAvKiB1c2UgUHl0aG9uIDIuNCdzIGxpc3QgZ3Jvd3RoIHN0cmF0ZWd5ICovCiAgICAgICAgIHNpemUgPSAoc2l6ZSA+PiAzKSArIChzaXplIDwgOSA/IDMgOiA2KSArIHNpemU7CiAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyICJjaGlsZHJlbiIKLSAgICAgICAgICogd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gCi0gICAgICAgICAqIEFsdGhvdWdoIGl0J3MgYSBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0byAKKyAgICAgICAgICogd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4KKyAgICAgICAgICogQWx0aG91Z2ggaXQncyBhIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvCiAgICAgICAgICAqIGJlIHNhZmUuCiAgICAgICAgICAqLwogICAgICAgICBzaXplID0gc2l6ZSA/IHNpemUgOiAxOwogICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pIHsKICAgICAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyCi0gICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEgCisgICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEKICAgICAgICAgICAgICAqIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvIGJlIHNhZmUuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNoaWxkcmVuID0gUHlPYmplY3RfUmVhbGxvYyhzZWxmLT5leHRyYS0+Y2hpbGRyZW4sCkBAIC00NjQsMzYgKzU3Miw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCi17Ci0gICAgUHlPYmplY3QqIGVsZW07Ci0KLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBhdHRyaWIgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPITpFbGVtZW50IiwgJnRhZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmYXR0cmliKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoYXR0cmliIHx8IGt3KSB7Ci0gICAgICAgIGF0dHJpYiA9IChhdHRyaWIpID8gUHlEaWN0X0NvcHkoYXR0cmliKSA6IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFhdHRyaWIpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGt3KQotICAgICAgICAgICAgUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3KTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIGF0dHJpYiA9IFB5X05vbmU7Ci0gICAgfQotCi0gICAgZWxlbSA9IGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKLQotICAgIFB5X0RFQ1JFRihhdHRyaWIpOwotCi0gICAgcmV0dXJuIGVsZW07Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXN1YmVsZW1lbnQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCitzdWJlbGVtZW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QqIGVsZW07CiAKQEAgLTUwNSwxOCArNTg0LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGF0dHJpYiB8fCBrdykgewotICAgICAgICBhdHRyaWIgPSAoYXR0cmliKSA/IFB5RGljdF9Db3B5KGF0dHJpYikgOiBQeURpY3RfTmV3KCk7CisgICAgaWYgKGF0dHJpYikgeworICAgICAgICAvKiBhdHRyaWIgcGFzc2VkIGFzIHBvc2l0aW9uYWwgYXJnICovCisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9Db3B5KGF0dHJpYik7CiAgICAgICAgIGlmICghYXR0cmliKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChrdykKLSAgICAgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrdyk7CisgICAgICAgIGlmIChrd2RzKSB7CisgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3ZHMpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrd2RzKSB7CisgICAgICAgIC8qIGhhdmUga2V5d29yZCBhcmdzICovCisgICAgICAgIGF0dHJpYiA9IGdldF9hdHRyaWJfZnJvbV9rZXl3b3Jkcyhrd2RzKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgeworICAgICAgICAvKiBubyBhdHRyaWIgYXJnLCBubyBrd2RzLCBzbyBubyBhdHRyaWJ1dGUgKi8KICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7CisgICAgZWxlbSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIApAQCAtNTI4LDIwICs2MTcsNjUgQEAKICAgICByZXR1cm4gZWxlbTsKIH0KIAorc3RhdGljIGludAorZWxlbWVudF9nY190cmF2ZXJzZShFbGVtZW50T2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT50YWcpOworICAgIFB5X1ZJU0lUKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKKyAgICBQeV9WSVNJVChKT0lOX09CSihzZWxmLT50YWlsKSk7CisKKyAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIFB5X1ZJU0lUKHNlbGYtPmV4dHJhLT5hdHRyaWIpOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyArK2kpCisgICAgICAgICAgICBQeV9WSVNJVChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0pOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF9nY19jbGVhcihFbGVtZW50T2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPnRhZyk7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGlzIGxpa2UgUHlfQ0xFQVIgZm9yIHNlbGYtPnRleHQgYW5kIHNlbGYtPnRhaWwsIGJ1dAorICAgICAqIHdyaXR0ZW4gZXhwbGljaXRpbHkgYmVjYXVzZSB0aGUgcmVhbCBwb2ludGVycyBoaWRlIGJlaGluZCBhY2Nlc3MKKyAgICAgKiBtYWNyb3MuCisgICAgKi8KKyAgICBpZiAoc2VsZi0+dGV4dCkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gSk9JTl9PQkooc2VsZi0+dGV4dCk7CisgICAgICAgIHNlbGYtPnRleHQgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+dGFpbCkgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gSk9JTl9PQkooc2VsZi0+dGFpbCk7CisgICAgICAgIHNlbGYtPnRhaWwgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICAvKiBBZnRlciBkcm9wcGluZyBhbGwgcmVmZXJlbmNlcyBmcm9tIGV4dHJhLCBpdCdzIG5vIGxvbmdlciB2YWxpZCBhbnl3YXksCisgICAgICogc28gZnVsbHkgZGVhbGxvY2F0ZSBpdC4KKyAgICAqLworICAgIGRlYWxsb2NfZXh0cmEoc2VsZik7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkCiBlbGVtZW50X2RlYWxsb2MoRWxlbWVudE9iamVjdCogc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfZGVhbGxvY19leHRyYShzZWxmKTsKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOwogCi0gICAgLyogZGlzY2FyZCBhdHRyaWJ1dGVzICovCi0gICAgUHlfREVDUkVGKHNlbGYtPnRhZyk7Ci0gICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKLSAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQorICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKKworICAgIC8qIGVsZW1lbnRfZ2NfY2xlYXIgY2xlYXJzIGFsbCByZWZlcmVuY2VzIGFuZCBkZWFsbG9jYXRlcyBleHRyYQorICAgICovCisgICAgZWxlbWVudF9nY19jbGVhcihzZWxmKTsKIAogICAgIFJFTEVBU0Uoc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAiZGVzdHJveSBlbGVtZW50Iik7Ci0KLSAgICBQeU9iamVjdF9EZWwoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTU2MSwxNSArNjk1LDEyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfY2xlYXIoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2NsZWFybWV0aG9kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmNsZWFyIikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIGVsZW1lbnRfZGVhbGxvY19leHRyYShzZWxmKTsKLSAgICAgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwotICAgIH0KKyAgICBkZWFsbG9jX2V4dHJhKHNlbGYpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7CkBAIC01OTEsNyArNzIyLDcgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpfX2NvcHlfXyIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGVsZW1lbnRfbmV3KAorICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGNyZWF0ZV9uZXdfZWxlbWVudCgKICAgICAgICAgc2VsZi0+dGFnLCAoc2VsZi0+ZXh0cmEpID8gc2VsZi0+ZXh0cmEtPmF0dHJpYiA6IFB5X05vbmUKICAgICAgICAgKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC02MDYsNyArNzM3LDcgQEAKICAgICBQeV9JTkNSRUYoSk9JTl9PQkooZWxlbWVudC0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChlbGVtZW50X3Jlc2l6ZShlbGVtZW50LCBzZWxmLT5leHRyYS0+bGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjE4LDcgKzc0OSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBlbGVtZW50LT5leHRyYS0+bGVuZ3RoID0gc2VsZi0+ZXh0cmEtPmxlbmd0aDsKLSAgICAgICAgCisKICAgICB9CiAKICAgICByZXR1cm4gKFB5T2JqZWN0KikgZWxlbWVudDsKQEAgLTY1NCwxNCArNzg1LDE0IEBACiAgICAgICAgIGF0dHJpYiA9IFB5X05vbmU7CiAgICAgfQogCi0gICAgZWxlbWVudCA9IChFbGVtZW50T2JqZWN0KikgZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYodGFnKTsKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCisKICAgICB0ZXh0ID0gZGVlcGNvcHkoSk9JTl9PQkooc2VsZi0+dGV4dCksIG1lbW8pOwogICAgIGlmICghdGV4dCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTY3NSw3ICs4MDYsNyBAQAogICAgIGVsZW1lbnQtPnRhaWwgPSBKT0lOX1NFVCh0YWlsLCBKT0lOX0dFVChzZWxmLT50YWlsKSk7CiAKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgCisKICAgICAgICAgaWYgKGVsZW1lbnRfcmVzaXplKGVsZW1lbnQsIHNlbGYtPmV4dHJhLT5sZW5ndGgpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTY4OSw3ICs4MjAsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC0+ZXh0cmEtPmxlbmd0aCA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7Ci0gICAgICAgIAorCiAgICAgfQogCiAgICAgLyogYWRkIG9iamVjdCB0byBtZW1vIGRpY3Rpb25hcnkgKHNvIGRlZXBjb3B5IHdvbid0IHZpc2l0IGl0IGFnYWluKSAqLwpAQCAtNzExLDYgKzg0MiwxOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3NpemVvZihQeU9iamVjdCogX3NlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEVsZW1lbnRPYmplY3QgKnNlbGYgPSAoRWxlbWVudE9iamVjdCopX3NlbGY7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBzaXplb2YoRWxlbWVudE9iamVjdCk7CisgICAgaWYgKHNlbGYtPmV4dHJhKSB7CisgICAgICAgIHJlc3VsdCArPSBzaXplb2YoRWxlbWVudE9iamVjdEV4dHJhKTsKKyAgICAgICAgaWYgKHNlbGYtPmV4dHJhLT5jaGlsZHJlbiAhPSBzZWxmLT5leHRyYS0+X2NoaWxkcmVuKQorICAgICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihQeU9iamVjdCopICogc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCiBMT0NBTChpbnQpCiBjaGVja3BhdGgoUHlPYmplY3QqIHRhZykKIHsKQEAgLTcyMywxMyArODY3LDE2IEBACiAgICAgKGNoID09ICcvJyB8fCBjaCA9PSAnKicgfHwgY2ggPT0gJ1snIHx8IGNoID09ICdAJyB8fCBjaCA9PSAnLicpCiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRhZykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRhZyk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX1NJWkUodGFnKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAocFtpXSA9PSAneycpCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGFnKTsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRhZyk7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQodGFnKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICBpZiAoY2ggPT0gJ3snKQogICAgICAgICAgICAgICAgIGNoZWNrID0gMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHBbaV0gPT0gJ30nKQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ30nKQogICAgICAgICAgICAgICAgIGNoZWNrID0gMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrICYmIFBBVEhDSEFSKHBbaV0pKQorICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sgJiYgUEFUSENIQVIoY2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtNzcyLDYgKzkxOSwxNSBAQAogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOwogICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewogICAgICAgICBQeU9iamVjdCogZWxlbWVudCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzZXEsIGkpOworICAgICAgICBpZiAoIVB5T2JqZWN0X0lzSW5zdGFuY2UoZWxlbWVudCwgKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gRWxlbWVudCwgbm90IFwiJS4yMDBzXCIiLAorICAgICAgICAgICAgICAgIFB5X1RZUEUoZWxlbWVudCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoZWxlbWVudF9hZGRfc3ViZWxlbWVudChzZWxmLCBlbGVtZW50KSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03ODQsMjMgKzk0MCwyNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86ZmluZCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmQiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CisgICAgfQogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIAorCiAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaXRlbSA9IHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpXTsKICAgICAgICAgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSAmJgpAQCAtODE0LDE5ICs5NzQsMjIgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK2VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBpOwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPTzpmaW5kdGV4dCIsICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCisgICAgX1B5X0lERU5USUZJRVIoZmluZHRleHQpOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POmZpbmR0ZXh0Iiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICJmaW5kdGV4dCIsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kdGV4dCwgIk9PT08iLCBzZWxmLCB0YWcsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CkBAIC04NTEsMjAgKzEwMTQsMjQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCogb3V0OwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86ZmluZGFsbCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kYWxsIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmRhbGwiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kYWxsKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmRhbGwsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CisgICAgfQogCiAgICAgb3V0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAoIW91dCkKQEAgLTg4OCwxNSArMTA1NSwxOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86aXRlcmZpbmQiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgX1B5X0lERU5USUZJRVIoaXRlcmZpbmQpOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOml0ZXJmaW5kIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiaXRlcmZpbmQiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgKTsKIH0KIApAQCAtOTQ5LDY3ICsxMTIwLDMyIEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCk7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIAogICAgIFB5T2JqZWN0KiB0YWcgPSBQeV9Ob25lOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86aXRlciIsICZ0YWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghZWxlbWVudHRyZWVfaXRlcl9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgIml0ZXIgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKHNlbGYpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIHNlbGYpOwotICAgIFB5X0lOQ1JFRih0YWcpOyAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCAoUHlPYmplY3QqKSB0YWcpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9pdGVyX29iaiwgYXJncyk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjcmVhdGVfZWxlbWVudGl0ZXIoc2VsZiwgdGFnLCAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlcnRleHQiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIWVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiaXRlcnRleHQgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKHNlbGYpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIHNlbGYpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9pdGVydGV4dF9vYmosIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIFB5X05vbmUsIDEpOwogfQogCisKIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfZ2V0aXRlbShQeU9iamVjdCogc2VsZl8sIFB5X3NzaXplX3QgaW5kZXgpCiB7CkBAIC0xMDM5LDcgKzExNzUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGluZGV4ICs9IHNlbGYtPmV4dHJhLT5sZW5ndGg7CkBAIC0xMTEwLDcgKzEyNDYsNyBAQAogICAgIGlmICghYXR0cmliKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7CisgICAgZWxlbSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIApAQCAtMTExOCwzMSArMTI1NCw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfcmVkdWNlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOl9fcmVkdWNlX18iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBIYWNrIGFsZXJ0OiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHdvcmsgYXJvdW5kIGEgX19jb3B5X18KLSAgICAgICBwcm9ibGVtIG9uIGNlcnRhaW4gMi4zIGFuZCAyLjQgdmVyc2lvbnMuICBUbyBzYXZlIHRpbWUgYW5kCi0gICAgICAgc2ltcGxpZnkgdGhlIGNvZGUsIHdlIGNyZWF0ZSB0aGUgY29weSBpbiBoZXJlLCBhbmQgdXNlIGEgZHVtbXkKLSAgICAgICBjb3B5ZWxlbWVudCBoZWxwZXIgdG8gdHJpY2sgdGhlIGNvcHkgbW9kdWxlIGludG8gZG9pbmcgdGhlCi0gICAgICAgcmlnaHQgdGhpbmcuICovCi0KLSAgICBpZiAoIWVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiY29weWVsZW1lbnQgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTyhOKSIsIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaiwgZWxlbWVudF9jb3B5KHNlbGYsIGFyZ3MpCi0gICAgICAgICk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIGludCBpOwpAQCAtMTE4OSw3ICsxMzAwLDEwIEBACiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X3JlcHIoRWxlbWVudE9iamVjdCogc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxFbGVtZW50ICVSIGF0ICVwPiIsIHNlbGYtPnRhZywgc2VsZik7CisgICAgaWYgKHNlbGYtPnRhZykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCAlUiBhdCAlcD4iLCBzZWxmLT50YWcsIHNlbGYpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCBhdCAlcD4iLCBzZWxmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTIwMyw3ICsxMzE3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgYXR0cmliID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwogICAgIGlmICghYXR0cmliKQpAQCAtMTI1MCwxMyArMTM2NCw4IEBACiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZiA9IChFbGVtZW50T2JqZWN0Kikgc2VsZl87CiAKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgIGlmIChQeUludF9DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgbG9uZyBpID0gUHlJbnRfQXNMb25nKGl0ZW0pOwotI2Vsc2UKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7Ci0jZW5kaWYKIAogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMDcsMTMgKzE0MTYsOCBAQAogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGYgPSAoRWxlbWVudE9iamVjdCopIHNlbGZfOwogCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICBpZiAoUHlJbnRfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIGxvbmcgaSA9IFB5SW50X0FzTG9uZyhpdGVtKTsKLSNlbHNlCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwotI2VuZGlmCiAKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTMyOSw3ICsxNDMzLDcgQEAKICAgICAgICAgUHlPYmplY3QqIHNlcSA9IE5VTEw7CiAKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLAogICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGgsCkBAIC0xMzM3LDkgKzE0NDEsNzQgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgbmV3bGVuID0gMDsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIERlbGV0ZSBzbGljZSAqLworICAgICAgICAgICAgc2l6ZV90IGN1cjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKHNsaWNlbGVuIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIC8qIFNpbmNlIHdlJ3JlIGRlbGV0aW5nLCB0aGUgZGlyZWN0aW9uIG9mIHRoZSByYW5nZSBkb2Vzbid0IG1hdHRlciwKKyAgICAgICAgICAgICAqIHNvIGZvciBzaW1wbGljaXR5IG1ha2UgaXQgYWx3YXlzIGFzY2VuZGluZy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoc3RlcCA8IDApIHsKKyAgICAgICAgICAgICAgICBzdG9wID0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RvcCArIHN0ZXAgKiAoc2xpY2VsZW4gLSAxKSAtIDE7CisgICAgICAgICAgICAgICAgc3RlcCA9IC1zdGVwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnQoKHNpemVfdClzbGljZWxlbiA8PSBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICAgICAgICAgIC8qIHJlY3ljbGUgaXMgYSBsaXN0IHRoYXQgd2lsbCBjb250YWluIGFsbCB0aGUgY2hpbGRyZW4KKyAgICAgICAgICAgICAqIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIShyZWN5Y2xlID0gUHlMaXN0X05ldyhzbGljZWxlbikpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFRoaXMgbG9vcCB3YWxrcyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4gdGhhdCBoYXZlIHRvIGJlIGRlbGV0ZWQsCisgICAgICAgICAgICAgKiB3aXRoIGN1ciBwb2ludGluZyBhdCB0aGVtLiBudW1fbW92ZWQgaXMgdGhlIGFtb3VudCBvZiBjaGlsZHJlbgorICAgICAgICAgICAgICogdW50aWwgdGhlIG5leHQgZGVsZXRlZCBjaGlsZCB0aGF0IGhhdmUgdG8gYmUgInNoaWZ0ZWQgZG93biIgdG8KKyAgICAgICAgICAgICAqIG9jY3VweSB0aGUgZGVsZXRlZCdzIHBsYWNlcy4KKyAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpbiB0aGUgaXRoIGl0ZXJhdGlvbiwgc2hpZnRpbmcgaXMgZG9uZSBpK2kgcGxhY2VzIGRvd24KKyAgICAgICAgICAgICAqIGJlY2F1c2UgaSBjaGlsZHJlbiB3ZXJlIGFscmVhZHkgcmVtb3ZlZC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgY3VyIDwgKHNpemVfdClzdG9wOyBjdXIgKz0gc3RlcCwgKytpKSB7CisgICAgICAgICAgICAgICAgLyogQ29tcHV0ZSBob3cgbWFueSBjaGlsZHJlbiBoYXZlIHRvIGJlIG1vdmVkLCBjbGlwcGluZyBhdCB0aGUKKyAgICAgICAgICAgICAgICAgKiBsaXN0IGVuZC4KKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbnVtX21vdmVkID0gc3RlcCAtIDE7CisgICAgICAgICAgICAgICAgaWYgKGN1ciArIHN0ZXAgPj0gKHNpemVfdClzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIG51bV9tb3ZlZCA9IHNlbGYtPmV4dHJhLT5sZW5ndGggLSBjdXIgLSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShyZWN5Y2xlLCBpLCBzZWxmLT5leHRyYS0+Y2hpbGRyZW5bY3VyXSk7CisKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgLSBpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgKyAxLAorICAgICAgICAgICAgICAgICAgICBudW1fbW92ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBMZWZ0b3ZlciAidGFpbCIgYWZ0ZXIgdGhlIGxhc3QgcmVtb3ZlZCBjaGlsZCAqLworICAgICAgICAgICAgY3VyID0gc3RhcnQgKyAoc2l6ZV90KXNsaWNlbGVuICogc3RlcDsKKyAgICAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KXNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgLSBzbGljZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyLAorICAgICAgICAgICAgICAgICAgICAoc2VsZi0+ZXh0cmEtPmxlbmd0aCAtIGN1cikgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoIC09IHNsaWNlbGVuOworCisgICAgICAgICAgICAvKiBEaXNjYXJkIHRoZSByZWN5Y2xlIGxpc3Qgd2l0aCBhbGwgdGhlIGRlbGV0ZWQgc3ViLWVsZW1lbnRzICovCisgICAgICAgICAgICBQeV9YREVDUkVGKHJlY3ljbGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBBIG5ldyBzbGljZSBpcyBhY3R1YWxseSBiZWluZyBhc3NpZ25lZCAqLwogICAgICAgICAgICAgc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHZhbHVlLCAiIik7CiAgICAgICAgICAgICBpZiAoIXNlcSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTEzNTQsMTkgKzE1MjMsMTMgQEAKICAgICAgICAgaWYgKHN0ZXAgIT0gIDEgJiYgbmV3bGVuICE9IHNsaWNlbGVuKQogICAgICAgICB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgICAgICAgICAgICAgICJhdHRlbXB0IHRvIGFzc2lnbiBzZXF1ZW5jZSBvZiBzaXplICVkICIKLSAgICAgICAgICAgICAgICAidG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlZCIsCi0jZWxzZQogICAgICAgICAgICAgICAgICJhdHRlbXB0IHRvIGFzc2lnbiBzZXF1ZW5jZSBvZiBzaXplICV6ZCAiCiAgICAgICAgICAgICAgICAgInRvIGV4dGVuZGVkIHNsaWNlIG9mIHNpemUgJXpkIiwKLSNlbmRpZgogICAgICAgICAgICAgICAgIG5ld2xlbiwgc2xpY2VsZW4KICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLQogICAgICAgICAvKiBSZXNpemUgYmVmb3JlIGNyZWF0aW5nIHRoZSByZWN5Y2xlIGJpbiwgdG8gcHJldmVudCByZWZsZWFrcy4gKi8KICAgICAgICAgaWYgKG5ld2xlbiA+IHNsaWNlbGVuKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoc2VsZiwgbmV3bGVuIC0gc2xpY2VsZW4pIDwgMCkgewpAQCAtMTQzMSwxNCArMTU5NCwxNCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgZWxlbWVudF9tZXRob2RzW10gPSB7CiAKLSAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NsZWFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY2xlYXJtZXRob2QsIE1FVEhfVkFSQVJHU30sCiAKICAgICB7ImdldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCisgICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogCiAgICAgeyJhcHBlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfYXBwZW5kLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2V4dGVuZCwgTUVUSF9WQVJBUkdTfSwKQEAgLTE0NDcsNyArMTYxMCw3IEBACiAKICAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfSwKICAgICB7Iml0ZXJ0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJ0ZXh0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHU30sCisgICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAKICAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9WQVJBUkdTfSwKQEAgLTE0NTksMTggKzE2MjIsNyBAQAogCiAgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jb3B5LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2RlZXBjb3B5LCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgLyogU29tZSAyLjMgYW5kIDIuNCB2ZXJzaW9ucyBkbyBub3QgaGFuZGxlIHRoZSBfX2NvcHlfXyBtZXRob2Qgb24KLSAgICAgICBDIG9iamVjdHMgY29ycmVjdGx5LCBzbyB3ZSBoYXZlIHRvIGZha2UgaXQgdXNpbmcgYSBfX3JlZHVjZV9fLQotICAgICAgIGJhc2VkIGhhY2sgKHNlZSB0aGUgZWxlbWVudF9yZWR1Y2UgaW1wbGVtZW50YXRpb24gYWJvdmUgZm9yCi0gICAgICAgZGV0YWlscykuICovCi0KLSAgICAvKiBUaGUgYmVoYXZpb3VyIGhhcyBiZWVuIGNoYW5nZWQgaW4gMi4zLjUgYW5kIDIuNC4xLCBzbyB3ZSdyZQotICAgICAgIHVzaW5nIGEgcnVudGltZSB0ZXN0IHRvIGZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBmYWtlIHRoaW5ncwotICAgICAgIG9yIG5vdyAoc2VlIHRoZSBpbml0IGNvZGUgYmVsb3cpLiAgVGhlIGZvbGxvd2luZyBlbnRyeSBpcwotICAgICAgIGVuYWJsZWQgb25seSBpZiB0aGUgaGFjayBpcyBuZWVkZWQuICovCi0KLSAgICB7IiFfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3JlZHVjZSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Il9fc2l6ZW9mX18iLCBlbGVtZW50X3NpemVvZiwgTUVUSF9OT0FSR1N9LAogCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMTQ4Myw3ICsxNjM1LDcgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCiAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotICAgIAorCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE1MTAsNyArMTY2Miw3IEBACiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogICAgICAgICByZXMgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7CiAgICAgfQogCkBAIC0xNTIxLDE2ICsxNjczLDE1IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIGludAotZWxlbWVudF9zZXRhdHRyKEVsZW1lbnRPYmplY3QqIHNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIFB5T2JqZWN0KiB2YWx1ZSkKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfc2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmosIFB5T2JqZWN0KiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICJjYW4ndCBkZWxldGUgZWxlbWVudCBhdHRyaWJ1dGVzIgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBjaGFyICpuYW1lID0gIiI7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKKyAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7CisKKyAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnRhZyk7CkBAIC0xNTQ2LDE2ICsxNjk3LDE2IEBACiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKICAgICAgICAgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9IHZhbHVlOwogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIGVsZW1lbnRfYXNfc2VxdWVuY2UgPSB7CkBAIC0xNTc4LDU2ICsxNzI5LDMzMSBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJFbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAoc2V0YXR0cmZ1bmMpZWxlbWVudF9zZXRhdHRyLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJmVsZW1lbnRfYXNfbWFwcGluZywgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAvKiB0cF9jYWxsICovCi0gICAgMCwgLyogdHBfc3RyICovCi0gICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgZWxlbWVudF9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKWVsZW1lbnRfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmZWxlbWVudF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpZWxlbWVudF9nY190cmF2ZXJzZSwgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpZWxlbWVudF9nY19jbGVhciwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKEVsZW1lbnRPYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgZWxlbWVudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpZWxlbWVudF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBlbGVtZW50X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBFbGVtZW50IGl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEVsZW1lbnRJdGVyT2JqZWN0IHJlcHJlc2VudHMgdGhlIGl0ZXJhdGlvbiBzdGF0ZSBvdmVyIGFuIFhNTCBlbGVtZW50IGluCisgKiBwcmUtb3JkZXIgdHJhdmVyc2FsLiBUbyBrZWVwIHRyYWNrIG9mIHdoaWNoIHN1Yi1lbGVtZW50IHNob3VsZCBiZSByZXR1cm5lZAorICogbmV4dCwgYSBzdGFjayBvZiBwYXJlbnRzIGlzIG1haW50YWluZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBzdGFjay1iYXNlZAorICogaXRlcmF0aXZlIHByZS1vcmRlciB0cmF2ZXJzYWwgb2YgYSB0cmVlLgorICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBzaW5nbGUtbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgcGFyZW50X3N0YWNrLgorICogRWFjaCBzdGFjayBub2RlIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgorICogdGhlIGN1cnJlbnQgb25lIGlzIGV4aGF1c3RlZCwgYW5kIHRoZSBuZXh0IGNoaWxkIHRvIGV4YW1pbmUgaW4gdGhhdCBwYXJlbnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmVudExvY2F0b3JfdCB7CisgICAgRWxlbWVudE9iamVjdCAqcGFyZW50OworICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7CisgICAgc3RydWN0IFBhcmVudExvY2F0b3JfdCAqbmV4dDsKK30gUGFyZW50TG9jYXRvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2s7CisgICAgRWxlbWVudE9iamVjdCAqcm9vdF9lbGVtZW50OworICAgIFB5T2JqZWN0ICpzb3VnaHRfdGFnOworICAgIGludCByb290X2RvbmU7CisgICAgaW50IGdldHRleHQ7Cit9IEVsZW1lbnRJdGVyT2JqZWN0OworCisKK3N0YXRpYyB2b2lkCitlbGVtZW50aXRlcl9kZWFsbG9jKEVsZW1lbnRJdGVyT2JqZWN0ICppdCkKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICB3aGlsZSAocCkgeworICAgICAgICBQYXJlbnRMb2NhdG9yICp0ZW1wID0gcDsKKyAgICAgICAgUHlfWERFQ1JFRihwLT5wYXJlbnQpOworICAgICAgICBwID0gcC0+bmV4dDsKKyAgICAgICAgUHlPYmplY3RfRnJlZSh0ZW1wKTsKKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGl0LT5zb3VnaHRfdGFnKTsKKyAgICBQeV9YREVDUkVGKGl0LT5yb290X2VsZW1lbnQpOworCisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhpdCk7CisgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKK30KKworc3RhdGljIGludAorZWxlbWVudGl0ZXJfdHJhdmVyc2UoRWxlbWVudEl0ZXJPYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICB3aGlsZSAocCkgeworICAgICAgICBQeV9WSVNJVChwLT5wYXJlbnQpOworICAgICAgICBwID0gcC0+bmV4dDsKKyAgICB9CisKKyAgICBQeV9WSVNJVChpdC0+cm9vdF9lbGVtZW50KTsKKyAgICBQeV9WSVNJVChpdC0+c291Z2h0X3RhZyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZWxlbWVudGl0ZXJfbmV4dC4gQWRkIGEgbmV3IHBhcmVudCB0byB0aGUgcGFyZW50IHN0YWNrLgorICovCitzdGF0aWMgUGFyZW50TG9jYXRvciAqCitwYXJlbnRfc3RhY2tfcHVzaF9uZXcoUGFyZW50TG9jYXRvciAqc3RhY2ssIEVsZW1lbnRPYmplY3QgKnBhcmVudCkKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpuZXdfbm9kZSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGlmIChuZXdfbm9kZSkgeworICAgICAgICBuZXdfbm9kZS0+cGFyZW50ID0gcGFyZW50OworICAgICAgICBQeV9JTkNSRUYocGFyZW50KTsKKyAgICAgICAgbmV3X25vZGUtPmNoaWxkX2luZGV4ID0gMDsKKyAgICAgICAgbmV3X25vZGUtPm5leHQgPSBzdGFjazsKKyAgICB9CisgICAgcmV0dXJuIG5ld19ub2RlOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudGl0ZXJfbmV4dChFbGVtZW50SXRlck9iamVjdCAqaXQpCit7CisgICAgLyogU3ViLWVsZW1lbnQgaXRlcmF0b3IuCisgICAgICogCisgICAgICogQSBzaG9ydCBub3RlIG9uIGdldHRleHQ6IHRoaXMgZnVuY3Rpb24gc2VydmVzIGJvdGggdGhlIGl0ZXIoKSBhbmQKKyAgICAgKiBpdGVydGV4dCgpIG1ldGhvZHMgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIGEgZmV3CisgICAgICogc21hbGwgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGVzZSBpdGVyYXRpb25zIHdvcmsuIE5hbWVseToKKyAgICAgKiAgIC0gaXRlcnRleHQoKSBvbmx5IHlpZWxkcyB0ZXh0IGZyb20gbm9kZXMgdGhhdCBoYXZlIGl0LCBhbmQgY29udGludWVzCisgICAgICogICAgIGl0ZXJhdGluZyB3aGVuIGEgbm9kZSBkb2Vzbid0IGhhdmUgdGV4dCAoc28gaXQgZG9lc24ndCByZXR1cm4gYW55CisgICAgICogICAgIG5vZGUgbGlrZSBpdGVyKCkpCisgICAgICogICAtIGl0ZXJ0ZXh0KCkgYWxzbyBoYXMgdG8gaGFuZGxlIHRhaWwsIGFmdGVyIGZpbmlzaGluZyB3aXRoIGFsbCB0aGUKKyAgICAgKiAgICAgY2hpbGRyZW4gb2YgYSBub2RlLgorICAgICAqLworICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7CisgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCisgICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIFRoZSByb290X2RvbmUgZmxhZyBnaXZlcyB1cyBpbmRpY2F0aW9uCisgICAgICAgICAqIHdoZXRoZXIgd2UndmUganVzdCBzdGFydGVkIGl0ZXJhdGluZyAoc28gcm9vdF9kb25lIGlzIDApLCBpbiB3aGljaAorICAgICAgICAgKiBjYXNlIHRoZSByb290IGlzIHJldHVybmVkLiBJZiByb290X2RvbmUgaXMgMSBhbmQgd2UncmUgaGVyZSwgdGhlCisgICAgICAgICAqIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KSB7CisgICAgICAgICAgICBpZiAoaXQtPnJvb3RfZG9uZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5yb290X2VsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpdC0+cm9vdF9kb25lID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSB8fAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPnJvb3RfZWxlbWVudC0+dGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBKT0lOX09CSihpdC0+cm9vdF9lbGVtZW50LT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9Jc1RydWUodGV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXQtPnJvb3RfZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQtPnJvb3RfZWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCisgICAgICAgICAqIHllcywgdmlzaXQgdGhlIG5leHQgY2hpbGQuIElmIG5vdCwgcG9wIHRoZSBzdGFjayBhbmQgdHJ5IGFnYWluLgorICAgICAgICAgKi8KKyAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKKyAgICAgICAgY2hpbGRfaW5kZXggPSBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleDsKKyAgICAgICAgaWYgKGN1cl9wYXJlbnQtPmV4dHJhICYmIGNoaWxkX2luZGV4IDwgY3VyX3BhcmVudC0+ZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgRWxlbWVudE9iamVjdCAqY2hpbGQgPSAoRWxlbWVudE9iamVjdCAqKQorICAgICAgICAgICAgICAgIGN1cl9wYXJlbnQtPmV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07CisgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCsrOworICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCk7CisgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IEpPSU5fT0JKKGNoaWxkLT50ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lIHx8CisgICAgICAgICAgICAgICAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNoaWxkLT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSkgPT0gMSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjaGlsZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWNoaWxkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnRhaWwgPSBpdC0+Z2V0dGV4dCA/IEpPSU5fT0JKKGN1cl9wYXJlbnQtPnRhaWwpIDogUHlfTm9uZTsgICAgICAgICAgICAKKyAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKm5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OworICAgICAgICAgICAgUHlfWERFQ1JFRihpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpOworICAgICAgICAgICAgUHlPYmplY3RfRnJlZShpdC0+cGFyZW50X3N0YWNrKTsKKyAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBuZXh0OworCisgICAgICAgICAgICAvKiBOb3RlIHRoYXQgZXh0cmEgY29uZGl0aW9uIG9uIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCBoZXJlOworICAgICAgICAgICAgICogdGhpcyBpcyBiZWNhdXNlIGl0ZXJ0ZXh0KCkgaXMgc3VwcG9zZWQgdG8gb25seSByZXR1cm4gKmlubmVyKgorICAgICAgICAgICAgICogdGV4dCwgbm90IHRleHQgZm9sbG93aW5nIHRoZSBlbGVtZW50IGl0IGJlZ2FuIGl0ZXJhdGlvbiB3aXRoLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ICYmIFB5T2JqZWN0X0lzVHJ1ZSh0YWlsKSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudEl0ZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2VsZW1lbnR0cmVlLl9lbGVtZW50X2l0ZXJhdG9yIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoRWxlbWVudEl0ZXJPYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZWxlbWVudGl0ZXJfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRpdGVyX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYyllbGVtZW50aXRlcl9uZXh0LCAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KQoreworICAgIEVsZW1lbnRJdGVyT2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqc3RhciA9IE5VTEw7CisKKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhFbGVtZW50SXRlck9iamVjdCwgJkVsZW1lbnRJdGVyX1R5cGUpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghKGl0LT5wYXJlbnRfc3RhY2sgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKSkpIHsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ID0gTlVMTDsKKyAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCA9IDA7CisgICAgaXQtPnBhcmVudF9zdGFjay0+bmV4dCA9IE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRhZykpCisgICAgICAgIHN0YXIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiKiIpOworICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFnKSkKKyAgICAgICAgc3RhciA9IFB5Qnl0ZXNfRnJvbVN0cmluZygiKiIpOworCisgICAgaWYgKHN0YXIgJiYgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHRhZywgc3RhciwgUHlfRVEpID09IDEpCisgICAgICAgIHRhZyA9IFB5X05vbmU7CisKKyAgICBQeV9YREVDUkVGKHN0YXIpOworICAgIGl0LT5zb3VnaHRfdGFnID0gdGFnOworICAgIGl0LT5yb290X2RvbmUgPSAwOworICAgIGl0LT5nZXR0ZXh0ID0gZ2V0dGV4dDsKKyAgICBpdC0+cm9vdF9lbGVtZW50ID0gc2VsZjsKKworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBQeV9JTkNSRUYodGFnKTsKKworICAgIFB5T2JqZWN0X0dDX1RyYWNrKGl0KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7Cit9CisKKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qIHRoZSB0cmVlIGJ1aWxkZXIgdHlwZSAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogCi0gICAgUHlPYmplY3QqIHJvb3Q7IC8qIHJvb3Qgbm9kZSAoZmlyc3QgY3JlYXRlZCBub2RlKSAqLworICAgIFB5T2JqZWN0ICpyb290OyAvKiByb290IG5vZGUgKGZpcnN0IGNyZWF0ZWQgbm9kZSkgKi8KIAotICAgIEVsZW1lbnRPYmplY3QqIHRoaXM7IC8qIGN1cnJlbnQgbm9kZSAqLwotICAgIEVsZW1lbnRPYmplY3QqIGxhc3Q7IC8qIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBub2RlICovCisgICAgRWxlbWVudE9iamVjdCAqdGhpczsgLyogY3VycmVudCBub2RlICovCisgICAgRWxlbWVudE9iamVjdCAqbGFzdDsgLyogbW9zdCByZWNlbnRseSBjcmVhdGVkIG5vZGUgKi8KIAotICAgIFB5T2JqZWN0KiBkYXRhOyAvKiBkYXRhIGNvbGxlY3RvciAoc3RyaW5nIG9yIGxpc3QpLCBvciBOVUxMICovCisgICAgUHlPYmplY3QgKmRhdGE7IC8qIGRhdGEgY29sbGVjdG9yIChzdHJpbmcgb3IgbGlzdCksIG9yIE5VTEwgKi8KIAotICAgIFB5T2JqZWN0KiBzdGFjazsgLyogZWxlbWVudCBzdGFjayAqLwotICAgIFB5X3NzaXplX3QgaW5kZXg7IC8qIGN1cnJlbnQgc3RhY2sgc2l6ZSAoMD1lbXB0eSkgKi8KKyAgICBQeU9iamVjdCAqc3RhY2s7IC8qIGVsZW1lbnQgc3RhY2sgKi8KKyAgICBQeV9zc2l6ZV90IGluZGV4OyAvKiBjdXJyZW50IHN0YWNrIHNpemUgKDAgbWVhbnMgZW1wdHkpICovCisKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5OwogCiAgICAgLyogZWxlbWVudCB0cmFjaW5nICovCi0gICAgUHlPYmplY3QqIGV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KLSAgICBQeU9iamVjdCogc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KLSAgICBQeU9iamVjdCogZW5kX2V2ZW50X29iajsKLSAgICBQeU9iamVjdCogc3RhcnRfbnNfZXZlbnRfb2JqOwotICAgIFB5T2JqZWN0KiBlbmRfbnNfZXZlbnRfb2JqOwotCisgICAgUHlPYmplY3QgKmV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KKyAgICBQeU9iamVjdCAqc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KKyAgICBQeU9iamVjdCAqZW5kX2V2ZW50X29iajsKKyAgICBQeU9iamVjdCAqc3RhcnRfbnNfZXZlbnRfb2JqOworICAgIFB5T2JqZWN0ICplbmRfbnNfZXZlbnRfb2JqOwogfSBUcmVlQnVpbGRlck9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBUcmVlQnVpbGRlcl9UeXBlOwpAQCAtMTYzNyw0OCArMjA2Myw3MCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCiAKLUxPQ0FMKFB5T2JqZWN0KikKLXRyZWVidWlsZGVyX25ldyh2b2lkKQorc3RhdGljIFB5T2JqZWN0ICoKK3RyZWVidWlsZGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBUcmVlQnVpbGRlck9iamVjdCogc2VsZjsKKyAgICBUcmVlQnVpbGRlck9iamVjdCAqdCA9IChUcmVlQnVpbGRlck9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmICh0ICE9IE5VTEwpIHsKKyAgICAgICAgdC0+cm9vdCA9IE5VTEw7CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KFRyZWVCdWlsZGVyT2JqZWN0LCAmVHJlZUJ1aWxkZXJfVHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdC0+dGhpcyA9IChFbGVtZW50T2JqZWN0ICopUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICB0LT5sYXN0ID0gKEVsZW1lbnRPYmplY3QgKilQeV9Ob25lOwogCi0gICAgc2VsZi0+cm9vdCA9IE5VTEw7CisgICAgICAgIHQtPmRhdGEgPSBOVUxMOworICAgICAgICB0LT5lbGVtZW50X2ZhY3RvcnkgPSBOVUxMOworICAgICAgICB0LT5zdGFjayA9IFB5TGlzdF9OZXcoMjApOworICAgICAgICBpZiAoIXQtPnN0YWNrKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodC0+dGhpcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYodC0+bGFzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0LT5pbmRleCA9IDA7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgc2VsZi0+dGhpcyA9IChFbGVtZW50T2JqZWN0KikgUHlfTm9uZTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICBzZWxmLT5sYXN0ID0gKEVsZW1lbnRPYmplY3QqKSBQeV9Ob25lOwotCi0gICAgc2VsZi0+ZGF0YSA9IE5VTEw7Ci0KLSAgICBzZWxmLT5zdGFjayA9IFB5TGlzdF9OZXcoMjApOwotICAgIHNlbGYtPmluZGV4ID0gMDsKLQotICAgIHNlbGYtPmV2ZW50cyA9IE5VTEw7Ci0gICAgc2VsZi0+c3RhcnRfZXZlbnRfb2JqID0gc2VsZi0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7Ci0gICAgc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqID0gc2VsZi0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7Ci0KLSAgICBBTExPQyhzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAiY3JlYXRlIHRyZWVidWlsZGVyIik7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKKyAgICAgICAgdC0+ZXZlbnRzID0gTlVMTDsKKyAgICAgICAgdC0+c3RhcnRfZXZlbnRfb2JqID0gdC0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7CisgICAgICAgIHQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IHQtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXIoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncykKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpUcmVlQnVpbGRlciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIDB9OworICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOworICAgIFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmX3RiID0gKFRyZWVCdWlsZGVyT2JqZWN0ICopc2VsZjsKIAotICAgIHJldHVybiB0cmVlYnVpbGRlcl9uZXcoKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86VHJlZUJ1aWxkZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChlbGVtZW50X2ZhY3RvcnkpIHsKKyAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnRfZmFjdG9yeSk7CisgICAgICAgIFB5X1hERUNSRUYoc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5KTsKKyAgICAgICAgc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OworICAgIH0KKworICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZAotdHJlZWJ1aWxkZXJfZGVhbGxvYyhUcmVlQnVpbGRlck9iamVjdCogc2VsZikKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2djX3RyYXZlcnNlKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5yb290KTsKKyAgICBQeV9WSVNJVChzZWxmLT50aGlzKTsKKyAgICBQeV9WSVNJVChzZWxmLT5sYXN0KTsKKyAgICBQeV9WSVNJVChzZWxmLT5kYXRhKTsKKyAgICBQeV9WSVNJVChzZWxmLT5zdGFjayk7CisgICAgUHlfVklTSVQoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfZ2NfY2xlYXIoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5lbmRfbnNfZXZlbnRfb2JqKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPnN0YXJ0X25zX2V2ZW50X29iaik7CkBAIC0xNjg5LDI0ICsyMTM3LDIzIEBACiAgICAgUHlfWERFQ1JFRihzZWxmLT5kYXRhKTsKICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CiAgICAgUHlfREVDUkVGKHNlbGYtPnRoaXMpOworICAgIFB5X0NMRUFSKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5yb290KTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIFJFTEVBU0Uoc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgImRlc3Ryb3kgdHJlZWJ1aWxkZXIiKTsKLQotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK3N0YXRpYyB2b2lkCit0cmVlYnVpbGRlcl9kZWFsbG9jKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgdHJlZWJ1aWxkZXJfZ2NfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGhhbmRsZXJzICovCiAKIExPQ0FMKFB5T2JqZWN0KikKLXRyZWVidWlsZGVyX2hhbmRsZV94bWwoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBlbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIHN0YW5kYWxvbmUpCi17Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLUxPQ0FMKFB5T2JqZWN0KikKIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIHRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogYXR0cmliKQogewpAQCAtMTcyOCw5ICsyMTc1LDE0IEBACiAgICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwogICAgIH0KIAotICAgIG5vZGUgPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmIChzZWxmLT5lbGVtZW50X2ZhY3RvcnkpIHsKKyAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKKyAgICB9IGVsc2UgeworICAgICAgICBub2RlID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKKyAgICB9CisgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIHRoaXMgPSAoUHlPYmplY3QqKSBzZWxmLT50aGlzOwogCkBAIC0xOTc3LDIyICsyNDI5LDEwIEBACiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJpYik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX3htbChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgUHlPYmplY3QqIGVuY29kaW5nOwotICAgIFB5T2JqZWN0KiBzdGFuZGFsb25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086eG1sIiwgJmVuY29kaW5nLCAmc3RhbmRhbG9uZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV94bWwoc2VsZiwgZW5jb2RpbmcsIHN0YW5kYWxvbmUpOwotfQotCiBzdGF0aWMgUHlNZXRob2REZWYgdHJlZWJ1aWxkZXJfbWV0aG9kc1tdID0gewogICAgIHsiZGF0YSIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfZGF0YSwgTUVUSF9WQVJBUkdTfSwKICAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9zdGFydCwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImVuZCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfZW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsieG1sIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl94bWwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMjAwMSwzMSArMjQ0MSw0MiBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJUcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgdHJlZWJ1aWxkZXJfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsIC8qIHRwX21lbWJlcnMgKi8KKyAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXRyZWVidWlsZGVyX2djX3RyYXZlcnNlLCAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KXRyZWVidWlsZGVyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHRyZWVidWlsZGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKXRyZWVidWlsZGVyX2luaXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgdHJlZWJ1aWxkZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQEAgLTIwMzQsNDAgKzI0ODUsMzkgQEAKICNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKIAogI2luY2x1ZGUgImV4cGF0LmgiCi0KLSNpZiBkZWZpbmVkKFVTRV9QWUVYUEFUX0NBUEkpCiAjaW5jbHVkZSAicHlleHBhdC5oIgotc3RhdGljIHN0cnVjdCBQeUV4cGF0X0NBUEkqIGV4cGF0X2NhcGk7CitzdGF0aWMgc3RydWN0IFB5RXhwYXRfQ0FQSSAqZXhwYXRfY2FwaTsKICNkZWZpbmUgRVhQQVQoZnVuYykgKGV4cGF0X2NhcGktPmZ1bmMpCi0jZWxzZQotI2RlZmluZSBFWFBBVChmdW5jKSAoWE1MXyMjZnVuYykKLSNlbmRpZgorCitzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBFeHBhdE1lbW9yeUhhbmRsZXIgPSB7CisgICAgUHlPYmplY3RfTWFsbG9jLCBQeU9iamVjdF9SZWFsbG9jLCBQeU9iamVjdF9GcmVlfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKIAogICAgIFhNTF9QYXJzZXIgcGFyc2VyOwogCi0gICAgUHlPYmplY3QqIHRhcmdldDsKLSAgICBQeU9iamVjdCogZW50aXR5OworICAgIFB5T2JqZWN0ICp0YXJnZXQ7CisgICAgUHlPYmplY3QgKmVudGl0eTsKIAotICAgIFB5T2JqZWN0KiBuYW1lczsKKyAgICBQeU9iamVjdCAqbmFtZXM7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX3htbDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3N0YXJ0OworICAgIFB5T2JqZWN0ICpoYW5kbGVfZGF0YTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2VuZDsKIAotICAgIFB5T2JqZWN0KiBoYW5kbGVfc3RhcnQ7Ci0gICAgUHlPYmplY3QqIGhhbmRsZV9kYXRhOwotICAgIFB5T2JqZWN0KiBoYW5kbGVfZW5kOworICAgIFB5T2JqZWN0ICpoYW5kbGVfY29tbWVudDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3BpOworICAgIFB5T2JqZWN0ICpoYW5kbGVfZG9jdHlwZTsKIAotICAgIFB5T2JqZWN0KiBoYW5kbGVfY29tbWVudDsKLSAgICBQeU9iamVjdCogaGFuZGxlX3BpOwotCi0gICAgUHlPYmplY3QqIGhhbmRsZV9jbG9zZTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2Nsb3NlOwogCiB9IFhNTFBhcnNlck9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZTsKIAorI2RlZmluZSBYTUxQYXJzZXJfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZYTUxQYXJzZXJfVHlwZSkKKwogLyogaGVscGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCkBAIC0yMTEzLDcgKzI1NjMsNyBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICB0YWcgPSBrZXk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgLyogZGVjb2RlIHVuaXZlcnNhbCBuYW1lICovCiAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyh0YWcpOwogICAgICAgICB2YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHAsIHNpemUsICJzdHJpY3QiKTsKQEAgLTIxMzUsMjAgKzI1ODUsMzkgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKKy8qIFNldCB0aGUgUGFyc2VFcnJvciBleGNlcHRpb24gd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4KKyAqIElmIG1lc3NhZ2UgaXMgbm90IE5VTEwsIGl0J3MgdXNlZCBhcyB0aGUgZXJyb3Igc3RyaW5nLiBPdGhlcndpc2UsIHRoZQorICogbWVzc2FnZSBzdHJpbmcgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSBnaXZlbiBlcnJvcl9jb2RlLgorKi8KIHN0YXRpYyB2b2lkCi1leHBhdF9zZXRfZXJyb3IoY29uc3QgY2hhciogbWVzc2FnZSwgaW50IGxpbmUsIGludCBjb2x1bW4pCitleHBhdF9zZXRfZXJyb3IoZW51bSBYTUxfRXJyb3IgZXJyb3JfY29kZSwgaW50IGxpbmUsIGludCBjb2x1bW4sIGNoYXIgKm1lc3NhZ2UpCiB7Ci0gICAgUHlPYmplY3QgKmVycm9yOwotICAgIFB5T2JqZWN0ICpwb3NpdGlvbjsKLSAgICBjaGFyIGJ1ZmZlclsyNTZdOworICAgIFB5T2JqZWN0ICplcnJtc2csICplcnJvciwgKnBvc2l0aW9uLCAqY29kZTsKIAotICAgIHNwcmludGYoYnVmZmVyLCAiJS4xMDBzOiBsaW5lICVkLCBjb2x1bW4gJWQiLCBtZXNzYWdlLCBsaW5lLCBjb2x1bW4pOworICAgIGVycm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlZCwgY29sdW1uICVkIiwKKyAgICAgICAgICAgICAgICBtZXNzYWdlID8gbWVzc2FnZSA6IEVYUEFUKEVycm9yU3RyaW5nKShlcnJvcl9jb2RlKSwKKyAgICAgICAgICAgICAgICBsaW5lLCBjb2x1bW4pOworICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmosICJzIiwgYnVmZmVyKTsKKyAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiwgIk8iLCBlcnJtc2cpOworICAgIFB5X0RFQ1JFRihlcnJtc2cpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8qIGFkZCBwb3NpdGlvbiBhdHRyaWJ1dGUgKi8KKyAgICAvKiBBZGQgY29kZSBhbmQgcG9zaXRpb24gYXR0cmlidXRlcyAqLworICAgIGNvZGUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZXJyb3JfY29kZSk7CisgICAgaWYgKCFjb2RlKSB7CisgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoZXJyb3IsICJjb2RlIiwgY29kZSkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKKyAgICAgICAgUHlfREVDUkVGKGNvZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFB5X0RFQ1JFRihjb2RlKTsKKwogICAgIHBvc2l0aW9uID0gUHlfQnVpbGRWYWx1ZSgiKGlpKSIsIGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKCFwb3NpdGlvbikgewogICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOwpAQCAtMjIwMCw5ICsyNjY5LDEwIEBACiAgICAgICAgIGNoYXIgbWVzc2FnZVsxMjhdID0gInVuZGVmaW5lZCBlbnRpdHkgIjsKICAgICAgICAgc3RybmNhdChtZXNzYWdlLCBkYXRhX2luLCBkYXRhX2xlbiA8IDEwMD9kYXRhX2xlbjoxMDApOwogICAgICAgICBleHBhdF9zZXRfZXJyb3IoCi0gICAgICAgICAgICBtZXNzYWdlLAorICAgICAgICAgICAgWE1MX0VSUk9SX1VOREVGSU5FRF9FTlRJVFksCiAgICAgICAgICAgICBFWFBBVChHZXRFcnJvckxpbmVOdW1iZXIpKHNlbGYtPnBhcnNlciksCi0gICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKQorICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlciksCisgICAgICAgICAgICBtZXNzYWdlCiAgICAgICAgICAgICApOwogICAgIH0KIApAQCAtMjI1MSwxNyArMjcyMSwyMCBAQAogICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAotICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpCisgICAgLyogSWYgd2UgZ2V0IE5vbmUsIHBhc3MgYW4gZW1wdHkgZGljdGlvbmFyeSBvbiAqLworICAgIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIC8qIHNob3J0Y3V0ICovCiAgICAgICAgIHJlcyA9IHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydCgoVHJlZUJ1aWxkZXJPYmplY3QqKSBzZWxmLT50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsIGF0dHJpYik7CisgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9zdGFydCkgewotICAgICAgICBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOwotICAgICAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKCFhdHRyaWIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfc3RhcnQsICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gTlVMTDsKQEAgLTIzNzEsNiArMjg0NCw3OCBAQAogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgCitleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpkb2N0eXBlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnN5c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpwdWJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2ludGVybmFsX3N1YnNldCkKK3sKKyAgICBQeU9iamVjdCAqc2VsZl9weW9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlPYmplY3QgKmRvY3R5cGVfbmFtZV9vYmosICpzeXNpZF9vYmosICpwdWJpZF9vYmo7CisgICAgUHlPYmplY3QgKnBhcnNlcl9kb2N0eXBlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGRvY3R5cGVfbmFtZV9vYmogPSBtYWtldW5pdmVyc2FsKHNlbGYsIGRvY3R5cGVfbmFtZSk7CisgICAgaWYgKCFkb2N0eXBlX25hbWVfb2JqKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3lzaWQpIHsKKyAgICAgICAgc3lzaWRfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBzeXNpZCk7CisgICAgICAgIGlmICghc3lzaWRfb2JqKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZG9jdHlwZV9uYW1lX29iaik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHN5c2lkX29iaiA9IFB5X05vbmU7CisgICAgfQorCisgICAgaWYgKHB1YmlkKSB7CisgICAgICAgIHB1YmlkX29iaiA9IG1ha2V1bml2ZXJzYWwoc2VsZiwgcHViaWQpOworICAgICAgICBpZiAoIXB1YmlkX29iaikgeworICAgICAgICAgICAgUHlfREVDUkVGKGRvY3R5cGVfbmFtZV9vYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHN5c2lkX29iaik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHB1YmlkX29iaiA9IFB5X05vbmU7CisgICAgfQorCisgICAgLyogSWYgdGhlIHRhcmdldCBoYXMgYSBoYW5kbGVyIGZvciBkb2N0eXBlLCBjYWxsIGl0LiAqLworICAgIGlmIChzZWxmLT5oYW5kbGVfZG9jdHlwZSkgeworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX2RvY3R5cGUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdHlwZV9uYW1lX29iaiwgcHViaWRfb2JqLCBzeXNpZF9vYmopOworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIC8qIE5vdyBzZWUgaWYgdGhlIHBhcnNlciBpdHNlbGYgaGFzIGEgZG9jdHlwZSBtZXRob2QuIElmIHllcyBhbmQgaXQncworICAgICAqIGEgc3ViY2xhc3MsIGNhbGwgaXQgYnV0IHdhcm4gYWJvdXQgZGVwcmVjYXRpb24uIElmIGl0J3Mgbm90IGEgc3ViY2xhc3MKKyAgICAgKiAoaS5lLiB2YW5pbGxhIFhNTFBhcnNlciksIGRvIG5vdGhpbmcuCisgICAgICovCisgICAgcGFyc2VyX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGZfcHlvYmosICJkb2N0eXBlIik7CisgICAgaWYgKHBhcnNlcl9kb2N0eXBlKSB7CisgICAgICAgIGlmICghWE1MUGFyc2VyX0NoZWNrRXhhY3Qoc2VsZl9weW9iaikpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1ldGhvZCBvZiBYTUxQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIERlZmluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRvY3R5cGUoKSBtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gY2xlYXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24ocGFyc2VyX2RvY3R5cGUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3R5cGVfbmFtZV9vYmosIHB1YmlkX29iaiwgc3lzaWRfb2JqKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgIH0KKyAgICB9CisKK2NsZWFyOgorICAgIFB5X1hERUNSRUYocGFyc2VyX2RvY3R5cGUpOworICAgIFB5X0RFQ1JFRihkb2N0eXBlX25hbWVfb2JqKTsKKyAgICBQeV9ERUNSRUYocHViaWRfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3lzaWRfb2JqKTsKK30KKwogc3RhdGljIHZvaWQKIGV4cGF0X3BpX2hhbmRsZXIoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBjb25zdCBYTUxfQ2hhciogdGFyZ2V0X2luLAogICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciogZGF0YV9pbikKQEAgLTIzOTksMjkgKzI5NDQsMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW5jb2RpbmcgKmluZm8pCiB7CiAgICAgUHlPYmplY3QqIHU7Ci0gICAgUHlfVU5JQ09ERSogcDsKICAgICB1bnNpZ25lZCBjaGFyIHNbMjU2XTsKICAgICBpbnQgaTsKKyAgICB2b2lkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBraW5kOwogCiAgICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZihYTUxfRW5jb2RpbmcpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgc1tpXSA9IGk7Ci0gICAgCisKICAgICB1ID0gUHlVbmljb2RlX0RlY29kZSgoY2hhciopIHMsIDI1NiwgbmFtZSwgInJlcGxhY2UiKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodSkpCisgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1KSAhPSAyNTYpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodSkgIT0gMjU2KSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgICAgfQogCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHUpOwotCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKLSAgICAgICAgaWYgKHBbaV0gIT0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpCi0gICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSBwW2ldOworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCAhPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKKyAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IGNoOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSAtMTsKICAgICB9CkBAIC0yNDMyLDEyMiArMjk4MSwxMzEgQEAKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcihQeU9iamVjdCogc2VsZl8sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCitzdGF0aWMgUHlPYmplY3QgKgoreG1scGFyc2VyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBYTUxQYXJzZXJPYmplY3QqIHNlbGY7Ci0gICAgLyogRklYTUU6IGRvZXMgdGhpcyBuZWVkIHRvIGJlIHN0YXRpYz8gKi8KLSAgICBzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBtZW1vcnlfaGFuZGxlcjsKLQotICAgIFB5T2JqZWN0KiB0YXJnZXQgPSBOVUxMOwotICAgIGNoYXIqIGVuY29kaW5nID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJ0YXJnZXQiLCAiZW5jb2RpbmciLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T3o6WE1MUGFyc2VyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXQsICZlbmNvZGluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQotICAgIGlmICghZXhwYXRfY2FwaSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsICJjYW5ub3QgbG9hZCBkaXNwYXRjaCB0YWJsZSBmcm9tIHB5ZXhwYXQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGYgPSAoWE1MUGFyc2VyT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgc2VsZi0+cGFyc2VyID0gTlVMTDsKKyAgICAgICAgc2VsZi0+dGFyZ2V0ID0gc2VsZi0+ZW50aXR5ID0gc2VsZi0+bmFtZXMgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBzZWxmLT5oYW5kbGVfZGF0YSA9IHNlbGYtPmhhbmRsZV9lbmQgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IHNlbGYtPmhhbmRsZV9waSA9IHNlbGYtPmhhbmRsZV9jbG9zZSA9IE5VTEw7CisgICAgICAgIHNlbGYtPmhhbmRsZV9kb2N0eXBlID0gTlVMTDsKICAgICB9Ci0jZW5kaWYKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKK30KIAotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoWE1MUGFyc2VyT2JqZWN0LCAmWE1MUGFyc2VyX1R5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIGludAoreG1scGFyc2VyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGZfeHAgPSAoWE1MUGFyc2VyT2JqZWN0ICopc2VsZjsKKyAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTCwgKmh0bWwgPSBOVUxMOworICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgMH07CiAKLSAgICBzZWxmLT5lbnRpdHkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFzZWxmLT5lbnRpdHkpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgIAotICAgIHNlbGYtPm5hbWVzID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZi0+bmFtZXMpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT3o6WE1MUGFyc2VyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBtZW1vcnlfaGFuZGxlci5tYWxsb2NfZmNuID0gUHlPYmplY3RfTWFsbG9jOwotICAgIG1lbW9yeV9oYW5kbGVyLnJlYWxsb2NfZmNuID0gUHlPYmplY3RfUmVhbGxvYzsKLSAgICBtZW1vcnlfaGFuZGxlci5mcmVlX2ZjbiA9IFB5T2JqZWN0X0ZyZWU7CisgICAgc2VsZl94cC0+ZW50aXR5ID0gUHlEaWN0X05ldygpOworICAgIGlmICghc2VsZl94cC0+ZW50aXR5KQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBzZWxmLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmbWVtb3J5X2hhbmRsZXIsICJ9Iik7Ci0gICAgaWYgKCFzZWxmLT5wYXJzZXIpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPm5hbWVzKTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICBzZWxmX3hwLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGZfeHAtPm5hbWVzKSB7CisgICAgICAgIFB5X1hERUNSRUYoc2VsZl94cC0+ZW50aXR5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHNlbGZfeHAtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZFeHBhdE1lbW9yeUhhbmRsZXIsICJ9Iik7CisgICAgaWYgKCFzZWxmX3hwLT5wYXJzZXIpIHsKKyAgICAgICAgUHlfWERFQ1JFRihzZWxmX3hwLT5lbnRpdHkpOworICAgICAgICBQeV9YREVDUkVGKHNlbGZfeHAtPm5hbWVzKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICAvKiBzZXR1cCB0YXJnZXQgaGFuZGxlcnMgKi8KLSAgICBpZiAoIXRhcmdldCkgewotICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoKTsKLSAgICAgICAgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGYtPnBhcnNlcik7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+bmFtZXMpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgUHlfSU5DUkVGKHRhcmdldCk7Ci0gICAgc2VsZi0+dGFyZ2V0ID0gdGFyZ2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygmVHJlZUJ1aWxkZXJfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHNlbGZfeHAtPm5hbWVzKTsKKyAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGZfeHAtPnBhcnNlcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VsZl94cC0+dGFyZ2V0ID0gdGFyZ2V0OwogCi0gICAgc2VsZi0+aGFuZGxlX3htbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAieG1sIik7Ci0gICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOwotICAgIHNlbGYtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7Ci0gICAgc2VsZi0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7Ci0gICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKLSAgICBzZWxmLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7Ci0gICAgc2VsZi0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9zdGFydCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAic3RhcnQiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfZGF0YSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZGF0YSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9lbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImVuZCIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9jb21tZW50ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjb21tZW50Iik7CisgICAgc2VsZl94cC0+aGFuZGxlX3BpID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJwaSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9jbG9zZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY2xvc2UiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfZG9jdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZG9jdHlwZSIpOwogCiAgICAgUHlFcnJfQ2xlYXIoKTsKLQorICAgIAogICAgIC8qIGNvbmZpZ3VyZSBwYXJzZXIgKi8KLSAgICBFWFBBVChTZXRVc2VyRGF0YSkoc2VsZi0+cGFyc2VyLCBzZWxmKTsKKyAgICBFWFBBVChTZXRVc2VyRGF0YSkoc2VsZl94cC0+cGFyc2VyLCBzZWxmX3hwKTsKICAgICBFWFBBVChTZXRFbGVtZW50SGFuZGxlcikoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIpIGV4cGF0X3N0YXJ0X2hhbmRsZXIsCiAgICAgICAgIChYTUxfRW5kRWxlbWVudEhhbmRsZXIpIGV4cGF0X2VuZF9oYW5kbGVyCiAgICAgICAgICk7CiAgICAgRVhQQVQoU2V0RGVmYXVsdEhhbmRsZXJFeHBhbmQpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9EZWZhdWx0SGFuZGxlcikgZXhwYXRfZGVmYXVsdF9oYW5kbGVyCiAgICAgICAgICk7CiAgICAgRVhQQVQoU2V0Q2hhcmFjdGVyRGF0YUhhbmRsZXIpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlcikgZXhwYXRfZGF0YV9oYW5kbGVyCiAgICAgICAgICk7Ci0gICAgaWYgKHNlbGYtPmhhbmRsZV9jb21tZW50KQorICAgIGlmIChzZWxmX3hwLT5oYW5kbGVfY29tbWVudCkKICAgICAgICAgRVhQQVQoU2V0Q29tbWVudEhhbmRsZXIpKAotICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAgICAgKFhNTF9Db21tZW50SGFuZGxlcikgZXhwYXRfY29tbWVudF9oYW5kbGVyCiAgICAgICAgICAgICApOwotICAgIGlmIChzZWxmLT5oYW5kbGVfcGkpCisgICAgaWYgKHNlbGZfeHAtPmhhbmRsZV9waSkKICAgICAgICAgRVhQQVQoU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikoCi0gICAgICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgICAgICAoWE1MX1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIpIGV4cGF0X3BpX2hhbmRsZXIKICAgICAgICAgICAgICk7CisgICAgRVhQQVQoU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpKAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgIChYTUxfU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIGV4cGF0X3N0YXJ0X2RvY3R5cGVfaGFuZGxlcgorICAgICAgICApOwogICAgIEVYUEFUKFNldFVua25vd25FbmNvZGluZ0hhbmRsZXIpKAotICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgKFhNTF9Vbmtub3duRW5jb2RpbmdIYW5kbGVyKSBleHBhdF91bmtub3duX2VuY29kaW5nX2hhbmRsZXIsIE5VTEwKICAgICAgICAgKTsKIAotICAgIEFMTE9DKHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAiY3JlYXRlIGV4cGF0cGFyc2VyIik7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLXhtbHBhcnNlcl9kZWFsbG9jKFhNTFBhcnNlck9iamVjdCogc2VsZikKK3N0YXRpYyBpbnQKK3htbHBhcnNlcl9nY190cmF2ZXJzZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9jbG9zZSk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX3BpKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfY29tbWVudCk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2VuZCk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2RhdGEpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9zdGFydCk7CisKKyAgICBQeV9WSVNJVChzZWxmLT50YXJnZXQpOworICAgIFB5X1ZJU0lUKHNlbGYtPmVudGl0eSk7CisgICAgUHlfVklTSVQoc2VsZi0+bmFtZXMpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3htbHBhcnNlcl9nY19jbGVhcihYTUxQYXJzZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKIApAQCAtMjU1NywxOSArMzExNSwyMiBAQAogICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2VuZCk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfZGF0YSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfc3RhcnQpOwotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX3htbCk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfZG9jdHlwZSk7CiAKLSAgICBQeV9ERUNSRUYoc2VsZi0+dGFyZ2V0KTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+ZW50aXR5KTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+bmFtZXMpOworICAgIFB5X1hERUNSRUYoc2VsZi0+dGFyZ2V0KTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPmVudGl0eSk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5uYW1lcyk7CiAKLSAgICBSRUxFQVNFKHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAiZGVzdHJveSBleHBhdHBhcnNlciIpOwotCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIHJldHVybiAwOwogfQogCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogbWV0aG9kcyAoaW4gYWxwaGFiZXRpY2FsIG9yZGVyKSAqLworc3RhdGljIHZvaWQKK3htbHBhcnNlcl9kZWFsbG9jKFhNTFBhcnNlck9iamVjdCogc2VsZikKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIHhtbHBhcnNlcl9nY19jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQogCiBMT0NBTChQeU9iamVjdCopCiBleHBhdF9wYXJzZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIGNoYXIqIGRhdGEsIGludCBkYXRhX2xlbiwgaW50IGZpbmFsKQpAQCAtMjU4Myw5ICszMTQ0LDEwIEBACiAKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIGV4cGF0X3NldF9lcnJvcigKLSAgICAgICAgICAgIEVYUEFUKEVycm9yU3RyaW5nKShFWFBBVChHZXRFcnJvckNvZGUpKHNlbGYtPnBhcnNlcikpLAorICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2RlKShzZWxmLT5wYXJzZXIpLAogICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JMaW5lTnVtYmVyKShzZWxmLT5wYXJzZXIpLAotICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlcikKKyAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpLAorICAgICAgICAgICAgTlVMTAogICAgICAgICAgICAgKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYzNiw2ICszMTk4LDcgQEAKIAogICAgIFB5T2JqZWN0KiByZWFkZXI7CiAgICAgUHlPYmplY3QqIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCogdGVtcDsKICAgICBQeU9iamVjdCogcmVzOwogCiAgICAgUHlPYmplY3QqIGZpbGVvYmo7CkBAIC0yNjQ1LDcgKzMyMDgsNyBAQAogICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZW9iaiwgInJlYWQiKTsKICAgICBpZiAoIXJlYWRlcikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgCisKICAgICAvKiByZWFkIGZyb20gb3BlbiBmaWxlIG9iamVjdCAqLwogICAgIGZvciAoOzspIHsKIApAQCAtMjY1Nyw3ICszMjIwLDI3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGJ1ZmZlcikgfHwgUHlCeXRlc19HRVRfU0laRShidWZmZXIpID09IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIC8qIEEgdW5pY29kZSBvYmplY3QgaXMgZW5jb2RlZCBpbnRvIGJ5dGVzIHVzaW5nIFVURi04ICovCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGVtcCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoYnVmZmVyLCAidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpOworICAgICAgICAgICAgaWYgKCF0ZW1wKSB7CisgICAgICAgICAgICAgICAgLyogUHJvcGFnYXRlIGV4Y2VwdGlvbiBmcm9tIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcgKi8KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVhZGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSGVyZSB3ZSBubyBsb25nZXIgbmVlZCB0aGUgb3JpZ2luYWwgYnVmZmVyIHNpbmNlIGl0IGNvbnRhaW5zCisgICAgICAgICAgICAgKiB1bmljb2RlLiBNYWtlIGl0IHBvaW50IHRvIHRoZSBlbmNvZGVkIGJ5dGVzIG9iamVjdC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IHRlbXA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChidWZmZXIpIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSA9PSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNjg5LDcgKzMyNzIsMTMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX3NldGV2ZW50cyhYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreG1scGFyc2VyX2RvY3R5cGUoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgoreG1scGFyc2VyX3NldGV2ZW50cyhYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAKQEAgLTI3MDUsNyArMzI5NCw3IEBACiAgICAgaWYgKCFUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImV2ZW50IGhhbmRsaW5nIG9ubHkgc3VwcG9ydGVkIGZvciBjRWxlbWVudFRyZWUuVHJlZWJ1aWxkZXIgIgorICAgICAgICAgICAgImV2ZW50IGhhbmRsaW5nIG9ubHkgc3VwcG9ydGVkIGZvciBFbGVtZW50VHJlZS5UcmVlQnVpbGRlciAiCiAgICAgICAgICAgICAidGFyZ2V0cyIKICAgICAgICAgICAgICk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjc5MywxMCArMzM4MiwxMSBAQAogICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9wYXJzZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3BhcnNlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX3NldGV2ZW50cyIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImRvY3R5cGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9kb2N0eXBlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAotc3RhdGljIFB5T2JqZWN0KiAgCitzdGF0aWMgUHlPYmplY3QqCiB4bWxwYXJzZXJfZ2V0YXR0cm8oWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaikKIHsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKSB7CkBAIC0yODI0LDMxICszNDE0LDQyIEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIlhNTFBhcnNlciIsIHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil4bWxwYXJzZXJfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsIC8qIHRwX3ByaW50ICovCi0gICAgMCwgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAvKiB0cF9oYXNoICovCi0gICAgMCwgLyogdHBfY2FsbCAqLwotICAgIDAsIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpeG1scGFyc2VyX2dldGF0dHJvLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgeG1scGFyc2VyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpeG1scGFyc2VyX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpeG1scGFyc2VyX2dldGF0dHJvLCAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl4bWxwYXJzZXJfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl4bWxwYXJzZXJfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB4bWxwYXJzZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyl4bWxwYXJzZXJfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHhtbHBhcnNlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKICNlbmRpZgpAQCAtMjg1NywxMyArMzQ1OCw3IEBACiAvKiBweXRob24gbW9kdWxlIGludGVyZmFjZSAqLwogCiBzdGF0aWMgUHlNZXRob2REZWYgX2Z1bmN0aW9uc1tdID0gewotICAgIHsiRWxlbWVudCIsIChQeUNGdW5jdGlvbikgZWxlbWVudCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiU3ViRWxlbWVudCIsIChQeUNGdW5jdGlvbikgc3ViZWxlbWVudCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiVHJlZUJ1aWxkZXIiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyLCBNRVRIX1ZBUkFSR1N9LAotI2lmIGRlZmluZWQoVVNFX0VYUEFUKQotICAgIHsiWE1MUGFyc2VyIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlhNTFRyZWVCdWlsZGVyIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSNlbmRpZgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjg4Myw5ICszNDc4LDcgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2VsZW1lbnR0cmVlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QqIG07Ci0gICAgUHlPYmplY3QqIGc7Ci0gICAgY2hhciogYm9vdHN0cmFwOworICAgIFB5T2JqZWN0ICptLCAqdGVtcDsKIAogICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGVzICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmVHJlZUJ1aWxkZXJfVHlwZSkgPCAwKQpAQCAtMjkwMSwyMTIgKzM0OTQsMTUgQEAKICAgICBpZiAoIW0pCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogVGhlIGNvZGUgYmVsb3cgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIGdldHMgYWxyZWFkeSBhZGRlZAotICAgICAgIHRvIHN5cy5tb2R1bGVzLiAqLwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfZWxlbWVudHRyZWVtb2R1bGUubV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIG0pOworICAgIGlmICghKHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImNvcHkiKSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImRlZXBjb3B5Iik7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKIAotICAgIC8qIHB5dGhvbiBnbHVlIGNvZGUgKi8KLQotICAgIGcgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFnKQorICAgIGlmICghKGVsZW1lbnRwYXRoX29iaiA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgieG1sLmV0cmVlLkVsZW1lbnRQYXRoIikpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGcsICJfX2J1aWx0aW5zX18iLCBQeUV2YWxfR2V0QnVpbHRpbnMoKSk7Ci0KLSAgICBib290c3RyYXAgPSAoCi0KLSAgICAgICAgImZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHlcbiIKLQotICAgICAgICAidHJ5OlxuIgotICAgICAgICAiICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWVcbiIKLSAgICAgICAgImV4Y2VwdCBJbXBvcnRFcnJvcjpcbiIKLSAgICAgICAgIiAgaW1wb3J0IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJFVCA9IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJkZWwgRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAiaW1wb3J0IF9lbGVtZW50dHJlZSBhcyBjRWxlbWVudFRyZWVcbiIKLQotICAgICAgICAidHJ5OlxuIiAvKiBjaGVjayBpZiBjb3B5IHdvcmtzIGFzIGlzICovCi0gICAgICAgICIgIGNvcHkoY0VsZW1lbnRUcmVlLkVsZW1lbnQoJ3gnKSlcbiIKLSAgICAgICAgImV4Y2VwdDpcbiIKLSAgICAgICAgIiAgZGVmIGNvcHllbGVtZW50KGVsZW0pOlxuIgotICAgICAgICAiICAgIHJldHVybiBlbGVtXG4iCi0KLSAgICAgICAgImNsYXNzIENvbW1lbnRQcm94eTpcbiIKLSAgICAgICAgIiBkZWYgX19jYWxsX18oc2VsZiwgdGV4dD1Ob25lKTpcbiIKLSAgICAgICAgIiAgZWxlbWVudCA9IGNFbGVtZW50VHJlZS5FbGVtZW50KEVULkNvbW1lbnQpXG4iCi0gICAgICAgICIgIGVsZW1lbnQudGV4dCA9IHRleHRcbiIKLSAgICAgICAgIiAgcmV0dXJuIGVsZW1lbnRcbiIKLSAgICAgICAgIiBkZWYgX19lcV9fKHNlbGYsIG90aGVyKTpcbiIKLSAgICAgICAgIiAgcmV0dXJuIEVULkNvbW1lbnQgPT0gb3RoZXJcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5Db21tZW50ID0gQ29tbWVudFByb3h5KClcbiIKLQotICAgICAgICAiY2xhc3MgRWxlbWVudFRyZWUoRVQuRWxlbWVudFRyZWUpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOlxuIgotICAgICAgICAiICAgIGNsb3NlX3NvdXJjZSA9IEZhbHNlXG4iCi0gICAgICAgICIgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAncmVhZCcpOlxuIgotICAgICAgICAiICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICdyYicpXG4iCi0gICAgICAgICIgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlXG4iCi0gICAgICAgICIgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgaWYgcGFyc2VyIGlzIG5vdCBOb25lOlxuIgotICAgICAgICAiICAgICAgICB3aGlsZSAxOlxuIgotICAgICAgICAiICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCg2NTUzNilcbiIKLSAgICAgICAgIiAgICAgICAgICBpZiBub3QgZGF0YTpcbiIKLSAgICAgICAgIiAgICAgICAgICAgIGJyZWFrXG4iCi0gICAgICAgICIgICAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSlcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fcm9vdCA9IHBhcnNlci5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICBlbHNlOlxuIiAKLSAgICAgICAgIiAgICAgICAgcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpXG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlKHNvdXJjZSlcbiIKLSAgICAgICAgIiAgICAgIHJldHVybiBzZWxmLl9yb290XG4iCi0gICAgICAgICIgICAgZmluYWxseTpcbiIKLSAgICAgICAgIiAgICAgIGlmIGNsb3NlX3NvdXJjZTpcbiIKLSAgICAgICAgIiAgICAgICAgc291cmNlLmNsb3NlKClcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5FbGVtZW50VHJlZSA9IEVsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgImRlZiBpdGVyKG5vZGUsIHRhZz1Ob25lKTpcbiIgLyogaGVscGVyICovCi0gICAgICAgICIgIGlmIHRhZyA9PSAnKic6XG4iCi0gICAgICAgICIgICAgdGFnID0gTm9uZVxuIgotICAgICAgICAiICBpZiB0YWcgaXMgTm9uZSBvciBub2RlLnRhZyA9PSB0YWc6XG4iCi0gICAgICAgICIgICAgeWllbGQgbm9kZVxuIgotICAgICAgICAiICBmb3Igbm9kZSBpbiBub2RlOlxuIgotICAgICAgICAiICAgIGZvciBub2RlIGluIGl0ZXIobm9kZSwgdGFnKTpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIG5vZGVcbiIKLQotICAgICAgICAiZGVmIGl0ZXJ0ZXh0KG5vZGUpOlxuIiAvKiBoZWxwZXIgKi8KLSAgICAgICAgIiAgaWYgbm9kZS50ZXh0OlxuIgotICAgICAgICAiICAgIHlpZWxkIG5vZGUudGV4dFxuIgotICAgICAgICAiICBmb3IgZSBpbiBub2RlOlxuIgotICAgICAgICAiICAgIGZvciBzIGluIGUuaXRlcnRleHQoKTpcbiIKLSAgICAgICAgIiAgICAgIHlpZWxkIHNcbiIKLSAgICAgICAgIiAgICBpZiBlLnRhaWw6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBlLnRhaWxcbiIKLQotICAgICAgICAiZGVmIHBhcnNlKHNvdXJjZSwgcGFyc2VyPU5vbmUpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgdHJlZSA9IEVsZW1lbnRUcmVlKClcbiIKLSAgICAgICAgIiAgdHJlZS5wYXJzZShzb3VyY2UsIHBhcnNlcilcbiIKLSAgICAgICAgIiAgcmV0dXJuIHRyZWVcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5wYXJzZSA9IHBhcnNlXG4iCi0KLSAgICAgICAgImNsYXNzIGl0ZXJwYXJzZTpcbiIKLSAgICAgICAgIiByb290ID0gTm9uZVxuIgotICAgICAgICAiIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBldmVudHM9Tm9uZSk6XG4iCi0gICAgICAgICIgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBGYWxzZVxuIgotICAgICAgICAiICBpZiBub3QgaGFzYXR0cihmaWxlLCAncmVhZCcpOlxuIgotICAgICAgICAiICAgIGZpbGUgPSBvcGVuKGZpbGUsICdyYicpXG4iCi0gICAgICAgICIgICAgc2VsZi5fY2xvc2VfZmlsZSA9IFRydWVcbiIKLSAgICAgICAgIiAgc2VsZi5fZmlsZSA9IGZpbGVcbiIKLSAgICAgICAgIiAgc2VsZi5fZXZlbnRzID0gW11cbiIKLSAgICAgICAgIiAgc2VsZi5faW5kZXggPSAwXG4iCi0gICAgICAgICIgIHNlbGYuX2Vycm9yID0gTm9uZVxuIgotICAgICAgICAiICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZVxuIgotICAgICAgICAiICBiID0gY0VsZW1lbnRUcmVlLlRyZWVCdWlsZGVyKClcbiIKLSAgICAgICAgIiAgc2VsZi5fcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcihiKVxuIgotICAgICAgICAiICBzZWxmLl9wYXJzZXIuX3NldGV2ZW50cyhzZWxmLl9ldmVudHMsIGV2ZW50cylcbiIKLSAgICAgICAgIiBkZWYgX19uZXh0X18oc2VsZik6XG4iCi0gICAgICAgICIgIHdoaWxlIDE6XG4iCi0gICAgICAgICIgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgaXRlbSA9IHNlbGYuX2V2ZW50c1tzZWxmLl9pbmRleF1cbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX2luZGV4ICs9IDFcbiIKLSAgICAgICAgIiAgICAgIHJldHVybiBpdGVtXG4iCi0gICAgICAgICIgICAgZXhjZXB0IEluZGV4RXJyb3I6XG4iCi0gICAgICAgICIgICAgICBwYXNzXG4iCi0gICAgICAgICIgICAgaWYgc2VsZi5fZXJyb3I6XG4iCi0gICAgICAgICIgICAgICBlID0gc2VsZi5fZXJyb3JcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX2Vycm9yID0gTm9uZVxuIgotICAgICAgICAiICAgICAgcmFpc2UgZVxuIgotICAgICAgICAiICAgIGlmIHNlbGYuX3BhcnNlciBpcyBOb25lOlxuIgotICAgICAgICAiICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdFxuIgotICAgICAgICAiICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZTpcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uXG4iCi0gICAgICAgICIgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlclxuIgotICAgICAgICAiICAgIGRlbCBzZWxmLl9ldmVudHNbOl1cbiIKLSAgICAgICAgIiAgICBzZWxmLl9pbmRleCA9IDBcbiIKLSAgICAgICAgIiAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2Mzg0KVxuIgotICAgICAgICAiICAgIGlmIGRhdGE6XG4iCi0gICAgICAgICIgICAgICB0cnk6XG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpXG4iCi0gICAgICAgICIgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXhjOlxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9lcnJvciA9IGV4Y1xuIgotICAgICAgICAiICAgIGVsc2U6XG4iCi0gICAgICAgICIgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLmNsb3NlKClcbiIKLSAgICAgICAgIiAgICAgIHNlbGYuX3BhcnNlciA9IE5vbmVcbiIKLSAgICAgICAgIiBkZWYgX19pdGVyX18oc2VsZik6XG4iCi0gICAgICAgICIgIHJldHVybiBzZWxmXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuaXRlcnBhcnNlID0gaXRlcnBhcnNlXG4iCi0KLSAgICAgICAgImNsYXNzIFBJUHJveHk6XG4iCi0gICAgICAgICIgZGVmIF9fY2FsbF9fKHNlbGYsIHRhcmdldCwgdGV4dD1Ob25lKTpcbiIKLSAgICAgICAgIiAgZWxlbWVudCA9IGNFbGVtZW50VHJlZS5FbGVtZW50KEVULlBJKVxuIgotICAgICAgICAiICBlbGVtZW50LnRleHQgPSB0YXJnZXRcbiIKLSAgICAgICAgIiAgaWYgdGV4dDpcbiIKLSAgICAgICAgIiAgICBlbGVtZW50LnRleHQgPSBlbGVtZW50LnRleHQgKyAnICcgKyB0ZXh0XG4iCi0gICAgICAgICIgIHJldHVybiBlbGVtZW50XG4iCi0gICAgICAgICIgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6XG4iCi0gICAgICAgICIgIHJldHVybiBFVC5QSSA9PSBvdGhlclxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlBJID0gY0VsZW1lbnRUcmVlLlByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IFBJUHJveHkoKVxuIgotCi0gICAgICAgICJkZWYgWE1MKHRleHQpOlxuIiAvKiBwdWJsaWMgKi8KLSAgICAgICAgIiAgcGFyc2VyID0gY0VsZW1lbnRUcmVlLlhNTFBhcnNlcigpXG4iCi0gICAgICAgICIgIHBhcnNlci5mZWVkKHRleHQpXG4iCi0gICAgICAgICIgIHJldHVybiBwYXJzZXIuY2xvc2UoKVxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlhNTCA9IGNFbGVtZW50VHJlZS5mcm9tc3RyaW5nID0gWE1MXG4iCi0KLSAgICAgICAgImRlZiBYTUxJRCh0ZXh0KTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHRyZWUgPSBYTUwodGV4dClcbiIKLSAgICAgICAgIiAgaWRzID0ge31cbiIKLSAgICAgICAgIiAgZm9yIGVsZW0gaW4gdHJlZS5pdGVyKCk6XG4iCi0gICAgICAgICIgICAgaWQgPSBlbGVtLmdldCgnaWQnKVxuIgotICAgICAgICAiICAgIGlmIGlkOlxuIgotICAgICAgICAiICAgICAgaWRzW2lkXSA9IGVsZW1cbiIKLSAgICAgICAgIiAgcmV0dXJuIHRyZWUsIGlkc1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlhNTElEID0gWE1MSURcbiIKLQotICAgICAgICAidHJ5OlxuIgotICAgICAgICAiIHJlZ2lzdGVyX25hbWVzcGFjZSA9IEVULnJlZ2lzdGVyX25hbWVzcGFjZVxuIgotICAgICAgICAiZXhjZXB0IEF0dHJpYnV0ZUVycm9yOlxuIgotICAgICAgICAiIGRlZiByZWdpc3Rlcl9uYW1lc3BhY2UocHJlZml4LCB1cmkpOlxuIgotICAgICAgICAiICBFVC5fbmFtZXNwYWNlX21hcFt1cmldID0gcHJlZml4XG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUucmVnaXN0ZXJfbmFtZXNwYWNlID0gcmVnaXN0ZXJfbmFtZXNwYWNlXG4iCi0KLSAgICAgICAgImNFbGVtZW50VHJlZS5kdW1wID0gRVQuZHVtcFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFBhdGggPSBFVC5FbGVtZW50UGF0aFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLmlzZWxlbWVudCA9IEVULmlzZWxlbWVudFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlFOYW1lID0gRVQuUU5hbWVcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS50b3N0cmluZyA9IEVULnRvc3RyaW5nXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuZnJvbXN0cmluZ2xpc3QgPSBFVC5mcm9tc3RyaW5nbGlzdFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnRvc3RyaW5nbGlzdCA9IEVULnRvc3RyaW5nbGlzdFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLlZFUlNJT04gPSAnIiBWRVJTSU9OICInXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuX192ZXJzaW9uX18gPSAnIiBWRVJTSU9OICInXG4iCi0KLSAgICAgICApOwotCi0gICAgaWYgKCFQeVJ1bl9TdHJpbmcoYm9vdHN0cmFwLCBQeV9maWxlX2lucHV0LCBnLCBOVUxMKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlbGVtZW50cGF0aF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiRWxlbWVudFBhdGgiKTsKLQotICAgIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJjb3B5ZWxlbWVudCIpOwotICAgIGlmIChlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmopIHsKLSAgICAgICAgLyogcmVkdWNlIGhhY2sgbmVlZGVkOyBlbmFibGUgcmVkdWNlIG1ldGhvZCAqLwotICAgICAgICBQeU1ldGhvZERlZiogbXA7Ci0gICAgICAgIGZvciAobXAgPSBlbGVtZW50X21ldGhvZHM7IG1wLT5tbF9uYW1lOyBtcCsrKQotICAgICAgICAgICAgaWYgKG1wLT5tbF9tZXRoID09IChQeUNGdW5jdGlvbikgZWxlbWVudF9yZWR1Y2UpIHsKLSAgICAgICAgICAgICAgICBtcC0+bWxfbmFtZSA9ICJfX3JlZHVjZV9fIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGVsZW1lbnR0cmVlX2RlZXBjb3B5X29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJkZWVwY29weSIpOwotICAgIGVsZW1lbnR0cmVlX2l0ZXJfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIml0ZXIiKTsKLSAgICBlbGVtZW50dHJlZV9pdGVydGV4dF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiaXRlcnRleHQiKTsKLQotI2lmIGRlZmluZWQoVVNFX1BZRVhQQVRfQ0FQSSkKLSAgICAvKiBsaW5rIGFnYWluc3QgcHlleHBhdCwgaWYgcG9zc2libGUgKi8KKyAgICAvKiBsaW5rIGFnYWluc3QgcHlleHBhdCAqLwogICAgIGV4cGF0X2NhcGkgPSBQeUNhcHN1bGVfSW1wb3J0KFB5RXhwYXRfQ0FQU1VMRV9OQU1FLCAwKTsKICAgICBpZiAoZXhwYXRfY2FwaSkgewogICAgICAgICAvKiBjaGVjayB0aGF0IGl0J3MgdXNhYmxlICovCkBAIC0zMTIyLDEzICszNTE4LDIzIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2VuZGlmCiAKICAgICBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigKLSAgICAgICAgImNFbGVtZW50VHJlZS5QYXJzZUVycm9yIiwgUHlFeGNfU3ludGF4RXJyb3IsIE5VTEwKKyAgICAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5QYXJzZUVycm9yIiwgUHlFeGNfU3ludGF4RXJyb3IsIE5VTEwKICAgICAgICAgKTsKICAgICBQeV9JTkNSRUYoZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmopOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUGFyc2VFcnJvciIsIGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqKTsKIAorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkVsZW1lbnQiLCAoUHlPYmplY3QgKikmRWxlbWVudF9UeXBlKTsKKworICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmVHJlZUJ1aWxkZXJfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJUcmVlQnVpbGRlciIsIChQeU9iamVjdCAqKSZUcmVlQnVpbGRlcl9UeXBlKTsKKworI2lmIGRlZmluZWQoVVNFX0VYUEFUKQorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikmWE1MUGFyc2VyX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyIiwgKFB5T2JqZWN0ICopJlhNTFBhcnNlcl9UeXBlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgYi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjViMjllMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpAQCAtMCwwICsxLDE0MiBAQAorLyogVGhpcyBpcyBidWlsdCBhcyBhIHN0YW5kLWFsb25lIGV4ZWN1dGFibGUgYnkgdGhlIE1ha2VmaWxlLCBhbmQgaGVscHMgdHVybgorICAgTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGludG8gYSBmcm96ZW4gbW9kdWxlIGluIFB5dGhvbi9pbXBvcnRsaWIuaAorKi8KKworI2luY2x1ZGUgPFB5dGhvbi5oPgorI2luY2x1ZGUgPG1hcnNoYWwuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZm5kZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKworLyogVG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGZyb3plbi5vLCB3ZSBjcmVhdGUgb3VyIG93biBzdHJ1Y3R1cmUKKyAgIG9mIGZyb3plbiBtb2R1bGVzIGluc3RlYWQsIGxlZnQgZGVsaWJlcmF0ZWx5IGJsYW5rIHNvIGFzIHRvIGF2b2lkCisgICB1bmludGVudGlvbmFsIGltcG9ydCBvZiBhIHN0YWxlIHZlcnNpb24gb2YgX2Zyb3plbl9pbXBvcnRsaWIuICovCisKK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworICAgIHswLCAwLCAwfSAvKiBzZW50aW5lbCAqLworfTsKKworI2lmbmRlZiBNU19XSU5ET1dTCisvKiBPbiBXaW5kb3dzLCB0aGlzIGxpbmtzIHdpdGggdGhlIHJlZ3VsYXIgcHl0aG9uWFkuZGxsLCBzbyB0aGlzIHZhcmlhYmxlIGNvbWVzCisgICBmcm9tIGZyb3plbi5vYmouIEluIHRoZSBNYWtlZmlsZSwgZnJvemVuLm8gaXMgbm90IGxpbmtlZCBpbnRvIHRoaXMgZXhlY3V0YWJsZSwKKyAgIHNvIHdlIGRlZmluZSB0aGUgdmFyaWFibGUgaGVyZS4gKi8KK3N0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOworI2VuZGlmCisKK2NvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovIjsKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgY2hhciAqaW5wYXRoLCAqb3V0cGF0aDsKKyAgICBGSUxFICppbmZpbGUsICpvdXRmaWxlID0gTlVMTDsKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzaXplX3QgdGV4dF9zaXplLCBkYXRhX3NpemUsIG47CisgICAgY2hhciAqdGV4dDsKKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhOworICAgIFB5T2JqZWN0ICpjb2RlLCAqbWFyc2hhbGxlZDsKKworICAgIFB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgPSBfUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKKworICAgIGlmIChhcmdjICE9IDMpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJuZWVkIHRvIHNwZWNpZnkgaW5wdXQgYW5kIG91dHB1dCBwYXRoc1xuIik7CisgICAgICAgIHJldHVybiAyOworICAgIH0KKyAgICBpbnBhdGggPSBhcmd2WzFdOworICAgIG91dHBhdGggPSBhcmd2WzJdOworICAgIGluZmlsZSA9IGZvcGVuKGlucGF0aCwgInJiIik7CisgICAgaWYgKGluZmlsZSA9PSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gJyVzJyBmb3IgcmVhZGluZ1xuIiwgaW5wYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChmc3RhdChmaWxlbm8oaW5maWxlKSwgJnN0KSkgeworICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZnN0YXQgJyVzJ1xuIiwgaW5wYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHRleHRfc2l6ZSA9IHN0LnN0X3NpemU7CisgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKKyAgICBpZiAodGV4dCA9PSBOVUxMKSB7CisgICAgICAgIGZjbG9zZShpbmZpbGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBhbGxvY2F0ZSAlbGQgYnl0ZXNcbiIsIChsb25nKSB0ZXh0X3NpemUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgbiA9IGZyZWFkKHRleHQsIDEsIHRleHRfc2l6ZSwgaW5maWxlKTsKKyAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpbmZpbGUgPSBOVUxMOworICAgIGlmIChuIDwgdGV4dF9zaXplKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZCB0b28gc2hvcnQ6IGdvdCAlbGQgaW5zdGVhZCBvZiAlbGQgYnl0ZXNcbiIsCisgICAgICAgICAgICAgICAgKGxvbmcpIG4sIChsb25nKSB0ZXh0X3NpemUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgdGV4dFt0ZXh0X3NpemVdID0gJ1wwJzsKKworICAgIFB5X05vVXNlclNpdGVEaXJlY3RvcnkrKzsKKyAgICBQeV9Ob1NpdGVGbGFnKys7CisgICAgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKys7CisKKyAgICBQeV9TZXRQcm9ncmFtTmFtZShMIi4vX2ZyZWV6ZV9pbXBvcnRsaWIiKTsKKyAgICAvKiBEb24ndCBpbnN0YWxsIGltcG9ydGxpYiwgc2luY2UgaXQgY291bGQgZXhlY3V0ZSBvdXRkYXRlZCBieXRlY29kZS4gKi8KKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoMSwgMCk7CisKKyAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZ0V4RmxhZ3ModGV4dCwgIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCwgTlVMTCwgMCk7CisgICAgaWYgKGNvZGUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtYXJzaGFsbGVkID0gUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoY29kZSwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKKyAgICBQeV9ERUNSRUYoY29kZSk7CisgICAgaWYgKG1hcnNoYWxsZWQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3QobWFyc2hhbGxlZCkpOworICAgIGRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBQeUJ5dGVzX0FTX1NUUklORyhtYXJzaGFsbGVkKTsKKyAgICBkYXRhX3NpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG1hcnNoYWxsZWQpOworCisgICAgLyogT3BlbiB0aGUgZmlsZSBpbiB0ZXh0IG1vZGUuIFRoZSBoZyBjaGVja291dCBzaG91bGQgYmUgdXNpbmcgdGhlIGVvbCBleHRlbnNpb24sCisgICAgICAgd2hpY2ggaW4gdHVybiBzaG91bGQgY2F1c2UgdGhlIEVPTCBzdHlsZSBtYXRjaCB0aGUgQyBsaWJyYXJ5J3MgdGV4dCBtb2RlICovCisgICAgb3V0ZmlsZSA9IGZvcGVuKG91dHBhdGgsICJ3Iik7CisgICAgaWYgKG91dGZpbGUgPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHdyaXRpbmdcbiIsIG91dHBhdGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZnByaW50ZihvdXRmaWxlLCAiJXNcbiIsIGhlYWRlcik7CisgICAgZnByaW50ZihvdXRmaWxlLCAidW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBmb3IgKG4gPSAwOyBuIDwgZGF0YV9zaXplOyBuICs9IDE2KSB7CisgICAgICAgIHNpemVfdCBpLCBlbmQgPSBQeV9NSU4obiArIDE2LCBkYXRhX3NpemUpOworICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgIik7CisgICAgICAgIGZvciAoaSA9IG47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiJWQsIiwgKHVuc2lnbmVkIGludCkgZGF0YVtpXSk7CisgICAgICAgIH0KKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiXG4iKTsKKyAgICB9CisgICAgZnByaW50ZihvdXRmaWxlLCAifTtcbiIpOworCisgICAgUHlfREVDUkVGKG1hcnNoYWxsZWQpOworCisgICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoaW5maWxlKQorICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpZiAob3V0ZmlsZSkgeworICAgICAgICBpZiAoZmVycm9yKG91dGZpbGUpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yIHdoZW4gd3JpdGluZyB0byAnJXMnXG4iLCBvdXRwYXRoKTsKKyAgICAgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoaW5maWxlKQorICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICBpZiAob3V0ZmlsZSkKKyAgICAgICAgZmNsb3NlKG91dGZpbGUpOworICAgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwppbmRleCBkOGEyODNiLi4zZmYwN2JjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwpAQCAtMTU1LDQ0ICsxNTUsOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJ0aWFsX2dldF9kaWN0KHBhcnRpYWxvYmplY3QgKnB0bykKLXsKLSAgICBpZiAocHRvLT5kaWN0ID09IE5VTEwpIHsKLSAgICAgICAgcHRvLT5kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAocHRvLT5kaWN0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHB0by0+ZGljdCk7Ci0gICAgcmV0dXJuIHB0by0+ZGljdDsKLX0KLQotc3RhdGljIGludAotcGFydGlhbF9zZXRfZGljdChwYXJ0aWFsb2JqZWN0ICpwdG8sIFB5T2JqZWN0ICp2YWx1ZSkKLXsKLSAgICBQeU9iamVjdCAqdG1wOwotCi0gICAgLyogSXQgaXMgaWxsZWdhbCB0byBkZWwgcC5fX2RpY3RfXyAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYSBwYXJ0aWFsIG9iamVjdCdzIGRpY3Rpb25hcnkgbWF5IG5vdCBiZSBkZWxldGVkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogQ2FuIG9ubHkgc2V0IF9fZGljdF9fIHRvIGEgZGljdGlvbmFyeSAqLwotICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbHVlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNldHRpbmcgcGFydGlhbCBvYmplY3QncyBkaWN0aW9uYXJ5IHRvIGEgbm9uLWRpY3QiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICB0bXAgPSBwdG8tPmRpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBwdG8tPmRpY3QgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeUdldFNldERlZiBwYXJ0aWFsX2dldHNldGxpc3RbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilwYXJ0aWFsX2dldF9kaWN0LCAoc2V0dGVyKXBhcnRpYWxfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMzMwLDYgKzI5NCwxNzYgQEAKIH07CiAKIAorLyogY21wX3RvX2tleSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmNtcDsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworfSBrZXlvYmplY3Q7CisKK3N0YXRpYyB2b2lkCitrZXlvYmplY3RfZGVhbGxvYyhrZXlvYmplY3QgKmtvKQoreworICAgIFB5X0RFQ1JFRihrby0+Y21wKTsKKyAgICBQeV9YREVDUkVGKGtvLT5vYmplY3QpOworICAgIFB5T2JqZWN0X0ZSRUUoa28pOworfQorCitzdGF0aWMgaW50CitrZXlvYmplY3RfdHJhdmVyc2Uoa2V5b2JqZWN0ICprbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoa28tPmNtcCk7CisgICAgaWYgKGtvLT5vYmplY3QpCisgICAgICAgIFB5X1ZJU0lUKGtvLT5vYmplY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitrZXlvYmplY3RfY2xlYXIoa2V5b2JqZWN0ICprbykKK3sKKyAgICBQeV9DTEVBUihrby0+Y21wKTsKKyAgICBpZiAoa28tPm9iamVjdCkKKyAgICAgICAgUHlfQ0xFQVIoa28tPm9iamVjdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1lbWJlckRlZiBrZXlvYmplY3RfbWVtYmVyc1tdID0geworICAgIHsib2JqIiwgVF9PQkpFQ1QsCisgICAgIG9mZnNldG9mKGtleW9iamVjdCwgb2JqZWN0KSwgMCwKKyAgICAgUHlEb2NfU1RSKCJWYWx1ZSB3cmFwcGVkIGJ5IGEga2V5IGZ1bmN0aW9uLiIpfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfY2FsbChrZXlvYmplY3QgKmtvLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGtleW9iamVjdF90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImZ1bmN0b29scy5LZXlXcmFwcGVyIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihrZXlvYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWtleW9iamVjdF9kZWFsbG9jLCAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICh0ZXJuYXJ5ZnVuYylrZXlvYmplY3RfY2FsbCwgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWtleW9iamVjdF90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWtleW9iamVjdF9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAga2V5b2JqZWN0X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBrZXlvYmplY3RfbWVtYmVycywgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X2NhbGwoa2V5b2JqZWN0ICprbywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAga2V5b2JqZWN0ICpyZXN1bHQ7CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJvYmoiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOksiLCBrd2FyZ3MsICZvYmplY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9OZXcoa2V5b2JqZWN0LCAma2V5b2JqZWN0X3R5cGUpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoa28tPmNtcCk7CisgICAgcmVzdWx0LT5jbXAgPSBrby0+Y21wOworICAgIFB5X0lOQ1JFRihvYmplY3QpOworICAgIHJlc3VsdC0+b2JqZWN0ID0gb2JqZWN0OworICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitrZXlvYmplY3RfcmljaGNvbXBhcmUoUHlPYmplY3QgKmtvLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICp4OworICAgIFB5T2JqZWN0ICp5OworICAgIFB5T2JqZWN0ICpjb21wYXJlOworICAgIFB5T2JqZWN0ICphbnN3ZXI7CisgICAgc3RhdGljIFB5T2JqZWN0ICp6ZXJvOworCisgICAgaWYgKHplcm8gPT0gTlVMTCkgeworICAgICAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOworICAgICAgICBpZiAoIXplcm8pCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlfVFlQRShvdGhlcikgIT0gJmtleW9iamVjdF90eXBlKXsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm90aGVyIGFyZ3VtZW50IG11c3QgYmUgSyBpbnN0YW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY29tcGFyZSA9ICgoa2V5b2JqZWN0ICopIGtvKS0+Y21wOworICAgIGFzc2VydChjb21wYXJlICE9IE5VTEwpOworICAgIHggPSAoKGtleW9iamVjdCAqKSBrbyktPm9iamVjdDsKKyAgICB5ID0gKChrZXlvYmplY3QgKikgb3RoZXIpLT5vYmplY3Q7CisgICAgaWYgKCF4IHx8ICF5KXsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAib2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENhbGwgdGhlIHVzZXIncyBjb21wYXJpc29uIGZ1bmN0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIDMtd2F5CisgICAgICogcmVzdWx0IGludG8gdHJ1ZSBvciBmYWxzZSAob3IgZXJyb3IpLgorICAgICAqLworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoeCk7CisgICAgUHlfSU5DUkVGKHkpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgeCk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB5KTsKKyAgICByZXMgPSBQeU9iamVjdF9DYWxsKGNvbXBhcmUsIGFyZ3MsIE5VTEwpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFuc3dlciA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHJlcywgemVybywgb3ApOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiBhbnN3ZXI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdW5jdG9vbHNfY21wX3RvX2tleShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpjbXA7CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJteWNtcCIsIE5VTEx9OworICAgIGtleW9iamVjdCAqb2JqZWN0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86Y21wX3RvX2tleSIsIGt3YXJncywgJmNtcCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9iamVjdCA9IFB5T2JqZWN0X05ldyhrZXlvYmplY3QsICZrZXlvYmplY3RfdHlwZSk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihjbXApOworICAgIG9iamVjdC0+Y21wID0gY21wOworICAgIG9iamVjdC0+b2JqZWN0ID0gTlVMTDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqZWN0OworfQorCitQeURvY19TVFJWQVIoZnVuY3Rvb2xzX2NtcF90b19rZXlfZG9jLAorIkNvbnZlcnQgYSBjbXA9IGZ1bmN0aW9uIGludG8gYSBrZXk9IGZ1bmN0aW9uLiIpOworCiAvKiByZWR1Y2UgKHVzZWQgdG8gYmUgYSBidWlsdGluKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQxMyw2ICs1NDcsOCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKICAgICB7InJlZHVjZSIsICAgICAgICAgIGZ1bmN0b29sc19yZWR1Y2UsICAgICBNRVRIX1ZBUkFSR1MsIGZ1bmN0b29sc19yZWR1Y2VfZG9jfSwKKyAgICB7ImNtcF90b19rZXkiLCAgICAgIChQeUNGdW5jdGlvbilmdW5jdG9vbHNfY21wX3RvX2tleSwKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZnVuY3Rvb2xzX2NtcF90b19rZXlfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2VzdGFsdC5jIGIvTW9kdWxlcy9fZ2VzdGFsdC5jCmluZGV4IGE0NTc4MGYuLmNkMzA2ODMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dlc3RhbHQuYworKysgYi9Nb2R1bGVzL19nZXN0YWx0LmMKQEAgLTMzLDcgKzMzLDcgQEAKIGNvbnZlcnRfdG9fT1NUeXBlKFB5T2JqZWN0ICp2LCBPU1R5cGUgKnByKQogewogICAgIHVpbnQzMl90IHRtcDsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeVVuaWNvZGVfR2V0U2l6ZSh2KSAhPSA0KSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikgfHwgUHlVbmljb2RlX0dldExlbmd0aCh2KSAhPSA0KSB7CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIk9TVHlwZSBhcmcgbXVzdCBiZSBzdHJpbmcgb2YgNCBjaGFycyIpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggZGQ0MzE3Zi4uZDM3Njg5ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0yMDEsMTMgKzIwMSwxMSBAQAogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPGRpZ2VzdF9zaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CiAgICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGhleF9kaWdlc3QsIGRpZ2VzdF9zaXplICogMik7CiAgICAgUHlNZW1fRnJlZShoZXhfZGlnZXN0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggZTE4YWVjNi4uZDNhODdlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTEsOSArMSw5IEBACiAvKgogICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgSS9PIGxpYiBhcyBkZWZpbmVkIGJ5IFBFUCAzMTE2IC0gIk5ldyBJL08iCi0gICAgCisKICAgICBDbGFzc2VzIGRlZmluZWQgaGVyZTogVW5zdXBwb3J0ZWRPcGVyYXRpb24sIEJsb2NraW5nSU9FcnJvci4KICAgICBGdW5jdGlvbnMgZGVmaW5lZCBoZXJlOiBvcGVuKCkuCi0gICAgCisKICAgICBNb3N0bHkgd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogKi8KIApAQCAtMzYsNiArMzYsNyBAQAogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFibGU7CitQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhbGw7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkbGluZTsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVzZXQ7CkBAIC05MCw5NCArOTEsMTEgQEAKIAwKIAogLyoKLSAqIEJsb2NraW5nSU9FcnJvciBleHRlbmRzIElPRXJyb3IKLSAqLwotCi1zdGF0aWMgaW50Ci1ibG9ja2luZ2lvZXJyb3JfaW5pdChQeUJsb2NraW5nSU9FcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmJhc2VhcmdzID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHdyaXR0ZW4gPSAwOwotCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotCi0gICAgc2VsZi0+d3JpdHRlbiA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOkJsb2NraW5nSU9FcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZteWVycm5vLCAmc3RyZXJyb3IsICZ3cml0dGVuKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgYmFzZWFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgbXllcnJubywgc3RyZXJyb3IpOwotICAgIGlmIChiYXNlYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogVGhpcyB3aWxsIHRha2UgY2FyZSBvZiBpbml0aWFsaXppbmcgb2YgbXllcnJubyBhbmQgc3RyZXJyb3IgbWVtYmVycyAqLwotICAgIGlmICgoKFB5VHlwZU9iamVjdCAqKVB5RXhjX0lPRXJyb3IpLT50cF9pbml0KAotICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKXNlbGYsIGJhc2VhcmdzLCBrd2RzKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoYmFzZWFyZ3MpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihiYXNlYXJncyk7Ci0KLSAgICBzZWxmLT53cml0dGVuID0gd3JpdHRlbjsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIFB5TWVtYmVyRGVmIGJsb2NraW5naW9lcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJjaGFyYWN0ZXJzX3dyaXR0ZW4iLCBUX1BZU1NJWkVULCBvZmZzZXRvZihQeUJsb2NraW5nSU9FcnJvck9iamVjdCwgd3JpdHRlbiksIDB9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX0Jsb2NraW5nSU9FcnJvciA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiQmxvY2tpbmdJT0Vycm9yIiwgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIFB5RG9jX1NUUigiRXhjZXB0aW9uIHJhaXNlZCB3aGVuIEkvTyB3b3VsZCBibG9jayAiCi0gICAgICAgICAgICAgICJvbiBhIG5vbi1ibG9ja2luZyBJL08gc3RyZWFtIiksIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBibG9ja2luZ2lvZXJyb3JfbWVtYmVycywgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYylibG9ja2luZ2lvZXJyb3JfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci1QeU9iamVjdCAqUHlFeGNfQmxvY2tpbmdJT0Vycm9yID0gKFB5T2JqZWN0ICopJl9QeUV4Y19CbG9ja2luZ0lPRXJyb3I7Ci0MCi0KLS8qCiAgKiBUaGUgbWFpbiBvcGVuKCkgZnVuY3Rpb24KICAqLwogUHlEb2NfU1RSVkFSKG9wZW5fZG9jLAogIm9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSxcbiIKLSIgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSkgLT4gZmlsZSBvYmplY3RcbiIKKyIgICAgIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpIC0+IGZpbGUgb2JqZWN0XG4iCiAiXG4iCiAiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS5cbiIKICJcbiIKQEAgLTE5MCwxOCArMTA4LDIwIEBACiAibW9kZSBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGVcbiIKICJpcyBvcGVuZWQuIEl0IGRlZmF1bHRzIHRvICdyJyB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHRcbiIKICJtb2RlLiAgT3RoZXIgY29tbW9uIHZhbHVlcyBhcmUgJ3cnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCi0iaXQgYWxyZWFkeSBleGlzdHMpLCBhbmQgJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLFxuIgotIm1lYW5zIHRoYXQgYWxsIHdyaXRlcyBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZVxuIgotImN1cnJlbnQgc2VlayBwb3NpdGlvbikuIEluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGVcbiIKLSJlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhd1xuIgotImJ5dGVzIHVzZSBiaW5hcnkgbW9kZSBhbmQgbGVhdmUgZW5jb2RpbmcgdW5zcGVjaWZpZWQuKSBUaGUgYXZhaWxhYmxlXG4iCi0ibW9kZXMgYXJlOlxuIgorIml0IGFscmVhZHkgZXhpc3RzKSwgJ3gnIGZvciBjcmVhdGluZyBhbmQgd3JpdGluZyB0byBhIG5ldyBmaWxlLCBhbmRcbiIKKyInYScgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlc1xuIgorImFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuXG4iCisiSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtXG4iCisiZGVwZW5kZW50OiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGlzIGNhbGxlZCB0byBnZXQgdGhlXG4iCisiY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeVxuIgorIm1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6XG4iCiAiXG4iCiAiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgogIkNoYXJhY3RlciBNZWFuaW5nXG4iCiAiLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgogIidyJyAgICAgICBvcGVuIGZvciByZWFkaW5nIChkZWZhdWx0KVxuIgogIid3JyAgICAgICBvcGVuIGZvciB3cml0aW5nLCB0cnVuY2F0aW5nIHRoZSBmaWxlIGZpcnN0XG4iCisiJ3gnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nXG4iCiAiJ2EnICAgICAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0c1xuIgogIidiJyAgICAgICBiaW5hcnkgbW9kZVxuIgogIid0JyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpXG4iCkBAIC0yMTIsNyArMTMyLDggQEAKICJcbiIKICJUaGUgZGVmYXVsdCBtb2RlIGlzICdydCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tXG4iCiAiYWNjZXNzLCB0aGUgbW9kZSAndytiJyBvcGVucyBhbmQgdHJ1bmNhdGVzIHRoZSBmaWxlIHRvIDAgYnl0ZXMsIHdoaWxlXG4iCi0iJ3IrYicgb3BlbnMgdGhlIGZpbGUgd2l0aG91dCB0cnVuY2F0aW9uLlxuIgorIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlICd4JyBtb2RlIGltcGxpZXMgJ3cnIGFuZFxuIgorInJhaXNlcyBhbiBgRmlsZUV4aXN0c0Vycm9yYCBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cy5cbiIKICJcbiIKICJQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsXG4iCiAiZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndC4gRmlsZXMgb3BlbmVkIGluXG4iCkBAIC0yNzIsNiArMTkzLDEyIEBACiAid2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuXG4iCiAiYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuXG4iCiAiXG4iCisiQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlXG4iCisidW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5XG4iCisiY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuXG4iCisiZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5XG4iCisic2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLlxuIgorIlxuIgogIm9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmRcbiIKICJ0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nXG4iCiAiYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoJ3cnLFxuIgpAQCAtMjkyLDI1ICsyMTksMjkgQEAKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwKLSAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VmZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpmaWxlOworICAgICAgICAgICAgICAgICAgICAgICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaWxlLCAqb3BlbmVyID0gUHlfTm9uZTsKICAgICBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMSwgY2xvc2VmZCA9IDE7CiAgICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMLCAqZXJyb3JzID0gTlVMTCwgKm5ld2xpbmUgPSBOVUxMOwogICAgIHVuc2lnbmVkIGk7CiAKLSAgICBpbnQgcmVhZGluZyA9IDAsIHdyaXRpbmcgPSAwLCBhcHBlbmRpbmcgPSAwLCB1cGRhdGluZyA9IDA7CisgICAgaW50IGNyZWF0aW5nID0gMCwgcmVhZGluZyA9IDAsIHdyaXRpbmcgPSAwLCBhcHBlbmRpbmcgPSAwLCB1cGRhdGluZyA9IDA7CiAgICAgaW50IHRleHQgPSAwLCBiaW5hcnkgPSAwLCB1bml2ZXJzYWwgPSAwOwogCi0gICAgY2hhciByYXdtb2RlWzVdLCAqbTsKKyAgICBjaGFyIHJhd21vZGVbNl0sICptOwogICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNhdHR5OwogCiAgICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyID0gTlVMTCwgKndyYXBwZXIgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppOm9wZW4iLCBrd2xpc3QsCisgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbm8pOworICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2l6enppTzpvcGVuIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyNiw2ICsyNTcsOSBAQAogICAgICAgICBjaGFyIGMgPSBtb2RlW2ldOwogCiAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGNyZWF0aW5nID0gMTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgIHJlYWRpbmcgPSAxOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zNjIsNiArMjk2LDcgQEAKICAgICB9CiAKICAgICBtID0gcmF3bW9kZTsKKyAgICBpZiAoY3JlYXRpbmcpICAqKG0rKykgPSAneCc7CiAgICAgaWYgKHJlYWRpbmcpICAgKihtKyspID0gJ3InOwogICAgIGlmICh3cml0aW5nKSAgICoobSsrKSA9ICd3JzsKICAgICBpZiAoYXBwZW5kaW5nKSAqKG0rKykgPSAnYSc7CkBAIC0zODQsOSArMzE5LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgeworICAgIGlmIChjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiBjcmVhdGUvcmVhZC93cml0ZS9hcHBlbmQgbW9kZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQxMCw3ICszNDUsNyBAQAogCiAgICAgLyogQ3JlYXRlIHRoZSBSYXcgZmlsZSBzdHJlYW0gKi8KICAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGUsCi0JCQkJIk9zaSIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIGZpbGUsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAgICAgaWYgKHJhdyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDIwLDcgKzM1NSw3IEBACiAKICAgICAvKiBidWZmZXJpbmcgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJhdywgImlzYXR0eSIsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlzYXR0eSA9IFB5TG9uZ19Bc0xvbmcocmVzKTsKQEAgLTQ0Miw3ICszNzcsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKICAgICAgICAgICAgIGxvbmcgZmlsZW5vOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmF3LCAiZmlsZW5vIiwgTlVMTCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNDgwLDcgKzQxNSw3IEBACiAKICAgICAgICAgaWYgKHVwZGF0aW5nKQogICAgICAgICAgICAgQnVmZmVyZWRfY2xhc3MgPSAoUHlPYmplY3QgKikmUHlCdWZmZXJlZFJhbmRvbV9UeXBlOwotICAgICAgICBlbHNlIGlmICh3cml0aW5nIHx8IGFwcGVuZGluZykKKyAgICAgICAgZWxzZSBpZiAoY3JlYXRpbmcgfHwgd3JpdGluZyB8fCBhcHBlbmRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkV3JpdGVyX1R5cGU7CiAgICAgICAgIGVsc2UgaWYgKHJlYWRpbmcpCiAgICAgICAgICAgICBCdWZmZXJlZF9jbGFzcyA9IChQeU9iamVjdCAqKSZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGU7CkBAIC01MTMsNyArNDQ4LDcgQEAKICAgICBpZiAod3JhcHBlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcod3JhcHBlciwgIm1vZGUiLCBtb2Rlb2JqKSA8IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQod3JhcHBlciwgJlB5SWRfbW9kZSwgbW9kZW9iaikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0RFQ1JFRihtb2Rlb2JqKTsKICAgICByZXR1cm4gd3JhcHBlcjsKQEAgLTU3Niw3ICs1MTEsNyBAQAogCiAKIC8qIEJhc2ljYWxseSB0aGUgIm4iIGZvcm1hdCBjb2RlIHdpdGggdGhlIGFiaWxpdHkgdG8gdHVybiBOb25lIGludG8gLTEuICovCi1pbnQgCitpbnQKIF9QeUlPX0NvbnZlcnRTc2l6ZV90KFB5T2JqZWN0ICpvYmosIHZvaWQgKnJlc3VsdCkgewogICAgIFB5X3NzaXplX3QgbGltaXQ7CiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CkBAIC02MDMsNyArNTM4LDYgQEAKICAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19NT0RfU1RBVEUobW9kKTsKICAgICBpZiAoIXN0YXRlLT5pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUHlfVklTSVQoc3RhdGUtPm9zX21vZHVsZSk7CiAgICAgaWYgKHN0YXRlLT5sb2NhbGVfbW9kdWxlICE9IE5VTEwpIHsKICAgICAgICAgUHlfVklTSVQoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIH0KQEAgLTYxNyw3ICs1NTEsNiBAQAogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX01PRF9TVEFURShtb2QpOwogICAgIGlmICghc3RhdGUtPmluaXRpYWxpemVkKQogICAgICAgICByZXR1cm4gMDsKLSAgICBQeV9DTEVBUihzdGF0ZS0+b3NfbW9kdWxlKTsKICAgICBpZiAoc3RhdGUtPmxvY2FsZV9tb2R1bGUgIT0gTlVMTCkKICAgICAgICAgUHlfQ0xFQVIoc3RhdGUtPmxvY2FsZV9tb2R1bGUpOwogICAgIFB5X0NMRUFSKHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pOwpAQCAtNjYxLDExICs1OTQsNiBAQAogICAgIHN0YXRlID0gSU9fTU9EX1NUQVRFKG0pOwogICAgIHN0YXRlLT5pbml0aWFsaXplZCA9IDA7CiAKLSAgICAvKiBwdXQgb3MgaW4gdGhlIG1vZHVsZSBzdGF0ZSAqLwotICAgIHN0YXRlLT5vc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm9zIik7Ci0gICAgaWYgKHN0YXRlLT5vc19tb2R1bGUgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOwotCiAjZGVmaW5lIEFERF9UWVBFKHR5cGUsIG5hbWUpIFwKICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgXAogICAgICAgICBnb3RvIGZhaWw7IFwKQEAgLTY5MCw5ICs2MTgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQmxvY2tpbmdJT0Vycm9yICovCi0gICAgX1B5RXhjX0Jsb2NraW5nSU9FcnJvci50cF9iYXNlID0gKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JT0Vycm9yOwotICAgIEFERF9UWVBFKCZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yLCAiQmxvY2tpbmdJT0Vycm9yIik7CisgICAgLyogQmxvY2tpbmdJT0Vycm9yLCBmb3IgY29tcGF0aWJpbGl0eSAqLworICAgIFB5X0lOQ1JFRihQeUV4Y19CbG9ja2luZ0lPRXJyb3IpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJsb2NraW5nSU9FcnJvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yKSA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKIAogICAgIC8qIENvbmNyZXRlIGJhc2UgdHlwZXMgb2YgdGhlIElPIEFCQ3MuCiAgICAgICAgKHRoZSBBQkNzIHRoZW1zZWx2ZXMgYXJlIGRlY2xhcmVkIHRocm91Z2ggaW5oZXJpdGFuY2UgaW4gaW8ucHkpCkBAIC03NTgsNiArNjg4LDcgQEAKICAgICBBRERfSU5URVJORUQocmVhZCkKICAgICBBRERfSU5URVJORUQocmVhZDEpCiAgICAgQUREX0lOVEVSTkVEKHJlYWRhYmxlKQorICAgIEFERF9JTlRFUk5FRChyZWFkYWxsKQogICAgIEFERF9JTlRFUk5FRChyZWFkaW50bykKICAgICBBRERfSU5URVJORUQocmVhZGxpbmUpCiAgICAgQUREX0lOVEVSTkVEKHJlc2V0KQpAQCAtNzg4LDcgKzcxOSw2IEBACiAgICAgcmV0dXJuIG07CiAKICAgZmFpbDoKLSAgICBQeV9YREVDUkVGKHN0YXRlLT5vc19tb2R1bGUpOwogICAgIFB5X1hERUNSRUYoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbik7CiAgICAgUHlfREVDUkVGKG0pOwogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCBhYThiZmQ2Li4wZmU5MGEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtNTAsMTIgKzUwLDEyIEBACiAgICBgKmNvbnN1bWVkYC4KICAgIElmIG5vdCBmb3VuZCwgcmV0dXJucyAtMSBhbmQgc2V0cyBgKmNvbnN1bWVkYCB0byB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKICAgIHdoaWNoIGNhbiBiZSBzYWZlbHkgcHV0IGFzaWRlIHVudGlsIGFub3RoZXIgc2VhcmNoLgotICAgCi0gICBOT1RFOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgYGVuZGAgbXVzdCBwb2ludCB0byBhIE5VTCBjaGFyYWN0ZXIgKCdcMCcpLiAKKworICAgTk9URTogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGBlbmRgIG11c3QgcG9pbnQgdG8gYSBOVUwgY2hhcmFjdGVyICgnXDAnKS4KICAgIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHdpbGwgc2NhbiBmdXJ0aGVyIGFuZCByZXR1cm4gZ2FyYmFnZS4gKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgUHlfVU5JQ09ERSAqc3RhcnQsIFB5X1VOSUNPREUgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtNjUsMTUgKzY1LDYgQEAKIAogI2RlZmluZSBERUZBVUxUX0JVRkZFUl9TSVpFICg4ICogMTAyNCkgIC8qIGJ5dGVzICovCiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeUV4Y2VwdGlvbl9IRUFECi0gICAgUHlPYmplY3QgKm15ZXJybm87Ci0gICAgUHlPYmplY3QgKnN0cmVycm9yOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsgLyogTm90IHVzZWQsIGJ1dCBwYXJ0IG9mIHRoZSBJT0Vycm9yIG9iamVjdCAqLwotICAgIFB5X3NzaXplX3Qgd3JpdHRlbjsKLX0gUHlCbG9ja2luZ0lPRXJyb3JPYmplY3Q7Ci1leHRlcm4gUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKLQogLyoKICAqIE9mZnNldCB0eXBlIGZvciBwb3NpdGlvbmluZy4KICAqLwpAQCAtMTM4LDcgKzEyOSw2IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgaW5pdGlhbGl6ZWQ7Ci0gICAgUHlPYmplY3QgKm9zX21vZHVsZTsKICAgICBQeU9iamVjdCAqbG9jYWxlX21vZHVsZTsKIAogICAgIFB5T2JqZWN0ICp1bnN1cHBvcnRlZF9vcGVyYXRpb247CkBAIC0xNjAsNiArMTUwLDcgQEAKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWQ7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkMTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGFsbDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRpbnRvOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZXNldDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCBiYjc3YWNjLi4zMzQ3MzRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBCdWZmZXJlZCBJL08gYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IEJ1ZmZlcmVkSU9CYXNlLCBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIsCiAgICAgQnVmZmVyZWRSYW5kb20uCi0gICAgCisKICAgICBXcml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjIGFuZCBBbnRvaW5lIFBpdHJvdQogKi8KIApAQCAtMTMsNiArMTMsMjAgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKGlzYXR0eSk7CitfUHlfSURFTlRJRklFUihtb2RlKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIocGVlayk7CitfUHlfSURFTlRJRklFUihyZWFkKTsKK19QeV9JREVOVElGSUVSKHJlYWQxKTsKK19QeV9JREVOVElGSUVSKHJlYWRhYmxlKTsKK19QeV9JREVOVElGSUVSKHJlYWRpbnRvKTsKK19QeV9JREVOVElGSUVSKHdyaXRhYmxlKTsKK19QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogLyoKICAqIEJ1ZmZlcmVkSU9CYXNlIGNsYXNzLCBpbmhlcml0cyBmcm9tIElPQmFzZS4KICAqLwpAQCAtMzgsMTIgKzUyLDEzIEBACiAgICAgUHlfYnVmZmVyIGJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGF0YTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZCIsICJuIiwgYnVmLmxlbik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBidWYubGVuKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xOTgsNyArMjEzLDcgQEAKICAgICBpbnQgcmVhZGFibGU7CiAgICAgaW50IHdyaXRhYmxlOwogICAgIGludCBkZWFsbG9jYXRpbmc7Ci0gICAgCisKICAgICAvKiBUcnVlIGlmIHRoaXMgaXMgYSB2YW5pbGxhIEJ1ZmZlcmVkIG9iamVjdCAocmF0aGVyIHRoYW4gYSB1c2VyIGRlcml2ZWQKICAgICAgICBjbGFzcykgKmFuZCogdGhlIHJhdyBzdHJlYW0gaXMgYSB2YW5pbGxhIEZpbGVJTyBvYmplY3QuICovCiAgICAgaW50IGZhc3RfY2xvc2VkX2NoZWNrczsKQEAgLTIzNyw3ICsyNTIsNyBAQAogCiAvKgogICAgIEltcGxlbWVudGF0aW9uIG5vdGVzOgotICAgIAorCiAgICAgKiBCdWZmZXJlZFJlYWRlciwgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tIHRyeSB0byBzaGFyZSBtb3N0CiAgICAgICBtZXRob2RzICh0aGlzIGlzIGhlbHBlZCBieSB0aGUgbWVtYmVycyBgcmVhZGFibGVgIGFuZCBgd3JpdGFibGVgLCB3aGljaAogICAgICAgYXJlIGluaXRpYWxpemVkIGluIHRoZSByZXNwZWN0aXZlIGNvbnN0cnVjdG9ycykKQEAgLTI1NSw3ICsyNzAsNyBAQAogICAgIE5PVEU6IHdlIHNob3VsZCB0cnkgdG8gbWFpbnRhaW4gYmxvY2sgYWxpZ25tZW50IG9mIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlCiAgICAgcmF3IHN0cmVhbSAoYWNjb3JkaW5nIHRvIHRoZSBidWZmZXIgc2l6ZSksIGJ1dCBmb3Igbm93IGl0IGlzIG9ubHkgZG9uZQogICAgIGluIHJlYWQoKSBhbmQgZnJpZW5kcy4KLSAgICAKKwogKi8KIAogLyogVGhlc2UgbWFjcm9zIHByb3RlY3QgdGhlIGJ1ZmZlcmVkIG9iamVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgb3BlcmF0aW9ucy4gKi8KQEAgLTQyMSw3ICs0MzYsNyBAQAogewogICAgIGlmIChzZWxmLT5vayAmJiBzZWxmLT5yYXcpIHsKICAgICAgICAgUHlPYmplY3QgKnI7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPnJhdywgIl9kZWFsbG9jX3dhcm4iLCAiTyIsIHNvdXJjZSk7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnJhdywgJlB5SWRfX2RlYWxsb2Nfd2FybiwgIk8iLCBzb3VyY2UpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtNTU0LDE0ICs1NjksMTQgQEAKIGJ1ZmZlcmVkX25hbWVfZ2V0KGJ1ZmZlcmVkICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZi0+cmF3LCAibmFtZSIpOworICAgIHJldHVybiBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYtPnJhdywgJlB5SWRfbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWZmZXJlZF9tb2RlX2dldChidWZmZXJlZCAqc2VsZiwgdm9pZCAqY29udGV4dCkKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPnJhdywgIm1vZGUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5yYXcsICZQeUlkX21vZGUpOwogfQogCiAvKiBMb3dlci1sZXZlbCBBUElzICovCkBAIC02MDAsMTQgKzYxNSwxNSBAQAogc3RhdGljIHZvaWQKIF9idWZmZXJlZHdyaXRlcl9yZXNldF9idWYoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKLV9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKK19idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9hbGwoYnVmZmVyZWQgKnNlbGYpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2Zhc3QoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOwogc3RhdGljIFB5T2JqZWN0ICoKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2dlbmVyaWMoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QpOwotCitzdGF0aWMgUHlfc3NpemVfdAorX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKGJ1ZmZlcmVkICpzZWxmLCBjaGFyICpzdGFydCwgUHlfc3NpemVfdCBsZW4pOwogCiAvKgogICogSGVscGVycwpAQCAtNjMxLDE0ICs2NDcsMTQgQEAKIF9idWZmZXJlZF9jaGVja19ibG9ja2luZ19lcnJvcih2b2lkKQogewogICAgIFB5T2JqZWN0ICp0LCAqdiwgKnRiOwotICAgIFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0ICplcnI7CisgICAgUHlPU0Vycm9yT2JqZWN0ICplcnI7CiAKICAgICBQeUVycl9GZXRjaCgmdCwgJnYsICZ0Yik7CiAgICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHYsIFB5RXhjX0Jsb2NraW5nSU9FcnJvcikpIHsKICAgICAgICAgUHlFcnJfUmVzdG9yZSh0LCB2LCB0Yik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcnIgPSAoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKikgdjsKKyAgICBlcnIgPSAoUHlPU0Vycm9yT2JqZWN0ICopIHY7CiAgICAgLyogVE9ETzogc2FuaXR5IGNoZWNrIChlcnItPndyaXR0ZW4gPj0gMCkgKi8KICAgICBQeUVycl9SZXN0b3JlKHQsIHYsIHRiKTsKICAgICByZXR1cm4gJmVyci0+d3JpdHRlbjsKQEAgLTY1OCw3ICs2NzQsNyBAQAogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmF3IHN0cmVhbSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uICUiIFBZX1BSSWRPRkYsCi0JCQkgKFBZX09GRl9UX0NPTVBBVCluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfT0ZGX1RfQ09NUEFUKW4pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNlbGYtPmFic19wb3MgPSBuOwpAQCAtNjkxLDcgKzcwNyw3IEBACiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJSYXcgc3RyZWFtIHJldHVybmVkIGludmFsaWQgcG9zaXRpb24gJSIgUFlfUFJJZE9GRiwKLQkJCSAoUFlfT0ZGX1RfQ09NUEFUKW4pOworICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9PRkZfVF9DT01QQVQpbik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2VsZi0+YWJzX3BvcyA9IG47CkBAIC04MzIsNyArODQ4LDcgQEAKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBQeV9DTEVBUihyZXMpOwogICAgIH0KLSAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChzZWxmLCBuKTsKKyAgICByZXMgPSBfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChzZWxmKTsKIAogZW5kOgogICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCkBAIC04OTYsNjEgKzkxMiwxMTIgQEAKICAgICBpZiAobiA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIAogICAgIC8qIFJldHVybiB1cCB0byBuIGJ5dGVzLiAgSWYgYXQgbGVhc3Qgb25lIGJ5dGUgaXMgYnVmZmVyZWQsIHdlCiAgICAgICAgb25seSByZXR1cm4gYnVmZmVyZWQgYnl0ZXMuICBPdGhlcndpc2UsIHdlIGRvIG9uZSByYXcgcmVhZC4gKi8KIAotICAgIC8qIFhYWDogdGhpcyBtaW1pY2tzIHRoZSBpby5weSBpbXBsZW1lbnRhdGlvbiBidXQgaXMgcHJvYmFibHkgd3JvbmcuCi0gICAgICAgSWYgd2UgbmVlZCB0byByZWFkIGZyb20gdGhlIHJhdyBzdHJlYW0sIHRoZW4gd2UgY291bGQgYWN0dWFsbHkgcmVhZAotICAgICAgIGFsbCBgbmAgYnl0ZXMgYXNrZWQgYnkgdGhlIGNhbGxlciAoYW5kIHBvc3NpYmx5IG1vcmUsIHNvIGFzIHRvIGZpbGwKLSAgICAgICBvdXIgYnVmZmVyIGZvciB0aGUgbmV4dCByZWFkcykuICovCi0KICAgICBoYXZlID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKICAgICBpZiAoaGF2ZSA+IDApIHsKLSAgICAgICAgaWYgKG4gPiBoYXZlKQotICAgICAgICAgICAgbiA9IGhhdmU7Ci0gICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBuOwotICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgbiA9IFB5X01JTihoYXZlLCBuKTsKKyAgICAgICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3JlYWRfZmFzdChzZWxmLCBuKTsKKyAgICAgICAgYXNzZXJ0KHJlcyAhPSBQeV9Ob25lKTsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0KLSAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKLSAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlbmQ7CisgICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpIHsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIC8qIEZpbGwgdGhlIGJ1ZmZlciBmcm9tIHRoZSByYXcgc3RyZWFtLCBhbmQgY29weSBpdCB0byB0aGUgcmVzdWx0LiAqLwogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7Ci0gICAgciA9IF9idWZmZXJlZHJlYWRlcl9maWxsX2J1ZmZlcihzZWxmKTsKLSAgICBpZiAociA9PSAtMSkKLSAgICAgICAgZ290byBlbmQ7CisgICAgciA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhyZXMpLCBuKTsKKyAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQorICAgIGlmIChyID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHIgPT0gLTIpCiAgICAgICAgIHIgPSAwOwogICAgIGlmIChuID4gcikKLSAgICAgICAgbiA9IHI7Ci0gICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWZmZXIsIG4pOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgc2VsZi0+cG9zID0gbjsKLQotZW5kOgotICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRfcmVhZGludG8oYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIFB5X2J1ZmZlciBidWY7CisgICAgUHlfc3NpemVfdCBuLCB3cml0dGVuID0gMCwgcmVtYWluaW5nOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICAKLSAgICAvKiBUT0RPOiB1c2UgcmF3LnJlYWRpbnRvKCkgKG9yIGEgZGlyZWN0IGNvcHkgZnJvbSBvdXIgYnVmZmVyKSBpbnN0ZWFkISAqLwotICAgIHJldHVybiBidWZmZXJlZGlvYmFzZV9yZWFkaW50bygoUHlPYmplY3QgKilzZWxmLCBhcmdzKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyo6cmVhZGludG8iLCAmYnVmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuID0gUHlfU0FGRV9ET1dOQ0FTVChSRUFEQUhFQUQoc2VsZiksIFB5X29mZl90LCBQeV9zc2l6ZV90KTsKKyAgICBpZiAobiA+IDApIHsKKyAgICAgICAgaWYgKG4gPj0gYnVmLmxlbikgeworICAgICAgICAgICAgbWVtY3B5KGJ1Zi5idWYsIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgYnVmLmxlbik7CisgICAgICAgICAgICBzZWxmLT5wb3MgKz0gYnVmLmxlbjsKKyAgICAgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdChidWYubGVuKTsKKyAgICAgICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworICAgICAgICB9CisgICAgICAgIG1lbWNweShidWYuYnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIG4pOworICAgICAgICBzZWxmLT5wb3MgKz0gbjsKKyAgICAgICAgd3JpdHRlbiA9IG47CisgICAgfQorCisgICAgaWYgKCFFTlRFUl9CVUZGRVJFRChzZWxmKSkKKyAgICAgICAgZ290byBlbmRfdW5sb2NrZWQ7CisKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUpIHsKKyAgICAgICAgcmVzID0gYnVmZmVyZWRfZmx1c2hfYW5kX3Jld2luZF91bmxvY2tlZChzZWxmKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCisgICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKKyAgICBzZWxmLT5wb3MgPSAwOworCisgICAgZm9yIChyZW1haW5pbmcgPSBidWYubGVuIC0gd3JpdHRlbjsKKyAgICAgICAgIHJlbWFpbmluZyA+IDA7CisgICAgICAgICB3cml0dGVuICs9IG4sIHJlbWFpbmluZyAtPSBuKSB7CisgICAgICAgIC8qIElmIHJlbWFpbmluZyBieXRlcyBpcyBsYXJnZXIgdGhhbiBpbnRlcm5hbCBidWZmZXIgc2l6ZSwgY29weQorICAgICAgICAgKiBkaXJlY3RseSBpbnRvIGNhbGxlcidzIGJ1ZmZlci4gKi8KKyAgICAgICAgaWYgKHJlbWFpbmluZyA+IHNlbGYtPmJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICBuID0gX2J1ZmZlcmVkcmVhZGVyX3Jhd19yZWFkKHNlbGYsIChjaGFyICopIGJ1Zi5idWYgKyB3cml0dGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9maWxsX2J1ZmZlcihzZWxmKTsKKyAgICAgICAgICAgIGlmIChuID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChuID4gcmVtYWluaW5nKQorICAgICAgICAgICAgICAgICAgICBuID0gcmVtYWluaW5nOworICAgICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKKyAgICAgICAgICAgICAgICBzZWxmLT5wb3MgKz0gbjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogc2hvcnQgY2lyY3VpdCAqLworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChuID09IDAgfHwgKG4gPT0gLTIgJiYgd3JpdHRlbiA+IDApKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgaWYgKG4gPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgcmVzID0gUHlfTm9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICB9CisgICAgfQorICAgIHJlcyA9IFB5TG9uZ19Gcm9tU3NpemVfdCh3cml0dGVuKTsKKworZW5kOgorICAgIExFQVZFX0JVRkZFUkVEKHNlbGYpOworZW5kX3VubG9ja2VkOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExMDEsOSArMTE2OCwyMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLCAmdGFyZ2V0b2JqLCAmd2hlbmNlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHdoZW5jZSA8IDAgfHwgd2hlbmNlID4gMikgeworCisgICAgLyogRG8gc29tZSBlcnJvciBjaGVja2luZyBpbnN0ZWFkIG9mIHRydXN0aW5nIE9TICdzZWVrKCknCisgICAgKiogZXJyb3IgZGV0ZWN0aW9uLCBqdXN0IGluIGNhc2UuCisgICAgKi8KKyAgICBpZiAoKHdoZW5jZSA8IDAgfHwgd2hlbmNlID4yKQorI2lmZGVmIFNFRUtfSE9MRQorICAgICAgICAmJiAod2hlbmNlICE9IFNFRUtfSE9MRSkKKyNlbmRpZgorI2lmZGVmIFNFRUtfREFUQQorICAgICAgICAmJiAod2hlbmNlICE9IFNFRUtfREFUQSkKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAid2hlbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyLCBub3QgJWQiLCB3aGVuY2UpOworICAgICAgICAgICAgICAgICAgICAgIndoZW5jZSB2YWx1ZSAlZCB1bnN1cHBvcnRlZCIsIHdoZW5jZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTExNiw3ICsxMTk0LDExIEBACiAgICAgaWYgKHRhcmdldCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICh3aGVuY2UgIT0gMiAmJiBzZWxmLT5yZWFkYWJsZSkgeworICAgIC8qIFNFRUtfU0VUIGFuZCBTRUVLX0NVUiBhcmUgc3BlY2lhbCBiZWNhdXNlIHdlIGNvdWxkIHNlZWsgaW5zaWRlIHRoZQorICAgICAgIGJ1ZmZlci4gT3RoZXIgd2hlbmNlIHZhbHVlcyBtdXN0IGJlIG1hbmFnZWQgd2l0aG91dCB0aGlzIG9wdGltaXphdGlvbi4KKyAgICAgICBTb21lIE9wZXJhdGluZyBTeXN0ZW1zIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCisgICAgICAgU0VFS19IT0xFL1NFRUtfREFUQS4gKi8KKyAgICBpZiAoKCh3aGVuY2UgPT0gMCkgfHwgKHdoZW5jZSA9PSAxKSkgJiYgc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgUHlfb2ZmX3QgY3VycmVudCwgYXZhaWw7CiAgICAgICAgIC8qIENoZWNrIGlmIHNlZWtpbmcgbGVhdmVzIHVzIGluc2lkZSB0aGUgY3VycmVudCBidWZmZXIsCiAgICAgICAgICAgIHNvIGFzIHRvIHJldHVybiBxdWlja2x5IGlmIHBvc3NpYmxlLiBBbHNvLCB3ZSBuZWVkbid0IHRha2UgdGhlCkBAIC0xMjQyLDcgKzEzMjQsNyBAQAogewogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCi0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTEzNjgsMzMgKzE0NTAsNjAgQEAKIF9idWZmZXJlZHJlYWRlcl9yZWFkX2FsbChidWZmZXJlZCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGN1cnJlbnRfc2l6ZTsKLSAgICBQeU9iamVjdCAqcmVzLCAqZGF0YSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmNodW5rcyA9IFB5TGlzdF9OZXcoMCk7Ci0KLSAgICBpZiAoY2h1bmtzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMsICpkYXRhID0gTlVMTCwgKmNodW5rLCAqY2h1bmtzOwogCiAgICAgLyogRmlyc3QgY29weSB3aGF0IHdlIGhhdmUgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAqLwogICAgIGN1cnJlbnRfc2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CiAgICAgaWYgKGN1cnJlbnRfc2l6ZSkgewogICAgICAgICBkYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgY3VycmVudF9zaXplKTsKLSAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBzZWxmLT5wb3MgKz0gY3VycmVudF9zaXplOwogICAgIH0KICAgICAvKiBXZSdyZSBnb2luZyBwYXN0IHRoZSBidWZmZXIncyBib3VuZHMsIGZsdXNoIGl0ICovCiAgICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7CiAgICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIFB5X0NMRUFSKHJlcyk7CiAgICAgfQogICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CisKKyAgICBpZiAoUHlPYmplY3RfSGFzQXR0cihzZWxmLT5yYXcsIF9QeUlPX3N0cl9yZWFkYWxsKSkgeworICAgICAgICBjaHVuayA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPnJhdywgX1B5SU9fc3RyX3JlYWRhbGwsIE5VTEwpOworICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoY2h1bmsgIT0gUHlfTm9uZSAmJiAhUHlCeXRlc19DaGVjayhjaHVuaykpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZGF0YSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmspOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRhbGwoKSBzaG91bGQgcmV0dXJuIGJ5dGVzIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2h1bmsgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgaWYgKGN1cnJlbnRfc2l6ZSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBjaHVuazsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVuayk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY3VycmVudF9zaXplKSB7CisgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmZGF0YSwgY2h1bmspOworICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rKTsKKyAgICAgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gZGF0YTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gY2h1bms7CisgICAgfQorCisgICAgY2h1bmtzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoY2h1bmtzID09IE5VTEwpIHsKKyAgICAgICAgUHlfWERFQ1JFRihkYXRhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGNodW5rcywgZGF0YSkgPCAwKSB7CkBAIC0xNTU2LDcgKzE2NjUsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3QgbikKK19idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgaGF2ZSwgcjsKIApAQCAtMTU5OCw2ICsxNzA3LDcgQEAKICAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcGVlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWQxLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGludG8sIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkbGluZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2VlaywgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfdGVsbCwgTUVUSF9OT0FSR1N9LApAQCAtMTY2MywxNSArMTc3Myw2IEBACiAMCiAKIAotc3RhdGljIGludAotY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKHZvaWQpCi17Ci0gICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAibWF4X2J1ZmZlcl9zaXplIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAxOwotfQotCiAvKgogICogY2xhc3MgQnVmZmVyZWRXcml0ZXIKICAqLwpAQCAtMTY4MCw3ICsxNzgxLDcgQEAKICAgICAiXG4iCiAgICAgIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgQnVmZmVyZWRXcml0ZXIgZm9yIHRoZSBnaXZlbiB3cml0ZWFibGUgcmF3XG4iCiAgICAgInN0cmVhbS4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG9cbiIKLSAgICAiREVGQVVMVF9CVUZGRVJfU0laRS4gbWF4X2J1ZmZlcl9zaXplIGlzbid0IHVzZWQgYW55bW9yZS5cbiIKKyAgICAiREVGQVVMVF9CVUZGRVJfU0laRS5cbiIKICAgICApOwogCiBzdGF0aWMgdm9pZApAQCAtMTY5MywyMyArMTc5NCwxOCBAQAogc3RhdGljIGludAogYnVmZmVyZWR3cml0ZXJfaW5pdChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIC8qIFRPRE86IHByb3Blcmx5IGRlcHJlY2F0ZSBtYXhfYnVmZmVyX3NpemUgKi8KLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgIm1heF9idWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAgICAgUHlPYmplY3QgKnJhdzsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xubjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0yMDkxLDE2ICsyMTg3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlYWRlciwgKndyaXRlcjsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG5uOkJ1ZmZlcmVkUldQYWlyIiwgJnJlYWRlciwgJndyaXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCdWZmZXJlZFJXUGFpciIsICZyZWFkZXIsICZ3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChtYXhfYnVmZmVyX3NpemUgIT0gLTIzNCAmJiAhY29tcGxhaW5fYWJvdXRfbWF4X2J1ZmZlcl9zaXplKCkpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmVhZGVyLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZSh3cml0ZXIsIFB5X1RydWUpID09IE5VTEwpCkBAIC0yMTQ4LDEzICsyMjQwLDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZm9yd2FyZF9jYWxsKGJ1ZmZlcmVkICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqYXJncykKK19mb3J3YXJkX2NhbGwoYnVmZmVyZWQgKnNlbGYsIF9QeV9JZGVudGlmaWVyICpuYW1lLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgbmFtZSk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOwogICAgIFB5T2JqZWN0ICpyZXQ7CiAKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZS0+c3RyaW5nKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0yMTY2LDY2ICsyMjU4LDY2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZChyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInJlYWQiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWQsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcGVlayhyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgInBlZWsiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3BlZWssIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZDEocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkMSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZDEsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZGludG8ocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkaW50byIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZGludG8sIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfd3JpdGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJ3cml0ZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfZmx1c2gocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJmbHVzaCIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfZmx1c2gsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfcmVhZGFibGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkYWJsZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfcmVhZGFibGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfd3JpdGFibGUocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJ3cml0YWJsZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfd3JpdGFibGUsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfY2xvc2UocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICJjbG9zZSIsIGFyZ3MpOworICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfY2xvc2UsIGFyZ3MpOwogICAgIGlmIChyZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJldCk7CiAKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJjbG9zZSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfY2xvc2UsIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRyd3BhaXJfaXNhdHR5KHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiaXNhdHR5IiwgYXJncyk7CisgICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAmUHlJZF9pc2F0dHksIGFyZ3MpOwogCiAgICAgaWYgKHJldCAhPSBQeV9GYWxzZSkgewogICAgICAgICAvKiBlaXRoZXIgVHJ1ZSBvciBleGNlcHRpb24gKi8KQEAgLTIyMzMsNyArMjMyNSw3IEBACiAgICAgfQogICAgIFB5X0RFQ1JFRihyZXQpOwogCi0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAiaXNhdHR5IiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9pc2F0dHksIGFyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjMyNSwyOCArMjQxNywyNCBAQAogICAgICJcbiIKICAgICAiVGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSByZWFkZXIgYW5kIHdyaXRlciBmb3IgYSBzZWVrYWJsZSBzdHJlYW0sXG4iCiAgICAgInJhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdFxuIgotICAgICJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLiBtYXhfYnVmZmVyX3NpemUgaXNuJ3QgdXNlZCBhbnltb3JlLlxuIgorICAgICJkZWZhdWx0cyB0byBERUZBVUxUX0JVRkZFUl9TSVpFLlxuIgogICAgICk7CiAKIHN0YXRpYyBpbnQKIGJ1ZmZlcmVkcmFuZG9tX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgIm1heF9idWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIGNoYXIgKmt3bGlzdFtdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKLSAgICBQeV9zc2l6ZV90IG1heF9idWZmZXJfc2l6ZSA9IC0yMzQ7CiAgICAgUHlPYmplY3QgKnJhdzsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xubjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUsICZtYXhfYnVmZmVyX3NpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bjpCdWZmZXJlZFJlYWRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3NlZWthYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCmluZGV4IDQxNjQ1MzMuLjU0ODQwYmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYworKysgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKQEAgLTk2MiwxMyArOTYyLDExIEBACiBieXRlc2lvYnVmX2dldGJ1ZmZlcihieXRlc2lvYnVmICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewogICAgIGludCByZXQ7Ci0gICAgdm9pZCAqcHRyOwogICAgIGJ5dGVzaW8gKmIgPSAoYnl0ZXNpbyAqKSBvYmotPnNvdXJjZTsKICAgICBpZiAodmlldyA9PSBOVUxMKSB7CiAgICAgICAgIGItPmV4cG9ydHMrKzsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHB0ciA9ICh2b2lkICopIG9iajsKICAgICByZXQgPSBQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgYi0+YnVmLCBiLT5zdHJpbmdfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBmbGFncyk7CiAgICAgaWYgKHJldCA+PSAwKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDYwNWFkNTEuLjZlMGJiZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC00Niw2ICs0Niw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBmZDsKKyAgICB1bnNpZ25lZCBpbnQgY3JlYXRlZCA6IDE7CiAgICAgdW5zaWduZWQgaW50IHJlYWRhYmxlIDogMTsKICAgICB1bnNpZ25lZCBpbnQgd3JpdGFibGUgOiAxOwogICAgIHNpZ25lZCBpbnQgc2Vla2FibGUgOiAyOyAvKiAtMSBtZWFucyB1bmtub3duICovCkBAIC0xMjIsNiArMTIzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWxlaW9fY2xvc2UoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKICAgICBpZiAoIXNlbGYtPmNsb3NlZmQpIHsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xMzcsOCArMTM5LDggQEAKICAgICBpZiAoZXJybm8gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsb3NlIiwgIk8iLCBzZWxmKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Nsb3NlLCAiTyIsIHNlbGYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTUxLDYgKzE1Myw3IEBACiAgICAgc2VsZiA9IChmaWxlaW8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgICAgICBzZWxmLT5jcmVhdGVkID0gMDsKICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAwOwogICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPnNlZWthYmxlID0gLTE7CkBAIC0yMDQsOSArMjA3LDkgQEAKIGZpbGVpb19pbml0KFB5T2JqZWN0ICpvc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGZpbGVpbyAqc2VsZiA9IChmaWxlaW8gKikgb3NlbGY7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CiAgICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmosICpzdHJpbmdvYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqc3RyaW5nb2JqID0gTlVMTCwgKm9wZW5lciA9IFB5X05vbmU7CiAgICAgY2hhciAqbW9kZSA9ICJyIjsKICAgICBjaGFyICpzOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTIzMCw4ICsyMzMsOSBAQAogICAgICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaTpmaWxlaW8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2lPOmZpbGVpbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVuZXIpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoUHlGbG9hdF9DaGVjayhuYW1lb2JqKSkgewpAQCAtMjU4LDkgKzI2MiwxMCBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBOVUwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgd2lkZW5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lb2JqKTsKLSAgICB9Ci0gICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCisgICAgICAgIHdpZGVuYW1lID0gUHlVbmljb2RlX0FzVW5pY29kZShuYW1lb2JqKTsKKyAgICAgICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlCiAjZW5kaWYKICAgICBpZiAoZmQgPCAwKQogICAgIHsKQEAgLTI3MywxNSArMjc4LDIzIEBACiAgICAgcyA9IG1vZGU7CiAgICAgd2hpbGUgKCpzKSB7CiAgICAgICAgIHN3aXRjaCAoKnMrKykgewotICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBpZiAocndhKSB7CiAgICAgICAgICAgICBiYWRfbW9kZToKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkL3dyaXRlL2FwcGVuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGUgYW5kIGF0IG1vc3Qgb25lIHBsdXMiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPmNyZWF0ZWQgPSAxOworICAgICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAxOworICAgICAgICAgICAgZmxhZ3MgfD0gT19FWENMIHwgT19DUkVBVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CiAgICAgICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAndyc6CkBAIC0zNDcsMjAgKzM2MCw0MCBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgZXJybm8gPSAwOworICAgICAgICBpZiAob3BlbmVyID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCisgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBfd29wZW4od2lkZW5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBzZWxmLT5mZCA9IG9wZW4obmFtZSwgZmxhZ3MsIDA2NjYpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmZG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZXIsICJPaSIsIG5hbWVvYmosIGZsYWdzKTsKKyAgICAgICAgICAgIGlmIChmZG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayhmZG9iaikpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZmRvYmopOworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgaW50ZWdlciBmcm9tIG9wZW5lciIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNlbGYtPmZkID0gUHlMb25nX0FzTG9uZyhmZG9iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmRvYmopOworICAgICAgICAgICAgaWYgKHNlbGYtPmZkID09IC0xKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGZkX2lzX293biA9IDE7CiAgICAgICAgIGlmIChzZWxmLT5mZCA8IDApIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoVW5pY29kZUZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIHdpZGVuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgbmFtZW9iaik7CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgbmFtZSk7CkBAIC01MjksMzYgKzU2Miw1MyBAQAogfQogCiBzdGF0aWMgc2l6ZV90Ci1uZXdfYnVmZmVyc2l6ZShmaWxlaW8gKnNlbGYsIHNpemVfdCBjdXJyZW50c2l6ZSkKLXsKK25ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplCiAjaWZkZWYgSEFWRV9GU1RBVAotICAgIG9mZl90IHBvcywgZW5kOwotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKSB7Ci0gICAgICAgIGVuZCA9IHN0LnN0X3NpemU7Ci0gICAgICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworICAgICAgICAgICAgICAgLCBQeV9vZmZfdCBwb3MsIFB5X29mZl90IGVuZAorI2VuZGlmCisgICAgICAgICAgICAgICApCit7CisgICAgc2l6ZV90IGFkZGVuZDsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgaWYgKGVuZCAhPSAoUHlfb2ZmX3QpLTEpIHsKICAgICAgICAgLyogRmlsZXMgY2xhaW1pbmcgYSBzaXplIHNtYWxsZXIgdGhhbiBTTUFMTENIVU5LIG1heQogICAgICAgICAgICBhY3R1YWxseSBiZSBzdHJlYW1pbmcgcHNldWRvLWZpbGVzLiBJbiB0aGlzIGNhc2UsIHdlCiAgICAgICAgICAgIGFwcGx5IHRoZSBtb3JlIGFnZ3Jlc3NpdmUgYWxnb3JpdGhtIGJlbG93LgogICAgICAgICAqLwogICAgICAgICBpZiAoZW5kID49IFNNQUxMQ0hVTksgJiYgZW5kID49IHBvcyAmJiBwb3MgPj0gMCkgewogICAgICAgICAgICAgLyogQWRkIDEgc28gaWYgdGhlIGZpbGUgd2VyZSB0byBncm93IHdlJ2Qgbm90aWNlLiAqLwotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRzaXplICsgZW5kIC0gcG9zICsgMTsKKyAgICAgICAgICAgIFB5X29mZl90IGJ1ZnNpemUgPSBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7CisgICAgICAgICAgICBpZiAoYnVmc2l6ZSA8IFBZX1NTSVpFX1RfTUFYKQorICAgICAgICAgICAgICAgIHJldHVybiAoc2l6ZV90KWJ1ZnNpemU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFBZX1NTSVpFX1RfTUFYOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAotICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKLSAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLwotICAgIHJldHVybiBjdXJyZW50c2l6ZSArIChjdXJyZW50c2l6ZSA+PiAzKSArIDY7CisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gIEZvciBiaWdnZXIgc2l6ZXMsIHVzZSBhCisgICAgICAgbGVzcy10aGFuLWRvdWJsZSBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIGlmIChjdXJyZW50c2l6ZSA+IDY1NTM2KQorICAgICAgICBhZGRlbmQgPSBjdXJyZW50c2l6ZSA+PiAzOworICAgIGVsc2UKKyAgICAgICAgYWRkZW5kID0gMjU2ICsgY3VycmVudHNpemU7CisgICAgaWYgKGFkZGVuZCA8IFNNQUxMQ0hVTkspCisgICAgICAgIC8qIEF2b2lkIHRpbnkgcmVhZCgpIGNhbGxzLiAqLworICAgICAgICBhZGRlbmQgPSBTTUFMTENIVU5LOworICAgIHJldHVybiBhZGRlbmQgKyBjdXJyZW50c2l6ZTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKIHsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgUHlfb2ZmX3QgcG9zLCBlbmQ7CisjZW5kaWYKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgdG90YWwgPSAwOwogICAgIGludCBuOworICAgIHNpemVfdCBuZXdzaXplOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKQEAgLTU2OSw4ICs2MTksMjMgQEAKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisjaWZkZWYgSEFWRV9GU1RBVAorI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBwb3MgPSBfbHNlZWtpNjQoc2VsZi0+ZmQsIDBMLCBTRUVLX0NVUik7CisjZWxzZQorICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworI2VuZGlmCisgICAgaWYgKGZzdGF0KHNlbGYtPmZkLCAmc3QpID09IDApCisgICAgICAgIGVuZCA9IHN0LnN0X3NpemU7CisgICAgZWxzZQorICAgICAgICBlbmQgPSAoUHlfb2ZmX3QpLTE7CisjZW5kaWYKICAgICB3aGlsZSAoMSkgewotICAgICAgICBzaXplX3QgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgICAgIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCB0b3RhbCwgcG9zLCBlbmQpOworI2Vsc2UKKyAgICAgICAgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIHRvdGFsKTsKKyNlbmRpZgogICAgICAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8IG5ld3NpemUgPD0gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgpAQCAtNjE2LDYgKzY4MSw5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB0b3RhbCArPSBuOworI2lmZGVmIEhBVkVfRlNUQVQKKyAgICAgICAgcG9zICs9IG47CisjZW5kaWYKICAgICB9CiAKICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShyZXN1bHQpID4gdG90YWwpIHsKQEAgLTkyOSw2ICs5OTcsMTIgQEAKIHN0YXRpYyBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKKyAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgeworICAgICAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgICAgICByZXR1cm4gInhiKyI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAieGIiOworICAgIH0KICAgICBpZiAoc2VsZi0+cmVhZGFibGUpIHsKICAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuICJyYisiOwpAQCAtOTQyLDEyICsxMDE2LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX3JlcHIoZmlsZWlvICpzZWxmKQogeworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcmVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBbY2xvc2VkXT4iKTsKIAotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC05ODcsMTMgKzEwNjIsMTkgQEAKIAogCiBQeURvY19TVFJWQVIoZmlsZWlvX2RvYywKLSJmaWxlKG5hbWU6IHN0clssIG1vZGU6IHN0cl0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCisiZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdWywgb3BlbmVyOiBOb25lXSkgLT4gZmlsZSBJTyBvYmplY3RcbiIKICJcbiIKLSJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JyBvciAnYScgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLFxuIgotIndyaXRpbmcgb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiIKLSJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW5cbiIKLSJvcGVuZWQgZm9yIHdyaXRpbmcuICBBZGQgYSAnKycgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzXG4iCi0icmVhZGluZyBhbmQgd3JpdGluZy4iKTsKKyJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicsICd3JywgJ3gnIG9yICdhJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksXG4iCisid3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdFxuIgorImRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiBpdCBhbHJlYWR5XG4iCisiZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXNcbiIKKyJ3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLkFkZCBhICcrJyB0byB0aGUgbW9kZVxuIgorInRvIGFsbG93IHNpbXVsdGFuZW91cyByZWFkaW5nIGFuZCB3cml0aW5nLiBBIGN1c3RvbSBvcGVuZXIgY2FuIGJlIHVzZWQgYnlcbiIKKyJwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGVcbiIKKyJvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieSBjYWxsaW5nIG9wZW5lciB3aXRoICgqbmFtZSosICpmbGFncyopLlxuIgorIipvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lcipcbiIKKyJyZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLiIpOwogCiBQeURvY19TVFJWQVIocmVhZF9kb2MsCiAicmVhZChzaXplOiBpbnQpIC0+IGJ5dGVzLiAgcmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCBiYTg2MTQ2Li5iYWJiMDE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtNTksOCArNTksOSBAQAogICAgb2YgdGhlIElPQmFzZSBvYmplY3QgcmF0aGVyIHRoYW4gdGhlIHZpcnR1YWwgYGNsb3NlZGAgYXR0cmlidXRlIGFzIHJldHVybmVkCiAgICBieSB3aGF0ZXZlciBzdWJjbGFzcy4gKi8KIAorX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKICNkZWZpbmUgSVNfQ0xPU0VEKHNlbGYpIFwKLSAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiKQorICAgIF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfX19JT0Jhc2VfY2xvc2VkKQogCiAvKiBJbnRlcm5hbCBtZXRob2RzICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTcsNyArOTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGlvYmFzZV90ZWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAic2VlayIsICJpaSIsIDAsIDEpOworICAgIF9QeV9JREVOVElGSUVSKHNlZWspOworCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfc2VlaywgImlpIiwgMCwgMSk7CiB9CiAKIFB5RG9jX1NUUlZBUihpb2Jhc2VfdHJ1bmNhdGVfZG9jLApAQCAtMTU2LDE5ICsxNTksNiBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoSVNfQ0xPU0VEKHNlbGYpKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9nZXRfZGljdChQeU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihzZWxmKTsKLSAgICBQeU9iamVjdCAqZGljdDsKLSAgICBhc3NlcnQoZGljdHB0cik7Ci0gICAgZGljdCA9ICpkaWN0cHRyOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGRpY3QgPSAqZGljdHB0ciA9IFB5RGljdF9OZXcoKTsKLSAgICBQeV9YSU5DUkVGKGRpY3QpOwotICAgIHJldHVybiBkaWN0OwotfQotCiBQeU9iamVjdCAqCiBfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MCwxMiArMTgwLDEzIEBACiBpb2Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19JT0Jhc2VfY2xvc2VkKTsKIAogICAgIGlmIChJU19DTE9TRUQoc2VsZikpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCiAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZiwgX1B5SU9fc3RyX2ZsdXNoLCBOVUxMKTsKLSAgICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJfX0lPQmFzZV9jbG9zZWQiLCBQeV9UcnVlKTsKKyAgICBfUHlPYmplY3RfU2V0QXR0cklkKHNlbGYsICZQeUlkX19fSU9CYXNlX2Nsb3NlZCwgUHlfVHJ1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQ2NCwxMiArNDU1LDE0IEBACiAgICAgaW50IGhhc19wZWVrID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKKyAgICBfUHlfSURFTlRJRklFUihwZWVrKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHNlbGYsICJwZWVrIikpCisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoc2VsZiwgJlB5SWRfcGVlaykpCiAgICAgICAgIGhhc19wZWVrID0gMTsKIAogICAgIGJ1ZmZlciA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwpAQCAtNDgxLDcgKzQ3NCw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpiOwogCiAgICAgICAgIGlmIChoYXNfcGVlaykgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInBlZWsiLCAiaSIsIDEpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlYWRhaGVhZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcGVlaywgImkiLCAxKTsKICAgICAgICAgICAgIGlmIChyZWFkYWhlYWQgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC01MjEsNyArNTE0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWFkYWhlYWQpOwogICAgICAgICB9CiAKLSAgICAgICAgYiA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLCAibiIsIG5yZWFkYWhlYWQpOworICAgICAgICBiID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLCAibiIsIG5yZWFkYWhlYWQpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC02MTMsNyArNjA2LDkgQEAKICAgICAgICAgLyogWFhYIHNwZWNpYWwtY2FzaW5nIHRoaXMgbWFkZSBzZW5zZSBpbiB0aGUgUHl0aG9uIHZlcnNpb24gaW4gb3JkZXIKICAgICAgICAgICAgdG8gcmVtb3ZlIHRoZSBieXRlY29kZSBpbnRlcnByZXRhdGlvbiBvdmVyaGVhZCwgYnV0IGl0IGNvdWxkCiAgICAgICAgICAgIHByb2JhYmx5IGJlIHJlbW92ZWQgaGVyZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiZXh0ZW5kIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZXh0ZW5kKTsKKyAgICAgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF9leHRlbmQsICJPIiwgc2VsZik7CisKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzE2LDcgKzcxMSw3IEBACiB9OwogCiBzdGF0aWMgUHlHZXRTZXREZWYgaW9iYXNlX2dldHNldFtdID0gewotICAgIHsiX19kaWN0X18iLCAoZ2V0dGVyKWlvYmFzZV9nZXRfZGljdCwgTlVMTCwgTlVMTH0sCisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBOVUxMLCBOVUxMfSwKICAgICB7ImNsb3NlZCIsIChnZXR0ZXIpaW9iYXNlX2Nsb3NlZF9nZXQsIE5VTEwsIE5VTEx9LAogICAgIHtOVUxMfQogfTsKQEAgLTc5Myw4ICs3ODgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAicmVhZGFsbCIsIE5VTEwpOworICAgIGlmIChuIDwgMCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKKworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkYWxsLCBOVUxMKTsKKyAgICB9CiAKICAgICAvKiBUT0RPOiBhbGxvY2F0ZSBhIGJ5dGVzIG9iamVjdCBkaXJlY3RseSBpbnN0ZWFkIGFuZCBtYW51YWxseSBjb25zdHJ1Y3QKICAgICAgICBhIHdyaXRhYmxlIG1lbW9yeXZpZXcgcG9pbnRpbmcgdG8gaXQuICovCkBAIC04MzUsOCArODMzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeU9iamVjdCAqZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImkiLCBERUZBVUxUX0JVRkZFUl9TSVpFKTsKICAgICAgICAgaWYgKCFkYXRhKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCAxZjFmYTQwLi45ZDczODg0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTEsMTkgKzEsMzIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImFjY3UuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAogLyogSW1wbGVtZW50YXRpb24gbm90ZTogdGhlIGJ1ZmZlciBpcyBhbHdheXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBsb25nZXIKICAgIHRoYW4gdGhlIGVuY2xvc2VkIHN0cmluZywgZm9yIHByb3BlciBmdW5jdGlvbmluZyBvZiBfUHlJT19maW5kX2xpbmVfZW5kaW5nLgogKi8KIAorI2RlZmluZSBTVEFURV9SRUFMSVpFRCAxCisjZGVmaW5lIFNUQVRFX0FDQ1VNVUxBVElORyAyCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlfVU5JQ09ERSAqYnVmOworICAgIFB5X1VDUzQgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IHBvczsKICAgICBQeV9zc2l6ZV90IHN0cmluZ19zaXplOwogICAgIHNpemVfdCBidWZfc2l6ZTsKIAorICAgIC8qIFRoZSBzdHJpbmdpbyBvYmplY3QgY2FuIGJlIGluIHR3byBzdGF0ZXM6IGFjY3VtdWxhdGluZyBvciByZWFsaXplZC4KKyAgICAgICBJbiBhY2N1bXVsYXRpbmcgc3RhdGUsIHRoZSBpbnRlcm5hbCBidWZmZXIgY29udGFpbnMgbm90aGluZyBhbmQKKyAgICAgICB0aGUgY29udGVudHMgYXJlIGdpdmVuIGJ5IHRoZSBlbWJlZGRlZCBfUHlBY2N1IHN0cnVjdHVyZS4KKyAgICAgICBJbiByZWFsaXplZCBzdGF0ZSwgdGhlIGludGVybmFsIGJ1ZmZlciBpcyBtZWFuaW5nZnVsIGFuZCB0aGUKKyAgICAgICBfUHlBY2N1IGlzIGRlc3Ryb3llZC4KKyAgICAqLworICAgIGludCBzdGF0ZTsKKyAgICBfUHlBY2N1IGFjY3U7CisKICAgICBjaGFyIG9rOyAvKiBpbml0aWFsaXplZD8gKi8KICAgICBjaGFyIGNsb3NlZDsKICAgICBjaGFyIHJlYWR1bml2ZXJzYWw7CkBAIC0yMSw3ICszNCw3IEBACiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgUHlPYmplY3QgKnJlYWRubDsKICAgICBQeU9iamVjdCAqd3JpdGVubDsKLSAgICAKKwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gc3RyaW5naW87CkBAIC00MCw2ICs1MywxMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsgXAogICAgIH0KIAorI2RlZmluZSBFTlNVUkVfUkVBTElaRUQoc2VsZikgXAorICAgIGlmIChyZWFsaXplKHNlbGYpIDwgMCkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfQorCiBQeURvY19TVFJWQVIoc3RyaW5naW9fZG9jLAogICAgICJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgogICAgICJcbiIKQEAgLTU2LDcgKzc0LDcgQEAKICAgICAvKiBIZXJlLCB1bnNpZ25lZCB0eXBlcyBhcmUgdXNlZCB0byBhdm9pZCBkZWFsaW5nIHdpdGggc2lnbmVkIGludGVnZXIKICAgICAgICBvdmVyZmxvdywgd2hpY2ggaXMgdW5kZWZpbmVkIGluIEMuICovCiAgICAgc2l6ZV90IGFsbG9jID0gc2VsZi0+YnVmX3NpemU7Ci0gICAgUHlfVU5JQ09ERSAqbmV3X2J1ZiA9IE5VTEw7CisgICAgUHlfVUNTNCAqbmV3X2J1ZiA9IE5VTEw7CiAKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogCkBAIC04NCwxMCArMTAyLDkgQEAKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKICAgICB9CiAKLSAgICBpZiAoYWxsb2MgPiAoKHNpemVfdCktMSkgLyBzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgaWYgKGFsbG9jID4gUFlfU0laRV9NQVggLyBzaXplb2YoUHlfVUNTNCkpCiAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgbmV3X2J1ZiA9IChQeV9VTklDT0RFICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvYyAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgbmV3X2J1ZiA9IChQeV9VQ1M0ICopUHlNZW1fUmVhbGxvYyhzZWxmLT5idWYsIGFsbG9jICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICBpZiAobmV3X2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMywxNCArMTIwLDYyIEBACiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZV9pbnRlcm1lZGlhdGUoc3RyaW5naW8gKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmludGVybWVkaWF0ZSA9IF9QeUFjY3VfRmluaXNoKCZzZWxmLT5hY2N1KTsKKyAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOworICAgIGlmIChpbnRlcm1lZGlhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeUFjY3VfSW5pdCgmc2VsZi0+YWNjdSkgfHwKKyAgICAgICAgX1B5QWNjdV9BY2N1bXVsYXRlKCZzZWxmLT5hY2N1LCBpbnRlcm1lZGlhdGUpKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CisgICAgcmV0dXJuIGludGVybWVkaWF0ZTsKK30KKworc3RhdGljIGludAorcmVhbGl6ZShzdHJpbmdpbyAqc2VsZikKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqaW50ZXJtZWRpYXRlOworCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX1JFQUxJWkVEKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhc3NlcnQoc2VsZi0+c3RhdGUgPT0gU1RBVEVfQUNDVU1VTEFUSU5HKTsKKyAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOworCisgICAgaW50ZXJtZWRpYXRlID0gX1B5QWNjdV9GaW5pc2goJnNlbGYtPmFjY3UpOworICAgIGlmIChpbnRlcm1lZGlhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQXBwZW5kIHRoZSBpbnRlcm1lZGlhdGUgc3RyaW5nIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIuCisgICAgICAgVGhlIGxlbmd0aCBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgorICAgICAqLworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGludGVybWVkaWF0ZSk7CisgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgbGVuKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGludGVybWVkaWF0ZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KGludGVybWVkaWF0ZSwgc2VsZi0+YnVmLCBsZW4sIDApKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKGludGVybWVkaWF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIEludGVybmFsIHJvdXRpbmUgZm9yIHdyaXRpbmcgYSB3aG9sZSBQeVVuaWNvZGUgb2JqZWN0IHRvIHRoZSBidWZmZXIgb2YgYQogICAgU3RyaW5nSU8gb2JqZWN0LiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZXJyb3IuICovCiBzdGF0aWMgUHlfc3NpemVfdAogd3JpdGVfc3RyKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqb2JqKQogewotICAgIFB5X1VOSUNPREUgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7CisKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogICAgIGFzc2VydChzZWxmLT5wb3MgPj0gMCk7CiAKQEAgLTEzMiw5ICsxOTcsMTEgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoZGVjb2RlZCk7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOwotCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShkZWNvZGVkKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZGVjb2RlZCk7CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKIAogICAgIC8qIFRoaXMgb3ZlcmZsb3cgY2hlY2sgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeS4gSG93ZXZlciwgaXQgYXZvaWRzIHVzIHRvCkBAIC0xNDUsNiArMjEyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IHBvc2l0aW9uIHRvbyBsYXJnZSIpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQorCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORykgeworICAgICAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPT0gc2VsZi0+cG9zKSB7CisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKCZzZWxmLT5hY2N1LCBkZWNvZGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICBnb3RvIHN1Y2Nlc3M7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlYWxpemUoc2VsZikpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCiAgICAgaWYgKHNlbGYtPnBvcyArIGxlbiA+IHNlbGYtPnN0cmluZ19zaXplKSB7CiAgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIHNlbGYtPnBvcyArIGxlbikgPCAwKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMTYxLDE4ICsyMzksMjIgQEAKIAogICAgICAgICAqLwogICAgICAgICBtZW1zZXQoc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCi0gICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgICAgIChzZWxmLT5wb3MgLSBzZWxmLT5zdHJpbmdfc2l6ZSkgKiBzaXplb2YoUHlfVUNTNCkpOwogICAgIH0KIAogICAgIC8qIENvcHkgdGhlIGRhdGEgdG8gdGhlIGludGVybmFsIGJ1ZmZlciwgb3ZlcndyaXRpbmcgc29tZSBvZiB0aGUKICAgICAgICBleGlzdGluZyBkYXRhIGlmIHNlbGYtPnBvcyA8IHNlbGYtPnN0cmluZ19zaXplLiAqLwotICAgIG1lbWNweShzZWxmLT5idWYgKyBzZWxmLT5wb3MsIHN0ciwgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChkZWNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5idWYgKyBzZWxmLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJ1Zl9zaXplIC0gc2VsZi0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKKyAgICAgICAgZ290byBmYWlsOwogCitzdWNjZXNzOgogICAgIC8qIFNldCB0aGUgbmV3IGxlbmd0aCBvZiB0aGUgaW50ZXJuYWwgc3RyaW5nIGlmIGl0IGhhcyBjaGFuZ2VkLiAqLwotICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8IHNlbGYtPnBvcykgeworICAgIHNlbGYtPnBvcyArPSBsZW47CisgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplIDwgc2VsZi0+cG9zKQogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IHNlbGYtPnBvczsKLSAgICB9CiAKICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xOTAsNyArMjcyLDEwIEBACiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+YnVmLCBzZWxmLT5zdHJpbmdfc2l6ZSk7CisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORykKKyAgICAgICAgcmV0dXJuIG1ha2VfaW50ZXJtZWRpYXRlKHNlbGYpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzZWxmLT5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOwogfQogCiBQeURvY19TVFJWQVIoc3RyaW5naW9fdGVsbF9kb2MsCkBAIC0yMTQsNyArMjk5LDcgQEAKIHN0cmluZ2lvX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbjsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7CisgICAgUHlfVUNTNCAqb3V0cHV0OwogICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CkBAIC0yNDUsMjEgKzMzMCwyOSBAQAogICAgICAgICAgICAgc2l6ZSA9IDA7CiAgICAgfQogCisgICAgLyogT3B0aW1pemF0aW9uIGZvciBzZWVrKDApOyByZWFkKCkgKi8KKyAgICBpZiAoc2VsZi0+c3RhdGUgPT0gU1RBVEVfQUNDVU1VTEFUSU5HICYmIHNlbGYtPnBvcyA9PSAwICYmIHNpemUgPT0gbikgeworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gbWFrZV9pbnRlcm1lZGlhdGUoc2VsZik7CisgICAgICAgIHNlbGYtPnBvcyA9IHNlbGYtPnN0cmluZ19zaXplOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKICAgICBvdXRwdXQgPSBzZWxmLT5idWYgKyBzZWxmLT5wb3M7CiAgICAgc2VsZi0+cG9zICs9IHNpemU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShvdXRwdXQsIHNpemUpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIHNpemUpOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIsIHVzZWQgYnkgc3RyaW5naW9fcmVhZGxpbmUgYW5kIHN0cmluZ2lvX2l0ZXJuZXh0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogX3N0cmluZ2lvX3JlYWRsaW5lKHN0cmluZ2lvICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KQogewotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCAqZW5kLCBvbGRfY2hhcjsKKyAgICBQeV9VQ1M0ICpzdGFydCwgKmVuZCwgb2xkX2NoYXI7CiAgICAgUHlfc3NpemVfdCBsZW4sIGNvbnN1bWVkOwogCiAgICAgLyogSW4gY2FzZSBvZiBvdmVyc2VlaywgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoc2VsZi0+cG9zID49IHNlbGYtPnN0cmluZ19zaXplKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX05ldygwLCAwKTsKIAogICAgIHN0YXJ0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwogICAgIGlmIChsaW1pdCA8IDAgfHwgbGltaXQgPiBzZWxmLT5zdHJpbmdfc2l6ZSAtIHNlbGYtPnBvcykKQEAgLTI3MCwxNCArMzYzLDE0IEBACiAgICAgKmVuZCA9ICdcMCc7CiAgICAgbGVuID0gX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICAgICAgc2VsZi0+cmVhZHRyYW5zbGF0ZSwgc2VsZi0+cmVhZHVuaXZlcnNhbCwgc2VsZi0+cmVhZG5sLAotICAgICAgICBzdGFydCwgZW5kLCAmY29uc3VtZWQpOworICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCwgKGNoYXIqKXN0YXJ0LCAoY2hhciopZW5kLCAmY29uc3VtZWQpOwogICAgICplbmQgPSBvbGRfY2hhcjsKICAgICAvKiBJZiB3ZSBoYXZlbid0IGZvdW5kIGFueSBsaW5lIGVuZGluZywgd2UganVzdCByZXR1cm4gZXZlcnl0aGluZwogICAgICAgIChgY29uc3VtZWRgIGlzIGlnbm9yZWQpLiAqLwogICAgIGlmIChsZW4gPCAwKQogICAgICAgICBsZW4gPSBsaW1pdDsKICAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RhcnQsIGxlbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIHN0YXJ0LCBsZW4pOwogfQogCiBQeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZGxpbmVfZG9jLApAQCAtMjk1LDYgKzM4OCw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZSIsICZhcmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CisgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogCiAgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKICAgICAgICAgbGltaXQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKQEAgLTMxNiw2ICs0MTAsNyBAQAogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYpID09ICZQeVN0cmluZ0lPX1R5cGUpIHsKICAgICAgICAgLyogU2tpcCBtZXRob2QgY2FsbCBvdmVyaGVhZCBmb3Igc3BlZWQgKi8KQEAgLTMzNyw3ICs0MzIsNyBAQAogICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0YgKi8KICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4Niw2ICs0ODEsNyBAQAogICAgIH0KIAogICAgIGlmIChzaXplIDwgc2VsZi0+c3RyaW5nX3NpemUpIHsKKyAgICAgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBzaXplKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzaXplOwpAQCAtNDYyLDggKzU1OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKIAogICAgIGlmIChzaXplID4gMCAmJiB3cml0ZV9zdHIoc2VsZiwgb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDg0LDYgKzU4Miw3IEBACiAgICAgLyogRnJlZSB1cCBzb21lIG1lbW9yeSAqLwogICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNTEzLDYgKzYxMiw3IEBACiAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmKTsKICAgICAgICAgc2VsZi0+YnVmID0gTlVMTDsKICAgICB9CisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNTM1LDcgKzYzNSw3IEBACiAgICAgLyogdHBfYWxsb2MgaW5pdGlhbGl6ZXMgYWxsIHRoZSBmaWVsZHMgdG8gemVyby4gU28gd2UgZG9uJ3QgaGF2ZSB0bwogICAgICAgIGluaXRpYWxpemUgdGhlbSBoZXJlLiAqLwogCi0gICAgc2VsZi0+YnVmID0gKFB5X1VOSUNPREUgKilQeU1lbV9NYWxsb2MoMCk7CisgICAgc2VsZi0+YnVmID0gKFB5X1VDUzQgKilQeU1lbV9NYWxsb2MoMCk7CiAgICAgaWYgKHNlbGYtPmJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC01NTEsNiArNjUxLDcgQEAKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAgICAgY2hhciAqbmV3bGluZSA9ICJcbiI7CisgICAgUHlfc3NpemVfdCB2YWx1ZV9sZW47CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9POl9faW5pdF9fIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKQEAgLTU5Miw2ICs2OTMsNyBAQAogCiAgICAgc2VsZi0+b2sgPSAwOwogCisgICAgX1B5QWNjdV9EZXN0cm95KCZzZWxmLT5hY2N1KTsKICAgICBQeV9DTEVBUihzZWxmLT5yZWFkbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPndyaXRlbmwpOwogICAgIFB5X0NMRUFSKHNlbGYtPmRlY29kZXIpOwpAQCAtNjI4LDE5ICs3MzAsMjcgQEAKICAgICAvKiBOb3cgZXZlcnl0aGluZyBpcyBzZXQgdXAsIHJlc2l6ZSBidWZmZXIgdG8gc2l6ZSBvZiBpbml0aWFsIHZhbHVlLAogICAgICAgIGFuZCBjb3B5IGl0ICovCiAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSAwOwotICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dldFNpemUodmFsdWUpOworICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPSBQeV9Ob25lKQorICAgICAgICB2YWx1ZV9sZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlX2xlbiA9IDA7CisgICAgaWYgKHZhbHVlX2xlbiA+IDApIHsKICAgICAgICAgLyogVGhpcyBpcyBhIGhldXJpc3RpYywgZm9yIG5ld2xpbmUgdHJhbnNsYXRpb24gbWlnaHQgY2hhbmdlCiAgICAgICAgICAgIHRoZSBzdHJpbmcgbGVuZ3RoLiAqLwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBsZW4pIDwgMCkKKyAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgMCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzZWxmLT5zdGF0ZSA9IFNUQVRFX1JFQUxJWkVEOwogICAgICAgICBzZWxmLT5wb3MgPSAwOwogICAgICAgICBpZiAod3JpdGVfc3RyKHNlbGYsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiBFbXB0eSBzdHJpbmdpbyBvYmplY3QsIHdlIGNhbiBzdGFydCBieSBhY2N1bXVsYXRpbmcgKi8KICAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgMCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoX1B5QWNjdV9Jbml0KCZzZWxmLT5hY2N1KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9BQ0NVTVVMQVRJTkc7CiAgICAgfQogICAgIHNlbGYtPnBvcyA9IDA7CiAKQEAgLTc2MCwxMSArODcwLDIyIEBACiAgICAgICAgb25jZSBieSBfX2luaXRfXy4gU28gd2UgZG8gbm90IHRha2UgYW55IGNoYW5jZSBhbmQgcmVwbGFjZSBvYmplY3QncwogICAgICAgIGJ1ZmZlciBjb21wbGV0ZWx5LiAqLwogICAgIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBidWZzaXplKSA8IDApCisgICAgICAgIFB5T2JqZWN0ICppdGVtOworICAgICAgICBQeV9VQ1M0ICpidWY7CisgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZTsKKworICAgICAgICBpdGVtID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCk7CisgICAgICAgIGJ1ZiA9IFB5VW5pY29kZV9Bc1VDUzRDb3B5KGl0ZW0pOworICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgYnVmc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworCisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGJ1ZnNpemUpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPmJ1ZiwgYnVmLCBidWZzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOwogICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSA9IGJ1ZnNpemU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDJmYmI4ZjMuLjk2NDM0YTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC0xMSw2ICsxMSwyNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCitfUHlfSURFTlRJRklFUihjbG9zZSk7CitfUHlfSURFTlRJRklFUihfZGVhbGxvY193YXJuKTsKK19QeV9JREVOVElGSUVSKGRlY29kZSk7CitfUHlfSURFTlRJRklFUihmaWxlbm8pOworX1B5X0lERU5USUZJRVIoZmx1c2gpOworX1B5X0lERU5USUZJRVIoZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKK19QeV9JREVOVElGSUVSKG1vZGUpOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihyYXcpOworX1B5X0lERU5USUZJRVIocmVhZCk7CitfUHlfSURFTlRJRklFUihyZWFkMSk7CitfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CitfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKK19QeV9JREVOVElGSUVSKHJlc2V0KTsKK19QeV9JREVOVElGSUVSKHNlZWspOworX1B5X0lERU5USUZJRVIoc2Vla2FibGUpOworX1B5X0lERU5USUZJRVIoc2V0c3RhdGUpOworX1B5X0lERU5USUZJRVIodGVsbCk7CitfUHlfSURFTlRJRklFUih3cml0YWJsZSk7CisKIC8qIFRleHRJT0Jhc2UgKi8KIAogUHlEb2NfU1RSVkFSKHRleHRpb2Jhc2VfZG9jLApAQCAtMjc0LDE4ICsyOTUsMjYgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBvdXRwdXRfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgb3V0cHV0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CiAgICAgaWYgKHNlbGYtPnBlbmRpbmdjciAmJiAoZmluYWwgfHwgb3V0cHV0X2xlbiA+IDApKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dDsKLSAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG91dHB1dF9sZW4gKyAxKTsKKyAgICAgICAgLyogUHJlZml4IG91dHB1dCB3aXRoIENSICovCisgICAgICAgIGludCBraW5kOworICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQ7CisgICAgICAgIGNoYXIgKm91dDsKKworICAgICAgICBtb2RpZmllZCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X2xlbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob3V0cHV0KSk7CiAgICAgICAgIGlmIChtb2RpZmllZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUobW9kaWZpZWQpOwotICAgICAgICBvdXRbMF0gPSAnXHInOwotICAgICAgICBtZW1jcHkob3V0ICsgMSwgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgIG91dHB1dF9sZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobW9kaWZpZWQpOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfREFUQShtb2RpZmllZCk7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBQeVVuaWNvZGVfREFUQShtb2RpZmllZCksIDAsICdccicpOworICAgICAgICBtZW1jcHkob3V0ICsga2luZCwgUHlVbmljb2RlX0RBVEEob3V0cHV0KSwga2luZCAqIG91dHB1dF9sZW4pOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CisgICAgICAgIG91dHB1dCA9IG1vZGlmaWVkOyAvKiBvdXRwdXQgcmVtYWlucyByZWFkeSAqLwogICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAwOwogICAgICAgICBvdXRwdXRfbGVuKys7CiAgICAgfQpAQCAtMjk1LDIxICszMjQsMTMgQEAKICAgICAgKi8KICAgICBpZiAoIWZpbmFsKSB7CiAgICAgICAgIGlmIChvdXRwdXRfbGVuID4gMAotICAgICAgICAgICAgJiYgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KVtvdXRwdXRfbGVuIC0gMV0gPT0gJ1xyJykgewotCi0gICAgICAgICAgICBpZiAoUHlfUkVGQ05UKG91dHB1dCkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dHB1dF9sZW4gLSAxKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kaWZpZWQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9sZW4gLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAobW9kaWZpZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBtb2RpZmllZDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICYmIFB5VW5pY29kZV9SRUFEX0NIQVIob3V0cHV0LCBvdXRwdXRfbGVuIC0gMSkgPT0gJ1xyJykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX1N1YnN0cmluZyhvdXRwdXQsIDAsIG91dHB1dF9sZW4gLTEpOworICAgICAgICAgICAgaWYgKG1vZGlmaWVkID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7CiAgICAgICAgICAgICBzZWxmLT5wZW5kaW5nY3IgPSAxOwogICAgICAgICB9CiAgICAgfQpAQCAtMzE3LDEzICszMzgsMTUgQEAKICAgICAvKiBSZWNvcmQgd2hpY2ggbmV3bGluZXMgYXJlIHJlYWQgYW5kIGRvIG5ld2xpbmUgdHJhbnNsYXRpb24gaWYgZGVzaXJlZCwKICAgICAgICBhbGwgaW4gb25lIHBhc3MuICovCiAgICAgewotICAgICAgICBQeV9VTklDT0RFICppbl9zdHI7CisgICAgICAgIHZvaWQgKmluX3N0cjsKICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgIGludCBzZWVubmwgPSBzZWxmLT5zZWVubmw7CiAgICAgICAgIGludCBvbmx5X2xmID0gMDsKKyAgICAgICAgaW50IGtpbmQ7CiAKLSAgICAgICAgaW5fc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7CisgICAgICAgIGluX3N0ciA9IFB5VW5pY29kZV9EQVRBKG91dHB1dCk7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvdXRwdXQpOwogCiAgICAgICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7CkBAIC0zMzIsNyArMzU1LDcgQEAKICAgICAgICAgICAgZm9yIHRoZSBcciAqYnl0ZSogd2l0aCB0aGUgbGliYydzIG9wdGltaXplZCBtZW1jaHIuCiAgICAgICAgICAgICovCiAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9MRiB8fCBzZWVubmwgPT0gMCkgewotICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpID09IE5VTEwpOworICAgICAgICAgICAgb25seV9sZiA9IChtZW1jaHIoaW5fc3RyLCAnXHInLCBraW5kICogbGVuKSA9PSBOVUxMKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvbmx5X2xmKSB7CkBAIC0zNDAsNTEgKzM2Myw1MSBAQAogICAgICAgICAgICAgICAgKHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRvIGJlIGRvbmUsIGV2ZW4gd2hlbiBpbiB0cmFuc2xhdGlvbiBtb2RlKQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gMCAmJgotICAgICAgICAgICAgICAgIG1lbWNocihpbl9zdHIsICdcbicsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnMsICplbmQ7Ci0gICAgICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47Ci0gICAgICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnMgPiAnXG4nKQotICAgICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbm5sIHw9IFNFRU5fTEY7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBtZW1jaHIoaW5fc3RyLCAnXG4nLCBraW5kICogbGVuKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGM7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBpbl9zdHIsIGkpID4gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzID4gZW5kKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogRmluaXNoZWQ6IHdlIGhhdmUgc2Nhbm5lZCBmb3IgbmV3bGluZXMsIGFuZCBub25lIG9mIHRoZW0KICAgICAgICAgICAgICAgIG5lZWQgdHJhbnNsYXRpbmcgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghc2VsZi0+dHJhbnNsYXRlKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzLCAqZW5kOworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYWxyZWFkeSBzZWVuIGFsbCBuZXdsaW5lIHR5cGVzLCBubyBuZWVkIHRvIHNjYW4gYWdhaW4gKi8KICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgZ290byBlbmRzY2FuOwotICAgICAgICAgICAgcyA9IGluX3N0cjsKLSAgICAgICAgICAgIGVuZCA9IGluX3N0ciArIGxlbjsKICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjOwogICAgICAgICAgICAgICAgIC8qIEZhc3QgbG9vcCBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyA+ICdccicpCi0gICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBjID0gKnMrKzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA+ICdccicpCisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKyspOwogICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpCiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnMgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwotICAgICAgICAgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocyA+IGVuZCkKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBsZW4pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlmIChzZWVubmwgPT0gU0VFTl9BTEwpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkzLDYxICs0MTYsNTEgQEAKICAgICAgICAgICAgIDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0cmFuc2xhdGVkID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKm91dF9zdHI7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICppbiwgKm91dCwgKmVuZDsKLSAgICAgICAgICAgIGlmIChQeV9SRUZDTlQob3V0cHV0KSAhPSAxKSB7Ci0gICAgICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQotICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlcmUgaXMgc29tZXRoaW5nIHRvIHRyYW5zbGF0ZS4gT24gdGhlIG90aGVyIGhhbmQsCi0gICAgICAgICAgICAgICAgICAgbW9zdCBkZWNvZGVycyBzaG91bGQgb25seSBvdXRwdXQgbm9uLXNoYXJlZCBzdHJpbmdzLCBpLmUuCi0gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24gaXMgZG9uZSBpbiBwbGFjZS4gKi8KLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHRyYW5zbGF0ZWQpID09IDEpOwotICAgICAgICAgICAgICAgIG1lbWNweShQeVVuaWNvZGVfQVNfVU5JQ09ERSh0cmFuc2xhdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUob3V0cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgICAgIHZvaWQgKnRyYW5zbGF0ZWQ7CisgICAgICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKG91dHB1dCk7CisgICAgICAgICAgICB2b2lkICppbl9zdHIgPSBQeVVuaWNvZGVfREFUQShvdXRwdXQpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpbiwgb3V0OworICAgICAgICAgICAgLyogWFhYOiBQcmV2aW91cyBpbi1wbGFjZSB0cmFuc2xhdGlvbiBoZXJlIGlzIGRpc2FibGVkIGFzCisgICAgICAgICAgICAgICByZXNpemluZyBpcyBub3QgcG9zc2libGUgYW55bW9yZSAqLworICAgICAgICAgICAgLyogV2UgY291bGQgdHJ5IHRvIG9wdGltaXplIHRoaXMgc28gdGhhdCB3ZSBvbmx5IGRvIGEgY29weQorICAgICAgICAgICAgICAgd2hlbiB0aGVyZSBpcyBzb21ldGhpbmcgdG8gdHJhbnNsYXRlLiBPbiB0aGUgb3RoZXIgaGFuZCwKKyAgICAgICAgICAgICAgIHdlIGFscmVhZHkga25vdyB0aGVyZSBpcyBhIFxyIGJ5dGUsIHNvIGNoYW5jZXMgYXJlIGhpZ2gKKyAgICAgICAgICAgICAgIHRoYXQgc29tZXRoaW5nIG5lZWRzIHRvIGJlIGRvbmUuICovCisgICAgICAgICAgICB0cmFuc2xhdGVkID0gUHlNZW1fTWFsbG9jKGtpbmQgKiBsZW4pOworICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgPSBvdXRwdXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRfc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHJhbnNsYXRlZCk7Ci0gICAgICAgICAgICBpbiA9IGluX3N0cjsKLSAgICAgICAgICAgIG91dCA9IG91dF9zdHI7Ci0gICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47CisgICAgICAgICAgICBpbiA9IG91dCA9IDA7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKGMgPSAqaW4rKykgPiAnXHInKQotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSBjOworICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4rKykpID4gJ1xyJykKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIHRyYW5zbGF0ZWQsIG91dCsrLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAgICAgICAgICpvdXQrKyA9IGM7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCB0cmFuc2xhdGVkLCBvdXQrKywgYyk7CiAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmluID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaW4pID09ICdcbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUkxGOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0NSOwotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAnXG4nOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssICdcbicpOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGluID4gZW5kKQorICAgICAgICAgICAgICAgIGlmIChpbiA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgKm91dCsrID0gYzsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssIGMpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHRyYW5zbGF0ZWQgIT0gb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gdHJhbnNsYXRlZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvdXQgLSBvdXRfc3RyICE9IGxlbikgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZvdXRwdXQsIG91dCAtIG91dF9zdHIpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLCB0cmFuc2xhdGVkLCBvdXQpOworICAgICAgICAgICAgUHlNZW1fRnJlZSh0cmFuc2xhdGVkKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIHNlbGYtPnNlZW5ubCB8PSBzZWVubmw7CiAgICAgfQpAQCAtNTE0LDggKzUyNyw4IEBACiAgICAgZmxhZyA+Pj0gMTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRzdGF0ZSIsICIoKE9LKSkiLCBidWZmZXIsIGZsYWcpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9zZXRzdGF0ZSwgIigoT0spKSIsIGJ1ZmZlciwgZmxhZyk7CiAgICAgZWxzZQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTYxNyw3ICs2MzAsNyBAQAogICAgICJDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLlxuIgogICAgICJcbiIKICAgICAiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCi0gICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcuXG4iCisgICAgImRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLlxuIgogICAgICJcbiIKICAgICAiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWUgdGhlXG4iCiAgICAgImNvZGVjcy5yZWdpc3RlcikgYW5kIGRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCkBAIC02ODcsMTIgKzcwMCwxNiBAQAogICAgIFB5T2JqZWN0ICpwZW5kaW5nX2J5dGVzOyAgICAgICAvKiBsaXN0IG9mIGJ5dGVzIG9iamVjdHMgd2FpdGluZyB0byBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0dGVuLCBvciBOVUxMICovCiAgICAgUHlfc3NpemVfdCBwZW5kaW5nX2J5dGVzX2NvdW50OwotICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKwogICAgIC8qIHNuYXBzaG90IGlzIGVpdGhlciBOb25lLCBvciBhIHR1cGxlIChkZWNfZmxhZ3MsIG5leHRfaW5wdXQpIHdoZXJlCiAgICAgICogZGVjX2ZsYWdzIGlzIHRoZSBzZWNvbmQgKGludGVnZXIpIGl0ZW0gb2YgdGhlIGRlY29kZXIgc3RhdGUgYW5kCiAgICAgICogbmV4dF9pbnB1dCBpcyB0aGUgY2h1bmsgb2YgaW5wdXQgYnl0ZXMgdGhhdCBjb21lcyBuZXh0IGFmdGVyIHRoZQogICAgICAqIHNuYXBzaG90IHBvaW50LiAgV2UgdXNlIHRoaXMgdG8gcmVjb25zdHJ1Y3QgZGVjb2RlciBzdGF0ZXMgaW4gdGVsbCgpLgogICAgICAqLworICAgIFB5T2JqZWN0ICpzbmFwc2hvdDsKKyAgICAvKiBCeXRlcy10by1jaGFyYWN0ZXJzIHJhdGlvIGZvciB0aGUgY3VycmVudCBjaHVuay4gU2VydmVzIGFzIGlucHV0IGZvcgorICAgICAgIHRoZSBoZXVyaXN0aWMgaW4gdGVsbCgpLiAqLworICAgIGRvdWJsZSBiMmNyYXRpbzsKIAogICAgIC8qIENhY2hlIHJhdyBvYmplY3QgaWYgaXQncyBhIEZpbGVJTyBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmF3OwpAQCAtNzA4LDI1ICs3MjUsMjEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhc2NpaV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHV0ZjE2YmVfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYxNmxlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAtMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC03NDAsMjUgKzc1MywyMiBAQAogICAgICAgICByZXR1cm4gdXRmMTZsZV9lbmNvZGUoc2VsZiwgdGV4dCk7CiAjZW5kaWYKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYzMmJlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAxKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmMzJsZV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzcyLDI1ICs3ODIsMjAgQEAKICAgICAgICAgcmV0dXJuIHV0ZjMybGVfZW5jb2RlKHNlbGYsIHRleHQpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmOF9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHRleHQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycykpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbGF0aW4xX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogLyogTWFwIG5vcm1hbGl6ZWQgZW5jb2RpbmcgbmFtZXMgb250byB0aGUgc3BlY2lhbGl6ZWQgZW5jb2RpbmcgZnVuY3MgKi8KQEAgLTg1OSwxMSArODY0LDEyIEBACiAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID0gMDsKICAgICBzZWxmLT5wZW5kaW5nX2J5dGVzX2NvdW50ID0gMDsKICAgICBzZWxmLT5lbmNvZGVmdW5jID0gTlVMTDsKKyAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIFRyeSBvcy5kZXZpY2VfZW5jb2RpbmcoZmlsZW5vKSAqLwogICAgICAgICBQeU9iamVjdCAqZmlsZW5vOwotICAgICAgICBmaWxlbm8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgImZpbGVubyIsIE5VTEwpOworICAgICAgICBmaWxlbm8gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgLyogSWdub3JlIG9ubHkgQXR0cmlidXRlRXJyb3IgYW5kIFVuc3VwcG9ydGVkT3BlcmF0aW9uICovCiAgICAgICAgIGlmIChmaWxlbm8gPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpIHx8CkBAIC04NzUsOSArODgxLDEzIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RhdGUtPm9zX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGV2aWNlX2VuY29kaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTiIsIGZpbGVubyk7CisgICAgICAgICAgICBpbnQgZmQgPSAoaW50KSBQeUxvbmdfQXNMb25nKGZpbGVubyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5vKTsKKyAgICAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKICAgICAgICAgICAgIGlmIChzZWxmLT5lbmNvZGluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYtPmVuY29kaW5nKSkKQEAgLTg5NCw4ICs5MDQsOCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgIHVzZV9sb2NhbGU6Ci0gICAgICAgICAgICBzZWxmLT5lbmNvZGluZyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICAgICAgc3RhdGUtPmxvY2FsZV9tb2R1bGUsICJnZXRwcmVmZXJyZWRlbmNvZGluZyIsIE5VTEwpOworICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgICAgIHN0YXRlLT5sb2NhbGVfbW9kdWxlLCAmUHlJZF9nZXRwcmVmZXJyZWRlbmNvZGluZywgIk8iLCBQeV9GYWxzZSk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgICBjYXRjaF9JbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAvKgpAQCAtOTYwLDcgKzk3MCw3IEBACiAjZW5kaWYKIAogICAgIC8qIEJ1aWxkIHRoZSBkZWNvZGVyIG9iamVjdCAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAicmVhZGFibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC05ODUsNyArOTk1LDcgQEAKICAgICB9CiAKICAgICAvKiBCdWlsZCB0aGUgZW5jb2RlciBvYmplY3QgKi8KLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3dyaXRhYmxlLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTAwMiw3ICsxMDEyLDcgQEAKICAgICAgICAgY2kgPSBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogICAgICAgICBpZiAoY2kgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2ksICJuYW1lIik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2ksICZQeUlkX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYoY2kpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTEwMjksNyArMTAzOSw3IEBACiAgICAgaWYgKFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFJlYWRlcl9UeXBlIHx8CiAgICAgICAgIFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFdyaXRlcl9UeXBlIHx8CiAgICAgICAgIFB5X1RZUEUoYnVmZmVyKSA9PSAmUHlCdWZmZXJlZFJhbmRvbV9UeXBlKSB7Ci0gICAgICAgIHJhdyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYnVmZmVyLCAicmF3Iik7CisgICAgICAgIHJhdyA9IF9QeU9iamVjdF9HZXRBdHRySWQoYnVmZmVyLCAmUHlJZF9yYXcpOwogICAgICAgICAvKiBDYWNoZSB0aGUgcmF3IEZpbGVJTyBvYmplY3QgdG8gc3BlZWQgdXAgJ2Nsb3NlZCcgY2hlY2tzICovCiAgICAgICAgIGlmIChyYXcgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQpAQCAtMTA0Myw3ICsxMDUzLDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihyYXcpOwogICAgIH0KIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJ1ZmZlciwgJlB5SWRfc2Vla2FibGUsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC0xMDUyLDcgKzEwNjIsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIHNlbGYtPnNlZWthYmxlID0gc2VsZi0+dGVsbGluZyA9IHI7CiAKLSAgICBzZWxmLT5oYXNfcmVhZDEgPSBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGJ1ZmZlciwgInJlYWQxIik7CisgICAgc2VsZi0+aGFzX3JlYWQxID0gX1B5T2JqZWN0X0hhc0F0dHJJZChidWZmZXIsICZQeUlkX3JlYWQxKTsKIAogICAgIHNlbGYtPmVuY29kaW5nX3N0YXJ0X29mX3N0cmVhbSA9IDA7CiAgICAgaWYgKHNlbGYtPnNlZWthYmxlICYmIHNlbGYtPmVuY29kZXIpIHsKQEAgLTEyMTgsMTggKzEyMjgsNiBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShjb25zdCBQeV9VTklDT0RFICopCi1maW5kY2hhcihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5X1VOSUNPREUgY2gpCi17Ci0gICAgLyogbGlrZSB3Y3NjaHIsIGJ1dCBkb2Vzbid0IHN0b3AgYXQgTlVMTCBjaGFyYWN0ZXJzICovCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgaWYgKCpzID09IGNoKQotICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgIHMrKzsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KIC8qIEZsdXNoIHRoZSBpbnRlcm5hbCB3cml0ZSBidWZmZXIuIFRoaXMgZG9lc24ndCBleHBsaWNpdGx5IGZsdXNoIHRoZQogICAgdW5kZXJseWluZyBidWZmZXJlZCBvYmplY3QsIHRob3VnaC4gKi8KIHN0YXRpYyBpbnQKQEAgLTEyNzQsNiArMTI3Miw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGV4dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKHNlbGYtPmVuY29kZXIgPT0gTlVMTCkKQEAgLTEyODEsMTYgKzEyODIsMTUgQEAKIAogICAgIFB5X0lOQ1JFRih0ZXh0KTsKIAotICAgIHRleHRsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZSh0ZXh0KTsKKyAgICB0ZXh0bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCk7CiAKICAgICBpZiAoKHNlbGYtPndyaXRldHJhbnNsYXRlICYmIHNlbGYtPndyaXRlbmwgIT0gTlVMTCkgfHwgc2VsZi0+bGluZV9idWZmZXJpbmcpCi0gICAgICAgIGlmIChmaW5kY2hhcihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwgJ1xuJykpCisgICAgICAgIGlmIChQeVVuaWNvZGVfRmluZENoYXIodGV4dCwgJ1xuJywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCksIDEpICE9IC0xKQogICAgICAgICAgICAgaGFzbGYgPSAxOwogCiAgICAgaWYgKGhhc2xmICYmIHNlbGYtPndyaXRldHJhbnNsYXRlICYmIHNlbGYtPndyaXRlbmwgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbmV3dGV4dCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICB0ZXh0LCAicmVwbGFjZSIsICJzcyIsICJcbiIsIHNlbGYtPndyaXRlbmwpOworICAgICAgICBQeU9iamVjdCAqbmV3dGV4dCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICB0ZXh0LCAmUHlJZF9yZXBsYWNlLCAic3MiLCAiXG4iLCBzZWxmLT53cml0ZW5sKTsKICAgICAgICAgUHlfREVDUkVGKHRleHQpOwogICAgICAgICBpZiAobmV3dGV4dCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzAxLDggKzEzMDEsNyBAQAogICAgICAgICBuZWVkZmx1c2ggPSAxOwogICAgIGVsc2UgaWYgKHNlbGYtPmxpbmVfYnVmZmVyaW5nICYmCiAgICAgICAgIChoYXNsZiB8fAotICAgICAgICAgZmluZGNoYXIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksICdccicpKSkKKyAgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcih0ZXh0LCAnXHInLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZXh0KSwgMSkgIT0gLTEpKQogICAgICAgICBuZWVkZmx1c2ggPSAxOwogCiAgICAgLyogWFhYIFdoYXQgaWYgd2Ugd2VyZSBqdXN0IHJlYWRpbmc/ICovCkBAIC0xMzQ2LDcgKzEzNDUsNyBAQAogICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyKSB7Ci0gICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInJlc2V0IiwgTlVMTCk7CisgICAgICAgIHJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfcmVzZXQsIE5VTEwpOwogICAgICAgICBpZiAocmV0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHJldCk7CkBAIC0xMzc0LDcgKzEzNzMsOCBAQAogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBhdmFpbCA9IChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+ZGVjb2RlZF9jaGFycykKKyAgICAvKiBkZWNvZGVkX2NoYXJzIGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5Ii4gKi8KKyAgICBhdmFpbCA9IChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5kZWNvZGVkX2NoYXJzKQogICAgICAgICAgICAgIC0gc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkKTsKIAogICAgIGFzc2VydChhdmFpbCA+PSAwKTsKQEAgLTEzODMsOSArMTM4Myw5IEBACiAgICAgICAgIG4gPSBhdmFpbDsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQgPiAwIHx8IG4gPCBhdmFpbCkgewotICAgICAgICBjaGFycyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmRlY29kZWRfY2hhcnMpCi0gICAgICAgICAgICArIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCwgbik7CisgICAgICAgIGNoYXJzID0gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLT5kZWNvZGVkX2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkICsgbik7CiAgICAgICAgIGlmIChjaGFycyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTQwMSwxMiArMTQwMSwxMyBAQAogLyogUmVhZCBhbmQgZGVjb2RlIHRoZSBuZXh0IGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgQnVmZmVyZWRSZWFkZXIuCiAgKi8KIHN0YXRpYyBpbnQKLXRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayh0ZXh0aW8gKnNlbGYpCit0ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemVfaGludCkKIHsKICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY19mbGFncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmlucHV0X2NodW5rID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVjb2RlZF9jaGFycywgKmNodW5rX3NpemU7CisgICAgUHlfc3NpemVfdCBuYnl0ZXMsIG5jaGFyczsKICAgICBpbnQgZW9mOwogCiAgICAgLyogVGhlIHJldHVybiB2YWx1ZSBpcyBUcnVlIHVubGVzcyBFT0Ygd2FzIHJlYWNoZWQuICBUaGUgZGVjb2RlZCBzdHJpbmcgaXMKQEAgLTE0NDIsNyArMTQ0MywxMCBAQAogICAgIH0KIAogICAgIC8qIFJlYWQgYSBjaHVuaywgZGVjb2RlIGl0LCBhbmQgcHV0IHRoZSByZXN1bHQgaW4gc2VsZi5fZGVjb2RlZF9jaGFycy4gKi8KLSAgICBjaHVua19zaXplID0gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPmNodW5rX3NpemUpOworICAgIGlmIChzaXplX2hpbnQgPiAwKSB7CisgICAgICAgIHNpemVfaGludCA9IChQeV9zc2l6ZV90KShQeV9NQVgoc2VsZi0+YjJjcmF0aW8sIDEuMCkgKiBzaXplX2hpbnQpOworICAgIH0KKyAgICBjaHVua19zaXplID0gUHlMb25nX0Zyb21Tc2l6ZV90KFB5X01BWChzZWxmLT5jaHVua19zaXplLCBzaXplX2hpbnQpKTsKICAgICBpZiAoY2h1bmtfc2l6ZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5idWZmZXIsCkBAIC0xNDUzLDcgKzE0NTcsOCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soaW5wdXRfY2h1bmspKTsKIAotICAgIGVvZiA9IChQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspID09IDApOworICAgIG5ieXRlcyA9IFB5Qnl0ZXNfU2l6ZShpbnB1dF9jaHVuayk7CisgICAgZW9mID0gKG5ieXRlcyA9PSAwKTsKIAogICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkgewogICAgICAgICBkZWNvZGVkX2NoYXJzID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoCkBAIC0xNDY3LDggKzE0NzIsMTUgQEAKICAgICAvKiBUT0RPIHNhbml0eSBjaGVjazogaXNpbnN0YW5jZShkZWNvZGVkX2NoYXJzLCB1bmljb2RlKSAqLwogICAgIGlmIChkZWNvZGVkX2NoYXJzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGRlY29kZWRfY2hhcnMpID09IC0xKQorICAgICAgICBnb3RvIGZhaWw7CiAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBkZWNvZGVkX2NoYXJzKTsKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWRfY2hhcnMpID4gMCkKKyAgICBuY2hhcnMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChkZWNvZGVkX2NoYXJzKTsKKyAgICBpZiAobmNoYXJzID4gMCkKKyAgICAgICAgc2VsZi0+YjJjcmF0aW8gPSAoZG91YmxlKSBuYnl0ZXMgLyBuY2hhcnM7CisgICAgZWxzZQorICAgICAgICBzZWxmLT5iMmNyYXRpbyA9IDAuMDsKKyAgICBpZiAobmNoYXJzID4gMCkKICAgICAgICAgZW9mID0gMDsKIAogICAgIGlmIChzZWxmLT50ZWxsaW5nKSB7CkBAIC0xNTE1LDEyICsxNTI3LDE3IEBACiAKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgLyogUmVhZCBldmVyeXRoaW5nICovCi0gICAgICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAicmVhZCIsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqYnl0ZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZCwgTlVMTCk7CiAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgZGVjb2RlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsIF9QeUlPX3N0cl9kZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcywgUHlfVHJ1ZSwgTlVMTCk7CisKKyAgICAgICAgaWYgKFB5X1RZUEUoc2VsZi0+ZGVjb2RlcikgPT0gJlB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlKQorICAgICAgICAgICAgZGVjb2RlZCA9IF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKHNlbGYtPmRlY29kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMsIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoCisgICAgICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX2RlY29kZSwgYnl0ZXMsIFB5X1RydWUsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMTU0NiwxMSArMTU2MywxMyBAQAogICAgICAgICByZXN1bHQgPSB0ZXh0aW93cmFwcGVyX2dldF9kZWNvZGVkX2NoYXJzKHNlbGYsIG4pOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKIAogICAgICAgICAvKiBLZWVwIHJlYWRpbmcgY2h1bmtzIHVudGlsIHdlIGhhdmUgbiBjaGFyYWN0ZXJzIHRvIHJldHVybiAqLwogICAgICAgICB3aGlsZSAocmVtYWluaW5nID4gMCkgewotICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYpOworICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYsIHJlbWFpbmluZyk7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC0xNTY2LDEzICsxNTg1LDE0IEBACiAgICAgICAgICAgICAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIHJlc3VsdCkgPCAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCkgPiAwICYmCisgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChjaHVua3MsIHJlc3VsdCkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmVzdWx0ID0gdGV4dGlvd3JhcHBlcl9nZXRfZGVjb2RlZF9jaGFycyhzZWxmLCByZW1haW5pbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgICAgIHJlbWFpbmluZyAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjaHVua3MgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKQEAgLTE1OTIsMzYgKzE2MTIsMzkgQEAKIH0KIAogCi0vKiBOT1RFOiBgZW5kYCBtdXN0IHBvaW50IHRvIHRoZSByZWFsIGVuZCBvZiB0aGUgUHlfVU5JQ09ERSBzdG9yYWdlLAorLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VDUzQgc3RvcmFnZSwKICAgIHRoYXQgaXMgdG8gdGhlIE5VTCBjaGFyYWN0ZXIuIE90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBwcm9kdWNlCiAgICBpbmNvcnJlY3QgcmVzdWx0cy4gKi8KLXN0YXRpYyBQeV9VTklDT0RFICoKLWZpbmRfY29udHJvbF9jaGFyKFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X1VOSUNPREUgY2gpCitzdGF0aWMgY2hhciAqCitmaW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY2hhciAqcywgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQogewotICAgIFB5X1VOSUNPREUgKnMgPSBzdGFydDsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBhc3NlcnQoY2ggPCAyNTYpOworICAgICAgICByZXR1cm4gKGNoYXIgKikgbWVtY2hyKCh2b2lkICopIHMsIChjaGFyKSBjaCwgZW5kIC0gcyk7CisgICAgfQogICAgIGZvciAoOzspIHsKLSAgICAgICAgd2hpbGUgKCpzID4gY2gpCi0gICAgICAgICAgICBzKys7Ci0gICAgICAgIGlmICgqcyA9PSBjaCkKKyAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApID4gY2gpCisgICAgICAgICAgICBzICs9IGtpbmQ7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA9PSBjaCkKICAgICAgICAgICAgIHJldHVybiBzOwogICAgICAgICBpZiAocyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcysrOworICAgICAgICBzICs9IGtpbmQ7CiAgICAgfQogfQogCiBQeV9zc2l6ZV90CiBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IGVuZCAtIHN0YXJ0OworICAgIFB5X3NzaXplX3QgbGVuID0gKChjaGFyKillbmQgLSAoY2hhciopc3RhcnQpL2tpbmQ7CiAKICAgICBpZiAodHJhbnNsYXRlZCkgewogICAgICAgICAvKiBOZXdsaW5lcyBhcmUgYWxyZWFkeSB0cmFuc2xhdGVkLCBvbmx5IHNlYXJjaCBmb3IgXG4gKi8KLSAgICAgICAgUHlfVU5JQ09ERSAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoc3RhcnQsIGVuZCwgJ1xuJyk7CisgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOwogICAgICAgICBpZiAocG9zICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTYzMSw2MyArMTY1NCw2NiBAQAogICAgICAgICAvKiBVbml2ZXJzYWwgbmV3bGluZSBzZWFyY2guIEZpbmQgYW55IG9mIFxyLCBcclxuLCBcbgogICAgICAgICAgKiBUaGUgZGVjb2RlciBlbnN1cmVzIHRoYXQgXHJcbiBhcmUgbm90IHNwbGl0IGluIHR3byBwaWVjZXMKICAgICAgICAgICovCi0gICAgICAgIFB5X1VOSUNPREUgKnMgPSBzdGFydDsKKyAgICAgICAgY2hhciAqcyA9IHN0YXJ0OwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoOworICAgICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igbm9uLWNvbnRyb2wgY2hhcnMuIFRoZSBsb29wIGFsd2F5cyBlbmRzCi0gICAgICAgICAgICAgICBzaW5jZSB0aGUgUHlfVU5JQ09ERSBzdG9yYWdlIGlzIE5VTC10ZXJtaW5hdGVkLiAqLwotICAgICAgICAgICAgd2hpbGUgKCpzID4gJ1xyJykKLSAgICAgICAgICAgICAgICBzKys7CisgICAgICAgICAgICAgICBzaW5jZSB0aGUgVW5pY29kZSBzdHJpbmcgaXMgTlVMLXRlcm1pbmF0ZWQuICovCisgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPiAnXHInKQorICAgICAgICAgICAgICAgIHMgKz0ga2luZDsKICAgICAgICAgICAgIGlmIChzID49IGVuZCkgewogICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICpzKys7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApOworICAgICAgICAgICAgcyArPSBraW5kOwogICAgICAgICAgICAgaWYgKGNoID09ICdcbicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCpzID09ICdcbicpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA9PSAnXG4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHMgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogTm9uLXVuaXZlcnNhbCBtb2RlLiAqLwotICAgICAgICBQeV9zc2l6ZV90IHJlYWRubF9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVhZG5sKTsKLSAgICAgICAgUHlfVU5JQ09ERSAqbmwgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZWFkbmwpOworICAgICAgICBQeV9zc2l6ZV90IHJlYWRubF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZWFkbmwpOworICAgICAgICBjaGFyICpubCA9IFB5VW5pY29kZV9EQVRBKHJlYWRubCk7CisgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoc3RhcnQsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBwb3MgLSBzdGFydCArIDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICplID0gZW5kIC0gcmVhZG5sX2xlbiArIDE7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpwb3M7CisgICAgICAgICAgICBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgICAgICBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOworICAgICAgICAgICAgY2hhciAqcG9zOwogICAgICAgICAgICAgaWYgKGUgPCBzKQogICAgICAgICAgICAgICAgIGUgPSBzOwogICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHMsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gTlVMTCB8fCBwb3MgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IHJlYWRubF9sZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAocG9zW2ldICE9IG5sW2ldKQorICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcG9zLCBpKSAhPSBubFtpXSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoaSA9PSByZWFkbmxfbGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyByZWFkbmxfbGVuOwotICAgICAgICAgICAgICAgIHMgPSBwb3MgKyAxOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgcmVhZG5sX2xlbjsKKyAgICAgICAgICAgICAgICBzID0gcG9zICsga2luZDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGUsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgZSwgZW5kLCBubFswXSk7CiAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IHBvcyAtIHN0YXJ0OworICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IChwb3MgLSBzdGFydCkva2luZDsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MDgsMTUgKzE3MzQsMTYgQEAKICAgICBjaHVua2VkID0gMDsKIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICAgICAgY2hhciAqcHRyOwogICAgICAgICBQeV9zc2l6ZV90IGxpbmVfbGVuOworICAgICAgICBpbnQga2luZDsKICAgICAgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IDA7CiAKICAgICAgICAgLyogRmlyc3QsIGdldCBzb21lIGRhdGEgaWYgbmVjZXNzYXJ5ICovCiAgICAgICAgIHJlcyA9IDE7CiAgICAgICAgIHdoaWxlICghc2VsZi0+ZGVjb2RlZF9jaGFycyB8fAotICAgICAgICAgICAgICAgIVB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5kZWNvZGVkX2NoYXJzKSkgewotICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYpOworICAgICAgICAgICAgICAgIVB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmRlY29kZWRfY2hhcnMpKSB7CisgICAgICAgICAgICByZXMgPSB0ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsoc2VsZiwgMCk7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIC8qIE5PVEU6IFB5RXJyX1NldEZyb21FcnJubygpIGNhbGxzIFB5RXJyX0NoZWNrU2lnbmFscygpCiAgICAgICAgICAgICAgICAgICAgd2hlbiBFSU5UUiBvY2N1cnMgc28gd2UgbmVlZG4ndCBkbyBpdCBvdXJzZWx2ZXMuICovCkBAIC0xNzQ2LDE4ICsxNzczLDI0IEBACiAgICAgICAgICAgICBhc3NlcnQoc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID09IDApOwogICAgICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Db25jYXQocmVtYWluaW5nLCBzZWxmLT5kZWNvZGVkX2NoYXJzKTsKICAgICAgICAgICAgIHN0YXJ0ID0gMDsKLSAgICAgICAgICAgIG9mZnNldF90b19idWZmZXIgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVtYWluaW5nKTsKKyAgICAgICAgICAgIG9mZnNldF90b19idWZmZXIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZW1haW5pbmcpOwogICAgICAgICAgICAgUHlfQ0xFQVIocmVtYWluaW5nKTsKICAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIHB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmUpOwotICAgICAgICBsaW5lX2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShsaW5lKTsKKyAgICAgICAgcHRyID0gUHlVbmljb2RlX0RBVEEobGluZSk7CisgICAgICAgIGxpbmVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChsaW5lKTsKIAogICAgICAgICBlbmRwb3MgPSBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgICAgICAgICAgc2VsZi0+cmVhZHRyYW5zbGF0ZSwgc2VsZi0+cmVhZHVuaXZlcnNhbCwgc2VsZi0+cmVhZG5sLAotICAgICAgICAgICAgcHRyICsgc3RhcnQsIHB0ciArIGxpbmVfbGVuLCAmY29uc3VtZWQpOworICAgICAgICAgICAga2luZCwKKyAgICAgICAgICAgIHB0ciArIGtpbmQgKiBzdGFydCwKKyAgICAgICAgICAgIHB0ciArIGtpbmQgKiBsaW5lX2xlbiwKKyAgICAgICAgICAgICZjb25zdW1lZCk7CiAgICAgICAgIGlmIChlbmRwb3MgPj0gMCkgewogICAgICAgICAgICAgZW5kcG9zICs9IHN0YXJ0OwogICAgICAgICAgICAgaWYgKGxpbWl0ID49IDAgJiYgKGVuZHBvcyAtIHN0YXJ0KSArIGNodW5rZWQgPj0gbGltaXQpCkBAIC0xNzgxLDIxICsxODE0LDIwIEBACiAgICAgICAgICAgICAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwdHIgKyBzdGFydCwgZW5kcG9zIC0gc3RhcnQpOworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZSwgc3RhcnQsIGVuZHBvcyk7CiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIHMpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2h1bmtlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUocyk7CisgICAgICAgICAgICBjaHVua2VkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICB9CiAgICAgICAgIC8qIFRoZXJlIG1heSBiZSBzb21lIHJlbWFpbmluZyBieXRlcyB3ZSdsbCBoYXZlIHRvIHByZXBlbmQgdG8gdGhlCiAgICAgICAgICAgIG5leHQgY2h1bmsgb2YgZGF0YSAqLwogICAgICAgICBpZiAoZW5kcG9zIDwgbGluZV9sZW4pIHsKLSAgICAgICAgICAgIHJlbWFpbmluZyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgcHRyICsgZW5kcG9zLCBsaW5lX2xlbiAtIGVuZHBvcyk7CisgICAgICAgICAgICByZW1haW5pbmcgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmUsIGVuZHBvcywgbGluZV9sZW4pOwogICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTE4MDcsMTkgKzE4MzksMTIgQEAKICAgICBpZiAobGluZSAhPSBOVUxMKSB7CiAgICAgICAgIC8qIE91ciBsaW5lIGVuZHMgaW4gdGhlIGN1cnJlbnQgYnVmZmVyICovCiAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9IGVuZHBvcyAtIG9mZnNldF90b19idWZmZXI7Ci0gICAgICAgIGlmIChzdGFydCA+IDAgfHwgZW5kcG9zIDwgUHlVbmljb2RlX0dFVF9TSVpFKGxpbmUpKSB7Ci0gICAgICAgICAgICBpZiAoc3RhcnQgPT0gMCAmJiBQeV9SRUZDTlQobGluZSkgPT0gMSkgewotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZsaW5lLCBlbmRwb3MpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUobGluZSkgKyBzdGFydCwgZW5kcG9zIC0gc3RhcnQpOwotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGxpbmUpOwotICAgICAgICAgICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgbGluZSA9IHM7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChzdGFydCA+IDAgfHwgZW5kcG9zIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZSkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaW5lLCBzdGFydCwgZW5kcG9zKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGxpbmUpOworICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgbGluZSA9IHM7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlbWFpbmluZyAhPSBOVUxMKSB7CkBAIC0xODMzLDE2ICsxODU4LDIwIEBACiAgICAgICAgIFB5X0NMRUFSKHJlbWFpbmluZyk7CiAgICAgfQogICAgIGlmIChjaHVua3MgIT0gTlVMTCkgewotICAgICAgICBpZiAobGluZSAhPSBOVUxMICYmIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBsaW5lKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBQeV9DTEVBUihsaW5lKTsKKyAgICAgICAgaWYgKGxpbmUgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBsaW5lKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgfQogICAgICAgICBsaW5lID0gUHlVbmljb2RlX0pvaW4oX1B5SU9fZW1wdHlfc3RyLCBjaHVua3MpOwogICAgICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlfREVDUkVGKGNodW5rcyk7CisgICAgICAgIFB5X0NMRUFSKGNodW5rcyk7CiAgICAgfQotICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgaWYgKGxpbmUgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoX1B5SU9fZW1wdHlfc3RyKTsKKyAgICAgICAgbGluZSA9IF9QeUlPX2VtcHR5X3N0cjsKKyAgICB9CiAKICAgICByZXR1cm4gbGluZTsKIApAQCAtMTk2NSw4ICsxOTk0LDggQEAKICAgICBpZiAoY29va2llLT5zdGFydF9wb3MgPT0gMCAmJiBjb29raWUtPmRlY19mbGFncyA9PSAwKQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLCBfUHlJT19zdHJfcmVzZXQsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKHlpKSkiLCAiIiwgY29va2llLT5kZWNfZmxhZ3MpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKHlpKSkiLCAiIiwgY29va2llLT5kZWNfZmxhZ3MpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMjAzMCwxMyArMjA1OSwxMiBAQAogICAgICAgICAgKiBzeW5jIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciB3aXRoIHRoZSBjdXJyZW50IHBvc2l0aW9uLgogICAgICAgICAgKi8KICAgICAgICAgUHlfREVDUkVGKGNvb2tpZU9iaik7Ci0gICAgICAgIGNvb2tpZU9iaiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgInRlbGwiLCBOVUxMKTsKKyAgICAgICAgY29va2llT2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90ZWxsLCBOVUxMKTsKICAgICAgICAgaWYgKGNvb2tpZU9iaiA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBlbHNlIGlmICh3aGVuY2UgPT0gMikgewogICAgICAgICAvKiBzZWVrIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlICovCi0KICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNvb2tpZU9iaiwgX1B5SU9femVybywgUHlfRVEpOwogICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTIwNDYsNyArMjA3NCw3IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KIAotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJmbHVzaCIsIE5VTEwpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTIwNTQsMTMgKzIwODIsMTMgQEAKICAgICAgICAgdGV4dGlvd3JhcHBlcl9zZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBOVUxMKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwogICAgICAgICBpZiAoc2VsZi0+ZGVjb2RlcikgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAicmVzZXQiLCBOVUxMKTsKKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfcmVzZXQsIE5VTEwpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJzZWVrIiwgImlpIiwgMCwgMik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9zZWVrLCAiaWkiLCAwLCAyKTsKICAgICAgICAgUHlfWERFQ1JFRihjb29raWVPYmopOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KQEAgLTIxMTMsOCArMjE0MSw4IEBACiAKICAgICBpZiAoY29va2llLmNoYXJzX3RvX3NraXApIHsKICAgICAgICAgLyogSnVzdCBsaWtlIF9yZWFkX2NodW5rLCBmZWVkIHRoZSBkZWNvZGVyIGFuZCBzYXZlIGEgc25hcHNob3QuICovCi0gICAgICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBzZWxmLT5idWZmZXIsICJyZWFkIiwgImkiLCBjb29raWUuYnl0ZXNfdG9fZmVlZCk7CisgICAgICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5idWZmZXIsICZQeUlkX3JlYWQsICJpIiwgY29va2llLmJ5dGVzX3RvX2ZlZWQpOwogICAgICAgICBQeU9iamVjdCAqZGVjb2RlZDsKIAogICAgICAgICBpZiAoaW5wdXRfY2h1bmsgPT0gTlVMTCkKQEAgLTIxMjgsMTYgKzIxNTYsMjAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogCi0gICAgICAgIGRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2kiLCBpbnB1dF9jaHVuaywgKGludCljb29raWUubmVlZF9lb2YpOworICAgICAgICBkZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsCisgICAgICAgICAgICAiT2kiLCBpbnB1dF9jaHVuaywgKGludCljb29raWUubmVlZF9lb2YpOwogCiAgICAgICAgIGlmIChkZWNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGVjb2RlZCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogCiAgICAgICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgZGVjb2RlZCk7CiAKICAgICAgICAgLyogU2tpcCBjaGFyc190b19za2lwIG9mIHRoZSBkZWNvZGVkIGNoYXJhY3RlcnMuICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZShzZWxmLT5kZWNvZGVkX2NoYXJzKSA8IGNvb2tpZS5jaGFyc190b19za2lwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR2V0TGVuZ3RoKHNlbGYtPmRlY29kZWRfY2hhcnMpIDwgY29va2llLmNoYXJzX3RvX3NraXApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY2FuJ3QgcmVzdG9yZSBsb2dpY2FsIGZpbGUgcG9zaXRpb24iKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQpAQCAtMjE2OSw4ICsyMjAxLDEyIEBACiAgICAgY29va2llX3R5cGUgY29va2llID0gezAsMCwwLDAsMH07CiAgICAgUHlPYmplY3QgKm5leHRfaW5wdXQ7CiAgICAgUHlfc3NpemVfdCBjaGFyc190b19za2lwLCBjaGFyc19kZWNvZGVkOworICAgIFB5X3NzaXplX3Qgc2tpcF9ieXRlcywgc2tpcF9iYWNrOwogICAgIFB5T2JqZWN0ICpzYXZlZF9zdGF0ZSA9IE5VTEw7CiAgICAgY2hhciAqaW5wdXQsICppbnB1dF9lbmQ7CisgICAgY2hhciAqZGVjX2J1ZmZlcjsKKyAgICBQeV9zc2l6ZV90IGRlY19idWZmZXJfbGVuOworICAgIGludCBkZWNfZmxhZ3M7CiAKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC0yMTg3LDE3ICsyMjIzLDE3IEBACiAKICAgICBpZiAoX3RleHRpb3dyYXBwZXJfd3JpdGVmbHVzaChzZWxmKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZsdXNoIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlfREVDUkVGKHJlcyk7CiAKLSAgICBwb3NvYmogPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgInRlbGwiLCBOVUxMKTsKKyAgICBwb3NvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfdGVsbCwgTlVMTCk7CiAgICAgaWYgKHBvc29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciA9PSBOVUxMIHx8IHNlbGYtPnNuYXBzaG90ID09IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0IChzZWxmLT5kZWNvZGVkX2NoYXJzID09IE5VTEwgfHwgUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGVjb2RlZF9jaGFycykgPT0gMCk7CisgICAgICAgIGFzc2VydCAoc2VsZi0+ZGVjb2RlZF9jaGFycyA9PSBOVUxMIHx8IFB5VW5pY29kZV9HZXRMZW5ndGgoc2VsZi0+ZGVjb2RlZF9jaGFycykgPT0gMCk7CiAgICAgICAgIHJldHVybiBwb3NvYmo7CiAgICAgfQogCkBAIC0yMjA2LDYgKzIyNDIsNyBAQAogI2Vsc2UKICAgICBjb29raWUuc3RhcnRfcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwogI2VuZGlmCisgICAgUHlfREVDUkVGKHBvc29iaik7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZmFpbDsKIApAQCAtMjIyMCw1NyArMjI1Nyw5OSBAQAogICAgIC8qIEhvdyBtYW55IGRlY29kZWQgY2hhcmFjdGVycyBoYXZlIGJlZW4gdXNlZCB1cCBzaW5jZSB0aGUgc25hcHNob3Q/ICovCiAgICAgaWYgKHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9PSAwKSAgewogICAgICAgICAvKiBXZSBoYXZlbid0IG1vdmVkIGZyb20gdGhlIHNuYXBzaG90IHBvaW50LiAqLwotICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKICAgICAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogICAgIH0KIAogICAgIGNoYXJzX3RvX3NraXAgPSBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQ7CiAKLSAgICAvKiBTdGFydGluZyBmcm9tIHRoZSBzbmFwc2hvdCBwb3NpdGlvbiwgd2Ugd2lsbCB3YWxrIHRoZSBkZWNvZGVyCi0gICAgICogZm9yd2FyZCB1bnRpbCBpdCBnaXZlcyB1cyBlbm91Z2ggZGVjb2RlZCBjaGFyYWN0ZXJzLgotICAgICAqLworICAgIC8qIERlY29kZXIgc3RhdGUgd2lsbCBiZSByZXN0b3JlZCBhdCB0aGUgZW5kICovCiAgICAgc2F2ZWRfc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsKICAgICBpZiAoc2F2ZWRfc3RhdGUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KLSAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCi0gICAgICAgIGdvdG8gZmFpbDsKKyNkZWZpbmUgREVDT0RFUl9HRVRTVEFURSgpIGRvIHsgXAorICAgICAgICBQeU9iamVjdCAqX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgXAorICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsgXAorICAgICAgICBpZiAoX3N0YXRlID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKF9zdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsgXAorICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICB9IFwKKyAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKKyAgICB9IHdoaWxlICgwKQogCi0gICAgLyogRmVlZCB0aGUgZGVjb2RlciBvbmUgYnl0ZSBhdCBhIHRpbWUuICBBcyB3ZSBnbywgbm90ZSB0aGUKLSAgICAgKiBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQgbG9jYXRpb24KLSAgICAgKiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCisgICAgLyogVE9ETzogcmVwbGFjZSBhc3NlcnQgd2l0aCBleGNlcHRpb24gKi8KKyNkZWZpbmUgREVDT0RFUl9ERUNPREUoc3RhcnQsIGxlbiwgcmVzKSBkbyB7IFwKKyAgICAgICAgUHlPYmplY3QgKl9kZWNvZGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCggXAorICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgJlB5SWRfZGVjb2RlLCAieSMiLCBzdGFydCwgbGVuKTsgXAorICAgICAgICBpZiAoX2RlY29kZWQgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKF9kZWNvZGVkKSk7IFwKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoX2RlY29kZWQpOyBcCisgICAgICAgIFB5X0RFQ1JFRihfZGVjb2RlZCk7IFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgLyogRmFzdCBzZWFyY2ggZm9yIGFuIGFjY2VwdGFibGUgc3RhcnQgcG9pbnQsIGNsb3NlIHRvIG91cgorICAgICAgIGN1cnJlbnQgcG9zICovCisgICAgc2tpcF9ieXRlcyA9IChQeV9zc2l6ZV90KSAoc2VsZi0+YjJjcmF0aW8gKiBjaGFyc190b19za2lwKTsKKyAgICBza2lwX2JhY2sgPSAxOworICAgIGFzc2VydChza2lwX2JhY2sgPD0gUHlCeXRlc19HRVRfU0laRShuZXh0X2lucHV0KSk7CisgICAgaW5wdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXh0X2lucHV0KTsKKyAgICB3aGlsZSAoc2tpcF9ieXRlcyA+IDApIHsKKyAgICAgICAgLyogRGVjb2RlIHVwIHRvIHRlbXB0YXRpdmUgc3RhcnQgcG9pbnQgKi8KKyAgICAgICAgaWYgKF90ZXh0aW93cmFwcGVyX2RlY29kZXJfc2V0c3RhdGUoc2VsZiwgJmNvb2tpZSkgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgc2tpcF9ieXRlcywgY2hhcnNfZGVjb2RlZCk7CisgICAgICAgIGlmIChjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXApIHsKKyAgICAgICAgICAgIERFQ09ERVJfR0VUU1RBVEUoKTsKKyAgICAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogQmVmb3JlIHBvcyBhbmQgbm8gYnl0ZXMgYnVmZmVyZWQgaW4gZGVjb2RlciA9PiBPSyAqLworICAgICAgICAgICAgICAgIGNvb2tpZS5kZWNfZmxhZ3MgPSBkZWNfZmxhZ3M7CisgICAgICAgICAgICAgICAgY2hhcnNfdG9fc2tpcCAtPSBjaGFyc19kZWNvZGVkOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU2tpcCBiYWNrIGJ5IGJ1ZmZlcmVkIGFtb3VudCBhbmQgcmVzZXQgaGV1cmlzdGljICovCisgICAgICAgICAgICBza2lwX2J5dGVzIC09IGRlY19idWZmZXJfbGVuOworICAgICAgICAgICAgc2tpcF9iYWNrID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHRvbyBmYXIgYWhlYWQsIHNraXAgYmFjayBhIGJpdCAqLworICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBza2lwX2JhY2s7CisgICAgICAgICAgICBza2lwX2JhY2sgKj0gMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2tpcF9ieXRlcyA8PSAwKSB7CisgICAgICAgIHNraXBfYnl0ZXMgPSAwOworICAgICAgICBpZiAoX3RleHRpb3dyYXBwZXJfZGVjb2Rlcl9zZXRzdGF0ZShzZWxmLCAmY29va2llKSA8IDApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4gKi8KKyAgICBjb29raWUuc3RhcnRfcG9zICs9IHNraXBfYnl0ZXM7CisgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBjaGFyc190b19za2lwOworICAgIGlmIChjaGFyc190b19za2lwID09IDApCisgICAgICAgIGdvdG8gZmluYWxseTsKKworICAgIC8qIFdlIHNob3VsZCBiZSBjbG9zZSB0byB0aGUgZGVzaXJlZCBwb3NpdGlvbi4gIE5vdyBmZWVkIHRoZSBkZWNvZGVyIG9uZQorICAgICAqIGJ5dGUgYXQgYSB0aW1lIHVudGlsIHdlIHJlYWNoIHRoZSBgY2hhcnNfdG9fc2tpcGAgdGFyZ2V0LgorICAgICAqIEFzIHdlIGdvLCBub3RlIHRoZSBuZWFyZXN0ICJzYWZlIHN0YXJ0IHBvaW50IiBiZWZvcmUgdGhlIGN1cnJlbnQKKyAgICAgKiBsb2NhdGlvbiAoYSBwb2ludCB3aGVyZSB0aGUgZGVjb2RlciBoYXMgbm90aGluZyBidWZmZXJlZCwgc28gc2VlaygpCiAgICAgICogY2FuIHNhZmVseSBzdGFydCBmcm9tIHRoZXJlIGFuZCBhZHZhbmNlIHRvIHRoaXMgbG9jYXRpb24pLgogICAgICAqLwogICAgIGNoYXJzX2RlY29kZWQgPSAwOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcobmV4dF9pbnB1dCk7CiAgICAgaW5wdXRfZW5kID0gaW5wdXQgKyBQeUJ5dGVzX0dFVF9TSVpFKG5leHRfaW5wdXQpOworICAgIGlucHV0ICs9IHNraXBfYnl0ZXM7CiAgICAgd2hpbGUgKGlucHV0IDwgaW5wdXRfZW5kKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdGF0ZTsKLSAgICAgICAgY2hhciAqZGVjX2J1ZmZlcjsKLSAgICAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKLSAgICAgICAgaW50IGRlY19mbGFnczsKKyAgICAgICAgUHlfc3NpemVfdCBuOwogCi0gICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLCAieSMiLCBpbnB1dCwgMSk7Ci0gICAgICAgIGlmIChkZWNvZGVkID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGFzc2VydCAoUHlVbmljb2RlX0NoZWNrKGRlY29kZWQpKTsKLSAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBQeVVuaWNvZGVfR0VUX1NJWkUoZGVjb2RlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKLQorICAgICAgICBERUNPREVSX0RFQ09ERShpbnB1dCwgMSwgbik7CisgICAgICAgIC8qIFdlIGdvdCBuIGNoYXJzIGZvciAxIGJ5dGUgKi8KKyAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBuOwogICAgICAgICBjb29raWUuYnl0ZXNfdG9fZmVlZCArPSAxOwotCi0gICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfZ2V0c3RhdGUsIE5VTEwpOwotICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShzdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgREVDT0RFUl9HRVRTVEFURSgpOwogCiAgICAgICAgIGlmIChkZWNfYnVmZmVyX2xlbiA9PSAwICYmIGNoYXJzX2RlY29kZWQgPD0gY2hhcnNfdG9fc2tpcCkgewogICAgICAgICAgICAgLyogRGVjb2RlciBidWZmZXIgaXMgZW1wdHksIHNvIHRoaXMgaXMgYSBzYWZlIHN0YXJ0IHBvaW50LiAqLwpAQCAtMjI4NiwxMiArMjM2NSwxMiBAQAogICAgIH0KICAgICBpZiAoaW5wdXQgPT0gaW5wdXRfZW5kKSB7CiAgICAgICAgIC8qIFdlIGRpZG4ndCBnZXQgZW5vdWdoIGRlY29kZWQgZGF0YTsgc2lnbmFsIEVPRiB0byBnZXQgbW9yZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgImRlY29kZSIsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOworICAgICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCAmUHlJZF9kZWNvZGUsICJ5aSIsICIiLCAvKiBmaW5hbCA9ICovIDEpOwogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgICAgIGNoYXJzX2RlY29kZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOworICAgICAgICBjaGFyc19kZWNvZGVkICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWQpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CiAgICAgICAgIGNvb2tpZS5uZWVkX2VvZiA9IDE7CiAKQEAgLTIzMDIsOSArMjM4MSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBmaW5hbGx5ICovCi0gICAgUHlfWERFQ1JFRihwb3NvYmopOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwgIihPKSIsIHNhdmVkX3N0YXRlKTsKK2ZpbmFsbHk6CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwgIihPKSIsIHNhdmVkX3N0YXRlKTsKICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzE0LDEzICsyMzkyLDEyIEBACiAgICAgY29va2llLmNoYXJzX3RvX3NraXAgPSBQeV9TQUZFX0RPV05DQVNUKGNoYXJzX3RvX3NraXAsIFB5X3NzaXplX3QsIGludCk7CiAgICAgcmV0dXJuIHRleHRpb3dyYXBwZXJfYnVpbGRfY29va2llKCZjb29raWUpOwogCi0gIGZhaWw6Ci0gICAgUHlfWERFQ1JFRihwb3NvYmopOworZmFpbDoKICAgICBpZiAoc2F2ZWRfc3RhdGUpIHsKICAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsKICAgICAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAic2V0c3RhdGUiLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3NldHN0YXRlLCAiKE8pIiwgc2F2ZWRfc3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoc2F2ZWRfc3RhdGUpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzNjAsNyArMjQzNyw3IEBACiAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxfaW8uVGV4dElPV3JhcHBlciIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJuYW1lIik7CisgICAgbmFtZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX25hbWUpOwogICAgIGlmIChuYW1lb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTIzNzYsNyArMjQ1Myw3IEBACiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtb2Rlb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm1vZGUiKTsKKyAgICBtb2Rlb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjQwOCwzNSArMjQ4NSwzNSBAQAogdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJmaWxlbm8iLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAic2Vla2FibGUiLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJyZWFkYWJsZSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgIndyaXRhYmxlIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX2lzYXR0eSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImlzYXR0eSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfaXNhdHR5LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NTUsNyArMjUzMiw3IEBACiAgICAgc2VsZi0+dGVsbGluZyA9IHNlbGYtPnNlZWthYmxlOwogICAgIGlmIChfdGV4dGlvd3JhcHBlcl93cml0ZWZsdXNoKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiZmx1c2giLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NzgsMjAgKzI1NTUsMjAgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChzZWxmLT5kZWFsbG9jYXRpbmcpIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiX2RlYWxsb2Nfd2FybiIsICJPIiwgc2VsZik7CisgICAgICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfX2RlYWxsb2Nfd2FybiwgIk8iLCBzZWxmKTsKICAgICAgICAgICAgIGlmIChyZXMpCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJmbHVzaCIsIE5VTEwpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKIAotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJjbG9zZSIsIE5VTEwpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICB9CiB9CiAKQEAgLTI1MTksMTAgKzI1OTYsMTAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChsaW5lID09IE5VTEwpCisgICAgaWYgKGxpbmUgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkobGluZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpID09IDApIHsKICAgICAgICAgLyogUmVhY2hlZCBFT0Ygb3Igd291bGQgaGF2ZSBibG9ja2VkICovCiAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwpAQCAtMjUzNyw3ICsyNjE0LDcgQEAKIHRleHRpb3dyYXBwZXJfbmFtZV9nZXQodGV4dGlvICpzZWxmLCB2b2lkICpjb250ZXh0KQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPmJ1ZmZlciwgIm5hbWUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5idWZmZXIsICZQeUlkX25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IDJhNzFiOWYuLmZiOGJkNTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTEsNSArMSw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiYWNjdS5oIgorCiAjaWYgUFlfVkVSU0lPTl9IRVggPCAweDAyMDYwMDAwICYmICFkZWZpbmVkKFB5X1RZUEUpCiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZW5kaWYKQEAgLTc2LDYgKzc4LDIxIEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgoram9pbl9saXN0X3VuaWNvZGUoUHlPYmplY3QgKmxzdCkKK3sKKyAgICAvKiByZXR1cm4gdScnLmpvaW4obHN0KSAqLworICAgIHN0YXRpYyBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBpZiAoc2VwID09IE5VTEwpIHsKKyAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICAgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbihzZXAsIGxzdCk7Cit9CisKKy8qIEZvcndhcmQgZGVjbHMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKIGFzY2lpX2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cik7CiBzdGF0aWMgUHlPYmplY3QgKgogcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoUHlPYmplY3QqIHNlbGYgVU5VU0VELCBQeU9iamVjdCAqcHlzdHIpOwpAQCAtMTAxLDExICsxMTgsMTEgQEAKIHN0YXRpYyBpbnQKIGVuY29kZXJfY2xlYXIoUHlPYmplY3QgKnNlbGYpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOwogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpOworZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfZW5jb2RlZF9jb25zdChQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCkBAIC0xMjIsMTMgKzEzOSw2IEBACiAjZGVmaW5lIFNfQ0hBUihjKSAoYyA+PSAnICcgJiYgYyA8PSAnficgJiYgYyAhPSAnXFwnICYmIGMgIT0gJyInKQogI2RlZmluZSBJU19XSElURVNQQUNFKGMpICgoKGMpID09ICcgJykgfHwgKChjKSA9PSAnXHQnKSB8fCAoKGMpID09ICdcbicpIHx8ICgoYykgPT0gJ1xyJykpCiAKLSNkZWZpbmUgTUlOX0VYUEFOU0lPTiA2Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIE1BWF9FWFBBTlNJT04gKDIgKiBNSU5fRVhQQU5TSU9OKQotI2Vsc2UKLSNkZWZpbmUgTUFYX0VYUEFOU0lPTiBNSU5fRVhQQU5TSU9OCi0jZW5kaWYKLQogc3RhdGljIGludAogX2NvbnZlcnRQeUludF9Bc1NzaXplX3QoUHlPYmplY3QgKm8sIFB5X3NzaXplX3QgKnNpemVfcHRyKQogewpAQCAtMTQ3LDcgKzE1Nyw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hc2NpaV9lc2NhcGVfdW5pY2hhcihQeV9VTklDT0RFIGMsIFB5X1VOSUNPREUgKm91dHB1dCwgUHlfc3NpemVfdCBjaGFycykKK2FzY2lpX2VzY2FwZV91bmljaGFyKFB5X1VDUzQgYywgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBQeV9zc2l6ZV90IGNoYXJzKQogewogICAgIC8qIEVzY2FwZSB1bmljb2RlIGNvZGUgcG9pbnQgYyB0byBBU0NJSSBlc2NhcGUgc2VxdWVuY2VzCiAgICAgaW4gY2hhciAqb3V0cHV0LiBvdXRwdXQgbXVzdCBoYXZlIGF0IGxlYXN0IDEyIGJ5dGVzIHVudXNlZCB0bwpAQCAtMTYyLDI1ICsxNzIsMjMgQEAKICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOwogICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSB2ID0gYyAtIDB4MTAwMDA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCB2ID0gYyAtIDB4MTAwMDA7CiAgICAgICAgICAgICAgICAgYyA9IDB4ZDgwMCB8ICgodiA+PiAxMCkgJiAweDNmZik7CiAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgNCkgJiAweGZdOwotICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyAgICAgICkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgOCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgNCkgJiAweGZdOworICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgICAgICAgICAgICAgIGMgPSAweGRjMDAgfCAodiAmIDB4M2ZmKTsKICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgOCkgJiAweGZdOwotICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gIjAxMjM0NTY3ODlhYmNkZWYiWyhjID4+ICA0KSAmIDB4Zl07Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgICAgICApICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gUHlfaGV4ZGlnaXRzWyhjID4+ICA4KSAmIDB4Zl07CisgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gIDQpICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgICkgJiAweGZdOwogICAgIH0KICAgICByZXR1cm4gY2hhcnM7CiB9CkBAIC0xOTIsNTQgKzIwMCw1MyBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGlucHV0X2NoYXJzOwogICAgIFB5X3NzaXplX3Qgb3V0cHV0X3NpemU7Ci0gICAgUHlfc3NpemVfdCBtYXhfb3V0cHV0X3NpemU7CiAgICAgUHlfc3NpemVfdCBjaGFyczsKICAgICBQeU9iamVjdCAqcnZhbDsKLSAgICBQeV9VTklDT0RFICpvdXRwdXQ7Ci0gICAgUHlfVU5JQ09ERSAqaW5wdXRfdW5pY29kZTsKKyAgICB2b2lkICppbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpvdXRwdXQ7CisgICAgaW50IGtpbmQ7CiAKLSAgICBpbnB1dF9jaGFycyA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7Ci0gICAgaW5wdXRfdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBPbmUgY2hhciBpbnB1dCBjYW4gYmUgdXAgdG8gNiBjaGFycyBvdXRwdXQsIGVzdGltYXRlIDQgb2YgdGhlc2UgKi8KLSAgICBvdXRwdXRfc2l6ZSA9IDIgKyAoTUlOX0VYUEFOU0lPTiAqIDQpICsgaW5wdXRfY2hhcnM7Ci0gICAgbWF4X291dHB1dF9zaXplID0gMiArIChpbnB1dF9jaGFycyAqIE1BWF9FWFBBTlNJT04pOwotICAgIHJ2YWwgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0cHV0X3NpemUpOworICAgIGlucHV0X2NoYXJzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGlucHV0ID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKKyAgICAvKiBDb21wdXRlIHRoZSBvdXRwdXQgc2l6ZSAqLworICAgIGZvciAoaSA9IDAsIG91dHB1dF9zaXplID0gMjsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOworICAgICAgICBpZiAoU19DSEFSKGMpKQorICAgICAgICAgICAgb3V0cHV0X3NpemUrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzd2l0Y2goYykgeworICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICciJzogY2FzZSAnXGInOiBjYXNlICdcZic6CisgICAgICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgICAgIG91dHB1dF9zaXplICs9IDI7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBvdXRwdXRfc2l6ZSArPSBjID49IDB4MTAwMDAgPyAxMiA6IDY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBydmFsID0gUHlVbmljb2RlX05ldyhvdXRwdXRfc2l6ZSwgMTI3KTsKICAgICBpZiAocnZhbCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShydmFsKTsKKyAgICBvdXRwdXQgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShydmFsKTsKICAgICBjaGFycyA9IDA7CiAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOwogICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dF9jaGFyczsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9IGlucHV0X3VuaWNvZGVbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGlucHV0LCBpKTsKICAgICAgICAgaWYgKFNfQ0hBUihjKSkgewogICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gYzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNoYXJzID0gYXNjaWlfZXNjYXBlX3VuaWNoYXIoYywgb3V0cHV0LCBjaGFycyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG91dHB1dF9zaXplIC0gY2hhcnMgPCAoMSArIE1BWF9FWFBBTlNJT04pKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIG1vcmUgdGhhbiBmb3VyLCBzbyBsZXQncyByZXNpemUgYnkgYSBsb3QgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3X291dHB1dF9zaXplID0gb3V0cHV0X3NpemUgKiAyOwotICAgICAgICAgICAgLyogVGhpcyBpcyBhbiB1cHBlciBib3VuZCAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSA+IG1heF9vdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG5ld19vdXRwdXRfc2l6ZSA9IG1heF9vdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBvdXRwdXQgc2l6ZSBjaGFuZ2VkIGJlZm9yZSByZXNpemluZyAqLwotICAgICAgICAgICAgaWYgKG5ld19vdXRwdXRfc2l6ZSAhPSBvdXRwdXRfc2l6ZSkgewotICAgICAgICAgICAgICAgIG91dHB1dF9zaXplID0gbmV3X291dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZydmFsLCBvdXRwdXRfc2l6ZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJ2YWwpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgfQogICAgIG91dHB1dFtjaGFycysrXSA9ICciJzsKLSAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcnZhbCwgY2hhcnMpID09IC0xKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJ2YWwsIDEpKTsKICAgICByZXR1cm4gcnZhbDsKIH0KIApAQCAtMjY3LDE5ICsyNzQsNiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotam9pbl9saXN0X3VuaWNvZGUoUHlPYmplY3QgKmxzdCkKLXsKLSAgICAvKiByZXR1cm4gdScnLmpvaW4obHN0KSAqLwotICAgIHN0YXRpYyBQeU9iamVjdCAqc2VwID0gTlVMTDsKLSAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfSm9pbihzZXAsIGxzdCk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBfYnVpbGRfcnZhbF9pbmRleF90dXBsZShQeU9iamVjdCAqcnZhbCwgUHlfc3NpemVfdCBpZHgpIHsKICAgICAvKiByZXR1cm4gKHJ2YWwsIGlkeCkgdHVwbGUsIHN0ZWFsaW5nIHJlZmVyZW5jZSB0byBydmFsICovCiAgICAgUHlPYmplY3QgKnRwbDsKQEAgLTMzMywyMiArMzI3LDMwIEBACiAgICAgUmV0dXJuIHZhbHVlIGlzIGEgbmV3IFB5VW5pY29kZQogICAgICovCiAgICAgUHlPYmplY3QgKnJ2YWwgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeV9zc2l6ZV90IGJlZ2luID0gZW5kIC0gMTsKLSAgICBQeV9zc2l6ZV90IG5leHQgPSBiZWdpbjsKLSAgICBjb25zdCBQeV9VTklDT0RFICpidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7CisgICAgUHlfc3NpemVfdCBuZXh0IC8qID0gYmVnaW4gKi87CisgICAgY29uc3Qgdm9pZCAqYnVmOworICAgIGludCBraW5kOwogICAgIFB5T2JqZWN0ICpjaHVua3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjaHVuayA9IE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cik7CisgICAgYnVmID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisKICAgICBpZiAoZW5kIDwgMCB8fCBsZW4gPD0gZW5kKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW5kIGlzIG91dCBvZiBib3VuZHMiKTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KICAgICB3aGlsZSAoMSkgewogICAgICAgICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciB0aGUgbmV4dCBlc2NhcGUgKi8KLSAgICAgICAgUHlfVU5JQ09ERSBjID0gMDsKKyAgICAgICAgUHlfVUNTNCBjID0gMDsKICAgICAgICAgZm9yIChuZXh0ID0gZW5kOyBuZXh0IDwgbGVuOyBuZXh0KyspIHsKLSAgICAgICAgICAgIGMgPSBidWZbbmV4dF07CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcXCcpIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTM2NCw3ICszNjYsMTAgQEAKICAgICAgICAgLyogUGljayB1cCB0aGlzIGNodW5rIGlmIGl0J3Mgbm90IHplcm8gbGVuZ3RoICovCiAgICAgICAgIGlmIChuZXh0ICE9IGVuZCkgewogICAgICAgICAgICAgQVBQRU5EX09MRF9DSFVOSwotICAgICAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJmJ1ZltlbmRdLCBuZXh0IC0gZW5kKTsKKyAgICAgICAgICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgICAgICAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICAgICAgICAgIChjaGFyKilidWYgKyBraW5kICogZW5kLAorICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5kKTsKICAgICAgICAgICAgIGlmIChjaHVuayA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQpAQCAtMzc4LDcgKzM4Myw3IEBACiAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVudGVybWluYXRlZCBzdHJpbmcgc3RhcnRpbmcgYXQiLCBweXN0ciwgYmVnaW4pOwogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9Ci0gICAgICAgIGMgPSBidWZbbmV4dF07CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQpOwogICAgICAgICBpZiAoYyAhPSAndScpIHsKICAgICAgICAgICAgIC8qIE5vbi11bmljb2RlIGJhY2tzbGFzaCBlc2NhcGVzICovCiAgICAgICAgICAgICBlbmQgPSBuZXh0ICsgMTsKQEAgLTQwOCw3ICs0MTMsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogRGVjb2RlIDQgaGV4IGRpZ2l0cyAqLwogICAgICAgICAgICAgZm9yICg7IG5leHQgPCBlbmQ7IG5leHQrKykgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgZGlnaXQgPSBidWZbbmV4dF07CisgICAgICAgICAgICAgICAgUHlfVUNTNCBkaWdpdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICAgICAgYyA8PD0gNDsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRpZ2l0KSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKQEAgLTQyNSwyMiArNDMwLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAgICAgLyogU3Vycm9nYXRlIHBhaXIgKi8KICAgICAgICAgICAgIGlmICgoYyAmIDB4ZmMwMCkgPT0gMHhkODAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjMiA9IDA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjMiA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKGVuZCArIDYgPj0gbGVuKSB7CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiVW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGJ1ZltuZXh0KytdICE9ICdcXCcgfHwgYnVmW25leHQrK10gIT0gJ3UnKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCsrKSAhPSAnXFwnIHx8CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCsrKSAhPSAndScpIHsKICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnBhaXJlZCBoaWdoIHN1cnJvZ2F0ZSIsIHB5c3RyLCBlbmQgLSA1KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbmQgKz0gNjsKICAgICAgICAgICAgICAgICAvKiBEZWNvZGUgNCBoZXggZGlnaXRzICovCiAgICAgICAgICAgICAgICAgZm9yICg7IG5leHQgPCBlbmQ7IG5leHQrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGRpZ2l0ID0gYnVmW25leHRdOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGRpZ2l0ID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgICAgICAgICAgICAgYzIgPDw9IDQ7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZGlnaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKQEAgLTQ2NywxMCArNDcyLDkgQEAKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVucGFpcmVkIGxvdyBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgQVBQRU5EX09MRF9DSFVOSwotICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmYywgMSk7CisgICAgICAgIGNodW5rID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgJmMsIDEpOwogICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9CkBAIC02MDgsOCArNjEyLDkgQEAKIAogICAgIFJldHVybnMgYSBuZXcgUHlPYmplY3QgKHVzdWFsbHkgYSBkaWN0LCBidXQgb2JqZWN0X2hvb2sgY2FuIGNoYW5nZSB0aGF0KQogICAgICovCi0gICAgUHlfVU5JQ09ERSAqc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOwotICAgIFB5X3NzaXplX3QgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cikgLSAxOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGVuZF9pZHg7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJ2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMOwpAQCAtNjE3LDYgKzYyMiwxMyBAQAogICAgIGludCBoYXNfcGFpcnNfaG9vayA9IChzLT5vYmplY3RfcGFpcnNfaG9vayAhPSBQeV9Ob25lKTsKICAgICBQeV9zc2l6ZV90IG5leHRfaWR4OwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisgICAgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHB5c3RyKSAtIDE7CisKICAgICBpZiAoaGFzX3BhaXJzX2hvb2spCiAgICAgICAgIHJ2YWwgPSBQeUxpc3RfTmV3KDApOwogICAgIGVsc2UKQEAgLTYyNSwxNSArNjM3LDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGFmdGVyIHsgKi8KLSAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsc3RyLCBpZHgpKSkgaWR4Kys7CiAKICAgICAvKiBvbmx5IGxvb3AgaWYgdGhlIG9iamVjdCBpcyBub24tZW1wdHkgKi8KLSAgICBpZiAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gIT0gJ30nKSB7CisgICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnfScpIHsKICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4KSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWVtb2tleTsKIAogICAgICAgICAgICAgLyogcmVhZCBrZXkgKi8KLSAgICAgICAgICAgIGlmIChzdHJbaWR4XSAhPSAnIicpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJyInKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQpAQCAtNjUzLDEzICs2NjUsMTMgQEAKICAgICAgICAgICAgIGlkeCA9IG5leHRfaWR4OwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYmV0d2VlbiBrZXkgYW5kIDogZGVsaW1pdGVyLCByZWFkIDosIHNraXAgd2hpdGVzcGFjZSAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKLSAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICc6JykgeworICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CisgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJzonKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJzonIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiByZWFkIGFueSBKU09OIHRlcm0gKi8KICAgICAgICAgICAgIHZhbCA9IHNjYW5fb25jZV91bmljb2RlKHMsIHB5c3RyLCBpZHgsICZuZXh0X2lkeCk7CkBAIC02ODcsMjYgKzY5OSwyNiBAQAogICAgICAgICAgICAgaWR4ID0gbmV4dF9pZHg7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBiZWZvcmUgfSBvciAsICovCi0gICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CiAKICAgICAgICAgICAgIC8qIGJhaWwgaWYgdGhlIG9iamVjdCBpcyBjbG9zZWQgb3Igd2UgZGlkbid0IGdldCB0aGUgLCBkZWxpbWl0ZXIgKi8KICAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSBicmVhazsKLSAgICAgICAgICAgIGlmIChzdHJbaWR4XSA9PSAnfScpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ30nKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChzdHJbaWR4XSAhPSAnLCcpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnLCcpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWR4Kys7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciAsIGRlbGltaXRlciAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgc3RyW2lkeF0gc2hvdWxkIGJlICd9JyAqLwotICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICd9JykgeworICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnfScpIHsKICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3Rpbmcgb2JqZWN0IiwgcHlzdHIsIGVuZF9pZHgpOwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQpAQCAtNzQyLDE5ICs3NTQsMjcgQEAKIAogICAgIFJldHVybnMgYSBuZXcgUHlMaXN0CiAgICAgKi8KLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKSAtIDE7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgZW5kX2lkeDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqcnZhbCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgUHlfc3NpemVfdCBuZXh0X2lkeDsKICAgICBpZiAocnZhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOworCiAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGFmdGVyIFsgKi8KLSAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgLyogb25seSBsb29wIGlmIHRoZSBhcnJheSBpcyBub24tZW1wdHkgKi8KLSAgICBpZiAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gIT0gJ10nKSB7CisgICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnXScpIHsKICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4KSB7CiAKICAgICAgICAgICAgIC8qIHJlYWQgYW55IEpTT04gdGVybSAgKi8KQEAgLTc2OSwyNiArNzg5LDI2IEBACiAgICAgICAgICAgICBpZHggPSBuZXh0X2lkeDsKIAogICAgICAgICAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGJldHdlZW4gdGVybSBhbmQgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBiYWlsIGlmIHRoZSBhcnJheSBpcyBjbG9zZWQgb3Igd2UgZGlkbid0IGdldCB0aGUgLCBkZWxpbWl0ZXIgKi8KICAgICAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSBicmVhazsKLSAgICAgICAgICAgIGlmIChzdHJbaWR4XSA9PSAnXScpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ10nKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChzdHJbaWR4XSAhPSAnLCcpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSAhPSAnLCcpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcHlzdHIsIGlkeCk7CiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWR4Kys7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciAsICovCi0gICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShzdHJbaWR4XSkpIGlkeCsrOworICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSkgaWR4Kys7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiB2ZXJpZnkgdGhhdCBpZHggPCBlbmRfaWR4LCBzdHJbaWR4XSBzaG91bGQgYmUgJ10nICovCi0gICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgc3RyW2lkeF0gIT0gJ10nKSB7CisgICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIHNob3VsZCBiZSAnXScgKi8KKyAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ10nKSB7CiAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIG9iamVjdCIsIHB5c3RyLCBlbmRfaWR4KTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KQEAgLTgyMCw3ICs4NDAsNyBAQAogCiAgICAgLyogcnZhbCA9IHBhcnNlX2NvbnN0YW50KGNvbnN0YW50KSAqLwogICAgIHJ2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHMtPnBhcnNlX2NvbnN0YW50LCBjc3RyLCBOVUxMKTsKLSAgICBpZHggKz0gUHlVbmljb2RlX0dFVF9TSVpFKGNzdHIpOworICAgIGlkeCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjc3RyKTsKICAgICBQeV9ERUNSRUYoY3N0cik7CiAgICAgKm5leHRfaWR4X3B0ciA9IGlkeDsKICAgICByZXR1cm4gcnZhbDsKQEAgLTgzNywxNSArODU3LDI0IEBACiAgICAgICAgIFB5SW50LCBQeUxvbmcsIG9yIFB5RmxvYXQuCiAgICAgICAgIE1heSByZXR1cm4gb3RoZXIgdHlwZXMgaWYgcGFyc2VfaW50IG9yIHBhcnNlX2Zsb2F0IGFyZSBzZXQKICAgICAqLwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpIC0gMTsKKyAgICB2b2lkICpzdHI7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBlbmRfaWR4OwogICAgIFB5X3NzaXplX3QgaWR4ID0gc3RhcnQ7CiAgICAgaW50IGlzX2Zsb2F0ID0gMDsKICAgICBQeU9iamVjdCAqcnZhbDsKLSAgICBQeU9iamVjdCAqbnVtc3RyOworICAgIFB5T2JqZWN0ICpudW1zdHIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjdXN0b21fZnVuYzsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOwogCiAgICAgLyogcmVhZCBhIHNpZ24gaWYgaXQncyB0aGVyZSwgbWFrZSBzdXJlIGl0J3Mgbm90IHRoZSBlbmQgb2YgdGhlIHN0cmluZyAqLwotICAgIGlmIChzdHJbaWR4XSA9PSAnLScpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICctJykgewogICAgICAgICBpZHgrKzsKICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CkBAIC04NTQsMTIgKzg4MywxMiBAQAogICAgIH0KIAogICAgIC8qIHJlYWQgYXMgbWFueSBpbnRlZ2VyIGRpZ2l0cyBhcyB3ZSBmaW5kIGFzIGxvbmcgYXMgaXQgZG9lc24ndCBzdGFydCB3aXRoIDAgKi8KLSAgICBpZiAoc3RyW2lkeF0gPj0gJzEnICYmIHN0cltpZHhdIDw9ICc5JykgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzEnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIHsKICAgICAgICAgaWR4Kys7Ci0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAgICAgfQogICAgIC8qIGlmIGl0IHN0YXJ0cyB3aXRoIDAgd2Ugb25seSBleHBlY3Qgb25lIGludGVnZXIgZGlnaXQgKi8KLSAgICBlbHNlIGlmIChzdHJbaWR4XSA9PSAnMCcpIHsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJzAnKSB7CiAgICAgICAgIGlkeCsrOwogICAgIH0KICAgICAvKiBubyBpbnRlZ2VyIGRpZ2l0cywgZXJyb3IgKi8KQEAgLTg2OSwyNSArODk4LDI1IEBACiAgICAgfQogCiAgICAgLyogaWYgdGhlIG5leHQgY2hhciBpcyAnLicgZm9sbG93ZWQgYnkgYSBkaWdpdCB0aGVuIHJlYWQgYWxsIGZsb2F0IGRpZ2l0cyAqLwotICAgIGlmIChpZHggPCBlbmRfaWR4ICYmIHN0cltpZHhdID09ICcuJyAmJiBzdHJbaWR4ICsgMV0gPj0gJzAnICYmIHN0cltpZHggKyAxXSA8PSAnOScpIHsKKyAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJy4nICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPD0gJzknKSB7CiAgICAgICAgIGlzX2Zsb2F0ID0gMTsKICAgICAgICAgaWR4ICs9IDI7Ci0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAgICAgfQogCiAgICAgLyogaWYgdGhlIG5leHQgY2hhciBpcyAnZScgb3IgJ0UnIHRoZW4gbWF5YmUgcmVhZCB0aGUgZXhwb25lbnQgKG9yIGJhY2t0cmFjaykgKi8KLSAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoc3RyW2lkeF0gPT0gJ2UnIHx8IHN0cltpZHhdID09ICdFJykpIHsKKyAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICdlJyB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJ0UnKSkgewogICAgICAgICBQeV9zc2l6ZV90IGVfc3RhcnQgPSBpZHg7CiAgICAgICAgIGlkeCsrOwogCiAgICAgICAgIC8qIHJlYWQgYW4gZXhwb25lbnQgc2lnbiBpZiBwcmVzZW50ICovCi0gICAgICAgIGlmIChpZHggPCBlbmRfaWR4ICYmIChzdHJbaWR4XSA9PSAnLScgfHwgc3RyW2lkeF0gPT0gJysnKSkgaWR4Kys7CisgICAgICAgIGlmIChpZHggPCBlbmRfaWR4ICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJy0nIHx8IFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnKycpKSBpZHgrKzsKIAogICAgICAgICAvKiByZWFkIGFsbCBkaWdpdHMgKi8KLSAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdID49ICcwJyAmJiBzdHJbaWR4XSA8PSAnOScpIGlkeCsrOworICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID49ICcwJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPD0gJzknKSBpZHgrKzsKIAogICAgICAgICAvKiBpZiB3ZSBnb3QgYSBkaWdpdCwgdGhlbiBwYXJzZSBhcyBmbG9hdC4gaWYgbm90LCBiYWNrdHJhY2sgKi8KLSAgICAgICAgaWYgKHN0cltpZHggLSAxXSA+PSAnMCcgJiYgc3RyW2lkeCAtIDFdIDw9ICc5JykgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggLSAxKSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggLSAxKSA8PSAnOScpIHsKICAgICAgICAgICAgIGlzX2Zsb2F0ID0gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTg5NSwyMiArOTI0LDM5IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBjb3B5IHRoZSBzZWN0aW9uIHdlIGRldGVybWluZWQgdG8gYmUgYSBudW1iZXIgKi8KLSAgICBudW1zdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnN0cltzdGFydF0sIGlkeCAtIHN0YXJ0KTsKLSAgICBpZiAobnVtc3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChpc19mbG9hdCkgewotICAgICAgICAvKiBwYXJzZSBhcyBhIGZsb2F0IHVzaW5nIGEgZmFzdCBwYXRoIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGNhbGwgdXNlciBkZWZpbmVkIG1ldGhvZCAqLwotICAgICAgICBpZiAocy0+cGFyc2VfZmxvYXQgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSkgewotICAgICAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+cGFyc2VfZmxvYXQsIG51bXN0ciwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBydmFsID0gUHlGbG9hdF9Gcm9tU3RyaW5nKG51bXN0cik7Ci0gICAgICAgIH0KKyAgICBpZiAoaXNfZmxvYXQgJiYgcy0+cGFyc2VfZmxvYXQgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSkKKyAgICAgICAgY3VzdG9tX2Z1bmMgPSBzLT5wYXJzZV9mbG9hdDsKKyAgICBlbHNlIGlmICghaXNfZmxvYXQgJiYgcy0+cGFyc2VfaW50ICE9IChQeU9iamVjdCAqKSAmUHlMb25nX1R5cGUpCisgICAgICAgIGN1c3RvbV9mdW5jID0gcy0+cGFyc2VfaW50OworICAgIGVsc2UKKyAgICAgICAgY3VzdG9tX2Z1bmMgPSBOVUxMOworCisgICAgaWYgKGN1c3RvbV9mdW5jKSB7CisgICAgICAgIC8qIGNvcHkgdGhlIHNlY3Rpb24gd2UgZGV0ZXJtaW5lZCB0byBiZSBhIG51bWJlciAqLworICAgICAgICBudW1zdHIgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXN0ciArIGtpbmQgKiBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHggLSBzdGFydCk7CisgICAgICAgIGlmIChudW1zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhjdXN0b21fZnVuYywgbnVtc3RyLCBOVUxMKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIG5vIGZhc3QgcGF0aCBmb3IgdW5pY29kZSAtPiBpbnQsIGp1c3QgY2FsbCAqLwotICAgICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzLT5wYXJzZV9pbnQsIG51bXN0ciwgTlVMTCk7CisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICAgICAgY2hhciAqYnVmOworICAgICAgICAvKiBTdHJhaWdodCBjb252ZXJzaW9uIHRvIEFTQ0lJLCB0byBhdm9pZCBjb3N0bHkgY29udmVyc2lvbiBvZgorICAgICAgICAgICBkZWNpbWFsIHVuaWNvZGUgZGlnaXRzICh3aGljaCBjYW5ub3QgYXBwZWFyIGhlcmUpICovCisgICAgICAgIG4gPSBpZHggLSBzdGFydDsKKyAgICAgICAgbnVtc3RyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKKyAgICAgICAgaWYgKG51bXN0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG51bXN0cik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGJ1ZltpXSA9IChjaGFyKSBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGkgKyBzdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX2Zsb2F0KQorICAgICAgICAgICAgcnZhbCA9IFB5RmxvYXRfRnJvbVN0cmluZyhudW1zdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydmFsID0gUHlMb25nX0Zyb21TdHJpbmcoYnVmLCBOVUxMLCAxMCk7CiAgICAgfQogICAgIFB5X0RFQ1JFRihudW1zdHIpOwogICAgICpuZXh0X2lkeF9wdHIgPSBpZHg7CkBAIC05MjgsMTMgKzk3NCwyMyBAQAogICAgIFJldHVybnMgYSBuZXcgUHlPYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRlcm0uCiAgICAgKi8KICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyID0gUHlVbmljb2RlX0RBVEEocHlzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChweXN0cik7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworCiAgICAgaWYgKGlkeCA+PSBsZW5ndGgpIHsKICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHN3aXRjaCAoc3RyW2lkeF0pIHsKKworICAgIHN3aXRjaCAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpKSB7CiAgICAgICAgIGNhc2UgJyInOgogICAgICAgICAgICAgLyogc3RyaW5nICovCiAgICAgICAgICAgICByZXR1cm4gc2NhbnN0cmluZ191bmljb2RlKHB5c3RyLCBpZHggKyAxLApAQCAtOTU4LDcgKzEwMTQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAvKiBudWxsICovCi0gICAgICAgICAgICBpZiAoKGlkeCArIDMgPCBsZW5ndGgpICYmIHN0cltpZHggKyAxXSA9PSAndScgJiYgc3RyW2lkeCArIDJdID09ICdsJyAmJiBzdHJbaWR4ICsgM10gPT0gJ2wnKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDMgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ3UnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMikgPT0gJ2wnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMykgPT0gJ2wnKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICAgICAgICAgICpuZXh0X2lkeF9wdHIgPSBpZHggKyA0OwogICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwpAQCAtOTY2LDcgKzEwMjIsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3QnOgogICAgICAgICAgICAgLyogdHJ1ZSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ3InICYmIHN0cltpZHggKyAyXSA9PSAndScgJiYgc3RyW2lkeCArIDNdID09ICdlJykgeworICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICdyJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICd1JyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdlJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9UcnVlKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNDsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfVHJ1ZTsKQEAgLTk3NCw3ICsxMDMwLDEwIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICAvKiBmYWxzZSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA0IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ2EnICYmIHN0cltpZHggKyAyXSA9PSAnbCcgJiYgc3RyW2lkeCArIDNdID09ICdzJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ2UnKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDQgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ2EnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnbCcgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdzJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ2UnKSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNTsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfRmFsc2U7CkBAIC05ODIsMTkgKzEwNDEsMzMgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdOJzoKICAgICAgICAgICAgIC8qIE5hTiAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAyIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ2EnICYmIHN0cltpZHggKyAyXSA9PSAnTicpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgMiA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAnYScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdOJykgewogICAgICAgICAgICAgICAgIHJldHVybiBfcGFyc2VfY29uc3RhbnQocywgIk5hTiIsIGlkeCwgbmV4dF9pZHhfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdJJzoKICAgICAgICAgICAgIC8qIEluZmluaXR5ICovCi0gICAgICAgICAgICBpZiAoKGlkeCArIDcgPCBsZW5ndGgpICYmIHN0cltpZHggKyAxXSA9PSAnbicgJiYgc3RyW2lkeCArIDJdID09ICdmJyAmJiBzdHJbaWR4ICsgM10gPT0gJ2knICYmIHN0cltpZHggKyA0XSA9PSAnbicgJiYgc3RyW2lkeCArIDVdID09ICdpJyAmJiBzdHJbaWR4ICsgNl0gPT0gJ3QnICYmIHN0cltpZHggKyA3XSA9PSAneScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgNyA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdmJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMykgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA0KSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDUpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNikgPT0gJ3QnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA3KSA9PSAneScpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICJJbmZpbml0eSIsIGlkeCwgbmV4dF9pZHhfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICctJzoKICAgICAgICAgICAgIC8qIC1JbmZpbml0eSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA4IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ0knICYmIHN0cltpZHggKyAyXSA9PSAnbicgJiYgc3RyW2lkeCArIDNdID09ICdmJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ2knICYmIHN0cltpZHggKyA1XSA9PSAnbicgJiYgc3RyW2lkeCArIDZdID09ICdpJyAmJiBzdHJbaWR4ICsgN10gPT0gJ3QnICYmIHN0cltpZHggKyA4XSA9PSAneScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgOCA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAnSScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICduJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMykgPT0gJ2YnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA0KSA9PSAnaScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDUpID09ICduJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNikgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA3KSA9PSAndCcgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDgpID09ICd5JykgewogICAgICAgICAgICAgICAgIHJldHVybiBfcGFyc2VfY29uc3RhbnQocywgIi1JbmZpbml0eSIsIGlkeCwgbmV4dF9pZHhfcHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIxMCwyMiArMTI4MywyMiBAQAogICAgIC8qIFB5dGhvbiBjYWxsYWJsZSBpbnRlcmZhY2UgdG8gZW5jb2RlX2xpc3RlbmNvZGVfb2JqICovCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvYmoiLCAiX2N1cnJlbnRfaW5kZW50X2xldmVsIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKm9iajsKLSAgICBQeU9iamVjdCAqcnZhbDsKICAgICBQeV9zc2l6ZV90IGluZGVudF9sZXZlbDsKICAgICBQeUVuY29kZXJPYmplY3QgKnM7CisgICAgX1B5QWNjdSBhY2M7CisKICAgICBhc3NlcnQoUHlFbmNvZGVyX0NoZWNrKHNlbGYpKTsKICAgICBzID0gKFB5RW5jb2Rlck9iamVjdCAqKXNlbGY7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PJjpfaXRlcmVuY29kZSIsIGt3bGlzdCwKICAgICAgICAgJm9iaiwgX2NvbnZlcnRQeUludF9Bc1NzaXplX3QsICZpbmRlbnRfbGV2ZWwpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBydmFsID0gUHlMaXN0X05ldygwKTsKLSAgICBpZiAocnZhbCA9PSBOVUxMKQorICAgIGlmIChfUHlBY2N1X0luaXQoJmFjYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKSkgewotICAgICAgICBQeV9ERUNSRUYocnZhbCk7CisgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgJmFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpKSB7CisgICAgICAgIF9QeUFjY3VfRGVzdHJveSgmYWNjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBydmFsOworICAgIHJldHVybiBfUHlBY2N1X0ZpbmlzaEFzTGlzdCgmYWNjKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyOTcsMTggKzEzNzAsMTkgQEAKIH0KIAogc3RhdGljIGludAotX3N0ZWFsX2xpc3RfYXBwZW5kKFB5T2JqZWN0ICpsc3QsIFB5T2JqZWN0ICpzdG9sZW4pCitfc3RlYWxfYWNjdW11bGF0ZShfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpzdG9sZW4pCiB7CiAgICAgLyogQXBwZW5kIHN0b2xlbiBhbmQgdGhlbiBkZWNyZW1lbnQgaXRzIHJlZmVyZW5jZSBjb3VudCAqLwotICAgIGludCBydmFsID0gUHlMaXN0X0FwcGVuZChsc3QsIHN0b2xlbik7CisgICAgaW50IHJ2YWwgPSBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBzdG9sZW4pOwogICAgIFB5X0RFQ1JFRihzdG9sZW4pOwogICAgIHJldHVybiBydmFsOwogfQogCiBzdGF0aWMgaW50Ci1lbmNvZGVyX2xpc3RlbmNvZGVfb2JqKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQorZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCiB7Ci0gICAgLyogRW5jb2RlIFB5dGhvbiBvYmplY3Qgb2JqIHRvIGEgSlNPTiB0ZXJtLCBydmFsIGlzIGEgUHlMaXN0ICovCisgICAgLyogRW5jb2RlIFB5dGhvbiBvYmplY3Qgb2JqIHRvIGEgSlNPTiB0ZXJtICovCiAgICAgUHlPYmplY3QgKm5ld29iajsKICAgICBpbnQgcnY7CiAKQEAgLTEzMTYsMzggKzEzOTAsMzggQEAKICAgICAgICAgUHlPYmplY3QgKmNzdHIgPSBfZW5jb2RlZF9jb25zdChvYmopOwogICAgICAgICBpZiAoY3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGNzdHIpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBjc3RyKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpCiAgICAgewogICAgICAgICBQeU9iamVjdCAqZW5jb2RlZCA9IGVuY29kZXJfZW5jb2RlX3N0cmluZyhzLCBvYmopOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGVuY29kZWQpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBlbmNvZGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBQeU9iamVjdF9TdHIob2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBlbmNvZGVkKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgZW5jb2RlZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewogICAgICAgICBQeU9iamVjdCAqZW5jb2RlZCA9IGVuY29kZXJfZW5jb2RlX2Zsb2F0KHMsIG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiBfc3RlYWxfbGlzdF9hcHBlbmQocnZhbCwgZW5jb2RlZCk7CisgICAgICAgIHJldHVybiBfc3RlYWxfYWNjdW11bGF0ZShhY2MsIGVuY29kZWQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUxpc3RfQ2hlY2sob2JqKSB8fCBQeVR1cGxlX0NoZWNrKG9iaikpIHsKICAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGVuY29kaW5nIGEgSlNPTiBvYmplY3QiKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfbGlzdChzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCk7CisgICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QocywgYWNjLCBvYmosIGluZGVudF9sZXZlbCk7CiAgICAgICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogICAgICAgICByZXR1cm4gcnY7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5RGljdF9DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QocywgcnZhbCwgb2JqLCBpbmRlbnRfbGV2ZWwpOworICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9kaWN0KHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KQEAgLTEzNzgsNyArMTQ1Miw3IEBACiAKICAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGVuY29kaW5nIGEgSlNPTiBvYmplY3QiKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIHJ2YWwsIG5ld29iaiwgaW5kZW50X2xldmVsKTsKKyAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgbmV3b2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIAogICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKQEAgLTEzOTgsOSArMTQ3MiwxMCBAQAogfQogCiBzdGF0aWMgaW50Ci1lbmNvZGVyX2xpc3RlbmNvZGVfZGljdChQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpydmFsLCBQeU9iamVjdCAqZGN0LCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKK2VuY29kZXJfbGlzdGVuY29kZV9kaWN0KFB5RW5jb2Rlck9iamVjdCAqcywgX1B5QWNjdSAqYWNjLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCiB7Ci0gICAgLyogRW5jb2RlIFB5dGhvbiBkaWN0IGRjdCBhIEpTT04gdGVybSwgcnZhbCBpcyBhIFB5TGlzdCAqLworICAgIC8qIEVuY29kZSBQeXRob24gZGljdCBkY3QgYSBKU09OIHRlcm0gKi8KICAgICBzdGF0aWMgUHlPYmplY3QgKm9wZW5fZGljdCA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjbG9zZV9kaWN0ID0gTlVMTDsKICAgICBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X2RpY3QgPSBOVUxMOwpAQCAtMTQyMCw3ICsxNDk1LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKFB5X1NJWkUoZGN0KSA9PSAwKQotICAgICAgICByZXR1cm4gUHlMaXN0X0FwcGVuZChydmFsLCBlbXB0eV9kaWN0KTsKKyAgICAgICAgcmV0dXJuIF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVtcHR5X2RpY3QpOwogCiAgICAgaWYgKHMtPm1hcmtlcnMgIT0gUHlfTm9uZSkgewogICAgICAgICBpbnQgaGFzX2tleTsKQEAgLTE0MzgsNyArMTUxMyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBvcGVuX2RpY3QpKQorICAgIGlmIChfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBvcGVuX2RpY3QpKQogICAgICAgICBnb3RvIGJhaWw7CiAKICAgICBpZiAocy0+aW5kZW50ICE9IFB5X05vbmUpIHsKQEAgLTE1MjUsNyArMTYwMCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaWR4KSB7Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5pdGVtX3NlcGFyYXRvcikpCisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgcy0+aXRlbV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQogCkBAIC0xNTMzLDE2ICsxNjA4LDE2IEBACiAgICAgICAgIFB5X0NMRUFSKGtzdHIpOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBiYWlsOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBlbmNvZGVkKSkgeworICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgZW5jb2RlZCkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihlbmNvZGVkKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7Ci0gICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHJ2YWwsIHMtPmtleV9zZXBhcmF0b3IpKQorICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgcy0+a2V5X3NlcGFyYXRvcikpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAKICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX0dFVF9JVEVNKGl0ZW0sIDEpOwotICAgICAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCB2YWx1ZSwgaW5kZW50X2xldmVsKSkKKyAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgYWNjLCB2YWx1ZSwgaW5kZW50X2xldmVsKSkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgaWR4ICs9IDE7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKQEAgLTE1NTYsMTQgKzE2MzEsMTMgQEAKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgUHlfQ0xFQVIoaWRlbnQpOwogICAgIH0KKyAgICAvKiBUT0RPIERPRVMgTk9UIFJVTjsgZGVhZCBjb2RlCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwogICAgICAgICBpbmRlbnRfbGV2ZWwgLT0gMTsKLSAgICAgICAgLyoKLSAgICAgICAgICAgIHlpZWxkICdcbicgKyAoJyAnICogKF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwpKQotICAgICAgICAqLwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBjbG9zZV9kaWN0KSkKKworICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKKyAgICB9Ki8KKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgY2xvc2VfZGljdCkpCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICByZXR1cm4gMDsKIApAQCAtMTU3Nyw5ICsxNjUxLDEwIEBACiAKIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCitlbmNvZGVyX2xpc3RlbmNvZGVfbGlzdChQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gbGlzdCBzZXEgdG8gYSBKU09OIHRlcm0sIHJ2YWwgaXMgYSBQeUxpc3QgKi8KKyAgICAvKiBFbmNvZGUgUHl0aG9uIGxpc3Qgc2VxIHRvIGEgSlNPTiB0ZXJtICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpvcGVuX2FycmF5ID0gTlVMTDsKICAgICBzdGF0aWMgUHlPYmplY3QgKmNsb3NlX2FycmF5ID0gTlVMTDsKICAgICBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X2FycmF5ID0gTlVMTDsKQEAgLTE2MDMsNyArMTY3OCw3IEBACiAgICAgbnVtX2l0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNfZmFzdCk7CiAgICAgaWYgKG51bV9pdGVtcyA9PSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzX2Zhc3QpOwotICAgICAgICByZXR1cm4gUHlMaXN0X0FwcGVuZChydmFsLCBlbXB0eV9hcnJheSk7CisgICAgICAgIHJldHVybiBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBlbXB0eV9hcnJheSk7CiAgICAgfQogCiAgICAgaWYgKHMtPm1hcmtlcnMgIT0gUHlfTm9uZSkgewpAQCAtMTYyMyw3ICsxNjk4LDcgQEAKICAgICB9CiAKICAgICBzZXFfaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoc19mYXN0KTsKLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBvcGVuX2FycmF5KSkKKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgb3Blbl9hcnJheSkpCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICBpZiAocy0+aW5kZW50ICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogVE9ETzogRE9FUyBOT1QgUlVOICovCkBAIC0xNjM3LDEwICsxNzEyLDEwIEBACiAgICAgZm9yIChpID0gMDsgaSA8IG51bV9pdGVtczsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvYmogPSBzZXFfaXRlbXNbaV07CiAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5pdGVtX3NlcGFyYXRvcikpCisgICAgICAgICAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgcy0+aXRlbV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCkpCisgICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpKQogICAgICAgICAgICAgZ290byBiYWlsOwogICAgIH0KICAgICBpZiAoaWRlbnQgIT0gTlVMTCkgewpAQCAtMTY0OCwxNCArMTcyMywxNCBAQAogICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICBQeV9DTEVBUihpZGVudCk7CiAgICAgfQorCisgICAgLyogVE9ETzogRE9FUyBOT1QgUlVOCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwogICAgICAgICBpbmRlbnRfbGV2ZWwgLT0gMTsKLSAgICAgICAgLyoKLSAgICAgICAgICAgIHlpZWxkICdcbicgKyAoJyAnICogKF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwpKQotICAgICAgICAqLwotICAgIH0KLSAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBjbG9zZV9hcnJheSkpCisKKyAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCisgICAgfSovCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGNsb3NlX2FycmF5KSkKICAgICAgICAgZ290byBiYWlsOwogICAgIFB5X0RFQ1JFRihzX2Zhc3QpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwppbmRleCAxMDAxZGQyLi5jYzY4OGJhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwpAQCAtNDIsNDMgKzQyLDYgQEAKIAogc3RhdGljIFB5T2JqZWN0ICpFcnJvcjsKIAotLyogQ29udmVydCBhIGNoYXIqIHRvIGEgVW5pY29kZSBvYmplY3QgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZSAqLwotc3RhdGljIFB5T2JqZWN0Kgotc3RyMnVuaShjb25zdCBjaGFyKiBzKQotewotI2lmZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCi0gICAgc2l6ZV90IG5lZWRlZCA9IHN0cmxlbihzKTsKLSNlbHNlCi0gICAgc2l6ZV90IG5lZWRlZCA9IG1ic3Rvd2NzKE5VTEwsIHMsIDApOwotI2VuZGlmCi0gICAgc2l6ZV90IHJlczE7Ci0gICAgd2NoYXJfdCBzbWFsbGJ1ZlszMF07Ci0gICAgd2NoYXJfdCAqZGVzdDsKLSAgICBQeU9iamVjdCAqcmVzMjsKLSAgICBpZiAobmVlZGVkID09IChzaXplX3QpLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBieXRlIHRvIHN0cmluZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKG5lZWRlZCpzaXplb2Yod2NoYXJfdCkgPCBzaXplb2Yoc21hbGxidWYpKQotICAgICAgICBkZXN0ID0gc21hbGxidWY7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRlc3QgPSBQeU1lbV9NYWxsb2MoKG5lZWRlZCsxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgICAgICBpZiAoIWRlc3QpCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgLyogVGhpcyBzaG91bGRuJ3QgZmFpbCBub3cgKi8KLSAgICByZXMxID0gbWJzdG93Y3MoZGVzdCwgcywgbmVlZGVkKzEpOwotI2lmZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCi0gICAgYXNzZXJ0KHJlczEgIT0gKHNpemVfdCktMSk7Ci0jZWxzZQotICAgIGFzc2VydChyZXMxID09IG5lZWRlZCk7Ci0jZW5kaWYKLSAgICByZXMyID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkZXN0LCByZXMxKTsKLSAgICBpZiAoZGVzdCAhPSBzbWFsbGJ1ZikKLSAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKLSAgICByZXR1cm4gcmVzMjsKLX0KLQogLyogc3VwcG9ydCBmdW5jdGlvbnMgZm9yIGZvcm1hdHRpbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyAqLwogCiBQeURvY19TVFJWQVIoc2V0bG9jYWxlX19kb2NfXywKQEAgLTE0OSw3ICsxMTIsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAidW5zdXBwb3J0ZWQgbG9jYWxlIHNldHRpbmciKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdF9vYmplY3QgPSBzdHIydW5pKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdF9vYmplY3QgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHJlc3VsdCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0X29iamVjdCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CkBAIC0xNTksNyArMTIyLDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgImxvY2FsZSBxdWVyeSBmYWlsZWQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdF9vYmplY3QgPSBzdHIydW5pKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdF9vYmplY3QgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHJlc3VsdCwgTlVMTCk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHRfb2JqZWN0OwogfQpAQCAtMTg1LDcgKzE0OCw3IEBACiAgICAgICAgaW52b2x2ZWQgaGVyZWluICovCiAKICNkZWZpbmUgUkVTVUxUX1NUUklORyhzKVwKLSAgICB4ID0gc3RyMnVuaShsLT5zKTsgICBcCisgICAgeCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUobC0+cywgTlVMTCk7ICAgXAogICAgIGlmICgheCkgZ290byBmYWlsZWQ7XAogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHJlc3VsdCwgI3MsIHgpO1wKICAgICBQeV9YREVDUkVGKHgpCkBAIC0yNzEsNTEgKzIzNCw0MyBAQAogc3RhdGljIFB5T2JqZWN0KgogUHlMb2NhbGVfc3RyeGZybShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqczA7Ci0gICAgUHlfc3NpemVfdCBuMDsKLSAgICB3Y2hhcl90ICpzLCAqYnVmID0gTlVMTDsKLSAgICBzaXplX3QgbjEsIG4yOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgUHlfc3NpemVfdCBuMTsKKyAgICB3Y2hhcl90ICpzID0gTlVMTCwgKmJ1ZiA9IE5VTEw7CisgICAgc2l6ZV90IG4yOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotI2lmIFB5X1VOSUNPREVfU0laRSAhPSBTSVpFT0ZfV0NIQVJfVAotICAgIFB5X3NzaXplX3QgaTsKLSNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IzpzdHJ4ZnJtIiwgJnMwLCAmbjApKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpzdHJ4ZnJtIiwgJnN0cikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgcyA9ICh3Y2hhcl90ICopIHMwOwotI2Vsc2UKLSAgICBzID0gUHlNZW1fTWFsbG9jKChuMCsxKSpzaXplb2Yod2NoYXJfdCkpOwotICAgIGlmICghcykKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgZm9yIChpPTA7IGk8PW4wOyBpKyspCi0gICAgICAgIHNbaV0gPSBzMFtpXTsKLSNlbmRpZgorICAgIHMgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhzdHIsICZuMSk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBleGl0OwogCiAgICAgLyogYXNzdW1lIG5vIGNoYW5nZSBpbiBzaXplLCBmaXJzdCAqLwotICAgIG4xID0gd2NzbGVuKHMpICsgMTsKLSAgICBidWYgPSBQeU1lbV9NYWxsb2MobjEqc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBuMSA9IG4xICsgMTsKKyAgICBidWYgPSBQeU1lbV9NYWxsb2MobjEgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghYnVmKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgbjIgPSB3Y3N4ZnJtKGJ1ZiwgcywgbjEpOwotICAgIGlmIChuMiA+PSBuMSkgeworICAgIGlmIChuMiA+PSAoc2l6ZV90KW4xKSB7CiAgICAgICAgIC8qIG1vcmUgc3BhY2UgbmVlZGVkICovCi0gICAgICAgIGJ1ZiA9IFB5TWVtX1JlYWxsb2MoYnVmLCAobjIrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKLSAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgd2NoYXJfdCAqIG5ld19idWYgPSBQeU1lbV9SZWFsbG9jKGJ1ZiwgKG4yKzEpKnNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGlmICghbmV3X2J1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdfYnVmOwogICAgICAgICBuMiA9IHdjc3hmcm0oYnVmLCBzLCBuMisxKTsKICAgICB9CiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihidWYsIG4yKTsKLSBleGl0OgotICAgIGlmIChidWYpIFB5TWVtX0ZyZWUoYnVmKTsKLSNpZiBQeV9VTklDT0RFX1NJWkUgIT0gU0laRU9GX1dDSEFSX1QKLSAgICBQeU1lbV9GcmVlKHMpOwotI2VuZGlmCitleGl0OgorICAgIGlmIChidWYpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAocykKKyAgICAgICAgUHlNZW1fRnJlZShzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCkBAIC00ODUsNyArNDQwLDcgQEAKICAgICAgICAgICAgICAgIGluc3RlYWQgb2YgYW4gZW1wdHkgc3RyaW5nIGZvciBubF9sYW5naW5mbyhFUkEpLiAgKi8KICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IG5sX2xhbmdpbmZvKGl0ZW0pOwogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICE9IE5VTEwgPyByZXN1bHQgOiAiIjsKLSAgICAgICAgICAgIHJldHVybiBzdHIydW5pKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShyZXN1bHQsIE5VTEwpOwogICAgICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bnN1cHBvcnRlZCBsYW5naW5mbyBjb25zdGFudCIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTA0LDcgKzQ1OSw3IEBACiAgICAgY2hhciAqaW47CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiwgJmluKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZ2V0dGV4dChpbikpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGdldHRleHQoaW4pLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKGRnZXR0ZXh0X19kb2NfXywKQEAgLTUxNyw3ICs0NzIsNyBAQAogICAgIGNoYXIgKmRvbWFpbiwgKmluOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienMiLCAmZG9tYWluLCAmaW4pKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RyMnVuaShkZ2V0dGV4dChkb21haW4sIGluKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZGdldHRleHQoZG9tYWluLCBpbiksIE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIoZGNnZXR0ZXh0X19kb2NfXywKQEAgLTUzMSw3ICs0ODYsNyBAQAogICAgIGludCBjYXRlZ29yeTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInpzaSIsICZkb21haW4sICZtc2dpZCwgJmNhdGVnb3J5KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZGNnZXR0ZXh0KGRvbWFpbixtc2dpZCxjYXRlZ29yeSkpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGRjZ2V0dGV4dChkb21haW4sbXNnaWQsY2F0ZWdvcnkpLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKHRleHRkb21haW5fX2RvY19fLApAQCAtNTQ5LDcgKzUwNCw3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBzdHIydW5pKGRvbWFpbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoZG9tYWluLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKGJpbmR0ZXh0ZG9tYWluX19kb2NfXywKQEAgLTU4MSw3ICs1MzYsNyBAQAogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSBzdHIydW5pKGN1cnJlbnRfZGlybmFtZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShjdXJyZW50X2Rpcm5hbWUsIE5VTEwpOwogICAgIFB5X1hERUNSRUYoZGlybmFtZV9ieXRlcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU5OSw3ICs1NTQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjb2Rlc2V0ID0gYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQoZG9tYWluLCBjb2Rlc2V0KTsKICAgICBpZiAoY29kZXNldCkKLSAgICAgICAgcmV0dXJuIHN0cjJ1bmkoY29kZXNldCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGNvZGVzZXQsIE5VTEwpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IGNjNDEyYmYuLmIwYTIyNmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0xNzYsMzYgKzE3NiwyOSBAQAogICAgIGlmIChmbi0+bV9zZWxmID09IE5VTEwpIHsKICAgICAgICAgLyogYnVpbHQtaW4gZnVuY3Rpb246IGxvb2sgdXAgdGhlIG1vZHVsZSBuYW1lICovCiAgICAgICAgIFB5T2JqZWN0ICptb2QgPSBmbi0+bV9tb2R1bGU7Ci0gICAgICAgIGNvbnN0IGNoYXIgKm1vZG5hbWU7Ci0gICAgICAgIGlmIChtb2QgJiYgUHlVbmljb2RlX0NoZWNrKG1vZCkpIHsKLSAgICAgICAgICAgIC8qIFhYWDogVGhlIGZvbGxvd2luZyB3aWxsIHRydW5jYXRlIG1vZHVsZSBuYW1lcyB3aXRoIGVtYmVkZGVkCi0gICAgICAgICAgICAgKiBudWxsLWNoYXJhY3RlcnMuICBJdCBpcyB1bmxpa2VseSB0aGF0IHRoaXMgY2FuIGhhcHBlbiBpbgotICAgICAgICAgICAgICogcHJhY3RpY2UgYW5kIHRoZSBjb25jZXF1ZW5jZXMgYXJlIG5vdCBzZXJpb3VzIGVub3VnaCB0bwotICAgICAgICAgICAgICogaW50cm9kdWNlIGV4dHJhIGNoZWNrcyBoZXJlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBtb2RuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtb2QpOwotICAgICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSAiPGVuY29kaW5nIGVycm9yPiI7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBOVUxMOworICAgICAgICBpZiAobW9kICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobW9kKSkgeworICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBtb2Q7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKG1vZG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlNb2R1bGVfQ2hlY2sobW9kKSkgeworICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KG1vZCk7CisgICAgICAgICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtb2QgJiYgUHlNb2R1bGVfQ2hlY2sobW9kKSkgewotICAgICAgICAgICAgbW9kbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUobW9kKTsKLSAgICAgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSAiYnVpbHRpbnMiOworICAgICAgICBpZiAobW9kbmFtZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobW9kbmFtZSwgImJ1aWx0aW5zIikgIT0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlVS4lcz4iLCBtb2RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihtb2RuYW1lKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vZG5hbWUgPSAiYnVpbHRpbnMiOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJjbXAobW9kbmFtZSwgImJ1aWx0aW5zIikgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzLiVzPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi0+bV9tbC0+bWxfbmFtZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcz4iLCBmbi0+bV9tbC0+bWxfbmFtZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBidWlsdC1pbiBtZXRob2Q6IHRyeSB0byByZXR1cm4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDgyYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC0wLDAgKzEsMTI4NiBAQAorLyogX2x6bWEgLSBMb3ctbGV2ZWwgUHl0aG9uIGludGVyZmFjZSB0byBsaWJsem1hLgorCisgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIGJ5IFBlciDDmHl2aW5kIEthcmxzZW4uCisgICBSZXdyaXR0ZW4gYnkgTmFkZWVtIFZhd2RhLgorCisqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2lmZGVmIFdJVEhfVEhSRUFECisjaW5jbHVkZSAicHl0aHJlYWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxsem1hLmg+CisKKworI2lmbmRlZiBQWV9MT05HX0xPTkcKKyNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgUFlfTE9OR19MT05HIHRvIGJlIGRlZmluZWQiCisjZW5kaWYKKworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCisgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMgXAorICAgIH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKChvYmopLT5sb2NrKQorI2Vsc2UKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikKKyNlbmRpZgorCisKKy8qIENvbnRhaW5lciBmb3JtYXRzOiAqLworZW51bSB7CisgICAgRk9STUFUX0FVVE8sCisgICAgRk9STUFUX1haLAorICAgIEZPUk1BVF9BTE9ORSwKKyAgICBGT1JNQVRfUkFXLAorfTsKKworI2RlZmluZSBMWk1BX0NIRUNLX1VOS05PV04gKExaTUFfQ0hFQ0tfSURfTUFYICsgMSkKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGx6bWFfc3RyZWFtIGx6czsKKyAgICBpbnQgZmx1c2hlZDsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IENvbXByZXNzb3I7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgbHptYV9zdHJlYW0gbHpzOworICAgIGludCBjaGVjazsKKyAgICBjaGFyIGVvZjsKKyAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBEZWNvbXByZXNzb3I7CisKKy8qIExaTUFFcnJvciBjbGFzcyBvYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKkVycm9yOworCisvKiBBbiBlbXB0eSB0dXBsZSwgdXNlZCBieSB0aGUgZmlsdGVyIHNwZWNpZmllciBwYXJzaW5nIGNvZGUuICovCitzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3R1cGxlOworCisKKy8qIEhlbHBlciBmdW5jdGlvbnMuICovCisKK3N0YXRpYyBpbnQKK2NhdGNoX2x6bWFfZXJyb3IobHptYV9yZXQgbHpyZXQpCit7CisgICAgc3dpdGNoIChsenJldCkgeworICAgICAgICBjYXNlIExaTUFfT0s6CisgICAgICAgIGNhc2UgTFpNQV9HRVRfQ0hFQ0s6CisgICAgICAgIGNhc2UgTFpNQV9OT19DSEVDSzoKKyAgICAgICAgY2FzZSBMWk1BX1NUUkVBTV9FTkQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBMWk1BX1VOU1VQUE9SVEVEX0NIRUNLOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiVW5zdXBwb3J0ZWQgaW50ZWdyaXR5IGNoZWNrIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX01FTV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX01FTUxJTUlUX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiTWVtb3J5IHVzYWdlIGxpbWl0IGV4Y2VlZGVkIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX0ZPUk1BVF9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIklucHV0IGZvcm1hdCBub3Qgc3VwcG9ydGVkIGJ5IGRlY29kZXIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfT1BUSU9OU19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkludmFsaWQgb3IgdW5zdXBwb3J0ZWQgb3B0aW9ucyIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9EQVRBX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEVycm9yLCAiQ29ycnVwdCBpbnB1dCBkYXRhIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX0JVRl9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkluc3VmZmljaWVudCBidWZmZXIgc3BhY2UiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfUFJPR19FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkludGVybmFsIGVycm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChFcnJvciwgIlVucmVjb2duaXplZCBlcnJvciBmcm9tIGxpYmx6bWE6ICVkIiwgbHpyZXQpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjaWYgQlVGU0laIDwgODE5MgorI2RlZmluZSBJTklUSUFMX0JVRkZFUl9TSVpFIDgxOTIKKyNlbHNlCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgQlVGU0laCisjZW5kaWYKKworc3RhdGljIGludAorZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCit7CisgICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBzaXplICsgKHNpemUgPj4gMykgKyA2KTsKK30KKworCisvKiBTb21lIGN1c3RvbSB0eXBlIGNvbnZlcnNpb25zIGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSwKKyAgIHNpbmNlIHRoZSBwcmVkZWZpbmVkIGNvbnZlcnNpb24gc3BlY2lmaWVycyBkbyBub3Qgc3VpdCBvdXIgbmVlZHM6CisKKyAgICAgIHVpbnQzMl90IC0gdGhlICJJIiAodW5zaWduZWQgaW50KSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0IHNpemUsIGJ1dAorICAgICAgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KKworICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKKyAgICAgIHNpemUsIGJ1dCBsaWtlICJJIiBpdCBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgorCisgICAgICBsem1hX21vZGUgYW5kIGx6bWFfbWF0Y2hfZmluZGVyIC0gdGhlc2UgYXJlIGVudW1lcmF0aW9uIHR5cGVzLCBhbmQKKyAgICAgIHNvIHRoZSBzaXplIG9mIGVhY2ggaXMgaW1wbGVtZW50YXRpb24tZGVmaW5lZC4gV29yc2UsIGRpZmZlcmVudAorICAgICAgZW51bSB0eXBlcyBjYW4gYmUgb2YgZGlmZmVyZW50IHNpemVzIHdpdGhpbiB0aGUgc2FtZSBwcm9ncmFtLCBzbworICAgICAgdG8gYmUgc3RyaWN0bHkgY29ycmVjdCwgd2UgbmVlZCB0byBkZWZpbmUgdHdvIHNlcGFyYXRlIGNvbnZlcnRlcnMuCisgKi8KKworI2RlZmluZSBJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhUWVBFLCBGVU5DTkFNRSkgXAorICAgIHN0YXRpYyBpbnQgXAorICAgIEZVTkNOQU1FKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikgXAorICAgIHsgXAorICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOyBcCisgICAgICAgIFwKKyAgICAgICAgdmFsID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopOyBcCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSBcCisgICAgICAgICAgICByZXR1cm4gMDsgXAorICAgICAgICBpZiAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIHRvbyBsYXJnZSBmb3IgIiAjVFlQRSAiIHR5cGUiKTsgXAorICAgICAgICAgICAgcmV0dXJuIDA7IFwKKyAgICAgICAgfSBcCisgICAgICAgICooVFlQRSAqKXB0ciA9IChUWVBFKXZhbDsgXAorICAgICAgICByZXR1cm4gMTsgXAorICAgIH0KKworSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkModWludDMyX3QsIHVpbnQzMl9jb252ZXJ0ZXIpCitJTlRfVFlQRV9DT05WRVJURVJfRlVOQyhsem1hX3ZsaSwgbHptYV92bGlfY29udmVydGVyKQorSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMobHptYV9tb2RlLCBsem1hX21vZGVfY29udmVydGVyKQorSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMobHptYV9tYXRjaF9maW5kZXIsIGx6bWFfbWZfY29udmVydGVyKQorCisjdW5kZWYgSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMKKworCisvKiBGaWx0ZXIgc3BlY2lmaWVyIHBhcnNpbmcuCisKKyAgIFRoaXMgY29kZSBoYW5kbGVzIGNvbnZlcnRpbmcgZmlsdGVyIHNwZWNpZmllcnMgKFB5dGhvbiBkaWN0cykgaW50bworICAgdGhlIEMgbHptYV9maWx0ZXIgc3RydWN0cyBleHBlY3RlZCBieSBsaWJsem1hLiAqLworCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlY19sem1hKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHN0YXRpYyBjaGFyICpvcHRuYW1lc1tdID0geyJpZCIsICJwcmVzZXQiLCAiZGljdF9zaXplIiwgImxjIiwgImxwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGIiLCAibW9kZSIsICJuaWNlX2xlbiIsICJtZiIsICJkZXB0aCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKyAgICBQeU9iamVjdCAqcHJlc2V0X29iajsKKyAgICB1aW50MzJfdCBwcmVzZXQgPSBMWk1BX1BSRVNFVF9ERUZBVUxUOworICAgIGx6bWFfb3B0aW9uc19sem1hICpvcHRpb25zOworCisgICAgLyogRmlyc3QsIGZpbGwgaW4gZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgb3B0aW9ucyB1c2luZyBhIHByZXNldC4KKyAgICAgICBUaGVuLCBvdmVycmlkZSB0aGUgZGVmYXVsdHMgd2l0aCBhbnkgdmFsdWVzIGdpdmVuIGJ5IHRoZSBjYWxsZXIuICovCisKKyAgICBwcmVzZXRfb2JqID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcoc3BlYywgInByZXNldCIpOworICAgIGlmIChwcmVzZXRfb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG9rID0gdWludDMyX2NvbnZlcnRlcihwcmVzZXRfb2JqLCAmcHJlc2V0KTsKKyAgICAgICAgUHlfREVDUkVGKHByZXNldF9vYmopOworICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3B0aW9ucyA9IChsem1hX29wdGlvbnNfbHptYSAqKVB5TWVtX01hbGxvYyhzaXplb2YgKm9wdGlvbnMpOworICAgIGlmIChvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG1lbXNldChvcHRpb25zLCAwLCBzaXplb2YgKm9wdGlvbnMpOworCisgICAgaWYgKGx6bWFfbHptYV9wcmVzZXQob3B0aW9ucywgcHJlc2V0KSkgeworICAgICAgICBQeU1lbV9GcmVlKG9wdGlvbnMpOworICAgICAgICBQeUVycl9Gb3JtYXQoRXJyb3IsICJJbnZhbGlkIGNvbXByZXNzaW9uIHByZXNldDogJWQiLCBwcmVzZXQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhlbXB0eV90dXBsZSwgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifE9PTyZPJk8mTyZPJk8mTyZPJiIsIG9wdG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZCwgJnByZXNldF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPmRpY3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+bGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPmxwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5wYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hX21vZGVfY29udmVydGVyLCAmb3B0aW9ucy0+bW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+bmljZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHptYV9tZl9jb252ZXJ0ZXIsICZvcHRpb25zLT5tZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+ZGVwdGgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZmlsdGVyIHNwZWNpZmllciBmb3IgTFpNQSBmaWx0ZXIiKTsKKyAgICAgICAgUHlNZW1fRnJlZShvcHRpb25zKTsKKyAgICAgICAgb3B0aW9ucyA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlY19kZWx0YShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBzdGF0aWMgY2hhciAqb3B0bmFtZXNbXSA9IHsiaWQiLCAiZGlzdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKyAgICB1aW50MzJfdCBkaXN0ID0gMTsKKyAgICBsem1hX29wdGlvbnNfZGVsdGEgKm9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhlbXB0eV90dXBsZSwgc3BlYywgInxPTyYiLCBvcHRuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWQsIHVpbnQzMl9jb252ZXJ0ZXIsICZkaXN0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBzcGVjaWZpZXIgZm9yIGRlbHRhIGZpbHRlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcHRpb25zID0gKGx6bWFfb3B0aW9uc19kZWx0YSAqKVB5TWVtX01hbGxvYyhzaXplb2YgKm9wdGlvbnMpOworICAgIGlmIChvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG1lbXNldChvcHRpb25zLCAwLCBzaXplb2YgKm9wdGlvbnMpOworICAgIG9wdGlvbnMtPnR5cGUgPSBMWk1BX0RFTFRBX1RZUEVfQllURTsKKyAgICBvcHRpb25zLT5kaXN0ID0gZGlzdDsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIHZvaWQgKgorcGFyc2VfZmlsdGVyX3NwZWNfYmNqKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHN0YXRpYyBjaGFyICpvcHRuYW1lc1tdID0geyJpZCIsICJzdGFydF9vZmZzZXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaWQ7CisgICAgdWludDMyX3Qgc3RhcnRfb2Zmc2V0ID0gMDsKKyAgICBsem1hX29wdGlvbnNfYmNqICpvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZW1wdHlfdHVwbGUsIHNwZWMsICJ8T08mIiwgb3B0bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkLCB1aW50MzJfY29udmVydGVyLCAmc3RhcnRfb2Zmc2V0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBzcGVjaWZpZXIgZm9yIEJDSiBmaWx0ZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3B0aW9ucyA9IChsem1hX29wdGlvbnNfYmNqICopUHlNZW1fTWFsbG9jKHNpemVvZiAqb3B0aW9ucyk7CisgICAgaWYgKG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbWVtc2V0KG9wdGlvbnMsIDAsIHNpemVvZiAqb3B0aW9ucyk7CisgICAgb3B0aW9ucy0+c3RhcnRfb2Zmc2V0ID0gc3RhcnRfb2Zmc2V0OworICAgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgdm9pZCAqCitwYXJzZV9maWx0ZXJfc3BlYyhsem1hX2ZpbHRlciAqZiwgUHlPYmplY3QgKnNwZWMpCit7CisgICAgUHlPYmplY3QgKmlkX29iajsKKworICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKHNwZWMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiRmlsdGVyIHNwZWNpZmllciBtdXN0IGJlIGEgZGljdCBvciBkaWN0LWxpa2Ugb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZF9vYmogPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyhzcGVjLCAiaWQiKTsKKyAgICBpZiAoaWRfb2JqID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbHRlciBzcGVjaWZpZXIgbXVzdCBoYXZlIGFuIFwiaWRcIiBlbnRyeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZi0+aWQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKGlkX29iaik7CisgICAgUHlfREVDUkVGKGlkX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3dpdGNoIChmLT5pZCkgeworICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUExOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUEyOgorICAgICAgICAgICAgZi0+b3B0aW9ucyA9IHBhcnNlX2ZpbHRlcl9zcGVjX2x6bWEoc3BlYyk7CisgICAgICAgICAgICByZXR1cm4gZi0+b3B0aW9uczsKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9ERUxUQToKKyAgICAgICAgICAgIGYtPm9wdGlvbnMgPSBwYXJzZV9maWx0ZXJfc3BlY19kZWx0YShzcGVjKTsKKyAgICAgICAgICAgIHJldHVybiBmLT5vcHRpb25zOworICAgICAgICBjYXNlIExaTUFfRklMVEVSX1g4NjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9QT1dFUlBDOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0lBNjQ6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNOgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTVRIVU1COgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1NQQVJDOgorICAgICAgICAgICAgZi0+b3B0aW9ucyA9IHBhcnNlX2ZpbHRlcl9zcGVjX2JjaihzcGVjKTsKKyAgICAgICAgICAgIHJldHVybiBmLT5vcHRpb25zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZpbHRlciBJRDogJWxsdSIsIGYtPmlkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2ZyZWVfZmlsdGVyX2NoYWluKGx6bWFfZmlsdGVyIGZpbHRlcnNbXSkKK3sKKyAgICBpbnQgaTsKKworICAgIGZvciAoaSA9IDA7IGZpbHRlcnNbaV0uaWQgIT0gTFpNQV9WTElfVU5LTk9XTjsgaSsrKQorICAgICAgICBQeU1lbV9GcmVlKGZpbHRlcnNbaV0ub3B0aW9ucyk7Cit9CisKK3N0YXRpYyBpbnQKK3BhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGx6bWFfZmlsdGVyIGZpbHRlcnNbXSwgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIFB5X3NzaXplX3QgaSwgbnVtX2ZpbHRlcnM7CisKKyAgICBudW1fZmlsdGVycyA9IFB5U2VxdWVuY2VfTGVuZ3RoKGZpbHRlcnNwZWNzKTsKKyAgICBpZiAobnVtX2ZpbHRlcnMgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX2ZpbHRlcnMgPiBMWk1BX0ZJTFRFUlNfTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGZpbHRlcnMgLSBsaWJsem1hIHN1cHBvcnRzIGEgbWF4aW11bSBvZiAlZCIsCisgICAgICAgICAgICAgICAgICAgICBMWk1BX0ZJTFRFUlNfTUFYKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZmlsdGVyczsgaSsrKSB7CisgICAgICAgIGludCBvayA9IDE7CisgICAgICAgIFB5T2JqZWN0ICpzcGVjID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGZpbHRlcnNwZWNzLCBpKTsKKyAgICAgICAgaWYgKHNwZWMgPT0gTlVMTCB8fCBwYXJzZV9maWx0ZXJfc3BlYygmZmlsdGVyc1tpXSwgc3BlYykgPT0gTlVMTCkKKyAgICAgICAgICAgIG9rID0gMDsKKyAgICAgICAgUHlfWERFQ1JFRihzcGVjKTsKKyAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgZmlsdGVyc1tpXS5pZCA9IExaTUFfVkxJX1VOS05PV047CisgICAgICAgICAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmaWx0ZXJzW251bV9maWx0ZXJzXS5pZCA9IExaTUFfVkxJX1VOS05PV047CisgICAgcmV0dXJuIDA7Cit9CisKKworLyogRmlsdGVyIHNwZWNpZmllciBjb25zdHJ1Y3Rpb24uCisKKyAgIFRoaXMgY29kZSBoYW5kbGVzIGNvbnZlcnRpbmcgQyBsem1hX2ZpbHRlciBzdHJ1Y3RzIGludG8KKyAgIFB5dGhvbi1sZXZlbCBmaWx0ZXIgc3BlY2lmaWVycyAocmVwcmVzZW50ZWQgYXMgZGljdHMpLiAqLworCitzdGF0aWMgaW50CitzcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbHVlKQoreworICAgIGludCBzdGF0dXM7CisgICAgUHlPYmplY3QgKnZhbHVlX29iamVjdDsKKworICAgIHZhbHVlX29iamVjdCA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgaWYgKHZhbHVlX29iamVjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzdGF0dXMgPSBfUHlEaWN0X1NldEl0ZW1JZChzcGVjLCBrZXksIHZhbHVlX29iamVjdCk7CisgICAgUHlfREVDUkVGKHZhbHVlX29iamVjdCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWxkX2ZpbHRlcl9zcGVjKGNvbnN0IGx6bWFfZmlsdGVyICpmKQoreworICAgIFB5T2JqZWN0ICpzcGVjOworCisgICAgc3BlYyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoc3BlYyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBBRERfRklFTEQoU09VUkNFLCBGSUVMRCkgXAorICAgIGRvIHsgXAorICAgICAgICBfUHlfSURFTlRJRklFUihGSUVMRCk7IFwKKyAgICAgICAgaWYgKHNwZWNfYWRkX2ZpZWxkKHNwZWMsICZQeUlkXyMjRklFTEQsIFNPVVJDRS0+RklFTEQpID09IC0xKSBcCisgICAgICAgICAgICBnb3RvIGVycm9yO1wKKyAgICB9IHdoaWxlICgwKQorCisgICAgQUREX0ZJRUxEKGYsIGlkKTsKKworICAgIHN3aXRjaCAoZi0+aWQpIHsKKyAgICAgICAgLyogRm9yIExaTUExIGZpbHRlcnMsIGx6bWFfcHJvcGVydGllc197ZW5jb2RlLGRlY29kZX0oKSBvbmx5IGxvb2sgYXQgdGhlCisgICAgICAgICAgIGxjLCBscCwgcGIsIGFuZCBkaWN0X3NpemUgZmllbGRzLiBGb3IgTFpNQTIgZmlsdGVycywgb25seSB0aGUKKyAgICAgICAgICAgZGljdF9zaXplIGZpZWxkIGlzIHVzZWQuICovCisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTE6IHsKKyAgICAgICAgICAgIGx6bWFfb3B0aW9uc19sem1hICpvcHRpb25zID0gZi0+b3B0aW9uczsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBsYyk7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgbHApOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIHBiKTsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBkaWN0X3NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9MWk1BMjogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2x6bWEgKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGRpY3Rfc2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0RFTFRBOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfZGVsdGEgKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGRpc3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9YODY6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfUE9XRVJQQzoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9JQTY0OgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTToKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9BUk1USFVNQjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9TUEFSQzogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2JjaiAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgc3RhcnRfb2Zmc2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZmlsdGVyIElEOiAlbGx1IiwgZi0+aWQpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyN1bmRlZiBBRERfRklFTEQKKworICAgIHJldHVybiBzcGVjOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoc3BlYyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLyogTFpNQUNvbXByZXNzb3IgY2xhc3MuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb21wcmVzcyhDb21wcmVzc29yICpjLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBsem1hX2FjdGlvbiBhY3Rpb24pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjLT5senMubmV4dF9pbiA9IGRhdGE7CisgICAgYy0+bHpzLmF2YWlsX2luID0gbGVuOworICAgIGMtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBjLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmYy0+bHpzLCBhY3Rpb24pOworICAgICAgICBkYXRhX3NpemUgPSAoY2hhciAqKWMtPmx6cy5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmICgoYWN0aW9uID09IExaTUFfUlVOICYmIGMtPmx6cy5hdmFpbF9pbiA9PSAwKSB8fAorICAgICAgICAgICAgKGFjdGlvbiA9PSBMWk1BX0ZJTklTSCAmJiBsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChjLT5senMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgYy0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihDb21wcmVzc29yX2NvbXByZXNzX2RvYywKKyJjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYlwiXCIgb3RoZXJ3aXNlLlxuIgorIlxuIgorIldoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlXG4iCisiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb252ZXJzaW9uIHByb2Nlc3MuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0NvbXByZXNzb3JfY29tcHJlc3MoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcHJlc3NvciBoYXMgYmVlbiBmbHVzaGVkIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuLCBMWk1BX1JVTik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlEb2NfU1RSVkFSKENvbXByZXNzb3JfZmx1c2hfZG9jLAorImZsdXNoKCkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0XG4iCisiaW4gaW50ZXJuYWwgYnVmZmVycy5cbiIKKyJcbiIKKyJUaGUgY29tcHJlc3NvciBvYmplY3QgY2Fubm90IGJlIHVzZWQgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitDb21wcmVzc29yX2ZsdXNoKENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJSZXBlYXRlZCBjYWxsIHRvIGZsdXNoKCkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmLT5mbHVzaGVkID0gMTsKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgTlVMTCwgMCwgTFpNQV9GSU5JU0gpOworICAgIH0KKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorQ29tcHJlc3Nvcl9pbml0X3h6KGx6bWFfc3RyZWFtICpsenMsIGludCBjaGVjaywgdWludDMyX3QgcHJlc2V0LAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChmaWx0ZXJzcGVjcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGx6cmV0ID0gbHptYV9lYXN5X2VuY29kZXIobHpzLCBwcmVzZXQsIGNoZWNrKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKworICAgICAgICBpZiAocGFyc2VfZmlsdGVyX2NoYWluX3NwZWMoZmlsdGVycywgZmlsdGVyc3BlY3MpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBsenJldCA9IGx6bWFfc3RyZWFtX2VuY29kZXIobHpzLCBmaWx0ZXJzLCBjaGVjayk7CisgICAgICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIH0KKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXRfYWxvbmUobHptYV9zdHJlYW0gKmx6cywgdWludDMyX3QgcHJlc2V0LCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBsem1hX29wdGlvbnNfbHptYSBvcHRpb25zOworCisgICAgICAgIGlmIChsem1hX2x6bWFfcHJlc2V0KCZvcHRpb25zLCBwcmVzZXQpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoRXJyb3IsICJJbnZhbGlkIGNvbXByZXNzaW9uIHByZXNldDogJWQiLCBwcmVzZXQpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGx6cmV0ID0gbHptYV9hbG9uZV9lbmNvZGVyKGx6cywgJm9wdGlvbnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworCisgICAgICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChmaWx0ZXJzWzBdLmlkID09IExaTUFfRklMVEVSX0xaTUExICYmCisgICAgICAgICAgICBmaWx0ZXJzWzFdLmlkID09IExaTUFfVkxJX1VOS05PV04pIHsKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9hbG9uZV9lbmNvZGVyKGx6cywgZmlsdGVyc1swXS5vcHRpb25zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBjaGFpbiBmb3IgRk9STUFUX0FMT05FIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgc2luZ2xlIExaTUExIGZpbHRlciIpOworICAgICAgICAgICAgbHpyZXQgPSBMWk1BX1BST0dfRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpIHx8IGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorQ29tcHJlc3Nvcl9pbml0X3Jhdyhsem1hX3N0cmVhbSAqbHpzLCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyc1tMWk1BX0ZJTFRFUlNfTUFYICsgMV07CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHNwZWNpZnkgZmlsdGVycyBmb3IgRk9STUFUX1JBVyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsenJldCA9IGx6bWFfcmF3X2VuY29kZXIobHpzLCBmaWx0ZXJzKTsKKyAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitDb21wcmVzc29yX2luaXQoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmFyZ19uYW1lc1tdID0geyJmb3JtYXQiLCAiY2hlY2siLCAicHJlc2V0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBpbnQgZm9ybWF0ID0gRk9STUFUX1haOworICAgIGludCBjaGVjayA9IC0xOworICAgIHVpbnQzMl90IHByZXNldCA9IExaTUFfUFJFU0VUX0RFRkFVTFQ7CisgICAgUHlPYmplY3QgKnByZXNldF9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxpaU9POkxaTUFDb21wcmVzc29yIiwgYXJnX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICZjaGVjaywgJnByZXNldF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbHRlcnNwZWNzKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGZvcm1hdCAhPSBGT1JNQVRfWFogJiYgY2hlY2sgIT0gLTEgJiYgY2hlY2sgIT0gTFpNQV9DSEVDS19OT05FKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludGVncml0eSBjaGVja3MgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IEZPUk1BVF9YWiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHByZXNldF9vYmogIT0gUHlfTm9uZSAmJiBmaWx0ZXJzcGVjcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGJvdGggcHJlc2V0IGFuZCBmaWx0ZXIgY2hhaW4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChwcmVzZXRfb2JqICE9IFB5X05vbmUpCisgICAgICAgIGlmICghdWludDMyX2NvbnZlcnRlcihwcmVzZXRfb2JqLCAmcHJlc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIHNlbGYtPmZsdXNoZWQgPSAwOworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgIGNhc2UgRk9STUFUX1haOgorICAgICAgICAgICAgaWYgKGNoZWNrID09IC0xKQorICAgICAgICAgICAgICAgIGNoZWNrID0gTFpNQV9DSEVDS19DUkM2NDsKKyAgICAgICAgICAgIGlmIChDb21wcmVzc29yX2luaXRfeHooJnNlbGYtPmx6cywgY2hlY2ssIHByZXNldCwgZmlsdGVyc3BlY3MpICE9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9BTE9ORToKKyAgICAgICAgICAgIGlmIChDb21wcmVzc29yX2luaXRfYWxvbmUoJnNlbGYtPmx6cywgcHJlc2V0LCBmaWx0ZXJzcGVjcykgIT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX1JBVzoKKyAgICAgICAgICAgIGlmIChDb21wcmVzc29yX2luaXRfcmF3KCZzZWxmLT5senMsIGZpbHRlcnNwZWNzKSAhPSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGNvbnRhaW5lciBmb3JtYXQ6ICVkIiwgZm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorQ29tcHJlc3Nvcl9kZWFsbG9jKENvbXByZXNzb3IgKnNlbGYpCit7CisgICAgbHptYV9lbmQoJnNlbGYtPmx6cyk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgQ29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIENvbXByZXNzb3JfY29tcHJlc3NfZG9jfSwKKyAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKUNvbXByZXNzb3JfZmx1c2gsIE1FVEhfTk9BUkdTLAorICAgICBDb21wcmVzc29yX2ZsdXNoX2RvY30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQ29tcHJlc3Nvcl9kb2MsCisiTFpNQUNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpXG4iCisiXG4iCisiQ3JlYXRlIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IHRvIHVzZSBmb3IgdGhlIG91dHB1dC4gVGhpcyBjYW5cbiIKKyJiZSBGT1JNQVRfWFogKGRlZmF1bHQpLCBGT1JNQVRfQUxPTkUsIG9yIEZPUk1BVF9SQVcuXG4iCisiXG4iCisiY2hlY2sgc3BlY2lmaWVzIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdG8gdXNlLiBGb3IgRk9STUFUX1haLCB0aGUgZGVmYXVsdFxuIgorImlzIENIRUNLX0NSQzY0LiBGT1JNQVRfQUxPTkUgYW5kIEZPUk1BVF9SQVcgZG8gbm90IHN1cG9ydCBpbnRlZ3JpdHlcbiIKKyJjaGVja3M7IGZvciB0aGVzZSBmb3JtYXRzLCBjaGVjayBtdXN0IGJlIG9taXR0ZWQsIG9yIGJlIENIRUNLX05PTkUuXG4iCisiXG4iCisiVGhlIHNldHRpbmdzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgY2FuIGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYVxuIgorInByZXNldCBjb21wcmVzc2lvbiBsZXZlbCAod2l0aCB0aGUgJ3ByZXNldCcgYXJndW1lbnQpLCBvciBpbiBkZXRhaWxcbiIKKyJhcyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gKHdpdGggdGhlICdmaWx0ZXJzJyBhcmd1bWVudCkuIEZvciBGT1JNQVRfWFpcbiIKKyJhbmQgRk9STUFUX0FMT05FLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIFBSRVNFVF9ERUZBVUxUIHByZXNldFxuIgorImxldmVsLiBGb3IgRk9STUFUX1JBVywgdGhlIGNhbGxlciBtdXN0IGFsd2F5cyBzcGVjaWZ5IGEgZmlsdGVyIGNoYWluO1xuIgorInRoZSByYXcgY29tcHJlc3NvciBkb2VzIG5vdCBzdXBwb3J0IHByZXNldCBjb21wcmVzc2lvbiBsZXZlbHMuXG4iCisiXG4iCisicHJlc2V0IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOSwgb3B0aW9uYWxseVxuIgorIk9SLWVkIHdpdGggdGhlIGNvbnN0YW50IFBSRVNFVF9FWFRSRU1FLlxuIgorIlxuIgorImZpbHRlcnMgKGlmIHByb3ZpZGVkKSBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBkaWN0cy4gRWFjaCBkaWN0IHNob3VsZFxuIgorImhhdmUgYW4gZW50cnkgZm9yIFwiaWRcIiBpbmRpY2F0aW5nIHRoZSBJRCBvZiB0aGUgZmlsdGVyLCBwbHVzXG4iCisiYWRkaXRpb25hbCBlbnRyaWVzIGZvciBvcHRpb25zIHRvIHRoZSBmaWx0ZXIuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGNvbXByZXNzaW9uLCB1c2UgdGhlIGNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IENvbXByZXNzb3JfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2x6bWEuTFpNQUNvbXByZXNzb3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKENvbXByZXNzb3IpLCAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilDb21wcmVzc29yX2RlYWxsb2MsICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgQ29tcHJlc3Nvcl9kb2MsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBDb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylDb21wcmVzc29yX2luaXQsICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKiBMWk1BRGVjb21wcmVzc29yIGNsYXNzLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKmQsIHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBsZW4pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBkLT5senMubmV4dF9pbiA9IGRhdGE7CisgICAgZC0+bHpzLmF2YWlsX2luID0gbGVuOworICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmZC0+bHpzLCBMWk1BX1JVTik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopZC0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKGx6cmV0ID09IExaTUFfR0VUX0NIRUNLIHx8IGx6cmV0ID09IExaTUFfTk9fQ0hFQ0spCisgICAgICAgICAgICBkLT5jaGVjayA9IGx6bWFfZ2V0X2NoZWNrKCZkLT5senMpOworICAgICAgICBpZiAobHpyZXQgPT0gTFpNQV9TVFJFQU1fRU5EKSB7CisgICAgICAgICAgICBkLT5lb2YgPSAxOworICAgICAgICAgICAgaWYgKGQtPmx6cy5hdmFpbF9pbiA+IDApIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICAgICAgZC0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilkLT5senMubmV4dF9pbiwgZC0+bHpzLmF2YWlsX2luKTsKKyAgICAgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9pbiA9PSAwKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChkLT5senMuYXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOworICAgICAgICAgICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZGVjb21wcmVzc19kb2MsCisiZGVjb21wcmVzcyhkYXRhKSAtPiBieXRlc1xuIgorIlxuIgorIlByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC4gUmV0dXJucyBhIGNodW5rIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGJcIlwiIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXNcbiIKKyJyZWFjaGVkIHJhaXNlcyBhbiBFT0ZFcnJvci4gQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGVcbiIKKyJzdHJlYW0gaXMgaWdub3JlZCwgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0RlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZW9mKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJBbHJlYWR5IGF0IGVuZCBvZiBzdHJlYW0iKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbik7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAorRGVjb21wcmVzc29yX2luaXRfcmF3KGx6bWFfc3RyZWFtICpsenMsIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKyAgICBsem1hX3JldCBsenJldDsKKworICAgIGlmIChwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhmaWx0ZXJzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsenJldCA9IGx6bWFfcmF3X2RlY29kZXIobHpzLCBmaWx0ZXJzKTsKKyAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitEZWNvbXByZXNzb3JfaW5pdChEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICphcmdfbmFtZXNbXSA9IHsiZm9ybWF0IiwgIm1lbWxpbWl0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBjb25zdCB1aW50MzJfdCBkZWNvZGVyX2ZsYWdzID0gTFpNQV9URUxMX0FOWV9DSEVDSyB8IExaTUFfVEVMTF9OT19DSEVDSzsKKyAgICBpbnQgZm9ybWF0ID0gRk9STUFUX0FVVE87CisgICAgdWludDY0X3QgbWVtbGltaXQgPSBVSU5UNjRfTUFYOworICAgIFB5T2JqZWN0ICptZW1saW1pdF9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcyA9IFB5X05vbmU7CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxpT086TFpNQURlY29tcHJlc3NvciIsIGFyZ19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAmbWVtbGltaXRfb2JqLCAmZmlsdGVyc3BlY3MpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAobWVtbGltaXRfb2JqICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKGZvcm1hdCA9PSBGT1JNQVRfUkFXKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgbWVtb3J5IGxpbWl0IHdpdGggRk9STUFUX1JBVyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG1lbWxpbWl0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhtZW1saW1pdF9vYmopOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZm9ybWF0ID09IEZPUk1BVF9SQVcgJiYgZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IHNwZWNpZnkgZmlsdGVycyBmb3IgRk9STUFUX1JBVyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmIChmb3JtYXQgIT0gRk9STUFUX1JBVyAmJiBmaWx0ZXJzcGVjcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGZpbHRlcnMgZXhjZXB0IHdpdGggRk9STUFUX1JBVyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+Y2hlY2sgPSBMWk1BX0NIRUNLX1VOS05PV047CisgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBGT1JNQVRfQVVUTzoKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9hdXRvX2RlY29kZXIoJnNlbGYtPmx6cywgbWVtbGltaXQsIGRlY29kZXJfZmxhZ3MpOworICAgICAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfWFo6CisgICAgICAgICAgICBsenJldCA9IGx6bWFfc3RyZWFtX2RlY29kZXIoJnNlbGYtPmx6cywgbWVtbGltaXQsIGRlY29kZXJfZmxhZ3MpOworICAgICAgICAgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfQUxPTkU6CisgICAgICAgICAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfTk9ORTsKKyAgICAgICAgICAgIGx6cmV0ID0gbHptYV9hbG9uZV9kZWNvZGVyKCZzZWxmLT5senMsIG1lbWxpbWl0KTsKKyAgICAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX1JBVzoKKyAgICAgICAgICAgIHNlbGYtPmNoZWNrID0gTFpNQV9DSEVDS19OT05FOworICAgICAgICAgICAgaWYgKERlY29tcHJlc3Nvcl9pbml0X3Jhdygmc2VsZi0+bHpzLCBmaWx0ZXJzcGVjcykgPT0gLTEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgY29udGFpbmVyIGZvcm1hdDogJWQiLCBmb3JtYXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCitlcnJvcjoKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitEZWNvbXByZXNzb3JfZGVhbGxvYyhEZWNvbXByZXNzb3IgKnNlbGYpCit7CisgICAgbHptYV9lbmQoJnNlbGYtPmx6cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIERlY29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKURlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIERlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2RvY30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2NoZWNrX2RvYywKKyJJRCBvZiB0aGUgaW50ZWdyaXR5IGNoZWNrIHVzZWQgYnkgdGhlIGlucHV0IHN0cmVhbS4iKTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9lb2ZfZG9jLAorIlRydWUgaWYgdGhlIGVuZC1vZi1zdHJlYW0gbWFya2VyIGhhcyBiZWVuIHJlYWNoZWQuIik7CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jLAorIkRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uIik7CisKK3N0YXRpYyBQeU1lbWJlckRlZiBEZWNvbXByZXNzb3JfbWVtYmVyc1tdID0geworICAgIHsiY2hlY2siLCBUX0lOVCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCBjaGVjayksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfY2hlY2tfZG9jfSwKKyAgICB7ImVvZiIsIFRfQk9PTCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCBlb2YpLCBSRUFET05MWSwKKyAgICAgRGVjb21wcmVzc29yX2VvZl9kb2N9LAorICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksIFJFQURPTkxZLAorICAgICBEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZG9jLAorIkxaTUFEZWNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpXG4iCisiXG4iCisiQ3JlYXRlIGEgZGVjb21wcmVzc29yIG9iamVjdCBmb3IgZGVjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiZm9ybWF0IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCBvZiB0aGUgaW5wdXQgc3RyZWFtLiBJZiB0aGlzIGlzXG4iCisiRk9STUFUX0FVVE8gKHRoZSBkZWZhdWx0KSwgdGhlIGRlY29tcHJlc3NvciB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0XG4iCisid2hldGhlciB0aGUgaW5wdXQgaXMgRk9STUFUX1haIG9yIEZPUk1BVF9BTE9ORS4gU3RyZWFtcyBjcmVhdGVkIHdpdGhcbiIKKyJGT1JNQVRfUkFXIGNhbm5vdCBiZSBhdXRvZGV0ZWN0ZWQuXG4iCisiXG4iCisibWVtbGltaXQgY2FuIGJlIHNwZWNpZmllZCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IHRoZVxuIgorImRlY29tcHJlc3Nvci4gVGhpcyB3aWxsIGNhdXNlIGRlY29tcHJlc3Npb24gdG8gZmFpbCBpZiB0aGUgaW5wdXRcbiIKKyJjYW5ub3QgYmUgZGVjb21wcmVzc2VkIHdpdGhpbiB0aGUgZ2l2ZW4gbGltaXQuXG4iCisiXG4iCisiZmlsdGVycyBzcGVjaWZpZXMgYSBjdXN0b20gZmlsdGVyIGNoYWluLiBUaGlzIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvclxuIgorIkZPUk1BVF9SQVcsIGFuZCBub3QgYWNjZXB0ZWQgd2l0aCBhbnkgb3RoZXIgZm9ybWF0LiBXaGVuIHByb3ZpZGVkLFxuIgorInRoaXMgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgZGljdHMsIGVhY2ggaW5kaWNhdGluZyB0aGUgSUQgYW5kIG9wdGlvbnNcbiIKKyJmb3IgYSBzaW5nbGUgZmlsdGVyLlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBkZWNvbXByZXNzaW9uLCB1c2UgdGhlIGRlY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuIik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRGVjb21wcmVzc29yX3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9sem1hLkxaTUFEZWNvbXByZXNzb3IiLCAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihEZWNvbXByZXNzb3IpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpRGVjb21wcmVzc29yX2RlYWxsb2MsICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIERlY29tcHJlc3Nvcl9kb2MsICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgRGVjb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIERlY29tcHJlc3Nvcl9tZW1iZXJzLCAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpRGVjb21wcmVzc29yX2luaXQsICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogTW9kdWxlLWxldmVsIGZ1bmN0aW9ucy4gKi8KKworUHlEb2NfU1RSVkFSKGlzX2NoZWNrX3N1cHBvcnRlZF9kb2MsCisiaXNfY2hlY2tfc3VwcG9ydGVkKGNoZWNrX2lkKSAtPiBib29sXG4iCisiXG4iCisiVGVzdCB3aGV0aGVyIHRoZSBnaXZlbiBpbnRlZ3JpdHkgY2hlY2sgaXMgc3VwcG9ydGVkLlxuIgorIlxuIgorIkFsd2F5cyByZXR1cm5zIFRydWUgZm9yIENIRUNLX05PTkUgYW5kIENIRUNLX0NSQzMyLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitpc19jaGVja19zdXBwb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBjaGVja19pZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTppc19jaGVja19zdXBwb3J0ZWQiLCAmY2hlY2tfaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcobHptYV9jaGVja19pc19zdXBwb3J0ZWQoY2hlY2tfaWQpKTsKK30KKworCitQeURvY19TVFJWQVIoX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2MsCisiX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhmaWx0ZXIpIC0+IGJ5dGVzXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGVuY29kaW5nIHRoZSBvcHRpb25zIChwcm9wZXJ0aWVzKSBvZiB0aGUgZmlsdGVyXG4iCisic3BlY2lmaWVkIGJ5ICpmaWx0ZXIqIChhIGRpY3QpLlxuIgorIlxuIgorIlRoZSByZXN1bHQgZG9lcyBub3QgaW5jbHVkZSB0aGUgZmlsdGVyIElEIGl0c2VsZiwgb25seSB0aGUgb3B0aW9ucy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmZpbHRlcnNwZWM7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyOworICAgIGx6bWFfcmV0IGx6cmV0OworICAgIHVpbnQzMl90IGVuY29kZWRfc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgJmZpbHRlcnNwZWMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChwYXJzZV9maWx0ZXJfc3BlYygmZmlsdGVyLCBmaWx0ZXJzcGVjKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGx6cmV0ID0gbHptYV9wcm9wZXJ0aWVzX3NpemUoJmVuY29kZWRfc2l6ZSwgJmZpbHRlcik7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBlbmNvZGVkX3NpemUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGx6cmV0ID0gbHptYV9wcm9wZXJ0aWVzX2VuY29kZSgKKyAgICAgICAgICAgICZmaWx0ZXIsICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSk7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlNZW1fRnJlZShmaWx0ZXIub3B0aW9ucyk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIFB5TWVtX0ZyZWUoZmlsdGVyLm9wdGlvbnMpOworICAgIHJldHVybiBOVUxMOworfQorCisKK1B5RG9jX1NUUlZBUihfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvYywKKyJfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGZpbHRlcl9pZCwgZW5jb2RlZF9wcm9wcykgLT4gZGljdFxuIgorIlxuIgorIlJldHVybiBhIGRpY3QgZGVzY3JpYmluZyBhIGZpbHRlciB3aXRoIElEICpmaWx0ZXJfaWQqLCBhbmQgb3B0aW9uc1xuIgorIihwcm9wZXJ0aWVzKSBkZWNvZGVkIGZyb20gdGhlIGJ5dGVzIG9iamVjdCAqZW5jb2RlZF9wcm9wcyouXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBlbmNvZGVkX3Byb3BzOworICAgIGx6bWFfZmlsdGVyIGZpbHRlcjsKKyAgICBsem1hX3JldCBsenJldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyLmlkLCAmZW5jb2RlZF9wcm9wcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbHpyZXQgPSBsem1hX3Byb3BlcnRpZXNfZGVjb2RlKAorICAgICAgICAgICAgJmZpbHRlciwgTlVMTCwgZW5jb2RlZF9wcm9wcy5idWYsIGVuY29kZWRfcHJvcHMubGVuKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZlbmNvZGVkX3Byb3BzKTsKKyAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYnVpbGRfZmlsdGVyX3NwZWMoJmZpbHRlcik7CisKKyAgICAvKiBXZSB1c2UgdmFuaWxsYSBmcmVlKCkgaGVyZSBpbnN0ZWFkIG9mIFB5TWVtX0ZyZWUoKSAtIGZpbHRlci5vcHRpb25zIHdhcworICAgICAgIGFsbG9jYXRlZCBieSBsem1hX3Byb3BlcnRpZXNfZGVjb2RlKCkgdXNpbmcgdGhlIGRlZmF1bHQgYWxsb2NhdG9yLiAqLworICAgIGZyZWUoZmlsdGVyLm9wdGlvbnMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogTW9kdWxlIGluaXRpYWxpemF0aW9uLiAqLworCitzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKKyAgICB7ImlzX2NoZWNrX3N1cHBvcnRlZCIsIChQeUNGdW5jdGlvbilpc19jaGVja19zdXBwb3J0ZWQsCisgICAgIE1FVEhfVkFSQVJHUywgaXNfY2hlY2tfc3VwcG9ydGVkX2RvY30sCisgICAgeyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsCisgICAgIE1FVEhfVkFSQVJHUywgX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2N9LAorICAgIHsiX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLAorICAgICBNRVRIX1ZBUkFSR1MsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfZG9jfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBfbHptYW1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl9sem1hIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIG1vZHVsZV9tZXRob2RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCit9OworCisvKiBTb21lIG9mIG91ciBjb25zdGFudHMgYXJlIG1vcmUgdGhhbiAzMiBiaXRzIHdpZGUsIHNvIFB5TW9kdWxlX0FkZEludENvbnN0YW50CisgICB3b3VsZCBub3Qgd29yayBjb3JyZWN0bHkgb24gcGxhdGZvcm1zIHdpdGggMzItYml0IGxvbmdzLiAqLworc3RhdGljIGludAorbW9kdWxlX2FkZF9pbnRfY29uc3RhbnQoUHlPYmplY3QgKm0sIGNvbnN0IGNoYXIgKm5hbWUsIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqbyA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsdWUpOworICAgIGlmIChvID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIG5hbWUsIG8pID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIFB5X0RFQ1JFRihvKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNkZWZpbmUgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgbWFjcm8pIFwKKyAgICBtb2R1bGVfYWRkX2ludF9jb25zdGFudChtLCAjbWFjcm8sIExaTUFfICMjIG1hY3JvKQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X19sem1hKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBlbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOworICAgIGlmIChlbXB0eV90dXBsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9sem1hbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfQVVUTykgPT0gLTEgfHwKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRk9STUFUX1haKSA9PSAtMSB8fAorICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfQUxPTkUpID09IC0xIHx8CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9SQVcpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX05PTkUpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX0NSQzMyKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19DUkM2NCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfU0hBMjU2KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19JRF9NQVgpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX1VOS05PV04pID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9MWk1BMSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0xaTUEyKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfREVMVEEpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9YODYpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9JQTY0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfQVJNKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfQVJNVEhVTUIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9TUEFSQykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX1BPV0VSUEMpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0hDMykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfSEM0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9CVDIpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0JUMykgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfQlQ0KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNT0RFX0ZBU1QpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1PREVfTk9STUFMKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBQUkVTRVRfREVGQVVMVCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgUFJFU0VUX0VYVFJFTUUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgICAgICJfbHptYS5MWk1BRXJyb3IiLCAiQ2FsbCB0byBsaWJsem1hIGZhaWxlZC4iLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoRXJyb3IgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKEVycm9yKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJMWk1BRXJyb3IiLCBFcnJvcikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQ29tcHJlc3Nvcl90eXBlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZDb21wcmVzc29yX3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkxaTUFDb21wcmVzc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZDb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJkRlY29tcHJlc3Nvcl90eXBlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZEZWNvbXByZXNzb3JfdHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTFpNQURlY29tcHJlc3NvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmRGVjb21wcmVzc29yX3R5cGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24uaCBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMmQ1YWEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDUyNyArMCwwIEBACi0vKgotICogRGVmaW5pdGlvbiBvZiBhIGBDb25uZWN0aW9uYCB0eXBlLgotICogVXNlZCBieSBgc29ja2V0X2Nvbm5lY3Rpb24uY2AgYW5kIGBwaXBlX2Nvbm5lY3Rpb24uY2AuCi0gKgotICogY29ubmVjdGlvbi5oCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2lmbmRlZiBDT05ORUNUSU9OX0gKLSNkZWZpbmUgQ09OTkVDVElPTl9ICi0KLS8qCi0gKiBSZWFkL3dyaXRlIGZsYWdzCi0gKi8KLQotI2RlZmluZSBSRUFEQUJMRSAxCi0jZGVmaW5lIFdSSVRBQkxFIDIKLQotI2RlZmluZSBDSEVDS19SRUFEQUJMRShzZWxmKSBcCi0gICAgaWYgKCEoc2VsZi0+ZmxhZ3MgJiBSRUFEQUJMRSkpIHsgXAotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY29ubmVjdGlvbiBpcyB3cml0ZS1vbmx5Iik7IFwKLSAgICByZXR1cm4gTlVMTDsgXAotICAgIH0KLQotI2RlZmluZSBDSEVDS19XUklUQUJMRShzZWxmKSBcCi0gICAgaWYgKCEoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkpIHsgXAotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKTsgXAotICAgIHJldHVybiBOVUxMOyBcCi0gICAgfQotCi0vKgotICogQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIENvbm5lY3Rpb25PYmplY3QgKnNlbGY7Ci0gICAgSEFORExFIGhhbmRsZTsKLSAgICBCT09MIHJlYWRhYmxlID0gVFJVRSwgd3JpdGFibGUgPSBUUlVFOwotCi0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAicmVhZGFibGUiLCAid3JpdGFibGUiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsIEZfSEFORExFICJ8aWkiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJnJlYWRhYmxlLCAmd3JpdGFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUgfHwgKFB5X3NzaXplX3QpaGFuZGxlIDwgMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwgImludmFsaWQgaGFuZGxlICV6ZCIsCi0gICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCloYW5kbGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoIXJlYWRhYmxlICYmICF3cml0YWJsZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgcmVhZGFibGUgb3Igd3JpdGFibGUgbXVzdCBiZSB0cnVlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoQ29ubmVjdGlvbk9iamVjdCwgdHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmLT53ZWFrcmVmbGlzdCA9IE5VTEw7Ci0gICAgc2VsZi0+aGFuZGxlID0gaGFuZGxlOwotICAgIHNlbGYtPmZsYWdzID0gMDsKLQotICAgIGlmIChyZWFkYWJsZSkKLSAgICAgICAgc2VsZi0+ZmxhZ3MgfD0gUkVBREFCTEU7Ci0gICAgaWYgKHdyaXRhYmxlKQotICAgICAgICBzZWxmLT5mbGFncyB8PSBXUklUQUJMRTsKLSAgICBhc3NlcnQoc2VsZi0+ZmxhZ3MgPj0gMSAmJiBzZWxmLT5mbGFncyA8PSAzKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jb25uZWN0aW9uX2RlYWxsb2MoQ29ubmVjdGlvbk9iamVjdCogc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKLSAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QqKXNlbGYpOwotCi0gICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgfQotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLX0KLQotLyoKLSAqIEZ1bmN0aW9ucyBmb3IgdHJhbnNmZXJyaW5nIGJ1ZmZlcnMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9zZW5kYnl0ZXMoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBidWZmZXI7Ci0gICAgY2hhciAqYnVmZmVyOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBvZmZzZXQ9MCwgc2l6ZT1QWV9TU0laRV9UX01JTjsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfUkJVRkZFUiAiKnwiIEZfUFlfU1NJWkVfVCBGX1BZX1NTSVpFX1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYnVmZmVyLCAmb2Zmc2V0LCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZmZlciA9IHBidWZmZXIuYnVmOwotICAgIGxlbmd0aCA9IHBidWZmZXIubGVuOwotCi0gICAgQ0hFQ0tfV1JJVEFCTEUoc2VsZik7IC8qIFhYWCByZWxlYXNlIGJ1ZmZlciBpbiBjYXNlIG9mIGZhaWx1cmUgKi8KLQotICAgIGlmIChvZmZzZXQgPCAwKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBpcyBuZWdhdGl2ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKGxlbmd0aCA8IG9mZnNldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJidWZmZXIgbGVuZ3RoIDwgb2Zmc2V0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChzaXplID09IFBZX1NTSVpFX1RfTUlOKSB7Ci0gICAgICAgIHNpemUgPSBsZW5ndGggLSBvZmZzZXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2l6ZSBpcyBuZWdhdGl2ZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9mZnNldCArIHNpemUgPiBsZW5ndGgpIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQgKyBzaXplIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJlcyA9IGNvbm5fc2VuZF9zdHJpbmcoc2VsZiwgYnVmZmVyICsgb2Zmc2V0LCBzaXplKTsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWZmZXIpOwotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0KLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWN2Ynl0ZXMoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqZnJlZW1lID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlcywgbWF4bGVuZ3RoID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInwiIEZfUFlfU1NJWkVfVCwgJm1heGxlbmd0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICBpZiAobWF4bGVuZ3RoIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1heGxlbmd0aCA8IDAiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmVzID0gY29ubl9yZWN2X3N0cmluZyhzZWxmLCBzZWxmLT5idWZmZXIsIENPTk5FQ1RJT05fQlVGRkVSX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZW1lLCBtYXhsZW5ndGgpOwotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgaWYgKHJlcyA9PSBNUF9CQURfTUVTU0FHRV9MRU5HVEgpIHsKLSAgICAgICAgICAgIGlmICgoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkgPT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNlbGYtPmZsYWdzID0gV1JJVEFCTEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnJlZW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShmcmVlbWUsIHJlcyk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGZyZWVtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWN2Ynl0ZXNfaW50byhDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpmcmVlbWUgPSBOVUxMLCAqYnVmZmVyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlcywgbGVuZ3RoLCBvZmZzZXQgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBwYnVmOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqfCIgRl9QWV9TU0laRV9ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZiwgJm9mZnNldCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYnVmZmVyID0gcGJ1Zi5idWY7Ci0gICAgbGVuZ3RoID0gcGJ1Zi5sZW47Ci0KLSAgICBpZiAob2Zmc2V0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIG9mZnNldCIpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0KLSAgICBpZiAob2Zmc2V0ID4gbGVuZ3RoKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IHRvbyBsYXJnZSIpOwotICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICB9Ci0KLSAgICByZXMgPSBjb25uX3JlY3Zfc3RyaW5nKHNlbGYsIGJ1ZmZlcitvZmZzZXQsIGxlbmd0aC1vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZW1lLCBQWV9TU0laRV9UX01BWCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAocmVzID09IE1QX0JBRF9NRVNTQUdFX0xFTkdUSCkgewotICAgICAgICAgICAgaWYgKChzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi0+ZmxhZ3MgPSBXUklUQUJMRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmcmVlbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlJbnRfRnJvbVNzaXplX3QocmVzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihCdWZmZXJUb29TaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX1JCVUZGRVIgIiMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWVtZSwgcmVzKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoZnJlZW1lKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoQnVmZmVyVG9vU2hvcnQsIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBnb3RvIF9lcnJvcjsKLSAgICAgICAgfQotICAgIH0KLQotX2NsZWFudXA6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLQotX2Vycm9yOgotICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZ290byBfY2xlYW51cDsKLX0KLQotLyoKLSAqIEZ1bmN0aW9ucyBmb3IgdHJhbnNmZXJyaW5nIG9iamVjdHMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9zZW5kX29iaihDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQotewotICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICBpbnQgcmVzOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIFB5T2JqZWN0ICpwaWNrbGVkX3N0cmluZyA9IE5VTEw7Ci0KLSAgICBDSEVDS19XUklUQUJMRShzZWxmKTsKLQotICAgIHBpY2tsZWRfc3RyaW5nID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhwaWNrbGVfZHVtcHMsIG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlX3Byb3RvY29sLCBOVUxMKTsKLSAgICBpZiAoIXBpY2tsZWRfc3RyaW5nKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0KLSAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUocGlja2xlZF9zdHJpbmcsICZidWZmZXIsICZsZW5ndGgpIDwgMCkKLSAgICAgICAgZ290byBmYWlsdXJlOwotCi0gICAgcmVzID0gY29ubl9zZW5kX3N0cmluZyhzZWxmLCBidWZmZXIsIChpbnQpbGVuZ3RoKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICB9Ci0KLSAgICBQeV9YREVDUkVGKHBpY2tsZWRfc3RyaW5nKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLQotICBmYWlsdXJlOgotICAgIFB5X1hERUNSRUYocGlja2xlZF9zdHJpbmcpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9yZWN2X29iaihDb25uZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIGNoYXIgKmZyZWVtZSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIENIRUNLX1JFQURBQkxFKHNlbGYpOwotCi0gICAgcmVzID0gY29ubl9yZWN2X3N0cmluZyhzZWxmLCBzZWxmLT5idWZmZXIsIENPTk5FQ1RJT05fQlVGRkVSX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZW1lLCBQWV9TU0laRV9UX01BWCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAocmVzID09IE1QX0JBRF9NRVNTQUdFX0xFTkdUSCkgewotICAgICAgICAgICAgaWYgKChzZWxmLT5mbGFncyAmIFdSSVRBQkxFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIENMT1NFKHNlbGYtPmhhbmRsZSk7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi0+ZmxhZ3MgPSBXUklUQUJMRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChmcmVlbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgdGVtcCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCByZXMpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGVtcCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZnJlZW1lLCByZXMpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShmcmVlbWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHRlbXApCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocGlja2xlX2xvYWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAsIE5VTEwpOwotICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyoKLSAqIE90aGVyIGZ1bmN0aW9ucwotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3BvbGwoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gTlVMTDsKLSAgICBkb3VibGUgdGltZW91dCA9IDAuMDsKLSAgICBpbnQgcmVzOwotCi0gICAgQ0hFQ0tfUkVBREFCTEUoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJnRpbWVvdXRfb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCkgewotICAgICAgICB0aW1lb3V0ID0gMC4wOwotICAgIH0gZWxzZSBpZiAodGltZW91dF9vYmogPT0gUHlfTm9uZSkgewotICAgICAgICB0aW1lb3V0ID0gLTEuMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBibG9jayBmb3JldmVyICovCi0gICAgfSBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUodGltZW91dF9vYmopOwotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAodGltZW91dCA8IDAuMCkKLSAgICAgICAgICAgIHRpbWVvdXQgPSAwLjA7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNvbm5fcG9sbChzZWxmLCB0aW1lb3V0LCBfc2F2ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIHN3aXRjaCAocmVzKSB7Ci0gICAgY2FzZSBUUlVFOgotICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICBjYXNlIEZBTFNFOgotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfQotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9maWxlbm8oQ29ubmVjdGlvbk9iamVjdCogc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiaGFuZGxlIGlzIGludmFsaWQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZylzZWxmLT5oYW5kbGUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9jbG9zZShDb25uZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICB9Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVwcihDb25uZWN0aW9uT2JqZWN0ICpzZWxmKQotewotICAgIHN0YXRpYyBjaGFyICpjb25uX3R5cGVbXSA9IHsicmVhZC1vbmx5IiwgIndyaXRlLW9ubHkiLCAicmVhZC13cml0ZSJ9OwotCi0gICAgYXNzZXJ0KHNlbGYtPmZsYWdzID49IDEgJiYgc2VsZi0+ZmxhZ3MgPD0gMyk7Ci0gICAgcmV0dXJuIEZST01fRk9STUFUKCI8JXMgJXMsIGhhbmRsZSAlemQ+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29ubl90eXBlW3NlbGYtPmZsYWdzIC0gMV0sCi0gICAgICAgICAgICAgICAgICAgICAgIENPTk5FQ1RJT05fTkFNRSwgKFB5X3NzaXplX3Qpc2VsZi0+aGFuZGxlKTsKLX0KLQotLyoKLSAqIEdldHRlcnMgYW5kIHNldHRlcnMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9jbG9zZWQoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVhZGFibGUoQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5mbGFncyAmIFJFQURBQkxFKSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3dyaXRhYmxlKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi17Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkpOwotfQotCi0vKgotICogVGFibGVzCi0gKi8KLQotc3RhdGljIFB5TWV0aG9kRGVmIGNvbm5lY3Rpb25fbWV0aG9kc1tdID0gewotICAgIHsic2VuZF9ieXRlcyIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3NlbmRieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICAic2VuZCB0aGUgYnl0ZSBkYXRhIGZyb20gYSByZWFkYWJsZSBidWZmZXItbGlrZSBvYmplY3QifSwKLSAgICB7InJlY3ZfYnl0ZXMiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9yZWN2Ynl0ZXMsIE1FVEhfVkFSQVJHUywKLSAgICAgInJlY2VpdmUgYnl0ZSBkYXRhIGFzIGEgc3RyaW5nIn0sCi0gICAgeyJyZWN2X2J5dGVzX2ludG8iLChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3JlY3ZieXRlc19pbnRvLE1FVEhfVkFSQVJHUywKLSAgICAgInJlY2VpdmUgYnl0ZSBkYXRhIGludG8gYSB3cml0ZWFibGUgYnVmZmVyLWxpa2Ugb2JqZWN0XG4iCi0gICAgICJyZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCJ9LAotCi0gICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fc2VuZF9vYmosIE1FVEhfTywKLSAgICAgInNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QifSwKLSAgICB7InJlY3YiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9yZWN2X29iaiwgTUVUSF9OT0FSR1MsCi0gICAgICJyZWNlaXZlIGEgKHBpY2tsYWJsZSkgb2JqZWN0In0sCi0KLSAgICB7InBvbGwiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9wb2xsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJ3aGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCJ9LAotICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fZmlsZW5vLCBNRVRIX05PQVJHUywKLSAgICAgImZpbGUgZGVzY3JpcHRvciBvciBoYW5kbGUgb2YgdGhlIGNvbm5lY3Rpb24ifSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fY2xvc2UsIE1FVEhfTk9BUkdTLAotICAgICAiY2xvc2UgdGhlIGNvbm5lY3Rpb24ifSwKLQotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLXN0YXRpYyBQeUdldFNldERlZiBjb25uZWN0aW9uX2dldHNldFtdID0gewotICAgIHsiY2xvc2VkIiwgKGdldHRlciljb25uZWN0aW9uX2Nsb3NlZCwgTlVMTCwKLSAgICAgIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgY2xvc2VkIiwgTlVMTH0sCi0gICAgeyJyZWFkYWJsZSIsIChnZXR0ZXIpY29ubmVjdGlvbl9yZWFkYWJsZSwgTlVMTCwKLSAgICAgIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZGFibGUiLCBOVUxMfSwKLSAgICB7IndyaXRhYmxlIiwgKGdldHRlciljb25uZWN0aW9uX3dyaXRhYmxlLCBOVUxMLAotICAgICAiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyB3cml0YWJsZSIsIE5VTEx9LAotICAgIHtOVUxMfQotfTsKLQotLyoKLSAqIENvbm5lY3Rpb24gdHlwZQotICovCi0KLVB5RG9jX1NUUlZBUihjb25uZWN0aW9uX2RvYywKLSAgICAgICAgICAgICAiQ29ubmVjdGlvbiB0eXBlIHdob3NlIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBpc1xuXG4iCi0gICAgICAgICAgICAgIiAgICBDb25uZWN0aW9uKGhhbmRsZSwgcmVhZGFibGU9VHJ1ZSwgd3JpdGFibGU9VHJ1ZSkuXG5cbiIKLSAgICAgICAgICAgICAiVGhlIGNvbnN0cnVjdG9yIGRvZXMgKm5vdCogZHVwbGljYXRlIHRoZSBoYW5kbGUuIik7Ci0KLVB5VHlwZU9iamVjdCBDT05ORUNUSU9OX1RZUEUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgLyogdHBfbmFtZSAgICAgICAgICAgKi8gIl9tdWx0aXByb2Nlc3NpbmcuIiBDT05ORUNUSU9OX05BTUUsCi0gICAgLyogdHBfYmFzaWNzaXplICAgICAgKi8gc2l6ZW9mKENvbm5lY3Rpb25PYmplY3QpLAotICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICovIDAsCi0gICAgLyogdHBfZGVhbGxvYyAgICAgICAgKi8gKGRlc3RydWN0b3IpY29ubmVjdGlvbl9kZWFsbG9jLAotICAgIC8qIHRwX3ByaW50ICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZ2V0YXR0ciAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9zZXRhdHRyICAgICAgICAqLyAwLAotICAgIC8qIHRwX3Jlc2VydmVkICAgICAgICovIDAsCi0gICAgLyogdHBfcmVwciAgICAgICAgICAgKi8gKHJlcHJmdW5jKWNvbm5lY3Rpb25fcmVwciwKLSAgICAvKiB0cF9hc19udW1iZXIgICAgICAqLyAwLAotICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICovIDAsCi0gICAgLyogdHBfYXNfbWFwcGluZyAgICAgKi8gMCwKLSAgICAvKiB0cF9oYXNoICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2NhbGwgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfc3RyICAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9nZXRhdHRybyAgICAgICAqLyAwLAotICAgIC8qIHRwX3NldGF0dHJvICAgICAgICovIDAsCi0gICAgLyogdHBfYXNfYnVmZmVyICAgICAgKi8gMCwKLSAgICAvKiB0cF9mbGFncyAgICAgICAgICAqLyBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UUEZMQUdTX0hBVkVfV0VBS1JFRlMsCi0gICAgLyogdHBfZG9jICAgICAgICAgICAgKi8gY29ubmVjdGlvbl9kb2MsCi0gICAgLyogdHBfdHJhdmVyc2UgICAgICAgKi8gMCwKLSAgICAvKiB0cF9jbGVhciAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICovIDAsCi0gICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gb2Zmc2V0b2YoQ29ubmVjdGlvbk9iamVjdCwgd2Vha3JlZmxpc3QpLAotICAgIC8qIHRwX2l0ZXIgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfaXRlcm5leHQgICAgICAgKi8gMCwKLSAgICAvKiB0cF9tZXRob2RzICAgICAgICAqLyBjb25uZWN0aW9uX21ldGhvZHMsCi0gICAgLyogdHBfbWVtYmVycyAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9nZXRzZXQgICAgICAgICAqLyBjb25uZWN0aW9uX2dldHNldCwKLSAgICAvKiB0cF9iYXNlICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2RpY3QgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZGVzY3JfZ2V0ICAgICAgKi8gMCwKLSAgICAvKiB0cF9kZXNjcl9zZXQgICAgICAqLyAwLAotICAgIC8qIHRwX2RpY3RvZmZzZXQgICAgICovIDAsCi0gICAgLyogdHBfaW5pdCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9hbGxvYyAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX25ldyAgICAgICAgICAgICovIGNvbm5lY3Rpb25fbmV3LAotfTsKLQotI2VuZGlmIC8qIENPTk5FQ1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCmluZGV4IGVlMjUwZTAuLmViMDVjNjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKQEAgLTMsMjAgKzMsMTMgQEAKICAqCiAgKiBtdWx0aXByb2Nlc3NpbmcuYwogICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAorICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyaworICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogICovCiAKICNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKIAotI2lmIChkZWZpbmVkKENNU0dfTEVOKSAmJiBkZWZpbmVkKFNDTV9SSUdIVFMpKQotICAgICNkZWZpbmUgSEFWRV9GRF9UUkFOU0ZFUiAxCi0jZWxzZQotICAgICNkZWZpbmUgSEFWRV9GRF9UUkFOU0ZFUiAwCi0jZW5kaWYKIAotUHlPYmplY3QgKmNyZWF0ZV93aW4zMl9uYW1lc3BhY2Uodm9pZCk7Ci0KLVB5T2JqZWN0ICpwaWNrbGVfZHVtcHMsICpwaWNrbGVfbG9hZHMsICpwaWNrbGVfcHJvdG9jb2w7CiBQeU9iamVjdCAqUHJvY2Vzc0Vycm9yLCAqQnVmZmVyVG9vU2hvcnQ7CiAKIC8qCkBAIC00OSwxNiArNDIsNiBAQAogICAgIGNhc2UgTVBfTUVNT1JZX0VSUk9SOgogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1QX0VORF9PRl9GSUxFOgotICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX0VPRkVycm9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNUF9FQVJMWV9FTkRfT0ZfRklMRToKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZ290IGVuZCBvZiBmaWxlIGR1cmluZyBtZXNzYWdlIik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTVBfQkFEX01FU1NBR0VfTEVOR1RIOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImJhZCBtZXNzYWdlIGxlbmd0aCIpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ6CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC02OCwxNzAgKzUxLDgyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLQotLyoKLSAqIFdpbmRvd3Mgb25seQotICovCi0KICNpZmRlZiBNU19XSU5ET1dTCi0KLS8qIE9uIFdpbmRvd3Mgd2Ugc2V0IGFuIGV2ZW50IHRvIHNpZ25hbCBDdHJsLUM7IGNvbXBhcmUgd2l0aCB0aW1lbW9kdWxlLmMgKi8KLQotSEFORExFIHNpZ2ludF9ldmVudCA9IE5VTEw7Ci0KLXN0YXRpYyBCT09MIFdJTkFQSQotUHJvY2Vzc2luZ0N0cmxIYW5kbGVyKERXT1JEIGR3Q3RybFR5cGUpCi17Ci0gICAgU2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLS8qCi0gKiBVbml4IG9ubHkKLSAqLwotCi0jZWxzZSAvKiAhTVNfV0lORE9XUyAqLwotCi0jaWYgSEFWRV9GRF9UUkFOU0ZFUgotCi0vKiBGdW5jdGlvbnMgZm9yIHRyYW5zZmVycmluZyBmaWxlIGRlc2NyaXB0b3JzIGJldHdlZW4gcHJvY2Vzc2VzLgotICAgUmVpbXBsZW1lbnRzIHNvbWUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZkY3JlZAotICAgbW9kdWxlIGF0IGh0dHA6Ly93d3cubWNhLWx0ZC5jb20vcmVzb3VyY2VzL2ZkY3JlZF8xLnRnei4gKi8KLS8qIEJhc2VkIGluIGh0dHA6Ly9yZXNpbi5jc29mdC5uZXQvY2dpLWJpbi9tYW4uY2dpP3NlY3Rpb249MyZ0b3BpYz1DTVNHX0RBVEEgKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKLW11bHRpcHJvY2Vzc2luZ19zZW5kZmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXVsdGlwcm9jZXNzaW5nX2Nsb3Nlc29ja2V0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgY29ubiwgZmQsIHJlczsKLSAgICBzdHJ1Y3QgaW92ZWMgZHVtbXlfaW92OwotICAgIGNoYXIgZHVtbXlfY2hhcjsKLSAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKLSAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZzsKLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjbXNnaGRyIGhkcjsKLSAgICAgICAgdW5zaWduZWQgY2hhciBidWZbQ01TR19TUEFDRShzaXplb2YoaW50KSldOwotICAgIH0gY21zZ2J1ZjsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJmNvbm4sICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6Y2xvc2Vzb2NrZXQiICwgJmhhbmRsZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZHVtbXlfaW92Lmlvdl9iYXNlID0gJmR1bW15X2NoYXI7Ci0gICAgZHVtbXlfaW92Lmlvdl9sZW4gPSAxOwotCi0gICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKLSAgICBtc2cubXNnX2NvbnRyb2wgPSAmY21zZ2J1Zi5idWY7Ci0gICAgbXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2didWYuYnVmKTsKLSAgICBtc2cubXNnX2lvdiA9ICZkdW1teV9pb3Y7Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSAxOwotCi0gICAgY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7Ci0gICAgY21zZy0+Y21zZ19sZW4gPSBDTVNHX0xFTihzaXplb2YoaW50KSk7Ci0gICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7Ci0gICAgY21zZy0+Y21zZ190eXBlID0gU0NNX1JJR0hUUzsKLSAgICAqIChpbnQgKikgQ01TR19EQVRBKGNtc2cpID0gZmQ7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gc2VuZG1zZyhjb25uLCAmbXNnLCAwKTsKKyAgICByZXQgPSBjbG9zZXNvY2tldCgoU09DS0VUKSBoYW5kbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICBpZiAocmV0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbXVsdGlwcm9jZXNzaW5nX3JlY3ZmZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittdWx0aXByb2Nlc3NpbmdfcmVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGNvbm4sIGZkLCByZXM7Ci0gICAgY2hhciBkdW1teV9jaGFyOwotICAgIHN0cnVjdCBpb3ZlYyBkdW1teV9pb3Y7Ci0gICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07Ci0gICAgc3RydWN0IGNtc2doZHIgKmNtc2c7Ci0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgY21zZ2hkciBoZHI7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYnVmW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkpXTsKLSAgICB9IGNtc2didWY7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSwgbnJlYWQ7CisgICAgUHlPYmplY3QgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZjb25uKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgImk6cmVjdiIgLCAmaGFuZGxlLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZHVtbXlfaW92Lmlvdl9iYXNlID0gJmR1bW15X2NoYXI7Ci0gICAgZHVtbXlfaW92Lmlvdl9sZW4gPSAxOwotCi0gICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKLSAgICBtc2cubXNnX2NvbnRyb2wgPSAmY21zZ2J1Zi5idWY7Ci0gICAgbXNnLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGNtc2didWYuYnVmKTsKLSAgICBtc2cubXNnX2lvdiA9ICZkdW1teV9pb3Y7Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSAxOwotCi0gICAgY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7Ci0gICAgY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7Ci0gICAgY21zZy0+Y21zZ190eXBlID0gU0NNX1JJR0hUUzsKLSAgICBjbXNnLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihpbnQpKTsKLSAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjbXNnLT5jbXNnX2xlbjsKKyAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmICghYnVmKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSByZWN2bXNnKGNvbm4sICZtc2csIDApOworICAgIG5yZWFkID0gcmVjdigoU09DS0VUKSBoYW5kbGUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZiksIHNpemUsIDApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLQotICAgIGlmIChtc2cubXNnX2NvbnRyb2xsZW4gPCBDTVNHX0xFTihzaXplb2YoaW50KSkgfHwKLSAgICAgICAgKGNtc2cgPSBDTVNHX0ZJUlNUSERSKCZtc2cpKSA9PSBOVUxMIHx8Ci0gICAgICAgIGNtc2ctPmNtc2dfbGV2ZWwgIT0gU09MX1NPQ0tFVCB8fAotICAgICAgICBjbXNnLT5jbXNnX3R5cGUgIT0gU0NNX1JJR0hUUyB8fAotICAgICAgICBjbXNnLT5jbXNnX2xlbiA8IENNU0dfTEVOKHNpemVvZihpbnQpKSkgewotICAgICAgICAvKiBJZiBhdCBsZWFzdCBvbmUgY29udHJvbCBtZXNzYWdlIGlzIHByZXNlbnQsIHRoZXJlIHNob3VsZCBiZQotICAgICAgICAgICBubyByb29tIGZvciBhbnkgZnVydGhlciBkYXRhIGluIHRoZSBidWZmZXIuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJObyBmaWxlIGRlc2NyaXB0b3IgcmVjZWl2ZWQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG5yZWFkIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKICAgICB9Ci0KLSAgICBmZCA9ICogKGludCAqKSBDTVNHX0RBVEEoY21zZyk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBmZCk7CisgICAgX1B5Qnl0ZXNfUmVzaXplKCZidWYsIG5yZWFkKTsKKyAgICByZXR1cm4gYnVmOwogfQogCi0jZW5kaWYgLyogSEFWRV9GRF9UUkFOU0ZFUiAqLwotCi0jZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KLQotCi0vKgotICogQWxsIHBsYXRmb3JtcwotICovCi0KLXN0YXRpYyBQeU9iamVjdCoKLW11bHRpcHJvY2Vzc2luZ19hZGRyZXNzX29mX2J1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKK3N0YXRpYyBQeU9iamVjdCAqCittdWx0aXByb2Nlc3Npbmdfc2VuZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgdm9pZCAqYnVmZmVyOwotICAgIFB5X3NzaXplX3QgYnVmZmVyX2xlbjsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5X2J1ZmZlciBidWY7CisgICAgaW50IHJldDsKIAotICAgIGlmIChQeU9iamVjdF9Bc1dyaXRlQnVmZmVyKG9iaiwgJmJ1ZmZlciwgJmJ1ZmZlcl9sZW4pIDwgMCkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgInkqOnNlbmQiICwgJmhhbmRsZSwgJmJ1ZikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4iIEZfUFlfU1NJWkVfVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbVZvaWRQdHIoYnVmZmVyKSwgYnVmZmVyX2xlbik7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IHNlbmQoKFNPQ0tFVCkgaGFuZGxlLCBidWYuYnVmLCBidWYubGVuLCAwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJldCk7CiB9CiAKKyNlbmRpZgogCiAvKgogICogRnVuY3Rpb24gdGFibGUKICAqLwogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKLSAgICB7ImFkZHJlc3Nfb2ZfYnVmZmVyIiwgbXVsdGlwcm9jZXNzaW5nX2FkZHJlc3Nfb2ZfYnVmZmVyLCBNRVRIX08sCi0gICAgICJhZGRyZXNzX29mX2J1ZmZlcihvYmopIC0+IGludFxuIgotICAgICAiUmV0dXJuIGFkZHJlc3Mgb2Ygb2JqIGFzc3VtaW5nIG9iaiBzdXBwb3J0cyBidWZmZXIgaW50ZWZhY2UifSwKLSNpZiBIQVZFX0ZEX1RSQU5TRkVSCi0gICAgeyJzZW5kZmQiLCBtdWx0aXByb2Nlc3Npbmdfc2VuZGZkLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJzZW5kZmQoc29ja2ZkLCBmZCkgLT4gTm9uZVxuIgotICAgICAiU2VuZCBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4gYnkgZmQgb3ZlciB0aGUgdW5peCBkb21haW4gc29ja2V0XG4iCi0gICAgICJ3aG9zZSBmaWxlIGRlY3JpcHRvciBpcyBzb2NrZmQifSwKLSAgICB7InJlY3ZmZCIsIG11bHRpcHJvY2Vzc2luZ19yZWN2ZmQsIE1FVEhfVkFSQVJHUywKLSAgICAgInJlY3ZmZChzb2NrZmQpIC0+IGZkXG4iCi0gICAgICJSZWNlaXZlIGEgZmlsZSBkZXNjcmlwdG9yIG92ZXIgYSB1bml4IGRvbWFpbiBzb2NrZXRcbiIKLSAgICAgIndob3NlIGZpbGUgZGVjcmlwdG9yIGlzIHNvY2tmZCJ9LAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7ImNsb3Nlc29ja2V0IiwgbXVsdGlwcm9jZXNzaW5nX2Nsb3Nlc29ja2V0LCBNRVRIX1ZBUkFSR1MsICIifSwKKyAgICB7InJlY3YiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdiwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJzZW5kIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmQsIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCiAgICAge05VTEx9CiB9OwpAQCAtMjU3LDIyICsxNTIsMTMgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX211bHRpcHJvY2Vzc2luZyh2b2lkKQogewotICAgIFB5T2JqZWN0ICptb2R1bGUsICp0ZW1wLCAqdmFsdWU7CisgICAgUHlPYmplY3QgKm1vZHVsZSwgKnRlbXAsICp2YWx1ZSA9IE5VTEw7CiAKICAgICAvKiBJbml0aWFsaXplIG1vZHVsZSAqLwogICAgIG1vZHVsZSA9IFB5TW9kdWxlX0NyZWF0ZSgmbXVsdGlwcm9jZXNzaW5nX21vZHVsZSk7CiAgICAgaWYgKCFtb2R1bGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogR2V0IGNvcHkgb2Ygb2JqZWN0cyBmcm9tIHBpY2tsZSAqLwotICAgIHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoUElDS0xFX01PRFVMRSk7Ci0gICAgaWYgKCF0ZW1wKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwaWNrbGVfZHVtcHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJkdW1wcyIpOwotICAgIHBpY2tsZV9sb2FkcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgImxvYWRzIik7Ci0gICAgcGlja2xlX3Byb3RvY29sID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAiSElHSEVTVF9QUk9UT0NPTCIpOwotICAgIFB5X1hERUNSRUYodGVtcCk7Ci0KICAgICAvKiBHZXQgY29weSBvZiBCdWZmZXJUb29TaG9ydCAqLwogICAgIHRlbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIm11bHRpcHJvY2Vzc2luZyIpOwogICAgIGlmICghdGVtcCkKQEAgLTI4MCwxMiArMTY2LDYgQEAKICAgICBCdWZmZXJUb29TaG9ydCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgIkJ1ZmZlclRvb1Nob3J0Iik7CiAgICAgUHlfWERFQ1JFRih0ZW1wKTsKIAotICAgIC8qIEFkZCBjb25uZWN0aW9uIHR5cGUgdG8gbW9kdWxlICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQ29ubmVjdGlvblR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKCZDb25uZWN0aW9uVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIkNvbm5lY3Rpb24iLCAoUHlPYmplY3QqKSZDb25uZWN0aW9uVHlwZSk7Ci0KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkpCiAgICAgLyogQWRkIFNlbUxvY2sgdHlwZSB0byBtb2R1bGUgKi8KQEAgLTMwOCwzMiArMTg4LDYgQEAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiU2VtTG9jayIsIChQeU9iamVjdCopJlNlbUxvY2tUeXBlKTsKICNlbmRpZgogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIEFkZCBQaXBlQ29ubmVjdGlvbiB0byBtb2R1bGUgKi8KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQaXBlQ29ubmVjdGlvblR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKCZQaXBlQ29ubmVjdGlvblR5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJQaXBlQ29ubmVjdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopJlBpcGVDb25uZWN0aW9uVHlwZSk7Ci0KLSAgICAvKiBJbml0aWFsaXplIHdpbjMyIGNsYXNzIGFuZCBhZGQgdG8gbXVsdGlwcm9jZXNzaW5nICovCi0gICAgdGVtcCA9IGNyZWF0ZV93aW4zMl9uYW1lc3BhY2UoKTsKLSAgICBpZiAoIXRlbXApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJ3aW4zMiIsIHRlbXApOwotCi0gICAgLyogSW5pdGlhbGl6ZSB0aGUgZXZlbnQgaGFuZGxlIHVzZWQgdG8gc2lnbmFsIEN0cmwtQyAqLwotICAgIHNpZ2ludF9ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKLSAgICBpZiAoIXNpZ2ludF9ldmVudCkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICghU2V0Q29uc29sZUN0cmxIYW5kbGVyKFByb2Nlc3NpbmdDdHJsSGFuZGxlciwgVFJVRSkpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbmRpZgotCiAgICAgLyogQWRkIGNvbmZpZ3VyYXRpb24gbWFjcm9zICovCiAgICAgdGVtcCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAoIXRlbXApCkBAIC0zNDMsNyArMTk3LDcgQEAKICAgICB2YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImkiLCBuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeyBQeV9ERUNSRUYodGVtcCk7IHJldHVybiBOVUxMOyB9ICAgICAgICAgIFwKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcodGVtcCwgI25hbWUsIHZhbHVlKSA8IDApIHsgICAgICAgICAgIFwKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOyBQeV9ERUNSRUYodmFsdWUpOyByZXR1cm4gTlVMTDsgfSAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYodGVtcCk7IFB5X0RFQ1JFRih2YWx1ZSk7IHJldHVybiBOVUxMOyB9ICAgICAgICAgXAogICAgIFB5X0RFQ1JFRih2YWx1ZSkKIAogI2lmIGRlZmluZWQoSEFWRV9TRU1fT1BFTikgJiYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkKQEAgLTM1Miw5ICsyMDYsNiBAQAogI2lmZGVmIEhBVkVfU0VNX1RJTUVEV0FJVAogICAgIEFERF9GTEFHKEhBVkVfU0VNX1RJTUVEV0FJVCk7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0ZEX1RSQU5TRkVSCi0gICAgQUREX0ZMQUcoSEFWRV9GRF9UUkFOU0ZFUik7Ci0jZW5kaWYKICNpZmRlZiBIQVZFX0JST0tFTl9TRU1fR0VUVkFMVUUKICAgICBBRERfRkxBRyhIQVZFX0JST0tFTl9TRU1fR0VUVkFMVUUpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmggYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKaW5kZXggMTQ0MjVkZS4uZTNkZTliYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaApAQCAtMywxMiArMyw2IEBACiAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCi0jaWZkZWYgX19zdW4KLS8qIFRoZSBjb250cm9sIG1lc3NhZ2UgQVBJIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFNvbGFyaXMgCi0gICBpZiBYUEcgNC4yIG9yIGxhdGVyIGlzIHJlcXVlc3RlZC4gKi8KLSNkZWZpbmUgX1hPUEVOX1NPVVJDRSA1MDAKLSNlbmRpZgotCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKQEAgLTI5LDEwICsyMyw2IEBACiAjICBkZWZpbmUgU0VNX1ZBTFVFX01BWCBMT05HX01BWAogI2Vsc2UKICMgIGluY2x1ZGUgPGZjbnRsLmg+ICAgICAgICAgICAgICAgICAvKiBPX0NSRUFUIGFuZCBPX0VYQ0wgKi8KLSMgIGluY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSMgIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSMgIGluY2x1ZGUgPHN5cy91aW8uaD4KLSMgIGluY2x1ZGUgPGFycGEvaW5ldC5oPiAgICAgICAgICAgICAvKiBodG9ubCgpIGFuZCBudG9obCgpICovCiAjICBpZiBkZWZpbmVkKEhBVkVfU0VNX09QRU4pICYmICFkZWZpbmVkKFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQpCiAjICAgIGluY2x1ZGUgPHNlbWFwaG9yZS5oPgogICAgICB0eXBlZGVmIHNlbV90ICpTRU1fSEFORExFOwpAQCAtNjQsMjAgKzU0LDYgQEAKIAogCiAvKgotICogTWFrZSBzdXJlIFB5X3NzaXplX3QgYXZhaWxhYmxlCi0gKi8KLQotI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCAmJiAhZGVmaW5lZChQWV9TU0laRV9UX01JTikKLSAgIHR5cGVkZWYgaW50IFB5X3NzaXplX3Q7Ci0jICBkZWZpbmUgUFlfU1NJWkVfVF9NQVggSU5UX01BWAotIyAgZGVmaW5lIFBZX1NTSVpFX1RfTUlOIElOVF9NSU4KLSMgIGRlZmluZSBGX1BZX1NTSVpFX1QgImkiCi0jICBkZWZpbmUgUHlJbnRfRnJvbVNzaXplX3QobikgUHlJbnRfRnJvbUxvbmcoKGxvbmcpbikKLSNlbHNlCi0jICBkZWZpbmUgRl9QWV9TU0laRV9UICJuIgotI2VuZGlmCi0KLS8qCiAgKiBGb3JtYXQgY29kZXMKICAqLwogCkBAIC0xMDUsMTIgKzgxLDYgQEAKICMgIGRlZmluZSBUX1NFTV9IQU5ETEUgVF9QT0lOVEVSCiAjZW5kaWYKIAotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKLSMgIGRlZmluZSBGX1JCVUZGRVIgInkiCi0jZWxzZQotIyAgZGVmaW5lIEZfUkJVRkZFUiAicyIKLSNlbmRpZgotCiAvKgogICogRXJyb3IgY29kZXMgd2hpY2ggY2FuIGJlIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyBjYWxsZWQgd2l0aG91dCBHSUwKICAqLwpAQCAtMTE4LDExICs4OCw4IEBACiAjZGVmaW5lIE1QX1NVQ0NFU1MgKDApCiAjZGVmaW5lIE1QX1NUQU5EQVJEX0VSUk9SICgtMSkKICNkZWZpbmUgTVBfTUVNT1JZX0VSUk9SICgtMTAwMSkKLSNkZWZpbmUgTVBfRU5EX09GX0ZJTEUgKC0xMDAyKQotI2RlZmluZSBNUF9FQVJMWV9FTkRfT0ZfRklMRSAoLTEwMDMpCi0jZGVmaW5lIE1QX0JBRF9NRVNTQUdFX0xFTkdUSCAoLTEwMDQpCi0jZGVmaW5lIE1QX1NPQ0tFVF9FUlJPUiAoLTEwMDUpCi0jZGVmaW5lIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQgKC0xMDA2KQorI2RlZmluZSBNUF9TT0NLRVRfRVJST1IgKC0xMDAyKQorI2RlZmluZSBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUICgtMTAwMykKIAogUHlPYmplY3QgKm1wX1NldEVycm9yKFB5T2JqZWN0ICpUeXBlLCBpbnQgbnVtKTsKIApAQCAtMTMwLDU3ICs5NywxNCBAQAogICogRXh0ZXJucyAtIG5vdCBhbGwgd2lsbCByZWFsbHkgZXhpc3Qgb24gYWxsIHBsYXRmb3JtcwogICovCiAKLWV4dGVybiBQeU9iamVjdCAqcGlja2xlX2R1bXBzOwotZXh0ZXJuIFB5T2JqZWN0ICpwaWNrbGVfbG9hZHM7Ci1leHRlcm4gUHlPYmplY3QgKnBpY2tsZV9wcm90b2NvbDsKIGV4dGVybiBQeU9iamVjdCAqQnVmZmVyVG9vU2hvcnQ7CiBleHRlcm4gUHlUeXBlT2JqZWN0IFNlbUxvY2tUeXBlOwotZXh0ZXJuIFB5VHlwZU9iamVjdCBDb25uZWN0aW9uVHlwZTsKIGV4dGVybiBQeVR5cGVPYmplY3QgUGlwZUNvbm5lY3Rpb25UeXBlOwotZXh0ZXJuIEhBTkRMRSBzaWdpbnRfZXZlbnQ7Ci0KLS8qCi0gKiBQeTNrIGNvbXBhdGliaWxpdHkKLSAqLwotCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotIyAgZGVmaW5lIFBJQ0tMRV9NT0RVTEUgInBpY2tsZSIKLSMgIGRlZmluZSBGUk9NX0ZPUk1BVCBQeVVuaWNvZGVfRnJvbUZvcm1hdAotIyAgZGVmaW5lIFB5SW50X0Zyb21Mb25nIFB5TG9uZ19Gcm9tTG9uZwotIyAgZGVmaW5lIFB5SW50X0Zyb21Tc2l6ZV90IFB5TG9uZ19Gcm9tU3NpemVfdAotI2Vsc2UKLSMgIGRlZmluZSBQSUNLTEVfTU9EVUxFICJjUGlja2xlIgotIyAgZGVmaW5lIEZST01fRk9STUFUIFB5U3RyaW5nX0Zyb21Gb3JtYXQKLSNlbmRpZgotCi0jaWZuZGVmIFB5VmFyT2JqZWN0X0hFQURfSU5JVAotIyAgZGVmaW5lIFB5VmFyT2JqZWN0X0hFQURfSU5JVCh0eXBlLCBzaXplKSBQeU9iamVjdF9IRUFEX0lOSVQodHlwZSkgc2l6ZSwKLSNlbmRpZgotCi0jaWZuZGVmIFB5X1RQRkxBR1NfSEFWRV9XRUFLUkVGUwotIyAgZGVmaW5lIFB5X1RQRkxBR1NfSEFWRV9XRUFLUkVGUyAwCi0jZW5kaWYKLQotLyoKLSAqIENvbm5lY3Rpb24gZGVmaW5pdGlvbgotICovCi0KLSNkZWZpbmUgQ09OTkVDVElPTl9CVUZGRVJfU0laRSAxMDI0Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgSEFORExFIGhhbmRsZTsKLSAgICBpbnQgZmxhZ3M7Ci0gICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwotICAgIGNoYXIgYnVmZmVyW0NPTk5FQ1RJT05fQlVGRkVSX1NJWkVdOwotfSBDb25uZWN0aW9uT2JqZWN0OwogCiAvKgogICogTWlzY2VsbGFuZW91cwogICovCiAKLSNkZWZpbmUgTUFYX01FU1NBR0VfTEVOR1RIIDB4N2ZmZmZmZmYKLQogI2lmbmRlZiBNSU4KICMgIGRlZmluZSBNSU4oeCwgeSkgKCh4KSA8ICh5KSA/IHggOiB5KQogIyAgZGVmaW5lIE1BWCh4LCB5KSAoKHgpID4gKHkpID8geCA6IHkpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZGRlMGMuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3BpcGVfY29ubmVjdGlvbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBBIHR5cGUgd2hpY2ggd3JhcHMgYSBwaXBlIGhhbmRsZSBpbiBtZXNzYWdlIG9yaWVudGVkIG1vZGUKLSAqCi0gKiBwaXBlX2Nvbm5lY3Rpb24uYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotI2RlZmluZSBDTE9TRShoKSBDbG9zZUhhbmRsZShoKQotCi0vKgotICogU2VuZCBzdHJpbmcgdG8gdGhlIHBpcGU7IGFzc3VtZXMgaW4gbWVzc2FnZSBvcmllbnRlZCBtb2RlCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLWNvbm5fc2VuZF9zdHJpbmcoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIERXT1JEIGFtb3VudF93cml0dGVuOwotICAgIEJPT0wgcmV0OwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IFdyaXRlRmlsZShjb25uLT5oYW5kbGUsIHN0cmluZywgbGVuZ3RoLCAmYW1vdW50X3dyaXR0ZW4sIE5VTEwpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmV0ID09IDAgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfTk9fU1lTVEVNX1JFU09VUkNFUykgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5ub3Qgc2VuZCAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGJ5dGVzIG92ZXIgY29ubmVjdGlvbiIsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBNUF9TVEFOREFSRF9FUlJPUjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0ID8gTVBfU1VDQ0VTUyA6IE1QX1NUQU5EQVJEX0VSUk9SOwotfQotCi0vKgotICogQXR0ZW1wdHMgdG8gcmVhZCBpbnRvIGJ1ZmZlciwgb3IgaWYgYnVmZmVyIHRvbyBzbWFsbCBpbnRvICpuZXdidWZmZXIuCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIEFzc3VtZXMgaW4gbWVzc2FnZSBvcmllbnRlZCBtb2RlLgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3JlY3Zfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1Zmxlbmd0aCwgY2hhciAqKm5ld2J1ZmZlciwgc2l6ZV90IG1heGxlbmd0aCkKLXsKLSAgICBEV09SRCBsZWZ0LCBsZW5ndGgsIGZ1bGxfbGVuZ3RoLCBlcnI7Ci0gICAgQk9PTCByZXQ7Ci0gICAgKm5ld2J1ZmZlciA9IE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gUmVhZEZpbGUoY29ubi0+aGFuZGxlLCBidWZmZXIsIE1JTihidWZsZW5ndGgsIG1heGxlbmd0aCksCi0gICAgICAgICAgICAgICAgICAmbGVuZ3RoLCBOVUxMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXQpCi0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0KLSAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICBpZiAoZXJyICE9IEVSUk9SX01PUkVfREFUQSkgewotICAgICAgICBpZiAoZXJyID09IEVSUk9SX0JST0tFTl9QSVBFKQotICAgICAgICAgICAgcmV0dXJuIE1QX0VORF9PRl9GSUxFOwotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgfQotCi0gICAgaWYgKCFQZWVrTmFtZWRQaXBlKGNvbm4tPmhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmxlZnQpKQotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0KLSAgICBmdWxsX2xlbmd0aCA9IGxlbmd0aCArIGxlZnQ7Ci0gICAgaWYgKGZ1bGxfbGVuZ3RoID4gbWF4bGVuZ3RoKQotICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgKm5ld2J1ZmZlciA9IFB5TWVtX01hbGxvYyhmdWxsX2xlbmd0aCk7Ci0gICAgaWYgKCpuZXdidWZmZXIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE1QX01FTU9SWV9FUlJPUjsKLQotICAgIG1lbWNweSgqbmV3YnVmZmVyLCBidWZmZXIsIGxlbmd0aCk7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gUmVhZEZpbGUoY29ubi0+aGFuZGxlLCAqbmV3YnVmZmVyK2xlbmd0aCwgbGVmdCwgJmxlbmd0aCwgTlVMTCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmV0KSB7Ci0gICAgICAgIGFzc2VydChsZW5ndGggPT0gbGVmdCk7Ci0gICAgICAgIHJldHVybiBmdWxsX2xlbmd0aDsKLSAgICB9IGVsc2UgewotICAgICAgICBQeU1lbV9GcmVlKCpuZXdidWZmZXIpOwotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgfQotfQotCi0vKgotICogQ2hlY2sgd2hldGhlciBhbnkgZGF0YSBpcyBhdmFpbGFibGUgZm9yIHJlYWRpbmcKLSAqLwotCi1zdGF0aWMgaW50Ci1jb25uX3BvbGwoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgZG91YmxlIHRpbWVvdXQsIFB5VGhyZWFkU3RhdGUgKl9zYXZlKQotewotICAgIERXT1JEIGJ5dGVzLCBkZWFkbGluZSwgZGVsYXk7Ci0gICAgaW50IGRpZmZlcmVuY2UsIHJlczsKLSAgICBCT09MIGJsb2NrID0gRkFMU0U7Ci0KLSAgICBpZiAoIVBlZWtOYW1lZFBpcGUoY29ubi0+aGFuZGxlLCBOVUxMLCAwLCBOVUxMLCAmYnl0ZXMsIE5VTEwpKQotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0KLSAgICBpZiAodGltZW91dCA9PSAwLjApCi0gICAgICAgIHJldHVybiBieXRlcyA+IDA7Ci0KLSAgICBpZiAodGltZW91dCA8IDAuMCkKLSAgICAgICAgYmxvY2sgPSBUUlVFOwotICAgIGVsc2UKLSAgICAgICAgLyogWFhYIGRvZXMgbm90IGNoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgICAgICBkZWFkbGluZSA9IEdldFRpY2tDb3VudCgpICsgKERXT1JEKSgxMDAwICogdGltZW91dCArIDAuNSk7Ci0KLSAgICBTbGVlcCgwKTsKLQotICAgIGZvciAoZGVsYXkgPSAxIDsgOyBkZWxheSArPSAxKSB7Ci0gICAgICAgIGlmICghUGVla05hbWVkUGlwZShjb25uLT5oYW5kbGUsIE5VTEwsIDAsIE5VTEwsICZieXRlcywgTlVMTCkpCi0gICAgICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgICAgIGVsc2UgaWYgKGJ5dGVzID4gMCkKLSAgICAgICAgICAgIHJldHVybiBUUlVFOwotCi0gICAgICAgIGlmICghYmxvY2spIHsKLSAgICAgICAgICAgIGRpZmZlcmVuY2UgPSBkZWFkbGluZSAtIEdldFRpY2tDb3VudCgpOwotICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgIGlmICgoaW50KWRlbGF5ID4gZGlmZmVyZW5jZSkKLSAgICAgICAgICAgICAgICBkZWxheSA9IGRpZmZlcmVuY2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGVsYXkgPiAyMCkKLSAgICAgICAgICAgIGRlbGF5ID0gMjA7Ci0KLSAgICAgICAgU2xlZXAoZGVsYXkpOwotCi0gICAgICAgIC8qIGNoZWNrIGZvciBzaWduYWxzICovCi0gICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgcmVzID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7Ci0gICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUwotCi0gICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICByZXR1cm4gTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVDsKLSAgICB9Ci19Ci0KLS8qCi0gKiAiY29ubmVjdGlvbi5oIiBkZWZpbmVzIHRoZSBQaXBlQ29ubmVjdGlvbiB0eXBlIHVzaW5nIHRoZSBkZWZpbml0aW9ucyBhYm92ZQotICovCi0KLSNkZWZpbmUgQ09OTkVDVElPTl9OQU1FICJQaXBlQ29ubmVjdGlvbiIKLSNkZWZpbmUgQ09OTkVDVElPTl9UWVBFIFBpcGVDb25uZWN0aW9uVHlwZQotCi0jaW5jbHVkZSAiY29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jCmluZGV4IDFmMzdkNmEuLjhlYTkyZjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMKQEAgLTMsNyArMyw4IEBACiAgKgogICogc2VtYXBob3JlLmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKKyAqIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICAqLwogCiAjaW5jbHVkZSAibXVsdGlwcm9jZXNzaW5nLmgiCkBAIC02Miw3ICs2Myw4IEBACiAgICAgaW50IGJsb2NraW5nID0gMTsKICAgICBkb3VibGUgdGltZW91dDsKICAgICBQeU9iamVjdCAqdGltZW91dF9vYmogPSBQeV9Ob25lOwotICAgIERXT1JEIHJlcywgZnVsbF9tc2VjcywgbXNlY3MsIHN0YXJ0LCB0aWNrczsKKyAgICBEV09SRCByZXMsIGZ1bGxfbXNlY3MsIG5oYW5kbGVzOworICAgIEhBTkRMRSBoYW5kbGVzWzJdLCBzaWdpbnRfZXZlbnQ7CiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImJsb2NrIiwgInRpbWVvdXQiLCBOVUxMfTsKIApAQCAtOTYsNTMgKzk4LDQwIEBACiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KIAotICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgY2FuIGFjcXVpcmUgd2l0aG91dCBibG9ja2luZyAqLworICAgIC8qIGNoZWNrIHdoZXRoZXIgd2UgY2FuIGFjcXVpcmUgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCBhbmQgYmxvY2tpbmcgKi8KICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLT5oYW5kbGUsIDApID09IFdBSVRfT0JKRUNUXzApIHsKICAgICAgICAgc2VsZi0+bGFzdF90aWQgPSBHZXRDdXJyZW50VGhyZWFkSWQoKTsKICAgICAgICAgKytzZWxmLT5jb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgfQogCi0gICAgbXNlY3MgPSBmdWxsX21zZWNzOwotICAgIHN0YXJ0ID0gR2V0VGlja0NvdW50KCk7Ci0KLSAgICBmb3IgKCA7IDsgKSB7Ci0gICAgICAgIEhBTkRMRSBoYW5kbGVzWzJdID0ge3NlbGYtPmhhbmRsZSwgc2lnaW50X2V2ZW50fTsKLQotICAgICAgICAvKiBkbyB0aGUgd2FpdCAqLwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIFJlc2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKLSAgICAgICAgcmVzID0gV2FpdEZvck11bHRpcGxlT2JqZWN0cygyLCBoYW5kbGVzLCBGQUxTRSwgbXNlY3MpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIC8qIGhhbmRsZSByZXN1bHQgKi8KLSAgICAgICAgaWYgKHJlcyAhPSBXQUlUX09CSkVDVF8wICsgMSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qIGdvdCBTSUdJTlQgc28gZ2l2ZSBzaWduYWwgaGFuZGxlciBhIGNoYW5jZSB0byBydW4gKi8KLSAgICAgICAgU2xlZXAoMSk7Ci0KLSAgICAgICAgLyogaWYgdGhpcyBpcyBtYWluIHRocmVhZCBsZXQgS2V5Ym9hcmRJbnRlcnJ1cHQgYmUgcmFpc2VkICovCi0gICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIC8qIHJlY2FsY3VsYXRlIHRpbWVvdXQgKi8KLSAgICAgICAgaWYgKG1zZWNzICE9IElORklOSVRFKSB7Ci0gICAgICAgICAgICB0aWNrcyA9IEdldFRpY2tDb3VudCgpOwotICAgICAgICAgICAgaWYgKChEV09SRCkodGlja3MgLSBzdGFydCkgPj0gZnVsbF9tc2VjcykKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgICAgICAgICBtc2VjcyA9IGZ1bGxfbXNlY3MgLSAodGlja3MgLSBzdGFydCk7Ci0gICAgICAgIH0KKyAgICAvKiBwcmVwYXJlIGxpc3Qgb2YgaGFuZGxlcyAqLworICAgIG5oYW5kbGVzID0gMDsKKyAgICBoYW5kbGVzW25oYW5kbGVzKytdID0gc2VsZi0+aGFuZGxlOworICAgIGlmIChfUHlPU19Jc01haW5UaHJlYWQoKSkgeworICAgICAgICBzaWdpbnRfZXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICBhc3NlcnQoc2lnaW50X2V2ZW50ICE9IE5VTEwpOworICAgICAgICBoYW5kbGVzW25oYW5kbGVzKytdID0gc2lnaW50X2V2ZW50OwogICAgIH0KIAorICAgIC8qIGRvIHRoZSB3YWl0ICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzaWdpbnRfZXZlbnQgIT0gTlVMTCkKKyAgICAgICAgUmVzZXRFdmVudChzaWdpbnRfZXZlbnQpOworICAgIHJlcyA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMobmhhbmRsZXMsIGhhbmRsZXMsIEZBTFNFLCBmdWxsX21zZWNzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgLyogaGFuZGxlIHJlc3VsdCAqLwogICAgIHN3aXRjaCAocmVzKSB7CiAgICAgY2FzZSBXQUlUX1RJTUVPVVQ6CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICBjYXNlIFdBSVRfT0JKRUNUXzA6CisgICAgY2FzZSBXQUlUX09CSkVDVF8wICsgMDoKICAgICAgICAgc2VsZi0+bGFzdF90aWQgPSBHZXRDdXJyZW50VGhyZWFkSWQoKTsKICAgICAgICAgKytzZWxmLT5jb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgY2FzZSBXQUlUX09CSkVDVF8wICsgMToKKyAgICAgICAgZXJybm8gPSBFSU5UUjsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICBjYXNlIFdBSVRfRkFJTEVEOgogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgZGVmYXVsdDoKQEAgLTQ4Myw3ICs0NzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNlbWxvY2tfY291bnQoU2VtTG9ja09iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcoKGxvbmcpc2VsZi0+Y291bnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc2VsZi0+Y291bnQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTA3LDcgKzQ5Niw3IEBACiAgICAgICAgdGhlIG51bWJlciBvZiB3YWl0aW5nIHRocmVhZHMgKi8KICAgICBpZiAoc3ZhbCA8IDApCiAgICAgICAgIHN2YWwgPSAwOwotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZylzdmFsKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXN2YWwpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zb2NrZXRfY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjljMGEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotLyoKLSAqIEEgdHlwZSB3aGljaCB3cmFwcyBhIHNvY2tldAotICoKLSAqIHNvY2tldF9jb25uZWN0aW9uLmMKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKLSAqLwotCi0jaW5jbHVkZSAibXVsdGlwcm9jZXNzaW5nLmgiCi0KLSNpZmRlZiBNU19XSU5ET1dTCi0jICBkZWZpbmUgV1JJVEUoaCwgYnVmZmVyLCBsZW5ndGgpIHNlbmQoKFNPQ0tFVCloLCBidWZmZXIsIGxlbmd0aCwgMCkKLSMgIGRlZmluZSBSRUFEKGgsIGJ1ZmZlciwgbGVuZ3RoKSByZWN2KChTT0NLRVQpaCwgYnVmZmVyLCBsZW5ndGgsIDApCi0jICBkZWZpbmUgQ0xPU0UoaCkgY2xvc2Vzb2NrZXQoKFNPQ0tFVCloKQotI2Vsc2UKLSMgIGRlZmluZSBXUklURShoLCBidWZmZXIsIGxlbmd0aCkgd3JpdGUoaCwgYnVmZmVyLCBsZW5ndGgpCi0jICBkZWZpbmUgUkVBRChoLCBidWZmZXIsIGxlbmd0aCkgcmVhZChoLCBidWZmZXIsIGxlbmd0aCkKLSMgIGRlZmluZSBDTE9TRShoKSBjbG9zZShoKQotI2VuZGlmCi0KLS8qCi0gKiBTZW5kIHN0cmluZyB0byBmaWxlIGRlc2NyaXB0b3IKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotX2Nvbm5fc2VuZGFsbChIQU5ETEUgaCwgY2hhciAqc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQotewotICAgIGNoYXIgKnAgPSBzdHJpbmc7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICB3aGlsZSAobGVuZ3RoID4gMCkgewotICAgICAgICByZXMgPSBXUklURShoLCBwLCBsZW5ndGgpOwotICAgICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBNUF9TT0NLRVRfRVJST1I7Ci0gICAgICAgIGxlbmd0aCAtPSByZXM7Ci0gICAgICAgIHAgKz0gcmVzOwotICAgIH0KLQotICAgIHJldHVybiBNUF9TVUNDRVNTOwotfQotCi0vKgotICogUmVjZWl2ZSBzdHJpbmcgb2YgZXhhY3QgbGVuZ3RoIGZyb20gZmlsZSBkZXNjcmlwdG9yCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLV9jb25uX3JlY3ZhbGwoSEFORExFIGgsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzaXplX3QgcmVtYWluaW5nID0gbGVuZ3RoOwotICAgIFB5X3NzaXplX3QgdGVtcDsKLSAgICBjaGFyICpwID0gYnVmZmVyOwotCi0gICAgd2hpbGUgKHJlbWFpbmluZyA+IDApIHsKLSAgICAgICAgdGVtcCA9IFJFQUQoaCwgcCwgcmVtYWluaW5nKTsKLSAgICAgICAgaWYgKHRlbXAgPD0gMCkgewotICAgICAgICAgICAgaWYgKHRlbXAgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluaW5nID09IGxlbmd0aCA/Ci0gICAgICAgICAgICAgICAgICAgIE1QX0VORF9PRl9GSUxFIDogTVBfRUFSTFlfRU5EX09GX0ZJTEU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRlbXA7Ci0gICAgICAgIH0KLSAgICAgICAgcmVtYWluaW5nIC09IHRlbXA7Ci0gICAgICAgIHAgKz0gdGVtcDsKLSAgICB9Ci0KLSAgICByZXR1cm4gTVBfU1VDQ0VTUzsKLX0KLQotLyoKLSAqIFNlbmQgYSBzdHJpbmcgcHJlcGVuZGVkIGJ5IHRoZSBzdHJpbmcgbGVuZ3RoIGluIG5ldHdvcmsgYnl0ZSBvcmRlcgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3NlbmRfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBQeV9zc2l6ZV90IHJlczsKLSAgICAvKiBUaGUgImhlYWRlciIgb2YgdGhlIG1lc3NhZ2UgaXMgYSAzMiBiaXQgdW5zaWduZWQgbnVtYmVyIChpbgotICAgICAgIG5ldHdvcmsgb3JkZXIpIHdoaWNoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIG9mIHRoZSAiYm9keSIuICBJZgotICAgICAgIHRoZSBtZXNzYWdlIGlzIHNob3J0ZXIgdGhhbiBhYm91dCAxNmtiIHRoZW4gaXQgaXMgcXVpY2tlciB0bwotICAgICAgIGNvbWJpbmUgdGhlICJoZWFkZXIiIGFuZCB0aGUgImJvZHkiIG9mIHRoZSBtZXNzYWdlIGFuZCBzZW5kCi0gICAgICAgdGhlbSBhdCBvbmNlLiAqLwotICAgIGlmIChsZW5ndGggPCAoMTYqMTAyNCkpIHsKLSAgICAgICAgY2hhciAqbWVzc2FnZTsKLQotICAgICAgICBtZXNzYWdlID0gUHlNZW1fTWFsbG9jKGxlbmd0aCs0KTsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBNUF9NRU1PUllfRVJST1I7Ci0KLSAgICAgICAgKihVSU5UMzIqKW1lc3NhZ2UgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIG1lbWNweShtZXNzYWdlKzQsIHN0cmluZywgbGVuZ3RoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXMgPSBfY29ubl9zZW5kYWxsKGNvbm4tPmhhbmRsZSwgbWVzc2FnZSwgbGVuZ3RoKzQpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeU1lbV9GcmVlKG1lc3NhZ2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFVJTlQzMiBsZW5idWZmOwotCi0gICAgICAgIGlmIChsZW5ndGggPiBNQVhfTUVTU0FHRV9MRU5HVEgpCi0gICAgICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgICAgIGxlbmJ1ZmYgPSBodG9ubCgoVUlOVDMyKWxlbmd0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gX2Nvbm5fc2VuZGFsbChjb25uLT5oYW5kbGUsIChjaGFyKikmbGVuYnVmZiwgNCkgfHwKLSAgICAgICAgICAgIF9jb25uX3NlbmRhbGwoY29ubi0+aGFuZGxlLCBzdHJpbmcsIGxlbmd0aCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiBBdHRlbXB0cyB0byByZWFkIGludG8gYnVmZmVyLCBvciBmYWlsaW5nIHRoYXQgaW50byAqbmV3YnVmZmVyCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4KLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9yZWN2X3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpidWZmZXIsCi0gICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW5ndGgsIGNoYXIgKipuZXdidWZmZXIsIHNpemVfdCBtYXhsZW5ndGgpCi17Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgVUlOVDMyIHVsZW5ndGg7Ci0KLSAgICAqbmV3YnVmZmVyID0gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgKGNoYXIqKSZ1bGVuZ3RoLCA0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcmVzOwotCi0gICAgdWxlbmd0aCA9IG50b2hsKHVsZW5ndGgpOwotICAgIGlmICh1bGVuZ3RoID4gbWF4bGVuZ3RoKQotICAgICAgICByZXR1cm4gTVBfQkFEX01FU1NBR0VfTEVOR1RIOwotCi0gICAgaWYgKHVsZW5ndGggPiBidWZsZW5ndGgpIHsKLSAgICAgICAgKm5ld2J1ZmZlciA9IGJ1ZmZlciA9IFB5TWVtX01hbGxvYygoc2l6ZV90KXVsZW5ndGgpOwotICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBfY29ubl9yZWN2YWxsKGNvbm4tPmhhbmRsZSwgYnVmZmVyLCAoc2l6ZV90KXVsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzID49IDApIHsKLSAgICAgICAgcmVzID0gKFB5X3NzaXplX3QpdWxlbmd0aDsKLSAgICB9IGVsc2UgaWYgKCpuZXdidWZmZXIgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKCpuZXdidWZmZXIpOwotICAgICAgICAqbmV3YnVmZmVyID0gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqIENoZWNrIHdoZXRoZXIgYW55IGRhdGEgaXMgYXZhaWxhYmxlIGZvciByZWFkaW5nIC0tIG5lZyB0aW1lb3V0IGJsb2NrcwotICovCi0KLXN0YXRpYyBpbnQKLWNvbm5fcG9sbChDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBkb3VibGUgdGltZW91dCwgUHlUaHJlYWRTdGF0ZSAqX3NhdmUpCi17Ci0gICAgaW50IHJlczsKLSAgICBmZF9zZXQgcmZkczsKLQotICAgIC8qCi0gICAgICogVmVyaWZ5IHRoZSBoYW5kbGUsIGlzc3VlIDMzMjEuIE5vdCByZXF1aXJlZCBmb3Igd2luZG93cy4KLSAgICAgKi8KLSAgICAjaWZuZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKCgoaW50KWNvbm4tPmhhbmRsZSkgPCAwIHx8ICgoaW50KWNvbm4tPmhhbmRsZSkgPj0gRkRfU0VUU0laRSkgewotICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJoYW5kbGUgb3V0IG9mIHJhbmdlIGluIHNlbGVjdCgpIik7Ci0gICAgICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgIHJldHVybiBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUOwotICAgICAgICB9Ci0gICAgI2VuZGlmCi0KLSAgICBGRF9aRVJPKCZyZmRzKTsKLSAgICBGRF9TRVQoKFNPQ0tFVCljb25uLT5oYW5kbGUsICZyZmRzKTsKLQotICAgIGlmICh0aW1lb3V0IDwgMC4wKSB7Ci0gICAgICAgIHJlcyA9IHNlbGVjdCgoaW50KWNvbm4tPmhhbmRsZSsxLCAmcmZkcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHR2LnR2X3VzZWMgPSAobG9uZykoKHRpbWVvdXQgLSB0di50dl9zZWMpICogMWU2ICsgMC41KTsKLSAgICAgICAgcmVzID0gc2VsZWN0KChpbnQpY29ubi0+aGFuZGxlKzEsICZyZmRzLCBOVUxMLCBOVUxMLCAmdHYpOwotICAgIH0KLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHJldHVybiBNUF9TT0NLRVRfRVJST1I7Ci0gICAgfSBlbHNlIGlmIChGRF9JU1NFVChjb25uLT5oYW5kbGUsICZyZmRzKSkgewotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQocmVzID09IDApOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotfQotCi0vKgotICogImNvbm5lY3Rpb24uaCIgZGVmaW5lcyB0aGUgQ29ubmVjdGlvbiB0eXBlIHVzaW5nIGRlZnMgYWJvdmUKLSAqLwotCi0jZGVmaW5lIENPTk5FQ1RJT05fTkFNRSAiQ29ubmVjdGlvbiIKLSNkZWZpbmUgQ09OTkVDVElPTl9UWVBFIENvbm5lY3Rpb25UeXBlCi0KLSNpbmNsdWRlICJjb25uZWN0aW9uLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvd2luMzJfZnVuY3Rpb25zLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvd2luMzJfZnVuY3Rpb25zLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMzQ4YzQuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLS8qCi0gKiBXaW4zMiBmdW5jdGlvbnMgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgcGFja2FnZQotICoKLSAqIHdpbjMyX2Z1bmN0aW9ucy5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgotCi0KLSNkZWZpbmUgV0lOMzJfRlVOQ1RJT04oZnVuYykgXAotICAgIHsjZnVuYywgKFB5Q0Z1bmN0aW9uKXdpbjMyXyAjIyBmdW5jLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX1NUQVRJQywgIiJ9Ci0KLSNkZWZpbmUgV0lOMzJfQ09OU1RBTlQoZm10LCBjb24pIFwKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhXaW4zMlR5cGUudHBfZGljdCwgI2NvbiwgUHlfQnVpbGRWYWx1ZShmbXQsIGNvbikpCi0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0Nsb3NlSGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIQU5ETEUgaE9iamVjdDsKLSAgICBCT09MIHN1Y2Nlc3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUsICZoT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3VjY2VzcyA9IENsb3NlSGFuZGxlKGhPYmplY3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgTFBPVkVSTEFQUEVEIGxwT3ZlcmxhcHBlZDsKLSAgICBCT09MIHN1Y2Nlc3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9QT0lOVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJmxwT3ZlcmxhcHBlZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDb25uZWN0TmFtZWRQaXBlKGhOYW1lZFBpcGUsIGxwT3ZlcmxhcHBlZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DcmVhdGVGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBMUENUU1RSIGxwRmlsZU5hbWU7Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIERXT1JEIGR3U2hhcmVNb2RlOwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKLSAgICBEV09SRCBkd0NyZWF0aW9uRGlzcG9zaXRpb247Ci0gICAgRFdPUkQgZHdGbGFnc0FuZEF0dHJpYnV0ZXM7Ci0gICAgSEFORExFIGhUZW1wbGF0ZUZpbGU7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUgotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9IQU5ETEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscEZpbGVOYW1lLCAmZHdEZXNpcmVkQWNjZXNzLCAmZHdTaGFyZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcywgJmR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCAmaFRlbXBsYXRlRmlsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZUZpbGUobHBGaWxlTmFtZSwgZHdEZXNpcmVkQWNjZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgZHdTaGFyZU1vZGUsIGxwU2VjdXJpdHlBdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMsIGhUZW1wbGF0ZUZpbGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0NyZWF0ZU5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscE5hbWU7Ci0gICAgRFdPUkQgZHdPcGVuTW9kZTsKLSAgICBEV09SRCBkd1BpcGVNb2RlOwotICAgIERXT1JEIG5NYXhJbnN0YW5jZXM7Ci0gICAgRFdPUkQgbk91dEJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkluQnVmZmVyU2l6ZTsKLSAgICBEV09SRCBuRGVmYXVsdFRpbWVPdXQ7Ci0gICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoYW5kbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JECi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwTmFtZSwgJmR3T3Blbk1vZGUsICZkd1BpcGVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbk1heEluc3RhbmNlcywgJm5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbkluQnVmZmVyU2l6ZSwgJm5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gQ3JlYXRlTmFtZWRQaXBlKGxwTmFtZSwgZHdPcGVuTW9kZSwgZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbk1heEluc3RhbmNlcywgbk91dEJ1ZmZlclNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbkJ1ZmZlclNpemUsIG5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0V4aXRQcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBVSU5UIHVFeGl0Q29kZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSSIsICZ1RXhpdENvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICNpZiBkZWZpbmVkKFB5X0RFQlVHKQotICAgICAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3xTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHxTRU1fTk9HUEZBVUxURVJST1JCT1h8U0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7Ci0gICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfREVCVUcpOwotICAgICNlbmRpZgotCi0KLSAgICBFeGl0UHJvY2Vzcyh1RXhpdENvZGUpOwotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9HZXRMYXN0RXJyb3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfRFdPUkQsIEdldExhc3RFcnJvcigpKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX09wZW5Qcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7Ci0gICAgQk9PTCBiSW5oZXJpdEhhbmRsZTsKLSAgICBEV09SRCBkd1Byb2Nlc3NJZDsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgImkiIEZfRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0Rlc2lyZWRBY2Nlc3MsICZiSW5oZXJpdEhhbmRsZSwgJmR3UHJvY2Vzc0lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoYW5kbGUgPSBPcGVuUHJvY2Vzcyhkd0Rlc2lyZWRBY2Nlc3MsIGJJbmhlcml0SGFuZGxlLCBkd1Byb2Nlc3NJZCk7Ci0gICAgaWYgKGhhbmRsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIQU5ETEUgaE5hbWVkUGlwZTsKLSAgICBQeU9iamVjdCAqb0FyZ3NbM107Ci0gICAgRFdPUkQgZHdBcmdzWzNdLCAqcEFyZ3NbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIk9PTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmb0FyZ3NbMF0sICZvQXJnc1sxXSwgJm9BcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeUVycl9DbGVhcigpOwotCi0gICAgZm9yIChpID0gMCA7IGkgPCAzIDsgaSsrKSB7Ci0gICAgICAgIGlmIChvQXJnc1tpXSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBkd0FyZ3NbaV0gPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKG9BcmdzW2ldKTsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgcEFyZ3NbaV0gPSAmZHdBcmdzW2ldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShoTmFtZWRQaXBlLCBwQXJnc1swXSwgcEFyZ3NbMV0sIHBBcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9XYWl0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBMUENUU1RSIGxwTmFtZWRQaXBlTmFtZTsKLSAgICBEV09SRCBuVGltZU91dDsKLSAgICBCT09MIHN1Y2Nlc3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQsICZscE5hbWVkUGlwZU5hbWUsICZuVGltZU91dCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKGxwTmFtZWRQaXBlTmFtZSwgblRpbWVPdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgd2luMzJfbWV0aG9kc1tdID0gewotICAgIFdJTjMyX0ZVTkNUSU9OKENsb3NlSGFuZGxlKSwKLSAgICBXSU4zMl9GVU5DVElPTihHZXRMYXN0RXJyb3IpLAotICAgIFdJTjMyX0ZVTkNUSU9OKE9wZW5Qcm9jZXNzKSwKLSAgICBXSU4zMl9GVU5DVElPTihFeGl0UHJvY2VzcyksCi0gICAgV0lOMzJfRlVOQ1RJT04oQ29ubmVjdE5hbWVkUGlwZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oQ3JlYXRlRmlsZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oQ3JlYXRlTmFtZWRQaXBlKSwKLSAgICBXSU4zMl9GVU5DVElPTihTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oV2FpdE5hbWVkUGlwZSksCi0gICAge05VTEx9Ci19OwotCi0KLVB5VHlwZU9iamVjdCBXaW4zMlR5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi19OwotCi0KLVB5T2JqZWN0ICoKLWNyZWF0ZV93aW4zMl9uYW1lc3BhY2Uodm9pZCkKLXsKLSAgICBXaW4zMlR5cGUudHBfbmFtZSA9ICJfbXVsdGlwcm9jZXNzaW5nLndpbjMyIjsKLSAgICBXaW4zMlR5cGUudHBfbWV0aG9kcyA9IHdpbjMyX21ldGhvZHM7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmV2luMzJUeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRigmV2luMzJUeXBlKTsKLQotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0FMUkVBRFlfRVhJU1RTKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19EQVRBKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0JVU1kpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1BJUEVfQ09OTkVDVEVEKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9TRU1fVElNRU9VVCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19SRUFEKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBHRU5FUklDX1dSSVRFKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBJTkZJTklURSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgTk1QV0FJVF9XQUlUX0ZPUkVWRVIpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIE9QRU5fRVhJU1RJTkcpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0RVUExFWCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9BQ0NFU1NfSU5CT1VORCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9SRUFETU9ERV9NRVNTQUdFKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX1RZUEVfTUVTU0FHRSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9VTkxJTUlURURfSU5TVEFOQ0VTKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX1dBSVQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBST0NFU1NfQUxMX0FDQ0VTUyk7Ci0KLSAgICBXSU4zMl9DT05TVEFOVCgiaSIsIE5VTEwpOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCopJldpbjMyVHlwZTsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggZmM1Zjg3MS4uNWJhNTU5OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTMxOSw2ICszMTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RzIHRvIHN1cHBvcnQgc2VsZi1yZWZlcmVudGlhbCBvYmplY3RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsaW5nLiAqLwogICAgIFB5T2JqZWN0ICpwZXJzX2Z1bmM7ICAgICAgICAvKiBwZXJzaXN0ZW50X2lkKCkgbWV0aG9kLCBjYW4gYmUgTlVMTCAqLworICAgIFB5T2JqZWN0ICpkaXNwYXRjaF90YWJsZTsgICAvKiBwcml2YXRlIGRpc3BhdGNoX3RhYmxlLCBjYW4gYmUgTlVMTCAqLwogICAgIFB5T2JqZWN0ICphcmc7CiAKICAgICBQeU9iamVjdCAqd3JpdGU7ICAgICAgICAgICAgLyogd3JpdGUoKSBtZXRob2Qgb2YgdGhlIG91dHB1dCBzdHJlYW0uICovCkBAIC02MDUsNyArNjA2LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBIZWxwZXJzIGZvciBjcmVhdGluZyB0aGUgYXJndW1lbnQgdHVwbGUgcGFzc2VkIHRvIGZ1bmN0aW9ucy4gVGhpcyBoYXMgdGhlCi0gICBwZXJmb3JtYW5jZSBhZHZhbnRhZ2Ugb2YgY2FsbGluZyBQeVR1cGxlX05ldygpIG9ubHkgb25jZS4gCisgICBwZXJmb3JtYW5jZSBhZHZhbnRhZ2Ugb2YgY2FsbGluZyBQeVR1cGxlX05ldygpIG9ubHkgb25jZS4KIAogICAgWFhYKGF2YXNzYWxvdHRpKTogSW5saW5lIGRpcmVjdGx5IGluIF9QaWNrbGVyX0Zhc3RDYWxsKCkgYW5kCiAgICBfVW5waWNrbGVyX0Zhc3RDYWxsKCkuICovCkBAIC03NjQsNiArNzY1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBOVUxMOworICAgIHNlbGYtPmRpc3BhdGNoX3RhYmxlID0gTlVMTDsKICAgICBzZWxmLT5hcmcgPSBOVUxMOwogICAgIHNlbGYtPndyaXRlID0gTlVMTDsKICAgICBzZWxmLT5wcm90byA9IDA7CkBAIC04MTMsNyArODE1LDcgQEAKICAgICBmaXhfaW1wb3J0cyA9IFB5T2JqZWN0X0lzVHJ1ZShmaXhfaW1wb3J0c19vYmopOwogICAgIGlmIChmaXhfaW1wb3J0cyA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIAorCiAgICAgc2VsZi0+cHJvdG8gPSBwcm90bzsKICAgICBzZWxmLT5iaW4gPSBwcm90byA+IDA7CiAgICAgc2VsZi0+Zml4X2ltcG9ydHMgPSBmaXhfaW1wb3J0cyAmJiBwcm90byA8IDM7CkBAIC04MjYsOCArODI4LDkgQEAKIHN0YXRpYyBpbnQKIF9QaWNrbGVyX1NldE91dHB1dFN0cmVhbShQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSkKIHsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAgICAgYXNzZXJ0KGZpbGUgIT0gTlVMTCk7Ci0gICAgc2VsZi0+d3JpdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJ3cml0ZSIpOworICAgIHNlbGYtPndyaXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF93cml0ZSk7CiAgICAgaWYgKHNlbGYtPndyaXRlID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTkwOSw3ICs5MTIsNyBAQAogICAgIFB5X3NzaXplX3QgcmVhZF9zaXplLCBwcmVmZXRjaGVkX3NpemUgPSAwOwogCiAgICAgYXNzZXJ0KHNlbGYtPnJlYWQgIT0gTlVMTCk7Ci0gICAgCisKICAgICBpZiAoX1VucGlja2xlcl9Ta2lwQ29uc3VtZWQoc2VsZikgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTEwMzcsNyArMTA0MCw3IEBACiAgICAgICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBudW1fcmVhZDsKICAgICAgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgc2VsZi0+aW5wdXRfYnVmZmVyLCBudW1fcmVhZCwgcmVzdWx0KTsKICAgICB9Ci0gCisKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UndmUgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuIFJldHVybiB0aGUKICAgICAgICByZW1haW5pbmcgc3RyaW5nIGFuZCBsZXQgdGhlIGNhbGxlciBmaWd1cmUgaXQgb3V0LiAqLwogICAgICpyZXN1bHQgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwpAQCAtMTE3MywxNSArMTE3NiwxOSBAQAogc3RhdGljIGludAogX1VucGlja2xlcl9TZXRJbnB1dFN0cmVhbShVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQogewotICAgIHNlbGYtPnBlZWsgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJwZWVrIik7CisgICAgX1B5X0lERU5USUZJRVIocGVlayk7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOworCisgICAgc2VsZi0+cGVlayA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcGVlayk7CiAgICAgaWYgKHNlbGYtPnBlZWsgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNlbGYtPnJlYWQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJyZWFkIik7Ci0gICAgc2VsZi0+cmVhZGxpbmUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJyZWFkbGluZSIpOworICAgIHNlbGYtPnJlYWQgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbGUsICZQeUlkX3JlYWQpOworICAgIHNlbGYtPnJlYWRsaW5lID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkbGluZSk7CiAgICAgaWYgKHNlbGYtPnJlYWRsaW5lID09IE5VTEwgfHwgc2VsZi0+cmVhZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNTQzLDcgKzE1NTAsMTAgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gc2F2ZV9pbnQoc2VsZiwgdmFsKTsKKyNpZiBTSVpFT0ZfTE9ORyA+IDQKKyAgICAgICAgaWYgKHZhbCA8PSAweDdmZmZmZmZmTCAmJiB2YWwgPj0gLTB4ODAwMDAwMDBMKQorI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gc2F2ZV9pbnQoc2VsZiwgdmFsKTsKIAogICAgIGlmIChzZWxmLT5wcm90byA+PSAyKSB7CiAgICAgICAgIC8qIExpbmVhci10aW1lIHBpY2tsaW5nLiAqLwpAQCAtMTU5OCw3ICsxNjA4LDcgQEAKICAgICAgICAgICogYml0cy4KICAgICAgICAgICovCiAgICAgICAgIGlmIChzaWduIDwgMCAmJgotICAgICAgICAgICAgbmJ5dGVzID4gMSAmJiAKKyAgICAgICAgICAgIG5ieXRlcyA+IDEgJiYKICAgICAgICAgICAgIHBkYXRhW25ieXRlcyAtIDFdID09IDB4ZmYgJiYKICAgICAgICAgICAgIChwZGF0YVtuYnl0ZXMgLSAyXSAmIDB4ODApICE9IDApIHsKICAgICAgICAgICAgIG5ieXRlcy0tOwpAQCAtMTY2NCw3ICsxNjc0LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsIHBkYXRhLCA5KSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICB9IAorICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CkBAIC0xNzk4LDkwICsxODA4LDY1IEBACiAvKiBBIGNvcHkgb2YgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoKSB0aGF0IGFsc28gdHJhbnNsYXRlcwogICAgYmFja3NsYXNoIGFuZCBuZXdsaW5lIGNoYXJhY3RlcnMgdG8gXHVYWFhYIGVzY2FwZXMuICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3X3VuaWNvZGVfZXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3Jhd191bmljb2RlX2VzY2FwZShQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXByLCAqcmVzdWx0OwogICAgIGNoYXIgKnA7Ci0gICAgY2hhciAqcTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemUsIGV4cGFuZHNpemU7CisgICAgdm9pZCAqZGF0YTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyICpoZXhkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCi0gICAgCisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG9iaik7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCisgICAgICAgIGV4cGFuZHNpemUgPSAxMDsKKyAgICBlbHNlCisgICAgICAgIGV4cGFuZHNpemUgPSA2OworCiAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIAogICAgIHJlcHIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogc2l6ZSk7CiAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgcCA9IHEgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKKyAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0jZWxzZQotICAgICAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCB1Y3M7Ci0KLSAgICAgICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2g6IGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYXJlIGNvcGllZCBhcy1pcyAqLwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CisgICAgICAgIGVsc2UgaWYgKGNoID49IDI1NiB8fCBjaCA9PSAnXFwnIHx8IGNoID09ICdcbicpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBxOworICAgIHNpemUgPSBwIC0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOwogCi0gIGRvbmU6Citkb25lOgogICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpLCBzaXplKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE4OTYsOSArMTg4MSw3IEBACiAgICAgaWYgKHNlbGYtPmJpbikgewogICAgICAgICBjaGFyIHBkYXRhWzVdOwogCi0gICAgICAgIGVuY29kZWQgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcGFzcyIpOworICAgICAgICBlbmNvZGVkID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmosICJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xOTI0LDggKzE5MDcsNyBAQAogICAgIGVsc2UgewogICAgICAgICBjb25zdCBjaGFyIHVuaWNvZGVfb3AgPSBVTklDT0RFOwogCi0gICAgICAgIGVuY29kZWQgPSByYXdfdW5pY29kZV9lc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIGVuY29kZWQgPSByYXdfdW5pY29kZV9lc2NhcGUob2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTI1NDQsNyArMjUyNiw5IEBACiAgICAgICAgICAgICBzdGF0dXMgPSBiYXRjaF9kaWN0X2V4YWN0KHNlbGYsIG9iaik7CiAgICAgICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvYmosICJpdGVtcyIsICIoKSIpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOworCisgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIigpIik7CiAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMjgyOCw2ICsyODEyLDMwIEBACiB9CiAKIHN0YXRpYyBpbnQKK3NhdmVfZWxsaXBzaXMoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKK3sKKyAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVsbGlwc2lzIik7CisgICAgaW50IHJlczsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXMgPSBzYXZlX2dsb2JhbChzZWxmLCBQeV9FbGxpcHNpcywgc3RyKTsKKyAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgaW50CitzYXZlX25vdGltcGxlbWVudGVkKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJOb3RJbXBsZW1lbnRlZCIpOworICAgIGludCByZXM7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gc2F2ZV9nbG9iYWwoc2VsZiwgUHlfTm90SW1wbGVtZW50ZWQsIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAogc2F2ZV9wZXJzKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmdW5jKQogewogICAgIFB5T2JqZWN0ICpwaWQgPSBOVUxMOwpAQCAtMjg4MSw2ICsyODg5LDI4IEBACiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbGFzcyhQeU9iamVjdCAqb2JqKQoreworICAgIFB5T2JqZWN0ICpjbHM7CisgICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfY2xhc3M7CisKKyAgICBpZiAoc3RyX2NsYXNzID09IE5VTEwpIHsKKyAgICAgICAgc3RyX2NsYXNzID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NfXyIpOworICAgICAgICBpZiAoc3RyX2NsYXNzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY2xzID0gUHlPYmplY3RfR2V0QXR0cihvYmosIHN0cl9jbGFzcyk7CisgICAgaWYgKGNscyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGNscyA9IChQeU9iamVjdCAqKSBQeV9UWVBFKG9iaik7CisgICAgICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY2xzOworfQorCiAvKiBXZSdyZSBzYXZpbmcgb2JqLCBhbmQgYXJncyBpcyB0aGUgMi10aHJ1LTUgdHVwbGUgcmV0dXJuZWQgYnkgdGhlCiAgKiBhcHByb3ByaWF0ZSBfX3JlZHVjZV9fIG1ldGhvZCBmb3Igb2JqLgogICovCkBAIC0yOTQ2LDE3ICsyOTc2LDE4IEBACiAgICAgLyogUHJvdG9jb2wgMiBzcGVjaWFsIGNhc2U6IGlmIGNhbGxhYmxlJ3MgbmFtZSBpcyBfX25ld29ial9fLCB1c2UKICAgICAgICBORVdPQkouICovCiAgICAgaWYgKHVzZV9uZXdvYmopIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpuZXdvYmpfc3RyID0gTlVMTDsKLSAgICAgICAgUHlPYmplY3QgKm5hbWVfc3RyOworICAgICAgICBzdGF0aWMgUHlPYmplY3QgKm5ld29ial9zdHIgPSBOVUxMLCAqbmFtZV9zdHIgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqbmFtZTsKIAogICAgICAgICBpZiAobmV3b2JqX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXdvYmpfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fbmV3b2JqX18iKTsKLSAgICAgICAgICAgIGlmIChuZXdvYmpfc3RyID09IE5VTEwpCisgICAgICAgICAgICBuYW1lX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOworICAgICAgICAgICAgaWYgKG5ld29ial9zdHIgPT0gTlVMTCB8fCBuYW1lX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIG5hbWVfc3RyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjYWxsYWJsZSwgIl9fbmFtZV9fIik7Ci0gICAgICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKSB7CisgICAgICAgIG5hbWUgPSBQeU9iamVjdF9HZXRBdHRyKGNhbGxhYmxlLCBuYW1lX3N0cik7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgZWxzZQpAQCAtMjk2NCw5ICsyOTk1LDkgQEAKICAgICAgICAgICAgIHVzZV9uZXdvYmogPSAwOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9DaGVjayhuYW1lX3N0cikgJiYgCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmUobmFtZV9zdHIsIG5ld29ial9zdHIpID09IDA7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZV9zdHIpOworICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKG5hbWUsIG5ld29ial9zdHIpID09IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHVzZV9uZXdvYmopIHsKQEAgLTI5ODIsMjAgKzMwMTMsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGNscyA9IFB5VHVwbGVfR0VUX0lURU0oYXJndHVwLCAwKTsKLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGNscywgIl9fbmV3X18iKSkgeworICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhjbHMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUGlja2xpbmdFcnJvciwgImFyZ3NbMF0gZnJvbSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmV3b2JqX18gYXJncyBoYXMgbm8gX19uZXdfXyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25ld29ial9fIGFyZ3MgaXMgbm90IGEgdHlwZSIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG9iaiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBvYmpfY2xhc3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgICAgICAgICAgaWYgKG9ial9jbGFzcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgb2JqX2NsYXNzID0gZ2V0X2NsYXNzKG9iaik7CiAgICAgICAgICAgICBwID0gb2JqX2NsYXNzICE9IGNsczsgICAgLyogdHJ1ZSBpZmYgYSBwcm9ibGVtICovCiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqX2NsYXNzKTsKICAgICAgICAgICAgIGlmIChwKSB7CkBAIC0zMDY5LDcgKzMwOTQsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoc3RhdGUpIHsKLSAgICAgICAgaWYgKHNhdmUoc2VsZiwgc3RhdGUsIDApIDwgMCB8fCAKKyAgICAgICAgaWYgKHNhdmUoc2VsZiwgc3RhdGUsIDApIDwgMCB8fAogICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJmJ1aWxkX29wLCAxKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzExMyw2ICszMTM4LDE0IEBACiAgICAgICAgIHN0YXR1cyA9IHNhdmVfbm9uZShzZWxmLCBvYmopOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQorICAgIGVsc2UgaWYgKG9iaiA9PSBQeV9FbGxpcHNpcykgeworICAgICAgICBzdGF0dXMgPSBzYXZlX2VsbGlwc2lzKHNlbGYsIG9iaik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgZWxzZSBpZiAob2JqID09IFB5X05vdEltcGxlbWVudGVkKSB7CisgICAgICAgIHN0YXR1cyA9IHNhdmVfbm90aW1wbGVtZW50ZWQoc2VsZiwgb2JqKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KICAgICBlbHNlIGlmIChvYmogPT0gUHlfRmFsc2UgfHwgb2JqID09IFB5X1RydWUpIHsKICAgICAgICAgc3RhdHVzID0gc2F2ZV9ib29sKHNlbGYsIG9iaik7CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTMxNzcsMTcgKzMyMTAsMjQgQEAKICAgICAvKiBYWFg6IFRoaXMgcGFydCBuZWVkcyBzb21lIHVuaXQgdGVzdHMuICovCiAKICAgICAvKiBHZXQgYSByZWR1Y3Rpb24gY2FsbGFibGUsIGFuZCBjYWxsIGl0LiAgVGhpcyBtYXkgY29tZSBmcm9tCi0gICAgICogY29weXJlZy5kaXNwYXRjaF90YWJsZSwgdGhlIG9iamVjdCdzIF9fcmVkdWNlX2V4X18gbWV0aG9kLAotICAgICAqIG9yIHRoZSBvYmplY3QncyBfX3JlZHVjZV9fIG1ldGhvZC4KKyAgICAgKiBzZWxmLmRpc3BhdGNoX3RhYmxlLCBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLCB0aGUgb2JqZWN0J3MKKyAgICAgKiBfX3JlZHVjZV9leF9fIG1ldGhvZCwgb3IgdGhlIG9iamVjdCdzIF9fcmVkdWNlX18gbWV0aG9kLgogICAgICAqLwotICAgIHJlZHVjZV9mdW5jID0gUHlEaWN0X0dldEl0ZW0oZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgIGlmIChzZWxmLT5kaXNwYXRjaF90YWJsZSA9PSBOVUxMKSB7CisgICAgICAgIHJlZHVjZV9mdW5jID0gUHlEaWN0X0dldEl0ZW0oZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgICAgICAvKiBQeURpY3RfR2V0SXRlbSgpIHVubGlrZSBQeU9iamVjdF9HZXRJdGVtKCkgYW5kCisgICAgICAgICAgIFB5T2JqZWN0X0dldEF0dHIoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmICovCisgICAgICAgIFB5X1hJTkNSRUYocmVkdWNlX2Z1bmMpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlZHVjZV9mdW5jID0gUHlPYmplY3RfR2V0SXRlbShzZWxmLT5kaXNwYXRjaF90YWJsZSwgKFB5T2JqZWN0ICopdHlwZSk7CisgICAgICAgIGlmIChyZWR1Y2VfZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQogICAgIGlmIChyZWR1Y2VfZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIEhlcmUsIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHJlZHVjZV9mdW5jIG9iamVjdCByZXR1cm5lZCBieQotICAgICAgICAgICBQeURpY3RfR2V0SXRlbSBuZWVkcyB0byBiZSBpbmNyZWFzZWQgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBvbmUKLSAgICAgICAgICAgcmV0dXJuZWQgYnkgUHlPYmplY3RfR2V0QXR0ci4gVGhpcyBpcyBhbGxvdyB1cyB0byBibGluZGx5IERFQ1JFRgotICAgICAgICAgICByZWR1Y2VfZnVuYyBhdCB0aGUgZW5kIG9mIHRoZSBzYXZlKCkgcm91dGluZS4KLSAgICAgICAgKi8KLSAgICAgICAgUHlfSU5DUkVGKHJlZHVjZV9mdW5jKTsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7CiAgICAgICAgIHJlZHVjZV92YWx1ZSA9IF9QaWNrbGVyX0Zhc3RDYWxsKHNlbGYsIHJlZHVjZV9mdW5jLCBvYmopOwogICAgIH0KQEAgLTMzMjMsNyArMzM2Myw3IEBACiAgICAgICAgRGV2ZWxvcGVycyBvZnRlbiBmb3JnZXQgdG8gY2FsbCBfX2luaXRfXygpIGluIHRoZWlyIHN1YmNsYXNzZXMsIHdoaWNoCiAgICAgICAgd291bGQgdHJpZ2dlciBhIHNlZ2ZhdWx0IHdpdGhvdXQgdGhpcyBjaGVjay4gKi8KICAgICBpZiAoc2VsZi0+d3JpdGUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUGlja2xpbmdFcnJvciwgCisgICAgICAgIFB5RXJyX0Zvcm1hdChQaWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIlBpY2tsZXIuX19pbml0X18oKSB3YXMgbm90IGNhbGxlZCBieSAlcy5fX2luaXRfXygpIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzNjAsNiArMzQwMCw3IEBACiAgICAgUHlfWERFQ1JFRihzZWxmLT5vdXRwdXRfYnVmZmVyKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPndyaXRlKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5kaXNwYXRjaF90YWJsZSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5hcmcpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+ZmFzdF9tZW1vKTsKIApAQCAtMzM3Myw2ICszNDE0LDcgQEAKIHsKICAgICBQeV9WSVNJVChzZWxmLT53cml0ZSk7CiAgICAgUHlfVklTSVQoc2VsZi0+cGVyc19mdW5jKTsKKyAgICBQeV9WSVNJVChzZWxmLT5kaXNwYXRjaF90YWJsZSk7CiAgICAgUHlfVklTSVQoc2VsZi0+YXJnKTsKICAgICBQeV9WSVNJVChzZWxmLT5mYXN0X21lbW8pOwogICAgIHJldHVybiAwOwpAQCAtMzM4NCw2ICszNDI2LDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5vdXRwdXRfYnVmZmVyKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cGVyc19mdW5jKTsKKyAgICBQeV9DTEVBUihzZWxmLT5kaXNwYXRjaF90YWJsZSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+YXJnKTsKICAgICBQeV9DTEVBUihzZWxmLT5mYXN0X21lbW8pOwogCkBAIC0zNDI3LDYgKzM0NzAsOCBAQAogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIFB5T2JqZWN0ICpwcm90b19vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmaXhfaW1wb3J0cyA9IFB5X1RydWU7CisgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9pZCk7CisgICAgX1B5X0lERU5USUZJRVIoZGlzcGF0Y2hfdGFibGUpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T086UGlja2xlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmZmlsZSwgJnByb3RvX29iaiwgJmZpeF9pbXBvcnRzKSkKQEAgLTM0NjIsMTIgKzM1MDcsMTkgQEAKICAgICBzZWxmLT5mYXN0X25lc3RpbmcgPSAwOwogICAgIHNlbGYtPmZhc3RfbWVtbyA9IE5VTEw7CiAgICAgc2VsZi0+cGVyc19mdW5jID0gTlVMTDsKLSAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZygoUHlPYmplY3QgKilzZWxmLCAicGVyc2lzdGVudF9pZCIpKSB7Ci0gICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyc2lzdGVudF9pZCIpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3BlcnNpc3RlbnRfaWQpKSB7CisgICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9wZXJzaXN0ZW50X2lkKTsKICAgICAgICAgaWYgKHNlbGYtPnBlcnNfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IE5VTEw7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfZGlzcGF0Y2hfdGFibGUpKSB7CisgICAgICAgIHNlbGYtPmRpc3BhdGNoX3RhYmxlID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfZGlzcGF0Y2hfdGFibGUpOworICAgICAgICBpZiAoc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3NDksNiArMzgwMSw3IEBACiBzdGF0aWMgUHlNZW1iZXJEZWYgUGlja2xlcl9tZW1iZXJzW10gPSB7CiAgICAgeyJiaW4iLCBUX0lOVCwgb2Zmc2V0b2YoUGlja2xlck9iamVjdCwgYmluKX0sCiAgICAgeyJmYXN0IiwgVF9JTlQsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGZhc3QpfSwKKyAgICB7ImRpc3BhdGNoX3RhYmxlIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGRpc3BhdGNoX3RhYmxlKX0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zODAzLDcgKzM4NTYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwogfTsKIAotLyogVGVtcG9yYXJ5IGhlbHBlciBmb3IgY2FsbGluZyBzZWxmLmZpbmRfY2xhc3MoKS4gCisvKiBUZW1wb3JhcnkgaGVscGVyIGZvciBjYWxsaW5nIHNlbGYuZmluZF9jbGFzcygpLgogCiAgICBYWFg6IEl0IHdvdWxkIGJlIG5pY2UgdG8gYWJsZSB0byBhdm9pZCBQeXRob24gZnVuY3Rpb24gY2FsbCBvdmVyaGVhZCwgYnkKICAgIHVzaW5nIGRpcmVjdGx5IHRoZSBDIHZlcnNpb24gb2YgZmluZF9jbGFzcygpLCB3aGVuIGZpbmRfY2xhc3MoKSBpcyBub3QKQEAgLTM4MTMsOCArMzg2NiwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbmRfY2xhc3MoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbW9kdWxlX25hbWUsIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiZmluZF9jbGFzcyIsICJPTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIGdsb2JhbF9uYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihmaW5kX2NsYXNzKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2ZpbmRfY2xhc3MsICJPTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIGdsb2JhbF9uYW1lKTsKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTM4NTYsNyArMzkxMSw3IEBACiAgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKIAogICAgIGVycm5vID0gMDsKLSAgICAvKiBYWFg6IFNob3VsZCB0aGUgYmFzZSBhcmd1bWVudCBvZiBzdHJ0b2woKSBiZSBleHBsaWNpdGx5IHNldCB0byAxMD8gCisgICAgLyogWFhYOiBTaG91bGQgdGhlIGJhc2UgYXJndW1lbnQgb2Ygc3RydG9sKCkgYmUgZXhwbGljaXRseSBzZXQgdG8gMTA/CiAgICAgICAgWFhYKGF2YXNzYWxvdHRpKTogU2hvdWxkIHRoaXMgdXNlcyBQeU9TX3N0cnRvbCgpPyAqLwogICAgIHggPSBzdHJ0b2wocywgJmVuZHB0ciwgMCk7CiAKQEAgLTQyMjEsNyArNDI3Niw3IEBACiAKICAgICB4ID0gY2FsY19iaW5pbnQocywgNCk7CiAgICAgaWYgKHggPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhVbnBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIkJJTlNUUklORyBwaWNrbGUgaGFzIG5lZ2F0aXZlIGJ5dGUgY291bnQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ0MTgsMTYgKzQ0NzMsMTkgQEAKIGluc3RhbnRpYXRlKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgLyogQ2FsbGVyIG11c3QgYXNzdXJlIGFyZ3MgYXJlIGEgdHVwbGUuICBOb3JtYWxseSwgYXJncyBjb21lIGZyb20KICAgICAgICBQZGF0YV9wb3B0dXBsZSB3aGljaCBwYWNrcyBvYmplY3RzIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgICBpbnRvIGEgbmV3bHkgY3JlYXRlZCB0dXBsZS4gKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgaWYgKFB5X1NJWkUoYXJncykgPiAwIHx8ICFQeVR5cGVfQ2hlY2soY2xzKSB8fAotICAgICAgICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGNscywgIl9fZ2V0aW5pdGFyZ3NfXyIpKSB7CisgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQoY2xzLCAmUHlJZF9fX2dldGluaXRhcmdzX18pKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCBhcmdzKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY2xzLCAiX19uZXdfXyIsICJPIiwgY2xzKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjbHMsICZQeUlkX19fbmV3X18sICJPIiwgY2xzKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5NjgsOCArNTAyNiw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqYXBwZW5kX2Z1bmM7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGFwcGVuZCk7CiAKLSAgICAgICAgYXBwZW5kX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGxpc3QsICJhcHBlbmQiKTsKKyAgICAgICAgYXBwZW5kX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGxpc3QsICZQeUlkX2FwcGVuZCk7CiAgICAgICAgIGlmIChhcHBlbmRfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBmb3IgKGkgPSB4OyBpIDwgbGVuOyBpKyspIHsKQEAgLTUwMTUsNyArNTA3NCw3IEBACiAgICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsgCisgICAgaWYgKChsZW4gLSB4KSAlIDIgIT0gMCkgewogICAgICAgICAvKiBDdXJydXB0IG9yIGhvc3RpbGUgcGlja2xlIC0tIHdlIG5ldmVyIHdyaXRlIG9uZSBsaWtlIHRoaXMuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhVbnBpY2tsaW5nRXJyb3IsICJvZGQgbnVtYmVyIG9mIGl0ZW1zIGZvciBTRVRJVEVNUyIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC01MDU2LDYgKzUxMTUsNyBAQAogICAgIFB5T2JqZWN0ICpzdGF0ZSwgKmluc3QsICpzbG90c3RhdGU7CiAgICAgUHlPYmplY3QgKnNldHN0YXRlOwogICAgIGludCBzdGF0dXMgPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0c3RhdGVfXyk7CiAKICAgICAvKiBTdGFjayBpcyAuLi4gaW5zdGFuY2UsIHN0YXRlLiAgV2Ugd2FudCB0byBsZWF2ZSBpbnN0YW5jZSBhdAogICAgICAqIHRoZSBzdGFjayB0b3AsIHBvc3NpYmx5IG11dGF0ZWQgdmlhIGluc3RhbmNlLl9fc2V0c3RhdGVfXyhzdGF0ZSkuCkBAIC01MDY5LDcgKzUxMjksNyBAQAogCiAgICAgaW5zdCA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKLSAgICBzZXRzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW5zdCwgIl9fc2V0c3RhdGVfXyIpOworICAgIHNldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX3NldHN0YXRlX18pOwogICAgIGlmIChzZXRzdGF0ZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC01MTEyLDEyICs1MTcyLDEzIEBACiAgICAgICAgIFB5T2JqZWN0ICpkaWN0OwogICAgICAgICBQeU9iamVjdCAqZF9rZXksICpkX3ZhbHVlOwogICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhzdGF0ZSkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhVbnBpY2tsaW5nRXJyb3IsICJzdGF0ZSBpcyBub3QgYSBkaWN0aW9uYXJ5Iik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGluc3QsICJfX2RpY3RfXyIpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChpbnN0LCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC01MzcyLDcgKzU0MzMsNyBAQAogICAgICAgIG5vdCBjYWxsIFVucGlja2xlci5fX2luaXRfXygpLiBIZXJlLCB3ZSBzaW1wbHkgZW5zdXJlIHRoYXQgc2VsZi0+cmVhZAogICAgICAgIGlzIG5vdCBOVUxMLiAqLwogICAgIGlmIChzZWxmLT5yZWFkID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFVucGlja2xpbmdFcnJvciwgCisgICAgICAgIFB5RXJyX0Zvcm1hdChVbnBpY2tsaW5nRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiVW5waWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDc0LDcgKzU1MzUsNyBAQAogICAgICAgICBnbG9iYWwgPSBQeU9iamVjdF9HZXRBdHRyKG1vZHVsZSwgZ2xvYmFsX25hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kdWxlKTsKICAgICB9Ci0gICAgZWxzZSB7IAorICAgIGVsc2UgewogICAgICAgICBnbG9iYWwgPSBQeU9iamVjdF9HZXRBdHRyKG1vZHVsZSwgZ2xvYmFsX25hbWUpOwogICAgIH0KICAgICByZXR1cm4gZ2xvYmFsOwpAQCAtNTU4Miw2ICs1NjQzLDcgQEAKICAgICBQeU9iamVjdCAqZml4X2ltcG9ydHMgPSBQeV9UcnVlOwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfbG9hZCk7CiAKICAgICAvKiBYWFg6IFRoYXQgaXMgYW4gaG9ycmlibGUgZXJyb3IgbWVzc2FnZS4gQnV0LCBJIGRvbid0IGtub3cgaG93IHRvIGRvCiAgICAgICAgYmV0dGVyLi4uICovCkBAIC01NjE2LDkgKzU2NzgsOSBAQAogICAgIGlmIChzZWxmLT5maXhfaW1wb3J0cyA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgInBlcnNpc3RlbnRfbG9hZCIpKSB7Ci0gICAgICAgIHNlbGYtPnBlcnNfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyc2lzdGVudF9sb2FkIik7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfcGVyc2lzdGVudF9sb2FkKSkgeworICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcGVyc2lzdGVudF9sb2FkKTsKICAgICAgICAgaWYgKHNlbGYtPnBlcnNfZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTU2NTEsNyArNTcxMyw3IEBACiAgKiBpbnRlbnRpb25hbCwgYXMgdGhlc2Ugc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYmxhY2stYm94IGltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAgKgogICogV2UgZG8sIGhvd2V2ZXIsIGhhdmUgdG8gaW1wbGVtZW50IHBpY2tsaW5nL3VucGlja2xpbmcgc3VwcG9ydCBiZWNhdXNlIG9mCi0gKiByZWFsLXdvcmxkIGNvZGUgbGlrZSBjdnMyc3ZuLiAKKyAqIHJlYWwtd29ybGQgY29kZSBsaWtlIGN2czJzdm4uCiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCA1OTY3M2Y0Li44ZjBmY2YyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtNDcsNyArNDcsOSBAQAogX2VuYWJsZV9nYyhQeU9iamVjdCAqZ2NfbW9kdWxlKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJlbmFibGUiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihlbmFibGUpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2VuYWJsZSwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTc4LDcgKzgwLDcgQEAKICAqIHRoYXQgcHJvcGVybHkgc3VwcG9ydHMgL2Rldi9mZC4KICAqLwogc3RhdGljIGludAotX2lzX2ZkZXNjZnNfbW91bnRlZF9vbl9kZXZfZmQoKQorX2lzX2ZkZXNjZnNfbW91bnRlZF9vbl9kZXZfZmQodm9pZCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBkZXZfc3RhdDsKICAgICBzdHJ1Y3Qgc3RhdCBkZXZfZmRfc3RhdDsKQEAgLTUwMSw3ICs1MDMsNyBAQAogc3VicHJvY2Vzc19mb3JrX2V4ZWMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpnY19tb2R1bGUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGVjdXRhYmxlX2xpc3QsICpweV9jbG9zZV9mZHMsICpweV9mZHNfdG9fa2VlcDsKKyAgICBQeU9iamVjdCAqZXhlY3V0YWJsZV9saXN0LCAqcHlfZmRzX3RvX2tlZXA7CiAgICAgUHlPYmplY3QgKmVudl9saXN0LCAqcHJlZXhlY19mbjsKICAgICBQeU9iamVjdCAqcHJvY2Vzc19hcmdzLCAqY29udmVydGVkX2FyZ3MgPSBOVUxMLCAqZmFzdF9hcmdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqcHJlZXhlY19mbl9hcmdzX3R1cGxlID0gTlVMTDsKQEAgLTUxNiwxNyArNTE4LDE0IEBACiAgICAgUHlfc3NpemVfdCBhcmdfbnVtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKAotICAgICAgICAgICAgYXJncywgIk9PT09PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCi0gICAgICAgICAgICAmcHJvY2Vzc19hcmdzLCAmZXhlY3V0YWJsZV9saXN0LCAmcHlfY2xvc2VfZmRzLCAmcHlfZmRzX3RvX2tlZXAsCisgICAgICAgICAgICBhcmdzLCAiT09wT09PaWlpaWlpaWlpaU86Zm9ya19leGVjIiwKKyAgICAgICAgICAgICZwcm9jZXNzX2FyZ3MsICZleGVjdXRhYmxlX2xpc3QsICZjbG9zZV9mZHMsICZweV9mZHNfdG9fa2VlcCwKICAgICAgICAgICAgICZjd2Rfb2JqLCAmZW52X2xpc3QsCiAgICAgICAgICAgICAmcDJjcmVhZCwgJnAyY3dyaXRlLCAmYzJwcmVhZCwgJmMycHdyaXRlLAogICAgICAgICAgICAgJmVycnJlYWQsICZlcnJ3cml0ZSwgJmVycnBpcGVfcmVhZCwgJmVycnBpcGVfd3JpdGUsCiAgICAgICAgICAgICAmcmVzdG9yZV9zaWduYWxzLCAmY2FsbF9zZXRzaWQsICZwcmVleGVjX2ZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjbG9zZV9mZHMgPSBQeU9iamVjdF9Jc1RydWUocHlfY2xvc2VfZmRzKTsKLSAgICBpZiAoY2xvc2VfZmRzIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGNsb3NlX2ZkcyAmJiBlcnJwaXBlX3dyaXRlIDwgMykgeyAgLyogcHJlY29uZGl0aW9uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXJycGlwZV93cml0ZSBtdXN0IGJlID49IDMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NDMsMTAgKzU0MiwxMyBAQAogICAgIC8qIFdlIG5lZWQgdG8gY2FsbCBnYy5kaXNhYmxlKCkgd2hlbiB3ZSdsbCBiZSBjYWxsaW5nIHByZWV4ZWNfZm4gKi8KICAgICBpZiAocHJlZXhlY19mbiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGlzZW5hYmxlZCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGRpc2FibGUpOworICAgICAgICAKICAgICAgICAgZ2NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJnYyIpOwogICAgICAgICBpZiAoZ2NfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJpc2VuYWJsZWQiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2lzZW5hYmxlZCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU1Nyw3ICs1NTksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGdjX21vZHVsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGdjX21vZHVsZSwgImRpc2FibGUiLCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChnY19tb2R1bGUsICZQeUlkX2Rpc2FibGUsIE5VTEwpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IGJjOWIwNGEuLjQyMWEwZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICBQeU9iamVjdCAqbWFza2xvd2VyID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGhpcnR5dHdvID0gTlVMTDsKICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKKyAgICB1bnNpZ25lZCBsb25nICpuZXdfa2V5LCAqa2V5ID0gTlVMTDsKICAgICB1bnNpZ25lZCBsb25nIGtleW1heDsgICAgICAgICAgICAgICAvKiAjIG9mIGFsbG9jYXRlZCBzbG90cyBpbiBrZXkgKi8KICAgICB1bnNpZ25lZCBsb25nIGtleXVzZWQ7ICAgICAgICAgICAgICAvKiAjIG9mIHVzZWQgc2xvdHMgaW4ga2V5ICovCiAgICAgaW50IGVycjsKQEAgLTIyOCwxNiArMjI4LDE3IEBACiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIC8qIElmIHRoZSBhcmcgaXMgYW4gaW50IG9yIGxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWU7IGVsc2UgdXNlCi0gICAgICogdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0cyBoYXNoIGNvZGUuCisgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCisgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCisgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KICAgICAgKi8KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpCiAgICAgICAgIG4gPSBQeU51bWJlcl9BYnNvbHV0ZShhcmcpOwogICAgIGVsc2UgewotICAgICAgICBsb25nIGhhc2ggPSBQeU9iamVjdF9IYXNoKGFyZyk7CisgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgbiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKWhhc2gpOworICAgICAgICBuID0gUHlMb25nX0Zyb21TaXplX3QoKHNpemVfdCloYXNoKTsKICAgICB9CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZ290byBEb25lOwpAQCAtMjg3LDEwICsyODgsMTEgQEAKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGtleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fUmVhbGxvYyhrZXksCisgICAgICAgICAgICBuZXdfa2V5ID0gKHVuc2lnbmVkIGxvbmcgKilQeU1lbV9SZWFsbG9jKGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZ2dlciAqIHNpemVvZigqa2V5KSk7Ci0gICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBpZiAobmV3X2tleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgICAgIGtleSA9IG5ld19rZXk7CiAgICAgICAgICAgICBrZXltYXggPSBiaWdnZXI7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGtleXVzZWQgPCBrZXltYXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCA3MzVhMjQyLi4zNjkzMzYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjE3LDggKzIxNyw2IEBACiAgICAgcHlzcWxpdGVfTm9kZSogcHRyOwogICAgIFB5T2JqZWN0KiBwcmV2a2V5OwogICAgIFB5T2JqZWN0KiBuZXh0a2V5OwotICAgIFB5T2JqZWN0KiBmbXRfYXJnczsKLSAgICBQeU9iamVjdCogdGVtcGxhdGU7CiAgICAgUHlPYmplY3QqIGRpc3BsYXlfc3RyOwogCiAgICAgcHRyID0gc2VsZi0+Zmlyc3Q7CkBAIC0yMjksMzYgKzIyNywyMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJldmtleSA9IFB5X05vbmU7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHByZXZrZXkpOwogCiAgICAgICAgIGlmIChwdHItPm5leHQpIHsKICAgICAgICAgICAgIG5leHRrZXkgPSBwdHItPm5leHQtPmtleTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG5leHRrZXkgPSBQeV9Ob25lOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihuZXh0a2V5KTsKIAotICAgICAgICBmbXRfYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PTyIsIHByZXZrZXksIHB0ci0+a2V5LCBuZXh0a2V5KTsKLSAgICAgICAgaWYgKCFmbXRfYXJncykgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXMgPC0gJXMgLT4lc1xuIik7Ci0gICAgICAgIGlmICghdGVtcGxhdGUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmbXRfYXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBkaXNwbGF5X3N0ciA9IFB5VW5pY29kZV9Gb3JtYXQodGVtcGxhdGUsIGZtdF9hcmdzKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXBsYXRlKTsKLSAgICAgICAgUHlfREVDUkVGKGZtdF9hcmdzKTsKKyAgICAgICAgZGlzcGxheV9zdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgPC0gJVMgLT4gJVNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmtleSwgcHRyLT5rZXksIG5leHRrZXkpOwogICAgICAgICBpZiAoIWRpc3BsYXlfc3RyKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBQeU9iamVjdF9QcmludChkaXNwbGF5X3N0ciwgc3Rkb3V0LCBQeV9QUklOVF9SQVcpOwogICAgICAgICBQeV9ERUNSRUYoZGlzcGxheV9zdHIpOwogCi0gICAgICAgIFB5X0RFQ1JFRihwcmV2a2V5KTsKLSAgICAgICAgUHlfREVDUkVGKG5leHRrZXkpOwotCiAgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IDlkNGM3MmYuLmJjNGNlNTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtNjcxLDcgKzY3MSw3IEBACiB7CiAgICAgUHlPYmplY3QqIGZ1bmN0aW9uX3Jlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QqKiBhZ2dyZWdhdGVfaW5zdGFuY2U7Ci0gICAgUHlPYmplY3QqIGFnZ3JlZ2F0ZV9jbGFzczsKKyAgICBfUHlfSURFTlRJRklFUihmaW5hbGl6ZSk7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5R0lMU3RhdGVfU1RBVEUgdGhyZWFkc3RhdGU7CkBAIC02NzksOCArNjc5LDYgQEAKICAgICB0aHJlYWRzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CiAjZW5kaWYKIAotICAgIGFnZ3JlZ2F0ZV9jbGFzcyA9IChQeU9iamVjdCopc3FsaXRlM191c2VyX2RhdGEoY29udGV4dCk7Ci0KICAgICBhZ2dyZWdhdGVfaW5zdGFuY2UgPSAoUHlPYmplY3QqKilzcWxpdGUzX2FnZ3JlZ2F0ZV9jb250ZXh0KGNvbnRleHQsIHNpemVvZihQeU9iamVjdCopKTsKICAgICBpZiAoISphZ2dyZWdhdGVfaW5zdGFuY2UpIHsKICAgICAgICAgLyogdGhpcyBicmFuY2ggaXMgZXhlY3V0ZWQgaWYgdGhlcmUgd2FzIGFuIGV4Y2VwdGlvbiBpbiB0aGUgYWdncmVnYXRlJ3MKQEAgLTY4OSw3ICs2ODcsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgImZpbmFsaXplIiwgIiIpOworICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsICIiKTsKICAgICBpZiAoIWZ1bmN0aW9uX3Jlc3VsdCkgewogICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CiAgICAgICAgICAgICBQeUVycl9QcmludCgpOwpAQCAtOTA1LDYgKzkwMywzOCBAQAogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIHZvaWQgX3RyYWNlX2NhbGxiYWNrKHZvaWQqIHVzZXJfYXJnLCBjb25zdCBjaGFyKiBzdGF0ZW1lbnRfc3RyaW5nKQoreworICAgIFB5T2JqZWN0ICpweV9zdGF0ZW1lbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeUdJTFN0YXRlX1NUQVRFIGdpbHN0YXRlOworCisgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOworI2VuZGlmCisgICAgcHlfc3RhdGVtZW50ID0gUHlVbmljb2RlX0RlY29kZVVURjgoc3RhdGVtZW50X3N0cmluZywKKyAgICAgICAgICAgIHN0cmxlbihzdGF0ZW1lbnRfc3RyaW5nKSwgInJlcGxhY2UiKTsKKyAgICBpZiAocHlfc3RhdGVtZW50KSB7CisgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0Kil1c2VyX2FyZywgcHlfc3RhdGVtZW50LCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHB5X3N0YXRlbWVudCk7CisgICAgfQorCisgICAgaWYgKHJldCkgeworICAgICAgICBQeV9ERUNSRUYocmV0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKGdpbHN0YXRlKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2F1dGhvcml6ZXIocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QqIGF1dGhvcml6ZXJfY2I7CkBAIC05NjQsNiArOTk0LDM0IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfdHJhY2VfY2FsbGJhY2socHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCit7CisgICAgUHlPYmplY3QqIHRyYWNlX2NhbGxiYWNrOworCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyAidHJhY2VfY2FsbGJhY2siLCBOVUxMIH07CisKKyAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX3RocmVhZChzZWxmKSB8fCAhcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNldF90cmFjZV9jYWxsYmFjayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnRyYWNlX2NhbGxiYWNrKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAodHJhY2VfY2FsbGJhY2sgPT0gUHlfTm9uZSkgeworICAgICAgICAvKiBOb25lIGNsZWFycyB0aGUgdHJhY2UgY2FsbGJhY2sgcHJldmlvdXNseSBzZXQgKi8KKyAgICAgICAgc3FsaXRlM190cmFjZShzZWxmLT5kYiwgMCwgKHZvaWQqKTApOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgdHJhY2VfY2FsbGJhY2ssIFB5X05vbmUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIF90cmFjZV9jYWxsYmFjaywgdHJhY2VfY2FsbGJhY2spOworICAgIH0KKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKwogI2lmZGVmIEhBVkVfTE9BRF9FWFRFTlNJT04KIHN0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfZW5hYmxlX2xvYWRfZXh0ZW5zaW9uKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewpAQCAtMTE2OSw4ICsxMjI3LDkgQEAKICAgICBQeU9iamVjdCogY3Vyc29yID0gMDsKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihjdXJzb3IpOwogCi0gICAgY3Vyc29yID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsICJjdXJzb3IiLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTE5OCw4ICsxMjU3LDkgQEAKICAgICBQeU9iamVjdCogY3Vyc29yID0gMDsKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihjdXJzb3IpOwogCi0gICAgY3Vyc29yID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsICJjdXJzb3IiLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTIyNyw4ICsxMjg3LDkgQEAKICAgICBQeU9iamVjdCogY3Vyc29yID0gMDsKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihjdXJzb3IpOwogCi0gICAgY3Vyc29yID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsICJjdXJzb3IiLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTM3NSwxMCArMTQzNiwxMiBAQAogICAgIFB5T2JqZWN0KiB1cHBlcmNhc2VfbmFtZSA9IDA7CiAgICAgUHlPYmplY3QqIG5hbWU7CiAgICAgUHlPYmplY3QqIHJldHZhbDsKLSAgICBQeV9VTklDT0RFKiBjaGs7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogICAgIGNoYXIgKnVwcGVyY2FzZV9uYW1lX3N0cjsKICAgICBpbnQgcmM7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIGlmICghcHlzcWxpdGVfY2hlY2tfdGhyZWFkKHNlbGYpIHx8ICFweXNxbGl0ZV9jaGVja19jb25uZWN0aW9uKHNlbGYpKSB7CiAgICAgICAgIGdvdG8gZmluYWxseTsKQEAgLTEzODgsMTcgKzE0NTEsMjEgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIHVwcGVyY2FzZV9uYW1lID0gUHlPYmplY3RfQ2FsbE1ldGhvZChuYW1lLCAidXBwZXIiLCAiIik7CisgICAgdXBwZXJjYXNlX25hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG5hbWUsICZQeUlkX3VwcGVyLCAiIik7CiAgICAgaWYgKCF1cHBlcmNhc2VfbmFtZSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHVwcGVyY2FzZV9uYW1lKTsKLSAgICBjaGsgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1cHBlcmNhc2VfbmFtZSk7Ci0gICAgZm9yIChpPTA7IGk8bGVuOyBpKyssIGNoaysrKSB7Ci0gICAgICAgIGlmICgoKmNoayA+PSAnMCcgJiYgKmNoayA8PSAnOScpCi0gICAgICAgICB8fCAoKmNoayA+PSAnQScgJiYgKmNoayA8PSAnWicpCi0gICAgICAgICB8fCAoKmNoayA9PSAnXycpKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodXBwZXJjYXNlX25hbWUpKQorICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodXBwZXJjYXNlX25hbWUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1cHBlcmNhc2VfbmFtZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVwcGVyY2FzZV9uYW1lKTsKKyAgICBmb3IgKGk9MDsgaTxsZW47IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmICgoY2ggPj0gJzAnICYmIGNoIDw9ICc5JykKKyAgICAgICAgIHx8IChjaCA+PSAnQScgJiYgY2ggPD0gJ1onKQorICAgICAgICAgfHwgKGNoID09ICdfJykpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgewpAQCAtMTUxNyw2ICsxNTg0LDggQEAKICAgICAjZW5kaWYKICAgICB7InNldF9wcm9ncmVzc19oYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKXB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3Byb2dyZXNzX2hhbmRsZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICAgICBQeURvY19TVFIoIlNldHMgcHJvZ3Jlc3MgaGFuZGxlciBjYWxsYmFjay4gTm9uLXN0YW5kYXJkLiIpfSwKKyAgICB7InNldF90cmFjZV9jYWxsYmFjayIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF90cmFjZV9jYWxsYmFjaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgICAgIFB5RG9jX1NUUigiU2V0cyBhIHRyYWNlIGNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IChwYXNzZWQgYXMgdW5pY29kZSkuIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9uKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZXhlY3V0ZSwgTUVUSF9WQVJBUkdTLAogICAgICAgICBQeURvY19TVFIoIkV4ZWN1dGVzIGEgU1FMIHN0YXRlbWVudC4gTm9uLXN0YW5kYXJkLiIpfSwKICAgICB7ImV4ZWN1dGVtYW55IiwgKFB5Q0Z1bmN0aW9uKXB5c3FsaXRlX2Nvbm5lY3Rpb25fZXhlY3V0ZW1hbnksIE1FVEhfVkFSQVJHUywKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmggYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCmluZGV4IGM4ZTJmN2MuLjBjOTczNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaApAQCAtODMsOCArODMsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lcyBob3cgYnl0ZXN0cmluZ3MgZnJvbSBTUUxpdGUgYXJlIGNvbnZlcnRlZCB0byBQeXRob24gb2JqZWN0czoKICAgICAgKiAtIFB5VW5pY29kZV9UeXBlOiAgICAgICAgUHl0aG9uIFVuaWNvZGUgb2JqZWN0cyBhcmUgY29uc3RydWN0ZWQgZnJvbSBVVEYtOCBieXRlc3RyaW5ncwotICAgICAqIC0gT3B0aW1pemVkVW5pY29kZTogICAgICBMaWtlIGJlZm9yZSwgYnV0IGZvciBBU0NJSSBkYXRhLCBvbmx5IFB5U3RyaW5ncyBhcmUgY3JlYXRlZC4KLSAgICAgKiAtIFB5Qnl0ZXNfVHlwZTogICAgICAgICBQeVN0cmluZ3MgYXJlIGNyZWF0ZWQgYXMtaXMuCisgICAgICogLSBQeUJ5dGVzX1R5cGU6ICAgICAgICAgIFRoZSBieXRlc3RyaW5ncyBhcmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgICogLSBBbnkgY3VzdG9tIGNhbGxhYmxlOiAgIEFueSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgY2FsbGFibGUgY2FsbGVkIHdpdGggdGhlIGJ5dGVzdHJpbmcKICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgc2luZ2xlIHBhcmFtZXRlci4KICAgICAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwppbmRleCA4NmZiZDRlLi44YTU2ZDNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCkBAIC0xMjYsMTEgKzEyNiw5IEBACiAKIHN0YXRpYyB2b2lkIHB5c3FsaXRlX2N1cnNvcl9kZWFsbG9jKHB5c3FsaXRlX0N1cnNvciogc2VsZikKIHsKLSAgICBpbnQgcmM7Ci0KICAgICAvKiBSZXNldCB0aGUgc3RhdGVtZW50IGlmIHRoZSB1c2VyIGhhcyBub3QgY2xvc2VkIHRoZSBjdXJzb3IgKi8KICAgICBpZiAoc2VsZi0+c3RhdGVtZW50KSB7Ci0gICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhdGVtZW50KTsKICAgICB9CiAKQEAgLTE1Miw4ICsxNTAsOSBAQAogewogICAgIFB5T2JqZWN0KiB1cGNhc2Vfa2V5OwogICAgIFB5T2JqZWN0KiByZXR2YWw7CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCi0gICAgdXBjYXNlX2tleSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoa2V5LCAidXBwZXIiLCAiIik7CisgICAgdXBjYXNlX2tleSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoa2V5LCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghdXBjYXNlX2tleSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjgsMTEgKzI2Nyw2IEBACiAgICAgfQogfQogCi1QeU9iamVjdCogcHlzcWxpdGVfdW5pY29kZV9mcm9tX3N0cmluZyhjb25zdCBjaGFyKiB2YWxfc3RyLCBQeV9zc2l6ZV90IHNpemUsIGludCBvcHRpbWl6ZSkKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIHNpemUpOwotfQotCiAvKgogICogUmV0dXJucyBhIHJvdyBmcm9tIHRoZSBjdXJyZW50bHkgYWN0aXZlIFNRTGl0ZSBzdGF0ZW1lbnQKICAqCkBAIC0zNTYsMTIgKzM1MCw4IEBACiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHR5cGUgPT0gU1FMSVRFX1RFWFQpIHsKICAgICAgICAgICAgICAgICB2YWxfc3RyID0gKGNvbnN0IGNoYXIqKXNxbGl0ZTNfY29sdW1uX3RleHQoc2VsZi0+c3RhdGVtZW50LT5zdCwgaSk7CiAgICAgICAgICAgICAgICAgbmJ5dGVzID0gc3FsaXRlM19jb2x1bW5fYnl0ZXMoc2VsZi0+c3RhdGVtZW50LT5zdCwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpCi0gICAgICAgICAgICAgICAgICAgIHx8IChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSkpIHsKLQotICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBweXNxbGl0ZV91bmljb2RlX2Zyb21fc3RyaW5nKHZhbF9zdHIsIG5ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmNvbm5lY3Rpb24tPnRleHRfZmFjdG9yeSA9PSBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlID8gMSA6IDApOwotCisgICAgICAgICAgICAgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPnRleHRfZmFjdG9yeSA9PSAoUHlPYmplY3QqKSZQeVVuaWNvZGVfVHlwZSkgeworICAgICAgICAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUodmFsX3N0ciwgbmJ5dGVzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb252ZXJ0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSBzcWxpdGUzX2NvbHVtbl9uYW1lKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2xuYW1lKSB7CkBAIC00NjAsNyArNDUwLDYgQEAKICAgICBpbnQgc3RhdGVtZW50X3R5cGU7CiAgICAgUHlPYmplY3QqIGRlc2NyaXB0b3I7CiAgICAgUHlPYmplY3QqIHNlY29uZF9hcmd1bWVudCA9IE5VTEw7Ci0gICAgaW50IGFsbG93XzhiaXRfY2hhcnM7CiAKICAgICBpZiAoIWNoZWNrX2N1cnNvcihzZWxmKSkgewogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNDY5LDEwICs0NTgsNiBAQAogICAgIHNlbGYtPmxvY2tlZCA9IDE7CiAgICAgc2VsZi0+cmVzZXQgPSAwOwogCi0gICAgLyogTWFrZSBzaG9vdGluZyB5b3Vyc2VsZiBpbiB0aGUgZm9vdCB3aXRoIG5vdCB1dGYtOCBkZWNvZGFibGUgOC1iaXQtc3RyaW5ncyBoYXJkZXIgKi8KLSAgICBhbGxvd184Yml0X2NoYXJzID0gKChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgIT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpICYmCi0gICAgICAgIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgIT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSkpOwotCiAgICAgUHlfWERFQ1JFRihzZWxmLT5uZXh0X3Jvdyk7CiAgICAgc2VsZi0+bmV4dF9yb3cgPSBOVUxMOwogCkBAIC01MzYsNyArNTIxLDcgQEAKIAogICAgIGlmIChzZWxmLT5zdGF0ZW1lbnQgIT0gTlVMTCkgewogICAgICAgICAvKiBUaGVyZSBpcyBhbiBhY3RpdmUgc3RhdGVtZW50ICovCi0gICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgIH0KIAogICAgIG9wZXJhdGlvbl9jc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUob3BlcmF0aW9uLCAmb3BlcmF0aW9uX2xlbik7CkBAIC02MzEsNyArNjE2LDcgQEAKIAogICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfbWFya19kaXJ0eShzZWxmLT5zdGF0ZW1lbnQpOwogCi0gICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMoc2VsZi0+c3RhdGVtZW50LCBwYXJhbWV0ZXJzLCBhbGxvd184Yml0X2NoYXJzKTsKKyAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhzZWxmLT5zdGF0ZW1lbnQsIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQpAQCAtNzQxLDcgKzcyNiw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAobXVsdGlwbGUpIHsKLSAgICAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CisgICAgICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmMKaW5kZXggYzczMGFmYS4uMjI2MWI4MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmMKQEAgLTk1LDcgKzk1LDkgQEAKIAogICAgIC8qIHRyeSB0byBoYXZlIHRoZSBwcm90b2NvbCBhZGFwdCB0aGlzIG9iamVjdCovCiAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcocHJvdG8sICJfX2FkYXB0X18iKSkgewotICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocHJvdG8sICJfX2FkYXB0X18iLCAiTyIsIG9iaik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYWRhcHRfXyk7CisgICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm90bywgJlB5SWRfX19hZGFwdF9fLCAiTyIsIG9iaik7CisKICAgICAgICAgaWYgKGFkYXB0ZWQpIHsKICAgICAgICAgICAgIGlmIChhZGFwdGVkICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYWRhcHRlZDsKQEAgLTExMCw3ICsxMTIsOSBAQAogCiAgICAgLyogYW5kIGZpbmFsbHkgdHJ5IHRvIGhhdmUgdGhlIG9iamVjdCBhZGFwdCBpdHNlbGYgKi8KICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJfX2NvbmZvcm1fXyIpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvYmosICJfX2NvbmZvcm1fXyIsIk8iLCBwcm90byk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fY29uZm9ybV9fKTsKKyAgICAgICAgUHlPYmplY3QgKmFkYXB0ZWQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfX19jb25mb3JtX18sIk8iLCBwcm90byk7CisKICAgICAgICAgaWYgKGFkYXB0ZWQpIHsKICAgICAgICAgICAgIGlmIChhZGFwdGVkICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gYWRhcHRlZDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwppbmRleCBjYmMzYjhlLi5iZWE2ZDZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCkBAIC0zNyw3ICszNyw3IEBACiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9FcnJvciwgKnB5c3FsaXRlX1dhcm5pbmcsICpweXNxbGl0ZV9JbnRlcmZhY2VFcnJvciwgKnB5c3FsaXRlX0RhdGFiYXNlRXJyb3IsCiAgICAgKnB5c3FsaXRlX0ludGVybmFsRXJyb3IsICpweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAqcHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwKLSAgICAqcHlzcWxpdGVfSW50ZWdyaXR5RXJyb3IsICpweXNxbGl0ZV9EYXRhRXJyb3IsICpweXNxbGl0ZV9Ob3RTdXBwb3J0ZWRFcnJvciwgKnB5c3FsaXRlX09wdGltaXplZFVuaWNvZGU7CisgICAgKnB5c3FsaXRlX0ludGVncml0eUVycm9yLCAqcHlzcWxpdGVfRGF0YUVycm9yLCAqcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3I7CiAKIFB5T2JqZWN0KiBjb252ZXJ0ZXJzOwogaW50IF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrczsKQEAgLTE3OSwxMyArMTc5LDE0IEBACiAgICAgUHlPYmplY3QqIG5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0KiBjYWxsYWJsZTsKICAgICBQeU9iamVjdCogcmV0dmFsID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUih1cHBlcik7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPIiwgJm9yaWdfbmFtZSwgJmNhbGxhYmxlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHRoZSBuYW1lIHRvIHVwcGVyIGNhc2UgKi8KLSAgICBuYW1lID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvcmlnX25hbWUsICJ1cHBlciIsICIiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvcmlnX25hbWUsICZQeUlkX3VwcGVyLCAiIik7CiAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtNDA2LDEzICs0MDcsMTMgQEAKICAgICB9CiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIk5vdFN1cHBvcnRlZEVycm9yIiwgcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3IpOwogCi0gICAgLyogV2UganVzdCBuZWVkICJzb21ldGhpbmciIHVuaXF1ZSBmb3IgcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZS4gSXQgZG9lcyBub3QgcmVhbGx5Ci0gICAgICogbmVlZCB0byBiZSBhIHN0cmluZyBzdWJjbGFzcy4gSnVzdCBhbnl0aGluZyB0aGF0IGNhbiBhY3QgYXMgYSBzcGVjaWFsCi0gICAgICogbWFya2VyIGZvciB1cy4gU28gSSBwdWxsZWQgUHlDZWxsX1R5cGUgb3V0IG9mIG15IG1hZ2ljIGhhdC4KLSAgICAgKi8KLSAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikmUHlDZWxsX1R5cGUpOwotICAgIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUgPSAoUHlPYmplY3QqKSZQeUNlbGxfVHlwZTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiT3B0aW1pemVkVW5pY29kZSIsIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpOworICAgIC8qIEluIFB5dGhvbiAyLngsIHNldHRpbmcgQ29ubmVjdGlvbi50ZXh0X2ZhY3RvcnkgdG8KKyAgICAgICBPcHRpbWl6ZWRVbmljb2RlIGNhdXNlZCBVbmljb2RlIG9iamVjdHMgdG8gYmUgcmV0dXJuZWQgZm9yCisgICAgICAgbm9uLUFTQ0lJIGRhdGEgYW5kIGJ5dGVzdHJpbmdzIHRvIGJlIHJldHVybmVkIGZvciBBU0NJSSBkYXRhLgorICAgICAgIE5vdyBPcHRpbWl6ZWRVbmljb2RlIGlzIGFuIGFsaWFzIGZvciBzdHIsIHNvIGl0IGhhcyBubworICAgICAgIGVmZmVjdC4gKi8KKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJPcHRpbWl6ZWRVbmljb2RlIiwgKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpOwogCiAgICAgLyogU2V0IGludGVnZXIgY29uc3RhbnRzICovCiAgICAgZm9yIChpID0gMDsgX2ludF9jb25zdGFudHNbaV0uY29uc3RhbnRfbmFtZSAhPSAwOyBpKyspIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaCBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaAppbmRleCAwZWRkYjY3Li5iNTE3MjRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCkBAIC0zOCw4ICszOCw2IEBACiBleHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX0RhdGFFcnJvcjsKIGV4dGVybiBQeU9iamVjdCogcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3I7CiAKLWV4dGVybiBQeU9iamVjdCogcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZTsKLQogLyogdGhlIGZ1bmN0aW9ucyB0aW1lLnRpbWUoKSBhbmQgdGltZS5zbGVlcCgpICovCiBleHRlcm4gUHlPYmplY3QqIHRpbWVfdGltZTsKIGV4dGVybiBQeU9iamVjdCogdGltZV9zbGVlcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwppbmRleCAzZDQ0MDk0Li5iNTA2NThjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCkBAIC0xNzMsMTAgKzE3Myw5IEBACiAKIHN0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfcm93X3JpY2hjb21wYXJlKHB5c3FsaXRlX1JvdyAqc2VsZiwgUHlPYmplY3QgKl9vdGhlciwgaW50IG9waWQpCiB7Ci0gICAgaWYgKG9waWQgIT0gUHlfRVEgJiYgb3BpZCAhPSBQeV9ORSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChvcGlkICE9IFB5X0VRICYmIG9waWQgIT0gUHlfTkUpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIGlmIChQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUoX290aGVyKSwgJnB5c3FsaXRlX1Jvd1R5cGUpKSB7CiAgICAgICAgIHB5c3FsaXRlX1JvdyAqb3RoZXIgPSAocHlzcWxpdGVfUm93ICopX290aGVyOwogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfUmljaENvbXBhcmUoc2VsZi0+ZGVzY3JpcHRpb24sIG90aGVyLT5kZXNjcmlwdGlvbiwgb3BpZCk7CkBAIC0xODYsOCArMTg1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZShzZWxmLT5kYXRhLCBvdGhlci0+ZGF0YSwgb3BpZCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBQeU1hcHBpbmdNZXRob2RzIHB5c3FsaXRlX3Jvd19hc19tYXBwaW5nID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCmluZGV4IDgwYmNjMzguLjk4ODQ4NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKQEAgLTg3LDcgKzg3LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKLWludCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBpbnQgcG9zLCBQeU9iamVjdCogcGFyYW1ldGVyLCBpbnQgYWxsb3dfOGJpdF9jaGFycykKK2ludCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBpbnQgcG9zLCBQeU9iamVjdCogcGFyYW1ldGVyKQogewogICAgIGludCByYyA9IFNRTElURV9PSzsKICAgICBQWV9MT05HX0xPTkcgbG9uZ2xvbmd2YWw7CkBAIC0xNjYsNyArMTY2LDcgQEAKICAgICB9CiB9CiAKLXZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzLCBpbnQgYWxsb3dfOGJpdF9jaGFycykKK3ZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzKQogewogICAgIFB5T2JqZWN0KiBjdXJyZW50X3BhcmFtOwogICAgIFB5T2JqZWN0KiBhZGFwdGVkOwpAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihzZWxmLCBpICsgMSwgYWRhcHRlZCwgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihzZWxmLCBpICsgMSwgYWRhcHRlZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYWRhcHRlZCk7CiAKICAgICAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKQEAgLTI2NSw3ICsyNjUsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSwgYWRhcHRlZCwgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihzZWxmLCBpLCBhZGFwdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhZGFwdGVkKTsKIAogICAgICAgICAgICAgaWYgKHJjICE9IFNRTElURV9PSykgewpAQCAtMzY5LDExICszNjksOSBAQAogCiB2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9kZWFsbG9jKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZikKIHsKLSAgICBpbnQgcmM7Ci0KICAgICBpZiAoc2VsZi0+c3QpIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByYyA9IHNxbGl0ZTNfZmluYWxpemUoc2VsZi0+c3QpOworICAgICAgICBzcWxpdGUzX2ZpbmFsaXplKHNlbGYtPnN0KTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaCBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaAppbmRleCBlNWRhNDJlLi40NjgxNDQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCkBAIC00Niw4ICs0Niw4IEBACiBpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2NyZWF0ZShweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIHB5c3FsaXRlX0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFB5T2JqZWN0KiBzcWwpOwogdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfZGVhbGxvYyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpOwogCi1pbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlciwgaW50IGFsbG93XzhiaXRfY2hhcnMpOwotdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXJzKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgUHlPYmplY3QqIHBhcmFtZXRlcnMsIGludCBhbGxvd184Yml0X2NoYXJzKTsKK2ludCBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBpbnQgcG9zLCBQeU9iamVjdCogcGFyYW1ldGVyKTsKK3ZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzKTsKIAogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9yZWNvbXBpbGUocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycyk7CiBpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2ZpbmFsaXplKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcmUuYyBiL01vZHVsZXMvX3NyZS5jCmluZGV4IDQ3MmI1YTMuLmNiMWY3OTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NyZS5jCisrKyBiL01vZHVsZXMvX3NyZS5jCkBAIC0xNjMsMjEgKzE2MywxNyBAQAogCiAvKiB1bmljb2RlLXNwZWNpZmljIGNoYXJhY3RlciBwcmVkaWNhdGVzICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKLQotI2RlZmluZSBTUkVfVU5JX0lTX0RJR0lUKGNoKSBQeV9VTklDT0RFX0lTREVDSU1BTCgoUHlfVU5JQ09ERSkoY2gpKQotI2RlZmluZSBTUkVfVU5JX0lTX1NQQUNFKGNoKSBQeV9VTklDT0RFX0lTU1BBQ0UoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19BTE5VTShjaCkgUHlfVU5JQ09ERV9JU0FMTlVNKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfV09SRChjaCkgKFNSRV9VTklfSVNfQUxOVU0oKGNoKSkgfHwgKGNoKSA9PSAnXycpCisjZGVmaW5lIFNSRV9VTklfSVNfRElHSVQoY2gpIFB5X1VOSUNPREVfSVNERUNJTUFMKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX1NQQUNFKGNoKSBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpCisjZGVmaW5lIFNSRV9VTklfSVNfTElORUJSRUFLKGNoKSBQeV9VTklDT0RFX0lTTElORUJSRUFLKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX0FMTlVNKGNoKSBQeV9VTklDT0RFX0lTQUxOVU0oY2gpCisjZGVmaW5lIFNSRV9VTklfSVNfV09SRChjaCkgKFNSRV9VTklfSVNfQUxOVU0oY2gpIHx8IChjaCkgPT0gJ18nKQogCiBzdGF0aWMgdW5zaWduZWQgaW50IHNyZV9sb3dlcl91bmljb2RlKHVuc2lnbmVkIGludCBjaCkKIHsKLSAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgUHlfVU5JQ09ERV9UT0xPV0VSKChQeV9VTklDT0RFKShjaCkpOworICAgIHJldHVybiAodW5zaWduZWQgaW50KSBQeV9VTklDT0RFX1RPTE9XRVIoY2gpOwogfQogCi0jZW5kaWYKLQogTE9DQUwoaW50KQogc3JlX2NhdGVnb3J5KFNSRV9DT0RFIGNhdGVnb3J5LCB1bnNpZ25lZCBpbnQgY2gpCiB7CkBAIC0yMDUsNyArMjAxLDYgQEAKICAgICBjYXNlIFNSRV9DQVRFR09SWV9MT0NfTk9UX1dPUkQ6CiAgICAgICAgIHJldHVybiAhU1JFX0xPQ19JU19XT1JEKGNoKTsKIAotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9ESUdJVDoKICAgICAgICAgcmV0dXJuIFNSRV9VTklfSVNfRElHSVQoY2gpOwogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfRElHSVQ6CkBAIC0yMjIsMjQgKzIxNyw2IEBACiAgICAgICAgIHJldHVybiBTUkVfVU5JX0lTX0xJTkVCUkVBSyhjaCk7CiAgICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUs6CiAgICAgICAgIHJldHVybiAhU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpOwotI2Vsc2UKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfRElHSVQ6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfRElHSVQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfRElHSVQ6Ci0gICAgICAgIHJldHVybiAhU1JFX0lTX0RJR0lUKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfU1BBQ0U6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfU1BBQ0UoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfU1BBQ0U6Ci0gICAgICAgIHJldHVybiAhU1JFX0lTX1NQQUNFKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfV09SRDoKLSAgICAgICAgcmV0dXJuIFNSRV9MT0NfSVNfV09SRChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX05PVF9XT1JEOgotICAgICAgICByZXR1cm4gIVNSRV9MT0NfSVNfV09SRChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX0xJTkVCUkVBSzoKLSAgICAgICAgcmV0dXJuIFNSRV9JU19MSU5FQlJFQUsoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLOgotICAgICAgICByZXR1cm4gIVNSRV9JU19MSU5FQlJFQUsoY2gpOwotI2VuZGlmCiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMjgwLDYgKzI1Nyw3IEBACiAvKiBnZW5lcmF0ZSA4LWJpdCB2ZXJzaW9uICovCiAKICNkZWZpbmUgU1JFX0NIQVIgdW5zaWduZWQgY2hhcgorI2RlZmluZSBTUkVfQ0hBUkdFVChzdGF0ZSwgYnVmLCBpbmRleCkgKCh1bnNpZ25lZCBjaGFyKilidWYpW2luZGV4XQogI2RlZmluZSBTUkVfQVQgc3JlX2F0CiAjZGVmaW5lIFNSRV9DT1VOVCBzcmVfY291bnQKICNkZWZpbmUgU1JFX0NIQVJTRVQgc3JlX2NoYXJzZXQKQEAgLTI4NywxNSArMjY1LDExIEBACiAjZGVmaW5lIFNSRV9NQVRDSCBzcmVfbWF0Y2gKICNkZWZpbmUgU1JFX01BVENIX0NPTlRFWFQgc3JlX21hdGNoX2NvbnRleHQKICNkZWZpbmUgU1JFX1NFQVJDSCBzcmVfc2VhcmNoCi0jZGVmaW5lIFNSRV9MSVRFUkFMX1RFTVBMQVRFIHNyZV9saXRlcmFsX3RlbXBsYXRlCi0KLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKIAogI2RlZmluZSBTUkVfUkVDVVJTSVZFCiAjaW5jbHVkZSAiX3NyZS5jIgogI3VuZGVmIFNSRV9SRUNVUlNJVkUKIAotI3VuZGVmIFNSRV9MSVRFUkFMX1RFTVBMQVRFCiAjdW5kZWYgU1JFX1NFQVJDSAogI3VuZGVmIFNSRV9NQVRDSAogI3VuZGVmIFNSRV9NQVRDSF9DT05URVhUCkBAIC0zMDQsMTAgKzI3OCwxNSBAQAogI3VuZGVmIFNSRV9DT1VOVAogI3VuZGVmIFNSRV9BVAogI3VuZGVmIFNSRV9DSEFSCisjdW5kZWYgU1JFX0NIQVJHRVQKIAotLyogZ2VuZXJhdGUgMTYtYml0IHVuaWNvZGUgdmVyc2lvbiAqLworLyogZ2VuZXJhdGUgOC8xNi8zMi1iaXQgdW5pY29kZSB2ZXJzaW9uICovCiAKLSNkZWZpbmUgU1JFX0NIQVIgUHlfVU5JQ09ERQorI2RlZmluZSBTUkVfQ0hBUiB2b2lkCisjZGVmaW5lIFNSRV9DSEFSR0VUKHN0YXRlLCBidWYsIGluZGV4KSBcCisgICAgKChzdGF0ZS0+Y2hhcnNpemU9PTEpID8gKChQeV9VQ1MxKilidWYpW2luZGV4XSA6IFwKKyAgICAgKHN0YXRlLT5jaGFyc2l6ZT09MikgPyAoKFB5X1VDUzIqKWJ1ZilbaW5kZXhdIDogXAorICAgICAoKFB5X1VDUzQqKWJ1ZilbaW5kZXhdKQogI2RlZmluZSBTUkVfQVQgc3JlX3VhdAogI2RlZmluZSBTUkVfQ09VTlQgc3JlX3Vjb3VudAogI2RlZmluZSBTUkVfQ0hBUlNFVCBzcmVfdWNoYXJzZXQKQEAgLTMxNSw4ICsyOTQsNiBAQAogI2RlZmluZSBTUkVfTUFUQ0ggc3JlX3VtYXRjaAogI2RlZmluZSBTUkVfTUFUQ0hfQ09OVEVYVCBzcmVfdW1hdGNoX2NvbnRleHQKICNkZWZpbmUgU1JFX1NFQVJDSCBzcmVfdXNlYXJjaAotI2RlZmluZSBTUkVfTElURVJBTF9URU1QTEFURSBzcmVfdWxpdGVyYWxfdGVtcGxhdGUKLSNlbmRpZgogCiAjZW5kaWYgLyogU1JFX1JFQ1VSU0lWRSAqLwogCkBAIC0zMjcsNyArMzA0LDcgQEAKICAgIHNldHRpbmdzICovCiAKIExPQ0FMKGludCkKLVNSRV9BVChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ0hBUiogcHRyLCBTUkVfQ09ERSBhdCkKK1NSRV9BVChTUkVfU1RBVEUqIHN0YXRlLCBjaGFyKiBwdHIsIFNSRV9DT0RFIGF0KQogewogICAgIC8qIGNoZWNrIGlmIHBvaW50ZXIgaXMgYXQgZ2l2ZW4gcG9zaXRpb24gKi8KIApAQCAtMzQxLDE2ICszMTgsMTYgQEAKIAogICAgIGNhc2UgU1JFX0FUX0JFR0lOTklOR19MSU5FOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5iZWdpbm5pbmcgfHwKLSAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIHB0clstMV0pKTsKKyAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkpOwogCiAgICAgY2FzZSBTUkVfQVRfRU5EOgotICAgICAgICByZXR1cm4gKCgodm9pZCopIChwdHIrMSkgPT0gc3RhdGUtPmVuZCAmJgotICAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIHB0clswXSkpIHx8CisgICAgICAgIHJldHVybiAoKCh2b2lkKikgKHB0citzdGF0ZS0+Y2hhcnNpemUpID09IHN0YXRlLT5lbmQgJiYKKyAgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpIHx8CiAgICAgICAgICAgICAgICAgKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORF9MSU5FOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQgfHwKLSAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIHB0clswXSkpOworICAgICAgICAgICAgICAgIFNSRV9JU19MSU5FQlJFQUsoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORF9TVFJJTkc6CiAgICAgICAgIHJldHVybiAoKHZvaWQqKSBwdHIgPT0gc3RhdGUtPmVuZCk7CkBAIC0zNTksNTcgKzMzNiw1NSBAQAogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9OT05fQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCA9PSB0aGF0cDsKIAogICAgIGNhc2UgU1JFX0FUX0xPQ19CT1VOREFSWToKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCAhPSB0aGF0cDsKIAogICAgIGNhc2UgU1JFX0FUX0xPQ19OT05fQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgPT0gdGhhdHA7CiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICBjYXNlIFNSRV9BVF9VTklfQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9VTklfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwID09IHRoYXRwOwotI2VuZGlmCiAKICAgICB9CiAKQEAgLTQ3Niw3ICs0NTEsNyBAQAogICAgICAgICAgICAgY291bnQgPSAqKHNldCsrKTsKIAogICAgICAgICAgICAgaWYgKHNpemVvZihTUkVfQ09ERSkgPT0gMikgewotICAgICAgICAgICAgICAgIGJsb2NrID0gKCh1bnNpZ25lZCBjaGFyKilzZXQpW2NoID4+IDhdOworICAgICAgICAgICAgICAgIGJsb2NrID0gKChjaGFyKilzZXQpW2NoID4+IDhdOwogICAgICAgICAgICAgICAgIHNldCArPSAxMjg7CiAgICAgICAgICAgICAgICAgaWYgKHNldFtibG9jayoxNiArICgoY2ggJiAyNTUpPj40KV0gJiAoMSA8PCAoY2ggJiAxNSkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2s7CkBAIC00ODYsNyArNDYxLDcgQEAKICAgICAgICAgICAgICAgICAvKiAhKGMgJiB+TikgPT0gKGMgPCBOKzEpIGZvciBhbnkgdW5zaWduZWQgYywgdGhpcyBhdm9pZHMKICAgICAgICAgICAgICAgICAgKiB3YXJuaW5ncyB3aGVuIGMncyB0eXBlIHN1cHBvcnRzIG9ubHkgbnVtYmVycyA8IE4rMSAqLwogICAgICAgICAgICAgICAgIGlmICghKGNoICYgfjY1NTM1KSkKLSAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSAoKHVuc2lnbmVkIGNoYXIqKXNldClbY2ggPj4gOF07CisgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gKChjaGFyKilzZXQpW2NoID4+IDhdOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSAtMTsKICAgICAgICAgICAgICAgICBzZXQgKz0gNjQ7CkBAIC01MTIsMjggKzQ4NywyOSBAQAogU1JFX0NPVU5UKFNSRV9TVEFURSogc3RhdGUsIFNSRV9DT0RFKiBwYXR0ZXJuLCBQeV9zc2l6ZV90IG1heGNvdW50KQogewogICAgIFNSRV9DT0RFIGNocjsKLSAgICBTUkVfQ0hBUiogcHRyID0gKFNSRV9DSEFSICopc3RhdGUtPnB0cjsKLSAgICBTUkVfQ0hBUiogZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBwdHIgPSAoY2hhciAqKXN0YXRlLT5wdHI7CisgICAgY2hhciogZW5kID0gKGNoYXIgKilzdGF0ZS0+ZW5kOwogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGFkanVzdCBlbmQgKi8KICAgICBpZiAobWF4Y291bnQgPCBlbmQgLSBwdHIgJiYgbWF4Y291bnQgIT0gNjU1MzUpCi0gICAgICAgIGVuZCA9IHB0ciArIG1heGNvdW50OworICAgICAgICBlbmQgPSBwdHIgKyBtYXhjb3VudCpzdGF0ZS0+Y2hhcnNpemU7CiAKICAgICBzd2l0Y2ggKHBhdHRlcm5bMF0pIHsKIAogICAgIGNhc2UgU1JFX09QX0lOOgogICAgICAgICAvKiByZXBlYXRlZCBzZXQgKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgSU5cbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIFNSRV9DSEFSU0VUKHBhdHRlcm4gKyAyLCAqcHRyKSkKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmCisgICAgICAgICAgICAgICBTUkVfQ0hBUlNFVChwYXR0ZXJuICsgMiwgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9BTlk6CiAgICAgICAgIC8qIHJlcGVhdGVkIGRvdCB3aWxkY2FyZC4gKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgQU5ZXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0lTX0xJTkVCUkVBSygqcHRyKSkKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkVfSVNfTElORUJSRUFLKFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSkKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfQU5ZX0FMTDoKQEAgLTU0NywzOCArNTIzLDM4IEBACiAgICAgICAgIC8qIHJlcGVhdGVkIGxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTElURVJBTCAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpICpwdHIgPT0gY2hyKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSA9PSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX0xJVEVSQUxfSUdOT1JFOgogICAgICAgICAvKiByZXBlYXRlZCBsaXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIExJVEVSQUxfSUdOT1JFICVkXG4iLCBwYXR0ZXJuLCBwdHIsIGNocikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKCpwdHIpID09IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA9PSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMOgogICAgICAgICAvKiByZXBlYXRlZCBub24tbGl0ZXJhbCAqLwogICAgICAgICBjaHIgPSBwYXR0ZXJuWzFdOwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBOT1RfTElURVJBTCAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpICpwdHIgIT0gY2hyKQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSAhPSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgLyogcmVwZWF0ZWQgbm9uLWxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTk9UX0xJVEVSQUxfSUdOT1JFICVkXG4iLCBwYXR0ZXJuLCBwdHIsIGNocikpOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKCpwdHIpICE9IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSAhPSBjaHIpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIC8qIHJlcGVhdGVkIHNpbmdsZSBjaGFyYWN0ZXIgcGF0dGVybiAqLwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBTVUJQQVRURVJOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKChTUkVfQ0hBUiopIHN0YXRlLT5wdHIgPCBlbmQpIHsKKyAgICAgICAgd2hpbGUgKChjaGFyKikgc3RhdGUtPnB0ciA8IGVuZCkgewogICAgICAgICAgICAgaSA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybik7CiAgICAgICAgICAgICBpZiAoaSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CkBAIC01ODYsMTIgKzU2MiwxMiBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UICVkXG4iLCBwYXR0ZXJuLCBwdHIsCi0gICAgICAgICAgICAgICAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyIC0gcHRyKSk7Ci0gICAgICAgIHJldHVybiAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyIC0gcHRyOworICAgICAgICAgICAgICAgKChjaGFyKilzdGF0ZS0+cHRyIC0gcHRyKS9zdGF0ZS0+Y2hhcnNpemUpKTsKKyAgICAgICAgcmV0dXJuICgoY2hhciopc3RhdGUtPnB0ciAtIHB0cikvc3RhdGUtPmNoYXJzaXplOwogICAgIH0KIAotICAgIFRSQUNFKCgifCVwfCVwfENPVU5UICVkXG4iLCBwYXR0ZXJuLCBwdHIsIHB0ciAtIChTUkVfQ0hBUiopIHN0YXRlLT5wdHIpKTsKLSAgICByZXR1cm4gcHRyIC0gKFNSRV9DSEFSKikgc3RhdGUtPnB0cjsKKyAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCAlZFxuIiwgcGF0dGVybiwgcHRyLCAocHRyIC0gKGNoYXIqKSBzdGF0ZS0+cHRyKS9zdGF0ZS0+Y2hhcnNpemUpKTsKKyAgICByZXR1cm4gKHB0ciAtIChjaGFyKikgc3RhdGUtPnB0cikvc3RhdGUtPmNoYXJzaXplOwogfQogCiAjaWYgMCAvKiBub3QgdXNlZCBpbiB0aGlzIHJlbGVhc2UgKi8KQEAgLTYwMiw4ICs1NzgsOCBAQAogICAgICAgIHJldHVybnMgdGhlIG51bWJlciBvZiBTUkVfQ09ERSBvYmplY3RzIHRvIHNraXAgaWYgc3VjY2Vzc2Z1bCwgMAogICAgICAgIGlmIG5vIG1hdGNoICovCiAKLSAgICBTUkVfQ0hBUiogZW5kID0gc3RhdGUtPmVuZDsKLSAgICBTUkVfQ0hBUiogcHRyID0gc3RhdGUtPnB0cjsKKyAgICBjaGFyKiBlbmQgPSBzdGF0ZS0+ZW5kOworICAgIGNoYXIqIHB0ciA9IHN0YXRlLT5wdHI7CiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgLyogY2hlY2sgbWluaW1hbCBsZW5ndGggKi8KQEAgLTYxNCw3ICs1OTAsNyBAQAogICAgIGlmIChwYXR0ZXJuWzJdICYgU1JFX0lORk9fUFJFRklYICYmIHBhdHRlcm5bNV0gPiAxKSB7CiAgICAgICAgIC8qIDxsZW5ndGg+IDxza2lwPiA8cHJlZml4IGRhdGE+IDxvdmVybGFwIGRhdGE+ICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwYXR0ZXJuWzVdOyBpKyspCi0gICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBwdHJbaV0gIT0gcGF0dGVybls3ICsgaV0pCisgICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCBpKSAhPSBwYXR0ZXJuWzcgKyBpXSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHBhdHRlcm5bMF0gKyAyICogcGF0dGVybls2XTsKICAgICB9CkBAIC03ODMsNyArNzU5LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV9zc2l6ZV90IGxhc3RfY3R4X3BvczsKICAgICBQeV9zc2l6ZV90IGp1bXA7Ci0gICAgU1JFX0NIQVIqIHB0cjsKKyAgICBjaGFyKiBwdHI7CiAgICAgU1JFX0NPREUqIHBhdHRlcm47CiAgICAgUHlfc3NpemVfdCBjb3VudDsKICAgICBQeV9zc2l6ZV90IGxhc3RtYXJrOwpAQCAtNzk5LDcgKzc3NSw3IEBACiBMT0NBTChQeV9zc2l6ZV90KQogU1JFX01BVENIKFNSRV9TVEFURSogc3RhdGUsIFNSRV9DT0RFKiBwYXR0ZXJuKQogewotICAgIFNSRV9DSEFSKiBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgIGNoYXIqIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgIFB5X3NzaXplX3QgYWxsb2NfcG9zLCBjdHhfcG9zID0gLTE7CiAgICAgUHlfc3NpemVfdCBpLCByZXQgPSAwOwogICAgIFB5X3NzaXplX3QganVtcDsKQEAgLTgxOCwxMiArNzk0LDEyIEBACiAKIGVudHJhbmNlOgogCi0gICAgY3R4LT5wdHIgPSAoU1JFX0NIQVIgKilzdGF0ZS0+cHRyOworICAgIGN0eC0+cHRyID0gKGNoYXIgKilzdGF0ZS0+cHRyOwogCiAgICAgaWYgKGN0eC0+cGF0dGVyblswXSA9PSBTUkVfT1BfSU5GTykgewogICAgICAgICAvKiBvcHRpbWl6YXRpb24gaW5mbyBibG9jayAqLwogICAgICAgICAvKiA8SU5GTz4gPDE9c2tpcD4gPDI9ZmxhZ3M+IDwzPW1pbj4gLi4uICovCi0gICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgeworICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChlbmQgLSBjdHgtPnB0cikvc3RhdGUtPmNoYXJzaXplIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CiAgICAgICAgICAgICBUUkFDRSgoInJlamVjdCAoZ290ICVkIGNoYXJzLCBuZWVkICVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAoZW5kIC0gY3R4LT5wdHIpLCBjdHgtPnBhdHRlcm5bM10pKTsKICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwpAQCAtODY1LDEwICs4NDEsMTAgQEAKICAgICAgICAgICAgIC8qIDxMSVRFUkFMPiA8Y29kZT4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfExJVEVSQUwgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIGN0eC0+cHRyWzBdICE9IGN0eC0+cGF0dGVyblswXSkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApICE9IGN0eC0+cGF0dGVyblswXSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMOgpAQCAtODc2LDEwICs4NTIsMTAgQEAKICAgICAgICAgICAgIC8qIDxOT1RfTElURVJBTD4gPGNvZGU+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxOT1RfTElURVJBTCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IChTUkVfQ09ERSkgY3R4LT5wdHJbMF0gPT0gY3R4LT5wYXR0ZXJuWzBdKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgPT0gY3R4LT5wYXR0ZXJuWzBdKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfU1VDQ0VTUzoKQEAgLTkwMiwxOSArODc4LDE5IEBACiAgICAgICAgICAgICAvKiA8Q0FURUdPUlk+IDxjb2RlPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q0FURUdPUlkgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhc3JlX2NhdGVnb3J5KGN0eC0+cGF0dGVyblswXSwgY3R4LT5wdHJbMF0pKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhc3JlX2NhdGVnb3J5KGN0eC0+cGF0dGVyblswXSwgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9BTlk6CiAgICAgICAgICAgICAvKiBtYXRjaCBhbnl0aGluZyAoZXhjZXB0IGEgbmV3bGluZSkgKi8KICAgICAgICAgICAgIC8qIDxBTlk+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBTllcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgU1JFX0lTX0xJTkVCUkVBSyhjdHgtPnB0clswXSkpCi0gICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgU1JFX0lTX0xJTkVCUkVBSyhTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9BTllfQUxMOgpAQCAtOTIzLDQ3ICs4OTksNDcgQEAKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFOWV9BTExcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfSU46CiAgICAgICAgICAgICAvKiBtYXRjaCBzZXQgbWVtYmVyIChvciBub25fbWVtYmVyKSAqLwogICAgICAgICAgICAgLyogPElOPiA8c2tpcD4gPHNldD4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfElOXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4gKyAxLCAqY3R4LT5wdHIpKQotICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOworICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDEsIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfTElURVJBTF9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxMSVRFUkFMX0lHTk9SRSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLCBjdHgtPnBhdHRlcm5bMF0pKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSAhPSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCisgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpICE9IHN0YXRlLT5sb3dlcigqY3R4LT5wYXR0ZXJuKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX05PVF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfE5PVF9MSVRFUkFMX0lHTk9SRSAlZFxuIiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLCAqY3R4LT5wYXR0ZXJuKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgPT0gc3RhdGUtPmxvd2VyKCpjdHgtPnBhdHRlcm4pKQorICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSA9PSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9JTl9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTl9JR05PUkVcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQKICAgICAgICAgICAgICAgICB8fCAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSlzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuICs9IGN0eC0+cGF0dGVyblswXTsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9KVU1QOgpAQCAtOTg2LDExICs5NjIsMTEgQEAKICAgICAgICAgICAgIGZvciAoOyBjdHgtPnBhdHRlcm5bMF07IGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF0pIHsKICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzFdID09IFNSRV9PUF9MSVRFUkFMICYmCiAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICAgICAgIChTUkVfQ09ERSkgKmN0eC0+cHRyICE9IGN0eC0+cGF0dGVyblsyXSkpCisgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgIT0gY3R4LT5wYXR0ZXJuWzJdKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVyblsxXSA9PSBTUkVfT1BfSU4gJiYKICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDMsIChTUkVfQ09ERSkgKmN0eC0+cHRyKSkpCisgICAgICAgICAgICAgICAgICAgICAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuICsgMywgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0cjsKICAgICAgICAgICAgICAgICBET19KVU1QKEpVTVBfQlJBTkNILCBqdW1wX2JyYW5jaCwgY3R4LT5wYXR0ZXJuKzEpOwpAQCAtMTAyMSw3ICs5OTcsNyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8UkVQRUFUX09ORSAlZCAlZFxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0ciwKICAgICAgICAgICAgICAgICAgICBjdHgtPnBhdHRlcm5bMV0sIGN0eC0+cGF0dGVyblsyXSkpOwogCi0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgKyBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV0gPiBlbmQpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7IC8qIGNhbm5vdCBtYXRjaCAqLwogCiAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHI7CkBAIC0xMDMwLDcgKzEwMDYsNyBAQAogICAgICAgICAgICAgUkVUVVJOX09OX0VSUk9SKHJldCk7CiAgICAgICAgICAgICBEQVRBX0xPT0tVUF9BVChTUkVfTUFUQ0hfQ09OVEVYVCwgY3R4LCBjdHhfcG9zKTsKICAgICAgICAgICAgIGN0eC0+Y291bnQgPSByZXQ7Ci0gICAgICAgICAgICBjdHgtPnB0ciArPSBjdHgtPmNvdW50OworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5jb3VudDsKIAogICAgICAgICAgICAgLyogd2hlbiB3ZSBhcnJpdmUgaGVyZSwgY291bnQgY29udGFpbnMgdGhlIG51bWJlciBvZgogICAgICAgICAgICAgICAgbWF0Y2hlcywgYW5kIGN0eC0+cHRyIHBvaW50cyB0byB0aGUgdGFpbCBvZiB0aGUgdGFyZ2V0CkBAIC0xMDU0LDggKzEwMzAsOSBAQAogICAgICAgICAgICAgICAgIGN0eC0+dS5jaHIgPSBjdHgtPnBhdHRlcm5bY3R4LT5wYXR0ZXJuWzBdKzFdOwogICAgICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN0eC0+Y291bnQgPj0gKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblsxXSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fCAqY3R4LT5wdHIgIT0gY3R4LT51LmNocikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBjdHgtPnUuY2hyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPmNvdW50IDwgKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblsxXSkKQEAgLTEwNzAsNyArMTA0Nyw3IEBACiAKICAgICAgICAgICAgICAgICAgICAgTEFTVE1BUktfUkVTVE9SRSgpOwogCi0gICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyIC09IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMTA4NCw3ICsxMDYxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9PTl9FUlJPUihyZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1NVQ0NFU1M7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHItLTsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgLT0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTA0LDcgKzEwODEsNyBAQAogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8TUlOX1JFUEVBVF9PTkUgJWQgJWRcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIsCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wYXR0ZXJuWzFdLCBjdHgtPnBhdHRlcm5bMl0pKTsKIAotICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOyAvKiBjYW5ub3QgbWF0Y2ggKi8KIAogICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwpAQCAtMTEyMSw3ICsxMDk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgLyogYWR2YW5jZSBwYXN0IG1pbmltdW0gbWF0Y2hlcyBvZiByZXBlYXQgKi8KICAgICAgICAgICAgICAgICBjdHgtPmNvdW50ID0gcmV0OwotICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IGN0eC0+Y291bnQ7CisgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5jb3VudDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVybltjdHgtPnBhdHRlcm5bMF1dID09IFNSRV9PUF9TVUNDRVNTKSB7CkBAIC0xMTQ4LDcgKzExMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJldCA9PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICBjdHgtPmNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMzIwLDE0ICsxMjk3LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKGdyb3VwcmVmID49IHN0YXRlLT5sYXN0bWFyaykgewogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogcCA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmXTsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVIqIGUgPSAoU1JFX0NIQVIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogcCA9IChjaGFyKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBlID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwIHx8ICFlIHx8IGUgPCBwKQogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAqY3R4LT5wdHIgIT0gKnApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBTUkVfQ0hBUkdFVChzdGF0ZSwgcCwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwKys7IGN0eC0+cHRyKys7CisgICAgICAgICAgICAgICAgICAgICAgICBwICs9IHN0YXRlLT5jaGFyc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEzNDQsMTUgKzEzMjMsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoZ3JvdXByZWYgPj0gc3RhdGUtPmxhc3RtYXJrKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSKiBwID0gKFNSRV9DSEFSKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOwotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogZSA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBwID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZl07CisgICAgICAgICAgICAgICAgICAgIGNoYXIqIGUgPSAoY2hhciopIHN0YXRlLT5tYXJrW2dyb3VwcmVmKzFdOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXAgfHwgIWUgfHwgZSA8IHApCiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgIT0gc3RhdGUtPmxvd2VyKCpwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkgIT0gc3RhdGUtPmxvd2VyKCpwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHArKzsgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTEzODYsNyArMTM2Niw3IEBACiAgICAgICAgICAgICAvKiA8QVNTRVJUPiA8c2tpcD4gPGJhY2s+IDxwYXR0ZXJuPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8QVNTRVJUICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsIGN0eC0+cGF0dGVyblsxXSkpOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gY3R4LT5wYXR0ZXJuWzFdOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdOwogICAgICAgICAgICAgaWYgKHN0YXRlLT5wdHIgPCBzdGF0ZS0+YmVnaW5uaW5nKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgRE9fSlVNUChKVU1QX0FTU0VSVCwganVtcF9hc3NlcnQsIGN0eC0+cGF0dGVybisyKTsKQEAgLTEzOTksNyArMTM3OSw3IEBACiAgICAgICAgICAgICAvKiA8QVNTRVJUX05PVD4gPHNraXA+IDxiYWNrPiA8cGF0dGVybj4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFTU0VSVF9OT1QgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgY3R4LT5wYXR0ZXJuWzFdKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHIgLSBjdHgtPnBhdHRlcm5bMV07CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHIgLSBzdGF0ZS0+Y2hhcnNpemUgKiBjdHgtPnBhdHRlcm5bMV07CiAgICAgICAgICAgICBpZiAoc3RhdGUtPnB0ciA+PSBzdGF0ZS0+YmVnaW5uaW5nKSB7CiAgICAgICAgICAgICAgICAgRE9fSlVNUChKVU1QX0FTU0VSVF9OT1QsIGp1bXBfYXNzZXJ0X25vdCwgY3R4LT5wYXR0ZXJuKzIpOwogICAgICAgICAgICAgICAgIGlmIChyZXQpIHsKQEAgLTE0ODEsOCArMTQ2MSw4IEBACiBMT0NBTChQeV9zc2l6ZV90KQogU1JFX1NFQVJDSChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybikKIHsKLSAgICBTUkVfQ0hBUiogcHRyID0gKFNSRV9DSEFSICopc3RhdGUtPnN0YXJ0OwotICAgIFNSRV9DSEFSKiBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgIGNoYXIqIHB0ciA9IChjaGFyKilzdGF0ZS0+c3RhcnQ7CisgICAgY2hhciogZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgUHlfc3NpemVfdCBzdGF0dXMgPSAwOwogICAgIFB5X3NzaXplX3QgcHJlZml4X2xlbiA9IDA7CiAgICAgUHlfc3NpemVfdCBwcmVmaXhfc2tpcCA9IDA7CkBAIC0xNTAwLDkgKzE0ODAsOSBAQAogICAgICAgICBpZiAocGF0dGVyblszXSA+IDEpIHsKICAgICAgICAgICAgIC8qIGFkanVzdCBlbmQgcG9pbnQgKGJ1dCBtYWtlIHN1cmUgd2UgbGVhdmUgYXQgbGVhc3Qgb25lCiAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgaW4gdGhlcmUsIHNvIGxpdGVyYWwgc2VhcmNoIHdpbGwgd29yaykgKi8KLSAgICAgICAgICAgIGVuZCAtPSBwYXR0ZXJuWzNdLTE7CisgICAgICAgICAgICBlbmQgLT0gKHBhdHRlcm5bM10tMSkgKiBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBpZiAoZW5kIDw9IHB0cikKLSAgICAgICAgICAgICAgICBlbmQgPSBwdHIrMTsKKyAgICAgICAgICAgICAgICBlbmQgPSBwdHIgKyBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19QUkVGSVgpIHsKQEAgLTE1MjgsMTAgKzE1MDgsMTAgQEAKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGtub3duIHByZWZpeC4gIHVzZSB0aGUgb3ZlcmxhcAogICAgICAgICAgICB0YWJsZSB0byBza2lwIGZvcndhcmQgYXMgZmFzdCBhcyB3ZSBwb3NzaWJseSBjYW4gKi8KICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgZW5kID0gKGNoYXIgKilzdGF0ZS0+ZW5kOwogICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgcHRyWzBdICE9IHByZWZpeFtpXSkgeworICAgICAgICAgICAgICAgIGlmICgoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApICE9IHByZWZpeFtpXSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTU0MCw4ICsxNTIwLDggQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKCsraSA9PSBwcmVmaXhfbGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIHBvdGVudGlhbCBtYXRjaCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIFNDQU5cbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyICsgMSAtIHByZWZpeF9sZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyICsgMSAtIHByZWZpeF9sZW4gKyBwcmVmaXhfc2tpcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0ciAtIChwcmVmaXhfbGVuIC0gMSkgKiBzdGF0ZS0+Y2hhcnNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyIC0gKHByZWZpeF9sZW4gLSBwcmVmaXhfc2tpcCAtIDEpICogc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuICsgMipwcmVmaXhfc2tpcCk7CkBAIC0xNTUzLDcgKzE1MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTU2MywxNSArMTU0MywxNiBAQAogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIuICB0aGlzIGlzIHVzZWQKICAgICAgICAgICAgZm9yIHNob3J0IHByZWZpeGVzLCBhbmQgaWYgZmFzdCBzZWFyY2ggaXMgZGlzYWJsZWQgKi8KICAgICAgICAgU1JFX0NPREUgY2hyID0gcGF0dGVyblsxXTsKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBwdHJbMF0gIT0gY2hyKQotICAgICAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApICE9IGNocikKKyAgICAgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgaWYgKHB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7CiAgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gKytwdHI7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0cjsKICAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybiArIDIpOwpAQCAtMTU4MCwxMCArMTU2MSwxMCBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjaGFyc2V0KSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBjaGFyYWN0ZXIgZnJvbSBhIGtub3duIHNldCAqLwotICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICBlbmQgPSAoY2hhciopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0NIQVJTRVQoY2hhcnNldCwgcHRyWzBdKSkKLSAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9DSEFSU0VUKGNoYXJzZXQsIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSkKKyAgICAgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgaWYgKHB0ciA+PSBlbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggQ0hBUlNFVFxuIiwgcGF0dGVybiwgcHRyKSk7CkBAIC0xNTkyLDEzICsxNTczLDE0IEBACiAgICAgICAgICAgICBzdGF0dXMgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4pOwogICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIC8qIGdlbmVyYWwgY2FzZSAqLwogICAgICAgICB3aGlsZSAocHRyIDw9IGVuZCkgewogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHN0YXRlLT5wdHIgPSBwdHIrKzsKKyAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHN0YXRlLT5wdHIgPSBwdHI7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE2MDcsMTYgKzE1ODksNiBAQAogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLUxPQ0FMKGludCkKLVNSRV9MSVRFUkFMX1RFTVBMQVRFKFNSRV9DSEFSKiBwdHIsIFB5X3NzaXplX3QgbGVuKQotewotICAgIC8qIGNoZWNrIGlmIGdpdmVuIHN0cmluZyBpcyBhIGxpdGVyYWwgdGVtcGxhdGUgKGkuZS4gbm8gZXNjYXBlcykgKi8KLSAgICB3aGlsZSAobGVuLS0gPiAwKQotICAgICAgICBpZiAoKnB0cisrID09ICdcXCcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQogI2lmICFkZWZpbmVkKFNSRV9SRUNVUlNJVkUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0xNjI0LDcgKzE1OTYsMjQgQEAKIAogLyogc2VlIHNyZS5oIGZvciBvYmplY3QgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgUHlPYmplY3QqcGF0dGVybl9uZXdfbWF0Y2goUGF0dGVybk9iamVjdCosIFNSRV9TVEFURSosIGludCk7Ci1zdGF0aWMgUHlPYmplY3QqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QqLCBQeU9iamVjdCopOworc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiwgUHlPYmplY3QqLCBQeU9iamVjdCoga3cpOworCitzdGF0aWMgaW50CitzcmVfbGl0ZXJhbF90ZW1wbGF0ZShpbnQgY2hhcnNpemUsIGNoYXIqIHB0ciwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgLyogY2hlY2sgaWYgZ2l2ZW4gc3RyaW5nIGlzIGEgbGl0ZXJhbCB0ZW1wbGF0ZSAoaS5lLiBubyBlc2NhcGVzKSAqLworICAgIHN0cnVjdCB7CisgICAgICAgIGludCBjaGFyc2l6ZTsKKyAgICB9IHN0YXRlID0geworICAgICAgICBjaGFyc2l6ZQorICAgIH07CisgICAgd2hpbGUgKGxlbi0tID4gMCkgeworICAgICAgICBpZiAoU1JFX0NIQVJHRVQoKCZzdGF0ZSksIHB0ciwgMCkgPT0gJ1xcJykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBwdHIgKz0gY2hhcnNpemU7CisgICAgfQorICAgIHJldHVybiAxOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogc3JlX2NvZGVzaXplKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQpAQCAtMTY0MSwxMSArMTYzMCw3IEBACiAgICAgaWYgKGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKQogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcl9sb2NhbGUoY2hhcmFjdGVyKSk7CiAgICAgaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfdW5pY29kZShjaGFyYWN0ZXIpKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpKTsKLSNlbmRpZgogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyKGNoYXJhY3RlcikpOwogfQogCkBAIC0xNjY0LDcgKzE2NDksOSBAQAogfQogCiBzdGF0aWMgdm9pZCoKLWdldHN0cmluZyhQeU9iamVjdCogc3RyaW5nLCBQeV9zc2l6ZV90KiBwX2xlbmd0aCwgaW50KiBwX2NoYXJzaXplLCBQeV9idWZmZXIgKnZpZXcpCitnZXRzdHJpbmcoUHlPYmplY3QqIHN0cmluZywgUHlfc3NpemVfdCogcF9sZW5ndGgsCisgICAgICAgICAgaW50KiBwX2xvZ2ljYWxfY2hhcnNpemUsIGludCogcF9jaGFyc2l6ZSwKKyAgICAgICAgICBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgLyogZ2l2ZW4gYSBweXRob24gb2JqZWN0LCByZXR1cm4gYSBkYXRhIHBvaW50ZXIsIGEgbGVuZ3RoIChpbgogICAgICAgIGNoYXJhY3RlcnMpLCBhbmQgYSBjaGFyYWN0ZXIgc2l6ZS4gIHJldHVybiBOVUxMIGlmIHRoZSBvYmplY3QKQEAgLTE2NzgsMTMgKzE2NjUsMTYgQEAKICAgICAvKiBVbmljb2RlIG9iamVjdHMgZG8gbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBBUEkuIFNvLCBnZXQgdGhlIGRhdGEKICAgICAgICBkaXJlY3RseSBpbnN0ZWFkLiAqLwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSkgewotICAgICAgICBwdHIgPSAodm9pZCAqKVB5VW5pY29kZV9BU19EQVRBKHN0cmluZyk7Ci0gICAgICAgICpwX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfU0laRShzdHJpbmcpOwotICAgICAgICAqcF9jaGFyc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHB0ciA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgICAgICpwX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgICAgICpwX2NoYXJzaXplID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICAgICAgKnBfbG9naWNhbF9jaGFyc2l6ZSA9IDQ7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCi0gICAgLyogZ2V0IHBvaW50ZXIgdG8gc3RyaW5nIGJ1ZmZlciAqLworICAgIC8qIGdldCBwb2ludGVyIHRvIGJ5dGUgc3RyaW5nIGJ1ZmZlciAqLwogICAgIHZpZXctPmxlbiA9IC0xOwogICAgIGJ1ZmZlciA9IFB5X1RZUEUoc3RyaW5nKS0+dHBfYXNfYnVmZmVyOwogICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPmJmX2dldGJ1ZmZlciB8fApAQCAtMTcwNywxMCArMTY5Nyw2IEBACiAKICAgICBpZiAoUHlCeXRlc19DaGVjayhzdHJpbmcpIHx8IGJ5dGVzID09IHNpemUpCiAgICAgICAgIGNoYXJzaXplID0gMTsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKLSAgICBlbHNlIGlmIChieXRlcyA9PSAoUHlfc3NpemVfdCkgKHNpemUgKiBzaXplb2YoUHlfVU5JQ09ERSkpKQotICAgICAgICBjaGFyc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKTsKLSNlbmRpZgogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnVmZmVyIHNpemUgbWlzbWF0Y2giKTsKICAgICAgICAgZ290byBlcnI7CkBAIC0xNzE4LDYgKzE3MDQsNyBAQAogCiAgICAgKnBfbGVuZ3RoID0gc2l6ZTsKICAgICAqcF9jaGFyc2l6ZSA9IGNoYXJzaXplOworICAgICpwX2xvZ2ljYWxfY2hhcnNpemUgPSBjaGFyc2l6ZTsKIAogICAgIGlmIChwdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNzM4LDcgKzE3MjUsNyBAQAogICAgIC8qIHByZXBhcmUgc3RhdGUgb2JqZWN0ICovCiAKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBpbnQgY2hhcnNpemU7CisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemUsIGNoYXJzaXplOwogICAgIHZvaWQqIHB0cjsKIAogICAgIG1lbXNldChzdGF0ZSwgMCwgc2l6ZW9mKFNSRV9TVEFURSkpOwpAQCAtMTc0NywxOCArMTczNCwxOCBAQAogICAgIHN0YXRlLT5sYXN0aW5kZXggPSAtMTsKIAogICAgIHN0YXRlLT5idWZmZXIuYnVmID0gTlVMTDsKLSAgICBwdHIgPSBnZXRzdHJpbmcoc3RyaW5nLCAmbGVuZ3RoLCAmY2hhcnNpemUsICZzdGF0ZS0+YnVmZmVyKTsKKyAgICBwdHIgPSBnZXRzdHJpbmcoc3RyaW5nLCAmbGVuZ3RoLCAmbG9naWNhbF9jaGFyc2l6ZSwgJmNoYXJzaXplLCAmc3RhdGUtPmJ1ZmZlcik7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIGdvdG8gZXJyOwogCi0gICAgaWYgKGNoYXJzaXplID09IDEgJiYgcGF0dGVybi0+Y2hhcnNpemUgPiAxKSB7CisgICAgaWYgKGxvZ2ljYWxfY2hhcnNpemUgPT0gMSAmJiBwYXR0ZXJuLT5sb2dpY2FsX2NoYXJzaXplID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotCQkJImNhbid0IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgYSBzdHJpbmcgcGF0dGVybiBvbiBhIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KLSAgICBpZiAoY2hhcnNpemUgPiAxICYmIHBhdHRlcm4tPmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAobG9naWNhbF9jaGFyc2l6ZSA+IDEgJiYgcGF0dGVybi0+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0JCQkiY2FuJ3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIGJ5dGVzIHBhdHRlcm4gb24gYSBzdHJpbmctbGlrZSBvYmplY3QiKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQogCkBAIC0xNzczLDYgKzE3NjAsNyBAQAogICAgIGVsc2UgaWYgKGVuZCA+IGxlbmd0aCkKICAgICAgICAgZW5kID0gbGVuZ3RoOwogCisgICAgc3RhdGUtPmxvZ2ljYWxfY2hhcnNpemUgPSBsb2dpY2FsX2NoYXJzaXplOwogICAgIHN0YXRlLT5jaGFyc2l6ZSA9IGNoYXJzaXplOwogCiAgICAgc3RhdGUtPmJlZ2lubmluZyA9IHB0cjsKQEAgLTE3ODgsMTEgKzE3NzYsNyBAQAogICAgIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKICAgICBlbHNlIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl91bmljb2RlOwotI2Vsc2UKLSAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKLSNlbmRpZgogICAgIGVsc2UKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyOwogCkBAIC0xODk5LDEyICsxODgzLDEwIEBACiAKICAgICBUUkFDRSgoInwlcHwlcHxNQVRDSFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKIAotICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfbWF0Y2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91bWF0Y2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgfQogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwpAQCAtMTkzNiwxMiArMTkxOCwxMCBAQAogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwogCi0gICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKQEAgLTIwODMsMTYgKzIwNjMsMTQgQEAKIAogICAgICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKIAotICAgICAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgICAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgICAgICB9CiAKLQlpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLQkgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGlmIChzdGF0dXMgPD0gMCkgewogICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAwKQpAQCAtMjE1NCwxMyArMjEzMiwxMyBAQAogCiAjaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMjAyMDAwMAogc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncykKK3BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKIHsKICAgICBQeU9iamVjdCogc2Nhbm5lcjsKICAgICBQeU9iamVjdCogc2VhcmNoOwogICAgIFB5T2JqZWN0KiBpdGVyYXRvcjsKIAotICAgIHNjYW5uZXIgPSBwYXR0ZXJuX3NjYW5uZXIocGF0dGVybiwgYXJncyk7CisgICAgc2Nhbm5lciA9IHBhdHRlcm5fc2Nhbm5lcihwYXR0ZXJuLCBhcmdzLCBrdyk7CiAgICAgaWYgKCFzY2FubmVyKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjIxMywxNiArMjE5MSwxNCBAQAogCiAgICAgICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwogCi0gICAgICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgICAgIH0KIAotCWlmIChQeUVycl9PY2N1cnJlZCgpKQotCSAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgaWYgKHN0YXR1cyA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDApCkBAIC0yMzAzLDcgKzIyNzksNyBAQAogICAgIGludCBzdGF0dXM7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIFB5X3NzaXplX3QgaSwgYiwgZTsKLSAgICBpbnQgYmludDsKKyAgICBpbnQgbG9naWNhbF9jaGFyc2l6ZSwgY2hhcnNpemU7CiAgICAgaW50IGZpbHRlcl9pc19jYWxsYWJsZTsKICAgICBQeV9idWZmZXIgdmlldzsKIApAQCAtMjMxNiwxNiArMjI5MiwxMCBAQAogICAgICAgICAvKiBpZiBub3QgY2FsbGFibGUsIGNoZWNrIGlmIGl0J3MgYSBsaXRlcmFsIHN0cmluZyAqLwogICAgICAgICBpbnQgbGl0ZXJhbDsKICAgICAgICAgdmlldy5idWYgPSBOVUxMOwotICAgICAgICBwdHIgPSBnZXRzdHJpbmcocHRlbXBsYXRlLCAmbiwgJmJpbnQsICZ2aWV3KTsKLSAgICAgICAgYiA9IGJpbnQ7CisgICAgICAgIHB0ciA9IGdldHN0cmluZyhwdGVtcGxhdGUsICZuLCAmbG9naWNhbF9jaGFyc2l6ZSwgJmNoYXJzaXplLCAmdmlldyk7CisgICAgICAgIGIgPSBjaGFyc2l6ZTsKICAgICAgICAgaWYgKHB0cikgewotICAgICAgICAgICAgaWYgKGIgPT0gMSkgewotCQkgICAgbGl0ZXJhbCA9IHNyZV9saXRlcmFsX3RlbXBsYXRlKCh1bnNpZ25lZCBjaGFyICopcHRyLCBuKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0JCSAgICBsaXRlcmFsID0gc3JlX3VsaXRlcmFsX3RlbXBsYXRlKChQeV9VTklDT0RFICopcHRyLCBuKTsKLSNlbmRpZgotICAgICAgICAgICAgfQorICAgICAgICAgICAgbGl0ZXJhbCA9IHNyZV9saXRlcmFsX3RlbXBsYXRlKGIsIHB0ciwgbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgbGl0ZXJhbCA9IDA7CkBAIC0yMzY5LDE2ICsyMzM5LDE0IEBACiAKICAgICAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CiAKLSAgICAgICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICAgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICAgICAgfQogCi0JaWYgKFB5RXJyX09jY3VycmVkKCkpCi0JICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBpZiAoc3RhdHVzIDw9IDApIHsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMCkKQEAgLTI1OTYsMjIgKzI1NjQsMjIgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHBhdHRlcm5fbWV0aG9kc1tdID0gewogICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fbWF0Y2hfZG9jfSwKKyAgICAgICAgcGF0dGVybl9tYXRjaF9kb2N9LAogICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NlYXJjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9zZWFyY2hfZG9jfSwKKyAgICAgICAgcGF0dGVybl9zZWFyY2hfZG9jfSwKICAgICB7InN1YiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc3ViX2RvY30sCisgICAgICAgIHBhdHRlcm5fc3ViX2RvY30sCiAgICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc3Vibl9kb2N9LAorICAgICAgICBwYXR0ZXJuX3N1Ym5fZG9jfSwKICAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3NwbGl0X2RvY30sCisgICAgICAgIHBhdHRlcm5fc3BsaXRfZG9jfSwKICAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9maW5kYWxsX2RvY30sCisgICAgICAgIHBhdHRlcm5fZmluZGFsbF9kb2N9LAogI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDIwMjAwMDAKLSAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1MsCi0JcGF0dGVybl9maW5kaXRlcl9kb2N9LAorICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZmluZGl0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICBwYXR0ZXJuX2ZpbmRpdGVyX2RvY30sCiAjZW5kaWYKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAogICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fY29weSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2RlZXBjb3B5LCBNRVRIX099LAogICAgIHtOVUxMLCBOVUxMfQpAQCAtMjYzMCwzMSArMjU5OCwzMSBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1BhdHRlcm4iLAogICAgIHNpemVvZihQYXR0ZXJuT2JqZWN0KSwgc2l6ZW9mKFNSRV9DT0RFKSwKLSAgICAoZGVzdHJ1Y3RvcilwYXR0ZXJuX2RlYWxsb2MsCS8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkJLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJCS8qIHRwX3JlcHIgKi8KLSAgICAwLAkJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLAkJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJCS8qIHRwX3N0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkJLyogdHBfZmxhZ3MgKi8KLSAgICBwYXR0ZXJuX2RvYywJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkJLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksCS8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBwYXR0ZXJuX21ldGhvZHMsCQkJLyogdHBfbWV0aG9kcyAqLwotICAgIHBhdHRlcm5fbWVtYmVycywJCQkvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBwYXR0ZXJuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgcGF0dGVybl9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogfTsKIAogc3RhdGljIGludCBfdmFsaWRhdGUoUGF0dGVybk9iamVjdCAqc2VsZik7IC8qIEZvcndhcmQgKi8KQEAgLTI3MDgsMTEgKzI2NzYsMTQgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHBhdHRlcm4gPT0gUHlfTm9uZSkKKyAgICBpZiAocGF0dGVybiA9PSBQeV9Ob25lKSB7CisgICAgICAgIHNlbGYtPmxvZ2ljYWxfY2hhcnNpemUgPSAtMTsKICAgICAgICAgc2VsZi0+Y2hhcnNpemUgPSAtMTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X3NzaXplX3QgcF9sZW5ndGg7Ci0gICAgICAgIGlmICghZ2V0c3RyaW5nKHBhdHRlcm4sICZwX2xlbmd0aCwgJnNlbGYtPmNoYXJzaXplLCAmc2VsZi0+dmlldykpIHsKKyAgICAgICAgaWYgKCFnZXRzdHJpbmcocGF0dGVybiwgJnBfbGVuZ3RoLCAmc2VsZi0+bG9naWNhbF9jaGFyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPmNoYXJzaXplLCAmc2VsZi0+dmlldykpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0yOTc3LDEzICsyOTQ4LDEzIEBACiAgICAgICAgICAgICAgICAgICAgPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IDw0PW1heD47CiAgICAgICAgICAgICAgICAgICAgSWYgU1JFX0lORk9fUFJFRklYIG9yIFNSRV9JTkZPX0NIQVJTRVQgaXMgaW4gdGhlIGZsYWdzLAogICAgICAgICAgICAgICAgICAgIG1vcmUgZm9sbG93cy4gKi8KLSAgICAgICAgICAgICAgICBTUkVfQ09ERSBmbGFncywgbWluLCBtYXgsIGk7CisgICAgICAgICAgICAgICAgU1JFX0NPREUgZmxhZ3MsIGk7CiAgICAgICAgICAgICAgICAgU1JFX0NPREUgKm5ld2NvZGU7CiAgICAgICAgICAgICAgICAgR0VUX1NLSVA7CiAgICAgICAgICAgICAgICAgbmV3Y29kZSA9IGNvZGUrc2tpcC0xOwogICAgICAgICAgICAgICAgIEdFVF9BUkc7IGZsYWdzID0gYXJnOwotICAgICAgICAgICAgICAgIEdFVF9BUkc7IG1pbiA9IGFyZzsKLSAgICAgICAgICAgICAgICBHRVRfQVJHOyBtYXggPSBhcmc7CisgICAgICAgICAgICAgICAgR0VUX0FSRzsKKyAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgIC8qIENoZWNrIHRoYXQgb25seSB2YWxpZCBmbGFncyBhcmUgcHJlc2VudCAqLwogICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiB+KFNSRV9JTkZPX1BSRUZJWCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1JFX0lORk9fTElURVJBTCB8CkBAIC0yOTk5LDkgKzI5NzAsOSBAQAogICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgIC8qIFZhbGlkYXRlIHRoZSBwcmVmaXggKi8KICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19QUkVGSVgpIHsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NPREUgcHJlZml4X2xlbiwgcHJlZml4X3NraXA7CisgICAgICAgICAgICAgICAgICAgIFNSRV9DT0RFIHByZWZpeF9sZW47CiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9sZW4gPSBhcmc7Ci0gICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9za2lwID0gYXJnOworICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgICAgICAvKiBIZXJlIGNvbWVzIHRoZSBwcmVmaXggc3RyaW5nICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlK3ByZWZpeF9sZW4gPCBjb2RlIHx8IGNvZGUrcHJlZml4X2xlbiA+IG5ld2NvZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwpAQCAtMzA2NSwxMCArMzAzNiw4IEBACiAgICAgICAgICAgICAgICAgR0VUX0FSRzsgbWF4ID0gYXJnOwogICAgICAgICAgICAgICAgIGlmIChtaW4gPiBtYXgpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICAgICAgaWYgKG1heCA+IDY1NTM1KQogICAgICAgICAgICAgICAgICAgICBGQUlMOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKCFfdmFsaWRhdGVfaW5uZXIoY29kZSwgY29kZStza2lwLTQsIGdyb3VwcykpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgY29kZSArPSBza2lwLTQ7CkBAIC0zMDg2LDEwICszMDU1LDggQEAKICAgICAgICAgICAgICAgICBHRVRfQVJHOyBtYXggPSBhcmc7CiAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgICAgICAgICBpZiAobWF4ID4gNjU1MzUpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoIV92YWxpZGF0ZV9pbm5lcihjb2RlLCBjb2RlK3NraXAtMywgZ3JvdXBzKSkKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICBjb2RlICs9IHNraXAtMzsKQEAgLTMyNTIsOCArMzIxOSw4IEBACiAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKGluZGV4ID09IE5VTEwpCi0JLyogRGVmYXVsdCB2YWx1ZSAqLwotCXJldHVybiAwOworICAgICAgICAvKiBEZWZhdWx0IHZhbHVlICovCisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpbmRleCkpCiAgICAgICAgIHJldHVybiBQeUxvbmdfQXNTc2l6ZV90KGluZGV4KTsKQEAgLTM1OTMsNyArMzU2MCw3IEBACiBtYXRjaF9sYXN0aW5kZXhfZ2V0KE1hdGNoT2JqZWN0ICpzZWxmKQogewogICAgIGlmIChzZWxmLT5sYXN0aW5kZXggPj0gMCkKLQlyZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNlbGYtPmxhc3RpbmRleCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc2VsZi0+bGFzdGluZGV4KTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC0zNjQ2LDMyICszNjEzLDMyIEBACiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsMCkKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9NYXRjaCIsCiAgICAgc2l6ZW9mKE1hdGNoT2JqZWN0KSwgc2l6ZW9mKFB5X3NzaXplX3QpLAotICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsCS8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkvKiB0cF9wcmludCAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCS8qIHRwX2NhbGwgKi8KLSAgICAwLAkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJLyogdHBfZmxhZ3MgKi8KLSAgICAwLAkJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJCQkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVybmV4dCAqLwotICAgIG1hdGNoX21ldGhvZHMsCQkvKiB0cF9tZXRob2RzICovCi0gICAgbWF0Y2hfbWVtYmVycywJCS8qIHRwX21lbWJlcnMgKi8KLSAgICBtYXRjaF9nZXRzZXQsICAJICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAoZGVzdHJ1Y3RvciltYXRjaF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG1hdGNoX21ldGhvZHMsICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbWF0Y2hfbWVtYmVycywgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBtYXRjaF9nZXRzZXQsICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC0zNzYwLDEyICszNzI3LDEwIEBACiAKICAgICBzdGF0ZS0+cHRyID0gc3RhdGUtPnN0YXJ0OwogCi0gICAgaWYgKHN0YXRlLT5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLT5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgc3RhdHVzID0gc3JlX21hdGNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91bWF0Y2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzc5MywxMiArMzc1OCwxMCBAQAogCiAgICAgc3RhdGUtPnB0ciA9IHN0YXRlLT5zdGFydDsKIAotICAgIGlmIChzdGF0ZS0+Y2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS0+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7CiAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmLT5wYXR0ZXJuKSk7Ci0jZW5kaWYKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzgyMiw3ICszNzg1LDcgQEAKIAogI2RlZmluZSBTQ0FOX09GRih4KSBvZmZzZXRvZihTY2FubmVyT2JqZWN0LCB4KQogc3RhdGljIFB5TWVtYmVyRGVmIHNjYW5uZXJfbWVtYmVyc1tdID0gewotICAgIHsicGF0dGVybiIsCVRfT0JKRUNULAlTQ0FOX09GRihwYXR0ZXJuKSwJUkVBRE9OTFl9LAorICAgIHsicGF0dGVybiIsIFRfT0JKRUNULCBTQ0FOX09GRihwYXR0ZXJuKSwgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTM4MzEsMzUgKzM3OTQsMzUgQEAKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9TY2FubmVyIiwKICAgICBzaXplb2YoU2Nhbm5lck9iamVjdCksIDAsCiAgICAgKGRlc3RydWN0b3Ipc2Nhbm5lcl9kZWFsbG9jLC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLAkJCQkvKiB0cF9wcmludCAqLwotICAgIDAsCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLAkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwJCQkJLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLAkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJLyogdHBfaGFzaCAqLwotICAgIDAsCQkJCS8qIHRwX2NhbGwgKi8KLSAgICAwLAkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX3NldGF0dHJvICovCi0gICAgMCwJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJLyogdHBfZmxhZ3MgKi8KLSAgICAwLAkJCQkvKiB0cF9kb2MgKi8KLSAgICAwLAkJCQkvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJCQkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCS8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVybmV4dCAqLwotICAgIHNjYW5uZXJfbWV0aG9kcywJCS8qIHRwX21ldGhvZHMgKi8KLSAgICBzY2FubmVyX21lbWJlcnMsCQkvKiB0cF9tZW1iZXJzICovCi0gICAgMCwJCQkJLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgc2Nhbm5lcl9tZXRob2RzLCAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBzY2FubmVyX21lbWJlcnMsICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncykKK3BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQogewogICAgIC8qIGNyZWF0ZSBzZWFyY2ggc3RhdGUgb2JqZWN0ICovCiAKQEAgLTM4NjgsNyArMzgzMSw5IEBACiAgICAgUHlPYmplY3QqIHN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xubjpzY2FubmVyIiwgJnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKKyAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzb3VyY2UiLCAicG9zIiwgImVuZHBvcyIsIE5VTEwgfTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98bm46c2Nhbm5lciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGNyZWF0ZSBzY2FubmVyIG9iamVjdCAqLwpAQCAtMzg5NywxNSArMzg2MiwxNSBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBzcmVtb2R1bGUgPSB7Ci0JUHlNb2R1bGVEZWZfSEVBRF9JTklULAotCSJfIiBTUkVfTU9EVUxFLAotCU5VTEwsCi0JLTEsCi0JX2Z1bmN0aW9ucywKLQlOVUxMLAotCU5VTEwsCi0JTlVMTCwKLQlOVUxMCisgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAgICAgIl8iIFNSRV9NT0RVTEUsCisgICAgICAgIE5VTEwsCisgICAgICAgIC0xLAorICAgICAgICBfZnVuY3Rpb25zLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMLAorICAgICAgICBOVUxMCiB9OwogCiBQeU1PRElOSVRfRlVOQyBQeUluaXRfX3NyZSh2b2lkKQpAQCAtMzkyMSw3ICszODg2LDcgQEAKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnNyZW1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKLSAgICAJcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCiAgICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTUkVfTUFHSUMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCBlOWRlOGNhLi5hZDIyYzUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtMTgsMTYgKzE4LDIxIEBACiAKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhzYXZlKSBcCisgICAgZG8geyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7IChzYXZlKSA9IFB5RXZhbF9TYXZlVGhyZWFkKCk7IH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhzYXZlKSBcCisgICAgZG8geyBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7IFB5RXZhbF9SZXN0b3JlVGhyZWFkKHNhdmUpOyB9IH0gd2hpbGUgKDApCiAjZGVmaW5lIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZSA9IE5VTEw7ICBcCi0gICAgICAgICAgICBpZiAoX3NzbF9sb2Nrc19jb3VudD4wKSB7X3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpO30KLSNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUyAgICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7UHlFdmFsX1Jlc3RvcmVUaHJlYWQoX3NhdmUpfTsKLSNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7X3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpfTsKLSNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCl7UHlFdmFsX1Jlc3RvcmVUaHJlYWQoX3NhdmUpO30gXAotICAgICAgICAgfQorICAgICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsKKyNkZWZpbmUgUHlTU0xfQkxPQ0tfVEhSRUFEUyAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUyAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MoX3NhdmUpOyB9CiAKICNlbHNlICAgLyogbm8gV0lUSF9USFJFQUQgKi8KIAorI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1Moc2F2ZSkKKyNkZWZpbmUgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFNfUyhzYXZlKQogI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCiAjZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMKICNkZWZpbmUgUHlTU0xfVU5CTE9DS19USFJFQURTCkBAIC03MSw2ICs3NiwxNiBAQAogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEKIH07CiAKK3N0cnVjdCBweV9zc2xfZXJyb3JfY29kZSB7CisgICAgY29uc3QgY2hhciAqbW5lbW9uaWM7CisgICAgaW50IGxpYnJhcnksIHJlYXNvbjsKK307CisKK3N0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlIHsKKyAgICBjb25zdCBjaGFyICpsaWJyYXJ5OworICAgIGludCBjb2RlOworfTsKKwogLyogSW5jbHVkZSBzeW1ib2xzIGZyb20gX3NvY2tldCBtb2R1bGUgKi8KICNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKIApAQCAtOTIsOCArMTA3LDIxIEBACiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKICNpbmNsdWRlICJvcGVuc3NsL3JhbmQuaCIKIAorLyogSW5jbHVkZSBnZW5lcmF0ZWQgZGF0YSAoZXJyb3IgY29kZXMpICovCisjaW5jbHVkZSAiX3NzbF9kYXRhLmgiCisKIC8qIFNTTCBlcnJvciBvYmplY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqUHlTU0xFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKK3N0YXRpYyBQeU9iamVjdCAqUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMRU9GRXJyb3JPYmplY3Q7CisKKy8qIEVycm9yIG1hcHBpbmdzICovCitzdGF0aWMgUHlPYmplY3QgKmVycl9jb2Rlc190b19uYW1lczsKK3N0YXRpYyBQeU9iamVjdCAqZXJyX25hbWVzX3RvX2NvZGVzOworc3RhdGljIFB5T2JqZWN0ICpsaWJfY29kZXNfdG9fbmFtZXM7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogCkBAIC0xMjQsOSArMTUyLDM1IEBACiAjIHVuZGVmIEhBVkVfU1NMX0NUWF9DTEVBUl9PUFRJT05TCiAjZW5kaWYKIAorLyogSW4gY2FzZSBvZiAndGxzLXVuaXF1ZScgaXQgd2lsbCBiZSAxMiBieXRlcyBmb3IgVExTLCAzNiBieXRlcyBmb3IKKyAqIG9sZGVyIFNTTCwgYnV0IGxldCdzIGJlIHNhZmUgKi8KKyNkZWZpbmUgUHlTU0xfQ0JfTUFYTEVOIDEyOAorCisvKiBTU0xfZ2V0X2ZpbmlzaGVkIGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS41ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA1MDBmTAorIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDEKKyNlbHNlCisjIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMAorI2VuZGlmCisKKy8qIEVDREggc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0VDREgpCisjIGRlZmluZSBPUEVOU1NMX05PX0VDREgKKyNlbmRpZgorCisvKiBjb21wcmVzc2lvbiBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fQ09NUCkKKyMgZGVmaW5lIE9QRU5TU0xfTk9fQ09NUAorI2VuZGlmCisKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBTU0xfQ1RYICpjdHg7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIGNoYXIgKm5wbl9wcm90b2NvbHM7CisgICAgaW50IG5wbl9wcm90b2NvbHNfbGVuOworI2VuZGlmCiB9IFB5U1NMQ29udGV4dDsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMTM1LDYgKzE4OSw3IEBACiAgICAgU1NMICpzc2w7CiAgICAgWDUwOSAqcGVlcl9jZXJ0OwogICAgIGludCBzaHV0ZG93bl9zZWVuX3plcm87CisgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZTsKIH0gUHlTU0xTb2NrZXQ7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CkBAIC0xNjUsMzYgKzIyMCwxNTIgQEAKICNkZWZpbmUgRVJSU1RSMSh4LHkseikgKHggIjoiIHkgIjogIiB6KQogI2RlZmluZSBFUlJTVFIoeCkgRVJSU1RSMSgiX3NzbC5jIiwgU1RSSU5HSUZZMihfX0xJTkVfXyksIHgpCiAKLS8qIFhYWCBJdCBtaWdodCBiZSBoZWxwZnVsIHRvIGF1Z21lbnQgdGhlIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkCi0gICBiZWxvdyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBTU0wgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZWQgdGhlIGVycm9yLgotICAgSSBleHBlY3QgaXQncyBvYnZpb3VzIG1vc3Qgb2YgdGhlIHRpbWUuCi0qLworCisvKgorICogU1NMIGVycm9ycy4KKyAqLworCitQeURvY19TVFJWQVIoU1NMRXJyb3JfZG9jLAorIkFuIGVycm9yIG9jY3VycmVkIGluIHRoZSBTU0wgaW1wbGVtZW50YXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihTU0xaZXJvUmV0dXJuRXJyb3JfZG9jLAorIlNTTC9UTFMgc2Vzc2lvbiBjbG9zZWQgY2xlYW5seS4iKTsKKworUHlEb2NfU1RSVkFSKFNTTFdhbnRSZWFkRXJyb3JfZG9jLAorIk5vbi1ibG9ja2luZyBTU0wgc29ja2V0IG5lZWRzIHRvIHJlYWQgbW9yZSBkYXRhXG4iCisiYmVmb3JlIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGNhbiBiZSBjb21wbGV0ZWQuIik7CisKK1B5RG9jX1NUUlZBUihTU0xXYW50V3JpdGVFcnJvcl9kb2MsCisiTm9uLWJsb2NraW5nIFNTTCBzb2NrZXQgbmVlZHMgdG8gd3JpdGUgbW9yZSBkYXRhXG4iCisiYmVmb3JlIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGNhbiBiZSBjb21wbGV0ZWQuIik7CisKK1B5RG9jX1NUUlZBUihTU0xTeXNjYWxsRXJyb3JfZG9jLAorIlN5c3RlbSBlcnJvciB3aGVuIGF0dGVtcHRpbmcgU1NMIG9wZXJhdGlvbi4iKTsKKworUHlEb2NfU1RSVkFSKFNTTEVPRkVycm9yX2RvYywKKyJTU0wvVExTIGNvbm5lY3Rpb24gdGVybWluYXRlZCBhYnJ1cHRseS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NTTEVycm9yX3N0cihQeU9TRXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPnN0cmVycm9yICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKHNlbGYtPnN0cmVycm9yKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+c3RyZXJyb3IpOworICAgICAgICByZXR1cm4gc2VsZi0+c3RyZXJyb3I7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihzZWxmLT5hcmdzKTsKK30KKworc3RhdGljIFB5VHlwZV9TbG90IHNzbGVycm9yX3R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfYmFzZSwgTlVMTH0sICAvKiBGaWxsZWQgb3V0IGluIG1vZHVsZSBpbml0IGFzIGl0J3Mgbm90IGEgY29uc3RhbnQgKi8KKyAgICB7UHlfdHBfZG9jLCBTU0xFcnJvcl9kb2N9LAorICAgIHtQeV90cF9zdHIsIFNTTEVycm9yX3N0cn0sCisgICAgezAsIDB9LAorfTsKKworc3RhdGljIFB5VHlwZV9TcGVjIHNzbGVycm9yX3R5cGVfc3BlYyA9IHsKKyAgICAic3NsLlNTTEVycm9yIiwKKyAgICBzaXplb2YoUHlPU0Vycm9yT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsCisgICAgc3NsZXJyb3JfdHlwZV9zbG90cworfTsKKworc3RhdGljIHZvaWQKK2ZpbGxfYW5kX3NldF9zc2xlcnJvcihQeU9iamVjdCAqdHlwZSwgaW50IHNzbF9lcnJubywgY29uc3QgY2hhciAqZXJyc3RyLAorICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIHVuc2lnbmVkIGxvbmcgZXJyY29kZSkKK3sKKyAgICBQeU9iamVjdCAqZXJyX3ZhbHVlID0gTlVMTCwgKnJlYXNvbl9vYmogPSBOVUxMLCAqbGliX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmluaXRfdmFsdWUsICptc2csICprZXk7CisgICAgX1B5X0lERU5USUZJRVIocmVhc29uKTsKKyAgICBfUHlfSURFTlRJRklFUihsaWJyYXJ5KTsKKworICAgIGlmIChlcnJjb2RlICE9IDApIHsKKyAgICAgICAgaW50IGxpYiwgcmVhc29uOworCisgICAgICAgIGxpYiA9IEVSUl9HRVRfTElCKGVycmNvZGUpOworICAgICAgICByZWFzb24gPSBFUlJfR0VUX1JFQVNPTihlcnJjb2RlKTsKKyAgICAgICAga2V5ID0gUHlfQnVpbGRWYWx1ZSgiaWkiLCBsaWIsIHJlYXNvbik7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmVhc29uX29iaiA9IFB5RGljdF9HZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmIChyZWFzb25fb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFhYWCBpZiByZWFzb24gPCAxMDAsIGl0IG1pZ2h0IHJlZmxlY3QgYSBsaWJyYXJ5IG51bWJlciAoISEpICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhsaWIpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGxpYl9vYmogPSBQeURpY3RfR2V0SXRlbShsaWJfY29kZXNfdG9fbmFtZXMsIGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBpZiAobGliX29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGVycnN0ciA9IEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKGVycmNvZGUpOworICAgIH0KKyAgICBpZiAoZXJyc3RyID09IE5VTEwpCisgICAgICAgIGVycnN0ciA9ICJ1bmtub3duIGVycm9yIjsKKworICAgIGlmIChyZWFzb25fb2JqICYmIGxpYl9vYmopCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbJVM6ICVTXSAlcyAoX3NzbC5jOiVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9vYmosIHJlYXNvbl9vYmosIGVycnN0ciwgbGluZW5vKTsKKyAgICBlbHNlIGlmIChsaWJfb2JqKQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiWyVTXSAlcyAoX3NzbC5jOiVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9vYmosIGVycnN0ciwgbGluZW5vKTsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAoX3NzbC5jOiVkKSIsIGVycnN0ciwgbGluZW5vKTsKKworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGluaXRfdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJpTiIsIHNzbF9lcnJubywgbXNnKTsKKyAgICBlcnJfdmFsdWUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHR5cGUsIGluaXRfdmFsdWUpOworICAgIFB5X0RFQ1JFRihpbml0X3ZhbHVlKTsKKyAgICBpZiAoZXJyX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAocmVhc29uX29iaiA9PSBOVUxMKQorICAgICAgICByZWFzb25fb2JqID0gUHlfTm9uZTsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChlcnJfdmFsdWUsICZQeUlkX3JlYXNvbiwgcmVhc29uX29iaikpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAobGliX29iaiA9PSBOVUxMKQorICAgICAgICBsaWJfb2JqID0gUHlfTm9uZTsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChlcnJfdmFsdWUsICZQeUlkX2xpYnJhcnksIGxpYl9vYmopKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIGVycl92YWx1ZSk7CitmYWlsOgorICAgIFB5X1hERUNSRUYoZXJyX3ZhbHVlKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5U1NMX1NldEVycm9yKFB5U1NMU29ja2V0ICpvYmosIGludCByZXQsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIGNoYXIgYnVmWzIwNDhdOwotICAgIGNoYXIgKmVycnN0cjsKKyAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CisgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKICAgICBpbnQgZXJyOwogICAgIGVudW0gcHlfc3NsX2Vycm9yIHAgPSBQWV9TU0xfRVJST1JfTk9ORTsKKyAgICB1bnNpZ25lZCBsb25nIGUgPSAwOwogCiAgICAgYXNzZXJ0KHJldCA8PSAwKTsKKyAgICBlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwogCiAgICAgaWYgKG9iai0+c3NsICE9IE5VTEwpIHsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihvYmotPnNzbCwgcmV0KTsKIAogICAgICAgICBzd2l0Y2ggKGVycikgewogICAgICAgICBjYXNlIFNTTF9FUlJPUl9aRVJPX1JFVFVSTjoKLSAgICAgICAgICAgIGVycnN0ciA9ICJUTFMvU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIjsKKyAgICAgICAgICAgIGVycnN0ciA9ICJUTFMvU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIChFT0YpIjsKKyAgICAgICAgICAgIHR5cGUgPSBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdDsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfWkVST19SRVRVUk47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgogICAgICAgICAgICAgZXJyc3RyID0gIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAocmVhZCkiOworICAgICAgICAgICAgdHlwZSA9IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdDsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfV0FOVF9SRUFEOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfV1JJVEU6CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1dBTlRfV1JJVEU7CisgICAgICAgICAgICB0eXBlID0gUHlTU0xXYW50V3JpdGVFcnJvck9iamVjdDsKICAgICAgICAgICAgIGVycnN0ciA9ICJUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgKHdyaXRlKSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9YNTA5X0xPT0tVUDoKQEAgLTIwNyw4MCArMzc4LDY0IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlID0gRVJSX2dldF9lcnJvcigpOwogICAgICAgICAgICAgaWYgKGUgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcwogICAgICAgICAgICAgICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qob2JqLT5Tb2NrZXQpOwogICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCB8fCAoKChQeU9iamVjdCAqKXMpID09IFB5X05vbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfRU9GOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xFT0ZFcnJvck9iamVjdDsKICAgICAgICAgICAgICAgICAgICAgZXJyc3RyID0gIkVPRiBvY2N1cnJlZCBpbiB2aW9sYXRpb24gb2YgcHJvdG9jb2wiOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIHVuZGVybHlpbmcgQklPIHJlcG9ydGVkIGFuIEkvTyBlcnJvciAqLwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocyk7CiAgICAgICAgICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgICAgICAgICAgICAgICAgICB2ID0gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgICAgIHMtPmVycm9yaGFuZGxlcigpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgeyAvKiBwb3NzaWJsZT8gKi8KICAgICAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9TWVNDQUxMOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gUHlTU0xTeXNjYWxsRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJTb21lIEkvTyBlcnJvciBvY2N1cnJlZCI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1NZU0NBTEw7Ci0gICAgICAgICAgICAgICAgLyogWFhYIFByb3RlY3RlZCBieSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayAqLwotICAgICAgICAgICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZSwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNTTF9FUlJPUl9TU0w6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZSA9IEVSUl9nZXRfZXJyb3IoKTsKICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfU1NMOwotICAgICAgICAgICAgaWYgKGUgIT0gMCkKLSAgICAgICAgICAgICAgICAvKiBYWFggUHJvdGVjdGVkIGJ5IGdsb2JhbCBpbnRlcnByZXRlciBsb2NrICovCi0gICAgICAgICAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhlLCBOVUxMKTsKLSAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgLyogcG9zc2libGU/ICovCisgICAgICAgICAgICBpZiAoZSA9PSAwKQorICAgICAgICAgICAgICAgIC8qIHBvc3NpYmxlPyAqLwogICAgICAgICAgICAgICAgIGVycnN0ciA9ICJBIGZhaWx1cmUgaW4gdGhlIFNTTCBsaWJyYXJ5IG9jY3VycmVkIjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0lOVkFMSURfRVJST1JfQ09ERTsKICAgICAgICAgICAgIGVycnN0ciA9ICJJbnZhbGlkIGVycm9yIGNvZGUiOwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyc3RyID0gRVJSX2Vycm9yX3N0cmluZyhFUlJfcGVla19sYXN0X2Vycm9yKCksIE5VTEwpOwogICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc3NsLmM6JWQ6ICVzIiwgbGluZW5vLCBlcnJzdHIpOworICAgIGZpbGxfYW5kX3NldF9zc2xlcnJvcih0eXBlLCBwLCBlcnJzdHIsIGxpbmVubywgZSk7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpcykiLCBwLCBidWYpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5U1NMRXJyb3JPYmplY3QsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCi0gICAgY2hhciBidWZbMjA0OF07Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBpZiAoZXJyc3RyID09IE5VTEwpIHsKKyAgICBpZiAoZXJyc3RyID09IE5VTEwpCiAgICAgICAgIGVycmNvZGUgPSBFUlJfcGVla19sYXN0X2Vycm9yKCk7Ci0gICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZXJyY29kZSwgTlVMTCk7Ci0gICAgfQotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIl9zc2wuYzolZDogJXMiLCBsaW5lbm8sIGVycnN0cik7CisgICAgZWxzZQorICAgICAgICBlcnJjb2RlID0gMDsKKyAgICBmaWxsX2FuZF9zZXRfc3NsZXJyb3IoUHlTU0xFcnJvck9iamVjdCwgZXJyY29kZSwgZXJyc3RyLCBsaW5lbm8sIGVycmNvZGUpOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgZXJyY29kZSwgYnVmKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIFNTTCBvYmplY3RzCisgKi8KKwogc3RhdGljIFB5U1NMU29ja2V0ICoKIG5ld1B5U1NMU29ja2V0KFNTTF9DVFggKmN0eCwgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrLAogICAgICAgICAgICAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZSwKQEAgLTMyOCw2ICs0ODMsNyBAQAogICAgICAgICBTU0xfc2V0X2FjY2VwdF9zdGF0ZShzZWxmLT5zc2wpOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCiAKKyAgICBzZWxmLT5zb2NrZXRfdHlwZSA9IHNvY2tldF90eXBlOwogICAgIHNlbGYtPlNvY2tldCA9IFB5V2Vha3JlZl9OZXdSZWYoKFB5T2JqZWN0ICopIHNvY2ssIE5VTEwpOwogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzU2LDcgKzUxMiw2IEBACiAKICAgICAvKiBBY3R1YWxseSBuZWdvdGlhdGUgU1NMIGNvbm5lY3Rpb24gKi8KICAgICAvKiBYWFggSWYgU1NMX2RvX2hhbmRzaGFrZSgpIHJldHVybnMgMCwgaXQncyBhbHNvIGEgZmFpbHVyZS4gKi8KLSAgICBzb2Nrc3RhdGUgPSAwOwogICAgIGRvIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICByZXQgPSBTU0xfZG9faGFuZHNoYWtlKHNlbGYtPnNzbCk7CkBAIC04ODIsMTkgKzEwMzcsMTUgQEAKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBpbnQgbGVuOwogICAgIGludCB2ZXJpZmljYXRpb247Ci0gICAgUHlPYmplY3QgKmJpbmFyeV9tb2RlID0gUHlfTm9uZTsKLSAgICBpbnQgYjsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpwZWVyX2NlcnRpZmljYXRlIiwgJmJpbmFyeV9tb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLCAmYmluYXJ5X21vZGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+cGVlcl9jZXJ0KQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAotICAgIGIgPSBQeU9iamVjdF9Jc1RydWUoYmluYXJ5X21vZGUpOwotICAgIGlmIChiIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGIpIHsKKyAgICBpZiAoYmluYXJ5X21vZGUpIHsKICAgICAgICAgLyogcmV0dXJuIGNlcnQgaW4gREVSLWVuY29kZWQgZm9ybWF0ICovCiAKICAgICAgICAgdW5zaWduZWQgY2hhciAqYnl0ZXNfYnVmID0gTlVMTDsKQEAgLTk4MCw2ICsxMTMxLDM5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECitzdGF0aWMgUHlPYmplY3QgKlB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZikgeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dDsKKyAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOworCisgICAgU1NMX2dldDBfbmV4dF9wcm90b19uZWdvdGlhdGVkKHNlbGYtPnNzbCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsICZvdXRsZW4pOworCisgICAgaWYgKG91dCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopIG91dCwgb3V0bGVuKTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NvbXByZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmKSB7CisjaWZkZWYgT1BFTlNTTF9OT19DT01QCisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIGNvbnN0IENPTVBfTUVUSE9EICpjb21wX21ldGhvZDsKKyAgICBjb25zdCBjaGFyICpzaG9ydF9uYW1lOworCisgICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBjb21wX21ldGhvZCA9IFNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbihzZWxmLT5zc2wpOworICAgIGlmIChjb21wX21ldGhvZCA9PSBOVUxMIHx8IGNvbXBfbWV0aG9kLT50eXBlID09IE5JRF91bmRlZikKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgc2hvcnRfbmFtZSA9IE9CSl9uaWQyc24oY29tcF9tZXRob2QtPnR5cGUpOworICAgIGlmIChzaG9ydF9uYW1lID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHNob3J0X25hbWUpOworI2VuZGlmCit9CisKIHN0YXRpYyB2b2lkIFB5U1NMX2RlYWxsb2MoUHlTU0xTb2NrZXQgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPnBlZXJfY2VydCkgICAgICAgIC8qIFBvc3NpYmxlIG5vdCB0byBoYXZlIG9uZT8gKi8KQEAgLTExMDAsNyArMTI4NCw2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgZXJyID0gMDsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBsZW4gPSBTU0xfd3JpdGUoc2VsZi0+c3NsLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGxlbik7CkBAIC0xMjM2LDcgKzE0MTksNiBAQAogICAgICAgICB9CiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgZXJyID0gMDsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBjb3VudCA9IFNTTF9yZWFkKHNlbGYtPnNzbCwgbWVtLCBsZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgY291bnQpOwpAQCAtMTM4OCw2ICsxNTcwLDQxIEBACiBEb2VzIHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlIHdpdGggdGhlIHJlbW90ZSBlbmQsIGFuZCByZXR1cm5zXG5cCiB0aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiIpOwogCisjaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKyAgICBjaGFyIGJ1ZltQeVNTTF9DQl9NQVhMRU5dOworICAgIGludCBsZW47CisKKyAgICBpZiAoU1NMX3Nlc3Npb25fcmV1c2VkKHNlbGYtPnNzbCkgXiAhc2VsZi0+c29ja2V0X3R5cGUpIHsKKyAgICAgICAgLyogaWYgc2Vzc2lvbiBpcyByZXN1bWVkIFhPUiB3ZSBhcmUgdGhlIGNsaWVudCAqLworICAgICAgICBsZW4gPSBTU0xfZ2V0X2ZpbmlzaGVkKHNlbGYtPnNzbCwgYnVmLCBQeVNTTF9DQl9NQVhMRU4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogaWYgYSBuZXcgc2Vzc2lvbiBYT1Igd2UgYXJlIHRoZSBzZXJ2ZXIgKi8KKyAgICAgICAgbGVuID0gU1NMX2dldF9wZWVyX2ZpbmlzaGVkKHNlbGYtPnNzbCwgYnVmLCBQeVNTTF9DQl9NQVhMRU4pOworICAgIH0KKworICAgIC8qIEl0IGNhbm5vdCBiZSBuZWdhdGl2ZSBpbiBjdXJyZW50IE9wZW5TU0wgdmVyc2lvbiBhcyBvZiBKdWx5IDIwMTEgKi8KKyAgICBhc3NlcnQobGVuID49IDApOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXR2YWwgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZiwgbGVuKTsKKworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF90bHNfdW5pcXVlX2NiX2RvYywKKyJ0bHNfdW5pcXVlX2NiKCkgLT4gYnl0ZXNcblwKK1xuXAorUmV0dXJucyB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuXAorXG5cCitJZiB0aGUgVExTIGhhbmRzaGFrZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBOb25lIGlzIHJldHVybmVkIik7CisKKyNlbmRpZiAvKiBIQVZFX09QRU5TU0xfRklOSVNIRUQgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIFB5U1NMTWV0aG9kc1tdID0gewogICAgIHsiZG9faGFuZHNoYWtlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTGRvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1N9LApAQCAtMTQwMCw4ICsxNjE3LDE2IEBACiAgICAgeyJwZWVyX2NlcnRpZmljYXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3BlZXJjZXJ0LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5U1NMX3BlZXJjZXJ0X2RvY30sCiAgICAgeyJjaXBoZXIiLCAoUHlDRnVuY3Rpb24pUHlTU0xfY2lwaGVyLCBNRVRIX05PQVJHU30sCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHsic2VsZWN0ZWRfbnBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbCwgTUVUSF9OT0FSR1N9LAorI2VuZGlmCisgICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilQeVNTTF9jb21wcmVzc2lvbiwgTUVUSF9OT0FSR1N9LAogICAgIHsic2h1dGRvd24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMc2h1dGRvd24sIE1FVEhfTk9BUkdTLAogICAgICBQeVNTTF9TU0xzaHV0ZG93bl9kb2N9LAorI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorICAgIHsidGxzX3VuaXF1ZV9jYiIsIChQeUNGdW5jdGlvbilQeVNTTF90bHNfdW5pcXVlX2NiLCBNRVRIX05PQVJHUywKKyAgICAgUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2N9LAorI2VuZGlmCiAgICAge05VTEwsIE5VTEx9CiB9OwogCkBAIC0xNDg4LDYgKzE3MTMsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgc2VsZi0+Y3R4ID0gY3R4OworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gTlVMTDsKKyNlbmRpZgogICAgIC8qIERlZmF1bHRzICovCiAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KHNlbGYtPmN0eCwgU1NMX1ZFUklGWV9OT05FLCBOVUxMKTsKICAgICBTU0xfQ1RYX3NldF9vcHRpb25zKHNlbGYtPmN0eCwKQEAgLTE1MDUsNiArMTczMyw5IEBACiBjb250ZXh0X2RlYWxsb2MoUHlTU0xDb250ZXh0ICpzZWxmKQogewogICAgIFNTTF9DVFhfZnJlZShzZWxmLT5jdHgpOworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworI2VuZGlmCiAgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKIH0KIApAQCAtMTUyOSw2ICsxNzYwLDkxIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZV9jYiAqLworc3RhdGljIGludAorX2FkdmVydGlzZU5QTl9jYihTU0wgKnMsIAorICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqZGF0YSwgdW5zaWduZWQgaW50ICpsZW4sIAorICAgICAgICAgICAgICAgICB2b2lkICphcmdzKQoreworICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKKworICAgIGlmIChzc2xfY3R4LT5ucG5fcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgKmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKKyAgICAgICAgKmxlbiA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzOworICAgICAgICAqbGVuID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sc19sZW47CisgICAgfQorCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorLyogdGhpcyBjYWxsYmFjayBnZXRzIHBhc3NlZCB0byBTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYiAqLworc3RhdGljIGludAorX3NlbGVjdE5QTl9jYihTU0wgKnMsIAorICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlciwgdW5zaWduZWQgaW50IHNlcnZlcl9sZW4sCisgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCit7CisgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOworCisgICAgdW5zaWduZWQgY2hhciAqY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICBpbnQgY2xpZW50X2xlbjsKKworICAgIGlmIChjbGllbnQgPT0gTlVMTCkgeworICAgICAgICBjbGllbnQgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKKyAgICAgICAgY2xpZW50X2xlbiA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY2xpZW50X2xlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOworICAgIH0KKworICAgIFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIGNsaWVudF9sZW4pOworCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2V0X25wbl9wcm90b2NvbHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgUHlfYnVmZmVyIHByb3RvczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6c2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc2VsZi0+bnBuX3Byb3RvY29scyAhPSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisgICAgfQorCisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MubGVuKTsKKyAgICBpZiAoc2VsZi0+bnBuX3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKyAgICBtZW1jcHkoc2VsZi0+bnBuX3Byb3RvY29scywgcHJvdG9zLmJ1ZiwgcHJvdG9zLmxlbik7CisgICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MubGVuOworCisgICAgLyogc2V0IGJvdGggc2VydmVyIGFuZCBjbGllbnQgY2FsbGJhY2tzLCBiZWNhdXNlIHRoZSBjb250ZXh0IGNhbgorICAgICAqIGJlIHVzZWQgdG8gY3JlYXRlIGJvdGggdHlwZXMgb2Ygc29ja2V0cyAqLworICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2Ioc2VsZi0+Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FkdmVydGlzZU5QTl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpOworICAgIFNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiKHNlbGYtPmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZWN0TlBOX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpOworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJUaGUgTlBOIGV4dGVuc2lvbiByZXF1aXJlcyBPcGVuU1NMIDEuMC4xIG9yIGxhdGVyLiIpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfdmVyaWZ5X21vZGUoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQogewpAQCAtMTU5NSwxOSArMTkxMSwxMTggQEAKICAgICByZXR1cm4gMDsKIH0KIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5VGhyZWFkU3RhdGUgKnRocmVhZF9zdGF0ZTsKKyAgICBQeU9iamVjdCAqY2FsbGFibGU7CisgICAgY2hhciAqcGFzc3dvcmQ7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCBlcnJvcjsKK30gX1B5U1NMUGFzc3dvcmRJbmZvOworCitzdGF0aWMgaW50CitfcHdpbmZvX3NldChfUHlTU0xQYXNzd29yZEluZm8gKnB3X2luZm8sIFB5T2JqZWN0KiBwYXNzd29yZCwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhZF90eXBlX2Vycm9yKQoreworICAgIC8qIFNldCB0aGUgcGFzc3dvcmQgYW5kIHNpemUgZmllbGRzIG9mIGEgX1B5U1NMUGFzc3dvcmRJbmZvIHN0cnVjdAorICAgICAgIGZyb20gYSB1bmljb2RlLCBieXRlcywgb3IgYnl0ZSBhcnJheSBvYmplY3QuCisgICAgICAgVGhlIHBhc3N3b3JkIGZpZWxkIHdpbGwgYmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBtdXN0IGJlIGZyZWVkCisgICAgICAgYnkgdGhlIGNhbGxlciAqLworICAgIFB5T2JqZWN0ICpwYXNzd29yZF9ieXRlcyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZGF0YSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgcGFzc3dvcmRfYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHBhc3N3b3JkLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFwYXNzd29yZF9ieXRlcykgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcocGFzc3dvcmRfYnl0ZXMpOworICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShwYXNzd29yZF9ieXRlcyk7CisgICAgfSBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcocGFzc3dvcmQpOworICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShwYXNzd29yZCk7CisgICAgfSBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgZGF0YSA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhwYXNzd29yZCk7CisgICAgICAgIHNpemUgPSBQeUJ5dGVBcnJheV9HRVRfU0laRShwYXNzd29yZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgYmFkX3R5cGVfZXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZyZWUocHdfaW5mby0+cGFzc3dvcmQpOworICAgIHB3X2luZm8tPnBhc3N3b3JkID0gbWFsbG9jKHNpemUpOworICAgIGlmICghcHdfaW5mby0+cGFzc3dvcmQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBhbGxvY2F0ZSBwYXNzd29yZCBidWZmZXIiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgbWVtY3B5KHB3X2luZm8tPnBhc3N3b3JkLCBkYXRhLCBzaXplKTsKKyAgICBwd19pbmZvLT5zaXplID0gc2l6ZTsKKworICAgIFB5X1hERUNSRUYocGFzc3dvcmRfYnl0ZXMpOworICAgIHJldHVybiAxOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHBhc3N3b3JkX2J5dGVzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX3Bhc3N3b3JkX2NhbGxiYWNrKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCByd2ZsYWcsIHZvaWQgKnVzZXJkYXRhKQoreworICAgIF9QeVNTTFBhc3N3b3JkSW5mbyAqcHdfaW5mbyA9IChfUHlTU0xQYXNzd29yZEluZm8qKSB1c2VyZGF0YTsKKyAgICBQeU9iamVjdCAqZm5fcmV0ID0gTlVMTDsKKworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKworICAgIGlmIChwd19pbmZvLT5jYWxsYWJsZSkgeworICAgICAgICBmbl9yZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHB3X2luZm8tPmNhbGxhYmxlLCBOVUxMKTsKKyAgICAgICAgaWYgKCFmbl9yZXQpIHsKKyAgICAgICAgICAgIC8qIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gbW92ZSBfY3R5cGVzX2FkZF90cmFjZWJhY2soKSBpbnRvIHRoZQorICAgICAgICAgICAgICAgY29yZSBweXRob24gQVBJLCBzbyB3ZSBjb3VsZCB1c2UgaXQgdG8gYWRkIGEgZnJhbWUgaGVyZSAqLworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghX3B3aW5mb19zZXQocHdfaW5mbywgZm5fcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBjYWxsYmFjayBtdXN0IHJldHVybiBhIHN0cmluZyIpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKGZuX3JldCk7CisgICAgfQorCisgICAgaWYgKHB3X2luZm8tPnNpemUgPiBzaXplKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlZCBieXRlcyIsIHNpemUpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworICAgIG1lbWNweShidWYsIHB3X2luZm8tPnBhc3N3b3JkLCBwd19pbmZvLT5zaXplKTsKKyAgICByZXR1cm4gcHdfaW5mby0+c2l6ZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihmbl9yZXQpOworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLT50aHJlYWRfc3RhdGUpOworICAgIHB3X2luZm8tPmVycm9yID0gMTsKKyAgICByZXR1cm4gLTE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBsb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTDsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZSwgKmtleWZpbGUgPSBOVUxMLCAqcGFzc3dvcmQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjZXJ0ZmlsZV9ieXRlcyA9IE5VTEwsICprZXlmaWxlX2J5dGVzID0gTlVMTDsKKyAgICBwZW1fcGFzc3dvcmRfY2IgKm9yaWdfcGFzc3dkX2NiID0gc2VsZi0+Y3R4LT5kZWZhdWx0X3Bhc3N3ZF9jYWxsYmFjazsKKyAgICB2b2lkICpvcmlnX3Bhc3N3ZF91c2VyZGF0YSA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2tfdXNlcmRhdGE7CisgICAgX1B5U1NMUGFzc3dvcmRJbmZvIHB3X2luZm8gPSB7IE5VTEwsIE5VTEwsIE5VTEwsIDAsIDAgfTsKICAgICBpbnQgcjsKIAogICAgIGVycm5vID0gMDsKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAotICAgICAgICAiT3xPOmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKLSAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSkpCisgICAgICAgICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIGt3bGlzdCwKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGtleWZpbGUgPT0gUHlfTm9uZSkKICAgICAgICAga2V5ZmlsZSA9IE5VTEw7CkBAIC0xNjIxLDEyICsyMDM2LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAia2V5ZmlsZSBzaG91bGQgYmUgYSB2YWxpZCBmaWxlc3lzdGVtIHBhdGgiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXNzd29yZCAmJiBwYXNzd29yZCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeUNhbGxhYmxlX0NoZWNrKHBhc3N3b3JkKSkgeworICAgICAgICAgICAgcHdfaW5mby5jYWxsYWJsZSA9IHBhc3N3b3JkOworICAgICAgICB9IGVsc2UgaWYgKCFfcHdpbmZvX3NldCgmcHdfaW5mbywgcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBzaG91bGQgYmUgYSBzdHJpbmcgb3IgY2FsbGFibGUiKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIF9wYXNzd29yZF9jYWxsYmFjayk7CisgICAgICAgIFNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiX3VzZXJkYXRhKHNlbGYtPmN0eCwgJnB3X2luZm8pOworICAgIH0KKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFpbl9maWxlKHNlbGYtPmN0eCwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoY2VydGZpbGVfYnl0ZXMpKTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIGlmIChyICE9IDEpIHsKLSAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgaWYgKHB3X2luZm8uZXJyb3IpIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgLyogdGhlIHBhc3N3b3JkIGNhbGxiYWNrIGhhcyBhbHJlYWR5IHNldCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlcnJubyAhPSAwKSB7CiAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgfQpAQCAtMTYzNSwzMyArMjA2NCw0MyBAQAogICAgICAgICB9CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoc2VsZi0+Y3R4LAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhrZXlmaWxlID8ga2V5ZmlsZV9ieXRlcyA6IGNlcnRmaWxlX2J5dGVzKSwKICAgICAgICAgU1NMX0ZJTEVUWVBFX1BFTSk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9YREVDUkVGKGtleWZpbGVfYnl0ZXMpOwotICAgIFB5X1hERUNSRUYoY2VydGZpbGVfYnl0ZXMpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOworICAgIFB5X0NMRUFSKGtleWZpbGVfYnl0ZXMpOworICAgIFB5X0NMRUFSKGNlcnRmaWxlX2J5dGVzKTsKICAgICBpZiAociAhPSAxKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSAwKSB7CisgICAgICAgIGlmIChwd19pbmZvLmVycm9yKSB7CisgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgIC8qIHRoZSBwYXNzd29yZCBjYWxsYmFjayBoYXMgYWxyZWFkeSBzZXQgdGhlIGVycm9yIGluZm9ybWF0aW9uICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gMCkgewogICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhwd19pbmZvLnRocmVhZF9zdGF0ZSk7CiAgICAgciA9IFNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXkoc2VsZi0+Y3R4KTsKLSAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIGlmIChyICE9IDEpIHsKICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKKyAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOwogICAgIFB5X1JFVFVSTl9OT05FOwogCiBlcnJvcjoKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYihzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX2NiKTsKKyAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsIG9yaWdfcGFzc3dkX3VzZXJkYXRhKTsKKyAgICBmcmVlKHB3X2luZm8ucGFzc3dvcmQpOwogICAgIFB5X1hERUNSRUYoa2V5ZmlsZV9ieXRlcyk7CiAgICAgUHlfWERFQ1JFRihjZXJ0ZmlsZV9ieXRlcyk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNzI0LDYgKzIxNjMsMzggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQoreworICAgIEZJTEUgKmY7CisgICAgREggKmRoOworCisgICAgZiA9IF9QeV9mb3BlbihmaWxlcGF0aCwgInJiIik7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgZmlsZXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZXJybm8gPSAwOworICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBkaCA9IFBFTV9yZWFkX0RIcGFyYW1zKGYsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGRoID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IDApIHsKKyAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoU1NMX0NUWF9zZXRfdG1wX2RoKHNlbGYtPmN0eCwgZGgpID09IDApCisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgIERIX2ZyZWUoZGgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29udGV4dF93cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKQEAgLTE4MDgsNiArMjI3OSwzNSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorc3RhdGljIFB5T2JqZWN0ICoKK3NldF9lY2RoX2N1cnZlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVfYnl0ZXM7CisgICAgaW50IG5pZDsKKyAgICBFQ19LRVkgKmtleTsKKworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG5hbWUsICZuYW1lX2J5dGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobmFtZV9ieXRlcykpOworICAgIG5pZCA9IE9CSl9zbjJuaWQoUHlCeXRlc19BU19TVFJJTkcobmFtZV9ieXRlcykpOworICAgIFB5X0RFQ1JFRihuYW1lX2J5dGVzKTsKKyAgICBpZiAobmlkID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBlbGxpcHRpYyBjdXJ2ZSBuYW1lICVSIiwgbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWUobmlkKTsKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBTU0xfQ1RYX3NldF90bXBfZWNkaChzZWxmLT5jdHgsIGtleSk7CisgICAgRUNfS0VZX2ZyZWUoa2V5KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJvcHRpb25zIiwgKGdldHRlcikgZ2V0X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X29wdGlvbnMsIE5VTEx9LApAQCAtMTgyMSwxNCArMjMyMSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKICAgICB7InNldF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfY2lwaGVycywKICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbikgX3NldF9ucG5fcHJvdG9jb2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbikgbG9hZF9jZXJ0X2NoYWluLAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbikgbG9hZF9kaF9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCiAgICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfdmVyaWZ5X2xvY2F0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAogICAgIHsic2Vzc2lvbl9zdGF0cyIsIChQeUNGdW5jdGlvbikgc2Vzc2lvbl9zdGF0cywKICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMiLCAoUHlDRnVuY3Rpb24pIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyNpZm5kZWYgT1BFTlNTTF9OT19FQ0RICisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbikgc2V0X2VjZGhfY3VydmUsCisgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCisjZW5kaWYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xODk5LDYgKzI0MDcsNjkgQEAKIGJvdW5kIG9uIHRoZSBlbnRyb3B5IGNvbnRhaW5lZCBpbiBzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9SQU5EKGludCBsZW4sIGludCBwc2V1ZG8pCit7CisgICAgaW50IG9rOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGVycjsKKyAgICBjb25zdCBjaGFyICplcnJzdHI7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHBzZXVkbykgeworICAgICAgICBvayA9IFJBTkRfcHNldWRvX2J5dGVzKCh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGxlbik7CisgICAgICAgIGlmIChvayA9PSAwIHx8IG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBieXRlcywgb2sgPT0gMSA/IFB5X1RydWUgOiBQeV9GYWxzZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvayA9IFJBTkRfYnl0ZXMoKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbGVuKTsKKyAgICAgICAgaWYgKG9rID09IDEpCisgICAgICAgICAgICByZXR1cm4gYnl0ZXM7CisgICAgfQorICAgIFB5X0RFQ1JFRihieXRlcyk7CisKKyAgICBlcnIgPSBFUlJfZ2V0X2Vycm9yKCk7CisgICAgZXJyc3RyID0gRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmcoZXJyKTsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGtzKSIsIGVyciwgZXJyc3RyKTsKKyAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfYnl0ZXMiLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAwKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYnl0ZXNfZG9jLAorIlJBTkRfYnl0ZXMobikgLT4gYnl0ZXNcblwKK1xuXAorR2VuZXJhdGUgbiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX1JBTkRfcHNldWRvX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlTU0xfUkFORChsZW4sIDEpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfUkFORF9wc2V1ZG9fYnl0ZXNfZG9jLAorIlJBTkRfcHNldWRvX2J5dGVzKG4pIC0+IChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYylcblwKK1xuXAorR2VuZXJhdGUgbiBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiBpc19jcnlwdG9ncmFwaGljIGlzIFRydWUgaWYgdGhlIGJ5dGVzXAorZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9SQU5EX3N0YXR1cyhQeU9iamVjdCAqc2VsZikKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFJBTkRfc3RhdHVzKCkpOwpAQCAtMTk1MSw2ICsyNTIyLDEwIEBACiAjaWZkZWYgSEFWRV9PUEVOU1NMX1JBTkQKICAgICB7IlJBTkRfYWRkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9SQU5EX2FkZF9kb2N9LAorICAgIHsiUkFORF9ieXRlcyIsICAgICAgICAgIFB5U1NMX1JBTkRfYnl0ZXMsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlTU0xfUkFORF9ieXRlc19kb2N9LAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvY30sCiAgICAgeyJSQU5EX2VnZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9lZ2QsIE1FVEhfVkFSQVJHUywKICAgICAgUHlTU0xfUkFORF9lZ2RfZG9jfSwKICAgICB7IlJBTkRfc3RhdHVzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlTU0xfUkFORF9zdGF0dXMsIE1FVEhfTk9BUkdTLApAQCAtMjA3MSw2ICsyNjQ2LDggQEAKICAgICB1bnNpZ25lZCBsb25nIGxpYnZlcjsKICAgICB1bnNpZ25lZCBpbnQgbWFqb3IsIG1pbm9yLCBmaXgsIHBhdGNoLCBzdGF0dXM7CiAgICAgUHlTb2NrZXRNb2R1bGVfQVBJT2JqZWN0ICpzb2NrZXRfYXBpOworICAgIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSAqZXJyY29kZTsKKyAgICBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSAqbGliY29kZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMQ29udGV4dF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjEwMCwxMiArMjY3NywzOCBAQAogICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CiAKICAgICAvKiBBZGQgc3ltYm9scyB0byBtb2R1bGUgZGljdCAqLwotICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInNzbC5TU0xFcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNvY2tldE1vZHVsZS5lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHNzbGVycm9yX3R5cGVfc2xvdHNbMF0ucGZ1bmMgPSBQeUV4Y19PU0Vycm9yOworICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeVR5cGVfRnJvbVNwZWMoJnNzbGVycm9yX3R5cGVfc3BlYyk7CiAgICAgaWYgKFB5U1NMRXJyb3JPYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDApCisKKyAgICBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMWmVyb1JldHVybkVycm9yIiwgU1NMWmVyb1JldHVybkVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xXYW50UmVhZEVycm9yIiwgU1NMV2FudFJlYWRFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFdhbnRXcml0ZUVycm9yIiwgU1NMV2FudFdyaXRlRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMU3lzY2FsbEVycm9yIiwgU1NMU3lzY2FsbEVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xFT0ZFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMRU9GRXJyb3IiLCBTU0xFT0ZFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIGlmIChQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFJlYWRFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCA9PSBOVUxMCisgICAgICAgIHx8IFB5U1NMRU9GRXJyb3JPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFcnJvciIsIFB5U1NMRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFplcm9SZXR1cm5FcnJvciIsIFB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50UmVhZEVycm9yIiwgUHlTU0xXYW50UmVhZEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xXYW50V3JpdGVFcnJvciIsIFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3QpICE9IDAKKyAgICAgICAgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFN5c2NhbGxFcnJvciIsIFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xFT0ZFcnJvciIsIFB5U1NMRU9GRXJyb3JPYmplY3QpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX1NTTENvbnRleHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xDb250ZXh0X1R5cGUpICE9IDApCkBAIC0yMTU4LDYgKzI3NjEsMTYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fU1NMdjIiLCBTU0xfT1BfTk9fU1NMdjIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19TU0x2MyIsIFNTTF9PUF9OT19TU0x2Myk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxIiwgU1NMX09QX05PX1RMU3YxKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UpOworI2VuZGlmCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX0NPTVBSRVNTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfTk9fQ09NUFJFU1NJT04pOworI2VuZGlmCiAKICNpZmRlZiBTU0xfQ1RSTF9TRVRfVExTRVhUX0hPU1ROQU1FCiAgICAgciA9IFB5X1RydWU7CkBAIC0yMTY3LDYgKzI3ODAsNzQgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfU05JIiwgcik7CiAKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1RMU19VTklRVUUiLCByKTsKKworI2lmZGVmIE9QRU5TU0xfTk9fRUNESAorICAgIHIgPSBQeV9GYWxzZTsKKyNlbHNlCisgICAgciA9IFB5X1RydWU7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfRUNESCIsIHIpOworCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CisKKyAgICAvKiBNYXBwaW5ncyBmb3IgZXJyb3IgY29kZXMgKi8KKyAgICBlcnJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgZXJyX25hbWVzX3RvX2NvZGVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChlcnJfY29kZXNfdG9fbmFtZXMgPT0gTlVMTCB8fCBlcnJfbmFtZXNfdG9fY29kZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyY29kZSA9IGVycm9yX2NvZGVzOworICAgIHdoaWxlIChlcnJjb2RlLT5tbmVtb25pYyAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAgbW5lbW8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJjb2RlLT5tbmVtb25pYyk7CisgICAgICAgIGtleSA9IFB5X0J1aWxkVmFsdWUoImlpIiwgZXJyY29kZS0+bGlicmFyeSwgZXJyY29kZS0+cmVhc29uKTsKKyAgICAgICAgaWYgKG1uZW1vID09IE5VTEwgfHwga2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9jb2Rlc190b19uYW1lcywga2V5LCBtbmVtbykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGVycl9uYW1lc190b19jb2RlcywgbW5lbW8sIGtleSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihtbmVtbyk7CisgICAgICAgIGVycmNvZGUrKzsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX2NvZGVzX3RvX25hbWVzIiwgZXJyX2NvZGVzX3RvX25hbWVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyX25hbWVzX3RvX2NvZGVzIiwgZXJyX25hbWVzX3RvX2NvZGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsaWJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGxpYl9jb2Rlc190b19uYW1lcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaWJjb2RlID0gbGlicmFyeV9jb2RlczsKKyAgICB3aGlsZSAobGliY29kZS0+bGlicmFyeSAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptbmVtbywgKmtleTsKKyAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGxpYmNvZGUtPmNvZGUpOworICAgICAgICBtbmVtbyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGxpYmNvZGUtPmxpYnJhcnkpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwgfHwgbW5lbW8gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obGliX2NvZGVzX3RvX25hbWVzLCBrZXksIG1uZW1vKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG1uZW1vKTsKKyAgICAgICAgbGliY29kZSsrOworICAgIH0KKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJsaWJfY29kZXNfdG9fbmFtZXMiLCBsaWJfY29kZXNfdG9fbmFtZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKICAgICAvKiBPcGVuU1NMIHZlcnNpb24gKi8KICAgICAvKiBTU0xlYXkoKSBnaXZlcyB1cyB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBsaW5rZWQgYWdhaW5zdCwKICAgICAgICB3aGljaCBjb3VsZCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaGVhZGVycyB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsX2RhdGEuaCBiL01vZHVsZXMvX3NzbF9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhOGQ3YgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NzbF9kYXRhLmgKQEAgLTAsMCArMSwxNjUzIEBACisvKiBGaWxlIGdlbmVyYXRlZCBieSBUb29scy9zc2wvbWFrZV9zc2xfZGF0YS5weSAqLworLyogR2VuZXJhdGVkIG9uIDIwMTItMDUtMTZUMjM6NTY6NDAuOTgxMzgyICovCisKK3N0YXRpYyBzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSBsaWJyYXJ5X2NvZGVzW10gPSB7CisgICAgeyJQRU0iLCBFUlJfTElCX1BFTX0sCisgICAgeyJTU0wiLCBFUlJfTElCX1NTTH0sCisgICAgeyJYNTA5IiwgRVJSX0xJQl9YNTA5fSwKKyAgICB7IE5VTEwgfQorfTsKKworc3RhdGljIHN0cnVjdCBweV9zc2xfZXJyb3JfY29kZSBlcnJvcl9jb2Rlc1tdID0geworICAjaWZkZWYgUEVNX1JfQkFEX0JBU0U2NF9ERUNPREUKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9CQVNFNjRfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9CQVNFNjRfREVDT0RFIiwgRVJSX0xJQl9QRU0sIDEwMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0RFQ1JZUFQKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ERUNSWVBUIiwgRVJSX0xJQl9QRU0sIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX0VORF9MSU5FCisgICAgeyJCQURfRU5EX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX0VORF9MSU5FfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FTkRfTElORSIsIEVSUl9MSUJfUEVNLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9JVl9DSEFSUworICAgIHsiQkFEX0lWX0NIQVJTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9JVl9DSEFSU30sCisgICNlbHNlCisgICAgeyJCQURfSVZfQ0hBUlMiLCBFUlJfTElCX1BFTSwgMTAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfTUFHSUNfTlVNQkVSCisgICAgeyJCQURfTUFHSUNfTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9NQUdJQ19OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX01BR0lDX05VTUJFUiIsIEVSUl9MSUJfUEVNLCAxMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9QQVNTV09SRF9SRUFECisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfUEFTU1dPUkRfUkVBRH0sCisgICNlbHNlCisgICAgeyJCQURfUEFTU1dPUkRfUkVBRCIsIEVSUl9MSUJfUEVNLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUgorICAgIHsiQkFEX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9WRVJTSU9OX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJCQURfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1BFTSwgMTE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CSU9fV1JJVEVfRkFJTFVSRQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfQklPX1dSSVRFX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiQklPX1dSSVRFX0ZBSUxVUkUiLCBFUlJfTElCX1BFTSwgMTE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9DSVBIRVJfSVNfTlVMTAorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgUEVNX1JfQ0lQSEVSX0lTX05VTEx9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0lTX05VTEwiLCBFUlJfTElCX1BFTSwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9FUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZCisgICAgeyJFUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0VSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVl9LAorICAjZWxzZQorICAgIHsiRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWSIsIEVSUl9MSUJfUEVNLCAxMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QUklWQVRFX0tFWV9CTE9CCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9FWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCAxMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0VYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IKKyAgICB7IkVYUEVDVElOR19QVUJMSUNfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgUEVNX1JfRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQn0sCisgICNlbHNlCisgICAgeyJFWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIDEyMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfSU5DT05TSVNURU5UX0hFQURFUgorICAgIHsiSU5DT05TSVNURU5UX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9JTkNPTlNJU1RFTlRfSEVBREVSfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgMTIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX0hFQURFUl9QQVJTRV9FUlJPUgorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1J9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IiLCBFUlJfTElCX1BFTSwgMTIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9LRVlCTE9CX1RPT19TSE9SVAorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgUEVNX1JfS0VZQkxPQl9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiS0VZQkxPQl9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfREVLX0lORk8KKyAgICB7Ik5PVF9ERUtfSU5GTyIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfREVLX0lORk99LAorICAjZWxzZQorICAgIHsiTk9UX0RFS19JTkZPIiwgRVJSX0xJQl9QRU0sIDEwNX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9UX0VOQ1JZUFRFRAorICAgIHsiTk9UX0VOQ1JZUFRFRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfRU5DUllQVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PVF9FTkNSWVBURUQiLCBFUlJfTElCX1BFTSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT1RfUFJPQ19UWVBFCisgICAgeyJOT1RfUFJPQ19UWVBFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PVF9QUk9DX1RZUEV9LAorICAjZWxzZQorICAgIHsiTk9UX1BST0NfVFlQRSIsIEVSUl9MSUJfUEVNLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PX1NUQVJUX0xJTkUKKyAgICB7Ik5PX1NUQVJUX0xJTkUiLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9fU1RBUlRfTElORX0sCisgICNlbHNlCisgICAgeyJOT19TVEFSVF9MSU5FIiwgRVJSX0xJQl9QRU0sIDEwOH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRAorICAgIHsiUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkQiLCBFUlJfTElCX1BFTSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVUJMSUNfS0VZX05PX1JTQQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFVCTElDX0tFWV9OT19SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9OT19SU0EiLCBFUlJfTElCX1BFTSwgMTEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9QVktfREFUQV9UT09fU0hPUlQKKyAgICB7IlBWS19EQVRBX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfREFUQV9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiUFZLX0RBVEFfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIDEyNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFZLX1RPT19TSE9SVAorICAgIHsiUFZLX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9QVktfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlBWS19UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9SRUFEX0tFWQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgUEVNX1JfUkVBRF9LRVl9LAorICAjZWxzZQorICAgIHsiUkVBRF9LRVkiLCBFUlJfTElCX1BFTSwgMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9TSE9SVF9IRUFERVIKKyAgICB7IlNIT1JUX0hFQURFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9TSE9SVF9IRUFERVJ9LAorICAjZWxzZQorICAgIHsiU0hPUlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIDExMn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfUEVNLCAxMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT04KKyAgICB7IlVOU1VQUE9SVEVEX0VOQ1JZUFRJT04iLCBFUlJfTElCX1BFTSwgUEVNX1JfVU5TVVBQT1JURURfRU5DUllQVElPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTkNSWVBUSU9OIiwgRVJSX0xJQl9QRU0sIDExNH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfVU5TVVBQT1JURURfS0VZX0NPTVBPTkVOVFMKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1VOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTIiwgRVJSX0xJQl9QRU0sIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFCisgICAgeyJBUFBfREFUQV9JTl9IQU5EU0hBS0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfQVBQX0RBVEFfSU5fSEFORFNIQUtFfSwKKyAgI2Vsc2UKKyAgICB7IkFQUF9EQVRBX0lOX0hBTkRTSEFLRSIsIEVSUl9MSUJfU1NMLCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVAorICAgIHsiQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0FUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVH0sCisgICNlbHNlCisgICAgeyJBVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFQiLCBFUlJfTElCX1NTTCwgMjcyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQUxFUlRfUkVDT1JECisgICAgeyJCQURfQUxFUlRfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9BTEVSVF9SRUNPUkR9LAorICAjZWxzZQorICAgIHsiQkFEX0FMRVJUX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCAxMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9BVVRIRU5USUNBVElPTl9UWVBFCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQVVUSEVOVElDQVRJT05fVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfQVVUSEVOVElDQVRJT05fVFlQRSIsIEVSUl9MSUJfU1NMLCAxMDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9DSEFOR0VfQ0lQSEVSX1NQRUMKKyAgICB7IkJBRF9DSEFOR0VfQ0lQSEVSX1NQRUMiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIQU5HRV9DSVBIRVJfU1BFQ30sCisgICNlbHNlCisgICAgeyJCQURfQ0hBTkdFX0NJUEhFUl9TUEVDIiwgRVJSX0xJQl9TU0wsIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0NIRUNLU1VNCisgICAgeyJCQURfQ0hFQ0tTVU0iLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0NIRUNLU1VNfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9DSEVDS1NVTSIsIEVSUl9MSUJfU1NMLCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EQVRBX1JFVFVSTkVEX0JZX0NBTExCQUNLCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJCQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCAxMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ERUNPTVBSRVNTSU9OCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREVDT01QUkVTU0lPTn0sCisgICNlbHNlCisgICAgeyJCQURfREVDT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAxMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESF9HX0xFTkdUSAorICAgIHsiQkFEX0RIX0dfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESF9HX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfREhfR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEgKKyAgICB7IkJBRF9ESF9QVUJfS0VZX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREhfUFVCX0tFWV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RIX1BVQl9LRVlfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RIX1BfTEVOR1RICisgICAgeyJCQURfREhfUF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RIX1BfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESF9QX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESUdFU1RfTEVOR1RICisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRElHRVNUX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfRElHRVNUX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9EU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRFNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ0NfQ0VSVAorICAgIHsiQkFEX0VDQ19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0NfQ0VSVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNDX0NFUlQiLCBFUlJfTElCX1NTTCwgMzA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRUNEU0FfU0lHTkFUVVJFCisgICAgeyJCQURfRUNEU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9FQ0RTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX0VDRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAzMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9FQ1BPSU5UCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRUNQT0lOVH0sCisgICNlbHNlCisgICAgeyJCQURfRUNQT0lOVCIsIEVSUl9MSUJfU1NMLCAzMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IQU5EU0hBS0VfTEVOR1RICisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEFORFNIQUtFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfSEFORFNIQUtFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9IRUxMT19SRVFVRVNUCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfSEVMTE9fUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJCQURfSEVMTE9fUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9MRU5HVEgKKyAgICB7IkJBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19ERUNPREUKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfREVDT0RFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfREVDT0RFIiwgRVJSX0xJQl9TU0wsIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01BQ19MRU5HVEgKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9NQUNfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMzM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX01FU1NBR0VfVFlQRQorICAgIHsiQkFEX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTUVTU0FHRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUEFDS0VUX0xFTkdUSAorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1BBQ0tFVF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1BBQ0tFVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVIKKyAgICB7IkJBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSAorICAgIHsiQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlQKKyAgICB7IkJBRF9SRVNQT05TRV9BUkdVTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUkVTUE9OU0VfQVJHVU1FTlR9LAorICAjZWxzZQorICAgIHsiQkFEX1JFU1BPTlNFX0FSR1VNRU5UIiwgRVJSX0xJQl9TU0wsIDExN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9ERUNSWVBUCisgICAgeyJCQURfUlNBX0RFQ1JZUFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9ERUNSWVBUfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfREVDUllQVCIsIEVSUl9MSUJfU1NMLCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfRU5DUllQVAorICAgIHsiQkFEX1JTQV9FTkNSWVBUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRU5DUllQVH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX0VOQ1JZUFQiLCBFUlJfTElCX1NTTCwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX0VfTEVOR1RICisgICAgeyJCQURfUlNBX0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9FX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfTU9EVUxVU19MRU5HVEgKKyAgICB7IkJBRF9SU0FfTU9EVUxVU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JTQV9NT0RVTFVTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX01PRFVMVVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9TSUdOQVRVUkUKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDEyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NJR05BVFVSRQorICAgIHsiQkFEX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU1NMX0ZJTEVUWVBFCisgICAgeyJCQURfU1NMX0ZJTEVUWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TU0xfRklMRVRZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX1NTTF9GSUxFVFlQRSIsIEVSUl9MSUJfU1NMLCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgKKyAgICB7IkJBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfU1NMX1NFU1NJT05fSURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEyNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NUQVRFCisgICAgeyJCQURfU1RBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NUQVRFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TVEFURSIsIEVSUl9MSUJfU1NMLCAxMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9XUklURV9SRVRSWQorICAgIHsiQkFEX1dSSVRFX1JFVFJZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9XUklURV9SRVRSWX0sCisgICNlbHNlCisgICAgeyJCQURfV1JJVEVfUkVUUlkiLCBFUlJfTElCX1NTTCwgMTI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CSU9fTk9UX1NFVAorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQklPX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTI4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CTE9DS19DSVBIRVJfUEFEX0lTX1dST05HCisgICAgeyJCTE9DS19DSVBIRVJfUEFEX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCAxMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JOX0xJQgorICAgIHsiQk5fTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JOX0xJQn0sCisgICNlbHNlCisgICAgeyJCTl9MSUIiLCBFUlJfTElCX1NTTCwgMTMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNBX0ROX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DQV9ETl9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ0FfRE5fTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0FfRE5fVE9PX0xPTkcKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NBX0ROX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNBX0ROX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDEzMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZCisgICAgeyJDQ1NfUkVDRUlWRURfRUFSTFkiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0NTX1JFQ0VJVkVEX0VBUkxZfSwKKyAgI2Vsc2UKKyAgICB7IkNDU19SRUNFSVZFRF9FQVJMWSIsIEVSUl9MSUJfU1NMLCAxMzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQKKyAgICB7IkNFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDEzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0VSVF9MRU5HVEhfTUlTTUFUQ0gKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NFUlRfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkNFUlRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDEzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVAorICAgIHsiQ0hBTExFTkdFX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSEFMTEVOR0VfSVNfRElGRkVSRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkNIQUxMRU5HRV9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTM2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgKKyAgICB7IkNJUEhFUl9DT0RFX1dST05HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfQ09ERV9XUk9OR19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEzN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX09SX0hBU0hfVU5BVkFJTEFCTEUKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIDEzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUgorICAgIHsiQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfVEFCTEVfU1JDX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9UQUJMRV9TUkNfRVJST1IiLCBFUlJfTElCX1NTTCwgMTM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFQKKyAgICB7IkNMSUVOVEhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DTElFTlRIRUxMT19UTFNFWFR9LAorICAjZWxzZQorICAgIHsiQ0xJRU5USEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIDIyNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NFRF9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRElTQUJMRUQKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTVBSRVNTSU9OX0RJU0FCTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIDM0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fRkFJTFVSRQorICAgIHsiQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMTQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UKKyAgICB7IkNPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0V9LAorICAjZWxzZQorICAgIHsiQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFIiwgRVJSX0xJQl9TU0wsIDMwN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUgorICAgIHsiQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IiLCBFUlJfTElCX1NTTCwgMTQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMTQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT05ORUNUSU9OX1RZUEVfTk9UX1NFVAorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiQ09OTkVDVElPTl9UWVBFX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMTQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DT09LSUVfTUlTTUFUQ0gKKyAgICB7IkNPT0tJRV9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT09LSUVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiQ09PS0lFX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDMwOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9CRVRXRUVOX0NDU19BTkRfRklOSVNIRUQKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVEIiwgRVJSX0xJQl9TU0wsIDE0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREFUQV9MRU5HVEhfVE9PX0xPTkcKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkRBVEFfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDE0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRUQKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDE0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREVDUllQVElPTl9GQUlMRURfT1JfQkFEX1JFQ09SRF9NQUMKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDfSwKKyAgI2Vsc2UKKyAgICB7IkRFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDIiwgRVJSX0xJQl9TU0wsIDI4MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORworICAgIHsiREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HfSwKKyAgI2Vsc2UKKyAgICB7IkRIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgMTQ4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9ESUdFU1RfQ0hFQ0tfRkFJTEVECisgICAgeyJESUdFU1RfQ0hFQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RJR0VTVF9DSEVDS19GQUlMRUR9LAorICAjZWxzZQorICAgIHsiRElHRVNUX0NIRUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxNDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RUTFNfTUVTU0FHRV9UT09fQklHCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EVExTX01FU1NBR0VfVE9PX0JJR30sCisgICNlbHNlCisgICAgeyJEVExTX01FU1NBR0VfVE9PX0JJRyIsIEVSUl9MSUJfU1NMLCAzMzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRAorICAgIHsiRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0RVUExJQ0FURV9DT01QUkVTU0lPTl9JRH0sCisgICNlbHNlCisgICAgeyJEVVBMSUNBVEVfQ09NUFJFU1NJT05fSUQiLCBFUlJfTElCX1NTTCwgMzA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlQKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlR9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UIiwgRVJSX0xJQl9TU0wsIDMxN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfU0lHTklORyIsIEVSUl9MSUJfU1NMLCAzMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfU0hPVUxEX0hBVkVfU0hBMV9TSUdOQVRVUkUKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDMyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUgorICAgIHsiRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IkVDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMzEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HCisgICAgeyJFTkNSWVBURURfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkKKyAgICB7IkVSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWX0sCisgICNlbHNlCisgICAgeyJFUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIDI4Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVJST1JfSU5fUkVDRUlWRURfQ0lQSEVSX0xJU1QKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IkVSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVhDRVNTSVZFX01FU1NBR0VfU0laRQorICAgIHsiRVhDRVNTSVZFX01FU1NBR0VfU0laRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWENFU1NJVkVfTUVTU0FHRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IkVYQ0VTU0lWRV9NRVNTQUdFX1NJWkUiLCBFUlJfTElCX1NTTCwgMTUyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0UKKyAgICB7IkVYVFJBX0RBVEFfSU5fTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FWFRSQV9EQVRBX0lOX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiRVhUUkFfREFUQV9JTl9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfR09UX0FfRklOX0JFRk9SRV9BX0NDUworICAgIHsiR09UX0FfRklOX0JFRk9SRV9BX0NDUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9HT1RfQV9GSU5fQkVGT1JFX0FfQ0NTfSwKKyAgI2Vsc2UKKyAgICB7IkdPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MiLCBFUlJfTElCX1NTTCwgMTU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUCisgICAgeyJIVFRQU19QUk9YWV9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBTX1BST1hZX1JFUVVFU1R9LAorICAjZWxzZQorICAgIHsiSFRUUFNfUFJPWFlfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCAxNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0hUVFBfUkVRVUVTVAorICAgIHsiSFRUUF9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0hUVFBfUkVRVUVTVH0sCisgICNlbHNlCisgICAgeyJIVFRQX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgMTU2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTExFR0FMX1BBRERJTkcKKyAgICB7IklMTEVHQUxfUEFERElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTExFR0FMX1BBRERJTkd9LAorICAjZWxzZQorICAgIHsiSUxMRUdBTF9QQURESU5HIiwgRVJSX0xJQl9TU0wsIDI4M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OCisgICAgeyJJTkNPTlNJU1RFTlRfQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IklOQ09OU0lTVEVOVF9DT01QUkVTU0lPTiIsIEVSUl9MSUJfU1NMLCAzNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSAorICAgIHsiSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ0hBTExFTkdFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTU4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX0NPTU1BTkQKKyAgICB7IklOVkFMSURfQ09NTUFORCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX0NPTU1BTkR9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9DT01NQU5EIiwgRVJSX0xJQl9TU0wsIDI4MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9DT01QUkVTU0lPTl9BTEdPUklUSE0KKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIDM0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9QVVJQT1NFCisgICAgeyJJTlZBTElEX1BVUlBPU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9QVVJQT1NFfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfUFVSUE9TRSIsIEVSUl9MSUJfU1NMLCAyNzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAzMjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVElDS0VUX0tFWVNfTEVOR1RICisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfVFJVU1QKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9UUlVTVH0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9TU0wsIDI3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS0VZX0FSR19UT09fTE9ORworICAgIHsiS0VZX0FSR19UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LRVlfQVJHX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9BUkdfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjg0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1CisgICAgeyJLUkI1IiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjV9LAorICAjZWxzZQorICAgIHsiS1JCNSIsIEVSUl9MSUJfU1NMLCAyODV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19DQ19QUklOQworICAgIHsiS1JCNV9DX0NDX1BSSU5DIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19DQ19QUklOQ30sCisgICNlbHNlCisgICAgeyJLUkI1X0NfQ0NfUFJJTkMiLCBFUlJfTElCX1NTTCwgMjg2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfR0VUX0NSRUQKKyAgICB7IktSQjVfQ19HRVRfQ1JFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfR0VUX0NSRUR9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX0dFVF9DUkVEIiwgRVJSX0xJQl9TU0wsIDI4N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX0lOSVQKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfQ19JTklUfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19JTklUIiwgRVJSX0xJQl9TU0wsIDI4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX01LX1JFUQorICAgIHsiS1JCNV9DX01LX1JFUSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfTUtfUkVRfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19NS19SRVEiLCBFUlJfTElCX1NTTCwgMjg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfQkFEX1RJQ0tFVAorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0JBRF9USUNLRVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0JBRF9USUNLRVQiLCBFUlJfTElCX1NTTCwgMjkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfSU5JVAorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX0lOSVR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX0lOSVQiLCBFUlJfTElCX1NTTCwgMjkxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfUkRfUkVRCisgICAgeyJLUkI1X1NfUkRfUkVRIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19SRF9SRVF9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1JEX1JFUSIsIEVSUl9MSUJfU1NMLCAyOTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRAorICAgIHsiS1JCNV9TX1RLVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19US1RfRVhQSVJFRH0sCisgICNlbHNlCisgICAgeyJLUkI1X1NfVEtUX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgMjkzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX05ZVgorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1RLVF9OWVZ9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9OWVYiLCBFUlJfTElCX1NTTCwgMjk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX1NLRVcKKyAgICB7IktSQjVfU19US1RfU0tFVyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfVEtUX1NLRVd9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9TS0VXIiwgRVJSX0xJQl9TU0wsIDI5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTEVOR1RIX01JU01BVENICisgICAgeyJMRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkxFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAxNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xFTkdUSF9UT09fU0hPUlQKKyAgICB7IkxFTkdUSF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTEVOR1RIX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJMRU5HVEhfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIDE2MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9CVUcKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xJQlJBUllfQlVHfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfQlVHIiwgRVJSX0xJQl9TU0wsIDI3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUworICAgIHsiTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MSUJSQVJZX0hBU19OT19DSVBIRVJTfSwKKyAgI2Vsc2UKKyAgICB7IkxJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgMTYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NRVNTQUdFX1RPT19MT05HCisgICAgeyJNRVNTQUdFX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01FU1NBR0VfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiTUVTU0FHRV9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyOTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfREhfRFNBX0NFUlQKKyAgICB7Ik1JU1NJTkdfREhfRFNBX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19ESF9EU0FfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RIX0RTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIDE2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9LRVkKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfS0VZIiwgRVJSX0xJQl9TU0wsIDE2M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19ESF9SU0FfQ0VSVAorICAgIHsiTUlTU0lOR19ESF9SU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RIX1JTQV9DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfREhfUlNBX0NFUlQiLCBFUlJfTElCX1NTTCwgMTY0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19EU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTY2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0VYUE9SVF9UTVBfUlNBX0tFWQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgMTY3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9DRVJUSUZJQ0FURQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTY4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlQKKyAgICB7Ik1JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUIiwgRVJSX0xJQl9TU0wsIDE2OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUCisgICAgeyJNSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfU0lHTklOR19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgMTcxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9FQ0RIX0tFWQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfRUNESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfRUNESF9LRVkiLCBFUlJfTElCX1NTTCwgMzExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCAxNzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVE1QX1JTQV9QS0VZCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfUEtFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1RNUF9SU0FfUEtFWSIsIEVSUl9MSUJfU1NMLCAxNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfVkVSSUZZX01FU1NBR0UKKyAgICB7Ik1JU1NJTkdfVkVSSUZZX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19WRVJJRllfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1ZFUklGWV9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDE3NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUCisgICAgeyJOT05fU1NMVjJfSU5JVElBTF9QQUNLRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVCIsIEVSUl9MSUJfU1NMLCAxNzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFU19SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURVNfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9BU1NJR05FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9SRVRVUk5FRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTc4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURV9TRVR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVfU0VUIiwgRVJSX0xJQl9TU0wsIDE3OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVECisgICAgeyJOT19DRVJUSUZJQ0FURV9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfQVZBSUxBQkxFCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX0FWQUlMQUJMRX0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxODF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfUEFTU0VECisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1BBU1NFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCAxODJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUlNfU1BFQ0lGSUVECisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJTX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJTX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9MSVNUCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJfTElTVH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCAxODR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NJUEhFUl9NQVRDSAorICAgIHsiTk9fQ0lQSEVSX01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NJUEhFUl9NQVRDSH0sCisgICNlbHNlCisgICAgeyJOT19DSVBIRVJfTUFUQ0giLCBFUlJfTElCX1NTTCwgMTg1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0QKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX01FVEhPRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DTElFTlRfQ0VSVF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiTk9fQ0xJRU5UX0NFUlRfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIDMzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfUkVDRUlWRUQKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX1JFQ0VJVkVEIiwgRVJSX0xJQl9TU0wsIDE4Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVECisgICAgeyJOT19DT01QUkVTU0lPTl9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NPTVBSRVNTSU9OX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0dPU1RfQ0VSVElGSUNBVEVfU0VOVF9CWV9QRUVSCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUn0sCisgICNlbHNlCisgICAgeyJOT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUiIsIEVSUl9MSUJfU1NMLCAzMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX01FVEhPRF9TUEVDSUZJRUQKKyAgICB7Ik5PX01FVEhPRF9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fTUVUSE9EX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19NRVRIT0RfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIDE4OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFJJVkFURUtFWQorICAgIHsiTk9fUFJJVkFURUtFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QUklWQVRFS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BSSVZBVEVLRVkiLCBFUlJfTElCX1NTTCwgMTg5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUklWQVRFX0tFWV9BU1NJR05FRAorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFJJVkFURV9LRVlfQVNTSUdORUR9LAorICAjZWxzZQorICAgIHsiTk9fUFJJVkFURV9LRVlfQVNTSUdORUQiLCBFUlJfTElCX1NTTCwgMTkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QUk9UT0NPTFNfQVZBSUxBQkxFCisgICAgeyJOT19QUk9UT0NPTFNfQVZBSUxBQkxFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BST1RPQ09MU19BVkFJTEFCTEV9LAorICAjZWxzZQorICAgIHsiTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxOTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BVQkxJQ0tFWQorICAgIHsiTk9fUFVCTElDS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BVQkxJQ0tFWX0sCisgICNlbHNlCisgICAgeyJOT19QVUJMSUNLRVkiLCBFUlJfTElCX1NTTCwgMTkyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19SRU5FR09USUFUSU9OCisgICAgeyJOT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFTkVHT1RJQVRJT059LAorICAjZWxzZQorICAgIHsiTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCAzMzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVAorICAgIHsiTk9fUkVRVUlSRURfRElHRVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1JFUVVJUkVEX0RJR0VTVH0sCisgICNlbHNlCisgICAgeyJOT19SRVFVSVJFRF9ESUdFU1QiLCBFUlJfTElCX1NTTCwgMzI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19TSEFSRURfQ0lQSEVSCisgICAgeyJOT19TSEFSRURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1NIQVJFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiTk9fU0hBUkVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAxOTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDSworICAgIHsiTk9fVkVSSUZZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1ZFUklGWV9DQUxMQkFDS30sCisgICNlbHNlCisgICAgeyJOT19WRVJJRllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgMTk0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OVUxMX1NTTF9DVFgKKyAgICB7Ik5VTExfU1NMX0NUWCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9DVFh9LAorICAjZWxzZQorICAgIHsiTlVMTF9TU0xfQ1RYIiwgRVJSX0xJQl9TU0wsIDE5NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTlVMTF9TU0xfTUVUSE9EX1BBU1NFRAorICAgIHsiTlVMTF9TU0xfTUVUSE9EX1BBU1NFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OVUxMX1NTTF9NRVRIT0RfUEFTU0VEfSwKKyAgI2Vsc2UKKyAgICB7Ik5VTExfU1NMX01FVEhPRF9QQVNTRUQiLCBFUlJfTElCX1NTTCwgMTk2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVECisgICAgeyJPTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAxOTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQKKyAgICB7Ik9MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJPTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDM0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT05MWV9UTFNfQUxMT1dFRF9JTl9GSVBTX01PREUKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFfSwKKyAgI2Vsc2UKKyAgICB7Ik9OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFIiwgRVJSX0xJQl9TU0wsIDI5N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORworICAgIHsiT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7Ik9QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMzI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQUNLRVRfTEVOR1RIX1RPT19MT05HCisgICAgeyJQQUNLRVRfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBQ0tFVF9MRU5HVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFDS0VUX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxOTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BBUlNFX1RMU0VYVAorICAgIHsiUEFSU0VfVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBUlNFX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJQQVJTRV9UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjI3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQVRIX1RPT19MT05HCisgICAgeyJQQVRIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BBVEhfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUEFUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMTk5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SCisgICAgeyJQRUVSX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1J9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUiIsIEVSUl9MSUJfU1NMLCAyMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfQ0VSVElGSUNBVEUKKyAgICB7IlBFRVJfRVJST1JfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIwMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURQorICAgIHsiUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgMjAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX05PX0NJUEhFUgorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9OT19DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9OT19DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEUKKyAgICB7IlBFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIDIwNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJFX01BQ19MRU5HVEhfVE9PX0xPTkcKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BSRV9NQUNfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlBSRV9NQUNfTEVOR1RIX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDIwNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TCisgICAgeyJQUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TfSwKKyAgI2Vsc2UKKyAgICB7IlBST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OUyIsIEVSUl9MSUJfU1NMLCAyMDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BST1RPQ09MX0lTX1NIVVRET1dOCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QUk9UT0NPTF9JU19TSFVURE9XTn0sCisgICNlbHNlCisgICAgeyJQUk9UT0NPTF9JU19TSFVURE9XTiIsIEVSUl9MSUJfU1NMLCAyMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkQKKyAgICB7IlBTS19JREVOVElUWV9OT1RfRk9VTkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFNLX0lERU5USVRZX05PVF9GT1VORH0sCisgICNlbHNlCisgICAgeyJQU0tfSURFTlRJVFlfTk9UX0ZPVU5EIiwgRVJSX0xJQl9TU0wsIDIyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFNLX05PX0NMSUVOVF9DQgorICAgIHsiUFNLX05PX0NMSUVOVF9DQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QU0tfTk9fQ0xJRU5UX0NCfSwKKyAgI2Vsc2UKKyAgICB7IlBTS19OT19DTElFTlRfQ0IiLCBFUlJfTElCX1NTTCwgMjI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCCisgICAgeyJQU0tfTk9fU0VSVkVSX0NCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BTS19OT19TRVJWRVJfQ0J9LAorICAjZWxzZQorICAgIHsiUFNLX05PX1NFUlZFUl9DQiIsIEVSUl9MSUJfU1NMLCAyMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BVQkxJQ19LRVlfRU5DUllQVF9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgMjA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0EKKyAgICB7IlBVQkxJQ19LRVlfSVNfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QVUJMSUNfS0VZX0lTX05PVF9SU0F9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9JU19OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIDIwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBCisgICAgeyJQVUJMSUNfS0VZX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFVCTElDX0tFWV9OT1RfUlNBfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCAyMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQURfQklPX05PVF9TRVQKKyAgICB7IlJFQURfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVBRF9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJSRUFEX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDIxMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9USU1FT1VUX0VYUElSRUQKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQURfVElNRU9VVF9FWFBJUkVEfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfVElNRU9VVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIDMxMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVBRF9XUk9OR19QQUNLRVRfVFlQRQorICAgIHsiUkVBRF9XUk9OR19QQUNLRVRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUFEX1dST05HX1BBQ0tFVF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfV1JPTkdfUEFDS0VUX1RZUEUiLCBFUlJfTElCX1NTTCwgMjEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUNPUkRfTEVOR1RIX01JU01BVENICisgICAgeyJSRUNPUkRfTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQ09SRF9MRU5HVEhfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiUkVDT1JEX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAyMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQ09SRF9UT09fTEFSR0UKKyAgICB7IlJFQ09SRF9UT09fTEFSR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVDT1JEX1RPT19MQVJHRX0sCisgICNlbHNlCisgICAgeyJSRUNPUkRfVE9PX0xBUkdFIiwgRVJSX0xJQl9TU0wsIDIxNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVDT1JEX1RPT19TTUFMTAorICAgIHsiUkVDT1JEX1RPT19TTUFMTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUNPUkRfVE9PX1NNQUxMfSwKKyAgI2Vsc2UKKyAgICB7IlJFQ09SRF9UT09fU01BTEwiLCBFUlJfTElCX1NTTCwgMjk4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkcKKyAgICB7IlJFTkVHT1RJQVRFX0VYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFURV9FWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiUkVORUdPVElBVEVfRVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9FTkNPRElOR19FUlIKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSIiwgRVJSX0xJQl9TU0wsIDMzNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSAorICAgIHsiUkVORUdPVElBVElPTl9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFUSU9OX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRJT05fTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMzM3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DSVBIRVJfTUlTU0lORworICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVRVUlSRURfQ0lQSEVSX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ0lQSEVSX01JU1NJTkciLCBFUlJfTElCX1NTTCwgMjE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkcKKyAgICB7IlJFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkd9LAorICAjZWxzZQorICAgIHsiUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIDM0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9MRU5HVEhfTk9UX1pFUk8KKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIDIxNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPCisgICAgeyJSRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPfSwKKyAgI2Vsc2UKKyAgICB7IlJFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFVVNFX0NJUEhFUl9MSVNUX05PVF9aRVJPCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVST30sCisgICNlbHNlCisgICAgeyJSRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NDU1ZfUkVDRUlWRURfV0hFTl9SRU5FR09USUFUSU5HCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElOR30sCisgICNlbHNlCisgICAgeyJTQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORyIsIEVSUl9MSUJfU1NMLCAzNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVAorICAgIHsiU0VSVkVSSEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NFUlZFUkhFTExPX1RMU0VYVH0sCisgICNlbHNlCisgICAgeyJTRVJWRVJIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgMjc1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TRVNTSU9OX0lEX0NPTlRFWFRfVU5JTklUSUFMSVpFRAorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUR9LAorICAjZWxzZQorICAgIHsiU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TSE9SVF9SRUFECisgICAgeyJTSE9SVF9SRUFEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NIT1JUX1JFQUR9LAorICAjZWxzZQorICAgIHsiU0hPUlRfUkVBRCIsIEVSUl9MSUJfU1NMLCAyMTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUKKyAgICB7IlNJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRQorICAgIHsiU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0UiLCBFUlJfTElCX1NTTCwgMjIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI5OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVCIsIEVSUl9MSUJfU1NMLCAzMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRX0sCisgICNlbHNlCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUUiLCBFUlJfTElCX1NTTCwgMzE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUVfVFlQRQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEV9LAorICAjZWxzZQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUiLCBFUlJfTElCX1NTTCwgMzIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkcKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMwMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVAorICAgIHsiU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgMjIyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0JBRF9SRUNPUkRfTUFDCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQ30sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCAxMDIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCAxMDQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VECisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUR9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRCIsIEVSUl9MSUJfU1NMLCAxMDQ0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOCisgICAgeyJTU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV059LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTiIsIEVSUl9MSUJfU1NMLCAxMDQ2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkUKKyAgICB7IlNTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDEwMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAxMDQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9JTExFR0FMX1BBUkFNRVRFUgorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVJ9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIiLCBFUlJfTElCX1NTTCwgMTA0N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfTk9fQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRQorICAgIHsiU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgMTAxMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfVU5TVVBQT1JURURfQ0VSVElGSUNBVEUKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDEwNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04KKyAgICB7IlNTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJTU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDIyOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFCisgICAgeyJTU0xfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0hBTkRTSEFLRV9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9IQU5EU0hBS0VfRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAyMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9MSUJSQVJZX0hBU19OT19DSVBIRVJTCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSU30sCisgICNlbHNlCisgICAgeyJTU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUyIsIEVSUl9MSUJfU1NMLCAyMzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRAorICAgIHsiU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgMzAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05GTElDVAorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09ORkxJQ1R9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QiLCBFUlJfTElCX1NTTCwgMzAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HCisgICAgeyJTU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkd9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyNzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0hBU19CQURfTEVOR1RICisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVAorICAgIHsiU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVH0sCisgICNlbHNlCisgICAgeyJTU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgMjMxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVECisgICAgeyJUTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUR9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRCIsIEVSUl9MSUJfU1NMLCAxMDQ5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwNTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRJT05fRkFJTEVECisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxMDIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SCisgICAgeyJUTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1J9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMDUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT04KKyAgICB7IlRMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OIiwgRVJSX0xJQl9TU0wsIDEwNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWQorICAgIHsiVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFkiLCBFUlJfTElCX1NTTCwgMTA3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1IKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEwODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04KKyAgICB7IlRMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIDExMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04KKyAgICB7IlRMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDEwNzB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPVworICAgIHsiVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPV30sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1ciLCBFUlJfTElCX1NTTCwgMTAyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVU5LTk9XTl9DQQorICAgIHsiVExTVjFfQUxFUlRfVU5LTk9XTl9DQSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9VTktOT1dOX0NBfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VOS05PV05fQ0EiLCBFUlJfTElCX1NTTCwgMTA0OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfVVNFUl9DQU5DRUxMRUQKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVEIiwgRVJSX0xJQl9TU0wsIDEwOTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9IQVNIX1ZBTFVFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRSIsIEVSUl9MSUJfU1NMLCAxMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFCisgICAgeyJUTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0V9LAorICAjZWxzZQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCAxMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUKKyAgICB7IlRMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEV9LAorICAjZWxzZQorICAgIHsiVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFIiwgRVJSX0xJQl9TU0wsIDExMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX1VOUkVDT0dOSVpFRF9OQU1FCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlJFQ09HTklaRURfTkFNRX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9VTlJFQ09HTklaRURfTkFNRSIsIEVSUl9MSUJfU1NMLCAxMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04KKyAgICB7IlRMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OIiwgRVJSX0xJQl9TU0wsIDExMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUgorICAgIHsiVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJUTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjMyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QKKyAgICB7IlRMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1R9LAorICAjZWxzZQorICAgIHsiVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUIiwgRVJSX0xJQl9TU0wsIDE1N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVAorICAgIHsiVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QiLCBFUlJfTElCX1NTTCwgMjMzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkcKKyAgICB7IlRMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkd9LAorICAjZWxzZQorICAgIHsiVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIDIzNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUgorICAgIHsiVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlRSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMjM1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfREhfQ0VSVFN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCAyMzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUUworICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgMzEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWSIsIEVSUl9MSUJfU1NMLCAyMzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMKKyAgICB7IlVOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIDIzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTCisgICAgeyJVTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCAzMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSUworICAgIHsiVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgMjM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9TU0xfTUVUSE9ECisgICAgeyJVTkFCTEVfVE9fRklORF9TU0xfTUVUSE9EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0R9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRCIsIEVSUl9MSUJfU1NMLCAyNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDJfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfTUQ1X1JPVVRJTkVTCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCAyNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FUworICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgMjQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0UKKyAgICB7IlVORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkVYUEVDVEVEX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDI0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5FWFBFQ1RFRF9SRUNPUkQKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VORVhQRUNURURfUkVDT1JEfSwKKyAgI2Vsc2UKKyAgICB7IlVORVhQRUNURURfUkVDT1JEIiwgRVJSX0xJQl9TU0wsIDI0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5JTklUSUFMSVpFRAorICAgIHsiVU5JTklUSUFMSVpFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTklOSVRJQUxJWkVEfSwKKyAgI2Vsc2UKKyAgICB7IlVOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgMjc2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEUKKyAgICB7IlVOS05PV05fQUxFUlRfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0FMRVJUX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9BTEVSVF9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFCisgICAgeyJVTktOT1dOX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1JFVFVSTkVECisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAyNDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0lQSEVSX1RZUEUKKyAgICB7IlVOS05PV05fQ0lQSEVSX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DSVBIRVJfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NJUEhFUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI0OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRQorICAgIHsiVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BLRVlfVFlQRQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9QS0VZX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QS0VZX1RZUEUiLCBFUlJfTElCX1NTTCwgMjUxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1BST1RPQ09MCisgICAgeyJVTktOT1dOX1BST1RPQ09MIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fUFJPVE9DT0x9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUKKyAgICB7IlVOS05PV05fUkVNT1RFX0VSUk9SX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFIiwgRVJSX0xJQl9TU0wsIDI1M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9TU0xfVkVSU0lPTgorICAgIHsiVU5LTk9XTl9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjU0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1NUQVRFCisgICAgeyJVTktOT1dOX1NUQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fU1RBVEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9TVEFURSIsIEVSUl9MSUJfU1NMLCAyNTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRAorICAgIHsiVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRH0sCisgICNlbHNlCisgICAgeyJVTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUQiLCBFUlJfTElCX1NTTCwgMzM4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVIKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDI1Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNCisgICAgeyJVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCAyNTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0RJR0VTVF9UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9ESUdFU1RfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9ESUdFU1RfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0VMTElQVElDX0NVUlZFCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRSIsIEVSUl9MSUJfU1NMLCAzMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1BST1RPQ09MCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9QUk9UT0NPTH0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCAyNTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NTTF9WRVJTSU9OCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyNTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX1NUQVRVU19UWVBFCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNVUFBPUlRFRF9TVEFUVVNfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9TVEFUVVNfVFlQRSIsIEVSUl9MSUJfU1NMLCAzMjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dSSVRFX0JJT19OT1RfU0VUCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUklURV9CSU9fTk9UX1NFVH0sCisgICNlbHNlCisgICAgeyJXUklURV9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAyNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRAorICAgIHsiV1JPTkdfQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX0NJUEhFUl9SRVRVUk5FRH0sCisgICNlbHNlCisgICAgeyJXUk9OR19DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMjYxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEUKKyAgICB7IldST05HX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19NRVNTQUdFX1RZUEV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI2Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTCisgICAgeyJXUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFMiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX05VTUJFUl9PRl9LRVlfQklUUyIsIEVSUl9MSUJfU1NMLCAyNjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1NJR05BVFVSRV9MRU5HVEgKKyAgICB7IldST05HX1NJR05BVFVSRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJXUk9OR19TSUdOQVRVUkVfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDI2NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU0lHTkFUVVJFX1NJWkUKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NJR05BVFVSRV9TSVpFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NJR05BVFVSRV9TSVpFIiwgRVJSX0xJQl9TU0wsIDI2NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfU1NMX1ZFUlNJT04KKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NTTF9WRVJTSU9OfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDI2Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfVkVSU0lPTl9OVU1CRVIKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1ZFUlNJT05fTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9TU0wsIDI2N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9MSUIKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfTElCfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfTElCIiwgRVJSX0xJQl9TU0wsIDI2OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfWDUwOV9WRVJJRklDQVRJT05fU0VUVVBfUFJPQkxFTVMKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TfSwKKyAgI2Vsc2UKKyAgICB7Ilg1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TIiwgRVJSX0xJQl9TU0wsIDI2OX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFCisgICAgeyJCQURfWDUwOV9GSUxFVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0JBRF9YNTA5X0ZJTEVUWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9YNTA5X0ZJTEVUWVBFIiwgRVJSX0xJQl9YNTA5LCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9CQVNFNjRfREVDT0RFX0VSUk9SCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQkFTRTY0X0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJCQVNFNjRfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCAxMTh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWQorICAgIHsiQ0FOVF9DSEVDS19ESF9LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9DQU5UX0NIRUNLX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJDQU5UX0NIRUNLX0RIX0tFWSIsIEVSUl9MSUJfWDUwOSwgMTE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUKKyAgICB7IkNFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEV9LAorICAjZWxzZQorICAgIHsiQ0VSVF9BTFJFQURZX0lOX0hBU0hfVEFCTEUiLCBFUlJfTElCX1g1MDksIDEwMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0VSUl9BU04xX0xJQgorICAgIHsiRVJSX0FTTjFfTElCIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfRVJSX0FTTjFfTElCfSwKKyAgI2Vsc2UKKyAgICB7IkVSUl9BU04xX0xJQiIsIEVSUl9MSUJfWDUwOSwgMTAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUlkKKyAgICB7IklOVkFMSURfRElSRUNUT1JZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9ESVJFQ1RPUll9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9ESVJFQ1RPUlkiLCBFUlJfTElCX1g1MDksIDExM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0lOVkFMSURfRklFTERfTkFNRQorICAgIHsiSU5WQUxJRF9GSUVMRF9OQU1FIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfSU5WQUxJRF9GSUVMRF9OQU1FfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfRklFTERfTkFNRSIsIEVSUl9MSUJfWDUwOSwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfSU5WQUxJRF9UUlVTVAorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0lOVkFMSURfVFJVU1R9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfWDUwOSwgMTIzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0gKKyAgICB7IktFWV9UWVBFX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfS0VZX1RZUEVfTUlTTUFUQ0h9LAorICAjZWxzZQorICAgIHsiS0VZX1RZUEVfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0tFWV9WQUxVRVNfTUlTTUFUQ0gKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIFg1MDlfUl9LRVlfVkFMVUVTX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9WQUxVRVNfTUlTTUFUQ0giLCBFUlJfTElCX1g1MDksIDExNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfQ0VSVF9ESVIKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0NFUlRfRElSfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfQ0VSVF9ESVIiLCBFUlJfTElCX1g1MDksIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0xPQURJTkdfREVGQVVMVFMKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9MT0FESU5HX0RFRkFVTFRTfSwKKyAgI2Vsc2UKKyAgICB7IkxPQURJTkdfREVGQVVMVFMiLCBFUlJfTElCX1g1MDksIDEwNH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVECisgICAgeyJNRVRIT0RfTk9UX1NVUFBPUlRFRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX01FVEhPRF9OT1RfU1VQUE9SVEVEfSwKKyAgI2Vsc2UKKyAgICB7Ik1FVEhPRF9OT1RfU1VQUE9SVEVEIiwgRVJSX0xJQl9YNTA5LCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9OT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWX0sCisgICNlbHNlCisgICAgeyJOT19DRVJUX1NFVF9GT1JfVVNfVE9fVkVSSUZZIiwgRVJSX0xJQl9YNTA5LCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUgorICAgIHsiUFVCTElDX0tFWV9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9QVUJMSUNfS0VZX0RFQ09ERV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgMTI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1IKKyAgICB7IlBVQkxJQ19LRVlfRU5DT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfUFVCTElDX0tFWV9FTkNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9FTkNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIDEyNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1NIT1VMRF9SRVRSWQorICAgIHsiU0hPVUxEX1JFVFJZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfU0hPVUxEX1JFVFJZfSwKKyAgI2Vsc2UKKyAgICB7IlNIT1VMRF9SRVRSWSIsIEVSUl9MSUJfWDUwOSwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTgorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU59LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUEFSQU1FVEVSU19JTl9DSEFJTiIsIEVSUl9MSUJfWDUwOSwgMTA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZCisgICAgeyJVTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVkiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTkFCTEVfVE9fR0VUX0NFUlRTX1BVQkxJQ19LRVl9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZIiwgRVJSX0xJQl9YNTA5LCAxMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX0tFWV9UWVBFCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9LRVlfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0tFWV9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX05JRAorICAgIHsiVU5LTk9XTl9OSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX05JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX05JRCIsIEVSUl9MSUJfWDUwOSwgMTA5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9QVVJQT1NFX0lECisgICAgeyJVTktOT1dOX1BVUlBPU0VfSUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTktOT1dOX1BVUlBPU0VfSUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9QVVJQT1NFX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTktOT1dOX1RSVVNUX0lECisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9UUlVTVF9JRH0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1RSVVNUX0lEIiwgRVJSX0xJQl9YNTA5LCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9VTlNVUFBPUlRFRF9BTEdPUklUSE0KKyAgICB7IlVOU1VQUE9SVEVEX0FMR09SSVRITSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOU1VQUE9SVEVEX0FMR09SSVRITX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9BTEdPUklUSE0iLCBFUlJfTElCX1g1MDksIDExMX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFCisgICAgeyJXUk9OR19MT09LVVBfVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1dST05HX0xPT0tVUF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX0xPT0tVUF9UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9XUk9OR19UWVBFCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfV1JPTkdfVFlQRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19UWVBFIiwgRVJSX0xJQl9YNTA5LCAxMjJ9LAorICAjZW5kaWYKKyAgICB7IE5VTEwgfQorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggNTU4ZDI0Yi4uMGIyMGUyNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTU4LDYgKzU4LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBmbG9hdCB4OyB9IHN0X2Zsb2F0OwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7CiAKICNkZWZpbmUgU0hPUlRfQUxJR04gKHNpemVvZihzdF9zaG9ydCkgLSBzaXplb2Yoc2hvcnQpKQogI2RlZmluZSBJTlRfQUxJR04gKHNpemVvZihzdF9pbnQpIC0gc2l6ZW9mKGludCkpCkBAIC02NSw2ICs2Niw3IEBACiAjZGVmaW5lIEZMT0FUX0FMSUdOIChzaXplb2Yoc3RfZmxvYXQpIC0gc2l6ZW9mKGZsb2F0KSkKICNkZWZpbmUgRE9VQkxFX0FMSUdOIChzaXplb2Yoc3RfZG91YmxlKSAtIHNpemVvZihkb3VibGUpKQogI2RlZmluZSBWT0lEX1BfQUxJR04gKHNpemVvZihzdF92b2lkX3ApIC0gc2l6ZW9mKHZvaWQgKikpCisjZGVmaW5lIFNJWkVfVF9BTElHTiAoc2l6ZW9mKHN0X3NpemVfdCkgLSBzaXplb2Yoc2l6ZV90KSkKIAogLyogV2UgY2FuJ3Qgc3VwcG9ydCBxIGFuZCBRIGluIG5hdGl2ZSBtb2RlIHVubGVzcyB0aGUgY29tcGlsZXIgZG9lczsKICAgIGluIHN0ZCBtb2RlLCB0aGV5J3JlIDggYnl0ZXMgb24gYWxsIHBsYXRmb3Jtcy4gKi8KQEAgLTIxMyw2ICsyMTUsNTIgQEAKIAogI2VuZGlmCiAKKy8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zc2l6ZV90KFB5T2JqZWN0ICp2LCBQeV9zc2l6ZV90ICpwKQoreworICAgIFB5X3NzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKHggPT0gKFB5X3NzaXplX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgKnAgPSB4OworICAgIHJldHVybiAwOworfQorCisvKiBTYW1lLCBidXQgaGFuZGxpbmcgc2l6ZV90ICovCisKK3N0YXRpYyBpbnQKK2dldF9zaXplX3QoUHlPYmplY3QgKnYsIHNpemVfdCAqcCkKK3sKKyAgICBzaXplX3QgeDsKKworICAgIHYgPSBnZXRfcHlsb25nKHYpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKKyAgICB4ID0gUHlMb25nX0FzU2l6ZV90KHYpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoeCA9PSAoc2l6ZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICpwID0geDsKKyAgICByZXR1cm4gMDsKK30KKwogCiAjZGVmaW5lIFJBTkdFX0VSUk9SKHgsIGYsIGZsYWcsIG1hc2spIHJldHVybiBfcmFuZ2VfZXJyb3IoZiwgZmxhZykKIApAQCAtMzY5LDYgKzQxNywyMyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh4KTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK251X3NzaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIFB5X3NzaXplX3QgeDsKKyAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitudV9zaXplX3QoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHNpemVfdCB4OworICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHgpOworfQorCisKIC8qIE5hdGl2ZSBtb2RlIGRvZXNuJ3Qgc3VwcG9ydCBxIG9yIFEgdW5sZXNzIHRoZSBwbGF0Zm9ybSBDIHN1cHBvcnRzCiAgICBsb25nIGxvbmcgKG9yLCBvbiBXaW5kb3dzLCBfX2ludDY0KS4gKi8KIApAQCAtNTU4LDYgKzYyMywyNiBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitucF9zc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgUHlfc3NpemVfdCB4OworICAgIGlmIChnZXRfc3NpemVfdCh2LCAmeCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbnBfc2l6ZV90KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgc2l6ZV90IHg7CisgICAgaWYgKGdldF9zaXplX3QodiwgJngpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CisgICAgcmV0dXJuIDA7Cit9CisKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogCiBzdGF0aWMgaW50CkBAIC02NTEsNiArNzM2LDggQEAKICAgICB7J0knLCAgICAgICBzaXplb2YoaW50KSwgICAgSU5UX0FMSUdOLCAgICAgIG51X3VpbnQsICAgICAgICBucF91aW50fSwKICAgICB7J2wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X2xvbmcsICAgICAgICBucF9sb25nfSwKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCisgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCisgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCkBAIC0xOTY0LDcgKzIwNTEsOCBAQAogICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCiBTcGVjaWFsIGNhc2VzIChwcmVjZWRpbmcgZGVjaW1hbCBjb3VudCBpbmRpY2F0ZXMgbGVuZ3RoKTpcblwKICAgczpzdHJpbmcgKGFycmF5IG9mIGNoYXIpOyBwOiBwYXNjYWwgc3RyaW5nICh3aXRoIGNvdW50IGJ5dGUpLlxuXAotU3BlY2lhbCBjYXNlIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKK1NwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXAorICBuOnNzaXplX3Q7IE46c2l6ZV90O1xuXAogICBQOmFuIGludGVnZXIgdHlwZSB0aGF0IGlzIHdpZGUgZW5vdWdoIHRvIGhvbGQgYSBwb2ludGVyLlxuXAogU3BlY2lhbCBjYXNlIChub3QgaW4gbmF0aXZlIG1vZGUgdW5sZXNzICdsb25nIGxvbmcnIGluIHBsYXRmb3JtIEMpOlxuXAogICBxOmxvbmcgbG9uZzsgUTp1bnNpZ25lZCBsb25nIGxvbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTY2NjZlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0wLDAgKzEsMjg3NSBAQAorLyogQyBFeHRlbnNpb24gbW9kdWxlIHRvIHRlc3QgYWxsIGFzcGVjdHMgb2YgUEVQLTMxMTguCisgICBXcml0dGVuIGJ5IFN0ZWZhbiBLcmFoLiAqLworCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKworLyogc3RydWN0IG1vZHVsZSAqLworUHlPYmplY3QgKnN0cnVjdG1vZHVsZSA9IE5VTEw7CitQeU9iamVjdCAqU3RydWN0ID0gTlVMTDsKK1B5T2JqZWN0ICpjYWxjc2l6ZSA9IE5VTEw7CisKKy8qIGNhY2hlIHNpbXBsZSBmb3JtYXQgc3RyaW5nICovCitzdGF0aWMgY29uc3QgY2hhciAqc2ltcGxlX2ZtdCA9ICJCIjsKK1B5T2JqZWN0ICpzaW1wbGVfZm9ybWF0ID0gTlVMTDsKKyNkZWZpbmUgU0lNUExFX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCB8fCBzdHJjbXAoZm10LCAiQiIpID09IDApCisjZGVmaW5lIEZJWF9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgPyAiQiIgOiBmbXQpCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5EQXJyYXkgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IE5EQXJyYXlfVHlwZTsKKyNkZWZpbmUgTkRBcnJheV9DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmTkRBcnJheV9UeXBlKQorCisjZGVmaW5lIENIRUNLX0xJU1RfT1JfVFVQTEUodikgXAorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpICYmICFQeVR1cGxlX0NoZWNrKHYpKSB7IFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICAgICAgICBcCisgICAgICAgICAgICAjdiAiIG11c3QgYmUgYSBsaXN0IG9yIGEgdHVwbGUiKTsgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisKKyNkZWZpbmUgUHlNZW1fWEZyZWUodikgXAorICAgIGRvIHsgaWYgKHYpIFB5TWVtX0ZyZWUodik7IH0gd2hpbGUgKDApCisKKy8qIE1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMuICovCisjZGVmaW5lIE5EX01BWF9ORElNICgyICogUHlCVUZfTUFYX05ESU0pCisKKy8qIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygc3Vib2Zmc2V0cyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLiAqLworI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzWzBdID49IDApCisvKiBBZGp1c3QgcHRyIGlmIHN1Ym9mZnNldHMgYXJlIHByZXNlbnQuICovCisjZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKSBcCisgICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMpID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzWzBdIDogcHRyKQorCisvKiBEZWZhdWx0OiBOdW1QeSBzdHlsZSAoc3RyaWRlcyksIHJlYWQtb25seSwgbm8gdmFyLWV4cG9ydCwgQy1zdHlsZSBsYXlvdXQgKi8KKyNkZWZpbmUgTkRfREVGQVVMVCAgICAgICAgICAweDAwMAorLyogVXNlciBjb25maWd1cmFibGUgZmxhZ3MgZm9yIHRoZSBuZGFycmF5ICovCisjZGVmaW5lIE5EX1ZBUkVYUE9SVCAgICAgICAgMHgwMDEgICAvKiBjaGFuZ2UgbGF5b3V0IHdoaWxlIGJ1ZmZlcnMgYXJlIGV4cG9ydGVkICovCisvKiBVc2VyIGNvbmZpZ3VyYWJsZSBmbGFncyBmb3IgZWFjaCBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9XUklUQUJMRSAgICAgICAgIDB4MDAyICAgLyogbWFyayBiYXNlIGJ1ZmZlciBhcyB3cml0YWJsZSAqLworI2RlZmluZSBORF9GT1JUUkFOICAgICAgICAgIDB4MDA0ICAgLyogRm9ydHJhbiBjb250aWd1b3VzIGxheW91dCAqLworI2RlZmluZSBORF9TQ0FMQVIgICAgICAgICAgIDB4MDA4ICAgLyogc2NhbGFyOiBuZGltID0gMCAqLworI2RlZmluZSBORF9QSUwgICAgICAgICAgICAgIDB4MDEwICAgLyogY29udmVydCB0byBQSUwtc3R5bGUgYXJyYXkgKHN1Ym9mZnNldHMpICovCisjZGVmaW5lIE5EX1JFRElSRUNUICAgICAgICAgMHgwMjAgICAvKiByZWRpcmVjdCBidWZmZXIgcmVxdWVzdHMgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX0ZBSUwgICAgICAweDA0MCAgIC8qIHRyaWdnZXIgZ2V0YnVmZmVyIGZhaWx1cmUgKi8KKyNkZWZpbmUgTkRfR0VUQlVGX1VOREVGSU5FRCAweDA4MCAgIC8qIHVuZGVmaW5lZCB2aWV3Lm9iaiAqLworLyogSW50ZXJuYWwgZmxhZ3MgZm9yIHRoZSBiYXNlIGJ1ZmZlciAqLworI2RlZmluZSBORF9DICAgICAgICAgICAgICAgIDB4MTAwICAgLyogQyBjb250aWd1b3VzIGxheW91dCAoZGVmYXVsdCkgKi8KKyNkZWZpbmUgTkRfT1dOX0FSUkFZUyAgICAgICAweDIwMCAgIC8qIGNvbnN1bWVyIG93bnMgYXJyYXlzICovCisKKy8qIG5kYXJyYXkgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9JU19DT05TVU1FUihuZCkgXAorICAgICgoKE5EQXJyYXlPYmplY3QgKiluZCktPmhlYWQgPT0gJigoTkRBcnJheU9iamVjdCAqKW5kKS0+c3RhdGljYnVmKQorCisvKiBuZGJ1Zi0+ZmxhZ3MgcHJvcGVydGllcyAqLworI2RlZmluZSBORF9DX0NPTlRJR1VPVVMoZmxhZ3MpICghIShmbGFncyYoTkRfU0NBTEFSfE5EX0MpKSkKKyNkZWZpbmUgTkRfRk9SVFJBTl9DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9GT1JUUkFOKSkpCisjZGVmaW5lIE5EX0FOWV9DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9DfE5EX0ZPUlRSQU4pKSkKKworLyogZ2V0YnVmZmVyKCkgcmVxdWVzdHMgKi8KKyNkZWZpbmUgUkVRX0lORElSRUNUKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0lORElSRUNUKSA9PSBQeUJVRl9JTkRJUkVDVCkKKyNkZWZpbmUgUkVRX0NfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9DX0NPTlRJR1VPVVMpID09IFB5QlVGX0NfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9GX0NPTlRJR1VPVVMpID09IFB5QlVGX0ZfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0FOWV9DT05USUdVT1VTKSA9PSBQeUJVRl9BTllfQ09OVElHVU9VUykKKyNkZWZpbmUgUkVRX1NUUklERVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfU1RSSURFUykgPT0gUHlCVUZfU1RSSURFUykKKyNkZWZpbmUgUkVRX1NIQVBFKGZsYWdzKSAoKGZsYWdzJlB5QlVGX05EKSA9PSBQeUJVRl9ORCkKKyNkZWZpbmUgUkVRX1dSSVRBQkxFKGZsYWdzKSAoZmxhZ3MmUHlCVUZfV1JJVEFCTEUpCisjZGVmaW5lIFJFUV9GT1JNQVQoZmxhZ3MpIChmbGFncyZQeUJVRl9GT1JNQVQpCisKKworLyogU2luZ2xlIG5vZGUgb2YgYSBsaXN0IG9mIGJhc2UgYnVmZmVycy4gVGhlIGxpc3QgaXMgbmVlZGVkIHRvIGltcGxlbWVudAorICAgY2hhbmdlcyBpbiBtZW1vcnkgbGF5b3V0IHdoaWxlIGV4cG9ydGVkIGJ1ZmZlcnMgYXJlIGFjdGl2ZS4gKi8KK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlOworCitzdHJ1Y3QgbmRidWY7Cit0eXBlZGVmIHN0cnVjdCBuZGJ1ZiB7CisgICAgc3RydWN0IG5kYnVmICpuZXh0OworICAgIHN0cnVjdCBuZGJ1ZiAqcHJldjsKKyAgICBQeV9zc2l6ZV90IGxlbjsgICAgIC8qIGxlbmd0aCBvZiBkYXRhICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQ7ICAvKiBzdGFydCBvZiB0aGUgYXJyYXkgcmVsYXRpdmUgdG8gZGF0YSAqLworICAgIGNoYXIgKmRhdGE7ICAgICAgICAgLyogcmF3IGRhdGEgKi8KKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgIC8qIGNhcGFiaWxpdGllcyBvZiB0aGUgYmFzZSBidWZmZXIgKi8KKyAgICBQeV9zc2l6ZV90IGV4cG9ydHM7IC8qIG51bWJlciBvZiBleHBvcnRzICovCisgICAgUHlfYnVmZmVyIGJhc2U7ICAgICAvKiBiYXNlIGJ1ZmZlciAqLworfSBuZGJ1Zl90OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBmbGFnczsgICAgICAgICAgLyogbmRhcnJheSBmbGFncyAqLworICAgIG5kYnVmX3Qgc3RhdGljYnVmOyAgLyogc3RhdGljIGJ1ZmZlciBmb3IgcmUtZXhwb3J0aW5nIG1vZGUgKi8KKyAgICBuZGJ1Zl90ICpoZWFkOyAgICAgIC8qIGN1cnJlbnRseSBhY3RpdmUgYmFzZSBidWZmZXIgKi8KK30gTkRBcnJheU9iamVjdDsKKworCitzdGF0aWMgbmRidWZfdCAqCituZGJ1Zl9uZXcoUHlfc3NpemVfdCBuaXRlbXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIFB5X3NzaXplX3Qgb2Zmc2V0LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfYnVmZmVyICpiYXNlOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgbGVuID0gbml0ZW1zICogaXRlbXNpemU7CisgICAgaWYgKG9mZnNldCAlIGl0ZW1zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm9mZnNldCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCtpdGVtc2l6ZSA+IGxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqbmRidWYpOworICAgIGlmIChuZGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmLT5uZXh0ID0gTlVMTDsKKyAgICBuZGJ1Zi0+cHJldiA9IE5VTEw7CisgICAgbmRidWYtPmxlbiA9IGxlbjsKKyAgICBuZGJ1Zi0+b2Zmc2V0PSBvZmZzZXQ7CisKKyAgICBuZGJ1Zi0+ZGF0YSA9IFB5TWVtX01hbGxvYyhsZW4pOworICAgIGlmIChuZGJ1Zi0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5TWVtX0ZyZWUobmRidWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1Zi0+ZmxhZ3MgPSBmbGFnczsKKyAgICBuZGJ1Zi0+ZXhwb3J0cyA9IDA7CisKKyAgICBiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGJhc2UtPm9iaiA9IE5VTEw7CisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGE7CisgICAgYmFzZS0+bGVuID0gbGVuOworICAgIGJhc2UtPml0ZW1zaXplID0gMTsKKyAgICBiYXNlLT5yZWFkb25seSA9IDA7CisgICAgYmFzZS0+Zm9ybWF0ID0gTlVMTDsKKyAgICBiYXNlLT5uZGltID0gMTsKKyAgICBiYXNlLT5zaGFwZSA9IE5VTEw7CisgICAgYmFzZS0+c3RyaWRlcyA9IE5VTEw7CisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgYmFzZS0+aW50ZXJuYWwgPSBuZGJ1ZjsKKworICAgIHJldHVybiBuZGJ1ZjsKK30KKworc3RhdGljIHZvaWQKK25kYnVmX2ZyZWUobmRidWZfdCAqbmRidWYpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworCisgICAgUHlNZW1fWEZyZWUobmRidWYtPmRhdGEpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPmZvcm1hdCk7CisgICAgUHlNZW1fWEZyZWUoYmFzZS0+c2hhcGUpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN0cmlkZXMpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN1Ym9mZnNldHMpOworCisgICAgUHlNZW1fRnJlZShuZGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkCituZGJ1Zl9wdXNoKE5EQXJyYXlPYmplY3QgKm5kLCBuZGJ1Zl90ICplbHQpCit7CisgICAgZWx0LT5uZXh0ID0gbmQtPmhlYWQ7CisgICAgaWYgKG5kLT5oZWFkKSBuZC0+aGVhZC0+cHJldiA9IGVsdDsKKyAgICBuZC0+aGVhZCA9IGVsdDsKKyAgICBlbHQtPnByZXYgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfZGVsZXRlKE5EQXJyYXlPYmplY3QgKm5kLCBuZGJ1Zl90ICplbHQpCit7CisgICAgaWYgKGVsdC0+cHJldikKKyAgICAgICAgZWx0LT5wcmV2LT5uZXh0ID0gZWx0LT5uZXh0OworICAgIGVsc2UKKyAgICAgICAgbmQtPmhlYWQgPSBlbHQtPm5leHQ7CisgICAgCisgICAgaWYgKGVsdC0+bmV4dCkKKyAgICAgICAgZWx0LT5uZXh0LT5wcmV2ID0gZWx0LT5wcmV2OworCisgICAgbmRidWZfZnJlZShlbHQpOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfcG9wKE5EQXJyYXlPYmplY3QgKm5kKQoreworICAgIG5kYnVmX2RlbGV0ZShuZCwgbmQtPmhlYWQpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKworICAgIG5kID0gUHlPYmplY3RfTmV3KE5EQXJyYXlPYmplY3QsICZOREFycmF5X1R5cGUpOworICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5kLT5mbGFncyA9IDA7CisgICAgbmQtPmhlYWQgPSBOVUxMOworICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKK30KKworc3RhdGljIHZvaWQKK25kYXJyYXlfZGVhbGxvYyhOREFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oZWFkKSB7CisgICAgICAgIGlmIChORF9JU19DT05TVU1FUihzZWxmKSkgeworICAgICAgICAgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgICAgICAgICBpZiAoc2VsZi0+aGVhZC0+ZmxhZ3MgJiBORF9PV05fQVJSQVlTKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fWEZyZWUoYmFzZS0+c2hhcGUpOworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN0cmlkZXMpOworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnN1Ym9mZnNldHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShiYXNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHdoaWxlIChzZWxmLT5oZWFkKQorICAgICAgICAgICAgICAgIG5kYnVmX3BvcChzZWxmKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK25kYXJyYXlfaW5pdF9zdGF0aWNidWYoUHlPYmplY3QgKmV4cG9ydGVyLCBOREFycmF5T2JqZWN0ICpuZCwgaW50IGZsYWdzKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZC0+c3RhdGljYnVmLmJhc2U7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGV4cG9ydGVyLCBiYXNlLCBmbGFncykgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZC0+aGVhZCA9ICZuZC0+c3RhdGljYnVmOworCisgICAgbmQtPmhlYWQtPm5leHQgPSBOVUxMOworICAgIG5kLT5oZWFkLT5wcmV2ID0gTlVMTDsKKyAgICBuZC0+aGVhZC0+bGVuID0gLTE7CisgICAgbmQtPmhlYWQtPm9mZnNldCA9IC0xOworICAgIG5kLT5oZWFkLT5kYXRhID0gTlVMTDsKKworICAgIG5kLT5oZWFkLT5mbGFncyA9IGJhc2UtPnJlYWRvbmx5ID8gMCA6IE5EX1dSSVRBQkxFOworICAgIG5kLT5oZWFkLT5leHBvcnRzID0gMDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9mbGFncyhuZGJ1Zl90ICpuZGJ1ZikKK3sKKyAgICBpZiAobmRidWYtPmJhc2UubmRpbSA9PSAwKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfU0NBTEFSOworICAgIGlmIChuZGJ1Zi0+YmFzZS5zdWJvZmZzZXRzKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfUElMOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kYnVmLT5iYXNlLCAnQycpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfQzsKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZGJ1Zi0+YmFzZSwgJ0YnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0ZPUlRSQU47Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyL0xpc3QgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlfc3NpemVfdCAqc3RyaWRlc19mcm9tX3NoYXBlKGNvbnN0IG5kYnVmX3QgKiwgaW50IGZsYWdzKTsKKworLyogR2V0IG51bWJlciBvZiBtZW1iZXJzIGluIGEgc3RydWN0OiBzZWUgaXNzdWUgIzEyNzQwICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5X3NzaXplX3Qgc19zaXplOworICAgIFB5X3NzaXplX3Qgc19sZW47Cit9IFB5UGFydGlhbFN0cnVjdE9iamVjdDsKKworc3RhdGljIFB5X3NzaXplX3QKK2dldF9ubWVtYihQeU9iamVjdCAqcykKK3sKKyAgICByZXR1cm4gKChQeVBhcnRpYWxTdHJ1Y3RPYmplY3QgKilzKS0+c19sZW47Cit9CisKKy8qIFBhY2sgYWxsIGl0ZW1zIGludG8gdGhlIGJ1ZmZlciBvZiAnb2JqJy4gVGhlICdmb3JtYXQnIHBhcmFtZXRlciBtdXN0IGJlCisgICBpbiBzdHJ1Y3QgbW9kdWxlIHN5bnRheC4gRm9yIHN0YW5kYXJkIEMgdHlwZXMsIGEgc2luZ2xlIGl0ZW0gaXMgYW4gaW50ZWdlci4KKyAgIEZvciBjb21wb3VuZCB0eXBlcywgYSBzaW5nbGUgaXRlbSBpcyBhIHR1cGxlIG9mIGludGVnZXJzLiAqLworc3RhdGljIGludAorcGFja19mcm9tX2xpc3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKml0ZW1zLCBQeU9iamVjdCAqZm9ybWF0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqc3RydWN0b2JqLCAqcGFja19pbnRvOworICAgIFB5T2JqZWN0ICphcmdzLCAqb2Zmc2V0OworICAgIFB5T2JqZWN0ICppdGVtLCAqdG1wOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBudW1iZXIgb2YgaXRlbXMgKi8KKyAgICBQeV9zc2l6ZV90IG5tZW1iOyAgLyogbnVtYmVyIG9mIG1lbWJlcnMgaW4gYSBzaW5nbGUgaXRlbSAqLworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIGFzc2VydChQeU9iamVjdF9DaGVja0J1ZmZlcihvYmopKTsKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGl0ZW1zKSB8fCBQeVR1cGxlX0NoZWNrKGl0ZW1zKSk7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShpdGVtcyk7CisgICAgbm1lbWIgPSBnZXRfbm1lbWIoc3RydWN0b2JqKTsKKyAgICBhc3NlcnQobm1lbWIgPj0gMSk7CisKKyAgICBwYWNrX2ludG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInBhY2tfaW50byIpOworICAgIGlmIChwYWNrX2ludG8gPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIG5tZW1iID49IDEgKi8KKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMiArIG5tZW1iKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihwYWNrX2ludG8pOworICAgICAgICBQeV9ERUNSRUYoc3RydWN0b2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG9mZnNldCA9IE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IG5pdGVtczsgaSsrKSB7CisgICAgICAgIC8qIExvb3AgaW52YXJpYW50OiBhcmdzW2pdIGFyZSBib3Jyb3dlZCByZWZlcmVuY2VzIG9yIE5VTEwuICovCisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgb2JqKTsKKyAgICAgICAgZm9yIChqID0gMTsgaiA8IDIrbm1lbWI7IGorKykKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaiwgTlVMTCk7CisKKyAgICAgICAgUHlfWERFQ1JFRihvZmZzZXQpOworICAgICAgICBvZmZzZXQgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSppdGVtc2l6ZSk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIG9mZnNldCk7CisKKyAgICAgICAgaXRlbSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtcywgaSk7CisgICAgICAgIGlmICgoUHlCeXRlc19DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkgfHwKKyAgICAgICAgICAgICBQeUZsb2F0X0NoZWNrKGl0ZW0pKSAmJiBubWVtYiA9PSAxKSB7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGl0ZW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChQeUxpc3RfQ2hlY2soaXRlbSkgfHwgUHlUdXBsZV9DaGVjayhpdGVtKSkgJiYKKyAgICAgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MZW5ndGgoaXRlbSkgPT0gbm1lbWIpIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBubWVtYjsgaisrKSB7CisgICAgICAgICAgICAgICAgdG1wID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW0sIGopOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMitqLCB0bXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1pc21hdGNoIGJldHdlZW4gaW5pdGlhbGl6ZXIgZWxlbWVudCBhbmQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QocGFja19pbnRvLCBhcmdzKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKworICAgIFB5X0lOQ1JFRihvYmopOyAvKiBhcmdzWzBdICovCisgICAgLyogYXJnc1sxXTogb2Zmc2V0IGlzIGVpdGhlciBOVUxMIG9yIHNob3VsZCBiZSBkZWFsbG9jJ2QgKi8KKyAgICBmb3IgKGkgPSAyOyBpIDwgMitubWVtYjsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgIFB5X1hJTkNSRUYodG1wKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFyZ3MpOworCisgICAgUHlfREVDUkVGKHBhY2tfaW50byk7CisgICAgUHlfREVDUkVGKHN0cnVjdG9iaik7CisgICAgcmV0dXJuIHJldDsKKworfQorCisvKiBQYWNrIHNpbmdsZSBlbGVtZW50ICovCitzdGF0aWMgaW50CitwYWNrX3NpbmdsZShjaGFyICpwdHIsIFB5T2JqZWN0ICppdGVtLCBjb25zdCBjaGFyICpmbXQsIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEwsICpwYWNrX2ludG8gPSBOVUxMLCAqYXJncyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEwsICptdmlldyA9IE5VTEwsICp6ZXJvID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGksIG5tZW1iOworICAgIGludCByZXQgPSAtMTsKKyAgICBQeU9iamVjdCAqeDsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgZm10ID0gIkIiOworCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIG5tZW1iID0gZ2V0X25tZW1iKHN0cnVjdG9iaik7CisgICAgYXNzZXJ0KG5tZW1iID49IDEpOworCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShwdHIsIGl0ZW1zaXplLCBQeUJVRl9XUklURSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICBpZiAoemVybyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHBhY2tfaW50byA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAicGFja19pbnRvIik7CisgICAgaWYgKHBhY2tfaW50byA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyK25tZW1iKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXZpZXcpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgemVybyk7CisKKyAgICBpZiAoKFB5Qnl0ZXNfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pIHx8CisgICAgICAgICBQeUZsb2F0X0NoZWNrKGl0ZW0pKSAmJiBubWVtYiA9PSAxKSB7CisgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGl0ZW0pOworICAgIH0KKyAgICBlbHNlIGlmICgoUHlMaXN0X0NoZWNrKGl0ZW0pIHx8IFB5VHVwbGVfQ2hlY2soaXRlbSkpICYmCisgICAgICAgICAgICAgUHlTZXF1ZW5jZV9MZW5ndGgoaXRlbSkgPT0gbm1lbWIpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5tZW1iOyBpKyspIHsKKyAgICAgICAgICAgIHggPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oaXRlbSwgaSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIraSwgeCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm1pc21hdGNoIGJldHdlZW4gaW5pdGlhbGl6ZXIgZWxlbWVudCBhbmQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICBnb3RvIGFyZ3Nfb3V0OworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9DYWxsT2JqZWN0KHBhY2tfaW50bywgYXJncyk7CisgICAgaWYgKHggIT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgIHJldCA9IDA7CisgICAgfQorCisKK2FyZ3Nfb3V0OgorICAgIGZvciAoaSA9IDA7IGkgPCAyK25tZW1iOyBpKyspCisgICAgICAgIFB5X1hJTkNSRUYoUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKSk7CisgICAgUHlfWERFQ1JFRihhcmdzKTsKK291dDoKKyAgICBQeV9YREVDUkVGKHBhY2tfaW50byk7CisgICAgUHlfWERFQ1JFRih6ZXJvKTsKKyAgICBQeV9YREVDUkVGKG12aWV3KTsKKyAgICBQeV9YREVDUkVGKHN0cnVjdG9iaik7CisgICAgUHlfWERFQ1JFRihmb3JtYXQpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitjb3B5X3JlYyhjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgUHlfc3NpemVfdCBuZGltLCBQeV9zc2l6ZV90IGl0ZW1zaXplLAorICAgICAgICAgY2hhciAqZHB0ciwgY29uc3QgUHlfc3NpemVfdCAqZHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKmRzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqc3B0ciwgY29uc3QgUHlfc3NpemVfdCAqc3N0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKnNzdWJvZmZzZXRzLAorICAgICAgICAgY2hhciAqbWVtKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChuZGltID49IDEpOworCisgICAgaWYgKG5kaW0gPT0gMSkgeworICAgICAgICBpZiAoIUhBVkVfUFRSKGRzdWJvZmZzZXRzKSAmJiAhSEFWRV9QVFIoc3N1Ym9mZnNldHMpICYmCisgICAgICAgICAgICBkc3RyaWRlc1swXSA9PSBpdGVtc2l6ZSAmJiBzc3RyaWRlc1swXSA9PSBpdGVtc2l6ZSkgeworICAgICAgICAgICAgbWVtbW92ZShkcHRyLCBzcHRyLCBzaGFwZVswXSAqIGl0ZW1zaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoYXIgKnA7CisgICAgICAgICAgICBhc3NlcnQobWVtICE9IE5VTEwpOworICAgICAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpPHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHAsIHhzcHRyLCBpdGVtc2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGk8c2hhcGVbMF07IHArPWl0ZW1zaXplLCBkcHRyKz1kc3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoeGRwdHIsIHAsIGl0ZW1zaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBkcHRyKz1kc3RyaWRlc1swXSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworCisgICAgICAgIGNvcHlfcmVjKHNoYXBlKzEsIG5kaW0tMSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgIHhkcHRyLCBkc3RyaWRlcysxLCBkc3Vib2Zmc2V0cyA/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICB4c3B0ciwgc3N0cmlkZXMrMSwgc3N1Ym9mZnNldHMgPyBzc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NtcF9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoc3RyY21wKEZJWF9GT1JNQVQoZGVzdC0+Zm9ybWF0KSwgRklYX0ZPUk1BVChzcmMtPmZvcm1hdCkpICE9IDAgfHwKKyAgICAgICAgZGVzdC0+aXRlbXNpemUgIT0gc3JjLT5pdGVtc2l6ZSB8fAorICAgICAgICBkZXN0LT5uZGltICE9IHNyYy0+bmRpbSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZm9yIChpID0gMDsgaSA8IGRlc3QtPm5kaW07IGkrKykgeworICAgICAgICBpZiAoZGVzdC0+c2hhcGVbaV0gIT0gc3JjLT5zaGFwZVtpXSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRlc3QtPnNoYXBlW2ldID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29weSBzcmMgdG8gZGVzdC4gQm90aCBidWZmZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBmb3JtYXQsIGl0ZW1zaXplLAorICAgbmRpbSBhbmQgc2hhcGUuIENvcHlpbmcgaXMgYXRvbWljLCB0aGUgZnVuY3Rpb24gbmV2ZXIgZmFpbHMgd2l0aAorICAgYSBwYXJ0aWFsIGNvcHkuICovCitzdGF0aWMgaW50Citjb3B5X2J1ZmZlcihQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNoYXIgKm1lbSA9IE5VTEw7CisKKyAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDApOworCisgICAgaWYgKGNtcF9zdHJ1Y3R1cmUoZGVzdCwgc3JjKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKGRlc3QtPnN1Ym9mZnNldHMgJiYgZGVzdC0+c3Vib2Zmc2V0c1tkZXN0LT5uZGltLTFdID49IDApIHx8CisgICAgICAgIChzcmMtPnN1Ym9mZnNldHMgJiYgc3JjLT5zdWJvZmZzZXRzW3NyYy0+bmRpbS0xXSA+PSAwKSB8fAorICAgICAgICBkZXN0LT5zdHJpZGVzW2Rlc3QtPm5kaW0tMV0gIT0gZGVzdC0+aXRlbXNpemUgfHwKKyAgICAgICAgc3JjLT5zdHJpZGVzW3NyYy0+bmRpbS0xXSAhPSBzcmMtPml0ZW1zaXplKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVtkZXN0LT5uZGltLTFdICogZGVzdC0+aXRlbXNpemUpOworICAgICAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb3B5X3JlYyhkZXN0LT5zaGFwZSwgZGVzdC0+bmRpbSwgZGVzdC0+aXRlbXNpemUsCisgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIHNyYy0+YnVmLCBzcmMtPnN0cmlkZXMsIHNyYy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBtZW0pOworCisgICAgUHlNZW1fWEZyZWUobWVtKTsKKyAgICByZXR1cm4gMDsKK30KKworCisvKiBVbnBhY2sgc2luZ2xlIGVsZW1lbnQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tfc2luZ2xlKGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZm10LCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICp4LCAqdW5wYWNrX2Zyb20sICptdmlldzsKKworICAgIGlmIChmbXQgPT0gTlVMTCkgeworICAgICAgICBmbXQgPSAiQiI7CisgICAgICAgIGl0ZW1zaXplID0gMTsKKyAgICB9CisKKyAgICB1bnBhY2tfZnJvbSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAidW5wYWNrX2Zyb20iKTsKKyAgICBpZiAodW5wYWNrX2Zyb20gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tTWVtb3J5KHB0ciwgaXRlbXNpemUsIFB5QlVGX1JFQUQpOworICAgIGlmIChtdmlldyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHggPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24odW5wYWNrX2Zyb20sICJzTyIsIGZtdCwgbXZpZXcpOworICAgIFB5X0RFQ1JFRih1bnBhY2tfZnJvbSk7CisgICAgUHlfREVDUkVGKG12aWV3KTsKKyAgICBpZiAoeCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHgpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0oeCwgMCk7CisgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgfQorCisgICAgcmV0dXJuIHg7Cit9CisKKy8qIFVucGFjayBhIG11bHRpLWRpbWVuc2lvbmFsIG1hdHJpeCBpbnRvIGEgbmVzdGVkIGxpc3QuIFJldHVybiBhIHNjYWxhcgorICAgZm9yIG5kaW0gPSAwLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19yZWMoUHlPYmplY3QgKnVucGFja19mcm9tLCBjaGFyICpwdHIsIFB5T2JqZWN0ICptdmlldywgY2hhciAqaXRlbSwKKyAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIGNvbnN0IFB5X3NzaXplX3QgKnN0cmlkZXMsCisgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsIFB5X3NzaXplX3QgbmRpbSwgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqbHN0LCAqeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobmRpbSA+PSAwKTsKKyAgICBhc3NlcnQoc2hhcGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIG1lbWNweShpdGVtLCBwdHIsIGl0ZW1zaXplKTsKKyAgICAgICAgeCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3ModW5wYWNrX2Zyb20sIG12aWV3LCBOVUxMKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRSh4KSA9PSAxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTSh4LCAwKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICAgICAgcmV0dXJuIHRtcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisKKyAgICBsc3QgPSBQeUxpc3RfTmV3KHNoYXBlWzBdKTsKKyAgICBpZiAobHN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwdHIrPXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICpuZXh0cHRyID0gQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpOworCisgICAgICAgIHggPSB1bnBhY2tfcmVjKHVucGFja19mcm9tLCBuZXh0cHRyLCBtdmlldywgaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUrMSwgc3RyaWRlcysxLCBzdWJvZmZzZXRzID8gc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgbmRpbS0xLCBpdGVtc2l6ZSk7CisgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBQeUxpc3RfU0VUX0lURU0obHN0LCBpLCB4KTsKKyAgICB9CisKKyAgICByZXR1cm4gbHN0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2FzX2xpc3QoTkRBcnJheU9iamVjdCAqbmQpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiA9IE5VTEwsICp1bnBhY2tfZnJvbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxzdCA9IE5VTEwsICptdmlldyA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5X3NzaXplX3QgKnNoYXBlID0gYmFzZS0+c2hhcGU7CisgICAgUHlfc3NpemVfdCAqc3RyaWRlcyA9IGJhc2UtPnN0cmlkZXM7CisgICAgUHlfc3NpemVfdCBzaW1wbGVfc2hhcGVbMV07CisgICAgUHlfc3NpemVfdCBzaW1wbGVfc3RyaWRlc1sxXTsKKyAgICBjaGFyICppdGVtID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0OworICAgIGNoYXIgKmZtdCA9IGJhc2UtPmZvcm1hdDsKKworICAgIGJhc2UgPSAmbmQtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheTogdG9saXN0KCkgZG9lcyBub3Qgc3VwcG9ydCBmb3JtYXQ9TlVMTCwgdXNlICIKKyAgICAgICAgICAgICJ0b2J5dGVzKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzaGFwZSA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydChORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSk7CisgICAgICAgIGFzc2VydChiYXNlLT5zdHJpZGVzID09IE5VTEwpOworICAgICAgICBhc3NlcnQoYmFzZS0+bmRpbSA8PSAxKTsKKyAgICAgICAgc2hhcGUgPSBzaW1wbGVfc2hhcGU7CisgICAgICAgIHNoYXBlWzBdID0gYmFzZS0+bGVuOworICAgICAgICBzdHJpZGVzID0gc2ltcGxlX3N0cmlkZXM7CisgICAgICAgIHN0cmlkZXNbMF0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydChORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSk7CisgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmQtPmhlYWQsIDApOworICAgICAgICBpZiAoc3RyaWRlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZvcm1hdCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHVucGFja19mcm9tID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3RvYmosICJ1bnBhY2tfZnJvbSIpOworICAgIGlmICh1bnBhY2tfZnJvbSA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGl0ZW0gPSBQeU1lbV9NYWxsb2MoYmFzZS0+aXRlbXNpemUpOworICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShpdGVtLCBiYXNlLT5pdGVtc2l6ZSwgUHlCVUZfV1JJVEUpOworICAgIGlmIChtdmlldyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGxzdCA9IHVucGFja19yZWModW5wYWNrX2Zyb20sIGJhc2UtPmJ1ZiwgbXZpZXcsIGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICBzaGFwZSwgc3RyaWRlcywgYmFzZS0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgIGJhc2UtPm5kaW0sIGJhc2UtPml0ZW1zaXplKTsKKworb3V0OgorICAgIFB5X1hERUNSRUYobXZpZXcpOworICAgIFB5TWVtX1hGcmVlKGl0ZW0pOworICAgIFB5X1hERUNSRUYodW5wYWNrX2Zyb20pOworICAgIFB5X1hERUNSRUYoc3RydWN0b2JqKTsKKyAgICBpZiAoc3RyaWRlcyAhPSBiYXNlLT5zdHJpZGVzICYmIHN0cmlkZXMgIT0gc2ltcGxlX3N0cmlkZXMpCisgICAgICAgIFB5TWVtX1hGcmVlKHN0cmlkZXMpOworCisgICAgcmV0dXJuIGxzdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemUgbmRidWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgICBTdGF0ZSBvZiBhIG5ldyBuZGJ1ZiBkdXJpbmcgaW5pdGlhbGl6YXRpb24uICdPSycgbWVhbnMgdGhhdCBpbml0aWFsaXphdGlvbgorICAgaXMgY29tcGxldGUuICdQVFInIG1lYW5zIHRoYXQgYSBwb2ludGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBidXQgdGhlCisgICBzdGF0ZSBvZiB0aGUgbWVtb3J5IGlzIHN0aWxsIHVuZGVmaW5lZCBhbmQgbmRidWYtPm9mZnNldCBpcyBkaXNyZWdhcmRlZC4KKworICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8ICAgICAgICAgICAgICAgICB8IG5kYnVmX25ldyB8IGluaXRfc2ltcGxlIHwgaW5pdF9zdHJ1Y3R1cmUgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IG5leHQgICAgICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IHByZXYgICAgICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGxlbiAgICAgICAgICAgICB8ICAgIE9LICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IG9mZnNldCAgICAgICAgICB8ICAgIE9LICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGRhdGEgICAgICAgICAgICB8ICAgIFBUUiAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGZsYWdzICAgICAgICAgICB8ICAgIHVzZXIgICB8ICAgIHVzZXIgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGV4cG9ydHMgICAgICAgICB8ICAgT0sgKDApICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2Uub2JqICAgICAgICB8IE9LIChOVUxMKSB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuYnVmICAgICAgICB8ICAgIFBUUiAgICB8ICAgICBQVFIgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UubGVuICAgICAgICB8IGxlbihkYXRhKSB8ICBsZW4oZGF0YSkgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuaXRlbXNpemUgICB8ICAgICAxICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UucmVhZG9ubHkgICB8ICAgICAwICAgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuZm9ybWF0ICAgICB8ICAgIE5VTEwgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfCAgCisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5uZGltICAgICAgIHwgICAgIDEgICAgIHwgICAgICAxICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zaGFwZSAgICAgIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zdHJpZGVzICAgIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5zdWJvZmZzZXRzIHwgICAgTlVMTCAgIHwgICAgTlVMTCAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgIHwgYmFzZS5pbnRlcm5hbCAgIHwgICAgT0sgICAgIHwgICAgT0sgICAgICAgfCAgICAgICBPSyAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisKKyovCisKK3N0YXRpYyBQeV9zc2l6ZV90CitnZXRfaXRlbXNpemUoUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5X3NzaXplX3QgaXRlbXNpemU7CisKKyAgICB0bXAgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNhbGNzaXplLCBmb3JtYXQsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGl0ZW1zaXplID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgcmV0dXJuIGl0ZW1zaXplOworfQorCitzdGF0aWMgY2hhciAqCitnZXRfZm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQpCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBjaGFyICpmbXQ7CisKKyAgICB0bXAgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhmb3JtYXQpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm10ID0gUHlNZW1fTWFsbG9jKFB5Qnl0ZXNfR0VUX1NJWkUodG1wKSsxKTsKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzdHJjcHkoZm10LCBQeUJ5dGVzX0FTX1NUUklORyh0bXApKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKworICAgIHJldHVybiBmbXQ7Cit9CisKK3N0YXRpYyBpbnQKK2luaXRfc2ltcGxlKG5kYnVmX3QgKm5kYnVmLCBQeU9iamVjdCAqaXRlbXMsIFB5T2JqZWN0ICpmb3JtYXQsCisgICAgICAgICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICptdmlldzsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgaW50IHJldDsKKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoYmFzZSk7CisgICAgaWYgKG12aWV3ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldCA9IHBhY2tfZnJvbV9saXN0KG12aWV3LCBpdGVtcywgZm9ybWF0LCBpdGVtc2l6ZSk7CisgICAgUHlfREVDUkVGKG12aWV3KTsKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYmFzZS0+cmVhZG9ubHkgPSAhKG5kYnVmLT5mbGFncyAmIE5EX1dSSVRBQkxFKTsKKyAgICBiYXNlLT5pdGVtc2l6ZSA9IGl0ZW1zaXplOworICAgIGJhc2UtPmZvcm1hdCA9IGdldF9mb3JtYXQoZm9ybWF0KTsKKyAgICBpZiAoYmFzZS0+Zm9ybWF0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlfc3NpemVfdCAqCitzZXFfYXNfc3NpemVfYXJyYXkoUHlPYmplY3QgKnNlcSwgUHlfc3NpemVfdCBsZW4sIGludCBpc19zaGFwZSkKK3sKKyAgICBQeV9zc2l6ZV90ICpkZXN0OworICAgIFB5X3NzaXplX3QgeCwgaTsKKworICAgIGRlc3QgPSBQeU1lbV9NYWxsb2MobGVuICogKHNpemVvZiAqZGVzdCkpOworICAgIGlmIChkZXN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImVsZW1lbnRzIG9mICVzIG11c3QgYmUgaW50ZWdlcnMiLAorICAgICAgICAgICAgICAgIGlzX3NoYXBlID8gInNoYXBlIiA6ICJzdHJpZGVzIik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNfc2hhcGUgJiYgeCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJlbGVtZW50cyBvZiBzaGFwZSBtdXN0IGJlIGludGVnZXJzID49IDAiKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBkZXN0W2ldID0geDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVzdDsKK30KKworc3RhdGljIFB5X3NzaXplX3QgKgorc3RyaWRlc19mcm9tX3NoYXBlKGNvbnN0IG5kYnVmX3QgKm5kYnVmLCBpbnQgZmxhZ3MpCit7CisgICAgY29uc3QgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIFB5X3NzaXplX3QgKnMsIGk7CisKKyAgICBzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzKSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBORF9GT1JUUkFOKSB7CisgICAgICAgIHNbMF0gPSBiYXNlLT5pdGVtc2l6ZTsKKyAgICAgICAgZm9yIChpID0gMTsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgICAgIHNbaV0gPSBzW2ktMV0gKiBiYXNlLT5zaGFwZVtpLTFdOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc1tiYXNlLT5uZGltLTFdID0gYmFzZS0+aXRlbXNpemU7CisgICAgICAgIGZvciAoaSA9IGJhc2UtPm5kaW0tMjsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICBzW2ldID0gc1tpKzFdICogYmFzZS0+c2hhcGVbaSsxXTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogQm91bmRzIGNoZWNrOgorCisgICAgIGxlbiA6PSBjb21wbGV0ZSBsZW5ndGggb2YgYWxsb2NhdGVkIG1lbW9yeQorICAgICBvZmZzZXQgOj0gc3RhcnQgb2YgdGhlIGFycmF5CisKKyAgICAgQSBzaW5nbGUgYXJyYXkgZWxlbWVudCBpcyBpbmRleGVkIGJ5OgorCisgICAgICAgaSA9IGluZGljZXNbMF0gKiBzdHJpZGVzWzBdICsgaW5kaWNlc1sxXSAqIHN0cmlkZXNbMV0gKyAuLi4KKworICAgICBpbWluIGlzIHJlYWNoZWQgd2hlbiBhbGwgaW5kaWNlc1tuXSBjb21iaW5lZCB3aXRoIHBvc2l0aXZlIHN0cmlkZXMgYXJlIDAKKyAgICAgYW5kIGFsbCBpbmRpY2VzIGNvbWJpbmVkIHdpdGggbmVnYXRpdmUgc3RyaWRlcyBhcmUgc2hhcGVbbl0tMSwgd2hpY2ggaXMKKyAgICAgdGhlIG1heGltdW0gaW5kZXggZm9yIHRoZSBudGggZGltZW5zaW9uLgorCisgICAgIGltYXggaXMgcmVhY2hlZCB3aGVuIGFsbCBpbmRpY2VzW25dIGNvbWJpbmVkIHdpdGggbmVnYXRpdmUgc3RyaWRlcyBhcmUgMAorICAgICBhbmQgYWxsIGluZGljZXMgY29tYmluZWQgd2l0aCBwb3NpdGl2ZSBzdHJpZGVzIGFyZSBzaGFwZVtuXS0xLgorKi8KK3N0YXRpYyBpbnQKK3ZlcmlmeV9zdHJ1Y3R1cmUoUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgaXRlbXNpemUsIFB5X3NzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwgY29uc3QgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X3NzaXplX3QgaW1pbiwgaW1heDsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBhc3NlcnQobmRpbSA+PSAwKTsKKworICAgIGlmIChuZGltID09IDAgJiYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0K2l0ZW1zaXplID4gbGVuKSkKKyAgICAgICAgZ290byBpbnZhbGlkX2NvbWJpbmF0aW9uOworCisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHN0cmlkZXNbbl0gJSBpdGVtc2l6ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3RyaWRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgaXRlbXNpemUiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHNoYXBlW25dID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIGltaW4gPSBpbWF4ID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgbmRpbTsgbisrKQorICAgICAgICBpZiAoc3RyaWRlc1tuXSA8PSAwKQorICAgICAgICAgICAgaW1pbiArPSAoc2hhcGVbbl0tMSkgKiBzdHJpZGVzW25dOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbWF4ICs9IChzaGFwZVtuXS0xKSAqIHN0cmlkZXNbbl07CisKKyAgICBpZiAoaW1pbiArIG9mZnNldCA8IDAgfHwgaW1heCArIG9mZnNldCArIGl0ZW1zaXplID4gbGVuKQorICAgICAgICBnb3RvIGludmFsaWRfY29tYmluYXRpb247CisKKyAgICByZXR1cm4gMDsKKworCitpbnZhbGlkX2NvbWJpbmF0aW9uOgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAiaW52YWxpZCBjb21iaW5hdGlvbiBvZiBidWZmZXIsIHNoYXBlIGFuZCBzdHJpZGVzIik7CisgICAgcmV0dXJuIC0xOworfQorCisvKgorICAgQ29udmVydCBhIE51bVB5LXN0eWxlIGFycmF5IHRvIGFuIGFycmF5IHVzaW5nIHN1Ym9mZnNldHMgdG8gc3RyaWRlIGluCisgICB0aGUgZmlyc3QgZGltZW5zaW9uLiBSZXF1aXJlbWVudHM6IG5kaW0gPiAwLgorCisgICBDb250aWd1b3VzIGV4YW1wbGUKKyAgID09PT09PT09PT09PT09PT09PQorCisgICAgIElucHV0OgorICAgICAtLS0tLS0KKyAgICAgICBzaGFwZSAgICAgID0gezIsIDIsIDN9OworICAgICAgIHN0cmlkZXMgICAgPSB7NiwgMywgMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgZGF0YSAgICAgICA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgIGJ1ZiAgICAgICAgPSAmZGF0YVswXQorCisgICAgIE91dHB1dDoKKyAgICAgLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHtzaXplb2YoY2hhciAqKSwgMywgMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IHswLCAtMSwgLTF9OworICAgICAgIGRhdGEgICAgICAgPSB7cDEsIHAyLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICBeICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICBgLS0tJy0tLScgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisgICAgICAgYnVmICAgICAgICA9ICZkYXRhWzBdCisKKyAgICAgU28sIGluIHRoZSBleGFtcGxlIHRoZSBpbnB1dCByZXNlbWJsZXMgdGhlIHRocmVlLWRpbWVuc2lvbmFsIGFycmF5CisgICAgIGNoYXIgdlsyXVsyXVszXSwgd2hpbGUgdGhlIG91dHB1dCByZXNlbWJsZXMgYW4gYXJyYXkgb2YgdHdvIHBvaW50ZXJzCisgICAgIHRvIHR3by1kaW1lbnNpb25hbCBhcnJheXM6IGNoYXIgKCp2WzJdKVsyXVszXS4KKworCisgICBOb24tY29udGlndW91cyBleGFtcGxlOgorICAgPT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICBJbnB1dCAod2l0aCBvZmZzZXQgYW5kIG5lZ2F0aXZlIHN0cmlkZXMpOgorICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHstNiwgMywgLTF9OworICAgICAgIG9mZnNldCAgICAgPSA4CisgICAgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgZGF0YSAgICAgICA9IHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworCisgICAgIE91dHB1dDoKKyAgICAgLS0tLS0tLQorICAgICAgIHNoYXBlICAgICAgPSB7MiwgMiwgM307CisgICAgICAgc3RyaWRlcyAgICA9IHstc2l6ZW9mKGNoYXIgKiksIDMsIC0xfTsKKyAgICAgICBzdWJvZmZzZXRzID0gezIsIC0xLCAtMX07CisgICAgICAgbmV3ZGF0YSAgICA9IHtwMSwgcDIsIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMX07CisgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIF4gICAgIF4gICAgICAgICAgIF4gICAgIF4KKyAgICAgICAgICAgICAgICAgICAgIGAtLS0nLS0tJyAgICAgfCAgICAgICAgICAgfCAgICAgYC0gcDIrc3Vib2Zmc2V0c1swXQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBgLS0tLS0tLS0tLS18LS0tIHAxK3N1Ym9mZnNldHNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tJworICAgICAgIGJ1ZiAgICAgICAgPSAmbmV3ZGF0YVsxXSAgIyBzdHJpZGluZyBiYWNrd2FyZHMgb3ZlciB0aGUgcG9pbnRlcnMuCisKKyAgICAgc3Vib2Zmc2V0c1swXSBpcyB0aGUgc2FtZSBhcyB0aGUgb2Zmc2V0IHRoYXQgb25lIHdvdWxkIHNwZWNpZnkgaWYKKyAgICAgdGhlIHR3byB7MiwgM30gc3ViYXJyYXlzIHdlcmUgY3JlYXRlZCBkaXJlY3RseSwgaGVuY2UgdGhlIG5hbWUuCisqLworc3RhdGljIGludAoraW5pdF9zdWJvZmZzZXRzKG5kYnVmX3QgKm5kYnVmKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdGVwOworICAgIFB5X3NzaXplX3QgaW1pbiwgc3Vib2Zmc2V0MDsKKyAgICBQeV9zc2l6ZV90IGFkZHNpemU7CisgICAgUHlfc3NpemVfdCBuOworICAgIGNoYXIgKmRhdGE7CisKKyAgICBhc3NlcnQoYmFzZS0+bmRpbSA+IDApOworICAgIGFzc2VydChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwpOworCisgICAgLyogQWxsb2NhdGUgbmV3IGRhdGEgd2l0aCBhZGRpdGlvbmFsIHNwYWNlIGZvciBzaGFwZVswXSBwb2ludGVycy4gKi8KKyAgICBhZGRzaXplID0gYmFzZS0+c2hhcGVbMF0gKiAoc2l6ZW9mIChjaGFyICopKTsKKworICAgIC8qIEFsaWduIGFycmF5IHN0YXJ0IHRvIGEgbXVsdGlwbGUgb2YgOC4gKi8KKyAgICBhZGRzaXplID0gOCAqICgoYWRkc2l6ZSArIDcpIC8gOCk7CisKKyAgICBkYXRhID0gUHlNZW1fTWFsbG9jKG5kYnVmLT5sZW4gKyBhZGRzaXplKTsKKyAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtZW1jcHkoZGF0YSArIGFkZHNpemUsIG5kYnVmLT5kYXRhLCBuZGJ1Zi0+bGVuKTsKKworICAgIFB5TWVtX0ZyZWUobmRidWYtPmRhdGEpOworICAgIG5kYnVmLT5kYXRhID0gZGF0YTsKKyAgICBuZGJ1Zi0+bGVuICs9IGFkZHNpemU7CisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGE7CisKKyAgICAvKiBpbWluOiBtaW5pbXVtIGluZGV4IG9mIHRoZSBpbnB1dCBhcnJheSByZWxhdGl2ZSB0byBuZGJ1Zi0+b2Zmc2V0LgorICAgICAgIHN1Ym9mZnNldDA6IG9mZnNldCBmb3IgZWFjaCBzdWItYXJyYXkgb2YgdGhlIG91dHB1dC4gVGhpcyBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICBzYW1lIGFzIGNhbGN1bGF0aW5nIC1pbWluJyBmb3IgYSBzdWItYXJyYXkgb2YgbmRpbS0xLiAqLworICAgIGltaW4gPSBzdWJvZmZzZXQwID0gMDsKKyAgICBmb3IgKG4gPSAwOyBuIDwgYmFzZS0+bmRpbTsgbisrKSB7CisgICAgICAgIGlmIChiYXNlLT5zaGFwZVtuXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChiYXNlLT5zdHJpZGVzW25dIDw9IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgeCA9IChiYXNlLT5zaGFwZVtuXS0xKSAqIGJhc2UtPnN0cmlkZXNbbl07CisgICAgICAgICAgICBpbWluICs9IHg7CisgICAgICAgICAgICBzdWJvZmZzZXQwICs9IChuID49IDEpID8gLXggOiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgYXJyYXkgb2YgcG9pbnRlcnMgdG8gdGhlIHN1Yi1hcnJheXMuICovCisgICAgc3RhcnQgPSBhZGRzaXplICsgbmRidWYtPm9mZnNldCArIGltaW47CisgICAgc3RlcCA9IGJhc2UtPnN0cmlkZXNbMF0gPCAwID8gLWJhc2UtPnN0cmlkZXNbMF0gOiBiYXNlLT5zdHJpZGVzWzBdOworCisgICAgZm9yIChuID0gMDsgbiA8IGJhc2UtPnNoYXBlWzBdOyBuKyspCisgICAgICAgICgoY2hhciAqKiliYXNlLT5idWYpW25dID0gKGNoYXIgKiliYXNlLT5idWYgKyBzdGFydCArIG4qc3RlcDsKKworICAgIC8qIEluaXRpYWxpemUgc3Vib2Zmc2V0cy4gKi8KKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpiYXNlLT5zdWJvZmZzZXRzKSk7CisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGJhc2UtPnN1Ym9mZnNldHNbMF0gPSBzdWJvZmZzZXQwOworICAgIGZvciAobiA9IDE7IG4gPCBiYXNlLT5uZGltOyBuKyspCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbbl0gPSAtMTsKKworICAgIC8qIEFkanVzdCBzdHJpZGVzIGZvciB0aGUgZmlyc3QgKHplcm90aCkgZGltZW5zaW9uLiAqLworICAgIGlmIChiYXNlLT5zdHJpZGVzWzBdID49IDApIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlc1swXSA9IHNpemVvZihjaGFyICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU3RyaWRpbmcgYmFja3dhcmRzLiAqLworICAgICAgICBiYXNlLT5zdHJpZGVzWzBdID0gLShQeV9zc2l6ZV90KXNpemVvZihjaGFyICopOworICAgICAgICBpZiAoYmFzZS0+c2hhcGVbMF0gPiAwKQorICAgICAgICAgICAgYmFzZS0+YnVmID0gKGNoYXIgKiliYXNlLT5idWYgKyAoYmFzZS0+c2hhcGVbMF0tMSkgKiBzaXplb2YoY2hhciAqKTsKKyAgICB9CisKKyAgICBuZGJ1Zi0+ZmxhZ3MgJj0gfihORF9DfE5EX0ZPUlRSQU4pOworICAgIG5kYnVmLT5vZmZzZXQgPSAwOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9sZW4oUHlfYnVmZmVyICpiYXNlKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGJhc2UtPmxlbiA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykKKyAgICAgICAgYmFzZS0+bGVuICo9IGJhc2UtPnNoYXBlW2ldOworICAgIGJhc2UtPmxlbiAqPSBiYXNlLT5pdGVtc2l6ZTsKK30KKworc3RhdGljIGludAoraW5pdF9zdHJ1Y3R1cmUobmRidWZfdCAqbmRidWYsIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5kaW0pCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworCisgICAgYmFzZS0+bmRpbSA9IChpbnQpbmRpbTsKKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChuZGJ1Zi0+ZmxhZ3MgJiBORF9QSUwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kaW0gPSAwIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggTkRfUElMIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IChORF9TQ0FMQVJ8TkRfQ3xORF9GT1JUUkFOKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogc2hhcGUgKi8KKyAgICBiYXNlLT5zaGFwZSA9IHNlcV9hc19zc2l6ZV9hcnJheShzaGFwZSwgbmRpbSwgMSk7CisgICAgaWYgKGJhc2UtPnNoYXBlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHN0cmlkZXMgKi8KKyAgICBpZiAoc3RyaWRlcykgeworICAgICAgICBiYXNlLT5zdHJpZGVzID0gc2VxX2FzX3NzaXplX2FycmF5KHN0cmlkZXMsIG5kaW0sIDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGJ1ZiwgbmRidWYtPmZsYWdzKTsKKyAgICB9CisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh2ZXJpZnlfc3RydWN0dXJlKGJhc2UtPmxlbiwgYmFzZS0+aXRlbXNpemUsIG5kYnVmLT5vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS0+c2hhcGUsIGJhc2UtPnN0cmlkZXMsIG5kaW0pIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogYnVmICovCisgICAgYmFzZS0+YnVmID0gbmRidWYtPmRhdGEgKyBuZGJ1Zi0+b2Zmc2V0OworCisgICAgLyogbGVuICovCisgICAgaW5pdF9sZW4oYmFzZSk7CisKKyAgICAvKiBuZGJ1Zi0+ZmxhZ3MgKi8KKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKGJhc2UsICdDJykpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9DOworICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgJ0YnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0ZPUlRSQU47CisKKworICAgIC8qIGNvbnZlcnQgbnVtcHkgYXJyYXkgdG8gc3Vib2Zmc2V0IHJlcHJlc2VudGF0aW9uICovCisgICAgaWYgKG5kYnVmLT5mbGFncyAmIE5EX1BJTCkgeworICAgICAgICAvKiBtb2RpZmllcyBiYXNlLT5idWYsIGJhc2UtPnN0cmlkZXMgYW5kIGJhc2UtPnN1Ym9mZnNldHMgKiovCisgICAgICAgIHJldHVybiBpbml0X3N1Ym9mZnNldHMobmRidWYpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgbmRidWZfdCAqCitpbml0X25kYnVmKFB5T2JqZWN0ICppdGVtcywgUHlPYmplY3QgKnNoYXBlLCBQeU9iamVjdCAqc3RyaWRlcywKKyAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQsIFB5T2JqZWN0ICpmb3JtYXQsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBQeV9zc2l6ZV90IG5kaW07CisgICAgUHlfc3NpemVfdCBuaXRlbXM7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKworICAgIC8qIG5kaW0gPSBsZW4oc2hhcGUpICovCisgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzaGFwZSkKKyAgICBuZGltID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNoYXBlKTsKKyAgICBpZiAobmRpbSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm5kaW0gbXVzdCBub3QgZXhjZWVkICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBsZW4oc3RyaWRlcykgPSBsZW4oc2hhcGUpICovCisgICAgaWYgKHN0cmlkZXMpIHsKKyAgICAgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShzdHJpZGVzKQorICAgICAgICBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN0cmlkZXMpID09IDApCisgICAgICAgICAgICBzdHJpZGVzID0gTlVMTDsKKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBORF9GT1JUUkFOKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJORF9GT1JUUkFOIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggc3RyaWRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN0cmlkZXMpICE9IG5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJsZW4oc2hhcGUpICE9IGxlbihzdHJpZGVzKSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBpdGVtc2l6ZSAqLworICAgIGl0ZW1zaXplID0gZ2V0X2l0ZW1zaXplKGZvcm1hdCk7CisgICAgaWYgKGl0ZW1zaXplIDw9IDApIHsKKyAgICAgICAgaWYgKGl0ZW1zaXplID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpdGVtc2l6ZSBtdXN0IG5vdCBiZSB6ZXJvIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY29udmVydCBzY2FsYXIgdG8gbGlzdCAqLworICAgIGlmIChuZGltID09IDApIHsKKyAgICAgICAgaXRlbXMgPSBQeV9CdWlsZFZhbHVlKCIoTykiLCBpdGVtcyk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBDSEVDS19MSVNUX09SX1RVUExFKGl0ZW1zKQorICAgICAgICBQeV9JTkNSRUYoaXRlbXMpOworICAgIH0KKworICAgIC8qIG51bWJlciBvZiBpdGVtcyAqLworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShpdGVtcyk7CisgICAgaWYgKG5pdGVtcyA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImluaXRpYWxpemVyIGxpc3Qgb3IgdHVwbGUgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWYgPSBuZGJ1Zl9uZXcobml0ZW1zLCBpdGVtc2l6ZSwgb2Zmc2V0LCBmbGFncyk7CisgICAgaWYgKG5kYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisKKyAgICBpZiAoaW5pdF9zaW1wbGUobmRidWYsIGl0ZW1zLCBmb3JtYXQsIGl0ZW1zaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGluaXRfc3RydWN0dXJlKG5kYnVmLCBzaGFwZSwgc3RyaWRlcywgbmRpbSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICByZXR1cm4gbmRidWY7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgbmRidWZfZnJlZShuZGJ1Zik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGluaXRpYWxpemUgYW5kIHB1c2ggYSBuZXcgYmFzZSBvbnRvIHRoZSBsaW5rZWQgbGlzdCAqLworc3RhdGljIGludAorbmRhcnJheV9wdXNoX2Jhc2UoTkRBcnJheU9iamVjdCAqbmQsIFB5T2JqZWN0ICppdGVtcywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCwgUHlPYmplY3QgKmZvcm1hdCwgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmOworCisgICAgbmRidWYgPSBpbml0X25kYnVmKGl0ZW1zLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0LCBmb3JtYXQsIGZsYWdzKTsKKyAgICBpZiAobmRidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbmRidWZfcHVzaChuZCwgbmRidWYpOworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIFB5QlVGX1VOVVNFRCAweDEwMDAwCitzdGF0aWMgaW50CituZGFycmF5X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJvYmoiLCAic2hhcGUiLCAic3RyaWRlcyIsICJvZmZzZXQiLCAiZm9ybWF0IiwgImZsYWdzIiwgImdldGJ1ZiIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsgIC8qIGluaXRpYWxpemVyOiBzY2FsYXIsIGxpc3QsIHR1cGxlIG9yIGJhc2Ugb2JqZWN0ICovCisgICAgUHlPYmplY3QgKnNoYXBlID0gTlVMTDsgICAvKiBzaXplIG9mIGVhY2ggZGltZW5zaW9uICovCisgICAgUHlPYmplY3QgKnN0cmlkZXMgPSBOVUxMOyAvKiBudW1iZXIgb2YgYnl0ZXMgdG8gdGhlIG5leHQgZWx0IGluIGVhY2ggZGltICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQgPSAwOyAgICAgICAgICAgIC8qIGJ1ZmZlciBvZmZzZXQgKi8KKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gc2ltcGxlX2Zvcm1hdDsgLyogc3RydWN0IG1vZHVsZSBzcGVjaWZpZXI6ICJCIiAqLworICAgIGludCBmbGFncyA9IE5EX0RFRkFVTFQ7ICAgICAgICAgICAvKiBiYXNlIGJ1ZmZlciBhbmQgbmRhcnJheSBmbGFncyAqLworCisgICAgaW50IGdldGJ1ZiA9IFB5QlVGX1VOVVNFRDsgLyogcmUtZXhwb3J0ZXI6IGdldGJ1ZmZlciByZXF1ZXN0IGZsYWdzICovCisKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9Pbk9paSIsIGt3bGlzdCwKKyAgICAgICAgICAgICZ2LCAmc2hhcGUsICZzdHJpZGVzLCAmb2Zmc2V0LCAmZm9ybWF0LCAmZmxhZ3MsICZnZXRidWYpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBOREFycmF5T2JqZWN0IGlzIHJlLWV4cG9ydGVyICovCisgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHYpICYmIHNoYXBlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0cmlkZXMgfHwgb2Zmc2V0IHx8IGZvcm1hdCAhPSBzaW1wbGVfZm9ybWF0IHx8CisgICAgICAgICAgICAhKGZsYWdzID09IE5EX0RFRkFVTFQgfHwgZmxhZ3MgPT0gTkRfUkVESVJFQ1QpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgImNvbnN0cnVjdGlvbiBmcm9tIGV4cG9ydGVyIG9iamVjdCBvbmx5IHRha2VzICdvYmonLCAnZ2V0YnVmJyAiCisgICAgICAgICAgICAgICAiYW5kICdmbGFncycgYXJndW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBnZXRidWYgPSAoZ2V0YnVmID09IFB5QlVGX1VOVVNFRCkgPyBQeUJVRl9GVUxMX1JPIDogZ2V0YnVmOworCisgICAgICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKHYsIG5kLCBnZXRidWYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBpbml0X2ZsYWdzKG5kLT5oZWFkKTsKKyAgICAgICAgbmQtPmhlYWQtPmZsYWdzIHw9IGZsYWdzOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIE5EQXJyYXlPYmplY3QgaXMgdGhlIG9yaWdpbmFsIGJhc2Ugb2JqZWN0LiAqLworICAgIGlmIChnZXRidWYgIT0gUHlCVUZfVU5VU0VEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZ2V0YnVmIGFyZ3VtZW50IG9ubHkgdmFsaWQgZm9yIGNvbnN0cnVjdGlvbiBmcm9tIGV4cG9ydGVyICIKKyAgICAgICAgICAgICJvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc2hhcGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgInNoYXBlIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgZnJvbSAiCisgICAgICAgICAgICAibGlzdCwgdHVwbGUgb3Igc2NhbGFyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgJiBORF9WQVJFWFBPUlQpIHsKKyAgICAgICAgbmQtPmZsYWdzIHw9IE5EX1ZBUkVYUE9SVDsKKyAgICAgICAgZmxhZ3MgJj0gfk5EX1ZBUkVYUE9SVDsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGFuZCBwdXNoIHRoZSBmaXJzdCBiYXNlIGJ1ZmZlciBvbnRvIHRoZSBsaW5rZWQgbGlzdC4gKi8KKyAgICByZXR1cm4gbmRhcnJheV9wdXNoX2Jhc2UobmQsIHYsIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpOworfQorCisvKiBQdXNoIGFuIGFkZGl0aW9uYWwgYmFzZSBvbnRvIHRoZSBsaW5rZWQgbGlzdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3B1c2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJpdGVtcyIsICJzaGFwZSIsICJzdHJpZGVzIiwgIm9mZnNldCIsICJmb3JtYXQiLCAiZmxhZ3MiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqaXRlbXMgPSBOVUxMOyAgIC8qIGluaXRpYWxpemVyOiBzY2FsYXIsIGxpc3Qgb3IgdHVwbGUgKi8KKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOyAgIC8qIHNpemUgb2YgZWFjaCBkaW1lbnNpb24gKi8KKyAgICBQeU9iamVjdCAqc3RyaWRlcyA9IE5VTEw7IC8qIG51bWJlciBvZiBieXRlcyB0byB0aGUgbmV4dCBlbHQgaW4gZWFjaCBkaW0gKi8KKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gc2ltcGxlX2Zvcm1hdDsgIC8qIHN0cnVjdCBtb2R1bGUgc3BlY2lmaWVyOiAiQiIgKi8KKyAgICBQeV9zc2l6ZV90IG9mZnNldCA9IDA7ICAgICAgICAgICAgIC8qIGJ1ZmZlciBvZmZzZXQgKi8KKyAgICBpbnQgZmxhZ3MgPSBORF9ERUZBVUxUOyAgICAgICAgICAgIC8qIGJhc2UgYnVmZmVyIGZsYWdzICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT098T25PaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICZpdGVtcywgJnNoYXBlLCAmc3RyaWRlcywgJm9mZnNldCwgJmZvcm1hdCwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmxhZ3MgJiBORF9WQVJFWFBPUlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiTkRfVkFSRVhQT1JUIGZsYWcgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgb2JqZWN0IGNyZWF0aW9uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoTkRfSVNfQ09OU1VNRVIobmQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJzdHJ1Y3R1cmUgb2YgcmUtZXhwb3J0aW5nIG9iamVjdCBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghKG5kLT5mbGFncyZORF9WQVJFWFBPUlQpICYmIG5kLT5oZWFkLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGNoYW5nZSBzdHJ1Y3R1cmU6ICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsCisgICAgICAgICAgICBuZC0+aGVhZC0+ZXhwb3J0cywgbmQtPmhlYWQtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChuZGFycmF5X3B1c2hfYmFzZShuZCwgaXRlbXMsIHNoYXBlLCBzdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGZvcm1hdCwgZmxhZ3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIFBvcCBhIGJhc2UgZnJvbSB0aGUgbGlua2VkIGxpc3QgKGlmIHBvc3NpYmxlKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3BvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGlmIChORF9JU19DT05TVU1FUihuZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInN0cnVjdHVyZSBvZiByZS1leHBvcnRpbmcgb2JqZWN0IGlzIGltbXV0YWJsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG5kLT5oZWFkLT5leHBvcnRzID4gMCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGNoYW5nZSBzdHJ1Y3R1cmU6ICV6ZCBleHBvcnRlZCBidWZmZXIlcyIsCisgICAgICAgICAgICBuZC0+aGVhZC0+ZXhwb3J0cywgbmQtPmhlYWQtPmV4cG9ydHM9PTEgPyAiIiA6ICJzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobmQtPmhlYWQtPm5leHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibGlzdCBvbmx5IGhhcyBhIHNpbmdsZSBiYXNlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmX3BvcChuZCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorbmRhcnJheV9nZXRidWYoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWYgPSBzZWxmLT5oZWFkOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpbnQgYmFzZWZsYWdzID0gbmRidWYtPmZsYWdzOworCisgICAgLyogcmVkaXJlY3QgbW9kZSAqLworICAgIGlmIChiYXNlLT5vYmogIT0gTlVMTCAmJiAoYmFzZWZsYWdzJk5EX1JFRElSRUNUKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UtPm9iaiwgdmlldywgZmxhZ3MpOworICAgIH0KKworICAgIC8qIHN0YXJ0IHdpdGggY29tcGxldGUgaW5mb3JtYXRpb24gKi8KKyAgICAqdmlldyA9ICpiYXNlOworICAgIHZpZXctPm9iaiA9IE5VTEw7CisKKyAgICAvKiByZWNvbnN0cnVjdCBmb3JtYXQgKi8KKyAgICBpZiAodmlldy0+Zm9ybWF0ID09IE5VTEwpCisgICAgICAgIHZpZXctPmZvcm1hdCA9ICJCIjsKKworICAgIGlmIChiYXNlLT5uZGltICE9IDAgJiYKKyAgICAgICAgKChSRVFfU0hBUEUoZmxhZ3MpICYmIGJhc2UtPnNoYXBlID09IE5VTEwpIHx8CisgICAgICAgICAoUkVRX1NUUklERVMoZmxhZ3MpICYmIGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkpKSB7CisgICAgICAgIC8qIFRoZSBuZGFycmF5IGlzIGEgcmUtZXhwb3J0ZXIgdGhhdCBoYXMgYmVlbiBjcmVhdGVkIHdpdGhvdXQgZnVsbAorICAgICAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UgdGhlCisgICAgICAgICAgIG5kYXJyYXkgaXMgbm90IGEgUEVQLTMxMTggY29tcGxpYW50IGJ1ZmZlciBwcm92aWRlci4gKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgInJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZm9ybWF0LCBzaGFwZSBvciBzdHJpZGVzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoYmFzZWZsYWdzICYgTkRfR0VUQlVGX0ZBSUwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIk5EX0dFVEJVRl9GQUlMOiBmb3JjZWQgdGVzdCBleGNlcHRpb24iKTsKKyAgICAgICAgaWYgKGJhc2VmbGFncyAmIE5EX0dFVEJVRl9VTkRFRklORUQpCisgICAgICAgICAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKikweDE7IC8qIHdyb25nIGJ1dCBwZXJtaXR0ZWQgaW4gPD0gMy4yICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUkVRX1dSSVRBQkxFKGZsYWdzKSAmJiBiYXNlLT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9GT1JNQVQoZmxhZ3MpKSB7CisgICAgICAgIC8qIE5VTEwgaW5kaWNhdGVzIHRoYXQgdGhlIGJ1ZmZlcidzIGRhdGEgdHlwZSBoYXMgYmVlbiBjYXN0IHRvICdCJy4KKyAgICAgICAgICAgdmlldy0+aXRlbXNpemUgaXMgdGhlIF9wcmV2aW91c18gaXRlbXNpemUuIElmIHNoYXBlIGlzIHByZXNlbnQsCisgICAgICAgICAgIHRoZSBlcXVhbGl0eSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIHN0aWxsIGhvbGRzIGF0IHRoaXMKKyAgICAgICAgICAgcG9pbnQuIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkCisgICAgICAgICAgIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUkVRX0NfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0ZfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0ZPUlRSQU5fQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBGb3J0cmFuIGNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUkVRX0FOWV9DT05USUdVT1VTKGZsYWdzKSAmJiAhTkRfQU5ZX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3QgY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0lORElSRUNUKGZsYWdzKSAmJiAoYmFzZWZsYWdzICYgTkRfUElMKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgd2l0aG91dCBzdWJvZmZzZXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfU1RSSURFUyhmbGFncykpIHsKKyAgICAgICAgaWYgKCFORF9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJuZGFycmF5IGlzIG5vdCBDLWNvbnRpZ3VvdXMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB2aWV3LT5zdHJpZGVzID0gTlVMTDsKKyAgICB9CisgICAgaWYgKCFSRVFfU0hBUEUoZmxhZ3MpKSB7CisgICAgICAgIC8qIFB5QlVGX1NJTVBMRSBvciBQeUJVRl9XUklUQUJMRTogYXQgdGhpcyBwb2ludCBidWYgaXMgQy1jb250aWd1b3VzLAorICAgICAgICAgICBzbyBiYXNlLT5idWYgPSBuZGJ1Zi0+ZGF0YS4gKi8KKyAgICAgICAgaWYgKHZpZXctPmZvcm1hdCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBQeUJVRl9TSU1QTEV8UHlCVUZfRk9STUFUIGFuZCBQeUJVRl9XUklUQUJMRXxQeUJVRl9GT1JNQVQgZG8KKyAgICAgICAgICAgICAgIG5vdCBtYWtlIHNlbnNlLiAqLworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICJuZGFycmF5OiBjYW5ub3QgY2FzdCB0byB1bnNpZ25lZCBieXRlcyBpZiB0aGUgZm9ybWF0IGZsYWcgIgorICAgICAgICAgICAgICAgICJpcyBwcmVzZW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBhbmQgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplCisgICAgICAgICAgIGRvIF9ub3RfIGhvbGQgZnJvbSBoZXJlIG9uISAqLworICAgICAgICB2aWV3LT5uZGltID0gMTsKKyAgICAgICAgdmlldy0+c2hhcGUgPSBOVUxMOworICAgIH0KKworICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHZpZXctPm9iaik7CisgICAgc2VsZi0+aGVhZC0+ZXhwb3J0cysrOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK25kYXJyYXlfcmVsZWFzZWJ1ZihOREFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcpCit7CisgICAgaWYgKCFORF9JU19DT05TVU1FUihzZWxmKSkgeworICAgICAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHZpZXctPmludGVybmFsOworICAgICAgICBpZiAoLS1uZGJ1Zi0+ZXhwb3J0cyA9PSAwICYmIG5kYnVmICE9IHNlbGYtPmhlYWQpCisgICAgICAgICAgICBuZGJ1Zl9kZWxldGUoc2VsZiwgbmRidWYpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBuZGFycmF5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYyluZGFycmF5X2dldGJ1ZiwgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIChyZWxlYXNlYnVmZmVycHJvYyluZGFycmF5X3JlbGVhc2VidWYgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4aW5nL3NsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBjaGFyICoKK3B0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqYmFzZSwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBjaGFyICpwdHI7CisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gKi8KKworICAgIGlmIChiYXNlLT5zaGFwZSkKKyAgICAgICAgbml0ZW1zID0gYmFzZS0+c2hhcGVbMF07CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChiYXNlLT5uZGltID09IDEgJiYgU0lNUExFX0ZPUk1BVChiYXNlLT5mb3JtYXQpKTsKKyAgICAgICAgbml0ZW1zID0gYmFzZS0+bGVuOworICAgIH0KKworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggKz0gbml0ZW1zOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG5pdGVtcykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gKGNoYXIgKiliYXNlLT5idWY7CisKKyAgICBpZiAoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKQorICAgICAgICAgcHRyICs9IGJhc2UtPml0ZW1zaXplICogaW5kZXg7CisgICAgZWxzZQorICAgICAgICAgcHRyICs9IGJhc2UtPnN0cmlkZXNbMF0gKiBpbmRleDsKKworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCBiYXNlLT5zdWJvZmZzZXRzKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2l0ZW0oTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGNoYXIgKnB0cjsKKworICAgIGlmIChiYXNlLT5uZGltID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2Ygc2NhbGFyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHB0ciA9IHB0cl9mcm9tX2luZGV4KGJhc2UsIGluZGV4KTsKKyAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJhc2UtPm5kaW0gPT0gMSkgeworICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShwdHIsIGJhc2UtPmZvcm1hdCwgYmFzZS0+aXRlbXNpemUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgICAgIFB5X2J1ZmZlciAqc3VidmlldzsKKworICAgICAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9uZXcoJk5EQXJyYXlfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKG5kYXJyYXlfaW5pdF9zdGF0aWNidWYoKFB5T2JqZWN0ICopc2VsZiwgbmQsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgc3VidmlldyA9ICZuZC0+c3RhdGljYnVmLmJhc2U7CisKKyAgICAgICAgc3Vidmlldy0+YnVmID0gcHRyOworICAgICAgICBzdWJ2aWV3LT5sZW4gLz0gc3Vidmlldy0+c2hhcGVbMF07CisKKyAgICAgICAgc3Vidmlldy0+bmRpbS0tOworICAgICAgICBzdWJ2aWV3LT5zaGFwZSsrOworICAgICAgICBpZiAoc3Vidmlldy0+c3RyaWRlcykgc3Vidmlldy0+c3RyaWRlcysrOworICAgICAgICBpZiAoc3Vidmlldy0+c3Vib2Zmc2V0cykgc3Vidmlldy0+c3Vib2Zmc2V0cysrOworCisgICAgICAgIGluaXRfZmxhZ3MoJm5kLT5zdGF0aWNidWYpOworCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKKyAgICB9Cit9CisKKy8qCisgIEZvciBlYWNoIGRpbWVuc2lvbiwgd2UgZ2V0IHZhbGlkIChzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGgpIHF1YWRydXBsZXMKKyAgZnJvbSBQeVNsaWNlX0dldEluZGljZXNFeCgpLgorCisgIFNsaWNpbmcgTnVtUHkgYXJyYXlzCisgID09PT09PT09PT09PT09PT09PT09CisKKyAgICBBIHBvaW50ZXIgdG8gYW4gZWxlbWVudCBpbiBhIE51bVB5IGFycmF5IGlzIGRlZmluZWQgYnk6CisKKyAgICAgIHB0ciA9IChjaGFyICopYnVmICsgaW5kaWNlc1swXSAqIHN0cmlkZXNbMF0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4gKworICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgIEFkanVzdCBidWY6CisgICAgLS0tLS0tLS0tLS0KKyAgICAgIEFkZGluZyBzdGFydFtuXSBmb3IgZWFjaCBkaW1lbnNpb24gZWZmZWN0aXZlbHkgYWRkcyB0aGUgY29uc3RhbnQ6CisKKyAgICAgICAgYyA9IHN0YXJ0WzBdICogc3RyaWRlc1swXSArIC4uLiArIHN0YXJ0W25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgICAgVGhlcmVmb3JlIGluaXRfc2xpY2UoKSBhZGRzIGFsbCBzdGFydFtuXSBkaXJlY3RseSB0byBidWYuCisKKyAgICBBZGp1c3Qgc2hhcGU6CisgICAgLS0tLS0tLS0tLS0tLQorICAgICAgT2J2aW91c2x5IHNoYXBlW25dID0gc2xpY2VsZW5ndGhbbl0KKworICAgIEFkanVzdCBzdHJpZGVzOgorICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgSW4gdGhlIG9yaWdpbmFsIGFycmF5LCB0aGUgbmV4dCBlbGVtZW50IGluIGEgZGltZW5zaW9uIGlzIHJlYWNoZWQKKyAgICAgIGJ5IGFkZGluZyBzdHJpZGVzW25dIHRvIHRoZSBwb2ludGVyLiBJbiB0aGUgc2xpY2VkIGFycmF5LCBlbGVtZW50cworICAgICAgbWF5IGJlIHNraXBwZWQsIHNvIHRoZSBuZXh0IGVsZW1lbnQgaXMgcmVhY2hlZCBieSBhZGRpbmc6CisKKyAgICAgICAgc3RyaWRlc1tuXSAqIHN0ZXBbbl0KKworICBTbGljaW5nIFBJTCBhcnJheXMKKyAgPT09PT09PT09PT09PT09PT09CisKKyAgICBMYXlvdXQ6CisgICAgLS0tLS0tLQorICAgICAgSW4gdGhlIGZpcnN0ICh6ZXJvdGgpIGRpbWVuc2lvbiwgUElMIGFycmF5cyBoYXZlIGFuIGFycmF5IG9mIHBvaW50ZXJzCisgICAgICB0byBzdWItYXJyYXlzIG9mIG5kaW0tMS4gU3RyaWRpbmcgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbiBpcyBkb25lIGJ5CisgICAgICBnZXR0aW5nIHRoZSBpbmRleCBvZiB0aGUgbnRoIHBvaW50ZXIsIGRlcmVmZXJlbmNlIGl0IGFuZCB0aGVuIGFkZCBhCisgICAgICBzdWJvZmZzZXQgdG8gaXQuIFRoZSBhcnJheXMgcG9pbnRlZCB0byBjYW4gYmVzdCBiZSBzZWVuIGEgcmVndWxhcgorICAgICAgTnVtUHkgYXJyYXlzLgorCisgICAgQWRqdXN0IGJ1ZjoKKyAgICAtLS0tLS0tLS0tLQorICAgICAgSW4gdGhlIG9yaWdpbmFsIGFycmF5LCBidWYgcG9pbnRzIHRvIGEgbG9jYXRpb24gKHVzdWFsbHkgdGhlIHN0YXJ0KQorICAgICAgaW4gdGhlIGFycmF5IG9mIHBvaW50ZXJzLiBGb3IgdGhlIHNsaWNlZCBhcnJheSwgc3RhcnRbMF0gY2FuIGJlCisgICAgICBhZGRlZCB0byBidWYgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGZvciBOdW1QeSBhcnJheXMuCisKKyAgICBBZGp1c3Qgc3Vib2Zmc2V0czoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIER1ZSB0byB0aGUgZGVyZWZlcmVuY2luZyBzdGVwIGluIHRoZSBhZGRyZXNzaW5nIHNjaGVtZSwgaXQgaXMgbm90CisgICAgICBwb3NzaWJsZSB0byBhZGp1c3QgYnVmIGZvciBoaWdoZXIgZGltZW5zaW9ucy4gUmVjYWxsIHRoYXQgdGhlCisgICAgICBzdWItYXJyYXlzIHBvaW50ZWQgdG8gYXJlIHJlZ3VsYXIgTnVtUHkgYXJyYXlzLCBzbyBmb3IgZWFjaCBvZgorICAgICAgdGhvc2UgYXJyYXlzIGFkZGluZyBzdGFydFtuXSBlZmZlY3RpdmVseSBhZGRzIHRoZSBjb25zdGFudDoKKworICAgICAgICBjID0gc3RhcnRbMV0gKiBzdHJpZGVzWzFdICsgLi4uICsgc3RhcnRbbmRpbS0xXSAqIHN0cmlkZXNbbmRpbS0xXQorCisgICAgICBUaGlzIGNvbnN0YW50IGlzIGFkZGVkIHRvIHN1Ym9mZnNldHNbMF0uIHN1Ym9mZnNldHNbMF0gaW4gdHVybiBpcworICAgICAgYWRkZWQgdG8gZWFjaCBwb2ludGVyIHJpZ2h0IGFmdGVyIGRlcmVmZXJlbmNpbmcuCisKKyAgICBBZGp1c3Qgc2hhcGUgYW5kIHN0cmlkZXM6CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgU2hhcGUgYW5kIHN0cmlkZXMgYXJlIG5vdCBpbmZsdWVuY2VkIGJ5IHRoZSBkZXJlZmVyZW5jaW5nIHN0ZXAsIHNvCisgICAgICB0aGV5IGFyZSBhZGp1c3RlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgZm9yIE51bVB5IGFycmF5cy4KKworICBNdWx0aXBsZSBsZXZlbHMgb2Ygc3Vib2Zmc2V0cworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBGb3IgYSBjb25zdHJ1Y3QgbGlrZSBhbiBhcnJheSBvZiBwb2ludGVycyB0byBhcnJheSBvZiBwb2ludGVycyB0bworICAgICAgc3ViLWFycmF5cyBvZiBuZGltLTI6CisKKyAgICAgICAgc3Vib2Zmc2V0c1swXSA9IHN0YXJ0WzFdICogc3RyaWRlc1sxXQorICAgICAgICBzdWJvZmZzZXRzWzFdID0gc3RhcnRbMl0gKiBzdHJpZGVzWzJdICsgLi4uCisqLworc3RhdGljIGludAoraW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CisKKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBiYXNlLT5zaGFwZVtkaW1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCB8fCBkaW0gPT0gMCkgeworICAgIGFkanVzdF9idWY6CisgICAgICAgIGJhc2UtPmJ1ZiA9IChjaGFyICopYmFzZS0+YnVmICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4gPSBkaW0tMTsKKyAgICAgICAgd2hpbGUgKG4gPj0gMCAmJiBiYXNlLT5zdWJvZmZzZXRzW25dIDwgMCkKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgZ290byBhZGp1c3RfYnVmOyAvKiBhbGwgc3Vib2Zmc2V0cyBhcmUgbmVnYXRpdmUgKi8KKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IGJhc2UtPnN1Ym9mZnNldHNbbl0gKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgYmFzZS0+c2hhcGVbZGltXSA9IHNsaWNlbGVuZ3RoOworICAgIGJhc2UtPnN0cmlkZXNbZGltXSA9IGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0ZXA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29weV9zdHJ1Y3R1cmUoUHlfYnVmZmVyICpiYXNlKQoreworICAgIFB5X3NzaXplX3QgKnNoYXBlID0gTlVMTCwgKnN0cmlkZXMgPSBOVUxMLCAqc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgc2hhcGUgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnNoYXBlKSk7CisgICAgc3RyaWRlcyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqc3RyaWRlcykpOworICAgIGlmIChzaGFwZSA9PSBOVUxMIHx8IHN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfbm9tZW07CisKKyAgICBzdWJvZmZzZXRzID0gTlVMTDsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cykgeworICAgICAgICBzdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzdWJvZmZzZXRzKSk7CisgICAgICAgIGlmIChzdWJvZmZzZXRzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycl9ub21lbTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKSB7CisgICAgICAgIHNoYXBlW2ldID0gYmFzZS0+c2hhcGVbaV07CisgICAgICAgIHN0cmlkZXNbaV0gPSBiYXNlLT5zdHJpZGVzW2ldOworICAgICAgICBpZiAoc3Vib2Zmc2V0cykKKyAgICAgICAgICAgIHN1Ym9mZnNldHNbaV0gPSBiYXNlLT5zdWJvZmZzZXRzW2ldOworICAgIH0KKworICAgIGJhc2UtPnNoYXBlID0gc2hhcGU7CisgICAgYmFzZS0+c3RyaWRlcyA9IHN0cmlkZXM7CisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IHN1Ym9mZnNldHM7CisKKyAgICByZXR1cm4gMDsKKworZXJyX25vbWVtOgorICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgUHlNZW1fWEZyZWUoc2hhcGUpOworICAgIFB5TWVtX1hGcmVlKHN0cmlkZXMpOworICAgIFB5TWVtX1hGcmVlKHN1Ym9mZnNldHMpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfc3Vic2NyaXB0KE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisKKyAgICBpZiAoYmFzZS0+bmRpbSA9PSAwKSB7CisgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrKGtleSkgJiYgUHlUdXBsZV9HRVRfU0laRShrZXkpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKGJhc2UtPmJ1ZiwgYmFzZS0+Zm9ybWF0LCBiYXNlLT5pdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2V5ID09IFB5X0VsbGlwc2lzKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIHNjYWxhciIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChrZXkpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbmRhcnJheV9pdGVtKHNlbGYsIGluZGV4KTsKKyAgICB9CisKKyAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9uZXcoJk5EQXJyYXlfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKG5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogbmV3IG5kYXJyYXkgaXMgYSBjb25zdW1lciAqLworICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKChQeU9iamVjdCAqKXNlbGYsIG5kLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogY29weSBzaGFwZSwgc3RyaWRlcyBhbmQgc3Vib2Zmc2V0cyAqLworICAgIG5kYnVmID0gbmQtPmhlYWQ7CisgICAgYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBpZiAoY29weV9zdHJ1Y3R1cmUoYmFzZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihuZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfT1dOX0FSUkFZUzsKKworICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgLyogb25lLWRpbWVuc2lvbmFsIHNsaWNlICovCisgICAgICAgIGlmIChpbml0X3NsaWNlKGJhc2UsIGtleSwgMCkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgfQorICAgIGVsc2UgaWYgUHlUdXBsZV9DaGVjayhrZXkpIHsKKyAgICAgICAgLyogbXVsdGktZGltZW5zaW9uYWwgc2xpY2UgKi8KKyAgICAgICAgUHlPYmplY3QgKnR1cGxlID0ga2V5OworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUodHVwbGUpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeVR1cGxlX0dFVF9JVEVNKHR1cGxlLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlTbGljZV9DaGVjayhrZXkpKQorICAgICAgICAgICAgICAgIGdvdG8gdHlwZV9lcnJvcjsKKyAgICAgICAgICAgIGlmIChpbml0X3NsaWNlKGJhc2UsIGtleSwgKGludClpKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGdvdG8gdHlwZV9lcnJvcjsKKyAgICB9CisKKyAgICBpbml0X2xlbihiYXNlKTsKKyAgICBpbml0X2ZsYWdzKG5kYnVmKTsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiluZDsKKworCit0eXBlX2Vycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLAorICAgICAgICBrZXktPm9iX3R5cGUtPnRwX25hbWUpOworZXJyX29jY3VycmVkOgorICAgIFB5X0RFQ1JFRihuZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIGludAorbmRhcnJheV9hc3Nfc3Vic2NyaXB0KE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZDsKKyAgICBQeV9idWZmZXIgKmRlc3QgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICBQeV9idWZmZXIgc3JjOworICAgIGNoYXIgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGludCByZXQgPSAtMTsKKworICAgIGlmIChkZXN0LT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibmRhcnJheSBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibmRhcnJheSBkYXRhIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGRlc3QtPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8CisgICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA9PSAwKSkgeworICAgICAgICAgICAgcHRyID0gKGNoYXIgKilkZXN0LT5idWY7CisgICAgICAgICAgICByZXR1cm4gcGFja19zaW5nbGUocHRyLCB2YWx1ZSwgZGVzdC0+Zm9ybWF0LCBkZXN0LT5pdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiBzY2FsYXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGVzdC0+bmRpbSA9PSAxICYmIFB5SW5kZXhfQ2hlY2soa2V5KSkgeworICAgICAgICAvKiBydmFsdWUgbXVzdCBiZSBhIHNpbmdsZSBpdGVtICovCisgICAgICAgIGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChrZXkpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwdHIgPSBwdHJfZnJvbV9pbmRleChkZXN0LCBpbmRleCk7CisgICAgICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBkZXN0LT5mb3JtYXQsIGRlc3QtPml0ZW1zaXplKTsKKyAgICB9CisKKyAgICAvKiBydmFsdWUgbXVzdCBiZSBhbiBleHBvcnRlciAqLworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmFsdWUsICZzcmMsIFB5QlVGX0ZVTExfUk8pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZCA9IChOREFycmF5T2JqZWN0ICopbmRhcnJheV9zdWJzY3JpcHQoc2VsZiwga2V5KTsKKyAgICBpZiAobmQgIT0gTlVMTCkgeworICAgICAgICBkZXN0ID0gJm5kLT5oZWFkLT5iYXNlOworICAgICAgICByZXQgPSBjb3B5X2J1ZmZlcihkZXN0LCAmc3JjKTsKKyAgICAgICAgUHlfREVDUkVGKG5kKTsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbGljZV9pbmRpY2VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0LCAqa2V5LCAqdG1wOworICAgIFB5X3NzaXplX3Qgc1s0XTsgLyogc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoICovCisgICAgUHlfc3NpemVfdCBpLCBsZW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9uIiwgJmtleSwgJmxlbikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlTbGljZV9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHNsaWNlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgbGVuLCAmc1swXSwgJnNbMV0sICZzWzJdLCAmc1szXSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5VHVwbGVfTmV3KDQpOworICAgIGlmIChyZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgIHRtcCA9IFB5TG9uZ19Gcm9tU3NpemVfdChzW2ldKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXQsIGksIHRtcCk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKHJldCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbmRhcnJheV9hc19tYXBwaW5nID0geworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpbmRhcnJheV9zdWJzY3JpcHQsICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KKyAgICAob2Jqb2JqYXJncHJvYyluZGFycmF5X2Fzc19zdWJzY3JpcHQgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KK307CisKK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBuZGFycmF5X2FzX3NlcXVlbmNlID0geworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLworICAgICAgICAoc3NpemVhcmdmdW5jKW5kYXJyYXlfaXRlbSwgICAgICAgLyogc3FfaXRlbSAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzc2l6ZV9hcnJheV9hc190dXBsZShQeV9zc2l6ZV90ICphcnJheSwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgUHlPYmplY3QgKnR1cGxlLCAqeDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoYXJyYXkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOworCisgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOworICAgIGlmICh0dXBsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICB4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGFycmF5W2ldKTsKKyAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIGksIHgpOworICAgIH0KKworICAgIHJldHVybiB0dXBsZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X2ZsYWdzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5oZWFkLT5mbGFncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9vZmZzZXQoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9IHNlbGYtPmhlYWQ7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuZGJ1Zi0+b2Zmc2V0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X29iaihOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworCisgICAgaWYgKGJhc2UtPm9iaiA9PSBOVUxMKSB7IAorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGJhc2UtPm9iaik7CisgICAgcmV0dXJuIGJhc2UtPm9iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X25ieXRlcyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+bGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3JlYWRvbmx5KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhiYXNlLT5yZWFkb25seSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9pdGVtc2l6ZShOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+aXRlbXNpemUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfZm9ybWF0KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgY2hhciAqZm10ID0gYmFzZS0+Zm9ybWF0ID8gYmFzZS0+Zm9ybWF0IDogIiI7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZtdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9uZGltKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3NoYXBlKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnNoYXBlLCBiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X3N0cmlkZXMoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gc3NpemVfYXJyYXlfYXNfdHVwbGUoYmFzZS0+c3RyaWRlcywgYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9zdWJvZmZzZXRzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnN1Ym9mZnNldHMsIGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9jX2NvbnRpZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGludCByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kLT5oZWFkLT5iYXNlLCAnQycpOworCisgICAgaWYgKHJldCAhPSBORF9DX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInJlc3VsdHMgZnJvbSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBhbmQgZmxhZ3MgZGlmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2ZvcnRyYW5fY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdGJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0ZPUlRSQU5fQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAicmVzdWx0cyBmcm9tIFB5QnVmZmVyX0lzQ29udGlndW91cygpIGFuZCBmbGFncyBkaWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmV0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgaW50IHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmbmQtPmhlYWQtPmJhc2UsICdBJyk7CisKKyAgICBpZiAocmV0ICE9IE5EX0FOWV9DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJyZXN1bHRzIGZyb20gUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgYW5kIGZsYWdzIGRpZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXQpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBuZGFycmF5X2dldHNldCBbXSA9Cit7CisgIC8qIG5kYnVmICovCisgIHsgImZsYWdzIiwgICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfZmxhZ3MsICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgIm9mZnNldCIsICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfb2Zmc2V0LCAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIC8qIG5kYnVmLmJhc2UgKi8KKyAgeyAib2JqIiwgICAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9vYmosICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAibmJ5dGVzIiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9uYnl0ZXMsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAicmVhZG9ubHkiLCAgICAgKGdldHRlciluZGFycmF5X2dldF9yZWFkb25seSwgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiaXRlbXNpemUiLCAgICAgKGdldHRlciluZGFycmF5X2dldF9pdGVtc2l6ZSwgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiZm9ybWF0IiwgICAgICAgKGdldHRlciluZGFycmF5X2dldF9mb3JtYXQsICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAibmRpbSIsICAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9uZGltLCAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic2hhcGUiLCAgICAgICAgKGdldHRlciluZGFycmF5X2dldF9zaGFwZSwgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic3RyaWRlcyIsICAgICAgKGdldHRlciluZGFycmF5X2dldF9zdHJpZGVzLCAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAic3Vib2Zmc2V0cyIsICAgKGdldHRlciluZGFycmF5X2dldF9zdWJvZmZzZXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiY19jb250aWd1b3VzIiwgKGdldHRlciluZGFycmF5X2NfY29udGlnLCAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiZl9jb250aWd1b3VzIiwgKGdldHRlciluZGFycmF5X2ZvcnRyYW5fY29udGlnLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiY29udGlndW91cyIsICAgKGdldHRlciluZGFycmF5X2NvbnRpZywgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAge05VTEx9Cit9OworCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV90b2xpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICByZXR1cm4gbmRhcnJheV9hc19saXN0KChOREFycmF5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3RvYnl0ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZiA9ICgoTkRBcnJheU9iamVjdCAqKXNlbGYpLT5oZWFkOworICAgIFB5X2J1ZmZlciAqc3JjID0gJm5kYnVmLT5iYXNlOworICAgIFB5X2J1ZmZlciBkZXN0OworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIGNoYXIgKm1lbTsKKworICAgIGlmIChORF9DX0NPTlRJR1VPVVMobmRidWYtPmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3JjLT5idWYsIHNyYy0+bGVuKTsKKworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzcmMtPnN0cmlkZXMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNyYy0+bmRpbSA+IDApOworCisgICAgbWVtID0gUHlNZW1fTWFsbG9jKHNyYy0+bGVuKTsKKyAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVzdCA9ICpzcmM7CisgICAgZGVzdC5idWYgPSBtZW07CisgICAgZGVzdC5zdWJvZmZzZXRzID0gTlVMTDsKKyAgICBkZXN0LnN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRidWYsIDApOworICAgIGlmIChkZXN0LnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisgICAgaWYgKGNvcHlfYnVmZmVyKCZkZXN0LCBzcmMpIDwgMCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG1lbSwgc3JjLT5sZW4pOworCitvdXQ6CisgICAgUHlNZW1fWEZyZWUoZGVzdC5zdHJpZGVzKTsKKyAgICBQeU1lbV9GcmVlKG1lbSk7CisgICAgcmV0dXJuIHJldDsKK30KKworLyogYWRkIHJlZHVuZGFudCAobmVnYXRpdmUpIHN1Ym9mZnNldHMgZm9yIHRlc3RpbmcgKi8KK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2FkZF9zdWJvZmZzZXRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgYWRkIHN1Ym9mZnNldHMgdG8gUElMLXN0eWxlIGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBhZGQgc3Vib2Zmc2V0cyB0byBhcnJheSB3aXRob3V0IHN0cmlkZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKmJhc2UtPnN1Ym9mZnNldHMpKTsKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbaV0gPSAtMTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKiBUZXN0IFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IHJldHVybiBhIG1lbW9yeXZpZXcgZnJvbSBhIHN0YXRpYyBidWZmZXIuCisgICBPYnZpb3VzbHkgdGhpcyBpcyBmcmFnaWxlIGFuZCBvbmx5IG9uZSBzdWNoIHZpZXcgbWF5IGJlIGFjdGl2ZSBhdCBhbnkKKyAgIHRpbWUuIE5ldmVyIHVzZSBhbnl0aGluZyBsaWtlIHRoaXMgaW4gcmVhbCBjb2RlISAqLworc3RhdGljIGNoYXIgKmluZm9idWYgPSBOVUxMOworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIGNvbnN0IE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGNvbnN0IFB5X2J1ZmZlciAqdmlldyA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBjb25zdCBuZGJ1Zl90ICpuZGJ1ZjsKKyAgICBzdGF0aWMgY2hhciBmb3JtYXRbTkRfTUFYX05ESU0rMV07CisgICAgc3RhdGljIFB5X3NzaXplX3Qgc2hhcGVbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHN0cmlkZXNbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHN1Ym9mZnNldHNbTkRfTUFYX05ESU1dOworICAgIHN0YXRpYyBQeV9idWZmZXIgaW5mbzsKKyAgICBjaGFyICpwOworCisgICAgaWYgKCFORF9JU19DT05TVU1FUihuZCkpCisgICAgICAgIG5kYnVmID0gbmQtPmhlYWQ7IC8qIHNlbGYgaXMgbmRhcnJheS9vcmlnaW5hbCBleHBvcnRlciAqLworICAgIGVsc2UgaWYgKE5EQXJyYXlfQ2hlY2sodmlldy0+b2JqKSAmJiAhTkRfSVNfQ09OU1VNRVIodmlldy0+b2JqKSkKKyAgICAgICAgLyogc2VsZiBpcyBuZGFycmF5IGFuZCBjb25zdW1lciBmcm9tIG5kYXJyYXkvb3JpZ2luYWwgZXhwb3J0ZXIgKi8KKyAgICAgICAgbmRidWYgPSAoKE5EQXJyYXlPYmplY3QgKil2aWV3LT5vYmopLT5oZWFkOworICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAibWVtb3J5dmlld19mcm9tX2J1ZmZlcigpOiBuZGFycmF5IG11c3QgYmUgb3JpZ2luYWwgZXhwb3J0ZXIgb3IgIgorICAgICAgICAiY29uc3VtZXIgZnJvbSBuZGFycmF5L29yaWdpbmFsIGV4cG9ydGVyIik7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpbmZvID0gKnZpZXc7CisgICAgcCA9IFB5TWVtX1JlYWxsb2MoaW5mb2J1ZiwgbmRidWYtPmxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKGluZm9idWYpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBpbmZvYnVmID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbmZvYnVmID0gcDsKKyAgICB9CisgICAgLyogY29weSB0aGUgY29tcGxldGUgcmF3IGRhdGEgKi8KKyAgICBtZW1jcHkoaW5mb2J1ZiwgbmRidWYtPmRhdGEsIG5kYnVmLT5sZW4pOworICAgIGluZm8uYnVmID0gaW5mb2J1ZiArICgoY2hhciAqKXZpZXctPmJ1ZiAtIG5kYnVmLT5kYXRhKTsKKworICAgIGlmICh2aWV3LT5mb3JtYXQpIHsKKyAgICAgICAgaWYgKHN0cmxlbih2aWV3LT5mb3JtYXQpID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXI6IGZvcm1hdCBpcyBsaW1pdGVkIHRvICVkIGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgIE5EX01BWF9ORElNKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzdHJjcHkoZm9ybWF0LCB2aWV3LT5mb3JtYXQpOworICAgICAgICBpbmZvLmZvcm1hdCA9IGZvcm1hdDsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPiBORF9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXI6IG5kaW0gaXMgbGltaXRlZCB0byAlZCIsIE5EX01BWF9ORElNKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodmlldy0+c2hhcGUpIHsKKyAgICAgICAgbWVtY3B5KHNoYXBlLCB2aWV3LT5zaGFwZSwgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc2hhcGUgPSBzaGFwZTsKKyAgICB9CisgICAgaWYgKHZpZXctPnN0cmlkZXMpIHsKKyAgICAgICAgbWVtY3B5KHN0cmlkZXMsIHZpZXctPnN0cmlkZXMsIHZpZXctPm5kaW0gKiBzaXplb2YoUHlfc3NpemVfdCkpOworICAgICAgICBpbmZvLnN0cmlkZXMgPSBzdHJpZGVzOworICAgIH0KKyAgICBpZiAodmlldy0+c3Vib2Zmc2V0cykgeworICAgICAgICBtZW1jcHkoc3Vib2Zmc2V0cywgdmlldy0+c3Vib2Zmc2V0cywgdmlldy0+bmRpbSAqIHNpemVvZihQeV9zc2l6ZV90KSk7CisgICAgICAgIGluZm8uc3Vib2Zmc2V0cyA9IHN1Ym9mZnNldHM7CisgICAgfQorCisgICAgcmV0dXJuIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCZpbmZvKTsKK30KKworLyogR2V0IGEgc2luZ2xlIGl0ZW0gZnJvbSBidWZvYmogYXQgdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSBzZXEuCisgICBzZXEgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIGluZGljZXMuIFRoZSBwdXJwb3NlIG9mIHRoaXMgZnVuY3Rpb24KKyAgIGlzIHRvIGNoZWNrIG90aGVyIGZ1bmN0aW9ucyBhZ2FpbnN0IFB5QnVmZmVyX0dldFBvaW50ZXIoKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfcG9pbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEwsICpidWZvYmosICpzZXE7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfc3NpemVfdCBpbmRpY2VzW05EX01BWF9ORElNXTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgdm9pZCAqcHRyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZidWZvYmosICZzZXEpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc2VxKTsKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJ1Zm9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmlldy5uZGltID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiZ2V0X3BvaW50ZXIoKTogbmRpbSA+ICVkIiwgTkRfTUFYX05ESU0pOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzZXEpICE9IHZpZXcubmRpbSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBsZW4oaW5kaWNlcykgIT0gbmRpbSIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgdmlldy5uZGltOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnggPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IFB5TG9uZ19Bc1NzaXplX3QoeCk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHZpZXcuc2hhcGVbaV0pIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJnZXRfcG9pbnRlcigpOiBpbnZhbGlkIGluZGV4ICV6ZCBhdCBwb3NpdGlvbiAlemQiLAorICAgICAgICAgICAgICAgIGluZGljZXNbaV0sIGkpOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdHIgPSBQeUJ1ZmZlcl9HZXRQb2ludGVyKCZ2aWV3LCBpbmRpY2VzKTsKKyAgICByZXQgPSB1bnBhY2tfc2luZ2xlKHB0ciwgdmlldy5mb3JtYXQsIHZpZXcuaXRlbXNpemUpOworCitvdXQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zaXplb2Zfdm9pZF9wKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChzaXplb2Yodm9pZCAqKSk7Cit9CisKK3N0YXRpYyBjaGFyCitnZXRfYXNjaWlfb3JkZXIoUHlPYmplY3QgKm9yZGVyKQoreworICAgIFB5T2JqZWN0ICphc2NpaV9vcmRlcjsKKyAgICBjaGFyIG9yZDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9yZGVyKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm9yZGVyIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIENIQVJfTUFYOworICAgIH0KKworICAgIGFzY2lpX29yZGVyID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcob3JkZXIpOworICAgIGlmIChhc2NpaV9vcmRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBDSEFSX01BWDsKKyAgICB9CisKKyAgICBvcmQgPSBQeUJ5dGVzX0FTX1NUUklORyhhc2NpaV9vcmRlcilbMF07CisgICAgUHlfREVDUkVGKGFzY2lpX29yZGVyKTsKKworICAgIGlmIChvcmQgIT0gJ0MnICYmIG9yZCAhPSAnRicgJiYgb3JkICE9ICdBJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIG9yZGVyLCBtdXN0IGJlIEMsIEYgb3IgQSIpOworICAgICAgICByZXR1cm4gQ0hBUl9NQVg7CisgICAgfQorCisgICAgcmV0dXJuIG9yZDsKK30KKworLyogR2V0IGEgY29udGlndW91cyBtZW1vcnl2aWV3LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jb250aWd1b3VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpidWZmZXJ0eXBlOworICAgIFB5T2JqZWN0ICpvcmRlcjsKKyAgICBsb25nIHR5cGU7CisgICAgY2hhciBvcmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTyIsICZvYmosICZidWZmZXJ0eXBlLCAmb3JkZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlMb25nX0NoZWNrKGJ1ZmZlcnR5cGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYnVmZmVydHlwZSBtdXN0IGJlIFB5QlVGX1JFQUQgb3IgUHlCVUZfV1JJVEUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHlwZSA9IFB5TG9uZ19Bc0xvbmcoYnVmZmVydHlwZSk7CisgICAgaWYgKHR5cGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHR5cGUgIT0gUHlCVUZfUkVBRCAmJiB0eXBlICE9IFB5QlVGX1dSSVRFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgYnVmZmVyIHR5cGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhvYmosIChpbnQpdHlwZSwgb3JkKTsKK30KKworLyogUHlCdWZmZXJfVG9Db250aWd1b3VzKCkgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitweV9idWZmZXJfdG9fY29udGlndW91cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqb3JkZXI7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgb3JkOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PaSIsICZvYmosICZvcmRlciwgJmZsYWdzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIGZsYWdzKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyh2aWV3Lmxlbik7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoYnVmLCAmdmlldywgdmlldy5sZW4sIG9yZCkgPCAwKSB7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCB2aWV3Lmxlbik7CisKK291dDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICBQeU1lbV9YRnJlZShidWYpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2ZtdGNtcChjb25zdCBjaGFyICpmbXQxLCBjb25zdCBjaGFyICpmbXQyKQoreworICAgIGlmIChmbXQxID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGZtdDIgPT0gTlVMTCB8fCBzdHJjbXAoZm10MiwgIkIiKSA9PSAwOworICAgIH0KKyAgICBpZiAoZm10MiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBmbXQxID09IE5VTEwgfHwgc3RyY21wKGZtdDEsICJCIikgPT0gMDsKKyAgICB9CisgICAgcmV0dXJuIHN0cmNtcChmbXQxLCBmbXQyKSA9PSAwOworfQorCitzdGF0aWMgaW50CithcnJheWNtcChjb25zdCBQeV9zc2l6ZV90ICphMSwgY29uc3QgUHlfc3NpemVfdCAqYTIsIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChuZGltID09IDEgJiYgc2hhcGUgJiYgc2hhcGVbMF0gPT0gMSkgeworICAgICAgICAvKiBUaGlzIGlzIGZvciBjb21wYXJpbmcgc3RyaWRlczogRm9yIGV4YW1wbGUsIHRoZSBhcnJheQorICAgICAgICAgICBbMTc1XSwgc2hhcGU9WzFdLCBzdHJpZGVzPVstNV0gaXMgY29uc2lkZXJlZCBjb250aWd1b3VzLiAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChhMVtpXSAhPSBhMltpXSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQ29tcGFyZSB0d28gY29udGlndW91cyBidWZmZXJzIGZvciBwaHlzaWNhbCBlcXVhbGl0eS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjbXBfY29udGlnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYjEsICpiMjsgLyogYnVmZmVyIG9iamVjdHMgKi8KKyAgICBQeV9idWZmZXIgdjEsIHYyOworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgaW50IGVxdWFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmYjEsICZiMikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihiMSwgJnYxLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjbXBfY29udGlnOiBmaXJzdCBhcmd1bWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYjIsICZ2MiwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY21wX2NvbnRpZzogc2Vjb25kIGFyZ3VtZW50IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2MSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghKFB5QnVmZmVyX0lzQ29udGlndW91cygmdjEsICdDJykmJlB5QnVmZmVyX0lzQ29udGlndW91cygmdjIsICdDJykpICYmCisgICAgICAgICEoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MSwgJ0YnKSYmUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2MiwgJ0YnKSkpIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgLyogcmVhZG9ubHkgbWF5IGRpZmZlciBpZiBjcmVhdGVkIGZyb20gbm9uLWNvbnRpZ3VvdXMgKi8KKyAgICBpZiAodjEubGVuICE9IHYyLmxlbiB8fAorICAgICAgICB2MS5pdGVtc2l6ZSAhPSB2Mi5pdGVtc2l6ZSB8fAorICAgICAgICB2MS5uZGltICE9IHYyLm5kaW0gfHwKKyAgICAgICAgIWZtdGNtcCh2MS5mb3JtYXQsIHYyLmZvcm1hdCkgfHwKKyAgICAgICAgISF2MS5zaGFwZSAhPSAhIXYyLnNoYXBlIHx8CisgICAgICAgICEhdjEuc3RyaWRlcyAhPSAhIXYyLnN0cmlkZXMgfHwKKyAgICAgICAgISF2MS5zdWJvZmZzZXRzICE9ICEhdjIuc3Vib2Zmc2V0cykgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAoKHYxLnNoYXBlICYmICFhcnJheWNtcCh2MS5zaGFwZSwgdjIuc2hhcGUsIE5VTEwsIHYxLm5kaW0pKSB8fAorICAgICAgICAodjEuc3RyaWRlcyAmJiAhYXJyYXljbXAodjEuc3RyaWRlcywgdjIuc3RyaWRlcywgdjEuc2hhcGUsIHYxLm5kaW0pKSB8fAorICAgICAgICAodjEuc3Vib2Zmc2V0cyAmJiAhYXJyYXljbXAodjEuc3Vib2Zmc2V0cywgdjIuc3Vib2Zmc2V0cywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYxLm5kaW0pKSkgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKChjaGFyICopdjEuYnVmLCAoY2hhciAqKXYyLmJ1ZiwgdjEubGVuKSAhPSAwKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIGVxdWFsID0gMTsKKworcmVzdWx0OgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnYxKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Mik7CisKKyAgICByZXQgPSBlcXVhbCA/IFB5X1RydWUgOiBQeV9GYWxzZTsgCisgICAgUHlfSU5DUkVGKHJldCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2lzX2NvbnRpZ3VvdXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm9yZGVyOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGNoYXIgb3JkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZvYmosICZvcmRlcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7CisgICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgeworICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgfQorCisgICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2aWV3LCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgIFB5X0lOQ1JFRihyZXQpOworCityZWxlYXNlOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeV9oYXNoX3QKK25kYXJyYXlfaGFzaChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBjb25zdCBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCF2aWV3LT5yZWFkb25seSkgeworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgImNhbm5vdCBoYXNoIHdyaXRhYmxlIG5kYXJyYXkgb2JqZWN0Iik7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2aWV3LT5vYmogIT0gTlVMTCAmJiBQeU9iamVjdF9IYXNoKHZpZXctPm9iaikgPT0gLTEpIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBieXRlcyA9IG5kYXJyYXlfdG9ieXRlcyhzZWxmLCBOVUxMKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goYnl0ZXMpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIG5kYXJyYXlfbWV0aG9kcyBbXSA9Cit7CisgICAgeyAidG9saXN0IiwgbmRhcnJheV90b2xpc3QsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAidG9ieXRlcyIsIG5kYXJyYXlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJwdXNoIiwgKFB5Q0Z1bmN0aW9uKW5kYXJyYXlfcHVzaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIE5VTEwgfSwKKyAgICB7ICJwb3AiLCBuZGFycmF5X3BvcCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7ICJhZGRfc3Vib2Zmc2V0cyIsIG5kYXJyYXlfYWRkX3N1Ym9mZnNldHMsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAibWVtb3J5dmlld19mcm9tX2J1ZmZlciIsIG5kYXJyYXlfbWVtb3J5dmlld19mcm9tX2J1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgTkRBcnJheV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJuZGFycmF5IiwgICAgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KKyAgICBzaXplb2YoTkRBcnJheU9iamVjdCksICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLworICAgIChkZXN0cnVjdG9yKW5kYXJyYXlfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZuZGFycmF5X2FzX3NlcXVlbmNlLCAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmbmRhcnJheV9hc19tYXBwaW5nLCAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAoaGFzaGZ1bmMpbmRhcnJheV9oYXNoLCAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgJm5kYXJyYXlfYXNfYnVmZmVyLCAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG5kYXJyYXlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIG5kYXJyYXlfZ2V0c2V0LCAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG5kYXJyYXlfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBuZGFycmF5X25ldywgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0FycmF5IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFN0YXRpY0FycmF5X1R5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgaW50IGxlZ2FjeV9tb2RlOyAvKiBpZiB0cnVlLCB1c2UgdGhlIHZpZXcub2JqPT1OVUxMIGhhY2sgKi8KK30gU3RhdGljQXJyYXlPYmplY3Q7CisKK3N0YXRpYyBjaGFyIHN0YXRpY19tZW1bMTJdID0gezAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTF9Oworc3RhdGljIFB5X3NzaXplX3Qgc3RhdGljX3NoYXBlWzFdID0gezEyfTsKK3N0YXRpYyBQeV9zc2l6ZV90IHN0YXRpY19zdHJpZGVzWzFdID0gezF9Oworc3RhdGljIFB5X2J1ZmZlciBzdGF0aWNfYnVmZmVyID0geworICAgIHN0YXRpY19tZW0sICAgICAvKiBidWYgKi8KKyAgICBOVUxMLCAgICAgICAgICAgLyogb2JqICovCisgICAgMTIsICAgICAgICAgICAgIC8qIGxlbiAqLworICAgIDEsICAgICAgICAgICAgICAvKiBpdGVtc2l6ZSAqLworICAgIDEsICAgICAgICAgICAgICAvKiByZWFkb25seSAqLworICAgIDEsICAgICAgICAgICAgICAvKiBuZGltICovCisgICAgIkIiLCAgICAgICAgICAgIC8qIGZvcm1hdCAqLworICAgIHN0YXRpY19zaGFwZSwgICAvKiBzaGFwZSAqLworICAgIHN0YXRpY19zdHJpZGVzLCAvKiBzdHJpZGVzICovCisgICAgTlVMTCwgICAgICAgICAgIC8qIHN1Ym9mZnNldHMgKi8KKyAgICBOVUxMICAgICAgICAgICAgLyogaW50ZXJuYWwgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitzdGF0aWNhcnJheV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5T2JqZWN0X05ldyhTdGF0aWNBcnJheU9iamVjdCwgJlN0YXRpY0FycmF5X1R5cGUpOworfQorCitzdGF0aWMgaW50CitzdGF0aWNhcnJheV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgU3RhdGljQXJyYXlPYmplY3QgKmEgPSAoU3RhdGljQXJyYXlPYmplY3QgKilzZWxmOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsKKyAgICAgICAgImxlZ2FjeV9tb2RlIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKmxlZ2FjeV9tb2RlID0gUHlfRmFsc2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsICZsZWdhY3lfbW9kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGEtPmxlZ2FjeV9tb2RlID0gKGxlZ2FjeV9tb2RlICE9IFB5X0ZhbHNlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3N0YXRpY2FycmF5X2RlYWxsb2MoU3RhdGljQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCisvKiBSZXR1cm4gYSBidWZmZXIgZm9yIGEgUHlCVUZfRlVMTF9STyByZXF1ZXN0LiBGbGFncyBhcmUgbm90IGNoZWNrZWQsCisgICB3aGljaCBtYWtlcyB0aGlzIG9iamVjdCBhIG5vbi1jb21wbGlhbnQgZXhwb3J0ZXIhICovCitzdGF0aWMgaW50CitzdGF0aWNhcnJheV9nZXRidWYoU3RhdGljQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQoreworICAgICp2aWV3ID0gc3RhdGljX2J1ZmZlcjsKKworICAgIGlmIChzZWxmLT5sZWdhY3lfbW9kZSkgeworICAgICAgICB2aWV3LT5vYmogPSBOVUxMOyAvKiBEb24ndCB1c2UgdGhpcyBpbiBuZXcgY29kZS4gKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZpZXctPm9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlCdWZmZXJQcm9jcyBzdGF0aWNhcnJheV9hc19idWZmZXIgPSB7CisgICAgKGdldGJ1ZmZlcnByb2Mpc3RhdGljYXJyYXlfZ2V0YnVmLCAvKiBiZl9nZXRidWZmZXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU3RhdGljQXJyYXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAic3RhdGljYXJyYXkiLCAgICAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLworICAgIHNpemVvZihTdGF0aWNBcnJheU9iamVjdCksICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KKyAgICAoZGVzdHJ1Y3RvcilzdGF0aWNhcnJheV9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgJnN0YXRpY2FycmF5X2FzX2J1ZmZlciwgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgc3RhdGljYXJyYXlfaW5pdCwgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgc3RhdGljYXJyYXlfbmV3LCAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgX3Rlc3RidWZmZXJfZnVuY3Rpb25zW10gPSB7CisgICAgeyJzbGljZV9pbmRpY2VzIiwgc2xpY2VfaW5kaWNlcywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImdldF9wb2ludGVyIiwgZ2V0X3BvaW50ZXIsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJnZXRfc2l6ZW9mX3ZvaWRfcCIsIChQeUNGdW5jdGlvbilnZXRfc2l6ZW9mX3ZvaWRfcCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiZ2V0X2NvbnRpZ3VvdXMiLCBnZXRfY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7InB5X2J1ZmZlcl90b19jb250aWd1b3VzIiwgcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJpc19jb250aWd1b3VzIiwgaXNfY29udGlndW91cywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImNtcF9jb250aWciLCBjbXBfY29udGlnLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfdGVzdGJ1ZmZlcm1vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl90ZXN0YnVmZmVyIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIF90ZXN0YnVmZmVyX2Z1bmN0aW9ucywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RidWZmZXIodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl90ZXN0YnVmZmVybW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1RZUEUoJk5EQXJyYXlfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfSU5DUkVGKCZOREFycmF5X1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmRhcnJheSIsIChQeU9iamVjdCAqKSZOREFycmF5X1R5cGUpOworCisgICAgUHlfVFlQRSgmU3RhdGljQXJyYXlfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfSU5DUkVGKCZTdGF0aWNBcnJheV9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0YXRpY2FycmF5IiwgKFB5T2JqZWN0ICopJlN0YXRpY0FycmF5X1R5cGUpOworCisgICAgc3RydWN0bW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzdHJ1Y3QiKTsKKyAgICBpZiAoc3RydWN0bW9kdWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgU3RydWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJTdHJ1Y3QiKTsKKyAgICBjYWxjc2l6ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAiY2FsY3NpemUiKTsKKyAgICBpZiAoU3RydWN0ID09IE5VTEwgfHwgY2FsY3NpemUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzaW1wbGVfZm9ybWF0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2ltcGxlX2ZtdCk7CisgICAgaWYgKHNpbXBsZV9mb3JtYXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfTUFYX05ESU0iLCBORF9NQVhfTkRJTSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1ZBUkVYUE9SVCIsIE5EX1ZBUkVYUE9SVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1dSSVRBQkxFIiwgTkRfV1JJVEFCTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9GT1JUUkFOIiwgTkRfRk9SVFJBTik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1NDQUxBUiIsIE5EX1NDQUxBUik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1BJTCIsIE5EX1BJTCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX0dFVEJVRl9GQUlMIiwgTkRfR0VUQlVGX0ZBSUwpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9HRVRCVUZfVU5ERUZJTkVEIiwgTkRfR0VUQlVGX1VOREVGSU5FRCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX1JFRElSRUNUIiwgTkRfUkVESVJFQ1QpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NJTVBMRSIsIFB5QlVGX1NJTVBMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1dSSVRBQkxFIiwgUHlCVUZfV1JJVEFCTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GT1JNQVQiLCBQeUJVRl9GT1JNQVQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9ORCIsIFB5QlVGX05EKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFUyIsIFB5QlVGX1NUUklERVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9JTkRJUkVDVCIsIFB5QlVGX0lORElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQ19DT05USUdVT1VTIiwgUHlCVUZfQ19DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRl9DT05USUdVT1VTIiwgUHlCVUZfRl9DT05USUdVT1VTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfQU5ZX0NPTlRJR1VPVVMiLCBQeUJVRl9BTllfQ09OVElHVU9VUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZVTEwiLCBQeUJVRl9GVUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRlVMTF9STyIsIFB5QlVGX0ZVTExfUk8pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9SRUNPUkRTIiwgUHlCVUZfUkVDT1JEUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQ09SRFNfUk8iLCBQeUJVRl9SRUNPUkRTX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFRCIsIFB5QlVGX1NUUklERUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TVFJJREVEX1JPIiwgUHlCVUZfU1RSSURFRF9STyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NPTlRJRyIsIFB5QlVGX0NPTlRJRyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NPTlRJR19STyIsIFB5QlVGX0NPTlRJR19STyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVBRCIsIFB5QlVGX1JFQUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9XUklURSIsIFB5QlVGX1dSSVRFKTsKKworICAgIHJldHVybiBtOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggOTRiNmU2Ny4uY2U1ODY1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC0yMiwxNCArMjIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlVGVzdEVycm9yKGNvbnN0IGNoYXIqIHRlc3RfbmFtZSwgY29uc3QgY2hhciogbXNnKQogewotICAgIGNoYXIgYnVmWzIwNDhdOwotCi0gICAgaWYgKHN0cmxlbih0ZXN0X25hbWUpICsgc3RybGVuKG1zZykgPiBzaXplb2YoYnVmKSAtIDUwKQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGVzdEVycm9yLCAiaW50ZXJuYWwgZXJyb3IgbXNnIHRvbyBsYXJnZSIpOwotICAgIGVsc2UgewotICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlczogJXMiLCB0ZXN0X25hbWUsIG1zZyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsIGJ1Zik7Ci0gICAgfQorICAgIFB5RXJyX0Zvcm1hdChUZXN0RXJyb3IsICIlczogJXMiLCB0ZXN0X25hbWUsIG1zZyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQzLDExICszNiw5IEBACiBzaXplb2ZfZXJyb3IoY29uc3QgY2hhciogZmF0bmFtZSwgY29uc3QgY2hhciogdHlwbmFtZSwKICAgICBpbnQgZXhwZWN0ZWQsIGludCBnb3QpCiB7Ci0gICAgY2hhciBidWZbMTAyNF07Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAiJS4yMDBzICNkZWZpbmUgPT0gJWQgYnV0IHNpemVvZiglLjIwMHMpID09ICVkIiwKKyAgICBQeUVycl9Gb3JtYXQoVGVzdEVycm9yLAorICAgICAgICAiJXMgI2RlZmluZSA9PSAlZCBidXQgc2l6ZW9mKCVzKSA9PSAlZCIsCiAgICAgICAgIGZhdG5hbWUsIGV4cGVjdGVkLCB0eXBuYW1lLCBnb3QpOwotICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsIGJ1Zik7CiAgICAgcmV0dXJuIChQeU9iamVjdCopTlVMTDsKIH0KIApAQCAtMjg0LDk1ICsyNzUsNiBAQAogfQogCiAKLS8qIElzc3VlICM3Mzg1OiBDaGVjayB0aGF0IG1lbW9yeXZpZXcoKSBkb2VzIG5vdCBjcmFzaAotICogICB3aGVuIGJmX2dldGJ1ZmZlciByZXR1cm5zIGFuIGVycm9yCi0gKi8KLQotc3RhdGljIGludAotYnJva2VuX2J1ZmZlcl9nZXRidWZmZXIoUHlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQotewotICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAidGVzdF9icm9rZW5fbWVtb3J5dmlldzogZXhwZWN0ZWQgZXJyb3IgaW4gYmZfZ2V0YnVmZmVyIik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgUHlCdWZmZXJQcm9jcyBtZW1vcnl2aWV3dGVzdGVyX2FzX2J1ZmZlciA9IHsKLSAgICAoZ2V0YnVmZmVycHJvYylicm9rZW5fYnVmZmVyX2dldGJ1ZmZlciwgICAgIC8qIGJmX2dldGJ1ZmZlciAqLwotICAgIDAsICAgICAgICAgIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgX01lbW9yeVZpZXdUZXN0ZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAibWVtb3J5dmlld3Rlc3RlciIsICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KLSAgICBzaXplb2YoUHlPYmplY3QpLCAgICAgICAgICAgLyogQmFzaWMgb2JqZWN0IHNpemUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KLSAgICAoZGVzdHJ1Y3RvcilQeU9iamVjdF9EZWwsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgICZtZW1vcnl2aWV3dGVzdGVyX2FzX2J1ZmZlciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci0KLXN0YXRpYyBQeU9iamVjdCoKLXRlc3RfYnJva2VuX21lbW9yeXZpZXcoUHlPYmplY3QqIHNlbGYpCi17Ci0gICAgUHlPYmplY3QgKm9iaiA9IFB5T2JqZWN0X05ldyhQeU9iamVjdCwgJl9NZW1vcnlWaWV3VGVzdGVyX1R5cGUpOwotICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgVGVzdEVycm9yLAotICAgICAgICAgICAgInRlc3RfYnJva2VuX21lbW9yeXZpZXc6IGZhaWxlZCB0byBjcmVhdGUgb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJlcyA9IFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHJlcyB8fCAhUHlFcnJfT2NjdXJyZWQoKSl7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFRlc3RFcnJvciwKLSAgICAgICAgICAgICJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3OiBtZW1vcnl2aWV3KCkgZGlkbid0IHJhaXNlIGFuIEV4Y2VwdGlvbiIpOwotICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeUVycl9DbGVhcigpOwotICAgIFB5X0RFQ1JFRihvYmopOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi0KIC8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQogICAgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmdMb25nKCkuCiAKQEAgLTc3OCw2ICs2ODAsNjggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLyogVGVzdCB0aGUgUHlMb25nX0Fze1NpemUsU3NpemV9X3QgQVBJLiBBdCBwcmVzZW50IHRoaXMganVzdCB0ZXN0cyB0aGF0CisgICBub24taW50ZWdlciBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBzaG91bGQgYmUgZXh0ZW5kZWQgdG8KKyAgIHRlc3Qgb3ZlcmZsb3cgaGFuZGxpbmcuCisgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfbG9uZ19hc19zaXplX3QoUHlPYmplY3QgKnNlbGYpCit7CisgICAgc2l6ZV90IG91dF91OworICAgIFB5X3NzaXplX3Qgb3V0X3M7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICBvdXRfdSA9IFB5TG9uZ19Bc1NpemVfdChQeV9Ob25lKTsKKyAgICBpZiAob3V0X3UgIT0gKHNpemVfdCktMSB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTaXplX3QoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU2l6ZV90KE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIG91dF9zID0gUHlMb25nX0FzU3NpemVfdChQeV9Ob25lKTsKKyAgICBpZiAob3V0X3MgIT0gKFB5X3NzaXplX3QpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU3NpemVfdChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfc2l6ZV90IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNTc2l6ZV90KE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIC8qIFB5X0lOQ1JFRihQeV9Ob25lKSBvbWl0dGVkIC0gd2UgYWxyZWFkeSBoYXZlIGEgcmVmZXJlbmNlIHRvIGl0LiAqLworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKiBUZXN0IHRoZSBQeUxvbmdfQXNEb3VibGUgQVBJLiBBdCBwcmVzZW50IHRoaXMganVzdCB0ZXN0cyB0aGF0CisgICBub24taW50ZWdlciBhcmd1bWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LgorICovCisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X2xvbmdfYXNfZG91YmxlKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGRvdWJsZSBvdXQ7CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKKyAgICBvdXQgPSBQeUxvbmdfQXNEb3VibGUoUHlfTm9uZSk7CisgICAgaWYgKG91dCAhPSAtMS4wIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19kb3VibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc0RvdWJsZShOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfZG91YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNEb3VibGUoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgLyogUHlfSU5DUkVGKFB5X05vbmUpIG9taXR0ZWQgLSB3ZSBhbHJlYWR5IGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICovCisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKIC8qIFRlc3QgdGhlIEwgY29kZSBmb3IgUHlBcmdfUGFyc2VUdXBsZS4gIFRoaXMgc2hvdWxkIGRlbGl2ZXIgYSBQWV9MT05HX0xPTkcKICAgIGZvciBib3RoIGxvbmcgYW5kIGludCBhcmd1bWVudHMuICBUaGUgdGVzdCBtYXkgbGVhayBhIGxpdHRsZSBtZW1vcnkgaWYKICAgIGl0IGZhaWxzLgpAQCAtODM3LDcgKzgwMSw4IEBACiB9CiAKIC8qIHRlc3QgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJhcmcxIiwiYXJnMiIsImFyZzMiLCJhcmc0IiwiYXJnNSIsIE5VTEx9OwogICAgIHN0YXRpYyBjaGFyICpmbXQ9IihpaSlpfChpKGlpKSkoaWlpKWkiOwpAQCAtODUyLDYgKzgxNywyMSBAQAogICAgICAgICBpbnRfYXJnc1s1XSwgaW50X2FyZ3NbNl0sIGludF9hcmdzWzddLCBpbnRfYXJnc1s4XSwgaW50X2FyZ3NbOV0pOwogfQogCisvKiB0ZXN0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19rZXl3b3JkX29ubHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJyZXF1aXJlZCIsICJvcHRpb25hbCIsICJrZXl3b3JkX29ubHkiLCBOVUxMfTsKKyAgICBpbnQgcmVxdWlyZWQgPSAtMTsKKyAgICBpbnQgb3B0aW9uYWwgPSAtMTsKKyAgICBpbnQga2V5d29yZF9vbmx5ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGkkaSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXF1aXJlZCwgJm9wdGlvbmFsLCAma2V5d29yZF9vbmx5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKK30KKwogLyogRnVuY3Rpb25zIHRvIGNhbGwgUHlBcmdfUGFyc2VUdXBsZSB3aXRoIGludGVnZXIgZm9ybWF0IGNvZGVzLAogICAgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogKi8KQEAgLTkzNiw2ICs5MTYsMTUgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHZhbHVlKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHZhbHVlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicCIsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOworfQorCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX0woUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTAxMiw2ICsxMDAxLDE1IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX2MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImMiLCAmYykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCZjLCAxKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgY2hhciAqc3RyOwpAQCAtMTE5Nyw1MSArMTE5NSw3MyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGVzdF9idWdfNzQxNChQeU9iamVjdCAqc2VsZikKK3BhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgLyogSXNzdWUgIzc0MTQ6IGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMsICdDJyBjb2RlIHdhc24ndCBiZWluZwotICAgICAgIHNraXBwZWQgcHJvcGVybHkgaW4gc2tpcGl0ZW0oKSAqLwotICAgIGludCBhID0gMCwgYiA9IDAsIHJlc3VsdDsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsiYSIsICJiIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKnR1cGxlID0gTlVMTCwgKmRpY3QgPSBOVUxMLCAqYl9zdHI7CisgICAgUHlPYmplY3QgKnN1Yl9hcmdzOworICAgIFB5T2JqZWN0ICpzdWJfa3dhcmdzOworICAgIGNoYXIgKnN1Yl9mb3JtYXQ7CisgICAgUHlPYmplY3QgKnN1Yl9rZXl3b3JkczsKIAotICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKHR1cGxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICBiX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJiIik7Ci0gICAgaWYgKGJfc3RyID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLSAgICByZXN1bHQgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiYiIsIGJfc3RyKTsKLSAgICBQeV9ERUNSRUYoYl9zdHIpOwotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICBnb3RvIGZhaWx1cmU7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIGNoYXIgKmtleXdvcmRzWzggKyAxXTsgLyogc3BhY2UgZm9yIE5VTEwgYXQgZW5kICovCisgICAgUHlPYmplY3QgKm87CisgICAgUHlPYmplY3QgKmNvbnZlcnRlZFs4XTsKIAotICAgIHJlc3VsdCA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0dXBsZSwgZGljdCwgInxDQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmEsICZiKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgZ290byBmYWlsdXJlOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAKLSAgICBpZiAoYSAhPSAwKQotICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfYnVnXzc0MTQiLAotICAgICAgICAgICAgIkMgZm9ybWF0IGNvZGUgbm90IHNraXBwZWQgcHJvcGVybHkiKTsKLSAgICBpZiAoYiAhPSAnYicpCi0gICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9idWdfNzQxNCIsCi0gICAgICAgICAgICAiQyBmb3JtYXQgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSIpOworICAgIGRvdWJsZSBidWZmZXJzWzhdWzRdOyAvKiBkb3VibGUgZW5zdXJlcyBhbGlnbm1lbnQgd2hlcmUgbmVjZXNzYXJ5ICovCiAKLSAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgUHlfREVDUkVGKHR1cGxlKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PeU86cGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwKKyAgICAgICAgJnN1Yl9hcmdzLCAmc3ViX2t3YXJncywKKyAgICAgICAgJnN1Yl9mb3JtYXQsICZzdWJfa2V5d29yZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICBmYWlsdXJlOgotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgUHlfWERFQ1JFRih0dXBsZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCEoUHlMaXN0X0NoZWNrRXhhY3Qoc3ViX2tleXdvcmRzKSB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoc3ViX2tleXdvcmRzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiBzdWJfa2V5d29yZHMgbXVzdCBiZSBlaXRoZXIgbGlzdCBvciB0dXBsZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoYnVmZmVycywgMCwgc2l6ZW9mKGJ1ZmZlcnMpKTsKKyAgICBtZW1zZXQoY29udmVydGVkLCAwLCBzaXplb2YoY29udmVydGVkKSk7CisgICAgbWVtc2V0KGtleXdvcmRzLCAwLCBzaXplb2Yoa2V5d29yZHMpKTsKKworICAgIHNpemUgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3ViX2tleXdvcmRzKTsKKyAgICBpZiAoc2l6ZSA+IDgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiB0b28gbWFueSBrZXl3b3JkcyBpbiBzdWJfa2V5d29yZHMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgbyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzdWJfa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAodm9pZCAqKShjb252ZXJ0ZWQgKyBpKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJwYXJzZV90dXBsZV9hbmRfa2V5d29yZHM6IGNvdWxkIG5vdCBjb252ZXJ0IGtleXdvcmRzWyVzXSB0byBuYXJyb3cgc3RyaW5nIiwgaSk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAga2V5d29yZHNbaV0gPSBQeUJ5dGVzX0FTX1NUUklORyhjb252ZXJ0ZWRbaV0pOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhzdWJfYXJncywgc3ViX2t3YXJncywKKyAgICAgICAgc3ViX2Zvcm1hdCwga2V5d29yZHMsCisgICAgICAgIGJ1ZmZlcnMgKyAwLCBidWZmZXJzICsgMSwgYnVmZmVycyArIDIsIGJ1ZmZlcnMgKyAzLAorICAgICAgICBidWZmZXJzICsgNCwgYnVmZmVycyArIDUsIGJ1ZmZlcnMgKyA2LCBidWZmZXJzICsgNyk7CisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICB9CisKK2V4aXQ6CisgICAgc2l6ZSA9IHNpemVvZihjb252ZXJ0ZWQpIC8gc2l6ZW9mKGNvbnZlcnRlZFswXSk7CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeV9YREVDUkVGKGNvbnZlcnRlZFtpXSk7CisgICAgfQorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLQogc3RhdGljIHZvbGF0aWxlIGludCB4OwogCiAvKiBUZXN0IHRoZSB1IGFuZCB1IyBjb2RlcyBmb3IgUHlBcmdfUGFyc2VUdXBsZS4gTWF5IGxlYWsgbWVtb3J5IGluIGNhc2UKQEAgLTEyOTMsNyArMTMxMyw3IEBACiB0ZXN0X1pfY29kZShQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdHVwbGUsICpvYmo7Ci0gICAgUHlfVU5JQ09ERSAqdmFsdWUxLCAqdmFsdWUyOworICAgIGNvbnN0IFB5X1VOSUNPREUgKnZhbHVlMSwgKnZhbHVlMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KDIpOwpAQCAtMTM0Nyw2ICsxMzY3LDcgQEAKICNpZiBkZWZpbmVkKFNJWkVPRl9XQ0hBUl9UKSAmJiAoU0laRU9GX1dDSEFSX1QgPT0gNCkKICAgICBjb25zdCB3Y2hhcl90IHd0ZXh0WzJdID0geyh3Y2hhcl90KTB4MTBBQkNEdX07CiAgICAgc2l6ZV90IHd0ZXh0bGVuID0gMTsKKyAgICBjb25zdCB3Y2hhcl90IGludmFsaWRbMV0gPSB7KHdjaGFyX3QpMHgxMTAwMDB1fTsKICNlbHNlCiAgICAgY29uc3Qgd2NoYXJfdCB3dGV4dFszXSA9IHsod2NoYXJfdCkweERCRUF1LCAod2NoYXJfdCkweERGQ0R1fTsKICAgICBzaXplX3Qgd3RleHRsZW4gPSAyOwpAQCAtMTM2Myw3ICsxMzg0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh3aWRlKSAhPSBQeVVuaWNvZGVfR0VUX1NJWkUodXRmOCkpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod2lkZSkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgodXRmOCkpIHsKICAgICAgICAgUHlfREVDUkVGKHdpZGUpOwogICAgICAgICBQeV9ERUNSRUYodXRmOCk7CiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF93aWRlY2hhciIsCkBAIC0xMzgyLDYgKzE0MDMsMjMgQEAKIAogICAgIFB5X0RFQ1JFRih3aWRlKTsKICAgICBQeV9ERUNSRUYodXRmOCk7CisKKyNpZiBkZWZpbmVkKFNJWkVPRl9XQ0hBUl9UKSAmJiAoU0laRU9GX1dDSEFSX1QgPT0gNCkKKyAgICB3aWRlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihpbnZhbGlkLCAxKTsKKyAgICBpZiAod2lkZSA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKExcIlxcVTAwMTEwMDAwXCIsIDEpIGRpZG4ndCBmYWlsIik7CisKKyAgICB3aWRlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGludmFsaWQsIDEpOworICAgIGlmICh3aWRlID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tVW5pY29kZShMXCJcXFUwMDExMDAwMFwiLCAxKSBkaWRuJ3QgZmFpbCIpOworI2VuZGlmCisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMTU3Niw3ICsxNjE0LDcgQEAKICAgICAgICAgICAgICB7LTB4ZmZmZmZmZkwsIDI4LCAtMX19OwogICAgIGludCBpOwogCi0gICAgZm9yIChpID0gMDsgaSA8IHNpemVvZih0ZXN0Y2FzZXMpIC8gc2l6ZW9mKHN0cnVjdCB0cmlwbGUpOyArK2kpIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlfQVJSQVlfTEVOR1RIKHRlc3RjYXNlcyk7ICsraSkgewogICAgICAgICBQeU9iamVjdCAqcGxvbmcgPSBQeUxvbmdfRnJvbUxvbmcodGVzdGNhc2VzW2ldLmlucHV0KTsKICAgICAgICAgc2l6ZV90IG5iaXRzID0gX1B5TG9uZ19OdW1CaXRzKHBsb25nKTsKICAgICAgICAgaW50IHNpZ24gPSBfUHlMb25nX1NpZ24ocGxvbmcpOwpAQCAtMTYzMiw2ICsxNjcwLDI5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3NldF9leGNfaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9yaWdfZXhjOworICAgIFB5T2JqZWN0ICpuZXdfdHlwZSwgKm5ld192YWx1ZSwgKm5ld190YjsKKyAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdGI7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT086dGVzdF9zZXRfZXhjX2luZm8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3R5cGUsICZuZXdfdmFsdWUsICZuZXdfdGIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5RXJyX0dldEV4Y0luZm8oJnR5cGUsICZ2YWx1ZSwgJnRiKTsKKworICAgIFB5X0lOQ1JFRihuZXdfdHlwZSk7CisgICAgUHlfSU5DUkVGKG5ld192YWx1ZSk7CisgICAgUHlfSU5DUkVGKG5ld190Yik7CisgICAgUHlFcnJfU2V0RXhjSW5mbyhuZXdfdHlwZSwgbmV3X3ZhbHVlLCBuZXdfdGIpOworCisgICAgb3JpZ19leGMgPSBQeVR1cGxlX1BhY2soMywgdHlwZSA/IHR5cGUgOiBQeV9Ob25lLCB2YWx1ZSA/IHZhbHVlIDogUHlfTm9uZSwgdGIgPyB0YiA6IFB5X05vbmUpOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgUHlfWERFQ1JFRih0Yik7CisgICAgcmV0dXJuIG9yaWdfZXhjOworfQogCiBzdGF0aWMgaW50IHRlc3RfcnVuX2NvdW50ZXIgPSAwOwogCkBAIC0xNzg2LDEzICsxODQ3LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBjaGFyICptc2c7Ci0gICAgc3RhdGljIGNvbnN0IFB5X1VOSUNPREUgb25lW10gPSB7JzEnLCAwfTsKIAogI2RlZmluZSBDSEVDS18xX0ZPUk1BVChGT1JNQVQsIFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoRk9STUFULCAoVFlQRSkxKTsgICAgICAgICAgICAgICAgIFwKICAgICBpZiAocmVzdWx0ID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKFB5X1VOSUNPREVfc3RyY21wKFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCksIG9uZSkpIHsgICAgIFwKKyAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcocmVzdWx0LCAiMSIpKSB7ICAgICBcCiAgICAgICAgIG1zZyA9IEZPUk1BVCAiIGZhaWxlZCBhdCAxIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgZ290byBGYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMzE3LDYgKzIzNzcsMTQgQEAKICAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7CiAKICAgICBzdWJzdGF0ZSA9IFB5X05ld0ludGVycHJldGVyKCk7CisgICAgaWYgKHN1YnN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogU2luY2Ugbm8gbmV3IHRocmVhZCBzdGF0ZSB3YXMgY3JlYXRlZCwgdGhlcmUgaXMgbm8gZXhjZXB0aW9uIHRvCisgICAgICAgICAgIHByb3BhZ2F0ZTsgcmFpc2UgYSBmcmVzaCBvbmUgYWZ0ZXIgc3dhcHBpbmcgaW4gdGhlIG9sZCB0aHJlYWQKKyAgICAgICAgICAgc3RhdGUuICovCisgICAgICAgIFB5VGhyZWFkU3RhdGVfU3dhcChtYWluc3RhdGUpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAic3ViLWludGVycHJldGVyIGNyZWF0aW9uIGZhaWxlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgciA9IFB5UnVuX1NpbXBsZVN0cmluZyhjb2RlKTsKICAgICBQeV9FbmRJbnRlcnByZXRlcihzdWJzdGF0ZSk7CiAKQEAgLTIzMjUsNiArMjM5Myw0NCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZV90KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHRpbWVfdCBzZWM7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnB5dGltZV9vYmplY3RfdG9fdGltZV90IiwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1ldmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHRpbWVfdCBzZWM7CisgICAgbG9uZyB1c2VjOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwiLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKG9iaiwgJnNlYywgJnVzZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKSwgdXNlYyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXNwZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBsb25nIG5zZWM7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMiLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZzZWMsICZuc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgX1B5TG9uZ19Gcm9tVGltZV90KHNlYyksIG5zZWMpOworfQorCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjMzNCwxNCArMjQ0MCwxNSBAQAogICAgIHsidGVzdF9saXN0X2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9saXN0X2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2RpY3RfaXRlcmF0aW9uIiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2RpY3RfaXRlcmF0aW9uLE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UsTUVUSF9OT0FSR1N9LAotICAgIHsidGVzdF9icm9rZW5fbWVtb3J5dmlldyIsICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3LE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19hcGkiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hcGksICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FuZF9vdmVyZmxvdyIsIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfYW5kX292ZXJmbG93LAogICAgICBNRVRIX05PQVJHU30sCisgICAgeyJ0ZXN0X2xvbmdfYXNfZG91YmxlIiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfYXNfZG91YmxlLE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfbG9uZ19hc19zaXplX3QiLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hc19zaXplX3QsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX251bWJpdHMiLCAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX251bWJpdHMsICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2tfY29kZSIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2tfY29kZSwgICAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZW1wdHlfYXJncGFyc2UiLCAoUHlDRnVuY3Rpb24pdGVzdF9lbXB0eV9hcmdwYXJzZSxNRVRIX05PQVJHU30sCi0gICAgeyJ0ZXN0X2J1Z183NDE0IiwgKFB5Q0Z1bmN0aW9uKXRlc3RfYnVnXzc0MTQsIE1FVEhfTk9BUkdTfSwKKyAgICB7InBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyIsIHBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbnVsbF9zdHJpbmdzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbnVsbF9zdHJpbmdzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9zdHJpbmdfZnJvbV9mb3JtYXQiLCAoUHlDRnVuY3Rpb24pdGVzdF9zdHJpbmdfZnJvbV9mb3JtYXQsIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfd2l0aF9kb2NzdHJpbmciLCAoUHlDRnVuY3Rpb24pdGVzdF93aXRoX2RvY3N0cmluZywgTUVUSF9OT0FSR1MsCkBAIC0yMzUyLDYgKzI0NTksOCBAQAogICAgIHsiZ2V0YXJnc190dXBsZSIsICAgICAgICAgICBnZXRhcmdzX3R1cGxlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19rZXl3b3JkcyIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRzLAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAorICAgIHsiZ2V0YXJnc19rZXl3b3JkX29ubHkiLCAoUHlDRnVuY3Rpb24pZ2V0YXJnc19rZXl3b3JkX29ubHksCisgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfQiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2giLCAgICAgICAgICAgICAgIGdldGFyZ3NfaCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yMzYxLDYgKzI0NzAsNyBAQAogICAgIHsiZ2V0YXJnc19pIiwgICAgICAgICAgICAgICBnZXRhcmdzX2ksICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19sIiwgICAgICAgICAgICAgICBnZXRhcmdzX2wsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19uIiwgICAgICAgICAgICAgICBnZXRhcmdzX24sICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZ2V0YXJnc19wIiwgICAgICAgICAgICAgICBnZXRhcmdzX3AsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJnZXRhcmdzX0wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfTCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0siLCAgICAgICAgICAgICAgIGdldGFyZ3NfSywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yMzY5LDYgKzI0NzksNyBAQAogICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93LCBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X0xfY29kZSIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X0xfY29kZSwgICAgICAgIE1FVEhfTk9BUkdTfSwKICNlbmRpZgorICAgIHsiZ2V0YXJnc19jIiwgICAgICAgICAgICAgICBnZXRhcmdzX2MsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19zIiwgICAgICAgICAgICAgICBnZXRhcmdzX3MsICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19zX3N0YXIiLCAgICAgICAgICBnZXRhcmdzX3Nfc3RhciwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19zX2hhc2giLCAgICAgICAgICBnZXRhcmdzX3NfaGFzaCwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMjQwNCw2ICsyNTE1LDcgQEAKICNlbmRpZgogICAgIHsidHJhY2ViYWNrX3ByaW50IiwgICAgICAgICB0cmFjZWJhY2tfcHJpbnQsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZXhjZXB0aW9uX3ByaW50IiwgICAgICAgICBleGNlcHRpb25fcHJpbnQsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsic2V0X2V4Y19pbmZvIiwgICAgICAgICAgICB0ZXN0X3NldF9leGNfaW5mbywgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiYXJncGFyc2luZyIsICAgICAgICAgICAgICBhcmdwYXJzaW5nLCAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY29kZV9uZXdlbXB0eSIsICAgICAgICAgICBjb2RlX25ld2VtcHR5LCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsibWFrZV9leGNlcHRpb25fd2l0aF9kb2MiLCAoUHlDRnVuY3Rpb24pbWFrZV9leGNlcHRpb25fd2l0aF9kb2MsCkBAIC0yNDEyLDYgKzI1MjQsOSBAQAogICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJjcmFzaF9ub19jdXJyZW50X3RocmVhZCIsIChQeUNGdW5jdGlvbiljcmFzaF9ub19jdXJyZW50X3RocmVhZCwgTUVUSF9OT0FSR1N9LAogICAgIHsicnVuX2luX3N1YmludGVycCIsICAgICAgICBydW5faW5fc3ViaW50ZXJwLCAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsicHl0aW1lX29iamVjdF90b190aW1lX3QiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZV90LCAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1ldmFsLCAgTUVUSF9WQVJBUkdTfSwKKyAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsICBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfSAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjU5NCw3ICsyNzA5LDYgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9UWVBFKCZfSGFzaEluaGVyaXRhbmNlVGVzdGVyX1R5cGUpPSZQeVR5cGVfVHlwZTsKLSAgICBQeV9UWVBFKCZfTWVtb3J5Vmlld1Rlc3Rlcl9UeXBlKT0mUHlUeXBlX1R5cGU7CiAKICAgICBQeV9UWVBFKCZ0ZXN0X3N0cnVjdG1lbWJlcnNUeXBlKT0mUHlUeXBlX1R5cGU7CiAgICAgUHlfSU5DUkVGKCZ0ZXN0X3N0cnVjdG1lbWJlcnNUeXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jIGIvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMKaW5kZXggNWY3NmE3Yi4uNjNlZmRjMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMKQEAgLTIzLDYgKzIzLDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2tfbG9jazsKICAgICBQeU9iamVjdCAqaW5fd2Vha3JlZmxpc3Q7CisgICAgY2hhciBsb2NrZWQ7IC8qIGZvciBzYW5pdHkgY2hlY2tpbmcgKi8KIH0gbG9ja29iamVjdDsKIAogc3RhdGljIHZvaWQKQEAgLTMyLDkgKzMzLDggQEAKICAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CiAgICAgaWYgKHNlbGYtPmxvY2tfbG9jayAhPSBOVUxMKSB7CiAgICAgICAgIC8qIFVubG9jayB0aGUgbG9jayBzbyBpdCdzIHNhZmUgdG8gZnJlZSBpdCAqLwotICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9ja19sb2NrLCAwKTsKLSAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7Ci0KKyAgICAgICAgaWYgKHNlbGYtPmxvY2tlZCkKKyAgICAgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOwogICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKICAgICB9CiAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwpAQCAtNTMsNiArNTMsNyBAQAogICAgIF9QeVRpbWVfdGltZXZhbCBjdXJ0aW1lOwogICAgIF9QeVRpbWVfdGltZXZhbCBlbmR0aW1lOwogCisKICAgICBpZiAobWljcm9zZWNvbmRzID4gMCkgewogICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmZW5kdGltZSk7CiAgICAgICAgIGVuZHRpbWUudHZfc2VjICs9IG1pY3Jvc2Vjb25kcyAvICgxMDAwICogMTAwMCk7CkBAIC02MSw5ICs2MiwxMyBAQAogCiAKICAgICBkbyB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgciA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCBtaWNyb3NlY29uZHMsIDEpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAvKiBmaXJzdCBhIHNpbXBsZSBub24tYmxvY2tpbmcgdHJ5IHdpdGhvdXQgcmVsZWFzaW5nIHRoZSBHSUwgKi8KKyAgICAgICAgciA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCAwLCAwKTsKKyAgICAgICAgaWYgKHIgPT0gUFlfTE9DS19GQUlMVVJFICYmIG1pY3Jvc2Vjb25kcyAhPSAwKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIG1pY3Jvc2Vjb25kcywgMSk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IAogCiAgICAgICAgIGlmIChyID09IFBZX0xPQ0tfSU5UUikgewogICAgICAgICAgICAgLyogUnVuIHNpZ25hbCBoYW5kbGVycyBpZiB3ZSB3ZXJlIGludGVycnVwdGVkLiAgUHJvcGFnYXRlCkBAIC03NSw3ICs4MCw3IEBACiAKICAgICAgICAgICAgIC8qIElmIHdlJ3JlIHVzaW5nIGEgdGltZW91dCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IGFmdGVyIHByb2Nlc3NpbmcKICAgICAgICAgICAgICAqIHNpZ25hbHMsIHNpbmNlIHRob3NlIGNhbiB0YWtlIHRpbWUuICAqLwotICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+PSAwKSB7CisgICAgICAgICAgICBpZiAobWljcm9zZWNvbmRzID4gMCkgewogICAgICAgICAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZjdXJ0aW1lKTsKICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZHMgPSAoKGVuZHRpbWUudHZfc2VjIC0gY3VydGltZS50dl9zZWMpICogMTAwMDAwMCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmR0aW1lLnR2X3VzZWMgLSBjdXJ0aW1lLnR2X3VzZWMpKTsKQEAgLTEzNCw2ICsxMzksOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAociA9PSBQWV9MT0NLX0FDUVVJUkVEKQorICAgICAgICBzZWxmLT5sb2NrZWQgPSAxOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcociA9PSBQWV9MT0NLX0FDUVVJUkVEKTsKIH0KIApAQCAtMTUyLDEzICsxNTksMTMgQEAKIGxvY2tfUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGxvY2tvYmplY3QgKnNlbGYpCiB7CiAgICAgLyogU2FuaXR5IGNoZWNrOiB0aGUgbG9jayBtdXN0IGJlIGxvY2tlZCAqLwotICAgIGlmIChQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9ja19sb2NrLCAwKSkgewotICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKKyAgICBpZiAoIXNlbGYtPmxvY2tlZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGhyZWFkRXJyb3IsICJyZWxlYXNlIHVubG9ja2VkIGxvY2siKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CisgICAgc2VsZi0+bG9ja2VkID0gMDsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC0xNzQsMTEgKzE4MSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbG9ja19sb2NrZWRfbG9jayhsb2Nrb2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9ja19sb2NrLCAwKSkgewotICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwTCk7Ci0gICAgfQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMUwpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpc2VsZi0+bG9ja2VkKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxvY2tlZF9kb2MsCkBAIC0zMTIsMTQgKzMxNSw3IEBACiAgICAgICAgIHNlbGYtPnJsb2NrX2NvdW50ID0gY291bnQ7CiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KLQotICAgIGlmIChzZWxmLT5ybG9ja19jb3VudCA+IDAgfHwKLSAgICAgICAgIVB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5ybG9ja19sb2NrLCAwKSkgewotICAgICAgICBpZiAobWljcm9zZWNvbmRzID09IDApIHsKLSAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICAgICAgfQotICAgICAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCBtaWNyb3NlY29uZHMpOwotICAgIH0KKyAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCBtaWNyb3NlY29uZHMpOwogICAgIGlmIChyID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKICAgICAgICAgYXNzZXJ0KHNlbGYtPnJsb2NrX2NvdW50ID09IDApOwogICAgICAgICBzZWxmLT5ybG9ja19vd25lciA9IHRpZDsKQEAgLTQxMyw2ICs0MDksMTIgQEAKICAgICBsb25nIG93bmVyOwogICAgIHVuc2lnbmVkIGxvbmcgY291bnQ7CiAKKyAgICBpZiAoc2VsZi0+cmxvY2tfY291bnQgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWxlYXNlIHVuLWFjcXVpcmVkIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgb3duZXIgPSBzZWxmLT5ybG9ja19vd25lcjsKICAgICBjb3VudCA9IHNlbGYtPnJsb2NrX2NvdW50OwogICAgIHNlbGYtPnJsb2NrX2NvdW50ID0gMDsKQEAgLTU0MSw2ICs1NDMsNyBAQAogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHNlbGYtPmxvY2tfbG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBzZWxmLT5sb2NrZWQgPSAwOwogICAgIHNlbGYtPmluX3dlYWtyZWZsaXN0ID0gTlVMTDsKICAgICBpZiAoc2VsZi0+bG9ja19sb2NrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwpAQCAtMTIyNSwxMSArMTIyOCw5IEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0aHJlYWRfbWV0aG9kc1tdID0gewogICAgIHsic3RhcnRfbmV3X3RocmVhZCIsICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19kb2N9LAorICAgICBNRVRIX1ZBUkFSR1MsIHN0YXJ0X25ld19kb2N9LAogICAgIHsic3RhcnRfbmV3IiwgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19kb2N9LAorICAgICBNRVRIX1ZBUkFSR1MsIHN0YXJ0X25ld19kb2N9LAogICAgIHsiYWxsb2NhdGVfbG9jayIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX2FsbG9jYXRlX2xvY2ssCiAgICAgIE1FVEhfTk9BUkdTLCBhbGxvY2F0ZV9kb2N9LAogICAgIHsiYWxsb2NhdGUiLCAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX1B5VGhyZWFkX2FsbG9jYXRlX2xvY2ssCkBAIC0xMjQ1LDggKzEyNDYsNyBAQAogICAgIHsiX2NvdW50IiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX19jb3VudCwKICAgICAgTUVUSF9OT0FSR1MsIF9jb3VudF9kb2N9LAogICAgIHsic3RhY2tfc2l6ZSIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGhyZWFkX3N0YWNrX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrX3NpemVfZG9jfSwKKyAgICAgTUVUSF9WQVJBUkdTLCBzdGFja19zaXplX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTMxMCw3ICsxMzEwLDkgQEAKIAogICAgIC8qIEFkZCBhIHN5bWJvbGljIGNvbnN0YW50ICovCiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgVGhyZWFkRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oIl90aHJlYWQuZXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBUaHJlYWRFcnJvciA9IFB5RXhjX1J1bnRpbWVFcnJvcjsKKyAgICBQeV9JTkNSRUYoVGhyZWFkRXJyb3IpOworCiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImVycm9yIiwgVGhyZWFkRXJyb3IpOwogICAgIExvY2t0eXBlLnRwX2RvYyA9IGxvY2tfZG9jOwogICAgIFB5X0lOQ1JFRigmTG9ja3R5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGltZS5jIGIvTW9kdWxlcy9fdGltZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGNjOGUxLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX3RpbWUuYworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJfdGltZS5oIgotCi0vKiBFeHBvc2VkIGluIHRpbWVmdW5jcy5oLiAqLwotdGltZV90Ci1fUHlUaW1lX0RvdWJsZVRvVGltZXQoZG91YmxlIHgpCi17Ci0gICAgdGltZV90IHJlc3VsdDsKLSAgICBkb3VibGUgZGlmZjsKLQotICAgIHJlc3VsdCA9ICh0aW1lX3QpeDsKLSAgICAvKiBIb3cgbXVjaCBpbmZvIGRpZCB3ZSBsb3NlPyAgdGltZV90IG1heSBiZSBhbiBpbnRlZ3JhbCBvcgotICAgICAqIGZsb2F0aW5nIHR5cGUsIGFuZCB3ZSBkb24ndCBrbm93IHdoaWNoLiAgSWYgaXQncyBpbnRlZ3JhbCwKLSAgICAgKiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgQyB0cnVuY2F0ZXMsIHJvdW5kcywgcmV0dXJucyB0aGUgZmxvb3IsCi0gICAgICogZXRjLiAgSWYgd2UgbG9zdCBhIHNlY29uZCBvciBtb3JlLCB0aGUgQyByb3VuZGluZyBpcwotICAgICAqIHVucmVhc29uYWJsZSwgb3IgdGhlIGlucHV0IGp1c3QgZG9lc24ndCBmaXQgaW4gYSB0aW1lX3Q7Ci0gICAgICogY2FsbCBpdCBhbiBlcnJvciByZWdhcmRsZXNzLiAgTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjYXN0IHRvCi0gICAgICogdGltZV90IGNhbiBjYXVzZSBhIEMgZXJyb3IgdG9vLCBidXQgbm90aGluZyB3ZSBjYW4gZG8gdG8KLSAgICAgKiB3b3JrIGFyb3VuZCB0aGF0LgotICAgICAqLwotICAgIGRpZmYgPSB4IC0gKGRvdWJsZSlyZXN1bHQ7Ci0gICAgaWYgKGRpZmYgPD0gLTEuMCB8fCBkaWZmID49IDEuMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKLSAgICAgICAgcmVzdWx0ID0gKHRpbWVfdCktMTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RpbWUuaCBiL01vZHVsZXMvX3RpbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE2NTkzYi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL190aW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLS8qIFhYWDogSXQgaXMgcHJvYmFibHkgYmVzdCB0byBtb3ZlIHRpbWVmdW5jcy5oIGNvbnRlbnQgaW4gaGVyZSwgYW5kCi0gICByZW1vdmUgaXQgYnV0IHVzZXIgY29kZSBtYXkgcmVseSBvbiBpdC4gKi8KLSNpbmNsdWRlICJ0aW1lZnVuY3MuaCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RraW50ZXIuYyBiL01vZHVsZXMvX3RraW50ZXIuYwppbmRleCAyMzkwNmRlLi43MGY0NzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190a2ludGVyLmMKKysrIGIvTW9kdWxlcy9fdGtpbnRlci5jCkBAIC04MCwxOCArODAsNiBAQAogI2Vycm9yICJUayBvbGRlciB0aGFuIDguMy4xIG5vdCBzdXBwb3J0ZWQiCiAjZW5kaWYKIAotLyogVW5pY29kZSBjb252ZXJzaW9uIGFzc3VtZXMgdGhhdCBUY2xfVW5pQ2hhciBpcyB0d28gYnl0ZXMuCi0gICBXZSBjYW5ub3QgdGVzdCB0aGlzIGRpcmVjdGx5LCBzbyB3ZSB0ZXN0IFVURi04IHNpemUgaW5zdGVhZCwKLSAgIGV4cGVjdGluZyB0aGF0IFRDTF9VVEZfTUFYIGlzIGNoYW5nZWQgaWYgVGNsIGV2ZXIgc3VwcG9ydHMKLSAgIGVpdGhlciBVVEYtMTYgb3IgVUNTLTQuCi0gICBSZWRoYXQgOCBzZXRzIFRDTF9VVEZfTUFYIHRvIDYsIGFuZCB1c2VzIHdjaGFyX3QgZm9yCi0gICBUY2xfVW5pY2hhci4gVGhpcyBpcyBhbHNvIG9rIGFzIGxvbmcgYXMgUHl0aG9uIHVzZXMgVUNTLTQsCi0gICBhcyB3ZWxsLgotKi8KLSNpZiBUQ0xfVVRGX01BWCAhPSAzICYmICEoZGVmaW5lZChQeV9VTklDT0RFX1dJREUpICYmIFRDTF9VVEZfTUFYPT02KQotI2Vycm9yICJ1bnN1cHBvcnRlZCBUY2wgY29uZmlndXJhdGlvbiIKLSNlbmRpZgotCiAjaWYgIShkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19DWUdXSU5fXykpCiAjZGVmaW5lIEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIKICNlbmRpZgpAQCAtOTc1LDQwICs5NjMsNDYgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICBQeV9VTklDT0RFICppbmJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKTsKLSAgICAgICAgLyogVGhpcyAjaWZkZWYgYXNzdW1lcyB0aGF0IFRjbCB1c2VzIFVDUy0yLgotICAgICAgICAgICBTZWUgVENMX1VURl9NQVggdGVzdCBhYm92ZS4gKi8KLSNpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkgJiYgVENMX1VURl9NQVggPT0gMworICAgICAgICB2b2lkICppbmJ1ZjsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICBpbnQga2luZDsKICAgICAgICAgVGNsX1VuaUNoYXIgKm91dGJ1ZiA9IE5VTEw7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgc2l6ZV90IGFsbG9jc2l6ZSA9ICgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9VbmlDaGFyKTsKLSAgICAgICAgaWYgKGFsbG9jc2l6ZSA+PSBzaXplKQotICAgICAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilja2FsbG9jKGFsbG9jc2l6ZSk7CisgICAgICAgIHNpemVfdCBhbGxvY3NpemU7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpbmJ1ZiA9IFB5VW5pY29kZV9EQVRBKHZhbHVlKTsKKyAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHZhbHVlKTsKKyAgICAgICAgYWxsb2NzaXplID0gKChzaXplX3Qpc2l6ZSkgKiBzaXplb2YoVGNsX1VuaUNoYXIpOworICAgICAgICBvdXRidWYgPSAoVGNsX1VuaUNoYXIqKWNrYWxsb2MoYWxsb2NzaXplKTsKICAgICAgICAgLyogRWxzZSBvdmVyZmxvdyBvY2N1cnJlZCwgYW5kIHdlIHRha2UgdGhlIG5leHQgZXhpdCAqLwogICAgICAgICBpZiAoIW91dGJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChpbmJ1ZltpXSA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5idWYsIGkpOworICAgICAgICAgICAgLyogV2UgY2Fubm90IHRlc3QgZm9yIHNpemVvZihUY2xfVW5pQ2hhcikgZGlyZWN0bHksCisgICAgICAgICAgICAgICBzbyB3ZSB0ZXN0IGZvciBVVEYtOCBzaXplIGluc3RlYWQuICovCisjaWYgVENMX1VURl9NQVggPT0gMworICAgICAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICAvKiBUY2wgZG9lc24ndCBkbyBVVEYtMTYsIHlldC4gKi8KICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIGFib3ZlIHRoZSByYW5nZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoVSswMDAwLVUrRkZGRikgYWxsb3dlZCBieSBUY2wiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmJ1ZltpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKICAgICAgICAgICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG91dGJ1ZltpXSA9IGluYnVmW2ldOworI2VuZGlmCisgICAgICAgICAgICBvdXRidWZbaV0gPSBjaDsKICAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBUY2xfTmV3VW5pY29kZU9iaihvdXRidWYsIHNpemUpOwogICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgICAgIHJldHVybiBUY2xfTmV3VW5pY29kZU9iaihpbmJ1Ziwgc2l6ZSk7Ci0jZW5kaWYKLQogICAgIH0KICAgICBlbHNlIGlmKFB5VGNsT2JqZWN0X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBUY2xfT2JqICp2ID0gKChQeVRjbE9iamVjdCopdmFsdWUpLT52YWx1ZTsKQEAgLTEwOTAsMjQgKzEwODQsMTQgQEAKICAgICB9CiAKICAgICBpZiAodmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5TdHJpbmdUeXBlKSB7Ci0jaWYgZGVmaW5lZChQeV9VTklDT0RFX1dJREUpICYmIFRDTF9VVEZfTUFYPT0zCi0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgICAgIGludCBzaXplOwotICAgICAgICBUY2xfVW5pQ2hhciAqaW5wdXQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dHB1dDsKLQotICAgICAgICBzaXplID0gVGNsX0dldENoYXJMZW5ndGgodmFsdWUpOwotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc2l6ZSk7Ci0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlucHV0ID0gVGNsX0dldFVuaWNvZGUodmFsdWUpOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgICAgICB3aGlsZSAoc2l6ZS0tKQotICAgICAgICAgICAgKm91dHB1dCsrID0gKmlucHV0Kys7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisjaWYgVENMX1VURl9NQVg9PTMKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfS0lORCwgVGNsX0dldFVuaWNvZGUodmFsdWUpLAorICAgICAgICAgICAgVGNsX0dldENoYXJMZW5ndGgodmFsdWUpKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoVGNsX0dldFVuaWNvZGUodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQsIFRjbF9HZXRVbmljb2RlKHZhbHVlKSwKKyAgICAgICAgICAgIFRjbF9HZXRDaGFyTGVuZ3RoKHZhbHVlKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTEzNTksNiArMTM0MywxMSBAQAogICAgIGNoYXIgKmNtZDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgImdsb2JhbGNhbGwgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgIHJldHVybiAwOworCiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKICAgICBjbWQgID0gTWVyZ2UoYXJncyk7CkBAIC0xNDA4LDYgKzEzOTcsMTEgQEAKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsZXZhbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2xvYmFsZXZhbCIsICZzY3JpcHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTk3MCw5ICsxOTY0LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogVGthcHBfTWVyZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKnMgPSBNZXJnZShhcmdzKTsKKyAgICBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAibWVyZ2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNCIsCisgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgcyA9IE1lcmdlKGFyZ3MpOworCiAgICAgaWYgKHMpIHsKICAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocyk7CiAgICAgICAgIGNrZnJlZShzKTsKQEAgLTIwMDcsNyArMjAwOCw3IEBACiBQeXRob25DbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAgICAgUHl0aG9uQ21kX0NsaWVudERhdGEgKmRhdGEgPSAoUHl0aG9uQ21kX0NsaWVudERhdGEgKiljbGllbnREYXRhOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKmFyZywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKmFyZywgKnJlczsKICAgICBpbnQgaSwgcnY7CiAgICAgVGNsX09iaiAqb2JqX3JlczsKIApAQCAtMjAxNiw3ICsyMDE3LDYgQEAKICAgICAvKiBUQkQ6IG5vIGVycm9yIGNoZWNraW5nIGhlcmUgc2luY2Ugd2Uga25vdywgdmlhIHRoZQogICAgICAqIFRrYXBwX0NyZWF0ZUNvbW1hbmQoKSB0aGF0IHRoZSBjbGllbnQgZGF0YSBpcyBhIHR3by10dXBsZQogICAgICAqLwotICAgIHNlbGYgPSBkYXRhLT5zZWxmOwogICAgIGZ1bmMgPSBkYXRhLT5mdW5jOwogCiAgICAgLyogQ3JlYXRlIGFyZ3VtZW50IGxpc3QgKGFyZ3YxLCAuLi4sIGFyZ3ZOKSAqLwpAQCAtMjQxNSwxMSArMjQxNSw5IEBACiBUa3R0X1JlcHIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgVGt0dE9iamVjdCAqdiA9IChUa3R0T2JqZWN0ICopc2VsZjsKLSAgICBjaGFyIGJ1ZlsxMDBdOwotCi0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiPHRrdGltZXJ0b2tlbiBhdCAlcCVzPiIsIHYsCi0gICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8dGt0aW1lcnRva2VuIGF0ICVwJXM+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi0+ZnVuYyA9PSBOVUxMID8gIiwgaGFuZGxlciBkZWxldGVkIiA6ICIiKTsKIH0KIAogc3RhdGljIFB5VHlwZU9iamVjdCBUa3R0X1R5cGUgPQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fd2luYXBpLmMgYi9Nb2R1bGVzL193aW5hcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDc0ODkxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fd2luYXBpLmMKQEAgLTAsMCArMSwxMzI4IEBACisvKgorICogU3VwcG9ydCByb3V0aW5lcyBmcm9tIHRoZSBXaW5kb3dzIEFQSQorICoKKyAqIFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgbWVyZ2luZyBQQy9fc3VicHJvY2Vzcy5jIHdpdGgKKyAqIE1vZHVsZXMvX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYy4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgRnJlZHJpayBMdW5kaCA8ZnJlZHJpa0BweXRob253YXJlLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwNCBieSBTZWNyZXQgTGFicyBBQiwgaHR0cDovL3d3dy5weXRob253YXJlLmNvbQorICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFBldGVyIEFzdHJhbmQgPGFzdHJhbmRAbHlzYXRvci5saXUuc2U+CisgKgorICogQnkgb2J0YWluaW5nLCB1c2luZywgYW5kL29yIGNvcHlpbmcgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgaXRzCisgKiBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24sIHlvdSBhZ3JlZSB0aGF0IHlvdSBoYXZlIHJlYWQsIHVuZGVyc3Rvb2QsCisgKiBhbmQgd2lsbCBjb21wbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zOgorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCisgKiBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKKyAqIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4KKyAqIGFsbCBjb3BpZXMsIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KKyAqIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiB0aGUKKyAqIGF1dGhvcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8KKyAqIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgorICogcGVybWlzc2lvbi4KKyAqCisgKiBUSEUgQVVUSE9SUyBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKKyAqIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4KKyAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTCisgKiBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCisgKiBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorICogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisgKgorICovCisKKy8qIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4gKi8KKy8qIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvMi40L2xpY2Vuc2UgZm9yIGxpY2Vuc2luZyBkZXRhaWxzLiAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKyNkZWZpbmUgV0lORE9XU19MRUFOX0FORF9NRUFOCisjaW5jbHVkZSAid2luZG93cy5oIgorI2luY2x1ZGUgPGNydGRiZy5oPgorCisjaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoTVNfV0lONjQpCisjZGVmaW5lIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpIFwKKyAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykgaGFuZGxlKQorI2RlZmluZSBQWU5VTV9UT19IQU5ETEUob2JqKSAoKEhBTkRMRSlQeUxvbmdfQXNVbnNpZ25lZExvbmcob2JqKSkKKyNkZWZpbmUgRl9QT0lOVEVSICJrIgorI2RlZmluZSBUX1BPSU5URVIgVF9VTE9ORworI2Vsc2UKKyNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgXAorICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgbG9uZyBsb25nKSBoYW5kbGUpCisjZGVmaW5lIFBZTlVNX1RPX0hBTkRMRShvYmopICgoSEFORExFKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKSkKKyNkZWZpbmUgRl9QT0lOVEVSICJLIgorI2RlZmluZSBUX1BPSU5URVIgVF9VTE9OR0xPTkcKKyNlbmRpZgorCisjZGVmaW5lIEZfSEFORExFIEZfUE9JTlRFUgorI2RlZmluZSBGX0RXT1JEICJrIgorI2RlZmluZSBGX0JPT0wgImkiCisjZGVmaW5lIEZfVUlOVCAiSSIKKworI2RlZmluZSBUX0hBTkRMRSBUX1BPSU5URVIKKworLyogR3JhYiBDYW5jZWxJb0V4IGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KK3N0YXRpYyBpbnQgaGFzX0NhbmNlbElvRXggPSAtMTsKK3N0YXRpYyBCT09MIChDQUxMQkFDSyAqUHlfQ2FuY2VsSW9FeCkoSEFORExFLCBMUE9WRVJMQVBQRUQpOworCitzdGF0aWMgaW50CitjaGVja19DYW5jZWxJb0V4KCkKK3sKKyAgICBpZiAoaGFzX0NhbmNlbElvRXggPT0gLTEpCisgICAgeworICAgICAgICBISU5TVEFOQ0UgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlKCJLRVJORUwzMiIpOworICAgICAgICAqIChGQVJQUk9DICopICZQeV9DYW5jZWxJb0V4ID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbElvRXgiKTsKKyAgICAgICAgaGFzX0NhbmNlbElvRXggPSAoUHlfQ2FuY2VsSW9FeCAhPSBOVUxMKTsKKyAgICB9CisgICAgcmV0dXJuIGhhc19DYW5jZWxJb0V4OworfQorCisKKy8qCisgKiBBIFB5dGhvbiBvYmplY3Qgd3JhcHBpbmcgYW4gT1ZFUkxBUFBFRCBzdHJ1Y3R1cmUgYW5kIG90aGVyIHVzZWZ1bCBkYXRhCisgKiBmb3Igb3ZlcmxhcHBlZCBJL08KKyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIE9WRVJMQVBQRUQgb3ZlcmxhcHBlZDsKKyAgICAvKiBGb3IgY29udmVuaWVuY2UsIHdlIHN0b3JlIHRoZSBmaWxlIGhhbmRsZSB0b28gKi8KKyAgICBIQU5ETEUgaGFuZGxlOworICAgIC8qIFdoZXRoZXIgdGhlcmUncyBJL08gaW4gZmxpZ2h0ICovCisgICAgaW50IHBlbmRpbmc7CisgICAgLyogV2hldGhlciBJL08gY29tcGxldGVkIHN1Y2Nlc3NmdWxseSAqLworICAgIGludCBjb21wbGV0ZWQ7CisgICAgLyogQnVmZmVyIHVzZWQgZm9yIHJlYWRpbmcgKG9wdGlvbmFsKSAqLworICAgIFB5T2JqZWN0ICpyZWFkX2J1ZmZlcjsKKyAgICAvKiBCdWZmZXIgdXNlZCBmb3Igd3JpdGluZyAob3B0aW9uYWwpICovCisgICAgUHlfYnVmZmVyIHdyaXRlX2J1ZmZlcjsKK30gT3ZlcmxhcHBlZE9iamVjdDsKKworc3RhdGljIHZvaWQKK292ZXJsYXBwZWRfZGVhbGxvYyhPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQoreworICAgIERXT1JEIGJ5dGVzOworICAgIGludCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICBpZiAoc2VsZi0+cGVuZGluZykgeworICAgICAgICAvKiBtYWtlIGl0IGEgcHJvZ3JhbW1pbmcgZXJyb3IgdG8gZGVhbGxvY2F0ZSB3aGlsZSBvcGVyYXRpb24KKyAgICAgICAgICAgaXMgcGVuZGluZywgZXZlbiBpZiB3ZSBjYW4gc2FmZWx5IGNhbmNlbCBpdCAqLworICAgICAgICBpZiAoY2hlY2tfQ2FuY2VsSW9FeCgpICYmCisgICAgICAgICAgICAgICAgUHlfQ2FuY2VsSW9FeChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkKSkKKyAgICAgICAgICAgIEdldE92ZXJsYXBwZWRSZXN1bHQoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCwgJmJ5dGVzLCBUUlVFKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9ucyBzdGlsbCBpbiBmbGlnaHQgd2hpbGUgZGVzdHJveWluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiT3ZlcmxhcHBlZCBvYmplY3QsIHRoZSBwcm9jZXNzIG1heSBjcmFzaCIpOworICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoTlVMTCk7CisgICAgfQorICAgIENsb3NlSGFuZGxlKHNlbGYtPm92ZXJsYXBwZWQuaEV2ZW50KTsKKyAgICBTZXRMYXN0RXJyb3IoZXJyKTsKKyAgICBpZiAoc2VsZi0+d3JpdGVfYnVmZmVyLm9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZi0+d3JpdGVfYnVmZmVyKTsKKyAgICBQeV9DTEVBUihzZWxmLT5yZWFkX2J1ZmZlcik7CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0KE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp3YWl0b2JqKQoreworICAgIGludCB3YWl0OworICAgIEJPT0wgcmVzOworICAgIERXT1JEIHRyYW5zZmVycmVkID0gMDsKKyAgICBEV09SRCBlcnI7CisKKyAgICB3YWl0ID0gUHlPYmplY3RfSXNUcnVlKHdhaXRvYmopOworICAgIGlmICh3YWl0IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IEdldE92ZXJsYXBwZWRSZXN1bHQoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCwgJnRyYW5zZmVycmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCAhPSAwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZXJyID0gcmVzID8gRVJST1JfU1VDQ0VTUyA6IEdldExhc3RFcnJvcigpOworICAgIHN3aXRjaCAoZXJyKSB7CisgICAgICAgIGNhc2UgRVJST1JfU1VDQ0VTUzoKKyAgICAgICAgY2FzZSBFUlJPUl9NT1JFX0RBVEE6CisgICAgICAgIGNhc2UgRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICBzZWxmLT5jb21wbGV0ZWQgPSAxOworICAgICAgICAgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFUlJPUl9JT19JTkNPTVBMRVRFOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCBlcnIpOworICAgIH0KKyAgICBpZiAoc2VsZi0+Y29tcGxldGVkICYmIHNlbGYtPnJlYWRfYnVmZmVyICE9IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2tFeGFjdChzZWxmLT5yZWFkX2J1ZmZlcikpOworICAgICAgICBpZiAodHJhbnNmZXJyZWQgIT0gUHlCeXRlc19HRVRfU0laRShzZWxmLT5yZWFkX2J1ZmZlcikgJiYKKyAgICAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmc2VsZi0+cmVhZF9idWZmZXIsIHRyYW5zZmVycmVkKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiSUkiLCAodW5zaWduZWQpIHRyYW5zZmVycmVkLCAodW5zaWduZWQpIGVycik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgaWYgKCFzZWxmLT5jb21wbGV0ZWQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZ2V0IHJlYWQgYnVmZmVyIGJlZm9yZSBHZXRPdmVybGFwcGVkUmVzdWx0KCkgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbHMgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlcyA9IHNlbGYtPnJlYWRfYnVmZmVyID8gc2VsZi0+cmVhZF9idWZmZXIgOiBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQoreworICAgIEJPT0wgcmVzID0gVFJVRTsKKworICAgIGlmIChzZWxmLT5wZW5kaW5nKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNoZWNrX0NhbmNlbElvRXgoKSkKKyAgICAgICAgICAgIHJlcyA9IFB5X0NhbmNlbElvRXgoc2VsZi0+aGFuZGxlLCAmc2VsZi0+b3ZlcmxhcHBlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IENhbmNlbElvKHNlbGYtPmhhbmRsZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgLyogQ2FuY2VsSW9FeCByZXR1cm5zIEVSUk9SX05PVF9GT1VORCBpZiB0aGUgSS9PIGNvbXBsZXRlZCBpbi1iZXR3ZWVuICovCisgICAgaWYgKCFyZXMgJiYgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfTk9UX0ZPVU5EKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgc2VsZi0+cGVuZGluZyA9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBvdmVybGFwcGVkX21ldGhvZHNbXSA9IHsKKyAgICB7IkdldE92ZXJsYXBwZWRSZXN1bHQiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAorICAgIHsiZ2V0YnVmZmVyIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2dldGJ1ZmZlciwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKSBvdmVybGFwcGVkX2NhbmNlbCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIG92ZXJsYXBwZWRfbWVtYmVyc1tdID0geworICAgIHsiZXZlbnQiLCBUX0hBTkRMRSwKKyAgICAgb2Zmc2V0b2YoT3ZlcmxhcHBlZE9iamVjdCwgb3ZlcmxhcHBlZCkgKyBvZmZzZXRvZihPVkVSTEFQUEVELCBoRXZlbnQpLAorICAgICBSRUFET05MWSwgIm92ZXJsYXBwZWQgZXZlbnQgaGFuZGxlIn0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgT3ZlcmxhcHBlZFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgLyogdHBfbmFtZSAgICAgICAgICAgKi8gIl93aW5hcGkuT3ZlcmxhcHBlZCIsCisgICAgLyogdHBfYmFzaWNzaXplICAgICAgKi8gc2l6ZW9mKE92ZXJsYXBwZWRPYmplY3QpLAorICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICovIDAsCisgICAgLyogdHBfZGVhbGxvYyAgICAgICAgKi8gKGRlc3RydWN0b3IpIG92ZXJsYXBwZWRfZGVhbGxvYywKKyAgICAvKiB0cF9wcmludCAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2dldGF0dHIgICAgICAgICovIDAsCisgICAgLyogdHBfc2V0YXR0ciAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9yZXNlcnZlZCAgICAgICAqLyAwLAorICAgIC8qIHRwX3JlcHIgICAgICAgICAgICovIDAsCisgICAgLyogdHBfYXNfbnVtYmVyICAgICAgKi8gMCwKKyAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAqLyAwLAorICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICovIDAsCisgICAgLyogdHBfaGFzaCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9jYWxsICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX3N0ciAgICAgICAgICAgICovIDAsCisgICAgLyogdHBfZ2V0YXR0cm8gICAgICAgKi8gMCwKKyAgICAvKiB0cF9zZXRhdHRybyAgICAgICAqLyAwLAorICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICovIDAsCisgICAgLyogdHBfZmxhZ3MgICAgICAgICAgKi8gUHlfVFBGTEFHU19ERUZBVUxULAorICAgIC8qIHRwX2RvYyAgICAgICAgICAgICovICJPVkVSTEFQUEVEIHN0cnVjdHVyZSB3cmFwcGVyIiwKKyAgICAvKiB0cF90cmF2ZXJzZSAgICAgICAqLyAwLAorICAgIC8qIHRwX2NsZWFyICAgICAgICAgICovIDAsCisgICAgLyogdHBfcmljaGNvbXBhcmUgICAgKi8gMCwKKyAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyAwLAorICAgIC8qIHRwX2l0ZXIgICAgICAgICAgICovIDAsCisgICAgLyogdHBfaXRlcm5leHQgICAgICAgKi8gMCwKKyAgICAvKiB0cF9tZXRob2RzICAgICAgICAqLyBvdmVybGFwcGVkX21ldGhvZHMsCisgICAgLyogdHBfbWVtYmVycyAgICAgICAgKi8gb3ZlcmxhcHBlZF9tZW1iZXJzLAorICAgIC8qIHRwX2dldHNldCAgICAgICAgICovIDAsCisgICAgLyogdHBfYmFzZSAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9kaWN0ICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICovIDAsCisgICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgKi8gMCwKKyAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAqLyAwLAorICAgIC8qIHRwX2luaXQgICAgICAgICAgICovIDAsCisgICAgLyogdHBfYWxsb2MgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9uZXcgICAgICAgICAgICAqLyAwLAorfTsKKworc3RhdGljIE92ZXJsYXBwZWRPYmplY3QgKgorbmV3X292ZXJsYXBwZWQoSEFORExFIGhhbmRsZSkKK3sKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpzZWxmOworCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhPdmVybGFwcGVkT2JqZWN0LCAmT3ZlcmxhcHBlZFR5cGUpOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2VsZi0+aGFuZGxlID0gaGFuZGxlOworICAgIHNlbGYtPnJlYWRfYnVmZmVyID0gTlVMTDsKKyAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICBzZWxmLT5jb21wbGV0ZWQgPSAwOworICAgIG1lbXNldCgmc2VsZi0+b3ZlcmxhcHBlZCwgMCwgc2l6ZW9mKE9WRVJMQVBQRUQpKTsKKyAgICBtZW1zZXQoJnNlbGYtPndyaXRlX2J1ZmZlciwgMCwgc2l6ZW9mKFB5X2J1ZmZlcikpOworICAgIC8qIE1hbnVhbCByZXNldCwgaW5pdGlhbGx5IG5vbi1zaWduYWxsZWQgKi8KKyAgICBzZWxmLT5vdmVybGFwcGVkLmhFdmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBOVUxMKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIHdpbmRvd3MgQVBJIGZ1bmN0aW9ucyAqLworCitQeURvY19TVFJWQVIoQ2xvc2VIYW5kbGVfZG9jLAorIkNsb3NlSGFuZGxlKGhhbmRsZSkgLT4gTm9uZVxuXAorXG5cCitDbG9zZSBoYW5kbGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ2xvc2VIYW5kbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEhBTkRMRSBoT2JqZWN0OworICAgIEJPT0wgc3VjY2VzczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhPYmplY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzdWNjZXNzID0gQ2xvc2VIYW5kbGUoaE9iamVjdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEhBTkRMRSBoTmFtZWRQaXBlOworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisgICAgQk9PTCBzdWNjZXNzOworICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgInwiIEZfQk9PTCwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgeworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaE5hbWVkUGlwZSk7CisgICAgICAgIGlmICghb3ZlcmxhcHBlZCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoTmFtZWRQaXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAob3ZlcmxhcHBlZCkgeworICAgICAgICBpbnQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIC8qIE92ZXJsYXBwZWQgQ29ubmVjdE5hbWVkUGlwZSBuZXZlciByZXR1cm5zIGEgc3VjY2VzcyBjb2RlICovCisgICAgICAgIGFzc2VydChzdWNjZXNzID09IDApOworICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICBvdmVybGFwcGVkLT5wZW5kaW5nID0gMTsKKyAgICAgICAgZWxzZSBpZiAoZXJyID09IEVSUk9SX1BJUEVfQ09OTkVDVEVEKQorICAgICAgICAgICAgU2V0RXZlbnQob3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZC5oRXZlbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb3ZlcmxhcHBlZDsKKyAgICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBMUENUU1RSIGxwRmlsZU5hbWU7CisgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOworICAgIERXT1JEIGR3U2hhcmVNb2RlOworICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKKyAgICBEV09SRCBkd0NyZWF0aW9uRGlzcG9zaXRpb247CisgICAgRFdPUkQgZHdGbGFnc0FuZEF0dHJpYnV0ZXM7CisgICAgSEFORExFIGhUZW1wbGF0ZUZpbGU7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUgorICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscEZpbGVOYW1lLCAmZHdEZXNpcmVkQWNjZXNzLCAmZHdTaGFyZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcywgJmR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCAmaFRlbXBsYXRlRmlsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGhhbmRsZSA9IENyZWF0ZUZpbGUobHBGaWxlTmFtZSwgZHdEZXNpcmVkQWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgZHdTaGFyZU1vZGUsIGxwU2VjdXJpdHlBdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgZHdGbGFnc0FuZEF0dHJpYnV0ZXMsIGhUZW1wbGF0ZUZpbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIExQQ1RTVFIgbHBOYW1lOworICAgIERXT1JEIGR3T3Blbk1vZGU7CisgICAgRFdPUkQgZHdQaXBlTW9kZTsKKyAgICBEV09SRCBuTWF4SW5zdGFuY2VzOworICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOworICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7CisgICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OworICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAorICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihDcmVhdGVQaXBlX2RvYywKKyJDcmVhdGVQaXBlKHBpcGVfYXR0cnMsIHNpemUpIC0+IChyZWFkX2hhbmRsZSwgd3JpdGVfaGFuZGxlKVxuXAorXG5cCitDcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUsIGFuZCByZXR1cm4gaGFuZGxlcyB0byB0aGUgcmVhZCBhbmRcblwKK3dyaXRlIGVuZHMgb2YgdGhlIHBpcGUuXG5cCitcblwKK3BpcGVfYXR0cnMgaXMgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVQaXBlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBIQU5ETEUgcmVhZF9waXBlOworICAgIEhBTkRMRSB3cml0ZV9waXBlOworICAgIEJPT0wgcmVzdWx0OworCisgICAgUHlPYmplY3QqIHBpcGVfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLworICAgIERXT1JEIHNpemU7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiBGX0RXT1JEICI6Q3JlYXRlUGlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlwZV9hdHRyaWJ1dGVzLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IENyZWF0ZVBpcGUoJnJlYWRfcGlwZSwgJndyaXRlX3BpcGUsIE5VTEwsIHNpemUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgIk5OIiwgSEFORExFX1RPX1BZTlVNKHJlYWRfcGlwZSksIEhBTkRMRV9UT19QWU5VTSh3cml0ZV9waXBlKSk7Cit9CisKKy8qIGhlbHBlcnMgZm9yIGNyZWF0ZXByb2Nlc3MgKi8KKworc3RhdGljIHVuc2lnbmVkIGxvbmcKK2dldHVsb25nKFB5T2JqZWN0KiBvYmosIGNoYXIqIG5hbWUpCit7CisgICAgUHlPYmplY3QqIHZhbHVlOworICAgIHVuc2lnbmVkIGxvbmcgcmV0OworCisgICAgdmFsdWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7CisgICAgaWYgKCEgdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyh2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgSEFORExFCitnZXRoYW5kbGUoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK3sKKyAgICBQeU9iamVjdCogdmFsdWU7CisgICAgSEFORExFIHJldDsKKworICAgIHZhbHVlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIG5hbWUpOworICAgIGlmICghIHZhbHVlKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3I/ICovCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKKyAgICAgICAgcmV0ID0gTlVMTDsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IFBZTlVNX1RPX0hBTkRMRSh2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QqCitnZXRlbnZpcm9ubWVudChQeU9iamVjdCogZW52aXJvbm1lbnQpCit7CisgICAgUHlfc3NpemVfdCBpLCBlbnZzaXplLCB0b3RhbHNpemU7CisgICAgUHlfVUNTNCAqYnVmZmVyID0gTlVMTCwgKnAsICplbmQ7CisgICAgUHlPYmplY3QgKmtleXMsICp2YWx1ZXMsICpyZXM7CisKKyAgICAvKiBjb252ZXJ0IGVudmlyb25tZW50IGRpY3Rpb25hcnkgdG8gd2luZG93cyBlbnZpcm9tZW50IHN0cmluZyAqLworICAgIGlmICghIFB5TWFwcGluZ19DaGVjayhlbnZpcm9ubWVudCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLCAiZW52aXJvbm1lbnQgbXVzdCBiZSBkaWN0aW9uYXJ5IG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZW52c2l6ZSA9IFB5TWFwcGluZ19MZW5ndGgoZW52aXJvbm1lbnQpOworCisgICAga2V5cyA9IFB5TWFwcGluZ19LZXlzKGVudmlyb25tZW50KTsKKyAgICB2YWx1ZXMgPSBQeU1hcHBpbmdfVmFsdWVzKGVudmlyb25tZW50KTsKKyAgICBpZiAoIWtleXMgfHwgIXZhbHVlcykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHRvdGFsc2l6ZSA9IDE7IC8qIHRyYWlsaW5nIG51bGwgY2hhcmFjdGVyICovCisgICAgZm9yIChpID0gMDsgaSA8IGVudnNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCoga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOworICAgICAgICBQeU9iamVjdCogdmFsdWUgPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKworICAgICAgICBpZiAoISBQeVVuaWNvZGVfQ2hlY2soa2V5KSB8fCAhIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImVudmlyb25tZW50IGNhbiBvbmx5IGNvbnRhaW4gc3RyaW5ncyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB0b3RhbHNpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoa2V5KSArIDE7ICAgIC8qICsxIGZvciAnPScgKi8KKyAgICAgICAgdG90YWxzaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKSArIDE7ICAvKiArMSBmb3IgJ1wwJyAqLworICAgIH0KKworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYyh0b3RhbHNpemUgKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghIGJ1ZmZlcikKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBwID0gYnVmZmVyOworICAgIGVuZCA9IGJ1ZmZlciArIHRvdGFsc2l6ZTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBlbnZzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QqIGtleSA9IFB5TGlzdF9HRVRfSVRFTShrZXlzLCBpKTsKKyAgICAgICAgUHlPYmplY3QqIHZhbHVlID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChrZXksIHAsIGVuZCAtIHAsIDApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpOworICAgICAgICAqcCsrID0gJz0nOworICAgICAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQodmFsdWUsIHAsIGVuZCAtIHAsIDApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSk7CisgICAgICAgICpwKysgPSAnXDAnOworICAgIH0KKworICAgIC8qIGFkZCB0cmFpbGluZyBudWxsIGJ5dGUgKi8KKyAgICAqcCsrID0gJ1wwJzsKKyAgICBhc3NlcnQocCA9PSBlbmQpOworCisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlcyk7CisKKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBidWZmZXIsIHAgLSBidWZmZXIpOworICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzOworCisgZXJyb3I6CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworICAgIFB5X1hERUNSRUYoa2V5cyk7CisgICAgUHlfWERFQ1JFRih2YWx1ZXMpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQ3JlYXRlUHJvY2Vzc19kb2MsCisiQ3JlYXRlUHJvY2VzcyhhcHBfbmFtZSwgY21kX2xpbmUsIHByb2NfYXR0cnMsIHRocmVhZF9hdHRycyxcblwKKyAgICAgICAgICAgICAgIGluaGVyaXQsIGZsYWdzLCBlbnZfbWFwcGluZywgY3VyZGlyLFxuXAorICAgICAgICAgICAgICAgc3RhcnR1cF9pbmZvKSAtPiAocHJvY19oYW5kbGUsIHRocmVhZF9oYW5kbGUsXG5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsIHRpZClcblwKK1xuXAorQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC4gVGhlIHJldHVyblxuXAordmFsdWUgaXMgYSB0dXBsZSBvZiB0aGUgcHJvY2VzcyBoYW5kbGUsIHRocmVhZCBoYW5kbGUsXG5cCitwcm9jZXNzIElELCBhbmQgdGhyZWFkIElELlxuXAorXG5cCitwcm9jX2F0dHJzIGFuZCB0aHJlYWRfYXR0cnMgYXJlIGlnbm9yZWQgaW50ZXJuYWxseSBhbmQgY2FuIGJlIE5vbmUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgQk9PTCByZXN1bHQ7CisgICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKKyAgICBTVEFSVFVQSU5GT1cgc2k7CisgICAgUHlPYmplY3QqIGVudmlyb25tZW50OworICAgIHdjaGFyX3QgKndlbnZpcm9ubWVudDsKKworICAgIHdjaGFyX3QqIGFwcGxpY2F0aW9uX25hbWU7CisgICAgd2NoYXJfdCogY29tbWFuZF9saW5lOworICAgIFB5T2JqZWN0KiBwcm9jZXNzX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KKyAgICBQeU9iamVjdCogdGhyZWFkX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KKyAgICBCT09MIGluaGVyaXRfaGFuZGxlczsKKyAgICBEV09SRCBjcmVhdGlvbl9mbGFnczsKKyAgICBQeU9iamVjdCogZW52X21hcHBpbmc7CisgICAgd2NoYXJfdCogY3VycmVudF9kaXJlY3Rvcnk7CisgICAgUHlPYmplY3QqIHN0YXJ0dXBfaW5mbzsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT08iIEZfQk9PTCBGX0RXT1JEICJPWk86Q3JlYXRlUHJvY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21tYW5kX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2Vzc19hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRocmVhZF9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjcmVhdGlvbl9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbnZfbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHVwX2luZm8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFplcm9NZW1vcnkoJnNpLCBzaXplb2Yoc2kpKTsKKyAgICBzaS5jYiA9IHNpemVvZihzaSk7CisKKyAgICAvKiBub3RlOiB3ZSBvbmx5IHN1cHBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgYWxsIFNJIGF0dHJpYnV0ZXMgKi8KKyAgICBzaS5kd0ZsYWdzID0gZ2V0dWxvbmcoc3RhcnR1cF9pbmZvLCAiZHdGbGFncyIpOworICAgIHNpLndTaG93V2luZG93ID0gKFdPUkQpZ2V0dWxvbmcoc3RhcnR1cF9pbmZvLCAid1Nob3dXaW5kb3ciKTsKKyAgICBzaS5oU3RkSW5wdXQgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZElucHV0Iik7CisgICAgc2kuaFN0ZE91dHB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkT3V0cHV0Iik7CisgICAgc2kuaFN0ZEVycm9yID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRFcnJvciIpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChlbnZfbWFwcGluZyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGVudmlyb25tZW50ID0gZ2V0ZW52aXJvbm1lbnQoZW52X21hcHBpbmcpOworICAgICAgICBpZiAoISBlbnZpcm9ubWVudCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB3ZW52aXJvbm1lbnQgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGVudmlyb25tZW50KTsKKyAgICAgICAgaWYgKHdlbnZpcm9ubWVudCA9PSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGVudmlyb25tZW50KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnZpcm9ubWVudCA9IE5VTEw7CisgICAgICAgIHdlbnZpcm9ubWVudCA9IE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IENyZWF0ZVByb2Nlc3NXKGFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRfaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uX2ZsYWdzIHwgQ1JFQVRFX1VOSUNPREVfRU5WSVJPTk1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZW52aXJvbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5X1hERUNSRUYoZW52aXJvbm1lbnQpOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5Oa2siLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9UT19QWU5VTShwaS5oUHJvY2VzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX1RPX1BZTlVNKHBpLmhUaHJlYWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3UHJvY2Vzc0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3VGhyZWFkSWQpOworfQorCitQeURvY19TVFJWQVIoRHVwbGljYXRlSGFuZGxlX2RvYywKKyJEdXBsaWNhdGVIYW5kbGUoc291cmNlX3Byb2NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuXAorICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY19oYW5kbGUsIHRhcmdldF9oYW5kbGUsIGFjY2VzcyxcblwKKyAgICAgICAgICAgICAgICAgaW5oZXJpdFssIG9wdGlvbnNdKSAtPiBoYW5kbGVcblwKK1xuXAorUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG5cCitcblwKK1RoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsXG5cCitoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG5cCit0aHJvdWdoIGJvdGggaGFuZGxlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9EdXBsaWNhdGVIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEhBTkRMRSB0YXJnZXRfaGFuZGxlOworICAgIEJPT0wgcmVzdWx0OworCisgICAgSEFORExFIHNvdXJjZV9wcm9jZXNzX2hhbmRsZTsKKyAgICBIQU5ETEUgc291cmNlX2hhbmRsZTsKKyAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlOworICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzOworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGU7CisgICAgRFdPUkQgb3B0aW9ucyA9IDA7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSBGX0hBTkRMRSBGX0hBTkRMRSBGX0RXT1JEIEZfQk9PTCBGX0RXT1JECisgICAgICAgICAgICAgICAgICAgICAgICAgICAiOkR1cGxpY2F0ZUhhbmRsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc2lyZWRfYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluaGVyaXRfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlvbnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBEdXBsaWNhdGVIYW5kbGUoCisgICAgICAgIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKKyAgICAgICAgc291cmNlX2hhbmRsZSwKKyAgICAgICAgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAmdGFyZ2V0X2hhbmRsZSwKKyAgICAgICAgZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgIGluaGVyaXRfaGFuZGxlLAorICAgICAgICBvcHRpb25zCisgICAgKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTSh0YXJnZXRfaGFuZGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9FeGl0UHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgVUlOVCB1RXhpdENvZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9VSU5ULCAmdUV4aXRDb2RlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKKyAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8CisgICAgICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1h8U0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7CisgICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfREVCVUcpOworICAgICNlbmRpZgorCisgICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKKworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoR2V0Q3VycmVudFByb2Nlc3NfZG9jLAorIkdldEN1cnJlbnRQcm9jZXNzKCkgLT4gaGFuZGxlXG5cCitcblwKK1JldHVybiBhIGhhbmRsZSBvYmplY3QgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpHZXRDdXJyZW50UHJvY2VzcyIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oR2V0Q3VycmVudFByb2Nlc3MoKSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRFeGl0Q29kZVByb2Nlc3NfZG9jLAorIkdldEV4aXRDb2RlUHJvY2VzcyhoYW5kbGUpIC0+IEV4aXQgY29kZVxuXAorXG5cCitSZXR1cm4gdGhlIHRlcm1pbmF0aW9uIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBEV09SRCBleGl0X2NvZGU7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBIQU5ETEUgcHJvY2VzczsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IEdldEV4aXRDb2RlUHJvY2Vzcyhwcm9jZXNzLCAmZXhpdF9jb2RlKTsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhleGl0X2NvZGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0dldExhc3RFcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9EV09SRCwgR2V0TGFzdEVycm9yKCkpOworfQorCitQeURvY19TVFJWQVIoR2V0TW9kdWxlRmlsZU5hbWVfZG9jLAorIkdldE1vZHVsZUZpbGVOYW1lKG1vZHVsZSkgLT4gcGF0aFxuXAorXG5cCitSZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zXG5cCit0aGUgc3BlY2lmaWVkIG1vZHVsZS4gVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlXG5cCitjdXJyZW50IHByb2Nlc3MuXG5cCitcblwKK1RoZSBtb2R1bGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGhhbmRsZSB0byB0aGUgbG9hZGVkIG1vZHVsZVxuXAord2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsIFxuXAorR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcblwKK29mIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEJPT0wgcmVzdWx0OworICAgIEhNT0RVTEUgbW9kdWxlOworICAgIFdDSEFSIGZpbGVuYW1lW01BWF9QQVRIXTsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kdWxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBHZXRNb2R1bGVGaWxlTmFtZVcobW9kdWxlLCBmaWxlbmFtZSwgTUFYX1BBVEgpOworICAgIGZpbGVuYW1lW01BWF9QQVRILTFdID0gJ1wwJzsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGZpbGVuYW1lLCB3Y3NsZW4oZmlsZW5hbWUpKTsKK30KKworUHlEb2NfU1RSVkFSKEdldFN0ZEhhbmRsZV9kb2MsCisiR2V0U3RkSGFuZGxlKGhhbmRsZSkgLT4gaW50ZWdlclxuXAorXG5cCitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2VcblwKKyhTVERfSU5QVVRfSEFORExFLCBTVERfT1VUUFVUX0hBTkRMRSwgU1REX0VSUk9SX0hBTkRMRSkuXG5cCitUaGUgaW50ZWdlciBhc3NvY2lhdGVkIHdpdGggdGhlIGhhbmRsZSBvYmplY3QgaXMgcmV0dXJuZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0U3RkSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIERXT1JEIHN0ZF9oYW5kbGU7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgIjpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZShzdGRfaGFuZGxlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIGlmICghIGhhbmRsZSkgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHJldHVybiBQeV9Ob25lOworICAgIH0KKworICAgIC8qIG5vdGU6IHJldHVybnMgaW50ZWdlciwgbm90IGhhbmRsZSBvYmplY3QgKi8KKyAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKGhhbmRsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRWZXJzaW9uX2RvYywKKyJHZXRWZXJzaW9uKCkgLT4gdmVyc2lvblxuXAorXG5cCitSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0VmVyc2lvbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldFZlcnNpb24iKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoR2V0VmVyc2lvbigpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOworICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7CisgICAgRFdPUkQgZHdQcm9jZXNzSWQ7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEIEZfQk9PTCBGX0RXT1JELAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOworICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfUGVla05hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEw7CisgICAgRFdPUkQgbnJlYWQsIG5hdmFpbCwgbmxlZnQ7CisgICAgQk9PTCByZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiICwgJmhhbmRsZSwgJnNpemUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNpemUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNpemUpIHsKKyAgICAgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICAgICAgaWYgKCFidWYpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBQZWVrTmFtZWRQaXBlKGhhbmRsZSwgUHlCeXRlc19BU19TVFJJTkcoYnVmKSwgc2l6ZSwgJm5yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYXZhaWwsICZubGVmdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZidWYsIG5yZWFkKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmlpIiwgYnVmLCBuYXZhaWwsIG5sZWZ0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gUGVla05hbWVkUGlwZShoYW5kbGUsIE5VTEwsIDAsIE5VTEwsICZuYXZhaWwsICZubGVmdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpIiwgbmF2YWlsLCBubGVmdCk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZTsKKyAgICBEV09SRCBucmVhZDsKKyAgICBQeU9iamVjdCAqYnVmOworICAgIEJPT0wgcmV0OworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisgICAgRFdPUkQgZXJyOworICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAiaXxpOlJlYWRGaWxlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGJ1ZiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgeworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFvdmVybGFwcGVkKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIC8qIFN0ZWFscyByZWZlcmVuY2UgdG8gYnVmICovCisgICAgICAgIG92ZXJsYXBwZWQtPnJlYWRfYnVmZmVyID0gYnVmOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBSZWFkRmlsZShoYW5kbGUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZiksIHNpemUsICZucmVhZCwKKyAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkID8gJm92ZXJsYXBwZWQtPm92ZXJsYXBwZWQgOiBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZXJyID0gcmV0ID8gMCA6IEdldExhc3RFcnJvcigpOworCisgICAgaWYgKG92ZXJsYXBwZWQpIHsKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU9fUEVORElORykKKyAgICAgICAgICAgICAgICBvdmVybGFwcGVkLT5wZW5kaW5nID0gMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVyciAhPSBFUlJPUl9NT1JFX0RBVEEpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIChQeU9iamVjdCAqKSBvdmVybGFwcGVkLCBlcnIpOworICAgIH0KKworICAgIGlmICghcmV0ICYmIGVyciAhPSBFUlJPUl9NT1JFX0RBVEEpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICB9CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmLCBucmVhZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIGJ1ZiwgZXJyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgSEFORExFIGhOYW1lZFBpcGU7CisgICAgUHlPYmplY3QgKm9BcmdzWzNdOworICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OworICAgIGludCBpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgeworICAgICAgICBpZiAob0FyZ3NbaV0gIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgZHdBcmdzW2ldID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhvQXJnc1tpXSk7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHBBcmdzW2ldID0gJmR3QXJnc1tpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoaE5hbWVkUGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoVGVybWluYXRlUHJvY2Vzc19kb2MsCisiVGVybWluYXRlUHJvY2VzcyhoYW5kbGUsIGV4aXRfY29kZSkgLT4gTm9uZVxuXAorXG5cCitUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfVGVybWluYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBIQU5ETEUgcHJvY2VzczsKKyAgICBVSU5UIGV4aXRfY29kZTsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfVUlOVCAiOlRlcm1pbmF0ZVByb2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3MsICZleGl0X2NvZGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MocHJvY2VzcywgZXhpdF9jb2RlKTsKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9XYWl0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBMUENUU1RSIGxwTmFtZWRQaXBlTmFtZTsKKyAgICBEV09SRCBuVGltZU91dDsKKyAgICBCT09MIHN1Y2Nlc3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQsICZscE5hbWVkUGlwZU5hbWUsICZuVGltZU91dCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKGxwTmFtZWRQaXBlTmFtZSwgblRpbWVPdXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIERXT1JEIHJlc3VsdDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX3NlcTsKKyAgICBIQU5ETEUgaGFuZGxlc1tNQVhJTVVNX1dBSVRfT0JKRUNUU107CisgICAgSEFORExFIHNpZ2ludF9ldmVudCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuaGFuZGxlcywgaTsKKyAgICBCT09MIHdhaXRfZmxhZzsKKyAgICBEV09SRCBtaWxsaXNlY29uZHMgPSBJTkZJTklURTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIgRl9CT09MICJ8IiBGX0RXT1JECisgICAgICAgICAgICAgICAgICAgICAgICAgICI6V2FpdEZvck11bHRpcGxlT2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soaGFuZGxlX3NlcSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzZXF1ZW5jZSB0eXBlIGV4cGVjdGVkLCBnb3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGhhbmRsZV9zZXEpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5oYW5kbGVzID0gUHlTZXF1ZW5jZV9MZW5ndGgoaGFuZGxlX3NlcSk7CisgICAgaWYgKG5oYW5kbGVzID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobmhhbmRsZXMgPCAwIHx8IG5oYW5kbGVzID49IE1BWElNVU1fV0FJVF9PQkpFQ1RTIC0gMSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGF0IG1vc3QgJXpkIGhhbmRsZXMsIGdvdCBhIHNlcXVlbmNlIG9mIGxlbmd0aCAlemQiLAorICAgICAgICAgICAgICAgICAgICAgTUFYSU1VTV9XQUlUX09CSkVDVFMgLSAxLCBuaGFuZGxlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbmhhbmRsZXM7IGkrKykgeworICAgICAgICBIQU5ETEUgaDsKKyAgICAgICAgUHlPYmplY3QgKnYgPSBQeVNlcXVlbmNlX0dldEl0ZW0oaGFuZGxlX3NlcSwgaSk7CisgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCBGX0hBTkRMRSwgJmgpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGVzW2ldID0gaDsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgIH0KKyAgICAvKiBJZiB0aGlzIGlzIHRoZSBtYWluIHRocmVhZCB0aGVuIG1ha2UgdGhlIHdhaXQgaW50ZXJydXB0aWJsZQorICAgICAgIGJ5IEN0cmwtQyB1bmxlc3Mgd2UgYXJlIHdhaXRpbmcgZm9yICphbGwqIGhhbmRsZXMgKi8KKyAgICBpZiAoIXdhaXRfZmxhZyAmJiBfUHlPU19Jc01haW5UaHJlYWQoKSkgeworICAgICAgICBzaWdpbnRfZXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICBhc3NlcnQoc2lnaW50X2V2ZW50ICE9IE5VTEwpOworICAgICAgICBoYW5kbGVzW25oYW5kbGVzKytdID0gc2lnaW50X2V2ZW50OworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoc2lnaW50X2V2ZW50ICE9IE5VTEwpCisgICAgICAgIFJlc2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKKyAgICByZXN1bHQgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKChEV09SRCkgbmhhbmRsZXMsIGhhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0X2ZsYWcsIG1pbGxpc2Vjb25kcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICBlbHNlIGlmIChzaWdpbnRfZXZlbnQgIT0gTlVMTCAmJiByZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCArIG5oYW5kbGVzIC0gMSkgeworICAgICAgICBlcnJubyA9IEVJTlRSOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGludCkgcmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSKFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jLAorIldhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCB0aW1lb3V0KSAtPiByZXN1bHRcblwKK1xuXAorV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3JcblwKK3RoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWRcblwKK2luIG1pbGxpc2Vjb25kcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBEV09SRCByZXN1bHQ7CisKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIERXT1JEIG1pbGxpc2Vjb25kczsKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfRFdPUkQgIjpXYWl0Rm9yU2luZ2xlT2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIG1pbGxpc2Vjb25kcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVzdWx0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5X2J1ZmZlciBfYnVmLCAqYnVmOworICAgIFB5T2JqZWN0ICpidWZvYmo7CisgICAgRFdPUkQgd3JpdHRlbjsKKyAgICBCT09MIHJldDsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworICAgIERXT1JEIGVycjsKKyAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworCisgICAgLyogRmlyc3QgZ2V0IGhhbmRsZSBhbmQgdXNlX292ZXJsYXBwZWQgdG8ga25vdyB3aGljaCBQeV9idWZmZXIgdG8gdXNlICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmYnVmb2JqLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgeworICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKKyAgICAgICAgaWYgKCFvdmVybGFwcGVkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGJ1ZiA9ICZvdmVybGFwcGVkLT53cml0ZV9idWZmZXI7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgYnVmID0gJl9idWY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGJ1Zm9iaiwgInkqIiwgYnVmKSkgeworICAgICAgICBQeV9YREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0ID0gV3JpdGVGaWxlKGhhbmRsZSwgYnVmLT5idWYsIGJ1Zi0+bGVuLCAmd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGVyciA9IHJldCA/IDAgOiBHZXRMYXN0RXJyb3IoKTsKKworICAgIGlmIChvdmVybGFwcGVkKSB7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lPX1BFTkRJTkcpCisgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZC0+cGVuZGluZyA9IDE7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOSSIsIChQeU9iamVjdCAqKSBvdmVybGFwcGVkLCBlcnIpOworICAgIH0KKworICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICBpZiAoIXJldCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJJSSIsIHdyaXR0ZW4sIGVycik7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHdpbmFwaV9mdW5jdGlvbnNbXSA9IHsKKyAgICB7IkNsb3NlSGFuZGxlIiwgd2luYXBpX0Nsb3NlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCisgICAgIENsb3NlSGFuZGxlX2RvY30sCisgICAgeyJDb25uZWN0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9Db25uZWN0TmFtZWRQaXBlLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCAiIn0sCisgICAgeyJDcmVhdGVGaWxlIiwgd2luYXBpX0NyZWF0ZUZpbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiQ3JlYXRlTmFtZWRQaXBlIiwgd2luYXBpX0NyZWF0ZU5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJDcmVhdGVQaXBlIiwgd2luYXBpX0NyZWF0ZVBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgQ3JlYXRlUGlwZV9kb2N9LAorICAgIHsiQ3JlYXRlUHJvY2VzcyIsIHdpbmFwaV9DcmVhdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIENyZWF0ZVByb2Nlc3NfZG9jfSwKKyAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsIHdpbmFwaV9EdXBsaWNhdGVIYW5kbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgRHVwbGljYXRlSGFuZGxlX2RvY30sCisgICAgeyJFeGl0UHJvY2VzcyIsIHdpbmFwaV9FeGl0UHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJHZXRDdXJyZW50UHJvY2VzcyIsIHdpbmFwaV9HZXRDdXJyZW50UHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBHZXRDdXJyZW50UHJvY2Vzc19kb2N9LAorICAgIHsiR2V0RXhpdENvZGVQcm9jZXNzIiwgd2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICBHZXRFeGl0Q29kZVByb2Nlc3NfZG9jfSwKKyAgICB7IkdldExhc3RFcnJvciIsIHdpbmFwaV9HZXRMYXN0RXJyb3IsIE1FVEhfTk9BUkdTLAorICAgICBHZXRDdXJyZW50UHJvY2Vzc19kb2N9LAorICAgIHsiR2V0TW9kdWxlRmlsZU5hbWUiLCB3aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0TW9kdWxlRmlsZU5hbWVfZG9jfSwKKyAgICB7IkdldFN0ZEhhbmRsZSIsIHdpbmFwaV9HZXRTdGRIYW5kbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0U3RkSGFuZGxlX2RvY30sCisgICAgeyJHZXRWZXJzaW9uIiwgd2luYXBpX0dldFZlcnNpb24sIE1FVEhfVkFSQVJHUywKKyAgICAgR2V0VmVyc2lvbl9kb2N9LAorICAgIHsiT3BlblByb2Nlc3MiLCB3aW5hcGlfT3BlblByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiUGVla05hbWVkUGlwZSIsIHdpbmFwaV9QZWVrTmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IlJlYWRGaWxlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9SZWFkRmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgIiJ9LAorICAgIHsiU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUiLCB3aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiVGVybWluYXRlUHJvY2VzcyIsIHdpbmFwaV9UZXJtaW5hdGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFRlcm1pbmF0ZVByb2Nlc3NfZG9jfSwKKyAgICB7IldhaXROYW1lZFBpcGUiLCB3aW5hcGlfV2FpdE5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwgd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiV2FpdEZvclNpbmdsZU9iamVjdCIsIHdpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0LCBNRVRIX1ZBUkFSR1MsCisgICAgIFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jfSwKKyAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfV3JpdGVGaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAiIn0sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHdpbmFwaV9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfd2luYXBpIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIHdpbmFwaV9mdW5jdGlvbnMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworI2RlZmluZSBXSU5BUElfQ09OU1RBTlQoZm10LCBjb24pIFwKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAjY29uLCBQeV9CdWlsZFZhbHVlKGZtdCwgY29uKSkKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fd2luYXBpKHZvaWQpCit7CisgICAgUHlPYmplY3QgKmQ7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZPdmVybGFwcGVkVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJndpbmFwaV9tb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworCisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk92ZXJsYXBwZWQiLCAoUHlPYmplY3QgKikgJk92ZXJsYXBwZWRUeXBlKTsKKworICAgIC8qIGNvbnN0YW50cyAqLworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBDUkVBVEVfTkVXX0NPTlNPTEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVApOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBEVVBMSUNBVEVfQ0xPU0VfU09VUkNFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfQUxSRUFEWV9FWElTVFMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9CUk9LRU5fUElQRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0lPX1BFTkRJTkcpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9NT1JFX0RBVEEpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9ORVROQU1FX0RFTEVURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTU9SRV9EQVRBKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTkVUTkFNRV9ERUxFVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fREFUQSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05PX1NZU1RFTV9SRVNPVVJDRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1BJUEVfQlVTWSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX1BJUEVfQ09OTkVDVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfU0VNX1RJTUVPVVQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfRkxBR19PVkVSTEFQUEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9HRU5FUklDX1JFQUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0dFTkVSSUNfV1JJVEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBHRU5FUklDX1JFQUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBHRU5FUklDX1dSSVRFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgSU5GSU5JVEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBOTVBXQUlUX1dBSVRfRk9SRVZFUik7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIE9QRU5fRVhJU1RJTkcpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19EVVBMRVgpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19JTkJPVU5EKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9SRUFETU9ERV9NRVNTQUdFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9UWVBFX01FU1NBR0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1dBSVQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0FMTF9BQ0NFU1MpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0RVUF9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVEFSVEZfVVNFU0hPV1dJTkRPVyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNUQVJURl9VU0VTVERIQU5ETEVTKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1REX0lOUFVUX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNURF9PVVRQVVRfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1REX0VSUk9SX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNUSUxMX0FDVElWRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNXX0hJREUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBXQUlUX09CSkVDVF8wKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgV0FJVF9USU1FT1VUKTsKKworICAgIFdJTkFQSV9DT05TVEFOVCgiaSIsIE5VTEwpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKaW5kZXggMmQ0ZWU3Mi4uMDRlYjY3YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwpAQCAtMjIsNyArMjIsNyBAQAogICogZnVuY3Rpb25zIGFyZW4ndCB2aXNpYmxlIHlldC4KICAqLwogc3RydWN0IGFycmF5ZGVzY3IgewotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgY2hhciB0eXBlY29kZTsKICAgICBpbnQgaXRlbXNpemU7CiAgICAgUHlPYmplY3QgKiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKICAgICBpbnQgKCpzZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CkBAIC0zNTYsNiArMzU2LDU5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworCitzdGF0aWMgUHlPYmplY3QgKgorcV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKCgoUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKK30KKworc3RhdGljIGludAorcV9zZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKK3sKKyAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJngpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGkgPj0gMCkKKyAgICAgICAgKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0gPSB4OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUVFfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKAorICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7Cit9CisKK3N0YXRpYyBpbnQKK1FRX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQoreworICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CisgICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQWV9MT05HX0xPTkcgeTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZSh2LCAiTDthcnJheSBpdGVtIG11c3QgYmUgaW50ZWdlciIsICZ5KSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHkgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgeCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpeTsKKyAgICB9CisKKyAgICBpZiAoaSA+PSAwKQorICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5T2JqZWN0ICoKIGZfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKIHsKQEAgLTQwNiw2ICs0NTksMTAgQEAKICAgICB7J0knLCBzaXplb2YoaW50KSwgSUlfZ2V0aXRlbSwgSUlfc2V0aXRlbSwgIkkiLCAxLCAwfSwKICAgICB7J2wnLCBzaXplb2YobG9uZyksIGxfZ2V0aXRlbSwgbF9zZXRpdGVtLCAibCIsIDEsIDF9LAogICAgIHsnTCcsIHNpemVvZihsb25nKSwgTExfZ2V0aXRlbSwgTExfc2V0aXRlbSwgIkwiLCAxLCAwfSwKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIHsncScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKKyAgICB7J1EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKKyNlbmRpZgogICAgIHsnZicsIHNpemVvZihmbG9hdCksIGZfZ2V0aXRlbSwgZl9zZXRpdGVtLCAiZiIsIDAsIDB9LAogICAgIHsnZCcsIHNpemVvZihkb3VibGUpLCBkX2dldGl0ZW0sIGRfc2V0aXRlbSwgImQiLCAwLCAwfSwKICAgICB7J1wwJywgMCwgMCwgMCwgMCwgMCwgMH0gLyogU2VudGluZWwgKi8KQEAgLTUxNCwxMCArNTcxLDggQEAKICAgICBQeV9zc2l6ZV90IGksIGs7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICghYXJyYXlfQ2hlY2sodikgfHwgIWFycmF5X0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFhcnJheV9DaGVjayh2KSB8fCAhYXJyYXlfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZhID0gKGFycmF5b2JqZWN0ICopdjsKICAgICB3YSA9IChhcnJheW9iamVjdCAqKXc7CkBAIC04NzYsNyArOTMxLDYgQEAKICAgICBpZiAoUHlfU0laRShzZWxmKSA+IDApIHsKICAgICAgICAgaWYgKG4gPCAwKQogICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgIGl0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgaWYgKChzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUgIT0gMCkgJiYKICAgICAgICAgICAgIChQeV9TSVpFKHNlbGYpID4gUFlfU1NJWkVfVF9NQVggLyBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUpKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTExOTEsNiArMTI0NSw3IEBACiAgICAgUHlPYmplY3QgKmYsICpiLCAqcmVzOwogICAgIFB5X3NzaXplX3QgaXRlbXNpemUgPSBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgUHlfc3NpemVfdCBuLCBuYnl0ZXM7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAgICAgaW50IG5vdF9lbm91Z2hfYnl0ZXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9uOmZyb21maWxlIiwgJmYsICZuKSkKQEAgLTEyMDIsNyArMTI1Nyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJyZWFkIiwgIm4iLCBuYnl0ZXMpOworICAgIGIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJuIiwgbmJ5dGVzKTsKICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTI1OSwxMiArMTMxNCwxNCBAQAogICAgICAgICBjaGFyKiBwdHIgPSBzZWxmLT5vYl9pdGVtICsgaSpCTE9DS1NJWkU7CiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IEJMT0NLU0laRTsKICAgICAgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmVzOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKICAgICAgICAgaWYgKGkqQkxPQ0tTSVpFICsgc2l6ZSA+IG5ieXRlcykKICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXMgLSBpKkJMT0NLU0laRTsKICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHB0ciwgc2l6ZSk7CiAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgIndyaXRlIiwgIk8iLCBieXRlcyk7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfd3JpdGUsICJPIiwgYnl0ZXMpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0NTYsNyArMTUxMyw3IEBACiB7CiAgICAgUHlfVU5JQ09ERSAqdXN0cjsKICAgICBQeV9zc2l6ZV90IG47Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ5MSw3ICsxNTQ4LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV90b3VuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwogICAgIGlmICgodHlwZWNvZGUgIT0gJ3UnKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTE2MDEsNyArMTY1OCw3IEBACiAgKiBiZSBmb3VuZC4KICAqLwogc3RhdGljIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZQotdHlwZWNvZGVfdG9fbWZvcm1hdF9jb2RlKGludCB0eXBlY29kZSkKK3R5cGVjb2RlX3RvX21mb3JtYXRfY29kZShjaGFyIHR5cGVjb2RlKQogewogI2lmZGVmIFdPUkRTX0JJR0VORElBTgogICAgIGNvbnN0IGludCBpc19iaWdfZW5kaWFuID0gMTsKQEAgLTE2NzEsNiArMTcyOCwxNiBAQAogICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKKyNpZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOgorICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGlzX3NpZ25lZCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ1EnOgorICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGlzX3NpZ25lZCA9IDA7CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIFVOS05PV05fRk9STUFUOwogICAgIH0KQEAgLTE3MDEsNyArMTc2OCw3IEBACiAgKiBOVUxMIGlzIHJldHVybmVkIHRvIGluZGljYXRlIGEgZmFpbHVyZS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW1ha2VfYXJyYXkoUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsIFB5X1VOSUNPREUgdHlwZWNvZGUsIFB5T2JqZWN0ICppdGVtcykKK21ha2VfYXJyYXkoUHlUeXBlT2JqZWN0ICphcnJheXR5cGUsIGNoYXIgdHlwZWNvZGUsIFB5T2JqZWN0ICppdGVtcykKIHsKICAgICBQeU9iamVjdCAqbmV3X2FyZ3M7CiAgICAgUHlPYmplY3QgKmFycmF5X29iajsKQEAgLTE3MTAsNyArMTc3Nyw3IEBACiAgICAgYXNzZXJ0KGFycmF5dHlwZSAhPSBOVUxMKTsKICAgICBhc3NlcnQoaXRlbXMgIT0gTlVMTCk7CiAKLSAgICB0eXBlY29kZV9vYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnR5cGVjb2RlLCAxKTsKKyAgICB0eXBlY29kZV9vYmogPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwodHlwZWNvZGUpOwogICAgIGlmICh0eXBlY29kZV9vYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDAsMTcgKzE4MDcsMTQgQEAKICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgUHlPYmplY3QgKmNvbnZlcnRlZF9pdGVtczsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCB0eXBlY29kZV9pbnQ7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBpbnQgdHlwZWNvZGU7CiAgICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZTsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86YXJyYXkuX2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGVfaW50LCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHlwZWNvZGUgPSAoUHlfVU5JQ09ERSl0eXBlY29kZV9pbnQ7Ci0KICAgICBpZiAoIVB5VHlwZV9DaGVjayhhcnJheXR5cGUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAiZmlyc3QgYXJndW1lbnQgbXVzdCBhIHR5cGUgb2JqZWN0LCBub3QgJS4yMDBzIiwKQEAgLTE3NjQsNyArMTgyOCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBmb3IgKGRlc2NyID0gZGVzY3JpcHRvcnM7IGRlc2NyLT50eXBlY29kZSAhPSAnXDAnOyBkZXNjcisrKSB7Ci0gICAgICAgIGlmIChkZXNjci0+dHlwZWNvZGUgPT0gdHlwZWNvZGUpCisgICAgICAgIGlmICgoaW50KWRlc2NyLT50eXBlY29kZSA9PSB0eXBlY29kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoZGVzY3ItPnR5cGVjb2RlID09ICdcMCcpIHsKQEAgLTE3ODYsOSArMTg1MCw5IEBACiAgICAgfQogCiAgICAgLyogRmFzdCBwYXRoOiBObyBkZWNvZGluZyBoYXMgdG8gYmUgZG9uZS4gKi8KLSAgICBpZiAobWZvcm1hdF9jb2RlID09IHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSh0eXBlY29kZSkgfHwKKyAgICBpZiAobWZvcm1hdF9jb2RlID09IHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSgoY2hhcil0eXBlY29kZSkgfHwKICAgICAgICAgbWZvcm1hdF9jb2RlID09IFVOS05PV05fRk9STUFUKSB7Ci0gICAgICAgIHJldHVybiBtYWtlX2FycmF5KGFycmF5dHlwZSwgdHlwZWNvZGUsIGl0ZW1zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VfYXJyYXkoYXJyYXl0eXBlLCAoY2hhcil0eXBlY29kZSwgaXRlbXMpOwogICAgIH0KIAogICAgIC8qIFNsb3cgcGF0aDogRGVjb2RlIHRoZSBieXRlIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG1hY2hpbmUKQEAgLTE5MzQsNyArMTk5OCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IG1ha2VfYXJyYXkoYXJyYXl0eXBlLCB0eXBlY29kZSwgY29udmVydGVkX2l0ZW1zKTsKKyAgICByZXN1bHQgPSBtYWtlX2FycmF5KGFycmF5dHlwZSwgKGNoYXIpdHlwZWNvZGUsIGNvbnZlcnRlZF9pdGVtcyk7CiAgICAgUHlfREVDUkVGKGNvbnZlcnRlZF9pdGVtcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE5NDksMTQgKzIwMTMsMTYgQEAKICAgICBpbnQgbWZvcm1hdF9jb2RlOwogICAgIHN0YXRpYyBQeU9iamVjdCAqYXJyYXlfcmVjb25zdHJ1Y3RvciA9IE5VTEw7CiAgICAgbG9uZyBwcm90b2NvbDsKKyAgICBfUHlfSURFTlRJRklFUihfYXJyYXlfcmVjb25zdHJ1Y3Rvcik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAgaWYgKGFycmF5X3JlY29uc3RydWN0b3IgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYXJyYXlfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJhcnJheSIpOwogICAgICAgICBpZiAoYXJyYXlfbW9kdWxlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXJyYXlfcmVjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoCisgICAgICAgIGFycmF5X3JlY29uc3RydWN0b3IgPSBfUHlPYmplY3RfR2V0QXR0cklkKAogICAgICAgICAgICAgYXJyYXlfbW9kdWxlLAotICAgICAgICAgICAgIl9hcnJheV9yZWNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAmUHlJZF9fYXJyYXlfcmVjb25zdHJ1Y3Rvcik7CiAgICAgICAgIFB5X0RFQ1JFRihhcnJheV9tb2R1bGUpOwogICAgICAgICBpZiAoYXJyYXlfcmVjb25zdHJ1Y3RvciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTcxLDcgKzIwMzcsNyBAQAogICAgIGlmIChwcm90b2NvbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKWFycmF5LCAiX19kaWN0X18iKTsKKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilhcnJheSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjAyMyw4ICsyMDg5LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheV9nZXRfdHlwZWNvZGUoYXJyYXlvYmplY3QgKmEsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgUHlfVU5JQ09ERSB0YyA9IGEtPm9iX2Rlc2NyLT50eXBlY29kZTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZ0YywgMSk7CisgICAgY2hhciB0eXBlY29kZSA9IGEtPm9iX2Rlc2NyLT50eXBlY29kZTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHR5cGVjb2RlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwOTgsNyArMjE2NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlfcmVwcihhcnJheW9iamVjdCAqYSkKIHsKLSAgICBQeV9VTklDT0RFIHR5cGVjb2RlOworICAgIGNoYXIgdHlwZWNvZGU7CiAgICAgUHlPYmplY3QgKnMsICp2ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjsKIApAQCAtMjEwNyw3ICsyMTczLDcgQEAKICAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJhcnJheSgnJWMnKSIsIChpbnQpdHlwZWNvZGUpOwogICAgIH0KLSAgICBpZiAoKHR5cGVjb2RlID09ICd1JykpCisgICAgaWYgKHR5cGVjb2RlID09ICd1JykKICAgICAgICAgdiA9IGFycmF5X3RvdW5pY29kZShhLCBOVUxMKTsKICAgICBlbHNlCiAgICAgICAgIHYgPSBhcnJheV90b2xpc3QoYSwgTlVMTCk7CkBAIC0yMzAyLDcgKzIzNjgsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyAoY3VyICsgMSkgKiBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICBsaW0gKiBpdGVtc2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY3VyID0gc3RhcnQgKyBzbGljZWxlbmd0aCAqIHN0ZXA7CisgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KVB5X1NJWkUoc2VsZikpIHsKICAgICAgICAgICAgIG1lbW1vdmUoc2VsZi0+b2JfaXRlbSArIChjdXItc2xpY2VsZW5ndGgpICogaXRlbXNpemUsCiAgICAgICAgICAgICAgICAgc2VsZi0+b2JfaXRlbSArIGN1ciAqIGl0ZW1zaXplLApAQCAtMjQ4Niw3ICsyNTUyLDE3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoaW5pdGlhbCAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhpbml0aWFsKSkgIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShpbml0aWFsKTsKKyAgICAgICAgICAgICAgICBQeV9VTklDT0RFICp1c3RyOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbjsKKworICAgICAgICAgICAgICAgIHVzdHIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGluaXRpYWwpOworICAgICAgICAgICAgICAgIGlmICh1c3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBuID0gUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUoaW5pdGlhbCk7CiAgICAgICAgICAgICAgICAgaWYgKG4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGFycmF5b2JqZWN0ICpzZWxmID0gKGFycmF5b2JqZWN0ICopYTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqaXRlbSA9IHNlbGYtPm9iX2l0ZW07CkBAIC0yNDk4LDcgKzI1NzQsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gPSBpdGVtOwogICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpID0gbiAvIHNpemVvZihQeV9VTklDT0RFKTsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGl0ZW0sIFB5VW5pY29kZV9BU19EQVRBKGluaXRpYWwpLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGl0ZW0sIHVzdHIsIG4pOwogICAgICAgICAgICAgICAgICAgICBzZWxmLT5hbGxvY2F0ZWQgPSBQeV9TSVpFKHNlbGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI1MTksNyArMjU5NSwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgcSwgUSwgZiBvciBkKSIpOworI2Vsc2UKICAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBmIG9yIGQpIik7CisjZW5kaWYKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMjU0MiwxMiArMjYyMiwxOCBAQAogICAgICdJJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICAyIFxuXAogICAgICdsJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICA0IFxuXAogICAgICdMJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICA0IFxuXAorICAgICdxJyAgICAgICAgIHNpZ25lZCBpbnRlZ2VyICAgICA4IChzZWUgbm90ZSkgXG5cCisgICAgJ1EnICAgICAgICAgdW5zaWduZWQgaW50ZWdlciAgIDggKHNlZSBub3RlKSBcblwKICAgICAnZicgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgNCBcblwKICAgICAnZCcgICAgICAgICBmbG9hdGluZyBwb2ludCAgICAgOCBcblwKIFxuXAogTk9URTogVGhlICd1JyB0eXBlY29kZSBjb3JyZXNwb25kcyB0byBQeXRob24ncyB1bmljb2RlIGNoYXJhY3Rlci4gT24gXG5cCiBuYXJyb3cgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcyBvbiB3aWRlIGJ1aWxkcyB0aGlzIGlzIDQtYnl0ZXMuXG5cCiBcblwKK05PVEU6IFRoZSAncScgYW5kICdRJyB0eXBlIGNvZGVzIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgcGxhdGZvcm0gXG5cCitDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzICdsb25nIGxvbmcnLCBvciwgb24gV2luZG93cywgXG5cCisnX19pbnQ2NCcuXG5cCitcblwKIFRoZSBjb25zdHJ1Y3RvciBpczpcblwKIFxuXAogYXJyYXkodHlwZWNvZGUgWywgaW5pdGlhbGl6ZXJdKSAtLSBjcmVhdGUgYSBuZXcgYXJyYXlcblwKQEAgLTI2OTIsNiArMjc3OCwzNCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlpdGVyX3JlZHVjZShhcnJheWl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPmFvLCBpdC0+aW5kZXgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlpdGVyX3NldHN0YXRlKGFycmF5aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKK3N0YXRpYyBQeU1ldGhvZERlZiBhcnJheWl0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlBcnJheUl0ZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiYXJyYXlpdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMjcyMSw3ICsyODM1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWFycmF5aXRlcl9uZXh0LCAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYXJyYXlpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KIH07CiAKIApAQCAtMjc1MSw5ICsyODY1LDkgQEAKIFB5SW5pdF9hcnJheSh2b2lkKQogewogICAgIFB5T2JqZWN0ICptOworICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcDsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKQEAgLTI3NzIsMTMgKzI4ODYsMTMgQEAKICAgICAgICAgc2l6ZSsrOwogICAgIH0KIAotICAgIHR5cGVjb2RlcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodHlwZWNvZGVzKTsKKyAgICBwID0gYnVmZmVyOwogICAgIGZvciAoZGVzY3IgPSBkZXNjcmlwdG9yczsgZGVzY3ItPnR5cGVjb2RlICE9ICdcMCc7IGRlc2NyKyspIHsKICAgICAgICAgKnArKyA9IChjaGFyKWRlc2NyLT50eXBlY29kZTsKICAgICB9CisgICAgdHlwZWNvZGVzID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKGJ1ZmZlciwgcCAtIGJ1ZmZlciwgTlVMTCk7CiAKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR5cGVjb2RlcyIsIChQeU9iamVjdCAqKXR5cGVjb2Rlcyk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0eXBlY29kZXMiLCB0eXBlY29kZXMpOwogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKaW5kZXggMWVlN2VhZC4uZjY4ZDgwNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCkBAIC0yMTEsNiArMjExLDE0IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK3N0YXRpYyB2b2lkCithdGV4aXRfZnJlZShQeU9iamVjdCAqbSkKK3sKKyAgICBhdGV4aXRtb2R1bGVfc3RhdGUgKm1vZHN0YXRlOworICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShtKTsKKyAgICBQeU1lbV9GcmVlKG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzKTsKK30KKwogUHlEb2NfU1RSVkFSKGF0ZXhpdF91bnJlZ2lzdGVyX19kb2NfXywKICJ1bnJlZ2lzdGVyKGZ1bmMpIC0+IE5vbmVcblwKIFxuXApAQCAtMjc1LDcgKzI4Myw3IEBACiAJTlVMTCwKIAlOVUxMLAogCU5VTEwsCi0JTlVMTAorCShmcmVlZnVuYylhdGV4aXRfZnJlZQogfTsKIAogUHlNT0RJTklUX0ZVTkMKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXVkaW9vcC5jIGIvTW9kdWxlcy9hdWRpb29wLmMKaW5kZXggOWFiNDgzNC4uMDM3NWU0ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdWRpb29wLmMKKysrIGIvTW9kdWxlcy9hdWRpb29wLmMKQEAgLTUxMyw3ICs1MTMsNiBAQAogCiAgICAgYmVzdF9yZXN1bHQgPSByZXN1bHQ7CiAgICAgYmVzdF9qID0gMDsKLSAgICBqID0gMDsKIAogICAgIGZvciAoIGo9MTsgajw9bGVuMS1sZW4yOyBqKyspIHsKICAgICAgICAgYWpfbTEgPSAoZG91YmxlKWNwMVtqLTFdOwpAQCAtNTk5LDcgKzU5OCw2IEBACiAKICAgICBiZXN0X3Jlc3VsdCA9IHJlc3VsdDsKICAgICBiZXN0X2ogPSAwOwotICAgIGogPSAwOwogCiAgICAgZm9yICggaj0xOyBqPD1sZW4xLWxlbjI7IGorKykgewogICAgICAgICBhal9tMSA9IChkb3VibGUpY3AxW2otMV07CkBAIC0xNDMzLDcgKzE0MzEsNiBAQAogICAgIGlmICggc3RhdGUgPT0gUHlfTm9uZSApIHsKICAgICAgICAgLyogRmlyc3QgdGltZSwgaXQgc2VlbXMuIFNldCBkZWZhdWx0cyAqLwogICAgICAgICB2YWxwcmVkID0gMDsKLSAgICAgICAgc3RlcCA9IDc7CiAgICAgICAgIGluZGV4ID0gMDsKICAgICB9IGVsc2UgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgImlpIiwgJnZhbHByZWQsICZpbmRleCkgKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE1MzQsNyArMTUzMSw2IEBACiAgICAgaWYgKCBzdGF0ZSA9PSBQeV9Ob25lICkgewogICAgICAgICAvKiBGaXJzdCB0aW1lLCBpdCBzZWVtcy4gU2V0IGRlZmF1bHRzICovCiAgICAgICAgIHZhbHByZWQgPSAwOwotICAgICAgICBzdGVwID0gNzsKICAgICAgICAgaW5kZXggPSAwOwogICAgIH0gZWxzZSBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiaWkiLCAmdmFscHJlZCwgJmluZGV4KSApCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDE5NjgxYjQuLmFkNWUxYjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTE4Myw2ICsxODMsNDQgQEAKICAgICAweDZlMTcsIDB4N2UzNiwgMHg0ZTU1LCAweDVlNzQsIDB4MmU5MywgMHgzZWIyLCAweDBlZDEsIDB4MWVmMCwKIH07CiAKK3N0YXRpYyBpbnQKK2FzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICpidWYpCit7CisgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYnVmKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKGFyZykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgc2hvdWxkIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoYXJnKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgIGJ1Zi0+YnVmID0gKHZvaWQgKikgUHlVbmljb2RlXzFCWVRFX0RBVEEoYXJnKTsKKyAgICAgICAgYnVmLT5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpOworICAgICAgICBidWYtPm9iaiA9IE5VTEw7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYnl0ZXMsIGJ1ZmZlciBvciBBU0NJSSBzdHJpbmcsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJVIiLCBQeV9UWVBFKGFyZykpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKCFQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYnVmLCAnQycpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgY29udGlndW91cyBidWZmZXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJVIiLCBQeV9UWVBFKGFyZykpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CisKKwogUHlEb2NfU1RSVkFSKGRvY19hMmJfdXUsICIoYXNjaWkpIC0+IGJpbi4gRGVjb2RlIGEgbGluZSBvZiB1dWVuY29kZWQgZGF0YSIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk2LDcgKzIzNCw3IEBACiAgICAgUHlPYmplY3QgKnJ2OwogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogCi0gICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6YTJiX3V1IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl91dSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXNjaWkpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNjaWlfZGF0YSA9IHBhc2NpaS5idWY7CiAgICAgYXNjaWlfbGVuID0gcGFzY2lpLmxlbjsKQEAgLTM3MCw3ICs0MDgsNyBAQAogICAgIFB5X3NzaXplX3QgYXNjaWlfbGVuLCBiaW5fbGVuOwogICAgIGludCBxdWFkX3BvcyA9IDA7CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfYmFzZTY0IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGFzY2lpX2xlbiA9IHBhc2NpaS5sZW47CkBAIC01NDYsNyArNTg0LDcgQEAKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgZG9uZSA9IDA7CiAKLSAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfaHF4IiwgJnBhc2NpaSkgKQorICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGxlbiA9IHBhc2NpaS5sZW47CkBAIC0xMDc4LDEzICsxMTE2LDExIEBACiAKICAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLwogICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChhcmdidWZbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgcmV0YnVmW2orK10gPSBjOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICByZXRidWZbaisrXSA9IGM7CisgICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYXJnKTsKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTEyMSw3ICsxMTU3LDcgQEAKICAgICBjaGFyKiByZXRidWY7CiAgICAgUHlfc3NpemVfdCBpLCBqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjphMmJfaGV4IiwgJnBhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6YTJiX2hleCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZwYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXJnYnVmID0gcGFyZy5idWY7CiAgICAgYXJnbGVuID0gcGFyZy5sZW47CkBAIC0xMTk5LDggKzEyMzUsOCBAQAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGkiLCBrd2xpc3QsICZwZGF0YSwKLSAgICAgICAgICAmaGVhZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpOmEyYl9xcCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGRhdGEsICZoZWFkZXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkYXRhID0gcGRhdGEuYnVmOwogICAgIGRhdGFsZW4gPSBwZGF0YS5sZW47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9iejJtb2R1bGUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3MWU4ZC4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL2J6Mm1vZHVsZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjE2OSArMCwwIEBACi0vKgotCi1weXRob24tYnoyIC0gcHl0aG9uIGJ6MiBsaWJyYXJ5IGludGVyZmFjZQotCi1Db3B5cmlnaHQgKGMpIDIwMDIgIEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+Ci1Db3B5cmlnaHQgKGMpIDIwMDIgIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkCi0KLSovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGJ6bGliLmg+Ci0jaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotI2luY2x1ZGUgInB5dGhyZWFkLmgiCi0jZW5kaWYKLQotc3RhdGljIGNoYXIgX19hdXRob3JfX1tdID0KLSJUaGUgYnoyIHB5dGhvbiBtb2R1bGUgd2FzIHdyaXR0ZW4gYnk6XG5cCi1cblwKLSAgICBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPlxuXAotIjsKLQotLyogT3VyIHZlcnkgb3duIG9mZl90LWxpa2UgdHlwZSwgNjQtYml0IGlmIHBvc3NpYmxlICovCi0vKiBjb3BpZWQgZnJvbSBPYmplY3RzL2ZpbGVvYmplY3QuYyAqLwotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi10eXBlZGVmIG9mZl90IFB5X29mZl90OwotI2VsaWYgU0laRU9GX09GRl9UID49IDgKLXR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7Ci0jZWxpZiBTSVpFT0ZfRlBPU19UID49IDgKLXR5cGVkZWYgZnBvc190IFB5X29mZl90OwotI2Vsc2UKLSNlcnJvciAiTGFyZ2UgZmlsZSBzdXBwb3J0LCBidXQgbmVpdGhlciBvZmZfdCBub3IgZnBvc190IGlzIGxhcmdlIGVub3VnaC4iCi0jZW5kaWYKLQotI2RlZmluZSBCVUYodikgUHlCeXRlc19BU19TVFJJTkcodikKLQotI2RlZmluZSBNT0RFX0NMT1NFRCAgIDAKLSNkZWZpbmUgTU9ERV9SRUFEICAgICAxCi0jZGVmaW5lIE1PREVfUkVBRF9FT0YgMgotI2RlZmluZSBNT0RFX1dSSVRFICAgIDMKLQotI2RlZmluZSBCWjJGaWxlT2JqZWN0X0NoZWNrKHYpICAoUHlfVFlQRSh2KSA9PSAmQloyRmlsZV9UeXBlKQotCi0KLSNpZmRlZiBCWl9DT05GSUdfRVJST1IKLQotI2lmIFNJWkVPRl9MT05HID49IDgKLSNkZWZpbmUgQlpTX1RPVEFMX09VVChienMpIFwKLSAgICAoKChsb25nKWJ6cy0+dG90YWxfb3V0X2hpMzIgPDwgMzIpICsgYnpzLT50b3RhbF9vdXRfbG8zMikKLSNlbGlmIFNJWkVPRl9MT05HX0xPTkcgPj0gOAotI2RlZmluZSBCWlNfVE9UQUxfT1VUKGJ6cykgXAotICAgICgoKFBZX0xPTkdfTE9ORylienMtPnRvdGFsX291dF9oaTMyIDw8IDMyKSArIGJ6cy0+dG90YWxfb3V0X2xvMzIpCi0jZWxzZQotI2RlZmluZSBCWlNfVE9UQUxfT1VUKGJ6cykgXAotICAgIGJ6cy0+dG90YWxfb3V0X2xvMzIKLSNlbmRpZgotCi0jZWxzZSAvKiAhIEJaX0NPTkZJR19FUlJPUiAqLwotCi0jZGVmaW5lIEJaMl9ielJlYWQgYnpSZWFkCi0jZGVmaW5lIEJaMl9ielJlYWRPcGVuIGJ6UmVhZE9wZW4KLSNkZWZpbmUgQloyX2J6UmVhZENsb3NlIGJ6UmVhZENsb3NlCi0jZGVmaW5lIEJaMl9ieldyaXRlIGJ6V3JpdGUKLSNkZWZpbmUgQloyX2J6V3JpdGVPcGVuIGJ6V3JpdGVPcGVuCi0jZGVmaW5lIEJaMl9ieldyaXRlQ2xvc2UgYnpXcml0ZUNsb3NlCi0jZGVmaW5lIEJaMl9iekNvbXByZXNzIGJ6Q29tcHJlc3MKLSNkZWZpbmUgQloyX2J6Q29tcHJlc3NJbml0IGJ6Q29tcHJlc3NJbml0Ci0jZGVmaW5lIEJaMl9iekNvbXByZXNzRW5kIGJ6Q29tcHJlc3NFbmQKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzcyBiekRlY29tcHJlc3MKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0luaXQgYnpEZWNvbXByZXNzSW5pdAotI2RlZmluZSBCWjJfYnpEZWNvbXByZXNzRW5kIGJ6RGVjb21wcmVzc0VuZAotCi0jZGVmaW5lIEJaU19UT1RBTF9PVVQoYnpzKSBienMtPnRvdGFsX291dAotCi0jZW5kaWYgLyogISBCWl9DT05GSUdfRVJST1IgKi8KLQotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCi0gICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2sob2JqLT5sb2NrLCAwKSkgeyBcCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAotICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sob2JqLT5sb2NrLCAxKTsgXAotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUyBcCi0gICAgfSB9IHdoaWxlKDApCi0jZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhvYmotPmxvY2spCi0jZWxzZQotI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKQotI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKQotI2VuZGlmCi0KLS8qIEJpdHMgaW4gZl9uZXdsaW5ldHlwZXMgKi8KLSNkZWZpbmUgTkVXTElORV9VTktOT1dOIDAgICAgICAgLyogTm8gbmV3bGluZSBzZWVuLCB5ZXQgKi8KLSNkZWZpbmUgTkVXTElORV9DUiAxICAgICAgICAgICAgLyogXHIgbmV3bGluZSBzZWVuICovCi0jZGVmaW5lIE5FV0xJTkVfTEYgMiAgICAgICAgICAgIC8qIFxuIG5ld2xpbmUgc2VlbiAqLwotI2RlZmluZSBORVdMSU5FX0NSTEYgNCAgICAgICAgICAvKiBcclxuIG5ld2xpbmUgc2VlbiAqLwotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFN0cnVjdHVyZSBkZWZpbml0aW9ucy4gKi8KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBGSUxFICpyYXdmcDsKLQotICAgIGNoYXIqIGZfYnVmOyAgICAgICAgICAgICAgICAvKiBBbGxvY2F0ZWQgcmVhZGFoZWFkIGJ1ZmZlciAqLwotICAgIGNoYXIqIGZfYnVmZW5kOyAgICAgICAgICAgICAvKiBQb2ludHMgYWZ0ZXIgbGFzdCBvY2N1cGllZCBwb3NpdGlvbiAqLwotICAgIGNoYXIqIGZfYnVmcHRyOyAgICAgICAgICAgICAvKiBDdXJyZW50IGJ1ZmZlciBwb3NpdGlvbiAqLwotCi0gICAgQlpGSUxFICpmcDsKLSAgICBpbnQgbW9kZTsKLSAgICBQeV9vZmZfdCBwb3M7Ci0gICAgUHlfb2ZmX3Qgc2l6ZTsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwotI2VuZGlmCi19IEJaMkZpbGVPYmplY3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgYnpfc3RyZWFtIGJ6czsKLSAgICBpbnQgcnVubmluZzsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwotI2VuZGlmCi19IEJaMkNvbXBPYmplY3Q7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgYnpfc3RyZWFtIGJ6czsKLSAgICBpbnQgcnVubmluZzsKLSAgICBQeU9iamVjdCAqdW51c2VkX2RhdGE7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKLSNlbmRpZgotfSBCWjJEZWNvbXBPYmplY3Q7Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogVXRpbGl0eSBmdW5jdGlvbnMuICovCi0KLS8qIFJlZnVzZSByZWd1bGFyIEkvTyBpZiB0aGVyZSdzIGRhdGEgaW4gdGhlIGl0ZXJhdGlvbi1idWZmZXIuCi0gKiBNaXhpbmcgdGhlbSB3b3VsZCBjYXVzZSBkYXRhIHRvIGFycml2ZSBvdXQgb2Ygb3JkZXIsIGFzIHRoZSByZWFkKgotICogbWV0aG9kcyBkb24ndCB1c2UgdGhlIGl0ZXJhdGlvbiBidWZmZXIuICovCi1zdGF0aWMgaW50Ci1jaGVja19pdGVyYnVmZmVyZWQoQloyRmlsZU9iamVjdCAqZikKLXsKLSAgICBpZiAoZi0+Zl9idWYgIT0gTlVMTCAmJgotICAgICAgICAoZi0+Zl9idWZlbmQgLSBmLT5mX2J1ZnB0cikgPiAwICYmCi0gICAgICAgIGYtPmZfYnVmWzBdICE9ICdcMCcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAiTWl4aW5nIGl0ZXJhdGlvbiBhbmQgcmVhZCBtZXRob2RzIHdvdWxkIGxvc2UgZGF0YSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci1VdGlsX0NhdGNoQloyRXJyb3IoaW50IGJ6ZXJyb3IpCi17Ci0gICAgaW50IHJldCA9IDA7Ci0gICAgc3dpdGNoKGJ6ZXJyb3IpIHsKLSAgICAgICAgY2FzZSBCWl9PSzoKLSAgICAgICAgY2FzZSBCWl9TVFJFQU1fRU5EOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSNpZmRlZiBCWl9DT05GSUdfRVJST1IKLSAgICAgICAgY2FzZSBCWl9DT05GSUdfRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBiejIgbGlicmFyeSB3YXMgbm90IGNvbXBpbGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ycmVjdGx5Iik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgICAgICBjYXNlIEJaX1BBUkFNX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBiejIgbGlicmFyeSBoYXMgcmVjZWl2ZWQgd3JvbmcgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9NRU1fRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUjoKLSAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SX01BR0lDOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJpbnZhbGlkIGRhdGEgc3RyZWFtIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9JT19FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAidW5rbm93biBJTyBlcnJvciIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfVU5FWFBFQ1RFRF9FT0Y6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9naWNhbCBlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZCIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQlpfU0VRVUVOQ0VfRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBzZXF1ZW5jZSBvZiBiejIgbGlicmFyeSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmRzIHVzZWQiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotI2lmIEJVRlNJWiA8IDgxOTIKLSNkZWZpbmUgU01BTExDSFVOSyA4MTkyCi0jZWxzZQotI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgotI2VuZGlmCi0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6bmV3X2J1ZmZlcnNpemUoKS4gKi8KLXN0YXRpYyBzaXplX3QKLVV0aWxfTmV3QnVmZmVyU2l6ZShzaXplX3QgY3VycmVudHNpemUpCi17Ci0gICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAotICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKLSAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLwotICAgIHJldHVybiBjdXJyZW50c2l6ZSArIChjdXJyZW50c2l6ZSA+PiAzKSArIDY7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6Z2V0X2xpbmUoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1VdGlsX0dldExpbmUoQloyRmlsZU9iamVjdCAqZiwgaW50IG4pCi17Ci0gICAgY2hhciBjOwotICAgIGNoYXIgKmJ1ZiwgKmVuZDsKLSAgICBzaXplX3QgdG90YWxfdl9zaXplOyAgICAgICAgLyogdG90YWwgIyBvZiBzbG90cyBpbiBidWZmZXIgKi8KLSAgICBzaXplX3QgdXNlZF92X3NpemU7ICAgICAgICAgLyogIyB1c2VkIHNsb3RzIGluIGJ1ZmZlciAqLwotICAgIHNpemVfdCBpbmNyZW1lbnQ7ICAgICAgIC8qIGFtb3VudCB0byBpbmNyZW1lbnQgdGhlIGJ1ZmZlciAqLwotICAgIFB5T2JqZWN0ICp2OwotICAgIGludCBiemVycm9yOwotICAgIGludCBieXRlc19yZWFkOwotCi0gICAgdG90YWxfdl9zaXplID0gbiA+IDAgPyBuIDogMTAwOwotICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgdG90YWxfdl9zaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ1ZiA9IEJVRih2KTsKLSAgICBlbmQgPSBidWYgKyB0b3RhbF92X3NpemU7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZG8gewotICAgICAgICAgICAgYnl0ZXNfcmVhZCA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIGYtPmZwLCAmYywgMSk7Ci0gICAgICAgICAgICBmLT5wb3MrKzsKLSAgICAgICAgICAgIGlmIChieXRlc19yZWFkID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqYnVmKysgPSBjOwotICAgICAgICB9IHdoaWxlIChiemVycm9yID09IEJaX09LICYmIGMgIT0gJ1xuJyAmJiBidWYgIT0gZW5kKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgZi0+c2l6ZSA9IGYtPnBvczsKLSAgICAgICAgICAgIGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPT0gJ1xuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKiBNdXN0IGJlIGJlY2F1c2UgYnVmID09IGVuZCAqLwotICAgICAgICBpZiAobiA+IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdXNlZF92X3NpemUgPSB0b3RhbF92X3NpemU7Ci0gICAgICAgIGluY3JlbWVudCA9IHRvdGFsX3Zfc2l6ZSA+PiAyOyAvKiBtaWxkIGV4cG9uZW50aWFsIGdyb3d0aCAqLwotICAgICAgICB0b3RhbF92X3NpemUgKz0gaW5jcmVtZW50OwotICAgICAgICBpZiAodG90YWxfdl9zaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgImxpbmUgaXMgbG9uZ2VyIHRoYW4gYSBQeXRob24gc3RyaW5nIGNhbiBob2xkIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCB0b3RhbF92X3NpemUpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmID0gQlVGKHYpICsgdXNlZF92X3NpemU7Ci0gICAgICAgIGVuZCA9IEJVRih2KSArIHRvdGFsX3Zfc2l6ZTsKLSAgICB9Ci0KLSAgICB1c2VkX3Zfc2l6ZSA9IGJ1ZiAtIEJVRih2KTsKLSAgICBpZiAodXNlZF92X3NpemUgIT0gdG90YWxfdl9zaXplKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIHVzZWRfdl9zaXplKSA8IDApIHsKLSAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB2OwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmRyb3BfcmVhZGFoZWFkKCkuICovCi1zdGF0aWMgdm9pZAotVXRpbF9Ecm9wUmVhZEFoZWFkKEJaMkZpbGVPYmplY3QgKmYpCi17Ci0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShmLT5mX2J1Zik7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsKLSAgICB9Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6cmVhZGFoZWFkKCkuICovCi1zdGF0aWMgaW50Ci1VdGlsX1JlYWRBaGVhZChCWjJGaWxlT2JqZWN0ICpmLCBpbnQgYnVmc2l6ZSkKLXsKLSAgICBpbnQgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgaWYoKGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHIpID49IDEpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgIH0KLSAgICBpZiAoZi0+bW9kZSA9PSBNT0RFX1JFQURfRU9GKSB7Ci0gICAgICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgICAgIGYtPmZfYnVmZW5kID0gZi0+Zl9idWY7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoKGYtPmZfYnVmID0gUHlNZW1fTWFsbG9jKGJ1ZnNpemUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIGYtPmZwLCBmLT5mX2J1ZiwgYnVmc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgZi0+c2l6ZSA9IGYtPnBvczsKLSAgICAgICAgZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgVXRpbF9Ecm9wUmVhZEFoZWFkKGYpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgZi0+Zl9idWZlbmQgPSBmLT5mX2J1ZiArIGNodW5rc2l6ZTsKLSAgICByZXR1cm4gMDsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzCi0gKiBmaWxlb2JqZWN0LmM6cmVhZGFoZWFkX2dldF9saW5lX3NraXAoKS4gKi8KLXN0YXRpYyBQeUJ5dGVzT2JqZWN0ICoKLVV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoQloyRmlsZU9iamVjdCAqZiwgaW50IHNraXAsIGludCBidWZzaXplKQotewotICAgIFB5Qnl0ZXNPYmplY3QqIHM7Ci0gICAgY2hhciAqYnVmcHRyOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgbGVuOwotCi0gICAgaWYgKGYtPmZfYnVmID09IE5VTEwpCi0gICAgICAgIGlmIChVdGlsX1JlYWRBaGVhZChmLCBidWZzaXplKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGxlbiA9IGYtPmZfYnVmZW5kIC0gZi0+Zl9idWZwdHI7Ci0gICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2tpcCk7Ci0gICAgYnVmcHRyID0gbWVtY2hyKGYtPmZfYnVmcHRyLCAnXG4nLCBsZW4pOwotICAgIGlmIChidWZwdHIgIT0gTlVMTCkgewotICAgICAgICBidWZwdHIrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ291bnQgdGhlICdcbicgKi8KLSAgICAgICAgbGVuID0gYnVmcHRyIC0gZi0+Zl9idWZwdHI7Ci0gICAgICAgIHMgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBza2lwK2xlbik7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKHMpK3NraXAsIGYtPmZfYnVmcHRyLCBsZW4pOwotICAgICAgICBmLT5mX2J1ZnB0ciA9IGJ1ZnB0cjsKLSAgICAgICAgaWYgKGJ1ZnB0ciA9PSBmLT5mX2J1ZmVuZCkKLSAgICAgICAgICAgIFV0aWxfRHJvcFJlYWRBaGVhZChmKTsKLSAgICB9IGVsc2UgewotICAgICAgICBidWZwdHIgPSBmLT5mX2J1ZnB0cjsKLSAgICAgICAgYnVmID0gZi0+Zl9idWY7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsgICAgICAgICAgICAgICAgLyogRm9yY2UgbmV3IHJlYWRhaGVhZCBidWZmZXIgKi8KLSAgICAgICAgcyA9IFV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoZiwgc2tpcCtsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUgKyAoYnVmc2l6ZT4+MikpOwotICAgICAgICBpZiAocyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocykrc2tpcCwgYnVmcHRyLCBsZW4pOwotICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7Ci0gICAgfQotICAgIHJldHVybiBzOwotfQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyRmlsZS4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZF9fZG9jX18sCi0icmVhZChbc2l6ZV0pIC0+IHN0cmluZ1xuXAotXG5cCi1SZWFkIGF0IG1vc3Qgc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHJldHVybmVkIGFzIGEgc3RyaW5nLiBJZiB0aGUgc2l6ZVxuXAotYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfcmVhZCgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfcmVhZChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIGJ5dGVzcmVxdWVzdGVkID0gLTE7Ci0gICAgc2l6ZV90IGJ5dGVzcmVhZCwgYnVmZmVyc2l6ZSwgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bDpyZWFkIiwgJmJ5dGVzcmVxdWVzdGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3IgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHJlZnVzZSB0byBtaXggd2l0aCBmLm5leHQoKSAqLwotICAgIGlmIChjaGVja19pdGVyYnVmZmVyZWQoc2VsZikpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmIChieXRlc3JlcXVlc3RlZCA8IDApCi0gICAgICAgIGJ1ZmZlcnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoKHNpemVfdCkwKTsKLSAgICBlbHNlCi0gICAgICAgIGJ1ZmZlcnNpemUgPSBieXRlc3JlcXVlc3RlZDsKLSAgICBpZiAoYnVmZmVyc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVxdWVzdGVkIG51bWJlciBvZiBieXRlcyBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAibW9yZSB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBidWZmZXJzaXplKTsKLSAgICBpZiAocmV0ID09IE5VTEwgfHwgYnVmZmVyc2l6ZSA9PSAwKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgYnl0ZXNyZWFkID0gMDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUYocmV0KStieXRlc3JlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyc2l6ZS1ieXRlc3JlYWQpOwotICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldCA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzcmVxdWVzdGVkIDwgMCkgewotICAgICAgICAgICAgYnVmZmVyc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZmZXJzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmZmVyc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoYnl0ZXNyZWFkICE9IGJ1ZmZlcnNpemUpIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBieXRlc3JlYWQpIDwgMCkgewotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZGxpbmVfX2RvY19fLAotInJlYWRsaW5lKFtzaXplXSkgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgc3RyaW5nLCByZXRhaW5pbmcgbmV3bGluZS5cblwKLUEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgd2lsbCBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG9cblwKLXJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5XG5cCi1zdHJpbmcgYXQgRU9GLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWRsaW5lKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGludCBzaXplaGludCA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkbGluZSIsICZzaXplaGludCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICAvKiByZWZ1c2UgdG8gbWl4IHdpdGggZi5uZXh0KCkgKi8KLSAgICBpZiAoY2hlY2tfaXRlcmJ1ZmZlcmVkKHNlbGYpKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBpZiAoc2l6ZWhpbnQgPT0gMCkKLSAgICAgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBVdGlsX0dldExpbmUoc2VsZiwgKHNpemVoaW50IDwgMCkgPyAwIDogc2l6ZWhpbnQpOwotCi1jbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9yZWFkbGluZXNfX2RvY19fLAotInJlYWRsaW5lcyhbc2l6ZV0pIC0+IGxpc3RcblwKLVxuXAotQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgbGluZXMgcmVhZC5cblwKLVRoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlXG5cCi10b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV9yZWFkbGluZXMoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWRsaW5lcyhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBsb25nIHNpemVoaW50ID0gMDsKLSAgICBQeU9iamVjdCAqbGlzdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxpbmU7Ci0gICAgY2hhciBzbWFsbF9idWZmZXJbU01BTExDSFVOS107Ci0gICAgY2hhciAqYnVmZmVyID0gc21hbGxfYnVmZmVyOwotICAgIHNpemVfdCBidWZmZXJzaXplID0gU01BTExDSFVOSzsKLSAgICBQeU9iamVjdCAqYmlnX2J1ZmZlciA9IE5VTEw7Ci0gICAgc2l6ZV90IG5maWxsZWQgPSAwOwotICAgIHNpemVfdCBucmVhZDsKLSAgICBzaXplX3QgdG90YWxyZWFkID0gMDsKLSAgICBjaGFyICpwLCAqcSwgKmVuZDsKLSAgICBpbnQgZXJyOwotICAgIGludCBzaG9ydHJlYWQgPSAwOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bDpyZWFkbGluZXMiLCAmc2l6ZWhpbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgLyogcmVmdXNlIHRvIG1peCB3aXRoIGYubmV4dCgpICovCi0gICAgaWYgKGNoZWNrX2l0ZXJidWZmZXJlZChzZWxmKSkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIG5yZWFkID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIrbmZpbGxlZCwgYnVmZmVyc2l6ZS1uZmlsbGVkKTsKLSAgICAgICAgc2VsZi0+cG9zICs9IG5yZWFkOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBpZiAobnJlYWQgPT0gMCkgewotICAgICAgICAgICAgICAgIHNpemVoaW50ID0gMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNob3J0cmVhZCA9IDE7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgIGVycm9yOgotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgdG90YWxyZWFkICs9IG5yZWFkOwotICAgICAgICBwID0gbWVtY2hyKGJ1ZmZlcituZmlsbGVkLCAnXG4nLCBucmVhZCk7Ci0gICAgICAgIGlmICghc2hvcnRyZWFkICYmIHAgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogTmVlZCBhIGxhcmdlciBidWZmZXIgdG8gZml0IHRoaXMgbGluZSAqLwotICAgICAgICAgICAgbmZpbGxlZCArPSBucmVhZDsKLSAgICAgICAgICAgIGJ1ZmZlcnNpemUgKj0gMjsKLSAgICAgICAgICAgIGlmIChidWZmZXJzaXplID4gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICJsaW5lIGlzIGxvbmdlciB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYmlnX2J1ZmZlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyogQ3JlYXRlIHRoZSBiaWcgYnVmZmVyICovCi0gICAgICAgICAgICAgICAgYmlnX2J1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgIE5VTEwsIGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgICAgIGlmIChiaWdfYnVmZmVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19BU19TVFJJTkcoYmlnX2J1ZmZlcik7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc21hbGxfYnVmZmVyLCBuZmlsbGVkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8qIEdyb3cgdGhlIGJpZyBidWZmZXIgKi8KLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZiaWdfYnVmZmVyLCBidWZmZXJzaXplKSA8IDApewotICAgICAgICAgICAgICAgICAgICBiaWdfYnVmZmVyID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnVmZmVyID0gUHlCeXRlc19BU19TVFJJTkcoYmlnX2J1ZmZlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBlbmQgPSBidWZmZXIrbmZpbGxlZCtucmVhZDsKLSAgICAgICAgcSA9IGJ1ZmZlcjsKLSAgICAgICAgd2hpbGUgKHAgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogUHJvY2VzcyBjb21wbGV0ZSBsaW5lcyAqLwotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocSwgcC1xKTsKLSAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQobGlzdCwgbGluZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgICAgICBpZiAoZXJyICE9IDApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIHEgPSBwOwotICAgICAgICAgICAgcCA9IG1lbWNocihxLCAnXG4nLCBlbmQtcSk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogTW92ZSB0aGUgcmVtYWluaW5nIGluY29tcGxldGUgbGluZSB0byB0aGUgc3RhcnQgKi8KLSAgICAgICAgbmZpbGxlZCA9IGVuZC1xOwotICAgICAgICBtZW1tb3ZlKGJ1ZmZlciwgcSwgbmZpbGxlZCk7Ci0gICAgICAgIGlmIChzaXplaGludCA+IDApCi0gICAgICAgICAgICBpZiAodG90YWxyZWFkID49IChzaXplX3Qpc2l6ZWhpbnQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChzaG9ydHJlYWQpIHsKLSAgICAgICAgICAgIHNpemVoaW50ID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuZmlsbGVkICE9IDApIHsKLSAgICAgICAgLyogUGFydGlhbCBsYXN0IGxpbmUgKi8KLSAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBuZmlsbGVkKTsKLSAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChzaXplaGludCA+IDApIHsKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gY29tcGxldGUgdGhlIGxhc3QgbGluZSAqLwotICAgICAgICAgICAgUHlPYmplY3QgKnJlc3QgPSBVdGlsX0dldExpbmUoc2VsZiwgMCk7Ci0gICAgICAgICAgICBpZiAocmVzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmbGluZSwgcmVzdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdCk7Ci0gICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChsaXN0LCBsaW5lKTsKLSAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICBpZiAoZXJyICE9IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICBjbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBpZiAoYmlnX2J1ZmZlcikgewotICAgICAgICBQeV9ERUNSRUYoYmlnX2J1ZmZlcik7Ci0gICAgfQotICAgIHJldHVybiBsaXN0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV93cml0ZV9fZG9jX18sCi0id3JpdGUoZGF0YSkgLT4gTm9uZVxuXAotXG5cCi1Xcml0ZSB0aGUgJ2RhdGEnIHN0cmluZyB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywgY2xvc2UoKSBtYXlcblwKLWJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YSB3cml0dGVuLlxuXAotIik7Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncyBmaWxlb2JqZWN0LmM6ZmlsZV93cml0ZSgpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfd3JpdGUoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJnBidWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBwYnVmLmJ1ZjsKLSAgICBsZW4gPSBwYnVmLmxlbjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3Igd3JpdGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBCWjJfYnpXcml0ZSAoJmJ6ZXJyb3IsIHNlbGYtPmZwLCBidWYsIGxlbik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLWNsZWFudXA6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3dyaXRlbGluZXNfX2RvY19fLAotIndyaXRlbGluZXMoc2VxdWVuY2Vfb2Zfc3RyaW5ncykgLT4gTm9uZVxuXAotXG5cCi1Xcml0ZSB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3RcblwKLWFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIHN0cmluZ3MuIFRoaXMgaXNcblwKLWVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvciBlYWNoIHN0cmluZy5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfd3JpdGVsaW5lcygpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfd3JpdGVsaW5lcyhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VxKQotewotI2RlZmluZSBDSFVOS1NJWkUgMTAwMAotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaXRlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxpbmU7Ci0gICAgaW50IGksIGosIGluZGV4LCBsZW4sIGlzbGlzdDsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHdyaXRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgaXNsaXN0ID0gUHlMaXN0X0NoZWNrKHNlcSk7Ci0gICAgaWYgICghaXNsaXN0KSB7Ci0gICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKHNlcSk7Ci0gICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIndyaXRlbGluZXMoKSByZXF1aXJlcyBhbiBpdGVyYWJsZSBhcmd1bWVudCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBsaXN0ID0gUHlMaXN0X05ldyhDSFVOS1NJWkUpOwotICAgICAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICAvKiBTdHJhdGVneTogc2x1cnAgQ0hVTktTSVpFIGxpbmVzIGludG8gYSBwcml2YXRlIGxpc3QsCi0gICAgICAgY2hlY2tpbmcgdGhhdCB0aGV5IGFyZSBhbGwgc3RyaW5ncywgdGhlbiB3cml0ZSB0aGF0IGxpc3QKLSAgICAgICB3aXRob3V0IGhvbGRpbmcgdGhlIGludGVycHJldGVyIGxvY2ssIHRoZW4gY29tZSBiYWNrIGZvciBtb3JlLiAqLwotICAgIGZvciAoaW5kZXggPSAwOyA7IGluZGV4ICs9IENIVU5LU0laRSkgewotICAgICAgICBpZiAoaXNsaXN0KSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IFB5TGlzdF9HZXRTbGljZShzZXEsIGluZGV4LCBpbmRleCtDSFVOS1NJWkUpOwotICAgICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaiA9IFB5TGlzdF9HRVRfU0laRShsaXN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBDSFVOS1NJWkU7IGorKykgewotICAgICAgICAgICAgICAgIGxpbmUgPSBQeUl0ZXJfTmV4dChpdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5TGlzdF9TZXRJdGVtKGxpc3QsIGosIGxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChqID09IDApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvKiBDaGVjayB0aGF0IGFsbCBlbnRyaWVzIGFyZSBpbmRlZWQgYnl0ZSBzdHJpbmdzLiBJZiBub3QsCi0gICAgICAgICAgIGFwcGx5IHRoZSBzYW1lIHJ1bGVzIGFzIGZvciBmaWxlLndyaXRlKCkgYW5kCi0gICAgICAgICAgIGNvbnZlcnQgdGhlIHJldHMgdG8gc3RyaW5ncy4gVGhpcyBpcyBzbG93LCBidXQKLSAgICAgICAgICAgc2VlbXMgdG8gYmUgdGhlIG9ubHkgd2F5IHNpbmNlIGFsbCBjb252ZXJzaW9uIEFQSXMKLSAgICAgICAgICAgY291bGQgcG90ZW50aWFsbHkgZXhlY3V0ZSBQeXRob24gY29kZS4gKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGo7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgaSk7Ci0gICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpidWZmZXI7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcih2LCAmYnVmZmVyLCAmbGVuKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlbGluZXMoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSBzZXF1ZW5jZSBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgb2JqZWN0cyIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBsaW5lID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIGxpbmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2luY2Ugd2UgYXJlIHJlbGVhc2luZyB0aGUgZ2xvYmFsIGxvY2ssIHRoZQotICAgICAgICAgICBmb2xsb3dpbmcgY29kZSBtYXkgKm5vdCogZXhlY3V0ZSBQeXRob24gY29kZS4gKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgajsgaSsrKSB7Ci0gICAgICAgICAgICBsaW5lID0gUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpOwotICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShsaW5lKTsKLSAgICAgICAgICAgIEJaMl9ieldyaXRlICgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobGluZSksIGxlbik7Ci0gICAgICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChqIDwgQ0hVTktTSVpFKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLSAgZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5X1hERUNSRUYobGlzdCk7Ci0gICAgUHlfWERFQ1JFRihpdGVyKTsKLSAgICByZXR1cm4gcmV0OwotI3VuZGVmIENIVU5LU0laRQotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9zZWVrX19kb2NfXywKLSJzZWVrKG9mZnNldCBbLCB3aGVuY2VdKSAtPiBOb25lXG5cCi1cblwKLU1vdmUgdG8gbmV3IGZpbGUgcG9zaXRpb24uIEFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuIE9wdGlvbmFsXG5cCi1hcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8gMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0XG5cCi1zaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcyBhcmUgMSAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uLFxuXAotcG9zaXRpdmUgb3IgbmVnYXRpdmUpLCBhbmQgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseVxuXAotbmVnYXRpdmUsIGFsdGhvdWdoIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS5cblwKLVxuXAotTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZSBwYXJhbWV0ZXJzXG5cCi10aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9zZWVrKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCB3aGVyZSA9IDA7Ci0gICAgUHlPYmplY3QgKm9mZm9iajsKLSAgICBQeV9vZmZfdCBvZmZzZXQ7Ci0gICAgY2hhciBzbWFsbF9idWZmZXJbU01BTExDSFVOS107Ci0gICAgY2hhciAqYnVmZmVyID0gc21hbGxfYnVmZmVyOwotICAgIHNpemVfdCBidWZmZXJzaXplID0gU01BTExDSFVOSzsKLSAgICBQeV9vZmZfdCBieXRlc3JlYWQgPSAwOwotICAgIHNpemVfdCByZWFkc2l6ZTsKLSAgICBpbnQgY2h1bmtzaXplOwotICAgIGludCBiemVycm9yOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZvZmZvYmosICZ3aGVyZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgb2Zmc2V0ID0gUHlMb25nX0FzTG9uZyhvZmZvYmopOwotI2Vsc2UKLSAgICBvZmZzZXQgPSBQeUxvbmdfQ2hlY2sob2Zmb2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKG9mZm9iaikgOiBQeUxvbmdfQXNMb25nKG9mZm9iaik7Ci0jZW5kaWYKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgVXRpbF9Ecm9wUmVhZEFoZWFkKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWVrIHdvcmtzIG9ubHkgd2hpbGUgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIGlmICh3aGVyZSA9PSAyKSB7Ci0gICAgICAgIGlmIChzZWxmLT5zaXplID09IC0xKSB7Ci0gICAgICAgICAgICBhc3NlcnQoc2VsZi0+bW9kZSAhPSBNT0RFX1JFQURfRU9GKTsKLSAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsIGJ1ZmZlcnNpemUpOwotICAgICAgICAgICAgICAgIHNlbGYtPnBvcyArPSBjaHVua3NpemU7Ci0gICAgICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICAgICAgICAgIGJ5dGVzcmVhZCArPSBjaHVua3NpemU7Ci0gICAgICAgICAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgYnl0ZXNyZWFkID0gMDsKLSAgICAgICAgfQotICAgICAgICBvZmZzZXQgPSBzZWxmLT5zaXplICsgb2Zmc2V0OwotICAgIH0gZWxzZSBpZiAod2hlcmUgPT0gMSkgewotICAgICAgICBvZmZzZXQgPSBzZWxmLT5wb3MgKyBvZmZzZXQ7Ci0gICAgfQotCi0gICAgLyogQmVmb3JlIGdldHRpbmcgaGVyZSwgb2Zmc2V0IG11c3QgYmUgdGhlIGFic29sdXRlIHBvc2l0aW9uIHRoZSBmaWxlCi0gICAgICogcG9pbnRlciBzaG91bGQgYmUgc2V0IHRvLiAqLwotCi0gICAgaWYgKG9mZnNldCA+PSBzZWxmLT5wb3MpIHsKLSAgICAgICAgLyogd2UgY2FuIG1vdmUgZm9yd2FyZCAqLwotICAgICAgICBvZmZzZXQgLT0gc2VsZi0+cG9zOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIHdlIGNhbm5vdCBtb3ZlIGJhY2ssIHNvIHJld2luZCB0aGUgc3RyZWFtICovCi0gICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHJld2luZChzZWxmLT5yYXdmcCk7Ci0gICAgICAgIHNlbGYtPnBvcyA9IDA7Ci0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6UmVhZE9wZW4oJmJ6ZXJyb3IsIHNlbGYtPnJhd2ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwsIDApOwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQUQ7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCA8PSAwIHx8IHNlbGYtPm1vZGUgPT0gTU9ERV9SRUFEX0VPRikKLSAgICAgICAgZ290byBleGl0OwotCi0gICAgLyogQmVmb3JlIGdldHRpbmcgaGVyZSwgb2Zmc2V0IG11c3QgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSAgICAgKiB0byB3YWxrIGZvcndhcmQuICovCi0gICAgZm9yICg7OykgewotICAgICAgICBpZiAob2Zmc2V0LWJ5dGVzcmVhZCA+IGJ1ZmZlcnNpemUpCi0gICAgICAgICAgICByZWFkc2l6ZSA9IGJ1ZmZlcnNpemU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8qIG9mZnNldCBtaWdodCBiZSB3aWRlciB0aGF0IHJlYWRzaXplLCBidXQgdGhlIHJlc3VsdAotICAgICAgICAgICAgICogb2YgdGhlIHN1YnRyYWN0aW9uIGlzIGJvdW5kIGJ5IGJ1ZmZlcnNpemUgKHNlZSB0aGUKLSAgICAgICAgICAgICAqIGNvbmRpdGlvbiBhYm92ZSkuIGJ1ZmZlcnNpemUgaXMgODE5Mi4gKi8KLSAgICAgICAgICAgIHJlYWRzaXplID0gKHNpemVfdCkob2Zmc2V0LWJ5dGVzcmVhZCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsIGJ1ZmZlciwgcmVhZHNpemUpOwotICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBzZWxmLT5zaXplID0gc2VsZi0+cG9zOwotICAgICAgICAgICAgc2VsZi0+bW9kZSA9IE1PREVfUkVBRF9FT0Y7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzcmVhZCA9PSBvZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLWV4aXQ6Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldCA9IFB5X05vbmU7Ci0KLWNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3RlbGxfX2RvY19fLAotInRlbGwoKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIgKG1heSBiZSBhIGxvbmcgaW50ZWdlcikuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfdGVsbChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLQotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgcmV0ID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBvcyk7Ci0jZWxzZQotICAgIHJldCA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2VsZi0+cG9zKTsKLSNlbmRpZgotCi1jbGVhbnVwOgotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX2Nsb3NlX19kb2NfXywKLSJjbG9zZSgpIC0+IE5vbmUgb3IgKHBlcmhhcHMpIGFuIGludGVnZXJcblwKLVxuXAotQ2xvc2UgdGhlIGZpbGUuIFNldHMgZGF0YSBhdHRyaWJ1dGUgLmNsb3NlZCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlXG5cCi1jYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gY2xvc2UoKSBtYXkgYmUgY2FsbGVkIG1vcmVcblwKLXRoYW4gb25jZSB3aXRob3V0IGVycm9yLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2Nsb3NlKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgaW50IGJ6ZXJyb3IgPSBCWl9PSzsKLQotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgIH0KLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIEJaMl9ieldyaXRlQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBzZWxmLT5tb2RlID0gTU9ERV9DTE9TRUQ7Ci0gICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBzZWxmLT5yYXdmcCA9IE5VTEw7Ci0gICAgaWYgKGJ6ZXJyb3IgPT0gQlpfT0spIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXQgPSBQeV9Ob25lOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgIH0KLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9lbnRlcl9kb2MsCi0iX19lbnRlcl9fKCkgLT4gc2VsZi4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZW50ZXIoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9leGl0X2RvYywKLSJfX2V4aXRfXygqZXhjaW5mbykgLT4gTm9uZS4gIENsb3NlcyB0aGUgZmlsZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZXhpdChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKikgc2VsZiwgImNsb3NlIiwgTlVMTCk7Ci0gICAgaWYgKCFyZXQpCi0gICAgICAgIC8qIElmIGVycm9yIG9jY3VycmVkLCBwYXNzIHRocm91Z2ggKi8KLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfREVDUkVGKHJldCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLQotc3RhdGljIFB5T2JqZWN0ICpCWjJGaWxlX2dldGl0ZXIoQloyRmlsZU9iamVjdCAqc2VsZik7Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBCWjJGaWxlX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfcmVhZF9fZG9jX199LAotICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkbGluZSwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3JlYWRsaW5lX19kb2NfX30sCi0gICAgeyJyZWFkbGluZXMiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9yZWFkbGluZXNfX2RvY19ffSwKLSAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfd3JpdGUsIE1FVEhfVkFSQVJHUywgQloyRmlsZV93cml0ZV9fZG9jX199LAotICAgIHsid3JpdGVsaW5lcyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3dyaXRlbGluZXMsIE1FVEhfTywgQloyRmlsZV93cml0ZWxpbmVzX19kb2NfX30sCi0gICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfc2VlaywgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3NlZWtfX2RvY19ffSwKLSAgICB7InRlbGwiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV90ZWxsLCBNRVRIX05PQVJHUywgQloyRmlsZV90ZWxsX19kb2NfX30sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2Nsb3NlLCBNRVRIX05PQVJHUywgQloyRmlsZV9jbG9zZV9fZG9jX199LAotICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfZW50ZXIsIE1FVEhfTk9BUkdTLCBCWjJGaWxlX2VudGVyX2RvY30sCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2V4aXQsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9leGl0X2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBHZXR0ZXJzIGFuZCBzZXR0ZXJzIG9mIEJaMkZpbGUuICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2dldF9jbG9zZWQoQloyRmlsZU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLXsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpOwotfQotCi1zdGF0aWMgUHlHZXRTZXREZWYgQloyRmlsZV9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpQloyRmlsZV9nZXRfY2xvc2VkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAiVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjbG9zZWQifSwKLSAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFNsb3QgZGVmaW5pdGlvbnMgZm9yIEJaMkZpbGVfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyRmlsZV9pbml0KEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZW5hbWUiLCAibW9kZSIsICJidWZmZXJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCIsIDB9OwotICAgIFB5T2JqZWN0ICpuYW1lX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBjaGFyICptb2RlID0gInIiOwotICAgIGludCBidWZmZXJpbmcgPSAtMTsKLSAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgaW50IG1vZGVfY2hhciA9IDA7Ci0KLSAgICBzZWxmLT5zaXplID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxzaWk6QloyRmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSwgJmJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG5hbWVfb2JqKTsKLSAgICBpZiAoY29tcHJlc3NsZXZlbCA8IDEgfHwgY29tcHJlc3NsZXZlbCA+IDkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOwotICAgICAgICBQeV9ERUNSRUYobmFtZV9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgZm9yICg7OykgewotICAgICAgICBpbnQgZXJyb3IgPSAwOwotICAgICAgICBzd2l0Y2ggKCptb2RlKSB7Ci0gICAgICAgICAgICBjYXNlICdyJzoKLSAgICAgICAgICAgIGNhc2UgJ3cnOgotICAgICAgICAgICAgICAgIGlmIChtb2RlX2NoYXIpCi0gICAgICAgICAgICAgICAgICAgIGVycm9yID0gMTsKLSAgICAgICAgICAgICAgICBtb2RlX2NoYXIgPSAqbW9kZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSAnYic6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbW9kZSBjaGFyICVjIiwgKm1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBtb2RlKys7Ci0gICAgICAgIGlmICgqbW9kZSA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKG1vZGVfY2hhciA9PSAwKSB7Ci0gICAgICAgIG1vZGVfY2hhciA9ICdyJzsKLSAgICB9Ci0KLSAgICBtb2RlID0gKG1vZGVfY2hhciA9PSAncicpID8gInJiIiA6ICJ3YiI7Ci0KLSAgICBzZWxmLT5yYXdmcCA9IGZvcGVuKG5hbWUsIG1vZGUpOwotICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgaWYgKHNlbGYtPnJhd2ZwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIFhYWCBJZ25vcmUgYnVmZmVyaW5nICovCi0KLSAgICAvKiBGcm9tIG5vdyBvbiwgd2UgaGF2ZSBzdHVmZiB0byBkZWFsbG9jLCBzbyBqdW1wIHRvIGVycm9yIGxhYmVsCi0gICAgICogaW5zdGVhZCBvZiByZXR1cm5pbmcgKi8KLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGlmIChtb2RlX2NoYXIgPT0gJ3InKQotICAgICAgICBzZWxmLT5mcCA9IEJaMl9ielJlYWRPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBOVUxMLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHNlbGYtPmZwID0gQloyX2J6V3JpdGVPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0KLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+bW9kZSA9IChtb2RlX2NoYXIgPT0gJ3InKSA/IE1PREVfUkVBRCA6IE1PREVfV1JJVEU7Ci0KLSAgICByZXR1cm4gMDsKLQotZXJyb3I6Ci0gICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBzZWxmLT5yYXdmcCA9IE5VTEw7Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkZpbGVfZGVhbGxvYyhCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGludCBiemVycm9yOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgQloyX2J6UmVhZENsb3NlKCZiemVycm9yLCBzZWxmLT5mcCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1dSSVRFOgotICAgICAgICAgICAgQloyX2J6V3JpdGVDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIFV0aWxfRHJvcFJlYWRBaGVhZChzZWxmKTsKLSAgICBpZiAoc2VsZi0+cmF3ZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKHNlbGYtPnJhd2ZwKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfZ2V0aXRlcigpLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfZ2V0aXRlcihCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKXNlbGYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfaXRlcm5leHQoKS4gKi8KLSNkZWZpbmUgUkVBREFIRUFEX0JVRlNJWkUgODE5Mgotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfaXRlcm5leHQoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeUJ5dGVzT2JqZWN0KiByZXQ7Ci0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmIChzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0ID0gVXRpbF9SZWFkQWhlYWRHZXRMaW5lU2tpcChzZWxmLCAwLCBSRUFEQUhFQURfQlVGU0laRSk7Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIGlmIChyZXQgPT0gTlVMTCB8fCBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgPT0gMCkgewotICAgICAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmV0OwotfQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEJaMkZpbGVfVHlwZSBkZWZpbml0aW9uLiAqLwotCi1QeURvY19WQVIoQloyRmlsZV9fZG9jX18pID0KLVB5RG9jX1NUUigKLSJCWjJGaWxlKG5hbWUgWywgbW9kZT0ncicsIGJ1ZmZlcmluZz0wLCBjb21wcmVzc2xldmVsPTldKSAtPiBmaWxlIG9iamVjdFxuXAotXG5cCi1PcGVuIGEgYnoyIGZpbGUuIFRoZSBtb2RlIGNhbiBiZSAncicgb3IgJ3cnLCBmb3IgcmVhZGluZyAoZGVmYXVsdCkgb3JcblwKLXdyaXRpbmcuIFdoZW4gb3BlbmVkIGZvciB3cml0aW5nLCB0aGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndFxuXAotZXhpc3QsIGFuZCB0cnVuY2F0ZWQgb3RoZXJ3aXNlLiBJZiB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IGlzIGdpdmVuLCAwIG1lYW5zXG5cCi11bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemUuIElmIGNvbXByZXNzbGV2ZWxcblwKLWlzIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLURhdGEgcmVhZCBpcyBhbHdheXMgcmV0dXJuZWQgaW4gYnl0ZXM7IGRhdGEgd3JpdHRlbiBvdWdodCB0byBiZSBieXRlcy5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkZpbGVfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkZpbGUiLCAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyRmlsZU9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJGaWxlX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkZpbGVfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAoZ2V0aXRlcmZ1bmMpQloyRmlsZV9nZXRpdGVyLCAvKnRwX2l0ZXIqLwotICAgIChpdGVybmV4dGZ1bmMpQloyRmlsZV9pdGVybmV4dCwgLyp0cF9pdGVybmV4dCovCi0gICAgQloyRmlsZV9tZXRob2RzLCAgICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICBCWjJGaWxlX2dldHNldCwgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyRmlsZV9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyQ29tcC4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfY29tcHJlc3NfX2RvY19fLAotImNvbXByZXNzKGRhdGEpIC0+IHN0cmluZ1xuXAotXG5cCi1Qcm92aWRlIG1vcmUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rcyBvZlxuXAotY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBXaGVuIHlvdSd2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YVxuXAotdG8gY29tcHJlc3MsIGNhbGwgdGhlIGZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcyxcblwKLWFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIHRoZSBpbnRlcm5hbCBidWZmZXJzLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJDb21wX2NvbXByZXNzKEJaMkNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBjaGFyICpkYXRhOwotICAgIGludCBkYXRhc2l6ZTsKLSAgICBpbnQgYnVmc2l6ZSA9IFNNQUxMQ0hVTks7Ci0gICAgUFlfTE9OR19MT05HIHRvdGFsb3V0OwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmcGRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIGRhdGFzaXplID0gcGRhdGEubGVuOwotCi0gICAgaWYgKGRhdGFzaXplID09IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgfQotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmICghc2VsZi0+cnVubmluZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIG9iamVjdCB3YXMgYWxyZWFkeSBmbHVzaGVkIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZzaXplKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IGRhdGE7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IGRhdGFzaXplOwotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IGJ1ZnNpemU7Ci0KLSAgICB0b3RhbG91dCA9IEJaU19UT1RBTF9PVVQoYnpzKTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9SVU4pOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciAhPSBCWl9SVU5fT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOyAvKiBubyBtb3JlIGlucHV0IGRhdGEgKi8KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIGJ1ZnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIGJ1ZnNpemUpIDwgMCkgewotICAgICAgICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIChCWlNfVE9UQUxfT1VUKGJ6cykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHRvdGFsb3V0KTsKLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZSAtIChienMtPm5leHRfb3V0IC0gQlVGKHJldCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LAotICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoQlpTX1RPVEFMX09VVChienMpIC0gdG90YWxvdXQpKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgUHlfWERFQ1JFRihyZXQpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1QeURvY19TVFJWQVIoQloyQ29tcF9mbHVzaF9fZG9jX18sCi0iZmx1c2goKSAtPiBzdHJpbmdcblwKLVxuXAotRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzIGFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIGludGVybmFsIGJ1ZmZlcnMuXG5cCi1Zb3UgbXVzdCBub3QgdXNlIHRoZSBjb21wcmVzc29yIG9iamVjdCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJDb21wX2ZsdXNoKEJaMkNvbXBPYmplY3QgKnNlbGYpCi17Ci0gICAgaW50IGJ1ZnNpemUgPSBTTUFMTENIVU5LOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBQWV9MT05HX0xPTkcgdG90YWxvdXQ7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2JqZWN0IHdhcyBhbHJlYWR5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbHVzaGVkIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIHNlbGYtPnJ1bm5pbmcgPSAwOwotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZzaXplKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IGJ1ZnNpemU7Ci0KLSAgICB0b3RhbG91dCA9IEJaU19UT1RBTF9PVVQoYnpzKTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3MoYnpzLCBCWl9GSU5JU0gpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX0ZJTklTSF9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgYnVmc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyAoQlpTX1RPVEFMX09VVChienMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB0b3RhbG91dCk7Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IGJ1ZnNpemUgLSAoYnpzLT5uZXh0X291dCAtIEJVRihyZXQpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChienMtPmF2YWlsX291dCAhPSAwKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwKLSAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKEJaU19UT1RBTF9PVVQoYnpzKSAtIHRvdGFsb3V0KSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkNvbXBfbWV0aG9kc1tdID0gewotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyQ29tcF9jb21wcmVzcywgTUVUSF9WQVJBUkdTLAotICAgICBCWjJDb21wX2NvbXByZXNzX19kb2NfX30sCi0gICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilCWjJDb21wX2ZsdXNoLCBNRVRIX05PQVJHUywKLSAgICAgQloyQ29tcF9mbHVzaF9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU2xvdCBkZWZpbml0aW9ucyBmb3IgQloyQ29tcF9UeXBlLiAqLwotCi1zdGF0aWMgaW50Ci1CWjJDb21wX2luaXQoQloyQ29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OwotICAgIGludCBiemVycm9yOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29tcHJlc3NsZXZlbCIsIDB9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChjb21wcmVzc2xldmVsIDwgMSB8fCBjb21wcmVzc2xldmVsID4gOSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21wcmVzc2xldmVsIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA5Iik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwotICAgIGlmICghc2VsZi0+bG9jaykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgbWVtc2V0KCZzZWxmLT5ienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLSAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KCZzZWxmLT5ienMsIGNvbXByZXNzbGV2ZWwsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICBzZWxmLT5ydW5uaW5nID0gMTsKLQotICAgIHJldHVybiAwOwotZXJyb3I6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLUJaMkNvbXBfZGVhbGxvYyhCWjJDb21wT2JqZWN0ICpzZWxmKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIEJaMl9iekNvbXByZXNzRW5kKCZzZWxmLT5ienMpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBCWjJDb21wX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkNvbXBfX2RvY19fLAotIkJaMkNvbXByZXNzb3IoW2NvbXByZXNzbGV2ZWw9OV0pIC0+IGNvbXByZXNzb3Igb2JqZWN0XG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gY29tcHJlc3NcblwKLWRhdGEgc2VxdWVudGlhbGx5LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlXG5cCi1jb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuIFRoZSBjb21wcmVzc2xldmVsIHBhcmFtZXRlciwgaWYgZ2l2ZW4sXG5cCi1tdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLSIpOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkNvbXBfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkNvbXByZXNzb3IiLCAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyQ29tcE9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJDb21wX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkNvbXBfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIEJaMkNvbXBfbWV0aG9kcywgICAgICAgIC8qdHBfbWV0aG9kcyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyQ29tcF9pbml0LCAvKnRwX2luaXQqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgIC8qdHBfYWxsb2MqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgIC8qdHBfbmV3Ki8KLSAgICBQeU9iamVjdF9GcmVlLCAgICAgICAgICAvKnRwX2ZyZWUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXNfZ2MqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1lbWJlcnMgb2YgQloyRGVjb21wLiAqLwotCi0jdW5kZWYgT0ZGCi0jZGVmaW5lIE9GRih4KSBvZmZzZXRvZihCWjJEZWNvbXBPYmplY3QsIHgpCi0KLXN0YXRpYyBQeU1lbWJlckRlZiBCWjJEZWNvbXBfbWVtYmVyc1tdID0gewotICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVCwgT0ZGKHVudXNlZF9kYXRhKSwgUkVBRE9OTFl9LAotICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTWV0aG9kcyBvZiBCWjJEZWNvbXAuICovCi0KLVB5RG9jX1NUUlZBUihCWjJEZWNvbXBfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcyhkYXRhKSAtPiBzdHJpbmdcblwKLVxuXAotUHJvdmlkZSBtb3JlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIEl0IHdpbGwgcmV0dXJuIGNodW5rc1xuXAotb2YgZGVjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIElmIHlvdSB0cnkgdG8gZGVjb21wcmVzcyBkYXRhXG5cCi1hZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyBmb3VuZCwgRU9GRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmIGFueSBkYXRhXG5cCi13YXMgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0sIGl0J2xsIGJlIGlnbm9yZWQgYW5kIHNhdmVkIGluXG5cCi11bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkRlY29tcF9kZWNvbXByZXNzKEJaMkRlY29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIGNoYXIgKmRhdGE7Ci0gICAgaW50IGRhdGFzaXplOwotICAgIGludCBidWZzaXplID0gU01BTExDSFVOSzsKLSAgICBQWV9MT05HX0xPTkcgdG90YWxvdXQ7Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmc2VsZi0+YnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGF0YSA9IHBkYXRhLmJ1ZjsKLSAgICBkYXRhc2l6ZSA9IHBkYXRhLmxlbjsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoIXNlbGYtPnJ1bm5pbmcpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiZW5kIG9mIHN0cmVhbSB3YXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbHJlYWR5IGZvdW5kIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZzaXplKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IGRhdGE7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IGRhdGFzaXplOwotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IGJ1ZnNpemU7Ci0KLSAgICB0b3RhbG91dCA9IEJaU19UT1RBTF9PVVQoYnpzKTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcyhienMpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICAgICAgICAgICAgICBzZWxmLT51bnVzZWRfZGF0YSA9Ci0gICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnpzLT5uZXh0X2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBienMtPmF2YWlsX2luKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbGYtPnJ1bm5pbmcgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOyAvKiBubyBtb3JlIGlucHV0IGRhdGEgKi8KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIGJ1ZnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIGJ1ZnNpemUpIDwgMCkgewotICAgICAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgKEJaU19UT1RBTF9PVVQoYnpzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gdG90YWxvdXQpOwotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBidWZzaXplIC0gKGJ6cy0+bmV4dF9vdXQgLSBCVUYocmV0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnpzLT5hdmFpbF9vdXQgIT0gMCkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsCi0gICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShCWlNfVE9UQUxfT1VUKGJ6cykgLSB0b3RhbG91dCkpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotCi1lcnJvcjoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIFB5X1hERUNSRUYocmV0KTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIEJaMkRlY29tcF9tZXRob2RzW10gPSB7Ci0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkRlY29tcF9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIEJaMkRlY29tcF9kZWNvbXByZXNzX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJEZWNvbXBfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyRGVjb21wX2luaXQoQloyRGVjb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkJaMkRlY29tcHJlc3NvciIpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7Ci0gICAgaWYgKCFzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgInVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzZWxmLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIGlmICghc2VsZi0+dW51c2VkX2RhdGEpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBtZW1zZXQoJnNlbGYtPmJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+cnVubmluZyA9IDE7Ci0KLSAgICByZXR1cm4gMDsKLQotZXJyb3I6Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykgewotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0gICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOwotICAgIH0KLSNlbmRpZgotICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1CWjJEZWNvbXBfZGVhbGxvYyhCWjJEZWNvbXBPYmplY3QgKnNlbGYpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBpZiAoc2VsZi0+bG9jaykKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotI2VuZGlmCi0gICAgUHlfWERFQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7Ci0gICAgQloyX2J6RGVjb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogQloyRGVjb21wX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfU1RSVkFSKEJaMkRlY29tcF9fZG9jX18sCi0iQloyRGVjb21wcmVzc29yKCkgLT4gZGVjb21wcmVzc29yIG9iamVjdFxuXAotXG5cCi1DcmVhdGUgYSBuZXcgZGVjb21wcmVzc29yIG9iamVjdC4gVGhpcyBvYmplY3QgbWF5IGJlIHVzZWQgdG8gZGVjb21wcmVzc1xuXAotZGF0YSBzZXF1ZW50aWFsbHkuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZVxuXAotZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG5cCi0iKTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBCWjJEZWNvbXBfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiYnoyLkJaMkRlY29tcHJlc3NvciIsICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoQloyRGVjb21wT2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilCWjJEZWNvbXBfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLC8qdHBfZ2V0YXR0cm8qLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCi0gICAgQloyRGVjb21wX19kb2NfXywgICAgICAgLyp0cF9kb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCi0gICAgQloyRGVjb21wX21ldGhvZHMsICAgICAgLyp0cF9tZXRob2RzKi8KLSAgICBCWjJEZWNvbXBfbWVtYmVycywgICAgICAvKnRwX21lbWJlcnMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylCWjJEZWNvbXBfaW5pdCwgLyp0cF9pbml0Ki8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAvKnRwX2FsbG9jKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAvKnRwX25ldyovCi0gICAgUHlPYmplY3RfRnJlZSwgICAgICAgICAgLyp0cF9mcmVlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNb2R1bGUgZnVuY3Rpb25zLiAqLwotCi1QeURvY19TVFJWQVIoYnoyX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcyhkYXRhIFssIGNvbXByZXNzbGV2ZWw9OV0pIC0+IHN0cmluZ1xuXAotXG5cCi1Db21wcmVzcyBkYXRhIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSxcblwKLXVzZSBhbiBpbnN0YW5jZSBvZiBCWjJDb21wcmVzc29yIGluc3RlYWQuIFRoZSBjb21wcmVzc2xldmVsIHBhcmFtZXRlciwgaWZcblwKLWdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMSBhbmQgOS5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotYnoyX2NvbXByZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBpbnQgY29tcHJlc3NsZXZlbD05OwotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBjaGFyICpkYXRhOwotICAgIGludCBkYXRhc2l6ZTsKLSAgICBpbnQgYnVmc2l6ZTsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBiel9zdHJlYW0gX2J6czsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZfYnpzOwotICAgIGludCBiemVycm9yOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZGF0YSIsICJjb21wcmVzc2xldmVsIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZwZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcHJlc3NsZXZlbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRhdGEgPSBwZGF0YS5idWY7Ci0gICAgZGF0YXNpemUgPSBwZGF0YS5sZW47Ci0KLSAgICBpZiAoY29tcHJlc3NsZXZlbCA8IDEgfHwgY29tcHJlc3NsZXZlbCA+IDkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIC8qIENvbmZvcm1pbmcgdG8gYnoyIG1hbnVhbCwgdGhpcyBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IGNvbXByZXNzZWQKLSAgICAgKiBkYXRhIGluIG9uZSBzaG90LiBXZSB3aWxsIGNoZWNrIGl0IGxhdGVyIGFueXdheS4gKi8KLSAgICBidWZzaXplID0gZGF0YXNpemUgKyAoZGF0YXNpemUvMTAwKzEpICsgNjAwOwotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZzaXplKTsKLSAgICBpZiAoIXJldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIG1lbXNldChienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IGRhdGE7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IGRhdGFzaXplOwotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IGJ1ZnNpemU7Ci0KLSAgICBiemVycm9yID0gQloyX2J6Q29tcHJlc3NJbml0KGJ6cywgY29tcHJlc3NsZXZlbCwgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzKGJ6cywgQlpfRklOSVNIKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9GSU5JU0hfT0spIHsKLSAgICAgICAgICAgIEJaMl9iekNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBidWZzaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBidWZzaXplKSA8IDApIHsKLSAgICAgICAgICAgICAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIEJaU19UT1RBTF9PVVQoYnpzKTsKLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZSAtIChienMtPm5leHRfb3V0IC0gQlVGKHJldCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGJ6cy0+YXZhaWxfb3V0ICE9IDApIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCAoUHlfc3NpemVfdClCWlNfVE9UQUxfT1VUKGJ6cykpIDwgMCkgewotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihiejJfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcyhkYXRhKSAtPiBkZWNvbXByZXNzZWQgZGF0YVxuXAotXG5cCi1EZWNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QuIElmIHlvdSB3YW50IHRvIGRlY29tcHJlc3MgZGF0YSBzZXF1ZW50aWFsbHksXG5cCi11c2UgYW4gaW5zdGFuY2Ugb2YgQloyRGVjb21wcmVzc29yIGluc3RlYWQuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWJ6Ml9kZWNvbXByZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgY2hhciAqZGF0YTsKLSAgICBpbnQgZGF0YXNpemU7Ci0gICAgaW50IGJ1ZnNpemUgPSBTTUFMTENIVU5LOwotICAgIFB5T2JqZWN0ICpyZXQ7Ci0gICAgYnpfc3RyZWFtIF9ienM7Ci0gICAgYnpfc3RyZWFtICpienMgPSAmX2J6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZwZGF0YSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRhdGEgPSBwZGF0YS5idWY7Ci0gICAgZGF0YXNpemUgPSBwZGF0YS5sZW47Ci0KLSAgICBpZiAoZGF0YXNpemUgPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpOwotICAgIGlmICghcmV0KSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgbWVtc2V0KGJ6cywgMCwgc2l6ZW9mKGJ6X3N0cmVhbSkpOwotCi0gICAgYnpzLT5uZXh0X2luID0gZGF0YTsKLSAgICBienMtPmF2YWlsX2luID0gZGF0YXNpemU7Ci0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZTsKLQotICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzSW5pdChienMsIDAsIDApOwotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpEZWNvbXByZXNzKGJ6cyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfaW4gPT0gMCkgewotICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IGZpbmQgZW5kIG9mIHN0cmVhbSIpOwotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgYnVmc2l6ZSA9IFV0aWxfTmV3QnVmZmVyU2l6ZShidWZzaXplKTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnVmc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIEJaU19UT1RBTF9PVVQoYnpzKTsKLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gYnVmc2l6ZSAtIChienMtPm5leHRfb3V0IC0gQlVGKHJldCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGJ6cy0+YXZhaWxfb3V0ICE9IDApIHsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCAoUHlfc3NpemVfdClCWlNfVE9UQUxfT1VUKGJ6cykpIDwgMCkgewotICAgICAgICAgICAgcmV0ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotCi0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIGJ6Ml9tZXRob2RzW10gPSB7Ci0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbikgYnoyX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgYnoyX2NvbXByZXNzX19kb2NfX30sCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKSBiejJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAotICAgICAgICBiejJfZGVjb21wcmVzc19fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoYnoyX19kb2NfXywKLSJUaGUgcHl0aG9uIGJ6MiBtb2R1bGUgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIGludGVyZmFjZSBmb3JcblwKLXRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4gSXQgaW1wbGVtZW50cyBhIGNvbXBsZXRlIGZpbGVcblwKLWludGVyZmFjZSwgb25lIHNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kIHR5cGVzIGZvclxuXAotc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uXG5cCi0iKTsKLQotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGJ6Mm1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImJ6MiIsCi0gICAgYnoyX19kb2NfXywKLSAgICAtMSwKLSAgICBiejJfbWV0aG9kcywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X2J6Mih2b2lkKQotewotICAgIFB5T2JqZWN0ICptOwotCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyRmlsZV9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkNvbXBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJEZWNvbXBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmJ6Mm1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fYXV0aG9yX18iLCBQeVVuaWNvZGVfRnJvbVN0cmluZyhfX2F1dGhvcl9fKSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkZpbGVfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJGaWxlIiwgKFB5T2JqZWN0ICopJkJaMkZpbGVfVHlwZSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkNvbXBfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJDb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkNvbXBfVHlwZSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkRlY29tcF9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkRlY29tcHJlc3NvciIsIChQeU9iamVjdCAqKSZCWjJEZWNvbXBfVHlwZSk7Ci0gICAgcmV0dXJuIG07Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKaW5kZXggYWI0ZTY1OS4uOWU5ZTk2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYwpAQCAtODUsNyArODUsNyBAQAogICAgICAgICBUUllNQVBfREVDKGdiMjMxMiwgKipvdXRidWYsIGMgXiAweDgwLCBJTjIgXiAweDgwKSB7CiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAKICAgICAgICAgR0JLX0RFQ09ERShjLCBJTjIsICoqb3V0YnVmKQotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgICAgIGMzID0gSU4zOwogICAgICAgICAgICAgYzQgPSBJTjQ7CiAgICAgICAgICAgICBpZiAoYyA8IDB4ODEgfHwgYzMgPCAweDgxIHx8IGM0IDwgMHgzMCB8fCBjNCA+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+IGRpcmVjdG9yeSAob3IgPHByZWZpeD4lYzxleGVjX3ByZWZpeD4pLlxuIgogIiAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aCB1c2VzICVzLlxuIgogIlBZVEhPTkNBU0VPSyA6IGlnbm9yZSBjYXNlIGluICdpbXBvcnQnIHN0YXRlbWVudHMgKFdpbmRvd3MpLlxuIgotIlBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuXG5cCisiUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cbiIKKyJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuXAogIjsKIHN0YXRpYyBjaGFyICp1c2FnZV82ID0gIlwKLVBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZVxuXAotICAgYXMgc3BlY2lmeWluZyB0aGUgLVIgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZlxuXAotICAgc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBhbiBpbnRlZ2VyXG5cCi0gICBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYSBwcmVkaWN0YWJsZSBzZWVkLlxuXAorUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkXG5cCisgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG5cCisgICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuXAorICAgcHJlZGljdGFibGUgc2VlZC5cblwKICI7CiAKIHN0YXRpYyBpbnQKQEAgLTIyNSw3ICsyMjQsNyBAQAogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKGltcG9ydGVyLT5vYl90eXBlID09ICZQeU51bGxJbXBvcnRlcl9UeXBlKSB7CisgICAgaWYgKGltcG9ydGVyID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3YwKTsKICAgICAgICAgUHlfREVDUkVGKGltcG9ydGVyKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMzQ1LDIxICszNDQsMTMgQEAKICAgICAgICAgICAgICAgIG5vdCBpbnRlcnByZXRlciBvcHRpb25zLiAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgIGNhc2UgJ0UnOgorICAgICAgICBpZiAoYyA9PSAnRScpIHsKICAgICAgICAgICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZysrOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnKys7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBUaGUgdmFyaWFibGUgaXMgb25seSB0ZXN0ZWQgZm9yIGV4aXN0ZW5jZSBoZXJlOyBfUHlSYW5kb21fSW5pdCB3aWxsCi0gICAgICAgY2hlY2sgaXRzIHZhbHVlIGZ1cnRoZXIuICovCi0gICAgaWYgKCFQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgJiYKLSAgICAgICAgKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAKKyAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSAxOwogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKICAgICBQeVN5c19SZXNldFdhcm5PcHRpb25zKCk7CkBAIC00NjYsNyArNDU3LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgLyogQWxyZWFkeSBoYW5kbGVkIGFib3ZlICovCisgICAgICAgICAgICAvKiBJZ25vcmVkICovCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBUaGlzIHNwYWNlIHJlc2VydmVkIGZvciBvdGhlciBvcHRpb25zICovCkBAIC01MzMsMTYgKzUyNCwxMyBAQAogICAgICAgICAgICAgLyogVXNlIHV0Zi04IG9uIE1hYyBPUyBYICovCiAgICAgICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocCk7CiAjZWxzZQotICAgICAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgd2NoYXIgPSBfUHlfY2hhcjJ3Y2hhcihwLCAmbGVuKTsKLSAgICAgICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod2NoYXIsIGxlbik7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKKyAgICAgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHAsICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlKHVuaWNvZGUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICB9CkBAIC02MTcsNyArNjA1LDYgQEAKICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkVYRUNVVEFCTEUiKSkgJiYgKnAgIT0gJ1wwJykgewogICAgICAgICB3Y2hhcl90KiBidWZmZXI7CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4ocCkgKyAxOwotICAgICAgICBzaXplX3QgcjsKIAogICAgICAgICBidWZmZXIgPSBtYWxsb2MobGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CkBAIC02MjUsMTEgKzYxMiwzMyBAQAogICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9ORVhFQ1VUQUJMRSIpOwogICAgICAgICB9CiAKLSAgICAgICAgciA9IG1ic3Rvd2NzKGJ1ZmZlciwgcCwgbGVuKTsKKyAgICAgICAgbWJzdG93Y3MoYnVmZmVyLCBwLCBsZW4pOwogICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShidWZmZXIpOwogICAgICAgICAvKiBidWZmZXIgaXMgbm93IGhhbmRlZCBvZmYgLSBkbyBub3QgZnJlZSAqLwogICAgIH0gZWxzZSB7CisjaWZkZWYgV0lUSF9ORVhUX0ZSQU1FV09SSworICAgICAgICBjaGFyKiBweXZlbnZfbGF1bmNoZXIgPSBnZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iKTsKKworICAgICAgICBpZiAocHl2ZW52X2xhdW5jaGVyICYmICpweXZlbnZfbGF1bmNoZXIpIHsKKyAgICAgICAgICAgIC8qIFVzZWQgYnkgTWFjL1Rvb2xzL3B5dGhvbncuYyB0byBmb3J3YXJkCisgICAgICAgICAgICAgKiB0aGUgYXJndjAgb2YgdGhlIHN0dWIgZXhlY3V0YWJsZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICB3Y2hhcl90KiB3YnVmID0gX1B5X2NoYXIyd2NoYXIocHl2ZW52X2xhdW5jaGVyLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBkZWNvZGUgX19QWVZFTlZfTEFVTkNIRVJfXyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUod2J1Zik7CisKKyAgICAgICAgICAgIC8qIERvbid0IGZyZWUgd2J1ZiwgdGhlIGFyZ3VtZW50IHRvIFB5X1NldFByb2dyYW1OYW1lCisgICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgUHlfRmluYWxpemUgaXMgY2FsbGVkLgorICAgICAgICAgICAgICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CisjZW5kaWYKICAgICB9CiAjZWxzZQogICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYXRobW9kdWxlLmMgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwppbmRleCAyYzRjYzczLi5kNjkzZGExIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwpAQCAtNTUsMTEgKzU1LDYgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJfbWF0aC5oIgogCi0jaWZkZWYgX09TRl9TT1VSQ0UKLS8qIE9TRjEgNS4xIGRvZXNuJ3QgbWFrZSB0aGlzIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gZG91YmxlIGNvcHlzaWduKGRvdWJsZSwgZG91YmxlKTsKLSNlbmRpZgotCiAvKgogICAgc2luKHBpKngpLCBnaXZpbmcgYWNjdXJhdGUgcmVzdWx0cyBmb3IgYWxsIGZpbml0ZSB4IChlc3BlY2lhbGx5IHgKICAgIGludGVncmFsIG9yIGNsb3NlIHRvIGFuIGludGVnZXIpLiAgVGhpcyBpcyBoZXJlIGZvciB1c2UgaW4gdGhlCkBAIC0yNDQsNyArMjM5LDggQEAKICAgICB9CiAgICAgaWYgKHggPT0gMC4wKSB7CiAgICAgICAgIGVycm5vID0gRURPTTsKLSAgICAgICAgcmV0dXJuIDEuMC94OyAvKiB0Z2FtbWEoKy0wLjApID0gKy1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgICAgIC8qIHRnYW1tYSgrLTAuMCkgPSArLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICAgICAgcmV0dXJuIGNvcHlzaWduKFB5X0hVR0VfVkFMLCB4KTsKICAgICB9CiAKICAgICAvKiBpbnRlZ2VyIGFyZ3VtZW50cyAqLwpAQCAtNTgyLDYgKzU3OCw2MSBAQAogICAgIH0KIH0KIAorLyoKKyAgIGxvZzI6IGxvZyB0byBiYXNlIDIuCisKKyAgIFVzZXMgYW4gYWxnb3JpdGhtIHRoYXQgc2hvdWxkOgorCisgICAgIChhKSBwcm9kdWNlIGV4YWN0IHJlc3VsdHMgZm9yIHBvd2VycyBvZiAyLCBhbmQKKyAgICAgKGIpIGdpdmUgYSBtb25vdG9uaWMgbG9nMiAoZm9yIHBvc2l0aXZlIGZpbml0ZSBmbG9hdHMpLAorICAgICAgICAgYXNzdW1pbmcgdGhhdCB0aGUgc3lzdGVtIGxvZyBpcyBtb25vdG9uaWMuCisqLworCitzdGF0aWMgZG91YmxlCittX2xvZzIoZG91YmxlIHgpCit7CisgICAgaWYgKCFQeV9JU19GSU5JVEUoeCkpIHsKKyAgICAgICAgaWYgKFB5X0lTX05BTih4KSkKKyAgICAgICAgICAgIHJldHVybiB4OyAvKiBsb2cyKG5hbikgPSBuYW4gKi8KKyAgICAgICAgZWxzZSBpZiAoeCA+IDAuMCkKKyAgICAgICAgICAgIHJldHVybiB4OyAvKiBsb2cyKCtpbmYpID0gK2luZiAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgICAgIHJldHVybiBQeV9OQU47IC8qIGxvZzIoLWluZikgPSBuYW4sIGludmFsaWQtb3BlcmF0aW9uICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeCA+IDAuMCkgeworI2lmZGVmIEhBVkVfTE9HMgorICAgICAgICByZXR1cm4gbG9nMih4KTsKKyNlbHNlCisgICAgICAgIGRvdWJsZSBtOworICAgICAgICBpbnQgZTsKKyAgICAgICAgbSA9IGZyZXhwKHgsICZlKTsKKyAgICAgICAgLyogV2Ugd2FudCBsb2cyKG0gKiAyKiplKSA9PSBsb2cobSkgLyBsb2coMikgKyBlLiAgQ2FyZSBpcyBuZWVkZWQgd2hlbgorICAgICAgICAgKiB4IGlzIGp1c3QgZ3JlYXRlciB0aGFuIDEuMDogaW4gdGhhdCBjYXNlIGUgaXMgMSwgbG9nKG0pIGlzIG5lZ2F0aXZlLAorICAgICAgICAgKiBhbmQgd2UgZ2V0IHNpZ25pZmljYW50IGNhbmNlbGxhdGlvbiBlcnJvciBmcm9tIHRoZSBhZGRpdGlvbiBvZgorICAgICAgICAgKiBsb2cobSkgLyBsb2coMikgdG8gZS4gIFRoZSBzbGlnaHQgcmV3cml0ZSBvZiB0aGUgZXhwcmVzc2lvbiBiZWxvdworICAgICAgICAgKiBhdm9pZHMgdGhpcyBwcm9ibGVtLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHggPj0gMS4wKSB7CisgICAgICAgICAgICByZXR1cm4gbG9nKDIuMCAqIG0pIC8gbG9nKDIuMCkgKyAoZSAtIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxvZyhtKSAvIGxvZygyLjApICsgZTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gMC4wKSB7CisgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgcmV0dXJuIC1QeV9IVUdFX1ZBTDsgLyogbG9nMigwKSA9IC1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcnJubyA9IEVET007CisgICAgICAgIHJldHVybiBQeV9OQU47IC8qIGxvZzIoLWluZikgPSBuYW4sIGludmFsaWQtb3BlcmF0aW9uICovCisgICAgfQorfQorCiBzdGF0aWMgZG91YmxlCiBtX2xvZzEwKGRvdWJsZSB4KQogewpAQCAtODM2LDEwICs4ODcsMTAgQEAKICAgICAgICJhdGFuaCh4KVxuXG5SZXR1cm4gdGhlIGh5cGVyYm9saWMgYXJjIHRhbmdlbnQgKG1lYXN1cmVkIGluIHJhZGlhbnMpIG9mIHguIikKIAogc3RhdGljIFB5T2JqZWN0ICogbWF0aF9jZWlsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKSB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpjZWlsX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19jZWlsX18pOwogICAgIFB5T2JqZWN0ICptZXRob2QsICpyZXN1bHQ7CiAKLSAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICJfX2NlaWxfXyIsICZjZWlsX3N0cik7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX2NlaWxfXyk7CiAgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NzQsMTAgKzkyNSwxMCBAQAogICAgICAgImZhYnMoeClcblxuUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZmxvYXQgeC4iKQogCiBzdGF0aWMgUHlPYmplY3QgKiBtYXRoX2Zsb29yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKSB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmbG9vcl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZmxvb3JfXyk7CiAgICAgUHlPYmplY3QgKm1ldGhvZCwgKnJlc3VsdDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fZmxvb3JfXyIsICZmbG9vcl9zdHIpOworICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgJlB5SWRfX19mbG9vcl9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzODQsNyArMTQzNSw3IEBACiAgICAgfQogCiAgICAgLyogdXNlIGxvb2t1cCB0YWJsZSBpZiB4IGlzIHNtYWxsICovCi0gICAgaWYgKHggPCAobG9uZykoc2l6ZW9mKFNtYWxsRmFjdG9yaWFscykvc2l6ZW9mKFNtYWxsRmFjdG9yaWFsc1swXSkpKQorICAgIGlmICh4IDwgKGxvbmcpUHlfQVJSQVlfTEVOR1RIKFNtYWxsRmFjdG9yaWFscykpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhTbWFsbEZhY3RvcmlhbHNbeF0pOwogCiAgICAgLyogZWxzZSBleHByZXNzIGluIHRoZSBmb3JtIG9kZF9wYXJ0ICogMioqdHdvX3ZhbHVhdGlvbiwgYW5kIGNvbXB1dGUgYXMKQEAgLTE0MTEsNyArMTQ2Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWF0aF90cnVuYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm51bWJlcikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnRydW5jX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX190cnVuY19fKTsKICAgICBQeU9iamVjdCAqdHJ1bmMsICpyZXN1bHQ7CiAKICAgICBpZiAoUHlfVFlQRShudW1iZXIpLT50cF9kaWN0ID09IE5VTEwpIHsKQEAgLTE0MTksNyArMTQ3MCw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0cnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fdHJ1bmNfXyIsICZ0cnVuY19zdHIpOworICAgIHRydW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNjI4LDYgKzE2NzksMTUgQEAKIElmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHguIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCittYXRoX2xvZzIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgcmV0dXJuIGxvZ2hlbHBlcihhcmcsIG1fbG9nMiwgImxvZzIiKTsKK30KKworUHlEb2NfU1RSVkFSKG1hdGhfbG9nMl9kb2MsCisibG9nMih4KVxuXG5SZXR1cm4gdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgeC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIG1hdGhfbG9nMTAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgcmV0dXJuIGxvZ2hlbHBlcihhcmcsIG1fbG9nMTAsICJsb2cxMCIpOwpAQCAtMTg5OSw2ICsxOTU5LDcgQEAKICAgICB7ImxvZyIsICAgICAgICAgICAgIG1hdGhfbG9nLCAgICAgICBNRVRIX1ZBUkFSR1MsICAgbWF0aF9sb2dfZG9jfSwKICAgICB7ImxvZzFwIiwgICAgICAgICAgIG1hdGhfbG9nMXAsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9sb2cxcF9kb2N9LAogICAgIHsibG9nMTAiLCAgICAgICAgICAgbWF0aF9sb2cxMCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2xvZzEwX2RvY30sCisgICAgeyJsb2cyIiwgICAgICAgICAgICBtYXRoX2xvZzIsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbG9nMl9kb2N9LAogICAgIHsibW9kZiIsICAgICAgICAgICAgbWF0aF9tb2RmLCAgICAgIE1FVEhfTywgICAgICAgICBtYXRoX21vZGZfZG9jfSwKICAgICB7InBvdyIsICAgICAgICAgICAgIG1hdGhfcG93LCAgICAgICBNRVRIX1ZBUkFSR1MsICAgbWF0aF9wb3dfZG9jfSwKICAgICB7InJhZGlhbnMiLCAgICAgICAgIG1hdGhfcmFkaWFucywgICBNRVRIX08sICAgICAgICAgbWF0aF9yYWRpYW5zX2RvY30sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCAyMDg5MzBkLi5lMjY4MWE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTIxMCw3ICsyMTAsOCBAQAogICAgSW5pdGlhbGl6ZSB0aGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIHNoYTEgICBUaGUgaGFzaCBzdGF0ZSB5b3Ugd2lzaCB0byBpbml0aWFsaXplCiAqLwotdm9pZCBtZDVfaW5pdChzdHJ1Y3QgbWQ1X3N0YXRlICptZDUpCitzdGF0aWMgdm9pZAorbWQ1X2luaXQoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1KQogewogICAgIGFzc2VydChtZDUgIT0gTlVMTCk7CiAgICAgbWQ1LT5zdGF0ZVswXSA9IDB4Njc0NTIzMDFVTDsKQEAgLTIyNyw4ICsyMjgsOCBAQAogICAgQHBhcmFtIGluICAgICBUaGUgZGF0YSB0byBoYXNoCiAgICBAcGFyYW0gaW5sZW4gIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgKG9jdGV0cykKICovCi12b2lkIG1kNV9wcm9jZXNzKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwKLSAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgUHlfc3NpemVfdCBpbmxlbikKK3N0YXRpYyB2b2lkCittZDVfcHJvY2VzcyhzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQogewogICAgIFB5X3NzaXplX3QgbjsKIApAQCAtMjQzLDcgKzI0NCw3IEBACiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IE1ENV9CTE9DS1NJWkU7CiAgICAgICAgICAgIGlubGVuICAgICAgICAgIC09IE1ENV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChNRDVfQkxPQ0tTSVpFIC0gbWQ1LT5jdXJsZW4pKTsKKyAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFB5X3NzaXplX3QpKE1ENV9CTE9DS1NJWkUgLSBtZDUtPmN1cmxlbikpOwogICAgICAgICAgICBtZW1jcHkobWQ1LT5idWYgKyBtZDUtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7CiAgICAgICAgICAgIG1kNS0+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+IDIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInlpZWxkIikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChuY2ggPT0gMikgeworICAgICAgICBpZiAoIXZhbGlkYXRlX3lpZWxkX2FyZyhDSElMRCh0cmVlLCAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7CiB9CiAKKy8qIHlpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdAorICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV95aWVsZF9hcmcobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfYXJnKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3dpdGNoIChuY2gpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQogCiAvKiB5aWVsZF9zdG10OiB5aWVsZF9leHByCiAgKi8KQEAgLTIxNjUsMTYgKzIxNzEsMTYgQEAKICAgICAgICAgICovCiAgICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKICAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICBjYXNlIExFU1M6Ci0gICAgICAgICAgICBjYXNlIEdSRUFURVI6Ci0gICAgICAgICAgICBjYXNlIEVRRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIEVRVUFMOgotICAgICAgICAgICAgY2FzZSBMRVNTRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgTk9URVFVQUw6CisgICAgICAgICAgY2FzZSBMRVNTOgorICAgICAgICAgIGNhc2UgR1JFQVRFUjoKKyAgICAgICAgICBjYXNlIEVRRVFVQUw6CisgICAgICAgICAgY2FzZSBFUVVBTDoKKyAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKKyAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKKyAgICAgICAgICBjYXNlIE5PVEVRVUFMOgogICAgICAgICAgICAgICByZXMgPSAxOwogICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTkFNRToKKyAgICAgICAgICBjYXNlIE5BTUU6CiAgICAgICAgICAgICAgIHJlcyA9ICgoc3RyY21wKFNUUih0cmVlKSwgImluIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgIHx8IChzdHJjbXAoU1RSKHRyZWUpLCAiaXMiKSA9PSAwKSk7CiAgICAgICAgICAgICAgIGlmICghcmVzKSB7CkBAIC0yNzE5LDkgKzI3MjUsOSBAQAogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7CiAgICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQorICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKSk7CisgICAgaWYgKHJlcykgCisgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwogICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpOwogICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID09IDMpKQpAQCAtMzM1NiwxMCArMzM2MiwxMyBAQAogICAgIGNvcHlyZWcgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJjb3B5cmVnIik7CiAgICAgaWYgKGNvcHlyZWcgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZnVuYywgKnBpY2tsZXI7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHBpY2tsZSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNlcXVlbmNlMnN0KTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX3BpY2tsZXIpOwogCi0gICAgICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvcHlyZWcsICJwaWNrbGUiKTsKLSAgICAgICAgcGlja2xlX2NvbnN0cnVjdG9yID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsICJzZXF1ZW5jZTJzdCIpOwotICAgICAgICBwaWNrbGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsICJfcGlja2xlciIpOworICAgICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9waWNrbGUpOworICAgICAgICBwaWNrbGVfY29uc3RydWN0b3IgPSBfUHlPYmplY3RfR2V0QXR0cklkKG1vZHVsZSwgJlB5SWRfc2VxdWVuY2Uyc3QpOworICAgICAgICBwaWNrbGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2R1bGUsICZQeUlkX19waWNrbGVyKTsKICAgICAgICAgUHlfWElOQ1JFRihwaWNrbGVfY29uc3RydWN0b3IpOwogICAgICAgICBpZiAoKGZ1bmMgIT0gTlVMTCkgJiYgKHBpY2tsZV9jb25zdHJ1Y3RvciAhPSBOVUxMKQogICAgICAgICAgICAgJiYgKHBpY2tsZXIgIT0gTlVMTCkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCA5ZjU3NjczLi5iZDk0ZmZiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKICNpZiBkZWZpbmVkKF9fVk1TKQorIyAgICBlcnJvciAiUEVQIDExOiBWTVMgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgogIyAgICBpbmNsdWRlIDx1bml4aW8uaD4KICNlbmRpZiAvKiBkZWZpbmVkKF9fVk1TKSAqLwogCkBAIC00Myw2ICs0NCw3IEBACiAKIAogI2lmIGRlZmluZWQoUFlPU19PUzIpCisjZXJyb3IgIlBFUCAxMTogT1MvMiBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCiAjZGVmaW5lICBJTkNMX0RPUwogI2RlZmluZSAgSU5DTF9ET1NFUlJPUlMKICNkZWZpbmUgIElOQ0xfRE9TUFJPQ0VTUwpAQCAtNTcsNiArNTksMTAgQEAKICNpbmNsdWRlICJvc2RlZnMuaCIKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRlIDxzeXMvdWlvLmg+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+IHN0YXQgcmVzdWx0XG5cblwKK0xpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKK0VxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbHN0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpsc3RhdCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoInN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2FjY2Vzc19fZG9jX18sCisiYWNjZXNzKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBlZmZlY3RpdmVfaWRzPUZhbHNlLFwKKyBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorVXNlIHRoZSByZWFsIHVpZC9naWQgdG8gdGVzdCBmb3IgYWNjZXNzIHRvIGEgcGF0aC4gIFJldHVybnMgVHJ1ZSBpZiBncmFudGVkLFxuXAorRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZWZmZWN0aXZlX2lkcyBpcyBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcblwKKyAgdGhlIHJlYWwgdWlkL2dpZC5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK2Rpcl9mZCwgZWZmZWN0aXZlX2lkcywgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkXG5cCisgIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKKyAgTm90SW1wbGVtZW50ZWRFcnJvci5cblwKK1xuXAorTm90ZSB0aGF0IG1vc3Qgb3BlcmF0aW9ucyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzXG5cCisgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuXAorICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguXG5cCitUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgRl9PSyB0byB0ZXN0IGV4aXN0ZW5jZSwgb3IgdGhlIGluY2x1c2l2ZS1PUlxuXAorICBvZiBSX09LLCBXX09LLCBhbmQgWF9PSy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2FjY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgbW9kZTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGVmZmVjdGl2ZV9pZHMgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVWk6YWNjZXNzIiwgJnBvLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGdvdG8gZmluaXNoOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTphY2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotZmluaXNoOgotICAgIGlmIChhdHRyID09IDB4RkZGRkZGRkYpCi0gICAgICAgIC8qIEZpbGUgZG9lcyBub3QgZXhpc3QsIG9yIGNhbm5vdCByZWFkIGF0dHJpYnV0ZXMgKi8KLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKLSAgICAvKiBBY2Nlc3MgaXMgcG9zc2libGUgaWYgZWl0aGVyIHdyaXRlIGFjY2VzcyB3YXNuJ3QgcmVxdWVzdGVkLCBvcgotICAgICAgIHRoZSBmaWxlIGlzbid0IHJlYWQtb25seSwgb3IgaWYgaXQncyBhIGRpcmVjdG9yeSwgYXMgdGhlcmUgYXJlCi0gICAgICAgbm8gcmVhZC1vbmx5IGRpcmVjdG9yaWVzIG9uIFdpbmRvd3MuICovCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyghKG1vZGUgJiAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIShhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpOwogI2Vsc2UKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gYWNjZXNzKHBhdGgsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyA9PSAwKTsKKyAgICBpbnQgcmVzdWx0OwogI2VuZGlmCisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnBwOmFjY2VzcyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLAorI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJhY2Nlc3MiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBpZiAoZWZmZWN0aXZlX2lkcykgeworICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcigiYWNjZXNzIiwgImVmZmVjdGl2ZV9pZHMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGF0aC53aWRlICE9IE5VTEwpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAvKgorICAgICAqIEFjY2VzcyBpcyBwb3NzaWJsZSBpZgorICAgICAqICAgKiB3ZSBkaWRuJ3QgZ2V0IGEgLTEsIGFuZAorICAgICAqICAgICAqIHdyaXRlIGFjY2VzcyB3YXNuJ3QgcmVxdWVzdGVkLAorICAgICAqICAgICAqIG9yIHRoZSBmaWxlIGlzbid0IHJlYWQtb25seSwKKyAgICAgKiAgICAgKiBvciBpdCdzIGEgZGlyZWN0b3J5LgorICAgICAqIChEaXJlY3RvcmllcyBjYW5ub3QgYmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MuKQorICAgICovCisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAoYXR0ciAhPSAweEZGRkZGRkZGKSAmJgorICAgICAgICAgICAgKCEobW9kZSAmIDIpIHx8CisgICAgICAgICAgICAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkgfHwKKyAgICAgICAgICAgIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSkpOworI2Vsc2UKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICBlZmZlY3RpdmVfaWRzIHx8CisgICAgICAgICFmb2xsb3dfc3ltbGlua3MpIHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyAgICAgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBmbGFncyB8PSBBVF9TWU1MSU5LX05PRk9MTE9XOworICAgICAgICBpZiAoZWZmZWN0aXZlX2lkcykKKyAgICAgICAgICAgIGZsYWdzIHw9IEFUX0VBQ0NFU1M7CisgICAgICAgIHJlc3VsdCA9IGZhY2Nlc3NhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlLCBmbGFncyk7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBhY2Nlc3MocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKCFyZXN1bHQpOworI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9GQUNDRVNTQVQKK2V4aXQ6CisjZW5kaWYKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKICNpZm5kZWYgRl9PSwpAQCAtMTkwOCwyNyArMjUzOSw2NiBAQAogCiBQeURvY19TVFJWQVIocG9zaXhfY2hkaXJfX2RvY19fLAogImNoZGlyKHBhdGgpXG5cblwKLUNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguIik7CitDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHNwZWNpZmllZCBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJjaGRpciIsICJ5OmNoZGlyIiwgd2luMzJfY2hkaXIsICJVOmNoZGlyIiwgd2luMzJfd2NoZGlyKTsKLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOmNoZGlyIiwgX2NoZGlyMik7Ci0jZWxpZiBkZWZpbmVkKF9fVk1TKQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaGRpciIsIChpbnQgKCopKGNvbnN0IGNoYXIgKikpY2hkaXIpOwotI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6Y2hkaXIiLCBjaGRpcik7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkNIRElSCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CiAjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaGRpciIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfY2hkaXIocGF0aC5uYXJyb3cpOworCXJlc3VsdCA9ICFyZXN1bHQ7IC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyNlbGlmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCisgICAgcmVzdWx0ID0gX2NoZGlyMihwYXRoLm5hcnJvdyk7CisjZWxzZQorI2lmZGVmIEhBVkVfRkNIRElSCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaGRpcihwYXRoLmZkKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2hkaXIocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigiY2hkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKICNpZmRlZiBIQVZFX0ZDSERJUgogUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaGRpcl9fZG9jX18sCi0iZmNoZGlyKGZpbGRlcylcblxuXAotQ2hhbmdlIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci4gIGZpbGRlcyBtdXN0IGJlXG5cCi1vcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuIik7CisiZmNoZGlyKGZkKVxuXG5cCitDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmQgbXVzdCBiZVxuXAorb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLiAgRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2hkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmZG9iaikKQEAgLTE5MzksODcgKzI2MDksMTU1IEBACiAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2NobW9kX19kb2NfXywKLSJjaG1vZChwYXRoLCBtb2RlKVxuXG5cCi1DaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIik7CisiY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2htb2Qgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aCA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aCA9IE5VTEw7Ci0gICAgaW50IGk7Ci0gICAgaW50IHJlczsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVWl8OmNobW9kIiwgJnBvLCAmaSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIGlmIChhdHRyICE9IDB4RkZGRkZGRkYpIHsKLSAgICAgICAgICAgIGlmIChpICYgX1NfSVdSSVRFKQotICAgICAgICAgICAgICAgIGF0dHIgJj0gfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgICAgICByZXMgPSBTZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pLCBhdHRyKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJjaG1vZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbykpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKKyNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6Y2htb2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmkpKQorI2lmZGVmIEhBVkVfRkNITU9EQVQKKyAgICBpbnQgZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQgPSAwOworI2VuZGlmCisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJm1vZGUsCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAorI2VuZGlmCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZiAhKGRlZmluZWQoSEFWRV9GQ0hNT0RBVCkgfHwgZGVmaW5lZChIQVZFX0xDSE1PRCkpCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNobW9kIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aCk7Ci0gICAgaWYgKGF0dHIgIT0gMHhGRkZGRkZGRikgewotICAgICAgICBpZiAoaSAmIF9TX0lXUklURSkKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93KTsKKyAgICBpZiAoYXR0ciA9PSAweEZGRkZGRkZGKQorICAgICAgICByZXN1bHQgPSAwOworICAgIGVsc2UgeworICAgICAgICBpZiAobW9kZSAmIF9TX0lXUklURSkKICAgICAgICAgICAgIGF0dHIgJj0gfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhdHRyIHw9IEZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwotICAgICAgICByZXMgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aCwgYXR0cik7CisgICAgICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlLCBhdHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93LCBhdHRyKTsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgiY2htb2QiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZWxzZSAvKiBNU19XSU5ET1dTICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRkNITU9ECisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG1vZChwYXRoLmZkLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0xDSE1PRAorICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCisgICAgICAgIHJlc3VsdCA9IGxjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAhZm9sbG93X3N5bWxpbmtzKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZjaG1vZGF0KCkgZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBBVF9TWU1MSU5LX05PRk9MTE9XIQorICAgICAgICAgKiBUaGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgc2hvd3MgaG93IHRvIHVzZSBpdCwKKyAgICAgICAgICogYW5kIHRoZW4gc2F5cyBpdCBpc24ndCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAqICh0cnVlIG9uIGxpbnV4IHdpdGggZ2xpYmMgMi4xNSwgYW5kIG9wZW5pbmRpYW5hIDMueCkKKyAgICAgICAgICoKKyAgICAgICAgICogT25jZSBpdCBpcyBzdXBwb3J0ZWQsIG9zLmNobW9kIHdpbGwgYXV0b21hdGljYWxseQorICAgICAgICAgKiBzdXBwb3J0IGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzPUZhbHNlLiAgKEhvcGVmdWxseS4pCisgICAgICAgICAqIFVudGlsIHRoZW4sIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGF0IGV4Y2VwdGlvbiB3ZSByYWlzZS4KKyAgICAgICAgICovCisgICAgICAgIHJlc3VsdCA9IGZjaG1vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogQnV0IHdhaXQhICBXZSBjYW4ndCB0aHJvdyB0aGUgZXhjZXB0aW9uIHdpdGhvdXQgYWxsb3dpbmcgdGhyZWFkcywKKyAgICAgICAgICogYW5kIHdlIGNhbid0IGRvIHRoYXQgaW4gdGhpcyBuZXN0ZWQgc2NvcGUuICAoTWFjcm8gdHJpY2tlcnksIHNpZ2guKQorICAgICAgICAgKi8KKyAgICAgICAgZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQgPQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICgoZXJybm8gPT0gRU5PVFNVUCkgfHwgKGVycm5vID09IEVPUE5PVFNVUFApKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICFmb2xsb3dfc3ltbGlua3M7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmVzID0gMDsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yKCJjaG1vZCIsIHBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jZWxzZSAvKiBNU19XSU5ET1dTICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6Y2htb2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNobW9kKHBhdGgsIGkpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CiAjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2htb2QocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICAgICBpZiAoZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQpIHsKKyAgICAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICAgICAgZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2htb2QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNobW9kIiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoImNobW9kIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCisKICNpZmRlZiBIQVZFX0ZDSE1PRAogUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaG1vZF9fZG9jX18sCiAiZmNobW9kKGZkLCBtb2RlKVxuXG5cCiBDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlXG5cCi1kZXNjcmlwdG9yIGZkLiIpOworZGVzY3JpcHRvciBmZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfZmNobW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTIwNDAsNyArMjc3OCw4IEBACiBQeURvY19TVFJWQVIocG9zaXhfbGNobW9kX19kb2NfXywKICJsY2htb2QocGF0aCwgbW9kZSlcblxuXAogQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLiBJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpc1xuXAotYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4iKTsKK2FmZmVjdHMgdGhlIGxpbmsgaXRzZWxmIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuXG5cCitFcXVpdmFsZW50IHRvIGNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjA2NiwyOCArMjgwNSw1NiBAQAogCiAjaWZkZWYgSEFWRV9DSEZMQUdTCiBQeURvY19TVFJWQVIocG9zaXhfY2hmbGFnc19fZG9jX18sCi0iY2hmbGFncyhwYXRoLCBmbGFncylcblxuXAotU2V0IGZpbGUgZmxhZ3MuIik7CisiY2hmbGFncyhwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1NldCBmaWxlIGZsYWdzLlxuXAorXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCitmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgaXQgaXNcblwKK3VuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgcGF0aF90IHBhdGg7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZrOmNoZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJmZsYWdzKSkKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfCRpOmNoZmxhZ3MiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZm5kZWYgSEFWRV9MQ0hGTEFHUworICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaGZsYWdzIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2hmbGFncyhwYXRoLCBmbGFncyk7CisjaWZkZWYgSEFWRV9MQ0hGTEFHUworICAgIGlmICghZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBsY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJjaGZsYWdzIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwogCkBAIC0yMDk1LDcgKzI4NjIsOCBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X2xjaGZsYWdzX19kb2NfXywKICJsY2hmbGFncyhwYXRoLCBmbGFncylcblxuXAogU2V0IGZpbGUgZmxhZ3MuXG5cCi1UaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4iKTsKK1RoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAorRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfbGNoZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjE0Myw2ICsyOTExLDIxIEBACiB9CiAjZW5kaWYgLyogSEFWRV9GU1lOQyAqLwogCisjaWZkZWYgSEFWRV9TWU5DCitQeURvY19TVFJWQVIocG9zaXhfc3luY19fZG9jX18sCisic3luYygpXG5cblwKK0ZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3N5bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN5bmMoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX0ZEQVRBU1lOQwogCiAjaWZkZWYgX19ocHV4CkBAIC0yMTY0LDI5ICsyOTQ3LDEwNSBAQAogCiAjaWZkZWYgSEFWRV9DSE9XTgogUHlEb2NfU1RSVkFSKHBvc2l4X2Nob3duX19kb2NfXywKLSJjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAotQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4iKTsKKyJjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGNob3duIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2Nob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBsb25nIHVpZCwgZ2lkOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmxsOmNob3duIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ1aWQsICZnaWQpKQorICAgIHBhdGhfdCBwYXRoOworICAgIGxvbmcgdWlkX2wsIGdpZF9sOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZsbHwkTyZwOmNob3duIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1aWRfbCwgJmdpZF9sLAorI2lmZGVmIEhBVkVfRkNIT1dOQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworCisjaWYgIShkZWZpbmVkKEhBVkVfTENIT1dOKSB8fCBkZWZpbmVkKEhBVkVfRkNIT1dOQVQpKQorICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG93biIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyNlbmRpZgorICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNob3duIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisjaWZkZWYgX19BUFBMRV9fCisgICAgLyoKKyAgICAgKiBUaGlzIGlzIGZvciBNYWMgT1MgWCAxMC4zLCB3aGljaCBkb2Vzbid0IGhhdmUgbGNob3duLgorICAgICAqIChCdXQgd2Ugc3RpbGwgaGF2ZSBhbiBsY2hvd24gc3ltYm9sIGJlY2F1c2Ugb2Ygd2Vhay1saW5raW5nLikKKyAgICAgKiBJdCBkb2Vzbid0IGhhdmUgZmNob3duYXQgZWl0aGVyLiAgU28gdGhlcmUncyBubyBwb3NzaWJpbGl0eQorICAgICAqIG9mIGEgZ3JhY2VmdWwgZmFpbG92ZXIuCisgICAgICovCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAobGNob3duID09IE5VTEwpKSB7CisgICAgICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNob3duKHBhdGgsICh1aWRfdCkgdWlkLCAoZ2lkX3QpIGdpZCk7CisgICAgdWlkID0gKHVpZF90KXVpZF9sOworICAgIGdpZCA9ICh1aWRfdClnaWRfbDsKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2hvd24ocGF0aC5mZCwgdWlkLCBnaWQpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENIT1dOCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIHVpZCwgZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJjaG93biIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAKQEAgLTIxOTQsNyArMzA1Myw3IEBACiBQeURvY19TVFJWQVIocG9zaXhfZmNob3duX19kb2NfXywKICJmY2hvd24oZmQsIHVpZCwgZ2lkKVxuXG5cCiBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlIGRlc2NyaXB0b3JcblwKLWZkIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuICBFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjIxNyw3ICszMDc2LDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2hvd25fX2RvY19fLAogImxjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAogQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfbGNob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTIyNzksNiArMzEzOSw5IEBACiAgICAgICAgIGlmICh3YnVmMiAhPSB3YnVmKSBmcmVlKHdidWYyKTsKICAgICAgICAgcmV0dXJuIHJlc29iajsKICAgICB9CisKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTIzMTYsMTUwICszMTc5LDIyNiBAQAogfQogI2VuZGlmCiAKKyNpZiAoKCFkZWZpbmVkKEhBVkVfTElOSykpICYmIGRlZmluZWQoTVNfV0lORE9XUykpCisjZGVmaW5lIEhBVkVfTElOSyAxCisjZW5kaWYKIAogI2lmZGVmIEhBVkVfTElOSwogUHlEb2NfU1RSVkFSKHBvc2l4X2xpbmtfX2RvY19fLAotImxpbmsoc3JjLCBkc3QpXG5cblwKLUNyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuIik7CisibGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG5cCisgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuXAorc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcblwKKyAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKKyAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgcmV0dXJuIHBvc2l4XzJzdHIoYXJncywgIk8mTyY6bGluayIsIGxpbmspOwotfQotI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotCisgICAgcGF0aF90IHNyYywgZHN0OworICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4iKTsKKyAgICBCT09MIHJlc3VsdDsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9zcmMsICpvZHN0OwotICAgIGNoYXIgKnNyYywgKmRzdDsKLSAgICBCT09MIHJzbHQ7Ci0KLSAgICBQeVVuaWNvZGVPYmplY3QgKnVzcmMsICp1ZHN0OwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpsaW5rIiwgJnVzcmMsICZ1ZHN0KSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJzbHQgPSBDcmVhdGVIYXJkTGlua1coUHlVbmljb2RlX0FTX1VOSUNPREUodWRzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodXNyYyksIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChyc2x0ID09IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImxpbmsiLCBOVUxMKTsKLQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICAvKiBOYXJyb3cgc3RyaW5ncyBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6bGluayIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9kc3QpKQorICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7CisgICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfE8mTyZwOmxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLAorICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3JjID0gUHlCeXRlc19Bc1N0cmluZyhvc3JjKTsKLSAgICBkc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKG9kc3QpOworI2lmbmRlZiBIQVZFX0xJTktBVAorICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJsaW5rIiwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgogCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJzbHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LCBzcmMsIE5VTEwpOworICAgIGlmIChzcmMud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC53aWRlLCBzcmMud2lkZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0Lm5hcnJvdywgc3JjLm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5X0RFQ1JFRihvc3JjKTsKLSAgICBQeV9ERUNSRUYob2RzdCk7Ci0gICAgaWYgKHJzbHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJsaW5rIiwgTlVMTCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJsaW5rIiwgZHN0Lm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZWxzZQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0xJTktBVAorICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgICghZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmVzdWx0ID0gbGlua2F0KHNyY19kaXJfZmQsIHNyYy5uYXJyb3csCisgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QubmFycm93LAorICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gQVRfU1lNTElOS19GT0xMT1cgOiAwKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJsaW5rIiwgJmRzdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKKyAgICBwYXRoX2NsZWFudXAoJmRzdCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYKKwogCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9saXN0ZGlyX19kb2NfXywKLSJsaXN0ZGlyKFtwYXRoXSkgLT4gbGlzdF9vZl9zdHJpbmdzXG5cblwKLVJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZGlyZWN0b3J5IHRvIGxpc3QgKGRlZmF1bHQ6ICcuJylcblwKLVxuXAorImxpc3RkaXIocGF0aD0nLicpIC0+IGxpc3Rfb2ZfZmlsZW5hbWVzXG5cblwKK1JldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuXG5cCiBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG5cCi1lbnRyaWVzICcuJyBhbmQgJy4uJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4iKTsKK2VudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LlxuXAorXG5cCitwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG5cCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlc1xuXAorICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1xuXAorICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saXN0ZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogeworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIGludCBmZCA9IC0xOworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCisgICAgUHlPYmplY3QgKnY7CisgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIEJPT0wgcmVzdWx0OworICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKKyAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLworICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7CisgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLworICAgIFB5X3NzaXplX3QgbGVuID0gc2l6ZW9mKG5hbWVidWYpLTU7CisgICAgUHlPYmplY3QgKnBvID0gTlVMTDsKKyAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CisjZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQorI2lmbmRlZiBNQVhfUEFUSAorI2RlZmluZSBNQVhfUEFUSCAgICBDQ0hNQVhQQVRICisjZW5kaWYKKyAgICBjaGFyICpwdDsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07CisgICAgSERJUiAgaGRpciA9IDE7CisgICAgVUxPTkcgc3JjaGNudCA9IDE7CisgICAgRklMRUZJTkRCVUYzICAgZXA7CisgICAgQVBJUkVUIHJjOworI2Vsc2UKKyAgICBQeU9iamVjdCAqdjsKKyAgICBESVIgKmRpcnAgPSBOVUxMOworICAgIHN0cnVjdCBkaXJlbnQgKmVwOworICAgIGludCByZXR1cm5fc3RyOyAvKiBpZiBmYWxzZSwgcmV0dXJuIGJ5dGVzICovCisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLm51bGxhYmxlID0gMTsKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIHBhdGguZmQgPSAtMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIFhYWCBTaG91bGQgcmVkbyB0aGlzIHB1dHRpbmcgdGhlIChub3cgZm91cikgdmVyc2lvbnMgb2Ygb3BlbmRpcgogICAgICAgIGluIHNlcGFyYXRlIGZpbGVzIGluc3RlYWQgb2YgaGF2aW5nIHRoZW0gYWxsIGhlcmUuLi4gKi8KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKLQotICAgIFB5T2JqZWN0ICpkLCAqdjsKLSAgICBIQU5ETEUgaEZpbmRGaWxlOwotICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzVdOyAvKiBPdmVyYWxsb2NhdGUgZm9yIFxcKi4qXDAgKi8KLSAgICBjaGFyICpidWZwdHIgPSBuYW1lYnVmOwotICAgIFB5X3NzaXplX3QgbGVuID0gc2l6ZW9mKG5hbWVidWYpLTU7IC8qIG9ubHkgY2xhaW0gdG8gaGF2ZSBzcGFjZSBmb3IgTUFYX1BBVEggKi8KLQotICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxVOmxpc3RkaXIiLCAmcG8pKSB7CisgICAgaWYgKCFwYXRoLm5hcnJvdykgewogICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgUHlfVU5JQ09ERSAqd25hbWVidWYsICpwb193Y2hhcnM7CisgICAgICAgIHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAocG8gPT0gTlVMTCkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCisgICAgICAgIGlmICghcGF0aC53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KICAgICAgICAgICAgIHBvX3djaGFycyA9IEwiLiI7CiAgICAgICAgICAgICBsZW4gPSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9fd2NoYXJzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocG8pOwotICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBvKTsKKyAgICAgICAgICAgIHBvX3djaGFycyA9IHBhdGgud2lkZTsKKyAgICAgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLndpZGUpOwogICAgICAgICB9Ci0gICAgICAgIC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLworICAgICAgICAvKiBUaGUgKzUgaXMgc28gd2UgY2FuIGFwcGVuZCAiXFwqLipcMCIgKi8KICAgICAgICAgd25hbWVidWYgPSBtYWxsb2MoKGxlbiArIDUpICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIHdjc2NweSh3bmFtZWJ1ZiwgcG9fd2NoYXJzKTsKICAgICAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgd2NoID0gd25hbWVidWZbbGVuLTFdOworICAgICAgICAgICAgd2NoYXJfdCB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CiAgICAgICAgICAgICBpZiAod2NoICE9IEwnLycgJiYgd2NoICE9IEwnXFwnICYmIHdjaCAhPSBMJzonKQogICAgICAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IEwnXFwnOwogICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKLSAgICAgICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRGaXJzdEZpbGVXIiwgd25hbWVidWYpOwotICAgICAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBkbyB7CiAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KICAgICAgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgogICAgICAgICAgICAgICAgIHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkgewotICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUod0ZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjQ3MCwzOCArMzQwOSwxNiBAQAogICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgogICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZE5leHRGaWxlVyIsIHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICAgICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmROZXh0RmlsZVciLCB3bmFtZWJ1Zik7CisgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKLSAgICAgICAgaWYgKEZpbmRDbG9zZShoRmluZEZpbGUpID09IEZBTFNFKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl91bmljb2RlKCJGaW5kQ2xvc2UiLCB3bmFtZWJ1Zik7Ci0gICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bGlzdGRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUob3BhdGgpKzEgPiBNQVhfUEFUSCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKSk7Ci0gICAgbGVuID0gUHlPYmplY3RfU2l6ZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOworICAgIGxlbiA9IHBhdGgubGVuZ3RoOwogICAgIGlmIChsZW4gPiAwKSB7CiAgICAgICAgIGNoYXIgY2ggPSBuYW1lYnVmW2xlbi0xXTsKICAgICAgICAgaWYgKGNoICE9IFNFUCAmJiBjaCAhPSBBTFRTRVAgJiYgY2ggIT0gJzonKQpAQCAtMjUwOSw3ICszNDI2LDcgQEAKICAgICAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKICAgICB9CiAKLSAgICBpZiAoKGQgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQorICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjUxOCw5ICszNDM1LDEwIEBACiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJGaW5kRmlyc3RGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yKCJGaW5kRmlyc3RGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZG8gewogICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KQEAgLTI1MjgsMTQgKzM0NDYsMTQgQEAKICAgICAgICAgICAgIHN0cmNtcChGaWxlRGF0YS5jRmlsZU5hbWUsICIuLiIpICE9IDApIHsKICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoRmlsZURhdGEuY0ZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjU0Niw0NiArMzQ2NCwzMyBAQAogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCiAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJGaW5kTmV4dEZpbGUiLCBuYW1lYnVmKTsKLSAgICAgICAgICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmROZXh0RmlsZSIsIG5hbWVidWYpOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfSB3aGlsZSAocmVzdWx0ID09IFRSVUUpOwogCi0gICAgaWYgKEZpbmRDbG9zZShoRmluZEZpbGUpID09IEZBTFNFKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJGaW5kQ2xvc2UiLCBuYW1lYnVmKTsKK2V4aXQ6CisgICAgaWYgKGhGaW5kRmlsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKKyAgICAgICAgICAgIGlmIChsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiRmluZENsb3NlIiwgcGF0aC5vYmplY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorICAgIGlmICh3bmFtZWJ1ZikKKyAgICAgICAgZnJlZSh3bmFtZWJ1Zik7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAotICAgIHJldHVybiBkOworICAgIHJldHVybiBsaXN0OwogCiAjZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotCi0jaWZuZGVmIE1BWF9QQVRICi0jZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICpuYW1lLCAqcHQ7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKLSAgICBIRElSICBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgICBlcDsKLSAgICBBUElSRVQgcmM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmxpc3RkaXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9uYW1lKTsKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9uYW1lKTsKLSAgICBpZiAobGVuID49IE1BWF9QQVRIKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7CisgICAgaWYgKHBhdGgubGVuZ3RoID49IE1BWF9QQVRIKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBzdHJjcHkobmFtZWJ1ZiwgbmFtZSk7CisgICAgc3RyY3B5KG5hbWVidWYsIHBhdGgubmFycm93KTsKICAgICBmb3IgKHB0ID0gbmFtZWJ1ZjsgKnB0OyBwdCsrKQogICAgICAgICBpZiAoKnB0ID09IEFMVFNFUCkKICAgICAgICAgICAgICpwdCA9IFNFUDsKQEAgLTI1OTMsOSArMzQ5OCw4IEBACiAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwogICAgIHN0cmNweShuYW1lYnVmICsgbGVuLCAiKi4qIik7CiAKLSAgICBpZiAoKGQgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIHJjID0gRG9zRmluZEZpcnN0KG5hbWVidWYsICAgICAgICAgLyogV2lsZGNhcmQgUGF0dGVybiB0byBNYXRjaCAqLwpAQCAtMjYwNyw3ICszNTExLDkgQEAKIAogICAgIGlmIChyYyAhPSBOT19FUlJPUikgewogICAgICAgICBlcnJubyA9IEVOT0VOVDsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICBsaXN0ID0gcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoLm5hcnJvdyk7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKICAgICBpZiAoc3JjaGNudCA+IDApIHsgLyogSWYgRGlyZWN0b3J5IGlzIE5PVCBUb3RhbGx5IEVtcHR5LCAqLwpAQCAtMjYyMyw1NSArMzUyOSw3MCBAQAogCiAgICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKG5hbWVidWYpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIH0gd2hpbGUgKERvc0ZpbmROZXh0KGhkaXIsICZlcCwgc2l6ZW9mKGVwKSwgJnNyY2hjbnQpID09IE5PX0VSUk9SICYmIHNyY2hjbnQgPiAwKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYob25hbWUpOwotICAgIHJldHVybiBkOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIGxpc3Q7CiAjZWxzZQotICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpkLCAqdjsKLSAgICBESVIgKmRpcnA7Ci0gICAgc3RydWN0IGRpcmVudCAqZXA7Ci0gICAgaW50IGFyZ19pc191bmljb2RlID0gMTsKIAogICAgIGVycm5vID0gMDsKLSAgICAvKiB2IGlzIG5ldmVyIHJlYWQsIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgeWV0LiAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifFU6bGlzdGRpciIsICZ2KSkgewotICAgICAgICBhcmdfaXNfdW5pY29kZSA9IDA7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIG9uYW1lID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpsaXN0ZGlyIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb25hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAob25hbWUgPT0gTlVMTCkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCi0gICAgICAgIG9uYW1lID0gUHlCeXRlc19Gcm9tU3RyaW5nKCIuIik7Ci0gICAgfQotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9uYW1lKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZGlycCA9IG9wZW5kaXIobmFtZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZGlycCA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvbmFtZSk7Ci0gICAgfQotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIGlmIChwYXRoLmZkICE9IC0xKSB7CisgICAgICAgIC8qIGNsb3NlZGlyKCkgY2xvc2VzIHRoZSBGRCwgc28gd2UgZHVwbGljYXRlIGl0ICovCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2xvc2VkaXIoZGlycCk7CisgICAgICAgIGZkID0gZHVwKHBhdGguZmQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeV9ERUNSRUYob25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoZmQgPT0gLTEpIHsKKyAgICAgICAgICAgIGxpc3QgPSBwb3NpeF9lcnJvcigpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuX3N0ciA9IDE7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBkaXJwID0gZmRvcGVuZGlyKGZkKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpuYW1lOworICAgICAgICBpZiAocGF0aC5uYXJyb3cpIHsKKyAgICAgICAgICAgIG5hbWUgPSBwYXRoLm5hcnJvdzsKKyAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCisgICAgICAgICAgICByZXR1cm5fc3RyID0gIShQeUJ5dGVzX0NoZWNrKHBhdGgub2JqZWN0KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuYW1lID0gIi4iOworICAgICAgICAgICAgcmV0dXJuX3N0ciA9IDE7CisgICAgICAgIH0KKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcnAgPSBvcGVuZGlyKG5hbWUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIGlmIChkaXJwID09IE5VTEwpIHsKKyAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogICAgIGZvciAoOzspIHsKICAgICAgICAgZXJybm8gPSAwOwpAQCAtMjY4MiwzOCArMzYwMyw0MyBAQAogICAgICAgICAgICAgaWYgKGVycm5vID09IDApIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIGNsb3NlZGlyKGRpcnApOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvbmFtZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKCJsaXN0ZGlyIiwgJnBhdGgpOworICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZXAtPmRfbmFtZVswXSA9PSAnLicgJiYKICAgICAgICAgICAgIChOQU1MRU4oZXApID09IDEgfHwKICAgICAgICAgICAgICAoZXAtPmRfbmFtZVsxXSA9PSAnLicgJiYgTkFNTEVOKGVwKSA9PSAyKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGFyZ19pc191bmljb2RlKQorICAgICAgICBpZiAocmV0dXJuX3N0cikKICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShlcC0+ZF9uYW1lLCBOQU1MRU4oZXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZXAtPmRfbmFtZSwgTkFNTEVOKGVwKSk7CiAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKGQpOworICAgICAgICAgICAgUHlfQ0xFQVIobGlzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0NMRUFSKGQpOworICAgICAgICAgICAgUHlfQ0xFQVIobGlzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBjbG9zZWRpcihkaXJwKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvbmFtZSk7CiAKLSAgICByZXR1cm4gZDsKK2V4aXQ6CisgICAgaWYgKGRpcnAgIT0gTlVMTCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGlmIChmZCA+IC0xKQorICAgICAgICAgICAgcmV3aW5kZGlyKGRpcnApOworICAgICAgICBjbG9zZWRpcihkaXJwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIGxpc3Q7CiAKICNlbmRpZiAvKiB3aGljaCBPUyAqLwogfSAgLyogZW5kIG9mIHBvc2l4X2xpc3RkaXIgKi8KQEAgLTI3MjMsMzEgKzM2NDksMzUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBjb25zdCBjaGFyICpwYXRoOwogICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIKjJdOwogICAgIGNoYXIgKnRlbXA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKndwYXRoID0gUHlVbmljb2RlX0FTX1VOSUNPREUocG8pOwotICAgICAgICBQeV9VTklDT0RFIHdvdXRidWZbTUFYX1BBVEgqMl0sICp3b3V0YnVmcCA9IHdvdXRidWY7Ci0gICAgICAgIFB5X1VOSUNPREUgKnd0ZW1wOworICAgIFB5T2JqZWN0ICpwbzsKKworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0ZnVsbHBhdGhuYW1lIiwgJnBvKSkKKyAgICB7CisgICAgICAgIHdjaGFyX3QgKndwYXRoOworICAgICAgICB3Y2hhcl90IHdvdXRidWZbTUFYX1BBVEgqMl0sICp3b3V0YnVmcCA9IHdvdXRidWY7CisgICAgICAgIHdjaGFyX3QgKnd0ZW1wOwogICAgICAgICBEV09SRCByZXN1bHQ7CiAgICAgICAgIFB5T2JqZWN0ICp2OworCisgICAgICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdvdXRidWYpL3NpemVvZih3b3V0YnVmWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKLSAgICAgICAgaWYgKHJlc3VsdCA+IHNpemVvZih3b3V0YnVmKS9zaXplb2Yod291dGJ1ZlswXSkpIHsKLSAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKKyAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgICAgICBpZiAoIXdvdXRidWZwKQogICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGdWxsUGF0aE5hbWVXIiwgd3BhdGgpOworICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBvKTsKICAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCiAgICAgICAgICAgICBmcmVlKHdvdXRidWZwKTsKICAgICAgICAgcmV0dXJuIHY7CkBAIC0yNzU2LDE4ICszNjg2LDE2IEBACiAgICAgICAgYXJlIGFsc28gdmFsaWQuICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAieTpfZ2V0ZnVsbHBhdGhuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIHNpemVvZihvdXRidWYpL3NpemVvZihvdXRidWZbMF0pLAorICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgewogICAgICAgICB3aW4zMl9lcnJvcigiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApKSkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShvdXRidWYsIHN0cmxlbihvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLCBOVUxMKTsKQEAgLTI3ODUsMTIgKzM3MTMsMTQgQEAKICAgICBpbnQgYnVmX3NpemU7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgaW50IHJlc3VsdF9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CiAgICAgd2NoYXJfdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmaW5hbHBhdGhuYW1lIiwgJnBvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewogICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgcmV0dXJuIGEKQEAgLTI4MDksMTggKzM3MzksMTUgQEAKICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCiAgICAgICAgIE5VTEwpOwogCi0gICAgaWYoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGdldCBhIGhhbmRsZSB0byBmaWxlLiIpOwotICAgIH0KKyAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ3JlYXRlRmlsZVciLCBwbyk7CiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUKICAgICAgICB0YXJnZXQgcGF0aCBuYW1lLiAqLwogICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOwogCiAgICAgaWYoIWJ1Zl9zaXplKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSIsIHBvKTsKIAogICAgIHRhcmdldF9wYXRoID0gKHdjaGFyX3QgKiltYWxsb2MoKGJ1Zl9zaXplKzEpKnNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYoIXRhcmdldF9wYXRoKQpAQCAtMjgyOSwxMyArMzc1NiwxMyBAQAogICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCB0YXJnZXRfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKICAgICBpZighcmVzdWx0X2xlbmd0aCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW15QnlIYW5kbGUiLCBwbyk7CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaEZpbGUpKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNsb3NlSGFuZGxlIiwgcG8pOwogCiAgICAgdGFyZ2V0X3BhdGhbcmVzdWx0X2xlbmd0aF0gPSAwOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CiAgICAgZnJlZSh0YXJnZXRfcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtMjg3MiwxMyArMzc5OSwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X19pc2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKKyAgICBjb25zdCBjaGFyICpwYXRoOworICAgIFB5T2JqZWN0ICpwbzsKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9pc2RpciIsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7CisgICAgICAgIHdjaGFyX3QgKndwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cGF0aCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMjg4OSwxMSArMzgxNywxMCBAQAogICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwogICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOl9pc2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInk6X2lzZGlyIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKICAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMjkwNyw2OSArMzgzNCw3MiBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHBvc2l4X21rZGlyX19kb2NfXywKLSJta2RpcihwYXRoIFssIG1vZGU9MDc3N10pXG5cblwKLUNyZWF0ZSBhIGRpcmVjdG9yeS4iKTsKKyJta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorQ3JlYXRlIGEgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgbW9kZSA9IDA3Nzc7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHJlc3VsdDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8aTpta2RpciIsICZwbywgJm1vZGUpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQgbG9jayBhcwotICAgICAgICAgICBpdCBpcyBhIHNpbXBsZSBkZXJlZmVyZW5jZS4gKi8KLSAgICAgICAgcmVzID0gQ3JlYXRlRGlyZWN0b3J5VyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJta2RpciIsIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQgbG9jayBhcwotICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgIHJlcyA9IENyZWF0ZURpcmVjdG9yeUEocGF0aCwgTlVMTCk7CisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLndpZGUsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoIXJlcykgewotICAgICAgICB3aW4zMl9lcnJvcigibWtkaXIiLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotI2Vsc2UKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWYgKCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKFBZQ0NfVkFDUFApICkgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICByZXMgPSBta2RpcihwYXRoKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoIm1rZGlyIiwgcGF0aC5vYmplY3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogI2Vsc2UKLSAgICByZXMgPSBta2RpcihwYXRoLCBtb2RlKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWYgSEFWRV9NS0RJUkFUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gbWtkaXJhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQorICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdyk7CisjZWxzZQorICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdywgbW9kZSk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoIm1rZGlyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogI2VuZGlmCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogCkBAIC0zMDE1LDc5ICszOTQ1LDIyMCBAQAogfQogI2VuZGlmIC8qIEhBVkVfTklDRSAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKLSJyZW5hbWUob2xkLCBuZXcpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LiIpOworCisjaWZkZWYgSEFWRV9HRVRQUklPUklUWQorUHlEb2NfU1RSVkFSKHBvc2l4X2dldHByaW9yaXR5X19kb2NfXywKKyJnZXRwcmlvcml0eSh3aGljaCwgd2hvKSAtPiBjdXJyZW50X3ByaW9yaXR5XG5cblwKK0dldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqbzEsICpvMjsKLSAgICBjaGFyICpwMSwgKnAyOwotICAgIEJPT0wgcmVzdWx0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086cmVuYW1lIiwgJm8xLCAmbzIpKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZvMSkpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJm8yKSkgewotICAgICAgICBQeV9ERUNSRUYobzEpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gTW92ZUZpbGVXKFB5VW5pY29kZV9Bc1VuaWNvZGUobzEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVbmljb2RlKG8yKSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYobzEpOwotICAgIFB5X0RFQ1JFRihvMik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigicmVuYW1lIiwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotZXJyb3I6Ci0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOnJlbmFtZSIsICZwMSwgJnAyKSkKKyAgICBpbnQgd2hpY2gsIHdobywgcmV0dmFsOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ3aGljaCwgJndobykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBNb3ZlRmlsZUEocDEsIHAyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoInJlbmFtZSIsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dmFsID0gZ2V0cHJpb3JpdHkod2hpY2gsIHdobyk7CisgICAgaWYgKGVycm5vICE9IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmV0dmFsKTsKK30KKyNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCisKKworI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKK1B5RG9jX1NUUlZBUihwb3NpeF9zZXRwcmlvcml0eV9fZG9jX18sCisic2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpbykgLT4gTm9uZVxuXG5cCitTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCB3aGljaCwgd2hvLCBwcmlvLCByZXR2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaSIsICZ3aGljaCwgJndobywgJnByaW8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR2YWwgPSBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKTsKKyAgICBpZiAocmV0dmFsID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCisKKworc3RhdGljIFB5T2JqZWN0ICoKK2ludGVybmFsX3JlbmFtZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywgaW50IGlzX3JlcGxhY2UpCit7CisgICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKKyAgICBwYXRoX3Qgc3JjOworICAgIHBhdGhfdCBkc3Q7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkaXJfZmRfc3BlY2lmaWVkOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgZm9ybWF0WzI0XTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCT09MIHJlc3VsdDsKKyAgICBpbnQgZmxhZ3MgPSBpc19yZXBsYWNlID8gTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyA6IDA7CiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8yc3RyKGFyZ3MsICJPJk8mOnJlbmFtZSIsIHJlbmFtZSk7CisgICAgaW50IHJlc3VsdDsKICNlbmRpZgorCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIHN0cmNweShmb3JtYXQsICJPJk8mfCRPJk8mOiIpOworICAgIHN0cmNhdChmb3JtYXQsIGZ1bmN0aW9uX25hbWUpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgZm9ybWF0LCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRpcl9mZF9zcGVjaWZpZWQgPSAoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpOworI2lmbmRlZiBIQVZFX1JFTkFNRUFUCisgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoc3JjLndpZGUpCisgICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy53aWRlLCBkc3Qud2lkZSwgZmxhZ3MpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoZnVuY3Rpb25fbmFtZSwgZHN0Lm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNlbHNlCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfUkVOQU1FQVQKKyAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKGZ1bmN0aW9uX25hbWUsICZkc3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCitQeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKKyJyZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cblwKK1xuXAorSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcblxuXAorUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi5cblwKK1xuXAorSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShhcmdzLCBrd2FyZ3MsIDEpOworfQogCiBQeURvY19TVFJWQVIocG9zaXhfcm1kaXJfX2RvY19fLAotInJtZGlyKHBhdGgpXG5cblwKLVJlbW92ZSBhIGRpcmVjdG9yeS4iKTsKKyJybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorUmVtb3ZlIGEgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gd2luMzJfMXN0cihhcmdzLCAicm1kaXIiLCAieTpybWRpciIsIFJlbW92ZURpcmVjdG9yeUEsICJVOnJtZGlyIiwgUmVtb3ZlRGlyZWN0b3J5Vyk7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJtZGlyIiwga2V5d29yZHMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAogI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6cm1kaXIiLCBybWRpcik7CisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgotfQorICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLQotUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXRfX2RvY19fLAotInN0YXQocGF0aCkgLT4gc3RhdCByZXN1bHRcblxuXAotUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpzdGF0IiwgU1RBVCwgIlU6c3RhdCIsIHdpbjMyX3N0YXRfdyk7CisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOnN0YXQiLCBTVEFULCBOVUxMLCBOVUxMKTsKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgQVRfUkVNT1ZFRElSKTsKKyAgICBlbHNlCiAjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gcm1kaXIocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigicm1kaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIApAQCAtMzE3OSwxNjMgKzQyNTAsNDY4IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfdW5saW5rX19kb2NfXywKLSJ1bmxpbmsocGF0aClcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUocGF0aCkpLiIpOworInVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUoKSkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmVfX2RvY19fLAotInJlbW92ZShwYXRoKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluayhwYXRoKSkuIik7CisicmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluaygpKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF91bmxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gd2luMzJfMXN0cihhcmdzLCAicmVtb3ZlIiwgInk6cmVtb3ZlIiwgRGVsZXRlRmlsZUEsCi0gICAgICAgICAgICAgICAgICAgICAgIlU6cmVtb3ZlIiwgUHlfRGVsZXRlRmlsZVcpOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpyZW1vdmUiLCB1bmxpbmspOworICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCiAjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBQeV9EZWxldGVGaWxlVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gRGVsZXRlRmlsZUEocGF0aC5uYXJyb3cpOworICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisjZWxzZQorI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCAwKTsKKyAgICBlbHNlCisjZW5kaWYgLyogSEFWRV9VTkxJTktBVCAqLworICAgICAgICByZXN1bHQgPSB1bmxpbmsocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigidW5saW5rIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAKLSNpZmRlZiBIQVZFX1VOQU1FCiBQeURvY19TVFJWQVIocG9zaXhfdW5hbWVfX2RvY19fLAotInVuYW1lKCkgLT4gKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKVxuXG5cCi1SZXR1cm4gYSB0dXBsZSBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworInVuYW1lKCkgLT4gdW5hbWVfcmVzdWx0XG5cblwKK1JldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS5cblwKK1RoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcblwKKyAgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKSIpOwogCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB1bmFtZV9yZXN1bHRfZmllbGRzW10gPSB7CisgICAgeyJzeXNuYW1lIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gbmFtZSJ9LAorICAgIHsibm9kZW5hbWUiLCAgICJuYW1lIG9mIG1hY2hpbmUgb24gbmV0d29yayAoaW1wbGVtZW50YXRpb24tZGVmaW5lZCkifSwKKyAgICB7InJlbGVhc2UiLCAgICAib3BlcmF0aW5nIHN5c3RlbSByZWxlYXNlIn0sCisgICAgeyJ2ZXJzaW9uIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiJ9LAorICAgIHsibWFjaGluZSIsICAgICJoYXJkd2FyZSBpZGVudGlmaWVyIn0sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIodW5hbWVfcmVzdWx0X19kb2NfXywKKyJ1bmFtZV9yZXN1bHQ6IFJlc3VsdCBmcm9tIG9zLnVuYW1lKCkuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBhbmQgbWFjaGluZS5cblwKK1xuXAorU2VlIG9zLnVuYW1lIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHVuYW1lX3Jlc3VsdF9kZXNjID0geworICAgICJ1bmFtZV9yZXN1bHQiLCAvKiBuYW1lICovCisgICAgdW5hbWVfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgdW5hbWVfcmVzdWx0X2ZpZWxkcywKKyAgICA1Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFVuYW1lUmVzdWx0VHlwZTsKKworCisjaWZkZWYgSEFWRV9VTkFNRQogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3VuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIHN0cnVjdCB1dHNuYW1lIHU7CiAgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gdW5hbWUoJnUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoc3Nzc3MpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnN5c25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS5ub2RlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnJlbGVhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS52ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUubWFjaGluZSk7CisKKyAgICB2YWx1ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZVbmFtZVJlc3VsdFR5cGUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBTRVQoaSwgZmllbGQpIFwKKyAgICB7IFwKKyAgICBQeU9iamVjdCAqbyA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShmaWVsZCwgc3RybGVuKGZpZWxkKSwgTlVMTCk7IFwKKyAgICBpZiAoIW8pIHsgXAorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2YWx1ZSwgaSwgbyk7IFwKKyAgICB9IFwKKworICAgIFNFVCgwLCB1LnN5c25hbWUpOworICAgIFNFVCgxLCB1Lm5vZGVuYW1lKTsKKyAgICBTRVQoMiwgdS5yZWxlYXNlKTsKKyAgICBTRVQoMywgdS52ZXJzaW9uKTsKKyAgICBTRVQoNCwgdS5tYWNoaW5lKTsKKworI3VuZGVmIFNFVAorCisgICAgcmV0dXJuIHZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KIAotc3RhdGljIGludAotZXh0cmFjdF90aW1lKFB5T2JqZWN0ICp0LCB0aW1lX3QqIHNlYywgbG9uZyogdXNlYykKLXsKLSAgICB0aW1lX3QgaW50dmFsOwotICAgIGlmIChQeUZsb2F0X0NoZWNrKHQpKSB7Ci0gICAgICAgIGRvdWJsZSB0dmFsID0gUHlGbG9hdF9Bc0RvdWJsZSh0KTsKLSAgICAgICAgUHlPYmplY3QgKmludG9iaiA9IFB5TnVtYmVyX0xvbmcodCk7Ci0gICAgICAgIGlmICghaW50b2JqKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgICAgICBpbnR2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhpbnRvYmopOwotI2Vsc2UKLSAgICAgICAgaW50dmFsID0gUHlMb25nX0FzTG9uZyhpbnRvYmopOwotI2VuZGlmCi0gICAgICAgIFB5X0RFQ1JFRihpbnRvYmopOwotICAgICAgICBpZiAoaW50dmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICpzZWMgPSBpbnR2YWw7Ci0gICAgICAgICp1c2VjID0gKGxvbmcpKCh0dmFsIC0gaW50dmFsKSAqIDFlNik7IC8qIGNhbid0IGV4Y2VlZCAxMDAwMDAwICovCi0gICAgICAgIGlmICgqdXNlYyA8IDApCi0gICAgICAgICAgICAvKiBJZiByb3VuZGluZyBnYXZlIHVzIGEgbmVnYXRpdmUgbnVtYmVyLAotICAgICAgICAgICAgICAgdHJ1bmNhdGUuICAqLwotICAgICAgICAgICAgKnVzZWMgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgaW50dmFsID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodCk7Ci0jZWxzZQotICAgIGludHZhbCA9IFB5TG9uZ19Bc0xvbmcodCk7Ci0jZW5kaWYKLSAgICBpZiAoaW50dmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICAqc2VjID0gaW50dmFsOwotICAgICp1c2VjID0gMDsKLSAgICByZXR1cm4gMDsKLX0KIAogUHlEb2NfU1RSVkFSKHBvc2l4X3V0aW1lX19kb2NfXywKLSJ1dGltZShwYXRoLCAoYXRpbWUsIG10aW1lKSlcblwKLXV0aW1lKHBhdGgsIE5vbmUpXG5cblwKLVNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmaWxlIHRvIHRoZSBnaXZlbiB2YWx1ZXMuICBJZiB0aGVcblwKLXNlY29uZCBmb3JtIGlzIHVzZWQsIHNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyB0byB0aGUgY3VycmVudCB0aW1lLiIpOworInV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblwKK1NldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK1xuXAorSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcblwKKyAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cblwKK0lmIG5zIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7XG5cCisgICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kc1xuXAorICAgIHNpbmNlIHRoZSBlcG9jaC5cblwKK0lmIGJvdGggdGltZXMgYW5kIG5zIGFyZSBOb25lLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuXG5cCitTcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGhcblwKKyAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKmFyZzsKLSAgICBQeVVuaWNvZGVPYmplY3QgKm9id3BhdGg7Ci0gICAgd2NoYXJfdCAqd3BhdGggPSBOVUxMOwotICAgIFB5T2JqZWN0ICpvYXBhdGg7Ci0gICAgY2hhciAqYXBhdGg7Ci0gICAgSEFORExFIGhGaWxlOwotICAgIHRpbWVfdCBhdGltZXNlYywgbXRpbWVzZWM7Ci0gICAgbG9uZyBhdXNlYywgbXVzZWM7Ci0gICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCAgICBub3c7CisgICAgdGltZV90IGF0aW1lX3M7CisgICAgbG9uZyAgIGF0aW1lX25zOworICAgIHRpbWVfdCBtdGltZV9zOworICAgIGxvbmcgICBtdGltZV9uczsKK30gdXRpbWVfdDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVT3w6dXRpbWUiLCAmb2J3cGF0aCwgJmFyZykpIHsKLSAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYndwYXRoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHdwYXRoLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJ1dGltZSIsIHdwYXRoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKy8qCisgKiB0aGVzZSBtYWNyb3MgYXNzdW1lIHRoYXQgInV0aW1lIiBpcyBhIHBvaW50ZXIgdG8gYSB1dGltZV90CisgKiB0aGV5IGFsc28gaW50ZW50aW9uYWxseSBsZWFrIHRoZSBkZWNsYXJhdGlvbiBvZiBhIHBvaW50ZXIgbmFtZWQgInRpbWUiCisgKi8KKyNkZWZpbmUgVVRJTUVfVE9fVElNRVNQRUMgXAorICAgIHN0cnVjdCB0aW1lc3BlYyB0c1syXTsgXAorICAgIHN0cnVjdCB0aW1lc3BlYyAqdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdHNbMF0udHZfc2VjID0gdXRpbWUtPmF0aW1lX3M7IFwKKyAgICAgICAgdHNbMF0udHZfbnNlYyA9IHV0aW1lLT5hdGltZV9uczsgXAorICAgICAgICB0c1sxXS50dl9zZWMgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0c1sxXS50dl9uc2VjID0gdXRpbWUtPm10aW1lX25zOyBcCisgICAgICAgIHRpbWUgPSB0czsgXAorICAgIH0gXAogCi0gICAgaWYgKCF3cGF0aCkgewotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzp1dGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvYXBhdGgsICZhcmcpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvYXBhdGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoYXBhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBhcGF0aCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2FwYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihvYXBhdGgpOworI2RlZmluZSBVVElNRV9UT19USU1FVkFMIFwKKyAgICBzdHJ1Y3QgdGltZXZhbCB0dlsyXTsgXAorICAgIHN0cnVjdCB0aW1ldmFsICp0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0dlswXS50dl9zZWMgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0dlswXS50dl91c2VjID0gdXRpbWUtPmF0aW1lX25zIC8gMTAwMDsgXAorICAgICAgICB0dlsxXS50dl9zZWMgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0dlsxXS50dl91c2VjID0gdXRpbWUtPm10aW1lX25zIC8gMTAwMDsgXAorICAgICAgICB0aW1lID0gdHY7IFwKKyAgICB9IFwKKworI2RlZmluZSBVVElNRV9UT19VVElNQlVGIFwKKyAgICBzdHJ1Y3QgdXRpbWJ1ZiB1WzJdOyBcCisgICAgc3RydWN0IHV0aW1idWYgKnRpbWU7IFwKKyAgICBpZiAodXRpbWUtPm5vdykgXAorICAgICAgICB0aW1lID0gTlVMTDsgXAorICAgIGVsc2UgeyBcCisgICAgICAgIHUuYWN0aW1lID0gdXRpbWUtPmF0aW1lX3M7IFwKKyAgICAgICAgdS5tb2R0aW1lID0gdXRpbWUtPm10aW1lX3M7IFwKKyAgICAgICAgdGltZSA9IHU7IFwKICAgICB9CiAKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKKyNkZWZpbmUgVVRJTUVfVE9fVElNRV9UIFwKKyAgICB0aW1lX3QgdGltZXRbMl07IFwKKyAgICBzdHJ1Y3QgdGltZXQgdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdGltZXRbMF0gPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0aW1ldFsxXSA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHRpbWUgPSAmdGltZXQ7IFwKKyAgICB9IFwKKworCisjZGVmaW5lIFVUSU1FX0hBVkVfRElSX0ZEIChkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKSkKKworI2lmIFVUSU1FX0hBVkVfRElSX0ZECisKK3N0YXRpYyBpbnQKK3V0aW1lX2Rpcl9mZCh1dGltZV90ICp1dGltZSwgaW50IGRpcl9mZCwgY2hhciAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIGludCBmbGFncyA9IGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XOworICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoZGlyX2ZkLCBwYXRoLCB0aW1lLCBmbGFncyk7CisjZWxpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKQorICAgIFVUSU1FX1RPX1RJTUVWQUw7CisgICAgLyoKKyAgICAgKiBmb2xsb3dfc3ltbGlua3Mgd2lsbCBuZXZlciBiZSBmYWxzZSBoZXJlOworICAgICAqIHdlIG9ubHkgYWxsb3cgIWZvbGxvd19zeW1saW5rcyBhbmQgZGlyX2ZkIHRvZ2V0aGVyCisgICAgICogaWYgd2UgaGF2ZSB1dGltZW5zYXQoKQorICAgICAqLworICAgIGFzc2VydChmb2xsb3dfc3ltbGlua3MpOworICAgIHJldHVybiBmdXRpbWVzYXQoZGlyX2ZkLCBwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworI2RlZmluZSBVVElNRV9IQVZFX0ZEIChkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKSkKKworI2lmIFVUSU1FX0hBVkVfRkQKKworc3RhdGljIGludAordXRpbWVfZmQodXRpbWVfdCAqdXRpbWUsIGludCBmZCkKK3sKKyNpZmRlZiBIQVZFX0ZVVElNRU5TCisgICAgVVRJTUVfVE9fVElNRVNQRUM7CisgICAgcmV0dXJuIGZ1dGltZW5zKGZkLCB0aW1lKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gZnV0aW1lcyhmZCwgdGltZSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKKworI2RlZmluZSBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTIFwKKyAgICAgICAgKGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKSkKKworI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKworc3RhdGljIGludAordXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXRpbWUsIGNoYXIgKnBhdGgpCit7CisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gdXRpbWVuc2F0KERFRkFVTFRfRElSX0ZELCBwYXRoLCB0aW1lLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gbHV0aW1lcyhwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworI2lmbmRlZiBNU19XSU5ET1dTCisKK3N0YXRpYyBpbnQKK3V0aW1lX2RlZmF1bHQodXRpbWVfdCAqdXRpbWUsIGNoYXIgKnBhdGgpCit7CisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gdXRpbWVuc2F0KERFRkFVTFRfRElSX0ZELCBwYXRoLCB0aW1lLCAwKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9VVElNRVMpCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gdXRpbWVzKHBhdGgsIHRpbWUpOworI2VsaWYgZGVmaW5lZChIQVZFX1VUSU1FX0gpCisgICAgVVRJTUVfVE9fVVRJTUJVRjsKKyAgICByZXR1cm4gdXRpbWUocGF0aCwgdGltZSk7CisjZWxzZQorICAgIFVUSU1FX1RPX1RJTUVfVDsKKyAgICByZXR1cm4gdXRpbWUocGF0aCwgdGltZSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKK3N0YXRpYyBpbnQKK3NwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlPYmplY3QgKnB5X2xvbmcsIHRpbWVfdCAqcywgbG9uZyAqbnMpCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgUHlPYmplY3QgKmRpdm1vZDsKKyAgICBkaXZtb2QgPSBQeU51bWJlcl9EaXZtb2QocHlfbG9uZywgYmlsbGlvbik7CisgICAgaWYgKCFkaXZtb2QpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAqcyA9IF9QeUxvbmdfQXNUaW1lX3QoUHlUdXBsZV9HRVRfSVRFTShkaXZtb2QsIDApKTsKKyAgICBpZiAoKCpzID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgKm5zID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRpdm1vZCwgMSkpOworICAgIGlmICgoKm5zID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICByZXN1bHQgPSAxOworZXhpdDoKKyAgICBQeV9YREVDUkVGKGRpdm1vZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIHV0aW1lX3QgdXRpbWU7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhGaWxlOworICAgIEZJTEVUSU1FIGF0aW1lLCBtdGltZTsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgorCisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWYgVVRJTUVfSEFWRV9GRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAgICAgIk8mfE8kT08mcDp1dGltZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgJnRpbWVzLCAmbnMsCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAorI2VuZGlmCisgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzCisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkgJiYgbnMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidXRpbWU6IHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIgJ3RpbWVzJyIKKyAgICAgICAgICAgICAgICAgICAgICIgb3IgJ25zJyBidXQgbm90IGJvdGgiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkpIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QodGltZXMpIHx8IChQeVR1cGxlX1NpemUodGltZXMpICE9IDIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogJ3RpbWVzJyBtdXN0IGJlIGVpdGhlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGEgdHVwbGUgb2YgdHdvIGludHMgb3IgTm9uZSIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHV0aW1lLm5vdyA9IDA7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlUdXBsZV9HRVRfSVRFTSh0aW1lcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnV0aW1lLmF0aW1lX3MsICZ1dGltZS5hdGltZV9ucykgPT0gLTEgfHwKKyAgICAgICAgICAgIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUubXRpbWVfcywgJnV0aW1lLm10aW1lX25zKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG5zKSB7CisgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KG5zKSB8fCAoUHlUdXBsZV9TaXplKG5zKSAhPSAyKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidXRpbWU6ICducycgbXVzdCBiZSBhIHR1cGxlIG9mIHR3byBpbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdXRpbWUubm93ID0gMDsKKyAgICAgICAgaWYgKCFzcGxpdF9weV9sb25nX3RvX3NfYW5kX25zKFB5VHVwbGVfR0VUX0lURU0obnMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUuYXRpbWVfcywgJnV0aW1lLmF0aW1lX25zKSB8fAorICAgICAgICAgICAgIXNwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlUdXBsZV9HRVRfSVRFTShucywgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUubXRpbWVfcywgJnV0aW1lLm10aW1lX25zKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiB0aW1lcyBhbmQgbnMgYXJlIGJvdGggTm9uZS91bnNwZWNpZmllZC4gdXNlICJub3ciLiAqLworICAgICAgICB1dGltZS5ub3cgPSAxOworICAgIH0KKworI2lmICFVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKKyAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgJnBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworI2lmICFkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidXRpbWU6IGNhbm5vdCB1c2UgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgIgorICAgICAgICAgICAgICAgICAgICAgInRvZ2V0aGVyIG9uIHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgud2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgidXRpbWUiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAodXRpbWUubm93KSB7CiAgICAgICAgIFNZU1RFTVRJTUUgbm93OwogICAgICAgICBHZXRTeXN0ZW1UaW1lKCZub3cpOwogICAgICAgICBpZiAoIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZtdGltZSkgfHwKICAgICAgICAgICAgICFTeXN0ZW1UaW1lVG9GaWxlVGltZSgmbm93LCAmYXRpbWUpKSB7CiAgICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpIHx8IFB5VHVwbGVfU2l6ZShhcmcpICE9IDIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZSgpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKSIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmYXRpbWVzZWMsICZhdXNlYykgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIHRpbWVfdF90b19GSUxFX1RJTUUoYXRpbWVzZWMsIDEwMDAqYXVzZWMsICZhdGltZSk7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZtdGltZXNlYywgJm11c2VjKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRShtdGltZXNlYywgMTAwMCptdXNlYywgJm10aW1lKTsKKyAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKKyAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5tdGltZV9zLCB1dGltZS5tdGltZV9ucywgJm10aW1lKTsKICAgICB9CiAgICAgaWYgKCFTZXRGaWxlVGltZShoRmlsZSwgTlVMTCwgJmF0aW1lLCAmbXRpbWUpKSB7CiAgICAgICAgIC8qIEF2b2lkIHB1dHRpbmcgdGhlIGZpbGUgbmFtZSBpbnRvIHRoZSBlcnJvciBoZXJlLApAQCAtMzM0Myw5MyArNDcxOSw1MiBAQAogICAgICAgICAgICBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgZmlsZSwgd2hlbiBpdCBhbHNvCiAgICAgICAgICAgIGNvdWxkIGJlIHRoZSB0aW1lIHN0YW1wIHRoYXQgZ2l2ZXMgYSBwcm9ibGVtLiAqLwogICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKLSAgICAgICAgZ290byBkb25lOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXN1bHQgPSBQeV9Ob25lOwotZG9uZToKLSAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICB0aW1lX3QgYXRpbWUsIG10aW1lOwotICAgIGxvbmcgYXVzZWMsIG11c2VjOwotICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QqIGFyZzsKKyNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfVVRJTUVTKQotICAgIHN0cnVjdCB0aW1ldmFsIGJ1ZlsyXTsKLSNkZWZpbmUgQVRJTUUgYnVmWzBdLnR2X3NlYwotI2RlZmluZSBNVElNRSBidWZbMV0udHZfc2VjCi0jZWxpZiBkZWZpbmVkKEhBVkVfVVRJTUVfSCkKLS8qIFhYWCBzaG91bGQgZGVmaW5lIHN0cnVjdCB1dGltYnVmIGluc3RlYWQsIGFib3ZlICovCi0gICAgc3RydWN0IHV0aW1idWYgYnVmOwotI2RlZmluZSBBVElNRSBidWYuYWN0aW1lCi0jZGVmaW5lIE1USU1FIGJ1Zi5tb2R0aW1lCi0jZGVmaW5lIFVUSU1FX0FSRyAmYnVmCi0jZWxzZSAvKiBIQVZFX1VUSU1FUyAqLwotICAgIHRpbWVfdCBidWZbMl07Ci0jZGVmaW5lIEFUSU1FIGJ1ZlswXQotI2RlZmluZSBNVElNRSBidWZbMV0KLSNkZWZpbmUgVVRJTUVfQVJHIGJ1ZgotI2VuZGlmIC8qIEhBVkVfVVRJTUVTICovCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKyAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKCFmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXN1bHQgPSB1dGltZV9kaXJfZmQoJnV0aW1lLCBkaXJfZmQsIHBhdGgubmFycm93LCBmb2xsb3dfc3ltbGlua3MpOworICAgIGVsc2UKKyNlbmRpZgogCisjaWYgVVRJTUVfSEFWRV9GRAorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86dXRpbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogb3B0aW9uYWwgdGltZSB2YWx1ZXMgbm90IGdpdmVuICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWUocGF0aCwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gdXRpbWVfZGVmYXVsdCgmdXRpbWUsIHBhdGgubmFycm93KTsKKworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAvKiBzZWUgcHJldmlvdXMgY29tbWVudCBhYm91dCBub3QgcHV0dGluZyBmaWxlbmFtZSBpbiBlcnJvciBoZXJlICovCisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSB8fCBQeVR1cGxlX1NpemUoYXJnKSAhPSAyKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXRpbWUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lLCBtdGltZSkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmYXRpbWUsICZhdXNlYykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmbXRpbWUsICZtdXNlYykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBBVElNRSA9IGF0aW1lOwotICAgICAgICBNVElNRSA9IG10aW1lOwotI2lmZGVmIEhBVkVfVVRJTUVTCi0gICAgICAgIGJ1ZlswXS50dl91c2VjID0gYXVzZWM7Ci0gICAgICAgIGJ1ZlsxXS50dl91c2VjID0gbXVzZWM7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWVzKHBhdGgsIGJ1Zik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZWxzZQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlcyA9IHV0aW1lKHBhdGgsIFVUSU1FX0FSRyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZW5kaWYgLyogSEFWRV9VVElNRVMgKi8KLSAgICB9Ci0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jdW5kZWYgVVRJTUVfQVJHCi0jdW5kZWYgQVRJTUUKLSN1bmRlZiBNVElNRQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwotfQogCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGhGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiAvKiBQcm9jZXNzIG9wZXJhdGlvbnMgKi8KIApAQCAtMzQ3NCw3OSArNDgwOSw3IEBACiB9CiAjZW5kaWYKIAotCi0jaWZkZWYgSEFWRV9FWEVDVgotUHlEb2NfU1RSVkFSKHBvc2l4X2V4ZWN2X19kb2NfXywKLSJleGVjdihwYXRoLCBhcmdzKVxuXG5cCi1FeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3Y7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIFB5X3NzaXplX3QgaSwgYXJnYzsKLSAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKLQotICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCi0gICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKLSAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soYXJndikpIHsKLSAgICAgICAgYXJnYyA9IFB5VHVwbGVfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5VHVwbGVfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoYXJnYyA8IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJleGVjdigpIGFyZyAyIG11c3Qgbm90IGJlIGVtcHR5Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKLSAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoKCpnZXRpdGVtKShhcmd2LCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2bGlzdFtpXSkpIHsKLSAgICAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBpKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIH0KLSAgICB9Ci0gICAgYXJndmxpc3RbYXJnY10gPSBOVUxMOwotCi0gICAgZXhlY3YocGF0aCwgYXJndmxpc3QpOwotCi0gICAgLyogSWYgd2UgZ2V0IGhlcmUgaXQncyBkZWZpbml0ZWx5IGFuIGVycm9yICovCi0KLSAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLX0KLQorI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQogc3RhdGljIGNoYXIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKQEAgLTM2MjgsODcgKzQ4OTEsMTYyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBjaGFyKioKK3BhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCit7CisgICAgaW50IGk7CisgICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCAqYXJnYzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBpdGVtID0gUHlTZXF1ZW5jZV9JVEVNKGFyZ3YsIGkpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoaXRlbSwgJmFyZ3ZsaXN0W2ldKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9CisgICAgYXJndmxpc3RbKmFyZ2NdID0gTlVMTDsKKyAgICByZXR1cm4gYXJndmxpc3Q7CitmYWlsOgorICAgICphcmdjID0gaTsKKyAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgKmFyZ2MpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0VYRUNWCitQeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAorImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKK0V4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAorXG5cCisgICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKKyAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb3BhdGg7CisgICAgY2hhciAqcGF0aDsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgUHlfc3NpemVfdCBhcmdjOworCisgICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKKyAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOworICAgIGlmIChhcmdjIDwgMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKKyAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYob3BhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7CisKKyAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KKworICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworfQorCiBQeURvY19TVFJWQVIocG9zaXhfZXhlY3ZlX19kb2NfXywKICJleGVjdmUocGF0aCwgYXJncywgZW52KVxuXG5cCiBFeGVjdXRlIGEgcGF0aCB3aXRoIGFyZ3VtZW50cyBhbmQgZW52aXJvbm1lbnQsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCiBcblwKICAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAogICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2YgYXJndW1lbnRzXG5cCi0gICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzIik7CisgICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzXG5cCitcblwKK09uIHNvbWUgcGxhdGZvcm1zLCB5b3UgbWF5IHNwZWNpZnkgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yIHBhdGg7XG5cCisgIGV4ZWN2ZSB3aWxsIGV4ZWN1dGUgdGhlIHByb2dyYW0gdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBvcGVuIHRvLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2V4ZWN2ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgcGF0aF90IHBhdGg7CiAgICAgUHlPYmplY3QgKmFyZ3YsICplbnY7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIGNoYXIgKiphcmd2bGlzdCA9IE5VTEw7CiAgICAgY2hhciAqKmVudmxpc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmdjLCBlbnZjOwotICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwotICAgIFB5X3NzaXplX3QgbGFzdGFyZyA9IDA7CisgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52aXJvbm1lbnQiLCBOVUxMfTsKIAogICAgIC8qIGV4ZWN2ZSBoYXMgdGhyZWUgYXJndW1lbnRzOiAocGF0aCwgYXJndiwgZW52KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk9POmV4ZWN2ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndiwgJmVudikpCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndiwgJmVudgorICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKKworICAgIGlmICghUHlMaXN0X0NoZWNrKGFyZ3YpICYmICFQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBhcmd2IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisgICAgYXJnYyA9IFB5U2VxdWVuY2VfU2l6ZShhcmd2KTsKICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhlbnYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlKCkgYXJnIDMgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7Ci0gICAgICAgIGdvdG8gZmFpbF8wOworICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2ZTogZW52aXJvbm1lbnQgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgbGFzdGFyZyA9IGk7Ci0gICAgICAgICAgICBnb3RvIGZhaWxfMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBsYXN0YXJnID0gYXJnYzsKLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7CiAKICAgICBlbnZsaXN0ID0gcGFyc2VfZW52bGlzdChlbnYsICZlbnZjKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWxfMTsKKyAgICAgICAgZ290byBmYWlsOwogCi0gICAgZXhlY3ZlKHBhdGgsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICBmZXhlY3ZlKHBhdGguZmQsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgZXhlY3ZlKHBhdGgubmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAotICAgICh2b2lkKSBwb3NpeF9lcnJvcigpOworICAgIHBhdGhfcG9zaXhfZXJyb3IoImV4ZWN2ZSIsICZwYXRoKTsKIAogICAgIHdoaWxlICgtLWVudmMgPj0gMCkKICAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwogICAgIFB5TWVtX0RFTChlbnZsaXN0KTsKLSAgZmFpbF8xOgotICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBsYXN0YXJnKTsKLSAgZmFpbF8wOgotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgIGZhaWw6CisgICAgaWYgKGFyZ3ZsaXN0KQorICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCkBAIC00MTUzLDYgKzU0OTEsNDA1IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU0NIRURfSAorCisjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSlcblxuXAorR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvbGljeSwgbWF4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAmcG9saWN5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWF4ID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpOworICAgIGlmIChtYXggPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1heCk7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSlcblxuXAorR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvbGljeSwgbWluOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAmcG9saWN5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWluID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpOworICAgIGlmIChtaW4gPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1pbik7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVggKi8KKworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX2dldHNjaGVkdWxlcihwaWQpXG5cblwKK0dldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIHdpdGggYSBQSUQgb2YgKnBpZCouXG5cCitQYXNzaW5nIGEgUElEIG9mIDAgcmV0dXJucyB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgcG9saWN5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcG9saWN5ID0gc2NoZWRfZ2V0c2NoZWR1bGVyKHBpZCk7CisgICAgaWYgKHBvbGljeSA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocG9saWN5KTsKK30KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK3N0YXRpYyBQeU9iamVjdCAqCitzY2hlZF9wYXJhbV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzY2hlZF9wYXJhbSIsIGt3bGlzdCwgJnByaW9yaXR5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcodHlwZSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihwcmlvcml0eSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIoc2NoZWRfcGFyYW1fX2RvY19fLAorInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KTogQSBzY2hlZHVsaW5nIHBhcmFtZXRlci5cblxuXAorQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5Iik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHNjaGVkX3BhcmFtX2ZpZWxkc1tdID0geworICAgIHsic2NoZWRfcHJpb3JpdHkiLCAidGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc2NoZWRfcGFyYW1fZGVzYyA9IHsKKyAgICAic2NoZWRfcGFyYW0iLCAvKiBuYW1lICovCisgICAgc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KKyAgICBzY2hlZF9wYXJhbV9maWVsZHMsCisgICAgMQorfTsKKworc3RhdGljIGludAorY29udmVydF9zY2hlZF9wYXJhbShQeU9iamVjdCAqcGFyYW0sIHN0cnVjdCBzY2hlZF9wYXJhbSAqcmVzKQoreworICAgIGxvbmcgcHJpb3JpdHk7CisKKyAgICBpZiAoUHlfVFlQRShwYXJhbSkgIT0gJlNjaGVkUGFyYW1UeXBlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtdXN0IGhhdmUgYSBzY2hlZF9wYXJhbSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByaW9yaXR5ID0gUHlMb25nX0FzTG9uZyhQeVN0cnVjdFNlcXVlbmNlX0dFVF9JVEVNKHBhcmFtLCAwKSk7CisgICAgaWYgKHByaW9yaXR5ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChwcmlvcml0eSA+IElOVF9NQVggfHwgcHJpb3JpdHkgPCBJTlRfTUlOKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic2NoZWRfcHJpb3JpdHkgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXMtPnNjaGVkX3ByaW9yaXR5ID0gUHlfU0FGRV9ET1dOQ0FTVChwcmlvcml0eSwgbG9uZywgaW50KTsKKyAgICByZXR1cm4gMTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfXywKKyJzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksIHBhcmFtKVxuXG5cCitTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5LCAqcG9saWN5KiwgZm9yICpwaWQqLlxuXAorSWYgKnBpZCogaXMgMCwgdGhlIGNhbGxpbmcgcHJvY2VzcyBpcyBjaGFuZ2VkLlxuXAorKnBhcmFtKiBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3NldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmcG9saWN5LCAmY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKgorICAgICoqIHNjaGVkX3NldHNjaGVkdWxlcigpIHJldHVybnMgMCBpbiBMaW51eCwgYnV0IHRoZSBwcmV2aW91cworICAgICoqIHNjaGVkdWxpbmcgcG9saWN5IHVuZGVyIFNvbGFyaXMvSWxsdW1vcywgYW5kIG90aGVycy4KKyAgICAqKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgaW4gYWxsIE9wZXJhdGluZyBTeXN0ZW1zLgorICAgICovCisgICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgJnBhcmFtKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAorInNjaGVkX2dldHBhcmFtKHBpZCkgLT4gc2NoZWRfcGFyYW1cblxuXAorUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIHdpdGggKnBpZCogYXMgYW4gaW5zdGFuY2Ugb2YgdGhlXG5cCitzY2hlZF9wYXJhbSBjbGFzcy4gQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisgICAgUHlPYmplY3QgKnJlcywgKnByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfZ2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2NoZWRQYXJhbVR5cGUpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwcmlvcml0eSA9IFB5TG9uZ19Gcm9tTG9uZyhwYXJhbS5zY2hlZF9wcmlvcml0eSk7CisgICAgaWYgKCFwcmlvcml0eSkgeworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfXywKKyJzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKVxuXG5cCitTZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciBhIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCitBIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9zZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfc2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKKyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKSAtPiBmbG9hdFxuXG5cCitSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIGluIHNlY29uZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgaW50ZXJ2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCwgJmludGVydmFsKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKWludGVydmFsLnR2X3NlYyArIDFlLTkqaW50ZXJ2YWwudHZfbnNlYyk7Cit9CisKKyNlbmRpZgorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfeWllbGRfX2RvY19fLAorInNjaGVkX3lpZWxkKClcblxuXAorVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfeWllbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgaWYgKHNjaGVkX3lpZWxkKCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorCisvKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQ1BVcyBhbGxvY2F0ZWQgaW4gYSBjcHVfc2V0X3QgKi8KK3N0YXRpYyBjb25zdCBpbnQgTkNQVVNfU1RBUlQgPSBzaXplb2YodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVDsKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKKyJzY2hlZF9zZXRhZmZpbml0eShwaWQsIGNwdV9zZXQpXG5cblwKK1NldCB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogdG8gKmNwdV9zZXQqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgbmNwdXM7CisgICAgc2l6ZV90IHNldHNpemU7CisgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGUsICppdGVyYXRvciA9IE5VTEwsICppdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmaXRlcmFibGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmNwdXMgPSBOQ1BVU19TVEFSVDsKKyAgICBzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmNwdXMpOworICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOworICAgIGlmIChtYXNrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgQ1BVX1pFUk9fUyhzZXRzaXplLCBtYXNrKTsKKworICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkpIHsKKyAgICAgICAgbG9uZyBjcHU7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIGl0ZXJhdG9yIG9mIGludHMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJidXQgaXRlcmF0b3IgeWllbGRlZCAlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgY3B1ID0gUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICBpZiAoY3B1IDwgMCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgQ1BVIG51bWJlciIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3B1ID4gSU5UX01BWCAtIDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiQ1BVIG51bWJlciB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNwdSA+PSBuY3B1cykgeworICAgICAgICAgICAgLyogR3JvdyBDUFUgbWFzayB0byBmaXQgdGhlIENQVSBudW1iZXIgKi8KKyAgICAgICAgICAgIGludCBuZXduY3B1cyA9IG5jcHVzOworICAgICAgICAgICAgY3B1X3NldF90ICpuZXdtYXNrOworICAgICAgICAgICAgc2l6ZV90IG5ld3NldHNpemU7CisgICAgICAgICAgICB3aGlsZSAobmV3bmNwdXMgPD0gY3B1KSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld25jcHVzID4gSU5UX01BWCAvIDIpCisgICAgICAgICAgICAgICAgICAgIG5ld25jcHVzID0gY3B1ICsgMTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld25jcHVzID0gbmV3bmNwdXMgKiAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3bWFzayA9IENQVV9BTExPQyhuZXduY3B1cyk7CisgICAgICAgICAgICBpZiAobmV3bWFzayA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3c2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5ld25jcHVzKTsKKyAgICAgICAgICAgIENQVV9aRVJPX1MobmV3c2V0c2l6ZSwgbmV3bWFzayk7CisgICAgICAgICAgICBtZW1jcHkobmV3bWFzaywgbWFzaywgc2V0c2l6ZSk7CisgICAgICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgICAgIHNldHNpemUgPSBuZXdzZXRzaXplOworICAgICAgICAgICAgbWFzayA9IG5ld21hc2s7CisgICAgICAgICAgICBuY3B1cyA9IG5ld25jcHVzOworICAgICAgICB9CisgICAgICAgIENQVV9TRVRfUyhjcHUsIHNldHNpemUsIG1hc2spOworICAgIH0KKyAgICBQeV9DTEVBUihpdGVyYXRvcik7CisKKyAgICBpZiAoc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBzZXRzaXplLCBtYXNrKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKKworZXJyb3I6CisgICAgaWYgKG1hc2spCisgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgIFB5X1hERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX2dldGFmZmluaXR5KHBpZCwgbmNwdXMpIC0+IGNwdV9zZXRcblxuXAorUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi5cblwKK1RoZSByZXR1cm5lZCBjcHVfc2V0IHdpbGwgYmUgb2Ygc2l6ZSAqbmNwdXMqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CisgICAgc2l6ZV90IHNldHNpemU7CisgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CisgICAgICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOworICAgICAgICBpZiAobWFzayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGlmIChzY2hlZF9nZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgICAgIGlmIChlcnJubyAhPSBFSU5WQUwpCisgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgaWYgKG5jcHVzID4gSU5UX01BWCAvIDIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiY291bGQgbm90IGFsbG9jYXRlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSBsYXJnZSBlbm91Z2ggQ1BVIHNldCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmNwdXMgPSBuY3B1cyAqIDI7CisgICAgfQorCisgICAgcmVzID0gUHlTZXRfTmV3KE5VTEwpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBmb3IgKGNwdSA9IDAsIGNvdW50ID0gQ1BVX0NPVU5UX1Moc2V0c2l6ZSwgbWFzayk7IGNvdW50OyBjcHUrKykgeworICAgICAgICBpZiAoQ1BVX0lTU0VUX1MoY3B1LCBzZXRzaXplLCBtYXNrKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNwdV9udW0gPSBQeUxvbmdfRnJvbUxvbmcoY3B1KTsKKyAgICAgICAgICAgIC0tY291bnQ7CisgICAgICAgICAgICBpZiAoY3B1X251bSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHJlcywgY3B1X251bSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3B1X251bSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihjcHVfbnVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDUFVfRlJFRShtYXNrKTsKKyAgICByZXR1cm4gcmVzOworCitlcnJvcjoKKyAgICBpZiAobWFzaykKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgUHlfWERFQ1JFRihyZXMpOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSAqLworCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCisKIC8qIEFJWCB1c2VzIC9kZXYvcHRjIGJ1dCBpcyBvdGhlcndpc2UgdGhlIHNhbWUgYXMgL2Rldi9wdG14ICovCiAvKiBJUklYIGhhcyBib3RoIC9kZXYvcHRjIGFuZCAvZGV2L3B0bXgsIHVzZSBwdG14ICovCiAjaWYgZGVmaW5lZChIQVZFX0RFVl9QVEMpICYmICFkZWZpbmVkKEhBVkVfREVWX1BUTVgpCkBAIC00Mjc5LDYgKzYwMTYsNyBAQAogfQogI2VuZGlmCiAKKwogI2lmZGVmIEhBVkVfR0VURUdJRAogUHlEb2NfU1RSVkFSKHBvc2l4X2dldGVnaWRfX2RvY19fLAogImdldGVnaWQoKSAtPiBlZ2lkXG5cblwKQEAgLTQzMjgsNiArNjA2Niw3MCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CiAKKyNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAorUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX18sCisiZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKSAtPiBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25nc1xuXG5cCitSZXR1cm5zIGEgbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3MuXG5cblwKKyAgICB1c2VyOiB1c2VybmFtZSB0byBsb29rdXBcblwKKyAgICBncm91cDogYmFzZSBncm91cCBpZCBvZiB0aGUgdXNlciIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZ2V0Z3JvdXBsaXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBOR1JPVVBTX01BWAorI2RlZmluZSBNQVhfR1JPVVBTIE5HUk9VUFNfTUFYCisjZWxzZQorICAgIC8qIGRlZmluZWQgdG8gYmUgMTYgb24gU29sYXJpczcsIHNvIHRoaXMgc2hvdWxkIGJlIGEgc21hbGwgbnVtYmVyICovCisjZGVmaW5lIE1BWF9HUk9VUFMgNjQKKyNlbmRpZgorCisgICAgY29uc3QgY2hhciAqdXNlcjsKKyAgICBpbnQgaSwgbmdyb3VwczsKKyAgICBQeU9iamVjdCAqbGlzdDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICBpbnQgKmdyb3VwcywgYmFzZWdpZDsKKyNlbHNlCisgICAgZ2lkX3QgKmdyb3VwcywgYmFzZWdpZDsKKyNlbmRpZgorICAgIG5ncm91cHMgPSBNQVhfR1JPVVBTOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaSIsICZ1c2VyLCAmYmFzZWdpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgX19BUFBMRV9fCisgICAgZ3JvdXBzID0gUHlNZW1fTWFsbG9jKG5ncm91cHMgKiBzaXplb2YoaW50KSk7CisjZWxzZQorICAgIGdyb3VwcyA9IFB5TWVtX01hbGxvYyhuZ3JvdXBzICogc2l6ZW9mKGdpZF90KSk7CisjZW5kaWYKKyAgICBpZiAoZ3JvdXBzID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgaWYgKGdldGdyb3VwbGlzdCh1c2VyLCBiYXNlZ2lkLCBncm91cHMsICZuZ3JvdXBzKSA9PSAtMSkgeworICAgICAgICBQeU1lbV9EZWwoZ3JvdXBzKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorCisgICAgbGlzdCA9IFB5TGlzdF9OZXcobmdyb3Vwcyk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9EZWwoZ3JvdXBzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5ncm91cHM7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqbyA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKWdyb3Vwc1tpXSk7CisgICAgICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIG8pOworICAgIH0KKworICAgIFB5TWVtX0RlbChncm91cHMpOworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisjZW5kaWYKIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBTCiBQeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBzX19kb2NfXywKQEAgLTQ1NjUsNyArNjM2Nyw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHdjaGFyX3QgdXNlcl9uYW1lW1VOTEVOICsgMV07Ci0gICAgRFdPUkQgbnVtX2NoYXJzID0gc2l6ZW9mKHVzZXJfbmFtZSkvc2l6ZW9mKHVzZXJfbmFtZVswXSk7CisgICAgRFdPUkQgbnVtX2NoYXJzID0gUHlfQVJSQVlfTEVOR1RIKHVzZXJfbmFtZSk7CiAKICAgICBpZiAoR2V0VXNlck5hbWVXKHVzZXJfbmFtZSwgJm51bV9jaGFycykpIHsKICAgICAgICAgLyogbnVtX2NoYXJzIGlzIHRoZSBudW1iZXIgb2YgdW5pY29kZSBjaGFycyBwbHVzIG51bGwgdGVybWluYXRvciAqLwpAQCAtNDk2NSw2ICs2NzY3LDcgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHN0YXRpYyBQeU9iamVjdCAqc3RydWN0X3J1c2FnZTsKKyAgICBfUHlfSURFTlRJRklFUihzdHJ1Y3RfcnVzYWdlKTsKIAogICAgIGlmIChwaWQgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtNDk3Myw3ICs2Nzc2LDcgQEAKICAgICAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJyZXNvdXJjZSIpOwogICAgICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0cnVjdF9ydXNhZ2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG0sICJzdHJ1Y3RfcnVzYWdlIik7CisgICAgICAgIHN0cnVjdF9ydXNhZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKG0sICZQeUlkX3N0cnVjdF9ydXNhZ2UpOwogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIGlmIChzdHJ1Y3RfcnVzYWdlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUwNjksNiArNjg3Miw1NSBAQAogfQogI2VuZGlmIC8qIEhBVkVfV0FJVDQgKi8KIAorI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKK1B5RG9jX1NUUlZBUihwb3NpeF93YWl0aWRfX2RvY19fLAorIndhaXRpZChpZHR5cGUsIGlkLCBvcHRpb25zKSAtPiB3YWl0aWRfcmVzdWx0XG5cblwKK1dhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIG9uZSBvciBtb3JlIGNoaWxkIHByb2Nlc3Nlcy5cblxuXAoraWR0eXBlIGNhbiBiZSBQX1BJRCwgUF9QR0lEIG9yIFBfQUxMLlxuXAoraWQgc3BlY2lmaWVzIHRoZSBwaWQgdG8gd2FpdCBvbi5cblwKK29wdGlvbnMgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRURcblwKK29yIFdDT05USU5VRUQgYW5kIGFkZGl0aW9uYWxseSBtYXkgYmUgT1JlZCB3aXRoIFdOT0hBTkcgb3IgV05PV0FJVC5cblwKK1JldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlXG5cCitubyBjaGlsZHJlbiBpbiBhIHdhaXRhYmxlIHN0YXRlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfd2FpdGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGlkdHlwZV90IGlkdHlwZTsKKyAgICBpZF90IGlkOworICAgIGludCBvcHRpb25zLCByZXM7CisgICAgc2lnaW5mb190IHNpOworICAgIHNpLnNpX3BpZCA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gd2FpdGlkKGlkdHlwZSwgaWQsICZzaSwgb3B0aW9ucyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGlmIChzaS5zaV9waWQgPT0gMCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXN1bHQgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmV2FpdGlkUmVzdWx0VHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDAsIFB5TG9uZ19Gcm9tUGlkKHNpLnNpX3BpZCkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAxLCBQeUxvbmdfRnJvbVBpZChzaS5zaV91aWQpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMiwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9zaWdubykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMywgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9zdGF0dXMpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDQsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2kuc2lfY29kZSkpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XQUlUUElECiBQeURvY19TVFJWQVIocG9zaXhfd2FpdHBpZF9fZG9jX18sCiAid2FpdHBpZChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cylcblxuXApAQCAtNTE0MiwxMDYgKzY5OTQsMjI2IEBACiAjZW5kaWYKIAogCi1QeURvY19TVFJWQVIocG9zaXhfbHN0YXRfX2RvY19fLAotImxzdGF0KHBhdGgpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdChwYXRoKSwgYnV0IGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0jaWZkZWYgSEFWRV9MU1RBVAotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIGxzdGF0LCBOVUxMLCBOVUxMKTsKLSNlbHNlIC8qICFIQVZFX0xTVEFUICovCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIHdpbjMyX2xzdGF0LCAiVTpsc3RhdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2luMzJfbHN0YXRfdyk7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIFNUQVQsIE5VTEwsIE5VTEwpOworI2lmIGRlZmluZWQoSEFWRV9SRUFETElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorUHlEb2NfU1RSVkFSKHJlYWRsaW5rX19kb2NfXywKKyJyZWFkbGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gcGF0aFxuXG5cCitSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKICNlbmRpZgotI2VuZGlmIC8qICFIQVZFX0xTVEFUICovCi19Ci0KIAogI2lmZGVmIEhBVkVfUkVBRExJTksKLVB5RG9jX1NUUlZBUihwb3NpeF9yZWFkbGlua19fZG9jX18sCi0icmVhZGxpbmsocGF0aCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCogdjsKLSAgICBjaGFyIGJ1ZltNQVhQQVRITEVOXTsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBpbnQgbjsKLSAgICBpbnQgYXJnX2lzX3VuaWNvZGUgPSAwOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVOXTsKKyAgICBzc2l6ZV90IGxlbmd0aDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6cmVhZGxpbmsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICB2ID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBhcmdfaXNfdW5pY29kZSA9IDE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZGxpbmsocGF0aCwgYnVmLCAoaW50KSBzaXplb2YgYnVmKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgaWYgKGFyZ19pc191bmljb2RlKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBuKTsKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICBsZW5ndGggPSByZWFkbGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBuKTsKKyNlbmRpZgorICAgICAgICBsZW5ndGggPSByZWFkbGluayhwYXRoLm5hcnJvdywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoInJlYWRsaW5rIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoLm9iamVjdCkpCisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBsZW5ndGgpOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CisKKwogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KIAogCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgSEFWRV9TWU1MSU5LCiBQeURvY19TVFJWQVIocG9zaXhfc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LiIpOworInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuXG5cblwKK3RhcmdldF9pc19kaXJlY3RvcnkgaXMgcmVxdWlyZWQgb24gV2luZG93cyBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlXG5cCisgIGludGVycHJldGVkIGFzIGEgZGlyZWN0b3J5LiAgKE9uIFdpbmRvd3MsIHN5bWxpbmsgcmVxdWlyZXNcblwKKyAgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3Igb3RoZXJ3aXNlLilcblwKKyAgdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyBpZ25vcmVkIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworLyogR3JhYiBDcmVhdGVTeW1ib2xpY0xpbmtXIGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkoTFBTVFIsIExQU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIGludAorY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkKK3sKKyAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOworICAgIC8qIG9ubHkgcmVjaGVjayAqLworICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICYmIFB5X0NyZWF0ZVN5bWJvbGljTGlua0EpCisgICAgICAgIHJldHVybiAxOworICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICooRkFSUFJPQyopJlB5X0NyZWF0ZVN5bWJvbGljTGlua1cgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIik7CisgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua0EiKTsKKyAgICByZXR1cm4gKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSk7Cit9CisKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3ltbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICByZXR1cm4gcG9zaXhfMnN0cihhcmdzLCAiTyZPJjpzeW1saW5rIiwgc3ltbGluayk7CisgICAgcGF0aF90IHNyYzsKKyAgICBwYXRoX3QgZHN0OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisjaWZkZWYgTVNfV0lORE9XUworICAgIERXT1JEIHJlc3VsdDsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgorCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBzcmMuYXJndW1lbnRfbmFtZSA9ICJzcmMiOworICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgZHN0LmFyZ3VtZW50X25hbWUgPSAiZHN0IjsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGluaygpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGluayBmdW5jdGlvbnMgbm90IGZvdW5kIik7CisJCXJldHVybiBOVUxMOworCX0KKyAgICBpZiAoIXdpbjMyX2Nhbl9zeW1saW5rKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorI2VuZGlmCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfGkkTyY6c3ltbGluayIsCisgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgICAgICAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwKKyNpZmRlZiBIQVZFX1NZTUxJTktBVAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICgoc3JjLm5hcnJvdyAmJiBkc3Qud2lkZSkgfHwgKHNyYy53aWRlICYmIGRzdC5uYXJyb3cpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInN5bWxpbms6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBOVUxMOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZHN0LndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LndpZGUsIHNyYy53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoInN5bWxpbmsiLCBzcmMub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2Vsc2UKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZiBIQVZFX1NZTUxJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IHN5bWxpbmthdChzcmMubmFycm93LCBkaXJfZmQsIGRzdC5uYXJyb3cpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBzeW1saW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInN5bWxpbmsiLCAmZHN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgZ290byBleGl0OyAvKiBzaWxlbmNlICJ1bnVzZWQgbGFiZWwiIHdhcm5pbmcgKi8KK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQorCiAjZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCiAKKwogI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKIAotUHlEb2NfU1RSVkFSKHdpbl9yZWFkbGlua19fZG9jX18sCi0icmVhZGxpbmsocGF0aCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4iKTsKLQotLyogV2luZG93cyByZWFkbGluayBpbXBsZW1lbnRhdGlvbiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CisJaW50IGRpcl9mZDsKICAgICBIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGU7CiAKICAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOwogICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKICAgICB3Y2hhcl90ICpwcmludF9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAidTpyZWFkbGluayIsCi0gICAgICAgICAgICAgICAgICAmcGF0aCkpCisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEZpcnN0IGdldCBhIGhhbmRsZSB0byB0aGUgcmVwYXJzZSBwb2ludCAqLwpAQCAtNTI1Nyw5ICs3MjI5LDcgQEAKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlcGFyc2VfcG9pbnRfaGFuZGxlPT1JTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJyZWFkbGluayIsIHBhdGgpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgLyogTmV3IGNhbGwgRGV2aWNlSW9Db250cm9sIHRvIHJlYWQgdGhlIHJlcGFyc2UgcG9pbnQgKi8KQEAgLTUyNzUsOSArNzI0NSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChpb19yZXN1bHQ9PTApCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgicmVhZGxpbmsiLCBwYXRoKTsKLSAgICB9CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOwogCiAgICAgaWYgKHJkYi0+UmVwYXJzZVRhZyAhPSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKQogICAgIHsKQEAgLTUyOTUsODAgKzcyNjMsNzYgQEAKIAogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKLS8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgaW50IGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXID0gMDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCk7Ci1zdGF0aWMgaW50Ci1jaGVja19DcmVhdGVTeW1ib2xpY0xpbmtXKCkKLXsKLSAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOwotICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmIChoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVykKLSAgICAgICAgcmV0dXJuIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXOwotICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgiS0VSTkVMMzIiKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rVyIpOwotICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKQotICAgICAgICBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IDE7Ci0gICAgcmV0dXJuIGhhc19DcmVhdGVTeW1ib2xpY0xpbmtXOwotfQorc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgdGltZXNfcmVzdWx0X2ZpZWxkc1tdID0geworICAgIHsidXNlciIsICAgICJ1c2VyIHRpbWUifSwKKyAgICB7InN5c3RlbSIsICAgInN5c3RlbSB0aW1lIn0sCisgICAgeyJjaGlsZHJlbl91c2VyIiwgICAgInVzZXIgdGltZSBvZiBjaGlsZHJlbiJ9LAorICAgIHsiY2hpbGRyZW5fc3lzdGVtIiwgICAgInN5c3RlbSB0aW1lIG9mIGNoaWxkcmVuIn0sCisgICAgeyJlbGFwc2VkIiwgICAgImVsYXBzZWQgdGltZSBzaW5jZSBhbiBhcmJpdHJhcnkgcG9pbnQgaW4gdGhlIHBhc3QifSwKKyAgICB7TlVMTH0KK307CiAKLVB5RG9jX1NUUlZBUih3aW5fc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSlcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LlxuXAotdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlIGludGVycHJldGVkIGFzXG5cCi1hIGRpcmVjdG9yeS5cblwKLVRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhXG5cCi1Ob3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4iKTsKK1B5RG9jX1NUUlZBUih0aW1lc19yZXN1bHRfX2RvY19fLAorInRpbWVzX3Jlc3VsdDogUmVzdWx0IGZyb20gb3MudGltZXMoKS5cblxuXAorVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG5cCisgICh1c2VyLCBzeXN0ZW0sIGNoaWxkcmVuX3VzZXIsIGNoaWxkcmVuX3N5c3RlbSwgZWxhcHNlZCksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgdXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sXG5cCithbmQgZWxhcHNlZC5cblwKK1xuXAorU2VlIG9zLnRpbWVzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luX3N5bWxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic3JjIiwgImRlc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpzcmMsICpkZXN0OwotICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKLSAgICBEV09SRCByZXM7CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHRpbWVzX3Jlc3VsdF9kZXNjID0geworICAgICJ0aW1lc19yZXN1bHQiLCAvKiBuYW1lICovCisgICAgdGltZXNfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgdGltZXNfcmVzdWx0X2ZpZWxkcywKKyAgICA1Cit9OwogCi0gICAgaWYgKCFjaGVja19DcmVhdGVTeW1ib2xpY0xpbmtXKCkpCi0gICAgewotICAgICAgICAvKiByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yICovCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIG5vdCBmb3VuZCIpOwotICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xpOnN5bWxpbmsiLAotICAgICAgICBrd2xpc3QsICZzcmMsICZkZXN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSkpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5VHlwZU9iamVjdCBUaW1lc1Jlc3VsdFR5cGU7CiAKLSAgICBpZiAod2luMzJfY2FuX3N5bWxpbmsgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKLQotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZzcmMpKSB7IHJldHVybiBOVUxMOyB9Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJmRlc3QpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzcmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVygKLSAgICAgICAgUHlVbmljb2RlX0FzVW5pY29kZShkZXN0KSwKLSAgICAgICAgUHlVbmljb2RlX0FzVW5pY29kZShzcmMpLAotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihzcmMpOwotICAgIFB5X0RFQ1JFRihkZXN0KTsKLSAgICBpZiAoIXJlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJzeW1saW5rIiwgUHlVbmljb2RlX0FzVW5pY29kZShzcmMpKTsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKyNpZmRlZiBNU19XSU5ET1dTCisjZGVmaW5lIEhBVkVfVElNRVMgIC8qIG1hbmRhdG9yeSwgZm9yIHRoZSBtZXRob2QgdGFibGUgKi8KKyNlbmRpZgogCiAjaWZkZWYgSEFWRV9USU1FUworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbGRfdGltZXNfcmVzdWx0KGRvdWJsZSB1c2VyLCBkb3VibGUgc3lzdGVtLAorICAgIGRvdWJsZSBjaGlsZHJlbl91c2VyLCBkb3VibGUgY2hpbGRyZW5fc3lzdGVtLAorICAgIGRvdWJsZSBlbGFwc2VkKQoreworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUaW1lc1Jlc3VsdFR5cGUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBTRVQoaSwgZmllbGQpIFwKKyAgICB7IFwKKyAgICBQeU9iamVjdCAqbyA9IFB5RmxvYXRfRnJvbURvdWJsZShmaWVsZCk7IFwKKyAgICBpZiAoIW8pIHsgXAorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2YWx1ZSwgaSwgbyk7IFwKKyAgICB9IFwKKworICAgIFNFVCgwLCB1c2VyKTsKKyAgICBTRVQoMSwgc3lzdGVtKTsKKyAgICBTRVQoMiwgY2hpbGRyZW5fdXNlcik7CisgICAgU0VUKDMsIGNoaWxkcmVuX3N5c3RlbSk7CisgICAgU0VUKDQsIGVsYXBzZWQpOworCisjdW5kZWYgU0VUCisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCisidGltZXMoKSAtPiB0aW1lc19yZXN1bHRcblxuXAorUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzXG5cCit0aW1lcy4gIFRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG5cCisgICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpIik7CisKICNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApICYmIGRlZmluZWQoUFlPU19PUzIpCiBzdGF0aWMgbG9uZwogc3lzdGVtX3VwdGltZSh2b2lkKQpAQCAtNTM4NiwzOCArNzM1MCwxNCBAQAogcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CiAgICAgLyogQ3VycmVudGx5IE9ubHkgVXB0aW1lIGlzIFByb3ZpZGVkIC0tIE90aGVycyBMYXRlciAqLwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJkZGRkZCIsCisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfdXRpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfc3RpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKTAgLyogdC50bXNfY3V0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX2NzdGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpc3lzdGVtX3VwdGltZSgpIC8gMTAwMCk7CiB9Ci0jZWxzZSAvKiBub3QgT1MyICovCi0jZGVmaW5lIE5FRURfVElDS1NfUEVSX1NFQ09ORAotc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOwotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHN0cnVjdCB0bXMgdDsKLSAgICBjbG9ja190IGM7Ci0gICAgZXJybm8gPSAwOwotICAgIGMgPSB0aW1lcygmdCk7Ci0gICAgaWYgKGMgPT0gKGNsb2NrX3QpIC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGRkZGQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2NzdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljIC8gdGlja3NfcGVyX3NlY29uZCk7Ci19Ci0jZW5kaWYgLyogbm90IE9TMiAqLwotI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KLQotCi0jaWZkZWYgTVNfV0lORE9XUwotI2RlZmluZSBIQVZFX1RJTUVTICAgICAgLyogc28gdGhlIG1ldGhvZCB0YWJsZSB3aWxsIHBpY2sgaXQgdXAgKi8KKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKQEAgLTU0MzAsOCArNzM3MCw3IEBACiAgICAgICAgMWU3IGlzIG9uZSBzZWNvbmQgaW4gc3VjaCB1bml0czsgMWUtNyB0aGUgaW52ZXJzZS4KICAgICAgICA0MjkuNDk2NzI5NiBpcyAyKiozMiAvIDFlNyBvciAyKiozMiAqIDFlLTcuCiAgICAgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgImRkZGRkIiwKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAogICAgICAgICAoZG91YmxlKSh1c2VyLmR3SGlnaERhdGVUaW1lKjQyOS40OTY3Mjk2ICsKICAgICAgICAgICAgICAgICAgdXNlci5kd0xvd0RhdGVUaW1lKjFlLTcpLAogICAgICAgICAoZG91YmxlKShrZXJuZWwuZHdIaWdoRGF0ZVRpbWUqNDI5LjQ5NjcyOTYgKwpAQCAtNTQ0MCwxNCArNzM3OSwyOSBAQAogICAgICAgICAoZG91YmxlKTAsCiAgICAgICAgIChkb3VibGUpMCk7CiB9Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi0jaWZkZWYgSEFWRV9USU1FUwotUHlEb2NfU1RSVkFSKHBvc2l4X3RpbWVzX19kb2NfXywKLSJ0aW1lcygpIC0+ICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpXG5cblwKLVJldHVybiBhIHR1cGxlIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzIHRpbWVzLiIpOworI2Vsc2UgLyogTmVpdGhlciBXaW5kb3dzIG5vciBPUy8yICovCisjZGVmaW5lIE5FRURfVElDS1NfUEVSX1NFQ09ORAorc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIHN0cnVjdCB0bXMgdDsKKyAgICBjbG9ja190IGM7CisgICAgZXJybm8gPSAwOworICAgIGMgPSB0aW1lcygmdCk7CisgICAgaWYgKGMgPT0gKGNsb2NrX3QpIC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gYnVpbGRfdGltZXNfcmVzdWx0KAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2NzdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSljIC8gdGlja3NfcGVyX3NlY29uZCk7Cit9CiAjZW5kaWYKIAorI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRTSUQKIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRzaWRfX2RvY19fLApAQCAtNTU0Niw0OSArNzUwMCw2OCBAQAogLyogRnVuY3Rpb25zIGFjdGluZyBvbiBmaWxlIGRlc2NyaXB0b3JzICovCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9vcGVuX19kb2NfXywKLSJvcGVuKGZpbGVuYW1lLCBmbGFnIFssIG1vZGU9MDc3N10pIC0+IGZkXG5cblwKLU9wZW4gYSBmaWxlIChmb3IgbG93IGxldmVsIElPKS4iKTsKKyJvcGVuKHBhdGgsIGZsYWdzLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorT3BlbiBhIGZpbGUgZm9yIGxvdyBsZXZlbCBJTy4gIFJldHVybnMgYSBmaWxlIGhhbmRsZSAoaW50ZWdlcikuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X29wZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvZmlsZTsKLSAgICBjaGFyICpmaWxlOwotICAgIGludCBmbGFnOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBmbGFnczsKICAgICBpbnQgbW9kZSA9IDA3Nzc7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVpfGk6b3BlbiIsICZwbywgJmZsYWcsICZtb2RlKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIC8qIFB5VW5pY29kZV9BU19VTklDT0RFIE9LIHdpdGhvdXQgdGhyZWFkCi0gICAgICAgICAgIGxvY2sgYXMgaXQgaXMgYSBzaW1wbGUgZGVyZWZlcmVuY2UuICovCi0gICAgICAgIGZkID0gX3dvcGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSwgZmxhZywgbW9kZSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChmZCA8IDApCi0gICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJmZsYWdzLCAmbW9kZSwKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8aTpvcGVuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFnLCAmbW9kZSkpCisgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZmQgPSBvcGVuKGZpbGUsIGZsYWcsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9maWxlKTsKLSAgICBQeV9ERUNSRUYob2ZpbGUpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotfQogCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBmZCA9IF93b3BlbihwYXRoLndpZGUsIGZsYWdzLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIGZkID0gb3BlbmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgZmQgPSBvcGVuKHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChmZCA9PSAtMSkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgLyogZm9yY2UgdXNlIG9mIHBvc2l4X2Vycm9yIGhlcmUgZm9yIGV4YWN0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCisgICAgICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigib3BlbiIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiBQeURvY19TVFJWQVIocG9zaXhfY2xvc2VfX2RvY19fLAogImNsb3NlKGZkKVxuXG5cCkBAIC01NjQzLDkgKzc2MTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBmZCA9IGR1cChmZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKQEAgLTU2NjQsMTUgKzc2MzUsNDIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmRfZHVwMihmZCwgZmQyKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IGR1cDIoZmQsIGZkMik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisjaWZkZWYgSEFWRV9MT0NLRgorUHlEb2NfU1RSVkFSKHBvc2l4X2xvY2tmX19kb2NfXywKKyJsb2NrZihmZCwgY21kLCBsZW4pXG5cblwKK0FwcGx5LCB0ZXN0IG9yIHJlbW92ZSBhIFBPU0lYIGxvY2sgb24gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cblwKK2ZkIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorY21kIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgLSBvbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yXG5cCitGX1RFU1QuXG5cCitsZW4gc3BlY2lmaWVzIHRoZSBzZWN0aW9uIG9mIHRoZSBmaWxlIHRvIGxvY2suIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9sb2NrZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbWQsIHJlczsKKyAgICBvZmZfdCBsZW47CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOmxvY2tmIiwKKyAgICAgICAgICAgICZmZCwgJmNtZCwgX3BhcnNlX29mZl90LCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gbG9ja2YoZmQsIGNtZCwgbGVuKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogCiBQeURvY19TVFJWQVIocG9zaXhfbHNlZWtfX2RvY19fLAogImxzZWVrKGZkLCBwb3MsIGhvdykgLT4gbmV3cG9zXG5cblwKQEAgLTU3MDMsOCArNzcwMSw3IEBACiAjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKICAgICBwb3MgPSBQeUxvbmdfQXNMb25nKHBvc29iaik7CiAjZWxzZQotICAgIHBvcyA9IFB5TG9uZ19DaGVjayhwb3NvYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKSA6IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKKyAgICBwb3MgPSBQeUxvbmdfQXNMb25nTG9uZyhwb3NvYmopOwogI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTc2NCw2ICs3NzYxLDE0MCBAQAogICAgIHJldHVybiBidWZmZXI7CiB9CiAKKyNpZiAoZGVmaW5lZChIQVZFX1NFTkRGSUxFKSAmJiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICAgfHwgZGVmaW5lZChfX0FQUExFX18pKSkgfHwgZGVmaW5lZChIQVZFX1JFQURWKSB8fCBkZWZpbmVkKEhBVkVfV1JJVEVWKQorc3RhdGljIFB5X3NzaXplX3QKK2lvdl9zZXR1cChzdHJ1Y3QgaW92ZWMgKippb3YsIFB5X2J1ZmZlciAqKmJ1ZiwgUHlPYmplY3QgKnNlcSwgaW50IGNudCwgaW50IHR5cGUpCit7CisgICAgaW50IGksIGo7CisgICAgUHlfc3NpemVfdCBibGVuLCB0b3RhbCA9IDA7CisKKyAgICAqaW92ID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgY250KTsKKyAgICBpZiAoKmlvdiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiB0b3RhbDsKKyAgICB9CisKKyAgICAqYnVmID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgY250KTsKKyAgICBpZiAoKmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0RlbCgqaW92KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIHRvdGFsOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShzZXEsIGkpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGl0ZW0sICYoKmJ1ZilbaV0sIHR5cGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAoKmlvdilbaV0uaW92X2Jhc2UgPSAoKmJ1ZilbaV0uYnVmOworICAgICAgICBibGVuID0gKCpidWYpW2ldLmxlbjsKKyAgICAgICAgKCppb3YpW2ldLmlvdl9sZW4gPSBibGVuOworICAgICAgICB0b3RhbCArPSBibGVuOworICAgIH0KKyAgICByZXR1cm4gdG90YWw7CisKK2ZhaWw6CisgICAgUHlNZW1fRGVsKCppb3YpOworICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmKCpidWYpW2pdKTsKKyAgICB9CisgICAgUHlNZW1fRGVsKCpidWYpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAoraW92X2NsZWFudXAoc3RydWN0IGlvdmVjICppb3YsIFB5X2J1ZmZlciAqYnVmLCBpbnQgY250KQoreworICAgIGludCBpOworICAgIFB5TWVtX0RlbChpb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZbaV0pOworICAgIH0KKyAgICBQeU1lbV9EZWwoYnVmKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFEVgorUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWR2X19kb2NfXywKKyJyZWFkdihmZCwgYnVmZmVycykgLT4gYnl0ZXNyZWFkXG5cblwKK1JlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuIGJ1ZmZlcnNcblwKK2lzIGFuIGFyYml0cmFyeSBzZXF1ZW5jZSBvZiB3cml0YWJsZSBidWZmZXJzLlxuXAorUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZWFkdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBjbnQ7CisgICAgUHlfc3NpemVfdCBuOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgc3RydWN0IGlvdmVjICppb3Y7CisgICAgUHlfYnVmZmVyICpidWY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwgJmZkLCAmc2VxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJyZWFkdigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CisKKyAgICBpZiAoIWlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfV1JJVEFCTEUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QUkVBRAorUHlEb2NfU1RSVkFSKHBvc2l4X3ByZWFkX19kb2NfXywKKyJwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KSAtPiBzdHJpbmdcblxuXAorUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgYXQgYSBwb3NpdGlvbiBvZiBvZmZzZXQuIEl0IHdpbGwgcmVhZCB1cFxuXAordG8gYnVmZmVyc2l6ZSBudW1iZXIgb2YgYnl0ZXMuIFRoZSBmaWxlIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3ByZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIHNpemU7CisgICAgb2ZmX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsICZmZCwgJnNpemUsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHNpemUpOworICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG4gPSBwcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgc2l6ZSwgb2Zmc2V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGlmIChuICE9IHNpemUpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCBuKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorI2VuZGlmCiAKIFB5RG9jX1NUUlZBUihwb3NpeF93cml0ZV9fZG9jX18sCiAid3JpdGUoZmQsIHN0cmluZykgLT4gYnl0ZXN3cml0dGVuXG5cblwKQEAgLTU3OTgsMTAgKzc5MjksMTQ5IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAorI2lmZGVmIEhBVkVfU0VOREZJTEUKK1B5RG9jX1NUUlZBUihwb3NpeF9zZW5kZmlsZV9fZG9jX18sCisic2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMpIC0+IGJ5dGVzd3JpdHRlblxuXAorc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMsIGhlYWRlcnM9Tm9uZSwgdHJhaWxlcnM9Tm9uZSwgZmxhZ3M9MClcblwKKyAgICAgICAgICAgIC0+IGJ5dGVzd3JpdHRlblxuXAorQ29weSBuYnl0ZXMgYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgaW4gdG8gZmlsZSBkZXNjcmlwdG9yIG91dC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NlbmRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKK3sKKyAgICBpbnQgaW4sIG91dDsKKyAgICBQeV9zc2l6ZV90IHJldDsKKyAgICBvZmZfdCBvZmZzZXQ7CisKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQorI2lmbmRlZiBfX0FQUExFX18KKyAgICBQeV9zc2l6ZV90IGxlbjsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpoZWFkZXJzID0gTlVMTCwgKnRyYWlsZXJzID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmhidWYsICp0YnVmOworICAgIG9mZl90IHNieXRlczsKKyAgICBzdHJ1Y3Qgc2ZfaGR0ciBzZjsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHNmLmhlYWRlcnMgPSBOVUxMOworICAgIHNmLnRyYWlsZXJzID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsib3V0IiwgImluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mZnNldCIsICJjb3VudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWFkZXJzIiwgInRyYWlsZXJzIiwgImZsYWdzIiwgTlVMTH07CisKKyNpZmRlZiBfX0FQUExFX18KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKKyAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCisjZWxzZQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpTyZufE9PaTpzZW5kZmlsZSIsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgJmxlbiwKKyNlbmRpZgorICAgICAgICAgICAgICAgICZoZWFkZXJzLCAmdHJhaWxlcnMsICZmbGFncykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaGVhZGVycyAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoZWFkZXJzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAic2VuZGZpbGUoKSBoZWFkZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvciBOb25lIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7IC8qIEF2b2lkIHVuaW5pdGlhbGl6ZWQgd2FybmluZyAqLworICAgICAgICAgICAgc2YuaGRyX2NudCA9IFB5U2VxdWVuY2VfU2l6ZShoZWFkZXJzKTsKKyAgICAgICAgICAgIGlmIChzZi5oZHJfY250ID4gMCAmJgorICAgICAgICAgICAgICAgICEoaSA9IGlvdl9zZXR1cCgmKHNmLmhlYWRlcnMpLCAmaGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycywgc2YuaGRyX2NudCwgUHlCVUZfU0lNUExFKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgICAgICBzYnl0ZXMgKz0gaTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorICAgIGlmICh0cmFpbGVycyAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayh0cmFpbGVycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInNlbmRmaWxlKCkgdHJhaWxlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9yIE5vbmUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsgLyogQXZvaWQgdW5pbml0aWFsaXplZCB3YXJuaW5nICovCisgICAgICAgICAgICBzZi50cmxfY250ID0gUHlTZXF1ZW5jZV9TaXplKHRyYWlsZXJzKTsKKyAgICAgICAgICAgIGlmIChzZi50cmxfY250ID4gMCAmJgorICAgICAgICAgICAgICAgICEoaSA9IGlvdl9zZXR1cCgmKHNmLnRyYWlsZXJzKSwgJnRidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzLCBzZi50cmxfY250LCBQeUJVRl9TSU1QTEUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgICAgIHNieXRlcyArPSBpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgX19BUFBMRV9fCisgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKKyNlbHNlCisgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCBsZW4sICZzZiwgJnNieXRlcywgZmxhZ3MpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChzZi5oZWFkZXJzICE9IE5VTEwpCisgICAgICAgIGlvdl9jbGVhbnVwKHNmLmhlYWRlcnMsIGhidWYsIHNmLmhkcl9jbnQpOworICAgIGlmIChzZi50cmFpbGVycyAhPSBOVUxMKQorICAgICAgICBpb3ZfY2xlYW51cChzZi50cmFpbGVycywgdGJ1Ziwgc2YudHJsX2NudCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBpZiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVCVVNZKSkgeworICAgICAgICAgICAgaWYgKHNieXRlcyAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gc29tZSBkYXRhIGhhcyBiZWVuIHNlbnQKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBubyBkYXRhIGhhcyBiZWVuIHNlbnQ7IHVwcGVyIGFwcGxpY2F0aW9uIGlzIHN1cHBvc2VkCisgICAgICAgICAgICAgICAgLy8gdG8gcmV0cnkgb24gRUFHQUlOIG9yIEVCVVNZCisgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGdvdG8gZG9uZTsKKworZG9uZToKKyAgICAjaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImwiLCBzYnl0ZXMpOworICAgICNlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJMIiwgc2J5dGVzKTsKKyAgICAjZW5kaWYKKworI2Vsc2UKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpvZmZvYmo7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im91dCIsICJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLCAiY291bnQiLCBOVUxMfTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU9uOnNlbmRmaWxlIiwKKyAgICAgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sICZvZmZvYmosICZjb3VudCkpCisgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIGxpbnV4CisgICAgaWYgKG9mZm9iaiA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKCFfcGFyc2Vfb2ZmX3Qob2Zmb2JqLCAmb2Zmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sICZvZmZzZXQsIGNvdW50KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXQgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibiIsIHJldCk7CisjZW5kaWYKK30KKyNlbmRpZgogCiBQeURvY19TVFJWQVIocG9zaXhfZnN0YXRfX2RvY19fLAogImZzdGF0KGZkKSAtPiBzdGF0IHJlc3VsdFxuXG5cCi1MaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKK0xpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorRXF1aXZhbGVudCB0byBzdGF0KGZkPWZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTU4MTUsOCArODA4NSw2IEBACiAgICAgLyogb24gT3BlblZNUyB3ZSBtdXN0IGVuc3VyZSB0aGF0IGFsbCBieXRlcyBhcmUgd3JpdHRlbiB0byB0aGUgZmlsZSAqLwogICAgIGZzeW5jKGZkKTsKICNlbmRpZgotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC01ODU5LDkgKzgxMjcsNyBAQAogICAgIEhGSUxFIHJlYWQsIHdyaXRlOwogICAgIEFQSVJFVCByYzsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IERvc0NyZWF0ZVBpcGUoICZyZWFkLCAmd3JpdGUsIDQwOTYpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJjICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gb3MyX2Vycm9yKHJjKTsKIApAQCAtNTg3MCw5ICs4MTM2LDcgQEAKICNpZiAhZGVmaW5lZChNU19XSU5ET1dTKQogICAgIGludCBmZHNbMl07CiAgICAgaW50IHJlczsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gcGlwZShmZHMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyAhPSAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKGlpKSIsIGZkc1swXSwgZmRzWzFdKTsKQEAgLTU4ODAsOSArODE0NCw3IEBACiAgICAgSEFORExFIHJlYWQsIHdyaXRlOwogICAgIGludCByZWFkX2ZkLCB3cml0ZV9mZDsKICAgICBCT09MIG9rOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBvayA9IENyZWF0ZVBpcGUoJnJlYWQsICZ3cml0ZSwgTlVMTCwgMCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoIkNyZWF0ZVBpcGUiLCBOVUxMKTsKICAgICByZWFkX2ZkID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdClyZWFkLCAwKTsKQEAgLTU4OTMsNjYgKzgxNTUsMjE0IEBACiB9CiAjZW5kaWYgIC8qIEhBVkVfUElQRSAqLwogCi0KLSNpZmRlZiBIQVZFX01LRklGTwotUHlEb2NfU1RSVkFSKHBvc2l4X21rZmlmb19fZG9jX18sCi0ibWtmaWZvKGZpbGVuYW1lIFssIG1vZGU9MDY2Nl0pXG5cblwKLUNyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuIik7CisjaWZkZWYgSEFWRV9QSVBFMgorUHlEb2NfU1RSVkFSKHBvc2l4X3BpcGUyX19kb2NfXywKKyJwaXBlMihmbGFncykgLT4gKHJlYWRfZW5kLCB3cml0ZV9lbmQpXG5cblwKK0NyZWF0ZSBhIHBpcGUgd2l0aCBmbGFncyBzZXQgYXRvbWljYWxseS5cblwKK2ZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6XG5cCitPX05PTkJMT0NLLCBPX0NMT0VYRUMuXG5cCisiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rZmlmbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9waXBlMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqZmlsZW5hbWU7Ci0gICAgaW50IG1vZGUgPSAwNjY2OworICAgIGludCBmbGFnczsKKyAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxpOm1rZmlmbyIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kZSkpCisKKyAgICBmbGFncyA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKKyAgICBpZiAoZmxhZ3MgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZmlsZW5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IG1rZmlmbyhmaWxlbmFtZSwgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIGlmIChyZXMgPCAwKQorCisgICAgcmVzID0gcGlwZTIoZmRzLCBmbGFncyk7CisgICAgaWYgKHJlcyAhPSAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihpaSkiLCBmZHNbMF0sIGZkc1sxXSk7Cit9CisjZW5kaWYgLyogSEFWRV9QSVBFMiAqLworCisjaWZkZWYgSEFWRV9XUklURVYKK1B5RG9jX1NUUlZBUihwb3NpeF93cml0ZXZfX2RvY19fLAorIndyaXRldihmZCwgYnVmZmVycykgLT4gYnl0ZXN3cml0dGVuXG5cblwKK1dyaXRlIHRoZSBjb250ZW50cyBvZiBidWZmZXJzIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCB3aGVyZSBidWZmZXJzIGlzIGFuXG5cCithcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy5cblwKK1JldHVybnMgdGhlIHRvdGFsIGJ5dGVzIHdyaXR0ZW4uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF93cml0ZXYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY250OworICAgIFB5X3NzaXplX3QgcmVzOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgc3RydWN0IGlvdmVjICppb3Y7CisgICAgUHlfYnVmZmVyICpidWY7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzp3cml0ZXYiLCAmZmQsICZzZXEpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soc2VxKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIndyaXRldigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY250ID0gUHlTZXF1ZW5jZV9TaXplKHNlcSk7CisKKyAgICBpZiAoIWlvdl9zZXR1cCgmaW92LCAmYnVmLCBzZXEsIGNudCwgUHlCVUZfU0lNUExFKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gd3JpdGV2KGZkLCBpb3YsIGNudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9QV1JJVEUKK1B5RG9jX1NUUlZBUihwb3NpeF9wd3JpdGVfX2RvY19fLAorInB3cml0ZShmZCwgc3RyaW5nLCBvZmZzZXQpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCitXcml0ZSBzdHJpbmcgdG8gYSBmaWxlIGRlc2NyaXB0b3IsIGZkLCBmcm9tIG9mZnNldCwgbGVhdmluZyB0aGUgZmlsZVxuXAorb2Zmc2V0IHVuY2hhbmdlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3B3cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIHBidWY7CisgICAgaW50IGZkOworICAgIG9mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsICZmZCwgJnBidWYsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHNpemUgPSBwd3JpdGUoZmQsIHBidWYuYnVmLCAoc2l6ZV90KXBidWYubGVuLCBvZmZzZXQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRklGTworUHlEb2NfU1RSVkFSKHBvc2l4X21rZmlmb19fZG9jX18sCisibWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBGSUZPIChhIFBPU0lYIG5hbWVkIHBpcGUpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbWtmaWZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZSA9IDA2NjY7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZtb2RlLAorI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCisjZW5kaWYKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IG1rZmlmb2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBta2ZpZm8ocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQogUHlEb2NfU1RSVkFSKHBvc2l4X21rbm9kX19kb2NfXywKLSJta25vZChmaWxlbmFtZSBbLCBtb2RlPTA2MDAsIGRldmljZV0pXG5cblwKKyJta25vZChmaWxlbmFtZSwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKVxuXG5cCiBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSlcblwKIG5hbWVkIGZpbGVuYW1lLiBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuXAogdHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuXAogU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uIEZvciBTX0lGQ0hSIGFuZCBTX0lGQkxLLFxuXAogZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmdcblwKLW9zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLiIpOworb3MubWFrZWRldigpKSwgb3RoZXJ3aXNlIGl0IGlzIGlnbm9yZWQuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X21rbm9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqZmlsZW5hbWU7Ci0gICAgaW50IG1vZGUgPSAwNjAwOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBtb2RlID0gMDY2NjsKICAgICBpbnQgZGV2aWNlID0gMDsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aWk6bWtub2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUsICZkZXZpY2UpKQorICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGlpJE8mOm1rbm9kIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJm1vZGUsICZkZXZpY2UsCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGVuYW1lID0gUHlCeXRlc19BU19TVFJJTkcob3BhdGgpOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IG1rbm9kKGZpbGVuYW1lLCBtb2RlLCBkZXZpY2UpOworI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IG1rbm9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbWtub2QocGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYKIApAQCAtNjAwOSwxOCArODQxOSw4IEBACiAgICAgaW50IGZkOwogICAgIG9mZl90IGxlbmd0aDsKICAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpsZW5vYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmZ0cnVuY2F0ZSIsICZmZCwgJmxlbm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICBsZW5ndGggPSBQeUxvbmdfQXNMb25nKGxlbm9iaik7Ci0jZWxzZQotICAgIGxlbmd0aCA9IFB5TG9uZ19DaGVjayhsZW5vYmopID8KLSAgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcobGVub2JqKSA6IFB5TG9uZ19Bc0xvbmcobGVub2JqKTsKLSNlbmRpZgotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZ0cnVuY2F0ZSIsICZmZCwgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC02MDMzLDYgKzg0MzMsMTA5IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfVFJVTkNBVEUKK1B5RG9jX1NUUlZBUihwb3NpeF90cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUocGF0aCwgbGVuZ3RoKVxuXG5cCitUcnVuY2F0ZSB0aGUgZmlsZSBnaXZlbiBieSBwYXRoIHRvIGxlbmd0aCBieXRlcy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIG9mZl90IGxlbmd0aDsKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlcyA9IGZ0cnVuY2F0ZShwYXRoLmZkLCBsZW5ndGgpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXMgPSB0cnVuY2F0ZShwYXRoLm5hcnJvdywgbGVuZ3RoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXN1bHQgPSBwYXRoX3Bvc2l4X2Vycm9yKCJ0cnVuY2F0ZSIsICZwYXRoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICByZXN1bHQgPSBQeV9Ob25lOworICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCitQeURvY19TVFJWQVIocG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfXywKKyJwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKVxuXG5cCitFbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmRcblwKK3N0YXJ0aW5nIGZyb20gb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wb3NpeF9mYWxsb2NhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIG9mZl90IGxlbiwgb2Zmc2V0OworICAgIGludCByZXMsIGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAorICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgIGVycm5vID0gcmVzOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhZHZpc2VfX2RvY19fLAorInBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpXG5cblwKK0Fubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmdcblwKK3RoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuXAorVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0XG5cCitvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbiBieXRlcy5cblwKK2FkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcblwKK1BPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQgb3JcblwKK1BPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wb3NpeF9mYWR2aXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvZmZfdCBsZW4sIG9mZnNldDsKKyAgICBpbnQgcmVzLCBmZCwgYWR2aWNlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCisgICAgICAgICAgICAmZmQsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmbGVuLCAmYWR2aWNlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gcG9zaXhfZmFkdmlzZShmZCwgb2Zmc2V0LCBsZW4sIGFkdmljZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgZXJybm8gPSByZXM7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9QVVRFTlYKIFB5RG9jX1NUUlZBUihwb3NpeF9wdXRlbnZfX2RvY19fLAogInB1dGVudihrZXksIHZhbHVlKVxuXG5cCkBAIC02MDQ1LDIzICs4NTQ4LDQwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfcHV0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBQeU9iamVjdCAqbmV3c3RyID0gTlVMTDsKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgd2NoYXJfdCAqczEsICpzMjsKKyAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwogICAgIHdjaGFyX3QgKm5ld2VudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVVU6cHV0ZW52IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm9zMSwgJm9zMikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3c3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVVIiwgb3MxLCBvczIpOworICAgIGlmIChuZXdzdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuZXdzdHIpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBsb25nZXIgdGhhbiAldSBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIF9NQVhfRU5WKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBuZXdlbnYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKG5ld3N0cik7CisgICAgaWYgKG5ld2VudiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChfd3B1dGVudihuZXdlbnYpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogI2Vsc2UKICAgICBQeU9iamVjdCAqb3MxLCAqb3MyOwogICAgIGNoYXIgKnMxLCAqczI7CiAgICAgY2hhciAqbmV3ZW52OwotI2VuZGlmCi0gICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7Ci0gICAgc2l6ZV90IGxlbjsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInV1OnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzMSwgJnMyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZWxzZQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiTyZPJjpwdXRlbnYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEsCkBAIC02MDY5LDU4ICs4NTg5LDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHMxID0gUHlCeXRlc19Bc1N0cmluZyhvczEpOwogICAgIHMyID0gUHlCeXRlc19Bc1N0cmluZyhvczIpOwotI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIGlmIChzdHJpY21wKHMxLCAiQkVHSU5MSUJQQVRIIikgPT0gMCkgewotICAgICAgICBBUElSRVQgcmM7Ci0KLSAgICAgICAgcmMgPSBEb3NTZXRFeHRMSUJQQVRIKHMyLCBCRUdJTl9MSUJQQVRIKTsKLSAgICAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICBvczJfZXJyb3IocmMpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotCi0gICAgfSBlbHNlIGlmIChzdHJpY21wKHMxLCAiRU5ETElCUEFUSCIpID09IDApIHsKLSAgICAgICAgQVBJUkVUIHJjOwotCi0gICAgICAgIHJjID0gRG9zU2V0RXh0TElCUEFUSChzMiwgRU5EX0xJQlBBVEgpOwotICAgICAgICBpZiAocmMgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIG9zMl9lcnJvcihyYyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSNlbmRpZgotICAgIC8qIFhYWCBUaGlzIGNhbiBsZWFrIG1lbW9yeSAtLSBub3QgZWFzeSB0byBmaXggOi0oICovCi0gICAgLyogbGVuIGluY2x1ZGVzIHNwYWNlIGZvciBhIHRyYWlsaW5nIFwwOyB0aGUgc2l6ZSBhcmcgdG8KLSAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplIGRvZXMgbm90IGNvdW50IHRoYXQgKi8KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbGVuID0gd2NzbGVuKHMxKSArIHdjc2xlbihzMikgKyAyOwotICAgIGlmIChfTUFYX0VOViA8IChsZW4gLSAxKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCi0gICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAoaW50KWxlbiAtIDEpOwotI2Vsc2UKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9zMSkgKyBQeUJ5dGVzX0dFVF9TSVpFKG9zMikgKyAyOwotICAgIG5ld3N0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgKGludClsZW4gLSAxKTsKLSNlbmRpZgorICAgIG5ld3N0ciA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBzMSwgczIpOwogICAgIGlmIChuZXdzdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOwotICAgIF9zbndwcmludGYobmV3ZW52LCBsZW4sIEwiJXM9JXMiLCBzMSwgczIpOwotICAgIGlmIChfd3B1dGVudihuZXdlbnYpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2Vsc2UKKwogICAgIG5ld2VudiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cik7Ci0gICAgUHlPU19zbnByaW50ZihuZXdlbnYsIGxlbiwgIiVzPSVzIiwgczEsIHMyKTsKICAgICBpZiAocHV0ZW52KG5ld2VudikpIHsKICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTYxMzEsMTMgKzg2MDcsNyBAQAogICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bwogICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQogICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSwKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgIG9zMSwKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICBuZXdzdHIpKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEsIG5ld3N0cikpIHsKICAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQpAQCAtNjE0NSwxMCArODYxNSw2IEBACiAgICAgICAgIFB5X0RFQ1JFRihuZXdzdHIpOwogICAgIH0KIAotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgfQotI2VuZGlmCi0KICNpZm5kZWYgTVNfV0lORE9XUwogICAgIFB5X0RFQ1JFRihvczEpOwogICAgIFB5X0RFQ1JFRihvczIpOwpAQCAtNjE3MywyMyArODYzOSwyMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3Vuc2V0ZW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3MxOwotICAgIGNoYXIgKnMxOworICAgIFB5T2JqZWN0ICpuYW1lOwogI2lmbmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgogICAgIGludCBlcnI7CiAjZW5kaWYKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6dW5zZXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEpKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzMSA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MxKTsKIAogI2lmZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCi0gICAgdW5zZXRlbnYoczEpOworICAgIHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICNlbHNlCi0gICAgZXJyID0gdW5zZXRlbnYoczEpOworICAgIGVyciA9IHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKICAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvczEpOworICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KICNlbmRpZgpAQCAtNjE5OSwxMiArODY2NCwxMSBAQAogICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCB1bnNldGVudigpIGNhbGwgYmVjYXVzZSB0aGUKICAgICAgKiBvbGQgdmFsdWUgd2FzIHN0aWxsIGFjY2Vzc2libGUgdW50aWwgdGhlbi4KICAgICAgKi8KLSAgICBpZiAoUHlEaWN0X0RlbEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG9zMSkpIHsKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0ocG9zaXhfcHV0ZW52X2dhcmJhZ2UsIG5hbWUpKSB7CiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KLQotICAgIFB5X0RFQ1JFRihvczEpOworICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiB1bnNldGVudiAqLwpAQCAtNjIyNiw3ICs4NjkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJlcnJvcigpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1lc3NhZ2UpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKG1lc3NhZ2UsICJzdXJyb2dhdGVlc2NhcGUiKTsKIH0KIAogCkBAIC02NDMyLDcgKzg4OTYsOCBAQAogCiBQeURvY19TVFJWQVIocG9zaXhfZnN0YXR2ZnNfX2RvY19fLAogImZzdGF0dmZzKGZkKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC4iKTsKK1BlcmZvcm0gYW4gZnN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIGZkLlxuXAorRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2ZzdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTY0NTcsMjcgKzg5MjIsODcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgogCiBQeURvY19TVFJWQVIocG9zaXhfc3RhdHZmc19fZG9jX18sCi0ic3RhdHZmcyhwYXRoKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4iKTsKKyJzdGF0dmZzKHBhdGgpXG5cblwKK1BlcmZvcm0gYSBzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3N0YXR2ZnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIGNoYXIgKnBhdGg7Ci0gICAgaW50IHJlczsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgc3RydWN0IHN0YXR2ZnMgc3Q7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnN0YXR2ZnMiLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBzdGF0dmZzKHBhdGgsICZzdCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2ZpbGVuYW1lKHBhdGgpOwogCi0gICAgcmV0dXJuIF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0ZTVEFUVkZTCisgICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyNpZmRlZiBfX0FQUExFX18KKyAgICAgICAgLyogaGFuZGxlIHdlYWstbGlua2luZyBvbiBNYWMgT1MgWCAxMC4zICovCisgICAgICAgIGlmIChmc3RhdHZmcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBmZF9zcGVjaWZpZWQoInN0YXR2ZnMiLCBwYXRoLmZkKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGZzdGF0dmZzKHBhdGguZmQsICZzdCk7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBzdGF0dmZzKHBhdGgubmFycm93LCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoInN0YXR2ZnMiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAjZW5kaWYgLyogSEFWRV9TVEFUVkZTICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCitQeURvY19TVFJWQVIod2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX18sCisiX2dldGRpc2t1c2FnZShwYXRoKSAtPiAodG90YWwsIGZyZWUpXG5cblwKK1JldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgKHRvdGFsLCBmcmVlKSB0dXBsZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbjMyX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIEJPT0wgcmV0dmFsOworICAgIFVMQVJHRV9JTlRFR0VSIF8sIHRvdGFsLCBmcmVlOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CisKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1IiwgJnBhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXR2YWwgPSBHZXREaXNrRnJlZVNwYWNlRXhXKHBhdGgsICZfLCAmdG90YWwsICZmcmVlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXR2YWwgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihMTCkiLCB0b3RhbC5RdWFkUGFydCwgZnJlZS5RdWFkUGFydCk7Cit9CisjZW5kaWYKKworCiAvKiBUaGlzIGlzIHVzZWQgZm9yIGZwYXRoY29uZigpLCBwYXRoY29uZigpLCBjb25mc3RyKCkgYW5kIHN5c2NvbmYoKS4KICAqIEl0IG1hcHMgc3RyaW5ncyByZXByZXNlbnRpbmcgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBuYW1lcyB0bwogICogaW50ZWdlciB2YWx1ZXMsIGFsbG93aW5nIHRob3NlIGZ1bmN0aW9ucyB0byBiZSBjYWxsZWQgd2l0aCB0aGUKQEAgLTY2NjQsMzEgKzkxODksNDUgQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9wYXRoY29uZl9fZG9jX18sCiAicGF0aGNvbmYocGF0aCwgbmFtZSkgLT4gaW50ZWdlclxuXG5cCiBSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IHBhdGguXG5cCi1JZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLiIpOworSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcGF0aGNvbmYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogeworICAgIHBhdGhfdCBwYXRoOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCBuYW1lOwotICAgIGNoYXIgKnBhdGg7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZSIsIE5VTEx9OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJjpwYXRoY29uZiIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisjZW5kaWYKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgbG9uZyBsaW1pdDsKIAogICAgIGVycm5vID0gMDsKLSAgICBsaW1pdCA9IHBhdGhjb25mKHBhdGgsIG5hbWUpOworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIGxpbWl0ID0gZnBhdGhjb25mKHBhdGguZmQsIG5hbWUpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBsaW1pdCA9IHBhdGhjb25mKHBhdGgubmFycm93LCBuYW1lKTsKICAgICBpZiAobGltaXQgPT0gLTEgJiYgZXJybm8gIT0gMCkgewogICAgICAgICBpZiAoZXJybm8gPT0gRUlOVkFMKQogICAgICAgICAgICAgLyogY291bGQgYmUgYSBwYXRoIG9yIG5hbWUgcHJvYmxlbSAqLwogICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHBhdGhfcG9zaXhfZXJyb3IoInBhdGhjb25mIiwgJnBhdGgpOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhsaW1pdCk7CiAgICAgfQorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNzU0MCw5ICsxMDA3OSwxMCBAQAogICAgIFB5T2JqZWN0ICpvZmlsZXBhdGg7CiAgICAgY2hhciAqZmlsZXBhdGg7CiAgICAgY2hhciAqb3BlcmF0aW9uID0gTlVMTDsKKyAgICB3Y2hhcl90ICp3cGF0aCwgKndvcGVyYXRpb247CiAgICAgSElOU1RBTkNFIHJjOwogCi0gICAgUHlPYmplY3QgKnVuaXBhdGgsICp3b3BlcmF0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxzOnN0YXJ0ZmlsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmlwYXRoLCAmb3BlcmF0aW9uKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNzU1MCwyNiArMTAwOTAsMzUgQEAKICAgICB9CiAKICAgICBpZiAob3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkob3BlcmF0aW9uLAorICAgICAgICB1b3BlcmF0aW9uID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKG9wZXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4ob3BlcmF0aW9uKSwgTlVMTCk7Ci0gICAgICAgIGlmICghd29wZXJhdGlvbikgeworICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwogICAgICAgICAgICAgZ290byBub3JtYWw7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7CisgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gbm9ybWFsOworICAgIGlmICh1b3BlcmF0aW9uKSB7CisgICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOworICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBub3JtYWw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBTaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24gPyBQeVVuaWNvZGVfQVNfVU5JQ09ERSh3b3BlcmF0aW9uKSA6IDAsCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaXBhdGgpLAotICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKKyAgICByYyA9IFNoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBQeV9YREVDUkVGKHdvcGVyYXRpb24pOworICAgIFB5X1hERUNSRUYodW9wZXJhdGlvbik7CiAgICAgaWYgKHJjIDw9IChISU5TVEFOQ0UpMzIpIHsKLSAgICAgICAgUHlPYmplY3QgKmVycnZhbCA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoInN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaXBhdGgpKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKKyAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJzdGFydGZpbGUiLCB1bmlwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTc1NzksNiArMTAxMjgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb2ZpbGVwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BlcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG9maWxlcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBmaWxlcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2ZpbGVwYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBTaGVsbEV4ZWN1dGUoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKQEAgLTc2MjMsNjIgKzEwMTc2LDExIEBACiBkZXZpY2VfZW5jb2RpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBmZDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkgfHwgIWlzYXR0eShmZCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKE1TX1dJTjY0KQotICAgIGlmIChmZCA9PSAwKSB7Ci0gICAgICAgIGNoYXIgYnVmWzEwMF07Ci0gICAgICAgIHNwcmludGYoYnVmLCAiY3AlZCIsIEdldENvbnNvbGVDUCgpKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgfQotICAgIGlmIChmZCA9PSAxIHx8IGZkID09IDIpIHsKLSAgICAgICAgY2hhciBidWZbMTAwXTsKLSAgICAgICAgc3ByaW50ZihidWYsICJjcCVkIiwgR2V0Q29uc29sZU91dHB1dENQKCkpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKLSAgICB9Ci0jZWxpZiBkZWZpbmVkKENPREVTRVQpCi0gICAgewotICAgICAgICBjaGFyICpjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7Ci0gICAgICAgIGlmIChjb2Rlc2V0ICE9IE5VTEwgJiYgY29kZXNldFswXSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvZGVzZXQpOwotICAgIH0KLSNlbmRpZgotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3VyYW5kb21fX2RvY19fLAotInVyYW5kb20obikgLT4gc3RyXG5cblwKLVJldHVybiBuIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91cmFuZG9tKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgcmV0OwotCi0gICAgIC8qIFJlYWQgYXJndW1lbnRzICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnVyYW5kb20iLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSk7Ci0gICAgaWYgKHJldCA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeV9kZXZpY2VfZW5jb2RpbmcoZmQpOwogfQogCiAjaWZkZWYgSEFWRV9TRVRSRVNVSUQKQEAgLTc3NTcsMjEgKzEwMjU5LDQ2OCBAQAogfQogI2VuZGlmCiAKKyNpZmRlZiBVU0VfWEFUVFJTCisKK1B5RG9jX1NUUlZBUihwb3NpeF9nZXR4YXR0cl9fZG9jX18sCisiZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkgLT4gdmFsdWVcblxuXAorUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBnZXR4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZ2V0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIHBhdGhfdCBhdHRyaWJ1dGU7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEw7CisgICAgaW50IGk7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAorICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJnZXR4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CisgICAgICAgIHZvaWQgKnB0cjsKKyAgICAgICAgc3NpemVfdCByZXN1bHQ7CisgICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOworICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCJnZXR4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlcik7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICAgICAgaWYgKHBhdGguZmQgPj0gMCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGZnZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBsZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImdldHhhdHRyIiwgJnBhdGgpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBidWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgLyogQ2FuIG9ubHkgc2hyaW5rLiAqLworICAgICAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZidWZmZXIsIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zZXR4YXR0cl9fZG9jX18sCisic2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1NldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2V0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIHBhdGhfdCBhdHRyaWJ1dGU7CisgICAgUHlfYnVmZmVyIHZhbHVlOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAidmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOworICAgIG1lbXNldCgmdmFsdWUsIDAsIHNpemVvZih2YWx1ZSkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLAorICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKKyAgICAgICAgJnZhbHVlLCAmZmxhZ3MsCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInNldHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmc2V0eGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBzZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBsc2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJzZXR4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3JlbW92ZXhhdHRyX19kb2NfXywKKyJyZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitSZW1vdmUgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuXAorcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHJlbW92ZXhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3JlbW92ZXhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBwYXRoX3QgYXR0cmlidXRlOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpyZW1vdmV4YXR0ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInJlbW92ZXhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICByZXN1bHQgPSBmcmVtb3ZleGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSByZW1vdmV4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBscmVtb3ZleGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJyZW1vdmV4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHJldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfbGlzdHhhdHRyX19kb2NfXywKKyJsaXN0eGF0dHIocGF0aD0nLicsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitSZXR1cm4gYSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2lmIHBhdGggaXMgTm9uZSwgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9saXN0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjaGFyICpidWZmZXIgPSBOVUxMOworICAgIGNoYXIgKm5hbWU7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgcGF0aC5mZCA9IC0xOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImxpc3R4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIG5hbWUgPSBwYXRoLm5hcnJvdyA/IHBhdGgubmFycm93IDogIi4iOworICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CisgICAgICAgIGNoYXIgKnN0YXJ0LCAqdHJhY2UsICplbmQ7CisgICAgICAgIHNzaXplX3QgbGVuZ3RoOworICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsgMjU2LCBYQVRUUl9MSVNUX01BWCwgMCB9OworICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOworICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CisgICAgICAgICAgICAvKiBFUkFOR0UgKi8KKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImxpc3R4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlciA9IFB5TWVtX01BTExPQyhidWZmZXJfc2l6ZSk7CisgICAgICAgIGlmICghYnVmZmVyKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgICAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICAgICAgbGVuZ3RoID0gZmxpc3R4YXR0cihwYXRoLmZkLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgbGVuZ3RoID0gbGlzdHhhdHRyKG5hbWUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsZW5ndGggPSBsbGlzdHhhdHRyKG5hbWUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgICAgICBpZiAobGVuZ3RoIDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHBhdGhfZXJyb3IoImxpc3R4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGVuZCA9IGJ1ZmZlciArIGxlbmd0aDsKKyAgICAgICAgZm9yICh0cmFjZSA9IHN0YXJ0ID0gYnVmZmVyOyB0cmFjZSAhPSBlbmQ7IHRyYWNlKyspIHsKKyAgICAgICAgICAgIGlmICghKnRyYWNlKSB7CisgICAgICAgICAgICAgICAgaW50IGVycm9yOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWJ1dGUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2UgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXJyb3IgPSBQeUxpc3RfQXBwZW5kKHJlc3VsdCwgYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnQgPSB0cmFjZSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICBicmVhazsKKyAgICB9CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgUHlNZW1fRlJFRShidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiBVU0VfWEFUVFJTICovCisKKworUHlEb2NfU1RSVkFSKHBvc2l4X3VyYW5kb21fX2RvY19fLAorInVyYW5kb20obikgLT4gc3RyXG5cblwKK1JldHVybiBuIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF91cmFuZG9tKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQgcmV0OworCisgICAgIC8qIFJlYWQgYXJndW1lbnRzICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnVyYW5kb20iLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSk7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFRlcm1pbmFsIHNpemUgcXVlcnlpbmcgKi8KKworc3RhdGljIFB5VHlwZU9iamVjdCBUZXJtaW5hbFNpemVUeXBlOworCitQeURvY19TVFJWQVIoVGVybWluYWxTaXplX2RvY3N0cmluZywKKyAgICAiQSB0dXBsZSBvZiAoY29sdW1ucywgbGluZXMpIGZvciBob2xkaW5nIHRlcm1pbmFsIHdpbmRvdyBzaXplIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIFRlcm1pbmFsU2l6ZV9maWVsZHNbXSA9IHsKKyAgICB7ImNvbHVtbnMiLCAid2lkdGggb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzIn0sCisgICAgeyJsaW5lcyIsICJoZWlnaHQgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzIn0sCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIFRlcm1pbmFsU2l6ZV9kZXNjID0geworICAgICJvcy50ZXJtaW5hbF9zaXplIiwKKyAgICBUZXJtaW5hbFNpemVfZG9jc3RyaW5nLAorICAgIFRlcm1pbmFsU2l6ZV9maWVsZHMsCisgICAgMiwKK307CisKKyNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCitQeURvY19TVFJWQVIodGVybXNpemVfX2RvY19fLAorICAgICJSZXR1cm4gdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBhcyAoY29sdW1ucywgbGluZXMpLlxuIiAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJUaGUgb3B0aW9uYWwgYXJndW1lbnQgZmQgKGRlZmF1bHQgc3RhbmRhcmQgb3V0cHV0KSBzcGVjaWZpZXNcbiIgICAgICAgXAorICAgICJ3aGljaCBmaWxlIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHF1ZXJpZWQuXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJJZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdCBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbCwgYW4gT1NFcnJvclxuIiAgXAorICAgICJpcyB0aHJvd24uXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBkZWZpbmVkIGlmIGFuIGltcGxlbWVudGF0aW9uIGlzXG4iICAgICAgICAgXAorICAgICJhdmFpbGFibGUgZm9yIHRoaXMgc3lzdGVtLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUgaXMgdGhlIGhpZ2gtbGV2ZWwgZnVuY3Rpb24gd2hpY2ggc2hvdWxkIFxuIiAgXAorICAgICJub3JtYWxseSBiZSB1c2VkLCBvcy5nZXRfdGVybWluYWxfc2l6ZSBpcyB0aGUgbG93LWxldmVsIGltcGxlbWVudGF0aW9uLiIpOworCitzdGF0aWMgUHlPYmplY3QqCitnZXRfdGVybWluYWxfc2l6ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNvbHVtbnMsIGxpbmVzOworICAgIFB5T2JqZWN0ICp0ZXJtc2l6ZTsKKworICAgIGludCBmZCA9IGZpbGVubyhzdGRvdXQpOworICAgIC8qIFVuZGVyIHNvbWUgY29uZGl0aW9ucyBzdGRvdXQgbWF5IG5vdCBiZSBjb25uZWN0ZWQgYW5kCisgICAgICogZmlsZW5vKHN0ZG91dCkgbWF5IHBvaW50IHRvIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLiBGb3IgZXhhbXBsZQorICAgICAqIEdVSSBhcHBzIGRvbid0IGhhdmUgdmFsaWQgc3RhbmRhcmQgc3RyZWFtcyBieSBkZWZhdWx0LgorICAgICAqCisgICAgICogSWYgdGhpcyBoYXBwZW5zLCBhbmQgdGhlIG9wdGlvbmFsIGZkIGFyZ3VtZW50IGlzIG5vdCBwcmVzZW50LAorICAgICAqIHRoZSBpb2N0bCBiZWxvdyB3aWxsIGZhaWwgcmV0dXJuaW5nIEVCQURGLiBUaGlzIGlzIHdoYXQgd2Ugd2FudC4KKyAgICAgKi8KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGkiLCAmZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmZGVmIFRFUk1TSVpFX1VTRV9JT0NUTAorICAgIHsKKyAgICAgICAgc3RydWN0IHdpbnNpemUgdzsKKyAgICAgICAgaWYgKGlvY3RsKGZkLCBUSU9DR1dJTlNaLCAmdykpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBjb2x1bW5zID0gdy53c19jb2w7CisgICAgICAgIGxpbmVzID0gdy53c19yb3c7CisgICAgfQorI2VuZGlmIC8qIFRFUk1TSVpFX1VTRV9JT0NUTCAqLworCisjaWZkZWYgVEVSTVNJWkVfVVNFX0NPTklPCisgICAgeworICAgICAgICBEV09SRCBuaGFuZGxlOworICAgICAgICBIQU5ETEUgaGFuZGxlOworICAgICAgICBDT05TT0xFX1NDUkVFTl9CVUZGRVJfSU5GTyBjc2JpOworICAgICAgICBzd2l0Y2ggKGZkKSB7CisgICAgICAgIGNhc2UgMDogbmhhbmRsZSA9IFNURF9JTlBVVF9IQU5ETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOiBuaGFuZGxlID0gU1REX09VVFBVVF9IQU5ETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOiBuaGFuZGxlID0gU1REX0VSUk9SX0hBTkRMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIGZpbGUgZGVzY3JpcHRvciIpOworICAgICAgICB9CisgICAgICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZShuaGFuZGxlKTsKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19PU0Vycm9yLCAiaGFuZGxlIGNhbm5vdCBiZSByZXRyaWV2ZWQiKTsKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgICAgICBpZiAoIUdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZvKGhhbmRsZSwgJmNzYmkpKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgICAgIGNvbHVtbnMgPSBjc2JpLnNyV2luZG93LlJpZ2h0IC0gY3NiaS5zcldpbmRvdy5MZWZ0ICsgMTsKKyAgICAgICAgbGluZXMgPSBjc2JpLnNyV2luZG93LkJvdHRvbSAtIGNzYmkuc3JXaW5kb3cuVG9wICsgMTsKKyAgICB9CisjZW5kaWYgLyogVEVSTVNJWkVfVVNFX0NPTklPICovCisKKyAgICB0ZXJtc2l6ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUZXJtaW5hbFNpemVUeXBlKTsKKyAgICBpZiAodGVybXNpemUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0ZXJtc2l6ZSwgMCwgUHlMb25nX0Zyb21Mb25nKGNvbHVtbnMpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRlcm1zaXplLCAxLCBQeUxvbmdfRnJvbUxvbmcobGluZXMpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYodGVybXNpemUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHRlcm1zaXplOworfQorI2VuZGlmIC8qIGRlZmluZWQoVEVSTVNJWkVfVVNFX0NPTklPKSB8fCBkZWZpbmVkKFRFUk1TSVpFX1VTRV9JT0NUTCkgKi8KKworCiBzdGF0aWMgUHlNZXRob2REZWYgcG9zaXhfbWV0aG9kc1tdID0gewotICAgIHsiYWNjZXNzIiwgICAgICAgICAgcG9zaXhfYWNjZXNzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2FjY2Vzc19fZG9jX199LAorICAgIHsiYWNjZXNzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9hY2Nlc3NfX2RvY19ffSwKICNpZmRlZiBIQVZFX1RUWU5BTUUKICAgICB7InR0eW5hbWUiLCAgICAgICAgIHBvc2l4X3R0eW5hbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfdHR5bmFtZV9fZG9jX199LAogI2VuZGlmCi0gICAgeyJjaGRpciIsICAgICAgICAgICBwb3NpeF9jaGRpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaGRpcl9fZG9jX199LAorICAgIHsiY2hkaXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NoZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NoZGlyX19kb2NfX30sCiAjaWZkZWYgSEFWRV9DSEZMQUdTCi0gICAgeyJjaGZsYWdzIiwgICAgICAgICBwb3NpeF9jaGZsYWdzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NoZmxhZ3NfX2RvY19ffSwKKyAgICB7ImNoZmxhZ3MiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NoZmxhZ3NfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0NIRkxBR1MgKi8KLSAgICB7ImNobW9kIiwgICAgICAgICAgIHBvc2l4X2NobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NobW9kX19kb2NfX30sCisgICAgeyJjaG1vZCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2htb2QsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2htb2RfX2RvY19ffSwKICNpZmRlZiBIQVZFX0ZDSE1PRAogICAgIHsiZmNobW9kIiwgICAgICAgICAgcG9zaXhfZmNobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZjaG1vZF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfRkNITU9EICovCiAjaWZkZWYgSEFWRV9DSE9XTgotICAgIHsiY2hvd24iLCAgICAgICAgICAgcG9zaXhfY2hvd24sIE1FVEhfVkFSQVJHUywgcG9zaXhfY2hvd25fX2RvY19ffSwKKyAgICB7ImNob3duIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG93biwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG93bl9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfQ0hPV04gKi8KICNpZmRlZiBIQVZFX0xDSE1PRAogICAgIHsibGNobW9kIiwgICAgICAgICAgcG9zaXhfbGNobW9kLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaG1vZF9fZG9jX199LApAQCAtNzc5NywzMiArMTA3NDYsNTcgQEAKICAgICB7ImdldGN3ZGIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9nZXRjd2RfYnl0ZXMsCiAgICAgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGN3ZGJfX2RvY19ffSwKICNlbmRpZgotI2lmZGVmIEhBVkVfTElOSwotICAgIHsibGluayIsICAgICAgICAgICAgcG9zaXhfbGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9saW5rX19kb2NfX30sCisjaWYgZGVmaW5lZChIQVZFX0xJTkspIHx8IGRlZmluZWQoTVNfV0lORE9XUykKKyAgICB7ImxpbmsiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xpbmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0xJTksgKi8KLSAgICB7Imxpc3RkaXIiLCAgICAgICAgIHBvc2l4X2xpc3RkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfbGlzdGRpcl9fZG9jX199LAotICAgIHsibHN0YXQiLCAgICAgICAgICAgcG9zaXhfbHN0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfbHN0YXRfX2RvY19ffSwKLSAgICB7Im1rZGlyIiwgICAgICAgICAgIHBvc2l4X21rZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21rZGlyX19kb2NfX30sCisgICAgeyJsaXN0ZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGlzdGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saXN0ZGlyX19kb2NfX30sCisgICAgeyJsc3RhdCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbHN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbHN0YXRfX2RvY19ffSwKKyAgICB7Im1rZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2Rpcl9fZG9jX199LAogI2lmZGVmIEhBVkVfTklDRQogICAgIHsibmljZSIsICAgICAgICAgICAgcG9zaXhfbmljZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9uaWNlX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9OSUNFICovCisjaWZkZWYgSEFWRV9HRVRQUklPUklUWQorICAgIHsiZ2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0cHJpb3JpdHlfX2RvY19ffSwKKyNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCisjaWZkZWYgSEFWRV9TRVRQUklPUklUWQorICAgIHsic2V0cHJpb3JpdHkiLCAgICAgcG9zaXhfc2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cHJpb3JpdHlfX2RvY19ffSwKKyNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCiAjaWZkZWYgSEFWRV9SRUFETElOSwotICAgIHsicmVhZGxpbmsiLCAgICAgICAgcG9zaXhfcmVhZGxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZGxpbmtfX2RvY19ffSwKKyAgICB7InJlYWRsaW5rIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZWFkbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkbGlua19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KICNpZiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJyZWFkbGluayIsICAgICAgICB3aW5fcmVhZGxpbmssIE1FVEhfVkFSQVJHUywgd2luX3JlYWRsaW5rX19kb2NfX30sCisgICAgeyJyZWFkbGluayIsICAgICAgICAoUHlDRnVuY3Rpb24pd2luX3JlYWRsaW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5rX19kb2NfX30sCiAjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwotICAgIHsicmVuYW1lIiwgICAgICAgICAgcG9zaXhfcmVuYW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlbmFtZV9fZG9jX199LAotICAgIHsicm1kaXIiLCAgICAgICAgICAgcG9zaXhfcm1kaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfcm1kaXJfX2RvY19ffSwKLSAgICB7InN0YXQiLCAgICAgICAgICAgIHBvc2l4X3N0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3RhdF9fZG9jX199LAorICAgIHsicmVuYW1lIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZW5hbWVfX2RvY19ffSwKKyAgICB7InJlcGxhY2UiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZXBsYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlcGxhY2VfX2RvY19ffSwKKyAgICB7InJtZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ybWRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ybWRpcl9fZG9jX199LAorICAgIHsic3RhdCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3RhdF9fZG9jX199LAogICAgIHsic3RhdF9mbG9hdF90aW1lcyIsIHN0YXRfZmxvYXRfdGltZXMsIE1FVEhfVkFSQVJHUywgc3RhdF9mbG9hdF90aW1lc19fZG9jX199LAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsic3ltbGluayIsICAgICAgICAgcG9zaXhfc3ltbGluaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeW1saW5rX19kb2NfX30sCisjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspCisgICAgeyJzeW1saW5rIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc3ltbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zeW1saW5rX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pd2luX3N5bWxpbmssIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHdpbl9zeW1saW5rX19kb2NfX30sCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KICNpZmRlZiBIQVZFX1NZU1RFTQogICAgIHsic3lzdGVtIiwgICAgICAgICAgcG9zaXhfc3lzdGVtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N5c3RlbV9fZG9jX199LAogI2VuZGlmCkBAIC03ODMwLDE2ICsxMDgwNCwyMyBAQAogI2lmZGVmIEhBVkVfVU5BTUUKICAgICB7InVuYW1lIiwgICAgICAgICAgIHBvc2l4X3VuYW1lLCBNRVRIX05PQVJHUywgcG9zaXhfdW5hbWVfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1VOQU1FICovCi0gICAgeyJ1bmxpbmsiLCAgICAgICAgICBwb3NpeF91bmxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfdW5saW5rX19kb2NfX30sCi0gICAgeyJyZW1vdmUiLCAgICAgICAgICBwb3NpeF91bmxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVtb3ZlX19kb2NfX30sCi0gICAgeyJ1dGltZSIsICAgICAgICAgICBwb3NpeF91dGltZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF91dGltZV9fZG9jX199LAorICAgIHsidW5saW5rIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3VubGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF91bmxpbmtfX2RvY19ffSwKKyAgICB7InJlbW92ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZlX19kb2NfX30sCisgICAgeyJ1dGltZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBwb3NpeF91dGltZV9fZG9jX199LAogI2lmZGVmIEhBVkVfVElNRVMKICAgICB7InRpbWVzIiwgICAgICAgICAgIHBvc2l4X3RpbWVzLCBNRVRIX05PQVJHUywgcG9zaXhfdGltZXNfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1RJTUVTICovCiAgICAgeyJfZXhpdCIsICAgICAgICAgICBwb3NpeF9fZXhpdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9fZXhpdF9fZG9jX199LAogI2lmZGVmIEhBVkVfRVhFQ1YKICAgICB7ImV4ZWN2IiwgICAgICAgICAgIHBvc2l4X2V4ZWN2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2V4ZWN2X19kb2NfX30sCi0gICAgeyJleGVjdmUiLCAgICAgICAgICBwb3NpeF9leGVjdmUsIE1FVEhfVkFSQVJHUywgcG9zaXhfZXhlY3ZlX19kb2NfX30sCisgICAgeyJleGVjdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZXhlY3ZlLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2V4ZWN2ZV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KICNpZmRlZiBIQVZFX1NQQVdOVgogICAgIHsic3Bhd252IiwgICAgICAgICAgcG9zaXhfc3Bhd252LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NwYXdudl9fZG9jX199LApAQCAtNzg1NSw2ICsxMDgzNiwzMiBAQAogI2lmZGVmIEhBVkVfRk9SSwogICAgIHsiZm9yayIsICAgICAgICAgICAgcG9zaXhfZm9yaywgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0ZPUksgKi8KKyNpZmRlZiBIQVZFX1NDSEVEX0gKKyNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKyAgICB7InNjaGVkX2dldHBhcmFtIiwgcG9zaXhfc2NoZWRfZ2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisgICAgeyJzY2hlZF9nZXRzY2hlZHVsZXIiLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorICAgIHsic2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorICAgIHsic2NoZWRfc2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9zZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRwYXJhbV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKyAgICB7InNjaGVkX3NldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19ffSwKKyNlbmRpZgorICAgIHsic2NoZWRfeWllbGQiLCAgICAgcG9zaXhfc2NoZWRfeWllbGQsIE1FVEhfTk9BUkdTLCBwb3NpeF9zY2hlZF95aWVsZF9fZG9jX199LAorI2lmZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKyAgICB7InNjaGVkX3NldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19ffSwKKyAgICB7InNjaGVkX2dldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19ffSwKKyNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0NIRURfSCAqLwogI2lmIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKQogICAgIHsib3BlbnB0eSIsICAgICAgICAgcG9zaXhfb3BlbnB0eSwgTUVUSF9OT0FSR1MsIHBvc2l4X29wZW5wdHlfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX09QRU5QVFkgfHwgSEFWRV9fR0VUUFRZIHx8IEhBVkVfREVWX1BUTVggKi8KQEAgLTc4NzAsNiArMTA4NzcsOSBAQAogI2lmZGVmIEhBVkVfR0VUR0lECiAgICAgeyJnZXRnaWQiLCAgICAgICAgICBwb3NpeF9nZXRnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRnaWRfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0dFVEdJRCAqLworI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisgICAgeyJnZXRncm91cGxpc3QiLCAgICBwb3NpeF9nZXRncm91cGxpc3QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZ2V0Z3JvdXBsaXN0X19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX0dFVEdST1VQUwogICAgIHsiZ2V0Z3JvdXBzIiwgICAgICAgcG9zaXhfZ2V0Z3JvdXBzLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z3JvdXBzX19kb2NfX30sCiAjZW5kaWYKQEAgLTc4OTgsNyArMTA5MDgsNiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7InN0YXJ0ZmlsZSIsICAgICAgIHdpbjMyX3N0YXJ0ZmlsZSwgTUVUSF9WQVJBUkdTLCB3aW4zMl9zdGFydGZpbGVfX2RvY19ffSwKICAgICB7ImtpbGwiLCAgICB3aW4zMl9raWxsLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX2tpbGxfX2RvY19ffSwKLSAgICB7ImxpbmsiLCAgICB3aW4zMl9saW5rLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX2xpbmtfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfU0VUVUlECiAgICAgeyJzZXR1aWQiLCAgICAgICAgICBwb3NpeF9zZXR1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0dWlkX19kb2NfX30sCkBAIC03OTM5LDYgKzEwOTQ4LDkgQEAKICNpZmRlZiBIQVZFX1dBSVQ0CiAgICAgeyJ3YWl0NCIsICAgICAgICAgICBwb3NpeF93YWl0NCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0NF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfV0FJVDQgKi8KKyNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgeyJ3YWl0aWQiLCAgICAgICAgICBwb3NpeF93YWl0aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdGlkX19kb2NfX30sCisjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfV0FJVFBJRCkgfHwgZGVmaW5lZChIQVZFX0NXQUlUKQogICAgIHsid2FpdHBpZCIsICAgICAgICAgcG9zaXhfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0cGlkX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9XQUlUUElEICovCkBAIC03OTU3LDI1ICsxMDk2OSw1MyBAQAogI2lmZGVmIEhBVkVfVENTRVRQR1JQCiAgICAgeyJ0Y3NldHBncnAiLCAgICAgICBwb3NpeF90Y3NldHBncnAsIE1FVEhfVkFSQVJHUywgcG9zaXhfdGNzZXRwZ3JwX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9UQ1NFVFBHUlAgKi8KLSAgICB7Im9wZW4iLCAgICAgICAgICAgIHBvc2l4X29wZW4sIE1FVEhfVkFSQVJHUywgcG9zaXhfb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X29wZW4sXAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X29wZW5fX2RvY19ffSwKICAgICB7ImNsb3NlIiwgICAgICAgICAgIHBvc2l4X2Nsb3NlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlX19kb2NfX30sCiAgICAgeyJjbG9zZXJhbmdlIiwgICAgICBwb3NpeF9jbG9zZXJhbmdlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nsb3NlcmFuZ2VfX2RvY19ffSwKICAgICB7ImRldmljZV9lbmNvZGluZyIsIGRldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTLCBkZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKICAgICB7ImR1cCIsICAgICAgICAgICAgIHBvc2l4X2R1cCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9kdXBfX2RvY19ffSwKICAgICB7ImR1cDIiLCAgICAgICAgICAgIHBvc2l4X2R1cDIsIE1FVEhfVkFSQVJHUywgcG9zaXhfZHVwMl9fZG9jX199LAorI2lmZGVmIEhBVkVfTE9DS0YKKyAgICB7ImxvY2tmIiwgICAgICAgICAgIHBvc2l4X2xvY2tmLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xvY2tmX19kb2NfX30sCisjZW5kaWYKICAgICB7ImxzZWVrIiwgICAgICAgICAgIHBvc2l4X2xzZWVrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xzZWVrX19kb2NfX30sCiAgICAgeyJyZWFkIiwgICAgICAgICAgICBwb3NpeF9yZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWRfX2RvY19ffSwKKyNpZmRlZiBIQVZFX1JFQURWCisgICAgeyJyZWFkdiIsICAgICAgICAgICBwb3NpeF9yZWFkdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkdl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QUkVBRAorICAgIHsicHJlYWQiLCAgICAgICAgICAgcG9zaXhfcHJlYWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHJlYWRfX2RvY19ffSwKKyNlbmRpZgogICAgIHsid3JpdGUiLCAgICAgICAgICAgcG9zaXhfd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfd3JpdGVfX2RvY19ffSwKKyNpZmRlZiBIQVZFX1dSSVRFVgorICAgIHsid3JpdGV2IiwgICAgICAgICAgcG9zaXhfd3JpdGV2LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRldl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QV1JJVEUKKyAgICB7InB3cml0ZSIsICAgICAgICAgIHBvc2l4X3B3cml0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wd3JpdGVfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0VOREZJTEUKKyAgICB7InNlbmRmaWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zZW5kZmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zZW5kZmlsZV9fZG9jX199LAorI2VuZGlmCiAgICAgeyJmc3RhdCIsICAgICAgICAgICBwb3NpeF9mc3RhdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mc3RhdF9fZG9jX199LAogICAgIHsiaXNhdHR5IiwgICAgICAgICAgcG9zaXhfaXNhdHR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2lzYXR0eV9fZG9jX199LAogI2lmZGVmIEhBVkVfUElQRQogICAgIHsicGlwZSIsICAgICAgICAgICAgcG9zaXhfcGlwZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3BpcGVfX2RvY19ffSwKICNlbmRpZgorI2lmZGVmIEhBVkVfUElQRTIKKyAgICB7InBpcGUyIiwgICAgICAgICAgIHBvc2l4X3BpcGUyLCBNRVRIX08sIHBvc2l4X3BpcGUyX19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX01LRklGTwotICAgIHsibWtmaWZvIiwgICAgICAgICAgcG9zaXhfbWtmaWZvLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21rZmlmb19fZG9jX199LAorICAgIHsibWtmaWZvIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rZmlmbywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta2ZpZm9fX2RvY19ffSwKICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi0gICAgeyJta25vZCIsICAgICAgICAgICBwb3NpeF9ta25vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9ta25vZF9fZG9jX199LAorICAgIHsibWtub2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rbm9kLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rbm9kX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX0RFVklDRV9NQUNST1MKICAgICB7Im1ham9yIiwgICAgICAgICAgIHBvc2l4X21ham9yLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21ham9yX19kb2NfX30sCkBAIC03OTg1LDYgKzExMDI1LDE3IEBACiAjaWZkZWYgSEFWRV9GVFJVTkNBVEUKICAgICB7ImZ0cnVuY2F0ZSIsICAgICAgIHBvc2l4X2Z0cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mdHJ1bmNhdGVfX2RvY19ffSwKICNlbmRpZgorI2lmZGVmIEhBVkVfVFJVTkNBVEUKKyAgICB7InRydW5jYXRlIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF90cnVuY2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF90cnVuY2F0ZV9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9QT1NJWF9GQUxMT0NBVEUKKyAgICB7InBvc2l4X2ZhbGxvY2F0ZSIsIHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGVfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorICAgIHsicG9zaXhfZmFkdmlzZSIsICAgcG9zaXhfcG9zaXhfZmFkdmlzZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX1BVVEVOVgogICAgIHsicHV0ZW52IiwgICAgICAgICAgcG9zaXhfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3B1dGVudl9fZG9jX199LAogI2VuZGlmCkBAIC03OTk4LDYgKzExMDQ5LDkgQEAKICNpZmRlZiBIQVZFX0ZTWU5DCiAgICAgeyJmc3luYyIsICAgICAgIHBvc2l4X2ZzeW5jLCBNRVRIX08sIHBvc2l4X2ZzeW5jX19kb2NfX30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NZTkMKKyAgICB7InN5bmMiLCAgICAgICAgcG9zaXhfc3luYywgTUVUSF9OT0FSR1MsIHBvc2l4X3N5bmNfX2RvY19ffSwKKyNlbmRpZgogI2lmZGVmIEhBVkVfRkRBVEFTWU5DCiAgICAgeyJmZGF0YXN5bmMiLCAgIHBvc2l4X2ZkYXRhc3luYywgIE1FVEhfTywgcG9zaXhfZmRhdGFzeW5jX19kb2NfX30sCiAjZW5kaWYKQEAgLTgwMzEsNyArMTEwODUsOSBAQAogICAgIHsiZnN0YXR2ZnMiLCAgICAgICAgcG9zaXhfZnN0YXR2ZnMsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXR2ZnNfX2RvY19ffSwKICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkKLSAgICB7InN0YXR2ZnMiLCAgICAgICAgIHBvc2l4X3N0YXR2ZnMsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3RhdHZmc19fZG9jX199LAorICAgIHsic3RhdHZmcyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N0YXR2ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3RhdHZmc19fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9DT05GU1RSCiAgICAgeyJjb25mc3RyIiwgICAgICAgICBwb3NpeF9jb25mc3RyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2NvbmZzdHJfX2RvY19ffSwKQEAgLTgwNDMsNyArMTEwOTksOSBAQAogICAgIHsiZnBhdGhjb25mIiwgICAgICAgcG9zaXhfZnBhdGhjb25mLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZwYXRoY29uZl9fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9QQVRIQ09ORgotICAgIHsicGF0aGNvbmYiLCAgICAgICAgcG9zaXhfcGF0aGNvbmYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcGF0aGNvbmZfX2RvY19ffSwKKyAgICB7InBhdGhjb25mIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9wYXRoY29uZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9wYXRoY29uZl9fZG9jX199LAogI2VuZGlmCiAgICAgeyJhYm9ydCIsICAgICAgICAgICBwb3NpeF9hYm9ydCwgTUVUSF9OT0FSR1MsIHBvc2l4X2Fib3J0X19kb2NfX30sCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtODA1MSw2ICsxMTEwOSw3IEBACiAgICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsICAgICAgIHBvc2l4X19nZXRmaW5hbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHsiX2dldGZpbGVpbmZvcm1hdGlvbiIsICAgICBwb3NpeF9fZ2V0ZmlsZWluZm9ybWF0aW9uLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAogICAgIHsiX2lzZGlyIiwgICAgICAgICAgICAgICAgICBwb3NpeF9faXNkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2lzZGlyX19kb2NfX30sCisgICAgeyJfZ2V0ZGlza3VzYWdlIiwgICAgICAgICAgIHdpbjMyX19nZXRkaXNrdXNhZ2UsIE1FVEhfVkFSQVJHUywgd2luMzJfX2dldGRpc2t1c2FnZV9fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRMT0FEQVZHCiAgICAgeyJnZXRsb2FkYXZnIiwgICAgICBwb3NpeF9nZXRsb2FkYXZnLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0bG9hZGF2Z19fZG9jX199LApAQCAtODA2OCw2ICsxMTEyNywyNCBAQAogI2lmZGVmIEhBVkVfR0VUUkVTR0lECiAgICAgeyJnZXRyZXNnaWQiLCAgICAgICBwb3NpeF9nZXRyZXNnaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRyZXNnaWRfX2RvY19ffSwKICNlbmRpZgorCisjaWZkZWYgVVNFX1hBVFRSUworICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfc2V0eGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X3NldHhhdHRyX19kb2NfX30sCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9nZXR4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfZ2V0eGF0dHJfX2RvY19ffSwKKyAgICB7InJlbW92ZXhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX199LAorICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3R4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdHhhdHRyX19kb2NfX30sCisjZW5kaWYKKyNpZiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpCisgICAgeyJnZXRfdGVybWluYWxfc2l6ZSIsIGdldF90ZXJtaW5hbF9zaXplLCBNRVRIX1ZBUkFSR1MsIHRlcm1zaXplX19kb2NfX30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTgyMzUsNiArMTEzMTIsOSBAQAogI2lmZGVmIE9fVEVYVAogICAgIGlmIChpbnMoZCwgIk9fVEVYVCIsIChsb25nKU9fVEVYVCkpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIE9fWEFUVFIKKyAgICBpZiAoaW5zKGQsICJPX1hBVFRSIiwgKGxvbmcpT19YQVRUUikpIHJldHVybiAtMTsKKyNlbmRpZgogI2lmZGVmIE9fTEFSR0VGSUxFCiAgICAgaWYgKGlucyhkLCAiT19MQVJHRUZJTEUiLCAobG9uZylPX0xBUkdFRklMRSkpIHJldHVybiAtMTsKICNlbmRpZgpAQCAtODI0NCw2ICsxMTMyNCwzOCBAQAogI2lmZGVmIE9fRVhMT0NLCiAgICAgaWYgKGlucyhkLCAiT19FWExPQ0siLCAobG9uZylPX0VYTE9DSykpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIE9fRVhFQworICAgIGlmIChpbnMoZCwgIk9fRVhFQyIsIChsb25nKU9fRVhFQykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fU0VBUkNICisgICAgaWYgKGlucyhkLCAiT19TRUFSQ0giLCAobG9uZylPX1NFQVJDSCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fVFRZX0lOSVQKKyAgICBpZiAoaW5zKGQsICJPX1RUWV9JTklUIiwgKGxvbmcpT19UVFlfSU5JVCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBSSU9fUFJPQ0VTUworICAgIGlmIChpbnMoZCwgIlBSSU9fUFJPQ0VTUyIsIChsb25nKVBSSU9fUFJPQ0VTUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBSSU9fUEdSUAorICAgIGlmIChpbnMoZCwgIlBSSU9fUEdSUCIsIChsb25nKVBSSU9fUEdSUCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFBSSU9fVVNFUgorICAgIGlmIChpbnMoZCwgIlBSSU9fVVNFUiIsIChsb25nKVBSSU9fVVNFUikpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fQ0xPRVhFQworICAgIGlmIChpbnMoZCwgIk9fQ0xPRVhFQyIsIChsb25nKU9fQ0xPRVhFQykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIE9fQUNDTU9ERQorICAgIGlmIChpbnMoZCwgIk9fQUNDTU9ERSIsIChsb25nKU9fQUNDTU9ERSkpIHJldHVybiAtMTsKKyNlbmRpZgorCisKKyNpZmRlZiBTRUVLX0hPTEUKKyAgICBpZiAoaW5zKGQsICJTRUVLX0hPTEUiLCAobG9uZylTRUVLX0hPTEUpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTRUVLX0RBVEEKKyAgICBpZiAoaW5zKGQsICJTRUVLX0RBVEEiLCAobG9uZylTRUVLX0RBVEEpKSByZXR1cm4gLTE7CisjZW5kaWYKIAogLyogTVMgV2luZG93cyAqLwogI2lmZGVmIE9fTk9JTkhFUklUCkBAIC04Mjg2LDYgKzExMzk4LDEwIEBACiAgICAgLyogRG8gbm90IGZvbGxvdyBsaW5rcy4gICAgICAqLwogICAgIGlmIChpbnMoZCwgIk9fTk9GT0xMT1ciLCAobG9uZylPX05PRk9MTE9XKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgT19OT0xJTktTCisgICAgLyogRmFpbHMgaWYgbGluayBjb3VudCBvZiB0aGUgbmFtZWQgZmlsZSBpcyBncmVhdGVyIHRoYW4gMSAqLworICAgIGlmIChpbnMoZCwgIk9fTk9MSU5LUyIsIChsb25nKU9fTk9MSU5LUykpIHJldHVybiAtMTsKKyNlbmRpZgogI2lmZGVmIE9fTk9BVElNRQogICAgIC8qIERvIG5vdCB1cGRhdGUgdGhlIGFjY2VzcyB0aW1lLiAqLwogICAgIGlmIChpbnMoZCwgIk9fTk9BVElNRSIsIChsb25nKU9fTk9BVElNRSkpIHJldHVybiAtMTsKQEAgLTgzNTIsNiArMTE0NjgsNzkgQEAKICAgICBpZiAoaW5zKGQsICJTVF9OT1NVSUQiLCAobG9uZylTVF9OT1NVSUQpKSByZXR1cm4gLTE7CiAjZW5kaWYgLyogU1RfTk9TVUlEICovCiAKKyAgICAvKiBGcmVlQlNEIHNlbmRmaWxlKCkgY29uc3RhbnRzICovCisjaWZkZWYgU0ZfTk9ESVNLSU8KKyAgICBpZiAoaW5zKGQsICJTRl9OT0RJU0tJTyIsIChsb25nKVNGX05PRElTS0lPKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0ZfTU5PV0FJVAorICAgIGlmIChpbnMoZCwgIlNGX01OT1dBSVQiLCAobG9uZylTRl9NTk9XQUlUKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0ZfU1lOQworICAgIGlmIChpbnMoZCwgIlNGX1NZTkMiLCAobG9uZylTRl9TWU5DKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyAgICAvKiBjb25zdGFudHMgZm9yIHBvc2l4X2ZhZHZpc2UgKi8KKyNpZmRlZiBQT1NJWF9GQURWX05PUk1BTAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfTk9STUFMIiwgKGxvbmcpUE9TSVhfRkFEVl9OT1JNQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX1NFUVVFTlRJQUwKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1NFUVVFTlRJQUwiLCAobG9uZylQT1NJWF9GQURWX1NFUVVFTlRJQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX1JBTkRPTQorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfUkFORE9NIiwgKGxvbmcpUE9TSVhfRkFEVl9SQU5ET00pKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX05PUkVVU0UKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX05PUkVVU0UiLCAobG9uZylQT1NJWF9GQURWX05PUkVVU0UpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX1dJTExORUVECisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9XSUxMTkVFRCIsIChsb25nKVBPU0lYX0ZBRFZfV0lMTE5FRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQT1NJWF9GQURWX0RPTlRORUVECisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9ET05UTkVFRCIsIChsb25nKVBPU0lYX0ZBRFZfRE9OVE5FRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKworICAgIC8qIGNvbnN0YW50cyBmb3Igd2FpdGlkICovCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoSEFWRV9XQUlUSUQpCisgICAgaWYgKGlucyhkLCAiUF9QSUQiLCAobG9uZylQX1BJRCkpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJQX1BHSUQiLCAobG9uZylQX1BHSUQpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiUF9BTEwiLCAobG9uZylQX0FMTCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFdFWElURUQKKyAgICBpZiAoaW5zKGQsICJXRVhJVEVEIiwgKGxvbmcpV0VYSVRFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFdOT1dBSVQKKyAgICBpZiAoaW5zKGQsICJXTk9XQUlUIiwgKGxvbmcpV05PV0FJVCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFdTVE9QUEVECisgICAgaWYgKGlucyhkLCAiV1NUT1BQRUQiLCAobG9uZylXU1RPUFBFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9FWElURUQKKyAgICBpZiAoaW5zKGQsICJDTERfRVhJVEVEIiwgKGxvbmcpQ0xEX0VYSVRFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9EVU1QRUQKKyAgICBpZiAoaW5zKGQsICJDTERfRFVNUEVEIiwgKGxvbmcpQ0xEX0RVTVBFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9UUkFQUEVECisgICAgaWYgKGlucyhkLCAiQ0xEX1RSQVBQRUQiLCAobG9uZylDTERfVFJBUFBFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIENMRF9DT05USU5VRUQKKyAgICBpZiAoaW5zKGQsICJDTERfQ09OVElOVUVEIiwgKGxvbmcpQ0xEX0NPTlRJTlVFRCkpIHJldHVybiAtMTsKKyNlbmRpZgorCisgICAgLyogY29uc3RhbnRzIGZvciBsb2NrZiAqLworI2lmZGVmIEZfTE9DSworICAgIGlmIChpbnMoZCwgIkZfTE9DSyIsIChsb25nKUZfTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIEZfVExPQ0sKKyAgICBpZiAoaW5zKGQsICJGX1RMT0NLIiwgKGxvbmcpRl9UTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIEZfVUxPQ0sKKyAgICBpZiAoaW5zKGQsICJGX1VMT0NLIiwgKGxvbmcpRl9VTE9DSykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIEZfVEVTVAorICAgIGlmIChpbnMoZCwgIkZfVEVTVCIsIChsb25nKUZfVEVTVCkpIHJldHVybiAtMTsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TUEFXTlYKICNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKQogICAgIGlmIChpbnMoZCwgIlBfV0FJVCIsIChsb25nKVBfV0FJVCkpIHJldHVybiAtMTsKQEAgLTgzODMsNiArMTE1NzIsNjQgQEAKICNlbmRpZgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NDSEVEX0gKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9PVEhFUiIsIChsb25nKVNDSEVEX09USEVSKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZJRk8iLCAobG9uZylTQ0hFRF9GSUZPKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlNDSEVEX1JSIiwgKGxvbmcpU0NIRURfUlIpKSByZXR1cm4gLTE7CisjaWZkZWYgU0NIRURfU1BPUkFESUMKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9TUE9SQURJQyIsIChsb25nKVNDSEVEX1NQT1JBRElDKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9CQVRDSAorICAgIGlmIChpbnMoZCwgIlNDSEVEX0JBVENIIiwgKGxvbmcpU0NIRURfQkFUQ0gpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9JRExFCisgICAgaWYgKGlucyhkLCAiU0NIRURfSURMRSIsIChsb25nKVNDSEVEX0lETEUpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9SRVNFVF9PTl9GT1JLCisgICAgaWYgKGlucyhkLCAiU0NIRURfUkVTRVRfT05fRk9SSyIsIChsb25nKVNDSEVEX1JFU0VUX09OX0ZPUkspKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9TWVMKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9TWVMiLCAobG9uZylTQ0hFRF9TWVMpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9JQQorICAgIGlmIChpbnMoZCwgIlNDSEVEX0lBIiwgKGxvbmcpU0NIRURfSUEpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9GU1MKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9GU1MiLCAobG9uZylTQ0hFRF9GU1MpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBTQ0hFRF9GWAorICAgIGlmIChpbnMoZCwgIlNDSEVEX0ZYIiwgKGxvbmcpU0NIRURfRlNTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIFVTRV9YQVRUUlMKKyAgICBpZiAoaW5zKGQsICJYQVRUUl9DUkVBVEUiLCAobG9uZylYQVRUUl9DUkVBVEUpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiWEFUVFJfUkVQTEFDRSIsIChsb25nKVhBVFRSX1JFUExBQ0UpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiWEFUVFJfU0laRV9NQVgiLCAobG9uZylYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKKyNlbmRpZgorCisjaWZkZWYgUlRMRF9MQVpZCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTEFaWSkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfTk9XCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTk9XKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9HTE9CQUwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9HTE9CQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX0xPQ0FMCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTE9DQUwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX05PREVMRVRFCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfTk9ERUxFVEUpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX05PTE9BRAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PTE9BRCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfREVFUEJJTkQKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9ERUVQQklORCkpIHJldHVybiAtMTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChQWU9TX09TMikKICAgICBpZiAoaW5zZXJ0dmFsdWVzKGQpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTg0MTYsMTAgKzExNjYzLDEzOCBAQAogfTsKIAogCitzdGF0aWMgY2hhciAqaGF2ZV9mdW5jdGlvbnNbXSA9IHsKKworI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgIkhBVkVfRkFDQ0VTU0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICAiSEFWRV9GQ0hESVIiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgICJIQVZFX0ZDSE1PRCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNITU9EQVQKKyAgICAiSEFWRV9GQ0hNT0RBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgIkhBVkVfRkNIT1dOIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRVhFQ1ZFCisgICAgIkhBVkVfRkVYRUNWRSIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkRPUEVORElSCisgICAgIkhBVkVfRkRPUEVORElSIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GUEFUSENPTkYKKyAgICAiSEFWRV9GUEFUSENPTkYiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZTVEFUQVQKKyAgICAiSEFWRV9GU1RBVEFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgICJIQVZFX0ZTVEFUVkZTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKyAgICAiSEFWRV9GVFJVTkNBVEUiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZVVElNRU5TCisgICAgIkhBVkVfRlVUSU1FTlMiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZVVElNRVMKKyAgICAiSEFWRV9GVVRJTUVTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVVRJTUVTQVQKKyAgICAiSEFWRV9GVVRJTUVTQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJTktBVAorICAgICJIQVZFX0xJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTENIRkxBR1MKKyAgICAiSEFWRV9MQ0hGTEFHUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTENITU9ECisgICAgIkhBVkVfTENITU9EIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MQ0hPV04KKyAgICAiSEFWRV9MQ0hPV04iLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xTVEFUCisgICAgIkhBVkVfTFNUQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xVVElNRVMKKyAgICAiSEFWRV9MVVRJTUVTIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgIkhBVkVfTUtESVJBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICAiSEFWRV9NS0ZJRk9BVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgICJIQVZFX01LTk9EQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX09QRU5BVAorICAgICJIQVZFX09QRU5BVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVBRExJTktBVAorICAgICJIQVZFX1JFQURMSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1JFTkFNRUFUCisgICAgIkhBVkVfUkVOQU1FQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZTUxJTktBVAorICAgICJIQVZFX1NZTUxJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICAiSEFWRV9VTkxJTktBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVVRJTUVOU0FUCisgICAgIkhBVkVfVVRJTUVOU0FUIiwKKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgICJNU19XSU5ET1dTIiwKKyNlbmRpZgorCisgICAgTlVMTAorfTsKKworCiBQeU1PRElOSVRfRlVOQwogSU5JVEZVTkModm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSwgKnY7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgY2hhciAqKnRyYWNlOwogCiAjaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICB3aW4zMl9jYW5fc3ltbGluayA9IGVuYWJsZV9zeW1saW5rKCk7CkBAIC04NDUxLDYgKzExODI2LDExIEBACiAjZW5kaWYKIAogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKKyNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCisgICAgICAgIHdhaXRpZF9yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLndhaXRpZF9yZXN1bHQiOworICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZXYWl0aWRSZXN1bHRUeXBlLCAmd2FpdGlkX3Jlc3VsdF9kZXNjKTsKKyNlbmRpZgorCiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zdGF0X3Jlc3VsdCI7CiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MuZmllbGRzWzddLm5hbWUgPSBQeVN0cnVjdFNlcXVlbmNlX1VubmFtZWRGaWVsZDsKICAgICAgICAgc3RhdF9yZXN1bHRfZGVzYy5maWVsZHNbOF0ubmFtZSA9IFB5U3RydWN0U2VxdWVuY2VfVW5uYW1lZEZpZWxkOwpAQCAtODQ3MCwxMyArMTE4NTAsMzggQEAKICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IDYwOyAvKiBtYWdpYyBmYWxsYmFjayB2YWx1ZTsgbWF5IGJlIGJvZ3VzICovCiAjICBlbmRpZgogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCisgICAgICAgIHNjaGVkX3BhcmFtX2Rlc2MubmFtZSA9IE1PRE5BTUUgIi5zY2hlZF9wYXJhbSI7CisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlNjaGVkUGFyYW1UeXBlLCAmc2NoZWRfcGFyYW1fZGVzYyk7CisgICAgICAgIFNjaGVkUGFyYW1UeXBlLnRwX25ldyA9IHNjaGVkX3BhcmFtX25ldzsKKyNlbmRpZgorCisgICAgICAgIC8qIGluaXRpYWxpemUgVGVybWluYWxTaXplX2luZm8gKi8KKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGVybWluYWxTaXplVHlwZSwgJlRlcm1pbmFsU2l6ZV9kZXNjKTsKICAgICB9CisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmV2FpdGlkUmVzdWx0VHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ3YWl0aWRfcmVzdWx0IiwgKFB5T2JqZWN0KikgJldhaXRpZFJlc3VsdFR5cGUpOworI2VuZGlmCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZTdGF0UmVzdWx0VHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdGF0X3Jlc3VsdCIsIChQeU9iamVjdCopICZTdGF0UmVzdWx0VHlwZSk7CiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZTdGF0VkZTUmVzdWx0VHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdGF0dmZzX3Jlc3VsdCIsCiAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopICZTdGF0VkZTUmVzdWx0VHlwZSk7Ci0gICAgaW5pdGlhbGl6ZWQgPSAxOworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorICAgIFB5X0lOQ1JFRigmU2NoZWRQYXJhbVR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic2NoZWRfcGFyYW0iLCAoUHlPYmplY3QgKikmU2NoZWRQYXJhbVR5cGUpOworI2VuZGlmCisKKyAgICB0aW1lc19yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnRpbWVzX3Jlc3VsdCI7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGltZXNSZXN1bHRUeXBlLCAmdGltZXNfcmVzdWx0X2Rlc2MpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGltZXNfcmVzdWx0IiwgKFB5T2JqZWN0ICopJlRpbWVzUmVzdWx0VHlwZSk7CisKKyAgICB1bmFtZV9yZXN1bHRfZGVzYy5uYW1lID0gTU9ETkFNRSAiLnVuYW1lX3Jlc3VsdCI7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVW5hbWVSZXN1bHRUeXBlLCAmdW5hbWVfcmVzdWx0X2Rlc2MpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidW5hbWVfcmVzdWx0IiwgKFB5T2JqZWN0ICopJlVuYW1lUmVzdWx0VHlwZSk7CiAKICNpZmRlZiBfX0FQUExFX18KICAgICAvKgpAQCAtODQ4Niw3ICsxMTg5MSw3IEBACiAgICAgICogY3VycmVudGx5IGFjdGl2ZSBwbGF0Zm9ybS4KICAgICAgKgogICAgICAqIFRoaXMgYmxvY2sgYWxsb3cgb25lIHRvIHVzZSBhIHB5dGhvbiBiaW5hcnkgdGhhdCB3YXMgYnVpbGQgb24KLSAgICAgKiBPU1ggMTAuNCBvbiBPU1ggMTAuMywgd2l0aG91dCBsb29zaW5nIGFjY2VzcyB0byBuZXcgQVBJcyBvbgorICAgICAqIE9TWCAxMC40IG9uIE9TWCAxMC4zLCB3aXRob3V0IGxvc2luZyBhY2Nlc3MgdG8gbmV3IEFQSXMgb24KICAgICAgKiBPU1ggMTAuNC4KICAgICAgKi8KICNpZmRlZiBIQVZFX0ZTVEFUVkZTCkBAIC04NTE1LDYgKzExOTIwLDQzIEBACiAKIAogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLworCisgICAgUHlfSU5DUkVGKCZUZXJtaW5hbFNpemVUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRlcm1pbmFsX3NpemUiLCAoUHlPYmplY3QqKSAmVGVybWluYWxTaXplVHlwZSk7CisKKyAgICBiaWxsaW9uID0gUHlMb25nX0Zyb21Mb25nKDEwMDAwMDAwMDApOworICAgIGlmICghYmlsbGlvbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBzdXBwcmVzcyAiZnVuY3Rpb24gbm90IHVzZWQiIHdhcm5pbmdzICovCisgICAgeworICAgIGludCBpZ25vcmVkOworICAgIGZkX3NwZWNpZmllZCgiIiwgLTEpOworICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoIiIsIDEpOworICAgIGRpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNobW9kIiwgREVGQVVMVF9ESVJfRkQsIDEpOworICAgIGRpcl9mZF9jb252ZXJ0ZXIoUHlfTm9uZSwgJmlnbm9yZWQpOworICAgIGRpcl9mZF91bmF2YWlsYWJsZShQeV9Ob25lLCAmaWdub3JlZCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBwcm92aWRlIGxpc3Qgb2YgbG9jYWxseSBhdmFpbGFibGUgZnVuY3Rpb25zCisgICAgICogc28gb3MucHkgY2FuIHBvcHVsYXRlIHN1cHBvcnRfKiBsaXN0cworICAgICAqLworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yICh0cmFjZSA9IGhhdmVfZnVuY3Rpb25zOyAqdHJhY2U7IHRyYWNlKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoKnRyYWNlLCBzdHJsZW4oKnRyYWNlKSwgTlVMTCk7CisgICAgICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX2hhdmVfZnVuY3Rpb25zIiwgbGlzdCk7CisKKyAgICBpbml0aWFsaXplZCA9IDE7CisKICAgICByZXR1cm4gbTsKIAogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weWV4cGF0LmMgYi9Nb2R1bGVzL3B5ZXhwYXQuYwppbmRleCA0Yjk2ODdhLi4zZjU5ZjBmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5ZXhwYXQuYworKysgYi9Nb2R1bGVzL3B5ZXhwYXQuYwpAQCAtMTAwLDE2ICsxMDAsMTcgQEAKIHNldF9lcnJvcih4bWxwYXJzZW9iamVjdCAqc2VsZiwgZW51bSBYTUxfRXJyb3IgY29kZSkKIHsKICAgICBQeU9iamVjdCAqZXJyOwotICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKICAgICBYTUxfUGFyc2VyIHBhcnNlciA9IHNlbGYtPml0c2VsZjsKICAgICBpbnQgbGluZW5vID0gWE1MX0dldEVycm9yTGluZU51bWJlcihwYXJzZXIpOwogICAgIGludCBjb2x1bW4gPSBYTUxfR2V0RXJyb3JDb2x1bW5OdW1iZXIocGFyc2VyKTsKIAotICAgIC8qIFRoZXJlIGlzIG5vIHJpc2sgb2Ygb3ZlcmZsb3dpbmcgdGhpcyBidWZmZXIsIHNpbmNlCi0gICAgICAgZXZlbiBmb3IgNjQtYml0IGludGVnZXJzLCB0aGVyZSBpcyBzdWZmaWNpZW50IHNwYWNlLiAqLwotICAgIHNwcmludGYoYnVmZmVyLCAiJS4yMDBzOiBsaW5lICVpLCBjb2x1bW4gJWkiLAotICAgICAgICAgICAgWE1MX0Vycm9yU3RyaW5nKGNvZGUpLCBsaW5lbm8sIGNvbHVtbik7Ci0gICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEVycm9yT2JqZWN0LCAicyIsIGJ1ZmZlcik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVpLCBjb2x1bW4gJWkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhjb2RlKSwgbGluZW5vLCBjb2x1bW4pOworICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZXJyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKEVycm9yT2JqZWN0LCAiTyIsIGJ1ZmZlcik7CisgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgaWYgKCAgZXJyICE9IE5VTEwKICAgICAgICAgICAmJiBzZXRfZXJyb3JfYXR0cihlcnIsICJjb2RlIiwgY29kZSkKICAgICAgICAgICAmJiBzZXRfZXJyb3JfYXR0cihlcnIsICJvZmZzZXQiLCBjb2x1bW4pCkBAIC04NDIsOSArODQzLDkgQEAKIHsKICAgICBpbnQgcnYgPSAxOwogICAgIFB5T2JqZWN0ICpyZWFkbWV0aG9kID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKIAotCi0gICAgcmVhZG1ldGhvZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgInJlYWQiKTsKKyAgICByZWFkbWV0aG9kID0gX1B5T2JqZWN0X0dldEF0dHJJZChmLCAmUHlJZF9yZWFkKTsKICAgICBpZiAocmVhZG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBoYXZlICdyZWFkJyBhdHRyaWJ1dGUiKTsKQEAgLTEwMzIsMTYgKzEwMzMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB4bWxwYXJzZV9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqZmxhZ29iaiA9IE5VTEw7CiAgICAgaW50IGZsYWcgPSAxOwogICAgIGVudW0gWE1MX0Vycm9yIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86VXNlRm9yZWlnbkRURCIsICZmbGFnb2JqKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOlVzZUZvcmVpZ25EVEQiLCAmZmxhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmbGFnb2JqICE9IE5VTEwpIHsKLSAgICAgICAgZmxhZyA9IFB5T2JqZWN0X0lzVHJ1ZShmbGFnb2JqKTsKLSAgICAgICAgaWYgKGZsYWcgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJjID0gWE1MX1VzZUZvcmVpZ25EVEQoc2VsZi0+aXRzZWxmLCBmbGFnID8gWE1MX1RSVUUgOiBYTUxfRkFMU0UpOwogICAgIGlmIChyYyAhPSBYTUxfRVJST1JfTk9ORSkgewogICAgICAgICByZXR1cm4gc2V0X2Vycm9yKHNlbGYsIHJjKTsKQEAgLTExMDQsMTcgKzEwOTksMjIgQEAKICAgICBQeVVuaWNvZGVPYmplY3QgKl91X3N0cmluZyA9IE5VTEw7CiAgICAgaW50IHJlc3VsdCA9IDA7CiAgICAgaW50IGk7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIC8qIFllcywgc3VwcG9ydHMgb25seSA4Yml0IGVuY29kaW5ncyAqLwogICAgIF91X3N0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKikKICAgICAgICAgUHlVbmljb2RlX0RlY29kZSh0ZW1wbGF0ZV9idWZmZXIsIDI1NiwgbmFtZSwgInJlcGxhY2UiKTsKIAotICAgIGlmIChfdV9zdHJpbmcgPT0gTlVMTCkKKyAgICBpZiAoX3Vfc3RyaW5nID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKF91X3N0cmluZykgPT0gLTEpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoX3Vfc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoX3Vfc3RyaW5nKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAvKiBTdHVwaWQgdG8gYWNjZXNzIGRpcmVjdGx5LCBidXQgZmFzdCAqLwotICAgICAgICBQeV9VTklDT0RFIGMgPSBfdV9zdHJpbmctPnN0cltpXTsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGlmIChjID09IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKQogICAgICAgICAgICAgaW5mby0+bWFwW2ldID0gLTE7CiAgICAgICAgIGVsc2UKQEAgLTEyMzgsMTEgKzEyMzgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB4bWxwYXJzZV9nZXRhdHRybyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmopCiB7Ci0gICAgUHlfVU5JQ09ERSAqbmFtZTsKKyAgICBQeV9VQ1M0IGZpcnN0X2NoYXI7CiAgICAgaW50IGhhbmRsZXJudW0gPSAtMTsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQogICAgICAgICBnb3RvIGdlbmVyaWM7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBoYW5kbGVybnVtID0gaGFuZGxlcm5hbWUyaW50KG5hbWVvYmopOwogCkBAIC0xMjU0LDggKzEyNTYsOCBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIG5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lb2JqKTsKLSAgICBpZiAobmFtZVswXSA9PSAnRScpIHsKKyAgICBmaXJzdF9jaGFyID0gUHlVbmljb2RlX1JFQURfQ0hBUihuYW1lb2JqLCAwKTsKKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnRScpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJFcnJvckNvZGUiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0RXJyb3JDb2RlKHNlbGYtPml0c2VsZikpOwpAQCAtMTI2OSw3ICsxMjcxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEVycm9yQnl0ZUluZGV4KHNlbGYtPml0c2VsZikpOwogICAgIH0KLSAgICBpZiAobmFtZVswXSA9PSAnQycpIHsKKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnQycpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJDdXJyZW50TGluZU51bWJlciIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRDdXJyZW50TGluZU51bWJlcihzZWxmLT5pdHNlbGYpKTsKQEAgLTEyODAsNyArMTI4Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRDdXJyZW50Qnl0ZUluZGV4KHNlbGYtPml0c2VsZikpOwogICAgIH0KLSAgICBpZiAobmFtZVswXSA9PSAnYicpIHsKKyAgICBpZiAoZmlyc3RfY2hhciA9PSAnYicpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWVvYmosICJidWZmZXJfc2l6ZSIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzZWxmLT5idWZmZXJfc2l6ZSk7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiYnVmZmVyX3RleHQiKSA9PSAwKQpAQCAtMTY3NCw3ICsxNjc2LDYgQEAKICAgICBQeU9iamVjdCAqZXJyb3JzX21vZHVsZTsKICAgICBQeU9iamVjdCAqbW9kZWxtb2RfbmFtZTsKICAgICBQeU9iamVjdCAqbW9kZWxfbW9kdWxlOwotICAgIFB5T2JqZWN0ICp2ZXJzaW9uOwogICAgIFB5T2JqZWN0ICpzeXNfbW9kdWxlczsKICAgICBQeU9iamVjdCAqdG1wbnVtLCAqdG1wc3RyOwogICAgIFB5T2JqZWN0ICpjb2Rlc19kaWN0OwpAQCAtMTcxMSwxMCArMTcxMiw2IEBACiAgICAgUHlfSU5DUkVGKCZYbWxwYXJzZXR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyVHlwZSIsIChQeU9iamVjdCAqKSAmWG1scGFyc2V0eXBlKTsKIAotICAgIHZlcnNpb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhQWV9WRVJTSU9OKTsKLSAgICBpZiAoIXZlcnNpb24pCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX192ZXJzaW9uX18iLCB2ZXJzaW9uKTsKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiRVhQQVRfVkVSU0lPTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgWE1MX0V4cGF0VmVyc2lvbigpKTsKICAgICB7CkBAIC0xOTA3LDYgKzE5MDQsNyBAQAogICAgIGNhcGkuU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IFhNTF9TZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyOwogICAgIGNhcGkuU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlciA9IFhNTF9TZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyOwogICAgIGNhcGkuU2V0VXNlckRhdGEgPSBYTUxfU2V0VXNlckRhdGE7CisgICAgY2FwaS5TZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlciA9IFhNTF9TZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcjsKIAogICAgIC8qIGV4cG9ydCB1c2luZyBjYXBzdWxlICovCiAgICAgY2FwaV9vYmplY3QgPSBQeUNhcHN1bGVfTmV3KCZjYXBpLCBQeUV4cGF0X0NBUFNVTEVfTkFNRSwgTlVMTCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B5dGhvbi5jIGIvTW9kdWxlcy9weXRob24uYwppbmRleCBjZjkzODNmLi5jNzBiZjM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5dGhvbi5jCisrKyBiL01vZHVsZXMvcHl0aG9uLmMKQEAgLTUxLDYgKzUxLDcgQEAKICAgICAgICAgYXJndl9jb3B5W2ldID0gX1B5X2NoYXIyd2NoYXIoYXJndltpXSwgTlVMTCk7CiAjZW5kaWYKICAgICAgICAgaWYgKCFhcmd2X2NvcHlbaV0pIHsKKyAgICAgICAgICAgIGZyZWUob2xkbG9jKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDRkNTRkYWQuLmE3MTA2NTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTIzNSwxMCArMjM1LDkgQEAKICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICJzZXRfJS41MHMoZnVuYyk6IGFyZ3VtZW50IG5vdCBjYWxsYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZnVuY25hbWUpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBidWYpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInNldF8lLjUwcyhmdW5jKTogYXJndW1lbnQgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtODkyLDcgKzg5MSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIF9fQVBQTEVfXwotICAgIC8qIHRoZSBsaWJlZGl0IHJlYWRsaW5lIGVtdWxhdGlvbiByZXNldHMga2V5IGJpbmRpbmdzIGV0YyAKKyAgICAvKiB0aGUgbGliZWRpdCByZWFkbGluZSBlbXVsYXRpb24gcmVzZXRzIGtleSBiaW5kaW5ncyBldGMKICAgICAgKiB3aGVuIGNhbGxpbmcgcmxfaW5pdGlhbGl6ZS4gIFNvIGNhbGwgaXQgdXBmcm9udAogICAgICAqLwogICAgIGlmICh1c2luZ19saWJlZGl0X2VtdWxhdGlvbikKQEAgLTkzMiwxMSArOTMxLDExIEBACiAgICAgICovCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgaWYgKHVzaW5nX2xpYmVkaXRfZW11bGF0aW9uKQotCXJsX3JlYWRfaW5pdF9maWxlKE5VTEwpOworICAgICAgICBybF9yZWFkX2luaXRfZmlsZShOVUxMKTsKICAgICBlbHNlCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAgICAgICAgIHJsX2luaXRpYWxpemUoKTsKLSAgICAKKwogICAgIFJFU1RPUkVfTE9DQUxFKHNhdmVkX2xvY2FsZSkKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZXNvdXJjZS5jIGIvTW9kdWxlcy9yZXNvdXJjZS5jCmluZGV4IDE4NzVlNDguLjFhZWQ0OTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVzb3VyY2UuYworKysgYi9Nb2R1bGVzL3Jlc291cmNlLmMKQEAgLTE4LDggKzE4LDYgQEAKIAogI2RlZmluZSBkb3VibGV0aW1lKFRWKSAoKGRvdWJsZSkoVFYpLnR2X3NlYyArIChUVikudHZfdXNlYyAqIDAuMDAwMDAxKQogCi1zdGF0aWMgUHlPYmplY3QgKlJlc291cmNlRXJyb3I7Ci0KIFB5RG9jX1NUUlZBUihzdHJ1Y3RfcnVzYWdlX19kb2NfXywKICJzdHJ1Y3RfcnVzYWdlOiBSZXN1bHQgZnJvbSBnZXRydXNhZ2UuXG5cbiIKICJUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2ZcbiIKQEAgLTczLDcgKzcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB3aG8gcGFyYW1ldGVyIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUmVzb3VyY2VFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMjUsNyArMTIzLDcgQEAKICAgICB9CiAKICAgICBpZiAoZ2V0cmxpbWl0KHJlc291cmNlLCAmcmwpID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhSZXNvdXJjZUVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE4Myw3ICsxODEsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGxvd2VkIHRvIHJhaXNlIG1heGltdW0gbGltaXQiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFJlc291cmNlRXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMjQ2LDEyICsyNDQsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCi0gICAgaWYgKFJlc291cmNlRXJyb3IgPT0gTlVMTCkgewotICAgICAgICBSZXNvdXJjZUVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJyZXNvdXJjZS5lcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihSZXNvdXJjZUVycm9yKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUmVzb3VyY2VFcnJvcik7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RSVXNhZ2VUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfcnVzYWdlX2Rlc2MpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggOThiMzEwOC4uN2NlYzQ5YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC03LDYgKzcsMTQgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxzdHJ1Y3RtZW1iZXIuaD4KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPHN5cy9kZXZwb2xsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2VuZGlmCisKICNpZmRlZiBfX0FQUExFX18KICAgICAvKiBQZXJmb3JtIHJ1bnRpbWUgdGVzdGluZyBmb3IgYSBicm9rZW4gcG9sbCBvbiBPU1ggdG8gbWFrZSBpdCBlYXNpZXIKICAgICAgKiB0byB1c2UgdGhlIHNhbWUgYmluYXJ5IG9uIG11bHRpcGxlIHJlbGVhc2VzIG9mIHRoZSBPUy4KQEAgLTU0LDggKzYyLDYgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0ICpTZWxlY3RFcnJvcjsKLQogLyogbGlzdCBvZiBQeXRob24gb2JqZWN0cyBhbmQgdGhlaXIgZmlsZSBkZXNjcmlwdG9yICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QgKm9iajsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvd25lZCByZWZlcmVuY2UgKi8KQEAgLTIwMCw5ICsyMDYsNyBAQAogICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0b3V0ID0gUHlfTm9uZTsKICAgICBmZF9zZXQgaWZkc2V0LCBvZmRzZXQsIGVmZHNldDsKLSAgICBkb3VibGUgdGltZW91dDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKLSAgICBsb25nIHNlY29uZHM7CiAgICAgaW50IGltYXgsIG9tYXgsIGVtYXgsIG1heDsKICAgICBpbnQgbjsKIApAQCAtMjE5LDE4ICsyMjMsMzEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZSh0b3V0KTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHRpbWVfdCBzZWM7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0b3V0LCAmc2VjLCAmdHYudHZfdXNlYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPiAoZG91YmxlKUxPTkdfTUFYKSB7CisgICAgICAgIGFzc2VydChzaXplb2YodHYudHZfc2VjKSA9PSBzaXplb2YobG9uZykpOworI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORworICAgICAgICBpZiAoc2VjID4gTE9OR19NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IHBlcmlvZCB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgc2Vjb25kcyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHRpbWVvdXQgPSB0aW1lb3V0IC0gKGRvdWJsZSlzZWNvbmRzOwotICAgICAgICB0di50dl9zZWMgPSBzZWNvbmRzOwotICAgICAgICB0di50dl91c2VjID0gKGxvbmcpKHRpbWVvdXQgKiAxRTYpOworI2VuZGlmCisgICAgICAgIHR2LnR2X3NlYyA9IChsb25nKXNlYzsKKyNlbHNlCisgICAgICAgIC8qIDY0LWJpdCBPUyBYIGhhcyBzdHJ1Y3QgdGltZXZhbC50dl91c2VjIGFzIGFuIGludCAoYW5kIHRodXMgc3RpbGwgNAorICAgICAgICAgICBieXRlcyBhcyByZXF1aXJlZCksIGJ1dCBubyBsb25nZXIgZGVmaW5lZCBieSBhIGxvbmcuICovCisgICAgICAgIGxvbmcgdHZfdXNlYzsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRvdXQsICZ0di50dl9zZWMsICZ0dl91c2VjKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0di50dl91c2VjID0gdHZfdXNlYzsKKyNlbmRpZgorICAgICAgICBpZiAodHYudHZfc2VjIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQogCkBAIC0yNjksMTEgKzI4NiwxMSBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChuID09IFNPQ0tFVF9FUlJPUikgewotICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihTZWxlY3RFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgfQogI2Vsc2UKICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFNlbGVjdEVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIH0KICNlbmRpZgogICAgIGVsc2UgewpAQCAtNDIwLDcgKzQzNyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfR2V0SXRlbShzZWxmLT5kaWN0LCBrZXkpID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFTk9FTlQ7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTIwLDcgKzUzNyw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFNlbGVjdEVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTY0Niw2ICs2NjMsMzM5IEBACiAgICAgcG9sbF9tZXRob2RzLCAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCiB9OwogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBmZF9kZXZwb2xsOworICAgIGludCBtYXhfbl9mZHM7CisgICAgaW50IG5fZmRzOworICAgIHN0cnVjdCBwb2xsZmQgKmZkczsKK30gZGV2cG9sbE9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXZwb2xsX1R5cGU7CisKK3N0YXRpYyBpbnQgZGV2cG9sbF9mbHVzaChkZXZwb2xsT2JqZWN0ICpzZWxmKQoreworICAgIGludCBzaXplLCBuOworCisgICAgaWYgKCFzZWxmLT5uX2ZkcykgcmV0dXJuIDA7CisKKyAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKnNlbGYtPm5fZmRzOworICAgIHNlbGYtPm5fZmRzID0gMDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKG4gPT0gLTEgKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobiA8IHNpemUpIHsKKyAgICAgICAgLyoKKyAgICAgICAgKiogRGF0YSB3cml0ZWQgdG8gL2Rldi9wb2xsIGlzIGEgYmluYXJ5IGRhdGEgc3RydWN0dXJlLiBJdCBpcyBub3QKKyAgICAgICAgKiogY2xlYXIgd2hhdCB0byBkbyBpZiBhIHBhcnRpYWwgd3JpdGUgb2NjdXJyZWQuIEZvciBub3csIHJhaXNlCisgICAgICAgICoqIGFuIGV4Y2VwdGlvbiBhbmQgc2VlIGlmIHdlIGFjdHVhbGx5IGZvdW5kIHRoaXMgcHJvYmxlbSBpbgorICAgICAgICAqKiB0aGUgd2lsZC4KKyAgICAgICAgKiogU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU2Mzk3LgorICAgICAgICAqLworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwgImZhaWxlZCB0byB3cml0ZSBhbGwgcG9sbGZkcy4gIgorICAgICAgICAgICAgICAgICJQbGVhc2UsIHJlcG9ydCBhdCBodHRwOi8vYnVncy5weXRob24ub3JnLy4gIgorICAgICAgICAgICAgICAgICJEYXRhIHRvIHJlcG9ydDogU2l6ZSB0cmllZDogJWQsIGFjdHVhbCBzaXplIHdyaXR0ZW46ICVkLiIsCisgICAgICAgICAgICAgICAgc2l6ZSwgbik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpbnRlcm5hbF9kZXZwb2xsX3JlZ2lzdGVyKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgcmVtb3ZlKQoreworICAgIFB5T2JqZWN0ICpvOworICAgIGludCBmZCwgZXZlbnRzID0gUE9MTElOIHwgUE9MTFBSSSB8IFBPTExPVVQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpyZWdpc3RlciIsICZvLCAmZXZlbnRzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3Iobyk7CisgICAgaWYgKGZkID09IC0xKSByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZW1vdmUpIHsKKyAgICAgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgICAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IFBPTExSRU1PVkU7CisKKyAgICAgICAgaWYgKCsrc2VsZi0+bl9mZHMgPT0gc2VsZi0+bWF4X25fZmRzKSB7CisgICAgICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZmQgPSBmZDsKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IGV2ZW50czsKKworICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9yZWdpc3Rlcl9kb2MsCisicmVnaXN0ZXIoZmQgWywgZXZlbnRtYXNrXSApIC0+IE5vbmVcblxuXAorUmVnaXN0ZXIgYSBmaWxlIGRlc2NyaXB0b3Igd2l0aCB0aGUgcG9sbGluZyBvYmplY3QuXG5cCitmZCAtLSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSBmaWxlbm8oKSBtZXRob2QgcmV0dXJuaW5nIGFuXG5cCisgICAgICBpbnQuXG5cCitldmVudHMgLS0gYW4gb3B0aW9uYWwgYml0bWFzayBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIGV2ZW50cyB0byBjaGVjayBmb3IiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfcmVnaXN0ZXIoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX2RldnBvbGxfcmVnaXN0ZXIoc2VsZiwgYXJncywgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihkZXZwb2xsX21vZGlmeV9kb2MsCisibW9kaWZ5KGZkWywgZXZlbnRtYXNrXSkgLT4gTm9uZVxuXG5cCitNb2RpZnkgYSBwb3NzaWJsZSBhbHJlYWR5IHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9yLlxuXAorZmQgLS0gZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgZmlsZW5vKCkgbWV0aG9kIHJldHVybmluZyBhblxuXAorICAgICAgaW50LlxuXAorZXZlbnRzIC0tIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgdG8gY2hlY2sgZm9yIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX21vZGlmeShkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfZGV2cG9sbF9yZWdpc3RlcihzZWxmLCBhcmdzLCAxKTsKK30KKworCitQeURvY19TVFJWQVIoZGV2cG9sbF91bnJlZ2lzdGVyX2RvYywKKyJ1bnJlZ2lzdGVyKGZkKSAtPiBOb25lXG5cblwKK1JlbW92ZSBhIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0cmFja2VkIGJ5IHRoZSBwb2xsaW5nIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfdW5yZWdpc3RlcihkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbykKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoIG8gKTsKKyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5mZCA9IGZkOworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZXZlbnRzID0gUE9MTFJFTU9WRTsKKworICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9wb2xsX2RvYywKKyJwb2xsKCBbdGltZW91dF0gKSAtPiBsaXN0IG9mIChmZCwgZXZlbnQpIDItdHVwbGVzXG5cblwKK1BvbGxzIHRoZSBzZXQgb2YgcmVnaXN0ZXJlZCBmaWxlIGRlc2NyaXB0b3JzLCByZXR1cm5pbmcgYSBsaXN0IGNvbnRhaW5pbmcgXG5cCithbnkgZGVzY3JpcHRvcnMgdGhhdCBoYXZlIGV2ZW50cyBvciBlcnJvcnMgdG8gcmVwb3J0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF9wb2xsKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHN0cnVjdCBkdnBvbGwgZHZwOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0b3V0ID0gTlVMTDsKKyAgICBpbnQgcG9sbF9yZXN1bHQsIGk7CisgICAgbG9uZyB0aW1lb3V0OworICAgIFB5T2JqZWN0ICp2YWx1ZSwgKm51bTEsICpudW0yOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDaGVjayB2YWx1ZXMgZm9yIHRpbWVvdXQgKi8KKyAgICBpZiAodG91dCA9PSBOVUxMIHx8IHRvdXQgPT0gUHlfTm9uZSkKKyAgICAgICAgdGltZW91dCA9IC0xOworICAgIGVsc2UgaWYgKCFQeU51bWJlcl9DaGVjayh0b3V0KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0b3V0ID0gUHlOdW1iZXJfTG9uZyh0b3V0KTsKKyAgICAgICAgaWYgKCF0b3V0KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHRpbWVvdXQgPSBQeUxvbmdfQXNMb25nKHRvdXQpOworICAgICAgICBQeV9ERUNSRUYodG91dCk7CisgICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoKHRpbWVvdXQgPCAtMSkgfHwgKHRpbWVvdXQgPiBJTlRfTUFYKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBkdnAuZHBfZmRzID0gc2VsZi0+ZmRzOworICAgIGR2cC5kcF9uZmRzID0gc2VsZi0+bWF4X25fZmRzOworICAgIGR2cC5kcF90aW1lb3V0ID0gdGltZW91dDsKKworICAgIC8qIGNhbGwgZGV2cG9sbCgpICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHBvbGxfcmVzdWx0ID0gaW9jdGwoc2VsZi0+ZmRfZGV2cG9sbCwgRFBfUE9MTCwgJmR2cCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBidWlsZCB0aGUgcmVzdWx0IGxpc3QgKi8KKworICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CisgICAgaWYgKCFyZXN1bHRfbGlzdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwb2xsX3Jlc3VsdDsgaSsrKSB7CisgICAgICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7CisgICAgICAgICAgICBudW0yID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5yZXZlbnRzKTsKKyAgICAgICAgICAgIGlmICgobnVtMSA9PSBOVUxMKSB8fCAobnVtMiA9PSBOVUxMKSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihudW0yKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX1BhY2soMiwgbnVtMSwgbnVtMik7CisgICAgICAgICAgICBQeV9ERUNSRUYobnVtMSk7CisgICAgICAgICAgICBQeV9ERUNSRUYobnVtMik7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHRfbGlzdDsKKworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYocmVzdWx0X2xpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgZGV2cG9sbF9tZXRob2RzW10gPSB7CisgICAgeyJyZWdpc3RlciIsICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9yZWdpc3RlciwKKyAgICAgTUVUSF9WQVJBUkdTLCAgZGV2cG9sbF9yZWdpc3Rlcl9kb2N9LAorICAgIHsibW9kaWZ5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfbW9kaWZ5LAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX21vZGlmeV9kb2N9LAorICAgIHsidW5yZWdpc3RlciIsICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfdW5yZWdpc3RlciwKKyAgICAgTUVUSF9PLCAgICAgICAgZGV2cG9sbF91bnJlZ2lzdGVyX2RvY30sCisgICAgeyJwb2xsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGV2cG9sbF9wb2xsLAorICAgICBNRVRIX1ZBUkFSR1MsICBkZXZwb2xsX3BvbGxfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIGRldnBvbGxPYmplY3QgKgorbmV3RGV2UG9sbE9iamVjdCh2b2lkKQoreworICAgIGRldnBvbGxPYmplY3QgKnNlbGY7CisgICAgaW50IGZkX2RldnBvbGwsIGxpbWl0X3Jlc3VsdDsKKyAgICBzdHJ1Y3QgcG9sbGZkICpmZHM7CisgICAgc3RydWN0IHJsaW1pdCBsaW1pdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAvKgorICAgICoqIElmIHdlIHRyeSB0byBwcm9jZXNzIG1vcmUgdGhhdCBnZXRybGltaXQoKQorICAgICoqIGZkcywgdGhlIGtlcm5lbCB3aWxsIGdpdmUgYW4gZXJyb3IsIHNvCisgICAgKiogd2Ugc2V0IHRoZSBsaW1pdCBoZXJlLiBJdCBpcyBhIGR5bmFtaWMKKyAgICAqKiB2YWx1ZSwgYmVjYXVzZSB3ZSBjYW4gY2hhbmdlIHJsaW1pdCgpIGFueXRpbWUuCisgICAgKi8KKyAgICBsaW1pdF9yZXN1bHQgPSBnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJmxpbWl0KTsKKyAgICBpZiAobGltaXRfcmVzdWx0ICE9IC0xKQorICAgICAgICBmZF9kZXZwb2xsID0gb3BlbigiL2Rldi9wb2xsIiwgT19SRFdSKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKGxpbWl0X3Jlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoZmRfZGV2cG9sbCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgIi9kZXYvcG9sbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmZHMgPSBQeU1lbV9ORVcoc3RydWN0IHBvbGxmZCwgbGltaXQucmxpbV9jdXIpOworICAgIGlmIChmZHMgPT0gTlVMTCkgeworICAgICAgICBjbG9zZShmZF9kZXZwb2xsKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhkZXZwb2xsT2JqZWN0LCAmZGV2cG9sbF9UeXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGNsb3NlKGZkX2RldnBvbGwpOworICAgICAgICBQeU1lbV9ERUwoZmRzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPmZkX2RldnBvbGwgPSBmZF9kZXZwb2xsOworICAgIHNlbGYtPm1heF9uX2ZkcyA9IGxpbWl0LnJsaW1fY3VyOworICAgIHNlbGYtPm5fZmRzID0gMDsKKyAgICBzZWxmLT5mZHMgPSBmZHM7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIHZvaWQKK2RldnBvbGxfZGVhbGxvYyhkZXZwb2xsT2JqZWN0ICpzZWxmKQoreworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBjbG9zZShzZWxmLT5mZF9kZXZwb2xsKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fREVMKHNlbGYtPmZkcyk7CisKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgZGV2cG9sbF9UeXBlID0geworICAgIC8qIFRoZSBvYl90eXBlIGZpZWxkIG11c3QgYmUgaW5pdGlhbGl6ZWQgaW4gdGhlIG1vZHVsZSBpbml0IGZ1bmN0aW9uCisgICAgICogdG8gYmUgcG9ydGFibGUgdG8gV2luZG93cyB3aXRob3V0IHVzaW5nIEMrKy4gKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAic2VsZWN0LmRldnBvbGwiLCAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoZGV2cG9sbE9iamVjdCksICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZGV2cG9sbF9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICBkZXZwb2xsX21ldGhvZHMsICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KK307CisjZW5kaWYgIC8qIEhBVkVfU1lTX0RFVlBPTExfSCAqLworCisKKwogUHlEb2NfU1RSVkFSKHBvbGxfZG9jLAogIlJldHVybnMgYSBwb2xsaW5nIG9iamVjdCwgd2hpY2ggc3VwcG9ydHMgcmVnaXN0ZXJpbmcgYW5kXG5cCiB1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuIHBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4iKTsKQEAgLTY1Niw2ICsxMDA2LDE5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld1BvbGxPYmplY3QoKTsKIH0KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorUHlEb2NfU1RSVkFSKGRldnBvbGxfZG9jLAorIlJldHVybnMgYSBwb2xsaW5nIG9iamVjdCwgd2hpY2ggc3VwcG9ydHMgcmVnaXN0ZXJpbmcgYW5kXG5cCit1bnJlZ2lzdGVyaW5nIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCB0aGVuIHBvbGxpbmcgdGhlbSBmb3IgSS9PIGV2ZW50cy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NlbGVjdF9kZXZwb2xsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdEZXZQb2xsT2JqZWN0KCk7Cit9CisjZW5kaWYKKworCiAjaWZkZWYgX19BUFBMRV9fCiAvKgogICogT24gc29tZSBzeXN0ZW1zIHBvbGwoKSBzZXRzIGVycm5vIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4gV2UgdGVzdApAQCAtNzMxLDIwICsxMDk0LDEwIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdQeUVwb2xsX09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzaXplaGludCwgU09DS0VUIGZkKQorbmV3UHlFcG9sbF9PYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgc2l6ZWhpbnQsIGludCBmbGFncywgU09DS0VUIGZkKQogewogICAgIHB5RXBvbGxfT2JqZWN0ICpzZWxmOwogCi0gICAgaWYgKHNpemVoaW50ID09IC0xKSB7Ci0gICAgICAgIHNpemVoaW50ID0gRkRfU0VUU0laRS0xOwotICAgIH0KLSAgICBlbHNlIGlmIChzaXplaGludCA8IDEpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAic2l6ZWhpbnQgbXVzdCBiZSBncmVhdGVyIHplcm8sIGdvdCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICBzaXplaGludCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CiAgICAgc2VsZiA9IChweUVwb2xsX09iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKQpAQCAtNzUyLDYgKzExMDUsMTEgQEAKIAogICAgIGlmIChmZCA9PSAtMSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9FUE9MTF9DUkVBVEUxCisgICAgICAgIGlmIChmbGFncykKKyAgICAgICAgICAgIHNlbGYtPmVwZmQgPSBlcG9sbF9jcmVhdGUxKGZsYWdzKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCiAgICAgICAgIHNlbGYtPmVwZmQgPSBlcG9sbF9jcmVhdGUoc2l6ZWhpbnQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0KQEAgLTc2MCw3ICsxMTE4LDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPmVwZmQgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKQEAgLTc3MCwxNCArMTEyOCwxOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXBvbGxfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGludCBzaXplaGludCA9IC0xOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2l6ZWhpbnQiLCBOVUxMfTsKKyAgICBpbnQgZmxhZ3MgPSAwLCBzaXplaGludCA9IEZEX1NFVFNJWkUgLSAxOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2l6ZWhpbnQiLCAiZmxhZ3MiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aTplcG9sbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZWhpbnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aWk6ZXBvbGwiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemVoaW50LCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2l6ZWhpbnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZWhpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KHR5cGUsIHNpemVoaW50LCAtMSk7CisgICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KHR5cGUsIHNpemVoaW50LCBmbGFncywgLTEpOwogfQogCiAKQEAgLTc5Myw3ICsxMTU1LDcgQEAKIHsKICAgICBlcnJubyA9IHB5ZXBvbGxfaW50ZXJuYWxfY2xvc2Uoc2VsZik7CiAgICAgaWYgKGVycm5vIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtODM1LDcgKzExOTcsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpmcm9tZmQiLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBuZXdQeUVwb2xsX09iamVjdCgoUHlUeXBlT2JqZWN0KiljbHMsIC0xLCBmZCk7CisgICAgcmV0dXJuIG5ld1B5RXBvbGxfT2JqZWN0KChQeVR5cGVPYmplY3QqKWNscywgRkRfU0VUU0laRSAtIDEsIDAsIGZkKTsKIH0KIAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfZnJvbWZkX2RvYywKQEAgLTg4Niw3ICsxMjQ4LDcgQEAKICAgICB9CiAKICAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtOTEwLDcgKzEyNzIsNyBAQAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfcmVnaXN0ZXJfZG9jLAogInJlZ2lzdGVyKGZkWywgZXZlbnRtYXNrXSkgLT4gTm9uZVxuXAogXG5cCi1SZWdpc3RlcnMgYSBuZXcgZmQgb3IgcmFpc2VzIGFuIElPRXJyb3IgaWYgdGhlIGZkIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5cblwKK1JlZ2lzdGVycyBhIG5ldyBmZCBvciByYWlzZXMgYW4gT1NFcnJvciBpZiB0aGUgZmQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLlxuXAogZmQgaXMgdGhlIHRhcmdldCBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIG9wZXJhdGlvbi5cblwKIGV2ZW50cyBpcyBhIGJpdCBzZXQgY29tcG9zZWQgb2YgdGhlIHZhcmlvdXMgRVBPTEwgY29uc3RhbnRzOyB0aGUgZGVmYXVsdFxuXAogaXMgRVBPTExfSU4gfCBFUE9MTF9PVVQgfCBFUE9MTF9QUkkuXG5cCkBAIC0xMDA5LDcgKzEzNzEsNyBAQAogICAgIG5mZHMgPSBlcG9sbF93YWl0KHNlbGYtPmVwZmQsIGV2cywgbWF4ZXZlbnRzLCB0aW1lb3V0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChuZmRzIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTEwNjQsNyArMTQyNiw3IEBACiB9OwogCiBQeURvY19TVFJWQVIocHllcG9sbF9kb2MsCi0ic2VsZWN0LmVwb2xsKFtzaXplaGludD0tMV0pXG5cCisic2VsZWN0LmVwb2xsKHNpemVoaW50PS0xLCBmbGFncz0wKVxuXAogXG5cCiBSZXR1cm5zIGFuIGVwb2xsaW5nIG9iamVjdFxuXAogXG5cCkBAIC0xNDAwLDcgKzE3NjIsNyBAQAogICAgIH0KICAgICBpZiAoc2VsZi0+a3FmZCA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwpAQCAtMTQzMiw3ICsxNzk0LDcgQEAKIHsKICAgICBlcnJubyA9IGtxdWV1ZV9xdWV1ZV9pbnRlcm5hbF9jbG9zZShzZWxmKTsKICAgICBpZiAoZXJybm8gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xNDk1LDcgKzE4NTcsNyBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIHN0cnVjdCBrZXZlbnQgKmV2bCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqY2hsID0gTlVMTDsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dHNwZWM7CisgICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQ7CiAgICAgc3RydWN0IHRpbWVzcGVjICpwdGltZW91dHNwZWM7CiAKICAgICBpZiAoc2VsZi0+a3FmZCA8IDApCkBAIC0xNTE1LDI4ICsxODc3LDE2IEBACiAgICAgICAgIHB0aW1lb3V0c3BlYyA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5TnVtYmVyX0NoZWNrKG90aW1lb3V0KSkgewotICAgICAgICBkb3VibGUgdGltZW91dDsKLSAgICAgICAgbG9uZyBzZWNvbmRzOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0LnR2X3NlYywgJnRpbWVvdXQudHZfbnNlYykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZShvdGltZW91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPiAoZG91YmxlKUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBwZXJpb2QgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICBpZiAodGltZW91dC50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIG9yIE5vbmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KLSAgICAgICAgc2Vjb25kcyA9IChsb25nKXRpbWVvdXQ7Ci0gICAgICAgIHRpbWVvdXQgPSB0aW1lb3V0IC0gKGRvdWJsZSlzZWNvbmRzOwotICAgICAgICB0aW1lb3V0c3BlYy50dl9zZWMgPSBzZWNvbmRzOwotICAgICAgICB0aW1lb3V0c3BlYy50dl9uc2VjID0gKGxvbmcpKHRpbWVvdXQgKiAxRTkpOwotICAgICAgICBwdGltZW91dHNwZWMgPSAmdGltZW91dHNwZWM7CisgICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0OwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTE3MTMsNiArMjA2MywxMSBAQAogfTsKIAogI2VuZGlmIC8qIEhBVkVfS1FVRVVFICovCisKKworCisKKwogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCiAKIFB5RG9jX1NUUlZBUihzZWxlY3RfZG9jLApAQCAtMTc0NCw2ICsyMDk5LDkgQEAKICNpZmRlZiBIQVZFX1BPTEwKICAgICB7InBvbGwiLCAgICAgICAgICAgIHNlbGVjdF9wb2xsLCAgICBNRVRIX05PQVJHUywgICAgcG9sbF9kb2N9LAogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLworI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorICAgIHsiZGV2cG9sbCIsICAgICAgICAgc2VsZWN0X2RldnBvbGwsIE1FVEhfTk9BUkdTLCAgICBkZXZwb2xsX2RvY30sCisjZW5kaWYKICAgICB7MCwgICAgICAgICAwfSwgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNzY2LDYgKzIxMjQsOSBAQAogICAgIE5VTEwKIH07CiAKKworCisKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfc2VsZWN0KHZvaWQpCiB7CkBAIC0xNzc0LDkgKzIxMzUsOCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgU2VsZWN0RXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNlbGVjdC5lcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihTZWxlY3RFcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFNlbGVjdEVycm9yKTsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogCiAjaWZkZWYgUElQRV9CVUYKICNpZmRlZiBIQVZFX0JST0tFTl9QSVBFX0JVRgpAQCAtMTgyMyw2ICsyMTgzLDExIEBACiAgICAgfQogI2VuZGlmIC8qIEhBVkVfUE9MTCAqLwogCisjaWZkZWYgSEFWRV9TWVNfREVWUE9MTF9ICisgICAgaWYgKFB5VHlwZV9SZWFkeSgmZGV2cG9sbF9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisKICNpZmRlZiBIQVZFX0VQT0xMCiAgICAgUHlfVFlQRSgmcHlFcG9sbF9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZweUVwb2xsX1R5cGUpIDwgMCkKQEAgLTE4NDcsNiArMjIxMiwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTFdSTk9STSIsIEVQT0xMV1JOT1JNKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExXUkJBTkQiLCBFUE9MTFdSQkFORCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMTVNHIiwgRVBPTExNU0cpOworCisjaWZkZWYgRVBPTExfQ0xPRVhFQworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9DTE9FWEVDIiwgRVBPTExfQ0xPRVhFQyk7CisjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0VQT0xMICovCiAKICNpZmRlZiBIQVZFX0tRVUVVRQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGExbW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwppbmRleCBiMjViZDQ0Li5hNzMzYzRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTFtb2R1bGUuYwpAQCAtMTg0LDcgKzE4NCw4IEBACiAgICBJbml0aWFsaXplIHRoZSBoYXNoIHN0YXRlCiAgICBAcGFyYW0gc2hhMSAgIFRoZSBoYXNoIHN0YXRlIHlvdSB3aXNoIHRvIGluaXRpYWxpemUKICovCi12b2lkIHNoYTFfaW5pdChzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSkKK3N0YXRpYyB2b2lkCitzaGExX2luaXQoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEpCiB7CiAgICBhc3NlcnQoc2hhMSAhPSBOVUxMKTsKICAgIHNoYTEtPnN0YXRlWzBdID0gMHg2NzQ1MjMwMVVMOwpAQCAtMjAyLDcgKzIwMyw4IEBACiAgICBAcGFyYW0gaW4gICAgIFRoZSBkYXRhIHRvIGhhc2gKICAgIEBwYXJhbSBpbmxlbiAgVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSAob2N0ZXRzKQogKi8KLXZvaWQgc2hhMV9wcm9jZXNzKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLAorc3RhdGljIHZvaWQKK3NoYTFfcHJvY2VzcyhzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSwKICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQogewogICAgIFB5X3NzaXplX3QgbjsKQEAgLTIxOCw3ICsyMjAsNyBAQAogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBTSEExX0JMT0NLU0laRTsKICAgICAgICAgICAgaW5sZW4gICAgICAgICAgLT0gU0hBMV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChTSEExX0JMT0NLU0laRSAtIHNoYTEtPmN1cmxlbikpOworICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoUHlfc3NpemVfdCkoU0hBMV9CTE9DS1NJWkUgLSBzaGExLT5jdXJsZW4pKTsKICAgICAgICAgICAgbWVtY3B5KHNoYTEtPmJ1ZiArIHNoYTEtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7CiAgICAgICAgICAgIHNoYTEtPmN1cmxlbiAgICs9IG47CiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IG47CkBAIC0yMzcsNyArMjM5LDggQEAKICAgIEBwYXJhbSBzaGExICBUaGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIG91dCBbb3V0XSBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGhhc2ggKDIwIGJ5dGVzKQogKi8KLXZvaWQgc2hhMV9kb25lKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLCB1bnNpZ25lZCBjaGFyICpvdXQpCitzdGF0aWMgdm9pZAorc2hhMV9kb25lKHN0cnVjdCBzaGExX3N0YXRlICpzaGExLCB1bnNpZ25lZCBjaGFyICpvdXQpCiB7CiAgICAgaW50IGk7CiAKQEAgLTM1Miw3ICszNTUsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTFfRElHRVNUU0laRV07CiAgICAgc3RydWN0IHNoYTFfc3RhdGUgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtMzYwLDI1ICszNjMsMjAgQEAKICAgICBzaGExX2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNIQTFfRElHRVNUU0laRSAqIDIpOworICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoU0hBMV9ESUdFU1RTSVpFICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8U0hBMV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwppbmRleCA4NjE3MjEwLi43NmQ5MWFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKQEAgLTQ0NSw3ICs0NDUsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtNDUzLDI1ICs0NTMsMjAgQEAKICAgICBzaGFfZmluYWwoZGlnZXN0LCAmdGVtcCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGYtPmRpZ2VzdHNpemUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxzZWxmLT5kaWdlc3RzaXplOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwppbmRleCAwZmFhZjVjLi44OGY4YTY0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKQEAgLTUxMSw3ICs1MTEsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQV9ESUdFU1RTSVpFXTsKICAgICBTSEFvYmplY3QgdGVtcDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5X1VOSUNPREUgKmhleF9kaWdlc3Q7CisgICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKICAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwpAQCAtNTE5LDI1ICs1MTksMjAgQEAKICAgICBzaGE1MTJfZmluYWwoZGlnZXN0LCAmdGVtcCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGYtPmRpZ2VzdHNpemUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwogICAgIGlmICghcmV0dmFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJldHZhbCk7Ci0gICAgaWYgKCFoZXhfZGlnZXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvciAoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKaW5kZXggMzJjZDhiYi4uMmViN2YyOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCkBAIC0yMiw2ICsyMiwxNCBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKKyMgIGRlZmluZSBQWVBUSFJFQURfU0lHTUFTSworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9IKQorIyAgaW5jbHVkZSA8cHRocmVhZC5oPgorI2VuZGlmCisKICNpZm5kZWYgU0lHX0VSUgogI2RlZmluZSBTSUdfRVJSICgoUHlPU19zaWdoYW5kbGVyX3QpKC0xKSkKICNlbmRpZgpAQCAtMTAxLDYgKzEwOSwxMCBAQAogCiBzdGF0aWMgUHlPU19zaWdoYW5kbGVyX3Qgb2xkX3NpZ2ludGhhbmRsZXIgPSBTSUdfREZMOwogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOworI2VuZGlmCisKICNpZmRlZiBIQVZFX0dFVElUSU1FUgogc3RhdGljIFB5T2JqZWN0ICpJdGltZXJFcnJvcjsKIApAQCAtMTY4LDE1ICsxODAsMTkgQEAKIHN0YXRpYyB2b2lkCiB0cmlwX3NpZ25hbChpbnQgc2lnX251bSkKIHsKKyAgICB1bnNpZ25lZCBjaGFyIGJ5dGU7CisKICAgICBIYW5kbGVyc1tzaWdfbnVtXS50cmlwcGVkID0gMTsKKyAgICBpZiAod2FrZXVwX2ZkICE9IC0xKSB7CisgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOworICAgICAgICB3cml0ZSh3YWtldXBfZmQsICZieXRlLCAxKTsKKyAgICB9CiAgICAgaWYgKGlzX3RyaXBwZWQpCiAgICAgICAgIHJldHVybjsKICAgICAvKiBTZXQgaXNfdHJpcHBlZCBhZnRlciBzZXR0aW5nIC50cmlwcGVkLCBhcyBpdCBnZXRzCiAgICAgICAgY2xlYXJlZCBpbiBQeUVycl9DaGVja1NpZ25hbHMoKSBiZWZvcmUgLnRyaXBwZWQuICovCiAgICAgaXNfdHJpcHBlZCA9IDE7CiAgICAgUHlfQWRkUGVuZGluZ0NhbGwoY2hlY2tzaWduYWxzX3dpdGhhcmcsIE5VTEwpOwotICAgIGlmICh3YWtldXBfZmQgIT0gLTEpCi0gICAgICAgIHdyaXRlKHdha2V1cF9mZCwgIlwwIiwgMSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMTcsNiArMjMzLDExIEBACiAgICAgLyogSXNzdWUgIzEwMzExOiBhc3luY2hyb25vdXNseSBleGVjdXRpbmcgc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBub3QKICAgICAgICBtdXRhdGUgZXJybm8gdW5kZXIgdGhlIGZlZXQgb2YgdW5zdXNwZWN0aW5nIEMgY29kZS4gKi8KICAgICBlcnJubyA9IHNhdmVfZXJybm87CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHNpZ19udW0gPT0gU0lHSU5UKQorICAgICAgICBTZXRFdmVudChzaWdpbnRfZXZlbnQpOworI2VuZGlmCiB9CiAKIApAQCAtMzEzLDcgKzMzNCw3IEBACiAgICAgZWxzZQogICAgICAgICBmdW5jID0gc2lnbmFsX2hhbmRsZXI7CiAgICAgaWYgKFB5T1Nfc2V0c2lnKHNpZ19udW0sIGZ1bmMpID09IFNJR19FUlIpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnX251bV0uZnVuYzsKQEAgLTM4Miw3ICs0MDMsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKHNpZ2ludGVycnVwdChzaWdfbnVtLCBmbGFnKTwwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDk1LDYgKzUxNiwzNDEgQEAKIFJldHVybnMgY3VycmVudCB2YWx1ZSBvZiBnaXZlbiBpdGltZXIuIik7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoUFlQVEhSRUFEX1NJR01BU0spIHx8IGRlZmluZWQoSEFWRV9TSUdXQUlUKSB8fCBcCisgICAgICAgIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKy8qIENvbnZlcnQgYW4gaXRlcmFibGUgdG8gYSBzaWdzZXQuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByZXR1cm4gLTEgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KKworc3RhdGljIGludAoraXRlcmFibGVfdG9fc2lnc2V0KFB5T2JqZWN0ICppdGVyYWJsZSwgc2lnc2V0X3QgKm1hc2spCit7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5T2JqZWN0ICppdGVyYXRvciwgKml0ZW07CisgICAgbG9uZyBzaWdudW07CisgICAgaW50IGVycjsKKworICAgIHNpZ2VtcHR5c2V0KG1hc2spOworCisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHdoaWxlICgxKQorICAgIHsKKyAgICAgICAgaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHNpZ251bSA9IFB5TG9uZ19Bc0xvbmcoaXRlbSk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaWYgKHNpZ251bSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKDAgPCBzaWdudW0gJiYgc2lnbnVtIDwgTlNJRykKKyAgICAgICAgICAgIGVyciA9IHNpZ2FkZHNldChtYXNrLCAoaW50KXNpZ251bSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVyciA9IDE7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyICVsZCBvdXQgb2YgcmFuZ2UiLCBzaWdudW0pOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQgPSAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGl0ZXJhdG9yKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSB8fCBkZWZpbmVkKEhBVkVfU0lHUEVORElORykKK3N0YXRpYyBQeU9iamVjdCoKK3NpZ3NldF90b19zZXQoc2lnc2V0X3QgbWFzaykKK3sKKyAgICBQeU9iamVjdCAqc2lnbnVtLCAqcmVzdWx0OworICAgIGludCBzaWc7CisKKyAgICByZXN1bHQgPSBQeVNldF9OZXcoMCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoc2lnID0gMTsgc2lnIDwgTlNJRzsgc2lnKyspIHsKKyAgICAgICAgaWYgKHNpZ2lzbWVtYmVyKCZtYXNrLCBzaWcpICE9IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgaXQgaXMgYSBtZW1iZXIgYnkgYWRkaW5nIHRoZSBzaWduYWwgdG8KKyAgICAgICAgICAgdGhlIHJlc3VsdCBsaXN0LiAgSWdub3JlIHRoZSBvdGhlciBjYXNlcyBiZWNhdXNlIHRoZXkgbWVhbiB0aGUKKyAgICAgICAgICAgc2lnbmFsIGlzbid0IGEgbWVtYmVyIG9mIHRoZSBtYXNrIG9yIHRoZSBzaWduYWwgd2FzIGludmFsaWQsCisgICAgICAgICAgIGFuZCBhbiBpbnZhbGlkIHNpZ25hbCBtdXN0IGhhdmUgYmVlbiBvdXIgZmF1bHQgaW4gY29uc3RydWN0aW5nCisgICAgICAgICAgIHRoZSBsb29wIGJvdW5kYXJpZXMuICovCisgICAgICAgIHNpZ251bSA9IFB5TG9uZ19Gcm9tTG9uZyhzaWcpOworICAgICAgICBpZiAoc2lnbnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5U2V0X0FkZChyZXN1bHQsIHNpZ251bSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzaWdudW0pOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoc2lnbnVtKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9zaWdtYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgaG93OworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IG1hc2ssIHByZXZpb3VzOworICAgIGludCBlcnI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnB0aHJlYWRfc2lnbWFzayIsICZob3csICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZtYXNrKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbWFzaywgJnByZXZpb3VzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogaWYgc2lnbmFscyB3YXMgdW5ibG9ja2VkLCBzaWduYWwgaGFuZGxlcnMgaGF2ZSBiZWVuIGNhbGxlZCAqLworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gc2lnc2V0X3RvX3NldChwcmV2aW91cyk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvYywKKyJwdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKSAtPiBvbGQgbWFza1xuXAorXG5cCitGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sgKi8KKworCisjaWZkZWYgSEFWRV9TSUdQRU5ESU5HCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmcoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaW50IGVycjsKKyAgICBzaWdzZXRfdCBtYXNrOworICAgIGVyciA9IHNpZ3BlbmRpbmcoJm1hc2spOworICAgIGlmIChlcnIpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgcmV0dXJuIHNpZ3NldF90b19zZXQobWFzayk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lncGVuZGluZ19kb2MsCisic2lncGVuZGluZygpIC0+IGxpc3RcblwKK1xuXAorRXhhbWluZSBwZW5kaW5nIHNpZ25hbHMuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdQRU5ESU5HICovCisKKworI2lmZGVmIEhBVkVfU0lHV0FJVAorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd3YWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc2lnbmFsczsKKyAgICBzaWdzZXRfdCBzZXQ7CisgICAgaW50IGVyciwgc2lnbnVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNpZ3dhaXQiLCAmc2lnbmFscykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lnd2FpdCgmc2V0LCAmc2lnbnVtKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIpIHsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzaWdudW0pOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRfZG9jLAorInNpZ3dhaXQoc2lnc2V0KSAtPiBzaWdudW1cblwKK1xuXAorV2FpdCBhIHNpZ25hbC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKK3N0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzdHJ1Y3Rfc2lnaW5mb19maWVsZHNbXSA9IHsKKyAgICB7InNpX3NpZ25vIiwgICAgICAgICJzaWduYWwgbnVtYmVyIn0sCisgICAgeyJzaV9jb2RlIiwgICAgICAgICAic2lnbmFsIGNvZGUifSwKKyAgICB7InNpX2Vycm5vIiwgICAgICAgICJlcnJubyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzaWduYWwifSwKKyAgICB7InNpX3BpZCIsICAgICAgICAgICJzZW5kaW5nIHByb2Nlc3MgSUQifSwKKyAgICB7InNpX3VpZCIsICAgICAgICAgICJyZWFsIHVzZXIgSUQgb2Ygc2VuZGluZyBwcm9jZXNzIn0sCisgICAgeyJzaV9zdGF0dXMiLCAgICAgICAiZXhpdCB2YWx1ZSBvciBzaWduYWwifSwKKyAgICB7InNpX2JhbmQiLCAgICAgICAgICJiYW5kIGV2ZW50IGZvciBTSUdQT0xMIn0sCisgICAgezB9Cit9OworCitQeURvY19TVFJWQVIoc3RydWN0X3NpZ2luZm9fX2RvY19fLAorInN0cnVjdF9zaWdpbmZvOiBSZXN1bHQgZnJvbSBzaWd3YWl0aW5mbyBvciBzaWd0aW1lZHdhaXQuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorKHNpX3NpZ25vLCBzaV9jb2RlLCBzaV9lcnJubywgc2lfcGlkLCBzaV91aWQsIHNpX3N0YXR1cywgc2lfYmFuZCksXG5cCitvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc2lfc2lnbm8sIHNpX2NvZGUsIGFuZCBzbyBvbi4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBzdHJ1Y3Rfc2lnaW5mb19kZXNjID0geworICAgICJzaWduYWwuc3RydWN0X3NpZ2luZm8iLCAgICAgICAgICAgLyogbmFtZSAqLworICAgIHN0cnVjdF9zaWdpbmZvX19kb2NfXywgICAgICAgLyogZG9jICovCisgICAgc3RydWN0X3NpZ2luZm9fZmllbGRzLCAgICAgICAvKiBmaWVsZHMgKi8KKyAgICA3ICAgICAgICAgIC8qIG5faW5fc2VxdWVuY2UgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU2lnaW5mb1R5cGU7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmaWxsX3NpZ2luZm8oc2lnaW5mb190ICpzaSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlNpZ2luZm9UeXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfc2lnbm8pKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDEsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX2NvZGUpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDIsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX2Vycm5vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAzLCBQeUxvbmdfRnJvbVBpZChzaS0+c2lfcGlkKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDQsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX3VpZCkpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS0+c2lfc3RhdHVzKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCA2LCBQeUxvbmdfRnJvbUxvbmcoc2ktPnNpX2JhbmQpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd3YWl0aW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnNpZ25hbHM7CisgICAgc2lnc2V0X3Qgc2V0OworICAgIHNpZ2luZm9fdCBzaTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnNpZ3dhaXRpbmZvIiwgJnNpZ25hbHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGVyciA9IHNpZ3dhaXRpbmZvKCZzZXQsICZzaSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyID09IC0xKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworCisgICAgcmV0dXJuIGZpbGxfc2lnaW5mbygmc2kpOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRpbmZvX2RvYywKKyJzaWd3YWl0aW5mbyhzaWdzZXQpIC0+IHN0cnVjdF9zaWdpbmZvXG5cCitcblwKK1dhaXQgc3luY2hyb25vdXNseSBmb3IgYSBzaWduYWwgdW50aWwgb25lIG9mIHRoZSBzaWduYWxzIGluICpzaWdzZXQqIGlzXG5cCitkZWxpdmVyZWQuXG5cCitSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHV0FJVElORk8gKi8KKworI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3RpbWVkd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnNpZ25hbHMsICp0aW1lb3V0OworICAgIHN0cnVjdCB0aW1lc3BlYyBidWY7CisgICAgc2lnc2V0X3Qgc2V0OworICAgIHNpZ2luZm9fdCBzaTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpzaWd0aW1lZHdhaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmc2lnbmFscywgJnRpbWVvdXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWModGltZW91dCwgJmJ1Zi50dl9zZWMsICZidWYudHZfbnNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGJ1Zi50dl9zZWMgPCAwIHx8IGJ1Zi50dl9uc2VjIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmc2V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgZXJyID0gc2lndGltZWR3YWl0KCZzZXQsICZzaSwgJmJ1Zik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyID09IC0xKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsbF9zaWdpbmZvKCZzaSk7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lndGltZWR3YWl0X2RvYywKKyJzaWd0aW1lZHdhaXQoc2lnc2V0LCAodGltZW91dF9zZWMsIHRpbWVvdXRfbnNlYykpIC0+IHN0cnVjdF9zaWdpbmZvXG5cCitcblwKK0xpa2Ugc2lnd2FpdGluZm8oKSwgYnV0IHdpdGggYSB0aW1lb3V0IHNwZWNpZmllZCBhcyBhIHR1cGxlIG9mIChzZWNvbmRzLFxuXAorbmFub3NlY29uZHMpLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUICovCisKKworI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfa2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyB0aWQ7CisgICAgaW50IHNpZ251bTsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJsaTpwdGhyZWFkX2tpbGwiLCAmdGlkLCAmc2lnbnVtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlcnIgPSBwdGhyZWFkX2tpbGwoKHB0aHJlYWRfdCl0aWQsIHNpZ251bSk7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHRoZSBzaWduYWwgbWF5IGhhdmUgYmVlbiBzZW5kIHRvIHRoZSBjdXJyZW50IHRocmVhZCAqLworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX2tpbGxfZG9jLAorInB0aHJlYWRfa2lsbCh0aHJlYWRfaWQsIHNpZ251bSlcblwKK1xuXAorU2VuZCBhIHNpZ25hbCB0byBhIHRocmVhZC4iKTsKKyNlbmRpZiAgIC8qICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAqLworCisKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlICovCiBzdGF0aWMgUHlNZXRob2REZWYgc2lnbmFsX21ldGhvZHNbXSA9IHsKQEAgLTUxNSwxMCArODcxLDM0IEBACiAjZW5kaWYKICNpZmRlZiBIQVZFX1BBVVNFCiAgICAgeyJwYXVzZSIsICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfcGF1c2UsCi0gICAgIE1FVEhfTk9BUkdTLHBhdXNlX2RvY30sCisgICAgIE1FVEhfTk9BUkdTLCBwYXVzZV9kb2N9LAogI2VuZGlmCiAgICAgeyJkZWZhdWx0X2ludF9oYW5kbGVyIiwgc2lnbmFsX2RlZmF1bHRfaW50X2hhbmRsZXIsCiAgICAgIE1FVEhfVkFSQVJHUywgZGVmYXVsdF9pbnRfaGFuZGxlcl9kb2N9LAorI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpCisgICAgeyJwdGhyZWFkX2tpbGwiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfcHRocmVhZF9raWxsLAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9wdGhyZWFkX2tpbGxfZG9jfSwKKyNlbmRpZgorI2lmZGVmIFBZUFRIUkVBRF9TSUdNQVNLCisgICAgeyJwdGhyZWFkX3NpZ21hc2siLCAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfcHRocmVhZF9zaWdtYXNrLAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHUEVORElORworICAgIHsic2lncGVuZGluZyIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3BlbmRpbmcsCisgICAgIE1FVEhfTk9BUkdTLCBzaWduYWxfc2lncGVuZGluZ19kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdXQUlUCisgICAgeyJzaWd3YWl0IiwgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdCwKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnd2FpdF9kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTworICAgIHsic2lnd2FpdGluZm8iLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXRpbmZvLAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd3YWl0aW5mb19kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQKKyAgICB7InNpZ3RpbWVkd2FpdCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd0aW1lZHdhaXQsCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3RpbWVkd2FpdF9kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNTg3LDYgKzk2NywxNSBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQorICAgIGlmICghaW5pdGlhbGl6ZWQpCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlNpZ2luZm9UeXBlLCAmc3RydWN0X3NpZ2luZm9fZGVzYyk7CisKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJlNpZ2luZm9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0cnVjdF9zaWdpbmZvIiwgKFB5T2JqZWN0KikgJlNpZ2luZm9UeXBlKTsKKyAgICBpbml0aWFsaXplZCA9IDE7CisjZW5kaWYKKwogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CiAKQEAgLTYwMyw2ICs5OTIsMTkgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIFB5X0RFQ1JFRih4KTsKIAorI2lmZGVmIFNJR19CTE9DSworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdfQkxPQ0spKQorICAgICAgICAgZ290byBmaW5hbGx5OworI2VuZGlmCisjaWZkZWYgU0lHX1VOQkxPQ0sKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHX1VOQkxPQ0spKQorICAgICAgICAgZ290byBmaW5hbGx5OworI2VuZGlmCisjaWZkZWYgU0lHX1NFVE1BU0sKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHX1NFVE1BU0spKQorICAgICAgICAgZ290byBmaW5hbGx5OworI2VuZGlmCisKICAgICB4ID0gSW50SGFuZGxlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJkZWZhdWx0X2ludF9oYW5kbGVyIik7CiAgICAgaWYgKCF4KQogICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC04NTUsNiArMTI1NywxMSBAQAogICAgIFB5X0RFQ1JFRih4KTsKICNlbmRpZgogCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIENyZWF0ZSBtYW51YWwtcmVzZXQgZXZlbnQsIGluaXRpYWxseSB1bnNldCAqLworICAgIHNpZ2ludF9ldmVudCA9IENyZWF0ZUV2ZW50KE5VTEwsIFRSVUUsIEZBTFNFLCBGQUxTRSk7CisjZW5kaWYKKwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgbSA9IE5VTEw7CkBAIC0xMDAxLDMgKzE0MDgsMjUgQEAKICAgICBfUHlJbXBvcnRfUmVJbml0TG9jaygpOwogI2VuZGlmCiB9CisKK2ludAorX1B5T1NfSXNNYWluVGhyZWFkKHZvaWQpCit7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICByZXR1cm4gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpID09IG1haW5fdGhyZWFkOworI2Vsc2UKKyAgICByZXR1cm4gMTsKKyNlbmRpZgorfQorCisjaWZkZWYgTVNfV0lORE9XUwordm9pZCAqX1B5T1NfU2lnaW50RXZlbnQodm9pZCkKK3sKKyAgICAvKiBSZXR1cm5zIGEgbWFudWFsLXJlc2V0IGV2ZW50IHdoaWNoIGdldHMgdHJpcHBlZCB3aGVuZXZlcgorICAgICAgIFNJR0lOVCBpcyByZWNlaXZlZC4KKworICAgICAgIFB5dGhvbi5oIGRvZXMgbm90IGluY2x1ZGUgd2luZG93cy5oIHNvIHdlIGRvIGNhbm5vdCB1c2UgSEFORExFCisgICAgICAgYXMgdGhlIHJldHVybiB0eXBlIG9mIHRoaXMgZnVuY3Rpb24uICBXZSB1c2Ugdm9pZCogaW5zdGVhZC4gKi8KKyAgICByZXR1cm4gc2lnaW50X2V2ZW50OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCA0Zjg5NmZkLi5kOGM4MWZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTQyLDYgKzQyLDkgQEAKIC0gc29ja2V0LmluZXRfbnRvYShwYWNrZWQgSVApIC0+IElQIGFkZHJlc3Mgc3RyaW5nCiAtIHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpIC0+IE5vbmUgfCBmbG9hdAogLSBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoTm9uZSB8IGZsb2F0KQorLSBzb2NrZXQuaWZfbmFtZWluZGV4KCkgLT4gbGlzdCBvZiB0dXBsZXMgKGlmX2luZGV4LCBpZl9uYW1lKQorLSBzb2NrZXQuaWZfbmFtZXRvaW5kZXgobmFtZSkgLT4gY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgaW5kZXgKKy0gc29ja2V0LmlmX2luZGV4dG9uYW1lKGluZGV4KSAtPiBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBuYW1lCiAtIGFuIEludGVybmV0IHNvY2tldCBhZGRyZXNzIGlzIGEgcGFpciAoaG9zdG5hbWUsIHBvcnQpCiAgIHdoZXJlIGhvc3RuYW1lIGNhbiBiZSBhbnl0aGluZyByZWNvZ25pemVkIGJ5IGdldGhvc3RieW5hbWUoKQogICAoaW5jbHVkaW5nIHRoZSBkZC5kZC5kZC5kZCBub3RhdGlvbikgYW5kIHBvcnQgaXMgaW4gaG9zdCBieXRlIG9yZGVyCkBAIC0xMzMsNiArMTM2LDkgQEAKIHNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAoraWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXAoraWZfbmFtZXRvaW5kZXgobmFtZSkgLS0gcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBpbmRleFxuXAoraWZfaW5kZXh0b25hbWUoaW5kZXgpIC0tIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgbmFtZVxuXAogXG5cCiAgWypdIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyEiKTsKIApAQCAtMTUwLDEyICsxNTYsMTYgQEAKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcKICNlbmRpZgogCisjaWYgZGVmaW5lZChfX09wZW5CU0RfXykKKyMgaW5jbHVkZSA8c3lzL3Vpby5oPgorI2VuZGlmCisKICNpZm5kZWYgV0lUSF9USFJFQUQKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKLSMgaWYgZGVmaW5lZChfQUlYKSB8fCBkZWZpbmVkKF9fb3NmX18pCisjIGlmIGRlZmluZWQoX0FJWCkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyBlbGlmIGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoX19zZ2kpCiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcKQEAgLTIwOCw2ICsyMTgsMTEgQEAKICMgIGluY2x1ZGUgPGlvY3RsLmg+CiAjZW5kaWYKIAorI2lmZGVmIF9fQVBQTEVfXworIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorCisKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQogIyBkZWZpbmUgIElOQ0xfRE9TCiAjIGRlZmluZSAgSU5DTF9ET1NFUlJPUlMKQEAgLTI1MCw2ICsyNjUsMTQgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorCiAvKiBHZW5lcmljIHNvY2tldCBvYmplY3QgZGVmaW5pdGlvbnMgYW5kIGluY2x1ZGVzICovCiAjZGVmaW5lIFB5U29ja2V0X0JVSUxESU5HX1NPQ0tFVAogI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIgpAQCAtMjYwLDYgKzI4Myw3IEBACiAKIC8qIE5vbi1NUyBXSU5ET1dTIGluY2x1ZGVzICovCiAjIGluY2x1ZGUgPG5ldGRiLmg+CisjIGluY2x1ZGUgPHVuaXN0ZC5oPgogCiAvKiBIZWFkZXJzIG5lZWRlZCBmb3IgaW5ldF9udG9hKCkgYW5kIGluZXRfYWRkcigpICovCiAjIGlmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19WQUNQUCkKQEAgLTM1Nyw3ICszODEsNyBAQAogICAgICAgICByZXR1cm4gSU5WQUxJRF9TT0NLRVQ7CiAKICAgICByZXR1cm4gV1NBU29ja2V0KEZST01fUFJPVE9DT0xfSU5GTywgRlJPTV9QUk9UT0NPTF9JTkZPLAotICAgICAgICAgICAgICAgICAgICAgRlJPTV9QUk9UT0NPTF9JTkZPLCAmaW5mbywgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCBXU0FfRkxBR19PVkVSTEFQUEVEKTsKIH0KICNkZWZpbmUgU09DS0VUQ0xPU0UgY2xvc2Vzb2NrZXQKICNlbHNlCkBAIC0zNjYsNiArMzkwLDcgQEAKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lOMzIKKyN1bmRlZiBFQUZOT1NVUFBPUlQKICNkZWZpbmUgRUFGTk9TVVBQT1JUIFdTQUVBRk5PU1VQUE9SVAogI2RlZmluZSBzbnByaW50ZiBfc25wcmludGYKICNlbmRpZgpAQCAtNDE3LDcgKzQ0Miw4IEBACiAjZGVmaW5lIFNFR01FTlRfU0laRSAoMzIgKiAxMDI0IC0xKQogI2VuZGlmCiAKLSNkZWZpbmUgU0FTMlNBKHgpICAgICAgICgoc3RydWN0IHNvY2thZGRyICopKHgpKQorLyogQ29udmVydCAic29ja19hZGRyX3QgKiIgdG8gInN0cnVjdCBzb2NrYWRkciAqIi4gKi8KKyNkZWZpbmUgU0FTMlNBKHgpICAgICAgICgmKCh4KS0+c2EpKQogCiAvKgogICogQ29uc3RhbnRzIGZvciBnZXRuYW1laW5mbygpCkBAIC00MzgsNyArNDY0LDYgQEAKIAogLyogR2xvYmFsIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGV4Y2VwdGlvbiB0eXBlIGZvciBlcnJvcnMgZGV0ZWN0ZWQKICAgIGJ5IHRoaXMgbW9kdWxlIChidXQgbm90IGFyZ3VtZW50IHR5cGUgb3IgbWVtb3J5IGVycm9ycywgZXRjLikuICovCi1zdGF0aWMgUHlPYmplY3QgKnNvY2tldF9lcnJvcjsKIHN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2hlcnJvcjsKIHN0YXRpYyBQeU9iamVjdCAqc29ja2V0X2dhaWVycm9yOwogc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfdGltZW91dDsKQEAgLTQ1NSw2ICs0ODAsMTcgQEAKICNpbmNsdWRlIDxzeXMvcG9sbC5oPgogI2VuZGlmCiAKKy8qIExhcmdlc3QgdmFsdWUgdG8gdHJ5IHRvIHN0b3JlIGluIGEgc29ja2xlbl90ICh1c2VkIHdoZW4gaGFuZGxpbmcKKyAgIGFuY2lsbGFyeSBkYXRhKS4gIFBPU0lYIHJlcXVpcmVzIHNvY2tsZW5fdCB0byBob2xkIGF0IGxlYXN0CisgICAoMioqMzEpLTEgYW5kIHJlY29tbWVuZHMgYWdhaW5zdCBzdG9yaW5nIGxhcmdlciB2YWx1ZXMsIGJ1dAorICAgc29ja2xlbl90IHdhcyBvcmlnaW5hbGx5IGludCBpbiB0aGUgQlNEIGludGVyZmFjZSwgc28gdG8gYmUgb24gdGhlCisgICBzYWZlIHNpZGUgd2UgdXNlIHRoZSBzbWFsbGVyIG9mICgyKiozMSktMSBhbmQgSU5UX01BWC4gKi8KKyNpZiBJTlRfTUFYID4gMHg3ZmZmZmZmZgorI2RlZmluZSBTT0NLTEVOX1RfTElNSVQgMHg3ZmZmZmZmZgorI2Vsc2UKKyNkZWZpbmUgU09DS0xFTl9UX0xJTUlUIElOVF9NQVgKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9QT0xMCiAvKiBJbnN0ZWFkIG9mIHNlbGVjdCgpLCB3ZSdsbCB1c2UgcG9sbCgpIHNpbmNlIHBvbGwoKSB3b3JrcyBvbiBhbnkgZmQuICovCiAjZGVmaW5lIElTX1NFTEVDVEFCTEUocykgMQpAQCAtNDY4LDcgKzUwNCw3IEBACiBzdGF0aWMgUHlPYmplY3QqCiBzZWxlY3RfZXJyb3Iodm9pZCkKIHsKLSAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5hYmxlIHRvIHNlbGVjdCBvbiBzb2NrZXQiKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVuYWJsZSB0byBzZWxlY3Qgb24gc29ja2V0Iik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQ5NSw3ICs1MzEsNyBAQAogICAgICAgIHJlY29nbml6ZXMgdGhlIGVycm9yIGNvZGVzIHVzZWQgYnkgYm90aCBHZXRMYXN0RXJyb3IoKSBhbmQKICAgICAgICBXU0FHZXRMYXN0RXJyb3IgKi8KICAgICBpZiAoZXJyX25vKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoc29ja2V0X2Vycm9yLCBlcnJfbm8pOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgZXJyX25vKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCkBAIC01MjYsNyArNTYyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgbXllcnJvcmNvZGUsIG91dGJ1Zik7CiAgICAgICAgICAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KHNvY2tldF9lcnJvciwgdik7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX09TRXJyb3IsIHYpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTM0LDcgKzU3MCw3IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKHNvY2tldF9lcnJvcik7CisgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKIH0KIAogCkBAIC04NTMsMTMgKzg4OSwxMyBAQAogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBmcmVlYWRkcmluZm8ocmVzKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzLT5haV9uZXh0KSB7CiAgICAgICAgICAgICBmcmVlYWRkcmluZm8ocmVzKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAid2lsZGNhcmQgcmVzb2x2ZWQgdG8gbXVsdGlwbGUgYWRkcmVzcyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC04NzIsNyArOTA4LDcgQEAKICAgICBpZiAobmFtZVswXSA9PSAnPCcgJiYgc3RyY21wKG5hbWUsICI8YnJvYWRjYXN0PiIpID09IDApIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICpzaW47CiAgICAgICAgIGlmIChhZiAhPSBBRl9JTkVUICYmIGFmICE9IEFGX1VOU1BFQykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJhZGRyZXNzIGZhbWlseSBtaXNtYXRjaGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTkzMCw3ICs5NjYsNyBAQAogICAgICAgICByZXR1cm4gMTY7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KQEAgLTk3OSw3ICsxMDE1LDcgQEAKICAgICAgICAgYmRhZGRyLT5iWzVdID0gYjU7CiAgICAgICAgIHJldHVybiA2OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJiYWQgYmx1ZXRvb3RoIGFkZHJlc3MiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJiYWQgYmx1ZXRvb3RoIGFkZHJlc3MiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KQEAgLTEwNDQsNyArMTA4MCw3IEBACiAjZW5kaWYgLyogbGludXggKi8KICAgICAgICAgewogICAgICAgICAgICAgLyogcmVndWxhciBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYS0+c3VuX3BhdGgpOworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYS0+c3VuX3BhdGgpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmIC8qIEFGX1VOSVggKi8KQEAgLTExOTAsNiArMTIyNiw0MiBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgY2FzZSBBRl9DQU46CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuICphID0gKHN0cnVjdCBzb2NrYWRkcl9jYW4gKilhZGRyOworICAgICAgICBjaGFyICppZm5hbWUgPSAiIjsKKyAgICAgICAgc3RydWN0IGlmcmVxIGlmcjsKKyAgICAgICAgLyogbmVlZCB0byBsb29rIHVwIGludGVyZmFjZSBuYW1lIGdpdmVuIGluZGV4ICovCisgICAgICAgIGlmIChhLT5jYW5faWZpbmRleCkgeworICAgICAgICAgICAgaWZyLmlmcl9pZmluZGV4ID0gYS0+Y2FuX2lmaW5kZXg7CisgICAgICAgICAgICBpZiAoaW9jdGwoc29ja2ZkLCBTSU9DR0lGTkFNRSwgJmlmcikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZm5hbWUgPSBpZnIuaWZyX25hbWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyZoIiwgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmNhbl9mYW1pbHkpOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaChwcm90bykgeworI2lmZGVmIFNZU1BST1RPX0NPTlRST0wKKyAgICAgICAgY2FzZSBTWVNQUk9UT19DT05UUk9MOgorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY3RsICphID0gKHN0cnVjdCBzb2NrYWRkcl9jdGwgKilhZGRyOworICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihJSSkiLCBhLT5zY19pZCwgYS0+c2NfdW5pdCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYWRkcmVzcyB0eXBlIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6CkBAIC0xMjIxLDE3ICsxMjkzLDI3IEBACiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl91biogYWRkcjsKICAgICAgICAgY2hhciAqcGF0aDsKICAgICAgICAgaW50IGxlbjsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAicyMiLCAmcGF0aCwgJmxlbikpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaW50IHJldHZhbCA9IDA7CisKKyAgICAgICAgLyogUEVQIDM4My4gIE5vdCB1c2luZyBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgc2luY2Ugd2UgbmVlZCB0bworICAgICAgICAgICBhbGxvdyBlbWJlZGRlZCBudWxscyBvbiBMaW51eC4gKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmdzKSkgeworICAgICAgICAgICAgaWYgKChhcmdzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmdzKSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgInkjIiwgJnBhdGgsICZsZW4pKQorICAgICAgICAgICAgZ290byB1bml4X291dDsKIAogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biopYWRkcl9yZXQ7CiAjaWZkZWYgbGludXgKICAgICAgICAgaWYgKGxlbiA+IDAgJiYgcGF0aFswXSA9PSAwKSB7CiAgICAgICAgICAgICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgZXh0ZW5zaW9uICovCiAgICAgICAgICAgICBpZiAobGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtMTIzOSw5ICsxMzIxLDkgQEAKICAgICAgICAgewogICAgICAgICAgICAgLyogcmVndWxhciBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCiAgICAgICAgICAgICBpZiAobGVuID49IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYWRkci0+c3VuX3BhdGhbbGVuXSA9IDA7CiAgICAgICAgIH0KQEAgLTEyNTIsNyArMTMzNCwxMCBAQAogI2Vsc2UKICAgICAgICAgKmxlbl9yZXQgPSBsZW4gKyBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dmFsID0gMTsKKyAgICB1bml4X291dDoKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gcmV0dmFsOwogICAgIH0KICNlbmRpZiAvKiBBRl9VTklYICovCiAKQEAgLTEyODAsNiArMTM2NSwxMSBAQAogICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfUkRTCisgICAgY2FzZSBBRl9SRFM6CisgICAgICAgIC8qIFJEUyBzb2NrZXRzIHVzZSBzb2NrYWRkcl9pbjogZmFsbC10aHJvdWdoICovCisjZW5kaWYKKwogICAgIGNhc2UgQUZfSU5FVDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiogYWRkcjsKQEAgLTEzNzYsNyArMTQ2Niw3IEBACiAgICAgICAgICAgICBfQlRfTDJfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaSIsICZzdHJhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfQlRfTDJfTUVNQihhZGRyLCBwc20pKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTM5NSw3ICsxNDg1LDcgQEAKICAgICAgICAgICAgIF9CVF9SQ19NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpIiwgJnN0cmFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9CVF9SQ19NRU1CKGFkZHIsIGNoYW5uZWwpKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQxMyw3ICsxNTAzLDcgQEAKIAogICAgICAgICAgICAgICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoc3RyYWRkciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDIyLDcgKzE1MTIsNyBAQAogI2Vsc2UKICAgICAgICAgICAgIF9CVF9IQ0lfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJl9CVF9IQ0lfTUVNQihhZGRyLCBkZXYpKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQzOSw3ICsxNTI5LDcgQEAKICAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3NjbyAqKWFkZHJfcmV0OwogICAgICAgICAgICAgX0JUX1NDT19NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soYXJncykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0NTIsNyArMTU0Miw3IEBACiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogdW5rbm93biBCbHVldG9vdGggcHJvdG9jb2wiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU2NCwxMCArMTY1NCwxMTYgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX0NBTgorICAgIGNhc2UgQUZfQ0FOOgorICAgICAgICBzd2l0Y2ggKHMtPnNvY2tfcHJvdG8pIHsKKyAgICAgICAgY2FzZSBDQU5fUkFXOgorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuICphZGRyOworICAgICAgICAgICAgUHlPYmplY3QgKmludGVyZmFjZU5hbWU7CisgICAgICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfY2FuICopYWRkcl9yZXQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJmYWNlTmFtZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoaW50ZXJmYWNlTmFtZSk7CisKKyAgICAgICAgICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICAgICAgICAgIGlmci5pZnJfaWZpbmRleCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA8IHNpemVvZihpZnIuaWZyX25hbWUpKSB7CisgICAgICAgICAgICAgICAgc3RybmNweShpZnIuaWZyX25hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGludGVyZmFjZU5hbWUpLCBzaXplb2YoaWZyLmlmcl9uYW1lKSk7CisgICAgICAgICAgICAgICAgaWZyLmlmcl9uYW1lWyhzaXplb2YoaWZyLmlmcl9uYW1lKSktMV0gPSAnXDAnOworICAgICAgICAgICAgICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBTSU9DR0lGSU5ERVgsICZpZnIpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfQ0FOIGludGVyZmFjZSBuYW1lIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyZmFjZU5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhZGRyLT5jYW5fZmFtaWx5ID0gQUZfQ0FOOworICAgICAgICAgICAgYWRkci0+Y2FuX2lmaW5kZXggPSBpZnIuaWZyX2lmaW5kZXg7CisKKyAgICAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCphZGRyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja2FkZHJhcmc6IHVuc3VwcG9ydGVkIENBTiBwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgCisjaWZkZWYgUEZfU1lTVEVNCisgICAgY2FzZSBQRl9TWVNURU06CisgICAgICAgIHN3aXRjaCAocy0+c29ja19wcm90bykgeworI2lmZGVmIFNZU1BST1RPX0NPTlRST0wKKyAgICAgICAgY2FzZSBTWVNQUk9UT19DT05UUk9MOgorICAgICAgICB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfY3RsICphZGRyOworICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9jdGwgKilhZGRyX3JldDsKKyAgICAgICAgICAgIGFkZHItPnNjX2ZhbWlseSA9IEFGX1NZU1RFTTsKKyAgICAgICAgICAgIGFkZHItPnNzX3N5c2FkZHIgPSBBRl9TWVNfQ09OVFJPTDsgCisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJncykpIHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY3RsX2luZm8gaW5mbzsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqY3RsX25hbWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJPJiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmN0bF9uYW1lKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShjdGxfbmFtZSkgPiBzaXplb2YoaW5mby5jdGxfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdGxfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdHJuY3B5KGluZm8uY3RsX25hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKGN0bF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbmZvLmN0bF9uYW1lKSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN0bF9uYW1lKTsKKworICAgICAgICAgICAgICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBDVExJT0NHSU5GTywgJmluZm8pKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGZpbmQga2VybmVsIGNvbnRyb2wgd2l0aCBwcm92aWRlZCBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhZGRyLT5zY19pZCA9IGluZm8uY3RsX2lkOworICAgICAgICAgICAgICAgIGFkZHItPnNjX3VuaXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSUkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGFkZHItPnNjX2lkKSwgJihhZGRyLT5zY191bml0KSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIHN0ciBvciB0dXBsZSBvZiB0d28gaW50cyIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAKKyAgICAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCphZGRyKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2NrYWRkcmFyZzogdW5zdXBwb3J0ZWQgUEZfU1lTVEVNIHByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogYmFkIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiBiYWQgZmFtaWx5Iik7CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgfQpAQCAtMTU5OCw2ICsxNzk0LDExIEBACiAgICAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9SRFMKKyAgICBjYXNlIEFGX1JEUzoKKyAgICAgICAgLyogUkRTIHNvY2tldHMgdXNlIHNvY2thZGRyX2luOiBmYWxsLXRocm91Z2ggKi8KKyNlbmRpZgorCiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9pbik7CkBAIC0xNjMzLDcgKzE4MzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDE7CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmxlbjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIEJUIHByb3RvY29sIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKIApAQCAtMTY1NywxNiArMTg1OCwxNTEgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX0NBTgorICAgIGNhc2UgQUZfQ0FOOgorICAgIHsKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9jYW4pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIAorI2lmZGVmIFBGX1NZU1RFTQorICAgIGNhc2UgUEZfU1lTVEVNOgorICAgICAgICBzd2l0Y2gocy0+c29ja19wcm90bykgeworI2lmZGVmIFNZU1BST1RPX0NPTlRST0wKKyAgICAgICAgY2FzZSBTWVNQUk9UT19DT05UUk9MOgorICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9jdGwpOworICAgICAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJsZW46ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBQRl9TWVNURU0gcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRybGVuOiBiYWQgZmFtaWx5Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJsZW46IGJhZCBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB9CiB9CiAKIAorLyogU3VwcG9ydCBmdW5jdGlvbnMgZm9yIHRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcy4KKyAgIEN1cnJlbnRseSwgdGhlc2UgbWV0aG9kcyBhcmUgb25seSBjb21waWxlZCBpZiB0aGUgUkZDIDIyOTIvMzU0MgorICAgQ01TR19MRU4oKSBtYWNybyBpcyBhdmFpbGFibGUuICBPbGRlciBzeXN0ZW1zIHNlZW0gdG8gaGF2ZSB1c2VkCisgICBzaXplb2Yoc3RydWN0IGNtc2doZHIpICsgKGxlbmd0aCkgd2hlcmUgQ01TR19MRU4oKSBpcyB1c2VkIG5vdywgc28KKyAgIGl0IG1heSBiZSBwb3NzaWJsZSB0byBkZWZpbmUgQ01TR19MRU4oKSB0aGF0IHdheSBpZiBpdCdzIG5vdAorICAgcHJvdmlkZWQuICBTb21lIGFyY2hpdGVjdHVyZXMgbWlnaHQgbmVlZCBleHRyYSBwYWRkaW5nIGFmdGVyIHRoZQorICAgY21zZ2hkciwgaG93ZXZlciwgYW5kIENNU0dfTEVOKCkgd291bGQgaGF2ZSB0byB0YWtlIGFjY291bnQgb2YKKyAgIHRoaXMuICovCisjaWZkZWYgQ01TR19MRU4KKy8qIElmIGxlbmd0aCBpcyBpbiByYW5nZSwgc2V0ICpyZXN1bHQgdG8gQ01TR19MRU4obGVuZ3RoKSBhbmQgcmV0dXJuCisgICB0cnVlOyBvdGhlcndpc2UsIHJldHVybiBmYWxzZS4gKi8KK3N0YXRpYyBpbnQKK2dldF9DTVNHX0xFTihzaXplX3QgbGVuZ3RoLCBzaXplX3QgKnJlc3VsdCkKK3sKKyAgICBzaXplX3QgdG1wOworCisgICAgaWYgKGxlbmd0aCA+IChTT0NLTEVOX1RfTElNSVQgLSBDTVNHX0xFTigwKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHRtcCA9IENNU0dfTEVOKGxlbmd0aCk7CisgICAgaWYgKHRtcCA+IFNPQ0tMRU5fVF9MSU1JVCB8fCB0bXAgPCBsZW5ndGgpCisgICAgICAgIHJldHVybiAwOworICAgICpyZXN1bHQgPSB0bXA7CisgICAgcmV0dXJuIDE7Cit9CisKKyNpZmRlZiBDTVNHX1NQQUNFCisvKiBJZiBsZW5ndGggaXMgaW4gcmFuZ2UsIHNldCAqcmVzdWx0IHRvIENNU0dfU1BBQ0UobGVuZ3RoKSBhbmQgcmV0dXJuCisgICB0cnVlOyBvdGhlcndpc2UsIHJldHVybiBmYWxzZS4gKi8KK3N0YXRpYyBpbnQKK2dldF9DTVNHX1NQQUNFKHNpemVfdCBsZW5ndGgsIHNpemVfdCAqcmVzdWx0KQoreworICAgIHNpemVfdCB0bXA7CisKKyAgICAvKiBVc2UgQ01TR19TUEFDRSgxKSBoZXJlIGluIG9yZGVyIHRvIHRha2UgYWNjb3VudCBvZiB0aGUgcGFkZGluZworICAgICAgIG5lY2Vzc2FyeSBiZWZvcmUgKmFuZCogYWZ0ZXIgdGhlIGRhdGEuICovCisgICAgaWYgKGxlbmd0aCA+IChTT0NLTEVOX1RfTElNSVQgLSBDTVNHX1NQQUNFKDEpKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdG1wID0gQ01TR19TUEFDRShsZW5ndGgpOworICAgIGlmICh0bXAgPiBTT0NLTEVOX1RfTElNSVQgfHwgdG1wIDwgbGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKyAgICAqcmVzdWx0ID0gdG1wOworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKKy8qIFJldHVybiB0cnVlIGlmZiBtc2ctPm1zZ19jb250cm9sbGVuIGlzIHZhbGlkLCBjbXNnaCBpcyBhIHZhbGlkCisgICBwb2ludGVyIGluIG1zZy0+bXNnX2NvbnRyb2wgd2l0aCBhdCBsZWFzdCAic3BhY2UiIGJ5dGVzIGFmdGVyIGl0LAorICAgYW5kIGl0cyBjbXNnX2xlbiBtZW1iZXIgaW5zaWRlIHRoZSBidWZmZXIuICovCitzdGF0aWMgaW50CitjbXNnX21pbl9zcGFjZShzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBjbXNnaGRyICpjbXNnaCwgc2l6ZV90IHNwYWNlKQoreworICAgIHNpemVfdCBjbXNnX29mZnNldDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNtc2dfbGVuX2VuZCA9IChvZmZzZXRvZihzdHJ1Y3QgY21zZ2hkciwgY21zZ19sZW4pICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoY21zZ2gtPmNtc2dfbGVuKSk7CisKKyAgICAvKiBOb3RlIHRoYXQgUE9TSVggYWxsb3dzIG1zZ19jb250cm9sbGVuIHRvIGJlIG9mIHNpZ25lZCB0eXBlLiAqLworICAgIGlmIChjbXNnaCA9PSBOVUxMIHx8IG1zZy0+bXNnX2NvbnRyb2wgPT0gTlVMTCB8fCBtc2ctPm1zZ19jb250cm9sbGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHNwYWNlIDwgY21zZ19sZW5fZW5kKQorICAgICAgICBzcGFjZSA9IGNtc2dfbGVuX2VuZDsKKyAgICBjbXNnX29mZnNldCA9IChjaGFyICopY21zZ2ggLSAoY2hhciAqKW1zZy0+bXNnX2NvbnRyb2w7CisgICAgcmV0dXJuIChjbXNnX29mZnNldCA8PSAoc2l6ZV90KS0xIC0gc3BhY2UgJiYKKyAgICAgICAgICAgIGNtc2dfb2Zmc2V0ICsgc3BhY2UgPD0gbXNnLT5tc2dfY29udHJvbGxlbik7Cit9CisKKy8qIElmIHBvaW50ZXIgQ01TR19EQVRBKGNtc2doKSBpcyBpbiBidWZmZXIgbXNnLT5tc2dfY29udHJvbCwgc2V0CisgICAqc3BhY2UgdG8gbnVtYmVyIG9mIGJ5dGVzIGZvbGxvd2luZyBpdCBpbiB0aGUgYnVmZmVyIGFuZCByZXR1cm4KKyAgIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLiAgQXNzdW1lcyBjbXNnaCwgbXNnLT5tc2dfY29udHJvbCBhbmQKKyAgIG1zZy0+bXNnX2NvbnRyb2xsZW4gYXJlIHZhbGlkLiAqLworc3RhdGljIGludAorZ2V0X2Ntc2dfZGF0YV9zcGFjZShzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBjbXNnaGRyICpjbXNnaCwgc2l6ZV90ICpzcGFjZSkKK3sKKyAgICBzaXplX3QgZGF0YV9vZmZzZXQ7CisgICAgY2hhciAqZGF0YV9wdHI7CisKKyAgICBpZiAoKGRhdGFfcHRyID0gKGNoYXIgKilDTVNHX0RBVEEoY21zZ2gpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKyAgICBkYXRhX29mZnNldCA9IGRhdGFfcHRyIC0gKGNoYXIgKiltc2ctPm1zZ19jb250cm9sOworICAgIGlmIChkYXRhX29mZnNldCA+IG1zZy0+bXNnX2NvbnRyb2xsZW4pCisgICAgICAgIHJldHVybiAwOworICAgICpzcGFjZSA9IG1zZy0+bXNnX2NvbnRyb2xsZW4gLSBkYXRhX29mZnNldDsKKyAgICByZXR1cm4gMTsKK30KKworLyogSWYgY21zZ2ggaXMgaW52YWxpZCBvciBub3QgY29udGFpbmVkIGluIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieQorICAgbXNnLT5tc2dfY29udHJvbCwgcmV0dXJuIC0xLiAgSWYgY21zZ2ggaXMgdmFsaWQgYW5kIGl0cyBhc3NvY2lhdGVkCisgICBkYXRhIGlzIGVudGlyZWx5IGNvbnRhaW5lZCBpbiB0aGUgYnVmZmVyLCBzZXQgKmRhdGFfbGVuIHRvIHRoZQorICAgbGVuZ3RoIG9mIHRoZSBhc3NvY2lhdGVkIGRhdGEgYW5kIHJldHVybiAwLiAgSWYgb25seSBwYXJ0IG9mIHRoZQorICAgYXNzb2NpYXRlZCBkYXRhIGlzIGNvbnRhaW5lZCBpbiB0aGUgYnVmZmVyIGJ1dCBjbXNnaCBpcyBvdGhlcndpc2UKKyAgIHZhbGlkLCBzZXQgKmRhdGFfbGVuIHRvIHRoZSBsZW5ndGggY29udGFpbmVkIGluIHRoZSBidWZmZXIgYW5kCisgICByZXR1cm4gMS4gKi8KK3N0YXRpYyBpbnQKK2dldF9jbXNnX2RhdGFfbGVuKHN0cnVjdCBtc2doZHIgKm1zZywgc3RydWN0IGNtc2doZHIgKmNtc2doLCBzaXplX3QgKmRhdGFfbGVuKQoreworICAgIHNpemVfdCBzcGFjZSwgY21zZ19kYXRhX2xlbjsKKworICAgIGlmICghY21zZ19taW5fc3BhY2UobXNnLCBjbXNnaCwgQ01TR19MRU4oMCkpIHx8CisgICAgICAgIGNtc2doLT5jbXNnX2xlbiA8IENNU0dfTEVOKDApKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY21zZ19kYXRhX2xlbiA9IGNtc2doLT5jbXNnX2xlbiAtIENNU0dfTEVOKDApOworICAgIGlmICghZ2V0X2Ntc2dfZGF0YV9zcGFjZShtc2csIGNtc2doLCAmc3BhY2UpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHNwYWNlID49IGNtc2dfZGF0YV9sZW4pIHsKKyAgICAgICAgKmRhdGFfbGVuID0gY21zZ19kYXRhX2xlbjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICpkYXRhX2xlbiA9IHNwYWNlOworICAgIHJldHVybiAxOworfQorI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKKwogLyogcy5fYWNjZXB0KCkgLT4gKGZkLCBhZGRyZXNzKSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTg4OSw3ICsyMjI1LDcgQEAKICNlbHNlCiAgICAgaWYgKGJ1ZmxlbiA8PSAwIHx8IGJ1ZmxlbiA+IDEwMjQpIHsKICNlbmRpZgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2Nrb3B0IGJ1ZmxlbiBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjYyMCw2ICsyOTU2LDMzMSBAQAogTGlrZSByZWN2X2ludG8oYnVmZmVyWywgbmJ5dGVzWywgZmxhZ3NdXSkgYnV0IGFsc28gcmV0dXJuIHRoZSBzZW5kZXIncyBhZGRyZXNzIGluZm8uIik7CiAKIAorLyogVGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzIHJlcXVpcmUgYSB3b3JraW5nCisgICBDTVNHX0xFTigpLiAgU2VlIHRoZSBjb21tZW50IG5lYXIgZ2V0X0NNU0dfTEVOKCkuICovCisjaWZkZWYgQ01TR19MRU4KKy8qCisgKiBDYWxsIHJlY3Ztc2coKSB3aXRoIHRoZSBzdXBwbGllZCBpb3ZlYyBzdHJ1Y3R1cmVzLCBmbGFncywgYW5kCisgKiBhbmNpbGxhcnkgZGF0YSBidWZmZXIgc2l6ZSAoY29udHJvbGxlbikuICBSZXR1cm5zIHRoZSB0dXBsZSByZXR1cm4KKyAqIHZhbHVlIGZvciByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCksIHdpdGggdGhlIGZpcnN0IGl0ZW0gcHJvdmlkZWQKKyAqIGJ5IHRoZSBzdXBwbGllZCBtYWtldmFsKCkgZnVuY3Rpb24uICBtYWtldmFsKCkgd2lsbCBiZSBjYWxsZWQgd2l0aAorICogdGhlIGxlbmd0aCByZWFkIGFuZCBtYWtldmFsX2RhdGEgYXMgYXJndW1lbnRzLCBhbmQgbXVzdCByZXR1cm4gYQorICogbmV3IHJlZmVyZW5jZSAod2hpY2ggd2lsbCBiZSBkZWNyZWZlZCBpZiB0aGVyZSBpcyBhIHN1YnNlcXVlbnQKKyAqIGVycm9yKS4gIE9uIGVycm9yLCBjbG9zZXMgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhCisgKiBTQ01fUklHSFRTLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorc29ja19yZWN2bXNnX2d1dHMoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmxlbiwKKyAgICAgICAgICAgICAgICAgIGludCBmbGFncywgUHlfc3NpemVfdCBjb250cm9sbGVuLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKigqbWFrZXZhbCkoc3NpemVfdCwgdm9pZCAqKSwgdm9pZCAqbWFrZXZhbF9kYXRhKQoreworICAgIHNzaXplX3QgYnl0ZXNfcmVjZWl2ZWQgPSAtMTsKKyAgICBpbnQgdGltZW91dDsKKyAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOworICAgIHNvY2tsZW5fdCBhZGRyYnVmbGVuOworICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIFB5T2JqZWN0ICpjbXNnX2xpc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2g7CisgICAgc2l6ZV90IGNtc2dkYXRhbGVuID0gMDsKKyAgICBpbnQgY21zZ19zdGF0dXM7CisKKyAgICAvKiBYWFg6IFBPU0lYIHNheXMgdGhhdCBtc2dfbmFtZSBhbmQgbXNnX25hbWVsZW4gInNoYWxsIGJlCisgICAgICAgaWdub3JlZCIgd2hlbiB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZCAoTGludXggZmlsbHMgdGhlbSBpbgorICAgICAgIGFueXdheSBmb3IgQUZfVU5JWCBzb2NrZXRzIGF0IGxlYXN0KS4gIE5vcm1hbGx5IG1zZ19uYW1lbGVuCisgICAgICAgc2VlbXMgdG8gYmUgc2V0IHRvIDAgaWYgdGhlcmUncyBubyBhZGRyZXNzLCBidXQgdHJ5IHRvCisgICAgICAgaW5pdGlhbGl6ZSBtc2dfbmFtZSB0byBzb21ldGhpbmcgdGhhdCB3b24ndCBiZSBtaXN0YWtlbiBmb3IgYQorICAgICAgIHJlYWwgYWRkcmVzcyBpZiB0aGF0IGRvZXNuJ3QgaGFwcGVuLiAqLworICAgIGlmICghZ2V0c29ja2FkZHJsZW4ocywgJmFkZHJidWZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1zZXQoJmFkZHJidWYsIDAsIGFkZHJidWZsZW4pOworICAgIFNBUzJTQSgmYWRkcmJ1ZiktPnNhX2ZhbWlseSA9IEFGX1VOU1BFQzsKKworICAgIGlmIChjb250cm9sbGVuIDwgMCB8fCBjb250cm9sbGVuID4gU09DS0xFTl9UX0xJTUlUKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYW5jaWxsYXJ5IGRhdGEgYnVmZmVyIGxlbmd0aCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGNvbnRyb2xsZW4gPiAwICYmIChjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIC8qIE1ha2UgdGhlIHN5c3RlbSBjYWxsLiAqLworICAgIGlmICghSVNfU0VMRUNUQUJMRShzKSkgeworICAgICAgICBzZWxlY3RfZXJyb3IoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBtc2cubXNnX25hbWUgPSBTQVMyU0EoJmFkZHJidWYpOworICAgIG1zZy5tc2dfbmFtZWxlbiA9IGFkZHJidWZsZW47CisgICAgbXNnLm1zZ19pb3YgPSBpb3Y7CisgICAgbXNnLm1zZ19pb3ZsZW4gPSBpb3ZsZW47CisgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKyAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOworICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOworICAgIGlmICghdGltZW91dCkKKyAgICAgICAgYnl0ZXNfcmVjZWl2ZWQgPSByZWN2bXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAodGltZW91dCA9PSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIEVORF9TRUxFQ1RfTE9PUChzKQorCisgICAgaWYgKGJ5dGVzX3JlY2VpdmVkIDwgMCkgeworICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIC8qIE1ha2UgbGlzdCBvZiAobGV2ZWwsIHR5cGUsIGRhdGEpIHR1cGxlcyBmcm9tIGNvbnRyb2wgbWVzc2FnZXMuICovCisgICAgaWYgKChjbXNnX2xpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKyAgICAvKiBDaGVjayBmb3IgZW1wdHkgYW5jaWxsYXJ5IGRhdGEgYXMgb2xkIENNU0dfRklSU1RIRFIoKQorICAgICAgIGltcGxlbWVudGF0aW9ucyBkaWRuJ3QgZG8gc28uICovCisgICAgZm9yIChjbXNnaCA9ICgobXNnLm1zZ19jb250cm9sbGVuID4gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogTlVMTCk7CisgICAgICAgICBjbXNnaCAhPSBOVUxMOyBjbXNnaCA9IENNU0dfTlhUSERSKCZtc2csIGNtc2doKSkgeworICAgICAgICBQeU9iamVjdCAqYnl0ZXMsICp0dXBsZTsKKyAgICAgICAgaW50IHRtcDsKKworICAgICAgICBjbXNnX3N0YXR1cyA9IGdldF9jbXNnX2RhdGFfbGVuKCZtc2csIGNtc2doLCAmY21zZ2RhdGFsZW4pOworICAgICAgICBpZiAoY21zZ19zdGF0dXMgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19SdW50aW1lV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY2VpdmVkIG1hbGZvcm1lZCBvciBpbXByb3Blcmx5LXRydW5jYXRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmNpbGxhcnkgZGF0YSIsIDEpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB9CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNtc2dkYXRhbGVuID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiY29udHJvbCBtZXNzYWdlIHRvbyBsb25nIik7CisgICAgICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKUNNU0dfREFUQShjbXNnaCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNnZGF0YWxlbik7CisgICAgICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlOIiwgKGludCljbXNnaC0+Y21zZ19sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpY21zZ2gtPmNtc2dfdHlwZSwgYnl0ZXMpOworICAgICAgICBpZiAodHVwbGUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlZmRzOworICAgICAgICB0bXAgPSBQeUxpc3RfQXBwZW5kKGNtc2dfbGlzdCwgdHVwbGUpOworICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICBpZiAodG1wICE9IDApCisgICAgICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKworICAgICAgICBpZiAoY21zZ19zdGF0dXMgIT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHZhbCA9IFB5X0J1aWxkVmFsdWUoIk5PaU4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCptYWtldmFsKShieXRlc19yZWNlaXZlZCwgbWFrZXZhbF9kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtc2dfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbXNnLm1zZ19mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vzb2NrYWRkcihzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobXNnLm1zZ19uYW1lbGVuID4gYWRkcmJ1ZmxlbikgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyYnVmbGVuIDogbXNnLm1zZ19uYW1lbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zb2NrX3Byb3RvKSk7CisgICAgaWYgKHJldHZhbCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKworZmluYWxseToKKyAgICBQeV9YREVDUkVGKGNtc2dfbGlzdCk7CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICByZXR1cm4gcmV0dmFsOworCitlcnJfY2xvc2VmZHM6CisjaWZkZWYgU0NNX1JJR0hUUworICAgIC8qIENsb3NlIGFsbCBkZXNjcmlwdG9ycyBjb21pbmcgZnJvbSBTQ01fUklHSFRTLCBzbyB0aGV5IGRvbid0IGxlYWsuICovCisgICAgZm9yIChjbXNnaCA9ICgobXNnLm1zZ19jb250cm9sbGVuID4gMCkgPyBDTVNHX0ZJUlNUSERSKCZtc2cpIDogTlVMTCk7CisgICAgICAgICBjbXNnaCAhPSBOVUxMOyBjbXNnaCA9IENNU0dfTlhUSERSKCZtc2csIGNtc2doKSkgeworICAgICAgICBjbXNnX3N0YXR1cyA9IGdldF9jbXNnX2RhdGFfbGVuKCZtc2csIGNtc2doLCAmY21zZ2RhdGFsZW4pOworICAgICAgICBpZiAoY21zZ19zdGF0dXMgPCAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjbXNnaC0+Y21zZ19sZXZlbCA9PSBTT0xfU09DS0VUICYmCisgICAgICAgICAgICBjbXNnaC0+Y21zZ190eXBlID09IFNDTV9SSUdIVFMpIHsKKyAgICAgICAgICAgIHNpemVfdCBudW1mZHM7CisgICAgICAgICAgICBpbnQgKmZkcDsKKworICAgICAgICAgICAgbnVtZmRzID0gY21zZ2RhdGFsZW4gLyBzaXplb2YoaW50KTsKKyAgICAgICAgICAgIGZkcCA9IChpbnQgKilDTVNHX0RBVEEoY21zZ2gpOworICAgICAgICAgICAgd2hpbGUgKG51bWZkcy0tID4gMCkKKyAgICAgICAgICAgICAgICBjbG9zZSgqZmRwKyspOworICAgICAgICB9CisgICAgICAgIGlmIChjbXNnX3N0YXR1cyAhPSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmIC8qIFNDTV9SSUdIVFMgKi8KKyAgICBnb3RvIGZpbmFsbHk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK21ha2V2YWxfcmVjdm1zZyhzc2l6ZV90IHJlY2VpdmVkLCB2b2lkICpkYXRhKQoreworICAgIFB5T2JqZWN0ICoqYnVmID0gZGF0YTsKKworICAgIGlmIChyZWNlaXZlZCA8IFB5Qnl0ZXNfR0VUX1NJWkUoKmJ1ZikpCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIHJlY2VpdmVkKTsKKyAgICBQeV9YSU5DUkVGKCpidWYpOworICAgIHJldHVybiAqYnVmOworfQorCisvKiBzLnJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSBtZXRob2QgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfcmVjdm1zZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgYnVmc2l6ZSwgYW5jYnVmc2l6ZSA9IDA7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92OworICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxuaTpyZWN2bXNnIiwgJmJ1ZnNpemUsICZhbmNidWZzaXplLCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChidWZzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGJ1ZmZlciBzaXplIGluIHJlY3Ztc2coKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKChidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ1ZnNpemUpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpb3YuaW92X2Jhc2UgPSBQeUJ5dGVzX0FTX1NUUklORyhidWYpOworICAgIGlvdi5pb3ZfbGVuID0gYnVmc2l6ZTsKKworICAgIC8qIE5vdGUgdGhhdCB3ZSdyZSBwYXNzaW5nIGEgcG9pbnRlciB0byAqb3VyIHBvaW50ZXIqIHRvIHRoZSBieXRlcworICAgICAgIG9iamVjdCBoZXJlICgmYnVmKTsgbWFrZXZhbF9yZWN2bXNnKCkgbWF5IGluY3JlZiB0aGUgb2JqZWN0LCBvcgorICAgICAgIGRlYWxsb2NhdGUgaXQgYW5kIHNldCBvdXIgcG9pbnRlciB0byBOVUxMLiAqLworICAgIHJldHZhbCA9IHNvY2tfcmVjdm1zZ19ndXRzKHMsICZpb3YsIDEsIGZsYWdzLCBhbmNidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWtldmFsX3JlY3Ztc2csICZidWYpOworICAgIFB5X1hERUNSRUYoYnVmKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIocmVjdm1zZ19kb2MsCisicmVjdm1zZyhidWZzaXplWywgYW5jYnVmc2l6ZVssIGZsYWdzXV0pIC0+IChkYXRhLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpXG5cCitcblwKK1JlY2VpdmUgbm9ybWFsIGRhdGEgKHVwIHRvIGJ1ZnNpemUgYnl0ZXMpIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tIHRoZVxuXAorc29ja2V0LiAgVGhlIGFuY2J1ZnNpemUgYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGVcblwKK2ludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cyB0byAwLFxuXAorbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZSBidWZmZXJcblwKK3NpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZyBDTVNHX1NQQUNFKCkgb3JcblwKK0NNU0dfTEVOKCksIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0IGludG8gdGhlIGJ1ZmZlciBtaWdodCBiZVxuXAordHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSBmbGFncyBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlXG5cCitzYW1lIG1lYW5pbmcgYXMgZm9yIHJlY3YoKS5cblwKK1xuXAorVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IChkYXRhLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpLlxuXAorVGhlIGRhdGEgaXRlbSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBub24tYW5jaWxsYXJ5IGRhdGFcblwKK3JlY2VpdmVkLiAgVGhlIGFuY2RhdGEgaXRlbSBpcyBhIGxpc3Qgb2YgemVybyBvciBtb3JlIHR1cGxlc1xuXAorKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKSByZXByZXNlbnRpbmcgdGhlIGFuY2lsbGFyeSBkYXRhXG5cCisoY29udHJvbCBtZXNzYWdlcykgcmVjZWl2ZWQ6IGNtc2dfbGV2ZWwgYW5kIGNtc2dfdHlwZSBhcmUgaW50ZWdlcnNcblwKK3NwZWNpZnlpbmcgdGhlIHByb3RvY29sIGxldmVsIGFuZCBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSxcblwKK2FuZCBjbXNnX2RhdGEgaXMgYSBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZCBkYXRhLiAgVGhlXG5cCittc2dfZmxhZ3MgaXRlbSBpcyB0aGUgYml0d2lzZSBPUiBvZiB2YXJpb3VzIGZsYWdzIGluZGljYXRpbmdcblwKK2NvbmRpdGlvbnMgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2U7IHNlZSB5b3VyIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvclxuXAorZGV0YWlscy4gIElmIHRoZSByZWNlaXZpbmcgc29ja2V0IGlzIHVuY29ubmVjdGVkLCBhZGRyZXNzIGlzIHRoZVxuXAorYWRkcmVzcyBvZiB0aGUgc2VuZGluZyBzb2NrZXQsIGlmIGF2YWlsYWJsZTsgb3RoZXJ3aXNlLCBpdHMgdmFsdWUgaXNcblwKK3Vuc3BlY2lmaWVkLlxuXAorXG5cCitJZiByZWN2bXNnKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbiBhZnRlciB0aGUgc3lzdGVtIGNhbGwgcmV0dXJucywgaXRcblwKK3dpbGwgZmlyc3QgYXR0ZW1wdCB0byBjbG9zZSBhbnkgZmlsZSBkZXNjcmlwdG9ycyByZWNlaXZlZCB2aWEgdGhlXG5cCitTQ01fUklHSFRTIG1lY2hhbmlzbS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZXZhbF9yZWN2bXNnX2ludG8oc3NpemVfdCByZWNlaXZlZCwgdm9pZCAqZGF0YSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlY2VpdmVkKTsKK30KKworLyogcy5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSBtZXRob2QgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfcmVjdm1zZ19pbnRvKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBhbmNidWZzaXplID0gMDsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpLCBuaXRlbXMsIG5idWZzID0gMDsKKyAgICBQeV9idWZmZXIgKmJ1ZnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpidWZmZXJzX2FyZywgKmZhc3QsICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfG5pOnJlY3Ztc2dfaW50byIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJzX2FyZywgJmFuY2J1ZnNpemUsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKChmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGJ1ZmZlcnNfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjdm1zZ19pbnRvKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG5pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmYXN0KTsKKyAgICBpZiAobml0ZW1zID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInJlY3Ztc2dfaW50bygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggaXRlbSwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmIChuaXRlbXMgPiAwICYmICgoaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5pdGVtcykpID09IE5VTEwgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuaXRlbXMpKSA9PSBOVUxMKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGZvciAoOyBuYnVmcyA8IG5pdGVtczsgbmJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShmYXN0LCBuYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIncqO3JlY3Ztc2dfaW50bygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHNpbmdsZS1zZWdtZW50IHJlYWQtd3JpdGUgYnVmZmVycyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZnNbbmJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuYnVmc10uaW92X2Jhc2UgPSBidWZzW25idWZzXS5idWY7CisgICAgICAgIGlvdnNbbmJ1ZnNdLmlvdl9sZW4gPSBidWZzW25idWZzXS5sZW47CisgICAgfQorCisgICAgcmV0dmFsID0gc29ja19yZWN2bXNnX2d1dHMocywgaW92cywgbml0ZW1zLCBmbGFncywgYW5jYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFrZXZhbF9yZWN2bXNnX2ludG8sIE5VTEwpOworZmluYWxseToKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmJ1ZnM7IGkrKykKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmc1tpXSk7CisgICAgUHlNZW1fRnJlZShidWZzKTsKKyAgICBQeU1lbV9GcmVlKGlvdnMpOworICAgIFB5X0RFQ1JFRihmYXN0KTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIocmVjdm1zZ19pbnRvX2RvYywKKyJyZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSAtPiAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpXG5cCitcblwKK1JlY2VpdmUgbm9ybWFsIGRhdGEgYW5kIGFuY2lsbGFyeSBkYXRhIGZyb20gdGhlIHNvY2tldCwgc2NhdHRlcmluZyB0aGVcblwKK25vbi1hbmNpbGxhcnkgZGF0YSBpbnRvIGEgc2VyaWVzIG9mIGJ1ZmZlcnMuICBUaGUgYnVmZmVycyBhcmd1bWVudFxuXAorbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBvYmplY3RzIHRoYXQgZXhwb3J0IHdyaXRhYmxlIGJ1ZmZlcnNcblwKKyhlLmcuIGJ5dGVhcnJheSBvYmplY3RzKTsgdGhlc2Ugd2lsbCBiZSBmaWxsZWQgd2l0aCBzdWNjZXNzaXZlIGNodW5rc1xuXAorb2YgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YSB1bnRpbCBpdCBoYXMgYWxsIGJlZW4gd3JpdHRlbiBvciB0aGVyZSBhcmVcblwKK25vIG1vcmUgYnVmZmVycy4gIFRoZSBhbmNidWZzaXplIGFyZ3VtZW50IHNldHMgdGhlIHNpemUgaW4gYnl0ZXMgb2ZcblwKK3RoZSBpbnRlcm5hbCBidWZmZXIgdXNlZCB0byByZWNlaXZlIHRoZSBhbmNpbGxhcnkgZGF0YTsgaXQgZGVmYXVsdHMgdG9cblwKKzAsIG1lYW5pbmcgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSB3aWxsIGJlIHJlY2VpdmVkLiAgQXBwcm9wcmlhdGVcblwKK2J1ZmZlciBzaXplcyBmb3IgYW5jaWxsYXJ5IGRhdGEgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcgQ01TR19TUEFDRSgpXG5cCitvciBDTVNHX0xFTigpLCBhbmQgaXRlbXMgd2hpY2ggZG8gbm90IGZpdCBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmVcblwKK3RydW5jYXRlZCBvciBkaXNjYXJkZWQuICBUaGUgZmxhZ3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZVxuXAorc2FtZSBtZWFuaW5nIGFzIGZvciByZWN2KCkuXG5cCitcblwKK1RoZSByZXR1cm4gdmFsdWUgaXMgYSA0LXR1cGxlOiAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsIGFkZHJlc3MpLlxuXAorVGhlIG5ieXRlcyBpdGVtIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeSBkYXRhXG5cCit3cml0dGVuIGludG8gdGhlIGJ1ZmZlcnMuICBUaGUgYW5jZGF0YSBpdGVtIGlzIGEgbGlzdCBvZiB6ZXJvIG9yIG1vcmVcblwKK3R1cGxlcyAoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpIHJlcHJlc2VudGluZyB0aGUgYW5jaWxsYXJ5XG5cCitkYXRhIChjb250cm9sIG1lc3NhZ2VzKSByZWNlaXZlZDogY21zZ19sZXZlbCBhbmQgY21zZ190eXBlIGFyZVxuXAoraW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kIHByb3RvY29sLXNwZWNpZmljIHR5cGVcblwKK3Jlc3BlY3RpdmVseSwgYW5kIGNtc2dfZGF0YSBpcyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkXG5cCitkYXRhLiAgVGhlIG1zZ19mbGFncyBpdGVtIGlzIHRoZSBiaXR3aXNlIE9SIG9mIHZhcmlvdXMgZmxhZ3NcblwKK2luZGljYXRpbmcgY29uZGl0aW9ucyBvbiB0aGUgcmVjZWl2ZWQgbWVzc2FnZTsgc2VlIHlvdXIgc3lzdGVtXG5cCitkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiAgSWYgdGhlIHJlY2VpdmluZyBzb2NrZXQgaXMgdW5jb25uZWN0ZWQsXG5cCithZGRyZXNzIGlzIHRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsXG5cCitpdHMgdmFsdWUgaXMgdW5zcGVjaWZpZWQuXG5cCitcblwKK0lmIHJlY3Ztc2dfaW50bygpIHJhaXNlcyBhbiBleGNlcHRpb24gYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsIHJldHVybnMsXG5cCitpdCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8gY2xvc2UgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhIHRoZVxuXAorU0NNX1JJR0hUUyBtZWNoYW5pc20uIik7CisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKworCiAvKiBzLnNlbmQoZGF0YSBbLGZsYWdzXSkgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNzcxLDYgKzM0MzIsNyBAQAogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZHRvKCkgdGFrZXMgMiBvciAzIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdsZW4pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4MTQsNiArMzQ3NiwyMzQgQEAKIEZvciBJUCBzb2NrZXRzLCB0aGUgYWRkcmVzcyBpcyBhIHBhaXIgKGhvc3RhZGRyLCBwb3J0KS4iKTsKIAogCisvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKKyAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KKyNpZmRlZiBDTVNHX0xFTgorLyogcy5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSBtZXRob2QgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfc2VuZG1zZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFwYXJ0cywgbmRhdGFidWZzID0gMCwgbmNtc2dzLCBuY21zZ2J1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKKyAgICBzdHJ1Y3QgY21zZ2luZm8geworICAgICAgICBpbnQgbGV2ZWw7CisgICAgICAgIGludCB0eXBlOworICAgICAgICBQeV9idWZmZXIgZGF0YTsKKyAgICB9ICpjbXNncyA9IE5VTEw7CisgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CisgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKKyAgICBzc2l6ZV90IGJ5dGVzX3NlbnQgPSAtMTsKKyAgICBpbnQgYWRkcmxlbiwgdGltZW91dCwgZmxhZ3MgPSAwOworICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwgKmRhdGFfZmFzdCA9IE5VTEwsCisgICAgICAgICpjbXNnX2Zhc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPaU86c2VuZG1zZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUGFyc2UgZGVzdGluYXRpb24gYWRkcmVzcy4gKi8KKyAgICBpZiAoYWRkcl9hcmcgIT0gTlVMTCAmJiBhZGRyX2FyZyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghZ2V0c29ja2FkZHJhcmcocywgYWRkcl9hcmcsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgbXNnLm1zZ19uYW1lID0gJmFkZHJidWY7CisgICAgICAgIG1zZy5tc2dfbmFtZWxlbiA9IGFkZHJsZW47CisgICAgfQorCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBpZiAoKGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7CisgICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBtc2cubXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7CisgICAgaWYgKG5kYXRhcGFydHMgPiAwICYmCisgICAgICAgICgobXNnLm1zZ19pb3YgPSBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cykpID09IE5VTEwgfHwKKyAgICAgICAgIChkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpKSA9PSBOVUxMKSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJidWZmZXItY29tcGF0aWJsZSBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOworICAgIH0KKworICAgIGlmIChjbXNnX2FyZyA9PSBOVUxMKQorICAgICAgICBuY21zZ3MgPSAwOworICAgIGVsc2UgeworICAgICAgICBpZiAoKGNtc2dfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChjbXNnX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAyIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgbmNtc2dzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGNtc2dfZmFzdCk7CisgICAgfQorCisjaWZuZGVmIENNU0dfU1BBQ0UKKyAgICBpZiAobmNtc2dzID4gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kaW5nIG11bHRpcGxlIGNvbnRyb2wgbWVzc2FnZXMgaXMgbm90IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAib24gdGhpcyBzeXN0ZW0iKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyNlbmRpZgorICAgIC8qIFNhdmUgbGV2ZWwsIHR5cGUgYW5kIFB5X2J1ZmZlciBmb3IgZWFjaCBjb250cm9sIG1lc3NhZ2UsCisgICAgICAgYW5kIGNhbGN1bGF0ZSB0b3RhbCBzaXplLiAqLworICAgIGlmIChuY21zZ3MgPiAwICYmIChjbXNncyA9IFB5TWVtX05ldyhzdHJ1Y3QgY21zZ2luZm8sIG5jbXNncykpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBjb250cm9sbGVuID0gY29udHJvbGxlbl9sYXN0ID0gMDsKKyAgICB3aGlsZSAobmNtc2didWZzIDwgbmNtc2dzKSB7CisgICAgICAgIHNpemVfdCBidWZzaXplLCBzcGFjZTsKKworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShjbXNnX2Zhc3QsIG5jbXNnYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIihpaXkqKTpbc2VuZG1zZygpIGFuY2lsbGFyeSBkYXRhIGl0ZW1zXSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc2dzW25jbXNnYnVmc10ubGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc2dzW25jbXNnYnVmc10udHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmY21zZ3NbbmNtc2didWZzXS5kYXRhKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgYnVmc2l6ZSA9IGNtc2dzW25jbXNnYnVmcysrXS5kYXRhLmxlbjsKKworI2lmZGVmIENNU0dfU1BBQ0UKKyAgICAgICAgaWYgKCFnZXRfQ01TR19TUEFDRShidWZzaXplLCAmc3BhY2UpKSB7CisjZWxzZQorICAgICAgICBpZiAoIWdldF9DTVNHX0xFTihidWZzaXplLCAmc3BhY2UpKSB7CisjZW5kaWYKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiYW5jaWxsYXJ5IGRhdGEgaXRlbSB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBjb250cm9sbGVuICs9IHNwYWNlOworICAgICAgICBpZiAoY29udHJvbGxlbiA+IFNPQ0tMRU5fVF9MSU1JVCB8fCBjb250cm9sbGVuIDwgY29udHJvbGxlbl9sYXN0KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInRvbyBtdWNoIGFuY2lsbGFyeSBkYXRhIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgY29udHJvbGxlbl9sYXN0ID0gY29udHJvbGxlbjsKKyAgICB9CisKKyAgICAvKiBDb25zdHJ1Y3QgYW5jaWxsYXJ5IGRhdGEgYmxvY2sgZnJvbSBjb250cm9sIG1lc3NhZ2UgaW5mby4gKi8KKyAgICBpZiAobmNtc2didWZzID4gMCkgeworICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2ggPSBOVUxMOworCisgICAgICAgIGlmICgobXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZiA9CisgICAgICAgICAgICAgUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisKKyAgICAgICAgLyogTmVlZCB0byB6ZXJvIG91dCB0aGUgYnVmZmVyIGFzIGEgd29ya2Fyb3VuZCBmb3IgZ2xpYmMncworICAgICAgICAgICBDTVNHX05YVEhEUigpIGltcGxlbWVudGF0aW9uLiAgQWZ0ZXIgZ2V0dGluZyB0aGUgcG9pbnRlciB0bworICAgICAgICAgICB0aGUgbmV4dCBoZWFkZXIsIGl0IGNoZWNrcyBpdHMgKHVuaW5pdGlhbGl6ZWQpIGNtc2dfbGVuCisgICAgICAgICAgIG1lbWJlciB0byBzZWUgaWYgdGhlICJtZXNzYWdlIiBmaXRzIGluIHRoZSBidWZmZXIsIGFuZAorICAgICAgICAgICByZXR1cm5zIE5VTEwgaWYgaXQgZG9lc24ndC4gIFplcm8tZmlsbGluZyB0aGUgYnVmZmVyCisgICAgICAgICAgIGVuc3VyZXMgdGhhdCB0aGF0IGRvZXNuJ3QgaGFwcGVuLiAqLworICAgICAgICBtZW1zZXQoY29udHJvbGJ1ZiwgMCwgY29udHJvbGxlbik7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5jbXNnYnVmczsgaSsrKSB7CisgICAgICAgICAgICBzaXplX3QgbXNnX2xlbiwgZGF0YV9sZW4gPSBjbXNnc1tpXS5kYXRhLmxlbjsKKyAgICAgICAgICAgIGludCBlbm91Z2hfc3BhY2UgPSAwOworCisgICAgICAgICAgICBjbXNnaCA9IChpID09IDApID8gQ01TR19GSVJTVEhEUigmbXNnKSA6IENNU0dfTlhUSERSKCZtc2csIGNtc2doKTsKKyAgICAgICAgICAgIGlmIChjbXNnaCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSAlcygpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgPT0gMCkgPyAiQ01TR19GSVJTVEhEUiIgOiAiQ01TR19OWFRIRFIiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWdldF9DTVNHX0xFTihkYXRhX2xlbiwgJm1zZ19sZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZW0gc2l6ZSBvdXQgb2YgcmFuZ2UgZm9yIENNU0dfTEVOKCkiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY21zZ19taW5fc3BhY2UoJm1zZywgY21zZ2gsIG1zZ19sZW4pKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNwYWNlOworCisgICAgICAgICAgICAgICAgY21zZ2gtPmNtc2dfbGVuID0gbXNnX2xlbjsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0X2Ntc2dfZGF0YV9zcGFjZSgmbXNnLCBjbXNnaCwgJnNwYWNlKSkKKyAgICAgICAgICAgICAgICAgICAgZW5vdWdoX3NwYWNlID0gKHNwYWNlID49IGRhdGFfbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZW5vdWdoX3NwYWNlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuY2lsbGFyeSBkYXRhIGRvZXMgbm90IGZpdCBpbiBjYWxjdWxhdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwYWNlIik7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY21zZ2gtPmNtc2dfbGV2ZWwgPSBjbXNnc1tpXS5sZXZlbDsKKyAgICAgICAgICAgIGNtc2doLT5jbXNnX3R5cGUgPSBjbXNnc1tpXS50eXBlOworICAgICAgICAgICAgbWVtY3B5KENNU0dfREFUQShjbXNnaCksIGNtc2dzW2ldLmRhdGEuYnVmLCBkYXRhX2xlbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBNYWtlIHRoZSBzeXN0ZW0gY2FsbC4gKi8KKyAgICBpZiAoIUlTX1NFTEVDVEFCTEUocykpIHsKKyAgICAgICAgc2VsZWN0X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAxLCBpbnRlcnZhbCk7CisgICAgaWYgKCF0aW1lb3V0KQorICAgICAgICBieXRlc19zZW50ID0gc2VuZG1zZyhzLT5zb2NrX2ZkLCAmbXNnLCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHRpbWVvdXQgPT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBFTkRfU0VMRUNUX0xPT1AocykKKworICAgIGlmIChieXRlc19zZW50IDwgMCkgeworICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoYnl0ZXNfc2VudCk7CisKK2ZpbmFsbHk6CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmNtc2didWZzOyBpKyspCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmNtc2dzW2ldLmRhdGEpOworICAgIFB5TWVtX0ZyZWUoY21zZ3MpOworICAgIFB5X1hERUNSRUYoY21zZ19mYXN0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKKyAgICBQeU1lbV9GcmVlKGlvdnMpOworICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoc2VuZG1zZ19kb2MsCisic2VuZG1zZyhidWZmZXJzWywgYW5jZGF0YVssIGZsYWdzWywgYWRkcmVzc11dXSkgLT4gY291bnRcblwKK1xuXAorU2VuZCBub3JtYWwgYW5kIGFuY2lsbGFyeSBkYXRhIHRvIHRoZSBzb2NrZXQsIGdhdGhlcmluZyB0aGVcblwKK25vbi1hbmNpbGxhcnkgZGF0YSBmcm9tIGEgc2VyaWVzIG9mIGJ1ZmZlcnMgYW5kIGNvbmNhdGVuYXRpbmcgaXQgaW50b1xuXAorYSBzaW5nbGUgbWVzc2FnZS4gIFRoZSBidWZmZXJzIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbm9uLWFuY2lsbGFyeVxuXAorZGF0YSBhcyBhbiBpdGVyYWJsZSBvZiBidWZmZXItY29tcGF0aWJsZSBvYmplY3RzIChlLmcuIGJ5dGVzIG9iamVjdHMpLlxuXAorVGhlIGFuY2RhdGEgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBhbmNpbGxhcnkgZGF0YSAoY29udHJvbCBtZXNzYWdlcylcblwKK2FzIGFuIGl0ZXJhYmxlIG9mIHplcm8gb3IgbW9yZSB0dXBsZXMgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSxcblwKK2Ntc2dfZGF0YSksIHdoZXJlIGNtc2dfbGV2ZWwgYW5kIGNtc2dfdHlwZSBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGVcblwKK3Byb3RvY29sIGxldmVsIGFuZCBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kIGNtc2dfZGF0YVxuXAoraXMgYSBidWZmZXItY29tcGF0aWJsZSBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZCBkYXRhLiAgVGhlIGZsYWdzXG5cCithcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3Igc2VuZCgpLiAgSWZcblwKK2FkZHJlc3MgaXMgc3VwcGxpZWQgYW5kIG5vdCBOb25lLCBpdCBzZXRzIGEgZGVzdGluYXRpb24gYWRkcmVzcyBmb3JcblwKK3RoZSBtZXNzYWdlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIG5vbi1hbmNpbGxhcnlcblwKK2RhdGEgc2VudC4iKTsKKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCisKIC8qIHMuc2h1dGRvd24oaG93KSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI4ODIsNiArMzc3MiwzNCBAQAogQ29udHJvbCB0aGUgc29ja2V0IHdpdGggV1NBSW9jdGwgc3lzY2FsbC4gQ3VycmVudGx5IHN1cHBvcnRlZCAnY21kJyB2YWx1ZXMgYXJlXG5cCiBTSU9fUkNWQUxMOiAgJ29wdGlvbicgbXVzdCBiZSBvbmUgb2YgdGhlIHNvY2tldC5SQ1ZBTExfKiBjb25zdGFudHMuXG5cCiBTSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLiIpOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCitzdGF0aWMgUHlPYmplY3QqCitzb2NrX3NoYXJlKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBXU0FQUk9UT0NPTF9JTkZPIGluZm87CisgICAgRFdPUkQgcHJvY2Vzc0lkOworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJnLCAiSSIsICZwcm9jZXNzSWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBXU0FEdXBsaWNhdGVTb2NrZXQocy0+c29ja19mZCwgcHJvY2Vzc0lkLCAmaW5mbyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzdWx0ID09IFNPQ0tFVF9FUlJPUikKKyAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyKikmaW5mbywgc2l6ZW9mKGluZm8pKTsKK30KK1B5RG9jX1NUUlZBUihzb2NrX3NoYXJlX2RvYywKKyJzaGFyZShwcm9jZXNzX2lkKSAtPiBieXRlc1xuXAorXG5cCitTaGFyZSB0aGUgc29ja2V0IHdpdGggYW5vdGhlciBwcm9jZXNzLiAgVGhlIHRhcmdldCBwcm9jZXNzIGlkXG5cCittdXN0IGJlIHByb3ZpZGVkIGFuZCB0aGUgcmVzdWx0aW5nIGJ5dGVzIG9iamVjdCBwYXNzZWQgdG8gdGhlIHRhcmdldFxuXAorcHJvY2Vzcy4gIFRoZXJlIHRoZSBzaGFyZWQgc29ja2V0IGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgY2FsbGluZ1xuXAorc29ja2V0LmZyb21zaGFyZSgpLiIpOworCiAKICNlbmRpZgogCkBAIC0yOTE0LDYgKzM4MzIsMTAgQEAKICAgICB7ImlvY3RsIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfaW9jdGwsIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBzb2NrX2lvY3RsX2RvY30sCiAjZW5kaWYKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgeyJzaGFyZSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2hhcmUsIE1FVEhfVkFSQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICBzb2NrX3NoYXJlX2RvY30sCisjZW5kaWYKICAgICB7Imxpc3RlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfbGlzdGVuLCBNRVRIX08sCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuX2RvY30sCiAgICAgeyJyZWN2IiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3YsIE1FVEhfVkFSQVJHUywKQEAgLTI5NDAsNiArMzg2MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgIHNldHNvY2tvcHRfZG9jfSwKICAgICB7InNodXRkb3duIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2h1dGRvd24sIE1FVEhfTywKICAgICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl9kb2N9LAorI2lmZGVmIENNU0dfTEVOCisgICAgeyJyZWN2bXNnIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3Ztc2csIE1FVEhfVkFSQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICByZWN2bXNnX2RvY30sCisgICAgeyJyZWN2bXNnX2ludG8iLCAgICAgIChQeUNGdW5jdGlvbilzb2NrX3JlY3Ztc2dfaW50bywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHJlY3Ztc2dfaW50b19kb2MsfSwKKyAgICB7InNlbmRtc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZywgTUVUSF9WQVJBUkdTLAorICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTMwMzMsMTMgKzM5NjMsNDAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZkb2JqICE9IE5VTEwgJiYgZmRvYmogIT0gUHlfTm9uZSkgewotICAgICAgICBmZCA9IFB5TG9uZ19Bc1NvY2tldF90KGZkb2JqKTsKLSAgICAgICAgaWYgKGZkID09IChTT0NLRVRfVCkoLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBpbnZhbGlkIHNvY2tldCB2YWx1ZSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgLyogcmVjcmVhdGUgYSBzb2NrZXQgdGhhdCB3YXMgZHVwbGljYXRlZCAqLworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhmZG9iaikpIHsKKyAgICAgICAgICAgIFdTQVBST1RPQ09MX0lORk8gaW5mbzsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGZkb2JqKSAhPSBzaXplb2YoaW5mbykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgInNvY2tldCBkZXNjcmlwdG9yIHN0cmluZyBoYXMgd3Jvbmcgc2l6ZSwgIgorICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlICV6dSBieXRlcy4iLCBzaXplb2YoaW5mbykpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweSgmaW5mbywgUHlCeXRlc19BU19TVFJJTkcoZmRvYmopLCBzaXplb2YoaW5mbykpOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgZmQgPSBXU0FTb2NrZXQoRlJPTV9QUk9UT0NPTF9JTkZPLCBGUk9NX1BST1RPQ09MX0lORk8sCisgICAgICAgICAgICAgICAgICAgICBGUk9NX1BST1RPQ09MX0lORk8sICZpbmZvLCAwLCBXU0FfRkxBR19PVkVSTEFQUEVEKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBpZiAoZmQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgICAgICAgICBzZXRfZXJyb3IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmYW1pbHkgPSBpbmZvLmlBZGRyZXNzRmFtaWx5OworICAgICAgICAgICAgdHlwZSA9IGluZm8uaVNvY2tldFR5cGU7CisgICAgICAgICAgICBwcm90byA9IGluZm8uaVByb3RvY29sOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBmZCA9IFB5TG9uZ19Bc1NvY2tldF90KGZkb2JqKTsKKyAgICAgICAgICAgIGlmIChmZCA9PSAoU09DS0VUX1QpKC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChmZCA9PSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGludmFsaWQgc29ja2V0IHZhbHVlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewpAQCAtMzExNSwyNSArNDA3MiwzNSBAQAogICAgICAgIHZlcnNpb24gb2YgdGhlIGhvc3RuYW1lLCB3aGVyZWFzIHdlIG5lZWQgYSBVbmljb2RlIHN0cmluZy4KICAgICAgICBPdGhlcndpc2UsIGdldGhvc3RuYW1lIGFwcGFyZW50bHkgYWxzbyByZXR1cm5zIHRoZSBETlMgbmFtZS4gKi8KICAgICB3Y2hhcl90IGJ1ZltNQVhfQ09NUFVURVJOQU1FX0xFTkdUSCArIDFdOwotICAgIERXT1JEIHNpemUgPSBzaXplb2YoYnVmKSAvIHNpemVvZih3Y2hhcl90KTsKKyAgICBEV09SRCBzaXplID0gUHlfQVJSQVlfTEVOR1RIKGJ1Zik7CisgICAgd2NoYXJfdCAqbmFtZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGlmICghR2V0Q29tcHV0ZXJOYW1lRXhXKENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5hbWUsIGJ1ZiwgJnNpemUpKSB7Ci0gICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9NT1JFX0RBVEEpIHsKLSAgICAgICAgICAgIC8qIE1TRE4gc2F5cyB0aGlzIG1heSBvY2N1ciAiYmVjYXVzZSBETlMgYWxsb3dzIGxvbmdlciBuYW1lcyAqLwotICAgICAgICAgICAgaWYgKHNpemUgPT0gMCkgLyogWFhYOiBJJ20gbm90IHN1cmUgaG93IHRvIGhhbmRsZSB0aGlzICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplIC0gMSk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemUpKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfV2luZG93c0Vycm9yLCBHZXRMYXN0RXJyb3IoKSk7CisKKyAgICBpZiAoR2V0Q29tcHV0ZXJOYW1lRXhXKENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5hbWUsIGJ1ZiwgJnNpemUpKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihidWYsIHNpemUpOworCisgICAgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX01PUkVfREFUQSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CisKKyAgICAvKiBNU0ROIHNheXMgRVJST1JfTU9SRV9EQVRBIG1heSBvY2N1ciBiZWNhdXNlIEROUyBhbGxvd3MgbG9uZ2VyCisgICAgICAgbmFtZXMgKi8KKyAgICBuYW1lID0gUHlNZW1fTWFsbG9jKHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFHZXRDb21wdXRlck5hbWVFeFcoQ29tcHV0ZXJOYW1lUGh5c2ljYWxEbnNIb3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2l6ZSkpCisgICAgeworICAgICAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYnVmLCBzaXplKTsgICAgICAgICAgICAKKworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIobmFtZSwgc2l6ZSk7CisgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKICAgICBjaGFyIGJ1ZlsxMDI0XTsKICAgICBpbnQgcmVzOwpAQCAtMzE1Miw2ICs0MTE5LDM3IEBACiBcblwKIFJldHVybiB0aGUgY3VycmVudCBob3N0IG5hbWUuIik7CiAKKyNpZmRlZiBIQVZFX1NFVEhPU1ROQU1FCitQeURvY19TVFJWQVIoc2V0aG9zdG5hbWVfZG9jLAorInNldGhvc3RuYW1lKG5hbWUpXG5cblwKK1NldHMgdGhlIGhvc3RuYW1lIHRvIG5hbWUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfc2V0aG9zdG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpobm9iajsKKyAgICBQeV9idWZmZXIgYnVmOworICAgIGludCByZXMsIGZsYWcgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJTOnNldGhvc3RuYW1lIiwgJmhub2JqKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnNldGhvc3RuYW1lIiwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZobm9iaikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZmxhZyA9IDE7CisgICAgfQorICAgIHJlcyA9IFB5T2JqZWN0X0dldEJ1ZmZlcihobm9iaiwgJmJ1ZiwgUHlCVUZfU0lNUExFKTsKKyAgICBpZiAoIXJlcykgeworICAgICAgICByZXMgPSBzZXRob3N0bmFtZShidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisgICAgaWYgKGZsYWcpCisgICAgICAgIFB5X0RFQ1JFRihobm9iaik7CisgICAgaWYgKHJlcykKKyAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCiAKIC8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gZ2V0aG9zdGJ5bmFtZShuYW1lKS4gKi8KIApAQCAtMzE5OCw5ICs0MTk2LDggQEAKIAogICAgIGlmIChoLT5oX2FkZHJ0eXBlICE9IGFmKSB7CiAgICAgICAgIC8qIExldCdzIGdldCByZWFsIGVycm9yIG1lc3NhZ2UgdG8gcmV0dXJuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKXN0cmVycm9yKEVBRk5PU1VQUE9SVCkpOwotCisgICAgICAgIGVycm5vID0gRUFGTk9TVVBQT1JUOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzI4Myw3ICs0MjgwLDcgQEAKICNlbmRpZgogCiAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgIC8qIGNhbid0IGhhcHBlbiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTMzMTUsMTEgKzQzMTIsNyBAQAogewogICAgIGNoYXIgKm5hbWU7CiAgICAgc3RydWN0IGhvc3RlbnQgKmg7Ci0jaWZkZWYgRU5BQkxFX0lQVjYKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyOwotI2Vsc2UKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKLSNlbmRpZgorICAgIHNvY2tfYWRkcl90IGFkZHI7CiAgICAgc3RydWN0IHNvY2thZGRyICpzYTsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgpAQCAtMzMzMSwxOSArNDMyNCwxOSBAQAogICAgIGludCBidWZfbGVuID0gKHNpemVvZiBidWYpIC0gMTsKICAgICBpbnQgZXJybm9wOwogI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRykgfHwgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRykKKyNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldDpnZXRob3N0YnluYW1lX2V4IiwgImlkbmEiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRpcGFkZHIobmFtZSwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkciksIEFGX0lORVQpIDwgMCkKKyAgICBpZiAoc2V0aXBhZGRyKG5hbWUsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwgQUZfSU5FVCkgPCAwKQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjaWYgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQotICAgIHJlc3VsdCA9IGdldGhvc3RieW5hbWVfcihuYW1lLCAmaHBfYWxsb2NhdGVkLCBidWYsIGJ1Zl9sZW4sCisgICAgZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmgsICZlcnJub3ApOwogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRykKICAgICBoID0gZ2V0aG9zdGJ5bmFtZV9yKG5hbWUsICZocF9hbGxvY2F0ZWQsIGJ1ZiwgYnVmX2xlbiwgJmVycm5vcCk7CkBAIC0zMzYzLDggKzQzNTYsOCBAQAogICAgICAgIGFkZHIuc3NfZmFtaWx5LgogICAgICAgIFRoZXJlZm9yZSwgd2UgY2FzdCB0aGUgc29ja2FkZHJfc3RvcmFnZSBpbnRvIHNvY2thZGRyIHRvCiAgICAgICAgYWNjZXNzIHNhX2ZhbWlseS4gKi8KLSAgICBzYSA9IChzdHJ1Y3Qgc29ja2FkZHIqKSZhZGRyOwotICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpLAorICAgIHNhID0gU0FTMlNBKCZhZGRyKTsKKyAgICByZXQgPSBnZXRob3N0X2NvbW1vbihoLCBTQVMyU0EoJmFkZHIpLCBzaXplb2YoYWRkciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2EtPnNhX2ZhbWlseSk7CiAjaWZkZWYgVVNFX0dFVEhPU1RCWU5BTUVfTE9DSwogICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhuZXRkYl9sb2NrKTsKQEAgLTMzODcsMTIgKzQzODAsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRob3N0YnlhZGRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSNpZmRlZiBFTkFCTEVfSVBWNgotICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIGFkZHI7Ci0jZWxzZQotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwotI2VuZGlmCi0gICAgc3RydWN0IHNvY2thZGRyICpzYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkcjsKKyAgICBzb2NrX2FkZHJfdCBhZGRyOworICAgIHN0cnVjdCBzb2NrYWRkciAqc2EgPSBTQVMyU0EoJmFkZHIpOwogICAgIGNoYXIgKmlwX251bTsKICAgICBzdHJ1Y3QgaG9zdGVudCAqaDsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKQEAgLTM0MDksNyArNDM5OCw3IEBACiAgICAgaW50IGJ1Zl9sZW4gPSAoc2l6ZW9mIGJ1ZikgLSAxOwogICAgIGludCBlcnJub3A7CiAjZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHKSB8fCBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQorI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCkBAIC0zNDI0LDcgKzQ0MTMsNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgYWYgPSBzYS0+c2FfZmFtaWx5OwogICAgIGFwID0gTlVMTDsKLSAgICBhbCA9IDA7CisgICAgLyogYWwgPSAwOyAqLwogICAgIHN3aXRjaCAoYWYpIHsKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgICAgIGFwID0gKGNoYXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilzYSktPnNpbl9hZGRyOwpAQCAtMzQzNywxMyArNDQyNiwxMyBAQAogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjaWYgICBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHKQotICAgIHJlc3VsdCA9IGdldGhvc3RieWFkZHJfcihhcCwgYWwsIGFmLAorICAgIGdldGhvc3RieWFkZHJfcihhcCwgYWwsIGFmLAogICAgICAgICAmaHBfYWxsb2NhdGVkLCBidWYsIGJ1Zl9sZW4sCiAgICAgICAgICZoLCAmZXJybm9wKTsKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcpCkBAIC0zNDYxLDcgKzQ0NTAsNyBAQAogICAgIGggPSBnZXRob3N0YnlhZGRyKGFwLCBhbCwgYWYpOwogI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRV9SICovCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBnZXRob3N0X2NvbW1vbihoLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSwgYWYpOworICAgIHJldCA9IGdldGhvc3RfY29tbW9uKGgsIFNBUzJTQSgmYWRkciksIHNpemVvZihhZGRyKSwgYWYpOwogI2lmZGVmIFVTRV9HRVRIT1NUQllOQU1FX0xPQ0sKICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobmV0ZGJfbG9jayk7CiAjZW5kaWYKQEAgLTM0OTMsNyArNDQ4Miw3IEBACiAgICAgc3AgPSBnZXRzZXJ2YnluYW1lKG5hbWUsIHByb3RvKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJzZXJ2aWNlL3Byb3RvIG5vdCBmb3VuZCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlcnZpY2UvcHJvdG8gbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBudG9ocyhzcC0+c19wb3J0KSk7CkBAIC0zNTMwLDcgKzQ1MTksNyBAQAogICAgIHNwID0gZ2V0c2VydmJ5cG9ydChodG9ucygoc2hvcnQpcG9ydCksIHByb3RvKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJwb3J0L3Byb3RvIG5vdCBmb3VuZCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInBvcnQvcHJvdG8gbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3AtPnNfbmFtZSk7CkBAIC0zNTU5LDcgKzQ1NDgsNyBAQAogICAgIHNwID0gZ2V0cHJvdG9ieW5hbWUobmFtZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoc3AgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAicHJvdG9jb2wgbm90IGZvdW5kIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAicHJvdG9jb2wgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzcC0+cF9wcm90byk7CkBAIC0zODE0LDcgKzQ4MDMsNyBAQAogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKSgmYnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihidWYpKTsKIAotICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIElQIGFkZHJlc3Mgc3RyaW5nIHBhc3NlZCB0byBpbmV0X2F0b24iKTsKICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzgzNSw3ICs0ODI0LDcgQEAKICAgICAgICAgcGFja2VkX2FkZHIgPSBpbmV0X2FkZHIoaXBfYWRkcik7CiAKICAgICAgICAgaWYgKHBhY2tlZF9hZGRyID09IElOQUREUl9OT05FKSB7ICAgICAgICAgICAgICAgLyogaW52YWxpZCBhZGRyZXNzICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfYXRvbiIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTM4NjcsNyArNDg1Niw3IEBACiAgICAgfQogCiAgICAgaWYgKGFkZHJfbGVuICE9IHNpemVvZihwYWNrZWRfYWRkcikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAicGFja2VkIElQIHdyb25nIGxlbmd0aCBmb3IgaW5ldF9udG9hIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTM5MDIsNyArNDg5MSw3IEBACiAKICNpZiAhZGVmaW5lZChFTkFCTEVfSVBWNikgJiYgZGVmaW5lZChBRl9JTkVUNikKICAgICBpZihhZiA9PSBBRl9JTkVUNikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgQUZfSU5FVDYsIElQdjYgaXMgZGlzYWJsZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMzkxMCwxMCArNDg5OSwxMCBAQAogCiAgICAgcmV0dmFsID0gaW5ldF9wdG9uKGFmLCBpcCwgcGFja2VkKTsKICAgICBpZiAocmV0dmFsIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oc29ja2V0X2Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgaWYgKHJldHZhbCA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgImlsbGVnYWwgSVAgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIGluZXRfcHRvbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgaWYgKGFmID09IEFGX0lORVQpIHsKQEAgLTM5MjUsNyArNDkxNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogfQpAQCAtMzk3Nyw3ICs0OTY2LDcgQEAKIAogICAgIHJldHZhbCA9IGluZXRfbnRvcChhZiwgcGFja2VkLCBpcCwgc2l6ZW9mKGlwKSk7CiAgICAgaWYgKCFyZXR2YWwpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKHNvY2tldF9lcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHJldHZhbCk7CkBAIC0zOTk2LDcgKzQ5ODUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRhZGRyaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7Ci0gICAgc3RhdGljIGNoYXIqIGt3bmFtZXNbXSA9IHsiaG9zdCIsICJwb3J0IiwgImZhbWlseSIsICJ0eXBlIiwgInByb3RvIiwgCisgICAgc3RhdGljIGNoYXIqIGt3bmFtZXNbXSA9IHsiaG9zdCIsICJwb3J0IiwgImZhbWlseSIsICJ0eXBlIiwgInByb3RvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbGFncyIsIDB9OwogICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKICAgICBzdHJ1Y3QgYWRkcmluZm8gKnJlczAgPSBOVUxMOwpAQCAtNDAxMSw3ICs1MDAwLDcgQEAKIAogICAgIGZhbWlseSA9IHNvY2t0eXBlID0gcHJvdG9jb2wgPSBmbGFncyA9IDA7CiAgICAgZmFtaWx5ID0gQUZfVU5TUEVDOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PfGlpaWk6Z2V0YWRkcmluZm8iLCAKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xpaWlpOmdldGFkZHJpbmZvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAga3duYW1lcywgJmhvYmosICZwb2JqLCAmZmFtaWx5LCAmc29ja3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm90b2NvbCwgJmZsYWdzKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQwMTksNyArNTAwOCw5IEBACiAgICAgaWYgKGhvYmogPT0gUHlfTm9uZSkgewogICAgICAgICBocHRyID0gTlVMTDsKICAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhob2JqKSkgewotICAgICAgICBpZG5hID0gUHlPYmplY3RfQ2FsbE1ldGhvZChob2JqLCAiZW5jb2RlIiwgInMiLCAiaWRuYSIpOworICAgICAgICBfUHlfSURFTlRJRklFUihlbmNvZGUpOworCisgICAgICAgIGlkbmEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGhvYmosICZQeUlkX2VuY29kZSwgInMiLCAiaWRuYSIpOwogICAgICAgICBpZiAoIWlkbmEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soaWRuYSkpOwpAQCAtNDA0Niw3ICs1MDM3LDcgQEAKICAgICB9IGVsc2UgaWYgKHBvYmogPT0gUHlfTm9uZSkgewogICAgICAgICBwcHRyID0gKGNoYXIgKilOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJJbnQgb3IgU3RyaW5nIGV4cGVjdGVkIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiSW50IG9yIFN0cmluZyBleHBlY3RlZCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CkBAIC00MTQ5LDcgKzUxNDAsNyBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogICAgIGlmIChyZXMtPmFpX25leHQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAic29ja2FkZHIgcmVzb2x2ZWQgdG8gbXVsdGlwbGUgYWRkcmVzc2VzIik7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CkBAIC00MTU3LDcgKzUxNDgsNyBAQAogICAgIGNhc2UgQUZfSU5FVDoKICAgICAgICAgewogICAgICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShzYSkgIT0gMikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJJUHY0IHNvY2thZGRyIG11c3QgYmUgMiB0dXBsZSIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CkBAIC00MjQ0LDYgKzUyMzUsMTYzIEBACiBBIHZhbHVlIG9mIE5vbmUgaW5kaWNhdGVzIHRoYXQgbmV3IHNvY2tldCBvYmplY3RzIGhhdmUgbm8gdGltZW91dC5cblwKIFdoZW4gdGhlIHNvY2tldCBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIHRoZSBkZWZhdWx0IGlzIE5vbmUuIik7CiAKKyNpZmRlZiBIQVZFX0lGX05BTUVJTkRFWAorLyogUHl0aG9uIEFQSSBmb3IgZ2V0dGluZyBpbnRlcmZhY2UgaW5kaWNlcyBhbmQgbmFtZXMgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9pZl9uYW1laW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKmxpc3Q7CisgICAgaW50IGk7CisgICAgc3RydWN0IGlmX25hbWVpbmRleCAqbmk7CisKKyAgICBuaSA9IGlmX25hbWVpbmRleCgpOworICAgIGlmIChuaSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICBpZl9mcmVlbmFtZWluZGV4KG5pKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgbmlbaV0uaWZfaW5kZXggIT0gMCAmJiBpIDwgSU5UX01BWDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpuaV90dXBsZSA9IFB5X0J1aWxkVmFsdWUoIklPJiIsCisgICAgICAgICAgICAgICAgbmlbaV0uaWZfaW5kZXgsIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQsIG5pW2ldLmlmX25hbWUpOworCisgICAgICAgIGlmIChuaV90dXBsZSA9PSBOVUxMIHx8IFB5TGlzdF9BcHBlbmQobGlzdCwgbmlfdHVwbGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKG5pX3R1cGxlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIGlmX2ZyZWVuYW1laW5kZXgobmkpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG5pX3R1cGxlKTsKKyAgICB9CisKKyAgICBpZl9mcmVlbmFtZWluZGV4KG5pKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworUHlEb2NfU1RSVkFSKGlmX25hbWVpbmRleF9kb2MsCisiaWZfbmFtZWluZGV4KClcblwKK1xuXAorUmV0dXJucyBhIGxpc3Qgb2YgbmV0d29yayBpbnRlcmZhY2UgaW5mb3JtYXRpb24gKGluZGV4LCBuYW1lKSB0dXBsZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfaWZfbmFtZXRvaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvbmFtZTsKKyAgICB1bnNpZ25lZCBsb25nIGluZGV4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjppZl9uYW1ldG9pbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9uYW1lKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpbmRleCA9IGlmX25hbWV0b2luZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKG9uYW1lKSk7CisgICAgUHlfREVDUkVGKG9uYW1lKTsKKyAgICBpZiAoaW5kZXggPT0gMCkgeworICAgICAgICAvKiBpZl9uYW1ldG9pbmRleCgpIGRvZXNuJ3Qgc2V0IGVycm5vICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAibm8gaW50ZXJmYWNlIHdpdGggdGhpcyBuYW1lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhpbmRleCk7Cit9CisKK1B5RG9jX1NUUlZBUihpZl9uYW1ldG9pbmRleF9kb2MsCisiaWZfbmFtZXRvaW5kZXgoaWZfbmFtZSlcblwKK1xuXAorUmV0dXJucyB0aGUgaW50ZXJmYWNlIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVyZmFjZSBuYW1lIGlmX25hbWUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfaWZfaW5kZXh0b25hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKKyAgICBjaGFyIG5hbWVbSUZfTkFNRVNJWkUgKyAxXTsKKworICAgIGluZGV4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKGFyZyk7CisgICAgaWYgKGluZGV4ID09ICh1bnNpZ25lZCBsb25nKSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaWZfaW5kZXh0b25hbWUoaW5kZXgsIG5hbWUpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChuYW1lKTsKK30KKworUHlEb2NfU1RSVkFSKGlmX2luZGV4dG9uYW1lX2RvYywKKyJpZl9pbmRleHRvbmFtZShpZl9pbmRleClcblwKK1xuXAorUmV0dXJucyB0aGUgaW50ZXJmYWNlIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJmYWNlIGluZGV4IGlmX2luZGV4LiIpOworCisjZW5kaWYgIC8qIEhBVkVfSUZfTkFNRUlOREVYICovCisKKworI2lmZGVmIENNU0dfTEVOCisvKiBQeXRob24gaW50ZXJmYWNlIHRvIENNU0dfTEVOKGxlbmd0aCkuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfQ01TR19MRU4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHNpemVfdCByZXN1bHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46Q01TR19MRU4iLCAmbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGxlbmd0aCA8IDAgfHwgIWdldF9DTVNHX0xFTihsZW5ndGgsICZyZXN1bHQpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLCAiQ01TR19MRU4oKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVIoQ01TR19MRU5fZG9jLAorIkNNU0dfTEVOKGxlbmd0aCkgLT4gY29udHJvbCBtZXNzYWdlIGxlbmd0aFxuXAorXG5cCitSZXR1cm4gdGhlIHRvdGFsIGxlbmd0aCwgd2l0aG91dCB0cmFpbGluZyBwYWRkaW5nLCBvZiBhbiBhbmNpbGxhcnlcblwKK2RhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4gbGVuZ3RoLiAgVGhpcyB2YWx1ZSBjYW5cblwKK29mdGVuIGJlIHVzZWQgYXMgdGhlIGJ1ZmZlciBzaXplIGZvciByZWN2bXNnKCkgdG8gcmVjZWl2ZSBhIHNpbmdsZVxuXAoraXRlbSBvZiBhbmNpbGxhcnkgZGF0YSwgYnV0IFJGQyAzNTQyIHJlcXVpcmVzIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyB0b1xuXAordXNlIENNU0dfU1BBQ0UoKSBhbmQgdGh1cyBpbmNsdWRlIHNwYWNlIGZvciBwYWRkaW5nLCBldmVuIHdoZW4gdGhlXG5cCitpdGVtIHdpbGwgYmUgdGhlIGxhc3QgaW4gdGhlIGJ1ZmZlci4gIFJhaXNlcyBPdmVyZmxvd0Vycm9yIGlmIGxlbmd0aFxuXAoraXMgb3V0c2lkZSB0aGUgcGVybWlzc2libGUgcmFuZ2Ugb2YgdmFsdWVzLiIpOworCisKKyNpZmRlZiBDTVNHX1NQQUNFCisvKiBQeXRob24gaW50ZXJmYWNlIHRvIENNU0dfU1BBQ0UobGVuZ3RoKS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tldF9DTVNHX1NQQUNFKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBzaXplX3QgcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOkNNU0dfU1BBQ0UiLCAmbGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGxlbmd0aCA8IDAgfHwgIWdldF9DTVNHX1NQQUNFKGxlbmd0aCwgJnJlc3VsdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ01TR19TUEFDRSgpIGFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUihDTVNHX1NQQUNFX2RvYywKKyJDTVNHX1NQQUNFKGxlbmd0aCkgLT4gYnVmZmVyIHNpemVcblwKK1xuXAorUmV0dXJuIHRoZSBidWZmZXIgc2l6ZSBuZWVkZWQgZm9yIHJlY3Ztc2coKSB0byByZWNlaXZlIGFuIGFuY2lsbGFyeVxuXAorZGF0YSBpdGVtIHdpdGggYXNzb2NpYXRlZCBkYXRhIG9mIHRoZSBnaXZlbiBsZW5ndGgsIGFsb25nIHdpdGggYW55XG5cCit0cmFpbGluZyBwYWRkaW5nLiAgVGhlIGJ1ZmZlciBzcGFjZSBuZWVkZWQgdG8gcmVjZWl2ZSBtdWx0aXBsZSBpdGVtc1xuXAoraXMgdGhlIHN1bSBvZiB0aGUgQ01TR19TUEFDRSgpIHZhbHVlcyBmb3IgdGhlaXIgYXNzb2NpYXRlZCBkYXRhXG5cCitsZW5ndGhzLiAgUmFpc2VzIE92ZXJmbG93RXJyb3IgaWYgbGVuZ3RoIGlzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlXG5cCityYW5nZSBvZiB2YWx1ZXMuIik7CisjZW5kaWYgICAgLyogQ01TR19TUEFDRSAqLworI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICovCiAKQEAgLTQyNTYsNiArNTQwNCwxMCBAQAogICAgICBNRVRIX1ZBUkFSR1MsIGdldGhvc3RieWFkZHJfZG9jfSwKICAgICB7ImdldGhvc3RuYW1lIiwgICAgICAgICAgICAgc29ja2V0X2dldGhvc3RuYW1lLAogICAgICBNRVRIX05PQVJHUywgIGdldGhvc3RuYW1lX2RvY30sCisjaWZkZWYgSEFWRV9TRVRIT1NUTkFNRQorICAgIHsic2V0aG9zdG5hbWUiLCAgICAgICAgICAgICBzb2NrZXRfc2V0aG9zdG5hbWUsCisgICAgIE1FVEhfVkFSQVJHUywgIHNldGhvc3RuYW1lX2RvY30sCisjZW5kaWYKICAgICB7ImdldHNlcnZieW5hbWUiLCAgICAgICAgICAgc29ja2V0X2dldHNlcnZieW5hbWUsCiAgICAgIE1FVEhfVkFSQVJHUywgZ2V0c2VydmJ5bmFtZV9kb2N9LAogICAgIHsiZ2V0c2VydmJ5cG9ydCIsICAgICAgICAgICBzb2NrZXRfZ2V0c2VydmJ5cG9ydCwKQEAgLTQyOTYsNiArNTQ0OCwyMiBAQAogICAgICBNRVRIX05PQVJHUywgZ2V0ZGVmYXVsdHRpbWVvdXRfZG9jfSwKICAgICB7InNldGRlZmF1bHR0aW1lb3V0IiwgICAgICAgc29ja2V0X3NldGRlZmF1bHR0aW1lb3V0LAogICAgICBNRVRIX08sIHNldGRlZmF1bHR0aW1lb3V0X2RvY30sCisjaWZkZWYgSEFWRV9JRl9OQU1FSU5ERVgKKyAgICB7ImlmX25hbWVpbmRleCIsIHNvY2tldF9pZl9uYW1laW5kZXgsCisgICAgIE1FVEhfTk9BUkdTLCBpZl9uYW1laW5kZXhfZG9jfSwKKyAgICB7ImlmX25hbWV0b2luZGV4Iiwgc29ja2V0X2lmX25hbWV0b2luZGV4LAorICAgICBNRVRIX1ZBUkFSR1MsIGlmX25hbWV0b2luZGV4X2RvY30sCisgICAgeyJpZl9pbmRleHRvbmFtZSIsIHNvY2tldF9pZl9pbmRleHRvbmFtZSwKKyAgICAgTUVUSF9PLCBpZl9pbmRleHRvbmFtZV9kb2N9LAorI2VuZGlmCisjaWZkZWYgQ01TR19MRU4KKyAgICB7IkNNU0dfTEVOIiwgICAgICAgICAgICAgICAgc29ja2V0X0NNU0dfTEVOLAorICAgICBNRVRIX1ZBUkFSR1MsIENNU0dfTEVOX2RvY30sCisjaWZkZWYgQ01TR19TUEFDRQorICAgIHsiQ01TR19TUEFDRSIsICAgICAgICAgICAgICBzb2NrZXRfQ01TR19TUEFDRSwKKyAgICAgTUVUSF9WQVJBUkdTLCBDTVNHX1NQQUNFX2RvY30sCisjZW5kaWYKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC00NDI4LDI3ICs1NTk2LDI0IEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzb2NrZXRfZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC5lcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0lPRXJyb3IsIE5VTEwpOwotICAgIGlmIChzb2NrZXRfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlTb2NrZXRNb2R1bGVBUEkuZXJyb3IgPSBzb2NrZXRfZXJyb3I7Ci0gICAgUHlfSU5DUkVGKHNvY2tldF9lcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIHNvY2tldF9lcnJvcik7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5U29ja2V0TW9kdWxlQVBJLmVycm9yID0gUHlFeGNfT1NFcnJvcjsKKyAgICBQeV9JTkNSRUYoUHlFeGNfT1NFcnJvcik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFB5RXhjX09TRXJyb3IpOwogICAgIHNvY2tldF9oZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC5oZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0X2Vycm9yLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsIE5VTEwpOwogICAgIGlmIChzb2NrZXRfaGVycm9yID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzb2NrZXRfaGVycm9yKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImhlcnJvciIsIHNvY2tldF9oZXJyb3IpOwotICAgIHNvY2tldF9nYWllcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmdhaWVycm9yIiwgc29ja2V0X2Vycm9yLAorICAgIHNvY2tldF9nYWllcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LmdhaWVycm9yIiwgUHlFeGNfT1NFcnJvciwKICAgICAgICAgTlVMTCk7CiAgICAgaWYgKHNvY2tldF9nYWllcnJvciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc29ja2V0X2dhaWVycm9yKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImdhaWVycm9yIiwgc29ja2V0X2dhaWVycm9yKTsKICAgICBzb2NrZXRfdGltZW91dCA9IFB5RXJyX05ld0V4Y2VwdGlvbigic29ja2V0LnRpbWVvdXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF9lcnJvciwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgTlVMTCk7CiAgICAgaWYgKHNvY2tldF90aW1lb3V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5U29ja2V0TW9kdWxlQVBJLnRpbWVvdXRfZXJyb3IgPSBzb2NrZXRfdGltZW91dDsKQEAgLTQ2MzQsNiArNTc5OSwzMSBAQAogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJCREFERFJfTE9DQUwiLCAiMDA6MDA6MDA6RkY6RkY6RkYiKTsKICNlbmRpZgogCisjaWZkZWYgQUZfQ0FOCisgICAgLyogQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfQ0FOIiwgQUZfQ0FOKTsKKyNlbmRpZgorI2lmZGVmIFBGX0NBTgorICAgIC8qIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrICovCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX0NBTiIsIFBGX0NBTik7CisjZW5kaWYKKworLyogUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAqLworI2lmZGVmIEFGX1JEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJBRl9SRFMiLCBBRl9SRFMpOworI2VuZGlmCisjaWZkZWYgUEZfUkRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX1JEUyIsIFBGX1JEUyk7CisjZW5kaWYKKworLyogS2VybmVsIGV2ZW50IG1lc3NhZ2VzICovCisjaWZkZWYgUEZfU1lTVEVNCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBGX1NZU1RFTSIsIFBGX1NZU1RFTSk7CisjZW5kaWYKKyNpZmRlZiBBRl9TWVNURU0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfU1lTVEVNIiwgQUZfU1lTVEVNKTsKKyNlbmRpZgorCiAjaWZkZWYgQUZfUEFDS0VUCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfUEFDS0VUKTsKICNlbmRpZgpAQCAtNDc4Myw2ICs1OTczLDE4IEBACiAjaWZkZWYgIFNPX1NFVEZJQgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19TRVRGSUIiLCBTT19TRVRGSUIpOwogI2VuZGlmCisjaWZkZWYgIFNPX1BBU1NDUkVECisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1BBU1NDUkVEIiwgU09fUEFTU0NSRUQpOworI2VuZGlmCisjaWZkZWYgIFNPX1BFRVJDUkVECisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPX1BFRVJDUkVEIiwgU09fUEVFUkNSRUQpOworI2VuZGlmCisjaWZkZWYgIExPQ0FMX1BFRVJDUkVECisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPQ0FMX1BFRVJDUkVEIiwgTE9DQUxfUEVFUkNSRUQpOworI2VuZGlmCisjaWZkZWYgIFNPX0JJTkRUT0RFVklDRQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0JJTkRUT0RFVklDRSk7CisjZW5kaWYKIAogICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZvciAibGlzdGVuIiAqLwogI2lmZGVmICBTT01BWENPTk4KQEAgLTQ3OTEsNiArNTk5MywxNyBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT01BWENPTk4iLCA1KTsgLyogQ29tbW9uIHZhbHVlICovCiAjZW5kaWYKIAorICAgIC8qIEFuY2lsbGlhcnkgbWVzc2FnZSB0eXBlcyAqLworI2lmZGVmICBTQ01fUklHSFRTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNDTV9SSUdIVFMiLCBTQ01fUklHSFRTKTsKKyNlbmRpZgorI2lmZGVmICBTQ01fQ1JFREVOVElBTFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX0NSRURFTlRJQUxTIiwgU0NNX0NSRURFTlRJQUxTKTsKKyNlbmRpZgorI2lmZGVmICBTQ01fQ1JFRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU0NNX0NSRURTIiwgU0NNX0NSRURTKTsKKyNlbmRpZgorCiAgICAgLyogRmxhZ3MgZm9yIHNlbmQsIHJlY3YgKi8KICNpZmRlZiAgTVNHX09PQgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfT09CIiwgTVNHX09PQik7CkBAIC00ODIyLDYgKzYwMzUsMzMgQEAKICNpZmRlZiAgTVNHX0VUQUcKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VUQUciLCBNU0dfRVRBRyk7CiAjZW5kaWYKKyNpZmRlZiAgTVNHX05PU0lHTkFMCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19OT1NJR05BTCIsIE1TR19OT1NJR05BTCk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX05PVElGSUNBVElPTgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTk9USUZJQ0FUSU9OIiwgTVNHX05PVElGSUNBVElPTik7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0NNU0dfQ0xPRVhFQworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQ01TR19DTE9FWEVDIiwgTVNHX0NNU0dfQ0xPRVhFQyk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0VSUlFVRVVFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19FUlJRVUVVRSIsIE1TR19FUlJRVUVVRSk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0NPTkZJUk0KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0NPTkZJUk0iLCBNU0dfQ09ORklSTSk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX01PUkUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX01PUkUiLCBNU0dfTU9SRSk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0VPRgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRU9GIiwgTVNHX0VPRik7CisjZW5kaWYKKyNpZmRlZiAgTVNHX0JDQVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19CQ0FTVCIsIE1TR19CQ0FTVCk7CisjZW5kaWYKKyNpZmRlZiAgTVNHX01DQVNUCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19NQ0FTVCIsIE1TR19NQ0FTVCk7CisjZW5kaWYKIAogICAgIC8qIFByb3RvY29sIGxldmVsIGFuZCBudW1iZXJzLCB1c2FibGUgZm9yIFtnc11ldHNvY2tvcHQgKi8KICNpZmRlZiAgU09MX1NPQ0tFVApAQCAtNDg1Nyw2ICs2MDk3LDQ5IEBACiAjZWxzZQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfVURQIiwgMTcpOwogI2VuZGlmCisjaWZkZWYgU09MX0NBTl9CQVNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNPTF9DQU5fQkFTRSIsIFNPTF9DQU5fQkFTRSk7CisjZW5kaWYKKyNpZmRlZiBTT0xfQ0FOX1JBVworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfQ0FOX1JBVyIsIFNPTF9DQU5fUkFXKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBVyIsIENBTl9SQVcpOworI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fSAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRUZGX0ZMQUciLCBDQU5fRUZGX0ZMQUcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUlRSX0ZMQUciLCBDQU5fUlRSX0ZMQUcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRVJSX0ZMQUciLCBDQU5fRVJSX0ZMQUcpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9TRkZfTUFTSyIsIENBTl9TRkZfTUFTSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FRkZfTUFTSyIsIENBTl9FRkZfTUFTSyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9FUlJfTUFTSyIsIENBTl9FUlJfTUFTSyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX0ZJTFRFUiIsIENBTl9SQVdfRklMVEVSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19FUlJfRklMVEVSIiwgQ0FOX1JBV19FUlJfRklMVEVSKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19MT09QQkFDSyIsIENBTl9SQVdfTE9PUEJBQ0spOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fUkFXX1JFQ1ZfT1dOX01TR1MiLCBDQU5fUkFXX1JFQ1ZfT1dOX01TR1MpOworI2VuZGlmCisjaWZkZWYgU09MX1JEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfUkRTIiwgU09MX1JEUyk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ0FOQ0VMX1NFTlRfVE8KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NBTkNFTF9TRU5UX1RPIiwgUkRTX0NBTkNFTF9TRU5UX1RPKTsKKyNlbmRpZgorI2lmZGVmIFJEU19HRVRfTVIKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0dFVF9NUiIsIFJEU19HRVRfTVIpOworI2VuZGlmCisjaWZkZWYgUkRTX0ZSRUVfTVIKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0ZSRUVfTVIiLCBSRFNfRlJFRV9NUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkVDVkVSUgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkVDVkVSUiIsIFJEU19SRUNWRVJSKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DT05HX01PTklUT1IKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NPTkdfTU9OSVRPUiIsIFJEU19DT05HX01PTklUT1IpOworI2VuZGlmCisjaWZkZWYgUkRTX0dFVF9NUl9GT1JfREVTVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfR0VUX01SX0ZPUl9ERVNUIiwgUkRTX0dFVF9NUl9GT1JfREVTVCk7CisjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19JUAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX0lQIiwgSVBQUk9UT19JUCk7CiAjZWxzZQpAQCAtNDk2MSw2ICs2MjQ0LDkgQEAKICNpZmRlZiAgSVBQUk9UT19WUlJQCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fVlJSUCIsIElQUFJPVE9fVlJSUCk7CiAjZW5kaWYKKyNpZmRlZiAgSVBQUk9UT19TQ1RQCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fU0NUUCIsIElQUFJPVE9fU0NUUCk7CisjZW5kaWYKICNpZmRlZiAgSVBQUk9UT19CSVAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19CSVAiLCBJUFBST1RPX0JJUCk7CiAjZW5kaWYKQEAgLTQ5NzQsNiArNjI2MCwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX01BWCIsIElQUFJPVE9fTUFYKTsKICNlbmRpZgogCisjaWZkZWYgIFNZU1BST1RPX0NPTlRST0wKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1lTUFJPVE9fQ09OVFJPTCIsIFNZU1BST1RPX0NPTlRST0wpOworI2VuZGlmCisKICAgICAvKiBTb21lIHBvcnQgY29uZmlndXJhdGlvbiAqLwogI2lmZGVmICBJUFBPUlRfUkVTRVJWRUQKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQT1JUX1JFU0VSVkVEIiwgSVBQT1JUX1JFU0VSVkVEKTsKQEAgLTUwNzYsNiArNjM2Niw5IEBACiAjaWZkZWYgIElQX01BWF9NRU1CRVJTSElQUwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9NQVhfTUVNQkVSU0hJUFMiLCBJUF9NQVhfTUVNQkVSU0hJUFMpOwogI2VuZGlmCisjaWZkZWYgIElQX1RSQU5TUEFSRU5UCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQX1RSQU5TUEFSRU5UIiwgSVBfVFJBTlNQQVJFTlQpOworI2VuZGlmCiAKICAgICAvKiBJUHY2IFtnc11ldHNvY2tvcHQgb3B0aW9ucywgZGVmaW5lZCBpbiBSRkMyNTUzICovCiAjaWZkZWYgIElQVjZfSk9JTl9HUk9VUApAQCAtNTIwNiw2ICs2NDk5LDQ0IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQWF9UWVBFIiwgSVBYX1RZUEUpOwogI2VuZGlmCiAKKy8qIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKi8KKyNpZmRlZiBSRFNfQ01TR19SRE1BX0FSR1MKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9BUkdTIiwgUkRTX0NNU0dfUkRNQV9BUkdTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfREVTVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX0RFU1QiLCBSRFNfQ01TR19SRE1BX0RFU1QpOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9NQVAKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9NQVAiLCBSRFNfQ01TR19SRE1BX01BUCk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX1NUQVRVUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX1NUQVRVUyIsIFJEU19DTVNHX1JETUFfU1RBVFVTKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfVVBEQVRFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfVVBEQVRFIiwgUkRTX0NNU0dfUkRNQV9VUERBVEUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfUkVBRFdSSVRFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX1JFQURXUklURSIsIFJEU19SRE1BX1JFQURXUklURSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9GRU5DRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9GRU5DRSIsIFJEU19SRE1BX0ZFTkNFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX0lOVkFMSURBVEUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfSU5WQUxJREFURSIsIFJEU19SRE1BX0lOVkFMSURBVEUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfVVNFX09OQ0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfVVNFX09OQ0UiLCBSRFNfUkRNQV9VU0VfT05DRSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9ET05UV0FJVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9ET05UV0FJVCIsIFJEU19SRE1BX0RPTlRXQUlUKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX05PVElGWV9NRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9OT1RJRllfTUUiLCBSRFNfUkRNQV9OT1RJRllfTUUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfU0lMRU5UCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX1NJTEVOVCIsIFJEU19SRE1BX1NJTEVOVCk7CisjZW5kaWYKKwogICAgIC8qIGdldHthZGRyLG5hbWV9aW5mbyBwYXJhbWV0ZXJzICovCiAjaWZkZWYgRUFJX0FERFJGQU1JTFkKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRUFJX0FERFJGQU1JTFkiLCBFQUlfQUREUkZBTUlMWSk7CkBAIC01MzMyLDcgKzY2NjMsNyBAQAogICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMU307CiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIn07CiAgICAgICAgIGludCBpOwotICAgICAgICBmb3IoaSA9IDA7IGk8c2l6ZW9mKGNvZGVzKS9zaXplb2YoKmNvZGVzKTsgKytpKSB7CisgICAgICAgIGZvcihpID0gMDsgaTxQeV9BUlJBWV9MRU5HVEgoY29kZXMpOyArK2kpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXA7CiAgICAgICAgICAgICB0bXAgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhjb2Rlc1tpXSk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaAppbmRleCBmMDY0Nzk1Li4wNDM1ODc4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKQEAgLTU5LDkgKzU5LDEyIEBACiAjaW5jbHVkZSA8Ymx1ZXRvb3RoLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyMgaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgotIyBpbmNsdWRlIDxuZXQvaWYuaD4KICMgaW5jbHVkZSA8bmV0cGFja2V0L3BhY2tldC5oPgogI2VuZGlmCiAKQEAgLTY5LDYgKzcyLDIxIEBACiAjIGluY2x1ZGUgPGxpbnV4L3RpcGMuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fSAorI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAorI2luY2x1ZGUgPGxpbnV4L2Nhbi9yYXcuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWVNfU1lTX0RPTUFJTl9ICisjaW5jbHVkZSA8c3lzL3N5c19kb21haW4uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0tFUk5fQ09OVFJPTF9ICisjaW5jbHVkZSA8c3lzL2tlcm5fY29udHJvbC5oPgorI2VuZGlmCisKICNpZm5kZWYgUHlfX1NPQ0tFVF9ICiAjZGVmaW5lIFB5X19TT0NLRVRfSAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC0xMDQsNiArMTIyLDcgQEAKIC8qIFNvY2tldCBhZGRyZXNzICovCiB0eXBlZGVmIHVuaW9uIHNvY2tfYWRkciB7CiAgICAgc3RydWN0IHNvY2thZGRyX2luIGluOworICAgIHN0cnVjdCBzb2NrYWRkciBzYTsKICNpZmRlZiBBRl9VTklYCiAgICAgc3RydWN0IHNvY2thZGRyX3VuIHVuOwogI2VuZGlmCkBAIC0xMjMsNiArMTQyLDEyIEBACiAjaWZkZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKICAgICBzdHJ1Y3Qgc29ja2FkZHJfbGwgbGw7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0NBTl9ICisgICAgc3RydWN0IHNvY2thZGRyX2NhbiBjYW47CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19LRVJOX0NPTlRST0xfSAorICAgIHN0cnVjdCBzb2NrYWRkcl9jdGwgY3RsOworI2VuZGlmCiB9IHNvY2tfYWRkcl90OwogCiAvKiBUaGUgb2JqZWN0IGhvbGRpbmcgYSBzb2NrZXQuICBJdCBob2xkcyBzb21lIGV4dHJhIGluZm9ybWF0aW9uLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmUuaCBiL01vZHVsZXMvc3JlLmgKaW5kZXggYWVjOWI1NC4uMDBiNTJhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmUuaAorKysgYi9Nb2R1bGVzL3NyZS5oCkBAIC0xNCwxMiArMTQsOCBAQAogI2luY2x1ZGUgInNyZV9jb25zdGFudHMuaCIKIAogLyogc2l6ZSBvZiBhIGNvZGUgd29yZCAobXVzdCBiZSB1bnNpZ25lZCBzaG9ydCBvciBsYXJnZXIsIGFuZAotICAgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSBQeV9VTklDT0RFIGNoYXJhY3RlcikgKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKKyAgIGxhcmdlIGVub3VnaCB0byBob2xkIGEgVUNTNCBjaGFyYWN0ZXIpICovCiAjZGVmaW5lIFNSRV9DT0RFIFB5X1VDUzQKLSNlbHNlCi0jZGVmaW5lIFNSRV9DT0RFIHVuc2lnbmVkIHNob3J0Ci0jZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X1ZBUl9IRUFECkBAIC0zMCw3ICsyNiw4IEBACiAgICAgUHlPYmplY3QqIHBhdHRlcm47IC8qIHBhdHRlcm4gc291cmNlIChvciBOb25lKSAqLwogICAgIGludCBmbGFnczsgLyogZmxhZ3MgdXNlZCB3aGVuIGNvbXBpbGluZyBwYXR0ZXJuIHNvdXJjZSAqLwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KLQlpbnQgY2hhcnNpemU7IC8qIHBhdHRlcm4gY2hhcnNpemUgKG9yIC0xKSAqLworICAgIGludCBsb2dpY2FsX2NoYXJzaXplOyAvKiBwYXR0ZXJuIGNoYXJzaXplIChvciAtMSkgKi8KKyAgICBpbnQgY2hhcnNpemU7CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgLyogcGF0dGVybiBjb2RlICovCiAgICAgUHlfc3NpemVfdCBjb2Rlc2l6ZTsKQEAgLTcyLDYgKzY5LDcgQEAKICAgICBQeU9iamVjdCogc3RyaW5nOwogICAgIFB5X3NzaXplX3QgcG9zLCBlbmRwb3M7CiAgICAgLyogY2hhcmFjdGVyIHNpemUgKi8KKyAgICBpbnQgbG9naWNhbF9jaGFyc2l6ZTsgLyoga2luZCBvZiB0aGluZzogMSAtIGJ5dGVzLCAyLzQgLSB1bmljb2RlICovCiAgICAgaW50IGNoYXJzaXplOwogICAgIC8qIHJlZ2lzdGVycyAqLwogICAgIFB5X3NzaXplX3QgbGFzdGluZGV4OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYyBiL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKaW5kZXggNWI4Njk2My4uOGI4NzdjZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCkBAIC03MCw3ICs3MCw3IEBACiAKICAgICBQeV9zc2l6ZV90IGFyZ3ZfbGVuLCBzY3JpcHRsZW47CiAgICAgUHlPYmplY3QgKnNjcmlwdG9iajsKLSAgICBQeV9VTklDT0RFICphdHNsYXNoLCAqYXRzdGFydDsKKyAgICBQeV9zc2l6ZV90IHNsYXNoOwogICAgIFB5T2JqZWN0ICphcmd2ID0gUHlTeXNfR2V0T2JqZWN0KCJhcmd2Iik7CiAKICAgICBpZiAoYXJndiA9PSBOVUxMKSB7CkBAIC05MCwxNiArOTAsMTYgQEAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzY3JpcHRvYmopKSB7CiAgICAgICAgIHJldHVybihOVUxMKTsKICAgICB9Ci0gICAgc2NyaXB0bGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNjcmlwdG9iaik7CisgICAgc2NyaXB0bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2NyaXB0b2JqKTsKICAgICBpZiAoc2NyaXB0bGVuID09IDApIHsKICAgICAgICAgcmV0dXJuKE5VTEwpOwogICAgIH0KIAotICAgIGF0c3RhcnQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzY3JpcHRvYmopOwotICAgIGF0c2xhc2ggPSBQeV9VTklDT0RFX3N0cnJjaHIoYXRzdGFydCwgU0VQKTsKLSAgICBpZiAoYXRzbGFzaCkgewotICAgICAgICByZXR1cm4oUHlVbmljb2RlX0Zyb21Vbmljb2RlKGF0c2xhc2ggKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdGxlbiAtIChhdHNsYXNoIC0gYXRzdGFydCkgLSAxKSk7CisgICAgc2xhc2ggPSBQeVVuaWNvZGVfRmluZENoYXIoc2NyaXB0b2JqLCBTRVAsIDAsIHNjcmlwdGxlbiwgLTEpOworICAgIGlmIChzbGFzaCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNsYXNoICE9IC0xKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNjcmlwdG9iaiwgc2xhc2gsIHNjcmlwdGxlbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKHNjcmlwdG9iaik7CiAgICAgICAgIHJldHVybihzY3JpcHRvYmopOwpAQCAtMjkxLDYgKzI5MSw5IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19QSUQiLCAgICAgICAgIExPR19QSUQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQ09OUyIsICAgICAgICBMT0dfQ09OUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19OREVMQVkiLCAgTE9HX05ERUxBWSk7CisjaWZkZWYgTE9HX09ERUxBWQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfT0RFTEFZIiwgIExPR19PREVMQVkpOworI2VuZGlmCiAjaWZkZWYgTE9HX05PV0FJVAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTk9XQUlUIiwgIExPR19OT1dBSVQpOwogI2VuZGlmCkBAIC0zMzEsNSArMzM0LDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19DUk9OIiwgICAgICAgIExPR19DUk9OKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX1VVQ1AiLCAgICAgICAgTE9HX1VVQ1ApOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTkVXUyIsICAgICAgICBMT0dfTkVXUyk7CisKKyNpZmRlZiBMT0dfQVVUSFBSSVYKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0FVVEhQUklWIiwgICAgTE9HX0FVVEhQUklWKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Rlcm1pb3MuYyBiL01vZHVsZXMvdGVybWlvcy5jCmluZGV4IGVkZWI2ZjUuLmI3OGQzM2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGVybWlvcy5jCisrKyBiL01vZHVsZXMvdGVybWlvcy5jCkBAIC05LDExICs5LDYgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8dGVybWlvcy5oPgotI2lmZGVmIF9fb3NmX18KLS8qIE9uIE9TRiwgc3lzL2lvY3RsLmggcmVxdWlyZXMgdGhhdCBzdHJ1Y3QgdGVybWlvIGFscmVhZHkgYmUgZGVmaW5lZCwKLSAqIHNvIHRoaXMgbmVlZHMgdG8gYmUgaW5jbHVkZWQgZmlyc3Qgb24gdGhhdCBwbGF0Zm9ybS4gKi8KLSNpbmNsdWRlIDx0ZXJtaW8uaD4KLSNlbmRpZgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogCiAvKiBIUC1VWCByZXF1aXJlcyB0aGF0IHRoaXMgYmUgaW5jbHVkZWQgdG8gcGljayB1cCBNRENELCBNQ1RTLCBNRFNSLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy90ZXN0Y2FwaV9sb25nLmggYi9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaAppbmRleCBmYTk0ZmQ2Li42YmRkYWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaAorKysgYi9Nb2R1bGVzL3Rlc3RjYXBpX2xvbmcuaApAQCAtMzMsOCArMzMsNyBAQAogICAgICAgICAgICAgdW5zaWduZWQgVFlQRU5BTUUgdWluLCB1b3V0OwogCiAgICAgICAgICAgICAvKiBGb3IgMCwgMSwgMiB1c2UgYmFzZTsgZm9yIDMsIDQsIDUgdXNlIC1iYXNlICovCi0gICAgICAgICAgICB1aW4gPSBqIDwgMyA/IGJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIDogKHVuc2lnbmVkIFRZUEVOQU1FKSgtKFRZUEVOQU1FKWJhc2UpOworICAgICAgICAgICAgdWluID0gaiA8IDMgPyBiYXNlIDogMFUgLSBiYXNlOwogCiAgICAgICAgICAgICAvKiBGb3IgMCAmIDMsIHN1YnRyYWN0IDEuCiAgICAgICAgICAgICAgKiBGb3IgMSAmIDQsIGxlYXZlIGFsb25lLgpAQCAtMTc3LDYgKzE3NiwzMiBAQAogICAgICAgICBQeV9ERUNSRUYob25lKTsKICAgICB9CiAKKyAgICAvKiBUZXN0IEZfUFlfVE9fe1MsVX0gb24gbm9uLXB5bG9uZyBpbnB1dC4gVGhpcyBzaG91bGQgcmFpc2UgYSBUeXBlRXJyb3IuICovCisgICAgeworICAgICAgICBUWVBFTkFNRSBvdXQ7CisgICAgICAgIHVuc2lnbmVkIFRZUEVOQU1FIHVvdXQ7CisKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCisgICAgICAgIG91dCA9IEZfUFlfVE9fUyhQeV9Ob25lKTsKKyAgICAgICAgaWYgKG91dCAhPSAoVFlQRU5BTUUpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICB1b3V0ID0gRl9QWV9UT19VKFB5X05vbmUpOworICAgICAgICBpZiAodW91dCAhPSAodW5zaWduZWQgVFlQRU5BTUUpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSBkaWRuJ3QgY29tcGxhaW4iKTsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICByZXR1cm4gZXJyb3IoIlB5TG9uZ19Bc1hYWChOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJzb21ldGhpbmcgb3RoZXIgdGhhbiBUeXBlRXJyb3IiKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBQeV9ERUNSRUYoUHlfTm9uZSk7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwppbmRleCA2MjZkYjNlLi4xNjE0MDdkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwpAQCAtMSwxMyArMSwyMCBAQAogLyogVGltZSBtb2R1bGUgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIl90aW1lLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCisjaWZkZWYgSEFWRV9TWVNfVElNRVNfSAorI2luY2x1ZGUgPHN5cy90aW1lcy5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisjZW5kaWYKIAogI2lmZGVmIFFVSUNLV0lOCiAjaW5jbHVkZSA8aW8uaD4KQEAgLTIxLDE5ICsyOCw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAKLS8qIGhlbHBlciB0byBhbGxvdyB1cyB0byBpbnRlcnJ1cHQgc2xlZXAoKSBvbiBXaW5kb3dzKi8KLXN0YXRpYyBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gTlVMTDsKLXN0YXRpYyBCT09MIFdJTkFQSSBQeUN0cmxIYW5kbGVyKERXT1JEIGR3Q3RybFR5cGUpCi17Ci0gICAgU2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKLSAgICAvKiBhbGxvdyBvdGhlciBkZWZhdWx0IGhhbmRsZXJzIHRvIGJlIGNhbGxlZC4KLSAgICAgICBEZWZhdWx0IFB5dGhvbiBoYW5kbGVyIHdpbGwgc2V0dXAgdGhlCi0gICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgZXhjZXB0aW9uLgotICAgICovCi0gICAgcmV0dXJuIEZBTFNFOwotfQotc3RhdGljIGxvbmcgbWFpbl90aHJlYWQ7Ci0KICNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKIC8qIFRoZXNlIG92ZXJyaWRlcyBub3QgbmVlZGVkIGZvciBXaW4zMiAqLwogI2RlZmluZSB0aW1lem9uZSBfdGltZXpvbmUKQEAgLTQzLDExICszNyw2IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qICFfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGJlbG93LiAqLwotI3VuZGVmIEhBVkVfQ0xPQ0sKLSNlbmRpZiAvKiBNU19XSU5ET1dTICYmICFkZWZpbmVkKF9fQk9STEFORENfXykgKi8KLQogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAjZGVmaW5lIElOQ0xfRE9TCiAjZGVmaW5lIElOQ0xfRVJST1JTCkBAIC01OCwyMyArNDcsMjIgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPgorI2VuZGlmCisKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCiBzdGF0aWMgaW50IGZsb2F0c2xlZXAoZG91YmxlKTsKLXN0YXRpYyBkb3VibGUgZmxvYXR0aW1lKHZvaWQpOworc3RhdGljIFB5T2JqZWN0KiBmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbyk7CiAKLS8qIEZvciBZMksgY2hlY2sgKi8KLXN0YXRpYyBQeU9iamVjdCAqbW9kZGljdDsKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV90aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIGRvdWJsZSBzZWNzOwotICAgIHNlY3MgPSBmbG9hdHRpbWUoKTsKLSAgICBpZiAoc2VjcyA9PSAwLjApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKKyAgICByZXR1cm4gZmxvYXR0aW1lKE5VTEwpOwogfQogCiBQeURvY19TVFJWQVIodGltZV9kb2MsCkBAIC04Myw3ICs3MSw3IEBACiBSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC5cblwKIEZyYWN0aW9ucyBvZiBhIHNlY29uZCBtYXkgYmUgcHJlc2VudCBpZiB0aGUgc3lzdGVtIGNsb2NrIHByb3ZpZGVzIHRoZW0uIik7CiAKLSNpZmRlZiBIQVZFX0NMT0NLCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLKQogCiAjaWZuZGVmIENMT0NLU19QRVJfU0VDCiAjaWZkZWYgQ0xLX1RDSwpAQCAtOTQsNDIgKzgyLDgyIEBACiAjZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfY2xvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitmbG9hdGNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvIENMT0NLU19QRVJfU0VDKTsKKyAgICBjbG9ja190IHZhbHVlOworICAgIHZhbHVlID0gY2xvY2soKTsKKyAgICBpZiAodmFsdWUgPT0gKGNsb2NrX3QpLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidGhlIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSAiCisgICAgICAgICAgICAgICAgIm9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wIC8gKGRvdWJsZSlDTE9DS1NfUEVSX1NFQzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl2YWx1ZSAvIENMT0NLU19QRVJfU0VDKTsKIH0KICNlbmRpZiAvKiBIQVZFX0NMT0NLICovCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKF9fQk9STEFORENfXykKLS8qIER1ZSB0byBNYXJrIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2Nsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorI2RlZmluZSBXSU4zMl9QRVJGX0NPVU5URVIKKy8qIFdpbjMyIGhhcyBiZXR0ZXIgY2xvY2sgcmVwbGFjZW1lbnQ7IHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uLCBkdWUgdG8gTWFyaworICAgSGFtbW9uZCBhbmQgVGltIFBldGVycyAqLworc3RhdGljIGludAord2luX3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvLCBQeU9iamVjdCAqKnJlc3VsdCkKIHsKLSAgICBzdGF0aWMgTEFSR0VfSU5URUdFUiBjdHJTdGFydDsKLSAgICBzdGF0aWMgZG91YmxlIGRpdmlzb3IgPSAwLjA7CisgICAgc3RhdGljIExPTkdMT05HIGNwdV9mcmVxdWVuY3kgPSAwOworICAgIHN0YXRpYyBMT05HTE9ORyBjdHJTdGFydDsKICAgICBMQVJHRV9JTlRFR0VSIG5vdzsKICAgICBkb3VibGUgZGlmZjsKIAotICAgIGlmIChkaXZpc29yID09IDAuMCkgeworICAgIGlmIChjcHVfZnJlcXVlbmN5ID09IDApIHsKICAgICAgICAgTEFSR0VfSU5URUdFUiBmcmVxOwotICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmY3RyU3RhcnQpOworICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKKyAgICAgICAgY3RyU3RhcnQgPSBub3cuUXVhZFBhcnQ7CiAgICAgICAgIGlmICghUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcSkgfHwgZnJlcS5RdWFkUGFydCA9PSAwKSB7CiAgICAgICAgICAgICAvKiBVbmxpa2VseSB0byBoYXBwZW4gLSB0aGlzIHdvcmtzIG9uIGFsbCBpbnRlbAogICAgICAgICAgICAgICAgbWFjaGluZXMgYXQgbGVhc3QhICBSZXZlcnQgdG8gY2xvY2soKSAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoKGRvdWJsZSljbG9jaygpKSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT0NLU19QRVJfU0VDKTsKKyAgICAgICAgICAgICpyZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGRpdmlzb3IgPSAoZG91YmxlKWZyZXEuUXVhZFBhcnQ7CisgICAgICAgIGNwdV9mcmVxdWVuY3kgPSBmcmVxLlF1YWRQYXJ0OwogICAgIH0KICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKLSAgICBkaWZmID0gKGRvdWJsZSkobm93LlF1YWRQYXJ0IC0gY3RyU3RhcnQuUXVhZFBhcnQpOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIGRpdmlzb3IpOworICAgIGRpZmYgPSAoZG91YmxlKShub3cuUXVhZFBhcnQgLSBjdHJTdGFydCk7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjAgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3k7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICAqcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyAoZG91YmxlKWNwdV9mcmVxdWVuY3kpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikgfHwgZGVmaW5lZChIQVZFX0NMT0NLKQorI2RlZmluZSBQWUNMT0NLCitzdGF0aWMgUHlPYmplY3QqCitweWNsb2NrKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWZkZWYgV0lOMzJfUEVSRl9DT1VOVEVSCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAod2luX3BlcmZfY291bnRlcihpbmZvLCAmcmVzKSA9PSAwKQorICAgICAgICByZXR1cm4gcmVzOworI2VuZGlmCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CiB9CiAKLSNkZWZpbmUgSEFWRV9DTE9DSyAvKiBTbyBpdCBnZXRzIGluY2x1ZGVkIGluIHRoZSBtZXRob2RzICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICovCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHljbG9jayhOVUxMKTsKK30KIAotI2lmZGVmIEhBVkVfQ0xPQ0sKIFB5RG9jX1NUUlZBUihjbG9ja19kb2MsCiAiY2xvY2soKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXApAQCAtMTM4LDEyICsxNjYsOTMgQEAKIHJlY29yZHMuIik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfZ2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXR0aW1lIiwgJmNsa19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gY2xvY2tfZ2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKKyAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXR0aW1lX2RvYywKKyJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCitcblwKK1JldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2tfc2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGNsa19pZDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyAgICBpbnQgcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjbG9ja19zZXR0aW1lIiwgJmNsa19pZCwgJm9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZ0cC50dl9zZWMsICZ0cC50dl9uc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19zZXR0aW1lKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGNsb2NrX3NldHRpbWVfZG9jLAorImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAorXG5cCitTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrX2dldHJlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHJldDsKKyAgICBpbnQgY2xrX2lkOworICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjbG9ja19nZXRyZXMiLCAmY2xrX2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBjbG9ja19nZXRyZXMoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CisgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19nZXRyZXNfZG9jLAorImNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAorXG5cCitSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGRvdWJsZSBzZWNzOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDpzbGVlcCIsICZzZWNzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNlY3MgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGZsb2F0c2xlZXAoc2VjcykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMTY2LDYgKzI3NSwxMCBAQAogICAgIHsidG1fd2RheSIsICJkYXkgb2Ygd2VlaywgcmFuZ2UgWzAsIDZdLCBNb25kYXkgaXMgMCJ9LAogICAgIHsidG1feWRheSIsICJkYXkgb2YgeWVhciwgcmFuZ2UgWzEsIDM2Nl0ifSwKICAgICB7InRtX2lzZHN0IiwgIjEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24ifSwKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgeyJ0bV96b25lIiwgImFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lIn0sCisgICAgeyJ0bV9nbXRvZmYiLCAib2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMifSwKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgezB9CiB9OwogCkBAIC0xODUsNiArMjk4LDcgQEAKIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQ7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFN0cnVjdFRpbWVUeXBlOwogCisKIHN0YXRpYyBQeU9iamVjdCAqCiB0bXRvdHVwbGUoc3RydWN0IHRtICpwKQogewpAQCAtMjAzLDYgKzMxNywxMSBAQAogICAgIFNFVCg2LCAocC0+dG1fd2RheSArIDYpICUgNyk7IC8qIFdhbnQgTW9uZGF5ID09IDAgKi8KICAgICBTRVQoNywgcC0+dG1feWRheSArIDEpOyAgICAgICAgLyogV2FudCBKYW51YXJ5LCAxID09IDEgKi8KICAgICBTRVQoOCwgcC0+dG1faXNkc3QpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCisgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocC0+dG1fem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKKyAgICBTRVQoMTAsIHAtPnRtX2dtdG9mZik7CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI3VuZGVmIFNFVAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X1hERUNSRUYodik7CkBAIC0yMTIsNTUgKzMzMSw0OSBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGltZV9jb252ZXJ0KGRvdWJsZSB3aGVuLCBzdHJ1Y3QgdG0gKiAoKmZ1bmN0aW9uKShjb25zdCB0aW1lX3QgKikpCi17Ci0gICAgc3RydWN0IHRtICpwOwotICAgIHRpbWVfdCB3aGVudCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh3aGVuKTsKLQotICAgIGlmICh3aGVudCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGVycm5vID0gMDsKLSAgICBwID0gZnVuY3Rpb24oJndoZW50KTsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRtdG90dXBsZShwKTsKLX0KLQogLyogUGFyc2UgYXJnIHR1cGxlIHRoYXQgY2FuIGNvbnRhaW4gYW4gb3B0aW9uYWwgZmxvYXQtb3ItTm9uZSB2YWx1ZTsKICAgIGZvcm1hdCBuZWVkcyB0byBiZSAifE86bmFtZSIuCiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX2RvdWJsZV9hcmdzKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIGRvdWJsZSAqcHdoZW4pCitwYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CisgICAgdGltZV90IHdoZW50OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIGZvcm1hdCwgJm90KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgKnB3aGVuID0gZmxvYXR0aW1lKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGRvdWJsZSB3aGVuID0gUHlGbG9hdF9Bc0RvdWJsZShvdCk7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpwd2hlbiA9IHdoZW47CisgICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkgeworICAgICAgICB3aGVudCA9IHRpbWUoTlVMTCk7CiAgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqcHdoZW4gPSB3aGVudDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfZ210aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgd2hlbjsKLSAgICBpZiAoIXBhcnNlX3RpbWVfZG91YmxlX2FyZ3MoYXJncywgInxPOmdtdGltZSIsICZ3aGVuKSkKKyAgICB0aW1lX3Qgd2hlbjsKKyAgICBzdHJ1Y3QgdG0gYnVmLCAqbG9jYWw7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgZ210aW1lKTsKKworICAgIGVycm5vID0gMDsKKyAgICBsb2NhbCA9IGdtdGltZSgmd2hlbik7CisgICAgaWYgKGxvY2FsID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKyAgICBidWYgPSAqbG9jYWw7CisgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCkBAIC0yNjgsMTUgKzM4MSw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXAogXG5cCiBDb252ZXJ0IHNlY29uZHMgc2luY2UgdGhlIEVwb2NoIHRvIGEgdGltZSB0dXBsZSBleHByZXNzaW5nIFVUQyAoYS5rLmEuXG5cCi1HTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuIik7CitHTVQpLiAgV2hlbiAnc2Vjb25kcycgaXMgbm90IHBhc3NlZCBpbiwgY29udmVydCB0aGUgY3VycmVudCB0aW1lIGluc3RlYWQuXG5cCitcblwKK0lmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdG1fZ210b2ZmIGFuZCB0bV96b25lLCB0aGV5IGFyZSBhdmFpbGFibGUgYXNcblwKK2F0dHJpYnV0ZXMgb25seS4iKTsKKworc3RhdGljIGludAorcHlsb2NhbHRpbWUodGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCit7CisgICAgc3RydWN0IHRtICpsb2NhbDsKKworICAgIGFzc2VydCAodGltZXAgIT0gTlVMTCk7CisgICAgbG9jYWwgPSBsb2NhbHRpbWUodGltZXApOworICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7CisgICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAqcmVzdWx0ID0gKmxvY2FsOworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9sb2NhbHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB3aGVuOwotICAgIGlmICghcGFyc2VfdGltZV9kb3VibGVfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQorICAgIHRpbWVfdCB3aGVuOworICAgIHN0cnVjdCB0bSBidWY7CisKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiB0aW1lX2NvbnZlcnQod2hlbiwgbG9jYWx0aW1lKTsKKyAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTMwNyw1MyArNDQ3LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICZwLT50bV9ob3VyLCAmcC0+dG1fbWluLCAmcC0+dG1fc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmcC0+dG1fd2RheSwgJnAtPnRtX3lkYXksICZwLT50bV9pc2RzdCkpCiAgICAgICAgIHJldHVybiAwOwotCi0gICAgLyogSWYgeWVhciBpcyBzcGVjaWZpZWQgd2l0aCBsZXNzIHRoYW4gNCBkaWdpdHMsIGl0cyBpbnRlcnByZXRhdGlvbgotICAgICAqIGRlcGVuZHMgb24gdGhlIGFjY2VwdDJkeWVhciB2YWx1ZS4KLSAgICAgKgotICAgICAqIElmIGFjY2VwdDJkeWVhciBpcyB0cnVlIChkZWZhdWx0KSwgYSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGJlaGF2aW9yIGlzCi0gICAgICogaW52b2tlZCBhcyBmb2xsb3dzOgotICAgICAqCi0gICAgICogICAtIGZvciAyLWRpZ2l0IHllYXIsIGNlbnR1cnkgaXMgZ3Vlc3NlZCBhY2NvcmRpbmcgdG8gUE9TSVggcnVsZXMgZm9yCi0gICAgICogICAgICAleSBzdHJwdGltZSBmb3JtYXQ6IDIxc3QgY2VudHVyeSBmb3IgeSA8IDY5LCAyMHRoIGNlbnR1cnkKLSAgICAgKiAgICAgIG90aGVyd2lzZS4gIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBpc3N1ZWQgd2hlbiBjZW50dXJ5Ci0gICAgICogICAgICBpbmZvcm1hdGlvbiBpcyBndWVzc2VkIGluIHRoaXMgd2F5LgotICAgICAqCi0gICAgICogICAtIGZvciAzLWRpZ2l0IG9yIG5lZ2F0aXZlIHllYXIsIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLgotICAgICAqCi0gICAgICogSWYgYWNjZXB0MmR5ZWFyIGlzIGZhbHNlIChzZXQgYnkgdGhlIHByb2dyYW0gb3IgYXMgYSByZXN1bHQgb2YgYQotICAgICAqIG5vbi1lbXB0eSB2YWx1ZSBhc3NpZ25lZCB0byBQWVRIT05ZMksgZW52aXJvbm1lbnQgdmFyaWFibGUpIGFsbCB5ZWFyCi0gICAgICogdmFsdWVzIGFyZSBpbnRlcnByZXRlZCBhcyBnaXZlbi4KLSAgICAgKi8KLSAgICBpZiAoeSA8IDEwMDApIHsKLSAgICAgICAgUHlPYmplY3QgKmFjY2VwdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZGRpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXB0MmR5ZWFyIik7Ci0gICAgICAgIGlmIChhY2NlcHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IGFjY2VwdHZhbCA9ICBQeU9iamVjdF9Jc1RydWUoYWNjZXB0KTsKLSAgICAgICAgICAgIGlmIChhY2NlcHR2YWwgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBpZiAoYWNjZXB0dmFsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKDAgPD0geSAmJiB5IDwgNjkpCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMjAwMDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICg2OSA8PSB5ICYmIHkgPCAxMDApCi0gICAgICAgICAgICAgICAgICAgIHkgKz0gMTkwMDsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieWVhciBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNlbnR1cnkgaW5mbyBndWVzc2VkIGZvciBhIDItZGlnaXQgeWVhci4iLCAxKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgcC0+dG1feWVhciA9IHkgLSAxOTAwOwogICAgIHAtPnRtX21vbi0tOwogICAgIHAtPnRtX3dkYXkgPSAocC0+dG1fd2RheSArIDEpICUgNzsKICAgICBwLT50bV95ZGF5LS07CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIGlmIChQeV9UWVBFKGFyZ3MpID09ICZTdHJ1Y3RUaW1lVHlwZSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgOSk7CisgICAgICAgIHAtPnRtX3pvbmUgPSBpdGVtID09IFB5X05vbmUgPyBOVUxMIDogX1B5VW5pY29kZV9Bc1N0cmluZyhpdGVtKTsKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMTApOworICAgICAgICBwLT50bV9nbXRvZmYgPSBpdGVtID09IFB5X05vbmUgPyAwIDogUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHJldHVybiAxOwogfQogCkBAIC00NzAsNyArNTc4LDggQEAKIAogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5OCw3ICs2MDcsNyBAQAogICAgIGZtdCA9IGZvcm1hdDsKICNlbHNlCiAgICAgLyogQ29udmVydCB0aGUgdW5pY29kZSBzdHJpbmcgdG8gYW4gYXNjaWkgb25lICovCi0gICAgZm9ybWF0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChmb3JtYXRfYXJnKTsKKyAgICBmb3JtYXQgPSBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKGZvcm1hdF9hcmcsICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7CkBAIC01NDksNyArNjU4LDggQEAKICNpZmRlZiBIQVZFX1dDU0ZUSU1FCiAgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG91dGJ1ZiwgYnVmbGVuKTsKICNlbHNlCi0gICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShvdXRidWYsIGJ1Zmxlbik7CisgICAgICAgICAgICByZXQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShvdXRidWYsIGJ1ZmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgogICAgICAgICAgICAgUHlNZW1fRnJlZShvdXRidWYpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01ODcsMTEgKzY5NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpzdHJwdGltZV9tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJfc3RycHRpbWUiKTsKICAgICBQeU9iamVjdCAqc3RycHRpbWVfcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9zdHJwdGltZV90aW1lKTsKIAogICAgIGlmICghc3RycHRpbWVfbW9kdWxlKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJwdGltZV9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0cnB0aW1lX21vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9zdHJwdGltZV90aW1lIiwgIk8iLCBhcmdzKTsKKyAgICBzdHJwdGltZV9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cnB0aW1lX21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19zdHJwdGltZV90aW1lLCAiTyIsIGFyZ3MpOwogICAgIFB5X0RFQ1JFRihzdHJwdGltZV9tb2R1bGUpOwogICAgIHJldHVybiBzdHJwdGltZV9yZXN1bHQ7CiB9CkBAIC02MDgsMzEgKzcxOSwyMCBAQAogewogICAgIC8qIEluc3BpcmVkIGJ5IE9wZW4gR3JvdXAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhdAogICAgICAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL2FzY3RpbWUuaHRtbCAqLwotICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVszXSA9IHsKKyAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CiAgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCiAgICAgfTsKLSAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bM10gPSB7CisgICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzRdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKLSAgICBjaGFyIGJ1ZlsyMF07IC8qICdTdW4gU2VwIDE2IDAxOjAzOjUyXDAnICovCi0gICAgaW50IG47Ci0KLSAgICBuID0gUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJS4zcyAlLjNzJTNkICUuMmQ6JS4yZDolLjJkIiwKLSAgICAgICAgICAgICAgICAgICAgICB3ZGF5X25hbWVbdGltZXB0ci0+dG1fd2RheV0sCi0gICAgICAgICAgICAgICAgICAgICAgbW9uX25hbWVbdGltZXB0ci0+dG1fbW9uXSwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgIHRpbWVwdHItPnRtX21pbiwgdGltZXB0ci0+dG1fc2VjKTsKLSAgICAvKiBYWFg6IHNpbmNlIHRoZSBmaWVsZHMgdXNlZCBieSBzbnByaW50ZiBhYm92ZSBhcmUgdmFsaWRhdGVkIGluIGNoZWNrdG0sCi0gICAgICogdGhlIGZvbGxvd2luZyBjb25kaXRpb24gc2hvdWxkIG5ldmVyIHRyaWdnZXIuIFdlIGtlZXAgdGhlIGNoZWNrIGJlY2F1c2UKLSAgICAgKiBoaXN0b3JpY2FsbHkgZml4ZWQgc2l6ZSBidWZmZXIgdXNlZCBpbiBhc2N0aW1lIHdhcyB0aGUgc291cmNlIG9mCi0gICAgICogY3Jhc2hlcy4gKi8KLSAgICBpZiAobiArIDEgIT0gc2l6ZW9mKGJ1ZikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmNvbnZlcnRpYmxlIHRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyAlZCIsIGJ1ZiwgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiVzICVzJTNkICUuMmQ6JS4yZDolLjJkICVkIiwKKyAgICAgICAgd2RheV9uYW1lW3RpbWVwdHItPnRtX3dkYXldLAorICAgICAgICBtb25fbmFtZVt0aW1lcHRyLT50bV9tb25dLAorICAgICAgICB0aW1lcHRyLT50bV9tZGF5LCB0aW1lcHRyLT50bV9ob3VyLAorICAgICAgICB0aW1lcHRyLT50bV9taW4sIHRpbWVwdHItPnRtX3NlYywKKyAgICAgICAgMTkwMCArIHRpbWVwdHItPnRtX3llYXIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjQ1LDcgKzc0NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBidWYgPSAqbG9jYWx0aW1lKCZ0dCk7CisgICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CkBAIC02NjEsMjggKzc2MywxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY3RpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHR0OwotICAgIHN0cnVjdCB0bSAqdGltZXB0cjsKLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImN0aW1lIiwgMCwgMSwgJm90KSkKKyAgICBzdHJ1Y3QgdG0gYnVmOworICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmN0aW1lIiwgJnR0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG90ID09IE5VTEwgfHwgb3QgPT0gUHlfTm9uZSkKLSAgICAgICAgdHQgPSB0aW1lKE5VTEwpOwotICAgIGVsc2UgewotICAgICAgICBkb3VibGUgZHQgPSBQeUZsb2F0X0FzRG91YmxlKG90KTsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdHQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQoZHQpOwotICAgICAgICBpZiAodHQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHRpbWVwdHIgPSBsb2NhbHRpbWUoJnR0KTsKLSAgICBpZiAodGltZXB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5jb252ZXJ0aWJsZSB0aW1lIik7CisgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gX2FzY3RpbWUodGltZXB0cik7CisgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQogCiBQeURvY19TVFJWQVIoY3RpbWVfZG9jLApAQCAtNzE1LDcgKzgwMiwxMCBAQAogUHlEb2NfU1RSVkFSKG1rdGltZV9kb2MsCiAibWt0aW1lKHR1cGxlKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKIFxuXAotQ29udmVydCBhIHRpbWUgdHVwbGUgaW4gbG9jYWwgdGltZSB0byBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaC4iKTsKK0NvbnZlcnQgYSB0aW1lIHR1cGxlIGluIGxvY2FsIHRpbWUgdG8gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guXG5cCitOb3RlIHRoYXQgbWt0aW1lKGdtdGltZSgwKSkgd2lsbCBub3QgZ2VuZXJhbGx5IHJldHVybiB6ZXJvIGZvciBtb3N0XG5cCit0aW1lIHpvbmVzOyBpbnN0ZWFkIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGVpdGhlciBiZSBlcXVhbCB0byB0aGF0XG5cCitvZiB0aGUgdGltZXpvbmUgb3IgYWx0em9uZSBhdHRyaWJ1dGVzIG9uIHRoZSB0aW1lIG1vZHVsZS4iKTsKICNlbmRpZiAvKiBIQVZFX01LVElNRSAqLwogCiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCkBAIC03NTUsNiArODQ1LDQwMiBAQAogc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIik7CiAjZW5kaWYgLyogSEFWRV9XT1JLSU5HX1RaU0VUICovCiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCisgICAgfHwgKGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCisgICAgICAgICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkpCisjZGVmaW5lIFBZTU9OT1RPTklDCisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCitzdGF0aWMgUHlPYmplY3QqCitweW1vbm90b25pYyhfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBzdGF0aWMgVUxPTkdMT05HICgqR2V0VGlja0NvdW50NjQpICh2b2lkKSA9IE5VTEw7CisgICAgc3RhdGljIFVMT05HTE9ORyAoQ0FMTEJBQ0sgKlB5X0dldFRpY2tDb3VudDY0KSh2b2lkKTsKKyAgICBzdGF0aWMgaW50IGhhc19nZXRpY2tjb3VudDY0ID0gLTE7CisgICAgZG91YmxlIHJlc3VsdDsKKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCA9PSAtMSkgeworICAgICAgICAvKiBHZXRUaWNrQ291bnQ2NCgpIHdhcyBhZGRlZCB0byBXaW5kb3dzIFZpc3RhICovCisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikgeworICAgICAgICAgICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKKyAgICAgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0VGlja0NvdW50NjQgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAoUHlfR2V0VGlja0NvdW50NjQgIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFzX2dldGlja2NvdW50NjQgPSAwOworICAgIH0KKworICAgIGlmIChoYXNfZ2V0aWNrY291bnQ2NCkgeworICAgICAgICBVTE9OR0xPTkcgdGlja3M7CisgICAgICAgIHRpY2tzID0gUHlfR2V0VGlja0NvdW50NjQoKTsKKyAgICAgICAgcmVzdWx0ID0gKGRvdWJsZSl0aWNrcyAqIDFlLTM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGF0aWMgRFdPUkQgbGFzdF90aWNrcyA9IDA7CisgICAgICAgIHN0YXRpYyBEV09SRCBuX292ZXJmbG93ID0gMDsKKyAgICAgICAgRFdPUkQgdGlja3M7CisKKyAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgaWYgKHRpY2tzIDwgbGFzdF90aWNrcykKKyAgICAgICAgICAgIG5fb3ZlcmZsb3crKzsKKyAgICAgICAgbGFzdF90aWNrcyA9IHRpY2tzOworCisgICAgICAgIHJlc3VsdCA9IGxkZXhwKG5fb3ZlcmZsb3csIDMyKTsKKyAgICAgICAgcmVzdWx0ICs9IHRpY2tzOworICAgICAgICByZXN1bHQgKj0gMWUtMzsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworICAgICAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpCisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRUaWNrQ291bnQ2NCgpIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50KCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyZXN1bHQpOworCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKKyAgICB1aW50NjRfdCB0aW1lOworICAgIGRvdWJsZSBzZWNzOworCisgICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90CisgICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLworICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKKyAgICB9CisKKyAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisgICAgc2VjcyA9IChkb3VibGUpdGltZSAqIHRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIm1hY2hfYWJzb2x1dGVfdGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IChkb3VibGUpdGltZWJhc2UubnVtZXIgLyB0aW1lYmFzZS5kZW5vbSAqIDFlLTk7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY3MpOworCisjZWxpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgJiYgKGRlZmluZWQoQ0xPQ0tfSElHSFJFUykgfHwgZGVmaW5lZChDTE9DS19NT05PVE9OSUMpKQorICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7CisgICAgY29uc3QgY2hhciAqZnVuY3Rpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKKyNlbmRpZgorCisgICAgaWYgKGNsb2NrX2dldHRpbWUoY2xrX2lkLCAmdHApICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoaW5mbykgeworICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9IGZ1bmN0aW9uOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhjbGtfaWQsICZyZXMpID09IDApCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX21vbm90b25pYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHltb25vdG9uaWMoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihtb25vdG9uaWNfZG9jLAorIm1vbm90b25pYygpIC0+IGZsb2F0XG5cCitcblwKK01vbm90b25pYyBjbG9jaywgY2Fubm90IGdvIGJhY2t3YXJkLiIpOworI2VuZGlmICAgLyogUFlNT05PVE9OSUMgKi8KKworc3RhdGljIFB5T2JqZWN0KgorcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoUFlNT05PVE9OSUMpCisgICAgUHlPYmplY3QgKnJlczsKKyNlbmRpZgorI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKQorICAgIHN0YXRpYyBpbnQgdXNlX3BlcmZfY291bnRlciA9IDE7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIHN0YXRpYyBpbnQgdXNlX21vbm90b25pYyA9IDE7CisjZW5kaWYKKworI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgorICAgIGlmICh1c2VfcGVyZl9jb3VudGVyKSB7CisgICAgICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB1c2VfcGVyZl9jb3VudGVyID0gMDsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIFBZTU9OT1RPTklDCisgICAgaWYgKHVzZV9tb25vdG9uaWMpIHsKKyAgICAgICAgcmVzID0gcHltb25vdG9uaWMoaW5mbyk7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIHVzZV9tb25vdG9uaWMgPSAwOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0dGltZShpbmZvKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcGVyZl9jb3VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBwZXJmX2NvdW50ZXIoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwZXJmX2NvdW50ZXJfZG9jLAorInBlcmZfY291bnRlcigpIC0+IGZsb2F0XG5cCitcblwKK1BlcmZvcm1hbmNlIGNvdW50ZXIgZm9yIGJlbmNobWFya2luZy4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorcHlfcHJvY2Vzc190aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIEhBTkRMRSBwcm9jZXNzOworICAgIEZJTEVUSU1FIGNyZWF0aW9uX3RpbWUsIGV4aXRfdGltZSwga2VybmVsX3RpbWUsIHVzZXJfdGltZTsKKyAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKKyAgICBkb3VibGUgdG90YWw7CisgICAgQk9PTCBvazsKKworICAgIHByb2Nlc3MgPSBHZXRDdXJyZW50UHJvY2VzcygpOworICAgIG9rID0gR2V0UHJvY2Vzc1RpbWVzKHByb2Nlc3MsICZjcmVhdGlvbl90aW1lLCAmZXhpdF90aW1lLCAma2VybmVsX3RpbWUsICZ1c2VyX3RpbWUpOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIGxhcmdlLnUuTG93UGFydCA9IGtlcm5lbF90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IGtlcm5lbF90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsID0gKGRvdWJsZSlsYXJnZS5RdWFkUGFydDsKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSB1c2VyX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gdXNlcl90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIHRvdGFsICs9IChkb3VibGUpbGFyZ2UuUXVhZFBhcnQ7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0UHJvY2Vzc1RpbWVzKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNzsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodG90YWwgKiAxZS03KTsKKyNlbHNlCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JFU09VUkNFX0gpCisgICAgc3RydWN0IHJ1c2FnZSBydTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfVElNRVMKKyAgICBzdHJ1Y3QgdG1zIHQ7CisgICAgc3RhdGljIGxvbmcgdGlja3NfcGVyX3NlY29uZCA9IC0xOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgXAorICAgICYmIChkZWZpbmVkKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCkgfHwgZGVmaW5lZChDTE9DS19QUk9GKSkKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisjaWZkZWYgQ0xPQ0tfUFJPRgorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19QUk9GOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPRikiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKSI7CisjZW5kaWYKKworICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworICAgIH0KKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19SRVNPVVJDRV9IKQorICAgIGlmIChnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZydSkgPT0gMCkgeworICAgICAgICBkb3VibGUgdG90YWw7CisgICAgICAgIHRvdGFsID0gcnUucnVfdXRpbWUudHZfc2VjICsgcnUucnVfdXRpbWUudHZfdXNlYyAqIDFlLTY7CisgICAgICAgIHRvdGFsICs9IHJ1LnJ1X3N0aW1lLnR2X3NlYyArIHJ1LnJ1X3N0aW1lLnR2X3VzZWMgKiAxZS02OworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0cnVzYWdlKFJVU0FHRV9TRUxGKSI7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfVElNRVMKKyAgICBpZiAodGltZXMoJnQpICE9IChjbG9ja190KS0xKSB7CisgICAgICAgIGRvdWJsZSB0b3RhbDsKKworICAgICAgICBpZiAodGlja3NfcGVyX3NlY29uZCA9PSAtMSkgeworI2lmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKF9TQ19DTEtfVENLKQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOworICAgICAgICAgICAgaWYgKHRpY2tzX3Blcl9zZWNvbmQgPCAxKQorICAgICAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKKyNlbGlmIGRlZmluZWQoSFopCisgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gSFo7CisjZWxzZQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IDYwOyAvKiBtYWdpYyBmYWxsYmFjayB2YWx1ZTsgbWF5IGJlIGJvZ3VzICovCisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aWNrc19wZXJfc2Vjb25kICE9IC0xKSB7CisgICAgICAgICAgICB0b3RhbCA9IChkb3VibGUpdC50bXNfdXRpbWUgLyB0aWNrc19wZXJfc2Vjb25kOworICAgICAgICAgICAgdG90YWwgKz0gKGRvdWJsZSl0LnRtc19zdGltZSAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gInRpbWVzKCkiOworICAgICAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMCAvIHRpY2tzX3Blcl9zZWNvbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcHJvY2Vzc190aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIHJldHVybiBweV9wcm9jZXNzX3RpbWUoTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihwcm9jZXNzX3RpbWVfZG9jLAorInByb2Nlc3NfdGltZSgpIC0+IGZsb2F0XG5cCitcblwKK1Byb2Nlc3MgdGltZSBmb3IgcHJvZmlsaW5nOiBzdW0gb2YgdGhlIGtlcm5lbCBhbmQgdXNlci1zcGFjZSBDUFUgdGltZS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9nZXRfY2xvY2tfaW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqbmFtZTsKKyAgICBfUHlfY2xvY2tfaW5mb190IGluZm87CisgICAgUHlPYmplY3QgKm9iaiA9IE5VTEwsICpkaWN0LCAqbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0X2Nsb2NrX2luZm8iLCAmbmFtZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgUHlfREVCVUcKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uID0gTlVMTDsKKyAgICBpbmZvLm1vbm90b25pYyA9IC0xOworICAgIGluZm8uYWRqdXN0YWJsZSA9IC0xOworICAgIGluZm8ucmVzb2x1dGlvbiA9IC0xLjA7CisjZWxzZQorICAgIGluZm8uaW1wbGVtZW50YXRpb24gPSAiIjsKKyAgICBpbmZvLm1vbm90b25pYyA9IDA7CisgICAgaW5mby5hZGp1c3RhYmxlID0gMDsKKyAgICBpbmZvLnJlc29sdXRpb24gPSAxLjA7CisjZW5kaWYKKworICAgIGlmIChzdHJjbXAobmFtZSwgInRpbWUiKSA9PSAwKQorICAgICAgICBvYmogPSBmbG9hdHRpbWUoJmluZm8pOworI2lmZGVmIFBZQ0xPQ0sKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgImNsb2NrIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHljbG9jaygmaW5mbyk7CisjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAibW9ub3RvbmljIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHltb25vdG9uaWMoJmluZm8pOworI2VuZGlmCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJwZXJmX2NvdW50ZXIiKSA9PSAwKQorICAgICAgICBvYmogPSBwZXJmX2NvdW50ZXIoJmluZm8pOworICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicHJvY2Vzc190aW1lIikgPT0gMCkKKyAgICAgICAgb2JqID0gcHlfcHJvY2Vzc190aW1lKCZpbmZvKTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ1bmtub3duIGNsb2NrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0RFQ1JFRihvYmopOworCisgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFzc2VydChpbmZvLmltcGxlbWVudGF0aW9uICE9IE5VTEwpOworICAgIG9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGluZm8uaW1wbGVtZW50YXRpb24pOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImltcGxlbWVudGF0aW9uIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgYXNzZXJ0KGluZm8ubW9ub3RvbmljICE9IC0xKTsKKyAgICBvYmogPSBQeUJvb2xfRnJvbUxvbmcoaW5mby5tb25vdG9uaWMpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIm1vbm90b25pYyIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIGFzc2VydChpbmZvLmFkanVzdGFibGUgIT0gLTEpOworICAgIG9iaiA9IFB5Qm9vbF9Gcm9tTG9uZyhpbmZvLmFkanVzdGFibGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImFkanVzdGFibGUiLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uID4gMC4wKTsKKyAgICBhc3NlcnQoaW5mby5yZXNvbHV0aW9uIDw9IDEuMCk7CisgICAgb2JqID0gUHlGbG9hdF9Gcm9tRG91YmxlKGluZm8ucmVzb2x1dGlvbik7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAicmVzb2x1dGlvbiIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhkaWN0KTsKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIG5zOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihvYmopOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoZ2V0X2Nsb2NrX2luZm9fZG9jLAorImdldF9jbG9ja19pbmZvKG5hbWU6IHN0cikgLT4gZGljdFxuXAorXG5cCitHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4iKTsKKwogc3RhdGljIHZvaWQKIFB5SW5pdF90aW1lem9uZShQeU9iamVjdCAqbSkgewogICAgIC8qIFRoaXMgY29kZSBtb3ZlZCBmcm9tIFB5SW5pdF90aW1lIHdob2xlc2FsZSB0byBhbGxvdyBjYWxsaW5nIGl0IGZyb20KQEAgLTc5MSw4ICsxMjc3LDggQEAKICNlbmRpZiAvKiBQWU9TX09TMiAqLwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImRheWxpZ2h0IiwgZGF5bGlnaHQpOwotICAgIG90ejAgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSh0em5hbWVbMF0sIHN0cmxlbih0em5hbWVbMF0pKTsKLSAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUodHpuYW1lWzFdLCBzdHJsZW4odHpuYW1lWzFdKSk7CisgICAgb3R6MCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzBdLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzFdLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0em5hbWUiLCBQeV9CdWlsZFZhbHVlKCIoTk4pIiwgb3R6MCwgb3R6MSkpOwogI2Vsc2UgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KICNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCkBAIC04NDMsMTQgKzEzMjksMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KKworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogICAgIHsidGltZSIsICAgICAgICAgICAgdGltZV90aW1lLCBNRVRIX05PQVJHUywgdGltZV9kb2N9LAotI2lmZGVmIEhBVkVfQ0xPQ0sKKyNpZmRlZiBQWUNMT0NLCiAgICAgeyJjbG9jayIsICAgICAgICAgICB0aW1lX2Nsb2NrLCBNRVRIX05PQVJHUywgY2xvY2tfZG9jfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKKyNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9WQVJBUkdTLCBzbGVlcF9kb2N9LAogICAgIHsiZ210aW1lIiwgICAgICAgICAgdGltZV9nbXRpbWUsIE1FVEhfVkFSQVJHUywgZ210aW1lX2RvY30sCiAgICAgeyJsb2NhbHRpbWUiLCAgICAgICB0aW1lX2xvY2FsdGltZSwgTUVUSF9WQVJBUkdTLCBsb2NhbHRpbWVfZG9jfSwKQEAgLTg2Niw2ICsxMzc2LDEyIEBACiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAgICAgeyJ0enNldCIsICAgICAgICAgICB0aW1lX3R6c2V0LCBNRVRIX05PQVJHUywgdHpzZXRfZG9jfSwKICNlbmRpZgorI2lmZGVmIFBZTU9OT1RPTklDCisgICAgeyJtb25vdG9uaWMiLCAgICAgICB0aW1lX21vbm90b25pYywgTUVUSF9OT0FSR1MsIG1vbm90b25pY19kb2N9LAorI2VuZGlmCisgICAgeyJwcm9jZXNzX3RpbWUiLCAgICB0aW1lX3Byb2Nlc3NfdGltZSwgTUVUSF9OT0FSR1MsIHByb2Nlc3NfdGltZV9kb2N9LAorICAgIHsicGVyZl9jb3VudGVyIiwgICAgdGltZV9wZXJmX2NvdW50ZXIsIE1FVEhfTk9BUkdTLCBwZXJmX2NvdW50ZXJfZG9jfSwKKyAgICB7ImdldF9jbG9ja19pbmZvIiwgIHRpbWVfZ2V0X2Nsb2NrX2luZm8sIE1FVEhfVkFSQVJHUywgZ2V0X2Nsb2NrX2luZm9fZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtODgxLDcgKzEzOTcsNyBAQAogXG5cCiBUaGUgb3RoZXIgcmVwcmVzZW50YXRpb24gaXMgYSB0dXBsZSBvZiA5IGludGVnZXJzIGdpdmluZyBsb2NhbCB0aW1lLlxuXAogVGhlIHR1cGxlIGl0ZW1zIGFyZTpcblwKLSAgeWVhciAoZm91ciBkaWdpdHMsIGUuZy4gMTk5OClcblwKKyAgeWVhciAoaW5jbHVkaW5nIGNlbnR1cnksIGUuZy4gMTk5OClcblwKICAgbW9udGggKDEtMTIpXG5cCiAgIGRheSAoMS0zMSlcblwKICAgaG91cnMgKDAtMjMpXG5cCkBAIC05MzMsNDYgKzE0NDksNjUgQEAKIFB5SW5pdF90aW1lKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgY2hhciAqcDsKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZ0aW1lbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEFjY2VwdCAyLWRpZ2l0IGRhdGVzIHVubGVzcyBQWVRIT05ZMksgaXMgc2V0IGFuZCBub24tZW1wdHkgKi8KLSAgICBwID0gUHlfR0VURU5WKCJQWVRIT05ZMksiKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiYWNjZXB0MmR5ZWFyIiwgKGxvbmcpICghcCB8fCAhKnApKTsKLSAgICAvKiBTcXVpcnJlbCBhd2F5IHRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGZvciB0aGUgeTJrIGNoZWNrICovCi0gICAgbW9kZGljdCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgUHlfSU5DUkVGKG1vZGRpY3QpOwotCiAgICAgLyogU2V0LCBvciByZXNldCwgbW9kdWxlIHZhcmlhYmxlcyBsaWtlIHRpbWUudGltZXpvbmUgKi8KICAgICBQeUluaXRfdGltZXpvbmUobSk7CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogSGVscGVyIHRvIGFsbG93IGludGVycnVwdHMgZm9yIFdpbmRvd3MuCi0gICAgICAgSWYgQ3RybCtDIGV2ZW50IGRlbGl2ZXJlZCB3aGlsZSBub3Qgc2xlZXBpbmcKLSAgICAgICBpdCB3aWxsIGJlIGlnbm9yZWQuCi0gICAgKi8KLSAgICBtYWluX3RocmVhZCA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKLSAgICBoSW50ZXJydXB0RXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7Ci0gICAgU2V0Q29uc29sZUN0cmxIYW5kbGVyKCBQeUN0cmxIYW5kbGVyLCBUUlVFKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTdHJ1Y3RUaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKKyAgICAgICAgaWYgKCFHZXRWZXJzaW9uRXgoKE9TVkVSU0lPTklORk8qKSZ3aW52ZXIpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisjZW5kaWYKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgMTEpOworI2Vsc2UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDkpOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3RfdGltZSIsIChQeU9iamVjdCopICZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgIHJldHVybiBtOwogfQogCi1zdGF0aWMgZG91YmxlCi1mbG9hdHRpbWUodm9pZCkKK3N0YXRpYyBQeU9iamVjdCoKK2Zsb2F0dGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewogICAgIF9QeVRpbWVfdGltZXZhbCB0OwotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZ0KTsKLSAgICByZXR1cm4gKGRvdWJsZSl0LnR2X3NlYyArIHQudHZfdXNlYyowLjAwMDAwMTsKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisgICAgaW50IHJldDsKKworICAgIC8qIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgZG9lcyBub3QgdXNlIGNsb2NrX2dldHRpbWUoKQorICAgICAgIGJlY2F1c2UgaXQgd291bGQgcmVxdWlyZSB0byBsaW5rIFB5dGhvbiB0byB0aGUgcnQgKHJlYWwtdGltZSkKKyAgICAgICBsaWJyYXJ5LCBhdCBsZWFzdCBvbiBMaW51eCAqLworICAgIHJldCA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cCk7CisgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkiOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhDTE9DS19SRUFMVElNRSwgJnJlcykgPT0gMCkKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKKyAgICB9CisjZW5kaWYKKyAgICBfUHlUaW1lX2dldHRpbWVvZmRheV9pbmZvKCZ0LCBpbmZvKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpdC50dl9zZWMgKyB0LnR2X3VzZWMgKiAxZS02KTsKIH0KIAogCkBAIC05ODcsMjMgKzE1MjIsMjggQEAKICNpZiBkZWZpbmVkKEhBVkVfU0VMRUNUKSAmJiAhZGVmaW5lZChfX0VNWF9fKQogICAgIHN0cnVjdCB0aW1ldmFsIHQ7CiAgICAgZG91YmxlIGZyYWM7CisgICAgaW50IGVycjsKKwogICAgIGZyYWMgPSBmbW9kKHNlY3MsIDEuMCk7CiAgICAgc2VjcyA9IGZsb29yKHNlY3MpOwogICAgIHQudHZfc2VjID0gKGxvbmcpc2VjczsKICAgICB0LnR2X3VzZWMgPSAobG9uZykoZnJhYyoxMDAwMDAwLjApOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoc2VsZWN0KDAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsICZ0KSAhPSAwKSB7CisgICAgZXJyID0gc2VsZWN0KDAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsICZ0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChlcnIgIT0gMCkgewogI2lmZGVmIEVJTlRSCi0gICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgewotI2Vsc2UKLSAgICAgICAgaWYgKDEpIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICB7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICNlbGlmIGRlZmluZWQoX19XQVRDT01DX18pICYmICFkZWZpbmVkKF9fUU5YX18pCiAgICAgLyogWFhYIENhbid0IGludGVycnVwdCB0aGlzIHNsZWVwICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMTAyNCwxOCArMTU2NCwxNCBAQAogICAgICAgICAgKiBieSBHdWlkbywgb25seSB0aGUgbWFpbiB0aHJlYWQgY2FuIGJlIGludGVycnVwdGVkLgogICAgICAgICAgKi8KICAgICAgICAgdWxfbWlsbGlzID0gKHVuc2lnbmVkIGxvbmcpbWlsbGlzZWNzOwotICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwKLSAgICAgICAgICAgIG1haW5fdGhyZWFkICE9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkKKyAgICAgICAgaWYgKHVsX21pbGxpcyA9PSAwIHx8ICFfUHlPU19Jc01haW5UaHJlYWQoKSkKICAgICAgICAgICAgIFNsZWVwKHVsX21pbGxpcyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgRFdPUkQgcmM7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKICAgICAgICAgICAgIHJjID0gV2FpdEZvclNpbmdsZU9iamVjdChoSW50ZXJydXB0RXZlbnQsIHVsX21pbGxpcyk7CiAgICAgICAgICAgICBpZiAocmMgPT0gV0FJVF9PQkpFQ1RfMCkgewotICAgICAgICAgICAgICAgIC8qIFlpZWxkIHRvIG1ha2Ugc3VyZSByZWFsIFB5dGhvbiBzaWduYWwKLSAgICAgICAgICAgICAgICAgKiBoYW5kbGVyIGNhbGxlZC4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBTbGVlcCgxKTsKICAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCiAgICAgICAgICAgICAgICAgZXJybm8gPSBFSU5UUjsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RrYXBwaW5pdC5jIGIvTW9kdWxlcy90a2FwcGluaXQuYwppbmRleCBjMWY5N2IwLi4yZWQ4NTk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RrYXBwaW5pdC5jCisrKyBiL01vZHVsZXMvdGthcHBpbml0LmMKQEAgLTI2LDcgKzI2LDkgQEAKIGludAogVGNsX0FwcEluaXQoVGNsX0ludGVycCAqaW50ZXJwKQogeworI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKICAgICBUa19XaW5kb3cgbWFpbl93aW5kb3c7CisjZW5kaWYKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl9za2lwX3RrX2luaXQ7CiAjaWZkZWYgVEtJTlRFUl9QUk9URUNUX0xPQURUSwogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3RrX2ZhaWxlZDsKQEAgLTExMSw3ICsxMTMsMTEgQEAKICAgICAgICAgcmV0dXJuIFRDTF9FUlJPUjsKICAgICB9CiAKKyNpZmRlZiBXSVRIX01PUkVCVVRUT05TCiAgICAgbWFpbl93aW5kb3cgPSBUa19NYWluV2luZG93KGludGVycCk7CisjZWxzZQorICAgIFRrX01haW5XaW5kb3coaW50ZXJwKTsKKyNlbmRpZgogCiAjaWZkZWYgVEtfQVFVQQogICAgIFRrTWFjT1NYSW5pdEFwcGxlRXZlbnRzKGludGVycCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKaW5kZXggNTNlNDhkZi4uZDMzOWY1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YS5jCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwpAQCAtOTMsMTYgKzkzLDEzIEBACiAKIHN0YXRpYyBQeV9VQ1M0IGdldHVjaGFyKFB5VW5pY29kZU9iamVjdCAqb2JqKQogewotICAgIFB5X1VOSUNPREUgKnYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOwotCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShvYmopID09IDEpCi0gICAgICAgIHJldHVybiAqdjsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZWxzZSBpZiAoKFB5VW5pY29kZV9HRVRfU0laRShvYmopID09IDIpICYmCi0gICAgICAgICAgICAgKDB4RDgwMCA8PSB2WzBdICYmIHZbMF0gPD0gMHhEQkZGKSAmJgotICAgICAgICAgICAgICgweERDMDAgPD0gdlsxXSAmJiB2WzFdIDw9IDB4REZGRikpCi0gICAgICAgIHJldHVybiAoKCh2WzBdICYgMHgzRkYpPDwxMCkgfCAodlsxXSAmIDB4M0ZGKSkgKyAweDEwMDAwOwotI2VuZGlmCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgPT0gMSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCisgICAgICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7CisgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJuZWVkIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyIGFzIHBhcmFtZXRlciIpOwogICAgIHJldHVybiAoUHlfVUNTNCktMTsKQEAgLTQ0Myw3ICs0NDAsNyBAQAogICAgICAgIGZyb20gVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHksIGl0IHNob3VsZCBub3QgYmUgcG9zc2libGUKICAgICAgICB0byBvdmVyZmxvdyBkZWNvbXBfcHJlZml4LiAqLwogICAgIHByZWZpeF9pbmRleCA9IGRlY29tcF9kYXRhW2luZGV4XSAmIDI1NTsKLSAgICBhc3NlcnQocHJlZml4X2luZGV4IDwgKHNpemVvZihkZWNvbXBfcHJlZml4KS9zaXplb2YoKmRlY29tcF9wcmVmaXgpKSk7CisgICAgYXNzZXJ0KHByZWZpeF9pbmRleCA8IFB5X0FSUkFZX0xFTkdUSChkZWNvbXBfcHJlZml4KSk7CiAKICAgICAvKiBjb3B5IHByZWZpeCAqLwogICAgIGkgPSBzdHJsZW4oZGVjb21wX3ByZWZpeFtwcmVmaXhfaW5kZXhdKTsKQEAgLTQ5OCwzNiArNDk1LDQ3IEBACiBuZmRfbmZrZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgaykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKmksICplbmQsICpvOworICAgIFB5X1VDUzQgKm91dHB1dDsKKyAgICBQeV9zc2l6ZV90IGksIG8sIG9zaXplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgLyogTG9uZ2VzdCBkZWNvbXBvc2l0aW9uIGluIFVuaWNvZGUgMy4yOiBVK0ZERkEgKi8KLSAgICBQeV9VTklDT0RFIHN0YWNrWzIwXTsKKyAgICBQeV9VQ1M0IHN0YWNrWzIwXTsKICAgICBQeV9zc2l6ZV90IHNwYWNlLCBpc2l6ZTsKICAgICBpbnQgaW5kZXgsIHByZWZpeCwgY291bnQsIHN0YWNrcHRyOwogICAgIHVuc2lnbmVkIGNoYXIgcHJldiwgY3VyOwogCiAgICAgc3RhY2twdHIgPSAwOwotICAgIGlzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKGlucHV0KTsKKyAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKICAgICAvKiBPdmVyYWxsb2NhdGUgYXRtb3N0IDEwIGNoYXJhY3RlcnMuICovCiAgICAgc3BhY2UgPSAoaXNpemUgPiAxMCA/IDEwIDogaXNpemUpICsgaXNpemU7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNwYWNlKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBvc2l6ZSA9IHNwYWNlOworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhzcGFjZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlucHV0KTsKLSAgICBlbmQgPSBpICsgaXNpemU7Ci0gICAgbyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7CisgICAgfQorICAgIGkgPSBvID0gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShpbnB1dCk7CiAKLSAgICB3aGlsZSAoaSA8IGVuZCkgewotICAgICAgICBzdGFja1tzdGFja3B0cisrXSA9ICppKys7CisgICAgd2hpbGUgKGkgPCBpc2l6ZSkgeworICAgICAgICBzdGFja1tzdGFja3B0cisrXSA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrKyk7CiAgICAgICAgIHdoaWxlKHN0YWNrcHRyKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNvZGUgPSBzdGFja1stLXN0YWNrcHRyXTsKKyAgICAgICAgICAgIFB5X1VDUzQgY29kZSA9IHN0YWNrWy0tc3RhY2twdHJdOwogICAgICAgICAgICAgLyogSGFuZ3VsIERlY29tcG9zaXRpb24gYWRkcyB0aHJlZSBjaGFyYWN0ZXJzIGluCiAgICAgICAgICAgICAgICBhIHNpbmdsZSBzdGVwLCBzbyB3ZSBuZWVkIGF0bGVhc3QgdGhhdCBtdWNoIHJvb20uICovCiAgICAgICAgICAgICBpZiAoc3BhY2UgPCAzKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCkgKyAxMDsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0ICpuZXdfb3V0cHV0OworICAgICAgICAgICAgICAgIG9zaXplICs9IDEwOwogICAgICAgICAgICAgICAgIHNwYWNlICs9IDEwOwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIG5ld3NpemUpID09IC0xKQorICAgICAgICAgICAgICAgIG5ld19vdXRwdXQgPSBQeU1lbV9SZWFsbG9jKG91dHB1dCwgb3NpemUqc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3X291dHB1dCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgbyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkgKyBuZXdzaXplIC0gc3BhY2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dHB1dCA9IG5ld19vdXRwdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBIYW5ndWwgRGVjb21wb3NpdGlvbi4gKi8KICAgICAgICAgICAgIGlmIChTQmFzZSA8PSBjb2RlICYmIGNvZGUgPCAoU0Jhc2UrU0NvdW50KSkgewpAQCAtNTM1LDExICs1NDMsMTEgQEAKICAgICAgICAgICAgICAgICBpbnQgTCA9IExCYXNlICsgU0luZGV4IC8gTkNvdW50OwogICAgICAgICAgICAgICAgIGludCBWID0gVkJhc2UgKyAoU0luZGV4ICUgTkNvdW50KSAvIFRDb3VudDsKICAgICAgICAgICAgICAgICBpbnQgVCA9IFRCYXNlICsgU0luZGV4ICUgVENvdW50OwotICAgICAgICAgICAgICAgICpvKysgPSBMOwotICAgICAgICAgICAgICAgICpvKysgPSBWOworICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gTDsKKyAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IFY7CiAgICAgICAgICAgICAgICAgc3BhY2UgLT0gMjsKICAgICAgICAgICAgICAgICBpZiAoVCAhPSBUQmFzZSkgewotICAgICAgICAgICAgICAgICAgICAqbysrID0gVDsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBUOwogICAgICAgICAgICAgICAgICAgICBzcGFjZSAtLTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01NTksNyArNTY3LDcgQEAKICAgICAgICAgICAgIC8qIENvcHkgY2hhcmFjdGVyIGlmIGl0IGlzIG5vdCBkZWNvbXBvc2FibGUsIG9yIGhhcyBhCiAgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb24sIGJ1dCB3ZSBkbyBORkQuICovCiAgICAgICAgICAgICBpZiAoIWNvdW50IHx8IChwcmVmaXggJiYgIWspKSB7Ci0gICAgICAgICAgICAgICAgKm8rKyA9IGNvZGU7CisgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBjb2RlOwogICAgICAgICAgICAgICAgIHNwYWNlLS07CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC01NzIsMTUgKzU4MCwyMCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogRHJvcCBvdmVyYWxsb2NhdGlvbi4gQ2Fubm90IGZhaWwuICovCi0gICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBQeVVuaWNvZGVfR0VUX1NJWkUocmVzdWx0KSAtIHNwYWNlKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBvKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJlc3VsdCBpcyBndWFyYW50ZWVkIHRvIGJlIHJlYWR5LCBhcyBpdCBpcyBjb21wYWN0LiAqLworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXN1bHQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOwogCiAgICAgLyogU29ydCBjYW5vbmljYWxseS4gKi8KLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICBwcmV2ID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKLSAgICBlbmQgPSBpICsgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7Ci0gICAgZm9yIChpKys7IGkgPCBlbmQ7IGkrKykgewotICAgICAgICBjdXIgPSBfZ2V0cmVjb3JkX2V4KCppKS0+Y29tYmluaW5nOworICAgIGkgPSAwOworICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOworICAgIGZvciAoaSsrOyBpIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsgaSsrKSB7CisgICAgICAgIGN1ciA9IF9nZXRyZWNvcmRfZXgoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpLT5jb21iaW5pbmc7CiAgICAgICAgIGlmIChwcmV2ID09IDAgfHwgY3VyID09IDAgfHwgcHJldiA8PSBjdXIpIHsKICAgICAgICAgICAgIHByZXYgPSBjdXI7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU4OCwzMSArNjAxLDMyIEBACiAgICAgICAgIC8qIE5vbi1jYW5vbmljYWwgb3JkZXIuIE5lZWQgdG8gc3dpdGNoICppIHdpdGggcHJldmlvdXMuICovCiAgICAgICAgIG8gPSBpIC0gMTsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgdG1wID0gb1sxXTsKLSAgICAgICAgICAgIG9bMV0gPSBvWzBdOwotICAgICAgICAgICAgb1swXSA9IHRtcDsKKyAgICAgICAgICAgIFB5X1VDUzQgdG1wID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbysxKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbykpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIG8sIHRtcCk7CiAgICAgICAgICAgICBvLS07Ci0gICAgICAgICAgICBpZiAobyA8IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCkpCisgICAgICAgICAgICBpZiAobyA8IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leCgqbyktPmNvbWJpbmluZzsKKyAgICAgICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8pKS0+Y29tYmluaW5nOwogICAgICAgICAgICAgaWYgKHByZXYgPT0gMCB8fCBwcmV2IDw9IGN1cikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKKyAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpLT5jb21iaW5pbmc7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBpbnQKLWZpbmRfbmZjX2luZGV4KFB5T2JqZWN0ICpzZWxmLCBzdHJ1Y3QgcmVpbmRleCogbmZjLCBQeV9VTklDT0RFIGNvZGUpCitmaW5kX25mY19pbmRleChQeU9iamVjdCAqc2VsZiwgc3RydWN0IHJlaW5kZXgqIG5mYywgUHlfVUNTNCBjb2RlKQogewotICAgIGludCBpbmRleDsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXg7CiAgICAgZm9yIChpbmRleCA9IDA7IG5mY1tpbmRleF0uc3RhcnQ7IGluZGV4KyspIHsKLSAgICAgICAgaW50IHN0YXJ0ID0gbmZjW2luZGV4XS5zdGFydDsKKyAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0ID0gbmZjW2luZGV4XS5zdGFydDsKICAgICAgICAgaWYgKGNvZGUgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgaWYgKGNvZGUgPD0gc3RhcnQgKyBuZmNbaW5kZXhdLmNvdW50KSB7Ci0gICAgICAgICAgICBpbnQgZGVsdGEgPSBjb2RlIC0gc3RhcnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVsdGEgPSBjb2RlIC0gc3RhcnQ7CiAgICAgICAgICAgICByZXR1cm4gbmZjW2luZGV4XS5pbmRleCArIGRlbHRhOwogICAgICAgICB9CiAgICAgfQpAQCAtNjIzLDI3ICs2MzcsMzYgQEAKIG5mY19uZmtjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaW5wdXQsIGludCBrKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfVU5JQ09ERSAqaSwgKmkxLCAqbywgKmVuZDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgKm91dHB1dDsKKyAgICBQeV9zc2l6ZV90IGksIGkxLCBvLCBsZW47CiAgICAgaW50IGYsbCxpbmRleCxpbmRleDEsY29tYjsKLSAgICBQeV9VTklDT0RFIGNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqc2tpcHBlZFsyMF07CisgICAgUHlfVUNTNCBjb2RlOworICAgIFB5X3NzaXplX3Qgc2tpcHBlZFsyMF07CiAgICAgaW50IGNza2lwcGVkID0gMDsKIAogICAgIHJlc3VsdCA9IG5mZF9uZmtkKHNlbGYsIGlucHV0LCBrKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogcmVzdWx0IHdpbGwgYmUgInJlYWR5Ii4gKi8KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOwogCi0gICAgLyogV2UgYXJlIGdvaW5nIHRvIG1vZGlmeSByZXN1bHQgaW4tcGxhY2UuCi0gICAgICAgSWYgbmZkX25ma2QgaXMgY2hhbmdlZCB0byBzb21ldGltZXMgcmV0dXJuIHRoZSBpbnB1dCwKLSAgICAgICB0aGlzIGNvZGUgbmVlZHMgdG8gYmUgcmV2aWV3ZWQuICovCi0gICAgYXNzZXJ0KHJlc3VsdCAhPSBpbnB1dCk7Ci0KLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICBlbmQgPSBpICsgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7Ci0gICAgbyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7CisgICAgLyogV2UgYWxsb2NhdGUgYSBidWZmZXIgZm9yIHRoZSBvdXRwdXQuCisgICAgICAgSWYgd2UgZmluZCB0aGF0IHdlIG1hZGUgbm8gY2hhbmdlcywgd2Ugc3RpbGwgcmV0dXJuCisgICAgICAgdGhlIE5GRCByZXN1bHQuICovCisgICAgb3V0cHV0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpID0gbyA9IDA7CiAKICAgYWdhaW46Ci0gICAgd2hpbGUgKGkgPCBlbmQpIHsKKyAgICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY3NraXBwZWQ7IGluZGV4KyspIHsKICAgICAgICAgICBpZiAoc2tpcHBlZFtpbmRleF0gPT0gaSkgewogICAgICAgICAgICAgICAvKiAqaSBjaGFyYWN0ZXIgaXMgc2tpcHBlZC4KQEAgLTY1NiwzMyArNjc5LDQxIEBACiAgICAgICB9CiAgICAgICAvKiBIYW5ndWwgQ29tcG9zaXRpb24uIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIDxMVixUPgogICAgICAgICAgcGFpcnMsIHNpbmNlIHdlIGFsd2F5cyBoYXZlIGRlY29tcG9zZWQgZGF0YS4gKi8KLSAgICAgIGlmIChMQmFzZSA8PSAqaSAmJiAqaSA8IChMQmFzZStMQ291bnQpICYmCi0gICAgICAgICAgaSArIDEgPCBlbmQgJiYKLSAgICAgICAgICBWQmFzZSA8PSBpWzFdICYmIGlbMV0gPD0gKFZCYXNlK1ZDb3VudCkpIHsKKyAgICAgIGNvZGUgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgIGlmIChMQmFzZSA8PSBjb2RlICYmIGNvZGUgPCAoTEJhc2UrTENvdW50KSAmJgorICAgICAgICAgIGkgKyAxIDwgbGVuICYmCisgICAgICAgICAgVkJhc2UgPD0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSAmJgorICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgPD0gKFZCYXNlK1ZDb3VudCkpIHsKICAgICAgICAgICBpbnQgTEluZGV4LCBWSW5kZXg7Ci0gICAgICAgICAgTEluZGV4ID0gaVswXSAtIExCYXNlOwotICAgICAgICAgIFZJbmRleCA9IGlbMV0gLSBWQmFzZTsKKyAgICAgICAgICBMSW5kZXggPSBjb2RlIC0gTEJhc2U7CisgICAgICAgICAgVkluZGV4ID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSAtIFZCYXNlOwogICAgICAgICAgIGNvZGUgPSBTQmFzZSArIChMSW5kZXgqVkNvdW50K1ZJbmRleCkqVENvdW50OwogICAgICAgICAgIGkrPTI7Ci0gICAgICAgICAgaWYgKGkgPCBlbmQgJiYKLSAgICAgICAgICAgICAgVEJhc2UgPD0gKmkgJiYgKmkgPD0gKFRCYXNlK1RDb3VudCkpIHsKLSAgICAgICAgICAgICAgY29kZSArPSAqaS1UQmFzZTsKKyAgICAgICAgICBpZiAoaSA8IGxlbiAmJgorICAgICAgICAgICAgICBUQmFzZSA8PSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSAmJgorICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA8PSAoVEJhc2UrVENvdW50KSkgeworICAgICAgICAgICAgICBjb2RlICs9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLVRCYXNlOwogICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgfQotICAgICAgICAgICpvKysgPSBjb2RlOworICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgIH0KIAotICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgKmkpOworICAgICAgLyogY29kZSBpcyBzdGlsbCBpbnB1dFtpXSBoZXJlICovCisgICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCBjb2RlKTsKICAgICAgIGlmIChmID09IC0xKSB7Ci0gICAgICAgICAgKm8rKyA9ICppKys7CisgICAgICAgICAgb3V0cHV0W28rK10gPSBjb2RlOworICAgICAgICAgIGkrKzsKICAgICAgICAgICBjb250aW51ZTsKICAgICAgIH0KICAgICAgIC8qIEZpbmQgbmV4dCB1bmJsb2NrZWQgY2hhcmFjdGVyLiAqLwogICAgICAgaTEgPSBpKzE7CiAgICAgICBjb21iID0gMDsKLSAgICAgIHdoaWxlIChpMSA8IGVuZCkgewotICAgICAgICAgIGludCBjb21iMSA9IF9nZXRyZWNvcmRfZXgoKmkxKS0+Y29tYmluaW5nOworICAgICAgLyogb3V0cHV0IGJhc2UgY2hhcmFjdGVyIGZvciBub3c7IG1pZ2h0IGJlIHVwZGF0ZWQgbGF0ZXIuICovCisgICAgICBvdXRwdXRbb10gPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgIHdoaWxlIChpMSA8IGxlbikgeworICAgICAgICAgIFB5X1VDUzQgY29kZTEgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpMSk7CisgICAgICAgICAgaW50IGNvbWIxID0gX2dldHJlY29yZF9leChjb2RlMSktPmNvbWJpbmluZzsKICAgICAgICAgICBpZiAoY29tYikgewogICAgICAgICAgICAgICBpZiAoY29tYjEgPT0gMCkKICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjkyLDggKzcyMyw4IEBACiAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KLSAgICAgICAgICBsID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2xhc3QsICppMSk7Ci0gICAgICAgICAgLyogKmkxIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoICppLiBJZiAqaTEKKyAgICAgICAgICBsID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2xhc3QsIGNvZGUxKTsKKyAgICAgICAgICAvKiBpMSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBpLiBJZiBpMQogICAgICAgICAgICAgIGlzIGEgc3RhcnRlciwgd2UgZG9uJ3QgbmVlZCB0byBsb29rIGZ1cnRoZXIuCiAgICAgICAgICAgICAgT3RoZXJ3aXNlLCByZWNvcmQgdGhlIGNvbWJpbmluZyBjbGFzcy4gKi8KICAgICAgICAgICBpZiAobCA9PSAtMSkgewpAQCAtNzEyLDE5ICs3NDMsMjggQEAKICAgICAgICAgICAgICAgZ290byBub3RfY29tYmluYWJsZTsKIAogICAgICAgICAgIC8qIFJlcGxhY2UgdGhlIG9yaWdpbmFsIGNoYXJhY3Rlci4gKi8KLSAgICAgICAgICAqaSA9IGNvZGU7CisgICAgICAgICAgb3V0cHV0W29dID0gY29kZTsKICAgICAgICAgICAvKiBNYXJrIHRoZSBzZWNvbmQgY2hhcmFjdGVyIHVudXNlZC4gKi8KICAgICAgICAgICBhc3NlcnQoY3NraXBwZWQgPCAyMCk7CiAgICAgICAgICAgc2tpcHBlZFtjc2tpcHBlZCsrXSA9IGkxOwogICAgICAgICAgIGkxKys7Ci0gICAgICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgKmkpOworICAgICAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsIG91dHB1dFtvXSk7CiAgICAgICAgICAgaWYgKGYgPT0gLTEpCiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgKm8rKyA9ICppKys7CisgICAgICAvKiBPdXRwdXQgY2hhcmFjdGVyIHdhcyBhbHJlYWR5IHdyaXR0ZW4uCisgICAgICAgICBKdXN0IGFkdmFuY2UgdGhlIGluZGljZXMuICovCisgICAgICBvKys7IGkrKzsKICAgICB9Ci0gICAgaWYgKG8gIT0gZW5kKQotICAgICAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIG8gLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpKTsKKyAgICBpZiAobyA9PSBsZW4pIHsKKyAgICAgICAgLyogTm8gY2hhbmdlcy4gUmV0dXJuIG9yaWdpbmFsIHN0cmluZy4gKi8KKyAgICAgICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCBvKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNzMyLDcgKzc3Miw5IEBACiBzdGF0aWMgaW50CiBpc19ub3JtYWxpemVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaW5wdXQsIGludCBuZmMsIGludCBrKQogewotICAgIFB5X1VOSUNPREUgKmksICplbmQ7CisgICAgUHlfc3NpemVfdCBpLCBsZW47CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBjaGFyIHByZXZfY29tYmluaW5nID0gMCwgcXVpY2tjaGVja19tYXNrOwogCiAgICAgLyogQW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgaXMgcmVxdWVzdGVkLCBxdWlja2NoZWNrcyBtdXN0IGJlCkBAIC03NDQsMTAgKzc4NiwxMyBAQAogICAgICAgIGFzIGRlc2NyaWJlZCBpbiBodHRwOi8vdW5pY29kZS5vcmcvcmVwb3J0cy90cjE1LyNBbm5leDguICovCiAgICAgcXVpY2tjaGVja19tYXNrID0gMyA8PCAoKG5mYyA/IDQgOiAwKSArIChrID8gMiA6IDApKTsKIAotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpbnB1dCk7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShpbnB1dCk7Ci0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCAqcmVjb3JkID0gX2dldHJlY29yZF9leCgqaSsrKTsKKyAgICBpID0gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShpbnB1dCk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOworICAgIHdoaWxlIChpIDwgbGVuKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKyspOworICAgICAgICBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkICpyZWNvcmQgPSBfZ2V0cmVjb3JkX2V4KGNoKTsKICAgICAgICAgdW5zaWduZWQgY2hhciBjb21iaW5pbmcgPSByZWNvcmQtPmNvbWJpbmluZzsKICAgICAgICAgdW5zaWduZWQgY2hhciBxdWlja2NoZWNrID0gcmVjb3JkLT5ub3JtYWxpemF0aW9uX3F1aWNrX2NoZWNrOwogCkBAIC03NzYsNyArODIxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm0sICZQeVVuaWNvZGVfVHlwZSwgJmlucHV0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoaW5wdXQpID09IDApIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpID09IDApIHsKICAgICAgICAgLyogU3BlY2lhbCBjYXNlIGVtcHR5IGlucHV0IHN0cmluZ3MsIHNpbmNlIHJlc2l6aW5nCiAgICAgICAgICAgIHRoZW0gIGxhdGVyIHdvdWxkIGNhdXNlIGludGVybmFsIGVycm9ycy4gKi8KICAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKQEAgLTg3NiwxNSArOTI0LDI1IEBACiB7CiAgICAgcmV0dXJuCiAgICAgICAgICgweDM0MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4NERCNSkgICB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBICovCi0gICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZDQikgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCisgICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZDQykgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCiAgICAgICAgICgweDIwMDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJBNkQ2KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBCICovCiAgICAgICAgICgweDJBNzAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCNzM0KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBDICovCiAgICAgICAgICgweDJCNzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKTsgICAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBEICovCiB9CiAKKy8qIG1hY3JvcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZ2l2ZW4gY29kZXBvaW50IGlzIGluIHRoZSBQVUEgcmFuZ2UgdGhhdAorICogd2UgYXJlIHVzaW5nIHRvIHN0b3JlIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcyAqLworI2RlZmluZSBJU19BTElBUyhjcCkgKChjcCA+PSBhbGlhc2VzX3N0YXJ0KSAmJiAoY3AgPCBhbGlhc2VzX2VuZCkpCisjZGVmaW5lIElTX05BTUVEX1NFUShjcCkgKChjcCA+PSBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQpICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNwIDwgbmFtZWRfc2VxdWVuY2VzX2VuZCkpCisKIHN0YXRpYyBpbnQKLV9nZXR1Y25hbWUoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuKQorX2dldHVjbmFtZShQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCBjb2RlLCBjaGFyKiBidWZmZXIsIGludCBidWZsZW4sCisgICAgICAgICAgIGludCB3aXRoX2FsaWFzX2FuZF9zZXEpCiB7CisgICAgLyogRmluZCB0aGUgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvZGVwb2ludC4KKyAgICAgKiBJZiB3aXRoX2FsaWFzX2FuZF9zZXEgaXMgMSwgY2hlY2sgZm9yIG5hbWVzIGluIHRoZSBQcml2YXRlIFVzZSBBcmVhIDE1CisgICAgICogdGhhdCB3ZSBhcmUgdXNpbmcgZm9yIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4gKi8KICAgICBpbnQgb2Zmc2V0OwogICAgIGludCBpOwogICAgIGludCB3b3JkOwpAQCAtODkzLDggKzk1MSwxNiBAQAogICAgIGlmIChjb2RlID49IDB4MTEwMDAwKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8qIFhYWCBzaG91bGQgd2UganVzdCBza2lwIGFsbCB0aGUgY29kZXBvaW50cyBpbiB0aGUgUFVBcyBoZXJlPyAqLworICAgIGlmICghd2l0aF9hbGlhc19hbmRfc2VxICYmIChJU19BTElBUyhjb2RlKSB8fCBJU19OQU1FRF9TRVEoY29kZSkpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewotICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjb2RlKTsKKyAgICAgICAgLyogaW4gMy4yLjAgdGhlcmUgYXJlIG5vIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcyAqLworICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQ7CisgICAgICAgIGlmIChJU19BTElBUyhjb2RlKSB8fCBJU19OQU1FRF9TRVEoY29kZSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgY29kZSk7CiAgICAgICAgIGlmIChvbGQtPmNhdGVnb3J5X2NoYW5nZWQgPT0gMCkgewogICAgICAgICAgICAgLyogdW5hc3NpZ25lZCAqLwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC05NzgsNyArMTA0NCw3IEBACiAgICAgLyogY2hlY2sgaWYgY29kZSBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gbmFtZSAqLwogICAgIGludCBpOwogICAgIGNoYXIgYnVmZmVyW05BTUVfTUFYTEVOXTsKLSAgICBpZiAoIV9nZXR1Y25hbWUoc2VsZiwgY29kZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpCisgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGNvZGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDEpKQogICAgICAgICByZXR1cm4gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZWxlbjsgaSsrKSB7CiAgICAgICAgIGlmIChQeV9UT1VQUEVSKFB5X0NIQVJNQVNLKG5hbWVbaV0pKSAhPSBidWZmZXJbaV0pCkBAIC05OTQsNyArMTA2MCw3IEBACiAgICAgKmxlbiA9IC0xOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgIGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07Ci0gICAgICAgIGxlbjEgPSBzdHJsZW4ocyk7CisgICAgICAgIGxlbjEgPSBQeV9TQUZFX0RPV05DQVNUKHN0cmxlbihzKSwgc2l6ZV90LCBpbnQpOwogICAgICAgICBpZiAobGVuMSA8PSAqbGVuKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChzdHJuY21wKHN0ciwgcywgbGVuMSkgPT0gMCkgewpAQCAtMTAwOCw4ICsxMDc0LDI4IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9nZXRjb2RlKFB5T2JqZWN0KiBzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSkKK19jaGVja19hbGlhc19hbmRfc2VxKHVuc2lnbmVkIGludCBjcCwgUHlfVUNTNCogY29kZSwgaW50IHdpdGhfbmFtZWRfc2VxKQogeworICAgIC8qIGNoZWNrIGlmIG5hbWVkIHNlcXVlbmNlcyBhcmUgYWxsb3dlZCAqLworICAgIGlmICghd2l0aF9uYW1lZF9zZXEgJiYgSVNfTkFNRURfU0VRKGNwKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgLyogaWYgdGhlIGNvZGVwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQgd2UgdXNlIGZvciBhbGlhc2VzLAorICAgICAqIGNvbnZlcnQgaXQgdG8gb2J0YWluIHRoZSByaWdodCBjb2RlcG9pbnQgKi8KKyAgICBpZiAoSVNfQUxJQVMoY3ApKQorICAgICAgICAqY29kZSA9IG5hbWVfYWxpYXNlc1tjcC1hbGlhc2VzX3N0YXJ0XTsKKyAgICBlbHNlCisgICAgICAgICpjb2RlID0gY3A7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK19nZXRjb2RlKFB5T2JqZWN0KiBzZWxmLCBjb25zdCBjaGFyKiBuYW1lLCBpbnQgbmFtZWxlbiwgUHlfVUNTNCogY29kZSwKKyAgICAgICAgIGludCB3aXRoX25hbWVkX3NlcSkKK3sKKyAgICAvKiBSZXR1cm4gdGhlIGNvZGVwb2ludCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG5hbWUuCisgICAgICogTmFtZWQgYWxpYXNlcyBhcmUgcmVzb2x2ZWQgdG9vICh1bmxlc3Mgc2VsZiAhPSBOVUxMIChpLmUuIHdlIGFyZSB1c2luZworICAgICAqIDMuMi4wKSkuICBJZiB3aXRoX25hbWVkX3NlcSBpcyAxLCByZXR1cm5zIHRoZSBQVUEgY29kZXBvaW50IHRoYXQgd2UgYXJlCisgICAgICogdXNpbmcgZm9yIHRoZSBuYW1lZCBzZXF1ZW5jZSwgYW5kIHRoZSBjYWxsZXIgbXVzdCB0aGVuIGNvbnZlcnQgaXQuICovCiAgICAgdW5zaWduZWQgaW50IGgsIHY7CiAgICAgdW5zaWduZWQgaW50IG1hc2sgPSBjb2RlX3NpemUtMTsKICAgICB1bnNpZ25lZCBpbnQgaSwgaW5jcjsKQEAgLTEwNjUsMTAgKzExNTEsOCBAQAogICAgIHYgPSBjb2RlX2hhc2hbaV07CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoX2NtcG5hbWUoc2VsZiwgdiwgbmFtZSwgbmFtZWxlbikpIHsKLSAgICAgICAgKmNvZGUgPSB2OwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKQorICAgICAgICByZXR1cm4gX2NoZWNrX2FsaWFzX2FuZF9zZXEodiwgY29kZSwgd2l0aF9uYW1lZF9zZXEpOwogICAgIGluY3IgPSAoaCBeIChoID4+IDMpKSAmIG1hc2s7CiAgICAgaWYgKCFpbmNyKQogICAgICAgICBpbmNyID0gbWFzazsKQEAgLTEwNzcsMTAgKzExNjEsOCBAQAogICAgICAgICB2ID0gY29kZV9oYXNoW2ldOwogICAgICAgICBpZiAoIXYpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKSB7Ci0gICAgICAgICAgICAqY29kZSA9IHY7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoX2NtcG5hbWUoc2VsZiwgdiwgbmFtZSwgbmFtZWxlbikpCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX2FsaWFzX2FuZF9zZXEodiwgY29kZSwgd2l0aF9uYW1lZF9zZXEpOwogICAgICAgICBpbmNyID0gaW5jciA8PCAxOwogICAgICAgICBpZiAoaW5jciA+IG1hc2spCiAgICAgICAgICAgICBpbmNyID0gaW5jciBeIGNvZGVfcG9seTsKQEAgLTExMTgsNyArMTIwMCw3IEBACiAgICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSkpIHsKKyAgICBpZiAoIV9nZXR1Y25hbWUoc2VsZiwgYywgbmFtZSwgc2l6ZW9mKG5hbWUpLCAwKSkgewogICAgICAgICBpZiAoZGVmb2JqID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm8gc3VjaCBuYW1lIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNDMsMjggKzEyMjUsMjYgQEAKIHVuaWNvZGVkYXRhX2xvb2t1cChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlfVUNTNCBjb2RlOwotICAgIFB5X1VOSUNPREUgc3RyWzJdOwogCiAgICAgY2hhciogbmFtZTsKICAgICBpbnQgbmFtZWxlbjsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXg7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVsZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgbmFtZWxlbiwgJmNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgInVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIG5hbWUpOworICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgbmFtZWxlbiwgJmNvZGUsIDEpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwgInVuZGVmaW5lZCBjaGFyYWN0ZXIgbmFtZSAnJXMnIiwgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpZiAoY29kZSA+PSAweDEwMDAwKSB7Ci0gICAgICAgIHN0clswXSA9IDB4ZDgwMCArICgoY29kZSAtIDB4MTAwMDApID4+IDEwKTsKLSAgICAgICAgc3RyWzFdID0gMHhkYzAwICsgKChjb2RlIC0gMHgxMDAwMCkgJiAweDNmZik7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc3RyLCAyKTsKKyAgICAvKiBjaGVjayBpZiBjb2RlIGlzIGluIHRoZSBQVUEgcmFuZ2UgdGhhdCB3ZSB1c2UgZm9yIG5hbWVkIHNlcXVlbmNlcworICAgICAgIGFuZCBjb252ZXJ0IGl0ICovCisgICAgaWYgKElTX05BTUVEX1NFUShjb2RlKSkgeworICAgICAgICBpbmRleCA9IGNvZGUtbmFtZWRfc2VxdWVuY2VzX3N0YXJ0OworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfMkJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWRfc2VxdWVuY2VzW2luZGV4XS5zZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkX3NlcXVlbmNlc1tpbmRleF0uc2VxbGVuKTsKICAgICB9Ci0jZW5kaWYKLSAgICBzdHJbMF0gPSAoUHlfVU5JQ09ERSkgY29kZTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0ciwgMSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjb2RlKTsKIH0KIAogLyogWFhYIEFkZCBkb2Mgc3RyaW5ncy4gKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaCBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAppbmRleCA4ZTJlNzI0Li41ZDVkY2E4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCkBAIC0xLDYgKzEsNiBAQAogLyogdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgMy4yICovCiAKLSNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI2LjAuMCIKKyNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI2LjEuMCIKIC8qIGEgbGlzdCBvZiB1bmlxdWUgZGF0YWJhc2UgcmVjb3JkcyAqLwogY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCBfUHlVbmljb2RlX0RhdGFiYXNlX1JlY29yZHNbXSA9IHsKICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCkBAIC0yOCwxMiArMjgsMTIgQEAKICAgICB7MjYsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjgsIDAsIDExLCAwLCA0LCAwfSwKICAgICB7MzAsIDAsIDE5LCAwLCAzLCAwfSwKLSAgICB7MzAsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjksIDAsIDE5LCAwLCA0LCAxMzZ9LAogICAgIHszMCwgMCwgMTksIDAsIDUsIDB9LAotICAgIHsyLCAwLCAxLCAwLCA0LCAxMzZ9LAorICAgIHsxOSwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7MjQsIDAsIDE5LCAxLCA1LCAwfSwKICAgICB7MTQsIDAsIDE1LCAwLCA0LCAwfSwKKyAgICB7MzAsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjksIDAsIDE5LCAwLCAzLCAxMzZ9LAogICAgIHszMCwgMCwgMTEsIDAsIDQsIDB9LAogICAgIHsyNywgMCwgMTEsIDAsIDQsIDB9LApAQCAtNDksNiArNDksNyBAQAogICAgIHsyLCAwLCAxLCAwLCA1LCAxMH0sCiAgICAgezEsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxLCAwLCAxLCAwLCA0LCAxMzZ9LAorICAgIHsyLCAwLCAxLCAwLCA0LCAxMzZ9LAogICAgIHsyLCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MTksIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxLCAwLCAxLCAwLCA1LCAxMzZ9LApAQCAtODcsNiArODgsNyBAQAogICAgIHs2LCAwLCAxNCwgMCwgNSwgMH0sCiAgICAgezI2LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MjEsIDAsIDE5LCAwLCA1LCAwfSwKKyAgICB7MjgsIDAsIDExLCAwLCA1LCAwfSwKICAgICB7NCwgMjIwLCAxNCwgMCwgNSwgMH0sCiAgICAgezQsIDIyMiwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMjgsIDE0LCAwLCA1LCAwfSwKQEAgLTEzNCw2ICsxMzYsNyBAQAogICAgIHsxOSwgMCwgNSwgMCwgNSwgMTM2fSwKICAgICB7NywgMCwgOSwgMCwgNSwgMH0sCiAgICAgezMwLCAwLCA1LCAwLCA1LCAwfSwKKyAgICB7MTQsIDAsIDUsIDAsIDUsIDB9LAogICAgIHs0LCAzNiwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAwLCAxNCwgMCwgNSwgMH0sCiAgICAgezcsIDAsIDQsIDAsIDUsIDB9LApAQCAtMTQ4LDcgKzE1MSw2IEBACiAgICAgezQsIDcsIDE0LCAwLCA1LCAwfSwKICAgICB7NSwgMCwgMSwgMCwgNSwgODB9LAogICAgIHs1LCAwLCAxLCAwLCA1LCAxMH0sCi0gICAgezI4LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEsIDAsIDUsIDB9LAogICAgIHs0LCAwLCAxNCwgMCwgNSwgODB9LAogICAgIHs0LCAwLCAxNCwgMCwgNSwgMTB9LApAQCAtMTc1LDcgKzE3Nyw2IEBACiAgICAgezE5LCAwLCAxLCAwLCA1LCA4MH0sCiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMH0sCiAgICAgezgsIDAsIDEsIDAsIDUsIDB9LAotICAgIHsxNCwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezUsIDksIDEsIDAsIDUsIDB9LAogICAgIHs0LCAxLCAxNCwgMCwgNSwgMH0sCiAgICAgezQsIDIzNCwgMTQsIDAsIDUsIDB9LApAQCAtMTkwLDYgKzE5MSw3IEBACiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMTcwfSwKICAgICB7MTAsIDAsIDE4LCAwLCA1LCAxMzZ9LAogICAgIHsxNCwgMCwgMTUsIDAsIDUsIDB9LAorICAgIHsxNCwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE0LCAwLCA0LCAwLCA1LCAwfSwKICAgICB7MjEsIDAsIDE5LCAwLCA0LCAwfSwKICAgICB7MjEsIDAsIDE5LCAwLCA1LCAxMzZ9LApAQCAtMjU2LDcgKzI1OCw3IEBACiAgICAgezQsIDIyOCwgMTQsIDAsIDIsIDB9LAogICAgIHs0LCAyMzIsIDE0LCAwLCAyLCAwfSwKICAgICB7NCwgMjIyLCAxNCwgMCwgMiwgMH0sCi0gICAgezQsIDIyNCwgMTQsIDAsIDIsIDB9LAorICAgIHs1LCAyMjQsIDEsIDAsIDIsIDB9LAogICAgIHs4LCAwLCAxLCAwLCAyLCAxMzZ9LAogICAgIHsxOSwgMCwgMSwgMCwgMiwgMTB9LAogICAgIHs0LCA4LCAxNCwgMCwgMiwgODB9LApAQCAtMjY2LDcgKzI2OCw3IEBACiAgICAgezMwLCAwLCAxLCAwLCAyLCAwfSwKICAgICB7OSwgMCwgMSwgMCwgMiwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDIsIDEzNn0sCi0gICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKKyAgICB7OSwgMCwgMSwgMCwgNCwgMH0sCiAgICAgezksIDAsIDE5LCAwLCAyLCAxMzZ9LAogICAgIHsyOSwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE1LCAwLCAxLCAwLCA1LCAwfSwKQEAgLTMyNSwxMSArMzI3LDEyIEBACiAgICAgezI3LCAwLCAxLCAwLCA1LCAxMzZ9LAogICAgIHs3LCAwLCA5LCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTM2fSwKKyAgICB7MzAsIDAsIDEsIDAsIDQsIDB9LAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KLSNkZWZpbmUgVE9UQUxfRklSU1QgMzcwCi0jZGVmaW5lIFRPVEFMX0xBU1QgNTUKKyNkZWZpbmUgVE9UQUxfRklSU1QgMzcyCisjZGVmaW5lIFRPVEFMX0xBU1QgNTYKIHN0cnVjdCByZWluZGV4e2ludCBzdGFydDtzaG9ydCBjb3VudCxpbmRleDt9Owogc3RhdGljIHN0cnVjdCByZWluZGV4IG5mY19maXJzdFtdID0gewogICB7IDYwLCAyLCAwfSwKQEAgLTUzOCw2ICs1NDEsNyBAQAogICB7IDY5Nzg1LCAwLCAzNjd9LAogICB7IDY5Nzg3LCAwLCAzNjh9LAogICB7IDY5Nzk3LCAwLCAzNjl9LAorICB7IDY5OTM3LCAxLCAzNzB9LAogICB7MCwwLDB9CiB9OwogCkBAIC01NzQsNiArNTc4LDcgQEAKICAgeyA2OTY1LCAwLCA1MX0sCiAgIHsgMTI0NDEsIDEsIDUyfSwKICAgeyA2OTgxOCwgMCwgNTR9LAorICB7IDY5OTI3LCAwLCA1NX0sCiAgIHswLDAsMH0KIH07CiAKQEAgLTY3MSw1MTUgKzY3Niw1MTUgQEAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAKICAgICAzOSwgNDAsIDQxLCA0MSwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCAKICAgICA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKLSAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCAxNywgODQsIDg1LCA4NiwgODcsIDg4LCAKLSAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMSwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDIsIAotICAgIDEwMywgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwNCwgNDEsIDQxLCAxMDUsIDEwNiwgMTA3LCAKLSAgICAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTgsIDExOSwgCi0gICAgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIAotICAgIDExOSwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCAKKyAgICA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDIsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAzLCAxMDQsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDUsIDQxLCA0MSwgMTA2LCAxMDcsIAorICAgIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAKICAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjIsIDEyMywgMTI0LCAKLSAgICAxMjUsIDEyNiwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDE3LCAxMzcsIAotICAgIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTQyLCAxNywgMTQzLCAxNywgMTQ0LCAxNywgCi0gICAgMTQ1LCAxNywgMTQ2LCAxNywgMTcsIDE3LCAxNDcsIDE3LCAxNywgMTcsIDE0OCwgMTQ5LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNTAsIDE3LCAxNTEsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNTIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA0MSwgNDEsIDQxLCA0MSwgMTUzLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTU0LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA3OCwgCi0gICAgMTU1LCAxNTYsIDE1NywgMTU4LCAxNywgMTU5LCAxNywgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAKLSAgICAxNywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxODIsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxODMsIDEwMCwgMTg0LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxODUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE4NiwgMTcsIDE4NywgCi0gICAgMTg4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxODksIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTg5LCAKKyAgICAxMjAsIDEyMCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMiwgMTIyLCAxMjMsIDEyNCwgCisgICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDg0LCAKKyAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTQzLCA4NCwgMTQ0LCAxNDUsIDE0NiwgCisgICAgODQsIDE0NywgODQsIDE0OCwgODQsIDg0LCA4NCwgMTQ5LCA4NCwgODQsIDg0LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE1NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU1LCA4NCwgMTU2LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTU3LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgNDEsIDQxLCA0MSwgNDEsIDE1OCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgMTU5LCAxNjAsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTYxLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA3OCwgMTYyLCAxNjMsIDE2NCwgMTY1LCA4NCwgMTY2LCA4NCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCisgICAgMTczLCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTc1LCAxNzYsIDg0LCA4NCwgMTc3LCAxNzgsIDE3OSwgCisgICAgMTgwLCAxODEsIDg0LCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE5MSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE5MiwgCisgICAgMTAxLCAxOTMsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCAxMjIsIDEyMiwgMTIyLCAxMjIsIDE5NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgMTk1LCA4NCwgMTk2LCAxOTcsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDE5OCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxOTgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTE5MSwxNDAxICsxMTk2LDE0NjQgQEAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKICAgICAyMCwgMjAsIDksIDE2LCAxMCwgMTYsIDEsIDEsIDEsIDEsIDEsIDEsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIxLCAyMiwgOCwgOCwgMjMsIDgsIDI0LCAKLSAgICAyNSwgMjYsIDI3LCAyOCwgMjksIDE2LCAzMCwgMjUsIDMxLCAzMiwgMzMsIDM0LCAzNCwgMjYsIDM1LCAyNSwgMjIsIDI2LCAKLSAgICAzNCwgMjgsIDM2LCAzNywgMzcsIDM3LCAyMiwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzksIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAyMiwgMjUsIDI2LCAyNywgMjgsIDE2LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNCwgMjUsIDM1LCAyMiwgMjIsIDI1LCAKKyAgICAzNCwgMjcsIDM2LCAzNywgMzcsIDM3LCAyMiwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzksIDM4LCAzOCwgMzgsIDM4LCAKICAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MCwgMzksIDM4LCAzOCwgMzgsIDM4LCAKICAgICAzOCwgMzksIDQxLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQzLCA0MSwgNDMsIDQyLCA0MiwgNDIsIDQzLCA0MiwgNDIsIDQzLCAKICAgICA0MywgNDEsIDQzLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQwLCA0MSwgNDIsIDQyLCA0MywgNDIsIDQzLCA0MSwgNDMsIDM4LCAKICAgICA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDEsIDM4LCAKICAgICA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MSwgNDUsIDI4LCAzOCwgNDMsIDM4LCAKLSAgICA0MywgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ1LCAyOCwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQyLCAKLSAgICAyOCwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MSwgNDUsIDQ2LCAzOCwgNDMsIDM4LCAKKyAgICA0MywgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ1LCA0NiwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQyLCAKKyAgICA0NiwgMzksIDQxLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzNSwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCAzOCwgNDMsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCAzOCwgNDMsIDQ0LCA0NCwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ2LCA0NywgNDQsIDQ2LCA0NiwgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDksIDM1LCAKLSAgICA0OCwgNDksIDM1LCA0OCwgNDksIDM1LCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAKLSAgICAzOCwgNDIsIDM4LCA0MiwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0OCwgNDksIDM1LCAzOCwgNDMsIDQ0LCA0NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICAzNSwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NCwgNDcsIDQ0LCAzOCwgNDMsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCAzOCwgNDMsIDQ0LCA0NCwgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ3LCA0OCwgNDQsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNTAsIDM1LCAKKyAgICA0OSwgNTAsIDM1LCA0OSwgNTAsIDM1LCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAKKyAgICAzOCwgNDIsIDM4LCA0MiwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0OSwgNTAsIDM1LCAzOCwgNDMsIDQ0LCA0NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDQ0LCAKLSAgICA0NiwgNDQsIDQ2LCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCA0MSwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDEsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDcsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUxLCA1MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUzLCAKLSAgICA1MywgNTQsIDUzLCA1MSwgNTUsIDUxLCA1NSwgNTUsIDU1LCA1MSwgNTUsIDUxLCA1MSwgNTYsIDUyLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCAyNiwgMjYsIDI2LCAyNiwgNTcsIDI2LCA1MywgNTQsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUxLCA1MywgNTIsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTgsIDU4LCA1OCwgNTgsIDU4LCA1OSwgNTgsIDU4LCA1OCwgNTgsIDU4LCAKLSAgICA1OCwgNTgsIDU5LCA1OSwgNTgsIDU5LCA1OCwgNTksIDU4LCA1OCwgNjAsIDYxLCA2MSwgNjEsIDYxLCA2MCwgNjIsIDYxLCAKLSAgICA2MSwgNjEsIDYxLCA2MSwgNjMsIDYzLCA2NCwgNjQsIDY0LCA2NCwgNjUsIDY1LCA2MSwgNjEsIDYxLCA2MSwgNjQsIDY0LCAKLSAgICA2MSwgNjQsIDY0LCA2MSwgNjEsIDY2LCA2NiwgNjYsIDY2LCA2NywgNjEsIDYxLCA2MSwgNjEsIDU5LCA1OSwgNTksIDY4LCAKLSAgICA2OCwgNTgsIDY4LCA2OCwgNjksIDU5LCA2MSwgNjEsIDYxLCA1OSwgNTksIDU5LCA2MSwgNjEsIDcwLCA1OSwgNTksIDU5LCAKLSAgICA2MSwgNjEsIDYxLCA2MSwgNTksIDYwLCA2MSwgNjEsIDU5LCA3MSwgNzIsIDcyLCA3MSwgNzIsIDcyLCA3MSwgNTksIDU5LCAKLSAgICA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDQ0LCA0NiwgNDQsIDQ2LCA3MywgNTMsIDQ0LCAKLSAgICA0NiwgMCwgMCwgNTAsIDQ2LCA0NiwgNDYsIDc0LCAwLCAwLCAwLCAwLCAwLCA1NywgNzUsIDM4LCA3NCwgMzgsIDM4LCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MiwgNTIsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1NCwgCisgICAgNTQsIDU1LCA1NCwgNTIsIDU2LCA1MiwgNTYsIDU2LCA1NiwgNTIsIDU2LCA1MiwgNTIsIDU3LCA1MywgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgMjUsIDI1LCAyNSwgMjUsIDU4LCAyNSwgNTQsIDU1LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTQsIDUzLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU5LCA1OSwgNTksIDU5LCA1OSwgNjAsIDU5LCA1OSwgNTksIDU5LCA1OSwgCisgICAgNTksIDU5LCA2MCwgNjAsIDU5LCA2MCwgNTksIDYwLCA1OSwgNTksIDYxLCA2MiwgNjIsIDYyLCA2MiwgNjEsIDYzLCA2MiwgCisgICAgNjIsIDYyLCA2MiwgNjIsIDY0LCA2NCwgNjUsIDY1LCA2NSwgNjUsIDY2LCA2NiwgNjIsIDYyLCA2MiwgNjIsIDY1LCA2NSwgCisgICAgNjIsIDY1LCA2NSwgNjIsIDYyLCA2NywgNjcsIDY3LCA2NywgNjgsIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjAsIDYwLCA2OSwgCisgICAgNjksIDU5LCA2OSwgNjksIDcwLCA2MCwgNjIsIDYyLCA2MiwgNjAsIDYwLCA2MCwgNjIsIDYyLCA3MSwgNjAsIDYwLCA2MCwgCisgICAgNjIsIDYyLCA2MiwgNjIsIDYwLCA2MSwgNjIsIDYyLCA2MCwgNzIsIDczLCA3MywgNzIsIDczLCA3MywgNzIsIDYwLCA2MCwgCisgICAgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA0NCwgNDcsIDQ0LCA0NywgNzQsIDU0LCA0NCwgCisgICAgNDcsIDAsIDAsIDUxLCA0NywgNDcsIDQ3LCA3NSwgMCwgMCwgMCwgMCwgMCwgNTgsIDc2LCAzOCwgNzUsIDM4LCAzOCwgMzgsIAogICAgIDAsIDM4LCAwLCAzOCwgMzgsIDQzLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDAsIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKICAgICA0MywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAKLSAgICA0NiwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MywgNDMsIDQzLCA0MywgNDQsIDM1LCAzNSwgNDgsIDc2LCAKLSAgICA3NiwgMzUsIDM1LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMzUsIDM1LCAzNSwgNDYsIDQ4LCAzNSwgNzcsIDQ0LCAKLSAgICA0NiwgNDgsIDQ0LCA0NiwgNDYsIDQ0LCA0NCwgNDQsIDM4LCA3OCwgNDQsIDM4LCA0NCwgNDQsIDQ0LCAzOCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDM4LCAzOCwgMzgsIDQ0LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCA3OCwgMzksIDM5LCAKKyAgICA0NywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MywgNDMsIDQzLCA0MywgNDQsIDM1LCAzNSwgNDksIDc3LCAKKyAgICA3NywgMzUsIDM1LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMzUsIDM1LCAzNSwgNDcsIDQ5LCAzNSwgNzgsIDQ0LCAKKyAgICA0NywgNDksIDQ0LCA0NywgNDcsIDQ0LCA0NCwgNDQsIDM4LCA3OSwgNDQsIDM4LCA0NCwgNDQsIDQ0LCAzOCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDM4LCAzOCwgMzgsIDQ0LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCA3OSwgMzksIDM5LCAKICAgICAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAKICAgICAzOSwgMzksIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQyLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAKICAgICA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDMsIDQyLCAKLSAgICA0NiwgNDMsIDQ2LCA0NiwgNDYsIDQzLCA0NiwgNDYsIDQ2LCA0NiwgNDMsIDQzLCA0MywgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA3OSwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MSwgODEsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCAKLSAgICAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAKLSAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKLSAgICAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgCisgICAgNDcsIDQzLCA0NywgNDcsIDQ3LCA0MywgNDcsIDQ3LCA0NywgNDcsIDQzLCA0MywgNDMsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgODAsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODIsIDgyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNTIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMzUsIAotICAgIDAsIDgyLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgODQsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDgwLCA4MCwgODUsIDg0LCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4MCwgODAsIDg0LCA4MCwgODAsIDg1LCAKLSAgICA4NiwgODAsIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIAotICAgIDEwMiwgMTAzLCAxMDQsIDEwMiwgODAsIDg0LCAxMDIsIDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDIsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAxMDYsIDEwNiwgCi0gICAgMTA2LCAwLCAwLCA3NywgNzcsIDEwNywgMTA4LCAxMDgsIDEwOSwgMTEwLCAxMTEsIDI3LCAyNywgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCAxMTIsIDExMywgMTE0LCAxMTEsIDAsIDAsIDExMSwgMTExLCAxMTUsIDExNSwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE3LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExOCwgMTE5LCAxMjAsIAotICAgIDExMiwgMTEzLCAxMTQsIDEyMSwgMTIyLCAxMjMsIDEyMywgMTI0LCA4NCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIAotICAgIDgwLCA4NCwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMDgsIDEyNiwgMTI2LCAKLSAgICAxMTEsIDExNSwgMTE1LCAxMjcsIDExNSwgMTE1LCAxMTUsIDExNSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE2LCAKLSAgICAxMTUsIDExNiwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTYsIDExMSwgMTE1LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTA2LCAyNywgCi0gICAgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgMTE3LCAxMTcsIDgwLCA4MCwgMjcsIDg0LCA4MCwgODAsIDg0LCAxMTUsIDExNSwgCi0gICAgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMTUsIDExNSwgMTE1LCAxMzAsIAotICAgIDEzMCwgMTE1LCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAKLSAgICAxMTEsIDExMSwgMCwgMTA2LCAxMTUsIDEzMSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgODAsIDg0LCA4MCwgODAsIDg0LCA4MCwgODAsIDg0LCA4NCwgCi0gICAgODQsIDgwLCA4NCwgODQsIDgwLCA4NCwgODAsIDgwLCA4MCwgODQsIDgwLCA4NCwgODAsIDg0LCA4MCwgODQsIDgwLCA4MCwgCi0gICAgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgMTM0LCAxMzQsIDI3LCAxMzUsIDEzNSwgMTM1LCAxMzQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODAsIDgwLCA4MCwgODAsIDEzNCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM0LCA4MCwgODAsIDgwLCAxMzQsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCA4NCwgODQsIDg0LCAKLSAgICAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDEzMiwgMTM2LCAxMzgsIDQ3LCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzksIDEzNiwgMTM2LCA0NywgODAsIDg0LCA4MCwgODAsIAotICAgIDEzMiwgMTMyLCAxMzIsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCA0NywgNDcsIDEzMiwgMTMyLCAKLSAgICA4MiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgODIsIDUyLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMTMyLCAxMzYsIDEzNiwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAKLSAgICAxNDMsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDAsIDEzNiwgMTM2LCAwLCAwLCAxNDQsIDE0NCwgMTM5LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMCwgMTQwLCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgCi0gICAgMTQ1LCAxNDUsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDc5LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMTQwLCAwLCA0NywgMTQwLCAwLCA0NywgNDcsIDAsIDAsIAotICAgIDE0MiwgMCwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTM5LCAwLCAwLCAwLCAxMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MCwgMTQwLCAxNDAsIDQ3LCAwLCAxNDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTMyLCAKLSAgICAxMzIsIDQ3LCA0NywgNDcsIDEzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCAKLSAgICA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDEzMiwgMTMyLCAxMzYsIDAsIDEzNiwgCi0gICAgMTM2LCAxMzksIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDE0NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgNDcsIDE0MywgCi0gICAgMTMyLCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMCwgMTM2LCAxNDQsIDAsIDAsIDE0NCwgMTQ0LCAxMzksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NywgMTQzLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMCwgNDcsIDQ3LCA0NywgMTMyLCAKLSAgICAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNzksIDQ3LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDQ3LCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDEzNywgNDcsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDAsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAxNDMsIDEzNiwgMTMyLCAKLSAgICAxMzYsIDEzNiwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAwLCAwLCA0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0NiwgMTQ2LCAxNDYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDE0NSwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAwLCAxMzIsIDEzMiwgMTQ4LCAwLCAxMzIsIDEzMiwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0OSwgMTUwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCA3OSwgMCwgMCwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAxMzYsIDE1MiwgMTQ0LCAxMzYsIAotICAgIDE0MywgMTM2LCAxMzYsIDAsIDE1MiwgMTQ0LCAxNDQsIDAsIDE0NCwgMTQ0LCAxMzIsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTQzLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAwLCAxMzYsIDEzNiwgMTM2LCAwLCAxNDQsIDE0NCwgMTQ0LCAxMzksIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgCi0gICAgNzksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDE1MywgMCwgMCwgMCwgMCwgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMCwgMTMyLCAwLCAxMzYsIDEzNiwgMTQ0LCAxMzYsIDE0NCwgMTQ0LCAxNDQsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCAxNTQsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTU1LCAxNTUsIDEzOSwgMCwgMCwgMCwgMCwgMTQ1LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA1MiwgMTMyLCAxNTYsIDE1NiwgMTU2LCAxNTYsIDEzMiwgMTMyLCAxMzIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAzNSwgCisgICAgMCwgODMsIDg0LCAwLCAwLCAwLCAwLCA4NSwgMCwgODYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODcsIDg2LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg3LCAKKyAgICA4OCwgODEsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIAorICAgIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA0LCA4MSwgODYsIDEwNCwgOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNywgMTA3LCAxMDcsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMCwgNzgsIDc4LCAxMDksIDExMCwgMTEwLCAxMTEsIDExMiwgMTEzLCAyNiwgMjYsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTE0LCAxMTUsIDExNiwgMTEzLCAwLCAwLCAxMTMsIDExMywgMTE3LCAxMTcsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExOSwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMjAsIAorICAgIDEyMSwgMTIyLCAxMTQsIDExNSwgMTE2LCAxMjMsIDEyNCwgMTI1LCAxMjUsIDEyNiwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODYsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTEwLCAKKyAgICAxMjgsIDEyOCwgMTEzLCAxMTcsIDExNywgMTI5LCAxMTcsIDExNywgMTE3LCAxMTcsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExOCwgMTE3LCAxMTgsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE4LCAxMTMsIDExNywgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDEwOCwgMjYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDExOSwgMTE5LCA4MSwgODEsIDI2LCA4NiwgODEsIDgxLCA4NiwgCisgICAgMTE3LCAxMTcsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTE3LCAxMTcsIAorICAgIDExNywgMTMyLCAxMzIsIDExNywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDEzMywgMTE3LCAxMzQsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCAKKyAgICA4NiwgODYsIDg2LCA4MSwgODYsIDg2LCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgODEsIDg2LCAKKyAgICA4MSwgODEsIDAsIDAsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEzNywgMTM3LCAyNiwgMTM4LCAxMzgsIDEzOCwgMTM3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIAorICAgIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAKKyAgICAxMDQsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODYsIDg2LCA4NiwgCisgICAgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDAsIDQ3LCAwLCAwLCA0NywgNDcsIDAsIDQ3LCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgNDcsIAotICAgIDAsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDE1NCwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNTcsIAotICAgIDE1NywgMCwgMTMyLCAxMzIsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDUyLCAwLCAxNTgsIDE1OCwgMTU4LCAKLSAgICAxNTgsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIAotICAgIDAsIDE1NCwgMTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNzksIDc5LCA3OSwgODIsIDgyLCA4MiwgODIsIAotICAgIDgyLCA4MiwgODIsIDgyLCAxNTksIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA3OSwgODQsIDg0LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgNzksIDg0LCA3OSwgODQsIDc5LCAKLSAgICAxNjAsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MCwgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjUsIDE2NSwgMTY3LCAxNjUsIDE2NywgMTY0LCAxNjQsIAotICAgIDE2NCwgMTY0LCAxMzIsIDEzNiwgMTY0LCAxNjUsIDgwLCA4MCwgMTM5LCA4MiwgODAsIDgwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCAwLCA3OSwgNzksIDgyLCA4MiwgODIsIDgyLCA4MiwgNzksIDc5LCA3OSwgNzksIDgyLCAKLSAgICA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIAotICAgIDEzNiwgMTMyLCAxNDcsIDEzMiwgMTMyLCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNDIsIDEzNiwgMTM5LCAKLSAgICAxMzksIDEzNiwgMTM2LCAxMzIsIDEzMiwgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgNDcsIDEzNiwgMTM2LCAxMzYsIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgODQsIDQ3LCAxMzYsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTM2LCAxMzYsIDEzNiwgMTMyLCA3OSwgNzksIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTcsIDAsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgCisgICAgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCAxMjAsIDEyMSwgMTIyLCA4MSwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCA4MSwgODEsIDgxLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAKKyAgICAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxNDIsIDEzOSwgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDE0MywgMTQzLCAKKyAgICAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAxMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDEzNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAKKyAgICAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAKKyAgICAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAKKyAgICAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCisgICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAwLCAKKyAgICAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIDE0NywgCisgICAgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAxMzksIDAsIAorICAgIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAxNDcsIAorICAgIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIAorICAgIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgCisgICAgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE2NSwgCisgICAgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTM1LCAxMzksIAorICAgIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTQ5LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgMTQyLCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDUwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCA0NywgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OSwgMTY5LCAxNjksIDE2OSwgCi0gICAgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDc5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTYxLCAKLSAgICAxNjIsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA4MiwgODIsIDE3MSwgMTcxLCAxNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMTMyLCAxMzIsIDEzOSwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDAsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcyLCAxNzIsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM5LCAKLSAgICAxMzIsIDgyLCA4MiwgODIsIDUyLCA4MiwgODIsIDgyLCAxNDUsIDQ3LCA4MCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDgzLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzMiwgMTMyLCAxMzIsIDE3MCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA4NiwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgMTM2LCAxMzYsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDg1LCA4MCwgODQsIDAsIDAsIDAsIDAsIDI3LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzYsIDEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDYsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgwLCA4NCwgMTM2LCAxMzYsIDEzNiwgMCwgMCwgODIsIDgyLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgCi0gICAgMTMyLCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMTM5LCAxMzYsIDEzMiwgMTM2LCAxMzYsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4NCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAKLSAgICA1MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAorICAgIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxMzUsIDgzLCA4MywgCisgICAgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTcyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDg4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgODcsIDgxLCA4NiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCisgICAgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDg2LCAxMzksIDEzOSwgMTM5LCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxNDIsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDEzNywgNDcsIDEzNywgNDcsIDEzNywgNDcsIDEzNywgNDcsIDEzNywgNDcsIDQ3LCA0NywgMTM3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDIsIDE0MywgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE0NCwgMTMyLCAxNDQsIDEzNiwgMTM2LCAxNDQsIDE0NCwgMTMyLCAxNDQsIAotICAgIDE3MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA4MCwgODQsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCAwLCAwLCAwLCAxMzIsIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxNzMsIDAsIAotICAgIDAsIDAsIDQ3LCA0NywgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDE0MCwgNDgsIAorICAgIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzQsIDE0MiwgMTM5LCAxMzksIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDE3NCwgMTc0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxNDUsIDAsIDAsIDAsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MywgMTc1LCA4NiwgODYsIDg2LCA4NiwgODYsIAorICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTQyLCAxMzYsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgCi0gICAgMTM2LCAxMzIsIDE0MiwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MiwgMTc0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDgwLCA4MCwgODQsIDg0LCA4NCwgODQsIDgwLCAxMzYsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgNDcsIDQ3LCA0NywgNDcsIDg0LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCA1MCwgNTAsIDUyLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA4MCwgCi0gICAgODAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCA4MCwgMTc1LCAxNzYsIDg0LCAxNzcsIDgwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzYsIDE3NywgODYsIDE3OCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OSwgODYsIAorICAgIDgxLCA4NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODAsIDQ3LCA0NywgNDQsIDQ3LCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgCisgICAgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MSwgNDMsIDE4MSwgNDMsIDE4MSwgNDMsIDE4MSwgNDMsIDE4MSwgCisgICAgNDMsIDE4MSwgNDMsIDE4MSwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODIsIDE4MiwgMTgyLCAKKyAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODIsIDE4MiwgMTgyLCAKKyAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODIsIDE4MiwgMTgyLCAKKyAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgCisgICAgMTgyLCA1OCwgMTgxLCA1OCwgNTgsIDc2LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODMsIDM4LCAxODMsIDE4MiwgCisgICAgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgxLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgMCwgNzYsIDc2LCAKKyAgICA3NiwgNDMsIDQzLCA0MywgMTgxLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgzLCAzOCwgNzYsIDE4NCwgMTg0LCAKKyAgICAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODMsIDM4LCAxODMsIDE4MiwgMTg0LCA1OCwgMCwgMTg1LCAxODUsIAorICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4OCwgMTg5LCAKKyAgICAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgCisgICAgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAKKyAgICAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgCisgICAgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDIxMCwgNTEsIDAsIDAsIDM0LCAyMTAsIDIxMCwgMjEwLCAyMTAsIDIxMCwgCisgICAgMjExLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjEwLCAzNCwgMzQsIDM0LCAzNCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAKKyAgICAyMTAsIDIxMSwgMjExLCAyMTIsIDIxMywgMjE0LCAwLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgMCwgMCwgMCwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAyMTYsIDIxNywgODUsIDg1LCAKKyAgICAyMywgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc1LCAxNzUsIDgxLCA4MSwgCisgICAgODEsIDgxLCAxNzUsIDE3NSwgMTc1LCA4MSwgODEsIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc1LCAxNzUsIAorICAgIDgxLCA4NiwgODEsIDE3NSwgMTc1LCA4NiwgODYsIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIxOCwgMjE4LCA0OSwgMjE5LCAyNiwgMjE5LCAyMTgsIDQ5LCAyNiwgMjE5LCAzNSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgMjYsIDQ5LCAyMTksIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgCisgICAgMjYsIDIxOCwgMjE5LCAyMTksIDI2LCA0OSwgMjYsIDIyMCwgMjYsIDQ5LCAyNiwgMTgzLCAyMjAsIDQ5LCA0OSwgMjIxLCAKKyAgICAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjE4LCAzNSwgMzUsIDQ5LCA0OSwgCisgICAgMjIyLCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjMsIAorICAgIDIyMywgMjIzLCAzNywgMzcsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDM3LCAzNywgMzcsIDM3LCAyMjMsIDIyNCwgCisgICAgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNSwgMjI1LCAyMjUsIAorICAgIDIyNSwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDIyNSwgMjI1LCAKKyAgICAyMjUsIDIyNSwgMjI1LCAxNzMsIDE3MywgMTczLCA0NCwgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMjYsIDIyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjcsIDIyNiwgMjI2LCAyNiwgMjYsIDQwLCAyNiwgNDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjI4LCAyMjksIDIyOSwgMjMwLCA3OCwgNzgsIDQwLCAyMjksIDIzMCwgCisgICAgMjI4LCAyMjksIDIzMCwgMjI4LCA3OCwgNDAsIDc4LCAyMjksIDIzMSwgMjMyLCA3OCwgMjI5LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDIyOSwgMjI4LCAyMjgsIDIyOSwgNDAsIDIyOSwgMjI5LCAyMjgsIDIyOCwgNDAsIDIzMCwgNDAsIDIzMCwgNDAsIDQwLCA0MCwgCisgICAgNDAsIDIyOSwgMjMzLCAyMjIsIDIyOSwgMjIyLCAyMjIsIDIyOCwgMjI4LCAyMjgsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjI4LCAKKyAgICA3OCwgMjI4LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMjgsIDIyOCwgMjMwLCAyMjgsIDIyOCwgMjMwLCAyMjksIAorICAgIDIzMCwgMjI4LCAyMjgsIDIyOSwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjksIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjM0LCA0MCwgMjMwLCA3OCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIAorICAgIDIyOCwgMjI5LCAyMjksIDc4LCAyMjYsIDIzNCwgMjM0LCAyMzAsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMjgsIDIyOCwgCisgICAgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMjksIDIyOSwgMjMwLCAyMzAsIAorICAgIDIyOSwgMjI5LCAyMzAsIDIzMCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgCisgICAgNDAsIDc4LCA3OCwgMjI4LCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDQwLCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjksIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAKKyAgICAyMzAsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjMwLCAyMzAsIDIzMCwgNzgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyOCwgMjI4LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM1LCAyMzYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTc4LCA4NCwgODAsIDg0LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE3OSwgNDYsIAotICAgIDQ2LCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAKLSAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgwLCA0MywgMTgwLCA0MywgMTgwLCA0MywgMTgwLCAKLSAgICA0MywgMTgwLCA0MywgMTgwLCA0MywgMTgwLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MSwgCi0gICAgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MSwgCi0gICAgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MSwgCi0gICAgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAKLSAgICAzOCwgMTgyLCAxODEsIDU3LCAxODAsIDU3LCA1NywgNzUsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4MiwgMzgsIAotICAgIDE4MiwgMTgxLCA3NSwgNzUsIDc1LCA0MywgNDMsIDQzLCAxODAsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgyLCAwLCAKLSAgICA3NSwgNzUsIDc1LCA0MywgNDMsIDQzLCAxODAsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODIsIDM4LCA3NSwgCi0gICAgMTgzLCAxODMsIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4MiwgMzgsIDE4MiwgMTgxLCAxODMsIDU3LCAwLCAKLSAgICAxODQsIDE4NCwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTcyLCAxODcsIDE4OCwgMTg5LCA4MywgMTg4LCAxODgsIDE4OCwgMjIsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTEsIAotICAgIDE5MiwgMTkzLCAxOTQsIDIyLCAyMiwgMjIsIDEzNSwgMTk1LCAxOTUsIDE5NSwgMjIsIDE5NiwgMTk3LCAxOTgsIDE5OSwgCi0gICAgMjAwLCAyMDEsIDIwMiwgMjEsIDIwMywgMTA4LCAyMDMsIDIwNCwgMjA1LCAyMiwgMTkwLCAxOTAsIDEzNSwgMjksIDM2LCAKLSAgICAyMiwgMTkwLCAxMzUsIDE5NSwgMjA2LCAyMDYsIDEzNSwgMTM1LCAxMzUsIDIwNywgMTYxLCAxNjIsIDE5MCwgMTkwLCAxOTAsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA3NywgMTM1LCAyMDYsIDEzNSwgMTM1LCAxOTAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTg1LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMjA4LCA1MCwgMCwgMCwgMzQsIDIwOCwgMjA4LCAyMDgsIDIwOCwgCi0gICAgMjA4LCAyMDksIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMDgsIDM0LCAzNCwgMzQsIDM0LCAyMDgsIDIwOCwgMjA4LCAKLSAgICAyMDgsIDIwOCwgMjA5LCAyMDksIDIxMCwgMjExLCAyMTIsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjE0LCAKLSAgICAyMTUsIDE0NSwgMTQ1LCAyMywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MCwgODAsIDE3NCwgMTc0LCA4MCwgODAsIDgwLCA4MCwgMTc0LCAxNzQsIDE3NCwgODAsIDgwLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODAsIDgxLCA4MSwgODEsIDE3NCwgMTc0LCA4MCwgODQsIDgwLCAxNzQsIDE3NCwgODQsIDg0LCA4NCwgODQsIDgwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTYsIDIxNiwgNDgsIDIxNywgMjcsIDIxNywgCi0gICAgMjE2LCA0OCwgMjcsIDIxNywgMzUsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgMjgsIDI3LCA0OCwgMjE3LCAKLSAgICAyNywgNzcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMjcsIDI3LCAyMTYsIDIxNywgMjE3LCAyNywgNDgsIDI3LCAyMTgsIDI3LCAKLSAgICA0OCwgMjcsIDE4MiwgMjE4LCA0OCwgNDgsIDIxOSwgMzUsIDQ4LCA0OCwgNDQsIDQ4LCAzNSwgMTU0LCAxNTQsIDE1NCwgCi0gICAgMTU0LCAzNSwgMjcsIDIxNiwgMzUsIDM1LCA0OCwgNDgsIDIyMCwgNzcsIDc3LCA3NywgNzcsIDQ4LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMjcsIDc3LCAyNywgMjcsIDQ2LCA3OSwgMjIxLCAyMjEsIDIyMSwgMzcsIDM3LCAyMjEsIDIyMSwgMjIxLCAyMjEsIAotICAgIDIyMSwgMjIxLCAzNywgMzcsIDM3LCAzNywgMjIxLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgCi0gICAgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIAotICAgIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMTcxLCAxNzEsIDE3MSwgNDQsIDQ2LCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDM3LCAwLCAwLCAwLCAwLCAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjI0LCAyMjQsIDI3LCAyNywgMjcsIDI3LCA3NywgMjcsIDI3LCA3NywgMjcsIDI3LCA3NywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDIyNCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjI1LCAKLSAgICAyMjQsIDIyNCwgMjcsIDI3LCA0MCwgMjcsIDQwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNDAsIDIyNiwgMjI3LCAKLSAgICAyMjcsIDIyOCwgNzcsIDc3LCA0MCwgMjI3LCAyMjgsIDIyNiwgMjI3LCAyMjgsIDIyNiwgNzcsIDQwLCA3NywgMjI3LCAyMjksIAotICAgIDIzMCwgNzcsIDIyNywgMjI2LCA3NywgNzcsIDc3LCAyMjcsIDIyNiwgMjI2LCAyMjcsIDQwLCAyMjcsIDIyNywgMjI2LCAKLSAgICAyMjYsIDQwLCAyMjgsIDQwLCAyMjgsIDQwLCA0MCwgNDAsIDQwLCAyMjcsIDIzMSwgMjIwLCAyMjcsIDIyMCwgMjIwLCAyMjYsIAotICAgIDIyNiwgMjI2LCA0MCwgNDAsIDQwLCA0MCwgNzcsIDIyNiwgNzcsIDIyNiwgMjI3LCAyMjcsIDIyNiwgMjI2LCAyMjYsIDIyOCwgCi0gICAgMjI2LCAyMjYsIDIyOCwgMjI2LCAyMjYsIDIyOCwgMjI3LCAyMjgsIDIyNiwgMjI2LCAyMjcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjI3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIzMiwgNDAsIAotICAgIDIyOCwgNzcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI2LCAyMjYsIDIyNywgMjI3LCA3NywgMjI0LCAyMzIsIDIzMiwgMjI4LCAKLSAgICAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjgsIDIyOCwgMjI3LCAyMjcsIDIyOCwgMjI4LCAyMjcsIDIyNywgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDQwLCA3NywgNzcsIDIyNiwgNDAsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCA0MCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgMjI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIzMywgMjM0LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDI3LCA3NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjIxLCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgCi0gICAgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI1LCA0MCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNSwgNDAsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI1LCAKLSAgICAyNywgNDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAxNjEsIDE2MiwgCi0gICAgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMjM2LCAyMzYsIAotICAgIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMjYsIDc3LCA3NywgMjI2LCAyMjYsIDE2MSwgMTYyLCA3NywgMjI2LCAKLSAgICAyMjYsIDc3LCAwLCAyMjYsIDAsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgOSwgMTAsIDksIDEwLCA5LCAKLSAgICAxMCwgOSwgMTAsIDE2MSwgMTYyLCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDE2MSwgMTYyLCA5LCAxMCwgMTYxLCAxNjIsIDE2MSwgCi0gICAgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIAotICAgIDE2MiwgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMTYxLCAxNjIsIDE2MSwgMTYyLCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgNzcsIDc3LCAxNjEsIDE2MiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyMCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDIyNiwgNzcsIDIyNiwgCi0gICAgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCAyMjYsIDc3LCA3NywgMjI2LCAyMjAsIDIxMCwgMjEwLCA3NywgNzcsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMzcsIDc3LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgNzcsIDc3LCAyMjYsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgMjI2LCA3NywgNzcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAwLCA0NCwgNDYsIAotICAgIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ2LCA0NCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMzUsIDUwLCA0NCwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNDQsIDQ2LCA0NCwgNDYsIDgwLCA4MCwgODAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTUxLCAxMzUsIDEzNSwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjIzLCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCisgICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAorICAgIDIzOCwgMjM4LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDE2MywgMTY0LCA3OCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDI5LCAzNiwgMjksIDM2LCAxMzUsIDEzNSwgMTM1LCAyOSwgMzYsIDEzNSwgMjksIAotICAgIDM2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MywgMTM1LCAxMzUsIDgzLCAxMzUsIAotICAgIDI5LCAzNiwgMTM1LCAxMzUsIDI5LCAzNiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOSwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAwLCAwLCAwLCAwLCAyNDAsIDI0MSwgMjQxLCAyNDEsIAotICAgIDIzOCwgMjQyLCAxNjgsIDI0MywgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAKLSAgICAyMzgsIDIzOCwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OCwgCi0gICAgMjM4LCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDksIDI1MCwgMjUxLCAyNTIsIAotICAgIDI1MywgMjUzLCAyNDYsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyMzksIDIzOCwgMjU0LCAyNTQsIDI1NCwgMjQyLCAKLSAgICAxNjgsIDI0MSwgMjM4LCAyNywgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgCi0gICAgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMjU1LCAxNjgsIAotICAgIDI1NSwgMTY4LCAyNTUsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAKLSAgICAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDAsIDAsIDI1NiwgMjU2LCAyNTcsIDI1NywgMjQyLCAyNTgsIDI1OSwgCi0gICAgMjQ2LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjU1LCAxNjgsIAotICAgIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIAotICAgIDE2OCwgMjU1LCAyNTUsIDE2OCwgMjU1LCAyNTUsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDE2OCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNDEsIDI0MiwgMjQyLCAyNTgsIDI1OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMCwgMjYwLCAyNjAsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyMzksIDIzOSwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjM5LCAyNjQsIDI2NCwgCi0gICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgCi0gICAgMjM5LCAyMzksIDI2MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjQsIDI2NCwgMjY0LCAyNjQsIAotICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIDIzOSwgMjM5LCAyMzksIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyMzksIDIzOSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNDIsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCAxMzUsIDEzNSwgCi0gICAgMTM1LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NywgODAsIDgxLCA4MSwgODEsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAxMzUsIDUxLCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCA4MCwgODAsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA1MCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA1MSwgMjY1LCAyNjUsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICAwLCA0NCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgNDcsIDQ3LCA0NywgMTM5LCA0NywgNDcsIDQ3LCA0NywgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgMTM2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgNzksIDc5LCAxNDUsIDIxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM2LCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDgyLCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDg0LCA4NCwgODQsIDgyLCAKLSAgICA4MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTM2LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MiwgMTM2LCAxMzYsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTczLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgNTIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTMyLCAxMzYsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgCi0gICAgMCwgODIsIDgyLCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA1MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNzksIDc5LCA3OSwgNDcsIDEzNiwgMCwgMCwgMCwgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODAsIDQ3LCA4MCwgODAsIDg0LCA0NywgCi0gICAgNDcsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MCwgODAsIDQ3LCA4MCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNTIsIDgyLCA4MiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAxNjMsIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjIsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDc4LCAyMjgsIDc4LCA3OCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgCisgICAgMjIyLCAyMTIsIDIxMiwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjM5LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgNzgsIDIyOCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzIsIAotICAgIDEzNiwgMTM2LCA4MiwgMTM2LCAxMzksIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNjgsIDE2OCwgMjY4LCAxNjgsIDI2OCwgMTY4LCAxNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTY4LCAyNjgsIDE2OCwgMjY4LCAxNjgsIAotICAgIDE2OCwgMjY4LCAyNjgsIDE2OCwgMTY4LCAxNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNzAsIDI2OSwgCi0gICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjA5LCAyNjksIDI2OSwgMjY5LCAyNjksIAotICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAwLCAyNjksIDAsIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjcxLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDE5MywgMjczLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDI3NCwgMjcsIDAsIDAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKLSAgICAyNzUsIDI3NiwgMjc3LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3OCwgMjc4LCAyNzksIDI3OSwgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIAotICAgIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNDEsIDI0MSwgMjc2LCAKLSAgICAyNzcsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc5LCAyNzksIDI3OSwgMjgwLCAyNzUsIDI4MCwgMCwgMjc1LCAyODAsIDI3NSwgCi0gICAgMjc1LCAyNzgsIDI4MSwgMjgyLCAyODEsIDI4MiwgMjgxLCAyODIsIDI4MywgMjc1LCAyNzUsIDI4NCwgMjg1LCAyODYsIAotICAgIDI4NiwgMjg3LCAwLCAyNzUsIDI4OCwgMjgzLCAyNzUsIDAsIDAsIDAsIDAsIDEyOCwgMTI4LCAxMjgsIDExNSwgMTI4LCAwLCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAxODYsIDAsIDI4OSwgMjg5LCAyOTAsIAotICAgIDI5MSwgMjkwLCAyODksIDI4OSwgMjkyLCAyOTMsIDI4OSwgMjk0LCAyOTUsIDI5NiwgMjk1LCAyOTUsIDI5NywgMjk3LCAKLSAgICAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk1LCAyODksIDI5OCwgMjk5LCAyOTgsIDI4OSwgCi0gICAgMjg5LCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIAotICAgIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMjkyLCAKLSAgICAyODksIDI5MywgMzAxLCAzMDIsIDMwMSwgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDI5MiwgMjk5LCAyOTMsIDI5OSwgMjkyLCAyOTMsIDMwNCwgMzA1LCAzMDYsIDMwNCwgMzA0LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwOCwgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA4LCAzMDgsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgMCwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMCwgMCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMCwgMCwgMCwgMjkxLCAyOTEsIDI5OSwgMzAxLCAzMDksIDI5MSwgMjkxLCAwLCAzMTAsIDMxMSwgCi0gICAgMzExLCAzMTEsIDMxMSwgMzEwLCAzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMiwgMzEyLCAzMTIsIDI3LCAKLSAgICAyNSwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCA4MiwgMTM1LCA3OSwgMCwgMCwgMCwgMCwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAxNTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzEsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIAorICAgIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgODIsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIAotICAgIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDEsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMCwgMCwgMCwgMCwgMjQyLCAyNDMsIDI0MywgMjQzLCAKKyAgICAyNDAsIDI0NCwgMTcwLCAyNDUsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgCisgICAgMjQwLCAyNDAsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTAsIAorICAgIDI0MCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjUxLCAyNTIsIDI1MywgMjU0LCAKKyAgICAyNTUsIDI1NSwgMjQ4LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQxLCAyNDAsIDI1NiwgMjU2LCAyNTYsIDI0NCwgCisgICAgMTcwLCAyNDMsIDI0MCwgMjYsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIAorICAgIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDI1NywgMTcwLCAKKyAgICAyNTcsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgCisgICAgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAyNTcsIDE3MCwgMTcwLCAwLCAwLCAyNTgsIDI1OCwgMjU5LCAyNTksIDI0NCwgMjYwLCAyNjEsIAorICAgIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI1NywgMTcwLCAKKyAgICAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAKKyAgICAxNzAsIDI1NywgMjU3LCAxNzAsIDI1NywgMjU3LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI1NywgMTcwLCAxNzAsIDI1NywgMjU3LCAyNTcsIDI1NywgMjQzLCAyNDQsIDI0NCwgMjYwLCAyNjEsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDI2MiwgMjYyLCAyNjMsIDI2MywgCisgICAgMjYzLCAyNjMsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjQxLCAyNDEsIDAsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAorICAgIDI2MywgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI0MSwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNjIsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjQxLCAyNDEsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDQsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIAorICAgIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCisgICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjY3LCAyNjcsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIDg1LCAyMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgODMsIDgzLCA4MywgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgCisgICAgODYsIDg2LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAorICAgIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NCwgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIAorICAgIDQ4LCAxMzksIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCAKKyAgICA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgCisgICAgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMTcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAxNzAsIDI3MCwgMjcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzEsIDI3MiwgMjcxLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyMTEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMCwgMjcxLCAyNzEsIAorICAgIDAsIDI3MSwgMjcxLCAwLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzMsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTk1LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMjc2LCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc4LCAyNzksIAorICAgIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3NywgMjgwLCAyODAsIDI4MSwgMjgxLCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgCisgICAgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI0MywgMjQzLCAyNzgsIDI3OSwgMjc3LCAyNzcsIAorICAgIDI3NywgMjc3LCAyODEsIDI4MSwgMjgxLCAyODIsIDI3NywgMjgyLCAwLCAyNzcsIDI4MiwgMjc3LCAyNzcsIDI4MCwgMjgzLCAKKyAgICAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjg1LCAyNzcsIDI3NywgMjg2LCAyODcsIDI4OCwgMjg4LCAyODksIDAsIDI3NywgCisgICAgMjkwLCAyODUsIDI3NywgMCwgMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTE3LCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDE4NywgMCwgMjkxLCAyOTEsIDI5MiwgMjkzLCAyOTIsIDI5MSwgCisgICAgMjkxLCAyOTQsIDI5NSwgMjkxLCAyOTYsIDI5NywgMjk4LCAyOTcsIDI5NywgMjk5LCAyOTksIDI5OSwgMjk5LCAyOTksIAorICAgIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAyOTcsIDI5MSwgMzAwLCAzMDEsIDMwMCwgMjkxLCAyOTEsIDMwMiwgMzAyLCAKKyAgICAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgCisgICAgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAyOTQsIDI5MSwgMjk1LCAzMDMsIAorICAgIDMwNCwgMzAzLCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAKKyAgICAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgCisgICAgMjk0LCAzMDEsIDI5NSwgMzAxLCAyOTQsIDI5NSwgMzA2LCAzMDcsIDMwOCwgMzA2LCAzMDYsIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzEwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMTAsIDMxMCwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAwLCAwLCAwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAwLCAwLCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAwLCAwLCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAwLCAwLCAzMDksIDMwOSwgMzA5LCAKKyAgICAwLCAwLCAwLCAyOTMsIDI5MywgMzAxLCAzMDMsIDMxMSwgMjkzLCAyOTMsIDAsIDMxMiwgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTIsIDMxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMjYsIDMwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAwLCAwLCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAxMDUsIDEwNSwgMCwgMCwgMCwgMTA1LCAwLCAwLCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTAyLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKLSAgICAzMTQsIDMxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAxMzUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTMyLCAxMzIsIDEzMiwgMCwgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzMiwgODQsIDEzMiwgODAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgODAsIDE3NCwgCi0gICAgODQsIDAsIDAsIDAsIDAsIDEzOSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAzMTQsIDMxNCwgMTAyLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCi0gICAgMzE0LCAzMTQsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAotICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAwLCAxMzYsIDEzMiwgCi0gICAgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzksIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNywgNDcsIAotICAgIDEzNywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAxMzYsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzksIDEzOCwgODIsIDgyLCAKLSAgICAxNzIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAotICAgIDMxNiwgMzE2LCAzMTcsIDMxNywgMTc0LCAxNzQsIDE3NCwgNzksIDc5LCA3OSwgMzE4LCAzMTcsIDMxNywgMzE3LCAzMTcsIAotICAgIDMxNywgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgNzksIDc5LCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4NCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgODAsIDgwLCA4MCwgODAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDgwLCA4MCwgODAsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCisgICAgMzE2LCAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNSwgODYsIDEzNSwgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NSwgCisgICAgODYsIDAsIDAsIDAsIDAsIDE0MiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAzMTYsIDMxNiwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgCisgICAgMzE2LCAzMTYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIAorICAgIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAKKyAgICAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAwLCAxMzksIDEzNSwgCisgICAgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDMxOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDMxOSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDIsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIAorICAgIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxNDIsIDE0MSwgODMsIDgzLCAKKyAgICAxODgsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDMxOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCAzNSwgMCwgMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAzMjEsIDAsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDIzNSwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDksIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCAxMzUsIDE1MCwgMTUwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDE0MiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAyNjIsIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTc0LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAorICAgIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTksIDMxOSwgCisgICAgMTc1LCAxNzUsIDE3NSwgODAsIDgwLCA4MCwgMzIwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIAorICAgIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTgsIDMxOCwgCisgICAgMzE4LCAzMTgsIDMxOCwgMzE4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCAKKyAgICA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKKyAgICA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzIxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIyLCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDAsIAorICAgIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgCisgICAgMCwgMTMwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAzMjMsIDAsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMjE4LCAyMTgsIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAyMzcsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAwLCAyNywgMCwgMjcsIDAsIDI3LCAKLSAgICAwLCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDAsIAotICAgIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAKLSAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCisgICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIAotICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAKKyAgICAwLCAKIH07CiAKIC8qIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtMzA3MiwzMjEgKzMxNDAsMzIyIEBACiAgICAgNTAsIDQ5LCAyNjA4NSwgNzcwLCA1MCwgNTAsIDI2MDg1LCA3NzAsIDUwLCA1MSwgMjYwODUsIDc3MCwgNTAsIDUyLCAKICAgICAyNjA4NSwgNzcwLCA1MCwgNTMsIDI2MDg1LCA3NzAsIDUwLCA1NCwgMjYwODUsIDc3MCwgNTAsIDU1LCAyNjA4NSwgNzcwLCAKICAgICA1MCwgNTYsIDI2MDg1LCA3NzAsIDUwLCA1NywgMjYwODUsIDc3MCwgNTEsIDQ4LCAyNjA4NSwgNzcwLCA1MSwgNDksIAotICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCA0Mjg2MywgMjU2LCAzNTkxMiwgMjU2LCAyNjM1NiwgMjU2LCAzNjU1NCwgCi0gICAgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgMjU2LCA0MDg2MCwgMjU2LCA0MDg2MCwgCi0gICAgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgMjU2LCAyNTA3OCwgMjU2LCAzMDMxMywgCi0gICAgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgMjU2LCAzNzAwNywgMjU2LCAyNzEzOCwgCi0gICAgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgMjU2LCAzNzIyNiwgMjU2LCAzOTQwOSwgCi0gICAgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgMjU2LCAzNDM0OSwgMjU2LCA0MDQ3OCwgCi0gICAgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgMjU2LCAyNTI4OSwgMjU2LCAzMzI0MCwgCi0gICAgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgMjU2LCAyOTQzNiwgMjU2LCAzNzA3MCwgCi0gICAgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgMjU2LCAyNzM0NywgMjU2LCAyOTIwMCwgCi0gICAgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgMjU2LCAzNjMzNSwgMjU2LCAzODcwNiwgCi0gICAgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgMjU2LCAzMjE2MCwgMjU2LCAzMzczNywgCi0gICAgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgMjU2LCAyNDMyNCwgMjU2LCAzMTg0MCwgCi0gICAgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgMjU2LCAzODY0NywgMjU2LCAyMjc0NCwgCi0gICAgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgMjU2LCAzMjA0NywgMjU2LCAzMjMxMSwgCi0gICAgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgMjU2LCAyMDk0MCwgMjU2LCAzMTI2MCwgCi0gICAgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgMjU2LCAyNTI5NSwgMjU2LCAyNzEzOCwgCi0gICAgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgMjU2LCAyOTU3NSwgMjU2LCAzMDA2NCwgCi0gICAgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgMjU2LCAxOTk4MSwgMjU2LCAyNzg1MiwgCi0gICAgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgMjU2LCAzMDQ2NSwgMjU2LCAzMzg2NSwgCi0gICAgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgMjU2LCAyNTM0MiwgMjU2LCAzMzUwOSwgCi0gICAgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgMjU2LCAyMDkzNywgMjU2LCAyNjc1MywgCi0gICAgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgMjU2LCAyMTIzNywgMjU2LCAyMTU3MCwgCi0gICAgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgMjU2LCAzMTAxOCwgMjU2LCAzODMxNywgCi0gICAgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgMjU2LCAyNjMxMCwgMjU2LCAyNzUxMSwgCi0gICAgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgMjU2LCAyNTc1NCwgMjU2LCAyODQ1MSwgCi0gICAgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgMjU2LCAzMjg3OSwgMjU2LCAzNjY0NiwgCi0gICAgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgMjU2LCAyMTE1NSwgMjU2LCAyMTY5MywgCi0gICAgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgMjU2LCAyNDU2NSwgMjU2LCAyNTQ2NywgCi0gICAgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgMjU2LCAyMjI2NSwgMjU2LCAyMzUyNywgCi0gICAgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgMjU2LCAzMjY2NiwgMjU2LCAzMjgzOCwgCi0gICAgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgMjU2LCAyMDM2MywgMjU2LCAzMTE1MCwgCi0gICAgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgMjU2LCAyMDY5OCwgMjU2LCAyMzUzNCwgCi0gICAgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgMjU2LCAzMDI3NCwgMjU2LCAzNDA0NCwgCi0gICAgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgMjU2LCAyMTEyOSwgMjU2LCAyNjQ5MSwgCi0gICAgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgMjU2LCAzMDA0MSwgMjU2LCAzMDgyNywgCi0gICAgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgMjU2LCAzODUyMCwgMjU2LCAyMDUyMywgCi0gICAgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgMjU2LCAyNDkwMCwgMjU2LCAyNjY0NywgCi0gICAgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgMjU2LCAyMzY1MywgMjU2LCAyNjEzMSwgCi0gICAgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgMjU2LCAzMDE3OCwgMjU2LCAzMjYzMywgCi0gICAgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgMjU2LCAyMTMxMSwgMjU2LCAyODM0NiwgCi0gICAgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgMjU2LCAzODU2MywgMjU2LCA0MDAyMywgCi0gICAgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgMjU2LCAzMTQzNSwgMjU2LCAzMTUyMCwgCi0gICAgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgMjU2LCAyMDE2MCwgMjU2LCAzMzU5MCwgCi0gICAgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgMjU2LCAzMTk1OCwgMjU2LCAyMzQyOSwgCi0gICAgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgMjU2LCAzODQ3NywgMjU2LCAzNTIxMSwgCi0gICAgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgMjU2LCAyNjIyOCwgMjU2LCAyMDk1OCwgCi0gICAgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgMjU2LCAzMTA3NywgMjU2LCAzMTExOSwgCi0gICAgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgMjU2LCAzNTU3NiwgMjU2LCAzNjkyMCwgCi0gICAgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgMjU2LCA0MDM3MiwgMjU2LCAyMDM5OCwgCi0gICAgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgCi0gICAgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgMjU2LCAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgCi0gICAgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgMjU2LCAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgCi0gICAgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgMjU2LCAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgCi0gICAgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgMjU2LCAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgCi0gICAgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgMjU2LCAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgCi0gICAgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgMjU2LCAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgCi0gICAgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgMjU2LCAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgCi0gICAgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgMjU2LCAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgCi0gICAgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgMjU2LCAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIAotICAgIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIDI1NiwgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIAotICAgIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIDI1NiwgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIAotICAgIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIDI1NiwgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIAotICAgIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIDI1NiwgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIAotICAgIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIDI1NiwgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIAotICAgIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIDI1NiwgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIAotICAgIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIDI1NiwgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIAotICAgIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIDI1NiwgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIAotICAgIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIDI1NiwgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIAotICAgIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIDI1NiwgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIAotICAgIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIDI1NiwgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIAotICAgIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIDI1NiwgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIAotICAgIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIDI1NiwgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIAotICAgIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIDI1NiwgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIAotICAgIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIDI1NiwgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIAotICAgIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIAotICAgIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgMjU2LCAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgCi0gICAgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIDE1NDgzMiwgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIAotICAgIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAxMDUsIDUxNCwgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAKLSAgICAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgMTE2LCA1MTQsIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgCi0gICAgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCA1MTQsIDE0MDYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCAKLSAgICA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgMTUwNiwgMjYyLCAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAKLSAgICAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgMjYyLCAxNTEyLCAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgCi0gICAgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIDY0MzI5LCAxNDczLCA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIAotICAgIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAxNDg4LCAxNDY4LCA1MTIsIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAKLSAgICAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIDE0NjgsIDUxMiwgMTQ5MywgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIAotICAgIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgNTEyLCAxNDk4LCAxNDY4LCA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgCi0gICAgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIDE1MDQsIDE0NjgsIDUxMiwgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIAotICAgIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgMTQ2OCwgNTEyLCAxNTExLCAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgCi0gICAgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCA1MTIsIDE0OTMsIDE0NjUsIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCAKLSAgICA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgMTQ4OCwgMTUwMCwgMjY3LCAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAKLSAgICAxNjU5LCAyNjksIDE2NTksIDI3MCwgMTY1OSwgMjY3LCAxNjYyLCAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAKLSAgICAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgMjY5LCAxNjY0LCAyNzAsIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIAotICAgIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAxNjYzLCAyNjgsIDE2NjMsIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIAotICAgIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAyNzAsIDE2NTcsIDI2NywgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgCi0gICAgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIDE3MDIsIDI2OSwgMTcwMiwgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgCi0gICAgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIDI2NywgMTY2NywgMjY4LCAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAKLSAgICAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgMTY3MCwgMjcwLCAxNjcwLCAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAKLSAgICAyNzAsIDE2NzEsIDI2NywgMTY3NywgMjY4LCAxNjc3LCAyNjcsIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIAotICAgIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAxNjcyLCAyNjcsIDE2ODgsIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIAotICAgIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAyNjksIDE3MDUsIDI3MCwgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgCi0gICAgMTcxMSwgMjcwLCAxNzExLCAyNjcsIDE3MTUsIDI2OCwgMTcxNSwgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgCi0gICAgMjY4LCAxNzEzLCAyNjksIDE3MTMsIDI3MCwgMTcxMywgMjY3LCAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAKLSAgICAxNzIzLCAyNjksIDE3MjMsIDI3MCwgMTcyMywgMjY3LCAxNzI4LCAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAKLSAgICAyNjksIDE3MjksIDI3MCwgMTcyOSwgMjY3LCAxNzI2LCAyNjgsIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIAotICAgIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAxNzQ3LCAyNjgsIDE3NDcsIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIAotICAgIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAyNjgsIDE3MzUsIDI2NywgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgCi0gICAgMTczNiwgMjY3LCAxNjU1LCAyNjcsIDE3MzksIDI2OCwgMTczOSwgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgCi0gICAgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIDI2OCwgMTc0NCwgMjY5LCAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAKLSAgICAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIDUyNCwgMTU3NCwgMTU3NSwgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIAotICAgIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAxNTc0LCAxNjA4LCA1MjMsIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAKLSAgICAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIDE3MzQsIDUyMywgMTU3NCwgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIAotICAgIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgNTI1LCAxNTc0LCAxNzQ0LCA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgCi0gICAgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIDE3NDAsIDI2OCwgMTc0MCwgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgCi0gICAgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCA1MjMsIDE1NzQsIDE2MDUsIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCAKLSAgICA1MjMsIDE1NzYsIDE1ODAsIDUyMywgMTU3NiwgMTU4MSwgNTIzLCAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgCi0gICAgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAxNjEwLCA1MjMsIDE1NzgsIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAKLSAgICAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIDUyMywgMTU3OCwgMTYwOSwgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIAotICAgIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAxNTc5LCAxNjA5LCA1MjMsIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAKLSAgICAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIDE1ODAsIDUyMywgMTU4MSwgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIAotICAgIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgNTIzLCAxNTg3LCAxNTgwLCA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgCi0gICAgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIDE1ODksIDE1ODEsIDUyMywgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIAotICAgIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgMTU4MiwgNTIzLCAxNTkwLCAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgCi0gICAgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCA1MjMsIDE1OTMsIDE1ODAsIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCAKLSAgICA1MjMsIDE1OTQsIDE2MDUsIDUyMywgMTYwMSwgMTU4MCwgNTIzLCAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgCi0gICAgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAxNjA5LCA1MjMsIDE2MDEsIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAKLSAgICAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIDUyMywgMTYwMiwgMTYxMCwgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIAotICAgIDUyMywgMTYwMywgMTU4MSwgNTIzLCAxNjAzLCAxNTgyLCA1MjMsIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAKLSAgICAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIDE2MTAsIDUyMywgMTYwNCwgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIAotICAgIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgNTIzLCAxNjA0LCAxNjA5LCA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgCi0gICAgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIDE2MDUsIDE1ODIsIDUyMywgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIAotICAgIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgMTU4MCwgNTIzLCAxNjA2LCAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgCi0gICAgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCA1MjMsIDE2MDYsIDE2MTAsIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCAKLSAgICA1MjMsIDE2MDcsIDE2MDksIDUyMywgMTYwNywgMTYxMCwgNTIzLCAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgCi0gICAgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAxNjA1LCA1MjMsIDE2MTAsIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAKLSAgICAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIDUyMywgMTYwOSwgMTY0OCwgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgCi0gICAgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgMTYxNywgNzc5LCAzMiwgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgCi0gICAgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAxNTc0LCAxNTg1LCA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgCi0gICAgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCAKLSAgICA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgNTI0LCAxNTc2LCAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgCi0gICAgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIDE1NzgsIDE1ODYsIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAKLSAgICAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgMTYxMCwgNTI0LCAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIAotICAgIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCA1MjQsIDE1NzksIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAKLSAgICAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgMTYwMiwgMTYwOSwgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIAotICAgIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAxNjA1LCA1MjQsIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgCi0gICAgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIDUyNCwgMTYwNCwgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIAotICAgIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAxNjA2LCAxNTg2LCA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgCi0gICAgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIDE2MTAsIDUyNCwgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCAKLSAgICA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgNTI0LCAxNjEwLCAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgCi0gICAgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIDE1NzQsIDE1ODEsIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAKLSAgICAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgMTU4MCwgNTI1LCAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIAotICAgIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCA1MjUsIDE1NzgsIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAKLSAgICAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgMTU3OCwgMTYwNywgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIAotICAgIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAxNTgwLCA1MjUsIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgCi0gICAgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIDUyNSwgMTU4NywgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIAotICAgIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAxNTg5LCAxNTgyLCA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgCi0gICAgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIDE1ODIsIDUyNSwgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCAKLSAgICA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgNTI1LCAxNTkzLCAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgCi0gICAgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIDE2MDEsIDE1ODEsIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAKLSAgICAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgMTYwNSwgNTI1LCAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIAotICAgIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCA1MjUsIDE2MDMsIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAKLSAgICAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgMTYwNCwgMTYwNSwgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIAotICAgIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAxNTgyLCA1MjUsIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgCi0gICAgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIDUyNSwgMTYwNiwgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIAotICAgIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAxNjA3LCAxNjQ4LCA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgCi0gICAgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIDE2MDUsIDUyNSwgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCAKLSAgICA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgNTI2LCAxNTc2LCAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgCi0gICAgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIDE1NzksIDE2MDcsIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAKLSAgICAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgMTYwNywgNTI2LCAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIAotICAgIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAKLSAgICAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIDc4MiwgMTYwMCwgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAKLSAgICAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgMTYxMCwgNTIzLCAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIAotICAgIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCA1MjMsIDE1ODcsIDE2MDksIDUyMywgMTU4NywgMTYxMCwgCi0gICAgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgMTU4MSwgMTYwOSwgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIAotICAgIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAxNjA5LCA1MjMsIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgCi0gICAgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIDUyMywgMTU5MCwgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCAKLSAgICA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAxNTg4LCAxNjA1LCA1MjMsIDE1ODgsIDE1ODUsIDUyMywgCi0gICAgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIDE1ODUsIDUyNCwgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAKLSAgICAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgNTI0LCAxNTk0LCAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIAotICAgIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIDE1ODgsIDE2MDksIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAKLSAgICAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgMTYwOSwgNTI0LCAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIAotICAgIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCA1MjQsIDE1ODksIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgCi0gICAgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgMTU4OCwgMTU4MSwgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIAotICAgIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAxNTg1LCA1MjQsIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgCi0gICAgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIDUyNSwgMTU4OCwgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCAKLSAgICA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAxNTkxLCAxNjA1LCA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgCi0gICAgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIDE1ODAsIDUyNiwgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAKLSAgICAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgNTI0LCAxNTc1LCAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIAotICAgIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgCi0gICAgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAxNjA1LCA3ODEsIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgCi0gICAgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgCi0gICAgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAxNjEwLCA3ODAsIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgCi0gICAgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAxNTgxLCA3ODAsIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgCi0gICAgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgCi0gICAgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODAsIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgCi0gICAgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAxNjA1LCA3ODAsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgCi0gICAgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAxNjEwLCA3ODAsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgCi0gICAgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODEsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgCi0gICAgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgCi0gICAgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA5LCA3ODAsIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAxNjA5LCA3ODAsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgCi0gICAgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODAsIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgCi0gICAgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjEwLCA3ODAsIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgCi0gICAgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgCi0gICAgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgCi0gICAgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgCi0gICAgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgCi0gICAgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAxNTgyLCA3ODEsIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgCi0gICAgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgCi0gICAgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgCi0gICAgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAxNjA5LCA3ODAsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgCi0gICAgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgCi0gICAgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAxNjEwLCA3ODAsIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgCi0gICAgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgCi0gICAgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjA5LCA3ODAsIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgCi0gICAgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAxNjEwLCA3ODAsIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgCi0gICAgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAxNjEwLCA3ODAsIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgCi0gICAgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgCi0gICAgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgCi0gICAgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgCi0gICAgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAxNjEwLCA3ODEsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgCi0gICAgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgCi0gICAgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAxNjEwLCA3ODAsIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgCi0gICAgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAxNjEwLCA3ODEsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgCi0gICAgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAxNjA1LCA3ODAsIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgCi0gICAgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAxNzQ2LCA3NzksIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIAotICAgIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIDE2MDMsIDE1NzYsIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIAotICAgIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIDE2MDUsIDEwMzUsIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIAotICAgIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgCi0gICAgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgMzIsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAKLSAgICAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIAotICAgIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIDE1ODUsIDE3NDAsIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgCi0gICAgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgNTksIDI2NSwgMzMsIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgCi0gICAgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIDgyMTIsIDI2NSwgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCAKLSAgICA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAyNjUsIDEyMzA4LCAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIAotICAgIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAyNjUsIDEyMjk2LCAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIAotICAgIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAyNjUsIDkxLCAyNjUsIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgCi0gICAgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIDI1OCwgOTUsIDI1OCwgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIAotICAgIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgNjMsIDI3MSwgMzMsIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgCi0gICAgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAyNzEsIDEyMzA5LCAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAKLSAgICAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIDYyLCAyNzEsIDYxLCAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAKLSAgICAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIDE2MDAsIDE2MTEsIDUyMywgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIAotICAgIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgNTIzLCAzMiwgMTYxNSwgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAKLSAgICAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIDE2MTcsIDUyNiwgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgCi0gICAgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgMTU3MCwgMjY4LCAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgCi0gICAgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgMjY4LCAxNTczLCAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAKLSAgICAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAxNTc1LCAyNjcsIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAKLSAgICAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAyNjcsIDE1NzgsIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIAotICAgIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIDE1NzksIDI3MCwgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIAotICAgIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIDI2OCwgMTU4MSwgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgCi0gICAgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgMTU4MiwgMjY3LCAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgCi0gICAgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgMjY3LCAxNTg2LCAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAKLSAgICAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAxNTg4LCAyNjgsIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAKLSAgICAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAyNzAsIDE1ODksIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIAotICAgIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIDE1OTEsIDI2OSwgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIAotICAgIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIDI2NywgMTU5MywgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgCi0gICAgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgMTU5NCwgMjcwLCAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgCi0gICAgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgMjY4LCAxNjAyLCAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAKLSAgICAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAxNjAzLCAyNjcsIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAKLSAgICAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAyNjksIDE2MDUsIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIAotICAgIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIDE2MDcsIDI2OCwgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIAotICAgIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIDI2OCwgMTYwOSwgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgCi0gICAgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIDUyNCwgMTYwNCwgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIAotICAgIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAxNjA0LCAxNTczLCA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgCi0gICAgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgMjY0LCAzNiwgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCAKLSAgICA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgMjY0LCA0NCwgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCAKLSAgICA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgMjY0LCA1MiwgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCAKLSAgICA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgMjY0LCA2MCwgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCAKLSAgICA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgMjY0LCA2OCwgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCAKLSAgICA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgMjY0LCA3NiwgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCAKLSAgICA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgMjY0LCA4NCwgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCAKLSAgICA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgMjY0LCA5MiwgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCAKLSAgICA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgMjY0LCAxMDAsIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIAotICAgIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIDI2NCwgMTA3LCAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAKLSAgICAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAyNjQsIDExNCwgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgCi0gICAgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgMjY0LCAxMjEsIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIAotICAgIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgMjY0LCAxMDYzMCwgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAKLSAgICAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgMjcyLCAxMjUzMCwgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAKLSAgICAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgMjcyLCAxMjUxNSwgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAKLSAgICAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgMjcyLCAxMjQ1MiwgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAKLSAgICAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgMjcyLCAxMjQ2MywgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAKLSAgICAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgMjcyLCAxMjQ3NSwgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAKLSAgICAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgMjcyLCAxMjQ4OCwgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAKLSAgICAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgMjcyLCAxMjQ5NSwgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAKLSAgICAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgMjcyLCAxMjUxMSwgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAKLSAgICAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgMjcyLCAxMjUyMCwgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAKLSAgICAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgMjcyLCAxMjUyNywgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAKLSAgICAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgMjcyLCAxMjU5NCwgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAKLSAgICAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgMjcyLCAxMjYwMCwgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAKLSAgICAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgMjcyLCAxMjYwNiwgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAKLSAgICAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgMjcyLCAxMjYxMiwgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAKLSAgICAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgMjcyLCAxMjYxOCwgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAKLSAgICAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgMjcyLCAxMjYyNCwgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAKLSAgICAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgMjcyLCAxMjYzMCwgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAKLSAgICAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgMjcyLCAxMjYzNiwgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAKLSAgICAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgMjcyLCAxMjY0MiwgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgCi0gICAgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAyNjQsIDE2NSwgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgCi0gICAgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgODU5NSwgMjcyLCA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIAotICAgIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCA2OTc5NywgNjk4MTgsIDUxMiwgMTE5MTI3LCAxMTkxNDEsIDUxMiwgCi0gICAgMTE5MTI4LCAxMTkxNDEsIDUxMiwgMTE5MTM1LCAxMTkxNTAsIDUxMiwgMTE5MTM1LCAxMTkxNTEsIDUxMiwgMTE5MTM1LCAKLSAgICAxMTkxNTIsIDUxMiwgMTE5MTM1LCAxMTkxNTMsIDUxMiwgMTE5MTM1LCAxMTkxNTQsIDUxMiwgMTE5MjI1LCAxMTkxNDEsIAotICAgIDUxMiwgMTE5MjI2LCAxMTkxNDEsIDUxMiwgMTE5MjI3LCAxMTkxNTAsIDUxMiwgMTE5MjI4LCAxMTkxNTAsIDUxMiwgCi0gICAgMTE5MjI3LCAxMTkxNTEsIDUxMiwgMTE5MjI4LCAxMTkxNTEsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIAotICAgIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIAotICAgIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIAotICAgIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIAotICAgIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgCi0gICAgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIAotICAgIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAKLSAgICAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgCi0gICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCi0gICAgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgCi0gICAgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgCi0gICAgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIAorICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCA0Mjg2MywgMjU5LCAyOTQsIDI1OSwgMzM5LCAyNTYsIDM1OTEyLCAKKyAgICAyNTYsIDI2MzU2LCAyNTYsIDM2NTU0LCAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAKKyAgICAyNTYsIDQwODYwLCAyNTYsIDQwODYwLCAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAKKyAgICAyNTYsIDI1MDc4LCAyNTYsIDMwMzEzLCAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAKKyAgICAyNTYsIDM3MDA3LCAyNTYsIDI3MTM4LCAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAKKyAgICAyNTYsIDM3MjI2LCAyNTYsIDM5NDA5LCAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAKKyAgICAyNTYsIDM0MzQ5LCAyNTYsIDQwNDc4LCAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAKKyAgICAyNTYsIDI1Mjg5LCAyNTYsIDMzMjQwLCAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAKKyAgICAyNTYsIDI5NDM2LCAyNTYsIDM3MDcwLCAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAKKyAgICAyNTYsIDI3MzQ3LCAyNTYsIDI5MjAwLCAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAKKyAgICAyNTYsIDM2MzM1LCAyNTYsIDM4NzA2LCAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAKKyAgICAyNTYsIDMyMTYwLCAyNTYsIDMzNzM3LCAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAKKyAgICAyNTYsIDI0MzI0LCAyNTYsIDMxODQwLCAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAKKyAgICAyNTYsIDM4NjQ3LCAyNTYsIDIyNzQ0LCAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAKKyAgICAyNTYsIDMyMDQ3LCAyNTYsIDMyMzExLCAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAKKyAgICAyNTYsIDIwOTQwLCAyNTYsIDMxMjYwLCAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAKKyAgICAyNTYsIDI1Mjk1LCAyNTYsIDI3MTM4LCAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAKKyAgICAyNTYsIDI5NTc1LCAyNTYsIDMwMDY0LCAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAKKyAgICAyNTYsIDE5OTgxLCAyNTYsIDI3ODUyLCAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAKKyAgICAyNTYsIDMwNDY1LCAyNTYsIDMzODY1LCAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAKKyAgICAyNTYsIDI1MzQyLCAyNTYsIDMzNTA5LCAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAKKyAgICAyNTYsIDIwOTM3LCAyNTYsIDI2NzUzLCAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAKKyAgICAyNTYsIDIxMjM3LCAyNTYsIDIxNTcwLCAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAKKyAgICAyNTYsIDMxMDE4LCAyNTYsIDM4MzE3LCAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAKKyAgICAyNTYsIDI2MzEwLCAyNTYsIDI3NTExLCAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAKKyAgICAyNTYsIDI1NzU0LCAyNTYsIDI4NDUxLCAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAKKyAgICAyNTYsIDMyODc5LCAyNTYsIDM2NjQ2LCAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAKKyAgICAyNTYsIDIxMTU1LCAyNTYsIDIxNjkzLCAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAKKyAgICAyNTYsIDI0NTY1LCAyNTYsIDI1NDY3LCAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAKKyAgICAyNTYsIDIyMjY1LCAyNTYsIDIzNTI3LCAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAKKyAgICAyNTYsIDMyNjY2LCAyNTYsIDMyODM4LCAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAKKyAgICAyNTYsIDIwMzYzLCAyNTYsIDMxMTUwLCAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAKKyAgICAyNTYsIDIwNjk4LCAyNTYsIDIzNTM0LCAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAKKyAgICAyNTYsIDMwMjc0LCAyNTYsIDM0MDQ0LCAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAKKyAgICAyNTYsIDIxMTI5LCAyNTYsIDI2NDkxLCAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAKKyAgICAyNTYsIDMwMDQxLCAyNTYsIDMwODI3LCAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAKKyAgICAyNTYsIDM4NTIwLCAyNTYsIDIwNTIzLCAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAKKyAgICAyNTYsIDI0OTAwLCAyNTYsIDI2NjQ3LCAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAKKyAgICAyNTYsIDIzNjUzLCAyNTYsIDI2MTMxLCAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAKKyAgICAyNTYsIDMwMTc4LCAyNTYsIDMyNjMzLCAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAKKyAgICAyNTYsIDIxMzExLCAyNTYsIDI4MzQ2LCAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAKKyAgICAyNTYsIDM4NTYzLCAyNTYsIDQwMDIzLCAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAKKyAgICAyNTYsIDMxNDM1LCAyNTYsIDMxNTIwLCAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAKKyAgICAyNTYsIDIwMTYwLCAyNTYsIDMzNTkwLCAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAKKyAgICAyNTYsIDMxOTU4LCAyNTYsIDIzNDI5LCAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAKKyAgICAyNTYsIDM4NDc3LCAyNTYsIDM1MjExLCAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAKKyAgICAyNTYsIDI2MjI4LCAyNTYsIDIwOTU4LCAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAKKyAgICAyNTYsIDMxMDc3LCAyNTYsIDMxMTE5LCAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAKKyAgICAyNTYsIDM1NTc2LCAyNTYsIDM2OTIwLCAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAKKyAgICAyNTYsIDQwMzcyLCAyNTYsIDM3MDg2LCAyNTYsIDM4NTgzLCAyNTYsIDIwMzk4LCAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAKKyAgICAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAKKyAgICAyNTYsIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAKKyAgICAyNTYsIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAKKyAgICAyNTYsIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAKKyAgICAyNTYsIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAKKyAgICAyNTYsIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAKKyAgICAyNTYsIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAKKyAgICAyNTYsIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAKKyAgICAyNTYsIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAKKyAgICAyNTYsIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgCisgICAgMjU2LCAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgCisgICAgMjU2LCAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgCisgICAgMjU2LCAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgCisgICAgMjU2LCAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgCisgICAgMjU2LCAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgCisgICAgMjU2LCAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgCisgICAgMjU2LCAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgCisgICAgMjU2LCAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgCisgICAgMjU2LCAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgCisgICAgMjU2LCAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgCisgICAgMjU2LCAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgCisgICAgMjU2LCAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgCisgICAgMjU2LCAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgCisgICAgMjU2LCAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgCisgICAgMjU2LCAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgCisgICAgMjU2LCAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAKKyAgICAyNTYsIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgCisgICAgMTU0ODMyLCAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIAorICAgIDEwNSwgNTE0LCAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAKKyAgICAxMTYsIDUxNCwgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIAorICAgIDUxNCwgMTQwNiwgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAKKyAgICAxNTA2LCAyNjIsIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAKKyAgICAyNjIsIDE1MTIsIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgCisgICAgNjQzMjksIDE0NzMsIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIAorICAgIDE0ODgsIDE0NjgsIDUxMiwgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgCisgICAgMTQ2OCwgNTEyLCAxNDkzLCAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCAKKyAgICA1MTIsIDE0OTgsIDE0NjgsIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgCisgICAgMTUwNCwgMTQ2OCwgNTEyLCAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAKKyAgICAxNDY4LCA1MTIsIDE1MTEsIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIAorICAgIDUxMiwgMTQ5MywgMTQ2NSwgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAKKyAgICAxNDg4LCAxNTAwLCAyNjcsIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAKKyAgICAxNjU5LCAyNjcsIDE2NjIsIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAKKyAgICAyNjksIDE2NjQsIDI3MCwgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIAorICAgIDE2NjMsIDI2OCwgMTY2MywgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgMjY4LCAxNjU3LCAyNjksIDE2NTcsIAorICAgIDI3MCwgMTY1NywgMjY3LCAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgCisgICAgMTcwMiwgMjY5LCAxNzAyLCAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAyNjksIDE2NjgsIDI3MCwgMTY2OCwgCisgICAgMjY3LCAxNjY3LCAyNjgsIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAKKyAgICAxNjcwLCAyNzAsIDE2NzAsIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAKKyAgICAyNjgsIDE2NzcsIDI2NywgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIAorICAgIDE2NzIsIDI2NywgMTY4OCwgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIAorICAgIDI2OSwgMTcwNSwgMjcwLCAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAxNzExLCAyNzAsIDE3MTEsIDI2NywgCisgICAgMTcxNSwgMjY4LCAxNzE1LCAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAyNjgsIDE3MTMsIDI2OSwgMTcxMywgCisgICAgMjcwLCAxNzEzLCAyNjcsIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAKKyAgICAxNzIzLCAyNjcsIDE3MjgsIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAKKyAgICAyNjcsIDE3MjYsIDI2OCwgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIAorICAgIDE3NDcsIDI2OCwgMTc0NywgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIAorICAgIDI2OCwgMTczNSwgMjY3LCAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAxNzM2LCAyNjcsIDE2NTUsIDI2NywgCisgICAgMTczOSwgMjY4LCAxNzM5LCAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAyNjgsIDE3MzcsIDI2NywgMTc0NCwgCisgICAgMjY4LCAxNzQ0LCAyNjksIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgCisgICAgNTI0LCAxNTc0LCAxNTc1LCA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIAorICAgIDE1NzQsIDE2MDgsIDUyMywgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgCisgICAgMTczNCwgNTIzLCAxNTc0LCAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCAKKyAgICA1MjUsIDE1NzQsIDE3NDQsIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCA1MjUsIDE1NzQsIDE2MDksIDI2NywgCisgICAgMTc0MCwgMjY4LCAxNzQwLCAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIAorICAgIDUyMywgMTU3NCwgMTYwNSwgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAKKyAgICAxNTc2LCAxNTgxLCA1MjMsIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIAorICAgIDE2MTAsIDUyMywgMTU3OCwgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgCisgICAgNTIzLCAxNTc4LCAxNjA5LCA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIAorICAgIDE1NzksIDE2MDksIDUyMywgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgCisgICAgMTU4MCwgNTIzLCAxNTgxLCAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCAKKyAgICA1MjMsIDE1ODcsIDE1ODAsIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCA1MjMsIDE1ODcsIDE2MDUsIDUyMywgCisgICAgMTU4OSwgMTU4MSwgNTIzLCAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAKKyAgICAxNTgyLCA1MjMsIDE1OTAsIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIAorICAgIDUyMywgMTU5MywgMTU4MCwgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAKKyAgICAxNjAxLCAxNTgwLCA1MjMsIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIAorICAgIDE2MDksIDUyMywgMTYwMSwgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgCisgICAgNTIzLCAxNjAyLCAxNjEwLCA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIAorICAgIDE2MDMsIDE1ODIsIDUyMywgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIDE2MDMsIDE2MDksIDUyMywgMTYwMywgCisgICAgMTYxMCwgNTIzLCAxNjA0LCAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCAKKyAgICA1MjMsIDE2MDQsIDE2MDksIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCA1MjMsIDE2MDUsIDE1ODEsIDUyMywgCisgICAgMTYwNSwgMTU4MiwgNTIzLCAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAKKyAgICAxNTgwLCA1MjMsIDE2MDYsIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIAorICAgIDUyMywgMTYwNiwgMTYxMCwgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIDUyMywgMTYwNywgMTYwOSwgNTIzLCAKKyAgICAxNjA3LCAxNjEwLCA1MjMsIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIAorICAgIDE2MDUsIDUyMywgMTYxMCwgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgCisgICAgNTIzLCAxNjA5LCAxNjQ4LCA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAKKyAgICAxNjE3LCA3NzksIDMyLCAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIAorICAgIDE1NzQsIDE1ODUsIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgCisgICAgMTYwOSwgNTI0LCAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCAKKyAgICA1MjQsIDE1NzYsIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgCisgICAgMTU3OCwgMTU4NiwgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAKKyAgICAxNjEwLCA1MjQsIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIAorICAgIDUyNCwgMTU3OSwgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAKKyAgICAxNjAyLCAxNjA5LCA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIAorICAgIDE2MDUsIDUyNCwgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgCisgICAgNTI0LCAxNjA0LCAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIAorICAgIDE2MDYsIDE1ODYsIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgCisgICAgMTYxMCwgNTI0LCAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCAKKyAgICA1MjQsIDE2MTAsIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgCisgICAgMTU3NCwgMTU4MSwgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAKKyAgICAxNTgwLCA1MjUsIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIAorICAgIDUyNSwgMTU3OCwgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAKKyAgICAxNTc4LCAxNjA3LCA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIAorICAgIDE1ODAsIDUyNSwgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgCisgICAgNTI1LCAxNTg3LCAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIAorICAgIDE1ODksIDE1ODIsIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgCisgICAgMTU4MiwgNTI1LCAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCAKKyAgICA1MjUsIDE1OTMsIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgCisgICAgMTYwMSwgMTU4MSwgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAKKyAgICAxNjA1LCA1MjUsIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIAorICAgIDUyNSwgMTYwMywgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAKKyAgICAxNjA0LCAxNjA1LCA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIAorICAgIDE1ODIsIDUyNSwgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgCisgICAgNTI1LCAxNjA2LCAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIAorICAgIDE2MDcsIDE2NDgsIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgCisgICAgMTYwNSwgNTI1LCAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCAKKyAgICA1MjYsIDE1NzYsIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgCisgICAgMTU3OSwgMTYwNywgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAKKyAgICAxNjA3LCA1MjYsIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIAorICAgIDUyNiwgMTYwNiwgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgCisgICAgNzgyLCAxNjAwLCAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAKKyAgICAxNjEwLCA1MjMsIDE1OTMsIDE2MDksIDUyMywgMTU5MywgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIAorICAgIDUyMywgMTU4NywgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAKKyAgICAxNTgxLCAxNjA5LCA1MjMsIDE1ODEsIDE2MTAsIDUyMywgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIAorICAgIDE2MDksIDUyMywgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgCisgICAgNTIzLCAxNTkwLCAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIAorICAgIDE1ODgsIDE2MDUsIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgCisgICAgMTU4NSwgNTI0LCAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCAKKyAgICA1MjQsIDE1OTQsIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgCisgICAgMTU4OCwgMTYwOSwgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAKKyAgICAxNjA5LCA1MjQsIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIAorICAgIDUyNCwgMTU4OSwgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAKKyAgICAxNTg4LCAxNTgxLCA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIAorICAgIDE1ODUsIDUyNCwgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgCisgICAgNTI1LCAxNTg4LCAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIAorICAgIDE1OTEsIDE2MDUsIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgCisgICAgMTU4MCwgNTI2LCAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCAKKyAgICA1MjQsIDE1NzUsIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIAorICAgIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIAorICAgIDE2MDUsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIAorICAgIDE1ODIsIDc4MCwgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIAorICAgIDE1ODEsIDc4MCwgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIAorICAgIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIAorICAgIDE2MDUsIDc4MCwgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIAorICAgIDE2MDUsIDc4MCwgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIAorICAgIDE2MTAsIDc4MCwgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIAorICAgIDE2MDUsIDc4MSwgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIAorICAgIDE2MDUsIDc4MSwgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIAorICAgIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIAorICAgIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIAorICAgIDE1ODEsIDc4MCwgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIAorICAgIDE2MTAsIDc4MCwgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIAorICAgIDE1ODAsIDc4MCwgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIAorICAgIDE1ODEsIDc4MSwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIAorICAgIDE2MDUsIDc4MCwgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIAorICAgIDE2MDUsIDc4MSwgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIAorICAgIDE1ODIsIDc4MSwgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIAorICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIAorICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIAorICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIAorICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIAorICAgIDE2MDksIDc4MCwgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIAorICAgIDE2MTAsIDc4MCwgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIAorICAgIDE2MTAsIDc4MSwgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAorICAgIDE2MTAsIDc4MCwgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIAorICAgIDE2MTAsIDc4MSwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIAorICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIAorICAgIDE2MTAsIDc4MCwgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIAorICAgIDE2MTAsIDc4MSwgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIAorICAgIDE2MDUsIDc4MCwgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIAorICAgIDE3NDYsIDc3OSwgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgCisgICAgMTYwMywgMTU3NiwgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgCisgICAgMTYwNSwgMTAzNSwgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgCisgICAgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAKKyAgICAzMiwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAKKyAgICAxNjA0LCAxNjA1LCAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgCisgICAgMTU4NSwgMTc0MCwgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCAKKyAgICA1OSwgMjY1LCAzMywgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgCisgICAgODIxMiwgMjY1LCA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIAorICAgIDI2NSwgMTIzMDgsIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIAorICAgIDI2NSwgMTIyOTYsIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIAorICAgIDI2NSwgOTEsIDI2NSwgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgCisgICAgMjU4LCA5NSwgMjU4LCA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCAKKyAgICA2MywgMjcxLCAzMywgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIAorICAgIDI3MSwgMTIzMDksIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgCisgICAgNjIsIDI3MSwgNjEsIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgCisgICAgMTYwMCwgMTYxMSwgNTIzLCAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCAKKyAgICA1MjMsIDMyLCAxNjE1LCA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgCisgICAgMTYxNywgNTI2LCAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAKKyAgICAxNTcwLCAyNjgsIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAKKyAgICAyNjgsIDE1NzMsIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIAorICAgIDE1NzUsIDI2NywgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIAorICAgIDI2NywgMTU3OCwgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgCisgICAgMTU3OSwgMjcwLCAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgCisgICAgMjY4LCAxNTgxLCAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAKKyAgICAxNTgyLCAyNjcsIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAKKyAgICAyNjcsIDE1ODYsIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIAorICAgIDE1ODgsIDI2OCwgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIAorICAgIDI3MCwgMTU4OSwgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgCisgICAgMTU5MSwgMjY5LCAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgCisgICAgMjY3LCAxNTkzLCAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAKKyAgICAxNTk0LCAyNzAsIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAKKyAgICAyNjgsIDE2MDIsIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIAorICAgIDE2MDMsIDI2NywgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIAorICAgIDI2OSwgMTYwNSwgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgCisgICAgMTYwNywgMjY4LCAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgCisgICAgMjY4LCAxNjA5LCAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgCisgICAgNTI0LCAxNjA0LCAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIAorICAgIDE2MDQsIDE1NzMsIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAKKyAgICAyNjQsIDM2LCAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAKKyAgICAyNjQsIDQ0LCAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAKKyAgICAyNjQsIDUyLCAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAKKyAgICAyNjQsIDYwLCAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAKKyAgICAyNjQsIDY4LCAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAKKyAgICAyNjQsIDc2LCAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAKKyAgICAyNjQsIDg0LCAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAKKyAgICAyNjQsIDkyLCAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAKKyAgICAyNjQsIDEwMCwgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgCisgICAgMjY0LCAxMDcsIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIAorICAgIDI2NCwgMTE0LCAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAKKyAgICAyNjQsIDEyMSwgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAKKyAgICAyNjQsIDEwNjMwLCAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAKKyAgICAyNzIsIDEyNTMwLCAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAKKyAgICAyNzIsIDEyNTE1LCAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAKKyAgICAyNzIsIDEyNDUyLCAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAKKyAgICAyNzIsIDEyNDYzLCAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAKKyAgICAyNzIsIDEyNDc1LCAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAKKyAgICAyNzIsIDEyNDg4LCAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAKKyAgICAyNzIsIDEyNDk1LCAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAKKyAgICAyNzIsIDEyNTExLCAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAKKyAgICAyNzIsIDEyNTIwLCAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAKKyAgICAyNzIsIDEyNTI3LCAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAKKyAgICAyNzIsIDEyNTk0LCAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAKKyAgICAyNzIsIDEyNjAwLCAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAKKyAgICAyNzIsIDEyNjA2LCAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAKKyAgICAyNzIsIDEyNjEyLCAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAKKyAgICAyNzIsIDEyNjE4LCAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAKKyAgICAyNzIsIDEyNjI0LCAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAKKyAgICAyNzIsIDEyNjMwLCAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAKKyAgICAyNzIsIDEyNjM2LCAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAKKyAgICAyNzIsIDEyNjQyLCAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIAorICAgIDI2NCwgMTY1LCAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCAKKyAgICA4NTk1LCAyNzIsIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIAorICAgIDY5Nzk3LCA2OTgxOCwgNTEyLCA2OTkzNywgNjk5MjcsIDUxMiwgNjk5MzgsIDY5OTI3LCA1MTIsIDExOTEyNywgMTE5MTQxLCAKKyAgICA1MTIsIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIAorICAgIDExOTEzNSwgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgCisgICAgMTE5MTQxLCA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCAKKyAgICA1MTIsIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIAorICAgIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIAorICAgIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIAorICAgIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIAorICAgIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAKKyAgICAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgCisgICAgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIAorICAgIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgCisgICAgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgCisgICAgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgCisgICAgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgCisgICAgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKICAgICAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgCiAgICAgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIAogICAgIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAKQEAgLTM1MTAsMjAgKzM1NzksNDIgQEAKICAgICA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCAKICAgICA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCAKICAgICA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCAKLSAgICA1NiwgMjYyLCA1NywgNTE0LCA0OCwgNDYsIDUxNCwgNDgsIDQ0LCA1MTQsIDQ5LCA0NCwgNTE0LCA1MCwgNDQsIDUxNCwgNTEsIAotICAgIDQ0LCA1MTQsIDUyLCA0NCwgNTE0LCA1MywgNDQsIDUxNCwgNTQsIDQ0LCA1MTQsIDU1LCA0NCwgNTE0LCA1NiwgNDQsIDUxNCwgCi0gICAgNTcsIDQ0LCA3NzAsIDQwLCA2NSwgNDEsIDc3MCwgNDAsIDY2LCA0MSwgNzcwLCA0MCwgNjcsIDQxLCA3NzAsIDQwLCA2OCwgCi0gICAgNDEsIDc3MCwgNDAsIDY5LCA0MSwgNzcwLCA0MCwgNzAsIDQxLCA3NzAsIDQwLCA3MSwgNDEsIDc3MCwgNDAsIDcyLCA0MSwgCi0gICAgNzcwLCA0MCwgNzMsIDQxLCA3NzAsIDQwLCA3NCwgNDEsIDc3MCwgNDAsIDc1LCA0MSwgNzcwLCA0MCwgNzYsIDQxLCA3NzAsIAotICAgIDQwLCA3NywgNDEsIDc3MCwgNDAsIDc4LCA0MSwgNzcwLCA0MCwgNzksIDQxLCA3NzAsIDQwLCA4MCwgNDEsIDc3MCwgNDAsIAotICAgIDgxLCA0MSwgNzcwLCA0MCwgODIsIDQxLCA3NzAsIDQwLCA4MywgNDEsIDc3MCwgNDAsIDg0LCA0MSwgNzcwLCA0MCwgODUsIAotICAgIDQxLCA3NzAsIDQwLCA4NiwgNDEsIDc3MCwgNDAsIDg3LCA0MSwgNzcwLCA0MCwgODgsIDQxLCA3NzAsIDQwLCA4OSwgNDEsIAotICAgIDc3MCwgNDAsIDkwLCA0MSwgNzcwLCAxMjMwOCwgODMsIDEyMzA5LCAyNjMsIDY3LCAyNjMsIDgyLCA1MTksIDY3LCA2OCwgCi0gICAgNTE5LCA4NywgOTAsIDI2NiwgNjUsIDI2NiwgNjYsIDI2NiwgNjcsIDI2NiwgNjgsIDI2NiwgNjksIDI2NiwgNzAsIDI2NiwgCi0gICAgNzEsIDI2NiwgNzIsIDI2NiwgNzMsIDI2NiwgNzQsIDI2NiwgNzUsIDI2NiwgNzYsIDI2NiwgNzcsIDI2NiwgNzgsIDI2NiwgCi0gICAgNzksIDI2NiwgODAsIDI2NiwgODEsIDI2NiwgODIsIDI2NiwgODMsIDI2NiwgODQsIDI2NiwgODUsIDI2NiwgODYsIDI2NiwgCi0gICAgODcsIDI2NiwgODgsIDI2NiwgODksIDI2NiwgOTAsIDUyMiwgNzIsIDg2LCA1MjIsIDc3LCA4NiwgNTIyLCA4MywgNjgsIAotICAgIDUyMiwgODMsIDgzLCA3NzgsIDgwLCA4MCwgODYsIDUyMiwgODcsIDY3LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgCisgICAgNTYsIDI2MiwgNTcsIDI2MiwgMTU3NSwgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIAorICAgIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIAorICAgIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgCisgICAgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgCisgICAgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNzIyLCAyNjIsIDE2OTcsIDI2MiwgMTY0NywgMjYyLCAKKyAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAKKyAgICAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIAorICAgIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAorICAgIDI2MiwgMTU4MCwgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgCisgICAgMTU5MywgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgCisgICAgMjYyLCAxNzIyLCAyNjIsIDE2NDcsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAKKyAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIAorICAgIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNjk3LCAyNjIsIDE1NzUsIAorICAgIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwNywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgCisgICAgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgCisgICAgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAKKyAgICAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAKKyAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIAorICAgIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAorICAgIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgCisgICAgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDUxNCwgNDgsIDQ2LCAKKyAgICA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIAorICAgIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCAKKyAgICA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgCisgICAgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgCisgICAgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgCisgICAgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgCisgICAgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIAorICAgIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgCisgICAgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAKKyAgICAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAKKyAgICAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAKKyAgICAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAKKyAgICAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIAorICAgIDg2LCA1MjIsIDg3LCA2NywgNTE1LCA3NywgNjcsIDUxNSwgNzcsIDY4LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgCiAgICAgMTIzNjMsIDUyMiwgMTI0NjcsIDEyNDY3LCAyNjYsIDEyNDY5LCAyNjYsIDI1MTYzLCAyNjYsIDIzMzgzLCAyNjYsIDIxNDUyLCAKICAgICAyNjYsIDEyNDg3LCAyNjYsIDIwMTA4LCAyNjYsIDIyODEwLCAyNjYsIDM1Mjk5LCAyNjYsIDIyODI1LCAyNjYsIDIwMTMyLCAKICAgICAyNjYsIDI2MTQ0LCAyNjYsIDI4OTYxLCAyNjYsIDI2MDA5LCAyNjYsIDIxMDY5LCAyNjYsIDI0NDYwLCAyNjYsIDIwODc3LCAKQEAgLTM2NDMsNyArMzczNCw3IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgCi0gICAgNDEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQyLCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA0MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDIsIDQzLCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKQEAgLTM2NTEsOSArMzc0Miw5IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNDMsIDcsIDcsIDQ0LCA0NSwgCi0gICAgNDYsIDQ3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA0OCwgNDksIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQ0LCA3LCA3LCA0NSwgCisgICAgNDYsIDQ3LCA0OCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNDksIDcsIDcsIDUwLCA1MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCkBAIC0zNjY0LDcgKzM3NTUsNyBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDUwLCA1MSwgNTIsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDcsIDcsIDcsIDUyLCA1MywgNTQsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIApAQCAtMzgxMyw3ICszOTA0LDcgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBkZWNvbXBfaW5kZXgyW10gPSB7CkBAIC00MjgyLDM1NiArNDM3MywxNjMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NjQ4LCA2NjUwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjUyLCA2NjU0LCA2NjU2LCA2NjU4LCA2NjYwLCA2NjYyLCA2NjY0LCAKKyAgICA2NjY2LCA2NjY4LCA2NjcwLCA2NjcyLCA2Njc0LCA2Njc2LCA2Njc4LCA2NjgwLCA2NjgyLCA2Njg0LCA2Njg2LCA2Njg4LCAKKyAgICA2NjkwLCA2NjkyLCA2Njk0LCA2Njk2LCA2Njk4LCA2NzAwLCA2NzAyLCA2NzA0LCA2NzA2LCA2NzA4LCA2NzEwLCA2NzEyLCAKKyAgICA2NzE0LCA2NzE2LCA2NzE4LCA2NzIwLCA2NzIyLCA2NzI0LCA2NzI2LCA2NzI4LCA2NzMwLCA2NzMyLCA2NzM0LCA2NzM2LCAKKyAgICA2NzM4LCA2NzQwLCA2NzQyLCA2NzQ0LCA2NzQ2LCA2NzQ4LCA2NzUwLCA2NzUyLCA2NzU0LCA2NzU2LCA2NzU4LCA2NzYwLCAKKyAgICA2NzYyLCA2NzY0LCA2NzY2LCA2NzY4LCA2NzcwLCA2NzcyLCA2Nzc0LCA2Nzc2LCA2Nzc4LCA2NzgwLCA2NzgyLCA2Nzg0LCAKKyAgICA2Nzg2LCA2Nzg4LCA2NzkwLCA2NzkyLCA2Nzk0LCA2Nzk2LCA2Nzk4LCA2ODAwLCA2ODAyLCA2ODA0LCA2ODA2LCA2ODA4LCAKKyAgICA2ODEwLCA2ODEyLCA2ODE0LCA2ODE2LCA2ODE4LCA2ODIwLCA2ODIyLCA2ODI0LCA2ODI2LCA2ODI4LCA2ODMwLCA2ODMyLCAKKyAgICA2ODM0LCA2ODM2LCA2ODM4LCA2ODQwLCA2ODQyLCA2ODQ0LCA2ODQ2LCA2ODQ4LCA2ODUwLCA2ODUyLCA2ODU0LCA2ODU2LCAKKyAgICA2ODU4LCA2ODYwLCA2ODYyLCA2ODY0LCA2ODY2LCA2ODY4LCA2ODcwLCA2ODcyLCA2ODc0LCA2ODc2LCA2ODc4LCA2ODgwLCAKKyAgICA2ODgyLCA2ODg0LCA2ODg2LCA2ODg4LCA2ODkwLCA2ODkyLCA2ODk0LCA2ODk2LCA2ODk4LCA2OTAwLCA2OTAyLCA2OTA0LCAKKyAgICA2OTA2LCA2OTA4LCA2OTEwLCA2OTEyLCA2OTE0LCA2OTE2LCA2OTE4LCA2OTIwLCA2OTIyLCA2OTI0LCA2OTI2LCA2OTI4LCAKKyAgICA2OTMwLCA2OTMyLCA2OTM0LCA2OTM2LCA2OTM4LCA2OTQwLCA2OTQyLCA2OTQ0LCA2OTQ2LCA2OTQ4LCA2OTUwLCA2OTUyLCAKKyAgICA2OTU0LCA2OTU2LCA2OTU4LCA2OTYwLCA2OTYyLCA2OTY0LCA2OTY2LCA2OTY4LCA2OTcwLCA2OTcyLCA2OTc0LCA2OTc2LCAKKyAgICA2OTc4LCA2OTgwLCA2OTgyLCA2OTg0LCA2OTg2LCA2OTg4LCA2OTkwLCA2OTkyLCA2OTk0LCA2OTk2LCA2OTk4LCA3MDAwLCAKKyAgICA3MDAyLCA3MDA0LCA3MDA2LCA3MDA4LCA3MDEwLCA3MDEyLCA3MDE0LCA3MDE2LCA3MDE4LCA3MDIwLCA3MDIyLCA3MDI0LCAKKyAgICA3MDI2LCA3MDI4LCA3MDMwLCA3MDMyLCA3MDM0LCA3MDM2LCA3MDM4LCA3MDQwLCA3MDQyLCA3MDQ0LCA3MDQ2LCA3MDQ4LCAKKyAgICA3MDUwLCA3MDUyLCA3MDU0LCA3MDU2LCA3MDU4LCA3MDYwLCA3MDYyLCA3MDY0LCA3MDY2LCA3MDY4LCA3MDcwLCA3MDcyLCAKKyAgICA3MDc0LCA3MDc2LCA3MDc4LCA3MDgwLCA3MDgyLCA3MDg0LCA3MDg2LCA3MDg4LCA3MDkwLCA3MDkyLCA3MDk0LCA3MDk2LCAKKyAgICA3MDk4LCA3MTAwLCA3MTAyLCA3MTA0LCA3MTA2LCA3MTA4LCA3MTEwLCA3MTEyLCA3MTE0LCA3MTE2LCA3MTE4LCA3MTIwLCAKKyAgICA3MTIyLCA3MTI0LCA3MTI2LCA3MTI4LCA3MTMwLCA3MTMyLCA3MTM0LCA3MTM2LCA3MTM4LCA3MTQwLCA3MTQyLCA3MTQ0LCAKKyAgICA3MTQ2LCA3MTQ4LCA3MTUwLCA3MTUyLCA3MTU0LCA3MTU2LCA3MTU4LCA3MTYwLCA3MTYyLCA3MTY0LCA3MTY2LCA3MTY4LCAKKyAgICA3MTcwLCA3MTcyLCA3MTc0LCA3MTc2LCA3MTc4LCA3MTgwLCA3MTgyLCA3MTg0LCA3MTg2LCA3MTg4LCA3MTkwLCAwLCAwLCAKKyAgICA3MTkyLCAwLCA3MTk0LCAwLCAwLCA3MTk2LCA3MTk4LCA3MjAwLCA3MjAyLCA3MjA0LCA3MjA2LCA3MjA4LCA3MjEwLCAKKyAgICA3MjEyLCA3MjE0LCAwLCA3MjE2LCAwLCA3MjE4LCAwLCAwLCA3MjIwLCA3MjIyLCAwLCAwLCAwLCA3MjI0LCA3MjI2LCAKKyAgICA3MjI4LCA3MjMwLCA3MjMyLCA3MjM0LCA3MjM2LCA3MjM4LCA3MjQwLCA3MjQyLCA3MjQ0LCA3MjQ2LCA3MjQ4LCA3MjUwLCAKKyAgICA3MjUyLCA3MjU0LCA3MjU2LCA3MjU4LCA3MjYwLCA3MjYyLCA3MjY0LCA3MjY2LCA3MjY4LCA3MjcwLCA3MjcyLCA3Mjc0LCAKKyAgICA3Mjc2LCA3Mjc4LCA3MjgwLCA3MjgyLCA3Mjg0LCA3Mjg2LCA3Mjg4LCA3MjkwLCA3MjkyLCA3Mjk0LCA3Mjk2LCA3Mjk4LCAKKyAgICA3MzAwLCA3MzAyLCA3MzA0LCA3MzA2LCA3MzA4LCA3MzEwLCA3MzEyLCA3MzE0LCA3MzE2LCA3MzE4LCA3MzIwLCA3MzIyLCAKKyAgICA3MzI0LCA3MzI2LCA3MzI4LCA3MzMwLCA3MzMyLCA3MzM0LCA3MzM2LCA3MzM4LCA3MzQwLCA3MzQyLCA3MzQ0LCA3MzQ2LCAKKyAgICA3MzQ4LCA3MzUwLCA3MzUyLCA3MzU0LCA3MzU2LCA3MzU4LCAwLCAwLCA3MzYwLCA3MzYyLCA3MzY0LCA3MzY2LCA3MzY4LCAKKyAgICA3MzcwLCA3MzcyLCA3Mzc0LCA3Mzc2LCA3Mzc4LCA3MzgwLCA3MzgyLCA3Mzg0LCA3Mzg2LCA3Mzg4LCA3MzkwLCA3MzkyLCAKKyAgICA3Mzk0LCA3Mzk2LCA3Mzk4LCA3NDAwLCA3NDAyLCA3NDA0LCA3NDA2LCA3NDA4LCA3NDEwLCA3NDEyLCA3NDE0LCA3NDE2LCAKKyAgICA3NDE4LCA3NDIwLCA3NDIyLCA3NDI0LCA3NDI2LCA3NDI4LCA3NDMwLCA3NDMyLCA3NDM0LCA3NDM2LCA3NDM4LCA3NDQwLCAKKyAgICA3NDQyLCA3NDQ0LCA3NDQ2LCA3NDQ4LCA3NDUwLCA3NDUyLCA3NDU0LCA3NDU2LCA3NDU4LCA3NDYwLCA3NDYyLCA3NDY0LCAKKyAgICA3NDY2LCA3NDY4LCA3NDcwLCA3NDcyLCA3NDc0LCA3NDc2LCA3NDc4LCA3NDgwLCA3NDgyLCA3NDg0LCA3NDg2LCA3NDg4LCAKKyAgICA3NDkwLCA3NDkyLCA3NDk0LCA3NDk2LCA3NDk4LCA3NTAwLCA3NTAyLCA3NTA0LCA3NTA2LCA3NTA4LCA3NTEwLCA3NTEyLCAKKyAgICA3NTE0LCA3NTE2LCA3NTE4LCA3NTIwLCA3NTIyLCA3NTI0LCA3NTI2LCA3NTI4LCA3NTMwLCA3NTMyLCA3NTM0LCA3NTM2LCAKKyAgICA3NTM4LCA3NTQwLCA3NTQyLCA3NTQ0LCA3NTQ2LCA3NTQ4LCA3NTUwLCA3NTUyLCA3NTU0LCA3NTU2LCA3NTU4LCA3NTYwLCAKKyAgICA3NTYyLCA3NTY0LCA3NTY2LCA3NTY4LCA3NTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjQ4LCA2NjUwLCA2NjUyLCA2NjU0LCA2NjU2LCA2NjU4LCA2NjYwLCA2NjYyLCAKLSAgICA2NjY0LCA2NjY2LCA2NjY4LCA2NjcwLCA2NjcyLCA2Njc0LCA2Njc2LCA2Njc4LCA2NjgwLCA2NjgyLCA2Njg0LCA2Njg2LCAKLSAgICA2Njg4LCA2NjkwLCA2NjkyLCA2Njk0LCA2Njk2LCA2Njk4LCA2NzAwLCA2NzAyLCA2NzA0LCA2NzA2LCA2NzA4LCA2NzEwLCAKLSAgICA2NzEyLCA2NzE0LCA2NzE2LCA2NzE4LCA2NzIwLCA2NzIyLCA2NzI0LCA2NzI2LCA2NzI4LCA2NzMwLCA2NzMyLCA2NzM0LCAKLSAgICA2NzM2LCA2NzM4LCA2NzQwLCA2NzQyLCA2NzQ0LCA2NzQ2LCA2NzQ4LCA2NzUwLCA2NzUyLCA2NzU0LCA2NzU2LCA2NzU4LCAKLSAgICA2NzYwLCA2NzYyLCA2NzY0LCA2NzY2LCA2NzY4LCA2NzcwLCA2NzcyLCA2Nzc0LCA2Nzc2LCA2Nzc4LCA2NzgwLCA2NzgyLCAKLSAgICA2Nzg0LCA2Nzg2LCA2Nzg4LCA2NzkwLCA2NzkyLCA2Nzk0LCA2Nzk2LCA2Nzk4LCA2ODAwLCA2ODAyLCA2ODA0LCA2ODA2LCAKLSAgICA2ODA4LCA2ODEwLCA2ODEyLCA2ODE0LCA2ODE2LCA2ODE4LCA2ODIwLCA2ODIyLCA2ODI0LCA2ODI2LCA2ODI4LCA2ODMwLCAKLSAgICA2ODMyLCA2ODM0LCA2ODM2LCA2ODM4LCA2ODQwLCA2ODQyLCA2ODQ0LCA2ODQ2LCA2ODQ4LCA2ODUwLCA2ODUyLCA2ODU0LCAKLSAgICA2ODU2LCA2ODU4LCA2ODYwLCA2ODYyLCA2ODY0LCA2ODY2LCA2ODY4LCA2ODcwLCA2ODcyLCA2ODc0LCA2ODc2LCA2ODc4LCAKLSAgICA2ODgwLCA2ODgyLCA2ODg0LCA2ODg2LCA2ODg4LCA2ODkwLCA2ODkyLCA2ODk0LCA2ODk2LCA2ODk4LCA2OTAwLCA2OTAyLCAKLSAgICA2OTA0LCA2OTA2LCA2OTA4LCA2OTEwLCA2OTEyLCA2OTE0LCA2OTE2LCA2OTE4LCA2OTIwLCA2OTIyLCA2OTI0LCA2OTI2LCAKLSAgICA2OTI4LCA2OTMwLCA2OTMyLCA2OTM0LCA2OTM2LCA2OTM4LCA2OTQwLCA2OTQyLCA2OTQ0LCA2OTQ2LCA2OTQ4LCA2OTUwLCAKLSAgICA2OTUyLCA2OTU0LCA2OTU2LCA2OTU4LCA2OTYwLCA2OTYyLCA2OTY0LCA2OTY2LCA2OTY4LCA2OTcwLCA2OTcyLCA2OTc0LCAKLSAgICA2OTc2LCA2OTc4LCA2OTgwLCA2OTgyLCA2OTg0LCA2OTg2LCA2OTg4LCA2OTkwLCA2OTkyLCA2OTk0LCA2OTk2LCA2OTk4LCAKLSAgICA3MDAwLCA3MDAyLCA3MDA0LCA3MDA2LCA3MDA4LCA3MDEwLCA3MDEyLCA3MDE0LCA3MDE2LCA3MDE4LCA3MDIwLCA3MDIyLCAKLSAgICA3MDI0LCA3MDI2LCA3MDI4LCA3MDMwLCA3MDMyLCA3MDM0LCA3MDM2LCA3MDM4LCA3MDQwLCA3MDQyLCA3MDQ0LCA3MDQ2LCAKLSAgICA3MDQ4LCA3MDUwLCA3MDUyLCA3MDU0LCA3MDU2LCA3MDU4LCA3MDYwLCA3MDYyLCA3MDY0LCA3MDY2LCA3MDY4LCA3MDcwLCAKLSAgICA3MDcyLCA3MDc0LCA3MDc2LCA3MDc4LCA3MDgwLCA3MDgyLCA3MDg0LCA3MDg2LCA3MDg4LCA3MDkwLCA3MDkyLCA3MDk0LCAKLSAgICA3MDk2LCA3MDk4LCA3MTAwLCA3MTAyLCA3MTA0LCA3MTA2LCA3MTA4LCA3MTEwLCA3MTEyLCA3MTE0LCA3MTE2LCA3MTE4LCAKLSAgICA3MTIwLCA3MTIyLCA3MTI0LCA3MTI2LCA3MTI4LCA3MTMwLCA3MTMyLCA3MTM0LCA3MTM2LCA3MTM4LCA3MTQwLCA3MTQyLCAKLSAgICA3MTQ0LCA3MTQ2LCA3MTQ4LCA3MTUwLCA3MTUyLCA3MTU0LCA3MTU2LCA3MTU4LCA3MTYwLCA3MTYyLCA3MTY0LCA3MTY2LCAKLSAgICA3MTY4LCA3MTcwLCA3MTcyLCA3MTc0LCA3MTc2LCA3MTc4LCA3MTgwLCA3MTgyLCA3MTg0LCA3MTg2LCAwLCAwLCA3MTg4LCAKLSAgICAwLCA3MTkwLCAwLCAwLCA3MTkyLCA3MTk0LCA3MTk2LCA3MTk4LCA3MjAwLCA3MjAyLCA3MjA0LCA3MjA2LCA3MjA4LCAKLSAgICA3MjEwLCAwLCA3MjEyLCAwLCA3MjE0LCAwLCAwLCA3MjE2LCA3MjE4LCAwLCAwLCAwLCA3MjIwLCA3MjIyLCA3MjI0LCAKLSAgICA3MjI2LCAwLCAwLCA3MjI4LCA3MjMwLCA3MjMyLCA3MjM0LCA3MjM2LCA3MjM4LCA3MjQwLCA3MjQyLCA3MjQ0LCA3MjQ2LCAKLSAgICA3MjQ4LCA3MjUwLCA3MjUyLCA3MjU0LCA3MjU2LCA3MjU4LCA3MjYwLCA3MjYyLCA3MjY0LCA3MjY2LCA3MjY4LCA3MjcwLCAKLSAgICA3MjcyLCA3Mjc0LCA3Mjc2LCA3Mjc4LCA3MjgwLCA3MjgyLCA3Mjg0LCA3Mjg2LCA3Mjg4LCA3MjkwLCA3MjkyLCA3Mjk0LCAKLSAgICA3Mjk2LCA3Mjk4LCA3MzAwLCA3MzAyLCA3MzA0LCA3MzA2LCA3MzA4LCA3MzEwLCA3MzEyLCA3MzE0LCA3MzE2LCA3MzE4LCAKLSAgICA3MzIwLCA3MzIyLCA3MzI0LCA3MzI2LCA3MzI4LCA3MzMwLCA3MzMyLCA3MzM0LCA3MzM2LCA3MzM4LCA3MzQwLCA3MzQyLCAKLSAgICA3MzQ0LCA3MzQ2LCA3MzQ4LCA3MzUwLCAwLCAwLCA3MzUyLCA3MzU0LCA3MzU2LCA3MzU4LCA3MzYwLCA3MzYyLCA3MzY0LCAKLSAgICA3MzY2LCA3MzY4LCA3MzcwLCA3MzcyLCA3Mzc0LCA3Mzc2LCA3Mzc4LCA3MzgwLCA3MzgyLCA3Mzg0LCA3Mzg2LCA3Mzg4LCAKLSAgICA3MzkwLCA3MzkyLCA3Mzk0LCA3Mzk2LCA3Mzk4LCA3NDAwLCA3NDAyLCA3NDA0LCA3NDA2LCA3NDA4LCA3NDEwLCA3NDEyLCAKLSAgICA3NDE0LCA3NDE2LCA3NDE4LCA3NDIwLCA3NDIyLCA3NDI0LCA3NDI2LCA3NDI4LCA3NDMwLCA3NDMyLCA3NDM0LCA3NDM2LCAKLSAgICA3NDM4LCA3NDQwLCA3NDQyLCA3NDQ0LCA3NDQ2LCA3NDQ4LCA3NDUwLCA3NDUyLCA3NDU0LCA3NDU2LCA3NDU4LCA3NDYwLCAKLSAgICA3NDYyLCA3NDY0LCA3NDY2LCA3NDY4LCA3NDcwLCA3NDcyLCA3NDc0LCA3NDc2LCA3NDc4LCA3NDgwLCA3NDgyLCA3NDg0LCAKLSAgICA3NDg2LCA3NDg4LCA3NDkwLCA3NDkyLCA3NDk0LCA3NDk2LCA3NDk4LCA3NTAwLCA3NTAyLCA3NTA0LCA3NTA2LCA3NTA4LCAKLSAgICA3NTEwLCA3NTEyLCA3NTE0LCA3NTE2LCA3NTE4LCA3NTIwLCA3NTIyLCA3NTI0LCA3NTI2LCA3NTI4LCA3NTMwLCA3NTMyLCAKLSAgICA3NTM0LCA3NTM2LCA3NTM4LCA3NTQwLCA3NTQyLCA3NTQ0LCA3NTQ2LCA3NTQ4LCA3NTUwLCA3NTUyLCA3NTU0LCA3NTU2LCAKLSAgICA3NTU4LCA3NTYwLCA3NTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTY0LCA3NTY3LCAKLSAgICA3NTcwLCA3NTczLCA3NTc3LCA3NTgxLCA3NTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTg3LCAKLSAgICA3NTkwLCA3NTkzLCA3NTk2LCA3NTk5LCAwLCAwLCAwLCAwLCAwLCA3NjAyLCAwLCA3NjA1LCA3NjA4LCA3NjEwLCA3NjEyLCAKLSAgICA3NjE0LCA3NjE2LCA3NjE4LCA3NjIwLCA3NjIyLCA3NjI0LCA3NjI2LCA3NjI4LCA3NjMxLCA3NjM0LCA3NjM3LCA3NjQwLCAKLSAgICA3NjQzLCA3NjQ2LCA3NjQ5LCA3NjUyLCA3NjU1LCA3NjU4LCA3NjYxLCA3NjY0LCAwLCA3NjY3LCA3NjcwLCA3NjczLCAKLSAgICA3Njc2LCA3Njc5LCAwLCA3NjgyLCAwLCA3Njg1LCA3Njg4LCAwLCA3NjkxLCA3Njk0LCAwLCA3Njk3LCA3NzAwLCA3NzAzLCAKLSAgICA3NzA2LCA3NzA5LCA3NzEyLCA3NzE1LCA3NzE4LCA3NzIxLCA3NzI0LCA3NzI3LCA3NzI5LCA3NzMxLCA3NzMzLCA3NzM1LCAKLSAgICA3NzM3LCA3NzM5LCA3NzQxLCA3NzQzLCA3NzQ1LCA3NzQ3LCA3NzQ5LCA3NzUxLCA3NzUzLCA3NzU1LCA3NzU3LCA3NzU5LCAKLSAgICA3NzYxLCA3NzYzLCA3NzY1LCA3NzY3LCA3NzY5LCA3NzcxLCA3NzczLCA3Nzc1LCA3Nzc3LCA3Nzc5LCA3NzgxLCA3NzgzLCAKLSAgICA3Nzg1LCA3Nzg3LCA3Nzg5LCA3NzkxLCA3NzkzLCA3Nzk1LCA3Nzk3LCA3Nzk5LCA3ODAxLCA3ODAzLCA3ODA1LCA3ODA3LCAKLSAgICA3ODA5LCA3ODExLCA3ODEzLCA3ODE1LCA3ODE3LCA3ODE5LCA3ODIxLCA3ODIzLCA3ODI1LCA3ODI3LCA3ODI5LCA3ODMxLCAKLSAgICA3ODMzLCA3ODM1LCA3ODM3LCA3ODM5LCA3ODQxLCA3ODQzLCA3ODQ1LCA3ODQ3LCA3ODQ5LCA3ODUxLCA3ODUzLCA3ODU1LCAKLSAgICA3ODU3LCA3ODU5LCA3ODYxLCA3ODYzLCA3ODY1LCA3ODY3LCA3ODY5LCA3ODcxLCA3ODczLCA3ODc1LCA3ODc3LCA3ODc5LCAKLSAgICA3ODgxLCA3ODgzLCA3ODg1LCA3ODg3LCA3ODg5LCA3ODkxLCA3ODkzLCA3ODk1LCA3ODk3LCA3ODk5LCA3OTAxLCA3OTAzLCAKLSAgICA3OTA1LCA3OTA3LCA3OTA5LCA3OTExLCA3OTEzLCA3OTE1LCA3OTE3LCA3OTE5LCA3OTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NTcyLCA3NTc1LCA3NTc4LCA3NTgxLCA3NTg1LCA3NTg5LCA3NTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3NTk1LCA3NTk4LCA3NjAxLCA3NjA0LCA3NjA3LCAwLCAwLCAwLCAwLCAwLCA3NjEwLCAwLCA3NjEzLCA3NjE2LCAKKyAgICA3NjE4LCA3NjIwLCA3NjIyLCA3NjI0LCA3NjI2LCA3NjI4LCA3NjMwLCA3NjMyLCA3NjM0LCA3NjM2LCA3NjM5LCA3NjQyLCAKKyAgICA3NjQ1LCA3NjQ4LCA3NjUxLCA3NjU0LCA3NjU3LCA3NjYwLCA3NjYzLCA3NjY2LCA3NjY5LCA3NjcyLCAwLCA3Njc1LCAKKyAgICA3Njc4LCA3NjgxLCA3Njg0LCA3Njg3LCAwLCA3NjkwLCAwLCA3NjkzLCA3Njk2LCAwLCA3Njk5LCA3NzAyLCAwLCA3NzA1LCAKKyAgICA3NzA4LCA3NzExLCA3NzE0LCA3NzE3LCA3NzIwLCA3NzIzLCA3NzI2LCA3NzI5LCA3NzMyLCA3NzM1LCA3NzM3LCA3NzM5LCAKKyAgICA3NzQxLCA3NzQzLCA3NzQ1LCA3NzQ3LCA3NzQ5LCA3NzUxLCA3NzUzLCA3NzU1LCA3NzU3LCA3NzU5LCA3NzYxLCA3NzYzLCAKKyAgICA3NzY1LCA3NzY3LCA3NzY5LCA3NzcxLCA3NzczLCA3Nzc1LCA3Nzc3LCA3Nzc5LCA3NzgxLCA3NzgzLCA3Nzg1LCA3Nzg3LCAKKyAgICA3Nzg5LCA3NzkxLCA3NzkzLCA3Nzk1LCA3Nzk3LCA3Nzk5LCA3ODAxLCA3ODAzLCA3ODA1LCA3ODA3LCA3ODA5LCA3ODExLCAKKyAgICA3ODEzLCA3ODE1LCA3ODE3LCA3ODE5LCA3ODIxLCA3ODIzLCA3ODI1LCA3ODI3LCA3ODI5LCA3ODMxLCA3ODMzLCA3ODM1LCAKKyAgICA3ODM3LCA3ODM5LCA3ODQxLCA3ODQzLCA3ODQ1LCA3ODQ3LCA3ODQ5LCA3ODUxLCA3ODUzLCA3ODU1LCA3ODU3LCA3ODU5LCAKKyAgICA3ODYxLCA3ODYzLCA3ODY1LCA3ODY3LCA3ODY5LCA3ODcxLCA3ODczLCA3ODc1LCA3ODc3LCA3ODc5LCA3ODgxLCA3ODgzLCAKKyAgICA3ODg1LCA3ODg3LCA3ODg5LCA3ODkxLCA3ODkzLCA3ODk1LCA3ODk3LCA3ODk5LCA3OTAxLCA3OTAzLCA3OTA1LCA3OTA3LCAKKyAgICA3OTA5LCA3OTExLCA3OTEzLCA3OTE1LCA3OTE3LCA3OTE5LCA3OTIxLCA3OTIzLCA3OTI1LCA3OTI3LCA3OTI5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3OTIzLCA3OTI1LCA3OTI3LCA3OTI5LCA3OTMxLCA3OTMzLCA3OTM1LCA3OTM3LCA3OTM5LCA3OTQxLCAKLSAgICA3OTQzLCA3OTQ1LCA3OTQ3LCA3OTQ5LCA3OTUxLCA3OTUzLCA3OTU1LCA3OTU3LCA3OTU5LCA3OTYxLCA3OTYzLCA3OTY1LCAKLSAgICA3OTY3LCA3OTY5LCA3OTcyLCA3OTc1LCA3OTc4LCA3OTgxLCA3OTg0LCA3OTg3LCA3OTkwLCA3OTkzLCA3OTk2LCA3OTk5LCAKLSAgICA4MDAyLCA4MDA1LCA4MDA4LCA4MDExLCA4MDE0LCA4MDE3LCA4MDIwLCA4MDIzLCA4MDI1LCA4MDI3LCA4MDI5LCA4MDMxLCAKLSAgICA4MDM0LCA4MDM3LCA4MDQwLCA4MDQzLCA4MDQ2LCA4MDQ5LCA4MDUyLCA4MDU1LCA4MDU4LCA4MDYxLCA4MDY0LCA4MDY3LCAKLSAgICA4MDcwLCA4MDczLCA4MDc2LCA4MDc5LCA4MDgyLCA4MDg1LCA4MDg4LCA4MDkxLCA4MDk0LCA4MDk3LCA4MTAwLCA4MTAzLCAKLSAgICA4MTA2LCA4MTA5LCA4MTEyLCA4MTE1LCA4MTE4LCA4MTIxLCA4MTI0LCA4MTI3LCA4MTMwLCA4MTMzLCA4MTM2LCA4MTM5LCAKLSAgICA4MTQyLCA4MTQ1LCA4MTQ4LCA4MTUxLCA4MTU0LCA4MTU3LCA4MTYwLCA4MTYzLCA4MTY2LCA4MTY5LCA4MTcyLCA4MTc1LCAKLSAgICA4MTc4LCA4MTgxLCA4MTg0LCA4MTg3LCA4MTkwLCA4MTkzLCA4MTk2LCA4MTk5LCA4MjAyLCA4MjA1LCA4MjA4LCA4MjExLCAKLSAgICA4MjE0LCA4MjE3LCA4MjIwLCA4MjIzLCA4MjI2LCA4MjI5LCA4MjMyLCA4MjM1LCA4MjM4LCA4MjQxLCA4MjQ0LCA4MjQ3LCAKLSAgICA4MjUwLCA4MjUzLCA4MjU2LCA4MjU5LCA4MjYyLCA4MjY1LCA4MjY4LCA4MjcxLCA4Mjc0LCA4Mjc3LCA4MjgwLCA4MjgzLCAKLSAgICA4Mjg2LCA4Mjg5LCA4MjkyLCA4Mjk1LCA4Mjk4LCA4MzAxLCA4MzA0LCA4MzA3LCA4MzEwLCA4MzEzLCA4MzE3LCA4MzIxLCAKLSAgICA4MzI1LCA4MzI5LCA4MzMzLCA4MzM3LCA4MzQwLCA4MzQzLCA4MzQ2LCA4MzQ5LCA4MzUyLCA4MzU1LCA4MzU4LCA4MzYxLCAKLSAgICA4MzY0LCA4MzY3LCA4MzcwLCA4MzczLCA4Mzc2LCA4Mzc5LCA4MzgyLCA4Mzg1LCA4Mzg4LCA4MzkxLCA4Mzk0LCA4Mzk3LCAKLSAgICA4NDAwLCA4NDAzLCA4NDA2LCA4NDA5LCA4NDEyLCA4NDE1LCA4NDE4LCA4NDIxLCA4NDI0LCA4NDI3LCA4NDMwLCA4NDMzLCAKLSAgICA4NDM2LCA4NDM5LCA4NDQyLCA4NDQ1LCA4NDQ4LCA4NDUxLCA4NDU0LCA4NDU3LCA4NDYwLCA4NDYzLCA4NDY2LCA4NDY5LCAKLSAgICA4NDcyLCA4NDc1LCA4NDc4LCA4NDgxLCA4NDg0LCA4NDg3LCA4NDkwLCA4NDkzLCA4NDk2LCA4NDk5LCA4NTAyLCA4NTA1LCAKLSAgICA4NTA4LCA4NTExLCA4NTE0LCA4NTE3LCA4NTIwLCA4NTIzLCA4NTI2LCA4NTI5LCA4NTMyLCA4NTM1LCA4NTM4LCA4NTQxLCAKLSAgICA4NTQ0LCA4NTQ3LCA4NTUwLCA4NTUzLCA4NTU2LCA4NTU5LCA4NTYyLCA4NTY1LCA4NTY4LCA4NTcxLCA4NTc0LCA4NTc3LCAKLSAgICA4NTgwLCA4NTgzLCA4NTg2LCA4NTg5LCA4NTkyLCA4NTk1LCA4NTk4LCA4NjAxLCA4NjA0LCA4NjA3LCA4NjEwLCA4NjEzLCAKLSAgICA4NjE2LCA4NjE5LCA4NjIyLCA4NjI1LCA4NjI4LCA4NjMxLCA4NjM0LCA4NjM3LCA4NjQwLCA4NjQzLCA4NjQ2LCA4NjQ5LCAKLSAgICA4NjUyLCA4NjU1LCA4NjU4LCA4NjYxLCA4NjY0LCA4NjY3LCA4NjcwLCA4NjczLCA4Njc2LCA4Njc5LCA4NjgyLCA4Njg1LCAKLSAgICA4Njg4LCA4NjkxLCA4Njk0LCA4Njk3LCA4NzAwLCA4NzAzLCA4NzA2LCA4NzA5LCA4NzEyLCA4NzE1LCA4NzE4LCA4NzIxLCAKLSAgICA4NzI0LCA4NzI3LCA4NzMwLCA4NzMzLCA4NzM2LCA4NzM5LCA4NzQyLCA4NzQ1LCA4NzQ4LCA4NzUxLCA4NzU0LCA4NzU3LCAKLSAgICA4NzYwLCA4NzYzLCA4NzY3LCA4NzcxLCA4Nzc1LCA4Nzc4LCA4NzgxLCA4Nzg0LCA4Nzg3LCA4NzkwLCA4NzkzLCA4Nzk2LCAKLSAgICA4Nzk5LCA4ODAyLCA4ODA1LCA4ODA4LCA4ODExLCA4ODE0LCA4ODE3LCA4ODIwLCA4ODIzLCA4ODI2LCA4ODI5LCA4ODMyLCAKLSAgICA4ODM1LCA4ODM4LCA4ODQxLCA4ODQ0LCA4ODQ3LCA4ODUwLCA4ODUzLCA4ODU2LCA4ODU5LCA4ODYyLCA4ODY1LCA4ODY4LCAKLSAgICA4ODcxLCA4ODc0LCA4ODc3LCA4ODgwLCA4ODgzLCA4ODg2LCA4ODg5LCA4ODkyLCA4ODk1LCA4ODk4LCA4OTAxLCA4OTA0LCAKLSAgICA4OTA3LCA4OTEwLCA4OTEzLCA4OTE2LCA4OTE5LCA4OTIyLCA4OTI1LCA4OTI4LCA4OTMxLCA4OTM0LCA4OTM3LCA4OTQwLCAKLSAgICA4OTQzLCA4OTQ2LCA4OTQ5LCA4OTUyLCA4OTU1LCA4OTU4LCA4OTYxLCA4OTY0LCA4OTY3LCA4OTcwLCA4OTczLCA4OTc2LCAKLSAgICA4OTc5LCA4OTgyLCA4OTg1LCA4OTg4LCA4OTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4OTk0LCA4OTk4LCA5MDAyLCA5MDA2LCA5MDEwLCA5MDE0LCA5MDE4LCA5MDIyLCA5MDI2LCA5MDMwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTMxLCA3OTMzLCA3OTM1LCA3OTM3LCA3OTM5LCA3OTQxLCA3OTQzLCA3OTQ1LCAKKyAgICA3OTQ3LCA3OTQ5LCA3OTUxLCA3OTUzLCA3OTU1LCA3OTU3LCA3OTU5LCA3OTYxLCA3OTYzLCA3OTY1LCA3OTY3LCA3OTY5LCAKKyAgICA3OTcxLCA3OTczLCA3OTc1LCA3OTc3LCA3OTgwLCA3OTgzLCA3OTg2LCA3OTg5LCA3OTkyLCA3OTk1LCA3OTk4LCA4MDAxLCAKKyAgICA4MDA0LCA4MDA3LCA4MDEwLCA4MDEzLCA4MDE2LCA4MDE5LCA4MDIyLCA4MDI1LCA4MDI4LCA4MDMxLCA4MDMzLCA4MDM1LCAKKyAgICA4MDM3LCA4MDM5LCA4MDQyLCA4MDQ1LCA4MDQ4LCA4MDUxLCA4MDU0LCA4MDU3LCA4MDYwLCA4MDYzLCA4MDY2LCA4MDY5LCAKKyAgICA4MDcyLCA4MDc1LCA4MDc4LCA4MDgxLCA4MDg0LCA4MDg3LCA4MDkwLCA4MDkzLCA4MDk2LCA4MDk5LCA4MTAyLCA4MTA1LCAKKyAgICA4MTA4LCA4MTExLCA4MTE0LCA4MTE3LCA4MTIwLCA4MTIzLCA4MTI2LCA4MTI5LCA4MTMyLCA4MTM1LCA4MTM4LCA4MTQxLCAKKyAgICA4MTQ0LCA4MTQ3LCA4MTUwLCA4MTUzLCA4MTU2LCA4MTU5LCA4MTYyLCA4MTY1LCA4MTY4LCA4MTcxLCA4MTc0LCA4MTc3LCAKKyAgICA4MTgwLCA4MTgzLCA4MTg2LCA4MTg5LCA4MTkyLCA4MTk1LCA4MTk4LCA4MjAxLCA4MjA0LCA4MjA3LCA4MjEwLCA4MjEzLCAKKyAgICA4MjE2LCA4MjE5LCA4MjIyLCA4MjI1LCA4MjI4LCA4MjMxLCA4MjM0LCA4MjM3LCA4MjQwLCA4MjQzLCA4MjQ2LCA4MjQ5LCAKKyAgICA4MjUyLCA4MjU1LCA4MjU4LCA4MjYxLCA4MjY0LCA4MjY3LCA4MjcwLCA4MjczLCA4Mjc2LCA4Mjc5LCA4MjgyLCA4Mjg1LCAKKyAgICA4Mjg4LCA4MjkxLCA4Mjk0LCA4Mjk3LCA4MzAwLCA4MzAzLCA4MzA2LCA4MzA5LCA4MzEyLCA4MzE1LCA4MzE4LCA4MzIxLCAKKyAgICA4MzI1LCA4MzI5LCA4MzMzLCA4MzM3LCA4MzQxLCA4MzQ1LCA4MzQ4LCA4MzUxLCA4MzU0LCA4MzU3LCA4MzYwLCA4MzYzLCAKKyAgICA4MzY2LCA4MzY5LCA4MzcyLCA4Mzc1LCA4Mzc4LCA4MzgxLCA4Mzg0LCA4Mzg3LCA4MzkwLCA4MzkzLCA4Mzk2LCA4Mzk5LCAKKyAgICA4NDAyLCA4NDA1LCA4NDA4LCA4NDExLCA4NDE0LCA4NDE3LCA4NDIwLCA4NDIzLCA4NDI2LCA4NDI5LCA4NDMyLCA4NDM1LCAKKyAgICA4NDM4LCA4NDQxLCA4NDQ0LCA4NDQ3LCA4NDUwLCA4NDUzLCA4NDU2LCA4NDU5LCA4NDYyLCA4NDY1LCA4NDY4LCA4NDcxLCAKKyAgICA4NDc0LCA4NDc3LCA4NDgwLCA4NDgzLCA4NDg2LCA4NDg5LCA4NDkyLCA4NDk1LCA4NDk4LCA4NTAxLCA4NTA0LCA4NTA3LCAKKyAgICA4NTEwLCA4NTEzLCA4NTE2LCA4NTE5LCA4NTIyLCA4NTI1LCA4NTI4LCA4NTMxLCA4NTM0LCA4NTM3LCA4NTQwLCA4NTQzLCAKKyAgICA4NTQ2LCA4NTQ5LCA4NTUyLCA4NTU1LCA4NTU4LCA4NTYxLCA4NTY0LCA4NTY3LCA4NTcwLCA4NTczLCA4NTc2LCA4NTc5LCAKKyAgICA4NTgyLCA4NTg1LCA4NTg4LCA4NTkxLCA4NTk0LCA4NTk3LCA4NjAwLCA4NjAzLCA4NjA2LCA4NjA5LCA4NjEyLCA4NjE1LCAKKyAgICA4NjE4LCA4NjIxLCA4NjI0LCA4NjI3LCA4NjMwLCA4NjMzLCA4NjM2LCA4NjM5LCA4NjQyLCA4NjQ1LCA4NjQ4LCA4NjUxLCAKKyAgICA4NjU0LCA4NjU3LCA4NjYwLCA4NjYzLCA4NjY2LCA4NjY5LCA4NjcyLCA4Njc1LCA4Njc4LCA4NjgxLCA4Njg0LCA4Njg3LCAKKyAgICA4NjkwLCA4NjkzLCA4Njk2LCA4Njk5LCA4NzAyLCA4NzA1LCA4NzA4LCA4NzExLCA4NzE0LCA4NzE3LCA4NzIwLCA4NzIzLCAKKyAgICA4NzI2LCA4NzI5LCA4NzMyLCA4NzM1LCA4NzM4LCA4NzQxLCA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzUzLCA4NzU2LCA4NzU5LCAKKyAgICA4NzYyLCA4NzY1LCA4NzY4LCA4NzcxLCA4Nzc1LCA4Nzc5LCA4NzgzLCA4Nzg2LCA4Nzg5LCA4NzkyLCA4Nzk1LCA4Nzk4LCAKKyAgICA4ODAxLCA4ODA0LCA4ODA3LCA4ODEwLCA4ODEzLCA4ODE2LCA4ODE5LCA4ODIyLCA4ODI1LCA4ODI4LCA4ODMxLCA4ODM0LCAKKyAgICA4ODM3LCA4ODQwLCA4ODQzLCA4ODQ2LCA4ODQ5LCA4ODUyLCA4ODU1LCA4ODU4LCA4ODYxLCA4ODY0LCA4ODY3LCA4ODcwLCAKKyAgICA4ODczLCA4ODc2LCA4ODc5LCA4ODgyLCA4ODg1LCA4ODg4LCA4ODkxLCA4ODk0LCA4ODk3LCA4OTAwLCA4OTAzLCA4OTA2LCAKKyAgICA4OTA5LCA4OTEyLCA4OTE1LCA4OTE4LCA4OTIxLCA4OTI0LCA4OTI3LCA4OTMwLCA4OTMzLCA4OTM2LCA4OTM5LCA4OTQyLCAKKyAgICA4OTQ1LCA4OTQ4LCA4OTUxLCA4OTU0LCA4OTU3LCA4OTYwLCA4OTYzLCA4OTY2LCA4OTY5LCA4OTcyLCA4OTc1LCA4OTc4LCAKKyAgICA4OTgxLCA4OTg0LCA4OTg3LCA4OTkwLCA4OTkzLCA4OTk2LCA4OTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDAyLCA5MDA2LCA5MDEwLCA5MDE0LCA5MDE4LCA5MDIyLCA5MDI2LCA5MDMwLCAKICAgICA5MDM0LCA5MDM4LCA5MDQyLCA5MDQ2LCA5MDUwLCA5MDU0LCA5MDU4LCA5MDYyLCA5MDY2LCA5MDcwLCA5MDc0LCA5MDc4LCAKICAgICA5MDgyLCA5MDg2LCA5MDkwLCA5MDk0LCA5MDk4LCA5MTAyLCA5MTA2LCA5MTEwLCA5MTE0LCA5MTE4LCA5MTIyLCA5MTI2LCAKICAgICA5MTMwLCA5MTM0LCA5MTM4LCA5MTQyLCA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCAKICAgICA5MTc4LCA5MTgyLCA5MTg2LCA5MTkwLCA5MTk0LCA5MTk4LCA5MjAyLCA5MjA2LCA5MjEwLCA5MjE0LCA5MjE4LCA5MjIyLCAKLSAgICA5MjI2LCA5MjMwLCA5MjM0LCA5MjM4LCA5MjQyLCA5MjQ2LCAwLCAwLCA5MjUwLCA5MjU0LCA5MjU4LCA5MjYyLCA5MjY2LCAKKyAgICA5MjI2LCA5MjMwLCA5MjM0LCA5MjM4LCA5MjQyLCA5MjQ2LCA5MjUwLCA5MjU0LCAwLCAwLCA5MjU4LCA5MjYyLCA5MjY2LCAKICAgICA5MjcwLCA5Mjc0LCA5Mjc4LCA5MjgyLCA5Mjg2LCA5MjkwLCA5Mjk0LCA5Mjk4LCA5MzAyLCA5MzA2LCA5MzEwLCA5MzE0LCAKICAgICA5MzE4LCA5MzIyLCA5MzI2LCA5MzMwLCA5MzM0LCA5MzM4LCA5MzQyLCA5MzQ2LCA5MzUwLCA5MzU0LCA5MzU4LCA5MzYyLCAKICAgICA5MzY2LCA5MzcwLCA5Mzc0LCA5Mzc4LCA5MzgyLCA5Mzg2LCA5MzkwLCA5Mzk0LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCAKICAgICA5NDE0LCA5NDE4LCA5NDIyLCA5NDI2LCA5NDMwLCA5NDM0LCA5NDM4LCA5NDQyLCA5NDQ2LCA5NDUwLCA5NDU0LCA5NDU4LCAKLSAgICA5NDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDY2LCA5NDcwLCA5NDc0LCAKLSAgICA5NDc5LCA5NDg0LCA5NDg5LCA5NDk0LCA5NDk5LCA5NTA0LCA5NTA5LCA5NTEzLCA5NTMyLCA5NTQxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ2LCA5NTQ4LCA5NTUwLCA5NTUyLCAKLSAgICA5NTU0LCA5NTU2LCA5NTU4LCA5NTYwLCA5NTYyLCA5NTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTY2LCA5NTY4LCA5NTcwLCA5NTcyLCA5NTc0LCA5NTc2LCA5NTc4LCAKLSAgICA5NTgwLCA5NTgyLCA5NTg0LCA5NTg2LCA5NTg4LCA5NTkwLCA5NTkyLCA5NTk0LCA5NTk2LCA5NTk4LCA5NjAwLCA5NjAyLCAKLSAgICA5NjA0LCA5NjA2LCAwLCAwLCA5NjA4LCA5NjEwLCA5NjEyLCA5NjE0LCA5NjE2LCA5NjE4LCA5NjIwLCA5NjIyLCA5NjI0LCAKLSAgICA5NjI2LCA5NjI4LCA5NjMwLCAwLCA5NjMyLCA5NjM0LCA5NjM2LCA5NjM4LCA5NjQwLCA5NjQyLCA5NjQ0LCA5NjQ2LCAKLSAgICA5NjQ4LCA5NjUwLCA5NjUyLCA5NjU0LCA5NjU2LCA5NjU4LCA5NjYwLCA5NjYyLCA5NjY0LCA5NjY2LCA5NjY4LCAwLCAKLSAgICA5NjcwLCA5NjcyLCA5Njc0LCA5Njc2LCAwLCAwLCAwLCAwLCA5Njc4LCA5NjgxLCA5Njg0LCAwLCA5Njg3LCAwLCA5NjkwLCAKLSAgICA5NjkzLCA5Njk2LCA5Njk5LCA5NzAyLCA5NzA1LCA5NzA4LCA5NzExLCA5NzE0LCA5NzE3LCA5NzIwLCA5NzIyLCA5NzI0LCAKLSAgICA5NzI2LCA5NzI4LCA5NzMwLCA5NzMyLCA5NzM0LCA5NzM2LCA5NzM4LCA5NzQwLCA5NzQyLCA5NzQ0LCA5NzQ2LCA5NzQ4LCAKLSAgICA5NzUwLCA5NzUyLCA5NzU0LCA5NzU2LCA5NzU4LCA5NzYwLCA5NzYyLCA5NzY0LCA5NzY2LCA5NzY4LCA5NzcwLCA5NzcyLCAKLSAgICA5Nzc0LCA5Nzc2LCA5Nzc4LCA5NzgwLCA5NzgyLCA5Nzg0LCA5Nzg2LCA5Nzg4LCA5NzkwLCA5NzkyLCA5Nzk0LCA5Nzk2LCAKLSAgICA5Nzk4LCA5ODAwLCA5ODAyLCA5ODA0LCA5ODA2LCA5ODA4LCA5ODEwLCA5ODEyLCA5ODE0LCA5ODE2LCA5ODE4LCA5ODIwLCAKLSAgICA5ODIyLCA5ODI0LCA5ODI2LCA5ODI4LCA5ODMwLCA5ODMyLCA5ODM0LCA5ODM2LCA5ODM4LCA5ODQwLCA5ODQyLCA5ODQ0LCAKLSAgICA5ODQ2LCA5ODQ4LCA5ODUwLCA5ODUyLCA5ODU0LCA5ODU2LCA5ODU4LCA5ODYwLCA5ODYyLCA5ODY0LCA5ODY2LCA5ODY4LCAKLSAgICA5ODcwLCA5ODcyLCA5ODc0LCA5ODc2LCA5ODc4LCA5ODgwLCA5ODgyLCA5ODg0LCA5ODg2LCA5ODg4LCA5ODkwLCA5ODkyLCAKLSAgICA5ODk0LCA5ODk2LCA5ODk4LCA5OTAwLCA5OTAyLCA5OTA0LCA5OTA2LCA5OTA4LCA5OTEwLCA5OTEyLCA5OTE0LCA5OTE2LCAKLSAgICA5OTE4LCA5OTIwLCA5OTIyLCA5OTI0LCA5OTI2LCA5OTI4LCA5OTMwLCA5OTMyLCA5OTM0LCA5OTM2LCA5OTM4LCA5OTQwLCAKLSAgICA5OTQyLCA5OTQ0LCA5OTQ2LCA5OTQ4LCA5OTUwLCA5OTUyLCA5OTU0LCA5OTU3LCA5OTYwLCA5OTYzLCA5OTY2LCA5OTY5LCAKLSAgICA5OTcyLCA5OTc1LCAwLCAwLCAwLCAwLCA5OTc4LCA5OTgwLCA5OTgyLCA5OTg0LCA5OTg2LCA5OTg4LCA5OTkwLCA5OTkyLCAKLSAgICA5OTk0LCA5OTk2LCA5OTk4LCAxMDAwMCwgMTAwMDIsIDEwMDA0LCAxMDAwNiwgMTAwMDgsIDEwMDEwLCAxMDAxMiwgMTAwMTQsIAotICAgIDEwMDE2LCAxMDAxOCwgMTAwMjAsIDEwMDIyLCAxMDAyNCwgMTAwMjYsIDEwMDI4LCAxMDAzMCwgMTAwMzIsIDEwMDM0LCAKLSAgICAxMDAzNiwgMTAwMzgsIDEwMDQwLCAxMDA0MiwgMTAwNDQsIDEwMDQ2LCAxMDA0OCwgMTAwNTAsIDEwMDUyLCAxMDA1NCwgCi0gICAgMTAwNTYsIDEwMDU4LCAxMDA2MCwgMTAwNjIsIDEwMDY0LCAxMDA2NiwgMTAwNjgsIDEwMDcwLCAxMDA3MiwgMTAwNzQsIAotICAgIDEwMDc2LCAxMDA3OCwgMTAwODAsIDEwMDgyLCAxMDA4NCwgMTAwODYsIDEwMDg4LCAxMDA5MCwgMTAwOTIsIDEwMDk0LCAKLSAgICAxMDA5NiwgMTAwOTgsIDEwMTAwLCAxMDEwMiwgMTAxMDQsIDEwMTA2LCAxMDEwOCwgMTAxMTAsIDEwMTEyLCAxMDExNCwgCi0gICAgMTAxMTYsIDEwMTE4LCAxMDEyMCwgMTAxMjIsIDEwMTI0LCAxMDEyNiwgMTAxMjgsIDEwMTMwLCAxMDEzMiwgMTAxMzQsIAotICAgIDEwMTM2LCAxMDEzOCwgMTAxNDAsIDEwMTQyLCAxMDE0NCwgMTAxNDYsIDEwMTQ4LCAxMDE1MCwgMTAxNTIsIDEwMTU0LCAKLSAgICAxMDE1NiwgMTAxNTgsIDEwMTYwLCAxMDE2MiwgMTAxNjQsIDEwMTY2LCAxMDE2OCwgMTAxNzAsIDEwMTcyLCAxMDE3NCwgCi0gICAgMTAxNzYsIDEwMTc4LCAxMDE4MCwgMTAxODIsIDEwMTg0LCAxMDE4NiwgMTAxODgsIDEwMTkwLCAxMDE5MiwgMTAxOTQsIAotICAgIDEwMTk2LCAxMDE5OCwgMTAyMDAsIDEwMjAyLCAxMDIwNCwgMTAyMDYsIDEwMjA4LCAxMDIxMCwgMTAyMTIsIDEwMjE0LCAKLSAgICAxMDIxNiwgMTAyMTgsIDEwMjIwLCAxMDIyMiwgMTAyMjQsIDEwMjI2LCAxMDIyOCwgMTAyMzAsIDEwMjMyLCAxMDIzNCwgCi0gICAgMTAyMzYsIDEwMjM4LCAxMDI0MCwgMTAyNDIsIDEwMjQ0LCAxMDI0NiwgMTAyNDgsIDEwMjUwLCAxMDI1MiwgMTAyNTQsIAotICAgIDEwMjU2LCAxMDI1OCwgMTAyNjAsIDEwMjYyLCAxMDI2NCwgMTAyNjYsIDEwMjY4LCAxMDI3MCwgMTAyNzIsIDEwMjc0LCAKLSAgICAxMDI3NiwgMTAyNzgsIDEwMjgwLCAxMDI4MiwgMTAyODQsIDEwMjg2LCAxMDI4OCwgMTAyOTAsIDEwMjkyLCAxMDI5NCwgCi0gICAgMTAyOTYsIDEwMjk4LCAxMDMwMCwgMTAzMDIsIDEwMzA0LCAxMDMwNiwgMTAzMDgsIDEwMzEwLCAxMDMxMiwgMTAzMTQsIAotICAgIDEwMzE2LCAxMDMxOCwgMTAzMjAsIDEwMzIyLCAxMDMyNCwgMTAzMjYsIDEwMzI4LCAxMDMzMCwgMTAzMzIsIDEwMzM0LCAKLSAgICAxMDMzNiwgMTAzMzgsIDEwMzQwLCAxMDM0MiwgMTAzNDQsIDEwMzQ2LCAxMDM0OCwgMTAzNTAsIDEwMzUyLCAxMDM1NCwgCi0gICAgMTAzNTYsIDAsIDAsIDAsIDEwMzU4LCAxMDM2MCwgMTAzNjIsIDEwMzY0LCAxMDM2NiwgMTAzNjgsIDAsIDAsIDEwMzcwLCAKLSAgICAxMDM3MiwgMTAzNzQsIDEwMzc2LCAxMDM3OCwgMTAzODAsIDAsIDAsIDEwMzgyLCAxMDM4NCwgMTAzODYsIDEwMzg4LCAKLSAgICAxMDM5MCwgMTAzOTIsIDAsIDAsIDEwMzk0LCAxMDM5NiwgMTAzOTgsIDAsIDAsIDAsIDEwNDAwLCAxMDQwMiwgMTA0MDQsIAotICAgIDEwNDA2LCAxMDQwOCwgMTA0MTAsIDEwNDEyLCAwLCAxMDQxNCwgMTA0MTYsIDEwNDE4LCAxMDQyMCwgMTA0MjIsIDEwNDI0LCAKLSAgICAxMDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQ2MiwgOTQ2NiwgOTQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ3NCwgCisgICAgOTQ3OCwgOTQ4MiwgOTQ4NywgOTQ5MiwgOTQ5NywgOTUwMiwgOTUwNywgOTUxMiwgOTUxNywgOTUyMSwgOTU0MCwgOTU0OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU1NCwgOTU1NiwgCisgICAgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NCwgOTU3NiwgOTU3OCwgOTU4MCwgOTU4MiwgCisgICAgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgOTYwNCwgOTYwNiwgCisgICAgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgMCwgMCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgOTYyNiwgOTYyOCwgCisgICAgOTYzMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgMCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgOTY0OCwgOTY1MCwgCisgICAgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgOTY3MCwgOTY3MiwgOTY3NCwgCisgICAgOTY3NiwgMCwgOTY3OCwgOTY4MCwgOTY4MiwgOTY4NCwgMCwgMCwgMCwgMCwgOTY4NiwgOTY4OSwgOTY5MiwgMCwgOTY5NSwgCisgICAgMCwgOTY5OCwgOTcwMSwgOTcwNCwgOTcwNywgOTcxMCwgOTcxMywgOTcxNiwgOTcxOSwgOTcyMiwgOTcyNSwgOTcyOCwgCisgICAgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgOTc1MCwgOTc1MiwgCisgICAgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgOTc3NCwgOTc3NiwgCisgICAgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgOTc5OCwgOTgwMCwgCisgICAgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgOTgyMiwgOTgyNCwgCisgICAgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgOTg0NiwgOTg0OCwgCisgICAgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgOTg3MCwgOTg3MiwgCisgICAgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgOTg5NCwgOTg5NiwgCisgICAgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgOTkxOCwgOTkyMCwgCisgICAgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgOTk0MiwgOTk0NCwgCisgICAgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NiwgOTk1OCwgOTk2MCwgOTk2MiwgOTk2NSwgOTk2OCwgOTk3MSwgCisgICAgOTk3NCwgOTk3NywgOTk4MCwgOTk4MywgMCwgMCwgMCwgMCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgOTk5NCwgOTk5NiwgCisgICAgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAxMDAxNiwgCisgICAgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgMTAwMzYsIAorICAgIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIDEwMDU2LCAKKyAgICAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAxMDA3NiwgCisgICAgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgMTAwOTYsIAorICAgIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIDEwMTE2LCAKKyAgICAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAxMDEzNiwgCisgICAgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgMTAxNTYsIAorICAgIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIDEwMTc2LCAKKyAgICAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAxMDE5NiwgCisgICAgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgMTAyMTYsIAorICAgIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIDEwMjM2LCAKKyAgICAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAxMDI1NiwgCisgICAgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgMTAyNzYsIAorICAgIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIDEwMjk2LCAKKyAgICAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAxMDMxNiwgCisgICAgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgMTAzMzYsIAorICAgIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIDEwMzU2LCAKKyAgICAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMCwgMCwgMCwgMTAzNjYsIDEwMzY4LCAxMDM3MCwgMTAzNzIsIDEwMzc0LCAKKyAgICAxMDM3NiwgMCwgMCwgMTAzNzgsIDEwMzgwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgMCwgMCwgMTAzOTAsIAorICAgIDEwMzkyLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAxMDQwMCwgMCwgMCwgMTA0MDIsIDEwNDA0LCAxMDQwNiwgMCwgMCwgMCwgCisgICAgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDAsIDEwNDIyLCAxMDQyNCwgMTA0MjYsIAorICAgIDEwNDI4LCAxMDQzMCwgMTA0MzIsIDEwNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDQyOCwgMCwgMTA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQzNiwgMCwgMTA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQzNywgMTA0NDAsIDEwNDQzLCAxMDQ0NiwgMTA0NDksIAotICAgIDEwNDUyLCAxMDQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTgsIDEwNDYxLCAKLSAgICAxMDQ2NCwgMTA0NjcsIDEwNDcwLCAxMDQ3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0NzYsIDEwNDc4LCAxMDQ4MCwgMTA0ODIsIDEwNDg0LCAxMDQ4NiwgMTA0ODgsIDEwNDkwLCAxMDQ5MiwgMTA0OTQsIAotICAgIDEwNDk2LCAxMDQ5OCwgMTA1MDAsIDEwNTAyLCAxMDUwNCwgMTA1MDYsIDEwNTA4LCAxMDUxMCwgMTA1MTIsIDEwNTE0LCAKLSAgICAxMDUxNiwgMTA1MTgsIDEwNTIwLCAxMDUyMiwgMTA1MjQsIDEwNTI2LCAxMDUyOCwgMTA1MzAsIDEwNTMyLCAxMDUzNCwgCi0gICAgMTA1MzYsIDEwNTM4LCAxMDU0MCwgMTA1NDIsIDEwNTQ0LCAxMDU0NiwgMTA1NDgsIDEwNTUwLCAxMDU1MiwgMTA1NTQsIAotICAgIDEwNTU2LCAxMDU1OCwgMTA1NjAsIDEwNTYyLCAxMDU2NCwgMTA1NjYsIDEwNTY4LCAxMDU3MCwgMTA1NzIsIDEwNTc0LCAKLSAgICAxMDU3NiwgMTA1NzgsIDEwNTgwLCAxMDU4MiwgMTA1ODQsIDEwNTg2LCAxMDU4OCwgMTA1OTAsIDEwNTkyLCAxMDU5NCwgCi0gICAgMTA1OTYsIDEwNTk4LCAxMDYwMCwgMTA2MDIsIDEwNjA0LCAxMDYwNiwgMTA2MDgsIDEwNjEwLCAxMDYxMiwgMTA2MTQsIAotICAgIDEwNjE2LCAxMDYxOCwgMTA2MjAsIDEwNjIyLCAxMDYyNCwgMTA2MjYsIDEwNjI4LCAxMDYzMCwgMTA2MzIsIDEwNjM0LCAKLSAgICAxMDYzNiwgMTA2MzgsIDEwNjQwLCAxMDY0MiwgMTA2NDQsIDAsIDEwNjQ2LCAxMDY0OCwgMTA2NTAsIDEwNjUyLCAxMDY1NCwgCi0gICAgMTA2NTYsIDEwNjU4LCAxMDY2MCwgMTA2NjIsIDEwNjY0LCAxMDY2NiwgMTA2NjgsIDEwNjcwLCAxMDY3MiwgMTA2NzQsIAotICAgIDEwNjc2LCAxMDY3OCwgMTA2ODAsIDEwNjgyLCAxMDY4NCwgMTA2ODYsIDEwNjg4LCAxMDY5MCwgMTA2OTIsIDEwNjk0LCAKLSAgICAxMDY5NiwgMTA2OTgsIDEwNzAwLCAxMDcwMiwgMTA3MDQsIDEwNzA2LCAxMDcwOCwgMTA3MTAsIDEwNzEyLCAxMDcxNCwgCi0gICAgMTA3MTYsIDEwNzE4LCAxMDcyMCwgMTA3MjIsIDEwNzI0LCAxMDcyNiwgMTA3MjgsIDEwNzMwLCAxMDczMiwgMTA3MzQsIAotICAgIDEwNzM2LCAxMDczOCwgMTA3NDAsIDEwNzQyLCAxMDc0NCwgMTA3NDYsIDEwNzQ4LCAxMDc1MCwgMTA3NTIsIDEwNzU0LCAKLSAgICAxMDc1NiwgMTA3NTgsIDEwNzYwLCAxMDc2MiwgMTA3NjQsIDEwNzY2LCAxMDc2OCwgMTA3NzAsIDEwNzcyLCAxMDc3NCwgCi0gICAgMTA3NzYsIDEwNzc4LCAxMDc4MCwgMTA3ODIsIDEwNzg0LCAxMDc4NiwgMCwgMTA3ODgsIDEwNzkwLCAwLCAwLCAxMDc5MiwgCi0gICAgMCwgMCwgMTA3OTQsIDEwNzk2LCAwLCAwLCAxMDc5OCwgMTA4MDAsIDEwODAyLCAxMDgwNCwgMCwgMTA4MDYsIDEwODA4LCAKLSAgICAxMDgxMCwgMTA4MTIsIDEwODE0LCAxMDgxNiwgMTA4MTgsIDEwODIwLCAxMDgyMiwgMTA4MjQsIDEwODI2LCAxMDgyOCwgMCwgCi0gICAgMTA4MzAsIDAsIDEwODMyLCAxMDgzNCwgMTA4MzYsIDEwODM4LCAxMDg0MCwgMTA4NDIsIDEwODQ0LCAwLCAxMDg0NiwgCi0gICAgMTA4NDgsIDEwODUwLCAxMDg1MiwgMTA4NTQsIDEwODU2LCAxMDg1OCwgMTA4NjAsIDEwODYyLCAxMDg2NCwgMTA4NjYsIAotICAgIDEwODY4LCAxMDg3MCwgMTA4NzIsIDEwODc0LCAxMDg3NiwgMTA4NzgsIDEwODgwLCAxMDg4MiwgMTA4ODQsIDEwODg2LCAKLSAgICAxMDg4OCwgMTA4OTAsIDEwODkyLCAxMDg5NCwgMTA4OTYsIDEwODk4LCAxMDkwMCwgMTA5MDIsIDEwOTA0LCAxMDkwNiwgCi0gICAgMTA5MDgsIDEwOTEwLCAxMDkxMiwgMTA5MTQsIDEwOTE2LCAxMDkxOCwgMTA5MjAsIDEwOTIyLCAxMDkyNCwgMTA5MjYsIAotICAgIDEwOTI4LCAxMDkzMCwgMTA5MzIsIDEwOTM0LCAxMDkzNiwgMTA5MzgsIDEwOTQwLCAxMDk0MiwgMTA5NDQsIDEwOTQ2LCAKLSAgICAxMDk0OCwgMTA5NTAsIDEwOTUyLCAxMDk1NCwgMTA5NTYsIDEwOTU4LCAxMDk2MCwgMTA5NjIsIDEwOTY0LCAxMDk2NiwgCi0gICAgMTA5NjgsIDEwOTcwLCAxMDk3MiwgMTA5NzQsIDAsIDEwOTc2LCAxMDk3OCwgMTA5ODAsIDEwOTgyLCAwLCAwLCAxMDk4NCwgCi0gICAgMTA5ODYsIDEwOTg4LCAxMDk5MCwgMTA5OTIsIDEwOTk0LCAxMDk5NiwgMTA5OTgsIDAsIDExMDAwLCAxMTAwMiwgMTEwMDQsIAotICAgIDExMDA2LCAxMTAwOCwgMTEwMTAsIDExMDEyLCAwLCAxMTAxNCwgMTEwMTYsIDExMDE4LCAxMTAyMCwgMTEwMjIsIDExMDI0LCAKLSAgICAxMTAyNiwgMTEwMjgsIDExMDMwLCAxMTAzMiwgMTEwMzQsIDExMDM2LCAxMTAzOCwgMTEwNDAsIDExMDQyLCAxMTA0NCwgCi0gICAgMTEwNDYsIDExMDQ4LCAxMTA1MCwgMTEwNTIsIDExMDU0LCAxMTA1NiwgMTEwNTgsIDExMDYwLCAxMTA2MiwgMTEwNjQsIAotICAgIDExMDY2LCAxMTA2OCwgMCwgMTEwNzAsIDExMDcyLCAxMTA3NCwgMTEwNzYsIDAsIDExMDc4LCAxMTA4MCwgMTEwODIsIAotICAgIDExMDg0LCAxMTA4NiwgMCwgMTEwODgsIDAsIDAsIDAsIDExMDkwLCAxMTA5MiwgMTEwOTQsIDExMDk2LCAxMTA5OCwgCi0gICAgMTExMDAsIDExMTAyLCAwLCAxMTEwNCwgMTExMDYsIDExMTA4LCAxMTExMCwgMTExMTIsIDExMTE0LCAxMTExNiwgMTExMTgsIAotICAgIDExMTIwLCAxMTEyMiwgMTExMjQsIDExMTI2LCAxMTEyOCwgMTExMzAsIDExMTMyLCAxMTEzNCwgMTExMzYsIDExMTM4LCAKLSAgICAxMTE0MCwgMTExNDIsIDExMTQ0LCAxMTE0NiwgMTExNDgsIDExMTUwLCAxMTE1MiwgMTExNTQsIDExMTU2LCAxMTE1OCwgCi0gICAgMTExNjAsIDExMTYyLCAxMTE2NCwgMTExNjYsIDExMTY4LCAxMTE3MCwgMTExNzIsIDExMTc0LCAxMTE3NiwgMTExNzgsIAotICAgIDExMTgwLCAxMTE4MiwgMTExODQsIDExMTg2LCAxMTE4OCwgMTExOTAsIDExMTkyLCAxMTE5NCwgMTExOTYsIDExMTk4LCAKLSAgICAxMTIwMCwgMTEyMDIsIDExMjA0LCAxMTIwNiwgMTEyMDgsIDExMjEwLCAxMTIxMiwgMTEyMTQsIDExMjE2LCAxMTIxOCwgCi0gICAgMTEyMjAsIDExMjIyLCAxMTIyNCwgMTEyMjYsIDExMjI4LCAxMTIzMCwgMTEyMzIsIDExMjM0LCAxMTIzNiwgMTEyMzgsIAotICAgIDExMjQwLCAxMTI0MiwgMTEyNDQsIDExMjQ2LCAxMTI0OCwgMTEyNTAsIDExMjUyLCAxMTI1NCwgMTEyNTYsIDExMjU4LCAKLSAgICAxMTI2MCwgMTEyNjIsIDExMjY0LCAxMTI2NiwgMTEyNjgsIDExMjcwLCAxMTI3MiwgMTEyNzQsIDExMjc2LCAxMTI3OCwgCi0gICAgMTEyODAsIDExMjgyLCAxMTI4NCwgMTEyODYsIDExMjg4LCAxMTI5MCwgMTEyOTIsIDExMjk0LCAxMTI5NiwgMTEyOTgsIAotICAgIDExMzAwLCAxMTMwMiwgMTEzMDQsIDExMzA2LCAxMTMwOCwgMTEzMTAsIDExMzEyLCAxMTMxNCwgMTEzMTYsIDExMzE4LCAKLSAgICAxMTMyMCwgMTEzMjIsIDExMzI0LCAxMTMyNiwgMTEzMjgsIDExMzMwLCAxMTMzMiwgMTEzMzQsIDExMzM2LCAxMTMzOCwgCi0gICAgMTEzNDAsIDExMzQyLCAxMTM0NCwgMTEzNDYsIDExMzQ4LCAxMTM1MCwgMTEzNTIsIDExMzU0LCAxMTM1NiwgMTEzNTgsIAotICAgIDExMzYwLCAxMTM2MiwgMTEzNjQsIDExMzY2LCAxMTM2OCwgMTEzNzAsIDExMzcyLCAxMTM3NCwgMTEzNzYsIDExMzc4LCAKLSAgICAxMTM4MCwgMTEzODIsIDExMzg0LCAxMTM4NiwgMTEzODgsIDExMzkwLCAxMTM5MiwgMTEzOTQsIDExMzk2LCAxMTM5OCwgCi0gICAgMTE0MDAsIDExNDAyLCAxMTQwNCwgMTE0MDYsIDExNDA4LCAxMTQxMCwgMTE0MTIsIDExNDE0LCAxMTQxNiwgMTE0MTgsIAotICAgIDExNDIwLCAxMTQyMiwgMTE0MjQsIDExNDI2LCAxMTQyOCwgMTE0MzAsIDExNDMyLCAxMTQzNCwgMTE0MzYsIDExNDM4LCAKLSAgICAxMTQ0MCwgMTE0NDIsIDExNDQ0LCAxMTQ0NiwgMTE0NDgsIDExNDUwLCAxMTQ1MiwgMTE0NTQsIDExNDU2LCAxMTQ1OCwgCi0gICAgMTE0NjAsIDExNDYyLCAxMTQ2NCwgMTE0NjYsIDExNDY4LCAxMTQ3MCwgMTE0NzIsIDExNDc0LCAxMTQ3NiwgMTE0NzgsIAotICAgIDExNDgwLCAxMTQ4MiwgMTE0ODQsIDExNDg2LCAxMTQ4OCwgMTE0OTAsIDExNDkyLCAxMTQ5NCwgMTE0OTYsIDExNDk4LCAKLSAgICAxMTUwMCwgMTE1MDIsIDExNTA0LCAxMTUwNiwgMTE1MDgsIDExNTEwLCAxMTUxMiwgMTE1MTQsIDExNTE2LCAxMTUxOCwgCi0gICAgMTE1MjAsIDExNTIyLCAxMTUyNCwgMTE1MjYsIDExNTI4LCAxMTUzMCwgMTE1MzIsIDExNTM0LCAxMTUzNiwgMTE1MzgsIAotICAgIDExNTQwLCAxMTU0MiwgMTE1NDQsIDExNTQ2LCAxMTU0OCwgMTE1NTAsIDExNTUyLCAxMTU1NCwgMTE1NTYsIDExNTU4LCAKLSAgICAxMTU2MCwgMTE1NjIsIDExNTY0LCAxMTU2NiwgMTE1NjgsIDExNTcwLCAxMTU3MiwgMTE1NzQsIDExNTc2LCAxMTU3OCwgCi0gICAgMTE1ODAsIDExNTgyLCAxMTU4NCwgMTE1ODYsIDExNTg4LCAxMTU5MCwgMTE1OTIsIDExNTk0LCAxMTU5NiwgMTE1OTgsIAotICAgIDExNjAwLCAxMTYwMiwgMTE2MDQsIDExNjA2LCAxMTYwOCwgMTE2MTAsIDExNjEyLCAxMTYxNCwgMTE2MTYsIDExNjE4LCAKLSAgICAxMTYyMCwgMTE2MjIsIDExNjI0LCAxMTYyNiwgMTE2MjgsIDExNjMwLCAxMTYzMiwgMTE2MzQsIDExNjM2LCAxMTYzOCwgCi0gICAgMTE2NDAsIDExNjQyLCAxMTY0NCwgMTE2NDYsIDExNjQ4LCAxMTY1MCwgMTE2NTIsIDExNjU0LCAxMTY1NiwgMTE2NTgsIAotICAgIDExNjYwLCAxMTY2MiwgMTE2NjQsIDExNjY2LCAxMTY2OCwgMTE2NzAsIDExNjcyLCAxMTY3NCwgMTE2NzYsIDExNjc4LCAKLSAgICAxMTY4MCwgMTE2ODIsIDExNjg0LCAxMTY4NiwgMTE2ODgsIDExNjkwLCAxMTY5MiwgMTE2OTQsIDExNjk2LCAxMTY5OCwgCi0gICAgMTE3MDAsIDExNzAyLCAxMTcwNCwgMTE3MDYsIDExNzA4LCAxMTcxMCwgMTE3MTIsIDExNzE0LCAxMTcxNiwgMTE3MTgsIAotICAgIDExNzIwLCAxMTcyMiwgMTE3MjQsIDExNzI2LCAxMTcyOCwgMTE3MzAsIDExNzMyLCAxMTczNCwgMTE3MzYsIDExNzM4LCAKLSAgICAxMTc0MCwgMTE3NDIsIDExNzQ0LCAxMTc0NiwgMTE3NDgsIDExNzUwLCAxMTc1MiwgMTE3NTQsIDExNzU2LCAxMTc1OCwgCi0gICAgMTE3NjAsIDExNzYyLCAxMTc2NCwgMTE3NjYsIDExNzY4LCAxMTc3MCwgMTE3NzIsIDExNzc0LCAxMTc3NiwgMTE3NzgsIAotICAgIDExNzgwLCAxMTc4MiwgMCwgMCwgMTE3ODQsIDExNzg2LCAxMTc4OCwgMTE3OTAsIDExNzkyLCAxMTc5NCwgMTE3OTYsIAotICAgIDExNzk4LCAxMTgwMCwgMTE4MDIsIDExODA0LCAxMTgwNiwgMTE4MDgsIDExODEwLCAxMTgxMiwgMTE4MTQsIDExODE2LCAKLSAgICAxMTgxOCwgMTE4MjAsIDExODIyLCAxMTgyNCwgMTE4MjYsIDExODI4LCAxMTgzMCwgMTE4MzIsIDExODM0LCAxMTgzNiwgCi0gICAgMTE4MzgsIDExODQwLCAxMTg0MiwgMTE4NDQsIDExODQ2LCAxMTg0OCwgMTE4NTAsIDExODUyLCAxMTg1NCwgMTE4NTYsIAotICAgIDExODU4LCAxMTg2MCwgMTE4NjIsIDExODY0LCAxMTg2NiwgMTE4NjgsIDExODcwLCAxMTg3MiwgMTE4NzQsIDExODc2LCAKLSAgICAxMTg3OCwgMTE4ODAsIDExODgyLCAxMTg4NCwgMTE4ODYsIDExODg4LCAxMTg5MCwgMTE4OTIsIDExODk0LCAxMTg5NiwgCi0gICAgMTE4OTgsIDExOTAwLCAxMTkwMiwgMTE5MDQsIDExOTA2LCAxMTkwOCwgMTE5MTAsIDExOTEyLCAxMTkxNCwgMTE5MTYsIAotICAgIDExOTE4LCAxMTkyMCwgMTE5MjIsIDExOTI0LCAxMTkyNiwgMTE5MjgsIDExOTMwLCAxMTkzMiwgMTE5MzQsIDExOTM2LCAKLSAgICAxMTkzOCwgMTE5NDAsIDExOTQyLCAxMTk0NCwgMTE5NDYsIDExOTQ4LCAxMTk1MCwgMTE5NTIsIDExOTU0LCAxMTk1NiwgCi0gICAgMTE5NTgsIDExOTYwLCAxMTk2MiwgMTE5NjQsIDExOTY2LCAxMTk2OCwgMTE5NzAsIDExOTcyLCAxMTk3NCwgMTE5NzYsIAotICAgIDExOTc4LCAxMTk4MCwgMTE5ODIsIDExOTg0LCAxMTk4NiwgMTE5ODgsIDExOTkwLCAxMTk5MiwgMTE5OTQsIDExOTk2LCAKLSAgICAxMTk5OCwgMTIwMDAsIDEyMDAyLCAxMjAwNCwgMTIwMDYsIDEyMDA4LCAxMjAxMCwgMTIwMTIsIDEyMDE0LCAxMjAxNiwgCi0gICAgMTIwMTgsIDEyMDIwLCAxMjAyMiwgMTIwMjQsIDEyMDI2LCAxMjAyOCwgMTIwMzAsIDEyMDMyLCAxMjAzNCwgMTIwMzYsIAotICAgIDEyMDM4LCAxMjA0MCwgMTIwNDIsIDEyMDQ0LCAxMjA0NiwgMTIwNDgsIDEyMDUwLCAxMjA1MiwgMTIwNTQsIDEyMDU2LCAKLSAgICAxMjA1OCwgMTIwNjAsIDEyMDYyLCAxMjA2NCwgMTIwNjYsIDEyMDY4LCAxMjA3MCwgMTIwNzIsIDEyMDc0LCAxMjA3NiwgCi0gICAgMTIwNzgsIDEyMDgwLCAxMjA4MiwgMTIwODQsIDEyMDg2LCAxMjA4OCwgMTIwOTAsIDEyMDkyLCAxMjA5NCwgMTIwOTYsIAotICAgIDEyMDk4LCAxMjEwMCwgMTIxMDIsIDEyMTA0LCAxMjEwNiwgMTIxMDgsIDEyMTEwLCAxMjExMiwgMTIxMTQsIDEyMTE2LCAKLSAgICAxMjExOCwgMTIxMjAsIDEyMTIyLCAxMjEyNCwgMTIxMjYsIDEyMTI4LCAxMjEzMCwgMTIxMzIsIDEyMTM0LCAxMjEzNiwgCi0gICAgMTIxMzgsIDEyMTQwLCAxMjE0MiwgMTIxNDQsIDEyMTQ2LCAxMjE0OCwgMTIxNTAsIDEyMTUyLCAxMjE1NCwgMTIxNTYsIAotICAgIDEyMTU4LCAxMjE2MCwgMTIxNjIsIDEyMTY0LCAxMjE2NiwgMTIxNjgsIDEyMTcwLCAxMjE3MiwgMTIxNzQsIDEyMTc2LCAKLSAgICAxMjE3OCwgMTIxODAsIDEyMTgyLCAxMjE4NCwgMTIxODYsIDEyMTg4LCAxMjE5MCwgMTIxOTIsIDEyMTk0LCAxMjE5NiwgCi0gICAgMTIxOTgsIDEyMjAwLCAxMjIwMiwgMTIyMDQsIDEyMjA2LCAxMjIwOCwgMTIyMTAsIDEyMjEyLCAxMjIxNCwgMTIyMTYsIAotICAgIDEyMjE4LCAxMjIyMCwgMTIyMjIsIDEyMjI0LCAxMjIyNiwgMTIyMjgsIDEyMjMwLCAxMjIzMiwgMTIyMzQsIDEyMjM2LCAKLSAgICAxMjIzOCwgMTIyNDAsIDEyMjQyLCAxMjI0NCwgMTIyNDYsIDEyMjQ4LCAxMjI1MCwgMTIyNTIsIDEyMjU0LCAxMjI1NiwgCi0gICAgMTIyNTgsIDEyMjYwLCAxMjI2MiwgMTIyNjQsIDEyMjY2LCAxMjI2OCwgMTIyNzAsIDEyMjcyLCAxMjI3NCwgMTIyNzYsIAotICAgIDEyMjc4LCAxMjI4MCwgMTIyODIsIDEyMjg0LCAxMjI4NiwgMTIyODgsIDEyMjkwLCAxMjI5MiwgMTIyOTQsIDEyMjk2LCAKLSAgICAxMjI5OCwgMTIzMDAsIDEyMzAyLCAxMjMwNCwgMTIzMDYsIDEyMzA4LCAxMjMxMCwgMTIzMTIsIDEyMzE0LCAxMjMxNiwgCi0gICAgMTIzMTgsIDEyMzIwLCAxMjMyMiwgMTIzMjQsIDEyMzI2LCAxMjMyOCwgMTIzMzAsIDEyMzMyLCAxMjMzNCwgMTIzMzYsIAotICAgIDEyMzM4LCAxMjM0MCwgMTIzNDIsIDEyMzQ0LCAxMjM0NiwgMTIzNDgsIDEyMzUwLCAxMjM1MiwgMTIzNTQsIDEyMzU2LCAKLSAgICAxMjM1OCwgMTIzNjAsIDEyMzYyLCAxMjM2NCwgMTIzNjYsIDAsIDAsIDEyMzY4LCAxMjM3MCwgMTIzNzIsIDEyMzc0LCAKLSAgICAxMjM3NiwgMTIzNzgsIDEyMzgwLCAxMjM4MiwgMTIzODQsIDEyMzg2LCAxMjM4OCwgMTIzOTAsIDEyMzkyLCAxMjM5NCwgCi0gICAgMTIzOTYsIDEyMzk4LCAxMjQwMCwgMTI0MDIsIDEyNDA0LCAxMjQwNiwgMTI0MDgsIDEyNDEwLCAxMjQxMiwgMTI0MTQsIAotICAgIDEyNDE2LCAxMjQxOCwgMTI0MjAsIDEyNDIyLCAxMjQyNCwgMTI0MjYsIDEyNDI4LCAxMjQzMCwgMTI0MzIsIDEyNDM0LCAKLSAgICAxMjQzNiwgMTI0MzgsIDEyNDQwLCAxMjQ0MiwgMTI0NDQsIDEyNDQ2LCAxMjQ0OCwgMTI0NTAsIDEyNDUyLCAxMjQ1NCwgCi0gICAgMTI0NTYsIDEyNDU4LCAxMjQ2MCwgMTI0NjIsIDEyNDY0LCAxMjQ2NiwgMTI0NjgsIDEyNDcxLCAxMjQ3NCwgMTI0NzcsIAotICAgIDEyNDgwLCAxMjQ4MywgMTI0ODYsIDEyNDg5LCAxMjQ5MiwgMTI0OTUsIDEyNDk4LCAwLCAwLCAwLCAwLCAwLCAxMjUwMSwgCi0gICAgMTI1MDUsIDEyNTA5LCAxMjUxMywgMTI1MTcsIDEyNTIxLCAxMjUyNSwgMTI1MjksIDEyNTMzLCAxMjUzNywgMTI1NDEsIAotICAgIDEyNTQ1LCAxMjU0OSwgMTI1NTMsIDEyNTU3LCAxMjU2MSwgMTI1NjUsIDEyNTY5LCAxMjU3MywgMTI1NzcsIDEyNTgxLCAKLSAgICAxMjU4NSwgMTI1ODksIDEyNTkzLCAxMjU5NywgMTI2MDEsIDEyNjA1LCAxMjYwOSwgMTI2MTEsIDEyNjEzLCAxMjYxNiwgMCwgCi0gICAgMTI2MTksIDEyNjIxLCAxMjYyMywgMTI2MjUsIDEyNjI3LCAxMjYyOSwgMTI2MzEsIDEyNjMzLCAxMjYzNSwgMTI2MzcsIAotICAgIDEyNjM5LCAxMjY0MSwgMTI2NDMsIDEyNjQ1LCAxMjY0NywgMTI2NDksIDEyNjUxLCAxMjY1MywgMTI2NTUsIDEyNjU3LCAKLSAgICAxMjY1OSwgMTI2NjEsIDEyNjYzLCAxMjY2NSwgMTI2NjcsIDEyNjY5LCAxMjY3MSwgMTI2NzQsIDEyNjc3LCAxMjY4MCwgCi0gICAgMTI2ODMsIDEyNjg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY5MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2OTMsIDEyNjk2LCAxMjY5OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MDEsIDEyNzAzLCAxMjcwNSwgMTI3MDcsIDEyNzA5LCAxMjcxMSwgCi0gICAgMTI3MTMsIDEyNzE1LCAxMjcxNywgMTI3MTksIDEyNzIxLCAxMjcyMywgMTI3MjUsIDEyNzI3LCAxMjcyOSwgMTI3MzEsIAotICAgIDEyNzMzLCAxMjczNSwgMTI3MzcsIDEyNzM5LCAxMjc0MSwgMTI3NDMsIDEyNzQ1LCAxMjc0NywgMTI3NDksIDEyNzUxLCAKLSAgICAxMjc1MywgMTI3NTUsIDEyNzU3LCAxMjc1OSwgMTI3NjEsIDEyNzYzLCAxMjc2NSwgMTI3NjcsIDEyNzY5LCAxMjc3MSwgCi0gICAgMTI3NzMsIDEyNzc1LCAxMjc3NywgMTI3NzksIDEyNzgxLCAxMjc4MywgMTI3ODUsIDAsIDAsIDAsIDAsIDAsIDEyNzg3LCAKLSAgICAxMjc5MSwgMTI3OTUsIDEyNzk5LCAxMjgwMywgMTI4MDcsIDEyODExLCAxMjgxNSwgMTI4MTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyODIzLCAxMjgyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MjcsIDEyODI5LCAxMjgzMSwgMTI4MzMsIDEyODM1LCAKLSAgICAxMjgzNywgMTI4MzksIDEyODQxLCAxMjg0MywgMTI4NDUsIDEyODQ3LCAxMjg0OSwgMTI4NTEsIDEyODUzLCAxMjg1NSwgCi0gICAgMTI4NTcsIDEyODU5LCAxMjg2MSwgMTI4NjMsIDEyODY1LCAxMjg2NywgMTI4NjksIDEyODcxLCAxMjg3MywgMTI4NzUsIAotICAgIDEyODc3LCAxMjg3OSwgMTI4ODEsIDEyODgzLCAxMjg4NSwgMTI4ODcsIDEyODg5LCAxMjg5MSwgMTI4OTMsIDEyODk1LCAKLSAgICAxMjg5NywgMTI4OTksIDEyOTAxLCAxMjkwMywgMTI5MDUsIDEyOTA3LCAxMjkwOSwgMTI5MTEsIDEyOTEzLCAxMjkxNSwgCi0gICAgMTI5MTcsIDEyOTE5LCAxMjkyMSwgMTI5MjMsIDEyOTI1LCAxMjkyNywgMTI5MjksIDEyOTMxLCAxMjkzMywgMTI5MzUsIAotICAgIDEyOTM3LCAxMjkzOSwgMTI5NDEsIDEyOTQzLCAxMjk0NSwgMTI5NDcsIDEyOTQ5LCAxMjk1MSwgMTI5NTMsIDEyOTU1LCAKLSAgICAxMjk1NywgMTI5NTksIDEyOTYxLCAxMjk2MywgMTI5NjUsIDEyOTY3LCAxMjk2OSwgMTI5NzEsIDEyOTczLCAxMjk3NSwgCi0gICAgMTI5NzcsIDEyOTc5LCAxMjk4MSwgMTI5ODMsIDEyOTg1LCAxMjk4NywgMTI5ODksIDEyOTkxLCAxMjk5MywgMTI5OTUsIAotICAgIDEyOTk3LCAxMjk5OSwgMTMwMDEsIDEzMDAzLCAxMzAwNSwgMTMwMDcsIDEzMDA5LCAxMzAxMSwgMTMwMTMsIDEzMDE1LCAKLSAgICAxMzAxNywgMTMwMTksIDEzMDIxLCAxMzAyMywgMTMwMjUsIDEzMDI3LCAxMzAyOSwgMTMwMzEsIDEzMDMzLCAxMzAzNSwgCi0gICAgMTMwMzcsIDEzMDM5LCAxMzA0MSwgMTMwNDMsIDEzMDQ1LCAxMzA0NywgMTMwNDksIDEzMDUxLCAxMzA1MywgMTMwNTUsIAotICAgIDEzMDU3LCAxMzA1OSwgMTMwNjEsIDEzMDYzLCAxMzA2NSwgMTMwNjcsIDEzMDY5LCAxMzA3MSwgMTMwNzMsIDEzMDc1LCAKLSAgICAxMzA3NywgMTMwNzksIDEzMDgxLCAxMzA4MywgMTMwODUsIDEzMDg3LCAxMzA4OSwgMTMwOTEsIDEzMDkzLCAxMzA5NSwgCi0gICAgMTMwOTcsIDEzMDk5LCAxMzEwMSwgMTMxMDMsIDEzMTA1LCAxMzEwNywgMTMxMDksIDEzMTExLCAxMzExMywgMTMxMTUsIAotICAgIDEzMTE3LCAxMzExOSwgMTMxMjEsIDEzMTIzLCAxMzEyNSwgMTMxMjcsIDEzMTI5LCAxMzEzMSwgMTMxMzMsIDEzMTM1LCAKLSAgICAxMzEzNywgMTMxMzksIDEzMTQxLCAxMzE0MywgMTMxNDUsIDEzMTQ3LCAxMzE0OSwgMTMxNTEsIDEzMTUzLCAxMzE1NSwgCi0gICAgMTMxNTcsIDEzMTU5LCAxMzE2MSwgMTMxNjMsIDEzMTY1LCAxMzE2NywgMTMxNjksIDEzMTcxLCAxMzE3MywgMTMxNzUsIAotICAgIDEzMTc3LCAxMzE3OSwgMTMxODEsIDEzMTgzLCAxMzE4NSwgMTMxODcsIDEzMTg5LCAxMzE5MSwgMTMxOTMsIDEzMTk1LCAKLSAgICAxMzE5NywgMTMxOTksIDEzMjAxLCAxMzIwMywgMTMyMDUsIDEzMjA3LCAxMzIwOSwgMTMyMTEsIDEzMjEzLCAxMzIxNSwgCi0gICAgMTMyMTcsIDEzMjE5LCAxMzIyMSwgMTMyMjMsIDEzMjI1LCAxMzIyNywgMTMyMjksIDEzMjMxLCAxMzIzMywgMTMyMzUsIAotICAgIDEzMjM3LCAxMzIzOSwgMTMyNDEsIDEzMjQzLCAxMzI0NSwgMTMyNDcsIDEzMjQ5LCAxMzI1MSwgMTMyNTMsIDEzMjU1LCAKLSAgICAxMzI1NywgMTMyNTksIDEzMjYxLCAxMzI2MywgMTMyNjUsIDEzMjY3LCAxMzI2OSwgMTMyNzEsIDEzMjczLCAxMzI3NSwgCi0gICAgMTMyNzcsIDEzMjc5LCAxMzI4MSwgMTMyODMsIDEzMjg1LCAxMzI4NywgMTMyODksIDEzMjkxLCAxMzI5MywgMTMyOTUsIAotICAgIDEzMjk3LCAxMzI5OSwgMTMzMDEsIDEzMzAzLCAxMzMwNSwgMTMzMDcsIDEzMzA5LCAxMzMxMSwgMTMzMTMsIDEzMzE1LCAKLSAgICAxMzMxNywgMTMzMTksIDEzMzIxLCAxMzMyMywgMTMzMjUsIDEzMzI3LCAxMzMyOSwgMTMzMzEsIDEzMzMzLCAxMzMzNSwgCi0gICAgMTMzMzcsIDEzMzM5LCAxMzM0MSwgMTMzNDMsIDEzMzQ1LCAxMzM0NywgMTMzNDksIDEzMzUxLCAxMzM1MywgMTMzNTUsIAotICAgIDEzMzU3LCAxMzM1OSwgMTMzNjEsIDEzMzYzLCAxMzM2NSwgMTMzNjcsIDEzMzY5LCAxMzM3MSwgMTMzNzMsIDEzMzc1LCAKLSAgICAxMzM3NywgMTMzNzksIDEzMzgxLCAxMzM4MywgMTMzODUsIDEzMzg3LCAxMzM4OSwgMTMzOTEsIDEzMzkzLCAxMzM5NSwgCi0gICAgMTMzOTcsIDEzMzk5LCAxMzQwMSwgMTM0MDMsIDEzNDA1LCAxMzQwNywgMTM0MDksIDEzNDExLCAxMzQxMywgMTM0MTUsIAotICAgIDEzNDE3LCAxMzQxOSwgMTM0MjEsIDEzNDIzLCAxMzQyNSwgMTM0MjcsIDEzNDI5LCAxMzQzMSwgMTM0MzMsIDEzNDM1LCAKLSAgICAxMzQzNywgMTM0MzksIDEzNDQxLCAxMzQ0MywgMTM0NDUsIDEzNDQ3LCAxMzQ0OSwgMTM0NTEsIDEzNDUzLCAxMzQ1NSwgCi0gICAgMTM0NTcsIDEzNDU5LCAxMzQ2MSwgMTM0NjMsIDEzNDY1LCAxMzQ2NywgMTM0NjksIDEzNDcxLCAxMzQ3MywgMTM0NzUsIAotICAgIDEzNDc3LCAxMzQ3OSwgMTM0ODEsIDEzNDgzLCAxMzQ4NSwgMTM0ODcsIDEzNDg5LCAxMzQ5MSwgMTM0OTMsIDEzNDk1LCAKLSAgICAxMzQ5NywgMTM0OTksIDEzNTAxLCAxMzUwMywgMTM1MDUsIDEzNTA3LCAxMzUwOSwgMTM1MTEsIDEzNTEzLCAxMzUxNSwgCi0gICAgMTM1MTcsIDEzNTE5LCAxMzUyMSwgMTM1MjMsIDEzNTI1LCAxMzUyNywgMTM1MjksIDEzNTMxLCAxMzUzMywgMTM1MzUsIAotICAgIDEzNTM3LCAxMzUzOSwgMTM1NDEsIDEzNTQzLCAxMzU0NSwgMTM1NDcsIDEzNTQ5LCAxMzU1MSwgMTM1NTMsIDEzNTU1LCAKLSAgICAxMzU1NywgMTM1NTksIDEzNTYxLCAxMzU2MywgMTM1NjUsIDEzNTY3LCAxMzU2OSwgMTM1NzEsIDEzNTczLCAxMzU3NSwgCi0gICAgMTM1NzcsIDEzNTc5LCAxMzU4MSwgMTM1ODMsIDEzNTg1LCAxMzU4NywgMTM1ODksIDEzNTkxLCAxMzU5MywgMTM1OTUsIAotICAgIDEzNTk3LCAxMzU5OSwgMTM2MDEsIDEzNjAzLCAxMzYwNSwgMTM2MDcsIDEzNjA5LCAxMzYxMSwgMTM2MTMsIDEzNjE1LCAKLSAgICAxMzYxNywgMTM2MTksIDEzNjIxLCAxMzYyMywgMTM2MjUsIDEzNjI3LCAxMzYyOSwgMTM2MzEsIDEzNjMzLCAxMzYzNSwgCi0gICAgMTM2MzcsIDEzNjM5LCAxMzY0MSwgMTM2NDMsIDEzNjQ1LCAxMzY0NywgMTM2NDksIDEzNjUxLCAxMzY1MywgMTM2NTUsIAotICAgIDEzNjU3LCAxMzY1OSwgMTM2NjEsIDEzNjYzLCAxMzY2NSwgMTM2NjcsIDEzNjY5LCAxMzY3MSwgMTM2NzMsIDEzNjc1LCAKLSAgICAxMzY3NywgMTM2NzksIDEzNjgxLCAxMzY4MywgMTM2ODUsIDEzNjg3LCAxMzY4OSwgMTM2OTEsIDEzNjkzLCAxMzY5NSwgCi0gICAgMTM2OTcsIDEzNjk5LCAxMzcwMSwgMTM3MDMsIDEzNzA1LCAxMzcwNywgMTM3MDksIDEzNzExLCAxMzcxMywgMTM3MTUsIAotICAgIDEzNzE3LCAxMzcxOSwgMTM3MjEsIDEzNzIzLCAxMzcyNSwgMTM3MjcsIDEzNzI5LCAxMzczMSwgMTM3MzMsIDEzNzM1LCAKLSAgICAxMzczNywgMTM3MzksIDEzNzQxLCAxMzc0MywgMTM3NDUsIDEzNzQ3LCAxMzc0OSwgMTM3NTEsIDEzNzUzLCAxMzc1NSwgCi0gICAgMTM3NTcsIDEzNzU5LCAxMzc2MSwgMTM3NjMsIDEzNzY1LCAxMzc2NywgMTM3NjksIDEzNzcxLCAxMzc3MywgMTM3NzUsIAotICAgIDEzNzc3LCAxMzc3OSwgMTM3ODEsIDEzNzgzLCAxMzc4NSwgMTM3ODcsIDEzNzg5LCAxMzc5MSwgMTM3OTMsIDEzNzk1LCAKLSAgICAxMzc5NywgMTM3OTksIDEzODAxLCAxMzgwMywgMTM4MDUsIDEzODA3LCAxMzgwOSwgMTM4MTEsIDEzODEzLCAxMzgxNSwgCi0gICAgMTM4MTcsIDEzODE5LCAxMzgyMSwgMTM4MjMsIDEzODI1LCAxMzgyNywgMTM4MjksIDEzODMxLCAxMzgzMywgMTM4MzUsIAotICAgIDEzODM3LCAxMzgzOSwgMTM4NDEsIDEzODQzLCAxMzg0NSwgMTM4NDcsIDEzODQ5LCAxMzg1MSwgMTM4NTMsIDEzODU1LCAKLSAgICAxMzg1NywgMTM4NTksIDEzODYxLCAxMzg2MywgMTM4NjUsIDEzODY3LCAxMzg2OSwgMTM4NzEsIDEzODczLCAxMzg3NSwgCi0gICAgMTM4NzcsIDEzODc5LCAxMzg4MSwgMTM4ODMsIDEzODg1LCAxMzg4NywgMTM4ODksIDEzODkxLCAxMzg5MywgMTM4OTUsIAotICAgIDEzODk3LCAxMzg5OSwgMTM5MDEsIDEzOTAzLCAxMzkwNSwgMTM5MDcsIDEzOTA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0NSwgMTA0NDgsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDY0MSw0MDIgKzQ1MzksNjIzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTEsIDEwNDU0LCAxMDQ1NywgMTA0NjAsIDEwNDYzLCAKKyAgICAxMDQ2NiwgMTA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDcyLCAxMDQ3NSwgCisgICAgMTA0NzgsIDEwNDgxLCAxMDQ4NCwgMTA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNDkwLCAxMDQ5MiwgMTA0OTQsIDEwNDk2LCAxMDQ5OCwgMTA1MDAsIDEwNTAyLCAxMDUwNCwgMTA1MDYsIDEwNTA4LCAKKyAgICAxMDUxMCwgMTA1MTIsIDEwNTE0LCAxMDUxNiwgMTA1MTgsIDEwNTIwLCAxMDUyMiwgMTA1MjQsIDEwNTI2LCAxMDUyOCwgCisgICAgMTA1MzAsIDEwNTMyLCAxMDUzNCwgMTA1MzYsIDEwNTM4LCAxMDU0MCwgMTA1NDIsIDEwNTQ0LCAxMDU0NiwgMTA1NDgsIAorICAgIDEwNTUwLCAxMDU1MiwgMTA1NTQsIDEwNTU2LCAxMDU1OCwgMTA1NjAsIDEwNTYyLCAxMDU2NCwgMTA1NjYsIDEwNTY4LCAKKyAgICAxMDU3MCwgMTA1NzIsIDEwNTc0LCAxMDU3NiwgMTA1NzgsIDEwNTgwLCAxMDU4MiwgMTA1ODQsIDEwNTg2LCAxMDU4OCwgCisgICAgMTA1OTAsIDEwNTkyLCAxMDU5NCwgMTA1OTYsIDEwNTk4LCAxMDYwMCwgMTA2MDIsIDEwNjA0LCAxMDYwNiwgMTA2MDgsIAorICAgIDEwNjEwLCAxMDYxMiwgMTA2MTQsIDEwNjE2LCAxMDYxOCwgMTA2MjAsIDEwNjIyLCAxMDYyNCwgMTA2MjYsIDEwNjI4LCAKKyAgICAxMDYzMCwgMTA2MzIsIDEwNjM0LCAxMDYzNiwgMTA2MzgsIDEwNjQwLCAxMDY0MiwgMTA2NDQsIDEwNjQ2LCAxMDY0OCwgCisgICAgMTA2NTAsIDEwNjUyLCAxMDY1NCwgMTA2NTYsIDEwNjU4LCAwLCAxMDY2MCwgMTA2NjIsIDEwNjY0LCAxMDY2NiwgMTA2NjgsIAorICAgIDEwNjcwLCAxMDY3MiwgMTA2NzQsIDEwNjc2LCAxMDY3OCwgMTA2ODAsIDEwNjgyLCAxMDY4NCwgMTA2ODYsIDEwNjg4LCAKKyAgICAxMDY5MCwgMTA2OTIsIDEwNjk0LCAxMDY5NiwgMTA2OTgsIDEwNzAwLCAxMDcwMiwgMTA3MDQsIDEwNzA2LCAxMDcwOCwgCisgICAgMTA3MTAsIDEwNzEyLCAxMDcxNCwgMTA3MTYsIDEwNzE4LCAxMDcyMCwgMTA3MjIsIDEwNzI0LCAxMDcyNiwgMTA3MjgsIAorICAgIDEwNzMwLCAxMDczMiwgMTA3MzQsIDEwNzM2LCAxMDczOCwgMTA3NDAsIDEwNzQyLCAxMDc0NCwgMTA3NDYsIDEwNzQ4LCAKKyAgICAxMDc1MCwgMTA3NTIsIDEwNzU0LCAxMDc1NiwgMTA3NTgsIDEwNzYwLCAxMDc2MiwgMTA3NjQsIDEwNzY2LCAxMDc2OCwgCisgICAgMTA3NzAsIDEwNzcyLCAxMDc3NCwgMTA3NzYsIDEwNzc4LCAxMDc4MCwgMTA3ODIsIDEwNzg0LCAxMDc4NiwgMTA3ODgsIAorICAgIDEwNzkwLCAxMDc5MiwgMTA3OTQsIDEwNzk2LCAxMDc5OCwgMTA4MDAsIDAsIDEwODAyLCAxMDgwNCwgMCwgMCwgMTA4MDYsIAorICAgIDAsIDAsIDEwODA4LCAxMDgxMCwgMCwgMCwgMTA4MTIsIDEwODE0LCAxMDgxNiwgMTA4MTgsIDAsIDEwODIwLCAxMDgyMiwgCisgICAgMTA4MjQsIDEwODI2LCAxMDgyOCwgMTA4MzAsIDEwODMyLCAxMDgzNCwgMTA4MzYsIDEwODM4LCAxMDg0MCwgMTA4NDIsIDAsIAorICAgIDEwODQ0LCAwLCAxMDg0NiwgMTA4NDgsIDEwODUwLCAxMDg1MiwgMTA4NTQsIDEwODU2LCAxMDg1OCwgMCwgMTA4NjAsIAorICAgIDEwODYyLCAxMDg2NCwgMTA4NjYsIDEwODY4LCAxMDg3MCwgMTA4NzIsIDEwODc0LCAxMDg3NiwgMTA4NzgsIDEwODgwLCAKKyAgICAxMDg4MiwgMTA4ODQsIDEwODg2LCAxMDg4OCwgMTA4OTAsIDEwODkyLCAxMDg5NCwgMTA4OTYsIDEwODk4LCAxMDkwMCwgCisgICAgMTA5MDIsIDEwOTA0LCAxMDkwNiwgMTA5MDgsIDEwOTEwLCAxMDkxMiwgMTA5MTQsIDEwOTE2LCAxMDkxOCwgMTA5MjAsIAorICAgIDEwOTIyLCAxMDkyNCwgMTA5MjYsIDEwOTI4LCAxMDkzMCwgMTA5MzIsIDEwOTM0LCAxMDkzNiwgMTA5MzgsIDEwOTQwLCAKKyAgICAxMDk0MiwgMTA5NDQsIDEwOTQ2LCAxMDk0OCwgMTA5NTAsIDEwOTUyLCAxMDk1NCwgMTA5NTYsIDEwOTU4LCAxMDk2MCwgCisgICAgMTA5NjIsIDEwOTY0LCAxMDk2NiwgMTA5NjgsIDEwOTcwLCAxMDk3MiwgMTA5NzQsIDEwOTc2LCAxMDk3OCwgMTA5ODAsIAorICAgIDEwOTgyLCAxMDk4NCwgMTA5ODYsIDEwOTg4LCAwLCAxMDk5MCwgMTA5OTIsIDEwOTk0LCAxMDk5NiwgMCwgMCwgMTA5OTgsIAorICAgIDExMDAwLCAxMTAwMiwgMTEwMDQsIDExMDA2LCAxMTAwOCwgMTEwMTAsIDExMDEyLCAwLCAxMTAxNCwgMTEwMTYsIDExMDE4LCAKKyAgICAxMTAyMCwgMTEwMjIsIDExMDI0LCAxMTAyNiwgMCwgMTEwMjgsIDExMDMwLCAxMTAzMiwgMTEwMzQsIDExMDM2LCAxMTAzOCwgCisgICAgMTEwNDAsIDExMDQyLCAxMTA0NCwgMTEwNDYsIDExMDQ4LCAxMTA1MCwgMTEwNTIsIDExMDU0LCAxMTA1NiwgMTEwNTgsIAorICAgIDExMDYwLCAxMTA2MiwgMTEwNjQsIDExMDY2LCAxMTA2OCwgMTEwNzAsIDExMDcyLCAxMTA3NCwgMTEwNzYsIDExMDc4LCAKKyAgICAxMTA4MCwgMTEwODIsIDAsIDExMDg0LCAxMTA4NiwgMTEwODgsIDExMDkwLCAwLCAxMTA5MiwgMTEwOTQsIDExMDk2LCAKKyAgICAxMTA5OCwgMTExMDAsIDAsIDExMTAyLCAwLCAwLCAwLCAxMTEwNCwgMTExMDYsIDExMTA4LCAxMTExMCwgMTExMTIsIAorICAgIDExMTE0LCAxMTExNiwgMCwgMTExMTgsIDExMTIwLCAxMTEyMiwgMTExMjQsIDExMTI2LCAxMTEyOCwgMTExMzAsIDExMTMyLCAKKyAgICAxMTEzNCwgMTExMzYsIDExMTM4LCAxMTE0MCwgMTExNDIsIDExMTQ0LCAxMTE0NiwgMTExNDgsIDExMTUwLCAxMTE1MiwgCisgICAgMTExNTQsIDExMTU2LCAxMTE1OCwgMTExNjAsIDExMTYyLCAxMTE2NCwgMTExNjYsIDExMTY4LCAxMTE3MCwgMTExNzIsIAorICAgIDExMTc0LCAxMTE3NiwgMTExNzgsIDExMTgwLCAxMTE4MiwgMTExODQsIDExMTg2LCAxMTE4OCwgMTExOTAsIDExMTkyLCAKKyAgICAxMTE5NCwgMTExOTYsIDExMTk4LCAxMTIwMCwgMTEyMDIsIDExMjA0LCAxMTIwNiwgMTEyMDgsIDExMjEwLCAxMTIxMiwgCisgICAgMTEyMTQsIDExMjE2LCAxMTIxOCwgMTEyMjAsIDExMjIyLCAxMTIyNCwgMTEyMjYsIDExMjI4LCAxMTIzMCwgMTEyMzIsIAorICAgIDExMjM0LCAxMTIzNiwgMTEyMzgsIDExMjQwLCAxMTI0MiwgMTEyNDQsIDExMjQ2LCAxMTI0OCwgMTEyNTAsIDExMjUyLCAKKyAgICAxMTI1NCwgMTEyNTYsIDExMjU4LCAxMTI2MCwgMTEyNjIsIDExMjY0LCAxMTI2NiwgMTEyNjgsIDExMjcwLCAxMTI3MiwgCisgICAgMTEyNzQsIDExMjc2LCAxMTI3OCwgMTEyODAsIDExMjgyLCAxMTI4NCwgMTEyODYsIDExMjg4LCAxMTI5MCwgMTEyOTIsIAorICAgIDExMjk0LCAxMTI5NiwgMTEyOTgsIDExMzAwLCAxMTMwMiwgMTEzMDQsIDExMzA2LCAxMTMwOCwgMTEzMTAsIDExMzEyLCAKKyAgICAxMTMxNCwgMTEzMTYsIDExMzE4LCAxMTMyMCwgMTEzMjIsIDExMzI0LCAxMTMyNiwgMTEzMjgsIDExMzMwLCAxMTMzMiwgCisgICAgMTEzMzQsIDExMzM2LCAxMTMzOCwgMTEzNDAsIDExMzQyLCAxMTM0NCwgMTEzNDYsIDExMzQ4LCAxMTM1MCwgMTEzNTIsIAorICAgIDExMzU0LCAxMTM1NiwgMTEzNTgsIDExMzYwLCAxMTM2MiwgMTEzNjQsIDExMzY2LCAxMTM2OCwgMTEzNzAsIDExMzcyLCAKKyAgICAxMTM3NCwgMTEzNzYsIDExMzc4LCAxMTM4MCwgMTEzODIsIDExMzg0LCAxMTM4NiwgMTEzODgsIDExMzkwLCAxMTM5MiwgCisgICAgMTEzOTQsIDExMzk2LCAxMTM5OCwgMTE0MDAsIDExNDAyLCAxMTQwNCwgMTE0MDYsIDExNDA4LCAxMTQxMCwgMTE0MTIsIAorICAgIDExNDE0LCAxMTQxNiwgMTE0MTgsIDExNDIwLCAxMTQyMiwgMTE0MjQsIDExNDI2LCAxMTQyOCwgMTE0MzAsIDExNDMyLCAKKyAgICAxMTQzNCwgMTE0MzYsIDExNDM4LCAxMTQ0MCwgMTE0NDIsIDExNDQ0LCAxMTQ0NiwgMTE0NDgsIDExNDUwLCAxMTQ1MiwgCisgICAgMTE0NTQsIDExNDU2LCAxMTQ1OCwgMTE0NjAsIDExNDYyLCAxMTQ2NCwgMTE0NjYsIDExNDY4LCAxMTQ3MCwgMTE0NzIsIAorICAgIDExNDc0LCAxMTQ3NiwgMTE0NzgsIDExNDgwLCAxMTQ4MiwgMTE0ODQsIDExNDg2LCAxMTQ4OCwgMTE0OTAsIDExNDkyLCAKKyAgICAxMTQ5NCwgMTE0OTYsIDExNDk4LCAxMTUwMCwgMTE1MDIsIDExNTA0LCAxMTUwNiwgMTE1MDgsIDExNTEwLCAxMTUxMiwgCisgICAgMTE1MTQsIDExNTE2LCAxMTUxOCwgMTE1MjAsIDExNTIyLCAxMTUyNCwgMTE1MjYsIDExNTI4LCAxMTUzMCwgMTE1MzIsIAorICAgIDExNTM0LCAxMTUzNiwgMTE1MzgsIDExNTQwLCAxMTU0MiwgMTE1NDQsIDExNTQ2LCAxMTU0OCwgMTE1NTAsIDExNTUyLCAKKyAgICAxMTU1NCwgMTE1NTYsIDExNTU4LCAxMTU2MCwgMTE1NjIsIDExNTY0LCAxMTU2NiwgMTE1NjgsIDExNTcwLCAxMTU3MiwgCisgICAgMTE1NzQsIDExNTc2LCAxMTU3OCwgMTE1ODAsIDExNTgyLCAxMTU4NCwgMTE1ODYsIDExNTg4LCAxMTU5MCwgMTE1OTIsIAorICAgIDExNTk0LCAxMTU5NiwgMTE1OTgsIDExNjAwLCAxMTYwMiwgMTE2MDQsIDExNjA2LCAxMTYwOCwgMTE2MTAsIDExNjEyLCAKKyAgICAxMTYxNCwgMTE2MTYsIDExNjE4LCAxMTYyMCwgMTE2MjIsIDExNjI0LCAxMTYyNiwgMTE2MjgsIDExNjMwLCAxMTYzMiwgCisgICAgMTE2MzQsIDExNjM2LCAxMTYzOCwgMTE2NDAsIDExNjQyLCAxMTY0NCwgMTE2NDYsIDExNjQ4LCAxMTY1MCwgMTE2NTIsIAorICAgIDExNjU0LCAxMTY1NiwgMTE2NTgsIDExNjYwLCAxMTY2MiwgMTE2NjQsIDExNjY2LCAxMTY2OCwgMTE2NzAsIDExNjcyLCAKKyAgICAxMTY3NCwgMTE2NzYsIDExNjc4LCAxMTY4MCwgMTE2ODIsIDExNjg0LCAxMTY4NiwgMTE2ODgsIDExNjkwLCAxMTY5MiwgCisgICAgMTE2OTQsIDExNjk2LCAxMTY5OCwgMTE3MDAsIDExNzAyLCAxMTcwNCwgMTE3MDYsIDExNzA4LCAxMTcxMCwgMTE3MTIsIAorICAgIDExNzE0LCAxMTcxNiwgMTE3MTgsIDExNzIwLCAxMTcyMiwgMTE3MjQsIDExNzI2LCAxMTcyOCwgMTE3MzAsIDExNzMyLCAKKyAgICAxMTczNCwgMTE3MzYsIDExNzM4LCAxMTc0MCwgMTE3NDIsIDExNzQ0LCAxMTc0NiwgMTE3NDgsIDExNzUwLCAxMTc1MiwgCisgICAgMTE3NTQsIDExNzU2LCAxMTc1OCwgMTE3NjAsIDExNzYyLCAxMTc2NCwgMTE3NjYsIDExNzY4LCAxMTc3MCwgMTE3NzIsIAorICAgIDExNzc0LCAxMTc3NiwgMTE3NzgsIDExNzgwLCAxMTc4MiwgMTE3ODQsIDExNzg2LCAxMTc4OCwgMTE3OTAsIDExNzkyLCAKKyAgICAxMTc5NCwgMTE3OTYsIDAsIDAsIDExNzk4LCAxMTgwMCwgMTE4MDIsIDExODA0LCAxMTgwNiwgMTE4MDgsIDExODEwLCAKKyAgICAxMTgxMiwgMTE4MTQsIDExODE2LCAxMTgxOCwgMTE4MjAsIDExODIyLCAxMTgyNCwgMTE4MjYsIDExODI4LCAxMTgzMCwgCisgICAgMTE4MzIsIDExODM0LCAxMTgzNiwgMTE4MzgsIDExODQwLCAxMTg0MiwgMTE4NDQsIDExODQ2LCAxMTg0OCwgMTE4NTAsIAorICAgIDExODUyLCAxMTg1NCwgMTE4NTYsIDExODU4LCAxMTg2MCwgMTE4NjIsIDExODY0LCAxMTg2NiwgMTE4NjgsIDExODcwLCAKKyAgICAxMTg3MiwgMTE4NzQsIDExODc2LCAxMTg3OCwgMTE4ODAsIDExODgyLCAxMTg4NCwgMTE4ODYsIDExODg4LCAxMTg5MCwgCisgICAgMTE4OTIsIDExODk0LCAxMTg5NiwgMTE4OTgsIDExOTAwLCAxMTkwMiwgMTE5MDQsIDExOTA2LCAxMTkwOCwgMTE5MTAsIAorICAgIDExOTEyLCAxMTkxNCwgMTE5MTYsIDExOTE4LCAxMTkyMCwgMTE5MjIsIDExOTI0LCAxMTkyNiwgMTE5MjgsIDExOTMwLCAKKyAgICAxMTkzMiwgMTE5MzQsIDExOTM2LCAxMTkzOCwgMTE5NDAsIDExOTQyLCAxMTk0NCwgMTE5NDYsIDExOTQ4LCAxMTk1MCwgCisgICAgMTE5NTIsIDExOTU0LCAxMTk1NiwgMTE5NTgsIDExOTYwLCAxMTk2MiwgMTE5NjQsIDExOTY2LCAxMTk2OCwgMTE5NzAsIAorICAgIDExOTcyLCAxMTk3NCwgMTE5NzYsIDExOTc4LCAxMTk4MCwgMTE5ODIsIDExOTg0LCAxMTk4NiwgMTE5ODgsIDExOTkwLCAKKyAgICAxMTk5MiwgMTE5OTQsIDExOTk2LCAxMTk5OCwgMTIwMDAsIDEyMDAyLCAxMjAwNCwgMTIwMDYsIDEyMDA4LCAxMjAxMCwgCisgICAgMTIwMTIsIDEyMDE0LCAxMjAxNiwgMTIwMTgsIDEyMDIwLCAxMjAyMiwgMTIwMjQsIDEyMDI2LCAxMjAyOCwgMTIwMzAsIAorICAgIDEyMDMyLCAxMjAzNCwgMTIwMzYsIDEyMDM4LCAxMjA0MCwgMTIwNDIsIDEyMDQ0LCAxMjA0NiwgMTIwNDgsIDEyMDUwLCAKKyAgICAxMjA1MiwgMTIwNTQsIDEyMDU2LCAxMjA1OCwgMTIwNjAsIDEyMDYyLCAxMjA2NCwgMTIwNjYsIDEyMDY4LCAxMjA3MCwgCisgICAgMTIwNzIsIDEyMDc0LCAxMjA3NiwgMTIwNzgsIDEyMDgwLCAxMjA4MiwgMTIwODQsIDEyMDg2LCAxMjA4OCwgMTIwOTAsIAorICAgIDEyMDkyLCAxMjA5NCwgMTIwOTYsIDEyMDk4LCAxMjEwMCwgMTIxMDIsIDEyMTA0LCAxMjEwNiwgMTIxMDgsIDEyMTEwLCAKKyAgICAxMjExMiwgMTIxMTQsIDEyMTE2LCAxMjExOCwgMTIxMjAsIDEyMTIyLCAxMjEyNCwgMTIxMjYsIDEyMTI4LCAxMjEzMCwgCisgICAgMTIxMzIsIDEyMTM0LCAxMjEzNiwgMTIxMzgsIDEyMTQwLCAxMjE0MiwgMTIxNDQsIDEyMTQ2LCAxMjE0OCwgMTIxNTAsIAorICAgIDEyMTUyLCAxMjE1NCwgMTIxNTYsIDEyMTU4LCAxMjE2MCwgMTIxNjIsIDEyMTY0LCAxMjE2NiwgMTIxNjgsIDEyMTcwLCAKKyAgICAxMjE3MiwgMTIxNzQsIDEyMTc2LCAxMjE3OCwgMTIxODAsIDEyMTgyLCAxMjE4NCwgMTIxODYsIDEyMTg4LCAxMjE5MCwgCisgICAgMTIxOTIsIDEyMTk0LCAxMjE5NiwgMTIxOTgsIDEyMjAwLCAxMjIwMiwgMTIyMDQsIDEyMjA2LCAxMjIwOCwgMTIyMTAsIAorICAgIDEyMjEyLCAxMjIxNCwgMTIyMTYsIDEyMjE4LCAxMjIyMCwgMTIyMjIsIDEyMjI0LCAxMjIyNiwgMTIyMjgsIDEyMjMwLCAKKyAgICAxMjIzMiwgMTIyMzQsIDEyMjM2LCAxMjIzOCwgMTIyNDAsIDEyMjQyLCAxMjI0NCwgMTIyNDYsIDEyMjQ4LCAxMjI1MCwgCisgICAgMTIyNTIsIDEyMjU0LCAxMjI1NiwgMTIyNTgsIDEyMjYwLCAxMjI2MiwgMTIyNjQsIDEyMjY2LCAxMjI2OCwgMTIyNzAsIAorICAgIDEyMjcyLCAxMjI3NCwgMTIyNzYsIDEyMjc4LCAxMjI4MCwgMTIyODIsIDEyMjg0LCAxMjI4NiwgMTIyODgsIDEyMjkwLCAKKyAgICAxMjI5MiwgMTIyOTQsIDEyMjk2LCAxMjI5OCwgMTIzMDAsIDEyMzAyLCAxMjMwNCwgMTIzMDYsIDEyMzA4LCAxMjMxMCwgCisgICAgMTIzMTIsIDEyMzE0LCAxMjMxNiwgMTIzMTgsIDEyMzIwLCAxMjMyMiwgMTIzMjQsIDEyMzI2LCAxMjMyOCwgMTIzMzAsIAorICAgIDEyMzMyLCAxMjMzNCwgMTIzMzYsIDEyMzM4LCAxMjM0MCwgMTIzNDIsIDEyMzQ0LCAxMjM0NiwgMTIzNDgsIDEyMzUwLCAKKyAgICAxMjM1MiwgMTIzNTQsIDEyMzU2LCAxMjM1OCwgMTIzNjAsIDEyMzYyLCAxMjM2NCwgMTIzNjYsIDEyMzY4LCAxMjM3MCwgCisgICAgMTIzNzIsIDEyMzc0LCAxMjM3NiwgMTIzNzgsIDEyMzgwLCAwLCAwLCAxMjM4MiwgMTIzODQsIDEyMzg2LCAxMjM4OCwgCisgICAgMTIzOTAsIDEyMzkyLCAxMjM5NCwgMTIzOTYsIDEyMzk4LCAxMjQwMCwgMTI0MDIsIDEyNDA0LCAxMjQwNiwgMTI0MDgsIAorICAgIDEyNDEwLCAxMjQxMiwgMTI0MTQsIDEyNDE2LCAxMjQxOCwgMTI0MjAsIDEyNDIyLCAxMjQyNCwgMTI0MjYsIDEyNDI4LCAKKyAgICAxMjQzMCwgMTI0MzIsIDEyNDM0LCAxMjQzNiwgMTI0MzgsIDEyNDQwLCAxMjQ0MiwgMTI0NDQsIDEyNDQ2LCAxMjQ0OCwgCisgICAgMTI0NTAsIDEyNDUyLCAxMjQ1NCwgMTI0NTYsIDEyNDU4LCAxMjQ2MCwgMTI0NjIsIDEyNDY0LCAxMjQ2NiwgMTI0NjgsIAorICAgIDEyNDcwLCAxMjQ3MiwgMTI0NzQsIDEyNDc2LCAxMjQ3OCwgMTI0ODAsIDEyNDgyLCAxMjQ4NCwgMTI0ODYsIDEyNDg4LCAwLCAKKyAgICAxMjQ5MCwgMTI0OTIsIDEyNDk0LCAxMjQ5NiwgMTI0OTgsIDEyNTAwLCAxMjUwMiwgMTI1MDQsIDEyNTA2LCAxMjUwOCwgCisgICAgMTI1MTAsIDEyNTEyLCAxMjUxNCwgMTI1MTYsIDEyNTE4LCAxMjUyMCwgMTI1MjIsIDEyNTI0LCAxMjUyNiwgMTI1MjgsIAorICAgIDEyNTMwLCAxMjUzMiwgMTI1MzQsIDEyNTM2LCAxMjUzOCwgMTI1NDAsIDEyNTQyLCAwLCAxMjU0NCwgMTI1NDYsIDAsIAorICAgIDEyNTQ4LCAwLCAwLCAxMjU1MCwgMCwgMTI1NTIsIDEyNTU0LCAxMjU1NiwgMTI1NTgsIDEyNTYwLCAxMjU2MiwgMTI1NjQsIAorICAgIDEyNTY2LCAxMjU2OCwgMTI1NzAsIDAsIDEyNTcyLCAxMjU3NCwgMTI1NzYsIDEyNTc4LCAwLCAxMjU4MCwgMCwgMTI1ODIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTg0LCAwLCAwLCAwLCAwLCAxMjU4NiwgMCwgMTI1ODgsIDAsIDEyNTkwLCAwLCAxMjU5MiwgCisgICAgMTI1OTQsIDEyNTk2LCAwLCAxMjU5OCwgMTI2MDAsIDAsIDEyNjAyLCAwLCAwLCAxMjYwNCwgMCwgMTI2MDYsIDAsIDEyNjA4LCAKKyAgICAwLCAxMjYxMCwgMCwgMTI2MTIsIDAsIDEyNjE0LCAxMjYxNiwgMCwgMTI2MTgsIDAsIDAsIDEyNjIwLCAxMjYyMiwgMTI2MjQsIAorICAgIDEyNjI2LCAwLCAxMjYyOCwgMTI2MzAsIDEyNjMyLCAxMjYzNCwgMTI2MzYsIDEyNjM4LCAxMjY0MCwgMCwgMTI2NDIsIAorICAgIDEyNjQ0LCAxMjY0NiwgMTI2NDgsIDAsIDEyNjUwLCAxMjY1MiwgMTI2NTQsIDEyNjU2LCAwLCAxMjY1OCwgMCwgMTI2NjAsIAorICAgIDEyNjYyLCAxMjY2NCwgMTI2NjYsIDEyNjY4LCAxMjY3MCwgMTI2NzIsIDEyNjc0LCAxMjY3NiwgMTI2NzgsIDAsIDEyNjgwLCAKKyAgICAxMjY4MiwgMTI2ODQsIDEyNjg2LCAxMjY4OCwgMTI2OTAsIDEyNjkyLCAxMjY5NCwgMTI2OTYsIDEyNjk4LCAxMjcwMCwgCisgICAgMTI3MDIsIDEyNzA0LCAxMjcwNiwgMTI3MDgsIDEyNzEwLCAxMjcxMiwgMCwgMCwgMCwgMCwgMCwgMTI3MTQsIDEyNzE2LCAKKyAgICAxMjcxOCwgMCwgMTI3MjAsIDEyNzIyLCAxMjcyNCwgMTI3MjYsIDEyNzI4LCAwLCAxMjczMCwgMTI3MzIsIDEyNzM0LCAKKyAgICAxMjczNiwgMTI3MzgsIDEyNzQwLCAxMjc0MiwgMTI3NDQsIDEyNzQ2LCAxMjc0OCwgMTI3NTAsIDEyNzUyLCAxMjc1NCwgCisgICAgMTI3NTYsIDEyNzU4LCAxMjc2MCwgMTI3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyNzY0LCAxMjc2NywgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgyLCAxMjc4NSwgCisgICAgMTI3ODgsIDEyNzkxLCAxMjc5NCwgMCwgMCwgMCwgMCwgMCwgMTI3OTcsIDEyODAxLCAxMjgwNSwgMTI4MDksIDEyODEzLCAKKyAgICAxMjgxNywgMTI4MjEsIDEyODI1LCAxMjgyOSwgMTI4MzMsIDEyODM3LCAxMjg0MSwgMTI4NDUsIDEyODQ5LCAxMjg1MywgCisgICAgMTI4NTcsIDEyODYxLCAxMjg2NSwgMTI4NjksIDEyODczLCAxMjg3NywgMTI4ODEsIDEyODg1LCAxMjg4OSwgMTI4OTMsIAorICAgIDEyODk3LCAxMjkwMSwgMTI5MDUsIDEyOTA3LCAxMjkwOSwgMTI5MTIsIDAsIDEyOTE1LCAxMjkxNywgMTI5MTksIDEyOTIxLCAKKyAgICAxMjkyMywgMTI5MjUsIDEyOTI3LCAxMjkyOSwgMTI5MzEsIDEyOTMzLCAxMjkzNSwgMTI5MzcsIDEyOTM5LCAxMjk0MSwgCisgICAgMTI5NDMsIDEyOTQ1LCAxMjk0NywgMTI5NDksIDEyOTUxLCAxMjk1MywgMTI5NTUsIDEyOTU3LCAxMjk1OSwgMTI5NjEsIAorICAgIDEyOTYzLCAxMjk2NSwgMTI5NjcsIDEyOTcwLCAxMjk3MywgMTI5NzYsIDEyOTc5LCAxMjk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODYsIDEyOTg5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTI5OTUsIDEyOTk4LCAxMzAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTMwMDMsIDEzMDA1LCAxMzAwNywgMTMwMDksIDEzMDExLCAxMzAxMywgMTMwMTUsIDEzMDE3LCAxMzAxOSwgMTMwMjEsIAorICAgIDEzMDIzLCAxMzAyNSwgMTMwMjcsIDEzMDI5LCAxMzAzMSwgMTMwMzMsIDEzMDM1LCAxMzAzNywgMTMwMzksIDEzMDQxLCAKKyAgICAxMzA0MywgMTMwNDUsIDEzMDQ3LCAxMzA0OSwgMTMwNTEsIDEzMDUzLCAxMzA1NSwgMTMwNTcsIDEzMDU5LCAxMzA2MSwgCisgICAgMTMwNjMsIDEzMDY1LCAxMzA2NywgMTMwNjksIDEzMDcxLCAxMzA3MywgMTMwNzUsIDEzMDc3LCAxMzA3OSwgMTMwODEsIAorICAgIDEzMDgzLCAxMzA4NSwgMTMwODcsIDAsIDAsIDAsIDAsIDAsIDEzMDg5LCAxMzA5MywgMTMwOTcsIDEzMTAxLCAxMzEwNSwgCisgICAgMTMxMDksIDEzMTEzLCAxMzExNywgMTMxMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTI1LCAxMzEyNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTMxMjksIDEzMTMxLCAxMzEzMywgMTMxMzUsIDEzMTM3LCAxMzEzOSwgMTMxNDEsIDEzMTQzLCAxMzE0NSwgCisgICAgMTMxNDcsIDEzMTQ5LCAxMzE1MSwgMTMxNTMsIDEzMTU1LCAxMzE1NywgMTMxNTksIDEzMTYxLCAxMzE2MywgMTMxNjUsIAorICAgIDEzMTY3LCAxMzE2OSwgMTMxNzEsIDEzMTczLCAxMzE3NSwgMTMxNzcsIDEzMTc5LCAxMzE4MSwgMTMxODMsIDEzMTg1LCAKKyAgICAxMzE4NywgMTMxODksIDEzMTkxLCAxMzE5MywgMTMxOTUsIDEzMTk3LCAxMzE5OSwgMTMyMDEsIDEzMjAzLCAxMzIwNSwgCisgICAgMTMyMDcsIDEzMjA5LCAxMzIxMSwgMTMyMTMsIDEzMjE1LCAxMzIxNywgMTMyMTksIDEzMjIxLCAxMzIyMywgMTMyMjUsIAorICAgIDEzMjI3LCAxMzIyOSwgMTMyMzEsIDEzMjMzLCAxMzIzNSwgMTMyMzcsIDEzMjM5LCAxMzI0MSwgMTMyNDMsIDEzMjQ1LCAKKyAgICAxMzI0NywgMTMyNDksIDEzMjUxLCAxMzI1MywgMTMyNTUsIDEzMjU3LCAxMzI1OSwgMTMyNjEsIDEzMjYzLCAxMzI2NSwgCisgICAgMTMyNjcsIDEzMjY5LCAxMzI3MSwgMTMyNzMsIDEzMjc1LCAxMzI3NywgMTMyNzksIDEzMjgxLCAxMzI4MywgMTMyODUsIAorICAgIDEzMjg3LCAxMzI4OSwgMTMyOTEsIDEzMjkzLCAxMzI5NSwgMTMyOTcsIDEzMjk5LCAxMzMwMSwgMTMzMDMsIDEzMzA1LCAKKyAgICAxMzMwNywgMTMzMDksIDEzMzExLCAxMzMxMywgMTMzMTUsIDEzMzE3LCAxMzMxOSwgMTMzMjEsIDEzMzIzLCAxMzMyNSwgCisgICAgMTMzMjcsIDEzMzI5LCAxMzMzMSwgMTMzMzMsIDEzMzM1LCAxMzMzNywgMTMzMzksIDEzMzQxLCAxMzM0MywgMTMzNDUsIAorICAgIDEzMzQ3LCAxMzM0OSwgMTMzNTEsIDEzMzUzLCAxMzM1NSwgMTMzNTcsIDEzMzU5LCAxMzM2MSwgMTMzNjMsIDEzMzY1LCAKKyAgICAxMzM2NywgMTMzNjksIDEzMzcxLCAxMzM3MywgMTMzNzUsIDEzMzc3LCAxMzM3OSwgMTMzODEsIDEzMzgzLCAxMzM4NSwgCisgICAgMTMzODcsIDEzMzg5LCAxMzM5MSwgMTMzOTMsIDEzMzk1LCAxMzM5NywgMTMzOTksIDEzNDAxLCAxMzQwMywgMTM0MDUsIAorICAgIDEzNDA3LCAxMzQwOSwgMTM0MTEsIDEzNDEzLCAxMzQxNSwgMTM0MTcsIDEzNDE5LCAxMzQyMSwgMTM0MjMsIDEzNDI1LCAKKyAgICAxMzQyNywgMTM0MjksIDEzNDMxLCAxMzQzMywgMTM0MzUsIDEzNDM3LCAxMzQzOSwgMTM0NDEsIDEzNDQzLCAxMzQ0NSwgCisgICAgMTM0NDcsIDEzNDQ5LCAxMzQ1MSwgMTM0NTMsIDEzNDU1LCAxMzQ1NywgMTM0NTksIDEzNDYxLCAxMzQ2MywgMTM0NjUsIAorICAgIDEzNDY3LCAxMzQ2OSwgMTM0NzEsIDEzNDczLCAxMzQ3NSwgMTM0NzcsIDEzNDc5LCAxMzQ4MSwgMTM0ODMsIDEzNDg1LCAKKyAgICAxMzQ4NywgMTM0ODksIDEzNDkxLCAxMzQ5MywgMTM0OTUsIDEzNDk3LCAxMzQ5OSwgMTM1MDEsIDEzNTAzLCAxMzUwNSwgCisgICAgMTM1MDcsIDEzNTA5LCAxMzUxMSwgMTM1MTMsIDEzNTE1LCAxMzUxNywgMTM1MTksIDEzNTIxLCAxMzUyMywgMTM1MjUsIAorICAgIDEzNTI3LCAxMzUyOSwgMTM1MzEsIDEzNTMzLCAxMzUzNSwgMTM1MzcsIDEzNTM5LCAxMzU0MSwgMTM1NDMsIDEzNTQ1LCAKKyAgICAxMzU0NywgMTM1NDksIDEzNTUxLCAxMzU1MywgMTM1NTUsIDEzNTU3LCAxMzU1OSwgMTM1NjEsIDEzNTYzLCAxMzU2NSwgCisgICAgMTM1NjcsIDEzNTY5LCAxMzU3MSwgMTM1NzMsIDEzNTc1LCAxMzU3NywgMTM1NzksIDEzNTgxLCAxMzU4MywgMTM1ODUsIAorICAgIDEzNTg3LCAxMzU4OSwgMTM1OTEsIDEzNTkzLCAxMzU5NSwgMTM1OTcsIDEzNTk5LCAxMzYwMSwgMTM2MDMsIDEzNjA1LCAKKyAgICAxMzYwNywgMTM2MDksIDEzNjExLCAxMzYxMywgMTM2MTUsIDEzNjE3LCAxMzYxOSwgMTM2MjEsIDEzNjIzLCAxMzYyNSwgCisgICAgMTM2MjcsIDEzNjI5LCAxMzYzMSwgMTM2MzMsIDEzNjM1LCAxMzYzNywgMTM2MzksIDEzNjQxLCAxMzY0MywgMTM2NDUsIAorICAgIDEzNjQ3LCAxMzY0OSwgMTM2NTEsIDEzNjUzLCAxMzY1NSwgMTM2NTcsIDEzNjU5LCAxMzY2MSwgMTM2NjMsIDEzNjY1LCAKKyAgICAxMzY2NywgMTM2NjksIDEzNjcxLCAxMzY3MywgMTM2NzUsIDEzNjc3LCAxMzY3OSwgMTM2ODEsIDEzNjgzLCAxMzY4NSwgCisgICAgMTM2ODcsIDEzNjg5LCAxMzY5MSwgMTM2OTMsIDEzNjk1LCAxMzY5NywgMTM2OTksIDEzNzAxLCAxMzcwMywgMTM3MDUsIAorICAgIDEzNzA3LCAxMzcwOSwgMTM3MTEsIDEzNzEzLCAxMzcxNSwgMTM3MTcsIDEzNzE5LCAxMzcyMSwgMTM3MjMsIDEzNzI1LCAKKyAgICAxMzcyNywgMTM3MjksIDEzNzMxLCAxMzczMywgMTM3MzUsIDEzNzM3LCAxMzczOSwgMTM3NDEsIDEzNzQzLCAxMzc0NSwgCisgICAgMTM3NDcsIDEzNzQ5LCAxMzc1MSwgMTM3NTMsIDEzNzU1LCAxMzc1NywgMTM3NTksIDEzNzYxLCAxMzc2MywgMTM3NjUsIAorICAgIDEzNzY3LCAxMzc2OSwgMTM3NzEsIDEzNzczLCAxMzc3NSwgMTM3NzcsIDEzNzc5LCAxMzc4MSwgMTM3ODMsIDEzNzg1LCAKKyAgICAxMzc4NywgMTM3ODksIDEzNzkxLCAxMzc5MywgMTM3OTUsIDEzNzk3LCAxMzc5OSwgMTM4MDEsIDEzODAzLCAxMzgwNSwgCisgICAgMTM4MDcsIDEzODA5LCAxMzgxMSwgMTM4MTMsIDEzODE1LCAxMzgxNywgMTM4MTksIDEzODIxLCAxMzgyMywgMTM4MjUsIAorICAgIDEzODI3LCAxMzgyOSwgMTM4MzEsIDEzODMzLCAxMzgzNSwgMTM4MzcsIDEzODM5LCAxMzg0MSwgMTM4NDMsIDEzODQ1LCAKKyAgICAxMzg0NywgMTM4NDksIDEzODUxLCAxMzg1MywgMTM4NTUsIDEzODU3LCAxMzg1OSwgMTM4NjEsIDEzODYzLCAxMzg2NSwgCisgICAgMTM4NjcsIDEzODY5LCAxMzg3MSwgMTM4NzMsIDEzODc1LCAxMzg3NywgMTM4NzksIDEzODgxLCAxMzg4MywgMTM4ODUsIAorICAgIDEzODg3LCAxMzg4OSwgMTM4OTEsIDEzODkzLCAxMzg5NSwgMTM4OTcsIDEzODk5LCAxMzkwMSwgMTM5MDMsIDEzOTA1LCAKKyAgICAxMzkwNywgMTM5MDksIDEzOTExLCAxMzkxMywgMTM5MTUsIDEzOTE3LCAxMzkxOSwgMTM5MjEsIDEzOTIzLCAxMzkyNSwgCisgICAgMTM5MjcsIDEzOTI5LCAxMzkzMSwgMTM5MzMsIDEzOTM1LCAxMzkzNywgMTM5MzksIDEzOTQxLCAxMzk0MywgMTM5NDUsIAorICAgIDEzOTQ3LCAxMzk0OSwgMTM5NTEsIDEzOTUzLCAxMzk1NSwgMTM5NTcsIDEzOTU5LCAxMzk2MSwgMTM5NjMsIDEzOTY1LCAKKyAgICAxMzk2NywgMTM5NjksIDEzOTcxLCAxMzk3MywgMTM5NzUsIDEzOTc3LCAxMzk3OSwgMTM5ODEsIDEzOTgzLCAxMzk4NSwgCisgICAgMTM5ODcsIDEzOTg5LCAxMzk5MSwgMTM5OTMsIDEzOTk1LCAxMzk5NywgMTM5OTksIDE0MDAxLCAxNDAwMywgMTQwMDUsIAorICAgIDE0MDA3LCAxNDAwOSwgMTQwMTEsIDE0MDEzLCAxNDAxNSwgMTQwMTcsIDE0MDE5LCAxNDAyMSwgMTQwMjMsIDE0MDI1LCAKKyAgICAxNDAyNywgMTQwMjksIDE0MDMxLCAxNDAzMywgMTQwMzUsIDE0MDM3LCAxNDAzOSwgMTQwNDEsIDE0MDQzLCAxNDA0NSwgCisgICAgMTQwNDcsIDE0MDQ5LCAxNDA1MSwgMTQwNTMsIDE0MDU1LCAxNDA1NywgMTQwNTksIDE0MDYxLCAxNDA2MywgMTQwNjUsIAorICAgIDE0MDY3LCAxNDA2OSwgMTQwNzEsIDE0MDczLCAxNDA3NSwgMTQwNzcsIDE0MDc5LCAxNDA4MSwgMTQwODMsIDE0MDg1LCAKKyAgICAxNDA4NywgMTQwODksIDE0MDkxLCAxNDA5MywgMTQwOTUsIDE0MDk3LCAxNDA5OSwgMTQxMDEsIDE0MTAzLCAxNDEwNSwgCisgICAgMTQxMDcsIDE0MTA5LCAxNDExMSwgMTQxMTMsIDE0MTE1LCAxNDExNywgMTQxMTksIDE0MTIxLCAxNDEyMywgMTQxMjUsIAorICAgIDE0MTI3LCAxNDEyOSwgMTQxMzEsIDE0MTMzLCAxNDEzNSwgMTQxMzcsIDE0MTM5LCAxNDE0MSwgMTQxNDMsIDE0MTQ1LCAKKyAgICAxNDE0NywgMTQxNDksIDE0MTUxLCAxNDE1MywgMTQxNTUsIDE0MTU3LCAxNDE1OSwgMTQxNjEsIDE0MTYzLCAxNDE2NSwgCisgICAgMTQxNjcsIDE0MTY5LCAxNDE3MSwgMTQxNzMsIDE0MTc1LCAxNDE3NywgMTQxNzksIDE0MTgxLCAxNDE4MywgMTQxODUsIAorICAgIDE0MTg3LCAxNDE4OSwgMTQxOTEsIDE0MTkzLCAxNDE5NSwgMTQxOTcsIDE0MTk5LCAxNDIwMSwgMTQyMDMsIDE0MjA1LCAKKyAgICAxNDIwNywgMTQyMDksIDE0MjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIE5GQyBwYWlycyAqLwogI2RlZmluZSBDT01QX1NISUZUIDIKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBjb21wX2luZGV4W10gPSB7CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgNiwgNywgOCwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDExLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIDE0LCAKLSAgICAxNSwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDMyLCAzMywgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIAotICAgIDUwLCAwLCA1MSwgNTIsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgNTUsIDU2LCA1NywgNTgsIDU5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MCwgNjEsIDAsIDAsIDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MywgNjQsIDY1LCAwLCAKLSAgICA2NiwgNjcsIDY4LCAwLCAwLCAwLCAwLCAwLCAwLCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzYsIDAsIDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzksIDAsIDgwLCA4MSwgODIsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NCwgODUsIDg2LCAwLCA4NywgODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDg5LCA5MCwgMCwgOTEsIDkyLCA5MywgMCwgMCwgMCwgMCwgMCwgMCwgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDEsIDAsIDAsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzLCAKLSAgICAxMDQsIDAsIDAsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDcsIDEwOCwgMTA5LCAwLCAxMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMSwgMTEyLCAKLSAgICAwLCAxMTMsIDExNCwgMCwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjIsIDAsIDAsIDEyMywgMCwgMTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUsIAotICAgIDEyNiwgMTI3LCAxMjgsIDAsIDEyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAxMzEsIDEzMiwgMTMzLCAKLSAgICAxMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDAsIAotICAgIDE0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MiwgCi0gICAgMCwgMTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDAsIDE2NSwgMTY2LCAxNjcsIDAsIDE2OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTY5LCAwLCAwLCAxNzAsIDE3MSwgMTcyLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3NCwgMTc1LCAwLCAwLCAxNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NywgMTc4LCAxNzksIDE4MCwgMCwgMTgxLCAKLSAgICAxODIsIDE4MywgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDAsIDE4OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTkwLCAxOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5MiwgMTkzLCAxOTQsIAotICAgIDE5NSwgMTk2LCAxOTcsIDE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTk5LCAyMDAsIDIwMSwgMCwgMjAyLCAyMDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE3LCAwLCAwLCAwLCAKLSAgICAyMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMCwgMjIzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNSwgMjI2LCAyMjcsIDAsIAotICAgIDIyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI5LCAyMzAsIDIzMSwgMCwgMjMyLCAwLCAyMzMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDIzNCwgMjM1LCAwLCAwLCAwLCAwLCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMjM4LCAyMzksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDUsIDI0NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNDgsIDI0OSwgMjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTEsIDI1MiwgMjUzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU2LCAyNTcsIDAsIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjU5LCAyNjAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNjYsIDI2NywgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMjcxLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3MywgMjc0LCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzgsIDI3OSwgCi0gICAgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIDI4MiwgMjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyODQsIDI4NSwgMjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OCwgMjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxLCAzMDIsIDMwMywgMCwgMCwgMzA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMDUsIDMwNiwgMzA3LCAwLCAzMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOSwgCi0gICAgMzEwLCAzMTEsIDAsIDMxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEzLCAwLCAzMTQsIDAsIDMxNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjYsIDMyNywgMCwgMzI4LCAzMjksIDAsIDAsIDMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMxLCAwLCAKLSAgICAwLCAzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMywgMzM0LCAwLCAwLCAzMzUsIDAsIDAsIDAsIDMzNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIAotICAgIDM0MiwgMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM0NSwgMzQ2LCAzNDcsIDAsIDM0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ5LCAwLCAwLCAwLCAKLSAgICAzNTAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDM1NCwgMzU1LCAzNTYsIDAsIDM1NywgMCwgCi0gICAgMCwgMzU4LCAzNTksIDAsIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNjIsIDAsIDAsIDM2MywgMzY0LCAwLCAwLCAzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NiwgMzY3LCAwLCAzNjgsIDAsIDAsIAotICAgIDAsIDM2OSwgMCwgMCwgMCwgMCwgMCwgMzcwLCAzNzEsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIDM3NSwgMzc2LCAzNzcsIDM3OCwgMCwgMCwgCi0gICAgMzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAzODAsIDAsIDAsIDM4MSwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAzODMsIAotICAgIDM4NCwgMCwgMCwgMCwgMCwgMCwgMzg1LCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDM5MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzOTIsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDM5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM5OSwgNDAwLCA0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDQsIAotICAgIDQwNSwgNDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIDQxNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgNDE4LCA0MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDQyMywgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NTUsIDQ1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0LCA1LCA2LCA3LCA4LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMCwgMCwgMTEsIDAsIDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMywgCisgICAgMTQsIDE1LCAwLCAwLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE4LCAwLCAxOSwgMjAsIDIxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzIsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNCwgMzUsIDM2LCAwLCAzNywgMzgsIDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MCwgNDEsIDQyLCA0MywgNDQsIAorICAgIDQ1LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCAwLCA0OSwgMCwgNTAsIDUxLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDU0LCAwLCA1NSwgNTYsIDU3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OCwgNTksIDAsIDAsIDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MSwgNjIsIAorICAgIDYzLCAwLCA2NCwgNjUsIDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3MywgNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1LCA3NiwgNzcsIAorICAgIDc4LCA3OSwgODAsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODMsIDg0LCAwLCA4NSwgODYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDg3LCA4OCwgMCwgODksIDkwLCA5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIsIDkzLCA5NCwgCisgICAgOTUsIDk2LCA5NywgOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwMSwgMTAyLCAwLCAwLCAxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDYsIDEwNywgMCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDksIDExMCwgMTExLCAwLCAxMTIsIDAsIDExMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0LCAxMTUsIDExNiwgCisgICAgMTE3LCAxMTgsIDExOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxMjEsIDAsIDEyMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTIzLCAxMjQsIDEyNSwgMCwgMCwgMTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcsIAorICAgIDEyOCwgMCwgMTI5LCAxMzAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCisgICAgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MCwgMTQxLCAxNDIsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDUsIDE0NiwgMCwgMTQ3LCAKKyAgICAxNDgsIDE0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNTcsIDAsIDE1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5LCAwLCAxNjAsIAorICAgIDAsIDE2MSwgMTYyLCAxNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NCwgMCwgMTY1LCAwLCAxNjYsIDE2NywgMTY4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNjksIDE3MCwgMCwgMCwgMTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzIsIAorICAgIDE3MywgMTc0LCAwLCAxNzUsIDE3NiwgMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgCisgICAgMTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODQsIDE4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTMsIDE5NCwgMTk1LCAKKyAgICAwLCAxOTYsIDE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTk4LCAxOTksIDAsIDIwMCwgMjAxLCAyMDIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjEwLCAwLCAwLCAwLCAyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxMiwgMjEzLCAyMTQsIDAsIDIxNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTcsIAorICAgIDIxOCwgMjE5LCAwLCAyMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMSwgMjIyLCAyMjMsIDAsIDIyNCwgMCwgCisgICAgMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjI4LCAwLCAyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzIsIDIzMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMzUsIDAsIDIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjQwLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NSwgCisgICAgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDcsIDAsIDI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MSwgMjUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NCwgMCwgMjU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NywgMCwgCisgICAgMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTksIDI2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2NiwgMCwgMjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDAsIDI2OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyODMsIDAsIDI4NCwgMCwgMjg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODYsIDAsIDI4NywgMCwgCisgICAgMjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODksIDAsIDI5MCwgMCwgMjkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyOTIsIDAsIDI5MywgMCwgMjk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNSwgMzA2LCAwLCAzMDcsIAorICAgIDAsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA5LCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMxMSwgMCwgMCwgMzEyLCAwLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE1LCAwLCAzMTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMCwgMzIxLCAwLCAzMjIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMywgMCwgMCwgMzI0LCAwLCAwLCAwLCAzMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjgsIDMyOSwgMCwgMzMwLCAwLCAwLCAwLCAzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMiwgMCwgMCwgCisgICAgMzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzQsIDAsIDAsIDMzNSwgMCwgMCwgMCwgMzM2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzMzcsIDMzOCwgMCwgMzM5LCAwLCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MSwgMCwgMCwgCisgICAgMzQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM0NCwgMzQ1LCAwLCAzNDYsIDAsIDAsIDAsIDM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMzQ4LCAwLCAwLCAzNDksIAorICAgIDAsIDAsIDAsIDM1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM1MywgMCwgMCwgMCwgMCwgMCwgMCwgMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NiwgMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjEsIDM2MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NSwgMzY2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY5LCAzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNzYsIDM3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MCwgCisgICAgMzgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg0LCAzODUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2LCAzOTcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MDksIDQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDExLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0LCA0MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQxOSwgNDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzMsIDAsIAorICAgIDAsIDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MCwgNDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NDIsIDQ0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDUwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ1OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDQ2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjksIDAsIAotICAgIDQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgNDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDUsIAotICAgIDUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUxOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNywgMCwgMCwgMCwgMCwgMCwgMCwgNTI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MzIsIDUzMywgMCwgMCwgMCwgMCwgMCwgNTM0LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUzNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzOSwgNTQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTQzLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgMCwgMCwgMCwgMCwgMCwgNTQ2LCAKLSAgICA1NDcsIDAsIDAsIDAsIDAsIDAsIDU0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTU4LCAwLCAwLCAwLCAwLCAwLCA1NTksIDAsIDAsIDAsIDAsIDAsIDAsIDU2MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU3MiwgMCwgMCwgMCwgMCwgMCwgNTczLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTc2LCAwLCAwLCAwLCAwLCAwLCA1NzcsIDU3OCwgMCwgMCwgMCwgMCwgMCwgNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUxMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgNTIzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzMsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTM4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODEsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA2MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA2MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgNjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM5LCA2NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDY1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYwLCA2NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjYzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY2NSwgNjY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDY2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjMzLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29tcF9kYXRhW10gPSB7Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgODgwMCwgMCwgMCwgODgxNSwgMCwgMCwgMCwgMTkyLCAxOTMsIAotICAgIDE5NCwgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgCi0gICAgMCwgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAyNjIsIAotICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCi0gICAgMjcwLCAwLCAwLCAwLCAwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAwLCAwLCAwLCAKLSAgICAyMDAsIDIwMSwgMjAyLCA3ODY4LCAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIAotICAgIDAsIDc4NjQsIDAsIDAsIDAsIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCA3NzEwLCAwLCA1MDAsIDI4NCwgMCwgCi0gICAgNzcxMiwgMjg2LCAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIAotICAgIDc3MTgsIDAsIDAsIDAsIDU0MiwgMCwgMCwgMCwgMCwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgCi0gICAgMjA0LCAyMDUsIDIwNiwgMjk2LCAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIAotICAgIDAsIDc4ODIsIDAsIDAsIDAsIDAsIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMzA4LCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0ODgsIDAsIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMCwgMCwgMCwgMzEzLCAwLCAKLSAgICAzMTcsIDAsIDAsIDAsIDAsIDAsIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgMCwgNzc0NiwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgCi0gICAgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDAsIDAsIDAsIAotICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIAotICAgIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCA3NzY0LCA3NzY2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDM0NCwgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgCi0gICAgMCwgMCwgNzc3NCwgMCwgMzQ2LCAzNDgsIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgCi0gICAgNTM2LCAzNTAsIDAsIDAsIDAsIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIAotICAgIDc3OTIsIDAsIDAsIDc3OTAsIDAsIDAsIDAsIDAsIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgCi0gICAgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCAKLSAgICA3Nzk2LCA3ODA0LCAwLCAwLCAwLCAwLCAwLCA3ODA2LCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIAotICAgIDAsIDc4MTYsIDAsIDAsIDAsIDc4MTgsIDc4MjAsIDAsIDAsIDAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIAotICAgIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgNzkyNCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDM4MSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNzgyNiwgMCwgMCwgMCwgMCwgNzgyOCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAKLSAgICAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAKLSAgICAwLCA3NjgzLCAwLCAwLCA3Njg1LCAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgCi0gICAgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDAsIDAsIDAsIDAsIDIzMSwgMCwgMCwgMCwgNzY5MSwgMjcxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCA3Njk1LCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIAotICAgIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgCi0gICAgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCA3NzExLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAKLSAgICAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMjkxLCAwLCAwLCAwLCAyOTMsIDAsIDAsIDAsIDc3MTUsIAotICAgIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgNzcyMywgMCwgCi0gICAgNzgzMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIDUyMSwgNTIzLCAwLCAKLSAgICAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDMwOSwgMCwgMCwgMCwgMCwgNDk2LCAKLSAgICAwLCAwLCAwLCAwLCA3NzI5LCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgNzczMywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzE0LCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgNzc0MSwgMCwgMCwgCi0gICAgNzczOSwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgMCwgMCwgMCwgNTA1LCAzMjQsIDAsIAotICAgIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIDAsIDAsIAotICAgIDc3NTMsIDAsIDAsIDAsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIAotICAgIDQ2NiwgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgNDkxLCAwLCAwLCAwLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCAKLSAgICA3NzY3LCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIAotICAgIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAotICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDAsIDAsIDAsIDI0OSwgMjUwLCAKLSAgICAyNTEsIDM2MSwgMzYzLCAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgCi0gICAgNzkwOSwgNzc5NSwgMCwgMCwgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3ODA5LCA3ODExLCAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIAotICAgIDAsIDAsIDc4MTksIDc4MjEsIDAsIDAsIDAsIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgCi0gICAgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgCi0gICAgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgMCwgMCwgMCwgMCwgODE3MywgOTAxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTI5LCAwLCAKLSAgICAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCAwLCAwLCAwLCAwLCA3ODQ4LCAwLCAwLCA0NzgsIDAsIDAsIDAsIDUwNiwgMCwgMCwgCi0gICAgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDc2ODgsIDAsIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDAsIDAsIDAsIDAsIDc4NzQsIAotICAgIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDAsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIDAsIDAsIDAsIDAsIDc4OTIsIDAsIAotICAgIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCA1MTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDQ3MywgMCwgMCwgMCwgNzg0NywgNzg0NSwgMCwgNzg1MSwgMCwgMCwgCi0gICAgMCwgMCwgNzg0OSwgMCwgMCwgNDc5LCAwLCAwLCAwLCA1MDcsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCA3Njg5LCAKLSAgICAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCAwLCAwLCAwLCAwLCA3ODc1LCAwLCAwLCAwLCA3NzI3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3ODkxLCA3ODg5LCAwLCA3ODk1LCAwLCAwLCAwLCAwLCA3ODkzLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIAotICAgIDc3NTksIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAKLSAgICAwLCA0NzQsIDAsIDAsIDAsIDc4NTYsIDc4NTQsIDAsIDc4NjAsIDAsIDAsIDAsIDAsIDc4NTgsIDAsIDAsIDc4NTcsIDc4NTUsIAotICAgIDAsIDc4NjEsIDAsIDAsIDAsIDAsIDc4NTksIDAsIDAsIDc3MDAsIDc3MDIsIDAsIDAsIDAsIDAsIDAsIDc3MDEsIDc3MDMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDc3ODAsIDAsIDAsIDc3ODEsIDAsIAotICAgIDAsIDc3ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODMsIDAsIDc4MDAsIDAsIDAsIDc4MDEsIDAsIDAsIDAsIDAsIDc4MDIsIAotICAgIDAsIDAsIDc4MDMsIDAsIDAsIDAsIDAsIDAsIDc4MzUsIDAsIDAsIDAsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIDAsIDAsIAotICAgIDAsIDAsIDc5MDIsIDc5MDYsIDAsIDAsIDAsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDAsIDAsIDAsIDAsIDc5MDMsIAotICAgIDAsIDAsIDAsIDAsIDc5MDcsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDAsIDAsIDAsIDAsIDc5MTYsIDAsIDAsIDAsIDAsIAotICAgIDc5MjAsIDAsIDc5MTUsIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDQ5NCwgMCwgCi0gICAgMCwgMCwgNDkyLCAwLCAwLCA0OTMsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCA3NzA4LCAwLCAKLSAgICAwLCA3NzA5LCAwLCA1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgNDk1LCAwLCAwLCAwLCA4MTIyLCA5MDIsIDAsIDAsIAotICAgIDgxMjEsIDgxMjAsIDAsIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDAsIDAsIDAsIDAsIDgxMjQsIDAsIDgxMzYsIDkwNCwgMCwgCi0gICAgMCwgMCwgMCwgNzk2MCwgNzk2MSwgMCwgMCwgMCwgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgMCwgCi0gICAgMCwgMCwgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAwLCAwLCAwLCAwLCA4MTcyLCAwLCAwLCAwLCAKLSAgICA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgMCwgMCwgMCwgODE4NiwgOTExLCAKLSAgICA4MDQwLCA4MDQxLCAwLCAwLCAwLCAwLCAwLCA4MTg4LCAwLCAwLCA4MTE2LCAwLCAwLCA4MTMyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDAsIDAsIDAsIDAsIDgxMTgsIAotICAgIDgxMTUsIDAsIDAsIDAsIDAsIDAsIDgwNTAsIDk0MSwgNzk1MiwgNzk1MywgMCwgMCwgMCwgODA1MiwgOTQyLCAwLCAwLCAwLCAKLSAgICAwLCA3OTY4LCA3OTY5LCAwLCAwLCAwLCAwLCA4MTM0LCA4MTMxLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIAotICAgIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgODE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCAKLSAgICA4MDAwLCA4MDAxLCAwLCA4MTY0LCA4MTY1LCAwLCAwLCAwLCA4MDU4LCA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgODAxNiwgODAxNywgMCwgMCwgMCwgMCwgODE2NiwgMCwgMCwgODA2MCwgOTc0LCAwLCAwLCAwLCAKLSAgICAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCAwLCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgxNTEsIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgODE4MCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5ODAsIDAsIDAsIDEwMzEsIDAsIDAsIDAsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDAsIDAsIDAsIDEwMjcsIDAsIDEwMjQsIAotICAgIDAsIDAsIDAsIDAsIDEyMzgsIDAsIDEwMjUsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDEyNDYsIDAsIDAsIDAsIDEwMzcsIDAsIAotICAgIDAsIDAsIDEyNTAsIDEwNDksIDAsIDEyNTIsIDAsIDAsIDAsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDEyNTQsIDAsIDAsIDAsIAotICAgIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIDEyNjYsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzIsIAotICAgIDAsIDAsIDEyNjAsIDAsIDAsIDAsIDAsIDEyMzMsIDAsIDEyMzUsIDAsIDAsIDAsIDAsIDExMDcsIDAsIDExMDQsIDAsIDAsIAotICAgIDAsIDAsIDEyMzksIDAsIDExMDUsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIDEyNDcsIDAsIDAsIDAsIDExMTcsIDAsIDAsIDAsIAotICAgIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDAsIDAsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDEyNTUsIDAsIDAsIDAsIDEyNjMsIAotICAgIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzMsIDAsIDAsIAotICAgIDEyNjEsIDAsIDAsIDExMTEsIDAsIDAsIDAsIDExNDIsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDEyNDIsIDAsIDAsIAotICAgIDEyNDMsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTksIDAsIDE1NzAsIDE1NzEsIDE1NzMsIDAsIDE1NzIsIAotICAgIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDE3NDcsIDAsIDAsIDE3MjgsIDAsIDAsIDAsIDAsIAotICAgIDIzNDUsIDAsIDAsIDIzNTMsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDI1MDcsIDI1MDgsIDAsIDAsIDAsIDI4OTEsIDI4ODgsIAotICAgIDI4OTIsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIDMwMTksIDAsIDAsIDAsIDAsIDMxNDQsIDAsIDAsIAotICAgIDAsIDAsIDMyNjQsIDAsIDMyNzQsIDMyNzEsIDMyNzIsIDAsIDMyNzUsIDAsIDAsIDAsIDAsIDM0MDIsIDM0MDQsIDAsIAotICAgIDM0MDMsIDAsIDAsIDAsIDAsIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDQxMzQsIDAsIDAsIDAsIDY5MTgsIDAsIDAsIDY5MjAsIDAsIDAsIDY5MjIsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDY5MjYsIDAsIDAsIDY5MzAsIDAsIDAsIDY5NzEsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDY5NzYsIDAsIAotICAgIDAsIDY5NzcsIDAsIDAsIDY5NzksIDAsIDAsIDAsIDc3MzYsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NzIsIAotICAgIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDc3ODQsIDAsIDAsIDc3ODUsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIAotICAgIDAsIDc4NTMsIDAsIDAsIDc4NjMsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDc4NzksIDAsIDAsIDc4OTYsIDAsIDAsIDc4OTcsIAotICAgIDAsIDAsIDAsIDAsIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIAotICAgIDgwNjUsIDAsIDAsIDgwNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDgwNjgsIDAsIDAsIDgwNjksIDAsIDAsIAotICAgIDgwNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNzEsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDc5NDcsIAotICAgIDc5NDksIDAsIDAsIDc5NTEsIDgwNzMsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDgwNzYsIAotICAgIDAsIDAsIDgwNzcsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNzksIDAsIDc5NTQsIDc5NTYsIDAsIDc5NTUsIAotICAgIDc5NTcsIDAsIDAsIDAsIDAsIDAsIDc5NjIsIDc5NjQsIDAsIDAsIDAsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDc5NzAsIAotICAgIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDgwODIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDgwODQsIDAsIDAsIDgwODUsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgwODcsIDAsIDc5NzgsIDc5ODAsIDAsIDAsIDc5ODIsIDgwODgsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIAotICAgIDgwODksIDAsIDAsIDgwOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwOTEsIDAsIDAsIDgwOTIsIDAsIDAsIDgwOTMsIDAsIDAsIAotICAgIDgwOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDgwOTUsIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDc5ODcsIAotICAgIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDc5OTQsIDc5OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDc5OTgsIAotICAgIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDgwMDIsIDgwMDQsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDAsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDgwMTgsIDgwMjAsIDAsIDAsIDgwMjIsIAotICAgIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjcsIDgwMjksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgwMzEsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDgwMzUsIDgwMzcsIDAsIDAsIAotICAgIDgwMzksIDgwOTcsIDAsIDAsIDgwOTgsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDgxMDEsIAotICAgIDAsIDAsIDgxMDIsIDAsIDAsIDgxMDMsIDAsIDAsIDAsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIDAsIAotICAgIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDgxMDYsIDAsIDAsIDgxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgxMDgsIDAsIDAsIDgxMDksIDAsIDAsIDgxMTAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMTQsIDAsIDAsIAotICAgIDgxMzAsIDAsIDAsIDgxNzgsIDAsIDAsIDgxMTksIDAsIDAsIDAsIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIDAsIAotICAgIDAsIDAsIDgxMzUsIDAsIDAsIDgxODMsIDAsIDAsIDAsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgxNTksIDAsIDg2MDIsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDg2NTMsIDAsIDAsIAotICAgIDg2NTUsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDg3MTMsIDAsIDAsIDg3MTYsIDAsIDAsIAotICAgIDg3NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDg3NjksIDAsIDAsIDg3NzIsIDAsIDAsIDg3NzUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg3NzcsIDAsIDAsIDg4MTMsIDAsIDAsIDg4MDIsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDg4MTcsIDAsIDAsIDg4MjAsIDAsIDAsIDg4MjEsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIAotICAgIDg4MzIsIDAsIDAsIDg4MzMsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDg4MzYsIDAsIDAsIAotICAgIDg4MzcsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDg5MzAsIDAsIDAsIDg5MzEsIDAsIDAsIAotICAgIDg4NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDg4NzgsIDAsIDAsIDg4NzksIDAsIDAsIDg5MzgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg5MzksIDAsIDAsIDg5NDAsIDAsIDAsIDg5NDEsIDAsIDAsIDAsIDEyNDM2LCAwLCAwLCAxMjM2NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTIzNjYsIDAsIDAsIDEyMzY4LCAwLCAwLCAxMjM3MCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyMzc0LCAwLCAwLCAxMjM3NiwgMCwgMCwgMTIzNzgsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjM4MiwgMCwgMCwgMTIzODQsIDAsIDAsIDEyMzg2LCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzOTEsIDAsIAotICAgIDAsIDEyMzkzLCAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMCwgMCwgMCwgMTI0MDYsIAotICAgIDEyNDA3LCAwLCAwLCAwLCAwLCAwLCAxMjQwOSwgMTI0MTAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMTI0NDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAxMjQ2MCwgMCwgMCwgMTI0NjIsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjQ2NiwgMCwgMCwgMTI0NjgsIDAsIDAsIDEyNDcwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0NzQsIDAsIAotICAgIDAsIDEyNDc2LCAwLCAwLCAxMjQ3OCwgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAxMjQ4NSwgCi0gICAgMCwgMCwgMTI0ODcsIDAsIDAsIDEyNDg5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNDk5LCAxMjUwMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDAsIDAsIDAsIDEyNTA4LCAKLSAgICAxMjUwOSwgMCwgMCwgMCwgMCwgMCwgMTI1MzUsIDAsIDAsIDEyNTM2LCAwLCAwLCAxMjUzNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI1MzgsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgNjk3ODgsIDAsIDAsIDY5ODAzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODE0LCAwLCAwLCAwLCA4ODAwLCAwLCAwLCAwLCA4ODE1LCAxOTIsIDE5MywgMTk0LCAKKyAgICAxOTUsIDI1NiwgMjU4LCA1NTAsIDE5NiwgNzg0MiwgMTk3LCAwLCA0NjEsIDUxMiwgNTE0LCAwLCAwLCAwLCA3ODQwLCAwLCAKKyAgICA3NjgwLCAwLCAwLCAyNjAsIDAsIDAsIDAsIDc2ODIsIDAsIDAsIDc2ODQsIDAsIDAsIDAsIDAsIDc2ODYsIDAsIDAsIDI2MiwgCisgICAgMjY0LCAwLCAwLCAwLCAyNjYsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMTk5LCAwLCAwLCAwLCAwLCA3NjkwLCAwLCAwLCAwLCAwLCAKKyAgICAyNzAsIDAsIDc2OTIsIDAsIDAsIDAsIDc2OTYsIDAsIDc2OTgsIDAsIDAsIDc2OTQsIDAsIDIwMCwgMjAxLCAyMDIsIDc4NjgsIAorICAgIDI3NCwgMjc2LCAyNzgsIDIwMywgNzg2NiwgMCwgMCwgMjgyLCA1MTYsIDUxOCwgMCwgMCwgMCwgNzg2NCwgMCwgMCwgMCwgCisgICAgNTUyLCAyODAsIDc3MDQsIDAsIDc3MDYsIDAsIDAsIDAsIDAsIDc3MTAsIDAsIDAsIDUwMCwgMjg0LCAwLCA3NzEyLCAyODYsIAorICAgIDI4OCwgMCwgMCwgMCwgMCwgNDg2LCAwLCAyOTAsIDAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgNzcxNCwgNzcxOCwgMCwgMCwgCisgICAgMCwgNTQyLCAwLCA3NzE2LCAwLCAwLCAwLCA3NzIwLCAwLCAwLCA3NzIyLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyOTYsIAorICAgIDI5OCwgMzAwLCAzMDQsIDIwNywgNzg4MCwgMCwgMCwgNDYzLCA1MjAsIDUyMiwgMCwgMCwgMCwgNzg4MiwgMCwgMCwgMCwgMCwgCisgICAgMzAyLCAwLCAwLCA3NzI0LCAwLCAwLCAwLCAwLCAzMDgsIDAsIDAsIDc3MjgsIDAsIDAsIDAsIDAsIDAsIDQ4OCwgMCwgCisgICAgNzczMCwgMCwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCA3NzMyLCAwLCAwLCAzMTMsIDAsIDAsIDAsIDAsIDAsIDMxNywgMCwgCisgICAgNzczNCwgMCwgMCwgMCwgMzE1LCAwLCA3NzQwLCAwLCAwLCA3NzM4LCAwLCAwLCA3NzQyLCAwLCAwLCAwLCAwLCA3NzQ0LCAwLCAKKyAgICAwLCA3NzQ2LCAwLCAwLCA1MDQsIDMyMywgMCwgMjA5LCAwLCAwLCA3NzQ4LCAwLCAwLCAwLCAwLCAzMjcsIDAsIDc3NTAsIDAsIAorICAgIDAsIDAsIDMyNSwgMCwgNzc1NCwgMCwgMCwgNzc1MiwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAzMzIsIDMzNCwgNTU4LCAKKyAgICAyMTQsIDc4ODYsIDAsIDMzNiwgNDY1LCA1MjQsIDUyNiwgMCwgMCwgNDE2LCA3ODg0LCAwLCAwLCAwLCAwLCA0OTAsIDAsIDAsIAorICAgIDc3NjQsIDAsIDAsIDAsIDAsIDc3NjYsIDAsIDAsIDM0MCwgMCwgMCwgMCwgMCwgNzc2OCwgMCwgMCwgMCwgMCwgMzQ0LCAKKyAgICA1MjgsIDUzMCwgMCwgMCwgMCwgNzc3MCwgMCwgMCwgMCwgMzQyLCAwLCAwLCAwLCAwLCA3Nzc0LCAwLCAwLCAzNDYsIDM0OCwgCisgICAgMCwgMCwgMCwgNzc3NiwgMCwgMCwgMCwgMCwgMzUyLCAwLCA3Nzc4LCAwLCAwLCA1MzYsIDM1MCwgMCwgMCwgMCwgMCwgCisgICAgNzc4NiwgMCwgMCwgMCwgMCwgMzU2LCAwLCA3Nzg4LCAwLCAwLCA1MzgsIDM1NCwgMCwgNzc5MiwgMCwgMCwgNzc5MCwgMCwgCisgICAgMjE3LCAyMTgsIDIxOSwgMzYwLCAzNjIsIDM2NCwgMCwgMjIwLCA3OTEwLCAzNjYsIDM2OCwgNDY3LCA1MzIsIDUzNCwgMCwgCisgICAgMCwgNDMxLCA3OTA4LCA3Nzk0LCAwLCAwLCAwLCAzNzAsIDc3OTgsIDAsIDc3OTYsIDAsIDAsIDAsIDAsIDAsIDc4MDQsIDAsIAorICAgIDc4MDYsIDAsIDAsIDc4MDgsIDc4MTAsIDM3MiwgMCwgMCwgMCwgNzgxNCwgNzgxMiwgMCwgNzgxNiwgMCwgMCwgMCwgMCwgCisgICAgNzgxOCwgNzgyMCwgNzkyMiwgMjIxLCAzNzQsIDc5MjgsIDU2MiwgMCwgNzgyMiwgMzc2LCA3OTI2LCAwLCAwLCAwLCAwLCAKKyAgICA3OTI0LCAwLCAwLCAwLCAzNzcsIDc4MjQsIDAsIDAsIDAsIDM3OSwgMCwgMCwgMCwgMCwgMzgxLCAwLCA3ODI2LCAwLCAwLCAKKyAgICAwLCAwLCA3ODI4LCAwLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDI1NywgMjU5LCA1NTEsIDIyOCwgNzg0MywgMjI5LCAwLCA0NjIsIAorICAgIDUxMywgNTE1LCAwLCAwLCAwLCA3ODQxLCAwLCA3NjgxLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDc2ODMsIDAsIDAsIDc2ODUsIAorICAgIDAsIDAsIDAsIDAsIDc2ODcsIDAsIDAsIDI2MywgMjY1LCAwLCAwLCAwLCAyNjcsIDAsIDAsIDAsIDAsIDI2OSwgMCwgMjMxLCAKKyAgICAwLCAwLCAwLCAwLCA3NjkxLCAwLCAwLCAwLCAwLCAyNzEsIDAsIDc2OTMsIDAsIDAsIDAsIDc2OTcsIDAsIDc2OTksIDAsIDAsIAorICAgIDc2OTUsIDAsIDIzMiwgMjMzLCAyMzQsIDc4NjksIDI3NSwgMjc3LCAyNzksIDIzNSwgNzg2NywgMCwgMCwgMjgzLCA1MTcsIAorICAgIDUxOSwgMCwgMCwgMCwgNzg2NSwgMCwgMCwgMCwgNTUzLCAyODEsIDc3MDUsIDAsIDc3MDcsIDAsIDAsIDAsIDAsIDc3MTEsIAorICAgIDAsIDAsIDUwMSwgMjg1LCAwLCA3NzEzLCAyODcsIDI4OSwgMCwgMCwgMCwgMCwgNDg3LCAwLCAyOTEsIDAsIDAsIDAsIDAsIAorICAgIDI5MywgMCwgMCwgMCwgNzcxNSwgNzcxOSwgMCwgMCwgMCwgNTQzLCAwLCA3NzE3LCAwLCAwLCAwLCA3NzIxLCAwLCAwLCAKKyAgICA3NzIzLCAwLCA3ODMwLCAwLCAyMzYsIDIzNywgMjM4LCAyOTcsIDI5OSwgMzAxLCAwLCAyMzksIDc4ODEsIDAsIDAsIDQ2NCwgCisgICAgNTIxLCA1MjMsIDAsIDAsIDAsIDc4ODMsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgNzcyNSwgMCwgMCwgMCwgMCwgMzA5LCAwLCAKKyAgICAwLCAwLCAwLCA0OTYsIDAsIDc3MjksIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgNzczMSwgMCwgMCwgMCwgMzExLCAwLCAwLCAKKyAgICAwLCAwLCA3NzMzLCAwLCAwLCAzMTQsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMCwgNzczNSwgMCwgMCwgMCwgMzE2LCAwLCAKKyAgICA3NzQxLCAwLCAwLCA3NzM5LCAwLCAwLCA3NzQzLCAwLCAwLCAwLCAwLCA3NzQ1LCAwLCAwLCA3NzQ3LCAwLCAwLCA1MDUsIAorICAgIDMyNCwgMCwgMjQxLCAwLCAwLCA3NzQ5LCAwLCAwLCAwLCAwLCAzMjgsIDAsIDc3NTEsIDAsIDAsIDAsIDMyNiwgMCwgNzc1NSwgCisgICAgMCwgMCwgNzc1MywgMCwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAzMzMsIDMzNSwgNTU5LCAyNDYsIDc4ODcsIDAsIDMzNywgNDY2LCAKKyAgICA1MjUsIDUyNywgMCwgMCwgNDE3LCA3ODg1LCAwLCAwLCAwLCAwLCA0OTEsIDAsIDAsIDc3NjUsIDAsIDAsIDAsIDAsIDc3NjcsIAorICAgIDAsIDAsIDM0MSwgMCwgMCwgMCwgMCwgNzc2OSwgMCwgMCwgMCwgMCwgMzQ1LCA1MjksIDUzMSwgMCwgMCwgMCwgNzc3MSwgMCwgCisgICAgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCA3Nzc1LCAwLCAwLCAzNDcsIDM0OSwgMCwgMCwgMCwgNzc3NywgMCwgMCwgMCwgMCwgCisgICAgMzUzLCAwLCA3Nzc5LCAwLCAwLCA1MzcsIDM1MSwgMCwgMCwgMCwgMCwgNzc4NywgNzgzMSwgMCwgMCwgMCwgMzU3LCAwLCAKKyAgICA3Nzg5LCAwLCAwLCA1MzksIDM1NSwgMCwgNzc5MywgMCwgMCwgNzc5MSwgMCwgMjQ5LCAyNTAsIDI1MSwgMzYxLCAzNjMsIAorICAgIDM2NSwgMCwgMjUyLCA3OTExLCAzNjcsIDM2OSwgNDY4LCA1MzMsIDUzNSwgMCwgMCwgNDMyLCA3OTA5LCA3Nzk1LCAwLCAwLCAKKyAgICAwLCAzNzEsIDc3OTksIDAsIDc3OTcsIDAsIDAsIDAsIDAsIDAsIDc4MDUsIDAsIDc4MDcsIDAsIDAsIDc4MDksIDc4MTEsIAorICAgIDM3MywgMCwgMCwgMCwgNzgxNSwgNzgxMywgMCwgNzgzMiwgMCwgMCwgMCwgNzgxNywgMCwgMCwgMCwgMCwgNzgxOSwgNzgyMSwgCisgICAgNzkyMywgMjUzLCAzNzUsIDc5MjksIDU2MywgMCwgNzgyMywgMjU1LCA3OTI3LCA3ODMzLCAwLCAwLCAwLCA3OTI1LCAwLCAwLCAKKyAgICAwLCAzNzgsIDc4MjUsIDAsIDAsIDAsIDM4MCwgMCwgMCwgMCwgMCwgMzgyLCAwLCA3ODI3LCAwLCAwLCAwLCAwLCA3ODI5LCAKKyAgICAwLCA4MTczLCA5MDEsIDAsIDAsIDgxMjksIDAsIDAsIDAsIDc4NDYsIDc4NDQsIDAsIDc4NTAsIDc4NDgsIDAsIDAsIDAsIAorICAgIDQ3OCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCA1MDgsIDAsIDAsIDQ4MiwgMCwgMCwgMCwgMCwgNzY4OCwgMCwgMCwgCisgICAgNzg3MiwgNzg3MCwgMCwgNzg3NiwgNzg3NCwgMCwgMCwgMCwgMCwgNzcyNiwgMCwgMCwgNzg5MCwgNzg4OCwgMCwgNzg5NCwgCisgICAgNzg5MiwgMCwgMCwgMCwgMCwgNzc1NiwgMCwgMCwgNTU2LCAwLCAwLCA3NzU4LCA1NTQsIDAsIDAsIDAsIDAsIDUxMCwgMCwgCisgICAgMCwgNDc1LCA0NzEsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCA3ODQ3LCA3ODQ1LCAwLCA3ODUxLCA3ODQ5LCAKKyAgICAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgNTA5LCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDc2ODksIAorICAgIDAsIDAsIDc4NzMsIDc4NzEsIDAsIDc4NzcsIDc4NzUsIDAsIDAsIDAsIDAsIDc3MjcsIDAsIDAsIDc4OTEsIDc4ODksIDAsIAorICAgIDc4OTUsIDc4OTMsIDAsIDAsIDAsIDAsIDc3NTcsIDAsIDAsIDU1NywgMCwgMCwgNzc1OSwgNTU1LCAwLCAwLCAwLCAwLCAKKyAgICA1MTEsIDAsIDAsIDQ3NiwgNDcyLCAwLCAwLCA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NCwgNzg1NiwgNzg1NCwgMCwgCisgICAgNzg2MCwgNzg1OCwgMCwgMCwgMCwgNzg1NywgNzg1NSwgMCwgNzg2MSwgNzg1OSwgMCwgMCwgMCwgNzcwMCwgNzcwMiwgMCwgCisgICAgMCwgNzcwMSwgNzcwMywgMCwgMCwgNzc2MCwgNzc2MiwgMCwgMCwgNzc2MSwgNzc2MywgMCwgMCwgMCwgMCwgNzc4MCwgMCwgCisgICAgMCwgMCwgNzc4MSwgMCwgMCwgMCwgNzc4MiwgMCwgMCwgMCwgNzc4MywgMCwgMCwgNzgwMCwgMCwgMCwgMCwgNzgwMSwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzgwMiwgMCwgMCwgMCwgNzgwMywgMCwgMCwgNzgzNSwgMCwgNzkwMCwgNzg5OCwgMCwgNzkwNCwgCisgICAgNzkwMiwgMCwgMCwgMCwgMCwgNzkwNiwgMCwgMCwgNzkwMSwgNzg5OSwgMCwgNzkwNSwgNzkwMywgMCwgMCwgMCwgMCwgCisgICAgNzkwNywgMCwgMCwgNzkxNCwgNzkxMiwgMCwgNzkxOCwgNzkxNiwgMCwgMCwgMCwgMCwgNzkyMCwgMCwgMCwgNzkxNSwgCisgICAgNzkxMywgMCwgNzkxOSwgNzkxNywgMCwgMCwgMCwgMCwgNzkyMSwgMCwgMCwgMCwgMCwgMCwgNDk0LCA0OTIsIDAsIDAsIDAsIAorICAgIDQ5MywgMCwgMCwgMCwgNDgwLCAwLCAwLCAwLCA0ODEsIDAsIDAsIDAsIDAsIDc3MDgsIDAsIDAsIDAsIDc3MDksIDAsIDAsIAorICAgIDU2MCwgMCwgMCwgMCwgNTYxLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTUsIDgxMjIsIDkwMiwgMCwgMCwgODEyMSwgODEyMCwgMCwgCisgICAgMCwgMCwgMCwgNzk0NCwgNzk0NSwgMCwgODEyNCwgMCwgMCwgODEzNiwgOTA0LCAwLCAwLCAwLCAwLCA3OTYwLCA3OTYxLCAKKyAgICA4MTM4LCA5MDUsIDAsIDAsIDAsIDAsIDc5NzYsIDc5NzcsIDAsIDgxNDAsIDAsIDAsIDgxNTQsIDkwNiwgMCwgMCwgODE1MywgCisgICAgODE1MiwgMCwgOTM4LCAwLCAwLCA3OTkyLCA3OTkzLCA4MTg0LCA5MDgsIDAsIDAsIDAsIDAsIDgwMDgsIDgwMDksIDAsIDAsIAorICAgIDAsIDgxNzIsIDgxNzAsIDkxMCwgMCwgMCwgODE2OSwgODE2OCwgMCwgOTM5LCAwLCAwLCAwLCA4MDI1LCA4MTg2LCA5MTEsIAorICAgIDAsIDAsIDAsIDAsIDgwNDAsIDgwNDEsIDAsIDgxODgsIDAsIDAsIDAsIDgxMTYsIDAsIDAsIDAsIDgxMzIsIDAsIDAsIAorICAgIDgwNDgsIDk0MCwgMCwgMCwgODExMywgODExMiwgMCwgMCwgMCwgMCwgNzkzNiwgNzkzNywgODExOCwgODExNSwgMCwgMCwgCisgICAgODA1MCwgOTQxLCAwLCAwLCAwLCAwLCA3OTUyLCA3OTUzLCA4MDUyLCA5NDIsIDAsIDAsIDAsIDAsIDc5NjgsIDc5NjksIAorICAgIDgxMzQsIDgxMzEsIDAsIDAsIDgwNTQsIDk0MywgMCwgMCwgODE0NSwgODE0NCwgMCwgOTcwLCAwLCAwLCA3OTg0LCA3OTg1LCAKKyAgICA4MTUwLCAwLCAwLCAwLCA4MDU2LCA5NzIsIDAsIDAsIDAsIDAsIDgwMDAsIDgwMDEsIDAsIDAsIDgxNjQsIDgxNjUsIDgwNTgsIAorICAgIDk3MywgMCwgMCwgODE2MSwgODE2MCwgMCwgOTcxLCAwLCAwLCA4MDE2LCA4MDE3LCA4MTY2LCAwLCAwLCAwLCA4MDYwLCAKKyAgICA5NzQsIDAsIDAsIDAsIDAsIDgwMzIsIDgwMzMsIDgxODIsIDgxNzksIDAsIDAsIDgxNDYsIDkxMiwgMCwgMCwgODE1MSwgMCwgCisgICAgMCwgMCwgODE2MiwgOTQ0LCAwLCAwLCA4MTY3LCAwLCAwLCAwLCAwLCA4MTgwLCAwLCAwLCAwLCA5NzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDk4MCwgMCwgMCwgMCwgMTAzMSwgMCwgMTIzMiwgMCwgMTIzNCwgMCwgMTAyNywgMCwgMCwgMTAyNCwgMCwgMCwgMCwgMCwgCisgICAgMTIzOCwgMCwgMTAyNSwgMCwgMTIxNywgMCwgMTI0NCwgMCwgMCwgMCwgMTI0NiwgMTAzNywgMCwgMCwgMCwgMTI1MCwgCisgICAgMTA0OSwgMCwgMTI1MiwgMCwgMTAzNiwgMCwgMCwgMCwgMCwgMCwgMTI1NCwgMTI2MiwgMTAzOCwgMCwgMTI2NCwgMCwgMCwgCisgICAgMTI2NiwgMCwgMCwgMCwgMCwgMTI2OCwgMCwgMCwgMCwgMTI3MiwgMCwgMCwgMCwgMTI2MCwgMCwgMTIzMywgMCwgMTIzNSwgCisgICAgMCwgMTEwNywgMCwgMCwgMTEwNCwgMCwgMCwgMCwgMCwgMTIzOSwgMCwgMTEwNSwgMCwgMTIxOCwgMCwgMTI0NSwgMCwgMCwgCisgICAgMCwgMTI0NywgMTExNywgMCwgMCwgMCwgMTI1MSwgMTA4MSwgMCwgMTI1MywgMCwgMTExNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI1NSwgMTI2MywgMTExOCwgMCwgMTI2NSwgMCwgMCwgMTI2NywgMCwgMCwgMCwgMCwgMTI2OSwgMCwgMCwgMCwgMTI3MywgCisgICAgMCwgMCwgMCwgMTI2MSwgMCwgMCwgMCwgMTExMSwgMTE0MiwgMCwgMCwgMCwgMTE0MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI0MiwgMCwgMCwgMCwgMTI0MywgMCwgMCwgMCwgMTI1OCwgMCwgMCwgMCwgMTI1OSwgMCwgMCwgMTU3MCwgMTU3MSwgCisgICAgMTU3MywgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MiwgMCwgMCwgMCwgMTU3NCwgMCwgMCwgMCwgMTczMCwgMCwgMCwgMCwgCisgICAgMTc0NywgMCwgMCwgMCwgMTcyOCwgMCwgMjM0NSwgMCwgMCwgMCwgMjM1MywgMCwgMCwgMCwgMjM1NiwgMCwgMCwgMCwgMCwgCisgICAgMjUwNywgMjUwOCwgMjg5MSwgMjg4OCwgMjg5MiwgMCwgMjk2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxOCwgMzAyMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzAxOSwgMCwgMzE0NCwgMCwgMCwgMCwgMCwgMCwgMzI2NCwgMCwgMCwgMzI3NCwgMzI3MSwgCisgICAgMzI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3NSwgMCwgMzQwMiwgMzQwNCwgMCwgMCwgMzQwMywgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU0NiwgMzU0OCwgMzU1MCwgMCwgMCwgMCwgMCwgMCwgMzU0OSwgMCwgMCwgNDEzNCwgMCwgMCwgMCwgMCwgNjkxOCwgMCwgCisgICAgMCwgMCwgNjkyMCwgMCwgMCwgMCwgNjkyMiwgMCwgMCwgMCwgNjkyNCwgMCwgMCwgMCwgNjkyNiwgMCwgMCwgMCwgNjkzMCwgCisgICAgMCwgMCwgMCwgNjk3MSwgMCwgMCwgMCwgNjk3MywgMCwgMCwgMCwgNjk3NiwgMCwgMCwgMCwgNjk3NywgMCwgMCwgMCwgCisgICAgNjk3OSwgNzczNiwgMCwgMCwgMCwgNzczNywgMCwgMCwgMCwgNzc3MiwgMCwgMCwgMCwgNzc3MywgMCwgMCwgMCwgMCwgMCwgCisgICAgNzc4NCwgMCwgMCwgMCwgNzc4NSwgMCwgMCwgMCwgNzg1MiwgMCwgMCwgNzg2MiwgMCwgMCwgMCwgMCwgNzg1MywgMCwgMCwgCisgICAgNzg2MywgMCwgMCwgMCwgMCwgNzg3OCwgMCwgMCwgMCwgNzg3OSwgMCwgMCwgMCwgNzg5NiwgMCwgMCwgMCwgNzg5NywgMCwgCisgICAgNzkzOCwgNzk0MCwgMCwgMCwgNzk0MiwgODA2NCwgMCwgMCwgNzkzOSwgNzk0MSwgMCwgMCwgNzk0MywgODA2NSwgMCwgMCwgCisgICAgMCwgODA2NiwgMCwgMCwgMCwgODA2NywgMCwgMCwgMCwgODA2OCwgMCwgMCwgMCwgODA2OSwgMCwgMCwgMCwgODA3MCwgMCwgCisgICAgMCwgMCwgODA3MSwgMCwgMCwgNzk0NiwgNzk0OCwgMCwgMCwgNzk1MCwgODA3MiwgMCwgMCwgNzk0NywgNzk0OSwgMCwgMCwgCisgICAgNzk1MSwgODA3MywgMCwgMCwgMCwgODA3NCwgMCwgMCwgMCwgODA3NSwgMCwgMCwgMCwgODA3NiwgMCwgMCwgMCwgODA3NywgCisgICAgMCwgMCwgMCwgODA3OCwgMCwgMCwgMCwgODA3OSwgMCwgMCwgNzk1NCwgNzk1NiwgMCwgMCwgNzk1NSwgNzk1NywgMCwgMCwgCisgICAgNzk2MiwgNzk2NCwgMCwgMCwgNzk2MywgNzk2NSwgMCwgMCwgNzk3MCwgNzk3MiwgMCwgMCwgNzk3NCwgODA4MCwgMCwgMCwgCisgICAgNzk3MSwgNzk3MywgMCwgMCwgNzk3NSwgODA4MSwgMCwgMCwgMCwgODA4MiwgMCwgMCwgMCwgODA4MywgMCwgMCwgMCwgCisgICAgODA4NCwgMCwgMCwgMCwgODA4NSwgMCwgMCwgMCwgODA4NiwgMCwgMCwgMCwgODA4NywgMCwgMCwgNzk3OCwgNzk4MCwgMCwgCisgICAgMCwgNzk4MiwgODA4OCwgMCwgMCwgNzk3OSwgNzk4MSwgMCwgMCwgNzk4MywgODA4OSwgMCwgMCwgMCwgODA5MCwgMCwgMCwgCisgICAgMCwgODA5MSwgMCwgMCwgMCwgODA5MiwgMCwgMCwgMCwgODA5MywgMCwgMCwgMCwgODA5NCwgMCwgMCwgMCwgODA5NSwgMCwgCisgICAgMCwgNzk4NiwgNzk4OCwgMCwgMCwgNzk5MCwgMCwgMCwgMCwgNzk4NywgNzk4OSwgMCwgMCwgNzk5MSwgMCwgMCwgMCwgCisgICAgNzk5NCwgNzk5NiwgMCwgMCwgNzk5OCwgMCwgMCwgMCwgNzk5NSwgNzk5NywgMCwgMCwgNzk5OSwgMCwgMCwgMCwgODAwMiwgCisgICAgODAwNCwgMCwgMCwgODAwMywgODAwNSwgMCwgMCwgODAxMCwgODAxMiwgMCwgMCwgODAxMSwgODAxMywgMCwgMCwgODAxOCwgCisgICAgODAyMCwgMCwgMCwgODAyMiwgMCwgMCwgMCwgODAxOSwgODAyMSwgMCwgMCwgODAyMywgMCwgMCwgMCwgODAyNywgODAyOSwgCisgICAgMCwgMCwgODAzMSwgMCwgMCwgMCwgODAzNCwgODAzNiwgMCwgMCwgODAzOCwgODA5NiwgMCwgMCwgODAzNSwgODAzNywgMCwgCisgICAgMCwgODAzOSwgODA5NywgMCwgMCwgMCwgODA5OCwgMCwgMCwgMCwgODA5OSwgMCwgMCwgMCwgODEwMCwgMCwgMCwgMCwgCisgICAgODEwMSwgMCwgMCwgMCwgODEwMiwgMCwgMCwgMCwgODEwMywgMCwgMCwgODA0MiwgODA0NCwgMCwgMCwgODA0NiwgODEwNCwgCisgICAgMCwgMCwgODA0MywgODA0NSwgMCwgMCwgODA0NywgODEwNSwgMCwgMCwgMCwgODEwNiwgMCwgMCwgMCwgODEwNywgMCwgMCwgCisgICAgMCwgODEwOCwgMCwgMCwgMCwgODEwOSwgMCwgMCwgMCwgODExMCwgMCwgMCwgMCwgODExMSwgMCwgMCwgMCwgODExNCwgMCwgCisgICAgMCwgMCwgODEzMCwgMCwgMCwgMCwgODE3OCwgMCwgMCwgMCwgODExOSwgMCwgMCwgODE0MSwgODE0MiwgMCwgMCwgODE0MywgCisgICAgMCwgMCwgMCwgMCwgODEzNSwgMCwgMCwgMCwgODE4MywgMCwgMCwgODE1NywgODE1OCwgMCwgMCwgODE1OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODYwMiwgMCwgMCwgMCwgODYwMywgMCwgMCwgMCwgODYyMiwgMCwgMCwgMCwgODY1MywgMCwgMCwgMCwgCisgICAgODY1NSwgMCwgMCwgMCwgODY1NCwgMCwgMCwgMCwgODcwOCwgMCwgMCwgMCwgODcxMywgMCwgMCwgMCwgODcxNiwgMCwgMCwgCisgICAgMCwgODc0MCwgMCwgMCwgMCwgODc0MiwgMCwgMCwgMCwgODc2OSwgMCwgMCwgMCwgODc3MiwgMCwgMCwgMCwgODc3NSwgMCwgCisgICAgMCwgMCwgODc3NywgMCwgMCwgMCwgODgxMywgMCwgMCwgMCwgODgwMiwgMCwgMCwgMCwgODgxNiwgMCwgMCwgMCwgODgxNywgCisgICAgMCwgMCwgMCwgODgyMCwgMCwgMCwgMCwgODgyMSwgMCwgMCwgMCwgODgyNCwgMCwgMCwgMCwgODgyNSwgMCwgMCwgMCwgCisgICAgODgzMiwgMCwgMCwgMCwgODgzMywgMCwgMCwgMCwgODkyOCwgMCwgMCwgMCwgODkyOSwgMCwgMCwgMCwgODgzNiwgMCwgMCwgCisgICAgMCwgODgzNywgMCwgMCwgMCwgODg0MCwgMCwgMCwgMCwgODg0MSwgMCwgMCwgMCwgODkzMCwgMCwgMCwgMCwgODkzMSwgMCwgCisgICAgMCwgMCwgODg3NiwgMCwgMCwgMCwgODg3NywgMCwgMCwgMCwgODg3OCwgMCwgMCwgMCwgODg3OSwgMCwgMCwgMCwgODkzOCwgCisgICAgMCwgMCwgMCwgODkzOSwgMCwgMCwgMCwgODk0MCwgMCwgMCwgMCwgODk0MSwgMTI0MzYsIDAsIDAsIDAsIDEyMzY0LCAwLCAwLCAKKyAgICAwLCAxMjM2NiwgMCwgMCwgMCwgMTIzNjgsIDAsIDAsIDAsIDEyMzcwLCAwLCAwLCAwLCAxMjM3MiwgMCwgMCwgMCwgMTIzNzQsIAorICAgIDAsIDAsIDAsIDEyMzc2LCAwLCAwLCAwLCAxMjM3OCwgMCwgMCwgMCwgMTIzODAsIDAsIDAsIDAsIDEyMzgyLCAwLCAwLCAwLCAKKyAgICAxMjM4NCwgMCwgMCwgMCwgMTIzODYsIDAsIDAsIDAsIDEyMzg5LCAwLCAwLCAwLCAxMjM5MSwgMCwgMCwgMCwgMTIzOTMsIDAsIAorICAgIDAsIDAsIDEyNDAwLCAxMjQwMSwgMCwgMCwgMTI0MDMsIDEyNDA0LCAwLCAwLCAxMjQwNiwgMTI0MDcsIDAsIDAsIDEyNDA5LCAKKyAgICAxMjQxMCwgMCwgMCwgMTI0MTIsIDEyNDEzLCAwLCAwLCAxMjQ0NiwgMCwgMCwgMCwgMTI1MzIsIDAsIDAsIDAsIDEyNDYwLCAKKyAgICAwLCAwLCAwLCAxMjQ2MiwgMCwgMCwgMCwgMTI0NjQsIDAsIDAsIDAsIDEyNDY2LCAwLCAwLCAwLCAxMjQ2OCwgMCwgMCwgMCwgCisgICAgMTI0NzAsIDAsIDAsIDAsIDEyNDcyLCAwLCAwLCAwLCAxMjQ3NCwgMCwgMCwgMCwgMTI0NzYsIDAsIDAsIDAsIDEyNDc4LCAwLCAKKyAgICAwLCAwLCAxMjQ4MCwgMCwgMCwgMCwgMTI0ODIsIDAsIDAsIDAsIDEyNDg1LCAwLCAwLCAwLCAxMjQ4NywgMCwgMCwgMCwgCisgICAgMTI0ODksIDAsIDAsIDAsIDEyNDk2LCAxMjQ5NywgMCwgMCwgMTI0OTksIDEyNTAwLCAwLCAwLCAxMjUwMiwgMTI1MDMsIDAsIAorICAgIDAsIDEyNTA1LCAxMjUwNiwgMCwgMCwgMTI1MDgsIDEyNTA5LCAwLCAwLCAxMjUzNSwgMCwgMCwgMCwgMTI1MzYsIDAsIDAsIAorICAgIDAsIDEyNTM3LCAwLCAwLCAwLCAxMjUzOCwgMCwgMCwgMCwgMTI1NDIsIDAsIDAsIDAsIDAsIDAsIDY5Nzg2LCAwLCAwLCAwLCAKKyAgICA2OTc4OCwgMCwgMCwgMCwgNjk4MDMsIDAsIDAsIDAsIDAsIDY5OTM0LCAwLCAwLCAwLCA2OTkzNSwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCiAJeyAxMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMzAsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCiAJeyAxOSwgMjEsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMiwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMywgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMSwgMjU1LCAwIH0sCiAJeyAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI5LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDAgfSwKIAl7IDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKQEAgLTUwNTgsNyArNTE3Nyw3IEBACiAJeyAyNTUsIDcsIDcsIDI1NSwgMCB9LAogCXsgMjU1LCA3LCA4LCAyNTUsIDAgfSwKIAl7IDI1NSwgNywgOSwgMjU1LCAwIH0sCi0JeyAyNTUsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTUsIDE0LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MDcwLDEyICs1MTg5LDEyIEBACiAJeyAyNTUsIDI1NSwgNywgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgOCwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgOSwgMjU1LCAwIH0sCi0JeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAogCXsgMTksIDMwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjMsIDI1NSwgMjU1LCAwIH0sCiAJeyA5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjAsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCiAJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCkBAIC01MDg0LDc0ICs1MjAzLDc0IEBACiAJeyAxLCAyNTUsIDI1NSwgMCwgMCB9LAogfTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfaW5kZXhbXSA9IHsKLSAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDIsIDE1LCAxNiwgMTcsIAotICAgIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDIsIDIsIDIsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAKLSAgICAzNCwgMiwgMiwgMiwgMzUsIDM2LCAyLCAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCAKLSAgICA0OSwgMiwgNTAsIDIsIDIsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMiwgMiwgNTYsIDU3LCA1OCwgMiwgMiwgNTksIDYwLCA2MSwgCi0gICAgNjIsIDYzLCA2MywgMiwgMiwgMiwgMiwgNjQsIDIsIDY1LCA2NiwgNjcsIDY4LCA2OSwgMiwgMiwgMiwgMiwgNzAsIDcxLCAKLSAgICA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgMiwgMiwgMiwgMiwgMiwgMiwgNzksIDIsIDIsIDIsIDIsIDIsIDgwLCAyLCAKKyAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAKKyAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyLCAyLCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAorICAgIDM2LCAyLCAyLCAyLCAzNywgMzgsIDIsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIAorICAgIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCAyLCA1OCwgNTksIDYwLCAyLCAyLCA2MSwgNjIsIDYzLCAKKyAgICA2NCwgNjUsIDY1LCAyLCAyLCAyLCAyLCA2NiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCAyLCAyLCAyLCA3MiwgNzMsIDc0LCAKKyAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgMiwgMiwgMiwgMiwgMiwgMiwgODIsIDIsIDIsIDIsIDIsIDIsIDgzLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MSwgMiwgODIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgzLCAKLSAgICA4NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCA4NywgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgCisgICAgODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OSwgOTAsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODksIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCA0OCwgNDgsIAotICAgIDk0LCA5NSwgNDgsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTA1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDUwLCA1MCwgCisgICAgOTcsIDk4LCA1MCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAyLCAyLCAyLCAxMTIsIDExMywgMiwgMTE0LCAxMTUsIAotICAgIDExNiwgMTE3LCAxMTgsIDExOSwgMiwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDIsIDIsIDIsIDIsIDIsIDIsIDEyNSwgMiwgCi0gICAgMTI2LCAyLCAxMjcsIDIsIDEyOCwgMiwgMTI5LCAyLCAyLCAyLCAxMzAsIDIsIDIsIDIsIDEzMSwgMTMyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzMsIDIsIDEzNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwOCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMiwgMiwgMiwgMTE1LCAxMTYsIDIsIDExNywgMTE4LCAKKyAgICAxMTksIDEyMCwgMTIxLCAxMjIsIDIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjgsIDIsIAorICAgIDEyOSwgMTMwLCAxMzEsIDIsIDEzMiwgMiwgMTMzLCAyLCAyLCAyLCAxMzQsIDIsIDIsIDIsIDEzNSwgMTM2LCAxMzcsIDEzOCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNDAsIDIsIDE0MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCAxNDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDE0NCwgMTQ1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMzcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMTM4LCAyLCAxMzksIDIsIDE0MCwgMiwgMiwgMTQxLCAyLCAyLCAyLCAxNDIsIDE0MywgMTQ0LCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDUsIAotICAgIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMiwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxMzksIDE1NywgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTU4LCAxNTksIDkwLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA3OSwgMTYwLCAyLCAxNjEsIDE2MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ3LCAyLCAxNDgsIDIsIDE0OSwgMiwgMiwgMTUwLCAyLCAyLCAyLCAxNTEsIDE1MiwgCisgICAgMTUzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNTQsIDE1NSwgCisgICAgMiwgMiwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDIsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTQ4LCAKKyAgICAxNjgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OSwgMTcwLCA5MywgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODIsIDE3MSwgMiwgMTcyLCAxNzMsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2MywgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMTY0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NCwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzYsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2NywgNDgsIDE2OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzgsIDUwLCAxNzksIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2MywgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTUzODYsNyArNTUwNSw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDE2OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01NDUwLDcgKzU1NjksNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC01NDYwLDggKzU1NzksOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIAorICAgIDAsIDAsIDQsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDYsIDcsIDAsIDAsIDMsIDAsIDAsIDgsIDQsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDQsIDUsIDAsIDAsIDAsIDAsIDAsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTQ3MCw4NDggKzU1OTAsOTA2IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDEwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDEwLCAwLCA5LCA5LCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA5LCAwLCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyLCAxMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUsIDE2LCAxNywgMTgsIDE5LCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAKLSAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMiwgMjMsIAorICAgIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDgsIDAsIAotICAgIDAsIDM2LCAzNywgMzgsIDM5LCA0MCwgNDEsIDEsIDEsIDAsIDAsIDAsIDgsIDM1LCA2LCA0LCA1LCAzNiwgMzcsIDM4LCAzOSwgCi0gICAgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCA0LCAwLCAwLCAzNywgMzgsIDM5LCA0MCwgCisgICAgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCA0LCAzNiwgOCwgNiwgNywgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDUsIDQ2LCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIAorICAgIDQ2LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDAsIDcsIDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDEsIDEsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzLCAxMywgMTMsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAKKyAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgNywgMCwgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDAsIDcsIDAsIDcsIDAsIDcsIDAsIDcsIAotICAgIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgCisgICAgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MzE5LDI1ICs2NDk3LDI1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MzQ2LDI0ICs2NTI0LDI0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkKiBnZXRfY2hhbmdlXzNfMl8wKFB5X1VDUzQgbikKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaCBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAppbmRleCA4ODMwNTYwLi4zODM4ODgyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCkBAIC00LDMzNyArNCw0MjggQEAKIAogLyogbGV4aWNvbiAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIgbGV4aWNvbltdID0gewotICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4NywgNzMsIDg0LCAyMDAsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDgzLCA4OSwgCi0gICAgNzYsIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3MywgNzEsIDIwNiwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgMjA2LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgNjUsIAotICAgIDIwNiwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgCi0gICAgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NywgNjUsIDg0LCA3MiwgNjksIAotICAgIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgMjA0LCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjgsIDczLCA3MSwgNzMsIAotICAgIDIxMiwgNjYsIDc5LCA3NiwgMTk2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNjUsIDc4LCAxOTYsIDcxLCA4MiwgNjksIAotICAgIDY5LCAyMDMsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgODQsIDczLCA3NywgNjksIDIxMSwgODYsIDc5LCA4NywgNjksIAotICAgIDIwNCwgNzAsIDc5LCAyMTAsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgCisgICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIAorICAgIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgODMsIDczLCA3MSwgMjA2LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAorICAgIDc2LCA2NSwgODQsIDczLCAyMDYsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgNzcsIAorICAgIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKKyAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIAorICAgIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCAyMDQsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCAKKyAgICA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2OCwgNzMsIDcxLCA3MywgCisgICAgMjEyLCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgODYsIDc5LCA4NywgCisgICAgNjksIDIwNCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNzcsIDg1LCAKKyAgICA4MywgNzMsIDY3LCA2NSwgMjA0LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCA4NCwgNzMsIDc3LCA2OSwgCisgICAgMjExLCA3MCwgNzksIDIxMCwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAKICAgICAxOTUsIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCi0gICAgMTk4LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA4NCwgNjUsIDIwMSwgODYsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDgzLCA4MSwgODUsIDY1LCA4MiwgMTk3LCAKLSAgICA3NiwgNjksIDcwLCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIAotICAgIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDIwNiwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjYsIDg5LCA5MCwgCi0gICAgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA2NiwgNzksIDg2LCAKLSAgICA2OSwgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDgzLCA3MywgNzEsIAotICAgIDc4LCAxMjgsIDE5NCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAxOTMsIAotICAgIDc1LCA2NSwgNzgsIDcxLCA4OCwgMjAxLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDIxMCwgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgMjA2LCA2NSwgMTI4LCA2OCwgNzksIDIxMiwgNzcsIDY5LCA2OSwgCi0gICAgMjA1LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDc5LCAxOTgsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgCi0gICAgODcsIDcyLCA3MywgODQsIDE5NywgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg1LCAxMjgsIDczLCA3OCwgNzMsIDg0LCAKLSAgICA3MywgNjUsIDIwNCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDEyOCwgODksIDY5LCAyMDAsIDc5LCAKLSAgICAxMjgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCAKLSAgICA3OSwgODAsIDg0LCA3MywgMTk1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIAotICAgIDczLCA2NSwgMjA2LCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAyMDEsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICAyMDMsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNSwgCi0gICAgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgODMsIDgxLCAKLSAgICA4NSwgNjUsIDgyLCA2OSwgMTk2LCA2NiwgNzksIDIxNiwgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDgwLCA3NiwgODUsIAotICAgIDIxMSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgCisgICAgMTk4LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDY2LCAKKyAgICA3MywgNzgsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgODYsIDY1LCAyMDEsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg2LCA2NSwgODIsIAorICAgIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgCisgICAgODIsIDIwNiwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCAKKyAgICA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIAorICAgIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA3NSwgNjUsIDg0LCA2NSwgCisgICAgNzUsIDY1LCA3OCwgMTkzLCAxOTQsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgCisgICAgNjUsIDc4LCA3MSwgODgsIDIwMSwgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDg0LCA3MywgNjYsIDY5LCAKKyAgICA4NCwgNjUsIDIwNiwgNzksIDE5OCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjksIDY5LCAyMDUsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgNzUsIDcyLCA3NywgNjksIAorICAgIDIxMCwgODUsIDEyOCwgODcsIDcyLCA3MywgODQsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA3MywgMTI4LCAKKyAgICA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgNzksIDEyOCwgNjUsIDY2LCA3OSwgODYsIDE5NywgNzcsIDY1LCA4MiwgNzUsIAorICAgIDEyOCwgODksIDY5LCAyMDAsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA4MCwgNzIsIAorICAgIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgMjA2LCA2OCwgNjksIDg2LCA2NSwgCisgICAgNzgsIDY1LCA3MSwgNjUsIDgyLCAyMDEsIDY2LCA3NiwgNjUsIDY3LCAyMDMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIAorICAgIDg0LCA3MiwgNjUsIDIwNSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgCisgICAgNjksIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA2NiwgNzksIDIxNiwgNzIsIDY5LCA2NiwgODIsIDY5LCAKKyAgICAyMTUsIDc3LCA3MywgNjUsIDIwNywgODAsIDc2LCA4NSwgMjExLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAKICAgICAyMTEsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCA4NCwgCi0gICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCAKLSAgICA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIAotICAgIDQ1LCAxOTYsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjUsIDc2LCA2OSwgMTk4LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA4NCwgNzksIDEyOCwgCi0gICAgODQsIDg3LCA3OSwgMTI4LCA3OSwgODYsIDY5LCAyMTAsIDIxMywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDgzLCA2NywgCi0gICAgODIsIDczLCA4MCwgMjEyLCA4NSwgMjA4LCA3NiwgNzksIDIxNSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDIwNywgNjgsIAotICAgIDc5LCA4NywgMjA2LCA3MCwgODUsIDc2LCA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNzIsIDY1LCAyMDAsIDc5LCA3OCwgCi0gICAgMTk3LCA2OSwgODEsIDg1LCA2NSwgMjA0LCA3MiwgNzMsIDcxLCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAKLSAgICAxMjgsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA3MywgMTk1LCAKLSAgICA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCA4MCwgNzIsIAotICAgIDY1LCA4MywgNjksIDQ1LCAxOTUsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDgyLCA2OSwgCi0gICAgMTk3LCA2NiwgNjUsIDgyLCAxMjgsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MSwgNzYsIDY1LCAKLSAgICA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjksIAotICAgIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIDcxLCAyMTMsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIDIwMSwgCi0gICAgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2OSwgNjksIAotICAgIDIwNSwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNzksIDgyLCA3MywgODksIDE5MywgODcsIDY5LCA4MywgCi0gICAgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcyLCA2NSwgNzYsIDE5OCwgNzcsIDY1LCA4MiwgMjAzLCA4MCwgNzIsIDY1LCAKLSAgICA4MywgNjksIDQ1LCAxOTMsIDg0LCA3MiwgNjUsIDIwMSwgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAotICAgIDIxNSwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgNzIsIDY1LCAxMjgsIDg0LCA3OSwgNzgsIDE5NywgODYsIAotICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA2NywgNzIsIDY1LCAyMDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcxLCA4NSwgCi0gICAgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDc2LCA4NSwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDg1LCAKLSAgICA3OCwgNzMsIDE5NSwgODMsIDY1LCA4NSwgODIsIDY1LCA4MywgNzIsIDg0LCA4MiwgMTkzLCA4NCwgNjksIDg0LCA4MiwgNjUsIAotICAgIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAKLSAgICAxOTMsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA2OCwgNzksIDg0LCAyMTEsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA2NSwgCi0gICAgNzcsIDczLCAyMDQsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA3NSwgNjUsIDEyOCwgCi0gICAgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc2LCA3OSwgNzgsIDE5OSwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDg5LCAKLSAgICA2NSwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc3LCA2NSwgCi0gICAgMTI4LCA4MywgNzMsIDg4LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgNzIsIDY1LCA3NywgOTAsIDE5MywgODAsIDY1LCAxMjgsIAotICAgIDY1LCA4MCwgMjA0LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA4MywgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgMjA0LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjYsIAotICAgIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgODIsIDY1LCAxMjgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDgyLCAxOTQsIAotICAgIDY4LCA2NSwgODMsIDczLCAxOTMsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NywgCi0gICAgNjUsIDc1LCA4MywgODUsIDgyLCAxOTMsIDg0LCAyMDcsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAKLSAgICAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCAKLSAgICA5MCwgOTAsIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIAotICAgIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIDEyOCwgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgCi0gICAgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgOTAsIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCAKLSAgICA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIAotICAgIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIAotICAgIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgCi0gICAgNjUsIDgyLCA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCAKLSAgICA4NSwgNjYsIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODIsIDY1LCAxMjgsIDkwLCAKLSAgICA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCAKLSAgICA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIDY5LCAxMjgsIDkwLCAKLSAgICA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIAotICAgIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgCi0gICAgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIAotICAgIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgCi0gICAgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCAKLSAgICA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIAotICAgIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgCi0gICAgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIDEyOCwgOTAsIDcyLCAKLSAgICA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCAKLSAgICA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCAKLSAgICA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIAotICAgIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIAotICAgIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIAotICAgIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAKLSAgICAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCAKLSAgICA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIAotICAgIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIDkwLCA2NSwgCi0gICAgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIDY1LCA3MiwgCi0gICAgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCi0gICAgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIAotICAgIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIAotICAgIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIAotICAgIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIAotICAgIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIAotICAgIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIAotICAgIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgCi0gICAgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgCi0gICAgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgCi0gICAgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgCi0gICAgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA2OSwgODEsIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgCi0gICAgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIDY4LCAyMDAsIDg5LCA4NSwgNjUsIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCAKLSAgICA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIAotICAgIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCi0gICAgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKLSAgICAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCAKLSAgICA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIAotICAgIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAKLSAgICAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIAotICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgCi0gICAgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgCi0gICAgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAKLSAgICAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCAKLSAgICA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIAotICAgIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgCi0gICAgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgCi0gICAgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgCi0gICAgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgCi0gICAgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgCi0gICAgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCAKLSAgICA3MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIAotICAgIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIAotICAgIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCAKLSAgICA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgCi0gICAgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgCi0gICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCAKLSAgICA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCAKLSAgICA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIAotICAgIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIAotICAgIDkwLCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgCi0gICAgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgCi0gICAgODQsIDcyLCAxMjgsIDg5LCA2NSwgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODksIDY1LCA4MywgMTI4LCA4OSwgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgCi0gICAgNjUsIDgxLCAxMjgsIDg5LCA2NSwgODAsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCA3OCwgMTk5LCA4OSwgCi0gICAgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIDc1LCA2NSwgNzgsIAotICAgIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIAotICAgIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgODksIDY1LCA3NCwgCi0gICAgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCAKLSAgICA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIAotICAgIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIAotICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAKLSAgICAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCAKLSAgICA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDY1LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgMTI4LCA4OSwgNjUsIAotICAgIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgNDgsIDQ4LCA1NSwgCi0gICAgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCA1MiwgMTI4LCA4OSwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODksIDQ4LCAKLSAgICA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIDg5LCA4NSwgMTI4LCAKLSAgICA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIDg5LCA4MCwgMTI4LCAKLSAgICA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCAKLSAgICA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCAKLSAgICA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCAKLSAgICA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIDg1LCA3OSwgMTI4LCAKLSAgICA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgMTI4LCA4OCwgNzksIAotICAgIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgNjUsIAotICAgIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgMjA2LCAKLSAgICA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgNjksIAotICAgIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIDgzLCA4NCwgNjksIAotICAgIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCAKLSAgICA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgODYsIDEyOCwgCi0gICAgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAKLSAgICAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCAKLSAgICA3NiwgMjEzLCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIAotICAgIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODQsIAotICAgIDczLCA3OCwgMTk5LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgCi0gICAgODIsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIAotICAgIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIAotICAgIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIAotICAgIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgCi0gICAgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAKLSAgICAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCAKLSAgICA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NCwgNjUsIAotICAgIDEyOCwgODcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIAotICAgIDczLCA3OCwgNjgsIDg1LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCA3OCwgCi0gICAgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCAKLSAgICA2OCwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIAotICAgIDg3LCA2NSwgNjUsIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgCi0gICAgNzIsIDczLCA4NCwgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIAotICAgIDY5LCAxMjgsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgCi0gICAgMjEwLCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAKLSAgICAxMjgsIDg3LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIAotICAgIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIAotICAgIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgCi0gICAgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY1LCAKLSAgICA4MiwgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCAKLSAgICA4OSwgMTI4LCA4NywgNjUsIDIxNywgODcsIDY1LCA4OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODgsIDEyOCwgODcsIDY1LCAKLSAgICA4NywgNDUsIDY1LCA4OSwgNzMsIDc4LCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgODcsIDY1LCA4NywgMTI4LCA4NywgNjUsIAotICAgIDIxNSwgODcsIDY1LCA4NiwgMjE3LCA4NywgNjUsIDg2LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4NiwgNjksIDgzLCAxMjgsIAotICAgIDg3LCA2NSwgODYsIDY5LCAxMjgsIDg3LCA2NSwgODYsIDE5NywgODcsIDY1LCA4NSwgMTI4LCA4NywgNjUsIDg0LCA4NCwgCi0gICAgNzksIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCA3NywgNjksIDc2LCA3OSwgNzgsIDEyOCwgODcsIDY1LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDg3LCA2NSwgODQsIDY5LCAyMTAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4NywgNjUsIDg0LCAxMjgsIDg3LCAKLSAgICA2NSwgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgODMsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIAotICAgIDY1LCA4MywgNzYsIDY1LCAxMjgsIDg3LCA2NSwgODMsIDc2LCAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgCi0gICAgMTI4LCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCAKLSAgICA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgMTI4LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCA4NywgNjUsIAotICAgIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAKLSAgICAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCAKLSAgICA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIAotICAgIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAKLSAgICAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIAotICAgIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIAotICAgIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgCi0gICAgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDY1LCAKLSAgICAxMjgsIDg2LCA4NSwgODgsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAKLSAgICAxMjgsIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCAKLSAgICA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIAotICAgIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAxMjgsIDg2LCA3OSwgODUsIDEyOCwgCi0gICAgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCA4NiwgCi0gICAgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCAKLSAgICA3OSwgMTI4LCA4NiwgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgNzYsIDY5LCA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgCi0gICAgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg4LCAKLSAgICAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIAotICAgIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCA3MywgCi0gICAgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAKLSAgICA2NSwgODksIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIAotICAgIDE5MywgODYsIDczLCA4MiwgNzMsIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCA4MiwgCi0gICAgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIDc5LCAKLSAgICA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgNjksIAotICAgIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIDY1LCAKLSAgICA3MSwgNjksIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIDczLCA3OCwgMTk5LCA4NiwgNzMsIAotICAgIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgCi0gICAgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCAKKyAgICAyMDAsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDIxMywgODQsIDg3LCAKKyAgICA3OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAorICAgIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNzMsIDE5NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzksIDEyOCwgNjUsIDc2LCA2OSwgMTk4LCA4NCwgODcsIDIwNywgCisgICAgNzIsIDY5LCA2NSwgODYsIDIxNywgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDc5LCA4NiwgNjksIAorICAgIDIxMCwgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4NSwgMjA4LCA3NiwgNzksIAorICAgIDIxNSwgNzIsIDY1LCAyMDAsIDc5LCA3OCwgMTk3LCA2OCwgNzksIDg3LCAyMDYsIDcyLCA3MywgNzEsIDIwMCwgNzAsIDg1LCAKKyAgICA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIAorICAgIDY1LCAyMDQsIDg0LCA2NSwgMTk5LCA2NiwgNjUsIDgyLCAxMjgsIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3OCwgODUsIAorICAgIDc3LCA2OSwgODIsIDczLCAxOTUsIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgODQsIDcyLCA4MiwgNjksIDE5NywgCisgICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCAKKyAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDg0LCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIAorICAgIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzIsIDczLCA4MiwgCisgICAgNjUsIDcxLCA2NSwgNzgsIDE5MywgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCAKKyAgICA3OCwgMTk5LCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIAorICAgIDIwMSwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCA3MSwgMjEzLCA4NiwgNzksIDY3LCA2NSwgCisgICAgNzYsIDczLCAxOTUsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDc0LCA2OSwgNjksIDIwNSwgNzgsIDY5LCAKKyAgICA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIAorICAgIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NywgCisgICAgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzAsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDY1LCAxMjgsIDcyLCAKKyAgICA2NSwgNzYsIDE5OCwgNzcsIDY1LCA4MiwgMjAzLCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgMjE1LCAKKyAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTMsIDg0LCA3MiwgNjUsIDIwMSwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIAorICAgIDE5NywgNjgsIDc5LCA4NCwgMjExLCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA2NywgNzIsIDY1LCAyMDUsIAorICAgIDc2LCA4NSwgMTk3LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgCisgICAgNzUsIDY1LCAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIAorICAgIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgCisgICAgODQsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDc3LCA2NSwgMTI4LCAKKyAgICA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDgwLCA2NSwgMTI4LCA4OSwgNjUsIAorICAgIDEyOCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODMsIDczLCA4OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIAorICAgIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc4LCA2NSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgNzYsIDc5LCA3OCwgCisgICAgMTk5LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODUsIDgyLCA3NSwgNzMsIDE5NSwgNzIsIDY1LCA3NywgOTAsIDE5MywgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3OSwgODAsIDY5LCAyMDYsIDgyLCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDg2LCA3MywgNjksIDIxMiwgNzYsIAorICAgIDY1LCAyMDcsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgCisgICAgMTI4LCA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgCisgICAgOTAsIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCAKKyAgICA4MiwgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCAKKyAgICA5MCwgOTAsIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIAorICAgIDc5LCAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCAKKyAgICA2OSwgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCAKKyAgICA5MCwgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDY1LCAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgCisgICAgMTI4LCA5MCwgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCA2NSwgODIsIDY1LCAKKyAgICA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCA2NiwgODUsIAorICAgIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCA4MywgNzIsIDY1LCAxMjgsIDkwLCA4MiwgNjUsIAorICAgIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCA3OSwgMTI4LCA5MCwgNzksIAorICAgIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAxOTMsIDkwLCA3NCwgNjksIAorICAgIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCA3MywgNzgsIDc5LCA4MiwgCisgICAgMTI4LCA5MCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgCisgICAgOTAsIDczLCA2OCwgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIAorICAgIDkwLCA3MiwgODksIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgCisgICAgNzIsIDg5LCA4MiwgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAKKyAgICAxMjgsIDkwLCA3MiwgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCAKKyAgICA3MiwgODUsIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDg1LCA3OSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgCisgICAgODUsIDEyOCwgOTAsIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgCisgICAgOTAsIDcyLCA3OSwgNzksIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCA2OSwgMTI4LCAKKyAgICA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIAorICAgIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIAorICAgIDkwLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgCisgICAgMTI4LCA5MCwgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgCisgICAgNzgsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCAKKyAgICA2OSwgNTAsIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCAKKyAgICA2NSwgODksIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA5MCwgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCA3NywgODgsIDEyOCwgCisgICAgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgCisgICAgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA0OCwgCisgICAgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgCisgICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIAorICAgIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIAorICAgIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgCisgICAgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgCisgICAgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgCisgICAgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgCisgICAgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgCisgICAgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIAorICAgIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCAKKyAgICA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgCisgICAgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgCisgICAgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCAKKyAgICA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKKyAgICAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgCisgICAgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCAKKyAgICA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIAorICAgIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgCisgICAgODgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCAKKyAgICA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIAorICAgIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCAKKyAgICA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCAKKyAgICA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgCisgICAgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgCisgICAgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCAKKyAgICA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCAKKyAgICA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCAKKyAgICA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIAorICAgIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgNzMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgCisgICAgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgCisgICAgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCAKKyAgICA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgCisgICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAorICAgIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAKKyAgICAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCAKKyAgICA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIAorICAgIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgCisgICAgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAKKyAgICAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzIsIAorICAgIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIAorICAgIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIAorICAgIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgCisgICAgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgCisgICAgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgCisgICAgODAsIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCAKKyAgICA3OCwgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIAorICAgIDc1LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgCisgICAgMTI4LCA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgCisgICAgODksIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIAorICAgIDEyOCwgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIAorICAgIDcxLCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIAorICAgIDg5LCA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgCisgICAgODksIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCAKKyAgICA2NywgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIAorICAgIDEyOCwgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgCisgICAgMTI4LCA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIAorICAgIDEyOCwgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIAorICAgIDg5LCA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIAorICAgIDg5LCA4MCwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIAorICAgIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIAorICAgIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIAorICAgIDg3LCA2NSwgMTI4LCA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIAorICAgIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgCisgICAgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIAorICAgIDg4LCA3OSwgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIAorICAgIDgyLCA3OSwgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIAorICAgIDg4LCA3MywgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIAorICAgIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIAorICAgIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCAKKyAgICA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCAKKyAgICA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCAKKyAgICA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIAorICAgIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIAorICAgIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIAorICAgIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgCisgICAgMjAwLCA4NywgODIsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgCisgICAgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAKKyAgICAxMjgsIDg3LCA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIAorICAgIDgyLCAxOTYsIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIAorICAgIDc5LCA3OSwgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAKKyAgICAxMjgsIDg3LCA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCAKKyAgICA3NywgNjUsIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIAorICAgIDc2LCA3OSwgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIAorICAgIDg3LCA3MywgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDc4LCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCAKKyAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIAorICAgIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgNzgsIDEyOCwgODcsIAorICAgIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgNjgsIDY5LCA0NSwgCisgICAgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCAKKyAgICA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIAorICAgIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgCisgICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCAKKyAgICA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIAorICAgIDY1LCA3NiwgNjksIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIAorICAgIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgCisgICAgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NSwgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgCisgICAgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAKKyAgICAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAKKyAgICAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCAKKyAgICA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgCisgICAgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCAKKyAgICA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDc2LCA2NSwgMTI4LCA4NywgNjUsIDgzLCA3NiwgCisgICAgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIAorICAgIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAKKyAgICAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCAKKyAgICA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgCisgICAgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCAKKyAgICA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIAorICAgIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgCisgICAgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCAKKyAgICA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCAKKyAgICA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODUsIDEyOCwgCisgICAgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIDg2LCA4NSwgODAsIDEyOCwgCisgICAgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgODMsIDEyOCwgODYsIDg0LCAKKyAgICAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgNTcsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAxMjgsIDg2LCA4MywgNTcsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNTcsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIDgzLCA1NiwgNTIsIDEyOCwgCisgICAgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgNDksIDEyOCwgODYsIDgzLCAKKyAgICA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgODMsIDU1LCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCA1MywgMTI4LCA4NiwgODMsIAorICAgIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCA4NiwgODMsIDU1LCA0OSwgCisgICAgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIDg2LCA4MywgNTQsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgNTQsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTcsIAorICAgIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCA1MywgNTQsIDEyOCwgODYsIAorICAgIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MywgCisgICAgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MywgMTI4LCA4NiwgCisgICAgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUyLCA1MSwgMTI4LCAKKyAgICA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCA0OCwgMTI4LCA4NiwgODMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTEsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTEsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTYsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKKyAgICA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUwLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTUsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTIsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDksIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NywgCisgICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTcsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTQsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTcsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTQsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTEsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgCisgICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTYsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU0LCAKKyAgICA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUwLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTUsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTIsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDksIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NywgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUyLCAKKyAgICA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTcsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTQsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NiwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUwLCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTMsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTAsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgCisgICAgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAKKyAgICAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgCisgICAgODYsIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNjcsIDY1LCAKKyAgICA3OCwgNzksIDEyOCwgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIAorICAgIDczLCA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCAKKyAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAorICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCisgICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKKyAgICA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIAorICAgIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCAKKyAgICA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIAorICAgIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgCisgICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCAKKyAgICA2NSwgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIAorICAgIDczLCA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDc0LCA0NSwgNTAsIDEyOCwgODYsIDczLCAKKyAgICA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODYsIAogICAgIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIDczLCA2NywgODQsIDc5LCA4MiwgMjE3LCA4NiwgCi0gICAgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDczLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCAKLSAgICA4NywgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCAKLSAgICA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIAotICAgIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKLSAgICA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCAKLSAgICA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKLSAgICA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCAKLSAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgCi0gICAgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCAKLSAgICA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIAotICAgIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgCi0gICAgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIAotICAgIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODQsIDcyLCA4OSwgCi0gICAgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCA2NSwgODIsIAotICAgIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgCi0gICAgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAKLSAgICAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIAotICAgIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgCi0gICAgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCAKKyAgICA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzMsIDEyOCwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAorICAgIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIAorICAgIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCisgICAgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIAorICAgIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgCisgICAgODMsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgCisgICAgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAKKyAgICAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCAKKyAgICA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIAorICAgIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgCisgICAgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCAKKyAgICAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgNjksIAorICAgIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCA3OCwgCisgICAgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCAKKyAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3MywgCisgICAgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCiAgICAgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCAKICAgICA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIAogICAgIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIApAQCAtMzY1LDE1ICs0NTYsMTYgQEAKICAgICA4NSwgODUsIDg1LCA1MCwgMTI4LCA4NSwgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIAogICAgIDgzLCA4NSwgNTEsIDEyOCwgODUsIDgzLCA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgCiAgICAgODUsIDc3LCA4OCwgMTI4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCAKLSAgICA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDEyOCwgODUsIDgyLCAKLSAgICA4NSwgMjE4LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIAotICAgIDE5MywgODUsIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODUsIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIAotICAgIDg1LCA4MiwgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIAotICAgIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDg1LCA4MCwgODcsIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCAKLSAgICA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIAotICAgIDcyLCAyMTIsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgCisgICAgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgCisgICAgODUsIDgzLCA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgCisgICAgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCAKKyAgICA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCAKKyAgICA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIAorICAgIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIAorICAgIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKKyAgICAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgODMsIAorICAgIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCA3MiwgCisgICAgMjEyLCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIAogICAgIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODUsIDc5LCA3OCwgMTI4LCA4NSwgCiAgICAgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDc1LCA3OCwgNzksIDg3LCAKICAgICA3OCwgMTI4LCA4NSwgNzgsIDczLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIApAQCAtMzg4LDEwMCArNDgwLDEwNCBAQAogICAgIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgCiAgICAgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCAKICAgICA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAotICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA2OSwgMTI4LCA4NSwgNjksIDY1LCAxMjgsIDg1LCA2OCwgODUsIDcxLCAxMjgsIAotICAgIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIDg1LCA2OCwgNjUsIDY1LCA4NCwgCi0gICAgMTI4LCA4NSwgNjgsIDEyOCwgODUsIDE5NiwgODUsIDY3LCAxMjgsIDg1LCA2NiwgODUsIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDg1LCA2NiwgNzIsIDY1LCA4OSwgNjUsIDg0LCAyMDcsIDg1LCA2NiwgNjUsIDY4LCA2NSwgNzcsIDY1LCAxMjgsIDg1LCA2NiwgCi0gICAgMTI4LCA4NSwgNjUsIDg0LCA3MiwgMTI4LCA4NSwgNjUsIDEyOCwgODUsIDE3OCwgODUsIDQ4LCA1MiwgNTAsIDEyOCwgODUsIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgODUsIDQ4LCA1MiwgNDgsIDEyOCwgODUsIDQ4LCA1MSwgNTcsIDEyOCwgODUsIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgODUsIDQ4LCA1MSwgNTUsIDEyOCwgODUsIDQ4LCA1MSwgNTQsIDEyOCwgODUsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgODUsIDQ4LCA1MSwgNTIsIDEyOCwgODUsIDQ4LCA1MSwgNTEsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg1LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDg1LCA0OCwgNTEsIDQ5LCAxMjgsIDg1LCA0OCwgNTEsIDQ4LCAxMjgsIDg1LCA0OCwgNTAsIAotICAgIDU3LCA2NSwgMTI4LCA4NSwgNDgsIDUwLCA1NywgMTI4LCA4NSwgNDgsIDUwLCA1NiwgMTI4LCA4NSwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA4NSwgNDgsIDUwLCA1NCwgMTI4LCA4NSwgNDgsIDUwLCA1MywgMTI4LCA4NSwgNDgsIDUwLCA1MiwgMTI4LCA4NSwgCi0gICAgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTEsIDEyOCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgODUsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgODUsIDQ4LCA1MCwgNDgsIDEyOCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgODUsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgODUsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgODUsIDQ4LCA0OSwgNTEsIDEyOCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgODUsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgODUsIDQ4LCA0OCwgNTcsIDEyOCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgODUsIDQ4LCA0OCwgNTUsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA4NSwgNDgsIAotICAgIDQ4LCA1MSwgMTI4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDczLCA0NSwgCi0gICAgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCA2OSwgODUsIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIDc5LCAKLSAgICA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIDY5LCAKLSAgICA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIDkwLCAKLSAgICAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCAxODIsIDg0LCAKLSAgICA4OSwgODAsIDY5LCA0NSwgMTgxLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzksIAotICAgIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCA4NCwgCi0gICAgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCA4NywgCi0gICAgNzksIDc5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgNjUsIAotICAgIDY4LCA2OSwgMTk2LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgCi0gICAgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAKLSAgICA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKLSAgICA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAKLSAgICA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCAKLSAgICA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIAotICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgCi0gICAgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgCi0gICAgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCAKLSAgICA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIAotICAgIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIAotICAgIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgCi0gICAgODQsIDczLCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCAKLSAgICA4MiwgNjYsIDY1LCA3OCwgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgODQsIDg1LCA3OSwgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIAotICAgIDc4LCA3OCwgODksIDEyOCwgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAKLSAgICAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIAotICAgIDg0LCA3MywgODMsIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgCi0gICAgNTAsIDEyOCwgODQsIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAKLSAgICAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCAKLSAgICA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgCisgICAgODUsIDY5LCA4OSwgMTI4LCA4NSwgNjksIDczLCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgCisgICAgNjgsIDg1LCA3MSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCAKKyAgICA4NSwgNjgsIDY1LCA2NSwgODQsIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCAKKyAgICA3MCwgNzMsIDc2LCA3MywgMTI4LCA4NSwgNjYsIDcyLCA2NSwgODksIDY1LCA4NCwgMjA3LCA4NSwgNjYsIDY1LCA2OCwgNjUsIAorICAgIDc3LCA2NSwgMTI4LCA4NSwgNjYsIDEyOCwgODUsIDY1LCA4NCwgNzIsIDEyOCwgODUsIDY1LCA3OCwgNzEsIDEyOCwgODUsIAorICAgIDY1LCAxMjgsIDg1LCAxNzgsIDg1LCA0OCwgNTIsIDUwLCAxMjgsIDg1LCA0OCwgNTIsIDQ5LCAxMjgsIDg1LCA0OCwgNTIsIAorICAgIDQ4LCAxMjgsIDg1LCA0OCwgNTEsIDU3LCAxMjgsIDg1LCA0OCwgNTEsIDU2LCAxMjgsIDg1LCA0OCwgNTEsIDU1LCAxMjgsIAorICAgIDg1LCA0OCwgNTEsIDU0LCAxMjgsIDg1LCA0OCwgNTEsIDUzLCAxMjgsIDg1LCA0OCwgNTEsIDUyLCAxMjgsIDg1LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDg1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgMTI4LCA4NSwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4NSwgNDgsIDUxLCA0OCwgMTI4LCA4NSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgODUsIDQ4LCA1MCwgNTYsIDEyOCwgODUsIDQ4LCA1MCwgNTUsIDEyOCwgODUsIDQ4LCA1MCwgNTQsIDEyOCwgODUsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgODUsIDQ4LCA1MCwgNTIsIDEyOCwgODUsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg1LCA0OCwgCisgICAgNTAsIDUxLCAxMjgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDg1LCA0OCwgNTAsIDQ4LCAKKyAgICAxMjgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDg1LCA0OCwgNDksIDU2LCAxMjgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDg1LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDg1LCA0OCwgNDksIAorICAgIDUxLCAxMjgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDg1LCA0OCwgNDksIDQ5LCAxMjgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIAorICAgIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDg1LCA0OCwgCisgICAgNDgsIDU0LCA2NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgODUsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgODUsIDQ4LCA0OCwgNTEsIDEyOCwgODUsIDQ4LCA0OCwgNTAsIAorICAgIDEyOCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDQ1LCA3MywgNDUsIDczLCAxMjgsIDg1LCA0NSwgNjksIDc5LCA0NSwgCisgICAgNjksIDg1LCAxMjgsIDg1LCA0NSwgNjYsIDgyLCA3NCwgNzEsIDg1LCAxMjgsIDg0LCA5MCwgODUsIDEyOCwgODQsIDkwLCAKKyAgICA3OSwgNjUsIDEyOCwgODQsIDkwLCA3OSwgMTI4LCA4NCwgOTAsIDczLCAyMTAsIDg0LCA5MCwgNzMsIDEyOCwgODQsIDkwLCAKKyAgICA2OSwgNjksIDEyOCwgODQsIDkwLCA2OSwgMTI4LCA4NCwgOTAsIDY1LCA2NSwgMTI4LCA4NCwgOTAsIDY1LCAxMjgsIDg0LCAKKyAgICA5MCwgMTI4LCA4NCwgODksIDIxMCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODMsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgyLCAKKyAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODAsIDg0LCA4OSwgODAsIDY5LCA0NSwgCisgICAgMTc5LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3OCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzcsIDg0LCA4OSwgODAsIDE5NywgCisgICAgODQsIDg5LCA3OSwgMTI4LCA4NCwgODksIDczLCAxMjgsIDg0LCA4OSwgNjksIDEyOCwgODQsIDg5LCA2NSwgMTI4LCA4NCwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgODcsIDY1LCAyMTcsIDg0LCA4NywgNzksIDQ1LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA4NywgNzksIDQ1LCA3MiwgNjksIAorICAgIDY1LCA2OCwgNjksIDE5NiwgODQsIDg3LCA3OSwgNDUsIDY5LCAyMDUsIDg0LCA4NywgNzMsIDgzLCA4NCwgNjksIDE5NiwgCisgICAgODQsIDg3LCA3MywgNzMsIDEyOCwgODQsIDg3LCA3MywgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCAKKyAgICA3OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCAKKyAgICA2OSwgNzgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIAorICAgIDg0LCA4OSwgNDUsIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCAKKyAgICA4MiwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIAorICAgIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIAorICAgIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCAKKyAgICA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCAxOTcsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgODQsIDg3LCA2NSwgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgCisgICAgNjgsIDg1LCAyMTAsIDg0LCA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgCisgICAgODQsIDg1LCA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCAKKyAgICA4NCwgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIAorICAgIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIAorICAgIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIAorICAgIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIAorICAgIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgCisgICAgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCAKKyAgICA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCAKKyAgICA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIAogICAgIDEyOCwgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIAogICAgIDg0LCA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgCi0gICAgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgCi0gICAgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCA4NCwgODMsIAotICAgIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIAotICAgIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgCi0gICAgNzksIDIwMywgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCAKLSAgICA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIAotICAgIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY1LCA2OCwgCi0gICAgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCAKLSAgICA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIAotICAgIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA2OSwgCi0gICAgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCAKLSAgICA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCi0gICAgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAKLSAgICA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgCi0gICAgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIAotICAgIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCAKLSAgICA3MywgODAsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIAotICAgIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgCi0gICAgODIsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIAotICAgIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3NiwgNzMsIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgCi0gICAgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIAotICAgIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgCi0gICAgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIDEyOCwgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCAKLSAgICA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgNzgsIDY4LCAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIAotICAgIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MCwgMTI4LCA4NCwgCi0gICAgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4MiwgNjksIAotICAgIDE5NywgODQsIDgyLCA2OSwgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA4MiwgNjUsIDg5LCAxMjgsIDg0LCA4MiwgCi0gICAgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIDEyOCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIAotICAgIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgCisgICAgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgCisgICAgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCAKKyAgICA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgCisgICAgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCAKKyAgICA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIAorICAgIDg0LCA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgCisgICAgMTI4LCA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgCisgICAgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCAKKyAgICA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIAorICAgIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgCisgICAgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCAKKyAgICA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIAorICAgIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCAKKyAgICA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIAorICAgIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgCisgICAgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCisgICAgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCAKKyAgICA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIAorICAgIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIDczLCAKKyAgICA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgODQsIAorICAgIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIDc5LCAKKyAgICA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDc5LCAKKyAgICAyMDYsIDg0LCA4MiwgNzMsIDczLCA4MywgNjUsIDgwLCAxMjgsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgODQsIDgyLCA3MywgNzEsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDgyLCA3MywgNzAsIDc5LCA3NiwgNzMsIAorICAgIDY1LCA4NCwgMTk3LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgODIsIDczLCA2OCwgNjksIDc4LCAKKyAgICAyMTIsIDg0LCA4MiwgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIAorICAgIDY1LCAyMTAsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIAorICAgIDcxLCA3NiwgNjksIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDE5NywgODQsIDgyLCA3MywgNjUsIDEyOCwgCisgICAgODQsIDgyLCA3MywgMTI4LCA4NCwgODIsIDY5LCA4MywgNzMsIDc2LCA3NiwgNzksIDEyOCwgODQsIDgyLCA2OSwgNzgsIDY4LCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDc4LCAxOTYsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTEsIDEyOCwgODQsIAorICAgIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDQ5LCAKKyAgICAxMjgsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4MiwgNjksIDE5NywgODQsIDgyLCA2OSwgNjUsIDY4LCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDg0LCA4MiwgNjUsIDg5LCAxMjgsIDg0LCA4MiwgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIDEyOCwgCisgICAgODQsIDgyLCA2NSwgNzgsIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgNzksIAorICAgIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgMjEyLCA4NCwgODIsIDY1LCA3OCwgCiAgICAgODMsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCA4MywgODMsIAogICAgIDczLCA3OSwgMjA2LCA4NCwgODIsIDY1LCA3NywgODcsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA3NywgMTI4LCA4NCwgCiAgICAgODIsIDY1LCAyMDUsIDg0LCA4MiwgNjUsIDczLCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3MywgMjA2LCA4NCwgODIsIDY1LCAKQEAgLTQ5MywxNiArNTg5LDE3IEBACiAgICAgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgMjExLCA4NCwgNzksIDgyLCA2NywgNzIsIDEyOCwgODQsIDc5LCA4MSwgMTI4LCAKICAgICA4NCwgNzksIDgwLCA2NiwgNjUsIDgyLCAxMjgsIDg0LCA3OSwgODAsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIAogICAgIDg0LCA3OSwgODAsIDEyOCwgODQsIDc5LCAyMDgsIDg0LCA3OSwgNzksIDg0LCA3MiwgMTI4LCA4NCwgNzksIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAKLSAgICAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIAotICAgIDU0LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTMsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MiwgMTI4LCA4NCwgCi0gICAgNzksIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzksIDc4LCA2NSwgMjA0LCA4NCwgNzksIDc3LCA4MCwgNzMsIAotICAgIDEyOCwgODQsIDc5LCA3NywgNjUsIDg0LCA3OSwgMTI4LCA4NCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgCi0gICAgNzUsIDg5LCAyMDcsIDg0LCA3OSwgNzMsIDc2LCA2OSwgODQsIDEyOCwgODQsIDc5LCA3MSwgNjksIDg0LCA3MiwgNjksIDgyLCAKLSAgICAxMjgsIDg0LCA3OSwgNjgsIDIwNywgODQsIDc5LCA2NSwgNzgsIDY4LCA2NSwgNzUsIDcyLCA3MywgNjUsIDg0LCAxMjgsIAotICAgIDg0LCA3OSwgNjUsIDEyOCwgODQsIDc4LCAxMjgsIDg0LCA3NiwgODYsIDEyOCwgODQsIDc2LCA4NSwgMTI4LCA4NCwgNzYsIAotICAgIDc5LCAxMjgsIDg0LCA3NiwgNzMsIDEyOCwgODQsIDc2LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDg1LCAxMjgsIAorICAgIDEyOCwgODQsIDc5LCA3OCwgNzksIDgzLCAxMjgsIDg0LCA3OSwgNzgsIDcxLCA4NSwgNjksIDEyOCwgODQsIDc5LCA3OCwgCisgICAgNzEsIDg1LCAxOTcsIDg0LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTYsIDEyOCwgODQsIDc5LCAKKyAgICA3OCwgNjksIDQ1LCA1NSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU0LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTMsIAorICAgIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MiwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDg0LCA3OSwgCisgICAgNzgsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgMTI4LCAKKyAgICA4NCwgNzksIDc4LCA2NSwgMjA0LCA4NCwgNzksIDc3LCA4MCwgNzMsIDEyOCwgODQsIDc5LCA3NywgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA4NCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3OSwgNzUsIDg5LCAyMDcsIDg0LCA3OSwgNzMsIDc2LCAKKyAgICA2OSwgODQsIDEyOCwgODQsIDc5LCA3MSwgNjksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDg0LCA3OSwgNjgsIDIwNywgODQsIAorICAgIDc5LCA2NSwgNzgsIDY4LCA2NSwgNzUsIDcyLCA3MywgNjUsIDg0LCAxMjgsIDg0LCA3OSwgNjUsIDEyOCwgODQsIDc4LCAKKyAgICAxMjgsIDg0LCA3NiwgODYsIDEyOCwgODQsIDc2LCA4NSwgMTI4LCA4NCwgNzYsIDc5LCAxMjgsIDg0LCA3NiwgNzMsIDEyOCwgCisgICAgODQsIDc2LCA3MiwgODksIDY1LCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKICAgICA4NCwgNzYsIDcyLCA3OSwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzksIDEyOCwgODQsIDc2LCA3MiwgNzMsIDEyOCwgODQsIAogICAgIDc2LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDY1LCAxMjgsIDg0LCA3NiwgCiAgICAgNjksIDY5LCAxMjgsIDg0LCA3NiwgNjUsIDEyOCwgODQsIDc0LCA2OSwgMTI4LCA4NCwgNzMsIDg4LCAxMjgsIDg0LCA3MywgCkBAIC01MTMsMTIxICs2MTAsMTIzIEBACiAgICAgODQsIDczLCA4MCwgNjksIDcyLCA2NSwgMTI4LCA4NCwgNzMsIDgwLCAxMjgsIDg0LCA3MywgMjA4LCA4NCwgNzMsIDc4LCAKICAgICA4OSwgMTI4LCA4NCwgNzMsIDc4LCAyMTcsIDg0LCA3MywgNzgsIDc4LCA2OSwgMTI4LCA4NCwgNzMsIDc4LCA2NywgODQsIAogICAgIDg1LCA4MiwgNjksIDEyOCwgODQsIDczLCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDczLCA3NywgNjksIDgzLCAKLSAgICAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCAKLSAgICA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCi0gICAgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCAKLSAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgCi0gICAgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgCi0gICAgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIAotICAgIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDIxMiwgODQsIDczLCA3MywgMTI4LCA4NCwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDc2LCA4OSwgNDUsIDY3LCA3NiwgNzksIDgzLCA2OSwgMTk2LCA4NCwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNzMsIDcxLCAKLSAgICA2OSwgODIsIDEyOCwgODQsIDczLCA3MSwgNjksIDIxMCwgODQsIDczLCA3MCwgNzMsIDc4LCA2NSwgNzEsIDIwMCwgODQsIAotICAgIDczLCA2OSwgODgsIDEyOCwgODQsIDczLCA2OSwgODAsIDEyOCwgODQsIDczLCAxOTcsIDg0LCA3MywgNjcsIDc1LCA2OSwgCi0gICAgODQsIDEyOCwgODQsIDczLCA2NywgNzUsIDEyOCwgODQsIDczLCA2NywgMjAzLCA4NCwgNzMsIDY1LCA4MiwgNjUsIDEyOCwgCi0gICAgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIDIwNSwgODQsIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCAKLSAgICA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgMTI4LCA4NCwgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIAotICAgIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDg0LCA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgCi0gICAgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIDY1LCAyMTgsIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgODIsIDc3LCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgCi0gICAgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDIxMCwgODQsIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCAKLSAgICA3MiwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDg0LCA3MiwgODIsIAotICAgIDc5LCA4NSwgNzEsIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgCi0gICAgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIAotICAgIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgCi0gICAgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCAKLSAgICA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIAotICAgIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgCi0gICAgNzEsIDEyOCwgODQsIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIAotICAgIDE5NiwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAKLSAgICAyMTcsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgCi0gICAgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCAKLSAgICA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgMjA2LCA4NCwgNzIsIDczLCA3MywgMTI4LCAKLSAgICA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDY5LCA4OSwgCi0gICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIAotICAgIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAKLSAgICAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIAotICAgIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgCi0gICAgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCAKLSAgICA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDE5NywgODQsIDcyLCAKLSAgICA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NiwgCi0gICAgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAKLSAgICAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIAotICAgIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgCi0gICAgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAKLSAgICAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIAotICAgIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCAKLSAgICA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIAotICAgIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgCi0gICAgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCAKLSAgICA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIAotICAgIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIAotICAgIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCAKLSAgICA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIAotICAgIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKLSAgICA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIAotICAgIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgCi0gICAgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCAKLSAgICA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIAotICAgIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCAKLSAgICA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgCi0gICAgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjcsIDcyLCAKLSAgICA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgCi0gICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIAotICAgIDg0LCA2NSwgODgsIDczLCAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgCi0gICAgMjEyLCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCAKLSAgICA3MywgMTI4LCA4NCwgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCAKLSAgICA2NSwgODUsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIAotICAgIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgCi0gICAgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NCwgNjUsIDgyLCAKLSAgICA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDg0LCA2NSwgODAsIAotICAgIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgMTk2LCA4NCwgNjUsIAotICAgIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgCi0gICAgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgCi0gICAgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCAKLSAgICA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIAotICAgIDIxMiwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgCi0gICAgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCAKLSAgICA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIAotICAgIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgCi0gICAgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgCi0gICAgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCAKLSAgICA4MywgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIDY1LCA2NiwgMTI4LCA4NCwgNjUsIDE5NCwgODQsIDY1LCAKLSAgICA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCA2NSwgNzcsIDEyOCwgODQsIAotICAgIDY1LCA2NSwgNzYsIDg1LCA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIDY1LCA3MCwgMTI4LCA4NCwgCi0gICAgNjUsIDUwLCAxMjgsIDg0LCA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAotICAgIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA0OSwgCi0gICAgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCA4NCwgCi0gICAgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCA0OSwgCi0gICAgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIDEyOCwgCi0gICAgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAKLSAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgMTI4LCAKLSAgICA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAxMjgsIAotICAgIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAxMjgsIAotICAgIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCA2NSwgCi0gICAgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4OSwgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgCi0gICAgODIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCAKLSAgICA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIAotICAgIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgCi0gICAgNzEsIDc3LCAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDg5LCAKKyAgICAxMjgsIDg0LCA3MywgNzcsIDY5LCAyMTAsIDg0LCA3MywgNzcsIDY5LCAxMjgsIDg0LCA3MywgNzYsIDY4LCAxOTcsIDg0LCAKKyAgICA3MywgNzYsIDEyOCwgODQsIDczLCAyMDQsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAorICAgIDg0LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4NCwgNzMsIAorICAgIDc1LCA2OSwgODUsIDg0LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCAKKyAgICA2OSwgODUsIDg0LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgCisgICAgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgMjEyLCA4NCwgNzMsIDcxLCA3MiwgODQsIDc2LCA4OSwgNDUsIDY3LCA3NiwgNzksIDgzLCA2OSwgMTk2LCA4NCwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA4NCwgNzMsIDcxLCA2OSwgODIsIDEyOCwgODQsIDczLCA3MSwgNjksIDIxMCwgODQsIDczLCA3MCwgCisgICAgNzMsIDc4LCA2NSwgNzEsIDIwMCwgODQsIDczLCA2OSwgODgsIDEyOCwgODQsIDczLCA2OSwgODAsIDEyOCwgODQsIDczLCAKKyAgICAxOTcsIDg0LCA3MywgNjcsIDc1LCA2OSwgODQsIDEyOCwgODQsIDczLCA2NywgNzUsIDEyOCwgODQsIDczLCA2NywgMjAzLCAKKyAgICA4NCwgNzMsIDY1LCA4MiwgNjUsIDEyOCwgODQsIDcyLCA5MCwgMTI4LCA4NCwgNzIsIDg5LCA3OSwgNzksIDIwNSwgODQsIAorICAgIDcyLCA4NywgNzksIDc5LCAxMjgsIDg0LCA3MiwgODcsIDc5LCAxMjgsIDg0LCA3MiwgODcsIDczLCA3MywgMTI4LCA4NCwgCisgICAgNzIsIDg3LCA3MywgMTI4LCA4NCwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDg0LCAKKyAgICA3MiwgODcsIDY1LCAxMjgsIDg0LCA3MiwgODUsIDgyLCAyMTEsIDg0LCA3MiwgODUsIDgyLCA3MywgODMsIDY1LCAyMTgsIAorICAgIDg0LCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODMsIDg0LCA3OSwgODIsIDc3LCAKKyAgICAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgODUsIDc4LCA2OCwgNjksIDIxMCwgODQsIAorICAgIDcyLCA4NSwgNzcsIDY2LCAyMTEsIDg0LCA3MiwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDg0LCA3MiwgODIsIDc5LCA4NSwgCisgICAgNzEsIDcyLCAxMjgsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODQsIAorICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2OSwgMjA1LCA4NCwgCisgICAgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKKyAgICA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIAorICAgIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgCisgICAgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCAKKyAgICA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIAorICAgIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIAorICAgIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgCisgICAgODIsIDE5NiwgODQsIDcyLCA3MywgMjA2LCA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgCisgICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAKKyAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIAorICAgIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgCisgICAgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCAKKyAgICA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIAorICAgIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgCisgICAgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDE5NywgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCAKKyAgICA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIAorICAgIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgCisgICAgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAxMjgsIDg0LCAKKyAgICA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIAorICAgIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCAKKyAgICA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgCisgICAgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKKyAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAorICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCisgICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKKyAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAorICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgCisgICAgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAorICAgIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIAorICAgIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgCisgICAgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCAKKyAgICA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIAorICAgIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3NiwgCisgICAgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIAorICAgIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKKyAgICA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIAorICAgIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCAKKyAgICA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgCisgICAgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgCisgICAgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgCisgICAgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCAKKyAgICA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIAorICAgIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgCisgICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAKKyAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAorICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgCisgICAgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAKKyAgICAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIAorICAgIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIAorICAgIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgCisgICAgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDEyOCwgCisgICAgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCAKKyAgICA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCAKKyAgICA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIAorICAgIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCAKKyAgICA2NiwgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCAKKyAgICA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIAorICAgIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgCisgICAgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgCisgICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgCisgICAgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIAorICAgIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgCisgICAgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgCisgICAgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgCisgICAgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgCisgICAgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgCisgICAgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAKKyAgICA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIAorICAgIDEyOCwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIAorICAgIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgCisgICAgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDE5MywgODMsIDg5LCAKKyAgICA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCiAgICAgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgODMsIAogICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NiwgCiAgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU0LCAKQEAgLTY1NCwyMjMgKzc1MywyMjggQEAKICAgICA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIAogICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ5LCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDY1LCAxMjgsIDgzLCA4OSwgMTI4LCA4MywgODcsIAotICAgIDkwLCAxMjgsIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgCi0gICAgODIsIDY4LCAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgCi0gICAgODMsIDg3LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCAKLSAgICA4NywgNzMsIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIAotICAgIDEyOCwgODMsIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIAotICAgIDgzLCA4NywgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAKLSAgICAxMjgsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCAKLSAgICA4NSwgODQsIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIAotICAgIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgCi0gICAgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCAKLSAgICA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIAotICAgIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgCi0gICAgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCAKLSAgICA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIAotICAgIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIAotICAgIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIAotICAgIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgCi0gICAgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgCi0gICAgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgCi0gICAgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCAKLSAgICA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgCi0gICAgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCAKLSAgICA4MywgODUsIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIAotICAgIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgCi0gICAgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCAKLSAgICA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCAKLSAgICA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIAotICAgIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCAKLSAgICA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgCi0gICAgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgCi0gICAgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKLSAgICAyMDgsIDgzLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgODMsIDg1LCA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgODksIAotICAgIDEyOCwgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAotICAgIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIAotICAgIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgCi0gICAgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIAotICAgIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIAotICAgIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIAotICAgIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIAotICAgIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgCi0gICAgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCAKLSAgICA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4NCwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIAotICAgIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4NSwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCAyMTEsIDgzLCAKLSAgICA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgODQsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgCi0gICAgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgCi0gICAgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgCi0gICAgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCAKLSAgICA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIAotICAgIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgCi0gICAgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgCi0gICAgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCAKLSAgICA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCAKLSAgICA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIAotICAgIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCAKLSAgICA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAKLSAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCAKLSAgICA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNjUsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCAKLSAgICA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIAotICAgIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA4MywgMTI4LCA4MywgCi0gICAgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxMjgsIDgzLCA4MCwgODcsIDY1LCAKLSAgICAxMjgsIDgzLCA4MCwgODUsIDc4LCA3MSwgMjExLCA4MywgODAsIDgyLCA3OSwgODUsIDg0LCAxMjgsIDgzLCA4MCwgODIsIAotICAgIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgzLCA4MCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDgwLCA4MiwgNjksIDY3LCA3MiwgCi0gICAgNzEsIDY5LCA4MywgNjUsIDc4LCAxOTksIDgzLCA4MCwgNzksIDg1LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzksIDg0LCAKLSAgICAxMjgsIDgzLCA4MCwgNzksIDc5LCA3OCwgMTI4LCA4MywgODAsIDc2LCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgODMsIAotICAgIDgwLCA3NiwgNjUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzMsIDgyLCA3MywgODQsIDg1LCAyMTEsIDgzLCA4MCwgCi0gICAgNzMsIDgyLCA3MywgODQsIDEyOCwgODMsIDgwLCA3MywgODIsIDczLCAyMTIsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgNzYsIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCAyMDQsIDgzLCA4MCwgNzMsIAotICAgIDY4LCA2OSwgODIsIDIxNywgODMsIDgwLCA3MywgNjcsIDY5LCAxMjgsIDgzLCA4MCwgNzIsIDY5LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA4MywgODAsIDY5LCA4MywgNzcsIDczLCA3NiwgMjA3LCA4MywgODAsIDY5LCA2OSwgNjgsIDY2LCA3OSwgNjUsIDg0LCAKLSAgICAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgNzIsIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCAyMDAsIDgzLCA4MCwgNjksIAotICAgIDY3LCA3MywgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNjksIDY1LCA4MiwgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgCi0gICAgMTI4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCAyMTAsIDgzLCA4MCwgNjksIDY1LCA3NSwgNDUsIDc4LCA3OSwgNDUsIDY5LCAKLSAgICA4NiwgNzMsIDIwNCwgODMsIDgwLCA2NSwgODQsIDcyLCA3MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA3MywgNzgsIAotICAgIDE5OSwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MiwgCi0gICAgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgMTI4LCA4MywgODAsIDY1LCA3MSwgNzIsIDY5LCA4NCwgODQsIDczLCAKLSAgICAxMjgsIDgzLCA4MCwgNjUsIDY4LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgNjgsIDE5NywgODMsIDgwLCA2NSwgNjcsIAotICAgIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA2NywgMTk3LCA4MywgODAsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgNzksIAotICAgIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA4MywgCi0gICAgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIDc5LCAKLSAgICA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgODMsIAotICAgIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCA4MSwgCi0gICAgMTI4LCA4MywgNzksIDc5LCAyMDYsIDgzLCA3OSwgNzksIDEyOCwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCA4MywgCi0gICAgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDEyOCwgODMsIDc5LCA3NiwgNzMsIDY4LCAKLSAgICA4NSwgODMsIDEyOCwgODMsIDc5LCA3NiwgNzMsIDY4LCA4NSwgMjExLCA4MywgNzksIDcxLCA2OCwgNzMsIDY1LCAyMDYsIAotICAgIDgzLCA3OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCAKLSAgICA3OSwgNzAsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAyMTIsIDgzLCA3OSwgMTk4LCA4MywgNzksIAotICAgIDY3LCA3MywgNjksIDg0LCA4OSwgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIDIxMCwgODMsIDc5LCA2NSwgODAsIDEyOCwgCi0gICAgODMsIDc5LCA2NSwgMTI4LCA4MywgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCAKLSAgICA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIAotICAgIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAxMjgsIDgzLCA3OCwgNzksIDg1LCA4NCwgCi0gICAgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgCi0gICAgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA3NywgNjUsIDgzLCAKLSAgICAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIDc2LCAxMjgsIDgzLCA3NiwgODUsIAotICAgIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgNzYsIDc5LCA4NiwgCi0gICAgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNzksIDgwLCAKLSAgICA2OSwgMTI4LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCA4MywgCi0gICAgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCAKLSAgICA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIAotICAgIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgCi0gICAgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCAKLSAgICA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCAKLSAgICA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgCi0gICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIAotICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAKLSAgICAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIAotICAgIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCAKLSAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAKLSAgICAxOTcsIDgzLCA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIAotICAgIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAKLSAgICAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIAotICAgIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgCi0gICAgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAKLSAgICAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIAotICAgIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzMsIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAKLSAgICAxOTMsIDgzLCA3MywgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCAKLSAgICA3MSwgMTI4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIAotICAgIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAKLSAgICAxOTcsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCAKLSAgICA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCAKLSAgICA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIAotICAgIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgCi0gICAgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCAKLSAgICA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIAotICAgIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgCi0gICAgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCAKLSAgICA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCA3MiwgNzksIAotICAgIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCAKLSAgICA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIDEyOCwgODMsIAotICAgIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgCi0gICAgNzEsIDQ1LCA4MywgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OSwgODMsIAotICAgIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAxOTYsIDgzLCA3MiwgCi0gICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIAotICAgIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCAKLSAgICA4NCwgODcsIDczLCA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgCi0gICAgODQsIDg3LCA3MywgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIAotICAgIDIxMiwgODMsIDcyLCA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCA4MywgNzIsIAotICAgIDc5LCA3OSwgODQsIDczLCA3OCwgMTk5LCA4MywgNzIsIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIDEyOCwgCi0gICAgODMsIDcyLCA3OSwgNzEsIDIwMSwgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICAxOTcsIDgzLCA3MiwgNzksIDY1LCAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgNjUsIAotICAgIDc2LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCAxOTMsIDgzLCA3MiwgCi0gICAgNzMsIDgyLCAyMTIsIDgzLCA3MiwgNzMsIDgyLCA2NSwgNjksIDEyOCwgODMsIDcyLCA3MywgODIsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgMjEwLCA4MywgNzIsIDczLCA4MSwgMTI4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA4MywgNzIsIDczLCA3OCwgODQsIAotICAgIDIwNywgODMsIDcyLCA3MywgNzgsIDczLCA3MSwgMTI4LCA4MywgNzIsIDczLCA3OCwgNjgsIDE5MywgODMsIDcyLCA3MywgCi0gICAgNzgsIDEyOCwgODMsIDcyLCA3MywgMjA2LCA4MywgNzIsIDczLCA3NywgNjUsIDEyOCwgODMsIDcyLCA3MywgNzcsIDE5MywgCi0gICAgODMsIDcyLCA3MywgNzcsIDEyOCwgODMsIDcyLCA3MywgMjA1LCA4MywgNzIsIDczLCA3MywgNzgsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgNzMsIDEyOCwgODMsIDcyLCA3MywgNzAsIDIxMiwgODMsIDcyLCA3MywgNjksIDc2LCA2OCwgMTI4LCA4MywgNzIsIAotICAgIDczLCA2OCwgMTI4LCA4MywgNzIsIDczLCAxOTYsIDgzLCA3MiwgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNzIsIDE5MywgODMsIAotICAgIDcyLCA2OSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODYsIDY1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA4MywgCi0gICAgNzIsIDY5LCA4NSwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCA4NCwgODUsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDY5LCA4NCwgCisgICAgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgCisgICAgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIAorICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCAKKyAgICA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIAorICAgIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgCisgICAgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCAKKyAgICA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIAorICAgIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAKKyAgICA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgCisgICAgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCAKKyAgICA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIAorICAgIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCAKKyAgICA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgCisgICAgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgCisgICAgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCAKKyAgICA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCAKKyAgICAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgCisgICAgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAKKyAgICA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCAKKyAgICA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDcyLCA4NSwgODIsIAorICAgIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAorICAgIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgCisgICAgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIAorICAgIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgCisgICAgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCAKKyAgICA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIAorICAgIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgCisgICAgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCAKKyAgICA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAorICAgIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgCisgICAgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCAKKyAgICAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKKyAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAorICAgIDc5LCA3NSwgNjksIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDU3LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTUsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDUxLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIAorICAgIDc1LCA2OSwgNDUsIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIAorICAgIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIAorICAgIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIAorICAgIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgCisgICAgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCAKKyAgICA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIAorICAgIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIAorICAgIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgCisgICAgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3NywgMTI4LCAKKyAgICA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIAorICAgIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgCisgICAgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCAKKyAgICA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgCisgICAgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCAKKyAgICA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIAorICAgIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCAKKyAgICA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIAorICAgIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAKKyAgICAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCAKKyAgICA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIAorICAgIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIAorICAgIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgCisgICAgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgCisgICAgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIAorICAgIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgCisgICAgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCAKKyAgICA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgCisgICAgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgCisgICAgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCAKKyAgICA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIAorICAgIDgxLCA4NSwgNjUsIDgyLCA2OSwgODMsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgCisgICAgNjUsIDgyLCA2OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCAKKyAgICA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgCisgICAgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NCwgMTI4LCA4MywgODAsIDc5LCA3OSwgNzgsIDEyOCwgODMsIDgwLCAKKyAgICA3NiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNzYsIDY1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MywgODAsIAorICAgIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgCisgICAgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCAKKyAgICA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCA2OCwgNjksIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY3LCA2OSwgCisgICAgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIDIwNCwgODMsIDgwLCA2OSwgODMsIDc3LCA3MywgNzYsIAorICAgIDIwNywgODMsIDgwLCA2OSwgNjksIDY4LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDcyLCAKKyAgICAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgMjAwLCA4MywgODAsIDY5LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA4MywgODAsIAorICAgIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgCisgICAgMjEwLCA4MywgODAsIDY5LCA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCAKKyAgICA3MiwgNzMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIAorICAgIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgCisgICAgNjksIDEyOCwgODMsIDgwLCA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAKKyAgICAxMjgsIDgzLCA4MCwgNjUsIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIAorICAgIDE5NywgODMsIDgwLCA2NSwgMTI4LCA4MywgNzksIDg5LCAxMjgsIDgzLCA3OSwgODcsIDczLCA3NiwgMjA3LCA4MywgNzksIAorICAgIDg3LCAxMjgsIDgzLCA3OSwgODUsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDgzLCA3OSwgODUsIDg0LCA3MiwgNDUsIDgzLCA3NiwgCisgICAgNjUsIDg2LCA2OSwgMjE3LCA4MywgNzksIDg1LCA4NCwgMjAwLCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgzLCAKKyAgICA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgNzksIDg1LCA3OCwgMTk2LCA4MywgNzksIDg1LCA3OCwgNjUsIDgwLCAxMjgsIAorICAgIDgzLCA3OSwgODUsIDEyOCwgODMsIDc5LCA4MywgMTI4LCA4MywgNzksIDgyLCAxOTMsIDgzLCA3OSwgODEsIDEyOCwgODMsIAorICAgIDc5LCA3OSwgMjA2LCA4MywgNzksIDc4LCA3NCwgNjUsIDc3LCAxMjgsIDgzLCA3OSwgNzgsIDcxLCAxMjgsIDgzLCA3OSwgCisgICAgNzgsIDEyOCwgODMsIDc5LCA3NywgODAsIDY5LCA3OCwgMTk5LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCAKKyAgICA2OCwgODUsIDgzLCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3MiwgMTI4LCA4MywgNzksIAorICAgIDcxLCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIDY3LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAyMTIsIAorICAgIDgzLCA3OSwgMTk4LCA4MywgNzksIDY3LCA3MywgNjksIDg0LCA4OSwgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIDIxMCwgCisgICAgODMsIDc5LCA2NSwgODAsIDEyOCwgODMsIDc5LCA2NSwgMTI4LCA4MywgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAKKyAgICA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgNjksIAorICAgIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgNzgsIDY1LCAyMDgsIDgzLCAKKyAgICA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIAorICAgIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA2OSwgNjUsIDgyLCAKKyAgICAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgCisgICAgMjE1LCA4MywgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAKKyAgICAxOTksIDgzLCA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgCisgICAgNjksIDY5LCA4MCwgMjE3LCA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCAKKyAgICA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIAorICAgIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgCisgICAgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCAKKyAgICA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCAKKyAgICA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgCisgICAgMTI4LCA4MywgNzMsIDg4LCA4NCwgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKKyAgICA3MiwgMjExLCA4MywgNzMsIDg4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgCisgICAgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCAKKyAgICA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCAKKyAgICA3MywgNzgsIDE5NywgODMsIDczLCAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCAKKyAgICA3MywgODIsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCisgICAgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIAorICAgIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIAorICAgIDY5LCA4NSwgNzcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCAKKyAgICA2OSwgODUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIAorICAgIDgzLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIAorICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIAorICAgIDczLCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAKKyAgICAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDIxMCwgODMsIAorICAgIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIDcxLCA4NSwgMjA2LCA4MywgCisgICAgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgNzYsIDc1LCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgNjksIDEyOCwgODMsIAorICAgIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIDEyOCwgODMsIDczLCA3NSwgCisgICAgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIDcxLCA3OCwgODMsIDEyOCwgCisgICAgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCA3MywgNzEsIDY5LCAyMDQsIDgzLCAKKyAgICA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCAKKyAgICA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIAorICAgIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAKKyAgICAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIAorICAgIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA4NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIDEyOCwgODMsIDcyLCAKKyAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgNzIsIDg1LCA3MCwgCisgICAgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCAKKyAgICA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIAorICAgIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAKKyAgICAxMjgsIDgzLCA3MiwgODIsIDczLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIAorICAgIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgCisgICAgODMsIDcyLCA3OSwgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIAorICAgIDY5LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODQsIDg5LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIAorICAgIDg0LCA4NywgNzMsIDcxLCA0NSwgODMsIDc5LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCAKKyAgICA0NSwgNzksIDgzLCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzgsIDY1LCA4NSwgCisgICAgMTk2LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgODMsIDcyLCAKKyAgICA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgODMsIDcyLCA3OSwgCisgICAgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA2NiwgNzQsIDY1LCA4MiwgNzUsIDY1LCAyMDYsIDgzLCA3MiwgNzksIAorICAgIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNjUsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDgyLCAyMTIsIDgzLCA3MiwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNzksIDIwOSwgODMsIDcyLCA3OSwgODAsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgNzksIDg0LCA3MywgNzgsIDE5OSwgODMsIDcyLCA3OSwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDgzLCA3MiwgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCAKKyAgICA3OSwgMTk3LCA4MywgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIAorICAgIDY1LCA3NiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgCisgICAgNzIsIDczLCA4MiwgMjEyLCA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDIxMCwgODMsIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIAorICAgIDg0LCAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgCisgICAgNzMsIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAKKyAgICAxOTMsIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIAorICAgIDcyLCA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIAorICAgIDgzLCA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCAKKyAgICA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIAogICAgIDEyOCwgODMsIDcyLCA2OSwgMjEyLCA4MywgNzIsIDY5LCA4MywgNzIsIDc2LCA2NSwgNzcsIDEyOCwgODMsIDcyLCA2OSwgCiAgICAgODMsIDcyLCA3MywgNzEsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgMTk5LCA4MywgNzIsIDY5LCA4MywgNzIsIDUwLCAKICAgICAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgMTI4LCA4MywgNzIsIDY5LCA4MSwgNjksIDIwNCwgODMsIDcyLCA2OSwgODAsIApAQCAtODgwLDM3NiArOTg0LDM4NCBAQAogICAgIDEyOCwgODMsIDcyLCA2OSwgNjksIDIwNiwgODMsIDcyLCA2OSwgNjksIDEyOCwgODMsIDcyLCA2OSwgNDUsIDcxLCA3OSwgCiAgICAgNjUsIDg0LCAxMjgsIDgzLCA3MiwgMTk3LCA4MywgNzIsIDY3LCA3MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODksIDEyOCwgCiAgICAgODMsIDcyLCA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgNzIsIDY1LCAKLSAgICA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NCwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDg0LCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgNTQsIDEyOCwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgCi0gICAgNzksIDIxMCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgCi0gICAgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIAotICAgIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgCi0gICAgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIAotICAgIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgCi0gICAgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIAotICAgIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgCi0gICAgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIAotICAgIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgCi0gICAgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIAotICAgIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIDc3LCA4NSwgCi0gICAgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgMTI4LCAKLSAgICA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIDIxMiwgODMsIAotICAgIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgNzMsIDc4LCAKLSAgICA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCA3MywgNjcsIAotICAgIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIDc3LCA3MywgCi0gICAgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCAKLSAgICA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIDc5LCA3MywgCi0gICAgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIAotICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAotICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3MywgODMsIAotICAgIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgCi0gICAgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCAKLSAgICA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIAotICAgIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIAotICAgIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIDY1LCA3NiwgCi0gICAgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgMTI4LCA4MywgCi0gICAgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCA3OSwgNzYsIDc2LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjcsIAotICAgIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA2NywgNzksIDgyLCA4MCwgCi0gICAgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAKLSAgICAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIAotICAgIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKLSAgICAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIAotICAgIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgCi0gICAgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCAKLSAgICA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCAKLSAgICA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA3MywgNzYsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgCi0gICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIAotICAgIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgCi0gICAgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgCi0gICAgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCAKLSAgICA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIAotICAgIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAKLSAgICAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCAKLSAgICA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIAotICAgIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgCi0gICAgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCAKLSAgICA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIAotICAgIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAKLSAgICAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIAotICAgIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIDEyOCwgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgCi0gICAgNjksIDEyOCwgODMsIDY1LCA3NSwgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCAKLSAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgCi0gICAgMTI4LCA4MywgNjUsIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIAotICAgIDEyOCwgODMsIDY1LCA3MSwgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNjgsIAotICAgIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIAotICAgIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgCi0gICAgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAKLSAgICAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgCi0gICAgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCAKLSAgICA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIAotICAgIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgCi0gICAgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgCi0gICAgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgCi0gICAgODIsIDg5LCA2NSwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCAKLSAgICA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCAKLSAgICA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgCi0gICAgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgCi0gICAgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIAotICAgIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIAotICAgIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgCi0gICAgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCA3MSwgNjYsIAotICAgIDIxNywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCA4NCwgNjUsIAotICAgIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4NCwgCi0gICAgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgODAsIDEyOCwgCi0gICAgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIAotICAgIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgNzksIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIAotICAgIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgODIsIDgyLCA2OSwgCi0gICAgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCA2OSwgMjAwLCA4MiwgCi0gICAgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCAKLSAgICA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgCi0gICAgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCAKLSAgICA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgNzksIDc5LCAxMjgsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIAotICAgIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgCi0gICAgNjksIDg0LCAxMjgsIDgyLCA3OSwgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgCi0gICAgODIsIDc5LCA2NSwgODMsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCAKLSAgICA3OCwgODksIDczLCA3OCwgMTk5LCA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIAotICAgIDc4LCA2NSwgMjA1LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAotICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIAotICAgIDc4LCA3MCwgNzksIDgyLCA5MCwgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgCi0gICAgNjUsIDEyOCwgODIsIDczLCA3NSwgODIsIDczLCA3NSwgMTI4LCA4MiwgNzMsIDczLCAxMjgsIDgyLCA3MywgNzEsIDg2LCAKLSAgICA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAKLSAgICAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIAotICAgIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAKLSAgICAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIAotICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAotICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgCi0gICAgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgCi0gICAgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCAKLSAgICA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIAotICAgIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIAotICAgIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgCi0gICAgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAKLSAgICAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgODQsIAotICAgIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCA3OSwgCi0gICAgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCAKLSAgICA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgODQsIAotICAgIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgCi0gICAgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIDg0LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIAotICAgIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCA3OCwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIDY5LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIAotICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIAotICAgIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgCi0gICAgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIAotICAgIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgCi0gICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCAKLSAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIAotICAgIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCAKKyAgICA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCA4MywgNzIsIAorICAgIDY1LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIDcyLCA2NSwgCisgICAgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCAKKyAgICA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgCisgICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCA2NywgMTI4LCA4MywgNzEsIAorICAgIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIAorICAgIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAKKyAgICA3OCwgODQsIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIAorICAgIDY5LCA3OCwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgCisgICAgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCAKKyAgICA4MywgNjksIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIAorICAgIDcwLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgCisgICAgODUsIDczLCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCAKKyAgICA2OSwgODIsIDg2LCA3MywgNjcsIDE5NywgODMsIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIAorICAgIDIxMSwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgCisgICAgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCAKKyAgICA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIDczLCAxMjgsIDgzLCA2OSwgNzcsIAorICAgIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAxMjgsIDgzLCA2OSwgNzcsIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIDc3LCA3MywgODMsIDc5LCA3MCwgCisgICAgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA3NywgNzMsIDc3LCAKKyAgICA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDgzLCA2OSwgNzcsIAorICAgIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCAyMDYsIDgzLCA2OSwgCisgICAgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIAorICAgIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIDY5LCA3NywgNzMsIDQ1LCA4NiwgCisgICAgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCisgICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgCisgICAgMTkzLCA4MywgNjksIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgCisgICAgODMsIDY5LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA2OSwgNjksIAorICAgIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA2NywgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCA4MiwgNjksIDg0LCAKKyAgICAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIAorICAgIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgCisgICAgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCAKKyAgICA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgCisgICAgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIAorICAgIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgMTI4LCA4MywgCisgICAgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCA2OSwgNjgsIDY5LCAKKyAgICA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgMjA0LCA4MywgNjcsIAorICAgIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCA2OSwgODAsIDg0LCA2OSwgCisgICAgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCAKKyAgICA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDY2LCA4NSwgMTk0LCAKKyAgICA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA2NSwgCisgICAgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NywgMTI4LCAKKyAgICA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIAorICAgIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgCisgICAgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCAKKyAgICA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIAorICAgIDgzLCA2NSwgODMsIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgCisgICAgODIsIDEyOCwgODMsIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCAKKyAgICA3MSwgMTkzLCA4MywgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgCisgICAgMTI4LCA4MywgNjUsIDc4LCA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCAKKyAgICA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgCisgICAgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCAKKyAgICA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgCisgICAgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIAorICAgIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgNzYsIDQ1LCA2NSwgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgCisgICAgNjUsIDc1LCA3OSwgODQsIDEyOCwgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgMTk3LCAKKyAgICA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MywgNjUsIAorICAgIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIDgzLCA2NSwgCisgICAgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDcxLCAKKyAgICAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCAKKyAgICA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIAorICAgIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgCisgICAgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCAKKyAgICA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIAorICAgIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIAorICAgIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgCisgICAgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAKKyAgICAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCAKKyAgICA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgCisgICAgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCAKKyAgICA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgCisgICAgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCAKKyAgICA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCAKKyAgICA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIAorICAgIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIAorICAgIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgCisgICAgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgCisgICAgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIAorICAgIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIAorICAgIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAKKyAgICAxMjgsIDgyLCA4NSwgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgMTI4LCA4MiwgODUsIAorICAgIDcxLCA2NiwgMjE3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIAorICAgIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgCisgICAgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCAKKyAgICA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA3OSwgCisgICAgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgCisgICAgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAKKyAgICAxMjgsIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCAKKyAgICA4MiwgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCAKKyAgICA4MiwgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgODIsIAorICAgIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgCisgICAgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIAorICAgIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgCisgICAgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCAKKyAgICA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIAorICAgIDc5LCA3NywgNjUsIDIwNiwgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCA3MiwgCisgICAgNzMsIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCAKKyAgICA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCA4MywgODQsIAorICAgIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIDc4LCAxOTksIAorICAgIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIDgyLCA3NywgCisgICAgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNjksIDEyOCwgODIsIDc0LCA2OSwgCisgICAgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgCisgICAgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIAorICAgIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIAorICAgIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgCisgICAgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIDY1LCAxMjgsIDgyLCA3MywgNzUsIDgyLCAKKyAgICA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIAorICAgIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgCisgICAgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCAKKyAgICA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIAorICAgIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIAorICAgIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgCisgICAgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIAorICAgIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgCisgICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgCisgICAgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCAKKyAgICA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcxLCAKKyAgICA4OSwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIAorICAgIDY5LCA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIAorICAgIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgCisgICAgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIAorICAgIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgCisgICAgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIAorICAgIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCAKKyAgICA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIAorICAgIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCAKKyAgICA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgCisgICAgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCAKKyAgICA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIAorICAgIDEyOCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIAorICAgIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgCisgICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCAKKyAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIAorICAgIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgCisgICAgNjksIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCAKKyAgICA3MywgNjUsIDEyOCwgODIsIDY5LCA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIAogICAgIDY3LCAxOTcsIDgyLCA2OSwgNjgsIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgCiAgICAgNjcsIDg5LCA2NywgNzYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCAKICAgICA4NCwgNzMsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCkBAIC0xMjY1LDU2ICsxMzc3LDU3IEBACiAgICAgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIAogICAgIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgCiAgICAgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgMTI4LCA4MiwgNjUsIAotICAgIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCA2NSwgNzMsIDc2LCAKLSAgICAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIDczLCAxMjgsIDgyLCAKLSAgICA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzAsIDY5LCAxMjgsIDgyLCA2NSwgNjksIAotICAgIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgCi0gICAgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIAotICAgIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgCi0gICAgNzMsIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAKLSAgICAxMjgsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAKLSAgICAxMjgsIDgyLCA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCAKLSAgICA0OCwgNTAsIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIAotICAgIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIAotICAgIDgyLCA0OCwgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgCi0gICAgNDgsIDQ5LCA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCAKLSAgICA1MSwgMTI4LCA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIAotICAgIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCAKLSAgICA1MSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIAotICAgIDEyOCwgODIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIAotICAgIDg0LCAxMjgsIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIAotICAgIDc5LCAxMjgsIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIAotICAgIDY1LCA2NSwgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIAotICAgIDY5LCAxMjgsIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIAotICAgIDg4LCAxMjgsIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIAotICAgIDg0LCAxMjgsIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODEsIDg1LCA4MiwgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAKLSAgICAxOTcsIDgxLCA4NSwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIAotICAgIDc5LCA4MCwgMTI4LCA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgCi0gICAgODMsIDgzLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIAotICAgIDE5MywgODEsIDg1LCA3MywgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgCi0gICAgMjExLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCi0gICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAotICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCAKLSAgICA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIAotICAgIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgCi0gICAgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIAotICAgIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIAotICAgIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAKLSAgICAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCAKLSAgICA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCAKLSAgICA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIAorICAgIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgCisgICAgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCAKKyAgICA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIAorICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgCisgICAgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIAorICAgIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIAorICAgIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgCisgICAgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgCisgICAgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCA4NCwgMTI4LCAKKyAgICA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCA4MiwgNjUsIAorICAgIDUxLCAxMjgsIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIDEyOCwgODIsIAorICAgIDQ4LCA1MCwgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIDQ4LCA1MCwgCisgICAgNTMsIDEyOCwgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgODIsIDQ4LCA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgODIsIDQ4LCAKKyAgICA0OSwgNTYsIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDgyLCA0OCwgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4MiwgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA4MiwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDgyLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgMTI4LCA4MiwgCisgICAgNDUsIDY3LCA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgODQsIDEyOCwgCisgICAgODEsIDg5LCA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgNzksIDEyOCwgCisgICAgODEsIDg5LCA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgNjUsIDY1LCAKKyAgICAxMjgsIDgxLCA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgODEsIDg3LCA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgODgsIDEyOCwgCisgICAgODEsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgODQsIDEyOCwgCisgICAgODEsIDg1LCA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCA4MSwgODUsIDgyLCAKKyAgICAxMjgsIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIDE5NywgODEsIDg1LCAKKyAgICA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgNzksIDgwLCAxMjgsIAorICAgIDgxLCA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCA4MywgODMsIDY5LCA3OCwgCisgICAgNjcsIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgMTkzLCA4MSwgODUsIDczLCAKKyAgICA3OCwgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDgxLCA4NSwgNzMsIAorICAgIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCA4NSwgNzAsIDEyOCwgODEsIAorICAgIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDY5LCAKKyAgICAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCA4MSwgODUsIDY1LCA4NCwgNjksIAorICAgIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MSwgODUsIDY1LCA4MiwgCisgICAgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCAKKyAgICAyMTAsIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgODUsIDgwLCA3NiwgCisgICAgMTk3LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIAorICAgIDIxMiwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCAKKyAgICA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCAKKyAgICA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAKKyAgICAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgCisgICAgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgCisgICAgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgCisgICAgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCAKKyAgICA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCA4MSwgNzIsIDY5LCA2OSwgMTI4LCAKKyAgICA4MSwgNzIsIDY5LCAxMjgsIDgxLCA3MiwgNjUsIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgODEsIDcxLCA2NSwgMTI4LCAKICAgICA4MSwgNjksIDg0LCA2NSwgNzgsIDY1LCAxMjgsIDgxLCA2OSwgNjksIDEyOCwgODEsIDY5LCAxMjgsIDgxLCA2NSwgODUsIAogICAgIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIAogICAgIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCA4MywgMTI4LCA4MSwgCkBAIC0xMzI4LDI5NyArMTQ0MSwzMDcgQEAKICAgICA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCAKICAgICA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCAKICAgICA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCAKLSAgICA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAxMjgsIDgwLCA4NSwgCi0gICAgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3NSwgNjUsIAotICAgIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgODUsIDgyLCA4MywgCi0gICAgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCAKLSAgICA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCAKLSAgICA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIAotICAgIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCAKLSAgICA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCAKLSAgICA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCAxMjgsIDgwLCAKLSAgICA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCAKLSAgICA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIAotICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgCi0gICAgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIAotICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCAKLSAgICA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgCi0gICAgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIAotICAgIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIAotICAgIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgCi0gICAgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA4MCwgODIsIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCAKLSAgICA2OSwgNzAsIDY1LCA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIAotICAgIDgyLCA2OSwgNjcsIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgCi0gICAgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCAKLSAgICA2NywgNjksIDY4LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIAotICAgIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgCi0gICAgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCAKLSAgICA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgODIsIDY1LCA3NywgNDUsIAotICAgIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCA2NSwgNzcsIDEyOCwgCi0gICAgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAxMjgsIDgwLCA4MCwgCi0gICAgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCA4MiwgMjExLCA4MCwgCi0gICAgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIDc5LCA4NywgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAyMTcsIDgwLCA3OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgCi0gICAgODAsIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4MCwgNzksIDgzLCAKLSAgICA4NCwgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCA4MywgODQsIDEyOCwgODAsIAotICAgIDc5LCA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNzksIDgyLCA4MiwgCi0gICAgNjksIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgMjExLCA4MCwgNzksIDgwLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIDY4LCA3NiwgNjksIAotICAgIDEyOCwgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIDgwLCA3OSwgNzYsIAotICAgIDczLCA4MywgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgCi0gICAgNjksIDEyOCwgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCAKLSAgICA3NSwgNzksIDc0LCA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgCi0gICAgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDgwLCAKLSAgICA3OSwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgNzksIDczLCA3OCwgMjEyLCA4MCwgNzksIDY5LCA4NCwgODIsIDIxNywgODAsIAotICAgIDc5LCA2OSwgODQsIDczLCAxOTUsIDgwLCA3OSwgNjgsIDY1LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgNjUsIDEyOCwgCi0gICAgODAsIDc5LCAxMjgsIDgwLCAyMDcsIDgwLCA3OCwgNjksIDg1LCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MCwgNzYsIDg1LCAKLSAgICA4NCwgNzksIDEyOCwgODAsIDc2LCA4NSwgODMsIDQ1LCA3NywgNzMsIDc4LCA4NSwgMjExLCA4MCwgNzYsIDg1LCA4MywgCi0gICAgMTI4LCA4MCwgNzYsIDg1LCA4MiwgNjUsIDc2LCAxMjgsIDgwLCA3NiwgODUsIDc3LCA2OSwgMTk2LCA4MCwgNzYsIDg1LCAKLSAgICA3NywgMTI4LCA4MCwgNzYsIDg1LCA3NSwgMTI4LCA4MCwgNzYsIDg1LCA3MSwgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCAKLSAgICA4MCwgNzYsIDc5LCA4MCwgNzIsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCA3MiwgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIAotICAgIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCA3NiwgNjUsIDgzLCA4NCwgNzMsIDY3LCA4MywgMTI4LCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgNjksIDEyOCwgODAsIDc2LCA2NSwgNzgsIDE5NywgODAsIDc2LCA2NSwgNzgsIDY3LCAyMDMsIDgwLCA3NiwgNjUsIDc1LCAKLSAgICAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3MiwgNzksIDc2LCA2OCwgNjksIAotICAgIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNzMsIDY3LCA2NSwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIDg4LCAxMjgsIDgwLCA3MywgODcsIDgyLCAKLSAgICAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIAotICAgIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCA3NiwgMTI4LCA4MCwgNzMsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIDgwLCA3MywgODIsIDczLCA3MSwgMTI4LCAKLSAgICA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA4MCwgNzMsIDgwLCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgCi0gICAgNjksIDc3LCA2NiwgNjUsIDEyOCwgODAsIDczLCA4MCwgMTI4LCA4MCwgNzMsIDc4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCAKLSAgICA4MCwgNzMsIDc4LCA2OSwgNjUsIDgwLCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA3MywgNzgsIDE5NywgODAsIDczLCA3OCwgNjUsIAotICAgIDgyLCA2NiwgNzksIDgyLCA2NSwgODMsIDEyOCwgODAsIDczLCA3NiwgNzYsIDEyOCwgODAsIDczLCA3NiwgMTk3LCA4MCwgCi0gICAgNzMsIDc2LCA2NywgODIsIDc5LCAyMTUsIDgwLCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODAsIDczLCA3NSwgNzksIAotICAgIDEyOCwgODAsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDE5OSwgODAsIDczLCA2OSwgODgsIDEyOCwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgCi0gICAgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MCwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3NSwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCAyMDgsIAotICAgIDgwLCA3MywgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDgwLCAxMjgsIDgwLCA3MywgNjksIDY5LCA4NCwgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA2OSwgODEsIDEyOCwgODAsIDczLCA2OSwgNjcsIDY5LCAxMjgsIDgwLCA3MywgNjksIDEyOCwgODAsIDczLCAKLSAgICA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgODUsIDg0LCA3OSwgODIsIAotICAgIDg1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA3NywgMTkzLCA4MCwgNzMsIDY1LCA3OCwgNzksIDEyOCwgODAsIDIwMSwgODAsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODAsIDcyLCA4NSwgODQsIDcyLCA2NSwgNzksIDEyOCwgODAsIDcyLCA4NSwgMjEwLCA4MCwgCi0gICAgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDcyLCA4MiwgNjUsIDgzLCA2OSwgMTI4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDgzLCAKLSAgICAxMjgsIDgwLCA3MiwgNzksIDY5LCA3OCwgNzMsIDY3LCA3MywgNjUsIDIwNiwgODAsIDcyLCA3OSwgNjUsIDEyOCwgODAsIAotICAgIDcyLCA3OSwgMTI4LCA4MCwgNzIsIDIwNywgODAsIDcyLCA3OCwgNjUsIDY5LCAyMDMsIDgwLCA3MiwgNzMsIDc4LCA4NCwgCi0gICAgNzIsIDg1LCAxMjgsIDgwLCA3MiwgNzMsIDc2LCA3OSwgODMsIDc5LCA4MCwgNzIsIDY5LCA4MiwgMjExLCA4MCwgNzIsIDczLCAKLSAgICA3NiwgNzMsIDgwLCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODQsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKLSAgICA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDgwLCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAyMDAsIDgwLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDcyLCAyMDEsIDgwLCA3MiwgNjksIDY5LCAxMjgsIDgwLCA3MiwgNjksIDEyOCwgODAsIDcyLCAKLSAgICA2NSwgODMsIDY5LCA0NSwgMTk4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTQsIDgwLCA3MiwgNjUsIDgyLCA4OSwgNzgsIAotICAgIDcxLCA2OSwgNjUsIDIwNCwgODAsIDcyLCA2NSwgODIsIDEyOCwgODAsIDcyLCA2NSwgNzgsIDEyOCwgODAsIDcyLCA2NSwgCi0gICAgNzcsIDEyOCwgODAsIDcyLCA2NSwgNzMsIDgzLCA4NCwgNzksIDIxMSwgODAsIDcyLCA2NSwgNzEsIDgzLCA0NSwgODAsIAotICAgIDE5MywgODAsIDcyLCA2NSwgNjUsIDgyLCA3NSwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgCi0gICAgNjUsIDEyOCwgODAsIDcxLCAxMjgsIDgwLCA3MCwgMTI4LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA4MCwgNjksIDg1LCA4NCwgCi0gICAgNjUsIDY5LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDc5LCA3NSwgNzksIDg1LCAKLSAgICA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzMsIDEyOCwgODAsIDY5LCA4NCwgNjUsIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDc2LCA3NiwgNjksIDE5NiwgODAsIDY5LCA4MywgNzksIDEyOCwgCi0gICAgODAsIDY5LCA4MywgMjA3LCA4MCwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODAsIDY5LCA4MywgNjksIDg0LCAxOTMsIDgwLCAKLSAgICA2OSwgMjExLCA4MCwgNjksIDgyLCA4NCwgNzIsIDIwNywgODAsIDY5LCA4MiwgODMsIDgwLCA2OSwgNjcsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDY5LCA4MiwgODMsIDc5LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA3MywgNjUsIDIwNiwgODAsIDY5LCA4MiwgODMsIDY5LCAKLSAgICA4NiwgNjksIDgyLCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgCi0gICAgODIsIDEyOCwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MCwgNjksIDgyLCAKLSAgICA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDczLCAxMjgsIAotICAgIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgODIsIDc3LCAKLSAgICA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIAotICAgIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgCi0gICAgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgMTI4LCAKLSAgICA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgCi0gICAgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKLSAgICAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIAotICAgIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgCi0gICAgNjUsIDkwLCA2OSwgODIsIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCAKLSAgICA2NSwgMjE1LCA4MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgNzgsIAotICAgIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgMjAwLCA4MCwgCi0gICAgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIAotICAgIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCAKLSAgICA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgNzksIDg1LCAKLSAgICA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgCi0gICAgMTI4LCA4MCwgNjUsIDgzLCA2OSwgODEsIDEyOCwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDg0LCAKLSAgICAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIDY1LCA4MiwgNzMsIAotICAgIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgNzcsIDY5LCA3OCwgNzksIDIwNiwgCi0gICAgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIDgwLCA2NSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgNzcsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIAotICAgIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgCi0gICAgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgCi0gICAgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCAKLSAgICA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCAKLSAgICA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIAotICAgIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgCi0gICAgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDcxLCA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKLSAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAotICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCi0gICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIAotICAgIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgCi0gICAgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAKLSAgICA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIAotICAgIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgCi0gICAgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIAotICAgIDIwMSwgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIAotICAgIDY1LCA2OCwgMTkzLCA4MCwgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgCi0gICAgNjcsIDc1LCA2NSwgNzEsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCAKLSAgICA4NCwgNzksIDEyOCwgODAsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIAotICAgIDY1LCA3MywgMTI4LCA4MCwgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgCi0gICAgODAsIDUwLCAxMjgsIDgwLCA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAKLSAgICAxMjgsIDgwLCA0OCwgNDgsIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIAotICAgIDQ4LCA1MSwgMTI4LCA4MCwgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzksIDg5LCA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzksIDg4LCA3MywgNjUsIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIAotICAgIDg4LCA2OSwgNzMsIDE5MywgNzksIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgCi0gICAgNzksIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCAKLSAgICA4OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIAotICAgIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgCi0gICAgODYsIDEyOCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgCi0gICAgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgCi0gICAgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCAKLSAgICA4NCwgNzIsIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIAotICAgIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAKLSAgICAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgCi0gICAgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKLSAgICA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgCi0gICAgMjA0LCA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgCi0gICAgODMsIDczLCA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCAKLSAgICA4NSwgODMsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIAotICAgIDc5LCAyMTAsIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgCi0gICAgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIAotICAgIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCAKLSAgICA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgMjA2LCA3OSwgNzksIDkwLCA2OSwgMTI4LCA3OSwgNzksIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIDg1LCAxMjgsIDc5LCA3OSwgCi0gICAgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIDg1LCAxMjgsIDc5LCAKLSAgICA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIDc5LCA3OCwgNjksIAotICAgIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCA2NywgNzksIDc3LCAKLSAgICA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIAotICAgIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgCi0gICAgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCAKLSAgICA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCAKLSAgICA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgCi0gICAgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgCi0gICAgMjA1LCA3OSwgNzIsIDEyOCwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCA3NSwgMTI4LCA3OSwgCi0gICAgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgODIsIAotICAgIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgNzksIDcwLCA3MCwgCi0gICAgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgNjcsIDg0LCA3OSwgCi0gICAgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDIxMCwgNzksIDY3LCAKLSAgICA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIAotICAgIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAKLSAgICAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIAotICAgIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgCi0gICAgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgCi0gICAgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAKLSAgICAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCAKLSAgICA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIAotICAgIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCAKLSAgICA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAKLSAgICAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIAotICAgIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgCi0gICAgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIAotICAgIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIAotICAgIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIAotICAgIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgCi0gICAgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCAKLSAgICA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIAotICAgIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCAKLSAgICA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIAotICAgIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIAotICAgIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgCi0gICAgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCAKKyAgICA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIAorICAgIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgCisgICAgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCAKKyAgICA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIAorICAgIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgCisgICAgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgCisgICAgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCAKKyAgICA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCAKKyAgICA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCisgICAgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIAorICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIAorICAgIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgCisgICAgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIAorICAgIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgCisgICAgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCAKKyAgICA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIAorICAgIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgCisgICAgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgCisgICAgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIAorICAgIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgCisgICAgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCAKKyAgICA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgCisgICAgODMsIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCAKKyAgICA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCAKKyAgICA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIAorICAgIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgCisgICAgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCAKKyAgICA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIAorICAgIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgCisgICAgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAKKyAgICA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIAorICAgIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgCisgICAgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIAorICAgIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCAKKyAgICA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgCisgICAgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCAKKyAgICA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIAorICAgIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIAorICAgIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgCisgICAgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIDcyLCAxMjgsIDgwLCAKKyAgICA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzYsIAorICAgIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgNzMsIDEyOCwgCisgICAgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA4MCwgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIAorICAgIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIDgyLCAyMTcsIDgwLCA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgCisgICAgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDY1LCAxMjgsIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgCisgICAgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIDc2LCA4NSwgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCAKKyAgICA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCA4NSwgODMsIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgCisgICAgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIDc2LCA4NSwgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgCisgICAgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA4NSwgMTI4LCA4MCwgNzYsIDc5LCA4NywgMTI4LCA4MCwgNzYsIDc5LCAKKyAgICA4MCwgNzIsIDg1LCAxMjgsIDgwLCA3NiwgNjksIDg0LCA3MiwgODIsIDc5LCA3OCwgMTI4LCA4MCwgNzYsIDY4LCAxMjgsIAorICAgIDgwLCA3NiwgNjUsIDg5LCA3MywgNzgsIDE5OSwgODAsIDc2LCA2NSwgODMsIDg0LCA3MywgNjcsIDgzLCAxMjgsIDgwLCA3NiwgCisgICAgNjUsIDc4LCA2OSwgMTI4LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MCwgNzYsIDY1LCA3OCwgNjcsIDIwMywgODAsIDc2LCAKKyAgICA2NSwgNzUsIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCA3OSwgMjExLCA4MCwgNzYsIDY1LCA2NywgNjksIDcyLCA3OSwgNzYsIAorICAgIDY4LCA2OSwgMjEwLCA4MCwgNzYsIDY1LCA2NywgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA3MywgCisgICAgNjcsIDY1LCA4NCwgNzksIDEyOCwgODAsIDczLCA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgODgsIDEyOCwgODAsIDczLCAKKyAgICA4NywgODIsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIAorICAgIDcwLCA3OSwgODIsIDIwMywgODAsIDczLCA4NCwgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIDc2LCAxMjgsIDgwLCA3MywgCisgICAgODMsIDY5LCA3NiwgNjksIDcyLCAxMjgsIDgwLCA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgODAsIDczLCA4MiwgNzMsIDcxLCAKKyAgICAxMjgsIDgwLCA3MywgODIsIDczLCAxOTksIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDgwLCA3MywgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgCisgICAgODAsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAKKyAgICAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIAorICAgIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAKKyAgICAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIAorICAgIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgCisgICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIAorICAgIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgCisgICAgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCAKKyAgICA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIAorICAgIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgCisgICAgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAKKyAgICAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIAorICAgIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgCisgICAgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgCisgICAgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCAKKyAgICA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgCisgICAgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIAorICAgIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgCisgICAgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAorICAgIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCAKKyAgICA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIAorICAgIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgCisgICAgNzIsIDY1LCA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCAKKyAgICA4MCwgMTkzLCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAxMjgsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDgwLCA2OSwgODUsIAorICAgIDg0LCA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzksIDc1LCA3OSwgCisgICAgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3MywgMTI4LCA4MCwgNjksIDg0LCAKKyAgICA2NSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCA2NSwgNzYsIDc2LCA2OSwgMTk2LCA4MCwgNjksIDgzLCA3OSwgCisgICAgMTI4LCA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgCisgICAgODAsIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCA3MiwgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCAKKyAgICA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgODAsIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCAKKyAgICA4MywgNjksIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgCisgICAgNzYsIDY1LCA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCAKKyAgICA2OSwgODIsIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgNjksIDgyLCA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIAorICAgIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCAKKyAgICA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgODIsIDc3LCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgCisgICAgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCAKKyAgICA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIAorICAgIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgCisgICAgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCAKKyAgICA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIAorICAgIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgCisgICAgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIAorICAgIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgCisgICAgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgCisgICAgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIAorICAgIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgCisgICAgNjcsIDE5NywgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIAorICAgIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIDIwMCwgCisgICAgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIDgwLCAKKyAgICA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIAorICAgIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCAKKyAgICA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIDc5LCAKKyAgICA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgCisgICAgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCAKKyAgICA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgCisgICAgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCAKKyAgICA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIAorICAgIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIAorICAgIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgCisgICAgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgCisgICAgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCAKKyAgICA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAKKyAgICAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCA4MCwgCisgICAgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIDEyOCwgCisgICAgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAxMjgsIDgwLCAKKyAgICA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAxMjgsIDgwLCAKKyAgICA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIDY4LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzksIDc2LCAKKyAgICA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNjUsIAorICAgIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAxMjgsIDgwLCAKKyAgICA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIDgwLCA2NSwgNzgsIAorICAgIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgODUsIDc4LCA3MSwgCisgICAgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCA3NywgODMsIDcyLCAKKyAgICA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA3MywgNzgsIAorICAgIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA3OCwgCisgICAgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2NSwgNjksIDcyLCAKKyAgICAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDIwNSwgODAsIDY1LCA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCAKKyAgICA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgCisgICAgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCAKKyAgICA2NSwgMjAzLCA4MCwgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIAorICAgIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDczLCA4MiwgNjksIDE5NiwgODAsIDY1LCA3MywgMTI4LCA4MCwgNjUsIDcyLCA3NiwgCisgICAgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgCisgICAgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgNjUsIDczLCAxMjgsIDgwLCAKKyAgICA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCA4MCwgNTAsIDEyOCwgODAsIAorICAgIDQ4LCA0OSwgNDksIDEyOCwgODAsIDQ4LCA0OSwgNDgsIDEyOCwgODAsIDQ4LCA0OCwgNTcsIDEyOCwgODAsIDQ4LCA0OCwgCisgICAgNTYsIDEyOCwgODAsIDQ4LCA0OCwgNTUsIDEyOCwgODAsIDQ4LCA0OCwgNTQsIDEyOCwgODAsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgODAsIDQ4LCA0OCwgNTIsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDUxLCAxMjgsIDgwLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgODksIAorICAgIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgODgsIDczLCA2NSwgCisgICAgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgODgsIDY5LCA3MywgMTkzLCA3OSwgCisgICAgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgNzgsIDE5OSwgNzksIDg2LCAKKyAgICA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAxMjgsIDc5LCA4NiwgNjksIAorICAgIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgCisgICAgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NiwgMTI4LCA3OSwgODUsIDg0LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgCisgICAgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCAKKyAgICA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCA3OSwgCisgICAgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCAKKyAgICA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIAorICAgIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgCisgICAgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKKyAgICA2OCwgNjksIDIxMCwgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIAorICAgIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgCisgICAgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCAKKyAgICA4MCwgNzksIDgzLCA3MywgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIAorICAgIDY3LCA3MiwgODUsIDgzLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgCisgICAgNjUsIDg0LCA3OSwgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIAorICAgIDczLCA3OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgCisgICAgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgNzksIAorICAgIDkwLCA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgCisgICAgNzcsIDg1LCAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKKyAgICA3OSwgNzgsIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIAorICAgIDgyLCAxMjgsIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgCisgICAgNzksIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIDc3LCA3MywgCisgICAgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCAKKyAgICA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIAorICAgIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgCisgICAgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgCisgICAgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCAKKyAgICA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIAorICAgIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgCisgICAgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCAKKyAgICA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCAKKyAgICA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIAorICAgIDEyOCwgNzksIDY3LCA4NCwgNjksIDIxMiwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIAorICAgIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIAorICAgIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgCisgICAgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCAKKyAgICA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIAorICAgIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgCisgICAgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCAKKyAgICA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIAorICAgIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAKKyAgICA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCAKKyAgICA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIAorICAgIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgCisgICAgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgCisgICAgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAKKyAgICA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgCisgICAgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAKKyAgICAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCAKKyAgICA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIAorICAgIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgCisgICAgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIAorICAgIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgCisgICAgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgCiAgICAgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCAKICAgICA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIAogICAgIDEyOCwgNzgsIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIAogICAgIDg5LCA3OSwgNzksIDEyOCwgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgODksIDc0LCA2NSwgCiAgICAgMTI4LCA3OCwgODksIDczLCA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAyMTIsIDc4LCA4OSwgCiAgICAgNzMsIDIxMSwgNzgsIDg5LCA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCA3OCwgNDUsIDY4LCAKLSAgICA3OSwgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIAotICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIAotICAgIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIAotICAgIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgCi0gICAgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgCi0gICAgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCAKLSAgICA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCAKLSAgICA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIAotICAgIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgCi0gICAgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCAKLSAgICA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIAotICAgIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgCisgICAgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgCisgICAgNzgsIDg5LCA2OSwgNzIsIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAKKyAgICAxMjgsIDc4LCA4OSwgMTk2LCA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCAKKyAgICA3MywgMTI4LCA3OCwgODksIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIAorICAgIDY1LCA2NSwgMTI4LCA3OCwgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIAorICAgIDc4LCA4NywgNzMsIDEyOCwgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIAorICAgIDc4LCA4NywgMTI4LCA3OCwgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIAorICAgIDg1LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIAorICAgIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgCisgICAgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCAKKyAgICA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIAorICAgIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAKKyAgICAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIAorICAgIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCA4NSwgNzYsIDEyOCwgNzgsIAogICAgIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgODUsIDY5LCAxMjgsIDc4LCA4NSwgCiAgICAgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKICAgICA1MCwgNTAsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIApAQCAtMTY1OSw0NzAgKzE3ODIsNDkzIEBACiAgICAgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDc4LCAKICAgICA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgMjA0LCA3OCwgNzksIAogICAgIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAxMjgsIDc4LCA3OSwgNjUsIDEyOCwgNzgsIDc5LCA0NSwgCi0gICAgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAKKyAgICA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIAorICAgIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgCisgICAgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCAKKyAgICA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgCiAgICAgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCAKICAgICA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCAKLSAgICA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIAotICAgIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNzgsIAotICAgIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4OSwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgCi0gICAgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODksIDgyLCAxMjgsIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCAKLSAgICA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAotICAgIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCA3OCwgNzQsIDg1LCA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIDc0LCA4NSwgNjksIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCAKLSAgICA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgNzksIDg4LCAxMjgsIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCAKLSAgICA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAxMjgsIDc4LCA3NCwgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIAotICAgIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCA3MywgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIAotICAgIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDEyOCwgNzgsIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIAotICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIDY5LCAxMjgsIDc4LCA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgCi0gICAgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgNzYsIDczLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCAKLSAgICA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzQsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIAotICAgIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgCi0gICAgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAKLSAgICA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIAotICAgIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAKLSAgICAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzcsIAotICAgIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgCi0gICAgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDczLCAxMjgsIDc4LCA3MywgNzIsIDgzLCAKLSAgICA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCA3OCwgNzMsIAotICAgIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgCi0gICAgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAxMjgsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgCi0gICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzMsIAotICAgIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCi0gICAgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgNzMsIDY2LCAKLSAgICAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgNzIsIDc0LCAKLSAgICA2NSwgMTI4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCAKLSAgICA2OSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgODUsIAotICAgIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAxMjgsIDc4LCA3MSwgNzksIDIxMywgNzgsIDcxLCA3OSwgODQsIDEyOCwgCi0gICAgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3OSwgODAsIDEyOCwgNzgsIDcxLCA3OSwgNzgsIDEyOCwgNzgsIDcxLCAKLSAgICA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDcyLCAxMjgsIDc4LCA3MSwgNzksIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCAKLSAgICA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIAotICAgIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgCi0gICAgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCAKLSAgICA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgCi0gICAgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKLSAgICA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgNjUsIDc3LCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIAotICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgCi0gICAgNzEsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKLSAgICA4MCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIAotICAgIDcxLCA4NSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIAotICAgIDE5NywgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgMjA2LCA3OCwgNzEsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgCi0gICAgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCAKLSAgICA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIAotICAgIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA2NSwgNzMsIDEyOCwgNzgsIAotICAgIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgMjEyLCA3OCwgNjksIAotICAgIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgNjksIDEyOCwgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIDc4LCAKLSAgICA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODAsIAotICAgIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIAotICAgIDc4LCAxMjgsIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzgsIDY5LCA3MSwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAKLSAgICAxMjgsIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgCi0gICAgMTI4LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgCi0gICAgNzgsIDY4LCA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAKLSAgICAxMjgsIDc4LCA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCAKLSAgICA2OCwgNzksIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIAotICAgIDY4LCA3MywgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgCi0gICAgODAsIDEyOCwgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCAKLSAgICA2NSwgMTI4LCA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA2OCwgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgODgsIDEyOCwgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIAotICAgIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgCi0gICAgMTI4LCA3OCwgNjgsIDY1LCAxOTMsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIDc4LCA2NiwgCi0gICAgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgNjYsIDg5LCAKLSAgICAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCA2NiwgNzksIAotICAgIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIDEyOCwgNzgsIAotICAgIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIDY2LCA3MywgCi0gICAgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgNjYsIDczLCAKLSAgICAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIAotICAgIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgCi0gICAgODUsIDY4LCA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIAotICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgCi0gICAgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAKLSAgICAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIAotICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgCi0gICAgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgCi0gICAgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAKLSAgICAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAKLSAgICAxMjgsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDc1LCA4MywgNzMsIAotICAgIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA2NSwgCi0gICAgMTkzLCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgCi0gICAgNTIsIDQ4LCAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAKLSAgICA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIAotICAgIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIAotICAgIDc4LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCAKLSAgICA1NiwgMTI4LCA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIAotICAgIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCAKLSAgICA1NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3OCwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA3OCwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCAKLSAgICA3NywgODksIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIAotICAgIDg5LCA2NSwgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCAKLSAgICA4NywgNzksIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCAKLSAgICA3NywgODcsIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAKLSAgICAyMTUsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIAotICAgIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIAotICAgIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgCi0gICAgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCAKLSAgICA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIAotICAgIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgCi0gICAgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCAKLSAgICA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIAotICAgIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIAotICAgIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgCi0gICAgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCAKLSAgICA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCAKLSAgICA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIAotICAgIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgCi0gICAgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCAKLSAgICA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAKLSAgICAyMDAsIDc3LCA4NSwgNjcsIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIAotICAgIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgCi0gICAgMTk3LCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg1LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODQsIDIwMCwgCi0gICAgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAKLSAgICA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIAotICAgIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgCi0gICAgMTk2LCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIAotICAgIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCAKLSAgICA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIAotICAgIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgCi0gICAgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgCi0gICAgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCAKLSAgICA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgCi0gICAgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCAKLSAgICA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgMTI4LCA3NywgNzksIDY4LCA2OSwgCi0gICAgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgMjA3LCA3NywgNzgsIDg5LCA2NSwgCi0gICAgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIAotICAgIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIAotICAgIDczLCAyMTIsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAKLSAgICAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCAKLSAgICA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIAotICAgIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgCi0gICAgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCAKLSAgICA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIAotICAgIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgCi0gICAgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIAotICAgIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIAotICAgIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgCi0gICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIAotICAgIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCAKLSAgICA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIAotICAgIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDcyLCA5MCwgMTI4LCA3NywgCi0gICAgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAxMjgsIAotICAgIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCA2OSwgCi0gICAgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCA3NywgCi0gICAgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCi0gICAgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCAKLSAgICA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIAotICAgIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIAotICAgIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCAKLSAgICA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIAotICAgIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIAotICAgIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCAKLSAgICA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgCi0gICAgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCAKLSAgICA3NywgNjksIDgzLCA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIAotICAgIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgCi0gICAgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCAKLSAgICA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIAotICAgIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgCi0gICAgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCAKLSAgICA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIAotICAgIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgCi0gICAgNjksIDY5LCA4NCwgNjksIDIwMSwgNzcsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCAKLSAgICA2OSwgNjksIDc3LCAxMjgsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgCi0gICAgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCAKLSAgICA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgNjUsIAotICAgIDIwNiwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIAotICAgIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAKLSAgICAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCAKLSAgICA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIAotICAgIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCAKLSAgICA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIAotICAgIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAKLSAgICAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgCi0gICAgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgNjUsIDg5LCA2OSwgCi0gICAgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCAKLSAgICA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIAotICAgIDg0LCA4MiwgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgCi0gICAgMTI4LCA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCAKLSAgICA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIAotICAgIDgzLCA3MiwgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgCi0gICAgNzYsIDczLCA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAxMjgsIDc3LCAKLSAgICA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgODIsIAotICAgIDgyLCA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MiwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIAotICAgIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgCi0gICAgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCAKLSAgICA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4OSwgNzksIAotICAgIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMjE4LCA3NywgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCAKLSAgICA2NSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIAotICAgIDIxMywgNzcsIDY1LCA3OCwgNjUsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDc3LCA2NSwgNzYsIDg0LCA2OSwgODMsIDE5NywgCi0gICAgNzcsIDY1LCA3NiwgNjksIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzcsIDY1LCA3NiwgMTk3LCAKLSAgICA3NywgNjUsIDc2LCA2NSwgNzUsIDc5LCAyMDYsIDc3LCA2NSwgNzUsIDgzLCA4NSwgODIsIDY1LCAxMjgsIDc3LCA2NSwgNzMsIAotICAgIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgNzcsIDY1LCA3MywgODQsIDY1LCA3MywgCi0gICAgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDg1LCA2NSwgNzgsIAotICAgIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzMsIDc2LCA2NiwgNzksIDIxNiwgCi0gICAgNzcsIDY1LCA3MywgNzUsIDg1LCA4MiwgNzksIDEyOCwgNzcsIDY1LCA3MywgNjgsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDcyLCAKLSAgICA3NCwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzIsIDcyLCA2NSwgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDgyLCA2NSwgNzgsIAotICAgIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgNjUsIDc1LCA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNjUsIDgwLCA4MiwgCi0gICAgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIDg5LCA3MywgNzgsIAotICAgIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY1LCA2OSwgCi0gICAgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCAKLSAgICA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgNzcsIDY1LCA2OSwgCi0gICAgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAyMDAsIAotICAgIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgMTkzLCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgCi0gICAgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA4NiwgNjksIAotICAgIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgCi0gICAgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCA2OSwgMTI4LCAKLSAgICA3NywgNjUsIDY1LCA3MywgMTI4LCA3NywgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNzcsIDQ4LCA1MiwgNTEsIDEyOCwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNDksIDEyOCwgNzcsIAotICAgIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNTIsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDc3LCA0OCwgNTEsIDU1LCAxMjgsIDc3LCA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDUzLCAKLSAgICAxMjgsIDc3LCA0OCwgNTEsIDUyLCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjUsIAotICAgIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgNTAsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIAotICAgIDc3LCA0OCwgNTEsIDQ5LCAxMjgsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIDc3LCA0OCwgCi0gICAgNTAsIDU2LCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1NiwgMTI4LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA3NywgNDgsIDUwLCA1MywgMTI4LCA3NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIAotICAgIDEyOCwgNzcsIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDc3LCA0OCwgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNDksIDU3LCAxMjgsIDc3LCA0OCwgCi0gICAgNDksIDU2LCAxMjgsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1NCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTQsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDUzLCAxMjgsIDc3LCA0OCwgNDksIDUyLCAxMjgsIDc3LCA0OCwgNDksIDUxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MiwgCi0gICAgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgNDksIDUwLCAKLSAgICA2OSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDUwLCA2NiwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgNDgsIDU3LCAKLSAgICAxMjgsIDc3LCA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAxMjgsIDc3LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA3NywgNDgsIAotICAgIDQ4LCA1MSwgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgCi0gICAgNDksIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgCi0gICAgMTI4LCA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgCi0gICAgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgCi0gICAgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgCi0gICAgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIAotICAgIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIAotICAgIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAKLSAgICAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCAKLSAgICA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAotICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCi0gICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIDEyOCwgCi0gICAgNzYsIDc5LCA4NSwgNjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgMjE3LCAKLSAgICA3NiwgNzksIDg0LCA4NSwgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIAotICAgIDc5LCA4MiwgODIsIDY1LCA3MywgNzgsIDY5LCAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgCi0gICAgNzksIDc5LCA4NCwgMTI4LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA3NiwgNzksIDc5LCAKLSAgICAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3NiwgNzksIDc4LCA3MSwgNjUsIAotICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgCi0gICAgODksIDgyLCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCAKLSAgICA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgCi0gICAgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIAotICAgIDc3LCAxMjgsIDc2LCA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgCi0gICAgNzYsIDEyOCwgNzYsIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgNzYsIDc5LCA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgMjAzLCA3NiwgCi0gICAgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDc5LCAKLSAgICA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc3LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIDc2LCA3NCwgODUsIDY4LCAKLSAgICA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCAKLSAgICA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIAotICAgIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIAotICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCi0gICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCAKLSAgICA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIAotICAgIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgCi0gICAgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCAKLSAgICA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgCi0gICAgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCAKLSAgICA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MywgMTI4LCA3NiwgNzMsIAotICAgIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKLSAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIAotICAgIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCAKLSAgICA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIAotICAgIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNjksIAotICAgIDIwNCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDc3LCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIAotICAgIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgCi0gICAgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCAxMjgsIDc2LCAKLSAgICA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIAotICAgIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgCi0gICAgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCAKLSAgICA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIAotICAgIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgCi0gICAgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCA3MCwgODQsIAotICAgIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAKLSAgICAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIAotICAgIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgCi0gICAgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCAKLSAgICA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIAotICAgIDc2LCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgCi0gICAgNzYsIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIAotICAgIDE5NiwgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCAKLSAgICA2NSwgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIAotICAgIDg3LCAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIAotICAgIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgCi0gICAgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCAKLSAgICA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIAotICAgIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCAxMjgsIAotICAgIDc2LCA2NSwgMjA3LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgCi0gICAgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCAKLSAgICA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCAKLSAgICA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIAotICAgIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgCi0gICAgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIAotICAgIDc4LCAxMjgsIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgCisgICAgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDksIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAKKyAgICAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIAorICAgIDc0LCA4OSwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgCisgICAgODksIDgyLCAxMjgsIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCAKKyAgICA3OCwgNzQsIDg1LCA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIAorICAgIDc0LCA4NSwgNjksIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgCisgICAgNzksIDg4LCAxMjgsIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAKKyAgICAxMjgsIDc4LCA3NCwgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDEyOCwgNzgsIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgCisgICAgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCAKKyAgICA3NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIAorICAgIDY5LCAxMjgsIDc4LCA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgCisgICAgNzYsIDczLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAKKyAgICAxMjgsIDc4LCA3MywgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIAorICAgIDcxLCA4NSwgMTI4LCA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgCisgICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICA2OCwgNjUsIDE3OCwgNzgsIDczLCA3NywgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIAorICAgIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgCisgICAgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCAKKyAgICA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIAorICAgIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCAKKyAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgCisgICAgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCAKKyAgICA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgCisgICAgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCAKKyAgICA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKKyAgICA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCisgICAgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIAorICAgIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIAorICAgIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAKKyAgICA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIAorICAgIDIwNiwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIAorICAgIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgCisgICAgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCAKKyAgICA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIAorICAgIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgCisgICAgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgCisgICAgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgCisgICAgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCAKKyAgICA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDEyOCwgNzgsIAorICAgIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDEyOCwgCisgICAgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCAKKyAgICA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIAorICAgIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIAorICAgIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgCisgICAgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCAKKyAgICA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzgsIAorICAgIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgODUsIDgwLCAxMjgsIDc4LCA2OCwgCisgICAgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgNjgsIDc5LCA4NCwgMTI4LCA3OCwgCisgICAgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3OCwgNjgsIDc5LCAKKyAgICA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIDg4LCAxMjgsIDc4LCA2OCwgNzMsIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIDc4LCA2OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgNzgsIDY4LCA3MywgNjUsIDgxLCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODQsIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIDc4LCA2OCwgNjUsIDg0LCAKKyAgICAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCA3OCwgNzEsIAorICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCA2NSwgMTkzLCA3OCwgCisgICAgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIAorICAgIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgCisgICAgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgCisgICAgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCAKKyAgICA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIAorICAgIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgCisgICAgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDY4LCAKKyAgICA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIAorICAgIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDc4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDY1LCA3OSwgMjExLCA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgCisgICAgNzgsIDg0LCA3MiwgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA3NywgNjksIDEyOCwgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCAKKyAgICA2NSwgNzUsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIDcxLCA4MiwgMjAxLCAKKyAgICA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgMTkzLCA3OCwgNjUsIAorICAgIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCA3NSwgODksIDY1LCAKKyAgICA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCAKKyAgICA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIAorICAgIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIAorICAgIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIAorICAgIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAKKyAgICAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIAorICAgIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgCisgICAgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAKKyAgICAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgCisgICAgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgCisgICAgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIAorICAgIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgCisgICAgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgCisgICAgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIAorICAgIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIAorICAgIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAKKyAgICAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIAorICAgIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgCisgICAgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgCisgICAgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCAKKyAgICA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIAorICAgIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgCisgICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgCisgICAgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAKKyAgICAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIAorICAgIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCAKKyAgICA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCAKKyAgICA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg1LCA4NCwgNzIsIAorICAgIDEyOCwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIAorICAgIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAKKyAgICAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIAorICAgIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgCisgICAgODQsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCAKKyAgICA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIAorICAgIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgCisgICAgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCAKKyAgICA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIAorICAgIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCAKKyAgICA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIAorICAgIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgCisgICAgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAKKyAgICAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIAorICAgIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgCisgICAgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgCisgICAgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgCisgICAgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAKKyAgICAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIAorICAgIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAKKyAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIAorICAgIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgCisgICAgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgCisgICAgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDczLCA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCAKKyAgICA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgCisgICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIAorICAgIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgCisgICAgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgNzksIDgzLCA2NywgNzksIDgwLCAKKyAgICA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgCisgICAgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgMTI4LCA3NywgNzIsIDEyOCwgNzcsIAorICAgIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDg4LCAxMjgsIDc3LCA3MSwgCisgICAgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgNzEsIDc5LCA4OCwgMTI4LCAKKyAgICA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAxMjgsIDc3LCA3MSwgMjA3LCAKKyAgICA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCA2OSwgODgsIDEyOCwgNzcsIAorICAgIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgCisgICAgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIAorICAgIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDgxLCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIDcxLCA2NSwgODQsIAorICAgIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIDcwLCA3OSwgNzgsIAorICAgIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgODEsIDEyOCwgNzcsIAorICAgIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODEsIDEyOCwgCisgICAgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIDkwLCA5MCwgNzksIAorICAgIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIAorICAgIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDY5LCA4NCwgCisgICAgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCA3MywgNjUsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgCisgICAgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgODQsIDY1LCAKKyAgICA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NywgNjksIAorICAgIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAxOTcsIDc3LCA2OSwgODMsIDc5LCAKKyAgICAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgODIsIDc5LCA3MywgODQsIAorICAgIDczLCAxOTUsIDc3LCA2OSwgODIsIDc1LCA3MiwgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgCisgICAgODIsIDczLCA2OCwgNzMsIDY1LCA3OCwgODMsIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAKKyAgICAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIAorICAgIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIDc4LCAxMjgsIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgCisgICAgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCAKKyAgICA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgCisgICAgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCAKKyAgICA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIAorICAgIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgCisgICAgMTI4LCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCAKKyAgICA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCAKKyAgICA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgCisgICAgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCAKKyAgICA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIAorICAgIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgCisgICAgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCAKKyAgICA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIAorICAgIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgCisgICAgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgCisgICAgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCAKKyAgICA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAKKyAgICAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIDY2LCAxMjgsIDc3LCAxOTQsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCAKKyAgICA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCA4NCwgODIsIDczLCA4OCwgCisgICAgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIDEyOCwgNzcsIDY1LCAKKyAgICA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgNjUsIDcxLCA2OSwgCisgICAgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDcwLCAKKyAgICA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgCisgICAgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCAKKyAgICA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgCisgICAgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCAKKyAgICA2NSwgODQsIDc5LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgCisgICAgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCAKKyAgICA4NCwgNjUsIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIAorICAgIDY1LCA3MCwgMTI4LCA3NywgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgCisgICAgMTI4LCA3NywgNjUsIDIwOCwgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4MywgODksIDc5LCA3OCwgMTI4LCA3NywgCisgICAgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIAorICAgIDc4LCAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgCisgICAgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgNzYsIDY5LCAKKyAgICA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIDE5NywgNzcsIDY1LCA3NiwgNjUsIAorICAgIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCAKKyAgICAxOTMsIDc3LCA2NSwgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgNzcsIAorICAgIDY1LCA3MywgODQsIDY1LCA3MywgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgCisgICAgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzMsIDc2LCAKKyAgICA2NiwgNzksIDIxNiwgNzcsIDY1LCA3MywgNzUsIDg1LCA4MiwgNzksIDEyOCwgNzcsIDY1LCA3MywgNjgsIDY5LCA3OCwgCisgICAgMTI4LCA3NywgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzIsIDc0LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3MiwgNzIsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA2NSwgNzUsIAorICAgIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgNzIsIDEyOCwgCisgICAgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY1LCAKKyAgICA2OSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgNzQsIDY5LCA4NCwgMTI4LCA3NywgNjUsIDY5LCA3NywgODYsIAorICAgIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDc1LCA4MCwgNjksIDc4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3MSwgCisgICAgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCAKKyAgICA2OSwgNzcsIDY2LCA2NSwgMTI4LCA3NywgNjUsIDY5LCA3NywgMTI4LCA3NywgNjUsIDY5LCA3NiwgNjksIDY5LCAxMjgsIAorICAgIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIDgwLCAxMjgsIDc3LCA2NSwgNjgsIDg5LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA4NSwgCisgICAgMTI4LCA3NywgNjUsIDY4LCA2OCwgNjUsIDIwMCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCAKKyAgICAxOTMsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIAorICAgIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjUsIDY3LCAKKyAgICA4NSwgODQsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCAyMDYsIAorICAgIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2NSwgNjUsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDc3LCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDc3LCA2NSwgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDgsIDUyLCA1MiwgMTI4LCA3NywgCisgICAgNDgsIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCA1MCwgMTI4LCA3NywgNDgsIDUyLCA0OSwgMTI4LCA3NywgNDgsIDUyLCAKKyAgICA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgNDgsIDEyOCwgNzcsIDQ4LCA1MSwgNTcsIDEyOCwgNzcsIDQ4LCA1MSwgNTYsIAorICAgIDEyOCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgNTQsIDEyOCwgNzcsIDQ4LCA1MSwgNTMsIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY2LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3NywgCisgICAgNDgsIDUxLCA1MSwgMTI4LCA3NywgNDgsIDUxLCA1MCwgMTI4LCA3NywgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MSwgNDksIDEyOCwgNzcsIDQ4LCA1MSwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIAorICAgIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgNTAsIDU1LCAxMjgsIDc3LCA0OCwgNTAsIDU0LCAxMjgsIAorICAgIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MiwgMTI4LCA3NywgCisgICAgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MCwgNDksIDEyOCwgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgNzcsIDQ4LCA0OSwgNTYsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCA2NSwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCA1MywgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzcsIDQ4LCA0OSwgNTIsIDEyOCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcyLCAxMjgsIDc3LCAKKyAgICA0OCwgNDksIDUwLCA3MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzAsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY5LCAxMjgsIAorICAgIDc3LCA0OCwgNDksIDUwLCA2OCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjcsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY2LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgMTI4LCA3NywgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDEyOCwgNzcsIDQ4LCA0OCwgNTcsIDEyOCwgNzcsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzcsIDQ4LCA0OCwgNTUsIDEyOCwgNzcsIDQ4LCA0OCwgNTQsIDEyOCwgNzcsIDQ4LCA0OCwgCisgICAgNTMsIDEyOCwgNzcsIDQ4LCA0OCwgNTIsIDEyOCwgNzcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDc3LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc3LCA0OCwgNDgsIDUwLCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDEyOCwgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAxMjgsIDc2LCAKKyAgICA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAxMjgsIDc2LCAKKyAgICA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIAorICAgIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIAorICAgIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIAorICAgIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIAorICAgIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgCisgICAgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAKKyAgICAxMjgsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIAorICAgIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIAorICAgIDc2LCA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIAorICAgIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDE5NywgCisgICAgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDc2LCAKKyAgICA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIAorICAgIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgCisgICAgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCAKKyAgICA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIAorICAgIDEyOCwgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIAorICAgIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgCisgICAgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCAKKyAgICA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIAorICAgIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCAKKyAgICA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgCisgICAgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCAKKyAgICA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIAorICAgIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgCisgICAgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCAKKyAgICA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgCisgICAgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCAKKyAgICA2NywgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgCisgICAgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgCisgICAgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgCisgICAgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCAKKyAgICA3MywgODQsIDEyOCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCAKKyAgICA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIAorICAgIDc4LCAxOTksIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgCisgICAgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCAKKyAgICA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgCisgICAgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCAKKyAgICA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIAorICAgIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCAKKyAgICA4NCwgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgCisgICAgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCAKKyAgICA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIAorICAgIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAKKyAgICAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAKKyAgICAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIAorICAgIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAKKyAgICAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIAorICAgIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgCisgICAgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIAorICAgIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAKKyAgICA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCAKKyAgICA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCAKKyAgICA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIAorICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgCisgICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIAorICAgIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgCisgICAgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIAorICAgIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgCisgICAgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIDc2LCAKKyAgICA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgNzYsIAorICAgIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgCisgICAgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCA2NSwgCisgICAgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIDg3LCAKKyAgICAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCAKKyAgICA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIAorICAgIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgCisgICAgNjUsIDIwNCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCAKKyAgICA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCAxMjgsIDc2LCAKKyAgICA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAxOTcsIDc2LCA2NSwgNzgsIAorICAgIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgCisgICAgNjUsIDc3LCA2OSwgMTk2LCA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCAKKyAgICA2NSwgMTI4LCA3NiwgNjUsIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIAorICAgIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgCisgICAgNzEsIDg5LCA2NSwgNzksIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCAKKyAgICAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIAogICAgIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIAogICAgIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgCiAgICAgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgCiAgICAgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCAKLSAgICA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIAotICAgIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgCi0gICAgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgCi0gICAgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgCi0gICAgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCAKLSAgICA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIAotICAgIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgCi0gICAgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgCi0gICAgODgsIDY1LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCAKLSAgICA3OSwgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCAKLSAgICA4NywgNjksIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIAotICAgIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgCi0gICAgMTI4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAxMjgsIDc1LCAKLSAgICA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgODIsIDEyOCwgNzUsIAotICAgIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgODAsIDEyOCwgNzUsIAotICAgIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgNzUsIDg1LCAKLSAgICAyMDQsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgCi0gICAgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgCi0gICAgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCAKLSAgICA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgCi0gICAgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCAKLSAgICA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIAotICAgIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAKLSAgICAxMjgsIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCA4MiwgNzksIAotICAgIDc4LCA3MywgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIDE5NSwgCi0gICAgNzUsIDc5LCA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODAsIAotICAgIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAxMjgsIDc1LCA3OSwgCi0gICAgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKLSAgICAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIAotICAgIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIAotICAgIDc1LCA3OSwgMjAzLCA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIAotICAgIDcyLCA3OSwgNzcsIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCA3OSwgCi0gICAgNjUsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCAKLSAgICA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCAKLSAgICA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIAotICAgIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIAotICAgIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIAotICAgIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIAotICAgIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAKLSAgICA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgCi0gICAgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCAKLSAgICA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIAotICAgIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgCi0gICAgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCAKLSAgICA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIAotICAgIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgCi0gICAgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCAKLSAgICA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCAKLSAgICA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCAKLSAgICA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIAotICAgIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgCi0gICAgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCAKLSAgICA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAotICAgIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgCi0gICAgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCAKLSAgICA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIAotICAgIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgCi0gICAgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIAorICAgIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgCisgICAgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAxMjgsIDc2LCAKKyAgICA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCA3NiwgNDgsIAorICAgIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgCisgICAgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIAorICAgIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIAorICAgIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgCisgICAgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCAKKyAgICA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCAKKyAgICA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCAKKyAgICA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgODgsIDY1LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAxMjgsIAorICAgIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgCisgICAgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgCisgICAgODgsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCAKKyAgICA3MywgODIsIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIAorICAgIDc1LCA4NSwgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIAorICAgIDc1LCA4NSwgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgCisgICAgNzYsIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgCisgICAgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIAorICAgIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIDEyOCwgNzUsIDgzLCA4MywgCisgICAgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIDc1LCA4MywgODMsIDY5LCAKKyAgICA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIAorICAgIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIDgzLCAxMjgsIAorICAgIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgCisgICAgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIAorICAgIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCAKKyAgICA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgCisgICAgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgCisgICAgODUsIDg1LCAxMjgsIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIAorICAgIDE5NSwgNzUsIDc5LCA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODAsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAxMjgsIDc1LCAKKyAgICA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIAorICAgIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgCisgICAgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCAKKyAgICAxMjgsIDc1LCA3OSwgMjAzLCA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgCisgICAgNzEsIDcyLCA3OSwgNzcsIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKKyAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIAorICAgIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIAorICAgIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAKKyAgICAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgCisgICAgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgCisgICAgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgCisgICAgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCAKKyAgICA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIAorICAgIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCAKKyAgICA4MywgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIAorICAgIDc3LCA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgCisgICAgNjUsIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCAKKyAgICA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIAorICAgIDc1LCA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgCisgICAgNzMsIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCAKKyAgICA2OCwgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIAorICAgIDczLCA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDgwLCAxMjgsIAorICAgIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIAorICAgIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgCisgICAgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAKKyAgICAxMjgsIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCAKKyAgICA3MiwgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAorICAgIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIDczLCA3OCwgODksIDY1LCAxMjgsIAorICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgCisgICAgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIAorICAgIDc1LCA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgCisgICAgNzIsIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCAKKyAgICA3MiwgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIAogICAgIDEyOCwgNzUsIDcyLCA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIAogICAgIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDY4LCAKICAgICAxMjgsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIApAQCAtMjE0MSw3MSArMjI4Nyw3NCBAQAogICAgIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgCiAgICAgNzUsIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKICAgICA3NSwgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAxMjgsIDc1LCA2NSwgODcsIDczLCAxMjgsIDc1LCA2NSwgODYsIAotICAgIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NCwgCi0gICAgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIAotICAgIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgCi0gICAgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIAotICAgIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgCi0gICAgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCAKLSAgICA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIAotICAgIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgCi0gICAgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIAotICAgIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCAKLSAgICA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgCi0gICAgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIDc4LCAKLSAgICA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIAotICAgIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIAotICAgIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4MiwgCi0gICAgNzMsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgCi0gICAgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgCi0gICAgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgCi0gICAgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgCi0gICAgNjUsIDcwLCA4NSwgMTI4LCA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCAKLSAgICA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCA4OSwgMTI4LCA3NCwgCi0gICAgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIDcxLCA2OSwgMTI4LCAKLSAgICA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgODksIDc5LCA4NSwgCi0gICAgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIDc4LCA3MSwgCi0gICAgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAKLSAgICAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgCi0gICAgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAKLSAgICAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgCi0gICAgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgCi0gICAgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgMTI4LCAKLSAgICA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgCi0gICAgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgCi0gICAgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCAKLSAgICA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDc0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgCi0gICAgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCAKLSAgICA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgCi0gICAgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCAKLSAgICA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCAyMDIsIAotICAgIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgCi0gICAgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIDczLCA4NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCAKLSAgICA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIAotICAgIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgCi0gICAgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIAotICAgIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgCi0gICAgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIAotICAgIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgCi0gICAgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCAKLSAgICA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIAotICAgIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAKLSAgICAxOTcsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIAorICAgIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NSwgCisgICAgMTI4LCA3NSwgNjUsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA3NSwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIAorICAgIDY1LCA4NiwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCAKKyAgICA3OCwgMTkzLCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIAorICAgIDIwNiwgNzUsIDY1LCA4MywgODIsIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgCisgICAgNzYsIDEyOCwgNzUsIDY1LCA4MywgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCAKKyAgICA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIAorICAgIDgyLCAyMDcsIDc1LCA2NSwgODIsIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgCisgICAgODIsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIAorICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAKKyAgICAxMjgsIDc1LCA2NSwgODAsIDgwLCAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIAorICAgIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgCisgICAgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAKKyAgICAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCAKKyAgICA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIAorICAgIDIwMSwgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIAorICAgIDEyOCwgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIAorICAgIDY4LCAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIAorICAgIDY2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3NSwgNjUsIDY1LCA3MCwgCisgICAgMTI4LCA3NSwgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3NSwgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAKKyAgICAxMjgsIDc0LCA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIAorICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgCisgICAgODUsIDc2LCA4OSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCAKKyAgICA4NSwgNjgsIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIAorICAgIDc0LCA3OSwgODksIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgCisgICAgMjEyLCA3NCwgNzksIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgCisgICAgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCAKKyAgICA4OSwgODgsIDEyOCwgNzQsIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCAKKyAgICA3NCwgNzQsIDg1LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIAorICAgIDc0LCA4NSwgODIsIDEyOCwgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgCisgICAgODUsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAKKyAgICAxMjgsIDc0LCA3NCwgNzksIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCAKKyAgICA3MywgODgsIDEyOCwgNzQsIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgCisgICAgNjksIDEyOCwgNzQsIDc0LCA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNjUsIDEyOCwgNzQsIDczLCA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCAKKyAgICA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIAorICAgIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIAorICAgIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgCisgICAgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAKKyAgICAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCAKKyAgICA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIAorICAgIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgCisgICAgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIAorICAgIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgCisgICAgNjUsIDczLCAxMjgsIDc0LCA2NSwgNzIsIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKKyAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAorICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDIwMiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgCisgICAgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAKKyAgICAxOTMsIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIAorICAgIDEyOCwgNzMsIDg1LCAxMjgsIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIAorICAgIDg0LCA2OSwgNzcsIDEyOCwgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgCisgICAgODMsIDc5LCAyMDYsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgNzUsIDczLCAKKyAgICAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIDY3LCA3OSwgCisgICAgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCAKKyAgICA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIAorICAgIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgCisgICAgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAKKyAgICAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIAorICAgIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgCiAgICAgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCAKICAgICA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCiAgICAgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCAKQEAgLTIyMzQsMTIyNiArMjM4MywxMjMzIEBACiAgICAgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA3MywgNzgsIDQ1LCAKICAgICA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIAogICAgIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgCi0gICAgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzMsIDgzLCA2OSwgNzksIDIxMSwgNzMsIDc3LCAKLSAgICA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgNzMsIDc3LCA3MywgNzAsIAotICAgIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA2NSwgMTI4LCA3MywgCi0gICAgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgODIsIDcxLCA3OSwgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgCi0gICAgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODQsIAotICAgIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTEsIDEyOCwgCi0gICAgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCA1MCwgMTI4LCAKLSAgICA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCA3MywgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIDg3LCA4MywgCi0gICAgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDczLCA2OSwgCi0gICAgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCi0gICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCA2OSwgODUsIAotICAgIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDczLCA2OSwgCi0gICAgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgNzMsIDIwNSwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIAotICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIAotICAgIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIAotICAgIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIAotICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIAotICAgIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIAotICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIAotICAgIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIAotICAgIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIAotICAgIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIAotICAgIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCi0gICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCi0gICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCi0gICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCi0gICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCi0gICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCi0gICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCi0gICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKLSAgICA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCi0gICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCAKLSAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKLSAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCi0gICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDcyLCA3OSwgCi0gICAgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIAotICAgIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgCi0gICAgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgCi0gICAgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIAotICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgCi0gICAgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKLSAgICA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIAotICAgIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgCi0gICAgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCAKLSAgICA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIAotICAgIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIAotICAgIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgCi0gICAgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgCi0gICAgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIAotICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgCi0gICAgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCAKLSAgICA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIAotICAgIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIAotICAgIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgCi0gICAgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgCi0gICAgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIDg1LCA4MiwgNjUsIDc4LCAKKyAgICA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIAorICAgIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIAorICAgIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIAorICAgIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCAKKyAgICA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgCisgICAgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCAKKyAgICA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIAorICAgIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIAorICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIAorICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIAorICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAorICAgIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIAorICAgIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDcyLCA3OSwgODUsIDEyOCwgNzMsIAorICAgIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgCisgICAgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIDg5LCA4MiwgMTI4LCAKKyAgICA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIAorICAgIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3MywgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDEyOCwgNzMsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIDg1LCAxMjgsIDczLCA0NSwgCisgICAgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgMTI4LCA3MywgNDUsIAorICAgIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCA3MywgNDUsIDY2LCA2OSwgCisgICAgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIDEyOCwgNzIsIDkwLCAKKyAgICA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIDcyLCA5MCwgOTAsIAorICAgIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIDcyLCA5MCwgNzEsIAorICAgIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCAKKyAgICA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgCisgICAgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIAorICAgIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIAorICAgIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCAKKyAgICA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIAorICAgIDczLCA4MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODIsIDY1LCA3OCwgCiAgICAgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMTI4LCA3MiwgODUsIDc4LCAKICAgICA2OCwgODIsIDY5LCAxOTYsIDcyLCA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIAogICAgIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA2NiwgCiAgICAgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCAKLSAgICA3OSwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIAotICAgIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgCi0gICAgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCAKLSAgICA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIAotICAgIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgCi0gICAgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCAKLSAgICA3OCwgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIAotICAgIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCAKLSAgICA3MiwgNzksIDczLCAxMjgsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgCi0gICAgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIAotICAgIDcyLCA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgCi0gICAgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAKLSAgICAxMjgsIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgMTI4LCA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgCi0gICAgNzcsIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIAotICAgIDEyOCwgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIAotICAgIDg0LCAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIAotICAgIDc2LCA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgCi0gICAgODksIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgCi0gICAgNzIsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIAotICAgIDcyLCA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCAKLSAgICA3NiwgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIAotICAgIDEyOCwgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIAotICAgIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgCi0gICAgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIAotICAgIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCAKLSAgICA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAotICAgIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgCi0gICAgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCAKLSAgICA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIDY1LCA2OSwgODUsIDIwNSwgNzIsIAotICAgIDY5LCA3OCwgNzEsIDEyOCwgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgMTI4LCA3MiwgNjksIDc2LCA3NywgCi0gICAgNjksIDg0LCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAyMDUsIDcyLCA2OSwgNzYsIDczLCAKLSAgICA2NywgNzksIDgwLCA4NCwgNjksIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIAotICAgIDY5LCA3MywgODMsIDY5LCA3MywgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgCi0gICAgNzYsIDIxNywgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIDY5LCAKLSAgICA2NSwgODIsIDg0LCA4MywgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzIsIAotICAgIDY5LCA2NSwgODIsIDg0LCAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCA0NSwgCi0gICAgNjksIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgNjksIAotICAgIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgCi0gICAgNjYsIDY1LCA4MywgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCAKLSAgICA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIAotICAgIDcyLCA2NSwgODQsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAKLSAgICAxOTgsIDcyLCA2NSwgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIAotICAgIDgwLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgCi0gICAgNzMsIDY3LCAxMjgsIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA3MiwgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIAotICAgIDIwNywgNzIsIDY1LCA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCAyMTEsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgCi0gICAgNDUsIDY1LCA3NSwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAKLSAgICAyMTAsIDcyLCA2NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAotICAgIDY2LCA4NSwgODIsIDcxLCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAKLSAgICAxMjgsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIDY4LCAxMjgsIDcyLCA2NSwgNzYsIAotICAgIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgCi0gICAgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgCi0gICAgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCAKLSAgICA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCAKLSAgICA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIAotICAgIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgCi0gICAgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCAKLSAgICA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCAKLSAgICA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCAKLSAgICA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCAKLSAgICA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIAotICAgIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIAotICAgIDc2LCAxMjgsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIDcxLCA4NSwgNjksIDcyLCAxMjgsIAotICAgIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgCi0gICAgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCAKLSAgICA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgCi0gICAgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAKLSAgICAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIAotICAgIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAKLSAgICA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgCi0gICAgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgCi0gICAgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCAKLSAgICA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIAotICAgIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjcsIDY5LCAKLSAgICAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIAotICAgIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAKLSAgICAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIAotICAgIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgCi0gICAgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgCi0gICAgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCAKLSAgICA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCA4NCwgCi0gICAgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIDcxLCAKLSAgICA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAxMjgsIAotICAgIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAxMjgsIAotICAgIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIDY1LCAKLSAgICAxMjgsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCAKLSAgICA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCAKLSAgICA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIAotICAgIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgCi0gICAgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgCi0gICAgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIAotICAgIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgCi0gICAgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCAKLSAgICA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIAotICAgIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAxMjgsIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIAotICAgIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAKLSAgICAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIAotICAgIDc4LCA4NSwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgCi0gICAgNjgsIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIAotICAgIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIAotICAgIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgCi0gICAgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIAotICAgIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgCi0gICAgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIDcxLCA2OSwgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIAotICAgIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAKLSAgICAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDcxLCA2OSwgODIsIAotICAgIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgCi0gICAgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAKLSAgICA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgCi0gICAgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCAKLSAgICA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgCi0gICAgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgCi0gICAgNjksIDY1LCAyMTAsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgCi0gICAgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCAKLSAgICA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIAotICAgIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIDY1LCA4NSwgNzgsIAotICAgIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzEsIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgMTI4LCA3MSwgCi0gICAgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDUxLCAKLSAgICAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIDY1LCAxMjgsIDcxLCAKLSAgICA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgNTAsIDEyOCwgNzEsIAotICAgIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAxMjgsIDcxLCA2NSwgCi0gICAgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCA3NywgNjUsIDc4LCAKLSAgICAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIDcxLCAxMjgsIDcxLCAKLSAgICA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIAotICAgIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIAotICAgIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgCi0gICAgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgCi0gICAgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIAotICAgIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIAotICAgIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgCi0gICAgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIAotICAgIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIAotICAgIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCAKLSAgICA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIAotICAgIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgCi0gICAgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgCi0gICAgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIDcwLCA4NSwgODQsIDEyOCwgCi0gICAgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgMTI4LCA3MCwgODUsIDgwLCAKLSAgICAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAKLSAgICAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODQsIDcyLCAKLSAgICA3OSwgODIsIDE5MywgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIAotICAgIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgCi0gICAgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIAotICAgIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIAotICAgIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIAotICAgIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIAotICAgIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgCi0gICAgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzksIAotICAgIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIDgyLCAKLSAgICA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgODIsIAotICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAKLSAgICAxMjgsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIAorICAgIDc5LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIAorICAgIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIAorICAgIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAKKyAgICAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCAKKyAgICA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAorICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAorICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKKyAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAorICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIAorICAgIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgCisgICAgNjksIDE5NiwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgNzgsIDY5LCAyMTcsIDcyLCAKKyAgICA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgCisgICAgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCAKKyAgICA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgNzIsIDc5LCA3MywgMTI4LCAKKyAgICA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIDg0LCAxMjgsIDcyLCA3OCwgCisgICAgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDgwLCAKKyAgICAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDc4LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCA2OSwgODgsIDEyOCwgNzIsIAorICAgIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCA3MiwgNzgsIDY1LCA4NCwgCisgICAgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIDcyLCA3NywgCisgICAgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgNzcsIDg5LCAKKyAgICAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzIsIAorICAgIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIDc3LCA3OSwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgMTI4LCA3MiwgCisgICAgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgNzcsIDczLCAKKyAgICA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCA3NywgNzMsIAorICAgIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCA3MiwgNzcsIAorICAgIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIDg0LCAxMjgsIAorICAgIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgMTI4LCA3MiwgCisgICAgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIDEyOCwgNzIsIAorICAgIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIDczLCA4OCwgCisgICAgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODgsIDEyOCwgCisgICAgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgNzIsIDc2LCAKKyAgICA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCA4OCwgMTI4LCAKKyAgICA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NSwgMTI4LCAKKyAgICA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIAorICAgIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgCisgICAgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3MiwgNjksIDY5LCA3NiwgNjksIAorICAgIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgNjksIDg1LCAyMDAsIDcyLCAKKyAgICA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAxMjgsIDcyLCA3MywgNjgsIAorICAgIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIDEyOCwgNzIsIDczLCA2NiwgCisgICAgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgODUsIDEyOCwgNzIsIDcyLCAKKyAgICA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDcyLCAKKyAgICA3MSwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgCisgICAgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3MiwgNjksIDgyLCA4NSwgODQsIDg1LCAxMjgsIDcyLCAKKyAgICA2OSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDc3LCA3MywgODQsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNzMsIAorICAgIDc5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA2OSwgODMsIDEyOCwgNzIsIDY5LCA4MiwgNjksIDEyOCwgCisgICAgNzIsIDY5LCA4MiwgNjYsIDEyOCwgNzIsIDY5LCA4MiwgNjUsIDY5LCA4NSwgMjA1LCA3MiwgNjksIDc4LCA3MSwgMTI4LCAKKyAgICA3MiwgNjksIDc4LCAxOTksIDcyLCA2OSwgNzcsIDgwLCAxMjgsIDcyLCA2OSwgNzYsIDc3LCA2OSwgODQsIDEyOCwgNzIsIAorICAgIDY5LCA3NiwgNzcsIDY5LCAyMTIsIDcyLCA2OSwgNzYsIDIwNSwgNzIsIDY5LCA3NiwgNzMsIDY3LCA3OSwgODAsIDg0LCA2OSwgCisgICAgODIsIDEyOCwgNzIsIDY5LCA3NSwgODUsIDg0LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjksIDczLCA4MywgNjksIDczLCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDg2LCA4OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDc4LCA3NiwgMjE3LCA3MiwgNjksIAorICAgIDY1LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgMjA2LCA3MiwgNjksIDY1LCA4MiwgODQsIDgzLCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDgyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA3MiwgNjksIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNzIsIDY5LCA2NSwgODIsIDIxMiwgNzIsIDY5LCA2NSwgODIsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAKKyAgICAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIAorICAgIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAKKyAgICAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIDcyLCA2NSwgODUsIAorICAgIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgNzIsIDY1LCAKKyAgICA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgNzgsIAorICAgIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIDEyOCwgCisgICAgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcyLCAKKyAgICA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCA3MiwgNjUsIAorICAgIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgCisgICAgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgCisgICAgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCAKKyAgICA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIAorICAgIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgCisgICAgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCAKKyAgICA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIDc2LCA2NSwgCisgICAgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgNjUsIDcwLCAKKyAgICA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjUsIAorICAgIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCA4NSwgMTI4LCAKKyAgICA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCA3MCwgMjEzLCAKKyAgICA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCA3MSwgODksIAorICAgIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCA2OSwgNjksIAorICAgIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCA4NiwgMTI4LCAKKyAgICA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA2NSwgNzcsIAorICAgIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCA4NSwgCisgICAgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgCisgICAgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgCisgICAgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgCisgICAgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgCisgICAgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgCisgICAgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCAKKyAgICA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIAorICAgIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAKKyAgICAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIAorICAgIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgCisgICAgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCAKKyAgICA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIAorICAgIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCAKKyAgICA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIAorICAgIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgCisgICAgMTI4LCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCAKKyAgICA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIAorICAgIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgCisgICAgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCAKKyAgICA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIAorICAgIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIAorICAgIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgCisgICAgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgCisgICAgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCAKKyAgICA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIAorICAgIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgCisgICAgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgCisgICAgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAKKyAgICAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIAorICAgIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIAorICAgIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgCisgICAgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgMTI4LCA3MSwgCisgICAgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCA2NSwgMTI4LCAKKyAgICA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAxMjgsIDcxLCAKKyAgICA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIDEyOCwgNzEsIAorICAgIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIDcyLCA3MywgCisgICAgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAKKyAgICAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIAorICAgIDcyLCA2OSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAKKyAgICAxMjgsIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCAKKyAgICA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIAorICAgIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgCisgICAgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIAorICAgIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgCisgICAgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgCisgICAgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCAKKyAgICA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIAorICAgIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3MSwgNjksIDg0LCAxOTMsIAorICAgIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgCisgICAgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgMTI4LCAKKyAgICA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCA3MSwgNjksIAorICAgIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgNjksIDc4LCAKKyAgICA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCA3NSwgCisgICAgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIDY5LCAKKyAgICA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgCisgICAgMTI4LCA3MSwgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgCisgICAgODIsIDEyOCwgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgCisgICAgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIAorICAgIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgCisgICAgODQsIDg0LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCAKKyAgICA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgCisgICAgNjUsIDc4LCAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIAorICAgIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgCisgICAgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCAKKyAgICA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIAorICAgIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgCisgICAgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgCisgICAgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCAKKyAgICA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIAorICAgIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgCisgICAgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgCisgICAgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgCisgICAgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgCisgICAgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIAorICAgIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAKKyAgICAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCAKKyAgICA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCA4MywgNTEsIAorICAgIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIAorICAgIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIAorICAgIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCAKKyAgICA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCAKKyAgICA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgyLCA3OSwgODcsIAorICAgIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgCisgICAgMTI4LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIAorICAgIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCisgICAgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCAKKyAgICA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIAorICAgIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCAKKyAgICA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIAorICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgCisgICAgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIAogICAgIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgCiAgICAgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NSwgNjksIDE5NiwgNzAsIDc5LCAKICAgICA4MiwgNjcsIDY5LCA4MywgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIApAQCAtMzQ2MiwzODQgKzM2MTgsMzg5IEBACiAgICAgMTI4LCA3MCwgNzksIDc5LCA4NCwgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgCiAgICAgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCAKICAgICA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIAotICAgIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3NywgMTI4LCA3MCwgNzYsIDg5LCAxMjgsIAotICAgIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgCi0gICAgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIAotICAgIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgCi0gICAgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCAKLSAgICA4MiwgMTI4LCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNjksIAotICAgIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgCi0gICAgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCAKLSAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIDcwLCA3NiwgNjUsIAotICAgIDcxLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgCi0gICAgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAKLSAgICA0NSwgNDksIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCAKLSAgICA3NiwgMTI4LCA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIAotICAgIDczLCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCAKLSAgICA3OCwgMTk3LCA3MCwgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCAKLSAgICA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgNzAsIAotICAgIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCA3MywgCi0gICAgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIDIwMCwgNzAsIDczLCAKLSAgICA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDc1LCA4MywgCi0gICAgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCA3MCwgNzMsIDgyLCAKLSAgICAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAotICAgIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA2NSwgCi0gICAgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAKLSAgICAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIAotICAgIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MiwgCi0gICAgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIDg2LCA2NSwgNzYsIAotICAgIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgNjksIDgyLCA3NywgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIDIwMCwgNzAsIDY5LCAKLSAgICA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgNzgsIDE5NywgNzAsIAotICAgIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgCi0gICAgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgCi0gICAgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAKLSAgICAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIAotICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAKLSAgICAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgCi0gICAgNjksIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCAKLSAgICA4NCwgNzIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIAotICAgIDcyLCA2NSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAyMDEsIAotICAgIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgCi0gICAgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCAKLSAgICA2NSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIAotICAgIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgCi0gICAgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCAKLSAgICA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIAotICAgIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgCi0gICAgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCAKLSAgICA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIAotICAgIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgCi0gICAgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCAKLSAgICA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIAotICAgIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgCi0gICAgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAKLSAgICAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCAKLSAgICA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIAotICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAKLSAgICAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgCi0gICAgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgCi0gICAgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIAotICAgIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCAKLSAgICA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCAKLSAgICA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIAotICAgIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgCi0gICAgODQsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIAotICAgIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIAotICAgIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIAotICAgIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgCi0gICAgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAKLSAgICAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIAotICAgIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCAKLSAgICA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgCi0gICAgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCAKLSAgICA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgCi0gICAgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgODksIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAKLSAgICAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIAotICAgIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgCi0gICAgMTc4LCA2OSwgODMsIDcyLCA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDQ1LCAKLSAgICA4NCwgNjksIDEyOCwgNjksIDgyLCA4MiwgNzksIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIAotICAgIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAxMjgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIAotICAgIDgxLCA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgCi0gICAgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCAKLSAgICA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCAKLSAgICA3OCwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgNzksIAotICAgIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgCisgICAgNzYsIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAxMjgsIDcwLCA3NiwgCisgICAgODksIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg1LCA4NCwgNjksIAorICAgIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcwLCA3NiwgCisgICAgNzksIDg3LCA2OSwgMjEwLCA3MCwgNzYsIDc5LCA4NSwgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIAorICAgIDc2LCA3OSwgNzksIDgyLCAxMjgsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgCisgICAgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCA4OCwgNjksIDE5NiwgNzAsIDc2LCA2OSwgODUsIDgyLCAKKyAgICA0NSwgNjgsIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCA3OCwgNjksIDE5NiwgNzAsIAorICAgIDc2LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIDcwLCA3NiwgNjUsIDIxMiwgCisgICAgNzAsIDc2LCA2NSwgNzEsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKKyAgICA1MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDQ1LCA0OSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgCisgICAgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCAKKyAgICA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIAorICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgNjUsIDEyOCwgNzAsIDczLCA4NCwgCisgICAgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgODQsIDEyOCwgNzAsIDczLCA4MywgNzIsIDczLCAKKyAgICA3OCwgMTk5LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAorICAgIDIwMywgNzAsIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgCisgICAgMjAwLCA3MCwgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCAKKyAgICA4MiwgNzUsIDgzLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIAorICAgIDcwLCA3MywgODIsIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgCisgICAgNzEsIDY5LCA4MiwgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCAKKyAgICA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIAorICAgIDc2LCA3NiwgNjksIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIAorICAgIDcwLCA3MywgNzMsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCisgICAgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAKKyAgICAxOTcsIDcwLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIAorICAgIDIxNywgNzAsIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgCisgICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIAorICAgIDEyOCwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIAorICAgIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgCisgICAgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCAKKyAgICA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgCisgICAgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgNzgsIDczLCAKKyAgICA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCA3MCwgNjksIAorICAgIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIDIxMywgCisgICAgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIDY4LCAKKyAgICAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIAorICAgIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgCisgICAgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCA3MCwgNjksIDY1LCA4MiwgMTI4LCAKKyAgICA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIAorICAgIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgCisgICAgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCAKKyAgICA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIAorICAgIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgMjAxLCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIAorICAgIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgCisgICAgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDcwLCA2NSwgNzYsIDc2LCAKKyAgICA2OSwgMjA2LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIAorICAgIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgCisgICAgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCAKKyAgICA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCAKKyAgICA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIAorICAgIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgCisgICAgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCAKKyAgICA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgCisgICAgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCAKKyAgICA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIAorICAgIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCAKKyAgICA3OCwgMjEyLCA2OSwgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCAKKyAgICA4OCwgNzMsIDgzLCA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAorICAgIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIAorICAgIDEyOCwgNjksIDg4LCA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgCisgICAgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCAKKyAgICA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgCisgICAgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIAorICAgIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIAorICAgIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgCisgICAgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIDY5LCAKKyAgICA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgODksIAorICAgIDEyOCwgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIDEyOCwgNjksIDgzLCA4NCwgCisgICAgNzMsIDc3LCA2NSwgODQsIDY5LCA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjksIDgzLCAKKyAgICA3MiwgNjksIDUxLCAxMjgsIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCAxNzgsIDY5LCA4MywgNzIsIAorICAgIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgCisgICAgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgyLCA4MiwgNzksIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAKKyAgICAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAxMjgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCAKKyAgICA2NSwgODMsIDE5NywgNjksIDgxLCA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNjgsIAorICAgIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgCisgICAgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCAKKyAgICA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIAorICAgIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCAKKyAgICA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIAorICAgIDc3LCA2NSwgMTI4LCA2OSwgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIAorICAgIDY5LCA3OSwgNzYsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgCiAgICAgNzksIDgwLCA2OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCAKICAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIAogICAgIDQ1LCA0OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgCiAgICAgNzIsIDg1LCA4MywgNzMsIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIAogICAgIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgCi0gICAgODQsIDY5LCAyMTAsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCAKLSAgICA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc4LCA3MSwgNzMsIAotICAgIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCAKLSAgICA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgCi0gICAgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCAKLSAgICA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIAotICAgIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgCi0gICAgMjExLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAKLSAgICAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIAotICAgIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgCi0gICAgODMsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCAKLSAgICA3NiwgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgCi0gICAgNzgsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAyMDYsIDY5LCA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCAKLSAgICA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDE5NSwgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgCi0gICAgODQsIDgyLCA2OSwgODAsIDg0LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCAKLSAgICA4NCwgNzMsIDc1LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIAotICAgIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDY5LCA2OSwgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCi0gICAgNjksIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKLSAgICA2NSwgMjA0LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIAotICAgIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIAotICAgIDY4LCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgCi0gICAgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCAKLSAgICA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIAotICAgIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgCi0gICAgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIAotICAgIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgCi0gICAgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgCi0gICAgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIAotICAgIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIAotICAgIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgCi0gICAgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCAKLSAgICA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIAotICAgIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgCi0gICAgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgCi0gICAgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIAotICAgIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIAotICAgIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgCi0gICAgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCAKLSAgICA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIAotICAgIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgCi0gICAgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgCi0gICAgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgCi0gICAgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgCi0gICAgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgCi0gICAgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIAotICAgIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAKLSAgICAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCAKLSAgICA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgCi0gICAgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCAKLSAgICA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIAotICAgIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCi0gICAgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgMjExLCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCAKLSAgICA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIAotICAgIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIDc5LCA4NSwgCi0gICAgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgNzksIDg1LCAKLSAgICA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgODQsIDg0LCAKLSAgICA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCi0gICAgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MCwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCi0gICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKLSAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgCi0gICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgCi0gICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAKLSAgICA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NSwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDEyOCwgNjgsIDc5LCA4NCwgODMsIDEyOCwgNjgsIDc5LCA4NCwgNzYsIAotICAgIDY5LCA4MywgMjExLCA2OCwgNzksIDgyLCA4NSwgMTI4LCA2OCwgNzksIDc5LCA4MiwgMTI4LCA2OCwgNzksIDc5LCA3OCwgCi0gICAgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCAKLSAgICA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIAotICAgIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAxMjgsIDY4LCA3OSwgNzMsIDg0LCAKLSAgICAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCAKLSAgICA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIAotICAgIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgCi0gICAgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIAotICAgIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIAotICAgIDEyOCwgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIAotICAgIDY4LCA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDc0LCAxMjgsIAotICAgIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgCi0gICAgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCAKLSAgICA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIAotICAgIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgCi0gICAgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIDc4LCA4NCwgCi0gICAgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgNzksIDczLCAKLSAgICA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAxOTMsIAotICAgIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDY4LCA3MywgODAsIDg0LCA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIAotICAgIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgCi0gICAgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgCi0gICAgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgCi0gICAgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCAKLSAgICA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIAotICAgIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgMjA2LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCAKLSAgICA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIAotICAgIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAKLSAgICAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIAotICAgIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgCi0gICAgNjYsIDEyOCwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAKLSAgICAyMDEsIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCAKLSAgICA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIAotICAgIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgCi0gICAgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgNzYsIDEyOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCAKLSAgICA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCAKLSAgICA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCAKLSAgICA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgCi0gICAgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCAKLSAgICA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIAotICAgIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIAorICAgIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDgxLCAxMjgsIDY5LCA3OCwgCisgICAgNzksIDIxMSwgNjksIDc4LCA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIAorICAgIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgCisgICAgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCAKKyAgICA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIAorICAgIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgCisgICAgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCAKKyAgICA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgCisgICAgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4NCwgMTI4LCAKKyAgICA2OSwgNzYsIDc2LCA3MywgODAsIDg0LCA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIAorICAgIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgCisgICAgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCAKKyAgICA2OSwgODYsIDY5LCAyMDYsIDY5LCA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIAorICAgIDc4LCAyMTIsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgCisgICAgNzMsIDE5NSwgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIDgyLCA2OSwgODAsIDg0LCAKKyAgICA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgNzMsIDc1LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIDY5LCA3MywgODMsIDEyOCwgNjksIAorICAgIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAxMjgsIDY5LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgMjA2LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNjksIDEyOCwgNjksIDcyLCA4NywgCisgICAgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDczLCAKKyAgICA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIAorICAgIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCisgICAgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIAorICAgIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgCisgICAgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCAKKyAgICA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIAorICAgIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgCisgICAgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIAorICAgIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIAorICAgIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIAorICAgIDkwLCA3NCwgNjksIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDY1LCA2NSwgMTI4LCA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIAorICAgIDY4LCA4OSwgMjA3LCA2OCwgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4NywgNzksIDEyOCwgNjgsIAorICAgIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgCisgICAgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAKKyAgICAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgCisgICAgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgCisgICAgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDY2LCA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgCisgICAgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgCisgICAgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIAorICAgIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgCisgICAgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCAKKyAgICA4MiwgNjUsIDc3LCAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIAorICAgIDY1LCA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgCisgICAgNjUsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIAorICAgIDE5MywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCisgICAgNjgsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCAKKyAgICA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCisgICAgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAorICAgIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIAorICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIAorICAgIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAorICAgIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAorICAgIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCisgICAgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCisgICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgCisgICAgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKKyAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIAorICAgIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIAorICAgIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAorICAgIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCAxMjgsIDY4LCA3OSwgODQsIDc2LCA2OSwgODMsIDIxMSwgNjgsIDc5LCA4MiwgODUsIDEyOCwgNjgsIDc5LCA3OSwgCisgICAgODIsIDEyOCwgNjgsIDc5LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCAKKyAgICA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIAorICAgIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgCisgICAgMTI4LCA2OCwgNzksIDczLCA4NCwgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIAorICAgIDY4LCA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgCisgICAgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIAorICAgIDY5LCAxOTcsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCAKKyAgICA3NiwgODUsIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCAKKyAgICA2OCwgNzYsIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCAKKyAgICA2OCwgNzUsIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIAorICAgIDc0LCA2OSwgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgCisgICAgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCAKKyAgICA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIAorICAgIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAKKyAgICAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIAorICAgIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgCisgICAgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCAKKyAgICA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIAorICAgIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgCisgICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIAorICAgIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgCisgICAgNzMsIDgwLCA4NCwgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCAKKyAgICA3OCwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIAorICAgIDY2LCA2NSwgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgCisgICAgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgCisgICAgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIAorICAgIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgCisgICAgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIAorICAgIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgCisgICAgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCAKKyAgICA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIAorICAgIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgCisgICAgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCAKKyAgICA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgCisgICAgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCAKKyAgICA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCAKKyAgICA3MywgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIAorICAgIDY1LCA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgCisgICAgNzcsIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCAKKyAgICA2OSwgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIAorICAgIDczLCA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgCisgICAgNjUsIDc2LCAxMjgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCAKKyAgICA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIAorICAgIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgCisgICAgNzksIDEyOCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgCisgICAgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCAKKyAgICA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIAorICAgIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgCisgICAgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCAKICAgICA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIAogICAgIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgCiAgICAgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgMjAzLCA2OCwgNjksIDgzLCAKQEAgLTM4NzksMTYxICs0MDQwLDE2NCBAQAogICAgIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAKICAgICAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCAKICAgICA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIAotICAgIDE5NCwgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NiwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgNjUsIDg0LCAxOTcsIDY4LCAKLSAgICA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MiwgNjksIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIAotICAgIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgCi0gICAgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCAKLSAgICA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIAotICAgIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCA2OCwgNjUsIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgCi0gICAgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCAKLSAgICA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgNjksIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIAotICAgIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAxMjgsIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgCi0gICAgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKLSAgICA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIAotICAgIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAKLSAgICAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDIxMiwgNjgsIDY1LCA3NiwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgCi0gICAgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAyMDAsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMTI4LCAKLSAgICA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIAotICAgIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgCi0gICAgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzEsIDY5LCA4MywgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIAotICAgIDcxLCA2NSwgMjE4LCA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgCi0gICAgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCAKLSAgICA0OCwgNTQsIDU1LCA3MSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDU1LCA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1MywgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIAotICAgIDU0LCA1MCwgMTI4LCA2OCwgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgCi0gICAgMTI4LCA2OCwgNDgsIDUzLCA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA1MywgMTI4LCA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNTEsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDgsIDcxLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNDgsIDY4LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgCi0gICAgNTIsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCAKLSAgICA1NCwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNjgsIDQ4LCA1MiwgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTEsIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCAKLSAgICA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA2OCwgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MCwgNTEsIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjgsIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjgsIDQ4LCA0OSwgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgNjgsIDQ4LCA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDY4LCA0OCwgNDgsIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDY3LCA4OSwgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIAotICAgIDgyLCA2OSwgNzgsIDY1LCA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDg5LCA4MCwgNjksIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCAKLSAgICA4MiwgNzMsIDY3LCA3MywgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIAotICAgIDEyOCwgNjcsIDg5LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIAotICAgIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgCi0gICAgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAKLSAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAotICAgIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIDgyLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgCi0gICAgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCAKLSAgICA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCAKLSAgICA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCAKLSAgICA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIAotICAgIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDEyOCwgNjcsIDgyLCA4OSwgCi0gICAgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCAKLSAgICA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIAotICAgIDY2LCA3NiwgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgCi0gICAgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIAotICAgIDQ1LCA1MCwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAKLSAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCAKLSAgICA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIAotICAgIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgCi0gICAgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCAKLSAgICA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIAotICAgIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIAotICAgIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgCi0gICAgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIAotICAgIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgCi0gICAgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCAKLSAgICA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCAKLSAgICA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgwLCA4OSwgODIsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgCi0gICAgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIAotICAgIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgCi0gICAgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIAotICAgIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgCi0gICAgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNjksIAotICAgIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIAotICAgIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIAotICAgIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgCi0gICAgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgNjksIDY3LCAKLSAgICA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIAotICAgIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIDIxMiwgNjcsIDc5LCAKLSAgICA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA3OSwgCi0gICAgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCAKLSAgICA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIAotICAgIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgCi0gICAgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgCi0gICAgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCAKLSAgICA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIAotICAgIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgCi0gICAgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAKLSAgICAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIAotICAgIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzksIDEyOCwgNjcsIAotICAgIDc3LCAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIAotICAgIDY3LCA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgCi0gICAgODUsIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIAotICAgIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgCi0gICAgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKLSAgICA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIAotICAgIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgCi0gICAgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCAKLSAgICA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIAotICAgIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgCi0gICAgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODcsIDEyOCwgNjcsIDc2LCAKLSAgICA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgMjEwLCA2NywgNzYsIDY1LCA3OCwgCi0gICAgMTI4LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCA4NiwgCi0gICAgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAKLSAgICAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCA4OCwgCi0gICAgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIAotICAgIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgCi0gICAgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIDY3LCA3MywgNjksIDg1LCAKLSAgICA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIAotICAgIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCA2OSwgODAsIDEyOCwgNjcsIAotICAgIDczLCA2OSwgMTI4LCA2NywgNzMsIDEyOCwgNjcsIDcyLCA4OSwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODQsIDEyOCwgNjcsIAotICAgIDcyLCA4OSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODksIDgyLCAxMjgsIDY3LCA3MiwgODksIDgwLCAxMjgsIDY3LCA3MiwgCi0gICAgODUsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgNjcsIDcyLCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDgyLCAxMjgsIDY3LCA3MiwgODUsIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4OCwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA3OSwgODQsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCAxMjgsIDY3LCA3MiwgCi0gICAgODUsIDc2LCA2NSwgMTI4LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA3MiwgODIsIDg5LCA4MywgNjUsIDc4LCA4NCwgNzIsIDY5LCAKLSAgICA3NywgODUsIDc3LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIAotICAgIDc4LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3NywgMTkzLCA2NywgNzIsIDgyLCA3OSwgMTkzLCA2NywgNzIsIDgyLCA3MywgCi0gICAgODYsIDczLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgODQsIDc3LCA2NSwgODMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCAKLSAgICA4NCwgNzcsIDY1LCAyMTEsIDY3LCA3MiwgNzksIDg4LCAxMjgsIDY3LCA3MiwgNzksIDg0LCAxMjgsIDY3LCA3MiwgNzksIAotICAgIDgyLCA2OSwgODYsIDc3LCAxOTMsIDY3LCA3MiwgNzksIDgwLCAxMjgsIDY3LCA3MiwgNzksIDc1LCA2OSwgMTI4LCA2NywgCi0gICAgNzIsIDc5LCA2OSwgMTI4LCA2NywgNzIsIDc5LCA2NywgNzksIDc2LCA2NSwgODQsIDE5NywgNjcsIDcyLCA3OSwgNjUsIAorICAgIDY3LCA4MywgMTI4LCA2OCwgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIAorICAgIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIAorICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCisgICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIAorICAgIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIAorICAgIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAKKyAgICAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCAKKyAgICA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAorICAgIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCAKKyAgICA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgCisgICAgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCAKKyAgICA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCAKKyAgICA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIAorICAgIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAKKyAgICAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIAorICAgIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgCisgICAgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgCisgICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAorICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCisgICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKKyAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAorICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKKyAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCisgICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKKyAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAorICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCisgICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKKyAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODksIAorICAgIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIAorICAgIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgCisgICAgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCAKKyAgICA2OCwgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIAorICAgIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgCisgICAgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIAorICAgIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgMTI4LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgCisgICAgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgCisgICAgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCAKKyAgICA3NiwgMjA3LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCAKKyAgICA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAKKyAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIAorICAgIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgCisgICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIAorICAgIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgCisgICAgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIAorICAgIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgCisgICAgNjksIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAKKyAgICAyMTIsIDY3LCA4MiwgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIAorICAgIDY5LCA2NSwgNzcsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgCisgICAgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCisgICAgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCAKKyAgICA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIAorICAgIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgCisgICAgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAKKyAgICAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIAorICAgIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAorICAgIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgCisgICAgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCAKKyAgICA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgCisgICAgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCAKKyAgICA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIAorICAgIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgCisgICAgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgCisgICAgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIAorICAgIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgCisgICAgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIAorICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgCisgICAgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAKKyAgICA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgCisgICAgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCAKKyAgICA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIAorICAgIDc2LCA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgCisgICAgNzksIDIwNiwgNjcsIDc5LCA3NiwgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNjksIDc4LCA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCAKKyAgICA2NywgNzksIDY3LCA3NSwgODQsIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDY1LCAxMjgsIDY3LCA3OSwgMTI4LCA2NywgNzcsIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCAKKyAgICA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIAorICAgIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgCisgICAgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCAKKyAgICA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIAorICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgCisgICAgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCAKKyAgICA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgCisgICAgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCAKKyAgICA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIAorICAgIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgCisgICAgNzYsIDY1LCA4NywgMTI4LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAKKyAgICAyMTAsIDY3LCA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCAKKyAgICA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIAorICAgIDgwLCAxOTcsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgCisgICAgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIAorICAgIDczLCA4MiwgNjcsIDc2LCA2OSwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgCisgICAgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgCisgICAgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIAorICAgIDczLCA2OSwgODUsIDY3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA2NywgNzMsIDY5LCA4NSwgMTk1LCA2NywgNzMsIDY5LCA4NCwgMTI4LCA2NywgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA2NywgNzMsIDY5LCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIAorICAgIDY3LCA3MiwgODksIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgCisgICAgNzIsIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgMTI4LCAKKyAgICA2NywgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCA2NywgCisgICAgNzIsIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIDcyLCAKKyAgICA2OSwgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIAorICAgIDc5LCA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCA4MiwgCisgICAgNzMsIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIDczLCAKKyAgICA4MywgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIAorICAgIDc5LCA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgCisgICAgNjcsIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAKICAgICAxMjgsIDY3LCA3MiwgMjA3LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAogICAgIDczLCA3OSwgODMsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCAKICAgICA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIApAQCAtNDA1MSw5MDc1ICs0MjE1LDk2MDggQEAKICAgICAyMTEsIDY3LCA3MiwgNjksIDgyLCA4MiwgMjE3LCA2NywgNzIsIDY5LCA4MiwgODIsIDczLCA2OSwgODMsIDEyOCwgNjcsIAogICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDIwNiwgCiAgICAgNjcsIDcyLCA2OSwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgCi0gICAgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIAotICAgIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgCi0gICAgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCAKLSAgICA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIAotICAgIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgCi0gICAgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIDY3LCAKLSAgICA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCAKLSAgICA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCA2NywgCi0gICAgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIDY5LCAKLSAgICA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIAotICAgIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCA2NywgCi0gICAgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIDY5LCAKLSAgICA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgMTI4LCAKLSAgICA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCisgICAgNzIsIDY5LCA3MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCAKKyAgICA2NywgNzIsIDY1LCA4OCwgMTI4LCA2NywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIAorICAgIDg0LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgODIsIDIxMiwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCAKKyAgICA3OSwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIAorICAgIDY3LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCAKKyAgICA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIAorICAgIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgCisgICAgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIAorICAgIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIAorICAgIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgCisgICAgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCAxMjgsIDY3LCAKKyAgICA2OSwgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDY5LCAKKyAgICA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIAorICAgIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgCisgICAgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAKKyAgICAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKKyAgICA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIAorICAgIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgCisgICAgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAKICAgICAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgMTI4LCAKLSAgICA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgCi0gICAgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCAKLSAgICA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgCi0gICAgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCAKLSAgICA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIAotICAgIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgCi0gICAgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCAKLSAgICA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIAotICAgIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgCi0gICAgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAKLSAgICA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgCi0gICAgMTk5LCA2NywgNjUsIDc4LCA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIAotICAgIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgCi0gICAgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAxMjgsIAotICAgIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgCi0gICAgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCAKLSAgICA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCi0gICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKLSAgICAyMDEsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCA4NSwgNzUsIDgyLCA2NSwgCi0gICAgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIDY2LCA4NywgNjksIDY5LCAKLSAgICAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIAotICAgIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDIxMSwgNjYsIDg1LCA4MiwgCi0gICAgMjEzLCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgCi0gICAgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCAKLSAgICA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDY2LCA4NSwgNzYsIAotICAgIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgODUsIDc1LCA4OSwgCi0gICAgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIAotICAgIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCA3NiwgNjksIDEyOCwgCi0gICAgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIDY2LCAKLSAgICA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA2NiwgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIAotICAgIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgCi0gICAgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCAKLSAgICA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIAotICAgIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgCi0gICAgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIAotICAgIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAKLSAgICAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIDY2LCA4MiwgNjUsIAotICAgIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgODIsIDY1LCA2NywgCi0gICAgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgCi0gICAgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCAKLSAgICA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIAotICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKLSAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAotICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCi0gICAgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCAKLSAgICA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgCi0gICAgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCAKLSAgICA2NiwgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCAKLSAgICA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCAKLSAgICA2NiwgNzYsIDc5LCA4NywgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIAotICAgIDc2LCA3OSwgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgCi0gICAgNzYsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCAKLSAgICA2NiwgNzYsIDY1LCA2OCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIAotICAgIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCAKLSAgICA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIAotICAgIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAKLSAgICAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIAotICAgIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgCi0gICAgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCAKLSAgICA3MywgODIsIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIAotICAgIDg1LCA3NiwgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgCi0gICAgNjYsIDczLCA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCAKLSAgICA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIAotICAgIDY2LCA3MywgMTk5LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgCi0gICAgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCA4MywgMTI4LCAKLSAgICA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIDY2LCA3MywgNjYsIAotICAgIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgNzIsIDg1LCAxMjgsIAotICAgIDY2LCA3MiwgNzksIDc5LCAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgNzIsIDY5LCA4NCwgCi0gICAgNzIsIDEyOCwgNjYsIDcyLCA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCA4NCwgODQsIDczLCAKLSAgICA4MCwgODIsIDc5LCA3NiwgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgODksIAotICAgIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCAKLSAgICA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCAKLSAgICA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIAotICAgIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgCi0gICAgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAKLSAgICAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgNzksIDIxNSwgNjYsIDY5LCAKLSAgICA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIAotICAgIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgCi0gICAgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgCi0gICAgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIAotICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgCi0gICAgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCAKLSAgICA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2NywgNjUsIAotICAgIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIAotICAgIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgCi0gICAgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIAotICAgIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCAKLSAgICA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCAKLSAgICA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIAotICAgIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAKLSAgICAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIAotICAgIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCAKLSAgICA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIAotICAgIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIAotICAgIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCAKLSAgICA3NSwgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIAotICAgIDY2LCA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzMsIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCAKLSAgICA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIAotICAgIDE5NywgNjYsIDY1LCA3MSwgNjUsIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIAotICAgIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCA2NywgCi0gICAgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCAKLSAgICA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIAotICAgIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgCi0gICAgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIAotICAgIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIAotICAgIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgCi0gICAgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAKLSAgICAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgCi0gICAgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCAKLSAgICA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCAKLSAgICA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgCi0gICAgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAKLSAgICAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCAKLSAgICA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIAotICAgIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgCi0gICAgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgCi0gICAgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCAKLSAgICA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIAotICAgIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIAotICAgIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgCi0gICAgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgCi0gICAgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgCi0gICAgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCAKLSAgICA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCAKLSAgICA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCAKLSAgICA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCAKLSAgICA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCAKLSAgICA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCAKLSAgICA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIAotICAgIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIAotICAgIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIAotICAgIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIAotICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIAotICAgIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgCi0gICAgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgCi0gICAgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIAotICAgIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIAotICAgIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIAotICAgIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIAotICAgIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIAotICAgIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIAotICAgIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIAotICAgIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIAotICAgIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIAotICAgIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIAotICAgIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCAKLSAgICA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCAKLSAgICA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCAKLSAgICA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCAKLSAgICA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCAKLSAgICA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCAKLSAgICA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCAKLSAgICA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCAKLSAgICA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIAotICAgIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIAotICAgIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIAotICAgIDY1LCA4OCwgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgCi0gICAgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIAotICAgIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgCi0gICAgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCAKLSAgICA2NSwgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIAotICAgIDcyLCA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgCi0gICAgNjUsIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCAKLSAgICA4MiwgMTkzLCA2NSwgODMsIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIAotICAgIDg0LCA4MiwgNzksIDc4LCA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCAKLSAgICA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIAotICAgIDgyLCA3MywgODMsIDc3LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgCi0gICAgODIsIDczLCA4MywgNzUsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIAotICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgCi0gICAgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCAKLSAgICA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgCi0gICAgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCAKLSAgICA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIAotICAgIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgCi0gICAgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIAotICAgIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgCi0gICAgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA2NSwgODIsIDgyLCAKLSAgICA3OSwgODcsIDcyLCA2OSwgNjUsIDE5NiwgNjUsIDgyLCA4MiwgNzksIDg3LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjUsIAotICAgIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgODksIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgCi0gICAgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCA3OCwgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIAotICAgIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIDcwLCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgCi0gICAgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgODIsIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCAKLSAgICA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCA3NSwgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgCi0gICAgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCAKLSAgICA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCAKLSAgICA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgCi0gICAgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCAKLSAgICA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIAotICAgIDY4LCAxMjgsIDY1LCA4MiwgNjUsIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAKLSAgICAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIAotICAgIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAKLSAgICAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIAotICAgIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCAKLSAgICA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIAotICAgIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDgzLCAKLSAgICAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgODAsIAotICAgIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4MywgCi0gICAgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIwMSwgNjUsIDgwLCAKLSAgICA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAxOTMsIDY1LCA4MCwgNzYsIAotICAgIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgCi0gICAgMjA3LCA2NSwgODAsIDY1LCA4MiwgODQsIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCAKLSAgICA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIAotICAgIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgCi0gICAgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgCi0gICAgNzMsIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCAKLSAgICA3NywgNzksIDc4LCA3MywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgCi0gICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODQsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgCi0gICAgODcsIDczLCA4MywgNjksIDQ1LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIAotICAgIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgCi0gICAgNjksIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIAotICAgIDc4LCAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzIsIDg1LCAKLSAgICAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIAotICAgIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgCi0gICAgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCAKLSAgICA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgCi0gICAgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAKLSAgICAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIAotICAgIDc3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgCi0gICAgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIAotICAgIDE5MywgNjUsIDc3LCA2NSwgODIsIDEyOCwgNjUsIDc3LCA2NSwgMjEwLCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgCi0gICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDEyOCwgNjUsIDc2LCA4NiwgNjksIDc5LCAKLSAgICA3NiwgNjUsIDIxMCwgNjUsIDc2LCA4NSwgNzcsIDEyOCwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgODYsIAotICAgIDE5NywgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgCi0gICAgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCAKLSAgICA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIAotICAgIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgCi0gICAgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCAKLSAgICA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIAotICAgIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgCi0gICAgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCAKLSAgICA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIAotICAgIDY2LCA3MywgNjcsIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCA2NSwgODAsIDcyLCAxMjgsIDY1LCAKLSAgICA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIDY5LCA4MywgNjksIDc2LCA4MywgCi0gICAgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgNzMsIDc3LCA3MywgMTk1LCAKLSAgICA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCA2NSwgODIsIDE5MywgNjUsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgMjAzLCA2NSwgNzMsIDg0LCA3OSwgCi0gICAgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCAKLSAgICA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIAotICAgIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAKLSAgICAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCAKLSAgICA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCAKLSAgICA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgCi0gICAgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKLSAgICA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIAotICAgIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIAotICAgIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAKLSAgICAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgCi0gICAgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIAotICAgIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgCi0gICAgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAotICAgIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgCi0gICAgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCAKLSAgICA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIAotICAgIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgCi0gICAgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIAotICAgIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgCi0gICAgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIAotICAgIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgCi0gICAgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgCi0gICAgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgCi0gICAgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKLSAgICA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgCi0gICAgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIAotICAgIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIAotICAgIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIAotICAgIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCAKLSAgICA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIAotICAgIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgCi0gICAgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAKLSAgICAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIAotICAgIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDEyOCwgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgCisgICAgMTI4LCA2NywgNjcsIDY1LCAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY3LCA2NSwgODgsIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA2NywgNjUsIDg1LCA3NiwgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODUsIAorICAgIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIAorICAgIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCAKKyAgICA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIAorICAgIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgCisgICAgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCAKKyAgICA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIAorICAgIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIAorICAgIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA3OSwgCisgICAgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAKKyAgICAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgCisgICAgNzgsIDY3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCAKKyAgICA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgCisgICAgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIAorICAgIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIAorICAgIDcyLCAxMjgsIDY3LCA2NSwgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgCisgICAgMTI4LCA2NywgNjUsIDY4LCAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCAKKyAgICA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIDEyOCwgNjcsIAorICAgIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIDY3LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAxMjgsIDY3LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCA0OCwgNDksIAorICAgIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgMTI4LCA2NywgCisgICAgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCA2NywgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIDQ1LCA1MSwgCisgICAgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgMjAxLCA2NiwgCisgICAgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCA4NSwgNzUsIAorICAgIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIDY2LCA4NywgCisgICAgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgNzMsIDgzLCAKKyAgICA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCAKKyAgICA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDIxMSwgNjYsIAorICAgIDg1LCA4MiwgMjEzLCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgCisgICAgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCAKKyAgICA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgCisgICAgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCAKKyAgICA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgCisgICAgMTk3LCA2NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKKyAgICA3NiwgNjksIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIAorICAgIDY1LCAxNzMsIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA2NiwgODIsIDg1LCA4MywgCisgICAgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCAKKyAgICA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIAorICAgIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAKKyAgICAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIAorICAgIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgCisgICAgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCAKKyAgICA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNzMsIDc4LCAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKKyAgICAyMDAsIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgCisgICAgMTk2LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgCisgICAgNjYsIDgwLCA3MiwgMTI4LCA2NiwgNzksIDg5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgNjYsIDc5LCAKKyAgICA4NywgODQsIDczLCAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAxMjgsIAorICAgIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIDIxNywgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDc2LCA3MywgNzEsIAorICAgIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzksIDIwNSwgCisgICAgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIDE5NywgNjYsIDc5LCA4NCwgMjAwLCAKKyAgICA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUxLCAxMjgsIDY2LCA3OSwgODIsIAorICAgIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCA2NiwgNzksIDgwLCA3OSwgNzcsIDc5LCA3MCwgCisgICAgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIDEyOCwgNjYsIDc5LCA3OSwgNzcsIDY5LCAKKyAgICA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIAorICAgIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCA3OSwgNzgsIDY5LCAxMjgsIDY2LCA3OSwgCisgICAgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgCisgICAgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgNzksIDY1LCA4MiwgMTI4LCAKKyAgICA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIAorICAgIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCA3NiwgNzksIDc5LCA2OCwgCisgICAgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIDc2LCA2OSwgNzgsIDY4LCAKKyAgICA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIAorICAgIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIAorICAgIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCA4NCwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCAKKyAgICA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgCisgICAgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCAKKyAgICA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIAorICAgIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgCisgICAgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAKKyAgICAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCAKKyAgICA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIAorICAgIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgCisgICAgODMsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCAKKyAgICA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIAorICAgIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIAorICAgIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgCisgICAgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIAorICAgIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIAorICAgIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgCisgICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKKyAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAorICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAorICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAKKyAgICAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCAKKyAgICA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3NiwgMTI4LCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIAorICAgIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgCisgICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCAKKyAgICA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAorICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCisgICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKKyAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAorICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCisgICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgCisgICAgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCAKKyAgICA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgCisgICAgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgCisgICAgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIAorICAgIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgCisgICAgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgCisgICAgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIAorICAgIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgCisgICAgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCAKKyAgICA2NSwgMTI4LCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAorICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgCisgICAgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCAKKyAgICA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCAKKyAgICA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAorICAgIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgMTk0LCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIAorICAgIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgCisgICAgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIAorICAgIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgCisgICAgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKKyAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgCisgICAgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCAKKyAgICA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIAorICAgIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgCisgICAgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgCisgICAgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCAKKyAgICA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIAorICAgIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgCisgICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAxOTYsIDY2LCAKKyAgICA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA2NSwgNjcsIAorICAgIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgNjksIDgyLCA4NSwgCisgICAgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCA1NywgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIDUwLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIDY2LCA1MCwgNTIsIAorICAgIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgNTMsIDEyOCwgNjYsIAorICAgIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgMTc2LCA2NiwgNTAsIAorICAgIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgNTAsIDUwLCA1NiwgCisgICAgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAxODEsIDY2LCA1MCwgCisgICAgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCA0OSwgNTcsIDEyOCwgCisgICAgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIDEyOCwgNjYsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIDUwLCA0OSwgNTAsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgNTcsIDEyOCwgNjYsIAorICAgIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCA0OCwgNTAsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCA2NiwgNDksIDU3LCAKKyAgICA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIDU2LCA1MiwgMTI4LCAKKyAgICA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgMTI4LCA2NiwgNDksIAorICAgIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgNDksIDU1LCA1NSwgCisgICAgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgCisgICAgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIDU0LCAxNzgsIDY2LCAKKyAgICA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIDQ5LCA1MywgNTYsIAorICAgIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgMTI4LCA2NiwgNDksIAorICAgIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgNDksIDUzLCAxNzcsIAorICAgIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgCisgICAgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgCisgICAgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgCisgICAgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgNDksIDUwLCAxNzgsIAorICAgIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgNDksIDQ4LCA1NywgCisgICAgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCA1NSwgMjA1LCA2NiwgCisgICAgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCA2NiwgNDksIDQ4LCAKKyAgICA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIDE4MCwgNjYsIDQ5LCAKKyAgICA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCA2NiwgNDgsIDU2LCAKKyAgICA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIDE4MSwgNjYsIDQ4LCAKKyAgICA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIDU2LCAxNzYsIDY2LCAKKyAgICA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIDU1LCAxODIsIDY2LCAKKyAgICA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIDE3OCwgNjYsIDQ4LCAKKyAgICA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCA2NiwgNDgsIDU0LCAKKyAgICAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCA2NiwgNDgsIDU0LCAKKyAgICA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCA2NiwgNDgsIDUzLCAKKyAgICAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NiwgNDgsIDUzLCAKKyAgICAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCA0OCwgNTMsIDE3NywgCisgICAgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCA0OCwgNTIsIDU1LCAKKyAgICAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCA0OCwgNTIsIDE3OSwgCisgICAgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgCisgICAgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCA1MiwgMTI4LCA2NiwgCisgICAgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAxNzYsIDY2LCA0OCwgCisgICAgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgCisgICAgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgCisgICAgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAxMjgsIDY2LCA0OCwgCisgICAgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgNjYsIDQ4LCA0OSwgCisgICAgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgNDgsIDQ4LCA1NywgCisgICAgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAxODIsIDY2LCA0OCwgCisgICAgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCA2NiwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIDE3NywgNjUsIDkwLCAKKyAgICA4NSwgMTI4LCA2NSwgODksIDY5LCAyMTAsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCAKKyAgICA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIAorICAgIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgCisgICAgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCAKKyAgICA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIAorICAgIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgCisgICAgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIAorICAgIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgCisgICAgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCAKKyAgICA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIAorICAgIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgCisgICAgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIAorICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAKKyAgICAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIAorICAgIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgCisgICAgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIAorICAgIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgCisgICAgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIAorICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgCisgICAgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCAKKyAgICA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgCisgICAgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCAKKyAgICA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIAorICAgIDgzLCAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCAKKyAgICA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKKyAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAorICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCisgICAgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCAKKyAgICA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY1LCA4MiwgODIsIDY1LCA4OSwgCisgICAgMTI4LCA2NSwgODIsIDgwLCA2OSwgNzEsIDcxLCA3MywgNjUsIDg0LCAyMDcsIDY1LCA4MiwgNzksIDg1LCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDY1LCA4MiwgNzksIDg1LCA4MiwgMTkzLCA2NSwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODAsIDgyLCA3OSwgNzAsIAorICAgIDczLCA3NiwgNjksIDEyOCwgNjUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDY1LCA4MiwgNzcsIDg5LCAxMjgsIDY1LCA4MiwgCisgICAgNzcsIDc5LCA4NSwgODIsIDEyOCwgNjUsIDgyLCAyMDUsIDY1LCA4MiwgNzYsIDY1LCA4NSwgMTk5LCA2NSwgODIsIDc1LCAKKyAgICA4NCwgNzMsIDc1LCAyMDcsIDY1LCA4MiwgNzUsIDY1LCA2NiwgMTI4LCA2NSwgODIsIDc1LCA2NSwgNjUsIDc4LCA4NSwgCisgICAgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgNjUsIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIAorICAgIDE5MywgNjUsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY1LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA2NSwgCisgICAgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDcxLCA3MywgMTI4LCAKKyAgICA2NSwgODIsIDY5LCA4MCwgNjUsIDEyOCwgNjUsIDgyLCA2OSwgNjUsIDEyOCwgNjUsIDgyLCA2OCwgNzIsIDY1LCA4NiwgNzMsIAorICAgIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA2NywgCisgICAgNzIsIDY1LCA3MywgNzksIDIwNiwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY3LCAyMDAsIDY1LCAKKyAgICA4MiwgNjcsIDEyOCwgNjUsIDgyLCAxOTUsIDY1LCA4MiwgNjUsIDc3LCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjksIAorICAgIDY1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA4NSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgCisgICAgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgNzksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIAorICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIDEyOCwgNjUsIDgyLCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA2NSwgCisgICAgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCAKKyAgICA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIAorICAgIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgCisgICAgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCAKKyAgICA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIAorICAgIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAKKyAgICAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgCisgICAgODQsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCAKKyAgICA4NCwgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIAorICAgIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKKyAgICA3OSwgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIAorICAgIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIAorICAgIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgCisgICAgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAorICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCisgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAorICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCAKKyAgICA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIAorICAgIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKKyAgICA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCAxOTMsIAorICAgIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCA4MywgODUsIDIxOCwgCisgICAgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIDIwNywgNjUsIDc4LCAKKyAgICA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3OCwgNzgsIAorICAgIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIDEyOCwgNjUsIDc4LCA3MiwgCisgICAgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIAorICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgCisgICAgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCAKKyAgICA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIDE5MywgNjUsIDc3LCA2NSwgODIsIDEyOCwgNjUsIDc3LCA2NSwgCisgICAgMjEwLCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc3LCA2NSwgNzYsIDcxLCAKKyAgICA2NSwgNzcsIDEyOCwgNjUsIDc2LCA4NiwgNjksIDc5LCA3NiwgNjUsIDIxMCwgNjUsIDc2LCA4NSwgNzcsIDEyOCwgNjUsIAorICAgIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgODYsIDE5NywgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIAorICAgIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgCisgICAgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIAorICAgIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgCisgICAgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCAKKyAgICA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIAorICAgIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgCisgICAgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgCisgICAgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAKKyAgICAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIDc2LCA2NSwgODksIAorICAgIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgCisgICAgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIDc1LCA2NSwgNjYsIAorICAgIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgNjUsIDc1LCA2NiwgCisgICAgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCA3MywgODksIDY1LCAKKyAgICA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIDIwNiwgNjUsIAorICAgIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgCisgICAgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCAKKyAgICA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgCisgICAgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgCisgICAgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAKKyAgICAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIAorICAgIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2OSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCAKKyAgICA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIAorICAgIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgCisgICAgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAKKyAgICAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIAorICAgIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgCisgICAgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCAKKyAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAorICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCisgICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAorICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCisgICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCisgICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIAorICAgIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgCisgICAgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIAorICAgIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgCisgICAgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCAKKyAgICA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIAorICAgIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIAorICAgIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIAorICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIAorICAgIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgCisgICAgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgCisgICAgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIAorICAgIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIAorICAgIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgCisgICAgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIAorICAgIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAKKyAgICAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIAorICAgIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgCisgICAgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgCisgICAgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIAorICAgIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBsZXhpY29uX29mZnNldFtdID0gewotICAgIDAsIDAsIDYsIDEwLCAxNSwgMjMsIDI3LCAzNCwgMzksIDQxLCA0NCwgNTIsIDYyLCA2OCwgODEsIDkzLCAxMDIsIDEwOCwgCi0gICAgMTEzLCAxMjEsIDEzMCwgMTM1LCAxNDAsIDE0NCwgMTUwLCAxNTMsIDE1OCwgMTY2LCAxNzMsIDE4MSwgMTg2LCAxOTEsIAotICAgIDE5NCwgMjAwLCAyMDgsIDIxNSwgMjI1LCAyMzIsIDI0MSwgMjQ0LCAyNDcsIDI1MiwgMjU4LCAyNjIsIDI3MSwgMjc4LCAKLSAgICAyODUsIDI5MCwgMjk5LCAzMDcsIDMxMywgMzE5LCAzMjUsIDE0MSwgMzMwLCAzMzEsIDMzNywgMzQ1LCAzNTEsIDM1NywgCi0gICAgMzY1LCAzNzIsIDM3NCwgMzc3LCAzODEsIDM4OCwgMzkwLCAzOTcsIDQwMiwgNDA4LCA0MTAsIDQxNywgNDI1LCA0MjcsIAotICAgIDMxMSwgNDMwLCA0MzIsIDQzNywgNDQyLCA0NDcsIDQ1MywgNDYwLCA0NjksIDQ3OSwgNDg0LCA0ODksIDQ5MywgNTA2LCAKLSAgICA1MTMsIDUxNywgNTI2LCA1MzMsIDU0MCwgNTQzLCA1NDksIDU1MywgNTYzLCA1NzEsIDU3OSwgNTg4LCA1OTYsIDYwNCwgCi0gICAgNjA5LCA2MTcsIDYyNCwgNjM0LCA2NDUsIDY0OSwgNjU0LCA2NTcsIDY2MSwgNjY1LCA2NjYsIDY3MiwgNjc4LCA2ODAsIAotICAgIDY4MywgNjg3LCAzNDQsIDY5MCwgNjk0LCA3MDMsIDcwNiwgNzA5LCA3MTQsIDcxOCwgNzI2LCA3MjksIDczNSwgNzQyLCAKLSAgICA3NDksIDc1OCwgNzY1LCA3NzQsIDc3OSwgNzgzLCA3OTIsIDgwMiwgODExLCA4MTcsIDgyMywgODMwLCA4MzgsIDg0NiwgCi0gICAgODU1LCA4NjMsIDg2NywgODc1LCA4ODAsIDc4MSwgNTExLCA4ODksIDg5MywgODk3LCA5MDQsIDkwOCwgOTE1LCA2ODksIAotICAgIDkxOCwgOTI2LCA5MjksIDkzMywgOTQwLCA5NDQsIDk0OSwgOTU3LCA5NjAsIDE5MiwgOTY2LCA5NzEsIDk4MSwgOTkwLCAKLSAgICA5OTcsIDEwMDQsIDEwMTIsIDEwMjAsIDEwMjYsIDEwMzAsIDEwMzUsIDEwNDAsIDEwNDYsIDEwNTEsIDEwNTQsIDExMSwgCi0gICAgMTA2MCwgMTA2NCwgMTA3MCwgMTA3MywgMTA4NiwgMTA4OSwgMTA5MywgMjIsIDEwOTcsIDExMDIsIDExMDUsIDExMDgsIAotICAgIDExMTQsIDExMjQsIDExMjYsIDExMzIsIDExNDIsIDExNDcsIDExNTYsIDExNjQsIDMyOCwgMTE2NywgMTE3MCwgMTE3NCwgCi0gICAgMTE3OSwgMTE4NSwgMTE5MCwgMTE5NywgMTE5OSwgMTIwNCwgMTIwOSwgMTIxNSwgMTIyMCwgMTIyNSwgMTIyOSwgMTIzNCwgCi0gICAgMTI0MCwgMTI0NSwgMTI1MCwgMTI1NCwgMTI1OSwgMTI2NCwgMTI2OCwgMTI3MywgMTI3OCwgMTI4MywgMTI4OSwgMTI5NSwgCi0gICAgMTMwMSwgMTMwNiwgMTMxMCwgMTMxNSwgMTMyMCwgMTMyNSwgMTMyOSwgMTMzNCwgMTMzOSwgMTM0NCwgMTM0OSwgMTIwMCwgCi0gICAgMTIwNSwgMTIxMCwgMTIxNiwgMTIyMSwgMTM1MywgMTIyNiwgMTM1OSwgMTM2OCwgMTIzMCwgMTM3MiwgMTIzNSwgMTI0MSwgCi0gICAgMTI0NiwgMTM3NiwgMTM4MSwgMTM4NiwgMTM5MCwgMTM5NCwgMTQwMCwgMTQwNCwgMTI1MSwgMTQwNywgMTQxMSwgMTI1NSwgCi0gICAgMTQxNywgMTI2MCwgMTQyMSwgMTQyNSwgMTI2NSwgMTQyOSwgMTQzNCwgMTQzOCwgMTQ0MSwgMTQ0NSwgMTI2OSwgMTI3NCwgCi0gICAgMTQ1MCwgMTI3OSwgMTQ1NiwgMTQ2MiwgMTQ2OCwgMTQ3NCwgMTI4NCwgMTI5NiwgMTMwMiwgMTQ3OCwgMTQ4MiwgMTQ4NiwgCi0gICAgMTQ4OSwgMTMwNywgMTQ5MywgMTQ5NSwgMTUwMCwgMTUwNSwgMTUxMSwgMTUxNiwgMTUyMSwgMTUyNSwgMTUzMCwgMTUzNSwgCi0gICAgMTU0MCwgMTU0NSwgMTU1MSwgMTU1NiwgMTU2MSwgMTU2NywgMTU3MywgMTU3OCwgMTU4MiwgMTU4NywgMTU5MiwgMTU5NywgCi0gICAgMTYwMiwgMTYwNiwgMTYxNCwgMTYxOCwgMTYyMywgMTYyOCwgMTYzMywgMTYzOCwgMTY0MiwgMTY0NSwgMTY1MCwgMTY1NSwgCi0gICAgMTY2MCwgMTY2NSwgMTY3MSwgMTY3NiwgMTY4MCwgMTMxMSwgMTY4MywgMTY4OCwgMTY5MywgMTMxNiwgMTY5NywgMTcwMSwgCi0gICAgMTcwOCwgMTMyMSwgMTcxNSwgMTMyNiwgMTcxOSwgMTcyMSwgMTcyNiwgMTczMiwgMTMzMCwgMTczNywgMTc0NiwgMTMzNSwgCi0gICAgMTc1MSwgMTc1NywgMTM0MCwgMTc2MiwgMTc2NywgMTc3MCwgMTc3NSwgMTc3OSwgMTc4MywgMTc4NywgMTc5MCwgMTc5NCwgCi0gICAgMTM0NSwgMTM1MCwgMTEwMCwgMTc5OSwgMTgwNSwgMTgxMSwgMTgxNywgMTgyMywgMTgyOSwgMTgzNSwgMTg0MSwgMTg0NywgCi0gICAgMTg1MiwgMTg1OCwgMTg2NCwgMTg3MCwgMTg3NiwgMTg4MiwgMTg4OCwgMTg5NCwgMTkwMCwgMTkwNiwgMTkxMSwgMTkxNiwgCi0gICAgMTkyMSwgMTkyNiwgMTkzMSwgMTkzNiwgMTk0MSwgMTk0NiwgMTk1MSwgMTk1NiwgMTk2MiwgMTk2NywgMTk3MywgMTk3OCwgCi0gICAgMTk4NCwgMTk5MCwgMTk5NSwgMjAwMSwgMjAwNywgMjAxMywgMjAxOSwgMjAyNCwgMjAyOSwgMjAzMSwgMjAzMiwgMjAzNiwgCi0gICAgMjA0MCwgMjA0NSwgMjA0OSwgMjA1MywgMjA1NywgMjA2MSwgMjA2NCwgMjA2OSwgMjA3MywgMjA3OCwgMjA4MiwgMjA4NiwgCi0gICAgMjA5MSwgMjA5NSwgMjA5OCwgMjEwMiwgMjEwOCwgMjEyMiwgMjEyNiwgMjEzMCwgMjEzMywgMjEzOCwgMjE0MiwgMjE0NiwgCi0gICAgMjE0OSwgMjE1MywgMjE1OCwgMjE2MywgMjE2OCwgMjE3MywgMjE3NywgMjE4MSwgMjE4NSwgMjE5MCwgMjE5NCwgMjE5OSwgCi0gICAgMjIwMywgMjIwOCwgMjIxNCwgMjIyMSwgMjIyNywgMjIzMiwgMjIzNywgMjI0MiwgMjI0OCwgMjI1MywgMjI1OSwgMjI2NCwgCi0gICAgMjI2NywgMTIxNywgMjI2OSwgMjI3NiwgMjI4NCwgMjI5NCwgMjMwMywgMjMxNywgMjMyMSwgMjMyNSwgMjMzOCwgMjM0NiwgCi0gICAgMjM1MCwgMjM1NSwgMjM1OSwgMjM2MiwgMjM2NiwgMjM3MCwgMjM3NSwgMjM4MCwgMjM4NSwgMjM4OSwgMjM5MiwgMjM5NiwgCi0gICAgMjQwMywgMjQxMCwgMjQxNiwgMjQyMSwgMjQyNiwgMjQzMiwgMjQzOCwgMjQ0MywgMjQ0NiwgMTcyMywgMjQ0OCwgMjQ1NCwgCi0gICAgMjQ1OCwgMjQ2MywgMjQ2NywgMjQ3MSwgMTcyOCwgMTczNCwgMjQ3NiwgMjQ4MCwgMjQ4MywgMjQ4OCwgMjQ5MywgMjQ5OCwgCi0gICAgMjUwMywgMjUwNywgMjUxNCwgMjUxOSwgMjUyMiwgMjUyOSwgMjUzNSwgMjUzOSwgMjU0MywgMjU0NywgMjU1MiwgMjU1OSwgCi0gICAgMjU2NCwgMjU2OSwgMjU3NiwgMjU4MiwgMjU4OCwgMjU5NCwgMjYwOCwgMjYyNSwgMjY0MCwgMjY1NSwgMjY2NCwgMjY2OSwgCi0gICAgMjY3MywgMjY3OCwgMjY4MywgMjY4NywgMjY5OSwgMjcwNiwgMjcxMiwgMjIxNywgMjcxOCwgMjcyNSwgMjczMSwgMjczNSwgCi0gICAgMjczOCwgMjc0NSwgMjc1MSwgMjc1NSwgMjc1OSwgMjc2MywgMjA1NCwgMjc2NywgMjc3MiwgMjc3NywgMjc4MSwgMjc4OSwgCi0gICAgMjc5MywgMjc5NywgMjgwMSwgMjgwNiwgMjgxMSwgMjgxNiwgMjgyMCwgMjgyNSwgMjgzMCwgMjgzNCwgMjgzOSwgMjg0MywgCi0gICAgMjg0NiwgMjg1MCwgMjg1NCwgMjg1OSwgMjg2MywgMjg2NywgMjg3MywgMjg4MiwgMjg4NiwgMjg5MCwgMjg5NiwgMjkwMSwgCi0gICAgMjkwOCwgMjkxMiwgMjkyMiwgMjkyNiwgMjkzMSwgMjkzNSwgMjk0MCwgMjk0NiwgMjk1MSwgMjk1NSwgMjk1OSwgMjk2MywgCi0gICAgMjQwNiwgMjk3MSwgMjk3NiwgMjk4MiwgMjk4NywgMjk5MSwgMjk5NiwgMzAwMSwgMzAwNSwgMzAxMSwgMzAxNiwgMzAyMiwgCi0gICAgMzAyNiwgMzAzMiwgMzAzNywgMzA0MiwgMzA0NywgMzA1MiwgMzA1NywgMzA2MiwgMzA2NywgMzA3MiwgMzA3NywgMzA4MywgCi0gICAgMzA4OCwgMTIyNywgODAsIDMwOTQsIDMwOTgsIDMxMDIsIDMxMDYsIDMxMTEsIDMxMTUsIDMxMTksIDMxMjMsIDMxMjcsIAotICAgIDMxMzIsIDMxMzYsIDMxNDEsIDMxNDUsIDMxNDgsIDMxNTIsIDMxNTcsIDMxNjEsIDMxNjYsIDMxNzAsIDMxNzQsIDMxNzgsIAotICAgIDMxODMsIDMxODcsIDMxOTAsIDMyMDMsIDMyMDcsIDMyMTEsIDMyMTUsIDMyMTksIDMyMjMsIDMyMjYsIDMyMzAsIDMyMzQsIAotICAgIDMyMzksIDMyNDMsIDMyNDgsIDMyNTMsIDMyNTgsIDMyNjIsIDMyNjUsIDMyNjgsIDMyNzQsIDMyNzgsIDMyODIsIDMyODUsIAotICAgIDMyODksIDMyOTMsIDMyOTYsIDMzMDIsIDMzMDcsIDMzMTIsIDMzMTgsIDMzMjMsIDMzMjgsIDMzMzQsIDMzNDAsIDMzNDUsIAotICAgIDMzNTAsIDMzNTUsIDEwOTEsIDU0MiwgMzM2MCwgMzM2MywgMzM2OCwgMzM3MiwgMzM3NSwgMzM3OSwgMzM4NCwgMzM4OSwgCi0gICAgMzM5MywgMzM5OCwgMzQwMiwgMzQwNywgMzQxMSwgMzQxNSwgMzQyMSwgMzQyNywgMzQzMCwgMzQzMywgMzQzOSwgMzQ0NiwgCi0gICAgMzQ1MywgMzQ1OSwgMzQ2NiwgMzQ3MSwgMzQ3NSwgMzQ4MiwgMzQ4NywgMzQ5MSwgMzUwMSwgMzUwNSwgMzUwOSwgMzUxNCwgCi0gICAgMzUxOSwgMzUyOSwgMjA2NSwgMzUzNCwgMzUzOCwgMzU0MSwgMzU0NywgMzU1MiwgMzU1OCwgMzU2NCwgMzU2OSwgMzU3NiwgCi0gICAgMzU4MCwgMzU4NCwgNjU4LCA2ODgsIDM1ODgsIDM1OTUsIDM2MDIsIDM2MDksIDM2MTUsIDM2MjEsIDM2MjYsIDM2MzAsIAotICAgIDM2MzYsIDM2NDEsIDM2NDUsIDIwNzQsIDM2NDksIDM2NTcsIDU4MywgMzY2MywgMzY3NCwgMzY3OCwgMzY4OCwgMjA3OSwgCi0gICAgMzY5NCwgMzY5OSwgMzcxNCwgMzcyMCwgMzcyNywgMzczNywgMzc0MywgMzc0OCwgMzc1NCwgMzc2MCwgMzc2MywgMzc2NywgCi0gICAgMzc3MiwgMzc3OSwgMzc4NCwgMzc4OCwgMzc5MiwgMzc5NiwgMzgwMCwgMzgwNSwgMzgxMSwgMzE1MywgMzgxNiwgMzgyOCwgCi0gICAgMzgzNiwgMzg0MSwgMTUyNywgMzg0OCwgMzg1MSwgMzg1NCwgMzg1OCwgMzg2MSwgMzg2NywgMzg3MSwgMzg4NSwgMzg4OSwgCi0gICAgMzg5MiwgMzg5NiwgMzkwMiwgMzkwOCwgMzkxMywgMzkxNywgMzkyMSwgMzkyNywgMzkzOCwgMzk0NCwgMzk0OSwgMzk1NSwgCi0gICAgMzk1OSwgMzk2NywgMzk3NywgMzk4MywgMzk4OCwgMzk5NywgNDAwNSwgNDAxMiwgNDAxNiwgNDAyMiwgNDAzMSwgNDA0MCwgCi0gICAgNDA0NCwgNDA0OSwgNDA1NCwgNDA1OCwgNDA2NiwgNDA3MCwgNDA3NSwgNDA3OSwgMjA4NywgMTM2OSwgNDA4NSwgNDA5MCwgCi0gICAgNDA5NiwgNDEwMSwgNDEwNiwgNDExMSwgNDExNiwgNDEyMSwgNDEyNiwgNDEzMiwgNDEzNywgNDE0MywgNDE0OCwgNDE1MywgCi0gICAgNDE1OCwgNDE2NCwgNDE2OSwgNDE3NCwgNDE3OSwgNDE4NCwgNDE5MCwgNDE5NSwgNDIwMSwgNDIwNiwgNDIxMSwgNDIxNiwgCi0gICAgNDIyMSwgNDIyNiwgNDIzMSwgNDIzNywgNDI0MiwgNDI0NywgMzM1LCA0MzYsIDQyNTIsIDQyNTgsIDQyNjIsIDQyNjYsIAotICAgIDQyNzEsIDQyNzUsIDQyNzksIDQyODIsIDQyODYsIDQyOTAsIDQyOTQsIDQyOTksIDQzMDMsIDQzMDcsIDQzMTMsIDQwODIsIAotICAgIDQzMTgsIDQzMjEsIDQzMjgsIDQzMzIsIDQzNDUsIDQzNDksIDQzNTMsIDQzNTcsIDQzNjEsIDQzNjUsIDQzNjksIDQzNzUsIAotICAgIDQzODIsIDQzOTAsIDQzOTQsIDQ0MDIsIDQ0MTEsIDQ0MTcsIDQ0MjksIDQ0MzQsIDQ0MzcsIDQ0NDEsIDQ0NTEsIDQ0NTksIAotICAgIDQ0NjcsIDQ0NzMsIDQ0NzcsIDQ0ODcsIDQ0OTcsIDQ1MDUsIDQ1MTIsIDQ1MTksIDQ1MjUsIDQ1MzEsIDQ1MzgsIDQ1NDIsIAotICAgIDQ1NDksIDQ1NTksIDQ1NjksIDQ1NzcsIDQ1ODQsIDQ1ODksIDQ1OTMsIDQ2MDEsIDQ2MDYsIDQ2MTMsIDQ2MjEsIDQ2MjYsIAotICAgIDQ2MzEsIDQ2MzUsIDQ2NDksIDQ2NTQsIDQ2NTksIDQ2NjYsIDQ2NzUsIDQ2NzgsIDQ2ODIsIDQ2ODYsIDQ2ODksIDQ2OTQsIAotICAgIDQ2OTksIDQ3MDgsIDQ3MTQsIDQ3MjAsIDQ3MjYsIDQ3MzAsIDQ3NDEsIDQ3NTEsIDQ3NjYsIDQ3ODEsIDQ3OTYsIDQ4MTEsIAotICAgIDQ4MjYsIDQ4NDEsIDQ4NTYsIDQ4NzEsIDQ4ODYsIDQ5MDEsIDQ5MTYsIDQ5MzEsIDQ5NDYsIDQ5NjEsIDQ5NzYsIDQ5OTEsIAotICAgIDUwMDYsIDUwMjEsIDUwMzYsIDUwNTEsIDUwNjYsIDUwODEsIDUwOTYsIDUxMTEsIDUxMjYsIDUxNDEsIDUxNTYsIDUxNzEsIAotICAgIDUxODYsIDUyMDEsIDUyMTYsIDUyMzEsIDUyNDYsIDUyNjEsIDUyNzYsIDUyOTEsIDUzMDYsIDUzMjEsIDUzMzYsIDUzNTEsIAotICAgIDUzNjYsIDUzODEsIDUzOTYsIDU0MTEsIDU0MjYsIDU0NDEsIDU0NTYsIDU0NzEsIDU0ODYsIDU0OTUsIDU1MDQsIDU1MDksIAotICAgIDU1MTUsIDU1MjUsIDU1MjksIDU1MzQsIDU1MzksIDU1NDcsIDU1NTEsIDU1NTQsIDU1NTgsIDI5MTcsIDU1NjEsIDU1NjYsIAotICAgIDMxMCwgNDQ1LCA1NTcyLCA1NTgwLCA1NTg0LCA1NTg4LCA1NTkxLCA1NTk3LCA1NjAxLCA1NjA5LCA1NjE1LCA1NjIwLCAKLSAgICA1NjI3LCA1NjM0LCA1NjQwLCA1NjQ1LCA1NjUyLCA1NjU4LCA1NjY2LCA1NjcwLCA1Njc1LCA1Njg3LCA1Njk4LCA1NzA1LCAKLSAgICA1NzExLCAzMTc1LCA1NzE1LCA1NzIxLCA1NzI2LCA1NzMxLCA1NzM2LCA1NzQyLCA1NzQ3LCA1NzUyLCA1NzU3LCA1NzYyLCAKLSAgICA1NzY4LCA1NzczLCA1Nzc4LCA1Nzg0LCA1Nzg5LCA1Nzk1LCA1ODAwLCA1ODA2LCA1ODExLCA1ODE3LCA1ODIyLCA1ODI3LCAKLSAgICA1ODMyLCA1ODM3LCA1ODQyLCA1ODQ4LCA1ODUzLCA1ODU4LCA1ODYzLCA1ODY5LCA1ODc1LCA1ODgxLCA1ODg3LCA1ODkzLCAKLSAgICA1ODk5LCA1OTA1LCA1OTExLCA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQwLCA1OTQ1LCA1OTUwLCA1OTU1LCA1OTYwLCAKLSAgICA1OTY1LCA1OTcwLCA1OTc1LCA1OTgxLCA1OTg3LCA1OTkyLCA1OTk4LCA2MDA0LCA2MDEwLCA2MDE1LCA2MDIwLCA2MDI1LCAKLSAgICA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUyLCA2MDU3LCA2MDYyLCA2MDY3LCA2MDczLCA2MDc4LCA2MDg0LCA2MDkwLCAKLSAgICA2MDk2LCA2MTAyLCA2MTA4LCA2MTE0LCA2MTIwLCA2MTI2LCA2MTMyLCAyMDk2LCA1NTkwLCA2MTM3LCA2MTQxLCA2MTQ1LCAKLSAgICA2MTQ4LCA2MTU1LCA2MTU4LCA2MTY2LCA2MTcxLCA2MTc2LCA2MTY3LCA2MTgxLCA2MTY4LCA2MTg1LCA2MTkxLCA2MTk3LCAKLSAgICA2MjAyLCA2MjA3LCA2MjE0LCA2MjIyLCA2MjI3LCA2MjMxLCA2MjM0LCA2MjM4LCAyMTI3LCA1NTEsIDYyNDIsIDYyNDYsIAotICAgIDYyNTEsIDYyNTcsIDYyNjIsIDYyNjYsIDYyNjksIDYyNzMsIDYyNzksIDYyODQsIDYyODgsIDYyOTUsIDYyOTksIDYzMDMsIAotICAgIDYzMDcsIDk0NiwgNzQ3LCA2MzEwLCA2MzE4LCA2MzI1LCA2MzMyLCA2MzM4LCA2MzQ1LCA2MzUzLCA2MzYwLCA2MzY3LCAKLSAgICA2MzcyLCA2Mzg0LCAxMjQ3LCAxMzc3LCAxMzgyLCA2Mzk1LCAxMzg3LCA2Mzk5LCA2NDAzLCA2NDEyLCA2NDIwLCA2NDI5LCAKLSAgICA2NDM1LCA2NDQwLCA2NDQ0LCA2NDUwLCA2NDU1LCA2NDYyLCA2NDY2LCA2NDc1LCA2NDg0LCA2NDkzLCA2NTAyLCA2NTA3LCAKLSAgICA2NTEyLCA2NTI0LCA2NTI5LCA2NTM3LCAyMTc4LCA2NTQxLCA2NTQzLCA2NTQ4LCA2NTUyLCA2NTYxLCA2NTY5LCAxMzkxLCAKLSAgICAxMzMsIDM0MDMsIDM0MDgsIDY1NzUsIDY1NzksIDY1ODgsIDY1OTQsIDY1OTksIDY2MDIsIDY2MTEsIDI2NTIsIDY2MTcsIAotICAgIDY2MjUsIDY2MjksIDY2MzMsIDIxOTEsIDY2MzcsIDY2NDIsIDY2NDksIDY2NTUsIDY2NjEsIDY2NjQsIDY2NjYsIDY2NjksIAotICAgIDY2NzcsIDY2ODUsIDY2OTMsIDY2OTYsIDY3MDEsIDYxNzgsIDY3MDQsIDY3MDYsIDY3MTEsIDY3MTYsIDY3MjEsIDY3MjYsIAotICAgIDY3MzEsIDY3MzYsIDY3NDEsIDY3NDYsIDY3NTEsIDY3NTYsIDY3NjIsIDY3NjcsIDY3NzIsIDY3NzcsIDY3ODMsIDY3ODgsIAotICAgIDY3OTMsIDY3OTgsIDY4MDMsIDY4MDgsIDY4MTMsIDY4MTksIDY4MjQsIDY4MjksIDY4MzQsIDY4MzksIDY4NDQsIDY4NDksIAotICAgIDY4NTQsIDY4NTksIDY4NjQsIDY4NjksIDY4NzQsIDY4NzksIDY4ODQsIDY4ODksIDY4OTQsIDY4OTksIDY5MDQsIDY5MTAsIAotICAgIDY5MTYsIDY5MjEsIDY5MjYsIDY5MzEsIDY5MzYsIDY5NDEsIDIyMTUsIDIyMjIsIDIyMjgsIDY5NDYsIDY5NTIsIDIyNTQsIAotICAgIDIyNjAsIDY5NjAsIDY5NjQsIDY5NjksIDY5NzMsIDY5NzcsIDY5ODEsIDY5ODYsIDY5OTAsIDY5OTUsIDY5OTksIDcwMDIsIAotICAgIDcwMDUsIDcwMTEsIDcwMTcsIDcwMjMsIDcwMjksIDcwMzUsIDcwNDEsIDcwNDcsIDcwNTEsIDcwNTUsIDcwNTksIDcwNjMsIAotICAgIDcwNjcsIDcwNzIsIDcwNzksIDcwOTAsIDcwOTgsIDcxMDgsIDcxMTUsIDcxMjAsIDcxMjQsIDcxMzUsIDcxNDgsIDcxNTksIAotICAgIDcxNzIsIDcxODMsIDcxOTUsIDcyMDcsIDcyMTksIDcyMzIsIDcyNDUsIDcyNTIsIDcyNTgsIDcyNzIsIDcyNzksIDcyODUsIAotICAgIDcyODksIDcyOTQsIDcyOTgsIDczMDUsIDczMTMsIDczMTcsIDczMjMsIDczMjksIDczMzksIDczNDMsIDczNDgsIDczNTMsIAotICAgIDczNjAsIDczNjYsIDczNzYsIDYzNDAsIDczODIsIDczODYsIDczOTMsIDc0NiwgNzM5NywgNzQwMSwgNzQwNiwgNzQxMSwgCi0gICAgNzQxNiwgNzQyMCwgNzQyNiwgNzQzNCwgNzQ0MCwgNzQ0NCwgNzQ1MCwgNzQ2MCwgNzQ2NCwgNzQ3MCwgNzQ3NSwgNzQ3OSwgCi0gICAgNzQ4NSwgNzQ5MSwgMjExOSwgNzQ5NiwgNzQ5OCwgNzUwNiwgNzUxNSwgNzUxOSwgNzUyNSwgNzUzMCwgNzUzNSwgNzU0MCwgCi0gICAgNzU0NSwgNzU1MSwgNzU1NiwgMzkyMywgNzU2MSwgNzU2NSwgNzU3MSwgNzU3NiwgNzU4MiwgNzU4NywgNzU5MiwgNzU5OCwgCi0gICAgNzYwMywgNzUyMCwgNzYwOSwgNzYxMywgNzYyMCwgNzYyNiwgNzYzMSwgNzYzNSwgNDY0NSwgNzY0MCwgNzY0OSwgNjY0NSwgCi0gICAgNjY1MiwgNzY1NCwgMjgwMywgNzY1OCwgNzY2MywgNzY2OCwgNzUzMSwgNzY3MiwgNzUzNiwgNzU0MSwgNzY3NywgNzY4NCwgCi0gICAgNzY5MSwgNzY5NywgNzcwMywgNzcwOSwgNzcxNCwgNzcxOSwgNzcyNCwgNzU0NiwgNzU1MiwgNzczMCwgNzczNiwgNzc0MSwgCi0gICAgNzc0OSwgNzU1NywgNzc1NCwgMTAyOCwgNzc1NywgNzc2NSwgNzc3MSwgNzc3NywgNzc4NiwgNzc5NCwgNzc5OSwgNzgwNSwgCi0gICAgNzgxMywgNzgyMCwgNzgzNSwgNzg1MiwgNzg3MSwgNzg4MCwgNzg4OCwgNzkwMywgNzkxNCwgNzkyNCwgNzkzNCwgNzk0MiwgCi0gICAgNzk0OCwgNzk2MCwgNzk2OSwgNzk3NywgNzk4NCwgNzk5MSwgNzk5NywgODAwMiwgODAxMCwgODAyMCwgODAyNywgODAzNywgCi0gICAgODA0NywgODA1NywgODA2NSwgODA3MiwgODA4MSwgODA5MSwgODEwNSwgODEyMCwgODEyOSwgODEzNywgODE0MiwgODE0NiwgCi0gICAgODE1NSwgODE2MSwgODE2NiwgODE3NiwgODE4NiwgODE5NiwgODIwMSwgODIwNSwgODIxNCwgODIxOSwgODIyOSwgODI0MCwgCi0gICAgODI1MywgODI2NiwgODI3OCwgODI4NiwgODI5MSwgODI5NSwgODMwMSwgODMwNiwgODMxNCwgODMyMiwgODMyOSwgODMzNCwgCi0gICAgODM0MiwgODM0OCwgODM1MSwgODM1NSwgODM2MSwgODM2OSwgODM3NCwgODM3OCwgODM4NiwgODM5NSwgODQwMywgODQwOSwgCi0gICAgODQxMywgODQyMCwgODQzMSwgODQzNSwgODQzOCwgODQ0NCwgODQ0OSwgODQ1MywgODQ1OSwgODQ2NiwgODQ3MiwgODQ3NywgCi0gICAgODQ4NCwgODQ5MSwgODQ5OCwgODUwNSwgODUxMiwgODUxOSwgODUyNCwgNzg0OCwgODUyOSwgODUzNSwgODU0MiwgODU0OSwgCi0gICAgODU1NCwgODU2MSwgODU3MCwgODU3NCwgODU4NiwgODU5MCwgODU5MywgODU5NywgODYwMSwgODYwNSwgODYwOSwgODYxNSwgCi0gICAgODYyMCwgODYyNiwgODYzMSwgODYzNiwgODY0MiwgODY0NywgODY1MiwgNzM1NiwgODY1NywgODY2MSwgODY2NSwgODY2OSwgCi0gICAgODY3NCwgODY3OSwgODY4NywgODY5MywgODY5NywgODcwMSwgODcwOCwgODcxMywgODcyMSwgODcyNiwgODczMCwgODczMywgCi0gICAgODczOSwgODc0NiwgODc1MCwgODc1MywgODc1OCwgODc2MiwgMzk2MiwgODc2OCwgODc3NywgMzYsIDg3ODUsIDg3OTEsIAotICAgIDg3OTYsIDczNzEsIDg4MDEsIDg4MDcsIDg4MTIsIDg4MTYsIDg4MTksIDg4MzQsIDg4NTMsIDg4NjUsIDg4NzgsIDg4OTEsIAotICAgIDg5MDQsIDg5MTgsIDg5MzEsIDg5NDYsIDg5NTMsIDg5NTksIDg5NjMsIDg5NzcsIDg5ODIsIDg5ODgsIDg5OTMsIDkwMDEsIAotICAgIDkwMDYsIDY0NzEsIDkwMTEsIDkwMTQsIDkwMjEsIDkwMjYsIDkwMzAsIDI4MDgsIDk1NSwgOTAzNiwgOTA0MCwgOTA0NiwgCi0gICAgOTA1MiwgOTA1NywgOTA2MywgOTA2OCwgNzU2NiwgOTA3NCwgOTA4MCwgOTA4NSwgOTA5MCwgOTA5OCwgOTEwNCwgOTExNywgCi0gICAgOTEyNSwgOTEzMiwgNzU3MiwgOTEzOCwgOTE0NiwgOTE1NCwgOTE2MSwgOTE3NCwgOTE4NiwgOTE5NiwgOTIwMywgOTIxMCwgCi0gICAgOTIxOSwgOTIyOCwgOTIzNiwgOTI0MywgOTI0OCwgOTI1NCwgNzU3NywgOTI1OSwgOTI2NSwgNzU4MywgOTI3MCwgOTI3MywgCi0gICAgOTI4MCwgOTI4NiwgOTI5OSwgNzA4MywgOTMxMCwgOTMxNiwgOTMyNSwgOTMzMywgOTM0MCwgOTM0NiwgOTM1MiwgOTM1NywgCi0gICAgOTM2MSwgOTM2NiwgODgyNiwgOTM3MiwgNzU4OCwgOTM3OSwgOTM4NCwgOTM5MSwgOTM5NywgOTQwMywgOTQwOCwgOTQxNiwgCi0gICAgOTQyNCwgOTQzMSwgOTQzNSwgOTQ0OSwgOTQ1OSwgOTQ2NCwgOTQ2OCwgOTQ3OSwgOTQ4NSwgOTQ5MCwgOTQ5NSwgNzU5MywgCi0gICAgNzU5OSwgOTQ5OSwgOTUwMiwgOTUwNywgOTUxOSwgOTUyNiwgOTUzMSwgOTUzNSwgOTU0MCwgOTU0NCwgOTU1MSwgOTU1NywgCi0gICAgNzYwNCwgNzUyMSwgOTU2NCwgMjgxMywgOCwgOTU3MSwgOTU3NiwgOTU4MCwgOTU4NiwgOTU5NCwgOTYwNCwgOTYwOSwgCi0gICAgOTYxNCwgOTYyMSwgOTYyOCwgOTYzMiwgOTY0MywgOTY1MywgOTY2MiwgOTY3NCwgOTY3OSwgOTY4MywgOTY5MSwgOTcwNSwgCi0gICAgOTcwOSwgOTcxMiwgOTcyMCwgOTcyNywgOTczNSwgOTczOSwgOTc1MCwgOTc1NCwgOTc2MSwgOTc2NiwgOTc3MCwgOTc3NiwgCi0gICAgOTc4MSwgOTc4NSwgOTc5MSwgOTc5NiwgOTgwNywgOTgxMSwgOTgxNCwgOTgyMCwgOTgyNSwgOTgzMSwgOTgzNywgOTg0NCwgCi0gICAgOTg1NSwgOTg2NSwgOTg3NSwgOTg4NCwgOTg5MSwgNzYxNCwgNzYyMSwgNzYyNywgNzYzMiwgOTg5NywgOTkwMywgNzYzNiwgCi0gICAgOTkwOSwgOTkxMiwgOTkxOSwgOTkyNCwgOTkzOSwgOTk1NSwgOTk3MCwgOTk3OCwgOTk4NCwgMTA0MywgNDAwLCA5OTg5LCAKLSAgICA5OTk3LCAxMDAwNCwgMTAwMTAsIDEwMDE1LCAxMDAyMCwgNzY0MSwgMTAwMjIsIDEwMDI2LCAxMDAzMSwgMTAwMzUsIAotICAgIDEwMDQ1LCAxMDA1MCwgMTAwNTQsIDEwMDYzLCAxMDA2NywgMTAwNzAsIDEwMDc3LCAxMDA4MSwgMTAwODQsIDEwMDkyLCAKLSAgICAxMDA5OSwgMTAxMDcsIDEwMTExLCAxMDExOCwgMTAxMjcsIDEwMTMwLCAxMDEzNCwgMTAxMzgsIDEwMTQ0LCAxMDE0OCwgCi0gICAgMTAxNTIsIDEwMTU2LCAxMDE2MiwgMTAxNzIsIDEwMTc2LCAxMDE4NCwgMTAxODgsIDEwMTk1LCAxMDE5OSwgMTAyMDQsIAotICAgIDEwMjA4LCAxMDIxNSwgMTAyMjEsIDEwMjI5LCAxMDIzNSwgMTAyNDUsIDEwMjUwLCAxMDI1NSwgMTAyNTksIDEwMjY3LCAKLSAgICAzODIyLCAxMDI3NSwgMTAyODAsIDEwMjg0LCAxMDI4OCwgMTAyOTEsIDEwMjk5LCAxMDMwNiwgMTAzMTAsIDQ0NjksIAotICAgIDEwMzE0LCAxMDMxOSwgMTAzMjMsIDEwMzM0LCAxMDMzOSwgMTAzNDUsIDEwMzQ5LCAxMDM1MiwgMTAzNjAsIDEwMzY1LCAKLSAgICAxMDM3MCwgMTAzNzcsIDEwMzgyLCA3NjUwLCAxMDM4NywgMTAzOTEsIDE2ODUsIDQ2MTksIDEwMzk4LCAxMDQwMywgMTA0MDgsIAotICAgIDEwNDEzLCAxMDQxOSwgMTA0MjQsIDEwNDMwLCAxMDQzNSwgMTA0NDAsIDEwNDQ1LCAxMDQ1MCwgMTA0NTUsIDEwNDYwLCAKLSAgICAxMDQ2NSwgMTA0NzAsIDEwNDc1LCAxMDQ4MCwgMTA0ODUsIDEwNDkwLCAxMDQ5NSwgMTA1MDAsIDEwNTA1LCAxMDUxMCwgCi0gICAgMTA1MTYsIDEwNTIxLCAxMDUyNiwgMTA1MzEsIDEwNTM2LCAxMDU0MSwgMTA1NDcsIDEwNTUyLCAxMDU1NywgMTA1NjMsIAotICAgIDEwNTY4LCAxMDU3NCwgMTA1NzksIDEwNTg1LCAxMDU5MCwgMTA1OTUsIDEwNjAwLCAxMDYwNSwgMTA2MTEsIDEwNjE2LCAKLSAgICAxMDYyMSwgMTA2MjYsIDcyNCwgMTM5LCAxMDYzNCwgMTA2MzgsIDEwNjQzLCAxMDY0OCwgMTA2NTIsIDEwNjU2LCAxMDY2MCwgCi0gICAgMTA2NjUsIDEwNjY5LCAxMDY3NCwgMTA2NzgsIDEwNjgxLCAxMDY4NSwgMTA2ODksIDEwNjk0LCAxMDcwNCwgMTA3MTAsIAotICAgIDEwNzE4LCAxMDcyMiwgMTA3MjYsIDEwNzMzLCAxMDc0MSwgMTA3NTAsIDEwNzYxLCAxMDc2OCwgMTA3NzUsIDEwNzg0LCAKLSAgICAxMDc5MywgMTA4MDEsIDEwODEwLCAxMDgxOSwgMTA4MjgsIDEwODM3LCAxMDg0NywgMTA4NTcsIDEwODY3LCAxMDg3NywgCi0gICAgMTA4ODcsIDEwODk2LCAxMDkwNiwgMTA5MTYsIDEwOTI2LCAxMDkzNiwgMTA5NDYsIDEwOTU2LCAxMDk2NiwgMTA5NzUsIAotICAgIDEwOTg1LCAxMDk5NSwgMTEwMDUsIDExMDE1LCAxMTAyNSwgMTEwMzUsIDExMDQ0LCAxMTA1NCwgMTEwNjQsIDExMDc0LCAKLSAgICAxMTA4NCwgMTEwOTQsIDExMTA0LCAxMTExNCwgMTExMjQsIDExMTM0LCAxMTE0MywgMTExNTMsIDExMTYzLCAxMTE3MywgCi0gICAgMTExODMsIDExMTkzLCAxMTIwMywgMTEyMTMsIDExMjIzLCAxMTIzMywgMTEyNDMsIDExMjUyLCAxMTI1OCwgMTEyNjIsIAotICAgIDExMjY1LCAxMTI2OSwgMTEyNzQsIDExMjgxLCAxMTI4NywgMTEyOTIsIDExMjk2LCAxMTMwMSwgMTEzMTAsIDExMzE4LCAKLSAgICAxMTMyMywgMTEzMjcsIDExMzMxLCAxMTMzNywgMTEzNDIsIDExMzQ4LCA3NjU5LCAxMTM1MywgMTEzNTgsIDExMzY3LCAKLSAgICA3NjY0LCAxMTM3MiwgMTEzNzUsIDExMzgxLCAxMTM4OSwgNzY2OSwgMTEzOTYsIDExNDAwLCAxMTQwNCwgMTE0MDgsIAotICAgIDExNDE4LCAxMTQyNCwgMTE0MjksIDExNDM4LCAxMTQ0NiwgMTE0NTMsIDExNDYwLCAxMTQ2NSwgMTE0NzIsIDExNDc3LCAKLSAgICAxMTQ4MSwgMTE0ODQsIDExNDk1LCAxMTUwNSwgMTE1MTQsIDExNTIyLCAxMTUzMywgMTE1NDUsIDExNTU1LCAxMTU2MCwgCi0gICAgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzgsIDExNTg0LCAxMTU5MiwgMTE1OTksIDExNjEwLCAxMTYxNSwgMTE2MjUsIAotICAgIDExNjM0LCAxMTYzOCwgMTE2NDEsIDExNjQ4LCAxMTY1OCwgMTE2NjcsIDExNjc0LCAxMTY3OCwgMTE2ODUsIDExNjkxLCAKLSAgICAxMTY5NiwgMTE3MDEsIDExNzA1LCAxMTcxNCwgMTE3MTksIDExNzI1LCAxMTcyOSwgMTE3MzQsIDExNzM4LCAxMTc0NywgCi0gICAgMTE3NTUsIDExNzYzLCAxMTc3MCwgMTE3NzgsIDExNzkwLCAxMTgwMSwgMTE4MTEsIDExODE4LCAxMTgyNCwgMTE4MzMsIAotICAgIDExODQ0LCAxMTg1MywgMTE4NjUsIDExODc3LCAxMTg4OSwgMTE4OTksIDExOTA4LCAxMTkxNywgMTE5MjUsIDExOTMyLCAKLSAgICAxMTk0MSwgMTE5NDksIDExOTU1LCAxMTk2MSwgMTE5NjYsIDYxOTksIDExOTcwLCAxMTk3MiwgMTE5NzcsIDExOTgzLCAKLSAgICAxMTk5MiwgMTIwMDAsIDEyMDA3LCAxMjAxNiwgMTIwMjUsIDEyMDM0LCAxMjA0MywgMTIwNTIsIDEyMDYxLCAxMjA3MCwgCi0gICAgMTIwNzksIDEyMDg5LCAxMjA5OSwgMTIxMDgsIDEyMTE0LCAxMjEyMSwgMTIxMzUsIDEyMTQyLCAxMjE1MCwgMTIxNTksIAotICAgIDEyMTY1LCAxMjE3NCwgMTIxODMsIDEyMTk0LCAxMjIwNCwgMTIyMTIsIDEyMjE5LCAxMjIyNywgMTIyMzYsIDEyMjQ5LCAKLSAgICAxMjI1NywgMTIyNjQsIDEyMjc3LCAxMjI4MywgMTIyODksIDEyMjk5LCAxMjMwOCwgMTIzMTcsIDEyMzIyLCAxMjMyNiwgCi0gICAgMTIzMzIsIDEyMzM4LCAxMjM0NSwgNzM3MCwgMTIzNTAsIDEyMzU1LCAxMjM2MiwgMTIzNjcsIDEyMzcyLCAxMjM3NiwgCi0gICAgMTIzODQsIDEyMzkwLCAxMjM5NSwgMTI0MDMsIDEyNDExLCAxMjQxOCwgMTI0MjYsIDEyNDMyLCAxMjQ0MCwgMTI0NDgsIAotICAgIDEyNDUzLCAxMjQ1OSwgMTI0NjYsIDEyNDcyLCAxMjQ3NywgMTI0ODEsIDEyNDkyLCAxMjUwMCwgMTI1MDYsIDEyNTExLCAKLSAgICAxMjUyMCwgMTI1MjYsIDEyNTMxLCAxMjU0MCwgMTI1NTQsIDM3ODEsIDEyNTU4LCAxMjU2MywgMTI1NjgsIDEyNTc0LCAKLSAgICAxMjU3OSwgMTI1ODQsIDEyNTg4LCAxMjU5MywgMTI1OTgsIDYxOTgsIDEyNjAzLCAxMjYwOCwgMTI2MTMsIDEyNjE4LCAKLSAgICAxMjYyMiwgMTI2MjcsIDEyNjMyLCAxMjYzNywgMTI2NDMsIDEyNjQ5LCAxMjY1NCwgMTI2NTgsIDEyNjYzLCAxMjY2OCwgCi0gICAgMTI2NzMsIDc2NzMsIDEyNjc4LCAxMjY4MywgMTI2ODgsIDEyNjkzLCAxMjcxMCwgMTI3MjgsIDEyNzQwLCAxMjc1MywgCi0gICAgMTI3NzAsIDEyNzg2LCAxMjgwMywgMTI4MTMsIDEyODMyLCAxMjg0MywgMTI4NTQsIDEyODY1LCAxMjg3NiwgMTI4ODgsIAotICAgIDEyODk5LCAxMjkxMCwgMTI5MjcsIDEyOTM4LCAxMjk0OSwgMTI5NTQsIDIzMzUsIDEyOTU4LCAxMjk2MSwgMTI5NjcsIAotICAgIDEyOTc1LCAxMjk4MywgMTI5ODgsIDEyOTk2LCAxMzAwNCwgMTMwMTEsIDEzMDE2LCAxMzAyMiwgMTMwMjksIDEzMDM3LCAKLSAgICAxMzA0NCwgMTMwNTYsIDEzMDY0LCAxMzA2OSwgOTkzMywgMTMwNzUsIDEzMDg0LCAxMzA5MywgMTMxMDEsIDEzMTA4LCAKLSAgICAxMzExNCwgMTMxMjIsIDEzMTI5LCAxMzEzNSwgMTMxNDIsIDEzMTQ4LCAxMzE1NywgMTMxNjUsIDEzMTc1LCAxMzE4MiwgCi0gICAgMTMxODgsIDEzMTk2LCAxMzIwMiwgMTMyMTAsIDEzMjE3LCAxMzIzMCwgMTMyMzcsIDEzMjQ2LCAxMzI1NSwgMTMyNjQsIAotICAgIDEzMjcyLCAxMzI4MiwgMTMyODksIDEzMjk0LCAzNDk1LCAxMzMwMSwgMTMzMDYsIDEzMzA5LCAxMjYwNCwgMTMzMTMsIAotICAgIDEzMzE5LCAxMzMyMywgMTMzMzEsIDEzMzQzLCAxMzM0OCwgMTMzNTUsIDEzMzYxLCAxMzM2NiwgMTMzNzMsIDEyNjA5LCAKLSAgICAxMzM3NywgMTMzODEsIDEyNjE0LCAxMzM4NSwgMTMzODksIDEzMzkzLCAxMzQwMCwgMTM0MDUsIDEzNDA5LCAxMzQxMywgCi0gICAgMTM0MjEsIDEzNDI4LCAxMzQzNSwgMTM0NTIsIDEzNDYxLCAxMzQ2NSwgMTM0NjgsIDEzNDc2LCAxMzQ4MiwgMTM0ODcsIAotICAgIDM1NzMsIDEzNDkxLCAxMzQ5MywgMTM1MDEsIDEzNTA4LCAxMzUxOCwgMTM1MzAsIDEzNTM1LCAxMzU0MSwgMTM1NDYsIAotICAgIDEzNTUwLCAxMzU1NiwgMTM1NjEsIDEzNTY3LCAxMzU3MCwgMTM1NzcsIDEzNTg1LCAxMzU5MiwgMTM1OTgsIDEzNjA0LCAKLSAgICAxMzYwOSwgMTM2MTYsIDEzNjIyLCAxMzYyNywgMTM2MzQsIDEzNjM4LCAxMzY0NCwgMTM2NDgsIDEzNjU1LCAxMzY2MSwgCi0gICAgMTM2NjcsIDEzNjc1LCAxMzY4MSwgMTM2ODYsIDEzNjkyLCAxMzcwMCwgMTM3MDgsIDEzNzE0LCAxMzcyMCwgMTM3MjUsIAotICAgIDEzNzMyLCAxMzczNywgMTM3NDEsIDEzNzQ3LCAxMzc1MiwgMTM3NTksIDEzNzY0LCAxMzc3MCwgMTM3NzMsIDEzNzc5LCAKLSAgICAxMzc4NSwgMTM3ODgsIDEzNzkyLCAxMzgwNCwgMTM4MTAsIDEzODE1LCAxMzgyMiwgMTM4MjgsIDEzODM0LCAxMzg0NSwgCi0gICAgMTM4NTUsIDEzODY0LCAxMzg3MiwgMTM4NzksIDEzODkwLCAxMzkwMCwgMTM5MTAsIDEzOTE4LCAxMzkyMSwgMTI2MjgsIAotICAgIDEzOTI2LCAxMzkzMSwgMTI2MzMsIDEyNzU4LCAxMzkzOSwgMTM5NTIsIDEzOTY3LCAxMzk3OCwgMTI3NzUsIDEzOTk2LCAKLSAgICAxNDAwOSwgMTQwMjIsIDE0MDMzLCA4ODQxLCAxNDA0NCwgMTQwNTcsIDE0MDc2LCAxNDA4NywgMTQwOTgsIDE0MTA5LCAKLSAgICAyNjAzLCAxNDEyMiwgMTQxMjYsIDE0MTM0LCAxNDE0NSwgMTQxNTIsIDE0MTU4LCAxNDE2NiwgMTQxNzAsIDE0MTc2LCAKLSAgICAxNDE3OSwgMTQxODksIDE0MTk3LCAxNDIwNCwgMTQyMTIsIDE0MjIyLCAxNDIyNywgMTQyMzQsIDE0MjM5LCAxNDI0NiwgCi0gICAgMTQyNTcsIDE0MjY3LCAxNDI3MywgMTQyNzgsIDE0MjgzLCAxNDI4NywgMTQyOTEsIDE0Mjk3LCAxNDMwMywgMTQzMDgsIAotICAgIDE0MzEzLCAxNDMxOCwgMTQzMjIsIDEyNjM4LCAxMjY0NCwgMTQzMjYsIDEyNjUwLCAxNDMzMSwgMTQzMzksIDE0MzQ4LCAKLSAgICAxNDM1NSwgNzU0MiwgMTQzNTksIDE0MzYxLCAxNDM2NiwgMTQzNzEsIDE0Mzc3LCAxNDM4MiwgMTQzODcsIDE0MzkyLCAKLSAgICAxNDM5NywgMTQ0MDEsIDE0NDA3LCAxNDQxMywgMTQ0MTgsIDE0NDI0LCAxNDQyOSwgMTQ0MzQsIDE0NDQwLCAxNDQ0NSwgCi0gICAgMTQ0NTAsIDE0NDU1LCAxNDQ2MSwgMTQ0NjYsIDE0NDcxLCAxNDQ3NywgMTQ0ODMsIDE0NDg4LCAxNDQ5MywgMTQ1MDAsIAotICAgIDE0NTA2LCAxNDUxNywgMTQ1MjQsIDE0NTI5LCAxNDUzMywgMTQ1MzcsIDE0NTQwLCAxNDU0OCwgMTQ1NTMsIDE0NTYwLCAKLSAgICAxNDU2NywgMTQ1NzIsIDE0NTc3LCAxNDU4NCwgMTQ1OTQsIDE0NTk5LCAxNDYwNiwgMTQ2MTIsIDE0NjIyLCAxNDYzMiwgCi0gICAgMTQ2NDYsIDE0NjYwLCAxNDY3NCwgMTQ2ODgsIDE0NzAzLCAxNDcxOCwgMTQ3MzUsIDE0NzUzLCAxNDc2NiwgMTQ3NzIsIAotICAgIDE0Nzc3LCAxNDc4MiwgMTQ3ODYsIDE0NzkxLCAxNDc5OSwgMTQ4MDUsIDE0ODEwLCAxNDgxNSwgMTQ4MTksIDE0ODI0LCAKLSAgICAxNDgyOCwgMTQ4MzMsIDE0ODM3LCAxNDg0OCwgMTQ4NTQsIDE0ODU5LCAxNDg2NCwgMTQ4NzEsIDE0ODc2LCAxNDg4MCwgCi0gICAgMTQ4ODUsIDE0ODkwLCAxNDg5NiwgMTQ5MDMsIDE0OTA5LCAxNDkxNCwgMTQ5MTgsIDE0OTI0LCAxNDkyOSwgMTQ5MzQsIAotICAgIDE0OTM4LCAxNDk0NCwgMTQ5NDksIDE0OTU0LCAxNDk2MSwgMTQ5NjYsIDExNDIwLCAxNDk3MCwgMTQ5NzUsIDE0OTc5LCAKLSAgICAxNDk4NCwgMTQ5OTAsIDE0OTk2LCAxNTAwMywgMTUwMTMsIDE1MDIxLCAxNTAyOCwgMTUwMzMsIDE1MDM3LCAxNTA0NiwgCi0gICAgMTUwNTQsIDE1MDYxLCAxNTA2OCwgMTUwNzQsIDE1MDgwLCAxNTA4NSwgMTUwOTAsIDE1MDk2LCAxNTEwMSwgMTUxMDcsIAotICAgIDE1MTEyLCAxNTExOCwgMTUxMjQsIDE1MTMxLCAxNTEzNywgMTUxNDIsIDE1MTQ3LCA3NzE1LCAxNTE1NiwgMTUxNTksIAotICAgIDE1MTY1LCAxNTE3MCwgMTUxNzUsIDE1MTg1LCAxNTE5MiwgMTUxOTgsIDE1MjAzLCAxNTIwOSwgMTUyMTQsIDE1MjIwLCAKLSAgICAxNTIyNSwgMTUyMzEsIDE1MjM3LCAxNTI0MiwgMTUyNTAsIDE1MjU3LCAxNTI2MiwgMTUyNjcsIDE1MjczLCAxNTI3OCwgCi0gICAgMTUyODIsIDE1MjkxLCAxNTMwMiwgMTUzMDksIDE1MzE3LCAxNTMyMywgMTUzMzAsIDE1MzM2LCAxNTM0MSwgMTUzNDUsIAotICAgIDE1MzUxLCAxNTM1NiwgMTUzNjEsIDE1MzY2LCA3NzIwLCA2MjIzLCAyODI3LCAxNTM3MCwgMTUzNzQsIDE1Mzc4LCAxNTM4MiwgCi0gICAgMTUzODYsIDE1Mzg5LCAxNTM5NiwgMTU0MDQsIDEyNjY0LCAxNTQxMSwgMTU0MjEsIDE1NDI5LCAxNTQzNiwgMTU0NDQsIAotICAgIDE1NDU0LCAxNTQ2MywgMTU0NzYsIDE1NDgxLCAxNTQ4NiwgMTU0OTQsIDE1NTAxLCAxMTUxMCwgMTE1MTksIDE1NTA4LCAKLSAgICAxNTUxOCwgMTU1MzMsIDE1NTM5LCAxNTU0NiwgMTU1NTMsIDE1NTU5LCAxNTU2OSwgMTU1NzksIDEyNjY5LCAxNTU4OCwgCi0gICAgMTU1OTQsIDE1NjAwLCAxNTYwOCwgMTU2MTYsIDE1NjIxLCAxNTYzMCwgMTU2MzgsIDE1NjUwLCAxNTY2MCwgMTU2NzAsIAotICAgIDE1NjgwLCAxNTY4OSwgMTU3MDEsIDE1NzExLCAxNTcyMSwgMTU3MzIsIDE1NzM3LCAxNTc0OSwgMTU3NjEsIDE1NzczLCAKLSAgICAxNTc4NSwgMTU3OTcsIDE1ODA5LCAxNTgyMSwgMTU4MzMsIDE1ODQ1LCAxNTg1NywgMTU4NjgsIDE1ODgwLCAxNTg5MiwgCi0gICAgMTU5MDQsIDE1OTE2LCAxNTkyOCwgMTU5NDAsIDE1OTUyLCAxNTk2NCwgMTU5NzYsIDE1OTg4LCAxNTk5OSwgMTYwMTEsIAotICAgIDE2MDIzLCAxNjAzNSwgMTYwNDcsIDE2MDU5LCAxNjA3MSwgMTYwODMsIDE2MDk1LCAxNjEwNywgMTYxMTksIDE2MTMwLCAKLSAgICAxNjE0MiwgMTYxNTQsIDE2MTY2LCAxNjE3OCwgMTYxOTAsIDE2MjAyLCAxNjIxNCwgMTYyMjYsIDE2MjM4LCAxNjI1MCwgCi0gICAgMTYyNjEsIDE2MjczLCAxNjI4NSwgMTYyOTcsIDE2MzA5LCAxNjMyMSwgMTYzMzMsIDE2MzQ1LCAxNjM1NywgMTYzNjksIAotICAgIDE2MzgxLCAxNjM5MiwgMTY0MDQsIDE2NDE2LCAxNjQyOCwgMTY0NDAsIDE2NDUyLCAxNjQ2NCwgMTY0NzYsIDE2NDg4LCAKLSAgICAxNjUwMCwgMTY1MTIsIDE2NTIzLCAxNjUzNSwgMTY1NDcsIDE2NTU5LCAxNjU3MSwgMTY1ODMsIDE2NTk1LCAxNjYwNywgCi0gICAgMTY2MTksIDE2NjMxLCAxNjY0MywgMTY2NTQsIDE2NjY2LCAxNjY3OCwgMTY2OTAsIDE2NzAyLCAxNjcxNSwgMTY3MjgsIAotICAgIDE2NzQxLCAxNjc1NCwgMTY3NjcsIDE2NzgwLCAxNjc5MywgMTY4MDUsIDE2ODE4LCAxNjgzMSwgMTY4NDQsIDE2ODU3LCAKLSAgICAxNjg3MCwgMTY4ODMsIDE2ODk2LCAxNjkwOSwgMTY5MjIsIDE2OTM1LCAxNjk0NywgMTY5NjAsIDE2OTczLCAxNjk4NiwgCi0gICAgMTY5OTksIDE3MDEyLCAxNzAyNSwgMTcwMzgsIDE3MDUxLCAxNzA2NCwgMTcwNzcsIDE3MDg5LCAxNzEwMiwgMTcxMTUsIAotICAgIDE3MTI4LCAxNzE0MSwgMTcxNTQsIDE3MTY3LCAxNzE4MCwgMTcxOTMsIDE3MjA2LCAxNzIxOSwgMTcyMzEsIDE3MjQ0LCAKLSAgICAxNzI1NywgMTcyNzAsIDE3MjgzLCAxNzI5NiwgMTczMDksIDE3MzIyLCAxNzMzNSwgMTczNDgsIDE3MzYxLCAxNzM3MywgCi0gICAgMTczODYsIDE3Mzk5LCAxNzQxMiwgMTc0MjUsIDE3NDM4LCAxNzQ1MSwgMTc0NjQsIDE3NDc3LCAxNzQ5MCwgMTc1MDMsIAotICAgIDE3NTE1LCAxNzUyNiwgMTc1MzksIDE3NTUyLCAxNzU2NSwgMTc1NzgsIDE3NTkxLCAxNzYwNCwgMTc2MTcsIDE3NjMwLCAKLSAgICAxNzY0MywgMTc2NTYsIDE3NjY4LCAxNzY4MSwgMTc2OTQsIDE3NzA3LCAxNzcyMCwgMTc3MzMsIDE3NzQ2LCAxNzc1OSwgCi0gICAgMTc3NzIsIDE3Nzg1LCAxNzc5OCwgMTc4MTAsIDE3ODIzLCAxNzgzNiwgMTc4NDksIDE3ODYyLCAxNzg3NSwgMTc4ODgsIAotICAgIDE3OTAxLCAxNzkxNCwgMTc5MjcsIDE3OTQwLCAxNzk1MiwgMTc5NjUsIDE3OTc4LCAxNzk5MSwgMTgwMDQsIDE4MDE3LCAKLSAgICAxODAzMCwgMTgwNDMsIDE4MDU2LCAxODA2OSwgMTgwODIsIDE4MDk0LCAxODEwNywgMTgxMjAsIDE4MTMzLCAxODE0NiwgCi0gICAgMTgxNTksIDE4MTcyLCAxODE4NSwgMTgxOTgsIDE4MjExLCAxODIyNCwgMTgyMzYsIDE4MjQ5LCAxODI2MiwgMTgyNzUsIAotICAgIDE4Mjg4LCAxODMwMSwgMTgzMTQsIDE4MzI3LCAxODM0MCwgMTgzNTMsIDE4MzY2LCAxODM3OCwgMTgzOTEsIDE4NDA0LCAKLSAgICAxODQxNywgMTg0MzAsIDE4NDQzLCAxODQ1NiwgMTg0NjksIDE4NDgyLCAxODQ5NSwgMTg1MDgsIDE4NTIwLCAxODUzMywgCi0gICAgMTg1NDYsIDE4NTU5LCAxODU3MiwgMTg1ODUsIDE4NTk4LCAxODYxMSwgMTg2MjQsIDE4NjM3LCAxODY1MCwgMTg2NjIsIAotICAgIDE4Njc1LCAxODY4OCwgMTg3MDEsIDE4NzE0LCAxODcyNywgMTg3NDAsIDE4NzUzLCAxODc2NiwgMTg3NzksIDE4NzkyLCAKLSAgICAxODgwNCwgMTg4MTcsIDE4ODMwLCAxODg0MywgMTg4NTYsIDE4ODY5LCAxODg4MiwgMTg4OTUsIDE4OTA4LCAxODkyMSwgCi0gICAgMTg5MzQsIDE4OTQ2LCAxODk1NywgMTg5NjUsIDE4OTcyLCAxODk3OCwgMTg5ODIsIDE4OTg4LCAxODk5NCwgMTkwMDIsIAotICAgIDE5MDA4LCAxOTAxMywgMTkwMTcsIDE5MDI2LCA3NTQ3LCAxOTAzNywgMTkwNDQsIDE5MDUyLCAxOTA1OSwgMTkwNjYsIAotICAgIDkyOTMsIDE5MDczLCAxOTA4MiwgMTkwODcsIDE5MDkyLCA2MjM5LCAxOTA5OSwgMTkxMDQsIDE5MTA3LCAxOTExMiwgCi0gICAgMTkxMjAsIDE5MTI3LCAxOTEzNCwgMTkxNDEsIDE5MTQ3LCAxOTE1NiwgMTkxNjUsIDE5MTcxLCAxOTE4MCwgMTkxODYsIAotICAgIDE5MTkxLCAxOTIwMSwgMTkyMDgsIDE5MjE0LCAxOTIyMiwgMTkyMjgsIDE5MjM1LCAxOTI0NSwgMTkyNTQsIDE5MjU4LCAKLSAgICAxOTI2NSwgMTkyNjksIDE5Mjc0LCAxOTI4MCwgMTkyODgsIDE5MjkyLCAxOTMwMiwgMTI2NzksIDE5MzExLCAxOTMxNywgCi0gICAgMTkzMjEsIDE5MzMwLCAxOTMzNiwgMTkzNDMsIDE5MzU0LCAxOTM2MiwgMTkzNzEsIDczMzUsIDE5Mzc5LCAxOTM4NCwgCi0gICAgMTkzOTAsIDE5Mzk1LCAxOTM5OSwgMTk0MDMsIDE5NDA3LCA4MDA2LCAxOTQxMiwgMTk0MjAsIDE5NDI3LCAxOTQzNiwgCi0gICAgMTk0NDMsIDE5NDUwLCA5MjIzLCAxOTQ1NywgMTk0NjMsIDE5NDY3LCAxOTQ3MywgMTk0NzksIDE5NDg3LCAxOTQ5MywgCi0gICAgMTk1MDAsIDE5NTA2LCAxOTUxMiwgMTk1MjEsIDE5NTI1LCAxOTUzMywgMTk1NDIsIDE5NTQ5LCAxOTU1NCwgMTk1NTgsIAotICAgIDE5NTY5LCAxOTU3NCwgMTk1NzksIDE5NTg0LCAxOTU5NywgNjQyNiwgMTk2MDEsIDE5NjA3LCAxOTYxNSwgMTk2MTksIAotICAgIDE5NjI2LCAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY2MCwgMTk2NjUsIDE5NjY5LCAxOTY3MiwgMTk2NzgsIDE5Njg0LCAKLSAgICAxOTY4OSwgMTk2OTMsIDE5Njk2LCAxOTcwNywgMTk3MTIsIDc3NTAsIDE5NzE5LCA3NTU4LCA3NzU1LCAxOTcyNCwgMTk3MjksIAotICAgIDE5NzM0LCAxOTczOSwgMTk3NDQsIDE5NzQ5LCAxOTc1NCwgMTk3NTksIDE5NzY0LCAxOTc2OSwgMTk3NzQsIDE5Nzc5LCAKLSAgICAxOTc4NSwgMTk3OTAsIDE5Nzk1LCAxOTgwMCwgMTk4MDUsIDE5ODEwLCAxOTgxNSwgMTk4MjAsIDE5ODI1LCAxOTgzMCwgCi0gICAgMTk4MzYsIDE5ODQyLCAxOTg0NywgMTk4NTIsIDE5ODU3LCAxOTg2MiwgMTk4NjcsIDE5ODcyLCAxOTg3NywgMTk4ODIsIAotICAgIDE5ODg3LCAxOTg5MywgMTk4OTgsIDE5OTAzLCAxOTkwOCwgMTk5MTQsIDE5OTIwLCAxOTkyNSwgMTk5MzAsIDE5OTM1LCAKLSAgICAxOTk0MCwgMTk5NDUsIDE5OTUwLCAxOTk1NSwgMTk5NjAsIDE5OTY2LCAxOTk3MSwgMTk5NzYsIDE5OTgxLCAxOTk4NiwgCi0gICAgMTk5OTIsIDE5OTk3LCAyMDAwMiwgMjAwMDYsIDEyOSwgMjAwMTQsIDIwMDE4LCAyMDAyMiwgMjAwMjYsIDIwMDMxLCAKLSAgICAyMDAzNSwgMjAwMzksIDEwNzgxLCAyMDA0MywgMjAwNDgsIDIwMDUyLCAyMDA1NywgMjAwNjEsIDIwMDY2LCAyMDA3MCwgCi0gICAgMjAwNzYsIDIwMDgxLCAyMDA4NSwgMjAwODksIDIwMDk3LCAyMDEwMSwgMjAxMDYsIDIwMTExLCAyMDExNSwgMjAxMjEsIAotICAgIDIwMTI2LCAyMDEzMCwgMjAxMzUsIDIwMTQwLCAyMDE0NCwgMjAxNTEsIDIwMTU4LCAyMDE2NSwgMjAxNjksIDIwMTczLCAKLSAgICAyMDE3OCwgMjAxODIsIDIwMTg1LCAyMDE5MSwgMjAyMDQsIDIwMjA5LCAyMDIxOCwgMjAyMjMsIDc3OTUsIDIwMjI4LCAKLSAgICAyMDIzMSwgMjY2NiwgMjY3MSwgMjAyMzUsIDIwMjQxLCAyMDI0NywgMjAyNTIsIDIwMjU3LCAyMDI2MiwgMjAyNjgsIAotICAgIDIwMjczLCAxMjE5MCwgMjAyNzgsIDIwMjgzLCAyMDI4OCwgMjAyOTQsIDIwMjk5LCAyMDMwNCwgMjAzMTAsIDIwMzE1LCAKLSAgICAyMDMxOSwgMjAzMjQsIDIwMzI5LCAyMDMzNCwgMjAzMzgsIDIwMzQzLCAyMDM0OCwgMjAzNTMsIDIwMzU4LCAyMDM2MiwgCi0gICAgMjAzNjYsIDIwMzcxLCAyODM2LCAyMDMyMCwgMjAzNzUsIDIwMzgzLCAyMDM5MCwgODEwMCwgMjA0MDIsIDIwNDEwLCAKLSAgICAyMDMyNSwgMjA0MTcsIDIwNDIyLCAyMDQzMCwgMjAzMzAsIDIwNDM1LCAyMDQ0MCwgMjA0NDgsIDIwNDUzLCAyMDQ1OCwgCi0gICAgMjA0NjIsIDIwNDY3LCAyMDQ3MSwgMjA0NzcsIDIwNDgwLCAyMDQ4NywgMjA0OTEsIDIwNDk1LCAyMDUwMSwgMjA1MDgsIAotICAgIDIwNTEzLCA3MzYyLCAxNjkwLCAxNjk1LCAyMDUxNywgMjA1MjMsIDIwNTI5LCAyMDUzNCwgMjA1MzgsIDIwNTQyLCAyMDU0NiwgCi0gICAgMjA1NDksIDIwNTU1LCAyMDU2MiwgMjA1NzAsIDIwNTc2LCAyMDU4MiwgMjA1ODcsIDIwNTkyLCAyMDU5NiwgMTMwMzksIAotICAgIDEzODk2LCAyMDYwMSwgMjA2MTMsIDIwNjE2LCAyMDYyMywgMjA2MzAsIDIwNjM0LCAyMDY0MiwgMjA2NTMsIDIwNjYyLCAKLSAgICAyMDY3NSwgMjA2ODUsIDIwNjk5LCAyMDcxMSwgMjA3MjUsIDIwNzM3LCAyMDc0NywgMjA3NTksIDIwNzY1LCAyMDc4MCwgCi0gICAgMjA4MDQsIDIwODIyLCAyMDg0MSwgMjA4NTQsIDIwODY4LCAyMDg4NiwgMjA5MDIsIDIwOTE5LCAyMDkzNywgMjA5NDgsIAotICAgIDIwOTY3LCAyMDk4NCwgMjEwMDQsIDIxMDIyLCAyMTAzNCwgMjEwNDgsIDIxMDYyLCAyMTA3NCwgMjEwOTEsIDIxMTEwLCAKLSAgICAyMTEyOCwgMjExNDAsIDIxMTU4LCAyMTE3NywgMTI4MTgsIDIxMTkwLCAyMTIxMCwgMjEyMjIsIDg4NzIsIDIxMjM0LCAKLSAgICAyMTIzOSwgMjEyNDQsIDIxMjQ5LCAyMTI1NSwgMjEyNjAsIDIxMjY0LCAyMTI3MSwgMjM1MiwgMjEyNzUsIDIxMjgxLCAKLSAgICAyMTI4NSwgMjEyODgsIDIxMjkyLCAyMTMwMCwgMjEzMDYsIDIwMzM5LCAyMTMxMCwgMjEzMTksIDIxMzMwLCAyMTMzNiwgCi0gICAgMjEzNDIsIDIxMzUxLCAyMTM1OSwgMjEzNjYsIDIxMzcxLCAyMTM3OCwgMjEzODQsIDIxMzkzLCAyMTQwMSwgMjE0MDgsIAotICAgIDIxNDE4LCAyMTQyNywgMjE0MzcsIDIxNDQyLCAyMTQ1MSwgMjE0NjAsIDIxNDcxLCAyMTQ4MiwgMzg4MCwgMjE0OTIsIAotICAgIDIxNDk2LCAyMTUwNiwgMjE1MTQsIDIxNTI0LCAyMTUzNSwgMjE1NDAsIDIxNTQ4LCAyMTU1NSwgMjE1NjEsIDIxNTY2LCAKLSAgICAyMDM0OSwgMjE1NzAsIDIxNTc5LCAyMTU4MywgMjE1ODYsIDIxNTkxLCAyMTU5OCwgMjE2MDcsIDIxNjE1LCAyMTYyMywgCi0gICAgMjE2MzMsIDIxNjQyLCAyMTY0OCwgMjE2NTQsIDIwMzU0LCAyMDM1OSwgMjE2NTgsIDIxNjY4LCAyMTY3OCwgMjE2ODgsIAotICAgIDIxNjk2LCAyMTcwMywgMjE3MTMsIDIxNzIxLCAyMTcyOSwgMjE3MzUsIDk2MiwgMjE3NDQsIDEzMDAwLCA1MzcsIDIxNzU4LCAKLSAgICAyMTc2NywgMjE3NzUsIDIxNzg2LCAyMTc5NywgMjE4MDcsIDIxODE2LCAyMTgyOCwgMjE4MzcsIDIxODQ2LCAyMTg1MiwgCi0gICAgMjE4NjEsIDIxODcwLCAyMTg4MCwgMjE4ODgsIDIxODk2LCA3NzI3LCAyMTkwMiwgMjE5MDUsIDIxOTA5LCAyMTkxNCwgCi0gICAgMjE5MTksIDgyMTUsIDIwMzY3LCAyMTkyNywgMjE5MzMsIDIxOTM5LCAyMTk0NCwgMjE5NDksIDIxOTUzLCAyMTk2MSwgCi0gICAgMjE5NjcsIDIxOTczLCAyMTk3NywgMzQ2NywgMjE5ODUsIDIxOTkwLCAyMTk5NSwgMjE5OTksIDIyMDAzLCA4Mjg3LCAKLSAgICAyMjAxMCwgMjIwMTgsIDIyMDI1LCAyMjAzMSwgODI5NiwgODMwMiwgMjIwMzksIDIyMDQ3LCAyMjA1NCwgMjIwNTksIAotICAgIDIyMDY0LCAyMjA3MCwgMjIwNzQsIDIyMDg1LCAyMjA5MCwgMjU1NSwgMjIwOTUsIDIyMTA2LCAyMjExMiwgMjIxMTcsIAotICAgIDIyMTIxLCAyMjEyNSwgMjIxMjgsIDIyMTM1LCAyMjE0MiwgMjIxNDksIDIyMTU1LCAyMjE1OSwgMjIxNjQsIDIyMTY4LCAKLSAgICAyMjE3MiwgOTc5LCAyMjE3NiwgMjIxODEsIDIyMTg2LCAyMjE5MSwgMjIxOTYsIDIyMjAxLCAyMjIwNiwgMjIyMTEsIAotICAgIDIyMjE2LCAyMjIyMSwgMjIyMjYsIDIyMjMxLCAyMjIzNiwgMjIyNDEsIDIyMjQ3LCAyMjI1MiwgMjIyNTcsIDIyMjYyLCAKLSAgICAyMjI2NywgMjIyNzIsIDIyMjc3LCAyMjI4MywgMjIyODgsIDIyMjkzLCAyMjI5OCwgMjIzMDMsIDIyMzA4LCAyMjMxMywgCi0gICAgMjIzMTgsIDIyMzI0LCAyMjMzMCwgMjIzMzUsIDIyMzQxLCAyMjM0NiwgMjIzNTEsIDUsIDIyMzU3LCAyMjM2MSwgMjIzNjUsIAotICAgIDIyMzY5LCAyMjM3NCwgMjIzNzgsIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk1LCAyMjM5OSwgMjI0MDQsIDIyNDA4LCAKLSAgICAyMjQxMSwgMjI0MTUsIDIyNDIwLCAyMjQyNCwgMjI0MjksIDIyNDMzLCAyMjQzNywgMjI0NDEsIDIyNDQ2LCAyMjQ1MCwgCi0gICAgMjI0NTQsIDIyNDY0LCAyMjQ2OSwgMjI0NzMsIDIyNDc3LCAyMjQ4MiwgMjI0ODcsIDIyNDk2LCAyMjUwMSwgMjI1MDYsIAotICAgIDIyNTEwLCAyMjUxNCwgMjI1MjcsIDIyNTM5LCAyMjU0OCwgMjI1NTcsIDIyNTYzLCAyMjU2OCwgMjI1NzIsIDIyNTc2LCAKLSAgICAyMjU4NiwgMjI1OTUsIDIyNjAzLCAyMjYwOSwgMjI2MTQsIDIyNjE4LCAyMjYyNSwgMjI2MzUsIDIyNjQ0LCAyMjY1MiwgCi0gICAgMjI2NjAsIDIyNjY3LCAyMjY3NSwgMjI2ODQsIDIyNjkzLCAyMjcwMSwgMjI3MDYsIDIyNzEwLCAyMjcxNCwgMjI3MTcsIAotICAgIDIyNzE5LCAyMjcyMywgMjI3MjcsIDIyNzMyLCAyMjczNywgMjI3NDEsIDIyNzQ1LCAyMjc0OCwgMjI3NTIsIDIyNzU1LCAKLSAgICAyMjc1OSwgMjI3NjIsIDIyNzY1LCAyMjc2OSwgMjI3NzUsIDIyNzc5LCAyMjc4MywgMjI3ODcsIDIyNzkyLCAyMjc5NywgCi0gICAgMjI4MDIsIDIyODA2LCAyMjgwOSwgMjI4MTQsIDIyODIwLCAyMjgyNSwgMjI4MzEsIDIyODM2LCAyMjg0MCwgMjI4NDQsIAotICAgIDIyODQ4LCAyMjg1MywgMjI4NTcsIDIyODYyLCAyMjg2NiwgMjI4NzMsIDIyODc3LCAyMjg4MCwgMjI4ODQsIDIyODkwLCAKLSAgICAyMjg5NiwgMjI5MDAsIDIyOTA0LCAyMjkwOSwgMjI5MTYsIDIyOTIyLCAyMjkyNiwgMjI5MzUsIDIyOTM5LCAyMjk0MywgCi0gICAgMjI5NDYsIDIyOTUyLCAyMjk1NywgMjI5NjMsIDE0NTIsIDE3NTQsIDIyOTY4LCAyMjk3MywgMjI5NzgsIDIyOTgzLCAKLSAgICAyMjk4OCwgMjI5OTMsIDIyOTk4LCAyMTA2LCAyMTQ4LCAyMzAwMywgMjMwMDYsIDIzMDEwLCAyMzAxNCwgMjMwMTksIAotICAgIDIzMDIzLCAyMzAyNywgMjMwMzAsIDIzMDM1LCAyMzA0MCwgMjMwNDQsIDIzMDQ3LCAyMzA1MiwgMjMwNTYsIDIzMDYxLCAKLSAgICAyMzA2NSwgMTMwMTIsIDIzMDcwLCAyMzA3MywgMjMwNzYsIDIzMDgwLCAyMzA4NSwgMjMwOTgsIDIzMTAyLCAyMzEwNSwgCi0gICAgMjMxMTMsIDIzMTIyLCAyMzEyOSwgMjMxMzQsIDIzMTQwLCAyMzE0NiwgMjMxNTMsIDIzMTYwLCAyMzE2NCwgMjMxNjgsIAotICAgIDIzMTcyLCAyMzE3NywgMjMxODIsIDIzMTg2LCAyMzE5NCwgMjMxOTksIDIzMjExLCAyMzIyMiwgMjMyMjcsIDIzMjMxLCAKLSAgICAyMzIzNSwgMjMyNDEsIDIzMjQ2LCAyMzI1MSwgMjMyNTUsIDIzMjU4LCAyMzI2NCwgNjM0NiwgMjI3MCwgMjMyNjgsIAotICAgIDIzMjczLCAyMzI4OSwgNzg0MiwgMjMzMDksIDIzMzE4LCAyMzMzNCwgMjMzMzgsIDIzMzQxLCAyMzM0NywgMjMzNTcsIAotICAgIDIzMzYzLCAyMzM3OCwgMjMzOTAsIDIzNDAxLCAyMzQwOSwgMjM0MTgsIDIzNDI0LCAyMzQzMywgMjM0NDMsIDIzNDU0LCAKLSAgICAyMzQ2NSwgMjM0NzQsIDIzNDgzLCAyMzQ5MSwgMjM0OTgsIDIzNTA2LCAyMzUxOSwgMjM1MjYsIDIzNTMyLCAyMzUzNywgCi0gICAgMjM1NDYsIDIzNTUyLCAyMzU1NywgMjM1NjUsIDIxNTE2LCAyMzU3NywgMjM1ODksIDIzNjAzLCAyMzYxMSwgMjM2MTgsIAotICAgIDIzNjMwLCAyMzYzOSwgMjM2NDgsIDIzNjU2LCAyMzY2NCwgMjM2NzIsIDIzNjc5LCAyMzY4OCwgMjM2OTYsIDIzNzA2LCAKLSAgICAyMzcxNSwgMjM3MjUsIDIzNzM0LCAyMzc0MywgMjM3NTEsIDIzNzU2LCAyMzc2MCwgMjM3NjMsIDIzNzY3LCAyMzc3MSwgCi0gICAgMjM3NzUsIDIzNzc5LCAyMzc4MywgMjM3ODksIDIzNzk1LCAyMzgwMywgMTMwNTcsIDIzODEwLCAyMzgxNSwgMjM4MjIsIAotICAgIDIzODI4LCAyMzgzNSwgMTMwNjUsIDIzODQyLCAyMzg0NSwgMjM4NTcsIDIzODY1LCAyMzg3MSwgMjM4NzYsIDIzODgwLCAKLSAgICA4MjQ1LCAyMzg5MSwgMjM5MDEsIDIzOTEwLCAyMzkxNywgMjM5MjEsIDEzMDcwLCAyMzkyNCwgMjM5MzEsIDIzOTM1LCAKLSAgICAyMzk0MSwgMjM5NDQsIDIzOTUxLCAyMzk1NywgMjM5NjEsIDIzOTY2LCAyMzk3MCwgMjM5NzksIDIzOTg2LCAyMzk5MiwgCi0gICAgNjM4NywgMjM5OTksIDI0MDA3LCAyNDAxNCwgMjQwMjAsIDI0MDI1LCAyNDAzMSwgMjQwMzcsIDI0MDQ1LCAyNDA0OSwgCi0gICAgMjQwNTIsIDI0MDU0LCAyMzc2OCwgMjQwNjMsIDI0MDY5LCAyNDA3OSwgMjQwODQsIDI0MDkxLCAyNDA5NywgMjQxMDIsIAotICAgIDI0MTA3LCAyNDExMiwgMjQxMTcsIDI0MTI0LCAyNDEzMywgMjQxNDAsIDI0MTQ5LCAyNDE1NSwgMjQxNjAsIDI0MTY2LCAKLSAgICAyNDE3MSwgMjQxNzgsIDI0MTg5LCAyNDE5NCwgMjQxOTgsIDI0MjA4LCAyNDIxNCwgMjQyMTgsIDI0MjIzLCAyNDIzMywgCi0gICAgMjQyNDIsIDI0MjQ2LCAyNDI1MywgMjQyNjEsIDI0MjY4LCAyNDI3NCwgMjQyNzksIDI0Mjg3LCAyNDI5NCwgMjQzMDYsIAotICAgIDI0MzE1LCAyNDMxOSwgMTEzNjIsIDI0MzI3LCAyNDMzNywgMjQzNDEsIDIzMTA5LCAyNDM1MiwgMjQzNTcsIDI0MzYxLCAKLSAgICAyNDM2OCwgMjQzNzUsIDIwMTE3LCAyMzY5MywgMjQzODAsIDI0Mzg0LCAyNDM4NywgMjA5NTQsIDI0MzkyLCAyNDQwNiwgCi0gICAgMjQ0MjIsIDI0NDQwLCAyNDQ1OSwgMjQ0NzYsIDI0NDk0LCAyMDk3MywgMjQ1MTEsIDI0NTMxLCAyMDk5MCwgMjQ1NDMsIAotICAgIDI0NTU1LCAxMzk4MywgMjQ1NjcsIDIxMDEwLCAyNDU4MSwgMjQ1OTMsIDg4ODUsIDI0NjA3LCAyNDYxMiwgMjQ2MTcsIAotICAgIDI0NjIyLCAyNDYyOCwgMjQ2MzQsIDI0NjQwLCAyNDY0NCwgMjQ2NTEsIDI0NjU2LCAyNDY2NiwgMjQ2NzIsIDg1MzIsIAotICAgIDI0Njc4LCAyNDY4MCwgMjQ2ODUsIDI0NjkzLCAyNDY5NywgMjQxMjAsIDI0NzAzLCAyNDcxMCwgOTg2OSwgOTg3OSwgCi0gICAgMjQ3MTcsIDI0NzI3LCAyNDczMiwgMjQ3MzYsIDI0NzM5LCAyNDc0NSwgMjQ3NTMsIDI0NzY1LCAyNDc3NSwgMjQ3OTEsIAotICAgIDI0ODA0LCAyNDgxOCwgMTQwMDEsIDI0ODMyLCAyNDgzOSwgMjQ4NDMsIDI0ODQ2LCAyNDg1MSwgMjQ4NTUsIDI0ODYyLCAKLSAgICAyNDg2OSwgMjQ4NzksIDI0ODg0LCAyNDg4OSwgMjQ4OTQsIDI0OTAyLCAyNDkxMCwgMjQ5MTksIDI0OTI0LCA3OTM5LCAKLSAgICAyNDkyOCwgMjQ5MzEsIDI0OTM0LCAyNDkzOSwgMjQ5NDYsIDI0OTUxLCAyNDk2NywgMjQ5NzUsIDI0OTgzLCA3NzkwLCAKLSAgICAyNDk5MSwgMjQ5OTYsIDI1MDAwLCAyNTAwNiwgMjUwMTIsIDI1MDE1LCAyNTAyMSwgMjUwMzMsIDI1MDQxLCAyNTA0OCwgCi0gICAgMjUwNTQsIDI1MDYxLCAyNTA3MiwgMjUwODYsIDI1MDk5LCAyNTEwOCwgMjUxMjAsIDI1MTMxLCAyNTE0MSwgMjUxNTAsIAotICAgIDI1MTU5LCAyNTE2NywgMjUxNzgsIDYzNjksIDI1MTg1LCAyNTE5MSwgMjUxOTYsIDI1MjAyLCAyNTIwOSwgMjUyMTksIAotICAgIDI1MjI5LCAyNTIzOCwgMjUyNDQsIDI1MjUxLCAyNTI1NiwgMjUyNjMsIDI1MjcxLCAyNTI3OSwgMjUyOTEsIDQ3MDQsIAotICAgIDI1Mjk4LCAyNTMwNywgMjUzMTUsIDI1MzIxLCAyNTMyNywgMjUzMzIsIDI1MzM2LCAyNTMzOSwgMjUzNDUsIDI1MzUyLCAKLSAgICAyNTM1NywgMjUzNjIsIDI1MzY2LCAyNTM3OCwgMjUzODksIDI1Mzk4LCAyNTQwNiwgMTMxOTcsIDI1NDExLCAyNTQxNywgCi0gICAgMjU0MjMsIDk4NjIsIDcwNDksIDI1NDI4LCAyNTQzMSwgMjU0MzQsIDI1NDQwLCAyNTQ0OCwgMjU0NTYsIDI1NDYwLCAKLSAgICAyNTQ2NCwgMjU0NjksIDI1NDcyLCAyNTQ4MSwgMjU0ODksIDI1NTAwLCAyNTUwNCwgMjU1MTAsIDI1NTE2LCAyNTUyMCwgCi0gICAgMjU1MjYsIDI1NTM0LCAyNTU1NiwgMjU1ODAsIDI1NTg3LCAyNTU5NCwgMjU2MDAsIDI1NjA2LCAyNTYxMSwgMjU2MjIsIAotICAgIDI1NjQwLCAyNTY0NywgMjU2NTUsIDI1NjU5LCAyNTY2OCwgMjU2ODEsIDI1Njg5LCAyNTcwMSwgMjU3MTIsIDI1NzIyLCAKLSAgICAyNTczNiwgMjU3NDUsIDI1NzUzLCAyNTc2NSwgNzg1OSwgMjU3NzYsIDI1Nzg3LCAyNTc5OSwgMjU4MDksIDI1ODE4LCAKLSAgICAyNTgyMywgMjU4MjcsIDI1ODM1LCAyNTg0NSwgMjU4NTAsIDI1ODU0LCAyNTg1NywgMjU4NjAsIDI1ODY4LCAyNTg3NiwgCi0gICAgMjU4ODUsIDI1ODk1LCAyNTkwNCwgMjU5MTAsIDI1OTI0LCAyNjE3LCAyNTk0NiwgMjU5NTcsIDI1OTY2LCAyNTk3NiwgCi0gICAgMjU5ODgsIDI1OTk3LCAyNjAwNywgMjYwMTUsIDI2MDIzLCAyNjAzMiwgMjYwMzcsIDI2MDQ4LCAyNjA1MywgMjYwNjQsIAotICAgIDI2MDY4LCAyNjA3OCwgMjYwODcsIDI2MDk1LCAyNjEwNSwgMjYxMTUsIDI2MTIzLCAyNjEzMiwgMjYxMzksIDI2MTQ3LCAKLSAgICAyNjE1NCwgMjYxNjMsIDI2MTY3LCAyNjE3NSwgMjYxODIsIDI2MTkwLCAyNjE5NywgMjYyMDgsIDI2MjIzLCAyNjIzMCwgCi0gICAgMjYyMzYsIDI2MjQ2LCAyNjI1NSwgMjYyNjEsIDI2MjY4LCAxMjMxMiwgMjYyNzQsIDI2Mjc4LCAyNjI4MywgMjYyODcsIAotICAgIDI2MjkxLCAyNjI5OSwgMjYzMDcsIDI2MzEzLCAyNjMyMiwgMjYzMjksIDI2MzM0LCAyNjMzOSwgMjYzNDksIDIxNTY4LCAKLSAgICAyNjM1MywgMjYzNTYsIDI2MzYxLCAyNjM2NiwgMjYzNzEsIDI2Mzc2LCAyNjM4MSwgMjYzODYsIDI2MzkxLCAyNjM5NiwgCi0gICAgMjY0MDIsIDI2NDA3LCAyNjQxMiwgMjY0MTgsIDEyMjMsIDY3OSwgMjY0MjMsIDI2NDMyLCAyMzE4LCAyNjQzOSwgMjY0NDQsIAotICAgIDI2NDQ4LCAyNjQ1NCwgMTI1NiwgNTQxLCAzMzQsIDI2NDU5LCAyNjQ2OCwgMjY0NzYsIDI2NDg1LCAyNjQ5MywgMjY1MDQsIAotICAgIDI2NTEzLCAyNjUyMSwgMjY1MjUsIDI2NTI4LCAyNjUzNiwgMjY1NDQsIDI2NTQ5LCAxMzAyNSwgMjY1NTUsIDI2NTYxLCAKLSAgICAyNjU2NywgNDM1MCwgMjY1NzIsIDI2NTc2LCAyNjU4MiwgMjY1ODYsIDI2NTkzLCAxNDE4LCAyNjU5OSwgNzk0NiwgMjY2MDYsIAotICAgIDI2NjE2LCAyNjYyNCwgMjY2MzAsIDI2NjM5LCAyNjY0NywgMjY2NTMsIDI2NjYxLCAyNjY2OCwgOTQ1NSwgMjY2NzQsIAotICAgIDI2NjgxLCAyNjY4OCwgMTQ1OSwgMjEwNSwgMjY2OTQsIDI2NzAwLCAyNjcwNywgMjY3MTgsIDI2NzI5LCAyNjczNywgCi0gICAgMjY3NDQsIDI2NzU0LCAyNjc2MywgMjY3NzEsIDI2Nzc4LCAyNjc4NSwgMjY3OTgsIDI2ODA5LCAyNjgyOCwgMTI2MSwgCi0gICAgMjY4MzIsIDI2ODM3LCAyNjg0NSwgMzUxMCwgMjY4NDksIDI2ODU0LCAyNjg1OCwgMTQyMiwgMjI3NDYsIDI2ODY4LCAKLSAgICAyNjg3MiwgMjY4NzcsIDI2ODgxLCAzNDM1LCAyNjg4NywgMjY4OTUsIDI2OTAyLCAyNjkxMywgMjY5MjEsIDI2OTI5LCAKLSAgICAzNTExLCAyNjksIDI2OTM0LCAyNjk0MiwgMjY5NTAsIDI2OTU3LCAyNjk2MywgMjY5NjgsIDIxNzAsIDI2OTc1LCAyNjk4MSwgCi0gICAgMjM5NjIsIDI0MTg0LCAyNjk4NywgMTA2LCAyNjk5MSwgMjY5OTUsIDI3MDAxLCA2MDYsIDc2OTUsIDI3MDA2LCAyNzAxMywgCi0gICAgMjcwMTksIDIyODEsIDI3MDIzLCAyNzAyNywgMjcwMzAsIDI3MDMzLCAyNzAzOCwgMjcwNDUsIDI3MDUxLCAyNzA1NiwgCi0gICAgMjcwNjQsIDI3MDcxLCAyNzA3NywgMjA0NTUsIDI3MDgxLCAzNTgxLCAxNDgyNiwgMjcwODUsIDI3MDkwLCAyNzA5MywgCi0gICAgMjcxMDEsIDI3MTA5LCAyNzExMiwgMjcxMTksIDI3MTI5LCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1OCwgMjcxNjUsIAotICAgIDI3MTcxLCAyNzE3OCwgMjcxODUsIDI3MTg4LCAyNzE5MiwgMjcxOTYsIDE0MjYsIDI3MjA2LCAyNzIwOCwgMjcyMTMsIAotICAgIDI3MjE5LCAyNzIyNSwgMjcyMzAsIDI3MjM1LCAyNzI0MCwgMjcyNDUsIDI3MjUwLCAyNzI1NSwgMjcyNjAsIDI3MjY1LCAKLSAgICAyNzI3MCwgMjcyNzUsIDI3MjgwLCAyNzI4NSwgMjcyOTAsIDI3Mjk1LCAyNzMwMSwgMjczMDcsIDI3MzEzLCAyNzMxOSwgCi0gICAgMjczMjQsIDI3MzI5LCAyNzMzNCwgMjczNDAsIDI3MzQ1LCAyNzM1MCwgMjczNTUsIDI3MzYxLCAyNzM2NiwgMjczNzIsIAotICAgIDI3Mzc3LCAyNzM4MiwgMjczODcsIDI3MzkyLCAyNzM5OCwgMjc0MDMsIDI3NDA5LCAyNzQxNCwgMjc0MTksIDI3NDI0LCAKLSAgICAyNzQyOSwgMjc0MzUsIDI3NDQwLCAyNzQ0NiwgMjc0NTEsIDI3NDU2LCAyNzQ2MSwgMjc0NjYsIDI3NDcxLCAyNzQ3NiwgCi0gICAgMjc0ODEsIDI3NDg2LCAyNzQ5MSwgMjc0OTcsIDI3NTAzLCAyNzUwOSwgMjc1MTQsIDI3NTE5LCAyNzUyNCwgMjc1MjksIAotICAgIDI3NTM1LCAyNzU0MSwgMjc1NDcsIDI3NTUzLCAyNzU1OSwgMjc1NjUsIDI3NTcwLCAyNzU3NiwgMjc1ODEsIDI3NTg2LCAKLSAgICAyNzU5MSwgMjc1OTYsIDI3NjAyLCAyMzk3LCAyNzYwNywgMjQwNCwgMjQxMSwgMjcwOCwgMjc2MTIsIDI0MTcsIDI0MjcsIAotICAgIDI3NjE4LCAyNzYyMiwgMjc2MjcsIDI3NjMyLCAyNzYzOCwgMjc2NDMsIDI3NjQ4LCAyNzY1MiwgMjc2NTcsIDI3NjYzLCAKLSAgICAyNzY2OCwgMjc2NzMsIDI3Njc4LCAyNzY4NCwgMjc2ODksIDI3NjkzLCAyNzY5NywgMjc3MDIsIDI3NzA3LCAyNzcxMiwgCi0gICAgMjc3MTcsIDI3NzIyLCAyNzcyOCwgMjc3MzQsIDI3NzM5LCAyNzc0MywgMjc3NDgsIDI3NzU0LCAyNzc1OCwgMjc3NjMsIAotICAgIDI3NzY4LCAyNzc3MywgMjc3NzgsIDI3NzgyLCAyNzc4NSwgMjc3OTAsIDI3Nzk1LCAyNzgwMCwgMjc4MDUsIDI3ODExLCAKLSAgICAyNzgxNywgMjc4MjIsIDI3ODI3LCAyNzgzMSwgMjc4MzYsIDI3ODQxLCAyNzg0NiwgMjc4NTEsIDI3ODU2LCAyNzg2MCwgCi0gICAgMjc4NjUsIDI3ODcwLCAyNzg3NSwgMjc4NzksIDI3ODgzLCAyNzg4NywgMjc4OTIsIDI3OTAwLCAyNzkwNiwgMjc5MTIsIAotICAgIDI3OTE4LCAyNzkyMywgMjc5MjcsIDI3OTMwLCAyNzkzNSwgMjc5MzksIDI3OTQ0LCAyNzk0OCwgMjc5NTMsIDI3OTU3LCAKLSAgICAyNzk2MCwgMTU0ODksIDI3OTY1LCAyNzk3MywgMTk0MzksIDI2NjAzLCAyNzk3OCwgMjc5ODMsIDI3OTg3LCAyNzk5MiwgCi0gICAgMjc5OTYsIDI4MDAwLCAyODAwNSwgMjgwMDksIDI4MDEyLCAyODAxNSwgMjgwMTksIDI4MDI0LCAyODAzMiwgMjgwMzYsIAotICAgIDI4MDM5LCAyODA0NCwgMjgwNDgsIDI4MDUyLCAyODA1NywgMjgwNjIsIDI4MDY2LCAyODA3MiwgMjgwNzcsIDI4MDgyLCAKLSAgICAyODA4OSwgMjgwOTYsIDI4MTAwLCAyODEwMywgMjgxMDksIDI4MTE4LCAyODEyNSwgMjgxMzMsIDI4MTQwLCAyODE0NCwgCi0gICAgMjgxNDksIDI4MTUzLCAyODE1OSwgMjgxNjUsIDI4MTY5LCAyODE3NSwgMjgxODAsIDI4MTg1LCAyODE5MiwgMjgxOTgsIAotICAgIDI4MjA0LCAyODIxMCwgMjgyMTYsIDI4MjIzLCAyODIyOSwgMjgyMzUsIDI4MjQxLCAyODI0NywgMjgyNTMsIDI4MjU5LCAKLSAgICAyODI2NSwgMjgyNzIsIDI4Mjc4LCAyODI4NSwgMjgyOTEsIDI4Mjk3LCAyODMwMywgMjgzMDksIDI4MzE1LCAyODMyMSwgCi0gICAgMjgzMjcsIDI4MzMzLCAyODMzOSwgOTc2MywgMjgzNDUsIDI4MzUwLCAyODM1NSwgMjgzNTgsIDI4MzY2LCAyODM3MSwgCi0gICAgMjgzODAsIDI4Mzg2LCAyODM5MSwgMjgzOTYsIDI4NDAxLCAyODQwNSwgMjg0MTAsIDI4NDE1LCAyODQyMCwgMjg0MjUsIAotICAgIDI4NDMwLCAyODQzNywgMjg0NDQsIDI4NDUwLCAyODQ1NiwgMjg0NjEsIDE0NTEwLCAyODQ2OCwgMjg0NzQsIDI4NDgxLCAKLSAgICAyODQ4NywgMjg0OTMsIDI4NDk4LCAyODUwNiwgMjg1MTEsIDE0Mjk0LCAyODUxNSwgMjg1MjAsIDI4NTI1LCAyODUzMSwgCi0gICAgMjg1MzYsIDI4NTQxLCAyODU0NSwgMjg1NTAsIDI4NTU1LCAyODU2MSwgMjg1NjYsIDI4NTcxLCAyODU3NSwgMjg1ODAsIAotICAgIDI4NTg1LCAyODU4OSwgMjg1OTQsIDI4NTk5LCAyODYwNCwgMjg2MDgsIDI4NjEzLCAyODYxOCwgMjg2MjMsIDI4NjI3LCAKLSAgICAyODYzMSwgMTM1MzEsIDI4NjM1LCAyODY0NCwgMjg2NTAsIDI4NjU2LCAyODY2NSwgMjg2NzMsIDI4NjgyLCAyODY5MCwgCi0gICAgMjg2OTUsIDI4Njk5LCAyODcwNiwgMjg3MTIsIDI4NzE2LCAyODcxOSwgMjg3MjQsIDI4NzMzLCAyODc0MSwgMjg3NDYsIAotICAgIDE0NTgsIDI4NzUyLCAyODc1NSwgMjg3NTksIDIwNTI0LCAyMDUzMCwgMjg3NjUsIDI4NzY5LCAyODc4MCwgMjg3OTEsIAotICAgIDI4ODAyLCAyODgxNCwgMjg4MjEsIDI4ODI4LCAyODgzMywgMjg4MzcsIDQzODcsIDczMywgMTk0MzgsIDI4ODQ1LCAyODg0OSwgCi0gICAgMjg4NTQsIDI4ODYwLCAyODg2NSwgMjg4NzEsIDI4ODc2LCAyODg4MiwgMjg4ODcsIDg3NjQsIDI3ODUsIDMzNjUsIDI4ODkxLCAKLSAgICAyODg5NCwgMjg5MDAsIDI4OTA2LCAyODkxMiwgMjg5MTksIDI4OTI1LCAyODkzMSwgMjg5MzcsIDI4OTQzLCAyODk0OSwgCi0gICAgMjg5NTUsIDI4OTYxLCAyODk2NywgMjg5NzMsIDI4OTc5LCAyODk4NSwgMjg5OTEsIDI4OTk4LCAyOTAwNCwgMjkwMTAsIAotICAgIDI5MDE2LCAyOTAyMiwgMjkwMjgsIDI5MDMzLCAyOTAzNiwgMjkwNDMsIDI5MDUxLCAyOTA1NiwgMjkwNjEsIDI5MDY3LCAKLSAgICAyOTA3MiwgMjkwNzcsIDI5MDgxLCAyOTA4NiwgMjkwOTIsIDI5MDk3LCAyOTEwMywgMjkxMDgsIDI5MTE0LCAyOTExOSwgCi0gICAgMjkxMjUsIDI5MTMxLCAyOTEzNSwgMjkxNDAsIDI5MTQ1LCAyOTE1MCwgMjkxNTUsIDI5MTU5LCAyOTE2NCwgMjkxNjksIAotICAgIDI5MTc0LCAyOTE4MCwgMjkxODYsIDI5MTkyLCAyOTE5OCwgMjkyMDMsIDI5MjA3LCAyOTIxMCwgMjkyMTYsIDI5MjIyLCAKLSAgICAyOTIzMSwgMjkyMzksIDI5MjQ2LCAyOTI1MSwgMjkyNTUsIDI5MjU5LCAyOTI2NCwgMTMzOTUsIDI5MjY5LCAyOTI3NywgCi0gICAgMjkyODMsIDM2MTEsIDI5Mjg4LCAyOTI5MSwgMjkyOTUsIDY0MzYsIDI5MzAxLCAyOTMwNywgMjkzMTQsIDY0NDUsIDI5MzE4LCAKLSAgICAyOTMyNCwgMjkzMzEsIDI5MzM3LCAyOTM0NiwgMjkzNTQsIDI5MzY2LCAyOTM3MCwgMjkzNzcsIDI5MzgzLCAyOTM4NywgCi0gICAgMjkzOTAsIDI5Mzk5LCAyOTQwNywgMjk0MTIsIDI5NDE2LCAyOTQyNiwgMjk0MzYsIDI5NDQ2LCAyOTQ1MiwgMjk0NTcsIAotICAgIDI5NDY3LCAyOTQ3MiwgMjk0ODUsIDI5NDk5LCAyOTUxMCwgMjk1MjIsIDI5NTM0LCAyOTU0OCwgMjk1NjEsIDI5NTczLCAKLSAgICAyOTU4NSwgMTI4NTksIDI5NTk5LCAyOTYwNCwgMjk2MDksIDI5NjEzLCAyOTYxNywgMjk2MjEsIDE3NDMsIDI1MTI5LCAKLSAgICAyOTYyNSwgMjk2MzAsIDI5NjM1LCAyOTYzOSwgMjk2NDIsIDI5NjQ3LCAyOTY1MiwgMjk2NTgsIDI5NjY0LCA4NDYxLCAKLSAgICAyOTY2OSwgMjk2NzYsIDEzOTM1LCAyOTY4MiwgMjk2ODcsIDI5NjkyLCAyOTY5NiwgMjk3MDEsIDI5NzA2LCAyODg1NSwgCi0gICAgMjk3MTEsIDI5NzE2LCAyOTcyMSwgMjk3MjcsIDI4ODYxLCAyOTczMiwgMjk3MzUsIDI5NzQyLCAyOTc1MCwgMjk3NTYsIAotICAgIDI5NzYyLCAyOTc2OCwgMjk3NzksIDI5Nzg0LCAyOTc5MSwgMjk3OTgsIDI5ODA1LCAyOTgxMywgMjk4MjIsIDI5ODMxLCAKLSAgICAyOTgzNywgMjk4NDMsIDI5ODUxLCAyODg2NiwgMjk4NTYsIDI5ODYyLCAyOTg2OCwgMjg4NzIsIDI5ODczLCAyOTg4MSwgCi0gICAgMjk4ODksIDI5ODk1LCAyOTkwMiwgMjk5MDgsIDI5OTE1LCAyOTkyMiwgMjk5MjgsIDI5OTM2LCAyOTk0NiwgMjk5NTMsIAotICAgIDI5OTU4LCAyOTk2NCwgMjk5NjksIDI5OTc0LCAyOTk4MSwgMjk5OTAsIDI5OTk4LCAzMDAwMywgMzAwMDksIDMwMDE2LCAKLSAgICAzMDAyNCwgMzAwMzAsIDMwMDM1LCAzMDA0MSwgMzAwNTAsIDI1ODkwLCAzMDA1NywgMzAwNjEsIDMwMDY2LCAzMDA3NSwgCi0gICAgMzAwODAsIDMwMDg1LCAxMDcxNCwgMzAwOTMsIDMwMDk4LCAzMDEwMywgMzAxMDcsIDMwMTEyLCAzMDExNywgMzAxMjQsIAotICAgIDMwMTI5LCAzMDEzNCwgMjg4NzcsIDI4ODgzLCAzMDE0MCwgMjQ3MywgMjM5LCAzMDE0MywgMzAxNDYsIDMwMTUwLCAzMDE1NCwgCi0gICAgMzAxNjQsIDMwMTcyLCAzMDE3NiwgMzAxODMsIDMwMTkwLCAzMDE5NCwgMzAxOTcsIDMwMjAzLCAzMDIxMSwgMzAyMTksIAotICAgIDMwMjIzLCAzMDIyNywgMzAyMzAsIDMwMjM3LCAzMDI0MSwgMzAyNDgsIDMwMjU2LCAzMDI2MywgMzAyNjcsIDMwMjc1LCAKLSAgICA2ODQsIDI5NywgMzAyODcsIDMwMjkyLCAzMDI5NywgMzAzMDMsIDMwMzA4LCAzMDMxMywgMzYzMiwgMzAzMTgsIDMwMzIxLCAKLSAgICAzMDMyNiwgMzAzMzEsIDMwMzM2LCAzMDM0MSwgMzAzNDYsIDMwMzUzLCAyMDYwOSwgMzAzNTgsIDMwMzYzLCAzMDM2OCwgCi0gICAgMzAzNzMsIDMwMzc4LCAzMDM4NCwgMzAzODksIDMwMzk1LCAyOTAzOSwgMzA0MDEsIDMwNDA2LCAzMDQxMiwgMzA0MTgsIAotICAgIDMwNDI4LCAzMDQzMywgMzA0MzgsIDMwNDQyLCAzMDQ0NywgMzA0NTIsIDMwNDU3LCAzMDQ2MiwgMzA0NzUsIDMwNDgwLCAKLSAgICAyMDQwNiwgMTQ5MDYsIDM2MzgsIDMwNDg0LCAzMDQ4OSwgMzA0OTQsIDMwNTAwLCAzMDUwNSwgMzA1MTAsIDMwNTE0LCAKLSAgICAzMDUxOSwgMzA1MjQsIDMwNTMwLCAzMDUzNSwgMzA1NDAsIDMwNTQ0LCAzMDU0OSwgMzA1NTQsIDMwNTU5LCAzMDU2MywgCi0gICAgMzA1NjgsIDMwNTczLCAzMDU3OCwgMzA1ODQsIDMwNTkwLCAzMDU5NSwgMzA1OTksIDMwNjA0LCAzMDYwOSwgMzA2MTQsIAotICAgIDMwNjE4LCAzMDYyNiwgMzA2MzAsIDMwNjM2LCAzMDY0MCwgMzA2NDcsIDE0Njk5LCAzMDY1MywgMzA2NjAsIDMwNjY4LCAKLSAgICAzMDY3NSwgMzA2ODEsIDMwNjkzLCAzMDY5OSwgMzA3MDMsIDI3MjcsIDMwNzA3LCAzMDcxMSwgMzAyMzIsIDMwNzIwLCAKLSAgICAzMDczMSwgMzA3MzYsIDMwNzQxLCAzMDc0NiwgMzA3NTAsIDMwNzU1LCAyMDUzNSwgMzA3NTksIDMwNzY0LCAxOTQ1OSwgCi0gICAgMzA3NjgsIDMwNzczLCAzMDc3OSwgMzA3ODQsIDMwNzg4LCAzMDc5MiwgMzA3OTUsIDMwNzk5LCAzMDgwNSwgMzA4MTYsIAotICAgIDMwODI4LCAzMDgzMywgMzA4MzcsIDMwODQwLCAzNDMsIDMwODQ0LCAzMDg0OSwgMzA4NTQsIDMwODU5LCAzMDg2NCwgCi0gICAgMzA4NjksIDMwODc1LCAzMDg4MCwgMzA4ODUsIDMwODkxLCAzMDg5NiwgMzA5MDIsIDMwOTA3LCAzMDkxMywgMzA5MTgsIAotICAgIDMwOTIzLCAzMDkyOCwgMzA5MzMsIDMwOTM4LCAzMDk0MywgMzA5NDgsIDMwOTUzLCAzMDk1OSwgMzA5NjQsIDMwOTY5LCAKLSAgICAzMDk3NCwgMzA5NzksIDMwOTg0LCAzMDk4OSwgMzA5OTQsIDMxMDAwLCAzMTAwNiwgMzEwMTEsIDMxMDE2LCAzMTAyMSwgCi0gICAgMzEwMjYsIDMxMDMxLCAzMTAzNiwgMzEwNDEsIDMxMDQ2LCAzMTA1MSwgMzEwNTYsIDMxMDYxLCAzMTA2NiwgMzEwNzEsIAotICAgIDMxMDc2LCAzMTA4MSwgMzEwODYsIDMxMDkxLCAzMTA5NiwgMzExMDIsIDI2LCAzMTEwNywgMzExMTEsIDMxMTE1LCAzMTEyMywgCi0gICAgMzExMjcsIDMxMTMxLCAzMTEzNCwgMzExMzcsIDMxMTM5LCAzMTE0NCwgMzExNDgsIDMxMTUzLCAzMTE1NywgMzExNjIsIAotICAgIDMxMTY2LCAzMTE3MSwgMzExNzUsIDMxMTc4LCAzMTE4MCwgMzExODUsIDMxMTg5LCAzMTIwMCwgMzEyMDMsIDMxMjA1LCAKLSAgICAzMTIwOSwgMzEyMjEsIDMxMjMwLCAzMTIzNCwgMzEyNDAsIDMxMjQ1LCAzMTI1NCwgMzEyNjAsIDMxMjY1LCAzMTI3MCwgCi0gICAgMzEyNzQsIDMxMjc5LCAzMTI4NiwgMzEyOTEsIDMxMjk3LCAzMTMwMiwgMzEzMDYsIDMxMzEzLCAyMzcwMSwgMjM3MTEsIAotICAgIDMxMzE3LCAzMTMyMiwgMzEzMjcsIDMxMzMyLCAzMTMzOSwgMzEzNDMsIDMxMzUwLCA2NTQ0LCAzMTM1NiwgMzEzNjUsIAotICAgIDMxMzczLCAzMTM4OCwgMzE0MDIsIDMxNDEwLCAzMTQyMSwgMzE0MzAsIDMxNDM1LCA1NjgxLCAzMTQ0NSwgMzE0NTAsIAotICAgIDMxNDU1LCAzMTQ1OSwgMzE0NjIsIDMxNDY2LCAzMTQ3MSwgMzE0NzUsIDMxNDgyLCAzMTQ4NywgMzE0OTIsIDczMjAsIAotICAgIDMxNTAyLCAzMTUwNCwgMzE1MDcsIDMxNTExLCAzMTUxNywgMzE1MjEsIDMxNTI2LCAzMTUzMSwgMzE1MzcsIDMxNTQyLCAKLSAgICAzMTU0OCwgMzE1NTMsIDMxNTYzLCAzMTU3MiwgMzE1ODAsIDMxNTg1LCAzMTU5MSwgMzE1OTYsIDMxNjAzLCAzMTYwNywgCi0gICAgMzE2MTUsIDMxNjIyLCAzMTYzNSwgMzE2NDMsIDMxNjQ3LCAzMTY1NywgMzE2NjIsIDMxNjY2LCAzMTY3NCwgMzE2ODIsIAotICAgIDMxNjg2LCAzMTY5NSwgMzE3MDEsIDMxNzA2LCAzMTcxNCwgMzE3MjQsIDMxNzMzLCAzMTc0MiwgMzE3NTEsIDMxNzYyLCAKLSAgICAzMTc3MCwgMzE3ODEsIDMxNzkwLCAzMTc5NywgMzE4MDMsIDMxODA4LCAzMTgxOSwgMzE4MjQsIDMxODI4LCAzMTgzMSwgCi0gICAgMzE4MzUsIDMxODQzLCAzMTg0OSwgMzE4NTcsIDMxODY0LCAzMTg3MCwgMzE4NzUsIDMxODgxLCAyMzcyLCAzMTg4NSwgCi0gICAgMzE4ODcsIDMxODkyLCAzMTg5NywgMzE5MDAsIDMxOTAyLCAzMTkwNiwgMzE5MDksIDMxOTE2LCAzMTkyMCwgMzE5MjQsIAotICAgIDMxOTI3LCAzMTkzMywgMzE5NDMsIDMxOTQ4LCAzMTk1NCwgMzE5NTgsIDMxOTYzLCAzMTk3NiwgMjQwNzQsIDMxOTgyLCAKLSAgICAzMTk5MSwgMTU2NTQsIDMxOTk4LCAzMjAwNywgMjk0MzIsIDMyMDE1LCAzMjAyMCwgMzIwMjQsIDMyMDMyLCAzMjAzOSwgCi0gICAgMzIwNDQsIDMyMDQ4LCAzMjA1MywgMzIwNTcsIDMyMDY1LCAzMjA3MSwgMzIwNzcsIDMyMDgyLCAzMjA4NiwgMzIwODksIAotICAgIDMyMDk0LCAzMjEwNywgMzIxMjMsIDIxMDgwLCAzMjE0MCwgMzIxNTIsIDMyMTY5LCAzMjE4MSwgMzIxOTUsIDIxMDk3LCAKLSAgICAyMTExNiwgMzIyMDcsIDMyMjE5LCAyNjM0LCAzMjIzMywgMzIyMzgsIDMyMjQzLCAzMjI0OCwgMzIyNTIsIDMyMjU5LCAKLSAgICAzMjI3MSwgMzIyNzcsIDMyMjgwLCAzMjI5MSwgMzIzMDIsIDI5ODQ4LCA2NzAsIDMyMzA3LCAzMjMxMSwgMzIzMTQsIAotICAgIDMyMzE5LCAzMjMyNCwgMzIzMzAsIDMyMzM1LCAzMjM0MCwgMzIzNDYsIDMyMzUyLCAzMjM1NywgMzIzNjEsIDMyMzY2LCAKLSAgICAzMjM3MSwgMzIzNzYsIDMyMzgwLCAzMjM4MywgMzIzODksIDMyMzk0LCAzMjM5OSwgMzI0MDQsIDMyNDA4LCAzMjQxMywgCi0gICAgMzI0MTksIDMyNDI3LCAyNDI5OSwgMzI0MzIsIDMyNDM3LCAzMjQ0NCwgMzI0NTAsIDMyNDU2LCAzMjQ2MSwgMzI0NjksIAotICAgIDIwNjE4LCAzMjQ3NiwgMzI0ODEsIDMyNDg2LCAzMjQ5MSwgMzI0OTUsIDMyNDk4LCAzMjUwMywgMzI1MDcsIDMyNTExLCAKLSAgICAzMjUxOCwgMzI1MjQsIDMyNTMwLCAzMjUzNiwgMzI1NDMsIDMyNTQ4LCAzMjU1NCwgMzE2NzcsIDMyNTU4LCAzMjU2MiwgCi0gICAgMzI1NjcsIDMyNTgwLCAzMjU4NSwgMzI1OTEsIDMyNTk5LCAzMjYwNiwgMzI2MTQsIDMyNjI0LCAzMjYzMCwgMzI2MzYsIAotICAgIDMyNjQyLCAzMjY0NiwgMzI2NTUsIDMyNjYwLCAzMjY2NSwgODc4NywgMzI2NzAsIDMyNjc3LCAzMjY4MywgMzI2OTMsIAotICAgIDMyNjk4LCAzMjcwNCwgMzI3MTIsIDM1NDMsIDMyNzE5LCAzMjcyNiwgMzU0OSwgMzI3MzAsIDMyNzM1LCAzMjc0NiwgCi0gICAgMzI3NTMsIDMyNzU5LCAzMjc2OCwgMzI3NzIsIDM5MzIsIDMyNzc1LCAzMjc4MiwgMzI3ODgsIDMyNzk0LCAzMjgwMiwgCi0gICAgMzI4MTIsIDI2OTU4LCAzMjgxOSwgMzI4MjcsIDMyODMzLCAzMjgzOCwgMzI4NDQsIDMyODQ5LCAzMjg1NSwgMzI4NTksIAotICAgIDMyODY2LCAzMjg3MiwgMzI4ODEsIDI0MDk0LCAzMjg4OCwgMzI4OTMsIDMyODk3LCAzMjkwNSwgMzI5MTMsIDc5NzQsIAotICAgIDQzNzMsIDMyOTIwLCAzMjkyNCwgMzI5MjgsIDMyOTMzLCAzMjkzOSwgMzI5NDQsIDMyOTQ5LCAzMjk1NiwgMzAzNDksIAotICAgIDMyOTYyLCAzMjk2NywgMzI5NzEsIDMyOTc2LCAzMjk4MCwgMzI5ODksIDMyOTkzLCAzMjk5OSwgMzMwMDYsIDMzMDEyLCAKLSAgICAzMzAxOSwgMzMwMjQsIDMzMDMzLCAzMzAzOCwgMzMwNDIsIDMzMDQ3LCAzMzA1NCwgMzMwNjIsIDMzMDcwLCAzMzA3NSwgCi0gICAgMTk1MDgsIDMzMDc5LCAzMzA4MiwgMzMwODYsIDMzMDkwLCAzMzA5NCwgMzMwOTcsIDMzMDk5LCAzMzEwNCwgMzMxMTIsIAotICAgIDMzMTE2LCAzMzEyMywgMzMxMjcsIDMzMTM1LCAzMzE0MiwgMzMxNTIsIDMzMTU2LCAzMzE2MCwgMzMxNjgsIDMzMTc2LCAKLSAgICAzMzE4MiwgMzMxODcsIDMzMTk2LCAxMTY2OSwgMzMyMDIsIDMzMjExLCAzMzIxNiwgMzMyMjMsIDMzMjMxLCAzMzIzOSwgCi0gICAgMzMyNDcsIDMzMjU0LCAzMzI2MSwgMzMyNjgsIDMzMjc1LCAzMzI4MiwgMzMyODcsIDMzMjkzLCAzMzMxMCwgMzMzMTgsIAotICAgIDMzMzI4LCAzMzMzNiwgMzMzNDMsIDM4NSwgMzMzNDcsIDMzMzUzLCAzMzM1NywgMzMzNjIsIDMxNDI2LCAzMzM2OCwgCi0gICAgMzMzNzEsIDMzMzc1LCAzMzM4MywgMzU1NCwgMzMzOTEsIDMzMzk3LCAzMzQwMywgMzM0MTIsIDMzNDIyLCAzMzQyOSwgCi0gICAgMzM0MzUsIDM1NjAsIDM1NjYsIDMzNDQ0LCAzMzQ1MSwgMzM0NTksIDMzNDY0LCAzMzQ2OCwgMzM0NzUsIDMzNDgzLCAKLSAgICAzMzQ4OSwgMzM0OTgsIDMzNTA4LCAzMzUxNCwgMzM1MjIsIDMzNTMxLCAzMzUzOCwgMzM1NDYsIDIwMTc1LCAzMzU1MywgCi0gICAgMzM1NjAsIDMzNTY2LCAzMzU3NiwgMzM1ODUsIDMzNTk2LCAzMzYwMCwgMzM2MTAsIDMzNjE2LCAzMzYyMywgMzM2MzEsIAotICAgIDMzNjQwLCAzMzY0OSwgMzM2NTksIDMzNjcwLCAzMzY3NywgMzM2ODIsIDMzNjg5LCAyOTY3LCAzMzY5NywgMzM3MDMsIAotICAgIDMzNzA4LCAzMzcxNCwgMzM3MjAsIDMzNzI1LCAzMzczOCwgMzM3NTEsIDMzNzY0LCAzMzc3MSwgMzM3NzcsIDMzNzg1LCAKLSAgICAzMzc5MCwgMzM3OTQsIDE0MzIsIDMzNzk4LCAzMzgwMywgMzM4MDgsIDMzODEzLCAzMzgxOCwgMzM4MjQsIDMzODI5LCAKLSAgICAzMzgzNCwgMzM4MzksIDMzODQ0LCAzMzg0OSwgMzM4NTQsIDMzODU5LCAzMzg2NSwgMzM4NzEsIDMzODc2LCAzMzg4MSwgCi0gICAgMzM4ODcsIDMzODkyLCAzMzg5NywgMzM5MDIsIDMzOTA4LCAzMzkxMywgMzM5MTgsIDMzOTIzLCAzMzkyOCwgMzM5MzQsIAotICAgIDMzOTM5LCAzMzk0NCwgMzM5NTAsIDMzOTU1LCAzMzk2MCwgMzM5NjUsIDMzOTcwLCAzMzk3NSwgMzM5ODEsIDMzOTg2LCAKLSAgICAzMzk5MiwgMzM5OTcsIDM0MDAzLCAzNDAwOCwgMzQwMTMsIDM0MDE4LCAzNDAyNCwgMzQwMzAsIDM0MDM2LCAzNDA0MiwgCi0gICAgMzQwNDgsIDM0MDU0LCAzNDA2MCwgMzQwNjYsIDM0MDcxLCAzNDA3NiwgMzQwODIsIDM0MDg3LCAzNDA5MiwgMzQwOTcsIAotICAgIDM0MTAyLCAzNDEwNywgMzQxMTIsIDM0MTE3LCAzNDEyMywgMzQxMjgsIDM0MTMzLCAzNDEzOSwgMzQxNDUsIDEwMSwgCi0gICAgMzQxNTAsIDM0MTUyLCAzNDE1NiwgMzQxNjAsIDM0MTY0LCAzNDE2OSwgMzQxNzMsIDc4OTUsIDM0MTc3LCAzNDE4MywgCi0gICAgNDczOCwgMzQxODksIDM0MTkyLCAzNDE5NywgMzQyMDEsIDM0MjA2LCAzNDIxMCwgMzQyMTQsIDM0MjE5LCA4NTk0LCAKLSAgICAzNDIyMywgMzQyMjcsIDM0MjMxLCAxMzYyMywgMzQyMzYsIDM0MjQwLCAzNDI0NSwgMzQyNTAsIDM0MjU1LCAzNDI1OSwgCi0gICAgMzQyNjYsIDI0MDk4LCAzNDI3MiwgMzQyNzUsIDM0Mjc5LCAzNDI4NCwgMzQyOTAsIDM0Mjk0LCAzNDMwMiwgMzQzMDgsIAotICAgIDM0MzEzLCAzNDMxNywgMzQzMjMsIDM0MzI3LCAzNDMzMSwgMzQwNCwgMzQwOSwgMjcxNDQsIDM0MzM0LCAzNDM0MiwgCi0gICAgMzQzNDksIDM0MzUzLCAzNDM2MCwgMzQzNjUsIDMzMywgMzQzNzAsIDM0Mzc0LCAzNDM4MCwgMzQzOTIsIDM0Mzk4LCAKLSAgICAzNDQwNCwgMzQ0MDgsIDM0NDE0LCAzNDQyMywgMzQ0MjcsIDM0NDMxLCAzNDQzNiwgMzQ0NDEsIDM0NDQ2LCAzNDQ1MCwgCi0gICAgMzQ0NTQsIDM0NDYxLCAzNDQ2NywgMzQ0NzIsIDM0NDg3LCAzNDUwMiwgMzQ1MTcsIDM0NTMzLCAzNDU1MSwgODU0NCwgCi0gICAgMzQ1NjUsIDM0NTcyLCAzNDU3NiwgMzQ1NzksIDM0NTg4LCAzNDU5MywgMzQ1OTcsIDM0NjA1LCAzMTYyOCwgMzQ2MTMsIAotICAgIDM0NjE3LCAzNDYyNywgMjcxMTQsIDM0NjM4LCAzNDY0MiwgMzQ2NTEsIDM0NjU5LCA4MTUyLCAxMzE2MywgMzQ2NjMsIAotICAgIDM0NjY2LCAzNDY2OSwgNjU1NywgMzgwMiwgMzQ2NzQsIDM0NjgyLCAzNDY4NiwgMzQ2ODksIDM0NjkzLCAzNDY5OCwgCi0gICAgMzQ3MDMsIDM0NzA5LCAzNDcxNSwgMzQ3MjAsIDM0NzI0LCAyMzk0NiwgMzQ3MjgsIDM0NzMyLCAzNDczOCwgMzQ3NDIsIAotICAgIDc0NDYsIDM0NzUxLCAzNDc1OCwgMzQ3NjIsIDEwMjEwLCAzNDc2OSwgMzQ3NzUsIDM0NzgwLCAzNDc4NywgMzQ3OTQsIAotICAgIDM0ODAxLCAyNjQ4MCwgNjQ4MCwgMzQ4MDgsIDM0ODE1LCAzNDgyMiwgMzQ4MjgsIDM0ODMzLCAzNDg0MCwgMzQ4NTEsIAotICAgIDM0ODU3LCAzNDg2MiwgMzQ4NjcsIDM0ODc0LCAzNDg3OCwgMzQ4ODIsIDM0ODkyLCAzNDkwMywgMzQ5MDksIDM0OTE0LCAKLSAgICAzNDkxOSwgMzQ5MjQsIDM0OTI5LCAzNDkzNCwgMzQ5MzgsIDM0OTQyLCAzNDk0OCwgMzQ5NTYsIDIyNzMsIDgyOCwgODYxNiwgCi0gICAgODYyMSwgODYyNywgMzQ5NjUsIDg2MzIsIDg2MzcsIDg2NDMsIDM0OTcwLCAzNDk4MCwgMzQ5ODQsIDg2NDgsIDM0OTg5LCAKLSAgICAzNDk5MiwgMzQ5OTcsIDM1MDAxLCAzNTAwNiwgMzUwMTEsIDM1MDE4LCAzNTAyNSwgMzUwMzMsIDg1NTcsIDM1MDQwLCAKLSAgICAzNTA0MywgMzUwNDksIDM1MDU5LCA0NDA3LCAzNTA2OCwgMzUwNzIsIDM1MDgwLCAzNTA4NCwgMzUwOTQsIDM1MTAwLCAKLSAgICAzNTExMSwgMzUxMTcsIDM1MTIzLCAzNTEyOCwgMzUxMzQsIDM1MTQwLCAzNTE0NiwgMzUxNTEsIDM1MTU0LCAzNTE2MSwgCi0gICAgMzUxNjcsIDM1MTcyLCAzNTE3OSwgMzUxODYsIDM1MTkwLCAzNTIwMCwgMzUyMTMsIDM1MjIyLCAzNTIzMSwgMzUyNDIsIAotICAgIDM1MjU1LCAzNTI2NiwgMzUyNzUsIDM1Mjg2LCAzNTI5MSwgMzUzMDAsIDM1MzA1LCA4NjUzLCAzNTMxMSwgMzUzMTgsIAotICAgIDM1MzI2LCAzNTMzMSwgMzUzMzUsIDM1MzQyLCAzNTM0OSwgMzc1NywgMjEsIDM1MzUzLCAzNTM1OCwgMTQ5NTgsIDM1MzYyLCAKLSAgICAzNTM2NSwgMzUzNjgsIDI2MDAxLCAzNTM3MiwgMjY0ODksIDM1MzgwLCAzNTM4NCwgMzUzODgsIDM1MzkxLCAzNTM5NywgCi0gICAgMzU0MDMsIDM1NDExLCAzNTQxNywgMzU0MjQsIDI1OTkzLCAzNTQyOCwgMjYxNzgsIDM1NDMyLCAzNTQ0MSwgMzU0NDcsIAotICAgIDM1NDUzLCAzNTQ1OCwgMzU0NjIsIDM1NDY4LCAzNTQ3MiwgMzU0NzUsIDM1NDgzLCAzNTQ5MSwgMjQxNTYsIDM1NDk3LCAKLSAgICAzNTUwNCwgMzU1MTAsIDM1NTE1LCAzNTUyMCwgMzU1MjQsIDM1NTMwLCAzNTUzNSwgMzU1NDEsIDM5NzMsIDc1NSwgMzU1NDgsIAotICAgIDM1NTUyLCAzNTU1NSwgMTM1MTMsIDM1NTY3LCAzMzUyNywgMzU1NzgsIDM1NTgxLCAzNTU4OCwgMzU1OTQsIDM1NTk4LCAKLSAgICAzNTYwNCwgMzU2MDksIDM1NjE1LCAzNTYyMCwgMzU2MjUsIDM1NjI5LCAzNTYzMywgMzU2MzgsIDM1NjQzLCAzNTY1MywgCi0gICAgMzU2NTksIDM1NjcyLCAzNTY3OCwgMzU2ODUsIDM1NjkwLCAzNTY5NiwgMzU3MDEsIDE0ODQ0LCAxNDM1LCAxMDAyLCAKLSAgICAyODk3NCwgMjg5ODAsIDM1NzA2LCAyODk4NiwgMjg5OTksIDI5MDA1LCAyOTAxMSwgMzU3MTIsIDI5MDE3LCAyOTAyMywgCi0gICAgMzU3MTgsIDM1NzI0LCAxNCwgMzU3MzIsIDM1NzM5LCAzNTc0MywgMzU3NDcsIDM1NzU1LCAyOTczNywgMzU3NTksIDM1NzYzLCAKLSAgICAzNTc3MCwgMzU3NzUsIDM1Nzc5LCAzNTc4NCwgMzU3OTAsIDM1Nzk1LCAzNTgwMSwgMzU4MDYsIDM1ODEwLCAzNTgxNCwgCi0gICAgMzU4MTgsIDM1ODIzLCAzNTgyNywgMzU4MzIsIDM1ODM2LCAzNTg0MywgMzU4NDgsIDM1ODUyLCAzNTg1NywgMzU4NjEsIAotICAgIDM1ODY2LCAzNTg3MCwgMzU4NzUsIDM1ODgxLCAxMzczMywgMTM3MzgsIDM1ODg2LCAzNTg5MCwgMzU4OTMsIDM1ODk3LCAKLSAgICAzNTkwMiwgMzU5MDYsIDM1OTEyLCAzNTkxOSwgMzU5MjQsIDM1OTM0LCAzNTkzOSwgMzU5NDcsIDM1OTUxLCAzNTk1NCwgCi0gICAgMjk3NTIsIDM1OTU4LCA0MDI2LCAzNTk2MywgMzU5NjgsIDM1OTcyLCAzNTk3NywgMzU5ODEsIDM1OTg2LCAxMTY4NywgCi0gICAgMzU5OTcsIDM2MDAxLCAzNjAwNCwgMzYwMDksIDM2MDEzLCAzNjAxNywgMzYwMjAsIDM2MDI0LCA2NTc2LCAxMTcwMywgCi0gICAgMzYwMjcsIDM2MDMwLCAzNjAzNSwgMzYwMzksIDM2MDQ4LCAzNjA2NCwgMzYwODAsIDM2MDkwLCAyNTkwMCwgMzYwOTcsIAotICAgIDM2MTAxLCAzNjEwNiwgMzYxMTEsIDM2MTE1LCAzNjExOSwgMzM2NDQsIDM2MTI1LCAzNjEzMCwgMzYxMzQsIDM2MTQxLCAKLSAgICAzNjE0NiwgMzYxNTAsIDM2MTU0LCAyNDk1OCwgMzYxNjAsIDE5NjAzLCAzNjE2NSwgMzYxNzIsIDM2MTgwLCAzNjE4NiwgCi0gICAgMzYxOTMsIDM2MjAxLCAzNjIwNywgMzYyMTEsIDM2MjE3LCAzNjIyNSwgMzYyMjksIDM2MjM4LCA3ODc2LCAzNjI0NiwgCi0gICAgMzYyNTAsIDM2MjU4LCAzNjI2NSwgMzYyNzAsIDM2Mjc1LCAzNjI3OSwgMzYyODIsIDM2Mjg2LCAzNjI4OSwgMzYyOTMsIAotICAgIDM2MzAwLCAzNjMwNSwgMzYzMTEsIDI0Mzc3LCAyOTAzNCwgMzYzMTUsIDM2MzIyLCAzNjMyOCwgMzYzMzQsIDM2MzM5LCAKLSAgICAzNjM0MiwgMzYzNDQsIDM2MzUxLCAzNjM1OCwgMzYzNjQsIDM2MzY4LCAzNjM3MSwgMzYzNzUsIDM2Mzc5LCAzNjM4MywgCi0gICAgMzYzODgsIDM2MzkyLCAzNjM5NiwgMzYzOTksIDM2NDAzLCAzNjQxNywgMjExNDYsIDM2NDM2LCAzNjQ0OSwgMzY0NjIsIAotICAgIDM2NDc1LCAyMTE2NCwgMzY0OTAsIDg4NDYsIDM2NTA1LCAzNjUxMSwgMzY1MTUsIDM2NTE5LCAzNjUyNiwgMzY1MzEsIAotICAgIDM2NTM1LCAzNjU0MiwgMzY1NDgsIDM2NTUzLCAzNjU1OSwgMzY1NjksIDM2NTgxLCAzNjU5MiwgMzY1OTcsIDM2NjA0LCAKLSAgICAzNjYwOCwgMzY2MTIsIDM2NjE1LCAxNDEyOSwgMzYwNSwgMzY2MjMsIDEzNzYwLCAzNjYzNiwgMzY2NDMsIDM2NjQ3LCAKLSAgICAzNjY1MSwgMzY2NTYsIDM2NjYxLCAzNjY2NywgMzY2NzEsIDM2Njc1LCAzNjY3OCwgNjE4OCwgMTM3NzEsIDM2NjgzLCAKLSAgICAzNjY4NywgMzY2OTMsIDM2NzAyLCAzNjcwNywgMzM1MDQsIDM2NzEzLCAzNjcxOCwgMzY3MjIsIDM2NzI3LCAzNjczNCwgCi0gICAgMzY3MzgsIDM2NzQxLCAxMjgyNCwgMzY3NDYsIDM2NzUzLCAxMDA5LCAzNjc1NywgMzY3NjIsIDM2NzY3LCAzNjc3MywgCi0gICAgMzY3NzgsIDM2NzgzLCAzNjc4NywgMzY3OTcsIDM2ODAyLCAzNjgwOCwgMzY4MTMsIDM2ODE5LCAzNjgyNCwgMzY4MzAsIAotICAgIDM2ODQwLCAzNjg0NSwgMzY4NTAsIDM2ODU0LCA1NjgzLCA1Njk1LCAzNjg1OSwgMzY4NjIsIDM2ODY5LCAzNjg3NSwgCi0gICAgMzE3OTMsIDMxODAwLCAzNjg4NCwgMzY4ODgsIDI5ODAwLCAzNjg5NiwgMzY5MDcsIDM2OTE1LCAzMzY5MiwgMzY5MjIsIAotICAgIDM2OTI3LCAzNjkzMiwgMzY5NDMsIDM2OTUwLCAzNjk2MSwgMjk4MjQsIDE5NjA5LCAzNjk2OSwgNzIyLCAzNjk3NCwgCi0gICAgMzY5ODAsIDI1OTg0LCAzNjk4NiwgMzY5OTEsIDM3MDAxLCAzNzAxMCwgMzcwMTcsIDM3MDIzLCAzNzAyNywgMzcwMzAsIAotICAgIDM3MDM3LCAzNzA0MywgMzcwNTAsIDM3MDU2LCAzNzA2NiwgMzcwNzQsIDM3MDgwLCAzNzA4NiwgMzcwOTEsIDM3MDk1LCAKLSAgICAzNzEwMiwgMzcxMDgsIDM3MTE1LCAzNjM4NCwgNTMwLCAxMjExMiwgMzcxMjEsIDM3MTI2LCAzNzEyOSwgMzcxMzUsIAotICAgIDM3MTQzLCAxMzY0LCAzNzE0OCwgMzcxNTIsIDM3MTU3LCAzNzE2NCwgMzcxNzAsIDM3MTc0LCAzNzE3OSwgMzcxODgsIAotICAgIDM3MTk1LCAzNzIwNSwgMzcyMTEsIDI2MDE5LCAzNzIyOCwgMzcyMzcsIDM3MjQ1LCAzNzI1MSwgMzcyNTYsIDM3MjYzLCAKLSAgICAzNzI2OSwgMzcyNzcsIDM3Mjg2LCAzNzI5NCwgMzcyOTgsIDM3MzAzLCAzNzMxMSwgMjk4MzMsIDM3MzE3LCAzNzMzNiwgCi0gICAgMTQwNjIsIDM3MzUwLCAzNzM2NiwgMzczODAsIDM3Mzg2LCAzNzM5MSwgMzczOTYsIDM3NDAxLCAzNzQwNywgMjk4MzksIAotICAgIDM3NDEyLCAzNzQxOSwgMzc0MjQsIDM3NDI4LCAzNDEsIDI4NzgsIDM3NDM1LCAzNzQ0MCwgMzc0NDUsIDI1Mjc1LCAzNzI2NiwgCi0gICAgMzc0NDksIDM3NDU0LCAzNzQ2MiwgMzc0NjYsIDM3NDY5LCAzNzQ3NSwgMzc0NzksIDI2MDc0LCAzNzQ4MiwgMzc0ODcsIAotICAgIDM3NDkxLCAzNzQ5NCwgMzc0OTksIDM3NTAzLCAzNzUwOCwgMzc1MTMsIDM3NTE3LCAzNzUyMiwgMzc1MjYsIDM3NTMwLCAKLSAgICAxOTM0NiwgMTkzNTcsIDM3NTM0LCAzNzUzOSwgMzc1NDUsIDI0OTE1LCAzNzU1MCwgMzc1NTQsIDE5NDI1LCAxNDI4MCwgCi0gICAgMzc1NTcsIDM3NTYyLCAzNzU2NywgMzc1NzIsIDM3NTc3LCAzNzU4MiwgMzc1ODcsIDM3NTkyLCA0NDAsIDQzLCAyOTA1MiwgCi0gICAgMjkwNTcsIDI5MDYyLCAyOTA2OCwgMjkwNzMsIDI5MDc4LCAzNzU5NywgMjkwODIsIDM3NjAxLCAzNzYwNSwgMjkwODcsIAotICAgIDI5MDkzLCAzNzYwOSwgMjkxMDQsIDI5MTA5LCAzNzYxNywgMzc2MjIsIDI5MTE1LCAzNzYyNywgMzc2MzIsIDM3NjM3LCAKLSAgICAzNzY0MiwgMzc2NDgsIDM3NjU0LCAzNzY2MCwgMjkxMzIsIDM3NjczLCAzNzY3OSwgMjkxMzYsIDM3NjgzLCAyOTE0MSwgCi0gICAgMzc2ODgsIDI5MTQ2LCAyOTE1MSwgMzc2OTEsIDM3Njk2LCAzNzcwMCwgMjg3OTUsIDM3NzA2LCAxMTkxMSwgMzc3MTMsIAotICAgIDM3NzE4LCAyOTE1NiwgMzc3MjIsIDM3NzI3LCAzNzczMiwgMzc3MzcsIDM3NzQxLCAzNzc0NiwgMzc3NTEsIDM3NzU3LCAKLSAgICAzNzc2MiwgMzc3NjcsIDM3NzczLCAzNzc3OSwgMzc3ODQsIDM3Nzg4LCAzNzc5MywgMzc3OTgsIDM3ODAzLCAzNzgwNywgCi0gICAgMzc4MTIsIDM3ODE3LCAzNzgyMiwgMzc4MjgsIDM3ODM0LCAzNzg0MCwgMzc4NDUsIDM3ODQ5LCAzNzg1NCwgMzc4NTgsIAotICAgIDI5MTYwLCAyOTE2NSwgMjkxNzAsIDM3ODYyLCAzNzg2NiwgMjkxNzUsIDI5MTgxLCAyOTE4NywgMjkxOTksIDM3ODc4LCAKLSAgICAyMzk4MywgMzc4ODIsIDM3ODg2LCAzNzg5MSwgMzc4OTYsIDM3OTAxLCAzNzkwNSwgMzc5MDksIDM3OTE5LCAzNzkyNCwgCi0gICAgMzc5MjksIDM3OTMzLCAzNzkzNywgMzc5NDAsIDM3OTQ4LCAyOTI0NywgMzc5NTMsIDE0NDIsIDM3OTU5LCAzNzk2NywgCi0gICAgMzc5NzYsIDM3OTgwLCAzNzk4OCwgMzc5OTQsIDM4MDAyLCAzODAxOCwgMzgwMjMsIDM4MDM4LCAyOTI4NCwgMTcxMiwgCi0gICAgMTAzNzUsIDM4MDQyLCAyOTI0LCAzODA1NCwgMzgwNTUsIDM4MDYzLCAzODA3MCwgMzgwNzUsIDM4MDgyLCAzODA4NywgCi0gICAgNzc0NiwgMTA5MCwgODY3NSwgMzgwOTQsIDM4MDk5LCAzODEwMiwgMzgxMDUsIDM4MTE0LCAxMjc1LCAzODExOSwgMzY1MzIsIAotICAgIDM4MTI2LCAzODEzMSwgMjA1ODMsIDI1MTEsIDM4MTM1LCA5MDk0LCAzODE0NSwgMzgxNTEsIDIyOTEsIDIzMDEsIDM4MTYwLCAKLSAgICAzODE2OSwgMzgxNzksIDM4MTkwLCAzMjM1LCAzMTk0NCwgODcyNywgMzczNSwgMTQ4ODIsIDEyODAsIDM4MTk1LCAzODIwMywgCi0gICAgMzgyMTAsIDM4MjE1LCAzODIxOSwgMzgyMjMsIDIxOTMwLCA4NzU0LCAzODIzMSwgMzgyNDAsIDM4MjQ5LCAzODI1NywgCi0gICAgMzgyNjQsIDM4MjY5LCAzODI4MiwgMzgyOTUsIDM4MzA3LCAzODMxOSwgMzgzMzEsIDM4MzQ0LCAzODM1NSwgMzgzNjYsIAotICAgIDM4Mzc2LCAzODM4NCwgMzgzOTIsIDM4NDA0LCAzODQxNiwgMzg0MjcsIDM4NDM2LCAzODQ0NCwgMzg0NTEsIDM4NDYzLCAKLSAgICAzODQ3MCwgMzg0NzksIDM4NDg2LCAzODQ5OSwgMzg1MDQsIDM4NTE0LCAzODUxOSwgMzg1MjUsIDM4NTMwLCAzNDc1OSwgCi0gICAgMzg1MzQsIDM4NTQxLCAzODU0NSwgMzg1NTIsIDM4NTYwLCAyNDcyLCAzODU2NywgMzg1NzgsIDM4NTg4LCAzODU5NywgCi0gICAgMzg2MDUsIDM4NjE1LCAzODYyMywgMzg2MzMsIDM4NjQyLCAzODY0NywgMzg2NTMsIDM4NjU5LCAzODY3MCwgMzg2ODAsIAotICAgIDM4Njg5LCAzODY5OCwgMzg3MDgsIDM4NzE2LCAzODcyNSwgMzg3MzAsIDM4NzM1LCAzODc0MCwgMTY2OCwgMzcsIDM4NzQ4LCAKLSAgICAzODc1NiwgMzg3NjcsIDM4Nzc4LCAxNDU2MywgMzg3ODgsIDM4Nzk1LCAzODgwMSwgMzg4MDYsIDM4ODEwLCAzODgyMSwgCi0gICAgMzg4MzEsIDM4ODQwLCAzODg1MSwgMTQ5MzEsIDE0OTM2LCAzODg1NiwgMzg4NjUsIDM4ODcwLCAzODg4MCwgMzg4ODUsIAotICAgIDM4ODkzLCAzODkwMSwgMzg5MDgsIDM4OTE0LCA1NTM2LCAxMDM4LCAzODkxOCwgMzg5MjQsIDM4OTI5LCAzODkzMiwgMjA3NSwgCi0gICAgMzY2NDgsIDM4OTQwLCAzODk0NCwgMzg5NDcsIDE0NzUsIDM4OTUzLCAxMjI2MSwgMTI4NSwgMzg5NTgsIDM4OTcxLCAKLSAgICAzODk4NSwgMjU5NywgMzkwMDMsIDM5MDE1LCAzOTAyNywgMjYxMSwgMjYyOCwgMzkwNDEsIDM5MDU0LCAyNjQzLCAzOTA2OCwgCi0gICAgMzkwODAsIDI2NTgsIDM5MDk0LCAxMjkxLCAxMjk3LCAxMzAzLCA5MDEyLCAzOTA5OSwgMzkxMDQsIDM5MTA5LCAzOTExMywgCi0gICAgMzkxMjgsIDM5MTQzLCAzOTE1OCwgMzkxNzMsIDM5MTg4LCAzOTIwMywgMzkyMTgsIDM5MjMzLCAzOTI0OCwgMzkyNjMsIAotICAgIDM5Mjc4LCAzOTI5MywgMzkzMDgsIDM5MzIzLCAzOTMzOCwgMzkzNTMsIDM5MzY4LCAzOTM4MywgMzkzOTgsIDM5NDEzLCAKLSAgICAzOTQyOCwgMzk0NDMsIDM5NDU4LCAzOTQ3MywgMzk0ODgsIDM5NTAzLCAzOTUxOCwgMzk1MzMsIDM5NTQ4LCAzOTU2MywgCi0gICAgMzk1NzgsIDM5NTkzLCAzOTYwOCwgMzk2MjMsIDM5NjM4LCAzOTY1MywgMzk2NjgsIDM5NjgzLCAzOTY5OCwgMzk3MTMsIAotICAgIDM5NzI4LCAzOTc0MywgMzk3NTgsIDM5NzczLCAzOTc4OCwgMzk4MDMsIDM5ODE4LCAzOTgzMywgMzk4NDgsIDM5ODYzLCAKLSAgICAzOTg3OCwgMzk4OTMsIDM5OTA4LCAzOTkyMywgMzk5MzgsIDM5OTUzLCAzOTk2OCwgMzk5ODMsIDM5OTk4LCA0MDAxMywgCi0gICAgNDAwMjgsIDQwMDQzLCA0MDA1OCwgNDAwNzMsIDQwMDg4LCA0MDEwMywgNDAxMTgsIDQwMTMzLCA0MDE0OCwgNDAxNjMsIAotICAgIDQwMTc4LCA0MDE5MywgNDAyMDgsIDQwMjIzLCA0MDIzOCwgNDAyNTMsIDQwMjY4LCA0MDI4MywgNDAyOTgsIDQwMzEzLCAKLSAgICA0MDMyOCwgNDAzNDMsIDQwMzU4LCA0MDM3MywgNDAzODgsIDQwNDAzLCA0MDQxOCwgNDA0MzMsIDQwNDQ4LCA0MDQ2MywgCi0gICAgNDA0NzgsIDQwNDkzLCA0MDUwOCwgNDA1MjMsIDQwNTM4LCA0MDU1MywgNDA1NjgsIDQwNTgzLCA0MDU5OCwgNDA2MTMsIAotICAgIDQwNjI4LCA0MDY0MywgNDA2NTgsIDQwNjczLCA0MDY4OCwgNDA3MDMsIDQwNzE4LCA0MDczMywgNDA3NDgsIDQwNzYzLCAKLSAgICA0MDc3OCwgNDA3OTMsIDQwODA4LCA0MDgyMywgNDA4MzgsIDQwODUzLCA0MDg2OCwgNDA4ODMsIDQwODk4LCA0MDkxMywgCi0gICAgNDA5MjgsIDQwOTQzLCA0MDk1OCwgNDA5NzMsIDQwOTg4LCA0MTAwMywgNDEwMTgsIDQxMDMzLCA0MTA0OCwgNDEwNjMsIAotICAgIDQxMDc4LCA0MTA5MywgNDExMDgsIDQxMTIzLCA0MTEzOCwgNDExNTMsIDQxMTY4LCA0MTE4MywgNDExOTgsIDQxMjEzLCAKLSAgICA0MTIyOCwgNDEyNDMsIDQxMjU4LCA0MTI3MywgNDEyODgsIDQxMzAzLCA0MTMxOCwgNDEzMzMsIDQxMzQ4LCA0MTM2MywgCi0gICAgNDEzNzgsIDQxMzkzLCA0MTQwOCwgNDE0MjMsIDQxNDM4LCA0MTQ1MywgNDE0NjgsIDQxNDgzLCA0MTQ5OCwgNDE1MTMsIAotICAgIDQxNTI4LCA0MTU0MywgNDE1NTgsIDQxNTczLCA0MTU4OCwgNDE2MDMsIDQxNjE4LCA0MTYzMywgNDE2NDgsIDQxNjYzLCAKLSAgICA0MTY3OCwgNDE2OTMsIDQxNzA4LCA0MTcyMywgNDE3MzgsIDQxNzUzLCA0MTc2OCwgNDE3ODMsIDQxNzk4LCA0MTgxMywgCi0gICAgNDE4MjgsIDQxODQzLCA0MTg1OCwgNDE4NzMsIDQxODg4LCA0MTkwMywgNDE5MTgsIDQxOTMzLCA0MTk0OCwgNDE5NjMsIAotICAgIDQxOTc4LCA0MTk5MywgNDIwMDgsIDQyMDIzLCA0MjAzOCwgNDIwNTMsIDQyMDY4LCA0MjA4MywgNDIwOTgsIDQyMTEzLCAKLSAgICA0MjEyOCwgNDIxNDMsIDQyMTU4LCA0MjE3MywgNDIxODgsIDQyMjAzLCA0MjIxOCwgNDIyMzMsIDQyMjQ4LCA0MjI2MywgCi0gICAgNDIyNzgsIDQyMjkzLCA0MjMwOCwgNDIzMjMsIDQyMzM4LCA0MjM1MywgNDIzNjgsIDQyMzgzLCA0MjM5OCwgNDI0MTMsIAotICAgIDQyNDI4LCA0MjQ0MywgNDI0NTgsIDQyNDczLCA0MjQ4OCwgNDI1MDMsIDQyNTE4LCA0MjUzMywgNDI1NDgsIDQyNTYzLCAKLSAgICA0MjU3OCwgNDI1OTMsIDQyNjA4LCA0MjYyMywgNDI2MzgsIDQyNjUzLCA0MjY2OCwgNDI2ODMsIDQyNjk4LCA0MjcxMywgCi0gICAgNDI3MjgsIDQyNzQzLCA0Mjc1OCwgNDI3NzMsIDQyNzg4LCA0MjgwMywgNDI4MTgsIDQyODMzLCA0Mjg0OCwgNDI4NjMsIAotICAgIDQyODc4LCA0Mjg5MywgNDI5MDgsIDQyOTIzLCA0MjkzOCwgNDI5NTMsIDQyOTY4LCA0Mjk4MywgNDI5OTgsIDQzMDEzLCAKLSAgICA0MzAyOCwgNDMwNDMsIDQzMDU4LCA0MzA3MywgNDMwODgsIDQzMTAzLCA0MzExOCwgNDMxMzMsIDQzMTQ4LCA0MzE2MywgCi0gICAgNDMxNzgsIDQzMTkzLCA0MzIwOCwgNDMyMjMsIDQzMjM4LCA0MzI1MywgNDMyNjgsIDQzMjgzLCA0MzI5OCwgNDMzMTMsIAotICAgIDQzMzI4LCA0MzM0MywgNDMzNTgsIDQzMzczLCA0MzM4OCwgNDM0MDMsIDQzNDE4LCA0MzQzMywgNDM0NDgsIDQzNDYzLCAKLSAgICA0MzQ3OCwgNDM0OTMsIDQzNTA4LCA0MzUyMywgNDM1MzgsIDQzNTUzLCA0MzU2OCwgNDM1ODMsIDQzNTk4LCA0MzYxMywgCi0gICAgNDM2MjgsIDQzNjQzLCA0MzY1OCwgNDM2NzMsIDQzNjg4LCA0MzcwMywgNDM3MTgsIDQzNzMzLCA0Mzc0OCwgNDM3NjMsIAotICAgIDQzNzc4LCA0Mzc5MywgNDM4MDgsIDQzODIzLCA0MzgzOCwgNDM4NTMsIDQzODY4LCA0Mzg4MywgNDM4OTgsIDQzOTEzLCAKLSAgICA0MzkyOCwgNDM5NDMsIDQzOTU4LCA0Mzk3MywgNDM5ODgsIDQ0MDAzLCA0NDAxOCwgNDQwMzMsIDQ0MDQ4LCA0NDA2MywgCi0gICAgNDQwNzgsIDQ0MDkzLCA0NDEwOCwgNDQxMjMsIDQ0MTM4LCA0NDE1MywgNDQxNjgsIDQ0MTgzLCA0NDE5OCwgNDQyMTMsIAotICAgIDQ0MjI4LCA0NDI0MywgNDQyNTgsIDQ0MjczLCA0NDI4OCwgNDQzMDMsIDQ0MzE4LCA0NDMzMywgNDQzNDgsIDQ0MzYzLCAKLSAgICA0NDM3OCwgNDQzOTMsIDQ0NDA4LCA0NDQyMywgNDQ0MzgsIDQ0NDUzLCA0NDQ2OCwgNDQ0ODMsIDQ0NDk4LCA0NDUxMywgCi0gICAgNDQ1MjgsIDQ0NTQzLCA0NDU1OCwgNDQ1NzMsIDQ0NTg4LCA0NDYwMywgNDQ2MTgsIDQ0NjMzLCA0NDY0OCwgNDQ2NjMsIAotICAgIDQ0Njc4LCA0NDY5MywgNDQ3MDgsIDQ0NzIzLCA0NDczOCwgNDQ3NTMsIDQ0NzY4LCA0NDc4MywgNDQ3OTgsIDQ0ODEzLCAKLSAgICA0NDgyOCwgNDQ4NDMsIDQ0ODU4LCA0NDg3MywgNDQ4ODgsIDQ0OTAzLCA0NDkxOCwgNDQ5MzMsIDQ0OTQ4LCA0NDk2MywgCi0gICAgNDQ5NzgsIDQ0OTkzLCA0NTAwOCwgNDUwMjMsIDQ1MDM4LCA0NTA1MywgNDUwNjgsIDQ1MDgzLCA0NTA5OCwgNDUxMTMsIAotICAgIDQ1MTI4LCA0NTE0MywgNDUxNTgsIDQ1MTczLCA0NTE4OCwgNDUyMDMsIDQ1MjE4LCA0NTIzMywgNDUyNDgsIDQ1MjYzLCAKLSAgICA0NTI3OCwgNDUyOTMsIDQ1MzA4LCA0NTMyMywgNDUzMzgsIDQ1MzUzLCA0NTM2OCwgNDUzODMsIDQ1Mzk4LCA0NTQxMywgCi0gICAgNDU0MjgsIDQ1NDQzLCA0NTQ1OCwgNDU0NzMsIDQ1NDg4LCA0NTUwMywgNDU1MTgsIDQ1NTMzLCA0NTU0OCwgNDU1NjMsIAotICAgIDQ1NTc4LCA0NTU5MywgNDU2MDgsIDQ1NjIzLCA0NTYzOCwgNDU2NTMsIDQ1NjY4LCA0NTY4MywgNDU2OTgsIDQ1NzEzLCAKLSAgICA0NTcyOCwgNDU3NDMsIDQ1NzU4LCA0NTc3MywgNDU3ODgsIDQ1ODAzLCA0NTgxOCwgNDU4MzMsIDQ1ODQ4LCA0NTg2MywgCi0gICAgNDU4NzgsIDQ1ODkzLCA0NTkwOCwgNDU5MjMsIDQ1OTM4LCA0NTk1MywgNDU5NjgsIDQ1OTgzLCA0NTk5OCwgNDYwMTMsIAotICAgIDQ2MDI4LCA0NjA0MywgNDYwNTgsIDQ2MDczLCA0NjA4OCwgNDYxMDMsIDQ2MTE4LCA0NjEzMywgNDYxNDgsIDQ2MTYzLCAKLSAgICA0NjE3OCwgNDYxOTMsIDQ2MjA4LCA0NjIyMywgNDYyMzgsIDQ2MjUzLCA0NjI2OCwgNDYyODMsIDQ2Mjk4LCA0NjMxMywgCi0gICAgNDYzMjgsIDQ2MzQzLCA0NjM1OCwgNDYzNzMsIDQ2Mzg4LCA0NjQwMywgNDY0MTgsIDQ2NDMzLCA0NjQ0OCwgNDY0NjMsIAotICAgIDQ2NDc4LCA0NjQ5MywgNDY1MDgsIDQ2NTIzLCA0NjUzOCwgNDY1NTMsIDQ2NTY4LCA0NjU4MywgNDY1OTgsIDQ2NjEzLCAKLSAgICA0NjYyOCwgNDY2NDMsIDQ2NjU4LCA0NjY3MywgNDY2ODgsIDQ2NzAzLCA0NjcxOCwgNDY3MzMsIDQ2NzQ4LCA0Njc2MywgCi0gICAgNDY3NzgsIDQ2NzkzLCA0NjgwOCwgNDY4MjMsIDQ2ODM4LCA0Njg1MywgNDY4NjgsIDQ2ODgzLCA0Njg5OSwgNDY5MTUsIAotICAgIDQ2OTMxLCA0Njk0NywgNDY5NjMsIDQ2OTc5LCA0Njk5NSwgNDcwMTEsIDQ3MDI3LCA0NzA0MywgNDcwNTksIDQ3MDc1LCAKLSAgICA0NzA5MSwgNDcxMDcsIDQ3MTIzLCA0NzEzOSwgNDcxNTUsIDQ3MTcxLCA0NzE4NywgNDcyMDMsIDQ3MjE5LCA0NzIzNSwgCi0gICAgNDcyNTEsIDQ3MjY3LCA0NzI4MywgNDcyOTksIDQ3MzE1LCA0NzMzMSwgNDczNDcsIDQ3MzYzLCA0NzM3OSwgNDczOTUsIAotICAgIDQ3NDExLCA0NzQyNywgNDc0NDMsIDQ3NDU5LCA0NzQ3NSwgNDc0OTEsIDQ3NTA3LCA0NzUyMywgNDc1MzksIDQ3NTU1LCAKLSAgICA0NzU3MSwgNDc1ODcsIDQ3NjAzLCA0NzYxOSwgNDc2MzUsIDQ3NjUxLCA0NzY2NywgNDc2ODMsIDQ3Njk5LCA0NzcxNSwgCi0gICAgNDc3MzEsIDQ3NzQ3LCA0Nzc2MywgNDc3NzksIDQ3Nzk1LCA0NzgxMSwgNDc4MjcsIDQ3ODQzLCA0Nzg1OSwgNDc4NzUsIAotICAgIDQ3ODkxLCA0NzkwNywgNDc5MjMsIDQ3OTM5LCA0Nzk1NSwgNDc5NzEsIDQ3OTg3LCA0ODAwMywgNDgwMTksIDQ4MDM1LCAKLSAgICA0ODA1MSwgNDgwNjcsIDQ4MDgzLCA0ODA5OSwgNDgxMTUsIDQ4MTMxLCA0ODE0NywgNDgxNjMsIDQ4MTc5LCA0ODE5NSwgCi0gICAgNDgyMTEsIDQ4MjI3LCA0ODI0MywgNDgyNTksIDQ4Mjc1LCA0ODI5MSwgNDgzMDcsIDQ4MzIzLCA0ODMzOSwgNDgzNTUsIAotICAgIDQ4MzcxLCA0ODM4NywgNDg0MDMsIDQ4NDE5LCA0ODQzNSwgNDg0NTEsIDQ4NDY3LCA0ODQ4MywgNDg0OTksIDQ4NTE1LCAKLSAgICA0ODUzMSwgNDg1NDcsIDQ4NTYzLCA0ODU3OSwgNDg1OTUsIDQ4NjExLCA0ODYyNywgNDg2NDMsIDQ4NjU5LCA0ODY3NSwgCi0gICAgNDg2OTEsIDQ4NzA3LCA0ODcyMywgNDg3MzksIDQ4NzU1LCA0ODc3MSwgNDg3ODcsIDQ4ODAzLCA0ODgxOSwgNDg4MzUsIAotICAgIDQ4ODUxLCA0ODg2NywgNDg4ODMsIDQ4ODk5LCA0ODkxNSwgNDg5MzEsIDQ4OTQ3LCA0ODk2MywgNDg5NzksIDQ4OTk1LCAKLSAgICA0OTAxMSwgNDkwMjcsIDQ5MDQzLCA0OTA1OSwgNDkwNzUsIDQ5MDkxLCA0OTEwNywgNDkxMjMsIDQ5MTM5LCA0OTE1NSwgCi0gICAgNDkxNzEsIDQ5MTg3LCA0OTIwMywgNDkyMTksIDQ5MjM1LCA0OTI1MSwgNDkyNjcsIDQ5MjgzLCA0OTI5OSwgNDkzMTUsIAotICAgIDQ5MzMxLCA0OTM0NywgNDkzNjMsIDQ5Mzc5LCA0OTM5NSwgNDk0MTEsIDQ5NDI3LCA0OTQ0MywgNDk0NTksIDQ5NDc1LCAKLSAgICA0OTQ5MSwgNDk1MDcsIDQ5NTIzLCA0OTUzOSwgNDk1NTUsIDQ5NTcxLCA0OTU4NywgNDk2MDMsIDQ5NjE5LCA0OTYzNSwgCi0gICAgNDk2NTEsIDQ5NjY3LCA0OTY4MywgNDk2OTksIDQ5NzE1LCA0OTczMSwgNDk3NDcsIDQ5NzYzLCA0OTc3OSwgNDk3OTUsIAotICAgIDQ5ODExLCA0OTgyNywgNDk4NDMsIDQ5ODU5LCA0OTg3NSwgNDk4OTEsIDQ5OTA3LCA0OTkyMywgNDk5MzksIDQ5OTU1LCAKLSAgICA0OTk3MSwgNDk5ODcsIDUwMDAzLCA1MDAxOSwgNTAwMzUsIDUwMDUxLCA1MDA2NywgNTAwODMsIDUwMDk5LCA1MDExNSwgCi0gICAgNTAxMzEsIDUwMTQ3LCA1MDE2MywgNTAxNzksIDUwMTk1LCA1MDIxMSwgNTAyMjcsIDUwMjQzLCA1MDI1OSwgNTAyNzUsIAotICAgIDUwMjkxLCA1MDMwNywgNTAzMjMsIDUwMzM5LCA1MDM1NSwgNTAzNzEsIDUwMzg3LCA1MDQwMywgNTA0MTksIDUwNDM1LCAKLSAgICA1MDQ1MSwgNTA0NjcsIDUwNDgzLCA1MDQ5OSwgNTA1MTUsIDUwNTMxLCA1MDU0NywgNTA1NjMsIDUwNTc5LCA1MDU5NSwgCi0gICAgNTA2MTEsIDUwNjI3LCA1MDY0MywgNTA2NTksIDUwNjc1LCA1MDY5MSwgNTA3MDcsIDUwNzIzLCA1MDczOSwgNTA3NTUsIAotICAgIDUwNzcxLCA1MDc4NywgNTA4MDMsIDUwODE5LCA1MDgzNSwgNTA4NTEsIDUwODY3LCA1MDg4MywgNTA4OTksIDUwOTE1LCAKLSAgICA1MDkzMSwgNTA5NDcsIDUwOTYzLCA1MDk3OSwgNTA5OTUsIDUxMDExLCA1MTAyNywgNTEwNDMsIDUxMDU5LCA1MTA3NSwgCi0gICAgNTEwOTEsIDUxMTA3LCA1MTEyMywgNTExMzksIDUxMTU1LCA1MTE3MSwgNTExODcsIDUxMjAzLCA1MTIxOSwgNTEyMzUsIAotICAgIDUxMjUxLCA1MTI2NywgNTEyODMsIDUxMjk5LCA1MTMxNSwgNTEzMzEsIDUxMzQ3LCA1MTM2MywgNTEzNzksIDUxMzk1LCAKLSAgICA1MTQxMSwgNTE0MjcsIDUxNDQzLCA1MTQ1OSwgNTE0NzUsIDUxNDkxLCA1MTUwNywgNTE1MjMsIDUxNTM5LCA1MTU1NSwgCi0gICAgNTE1NzEsIDUxNTg3LCA1MTYwMywgNTE2MTksIDUxNjM1LCA1MTY1MSwgNTE2NjcsIDUxNjgzLCA1MTY5OSwgNTE3MTUsIAotICAgIDUxNzMxLCA1MTc0NywgNTE3NjMsIDUxNzc5LCA1MTc5NSwgNTE4MTEsIDUxODI3LCA1MTg0MywgNTE4NTksIDUxODc1LCAKLSAgICA1MTg5MSwgNTE5MDcsIDUxOTIzLCA1MTkzOSwgNTE5NTUsIDUxOTcxLCA1MTk4NywgNTIwMDMsIDUyMDE5LCA1MjAzNSwgCi0gICAgNTIwNTEsIDUyMDY3LCA1MjA4MywgNTIwOTksIDUyMTE1LCA1MjEzMSwgNTIxNDcsIDUyMTYzLCA1MjE3OSwgNTIxOTUsIAotICAgIDUyMjExLCA1MjIyNywgNTIyNDMsIDUyMjU5LCA1MjI3NSwgNTIyOTEsIDUyMzA3LCA1MjMyMywgNTIzMzksIDUyMzU1LCAKLSAgICA1MjM3MSwgNTIzODcsIDUyNDAzLCA1MjQxOSwgNTI0MzUsIDUyNDUxLCA1MjQ2NywgNTI0ODMsIDUyNDk5LCA1MjUxNSwgCi0gICAgNTI1MzEsIDUyNTQ3LCA1MjU2MywgNTI1NzksIDUyNTk1LCA1MjYxMSwgNTI2MjcsIDUyNjQzLCA1MjY1OSwgNTI2NzUsIAotICAgIDUyNjkxLCA1MjcwNywgNTI3MjMsIDUyNzM5LCA1Mjc1NSwgNTI3NzEsIDUyNzg3LCA1MjgwMywgNTI4MTksIDUyODM1LCAKLSAgICA1Mjg1MSwgNTI4NjcsIDUyODgzLCA1Mjg5OSwgNTI5MTUsIDUyOTMxLCA1Mjk0NywgNTI5NjMsIDUyOTc5LCA1Mjk5NSwgCi0gICAgNTMwMTEsIDUzMDI3LCA1MzA0MywgNTMwNTksIDUzMDc1LCA1MzA5MSwgNTMxMDcsIDUzMTIzLCA1MzEzOSwgNTMxNTUsIAotICAgIDUzMTcxLCA1MzE4NywgNTMyMDMsIDUzMjE5LCA1MzIzNSwgNTMyNTEsIDUzMjY3LCA1MzI4MywgNTMyOTksIDUzMzE1LCAKLSAgICA1MzMzMSwgNTMzNDcsIDUzMzYzLCA1MzM3OSwgNTMzOTUsIDUzNDExLCA1MzQyNywgNTM0NDMsIDUzNDU5LCA1MzQ3NSwgCi0gICAgNTM0OTEsIDUzNTA3LCA1MzUyMywgNTM1MzksIDUzNTU1LCA1MzU3MSwgNTM1ODcsIDUzNjAzLCA1MzYxOSwgNTM2MzUsIAotICAgIDUzNjUxLCA1MzY2NywgNTM2ODMsIDUzNjk5LCA1MzcxNSwgNTM3MzEsIDUzNzQ3LCA1Mzc2MywgNTM3NzksIDUzNzk1LCAKLSAgICA1MzgxMSwgNTM4MjcsIDUzODQzLCA1Mzg1OSwgNTM4NzUsIDUzODkxLCA1MzkwNywgNTM5MjMsIDUzOTM5LCA1Mzk1NSwgCi0gICAgNTM5NzEsIDUzOTg3LCA1NDAwMywgNTQwMTksIDU0MDM1LCA1NDA1MSwgNTQwNjcsIDU0MDgzLCA1NDA5OSwgNTQxMTUsIAotICAgIDU0MTMxLCA1NDE0NywgNTQxNjMsIDU0MTc5LCA1NDE5NSwgNTQyMTEsIDU0MjI3LCA1NDI0MywgNTQyNTksIDU0Mjc1LCAKLSAgICA1NDI5MSwgNTQzMDcsIDU0MzIzLCA1NDMzOSwgNTQzNTUsIDU0MzcxLCA1NDM4NywgNTQ0MDMsIDU0NDE5LCA1NDQzNSwgCi0gICAgNTQ0NTEsIDU0NDY3LCA1NDQ4MywgNTQ0OTksIDU0NTE1LCA1NDUzMSwgNTQ1NDcsIDU0NTYzLCA1NDU3OSwgNTQ1OTUsIAotICAgIDU0NjExLCA1NDYyNywgNTQ2NDMsIDU0NjU5LCA1NDY3NSwgNTQ2OTEsIDU0NzA3LCA1NDcyMywgNTQ3MzksIDU0NzU1LCAKLSAgICA1NDc3MSwgNTQ3ODcsIDU0ODAzLCA1NDgxOSwgNTQ4MzUsIDU0ODUxLCA1NDg2NywgNTQ4ODMsIDU0ODk5LCA1NDkxNSwgCi0gICAgNTQ5MzEsIDU0OTQ3LCA1NDk2MywgNTQ5NzksIDU0OTk1LCA1NTAxMSwgNTUwMjcsIDU1MDQzLCA1NTA1OSwgNTUwNzUsIAotICAgIDU1MDkxLCA1NTEwNywgNTUxMjMsIDU1MTM5LCA1NTE1NSwgNTUxNzEsIDU1MTg3LCA1NTIwMywgNTUyMTksIDU1MjM1LCAKLSAgICA1NTI1MSwgNTUyNjcsIDU1MjgzLCA1NTI5OSwgNTUzMTUsIDU1MzMxLCA1NTM0NywgNTUzNjMsIDU1Mzc5LCA1NTM5NSwgCi0gICAgNTU0MTEsIDU1NDI3LCA1NTQ0MywgNTU0NTksIDU1NDc1LCA1NTQ5MSwgNTU1MDcsIDU1NTIzLCA1NTUzOSwgNTU1NTUsIAotICAgIDU1NTcwLCAxNDk2MywgNTU1NzksIDU1NTg1LCA1NTU5MSwgNTU2MDEsIDU1NjA5LCAxMzE0NCwgMTM2ODMsIDgzMTksIAotICAgIDU1NjIyLCAxNDgzLCA1NTYzMCwgMjUzODUsIDU2MzcsIDU1NjM2LCA1NTY0MSwgNTU2NDYsIDU1NjUxLCA1NTY1NiwgCi0gICAgNTU2NjIsIDU1NjY3LCA1NTY3MywgNTU2NzgsIDU1Njg0LCA1NTY4OSwgNTU2OTQsIDU1Njk5LCA1NTcwNCwgNTU3MTAsIAotICAgIDU1NzE1LCA1NTcyMCwgNTU3MjUsIDU1NzMwLCA1NTczNSwgNTU3NDAsIDU1NzQ1LCA1NTc1MSwgNTU3NTYsIDU1NzYyLCAKLSAgICA1NTc2OSwgMjUxNSwgNTU3NzQsIDU1NzgwLCA2OTQ4LCA1NTc4NCwgNTU3ODksIDU1Nzk2LCA1NTgwNCwgNDAsIDU1ODA4LCAKLSAgICA1NTgxNCwgNTU4MTksIDU1ODI0LCA1NTgyOCwgNTU4MzMsIDU1ODM3LCA1NTg0MSwgOTAzNywgNTU4NDUsIDU1ODU1LCAKLSAgICA1NTg2OCwgNTU4NzksIDU1ODkyLCA1NTg5OSwgNTU5MDUsIDU1OTEwLCA1NTkxNiwgNTU5MjIsIDU1OTI4LCA1NTkzMywgCi0gICAgNTU5MzgsIDU1OTQzLCA1NTk0OCwgNTU5NTIsIDU1OTU3LCA1NTk2MiwgNTU5NjcsIDU1OTczLCA1NTk3OSwgNTU5ODUsIAotICAgIDU1OTkwLCA1NTk5NCwgNTU5OTksIDU2MDA0LCA1NjAwOCwgNTYwMTMsIDU2MDE4LCA1NjAyMywgNTYwMjcsIDkwNTMsIAotICAgIDkwNjQsIDkwNjksIDE1MjYsIDU2MDMxLCAxNTMxLCA1NjAzNywgNTYwNDAsIDE1NjIsIDU2MDQ2LCAxNTY4LCAxNTc0LCAKLSAgICA5MDk5LCA1NjA1MSwgNTYwNTksIDU2MDY2LCA1NjA3MCwgNTYwNzYsIDU2MDgxLCAyODgyNCwgNTYwODYsIDU2MDkzLCAKLSAgICA1NjA5OCwgNTYxMDIsIDU2MTA2LCAxNTc5LCAxNDUzOCwgMTQ1NDksIDU2MTE1LCA1NjEyMiwgNTYxMjcsIDU2MTMxLCAKLSAgICAxNDU2OCwgMTU4MywgMzQ4OTcsIDU2MTM0LCA1NjEzOSwgNTYxNDksIDU2MTU4LCA1NjE2MywgNTYxNjcsIDU2MTczLCAKLSAgICAxNTg4LCAzNjcxOSwgNTYxNzgsIDU2MTg3LCA1NjE5MywgNTYxOTgsIDkyNDksIDkyNTUsIDU2MjA0LCA1NjIxNiwgNTYyMzMsIAotICAgIDU2MjUwLCA1NjI2NywgNTYyODQsIDU2MzAxLCA1NjMxOCwgNTYzMzUsIDU2MzUyLCA1NjM2OSwgNTYzODYsIDU2NDAzLCAKLSAgICA1NjQyMCwgNTY0MzcsIDU2NDU0LCA1NjQ3MSwgNTY0ODgsIDU2NTA1LCA1NjUyMiwgNTY1MzksIDU2NTU2LCA1NjU3MywgCi0gICAgNTY1OTAsIDU2NjA3LCA1NjYyNCwgNTY2NDEsIDU2NjU4LCA1NjY3NSwgNTY2OTIsIDU2NzA5LCA1NjcyNiwgNTY3NDMsIAotICAgIDU2NzYwLCA1Njc3NywgNTY3OTQsIDU2ODExLCA1NjgyOCwgNTY4NDUsIDU2ODYyLCA1Njg3OSwgNTY4OTYsIDU2OTEzLCAKLSAgICA1NjkzMCwgNTY5NDcsIDU2OTY0LCA1Njk4MSwgNTY5OTgsIDU3MDE1LCA1NzAzMiwgNTcwNDksIDU3MDYwLCA1NzA2NSwgCi0gICAgMTU5MywgNTcwNjksIDU3MDc1LCA1NzA4MCwgNzY5MywgMTU5OCwgNTcwODUsIDU3MDk0LCAyNTY2NCwgNTcwOTksIDU3MTEwLCAKLSAgICA1NzEyMCwgNTcxMjUsIDU3MTMyLCA1NzEzOCwgNTcxNDMsIDU3MTQ4LCAxNDgyMCwgNTcxNTIsIDkyNjYsIDE2MDMsIDkyNzEsIAotICAgIDU3MTU4LCA1NzE2MywgNTcxNjksIDU3MTc0LCA1NzE3OSwgNTcxODQsIDU3MTg5LCA1NzE5NCwgNTcxOTksIDU3MjA0LCAKLSAgICA1NzIxMCwgNTcyMTYsIDU3MjIyLCA1NzIyNywgNTcyMzEsIDU3MjM2LCA1NzI0MSwgNTcyNDUsIDU3MjUwLCA1NzI1NSwgCi0gICAgNTcyNjAsIDU3MjY0LCA1NzI2OSwgNTcyNzUsIDU3MjgwLCA1NzI4NSwgNTcyODksIDU3Mjk0LCA1NzI5OSwgNTczMDUsIAotICAgIDU3MzEwLCA1NzMxNSwgNTczMjEsIDU3MzI3LCA1NzMzMiwgNTczMzYsIDU3MzQxLCA1NzM0NiwgNTczNTEsIDU3MzU1LCAKLSAgICA1NzM2MCwgNTczNjUsIDU3MzcwLCA1NzM3NiwgNTczODIsIDU3Mzg3LCA1NzM5MSwgNTczOTUsIDU3NDAwLCA1NzQwNSwgCi0gICAgNTc0MTAsIDI3MDI0LCA1NzQxNCwgNTc0MTksIDU3NDI0LCA1NzQzMCwgNTc0MzUsIDU3NDQwLCA1NzQ0NCwgNTc0NDksIAotICAgIDU3NDU0LCA1NzQ2MCwgNTc0NjUsIDU3NDcwLCA1NzQ3NiwgNTc0ODIsIDU3NDg3LCA1NzQ5MSwgNTc0OTYsIDU3NTAxLCAKLSAgICA1NzUwNSwgNTc1MTAsIDU3NTE1LCA1NzUyMCwgNTc1MjYsIDU3NTMyLCA1NzUzNywgNTc1NDEsIDU3NTQ2LCA1NzU1MSwgCi0gICAgNTc1NTUsIDU3NTYwLCA1NzU2NSwgNTc1NzAsIDU3NTc0LCA1NzU3NywgMjkzOTUsIDU3NTgyLCA1NzU5MCwgMTQ4ODYsIAotICAgIDE0OTEwLCA5MzYyLCA1NzU5NiwgNTc2MDYsIDU3NjIxLCA5MzY3LCA1NzYzMiwgNTc2MzcsIDU3NjQ4LCA1NzY2MCwgCi0gICAgNTc2NzIsIDU3Njg0LCAyNjQ5LCA1NzY5NiwgNTc3MDEsIDU3NzA1LCA1NzcxMSwgNTc3MTcsIDU3NzIyLCAxNjE1LCAxMDEwLCAKLSAgICA1NzczMSwgNTc3MzYsIDM2NzU4LCA1Nzc0MCwgNTc3NDQsIDU3NzQ5LCA1Nzc1MywgMTQ5NzEsIDU3NzU4LCA1Nzc2MSwgCi0gICAgNTc3NjksIDU3Nzc3LCAxNjE5LCA5MzkyLCA5Mzk4LCAxNjI0LCA1Nzc4NSwgNTc3OTIsIDU3Nzk3LCA1NzgwNiwgNTc4MTYsIAotICAgIDU3ODIzLCA1NzgyOCwgMTYyOSwgNTc4MzUsIDU3ODQwLCAxNTA4NiwgNTc4NDQsIDU3ODQ5LCA1Nzg1NiwgNTc4NjIsIAotICAgIDU3ODY2LCA1Nzg3NywgNTc4ODcsIDE1MTA4LCA3NjE2LCA3NjIzLCAxNjM0LCA1Nzg5NCwgNTc5MDAsIDU3OTA4LCA1NzkxNSwgCi0gICAgNTc5MjEsIDU3OTI4LCA1Nzk0MCwgNTc5NDYsIDU3OTUxLCA1Nzk2MywgNTc5NzQsIDU3OTgzLCA1Nzk5MywgMzY2OCwgCi0gICAgMjg2NjAsIDI4NjY5LCAxNTE0OCwgMTYzOSwgMTY0MywgNTgwMDEsIDU4MDEyLCA1ODAxNywgMTY0NiwgNTgwMjUsIDU4MDMwLCAKLSAgICA1ODA0MiwgNTgwNDgsIDU4MDUzLCA1ODA2MSwgMTY1MSwgNTgwNjYsIDU4MDcxLCA1ODA3OSwgNTgwODcsIDU4MDk0LCAKLSAgICA1ODEwMywgNTgxMTEsIDU4MTIwLCAxNjU2LCA1ODEyNCwgMTY2MSwgNTgxMjksIDU4MTM2LCAxNTI2OCwgNTgxNDQsIAotICAgIDU4MTUwLCA1ODE1NSwgNTgxNjMsIDU4MTcwLCA1ODE3OCwgMjA2NTgsIDU4MTgzLCA5NTI3LCA1ODE5MiwgNTgxOTgsIAotICAgIDU4MjA1LCA1ODIxMiwgNTgyMTgsIDU4MjI4LCA1ODIzNCwgNTgyMzksIDU4MjQ0LCA1ODI1MiwgOTUzNiwgOTU0MSwgCi0gICAgNTgyNjAsIDU4MjY2LCA1ODI3NCwgMzczMywgMzY4NDYsIDU4Mjc5LCA1ODI4NSwgNTgyOTAsIDU4Mjk4LCA1ODMwNSwgCi0gICAgMTAzNTYsIDU4MzEwLCA1ODMxNiwgMTY3MiwgNTgzMjEsIDU4MzI0LCAxMDU4LCA1ODMzMCwgNTgzMzUsIDU4MzQwLCAKLSAgICA1ODM0NiwgNTgzNTEsIDU4MzU2LCA1ODM2MSwgNTgzNjYsIDU4MzcxLCA1ODM3NiwgMTY4MSwgOSwgNTgzODIsIDU4Mzg2LCAKLSAgICA1ODM5MSwgNTgzOTUsIDU4Mzk5LCA1ODQwMywgMjk2NDMsIDU4NDA4LCA1ODQxMywgNTg0MTgsIDU4NDIyLCA1ODQyNSwgCi0gICAgNTg0MjksIDU4NDMzLCA1ODQzOCwgNTg0NDIsIDU4NDQ3LCA1ODQ1MSwgMzIzMTUsIDMyMzIwLCAzMjMyNSwgNTg0NTQsIAotICAgIDU4NDYxLCA1ODQ2NywgMzY1ODUsIDU4NDc3LCAzMjMzMSwgMjk4OTEsIDI5NjUzLCAyOTY1OSwgMzIzNDcsIDI5NjY1LCAKLSAgICA1ODQ4MiwgNTg0ODcsIDI5OTI0LCA1ODQ5MSwgNTg0OTQsIDU4NDk4LCA1ODUwNSwgNTg1MDgsIDU4NTEzLCA1ODUxNywgCi0gICAgNTg1MjEsIDU4NTI0LCA1ODUzNCwgNTg1NDYsIDU4NTUzLCAzMTI4MiwgNTg1NTYsIDEzOTM2LCA4MjEsIDU4NTU5LCAKLSAgICA1ODU2MywgNTg1NjgsIDU4NTcyLCA1ODU3NSwgMTE5NDQsIDU4NTgyLCA1ODU4OSwgNTg2MDIsIDU4NjEwLCA1ODYxOSwgCi0gICAgNTg2MjQsIDU4NjM0LCA1ODY0NywgNTg2NTksIDU4NjY2LCA1ODY3MSwgNTg2ODAsIDU4NjkzLCAzMzczMiwgNTg3MTEsIAotICAgIDU4NzE2LCA1ODcyMywgNTg3MjksIDU4NzM0LCA1ODc0MiwgNTg3NDksIDI1MjI0LCA2MTMsIDU4NzU1LCA1ODc2MSwgCi0gICAgNTg3NzEsIDU4Nzc3LCA1ODc4MiwgMjk2ODMsIDQ0ODEsIDI5Njk3LCA1ODc4NiwgNTg3OTYsIDU4ODAxLCA1ODgxMSwgCi0gICAgNTg4MjYsIDU4ODMyLCA1ODgzOCwgMjk3MDcsIDU4ODQzLCAyODg1NiwgNTg4NDcsIDU4ODUyLCA1ODg1NywgNTg4NjEsIAotICAgIDU4ODY2LCAxNTE1MSwgNTg4NzMsIDU4ODc4LCA1ODg4MiwgNDUyMiwgMjk3MzMsIDU4ODg2LCA1ODg5MiwgMzI3LCA1ODkwMiwgCi0gICAgNTg5MDksIDU4OTE2LCA1ODkyMSwgNTg5MzAsIDU2MTQzLCA1ODkzNiwgNTg5NDQsIDU4OTQ4LCA1ODk1MiwgNTg5NTYsIAotICAgIDU4OTYwLCA1ODk2NSwgNTg5NjksIDU4OTc1LCA1ODk4MywgNTg5ODgsIDU4OTkzLCA1ODk5NywgNTkwMDIsIDU5MDA2LCAKLSAgICA1OTAxMCwgNTkwMTYsIDU5MDIyLCA1OTAyNywgNTkwMzEsIDI5ODU3LCA1OTAzNiwgMjk4NjMsIDI5ODY5LCA1OTA0MSwgCi0gICAgNTkwNDcsIDU5MDU0LCA1OTA1OSwgNTkwNjMsIDI4ODczLCAxNDgxMywgNTkwNjYsIDU5MDcwLCA1OTA3NSwgNTkwODIsIAotICAgIDU5MDg4LCA1OTA5MiwgNTkwOTcsIDM2Mjk1LCA1OTEwMywgNTkxMDcsIDU5MTExLCA1OTExNiwgNTkxMjIsIDU5MTI4LCAKLSAgICA1OTE0MCwgNTkxNDksIDU5MTU5LCA1OTE2NSwgNTkxNzIsIDU5MTc3LCA1OTE4MiwgNTkxODYsIDU5MTg5LCA1OTE5NSwgCi0gICAgNTkyMDIsIDU5MjA3LCA1OTIxMiwgNTkyMTksIDU5MjI2LCA1OTIzMiwgNTkyMzcsIDU5MjQyLCA1OTI1MCwgNTkyNTUsIAotICAgIDIzNzcsIDU5MjU5LCA1OTI2NCwgNTkyNzAsIDU5Mjc1LCA1OTI4MSwgNTkyODYsIDU5MjkxLCA1OTI5NiwgNTkzMDIsIAotICAgIDI5ODkwLCA1OTMwNywgNTkzMTMsIDU5MzE5LCA1OTMyNSwgMjk5NTQsIDU5MzMwLCA1OTMzNSwgNTkzNDAsIDI5OTY1LCAKLSAgICA1OTM0NSwgNTkzNTAsIDU5MzU1LCA1OTM2MSwgNTkzNjcsIDI5OTcwLCA1OTM3MiwgNTkzNzcsIDU5MzgyLCAzMDAyNSwgCi0gICAgMzAwMzEsIDU5Mzg3LCA1OTM5MiwgMzAwMzYsIDU5Mzk3LCAyNTg5MSwgMzAwNTgsIDMwMDYyLCA1OTQwMiwgNTkzNzgsIAotICAgIDU5NDA2LCA1OTQxNCwgNTk0MjAsIDU5NDI4LCA1OTQzNSwgNTk0NDEsIDU5NDUxLCA1OTQ1NywgNTk0NjQsIDg5ODQsIAotICAgIDMwMDc2LCA1OTQ3MCwgNTk0ODMsIDU5NDkyLCA1OTQ5OCwgNTk1MDcsIDU5NTEzLCAyMTU3NSwgNTk1MjAsIDU5NTI3LCAKLSAgICA1OTUzNywgMzAwMjYsIDU5NTQwLCA1OTU0NywgNTk1NTIsIDU5NTU2LCA1OTU2MCwgNTk1NjUsIDQ1OTgsIDU5NTY5LCAKLSAgICA1OTU3NCwgNTk1NzksIDMyNDA5LCAzMjQxNCwgNTk1ODMsIDMyNDI4LCA1OTU4OCwgMzI0MzMsIDU5NTkzLCA1OTU5OSwgCi0gICAgMzI0NDUsIDMyNDUxLCAzMjQ1NywgNTk2MDQsIDU5NjEwLCAyMDYxOSwgNTk2MjEsIDU5NjI0LCA1OTYzNiwgNTk2NDQsIAotICAgIDMwMDk0LCA1OTY0OCwgNTk2NTcsIDU5NjY3LCA1OTY3NiwgMzAwOTksIDU5NjgxLCA1OTY4OCwgNTk2OTcsIDU5NzAzLCAKLSAgICA1OTcxMSwgNTk3MTgsIDQ1NzMsIDQzMTAsIDU5NzIzLCAzMDAzNywgNTk3MjksIDU5NzMyLCA1OTczOCwgNTk3NDUsIAotICAgIDU5NzUwLCA1OTc1NSwgMjE1MDIsIDU5NzU5LCA1OTc2NSwgNTk3NzEsIDU5Nzc2LCA1OTc4MSwgNTk3ODUsIDU5NzkxLCAKLSAgICA1OTc5NywgMzExOTYsIDgyNiwgMzM0MDYsIDM0MzA0LCAzNDMxMCwgNTk4MDIsIDU5ODA2LCA1OTgxMCwgNTk4MTMsIAotICAgIDU5ODI2LCA1OTgzMiwgNTk4MzYsIDU5ODM5LCA1OTg0NCwgMzE0OTUsIDU5ODQ4LCAyODg3OCwgMTk0NDYsIDU5ODU0LCAKLSAgICA0NTAyLCA0NTEwLCA3NDcyLCA1OTg1NywgNTk4NjIsIDU5ODY3LCA1OTg3MiwgNTk4NzcsIDU5ODgyLCA1OTg4NywgNTk4OTIsIAotICAgIDU5ODk3LCA1OTkwMiwgNTk5MDgsIDU5OTEzLCA1OTkxOCwgNTk5MjQsIDU5OTI5LCA1OTkzNCwgNTk5MzksIDU5OTQ0LCAKLSAgICA1OTk0OSwgNTk5NTQsIDU5OTYwLCA1OTk2NSwgNTk5NzEsIDU5OTc2LCA1OTk4MSwgNTk5ODYsIDU5OTkxLCA1OTk5NiwgCi0gICAgNjAwMDEsIDYwMDA2LCA2MDAxMSwgNjAwMTYsIDYwMDIxLCA2MDAyNywgNjAwMzIsIDYwMDM3LCA2MDA0MiwgNjAwNDcsIAotICAgIDYwMDUyLCA2MDA1NywgNjAwNjMsIDYwMDY4LCA2MDA3MywgNjAwNzgsIDYwMDgzLCA2MDA4OCwgNjAwOTMsIDYwMDk4LCAKLSAgICA2MDEwMywgNjAxMDgsIDYwMTE0LCA2MDExOSwgNjAxMjQsIDYwMTI5LCA2MDEzNCwgNjAxNDAsIDYwMTQ2LCA2MDE1MSwgCi0gICAgNjAxNTcsIDYwMTYyLCA2MDE2NywgNjAxNzIsIDYwMTc3LCA2MDE4MiwgMTQ3NiwgMjQwLCA2MDE4NywgNjAxOTEsIDYwMTk1LCAKLSAgICA2MDE5OSwgMjMxNTcsIDYwMjAzLCA2MDIwNywgNjAyMTIsIDYwMjE2LCA2MDIyMSwgNjAyMjUsIDYwMjI5LCA2MDIzMywgCi0gICAgNjAyMzgsIDYwMjQyLCAxMTY4MSwgNjAyNDcsIDYwMjUxLCA2MDI1OCwgMTM0NDQsIDYwMjY3LCA2MDI3NiwgNjAyODAsIAotICAgIDYwMjg1LCA2MDI5MCwgNjAyOTQsIDIyOTYwLCAyOTU3LCA2MDI5OCwgNjAzMDQsIDYwMzEzLCA2MDMyMSwgNjAzMjcsIAotICAgIDYwMzM5LCA2MDM1MSwgNjAzNTUsIDYwMzYwLCA2MDM2NCwgNjAzNzAsIDYwMzc2LCA2MDM4MSwgNjAzOTEsIDYwNDAxLCAKLSAgICA2MDQwNywgNjA0MTIsIDYwNDE2LCA2MDQyMSwgNjA0MjcsIDYwNDM2LCA2MDQ0NSwgNjA0NTMsIDEzNzk4LCA2MDQ1NywgCi0gICAgNjA0NjYsIDYwNDc0LCA2MDQ4NiwgNjA0OTcsIDYwNTA4LCA2MDUxNywgNjA1MjEsIDYwNTMwLCA2MDU0MCwgNjA1NDYsIAotICAgIDYwNTUxLCA2MDU1NywgNjA1NjIsIDk4LCAyODc3MiwgNjA1NzMsIDI0MjI4LCAyNDIzOCwgNjA1NzksIDYwNTg2LCA2MDU5MiwgCi0gICAgNjA1OTYsIDYwNjA2LCA2MDYxNywgNjA2MjUsIDYwNjM0LCA2MDYzOSwgNjA2NDQsIDYwNjQ4LCAxNTUwNCwgNjA2NTYsIAotICAgIDYwNjYwLCA2MDY2NiwgNjA2NzYsIDYwNjgzLCA2MDY4OSwgMzI1MDgsIDExNjIsIDYwNjk1LCA2MDY5OCwgNjA3MDIsIAotICAgIDYwNzEyLCA2MDcxOCwgNjA3MjUsIDExNjE4LCA2MDczMiwgNjA3MzgsIDYwNzQ3LCA2MDc1NiwgNjA3NjIsIDYwNzY4LCAKLSAgICA2MDc3NCwgNjA3NzksIDYwNzg2LCA2MDc5MywgNjA3OTksIDYwODEyLCA2MDgyMSwgNjA4MzAsIDYwODM1LCA2MDgzOSwgCi0gICAgNjA4NDUsIDYwODUyLCA2MDg1OSwgNjA4NjYsIDYwODczLCA2MDg4MCwgNjA4ODUsIDYwODg5LCA2MDg5MywgNjA4OTYsIAotICAgIDYwOTA2LCA2MDkxMCwgNjA5MjIsIDYwOTMxLCA2MDkzNSwgNjA5NDAsIDYwOTQ0LCA2MDk1MCwgNjA5NTUsIDYwOTYyLCAKLSAgICA2MDk3MSwgNjA5NzksIDYwOTg3LCA2MDk5MiwgNjA5OTYsIDYxMDAxLCA2MTAwNiwgNjEwMTYsIDYxMDI0LCA2MTAyOSwgCi0gICAgNjEwMzMsIDYxMDM3LCA2MTA0MywgNjEwNTUsIDYxMDYzLCA2MTA3MywgNjEwODAsIDYxMDg2LCA2MTA5MSwgNjEwOTUsIAotICAgIDYxMDk5LCA2MTEwMywgNjExMTIsIDYxMTIxLCA2MTEzMCwgNjExMzYsIDYxMTQyLCA2MTE0OCwgNjExNTMsIDYxMTYwLCAKLSAgICA2MTE2NiwgNjExNzQsIDYxMTgxLCAxMDc3MiwgNjExODcsIDYxMTkzLCA2MTE5NywgMTI1MjMsIDYxMjAxLCA2MTIwNiwgCi0gICAgNjEyMTYsIDYxMjI1LCA2MTIzMSwgNjEyMzcsIDYxMjQ1LCA2MTI1MiwgNjEyNTYsIDYxMjYwLCA2MTI2NiwgNjEyNzQsIAotICAgIDYxMjgxLCA2MTI4NywgNjEyOTgsIDYxMzAyLCA2MTMwNiwgNjEzMTAsIDYxMzEzLCA2MTMxOSwgNjEzMjQsIDYxMzI4LCAKLSAgICA2MTMzMiwgNjEzNDEsIDYxMzQ5LCA2MTM1NiwgNjEzNjIsIDYxMzY5LCAyMjA4NywgMzYzMzcsIDYxMzc0LCA2MTM4MiwgCi0gICAgNjEzODYsIDYxMzg5LCA2MTM5NywgNjE0MDQsIDYxNDEwLCA2MTQxOSwgNjE0MjcsIDYxNDMzLCA2MTQzOCwgNjE0NDIsIAotICAgIDYxNDQ3LCA2MTQ1MSwgNjE0NTUsIDYxNDYwLCA2MTQ2OSwgNjE0NzMsIDYxNDgwLCA2MTQ4NywgNjE0OTMsIDYxNTAxLCAKLSAgICA2MTUwNywgNjE1MTgsIDYxNTI2LCA2MTUzMiwgMjA3NTMsIDYxNTQxLCA2MTU0OCwgNjE1NTUsIDYxNTYyLCA2MTU2OSwgCi0gICAgNjE1NzYsIDM5Mjg4LCAxMTQ1NiwgNjE1ODMsIDYxNTkwLCA2MTU5NSwgMzI1NDQsIDM3NDg0LCA2MTYwMSwgNjE2MDYsIAotICAgIDYxNjExLCA2MTYxNywgNjE2MjMsIDYxNjI5LCA2MTYzNCwgNjE2MzksIDYxNjQ0LCA2MTY0OSwgNjE2NTUsIDYxNjYwLCAKLSAgICA2MTY2NiwgNjE2NzEsIDYxNjc3LCA2MTY4MiwgNjE2ODcsIDYxNjkyLCA2MTY5NywgNjE3MDIsIDYxNzA3LCA2MTcxMiwgCi0gICAgNjE3MTgsIDYxNzIzLCA2MTcyOSwgNjE3MzQsIDYxNzM5LCA2MTc0NCwgNjE3NDksIDYxNzU0LCA2MTc1OSwgNjE3NjUsIAotICAgIDYxNzcwLCA2MTc3NSwgNjE3ODAsIDYxNzg1LCA2MTc5MCwgNjE3OTUsIDYxODAwLCA2MTgwNSwgNjE4MTAsIDYxODE1LCAKLSAgICA2MTgyMSwgNjE4MjYsIDYxODMxLCA2MTgzNiwgNjE4NDEsIDYxODQ2LCA2MTg1MSwgNjE4NTYsIDYxODYxLCA2MTg2NywgCi0gICAgNjE4NzIsIDYxODc3LCA2MTg4MiwgNjE4ODcsIDYxODkyLCA2MTg5NywgNjE5MDIsIDYxOTA3LCA2MTkxMiwgNjE5MTcsIAotICAgIDYxOTIyLCA2MTkyNywgNjE5MzMsIDE3OTcsIDIyNCwgMzQ5OTMsIDYxOTM4LCA2MTk0MSwgNjE5NDYsIDYxOTUwLCA2MTk1MywgCi0gICAgNjE5NTgsIDYwOTgzLCA2MTk2OSwgNjE5NzksIDYxOTg2LCA2MjAwMiwgNjIwMTEsIDYyMDIxLCA2MjAzMSwgNjIwMzksIAotICAgIDYyMDQ3LCA2MjA1MSwgNjIwNTQsIDYyMDYxLCA2MjA2NywgNjIwNzgsIDYyMDkwLCA2MjEwMSwgNjIxMTAsIDYyMTE3LCAKLSAgICAxMjg2LCAyMTM5MSwgNjIxMjcsIDI1NDQsIDYyMTMxLCA2MjE0MCwgMTEyNywgMTU0NzcsIDM1NjIyLCA2MjE0OCwgNjIxNTYsIAotICAgIDYyMTcwLCA2MjE4MywgNjIxODcsIDYyMTkyLCA2MjE5NywgNjIyMDIsIDYyMjA4LCA2MjIxNCwgNjIyMTksIDY5NTcsIAotICAgIDYyMjI0LCA2MjIzMiwgOTM5MywgNjIyMzcsIDYyMjQzLCAxNjg0LCA5NDA1LCA3MjMsIDYyMjUyLCA2MjI2MSwgNjIyNzEsIAotICAgIDI0OTkyLCA2MjI4MCwgNjIyODYsIDE1MDYzLCA2MjI5MiwgNjIyOTYsIDM4ODEsIDk3MzYsIDYyMzAyLCA1ODAwNywgCi0gICAgNjIzMDksIDM5MDUsIDE4NCwgMTI0NDQsIDYyMzE1LCA2MjMyNywgNjIzMzEsIDYyMzM3LCAyNTY4NCwgNjIzNDEsIDk3MjQsIAotICAgIDI2ODQsIDQsIDYyMzQ2LCA2MjM1NiwgNjIzNjIsIDYyMzczLCA2MjM4MCwgNjIzODYsIDYyMzkyLCA2MjQwMCwgNjI0MDcsIAotICAgIDYyNDEzLCA2MjQyMywgNjI0MzMsIDYyNDQzLCAxMjk4LCA2MjQ1MiwgNjI0NTgsIDI3MDcsIDI3MTMsIDY5NTQsIDIyMTgsIAotICAgIDYyNDYyLCA2MjQ2NiwgNjI0NzUsIDYyNDgzLCA2MjQ5NCwgNjI1MDIsIDYyNTEwLCA2MjUxNiwgNjI1MjEsIDYyNTMyLCAKLSAgICA2MjU0MywgNjI1NTEsIDYyNTU3LCA4MDYxLCA2MjU2MiwgNjI1NzAsIDYyNTc0LCA2MjU3OCwgNjI1OTAsIDI2MDYwLCAKLSAgICA2MjU5NywgNjI2MDcsIDYyNjEzLCA2MjYxOSwgODE2MywgNjI2MjksIDYyNjQwLCA2MjY1MCwgNjI2NTksIDYyNjYzLCAKLSAgICA2MjY3MCwgMTEyOSwgMjUzNywgNjI2ODAsIDYyNjg1LCA2MjY5MywgNjI3MDEsIDYyNzEyLCA2MjcxOSwgNjI3MzMsIAotICAgIDEyMzY5LCAzNzksIDYyNzQzLCA2Mjc0NywgNjI3NTYsIDYyNzY0LCA2Mjc3MCwgNjI3ODQsIDYyNzkxLCA2Mjc5NywgCi0gICAgNjI4MDYsIDYyODEzLCA2MjgyMywgNjI4MzEsIDM3NDAsIDE4OSwgNjI4MzksIDYyODUwLCA2Mjg1NCwgNjI4NjYsIDI1ODgyLCAKLSAgICAxNTYsIDYyODcyLCA2Mjg3NywgNjI4ODEsIDYyODg4LCA2Mjg5NCwgNjI5MDIsIDYyOTA5LCA3MjI2LCA2MjkxNiwgNjI5MjUsIAotICAgIDYyOTMzLCAzODA2LCA2Mjk0NiwgMTUxMDksIDYyOTUwLCAyNzUyLCA0MjgsIDYyOTU1LCA2Mjk2OCwgNjI5NzMsIDE3OTYsIAotICAgIDY0NywgNjI5NzcsIDM4MTIsIDYyOTg1LCA2Mjk5MSwgOTYzLCA2MzAwMSwgNjMwMTAsIDYzMDE1LCAxMzE3OCwgMTMxODUsIAotICAgIDQyNjIwLCA2MzAxOSwgMzc1MCwgMTEzNTAsIDYzMDI3LCA2MzAzNCwgMjE2MTgsIDYzMDM4LCA2MzA0NSwgNjMwNTEsIAotICAgIDYzMDU2LCA2MzA2MSwgMTMxOTgsIDM1NCwgNjMwNjYsIDYzMDc4LCA2MzA4NCwgNjMwOTIsIDI3NjQsIDE3MTYsIDYzMTAwLCAKLSAgICA2MzEwMiwgNjMxMDcsIDYzMTEyLCA2MzExNywgNjMxMjMsIDYzMTI4LCA2MzEzMywgNjMxMzgsIDYzMTQzLCA2MzE0OCwgCi0gICAgNjMxNTMsIDYzMTU5LCA2MzE2NCwgNjMxNjksIDYzMTc0LCA2MzE3OSwgNjMxODQsIDYzMTg5LCA2MzE5NCwgNjMxOTksIAotICAgIDYzMjA1LCA2MzIxMCwgNjMyMTUsIDYzMjIwLCA2MzIyNiwgNjMyMzEsIDYzMjM3LCA2MzI0MiwgNjMyNDcsIDYzMjUyLCAKLSAgICA2MzI1NywgNjMyNjIsIDYzMjY3LCA2MzI3MiwgNjMyNzgsIDYzMjgzLCA2MzI4OSwgNjMyOTQsIDYzMjk5LCA2MzMwNCwgCi0gICAgNjMzMDksIDYzMzE0LCA2MzMxOSwgNjMzMjQsIDYzMzI5LCA2MzMzNSwgNjMzNDAsIDYzMzQ1LCA2MzM0OSwgNjMzNTMsIAotICAgIDYzMzU4LCA2MzM2MiwgNjMzNjcsIDYzMzcyLCA2MzM3OCwgNjMzODMsIDYzMzg3LCA2MzM5MiwgNjMzOTYsIDYzMzk5LCAKLSAgICA2MzQwMSwgNjM0MDUsIDYzNDA4LCA2MzQxMywgNjM0MTcsIDYzNDIxLCA2MzQyNSwgNjM0MjksIDYzNDM4LCA2MzQ0MiwgCi0gICAgMzAyODgsIDYzNDQ1LCAzMDI5MywgNjM0NTIsIDYzNDU3LCAzMDI5OCwgNjM0NjYsIDYzNDc1LCAzMDMwNCwgNjM0ODAsIAotICAgIDMwMzA5LCA2MzQ4OSwgNjM0OTQsIDk5MTQsIDYzNDk4LCA2MzUwMywgNjM1MDgsIDMwMzE0LCA2MzUxMiwgMzc2NTAsIAotICAgIDYzNTE2LCA2MzUxOSwgNjM1MjMsIDY2MzgsIDYzNTI5LCA2MzUzNCwgNjM1MzgsIDM2MzMsIDMwMzE5LCA2MzU0MSwgCi0gICAgNjM1NDUsIDYzNTQ4LCA2MzU1MywgNjM1NTcsIDYzNTYzLCA2MzU3MSwgNjM1ODQsIDYzNTkzLCA2MzU5OSwgNjM2MDQsIAotICAgIDYzNjEwLCA2MzYxNCwgNjM2MjAsIDYzNjI4LCA2MzYzMywgNjM2NDAsIDYzNjQ2LCA2MzY1NCwgNjM2NjMsIDYzNjcxLCAKLSAgICAzMDMyMiwgNjM2NzgsIDYzNjg4LCA2MzY5NywgNjM3MTAsIDYzNzE1LCA2MzcyMCwgNjM3MjksIDYzNzM1LCA2Mzc0MiwgCi0gICAgNjM3NTMsIDYzNzY1LCA2Mzc3MiwgNjM3ODEsIDYzNzkwLCA2Mzc5OSwgNjM4MDYsIDYzODEyLCA2MzgxOSwgNjM4MjcsIAotICAgIDYzODM0LCA2Mzg0MiwgNjM4NTEsIDYzODU5LCA2Mzg2NiwgNjM4NzQsIDYzODgzLCA2Mzg5MSwgNjM5MDAsIDYzOTEwLCAKLSAgICA2MzkxOSwgNjM5MjcsIDYzOTM0LCA2Mzk0MiwgNjM5NTEsIDYzOTU5LCA2Mzk2OCwgNjM5NzgsIDYzOTg3LCA2Mzk5NSwgCi0gICAgNjQwMDQsIDY0MDE0LCA2NDAyMywgNjQwMzMsIDY0MDQ0LCA2NDA1NCwgNjQwNjMsIDY0MDcxLCA2NDA3OCwgNjQwODYsIAotICAgIDY0MDk1LCA2NDEwMywgNjQxMTIsIDY0MTIyLCA2NDEzMSwgNjQxMzksIDY0MTQ4LCA2NDE1OCwgNjQxNjcsIDY0MTc3LCAKLSAgICA2NDE4OCwgNjQxOTgsIDY0MjA3LCA2NDIxNSwgNjQyMjQsIDY0MjM0LCA2NDI0MywgNjQyNTMsIDY0MjY0LCA2NDI3NCwgCi0gICAgNjQyODMsIDY0MjkzLCA2NDMwNCwgNjQzMTQsIDY0MzI1LCA2NDMzNywgNjQzNDgsIDY0MzU4LCA2NDM2NywgNjQzNzUsIAotICAgIDY0MzgyLCA2NDM5MCwgNjQzOTksIDY0NDA3LCA2NDQxNiwgNjQ0MjYsIDY0NDM1LCA2NDQ0MywgNjQ0NTIsIDY0NDYyLCAKLSAgICA2NDQ3MSwgNjQ0ODEsIDY0NDkyLCA2NDUwMiwgNjQ1MTEsIDY0NTE5LCA2NDUyOCwgNjQ1MzgsIDY0NTQ3LCA2NDU1NywgCi0gICAgNjQ1NjgsIDY0NTc4LCA2NDU4NywgNjQ1OTcsIDY0NjA4LCA2NDYxOCwgNjQ2MjksIDY0NjQxLCA2NDY1MiwgNjQ2NjIsIAotICAgIDY0NjcxLCA2NDY3OSwgNjQ2ODgsIDY0Njk4LCA2NDcwNywgNjQ3MTcsIDY0NzI4LCA2NDczOCwgNjQ3NDcsIDY0NzU3LCAKLSAgICA2NDc2OCwgNjQ3NzgsIDY0Nzg5LCA2NDgwMSwgNjQ4MTIsIDY0ODIyLCA2NDgzMSwgNjQ4NDEsIDY0ODUyLCA2NDg2MiwgCi0gICAgNjQ4NzMsIDY0ODg1LCA2NDg5NiwgNjQ5MDYsIDY0OTE3LCA2NDkyOSwgNjQ5NDAsIDY0OTUyLCA2NDk2NSwgNjQ5NzcsIAotICAgIDY0OTg4LCA2NDk5OCwgNjUwMDcsIDY1MDE1LCA2NTAyMiwgNjUwMzAsIDY1MDM5LCA2NTA0NywgNjUwNTYsIDY1MDY2LCAKLSAgICA2NTA3NSwgNjUwODMsIDY1MDkyLCA2NTEwMiwgNjUxMTEsIDY1MTIxLCA2NTEzMiwgNjUxNDIsIDY1MTUxLCA2NTE1OSwgCi0gICAgNjUxNjgsIDY1MTc4LCA2NTE4NywgNjUxOTcsIDY1MjA4LCA2NTIxOCwgNjUyMjcsIDY1MjM3LCA2NTI0OCwgNjUyNTgsIAotICAgIDY1MjY5LCA2NTI4MSwgNjUyOTIsIDY1MzAyLCA2NTMxMSwgNjUzMTksIDY1MzI4LCA2NTMzOCwgNjUzNDcsIDY1MzU3LCAKLSAgICA2NTM2OCwgNjUzNzgsIDY1Mzg3LCA2NTM5NywgNjU0MDgsIDY1NDE4LCA2NTQyOSwgNjU0NDEsIDY1NDUyLCA2NTQ2MiwgCi0gICAgNjU0NzEsIDY1NDgxLCA2NTQ5MiwgNjU1MDIsIDY1NTEzLCA2NTUyNSwgNjU1MzYsIDY1NTQ2LCA2NTU1NywgNjU1NjksIAotICAgIDY1NTgwLCA2NTU5MiwgNjU2MDUsIDY1NjE3LCA2NTYyOCwgNjU2MzgsIDY1NjQ3LCA2NTY1NSwgNjU2NjQsIDY1Njc0LCAKLSAgICA2NTY4MywgNjU2OTMsIDY1NzA0LCA2NTcxNCwgNjU3MjMsIDY1NzMzLCA2NTc0NCwgNjU3NTQsIDY1NzY1LCA2NTc3NywgCi0gICAgNjU3ODgsIDY1Nzk4LCA2NTgwNywgNjU4MTcsIDY1ODI4LCA2NTgzOCwgNjU4NDksIDY1ODYxLCA2NTg3MiwgNjU4ODIsIAotICAgIDY1ODkzLCA2NTkwNSwgNjU5MTYsIDY1OTI4LCA2NTk0MSwgNjU5NTMsIDY1OTY0LCA2NTk3NCwgNjU5ODMsIDY1OTkzLCAKLSAgICA2NjAwNCwgNjYwMTQsIDY2MDI1LCA2NjAzNywgNjYwNDgsIDY2MDU4LCA2NjA2OSwgNjYwODEsIDY2MDkyLCA2NjEwNCwgCi0gICAgNjYxMTcsIDY2MTI5LCA2NjE0MCwgNjYxNTAsIDY2MTYxLCA2NjE3MywgNjYxODQsIDY2MTk2LCA2NjIwOSwgNjYyMjEsIAotICAgIDY2MjMyLCA2NjI0NCwgNjYyNTcsIDY2MjY5LCA2NjI4MiwgNjYyOTYsIDY2MzA5LCA2NjMyMSwgNjYzMzIsIDY2MzQyLCAKLSAgICA2NjM1MSwgNjYzNTksIDY2MzY2LCA2NjM3MSwgNjQ4OSwgNjYzNzgsIDMwMzMyLCA2NjM4MywgNjYzODgsIDMwMzM3LCAKLSAgICA2NjM5NCwgMTkxMDAsIDMwMzQyLCA2NjM5OSwgNjY0MDUsIDY2NDEzLCA2NjQxOSwgNjY0MjUsIDY2NDMyLCA2NjQzOSwgCi0gICAgNjY0NDQsIDY2NDQ4LCA2NjQ1MSwgNjY0NTUsIDY2NDY0LCA2NjQ3MCwgNjY0ODIsIDY2NDkzLCA2NjQ5NywgMzAxOSwgCi0gICAgNjQ2NCwgNjY1MDIsIDY2NTA1LCA2NjUwNywgNjY1MTEsIDY2NTE1LCA2NjUxOSwgMjM5MjcsIDY2NTI0LCA2NjUyOCwgCi0gICAgNjY1MzEsIDY2NTM2LCA2NjU0MCwgNjY1NDcsIDY2NTUzLCA2NjU1NywgNjY1NjEsIDY2NTY0LCAzMDM1OSwgNjY1NjksIAotICAgIDY2NTc2LCA2NjU4NSwgNjY1OTMsIDY2NjA0LCA2NjYxMiwgNjY2MjAsIDY2NjI3LCA2NjYzNCwgNjY2NDAsIDY2NjUxLCAKLSAgICAzMDM2NCwgNjY2NTYsIDY2NjY3LCA2NjY3OSwgNjY2ODcsIDY2Njk4LCA2NjcwNywgNjY3MTgsIDY2NzIzLCA2NjczMSwgCi0gICAgMjUxMCwgNjY3MzYsIDMyMDAyLCA2Njc0OSwgNjY3NTMsIDY2NzY1LCA2Njc3MywgNjY3NzgsIDY2Nzg2LCAxNTY2NCwgCi0gICAgNjY3OTcsIDY2ODAzLCA2NjgxMCwgNjY4MTgsIDY2ODI0LCAzMDM3NCwgNjY4MjksIDM4MzEsIDU1NjA1LCA2NjgzNiwgCi0gICAgNjY4MzksIDY2ODQ3LCA2Njg2MCwgNjY4NzMsIDY2ODg2LCA2Njg5OSwgNjY5MDYsIDY2OTE3LCA2NjkyNiwgMzkxMDUsIAotICAgIDM5MTEwLCA2NjkzMSwgNjY5MzUsIDY2OTQzLCA2Njk1MCwgNjY5NTksIDY2OTY3LCA2Njk3MywgNjY5ODIsIDY2OTkwLCAKLSAgICA2Njk5OCwgNjcwMDIsIDY3MDExLCA2NzAyMCwgNjcwMzAsIDY3MDQzLCA2NzA1NiwgNjcwNjYsIDMwMzc5LCA2NzA3MiwgCi0gICAgNjcwNzksIDY3MDg1LCAzMDM4NSwgNjcwOTAsIDY3MDkzLCA2NzA5NywgNjcxMDUsIDY3MTE0LCAzODg0MywgNjcxMjIsIAotICAgIDY3MTMxLCA2NzEzOSwgNjcxNDYsIDY3MTU0LCA2NzE2NCwgNjcxNzMsIDY3MTgyLCA2NzE5MSwgNjcxOTksIDY3MjEwLCAKLSAgICA2NzIyMCwgNzczMywgMTk3MTUsIDY3MjI5LCA2NzIzNCwgNjcyMzksIDY3MjQzLCA2NzI0NywgNjcyNTIsIDY3MjU4LCAKLSAgICA2NzI2MywgNjcyNjgsIDY3Mjc0LCA2NzI3OSwgNjcyODQsIDE5NjgwLCA2NzI4OSwgNjcyOTYsIDY3MzA0LCA2NzMxMiwgCi0gICAgNjczMTcsIDY3MzI0LCA2NzMzMSwgNjczMzUsIDY3MzM5LCA2NzM0NywgNjczNTUsIDMwNDAyLCA2NzM2MSwgNjczNjcsIAotICAgIDY3Mzc5LCA2NzM4NSwgNjczODksIDY3Mzk2LCA2NzQwMSwgNjc0MTIsIDY3NDIyLCA2NzQzMiwgNjc0NDQsIDY3NDUwLCAKLSAgICA2NzQ2MCwgNjc0NzAsIDMwNDI5LCA2NzQ3OSwgNjc0ODgsIDY3NDk0LCA2NzUwNiwgNjc1MTcsIDY3NTI0LCA2NzUyOSwgCi0gICAgNjc1MzMsIDY3NTQxLCA2NzU0NywgNjc1NTIsIDY3NTU3LCA2NzU2NCwgNjc1NzIsIDY3NTg0LCA2NzU5NCwgNjc2MDMsIAotICAgIDY3NjEyLCA2NzYxOSwgMzE4NjYsIDIxOTA2LCA2NzYyNSwgNjc2MzAsIDY3NjM0LCA2NzYzOCwgNjc2NDMsIDY3NjQ5LCAKLSAgICA2NzY2MCwgNjc2NzMsIDY3Njc4LCA2NzY4NSwgMzA0MzQsIDY3NjkwLCA2NzcwMiwgNjc3MTEsIDY3NzIxLCA2NzczMiwgCi0gICAgNjc3NDUsIDY3NzUyLCA2Nzc2MSwgNjc3NzAsIDY3Nzc4LCA2Nzc4MywgNjc3ODksIDE0NjUsIDY3Nzk0LCA2Nzc5OSwgCi0gICAgNjc4MDQsIDY3ODA5LCA2NzgxNSwgNjc4MjAsIDY3ODI1LCA2NzgzMSwgNjc4MzcsIDY3ODQyLCA2Nzg0NiwgNjc4NTEsIAotICAgIDY3ODU2LCA2Nzg2MSwgNTYxMTEsIDY3ODY2LCA2Nzg3MSwgNjc4NzYsIDY3ODgxLCA2Nzg4NywgNjc4OTMsIDY3ODk4LCAKLSAgICA2NzkwMiwgNjc5MDcsIDY3OTEyLCA2NzkxNywgNjc5MjMsIDY3OTI4LCA2NzkzNCwgNjc5MzksIDY3OTQ0LCA2Nzk0OSwgCi0gICAgNjc5NTQsIDY3OTU4LCA2Nzk2NCwgNjc5NjksIDY3OTc4LCA2Nzk4MywgNjc5ODgsIDY3OTkzLCA2Nzk5OCwgNjgwMDIsIAotICAgIDY4MDA5LCA2ODAxNSwgMTUzMjYsIDE1MzMzLCA0Mjg3NSwgNjgwMjAsIDY3OTcwLCA2ODAyMiwgNjgwMzIsIDMwNDQzLCAKLSAgICA2ODAzNSwgNjgwNDQsIDY4MDUwLCA0NjE3LCAzMDQ0OCwgNjgwNTQsIDY4MDYwLCA2ODA2NiwgNjgwNzEsIDY4MDc1LCAKLSAgICA2ODA4MiwgNjgwODcsIDY4MDk3LCA2ODEwNiwgNjgxMTAsIDY4MTE2LCA2ODEyMiwgNjgxMjgsIDY4MTMyLCA2ODE0MCwgCi0gICAgNjgxNDcsIDY4MTU1LCA2ODE2MywgMzA0NTMsIDY4MTcwLCA2ODE3MywgNjgxODAsIDY4MTg2LCA2ODE5MSwgNjgxOTUsIAotICAgIDY4MjAxLCA2ODIwOCwgNjgyMTMsIDY4MjE3LCA2ODIyNiwgNjgyMzQsIDY4MjQwLCA2ODI0NSwgMzA0NTgsIDY4MjUyLCAKLSAgICA2ODI1OSwgNjgyNjUsIDY4MjcwLCA2ODI3NiwgNjgyODMsIDY4Mjg5LCAxOTQ1MywgMjU0MDgsIDY4Mjk1LCA2ODMwMCwgCi0gICAgNjgzMDYsIDY4MzE4LCA2ODAwMywgNjgwMTAsIDY4MzI4LCA2ODMzMywgNjgzNDAsIDY4MzQ3LCA2ODM1MywgNjgzNjQsIAotICAgIDY4MzY5LCA3NTAyLCA2ODM3NywgNjgzODAsIDY4Mzg2LCA2ODM5MCwgNjgzOTQsIDY4Mzk3LCA2ODQwMywgMzAyMDcsIAotICAgIDQ2NTYsIDkxMywgMTE3MzEsIDY4NDEwLCA2ODQxNiwgNjg0MjIsIDY4NDI4LCA2ODQzNCwgNjg0NDAsIDY4NDQ2LCA2ODQ1MiwgCi0gICAgNjg0NTgsIDY4NDYzLCA2ODQ2OCwgNjg0NzMsIDY4NDc4LCA2ODQ4MywgNjg0ODgsIDY4NDkzLCA2ODQ5OCwgNjg1MDMsIAotICAgIDY4NTA4LCA2ODUxMywgNjg1MTgsIDY4NTIzLCA2ODUyOSwgNjg1MzQsIDY4NTM5LCA2ODU0NSwgNjg1NTAsIDY4NTU1LCAKLSAgICA2ODU2MSwgNjg1NjcsIDY4NTczLCA2ODU3OSwgNjg1ODUsIDY4NTkxLCA2ODU5NywgNjg2MDMsIDY4NjA5LCA2ODYxNCwgCi0gICAgNjg2MTksIDY4NjI1LCA2ODYzMCwgNjg2MzUsIDY4NjQxLCA2ODY0NiwgNjg2NTEsIDY4NjU2LCA2ODY2MSwgNjg2NjYsIAotICAgIDY4NjcxLCA2ODY3NiwgNjg2ODEsIDY4Njg2LCA2ODY5MSwgNjg2OTYsIDY4NzAxLCA2ODcwNywgNjg3MTIsIDY4NzE3LCAKLSAgICA2ODcyMiwgNjg3MjgsIDY4NzMzLCA2ODczOCwgNjg3NDMsIDY4NzQ4LCA2ODc1NCwgNjg3NTksIDY4NzY0LCA2ODc2OSwgCi0gICAgNjg3NzQsIDY4Nzc5LCA2ODc4NCwgNjg3ODksIDY4Nzk0LCA2ODc5OSwgNjg4MDQsIDY4ODA5LCA2ODgxNCwgNjg4MTksIAotICAgIDY4ODI0LCA2ODgyOSwgNjg4MzQsIDY4ODM5LCA2ODg0NCwgNjg4NDksIDY4ODU1LCA2ODg2MCwgNjg4NjUsIDY4ODcwLCAKLSAgICA2ODg3NSwgNjg4ODAsIDY4ODg1LCA2ODg5MCwgMTgyNywgMTQzLCA2ODg5NSwgNjg4OTksIDY4OTAzLCA2ODkwOCwgNjg5MTYsIAotICAgIDY4OTIwLCA2ODkyNywgNjg5MzUsIDY4OTM5LCA2ODk1MiwgNjg5NjAsIDY4OTY0LCA2ODk2NywgNjg5NzIsIDY4OTc2LCAKLSAgICA2ODk4MSwgNjg5ODUsIDY4OTkzLCA2ODk5NywgMTkxMDgsIDY5MDAyLCA1ODI3MCwgNjkwMDYsIDY5MDA5LCA2OTAxNywgCi0gICAgNjkwMjUsIDY5MDMzLCA2OTAzOCwgNjkwNDUsIDY5MDUxLCA2OTA1NywgNjkwNjIsIDY5MDY3LCA2OTA3NSwgNjIxNzUsIAotICAgIDY5MDgyLCA2OTA4NywgNjkwOTIsIDY5MDk2LCA5OTgxLCA2OTEwMCwgNjkxMDUsIDY5MTEwLCA2OTExNCwgNjkxMTcsIAotICAgIDY5MTIzLCA2OTEyNywgNjkxMzcsIDY5MTQ2LCA2OTE0OSwgNjkxNTYsIDY5MTY5LCA2OTE3NSwgNjkxODMsIDY5MTk0LCAKLSAgICA2OTIwNSwgNjkyMTYsIDY5MjI3LCA2OTIzNiwgNjkyNDIsIDY5MjUxLCA2OTI1OSwgNjkyNjksIDY5MjgyLCA2OTI4OSwgCi0gICAgNjkzMDAsIDY5MzA2LCA2OTMxMSwgNjkzMTYsIDY5MzIyLCA2OTMyOCwgNjkzMzgsIDY5MzQ3LCA2NzY5MiwgNjkzNTUsIAotICAgIDY5MzYxLCA2OTM2OSwgNjkzNzUsIDY5MzgzLCA2OTM4NywgNjkzOTEsIDY5Mzk0LCA2OTQwMCwgNjk0MDYsIDY5NDE0LCAKLSAgICA2OTQyNiwgNjk0MzgsIDY5NDQ1LCA2OTQ0OSwgNjk0NjAsIDY5NDY4LCA2OTQ3NSwgNjk0ODcsIDY5NDk1LCA2OTUwMywgCi0gICAgNjk1MTAsIDY5NTE2LCA2OTUyNiwgNjk1MzUsIDY5NTQwLCA2OTU1MCwgNjk1NTksIDM4MTg0LCA2OTU2NiwgNjk1NzAsIAotICAgIDY5NTc1LCA2OTU4MywgNjk1OTAsIDY5NTk2LCA2OTYwMCwgNjk2MTAsIDY5NjIxLCA2OTYyOSwgNjk2MzYsIDY5NjQ4LCAKLSAgICA2OTY2MCwgNjk2NjksIDY2NzM5LCA2OTY3NiwgNjk2ODcsIDY5NzAxLCA2OTcwOSwgNjk3MTksIDY5NzI2LCA2OTczNCwgCi0gICAgNjk3NDYsIDY5NzU1LCA2OTc2MywgNjk3NzMsIDY5NzgyLCA2OTc5MywgNjk4MDUsIDY5ODE0LCA2OTgyNCwgNjk4MzEsIAotICAgIDY5ODQwLCA2OTg1NSwgNjk4NjUsIDY5ODc0LCA2OTg4MiwgNjk4OTUsIDY5OTEwLCA2OTkxNCwgNjk5MjMsIDY5OTM1LCAKLSAgICA2OTk0NiwgNjk5NTcsIDY5OTY4LCA2OTk3OCwgNjk5ODksIDY5OTk3LCA3MDAwMywgNzAwMTMsIDcwMDE5LCAyNjkyMywgCi0gICAgNzAwMjQsIDcwMDMwLCA3MDAzNSwgNzAwNDIsIDgwNzUsIDE1Njg0LCA3MDA0OCwgNzAwNTcsIDcwMDYyLCA3MDA2NiwgCi0gICAgNzAwNzMsIDcwMDc5LCA3MDA4NCwgNzAwOTIsIDcwMTAwLCA3MDEwNCwgNzAxMDcsIDcwMTEwLCA3MDExMiwgNzAxMTksIAotICAgIDcwMTI1LCA3MDEzNiwgNzAxNDEsIDcwMTQ1LCA3MDE1MiwgNzAxNTgsIDcwMTYzLCA3MDE3MSwgNjI2NDIsIDYyNjUyLCAKLSAgICA3MDE3NywgNzAxODQsIDcwMTk0LCA4OTcxLCA3MDIwMSwgNzAyMDYsIDI3MTEzLCA3MDIxNSwgNzAyMjAsIDcwMjI3LCAKLSAgICA3MDIzNywgNzAyNDUsIDcwMjUzLCA3MDI2MiwgNzAyNjgsIDcwMjc0LCA3MDI4MSwgNzAyODgsIDcwMjkzLCA3MDI5NywgCi0gICAgNzAzMDUsIDcwMzEwLCA3MDMxNSwgNzAzMjMsIDcwMzMwLCA3MDMzNSwgNzAzNDEsIDcwMzQ0LCA3MDM0OCwgNzAzNTcsIAotICAgIDY4OTQ3LCA3MDM2NiwgNzAzNzAsIDcwMzc2LCA3MDM4NywgNzAzOTcsIDE1NjkzLCA3MDQwOCwgNzA0MTYsIDE1NzA1LCAKLSAgICA3MDQyMywgNzA0MjcsIDcwNDM2LCAyNTI5NCwgNzA0NDMsIDcwNDQ3LCA3MDQ1MiwgNzA0NjksIDcwNDgxLCA4OTI1LCAKLSAgICA3MDQ5MywgNzA0OTgsIDcwNTAzLCA3MDUwOCwgNzA1MTIsIDcwNTE1LCA3MDUyMCwgNzA1MjUsIDcwNTMxLCA3MDUzNiwgCi0gICAgNDMyNCwgMTkxODEsIDcwNTQxLCA3MDU0NiwgNzA1NTIsIDcwNTU5LCA3MDU2NCwgNzA1NjksIDcwNTc1LCA3MDU4MSwgCi0gICAgNzA1ODcsIDcwNTkyLCA3MDU5OCwgNzA2MDIsIDcwNjE2LCA3MDYyNCwgNzA2MzIsIDcwNjM4LCA3MDY0MywgNzA2NTAsIAotICAgIDcwNjYwLCA3MDY2OSwgNzA2NzQsIDcwNjc5LCA3MDY4NywgNzA2OTIsIDcwNjk4LCA3MDcwMywgNzA3MTIsIDU3MTU0LCAKLSAgICA3MDcxNywgNzA3MjAsIDcwNzM4LCA3MDc1NywgNzA3NzAsIDcwNzg0LCA3MDgwMCwgNzA4MDcsIDcwODE0LCA3MDgyMCwgCi0gICAgNzA4MjcsIDcwODMyLCA3MDgzOCwgNzA4NDQsIDcwODUyLCA3MDg1OCwgNzA4NjMsIDcwODY4LCA3MDg4NCwgODkzOCwgCi0gICAgNzA4OTgsIDcwOTA1LCA3MDkxMywgNzA5MTksIDcwOTIzLCA3MDkyNiwgNzA5MzEsIDcwOTM2LCA3MDk0MywgNzA5NDgsIAotICAgIDcwOTU3LCA3MDk2MiwgNzA5NjgsIDcwOTc3LCA3MDk4NiwgNzA5OTEsIDcwOTk1LCA3MTAwMywgMTAwMDUsIDcxMDEyLCAKLSAgICA3MTAyMCwgNzEwMjUsIDcxMDMxLCAxMDAxNiwgNzEwMzYsIDcxMDM5LCA3MTA0NCwgNzEwNTQsIDcxMDYzLCA3MTA2OCwgCi0gICAgNzEwNzQsIDcxMDc5LCA3MTA4NywgNzEwOTQsIDcxMTA1LCA3MTExNSwgNzExMjAsIDYyMTAzLCA3MTEyNSwgNzExMzEsIAotICAgIDcxMTM2LCA3MTE0MywgNzExNTIsIDcxMTYwLCA3MTE2NiwgNzExNzMsIDcxMTc5LCA3MTE4MywgMTUxNjEsIDI5OTMsIAotICAgIDcxMTg4LCA3MTE5MiwgNzExOTgsIDcxMjA3LCA3MTIxMywgNzEyMjAsIDcxMjI0LCA3MTI0NSwgNzEyNjcsIDcxMjgzLCAKLSAgICA3MTMwMCwgNzEzMTksIDcxMzI4LCA3MTMzOCwgNzEzNDUsIDcxMzUyLCAyNTE4MSwgNzEzNTgsIDcxMzYyLCA3MTM3MCwgCi0gICAgNzEzODIsIDcxMzg4LCA3MTM5NiwgNzE0MDAsIDcxNDA4LCA3MTQxNSwgNzE0MTksIDcxNDI1LCA3MTQzMSwgNzE0MzYsIAotICAgIDM0OTgsIDM5MzA1LCA3MTQ0MiwgNzE0NDYsIDcxNDUwLCA3MTQ1NCwgNzE0NTksIDcxNDY0LCA3MTQ2OSwgNzE0NzUsIAotICAgIDcxNDgxLCA3MTQ4NywgNzE0OTQsIDcxNTAwLCA3MTUwNywgNzE1MTMsIDcxNTE5LCA3MTUyNCwgNzE1MzAsIDcxNTM1LCAKLSAgICA3MTU0MCwgNzE1NDQsIDcxNTQ5LCAzOTMyMCwgNzE1NTMsIDcxNTU4LCA3MTU2NiwgNzE1NzAsIDcxNTc1LCA3MTU4MiwgCi0gICAgNzE1OTEsIDcxNTk3LCA3MTYwNCwgNzE2MDgsIDcxNjExLCA3MTYxOCwgNzE2MjcsIDcxNjMyLCA3MTYzNiwgNzE2NDQsIAotICAgIDcxNjUzLCA3MTY1NywgNzE2NjUsIDcxNjcxLCA3MTY3NiwgNzE2ODEsIDcxNjg3LCA3MTY5MywgNzE2OTgsIDcxNzAyLCAKLSAgICA3MTcwOCwgNzE3MTMsIDcxNzE3LCA3MTcyMSwgNzE3MjQsIDcxNzI5LCA3MTczNywgNzE3NDcsIDcxNzUyLCAzNjg2NSwgCi0gICAgNzE3NjAsIDcxNzcyLCA3MTc3NiwgNzE3ODIsIDcxNzk0LCA3MTgwNSwgNzE4MTIsIDcxODE4LCA3MTgyNSwgNzE4MzcsIAotICAgIDcxODQ0LCA3MTg1MCwgMTkyNTUsIDcxODU0LCA3MTg2MCwgNzE4NjcsIDcxODczLCA3MTg3OSwgNzE4ODQsIDcxODg5LCAKLSAgICA3MTg5NCwgNzE5MDMsIDU0OTEsIDcxOTA4LCAxNDYyNywgNzE5MTQsIDcxOTE4LCA3MTkyNiwgNzE5MzUsIDcxOTM5LCAKLSAgICA3MTk0NiwgNzE5NTUsIDcxOTY4LCA3MTk3NCwgNzE1NDUsIDI3OTYyLCA3MTk3OSwgNzE5ODEsIDcxOTg2LCA3MTk5MSwgCi0gICAgNzE5OTYsIDcyMDAxLCA3MjAwNiwgNzIwMTEsIDcyMDE2LCA3MjAyMSwgNzIwMjYsIDcyMDMxLCA3MjAzNiwgNzIwNDEsIAotICAgIDcyMDQ2LCA3MjA1MSwgNzIwNTcsIDcyMDYyLCA3MjA2NywgNzIwNzIsIDcyMDc3LCA3MjA4MiwgNzIwODcsIDcyMDkyLCAKLSAgICA3MjA5NywgNzIxMDMsIDcyMTA5LCA3MjExNSwgNzIxMjAsIDcyMTI1LCA3MjEzNywgNzIxNDIsIDE4MzMsIDY3LCA3MjE0NywgCi0gICAgNzIxNTIsIDMwNDg1LCAzMDQ5MCwgMzA0OTUsIDMwNTAxLCAzMDUwNiwgNzIxNTYsIDMwNTExLCAyMDIyNiwgNzIxNzgsIAotICAgIDcyMTgyLCA3MjE4NiwgNzIxOTEsIDcyMTk1LCAzMDUxNSwgNzIxOTksIDcyMjA3LCAzMDUyMCwgNzIyMTQsIDcyMjE3LCAKLSAgICA3MjIyMiwgNzIyMjYsIDc5MTAsIDcyMjM1LCAzMDUyNSwgMjAwOTIsIDcyMjM4LCA3MjI0MiwgMTM5NiwgNzIyNDcsIAotICAgIDMwNTM2LCA3MjI1MCwgNzIyNTUsIDIzNzIwLCAyMzczMCwgMzI5NDAsIDcyMjYwLCA3MjI2NSwgNzIyNzAsIDcyMjc1LCAKLSAgICA3MjI4MSwgNzIyODYsIDcyMjk1LCA3MjMwMCwgNzIzMDcsIDcyMzEzLCA3MjMxOCwgNzIzMjMsIDcyMzI4LCA3MjMzOCwgCi0gICAgNzIzNDcsIDcyMzUyLCA3MjM2MCwgNzIzNjQsIDcyMzcyLCAzMDM1MCwgMTE4OCwgNzIzNzksIDcyMzg1LCA3MjM5MCwgCi0gICAgNzIzOTUsIDcyNDAwLCA3MjQwNiwgNzI0MTEsIDcyNDE4LCA3MjQyNCwgNzI0MjksIDcyNDM3LCA3MjQ0NywgNzI0NTcsIAotICAgIDcyNDYzLCA3MjQ2OCwgNzI0NzQsIDE1NzE1LCA3MjQ4MSwgMzM3NDUsIDcyNDk0LCA3MjQ5OSwgNzI1MDUsIDcyNTE4LCAKLSAgICA3MjUyNCwgNzI1MjgsIDcyNTM3LCA3MjU0NCwgNzI1NTAsIDcyNTU4LCA3MjU2NywgNzI1NzQsIDcyNTgwLCA3MjU4MywgCi0gICAgMjM4NjEsIDcyNTg3LCA3MjU5NCwgNzI2MDAsIDcyNjA4LCA3MjYxMywgMjIwMzUsIDcyNjE5LCA3MjYyMiwgNzI2MzAsIAotICAgIDcyNjM4LCA3MjY1MiwgNzI2NTksIDcyNjY1LCA3MjY3MiwgNzI2NzgsIDMwNTUwLCA3MjY4MiwgNzI2ODksIDcyNjk3LCAKLSAgICA3MjcwNSwgMzA1NTUsIDcyNzExLCA3MjcxNywgNzI3MjIsIDcyNzMyLCA3MjczOCwgNzI3NDcsIDI4Njc3LCAzMjQxNSwgCi0gICAgNzI3NTUsIDcyNzYwLCA3Mjc2NSwgNzI3NzAsIDcyNzc0LCAxMzE3MCwgMzY4NzgsIDcyNzc5LCA3Mjc4NCwgMzA1NjAsIAotICAgIDU5NTU0LCA3Mjc4OCwgNzI3OTMsIDcyNzk3LCA3MjgwNiwgNzI4MTQsIDcyODIwLCA3MjgyNSwgNzI4MzEsIDcyODM4LCAKLSAgICA3Mjg0NCwgNzI4NDksIDcyODU0LCA3Mjg2MywgNzI4NzUsIDcyODkwLCAzMDgwMSwgNzI4OTYsIDE0NzQ2LCAzMDU2NCwgCi0gICAgNzI5MDAsIDcyOTA3LCAyMjE0NSwgNzI5MTMsIDcyOTIwLCA3MjkyOSwgNzI5MzYsIDcyOTQ1LCA3Mjk1MSwgNzI5NTYsIAotICAgIDcyOTY0LCA3Mjk3MCwgMzA1NzQsIDcyOTc1LCA3Mjk4NCwgNzE4MDAsIDcyOTkzLCA3MzAwMCwgNzMwMDYsIDczMDEyLCAKLSAgICA3MzAyMiwgNzMwMzAsIDczMDM3LCA3MzA0MSwgMzA1NzksIDczMDQ0LCAzMDU4NSwgMzA1OTEsIDczMDQ5LCA3MzA1NywgCi0gICAgNzMwNjcsIDczMDc2LCA3MzA4NCwgNzMwOTEsIDczMTAxLCAzMDU5NiwgNzMxMDUsIDczMTA3LCA3MzExMSwgNzMxMTYsIAotICAgIDczMTIwLCA3MzEyNCwgNzMxMzAsIDczMTM1LCA3MzEzOSwgNzMxNTAsIDczMTU1LCAyOTk4LCA3MzE1OSwgNzMxNjYsIAotICAgIDczMTcwLCA3MzE3OSwgNzMxODcsIDczMTk0LCA3MzE5OSwgNzMyMDQsIDU5NjAwLCA3MzIwOCwgNzMyMTEsIDczMjE3LCAKLSAgICA3MzIyNSwgNzMyMzEsIDczMjM1LCA3MzI0MCwgNzMyNDcsIDczMjUyLCA3MzI1OCwgMzI0NDYsIDczMjYzLCA3MzI2NiwgCi0gICAgNzMyNzEsIDczMjc1LCA3MzI4MCwgNzMyODUsIDczMjg5LCA3MzI5NywgMjM3MzksIDIzNzQ4LCA3MzMwMywgNzMzMDksIAotICAgIDczMzE1LCA3MzMyMCwgNzMzMjQsIDczMzI3LCA3MzMzNywgNzMzNDYsIDczMzUxLCA3MzM1NywgNzMzNjQsIDczMzcwLCAKLSAgICA3MzM3NCwgNzMzODIsIDczMzg3LCAzMjQ1MiwgNzMzOTEsIDczMzk5LCA3MzQwNSwgNzM0MTIsIDczNDE3LCA3MzQyMSwgCi0gICAgNzM0MjYsIDU1NzkxLCAzMjQ1OCwgNzM0MzIsIDczNDM3LCA3MzQ0MSwgNzM0NDYsIDczNDUxLCA3MzQ1NiwgNzM0NjAsIAotICAgIDczNDY1LCA3MzQ3MCwgNzM0NzYsIDczNDgxLCA3MzQ4NiwgNzM0OTIsIDczNDk4LCA3MzUwMywgNzM1MDcsIDczNTEyLCAKLSAgICA3MzUxNywgNzM1MjIsIDczNTI2LCAyMjE0NCwgNzM1MzEsIDczNTM2LCA3MzU0MiwgNzM1NDgsIDczNTU0LCA3MzU1OSwgCi0gICAgNzM1NjMsIDczNTY4LCA3MzU3MywgNzM1NzgsIDczNTgyLCA3MzU4NywgNzM1OTIsIDczNTk3LCA3MzYwMiwgNzM2MDYsIAotICAgIDMwNjAwLCA3MzYxNCwgNzM2MTgsIDczNjI2LCA3MzYzNCwgNzM2NDUsIDczNjUwLCA3MzY1NCwgMjA0OTcsIDczNjU5LCAKLSAgICA3MzY2NSwgNzM2NzUsIDczNjgyLCA3MzY4NywgNzM2OTYsIDczNzAxLCA3MzcwNSwgNzM3MTAsIDczNzE4LCA3MzcyNiwgCi0gICAgNzM3MzMsIDYyMzIxLCA3MzczOSwgNzM3NDcsIDczNzU0LCA3Mzc2NSwgNzM3NzEsIDczNzc3LCAzMDYxMCwgNzM3ODAsIAotICAgIDczNzg3LCA3Mzc5NSwgNzM4MDAsIDM3MDY5LCA3MzgwNCwgNzM4MDksIDczODE2LCA3MzgyMSwgNzM4OSwgNzM4MjUsIAotICAgIDczODMzLCA3Mzg0MCwgNzM4NDcsIDczODUzLCA3Mzg2NywgNjA2MjksIDczODc1LCA3Mzg4MSwgNzM4ODUsIDczODg4LCAKLSAgICA3Mzg5NiwgNzM5MDMsIDczOTA4LCA3MzkyMSwgNzM5MjgsIDczOTM1LCA3Mzk0MCwgNTgxNzQsIDczOTQ1LCA3Mzk0OCwgCi0gICAgNzM5NTUsIDczOTYxLCA3Mzk2NSwgNzM5NzMsIDczOTgzLCA3Mzk5MywgNzQwMDIsIDc0MDEwLCA3NDAyMSwgNzQwMjYsIAotICAgIDc0MDMwLCA3NDAzNSwgNzQwMzksIDMzMDcxLCAxOTUwOSwgMzMwODAsIDc0MDQ3LCA3NDA1MiwgNzQwNTcsIDc0MDYyLCAKLSAgICA3NDA2NywgNzQwNzIsIDc0MDc3LCA3NDA4MSwgNzQwODYsIDc0MDkxLCA3NDA5NiwgNzQxMDEsIDc0MTA2LCA3NDExMSwgCi0gICAgNzQxMTUsIDc0MTIwLCA3NDEyNSwgNzQxMjksIDc0MTMzLCA3NDEzNywgNzQxNDEsIDc0MTQ2LCA3NDE1MSwgNzQxNTUsIAotICAgIDc0MTYwLCA3NDE2NCwgNzQxNjgsIDc0MTczLCA3NDE3OCwgNzQxODMsIDc0MTg4LCA3NDE5MiwgNzQxOTcsIDc0MjAyLCAKLSAgICA3NDIwNiwgNzQyMTEsIDc0MjE2LCA3NDIyMSwgNzQyMjYsIDc0MjMxLCA3NDIzNiwgNzQyNDEsIDc0MjQ2LCA3NDI1MSwgCi0gICAgNzQyNTYsIDc0MjYxLCA3NDI2NiwgNzQyNzEsIDc0Mjc2LCA3NDI4MSwgNzQyODYsIDc0MjkxLCA3NDI5NiwgNzQzMDEsIAotICAgIDc0MzA2LCA3NDMxMCwgNzQzMTUsIDc0MzIwLCA3NDMyNSwgNzQzMzAsIDc0MzM1LCA3NDM0MCwgNzQzNDUsIDc0MzUwLCAKLSAgICA3NDM1NSwgNzQzNjAsIDc0MzY1LCA3NDM2OSwgNzQzNzQsIDc0Mzc4LCA3NDM4MywgNzQzODgsIDc0MzkzLCA3NDM5OCwgCi0gICAgNzQ0MDMsIDc0NDA4LCA3NDQxMywgNzQ0MTgsIDc0NDIzLCA3NDQyNywgNzQ0MzEsIDc0NDM2LCA3NDQ0MSwgNzQ0NDUsIAotICAgIDc0NDUwLCA3NDQ1NSwgNzQ0NTksIDc0NDY0LCA3NDQ2OSwgNzQ0NzQsIDc0NDc5LCA3NDQ4MywgNzQ0ODgsIDc0NDkzLCAKLSAgICA3NDQ5NywgNzQ1MDIsIDc0NTA2LCA3NDUxMCwgNzQ1MTQsIDc0NTE4LCA3NDUyMywgNzQ1MjcsIDc0NTMxLCA3NDUzNSwgCi0gICAgNzQ1MzksIDc0NTQzLCA3NDU0NywgNzQ1NTEsIDc0NTU1LCA3NDU1OSwgNzQ1NjQsIDc0NTY5LCA3NDU3NCwgNzQ1NzksIAotICAgIDc0NTg0LCA3NDU4OSwgNzQ1OTQsIDc0NTk5LCA3NDYwNCwgNzQ2MDksIDc0NjEzLCA3NDYxNywgNzQ2MjEsIDc0NjI1LCAKLSAgICA3NDYyOSwgNzQ2MzMsIDc0NjM4LCA3NDY0MiwgNzQ2NDcsIDc0NjUxLCA3NDY1NiwgNzQ2NjEsIDc0NjY1LCA3NDY2OSwgCi0gICAgNzQ2NzQsIDc0Njc4LCA3NDY4MiwgNzQ2ODYsIDc0NjkwLCA3NDY5NCwgNzQ2OTgsIDc0NzAyLCA3NDcwNiwgNzQ3MTAsIAotICAgIDc0NzE0LCA3NDcxOCwgNzQ3MjIsIDc0NzI2LCA3NDczMCwgNzQ3MzUsIDc0NzQwLCA3NDc0NCwgNzQ3NDgsIDc0NzUyLCAKLSAgICA3NDc1NiwgNzQ3NjAsIDc0NzY0LCA3NDc2OSwgNzQ3NzMsIDc0Nzc3LCA3NDc4MSwgNzQ3ODUsIDc0Nzg5LCA3NDc5MywgCi0gICAgNzQ3OTgsIDc0ODAyLCA3NDgwNywgNzQ4MTEsIDc0ODE1LCA3NDgxOSwgNzQ4MjMsIDc0ODI3LCA3NDgzMSwgNzQ4MzUsIAotICAgIDc0ODM5LCA3NDg0MywgNzQ4NDcsIDc0ODUxLCA3NDg1NiwgNzQ4NjAsIDc0ODY0LCA3NDg2OCwgNzQ4NzIsIDc0ODc2LCAKLSAgICA3NDg4MCwgNzQ4ODQsIDc0ODg4LCA3NDg5MiwgNzQ4OTYsIDc0OTAwLCA3NDkwNSwgNzQ5MDksIDc0OTEzLCA3NDkxOCwgCi0gICAgNzQ5MjMsIDc0OTI3LCA3NDkzMSwgNzQ5MzUsIDc0OTM5LCA3NDk0MywgNzQ5NDcsIDc0OTUxLCA3NDk1NSwgNzQ5NjAsIAotICAgIDc0OTY0LCA3NDk2OSwgNzQ5NzMsIDc0OTc4LCA3NDk4MiwgNzQ5ODcsIDc0OTkxLCA3NDk5NywgNzUwMDIsIDc1MDA2LCAKLSAgICA3NTAxMSwgNzUwMTUsIDc1MDIwLCA3NTAyNCwgNzUwMjksIDc1MDMzLCA3NTAzOCwgMTQ4NCwgNzUwNDIsIDI3NzgsIDE3MjIsIAotICAgIDE3MjcsIDc1MDQ2LCA3NTA1MCwgMjc4MiwgNzUwNTQsIDEzNjUsIDc1MDU5LCAxMzMxLCA3NTA2MywgMjc5NCwgNzUwNjcsIAotICAgIDc1MDc0LCA3NTA4MSwgNzUwOTUsIDI3OTgsIDU1ODksIDc1MTA0LCA3NTExMiwgNzUxMTksIDc1MTMwLCA3NTEzOSwgCi0gICAgNzUxNDYsIDc1MTU4LCA3NTE3MSwgNzUxODQsIDc1MTk1LCA3NTIwMCwgNzUyMDcsIDc1MjE5LCA3NTIyMywgMzkxOCwgCi0gICAgMTAwODIsIDc1MjMzLCA3NTIzOCwgNzUyNDcsIDc1MjU3LCAyODAyLCA3NTI2MiwgNzUyNjYsIDc1MjcxLCA3NTI3OCwgCi0gICAgNzUyODQsIDc1MjkyLCA3NTMwNCwgMTMzNiwgMTEzNTEsIDc1MzE0LCA3NTMxOCwgNzUzMjQsIDc1MzM4LCA3NTM1MCwgCi0gICAgNzUzNjIsIDc1MzcyLCA3NTM4MSwgNzUzOTAsIDc1Mzk5LCA3NTQwNywgNzU0MTgsIDc1NDI2LCAzOTY4LCA3NTQzNiwgCi0gICAgNzU0NDUsIDc1NDUxLCA3NTQ2NiwgNzU0NzMsIDc1NDc5LCAzMzE5NywgNzU0ODQsIDI4MjYsIDExMzU1LCA3NTQ4OCwgCi0gICAgNzU0OTUsIDczMzQsIDc1NTA0LCAyODMxLCAzMDEwNSwgNzU1MTAsIDU3OTIzLCA3NTUxNywgNzU1MjMsIDc1NTM0LCAKLSAgICA3NTU0MCwgNzU1NDcsIDc1NTUzLCA3NTU2MSwgNzU1NjgsIDc1NTc0LCA3NTU4NCwgNzU1OTMsIDc1NjA0LCA3NTYxMSwgCi0gICAgNzU2MTcsIDc1NjI3LCA3NTYzNSwgNzU2NDEsIDc1NjU2LCA3NTY2MiwgNzU2NjcsIDc1Njc0LCA3NTY3NywgNzU2ODMsIAotICAgIDc1NjkwLCA3NTY5NiwgNzU3MDQsIDc1NzEzLCA3NTcyMSwgNzU3MjcsIDc1NzM2LCAzODg0NSwgNzU3NTAsIDc1NzU1LCAKLSAgICAxMzAwNywgNzU3NjEsIDc1Nzc0LCA3NTc4MywgNzU3OTEsIDc1Nzk4LCA3NTgwMiwgNzU4MDYsIDc1ODA5LCA3NTgxNiwgCi0gICAgNzU4MjMsIDc1ODMxLCA3NTgzOSwgNzU4NDgsIDc1ODU2LCAxMjk0MywgNzU4NjQsIDc1ODY5LCA3NTg3MywgNzU4ODUsIAotICAgIDc1ODkyLCA3NTkwMSwgNzgwLCA3NTkxMSwgNzU5MjAsIDc1OTMxLCAyODQ3LCA3NTkzNSwgNzU5MzksIDc1OTQ1LCA3NTk1OCwgCi0gICAgNzU5NzAsIDc1OTgwLCA3NTk4OSwgMjQzMzEsIDc2MDAxLCA3NjAwOSwgNzYwMTgsIDc2MDI5LCA3NjA0MCwgNzYwNTAsIAotICAgIDc2MDYwLCA3NjA2OSwgNzYwNzcsIDk2NTcsIDc2MDg0LCA3NjA4OCwgNzYwOTMsIDc2MDk4LCA3NjEwNCwgMTM0MSwgCi0gICAgMTAxNTMsIDc2MTExLCA3NjEyMiwgNzYxMzEsIDc2MTM5LCA3NjE0OCwgNzYxNTYsIDc2MTcyLCA3NjE4MywgNzYxOTIsIAotICAgIDc2MjAwLCA3NjIxMiwgNzYyMjMsIDc2MjM5LCA3NjI0OSwgNzYyNzAsIDc2MjgzLCA3NjI5MSwgNzYyOTgsIDEzMTE4LCAKLSAgICA3NjMxMSwgNzYzMTYsIDc2MzIyLCA0Mzg2LCA3NjMyOCwgNzYzMzEsIDc2MzM4LCA3NjM0OCwgNjYwNywgNzYzNTUsIAotICAgIDc2MzYwLCA3NjM2NSwgNzYzNzMsIDc2MzgxLCA4MTIzLCA4MTMyLCA3NjM4NiwgNzYzOTcsIDc2NDAyLCA3NjQwOCwgMjg1NSwgCi0gICAgMjg2MCwgNzY0MTQsIDkyMjQsIDc2NDIwLCA3NjQyNywgNzY0MzQsIDc2NDQ3LCAyMjA1LCA1MCwgNzY0NTIsIDc2NDU3LCAKLSAgICA3NjQ2NywgNzY0NzMsIDc2NDgyLCA3NjQ5MCwgNzY1MDAsIDc2NTA0LCA3NjUwOSwgNzY1MTMsIDc2NTI1LCAyODgzLCAKLSAgICA3NjUzMywgNzY1NDEsIDc2NTQ2LCA3NjU1NywgNzY1NjgsIDc2NTc3LCA3NjU4MiwgNzY1ODgsIDc2NTkzLCA3NjYwMywgCi0gICAgNzY2MTMsIDc2NjE4LCA3NjYyNCwgNzY2MjksIDc2NjM4LCAxOTU2MiwgNzY2NDIsIDQwNDUsIDEyLCA3NjY0NywgNzY2NTYsIAotICAgIDc2NjYzLCA3NjY3MCwgNzY2NzYsIDc2NjgyLCA4MjcsIDc2Njg3LCA3NjY5MiwgNTgyNDAsIDc2Njk3LCA3NjcwMiwgCi0gICAgNzY3MDgsIDc2NzE2LCA3NjcyMSwgNzY3MjgsIDc2NzM0LCA3NjczOSwgMzU1NzMsIDM4NzQzLCA3Njc0NSwgMjg4NywgMzIsIAotICAgIDc2NzU1LCA3Njc2OCwgNzY3NzMsIDc2NzgxLCA3Njc4NiwgNzY3OTIsIDI5MDksIDI2MjM0LCA3Njc5NywgNzY4MDUsIAotICAgIDc2ODEyLCA3NjgxNywgNTYwMzMsIDU5MjIxLCA3NjgyNiwgMTY2NywgMTc3NiwgNzY4MzEsIDc2ODM2LCA3Njg0MywgMTc4MCwgCi0gICAgMjQyLCA3Njg1MCwgNzY4NTYsIDc2ODYxLCA3Njg2OCwgMTc4NCwgNzY4NzMsIDc2ODc5LCA3Njg4NCwgNzY4OTYsIDQ1OTcsIAotICAgIDc2OTA2LCAxNzkxLCA3NjkxMiwgNzY5MTcsIDc2OTI0LCA3NjkzMSwgNzY5NDYsIDc2OTUzLCA3Njk2NCwgNzY5NzIsIAotICAgIDI1NzIsIDc2OTc2LCA3Njk4OCwgNzY5OTMsIDc2OTk3LCA3NzAwMywgMjYwNTksIDIyMTAsIDc3MDA3LCA3NzAxOCwgCi0gICAgNzcwMjIsIDc3MDI2LCA3NzAzMiwgNzcwMzYsIDc3MDQ1LCA3NzA0OSwgNzcwNjAsIDc3MDY0LCAyMjU2LCAyOTk0NCwgCi0gICAgNzcwNjgsIDc3MDc4LCAzMDE4LCA3NzM4LCA3NzA4NiwgNzcwOTEsIDc3MDk1LCA3NzEwNCwgNzcxMTEsIDc3MTE3LCAyOTg4LCAKLSAgICAxNTM0MywgNzcxMjEsIDc3MTM0LCA3NzE1MiwgNzcxNTcsIDc3MTY1LCA3NzE3MywgNzcxODMsIDExNDU3LCA3NzE5NSwgCi0gICAgNzcyMDgsIDc3MjE1LCA3NzIyMiwgNzcyMzgsIDc3MjQ1LCA3NzI1MSwgMTAyNCwgNzcyNTgsIDc3MjY1LCA3NzI3NSwgCi0gICAgNzcyODQsIDc3Mjk2LCAzOTcwOSwgNzczMDQsIDMwMDIsIDEwMzUwLCA3NzMwNywgNzczMTUsIDc3MzE5LCAzMDA2LCAKLSAgICA3NzMyMywgMTkzNTgsIDEwMzY2LCAzNjg0LCA3NzMyNywgMzAxMiwgNzczMzEsIDc3MzQxLCA3NzM0NywgNzczNTMsIAotICAgIDc3MzU5LCA3NzM2NSwgNzczNzEsIDc3Mzc3LCA3NzM4MywgNzczODksIDc3Mzk1LCA3NzQwMSwgNzc0MDcsIDc3NDEzLCAKLSAgICA3NzQxOSwgNzc0MjUsIDc3NDMxLCA3NzQzNywgNzc0NDMsIDc3NDQ5LCA3NzQ1NSwgNzc0NjEsIDc3NDY3LCA3NzQ3MywgCi0gICAgNzc0NzksIDc3NDg1LCA3NzQ5MSwgNzc0OTgsIDc3NTA1LCA3NzUxMSwgNzc1MTcsIDc3NTIzLCA3NzUyOSwgNzc1MzUsIAotICAgIDc3NTQxLCAxMzQ2LCAxNDI3MCwgMTAzODgsIDc3NTQ3LCA3NzU1MiwgNzc1NTcsIDc3NTYyLCA3NzU2NywgNzc1NzIsIAotICAgIDc3NTc3LCA3NzU4MiwgNzc1ODcsIDc3NTkyLCA3NzU5NywgNzc2MDIsIDc3NjA3LCA3NzYxMiwgNzc2MTcsIDc3NjIyLCAKLSAgICA3NzYyNywgNzc2MzIsIDc3NjM3LCA3NzY0MiwgNzc2NDcsIDc3NjUyLCA3NzY1NywgNzc2NjIsIDc3NjY3LCA3NzY3MiwgCi0gICAgNzc2NzgsIDc3NjgzLCA3NzY4OCwgNzc2OTQsIDc3Njk5LCA3NzcwNSwgNzc3MTAsIDc3NzE1LCA3NzcyMSwgNzc3MjYsIAotICAgIDc3NzMxLCA3NzczNiwgNzc3NDEsIDc3NzQ2LCA3Nzc1MSwgNzc3NTYsIDc3NzYxLCA3NzM0MiwgNzczNDgsIDc3MzU0LCAKLSAgICA3NzM2MCwgNzczNjYsIDc3MzcyLCA3NzM3OCwgNzczODQsIDc3MzkwLCA3NzM5NiwgNzc0MDIsIDc3NDA4LCA3NzQxNCwgCi0gICAgNzc0MjAsIDc3NDI2LCA3Nzc2NywgNzc0MzIsIDc3NDM4LCA3NzQ0NCwgNzc3NzMsIDc3NDUwLCA3NzQ1NiwgNzc0NjIsIAotICAgIDc3NDY4LCA3NzQ3NCwgNzc0ODAsIDc3NDg2LCA3NzUwNiwgNzc3NzksIDc3Nzg1LCA3NzUxMiwgNzc3OTEsIDc3NTE4LCAKLSAgICA3NzUyNCwgNzc1MzAsIDc3NTM2LCA3NzU0MiwgMzAzMywgMzAzOCwgNzc3OTcsIDc3ODAyLCA3NzgwNSwgNzc4MTEsIAotICAgIDc3ODE3LCA3NzgyNCwgNzc4MjksIDc3ODM0LCAyMjYxLCAKKyAgICAwLCAwLCA2LCAxMCwgMTgsIDIzLCAyNywgMzQsIDM5LCA0MSwgNDQsIDUwLCA2MiwgNzAsIDgwLCA5MywgMTAyLCAxMDgsIAorICAgIDExMywgMTIxLCAxMzAsIDEzNSwgMTQwLCAxNDMsIDE0NywgMTUzLCAxNTgsIDE2MywgMTcxLCAxNzgsIDE4NiwgMTkxLCAKKyAgICAxOTQsIDIwMCwgMjA4LCAyMTUsIDIyNSwgMjMwLCAyMzcsIDI0NiwgMjQ5LCAyNTQsIDI1NywgMjYzLCAyNjcsIDI3MiwgCisgICAgMjgxLCAyODgsIDI5NSwgMzAxLCAzMTAsIDMxNSwgMzIxLCAzMjcsIDMzNSwgMTQ0LCAzNDEsIDM0OSwgMzUwLCAzNTgsIAorICAgIDM2MSwgMzY3LCAzNjksIDM3NSwgMzgyLCAzODQsIDM5MSwgMzk1LCA0MDMsIDQxMCwgNDE1LCA0MTcsIDQyMiwgNDI5LCAKKyAgICA0MzEsIDI5OSwgNDM3LCA0MzksIDQ0NCwgNDQ5LCA0NTIsIDQ1NywgNDYzLCA0NzAsIDQ3OSwgNDg5LCA0OTQsIDQ5OCwgCisgICAgNTA1LCA1MTgsIDUyMiwgNTMxLCA1MzgsIDU0NSwgNTQ4LCA1NTQsIDU1OCwgNTYyLCA1NzIsIDU4MCwgNTg4LCA1OTYsIAorICAgIDYwNSwgNjEzLCA2MTgsIDYxOSwgNjIzLCA2MzEsIDYzOCwgNjQ4LCA2NTksIDY2MywgNjY2LCA2NzAsIDY3MywgMzQ4LCAKKyAgICA2NzgsIDY4NywgNjkxLCA2OTcsIDcwMywgNzA1LCA3MDgsIDcxMSwgNzE0LCA3MTgsIDcyMiwgNzMxLCA3MzksIDc0NCwgCisgICAgNzQ3LCA3NTEsIDc1NywgNzY0LCA3NzEsIDc3NiwgNzg1LCA3OTQsIDgwMSwgODA1LCA4MTgsIDgyNywgODM1LCA4NDEsIAorICAgIDU1NywgODUwLCA4NjAsIDg2NywgODczLCA4NzksIDg4NiwgODk0LCA4OTgsIDc0OSwgOTA2LCA5MTUsIDUwMywgOTIzLCAKKyAgICA5MjgsIDkzNCwgMTcsIDk0MywgOTQ4LCA5NTEsIDk1NSwgOTU5LCA5NjYsIDk2OSwgOTc2LCA5ODAsIDk4OCwgOTkyLCAKKyAgICAxMDAwLCAxMDA0LCAxMDA3LCAxMDE0LCAxMDIxLCAxOTIsIDEwMjQsIDEwMjksIDEwMzksIDEwNDgsIDEwNTUsIDEwNjEsIAorICAgIDEwNjksIDEwNzIsIDEwNzcsIDEwODMsIDEwOTEsIDEwOTcsIDExMDIsIDExMDUsIDExMDgsIDExMSwgMTExMywgMTExNywgCisgICAgMTEyMywgMTEyOSwgMTEzMiwgMTEzOCwgMTE0MiwgMTE0NywgMTE1MywgMTE1OCwgMTE2OCwgMTE3MiwgMTE3NSwgMTE3OCwgCisgICAgMTE4NywgMTE5MSwgMTE5NCwgMTE5OSwgMTIwNCwgMTIxMCwgMTIxNSwgMTIyMCwgMTIyNSwgMTIyOSwgMTIzNCwgMTI0MCwgCisgICAgMTI0NSwgMTI1MCwgMTI1NCwgMTI2MCwgMTI2NSwgMTI3MCwgMTI3NSwgMTI3OSwgMTI4NCwgMTI4OSwgMTI5NCwgMTMwMCwgCisgICAgMTMwNiwgMTMxMiwgMTMxNywgMTMyMSwgMTMyNiwgMTMzMSwgMTMzNiwgMTM0MCwgMTM0NSwgMTM1MCwgMTM1NSwgMTM2MCwgCisgICAgMTE5NSwgMTIwMCwgMTIwNSwgMTIxMSwgMTIxNiwgMTM2NCwgMTIyNiwgMTM3MCwgMTM3NSwgMTM4MCwgMTM4NywgMTM5MSwgCisgICAgMTQwMCwgMTIzMCwgMTQwNCwgMTIzNSwgMTI0MSwgMTI0NiwgMTQwOCwgMTQxMywgMTQxOCwgMTQyMiwgMTQyNiwgMTQzMiwgCisgICAgMTQzNiwgMTI1MSwgMTQzOSwgMTI2MSwgMTQ0NCwgMTQ0OCwgMTI2NiwgMTQ1NCwgMTI3MSwgMTQ1OCwgMTQ2MiwgMTI3NiwgCisgICAgMTQ2NiwgMTQ3MSwgMTQ3NSwgMTQ3OCwgMTQ4MiwgMTI4MCwgMTI4NSwgMTQ4NywgMTI5MCwgMTQ5MywgMTQ5OSwgMTUwNSwgCisgICAgMTUxMSwgMTI5NSwgMTMwNywgMTMxMywgMTUxNSwgMTUxOSwgMTUyMywgMTUyNiwgMTMxOCwgMTUzMCwgMTUzMiwgMTUzNywgCisgICAgMTU0MiwgMTU0OCwgMTU1MywgMTU1OCwgMTU2MiwgMTU2NywgMTU3MiwgMTU3NywgMTU4MiwgMTU4OCwgMTU5MywgMTU5OCwgCisgICAgMTYwNCwgMTYxMCwgMTYxNSwgMTYxOSwgMTYyNCwgMTYyOSwgMTYzNCwgMTYzOSwgMTY0MywgMTY1MSwgMTY1NSwgMTY2MCwgCisgICAgMTY2NSwgMTY3MCwgMTY3NSwgMTY3OSwgMTY4MiwgMTY4NywgMTY5MiwgMTY5NywgMTcwMiwgMTcwOCwgMTcxMywgMTcxNywgCisgICAgMTMyMiwgMTcyMCwgMTcyNSwgMTczMCwgMTMyNywgMTczNCwgMTczOCwgMTc0NSwgMTMzMiwgMTc1MiwgMTMzNywgMTc1NiwgCisgICAgMTc1OCwgMTc2MywgMTc2OSwgMTM0MSwgMTc3NCwgMTc4MywgMTM0NiwgMTc4OCwgMTc5NCwgMTM1MSwgMTc5OSwgMTgwNCwgCisgICAgMTgwNywgMTgxMiwgMTgxNiwgMTgyMCwgMTgyNCwgMTgyNywgMTgzMSwgMTM1NiwgMTM2MSwgMTE1NiwgMTgzNiwgMTg0MiwgCisgICAgMTg0OCwgMTg1NCwgMTg2MCwgMTg2NiwgMTg3MiwgMTg3OCwgMTg4NCwgMTg4OSwgMTg5NSwgMTkwMSwgMTkwNywgMTkxMywgCisgICAgMTkxOSwgMTkyNSwgMTkzMSwgMTkzNywgMTk0MywgMTk0OCwgMTk1MywgMTk1OCwgMTk2MywgMTk2OCwgMTk3MywgMTk3OCwgCisgICAgMTk4MywgMTk4OCwgMTk5MywgMTk5OSwgMjAwNCwgMjAxMCwgMjAxNSwgMjAyMSwgMjAyNywgMjAzMiwgMjAzOCwgMjA0NCwgCisgICAgMjA1MCwgMjA1NiwgMjA2MSwgMjA2NiwgMjA2OCwgMjA2OSwgMjA3MywgMjA3NywgMjA4MiwgMjA4NiwgMjA5MCwgMjA5NCwgCisgICAgMjA5OSwgMjEwMywgMjEwNiwgMjExMSwgMjExNSwgMjEyMCwgMjEyNCwgMjEyOCwgMjEzMywgMjEzNywgMjE0MCwgMjE0NCwgCisgICAgMjE1MCwgMjE2NCwgMjE2OCwgMjE3MiwgMjE3NiwgMjE3OSwgMjE4NCwgMjE4OCwgMjE5MiwgMjE5NSwgMjE5OSwgMjIwNCwgCisgICAgMjIwOSwgMjIxNCwgMjIxOSwgMjIyMywgMjIyNywgMjIzMSwgMjIzNiwgMjI0MCwgMjI0NSwgMjI0OSwgMjI1NCwgMjI2MCwgCisgICAgMjI2NywgMjI3MywgMjI3OCwgMjI4MywgMjI4OCwgMjI5NCwgMjI5OSwgMjMwNSwgMjMxMCwgMjMxMywgMTIxMiwgMjMxNSwgCisgICAgMjMyMiwgMjMzMCwgMjM0MCwgMjM0OSwgMjM2MywgMjM2NywgMjM3MSwgMjM4NCwgMjM5MiwgMjM5NiwgMjQwMSwgMjQwNSwgCisgICAgMjQwOCwgMjQxMiwgMjQxNiwgMjQyMSwgMjQyNiwgMjQzMSwgMjQzNSwgMjQzOCwgMjQ0MiwgMjQ0OSwgMjQ1NiwgMjQ2MiwgCisgICAgMjQ2NywgMjQ3MiwgMjQ3OCwgMjQ4NCwgMjQ4OSwgMjQ5MiwgMTc2MCwgMjQ5NCwgMjUwMCwgMjUwNCwgMjUwOSwgMjUxMywgCisgICAgMjUxNywgMTc2NSwgMTc3MSwgMjUyMiwgMjUyNiwgMjUyOSwgMjUzNCwgMjUzOSwgMjU0NCwgMjU0OSwgMjU1MywgMjU2MCwgCisgICAgMjU2NSwgMjU2OCwgMjU3NSwgMjU4MSwgMjU4NSwgMjU4OSwgMjU5MywgMjU5OCwgMjYwNSwgMjYxMCwgMjYxNSwgMjYyMiwgCisgICAgMjYyOCwgMjYzNCwgMjY0MCwgMjY1NCwgMjY3MSwgMjY4NiwgMjcwMSwgMjcxMCwgMjcxNSwgMjcxOSwgMjcyNCwgMjcyOSwgCisgICAgMjczMywgMjc0NSwgMjc1MiwgMjc1OCwgMjI2MywgMjc2NCwgMjc3MSwgMjc3NywgMjc4MSwgMjc4NCwgMjc5MSwgMjc5NywgCisgICAgMjgwMSwgMjgwNSwgMjgwOSwgMjA5MSwgMjgxMywgMjgxOCwgMjgyMywgMjgyNywgMjgzNSwgMjgzOSwgMjg0MywgMjg0NywgCisgICAgMjg1MSwgMjg1NiwgMjg2MSwgMjg2NiwgMjg3MCwgMjg3NSwgMjg4MCwgMjg4NCwgMjg4OSwgMjg5MywgMjg5NiwgMjkwMCwgCisgICAgMjkwNCwgMjkxMiwgMjkxNywgMjkyMSwgMjkyNSwgMjkzMSwgMjk0MCwgMjk0NCwgMjk0OCwgMjk1NCwgMjk1OSwgMjk2NiwgCisgICAgMjk3MCwgMjk4MCwgMjk4NCwgMjk4OCwgMjk5MywgMjk5NywgMzAwMiwgMzAwOCwgMzAxMywgMzAxNywgMzAyMSwgMzAyNSwgCisgICAgMjQ1MiwgMzAzMywgMzAzOCwgMzA0NCwgMzA0OSwgMzA1MywgMzA1OCwgMzA2MywgMzA2NywgMzA3MywgMzA3OCwgMjA5NSwgCisgICAgMzA4NCwgMzA5MCwgMzA5NSwgMzEwMCwgMzEwNSwgMzExMCwgMzExNSwgMzEyMCwgMzEyNSwgMzEzMCwgMzEzNSwgMzE0MSwgCisgICAgMzE0NiwgMTIyNywgOTIsIDMxNTIsIDMxNTYsIDMxNjAsIDMxNjQsIDMxNjksIDMxNzMsIDMxNzcsIDMxODEsIDMxODUsIAorICAgIDMxOTAsIDMxOTQsIDMxOTksIDMyMDMsIDMyMDYsIDMyMTAsIDMyMTUsIDMyMTksIDMyMjQsIDMyMjgsIDMyMzIsIDMyMzYsIAorICAgIDMyNDEsIDMyNDUsIDMyNDgsIDMyNjEsIDMyNjUsIDMyNjksIDMyNzMsIDMyNzcsIDMyODEsIDMyODQsIDMyODgsIDMyOTIsIAorICAgIDMyOTcsIDMzMDEsIDMzMDYsIDMzMTEsIDMzMTYsIDMzMjAsIDMzMjMsIDMzMjYsIDMzMzIsIDMzMzYsIDMzNDAsIDMzNDMsIAorICAgIDMzNDcsIDMzNTEsIDMzNTQsIDMzNjAsIDMzNjUsIDMzNzAsIDMzNzYsIDMzODEsIDMzODYsIDMzOTIsIDMzOTgsIDM0MDMsIAorICAgIDM0MDgsIDM0MTMsIDExMTUsIDU0NywgMzQxOCwgMzQyMSwgMzQyNiwgMzQzMCwgMzQzMywgMzQzNywgMzQ0MiwgMzQ0NywgCisgICAgMzQ1MSwgMzQ1NiwgMzQ2MCwgMzQ2NSwgMzQ2OSwgMzQ3MywgMzQ3OSwgMzQ4NSwgMzQ4OCwgMzQ5MSwgMzQ5NywgMzUwNCwgCisgICAgMzUxMSwgMzUxNywgMzUyNCwgMzUyOSwgMzUzMywgMzU0MCwgMzU0NywgMzU1MiwgMzU1NiwgMzU2NiwgMzU3MCwgMzU3NCwgCisgICAgMzU3OSwgMzU4NCwgMzU5NCwgMjEwNywgMzU5OSwgMzYwMywgMzYwNiwgMzYxMiwgMzYxNywgMzYyMywgMzYyOSwgMzYzNCwgCisgICAgMzY0MSwgMzY0NSwgMzY0OSwgNjIwLCA2NzEsIDEzODgsIDM2NTMsIDM2NjAsIDM2NjcsIDM2NzQsIDM2ODEsIDM2ODcsIAorICAgIDM2OTMsIDM2OTgsIDM3MDIsIDM3MDgsIDM3MTMsIDM3MTcsIDIxMTYsIDM3MjEsIDM3MjksIDYwMCwgMzczNSwgMzc0NiwgCisgICAgMzc1MCwgMzc2MCwgMjEyMSwgMzc2NiwgMzc3MSwgMzc4NiwgMzc5MiwgMzc5OSwgMzgwOSwgMzgxNSwgMzgyMCwgMzgyNiwgCisgICAgMzgzMiwgMzgzNSwgMzgzOSwgMzg0NCwgMzg1MSwgMzg1NiwgMzg2MCwgMzg2NCwgMzg2OCwgMzg3MiwgMzg3NywgMzg4MywgCisgICAgMzg5NCwgMzIxMSwgMzg5OSwgMzkxMSwgMzkxOSwgMzkyNCwgMTU2NCwgMzkzMSwgMzkzNCwgMzkzNywgMzk0MSwgMzk0NCwgCisgICAgMzk1MCwgMzk1NCwgMzk2OCwgMzk3MiwgMzk3NSwgMzk3OSwgMzk4NSwgMzk5MSwgMzk5NiwgNDAwMCwgNDAwNCwgNDAxMCwgCisgICAgNDAyMSwgNDAyNywgNDAzMiwgNDAzOCwgNDA0MiwgNDA1MCwgNDA2MCwgNDA2NiwgNDA3MSwgNDA4MCwgNDA4OCwgNDA5NSwgCisgICAgNDA5OSwgNDEwNSwgNDExNCwgNDEyMywgNDEyNywgNDEzMiwgNDEzNywgNDE0MSwgNDE0OSwgNDE1MywgNDE1OCwgNDE2MiwgCisgICAgMjEyOSwgMTQwMSwgNDE2OCwgNDE3MywgNDE3OSwgNDE4NCwgNDE4OSwgNDE5NCwgNDE5OSwgNDIwNCwgNDIwOSwgNDIxNSwgCisgICAgNDIyMCwgNDIyNiwgNDIzMSwgNDIzNiwgNDI0MSwgNDI0NywgNDI1MiwgNDI1NywgNDI2MiwgNDI2NywgNDI3MywgNDI3OCwgCisgICAgNDI4NCwgNDI4OSwgNDI5NCwgNDI5OSwgNDMwNCwgNDMwOSwgNDMxNCwgNDMyMCwgNDMyNSwgNDMzMCwgMzE5LCA0NTYsIAorICAgIDQzMzUsIDQzNDEsIDQzNDUsIDQzNDksIDQzNTQsIDQzNTgsIDQzNjIsIDQzNjUsIDQzNjksIDQzNzMsIDQzNzcsIDQzODEsIAorICAgIDQzODYsIDQzOTAsIDQzOTQsIDQ0MDAsIDQxNjUsIDQ0MDUsIDQ0MDksIDQ0MTIsIDQ0MTcsIDQ0MjIsIDQ0MjcsIDQ0MzIsIAorICAgIDQ0MzcsIDQ0NDIsIDQ0NDcsIDQ0NTIsIDQ0NTcsIDQ0NjIsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODYsIDQ0OTEsIAorICAgIDQ0OTYsIDQ1MDEsIDQ1MDYsIDQ1MTEsIDQ1MTYsIDQ1MjAsIDQ1MjUsIDQ1MzAsIDQ1MzUsIDQ1NDAsIDQ1NDUsIDQ1NTAsIAorICAgIDQ1NTUsIDQ1NjAsIDQ1NjUsIDQ1NzAsIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODksIDQ1OTQsIDQ1OTksIDQ2MDQsIDQ2MDksIAorICAgIDQ2MTQsIDQ2MTksIDQ2MjQsIDQ2MjgsIDQ2MzMsIDQ2MzgsIDQ2NDMsIDQ2NDgsIDQ2NTMsIDQ2NTgsIDQ2NjMsIDQ2NjgsIAorICAgIDQ2NzMsIDQ2NzgsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTcsIDQ3MDIsIDQ3MDcsIDQ3MTIsIDQ3MTcsIDQ3MjIsIDQ3MjcsIAorICAgIDQ3MzIsIDQ3MzYsIDQ3NDEsIDQ3NDYsIDQ3NTEsIDQ3NTYsIDQ3NjEsIDQ3NjYsIDQ3NzEsIDQ3NzYsIDQ3ODEsIDQ3ODYsIAorICAgIDQ3OTAsIDQ3OTUsIDQ4MDAsIDQ4MDUsIDQ4MTAsIDQ4MTYsIDQ4MjIsIDQ4MjgsIDQ4MzQsIDQ4NDAsIDQ4NDYsIDQ4NTIsIAorICAgIDQ4NTcsIDQ4NjMsIDQ4NjksIDQ4NzUsIDQ4ODEsIDQ4ODcsIDQ4OTMsIDQ4OTksIDQ5MDUsIDQ5MTEsIDQ5MTcsIDQ5MjIsIAorICAgIDQ5MjgsIDQ5MzQsIDQ5NDAsIDQ5NDYsIDQ5NTIsIDQ5NTgsIDQ5NjQsIDQ5NzAsIDQ5NzYsIDQ5ODIsIDQ5ODcsIDQ5OTMsIAorICAgIDQ5OTksIDUwMDUsIDUwMTEsIDUwMTcsIDUwMjMsIDUwMjksIDUwMzUsIDUwNDEsIDUwNDcsIDUwNTIsIDUwNTgsIDUwNjQsIAorICAgIDUwNzAsIDUwNzYsIDUwODIsIDUwODgsIDUwOTQsIDUxMDAsIDUxMDYsIDUxMTIsIDUxMTcsIDUxMjMsIDUxMjksIDUxMzUsIAorICAgIDUxNDEsIDUxNDcsIDUxNTMsIDUxNTksIDUxNjUsIDUxNzEsIDUxNzcsIDUxODIsIDUxODYsIDUxOTIsIDUxOTgsIDUyMDQsIAorICAgIDUyMTAsIDUyMTYsIDUyMjIsIDUyMjgsIDUyMzQsIDUyNDAsIDUyNDYsIDUyNTEsIDUyNTcsIDUyNjMsIDUyNjksIDUyNzUsIAorICAgIDUyODEsIDUyODcsIDUyOTMsIDUyOTksIDUzMDUsIDUzMTEsIDUzMTYsIDUzMjIsIDUzMjgsIDUzMzQsIDUzNDAsIDUzNDYsIAorICAgIDUzNTIsIDUzNTgsIDUzNjQsIDUzNzAsIDUzNzYsIDUzODEsIDUzODcsIDUzOTMsIDUzOTksIDU0MDUsIDU0MTEsIDU0MTcsIAorICAgIDU0MjMsIDU0MjksIDU0MzUsIDU0NDEsIDU0NDYsIDU0NTIsIDU0NTgsIDU0NjQsIDU0NzAsIDU0NzYsIDU0ODIsIDU0ODgsIAorICAgIDU0OTQsIDU1MDAsIDU1MDYsIDU1MTEsIDU1MTcsIDU1MjMsIDU1MjksIDU1MzUsIDU1NDEsIDU1NDcsIDU1NTMsIDU1NTksIAorICAgIDU1NjUsIDU1NzEsIDU1NzYsIDU1ODIsIDU1ODgsIDU1OTQsIDU2MDAsIDU2MDYsIDU2MTIsIDU2MTgsIDU2MjQsIDU2MzAsIAorICAgIDU2MzYsIDU2NDEsIDU2NDcsIDU2NTMsIDU2NTksIDU2NjUsIDU2NzEsIDU2NzcsIDU2ODMsIDU2ODksIDU2OTUsIDU3MDEsIAorICAgIDU3MDYsIDU3MTIsIDU3MTgsIDU3MjQsIDU3MzAsIDU3MzYsIDU3NDIsIDU3NDgsIDU3NTQsIDU3NjAsIDU3NjYsIDU3NzEsIAorICAgIDU3NzcsIDU3ODMsIDU3ODksIDU3OTUsIDU4MDEsIDU4MDcsIDU4MTMsIDU4MTksIDU4MjUsIDU4MzEsIDU4MzYsIDU4NDAsIAorICAgIDU4NDMsIDU4NTAsIDU4NTQsIDU4NjcsIDU4NzEsIDU4NzUsIDU4NzksIDU4ODMsIDU4ODcsIDU4OTEsIDU4OTcsIDU5MDQsIAorICAgIDU5MTIsIDU5MTYsIDU5MjQsIDU5MzMsIDU5MzksIDU5NTEsIDU5NTYsIDU5NTksIDU5NjMsIDU5NzMsIDU5ODEsIDU5ODksIAorICAgIDU5OTUsIDU5OTksIDYwMDksIDYwMTksIDYwMjcsIDYwMzQsIDYwNDEsIDYwNDcsIDYwNTMsIDYwNjAsIDYwNjQsIDYwNzEsIAorICAgIDYwODEsIDYwOTEsIDYwOTksIDYxMDYsIDYxMTEsIDYxMTUsIDYxMjMsIDYxMjcsIDYxMzIsIDYxMzksIDYxNDcsIDYxNTIsIAorICAgIDYxNTcsIDYxNjEsIDYxNjgsIDYxNzMsIDYxODcsIDYxOTIsIDYxOTcsIDYyMDQsIDYyMTMsIDYyMTYsIDYyMjAsIDYyMjQsIAorICAgIDYyMjgsIDYyMzEsIDYyMzYsIDYyNDEsIDYyNTAsIDYyNTYsIDYyNjIsIDYyNjgsIDYyNzIsIDYyODMsIDYyOTMsIDYzMDgsIAorICAgIDYzMjMsIDYzMzgsIDYzNTMsIDYzNjgsIDYzODMsIDYzOTgsIDY0MTMsIDY0MjgsIDY0NDMsIDY0NTgsIDY0NzMsIDY0ODgsIAorICAgIDY1MDMsIDY1MTgsIDY1MzMsIDY1NDgsIDY1NjMsIDY1NzgsIDY1OTMsIDY2MDgsIDY2MjMsIDY2MzgsIDY2NTMsIDY2NjgsIAorICAgIDY2ODMsIDY2OTgsIDY3MTMsIDY3MjgsIDY3NDMsIDY3NTgsIDY3NzMsIDY3ODgsIDY4MDMsIDY4MTgsIDY4MzMsIDY4NDgsIAorICAgIDY4NjMsIDY4NzgsIDY4OTMsIDY5MDgsIDY5MjMsIDY5MzgsIDY5NTMsIDY5NjgsIDY5ODMsIDY5OTgsIDcwMTMsIDcwMjgsIAorICAgIDcwMzcsIDcwNDYsIDcwNTEsIDcwNTcsIDcwNjcsIDcwNzEsIDcwNzYsIDcwODEsIDcwODksIDcwOTMsIDcwOTYsIDcxMDAsIAorICAgIDI5NzUsIDcxMDMsIDcxMDgsIDI5OCwgNDQyLCA3MTE0LCA3MTIyLCA3MTI2LCA3MTMwLCA3MTMzLCA3MTM3LCA3MTQzLCAKKyAgICA3MTQ3LCA3MTU1LCA3MTYxLCA3MTY2LCA3MTczLCA3MTgwLCA3MTg2LCA3MTkxLCA3MTk4LCA3MjA0LCA3MjEyLCA3MjE2LCAKKyAgICA3MjIxLCA3MjMzLCA3MjQ0LCA3MjUxLCA3MjU1LCA3MjU5LCA3MjY1LCAzMjMzLCA3MjY5LCA3Mjc1LCA3MjgwLCA3Mjg1LCAKKyAgICA3MjkwLCA3Mjk2LCA3MzAxLCA3MzA2LCA3MzExLCA3MzE2LCA3MzIyLCA3MzI3LCA3MzMyLCA3MzM4LCA3MzQzLCA3MzQ5LCAKKyAgICA3MzU0LCA3MzYwLCA3MzY1LCA3MzcxLCA3Mzc2LCA3MzgxLCA3Mzg2LCA3MzkxLCA3Mzk2LCA3NDAyLCA3NDA3LCA3NDEyLCAKKyAgICA3NDE3LCA3NDIzLCA3NDI5LCA3NDM1LCA3NDQxLCA3NDQ3LCA3NDUzLCA3NDU5LCA3NDY1LCA3NDcxLCA3NDc3LCA3NDgzLCAKKyAgICA3NDg5LCA3NDk0LCA3NDk5LCA3NTA0LCA3NTA5LCA3NTE0LCA3NTE5LCA3NTI0LCA3NTI5LCA3NTM1LCA3NTQxLCA3NTQ2LCAKKyAgICA3NTUyLCA3NTU4LCA3NTY0LCA3NTY5LCA3NTc0LCA3NTc5LCA3NTg0LCA3NTkwLCA3NTk2LCA3NjAxLCA3NjA2LCA3NjExLCAKKyAgICA3NjE2LCA3NjIxLCA3NjI3LCA3NjMyLCA3NjM4LCA3NjQ0LCA3NjUwLCA3NjU2LCA3NjYyLCA3NjY4LCA3Njc0LCA3NjgwLCAKKyAgICA3Njg2LCAyMTM4LCA3MTMyLCA3NjkxLCA3Njk1LCA3Njk5LCA3NzAyLCA3NzA5LCA3NzEyLCA3NzIwLCA3NzI1LCA3NzMwLCAKKyAgICA3NzIxLCA3NzM1LCAyMTY1LCA3NzM5LCA3NzQ1LCA3NzUxLCA3NzU2LCA3NzYxLCA3NzY4LCA3Nzc2LCA3NzgxLCA3Nzg1LCAKKyAgICA3Nzg4LCA3NzkyLCA3Nzk4LCA3ODA0LCA3ODA4LCAyMTczLCA1NjAsIDc4MTEsIDc4MTUsIDc4MjAsIDc4MjYsIDc4MzEsIAorICAgIDc4MzUsIDc4MzgsIDc4NDIsIDc4NDgsIDc4NTMsIDc4NTcsIDc4NjQsIDc4NjgsIDc4NzIsIDc4NzYsIDk0NSwgNzY5LCAKKyAgICA3ODc5LCA3ODg3LCA3ODk0LCA3OTAxLCA3OTA3LCA3OTE0LCA3OTIyLCA3OTI5LCA3OTM2LCA3OTQxLCA3OTUzLCAxMjQ3LCAKKyAgICAxNDA5LCAxNDE0LCA3OTY0LCAxNDE5LCA3OTY4LCA3OTcyLCA3OTgxLCA3OTg5LCA3OTk4LCA4MDA0LCA4MDA5LCA4MDEzLCAKKyAgICA4MDE5LCA4MDI0LCAyNzA2LCA4MDMxLCA4MDM1LCA4MDQ0LCA4MDUzLCA4MDYyLCA4MDcxLCA4MDc2LCA4MDgxLCA4MDkzLCAKKyAgICA4MDk4LCA4MTA2LCAyMjI0LCA4MTEwLCA4MTEyLCA4MTE3LCA4MTIxLCA4MTMwLCA4MTM4LCAxNDIzLCAxMzMsIDM0NjEsIAorICAgIDM0NjYsIDgxNDQsIDgxNDgsIDgxNTcsIDgxNjMsIDgxNjgsIDgxNzEsIDgxODAsIDI2OTgsIDgxODYsIDgxOTQsIDgxOTgsIAorICAgIDgyMDIsIDgyMDYsIDIyMzcsIDgyMTAsIDgyMTUsIDgyMjIsIDgyMjgsIDgyMzQsIDgyMzcsIDgyMzksIDgyNDIsIDgyNTAsIAorICAgIDgyNTgsIDgyNjYsIDgyNjksIDgyNzQsIDIyNTAsIDgyNzksIDc3MzIsIDgyODIsIDgyODQsIDgyODksIDgyOTQsIDgyOTksIAorICAgIDgzMDQsIDgzMDksIDgzMTQsIDgzMTksIDgzMjQsIDgzMjksIDgzMzQsIDgzNDAsIDgzNDUsIDgzNTAsIDgzNTUsIDgzNjEsIAorICAgIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTEsIDgzOTcsIDg0MDIsIDg0MDcsIDg0MTIsIDg0MTcsIDg0MjIsIAorICAgIDg0MjcsIDg0MzIsIDg0MzcsIDg0NDIsIDg0NDcsIDg0NTIsIDg0NTcsIDg0NjIsIDg0NjcsIDg0NzIsIDg0NzcsIDg0ODIsIAorICAgIDg0ODgsIDg0OTQsIDg0OTksIDg1MDQsIDg1MDksIDg1MTQsIDg1MTksIDIyNjEsIDIyNjgsIDIyNzQsIDg1MjQsIDg1MzAsIAorICAgIDg1MzgsIDIzMDAsIDIzMDYsIDg1NDYsIDg1NTAsIDg1NTUsIDg1NTksIDg1NjMsIDg1NjcsIDg1NzIsIDg1NzYsIDg1ODEsIAorICAgIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTcsIDg2MDMsIDg2MDksIDg2MTUsIDg2MjEsIDg2MjcsIDg2MzMsIDg2MzcsIDg2NDEsIAorICAgIDg2NDUsIDg2NDksIDg2NTMsIDg2NTgsIDg2NjUsIDg2NzYsIDg2ODQsIDg2OTQsIDg3MDAsIDg3MDcsIDg3MTIsIDg3MTYsIAorICAgIDg3MjcsIDg3NDAsIDg3NTEsIDg3NjQsIDg3NzUsIDg3ODcsIDg3OTksIDg4MTEsIDg4MjQsIDg4MzcsIDg4NDQsIDg4NTAsIAorICAgIDg4NjQsIDg4NzEsIDg4NzcsIDg4ODEsIDg4ODYsIDg4OTAsIDg4OTcsIDg5MDUsIDg5MDksIDg5MTUsIDg5MTksIDg5MjUsIAorICAgIDg5MzUsIDg5MzksIDg5NDQsIDg5NDksIDg5NTYsIDg5NjIsIDg5NzIsIDc5MDksIDg5NzgsIDg5ODIsIDg5ODksIDc2OCwgCisgICAgODk5MywgODk5NywgOTAwMiwgOTAwNywgOTAxMiwgOTAxNiwgOTAyMiwgOTAzMCwgOTAzNiwgOTA0MCwgOTA0NiwgOTA1NiwgCisgICAgOTA2MCwgOTA2NiwgOTA3MSwgOTA3NSwgOTA4MSwgOTA4NywgMjE2MSwgOTA5MiwgOTA5NCwgOTA5OSwgOTEwNywgOTExNiwgCisgICAgOTEyMCwgOTEyNiwgOTEzMSwgOTEzNiwgOTE0MSwgOTE0NiwgOTE1MiwgOTE1NywgOTE2MiwgNDAwNiwgOTE2NywgOTE3MiwgCisgICAgOTE3NiwgOTE4MiwgOTE4NywgOTE5MywgOTE5OCwgOTIwMywgOTIwOSwgOTIxNCwgOTEyMSwgOTIyMCwgOTIyNCwgOTIzMSwgCisgICAgOTIzNywgOTI0MiwgOTI0NiwgNjE4MywgOTI1MSwgOTI2MCwgOTI2NSwgOTI3MCwgODIxOCwgODIyNSwgOTI3NSwgMjg1MywgCisgICAgOTI3OSwgOTI4NCwgOTI4OSwgOTEzMiwgOTI5MywgOTI5OCwgOTEzNywgOTE0MiwgOTMwMywgOTMxMCwgOTMxNywgOTMyMywgCisgICAgOTMyOSwgOTMzNSwgOTM0MCwgOTM0NSwgOTM1MCwgOTE0NywgOTE1MywgOTM1NiwgOTM2MiwgOTM2NywgOTM3NSwgOTE1OCwgCisgICAgOTM4MCwgOTkwLCA5MzgzLCA5MzkxLCA5Mzk3LCA5NDAzLCA5NDEyLCA5NDIwLCA5NDI1LCA5NDMxLCA5NDM5LCA5NDQ2LCAKKyAgICA5NDYxLCA5NDc4LCA5NDk3LCA5NTA2LCA5NTE0LCA5NTI5LCA5NTQwLCA5NTUwLCA5NTYwLCA5NTY4LCA5NTc0LCA5NTg2LCAKKyAgICA5NTk1LCA5NjAzLCA5NjEwLCA5NjE3LCA5NjIzLCA5NjI4LCA5NjM2LCA5NjQ2LCA5NjUzLCA5NjYzLCA5NjczLCA5NjgzLCAKKyAgICA5NjkxLCA5Njk4LCA5NzA3LCA5NzE3LCA5NzMxLCA5NzQ2LCA5NzU1LCA5NzYzLCA5NzY4LCA5NzcyLCA5NzgxLCA5Nzg3LCAKKyAgICA5NzkyLCA5ODAyLCA5ODEyLCA5ODIyLCA5ODI3LCA5ODMxLCA5ODQwLCA5ODQ1LCA5ODU1LCA5ODY2LCA5ODc5LCA5ODg3LCAKKyAgICA5OTAwLCA5OTEyLCA5OTIwLCA5OTI1LCA5OTI5LCA5OTM1LCA5OTQwLCA5OTQ4LCA5OTU2LCA5OTYzLCA5OTY4LCA5OTc2LCAKKyAgICA5OTgyLCA5OTg1LCA5OTg5LCA5OTk1LCAxMDAwMywgMTAwMDgsIDEwMDEyLCAxMDAyMCwgMTAwMjksIDEwMDM3LCAxMDA0MywgCisgICAgMTAwNDcsIDEwMDU0LCAxMDA2NSwgMTAwNjksIDEwMDcyLCAxMDA3OCwgOTE2MywgMTAwODMsIDEwMDg5LCAxMDA5NiwgCisgICAgMTAxMDIsIDEwMTA3LCAxMDExNCwgMTAxMjEsIDEwMTI4LCAxMDEzNSwgMTAxNDIsIDEwMTQ5LCAxMDE1NiwgMTAxNjMsIAorICAgIDEwMTY4LCA5NDc0LCAxMDE3MywgMTAxNzksIDEwMTg2LCAxMDE5MywgMTAxOTgsIDEwMjA1LCAxMDIxNCwgMTAyMTgsIAorICAgIDEwMjMwLCA4MjU2LCAxMDIzNCwgMTAyMzcsIDEwMjQxLCAxMDI0NSwgMTAyNDksIDEwMjUzLCAxMDI1OSwgMTAyNjUsIAorICAgIDEwMjcwLCAxMDI3NiwgMTAyODEsIDEwMjg2LCAxMDI5MiwgMTAyOTcsIDEwMzAyLCA4OTUyLCAxMDMwNywgMTAzMTEsIAorICAgIDEwMzE1LCAxMDMxOSwgMTAzMjQsIDEwMzI5LCAxMDMzNywgMTAzNDMsIDEwMzQ3LCAxMDM1MSwgMTAzNTgsIDEwMzYzLCAKKyAgICAxMDM3MSwgMTAzNzYsIDEwMzgwLCAxMDM4MywgMTAzODksIDEwMzk2LCAxMDQwMCwgMTA0MDMsIDEwNDA4LCAxMDQxMiwgCisgICAgNDA0NSwgMTA0MTgsIDEwNDI3LCAzNiwgMTA0MzUsIDEwNDQxLCAxMDQ0NiwgODk2NywgMTA0NTEsIDEwNDU2LCAxMDQ2MCwgCisgICAgMTA0NjMsIDEwNDc4LCAxMDQ5NywgMTA1MDksIDEwNTIyLCAxMDUzNSwgMTA1NDgsIDEwNTYyLCAxMDU3NSwgMTA1OTAsIAorICAgIDEwNTk3LCA5MTY4LCAxMDYwMywgMTA2MTcsIDEwNjIyLCAxMDYyOCwgMTA2MzMsIDEwNjQxLCAxMDY0NiwgODA0MCwgCisgICAgMTA2NTEsIDEwNjU0LCAxMDY2MSwgMTA2NjYsIDEwNjcwLCAyODU4LCA5OTgsIDEwNjc2LCAxMDY4MCwgMTA2ODYsIDEwNjkyLCAKKyAgICAxMDY5NywgMTA3MDMsIDEwNzA4LCA5MTc3LCAxMDcxNCwgMTA3MjAsIDEwNzI1LCAxMDczMCwgMTA3MzgsIDEwNzQ0LCAKKyAgICAxMDc1NywgMTA3NjUsIDEwNzcyLCA5MTgzLCAxMDc3OCwgMTA3ODYsIDEwNzk0LCAxMDgwMSwgMTA4MTQsIDEwODI2LCAKKyAgICAxMDgzNiwgMTA4NDQsIDEwODUxLCAxMDg1OCwgMTA4NjcsIDEwODc2LCAxMDg4NCwgMTA4OTEsIDEwODk2LCAxMDkwMiwgCisgICAgOTE4OCwgMTA5MDcsIDEwOTEzLCA5MTk0LCAxMDkxOCwgMTA5MjEsIDEwOTI4LCAxMDkzNCwgMTA5NDcsIDg2NjksIDEwOTU4LCAKKyAgICAxMDk2NCwgMTA5NzMsIDEwOTgxLCAxMDk4OCwgMTA5OTQsIDExMDAwLCAxMTAwNSwgMTEwMDksIDExMDE0LCAxMDQ3MCwgCisgICAgMTEwMjAsIDkxOTksIDExMDI3LCAxMTAzMiwgMTEwMzksIDExMDQ1LCAxMTA1MSwgMTEwNTYsIDExMDY0LCAxMTA3MiwgCisgICAgMTEwNzksIDExMDgzLCAxMTA5NywgMTExMDcsIDExMTEyLCAxMTExNiwgMTExMjcsIDExMTMzLCAxMTEzOCwgMTExNDMsIAorICAgIDkyMDQsIDkyMTAsIDExMTQ3LCAxMTE1MCwgMTExNTUsIDExMTY3LCAxMTE3NCwgMTExNzksIDExMTgzLCAxMTE4OCwgCisgICAgMTExOTIsIDExMTk5LCAxMTIwNSwgOTIxNSwgOTEyMiwgMTEyMTIsIDI4NjMsIDgsIDExMjE5LCAxMTIyNCwgMTEyMjgsIAorICAgIDExMjM0LCAxMTI0MiwgMTEyNTIsIDExMjU3LCAxMTI2MiwgMTEyNjksIDExMjc2LCAxMTI4MCwgMTEyOTEsIDExMzAxLCAKKyAgICAxMTMxMCwgMTEzMjIsIDExMzI3LCAxMTMzMSwgMTEzMzksIDExMzUzLCAxMTM1NywgMTEzNjAsIDExMzY4LCAxMTM3NSwgCisgICAgMTEzODMsIDExMzg3LCAxMTM5OCwgMTE0MDIsIDExNDA5LCAxMTQxNCwgMTE0MTgsIDExNDI0LCAxMTQyOSwgMTE0MzMsIAorICAgIDExNDM5LCAxMTQ0NCwgMTE0NTUsIDExNDU5LCAxMTQ2MiwgMTE0NjgsIDExNDczLCAxMTQ3OSwgMTE0ODUsIDExNDkyLCAKKyAgICAxMTUwMywgMTE1MTMsIDExNTIzLCAxMTUzMiwgMTE1MzksIDExNTQ4LCA5MjI1LCA5MjMyLCA5MjM4LCA5MjQzLCAxMTU1NCwgCisgICAgMTE1NjAsIDkyNDcsIDExNTY2LCAxMTU2OSwgMTE1NzYsIDExNTgxLCAxMTU5NiwgMTE2MTIsIDExNjI3LCAxMTYzNSwgCisgICAgMTE2NDEsIDExNjQ2LCA4MzgsIDQyMCwgMTE2NTEsIDExNjU5LCAxMTY2NiwgMTE2NzIsIDExNjc3LCAxMTY4MiwgOTI1MiwgCisgICAgMTE2ODQsIDExNjg4LCAxMTY5MywgMTE2OTcsIDExNzA3LCAxMTcxMiwgMTE3MTYsIDExNzI1LCAxMTcyOSwgMTE3MzIsIAorICAgIDkyNjEsIDExNzM5LCAxMTc0MiwgMTE3NTAsIDExNzU3LCAxMTc2NSwgMTE3NjksIDExNzc2LCAxMTc4NSwgMTE3ODgsIAorICAgIDExNzkyLCAxMTc5NiwgMTE4MDIsIDExODA2LCAxMTgxMCwgMTE4MTQsIDExODIwLCAxMTgzMCwgMTE4MzQsIDExODQyLCAKKyAgICAxMTg0NiwgMTE4NTMsIDExODU3LCAxMTg2MiwgMTE4NjYsIDExODczLCAxMTg3OSwgMTE4ODcsIDExODkzLCAxMTg5OCwgCisgICAgMTE5MDgsIDExOTEzLCAxMTkxOCwgMTE5MjIsIDExOTMwLCAzOTA1LCAxMTkzOCwgMTE5NDMsIDkyNjYsIDExOTQ3LCAKKyAgICAxMTk1MSwgMTE5NTQsIDExOTYyLCAxMTk2OSwgMTE5NzMsIDU5OTEsIDExOTc3LCAxMTk4MiwgMTE5ODYsIDExOTk3LCAKKyAgICAxMjAwNywgMTIwMTIsIDEyMDE4LCAxMjAyMiwgMTIwMjUsIDEyMDMzLCAxMjAzOCwgMTIwNDMsIDEyMDUwLCAxMjA1NSwgCisgICAgOTI3MSwgMTIwNjAsIDEyMDY0LCAxMjA3MSwgMTcyMiwgNjE0NSwgMTIwNzYsIDEyMDgxLCAxMjA4NiwgMTIwOTEsIDEyMDk3LCAKKyAgICAxMjEwMiwgMTIxMDgsIDEyMTEzLCAxMjExOCwgMTIxMjMsIDEyMTI4LCAxMjEzMywgMTIxMzgsIDEyMTQzLCAxMjE0OCwgCisgICAgMTIxNTMsIDEyMTU4LCAxMjE2MywgMTIxNjgsIDEyMTczLCAxMjE3OCwgMTIxODMsIDEyMTg4LCAxMjE5NCwgMTIxOTksIAorICAgIDEyMjA0LCAxMjIwOSwgMTIyMTQsIDEyMjE5LCAxMjIyNSwgMTIyMzAsIDEyMjM1LCAxMjI0MSwgMTIyNDYsIDEyMjUyLCAKKyAgICAxMjI1NywgMTIyNjMsIDEyMjY4LCAxMjI3MywgMTIyNzgsIDEyMjgzLCAxMjI4OSwgMTIyOTQsIDEyMjk5LCAxMjMwNCwgCisgICAgNzM3LCAxMzksIDEyMzEyLCAxMjMxNiwgMTIzMjEsIDEyMzI2LCAxMjMzMCwgMTIzMzQsIDEyMzM4LCAxMjM0MywgMTIzNDcsIAorICAgIDEyMzUyLCAxMjM1NiwgMTIzNTksIDEyMzYzLCAxMjM2NywgMTIzNzMsIDEyMzc4LCAxMjM4OCwgMTIzOTQsIDEyNDAyLCAKKyAgICAxMjQwNiwgMTI0MTAsIDEyNDE3LCAxMjQyNSwgMTI0MzQsIDEyNDQ1LCAxMjQ1MiwgMTI0NTksIDEyNDYzLCAxMjQ3MiwgCisgICAgMTI0ODEsIDEyNDg5LCAxMjQ5OCwgMTI1MDcsIDEyNTE2LCAxMjUyNSwgMTI1MzUsIDEyNTQ1LCAxMjU1NSwgMTI1NjUsIAorICAgIDEyNTc1LCAxMjU4NCwgMTI1OTQsIDEyNjA0LCAxMjYxNCwgMTI2MjQsIDEyNjM0LCAxMjY0NCwgMTI2NTQsIDEyNjYzLCAKKyAgICAxMjY3MywgMTI2ODMsIDEyNjkzLCAxMjcwMywgMTI3MTMsIDEyNzIzLCAxMjczMiwgMTI3NDIsIDEyNzUyLCAxMjc2MiwgCisgICAgMTI3NzIsIDEyNzgyLCAxMjc5MiwgMTI4MDIsIDEyODEyLCAxMjgyMiwgMTI4MzEsIDEyODQxLCAxMjg1MSwgMTI4NjEsIAorICAgIDEyODcxLCAxMjg4MSwgMTI4OTEsIDEyOTAxLCAxMjkxMSwgMTI5MjEsIDEyOTMxLCAxMjk0MCwgMTI1NiwgMTI5NDYsIAorICAgIDEyOTQ5LCAxMjk1MywgMTI5NTgsIDEyOTY1LCAxMjk3MSwgMTI5NzYsIDEyOTgwLCAxMjk4NSwgMTI5OTQsIDEzMDAyLCAKKyAgICAxMzAwNywgMTMwMTEsIDEzMDE1LCAxMzAyMSwgMTMwMjYsIDEzMDMyLCA5MjgwLCAxMzAzNywgMTMwNDIsIDEzMDUxLCAKKyAgICA5Mjg1LCAxMzA1NiwgMTMwNTksIDEzMDY1LCAxMzA3MywgOTI5MCwgMTMwODAsIDEzMDg0LCAxMzA4OCwgMTMwOTIsIAorICAgIDEzMTAyLCAxMzEwOCwgMTMxMTQsIDEzMTE5LCAxMzEyOCwgMTMxMzYsIDEzMTQzLCAxMzE1MCwgMTMxNTUsIDEzMTYyLCAKKyAgICAxMzE2NywgMTMxNzEsIDEzMTc0LCAxMzE4NSwgMTMxOTUsIDEzMjA0LCAxMzIxMiwgMTMyMjMsIDEzMjM1LCAxMzI0NSwgCisgICAgMTMyNTAsIDEzMjU0LCAxMzI1OSwgMTMyNjQsIDEzMjY4LCAxMzI3NCwgMTMyODIsIDEzMjg5LCAxMzMwMCwgMTMzMDUsIAorICAgIDEzMzE1LCAxMzMxOSwgMTMzMjIsIDEzMzI5LCAxMzMzOSwgMTMzNDgsIDEzMzU1LCAxMzM1OSwgMTMzNjYsIDEzMzcyLCAKKyAgICAxMzM3NywgMTMzODIsIDEzMzg2LCAxMzM5NSwgMTM0MDAsIDEzNDA2LCAxMzQxMCwgMTM0MTUsIDEzNDE5LCAxMzQyOCwgCisgICAgMTM0MzYsIDEzNDQ0LCAxMzQ1MSwgMTM0NTksIDEzNDcxLCAxMzQ4MiwgMTM0OTIsIDEzNDk5LCAxMzUwNSwgMTM1MTQsIAorICAgIDEzNTI1LCAxMzUzNCwgMTM1NDYsIDEzNTU4LCAxMzU3MCwgMTM1ODAsIDEzNTg5LCAxMzU5OCwgMTM2MDYsIDEzNjEzLCAKKyAgICAxMzYyMiwgMTM2MzAsIDEzNjM0LCAxMzY0MCwgMTM2NDYsIDEzNjUxLCA3NzUzLCAxMzY1NSwgMTM2NTcsIDEzNjYxLCAKKyAgICAxMzY2NiwgMTM2NzIsIDEzNjgxLCAxMzY4NSwgMTM2OTMsIDEzNzAwLCAxMzcwOSwgMTM3MTgsIDEzNzI3LCAxMzczNiwgCisgICAgMTM3NDUsIDEzNzU0LCAxMzc2MywgMTM3NzIsIDEzNzgyLCAxMzc5MiwgMTM4MDEsIDEzODA3LCAxMzgxNCwgMTM4MjEsIAorICAgIDEzODI3LCAxMzg0MSwgMTM4NDgsIDEzODU2LCAxMzg2NSwgMTM4NzEsIDEzODgwLCAxMzg4OSwgMTM5MDAsIDEzOTEwLCAKKyAgICAxMzkxOCwgMTM5MjUsIDEzOTMzLCAxMzk0MiwgMTM5NTUsIDEzOTYzLCAxMzk3MCwgMTM5ODMsIDEzOTg5LCAxMzk5NSwgCisgICAgMTQwMDUsIDE0MDE0LCAxNDAyMywgMTQwMjgsIDE0MDMyLCAxNDAzOCwgMTQwNDQsIDE0MDUxLCA4OTY2LCAxNDA1NiwgCisgICAgMTQwNjEsIDE0MDY4LCAxNDA3MywgMTIzNjksIDE0MDc4LCAxNDA4NiwgMTQwOTIsIDE0MDk3LCAxNDEwNSwgMTQxMTMsIAorICAgIDE0MTIwLCAxNDEyOCwgMTQxMzQsIDE0MTQyLCAxNDE1MCwgMTQxNTYsIDE0MTYxLCAxNDE2NywgMTQxNzQsIDE0MTgwLCAKKyAgICAxNDE4NSwgMTQxODksIDE0MjAwLCAxNDIwOCwgMTQyMTQsIDE0MjE5LCAxNDIyOCwgMTQyMzQsIDE0MjM5LCAxNDI0OCwgCisgICAgMTQyNjIsIDM4NTMsIDE0MjY2LCAxNDI3MSwgMTQyNzYsIDE0MjgyLCAxNDI4NywgMTQyOTIsIDE0Mjk2LCAxNDMwMSwgCisgICAgMTQzMDYsIDE0MzExLCA3NzUyLCAxNDMxNiwgMTQzMjEsIDE0MzI2LCAxNDMzMSwgMTQzMzYsIDE0MzQwLCAxNDM0NSwgCisgICAgMTQzNTAsIDE0MzU1LCAxNDM2MCwgMTQzNjYsIDE0MzcyLCAxNDM3NywgMTQzODEsIDE0Mzg2LCAxNDM5MSwgMTQzOTYsIAorICAgIDkyOTQsIDE0NDAxLCAxNDQwNiwgMTQ0MTEsIDE0NDE2LCAxNDQyMSwgMTQ0MzgsIDE0NDU2LCAxNDQ2OCwgMTQ0ODEsIAorICAgIDE0NDk4LCAxNDUxNCwgMTQ1MzEsIDE0NTQxLCAxNDU2MCwgMTQ1NzEsIDE0NTgyLCAxNDU5MywgMTQ2MDQsIDE0NjE2LCAKKyAgICAxNDYyNywgMTQ2MzgsIDE0NjU1LCAxNDY2NiwgMTQ2NzcsIDE0NjgyLCA5Mjk5LCAxNDY4NywgMTQ2OTEsIDIzODEsIAorICAgIDE0Njk1LCAxNDY5OCwgMTQ3MDQsIDE0NzEyLCAxNDcyMCwgMTQ3MjUsIDE0NzMzLCAxNDc0MSwgMTQ3NDgsIDE0NzUzLCAKKyAgICAxNDc1OSwgMTQ3NjYsIDE0Nzc0LCAxNDc4MSwgMTQ3OTMsIDE0ODAxLCAxNDgwNiwgMTE1OTAsIDE0ODEyLCAxNDgyMSwgCisgICAgMTQ4MzAsIDE0ODM4LCAxNDg0NSwgMTQ4NTEsIDE0ODU5LCAxNDg2NiwgMTQ4NzIsIDE0ODc5LCAxNDg4NSwgMTQ4OTQsIAorICAgIDE0OTAyLCAxNDkxMiwgMTQ5MTksIDE0OTI1LCAxNDkzMywgMTQ5MzksIDE0OTQ3LCAxNDk1NCwgMTQ5NjcsIDE0OTc0LCAKKyAgICAxNDk4MywgMTQ5OTIsIDE1MDAxLCAxNTAwOSwgMTUwMTksIDE1MDI2LCAxNTAzMSwgMzU2MCwgMTUwMzgsIDE1MDQzLCAKKyAgICAxMzcyLCAxNTA0NywgMTQzMTcsIDE1MDUxLCAxNTA1NywgMTUwNjEsIDE1MDY5LCAxNTA4MSwgMTUwODYsIDE1MDkzLCAKKyAgICAxNTA5OSwgMTUxMDQsIDE1MTExLCAxNDMyMiwgMTUxMTUsIDE1MTE5LCAxNTEyMywgMTQzMjcsIDE1MTI3LCAxNDMzMiwgCisgICAgMTUxMzEsIDE1MTM4LCAxNTE0MywgMTUxNDcsIDE1MTU0LCAxNTE1OCwgMTUxNjYsIDE1MTczLCAxNTE3NywgMTUxODQsIAorICAgIDE1MjAxLCAxNTIxMCwgMTUyMTQsIDE1MjE3LCAxNTIyNSwgMTUyMzEsIDE1MjM2LCAzNjM4LCAxNTI0MCwgMTUyNDIsIAorICAgIDE1MjUwLCAxNTI1NywgMTUyNjcsIDE1Mjc5LCAxNTI4NCwgMTUyOTAsIDE1Mjk1LCAxNTI5OSwgMTUzMDUsIDE1MzEwLCAKKyAgICAxNTMxNiwgMTUzMTksIDE1MzI2LCAxNTMzNCwgMTUzNDEsIDE1MzQ3LCAxNTM1MywgMTUzNTgsIDE1MzY1LCAxNTM3MSwgCisgICAgMTUzNzYsIDE1MzgzLCAxNTM4NywgMTUzOTMsIDE1Mzk3LCAxNTQwNCwgMTU0MTAsIDE1NDE2LCAxNTQyNCwgMTU0MzAsIAorICAgIDE1NDM1LCAxNTQ0MSwgMTU0NDksIDE1NDU3LCAxNTQ2MywgMTU0NjksIDE1NDc0LCAxNTQ4MSwgMTU0ODYsIDE1NDkwLCAKKyAgICAxNTQ5NiwgMTU1MDEsIDE1NTA4LCAxNTUxMywgMTU1MTksIDE1NTIyLCAxNTUyOCwgMTU1MzQsIDE1NTM3LCAxNTU0MSwgCisgICAgMTU1NTMsIDE1NTU5LCAxNTU2NCwgMTU1NzEsIDE1NTc3LCAxNTU4MywgMTU1OTQsIDE1NjA0LCAxNTYxMywgMTU2MjEsIAorICAgIDE1NjI4LCAxNTYzOSwgMTU2NDksIDE1NjU5LCAxNTY2NywgMTU2NzAsIDE0MzQ2LCAxNTY3NSwgMTU2ODAsIDE0MzUxLCAKKyAgICAxNDQ4NiwgMTU2ODgsIDE1NzAxLCAxNTcxNiwgMTU3MjcsIDE0NTAzLCAxNTc0NSwgMTU3NTgsIDE1NzcxLCAxNTc4MiwgCisgICAgMTA0ODUsIDE1NzkzLCAxNTgwNiwgMTU4MjUsIDE1ODM2LCAxNTg0NywgMTU4NTgsIDI2NDksIDE1ODcxLCAxNTg3NSwgCisgICAgMTU4ODMsIDE1ODk4LCAxNTkxMywgMTU5MjQsIDE1OTMxLCAxNTkzNywgMTU5NDUsIDE1OTQ5LCAxNTk1NSwgMTU5NTgsIAorICAgIDE1OTY4LCAxNTk3NiwgMTU5ODMsIDE1OTkxLCAxNjAwMSwgMTYwMDYsIDE2MDEzLCAxNjAxOCwgMTYwMjUsIDE2MDM2LCAKKyAgICAxNjA0NiwgMTYwNTIsIDE2MDU3LCAxNjA2MiwgMTQzNTYsIDE2MDY2LCAxNjA3MiwgMTYwNzgsIDE2MDgzLCAxNjA4OCwgCisgICAgMTYwOTMsIDE2MDk3LCAxNDM2MSwgMTQzNjcsIDE2MTAxLCAxNDM3MywgMTYxMDYsIDE2MTE0LCAxNjEyMywgMTYxMzAsIAorICAgIDkxNDMsIDE2MTM0LCAxNjEzNiwgMTYxNDEsIDE2MTQ2LCAxNjE1MiwgMTYxNTcsIDE2MTYyLCAxNjE2NywgMTYxNzIsIAorICAgIDE2MTc2LCAxNjE4MiwgMTYxODgsIDE2MTkzLCAxNjE5OSwgMTYyMDQsIDE2MjA5LCAxNjIxNSwgMTYyMjAsIDE2MjI1LCAKKyAgICAxNjIzMCwgMTYyMzUsIDE2MjQxLCAxNjI0NiwgMTYyNTEsIDE2MjU3LCAxNjI2MywgMTYyNjgsIDE2MjczLCAxNjI4MCwgCisgICAgMTYyODYsIDE2Mjk3LCAxNjMwNCwgMTYzMDksIDE2MzEzLCAxNjMxNywgMTYzMjAsIDE2MzI4LCAxNjMzMywgMTYzNDAsIAorICAgIDE2MzQ3LCAxNjM1MywgMTYzNTgsIDE2MzYzLCAxNjM3MCwgMTYzODAsIDE2Mzg1LCAxNjM5MiwgMTYzOTgsIDE2NDA4LCAKKyAgICAxNjQxOCwgMTY0MzIsIDE2NDQ2LCAxNjQ2MCwgMTY0NzQsIDE2NDg5LCAxNjUwNCwgMTY1MjEsIDE2NTM5LCAxNjU1MiwgCisgICAgMTY1NTgsIDE2NTYzLCAxNjU2OCwgMTY1NzIsIDE2NTc3LCAxNjU4NSwgMTY1OTEsIDE2NTk2LCAxNjYwMSwgMTY2MDUsIAorICAgIDE2NjEwLCAxNjYxNCwgMTY2MTksIDE2NjIzLCAxNjYzNCwgMTY2NDAsIDE2NjQ1LCAxNjY1MCwgMTY2NTcsIDE2NjYyLCAKKyAgICAxNjY2NiwgMTY2NzEsIDE2Njc2LCAxNjY4MiwgMTY2ODksIDE2Njk1LCAxNjcwMCwgMTY3MDQsIDE2NzEwLCAxNjcxNSwgCisgICAgMTY3MjAsIDE2NzI0LCAxNjczMCwgMTY3MzUsIDE2NzQwLCAxNjc0NywgMTY3NTIsIDEzMTA0LCAxNjc1NiwgMTY3NjEsIAorICAgIDE2NzY1LCAxNjc3MCwgMTY3NzYsIDE2NzgyLCAxNjc4OSwgMTY3OTksIDE2ODA3LCAxNjgxNCwgMTY4MTksIDE2ODIzLCAKKyAgICAxNjgzMiwgMTY4NDAsIDE2ODQ3LCAxNjg1NCwgMTY4NjAsIDE2ODY2LCAxNjg3MSwgMTY4NzYsIDE2ODgyLCAxNjg4NywgCisgICAgMTY4OTMsIDE2ODk4LCAxNjkwNCwgMTY5MTAsIDE2OTE3LCAxNjkyMywgMTY5MjgsIDE2OTMzLCA5MzQxLCAxNjk0MiwgCisgICAgMTY5NDUsIDE2OTUxLCAxNjk1NiwgMTY5NjEsIDE2OTcxLCAxNjk3OCwgMTY5ODQsIDE2OTg5LCAxNjk5NCwgMTcwMDAsIAorICAgIDE3MDA1LCAxNzAxMSwgMTcwMTYsIDE3MDIyLCAxNzAyOCwgMTcwMzMsIDE3MDQxLCAxNzA0OCwgMTcwNTMsIDE3MDU4LCAKKyAgICAxNzA2NCwgMTcwNjksIDE3MDczLCAxNzA4MiwgMTcwOTMsIDE3MTAwLCAxNzEwNSwgMTcxMTMsIDE3MTE5LCAxNzEyNiwgCisgICAgMTcxMzIsIDE3MTM3LCAxNzE0MSwgMTcxNDcsIDE3MTUyLCAxNzE1NywgMTcxNjIsIDE0NDAsIDc3NzcsIDI4NzcsIDE3MTY2LCAKKyAgICAxNzE3MCwgMTcxNzQsIDE3MTc4LCAxNzE4MiwgMTcxODYsIDE3MTg5LCAxNzE5NiwgMTcyMDQsIDE0Mzg3LCAxNzIxMSwgCisgICAgMTcyMjEsIDE3MjI5LCAxNzIzNiwgMTcyNDQsIDE3MjU0LCAxNzI2MywgMTcyNzYsIDE3MjgxLCAxNzI4NiwgMTcyOTQsIAorICAgIDE3MzAxLCAxMzIwMCwgMTMyMDksIDE3MzA4LCAxNzMxOCwgMTczMzMsIDE3MzM5LCAxNzM0NiwgMTczNTMsIDE3MzU5LCAKKyAgICAxNzM2NywgMTczNzcsIDE3Mzg3LCAxNDM5MiwgMTczOTYsIDE3NDAyLCAxNzQwOCwgMTc0MTYsIDE3NDI0LCAxNzQyOSwgCisgICAgMTc0MzgsIDE3NDQ2LCAxNzQ1OCwgMTc0NjgsIDE3NDc4LCAxNzQ4OCwgMTc0OTcsIDE3NTA5LCAxNzUxOSwgMTc1MjksIAorICAgIDE3NTQwLCAxNzU0NSwgMTc1NTcsIDE3NTY5LCAxNzU4MSwgMTc1OTMsIDE3NjA1LCAxNzYxNywgMTc2MjksIDE3NjQxLCAKKyAgICAxNzY1MywgMTc2NjUsIDE3Njc2LCAxNzY4OCwgMTc3MDAsIDE3NzEyLCAxNzcyNCwgMTc3MzYsIDE3NzQ4LCAxNzc2MCwgCisgICAgMTc3NzIsIDE3Nzg0LCAxNzc5NiwgMTc4MDcsIDE3ODE5LCAxNzgzMSwgMTc4NDMsIDE3ODU1LCAxNzg2NywgMTc4NzksIAorICAgIDE3ODkxLCAxNzkwMywgMTc5MTUsIDE3OTI3LCAxNzkzOCwgMTc5NTAsIDE3OTYyLCAxNzk3NCwgMTc5ODYsIDE3OTk4LCAKKyAgICAxODAxMCwgMTgwMjIsIDE4MDM0LCAxODA0NiwgMTgwNTgsIDE4MDY5LCAxODA4MSwgMTgwOTMsIDE4MTA1LCAxODExNywgCisgICAgMTgxMjksIDE4MTQxLCAxODE1MywgMTgxNjUsIDE4MTc3LCAxODE4OSwgMTgyMDAsIDE4MjEyLCAxODIyNCwgMTgyMzYsIAorICAgIDE4MjQ4LCAxODI2MCwgMTgyNzIsIDE4Mjg0LCAxODI5NiwgMTgzMDgsIDE4MzIwLCAxODMzMSwgMTgzNDMsIDE4MzU1LCAKKyAgICAxODM2NywgMTgzNzksIDE4MzkxLCAxODQwMywgMTg0MTUsIDE4NDI3LCAxODQzOSwgMTg0NTEsIDE4NDYyLCAxODQ3NCwgCisgICAgMTg0ODYsIDE4NDk4LCAxODUxMCwgMTg1MjMsIDE4NTM2LCAxODU0OSwgMTg1NjIsIDE4NTc1LCAxODU4OCwgMTg2MDEsIAorICAgIDE4NjEzLCAxODYyNiwgMTg2MzksIDE4NjUyLCAxODY2NSwgMTg2NzgsIDE4NjkxLCAxODcwNCwgMTg3MTcsIDE4NzMwLCAKKyAgICAxODc0MywgMTg3NTUsIDE4NzY4LCAxODc4MSwgMTg3OTQsIDE4ODA3LCAxODgyMCwgMTg4MzMsIDE4ODQ2LCAxODg1OSwgCisgICAgMTg4NzIsIDE4ODg1LCAxODg5NywgMTg5MTAsIDE4OTIzLCAxODkzNiwgMTg5NDksIDE4OTYyLCAxODk3NSwgMTg5ODgsIAorICAgIDE5MDAxLCAxOTAxNCwgMTkwMjcsIDE5MDM5LCAxOTA1MiwgMTkwNjUsIDE5MDc4LCAxOTA5MSwgMTkxMDQsIDE5MTE3LCAKKyAgICAxOTEzMCwgMTkxNDMsIDE5MTU2LCAxOTE2OSwgMTkxODEsIDE5MTk0LCAxOTIwNywgMTkyMjAsIDE5MjMzLCAxOTI0NiwgCisgICAgMTkyNTksIDE5MjcyLCAxOTI4NSwgMTkyOTgsIDE5MzExLCAxOTMyMywgMTkzMzQsIDE5MzQ3LCAxOTM2MCwgMTkzNzMsIAorICAgIDE5Mzg2LCAxOTM5OSwgMTk0MTIsIDE5NDI1LCAxOTQzOCwgMTk0NTEsIDE5NDY0LCAxOTQ3NiwgMTk0ODksIDE5NTAyLCAKKyAgICAxOTUxNSwgMTk1MjgsIDE5NTQxLCAxOTU1NCwgMTk1NjcsIDE5NTgwLCAxOTU5MywgMTk2MDYsIDE5NjE4LCAxOTYzMSwgCisgICAgMTk2NDQsIDE5NjU3LCAxOTY3MCwgMTk2ODMsIDE5Njk2LCAxOTcwOSwgMTk3MjIsIDE5NzM1LCAxOTc0OCwgMTk3NjAsIAorICAgIDE5NzczLCAxOTc4NiwgMTk3OTksIDE5ODEyLCAxOTgyNSwgMTk4MzgsIDE5ODUxLCAxOTg2NCwgMTk4NzcsIDE5ODkwLCAKKyAgICAxOTkwMiwgMTk5MTUsIDE5OTI4LCAxOTk0MSwgMTk5NTQsIDE5OTY3LCAxOTk4MCwgMTk5OTMsIDIwMDA2LCAyMDAxOSwgCisgICAgMjAwMzIsIDIwMDQ0LCAyMDA1NywgMjAwNzAsIDIwMDgzLCAyMDA5NiwgMjAxMDksIDIwMTIyLCAyMDEzNSwgMjAxNDgsIAorICAgIDIwMTYxLCAyMDE3NCwgMjAxODYsIDIwMTk5LCAyMDIxMiwgMjAyMjUsIDIwMjM4LCAyMDI1MSwgMjAyNjQsIDIwMjc3LCAKKyAgICAyMDI5MCwgMjAzMDMsIDIwMzE2LCAyMDMyOCwgMjAzNDEsIDIwMzU0LCAyMDM2NywgMjAzODAsIDIwMzkzLCAyMDQwNiwgCisgICAgMjA0MTksIDIwNDMyLCAyMDQ0NSwgMjA0NTgsIDIwNDcwLCAyMDQ4MywgMjA0OTYsIDIwNTA5LCAyMDUyMiwgMjA1MzUsIAorICAgIDIwNTQ4LCAyMDU2MSwgMjA1NzQsIDIwNTg3LCAyMDYwMCwgMjA2MTIsIDIwNjI1LCAyMDYzOCwgMjA2NTEsIDIwNjY0LCAKKyAgICAyMDY3NywgMjA2OTAsIDIwNzAzLCAyMDcxNiwgMjA3MjksIDIwNzQyLCAyMDc1NCwgMjA3NjUsIDIwNzczLCAyMDc4MSwgCisgICAgMjA3ODgsIDIwNzk0LCAyMDc5OCwgMjA4MDQsIDIwODEwLCAyMDgxOCwgMjA4MjQsIDIwODI5LCAyMDgzMywgMjA4NDIsIAorICAgIDkxNDgsIDIwODUzLCAyMDg2MCwgMjA4NjgsIDIwODc1LCAyMDg4MiwgMTA5NDEsIDIwODg5LCAyMDg5OCwgMjA5MDMsIAorICAgIDIwOTA4LCA3ODA1LCAyMDkxNSwgMjA5MjAsIDIwOTIzLCAyMDkyOCwgMjA5MzYsIDIwOTQzLCAyMDk1MCwgMjA5NTcsIAorICAgIDIwOTYzLCAyMDk3MiwgMjA5ODEsIDIwOTg3LCAyMDk5NiwgMjEwMDAsIDIxMDA2LCAyMTAxMSwgMjEwMjEsIDIxMDI4LCAKKyAgICAyMTAzNCwgMjEwNDIsIDIxMDQ4LCAyMTA1NSwgMjEwNjUsIDIxMDc0LCAyMTA3OCwgMjEwODUsIDIxMDg5LCAyMTA5NCwgCisgICAgMjExMDAsIDIxMTA4LCAyMTExMiwgMjExMjIsIDE0NDAyLCAyMTEzMSwgMjExMzcsIDIxMTQxLCAyMTE1MCwgMTQ0MDcsIAorICAgIDIxMTU2LCAyMTE2MywgMjExNzQsIDIxMTgyLCAyMTE5MSwgMjExOTksIDg5MzEsIDIxMjA3LCAyMTIxMiwgMjEyMTgsIAorICAgIDIxMjIzLCAyMTIyNywgMjEyMzEsIDIxMjM1LCA5NjMyLCAyMTI0MCwgMjEyNDgsIDIxMjU1LCAyMTI2NCwgMjEyNzEsIAorICAgIDIxMjc4LCAxMDg3MSwgMjEyODUsIDIxMjkxLCAyMTI5NSwgMjEzMDEsIDIxMzA4LCAyMTMxNCwgMjEzMjIsIDIxMzI4LCAKKyAgICAyMTMzNSwgMjEzNDEsIDIxMzQ3LCAyMTM1NiwgMjEzNjAsIDIxMzY4LCAyMTM3NywgMjEzODQsIDIxMzg5LCAyMTM5MywgCisgICAgMjE0MDQsIDIxNDA5LCAyMTQxNCwgMjE0MTksIDIxNDMyLCA3OTk1LCAyMTQzNiwgMjE0NDIsIDIxNDUwLCAyMTQ1NCwgCisgICAgMjE0NjEsIDIxNDcwLCAyMTQ3NSwgMTQ2NzgsIDIxNDgzLCAyMTQ4NywgMjE0OTksIDIxNTA0LCAyMTUwOCwgMjE1MTEsIAorICAgIDIxNTE3LCAyMTUyMywgMjE1MjgsIDIxNTMyLCAyMTUzNSwgMjE1NDYsIDIxNTUxLCA5Mzc2LCAyMTU1OCwgMjE1NjMsIAorICAgIDkzODEsIDIxNTY4LCAyMTU3MywgMjE1NzgsIDIxNTgzLCAyMTU4OCwgMjE1OTMsIDIxNTk4LCAyMTYwMywgMjE2MDgsIAorICAgIDIxNjEzLCAyMTYxOCwgMjE2MjMsIDIxNjI5LCAyMTYzNCwgMjE2MzksIDIxNjQ0LCAyMTY0OSwgMjE2NTQsIDIxNjU5LCAKKyAgICAyMTY2NCwgMjE2NjksIDIxNjc0LCAyMTY4MCwgMjE2ODYsIDIxNjkxLCAyMTY5NiwgMjE3MDEsIDIxNzA2LCAyMTcxMSwgCisgICAgMjE3MTYsIDIxNzIxLCAyMTcyNiwgMjE3MzEsIDIxNzM3LCAyMTc0MiwgMjE3NDcsIDIxNzUyLCAyMTc1OCwgMjE3NjQsIAorICAgIDIxNzY5LCAyMTc3NCwgMjE3NzksIDIxNzg0LCAyMTc4OSwgMjE3OTQsIDIxNzk5LCAyMTgwNCwgMjE4MTAsIDIxODE1LCAKKyAgICAyMTgyMCwgMjE4MjUsIDIxODMwLCAyMTgzNiwgMjE4NDEsIDIxODQ2LCAyMTg1MCwgMTM2OCwgMTI5LCAyMTg1OCwgMjE4NjIsIAorICAgIDIxODY2LCAyMTg3MCwgMjE4NzUsIDIxODc5LCAxMzExMCwgMTI0NjksIDIxODgzLCAyMTg4OCwgMjE4OTIsIDIxODk3LCAKKyAgICAyMTkwMSwgMjE5MDYsIDIxOTEwLCAyMTkxNiwgMjE5MjEsIDIxOTI1LCAyMTkyOSwgMjE5MzcsIDIxOTQxLCAyMTk0NSwgCisgICAgMjE5NTAsIDIxOTU1LCAyMTk1OSwgMjE5NjUsIDIxOTcwLCAyMTk3NCwgMjE5NzksIDIxOTg0LCAyMTk4OCwgMjE5OTUsIAorICAgIDIyMDAyLCAyMjAwOSwgMjIwMTMsIDIyMDE3LCAyMjAyMiwgMjIwMjYsIDIyMDI5LCAyMjAzNSwgMjIwNDgsIDIyMDUzLCAKKyAgICAyMjA2MiwgMjIwNjcsIDk0MjEsIDIyMDcyLCAyMjA3NSwgMjcxMiwgMjcxNywgMjIwNzksIDIyMDg1LCAyMjA5MSwgNzIwOSwgCisgICAgMjIwOTYsIDIyMTAxLCAyMjEwNiwgMjIxMTIsIDIyMTE3LCAxMzg5NiwgMjIxMjIsIDIyMTI3LCAyMjEzMiwgMjIxMzcsIAorICAgIDIyMTQzLCAyMjE0OCwgMjIxNTMsIDIyMTU5LCAyMjE2NCwgMjIxNjgsIDIyMTczLCAyMjE3OCwgMjIxODMsIDIyMTg4LCAKKyAgICAyMjE5MiwgMjIxOTcsIDIyMjAxLCAyMjIwNiwgMjIyMTEsIDIyMjE2LCAyMjIyMSwgMjIyMjUsIDIyMjMwLCAyMjIzNCwgCisgICAgMjIyMzksIDIyMjQ0LCAyMjI0OSwgMjIyNTQsIDI4ODYsIDIyMTY5LCAyMjI1OCwgMjIyNjYsIDIyMjczLCA5NzI2LCAKKyAgICAyMjI4NSwgMjIyOTMsIDIyMTc0LCAyMjMwMCwgMjIzMDUsIDIyMzEzLCAyMjE3OSwgMjIzMTgsIDIyMzIzLCAyMjMzMSwgCisgICAgMjIzMzYsIDIyMTg0LCAyMjM0MSwgMjIzNDYsIDIyMzUwLCAyMjM1NiwgMjIzNjQsIDIyMzY3LCAyMjM3NCwgMjIzNzgsIAorICAgIDIyMzgyLCAyMjM4OCwgMjIzOTUsIDIyNDAwLCA4OTU4LCAxNzI3LCAxNzMyLCAyMjQwNCwgMjI0MTAsIDIyNDE2LCAyMjQyMSwgCisgICAgMjI0MjUsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NSwgMjI0NDksIDIyNDUyLCAyMjQ1OCwgMjI0NjUsIAorICAgIDIyNDczLCAyMjQ3OSwgMjI0ODUsIDIyNDkwLCAyMjQ5NSwgMjI0OTksIDEzODE2LCAxMzgyMywgMjI1MDQsIDIyNTE2LCAKKyAgICAyMjUxOSwgMjI1MjYsIDE2MzQ5LCAyMjUzMywgMjI1NDEsIDIyNTUyLCAyMjU2MSwgMjI1NzQsIDIyNTg0LCAyMjU5OCwgCisgICAgMjI2MTAsIDIyNjI0LCAyMjYzNiwgMjI2NDYsIDIyNjU4LCAyMjY2NCwgMjI2NzksIDIyNzAzLCAyMjcyMSwgMjI3NDAsIAorICAgIDIyNzUzLCAyMjc2NywgMjI3ODUsIDIyODAxLCAyMjgxOCwgMjI4MzYsIDIyODQ3LCAyMjg2NiwgMjI4ODMsIDIyOTAzLCAKKyAgICAyMjkyMSwgMjI5MzMsIDIyOTQ3LCAyMjk2MSwgMjI5NzMsIDIyOTkwLCAyMzAwOSwgMjMwMjcsIDIzMDM5LCAyMzA1NywgCisgICAgMjMwNzYsIDE0NTQ2LCAyMzA4OSwgMjMxMDksIDIzMTIxLCAxMDUxNiwgMjMxMzMsIDIzMTM4LCAyMzE0MywgMjMxNDgsIAorICAgIDIzMTU0LCAyMzE1OSwgMjMxNjMsIDIzMTcwLCAyMzk4LCAyMzE3NCwgMjMxODAsIDIzMTg0LCAyMzE4NywgMjMxOTEsIAorICAgIDIzMTk5LCAyMzIwNSwgMjIyMDIsIDIzMjA5LCAyMzIxOCwgMjMyMjksIDIzMjM1LCAyMzI0MSwgMjMyNTAsIDIzMjU4LCAKKyAgICAyMzI2NSwgMjMyNzAsIDIzMjc0LCAyMzI4MSwgMjMyODcsIDIzMjk2LCAyMzMwNCwgMjMzMTEsIDIzMzIxLCAyMzMzMCwgCisgICAgMjMzNDAsIDIzMzQ1LCAyMzM1NCwgMjMzNjMsIDIzMzc0LCAyMzM4NSwgMzk2MywgMjMzOTUsIDIzMzk5LCAyMzQwOSwgCisgICAgMjM0MTcsIDIzNDI3LCAyMzQzOCwgMjM0NDMsIDIzNDUzLCAyMzQ2MSwgMjM0NjgsIDIzNDc0LCAyMzQ4MSwgMjM0ODYsIAorICAgIDIyMjEyLCAyMzQ5MCwgMjM0OTksIDIzNTAzLCAyMzUwNiwgMjM1MTEsIDIzNTE4LCAyMzUyNywgMjM1MzUsIDIzNTQzLCAKKyAgICAyMzU1MywgMjM1NjIsIDIzNTY4LCAyMzU3NCwgMjIyMTcsIDIyMjIyLCAyMzU3OCwgMjM1ODgsIDIzNTk4LCAyMzYwOCwgCisgICAgMjM2MTYsIDIzNjIzLCAyMzYzMywgMjM2NDEsIDIzNjQ5LCAyMzY1NSwgMjM2NjMsIDkzMCwgMjM2NzIsIDE0NzM3LCA1NDIsIAorICAgIDIzNjg2LCAyMzY5NSwgMjM3MDMsIDIzNzE0LCAyMzcyNSwgMjM3MzUsIDIzNzQ0LCAyMzc1NiwgMjM3NjUsIDIzNzc0LCAKKyAgICAyMzc4MCwgMjM3ODksIDIzNzk4LCAyMzgwOCwgMjM4MTYsIDIzODI0LCA5MzUzLCAyMzgzMCwgMjM4MzMsIDIzODM3LCAKKyAgICAyMzg0MiwgMjM4NDcsIDk4NDEsIDIyMjM1LCAyMjI0MCwgMjM4NTUsIDIzODYxLCAyMzg2NywgMjM4NzIsIDIzODc3LCAKKyAgICAyMzg4MSwgMjM4ODksIDIzODk1LCAyMzkwMSwgMjM5MDUsIDM1MjUsIDIzOTEzLCAyMzkxOCwgMjM5MjMsIDIzOTI3LCAKKyAgICAyMzkzMSwgOTkyMSwgMjM5MzgsIDIzOTQ2LCAyMzk2MCwgMjM5NjcsIDIzOTczLCA5OTMwLCA5OTM2LCAyMzk4MSwgMjM5ODksIAorICAgIDIzOTk2LCAyNDAwMSwgMjQwMDYsIDIyMjQ1LCAyNDAxMiwgMjQwMjMsIDI0MDI3LCAyNDAzMiwgMjYwMSwgMjQwMzcsIAorICAgIDI0MDQ4LCAyNDA1NCwgMjQwNTksIDI0MDYzLCAyNDA2NywgMjQwNzAsIDI0MDc3LCAyNDA4NCwgMjQwOTEsIDI0MDk3LCAKKyAgICAyNDEwMSwgMjIyNTAsIDI0MTA2LCAyNDExMCwgMjQxMTQsIDEwMzcsIDI0MTE5LCAyNDEyNCwgMjQxMjksIDI0MTM0LCAKKyAgICAyNDEzOSwgMjQxNDQsIDI0MTQ5LCAyNDE1NCwgMjQxNTksIDI0MTY0LCAyNDE2OSwgMjQxNzQsIDI0MTc5LCAyNDE4NCwgCisgICAgMjQxOTAsIDI0MTk1LCAyNDIwMCwgMjQyMDUsIDI0MjEwLCAyNDIxNSwgMjQyMjAsIDI0MjI2LCAyNDIzMSwgMjQyMzYsIAorICAgIDI0MjQxLCAyNDI0NiwgMjQyNTEsIDI0MjU2LCAyNDI2MSwgMjQyNjcsIDI0MjczLCAyNDI3OCwgMjQyODQsIDI0Mjg5LCAKKyAgICAyNDI5NCwgNSwgMjQzMDAsIDI0MzA0LCAyNDMwOCwgMjQzMTIsIDI0MzE3LCAyNDMyMSwgMjQzMjUsIDI0MzI5LCAyNDMzMywgCisgICAgMjQzMzgsIDI0MzQyLCAyNDM0NywgMjQzNTEsIDI0MzU0LCAyNDM1OCwgMjQzNjMsIDI0MzY3LCAyNDM3MiwgMjQzNzYsIAorICAgIDI0MzgwLCAyNDM4NCwgMjQzODksIDI0MzkzLCAyNDM5NywgMjQ0MDcsIDI0NDEyLCAyNDQxNiwgMjQ0MjAsIDI0NDI1LCAKKyAgICAyNDQzMCwgMjQ0MzksIDI0NDQ0LCAyNDQ0OSwgMjQ0NTMsIDI0NDU3LCAyNDQ3MCwgMjQ0ODIsIDI0NDkxLCAyNDUwMCwgCisgICAgMjQ1MDYsIDI0NTExLCAyNDUxNSwgMjQ1MTksIDI0NTI5LCAyNDUzOCwgMjQ1NDYsIDI0NTUyLCAyNDU1NywgMjQ1NjEsIAorICAgIDI0NTY4LCAyNDU3OCwgMjQ1ODcsIDI0NTk1LCAyNDYwMywgMjQ2MTAsIDI0NjE4LCAyNDYyNywgMjQ2MzYsIDI0NjQ0LCAKKyAgICAyNDY0OSwgMjQ2NTMsIDI0NjU3LCAyNDY2MCwgMjQ2NjIsIDI0NjY2LCAyNDY3MCwgMjQ2NzUsIDI0NjgwLCAyNDY4NCwgCisgICAgMjQ2ODgsIDI0NjkxLCAyNDY5NSwgMjQ2OTgsIDI0NzAyLCAyNDcwNSwgMjQ3MDgsIDI0NzEyLCAyNDcxOCwgMjQ3MjIsIAorICAgIDI0NzI2LCAyNDczMCwgMjQ3MzUsIDI0NzQwLCAyNDc0NSwgMjQ3NDksIDI0NzUyLCAyNDc1NywgMjQ3NjMsIDI0NzY4LCAKKyAgICAyNDc3NCwgMjQ3NzksIDI0NzgzLCAyNDc4NywgMjQ3OTEsIDI0Nzk2LCAyNDgwMCwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgCisgICAgMjQ4MjAsIDI0ODI0LCAyNDgyNywgMjQ4MzEsIDI0ODM3LCAyNDg0MywgMjQ4NDcsIDI0ODUxLCAyNDg1NiwgMjQ4NjMsIAorICAgIDI0ODY5LCAyNDg3MywgMjQ4ODIsIDI0ODg2LCAyNDg5MCwgMjQ4OTMsIDI0ODk5LCAyNDkwNCwgMjQ5MTAsIDE0ODksIAorICAgIDE3OTEsIDI0OTE1LCAyNDkyMCwgMjQ5MjUsIDI0OTMwLCAyNDkzNSwgMjQ5NDAsIDI0OTQ1LCAyMTQ4LCAyMTk0LCAyNDk1MCwgCisgICAgMjQ5NTMsIDI0OTU3LCAyNDk2MSwgMjQ5NjYsIDI0OTcwLCAyNDk3NCwgMjQ5NzcsIDI0OTgyLCAyNDk4NywgMjQ5OTEsIAorICAgIDI0OTk0LCAyNDk5OSwgMjUwMDMsIDI1MDA4LCAyNTAxMiwgMTQ3NDksIDI1MDE3LCAyNTAyMCwgMjUwMjMsIDI1MDI3LCAKKyAgICAyNTAzMiwgMjUwMzYsIDI1MDQ5LCAyNTA1MywgMjUwNTYsIDI1MDY0LCAyNTA3MywgMjUwODAsIDI1MDg1LCAyNTA5MSwgCisgICAgMjUwOTcsIDI1MTA1LCAyNTExMiwgMjUxMTksIDI1MTIzLCAyNTEyNywgMjUxMzEsIDI1MTM2LCAyNTE0MSwgMjUxNDUsIAorICAgIDI1MTUzLCAyNTE1OCwgMjUxNzAsIDI1MTgxLCAyNTE4NiwgMjUxOTAsIDI1MTk0LCAyNTIwMCwgMjUyMDUsIDI1MjEwLCAKKyAgICAyNTIxNCwgMjUyMTgsIDI1MjIxLCAyNTIyNywgNzkxNSwgMjMxNiwgMjUyMzEsIDI1MjM2LCAyNTI1MiwgOTQ2OCwgMjUyNzIsIAorICAgIDI1MjgxLCAyNTI5NywgMjUzMDEsIDI1MzA0LCAyNTMxMCwgMjUzMjAsIDI1MzI2LCAyNTMzNSwgMjUzNTAsIDI1MzYyLCAKKyAgICAyNTM3MywgMjUzODEsIDI1MzkwLCAyNTM5NiwgMjU0MDUsIDI1NDE1LCAyNTQyNiwgMjU0MzcsIDI1NDQ2LCAyNTQ1MywgCisgICAgMjU0NjIsIDI1NDcwLCAyNTQ3NywgMjU0ODUsIDI1NDkyLCAyNTQ5OSwgMjU1MTIsIDI1NTE5LCAyNTUyNSwgMjU1MzAsIAorICAgIDI1NTM5LCAyNTU0NSwgMjU1NTAsIDI1NTU4LCAyNTU2NSwgMjM0MTksIDI1NTc3LCAyNTU4OSwgMjU2MDMsIDI1NjExLCAKKyAgICAyNTYxOCwgMjU2MzAsIDI1NjM5LCAyNTY0OCwgMjU2NTYsIDI1NjY0LCAyNTY3MiwgMjU2NzksIDI1Njg4LCAyNTY5NiwgCisgICAgMjU3MDYsIDI1NzE1LCAyNTcyNSwgMjU3MzQsIDI1NzQzLCAyNTc1MSwgMjU3NTYsIDI1NzYwLCAyNTc2MywgMjU3NjcsIAorICAgIDI1NzcxLCAyNTc3NSwgMjU3NzksIDI1NzgzLCAyNTc4OSwgMjU3OTUsIDI1ODAzLCAxNDc5NCwgMjU4MTAsIDI1ODE1LCAKKyAgICAyNTgyMiwgMjU4MjgsIDI1ODM1LCAxNDgwMiwgMjU4NDIsIDI1ODQ1LCAyNTg1NywgMjU4NjUsIDI1ODcxLCAyNTg3NiwgCisgICAgMjU4ODAsIDk4NzEsIDI1ODkxLCAyNTkwMSwgMjU5MTAsIDI1OTE3LCAyNTkyMSwgMTQ4MDcsIDI1OTI0LCAyNTkzMSwgCisgICAgMjU5MzUsIDI1OTQxLCAyNTk0NCwgMjU5NTEsIDI1OTU3LCAyNTk2NCwgMjU5NzAsIDI1OTc0LCAyNTk3OSwgMjU5ODMsIAorICAgIDI1OTkyLCAyNTk5OSwgMjYwMDUsIDc5NTYsIDI2MDEyLCAyNjAyMCwgMjYwMjcsIDI2MDMzLCAyNjAzOCwgMjYwNDQsIAorICAgIDI2MDUwLCAyNjA1OCwgMjYwNjIsIDI2MDY1LCAyNjA2NywgMjU3NjgsIDI2MDc2LCAyNjA4MiwgMjYwOTIsIDI2MDk3LCAKKyAgICAyNjEwNCwgMjYxMTAsIDI2MTE1LCAyNjEyMCwgMjYxMjUsIDI2MTI5LCAyNjEzNCwgMjYxNDEsIDI2MTUwLCAyNjE1NCwgCisgICAgMjYxNjEsIDI2MTcwLCAyNjE3NiwgMjYxODEsIDI2MTg3LCAyNjE5MiwgMjYxOTksIDI2MjEwLCAyNjIxNSwgMjYyMTksIAorICAgIDI2MjI5LCAyNjIzNSwgMjYyMzksIDI2MjQ0LCAyNjI1NCwgMjYyNjMsIDI2MjY3LCAyNjI3NCwgMjYyODIsIDI2Mjg5LCAKKyAgICAyNjI5NSwgMjYzMDAsIDI2MzA4LCAyNjMxNSwgMjYzMjcsIDI2MzM2LCAyNjM0MCwgMTMwNDYsIDI2MzQ4LCAyNjM1OCwgCisgICAgMjYzNjIsIDI1MDYwLCAyNjM3MywgMjYzNzgsIDI2MzgyLCAyNjM4OSwgMjYzOTYsIDIxOTYxLCAyNTY5MywgMjY0MDEsIAorICAgIDI2NDA1LCAyNjQwOCwgMjI4NTMsIDI2NDEzLCAyNjQyNywgMjY0NDMsIDI2NDYxLCAyNjQ4MCwgMjY0OTcsIDI2NTE1LCAKKyAgICAyMjg3MiwgMjY1MzIsIDI2NTUyLCAyMjg4OSwgMjY1NjQsIDI2NTc2LCAxNTczMiwgMjY1ODgsIDIyOTA5LCAyNjYwMiwgCisgICAgMjY2MTQsIDEwNTI5LCAyNjYyOCwgMjY2MzMsIDI2NjM4LCAyNjY0MywgMjY2NDksIDI2NjU1LCAyNjY2MSwgMjY2NjUsIAorICAgIDI2NjcyLCAyNjY3NywgMjY2ODcsIDI2NjkzLCAxMDE3NiwgMjY2OTksIDI2NzAxLCAyNjcwNiwgMjY3MTQsIDI2NzE4LCAKKyAgICAyNjEzNywgMjY3MjQsIDI2NzMxLCAxMTUxNywgMTE1MjcsIDI2NzM4LCAyNjc0OCwgMjY3NTMsIDI2NzU3LCAyNjc2MCwgCisgICAgMjY3NjYsIDI2Nzc0LCAyNjc4NiwgMjY3OTYsIDI2ODEyLCAyNjgyNSwgMjY4MzksIDE1NzUwLCAyNjg1MywgMjY4NjAsIAorICAgIDI2ODY0LCAyNjg2NywgMjY4NzIsIDI2ODc2LCAyNjg4MywgMjY4OTAsIDI2OTAwLCAyNjkwNSwgMjY5MTAsIDI2OTE1LCAKKyAgICAyNjkyMywgMjY5MzEsIDI2OTQwLCAyNjk0NSwgOTU2NSwgMjY5NDksIDI2OTUyLCAyNjk1NSwgMjY5NjAsIDI2OTY3LCAKKyAgICAyNjk3MiwgMjY5ODgsIDI2OTk2LCAyNzAwNCwgOTQxNiwgMjcwMTIsIDI3MDE3LCAyNzAyMSwgMjcwMjcsIDI3MDMzLCAKKyAgICAyNzAzNiwgMjcwNDIsIDI3MDU0LCAyNzA2MiwgMjcwNjksIDI3MDc1LCAyNzA4MiwgMjcwOTMsIDI3MTA3LCAyNzEyMCwgCisgICAgMjcxMjksIDI3MTM4LCAyNzE1MCwgMjcxNjEsIDI3MTcxLCAyNzE4MCwgMjcxODksIDI3MTk3LCAyNzIwOCwgNzkzOCwgCisgICAgMjcyMTUsIDI3MjIxLCAyNzIyNiwgMjcyMzIsIDI3MjM5LCAyNzI0OSwgMjcyNTksIDI3MjY4LCAyNzI3NCwgMjcyODEsIAorICAgIDI3Mjg2LCAyNzI5MywgMjczMDEsIDI3MzA5LCAyNzMyMSwgNjI0NiwgMjczMjgsIDI3MzM3LCAyNzM0NSwgMjczNTEsIAorICAgIDI3MzU3LCAyNzM2MiwgMjczNjYsIDI3MzY5LCAyNzM3NSwgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTYsIDI3NDA4LCAKKyAgICAyNzQxOSwgMjc0MjgsIDI3NDM2LCAxNDkzNCwgMjc0NDEsIDI3NDQ3LCAyNzQ1MywgMTE1MTAsIDg2MzUsIDI3NDU4LCAKKyAgICAyNzQ2MiwgMjc0NjUsIDI3NDY4LCAyNzQ3NCwgMjc0ODIsIDI3NDkwLCAyNzQ5NCwgMjc0OTgsIDI3NTAzLCAyNzUwNiwgCisgICAgMjc1MTUsIDI3NTE5LCAyNzUyNywgMjc1MzgsIDI3NTQyLCAyNzU0OCwgMjc1NTQsIDI3NTU4LCAyNzU2NCwgMjc1NzIsIAorICAgIDI3NTk0LCAyNzYxOCwgMjc2MjUsIDI3NjMyLCAyNzYzOCwgMjc2NDYsIDI3NjUyLCAyNzY1NywgMjc2NjgsIDI3Njg2LCAKKyAgICAyNzY5MywgMjc3MDEsIDI3NzA1LCAyNzcxNCwgMjc3MjcsIDI3NzM1LCAyNzc0NywgMjc3NTgsIDI3NzY4LCAyNzc4MiwgCisgICAgMjc3OTEsIDI3Nzk5LCAyNzgxMSwgOTQ4NSwgMjc4MjIsIDI3ODMzLCAyNzg0NSwgMjc4NTUsIDI3ODY0LCAyNzg2OSwgCisgICAgMjc4NzMsIDI3ODgxLCAyNzg5MSwgMjc4OTYsIDI3OTAwLCAyNzkwMywgMjc5MDYsIDI3OTE0LCAyNzkyMiwgMjc5MzEsIAorICAgIDI3OTQxLCAyNzk1MCwgMjc5NTYsIDI3OTcwLCAyNjYzLCAyNzk5MiwgMjgwMDMsIDI4MDEyLCAyODAyMiwgMjgwMzQsIAorICAgIDI4MDQzLCAyODA1MiwgMjgwNjIsIDI4MDcwLCAyODA3OCwgMjgwODcsIDI4MDkyLCAyODEwMywgMjgxMDgsIDI4MTE5LCAKKyAgICAyODEyMywgMjgxMzMsIDI4MTQyLCAyODE1MCwgMjgxNjAsIDI4MTcwLCAyODE3OCwgMjgxODcsIDI4MTk0LCAyODIwMiwgCisgICAgMjgyMDksIDI4MjE4LCAyODIyMiwgMjgyMzAsIDI4MjM3LCAyODI0NSwgMjgyNTIsIDI4MjYzLCAyODI3OCwgMjgyODUsIAorICAgIDI4MjkxLCAyODMwMSwgMjgzMTAsIDI4MzE2LCAyODMyMCwgMjgzMjcsIDI4MzMxLCAxNDAxOCwgMjgzMzcsIDI4MzQxLCAKKyAgICAyODM0NiwgMjgzNTMsIDI4MzU3LCAyODM2MSwgMjgzNjksIDI4Mzc3LCAyODM4MywgMjgzOTIsIDI4Mzk5LCAyODQwNCwgCisgICAgMjg0MDksIDI4NDE5LCAyMzQ4OCwgMjg0MjMsIDI4NDI2LCAyODQzMSwgMjg0MzYsIDI4NDQxLCAyODQ0NiwgMjg0NTEsIAorICAgIDI4NDU2LCAyODQ2MSwgMjg0NjYsIDI4NDcyLCAyODQ3NywgMjg0ODIsIDI4NDg4LCAxMjE4LCA3MDQsIDI4NDkzLCAyODUwMiwgCisgICAgMjM2NCwgMjg1MDksIDI4NTE0LCAyODUxOCwgMjg1MjQsIDEyNjcsIDU0NiwgMzE4LCAyODUyOSwgMjg1MzgsIDI4NTQ2LCAKKyAgICAyODU1NSwgMjg1NjMsIDI4NTc0LCAyODU4MywgMjg1OTEsIDI4NTk1LCAyODU5OCwgMjg2MDYsIDI4NjE0LCAyODYxOSwgCisgICAgMTQ3NjIsIDI4NjI1LCAyODYzMSwgMjg2MzcsIDU4NzIsIDI4NjQyLCAyODY0NiwgMjg2NTIsIDI4NjU2LCAyODY2MywgCisgICAgMTQ1NSwgMjg2NjksIDI4Njc2LCA5NTcyLCAyODY4MCwgMjg2OTAsIDI4Njk4LCAyODcwNCwgMjg3MTMsIDI4NzIxLCAKKyAgICAyODcyNywgMjg3MzUsIDI4NzQyLCAxMTEwMywgMjg3NDgsIDI4NzU1LCAyODc2MCwgMjg3NjcsIDE0OTYsIDIxNDcsIAorICAgIDI4NzczLCAyODc3OSwgMjg3ODYsIDI4Nzk3LCAyODgwOCwgMjg4MTYsIDI4ODIzLCAyODgzMywgMjg4NDIsIDI4ODUwLCAKKyAgICAyODg1OSwgMjg4NjYsIDI4ODczLCAyODg4NiwgMjg4OTcsIDEyNzIsIDI4OTE2LCAyODkyMSwgMjg5MjksIDM1NzUsIAorICAgIDI4OTMzLCAyODkzOCwgMjg5NDIsIDE0NTksIDI0Njg5LCAyODk1MiwgMjg5NTYsIDI4OTYxLCAyODk2NSwgMzQ5MywgCisgICAgMjg5NzEsIDI4OTc5LCAyODk4NiwgMjg5OTcsIDI5MDA1LCAyOTAxMywgMzU3NiwgMjc5LCAyOTAxOCwgMjkwMjYsIDI5MDM0LCAKKyAgICAyOTA0MSwgMjkwNDcsIDI5MDUyLCAyMjE2LCAyOTA1OSwgMjkwNjUsIDI1OTc1LCAyNjIwNSwgMjkwNzEsIDEwNiwgMjkwNzUsIAorICAgIDI5MDc5LCAyOTA4NSwgNjE1LCA5MzIxLCAyOTA5MCwgMjkwOTcsIDI5MTAzLCAyMzI3LCAyOTEwNywgMjkxMTEsIDE1MTc0LCAKKyAgICAyOTExNCwgMjkxMTksIDI5MTI2LCAyOTEzMiwgMjkxMzcsIDI5MTQ1LCAyOTE1MiwgMjkxNTgsIDIyMzM4LCAyOTE2MiwgCisgICAgMjkxNjYsIDM2NDYsIDE2NjEyLCAyOTE3MCwgMjkxNzUsIDI5MTc4LCAyOTE4NiwgMjkxOTQsIDI5MTk5LCAyOTIwMiwgCisgICAgMjkyMDksIDI5MjE5LCAyOTIzMSwgMjkyMzYsIDI5MjQwLCAyOTI0OCwgMjkyNTUsIDI5MjYxLCAyOTI2OCwgMjkyNzUsIAorICAgIDI5Mjc4LCAyOTI4MiwgMjkyODYsIDE0NjMsIDI5Mjk2LCAyOTI5OCwgMjkzMDMsIDI5MzA5LCAyOTMxNSwgMjkzMjAsIAorICAgIDI5MzI1LCAyOTMzMCwgMjkzMzUsIDI5MzQwLCAyOTM0NSwgMjkzNTAsIDI5MzU1LCAyOTM2MCwgMjkzNjUsIDI5MzcwLCAKKyAgICAyOTM3NSwgMjkzODAsIDI5Mzg1LCAyOTM5MSwgMjkzOTcsIDI5NDAzLCAyOTQwOSwgMjk0MTQsIDI5NDE5LCAyOTQyNCwgCisgICAgMjk0MzAsIDI5NDM1LCAyOTQ0MCwgMjk0NDUsIDI5NDUxLCAyOTQ1NiwgMjk0NjIsIDI5NDY3LCAyOTQ3MiwgMjk0NzcsIAorICAgIDI5NDgyLCAyOTQ4OCwgMjk0OTMsIDI5NDk5LCAyOTUwNCwgMjk1MDksIDI5NTE0LCAyOTUxOSwgMjk1MjUsIDI5NTMwLCAKKyAgICAyOTUzNiwgMjk1NDEsIDI5NTQ2LCAyOTU1MSwgMjk1NTYsIDI5NTYxLCAyOTU2NiwgMjk1NzEsIDI5NTc2LCAyOTU4MSwgCisgICAgMjk1ODcsIDI5NTkzLCAyOTU5OSwgMjk2MDQsIDI5NjA5LCAyOTYxNCwgMjk2MTksIDI5NjI1LCAyOTYzMSwgMjk2MzcsIAorICAgIDI5NjQzLCAyOTY0OSwgMjk2NTUsIDI5NjYwLCAyOTY2NiwgMjk2NzEsIDI5Njc2LCAyOTY4MSwgMjk2ODYsIDI5NjkyLCAKKyAgICAyNDQzLCAyOTY5NywgMjQ1MCwgMjQ1NywgMjc1NCwgMjk3MDIsIDI0NjMsIDI0NzMsIDI5NzA4LCAyOTcxMiwgMjk3MTcsIAorICAgIDI5NzIyLCAyOTcyOCwgMjk3MzMsIDI5NzM4LCAyOTc0MiwgMjk3NDcsIDI5NzUzLCAyOTc1OCwgMjk3NjMsIDI5NzY4LCAKKyAgICAyOTc3NCwgMjk3NzksIDI5NzgzLCAyOTc4NywgMjk3OTIsIDI5Nzk3LCAyOTgwMiwgMjk4MDcsIDI5ODEyLCAyOTgxOCwgCisgICAgMjk4MjQsIDI5ODI5LCAyOTgzMywgMjk4MzgsIDI5ODQ0LCAyOTg0OCwgMjk4NTMsIDI5ODU4LCAyOTg2MywgMjk4NjgsIAorICAgIDI5ODcyLCAyOTg3NSwgMjk4ODAsIDI5ODg1LCAyOTg5MCwgMjk4OTUsIDI5OTAwLCAyOTkwNiwgMjk5MTIsIDI5OTE3LCAKKyAgICAyOTkyMiwgMjk5MjYsIDI5OTMxLCAyOTkzNiwgMjk5NDEsIDI5OTQ2LCAyOTk1MSwgMjk5NTUsIDI5OTYwLCAyOTk2NSwgCisgICAgMjk5NzAsIDI5OTc0LCAyOTk3OCwgMjk5ODIsIDI5OTg3LCAyOTk5NSwgMzAwMDAsIDMwMDA2LCAzMDAxMiwgMzAwMTgsIAorICAgIDMwMDIzLCAzMDAyNywgMzAwMzAsIDMwMDM1LCAzMDA0MCwgMzAwNDQsIDMwMDQ5LCAzMDA1MywgMzAwNTgsIDMwMDYyLCAKKyAgICAzMDA2NSwgMzAwNzAsIDE3Mjg5LCAzMDA3NSwgMzAwODAsIDMwMDg1LCAzMDA5MywgMjEyNjcsIDI4NjczLCA5MDE5LCAKKyAgICAzMDA5OCwgMzAxMDMsIDMwMTA3LCAzMDExMiwgMzAxMTYsIDMwMTIwLCAzMDEyNSwgMzAxMjksIDMwMTMyLCAzMDEzNSwgCisgICAgMzAxMzksIDMwMTQ0LCAzMDE0OCwgMzAxNTYsIDMwMTYwLCAzMDE2MywgMzAxNjgsIDMwMTcyLCAzMDE3NiwgMzAxODEsIAorICAgIDMwMTg2LCAzMDE5MCwgMzAxOTYsIDMwMjAxLCAzMDIwNiwgMzAyMTMsIDMwMjIwLCAzMDIyNCwgMzAyMjcsIDMwMjMzLCAKKyAgICAzMDI0MiwgMzAyNDksIDMwMjU3LCAzMDI2NCwgMzAyNjgsIDMwMjczLCAzMDI3NywgMzAyODEsIDMwMjg3LCAzMDI5MywgCisgICAgMzAyOTcsIDMwMzAzLCAzMDMwOCwgMzAzMTMsIDMwMzIwLCAzMDMyNiwgMzAzMzIsIDMwMzM4LCAzMDM0NCwgMzAzNTEsIAorICAgIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgMzAzODcsIDMwMzkzLCAzMDQwMCwgMzA0MDYsIDMwNDEzLCAKKyAgICAzMDQxOSwgMzA0MjUsIDMwNDMxLCAzMDQzNywgMzA0NDMsIDMwNDQ5LCAzMDQ1NSwgMzA0NjEsIDMwNDY3LCAxMTQxMSwgCisgICAgMzA0NzMsIDMwNDc4LCAzMDQ4MywgMzA0ODYsIDMwNDk0LCAzMDQ5OSwgMzA1MDgsIDMwNTE0LCAzMDUxOSwgMzA1MjQsIAorICAgIDMwNTI5LCAzMDUzMywgMzA1MzgsIDMwNTQzLCAzMDU0OCwgMzA1NTMsIDMwNTU4LCAzMDU2NSwgMzA1NzIsIDMwNTc4LCAKKyAgICAzMDU4NCwgMzA1ODksIDE2MjkwLCAzMDU5NiwgMzA2MDIsIDMwNjA5LCAzMDYxNSwgMzA2MjEsIDMwNjI2LCAzMDYzNCwgCisgICAgMzA2MzksIDE2MDY5LCAzMDY0MywgMzA2NDgsIDMwNjUzLCAzMDY1OSwgMzA2NjQsIDMwNjY5LCAzMDY3MywgMzA2NzgsIAorICAgIDMwNjgzLCAzMDY4OSwgMzA2OTQsIDMwNjk5LCAzMDcwMywgMzA3MDgsIDMwNzEzLCAzMDcxNywgMzA3MjIsIDMwNzI3LCAKKyAgICAzMDczMiwgMzA3MzYsIDMwNzQxLCAzMDc0NiwgMzA3NTEsIDMwNzU1LCAzMDc1OSwgMTUyODAsIDMwNzYzLCAzMDc3MiwgCisgICAgMzA3NzgsIDMwNzg0LCAzMDc5MywgMzA4MDEsIDMwODEwLCAzMDgxOCwgMzA4MjMsIDMwODI3LCAzMDgzNCwgMzA4NDAsIAorICAgIDMwODQ0LCAzMDg0NywgMzA4NTIsIDMwODYxLCAzMDg2OSwgMzA4NzQsIDE0OTUsIDMwODgwLCAzMDg4MywgMzA4ODcsIAorICAgIDIyNDExLCAyMjQxNywgMzA4OTMsIDMwODk3LCAzMDkwOCwgMzA5MTksIDMwOTMwLCAzMDk0MiwgMzA5NDksIDMwOTU2LCAKKyAgICAzMDk2MSwgMzA5NjUsIDU5MDksIDc1NSwgMjEyNjYsIDMwOTczLCAzMDk3OCwgMzA5ODIsIDMwOTg3LCAzMDk5MSwgMzA5OTcsIAorICAgIDMxMDAyLCAzMTAwOCwgMzEwMTMsIDMxMDE5LCAzMTAyNCwgMzEwMzAsIDMxMDM1LCAzMTA0MSwgMzEwNDcsIDMxMDUzLCAKKyAgICAzMTA1OCwgMzEwMTQsIDMxMDIwLCAzMTA2MiwgMzEwNjcsIDMxMDczLCAzMTA3OCwgMzEwODQsIDMxMDg5LCAzMTA5NSwgCisgICAgMzExMDAsIDMxMDI1LCAxMDQxNCwgMzExMDQsIDMxMDM2LCAzMTA0MiwgMzEwNDgsIDI4MzEsIDM0MjMsIDMxMTEwLCAKKyAgICAzMTExMywgMzExMTksIDMxMTI1LCAzMTEzMSwgMzExMzgsIDMxMTQ0LCAzMTE1MCwgMzExNTYsIDMxMTYyLCAzMTE2OCwgCisgICAgMzExNzQsIDMxMTgwLCAzMTE4NiwgMzExOTIsIDMxMTk4LCAzMTIwNCwgMzEyMTAsIDMxMjE3LCAzMTIyMywgMzEyMjksIAorICAgIDMxMjM1LCAzMTI0MSwgMzEyNDcsIDMxMjUwLCAzMTI1NSwgMzEyNTgsIDMxMjY1LCAzMTI3MywgMzEyNzgsIDMxMjgzLCAKKyAgICAzMTI4OSwgMzEyOTQsIDMxMjk5LCAzMTMwMywgMzEzMDgsIDMxMzE0LCAzMTMxOSwgMzEzMjUsIDMxMzMwLCAzMTMzNiwgCisgICAgMzEzNDEsIDMxMzQ3LCAzMTM1MywgMzEzNTcsIDMxMzYyLCAzMTM2NywgMzEzNzIsIDMxMzc3LCAzMTM4MSwgMzEzODYsIAorICAgIDMxMzkxLCAzMTM5NiwgMzE0MDIsIDMxNDA4LCAzMTQxNCwgMzE0MjAsIDMxNDI1LCAzMTQyOSwgMzE0MzIsIDMxNDM4LCAKKyAgICAzMTQ0NCwgMzE0NTMsIDMxNDYxLCAzMTQ2OCwgMzE0NzMsIDMxNDc3LCAzMTQ4MSwgMzE0ODYsIDE1MTMzLCAzMTQ5MSwgCisgICAgMzE0OTksIDMxNTA1LCAzNjgzLCAxMzc3LCAzMTUxMCwgMzE1MTQsIDgwMDUsIDMxNTIwLCAzMTUyNiwgMzE1MzMsIDgwMTQsIAorICAgIDMxNTM3LCAzMTU0MywgMzE1NTAsIDMxNTU2LCAzMTU2NSwgMzE1NzMsIDMxNTg1LCAzMTU4OSwgMzE1OTYsIDMxNjAyLCAKKyAgICAzMTYwNiwgMzE2MDksIDMxNjE4LCAzMTYyNiwgMzEwMTUsIDMxNjMxLCAzMTY0MSwgMzE2NTEsIDMxNjYxLCAzMTY2NywgCisgICAgMzE2NzIsIDMxNjgyLCAzMTY4NywgMzE3MDAsIDMxNzE0LCAzMTcyNSwgMzE3MzcsIDMxNzQ5LCAzMTc2MywgMzE3NzYsIAorICAgIDMxNzg4LCAzMTgwMCwgMTQ1ODcsIDMxODE0LCAzMTgxOSwgMzE4MjQsIDMxODI4LCAzMTgzMiwgMzE4MzYsIDE3ODAsIAorICAgIDI3MTU5LCAzMTg0MCwgMzE4NDUsIDMxMDYzLCAzMTg1MCwgMzE4NTMsIDMxODU4LCAzMTg2MywgMzE4NjgsIDMxODc0LCAKKyAgICAzMTg4MCwgMTAwOTEsIDMxODg1LCAzMTg5MiwgMTU2ODQsIDMxODk4LCAzMTkwMywgMzE5MDgsIDMxOTEyLCAzMTkxNywgCisgICAgMzE5MjIsIDMxMDY4LCAzMTkyNywgMzE5MzIsIDMxOTM3LCAzMTk0MywgMzEwNzQsIDMxOTQ4LCAzMTk1MSwgMzE5NTgsIAorICAgIDMxOTY2LCAzMTk3MiwgMzE5NzgsIDMxOTg0LCAzMTk5NSwgMzIwMDAsIDMyMDA3LCAzMjAxNCwgMzIwMjEsIDMyMDI5LCAKKyAgICAzMjAzOCwgMzIwNDcsIDMyMDUzLCAzMjA1OSwgMzIwNjcsIDMxMDc5LCAzMjA3MiwgMzIwNzgsIDMyMDg0LCAzMTA4NSwgCisgICAgMzIwODksIDMyMDk0LCAzMjEwMiwgMzIxMTAsIDMyMTE2LCAzMjEyMywgMzIxMjksIDMyMTM2LCAzMjE0MywgMzIxNDksIAorICAgIDMyMTU3LCAzMjE2NywgMzIxNzQsIDMyMTc5LCAzMjE4NSwgMzIxOTAsIDMyMTk1LCAzMjIwMiwgMzIyMTEsIDMyMjE5LCAKKyAgICAzMjIyNCwgMzIyMzAsIDMyMjM3LCAzMjI0NSwgMzIyNTEsIDMyMjU2LCAzMjI2MiwgMzIyNzEsIDI3OTM2LCAzMjI3OCwgCisgICAgMzIyODIsIDMyMjg3LCAzMjI5NiwgMzIzMDEsIDMyMzA2LCAzMjMxMSwgMTIzOTgsIDMyMzE5LCAzMjMyNCwgMzIzMjksIAorICAgIDMyMzM0LCAzMjMzOCwgMzIzNDMsIDMyMzQ4LCAzMjM1NSwgMzIzNjAsIDMyMzY1LCAzMjM3MCwgMzEwOTAsIDIxMjAzLCAKKyAgICAzMjM3NiwgMjUxOSwgMjQ0LCAzMjM3OSwgMzIzODIsIDMyMzg2LCAzMjM5MCwgMzI0MDAsIDMyNDA4LCAzMjQxMiwgMzI0MTksIAorICAgIDMyNDI2LCAzMjQzMCwgMzI0MzMsIDMyNDM5LCAzMjQ0NywgMzI0NTUsIDMyNDU5LCAzMjQ2MywgMzI0NjYsIDMyNDczLCAKKyAgICAzMjQ3NywgMzI0ODEsIDMyNDg4LCAzMjQ5NiwgMzEwMjYsIDMyNTAzLCAzMjUxMSwgMTAxNTEsIDY2MCwgMzA4LCAzMjUyMywgCisgICAgMzI1MjgsIDMyNTMzLCAzMjUzOSwgMzI1NDQsIDMyNTQ5LCAzNzA0LCAzMjU1NCwgMzI1NTcsIDMyNTYyLCAzMjU2NywgCisgICAgMzI1NzIsIDMyNTc3LCAzMjU4MiwgMzI1ODksIDIyNTEyLCAzMjU5NCwgMzI1OTksIDMyNjA0LCAzMjYwOSwgMzI2MTQsIAorICAgIDMyNjIwLCAzMjYyNSwgMzI2MzEsIDMxMjYxLCAzMjYzNywgMzI2NDIsIDMyNjQ4LCAzMjY1NCwgMzI2NjQsIDMyNjY5LCAKKyAgICAzMjY3NCwgMzI2NzgsIDMyNjgzLCAzMjY4OCwgMzI2OTMsIDMyNjk4LCAzMjcxMSwgMzI3MTYsIDIyMjg5LCAxNjY5MiwgCisgICAgMzcxMCwgMzI3MjAsIDMyNzI1LCAzMjczMCwgMzI3MzYsIDMyNzQxLCAzMjc0NiwgMzI3NTAsIDMyNzU1LCAzMjc2MCwgCisgICAgMzI3NjYsIDMyNzcxLCAzMjc3NiwgMTM4MiwgMzI3ODAsIDMyNzg1LCAzMjc5MCwgMzI3OTUsIDMyNzk5LCAzMjgwNCwgCisgICAgMzI4MDksIDMyODE0LCAzMjgyMCwgMzI4MjYsIDMyODMxLCAzMjgzNSwgMzI4MzksIDMyODQ0LCAzMjg0OSwgMzI4NTQsIAorICAgIDMyODU4LCAzMjg2NiwgMzI4NzAsIDMyODc2LCAzMjg4MCwgMzI4ODcsIDE2NDg1LCAzMTAzNywgMzI4OTMsIDMyOTAwLCAKKyAgICAzMjkwOCwgMzI5MTUsIDMyOTIxLCAzMjkzNCwgMzI5NDYsIDMyOTUyLCAzMjk1NiwgMjc3MywgMzI5NjAsIDMyOTY0LCAKKyAgICAzMjQ2OCwgMzI5NzMsIDMyOTg0LCAzMjk4OSwgMzI5OTQsIDMyOTk5LCAzMzAwMywgMzMwMDgsIDIyNDIyLCAzMzAxMiwgCisgICAgMzMwMTYsIDMzMDIxLCAzMTA0MywgMjEyODcsIDMzMDI1LCAzMzAzMCwgMzMwMzYsIDMzMDQxLCAzMzA0NSwgMzMwNDksIAorICAgIDMzMDUyLCAzMzA1NiwgMzMwNjIsIDMzMDczLCAzMzA4NSwgMzEwNDksIDMzMDkwLCAzMzA5MywgMzMwOTcsIDM0NywgCisgICAgMzMxMDIsIDMzMTA3LCAzMzExMiwgMzMxMTcsIDMzMTIyLCAzMzEyNywgMzMxMzMsIDMzMTM4LCAzMzE0MywgMzMxNDksIAorICAgIDMzMTU0LCAzMzE2MCwgMzMxNjUsIDMzMTcxLCAzMzE3NiwgMzMxODEsIDMzMTg2LCAzMzE5MSwgMzMxOTYsIDMzMjAxLCAKKyAgICAzMzIwNiwgMzMyMTEsIDMzMjE3LCAzMzIyMiwgMzMyMjcsIDMzMjMyLCAzMzIzNywgMzMyNDIsIDMzMjQ3LCAzMzI1MiwgCisgICAgMzMyNTgsIDMzMjY0LCAzMzI2OSwgMzMyNzQsIDMzMjc5LCAzMzI4NCwgMzMyODksIDMzMjk0LCAzMzI5OSwgMzMzMDQsIAorICAgIDMzMzA5LCAzMzMxNCwgMzMzMTksIDMzMzI0LCAzMzMyOSwgMzMzMzQsIDMzMzM5LCAzMzM0NCwgMzMzNDksIDMzMzU0LCAKKyAgICAzMzM2MCwgMzEzLCAyNiwgMzMzNjUsIDMzMzY5LCAzMzM3MywgMzMzODEsIDMzMzg1LCAzMzM4OSwgMzMzOTIsIDMzMzk1LCAKKyAgICAzMzM5NywgMzM0MDIsIDMzNDA2LCAzMzQxMSwgMzM0MTUsIDMzNDIwLCAzMzQyNCwgMzM0MjksIDMzNDMzLCAzMzQzNiwgCisgICAgMzM0MzgsIDMzNDQyLCAzMzQ0NywgMzM0NTEsIDMzNDYyLCAzMzQ2NSwgMzM0NjcsIDMzNDcxLCAzMzQ4MywgMzM0OTIsIAorICAgIDMzNDk2LCAzMzUwMCwgMzM1MDYsIDMzNTExLCAzMzUyMCwgMzM1MjYsIDMzNTMxLCAzMzUzNiwgMzM1NDAsIDMzNTQ1LCAKKyAgICAzMzU1MiwgMzM1NTcsIDMzNTYzLCAzMzU2OCwgMzM1NzIsIDMzNTc5LCAyNTcwMSwgMjU3MTEsIDMzNTgzLCAzMzU4OCwgCisgICAgMzM1OTMsIDMzNTk4LCAzMzYwNSwgMzM2MDksIDMzNjE2LCA4MTEzLCAzMzYyMiwgMzM2MzEsIDMzNjM5LCAzMzY1NCwgCisgICAgMzM2NjgsIDMzNjc2LCAzMzY4NywgMzM2OTYsIDMzNzAxLCA3MjI3LCAzMzcxMSwgMzM3MTYsIDMzNzIxLCAzMzcyNSwgCisgICAgMzM3MjgsIDMzNzMyLCAzMzczNywgMzM3NDEsIDMzNzQ4LCAzMzc1MywgMzM3NTgsIDg5MTIsIDMzNzY4LCAzMzc3MCwgCisgICAgMzM3NzMsIDMzNzc3LCAzMzc4MywgMzM3ODcsIDMzNzkyLCAzMzc5NywgMzM4MDMsIDMzODA4LCAzMzgxNCwgMzM4MTksIAorICAgIDMzODI5LCAzMzgzOCwgMzM4NDYsIDMzODUxLCAzMzg1NywgMzM4NjIsIDMzODY5LCAzMzg3MywgMzM4ODEsIDMzODg4LCAKKyAgICAzMzkwMSwgMzM5MDksIDMzOTEzLCAzMzkyMywgMzM5MjgsIDMzOTMyLCAzMzk0MCwgMzM5NDgsIDMzOTUyLCAzMzk2MSwgCisgICAgMzM5NjcsIDMzOTcyLCAzMzk4MCwgMzM5OTAsIDMzOTk5LCAzNDAwOCwgMzQwMTcsIDM0MDI4LCAzNDAzNiwgMzQwNDcsIAorICAgIDM0MDU2LCAzNDA2MywgMzQwNjksIDM0MDc0LCAzNDA4NSwgMzQwOTAsIDM0MDk0LCAzNDA5NywgMzQxMDEsIDM0MTA5LCAKKyAgICAzNDExNSwgMzQxMjMsIDM0MTMwLCAzNDEzNiwgMzQxNDEsIDM0MTQ3LCAyNDE4LCAzNDE1MSwgMzQxNTMsIDM0MTU4LCAKKyAgICAzNDE2MywgMzQxNjgsIDM0MTcxLCAzNDE3MywgMzQxNzcsIDM0MTgwLCAzNDE4NywgMzQxOTEsIDk4ODQsIDM0MTk1LCAKKyAgICAzNDIwMSwgMzQyMTEsIDM0MjE2LCAzNDIyMiwgMzQyMjYsIDM0MjMxLCAzNDI0NCwgMjYwODcsIDM0MjUwLCAzNDI1OSwgCisgICAgMTc0NjIsIDM0MjY2LCAzNDI3NSwgMzE2NDcsIDM0MjgzLCAzNDI4OCwgMzQyOTIsIDM0MzAwLCAzNDMwNywgMzQzMTIsIAorICAgIDM0MzE2LCAzNDMyMSwgMzQzMjUsIDM0MzMzLCAzNDMzOSwgMzQzNDUsIDM0MzUwLCAzNDM1NCwgMzQzNTcsIDM0MzYyLCAKKyAgICAzNDM3NSwgMzQzOTEsIDIyOTc5LCAzNDQwOCwgMzQ0MjAsIDM0NDM3LCAzNDQ0OSwgMzQ0NjMsIDIyOTk2LCAyMzAxNSwgCisgICAgMzQ0NzUsIDM0NDg3LCAyNjgwLCAzNDUwMSwgMzQ1MDYsIDM0NTExLCAzNDUxNiwgMzQ1MjAsIDM0NTI3LCAzNDUzOSwgCisgICAgMzQ1NDUsIDM0NTQ4LCAzNDU1OSwgMzQ1NzAsIDM0NTc1LCAzMjA2NCwgNjk1LCAzNDU3OSwgMzQ1ODMsIDM0NTg3LCAKKyAgICAzNDU5MCwgMzQ1OTUsIDM0NjAwLCAzNDYwNiwgMzQ2MTEsIDM0NjE2LCAzNDYyMiwgMzQ2MjgsIDM0NjMzLCAzNDYzNywgCisgICAgMzQ2NDIsIDM0NjQ3LCAzNDY1MiwgMzQ2NTYsIDM0NjU5LCAzNDY2NSwgMzQ2NzAsIDM0Njc1LCAzNDY4MCwgMzQ2ODQsIAorICAgIDM0Njg5LCAzNDY5NSwgMzQ3MDMsIDI2MzIwLCAzNDcwOCwgMzQ3MTMsIDM0NzIwLCAzNDcyNiwgMzQ3MzIsIDM0NzM3LCAKKyAgICAzNDc0NSwgMjI1MjEsIDM0NzUyLCAzNDc1NywgMzQ3NjIsIDM0NzY3LCAzNDc3MSwgMzQ3NzQsIDM0Nzc5LCAzNDc4MywgCisgICAgMzQ3ODcsIDM0Nzk0LCAzNDgwMCwgMzQ4MDYsIDM0ODEyLCAzNDgxOSwgMzQ4MjQsIDM0ODMwLCAzMzk0MywgMzQ4MzQsIAorICAgIDM0ODM4LCAzNDg0MywgMzQ4NTYsIDM0ODYxLCAzNDg2NywgMzQ4NzUsIDM0ODgyLCAzNDg5MCwgMzQ5MDAsIDM0OTA2LCAKKyAgICAzNDkxMiwgMzQ5MTgsIDM0OTIyLCAzNDkzMSwgMzQ5MzksIDM0OTQ2LCAzNDk1MSwgMzQ5NTYsIDEwNDM3LCAzNDk2MSwgCisgICAgMzQ5NjksIDM0OTc2LCAzNDk4MiwgMzQ5OTIsIDM0OTk3LCAzNTAwMywgMzUwMTEsIDM2MDgsIDM1MDE4LCAzNTAyNSwgCisgICAgMzYxNCwgMzUwMjksIDM1MDM0LCAzNTA0NSwgMzUwNTIsIDM1MDU4LCAzNTA2NywgMzUwNzEsIDQwMTUsIDM1MDc0LCAKKyAgICAzNTA4MSwgMzUwODcsIDM1MDkzLCAzNTEwMSwgMzUxMTEsIDI5MDQyLCAzNTExOCwgMzUxMjYsIDM1MTMxLCAzNTEzNywgCisgICAgMzUxNDIsIDI1OTQ3LCAzNTE0OCwgMzUxNTUsIDM1MTYxLCAzNTE3MCwgMjM2NjAsIDM1MTc3LCAzNTE4MiwgMzUxODYsIAorICAgIDM1MTk0LCAzNTIwMiwgOTYwMCwgNTg5NSwgMzUyMDksIDM1MjEzLCAzNTIxNSwgMzUyMTksIDM1MjI0LCAzNTIyNiwgCisgICAgMzUyMzIsIDM1MjM3LCAzNTI0MiwgMzUyNDksIDMyNTg1LCAzNTI1NSwgMzUyNjAsIDM1MjY0LCAzNTI2OSwgMzUyNzMsIAorICAgIDM1MjgyLCAzNTI4NiwgMzUyOTIsIDM1Mjk5LCAzNTMwNSwgMzUzMTIsIDM1MzE3LCAzNTMyNiwgMzUzMzEsIDM1MzM1LCAKKyAgICAzNTM0MCwgMzUzNDcsIDM1MzU1LCAzNTM2MywgMzUzNjgsIDIxMzQzLCAzNTM3MiwgMzUzNzUsIDM1Mzc5LCAzNTM4MywgCisgICAgMzUzODcsIDM1MzkwLCAzNTM5MiwgMzU0MDAsIDM1NDA0LCAzNTQxMSwgMzU0MTUsIDM1NDE5LCAzNTQyNywgMzU0MzQsIAorICAgIDM1NDQ0LCAzNTQ0OCwgMzU0NTIsIDM1NDYwLCAzNTQ2OCwgMzU0NzQsIDM1NDc5LCAzNTQ4OCwgMTMzNTAsIDM1NDk0LCAKKyAgICAzNTUwMywgMzU1MDgsIDM1NTE1LCAzNTUyMywgMzU1MzEsIDM1NTM5LCAzNTU0NiwgMzU1NTMsIDM1NTYwLCAzNTU2NywgCisgICAgMzU1NzQsIDM1NTc5LCAzNTU4NSwgMzU2MDIsIDM1NjEwLCAzNTYyMCwgMzU2MjgsIDM1NjM1LCA0MDcsIDM1NjM5LCAKKyAgICAzNTY0NSwgMzU2NDksIDM1NjU0LCAzMzY5MiwgMzU2NjAsIDM1NjYzLCAzNTY2NywgMzU2NzUsIDM2MTksIDM1NjgzLCAKKyAgICAzNTY4OSwgMzU2OTUsIDM1NzA0LCAzNTcxNCwgMzU3MjEsIDM1NzI3LCAzNjI1LCAzNjMxLCAzNTczNiwgMzU3NDMsIAorICAgIDM1NzUxLCAzNTc1NiwgMzU3NjAsIDM1NzY3LCAzNTc3NSwgMzU3ODIsIDM1Nzg4LCAzNTc5NywgMzU4MDcsIDM1ODEzLCAKKyAgICAzNTgyMSwgMzU4MzAsIDM1ODM3LCAzNTg0NSwgMzU4NTIsIDIyMDE5LCAzNTg1NiwgMzU4NjMsIDM1ODY5LCAzNTg3OSwgCisgICAgMzU4ODgsIDM1ODk5LCAzNTkwMywgMzU5MTMsIDM1OTE5LCAzNTkyNiwgMzU5MzQsIDM1OTQzLCAzNTk1MiwgMzU5NjIsIAorICAgIDM1OTczLCAzNTk4MCwgMzU5ODUsIDM1OTkyLCAzMDI5LCAzNjAwMCwgMzYwMDYsIDM2MDExLCAzNjAxNywgMzYwMjMsIAorICAgIDM2MDI4LCAzNjA0MSwgMzYwNTQsIDM2MDY3LCAzNjA3NCwgMzYwODAsIDM2MDg4LCAzNjA5NiwgMzYxMDEsIDM2MTA1LCAKKyAgICAxNDY5LCAzNjEwOSwgMzYxMTQsIDM2MTE5LCAzNjEyNCwgMzYxMjksIDM2MTM1LCAzNjE0MCwgMzYxNDUsIDM2MTUwLCAKKyAgICAzNjE1NSwgMzYxNjAsIDM2MTY1LCAzNjE3MCwgMzYxNzYsIDM2MTgyLCAzNjE4NywgMzYxOTIsIDM2MTk4LCAzNjIwMywgCisgICAgMzYyMDgsIDM2MjEzLCAzNjIxOSwgMzYyMjQsIDM2MjI5LCAzNjIzNCwgMzYyMzksIDM2MjQ1LCAzNjI1MCwgMzYyNTUsIAorICAgIDM2MjYxLCAzNjI2NiwgMzYyNzEsIDM2Mjc2LCAzNjI4MSwgMzYyODYsIDM2MjkyLCAzNjI5NywgMzYzMDMsIDM2MzA4LCAKKyAgICAzNjMxNCwgMzYzMTksIDM2MzI0LCAzNjMyOSwgMzYzMzUsIDM2MzQxLCAzNjM0NywgMzYzNTMsIDM2MzU5LCAzNjM2NSwgCisgICAgMzYzNzEsIDM2Mzc3LCAzNjM4MiwgMzYzODcsIDM2MzkzLCAzNjM5OCwgMzY0MDMsIDM2NDA4LCAzNjQxMywgMzY0MTgsIAorICAgIDM2NDIzLCAzNjQyOCwgMzY0MzQsIDM2NDM5LCAzNjQ0NCwgMzY0NTAsIDM2NDU2LCAxMDEsIDM2NDYxLCAzNjQ2MywgCisgICAgMzY0NjcsIDM2NDcxLCAzNjQ3NSwgMzY0ODAsIDM2NDg0LCA5NTIxLCAzNjQ4OCwgMzY0OTQsIDE3NDEsIDYyODAsIDM2NTAwLCAKKyAgICAzNjUwMywgMzY1MDgsIDM2NTEyLCAzNjUxNywgMzY1MjEsIDM2NTI1LCAzNjUzMCwgMTAyMzgsIDM2NTM0LCAzNjUzOCwgCisgICAgMzY1NDIsIDM2NTQ2LCAxNTM3MiwgMzY1NTEsIDM2NTU1LCAzNjU2MCwgMzY1NjUsIDM2NTcwLCAzNjU3NCwgMzY1ODEsIAorICAgIDI2MTExLCAzNjU4NywgMzY1OTAsIDM2NTk0LCAzNjU5OSwgMzY2MDUsIDM2NjA5LCAzNjYxNywgMzY2MjMsIDM2NjI4LCAKKyAgICAzNjYzMiwgMzY2MzgsIDM2NjQyLCAzNjY0NiwgMzQ2MiwgMzQ2NywgMjkyMzQsIDM2NjQ5LCAzNjY1MywgMzY2NTcsIAorICAgIDM2NjYxLCAzNjY2OSwgMzY2NzYsIDM2NjgwLCAzNjY4NywgMzY2OTIsIDMxNywgMzY2OTcsIDM2NzAxLCAzNjcwNywgCisgICAgMzY3MTksIDM2NzI1LCAzNjczMSwgMzY3MzUsIDM2NzQxLCAzNjc1MCwgMzY3NTQsIDM2NzU4LCAzNjc2MywgMzY3NjksIAorICAgIDM2Nzc0LCAzNjc3OCwgMzY3ODMsIDM2Nzg3LCAzNjc5MSwgMzY3OTgsIDM2ODA0LCAzNjgwOSwgMzY4MjQsIDM2ODM5LCAKKyAgICAzNjg1NCwgMzY4NzAsIDM2ODg4LCAxMDE4OCwgMzY5MDIsIDM2OTA5LCAzNjkxMywgMzY5MTYsIDM2OTI1LCAzNjkzMCwgCisgICAgMzY5MzQsIDM2OTQyLCAzMzg5NCwgMzY5NTAsIDM2OTU0LCAzNjk2NCwgMzY5NzUsIDI5MjA0LCAzNjk4OCwgMzY5OTIsIAorICAgIDM3MDAxLCAzNzAwOSwgOTc3OCwgMTQ5MDAsIDM3MDEzLCAyMjQzNCwgMzcwMTYsIDMwMTUyLCAzNzAyMSwgOTc3NywgCisgICAgMzcwMjYsIDM3MDMyLCAzNzAzNywgMzcwNDMsIDM3MDQ4LCAzNzA1NCwgMzcwNTksIDM3MDY1LCAzNzA3MCwgMzcwNzYsIAorICAgIDM3MDgyLCAzNzA4OCwgMzcwOTMsIDM3MDQ5LCAzNzA1NSwgMzcwNjAsIDM3MDY2LCAzNzA3MSwgMzcwNzcsIDM3MDgzLCAKKyAgICA4MTI2LCAzODc0LCAzNzA5NywgMzcxMDUsIDM3MTA5LCAzNzExMiwgMzcxMTYsIDM3MTIxLCAzNzEyNiwgMzcxMzIsIAorICAgIDM3MTM4LCAzNzE0MywgMzcxNDcsIDI1OTU5LCAzNzE1MSwgMzcxNTUsIDM3MTYxLCAzNzE2NSwgOTA0MiwgMzcxNzQsIAorICAgIDM3MTgxLCAzNzE4NSwgMTE4NjgsIDM3MTkyLCAzNzE5OCwgMzcyMDMsIDM3MjEwLCAzNzIxNywgMzcyMjQsIDI4NTUwLCAKKyAgICA4MDQ5LCAzNzIzMSwgMzcyMzgsIDM3MjQ1LCAzNzI1MSwgMzcyNTYsIDM3MjYzLCAzNzI3NCwgMzcyODAsIDM3Mjg1LCAKKyAgICAzNzI5MCwgMzcyOTUsIDM3MzAyLCAzNzA1MCwgMzczMDYsIDM3MzE2LCAzNzMyNywgMzczMzMsIDM3MzM4LCAzNzM0MywgCisgICAgMzczNDgsIDM3MzUzLCAzNzM1OCwgMzczNjIsIDM3MzY2LCAzNzM3MiwgMzczODAsIDIzMTksIDg2NSwgMTAyNTQsIDEwMjY2LCAKKyAgICAxMDI3MSwgMTAyNzcsIDM3Mzg5LCAxMDI4MiwgMTAyODcsIDEwMjkzLCAzNzM5NCwgMzc0MDQsIDM3NDA4LCAxMDI5OCwgCisgICAgMzc0MTMsIDE2ODkwLCAzNzQxNiwgMzc0MjEsIDM3NDI1LCAzNzQzMCwgMzc0MzUsIDM3NDQyLCAzNzQ0OSwgMzc0NTMsIAorICAgIDM3NDU2LCAzNzQ2NCwgMTAyMDEsIDM3NDcxLCAzNzQ3NCwgMzc0ODAsIDM3NDkwLCA1OTI5LCAzNzQ5OSwgMzc1MDMsIAorICAgIDM3NTExLCAzNzUxNSwgMzc1MjUsIDM3NTMxLCAzNzU0MiwgMzc1NDgsIDM3NTU0LCAzNzU1OSwgMzc1NjUsIDM3NTcxLCAKKyAgICAzNzU3NywgMzc1ODIsIDM3NTg1LCAzNzU5MiwgMzc1OTgsIDM3NjAzLCAzNzYxMCwgMzc2MTcsIDM3NjIxLCAzNzYzMSwgCisgICAgMzc2NDQsIDM3NjUzLCAzNzY2MiwgMzc2NzMsIDM3Njg2LCAzNzY5NywgMzc3MDYsIDM3NzE3LCAzNzcyMiwgMzc3MzEsIAorICAgIDM3NzM2LCAxMDMwMywgMzc3NDIsIDM3NzQ5LCAzNzc1NywgMzc3NjIsIDM3NzY2LCAzNzc3MywgMzc3ODAsIDM4MjksIDE2LCAKKyAgICAzNzc4NCwgMzc3ODksIDE2NzQ0LCAzNzc5MywgMzc3OTYsIDM3Nzk5LCAyODA1NiwgMzc4MDMsIDI4NTU5LCAzNzgxMSwgCisgICAgMzc4MTUsIDM3ODE5LCAzNzgyMiwgMzc4MjgsIDM3MDcyLCAzNzgzNCwgMzc4NDIsIDM3ODQ4LCAzNzg1NSwgMjgwMzksIAorICAgIDM3ODU5LCAyODIzMywgMzc4NjMsIDM3ODcyLCAzNzg3OCwgMzc4ODQsIDM3ODg5LCAzNzg5MywgMzc4OTksIDM3OTAzLCAKKyAgICAzNzkxMSwgMzc5MTksIDI2MTc3LCAzNzkyNSwgMzc5MzIsIDM3OTM4LCAzNzk0MywgMzc5NDgsIDM3OTUyLCAzNzk1OCwgCisgICAgMzc5NjMsIDM3OTY5LCA0MDU2LCA3OTEsIDM3OTc2LCAzNzk4MCwgMzc5ODMsIDE1MjYyLCAzNzk5NSwgMzU4MjYsIDM4MDA2LCAKKyAgICAzODAwOSwgMzgwMTYsIDM4MDIwLCAzODAyNiwgMzgwMzAsIDM4MDM2LCAzODA0MSwgMzgwNDcsIDM4MDUyLCAzODA1NywgCisgICAgMzgwNjEsIDM4MDY1LCAzODA3MCwgMzgwNzUsIDM4MDg1LCAzODA5MSwgMzgxMDQsIDM4MTEwLCAzODExNiwgMzgxMjMsIAorICAgIDM4MTI4LCAzODEzNCwgMzgxMzksIDE2NjMwLCAxNDcyLCAxMDE5LCAzMTE5MywgMzExOTksIDM4MTQ0LCAzMTIwNSwgCisgICAgMzEyMTgsIDMxMjI0LCAzMTIzMCwgMzgxNTAsIDMxMjM2LCAzMTI0MiwgMzgxNTYsIDM4MTYyLCAyMiwgMzgxNzAsIDM4MTc3LCAKKyAgICAzODE4MSwgMzgxODUsIDM4MTkzLCAzMTk1MywgMzgxOTcsIDM4MjAxLCAzODIwOCwgMzgyMTMsIDM4MjE3LCAzODIyMiwgCisgICAgMzgyMjgsIDM4MjMzLCAzODIzOSwgMzgyNDQsIDM4MjQ4LCAzODI1MiwgMzgyNTYsIDM4MjYxLCAzODI2NSwgMzgyNzAsIAorICAgIDM4Mjc0LCAzODI4MSwgMzgyODYsIDM4MjkwLCAzODI5NSwgMzgyOTksIDM4MzA0LCAzODMwOCwgMzgzMTMsIDM4MzE5LCAKKyAgICAxNTQ4MiwgMTU0ODcsIDM4MzI0LCAzODMyOCwgMzgzMzEsIDM4MzM1LCAyMTE3MCwgMzgzNDAsIDM4MzQ0LCAzODM1MCwgCisgICAgMzgzNTcsIDM4MzYyLCAzODM3MiwgMzgzNzcsIDM4Mzg1LCAzODM4OSwgMzgzOTIsIDMxOTY4LCAzODM5NiwgNDEwOSwgCisgICAgMzg0MDEsIDM4NDA2LCAzODQxMCwgMzg0MTUsIDM4NDE5LCAzODQyNCwgMTMzNjgsIDM4NDM1LCAzODQzOSwgMzg0NDIsIAorICAgIDM4NDQ3LCAzODQ1MSwgMzg0NTUsIDM4NDU4LCAzODQ2MiwgODE0NSwgMTMzODQsIDM4NDY1LCAzODQ2OCwgMzg0NzQsIAorICAgIDM4NDc5LCAzODQ4NSwgMzg0OTAsIDM4NDk2LCAzODUwMSwgMzg1MDcsIDM4NTEyLCAzODUxOCwgMzg1MjQsIDM4NTMwLCAKKyAgICAzODUzNSwgMzg1MzksIDM4NTQzLCAzODU1MiwgMzg1NjgsIDM4NTg0LCAzODU5NCwgMjc5NDYsIDM4NjAxLCAzODYwNSwgCisgICAgMzg2MTAsIDM4NjE1LCAzODYxOSwgMzg2MjMsIDM1OTQ3LCAzODYyOSwgMzg2MzQsIDM4NjM4LCAzODY0NSwgMzg2NTAsIAorICAgIDM4NjU0LCAzODY1OCwgMjY5NzksIDM4NjY0LCAyMTQzOCwgMzg2NjksIDM4Njc2LCAzODY4NCwgMzg2OTAsIDM4Njk3LCAKKyAgICAzODcwNSwgMzg3MTEsIDM4NzE1LCAzODcyMSwgMzg3MjksIDM4NzMzLCAzODc0MiwgOTUwMiwgMzg3NTAsIDM4NzU0LCAKKyAgICAzODc2MiwgMzg3NjksIDM4Nzc0LCAzODc3OSwgMzg3ODMsIDM4Nzg2LCAzODc5MCwgMzg3OTMsIDM4Nzk3LCAzODgwNCwgCisgICAgMzg4MDksIDM4ODE1LCAyNjM5OCwgMzEyNTYsIDM4ODE5LCAzODgyNiwgMzg4MzIsIDM4ODM4LCAzODg0MywgMzg4NDYsIAorICAgIDM4ODQ4LCAzODg1NSwgMzg4NjIsIDM4ODY4LCAzODg3MiwgMzg4NzUsIDM4ODc5LCAzODg4MywgMzg4ODcsIDM4ODkyLCAKKyAgICAzODg5NiwgMzg5MDAsIDM4OTAzLCAzODkwNywgMzg5MjEsIDIzMDQ1LCAzODk0MCwgMzg5NTMsIDM4OTY2LCAzODk3OSwgCisgICAgMjMwNjMsIDM4OTk0LCAxMDQ5MCwgMzkwMDksIDM5MDE1LCAzOTAxOSwgMzkwMjMsIDM5MDMwLCAzOTAzNSwgMzkwMzksIAorICAgIDM5MDQ2LCAzOTA1MiwgMzkwNTcsIDM5MDYzLCAzOTA3MywgMzkwODUsIDM5MDk2LCAzOTEwMSwgMzkxMDgsIDM5MTEyLCAKKyAgICAzOTExNiwgMzkxMTksIDE1ODc4LCAzNjc3LCAzOTEyNywgMTU1MDksIDM5MTQwLCAzOTE0NywgMzkxNTEsIDM5MTU1LCAKKyAgICAzOTE2MCwgMzkxNjUsIDM5MTcxLCAzOTE3NSwgMzkxNzksIDM5MTgyLCA3NzQyLCAxNTUyMCwgMzkxODcsIDM5MTkxLCAKKyAgICAzOTE5NywgMzkyMDYsIDM5MjExLCAzOTIxOCwgMzU4MDMsIDM5MjI0LCAzOTIyOSwgMzkyMzMsIDM5MjM4LCAzOTI0NSwgCisgICAgMzkyNDksIDM5MjUyLCAzOTI1NiwgMzkyNjEsIDE0NTUyLCAzOTI2OCwgMzkyNzUsIDEwNjYsIDM5Mjc5LCAzOTI4NCwgCisgICAgMzkyODksIDM5Mjk1LCAzOTMwMCwgMzkzMDUsIDM5MzA5LCAzOTMxOSwgMzkzMjQsIDM5MzMwLCAzOTMzNSwgMzkzNDEsIAorICAgIDM5MzQ2LCAzOTM1MiwgMzkzNjIsIDM5MzY3LCAzOTM3MiwgMzkzNzYsIDcyMjksIDcyNDEsIDM5MzgxLCAzOTM4NCwgCisgICAgMzkzOTEsIDM5Mzk3LCAzNDA1OSwgMzQwNjYsIDM5NDA2LCAzOTQxMCwgMzIwMTYsIDM5NDE4LCAzOTQyOSwgMzk0MzcsIAorICAgIDM1OTk1LCAzOTQ0NCwgMzk0NDksIDM5NDU0LCAzOTQ2NSwgMzk0NzIsIDM5NDgzLCAzMjA0MCwgMjE0NDQsIDM5NDkxLCAKKyAgICA3MzUsIDM5NDk2LCAzOTUwMiwgMjgwMzAsIDM5NTA4LCAzOTUxMywgMzk1MjMsIDM5NTMyLCAzOTUzOSwgMzk1NDUsIAorICAgIDM5NTQ5LCAzOTU1MiwgMzk1NTksIDM5NTY1LCAzOTU3MiwgMzk1NzgsIDM5NTg4LCAzOTU5NiwgMzk2MDIsIDM5NjA4LCAKKyAgICAzOTYxMywgMzk2MTcsIDM5NjI0LCAzOTYzMCwgMzk2MzcsIDM4ODg4LCA1MzUsIDEzODA1LCAzOTY0MywgMzk2NDgsIAorICAgIDM5NjUxLCAzOTY1NywgMzk2NjUsIDEzOTYsIDM5NjcwLCAzOTY3NCwgMzk2NzksIDM5Njg2LCAzOTY5MiwgMzk2OTYsIAorICAgIDM5NzAwLCAzOTcwNSwgMzk3MTQsIDM5NzIxLCAzOTczMSwgMzk3MzcsIDI4MDc0LCAzOTc1NCwgMzk3NjMsIDM5NzcxLCAKKyAgICAzOTc3NywgMzk3ODIsIDM5Nzg5LCAzOTc5NSwgMzk4MDMsIDM5ODEyLCAzOTgyMCwgMzk4MjQsIDM5ODI5LCAzOTgzNywgCisgICAgMzIwNDksIDM5ODQzLCAzOTg2MiwgMTU4MTEsIDM5ODc2LCAzOTg5MiwgMzk5MDYsIDM5OTEyLCAzOTkxNywgMzk5MjIsIAorICAgIDM5OTI3LCAzOTkzMywgMzIwNTUsIDM5OTM4LCAzOTk0NSwgMzk5NTAsIDM5OTU0LCAzNDUsIDI5MzYsIDM5OTYxLCAzOTk2NiwgCisgICAgMzk5NzEsIDI3MzA1LCAzOTc5MiwgMzk5NzUsIDM5OTgwLCAzOTk4OCwgMzk5OTIsIDM5OTk1LCA0MDAwMSwgNDAwMDcsIAorICAgIDQwMDExLCAyODEyOSwgNDAwMTQsIDQwMDE5LCA0MDAyMywgNDAwMjYsIDQwMDMxLCA0MDAzNSwgNDAwNDAsIDQwMDQ1LCAKKyAgICA0MDA0OSwgNDAwNTQsIDQwMDU4LCA0MDA2MiwgMjExNjYsIDIxMTc3LCA0MDA2NiwgNDAwNzEsIDQwMDc3LCAyNjkzNiwgCisgICAgNDAwODIsIDQwMDg2LCAyMTI1MywgMTYwNTksIDQwMDg5LCA0MDA5NCwgNDAwOTksIDQwMTA0LCA0MDEwOSwgNDAxMTQsIAorICAgIDQwMTE5LCA0MDEyNCwgNDQ3LCA0MywgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAzMTMwMCwgNDAxMjksIAorICAgIDMxMzA0LCA0MDEzMywgNDAxMzcsIDQwMTQxLCAzMTMwOSwgMzEzMTUsIDQwMTU1LCAzMTMyNiwgMzEzMzEsIDQwMTYzLCAKKyAgICA0MDE2OCwgMzEzMzcsIDQwMTczLCA0MDE3OCwgNDAxODMsIDQwMTg4LCA0MDE5NCwgNDAyMDAsIDQwMjA2LCAzMTM1NCwgCisgICAgNDAyMTksIDQwMjI1LCAzMTM1OCwgNDAyMjksIDMxMzYzLCA0MDIzNCwgMzEzNjgsIDMxMzczLCA0MDIzNywgNDAyNDIsIAorICAgIDQwMjQ2LCAzMDkyMywgNDAyNTIsIDEzNTkyLCA0MDI1OSwgNDAyNjQsIDMxMzc4LCA0MDI2OCwgNDAyNzMsIDQwMjc4LCAKKyAgICA0MDI4MywgNDAyODcsIDQwMjkyLCA0MDI5NywgNDAzMDMsIDQwMzA4LCA0MDMxMywgNDAzMTksIDQwMzI1LCA0MDMzMCwgCisgICAgNDAzMzQsIDQwMzM5LCA0MDM0NCwgNDAzNDksIDQwMzUzLCA0MDM1OCwgNDAzNjMsIDQwMzY4LCA0MDM3NCwgNDAzODAsIAorICAgIDQwMzg2LCA0MDM5MSwgNDAzOTUsIDQwNDAwLCA0MDQwNCwgMzEzODIsIDMxMzg3LCAzMTM5MiwgNDA0MDgsIDQwNDEyLCAKKyAgICA0MDQxNiwgMzEzOTcsIDMxNDAzLCAzMTQwOSwgMzE0MjEsIDQwNDI4LCAyNTk5NiwgNDA0MzIsIDQwNDM2LCA0MDQ0MSwgCisgICAgNDA0NDYsIDQwNDUxLCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCA0MDQ3NCwgNDA0NzksIDQwNDg0LCA0MDQ4OCwgNDA0OTIsIAorICAgIDQwNDk1LCA0MDUwMywgMzE0NjksIDQwNTA4LCAxNDc5LCA0MDUxNCwgNDA1MjIsIDQwNTMxLCA0MDUzNSwgNDA1MzksIAorICAgIDQwNTQ3LCA0MDU1MywgNDA1NjEsIDQwNTc3LCA0MDU4MSwgNDA1ODUsIDQwNTkwLCA0MDYwNSwgMzE1MDYsIDE3NDksIAorICAgIDEyMDQ4LCA0MDYwOSwgMTM3OCwgNDA2MjEsIDQwNjIyLCA0MDYzMCwgNDA2MzcsIDQwNjQyLCA0MDY0OSwgNDA2NTQsIAorICAgIDkzNzIsIDExMTQsIDEwMzI1LCA0MDY2MSwgNDA2NjYsIDQwNjY5LCA0MDY3MiwgNDA2ODEsIDEyODYsIDQwNjg2LCAzOTAzNiwgCisgICAgNDA2OTMsIDQwNjk4LCAyMjQ4NiwgMjU1NywgNDA3MDIsIDEwNzM0LCA0MDcxMiwgNDA3MTgsIDIzMzcsIDIzNDcsIDQwNzI3LCAKKyAgICA0MDczNiwgNDA3NDYsIDQwNzU3LCAzMjkzLCAzNDIxMiwgMTAzNzcsIDM4MDcsIDE2NjY4LCAxMjkxLCA0MDc2MiwgNDA3NzAsIAorICAgIDQwNzc3LCA0MDc4MiwgNDA3ODYsIDQwNzkwLCAyMzg1OCwgMTA0MDQsIDQwNzk4LCA0MDgwNywgNDA4MTYsIDQwODI0LCAKKyAgICA0MDgzMSwgNDA4NDIsIDQwODQ3LCA0MDg2MCwgNDA4NzMsIDQwODg1LCA0MDg5NywgNDA5MDksIDQwOTIyLCA0MDkzMywgCisgICAgNDA5NDQsIDQwOTU0LCA0MDk2MiwgNDA5NzAsIDQwOTgyLCA0MDk5NCwgNDEwMDUsIDQxMDE0LCA0MTAyMiwgNDEwMjksIAorICAgIDQxMDQxLCA0MTA0OCwgNDEwNTcsIDQxMDY0LCA0MTA3NywgNDEwODIsIDQxMDkyLCA0MTA5NywgNDExMDMsIDQxMTA4LCAKKyAgICAzNzE4MiwgNDExMTIsIDQxMTE5LCA0MTEyMywgNDExMzAsIDQxMTM4LCAyNTE4LCA0MTE0NSwgNDExNTYsIDQxMTY2LCAKKyAgICA0MTE3NSwgNDExODMsIDQxMTkzLCA0MTIwMSwgNDEyMTEsIDQxMjIwLCA0MTIyNSwgNDEyMzEsIDQxMjM3LCAzNzA5LCAKKyAgICA0MTI0OCwgNDEyNTgsIDQxMjY3LCA0MTI3NiwgNDEyODYsIDQxMjk0LCA0MTMwMywgNDEzMDgsIDQxMzEzLCA0MTMxOCwgCisgICAgMTcwNSwgMzcsIDQxMzI2LCA0MTMzNCwgNDEzNDUsIDQxMzU2LCAxNjM0MywgNDEzNjYsIDQxMzcwLCA0MTM3NywgNDEzODMsIAorICAgIDQxMzg4LCA0MTM5MiwgNDE0MDMsIDQxNDEzLCA0MTQyMiwgNDE0MzMsIDE2NzE3LCAxNjcyMiwgNDE0MzgsIDQxNDQ3LCAKKyAgICA0MTQ1MiwgNDE0NjIsIDQxNDY3LCA0MTQ3NSwgNDE0ODMsIDQxNDkwLCA0MTQ5NiwgNzA3OCwgMjI4LCA0MTUwMCwgNDE1MDYsIAorICAgIDQxNTExLCA0MTUxNCwgMjExNywgMzkxNTIsIDQxNTIyLCA0MTUyNiwgNDE1MjksIDE1MTIsIDQxNTM1LCAxMzk2NywgMTI5NiwgCisgICAgNDE1NDAsIDQxNTUzLCA0MTU2NywgMjY0MywgNDE1ODUsIDQxNTk3LCA0MTYwOSwgMjY1NywgMjY3NCwgNDE2MjMsIDQxNjM2LCAKKyAgICAyNjg5LCA0MTY1MCwgNDE2NjIsIDI3MDQsIDQxNjc2LCAxMzAyLCAxMzA4LCAxMzE0LCAxMDY1MiwgNDE2ODEsIDQxNjg2LCAKKyAgICA0MTY5MSwgNDE2OTUsIDQxNzEwLCA0MTcyNSwgNDE3NDAsIDQxNzU1LCA0MTc3MCwgNDE3ODUsIDQxODAwLCA0MTgxNSwgCisgICAgNDE4MzAsIDQxODQ1LCA0MTg2MCwgNDE4NzUsIDQxODkwLCA0MTkwNSwgNDE5MjAsIDQxOTM1LCA0MTk1MCwgNDE5NjUsIAorICAgIDQxOTgwLCA0MTk5NSwgNDIwMTAsIDQyMDI1LCA0MjA0MCwgNDIwNTUsIDQyMDcwLCA0MjA4NSwgNDIxMDAsIDQyMTE1LCAKKyAgICA0MjEzMCwgNDIxNDUsIDQyMTYwLCA0MjE3NSwgNDIxOTAsIDQyMjA1LCA0MjIyMCwgNDIyMzUsIDQyMjUwLCA0MjI2NSwgCisgICAgNDIyODAsIDQyMjk1LCA0MjMxMCwgNDIzMjUsIDQyMzQwLCA0MjM1NSwgNDIzNzAsIDQyMzg1LCA0MjQwMCwgNDI0MTUsIAorICAgIDQyNDMwLCA0MjQ0NSwgNDI0NjAsIDQyNDc1LCA0MjQ5MCwgNDI1MDUsIDQyNTIwLCA0MjUzNSwgNDI1NTAsIDQyNTY1LCAKKyAgICA0MjU4MCwgNDI1OTUsIDQyNjEwLCA0MjYyNSwgNDI2NDAsIDQyNjU1LCA0MjY3MCwgNDI2ODUsIDQyNzAwLCA0MjcxNSwgCisgICAgNDI3MzAsIDQyNzQ1LCA0Mjc2MCwgNDI3NzUsIDQyNzkwLCA0MjgwNSwgNDI4MjAsIDQyODM1LCA0Mjg1MCwgNDI4NjUsIAorICAgIDQyODgwLCA0Mjg5NSwgNDI5MTAsIDQyOTI1LCA0Mjk0MCwgNDI5NTUsIDQyOTcwLCA0Mjk4NSwgNDMwMDAsIDQzMDE1LCAKKyAgICA0MzAzMCwgNDMwNDUsIDQzMDYwLCA0MzA3NSwgNDMwOTAsIDQzMTA1LCA0MzEyMCwgNDMxMzUsIDQzMTUwLCA0MzE2NSwgCisgICAgNDMxODAsIDQzMTk1LCA0MzIxMCwgNDMyMjUsIDQzMjQwLCA0MzI1NSwgNDMyNzAsIDQzMjg1LCA0MzMwMCwgNDMzMTUsIAorICAgIDQzMzMwLCA0MzM0NSwgNDMzNjAsIDQzMzc1LCA0MzM5MCwgNDM0MDUsIDQzNDIwLCA0MzQzNSwgNDM0NTAsIDQzNDY1LCAKKyAgICA0MzQ4MCwgNDM0OTUsIDQzNTEwLCA0MzUyNSwgNDM1NDAsIDQzNTU1LCA0MzU3MCwgNDM1ODUsIDQzNjAwLCA0MzYxNSwgCisgICAgNDM2MzAsIDQzNjQ1LCA0MzY2MCwgNDM2NzUsIDQzNjkwLCA0MzcwNSwgNDM3MjAsIDQzNzM1LCA0Mzc1MCwgNDM3NjUsIAorICAgIDQzNzgwLCA0Mzc5NSwgNDM4MTAsIDQzODI1LCA0Mzg0MCwgNDM4NTUsIDQzODcwLCA0Mzg4NSwgNDM5MDAsIDQzOTE1LCAKKyAgICA0MzkzMCwgNDM5NDUsIDQzOTYwLCA0Mzk3NSwgNDM5OTAsIDQ0MDA1LCA0NDAyMCwgNDQwMzUsIDQ0MDUwLCA0NDA2NSwgCisgICAgNDQwODAsIDQ0MDk1LCA0NDExMCwgNDQxMjUsIDQ0MTQwLCA0NDE1NSwgNDQxNzAsIDQ0MTg1LCA0NDIwMCwgNDQyMTUsIAorICAgIDQ0MjMwLCA0NDI0NSwgNDQyNjAsIDQ0Mjc1LCA0NDI5MCwgNDQzMDUsIDQ0MzIwLCA0NDMzNSwgNDQzNTAsIDQ0MzY1LCAKKyAgICA0NDM4MCwgNDQzOTUsIDQ0NDEwLCA0NDQyNSwgNDQ0NDAsIDQ0NDU1LCA0NDQ3MCwgNDQ0ODUsIDQ0NTAwLCA0NDUxNSwgCisgICAgNDQ1MzAsIDQ0NTQ1LCA0NDU2MCwgNDQ1NzUsIDQ0NTkwLCA0NDYwNSwgNDQ2MjAsIDQ0NjM1LCA0NDY1MCwgNDQ2NjUsIAorICAgIDQ0NjgwLCA0NDY5NSwgNDQ3MTAsIDQ0NzI1LCA0NDc0MCwgNDQ3NTUsIDQ0NzcwLCA0NDc4NSwgNDQ4MDAsIDQ0ODE1LCAKKyAgICA0NDgzMCwgNDQ4NDUsIDQ0ODYwLCA0NDg3NSwgNDQ4OTAsIDQ0OTA1LCA0NDkyMCwgNDQ5MzUsIDQ0OTUwLCA0NDk2NSwgCisgICAgNDQ5ODAsIDQ0OTk1LCA0NTAxMCwgNDUwMjUsIDQ1MDQwLCA0NTA1NSwgNDUwNzAsIDQ1MDg1LCA0NTEwMCwgNDUxMTUsIAorICAgIDQ1MTMwLCA0NTE0NSwgNDUxNjAsIDQ1MTc1LCA0NTE5MCwgNDUyMDUsIDQ1MjIwLCA0NTIzNSwgNDUyNTAsIDQ1MjY1LCAKKyAgICA0NTI4MCwgNDUyOTUsIDQ1MzEwLCA0NTMyNSwgNDUzNDAsIDQ1MzU1LCA0NTM3MCwgNDUzODUsIDQ1NDAwLCA0NTQxNSwgCisgICAgNDU0MzAsIDQ1NDQ1LCA0NTQ2MCwgNDU0NzUsIDQ1NDkwLCA0NTUwNSwgNDU1MjAsIDQ1NTM1LCA0NTU1MCwgNDU1NjUsIAorICAgIDQ1NTgwLCA0NTU5NSwgNDU2MTAsIDQ1NjI1LCA0NTY0MCwgNDU2NTUsIDQ1NjcwLCA0NTY4NSwgNDU3MDAsIDQ1NzE1LCAKKyAgICA0NTczMCwgNDU3NDUsIDQ1NzYwLCA0NTc3NSwgNDU3OTAsIDQ1ODA1LCA0NTgyMCwgNDU4MzUsIDQ1ODUwLCA0NTg2NSwgCisgICAgNDU4ODAsIDQ1ODk1LCA0NTkxMCwgNDU5MjUsIDQ1OTQwLCA0NTk1NSwgNDU5NzAsIDQ1OTg1LCA0NjAwMCwgNDYwMTUsIAorICAgIDQ2MDMwLCA0NjA0NSwgNDYwNjAsIDQ2MDc1LCA0NjA5MCwgNDYxMDUsIDQ2MTIwLCA0NjEzNSwgNDYxNTAsIDQ2MTY1LCAKKyAgICA0NjE4MCwgNDYxOTUsIDQ2MjEwLCA0NjIyNSwgNDYyNDAsIDQ2MjU1LCA0NjI3MCwgNDYyODUsIDQ2MzAwLCA0NjMxNSwgCisgICAgNDYzMzAsIDQ2MzQ1LCA0NjM2MCwgNDYzNzUsIDQ2MzkwLCA0NjQwNSwgNDY0MjAsIDQ2NDM1LCA0NjQ1MCwgNDY0NjUsIAorICAgIDQ2NDgwLCA0NjQ5NSwgNDY1MTAsIDQ2NTI1LCA0NjU0MCwgNDY1NTUsIDQ2NTcwLCA0NjU4NSwgNDY2MDAsIDQ2NjE1LCAKKyAgICA0NjYzMCwgNDY2NDUsIDQ2NjYwLCA0NjY3NSwgNDY2OTAsIDQ2NzA1LCA0NjcyMCwgNDY3MzUsIDQ2NzUwLCA0Njc2NSwgCisgICAgNDY3ODAsIDQ2Nzk1LCA0NjgxMCwgNDY4MjUsIDQ2ODQwLCA0Njg1NSwgNDY4NzAsIDQ2ODg1LCA0NjkwMCwgNDY5MTUsIAorICAgIDQ2OTMwLCA0Njk0NSwgNDY5NjAsIDQ2OTc1LCA0Njk5MCwgNDcwMDUsIDQ3MDIwLCA0NzAzNSwgNDcwNTAsIDQ3MDY1LCAKKyAgICA0NzA4MCwgNDcwOTUsIDQ3MTEwLCA0NzEyNSwgNDcxNDAsIDQ3MTU1LCA0NzE3MCwgNDcxODUsIDQ3MjAwLCA0NzIxNSwgCisgICAgNDcyMzAsIDQ3MjQ1LCA0NzI2MCwgNDcyNzUsIDQ3MjkwLCA0NzMwNSwgNDczMjAsIDQ3MzM1LCA0NzM1MCwgNDczNjUsIAorICAgIDQ3MzgwLCA0NzM5NSwgNDc0MTAsIDQ3NDI1LCA0NzQ0MCwgNDc0NTUsIDQ3NDcwLCA0NzQ4NSwgNDc1MDAsIDQ3NTE1LCAKKyAgICA0NzUzMCwgNDc1NDUsIDQ3NTYwLCA0NzU3NSwgNDc1OTAsIDQ3NjA1LCA0NzYyMCwgNDc2MzUsIDQ3NjUwLCA0NzY2NSwgCisgICAgNDc2ODAsIDQ3Njk1LCA0NzcxMCwgNDc3MjUsIDQ3NzQwLCA0Nzc1NSwgNDc3NzAsIDQ3Nzg1LCA0NzgwMCwgNDc4MTUsIAorICAgIDQ3ODMwLCA0Nzg0NSwgNDc4NjAsIDQ3ODc1LCA0Nzg5MCwgNDc5MDUsIDQ3OTIwLCA0NzkzNSwgNDc5NTAsIDQ3OTY1LCAKKyAgICA0Nzk4MCwgNDc5OTUsIDQ4MDEwLCA0ODAyNSwgNDgwNDAsIDQ4MDU1LCA0ODA3MCwgNDgwODUsIDQ4MTAwLCA0ODExNSwgCisgICAgNDgxMzAsIDQ4MTQ1LCA0ODE2MCwgNDgxNzUsIDQ4MTkwLCA0ODIwNSwgNDgyMjAsIDQ4MjM1LCA0ODI1MCwgNDgyNjUsIAorICAgIDQ4MjgwLCA0ODI5NSwgNDgzMTAsIDQ4MzI1LCA0ODM0MCwgNDgzNTUsIDQ4MzcwLCA0ODM4NSwgNDg0MDAsIDQ4NDE1LCAKKyAgICA0ODQzMCwgNDg0NDUsIDQ4NDYwLCA0ODQ3NSwgNDg0OTAsIDQ4NTA1LCA0ODUyMCwgNDg1MzUsIDQ4NTUwLCA0ODU2NSwgCisgICAgNDg1ODAsIDQ4NTk1LCA0ODYxMCwgNDg2MjUsIDQ4NjQwLCA0ODY1NSwgNDg2NzAsIDQ4Njg1LCA0ODcwMCwgNDg3MTUsIAorICAgIDQ4NzMwLCA0ODc0NSwgNDg3NjAsIDQ4Nzc1LCA0ODc5MCwgNDg4MDUsIDQ4ODIwLCA0ODgzNSwgNDg4NTAsIDQ4ODY1LCAKKyAgICA0ODg4MCwgNDg4OTUsIDQ4OTEwLCA0ODkyNSwgNDg5NDAsIDQ4OTU1LCA0ODk3MCwgNDg5ODUsIDQ5MDAwLCA0OTAxNSwgCisgICAgNDkwMzAsIDQ5MDQ1LCA0OTA2MCwgNDkwNzUsIDQ5MDkwLCA0OTEwNSwgNDkxMjAsIDQ5MTM1LCA0OTE1MCwgNDkxNjUsIAorICAgIDQ5MTgwLCA0OTE5NSwgNDkyMTAsIDQ5MjI1LCA0OTI0MCwgNDkyNTUsIDQ5MjcwLCA0OTI4NSwgNDkzMDAsIDQ5MzE1LCAKKyAgICA0OTMzMCwgNDkzNDUsIDQ5MzYwLCA0OTM3NSwgNDkzOTAsIDQ5NDA1LCA0OTQyMCwgNDk0MzUsIDQ5NDUwLCA0OTQ2NSwgCisgICAgNDk0ODAsIDQ5NDk1LCA0OTUxMSwgNDk1MjcsIDQ5NTQzLCA0OTU1OSwgNDk1NzUsIDQ5NTkxLCA0OTYwNywgNDk2MjMsIAorICAgIDQ5NjM5LCA0OTY1NSwgNDk2NzEsIDQ5Njg3LCA0OTcwMywgNDk3MTksIDQ5NzM1LCA0OTc1MSwgNDk3NjcsIDQ5NzgzLCAKKyAgICA0OTc5OSwgNDk4MTUsIDQ5ODMxLCA0OTg0NywgNDk4NjMsIDQ5ODc5LCA0OTg5NSwgNDk5MTEsIDQ5OTI3LCA0OTk0MywgCisgICAgNDk5NTksIDQ5OTc1LCA0OTk5MSwgNTAwMDcsIDUwMDIzLCA1MDAzOSwgNTAwNTUsIDUwMDcxLCA1MDA4NywgNTAxMDMsIAorICAgIDUwMTE5LCA1MDEzNSwgNTAxNTEsIDUwMTY3LCA1MDE4MywgNTAxOTksIDUwMjE1LCA1MDIzMSwgNTAyNDcsIDUwMjYzLCAKKyAgICA1MDI3OSwgNTAyOTUsIDUwMzExLCA1MDMyNywgNTAzNDMsIDUwMzU5LCA1MDM3NSwgNTAzOTEsIDUwNDA3LCA1MDQyMywgCisgICAgNTA0MzksIDUwNDU1LCA1MDQ3MSwgNTA0ODcsIDUwNTAzLCA1MDUxOSwgNTA1MzUsIDUwNTUxLCA1MDU2NywgNTA1ODMsIAorICAgIDUwNTk5LCA1MDYxNSwgNTA2MzEsIDUwNjQ3LCA1MDY2MywgNTA2NzksIDUwNjk1LCA1MDcxMSwgNTA3MjcsIDUwNzQzLCAKKyAgICA1MDc1OSwgNTA3NzUsIDUwNzkxLCA1MDgwNywgNTA4MjMsIDUwODM5LCA1MDg1NSwgNTA4NzEsIDUwODg3LCA1MDkwMywgCisgICAgNTA5MTksIDUwOTM1LCA1MDk1MSwgNTA5NjcsIDUwOTgzLCA1MDk5OSwgNTEwMTUsIDUxMDMxLCA1MTA0NywgNTEwNjMsIAorICAgIDUxMDc5LCA1MTA5NSwgNTExMTEsIDUxMTI3LCA1MTE0MywgNTExNTksIDUxMTc1LCA1MTE5MSwgNTEyMDcsIDUxMjIzLCAKKyAgICA1MTIzOSwgNTEyNTUsIDUxMjcxLCA1MTI4NywgNTEzMDMsIDUxMzE5LCA1MTMzNSwgNTEzNTEsIDUxMzY3LCA1MTM4MywgCisgICAgNTEzOTksIDUxNDE1LCA1MTQzMSwgNTE0NDcsIDUxNDYzLCA1MTQ3OSwgNTE0OTUsIDUxNTExLCA1MTUyNywgNTE1NDMsIAorICAgIDUxNTU5LCA1MTU3NSwgNTE1OTEsIDUxNjA3LCA1MTYyMywgNTE2MzksIDUxNjU1LCA1MTY3MSwgNTE2ODcsIDUxNzAzLCAKKyAgICA1MTcxOSwgNTE3MzUsIDUxNzUxLCA1MTc2NywgNTE3ODMsIDUxNzk5LCA1MTgxNSwgNTE4MzEsIDUxODQ3LCA1MTg2MywgCisgICAgNTE4NzksIDUxODk1LCA1MTkxMSwgNTE5MjcsIDUxOTQzLCA1MTk1OSwgNTE5NzUsIDUxOTkxLCA1MjAwNywgNTIwMjMsIAorICAgIDUyMDM5LCA1MjA1NSwgNTIwNzEsIDUyMDg3LCA1MjEwMywgNTIxMTksIDUyMTM1LCA1MjE1MSwgNTIxNjcsIDUyMTgzLCAKKyAgICA1MjE5OSwgNTIyMTUsIDUyMjMxLCA1MjI0NywgNTIyNjMsIDUyMjc5LCA1MjI5NSwgNTIzMTEsIDUyMzI3LCA1MjM0MywgCisgICAgNTIzNTksIDUyMzc1LCA1MjM5MSwgNTI0MDcsIDUyNDIzLCA1MjQzOSwgNTI0NTUsIDUyNDcxLCA1MjQ4NywgNTI1MDMsIAorICAgIDUyNTE5LCA1MjUzNSwgNTI1NTEsIDUyNTY3LCA1MjU4MywgNTI1OTksIDUyNjE1LCA1MjYzMSwgNTI2NDcsIDUyNjYzLCAKKyAgICA1MjY3OSwgNTI2OTUsIDUyNzExLCA1MjcyNywgNTI3NDMsIDUyNzU5LCA1Mjc3NSwgNTI3OTEsIDUyODA3LCA1MjgyMywgCisgICAgNTI4MzksIDUyODU1LCA1Mjg3MSwgNTI4ODcsIDUyOTAzLCA1MjkxOSwgNTI5MzUsIDUyOTUxLCA1Mjk2NywgNTI5ODMsIAorICAgIDUyOTk5LCA1MzAxNSwgNTMwMzEsIDUzMDQ3LCA1MzA2MywgNTMwNzksIDUzMDk1LCA1MzExMSwgNTMxMjcsIDUzMTQzLCAKKyAgICA1MzE1OSwgNTMxNzUsIDUzMTkxLCA1MzIwNywgNTMyMjMsIDUzMjM5LCA1MzI1NSwgNTMyNzEsIDUzMjg3LCA1MzMwMywgCisgICAgNTMzMTksIDUzMzM1LCA1MzM1MSwgNTMzNjcsIDUzMzgzLCA1MzM5OSwgNTM0MTUsIDUzNDMxLCA1MzQ0NywgNTM0NjMsIAorICAgIDUzNDc5LCA1MzQ5NSwgNTM1MTEsIDUzNTI3LCA1MzU0MywgNTM1NTksIDUzNTc1LCA1MzU5MSwgNTM2MDcsIDUzNjIzLCAKKyAgICA1MzYzOSwgNTM2NTUsIDUzNjcxLCA1MzY4NywgNTM3MDMsIDUzNzE5LCA1MzczNSwgNTM3NTEsIDUzNzY3LCA1Mzc4MywgCisgICAgNTM3OTksIDUzODE1LCA1MzgzMSwgNTM4NDcsIDUzODYzLCA1Mzg3OSwgNTM4OTUsIDUzOTExLCA1MzkyNywgNTM5NDMsIAorICAgIDUzOTU5LCA1Mzk3NSwgNTM5OTEsIDU0MDA3LCA1NDAyMywgNTQwMzksIDU0MDU1LCA1NDA3MSwgNTQwODcsIDU0MTAzLCAKKyAgICA1NDExOSwgNTQxMzUsIDU0MTUxLCA1NDE2NywgNTQxODMsIDU0MTk5LCA1NDIxNSwgNTQyMzEsIDU0MjQ3LCA1NDI2MywgCisgICAgNTQyNzksIDU0Mjk1LCA1NDMxMSwgNTQzMjcsIDU0MzQzLCA1NDM1OSwgNTQzNzUsIDU0MzkxLCA1NDQwNywgNTQ0MjMsIAorICAgIDU0NDM5LCA1NDQ1NSwgNTQ0NzEsIDU0NDg3LCA1NDUwMywgNTQ1MTksIDU0NTM1LCA1NDU1MSwgNTQ1NjcsIDU0NTgzLCAKKyAgICA1NDU5OSwgNTQ2MTUsIDU0NjMxLCA1NDY0NywgNTQ2NjMsIDU0Njc5LCA1NDY5NSwgNTQ3MTEsIDU0NzI3LCA1NDc0MywgCisgICAgNTQ3NTksIDU0Nzc1LCA1NDc5MSwgNTQ4MDcsIDU0ODIzLCA1NDgzOSwgNTQ4NTUsIDU0ODcxLCA1NDg4NywgNTQ5MDMsIAorICAgIDU0OTE5LCA1NDkzNSwgNTQ5NTEsIDU0OTY3LCA1NDk4MywgNTQ5OTksIDU1MDE1LCA1NTAzMSwgNTUwNDcsIDU1MDYzLCAKKyAgICA1NTA3OSwgNTUwOTUsIDU1MTExLCA1NTEyNywgNTUxNDMsIDU1MTU5LCA1NTE3NSwgNTUxOTEsIDU1MjA3LCA1NTIyMywgCisgICAgNTUyMzksIDU1MjU1LCA1NTI3MSwgNTUyODcsIDU1MzAzLCA1NTMxOSwgNTUzMzUsIDU1MzUxLCA1NTM2NywgNTUzODMsIAorICAgIDU1Mzk5LCA1NTQxNSwgNTU0MzEsIDU1NDQ3LCA1NTQ2MywgNTU0NzksIDU1NDk1LCA1NTUxMSwgNTU1MjcsIDU1NTQzLCAKKyAgICA1NTU1OSwgNTU1NzUsIDU1NTkxLCA1NTYwNywgNTU2MjMsIDU1NjM5LCA1NTY1NSwgNTU2NzEsIDU1Njg3LCA1NTcwMywgCisgICAgNTU3MTksIDU1NzM1LCA1NTc1MSwgNTU3NjcsIDU1NzgzLCA1NTc5OSwgNTU4MTUsIDU1ODMxLCA1NTg0NywgNTU4NjMsIAorICAgIDU1ODc5LCA1NTg5NSwgNTU5MTEsIDU1OTI3LCA1NTk0MywgNTU5NTksIDU1OTc1LCA1NTk5MSwgNTYwMDcsIDU2MDIzLCAKKyAgICA1NjAzOSwgNTYwNTUsIDU2MDcxLCA1NjA4NywgNTYxMDMsIDU2MTE5LCA1NjEzNSwgNTYxNTEsIDU2MTY3LCA1NjE4MywgCisgICAgNTYxOTksIDU2MjE1LCA1NjIzMSwgNTYyNDcsIDU2MjYzLCA1NjI3OSwgNTYyOTUsIDU2MzExLCA1NjMyNywgNTYzNDMsIAorICAgIDU2MzU5LCA1NjM3NSwgNTYzOTEsIDU2NDA3LCA1NjQyMywgNTY0MzksIDU2NDU1LCA1NjQ3MSwgNTY0ODcsIDU2NTAzLCAKKyAgICA1NjUxOSwgNTY1MzUsIDU2NTUxLCA1NjU2NywgNTY1ODMsIDU2NTk5LCA1NjYxNSwgNTY2MzEsIDU2NjQ3LCA1NjY2MywgCisgICAgNTY2NzksIDU2Njk1LCA1NjcxMSwgNTY3MjcsIDU2NzQzLCA1Njc1OSwgNTY3NzUsIDU2NzkxLCA1NjgwNywgNTY4MjMsIAorICAgIDU2ODM5LCA1Njg1NSwgNTY4NzEsIDU2ODg3LCA1NjkwMywgNTY5MTksIDU2OTM1LCA1Njk1MSwgNTY5NjcsIDU2OTgzLCAKKyAgICA1Njk5OSwgNTcwMTUsIDU3MDMxLCA1NzA0NywgNTcwNjMsIDU3MDc5LCA1NzA5NSwgNTcxMTEsIDU3MTI3LCA1NzE0MywgCisgICAgNTcxNTksIDU3MTc1LCA1NzE5MSwgNTcyMDcsIDU3MjIzLCA1NzIzOSwgNTcyNTUsIDU3MjcxLCA1NzI4NywgNTczMDMsIAorICAgIDU3MzE5LCA1NzMzNSwgNTczNTEsIDU3MzY3LCA1NzM4MywgNTczOTksIDU3NDE1LCA1NzQzMSwgNTc0NDcsIDU3NDYzLCAKKyAgICA1NzQ3OSwgNTc0OTUsIDU3NTExLCA1NzUyNywgNTc1NDMsIDU3NTU5LCA1NzU3NSwgNTc1OTEsIDU3NjA3LCA1NzYyMywgCisgICAgNTc2MzksIDU3NjU1LCA1NzY3MSwgNTc2ODcsIDU3NzAzLCA1NzcxOSwgNTc3MzUsIDU3NzUxLCA1Nzc2NywgNTc3ODMsIAorICAgIDU3Nzk5LCA1NzgxNSwgNTc4MzEsIDU3ODQ3LCA1Nzg2MywgNTc4NzksIDU3ODk1LCA1NzkxMSwgNTc5MjcsIDU3OTQzLCAKKyAgICA1Nzk1OSwgNTc5NzUsIDU3OTkxLCA1ODAwNywgNTgwMjMsIDU4MDM5LCA1ODA1NSwgNTgwNzEsIDU4MDg3LCA1ODEwMywgCisgICAgNTgxMTksIDU4MTM1LCA1ODE1MSwgNTgxNjcsIDU4MTgyLCAxNjc0OSwgNTgxOTEsIDU4MTk3LCA1ODIwMywgNTgyMTMsIAorICAgIDU4MjIxLCAxNDg4MSwgMTU0MzIsIDk5NTMsIDU4MjM0LCAxNTIwLCA1ODI0MiwgMzc2MSwgMjc0MTUsIDcxODMsIDU4MjQ4LCAKKyAgICA1ODI1MywgNTgyNTgsIDU4MjYzLCA1ODI2OCwgNTgyNzQsIDU4Mjc5LCA1ODI4NSwgNTgyOTAsIDU4Mjk2LCA1ODMwMSwgCisgICAgNTgzMDYsIDU4MzExLCA1ODMxNiwgNTgzMjIsIDU4MzI3LCA1ODMzMiwgNTgzMzcsIDU4MzQyLCA1ODM0NywgNTgzNTIsIAorICAgIDU4MzU3LCA1ODM2MywgNTgzNjgsIDU4Mzc0LCA1ODM4MSwgMjU2MSwgNTgzODYsIDU4MzkyLCA4NTI2LCA1ODM5NiwgCisgICAgNTg0MDEsIDU4NDA4LCA1ODQxNiwgNDAsIDU4NDIwLCA1ODQyNiwgNTg0MzEsIDU4NDM2LCA1ODQ0MCwgNTg0NDUsIDU4NDQ5LCAKKyAgICA1ODQ1MywgMTA2NzcsIDU4NDU3LCA1ODQ2NywgNTg0ODAsIDU4NDkxLCA1ODUwNCwgNTg1MTEsIDU4NTE3LCA1ODUyMiwgCisgICAgNTg1MjgsIDU4NTM0LCA1ODU0MCwgNTg1NDUsIDU4NTUwLCA1ODU1NSwgNTg1NjAsIDU4NTY0LCA1ODU2OSwgNTg1NzQsIAorICAgIDU4NTc5LCA1ODU4NSwgNTg1OTEsIDU4NTk3LCA1ODYwMiwgNTg2MDYsIDU4NjExLCA1ODYxNiwgNTg2MjAsIDU4NjI1LCAKKyAgICA1ODYzMCwgNTg2MzUsIDU4NjM5LCAxMDY5MywgMTA3MDQsIDEwNzA5LCAxNTYzLCA1ODY0MywgMTU2OCwgNTg2NDksIAorICAgIDE2MjI2LCA1ODY1MiwgNTg2NTgsIDE1OTksIDU4NjY0LCAxNjA1LCAxNjExLCAxMDczOSwgNTg2NjksIDU4Njc3LCA1ODY4NCwgCisgICAgNTg2ODgsIDU4Njk0LCA1ODY5OSwgMzA5NTIsIDU4NzA0LCA1ODcxMSwgNTg3MTYsIDU4NzIwLCA1ODcyNCwgMTYxNiwgCisgICAgMTYzMTgsIDU4NzMzLCA1ODczNywgMTYzMjksIDExMjAsIDU4NzQxLCA1ODc0OCwgNTg3NTMsIDU4NzU3LCAxNjM1NCwgCisgICAgMTYyMCwgMzczMjEsIDU4NzYwLCA1ODc2NSwgNTg3NzUsIDU4Nzg0LCA1ODc4OSwgNTg3OTMsIDU4Nzk5LCAxNjI1LCAKKyAgICAzOTIzMCwgNTg4MDQsIDU4ODEzLCA1ODgxOSwgNTg4MjQsIDEwODk3LCAxMDkwMywgNTg4MzAsIDU4ODQyLCA1ODg1OSwgCisgICAgNTg4NzYsIDU4ODkzLCA1ODkxMCwgNTg5MjcsIDU4OTQ0LCA1ODk2MSwgNTg5NzgsIDU4OTk1LCA1OTAxMiwgNTkwMjksIAorICAgIDU5MDQ2LCA1OTA2MywgNTkwODAsIDU5MDk3LCA1OTExNCwgNTkxMzEsIDU5MTQ4LCA1OTE2NSwgNTkxODIsIDU5MTk5LCAKKyAgICA1OTIxNiwgNTkyMzMsIDU5MjUwLCA1OTI2NywgNTkyODQsIDU5MzAxLCA1OTMxOCwgNTkzMzUsIDU5MzUyLCA1OTM2OSwgCisgICAgNTkzODYsIDU5NDAzLCA1OTQyMCwgNTk0MzcsIDU5NDU0LCA1OTQ3MSwgNTk0ODgsIDU5NTA1LCA1OTUyMiwgNTk1MzksIAorICAgIDU5NTU2LCA1OTU3MywgNTk1OTAsIDU5NjA3LCA1OTYyNCwgNTk2NDEsIDU5NjU4LCA1OTY3NSwgNTk2ODYsIDU5NjkxLCAKKyAgICAxNjMwLCA1OTY5NSwgNTk3MDEsIDU5NzA2LCA1OTcxMSwgOTMxOSwgMTYzNSwgNTk3MTcsIDU5NzI2LCAyNzcxMCwgNTk3MzEsIAorICAgIDU5NzQyLCA1OTc1MiwgNTk3NTcsIDU5NzY0LCA1OTc3MCwgNTk3NzUsIDU5NzgwLCAxNjYwNiwgNTk3ODQsIDEwOTE0LCAKKyAgICAxNjQwLCAxMDkxOSwgNTk3OTAsIDU5Nzk1LCA1OTgwMSwgNTk4MDYsIDU5ODExLCA1OTgxNiwgNTk4MjEsIDU5ODI2LCAKKyAgICA1OTgzMSwgNTk4MzYsIDU5ODQyLCA1OTg0OCwgNTk4NTQsIDU5ODU5LCA1OTg2MywgNTk4NjgsIDU5ODczLCA1OTg3NywgCisgICAgNTk4ODIsIDU5ODg3LCA1OTg5MiwgNTk4OTYsIDU5OTAxLCA1OTkwNywgNTk5MTIsIDU5OTE3LCA1OTkyMSwgNTk5MjYsIAorICAgIDU5OTMxLCA1OTkzNywgNTk5NDIsIDU5OTQ3LCA1OTk1MywgNTk5NTksIDU5OTY0LCA1OTk2OCwgNTk5NzMsIDU5OTc4LCAKKyAgICA1OTk4MywgNTk5ODcsIDU5OTkyLCA1OTk5NywgNjAwMDIsIDYwMDA4LCA2MDAxNCwgNjAwMTksIDYwMDIzLCA2MDAyNywgCisgICAgNjAwMzIsIDYwMDM3LCA2MDA0MiwgMjkxMDgsIDYwMDQ2LCA2MDA1MSwgNjAwNTYsIDYwMDYyLCA2MDA2NywgNjAwNzIsIAorICAgIDYwMDc2LCA2MDA4MSwgNjAwODYsIDYwMDkyLCA2MDA5NywgNjAxMDIsIDYwMTA4LCA2MDExNCwgNjAxMTksIDYwMTIzLCAKKyAgICA2MDEyOCwgNjAxMzMsIDYwMTM3LCA2MDE0MiwgNjAxNDcsIDYwMTUyLCA2MDE1OCwgNjAxNjQsIDYwMTY5LCA2MDE3MywgCisgICAgNjAxNzgsIDYwMTgzLCA2MDE4NywgNjAxOTIsIDYwMTk3LCA2MDIwMiwgNjAyMDYsIDYwMjA5LCAzMTYxNCwgNjAyMTQsIAorICAgIDYwMjIyLCAxNjY3MiwgMzY2MywgMTEwMTAsIDYwMjI4LCA2MDIzOCwgNjAyNTMsIDExMDE1LCA2MDI2NCwgNjAyNjksIAorICAgIDYwMjgwLCA2MDI5MiwgNjAzMDQsIDYwMzE2LCAyNjk1LCA2MDMyOCwgNjAzMzMsIDYwMzQ1LCA2MDM0OSwgNjAzNTUsIAorICAgIDYwMzYxLCA2MDM2NiwgMTY1MiwgMTA2NywgNjAzNzUsIDYwMzgwLCAzOTI4MCwgNjAzODQsIDYwMzg4LCA2MDM5MywgCisgICAgNjAzOTcsIDE2NzU3LCA2MDQwMiwgNjA0MDUsIDYwNDEzLCA2MDQyMSwgMTY1NiwgMTEwNDAsIDExMDQ2LCAxNjYxLCAKKyAgICA2MDQyOSwgNjA0MzYsIDYwNDQxLCA2MDQ1MCwgNjA0NjAsIDYwNDY3LCA2MDQ3MiwgNjA0NzcsIDE2NjYsIDYwNDg0LCAKKyAgICA2MDQ4OSwgMTY4NzIsIDYwNDkzLCA2MDQ5OCwgNjA1MDUsIDYwNTExLCA2MDUxNSwgNjA1MjYsIDYwNTM2LCAxNjg5NCwgCisgICAgOTIyNywgOTIzNCwgMTY3MSwgNjA1NDMsIDYwNTQ5LCA2MDU1NywgNjA1NjQsIDYwNTcwLCA2MDU3NywgNjA1ODksIDYwNTk1LCAKKyAgICA2MDYwMCwgNjA2MTIsIDYwNjIzLCA2MDYzMiwgNjA2NDIsIDM3NDAsIDMwNzg4LCAzMDc5NywgMTY5MzQsIDE2NzYsIDE2ODAsIAorICAgIDYwNjUwLCA2MDY2MSwgNjA2NjYsIDE2ODMsIDYwNjc0LCA2MDY3OSwgMTY5ODUsIDYwNjkxLCA2MDY5NywgNjA3MDIsIAorICAgIDYwNzEwLCAxNjg4LCA2MDcxNSwgNjA3MjAsIDYwNzI4LCA2MDczNiwgNjA3NDMsIDYwNzUyLCA2MDc2MCwgNjA3NjksIAorICAgIDE2OTMsIDYwNzczLCAxNjk4LCA2MDc3OCwgNjA3ODUsIDE3MDU5LCA2MDc5MywgNjA3OTksIDYwODA0LCA2MDgxMiwgCisgICAgNjA4MTksIDYwODI3LCAyMjU1NywgNjA4MzIsIDExMTc1LCA2MDg0MSwgNjA4NDcsIDYwODU0LCA2MDg2MSwgNjA4NjcsIAorICAgIDYwODc3LCA2MDg4MywgNjA4ODgsIDYwODk5LCA2MDkwNCwgNjA5MTIsIDExMTg0LCAxMTE4OSwgNjA5MjAsIDYwOTI2LCAKKyAgICA2MDkzNCwgMzgwNSwgMTcxMDEsIDM5MzY4LCA2MDkzOSwgNjA5NDUsIDYwOTUwLCA2MDk1OCwgNjA5NjUsIDEyMDI5LCAKKyAgICA2MDk3MCwgNjA5NzYsIDE3MDksIDYwOTgxLCA2MDk4NCwgMTEyNywgNjA5OTAsIDYwOTk1LCA2MTAwMCwgNjEwMDYsIAorICAgIDYxMDExLCA2MTAxNiwgNjEwMjEsIDYxMDI2LCA2MTAzMSwgNjEwMzYsIDE3MTgsIDksIDYxMDQyLCA2MTA0NiwgNjEwNTEsIAorICAgIDYxMDU1LCA2MTA1OSwgNjEwNjMsIDMxODU0LCA2MTA2OCwgNjEwNzMsIDYxMDc4LCA2MTA4MiwgNjEwODUsIDYxMDg5LCAKKyAgICA2MTA5MywgNjEwOTgsIDYxMTAyLCA2MTEwNywgNjExMTEsIDM0NTkxLCAzNDU5NiwgMzQ2MDEsIDYxMTE0LCA2MTEyMSwgCisgICAgNjExMjcsIDM5MDg5LCA2MTEzNywgMzQ2MDcsIDMyMTEyLCAzMTg2OSwgMzE4NzUsIDM0NjIzLCAzMTg4MSwgNjExNDIsIAorICAgIDYxMTQ3LCAzMjE0NSwgNjExNTEsIDYxMTU0LCA2MTE1OCwgNjExNjUsIDYxMTY4LCA2MTE3MywgNjExNzcsIDYxMTgxLCAKKyAgICA2MTE4NCwgNjExOTQsIDYxMjA2LCA2MTIxMywgNjEyMTksIDYxMjI2LCAzMzU0OCwgNjEyMjksIDg1NDMsIDg3NywgNjEyMzIsIAorICAgIDYxMjM2LCA2MTI0MSwgMzY5MCwgNjEyNDUsIDYxMjQ4LCAxMzYyNSwgNjEyNTUsIDYxMjYyLCA2MTI3NSwgNjEyODMsIAorICAgIDYxMjkyLCA2MTMwMSwgNjEzMDYsIDYxMzE2LCA2MTMyOSwgNjEzNDEsIDYxMzQ4LCA2MTM1MywgNjEzNjIsIDYxMzc1LCAKKyAgICAzNjAzNSwgNjEzOTMsIDYxMzk4LCA2MTQwNSwgNjE0MTEsIDY1MiwgNjE0MTYsIDYxNDI0LCA2MTQzMSwgMjcyNTQsIDYyNywgCisgICAgNjE0MzcsIDYxNDQzLCA2MTQ1MywgNjE0NTksIDYxNDY0LCAzMTg5OSwgNjAwMywgMzE5MTMsIDYxNDY4LCA2MTQ3OCwgCisgICAgNjE0ODMsIDYxNDkzLCA2MTUwOCwgNjE1MTQsIDYxNTIwLCAzMTkyMywgNjE1MjUsIDMxMDY5LCA2MTUyOSwgNjE1MzQsIAorICAgIDYxNTM5LCA2MTU0MywgNjE1NDgsIDE2OTM3LCA2MTU1NSwgNjE1NjAsIDYxNTY0LCA2MDQ0LCAzMTk0OSwgNjE1NjgsIAorICAgIDYxNTc0LCAzMTIsIDYxNTg0LCA2MTU5MSwgNjE1OTgsIDYxNjAzLCA2MTYxMiwgNTg3NjksIDYxNjE4LCA2MTYyNiwgCisgICAgNjE2MzAsIDYxNjM0LCA2MTYzOCwgNjE2NDIsIDYxNjQ3LCA2MTY1MSwgNjE2NTcsIDYxNjY1LCA2MTY3MCwgNjE2NzUsIAorICAgIDYxNjc5LCA2MTY4NCwgNjE2ODgsIDYxNjkyLCA2MTY5OCwgNjE3MDQsIDYxNzA5LCA2MTcxMywgMzIwNzMsIDYxNzE4LCAKKyAgICAzMjA3OSwgMzIwODUsIDYxNzIzLCA2MTcyOSwgNjE3MzYsIDYxNzQxLCA2MTc0NSwgMzEwODYsIDE2NTk5LCA2MTc0OCwgCisgICAgNjE3NTIsIDYxNzU3LCA2MTc2NCwgNjE3NzAsIDYxNzc0LCA2MTc3OSwgMzg3OTksIDYxNzg1LCA2MTc4OSwgNjE3OTMsIAorICAgIDYxNzk4LCA2MTgwNCwgNjE4MTAsIDYxODIyLCA2MTgzMSwgNjE4NDEsIDYxODQ3LCA2MTg1NCwgNjE4NTksIDYxODY0LCAKKyAgICA2MTg2OCwgNjE4NzEsIDYxODc3LCA2MTg4NCwgNjE4ODksIDYxODk0LCA2MTkwMSwgNjE5MDgsIDYxOTE0LCA2MTkxOSwgCisgICAgNjE5MjQsIDYxOTMyLCAzMjA5MCwgMjQyMywgNjE5MzcsIDYxOTQyLCA2MTk0OCwgNjE5NTMsIDYxOTU5LCA2MTk2NCwgCisgICAgNjE5NjksIDYxOTc0LCA2MTk4MCwgMzIxMTEsIDYxOTg1LCA2MTk5MSwgNjE5OTcsIDYyMDAzLCAzMjE3NSwgNjIwMDgsIAorICAgIDYyMDEzLCA2MjAxOCwgMzIxODYsIDYyMDIzLCA2MjAyOCwgNjIwMzMsIDYyMDM5LCA2MjA0NSwgMzIxOTEsIDYyMDUwLCAKKyAgICA2MjA1NSwgNjIwNjAsIDMyMjQ2LCAzMjI1MiwgNjIwNjUsIDYyMDcwLCAzMjI1NywgNjIwNzUsIDI3OTM3LCAzMjI3OSwgCisgICAgMzIyODMsIDYyMDgwLCA2MjA1NiwgNjIwODQsIDYyMDkyLCA2MjA5OCwgNjIxMDYsIDYyMTEzLCA2MjExOSwgNjIxMjksIAorICAgIDYyMTM1LCA2MjE0MiwgMTA2MjQsIDMyMjk3LCA2MjE0OCwgNjIxNjEsIDYyMTcwLCA2MjE3NiwgNjIxODUsIDYyMTkxLCAKKyAgICAyMzQ5NSwgNjIxOTgsIDYyMjA1LCA2MjIxNSwgMzIyNDcsIDYyMjE4LCA2MjIyNSwgNjIyMzAsIDYyMjM0LCA2MjIzOCwgCisgICAgNjIyNDMsIDYxMjAsIDYyMjQ3LCA2MjI1MiwgNjIyNTcsIDM0Njg1LCAzNDY5MCwgNjIyNjEsIDM0NzA0LCA2MjI2NiwgCisgICAgMzQ3MDksIDYyMjcxLCA2MjI3NywgMzQ3MjEsIDM0NzI3LCAzNDczMywgNjIyODIsIDYyMjg4LCAyMjUyMiwgNjIyOTksIAorICAgIDYyMzAyLCA2MjMxNCwgNjIzMjIsIDMyMzIwLCA2MjMyNiwgNjIzMzUsIDYyMzQ1LCA2MjM1NCwgMzIzMzAsIDYyMzU5LCAKKyAgICA2MjM2NiwgNjIzNzUsIDYyMzgxLCA2MjM4OSwgNjIzOTYsIDYwOTUsIDQzOTcsIDYyNDAxLCAzMjI1OCwgNjI0MDcsIAorICAgIDYyNDEwLCA2MjQxNiwgNjI0MjMsIDYyNDI4LCA2MjQzMywgMjM0MDUsIDYyNDM3LCA2MjQ0MywgNjI0NDksIDYyNDU0LCAKKyAgICA2MjQ1OSwgNjI0NjMsIDYyNDY5LCA2MjQ3NSwgMzM0NTgsIDg2MywgMzU2OTgsIDM2NjE5LCAzNjYyNSwgMzIzNjYsIAorICAgIDYyNDgwLCA2MjQ4NCwgNjI0ODgsIDYyNDkxLCA2MjUwNCwgNjI1MTAsIDYyNTE0LCA2MjUxNywgNjI1MjIsIDMzNzYxLCAKKyAgICA2MjUyNiwgMzEwOTEsIDIxMjc0LCA2MjUzMiwgNjAyNCwgNjAzMiwgOTA2OCwgNjI1MzUsIDYyNTQwLCA2MjU0NSwgNjI1NTAsIAorICAgIDYyNTU1LCA2MjU2MCwgNjI1NjUsIDYyNTcwLCA2MjU3NSwgNjI1ODAsIDYyNTg2LCA2MjU5MSwgNjI1OTYsIDYyNjAyLCAKKyAgICA2MjYwNywgNjI2MTIsIDYyNjE3LCA2MjYyMiwgNjI2MjcsIDYyNjMyLCA2MjYzOCwgNjI2NDMsIDYyNjQ5LCA2MjY1NCwgCisgICAgNjI2NTksIDYyNjY0LCA2MjY2OSwgNjI2NzQsIDYyNjc5LCA2MjY4NCwgNjI2ODksIDYyNjk0LCA2MjY5OSwgNjI3MDUsIAorICAgIDYyNzEwLCA2MjcxNSwgNjI3MjAsIDYyNzI1LCA2MjczMCwgNjI3MzUsIDYyNzQxLCA2Mjc0NiwgNjI3NTEsIDYyNzU2LCAKKyAgICA2Mjc2MSwgNjI3NjYsIDYyNzcxLCA2Mjc3NiwgNjI3ODEsIDYyNzg2LCA2Mjc5MiwgNjI3OTcsIDYyODAyLCA2MjgwNywgCisgICAgNjI4MTIsIDYyODE4LCA2MjgyNCwgNjI4MjksIDYyODM1LCA2Mjg0MCwgNjI4NDUsIDYyODUwLCA2Mjg1NSwgNjI4NjAsIAorICAgIDE1MTMsIDI0NSwgNjI4NjUsIDYyODY5LCA2Mjg3MywgNjI4NzcsIDI1MTE2LCA2Mjg4MSwgNjI4ODUsIDYyODkwLCA2Mjg5NCwgCisgICAgNjI4OTksIDYyOTAzLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCA2MjkyMiwgNjI5MjYsIDYyOTMxLCA2MjkzNSwgMTMzNjIsIAorICAgIDYyOTQwLCA2Mjk0NCwgNjI5NTEsIDYyOTYxLCAxNTE5MywgNjI5NzAsIDYyOTc5LCA2Mjk4MywgNjI5ODgsIDYyOTkzLCAKKyAgICA2Mjk5NywgMjQ5MDcsIDMwMTksIDYzMDAxLCAxNzM1MCwgNjMwMDcsIDYzMDE2LCA2MzAyNCwgNjMwMzAsIDYzMDQyLCAKKyAgICA2MzA1NCwgNjMwNTgsIDYzMDYzLCA2MzA2NywgNjMwNzMsIDYzMDc5LCA2MzA4NCwgNjMwOTQsIDYzMTA0LCA2MzExMCwgCisgICAgNjMxMTUsIDYzMTE5LCA2MzEyNCwgNjMxMzAsIDYzMTM5LCA2MzE0OCwgNjMxNTYsIDE1NTQ3LCA2MzE2MCwgNjMxNjksIAorICAgIDYzMTc3LCA2MzE4OSwgNjMyMDAsIDYzMjExLCA2MzIyMCwgNjMyMjQsIDYzMjMzLCA2MzI0MywgNjMyNTEsIDYzMjU3LCAKKyAgICA2MzI2MiwgNjMyNjgsIDYzMjczLCA5OCwgMzA5MDAsIDYzMjg0LCAyNjI0OSwgMjYyNTksIDYzMjkwLCA2MzI5NywgNjMzMDMsIAorICAgIDYzMzA3LCA2MzMxNywgNjMzMjgsIDYzMzM2LCA2MzM0NSwgNjMzNTAsIDYzMzU1LCA2MzM1OSwgMTczMDQsIDYzMzY3LCAKKyAgICA2MzM3MSwgNjMzNzcsIDYzMzg3LCA2MzM5NCwgNjM0MDAsIDM0Nzg0LCA2MzQwNiwgNjM0MDgsIDYzNDExLCA2MzQxNSwgCisgICAgNjM0MjUsIDYzNDMxLCA2MzQzOCwgMTMzMDgsIDYzNDQ1LCA2MzQ1MSwgNjM0NjAsIDYzNDY5LCA2MzQ3NSwgNjM0ODEsIAorICAgIDYzNDg3LCA2MzQ5MiwgNjM0OTksIDYzNTA2LCA2MzUxMiwgNjM1MjUsIDYzNTM0LCA2MzU0MywgNjM1NDgsIDYzNTUyLCAKKyAgICA2MzU1OCwgNjM1NjUsIDYzNTcyLCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgNjM2MDIsIDYzNjA2LCA2MzYwOSwgCisgICAgNjM2MTksIDYzNjIzLCA2MzYzNSwgNjM2NDQsIDYzNjQ4LCA2MzY1MywgNjM2NTcsIDYzNjYzLCA2MzY2OCwgNjM2NzUsIAorICAgIDYzNjg0LCA2MzY5MiwgNjM3MDAsIDYzNzA1LCA2MzcwOSwgNjM3MTQsIDYzNzE5LCA2MzcyOSwgNjM3MzcsIDYzNzQyLCAKKyAgICA2Mzc0NiwgNjM3NTAsIDYzNzU2LCA2Mzc2OCwgNjM3NzYsIDYzNzg2LCA2Mzc5MywgNjM3OTksIDYzODA0LCA2MzgwOCwgCisgICAgNjM4MTIsIDYzODE2LCA2MzgyNSwgNjM4MzQsIDYzODQzLCA2Mzg0OSwgNjM4NTUsIDYzODYxLCA2Mzg2NiwgNjM4NzMsIAorICAgIDYzODc5LCA2Mzg4NywgNjM4OTQsIDEyNDU2LCA2MzkwMCwgNjM5MDYsIDYzOTEwLCAxNDIzMSwgNjM5MTQsIDYzOTE5LCAKKyAgICA2MzkyOSwgNjM5MzgsIDYzOTQ0LCA2Mzk1MCwgNjM5NTgsIDYzOTY1LCA2Mzk2OSwgNjM5NzMsIDYzOTc5LCA2Mzk4NywgCisgICAgNjM5OTQsIDY0MDAwLCA2NDAxMSwgNjQwMTUsIDY0MDE5LCA2NDAyMywgNjQwMjYsIDY0MDMyLCA2NDAzNywgNjQwNDEsIAorICAgIDY0MDQ1LCA2NDA1NCwgNjQwNjIsIDY0MDY5LCA2NDA3NSwgNjQwODIsIDI0MDI5LCAzODg0MSwgNjQwODcsIDY0MDk1LCAKKyAgICA2NDA5OSwgNjQxMDMsIDY0MTA2LCA2NDExNCwgNjQxMjEsIDY0MTI3LCA2NDEzNiwgNjQxNDQsIDY0MTUwLCA2NDE1NSwgCisgICAgNjQxNTksIDY0MTY0LCA2NDE2OCwgNjQxNzIsIDY0MTc3LCA2NDE4NiwgNjQxOTAsIDY0MTk3LCA2NDIwNCwgNjQyMTAsIAorICAgIDY0MjE4LCA2NDIyNCwgNjQyMzUsIDY0MjQzLCA2NDI0OSwgMjI2NTIsIDY0MjU4LCA2NDI2NSwgNjQyNzIsIDY0Mjc5LCAKKyAgICA2NDI4NiwgNjQyOTMsIDQxODcwLCAxMzE0NiwgNjQzMDAsIDY0MzA3LCA2NDMxMiwgMzQ4MjAsIDYyMTcsIDY0MzE4LCAKKyAgICA2NDMyMywgNjQzMjgsIDY0MzM0LCA2NDM0MCwgNjQzNDYsIDY0MzUxLCA2NDM1NiwgNjQzNjEsIDY0MzY2LCA2NDM3MiwgCisgICAgNjQzNzcsIDY0MzgzLCA2NDM4OCwgNjQzOTQsIDY0Mzk5LCA2NDQwNCwgNjQ0MDksIDY0NDE0LCA2NDQxOSwgNjQ0MjQsIAorICAgIDY0NDI5LCA2NDQzNSwgNjQ0NDAsIDY0NDQ2LCA2NDQ1MSwgNjQ0NTYsIDY0NDYxLCA2NDQ2NiwgNjQ0NzEsIDY0NDc2LCAKKyAgICA2NDQ4MiwgNjQ0ODcsIDY0NDkyLCA2NDQ5NywgNjQ1MDIsIDY0NTA3LCA2NDUxMiwgNjQ1MTcsIDY0NTIyLCA2NDUyNywgCisgICAgNjQ1MzIsIDY0NTM4LCA2NDU0MywgNjQ1NDgsIDY0NTUzLCA2NDU1OCwgNjQ1NjMsIDY0NTY4LCA2NDU3MywgNjQ1NzgsIAorICAgIDY0NTg0LCA2NDU4OSwgNjQ1OTQsIDY0NTk5LCA2NDYwNCwgNjQ2MDksIDY0NjE0LCA2NDYxOSwgNjQ2MjQsIDY0NjI5LCAKKyAgICA2NDYzNCwgNjQ2MzksIDY0NjQ0LCA2NDY1MCwgMTgzNCwgMjI0LCAzNzQxNywgNjQ2NTUsIDY0NjU4LCA2NDY2MywgNjQ2NjcsIAorICAgIDY0NjcwLCA2NDY3NSwgNjM2OTYsIDY0Njg2LCA2NDY5NiwgNjQ3MDMsIDY0NzE5LCA2NDcyOCwgNjQ3MzgsIDY0NzQ4LCAKKyAgICA2NDc1NiwgNjQ3NzAsIDY0Nzc4LCA2NDc4MiwgNjQ3ODUsIDY0NzkyLCA2NDc5OCwgNjQ4MDksIDY0ODIxLCA2NDgzMiwgCisgICAgNjQ4NDEsIDY0ODQ4LCAxMjk3LCAyMzI5NCwgNjQ4NTgsIDI1OTAsIDY0ODYyLCA2NDg3MSwgMTEzMywgMTcyNzcsIDM4MDU0LCAKKyAgICA2NDg3OSwgNjQ4ODcsIDY0OTAxLCA2NDkxNCwgNjQ5MTgsIDY0OTIzLCA2NDkyOCwgNjQ5MzMsIDY0OTM5LCA2NDk0NSwgCisgICAgNjQ5NTAsIDg1MzUsIDY0OTU1LCA2NDk1OSwgNjQ5NjcsIDExMDQxLCA2NDk3MiwgNjQ5NzgsIDY0OTg3LCAxNzIxLCAKKyAgICAxMTA1MywgNzM2LCA2NDk5MSwgNjUwMDAsIDY1MDEwLCAyNzAxMywgNjUwMTksIDY1MDI1LCAxNjg0OSwgNjUwMzEsIAorICAgIDY1MDM1LCAzOTY0LCAxMTM4NCwgNjUwNDEsIDY1MDQ4LCA2MDY1NiwgNjUwNTIsIDY1MDU2LCAzOTg4LCAxODksIDE0MTQ2LCAKKyAgICA2NTA2MiwgNjUwNzQsIDY1MDc4LCA2NTA4NCwgMjc3MzAsIDY1MDg4LCAxMTM3MiwgMjczMCwgNCwgNjUwOTMsIDY1MTAzLCAKKyAgICA2NTEwOSwgNjUxMjAsIDY1MTI3LCA2NTEzMywgNjUxMzksIDY1MTQ3LCA2NTE1NCwgNjUxNjAsIDY1MTcwLCA2NTE4MCwgCisgICAgNjUxOTAsIDIzNDgyLCAxMzA5LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCA2NTIxMywgNjUyMTcsIDI3NTMsIDI3NTksIDg1MzIsIAorICAgIDIyNjQsIDY1MjIxLCA2NTIyNSwgNjUyMzQsIDY1MjQyLCA2NTI1MywgNjUyNjEsIDY1MjY5LCA2NTI3NSwgNjUyODAsIAorICAgIDY1MjkxLCA2NTMwMiwgNjUzMTAsIDY1MzE2LCA5Njg3LCA2NTMyMSwgNjUzMjksIDY1MzMzLCA2NTMzNywgNjUzNDEsIAorICAgIDY1MzUzLCAyODExNSwgNjUzNjAsIDY1MzcwLCA2NTM3NiwgNjUzODIsIDk3ODksIDY1MzkyLCA2NTQwMywgNjU0MTMsIAorICAgIDY1NDIyLCA2NTQyNiwgNjU0MzMsIDExMzUsIDExNzAsIDY1NDQzLCA2NTQ0OCwgNjU0NTYsIDY1NDY0LCA2NTQ3NSwgCisgICAgNjU0ODIsIDY1NDk2LCAxNDA3NSwgMzkzLCA2NTUwNiwgNjU1MTAsIDY1NTE4LCA2NTUyNywgNjU1MzUsIDY1NTQxLCAKKyAgICA2NTU1NSwgNjU1NjIsIDY1NTY4LCA2NTU3NywgNjU1ODQsIDY1NTk0LCA2NTYwMiwgMzgxMiwgMTU2LCA2NTYxMCwgNjU2MjEsIAorICAgIDY1NjI1LCA2NTYzNywgMjc5MjgsIDE2MSwgNjU2NDMsIDY1NjQ4LCA2NTY1MiwgNjU2NTksIDY1NjY1LCA2NTY3MywgCisgICAgNjU2ODAsIDg4MTgsIDY1Njg3LCA2NTY5NiwgNjU3MDQsIDM4NzgsIDY1NzE3LCA4MTk5LCA2NTcyMSwgMjc5OCwgNDUwLCAKKyAgICA2NTcyNiwgNjU3MzksIDY1NzQ0LCAxODMzLCA2NjgsIDY1NzQ4LCAzODk1LCA2NTc1NiwgNjU3NjIsIDY1NzY2LCA5MzEsIAorICAgIDY1Nzc2LCA2NTc4NSwgNjU3OTAsIDE0OTE1LCAxNDkyMiwgNDUyMzIsIDY1Nzk0LCAzODIyLCAxMzAzNCwgNjU4MDIsIAorICAgIDY1ODA5LCAyMzUzOCwgNjU4MTMsIDY1ODIwLCA2NTgyNiwgNjU4MzEsIDY1ODM2LCAxNDkzNSwgMzcyLCA2NTg0MSwgCisgICAgNjU4NTMsIDY1ODU5LCA2NTg2NywgMjgxMCwgMTc1MywgNjU4NzUsIDY1ODc3LCA2NTg4MiwgNjU4ODcsIDY1ODkyLCAKKyAgICA2NTg5OCwgNjU5MDMsIDY1OTA4LCA2NTkxMywgNjU5MTgsIDY1OTIzLCA2NTkyOCwgNjU5MzQsIDY1OTM5LCA2NTk0NCwgCisgICAgNjU5NDksIDY1OTU0LCA2NTk1OSwgNjU5NjQsIDY1OTY5LCA2NTk3NCwgNjU5ODAsIDY1OTg1LCA2NTk5MCwgNjU5OTUsIAorICAgIDY2MDAxLCA2NjAwNiwgNjYwMTIsIDY2MDE3LCA2NjAyMiwgNjYwMjcsIDY2MDMyLCA2NjAzNywgNjYwNDIsIDY2MDQ3LCAKKyAgICA2NjA1MywgNjYwNTgsIDY2MDY0LCA2NjA2OSwgNjYwNzQsIDY2MDc5LCA2NjA4NCwgNjYwODksIDY2MDk0LCA2NjA5OSwgCisgICAgNjYxMDQsIDY2MTEwLCA2NjExNSwgNjYxMjAsIDY2MTI1LCA2NjEyOSwgNjYxMzMsIDY2MTM4LCA2NjE0MiwgNjYxNDcsIAorICAgIDY2MTUyLCA2NjE1OCwgNjYxNjMsIDY2MTY3LCA2NjE3MiwgNjYxNzYsIDY2MTc5LCA2NjE4MSwgNjYxODUsIDY2MTg4LCAKKyAgICA2NjE5MywgNjYxOTcsIDY2MjAxLCA2NjIwNSwgNjYyMDksIDY2MjE4LCA2NjIyMiwgMzI1MjQsIDY2MjI1LCAzMjUyOSwgCisgICAgNjYyMzIsIDY2MjM3LCAzMjUzNCwgNjYyNDYsIDY2MjU1LCAzMjU0MCwgNjYyNjAsIDMyNTQ1LCA2NjI2OSwgNjYyNzQsIAorICAgIDExNTcxLCA2NjI3OCwgNjYyODMsIDY2Mjg4LCAzMjU1MCwgNjYyOTIsIDQwMTk2LCA2NjI5NiwgNjYyOTksIDY2MzAzLCAKKyAgICA4MjExLCA2NjMwOSwgNjYzMTQsIDY2MzE4LCAzNzA1LCAzMjU1NSwgNjYzMjEsIDY2MzI1LCA2NjMyOCwgNjYzMzMsIAorICAgIDY2MzM3LCA2NjM0MywgNjYzNTEsIDY2MzY0LCA2NjM3MywgNjYzNzksIDY2Mzg0LCA2NjM5MCwgNjYzOTQsIDY2NDAwLCAKKyAgICA2NjQwOCwgNjY0MTMsIDY2NDE3LCA2NjQyNCwgNjY0MzAsIDY2NDM4LCA2NjQ0NywgNjY0NTUsIDMyNTU4LCA2NjQ2MiwgCisgICAgNjY0NzIsIDY2NDgxLCA2NjQ5NCwgNjY0OTksIDY2NTA0LCA2NjUxMywgNjY1MTksIDY2NTI2LCA2NjUzNywgNjY1NDksIAorICAgIDY2NTU2LCA2NjU2NSwgNjY1NzQsIDY2NTgzLCA2NjU5MCwgNjY1OTYsIDY2NjAzLCA2NjYxMSwgNjY2MTgsIDY2NjI2LCAKKyAgICA2NjYzNSwgNjY2NDMsIDY2NjUwLCA2NjY1OCwgNjY2NjcsIDY2Njc1LCA2NjY4NCwgNjY2OTQsIDY2NzAzLCA2NjcxMSwgCisgICAgNjY3MTgsIDY2NzI2LCA2NjczNSwgNjY3NDMsIDY2NzUyLCA2Njc2MiwgNjY3NzEsIDY2Nzc5LCA2Njc4OCwgNjY3OTgsIAorICAgIDY2ODA3LCA2NjgxNywgNjY4MjgsIDY2ODM4LCA2Njg0NywgNjY4NTUsIDY2ODYyLCA2Njg3MCwgNjY4NzksIDY2ODg3LCAKKyAgICA2Njg5NiwgNjY5MDYsIDY2OTE1LCA2NjkyMywgNjY5MzIsIDY2OTQyLCA2Njk1MSwgNjY5NjEsIDY2OTcyLCA2Njk4MiwgCisgICAgNjY5OTEsIDY2OTk5LCA2NzAwOCwgNjcwMTgsIDY3MDI3LCA2NzAzNywgNjcwNDgsIDY3MDU4LCA2NzA2NywgNjcwNzcsIAorICAgIDY3MDg4LCA2NzA5OCwgNjcxMDksIDY3MTIxLCA2NzEzMiwgNjcxNDIsIDY3MTUxLCA2NzE1OSwgNjcxNjYsIDY3MTc0LCAKKyAgICA2NzE4MywgNjcxOTEsIDY3MjAwLCA2NzIxMCwgNjcyMTksIDY3MjI3LCA2NzIzNiwgNjcyNDYsIDY3MjU1LCA2NzI2NSwgCisgICAgNjcyNzYsIDY3Mjg2LCA2NzI5NSwgNjczMDMsIDY3MzEyLCA2NzMyMiwgNjczMzEsIDY3MzQxLCA2NzM1MiwgNjczNjIsIAorICAgIDY3MzcxLCA2NzM4MSwgNjczOTIsIDY3NDAyLCA2NzQxMywgNjc0MjUsIDY3NDM2LCA2NzQ0NiwgNjc0NTUsIDY3NDYzLCAKKyAgICA2NzQ3MiwgNjc0ODIsIDY3NDkxLCA2NzUwMSwgNjc1MTIsIDY3NTIyLCA2NzUzMSwgNjc1NDEsIDY3NTUyLCA2NzU2MiwgCisgICAgNjc1NzMsIDY3NTg1LCA2NzU5NiwgNjc2MDYsIDY3NjE1LCA2NzYyNSwgNjc2MzYsIDY3NjQ2LCA2NzY1NywgNjc2NjksIAorICAgIDY3NjgwLCA2NzY5MCwgNjc3MDEsIDY3NzEzLCA2NzcyNCwgNjc3MzYsIDY3NzQ5LCA2Nzc2MSwgNjc3NzIsIDY3NzgyLCAKKyAgICA2Nzc5MSwgNjc3OTksIDY3ODA2LCA2NzgxNCwgNjc4MjMsIDY3ODMxLCA2Nzg0MCwgNjc4NTAsIDY3ODU5LCA2Nzg2NywgCisgICAgNjc4NzYsIDY3ODg2LCA2Nzg5NSwgNjc5MDUsIDY3OTE2LCA2NzkyNiwgNjc5MzUsIDY3OTQzLCA2Nzk1MiwgNjc5NjIsIAorICAgIDY3OTcxLCA2Nzk4MSwgNjc5OTIsIDY4MDAyLCA2ODAxMSwgNjgwMjEsIDY4MDMyLCA2ODA0MiwgNjgwNTMsIDY4MDY1LCAKKyAgICA2ODA3NiwgNjgwODYsIDY4MDk1LCA2ODEwMywgNjgxMTIsIDY4MTIyLCA2ODEzMSwgNjgxNDEsIDY4MTUyLCA2ODE2MiwgCisgICAgNjgxNzEsIDY4MTgxLCA2ODE5MiwgNjgyMDIsIDY4MjEzLCA2ODIyNSwgNjgyMzYsIDY4MjQ2LCA2ODI1NSwgNjgyNjUsIAorICAgIDY4Mjc2LCA2ODI4NiwgNjgyOTcsIDY4MzA5LCA2ODMyMCwgNjgzMzAsIDY4MzQxLCA2ODM1MywgNjgzNjQsIDY4Mzc2LCAKKyAgICA2ODM4OSwgNjg0MDEsIDY4NDEyLCA2ODQyMiwgNjg0MzEsIDY4NDM5LCA2ODQ0OCwgNjg0NTgsIDY4NDY3LCA2ODQ3NywgCisgICAgNjg0ODgsIDY4NDk4LCA2ODUwNywgNjg1MTcsIDY4NTI4LCA2ODUzOCwgNjg1NDksIDY4NTYxLCA2ODU3MiwgNjg1ODIsIAorICAgIDY4NTkxLCA2ODYwMSwgNjg2MTIsIDY4NjIyLCA2ODYzMywgNjg2NDUsIDY4NjU2LCA2ODY2NiwgNjg2NzcsIDY4Njg5LCAKKyAgICA2ODcwMCwgNjg3MTIsIDY4NzI1LCA2ODczNywgNjg3NDgsIDY4NzU4LCA2ODc2NywgNjg3NzcsIDY4Nzg4LCA2ODc5OCwgCisgICAgNjg4MDksIDY4ODIxLCA2ODgzMiwgNjg4NDIsIDY4ODUzLCA2ODg2NSwgNjg4NzYsIDY4ODg4LCA2ODkwMSwgNjg5MTMsIAorICAgIDY4OTI0LCA2ODkzNCwgNjg5NDUsIDY4OTU3LCA2ODk2OCwgNjg5ODAsIDY4OTkzLCA2OTAwNSwgNjkwMTYsIDY5MDI4LCAKKyAgICA2OTA0MSwgNjkwNTMsIDY5MDY2LCA2OTA4MCwgNjkwOTMsIDY5MTA1LCA2OTExNiwgNjkxMjYsIDY5MTM1LCA2OTE0MywgCisgICAgNjkxNTAsIDY5MTU1LCA4MDU4LCA2OTE2MiwgMzI1NjgsIDY5MTY3LCA2OTE3MiwgMzI1NzMsIDY5MTc4LCAyMDkxNiwgCisgICAgMzI1NzgsIDY5MTgzLCA2OTE4OSwgNjkxOTcsIDY5MjAzLCA2OTIwOSwgNjkyMTYsIDY5MjIzLCA2OTIyOCwgNjkyMzIsIAorICAgIDY5MjM1LCA2OTIzOSwgNjkyNDgsIDY5MjU0LCA2OTI2NiwgNjkyNzcsIDY5MjgxLCAzMDgxLCA4MDMzLCA2OTI4NiwgCisgICAgNjkyODksIDY5MjkxLCA2OTI5NSwgNjkyOTksIDY5MzAzLCA2OTMwOSwgNjkzMTQsIDI1OTI3LCA2OTMxOSwgNjkzMjMsIAorICAgIDY5MzI2LCA2OTMzMSwgNjkzMzUsIDY5MzQyLCA2OTM0OCwgNjkzNTIsIDYxNzAsIDY5MzU2LCAzMjU5NSwgNjkzNjEsIAorICAgIDY5MzY4LCA2OTM3NywgNjkzODUsIDY5Mzk2LCA2OTQwNCwgNjk0MTIsIDY5NDE5LCA2OTQyNiwgNjk0MzIsIDY5NDQzLCAKKyAgICAzMjYwMCwgNjk0NDgsIDY5NDU5LCA2OTQ3MSwgNjk0NzksIDY5NDkwLCA2OTQ5OSwgNjk1MTAsIDY5NTE1LCA2OTUyMywgCisgICAgMjU1NiwgNjk1MjgsIDM0MjcwLCA2OTU0MSwgNjk1NDUsIDY5NTU3LCA2OTU2NSwgNjk1NzAsIDY5NTc4LCAxNzQ3MiwgCisgICAgNjk1ODksIDY5NTk1LCA2OTYwMiwgNjk2MTAsIDY5NjE2LCAzMjYxMCwgNjk2MjEsIDM5MTQsIDU4MjE3LCA2OTYyOCwgCisgICAgNjk2MzEsIDY5NjM5LCA2OTY1MiwgNjk2NjUsIDY5Njc4LCA2OTY5MSwgNjk2OTgsIDY5NzA5LCA2OTcxOCwgNDE2ODcsIAorICAgIDQxNjkyLCA2OTcyMywgNjk3MjcsIDY5NzM1LCA2OTc0MiwgNjk3NTEsIDY5NzU5LCA2OTc2NSwgNjk3NzQsIDY5NzgyLCAKKyAgICA2OTc5MCwgNjk3OTQsIDY5ODAzLCA2OTgxMiwgNjk4MjIsIDY5ODM1LCA2OTg0OCwgNjk4NTgsIDMyNjE1LCA2OTg2NCwgCisgICAgNjk4NzEsIDY5ODc3LCAzMjYyMSwgNjk4ODIsIDY5ODg1LCA2OTg4OSwgNjk4OTcsIDY5OTA2LCA0MTQyNSwgNjk5MTQsIAorICAgIDY5OTIzLCA2OTkzMSwgNjk5MzgsIDY5OTQ2LCA2OTk1NiwgNjk5NjUsIDY5OTc0LCA2OTk4MywgNjk5OTEsIDcwMDAyLCAKKyAgICA3MDAxMiwgOTM1OSwgMjE1NTQsIDcwMDIxLCA3MDAyNiwgNzAwMzEsIDcwMDM1LCA3MDAzOSwgNzAwNDQsIDcwMDUwLCAKKyAgICA3MDA1NSwgNzAwNjAsIDcwMDY2LCA3MDA3MSwgNzAwNzYsIDIxNTE5LCA3MDA4MSwgNzAwODgsIDcwMDk2LCA3MDEwNCwgCisgICAgNzAxMDksIDcwMTE2LCA3MDEyMywgNzAxMjgsIDcwMTMyLCA3MDEzNiwgNzAxNDQsIDcwMTUyLCAzMjYzOCwgNzAxNTgsIAorICAgIDcwMTY0LCA3MDE3NiwgNzAxODIsIDcwMTg2LCA3MDE5MywgNzAxOTgsIDcwMjA5LCA3MDIxOSwgNzAyMjksIDcwMjQxLCAKKyAgICA3MDI0NywgNzAyNTcsIDcwMjY3LCAzMjY2NSwgNzAyNzYsIDcwMjg1LCA3MDI5MSwgNzAzMDMsIDcwMzE0LCA3MDMyMSwgCisgICAgNzAzMjYsIDcwMzMwLCA3MDMzOCwgNzAzNDQsIDcwMzQ5LCA3MDM1NCwgNzAzNjEsIDcwMzY5LCA3MDM4MSwgNzAzOTEsIAorICAgIDcwNDAwLCA3MDQwOSwgNzA0MTYsIDM0MTMyLCAyMzgzNCwgNzA0MjIsIDcwNDI3LCA3MDQzMSwgNzA0MzUsIDcwNDQwLCAKKyAgICA3MDQ0NiwgNzA0NTcsIDcwNDcwLCA3MDQ3NSwgNzA0ODIsIDMyNjcwLCA3MDQ4NywgNzA0OTksIDcwNTA4LCA3MDUxOCwgCisgICAgNzA1MjksIDcwNTQyLCA3MDU0OSwgNzA1NTgsIDcwNTY3LCA3MDU3NSwgNzA1ODAsIDcwNTg2LCAxMDU4LCA3MDU5MSwgCisgICAgNzA1OTYsIDcwNjAxLCA3MDYwNiwgNzA2MTIsIDcwNjE3LCA3MDYyMiwgNzA2MjgsIDcwNjM0LCA3MDYzOSwgNzA2NDMsIAorICAgIDcwNjQ4LCA3MDY1MywgNzA2NTgsIDU4NzI5LCA3MDY2MywgNzA2NjgsIDcwNjczLCA3MDY3OCwgNzA2ODQsIDcwNjkwLCAKKyAgICA3MDY5NSwgNzA2OTksIDcwNzA0LCA3MDcwOSwgNzA3MTQsIDcwNzIwLCA3MDcyNSwgNzA3MzEsIDcwNzM2LCA3MDc0MSwgCisgICAgNzA3NDYsIDcwNzUxLCA3MDc1NSwgNzA3NjEsIDcwNzY2LCA3MDc3NSwgNzA3ODAsIDcwNzg1LCA3MDc5MCwgNzA3OTUsIAorICAgIDcwNzk5LCA3MDgwNiwgNzA4MTIsIDE3MTIyLCAxNzEyOSwgNzA4MTcsIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCAKKyAgICA0NTQ4NywgNzA4MzcsIDcwNzY3LCA3MDgzOSwgNzA4NDksIDMyNjc5LCA3MDg1MiwgNzA4NjEsIDcwODY3LCA2MTQzLCAKKyAgICAzMjY4NCwgNzA4NzEsIDcwODc3LCA3MDg4MiwgNzA4ODgsIDcwODkzLCA3MDg5NywgNzA5MDQsIDcwOTA5LCA3MDkxOSwgCisgICAgNzA5MjgsIDcwOTMyLCA3MDkzOCwgNzA5NDQsIDcwOTUwLCA3MDk1NCwgNzA5NjIsIDcwOTY5LCA3MDk3NywgNzA5ODUsIAorICAgIDMyNjg5LCA3MDk5MiwgNzA5OTUsIDcxMDAyLCA3MTAwOCwgNzEwMTMsIDcxMDE3LCA3MTAyMywgNzEwMzAsIDcxMDM1LCAKKyAgICA3MTAzOSwgNzEwNDgsIDcxMDU2LCA3MTA2MiwgNzEwNjcsIDMyNjk0LCA3MTA3NCwgNzEwODEsIDcxMDg3LCA3MTA5MiwgCisgICAgNzEwOTgsIDcxMTA1LCA3MTExMSwgMjEyODEsIDI3NDM4LCA3MTExNywgNzExMjIsIDcxMTI4LCA3MTE0MCwgNzA4MDAsIAorICAgIDcwODA3LCAyMTQ1NywgNzExNTAsIDcxMTU1LCA3MTE2MiwgNzExNjgsIDcxMTc1LCA3MTE4MSwgNzExOTIsIDcxMTk3LCAKKyAgICA5MTAzLCA3MTIwNSwgNzEyMDgsIDcxMjE0LCA3MTIxOCwgNzEyMjIsIDcxMjI1LCA3MTIzMSwgMzI0NDMsIDYxOTQsIDk2NCwgCisgICAgMTM0MTIsIDcxMjM4LCA3MTI0NCwgNzEyNTAsIDcxMjU2LCA3MTI2MiwgNzEyNjgsIDcxMjc0LCA3MTI4MCwgNzEyODYsIAorICAgIDcxMjkxLCA3MTI5NiwgNzEzMDEsIDcxMzA2LCA3MTMxMSwgNzEzMTYsIDcxMzIxLCA3MTMyNiwgNzEzMzEsIDcxMzM2LCAKKyAgICA3MTM0MSwgNzEzNDYsIDcxMzUxLCA3MTM1NywgNzEzNjIsIDcxMzY3LCA3MTM3MywgNzEzNzgsIDcxMzgzLCA3MTM4OSwgCisgICAgNzEzOTUsIDcxNDAxLCA3MTQwNywgNzE0MTMsIDcxNDE5LCA3MTQyNSwgNzE0MzEsIDcxNDM3LCA3MTQ0MiwgNzE0NDcsIAorICAgIDcxNDUzLCA3MTQ1OCwgNzE0NjMsIDcxNDY5LCA3MTQ3NCwgNzE0NzksIDcxNDg0LCA3MTQ4OSwgNzE0OTQsIDcxNDk5LCAKKyAgICA3MTUwNCwgNzE1MDksIDcxNTE0LCA3MTUxOSwgNzE1MjQsIDcxNTI5LCA3MTUzNSwgNzE1NDAsIDcxNTQ1LCA3MTU1MCwgCisgICAgNzE1NTYsIDcxNTYxLCA3MTU2NiwgNzE1NzEsIDcxNTc2LCA3MTU4MiwgNzE1ODcsIDcxNTkyLCA3MTU5NywgNzE2MDIsIAorICAgIDcxNjA3LCA3MTYxMiwgNzE2MTcsIDcxNjIyLCA3MTYyNywgNzE2MzIsIDcxNjM3LCA3MTY0MiwgNzE2NDcsIDcxNjUyLCAKKyAgICA3MTY1NywgNzE2NjIsIDcxNjY3LCA3MTY3MiwgNzE2NzcsIDcxNjgzLCA3MTY4OCwgNzE2OTMsIDcxNjk4LCA3MTcwMywgCisgICAgNzE3MDgsIDcxNzEzLCA3MTcxOCwgMTg2NCwgMTQyLCA3MTcyMywgNzE3MjcsIDcxNzMxLCA3MTczNiwgNzE3NDQsIDcxNzQ4LCAKKyAgICA3MTc1NSwgNzE3NjMsIDcxNzY3LCA3MTc4MCwgNzE3ODgsIDcxNzkyLCA3MTc5NSwgNzE4MDAsIDcxODA0LCA3MTgwOSwgCisgICAgNzE4MTMsIDcxODIxLCA3MTgyNSwgMjA5MjQsIDcxODMwLCA3MTgzNCwgNjA5MzAsIDcxODM4LCA3MTg0MSwgNzE4NDksIAorICAgIDcxODU3LCA3MTg2NSwgNzE4NzAsIDcxODc3LCA3MTg4MywgNzE4ODksIDcxODk0LCA3MTkwMSwgNzE5MDYsIDcxOTE0LCAKKyAgICA2NDkwNiwgNzE5MjEsIDcxOTI2LCA3MTkzMSwgNzE5MzUsIDExNjM4LCA3MTkzOSwgNzE5NDQsIDcxOTQ5LCA3MTk1MywgCisgICAgNzE5NTYsIDcxOTYyLCA3MTk2NiwgNzE5NzYsIDcxOTg1LCA3MTk4OCwgNzE5OTIsIDcxOTk5LCA3MjAxMiwgNzIwMTgsIAorICAgIDcyMDI2LCA3MjAzNywgNzIwNDgsIDcyMDU5LCA3MjA3MCwgNzIwNzksIDcyMDg1LCA3MjA5NCwgNzIxMDIsIDcyMTEyLCAKKyAgICA3MjEyNSwgNzIxMzIsIDcyMTQzLCA3MjE0OSwgNzIxNTQsIDcyMTU5LCA3MjE2NSwgNzIxNzEsIDcyMTgxLCA3MjE5MCwgCisgICAgNzA0ODksIDcyMTk4LCA3MjIwNCwgNzIyMTIsIDcyMjE4LCA3MjIyNiwgNzIyMjksIDcyMjMzLCA3MjIzNywgNzIyNDAsIAorICAgIDcyMjQ2LCA3MjI1MiwgNzIyNjAsIDcyMjcyLCA3MjI4NCwgNzIyOTEsIDcyMjk1LCA3MjMwNiwgNzIzMTQsIDcyMzIxLCAKKyAgICA3MjMzMywgNzIzNDEsIDcyMzQ5LCA3MjM1NiwgNzIzNjIsIDcyMzcyLCA3MjM4MSwgNzIzODYsIDcyMzk2LCA3MjQwNSwgCisgICAgNDA3NTEsIDcyNDEyLCA3MjQxNiwgNzI0MjEsIDcyNDI5LCA3MjQzNiwgNzI0NDIsIDcyNDQ2LCA3MjQ1NiwgNzI0NjcsIAorICAgIDcyNDc1LCA3MjQ4MiwgNzI0OTQsIDcyNTA2LCA3MjUxNSwgNjk1MzEsIDcyNTIyLCA3MjUzMywgNzI1NDcsIDcyNTU1LCAKKyAgICA3MjU2NSwgNzI1NzIsIDcyNTgwLCA3MjU5MiwgNzI2MDEsIDcyNjA5LCA3MjYxOSwgNzI2MzAsIDcyNjQyLCA3MjY1MSwgCisgICAgNzI2NjEsIDcyNjY4LCA3MjY3NywgNzI2OTIsIDcyNzAwLCA3MjcxMCwgNzI3MTksIDcyNzI3LCA3Mjc0MCwgNzI3NTUsIAorICAgIDcyNzU5LCA3Mjc2OCwgNzI3ODAsIDcyNzkxLCA3MjgwMiwgNzI4MTMsIDcyODIzLCA3MjgzNCwgNzI4NDIsIDcyODQ4LCAKKyAgICA3Mjg1OCwgNzI4NjYsIDcyODcyLCAyOTAwNywgNzI4NzcsIDcyODgzLCA3Mjg4OCwgNzI4OTUsIDk3MDEsIDE3NDkyLCAKKyAgICA3MjkwMSwgNzI5MTAsIDcyOTE1LCA3MjkxOSwgNzI5MjYsIDcyOTMyLCA3MjkzNywgNzI5NDIsIDcyOTUwLCA3Mjk1OCwgCisgICAgNzI5NjIsIDcyOTY1LCA3Mjk2OCwgNzI5NzAsIDcyOTc3LCA3Mjk4MywgNzI5OTQsIDcyOTk5LCA3MzAwMywgNzMwMTAsIAorICAgIDczMDE2LCA3MzAyMSwgNzMwMjksIDY1NDA1LCA2NTQxNSwgNzMwMzUsIDczMDQyLCA3MzA1MiwgMTA2MTEsIDczMDU5LCAKKyAgICA3MzA2NCwgMjkyMDMsIDczMDczLCA3MzA3OCwgNzMwODUsIDczMDk1LCA3MzEwMywgNzMxMTEsIDczMTIwLCA3MzEyNiwgCisgICAgNzMxMzIsIDczMTM5LCA3MzE0NiwgNzMxNTEsIDczMTU1LCA3MzE2MywgNzMxNjgsIDczMTczLCA3MzE4MSwgNzMxODgsIAorICAgIDczMTkzLCA3MzE5OSwgNzMyMDIsIDczMjA2LCA3MzIxNSwgNzE3NzUsIDczMjI0LCA3MzIyOCwgNzMyMzQsIDczMjQ1LCAKKyAgICA3MzI1NSwgMTc1MDEsIDczMjY2LCA3MzI3NCwgMTc1MTMsIDczMjgxLCA3MzI4NSwgNzMyOTQsIDI3MzI0LCA3MzMwMSwgCisgICAgNzMzMDUsIDczMzEwLCA3MzMyNywgNzMzMzksIDEwNTY5LCA3MzM1MSwgNzMzNTYsIDczMzYxLCA3MzM2NiwgMjA5OTcsIAorICAgIDczMzcwLCA3MzM3NSwgNzMzODAsIDczMzg2LCA3MzM5MSwgNTg0NiwgMjEwMDEsIDczMzk2LCA3MzQwMSwgNzM0MDcsIAorICAgIDczNDE0LCA3MzQxOSwgNzM0MjQsIDczNDMwLCA3MzQzNiwgNzM0NDIsIDczNDQ3LCA3MzQ1MywgNzM0NTcsIDczNDcxLCAKKyAgICA3MzQ3OSwgNzM0ODcsIDczNDkzLCA3MzQ5OCwgNzM1MDUsIDczNTE1LCA3MzUyNCwgNzM1MjksIDczNTM0LCA3MzU0MiwgCisgICAgNzM1NDcsIDczNTUzLCA3MzU1OCwgNzM1NjcsIDU5Nzg2LCA3MzU3MiwgNzM1NzUsIDczNTkzLCA3MzYxMiwgNzM2MjUsIAorICAgIDczNjM5LCA3MzY1NSwgNzM2NjIsIDczNjY5LCA3MzY3NSwgNzM2ODIsIDczNjg3LCA3MzY5MywgNzM2OTksIDczNzA3LCAKKyAgICA3MzcxMywgNzM3MTgsIDczNzIzLCA3MzczOSwgMTA1ODIsIDczNzUzLCA3Mzc2MCwgNzM3NjgsIDczNzc0LCA3Mzc3OCwgCisgICAgNzM3ODEsIDczNzg2LCA3Mzc5MSwgNzM3OTgsIDczODAzLCA3MzgxMiwgNzM4MTcsIDczODIzLCA3MzgzMiwgNzM4NDEsIAorICAgIDczODQ2LCA3Mzg1MCwgNzM4NTgsIDczODY3LCAxMTY2NywgNzM4NzYsIDczODg0LCA3Mzg4OSwgNzM4OTUsIDExNjc4LCAKKyAgICA3MzkwMCwgNzM5MDMsIDczOTA4LCA3MzkxOCwgNzM5MjcsIDczOTMyLCA3MzkzOCwgNzM5NDMsIDczOTUxLCA3Mzk1OCwgCisgICAgNzM5NjksIDczOTc5LCA3Mzk4NCwgNjQ4MzQsIDczOTg5LCA3Mzk5NSwgNzQwMDAsIDc0MDA3LCA3NDAxNiwgNzQwMjQsIAorICAgIDc0MDMwLCA3NDAzNiwgNzQwNDMsIDc0MDQ5LCA3NDA1MywgMTY5NDcsIDMwNTUsIDc0MDU4LCA3NDA2MiwgNzQwNjYsIAorICAgIDc0MDcyLCA3NDA4MSwgNzQwODcsIDc0MDk0LCA3NDA5OCwgNzQxMTksIDc0MTQxLCA3NDE1NywgNzQxNzQsIDc0MTkzLCAKKyAgICA3NDIwMiwgNzQyMTIsIDc0MjE5LCA3NDIyNiwgMjcyMTEsIDc0MjMyLCA3NDIzNiwgNzQyNDQsIDc0MjU2LCA3NDI2MiwgCisgICAgNzQyNzAsIDc0Mjc0LCA3NDI4MiwgNzQyODksIDc0MjkzLCA3NDI5OSwgNzQzMDUsIDc0MzEwLCAzNTYzLCA0MTg4NywgCisgICAgNzQzMTYsIDc0MzIwLCA3NDMyNCwgNzQzMjgsIDc0MzMzLCA3NDMzOCwgNzQzNDMsIDc0MzQ5LCA3NDM1NSwgNzQzNjEsIAorICAgIDc0MzY4LCA3NDM3NCwgNzQzODEsIDc0Mzg3LCA3NDM5MywgNzQzOTgsIDc0NDA0LCA3NDQwOSwgNzQ0MTMsIDc0NDE4LCAKKyAgICA3NDQyMiwgNzQ0MjcsIDQxOTAyLCA3NDQzMSwgNzQ0MzYsIDc0NDQ0LCA3NDQ0OCwgNzQ0NTMsIDc0NDYwLCA3NDQ2OSwgCisgICAgNzQ0NzUsIDc0NDc5LCA3NDQ4NiwgNzQ0OTAsIDc0NDkzLCA3NDUwMCwgNzQ1MDksIDc0NTE0LCA3NDUxOCwgNzQ1MjYsIAorICAgIDc0NTM1LCA3NDUzOSwgNzQ1NDcsIDc0NTUzLCA3NDU1OCwgNzQ1NjMsIDc0NTY5LCA3NDU3NSwgNzQ1ODAsIDc0NTg0LCAKKyAgICA3NDU5MCwgNzQ1OTUsIDc0NTk5LCA3NDYwMywgNzQ2MDYsIDc0NjExLCA3NDYxOSwgNzQ2MjksIDc0NjM0LCAzOTM4NywgCisgICAgNzQ2NDIsIDc0NjU0LCA3NDY1OCwgNzQ2NjQsIDc0Njc2LCA3NDY4NywgNzQ2OTQsIDc0NzAwLCA3NDcwNywgNzQ3MTksIAorICAgIDc0NzI2LCA3NDczMiwgMjEwNzUsIDc0NzM2LCA3NDc0MiwgNzQ3NDksIDc0NzU1LCA3NDc2MSwgNzQ3NjYsIDc0NzcxLCAKKyAgICA3NDc3NiwgNzQ3ODUsIDcwMzMsIDc0NzkwLCAxNjQxMywgNzQ3OTYsIDc0ODAwLCA3NDgwNCwgNzQ4MDgsIDc0ODE2LCAKKyAgICA3NDgyNSwgNzQ4MjksIDc0ODM2LCA3NDg0NSwgNzQ4NTgsIDc0ODY0LCA3NDQyMywgMzAwNjcsIDc0ODY5LCA3NDg3MSwgCisgICAgNzQ4NzYsIDc0ODgxLCA3NDg4NiwgNzQ4OTEsIDc0ODk2LCA3NDkwMSwgNzQ5MDYsIDc0OTExLCA3NDkxNiwgNzQ5MjEsIAorICAgIDc0OTI2LCA3NDkzMSwgNzQ5MzYsIDc0OTQxLCA3NDk0NywgNzQ5NTIsIDc0OTU3LCA3NDk2MiwgNzQ5NjcsIDc0OTcyLCAKKyAgICA3NDk3NywgNzQ5ODIsIDc0OTg3LCA3NDk5MywgNzQ5OTksIDc1MDA1LCA3NTAxMCwgNzUwMTUsIDc1MDI3LCA3NTAzMiwgCisgICAgMTg3MCwgNDksIDc1MDM3LCA3NTA0MiwgMzI3MjEsIDc1MDQ2LCAzMjcyNiwgMzI3MzEsIDMyNzM3LCAzMjc0MiwgNzUwNTAsIAorICAgIDMyNzQ3LCAyMjA3MCwgNzUwNzIsIDc1MDc2LCA3NTA4MCwgNzUwODUsIDc1MDg5LCAzMjc1MSwgNzUwOTMsIDc1MTAxLCAKKyAgICAzMjc1NiwgNzUxMDgsIDc1MTExLCA3NTExNiwgNzUxMjAsIDk1MzYsIDc1MTI5LCAzMjc2MSwgMjE5MzIsIDc1MTMyLCAKKyAgICA3NTEzNiwgMTQyOCwgNzUxNDEsIDMyNzcyLCA3NTE0NCwgNzUxNDksIDI1NzIwLCAyNTczMCwgMzUyMzMsIDc1MTU0LCAKKyAgICA3NTE1OSwgNzUxNjQsIDc1MTY5LCA3NTE3NSwgNzUxODAsIDc1MTg5LCA3NTE5NCwgNzUyMDEsIDc1MjA3LCA3NTIxMiwgCisgICAgNzUyMTcsIDc1MjIyLCA3NTIzMiwgNzUyNDEsIDc1MjQ2LCA3NTI1NCwgNzUyNTgsIDc1MjY2LCAzMjU4NiwgMzcyODgsIAorICAgIDc1MjczLCA3NTI3OSwgNzUyODQsIDc1Mjg5LCAxMjAwOSwgNzUyOTQsIDc1MzAwLCA3NTMwNSwgNzUzMTIsIDc1MzE4LCAKKyAgICA3NTMyMywgNzUzMzEsIDc1MzQxLCA3NTM1MSwgNzUzNTcsIDc1MzYyLCA3NTM2OCwgMTc1MjMsIDc1Mzc1LCAzNjA0OCwgCisgICAgNzUzODgsIDc1MzkzLCA3NTM5OSwgMzA5NjgsIDc1NDEyLCA3NTQxOCwgNzU0MjIsIDc1NDMxLCA3NTQzOCwgNzU0NDQsIAorICAgIDc1NDUyLCA3NTQ2MSwgNzU0NjgsIDc1NDc0LCA3NTQ3NywgNzU0ODEsIDI1ODYxLCA3NTQ4NSwgNzU0OTIsIDc1NDk4LCAKKyAgICA3NTUwNiwgNzU1MTEsIDIzOTc3LCA3NTUxNywgNzU1MjAsIDc1NTI4LCA3NTUzNiwgNzU1NTAsIDc1NTU3LCA3NTU2MywgCisgICAgNzU1NzAsIDc1NTc2LCAzMjc4NiwgNzU1ODAsIDc1NTg3LCA3NTU5NSwgNzU2MDMsIDc1NjA5LCAzMjc5MSwgNzU2MTcsIAorICAgIDc1NjIzLCA3NTYyOCwgNzU2MzgsIDc1NjQ0LCA3NTY1MywgMzA4MDUsIDM0NjkxLCA3NTY2MSwgNzU2NjYsIDc1NjcxLCAKKyAgICA3NTY3NSwgNzU2ODAsIDc1Njg0LCA3NTY5MiwgMTQ5MDcsIDM5NDAwLCA3NTY5NywgNzU3MDIsIDMyNzk2LCA2MjIzMiwgCisgICAgNzU3MDYsIDc1NzExLCA3NTcxNSwgNzU3MjQsIDc1NzMyLCA3NTczOCwgNzU3NDMsIDc1NzQ5LCA3NTc1NiwgNzU3NjIsIAorICAgIDc1NzY3LCA3NTc3MiwgNzU3ODEsIDc1NzkzLCA3NTgwOCwgMzMwNTgsIDc1ODE0LCAxNjUzMiwgMzI4MDAsIDc1ODE4LCAKKyAgICA3NTgyNSwgMjQwODcsIDc1ODMxLCA3NTgzOCwgNzU4NDcsIDc1ODU0LCA3NTg2MywgNzU4NjksIDc1ODc0LCA3NTg4MiwgCisgICAgNzU4ODgsIDMyODEwLCA3NTg5MywgNzU5MDIsIDc0NjgyLCA3NTkxMSwgNzU5MTgsIDc1OTI0LCA3NTkzMCwgNzU5NDAsIAorICAgIDc1OTQ4LCA3NTk1NSwgNzU5NTksIDMyODE1LCA3NTk2MiwgMzI4MjEsIDMyODI3LCA3NTk2NywgNzU5NzUsIDc1OTgzLCAKKyAgICA3NTk5MywgNzYwMDIsIDc2MDEwLCA3NjAxNywgNzYwMjcsIDMyODMyLCA3NjAzMSwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCisgICAgNzYwNDYsIDc2MDUwLCA3NjA1NiwgNzYwNjEsIDc2MDY1LCA3NjA3NiwgNzYwODEsIDc2MDg2LCAzMDYwLCA3NjA5MCwgCisgICAgNzYwOTcsIDc2MTAxLCA3NjExMCwgNzYxMTgsIDc2MTI1LCA3NjEzMCwgNzYxMzUsIDYyMjc4LCA3NjEzOSwgNzYxNDIsIAorICAgIDc2MTQ4LCA3NjE1NiwgNzYxNjIsIDc2MTY2LCA3NjE3MSwgNzYxNzgsIDc2MTgzLCA3NjE4OSwgMzQ3MjIsIDc2MTk0LCAKKyAgICA3NjE5NywgNzYyMDIsIDc2MjA2LCA3NjIxMSwgNzYyMTYsIDc2MjIwLCA3NjIyOCwgNzYyMzIsIDI1NzM5LCAyNTc0OCwgCisgICAgNzYyMzgsIDc2MjQ0LCA3NjI1MCwgNzYyNTUsIDc2MjU5LCA3NjI2MiwgNzYyNzIsIDc2MjgxLCA3NjI4NiwgNzYyOTIsIAorICAgIDc2Mjk5LCA3NjMwNSwgNzYzMDksIDc2MzE3LCA3NjMyMiwgMzQ3MjgsIDc2MzI2LCA3NjMzNCwgNzYzNDAsIDc2MzQ3LCAKKyAgICA3NjM1MiwgNzYzNTYsIDc2MzYxLCA1ODQwMywgMzQ3MzQsIDc2MzY3LCA3NjM3MiwgNzYzNzYsIDc2MzgxLCA3NjM4NiwgCisgICAgNzYzOTEsIDc2Mzk1LCA3NjQwMCwgNzY0MDUsIDc2NDExLCA3NjQxNiwgNzY0MjEsIDc2NDI3LCA3NjQzMywgNzY0MzgsIAorICAgIDc2NDQyLCA3NjQ0NywgNzY0NTIsIDc2NDU3LCA3NjQ2MSwgMjQwODYsIDc2NDY2LCA3NjQ3MSwgNzY0NzcsIDc2NDgzLCAKKyAgICA3NjQ4OSwgNzY0OTQsIDc2NDk4LCA3NjUwMywgNzY1MDgsIDc2NTEzLCA3NjUxNywgNzY1MjIsIDc2NTI3LCA3NjUzMiwgCisgICAgNzY1MzcsIDc2NTQxLCAzMjg0MCwgNzY1NDksIDc2NTUzLCA3NjU2MSwgNzY1NjksIDc2NTgwLCA3NjU4NSwgNzY1ODksIAorICAgIDIyMzg0LCA3NjU5NCwgNzY2MDAsIDc2NjEwLCA3NjYxNywgNzY2MjIsIDc2NjMxLCA3NjYzNiwgNzY2NDAsIDc2NjQ1LCAKKyAgICA3NjY1MywgNzY2NjEsIDc2NjY4LCA2NTA2OCwgNzY2NzQsIDc2NjgyLCA3NjY4OSwgNzY3MDAsIDc2NzA2LCA3NjcxMCwgCisgICAgNzY3MTYsIDMyODUwLCA3NjcxOSwgNzY3MjYsIDc2NzM0LCA3NjczOSwgMzk1OTEsIDc2NzQzLCA3Njc0OCwgNzY3NTUsIAorICAgIDc2NzYwLCA4OTg1LCA3Njc2NCwgNzY3NzIsIDc2Nzc5LCA3Njc4NiwgNzY3OTIsIDc2ODA2LCA2MzM0MCwgNzY4MTQsIAorICAgIDc2ODIwLCA3NjgyNCwgNzY4MjcsIDc2ODM1LCA3Njg0MiwgNzY4NDcsIDc2ODYwLCA3Njg2NywgNzY4NzEsIDc2ODc4LCAKKyAgICA3Njg4MywgNjA4MjMsIDc2ODg4LCA3Njg5MSwgNzY4OTgsIDc2OTA0LCA3NjkwOCwgNzY5MTYsIDc2OTI1LCA3NjkzNSwgCisgICAgNzY5NDUsIDc2OTU0LCA3Njk2MiwgNzY5NzMsIDc2OTc4LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCAzNTM2NCwgNzY5OTksIAorICAgIDIxMzQ0LCAzNTM3MywgNzcwMDQsIDc3MDA5LCA3NzAxNCwgNzcwMTksIDc3MDI0LCA3NzAyOSwgNzcwMzQsIDc3MDM4LCAKKyAgICA3NzA0MywgNzcwNDgsIDc3MDUzLCA3NzA1OCwgNzcwNjMsIDc3MDY4LCA3NzA3MiwgNzcwNzcsIDc3MDgyLCA3NzA4NiwgCisgICAgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDMsIDc3MTA4LCA3NzExMiwgNzcxMTcsIDc3MTIxLCA3NzEyNSwgNzcxMzAsIAorICAgIDc3MTM1LCA3NzE0MCwgNzcxNDUsIDc3MTQ5LCA3NzE1NCwgNzcxNTksIDc3MTYzLCA3NzE2OCwgNzcxNzMsIDc3MTc4LCAKKyAgICA3NzE4MywgNzcxODgsIDc3MTkzLCA3NzE5OCwgNzcyMDMsIDc3MjA4LCA3NzIxMywgNzcyMTgsIDc3MjIzLCA3NzIyOCwgCisgICAgNzcyMzMsIDc3MjM4LCA3NzI0MywgNzcyNDgsIDc3MjUzLCA3NzI1OCwgNzcyNjMsIDc3MjY3LCA3NzI3MiwgNzcyNzcsIAorICAgIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCA3NzMxNywgNzczMjIsIDc3MzI2LCAKKyAgICA3NzMzMSwgNzczMzUsIDc3MzQwLCA3NzM0NSwgNzczNTAsIDc3MzU1LCA3NzM2MCwgNzczNjUsIDc3MzcwLCA3NzM3NSwgCisgICAgNzczODAsIDc3Mzg0LCA3NzM4OCwgNzczOTMsIDc3Mzk4LCA3NzQwMiwgNzc0MDcsIDc3NDEyLCA3NzQxNiwgNzc0MjEsIAorICAgIDc3NDI2LCA3NzQzMSwgNzc0MzYsIDc3NDQwLCA3NzQ0NSwgNzc0NTAsIDc3NDU0LCA3NzQ1OSwgNzc0NjMsIDc3NDY3LCAKKyAgICA3NzQ3MSwgNzc0NzUsIDc3NDgwLCA3NzQ4NCwgNzc0ODgsIDc3NDkyLCA3NzQ5NiwgNzc1MDAsIDc3NTA0LCA3NzUwOCwgCisgICAgNzc1MTIsIDc3NTE2LCA3NzUyMSwgNzc1MjYsIDc3NTMxLCA3NzUzNiwgNzc1NDEsIDc3NTQ2LCA3NzU1MSwgNzc1NTYsIAorICAgIDc3NTYxLCA3NzU2NiwgNzc1NzAsIDc3NTc0LCA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTUsIDc3NTk5LCAKKyAgICA3NzYwNCwgNzc2MDgsIDc3NjEzLCA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMSwgNzc2MzUsIDc3NjM5LCA3NzY0MywgCisgICAgNzc2NDcsIDc3NjUxLCA3NzY1NSwgNzc2NTksIDc3NjYzLCA3NzY2NywgNzc2NzEsIDc3Njc1LCA3NzY3OSwgNzc2ODMsIAorICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAxLCA3NzcwNSwgNzc3MDksIDc3NzEzLCA3NzcxNywgNzc3MjEsIDc3NzI2LCAKKyAgICA3NzczMCwgNzc3MzQsIDc3NzM4LCA3Nzc0MiwgNzc3NDYsIDc3NzUwLCA3Nzc1NSwgNzc3NTksIDc3NzY0LCA3Nzc2OCwgCisgICAgNzc3NzIsIDc3Nzc2LCA3Nzc4MCwgNzc3ODQsIDc3Nzg4LCA3Nzc5MiwgNzc3OTYsIDc3ODAwLCA3NzgwNCwgNzc4MDgsIAorICAgIDc3ODEzLCA3NzgxNywgNzc4MjEsIDc3ODI1LCA3NzgyOSwgNzc4MzMsIDc3ODM3LCA3Nzg0MSwgNzc4NDUsIDc3ODQ5LCAKKyAgICA3Nzg1MywgNzc4NTcsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc1LCA3Nzg4MCwgNzc4ODQsIDc3ODg4LCA3Nzg5MiwgCisgICAgNzc4OTYsIDc3OTAwLCA3NzkwNCwgNzc5MDgsIDc3OTEyLCA3NzkxNywgNzc5MjEsIDc3OTI2LCA3NzkzMCwgNzc5MzUsIAorICAgIDc3OTM5LCA3Nzk0NCwgNzc5NDgsIDc3OTU0LCA3Nzk1OSwgNzc5NjMsIDc3OTY4LCA3Nzk3MiwgNzc5NzcsIDc3OTgxLCAKKyAgICA3Nzk4NiwgNzc5OTAsIDc3OTk1LCAxNTIxLCA3Nzk5OSwgMjgyNCwgMTc1OSwgMTc2NCwgNzgwMDMsIDc4MDA3LCAyODI4LCAKKyAgICA3ODAxMSwgMTM5NywgNzgwMTYsIDEzNDIsIDc4MDIwLCAyODQwLCA3ODAyNCwgNzgwMzEsIDc4MDM4LCA3ODA1MiwgMjg0NCwgCisgICAgNzEzMSwgNzgwNjEsIDc4MDY5LCA3ODA3NiwgNzgwODcsIDc4MDk2LCA3ODEwMywgNzgxMTUsIDc4MTI4LCA3ODE0MSwgCisgICAgNzgxNTIsIDc4MTU3LCA3ODE2NCwgNzgxNzYsIDc4MTgwLCAyODQ4LCAxMTc0MCwgNzgxOTAsIDc4MTk1LCA3ODIwNCwgCisgICAgNzgyMTQsIDI4NTIsIDc4MjE5LCA3ODIyMywgNzgyMjgsIDc4MjM1LCA3ODI0MSwgNzgyNDksIDc4MjYxLCAxMzQ3LCAKKyAgICAxMzAzNSwgNzgyNzEsIDc4Mjc1LCA3ODI4MSwgNzgyOTUsIDc4MzA3LCA3ODMxOSwgNzgzMjksIDc4MzM4LCA3ODM0NywgCisgICAgNzgzNTYsIDc4MzY0LCA3ODM3NSwgNzgzODMsIDQwNTEsIDc4MzkzLCA3ODQwNCwgNzg0MTMsIDc4NDE5LCA3ODQzNCwgCisgICAgNzg0NDEsIDc4NDQ3LCAzNTQ4OSwgNzg0NTIsIDI4NzYsIDEzMDM5LCA3ODQ1NiwgNzg0NjMsIDg5MzAsIDc4NDcyLCAyODgxLCAKKyAgICAzMjMzNiwgNzg0NzgsIDYwNTcyLCA3ODQ4NSwgNzg0OTEsIDc4NTAyLCA3ODUwOCwgNzg1MTUsIDc4NTIxLCA3ODUyOSwgCisgICAgNzg1MzYsIDc4NTQyLCA3ODU1MiwgNzg1NjEsIDc4NTcyLCA3ODU3OSwgNzg1ODUsIDc4NTk1LCA3ODYwMywgNzg2MDksIAorICAgIDc4NjI0LCA3ODYzMCwgNzg2MzUsIDc4NjQyLCA3ODY0NSwgNzg2NTEsIDc4NjU4LCA3ODY2NCwgNzg2NzIsIDc4NjgxLCAKKyAgICA3ODY4OSwgNzg2OTUsIDc4NzA0LCA0MTQyNywgNzg3MTgsIDc4NzIzLCA3ODcyOSwgMTQ3NDQsIDc4NzM0LCA3ODc0NywgCisgICAgNzg3NTYsIDc4NzY0LCA3ODc3MSwgNzg3NzUsIDc4Nzc5LCA3ODc4MiwgNzg3ODksIDc4Nzk2LCA3ODgwNCwgNzg4MTIsIAorICAgIDc4ODIxLCA3ODgyOSwgMTQ2NzEsIDc4ODM3LCA3ODg0MiwgNzg4NDYsIDc4ODU4LCA3ODg2NSwgNzg4NzQsIDc0OCwgCisgICAgNzg4ODQsIDc4ODkzLCA3ODkwNCwgMjg5NywgNzg5MDgsIDc4OTEyLCA3ODkxOCwgNzg5MzEsIDc4OTQzLCA3ODk1MywgCisgICAgNzg5NjIsIDc4OTc0LCAyNjM1MiwgNzg5ODUsIDc4OTkzLCA3OTAwMiwgNzkwMTMsIDc5MDI0LCA3OTAzNCwgNzkwNDQsIAorICAgIDc5MDUzLCA3OTA2MSwgMTEzMDUsIDc5MDY4LCA3OTA3MiwgNzkwNzUsIDc5MDgwLCA3OTA4NSwgNzkwODksIDc5MDk1LCAKKyAgICAxMzUyLCAxMTgxMSwgNzkxMDIsIDc5MTEzLCA3OTEyMiwgNzkxMzAsIDc5MTM5LCA3OTE0NywgNzkxNjMsIDc5MTc0LCAKKyAgICA3OTE4MywgNzkxOTEsIDc5MjAzLCA3OTIxNCwgNzkyMzAsIDc5MjQwLCA3OTI2MSwgNzkyNzQsIDc5MjgyLCA3OTI4OSwgCisgICAgMTQ4NTUsIDc5MzAyLCA3OTMwNywgNzkzMTMsIDU5MDgsIDc5MzE5LCA3OTMyMiwgNzkzMjksIDc5MzM5LCA4MTc2LCAKKyAgICA3OTM0NiwgNzkzNTEsIDc5MzU2LCA3OTM2MSwgNzkzNjksIDc5Mzc4LCA3OTM4NiwgOTc0OSwgOTc1OCwgNzkzOTEsIAorICAgIDc5NDAyLCA3OTQwNywgNzk0MTMsIDI5MTMsIDI5MTgsIDc5NDE5LCAxMDg3MiwgNzk0MjUsIDc5NDMyLCA3OTQzOSwgCisgICAgNzk0NTIsIDIyNTEsIDY4LCA3OTQ1NywgNzk0NjIsIDc5NDcyLCA3OTQ3OCwgNzk0ODcsIDc5NDk1LCA3OTUwNSwgNzk1MDksIAorICAgIDc5NTE0LCA3OTUxOCwgNzk1MzAsIDI5NDEsIDc5NTM4LCA3OTU0NiwgNzk1NTEsIDc5NTYyLCA3OTU3MywgNzk1ODIsIAorICAgIDc5NTg3LCA3OTU5MywgNzk1OTgsIDc5NjA4LCA3OTYxOCwgNzk2MjMsIDc5NjI5LCA3OTYzNCwgNzk2NDMsIDIxMzk3LCAKKyAgICA3OTY0NywgNDEyOCwgMjAsIDc5NjUyLCA3OTY2MSwgNzk2NjgsIDc5Njc1LCA3OTY4MSwgNzk2ODcsIDg2NCwgNzk2OTIsIAorICAgIDc5Njk3LCA2MDkwMCwgNzk3MDIsIDc5NzA3LCA3OTcxMywgNzk3MTksIDc5NzI3LCA3OTczMiwgNzk3MzksIDc5NzQ1LCAKKyAgICA3OTc1MCwgMzgwMDEsIDQxMzIxLCA3OTc1NiwgMjk0NSwgMzIsIDc5NzY2LCA3OTc3OSwgNzk3ODQsIDc5NzkyLCA3OTc5NywgCisgICAgNzk4MDMsIDI5NjcsIDI4Mjg5LCA3OTgwOCwgNzk4MTYsIDc5ODIzLCA3OTgyOCwgNTg2NDUsIDYxOTAzLCA3OTgzNywgCisgICAgNzk4NDEsIDE3MDQsIDE4MTMsIDc5ODQ2LCA3OTg1MSwgNzk4NTgsIDE4MTcsIDI0NywgNzk4NjUsIDc5ODcxLCAyOTg5LCAKKyAgICA3OTg3NiwgNzk4ODEsIDc5ODg4LCAxODIxLCA3OTg5MywgNzk4OTksIDc5OTA0LCA3OTkxNiwgNjExOSwgNzk5MjYsIDE4MjgsIAorICAgIDc5OTMyLCA3OTkzNywgNzk5NDQsIDc5OTUxLCA3OTk2NiwgNzk5NzMsIDc5OTg0LCA3OTk5MiwgMjYxOCwgNzk5OTYsIAorICAgIDgwMDA4LCA4MDAxMywgODAwMTcsIDgwMDIzLCAyODExNCwgMjI1NiwgODAwMjcsIDgwMDM4LCA4MDA0MiwgODAwNDYsIAorICAgIDgwMDUyLCA4MDA1NiwgODAwNjUsIDgwMDY5LCA4MDA4MCwgODAwODQsIDIzMDIsIDMyMTY1LCA4MDA4OCwgODAwOTgsIAorICAgIDMwODAsIDkzNjQsIDgwMTA2LCA4MDExMSwgODAxMTUsIDgwMTI0LCA4MDEzMSwgODAxMzcsIDMwNTAsIDE3MTM5LCA4MDE0MSwgCisgICAgODAxNTQsIDgwMTcyLCA4MDE3NywgODAxODUsIDgwMTkzLCA4MDIwMywgOTk3OCwgMTMxNDcsIDgwMjE1LCA4MDIyOCwgCisgICAgODAyMzUsIDgwMjQyLCA4MDI1OCwgODAyNjUsIDgwMjcxLCAxMDk1LCA4MDI3OCwgODAyODUsIDgwMjk1LCA4MDMwNCwgCisgICAgODAzMTYsIDQyMjkxLCA4MDMyNCwgMzA2NCwgMTIwMjMsIDgwMzI3LCA4MDMzNSwgODAzMzksIDc4MjMxLCAzMDY4LCAKKyAgICA4MDM0MywgMjExNzgsIDEyMDM5LCAzNzU2LCA4MDM0NywgMzA3NCwgODAzNTEsIDgwMzYxLCA4MDM2NywgODAzNzMsIAorICAgIDgwMzc5LCA4MDM4NSwgODAzOTEsIDgwMzk3LCA4MDQwMywgODA0MDksIDgwNDE1LCA4MDQyMSwgODA0MjcsIDgwNDMzLCAKKyAgICA4MDQzOSwgODA0NDUsIDgwNDUxLCA4MDQ1NywgODA0NjMsIDgwNDY5LCA4MDQ3NSwgODA0ODEsIDgwNDg3LCA4MDQ5MywgCisgICAgODA0OTksIDgwNTA1LCA4MDUxMSwgODA1MTgsIDgwNTI1LCA4MDUzMSwgODA1MzcsIDgwNTQzLCA4MDU0OSwgODA1NTUsIAorICAgIDgwNTYxLCAxMzU3LCAxNjA0OSwgMTIwNjEsIDgwNTY3LCA4MDU3MiwgODA1NzcsIDgwNTgyLCA4MDU4NywgODA1OTIsIAorICAgIDgwNTk3LCA4MDYwMiwgODA2MDcsIDgwNjEyLCA4MDYxNywgODA2MjIsIDgwNjI3LCA4MDYzMiwgODA2MzcsIDgwNjQyLCAKKyAgICA4MDY0NywgODA2NTIsIDgwNjU3LCA4MDY2MiwgODA2NjcsIDgwNjcyLCA4MDY3NywgODA2ODIsIDgwNjg3LCA4MDY5MiwgCisgICAgODA2OTgsIDgwNzAzLCA4MDcwOCwgODA3MTQsIDgwNzE5LCA4MDcyNSwgODA3MzAsIDgwNzM1LCA4MDc0MSwgODA3NDYsIAorICAgIDgwNzUxLCA4MDc1NiwgODA3NjEsIDgwNzY2LCA4MDc3MSwgODA3NzYsIDgwNzgxLCA4MDM2MiwgODAzNjgsIDgwMzc0LCAKKyAgICA4MDM4MCwgODAzODYsIDgwMzkyLCA4MDM5OCwgODA0MDQsIDgwNDEwLCA4MDQxNiwgODA0MjIsIDgwNDI4LCA4MDQzNCwgCisgICAgODA0NDAsIDgwNDQ2LCA4MDc4NywgODA0NTIsIDgwNDU4LCA4MDQ2NCwgODA3OTMsIDgwNDcwLCA4MDQ3NiwgODA0ODIsIAorICAgIDgwNDg4LCA4MDQ5NCwgODA1MDAsIDgwNTA2LCA4MDUyNiwgODA3OTksIDgwODA1LCA4MDUzMiwgODA4MTEsIDgwNTM4LCAKKyAgICA4MDU0NCwgODA1NTAsIDgwNTU2LCA4MDU2MiwgMzA5MSwgMzA5NiwgODA4MTcsIDgwODIyLCA4MDgyNSwgODA4MzEsIAorICAgIDgwODM3LCA4MDg0NCwgODA4NDksIDgwODU0LCAyMzA3LCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwogI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDcKLSNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMTEKKyNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDkKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tbXSA9IHsKLSAgICAwLCAyMTksIDIwNiwgMjQ0LCAyNTQsIDc3LCAyMjQsIDE0MywgNzcsIDUwLCA1MiwgMjQ3LCA4NiwgNTIsIDIyNiwgNTcsIAotICAgIDUyLCAyNTQsIDM1LCAyNTMsIDIyNiwgNDIsIDIyNiwgMTMxLCA0NiwgMjI2LCAxMzEsIDI1MywgMTMyLCA5NCwgNTIsIDI0OSwgCi0gICAgMTU3LCAyNDAsIDE1OSwgMjQzLCAyMDAsIDIxOSwgNjksIDIxOSwgMjMxLCAyMSwgMjEyLCA3OSwgMjEsIDExNiwgMjEsIAotICAgIDEwOSwgMjEsIDE2NiwgMjEsIDE2MywgMjEsIDE4MCwgMjEsIDE4OSwgMjEsIDE5OCwgMjEsIDE5NSwgMjEsIDIwMCwgMjQ5LCAKLSAgICAxNjQsIDIyMSwgNzAsIDIzMywgMzksIDUyLCAyNDUsIDYxLCA1MiwgMjQyLCAxMDcsIDUyLCAyMjQsIDE1OCwgNzcsIDI0OSwgCi0gICAgMTU2LCAyNTMsIDEyMiwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgNzQsIDcsIDYsIDEsIDI1MCwgMjUyLCA3LCA2LCAxLCAKLSAgICAyNDksIDMsIDcsIDYsIDEsIDc0LCA3LCA2LCAxLCAyNDQsIDIzMCwgNywgNiwgMSwgMjQzLCAxNzcsIDcsIDYsIDEsIDI0MiwgCi0gICAgNDEsIDcsIDYsIDEsIDcyLCA3LCA2LCAxLCAyMzUsIDE0MiwgNywgNiwgMSwgMjM1LCAyNywgNywgNiwgMSwgMTUwLCA3LCA2LCAKLSAgICAxLCAxODMsIDcsIDYsIDEsIDIwNCwgNywgNiwgMSwgNzUsIDcsIDYsIDEsIDIyNiwgMjI5LCA3LCA2LCAxLCAyMjQsIDI0MCwgCi0gICAgNywgNiwgMSwgMTQ5LCA3LCA2LCAxLCAxOTcsIDcsIDYsIDEsIDIxOCwgOTksIDcsIDYsIDEsIDY5LCA3LCA2LCAxLCAyMTUsIAotICAgIDc5LCA3LCA2LCAxLCAyMTQsIDgyLCA3LCA2LCAxLCAyMTMsIDE2NiwgNywgNiwgMSwgMjEzLCAxMDUsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCA0MiwgNDEsIDEyNSwgMjIzLCAyMDMsIDIxOSwgMjMxLCA0NiwgNDEsIDEyNSwgMjQ5LCAyMjQsIDI1NCwgMTc0LCAKLSAgICAxMTUsIDIzMiwgMjQyLCAyNDIsIDExNCwgMjU0LCAxNzQsIDcsIDMsIDEsIDYxLCA3LCAzLCAxLCAyNTMsIDc0LCA3LCAzLCAKLSAgICAxLCAyNTAsIDI1MiwgNywgMywgMSwgMjQ5LCAzLCA3LCAzLCAxLCA3NCwgNywgMywgMSwgMjQ0LCAyMzAsIDcsIDMsIDEsIAotICAgIDI0MywgMTc3LCA3LCAzLCAxLCAyNDIsIDQxLCA3LCAzLCAxLCA3MiwgNywgMywgMSwgMjM1LCAxNDIsIDcsIDMsIDEsIDIzNSwgCi0gICAgMjcsIDcsIDMsIDEsIDE1MCwgNywgMywgMSwgMTgzLCA3LCAzLCAxLCAyMDQsIDcsIDMsIDEsIDc1LCA3LCAzLCAxLCAyMjYsIAotICAgIDIyOSwgNywgMywgMSwgMjI0LCAyNDAsIDcsIDMsIDEsIDE0OSwgNywgMywgMSwgMTk3LCA3LCAzLCAxLCAyMTgsIDk5LCA3LCAKLSAgICAzLCAxLCA2OSwgNywgMywgMSwgMjE1LCA3OSwgNywgMywgMSwgMjE0LCA4MiwgNywgMywgMSwgMjEzLCAxNjYsIDcsIDMsIDEsIAotICAgIDIxMywgMTA1LCA3LCAzLCAxLCAyMTIsIDE1MiwgNDIsIDI0OSwgNDAsIDEyNSwgNzEsIDIzMiwgMjQyLCA0NiwgMjQ5LCA0MCwgCi0gICAgMTI1LCAyMTcsIDQyLCAyMjgsIDE4NCwgMjE5LCAyMDYsIDIzNSwgMTkxLCAyNDQsIDI1NCwgNzcsIDI1MCwgMTEwLCA1MiwgCi0gICAgMjI1LCAxMDgsIDUyLCAyNDksIDM5LCA1MiwgMjEzLCAzMSwgNTIsIDI1MSwgNjMsIDEzNCwgMjIyLCA5MiwgNTIsIDI0NywgCi0gICAgMjA5LCAyNDksIDEwMiwgNTIsIDI0NCwgMTA1LCAyMjcsIDIxLCAyMzUsIDIzNSwgMjMzLCA2NiwgNTEsIDI1NCwgMTksIAotICAgIDIyNCwgMTQzLCA3NywgMjI4LCAxNjMsIDUyLCAyMTksIDIzNiwgMjQwLCAxNjAsIDIyMywgMjUyLCA1MiwgMjMyLCAzNywgCi0gICAgMjQ4LCAyMiwgNTIsIDIyNSwgMTU1LCA1MiwgMjE4LCAyMjMsIDEwOSwgMjE4LCAyMjMsIDE2NiwgMjU0LCAxNjQsIDI1NCwgCi0gICAgMTc0LCAyMzEsIDQxLCA1MiwgMjI1LCAyMDAsIDUyLCAyMzEsIDM3LCAyNDcsIDc0LCAyNTAsIDExNywgMjE4LCAyMjMsIAotICAgIDExNiwgMjMxLCAyMTEsIDIyNywgMjEsIDIzNSwgMjM1LCAyMjMsIDE0NCwgNTEsIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgCi0gICAgMjE0LCA5NywgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgMjE0LCAKLSAgICA5NywgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDIzNSwgMTkxLCAyMjQsIDE1OCwgNzcsIDcsIDYsIDEsIDExOCwgMiwgCi0gICAgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgMiwgMTc5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAxMTgsIAotICAgIDIsIDIxNywgNDIsIDcsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDQ5LCA3LCAKLSAgICA2LCAxLCAyNTQsIDE0OCwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAxOTEsIDIsIDI0MiwgCi0gICAgMTEzLCA3LCA2LCAxLCAxOTEsIDIsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyNDcsIDIwOSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMTc5LCA3LCAKLSAgICA2LCAxLCAyNDAsIDE0NiwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgCi0gICAgMjQ1LCAyNSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDIsIDExMywgNywgNiwgCi0gICAgMSwgMTU3LCAyLCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDE1NywgMiwgMjE3LCA0MiwgNywgCi0gICAgNiwgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMjMwLCAxNTQsIDUyLCA3LCA2LCAxLCAxNTcsIDIsIDkwLCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTEsIDIsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAyNDksIDIyMywgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDE3OSwgNywgNiwgMSwgMjE3LCAxMDQsIDcsIDMsIDEsIAotICAgIDIyMCwgMjU1LCAxOTcsIDcsIDMsIDEsIDExOCwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMTc5LCA3LCAzLCAxLCAKLSAgICAxMTgsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAxMTgsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDExOCwgMiwgMjQ3LCAyMDksIDcsIAotICAgIDMsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDQ5LCA3LCAzLCAxLCAyNTQsIDE0OCwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDI1MCwgCi0gICAgMTE3LCA3LCAzLCAxLCAxOTEsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDE3OSwgNywgMywgMSwgMTkxLCAyLCAKLSAgICAyNDksIDIyMywgNywgMywgMSwgMTkxLCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0MiwgMTEzLCA3LCAKLSAgICAzLCAxLCAyNDAsIDE0NiwgMiwgMTc5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjQ1LCAyNSwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjE3LCA0MiwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjMsIDcsIAotICAgIDMsIDEsIDE1NywgMiwgMjE3LCA0MiwgNywgMywgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMjQ3LCAxMjEsIDUyLCA3LCAzLCAxLCAKLSAgICAxNTcsIDIsIDkwLCA3LCAzLCAxLCAxMTEsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDE3OSwgNywgMywgMSwgCi0gICAgMTExLCAyLCAyNDksIDIyMywgNywgMywgMSwgMTExLCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDE3OSwgCi0gICAgNywgMywgMSwgMjE3LCAxMDQsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyNDcsIDIwOSwgNywgNiwgMSwgMTE4LCAyLCAyMzIsIAotICAgIDM3LCA3LCAzLCAxLCAxMTgsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NCwgNywgMywgMSwgMTE4LCAyLCAKLSAgICAyNTEsIDc0LCA3LCA2LCAxLCAxMTgsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDExOCwgMiwgMjI3LCA5MCwgNywgNiwgMSwgCi0gICAgMjUwLCAyNTMsIDIsIDE3OSwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDE3OSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI0OSwgCi0gICAgMjIzLCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCA2MiwgNDksIDcsIDMsIAotICAgIDEsIDI1MCwgMjUzLCAyLCA2MiwgNDksIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjUwLCAKLSAgICAyNTMsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDksIDQsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCA2LCAxLCAyNDksIDQsIDIsIDkwLCA3LCAzLCAxLCAyNDksIDQsIDIsIDkwLCA3LCA2LCAxLCAxOTEsIDIsIAotICAgIDIzMiwgMzcsIDcsIDMsIDEsIDE5MSwgMiwgMjMyLCAzNywgNywgNiwgMSwgMTkxLCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAKLSAgICAxOTEsIDIsIDI1MSwgNzQsIDcsIDYsIDEsIDE5MSwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDYyLCA0OSwgNywgNiwgCi0gICAgMSwgMTkxLCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAxOTEsIDIsIDIyNywgOTAsIDcsIDYsIDEsIDE5MSwgMiwgMjUwLCAxNjYsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyNDksIDIyMywgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjUxLCA3NCwgNywgMywgMSwgMjQzLCAxNzgsIDIsIAotICAgIDI1MSwgNzQsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCA2MiwgNDksIDcsIDMsIDEsIDI0MywgMTc4LCAyLCA2MiwgNDksIDcsIAotICAgIDYsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjQzLCAxNzgsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAKLSAgICAyNDIsIDQyLCAyLCAyNDksIDIyMywgNywgMywgMSwgMjQyLCA0MiwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIAotICAgIDkwLCA3LCAzLCAxLCAyNDIsIDQyLCAyLCA5MCwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjMyLCAzNywgNywgMywgMSwgMjQwLCAxNDYsIDIsIAotICAgIDIzMiwgMzcsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjUxLCA3NCwgNywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAyNDAsIAotICAgIDE0NiwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDcsIDczLCA3MiwgNywgNiwgMjYsIDIzNiwgMjYsIDcsIDMsIDI2LCAyMzYsIAotICAgIDI2LCA3LCA2LCAxLCAyMzUsIDE0MywgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCAyNDksIDIyMywgNywgNiwgCi0gICAgMSwgMjM1LCAyOCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzMsIAotICAgIDI0OCwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDE3OSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDE3OSwgNywgNiwgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAKLSAgICAyNTAsIDE2NiwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgCi0gICAgMjQ3LCA3NCwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIDI0NywgNzQsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDkwLCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAxNzksIDcsIDMsIDEsIDIzMCwgOTgsIAotICAgIDIsIDE3OSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTE3LCA3LCAKLSAgICA2LCAxLCAyMzAsIDk4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMCwgCi0gICAgOTgsIDIyNSwgODQsIDI1MSwgNywgMjUzLCAyMjYsIDcsIDYsIDEsIDI0NSwgOTYsIDcsIDMsIDEsIDI0NSwgOTYsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxNTcsIDIsIDI1MSwgNzQsIAotICAgIDcsIDMsIDEsIDE1NywgMiwgMjUxLCA3NCwgNywgNiwgMSwgMTU3LCAyLCA1MSwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDUxLCAKLSAgICAxNzksIDcsIDYsIDI2LCAyMjcsIDk5LCA3LCAzLCAyNiwgMjI3LCA5OSwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDE3OSwgNywgCi0gICAgMywgMSwgMjI0LCAxMTMsIDIsIDE3OSwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMjQsIAotICAgIDExMywgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjI0LCAxMTMsIDIsIAotICAgIDI1MCwgMTY2LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDE3OSwgNywgMywgMSwgMjIzLCA0LCAyLCAxNzksIDcsIDYsIDEsIDIyMywgCi0gICAgNCwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIyMywgNCwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjUwLCAKLSAgICAxMTcsIDcsIDMsIDEsIDIyMywgNCwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIAotICAgIDIyMywgNCwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjE4LCAxMDAsIAotICAgIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDkwLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgOTAsIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjE3LCA0MiwgNywgMywgMSwgMTExLCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxMTEsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjMyLCAzNywgNywgNiwgMSwgMTExLCAyLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTEsIDIsIDI1MSwgNzQsIDcsIAotICAgIDYsIDEsIDExMSwgMiwgMjIzLCAxMzEsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDIyMywgMTMxLCA0OSwgNywgNiwgMSwgMTExLCAKLSAgICAyLCA1MSwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDUxLCAxNzksIDcsIDYsIDEsIDExMSwgMiwgMjI3LCA5MCwgNywgMywgMSwgCi0gICAgMTExLCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAyMTQsIDgzLCAyLCAyNDksIDIyMywgNywgMywgMSwgMjE0LCA4MywgMiwgMjQ5LCAKLSAgICAyMjMsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyNDksIDIyMywgNywgMywgMSwgMjEzLCAxMDYsIDIsIDI0OSwgMjIzLCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAxNzksIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUzLCAyLCAxNzksIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAKLSAgICAxODQsIDE5NywgNywgMywgMSwgNTQsIDIsIDkwLCA3LCA2LCAxLCA1NCwgMiwgMTAxLCA3LCA2LCAxLCA1NCwgMiwgMjE2LCAKLSAgICAyMjQsIDcsIDMsIDEsIDU0LCAyLCAyMTYsIDIyNCwgNywgNiwgMSwgMTYwLCAxODksIDcsIDMsIDEsIDE2MCwgMTg5LCA3LCAKLSAgICA2LCAxLCAyMjcsIDQwLCA3NSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDEwMSwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDEwMSwgCi0gICAgNywgNiwgMSwgMjU0LCAxMjQsIDI0OSwgMywgNywgNiwgMSwgMjQ5LCA0LCAyLCAxMDEsIDcsIDYsIDEsIDI0OSwgNCwgMiwgCi0gICAgMjE2LCAyMjQsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjE2LCAyMjQsIDcsIDMsIDEsIDIxNiwgNTgsIDI0OCwgNSwgNywgNiwgCi0gICAgMSwgMjIzLCAyMDIsIDc0LCA3LCA2LCAxLCAyMjIsIDExMywgNywgNiwgMSwgMjI3LCA0MCwgNzQsIDcsIDYsIDEsIDI0NCwgCi0gICAgMjMxLCAyLCAxMDEsIDcsIDMsIDEsIDI0NCwgMjMxLCAyLCAxMDEsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAxMDEsIDcsIDYsIAotICAgIDEsIDI0MywgODMsIDcsIDMsIDEsIDI0MCwgMTkzLCA3LCA2LCAxLCAyMzUsIDE4MywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDkwLCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAxMDEsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDEwMSwgNywgMywgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDEzNCwgNywgMywgMSwgMjMzLCAxMjQsIDIsIDkwLCA3LCA2LCAxLCAyMTYsIDU4LCAxODMsIDcsIDYsIDEsIAotICAgIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDE4NCwgNDYsIDIzMywgNjAsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNSwgNywgNiwgMSwgMjI3LCA4NSwgNywgMywgMSwgMjI3LCA4NSwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDEwMSwgNywgMywgCi0gICAgMSwgMjI2LCAyMzAsIDIsIDEwMSwgNywgMSwgMjEyLCAyMDUsIDcsIDYsIDEsIDE2MCwgMTA5LCA3LCAzLCAxLCAxNjAsIAotICAgIDEwOSwgNywgNiwgMSwgMjQ1LCA0MCwgNywgMSwgMjIzLCAyMDIsIDI0NSwgNDEsIDIzMiwgMTc3LCA3LCAzLCAxLCAyMTgsIAotICAgIDEwMCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDEwMSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIAotICAgIDEwMSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDYsIDEsIDExMSwgMiwgMjQwLCAyMzUsIDcsIAotICAgIDMsIDEsIDExMSwgMiwgMjQwLCAyMzUsIDcsIDYsIDEsIDIxNSwgMTI4LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAxMDEsIDcsIAotICAgIDYsIDEsIDIxMywgMTA2LCAyLCAxMDEsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAxMDEsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDkwLCA3LCA2LCAxLCAyNDQsIDIzMiwgNywgNiwgMSwgMjQ0LCAyMzMsIDIyMywgCi0gICAgMjAxLCA3LCAzLCAxLCAyNDQsIDIzMywgMjIzLCAyMDEsIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyMTgsIDI3LCA3LCAxLCAKLSAgICAxMTcsIDIsIDkwLCA3LCA2LCAxLCAxNjAsIDE4MCwgNywgMywgMSwgMTYwLCAxODAsIDcsIDEsIDIzNSwgMTkxLCAyNDIsIAotICAgIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDEsIDIxMywgMTY5LCA3LCAxLCAyNDcsIDI1NCwgMjQ5LCAyMDQsIDcsIDEsIDIzMywgCi0gICAgMTAwLCAyNDksIDIwNCwgNywgMSwgMjU0LCA0NiwgMjQ5LCAyMDQsIDcsIDEsIDIyMywgMjA3LCAyNDksIDIwNCwgNywgNiwgCi0gICAgMSwgMjQ1LCAyNTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDksIDQsIDIsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIAotICAgIDE2NiwgNywgMywgMSwgMjQ1LCAyNTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMzIsIDIxNywgNywgNiwgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMzIsIDIxNywgNywgNiwgMSwgMjI5LCAxNywgNywgNiwgMSwgCi0gICAgMjMwLCA5OCwgMiwgMywgMSwgMjM1LCAxNDIsIDcsIDMsIDEsIDIyOSwgMTcsIDcsIDYsIDEsIDExOCwgMiwgMjUwLCAxNjYsIAotICAgIDcsIDMsIDEsIDExOCwgMiwgMjUwLCAxNjYsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAxNTcsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAxNTcsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCA2LCAxLCAxMTEsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAxMTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAxNzksIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyNTAsIDE2NiwgNywgMywgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDI1MCwgMTY2LCAKLSAgICA3LCA2LCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAKLSAgICAyNDIsIDExMywgNywgMywgMSwgMjE2LCA1OCwgNzQsIDcsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCAKLSAgICA3LCAzLCAxLCAxMTgsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMTE4LCAyLCA2MiwgNzgsIDI0LCAyMzIsIAotICAgIDM3LCA3LCAzLCAxLCAxMTgsIDIsIDYyLCA3OCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDI1NCwgMTQ5LCAyLCAyMzIsIDM3LCAKLSAgICA3LCAzLCAxLCAyNTQsIDE0OSwgMiwgMjMyLCAzNywgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDkwLCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgOTAsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDI1MCwgCi0gICAgMTY2LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjUwLCAxNjYsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMjI3LCA5MCwgNywgMywgMSwgMTU3LCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAxNTcsIDIsIDIyNywgOTEsIAotICAgIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDIyNywgOTEsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyNDQsIDIzMywgMiwgCi0gICAgMjUwLCAxNjYsIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjM1LCAxNDMsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCA2LCAxLCAyNDUsIDI1MCwgNywgNiwgMSwgMjQ5LCA0LCAyLCAzLCAxLCAyMTIsIDE1MiwgNywgMywgMSwgMjQ1LCAyNTAsIAotICAgIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAxNzksIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAxNzksIDcsIDYsIDEsIDI0MCwgMTkxLCAKLSAgICA3LCA2LCAxLCAyMTMsIDE2OSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIAotICAgIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA3OCwgMjQsIDE3OSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIAotICAgIDEzMSwgNzgsIDI0LCAxNzksIDcsIDYsIDEsIDI1NCwgMTQ5LCAyLCAxNzksIDcsIDMsIDEsIDI1NCwgMTQ5LCAyLCAxNzksIAotICAgIDcsIDYsIDEsIDE1NywgMiwgMjE5LCA0NSwgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyMTksIDQ1LCAyNCwgMTc5LCA3LCAKLSAgICA2LCAxLCAxMTgsIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTE4LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDExOCwgCi0gICAgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDExOCwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAyMzUsIAotICAgIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTkxLCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDUxLCAyNDIsIDExMywgNywgMywgMSwgMjQwLCAxNDYsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIAotICAgIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxNTcsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAyLCAyMzUsIAotICAgIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTU3LCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIAotICAgIDUxLCAyNDIsIDExMywgNywgMywgMSwgMjI0LCAxMTMsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMjI0LCAxMTMsIDIsIAotICAgIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgNTEsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDUxLCAyNDIsIDExMywgNywgNiwgMSwgMTExLCAyLCAyMzUsIAotICAgIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMTExLCAyLCAyMzUsIDE5MSwgMjUxLCA3NCwgNywgNiwgMSwgMjIzLCA0LCAyLCAKLSAgICAyNDksIDE1OCwgNTUsIDcsIDMsIDEsIDIyMywgNCwgMiwgMjQ5LCAxNTgsIDU1LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgCi0gICAgMjQ5LCAxNTgsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ5LCAxNTgsIDU1LCA3LCA2LCAxLCAyMTIsIDIyMiwgNywgCi0gICAgMywgMSwgMjEyLCAyMjIsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMTg0LCA0NiwgMjMzLCA2MCwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDksIDQxLCAKLSAgICA3LCA2LCAxLCAyMjcsIDIsIDcsIDMsIDEsIDIyNywgMiwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDEwMSwgNywgMywgMSwgCi0gICAgMjEyLCAxNTMsIDIsIDEwMSwgNywgNiwgMSwgMTE4LCAyLCA2MiwgNDksIDcsIDMsIDEsIDExOCwgMiwgNjIsIDQ5LCA3LCA2LCAKLSAgICAxLCAxOTEsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAxOTEsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAxNTcsIDIsIDI0NywgCi0gICAgMjEwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjE3LCA0MywgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjE3LCA0MywgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIAotICAgIDE1NywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxNTcsIDIsIDYyLCA0OSwgNywgNiwgMSwgMTU3LCAyLCA2MiwgNzgsIDI0LCAKLSAgICAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDYyLCA3OCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyMzIsIAotICAgIDM3LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAzNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI0OSwgNDEsIDcsIDMsIAotICAgIDEsIDIzMCwgOTgsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDcsIDczLCAKLSAgICAyMzUsIDE0MiwgNywgMywgMSwgMjQ4LCA4OSwgMjQ3LCAxNzIsIDcsIDMsIDEsIDIyNCwgMTc2LCAyNDcsIDE3MiwgNywgNiwgCi0gICAgMSwgMTE4LCAyLCA5MCwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDkwLCA3LCAzLCAxLCAyNTAsIDI1MywgMiwgOTAsIDcsIDYsIAotICAgIDEsIDIzMywgMTcxLCAyLCAxMzQsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIyMywgNCwgCi0gICAgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNywgNiwgMSwgCi0gICAgMjQyLCAxNTYsIDIxOSwgNjksIDcsIDMsIDEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCA2LCAxLCA1NCwgMiwgOTAsIDcsIDYsIAotICAgIDEsIDExMSwgMTM0LCA3LCA2LCAxLCAyMTYsIDU4LCAyMTUsIDc5LCA3LCA2LCAxLCAxOTEsIDIsIDkwLCA3LCAzLCAxLCAKLSAgICAxOTEsIDIsIDkwLCA3LCA2LCAxLCAyMzUsIDE0MywgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCA5MCwgNywgNiwgMSwgCi0gICAgMywgMjI0LCAyNDEsIDIsIDI0MSwgMzgsIDIxOCwgMjcsIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAyNDEsIDM4LCAyMTgsIDI3LCAKLSAgICA3LCA2LCAxLCAyMjQsIDExMywgMiwgOTAsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA5MCwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIAotICAgIDkwLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgOTAsIDcsIDMsIDEsIDIxNiwgNTgsIDYxLCA3LCAzLCAxLCAyNTQsIDUyLCA3LCAKLSAgICAzLCAxLCAyMTYsIDU4LCAyNTQsIDUyLCA3LCAzLCAxLCA1NCwgMiwgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCA3NSwgNywgMywgCi0gICAgMSwgMjUwLCAyNTMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjE4LCAyNywgNywgMywgMSwgMjQ5LCA0LCAyLCAKLSAgICAxMDEsIDcsIDMsIDEsIDIyMywgMjAyLCA3NCwgNywgMywgMSwgMjIyLCAxMTMsIDcsIDMsIDEsIDIyMiwgMTE0LCAyLCAxMDEsIAotICAgIDcsIDMsIDEsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIDIyMywgMjAyLCAKLSAgICAyMjcsIDQwLCAxOTEsIDIsIDEwMSwgNywgMywgMSwgMjQ5LCAxOTMsIDIyMywgMjAyLCAyMjcsIDQwLCA3NCwgNywgMywgMSwgCi0gICAgMjQ3LCA3MywgMjM1LCAxNDMsIDIsIDkwLCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMTAxLCA3LCAzLCAxLCAxMTMsIDI0MywgCi0gICAgMTc3LCA3LCAxLCAzLCA2LCAyNDMsIDE3NywgNywgMywgMSwgMjQzLCA4MywgNywgMywgMSwgMjI0LCA0MywgMjQwLCAyMzUsIAotICAgIDcsIDMsIDEsIDIxNiwgNTgsIDI0MiwgNDEsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDEwMSwgNywgMywgMSwgMjQxLCAxOTIsIAotICAgIDIsIDEwMSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE4MywgNywgMSwgMywgNiwgNzIsIDcsIAotICAgIDMsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjUxLCAyMTgsIDcsIAotICAgIDMsIDEsIDIzMywgMTcxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMzMsIDI3LCA3LCAzLCAxLCAyMTYsIDU4LCAKLSAgICAxODMsIDcsIDMsIDEsIDIxNiwgNTgsIDIzMiwgMTEwLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCAKLSAgICAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIyMywgMjA3LCAxMDEsIDcsIAotICAgIDEsIDMsIDYsIDIwNCwgNywgMywgMSwgMjUyLCA1NCwgNzUsIDcsIDEsIDMsIDYsIDIyNywgOTksIDcsIDMsIDEsIDI0OSwgCi0gICAgMTkzLCAyMjcsIDY3LCA3LCAzLCAxLCAyMjYsIDksIDcsIDMsIDEsIDIxNiwgNTgsIDE0OSwgNywgMywgMSwgMjE2LCA1OCwgCi0gICAgMjI0LCAxMTMsIDIsIDE4NCwgMjMzLCA2MCwgNywgMywgMSwgMjE2LCA1OCwgMjI0LCAxMTMsIDIsIDEwMSwgNywgMywgMSwgCi0gICAgMjI0LCAxMTMsIDIsIDE4NCwgMjMzLCA2MCwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDIyNCwgCi0gICAgMTEzLCAyLCAyNDQsIDU2LCA3LCAzLCAxLCAyMjMsIDIwMiwgMjI0LCAxMTMsIDIsIDI0NCwgNTYsIDcsIDEsIDMsIDYsIAotICAgIDE0OSwgNywgMSwgMywgNiwgMjM1LCAxOTEsIDE0OSwgNywgMywgMSwgMjIzLCA0LCAyLCAxMDEsIDcsIDMsIDEsIDI0NSwgCi0gICAgNDAsIDcsIDMsIDEsIDI0NywgNzMsIDIzNSwgMTQzLCAyLCAyMTksIDQ1LCAyNCwgMTAxLCA3LCAzLCAxLCAyMTksIDE2MywgCi0gICAgMjIzLCAyMDIsIDI0NSwgNDAsIDcsIDMsIDEsIDI0NSwgNDEsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxNiwgNTgsIDIxOCwgCi0gICAgOTksIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAxMTEsIDEzNCwgNywgMywgMSwgMjE1LCAKLSAgICAxMjgsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDEwMSwgNywgMywgMSwgMjE2LCA1OCwgMjE1LCA3OSwgNywgMywgMSwgMjE2LCAKLSAgICA1OCwgMjE0LCA4MiwgNywgMywgMSwgMjE2LCA1OCwgMjEzLCAxMDUsIDcsIDEsIDMsIDYsIDIxMywgMTA1LCA3LCAzLCAxLCAKLSAgICAyMTIsIDE1MywgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjEyLCAxNTMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0NCwgCi0gICAgMjMyLCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjQ5LCA0MSwgNywgMSwgMjQyLCAxNTYsIDIxOSwgNjksIDcsIDEsIDIyNiwgCi0gICAgMTUsIDIxNCwgMTE2LCAyNDMsIDIxOSwgNywgMSwgMjM1LCAxOTEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAxLCAyMTksIDUwLCAKLSAgICAyNTAsIDI1MiwgNywgMSwgMjUxLCAxNjksIDI0OSwgMjA0LCA3LCAxLCAzLCA2LCAyNTMsIDc0LCA3LCAzLCAxLCAyNDksIAotICAgIDE5MywgMjI3LCA0MCwgNzQsIDcsIDEsIDMsIDYsIDI0MywgMTc4LCAyLCAxMDEsIDcsIDEsIDMsIDYsIDI0MiwgNDEsIDcsIAotICAgIDMsIDEsIDIzNSwgMTQzLCAyLCAyNDksIDY3LCA3LCAzLCAxLCAyMTYsIDU4LCAyMzUsIDI3LCA3LCAxLCAzLCA2LCAxNTAsIAotICAgIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAxMDEsIDcsIDEsIDI0MiwgMTU2LCAyMTksIDcwLCAyLCA5MCwgNywgMSwgMjIzLCAKLSAgICAyMDIsIDI0MiwgMTU2LCAyMTksIDcwLCAyLCA5MCwgNywgMywgMSwgMjQ1LCAyNTEsIDI0NywgMTcyLCA3LCAzLCAxLCAyNDcsIAotICAgIDIzMywgMjQ3LCAxNzIsIDcsIDMsIDEsIDI0NSwgMjUxLCAyNDcsIDE3MywgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjE2LCAKLSAgICAxNDMsIDI0NywgMTcyLCA3LCAzLCAxLCAyMTcsIDE4OCwgMjQ3LCAxNzIsIDcsIDMsIDEsIDIxNywgMjM2LCAyNDcsIDE3MywgCi0gICAgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ0LCAxMDMsIDI0NywgMTcyLCA3LCAzLCAxLCAyMzIsIDE1OCwgMjQ3LCAxNzIsIDcsIAotICAgIDMsIDEsIDIzMiwgMTExLCAyNDcsIDE3MiwgNywgMSwgMjUxLCAxNjksIDIyNiwgNTYsIDcsIDEsIDI1MSwgMTc3LCAyMjYsIAotICAgIDU2LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQyLCAyLCAyNDQsIDU2LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQyLCAyLCAKLSAgICAyNDQsIDU3LCAyNCwgMjE4LCAyNywgNTksIDEsIDMsIDI0MiwgNDEsIDU5LCAxLCAzLCAyNDIsIDQyLCAyLCAxMDEsIDU5LCAKLSAgICAxLCAzLCAyMzUsIDE0MiwgNTksIDEsIDMsIDE0OSwgNTksIDEsIDMsIDIxNiwgNTgsIDE0OSwgNTksIDEsIDMsIDIxNiwgNTgsIAotICAgIDIyNCwgMTEzLCAyLCAxMDEsIDU5LCAxLCAzLCA2LCAyMzUsIDE5MSwgMTQ5LCA1OSwgMSwgMywgMjE0LCA4MiwgNTksIDEsIAotICAgIDMsIDIxMywgMTA1LCA1OSwgMSwgMjI1LCA3MSwgNTksIDEsIDUxLCAyMjUsIDcxLCA1OSwgMSwgMjE2LCA1OCwgMjQ5LCAKLSAgICAxNTcsIDU5LCAxLCAyNTMsIDIyNiwgNTksIDEsIDIyMywgMjAyLCAyNDksIDE1NywgNTksIDEsIDQ2LCAxNTEsIDIyMywgCi0gICAgMTMwLCA1OSwgMSwgNDIsIDE1MSwgMjIzLCAxMzAsIDU5LCAxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNTksIDEsIDIyMywgMjAyLCAKLSAgICAyNDIsIDE1NiwgMjE5LCA2OSwgNTksIDEsIDQyLCAyNTMsIDE2NCwgNTksIDEsIDQ2LCAyNTMsIDE2NCwgNTksIDEsIDExNCwgCi0gICAgMjUzLCAxNjQsIDU5LCAxLCAxMTksIDI1MywgMTY0LCA1OSwgMSwgMjQ5LCAyMjQsIDI1NCwgMTc0LCAyNTAsIDE2NiwgNTksIAotICAgIDEsIDcxLCAyMzIsIDI0MiwgNTksIDEsIDIzMiwgMzcsIDU5LCAxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAyNDIsIAotICAgIDExNCwgMjU0LCAxNzQsIDU5LCAxLCAxMTUsIDcxLCAyMzIsIDI0MiwgNTksIDEsIDExNSwgMjMyLCAzNywgNTksIDEsIDExNSwgCi0gICAgMjQyLCAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMTE1LCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAyMTYsIDE4MCwgMjQ5LCAKLSAgICAxNjQsIDU5LCAxLCAxNTEsIDIxNiwgMTgwLCAyNDksIDE2NCwgNTksIDEsIDI1MCwgMTA3LCA0NiwgMTUxLCAyMjMsIDEzMCwgCi0gICAgNTksIDEsIDI1MCwgMTA3LCA0MiwgMTUxLCAyMjMsIDEzMCwgNTksIDEsIDExNCwgMjE4LCAzNiwgNTksIDEsIDExOSwgMjE4LCAKLSAgICAzNiwgNTksIDEsIDk0LCA1MiwgNTksIDEsIDIzMCwgMjUxLCA1MiwgMjUxLCA3NCwgNjIsIDQ5LCAyMjMsIDEzMSwgNDksIAotICAgIDIyNywgOTAsIDMsIDIxNywgNDIsIDUxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAyMjMsIDE4OSwgMTAxLCA1OSwgMSwgCi0gICAgMjQ5LCA3MSwgMjU0LCAxNzQsIDU5LCAxLCAzLCAyNDMsIDgzLCA1OSwgMSwgMywgMTUwLCA1OSwgMSwgMywgMTk3LCA1OSwgCi0gICAgMSwgMywgMjEzLCAxNjYsIDU5LCAxLCAzLCAyMjMsIDIwMiwgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCAyNDQsIDI0NCwgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCAxMjQsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDE2MCwgMTM0LCA1OSwgMSwgMjEyLCAyNDUsIDI0NywgMjUxLCAxNjAsIDc3LCAKLSAgICA1OSwgMSwgMjEzLCA1OSwgMjQ3LCAyNTEsIDE2MCwgNzcsIDU5LCAxLCAyMTQsIDExNCwgNTksIDEsIDIxNSwgMTU2LCA1OSwgCi0gICAgMSwgNTEsIDI1MywgMjI2LCA1OSwgMSwgMTE1LCAxMTksIDI1MywgMTY0LCA1OSwgMSwgMTE1LCAxMTQsIDI1MywgMTY0LCAKLSAgICA1OSwgMSwgMTE1LCA0MiwgMjUzLCAxNjQsIDU5LCAxLCAxMTUsIDQ2LCAyNTMsIDE2NCwgNTksIDEsIDExNSwgMjIzLCAxMzAsIAotICAgIDU5LCAxLCAyMzEsIDM3LCAyNDIsIDExNCwgMjU0LCAxNzQsIDU5LCAxLCAyMzEsIDM3LCA1MSwgMjQyLCAxMTQsIDI1NCwgCi0gICAgMTc0LCA1OSwgMSwgMjMxLCAzNywgNTEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgNTksIDEsIDExNSwgMjE3LCA0MiwgNTksIDEsIAotICAgIDIyNCwgNDgsIDI0OSwgMTY0LCA1OSwgMSwgMjUxLCAyMzQsIDEyNCwgMjE2LCAyNDEsIDU5LCAxLCAyNDUsIDEwMSwgMTI0LCAKLSAgICAyMTYsIDI0MSwgNTksIDEsIDI1MSwgMjM0LCAxMTUsIDIxNiwgMjQxLCA1OSwgMSwgMjQ1LCAxMDEsIDExNSwgMjE2LCAyNDEsIAotICAgIDU5LCAxLCAyMjAsIDIzNCwgNTksIDEsIDIyNywgNDAsIDIyMCwgMjM0LCA1OSwgMSwgMTE1LCA0MiwgNjgsIDM3LCAyNDIsIAotICAgIDExNCwgMjU0LCAxNzQsIDM3LCAyNTQsIDE2NCwgMjU0LCAxNzQsIDM3LCAyNDksIDIyNCwgMjU0LCAxNzQsIDM3LCAyMTcsIAotICAgIDQyLCAzNywgMjMyLCAzNywgMzcsIDIyNiwgMjQzLCAzNywgMjUxLCA3NCwgMzcsIDYyLCA0OSwgMzcsIDI0NywgMjA5LCAzNywgCi0gICAgMjQxLCAzOCwgNDksIDM3LCAyMjMsIDEzMSwgNDksIDM3LCA1MSwgMjU0LCAxNjQsIDI1NCwgMTc0LCAzNywgMjUwLCAxNjYsIAotICAgIDM3LCA3MSwgMjMyLCAyNDMsIDQ5LCAzNywgNTEsIDcxLCAyMzIsIDI0MywgNDksIDM3LCA1MSwgMjQyLCAxMTQsIDI1NCwgCi0gICAgMTc0LCAzNywgMjUwLCAxODcsIDM3LCAyMzUsIDE5MSwgMjUxLCA3NCwgMzcsIDIxNiwgNTgsIDI0OSwgMTU4LCA0OSwgMzcsIAotICAgIDI0OSwgMTU4LCA0OSwgMzcsIDIyMywgMjAyLCAyNDksIDE1OCwgNDksIDM3LCAyNDksIDE1OCwgNzgsIDIyMywgMTQ4LCAzNywgCi0gICAgMjQyLCAxMTQsIDI1NCwgMTc1LCA1NSwgMzcsIDI1NCwgMTY0LCAyNTQsIDE3NSwgNTUsIDM3LCA0MiwgMjE4LCAzNywgNTUsIAotICAgIDM3LCA0NiwgMjE4LCAzNywgNTUsIDM3LCA0MiwgMjU0LCAxOSwgNDksIDM3LCAyNDAsIDIzNSwgMzcsIDQyLCAxNTEsIDIyMywgCi0gICAgMTMxLCA1NSwgMzcsIDExNCwgMjE4LCAzNywgNTUsIDM3LCAxMTksIDIxOCwgMzcsIDU1LCAzNywgOTQsIDUsIDU1LCAzNywgCi0gICAgMjMwLCAyNTEsIDUsIDU1LCAzNywgMjI2LCAxOTEsIDI0MSwgMzgsIDU1LCAzNywgMjIzLCAyMDcsIDI0MSwgMzgsIDU1LCAKLSAgICAzNywgNjIsIDU1LCAzNywgMjQ3LCAyMTAsIDU1LCAzNywgMjIzLCAxMzEsIDU1LCAzNywgMjQ5LCAxNTgsIDU1LCAzNywgCi0gICAgMjUwLCAxMTcsIDM3LCAyMjcsIDkwLCAzNywgNzEsIDIzMiwgMjQzLCA1NSwgMzcsIDI1MSwgNjgsIDU1LCAzNywgMjM1LCAKLSAgICAxOTEsIDUxLCAyNTMsIDE5NCwgNTUsIDM3LCAyNTAsIDE2NywgNTUsIDM3LCAyNDksIDIyNCwgMjU0LCAxNzUsIDU1LCAzNywgCi0gICAgMjUxLCA3NSwgNTUsIDM3LCAyMzUsIDE5MSwgMjUxLCA3NSwgNTUsIDM3LCAyMTcsIDQzLCA1NSwgMzcsIDIzMiwgMzgsIDU1LCAKLSAgICAzNywgMTE1LCAyMzIsIDI0MiwgMzcsIDUxLCAxMTUsIDIzMiwgMjQyLCAzNywgMjE3LCA0MywgMjI2LCAyNDQsIDM3LCAyMjAsIAotICAgIDE3NSwgMjE5LCA0NSwgMjI2LCAyNDQsIDM3LCAxODQsIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMjIwLCAxNzUsIDIxOSwgCi0gICAgMjMyLCAyMjYsIDI0NCwgMzcsIDE4NCwgMjE5LCAyMzIsIDIyNiwgMjQ0LCAzNywgNDYsIDE1MSwgMjIzLCAxMzEsIDU1LCAKLSAgICAzNywgMjM1LCAxOTEsIDI1MSwgNjgsIDU1LCAzNywgNDEsIDU1LCAzNywgMjIyLCA5OSwgNTUsIDM3LCAyMTMsIDE2NywgNDksIAotICAgIDM3LCA3MSwgMjE3LCA0MiwgMzcsIDUxLCAyMjYsIDI0MywgMzcsIDI0MiwgMTE0LCAxNjAsIDc3LCAzNywgMjU0LCAxNjQsIAotICAgIDE2MCwgNzcsIDM3LCAyNSwgMjI2LCA1MCwgMzcsIDI1LCAyMzQsIDExLCAzNywgMjUsIDI0NywgMjA0LCAyMTYsIDIzMSwgCi0gICAgMzcsIDI1LCAyMTIsIDIxMCwgMzcsIDI1MSwgNjgsIDQ5LCAzNywgMjQ1LCA2MSwgNSwgNTUsIDM3LCA1MSwgNzEsIDIzMiwgCi0gICAgMjQzLCA1NSwgMzcsIDQyLCAyNTQsIDE5LCA1NSwgMzcsIDIyOCwgMTYzLCAyMTcsIDQzLCA0OSwgMzcsIDI0MSwgNDQsIDQ5LCAKLSAgICAzNywgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgNDksIDM3LCA0MiwgNDYsIDc2LCA1NSwgMzcsIDIxNSwgMTI0LCA3NiwgNTUsIAotICAgIDM3LCAyNDIsIDExOCwgMjM1LCA2NiwgMzcsIDQ2LCAyNTMsIDE2NSwgNDksIDM3LCA0MiwgMTUxLCAyMjMsIDEzMSwgNDksIAotICAgIDM3LCAyNDQsIDEwMCwgMzcsIDIxMywgMTY3LCA1NSwgMzcsIDQyLCAyNTMsIDE2NSwgNTUsIDM3LCA0NiwgMjUzLCAxNjUsIAotICAgIDU1LCAzNywgNDYsIDI1MywgMTY1LCAyNCwgMTE0LCAyNTMsIDE2NSwgNTUsIDM3LCA0NiwgMTUxLCAyMjMsIDEzMSwgNDksIAotICAgIDM3LCA2MiwgNzgsIDIyMywgMTQ4LCAzNywgMjUzLCAxMzMsIDU1LCAzNywgNTEsIDIyMywgMTMxLCA1NSwgMzcsIDIxMiwgCi0gICAgMjgsIDQ5LCAzNywgNTEsIDI1MSwgNzUsIDU1LCAzNywgNTEsIDI1MSwgNzQsIDM3LCA1MSwgMjMyLCAzNywgMzcsIDUxLCAKLSAgICAyMzIsIDM4LCA1NSwgMzcsIDUxLCAyMTcsIDQyLCAzNywgNTEsIDIzNSwgMTkxLCAyNTEsIDc0LCAzNywgNTEsIDk1LCA3NiwgCi0gICAgNTUsIDM3LCA3LCAzLCAxLCA2MSwgMzcsIDcsIDMsIDEsIDc0LCAzNywgNywgMywgMSwgNzIsIDM3LCA3LCAzLCAxLCA3NSwgCi0gICAgMzcsIDcsIDMsIDEsIDY5LCAzNywgNywgMywgMSwgMjUwLCAyNTIsIDM3LCA3LCAzLCAxLCAyNDksIDMsIDM3LCA3LCAzLCAxLCAKLSAgICAyNDIsIDQxLCAzNywgNywgMywgMSwgMTgzLCAzNywgNywgMywgMSwgMTQ5LCAzNywgNywgMywgMSwgMjE4LCA5OSwgMzcsIDcsIAotICAgIDMsIDEsIDIxNSwgNzksIDM3LCA3LCAzLCAxLCAyMTMsIDE2NiwgMjUsIDYsIDEsIDI0MSwgMTgxLCAyNSwgMywgMSwgMjQxLCAKLSAgICAxODEsIDI1LCA2LCAxLCAyNTMsIDE5MywgMjIyLCAxNjEsIDI1LCAzLCAxLCAyNTMsIDE5MywgMjIyLCAxNjEsIDI1LCAyMjgsIAotICAgIDU0LCA1MiwgMjUsIDIzMiwgMTYzLCAyMjgsIDU0LCA1MiwgMjUsIDYsIDEsIDIyNiwgMTc4LCAyNDcsIDE3OSwgMjUsIDMsIAotICAgIDEsIDIyNiwgMTc4LCAyNDcsIDE3OSwgMjUsIDIxMiwgMjEwLCAyNSwgMywgMjIzLCAyMDIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgCi0gICAgODcsIDI1LCAzLCAyNDYsIDcyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgMywgMjIzLCAyMDIsIDI0NiwgNzIsIAotICAgIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCAyMjQsIDE1OCwgNzcsIDI1LCAyMTYsIDIzMSwgMjUsIDI0NywgMjA0LCAKLSAgICAyMTYsIDIzMSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNiwgMjMxLCAyNSwgMjU0LCA4LCAyMTcsIDIxMSwgMjUsIDYsIDEsIAotICAgIDI0NSwgNjQsIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMzUsIDE4NCwgCi0gICAgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMTYsIAotICAgIDIzMSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgCi0gICAgMjE2LCAyMzEsIDI1LCA2LCAxLCAyNTQsIDUyLCAyNSwgNiwgMSwgMjUxLCAyMDMsIDI1LCA2LCAxLCAyNDMsIDgzLCAyNSwgCi0gICAgNiwgMSwgMjQ4LCA1LCAyNSwgNiwgMSwgMjQ1LCA2MywgMjUsIDYsIDEsIDIxMiwgNzgsIDI1LCA2LCAxLCAyNDUsIDI4LCAKLSAgICAyNSwgNiwgMSwgMjE3LCAxMzIsIDI1LCA2LCAxLCAyMzUsIDE4MywgMjUsIDYsIDEsIDIzNCwgMjI3LCAyNSwgNiwgMSwgCi0gICAgMjMzLCAxMjIsIDI1LCA2LCAxLCAyMzAsIDE3MiwgMjUsIDYsIDEsIDIyOCwgOTIsIDI1LCA2LCAxLCAyMTMsIDE0NSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjUsIDI1LCA2LCAxLCAyMjUsIDI0MCwgMjUsIDYsIDEsIDIyMywgMTkwLCAyNSwgNiwgMSwgMjIwLCAKLSAgICAxMDMsIDI1LCA2LCAxLCAyMTcsIDI0OCwgMjUsIDYsIDEsIDIxNSwgMTI4LCAyNSwgNiwgMSwgMjI2LCA5LCAyNSwgNiwgMSwgCi0gICAgMjUwLCA0NywgMjUsIDYsIDEsIDIyNSwgNDYsIDI1LCA2LCAxLCAyMjcsIDY3LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIAotICAgIDI0NywgMjAzLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDI0NywgMjAzLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxNiwgMjMxLCAyNSwgCi0gICAgMywgMSwgMjM1LCAxODQsIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjE2LCAKLSAgICAyMzEsIDI1LCAzLCAxLCAyNTQsIDUyLCAyNSwgMywgMSwgMjUxLCAyMDMsIDI1LCAzLCAxLCAyNDMsIDgzLCAyNSwgMywgMSwgCi0gICAgMjQ4LCA1LCAyNSwgMywgMSwgMjQ1LCA2MywgMjUsIDMsIDEsIDIxMiwgNzgsIDI1LCAzLCAxLCAyNDUsIDI4LCAyNSwgMywgCi0gICAgMSwgMjE3LCAxMzIsIDI1LCAzLCAxLCAyMzUsIDE4MywgMjUsIDMsIDEsIDIzNCwgMjI3LCAyNSwgMywgMSwgMjMzLCAxMjIsIAotICAgIDI1LCAzLCAxLCAyMzAsIDE3MiwgMjUsIDMsIDEsIDIyOCwgOTIsIDI1LCAzLCAxLCAyMTMsIDE0NSwgMjUsIDMsIDEsIDIyNywgCi0gICAgNjUsIDI1LCAzLCAxLCAyMjUsIDI0MCwgMjUsIDMsIDEsIDIyMywgMTkwLCAyNSwgMywgMSwgNDAsIDIyMCwgMTAzLCAyNSwgCi0gICAgMywgMSwgMjIwLCAxMDMsIDI1LCAzLCAxLCAyMTcsIDI0OCwgMjUsIDMsIDEsIDIxNSwgMTI4LCAyNSwgMywgMSwgMjI2LCA5LCAKLSAgICAyNSwgMywgMSwgMjUwLCA0NywgMjUsIDMsIDEsIDIyNSwgNDYsIDI1LCAzLCAxLCAyMjcsIDY3LCAyNSwgMywgMSwgMjM1LCAKLSAgICAxODQsIDIsIDI0NywgMjAzLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjAzLCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgCi0gICAgMjE2LCAyMzEsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMTYsIAotICAgIDIzMSwgMjUsIDYsIDIzNCwgMjUxLCA4NywgMjUsIDI1MSwgMjA0LCA4NywgMjUsIDIxNywgMTMzLCA4NywgMjUsIDIxNSwgCi0gICAgMTI5LCAyLCAyNDEsIDM4LCA4NywgMjUsIDIxNSwgMTI5LCAyLCAyNTQsIDE2NCwgMjQsIDI0MSwgMzgsIDg3LCAyNSwgMjE1LCAKLSAgICAxMjksIDIsIDI0NywgMjEwLCAyNCwgMjQxLCAzOCwgODcsIDI1LCAyMjYsIDEwLCA4NywgMjUsIDIyNSwgMjQxLCA4NywgMjUsIAotICAgIDIzNCwgMjUxLCA4NywgMjUsIDEsIDI1MywgMTkzLCAyMzQsIDE1LCAyNSwgMywgMSwgMjUzLCAxOTMsIDIzNCwgMTUsIDI1LCAKLSAgICAxLCAyMTksIDc3LCAyNSwgMywgMSwgMjE5LCA3NywgMjUsIDEsIDI0NywgMTc5LCAyNSwgMywgMSwgMjQ3LCAxNzksIDI1LCAKLSAgICAxLCAyMzQsIDE1LCAyNSwgMywgMSwgMjM0LCAxNSwgMjUsIDEsIDIyMiwgMTYxLCAyNSwgMywgMSwgMjIyLCAxNjEsIDc5LCAKLSAgICA2LCAxLCAyMjAsIDIzNSwgNzksIDMsIDEsIDIyMCwgMjM1LCA3OSwgNiwgMSwgMjQ0LCAxMDksIDc5LCAzLCAxLCAyNDQsIAotICAgIDEwOSwgNzksIDYsIDEsIDIzNCwgMTIzLCA3OSwgMywgMSwgMjM0LCAxMjMsIDc5LCA2LCAxLCAyNDEsIDMyLCA3OSwgMywgMSwgCi0gICAgMjQxLCAzMiwgNzksIDYsIDEsIDI0MywgNzgsIDc5LCAzLCAxLCAyNDMsIDc4LCA3OSwgNiwgMSwgMjIwLCAyMDIsIDc5LCAzLCAKLSAgICAxLCAyMjAsIDIwMiwgNzksIDYsIDEsIDI0OCwgMjAsIDc5LCAzLCAxLCAyNDgsIDIwLCAyNSwgMjM0LCAyMjgsIDg3LCAyNSwgCi0gICAgMjIzLCAxOTEsIDg3LCAyNSwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDEsIDIxMiwgMjE1LCAyNSwgNiwgMjE3LCAKLSAgICAxMzMsIDg3LCAyNSwgMjMyLCAxNDEsIDI0NSwgNjQsIDg3LCAyNSwgMjIzLCAyMDIsIDIzMiwgMTQxLCAyNDUsIDY0LCA4NywgCi0gICAgMjUsIDYsIDEsIDIyMCwgMTg3LCAyNSwgMywgMSwgMjIwLCAxODcsIDI1LCA2LCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAKLSAgICAyNSwgNiwgMSwgMjIyLCAxNTksIDI1LCAzLCAxLCAyMjIsIDE1OSwgMjUsIDIyMywgMTkxLCAyLCAyMTksIDQ1LCA4NywgMjUsIAotICAgIDYsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgNiwgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCAKLSAgICA4NywgMjUsIDYsIDIyMywgMjAyLCAyNDYsIDcyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAzMywgNiwgMSwgMjM2LCA1NiwgCi0gICAgMiwgMjQyLCAxMTMsIDMzLCA2LCAxLCAyMzUsIDE4NywgMzMsIDYsIDEsIDI0NywgMTE0LCAzMywgNiwgMSwgMjQyLCAxNjMsIAotICAgIDMzLCA2LCAxLCAyMTUsIDE3MiwgMjM2LCA1NSwgMzMsIDYsIDEsIDI0NSwgMjQ3LCAzMywgNiwgMSwgMjUxLCA1LCA3MiwgCi0gICAgMzMsIDYsIDEsIDIxMiwgMjU1LCAzMywgNiwgMSwgMjM1LCAxMjcsIDMzLCA2LCAxLCAyMzIsIDIxNiwgMzMsIDYsIDEsIAotICAgIDIyOSwgOSwgMzMsIDYsIDEsIDIxNiwgMTMyLCAzMywgNiwgMSwgMjM0LCA1NywgMzMsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyNDIsIDExMywgMzMsIDYsIDEsIDIyMCwgMTc1LCA2OSwgMzMsIDYsIDEsIDI0NSwgMjQzLCAzMywgNiwgMSwgNjEsIDMzLCAKLSAgICA2LCAxLCAyNTEsIDI1MSwgMzMsIDYsIDEsIDIxNCwgMjMyLCAzMywgNiwgMSwgMjQyLCAyMTIsIDMzLCA2LCAxLCAyNDgsIAotICAgIDQxLCAzMywgNiwgMSwgMjM2LCA1NSwgMzMsIDYsIDEsIDIxMiwgNjcsIDMzLCA2LCAxLCAyMTIsIDg3LCAzMywgNiwgMSwgCi0gICAgNzIsIDMzLCA2LCAxLCAyMjAsIDE3NSwgNzIsIDMzLCA2LCAxLCAxODEsIDMzLCA2LCAxLCAyNDUsIDEzMSwgMzMsIDYsIDEsIAotICAgIDI0NSwgMTE3LCAzMywgNiwgMSwgMjQ1LCAxMDgsIDMzLCA2LCAxLCA3NSwgMzMsIDYsIDEsIDIyNiwgOTYsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDU1LCAzMywgNiwgMSwgMjQ1LCA0NSwgMzMsIDYsIDEsIDIxNywgMjI5LCAzMywgNiwgMSwgNjksIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE1OSwgMzMsIDYsIDEsIDE1OSwgMzMsIDYsIDEsIDIxNiwgMTM2LCAzMywgNiwgMSwgMjUwLCA2NywgMzMsIDYsIDEsIAotICAgIDIyMSwgMjQsIDMzLCA2LCAxLCAyMjAsIDI0NSwgMzMsIDYsIDEsIDI0MSwgMjQyLCA1MiwgMzMsIDYsIDEsIDIxMywgMTgsIAotICAgIDMzLCA2LCAxLCAyMTksIDIzNiwgNTIsIDMzLCA2LCAxLCA3NCwgMzMsIDYsIDEsIDIxMiwgMjAzLCAzMywgNiwgMSwgMTg2LCAKLSAgICAzMywgMywgMSwgNjEsIDMzLCAzLCAxLCAyNTEsIDI1MSwgMzMsIDMsIDEsIDIxNCwgMjMyLCAzMywgMywgMSwgMjQyLCAyMTIsIAotICAgIDMzLCAzLCAxLCAyNDgsIDQxLCAzMywgMywgMSwgMjM2LCA1NSwgMzMsIDMsIDEsIDIxMiwgNjcsIDMzLCAzLCAxLCAyMTIsIAotICAgIDg3LCAzMywgMywgMSwgNzIsIDMzLCAzLCAxLCAyMjAsIDE3NSwgNzIsIDMzLCAzLCAxLCAxODEsIDMzLCAzLCAxLCAyNDUsIAotICAgIDEzMSwgMzMsIDMsIDEsIDI0NSwgMTE3LCAzMywgMywgMSwgMjQ1LCAxMDgsIDMzLCAzLCAxLCA3NSwgMzMsIDMsIDEsIDIyNiwgCi0gICAgOTYsIDMzLCAzLCAxLCAyNDUsIDU1LCAzMywgMywgMSwgMjQ1LCA0NSwgMzMsIDMsIDEsIDIxNywgMjI5LCAzMywgMywgMSwgCi0gICAgNjksIDMzLCAzLCAxLCAyNDUsIDE1OSwgMzMsIDMsIDEsIDE1OSwgMzMsIDMsIDEsIDIxNiwgMTM2LCAzMywgMywgMSwgMjUwLCAKLSAgICA2NywgMzMsIDMsIDEsIDIyMSwgMjQsIDMzLCAzLCAxLCAyMjAsIDI0NSwgMzMsIDMsIDEsIDI0MSwgMjQyLCA1MiwgMzMsIDMsIAotICAgIDEsIDIxMywgMTgsIDMzLCAzLCAxLCAyMTksIDIzNiwgNTIsIDMzLCAzLCAxLCA3NCwgMzMsIDMsIDEsIDIxMiwgMjAzLCAzMywgCi0gICAgMywgMSwgMTg2LCAzMywgMywgMSwgMjM2LCA1NiwgMiwgMjQyLCAxMTMsIDMzLCAzLCAxLCAyMzUsIDE4NywgMzMsIDMsIDEsIAotICAgIDI0NywgMTE0LCAzMywgMywgMSwgMjQyLCAxNjMsIDMzLCAzLCAxLCAyMTUsIDE3MiwgMjM2LCA1NSwgMzMsIDMsIDEsIDI0NSwgCi0gICAgMjQ3LCAzMywgMywgMSwgMjUxLCA1LCA3MiwgMzMsIDMsIDEsIDIxMiwgMjU1LCAzMywgMywgMSwgMjM1LCAxMjcsIDMzLCAzLCAKLSAgICAxLCAyMzIsIDIxNiwgMzMsIDMsIDEsIDIyOSwgOSwgMzMsIDMsIDEsIDIxNiwgMTMyLCAzMywgMywgMSwgMjM0LCA1NywgMzMsIAotICAgIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgMzMsIDMsIDEsIDIyMCwgMTc1LCA2OSwgMzMsIDMsIDEsIDI0NSwgMjQzLCAKLSAgICAzMywgNiwgMSwgMjI3LCA2NywgMzMsIDMsIDEsIDIyNywgNjcsIDMzLCA2LCAxLCAyMTMsIDQ5LCAzMywgMywgMSwgMjEzLCAKLSAgICA0OSwgMzMsIDYsIDEsIDIzNSwgMTgxLCA3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCA3NCwgMzMsIDYsIDEsIDIzMiwgMjIxLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjUxLCAxNzIsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjM1LCAxODEsIDI1MSwgMTcyLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzMsIDI0MiwgMzMsIAotICAgIDMsIDEsIDIzMywgMjQyLCAzMywgNiwgMSwgMjI1LCA0NiwgMzMsIDMsIDEsIDIyNSwgNDYsIDMzLCA2LCAxLCAyNDQsIDUxLCAKLSAgICAzMywgMywgMSwgMjQ0LCA1MSwgMzMsIDYsIDEsIDIzNSwgMTQ0LCAzMywgMywgMSwgMjM1LCAxNDQsIDMzLCA2LCAxLCAyMzUsIAotICAgIDE0NSwgMiwgNTEsIDI0MiwgMTE0LCAyNTQsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTQ1LCAyLCA1MSwgMjQyLCAxMTQsIDI1NCwgCi0gICAgMTc0LCAzMywgNiwgMSwgMjE1LCAxNzUsIDMzLCAzLCAxLCAyMTUsIDE3NSwgMzMsIDYsIDEsIDIyMywgODcsIDIyNywgNjcsIAotICAgIDMzLCAzLCAxLCAyMjMsIDg3LCAyMjcsIDY3LCAzMywgNiwgMSwgMjI3LCA2OCwgMiwgMjE3LCAxOCwgMzMsIDMsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIxNywgMTgsIDMzLCA2LCAxLCAyMjcsIDgsIDMzLCAzLCAxLCAyMjcsIDgsIDMzLCA2LCAxLCAyMzQsIDE1LCAKLSAgICAzMywgMywgMSwgMjM0LCAxNSwgMzMsIDIxNywgOTksIDUyLCAzNywgMzMsIDIxNywgMTgsIDM3LCAzMywgMjI2LCAxOTIsIAotICAgIDM3LCAzMywgMjA3LCAyMjUsIDE1MiwgMzcsIDMzLCAyMjUsIDQwLCAyMjUsIDE1MiwgMzcsIDMzLCAyMjUsIDEzNywgMzcsIAotICAgIDMzLCAyNDAsIDIwMSwgMjE3LCA5OSwgNTIsIDM3LCAzMywgMjMxLCA0LCA1MiwgMzMsIDYsIDEsIDIyMCwgMTc1LCAyNDAsIAotICAgIDE0NiwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDIyMCwgMTc1LCAyNDAsIDE0NiwgMiwgMjE4LCAyNywgMzMsIDYsIDEsIDIyMSwgCi0gICAgNjYsIDUyLCAzMywgMywgMSwgMjIxLCA2NiwgNTIsIDMzLCA2LCAxLCAyNDUsIDU2LCAyLCAyMTcsIDY4LCAzMywgMywgMSwgCi0gICAgMjQ1LCA1NiwgMiwgMjE3LCA2OCwgMzMsIDYsIDEsIDI0MiwgMjEzLCAyLCAyMTUsIDEyNywgMzMsIDMsIDEsIDI0MiwgMjEzLCAKLSAgICAyLCAyMTUsIDEyNywgMzMsIDYsIDEsIDI0MiwgMjEzLCAyLCA5MCwgMzMsIDMsIDEsIDI0MiwgMjEzLCAyLCA5MCwgMzMsIDYsIAotICAgIDEsIDI0MiwgMjEzLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgCi0gICAgMSwgMjEyLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMTIsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIxMiwgCi0gICAgODgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjEyLCA4OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjM1LCAxNywgMiwgNzEsIDkwLCAKLSAgICAzMywgMywgMSwgMjM1LCAxNywgMiwgNzEsIDkwLCAzMywgNiwgMSwgMjM1LCAxNywgMiwgOTAsIDMzLCAzLCAxLCAyMzUsIAotICAgIDE3LCAyLCA5MCwgMzMsIDYsIDEsIDI1MiwgNDQsIDE4MSwgMzMsIDMsIDEsIDI1MiwgNDQsIDE4MSwgMzMsIDYsIDEsIDI0NSwgCi0gICAgMTA5LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDI2LCAyNDUsIDEwOSwgCi0gICAgMjQyLCAyMTIsIDMzLCAzLCAyNiwgMjQ1LCAxMDksIDI0MiwgMjEyLCAzMywgNiwgMSwgMjI2LCA5NywgMiwgMjMxLCAzNywgCi0gICAgMTAxLCAzMywgMywgMSwgMjI2LCA5NywgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjU0LCAxODAsIDE1OSwgMzMsIDMsIAotICAgIDEsIDI1NCwgMTgwLCAxNTksIDMzLCA2LCAxLCAyNDUsIDQ2LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDI0NSwgNDYsIDIsIAotICAgIDI0NywgMjQ2LCAzMywgNiwgMSwgMjE3LCAyMzAsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjE3LCAyMzAsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgNiwgMSwgMjE5LCA2MSwgNjksIDMzLCAzLCAxLCAyMTksIDYxLCA2OSwgMzMsIDYsIDEsIDIxOSwgNjEsIAotICAgIDExMSwgMiwgOTAsIDMzLCAzLCAxLCAyMTksIDYxLCAxMTEsIDIsIDkwLCAzMywgNiwgMSwgMjQyLCAzMCwgMiwgMjQ3LCAKLSAgICAyNDYsIDMzLCAzLCAxLCAyNDIsIDMwLCAyLCAyNDcsIDI0NiwgMzMsIDYsIDI2LCAyMTcsIDIzMCwgMjE2LCAxMzYsIDMzLCAKLSAgICAzLCAyNiwgMjE3LCAyMzAsIDIxNiwgMTM2LCAzMywgNiwgMSwgMjUwLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNTAsIAotICAgIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDcxLCA5MCwgMzMsIDMsIDEsIDI1MCwgNjgsIDIsIDcxLCAKLSAgICA5MCwgMzMsIDYsIDEsIDIyMCwgMjEzLCAzMywgMywgMSwgMjIwLCAyMTMsIDMzLCA2LCAxLCAyNTQsIDE4MCwgMjUwLCA2NywgCi0gICAgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNTAsIDY3LCAzMywgNiwgMSwgMjU0LCAxODAsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAKLSAgICAzMywgMywgMSwgMjU0LCAxODAsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMSwgMjI2LCAxODUsIDMzLCA2LCAxLCAyMTIsIAotICAgIDY4LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMjEyLCA2OCwgMiwgMjUxLCA3NCwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDEwMSwgCi0gICAgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDEwMSwgMzMsIDYsIDEsIDI0NSwgMTMyLCAyLCAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAKLSAgICAxMzIsIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAyNDUsIDEwOSwgMiwgMTAxLCAzMywgMywgMSwgMjQ1LCAxMDksIDIsIDEwMSwgCi0gICAgMzMsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAxMDksIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAKLSAgICAyMzQsIDEzMywgMjUwLCA2NywgMzMsIDMsIDEsIDIzNCwgMTMzLCAyNTAsIDY3LCAzMywgNiwgMSwgMjQ1LCAxMTgsIDIsIAotICAgIDIxOCwgMjcsIDMzLCAzLCAxLCAyNDUsIDExOCwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDIyNiwgMTg1LCAzMywgNiwgMSwgCi0gICAgMTE4LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMTE4LCAyLCAyNTEsIDc0LCAzMywgNiwgMSwgMTE4LCAyLCAyNDcsIDIwOSwgCi0gICAgMzMsIDMsIDEsIDExOCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAyNiwgMTE4LCAyMzYsIDU1LCAzMywgMywgMjYsIDExOCwgMjM2LCAKLSAgICA1NSwgMzMsIDYsIDEsIDIzNiwgNTYsIDIsIDI1MSwgNzQsIDMzLCAzLCAxLCAyMzYsIDU2LCAyLCAyNTEsIDc0LCAzMywgNiwgCi0gICAgMSwgMjIyLCAxMTMsIDMzLCAzLCAxLCAyMjIsIDExMywgMzMsIDYsIDEsIDIyMiwgMTE0LCAyLCAyNDcsIDIwOSwgMzMsIDMsIAotICAgIDEsIDIyMiwgMTE0LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDIxMiwgNjgsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjEyLCAKLSAgICA2OCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAyMTIsIDg4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMiwgODgsIDIsIAotICAgIDI0NywgMjA5LCAzMywgNiwgMSwgMjU0LCAxODAsIDI0NSwgMjQ3LCAzMywgMywgMSwgMjU0LCAxODAsIDI0NSwgMjQ3LCAzMywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDMzLCAzLCAxLCAyNDAsIDE0NiwgMiwgMjMyLCAzNywgMzMsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDE1NywgMiwgCi0gICAgMjQ3LCAyMDksIDMzLCAzLCAxLCAxNTcsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMjUyLCA1NCwgNzUsIDMzLCAzLCAxLCAKLSAgICAyNTIsIDU0LCA3NSwgMzMsIDYsIDEsIDI1MiwgNTQsIDE1NywgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyNTIsIDU0LCAxNTcsIAotICAgIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMTkxLCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDMzLCAKLSAgICA2LCAxLCAxMTEsIDIsIDIzMiwgMzcsIDMzLCAzLCAxLCAxMTEsIDIsIDIzMiwgMzcsIDMzLCA2LCAxLCAxMTEsIDIsIDI0NywgCi0gICAgMjA5LCAzMywgMywgMSwgMTExLCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDExMSwgMiwgNTEsIDE3OSwgMzMsIDMsIDEsIAotICAgIDExMSwgMiwgNTEsIDE3OSwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjUwLCA2OCwgMiwgCi0gICAgMjQ3LCAyMDksIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgMjQ3LCAKLSAgICAyNDYsIDMzLCA2LCAxLCAyMTMsIDE5LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMywgMTksIDIsIDI0NywgMjA5LCAzMywgCi0gICAgNiwgMSwgMjQyLCAyMTMsIDIsIDIxOSwgNDUsIDI0LCAxMDEsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgMjE5LCA0NSwgMjQsIAotICAgIDEwMSwgMzMsIDYsIDEsIDI0MiwgMzAsIDIsIDEwMSwgMzMsIDMsIDEsIDI0MiwgMzAsIDIsIDEwMSwgMzMsIDYsIDEsIDI0MiwgCi0gICAgMzAsIDIsIDkwLCAzMywgMywgMSwgMjQyLCAzMCwgMiwgOTAsIDMzLCA2LCAxLCAyMzQsIDIzLCAyNDgsIDQxLCAzMywgMywgCi0gICAgMSwgMjM0LCAyMywgMjQ4LCA0MSwgMzMsIDYsIDEsIDIzNCwgMjMsIDI0NywgMTE0LCAzMywgMywgMSwgMjM0LCAyMywgMjQ3LCAKLSAgICAxMTQsIDMzLCA2LCAxLCAyMzQsIDIzLCAyMTIsIDIwLCAzMywgMywgMSwgMjM0LCAyMywgMjEyLCAyMCwgMzMsIDYsIDEsIAotICAgIDIzNCwgMjMsIDI0NSwgMjQxLCAzMywgMywgMSwgMjM0LCAyMywgMjQ1LCAyNDEsIDMzLCA2LCAxLCAyMzQsIDIzLCAyMzIsIAotICAgIDIxNiwgMzMsIDMsIDEsIDIzNCwgMjMsIDIzMiwgMjE2LCAzMywgNiwgMSwgMjM0LCAyMywgMjI5LCA5LCAzMywgMywgMSwgCi0gICAgMjM0LCAyMywgMjI5LCA5LCAzMywgNiwgMSwgMjM0LCAyMywgMjIwLCAzNywgMzMsIDMsIDEsIDIzNCwgMjMsIDIyMCwgMzcsIAotICAgIDMzLCA2LCAxLCAyMzQsIDIzLCAyMTcsIDEzLCAzMywgMywgMSwgMjM0LCAyMywgMjE3LCAxMywgMzMsIDYsIDEsIDIyMywgCi0gICAgMjAyLCAyMTIsIDg3LCAzMywgMywgMSwgMjIzLCAyMDIsIDIxMiwgODcsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgMTAxLCAKLSAgICAzMywgMywgMSwgMjQ1LCAxMzIsIDIsIDEwMSwgMzMsIDYsIDEsIDIzMywgMjUsIDMzLCAzLCAxLCAyMzMsIDI1LCAzMywgNiwgCi0gICAgMSwgMjIzLCAxOTIsIDMzLCAzLCAxLCAyMjMsIDE5MiwgMzMsIDYsIDEsIDIxMywgODAsIDMzLCAzLCAxLCAyMTMsIDgwLCAKLSAgICAzMywgNiwgMSwgMjI0LCAyMzIsIDMzLCAzLCAxLCAyMjQsIDIzMiwgMzMsIDYsIDEsIDIxNCwgNiwgMzMsIDMsIDEsIDIxNCwgCi0gICAgNiwgMzMsIDYsIDEsIDI1NCwgNzUsIDE4MSwgMzMsIDMsIDEsIDI1NCwgNzUsIDE4MSwgMzMsIDYsIDEsIDI0NSwgMTMyLCAyLCAKLSAgICAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDUsIDEzMiwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjQ1LCAxMDksIDIsIAotICAgIDIzMSwgMzcsIDEwMSwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAxLCAyMjYsIDk3LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDMsIDEsIDIyNiwgOTcsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjIwLCAyMTQsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgMywgMSwgMjIwLCAyMTQsIDIsIDI0NywgMjQ2LCAxNDEsIDYsIDEsIDI1MywgODAsIDE0MSwgNiwgMSwgMjUxLCAKLSAgICAyMTYsIDE0MSwgNiwgMSwgMjQyLCAxNzksIDE0MSwgNiwgMSwgMjQ4LCAxNjQsIDE0MSwgNiwgMSwgMjQ1LCAxNjksIDE0MSwgCi0gICAgNiwgMSwgMjEyLCAxMDksIDE0MSwgNiwgMSwgMjQ1LCAxNTQsIDE0MSwgNiwgMSwgMjQ1LCAzMCwgMTQxLCA2LCAxLCAxMDgsIAotICAgIDE0MSwgNiwgMSwgMjEyLCA2NywgMTQxLCA2LCAxLCAyMzUsIDIyNCwgMTQxLCA2LCAxLCAyMzIsIDIxOSwgMTQxLCA2LCAxLCAKLSAgICAyMTMsIDE0OCwgMTQxLCA2LCAxLCAyNTAsIDIxOSwgMTQxLCA2LCAxLCAyMzQsIDE3MSwgMTQxLCA2LCAxLCAyNDEsIDU0LCAKLSAgICAxNDEsIDYsIDEsIDIzNSwgMTM5LCAxNDEsIDYsIDEsIDI0MiwgMjIyLCAxNDEsIDYsIDEsIDI1MCwgNjIsIDE0MSwgNiwgMSwgCi0gICAgMjMxLCAxMjIsIDE0MSwgNiwgMSwgMjEyLCAyNTUsIDE0MSwgNiwgMSwgMjI4LCAxNTAsIDE0MSwgNiwgMSwgMjIxLCAyNCwgCi0gICAgMTQxLCA2LCAxLCAyMTQsIDExOSwgMTQxLCA2LCAxLCAyNTAsIDkyLCAxNDEsIDYsIDEsIDIyNiwgODAsIDE0MSwgNiwgMSwgCi0gICAgMjM1LCAxMTIsIDE0MSwgNiwgMSwgMjAzLCAxNDEsIDYsIDEsIDIyMiwgODAsIDE0MSwgNiwgMSwgMjE0LCAxNTYsIDE0MSwgCi0gICAgNiwgMSwgMjE3LCAxNSwgMTQxLCA2LCAxLCAyMjMsIDI0NSwgMTQxLCA2LCAxLCAyNDksIDE3NSwgMTQxLCA2LCAxLCAyMTIsIAotICAgIDI0MCwgMTQxLCA2LCAxLCAyMjUsIDE3OCwgMTQxLCA2LCAxLCAyMzQsIDE4MiwgMTQxLCA2LCAxLCAyMjcsIDg4LCAxNDEsIAotICAgIDYsIDEsIDI0NCwgMTExLCAxNDEsIDU5LCAxLCA0MiwgMTUxLCAyMjMsIDEzMCwgMTQxLCAyNTMsIDIyNiwgMTQxLCAyNDUsIAotICAgIDExMiwgNzcsIDE0MSwgMjQ0LCAyNTQsIDc3LCAxNDEsIDI0OSwgMTU3LCAxNDEsIDIyNCwgMTU4LCA3NywgMTQxLCAyNTQsIAotICAgIDE4MSwgNzcsIDE0MSwgMywgMSwgMjUzLCA4MCwgMTQxLCAzLCAxLCAyNTEsIDIxNiwgMTQxLCAzLCAxLCAyNDIsIDE3OSwgCi0gICAgMTQxLCAzLCAxLCAyNDgsIDE2NCwgMTQxLCAzLCAxLCAyNDUsIDE2OSwgMTQxLCAzLCAxLCAyMTIsIDEwOSwgMTQxLCAzLCAxLCAKLSAgICAyNDUsIDE1NCwgMTQxLCAzLCAxLCAyNDUsIDMwLCAxNDEsIDMsIDEsIDEwOCwgMTQxLCAzLCAxLCAyMTIsIDY3LCAxNDEsIDMsIAotICAgIDEsIDIzNSwgMjI0LCAxNDEsIDMsIDEsIDIzMiwgMjE5LCAxNDEsIDMsIDEsIDIxMywgMTQ4LCAxNDEsIDMsIDEsIDI1MCwgCi0gICAgMjE5LCAxNDEsIDMsIDEsIDIzNCwgMTcxLCAxNDEsIDMsIDEsIDI0MSwgNTQsIDE0MSwgMywgMSwgMjM1LCAxMzksIDE0MSwgCi0gICAgMywgMSwgMjQyLCAyMjIsIDE0MSwgMywgMSwgMjUwLCA2MiwgMTQxLCAzLCAxLCAyMzEsIDEyMiwgMTQxLCAzLCAxLCAyMTIsIAotICAgIDI1NSwgMTQxLCAzLCAxLCAyMjgsIDE1MCwgMTQxLCAzLCAxLCAyMjEsIDI0LCAxNDEsIDMsIDEsIDIxNCwgMTE5LCAxNDEsIAotICAgIDMsIDEsIDI1MCwgOTIsIDE0MSwgMywgMSwgMjI2LCA4MCwgMTQxLCAzLCAxLCAyMzUsIDExMiwgMTQxLCAzLCAxLCAyMDMsIAotICAgIDE0MSwgMywgMSwgMjIyLCA4MCwgMTQxLCAzLCAxLCAyMTQsIDE1NiwgMTQxLCAzLCAxLCAyMTcsIDE1LCAxNDEsIDMsIDEsIAotICAgIDIyMywgMjQ1LCAxNDEsIDMsIDEsIDI0OSwgMTc1LCAxNDEsIDMsIDEsIDIxMiwgMjQwLCAxNDEsIDMsIDEsIDIyNSwgMTc4LCAKLSAgICAxNDEsIDMsIDEsIDIzNCwgMTgyLCAxNDEsIDMsIDEsIDIyNywgODgsIDE0MSwgMywgMSwgMjQ0LCAxMTEsIDE0MSwgMywgMjYsIAotICAgIDI0NSwgMTcwLCAyMTIsIDI0MCwgMTQxLCAyNDMsIDIwMCwgMjE5LCA2OSwgMTQxLCAyNDAsIDE2MCwgOTMsIDI1NCwgMTc1LCAKLSAgICAyNDUsIDIzLCA5MywgMjU0LCAxNzUsIDIyMiwgODEsIDkzLCAyNTQsIDE3NSwgMjIxLCAxMSwgOTMsIDI1NCwgMTc1LCAyMTIsIAotICAgIDk3LCAyMjQsIDIxNSwgOTMsIDI1NCwgMTc1LCAyMTIsIDk3LCAyNDMsIDEwMCwgOTMsIDI1NCwgMTc1LCAyMTcsIDI4LCA5MywgCi0gICAgMjU0LCAxNzUsIDIyMywgMjAwLCA5MywgMjU0LCAxNzUsIDIxMiwgOTYsIDkzLCAyNTQsIDE3NSwgMjI2LCAxMTgsIDkzLCAKLSAgICAyNTQsIDE3NSwgMjEzLCAxMSwgOTMsIDI1NCwgMTc1LCAyMTcsIDE2NywgOTMsIDI1NCwgMTc1LCAyNDMsIDE3LCA5MywgCi0gICAgMjU0LCAxNzUsIDI0MywgMTgsIDIzMCwgMTM5LCA5MywgMjU0LCAxNzUsIDI0MywgMTUsIDkzLCAyNTQsIDE3NSwgMjI0LCAKLSAgICAyMTYsIDIyNiwgMTQ0LCA5MywgMjU0LCAxNzUsIDIxNywgMjA2LCAyNDMsIDMyLCA5MywgMjU0LCAxNzUsIDIyNiwgMTAwLCAKLSAgICA5MywgMjU0LCAxNzUsIDI1MywgMTE2LCAyNDIsIDIyLCA5MywgMjU0LCAxNzUsIDIzMCwgMTQ5LCA5MywgMjU0LCAxNzUsIAotICAgIDIzMiwgMTMsIDkzLCAyNTQsIDE3NSwgMjMxLCAxMTMsIDkzLCAyNTQsIDE3NSwgMjMxLCAxMTQsIDIzNCwgMTgzLCA5MywgCi0gICAgMjU0LCAxNzUsIDI0OCwgMTA4LCA5MywgMjU0LCAxNzUsIDIyNCwgMjI3LCA5MywgMjU0LCAxNzUsIDIxNywgMjA2LCAyMjQsIAotICAgIDIxMSwgOTMsIDI1NCwgMTc1LCAyMTMsIDIxLCAyNTEsIDIxNywgMjEyLCAyMjEsIDkzLCAyNTQsIDE3NSwgMjI3LCA3MywgCi0gICAgOTMsIDI1NCwgMTc1LCAyMzYsIDE0LCA5MywgMjU0LCAxNzUsIDI0OCwgMjEsIDkzLCAyNTQsIDE3NSwgMjEyLCAyNiwgOTMsIAotICAgIDE1MiwgMjMxLCAyMDYsIDI0OSwgMjI4LCA5MywgMjI1LCAxNDUsIDIyMCwgMjE2LCA5MywgMjI1LCAxNDUsIDI0MSwgMjMzLCAKLSAgICAyMjIsIDgxLCA5MywgMjI1LCAxNDUsIDI0MSwgMjMzLCAyMjYsIDExMiwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgMjI0LCAKLSAgICAyMjAsIDkzLCAyMjUsIDE0NSwgMjQxLCAxNDQsIDkzLCAyMjUsIDE0NSwgMjE2LCAxMzQsIDkzLCAyMjUsIDE0NSwgMjIyLCAKLSAgICA4MSwgOTMsIDIyNSwgMTQ1LCAyMjYsIDExMiwgOTMsIDIyNSwgMTQ1LCAyMjQsIDIyMCwgOTMsIDIyNSwgMTQ1LCAyNDEsIAotICAgIDQ3LCA5MywgMjI1LCAxNDUsIDI0MSwgNDgsIDI0MSwgMjM1LCAzMSwgMjE0LCAyMzYsIDkzLCAyMjUsIDE0NSwgMjI0LCAKLSAgICAxNjIsIDkzLCAyMjUsIDE0NSwgMjQ4LCAxNTEsIDE2NywgMjMxLCAyMzQsIDkzLCAyMjUsIDE0NSwgMjMxLCAxMDUsIDkzLCAKLSAgICAyMjUsIDI3LCAyMzEsIDIzMSwgOTMsIDIyNSwgMTQ1LCAyMjQsIDU5LCA5MywgMjI1LCAyNywgMjI2LCAxMjAsIDkzLCAyMjUsIAotICAgIDE0NSwgMjIwLCAyMDEsIDI0NywgNzQsIDkzLCAyMjUsIDE0NSwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDIyNSwgMjcsIDIxOSwgCi0gICAgMjM3LCAyMjYsIDExNCwgOTMsIDE1MiwgMjE1LCAxMzEsIDI0NywgNzQsIDkzLCAxNTIsIDIzMiwgMTYzLCAyNDcsIDc0LCAKLSAgICA5MywgMjI1LCAyNywgMjI4LCA1MSwgMjQyLCAyMSwgOTMsIDIyNSwgMTQ1LCAyMjQsIDIyMSwgMjI0LCAyMTUsIDkzLCAxLCAKLSAgICAyNTQsIDc4LCA5MywgMSwgMjUxLCAyMDUsIDkzLCAxLCAyNDIsIDE3NywgOTMsIDEsIDI0OCwgMTM0LCA5MywgMSwgMjQxLCAKLSAgICAyMjIsIDkzLCAxLCAyMTQsIDIzNiwgOTMsIDEsIDIxMiwgOTAsIDkzLCAxLCAyNDEsIDE4MiwgOTMsIDEsIDIxNywgMTgzLCAKLSAgICA5MywgMSwgMjEyLCAyMjQsIDkzLCAxLCA0MCwgMjM0LCAyNTQsIDkzLCAxLCAyMzQsIDI1NCwgOTMsIDEsIDIzMywgMTE4LCAKLSAgICA5MywgMSwgNDAsIDIzMSwgMTI5LCA5MywgMSwgMjMxLCAxMjksIDkzLCAxLCA0MCwgMjI4LCA1MCwgOTMsIDEsIDIyOCwgNTAsIAotICAgIDkzLCAxLCAyMjIsIDE2NCwgOTMsIDEsIDI1MywgNzgsIDkzLCAxLCA0MCwgMjI2LCA5NiwgOTMsIDEsIDIyNiwgOTYsIDkzLCAKLSAgICAxLCA0MCwgMjE2LCAxMzcsIDkzLCAxLCAyMTYsIDEzNywgOTMsIDEsIDIyNCwgMTg0LCA5MywgMSwgMjIzLCAyMTksIDkzLCAKLSAgICAxLCAyMjAsIDIwMCwgOTMsIDEsIDIxNywgMjQ1LCA5MywgMjYsIDIxMiwgMjUzLCA1MSwgMjE0LCAyMzYsIDkzLCAyNiwgCi0gICAgMjEyLCAyNTMsIDIxNCwgMjM3LCAyMTIsIDIyNCwgOTMsIDI2LCAyMTIsIDI1MywgNTEsIDIxMiwgMjI0LCA5MywgMjI1LCAKLSAgICAyNywgMjQzLCAxNywgOTMsIDIyNSwgMjcsIDI0MywgMTUsIDEyLCA1MCwgNTIsIDEyLCA1LCAyMjIsIDE1OCwgMTIsIDI0MywgCi0gICAgMjU1LCAyMzEsIDIxNywgMTIsIDUsIDIyMiwgMTkyLCAyNTMsIDIwNywgMjQ5LCA1MCwgMjIzLCA5NSwgMjUzLCAyMDcsIAotICAgIDI0MywgMjMwLCAyMjMsIDk1LCAxMiwgMjI0LCAyNywgMjUzLCAyMDcsIDIyNiwgNTgsIDIzMSwgNiwgNTIsIDI1MywgMjA3LCAKLSAgICAyMjYsIDU4LCAyMTcsIDIwMSwgMjE3LCAxMDEsIDUyLCAyNTQsIDEyNiwgNTIsIDEyLCAyNDksIDE1NywgMTIsIDI0OCwgOTYsIAotICAgIDIyMSwgNTcsIDEyLCAyMjUsIDE0NywgMjE0LCAyMTgsIDUyLCAxMiwgNSwgMjMwLCAyNDMsIDEyLCA1LCAyMjIsIDE3NCwgCi0gICAgMjU0LCA4MCwgMjE0LCAyOSwgMTIsIDUsIDI1NCwgODAsIDI1MywgMTM3LCAxMiwgNSwgMjI0LCA1OCwgMjU0LCA3OSwgMTIsIAotICAgIDUsIDIyNCwgNjUsIDI1NCwgNjEsIDI1NCwgMTQsIDEyLCA1LCAyMTgsIDIwLCAxMiwgMywgMTI0LCAyMTgsIDI5LCAxMiwgMywgCi0gICAgMTI0LCAyNiwgMTA2LCAyLCAyMzMsIDEyNywgMiwgMjEzLCAzNCwgMTIsIDMsIDEyNCwgMjEyLCAxMDEsIDEyLCAzLCAyNDQsIAotICAgIDEzMywgMTIsIDMsIDI0OCwgMTI5LCAxMiwgMywgMjM0LCAyMTAsIDEyLCAyMjEsIDcwLCAxMiwgMjE2LCAxNjksIDYyLCAKLSAgICAyMjUsIDI3LCA3NywgMTIsIDIyNCwgMTU4LCA3NywgMTIsIDEsIDIzNCwgMjE0LCAyMTMsIDM0LCAxMiwgMSwgMjQyLCAyLCAKLSAgICAxMiwgMSwgMTA2LCAyLCAyMzIsIDMzLCA0OSwgMTIsIDEsIDEwNiwgMiwgMTkyLCA0OSwgMTIsIDEsIDIxNCwgMTUsIDIsIAotICAgIDE5MiwgNDksIDEyLCAxLCAxMDYsIDIsIDE5MiwgNTUsIDEyLCAxLCA3MywgMiwgMTkyLCA0OSwgMTIsIDEsIDI1NCwgNzgsIAotICAgIDEyLCAxLCAyNTEsIDIzMCwgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyNywgMTIsIDEsIDIxNywgMjE1LCAxMiwgMSwgMjE3LCAKLSAgICAxNDUsIDEyLCAxLCAyMzUsIDEyNCwgMTIsIDEsIDI0MiwgMTgsIDEyLCAxLCAyMzQsIDEzNSwgMTIsIDEsIDI0OCwgMTQwLCAKLSAgICAxMiwgMSwgMjE3LCAxNTUsIDEyLCAxLCAyMjMsIDI0NSwgMTIsIDEsIDIxMiwgMTAxLCAxMiwgMSwgMjIyLCA4NSwgMTIsIDEsIAotICAgIDIyMCwgMjM5LCAxMiwgMSwgMjIyLCAxOTUsIDEyLCAxLCAyNDgsIDE1OSwgMTIsIDEsIDIxOCwgMjksIDEyLCAxLCAyMTIsIAotICAgIDEwNCwgMTIsIDEsIDI1NCwgMTAzLCAxMiwgMSwgMjQyLCAyMjAsIDEyLCAxLCAyMzQsIDE4MSwgMiwgMTE3LCAxNzYsIDQ5LCAKLSAgICAxMiwgMSwgMjM0LCAxODEsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMjM1LCAxOTEsIDIxNSwgCi0gICAgNzksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDI0NCwgMTM2LCA3MywgMiwgMTMzLCAKLSAgICAxNzYsIDQ5LCAxMiwgMjE3LCAyNTAsIDEyLCAxLCAyNDQsIDExMSwgMTIsIDEsIDIyNCwgMjI1LCAxMiwgMSwgMjM0LCAyNTQsIAotICAgIDEyLCAxLCAyMzMsIDEyNiwgMTIsIDEsIDIzMSwgMTQzLCAxMiwgMSwgMjI4LCAxNzMsIDEyLCAxLCAyNDEsIDIwMiwgMTIsIAotICAgIDEsIDIxNCwgMTQsIDEyLCAxLCAxMDYsIDIzMSwgMjU1LCAxMiwgMSwgMjEzLCAzNCwgMTIsIDI0NCwgMTMxLCAxMiwgMjQ4LCAKLSAgICAxMjcsIDEyLCAyMzQsIDIwOCwgMTIsIDI0NCwgMTMzLCAxMiwgMjQ4LCAxMjksIDEyLCAyMzQsIDIxMCwgMTIsIDIyMSwgMTUsIAotICAgIDEyLCAyMTgsIDI0NiwgMTIsIDIzMiwgMzEsIDQ5LCAxMiwgMTkyLCA0OSwgMTIsIDE5MiwgNTUsIDEyLCAyMTksIDEwLCAKLSAgICAyNTQsIDc4LCAxMiwgMjM1LCAxOTEsIDI0OCwgMTI5LCAxMiwgMTUyLCAyMjgsIDE3NCwgMjQyLCAxOTQsIDEyLCAyMTEsIAotICAgIDI1MCwgMTIsIDMwLCA1LCAzLCAyMTUsIDgwLCA0OSwgMTIsIDMwLCA1LCAyMzUsIDE5MSwgMywgMjE1LCA4MCwgNDksIDEyLCAKLSAgICAzMCwgNSwgNjIsIDU1LCAxMiwgMjIzLCAyMDIsIDI0OCwgMTI5LCAxMiwgMjQ0LCAxMzQsIDIsIDExNywgMjQ3LCA3MiwgMTIsIAotICAgIDIxNCwgMTYsIDE5MiwgNTUsIDI1MywgMjA3LCAyMSwgMjEyLCA3OSwgMjUzLCAyMDcsIDIxLCAxMTYsIDI1MywgMjA3LCAyMSwgCi0gICAgMTA5LCAyNTMsIDIwNywgMjEsIDE2NiwgMjUzLCAyMDcsIDIxLCAxNjMsIDI1MywgMjA3LCAyMSwgMTgwLCAyNTMsIDIwNywgCi0gICAgMjEsIDE4OSwgMjUzLCAyMDcsIDIxLCAxOTgsIDI1MywgMjA3LCAyMSwgMTk1LCAyNTMsIDIwNywgMjEsIDIwMCwgMTIsIAotICAgIDIyNiwgNTcsIDUyLCAxMiwgMjQ4LCAzNCwgMjIxLCA1NywgMTIsIDIxNywgOTksIDIyMSwgNTcsIDEyLCAyNDQsIDUwLCAKLSAgICAyMjUsIDE0MywgMjE5LCA5NSwgMTIsIDEsIDI0NywgNzMsIDI1MSwgMjMwLCAxMiwgMSwgMjQ3LCA3MywgMjI0LCAyMjUsIAotICAgIDEyLCAxLCAyMTgsIDIyMywgMjU0LCA3OCwgMTIsIDEsIDEwNiwgMjE0LCAzMCwgMTIsIDEsIDEwNiwgMiwgMjE0LCAxNiwgCi0gICAgMTkyLCA0OSwgMTIsIDEsIDEwNiwgMiwgMjE0LCAxNiwgMTkyLCA1NSwgMTIsIDEsIDEyNCwgMjQyLCAyLCAxMiwgMSwgMTI0LCAKLSAgICAxOTIsIDI1NCwgNzgsIDEyLCAxLCAxMjQsIDE5MiwgMjE0LCAxNCwgMTIsIDEsIDExMSwgMiwgMTkyLCA0OSwgMTIsIDEsIAotICAgIDEyNCwgMTkyLCAyMTMsIDM0LCAxMiwgMSwgMjE2LCAxMDksIDEyLCAxLCAyMTYsIDEwNywgMTIsIDEsIDI1MSwgMjQwLCAxMiwgCi0gICAgMSwgMjE3LCAyMTYsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjE3LCAyMTYsIDIsIDEzMywgMTc2LCA3OCwgMjQ2LCA1NywgMTIsIAotICAgIDEsIDIyNiwgODAsIDEyLCAxLCAyMTcsIDIxMywgMTIsIDEsIDI1MSwgMjI4LCAxMiwgMSwgMTIxLCAyLCAxOTIsIDQ5LCAxMiwgCi0gICAgMSwgMTIxLCAyLCAxMTcsIDE3NiwgNzEsIDQ5LCAxMiwgMSwgMjI4LCAxNCwgMTIsIDEsIDI0NSwgMjU0LCAxMiwgMSwgMTIxLCAKLSAgICAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMTcsIDIzMywgMTIsIDEsIDIxNywgMjMxLCAxMiwgMSwgMjQ4LCA4MSwgMTIsIDEsIAotICAgIDI0OCwgMTQxLCAyLCAyMjMsIDEzMCwgMTIsIDEsIDI0OCwgMTQxLCAyLCA2MiwgNTUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgCi0gICAgNjIsIDI1MSwgMjIwLCAyNCwgMywgMjE4LCAyOSwgMTIsIDEsIDI0OCwgMTQ2LCAxMiwgMSwgMjQ4LCA4MywgMTIsIDEsIAotICAgIDI0NiwgMjUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgMTMzLCAxNzYsIDc4LCAyNDYsIDU3LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIAotICAgIDI0MywgMjM3LCAxNzYsIDQ5LCAxMiwgMSwgMjIzLCA3NywgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgCi0gICAgMjIzLCAyNDYsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDYyLCA1NSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAKLSAgICAyMTUsIDgwLCA1NSwgMTIsIDEsIDIyMywgMjQ2LCAyLCA2MiwgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyMjMsIAotICAgIDI0NiwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjM1LCAxMjEsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMjQzLCAyMzcsIDE3NiwgCi0gICAgNDksIDEyLCAxLCAyMjIsIDg2LCAyLCA2MiwgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyMjIsIDg2LCAyLCAxMzMsIAotICAgIDE3NiwgNTUsIDEyLCAxLCAyMjIsIDg2LCAyLCAxMzMsIDE3NiwgMjUxLCAyMjAsIDI0LCAxMzMsIDE3NiwgNDksIDEyLCAxLCAKLSAgICAyMjIsIDE5NiwgMiwgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjIyLCAxOTYsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIxOCwgCi0gICAgMzAsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI1NCwgMTA0LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNDcsIDczLCAKLSAgICAyNDQsIDExMSwgMTIsIDEsIDI0NCwgMTEyLCAyLCA2MiwgMjMwLCAxNzksIDU1LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDYyLCAKLSAgICA1NSwgMTIsIDEsIDIxNCwgMjI1LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIDIyNiwgNzgsIAotICAgIDEyLCAxLCAyMjQsIDIyNiwgMiwgNjIsIDQ5LCAxMiwgMSwgMjI0LCAyMjYsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzNCwgCi0gICAgMTgwLCAxMiwgMSwgMjE4LCAxOTUsIDIzNCwgMjU0LCAxMiwgMSwgMjM0LCAyNTUsIDIsIDIyMywgMTMwLCAxMiwgMSwgMjM0LCAKLSAgICAyNTUsIDIsIDYyLCA0OSwgMTIsIDEsIDIyOSwgMTYxLCAxMiwgMSwgMjM0LCAyNTUsIDIsIDEzMywgMTc2LCA1NSwgMTIsIDEsIAotICAgIDI0MywgOTcsIDEyLCAxLCAyNDMsIDk4LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIyOSwgODgsIDEyLCAxLCAyNDMsIDk4LCAyLCAKLSAgICAxMTcsIDE3NiwgNTUsIDEyLCAxLCAyNDIsIDgyLCAxMiwgMSwgMjQzLCA5OCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgCi0gICAgMjMzLCAxMjcsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMzMsIDEyNywgMiwgNjIsIDQ5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIAotICAgIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgNjIsIAotICAgIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDI0MiwgMTk0LCAxMiwgMSwgMjIzLCAxMTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMjIzLCAKLSAgICAxMzAsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTUsIDEyLCAxLCAKLSAgICAyMTcsIDIzNCwgMiwgNjIsIDQ5LCAxMiwgMSwgMjQxLCAyMDMsIDIsIDczLCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIAotICAgIDE0NywgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIDE0OCwgMiwgMTkyLCA0OSwgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyOCwgCi0gICAgMjQyLCAxNDcsIDEyLCAxLCAyMTQsIDE1LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIzNCwgODIsIDIyNywgOTksIDEyLCAxLCAKLSAgICAyMjcsIDk5LCAxMiwgMSwgNjksIDEyLCAxLCAyMTIsIDIwMywgMTIsIDEsIDIzNCwgODIsIDIxMiwgMjAzLCAxMiwgMSwgCi0gICAgMjE0LCAxNSwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjE0LCAyMzIsIDEyLCAxLCAyNDQsIDEzNiwgMjEzLCAzNCwgMTIsIAotICAgIDEsIDczLCAyLCAyMTgsIDI3LCAxMiwgMSwgNzMsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMTQsIDE1LCAyLCA2MiwgNDksIAotICAgIDEyLCAxLCA3NCwgMTIsIDEsIDczLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCA3MywgMjUyLCA1MiwgMTIsIDEsIDczLCAKLSAgICAyNTIsIDUzLCAyLCAxOTIsIDQ5LCAxMiwgMjQzLCAyMDAsIDIxOSwgNjksIDEyLCAxLCAyNTQsIDE0OCwgMTIsIDMsIDEyNCwgCi0gICAgMjYsIDIyMiwgMTk2LCAyLCAyMzMsIDEyNywgMiwgMTA2LCAyMzEsIDI1NSwgMTIsIDMsIDEyNCwgMjYsIDIyNCwgMjI2LCAyLCAKLSAgICAyMzMsIDEyNywgMiwgMTA2LCAyMzEsIDI1NSwgMTIsIDMsIDEyNCwgNjMsIDcwLCAxNywgMTIsIDMsIDEyNCwgMjMzLCAxMjcsIAotICAgIDI1NCwgNzgsIDEyLCAzLCAxMjQsIDIzNSwgMTI0LCAxMiwgMywgMTI0LCAxMzMsIDI0NywgNzIsIDEyLCAzLCAxMjQsIDIyMiwgCi0gICAgODUsIDEyLCAyNDUsIDEwMSwgNjUsIDI1MywgODIsIDEyLCAyMTksIDkxLCA2NSwgMjIzLCA0OSwgMjQ1LCAxMzIsIDI0MSwgCi0gICAgMTQxLCAxMiwgMywgMTI0LCAyMjMsIDg1LCAyMTIsIDc5LCAxMiwgMywgMTI0LCAyMTUsIDEzMCwgMjI0LCA4LCAyMTIsIDc5LCAKLSAgICAxMiwgMywgMTI0LCAyNDcsIDczLCAyNDEsIDIyMCwgNjUsIDIzNCwgMTM1LCAxMiwgMywgMTI0LCA2MywgNDgsIDE3LCAxMiwgCi0gICAgMywgMTE1LCAyMjIsIDg1LCAxMiwgMywgMTI0LCAyMzIsIDMyLCAxMiwgMywgMjE0LCAxNCwgMTIsIDMsIDIxMywgMzQsIDEyLCAKLSAgICAzLCAxMjQsIDIxMywgMzQsIDEyLCAzLCAxMjQsIDIyOCwgMTczLCAxMiwgMjI1LCAxNzMsIDY1LCAyMjIsIDE4NCwgMTIsIAotICAgIDI0NSwgMTEwLCAyNTAsIDEwOSwgMTE1LCAyMTksIDY5LCAxMiwgMjQ1LCAxMTAsIDI1MCwgMTA5LCAxMjQsIDIxOSwgNjksIAotICAgIDEyLCAyMjMsIDg1LCAxMjQsIDIxOSwgNzAsIDIsIDI0NCwgNzMsIDI1MCwgMTA4LCAxMiwgMywgMTE1LCAyMzEsIDE0MywgCi0gICAgMTIsIDEsIDI0OCwgMTQxLCAyLCAyMzUsIDE5MSwgMjE1LCA3OSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAyMzUsIDE5MSwgMjE1LCAKLSAgICA3OSwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMjEyLCA3OSwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTE2LCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAxMDksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDE2NiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAKLSAgICAyMSwgMTYzLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxODAsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDE4OSwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMTk4LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxOTUsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDIwMCwgMTIsIDEsIDIyMCwgMjQwLCAyLCA2MiwgNTUsIDEyLCAxLCAyNDgsIDE2MCwgMiwgNjIsIDU1LCAxMiwgMSwgCi0gICAgMjQyLCAyMjEsIDIsIDYyLCA1NSwgMTIsIDUsIDIyMCwgODQsIDI1NCwgMzUsIDEyLCA1LCAyMjAsIDg0LCAyMjUsIDExNSwgCi0gICAgMjMxLCAxMjIsIDEyLCAxLCAyNDEsIDIwMywgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDE3NSwgMjQ1LCAxMDEsIDY1LCAyMjYsIAotICAgIDE0MiwgMTc1LCAyMTgsIDIxOSwgMjQzLCAyMDAsIDIxOSwgNjksIDE3NSwgMjE5LCAxMiwgMjQzLCAyMDAsIDIxOSwgNjksIAotICAgIDE3NSwgMjE4LCAyMTksIDI0OSwgMTY0LCAxNzUsIDIxOSwgMTIsIDI0OSwgMTY0LCAxNzUsIDE5OSwgMjQ5LCAxNjQsIDE3NSwgCi0gICAgMjQ5LCAxNjUsIDIyMCwgMzQsIDIzMywgNzAsIDE3NSwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIyMywgMTQ4LCAxNzUsIDIxOCwgCi0gICAgMjE5LCAyNDksIDE2NSwgMjIwLCAzNCwgMjMzLCA3MCwgMTc1LCAyMTksIDEyLCAyNDksIDE2NSwgMjIwLCAzNCwgMjIzLCAKLSAgICAxNDgsIDE3NSwgMjQ5LCAxMTksIDE3NSwgMjQxLCAyNDAsIDIyNywgMTE0LCAxNzUsIDI0MSwgMjQwLCAyMzEsIDEwMywgCi0gICAgMTc1LCAyNDEsIDI0MCwgMjUzLCAxMzQsIDE3NSwgMjU0LCAxODEsIDc3LCAxNzUsIDEsIDI1NCwgODIsIDE3NSwgMSwgMjE4LCAKLSAgICAyMjMsIDI1NCwgODIsIDE3NSwgMSwgMjUxLCAyMDIsIDE3NSwgMSwgMjQzLCA4OSwgMTc1LCAxLCAyNDMsIDkwLCAyNDMsIAotICAgIDY3LCAxNzUsIDEsIDI0OCwgMTM3LCAxNzUsIDEsIDI0NywgNzMsIDI0OCwgMTM4LCAyMjMsIDEyNiwgMTc1LCAxLCAyNDEsIAotICAgIDIyMiwgMTc1LCAxLCAyMTQsIDE0LCAxNzUsIDEsIDIxMiwgMTAxLCAxNzUsIDEsIDI0MSwgMTgwLCAxNzUsIDEsIDIxNywgCi0gICAgMTc5LCAxNzUsIDEsIDIxNywgMTgwLCAyNDMsIDY3LCAxNzUsIDEsIDIxMiwgMTkwLCAxNzUsIDEsIDIxMiwgMTkxLCAyNDEsIAotICAgIDIyMiwgMTc1LCAxLCAyMzQsIDIzMCwgMTc1LCAxLCAyMzMsIDEyNSwgMTc1LCAxLCAyMzEsIDMsIDE3NSwgMSwgMjI4LCA1MCwgCi0gICAgMTc1LCAxLCAyMjEsIDYzLCAxNzUsIDEsIDQwLCAyMjEsIDYzLCAxNzUsIDEsIDc0LCAxNzUsIDEsIDIyNiwgOTYsIDE3NSwgCi0gICAgMSwgMjIzLCAyMDIsIDIyNiwgOTYsIDE3NSwgMSwgMjIyLCAxOTMsIDE3NSwgMSwgMjI0LCAyMTksIDE3NSwgMSwgMjIzLCAKLSAgICAxMjYsIDE3NSwgMSwgMjIwLCAyMDAsIDE3NSwgMSwgMjE3LCAyNDMsIDE3NSwgMSwgMjI2LCA0NSwgMjUxLCAxOTAsIDE3NSwgCi0gICAgMSwgMjI2LCA0NSwgMjQyLCAyMTgsIDE3NSwgMSwgMjI2LCA0NSwgMjQ3LCAyMjgsIDE3NSwgMjI1LCAzNiwgNDksIDE3NSwgCi0gICAgMjI1LCAzNiwgNTUsIDE3NSwgMjI1LCAzNiwgMjQ2LCA3MSwgMTc1LCAyMTIsIDEwLCA0OSwgMTc1LCAyMTIsIDEwLCA1NSwgCi0gICAgMTc1LCAyMTIsIDEwLCAyNDYsIDcxLCAxNzUsIDIyNCwgMjQsIDQ5LCAxNzUsIDIyNCwgMjQsIDU1LCAxNzUsIDI0NiwgNzIsIAotICAgIDIxMiwgMTcsIDI0MSwgMzEsIDE3NSwgMjQ2LCA3MiwgMjEyLCAxNywgMjU0LCAxNSwgMTc1LCAyNDEsIDIyNSwgNDksIDE3NSwgCi0gICAgMjQxLCAyMjUsIDU1LCAxNzUsIDI0MSwgMjI0LCAyNDYsIDcxLCAxNzUsIDI0NSwgNDMsIDQ5LCAxNzUsIDI0NSwgNDMsIDU1LCAKLSAgICAxNzUsIDIyMywgMTksIDE3NSwgMjQ0LCAxMDUsIDI0NywgNzQsIDE3NSwgMjI0LCAxMzcsIDE3NSwgMjIzLCA0NSwgMTc1LCAKLSAgICAxMTcsIDcxLCAxNzYsIDQ5LCAxNzUsIDExNywgNzEsIDE3NiwgNTUsIDE3NSwgMTMzLCAxNzYsIDQ5LCAxNzUsIDEzMywgCi0gICAgMTc2LCA1NSwgMTc1LCAyMjcsIDExMiwgMjMyLCAyNDMsIDQ5LCAxNzUsIDIyNywgMTEyLCAyMzIsIDI0MywgNTUsIDE3NSwgCi0gICAgMjMwLCAxMjYsIDE3NSwgMjUyLCA1MSwgMTc1LCAxLCAyMTksIDIzMywgMjEyLCA3MywgMTc1LCAxLCAyMTksIDIzMywgMjM0LCAKLSAgICAxMjgsIDE3NSwgMSwgMjE5LCAyMzMsIDI0NCwgMTIzLCAxMiwgMSwgMjUxLCAyMzEsIDIsIDEzMywgMTc2LCAyNDAsIDIzNywgCi0gICAgNTUsIDEyLCAxLCAyNTEsIDIzMSwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjUxLCAyMzEsIAotICAgIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjE1LCAxMjQsIDU1LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDEzMywgMTc2LCAyMjUsIAotICAgIDE0MSwgMjE1LCAxMjQsIDI1MSwgMjIwLCAyNCwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDExNywgMTc2LCAKLSAgICAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAyMzUsIDE5MSwgMywgMjE1LCA4MCwgNTUsIDEyLCAKLSAgICAxLCAyNTEsIDIzMSwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIDEyMSwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMTIxLCAyLCAKLSAgICAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDI0OCwgMTQxLCAyLCAxMTcsIDE3NiwgMjE0LCAxNjYsIAotICAgIDI1MSwgMjIwLCAyNCwgMywgMjE4LCAyOSwgMTIsIDEsIDI0OCwgMTQxLCAyLCAyMzUsIDE5MSwgMywgMjE1LCA4MCwgNTUsIAotICAgIDEyLCAxLCAyMjMsIDI0NiwgMiwgOTAsIDEyLCAxLCAyMjIsIDg2LCAyLCAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDEsIDI1NCwgCi0gICAgMTA0LCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCAKLSAgICA0OSwgMTIsIDEsIDI1NCwgMTA0LCAyLCAxMTcsIDE3NiwgMjE0LCAxNjYsIDQ5LCAxMiwgMSwgMjQ0LCAxMTIsIDIsIDExNywgCi0gICAgMTc2LCA1NSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIAotICAgIDIzNCwgMTgxLCAyLCA2MiwgNDksIDEyLCAxLCAyMzQsIDE4MSwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjM0LCAxODEsIAotICAgIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjE1LCAxMjQsIDU1LCAxMiwgMSwgNjMsIDIsIDYyLCA0OSwgMTIsIDEsIDYzLCAyLCAKLSAgICA2MiwgNTUsIDEyLCAxLCAyMjgsIDE3NCwgMiwgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDMsIDIxOCwgMjksIAotICAgIDEyLCAxLCAyMjgsIDE3NCwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAxMzQsIDEyLCAxLCAyMjMsIDI0NiwgCi0gICAgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDIyMywgMjQ2LCAyLCAxOTIsIDQ5LCAxMiwgMSwgMjIyLCA4NiwgCi0gICAgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDU1LCAxMiwgMSwgCi0gICAgMTIxLCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgMjQsIDExNywgMjQ3LCA3MiwgMTIsIDEsIDIyMiwgODYsIDIsIDMsIDEyLCAxLCAKLSAgICAyMTgsIDMwLCAyNCwgMTE3LCAyNDcsIDcyLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCAyNCwgCi0gICAgMTE3LCAyNDcsIDcyLCAxMiwgMSwgMTIxLCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgNDksIDEyLCAxLCAxMDYsIDIsIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDExNywgNDksIDEyLCAxLCAxMDYsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgCi0gICAgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNywgNDksIDEyLCAxLCAyNDQsIAotICAgIDEzNiwgNzMsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDI0MywgMjM3LCA1NSwgMTIsIDEsIDIxNCwgMTUsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDExNywgNDksIDEyLCAxLCAyMTQsIDE1LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIDQ5LCAxMiwgMSwgCi0gICAgNzMsIDI1MiwgNTMsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNywgNDksIDEyLCAxLCA3MywgMjUyLCA1MywgMiwgCi0gICAgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCA0OSwgMTIsIDEsIDEyMSwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgCi0gICAgMjQzLCAyMzcsIDU1LCAxMiwgMSwgMjIyLCA4NiwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMjQzLCAyMzcsIDQ5LCAKLSAgICAxMiwgMSwgMjIyLCA4NiwgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDEyLCAxLCAyMzQsIDI1NSwgMiwgMTE3LCAxNzYsIDQ5LCAKLSAgICAyMTcsIDE1OCwgMSwgMjQyLCAyNywgMjE3LCAxNTgsIDEsIDIyMCwgMjQ4LCAyMTcsIDE1OCwgMSwgMjI4LCAxNzIsIDIxNywgCi0gICAgMTU4LCAxLCAyMjQsIDc0LCAyMTcsIDE1OCwgMSwgMjUyLCAxMDYsIDIxNywgMTU4LCAxLCAyMzMsIDIyLCAyMTcsIDE1OCwgCi0gICAgMSwgMjM1LCAxMiwgMjE3LCAxNTgsIDEsIDI1NCwgNjgsIDIxNywgMTU4LCAxLCAyMTQsIDI1NSwgMjE3LCAxNTgsIDEsIAotICAgIDIzMSwgMTQyLCAyMTcsIDE1OCwgMSwgMjQ0LCAxNjIsIDIxNywgMTU4LCAxLCAyNDcsIDIzMSwgMjE3LCAxNTgsIDEsIDIxNywgCi0gICAgMTYwLCAyMTcsIDE1OCwgMSwgMjMzLCAxNTMsIDIxNywgMTU4LCAxLCAyNDMsIDEwNiwgMjE3LCAxNTgsIDEsIDI0MiwgMTUzLCAKLSAgICAyMTcsIDE1OCwgMSwgMjIyLCA4NCwgMjE3LCAxNTgsIDEsIDI0OCwgOTQsIDIxNywgMTU4LCAxLCAyMTIsIDkzLCAyMTcsIAotICAgIDE1OCwgMSwgMjE3LCAyNDQsIDIxNywgMTU4LCAxLCAyMTMsIDkxLCAyMTcsIDE1OCwgMSwgMjI2LCAxMDcsIDIxNywgMTU4LCAKLSAgICAxLCAyMzUsIDEyOSwgMjE3LCAxNTgsIDEsIDI1MCwgNzAsIDIxNywgMTU4LCAxLCAyMTYsIDExNCwgMjE3LCAxNTgsIDEsIAotICAgIDI0MSwgMTczLCAyMTcsIDE1OCwgMSwgMjM0LCAxMzcsIDIxNywgMTU4LCAxLCAyMTcsIDE1OSwgMjE3LCAxNTgsIDEsIDIxMiwgCi0gICAgMTA4LCAyMTcsIDE1OCwgMSwgMjIwLCAyMzgsIDIxNywgMTU4LCAxLCAyMjIsIDE5OSwgMjE3LCAxNTgsIDEsIDI0OCwgMTYyLCAKLSAgICAyMTcsIDE1OCwgMSwgMTA4LCAyMTcsIDE1OCwgMSwgMjEyLCAxNiwgMjE3LCAxNTgsIDEsIDI1NCwgMTAxLCAyMTcsIDE1OCwgCi0gICAgMSwgMjQyLCAyMTksIDIxNywgMTU4LCAxLCAyMjQsIDIyOSwgMjE3LCAxNTgsIDEsIDIxNCwgNDcsIDIxNywgMTU4LCAyNTQsIAotICAgIDE4MiwgMjE3LCAxNTgsIDI1NCwgMTk3LCAyMTcsIDE1OCwgMjQwLCAxMDcsIDIxNywgMTU4LCAyNDUsIDE2NCwgMjE3LCAKLSAgICAxNTgsIDIxNSwgMTkxLCAyMTcsIDE1OCwgMjI3LCA0OCwgMjE3LCAxNTgsIDI0NSwgMTcyLCAyMTcsIDE1OCwgMjQ0LCAyNDAsIAotICAgIDIxNywgMTU4LCAyMjcsIDExMSwgMjE3LCAxNTgsIDIyNywgMTE5LCAyMTcsIDE1OCwgMjE4LCAyNDYsIDIxNywgMTU4LCAxLCAKLSAgICAyMzAsIDQzLCAyMjgsIDIyNCwgMjEsIDIxMiwgNzksIDIyOCwgMjI0LCAyMSwgMTE2LCAyMjgsIDIyNCwgMjEsIDEwOSwgCi0gICAgMjI4LCAyMjQsIDIxLCAxNjYsIDIyOCwgMjI0LCAyMSwgMTYzLCAyMjgsIDIyNCwgMjEsIDE4MCwgMjI4LCAyMjQsIDIxLCAKLSAgICAxODksIDIyOCwgMjI0LCAyMSwgMTk4LCAyMjgsIDIyNCwgMjEsIDE5NSwgMjI4LCAyMjQsIDIxLCAyMDAsIDIyOCwgMjI0LCAKLSAgICAxLCA2MSwgMjI4LCAyMjQsIDEsIDI0NSwgMTY1LCAyMjgsIDIyNCwgMSwgNzIsIDIyOCwgMjI0LCAxLCA3NCwgMjI4LCAyMjQsIAotICAgIDEsIDY5LCAyMjgsIDIyNCwgMSwgMjI3LCA0OSwgMjI4LCAyMjQsIDEsIDc1LCAyMjgsIDIyNCwgMSwgMjQ4LCAxNTIsIDIyOCwgCi0gICAgMjI0LCAxLCAyMDQsIDIyOCwgMjI0LCAxLCAyNTIsIDEwNywgMjI4LCAyMjQsIDEsIDE5MywgMjI4LCAyMjQsIDEsIDIxOCwgCi0gICAgNTIsIDIyOCwgMjI0LCAxLCAyMzUsIDEzOSwgMjI4LCAyMjQsIDEsIDI1MCwgOTIsIDIyOCwgMjI0LCAxLCAyNDgsIDE2NCwgCi0gICAgMjI4LCAyMjQsIDEsIDIwMywgMjI4LCAyMjQsIDEsIDIyMywgODEsIDIyOCwgMjI0LCAxLCAyMjIsIDIwMiwgMjI4LCAyMjQsIAotICAgIDEsIDI0MywgNTUsIDIyOCwgMjI0LCAxLCAyNDQsIDE2NCwgMjI4LCAyMjQsIDEsIDE4MSwgMjI4LCAyMjQsIDEsIDIzMywgCi0gICAgMTU3LCAyMjgsIDIyNCwgMSwgMjMwLCA0NiwgMjEzLCAyMTAsIDIyOCwgMjI0LCAxLCAxODgsIDIyOCwgMjI0LCAxLCAyMjgsIAotICAgIDIzLCAyMjgsIDIyNCwgMSwgMjA1LCAyMjgsIDIyNCwgMSwgMTU5LCAyMjgsIDIyNCwgMSwgMjE0LCA0OSwgMjI4LCAyMjQsIAotICAgIDEsIDE4NiwgMjI4LCAyMjQsIDEsIDIyOCwgMjQsIDIxMywgMjEwLCAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjM1LCAxMzksIAotICAgIDIyOCwgMjI0LCAxLCAyMzUsIDY0LCAyNTAsIDkyLCAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjAzLCAyMjgsIDIyNCwgMzcsIAotICAgIDIyMCwgMTc1LCAxMjQsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDIyMCwgMTc1LCAxMTUsIDIxNiwgMjQxLCAyMjgsIDIyNCwgCi0gICAgMzcsIDIyMCwgMTc1LCAyMjMsIDEyNSwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMTg0LCAyNDcsIDI0NSwgMjE2LCAyNDEsIAotICAgIDIyOCwgMjI0LCAzNywgMTg0LCAxMjQsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDE4NCwgMTE1LCAyMTYsIDI0MSwgMjI4LCAKLSAgICAyMjQsIDM3LCAxODQsIDIyMywgMTI1LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAyMzAsIDEzLCA3NywgMjI4LCAyMjQsIAotICAgIDM3LCA1MSwgNjIsIDQ5LCAyMjgsIDIyNCwgMTI0LCAxNjAsIDI1MywgMjI2LCAyMjgsIDIyNCwgMTE1LCAxNjAsIDI1MywgCi0gICAgMjI2LCAyMjgsIDIyNCwgMTYsIDIyNywgNTAsIDI0OCwgMSwgMjI4LCAyMjQsIDE2LCAyNDMsIDU0LCAyMjgsIDIyNCwgMjQ5LCAKLSAgICAxNTcsIDIyOCwgMjI0LCAyNDQsIDI1NCwgNzcsIDIyOCwgMjI0LCAyMzMsIDEzMiwgMjIyLCAxNjcsIDEsIDI1NCwgODQsIAotICAgIDIyMiwgMTY3LCAxLCAyNTEsIDE1MSwgMjIyLCAxNjcsIDEsIDI0MywgODgsIDIyMiwgMTY3LCAxLCAyNDgsIDEzOSwgMjIyLCAKLSAgICAxNjcsIDEsIDIzNSwgMTUwLCAyMjIsIDE2NywgMSwgMjUyLCAxMDYsIDIyMiwgMTY3LCAxLCAyMTIsIDgyLCAyMjIsIDE2NywgCi0gICAgMSwgMjM1LCAxNTgsIDIyMiwgMTY3LCAxLCAyMTcsIDIwLCAyMjIsIDE2NywgMSwgMjEyLCAxNzMsIDIyMiwgMTY3LCAxLCAKLSAgICAyMzUsIDEzLCAyMjIsIDE2NywgMSwgMjMzLCAxNTAsIDIyMiwgMTY3LCAxLCAyMzEsIDMsIDIyMiwgMTY3LCAxLCAyMjgsIAotICAgIDUwLCAyMjIsIDE2NywgMSwgMjIwLCA4MiwgMjIyLCAxNjcsIDEsIDIzNSwgMjUxLCAyMjIsIDE2NywgMSwgMjQ0LCA5MCwgCi0gICAgMjIyLCAxNjcsIDEsIDIxNiwgMTM5LCAyMjIsIDE2NywgMSwgMjI0LCAxNTUsIDIyMiwgMTY3LCAxLCAyMjMsIDEyNiwgMjIyLCAKLSAgICAxNjcsIDEsIDIyMSwgOCwgMjIyLCAxNjcsIDEsIDIxOCwgNDgsIDIyMiwgMTY3LCAxNTIsIDIzNSwgMjUxLCAyMjIsIDE2NywgCi0gICAgMTUyLCAyMzUsIDI1MCwgMjIyLCAxNjcsIDE1MiwgMjI3LCAxMDcsIDIyMiwgMTY3LCAxNTIsIDI0OCwgMTUwLCAyMjIsIAotICAgIDE2NywgNTksIDEsIDI0NSwgNjgsIDIxMiwgMTczLCAyMjIsIDE2NywgMTUyLCAyNDUsIDY4LCAyMTIsIDE3MywgMjIyLCAKLSAgICAxNjcsIDMwLCA1LCAxODQsIDc0LCAyMjIsIDE2NywgMzAsIDUsIDc0LCAyMjIsIDE2NywgMzAsIDUsIDIyNiwgMjQyLCAyNTQsIAotICAgIDIzMiwgMjIyLCAxNjcsIDMwLCA1LCAxODQsIDI1NCwgMjMyLCAyMjIsIDE2NywgMzAsIDUsIDI1NCwgMjMyLCAyMjIsIDE2NywgCi0gICAgMzAsIDUsIDIyNiwgMjQyLCA2MSwgMjIyLCAxNjcsIDMwLCA1LCAxODQsIDYxLCAyMjIsIDE2NywgMzAsIDUsIDYxLCAyMjIsIAotICAgIDE2NywgNTksIDEsIDIyMCwgMTc1LCA2MSwgMjIyLCAxNjcsIDMwLCA1LCAyMjAsIDE3NSwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgCi0gICAgMTg0LCA2OSwgMjIyLCAxNjcsIDMwLCA1LCA2OSwgMjIyLCAxNjcsIDU5LCAxLCA3MiwgMjIyLCAxNjcsIDMwLCA1LCAxODQsIAotICAgIDcyLCAyMjIsIDE2NywgMzAsIDUsIDcyLCAyMjIsIDE2NywgMzAsIDUsIDc1LCAyMjIsIDE2NywgMzAsIDUsIDIxOCwgMjQ2LCAKLSAgICAyMjIsIDE2NywgMTUyLCAyMjksIDE3NCwgMjIyLCAxNjcsIDIyNSwgMjcsIDIyOSwgMTc0LCAyMjIsIDE2NywgMjI1LCAyNywgCi0gICAgMjU0LCAxMjMsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTQsIDIzLCAyMjIsIDE2NywgMjI1LCAyNywgMjUyLCAzNCwgMjIyLCAKLSAgICAxNjcsIDIyNSwgMjcsIDI1MywgMTE3LCAyMjIsIDE2NywgMjI1LCAyNywgMjIwLCAxODgsIDIyMiwgMTY3LCAyNTQsIDE4MSwgCi0gICAgNzcsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMzEsIDEzMiwgMjI0LCAxOTAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTIsIDI0LCAKLSAgICAyMjIsIDE2NywgMjI1LCAyNywgMjI0LCAxOTAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTIsIDEwNywgMjIyLCAxNjcsIDIyNSwgCi0gICAgMjcsIDIxNiwgNTQsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTMsIDE4MCwgMjIyLCAxNjcsIDIyNSwgMjcsIDIxOSwgMjM3LCAKLSAgICAyMzEsIDIwOCwgMjIyLCAxNjcsIDIyNSwgMjcsIDI1NCwgMTEsIDIzMSwgMjQ1LCAxLCAyNDIsIDcsIDIzMSwgMjQ1LCAxLCAKLSAgICAyNTQsIDE4NSwgMjMxLCAyNDUsIDEsIDI1NCwgMTIxLCAyMzEsIDI0NSwgMSwgMjU0LCAxNjAsIDIzMSwgMjQ1LCAxLCAyNTQsIAotICAgIDExNCwgMjMxLCAyNDUsIDEsIDIxNSwgOTgsIDIzMSwgMjQ1LCAxLCAyNTMsIDc2LCAyMzEsIDI0NSwgMSwgMjM1LCAxNTgsIAotICAgIDIzMSwgMjQ1LCAxLCAyNTMsIDExNCwgMjMxLCAyNDUsIDEsIDI1NCwgODksIDIzMSwgMjQ1LCAxLCAyNTQsIDk0LCAyMzEsIAotICAgIDI0NSwgMSwgMjU0LCA4NiwgMjMxLCAyNDUsIDEsIDI1NCwgNDUsIDIzMSwgMjQ1LCAxLCAyNTQsIDMyLCAyMzEsIDI0NSwgMSwgCi0gICAgMjUzLCAxNTIsIDIzMSwgMjQ1LCAxLCAyMzUsIDI1MSwgMjMxLCAyNDUsIDEsIDI1MywgMjM5LCAyMzEsIDI0NSwgMSwgMjUzLCAKLSAgICAxMjQsIDIzMSwgMjQ1LCAxLCAyNTMsIDIxNSwgMjMxLCAyNDUsIDEsIDI1MywgMjExLCAyMzEsIDI0NSwgMSwgMjUzLCAxNDYsIAotICAgIDIzMSwgMjQ1LCAxLCAyNTMsIDEyMiwgMjMxLCAyNDUsIDEsIDI0NiwgMTAsIDIzMSwgMjQ1LCAxLCAyMzUsIDYsIDIzMSwgCi0gICAgMjQ1LCAxLCAyNTQsIDEwMywgMjMxLCAyNDUsIDI1NCwgMTI3LCA3NywgMjMxLCAyNDUsIDIxNCwgMTE3LCA3NywgMjMxLCAKLSAgICAyNDUsIDI0MywgMjksIDc3LCAyMzEsIDI0NSwgMjI1LCAyNiwgODIsIDUsIDIzNSwgMTkxLCAyNTAsIDE4NywgODIsIDUsIAotICAgIDI1MCwgMTg3LCA4MiwgNSwgMjUzLCAyNDIsIDgyLCA1LCAyMTQsIDEyOCwgODIsIDEsIDIyMCwgMTc1LCA2MSwgODIsIDEsIAotICAgIDYxLCA4MiwgMSwgMjU0LCAyMzIsIDgyLCAxLCA3MiwgODIsIDEsIDIzNiwgMjgsIDgyLCAxLCA2OSwgODIsIDEsIDIxNSwgCi0gICAgOTIsIDgyLCAxLCAxNjEsIDE0OSwgODIsIDEsIDE2MSwgMTUwLCA4MiwgMSwgMjUwLCAxOTAsIDc0LCA4MiwgMSwgMjIwLCAKLSAgICAxNzUsIDc0LCA4MiwgMSwgNzQsIDgyLCAxLCAyNTQsIDEwOCwgODIsIDEsIDI1MCwgMTkwLCA3NSwgODIsIDEsIDIyMCwgCi0gICAgMTc1LCA3NSwgODIsIDEsIDc1LCA4MiwgMSwgMjUzLCAxMDgsIDgyLCAxLCAxODEsIDgyLCAxLCAyMzQsIDEzOCwgODIsIDEsIAotICAgIDI0MywgMTEwLCA4MiwgMSwgMjQyLCAyMjUsIDgyLCAxLCAyMjksIDE1OSwgODIsIDEsIDI1MCwgMjE5LCA4MiwgMSwgMjUwLCAKLSAgICA5MiwgODIsIDEsIDIzNSwgMTM5LCA4MiwgMSwgMjM1LCAxMTUsIDgyLCAxLCAyMjgsIDIzLCA4MiwgMSwgMjE2LCAxMTUsIAotICAgIDgyLCAxLCAyMTYsIDEwNSwgODIsIDEsIDI0OCwgODYsIDgyLCAxLCAyNDgsIDcwLCA4MiwgMSwgMjI4LCAxOTgsIDgyLCAxLCAKLSAgICAyMTgsIDUyLCA4MiwgMSwgMjE3LCAxNjEsIDgyLCAxLCAyNDgsIDE2NCwgODIsIDEsIDI0NywgMjMyLCA4MiwgMSwgMjA1LCAKLSAgICA4MiwgMSwgMjI4LCAxODksIDgyLCAxLCAxOTMsIDgyLCAxLCAyMjYsIDIzLCA4MiwgMSwgMjUyLCAxMDcsIDgyLCAxLCAyNTEsIAotICAgIDE5NSwgODIsIDEsIDE4OCwgODIsIDEsIDE4NiwgODIsIDEsIDIwMywgODIsIDEsIDIyMywgODEsIDgyLCAxLCAyMzMsIDE1NywgCi0gICAgODIsIDEsIDIzMiwgMjEzLCA4MiwgMSwgMjMyLCAyMTIsIDgyLCAxLCAyMTUsIDEsIDgyLCAxLCAyMjEsIDI0LCA4MiwgMSwgCi0gICAgMjE5LCAxNTcsIDgyLCAxLCAyMjIsIDIwMiwgODIsIDEsIDE1OSwgODIsIDMwLCA1LCAyMjcsIDk5LCA4MiwgMzAsIDUsIAotICAgIDIyNywgNDcsIDgyLCA1LCAyMjgsIDYwLCA4MiwgNSwgMjUzLCA5MSwgODIsIDMwLCA1LCAyNTQsIDIzMiwgODIsIDMwLCA1LCAKLSAgICA3MiwgODIsIDMwLCA1LCAyMzYsIDI4LCA4MiwgMzAsIDUsIDY5LCA4MiwgMzAsIDUsIDIxNSwgOTIsIDgyLCAzMCwgNSwgCi0gICAgMTYxLCAxNDksIDgyLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCA4MiwgMzAsIDUsIDI1MCwgMTkwLCA3NCwgODIsIDMwLCA1LCAKLSAgICAyMjAsIDE3NSwgNzQsIDgyLCAzMCwgNSwgNzQsIDgyLCAzMCwgNSwgMjU0LCAxMDgsIDgyLCAzMCwgNSwgMjUwLCAxOTAsIAotICAgIDc1LCA4MiwgMzAsIDUsIDIyMCwgMTc1LCA3NSwgODIsIDMwLCA1LCA3NSwgODIsIDMwLCA1LCAyNTMsIDEwOCwgODIsIDUsIAotICAgIDIxNCwgMTMzLCA4MiwgMzAsIDUsIDIyNSwgNjYsIDc0LCA4MiwgMzAsIDUsIDI1MywgODcsIDgyLCAyMjcsIDcwLCA4MiwgCi0gICAgMjE5LCA1MSwgNSwgMjE1LCAxODUsIDgyLCAyMTksIDUxLCA1LCAyNTMsIDI0NCwgODIsIDI0MiwgMTE0LCAyNTQsIDE3NCwgCi0gICAgODIsIDI1NCwgMTY0LCAyNTQsIDE3NCwgODIsIDMwLCA1LCAyNTAsIDE5MCwgMTg0LCA3NCwgODIsIDMwLCA1LCAyMTUsIAotICAgIDE4MywgODIsIDMwLCA1LCAyMTUsIDkxLCA4MiwgMSwgMjI0LCAyMzIsIDgyLCAxLCAyMzQsIDEyMSwgODIsIDEsIDI0MiwgCi0gICAgMjAyLCA4MiwgMSwgMjEyLCAxMDksIDgyLCAxLCAyNDgsIDc1LCA4MiwgMSwgMjIzLCAxOTIsIDgyLCAxLCAyNDQsIDE2NCwgCi0gICAgODIsIDEsIDIxMiwgMTYwLCA4MiwgMSwgMTYxLCAyMjMsIDgyLCA4MiwgMSwgMTYxLCAyMzIsIDIxNCwgODIsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgODIsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCA4MiwgMjQ4LCAxMjMsIDgyLCA1MSwgMjQ4LCAxMjMsIDgyLCAKLSAgICAyMSwgMjEyLCA3OSwgODIsIDIxLCAxMTYsIDgyLCAyMSwgMTA5LCA4MiwgMjEsIDE2NiwgODIsIDIxLCAxNjMsIDgyLCAyMSwgCi0gICAgMTgwLCA4MiwgMjEsIDE4OSwgODIsIDIxLCAxOTgsIDgyLCAyMSwgMTk1LCA4MiwgMjEsIDIwMCwgODIsIDI1NCwgMTgxLCAKLSAgICA1MiwgODIsIDUsIDEyNCwgMjE5LCAyMDUsIDI0NywgNzQsIDgyLCAxLCAyNTAsIDE5MCwgNjEsIDgyLCAxLCAyMjcsIDk5LCAKLSAgICA4MiwgMSwgMjI3LCA0NywgODIsIDEsIDI1MywgODcsIDgyLCAxLCAyMTUsIDE4MywgODIsIDEsIDIxNSwgOTEsIDgyLCAxLCAKLSAgICAyMTIsIDc1LCA4MiwgMSwgMTA3LCAxODYsIDgyLCAxLCAyNDMsIDUsIDgyLCAxLCAyMzUsIDk5LCA4MiwgMSwgMjQyLCAxNTYsIAotICAgIDIxOSwgNjksIDgyLCAxLCAyNDgsIDc2LCA4MiwgMSwgMjUyLCAzMSwgMTQwLCA1LCAyNTAsIDE4NywgMTQwLCA1LCAyNTMsIAotICAgIDI0MiwgMTQwLCA1LCAyMTQsIDEyOCwgMTQwLCAxLCA2MSwgMTQwLCAxLCAyNTQsIDIzMiwgMTQwLCAxLCA3MiwgMTQwLCAxLCAKLSAgICAyMzYsIDI4LCAxNDAsIDEsIDY5LCAxNDAsIDEsIDIxNSwgOTIsIDE0MCwgMSwgMTYxLCAxNDksIDE0MCwgMSwgMTYxLCAxNTAsIAotICAgIDE0MCwgMSwgNzQsIDE0MCwgMSwgMjU0LCAxMDgsIDE0MCwgMSwgNzUsIDE0MCwgMSwgMjUzLCAxMDgsIDE0MCwgMSwgMTgxLCAKLSAgICAxNDAsIDEsIDIzNCwgMTM4LCAxNDAsIDEsIDI0MywgMTEwLCAxNDAsIDEsIDI0MiwgMjI1LCAxNDAsIDEsIDIyOSwgMTU5LCAKLSAgICAxNDAsIDEsIDI1MCwgMjE5LCAxNDAsIDEsIDI1MCwgOTIsIDE0MCwgMSwgMjM1LCAxMzksIDE0MCwgMSwgMjM1LCAxMTUsIAotICAgIDE0MCwgMSwgMjI4LCAyMywgMTQwLCAxLCAyMTYsIDExNSwgMTQwLCAxLCAyMTYsIDEwNSwgMTQwLCAxLCAyNDgsIDg2LCAKLSAgICAxNDAsIDEsIDI0OCwgNzAsIDE0MCwgMSwgMjI4LCAxOTgsIDE0MCwgMSwgMjE4LCA1MiwgMTQwLCAxLCAyMTcsIDE2MSwgCi0gICAgMTQwLCAxLCAyNDgsIDE2NCwgMTQwLCAxLCAyNDcsIDIzMiwgMTQwLCAxLCAyMDUsIDE0MCwgMSwgMTkzLCAxNDAsIDEsIAotICAgIDIyNiwgMjMsIDE0MCwgMSwgMjUyLCAxMDcsIDE0MCwgMSwgMjUxLCAxOTUsIDE0MCwgMSwgMTg4LCAxNDAsIDEsIDE4NiwgCi0gICAgMTQwLCAxLCAyMDMsIDE0MCwgMSwgMjMzLCAxNTcsIDE0MCwgMSwgMjIxLCAyNCwgMTQwLCAxLCAyMTksIDE1NywgMTQwLCAxLCAKLSAgICAyMjIsIDIwMiwgMTQwLCAxLCAxNTksIDE0MCwgNSwgMjI4LCA2MCwgMTQwLCA1LCAyNTMsIDkxLCAxNDAsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMTQwLCAzMCwgNSwgNzIsIDE0MCwgMzAsIDUsIDIzNiwgMjgsIDE0MCwgMzAsIDUsIDY5LCAxNDAsIDMwLCA1LCAKLSAgICAyMTUsIDkyLCAxNDAsIDMwLCA1LCAxNjEsIDE0OSwgMTQwLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNDAsIDMwLCA1LCA3NCwgCi0gICAgMTQwLCAzMCwgNSwgMjU0LCAxMDgsIDE0MCwgMzAsIDUsIDc1LCAxNDAsIDMwLCA1LCAyNTMsIDEwOCwgMTQwLCA1LCAyMTQsIAotICAgIDEzMywgMTQwLCAxLCAyMzQsIDEzMCwgMjE4LCA1MiwgMTQwLCAyNTMsIDEwOSwgMjMzLCA0NywgNzcsIDE0MCwgMSwgMjIzLCAKLSAgICA4MSwgMTQwLCAxLCAyMjMsIDE5MiwgMTQwLCAxLCAyMTIsIDE2MCwgMTQwLCAxLCAxNjEsIDIyMywgODIsIDE0MCwgMSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgMTQwLCAzMCwgNSwgMTYxLCAxNTAsIDE0MCwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDE0MCwgMjEsIAotICAgIDIxMiwgNzksIDE0MCwgMjEsIDExNiwgMTQwLCAyMSwgMTA5LCAxNDAsIDIxLCAxNjYsIDE0MCwgMjEsIDE2MywgMTQwLCAyMSwgCi0gICAgMTgwLCAxNDAsIDIxLCAxODksIDE0MCwgMjEsIDE5OCwgMTQwLCAyMSwgMTk1LCAxNDAsIDIxLCAyMDAsIDE0MCwgMSwgMjI0LCAKLSAgICA3NywgMiwgMjMxLCAzNywgMjQ3LCAyMDYsIDE0MCwgMSwgMjI0LCA3NywgMiwgMjMyLCAxNjMsIDI0NywgMjA2LCAxNDAsIAotICAgIDIyMywgMjksIDc3LCAxNDAsIDIyMywgMjksIDUyLCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDExNiwgMTQwLCAyNDksIDM5LCAKLSAgICAyMjgsIDUzLCAxMDksIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTY2LCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDE2MywgCi0gICAgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxMjIsIDIzMywgNDAsIDIxNywgMTU0LCAyMTcsIDE0OSwgMjQ3LCAyNTUsIDE0MCwgCi0gICAgMjQ5LCAzOSwgMjQ4LCAwLCAyMjAsIDQ3LCAxNDAsIDIzNSwgMTU5LCAxNDAsIDI0MywgNzksIDc3LCAxNzMsIDUsIDI1NCwgCi0gICAgMTU5LCAyNTEsIDE2NiwgMTczLCA1LCAyNTEsIDE2NiwgMTczLCA1LCAyMTQsIDEyOCwgMTczLCAxLCA2MSwgMTczLCAxLCAKLSAgICAyNTQsIDIzMiwgMTczLCAxLCA3MiwgMTczLCAxLCAyMzYsIDI4LCAxNzMsIDEsIDY5LCAxNzMsIDEsIDIxNSwgOTIsIDE3MywgCi0gICAgMSwgMjQ1LCAxNjUsIDE3MywgMSwgMjU0LCAxMDgsIDE3MywgMSwgMjI3LCA0OSwgMTczLCAxLCAyNTMsIDEwOCwgMTczLCAxLCAKLSAgICAxODEsIDE3MywgMSwgMjM0LCAxMzgsIDE3MywgMSwgMjQzLCAxMTAsIDE3MywgMSwgMjQyLCAyMjUsIDE3MywgMSwgMjI5LCAKLSAgICAxNTksIDE3MywgMSwgMjUwLCAyMTksIDE3MywgMSwgMjUwLCA5MiwgMTczLCAxLCAyMzUsIDEzOSwgMTczLCAxLCAyMzUsIAotICAgIDExNSwgMTczLCAxLCAyMjgsIDIzLCAxNzMsIDEsIDIxNiwgMTE1LCAxNzMsIDEsIDIxNiwgMTA1LCAxNzMsIDEsIDI0OCwgCi0gICAgODYsIDE3MywgMSwgMjQ4LCA3MCwgMTczLCAxLCAyMjgsIDE5OCwgMTczLCAxLCAyMTgsIDUyLCAxNzMsIDEsIDIxNywgMTYxLCAKLSAgICAxNzMsIDEsIDI0OCwgMTY0LCAxNzMsIDEsIDI0NywgMjMyLCAxNzMsIDEsIDIwNSwgMTczLCAxLCAxOTMsIDE3MywgMSwgCi0gICAgMjI2LCAyMywgMTczLCAxLCAyNTIsIDEwNywgMTczLCAxLCAyNTEsIDE5NSwgMTczLCAxLCAxODgsIDE3MywgMSwgMTg2LCAKLSAgICAxNzMsIDEsIDIwMywgMTczLCAxLCAyMzMsIDE1NywgMTczLCAxLCAyMzIsIDIxMywgMTczLCAxLCAyMTUsIDEsIDE3MywgMSwgCi0gICAgMjIxLCAyNCwgMTczLCAxLCAyMjIsIDIwMiwgMTczLCAxLCAxNTksIDE3MywgNSwgMjI4LCA2MCwgMTczLCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDE3MywgMzAsIDUsIDcyLCAxNzMsIDMwLCA1LCAyMzYsIDI4LCAxNzMsIDMwLCA1LCA2OSwgMTczLCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMTczLCAzMCwgNSwgMjQ1LCAxNjUsIDE3MywgMzAsIDUsIDI1NCwgMTA4LCAxNzMsIDMwLCA1LCAyMjcsIDQ5LCAKLSAgICAxNzMsIDMwLCA1LCAyNTMsIDEwOCwgMTczLCA1LCAyMTQsIDEzMywgMTczLCA1LCAyMTUsIDE4NywgMTczLCAxLCAyMzQsIAotICAgIDEyMSwgMTczLCAxLCAyNDIsIDIwMiwgMTczLCAxLCAyMTIsIDEwOSwgMTczLCAxLCAyMjMsIDgxLCAxNzMsIDEsIDI0NCwgCi0gICAgMTY0LCAxNzMsIDIxLCAyMTIsIDc5LCAxNzMsIDIxLCAxMTYsIDE3MywgMjEsIDEwOSwgMTczLCAyMSwgMTY2LCAxNzMsIDIxLCAKLSAgICAxNjMsIDE3MywgMjEsIDE4MCwgMTczLCAyMSwgMTg5LCAxNzMsIDIxLCAxOTgsIDE3MywgMjEsIDE5NSwgMTczLCAyMSwgCi0gICAgMjAwLCAxNzMsIDIxNywgMjcsIDE3MywgMjU0LCAxNTgsIDE3MywgMjM1LCAxNzYsIDE3MywgMjE1LCAxMTcsIDE3MywgMjQ1LCAKLSAgICAxMzgsIDIyNywgNTQsIDE3MywgNSwgMjEzLCA2NywgMTY0LCA1LCAyNTAsIDE4NywgMTY0LCA1LCAyNTMsIDI0MiwgMTY0LCAKLSAgICA1LCAyMTQsIDEyOCwgMTY0LCAxLCA2MSwgMTY0LCAxLCAyNTQsIDIzMiwgMTY0LCAxLCA3MiwgMTY0LCAxLCAyMzYsIDI4LCAKLSAgICAxNjQsIDEsIDY5LCAxNjQsIDEsIDIxNSwgOTIsIDE2NCwgMSwgMTYxLCAxNDksIDE2NCwgMSwgMTYxLCAxNTAsIDE2NCwgMzAsIAotICAgIDI1MCwgMTkwLCA3NCwgMTY0LCAxLCA3NCwgMTY0LCAxLCAyNTQsIDEwOCwgMTY0LCAzMCwgMjUwLCAxOTAsIDc1LCAxNjQsIAotICAgIDEsIDc1LCAxNjQsIDEsIDI1MywgMTA4LCAxNjQsIDEsIDE4MSwgMTY0LCAxLCAyMzQsIDEzOCwgMTY0LCAxLCAyNDMsIDExMCwgCi0gICAgMTY0LCAxLCAyNDIsIDIyNSwgMTY0LCAxLCAyMjksIDE1OSwgMTY0LCAxLCAyNTAsIDIxOSwgMTY0LCAxLCAyNTAsIDkyLCAKLSAgICAxNjQsIDEsIDIzNSwgMTM5LCAxNjQsIDEsIDIzNSwgMTE1LCAxNjQsIDEsIDIyOCwgMjMsIDE2NCwgMSwgMjE2LCAxMTUsIAotICAgIDE2NCwgMSwgMjE2LCAxMDUsIDE2NCwgMSwgMjQ4LCA4NiwgMTY0LCAxLCAyNDgsIDcwLCAxNjQsIDEsIDIyOCwgMTk4LCAKLSAgICAxNjQsIDEsIDIxOCwgNTIsIDE2NCwgMSwgMjE3LCAxNjEsIDE2NCwgMSwgMjQ4LCAxNjQsIDE2NCwgMSwgMjQ3LCAyMzIsIAotICAgIDE2NCwgMSwgMjA1LCAxNjQsIDEsIDE5MywgMTY0LCAxLCAyMjYsIDIzLCAxNjQsIDEsIDI1MiwgMTA3LCAxNjQsIDEsIDI1MSwgCi0gICAgMTk1LCAxNjQsIDEsIDE4OCwgMTY0LCAxLCAxODYsIDE2NCwgMSwgMjAzLCAxNjQsIDEsIDIzMywgMTU3LCAxNjQsIDEsIAotICAgIDIzMiwgMjEzLCAxNjQsIDEsIDIxNSwgMSwgMTY0LCAxLCAyMjEsIDI0LCAxNjQsIDEsIDIxOSwgMTU3LCAxNjQsIDEsIDIyMiwgCi0gICAgMjAyLCAxNjQsIDEsIDE1OSwgMTY0LCA1LCAyMjgsIDYwLCAxNjQsIDUsIDI1MywgOTEsIDE2NCwgMzAsIDUsIDI1NCwgMjMyLCAKLSAgICAxNjQsIDMwLCA1LCA3MiwgMTY0LCAzMCwgNSwgMjM2LCAyOCwgMTY0LCAzMCwgNSwgNjksIDE2NCwgMzAsIDUsIDIxNSwgOTIsIAotICAgIDE2NCwgMzAsIDUsIDE2MSwgMTQ5LCAxNjQsIDMwLCA1LCAxNjEsIDIyMywgODIsIDE2NCwgMzAsIDUsIDI1MCwgMTkwLCA3NCwgCi0gICAgMTY0LCAzMCwgNSwgNzQsIDE2NCwgMzAsIDUsIDI1NCwgMTA4LCAxNjQsIDMwLCA1LCAyNTAsIDE5MCwgNzUsIDE2NCwgMzAsIAotICAgIDUsIDc1LCAxNjQsIDMwLCA1LCAyNTMsIDEwOCwgMTY0LCA1LCAyMTQsIDEzMywgMTY0LCAyMjcsIDcwLCAxNjQsIDEsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTY0LCAxLCAxNjEsIDIzMiwgMjE0LCAxNjQsIDMwLCA1LCAxNjEsIDE1MCwgMTY0LCAzMCwgNSwgMTYxLCAKLSAgICAyMzIsIDIxNCwgMTY0LCAyMSwgMjEyLCA3OSwgMTY0LCAyMSwgMTE2LCAxNjQsIDIxLCAxMDksIDE2NCwgMjEsIDE2NiwgCi0gICAgMTY0LCAyMSwgMTYzLCAxNjQsIDIxLCAxODAsIDE2NCwgMjEsIDE4OSwgMTY0LCAyMSwgMTk4LCAxNjQsIDIxLCAxOTUsIAotICAgIDE2NCwgMjEsIDIwMCwgMTY0LCAyMjMsIDI5LCA1MiwgMTQ3LCA1LCAyNTAsIDE4NywgMTQ3LCA1LCAyNTMsIDI0MiwgMTQ3LCAKLSAgICA1LCAyMTQsIDEyOCwgMTQ3LCAxLCA2MSwgMTQ3LCAxLCAyNTQsIDIzMiwgMTQ3LCAxLCA3MiwgMTQ3LCAxLCAyMzYsIDI4LCAKLSAgICAxNDcsIDEsIDY5LCAxNDcsIDEsIDIxNSwgOTIsIDE0NywgMSwgMTYxLCAxNDksIDE0NywgMSwgMTYxLCAxNTAsIDE0NywgMSwgCi0gICAgNzQsIDE0NywgMSwgMjU0LCAxMDgsIDE0NywgMSwgNzUsIDE0NywgMSwgMjUzLCAxMDgsIDE0NywgMSwgMTgxLCAxNDcsIDEsIAotICAgIDIzNCwgMTM4LCAxNDcsIDEsIDI0MywgMTEwLCAxNDcsIDEsIDI0MiwgMjI1LCAxNDcsIDEsIDIyOSwgMTU5LCAxNDcsIDEsIAotICAgIDI1MCwgMjE5LCAxNDcsIDEsIDI1MCwgOTIsIDE0NywgMSwgMjM1LCAxMzksIDE0NywgMSwgMjM1LCAxMTUsIDE0NywgMSwgCi0gICAgMjI4LCAyMywgMTQ3LCAxLCAyMTYsIDExNSwgMTQ3LCAxLCAyMTYsIDEwNSwgMTQ3LCAxLCAyNDgsIDg2LCAxNDcsIDEsIAotICAgIDI0OCwgNzAsIDE0NywgMSwgMjI4LCAxOTgsIDE0NywgMSwgMjE4LCA1MiwgMTQ3LCAxLCAyMTcsIDE2MSwgMTQ3LCAxLCAKLSAgICAyNDgsIDE2NCwgMTQ3LCAxLCAyNDcsIDIzMiwgMTQ3LCAxLCAyMDUsIDE0NywgMSwgMTkzLCAxNDcsIDEsIDIyNiwgMjMsIAotICAgIDE0NywgMSwgMjUyLCAxMDcsIDE0NywgMSwgMjUxLCAxOTUsIDE0NywgMSwgMTg4LCAxNDcsIDEsIDE4NiwgMTQ3LCAxLCAKLSAgICAyMDMsIDE0NywgMSwgMjMzLCAxNTcsIDE0NywgMSwgMjMyLCAyMTMsIDE0NywgMSwgMjE1LCAxLCAxNDcsIDEsIDIyMSwgMjQsIAotICAgIDE0NywgMSwgMjE5LCAxNTcsIDE0NywgMSwgMjIyLCAyMDIsIDE0NywgMSwgMTU5LCAxNDcsIDUsIDIyOCwgNjAsIDE0NywgNSwgCi0gICAgMjUzLCA5MSwgMTQ3LCAzMCwgNSwgMjU0LCAyMzIsIDE0NywgMzAsIDUsIDcyLCAxNDcsIDMwLCA1LCAyMzYsIDI4LCAxNDcsIAotICAgIDMwLCA1LCA2OSwgMTQ3LCAzMCwgNSwgMjE1LCA5MiwgMTQ3LCAzMCwgNSwgMTYxLCAxNDksIDE0NywgMzAsIDUsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTQ3LCAzMCwgNSwgNzQsIDE0NywgMzAsIDUsIDI1NCwgMTA4LCAxNDcsIDMwLCA1LCA3NSwgMTQ3LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDE0NywgNSwgMjE0LCAxMzMsIDE0NywgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxNDcsIDI1MywgMTA5LCAKLSAgICAyMzMsIDQ3LCA3NywgMTQ3LCAxLCAyMjMsIDgxLCAxNDcsIDEsIDIyMywgMTkyLCAxNDcsIDEsIDIxMiwgMTYwLCAxNDcsIDEsIAotICAgIDE2MSwgMjIzLCA4MiwgMTQ3LCAxLCAxNjEsIDIzMiwgMjE0LCAxNDcsIDMwLCA1LCAxNjEsIDE1MCwgMTQ3LCAzMCwgNSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgMTQ3LCAyMSwgMjEyLCA3OSwgMTQ3LCAyMSwgMTE2LCAxNDcsIDIxLCAxMDksIDE0NywgMjEsIAotICAgIDE2NiwgMTQ3LCAyMSwgMTYzLCAxNDcsIDIxLCAxODAsIDE0NywgMjEsIDE4OSwgMTQ3LCAyMSwgMTk4LCAxNDcsIDIxLCAKLSAgICAxOTUsIDE0NywgMjEsIDIwMCwgMTQ3LCAyMzUsIDE1OSwgMTQ3LCAxLCAyMTQsIDQ5LCAxNDcsIDI0MywgMjI4LCAxMjIsIAotICAgIDIyNCwgMTY2LCAxNDcsIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgMTQ3LCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMTQ3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyMjAsIDQ1LCAxNDcsIDI0MywgMjI4LCAxMjIsIDI0NSwgMTQ1LCAxNDcsIDI0MywgMjI4LCAxMzMsIAotICAgIDIyMCwgNDQsIDE3OCwgNSwgMjUzLCAyNDIsIDE3OCwgNSwgMjE0LCAxMjgsIDE3OCwgMSwgNjEsIDE3OCwgMSwgMjU0LCAKLSAgICAyMzIsIDE3OCwgMSwgNzIsIDE3OCwgMSwgMjM2LCAyOCwgMTc4LCAxLCA2OSwgMTc4LCAxLCAyMTUsIDkyLCAxNzgsIDEsIAotICAgIDc0LCAxNzgsIDEsIDI0NSwgMTY1LCAxNzgsIDEsIDI1NCwgMTA4LCAxNzgsIDEsIDc1LCAxNzgsIDEsIDIyNywgNDksIDE3OCwgCi0gICAgMSwgMjUzLCAxMDgsIDE3OCwgMSwgMTgxLCAxNzgsIDEsIDIyOSwgMTU5LCAxNzgsIDEsIDI1MCwgMjE5LCAxNzgsIDEsIAotICAgIDIzNSwgMTM5LCAxNzgsIDEsIDIyOCwgMjMsIDE3OCwgMSwgMjE2LCAxMTUsIDE3OCwgMSwgMjI4LCAxOTgsIDE3OCwgMSwgCi0gICAgMjE4LCA1MiwgMTc4LCAxLCAyMDUsIDE3OCwgMSwgMjI4LCAxODksIDE3OCwgMSwgMTkzLCAxNzgsIDEsIDE4OCwgMTc4LCAxLCAKLSAgICAxODYsIDE3OCwgMSwgMjAzLCAxNzgsIDEsIDIyMywgODEsIDE3OCwgMSwgMjMzLCAxNTcsIDE3OCwgMSwgMjMyLCAyMTMsIAotICAgIDE3OCwgMSwgMjMyLCAyMTIsIDE3OCwgMSwgMjE1LCAxLCAxNzgsIDEsIDIyMSwgMjQsIDE3OCwgMSwgMjE5LCAxNTcsIDE3OCwgCi0gICAgMSwgMjIyLCAyMDIsIDE3OCwgMSwgMTU5LCAxNzgsIDMwLCA1LCAyNTQsIDIzMiwgMTc4LCAzMCwgNSwgNzIsIDE3OCwgMzAsIAotICAgIDUsIDIzNiwgMjgsIDE3OCwgMzAsIDUsIDY5LCAxNzgsIDMwLCA1LCAyMTUsIDkyLCAxNzgsIDMwLCA1LCA3NCwgMTc4LCAzMCwgCi0gICAgNSwgMjQ1LCAxNjUsIDE3OCwgMzAsIDUsIDI1NCwgMTA4LCAxNzgsIDMwLCA1LCA3NSwgMTc4LCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTc4LCAzMCwgNSwgMjUzLCAxMDgsIDE3OCwgNSwgMjE0LCAxMzMsIDE3OCwgMjI3LCA3MCwgMTc4LCAyNTMsIDEwOSwgMjMzLCAKLSAgICA0NywgNzcsIDE3OCwgMjEsIDIxMiwgNzksIDE3OCwgMjEsIDExNiwgMTc4LCAyMSwgMTA5LCAxNzgsIDIxLCAxNjYsIDE3OCwgCi0gICAgMjEsIDE2MywgMTc4LCAyMSwgMTgwLCAxNzgsIDIxLCAxODksIDE3OCwgMjEsIDE5OCwgMTc4LCAyMSwgMTk1LCAxNzgsIDIxLCAKLSAgICAyMDAsIDE3OCwgNTAsIDIxNywgMjAwLCAxNzgsIDUwLCAxMjIsIDI0MCwgMjAwLCAxNzgsIDUwLCAxMjIsIDIxNywgMTAwLCAKLSAgICAxNzgsIDI0OCwgOTIsIDUyLCAxNzgsIDIzMCwgMjA1LCA1MiwgMTc4LCAyMTMsIDM2LCA1MiwgMTc4LCAyNDgsIDM4LCA1MiwgCi0gICAgMTc4LCAyNDksIDc5LCA1MiwgMTc4LCAyNTMsIDE1MywgNzgsIDUyLCAxNzgsIDIyMywgMjksIDUyLCAxNzgsIDUwLCA1MiwgCi0gICAgMTM5LCA1LCAyNTAsIDE4NywgMTM5LCA1LCAyNTMsIDI0MiwgMTM5LCA1LCAyMTQsIDEyOCwgMTM5LCAxLCA2MSwgMTM5LCAxLCAKLSAgICAyNTQsIDIzMiwgMTM5LCAxLCA3MiwgMTM5LCAxLCAyMzYsIDI4LCAxMzksIDEsIDY5LCAxMzksIDEsIDIxNSwgOTIsIDEzOSwgCi0gICAgMSwgMTYxLCAxNDksIDEzOSwgMSwgMTYxLCAxNTAsIDEzOSwgMSwgNzQsIDEzOSwgMSwgMjQ1LCAxNjUsIDEzOSwgMSwgMjU0LCAKLSAgICAxMDgsIDEzOSwgMSwgNzUsIDEzOSwgMSwgMjI3LCA0OSwgMTM5LCAxLCAyNTMsIDEwOCwgMTM5LCAxLCAxODEsIDEzOSwgMSwgCi0gICAgMjM0LCAxMzgsIDEzOSwgMSwgMjQzLCAxMTAsIDEzOSwgMSwgMjQyLCAyMjUsIDEzOSwgMSwgMjI5LCAxNTksIDEzOSwgMSwgCi0gICAgMjUwLCAyMTksIDEzOSwgMSwgMjUwLCA5MiwgMTM5LCAxLCAyMzUsIDEzOSwgMTM5LCAxLCAyMzUsIDExNSwgMTM5LCAxLCAKLSAgICAyMjgsIDIzLCAxMzksIDEsIDIxNiwgMTE1LCAxMzksIDEsIDIxNiwgMTA1LCAxMzksIDEsIDI0OCwgODYsIDEzOSwgMSwgCi0gICAgMjQ4LCA3MCwgMTM5LCAxLCAyMjgsIDE5OCwgMTM5LCAxLCAyMTgsIDUyLCAxMzksIDEsIDIxNywgMTYxLCAxMzksIDEsIAotICAgIDI0OCwgMTY0LCAxMzksIDEsIDI0NywgMjMyLCAxMzksIDEsIDIwNSwgMTM5LCAxLCAxOTMsIDEzOSwgMSwgMjI2LCAyMywgCi0gICAgMTM5LCAxLCAyNTIsIDEwNywgMTM5LCAxLCAyNTEsIDE5NSwgMTM5LCAxLCAxODgsIDEzOSwgMSwgMTg2LCAxMzksIDEsIAotICAgIDIwMywgMTM5LCAxLCAyMjMsIDgxLCAxMzksIDEsIDIzMywgMTU3LCAxMzksIDEsIDIzMiwgMjEzLCAxMzksIDEsIDIxNSwgMSwgCi0gICAgMTM5LCAxLCAyMjEsIDI0LCAxMzksIDEsIDIxOSwgMTU3LCAxMzksIDEsIDIyMiwgMjAyLCAxMzksIDEsIDE1OSwgMTM5LCA1LCAKLSAgICAyNTMsIDkxLCAxMzksIDMwLCA1LCAyNTQsIDIzMiwgMTM5LCAzMCwgNSwgNzIsIDEzOSwgMzAsIDUsIDIzNiwgMjgsIDEzOSwgCi0gICAgMzAsIDUsIDY5LCAxMzksIDMwLCA1LCAyMTUsIDkyLCAxMzksIDMwLCA1LCAxNjEsIDE0OSwgMTM5LCAzMCwgNSwgMTYxLCAKLSAgICAyMjMsIDgyLCAxMzksIDMwLCA1LCA3NCwgMTM5LCAzMCwgNSwgMjQ1LCAxNjUsIDEzOSwgMzAsIDUsIDI1NCwgMTA4LCAxMzksIAotICAgIDMwLCA1LCA3NSwgMTM5LCAzMCwgNSwgMjI3LCA0OSwgMTM5LCAzMCwgNSwgMjUzLCAxMDgsIDEzOSwgNSwgMjE0LCAxMzMsIAotICAgIDEzOSwgMjMzLCA0NywgNzcsIDEzOSwgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxMzksIDEsIDIxNiwgMTQxLCAxMzksIDEsIAotICAgIDI0NSwgMjQ5LCAxMzksIDEsIDE2MSwgMjIzLCA4MiwgMTM5LCAxLCAxNjEsIDIzMiwgMjE0LCAxMzksIDMwLCA1LCAxNjEsIAotICAgIDE1MCwgMTM5LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTM5LCAyMSwgMjEyLCA3OSwgMTM5LCAyMSwgMTE2LCAxMzksIDIxLCAKLSAgICAxMDksIDEzOSwgMjEsIDE2NiwgMTM5LCAyMSwgMTYzLCAxMzksIDIxLCAxODAsIDEzOSwgMjEsIDE4OSwgMTM5LCAyMSwgCi0gICAgMTk4LCAxMzksIDIxLCAxOTUsIDEzOSwgMjEsIDIwMCwgMTM5LCAyNDMsIDIyOCwgMjEsIDIxMiwgODAsIDMxLCAyMjcsIAotICAgIDEwMiwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMjIsIDMxLCAyMjcsIDEwMiwgMjI1LCAxMDMsIAotICAgIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMTcsIDMxLCAyMjcsIDEwMiwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgCi0gICAgMjQzLCAyMjgsIDIxLCAxMzMsIDMxLCAyMjcsIDEwMiwgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAKLSAgICAxMjIsIDMxLCAyNDUsIDksIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTE3LCAzMSwgMjQ1LCA5LCAKLSAgICAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDEzMywgMzEsIDI0NSwgOSwgMjI1LCAxMDMsIDY1LCAxNjMsIAotICAgIDEzOSwgNSwgMjE2LCA0OSwgMTU1LCA1LCAyNTMsIDI0MiwgMTU1LCA1LCAyMTQsIDEyOCwgMTU1LCAxLCA2MSwgMTU1LCAxLCAKLSAgICAyNTQsIDIzMiwgMTU1LCAxLCA3MiwgMTU1LCAxLCAyMzYsIDI4LCAxNTUsIDEsIDY5LCAxNTUsIDEsIDIxNSwgOTIsIDE1NSwgCi0gICAgMSwgMTYxLCAxNDksIDE1NSwgMSwgMTYxLCAxNTAsIDE1NSwgMSwgNzQsIDE1NSwgMSwgMjQ1LCAxNjUsIDE1NSwgMSwgMjU0LCAKLSAgICAxMDgsIDE1NSwgMSwgNzUsIDE1NSwgMSwgMjI3LCA0OSwgMTU1LCAxLCAyNTMsIDEwOCwgMTU1LCAxLCAxODEsIDE1NSwgMSwgCi0gICAgMjM0LCAxMzgsIDE1NSwgMSwgMjQzLCAxMTAsIDE1NSwgMSwgMjQyLCAyMjUsIDE1NSwgMSwgMjI5LCAxNTksIDE1NSwgMSwgCi0gICAgMjUwLCAyMTksIDE1NSwgMSwgMjUwLCA5MiwgMTU1LCAxLCAyMzUsIDEzOSwgMTU1LCAxLCAyMzUsIDExNSwgMTU1LCAxLCAKLSAgICAyMjgsIDIzLCAxNTUsIDEsIDIxNiwgMTE1LCAxNTUsIDEsIDIxNiwgMTA1LCAxNTUsIDEsIDI0OCwgODYsIDE1NSwgMSwgCi0gICAgMjQ4LCA3MCwgMTU1LCAxLCAyMjgsIDE5OCwgMTU1LCAxLCAyMTgsIDUyLCAxNTUsIDEsIDIxNywgMTYxLCAxNTUsIDEsIAotICAgIDI0OCwgMTY0LCAxNTUsIDEsIDI0NywgMjMyLCAxNTUsIDEsIDIwNSwgMTU1LCAxLCAxOTMsIDE1NSwgMSwgMjI2LCAyMywgCi0gICAgMTU1LCAxLCAyNTIsIDEwNywgMTU1LCAxLCAyNTEsIDE5NSwgMTU1LCAxLCAxODgsIDE1NSwgMSwgMTg2LCAxNTUsIDEsIAotICAgIDIwMywgMTU1LCAxLCAyMjMsIDgxLCAxNTUsIDEsIDIzMywgMTU3LCAxNTUsIDEsIDIzMiwgMjEzLCAxNTUsIDEsIDIxNSwgMSwgCi0gICAgMTU1LCAxLCAyMjEsIDI0LCAxNTUsIDEsIDIxOSwgMTU3LCAxNTUsIDEsIDIyMiwgMjAyLCAxNTUsIDEsIDE1OSwgMTU1LCA1LCAKLSAgICAyMjgsIDYwLCAxNTUsIDUsIDI1MywgOTEsIDE1NSwgMzAsIDUsIDI1NCwgMjMyLCAxNTUsIDMwLCA1LCA3MiwgMTU1LCAzMCwgCi0gICAgNSwgMjM2LCAyOCwgMTU1LCAzMCwgNSwgNjksIDE1NSwgMzAsIDUsIDIxNSwgOTIsIDE1NSwgMzAsIDUsIDE2MSwgMTQ5LCAKLSAgICAxNTUsIDMwLCA1LCAxNjEsIDIyMywgODIsIDE1NSwgMzAsIDUsIDc0LCAxNTUsIDMwLCA1LCAyNDUsIDE2NSwgMTU1LCAzMCwgCi0gICAgNSwgMjU0LCAxMDgsIDE1NSwgMzAsIDUsIDc1LCAxNTUsIDMwLCA1LCAyMjcsIDQ5LCAxNTUsIDMwLCA1LCAyNTMsIDEwOCwgCi0gICAgMTU1LCA1LCAyMTQsIDEzMywgMTU1LCAyMzMsIDQ3LCA3NywgMTU1LCAyNTQsIDEwOSwgMjMzLCA0NywgNzcsIDE1NSwgMSwgCi0gICAgMjQ0LCAxNjQsIDE1NSwgMSwgMTYxLCAyMjMsIDgyLCAxNTUsIDEsIDE2MSwgMjMyLCAyMTQsIDE1NSwgMzAsIDUsIDE2MSwgCi0gICAgMTUwLCAxNTUsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNTUsIDIxLCAyMTIsIDc5LCAxNTUsIDIxLCAxMTYsIDE1NSwgMjEsIAotICAgIDEwOSwgMTU1LCAyMSwgMTY2LCAxNTUsIDIxLCAxNjMsIDE1NSwgMjEsIDE4MCwgMTU1LCAyMSwgMTg5LCAxNTUsIDIxLCAKLSAgICAxOTgsIDE1NSwgMjEsIDE5NSwgMTU1LCAyMSwgMjAwLCAxNTUsIDUsIDIzNSwgMTA0LCAxNTUsIDUsIDIxNSwgMTMyLCAxMzAsIAotICAgIDUsIDI1MywgMjQyLCAxMzAsIDUsIDIxNCwgMTI4LCAxMzAsIDEsIDYxLCAxMzAsIDEsIDI1NCwgMjMyLCAxMzAsIDEsIDcyLCAKLSAgICAxMzAsIDEsIDIzNiwgMjgsIDEzMCwgMSwgNjksIDEzMCwgMSwgMjE1LCA5MiwgMTMwLCAxLCAxNjEsIDE0OSwgMTMwLCAxLCAKLSAgICAxNjEsIDE1MCwgMTMwLCAxLCA3NCwgMTMwLCAxLCAyNDUsIDE2NSwgMTMwLCAxLCAyNTQsIDEwOCwgMTMwLCAxLCA3NSwgCi0gICAgMTMwLCAxLCAyMjcsIDQ5LCAxMzAsIDEsIDI1MywgMTA4LCAxMzAsIDEsIDE4MSwgMTMwLCAxLCAyMzQsIDEzOCwgMTMwLCAxLCAKLSAgICAyNDMsIDExMCwgMTMwLCAxLCAyNDIsIDIyNSwgMTMwLCAxLCAyMjksIDE1OSwgMTMwLCAxLCAyNTAsIDIxOSwgMTMwLCAxLCAKLSAgICAyNTAsIDkyLCAxMzAsIDEsIDIzNSwgMTM5LCAxMzAsIDEsIDIzNSwgMTE1LCAxMzAsIDEsIDIyOCwgMjMsIDEzMCwgMSwgCi0gICAgMjE2LCAxMTUsIDEzMCwgMSwgMjE2LCAxMDUsIDEzMCwgMSwgMjQ4LCA4NiwgMTMwLCAxLCAyNDgsIDcwLCAxMzAsIDEsIAotICAgIDIyOCwgMTk4LCAxMzAsIDEsIDIxOCwgNTIsIDEzMCwgMSwgMjE3LCAxNjEsIDEzMCwgMSwgMjQ4LCAxNjQsIDEzMCwgMSwgCi0gICAgMjQ3LCAyMzIsIDEzMCwgMSwgMjA1LCAxMzAsIDEsIDIyOCwgMTg5LCAxMzAsIDEsIDE5MywgMTMwLCAxLCAyMjYsIDIzLCAKLSAgICAxMzAsIDEsIDI1MiwgMTA3LCAxMzAsIDEsIDI1MSwgMTk1LCAxMzAsIDEsIDE4OCwgMTMwLCAxLCAxODYsIDEzMCwgMSwgCi0gICAgMjAzLCAxMzAsIDEsIDIyMywgODEsIDEzMCwgMSwgMjMzLCAxNTcsIDEzMCwgMSwgMjMyLCAyMTMsIDEzMCwgMSwgMjMyLCAKLSAgICAyMTIsIDEzMCwgMSwgMjE1LCAxLCAxMzAsIDEsIDIyMSwgMjQsIDEzMCwgMSwgMjE5LCAxNTcsIDEzMCwgMSwgMjIyLCAyMDIsIAotICAgIDEzMCwgMSwgMTU5LCAxMzAsIDEsIDIxNiwgODgsIDEzMCwgNSwgMjUzLCA5MSwgMTMwLCAzMCwgNSwgMjU0LCAyMzIsIDEzMCwgCi0gICAgMzAsIDUsIDcyLCAxMzAsIDMwLCA1LCAyMzYsIDI4LCAxMzAsIDMwLCA1LCA2OSwgMTMwLCAzMCwgNSwgMjE1LCA5MiwgMTMwLCAKLSAgICAzMCwgNSwgMTYxLCAxNDksIDEzMCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTMwLCAzMCwgNSwgNzQsIDEzMCwgMzAsIDUsIAotICAgIDI0NSwgMTY1LCAxMzAsIDMwLCA1LCAyNTQsIDEwOCwgMTMwLCAzMCwgNSwgNzUsIDEzMCwgMzAsIDUsIDIyNywgNDksIDEzMCwgCi0gICAgMzAsIDUsIDI1MywgMTA4LCAxMzAsIDUsIDIxNCwgMTMzLCAxMzAsIDEsIDYyLCAyMjMsIDIyNSwgMTMwLCAyNTMsIDEwOSwgCi0gICAgMjMzLCA0NywgNzcsIDEzMCwgMSwgMTYxLCAyMjMsIDgyLCAxMzAsIDEsIDE2MSwgMjMyLCAyMTQsIDEzMCwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCAxMzAsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxMzAsIDIxLCAyMTIsIDc5LCAxMzAsIDIxLCAxMTYsIDEzMCwgCi0gICAgMjEsIDEwOSwgMTMwLCAyMSwgMTY2LCAxMzAsIDIxLCAxNjMsIDEzMCwgMjEsIDE4MCwgMTMwLCAyMSwgMTg5LCAxMzAsIDIxLCAKLSAgICAxOTgsIDEzMCwgMjEsIDE5NSwgMTMwLCAyMSwgMjAwLCAxMzAsIDUwLCAyMTcsIDIwMCwgMTMwLCA1MCwgMTIyLCAyNDAsIAotICAgIDIwMCwgMTMwLCA1MCwgMTIyLCAyMTcsIDEwMCwgMTMwLCAyNDMsIDIyOCwgMTIyLCAyMjQsIDE2NiwgMTMwLCAyNDMsIDIyOCwgCi0gICAgMTIyLCAyNDIsIDksIDEzMCwgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDEzMCwgMjQ4LCA5NiwgNzcsIDEzMCwgMSwgMjUwLCAKLSAgICAzNiwgMjI4LCAxOTksIDEzMCwgMSwgMjUwLCAzNiwgMjA0LCAxMzAsIDEsIDI1MCwgMzYsIDIyMywgODIsIDEzMCwgMSwgCi0gICAgMjUwLCAzNiwgMTUwLCAxMzAsIDEsIDI1MCwgMzYsIDIzMiwgMjE0LCAxMzAsIDEsIDI1MCwgMzYsIDIzNSwgMjcsIDE3MiwgCi0gICAgNSwgMjUzLCAyNDEsIDE3MiwgNSwgMjE0LCAxMjcsIDE3MiwgMSwgMjUzLCA4MSwgMTcyLCAxLCAyNTQsIDE4NywgMTcyLCAxLCAKLSAgICAyNTQsIDEyOCwgMTcyLCAxLCAyNTQsIDE0MywgMTcyLCAxLCAyMzUsIDE0OSwgMTcyLCAxLCAyMzYsIDI3LCAxNzIsIDEsIAotICAgIDIxNSwgODQsIDE3MiwgMSwgMjE1LCA4NiwgMTcyLCAxLCAyMzUsIDE3MSwgMTcyLCAxLCAyMzUsIDE3MiwgMTcyLCAxLCAKLSAgICAyMzYsIDEzLCAxNzIsIDEsIDIzNiwgMTUsIDE3MiwgMSwgMjQ0LCAyNDEsIDE3MiwgMSwgMjQ1LCAxNjEsIDE3MiwgMSwgCi0gICAgMjU0LCA5NiwgMTcyLCAxLCAyMjYsIDIzMiwgMTcyLCAxLCAyMjcsIDQzLCAxNzIsIDEsIDI1MywgOTQsIDE3MiwgMSwgMjU0LCAKLSAgICA1NSwgMjM0LCAxOTMsIDE3MiwgMSwgMjMyLCAxNCwgMjM0LCAxOTMsIDE3MiwgMSwgMjU0LCA1NSwgMjQzLCA1OCwgMTcyLCAKLSAgICAxLCAyMzIsIDE0LCAyNDMsIDU4LCAxNzIsIDEsIDIzNCwgMjM0LCAyMzAsIDQwLCAxNzIsIDEsIDIyMiwgMTUyLCAyNDMsIAotICAgIDU4LCAxNzIsIDEsIDI1NCwgNTUsIDI1MCwgMTQ5LCAxNzIsIDEsIDIzMiwgMTQsIDI1MCwgMTQ5LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIzNSwgMTI4LCAxNzIsIDEsIDIzMiwgMTQsIDIzNSwgMTI4LCAxNzIsIDEsIDIxOCwgNDYsIDIzMCwgNDAsIDE3MiwgCi0gICAgMSwgMjE4LCA0NiwgMjIyLCAxNTEsIDIzMCwgNDEsIDE3MiwgMSwgMjIyLCAxNTIsIDIzNSwgMTI4LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIxNiwgMTEzLCAxNzIsIDEsIDIzMiwgMTQsIDIxNiwgMTEzLCAxNzIsIDEsIDI1NCwgNTUsIDI0OCwgNzcsIDE3MiwgCi0gICAgMSwgMjMyLCAxNCwgMjQ4LCA3NywgMTcyLCAxLCAyMzAsIDEyNCwgMjMwLCAyLCAxNzIsIDEsIDIyMiwgMTUyLCAyNDgsIDc3LCAKLSAgICAxNzIsIDEsIDI1NCwgNTUsIDIxNywgMjM3LCAxNzIsIDEsIDIzMiwgMTQsIDIxNywgMjM3LCAxNzIsIDEsIDI1NCwgNTUsIAotICAgIDI0OCwgOTAsIDE3MiwgMSwgMjMyLCAxNCwgMjQ4LCA5MCwgMTcyLCAxLCAyNDgsIDExOSwgMjMwLCAyLCAxNzIsIDEsIDIyMiwgCi0gICAgMTUyLCAyNDgsIDkwLCAxNzIsIDEsIDI1NCwgNTUsIDIyNiwgMTAyLCAxNzIsIDEsIDIzMiwgMTQsIDIyNiwgMTAyLCAxNzIsIAotICAgIDEsIDI1NCwgNTUsIDI1MiwgMzIsIDE3MiwgMSwgMjMyLCAxNCwgMjUyLCAzMiwgMTcyLCAxLCAyMzEsIDE5NSwgMTcyLCAxLCAKLSAgICAyNTQsIDQwLCAyNTIsIDMyLCAxNzIsIDEsIDIxMywgNDIsIDE3MiwgMSwgMjI0LCAyNiwgMTcyLCAxLCAyNDgsIDExOSwgCi0gICAgMjMzLCA5MSwgMTcyLCAxLCAyMTQsIDIzNCwgMTcyLCAxLCAyMTgsIDQ2LCAyMjIsIDEyOCwgMTcyLCAxLCAyMzAsIDEyNCwgCi0gICAgMjIyLCAxMjgsIDE3MiwgMSwgMjQ4LCAxMTksIDIyMiwgMTI4LCAxNzIsIDEsIDI0MSwgMjI2LCAxNzIsIDEsIDIzMCwgMTI0LCAKLSAgICAyMzMsIDkxLCAxNzIsIDEsIDI0NCwgMTI1LCAxNzIsIDUsIDI1NCwgODUsIDE3MiwgMzAsIDUsIDI1NCwgMTM4LCAxNzIsIAotICAgIDMwLCA1LCAyMzQsIDE2MSwgMjU0LCAxNDUsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNTQsIDE0NSwgMTcyLCAzMCwgNSwgCi0gICAgMjM0LCAxNjEsIDIzNSwgMTY4LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjM1LCAxNjgsIDE3MiwgMzAsIDUsIDIzNCwgMTYxLCAKLSAgICAyMjYsIDIxMiwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIyNiwgMjEyLCAxNzIsIDMwLCA1LCAyNDMsIDk5LCAxNzIsIDMwLCAKLSAgICA1LCAyMzQsIDI0LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjM0LCAyNCwgMTcyLCAzMCwgNSwgMjM0LCAyNiwgMjQ4LCAxOCwgCi0gICAgMTcyLCAzMCwgNSwgMjM0LCAyNSwgMjQyLCAyOCwgMjU0LCAxMzgsIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIAotICAgIDI0NywgMTgwLCAyNTQsIDEzOCwgMTcyLCAzMCwgNSwgMjM0LCAyNSwgMjQyLCAyOCwgMjQzLCA1NywgMTcyLCAzMCwgNSwgCi0gICAgMjQzLCA1NywgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDI0MywgOTksIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNDMsIDU3LCAKLSAgICAxNzIsIDIyNSwgMjcsIDIzMywgMjI4LCAxNTQsIDEzNywgMjM0LCAzOCwgMjM0LCAyNTAsIDE1NCwgMTM3LCAyMzQsIDExNCwgCi0gICAgMjM0LCAxMzQsIDE1NCwgMTM3LCAyMzQsIDExNCwgMjM0LCAxMDcsIDE1NCwgMTM3LCAyMzQsIDExNCwgMjM0LCAxMDQsIAotICAgIDE1NCwgMTM3LCAyMzQsIDExNCwgMjM0LCAxMTEsIDE1NCwgMTM3LCAyMzQsIDExNCwgMjI0LCA0NiwgMTU0LCAxMzcsIDIyOSwgCi0gICAgOTEsIDIyOSwgNzgsIDE1NCwgMTM3LCAyNTAsIDI0LCAyNTAsIDgzLCAxNTQsIDEzNywgMjUwLCAyNCwgMjUwLCAzMiwgMTU0LCAKLSAgICAxMzcsIDI1MCwgMjQsIDI1MCwgODIsIDE1NCwgMTM3LCAyMTksIDI0MywgMjE5LCAyNDIsIDE1NCwgMTM3LCAyNTAsIDI0LCAKLSAgICAyNTAsIDIwLCAxNTQsIDEzNywgMjEyLCAyMzYsIDIxMiwgMjQzLCAxNTQsIDEzNywgMjQ3LCAxMDAsIDI1MCwgODksIDE1NCwgCi0gICAgMTM3LCAyMTEsIDIxMSwgMjI2LCAxMTEsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjE3LCAxNTMsIDE1NCwgMTM3LCAyMTcsIAotICAgIDExMCwgMjMwLCAyMSwgMTU0LCAxMzcsIDIxNywgMTEwLCAyMjUsIDI0MywgMTU0LCAxMzcsIDIyOCwgMTg2LCAyMjksIDE4MCwgCi0gICAgMTU0LCAxMzcsIDI0NywgMTAwLCAyNDgsIDE5LCAxNTQsIDEzNywgMjExLCAyMTEsIDIxOCwgNiwgMTU0LCAxMzcsIDIxNywgCi0gICAgMTEwLCAyMTcsIDg1LCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTU3LCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTA3LCAKLSAgICAxNTQsIDEzNywgMjI4LCAxODYsIDIyOCwgOTIsIDE1NCwgMTM3LCAyNTEsIDEyOSwgMjUyLCA4MywgMTU0LCAxMzcsIDIyNSwgCi0gICAgMTUxLCAyMjUsIDE3NCwgMTU0LCAxMzcsIDIyNSwgMjU0LCAyMjUsIDI0NSwgMTU0LCAxMzcsIDI0NCwgMTMsIDI0NCwgMTY0LCAKLSAgICAxNTQsIDEzNywgMjI1LCAyNTQsIDIyNiwgMTcsIDE1NCwgMTM3LCAyNDQsIDEzLCAyNDQsIDE0MSwgMTU0LCAxMzcsIDIyNSwgCi0gICAgMjU0LCAyMjIsIDE2MiwgMTU0LCAxMzcsIDIzMCwgMjMyLCAxODgsIDE1NCwgMTM3LCAyMTIsIDIzNiwgMjEzLCA2OCwgMTU0LCAKLSAgICAxMzcsIDIyMywgMTEzLCAyMjMsIDUwLCAxNTQsIDEzNywgMjIzLCA1MSwgMTU0LCAxMzcsIDIzMiwgMjA5LCAyMzIsIDIzNSwgCi0gICAgMTU0LCAxMzcsIDIzMiwgMTU2LCAxNTQsIDEzNywgMjEzLCAyMTUsIDIxNCwgNDUsIDE1NCwgMTM3LCAyMTksIDI0MywgMjIyLCAKLSAgICAxNzcsIDE1NCwgMTM3LCAyMTksIDI0MywgMjIzLCAyNSwgMTU0LCAxMzcsIDIxOSwgMjQzLCAyMTksIDI2LCAxNTQsIDEzNywgCi0gICAgMjQxLCA1NSwgMjQxLCAxNDUsIDE1NCwgMTM3LCAyMzIsIDIwOSwgMjUwLCA1LCAxNTQsIDEzNywgMTU3LCAyNTQsIDI0LCAKLSAgICAxNTQsIDEzNywgMjQxLCA1NSwgMjI4LCAxODEsIDE1NCwgMTM3LCAyMjYsIDE5NSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCA2MSwgCi0gICAgMTU0LCAxMzcsIDIzMiwgOSwgMjQyLCAwLCAxNTQsIDEzNywgMjIyLCAxNDYsIDI1NCwgMjMyLCAxNTQsIDEzNywgMjIyLCAKLSAgICAxNDYsIDI1NCwgNDUsIDE1NCwgMTM3LCAyMjIsIDE0NiwgNzIsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjM2LCAyOCwgMTU0LCAKLSAgICAxMzcsIDIyMiwgMTQ2LCAyMTUsIDE4MywgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyMTUsIDE4MSwgMTU0LCAxMzcsIDIyMiwgCi0gICAgMTQ2LCA2OSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyMTUsIDkyLCAxNTQsIDEzNywgMjI2LCAwLCAxNTQsIDI0OSwgMzksIDE2LCAKLSAgICAyNTIsIDg0LCAxNTQsIDEzNywgMjIyLCAxNDYsIDc0LCAxNTQsIDEzNywgMjIyLCAxNDYsIDI1NCwgMTQ4LCAxNTQsIDEzNywgCi0gICAgMjIyLCAxNDYsIDc1LCAxNTQsIDEzNywgMjIyLCAxNDYsIDI1NCwgMTA5LCAyMzIsIDQsIDE1NCwgMTM3LCAyMjIsIDE0NiwgCi0gICAgMjU0LCAxMDksIDIzMiwgNSwgMTU0LCAxMzcsIDIzMywgMTMwLCAxNTQsIDEzNywgMjMyLCAxLCAxNTQsIDEzNywgMjMyLCAyLCAKLSAgICAxNTQsIDEzNywgMjMyLCA5LCAyNDUsIDEzNywgMTU0LCAxMzcsIDIzMiwgOSwgMjE3LCAxMDksIDE1NCwgMTM3LCAyMzIsIDksIAotICAgIDIxNiwgMTg2LCAxNTQsIDEzNywgMjMyLCA5LCAyNTAsIDcxLCAxNTQsIDEzNywgMjE3LCAxNTEsIDE1NCwgMTM3LCAyMjksIAotICAgIDM2LCAxNTQsIDEzNywgMjEzLCA2MiwgMTU0LCAxMzcsIDI0NCwgNCwgMTU0LCAyMSwgMjEyLCA3OSwgMTU0LCAyMSwgMTE2LCAKLSAgICAxNTQsIDIxLCAxMDksIDE1NCwgMjEsIDE2NiwgMTU0LCAyMSwgMTYzLCAxNTQsIDIxLCAxODAsIDE1NCwgMjEsIDE4OSwgCi0gICAgMTU0LCAyMSwgMTk4LCAxNTQsIDIxLCAxOTUsIDE1NCwgMjEsIDIwMCwgMTU0LCAxMzcsIDI1NCwgMjAsIDE1NCwgMTM3LCAKLSAgICAyMzQsIDExMiwgMjMzLCAxMTIsIDEsIDIzNCwgMzcsIDIzMywgMTEyLCAxLCAyMzQsIDExNCwgMjE4LCAyMzUsIDIzMywgCi0gICAgMTEyLCAxLCAyMzQsIDExNCwgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDIyOSwgOTAsIDIzMywgMTEyLCAxLCAyNDksIDE3NSwgCi0gICAgMjMzLCAxMTIsIDEsIDIxOSwgMjQzLCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjI3LCAyNTMsIDIzMywgMTEyLCAxLCAyNDcsIAotICAgIDk5LCAyMzMsIDExMiwgMSwgMTA4LCAyMzMsIDExMiwgMSwgMjE3LCAxMTAsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgMjE3LCAKLSAgICAxMTAsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyMjgsIDE4NSwgMjMzLCAxMTIsIDEsIDI1MSwgMTI4LCAyMzMsIDExMiwgMSwgCi0gICAgMjI1LCAxNTAsIDIzMywgMTEyLCAxLCAyMjUsIDI1NCwgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCAyNDQsIDEzLCAyMTgsIDEzLCAKLSAgICAyMzMsIDExMiwgMSwgMjI1LCAyNTQsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyNDQsIDEzLCAyMTgsIDIzNSwgMjMzLCAxMTIsIAotICAgIDEsIDIzMCwgMjMxLCAyMzMsIDExMiwgMSwgMjEyLCAyMzUsIDIzMywgMTEyLCAxLCAyMzIsIDIwOSwgMjMyLCAyMzUsIDIzMywgCi0gICAgMTEyLCAxLCAyMzIsIDIwOSwgMjMyLCAxNzYsIDIzMywgMTEyLCAxLCAyMTMsIDIxNCwgMjMzLCAxMTIsIDEsIDIxOSwgMjQzLCAKLSAgICAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDI0MSwgNTUsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgNzUsIDIzMywgMTEyLCAxLCAKLSAgICAyNDEsIDU1LCAyMTgsIDEzLCAyMzMsIDExMiwgMjQ1LCAxMjAsIDIzMywgMTEyLCAzMCwgNSwgNjEsIDIzMywgMTEyLCAzMCwgCi0gICAgNSwgMjMyLCA5LCAyMzQsIDIzOSwgMjMzLCAxMTIsIDMwLCA1LCAyNTQsIDIzMiwgMjMzLCAxMTIsIDMwLCA1LCAyNTQsIDQ1LCAKLSAgICAyMzMsIDExMiwgMzAsIDUsIDcyLCAyMzMsIDExMiwgMzAsIDUsIDIzNiwgMjgsIDIzMywgMTEyLCAzMCwgNSwgMjEzLCAxMDUsIAotICAgIDIzMywgMTEyLCAzMCwgNSwgMjEyLCAxNjEsIDIzMywgMTEyLCAzMCwgNSwgNjksIDIzMywgMTEyLCAzMCwgNSwgMjE1LCA5MiwgCi0gICAgMjMzLCAxMTIsIDMwLCA1LCAyMzIsIDksIDIzNCwgMjIsIDIzMywgMTEyLCAyMjEsIDY1LCA1LCAyMzIsIDIwOCwgMjMzLCAKLSAgICAxMTIsIDIyMSwgNjUsIDUsIDIyNywgMjUzLCAyMzMsIDExMiwgMzAsIDUsIDc0LCAyMzMsIDExMiwgMzAsIDUsIDI0NSwgCi0gICAgMTUyLCAyMzMsIDExMiwgMzAsIDUsIDc1LCAyMzMsIDExMiwgMzAsIDUsIDI1MywgODMsIDIzMywgMTEyLCAzMCwgNSwgMjU0LCAKLSAgICAxMDgsIDIzMywgMTEyLCAyMzQsIDM4LCAyMzMsIDE1NywgMjMzLCAxMTIsIDE2MCwgMjMyLCA5LCAyNDUsIDEzNywgMjMzLCAKLSAgICAxMTIsIDE2MCwgMjMyLCA5LCAyMTcsIDEwOSwgMjMzLCAxMTIsIDE2MCwgMjMyLCA5LCAyMTcsIDcxLCAyMzMsIDExMiwgCi0gICAgMTYwLCAyMzIsIDksIDI1MCwgMTU1LCAyMzMsIDExMiwgMjUwLCAxOTIsIDc3LCAyMzMsIDExMiwgMjI5LCA0NSwgMjMzLCAKLSAgICAxMTIsIDIxLCAyMTIsIDc5LCAyMzMsIDExMiwgMjEsIDExNiwgMjMzLCAxMTIsIDIxLCAxMDksIDIzMywgMTEyLCAyMSwgCi0gICAgMTY2LCAyMzMsIDExMiwgMjEsIDE2MywgMjMzLCAxMTIsIDIxLCAxODAsIDIzMywgMTEyLCAyMSwgMTg5LCAyMzMsIDExMiwgCi0gICAgMjEsIDE5OCwgMjMzLCAxMTIsIDIxLCAxOTUsIDIzMywgMTEyLCAyMSwgMjAwLCAyMzMsIDExMiwgMjQxLCA1NSwgMjI4LCAKLSAgICAxODUsIDIzMywgMTEyLCAyNDEsIDU1LCAyMzAsIDIzMSwgNjAsIDQsIDIyNywgNzAsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgCi0gICAgMjQ3LCAyMzEsIDU5LCAyMTYsIDE0NywgNjEsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyNTUsIDYyLCAKLSAgICAyMjMsIDExNywgMjUxLCAyNTMsIDE4OCwgNjAsIDE1MiwgMjQyLCA5NCwgMjEyLCAyNDcsIDIzMSwgNTksIDI1NSwgNjIsIAotICAgIDI0MiwgOTQsIDIxNiwgMTMxLCAxODgsIDYwLCAxNTIsIDcwLCAyMTIsIDI0NywgMjMxLCA1OSwgMjMxLCAxNTgsIDE4OCwgCi0gICAgNjAsIDE1MiwgMjQ5LCAxODksIDIxMiwgMjQ3LCAyMzEsIDU5LCAyMjEsIDMwLCAxODgsIDYwLCAxNTIsIDI1MCwgMTcxLCAKLSAgICAyMTIsIDI0NywgMjMxLCA1OSwgMjI1LCAyNDQsIDIyMSwgMTgsIDE4OCwgNjAsIDE1MiwgMjEyLCAyNDcsIDIzMSwgNTksIAotICAgIDIxNiwgMTMxLCAyMjEsIDE4LCAxODgsIDYwLCAxNTIsIDIyMiwgMTI2LCAyMjEsIDE3LCA2MCwgMTUyLCAyNTEsIDU3LCAKLSAgICAyMTIsIDI0NywgMjMxLCA1OCwgNjAsIDE1MiwgMjUxLCAxNDYsIDIyMCwgMTgzLCAyMTIsIDI0NywgMjMxLCA1OCwgNjAsIAotICAgIDE1MiwgMjM1LCAxOTQsIDIxNiwgMTMwLCA2MCwgMTUyLCAyNDgsIDEyLCAyMTYsIDEzMSwgMjUxLCA1NiwgNjAsIDE1MiwgCi0gICAgMjIxLCAxNywgNjAsIDE1MiwgMjI4LCAyLCAyMjEsIDE3LCA2MCwgMTUyLCAyMTYsIDEzMSwgMjIxLCAxNywgNjAsIDE1MiwgCi0gICAgMjI4LCAyLCAyMTYsIDEzMSwgMjIxLCAxNywgNjAsIDE1MiwgMjIzLCAxMzMsIDI1MCwgNTksIDIxOSwgMTY4LCAyMjEsIDE3LCAKLSAgICA2MCwgMTUyLCAyMjMsIDE5NSwgMjQyLCAxMjIsIDIyMSwgMTcsIDYwLCAxNTIsIDI1MCwgMTcxLCAyNTUsIDY2LCAyMjMsIAotICAgIDU1LCAyMzEsIDE1NywgMTg0LCAyNTAsIDE5NSwgNjAsIDE1MiwgMjQyLCA5NCwgMjE2LCAxMzAsIDYwLCAyMzIsIDE5NywgNSwgCi0gICAgMjUwLCA5MCwgMjIzLCA1NCwgNjAsIDIzMiwgMTk3LCA1LCAyMzMsIDIzLCAyMjMsIDU0LCA2MCwgMjUzLCAxMjgsIDUsIAotICAgIDIyMSwgMjcsIDI0MywgNDEsIDI1NSwgNjcsIDIyMywgNTQsIDYwLCAyNTMsIDEyOCwgNSwgMjU1LCA2NCwgMTkzLCA2MCwgCi0gICAgMjUzLCAxMjgsIDUsIDIyMiwgMTAxLCAyMTYsIDEyNiwgNjAsIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDMsIDQwLCA2MCwgCi0gICAgNSwgMjI0LCAyMywgMjQ3LCAxMTEsIDI0MiwgMTUyLCA2MCwgNSwgMjI0LCAyMywgMjQ3LCAxMTEsIDI0MiwgOTUsIDYwLCA1LCAKLSAgICAyMjQsIDIzLCAyMzAsIDM3LCAyNDMsIDQwLCA2MCwgNSwgMjI0LCAyMywgMjMwLCAzNywgMjQyLCAxNTIsIDYwLCA1LCAyMjQsIAotICAgIDIzLCAyNDcsIDExMSwgMjI0LCAyMywgMjMwLCAzNiwgNjAsIDIxLCAyMTIsIDc5LCA2MCwgMjEsIDExNiwgNjAsIDIxLCAKLSAgICAxMDksIDYwLCAyMSwgMTY2LCA2MCwgMjEsIDE2MywgNjAsIDIxLCAxODAsIDYwLCAyMSwgMTg5LCA2MCwgMjEsIDE5OCwgNjAsIAotICAgIDIxLCAxOTUsIDYwLCAyMSwgMjAwLCA2MCwgMjEsIDE1MSwgMTE2LCA2MCwgMjEsIDE1MSwgMTA5LCA2MCwgMjEsIDE1MSwgCi0gICAgMTY2LCA2MCwgMjEsIDE1MSwgMTYzLCA2MCwgMjEsIDE1MSwgMTgwLCA2MCwgMjEsIDE1MSwgMTg5LCA2MCwgMjEsIDE1MSwgCi0gICAgMTk4LCA2MCwgMjEsIDE1MSwgMTk1LCA2MCwgMjEsIDE1MSwgMjAwLCA2MCwgMjEsIDE1MSwgMjEyLCA3OSwgNjAsIDE1MiwgCi0gICAgMjUxLCA1OSwgMjIzLCA1NCwgNjAsIDE1MiwgMjI5LCAxNTEsIDI1MCwgMjU0LCAyMjgsIDExLCAyMTIsIDE4LCA2MCwgMTUyLCAKLSAgICAyNTAsIDE3MSwgMjU1LCA2NiwgMjIzLCA1NSwgMjUwLCAyNTUsIDIzMSwgMTUsIDI1MCwgMTk1LCA2MCwgMTUyLCAyMjksIAotICAgIDE1MSwgMjUwLCAyNTQsIDIyMSwgMjgsIDIyMywgNTQsIDYwLCAxNTIsIDI1MCwgNjgsIDIzMSwgNTgsIDYwLCAxNTIsIDIxNiwgCi0gICAgMTQyLCAyNTUsIDYzLCA2MCwgMTUyLCAyNDIsIDgxLCAyMjMsIDU1LCAyNDIsIDQ0LCA2MCwgMTUyLCAyNDIsIDgxLCAyMjMsIAotICAgIDU1LCAyNDIsIDUwLCA2MCwgMTUyLCAyNTQsIDI1LCAyMzQsIDEyOSwgMjQyLCA0NCwgNjAsIDE1MiwgMjU0LCAyNSwgMjM0LCAKLSAgICAxMjksIDI0MiwgNTAsIDYwLCA1LCAyMTMsIDU1LCAyMTYsIDEyOSwgNjAsIDUsIDIzMSwgMjMwLCAyMTYsIDEyOSwgNjAsIDEsIAotICAgIDE4MSwgNjAsIDEsIDIzNCwgMTM4LCA2MCwgMSwgMjQzLCAxMTAsIDYwLCAxLCAyNDIsIDIyNSwgNjAsIDEsIDIyOSwgMTU5LCAKLSAgICA2MCwgMSwgMjUwLCAyMTksIDYwLCAxLCAyNTAsIDkyLCA2MCwgMSwgMjM1LCAxMzksIDYwLCAxLCAyMjgsIDIzLCA2MCwgMSwgCi0gICAgMjE2LCAxMTUsIDYwLCAxLCAyMTYsIDEwNSwgNjAsIDEsIDI0OCwgODYsIDYwLCAxLCAyNDgsIDcwLCA2MCwgMSwgMjI4LCAKLSAgICAxOTgsIDYwLCAxLCAyMTgsIDUyLCA2MCwgMSwgMjE3LCAxNjEsIDYwLCAxLCAyNDgsIDE2NCwgNjAsIDEsIDI0NywgMjMyLCAKLSAgICA2MCwgMSwgMjA1LCA2MCwgMSwgMTkzLCA2MCwgMSwgMjI2LCAyMywgNjAsIDEsIDI1MiwgMTA3LCA2MCwgMSwgMjUxLCAxOTUsIAotICAgIDYwLCAxLCAxODgsIDYwLCAxLCAyMTYsIDE0MSwgNjAsIDEsIDIxNiwgMTMzLCA2MCwgMSwgMjQ1LCAyNDksIDYwLCAxLCAKLSAgICAyNDUsIDI0NCwgNjAsIDEsIDIxNCwgNDksIDYwLCAxLCAyMTIsIDc1LCA2MCwgMSwgMjEyLCAxMDksIDYwLCAxLCAyNTUsIAotICAgIDY5LCA2MCwgMSwgMTg2LCA2MCwgMSwgMjAzLCA2MCwgMSwgMjMzLCAxNTcsIDYwLCAxLCAyMjEsIDI0LCA2MCwgMSwgMjE5LCAKLSAgICAxNTcsIDYwLCAxLCAyMjIsIDIwMiwgNjAsIDEsIDE1OSwgNjAsIDEsIDYxLCA2MCwgMSwgMjMzLCAyNDEsIDYwLCAxLCAyNDQsIAotICAgIDQ2LCAyMDMsIDYwLCAxLCAyMzQsIDU1LCA2MCwgMSwgMjIzLCA4MSwgNjAsIDMwLCA1LCAyNTQsIDIzMiwgNjAsIDMwLCA1LCAKLSAgICA3MiwgNjAsIDMwLCA1LCAyMzYsIDI4LCA2MCwgMzAsIDUsIDY5LCA2MCwgMzAsIDUsIDIxNSwgOTIsIDYwLCAzMCwgNSwgCi0gICAgMTYxLCAxNDksIDYwLCAzMCwgNSwgMTYxLCAyMjMsIDgyLCA2MCwgMzAsIDUsIDE2MSwgMTUwLCA2MCwgMzAsIDUsIDE2MSwgCi0gICAgMjMyLCAyMTQsIDYwLCAzMCwgNSwgNzQsIDYwLCAzMCwgNSwgMjQ1LCAxNjUsIDYwLCAzMCwgNSwgNzUsIDYwLCAzMCwgNSwgCi0gICAgMjI3LCA0OSwgNjAsIDUsIDIyMywgMTE4LCAyMTksIDI4LCAyMjksIDE2MCwgMjIzLCAxMTIsIDYwLCA1LCAyMjMsIDExNywgCi0gICAgMjUxLCAyNTIsIDYwLCAzMCwgNSwgMjIzLCAyMDIsIDcyLCA2MCwgMzAsIDUsIDIyMywgMjAyLCAyMzYsIDI4LCA2MCwgNSwgCi0gICAgMjI4LCAxMSwgMjEyLCAxOSwgMjMwLCA0NCwgMjQ4LCAxNjQsIDYwLCA1LCAyMTksIDI1NSwgMjMzLCA4NCwgNjAsIDE1MiwgCi0gICAgMjQyLCAxMSwgNjAsIDE1MiwgMjI2LCAxODQsIDYwLCA1LCAyMzMsIDg3LCAyMjMsIDU0LCA2MCwgNSwgMjEzLCA1OSwgMjIzLCAKLSAgICA1NCwgNjAsIDUsIDIzMywgODgsIDIxNiwgMTQyLCAyNTAsIDE5NSwgNjAsIDUsIDIzMSwgMTU5LCAyNTAsIDE5NSwgNjAsIDUsIAotICAgIDI0MiwgOTcsIDI1MCwgMTk2LCAyMjMsIDE5MywgNjAsIDUsIDI0MiwgOTcsIDIzMSwgMTUwLCAyMjMsIDE5MywgNjAsIDUsIAotICAgIDIzNSwgMTkxLCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCAyMTksIDE4LCA1LCAyMzMsIDg4LCAyMTYsIDE0MiwgMjUwLCAKLSAgICAxOTUsIDYwLCAyMTksIDE4LCA1LCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCAyMTksIDE4LCA1LCAyMzUsIDE5MSwgMjMxLCAKLSAgICAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgMSwgMTgxLCA2MCwgMjE5LCAxOCwgMSwgMjM0LCAxMzgsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyNDMsIDExMCwgNjAsIDIxOSwgMTgsIDEsIDI0MiwgMjI1LCA2MCwgMjE5LCAxOCwgMSwgMjI5LCAxNTksIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyNTAsIDIxOSwgNjAsIDIxOSwgMTgsIDEsIDI1MCwgOTIsIDYwLCAyMTksIDE4LCAxLCAyMzUsIDEzOSwgCi0gICAgNjAsIDIxOSwgMTgsIDEsIDIyOCwgMjMsIDYwLCAyMTksIDE4LCAxLCAyMTYsIDExNSwgNjAsIDIxOSwgMTgsIDEsIDIxNiwgCi0gICAgMTA1LCA2MCwgMjE5LCAxOCwgMSwgMjQ4LCA4NiwgNjAsIDIxOSwgMTgsIDEsIDI0OCwgNzAsIDYwLCAyMTksIDE4LCAxLCAKLSAgICAyMjgsIDE5OCwgNjAsIDIxOSwgMTgsIDEsIDIxOCwgNTIsIDYwLCAyMTksIDE4LCAxLCAyMTcsIDE2MSwgNjAsIDIxOSwgMTgsIAotICAgIDEsIDI0OCwgMTY0LCA2MCwgMjE5LCAxOCwgMSwgMjQ3LCAyMzIsIDYwLCAyMTksIDE4LCAxLCAyMDUsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAxOTMsIDYwLCAyMTksIDE4LCAxLCAyMjYsIDIzLCA2MCwgMjE5LCAxOCwgMSwgMjUyLCAxMDcsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAyNTEsIDE5NSwgNjAsIDIxOSwgMTgsIDEsIDE4OCwgNjAsIDIxOSwgMTgsIDEsIDIxNiwgMTQxLCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMjE2LCAxMzMsIDYwLCAyMTksIDE4LCAxLCAyNDUsIDI0OSwgNjAsIDIxOSwgMTgsIDEsIDI0NSwgMjQ0LCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjE0LCA0OSwgNjAsIDIxOSwgMTgsIDEsIDIxMiwgNzUsIDYwLCAyMTksIDE4LCAxLCAyMTIsIDEwOSwgNjAsIAotICAgIDIxOSwgMTgsIDEsIDI1NSwgNjksIDYwLCAyMTksIDE4LCAxLCAxODYsIDYwLCAyMTksIDE4LCAxLCAyMDMsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyMzMsIDE1NywgNjAsIDIxOSwgMTgsIDEsIDIyMSwgMjQsIDYwLCAyMTksIDE4LCAxLCAyMTksIDE1NywgNjAsIAotICAgIDIxOSwgMTgsIDEsIDIyMiwgMjAyLCA2MCwgMjE5LCAxOCwgMSwgMTU5LCA2MCwgMjE5LCAxOCwgMSwgNjEsIDYwLCAyMTksIAotICAgIDE4LCAxLCAyMzMsIDI0MSwgNjAsIDIxOSwgMTgsIDEsIDI0NCwgNDYsIDIxNCwgNDksIDYwLCAyMTksIDE4LCAxLCAyNDQsIAotICAgIDQ2LCAxODYsIDYwLCAyMTksIDE4LCAxLCAyNDQsIDQ2LCAyMDMsIDYwLCAyMzMsIDIzOSwgMjIzLCA1MiwgMjM0LCAxMzgsIAotICAgIDYwLCAyMzMsIDIzOSwgMjIzLCA1MiwgMjM0LCAxMzksIDI1MCwgMjU1LCAyMzEsIDE1LCAyNTAsIDE5NSwgNjAsIDI1MCwgCi0gICAgMTg0LCA1LCAxMDcsIDI1MSwgMjQ2LCA2MCwgMjUwLCAxODQsIDUsIDE3NywgMjUxLCAyNDYsIDYwLCAyNTAsIDE4NCwgNSwgCi0gICAgMjUwLCAxODUsIDIxNywgMjI4LCA2MCwgMjUwLCAxODQsIDUsIDIyMiwgMTI1LCAyNTUsIDY4LCA2MCwgMTYsIDI0NiwgNDYsIAotICAgIDI1MSwgNTQsIDYwLCAxNiwgMjI0LCAyMiwgMjIzLCAxMTksIDYwLCAxNiwgMjI2LCAyMDIsIDI0MywgMzksIDYwLCAxNiwgCi0gICAgMjI0LCAyMiwgMjIzLCAxMjAsIDIyMywgMTk1LCAyNDIsIDEyMSwgNjAsIDE2LCAyMjUsIDI0NCwgMTkzLCA2MCwgMTYsIAotICAgIDIyOCwgMTcwLCAyNTEsIDU0LCA2MCwgMTYsIDIyOCwgMTcwLCAyNTEsIDU1LCAyMjgsIDIsIDI1NSwgNjUsIDYwLCAxNiwgCi0gICAgMjI4LCAxNzAsIDI1MSwgNTUsIDI0MiwgOTYsIDI1NSwgNjUsIDYwLCAxNiwgMjI4LCAxNzAsIDI1MSwgNTUsIDI1MCwgMjU1LCAKLSAgICAyNTUsIDY1LCA2MCwgNSwgMjI0LCAyMywgMjMwLCAzNywgMjI0LCAyMywgMjQ3LCAxMTAsIDYwLCA1LCAyMjQsIDIzLCAyMzAsIAotICAgIDM3LCAyNDIsIDk1LCA2MCwgMTUyLCAyNTEsIDU4LCAyMjAsIDE4MywgMjQyLCAxOTEsIDIzMSwgNTksIDIyMywgMTk0LCA2MCwgCi0gICAgMTUyLCAyMzAsIDIzMywgMjEyLCAyNDcsIDI0MiwgMTkxLCAyMzEsIDU5LCAyMjMsIDE5NCwgNjAsIDE1MiwgMjI4LCAyLCAKLSAgICAyMTYsIDEzMCwgNjAsIDE1MiwgNzAsIDI1MSwgNzksIDIyMywgMTE0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjMxLCAxNTgsIAotICAgIDE4OCwgNjAsIDE1MiwgMjQ5LCAxODksIDI1MSwgNzksIDIyMywgMTE0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjIxLCAzMCwgCi0gICAgMTg4LCAyMjMsIDE0NywgMjE4LCAyMDAsIDUyLCAyMzMsIDY5LCAyMTgsIDIwMCwgNTIsIDIyMywgMTQ3LCAyMTgsIDIwMCwgCi0gICAgNSwgMiwgMjQ3LCA3MiwgMjMzLCA2OSwgMjE4LCAyMDAsIDUsIDIsIDI0NywgNzIsIDYwLCAxNTIsIDIzMywgNzksIDIzMSwgCi0gICAgMTYwLCAyMjMsIDU0LCA2MCwgMTUyLCAyMTYsIDIwNywgMjMxLCAxNjAsIDIyMywgNTQsIDY0LCAxLCAxODEsIDY0LCAxLCAKLSAgICAyMzQsIDEzOCwgNjQsIDEsIDI0MywgMTEwLCA2NCwgMSwgMjQyLCAyMjUsIDY0LCAxLCAyMjksIDE1OSwgNjQsIDEsIDI1MCwgCi0gICAgMjE5LCA2NCwgMSwgMjUwLCA5MiwgNjQsIDEsIDIzNSwgMTM5LCA2NCwgMSwgMjM1LCAxMTUsIDY0LCAxLCAyMjgsIDIzLCAKLSAgICA2NCwgMSwgMjI4LCAxODcsIDY0LCAxLCAyMTYsIDExNSwgNjQsIDEsIDIxNiwgMTA1LCA2NCwgMSwgMjQ4LCA4NiwgNjQsIDEsIAotICAgIDI0OCwgNzAsIDY0LCAxLCAyMjgsIDE5OCwgNjQsIDEsIDIxOCwgNTIsIDY0LCAxLCAyMTcsIDE2MSwgNjQsIDEsIDI0OCwgCi0gICAgMTY0LCA2NCwgMSwgMjQ3LCAyMzIsIDY0LCAxLCAyMDUsIDY0LCAxLCAxOTMsIDY0LCAxLCAyMjYsIDIzLCA2NCwgMSwgMjUyLCAKLSAgICAxMDcsIDY0LCAxLCAyNTEsIDE5NSwgNjQsIDEsIDE4OCwgNjQsIDEsIDE4NiwgNjQsIDEsIDIwMywgNjQsIDEsIDIzMywgCi0gICAgMTU3LCA2NCwgMSwgMjE0LCA0OSwgNjQsIDEsIDIyMiwgMjAyLCA2NCwgMSwgMTU5LCA2NCwgMSwgMjMyLCAyMTMsIDY0LCAxLCAKLSAgICA2MSwgNjQsIDEsIDIyMSwgOSwgNjEsIDY0LCAxLCA3MiwgNjQsIDEsIDIzNiwgMjgsIDY0LCAxLCA2OSwgNjQsIDEsIDIxNSwgCi0gICAgOTIsIDY0LCAxLCA3NCwgNjQsIDEsIDIzMCwgMjIxLCA3NCwgNjQsIDEsIDc1LCA2NCwgMSwgMjUzLCAxMDgsIDY0LCAzMCwgCi0gICAgNSwgMjE4LCAxNSwgMjU0LCAyMzIsIDY0LCAzMCwgNSwgMjU0LCAyMzIsIDY0LCAzMCwgNSwgNzIsIDY0LCAzMCwgNSwgMjM2LCAKLSAgICAyOCwgNjQsIDMwLCA1LCA2OSwgNjQsIDMwLCA1LCAyMTUsIDkyLCA2NCwgMzAsIDUsIDc0LCA2NCwgMzAsIDUsIDI1NCwgCi0gICAgMTA4LCA2NCwgMzAsIDUsIDIzMCwgMjIxLCAyMzYsIDI4LCA2NCwgMzAsIDUsIDIzMCwgMjIxLCA3NSwgNjQsIDMwLCA1LCAKLSAgICAxOTEsIDQ5LCA2NCwgNSwgMjUzLCAyNDIsIDY0LCA1LCA2MiwgNTUsIDY0LCA1LCAyMTQsIDEyOCwgNjQsIDUsIDIxNCwgCi0gICAgMTMzLCA2NCwgNSwgMjUzLCAxNTAsIDY0LCAyNDksIDEzMywgNSwgMTM4LCAxODYsIDY0LCAyNDksIDEzMywgNSwgMTM4LCAKLSAgICAyMDMsIDY0LCAyNDksIDEzMywgNSwgMTM4LCAyMTQsIDQ5LCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMTU5LCA2NCwgMSwgCi0gICAgMjQyLCAxMDksIDIyMiwgMjAyLCA2NCwgMjEsIDIxMiwgNzksIDY0LCAyMSwgMTE2LCA2NCwgMjEsIDEwOSwgNjQsIDIxLCAKLSAgICAxNjYsIDY0LCAyMSwgMTYzLCA2NCwgMjEsIDE4MCwgNjQsIDIxLCAxODksIDY0LCAyMSwgMTk4LCA2NCwgMjEsIDE5NSwgNjQsIAotICAgIDIxLCAyMDAsIDY0LCA1LCAyMzIsIDIyMSwgMjIyLCA5MSwgNjQsIDUsIDIyMiwgOTEsIDY0LCAxNiwgMjMyLCAyMDUsIDY0LCAKLSAgICAxNiwgMjQ5LCAxNTIsIDY0LCAxNiwgMjU0LCAxMjUsIDY0LCAxNiwgMjQzLCAyNCwgNjQsIDEsIDIyMSwgMjQsIDY0LCAxLCAKLSAgICAyMTksIDE1NywgNjQsIDEsIDE2MSwgMTQ5LCA2NCwgMSwgMTYxLCAyMjMsIDgyLCA2NCwgMSwgMTYxLCAxNTAsIDY0LCAxLCAKLSAgICAxNjEsIDIzMiwgMjE0LCA2NCwgMzAsIDUsIDE2MSwgMTQ5LCA2NCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgNjQsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgNjQsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCA2NCwgMSwgMjMwLCAyMjEsIDIyOSwgMTU5LCA2NCwgMSwgCi0gICAgMjMwLCAyMjEsIDIzNSwgMTE1LCA2NCwgMSwgMjMwLCAyMjEsIDI1MiwgMzEsIDY0LCAxLCAyMzAsIDIyMSwgMjUyLCAyNiwgCi0gICAgNjQsIDI0OSwgMTMzLCA1LCAyMzAsIDIyMSwgMTM4LCAyMDUsIDY0LCAyNDksIDEzMywgNSwgMjMwLCAyMjEsIDEzOCwgMTg4LCAKLSAgICA2NCwgMjQ5LCAxMzMsIDUsIDIzMCwgMjIxLCAxMzgsIDIzMywgMTU3LCA2NCwgMSwgMjIxLCAyOSwgMjM0LCAyMTgsIDIyMSwgCi0gICAgMjQsIDY0LCAzMCwgNSwgMjIxLCAyOSwgMjM0LCAyMTgsIDI0NSwgMjIsIDY0LCAxNjAsIDE1MiwgMjIxLCAyOSwgMjM0LCAKLSAgICAyMTgsIDI0MSwgMjMwLCA2NCwgMTYwLCAxNTIsIDIyMSwgMjksIDIzNCwgMjE4LCAyMzQsIDE4OSwgMjI1LCAyNTMsIDY0LCAKLSAgICAxLCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTcsIDE2MSwgNjQsIDEsIDIxMywgMjQ4LCAyMjQsIDI1MiwgCi0gICAgMjM0LCAyMTgsIDIyNSwgMiwgNjQsIDMwLCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyNDUsIDIyLCA2NCwgCi0gICAgMzAsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNSwgMTgzLCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAKLSAgICAyMzQsIDIxOCwgMjE2LCAyNDAsIDY0LCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzOSwgNjQsIDUsIAotICAgIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIxNiwgMjM4LCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIAotICAgIDIxOCwgMjE2LCAyMzcsIDY0LCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzNiwgNjQsIDEsIDI0NSwgCi0gICAgMTc1LCAyMjQsIDI1MiwgMjM0LCAyMTgsIDIyOCwgMTk4LCA2NCwgMSwgMjQ1LCAxNzUsIDIyNCwgMjUyLCAyMzQsIDIxOCwgCi0gICAgMjEyLCAxNjgsIDY0LCAxLCAyNDUsIDE3NSwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyNDIsIDE5MywgNjQsIDMwLCA1LCAyNDMsIAotICAgIDM1LCAyMzQsIDIxOCwgNzIsIDY0LCAzMCwgNSwgMjM0LCAxOTQsIDIyNywgOTksIDY0LCAzMCwgNSwgMjM0LCAxOTQsIDY5LCAKLSAgICA2NCwgMzAsIDUsIDIzNCwgMTk0LCAyNDUsIDE2NSwgNjQsIDEsIDIyMSwgOSwgMTgxLCA2NCwgMSwgMjIxLCA5LCAyMzQsIAotICAgIDEzOCwgNjQsIDEsIDIyMSwgOSwgMjQzLCAxMTAsIDY0LCAxLCAyMjEsIDksIDI1MCwgMjE5LCA2NCwgMSwgMjIxLCA5LCAKLSAgICAyMTIsIDEwOSwgNjQsIDEsIDIyMSwgOSwgMjI4LCAyMywgNjQsIDEsIDIyMSwgOSwgMjQ4LCAxNjQsIDY0LCAxLCAyMjEsIDksIAotICAgIDIwNSwgNjQsIDEsIDIyMSwgOSwgMjI2LCAyMywgNjQsIDEsIDIyMSwgOSwgMjQ0LCAxNjQsIDY0LCAxLCAyMjEsIDksIDI1MiwgCi0gICAgMTA3LCA2NCwgMSwgMjIxLCA5LCAyMTcsIDE2MSwgNjQsIDEsIDIyMSwgOSwgMTU5LCA2NCwgMjQ5LCAxMzMsIDUsIDIyMSwgCi0gICAgOSwgMTM4LCAyMTQsIDQ5LCA2NCwgMzAsIDUsIDIyMSwgOSwgMjU0LCAyMzIsIDY0LCAzMCwgNSwgMjIxLCA5LCA3NCwgNjQsIAotICAgIDMwLCA1LCAyMjEsIDksIDE5MSwgNDksIDY0LCAzMCwgNSwgMjIxLCA5LCA0MCwgMjEzLCAxMDUsIDY0LCA1LCAyMjEsIDksIAotICAgIDIxNiwgMjM5LCA2NCwgNSwgMjIxLCA5LCAyMTYsIDIzOCwgNjQsIDUsIDIyMSwgOSwgMjE2LCAyMzYsIDY0LCA1LCAyMjEsIAotICAgIDksIDIxNiwgMjM1LCA2NCwgNSwgMjIxLCA5LCAyNDksIDkxLCAyMTYsIDIzOSwgNjQsIDUsIDIyMSwgOSwgMjQ5LCA5MSwgCi0gICAgMjE2LCAyMzgsIDY0LCA1LCAyMjEsIDksIDI0OSwgOTEsIDI0NSwgMTExLCAyMTYsIDI0MSwgNjQsIDEsIDIyMywgMzksIAotICAgIDIyNiwgMTkwLCAyNDQsIDE2NCwgNjQsIDUsIDIyMywgMzksIDIyNiwgMTkwLCAyMTYsIDIzNiwgNjQsIDIyMSwgOSwgMjEsIAotICAgIDIxMiwgNzksIDY0LCAyMjEsIDksIDIxLCAxMTYsIDY0LCAyMjEsIDksIDIxLCAxMDksIDY0LCAyMjEsIDksIDIxLCAxNjYsIAotICAgIDY0LCAyMjEsIDksIDIxLCAxNjMsIDY0LCAyMjEsIDksIDIxLCAxODAsIDY0LCAyMjEsIDksIDIxLCAxODksIDY0LCAyMjEsIAotICAgIDksIDIxLCAxOTgsIDY0LCAyMjEsIDksIDIxLCAxOTUsIDY0LCAyMjEsIDksIDIxLCAyMDAsIDY0LCA1LCAyMzQsIDEzMiwgCi0gICAgMjE2LCAyNDAsIDY0LCA1LCAyMzQsIDEzMiwgMjE2LCAyMzgsIDY0LCAzMCwgNSwgMjU0LCA5OCwgNjEsIDY0LCAzMCwgNSwgCi0gICAgMjU0LCA5OCwgMjU0LCAxMDgsIDY0LCAxNiwgMjIxLCA5LCAxMTYsIDY0LCAxNiwgMjIxLCA5LCAyNDQsIDI1MywgMTAwLCA2LCAKLSAgICAxLCAyNTQsIDMyLCAxMDAsIDYsIDEsIDI1MiwgNzEsIDEwMCwgNiwgMSwgMjQzLCA4MiwgMTAwLCA2LCAxLCAyNDcsIDgyLCAKLSAgICAxMDAsIDYsIDEsIDI0NSwgMTA4LCAxMDAsIDYsIDEsIDIxNCwgMTQxLCAxMDAsIDYsIDEsIDIxMiwgODIsIDEwMCwgNiwgMSwgCi0gICAgMjE4LCAxMSwgMTAwLCA2LCAxLCAyMzUsIDI1MSwgMTAwLCA2LCAxLCAyMzQsIDIzOSwgMTAwLCA2LCAxLCAyMzMsIDEwNCwgCi0gICAgMTAwLCA2LCAxLCAyMzEsIDI0OCwgMTAwLCA2LCAxLCAyMzAsIDE1LCAxMDAsIDYsIDEsIDIyNywgNjIsIDEwMCwgNiwgMSwgCi0gICAgMjI2LCAxNDUsIDEwMCwgNiwgMSwgMjEyLCA3MSwgMTAwLCA2LCAxLCAyMjQsIDYxLCAxMDAsIDYsIDEsIDIyMiwgMTU5LCAKLSAgICAxMDAsIDYsIDEsIDIxOCwgMSwgMTAwLCA2LCAxLCAyMTUsIDE2MCwgMTAwLCA2LCAxLCAyMjYsIDE2LCAxMDAsIDYsIDEsIAotICAgIDIzNCwgMTI3LCAxMDAsIDYsIDEsIDI0MiwgMjE3LCAxMDAsIDYsIDEsIDIyNCwgMjE3LCAxMDAsIDYsIDEsIDIyMCwgMjAwLCAKLSAgICAxMDAsIDYsIDEsIDI1MCwgMzQsIDEwMCwgNiwgMSwgMjUwLCAxOTUsIDEwMCwgNiwgMSwgMjM1LCAxMDMsIDEwMCwgNiwgMSwgCi0gICAgMjQ5LCAyMzMsIDEwMCwgNiwgMSwgMjUwLCA3OSwgMTAwLCA2LCAxLCAyMTMsIDE1MSwgMTAwLCA2LCAxLCAyMzUsIDExMywgCi0gICAgMTAwLCA2LCAxLCAyNDIsIDI0LCAxMDAsIDYsIDEsIDI0MSwgMjIyLCAxMDAsIDYsIDEsIDI0MSwgMTYwLCAxMDAsIDYsIDEsIAotICAgIDIxNCwgNiwgMTAwLCA2LCAxLCAyNDEsIDI0MywgMTAwLCA2LCAxLCAyNDEsIDUxLCAxMDAsIDEsIDI1NCwgMzIsIDEwMCwgMSwgCi0gICAgMjUyLCA3MSwgMTAwLCAxLCAyNDMsIDgyLCAxMDAsIDEsIDI0NywgODIsIDEwMCwgMSwgMjQ1LCAxMDgsIDEwMCwgMSwgMjE0LCAKLSAgICAxNDEsIDEwMCwgMSwgMjEyLCA4MiwgMTAwLCAxLCAyMTgsIDExLCAxMDAsIDEsIDIzNSwgMjUxLCAxMDAsIDEsIDIzNCwgCi0gICAgMjM5LCAxMDAsIDEsIDIzMywgMTA0LCAxMDAsIDEsIDIzMSwgMjQ4LCAxMDAsIDEsIDIzMCwgMTUsIDEwMCwgMSwgMjI3LCAKLSAgICA2MiwgMTAwLCAxLCAyMjYsIDE0NSwgMTAwLCAxLCAyMTIsIDcxLCAxMDAsIDEsIDIyNCwgNjEsIDEwMCwgMSwgMjIyLCAxNTksIAotICAgIDEwMCwgMSwgMjE4LCAxLCAxMDAsIDEsIDIxNSwgMTYwLCAxMDAsIDEsIDIyNiwgMTYsIDEwMCwgMSwgMjM0LCAxMjcsIDEwMCwgCi0gICAgMSwgMjQyLCAyMTcsIDEwMCwgMSwgMjI0LCAyMTcsIDEwMCwgMSwgMjIwLCAyMDAsIDEwMCwgMSwgMjUwLCAzNCwgMTAwLCAxLCAKLSAgICAyNTAsIDE5NSwgMTAwLCAxLCAyMzUsIDEwMywgMTAwLCAxLCAyNDksIDIzMywgMTAwLCAxLCAyNTAsIDc5LCAxMDAsIDEsIAotICAgIDIxMywgMTUxLCAxMDAsIDEsIDIzNSwgMTEzLCAxMDAsIDEsIDI0MiwgMjQsIDEwMCwgMSwgMjQxLCAyMjIsIDEwMCwgMSwgCi0gICAgMjQxLCAxNjAsIDEwMCwgMSwgMjE0LCA2LCAxMDAsIDEsIDI0MSwgMjQzLCAxMDAsIDEsIDI0MSwgNTEsIDEwMCwgMSwgMjQ0LCAKLSAgICA5MCwgMTAwLCAxLCAyMTIsIDIzNywgMTAwLCAxLCAyNDUsIDEyMiwgMTAwLCAxLCAyMTYsIDU4LCAyNDMsIDgyLCAxMDAsIDEsIAotICAgIDI1NCwgMTAzLCAxMDAsIDIyNiwgMTQzLCAyMjEsIDU3LCA1OSwgMSwgMTAwLCAyMzAsIDE1LCAyMywgOTcsIDIzNCwgNjcsIAotICAgIDIzLCA5NywgMjE5LCAxNTAsIDIzLCA5NywgMjI5LCA1NywgMjMsIDk3LCAyMTcsIDU1LCAyMywgOTcsIDIxOSwgMTM5LCAyMywgCi0gICAgOTcsIDIyMywgMTc5LCAyMywgOTcsIDIzMSwgMzAsIDIzLCA5NywgMjI1LCAyMjcsIDIzLCA5NywgMjE5LCAxNDcsIDIzLCAKLSAgICA5NywgMjIwLCA3NiwgMjMsIDk3LCAyMTksIDE0NCwgMjMsIDk3LCAyMzYsIDUxLCAyMywgOTcsIDI0OSwgMjM5LCAyMywgOTcsIAotICAgIDIxOSwgMTU0LCAyMywgOTcsIDI1MCwgNDMsIDIzLCA5NywgMjM0LCAxMTYsIDIzLCA5NywgMjE3LCAxMjYsIDIzLCA5NywgCi0gICAgMjI2LCA3LCAyMywgOTcsIDI0MSwgMTU4LCAyMywgOTcsIDIyOSwgNTMsIDIzLCA5NywgMjE5LCAxNDgsIDIzLCA5NywgMjI5LCAKLSAgICA0NywgMjMsIDk3LCAyMjksIDUxLCAyMywgOTcsIDIxNywgNTIsIDIzLCA5NywgMjIzLCAxNjcsIDIzLCA5NywgMjE5LCAxNDYsIAotICAgIDIzLCA5NywgMjIzLCAxNzcsIDIzLCA5NywgMjM0LCAyMjMsIDIzLCA5NywgMjMxLCAyMywgMjMsIDk3LCAyMzQsIDIyNiwgCi0gICAgMjMsIDk3LCAyMjUsIDIyMiwgMjMsIDk3LCAyMjUsIDIyMCwgMjMsIDk3LCAyMjUsIDIwOCwgMjMsIDk3LCAyMjUsIDIxNiwgCi0gICAgMjMsIDk3LCAyMjUsIDIxNCwgMjMsIDk3LCAyMjUsIDIxMSwgMjMsIDk3LCAyMjUsIDIxMywgMjMsIDk3LCAyMjUsIDIxMCwgCi0gICAgMjMsIDk3LCAyMjUsIDIxNSwgMjMsIDk3LCAyMjUsIDIyNSwgMjMsIDk3LCAyMjUsIDIyNiwgMjMsIDk3LCAyMjUsIDIwOSwgCi0gICAgMjMsIDk3LCAyMjUsIDIxOSwgMjMsIDk3LCAyMzQsIDIyNCwgMjMsIDk3LCAyMzQsIDIyMiwgMjMsIDk3LCAyMjAsIDY5LCAKLSAgICAyMywgOTcsIDIyMCwgNjcsIDIzLCA5NywgMjIwLCA1OSwgMjMsIDk3LCAyMjAsIDYyLCAyMywgOTcsIDIyMCwgNjgsIDIzLCAKLSAgICA5NywgMjIwLCA2NCwgMjMsIDk3LCAyMjAsIDYzLCAyMywgOTcsIDIyMCwgNjEsIDIzLCA5NywgMjIwLCA3MiwgMjMsIDk3LCAKLSAgICAyMjAsIDc0LCAyMywgOTcsIDIyMCwgNzUsIDIzLCA5NywgMjIwLCA3MCwgMjMsIDk3LCAyMjAsIDYwLCAyMywgOTcsIDIyMCwgCi0gICAgNjUsIDIzLCA5NywgMjIwLCA3MywgMjMsIDk3LCAyNTAsIDI3LCAyMywgOTcsIDI1MCwgMjUsIDIzLCA5NywgMjUwLCAxMDIsIAotICAgIDIzLCA5NywgMjUwLCAxMDAsIDIzLCA5NywgMjI2LCAxNjAsIDIzLCA5NywgMjM2LCA0NiwgMjMsIDk3LCAyMzYsIDM3LCAyMywgCi0gICAgOTcsIDIzNiwgNDUsIDIzLCA5NywgMjM2LCA0MiwgMjMsIDk3LCAyMzYsIDQwLCAyMywgOTcsIDIzNiwgNDQsIDIzLCA5NywgCi0gICAgMjE5LCAxNTEsIDIzLCA5NywgMjM2LCA0OSwgMjMsIDk3LCAyMzYsIDUwLCAyMywgOTcsIDIzNiwgMzgsIDIzLCA5NywgMjM2LCAKLSAgICA0MywgMjMsIDk3LCAyMTMsIDE3LCAyMywgOTcsIDI0OSwgMjM4LCAyMywgOTcsIDI1MCwgMjgsIDIzLCA5NywgMjUwLCAyNiwgCi0gICAgMjMsIDk3LCAyNTAsIDEwMywgMjMsIDk3LCAyNTAsIDEwMSwgMjMsIDk3LCAyNTAsIDQxLCAyMywgOTcsIDI1MCwgNDIsIDIzLCAKLSAgICA5NywgMjUwLCAyOSwgMjMsIDk3LCAyNTAsIDEwNCwgMjMsIDk3LCAyMjYsIDUsIDIzLCA5NywgMjM0LCAyMjUsIDIzLCA5NywgCi0gICAgMjE5LCAxNTIsIDIzLCA5NywgMjEzLCAyMywgMjMsIDk3LCAyMzQsIDU4LCAyMywgOTcsIDIyOSwgNDksIDIzLCA5NywgMjI5LCAKLSAgICA1NSwgMjMsIDk3LCAyMjksIDU0LCAyMywgOTcsIDIxNywgNDksIDIzLCA5NywgMjQ0LCA3MiwgMjMsIDEzNSwgMjQ0LCA3MiwgCi0gICAgMjMsIDEzNSwgNjEsIDIzLCAxMzUsIDI1NCwgMTQ4LCAyMywgMTM1LCAxODYsIDIzLCAxMzUsIDIxMywgODAsIDIzLCAxMzUsIAotICAgIDI0NSwgNzYsIDIzLCAxMzUsIDc0LCAyMywgMTM1LCAyMTMsIDI3LCAyMywgMTM1LCAyMTMsIDM4LCAyMywgMTM1LCA3NSwgCi0gICAgMjMsIDEzNSwgMjE0LCA0OSwgMjMsIDEzNSwgMjE0LCA0NiwgMjMsIDEzNSwgMjI3LCA5OSwgMjMsIDEzNSwgMjEyLCAyMzUsIAotICAgIDIzLCAxMzUsIDY5LCAyMywgMTM1LCAyMTMsIDI1MiwgMjMsIDEzNSwgMjE0LCA2LCAyMywgMTM1LCAyMTMsIDIzNSwgMjMsIAotICAgIDEzNSwgMjEyLCAyMDMsIDIzLCAxMzUsIDI0NSwgMjIsIDIzLCAxMzUsIDIxMiwgMjU1LCAyMywgMTM1LCA3MiwgMjMsIDEzNSwgCi0gICAgMjU1LCA2MCwgMjMsIDEzNSwgMjU1LCA1OSwgMjMsIDEzNSwgMjEzLCA5NCwgMjMsIDEzNSwgMjEzLCA5MiwgMjMsIDEzNSwgCi0gICAgMjQ1LCA3NCwgMjMsIDEzNSwgMjQ1LCA3MywgMjMsIDEzNSwgMjQ1LCA3NSwgMjMsIDEzNSwgMjEzLCAyNiwgMjMsIDEzNSwgCi0gICAgMjEzLCAyNSwgMjMsIDEzNSwgMjI3LCAyMDQsIDIzLCAxMzUsIDIyNywgMjA1LCAyMywgMTM1LCAyMjcsIDE5OCwgMjMsIAotICAgIDEzNSwgMjI3LCAyMDMsIDIzLCAxMzUsIDIyNywgMjAxLCAyMywgMTM1LCAyMTIsIDIyOSwgMjMsIDEzNSwgMjEyLCAyMjgsIAotICAgIDIzLCAxMzUsIDIxMiwgMjI3LCAyMywgMTM1LCAyMTIsIDIzMCwgMjMsIDEzNSwgMjEyLCAyMzEsIDIzLCAxMzUsIDIxNSwgCi0gICAgMjUyLCAyMywgMTM1LCAyMTUsIDI1MSwgMjMsIDEzNSwgMjE1LCAyNTAsIDIzLCAxMzUsIDIxNSwgMjQ3LCAyMywgMTM1LCAKLSAgICAyMTUsIDI0OCwgMjMsIDEzNSwgMjEyLCAyMDIsIDIzLCAxMzUsIDIxMiwgMTk5LCAyMywgMTM1LCAyMTIsIDIwMCwgMjMsIAotICAgIDEzNSwgMjEyLCAxOTQsIDIzLCAxMzUsIDIxMiwgMTk1LCAyMywgMTM1LCAyMTIsIDE5NiwgMjMsIDEzNSwgMjEyLCAxOTgsIAotICAgIDIzLCAxMzUsIDI0NSwgMTYsIDIzLCAxMzUsIDI0NSwgMTgsIDIzLCAxMzUsIDIxMiwgMjU0LCAyMywgMTM1LCAyNDAsIDE0NSwgCi0gICAgMjMsIDEzNSwgMjQwLCAxMzcsIDIzLCAxMzUsIDI0MCwgMTQwLCAyMywgMTM1LCAyNDAsIDEzOCwgMjMsIDEzNSwgMjQwLCAKLSAgICAxNDIsIDIzLCAxMzUsIDI0MCwgMTQ0LCAyMywgMTM1LCAyNTMsIDIwNCwgMjMsIDEzNSwgMjUzLCAyMDEsIDIzLCAxMzUsIAotICAgIDI1MywgMTk5LCAyMywgMTM1LCAyNTMsIDIwMCwgMjMsIDEzNSwgMjE5LCAxNTUsIDIzLCAxMzUsIDI1NSwgNjEsIDIzLCAKLSAgICAxMzUsIDIxMywgOTMsIDIzLCAxMzUsIDIxMywgMjQsIDIzLCAxMzUsIDIyNywgMjAwLCAyMywgMTM1LCAyMjcsIDE5OSwgMjMsIAotICAgIDg5LCAyMzQsIDY3LCAyMywgODksIDIxOSwgMTUwLCAyMywgODksIDIzNCwgNjAsIDIzLCA4OSwgMjI5LCA1NywgMjMsIDg5LCAKLSAgICAyMjksIDU1LCAyMywgODksIDIyOSwgNTQsIDIzLCA4OSwgMjE3LCA1NSwgMjMsIDg5LCAyMjMsIDE3OSwgMjMsIDg5LCAyMjMsIAotICAgIDE3NCwgMjMsIDg5LCAyMjMsIDE3MSwgMjMsIDg5LCAyMjMsIDE2NCwgMjMsIDg5LCAyMjMsIDE1OSwgMjMsIDg5LCAyMjMsIAotICAgIDE1NCwgMjMsIDg5LCAyMjMsIDE2NSwgMjMsIDg5LCAyMjMsIDE3NywgMjMsIDg5LCAyMzEsIDMwLCAyMywgODksIDIyNSwgCi0gICAgMjI3LCAyMywgODksIDIyNSwgMjE2LCAyMywgODksIDIyMCwgNzYsIDIzLCA4OSwgMjE5LCAxNDQsIDIzLCA4OSwgMjM2LCAKLSAgICA1MSwgMjMsIDg5LCAyNDksIDIzOSwgMjMsIDg5LCAyNTAsIDQzLCAyMywgODksIDIzNCwgMTE2LCAyMywgODksIDIxNywgCi0gICAgMTI2LCAyMywgODksIDIyNiwgNywgMjMsIDg5LCAyNDEsIDE1OCwgMjMsIDg5LCAyMzQsIDYxLCAyMywgODksIDIzNCwgNTksIAotICAgIDIzLCA4OSwgMjI5LCA1MywgMjMsIDg5LCAyMjksIDQ3LCAyMywgODksIDIyOSwgNDksIDIzLCA4OSwgMjI5LCA1MiwgMjMsIAotICAgIDg5LCAyMjksIDQ4LCAyMywgODksIDIxNywgNTIsIDIzLCA4OSwgMjE3LCA0OSwgMjMsIDg5LCAyMjMsIDE3MiwgMjMsIDg5LCAKLSAgICAyMjMsIDE2NywgMjMsIDg5LCAyMjMsIDE1MywgMjMsIDg5LCAyMjMsIDE1MiwgMjMsIDg5LCAyMTksIDE0NiwgMjMsIDg5LCAKLSAgICAyMjMsIDE2OSwgMjMsIDg5LCAyMjMsIDE2OCwgMjMsIDg5LCAyMjMsIDE2MSwgMjMsIDg5LCAyMjMsIDE2MywgMjMsIDg5LCAKLSAgICAyMjMsIDE3NiwgMjMsIDg5LCAyMjMsIDE1NiwgMjMsIDg5LCAyMjMsIDE2NiwgMjMsIDg5LCAyMjMsIDE3NSwgMjMsIDg5LCAKLSAgICAyMjMsIDE1MSwgMjMsIDg5LCAyMzEsIDI2LCAyMywgODksIDIzMSwgMjEsIDIzLCA4OSwgMjMxLCAyMywgMjMsIDg5LCAyMzEsIAotICAgIDIwLCAyMywgODksIDIzMSwgMTgsIDIzLCA4OSwgMjMxLCAyNCwgMjMsIDg5LCAyMzEsIDI5LCAyMywgODksIDIzMSwgMjcsIAotICAgIDIzLCA4OSwgMjM0LCAyMjYsIDIzLCA4OSwgMjI1LCAyMTgsIDIzLCA4OSwgMjI1LCAyMTksIDIzLCA4OSwgMjI1LCAyMjQsIAotICAgIDIzLCA4OSwgMjM0LCAyMjQsIDIzLCA4OSwgMjIwLCA2OSwgMjMsIDg5LCAyMjAsIDU5LCAyMywgODksIDIyMCwgNjIsIDIzLCAKLSAgICA4OSwgMjIwLCA2NCwgMjMsIDg5LCAyMjYsIDE2MCwgMjMsIDg5LCAyMzYsIDQ2LCAyMywgODksIDIzNiwgMzksIDIzLCA4OSwgCi0gICAgMjE5LCAxNTEsIDIzLCA4OSwgMjM2LCA0NywgMjMsIDg5LCAyMTMsIDE3LCAyMywgODksIDIxMywgMTMsIDIzLCA4OSwgMjEzLCAKLSAgICAxNCwgMjMsIDg5LCAyMjYsIDUsIDIzLCA4OSwgMjM0LCAyMjUsIDIzLCA4OSwgMjQxLCAxNTYsIDIzLCA4OSwgMjQxLCAxNTQsIAotICAgIDIzLCA4OSwgMjQxLCAxNTcsIDIzLCA4OSwgMjQxLCAxNTUsIDIzLCA4OSwgMjEzLCAyMywgMjMsIDg5LCAyMzQsIDYzLCAyMywgCi0gICAgODksIDIzNCwgNjIsIDIzLCA4OSwgMjM0LCA2NiwgMjMsIDg5LCAyMzQsIDY0LCAyMywgODksIDIzNCwgNjUsIDIzLCA4OSwgCi0gICAgMjE5LCAxNDgsIDI4LCA0LCAxNTksIDI4LCA0LCAyNDAsIDIxMiwgMjgsIDQsIDI0MSwgMTY1LCAyOCwgNCwgMjQyLCAyNywgCi0gICAgMjgsIDQsIDI0MSwgMjA0LCAyOCwgNCwgMjQxLCAyMjIsIDI4LCA0LCAyNDEsIDU0LCAyOCwgNCwgMjQxLCA1MywgMjgsIDQsIAotICAgIDIzMywgMTU3LCAyOCwgNCwgMjMyLCAxNTYsIDI4LCA0LCAyMzMsIDEzLCAyOCwgNCwgMjMzLCAxNTYsIDI4LCA0LCAyMzMsIAotICAgIDc0LCAyOCwgNCwgMjMzLCA4MiwgMjgsIDQsIDIzMiwgMjA4LCAyOCwgNCwgMjMyLCAxMjksIDI4LCA0LCAyNDEsIDE3NCwgCi0gICAgMjgsIDQsIDI0MSwgMTY4LCAyOCwgNCwgMjQxLCAxNzAsIDI4LCA0LCAyNDEsIDE3MywgMjgsIDQsIDI0MSwgMTcxLCAyOCwgCi0gICAgNCwgMjQxLCAxNzIsIDI4LCA0LCAyNDEsIDE2OSwgMjgsIDQsIDI0MSwgMTY3LCAyOCwgNCwgMTg4LCAyOCwgNCwgMjMwLCAKLSAgICAxNzIsIDI4LCA0LCAyMzEsIDQyLCAyOCwgNCwgMjMyLCA0MSwgMjgsIDQsIDIzMSwgMTQ1LCAyOCwgNCwgMjMxLCAxNTYsIAotICAgIDI4LCA0LCAyMzAsIDIzMSwgMjgsIDQsIDIzMCwgMTE0LCAyOCwgNCwgMjE4LCAxMTAsIDI4LCA0LCAyMTgsIDEwNCwgMjgsIAotICAgIDQsIDIxOCwgMTA2LCAyOCwgNCwgMjE4LCAxMDksIDI4LCA0LCAyMTgsIDEwNywgMjgsIDQsIDIxOCwgMTA4LCAyOCwgNCwgCi0gICAgMjE4LCAxMDUsIDI4LCA0LCAyMTgsIDEwMywgMjgsIDQsIDIwMywgMjgsIDQsIDIyMywgNTEsIDI4LCA0LCAyMjMsIDE4OCwgCi0gICAgMjgsIDQsIDIyNCwgNzQsIDI4LCA0LCAyMjQsIDEsIDI4LCA0LCAyMjQsIDIxLCAyOCwgNCwgMjIzLCAxMTIsIDI4LCA0LCAKLSAgICAyMjMsIDIxLCAyOCwgNCwgMjIyLCAyMDIsIDI4LCA0LCAyMTksIDI3LCAyOCwgNCwgMjIwLCAxMTcsIDI4LCA0LCAyMjIsIAotICAgIDIwMCwgMjgsIDQsIDIyMiwgODksIDI4LCA0LCAyMjIsIDEwMCwgMjgsIDQsIDIxOSwgMjQyLCAyOCwgNCwgMjE4LCAxOTgsIAotICAgIDI4LCA0LCAyMjEsIDI0LCAyOCwgNCwgMjIwLCAxNTAsIDI4LCA0LCAyMjAsIDIxMiwgMjgsIDQsIDIyMSwgMjAsIDI4LCA0LCAKLSAgICAyMjAsIDI0MSwgMjgsIDQsIDIyMCwgMjQzLCAyOCwgNCwgMjIwLCAxODcsIDI4LCA0LCAyMjAsIDEzNCwgMjgsIDQsIDIyNCwgCi0gICAgMjMyLCAyOCwgNCwgMjI0LCAxNzUsIDI4LCA0LCAyMjQsIDE5OCwgMjgsIDQsIDIyNCwgMjMxLCAyOCwgNCwgMjI0LCAyMTIsIAotICAgIDI4LCA0LCAyMjQsIDIxMywgMjgsIDQsIDIyNCwgMTg3LCAyOCwgNCwgMjI0LCAxODYsIDI4LCA0LCAyMjQsIDEzMSwgMjgsIAotICAgIDQsIDIyNCwgMTI3LCAyOCwgNCwgMjI0LCAxMzAsIDI4LCA0LCAyMjQsIDEyOCwgMjgsIDQsIDIyNCwgMTI5LCAyOCwgNCwgCi0gICAgMjI0LCAyMTAsIDI4LCA0LCAyMjQsIDIwNCwgMjgsIDQsIDIyNCwgMjA2LCAyOCwgNCwgMjI0LCAyMDksIDI4LCA0LCAyMjQsIAotICAgIDIwNywgMjgsIDQsIDIyNCwgMjA4LCAyOCwgNCwgMjI0LCAyMDUsIDI4LCA0LCAyMjQsIDIwMywgMjgsIDQsIDIyNCwgMTk5LCAKLSAgICAyOCwgNCwgMjI0LCAyMDIsIDI4LCA0LCAyMjQsIDIwMCwgMjgsIDQsIDIyNCwgMjAxLCAyOCwgNCwgMjUyLCAxMDcsIDI4LCAKLSAgICA0LCAyNTEsIDU0LCAyOCwgNCwgMjUxLCAxODQsIDI4LCA0LCAyNTIsIDEwNiwgMjgsIDQsIDI1MSwgMjQyLCAyOCwgNCwgCi0gICAgMjUxLCAyNTEsIDI4LCA0LCAyNTEsIDEyOCwgMjgsIDQsIDI1MSwgMTIsIDI4LCA0LCAyMTUsIDEsIDI4LCA0LCAyMTQsIDk5LCAKLSAgICAyOCwgNCwgMjE0LCAxNTQsIDI4LCA0LCAyMTUsIDAsIDI4LCA0LCAyMTQsIDIyNywgMjgsIDQsIDIxNCwgMjMyLCAyOCwgNCwgCi0gICAgMjE0LCAxMTksIDI4LCA0LCAyMTQsIDkxLCAyOCwgNCwgMjE4LCA1MiwgMjgsIDQsIDIxNiwgODIsIDI4LCA0LCAyMTcsIDcxLCAKLSAgICAyOCwgNCwgMjE4LCA0OSwgMjgsIDQsIDIxNywgMjE5LCAyOCwgNCwgMjE3LCAyMjksIDI4LCA0LCAxMDgsIDI4LCA0LCAyMTYsIAotICAgIDQ1LCAyOCwgNCwgMjUwLCAyMTksIDI4LCA0LCAyNDksIDUzLCAyOCwgNCwgMjQ5LCAyNDQsIDI4LCA0LCAyNTAsIDIxOCwgCi0gICAgMjgsIDQsIDI1MCwgMTE2LCAyOCwgNCwgMjUwLCAxMjQsIDI4LCA0LCAyNDksIDE3NSwgMjgsIDQsIDI0OSwgMjQsIDI4LCA0LCAKLSAgICAyMTMsIDE1MywgMjgsIDQsIDIxMywgMTI5LCAyOCwgNCwgMjEzLCAxNDUsIDI4LCA0LCAyMTMsIDE1MiwgMjgsIDQsIDIxMywgCi0gICAgMTQ5LCAyOCwgNCwgMjEzLCAxNTAsIDI4LCA0LCAyMTMsIDEzNiwgMjgsIDQsIDIxMywgMTM1LCAyOCwgNCwgMjEzLCAxMjQsIAotICAgIDI4LCA0LCAyMTMsIDEyMCwgMjgsIDQsIDIxMywgMTIzLCAyOCwgNCwgMjEzLCAxMjEsIDI4LCA0LCAyMTMsIDEyMiwgMjgsIAotICAgIDQsIDIwNSwgMjgsIDQsIDIyOCwgOTIsIDI4LCA0LCAyMjksIDY0LCAyOCwgNCwgMjMwLCA0MywgMjgsIDQsIDIyOSwgMTg0LCAKLSAgICAyOCwgNCwgMjI5LCAxODcsIDI4LCA0LCAyMjgsIDE4NSwgMjgsIDQsIDIyOCwgMzEsIDI4LCA0LCAyMjgsIDIzLCAyOCwgNCwgCi0gICAgMjI3LCAyNDcsIDI4LCA0LCAyMjgsIDEwLCAyOCwgNCwgMjI4LCAyMiwgMjgsIDQsIDIyOCwgMTYsIDI4LCA0LCAyMjgsIDE3LCAKLSAgICAyOCwgNCwgMjI3LCAyNTMsIDI4LCA0LCAyMjcsIDIzOSwgMjgsIDQsIDI0MiwgMTU2LCA2MSwgMjgsIDQsIDI0MiwgMTU2LCAKLSAgICA2OSwgMjgsIDQsIDI0MiwgMTU2LCA3MiwgMjgsIDQsIDI0MiwgMTU2LCAyNTQsIDIzMiwgMjgsIDQsIDI0MiwgMTU2LCAyNDUsIAotICAgIDE2NSwgMjgsIDQsIDI0MiwgMTU2LCA3NCwgMjgsIDQsIDI0MiwgMTU2LCA3NSwgMjgsIDQsIDI0MiwgMTU2LCAyMTQsIDQ5LCAKLSAgICAyOCwgNCwgMTgxLCAyOCwgNCwgMjMzLCAyMzgsIDI4LCA0LCAyMzQsIDEwMSwgMjgsIDQsIDIzNSwgMTQsIDI4LCA0LCAyMzQsIAotICAgIDE4NywgMjgsIDQsIDIzNCwgMTg4LCAyOCwgNCwgMjM0LCAzNywgMjgsIDQsIDIzNCwgMzYsIDI4LCA0LCAyMzMsIDIwNCwgCi0gICAgMjgsIDQsIDIzMywgMTk4LCAyOCwgNCwgMjMzLCAyMDMsIDI4LCA0LCAyMzMsIDE5OSwgMjgsIDQsIDIzMywgMjAwLCAyOCwgCi0gICAgNCwgMjMzLCAxOTMsIDI4LCA0LCAyMzMsIDE4NywgMjgsIDQsIDIzMywgMTg5LCAyOCwgNCwgMjMzLCAxOTIsIDI4LCA0LCAKLSAgICAyMzMsIDE5MCwgMjgsIDQsIDIzMywgMTkxLCAyOCwgNCwgMjMzLCAxODgsIDI4LCA0LCAyMzMsIDE4NiwgMjgsIDQsIDIzMywgCi0gICAgMTgyLCAyOCwgNCwgMjMzLCAxODUsIDI4LCA0LCAyMzMsIDE4MywgMjgsIDQsIDIzMywgMTg0LCAyOCwgNCwgMjE0LCA0OSwgCi0gICAgMjgsIDQsIDIxMywgMTgzLCAyOCwgNCwgMjEzLCAyMzUsIDI4LCA0LCAyMTQsIDQ4LCAyOCwgNCwgMjE0LCAxLCAyOCwgNCwgCi0gICAgMjE0LCA2LCAyOCwgNCwgMjEzLCAyMTQsIDI4LCA0LCAyMTMsIDIxMywgMjgsIDQsIDIyNiwgMTUsIDYxLCAyOCwgNCwgMjI2LCAKLSAgICAxNSwgNjksIDI4LCA0LCAyMjYsIDE1LCA3MiwgMjgsIDQsIDIyNiwgMTUsIDI1NCwgMjMyLCAyOCwgNCwgMjI2LCAxNSwgCi0gICAgMjQ1LCAxNjUsIDI4LCA0LCAyMjYsIDE1LCA3NCwgMjgsIDQsIDIyNiwgMTUsIDc1LCAyOCwgNCwgMjEyLCAxMDksIDI4LCA0LCAKLSAgICAyMTIsIDgsIDI4LCA0LCAyMTIsIDM3LCAyOCwgNCwgMjEyLCAxMDgsIDI4LCA0LCAyMTIsIDg1LCAyOCwgNCwgMjEyLCA4NywgCi0gICAgMjgsIDQsIDIxMiwgMTYsIDI4LCA0LCAyMTEsIDI1MSwgMjgsIDQsIDIxMiwgNzUsIDI4LCA0LCAyMTIsIDU1LCAyOCwgNCwgCi0gICAgMjEyLCA2MiwgMjgsIDQsIDIxMiwgNzQsIDI4LCA0LCAyMTIsIDY2LCAyOCwgNCwgMjEyLCA2NywgMjgsIDQsIDIxMiwgNjAsIAotICAgIDI4LCA0LCAyMTIsIDQ2LCAyOCwgNCwgMTg2LCAyOCwgNCwgMjEyLCAyMDMsIDI4LCA0LCAyMTIsIDI1NSwgMjgsIDQsIDIxMywgCi0gICAgOTEsIDI4LCA0LCAyMTMsIDM1LCAyOCwgNCwgMjEzLCAzOCwgMjgsIDQsIDIxMiwgMjM1LCAyOCwgNCwgMjEyLCAyMjYsIDI4LCAKLSAgICA0LCAyNDgsIDE2NCwgMjgsIDQsIDI0NiwgMzMsIDI4LCA0LCAyNDcsIDIxMSwgMjgsIDQsIDI0OCwgMTYzLCAyOCwgNCwgCi0gICAgMjQ4LCAyOCwgMjgsIDQsIDI0OCwgNDEsIDI4LCA0LCAyNDcsIDk5LCAyOCwgNCwgMjQ2LCAyLCAyOCwgNCwgMjQ4LCA4NiwgCi0gICAgMjgsIDQsIDI0OCwgNTEsIDI4LCA0LCAyNDgsIDYzLCAyOCwgNCwgMjQ4LCA4NSwgMjgsIDQsIDI0OCwgNzMsIDI4LCA0LCAKLSAgICAyNDgsIDc0LCAyOCwgNCwgMjQ4LCA1NiwgMjgsIDQsIDI0OCwgNDIsIDI4LCA0LCAyMzUsIDEzOSwgMjgsIDQsIDIzNSwgNTQsIAotICAgIDI4LCA0LCAyMzUsIDExMCwgMjgsIDQsIDIzNSwgMTM4LCAyOCwgNCwgMjM1LCAxMjUsIDI4LCA0LCAyMzUsIDEyNywgMjgsIAotICAgIDQsIDIzNSwgNzEsIDI4LCA0LCAyMzUsIDM1LCAyOCwgNCwgMjQzLCAxMTAsIDI4LCA0LCAyNDIsIDkyLCAyOCwgNCwgMjQyLCAKLSAgICAxOTAsIDI4LCA0LCAyNDMsIDEwNywgMjgsIDQsIDI0MywgMzEsIDI4LCA0LCAyNDMsIDM4LCAyOCwgNCwgMjQyLCAxNTAsIAotICAgIDI4LCA0LCAyNDIsIDE0OSwgMjgsIDQsIDI0MiwgNTksIDI4LCA0LCAyNDIsIDU1LCAyOCwgNCwgMjQyLCA1OCwgMjgsIDQsIAotICAgIDI0MiwgNTYsIDI4LCA0LCAyNDIsIDU3LCAyOCwgNCwgMjQzLCA1LCAyOCwgNCwgMjQyLCAyNDEsIDI4LCA0LCAyNDIsIDI1MSwgCi0gICAgMjgsIDQsIDI0MywgNCwgMjgsIDQsIDI0MiwgMjU1LCAyOCwgNCwgMjQzLCAwLCAyOCwgNCwgMjQyLCAyNDUsIDI4LCA0LCAKLSAgICAyNDIsIDIzMCwgMjgsIDQsIDIxNywgMTYxLCAyOCwgNCwgMjE3LCA5MCwgMjgsIDQsIDIxNywgMTI4LCAyOCwgNCwgMjE3LCAKLSAgICAxNjAsIDI4LCA0LCAyMTcsIDE0NywgMjgsIDQsIDIxNywgMTQ4LCAyOCwgNCwgMjE3LCAxMDksIDI4LCA0LCAyMTcsIDgyLCAKLSAgICAyOCwgNCwgMjUwLCA5MiwgMjgsIDQsIDI1MCwgNiwgMjgsIDQsIDI1MCwgNDcsIDI4LCA0LCAyNTAsIDkxLCAyOCwgNCwgCi0gICAgMjUwLCA2NCwgMjgsIDQsIDI1MCwgNjcsIDI4LCA0LCAyNTAsIDIzLCAyOCwgNCwgMjQ5LCAyNTEsIDI4LCA0LCAyMjYsIDIzLCAKLSAgICAyOCwgNCwgMjI1LCAyNDYsIDI4LCA0LCAyMjYsIDksIDI4LCA0LCAyMjYsIDIyLCAyOCwgNCwgMjI2LCAxMSwgMjgsIDQsIAotICAgIDIyNiwgMTIsIDI4LCA0LCAyMjUsIDI1MywgMjgsIDQsIDIyNSwgMjQyLCAyOCwgNCwgMjE2LCAxNDEsIDI4LCA0LCAyMTYsIAotICAgIDEyMiwgMjgsIDQsIDIxNiwgMTI1LCAyOCwgNCwgMjE2LCAxNDAsIDI4LCA0LCAyMTYsIDEzNSwgMjgsIDQsIDIxNiwgMTM2LCAKLSAgICAyOCwgNCwgMjE2LCAxMjQsIDI4LCA0LCAyMTYsIDEyMCwgMjgsIDQsIDIxNiwgNSwgMjgsIDQsIDIxNSwgMjUzLCAyOCwgNCwgCi0gICAgMjE2LCAxLCAyOCwgNCwgMjE2LCA0LCAyOCwgNCwgMjE2LCAyLCAyOCwgNCwgMjE2LCAzLCAyOCwgNCwgMjE1LCAyNTUsIDI4LCAKLSAgICA0LCAyMTUsIDI1NCwgMjgsIDQsIDI0NCwgMTY0LCAyOCwgNCwgMjQzLCAyMDUsIDI4LCA0LCAyNDQsIDkwLCAyOCwgNCwgCi0gICAgMjQ0LCAxNjMsIDI4LCA0LCAyNDQsIDExNiwgMjgsIDQsIDI0NCwgMTIzLCAyOCwgNCwgMjQ0LCAxMiwgMjgsIDQsIDI0MywgCi0gICAgMTg4LCAyOCwgNCwgMTkzLCAyOCwgNCwgMjI1LCAzNSwgMjgsIDQsIDIyNSwgMjQwLCAyOCwgNCwgMjI2LCAyMTMsIDI4LCA0LCAKLSAgICAyMjYsIDg2LCAyOCwgNCwgMjI2LCA5NiwgMjgsIDQsIDIyNSwgMTUwLCAyOCwgNCwgMjI1LCAyLCAyOCwgNCwgMjIzLCAxMSwgCi0gICAgMjgsIDQsIDIzMCwgMTAzLCAyOCwgNCwgMjQzLCAxODIsIDI4LCAzNywgMjQzLCAyOSwgMjQsIDMwLCAyMzMsIDQ3LCA3NywgCi0gICAgMjgsIDM3LCAzMCwgMjMzLCA0NywgNzcsIDI4LCAzNywgMjQzLCAyOSwgNzcsIDI4LCAyMjIsIDkyLCA3NywgMjgsIDIxMywgCi0gICAgMTk1LCAyOCwgMjQzLCAyMDAsIDIxOSwgNjksIDI4LCAyNDksIDE1NywgMjgsIDIyMSwgNzAsIDI4LCAyNDksIDE2NCwgMjgsIAotICAgIDIyNSwgNzksIDI0OSwgMTY0LCAyOCwgMjI0LCAxNTgsIDc3LCAyOCwgMjI2LCAxNDMsIDIyMSwgNTcsIDI4LCAyMSwgMTE2LCAKLSAgICAyOCwgMjEsIDEwOSwgMjgsIDIxLCAxNjYsIDI4LCAyMSwgMTYzLCAyOCwgMjEsIDE4MCwgMjgsIDIxLCAxODksIDI4LCAyMSwgCi0gICAgMTk4LCAyOCwgMjEsIDE5NSwgMjgsIDIxLCAyMDAsIDI4LCA1MCwgMjE3LCAyMDAsIDI4LCA1MCwgMjE2LCAzOCwgMjgsIDUwLCAKLSAgICAyMTcsIDExNSwgMjgsIDUwLCAyNDMsIDI0MCwgMjgsIDUwLCAyNDQsIDgzLCAyOCwgNTAsIDIyMCwgMzksIDI4LCA1MCwgCi0gICAgMjIxLCAzNywgMjgsIDUwLCAyNDUsIDE0MSwgMjgsIDUwLCAyMjksIDI2LCAyOCwgNTAsIDI0MCwgMjAwLCAyOCwgNTAsIAotICAgIDIxNywgMjAxLCAyMTcsIDEwMCwgMjgsIDQsIDIyMiwgOTYsIDIzMCwgMTE0LCAyOCwgNCwgMjMwLCAxMTAsIDI4LCA0LCAKLSAgICAyMzAsIDExMSwgMjgsIDQsIDIzMCwgMTEyLCAyOCwgNCwgMjIyLCA5NiwgMjUxLCAxMiwgMjgsIDQsIDI1MSwgOSwgMjgsIDQsIAotICAgIDI1MSwgMTAsIDI4LCA0LCAyNTEsIDExLCAyOCwgNCwgMjIyLCA5NiwgMjQzLCAxODgsIDI4LCA0LCAyNDMsIDE4NCwgMjgsIAotICAgIDQsIDI0MywgMTg1LCAyOCwgNCwgMjQzLCAxODYsIDI4LCA0LCAyMjIsIDk2LCAyMjUsIDIsIDI4LCA0LCAyMjQsIDI1NCwgCi0gICAgMjgsIDQsIDIyNCwgMjU1LCAyOCwgNCwgMjI1LCAwLCAyOCwgMjE2LCAyNDIsIDE1MiwgMjEyLCAyMzgsIDI4LCAyMTYsIAotICAgIDI0MiwgMTUyLCAyNDcsIDI0OCwgMjgsIDIxNiwgMjQyLCAxNTIsIDIyMywgMTM1LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjIwLCAKLSAgICAxNzUsIDIyMywgMTM1LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjQ3LCAxODcsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMzQsIDE3MCwgCi0gICAgMjgsIDIxNiwgMjQyLCAxNTIsIDI1MCwgMzEsIDI4LCAyMTYsIDI0MiwgMTUyLCAyNDEsIDE2MiwgMjgsIDIxNiwgMjQyLCAKLSAgICAxNTIsIDI0NywgMjQ3LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjMzLCAyMTUsIDE1OCwgMSwgNjEsIDE1OCwgMSwgNzQsIDE1OCwgCi0gICAgMSwgNzIsIDE1OCwgMSwgNzUsIDE1OCwgMSwgNjksIDE1OCwgMSwgMjE1LCA3OSwgMTU4LCAxLCAyNDMsIDExMCwgMTU4LCAxLCAKLSAgICAxODEsIDE1OCwgMSwgMjQzLCAzOCwgMTU4LCAxLCAyNDIsIDE5MCwgMTU4LCAxLCAyNDIsIDE1MCwgMTU4LCAxLCAyNDIsIAotICAgIDkyLCAxNTgsIDEsIDI0MiwgNjAsIDE1OCwgMSwgMTU5LCAxNTgsIDEsIDI0MSwgMjIyLCAxNTgsIDEsIDI0MSwgMTY1LCAKLSAgICAxNTgsIDEsIDI0MSwgNTQsIDE1OCwgMSwgMjQwLCAyMTIsIDE1OCwgMSwgMjQwLCAxOTMsIDE1OCwgMSwgMjMzLCAxNTcsIAotICAgIDE1OCwgMSwgMjMzLCA4MiwgMTU4LCAxLCAyMzMsIDEzLCAxNTgsIDEsIDIzMiwgMjA4LCAxNTgsIDEsIDIzMiwgMTU2LCAKLSAgICAxNTgsIDEsIDIzMiwgMTMwLCAxNTgsIDEsIDE4OCwgMTU4LCAxLCAyMzEsIDE1NiwgMTU4LCAxLCAyMzEsIDQyLCAxNTgsIDEsIAotICAgIDIzMCwgMjMxLCAxNTgsIDEsIDIzMCwgMTcyLCAxNTgsIDEsIDIwNSwgMTU4LCAxLCAyNDEsIDc2LCAxNTgsIDEsIDIzMCwgCi0gICAgMzEsIDE1OCwgMSwgMjI5LCAxODcsIDE1OCwgMSwgMjI5LCA2NCwgMTU4LCAxLCAyMjgsIDE4NSwgMTU4LCAxLCAyMjgsIDkyLCAKLSAgICAxNTgsIDEsIDIyOCwgMzMsIDE1OCwgMSwgMjI0LCAxNzQsIDE1OCwgMSwgMjI0LCAxNjEsIDE1OCwgMSwgMjI0LCAxNTQsIAotICAgIDE1OCwgMSwgMjI0LCAxNDYsIDE1OCwgMSwgMjI0LCAxMzUsIDE1OCwgMSwgMjI0LCAxMzMsIDE1OCwgMSwgMjIyLCAyMDIsIAotICAgIDE1OCwgMSwgMTk3LCAxNTgsIDEsIDIyMiwgMTAwLCAxNTgsIDEsIDIyMCwgMTE3LCAxNTgsIDEsIDIxOSwgMjQyLCAxNTgsIAotICAgIDEsIDIxOSwgMjcsIDE1OCwgMSwgMjE4LCAyMDMsIDE1OCwgMSwgMjQ4LCAxNjQsIDE1OCwgMSwgMjE4LCA1MiwgMTU4LCAxLCAKLSAgICAyNDgsIDQxLCAxNTgsIDEsIDIxNywgMjI5LCAxNTgsIDEsIDI0NywgMjExLCAxNTgsIDEsIDIxNywgNzEsIDE1OCwgMSwgCi0gICAgMjQ3LCA5OSwgMTU4LCAxLCAyNDYsIDMzLCAxNTgsIDEsIDI0NiwgNSwgMTU4LCAxLCAyNDcsIDEwOCwgMTU4LCAxLCAyMTcsIAotICAgIDEyLCAxNTgsIDEsIDIxNywgMTEsIDE1OCwgMSwgMjE3LCAxLCAxNTgsIDEsIDIxNywgMCwgMTU4LCAxLCAyMTYsIDI1NSwgCi0gICAgMTU4LCAxLCAyMTYsIDI1NCwgMTU4LCAxLCAyMTYsIDE0MSwgMTU4LCAxLCAyMTYsIDEzNiwgMTU4LCAxLCAyMTYsIDEyNSwgCi0gICAgMTU4LCAxLCAyMTYsIDEyNCwgMTU4LCAxLCAyMTYsIDEyMiwgMTU4LCAxLCAyMTYsIDEyMSwgMTU4LCAxLCAyMTQsIDQ5LCAKLSAgICAxNTgsIDEsIDIxNCwgNiwgMTU4LCAxLCAyMTMsIDIzNSwgMTU4LCAxLCAyMTMsIDIxNCwgMTU4LCAxLCAyMTMsIDE4MywgCi0gICAgMTU4LCAxLCAyMTMsIDE3MSwgMTU4LCAxLCAxODYsIDE1OCwgMSwgMjEzLCAzOCwgMTU4LCAxLCAyMTIsIDI1NSwgMTU4LCAxLCAKLSAgICAyMTIsIDIzNSwgMTU4LCAxLCAyMTIsIDIwMywgMTU4LCAxLCAyMTIsIDE2OSwgMTgsIDE5LCAyNDAsIDE2MCwgMTgsIDE5LCAKLSAgICA3NCwgMTgsIDE5LCAyNTQsIDE5NiwgMTgsIDE5LCA3MiwgMTgsIDE5LCAyMzYsIDI4LCAxOCwgMTksIDc1LCAxOCwgMTksIAotICAgIDIyNywgNDksIDE4LCAxOSwgMjEzLCAxMDQsIDIyNywgNDksIDE4LCAxOSwgNjYsIDI0NSwgMTY1LCAxOCwgMTksIDY2LCA3MiwgCi0gICAgMTgsIDE5LCA2MSwgMTgsIDE5LCAyNTQsIDIzMiwgMTgsIDE5LCAyMTQsIDYsIDE4LCAxOSwgMTQ4LCAyMTQsIDYsIDE4LCAKLSAgICAxOSwgMjEzLCAyMzUsIDE4LCAxOSwgMTQ4LCAyMTMsIDIzNSwgMTgsIDE5LCAyMTMsIDIyNywgMTgsIDE5LCAxNDgsIDIxMywgCi0gICAgMjI3LCAxOCwgMTksIDIxMywgMjE0LCAxOCwgMTksIDE0OCwgMjEzLCAyMTQsIDE4LCAxOSwgMjEzLCAyMDIsIDE4LCAxOSwgCi0gICAgMTQ4LCAyMTMsIDIwMiwgMTgsIDE5LCAyMzAsIDExLCAyMTMsIDIwMiwgMTgsIDE5LCAyMTQsIDQ5LCAxOCwgMTksIDE0OCwgCi0gICAgMjE0LCA0OSwgMTgsIDE5LCAyMTQsIDQ4LCAxOCwgMTksIDE0OCwgMjE0LCA0OCwgMTgsIDE5LCAyMzAsIDExLCAyMTQsIDQ4LCAKLSAgICAxOCwgMTksIDI1NCwgMTA4LCAxOCwgMTksIDIxMywgMTA0LCAyMTQsIDgyLCAxOCwgMTksIDI0MiwgMTU2LCAyMTksIDY5LCAKLSAgICAxOCwgMTksIDQwLCAxNzksIDE4LCAxOSwgNDAsIDI0MiwgMTEzLCAxOCwgMTksIDQwLCAyNTEsIDEwMSwgMTUxLCAyMjMsIAotICAgIDEzMCwgMTgsIDE5LCA0MCwgMjE2LCAyMjcsIDE1MSwgMjIzLCAxMzAsIDE4LCAxOSwgNDAsIDQ2LCAxNTEsIDIyMywgMTMwLCAKLSAgICAxOCwgMTksIDQwLCAyMjMsIDEzMCwgMTgsIDE5LCA0MCwgNTEsIDE3OSwgMTgsIDE5LCA0MCwgNTEsIDIyMCwgMTc1LCA3MSwgCi0gICAgMjE5LCAzMiwgMTgsIDE5LCA0MCwgMjMxLCAzNywgMjQ3LCA3NCwgMTgsIDE5LCA0MCwgMjIwLCAxNzUsIDE5OSwgOTAsIDE4LCAKLSAgICAxOSwgNDAsIDIyNSwgMTU2LCAxOCwgMTksIDQwLCAxMTksIDIxOCwgMzYsIDE4LCAxOSwgMjQ1LCAxMDgsIDE4LCAxOSwgCi0gICAgMjM1LCAyNTEsIDE4LCAxOSwgMjI3LCA2MiwgMTgsIDE5LCAyNTQsIDMyLCAxOCwgMTksIDIyNiwgOTYsIDE4LCAxOSwgMjI2LCAKLSAgICAyMTEsIDE4LCAxOSwgMjI1LCAyNDAsIDE4LCAxOSwgMjI1LCAyMDMsIDE4LCAxOSwgMjI1LCAxNTAsIDE4LCAxOSwgMjI1LCAKLSAgICAxMjksIDE4LCAxOSwgMjEzLCAxMDQsIDIyNSwgMTI5LCAxOCwgMTksIDY2LCAyNDEsIDIwNCwgMTgsIDE5LCA2NiwgMjQxLCAKLSAgICAxNjUsIDE4LCAxOSwgMTkzLCAxOCwgMTksIDIyNiwgMjEzLCAxOCwgMTksIDIyNSwgMCwgMTgsIDE5LCAxNDgsIDIyNSwgMCwgCi0gICAgMTgsIDE5LCAyMjQsIDI1NCwgMTgsIDE5LCAxNDgsIDIyNCwgMjU0LCAxOCwgMTksIDIyNCwgMjUzLCAxOCwgMTksIDE0OCwgCi0gICAgMjI0LCAyNTMsIDE4LCAxOSwgMjI0LCAyNTEsIDE4LCAxOSwgMTQ4LCAyMjQsIDI1MSwgMTgsIDE5LCAyMjQsIDI1MCwgMTgsIAotICAgIDE5LCAxNDgsIDIyNCwgMjUwLCAxOCwgMTksIDIyNSwgMiwgMTgsIDE5LCAxNDgsIDIyNSwgMiwgMTgsIDE5LCAyMjUsIDEsIAotICAgIDE4LCAxOSwgMTQ4LCAyMjUsIDEsIDE4LCAxOSwgMjEzLCAxMDQsIDIyNSwgMSwgMTgsIDE5LCAyMjYsIDIyOSwgMTgsIDE5LCAKLSAgICAxNDgsIDIyNiwgMjI5LCAxOCwgMTksIDY2LCAyNDIsIDQxLCAxOCwgMTksIDIxNywgMjI5LCAxOCwgMTksIDIxOCwgNDcsIAotICAgIDE4LCAxOSwgMjE3LCA3MSwgMTgsIDE5LCAyMTcsIDU3LCAxOCwgMTksIDEwOCwgMTgsIDE5LCAyMTYsIDIzMCwgMTgsIDE5LCAKLSAgICAyMTMsIDEwNCwgMjE2LCAyMzAsIDE4LCAxOSwgNjYsIDI0OCwgMjgsIDE4LCAxOSwgNjYsIDI0NywgMjExLCAxOCwgMTksIAotICAgIDIxOCwgNTIsIDE4LCAxOSwgMjE4LCA0OSwgMTgsIDE5LCAyMTYsIDQzLCAxOCwgMTksIDE0OCwgMjE2LCA0MywgMTgsIDE5LCAKLSAgICAyMTYsIDI3LCAxOCwgMTksIDE0OCwgMjE2LCAyNywgMTgsIDE5LCAyMTYsIDI2LCAxOCwgMTksIDE0OCwgMjE2LCAyNiwgMTgsIAotICAgIDE5LCAxMDksIDE4LCAxOSwgMTQ4LCAxMDksIDE4LCAxOSwgMjE2LCAyMCwgMTgsIDE5LCAxNDgsIDIxNiwgMjAsIDE4LCAxOSwgCi0gICAgMjE2LCA0NSwgMTgsIDE5LCAxNDgsIDIxNiwgNDUsIDE4LCAxOSwgMjE2LCA0NCwgMTgsIDE5LCAxNDgsIDIxNiwgNDQsIDE4LCAKLSAgICAxOSwgMjMwLCAxMSwgMjE2LCA0NCwgMTgsIDE5LCAyMTgsIDk5LCAxOCwgMTksIDIxNiwgMTEyLCAxOCwgMTksIDIxNiwgOTYsIAotICAgIDE4LCAxOSwgMjE2LCA5NSwgMTgsIDE5LCAyMTYsIDExNSwgMTgsIDE5LCAyMzQsIDE4OCwgMTgsIDE5LCAyMzUsIDExLCAxOCwgCi0gICAgMTksIDIzNCwgMTAxLCAxOCwgMTksIDIzNCwgOTIsIDE4LCAxOSwgMjM0LCAzNywgMTgsIDE5LCAyMzQsIDE5LCAxOCwgMTksIAotICAgIDIxMywgMTA0LCAyMzQsIDE5LCAxOCwgMTksIDE4MSwgMTgsIDE5LCAyMzUsIDE0LCAxOCwgMTksIDIzMywgMjAwLCAxOCwgCi0gICAgMTksIDE0OCwgMjMzLCAyMDAsIDE4LCAxOSwgMjMzLCAxOTgsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5OCwgMTgsIDE5LCAyMzMsIAotICAgIDE5NywgMTgsIDE5LCAxNDgsIDIzMywgMTk3LCAxOCwgMTksIDIzMywgMTk2LCAxOCwgMTksIDE0OCwgMjMzLCAxOTYsIDE4LCAKLSAgICAxOSwgMjMzLCAxOTUsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5NSwgMTgsIDE5LCAyMzMsIDIwNCwgMTgsIDE5LCAxNDgsIDIzMywgCi0gICAgMjA0LCAxOCwgMTksIDIzMywgMjAzLCAxOCwgMTksIDE0OCwgMjMzLCAyMDMsIDE4LCAxOSwgMjMwLCAxMSwgMjMzLCAyMDMsIAotICAgIDE4LCAxOSwgMjM1LCAyNywgMTgsIDE5LCAyMzMsIDIwNSwgMTgsIDE5LCAyMTksIDIxNCwgMjM0LCAxODIsIDE4LCAxOSwgCi0gICAgMjE5LCAyMTQsIDIzNCwgOTMsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMzIsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMjUyLCAKLSAgICAxOCwgMTksIDI1MCwgMTI0LCAxOCwgMTksIDI1MCwgMjE3LCAxOCwgMTksIDI0OSwgMjQ0LCAxOCwgMTksIDI0OSwgMjM0LCAKLSAgICAxOCwgMTksIDI0OSwgMTc1LCAxOCwgMTksIDI0OSwgMTEzLCAxOCwgMTksIDIxMywgMTA0LCAyNDksIDExMywgMTgsIDE5LCAKLSAgICAyNTAsIDIxOSwgMTgsIDE5LCAyNTAsIDIxOCwgMTgsIDE5LCAyNDksIDIyLCAxOCwgMTksIDE0OCwgMjQ5LCAyMiwgMTgsIAotICAgIDE5LCAyNDksIDIwLCAxOCwgMTksIDE0OCwgMjQ5LCAyMCwgMTgsIDE5LCAyNDksIDE5LCAxOCwgMTksIDE0OCwgMjQ5LCAxOSwgCi0gICAgMTgsIDE5LCAyNDksIDE4LCAxOCwgMTksIDE0OCwgMjQ5LCAxOCwgMTgsIDE5LCAyNDksIDE3LCAxOCwgMTksIDE0OCwgMjQ5LCAKLSAgICAxNywgMTgsIDE5LCAyNDksIDI0LCAxOCwgMTksIDE0OCwgMjQ5LCAyNCwgMTgsIDE5LCAyNDksIDIzLCAxOCwgMTksIDE0OCwgCi0gICAgMjQ5LCAyMywgMTgsIDE5LCAyMzAsIDExLCAyNDksIDIzLCAxOCwgMTksIDI1MCwgMjUyLCAxOCwgMTksIDIyMiwgMTI3LCAKLSAgICAyMTcsIDE2MywgMTgsIDE5LCAyMzEsIDE1NiwgMTgsIDE5LCAyMzIsIDQwLCAxOCwgMTksIDIzMSwgNDIsIDE4LCAxOSwgCi0gICAgMjMxLCAxNCwgMTgsIDE5LCAyMzAsIDIzMSwgMTgsIDE5LCAyMzAsIDIwMiwgMTgsIDE5LCAyMTMsIDEwNCwgMjMwLCAyMDIsIAotICAgIDE4LCAxOSwgMTg4LCAxOCwgMTksIDIzMiwgNDEsIDE4LCAxOSwgMjMwLCAxMTIsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMiwgCi0gICAgMTgsIDE5LCAyMzAsIDExMCwgMTgsIDE5LCAxNDgsIDIzMCwgMTEwLCAxOCwgMTksIDIzMCwgMTA5LCAxOCwgMTksIDE0OCwgCi0gICAgMjMwLCAxMDksIDE4LCAxOSwgMjMwLCAxMDgsIDE4LCAxOSwgMTQ4LCAyMzAsIDEwOCwgMTgsIDE5LCAyMzAsIDEwNywgMTgsIAotICAgIDE5LCAxNDgsIDIzMCwgMTA3LCAxOCwgMTksIDIzMCwgMTE0LCAxOCwgMTksIDE0OCwgMjMwLCAxMTQsIDE4LCAxOSwgMjMwLCAKLSAgICAxMTMsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMywgMTgsIDE5LCAyMzAsIDExLCAyMzAsIDExMywgMTgsIDE5LCAxODMsIDE4LCAKLSAgICAxOSwgMTQ4LCAxODMsIDE4LCAxOSwgMjMxLCA0NSwgMTgsIDE5LCAyNTMsIDEyMSwgMTgzLCAxOCwgMTksIDIyMiwgMTI3LCAKLSAgICAxODMsIDE4LCAxOSwgMjI5LCAxODcsIDE4LCAxOSwgMjMwLCA0MiwgMTgsIDE5LCAyMjksIDY0LCAxOCwgMTksIDIyOSwgMzksIAotICAgIDE4LCAxOSwgMjI4LCAxODUsIDE4LCAxOSwgMjI4LCAxNzUsIDE4LCAxOSwgMjEzLCAxMDQsIDIyOCwgMTc1LCAxOCwgMTksIAotICAgIDIwNSwgMTgsIDE5LCAyMzAsIDQzLCAxOCwgMTksIDIyOCwgMjksIDE4LCAxOSwgMTQ4LCAyMjgsIDI5LCAxOCwgMTksIDIyOCwgCi0gICAgMzEsIDE4LCAxOSwgMTQ4LCAyMjgsIDMxLCAxOCwgMTksIDIyOCwgMzAsIDE4LCAxOSwgMTQ4LCAyMjgsIDMwLCAxOCwgMTksIAotICAgIDIzMCwgMTEsIDIyOCwgMzAsIDE4LCAxOSwgMjA0LCAxOCwgMTksIDY2LCAyMjksIDE2MSwgMTgsIDE5LCAyMjksIDY5LCAxOCwgCi0gICAgMTksIDIzMywgODIsIDE4LCAxOSwgMjMzLCAxNTUsIDE4LCAxOSwgMjMzLCAxMywgMTgsIDE5LCAyMzIsIDI1NSwgMTgsIDE5LCAKLSAgICAyMzIsIDIwOCwgMTgsIDE5LCAyMzIsIDE4MCwgMTgsIDE5LCAyMTMsIDEwNCwgMjMyLCAxODAsIDE4LCAxOSwgMjMzLCAxNTcsIAotICAgIDE4LCAxOSwgMjMzLCAxNTYsIDE4LCAxOSwgMjMyLCAxMjcsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNywgMTgsIDE5LCAyMzIsIAotICAgIDEyNiwgMTgsIDE5LCAxNDgsIDIzMiwgMTI2LCAxOCwgMTksIDIzMiwgMTI1LCAxOCwgMTksIDE0OCwgMjMyLCAxMjUsIDE4LCAKLSAgICAxOSwgMjMyLCAxMjQsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNCwgMTgsIDE5LCAyMzIsIDEyMywgMTgsIDE5LCAxNDgsIDIzMiwgCi0gICAgMTIzLCAxOCwgMTksIDIzMiwgMTI5LCAxOCwgMTksIDE0OCwgMjMyLCAxMjksIDE4LCAxOSwgMjMyLCAxMjgsIDE4LCAxOSwgCi0gICAgMTQ4LCAyMzIsIDEyOCwgMTgsIDE5LCAxNTAsIDE4LCAxOSwgMTQ4LCAxNTAsIDE4LCAxOSwgMTM4LCAxNTAsIDE4LCAxOSwgCi0gICAgMjIyLCAxMDAsIDE4LCAxOSwgMjIyLCAxOTgsIDE4LCAxOSwgMjIwLCAxMTcsIDE4LCAxOSwgMjIwLCAxMDEsIDE4LCAxOSwgCi0gICAgMjE5LCAyNDIsIDE4LCAxOSwgMjE5LCAyMjYsIDE4LCAxOSwgMjEzLCAxMDQsIDIxOSwgMjI2LCAxOCwgMTksIDIyMiwgMjAyLCAKLSAgICAxOCwgMTksIDIyMiwgMjAwLCAxOCwgMTksIDIxOCwgMTk0LCAxOCwgMTksIDE0OCwgMjE4LCAxOTQsIDE4LCAxOSwgMjE4LCAKLSAgICAxODgsIDE4LCAxOSwgMTQ4LCAyMTgsIDE4OCwgMTgsIDE5LCAyMTgsIDE4NywgMTgsIDE5LCAxNDgsIDIxOCwgMTg3LCAxOCwgCi0gICAgMTksIDIxOCwgMTgzLCAxOCwgMTksIDE0OCwgMjE4LCAxODMsIDE4LCAxOSwgMjE4LCAxODIsIDE4LCAxOSwgMTQ4LCAyMTgsIAotICAgIDE4MiwgMTgsIDE5LCAyMTgsIDE5OCwgMTgsIDE5LCAxNDgsIDIxOCwgMTk4LCAxOCwgMTksIDIxOCwgMTk3LCAxOCwgMTksIAotICAgIDE0OCwgMjE4LCAxOTcsIDE4LCAxOSwgMjMwLCAxMSwgMjE4LCAxOTcsIDE4LCAxOSwgMTk3LCAxOCwgMTksIDI1MywgMTIxLCAKLSAgICAxOTcsIDE4LCAxOSwgMjE4LCAxOTksIDE4LCAxOSwgMjUxLCAxNDEsIDE5NywgMTgsIDE5LCAyMzAsIDE5NywgMjIwLCAzNiwgCi0gICAgMTgsIDE5LCAyMzAsIDExLCAyMjAsIDI3LCAxOCwgMTksIDIzMCwgMTEsIDIyMywgMiwgMTgsIDE5LCAyMzAsIDExLCAyMTksIAotICAgIDE2NywgMTgsIDE5LCAyMzAsIDExLCAyMTksIDI5LCAxOCwgMTksIDIzMCwgMTEsIDIyMCwgMjYsIDE4LCAxOSwgMjMwLCAxMSwgCi0gICAgMjIyLCAxMDMsIDE4LCAxOSwgMjIwLCAyNDMsIDE4LCAxOSwgMjIwLCAyMTIsIDE4LCAxOSwgMjIwLCAyMDcsIDE4LCAxOSwgCi0gICAgMjIwLCAxODcsIDE4LCAxOSwgMjIwLCAxODEsIDE4LCAxOSwgMjIxLCAyNCwgMTgsIDE5LCAyMjEsIDIwLCAxOCwgMTksIAotICAgIDIyMCwgMTMyLCAxOCwgMTksIDE0OCwgMjIwLCAxMzIsIDE4LCAxOSwgMjIwLCAxMzEsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMSwgCi0gICAgMTgsIDE5LCAyMjAsIDEzMCwgMTgsIDE5LCAxNDgsIDIyMCwgMTMwLCAxOCwgMTksIDIyMCwgMTI5LCAxOCwgMTksIDE0OCwgCi0gICAgMjIwLCAxMjksIDE4LCAxOSwgMjIwLCAxMjgsIDE4LCAxOSwgMTQ4LCAyMjAsIDEyOCwgMTgsIDE5LCAyMjAsIDEzNCwgMTgsIAotICAgIDE5LCAxNDgsIDIyMCwgMTM0LCAxOCwgMTksIDIyMCwgMTMzLCAxOCwgMTksIDE0OCwgMjIwLCAxMzMsIDE4LCAxOSwgMjIxLCAKLSAgICAyNiwgMTgsIDE5LCAyMTMsIDM4LCAxOCwgMTksIDIxMywgODksIDE4LCAxOSwgMjEyLCAyNTUsIDE4LCAxOSwgMjEyLCAyNDYsIAotICAgIDE4LCAxOSwgMjEyLCAyMzUsIDE4LCAxOSwgMjEyLCAyMjAsIDE4LCAxOSwgMjEzLCAxMDQsIDIxMiwgMjIwLCAxOCwgMTksIAotICAgIDE4NiwgMTgsIDE5LCAyMTMsIDkxLCAxOCwgMTksIDIxMiwgMTY2LCAxOCwgMTksIDE0OCwgMjEyLCAxNjYsIDE4LCAxOSwgCi0gICAgMjEyLCAxNjUsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2NSwgMTgsIDE5LCAyMTIsIDE2NCwgMTgsIDE5LCAxNDgsIDIxMiwgMTY0LCAKLSAgICAxOCwgMTksIDIxMiwgMTYzLCAxOCwgMTksIDE0OCwgMjEyLCAxNjMsIDE4LCAxOSwgMjEyLCAxNjIsIDE4LCAxOSwgMTQ4LCAKLSAgICAyMTIsIDE2MiwgMTgsIDE5LCAyMTIsIDE2OCwgMTgsIDE5LCAxNDgsIDIxMiwgMTY4LCAxOCwgMTksIDIxMiwgMTY3LCAxOCwgCi0gICAgMTksIDE0OCwgMjEyLCAxNjcsIDE4LCAxOSwgMjMwLCAxMSwgMjEyLCAxNjcsIDE4LCAxOSwgMjEzLCAxMDUsIDE4LCAxOSwgCi0gICAgMjUxLCAxODIsIDIxMywgMTA1LCAxOCwgMTksIDE0OCwgMjEzLCAxMDUsIDE4LCAxOSwgMjIyLCAxMjcsIDIxMiwgMjU1LCAKLSAgICAxOCwgMTksIDIyNCwgMjEsIDE4LCAxOSwgMjI0LCAxMTIsIDIyNCwgMjEsIDE4LCAxOSwgMTQ4LCAyMzMsIDgyLCAxOCwgMTksIAotICAgIDIyNCwgNzMsIDE4LCAxOSwgMjIzLCAxODgsIDE4LCAxOSwgMjIzLCAxMzYsIDE4LCAxOSwgMjIzLCAxMTIsIDE4LCAxOSwgCi0gICAgMjIzLCA5OSwgMTgsIDE5LCAxNDgsIDIzMiwgMjA4LCAxOCwgMTksIDIwMywgMTgsIDE5LCAyMjQsIDc0LCAxOCwgMTksIAotICAgIDE0OCwgMjMzLCAxNTcsIDE4LCAxOSwgMjIzLCAyMCwgMTgsIDE5LCAxNDgsIDIyMywgMjAsIDE4LCAxOSwgMTQ5LCAxOCwgCi0gICAgMTksIDE0OCwgMTQ5LCAxOCwgMTksIDEzOCwgMTQ5LCAxOCwgMTksIDI0NCwgMTIzLCAxOCwgMTksIDI0NCwgMTYxLCAxOCwgCi0gICAgMTksIDI0NCwgOTAsIDE4LCAxOSwgMjQ0LCA3NywgMTgsIDE5LCAyNDQsIDEyLCAxOCwgMTksIDI0NCwgMywgMTgsIDE5LCAKLSAgICAyNDQsIDE2NCwgMTgsIDE5LCAyNDQsIDE2MywgMTgsIDE5LCAyNDMsIDE4NywgMTgsIDE5LCAxNDgsIDI0MywgMTg3LCAxOCwgCi0gICAgMTksIDI0NCwgMjMwLCAxOCwgMTksIDIxNywgMTQ4LCAxOCwgMTksIDIzMCwgOTYsIDIxNywgMTQ4LCAxOCwgMTksIDIxNywgCi0gICAgMTI4LCAxOCwgMTksIDIzMCwgOTYsIDIxNywgMTI4LCAxOCwgMTksIDIxNywgMTI0LCAxOCwgMTksIDIzMCwgOTYsIDIxNywgCi0gICAgMTI0LCAxOCwgMTksIDIxNywgMTA5LCAxOCwgMTksIDIxNywgMTA2LCAxOCwgMTksIDIxNywgMTYxLCAxOCwgMTksIDIxNywgCi0gICAgMTYwLCAxOCwgMTksIDIxNywgODEsIDE4LCAxOSwgMTQ4LCAyMTcsIDgxLCAxOCwgMTksIDIxNywgMTYzLCAxOCwgMTksIAotICAgIDIxNiwgMTAzLCAxOCwgMTksIDIxNiwgMTAxLCAxOCwgMTksIDIxNiwgMTAwLCAxOCwgMTksIDIxNiwgMTA1LCAxOCwgMTksIAotICAgIDIxNiwgMTA2LCAxOCwgMTksIDIxNiwgMTgsIDE4LCAxOSwgMjE2LCAxNywgMTgsIDE5LCAyMTYsIDE2LCAxOCwgMTksIDIxNiwgCi0gICAgMTksIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAyMjIsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAxNjUsIDE4LCAxOSwgMjI4LCAKLSAgICA0OSwgMjQxLCAxNDcsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCA1NCwgMTgsIDE5LCAyMjgsIDQ5LCAyNDEsIDM5LCAxOCwgMTksIAotICAgIDIyOCwgNDksIDE1OSwgMTgsIDE5LCAyMjgsIDQ5LCAyNDIsIDI3LCAxOCwgMTksIDIyOCwgNDksIDI0MiwgNDEsIDE4LCAxOSwgCi0gICAgMjI4LCA0OCwgMjQyLCA0MSwgMTgsIDE5LCAyNDEsIDE0MCwgMTgsIDE5LCAyMjQsIDIyOCwgMTgsIDE5LCAyMjQsIDE5OCwgCi0gICAgMTgsIDE5LCAyMjQsIDE5MywgMTgsIDE5LCAyMjQsIDE4NywgMTgsIDE5LCAyMjQsIDE4MiwgMTgsIDE5LCAyMjQsIDIzMiwgCi0gICAgMTgsIDE5LCAyMjQsIDIzMSwgMTgsIDE5LCAyMjQsIDI0MCwgMTgsIDE5LCAyMTcsIDgsIDE4LCAxOSwgMjE3LCA2LCAxOCwgCi0gICAgMTksIDIxNywgNSwgMTgsIDE5LCAyMTcsIDksIDE4LCAxOSwgMTQ4LCAyMjQsIDIxLCAxOCwgMTksIDE0OCwgMjIzLCAxODgsIAotICAgIDE4LCAxOSwgMTQ4LCAyMjMsIDExMiwgMTgsIDE5LCAxNDgsIDIwMywgMTgsIDE5LCAyMjksIDE1NywgMTgsIDE5LCAyMjksIAotICAgIDExMywgMTgsIDE5LCAyMjksIDEwOSwgMTgsIDE5LCAyMjksIDkwLCAxOCwgMTksIDIyOSwgODUsIDE4LCAxOSwgMjI5LCAKLSAgICAxNTksIDE4LCAxOSwgMjI5LCAxNTgsIDE4LCAxOSwgMjI5LCAxNjEsIDE4LCAxOSwgMjI4LCAxOTYsIDE4LCAxOSwgMjIyLCAKLSAgICAxMjcsIDIyMCwgMjQzLCAxOCwgMTksIDIyMiwgMTI3LCAyMjAsIDIxMiwgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAxODcsIAotICAgIDE4LCAxOSwgMjIyLCAxMjcsIDIyMSwgMjQsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTQ4LCAxOCwgMTksIDIxMywgMjAwLCAKLSAgICAyMTcsIDEyOCwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCAxMDksIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTYxLCAxOCwgMTksIAotICAgIDIxMywgMjAwLCAyMTcsIDE2MywgMTgsIDE5LCAyMzMsIDE5LCAxOCwgMTksIDIzMywgMTgsIDE4LCAxOSwgMjMzLCAxNywgCi0gICAgMTgsIDE5LCAyMzMsIDE2LCAxOCwgMTksIDIzMywgMjUsIDE4LCAxOSwgMjMzLCAyNCwgMTgsIDE5LCAyMzMsIDI2LCAxOCwgCi0gICAgMTksIDIxNywgMTYyLCAyMTcsIDE0OCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMjgsIDE4LCAxOSwgMjE3LCAxNjIsIAotICAgIDIxNywgMTI0LCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIDEwOSwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMDYsIDE4LCAxOSwgCi0gICAgMjE3LCAxNjIsIDIxNywgMTYxLCAxOCwgMTksIDIxNywgMTYyLCAyMTcsIDE2MCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAKLSAgICAxNjMsIDE4LCAxOSwgMjU0LCA5NywgMjUzLCA3NCwgMTgsIDE5LCAyNTEsIDE0MSwgNzQsIDE4LCAxOSwgMjUxLCAxNDEsIAotICAgIDcyLCAxOCwgMTksIDI1MSwgMTQxLCA3NSwgMTgsIDE5LCAyNTEsIDE0MSwgNjEsIDE4LCAxOSwgMjUxLCAxNDEsIDIxNCwgNiwgCi0gICAgMTgsIDE5LCAyNTEsIDE0MSwgMjEzLCAyMzUsIDE4LCAxOSwgMjUxLCAxNDEsIDIxMywgMjE0LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICAyMTQsIDQ5LCAxOCwgMTksIDI1MSwgMTQxLCAyMjksIDE4NywgMTgsIDE5LCAyNTEsIDE0MSwgMjI5LCA2NCwgMTgsIDE5LCAKLSAgICAyNTEsIDE0MSwgMjI4LCAxODUsIDE4LCAxOSwgMjUxLCAxNDEsIDIwNSwgMTgsIDE5LCAyNTEsIDE0MSwgMjM0LCAxODgsIAotICAgIDE4LCAxOSwgMjUxLCAxNDEsIDIzNCwgMTAxLCAxOCwgMTksIDI1MSwgMTQxLCAyMzQsIDM3LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICAxODEsIDE4LCAxOSwgMjIyLCAxMjcsIDI0MSwgMjIyLCAxOCwgMTksIDIyMiwgMTI3LCAyNDEsIDE2NSwgMTgsIDE5LCAyMjIsIAotICAgIDEyNywgMjQxLCA1NCwgMTgsIDE5LCAyMjIsIDEyNywgMTU5LCAxOCwgMTksIDY2LCAyNDIsIDE5NiwgMTgsIDE5LCA2NiwgCi0gICAgMjQyLCAyMDAsIDE4LCAxOSwgNjYsIDI0MiwgMjEyLCAxOCwgMTksIDY2LCAyNDIsIDIxMSwgMTgsIDE5LCA2NiwgMjQyLCAKLSAgICAyMDEsIDE4LCAxOSwgNjYsIDI0MiwgMjI1LCAxOCwgMTksIDY2LCAyMjMsIDUxLCAxOCwgMTksIDY2LCAyMjMsIDExMiwgMTgsIAotICAgIDE5LCA2NiwgMjI0LCAyMSwgMTgsIDE5LCA2NiwgMjI0LCAxLCAxOCwgMTksIDY2LCAyMjMsIDE4OCwgMTgsIDE5LCA2NiwgCi0gICAgMjAzLCAxOCwgMTksIDY2LCAyMTMsIDE4MywgMTgsIDE5LCA2NiwgMjEzLCAyMTQsIDE4LCAxOSwgNjYsIDIxNCwgNiwgMTgsIAotICAgIDE5LCA2NiwgMjE0LCAxLCAxOCwgMTksIDY2LCAyMTMsIDIzNSwgMTgsIDE5LCA2NiwgMjE0LCA0OSwgMTgsIDE5LCA2NiwgCi0gICAgMjQwLCAxODYsIDE4LCAxOSwgNjYsIDI0MCwgMTg3LCAxOCwgMTksIDY2LCAyNDAsIDE5MCwgMTgsIDE5LCA2NiwgMjQwLCAKLSAgICAxODksIDE4LCAxOSwgNjYsIDI0MCwgMTg4LCAxOCwgMTksIDY2LCAyNDAsIDE5MiwgMTgsIDE5LCA2NiwgMjE3LCA5MCwgMTgsIAotICAgIDE5LCA2NiwgMjE3LCAxMDksIDE4LCAxOSwgNjYsIDIxNywgMTQ4LCAxOCwgMTksIDY2LCAyMTcsIDE0NywgMTgsIDE5LCA2NiwgCi0gICAgMjE3LCAxMjgsIDE4LCAxOSwgNjYsIDIxNywgMTYxLCAxOCwgMTksIDY2LCAyMTYsIDg2LCAxOCwgMTksIDY2LCAyMTYsIDk1LCAKLSAgICAxOCwgMTksIDY2LCAyMTYsIDExMiwgMTgsIDE5LCA2NiwgMjE2LCAxMTEsIDE4LCAxOSwgNjYsIDIxNiwgOTYsIDE4LCAxOSwgCi0gICAgNjYsIDIxNiwgMTE1LCAxOCwgMTksIDY2LCAyMjUsIDM1LCAxOCwgMTksIDY2LCAyMjUsIDE1MCwgMTgsIDE5LCA2NiwgMjI2LCAKLSAgICA5NiwgMTgsIDE5LCA2NiwgMjI2LCA4NiwgMTgsIDE5LCA2NiwgMjI1LCAyNDAsIDE4LCAxOSwgNjYsIDE5MywgMTgsIDE5LCAKLSAgICA2NiwgMjI2LCAyMjksIDE4LCAxOSwgNjYsIDI0MiwgOTIsIDE4LCAxOSwgNjYsIDI0MiwgMTUwLCAxOCwgMTksIDY2LCAyNDMsIAotICAgIDM4LCAxOCwgMTksIDY2LCAyNDMsIDMxLCAxOCwgMTksIDY2LCAyNDIsIDE5MCwgMTgsIDE5LCA2NiwgMjQzLCAxMTAsIDE4LCAKLSAgICAxOSwgNjYsIDIzNCwgMTA4LCAxOCwgMTksIDY2LCAyMzQsIDExMywgMTgsIDE5LCA2NiwgMjM0LCAxMjUsIDE4LCAxOSwgNjYsIAotICAgIDIzNCwgMTI0LCAxOCwgMTksIDY2LCAyMzQsIDExOCwgMTgsIDE5LCA2NiwgMjM0LCAxMzgsIDE4LCAxOSwgNjYsIDIzNCwgCi0gICAgNTAsIDE4LCAxOSwgNjYsIDIzNCwgNTEsIDE4LCAxOSwgNjYsIDIzNCwgNTQsIDE4LCAxOSwgNjYsIDIzNCwgNTMsIDE4LCAKLSAgICAxOSwgNjYsIDIzNCwgNTIsIDE4LCAxOSwgNjYsIDIzNCwgNTUsIDE4LCAxOSwgNjYsIDIzNCwgNTYsIDE4LCAxOSwgNjYsIAotICAgIDIyOCwgOTIsIDE4LCAxOSwgNjYsIDIyOCwgMTg1LCAxOCwgMTksIDY2LCAyMjksIDE4NywgMTgsIDE5LCA2NiwgMjI5LCAKLSAgICAxODQsIDE4LCAxOSwgNjYsIDIyOSwgNjQsIDE4LCAxOSwgNjYsIDIwNSwgMTgsIDE5LCA2NiwgMjMwLCAxNzIsIDE4LCAxOSwgCi0gICAgNjYsIDIzMCwgMjMxLCAxOCwgMTksIDY2LCAyMzEsIDE1NiwgMTgsIDE5LCA2NiwgMjMxLCAxNDUsIDE4LCAxOSwgNjYsIAotICAgIDIzMSwgNDIsIDE4LCAxOSwgNjYsIDE4OCwgMTgsIDE5LCA2NiwgMjEyLCAyMDMsIDE4LCAxOSwgNjYsIDIxMiwgMjM1LCAxOCwgCi0gICAgMTksIDY2LCAyMTMsIDM4LCAxOCwgMTksIDY2LCAyMTMsIDM1LCAxOCwgMTksIDY2LCAyMTIsIDI1NSwgMTgsIDE5LCA2NiwgCi0gICAgMTg2LCAxOCwgMTksIDY2LCAyMzUsIDU0LCAxOCwgMTksIDIyMiwgMTI3LCAyMzUsIDU0LCAxOCwgMTksIDY2LCAyMzUsIDcxLCAKLSAgICAxOCwgMTksIDY2LCAyMzUsIDEyNywgMTgsIDE5LCA2NiwgMjM1LCAxMjUsIDE4LCAxOSwgNjYsIDIzNSwgMTEwLCAxOCwgMTksIAotICAgIDIyMiwgMTI3LCAyMzUsIDExMCwgMTgsIDE5LCA2NiwgMjM1LCAxMzksIDE4LCAxOSwgNjYsIDIzNSwgODQsIDE4LCAxOSwgCi0gICAgNjYsIDIzNSwgODgsIDE4LCAxOSwgNjYsIDIzNSwgOTgsIDE4LCAxOSwgNjYsIDIzNSwgOTcsIDE4LCAxOSwgNjYsIDIzNSwgCi0gICAgOTYsIDE4LCAxOSwgNjYsIDIzNSwgOTksIDE4LCAxOSwgNjYsIDIzMiwgMTU2LCAxOCwgMTksIDY2LCAyMzIsIDIwOCwgMTgsIAotICAgIDE5LCA2NiwgMjMzLCA4MiwgMTgsIDE5LCA2NiwgMjMzLCA3NCwgMTgsIDE5LCA2NiwgMjMzLCAxMywgMTgsIDE5LCA2NiwgCi0gICAgMjMzLCAxNTcsIDE4LCAxOSwgNjYsIDI0NywgMTAzLCAxOCwgMTksIDY2LCAyNDcsIDEwNCwgMTgsIDE5LCA2NiwgMjQ3LCAKLSAgICAxMDcsIDE4LCAxOSwgNjYsIDI0NywgMTA2LCAxOCwgMTksIDY2LCAyNDcsIDEwNSwgMTgsIDE5LCA2NiwgMjQ3LCAxMDgsIAotICAgIDE4LCAxOSwgNjYsIDIzMywgMTUsIDE4LCAxOSwgNjYsIDIzMywgMTcsIDE4LCAxOSwgNjYsIDIzMywgMjEsIDE4LCAxOSwgCi0gICAgNjYsIDIzMywgMjAsIDE4LCAxOSwgNjYsIDIzMywgMTksIDE4LCAxOSwgNjYsIDIzMywgMjUsIDE4LCAxOSwgNjYsIDIxNywgCi0gICAgMywgMTgsIDE5LCA2NiwgMjE3LCA1LCAxOCwgMTksIDY2LCAyMTcsIDgsIDE4LCAxOSwgNjYsIDIxNywgNywgMTgsIDE5LCAKLSAgICA2NiwgMjE3LCA2LCAxOCwgMTksIDY2LCAyMTcsIDksIDE4LCAxOSwgNjYsIDIxNiwgMjU1LCAxOCwgMTksIDY2LCAyMTcsIDAsIAotICAgIDE4LCAxOSwgNjYsIDIxNywgMTEsIDE4LCAxOSwgNjYsIDIxNywgMTAsIDE4LCAxOSwgNjYsIDIxNywgMSwgMTgsIDE5LCA2NiwgCi0gICAgMjE3LCAxMiwgMTgsIDE5LCA2NiwgMjEyLCA4LCAxOCwgMTksIDY2LCAyMTIsIDE2LCAxOCwgMTksIDY2LCAyMTIsIDg3LCAKLSAgICAxOCwgMTksIDY2LCAyMTIsIDg1LCAxOCwgMTksIDY2LCAyMTIsIDM3LCAxOCwgMTksIDY2LCAyMTIsIDEwOSwgMTgsIDE5LCAKLSAgICA2NiwgMjEyLCAxNTIsIDE4LCAxOSwgNjYsIDcwLCAyMTIsIDE1MiwgMTgsIDE5LCA2NiwgMjQ1LCAyMzksIDE4LCAxOSwgNjYsIAotICAgIDI0NSwgMjQwLCAxOCwgMTksIDY2LCAyNDUsIDI0NywgMTgsIDE5LCA2NiwgMjQ1LCAyNDYsIDE4LCAxOSwgNjYsIDI0NSwgCi0gICAgMjQyLCAxOCwgMTksIDY2LCAyNDUsIDI0OSwgMTgsIDE5LCA2NiwgMjE5LCAyNywgMTgsIDE5LCA2NiwgMjE5LCAyNDIsIDE4LCAKLSAgICAxOSwgNjYsIDIyMiwgMTAwLCAxOCwgMTksIDY2LCAyMjIsIDg5LCAxOCwgMTksIDY2LCAyMjAsIDExNywgMTgsIDE5LCA2NiwgCi0gICAgMjIyLCAyMDIsIDE4LCAxOSwgNjYsIDIyMCwgMTUwLCAxOCwgMTksIDY2LCAyMjAsIDE4NywgMTgsIDE5LCA2NiwgMjIwLCAKLSAgICAyNDMsIDE4LCAxOSwgNjYsIDIyMCwgMjQxLCAxOCwgMTksIDY2LCAyMjAsIDIxMiwgMTgsIDE5LCA2NiwgMjIxLCAyNCwgMTgsIAotICAgIDE5LCA2NiwgMjIxLCAyNiwgMTgsIDE5LCA2NiwgMjE2LCAxMjIsIDE4LCAxOSwgNjYsIDIxNiwgMTI0LCAxOCwgMTksIDY2LCAKLSAgICAyMTYsIDEzNiwgMTgsIDE5LCA2NiwgMjE2LCAxMzUsIDE4LCAxOSwgNjYsIDIxNiwgMTI1LCAxOCwgMTksIDY2LCAyMTYsIAotICAgIDE0MSwgMTgsIDE5LCA2NiwgMjUwLCA2LCAxOCwgMTksIDY2LCAyNTAsIDIzLCAxOCwgMTksIDY2LCAyNTAsIDY3LCAxOCwgCi0gICAgMTksIDY2LCAyNTAsIDY0LCAxOCwgMTksIDY2LCAyNTAsIDQ3LCAxOCwgMTksIDY2LCAyNTAsIDkyLCAxOCwgMTksIDY2LCAKLSAgICAyMTYsIDg5LCAxOCwgMTksIDY2LCAyMTYsIDkwLCAxOCwgMTksIDY2LCAyMTYsIDkzLCAxOCwgMTksIDY2LCAyMTYsIDkyLCAKLSAgICAxOCwgMTksIDY2LCAyMTYsIDkxLCAxOCwgMTksIDY2LCAyMTYsIDk0LCAxOCwgMTksIDI1MCwgNDgsIDUyLCAxOCwgMTksIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAxOCwgMTksIDIyNCwgMjI0LCAxOCwgMTksIDIyOSwgMTU2LCAxOCwgMTksIDIyOCwgMTkzLCAKLSAgICAxOCwgMTksIDIyOCwgMTkyLCAxOCwgMTksIDIyOCwgMTkxLCAxOCwgMTksIDIyOCwgMTkwLCAxOCwgMTksIDIyOCwgMTk1LCAKLSAgICAxOCwgMTksIDIyOCwgMTk0LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc5LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc4LCAKLSAgICAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc3LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDc2LCAxOCwgMTksIDIxMywgMjAwLCAKLSAgICAyMTcsIDc1LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDgyLCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDgxLCAxOCwgMTksIAotICAgIDIxMywgMjAwLCA0MCwgMjE3LCAxNjMsIDE4LCAxOSwgMjUxLCAxNDEsIDIxNCwgODIsIDIyNywgOTIsIDIxOSwgMjA3LCA3NywgCi0gICAgMjI3LCA5MiwgMSwgMjUxLCAyMjQsIDIyNywgOTIsIDEsIDIzMiwgMTQ1LCAyMjcsIDkyLCAxLCAyNDQsIDEyMCwgMjI3LCAKLSAgICA5MiwgMSwgMjIyLCAxODYsIDIyNywgOTIsIDEsIDIyOSwgMjQsIDIyNywgOTIsIDEsIDIxNSwgMTk1LCAyMjcsIDkyLCAxLCAKLSAgICAyNDgsIDE0MiwgMjI3LCA5MiwgMSwgMjE3LCAzMywgMjI3LCA5MiwgMSwgMjQ5LCAxNjcsIDIyNywgOTIsIDEsIDI1MCwgCi0gICAgMTE0LCAyMjcsIDkyLCAxLCAyMzAsIDE2MSwgMjI3LCA5MiwgMSwgMjQyLCAxMzIsIDIyNywgOTIsIDEsIDIyOSwgMTQ3LCAKLSAgICAyMjcsIDkyLCAxLCAyMTksIDYyLCAyMjcsIDkyLCAxLCAyMjMsIDQ2LCAyMjcsIDkyLCAxLCAyNTQsIDEwNSwgMjI3LCA5MiwgCi0gICAgMSwgMjI3LCA1MywgMjI3LCA5MiwgMSwgMjE1LCAxMjEsIDIyNywgOTIsIDEsIDI0NSwgMTg3LCAyMjcsIDkyLCAxLCAyMzUsIAotICAgIDE4NiwgMjI3LCA5MiwgMSwgMjQ1LCAxODgsIDIyNywgOTIsIDEsIDIyNywgMjQsIDIyNywgOTIsIDEsIDIxNSwgMTc2LCAKLSAgICAyMjcsIDkyLCAxLCAyMzYsIDM0LCAyMjcsIDkyLCAxLCAyNDUsIDE4NSwgMjI3LCA5MiwgMSwgMjI2LCA3NywgMjI3LCA5MiwgCi0gICAgMjQ0LCAxMTksIDc3LCAyMjcsIDkyLCAyMjMsIDIwMiwgMjQ0LCAxMTksIDc3LCAxNjgsIDEsIDI0NCwgMTEwLCAyNDQsIAotICAgIDEwMiwgMjQ0LCAxMjQsIDI0NCwgMjMwLCAxNjgsIDEsIDIxNSwgNzksIDE2OCwgMSwgMjE1LCAxMDYsIDIxNSwgMTIyLCA2OSwgCi0gICAgMTY4LCAxLCAyMTIsIDIwNSwgMTY4LCAxLCAyMTMsIDEwNSwgMTY4LCAxLCAyMTQsIDgyLCAxNjgsIDEsIDIxNywgODQsIAotICAgIDIxNywgODMsIDIxNywgMTA0LCAxNjgsIDEsIDI0NSwgMjUsIDE2OCwgMSwgMjU0LCA0LCA2MSwgMTY4LCAxLCAyMjcsIDEwLCAKLSAgICA3NSwgMTY4LCAxLCAyNTQsIDE3NywgNjEsIDE2OCwgMSwgMjU0LCAxMzIsIDE2OCwgMSwgMjMyLCAxODYsIDc1LCAxNjgsIDEsIAotICAgIDIyMCwgMTY4LCA3NSwgMTY4LCAxLCA3NSwgMTY4LCAxLCAyMjcsIDk5LCAxNjgsIDEsIDIyNywgNjIsIDE2OCwgMSwgMjI0LCAKLSAgICA1NSwgMjI0LCA2NywgMjIzLCAyNDQsIDE0OSwgMTY4LCAxLCAyMzQsIDE5OSwgMTY4LCAxLCAyNTAsIDExMSwgMTY4LCAxLCAKLSAgICAyMzQsIDIwMCwgMjM1LCAyNywgMTY4LCAxLCAyNDMsIDE3NywgMTY4LCAxLCAyNDUsIDk2LCAxNjgsIDEsIDI0MywgMzQsIAotICAgIDI0MiwgNDcsIDI0MywgMTc3LCAxNjgsIDEsIDI0MywgNzIsIDE2OCwgMSwgMjEzLCAxNzYsIDIxMywgMTcwLCAyMTQsIDgyLCAKLSAgICAxNjgsIDEsIDI0MiwgMTksIDI0MiwgNDEsIDE2OCwgMSwgMjQyLCAyMywgMjQyLCA0MSwgMTY4LCAxLCAyMzIsIDE4OCwgCi0gICAgMjQyLCA0MSwgMTY4LCAxLCAyMjAsIDE3MSwgMjQyLCA0MSwgMTY4LCAxLCAyMzAsIDcsIDIyOCwgMTgsIDIzMCwgOCwgMjA0LCAKLSAgICAxNjgsIDEsIDIyMCwgMTY5LCAyMDQsIDE2OCwgMSwgMjQ2LCA2OSwgMTY4LCAxLCAyMzUsIDE2NiwgMjM1LCAxNzAsIDIzNSwgCi0gICAgMTYwLCA3MiwgMTY4LCAxLCA3NCwgMTY4LCAxLCAyMzUsIDExOCwgMjM1LCAxNDIsIDE2OCwgMSwgMjQzLCAxOSwgMTY4LCAxLCAKLSAgICAyMzIsIDE4OSwgMjU0LCAxNDgsIDE2OCwgMSwgMjIwLCAxNzMsIDYxLCAxNjgsIDEsIDIzNSwgMTUyLCAyNDUsIDcyLCAxNjgsIAotICAgIDEsIDIyNiwgNDAsIDIyNiwgNjEsIDIyNiwgMjI5LCAxNjgsIDEsIDI1NCwgNzIsIDI0NSwgNzEsIDE2OCwgMSwgMjE5LCAKLSAgICAyMTEsIDE5NywgMTY4LCAxLCAyMjAsIDEwNSwgMjMyLCAxODUsIDE5NywgMTY4LCAxLCAyMjAsIDE2NywgMTk3LCAxNjgsIDEsIAotICAgIDI1MCwgMjUyLCAxNjgsIDEsIDIxMiwgMTUyLCAxNjgsIDEsIDIxNywgMTYsIDIxNywgMjYsIDIxNiwgNywgMjE4LCA5OSwgCi0gICAgMTY4LCAxLCAyMjAsIDE2NiwgMjE4LCA5OSwgMTY4LCAxLCAyNDksIDMsIDE2OCwgMSwgMjUxLCAyMDgsIDI1MSwgMjExLCAKLSAgICAyNTEsIDE0NywgMjUzLCA3NCwgMTY4LCAxLCAyMjAsIDE3MiwgMjUzLCA3NCwgMTY4LCAxLCAyNDYsIDY4LCAxNjgsIDEsIAotICAgIDIyNywgMzYsIDE2OCwgMSwgMjQ1LCAxNTMsIDI0NSwgMTU1LCA3NCwgMTY4LCAxLCAyMzEsIDI0MSwgMjMxLCAyNDksIDE4MywgCi0gICAgMTY4LCAxLCAyMzIsIDE4NywgMTgzLCAxNjgsIDEsIDIyMCwgMTcwLCAxODMsIDE2OCwgMSwgMjMzLCA5NywgMjMzLCAxMzcsIAotICAgIDIzMiwgMTk2LCAxNTAsIDE2OCwgMSwgMjQ2LCA3MCwgMTY4LCAxLCAyMzUsIDIyNywgMTY4LCAxLCAyMzUsIDIyOCwgMTY4LCAKLSAgICAxLCAyNDgsIDE1MywgMjQ4LCAxNTgsIDI0OSwgMywgMTY4LCAxLCAyMjcsIDYsIDI0NSwgMjQsIDc1LCAxNjgsIDEsIDI0NSwgCi0gICAgMTgzLCAxNjgsIDEsIDIzNSwgMTg1LCAxNjgsIDEsIDI0OSwgMjEsIDE2OCwgMSwgMjUwLCAyMDUsIDE2OCwgMSwgMjUwLCAKLSAgICAxMjMsIDE2OCwgMSwgMjE5LCAxMDAsIDE2OCwgMSwgMjMyLCAxODQsIDE2OCwgMSwgMjIwLCAxNjUsIDE2OCwgMSwgMjQwLCAKLSAgICAxMDMsIDE2OCwgMSwgMjI0LCAyNDAsIDE2OCwgMSwgMjEzLCAxNjYsIDE2OCwgMjIwLCA4MSwgMjI1LCAyNiwgMTY4LCAyMzAsIAotICAgIDE1NSwgMjI1LCAyNiwgMTY4LCAyNDksIDcxLCAyMjUsIDI2LCAxNjgsIDI1MywgMTc3LCA4NywgMTY4LCAyMTYsIDQ3LCA4NywgCi0gICAgMTY4LCAyNTEsIDIyMywgODcsIDIxOCwgMzIsIDEsIDYxLCAyMTgsIDMyLCAxLCA3MiwgMjE4LCAzMiwgMSwgNjksIDIxOCwgCi0gICAgMzIsIDEsIDE4MSwgMjE4LCAzMiwgMSwgMjQzLCAxMTAsIDIxOCwgMzIsIDEsIDIyOSwgMTU5LCAyMTgsIDMyLCAxLCAyMTgsIAotICAgIDUyLCAyMTgsIDMyLCAxLCAyNDgsIDE2NCwgMjE4LCAzMiwgMSwgMjA1LCAyMTgsIDMyLCAxLCAxOTMsIDIxOCwgMzIsIDEsIAotICAgIDI1MiwgMTA3LCAyMTgsIDMyLCAxLCAxODgsIDIxOCwgMzIsIDEsIDE4NiwgMjE4LCAzMiwgMSwgMjMzLCAxNTcsIDIxOCwgCi0gICAgMzIsIDEsIDIxNCwgNDksIDIxOCwgMzIsIDEsIDIyMiwgMjAyLCAyMTgsIDMyLCAxLCAxNTksIDIxOCwgMzIsIDMwLCA1LCAKLSAgICA3MiwgMjE4LCAzMiwgMzAsIDUsIDY5LCAyMTgsIDMyLCA1LCAyMTQsIDEzMywgMjQxLCAyNDYsIDEsIDYxLCAyNDEsIDI0NiwgCi0gICAgMSwgNzIsIDI0MSwgMjQ2LCAxLCA2OSwgMjQxLCAyNDYsIDEsIDE4MSwgMjQxLCAyNDYsIDEsIDI0MywgMTEwLCAyNDEsIAotICAgIDI0NiwgMSwgMjI5LCAxNTksIDI0MSwgMjQ2LCAxLCAyMTgsIDUyLCAyNDEsIDI0NiwgMSwgMjQ4LCAxNjQsIDI0MSwgMjQ2LCAKLSAgICAxLCAyMDUsIDI0MSwgMjQ2LCAxLCAxOTMsIDI0MSwgMjQ2LCAxLCAyNTIsIDEwNywgMjQxLCAyNDYsIDEsIDE4OCwgMjQxLCAKLSAgICAyNDYsIDEsIDE4NiwgMjQxLCAyNDYsIDEsIDIwMywgMjQxLCAyNDYsIDEsIDIzMywgMTU3LCAyNDEsIDI0NiwgMSwgMjE0LCAKLSAgICA0OSwgMjQxLCAyNDYsIDEsIDIyMiwgMjAyLCAyNDEsIDI0NiwgMSwgMTU5LCAyNDEsIDI0NiwgMzAsIDUsIDcyLCAyNDEsIAotICAgIDI0NiwgMzAsIDUsIDY5LCAyNDEsIDI0NiwgNSwgMjI2LCAxNzYsIDIyNiwgMiwgMjIwLCA4MSwgMjI1LCAyNiwgMjI2LCAyLCAKLSAgICA1MSwgMjI1LCAyNiwgMjUxLCA0OSwgMSwgNjEsIDI1MSwgNDksIDEsIDcyLCAyNTEsIDQ5LCAxLCA2OSwgMjUxLCA0OSwgMSwgCi0gICAgMTgxLCAyNTEsIDQ5LCAxLCAyNDMsIDExMCwgMjUxLCA0OSwgMSwgMjI5LCAxNTksIDI1MSwgNDksIDEsIDIxOCwgNTIsIAotICAgIDI1MSwgNDksIDEsIDI0OCwgMTY0LCAyNTEsIDQ5LCAxLCAyMDUsIDI1MSwgNDksIDEsIDE5MywgMjUxLCA0OSwgMSwgMjUyLCAKLSAgICAxMDcsIDI1MSwgNDksIDEsIDE4OCwgMjUxLCA0OSwgMSwgMTg2LCAyNTEsIDQ5LCAxLCAyMDMsIDI1MSwgNDksIDEsIDIzMywgCi0gICAgMTU3LCAyNTEsIDQ5LCAxLCAyMTQsIDQ5LCAyNTEsIDQ5LCAxLCAyMjIsIDIwMiwgMjUxLCA0OSwgMSwgMTU5LCAyNTEsIDQ5LCAKLSAgICAzMCwgNSwgNzIsIDI1MSwgNDksIDMwLCA1LCA2OSwgMjE4LCAzMSwgMSwgNjEsIDIxOCwgMzEsIDEsIDcyLCAyMTgsIDMxLCAKLSAgICAxLCA2OSwgMjE4LCAzMSwgMSwgMTgxLCAyMTgsIDMxLCAxLCAyNDMsIDExMCwgMjE4LCAzMSwgMSwgMjI5LCAxNTksIDIxOCwgCi0gICAgMzEsIDEsIDIxOCwgNTIsIDIxOCwgMzEsIDEsIDI0OCwgMTY0LCAyMTgsIDMxLCAxLCAyMDUsIDIxOCwgMzEsIDEsIDE5MywgCi0gICAgMjE4LCAzMSwgMSwgMjUyLCAxMDcsIDIxOCwgMzEsIDEsIDE4OCwgMjE4LCAzMSwgMSwgMTg2LCAyMTgsIDMxLCAxLCAyMzMsIAotICAgIDE1NywgMjE4LCAzMSwgMSwgMjE0LCA0OSwgMjE4LCAzMSwgMSwgMjIyLCAyMDIsIDIxOCwgMzEsIDMwLCA1LCA3MiwgMjE4LCAKLSAgICAzMSwgMzAsIDUsIDY5LCA4NCwgMSwgMTgxLCA4NCwgMSwgMjM0LCAxMzgsIDg0LCAxLCAyMzQsIDM3LCA4NCwgMSwgMjM0LCAKLSAgICAxMTMsIDg0LCAxLCAyMjksIDkwLCA4NCwgMSwgMjUwLCAyMTksIDg0LCAxLCAyNTAsIDkyLCA4NCwgMSwgMjQ5LCAxNzUsIAotICAgIDg0LCAxLCAyNTAsIDIzLCA4NCwgMSwgMjI3LCAyNTMsIDg0LCAxLCAyNDgsIDE2NCwgODQsIDEsIDIxNiwgMTA1LCA4NCwgMSwgCi0gICAgMjQ3LCA5OSwgODQsIDEsIDIxNiwgMTAwLCA4NCwgMSwgMjI4LCAxODgsIDg0LCAxLCAyMTgsIDUyLCA4NCwgMSwgMjE3LCAKLSAgICAxNjEsIDg0LCAxLCAxMDgsIDg0LCAxLCAyMTcsIDEwOSwgODQsIDEsIDIyOCwgMTg1LCA4NCwgMSwgMjUyLCAxMDcsIDg0LCAKLSAgICAxLCAyMjYsIDIzLCA4NCwgMSwgMjI1LCAxNTAsIDg0LCAxLCAyMjUsIDI1MywgODQsIDEsIDIzMCwgMjMxLCA4NCwgMSwgCi0gICAgMjEyLCAyMzUsIDg0LCAxLCAyMjMsIDExMiwgODQsIDEsIDIzMiwgMjA4LCA4NCwgMSwgMjE0LCAxMTksIDg0LCAxLCAyMjEsIAotICAgIDI0LCA4NCwgMSwgMjE5LCAxMjEsIDg0LCAxLCAyMjIsIDIwMiwgODQsIDEsIDE1OSwgODQsIDEsIDIzMywgMTU3LCA4NCwgMSwgCi0gICAgMjI0LCAyMzIsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMjE4LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIzMSwgODQsIAotICAgIDIzNSwgMjQwLCAzMCwgMjI0LCAxOTgsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTkzLCA4NCwgMjM1LCAyNDAsIDMwLCAKLSAgICAyMjQsIDE3NSwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxNDcsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTM1LCA4NCwgCi0gICAgMjM1LCAyNDAsIDMwLCAyMjQsIDEzNCwgODQsIDIzNSwgMjQwLCAzMCwgMjIzLCAxMiwgODQsIDIzNSwgMjQwLCAzMCwgMjIzLCAKLSAgICA1LCA4NCwgMjM1LCAyNDAsIDMwLCAyMzIsIDEyMSwgODQsIDIzNSwgMjQwLCAzMCwgMjMyLCAxMTIsIDg0LCAyMzUsIDI0MCwgCi0gICAgMzAsIDIyNCwgMjEzLCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIyNCwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxODMsIAotICAgIDIxNiwgMTUsIDExNiwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAxODMsIDIxNiwgMTUsIDEwOSwgODQsIDIzNSwgMjQwLCAzMCwgCi0gICAgMjI0LCAyMTQsIDg0LCAzMCwgMjM1LCAyMjYsIDI1MywgMjE1LCA4NCwgMzAsIDIzNSwgMjI2LCAyNTQsIDIzMiwgODQsIDMwLCAKLSAgICA1LCAyNTQsIDIzMiwgODQsIDMwLCA1LCA3MiwgODQsIDMwLCA1LCAyMzYsIDI4LCA4NCwgMzAsIDUsIDIxMywgMTA1LCA4NCwgCi0gICAgMzAsIDUsIDIxMiwgMTYxLCA4NCwgMzAsIDUsIDY5LCA4NCwgMzAsIDUsIDIxNSwgOTIsIDg0LCAzMCwgNSwgMjE1LCAxOTYsIAotICAgIDg0LCAzMCwgNSwgMjI3LCA5OSwgODQsIDMwLCA1LCAxODYsIDg0LCAzMCwgNSwgMjM2LCA1NSwgODQsIDMwLCA1LCA3NCwgCi0gICAgODQsIDMwLCA1LCAyNTQsIDE0OCwgODQsIDMwLCA1LCAyNTQsIDEwOCwgODQsIDMwLCA1LCAyMjcsIDQ5LCA4NCwgMzAsIDUsIAotICAgIDI1MywgMTA4LCA4NCwgNSwgMjI5LCAzNywgODQsIDUsIDIyNCwgMTksIDg0LCA1LCAyMTIsIDE3MiwgODQsIDUsIDIzMCwgCi0gICAgMTIzLCA4NCwgNSwgMjE2LCAxNzEsIDg0LCA1LCAyNTIsIDYyLCA4NCwgNSwgMjIzLCAxMDcsIDg0LCA1LCAyMTYsIDI1MSwgCi0gICAgODQsIDUsIDIzNCwgMjQ2LCA4NCwgNSwgMjU0LCAxMTAsIDg0LCA1LCAyMjIsIDE2MCwgMjIyLCAxNTQsIDg0LCA1LCAyMTQsIAotICAgIDEzMCwgODQsIDUsIDI0OSwgMTcwLCA4NCwgNSwgMjUyLCAzNywgODQsIDUsIDIzNCwgMTMxLCA4NCwgNSwgMjUyLCA1NywgCi0gICAgODQsIDUsIDI1MCwgMTk3LCAyMjUsIDIwNCwgMjMzLCAyMDksIDg0LCA1LCAyMzMsIDU0LCAyMTYsIDIzMCwgODQsIDUsIAotICAgIDI1MSwgMTk3LCA4NCwgNSwgMjI1LCAyNTUsIDIzMCwgMTY5LCA4NCwgNSwgMjM0LCAxOCwgODQsIDI0OSwgMzksIDE2LCAKLSAgICAyMjMsIDE4MSwgODQsIDUsIDI1MywgOTAsIDg0LCA1LCAyNTMsIDExMSwgODQsIDIxLCAyMTIsIDc5LCA4NCwgMjEsIDExNiwgCi0gICAgODQsIDIxLCAxMDksIDg0LCAyMSwgMTY2LCA4NCwgMjEsIDE2MywgODQsIDIxLCAxODAsIDg0LCAyMSwgMTg5LCA4NCwgMjEsIAotICAgIDE5OCwgODQsIDIxLCAxOTUsIDg0LCAyMSwgMjAwLCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMTksIDIyOSwgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjMwLCAxNDEsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgMjAzLCA4NCwgCi0gICAgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyNTEsIDIyNSwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjUxLCAzMiwgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA5NSwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA4OSwgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA4NywgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA5MywgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjI1LCA5MSwgODEsIDI1MSwgMTU5LCA4MSwgMjQ1LCAxMjAsIDgxLCAyNDksIDE1NywgCi0gICAgODEsIDI0MywgMjAwLCAyMTksIDY5LCA4MSwgMjQ5LCAxNjQsIDgxLCAyNDMsIDIzNywgMjQ3LCA3MiwgODEsIDIxNiwgMjUwLCAKLSAgICAyMTksIDIzNiwgMjQwLCAxNjAsIDgxLCAyMjAsIDExNiwgNCwgMjUxLCA5OCwgMjMxLCAyMTcsIDgxLCAyMzEsIDI0NiwgCi0gICAgMjQ5LCAxNTcsIDgxLCAyMzEsIDI0NiwgMjQzLCAyMDAsIDIxOSwgNjksIDgxLCAyMjksIDIyLCA4MSwgMjQzLCAyMjMsIDQzLCAKLSAgICAyMjIsIDc3LCAxMTYsIDgxLCAyNDMsIDIyMywgNDMsIDIyMiwgNzcsIDEwOSwgODEsIDI0MywgMjIzLCA0MywgMjIyLCA3NywgCi0gICAgMTY2LCA4MSwgMzAsIDIyMSwgNTcsIDgxLCAyMSwgMjEyLCA3OSwgODEsIDIxLCAxMTYsIDgxLCAyMSwgMTA5LCA4MSwgMjEsIAotICAgIDE2NiwgODEsIDIxLCAxNjMsIDgxLCAyMSwgMTgwLCA4MSwgMjEsIDE4OSwgODEsIDIxLCAxOTgsIDgxLCAyMSwgMTk1LCA4MSwgCi0gICAgMjEsIDIwMCwgODEsIDEsIDYxLCA4MSwgMSwgNzQsIDgxLCAxLCA3MiwgODEsIDEsIDc1LCA4MSwgMSwgNjksIDgxLCAxLCAKLSAgICAyMjcsIDk5LCA4MSwgMSwgMjE1LCAxODMsIDgxLCAxLCAyNDUsIDE2NSwgODEsIDEsIDIwNSwgODEsIDEsIDI1NCwgMjQsIAotICAgIDgxLCAxLCAyNTIsIDEwNywgODEsIDEsIDE5MywgODEsIDEsIDIyNCwgMjMyLCA4MSwgMSwgMjQzLCAxMTAsIDgxLCAxLCAKLSAgICAxODgsIDgxLCAxLCAyMzMsIDE1NywgODEsIDEsIDIyMiwgMjAyLCA4MSwgMSwgMjIxLCAyNCwgODEsIDEsIDIxOCwgNTIsIAotICAgIDgxLCAxLCAyNDgsIDE2NCwgODEsIDEsIDI1MCwgOTIsIDgxLCAxLCAyMzUsIDEzOSwgODEsIDEsIDE4NiwgODEsIDEsIDIwMywgCi0gICAgODEsIDEsIDIxNCwgNDksIDgxLCAxLCAyNDQsIDE2NCwgODEsIDEsIDE4MSwgODEsIDEsIDIzNCwgMTM4LCA4MSwgMSwgMjE2LCAKLSAgICAxNDEsIDgxLCAxLCAyMTIsIDEwOSwgODEsIDEsIDI0MiwgMjcsIDgxLCAxLCAyMTIsIDksIDgxLCAxLCAyMzMsIDI1LCA4MSwgCi0gICAgMSwgMjEyLCA2MiwgODEsIDEsIDI1MCwgNDcsIDgxLCAxLCAyMTYsIDI1MCwgMTg0LCAzMCwgNTIsIDgxLCAxLCAyMTYsIAotICAgIDI1MCwgNzQsIDgxLCAxLCAyMTYsIDI1MCwgNzIsIDgxLCAxLCAyMTYsIDI1MCwgNzUsIDgxLCAxLCAyMTYsIDI1MCwgNjksIAotICAgIDgxLCAxLCAyMTYsIDI1MCwgMjI3LCA5OSwgODEsIDEsIDIxNiwgMjUwLCAyMTUsIDE4MywgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAyNTQsIDI0LCA4MSwgMSwgMjE2LCAyNTAsIDI1MiwgMTA3LCA4MSwgMSwgMjE2LCAyNTAsIDE5MywgODEsIDEsIDIxNiwgCi0gICAgMjUwLCAyMjQsIDIzMiwgODEsIDEsIDIxNiwgMjUwLCAyNDMsIDExMCwgODEsIDEsIDIxNiwgMjUwLCAxODgsIDgxLCAxLCAKLSAgICAyMTYsIDI1MCwgMjE4LCA1MiwgODEsIDEsIDIxNiwgMjUwLCAyNDgsIDE2NCwgODEsIDEsIDIxNiwgMjUwLCAyNTAsIDkyLCAKLSAgICA4MSwgMSwgMjE2LCAyNTAsIDIzNSwgMTM5LCA4MSwgMSwgMjE2LCAyNTAsIDIxNiwgMTQxLCA4MSwgMSwgMjE2LCAyNTAsIAotICAgIDE4NiwgODEsIDEsIDIxNiwgMjUwLCAyMTQsIDQ5LCA4MSwgMSwgMjE2LCAyNTAsIDE4MSwgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAyNDMsIDEwNywgODEsIDEsIDIxNiwgMjUwLCAyNDIsIDI3LCA4MSwgMSwgMjE2LCAyNTAsIDIzNSwgMTA5LCA4MSwgMSwgCi0gICAgMjE2LCAyNTAsIDIyOSwgNjIsIDgxLCAxLCAyMTYsIDI1MCwgMjQ1LCAyNDksIDgxLCAxLCAyMjAsIDExNiwgNzQsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgNzIsIDgxLCAxLCAyMjAsIDExNiwgMjM1LCAxNTAsIDgxLCAxLCAyMjAsIDExNiwgMjE1LCAxODMsIDgxLCAKLSAgICAxLCAyMjAsIDExNiwgNjksIDgxLCAxLCAyMjAsIDExNiwgMjU0LCAyNCwgODEsIDEsIDIyMCwgMTE2LCAxODEsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjQzLCAxMTAsIDgxLCAxLCAyMjAsIDExNiwgMTU5LCA4MSwgMSwgMjIwLCAxMTYsIDE5MywgODEsIDEsIAotICAgIDIyMCwgMTE2LCAyMjEsIDI0LCA4MSwgMSwgMjIwLCAxMTYsIDIxOCwgNTIsIDgxLCAxLCAyMjAsIDExNiwgMjQ4LCAxNjQsIAotICAgIDgxLCAxLCAyMjAsIDExNiwgMjM1LCAxMzksIDgxLCAxLCAyMjAsIDExNiwgMjQ0LCAxNjQsIDgxLCAxLCAyMjAsIDExNiwgCi0gICAgMjQzLCAxMDcsIDgxLCAxLCAyMjAsIDExNiwgMjQyLCAyNywgODEsIDEsIDIyMCwgMTE2LCAyMTYsIDE0MSwgODEsIDEsIAotICAgIDIyMCwgMTE2LCAyMTIsIDEwOSwgODEsIDEsIDIyMCwgMTE2LCAyMjQsIDc0LCA4MSwgMSwgMjIwLCAxMTYsIDI1MCwgOTIsIAotICAgIDgxLCAxLCAyMjAsIDExNiwgMjEyLCA3NSwgODEsIDEsIDIzMSwgMjQ2LCA3MiwgODEsIDEsIDIzMSwgMjQ2LCAxODEsIDgxLCAKLSAgICAxLCAyMzEsIDI0NiwgMjAzLCA4MSwgMSwgMjMxLCAyNDYsIDI0NCwgMTY0LCA4MSwgMSwgMjMxLCAyNDYsIDIxMiwgNzUsIAotICAgIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNTMsIDI0MywgMTE2LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjE0LCAKLSAgICAxMjksIDExNiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgMTMxLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgCi0gICAgMjE1LCAxOTMsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMzUsIDE5MSwgMjE1LCAxOTMsIDgxLCAxLCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAyNTIsIDc0LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMTMzLCAyNTIsIDc0LCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgNjEsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCA3MiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDE4MSwgCi0gICAgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyOSwgMTU5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjUwLCAyMTksIDgxLCAKLSAgICAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDExNSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxNiwgMTA1LCA4MSwgMSwgCi0gICAgMjU0LCA3MSwgMjQzLCA5MiwgMjQ4LCA4NiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyOCwgMTk4LCA4MSwgMSwgMjU0LCAKLSAgICA3MSwgMjQzLCA5MiwgMjE4LCA1MiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgMTY0LCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjI2LCAyMywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxOSwgMTU3LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCA3NSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgCi0gICAgMTA5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjU0LCAxMTQsIDgxLCAxLCAyMTYsIDI1MCwgMjU0LCA3MSwgMjQzLCAKLSAgICA5MiwgMjE4LCA1MiwgODEsIDEsIDIxNiwgMjUwLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIDc1LCA4MSwgMSwgMjMxLCAyNDYsIAotICAgIDI1NCwgNzEsIDI0MywgOTIsIDI0MiwgMjI1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIyOSwgMTU5LCAKLSAgICA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI1MCwgMjE5LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDIzNSwgMTE1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIxNiwgMTE1LCA4MSwgMSwgCi0gICAgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgNzAsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgCi0gICAgMjE4LCA1MiwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDcsIDIzMiwgODEsIDEsIDIzMSwgMjQ2LCAKLSAgICAyNTQsIDcxLCAyNDMsIDkyLCAyMTksIDE1NywgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDksIDE1LCAKLSAgICA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgNzUsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMjEyLCAxMDksIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAxNTEsIDY5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCAKLSAgICA5MiwgMTUxLCAxODYsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjUxLCAxOTUsIDgxLCAxLCAyNTQsIAotICAgIDcxLCAyNDMsIDkyLCAyNDgsIDE1NCwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMzMsIDI1LCAxOCwgCi0gICAgMTksIDIyNiwgMjMzLCAxOCwgMTksIDI1MywgODMsIDE4LCAxOSwgMjU0LCAxODgsIDE4LCAxOSwgMjE0LCA5LCAxOCwgMTksIAotICAgIDIyNSwgMTAxLCAxOCwgMTksIDIyNiwgMTAzLCAxOCwgMTksIDIyNCwgMjQ5LCAxOCwgMTksIDIxNywgMjM4LCAxOCwgMTksIAotICAgIDIzNCwgMTk1LCAxOCwgMTksIDIzMywgMjAxLCAxOCwgMTksIDIzMSwgMTk2LCAxOCwgMTksIDIyOCwgMTQ4LCAxOCwgMTksIAotICAgIDIzMCwgMywgMTgsIDE5LCAyMzMsIDkyLCAxOCwgMTksIDIxOSwgMjA5LCAxOCwgMTksIDIyMiwgMTI5LCAxOCwgMTksIDIyMCwgCi0gICAgMTU2LCAxOCwgMTksIDIyMCwgMjQ2LCAxOCwgMTksIDIyMCwgMTI3LCAxOCwgMTksIDIxMiwgMjExLCAxOCwgMTksIDIxMywgCi0gICAgNDMsIDE4LCAxOSwgMjI0LCAyNywgMTgsIDE5LCAyMjgsIDI4LCAxOCwgMTksIDIyNywgODIsIDIyOCwgMjgsIDE4LCAxOSwgCi0gICAgMjI4LCAyNywgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI3LCAxOCwgMTksIDIyOCwgMjYsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAKLSAgICAyNiwgMTgsIDE5LCAyMjgsIDI1LCAxOCwgMTksIDIyNywgODIsIDIyOCwgMjUsIDE4LCAxOSwgMjIzLCAxNywgMTgsIDE5LCAKLSAgICAyMjMsIDE2LCAxOCwgMTksIDIyMywgMTUsIDE4LCAxOSwgMjIzLCAxNCwgMTgsIDE5LCAyMjMsIDEzLCAxOCwgMTksIDIyMywgCi0gICAgMjEsIDE4LCAxOSwgMjI3LCA4MiwgMjI2LCAyMjksIDE4LCAxOSwgMjI3LCA4MiwgMjE4LCA5OSwgMTgsIDE5LCAyMjcsIDgyLCAKLSAgICAyMzUsIDI3LCAxOCwgMTksIDIyNywgODIsIDI1MCwgMjUyLCAxOCwgMTksIDIyNywgODIsIDE4MywgMTgsIDE5LCAyMjcsIAotICAgIDgyLCAyMDQsIDE4LCAxOSwgMjI3LCA4MiwgMTk3LCAxOCwgMTksIDIyNywgODIsIDIyMSwgMjYsIDE4LCAxOSwgMjQ1LCAKLSAgICAxNzUsIDIxNCwgODIsIDE4LCAxOSwgMjEzLCAyNDgsIDIxNCwgODIsIDE4LCAxOSwgNDAsIDMsIDIyMywgMTMwLCAxOCwgMTksIAotICAgIDQwLCAyMjQsIDQ4LCAyNDcsIDc0LCAxOCwgMTksIDIyNCwgMTEyLCAyMjMsIDE4LCAxOCwgMTksIDE0OCwgMjMyLCAxODAsIAotICAgIDE4LCAxOSwgMTQ4LCAyMzMsIDE1NiwgMTgsIDE5LCAyMTcsIDgwLCAxOCwgMTksIDIxNywgODIsIDE4LCAxOSwgMjE2LCA5NywgCi0gICAgMTgsIDE5LCAyMTYsIDk5LCAxOCwgMTksIDIxNiwgMTA0LCAxOCwgMTksIDIxNywgMiwgMTgsIDE5LCAyMTcsIDQsIDE4LCAKLSAgICAxOSwgMjIyLCAxMjcsIDIyMCwgMTMyLCAxOCwgMTksIDIyMiwgMTI3LCAyMjAsIDE4MSwgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMjQxLCAzOSwgMTgsIDE5LCA2NiwgMjQyLCA1NCwgMTgsIDE5LCA2NiwgMjQ4LCAzLCAyNDMsIDMxLCAxOCwgMTksIDY2LCAKLSAgICAyNDMsIDEwNywgMTgsIDE5LCA2NiwgMjQyLCA1OSwgMTgsIDE5LCAyMjIsIDEyNywgMjM1LCAzNywgMTgsIDE5LCA2NiwgCi0gICAgMjM1LCAzNSwgMTgsIDE5LCAyNTEsIDI0NCwgMjQ4LCAzLCAxNTAsIDE4LCAxOSwgMjUxLCAyNDQsIDI0OCwgMywgMTQ5LCAKLSAgICAxOCwgMTksIDY2LCAyNDcsIDI1NCwgMTk3LCAyMDksIDIxNCwgMTAzLCAyMzMsIDM0LCAyMDksIDEsIDE4MSwgMjA5LCAxLCAKLSAgICAyMzQsIDEzOCwgMjA5LCAxLCAyNDMsIDExMCwgMjA5LCAxLCAyNDIsIDIyNSwgMjA5LCAxLCAyMjksIDE1OSwgMjA5LCAxLCAKLSAgICAyNTAsIDIxOSwgMjA5LCAxLCAyNTAsIDkyLCAyMDksIDEsIDIzNSwgMTM5LCAyMDksIDEsIDIzNSwgMTE1LCAyMDksIDEsIAotICAgIDIxMywgNjAsIDIwOSwgMSwgMjE4LCA1MiwgMjA5LCAxLCAyMTcsIDE2MSwgMjA5LCAxLCAyNDgsIDE2NCwgMjA5LCAxLCAKLSAgICAyNDcsIDIzMiwgMjA5LCAxLCAyMDUsIDIwOSwgMSwgMTkzLCAyMDksIDEsIDIyNiwgMjMsIDIwOSwgMSwgMjUyLCAxMDcsIAotICAgIDIwOSwgMSwgMjUxLCAxOTUsIDIwOSwgMSwgMTg4LCAyMDksIDEsIDE4NiwgMjA5LCAxLCAyMDMsIDIwOSwgMSwgMjMzLCAKLSAgICAxNTcsIDIwOSwgMSwgMjE0LCA0OSwgMjA5LCAxLCAyMjEsIDI0LCAyMDksIDEsIDIxOSwgMTU3LCAyMDksIDEsIDIyMiwgCi0gICAgMjAyLCAyMDksIDEsIDE1OSwgMjA5LCAzMCwgNSwgNjEsIDIwOSwgMzAsIDUsIDcyLCAyMDksIDMwLCA1LCA2OSwgMjA5LCAKLSAgICAzMCwgNSwgMjQ1LCAxNjUsIDIwOSwgMzAsIDUsIDI1NCwgMTA4LCAyMDksIDMwLCA1LCAyMjcsIDQ5LCAyMDksIDMwLCA1LCAKLSAgICAyNTMsIDEwOCwgMjA5LCAzMCwgNSwgNzQsIDIwOSwgMzAsIDUsIDc1LCAyMDksIDIxOSwgMTgsIDEsIDE4NiwgMjA5LCAyMTksIAotICAgIDE4LCAxLCAyMDMsIDIwOSwgMjE5LCAxOCwgMSwgMjE0LCA0OSwgMjA5LCAzLCAxLCAxODEsIDIwOSwgMywgMSwgMjI5LCAKLSAgICAxNTksIDIwOSwgMywgMSwgMjUzLCAyNDIsIDIwOSwgMywgMSwgMjE4LCA1MiwgMjA5LCAzLCAxLCAyMDUsIDIwOSwgMywgMSwgCi0gICAgMTkzLCAyMDksIDMsIDEsIDE4OCwgMjA5LCAzLCAxLCAyMDMsIDIwOSwgMywgMSwgMjMzLCAxNTcsIDIwOSwgNSwgMjMwLCAKLSAgICAxNTksIDIwOSwgNSwgMjM0LCAxNzcsIDIwOSwgNSwgMjIyLCAyMDEsIDIwOSwgNSwgMjMyLCAxODAsIDIwOSwgMjQ0LCAyNTQsIAotICAgIDc3LCAyMDksIDIyNCwgMTU4LCA3NywgMjA5LCAyMSwgMjEyLCA3OSwgMjA5LCAyMSwgMTE2LCAyMDksIDIxLCAxMDksIDIwOSwgCi0gICAgMjEsIDE2NiwgMjA5LCAyMSwgMTYzLCAyMDksIDIxLCAxODAsIDIwOSwgMjEsIDE4OSwgMjA5LCAyMSwgMTk4LCAyMDksIDIxLCAKLSAgICAxOTUsIDIwOSwgMjEsIDIwMCwgMzgsIDIzMywgODMsIDEsIDE4MSwgMzgsIDIzMywgODMsIDEsIDIxMywgMTUzLCAzOCwgCi0gICAgMjMzLCA4MywgMSwgMjI5LCAxNTksIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDE0MSwgMzgsIDIzMywgODMsIDEsIDIyMiwgMjAyLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTg2LCAzOCwgMjMzLCA4MywgMSwgMjE4LCA1MiwgMzgsIDIzMywgODMsIDEsIDIxNywgMTYxLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMjMzLCAxNTcsIDM4LCAyMzMsIDgzLCAxLCAxOTMsIDM4LCAyMzMsIDgzLCAxLCAyMjYsIDIzLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTg4LCAzOCwgMjMzLCA4MywgMSwgMjQ0LCAxNjQsIDM4LCAyMzMsIDgzLCAxLCAyMTUsIDEsIAotICAgIDM4LCAyMzMsIDgzLCAxLCAxNTksIDM4LCAyMzMsIDgzLCAxLCAyMjQsIDIzMiwgMzgsIDIzMywgODMsIDEsIDIzNCwgMTM4LCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMjE2LCAxMzMsIDM4LCAyMzMsIDgzLCAxLCAyMDUsIDM4LCAyMzMsIDgzLCAxLCA2MSwgMzgsIAotICAgIDIzMywgODMsIDEsIDcyLCAzOCwgMjMzLCA4MywgMSwgMjQ1LCAxNjUsIDM4LCAyMzMsIDgzLCAxLCAyNDUsIDE1NCwgMzgsIAotICAgIDIzMywgODMsIDEsIDY5LCAzOCwgMjMzLCA4MywgMSwgMjI3LCA0OSwgMzgsIDIzMywgODMsIDEsIDc1LCAzOCwgMjMzLCA4MywgCi0gICAgMSwgMjE1LCAxODMsIDM4LCAyMzMsIDgzLCAxLCA3NCwgMzgsIDIzMywgODMsIDEsIDI1MywgMTA2LCAzOCwgMjMzLCA4MywgCi0gICAgMSwgMjU0LCAxMDgsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzOSwgMzgsIDIzMywgODMsIDEsIDIxNiwgMjM4LCAzOCwgMjMzLCAKLSAgICA4MywgMSwgMjE2LCAyMzcsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzNiwgMzgsIDIzMywgODMsIDEsIDIxNiwgMjM1LCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDEyNCwgMjI0LCAyMzIsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMjQsIDIzMiwgMTU2LCAzOCwgMTY1LCAKLSAgICAxLCAxMjQsIDE4MSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxMywgMTUzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjI5LCAKLSAgICAxNTksIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODEsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTMsIDE1MywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIyOSwgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE2LCAxNDEsIDE1NiwgMzgsIDE2NSwgMSwgCi0gICAgMTI0LCAyMjIsIDIwMiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE4NiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNiwgMTQxLCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjIyLCAyMDIsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODYsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAyMTgsIDUyLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE3LCAxNjEsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyMDUsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTgsIDUyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE3LCAxNjEsIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgMTE1LCAyMDUsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxOTMsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyMjYsIDIzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTg4LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTkzLCAxNTYsIDM4LCAKLSAgICAxNjUsIDEsIDExNSwgMjI2LCAyMywgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE4OCwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDI0NCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjE1LCAxLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjMzLCAxNTcsIAotICAgIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyNDQsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNSwgMSwgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIzMywgMTU3LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjQ4LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyNTIsIDEwNywgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE1OSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCAxMTUsIDI0OCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjUyLCAxMDcsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAyMzMsIDIwNiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxMywgMTI2LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgCi0gICAgMjMzLCAyMDYsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTMsIDEyNiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxOSwgMjYsIAotICAgIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTksIDI2LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAzMCwgMjIwLCAxNjMsIDE1NiwgCi0gICAgMzgsIDE2NSwgMzAsIDUsIDI1NCwgMjMyLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMzYsIDI4LCAxNTYsIDM4LCAxNjUsIDMwLCAKLSAgICA1LCA2OSwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCA5MiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgNzQsIDE1NiwgMzgsIAotICAgIDE2NSwgMzAsIDUsIDI1NCwgMTQ4LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCA3NSwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjI3LCAKLSAgICAxMjAsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgMTgzLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyNTMsIDgzLCAxNTYsIAotICAgIDM4LCAxNjUsIDMwLCA1LCAyNTQsIDE4OCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCA4NSwgMTU2LCAzOCwgMTY1LCAzMCwgCi0gICAgNSwgMjI2LCAyMzMsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIyNywgMTE3LCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIAotICAgIDE4MCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjM1LCAxNTAsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDIxNSwgNzksIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgNDAsIDIyOSwgMTYxLCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyMDQsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIAotICAgIDE4MywgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjM1LCAyNywgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjQ5LCAzLCAxNTYsIDM4LCAKLSAgICAxNjUsIDEsIDQwLCAyNTMsIDc0LCAxNTYsIDM4LCAxNjUsIDE2MCwgMjMxLCAyMjEsIDE1NiwgMzgsIDE2NSwgMTYwLCAyMzEsIAotICAgIDIyMCwgMTU2LCAzOCwgMTY1LCAyMSwgMjEyLCA3OSwgMTU2LCAzOCwgMTY1LCAyMSwgMTE2LCAxNTYsIDM4LCAxNjUsIDIxLCAKLSAgICAxMDksIDE1NiwgMzgsIDE2NSwgMjEsIDE2NiwgMTU2LCAzOCwgMTY1LCAyMSwgMTYzLCAxNTYsIDM4LCAxNjUsIDIxLCAxODAsIAotICAgIDE1NiwgMzgsIDE2NSwgMjEsIDE4OSwgMTU2LCAzOCwgMTY1LCAyMSwgMTk4LCAxNTYsIDM4LCAxNjUsIDIxLCAxOTUsIDE1NiwgCi0gICAgMzgsIDE2NSwgMjEsIDIwMCwgMTU2LCAzOCwgMTY1LCA4OCwgMjEsIDExNiwgMTU2LCAzOCwgMTY1LCA1LCAyMzMsIDE0MywgCi0gICAgMTU2LCAzOCwgMTY1LCA1LCAyMzMsIDE0MiwgODQsIDE2LCAyMjYsIDEwOSwgODQsIDE2LCAyMzAsIDE0MiwgMjM0LCAzNCwgCi0gICAgODQsIDE2LCAyMjUsIDIwNCwgMjM0LCAzNCwgODQsIDE2LCAyNTEsIDIyNiwgMjM0LCAzNCwgODQsIDE2LCAyNTEsIDMzLCAKLSAgICAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTYsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCA5MCwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIAotICAgIDg4LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTQsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCA5MiwgMjM0LCAzNCwgODQsIDE2LCAKLSAgICAyNDgsIDExOCwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExNCwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExMywgMjM0LCAzNCwgCi0gICAgODQsIDE2LCAyNDgsIDExNiwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExNSwgMjM0LCAzNCwgODQsIDE2LCAyNDgsIDExMiwgCi0gICAgMjM0LCAzNCwgODQsIDE2LCAyMTYsIDUxLCA4NCwgMTYsIDIzMCwgMTQyLCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDIwNCwgCi0gICAgMjIzLCAxMDYsIDg0LCAxNiwgMjUxLCAyMjYsIDIyMywgMTA2LCA4NCwgMTYsIDI1MSwgMzMsIDIyMywgMTA2LCA4NCwgMTYsIAotICAgIDIyNSwgOTYsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgOTAsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgODgsIDIyMywgMTA2LCAKLSAgICA4NCwgMTYsIDIyNSwgOTQsIDIyMywgMTA2LCA4NCwgMTYsIDIyNSwgOTIsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTE4LCAKLSAgICAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExNCwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTMsIDIyMywgMTA2LCA4NCwgMTYsIAotICAgIDI0OCwgMTE2LCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExNSwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTIsIDIyMywgCi0gICAgMTA2LCAyNTEsIDUwLCAxLCAxODEsIDI1MSwgNTAsIDEsIDI0MywgMTEwLCAyNTEsIDUwLCAxLCAyMjksIDE1OSwgMjUxLCAKLSAgICA1MCwgMSwgMjI5LCAxMDgsIDI1MSwgNTAsIDEsIDE5MywgMjUxLCA1MCwgMSwgMjUyLCAxMDcsIDI1MSwgNTAsIDEsIDE4OCwgCi0gICAgMjUxLCA1MCwgMSwgMjMwLCAxNzUsIDI1MSwgNTAsIDEsIDIxOCwgNTIsIDI1MSwgNTAsIDEsIDI0OCwgMTY0LCAyNTEsIDUwLCAKLSAgICAxLCAyMDUsIDI1MSwgNTAsIDEsIDIyOCwgMTQ3LCAyNTEsIDUwLCAxLCAyNTAsIDIxOSwgMjUxLCA1MCwgMSwgMjM1LCAxMzksIAotICAgIDI1MSwgNTAsIDEsIDIyOCwgMjMsIDI1MSwgNTAsIDEsIDIyOCwgMTksIDI1MSwgNTAsIDEsIDE4NiwgMjUxLCA1MCwgMSwgCi0gICAgMjAzLCAyNTEsIDUwLCAxLCAyMzMsIDE1NywgMjUxLCA1MCwgMSwgMjE1LCAxLCAyNTEsIDUwLCAxLCAyMjIsIDIwMiwgMjUxLCAKLSAgICA1MCwgMSwgNjEsIDI1MSwgNTAsIDEsIDE1OSwgMjUxLCA1MCwgMzAsIDUsIDcyLCAyNTEsIDUwLCAzMCwgNSwgNjksIDI1MSwgCi0gICAgNTAsIDMwLCA1LCA3NCwgMjUxLCA1MCwgMzAsIDUsIDc1LCAyNTEsIDUwLCAzMCwgNSwgMjU0LCAxNDgsIDI1MSwgNTAsIAotICAgIDIyNiwgMTg3LCAyNTEsIDUwLCAyNDUsIDEwMSwgNjUsIDIyMiwgOTEsIDM4LCA4OCwgMSwgMTI0LCAxODEsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyMzQsIDEzOCwgMzgsIDg4LCAxLCAxMjQsIDIzMywgMTkzLCAzOCwgODgsIDEsIDExNSwgMTgxLCAzOCwgODgsIDEsIAotICAgIDExNSwgMjMzLCAxOTMsIDM4LCA4OCwgMSwgMTE1LCAyMzQsIDEzOCwgMzgsIDg4LCAxLCAyMjksIDE1OSwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDI1MCwgMjE5LCAzOCwgODgsIDEsIDEyNCwgMjUwLCA5MiwgMzgsIDg4LCAxLCAxMTUsIDI1MCwgMjE5LCAzOCwgODgsIAotICAgIDEsIDExNSwgMjIyLCAyMDIsIDM4LCA4OCwgMSwgMTE1LCAyNTAsIDkyLCAzOCwgODgsIDEsIDIyOCwgMjMsIDM4LCA4OCwgMSwgCi0gICAgMjI0LCAzMiwgMzgsIDg4LCAxLCAxMjQsIDIyNCwgMzAsIDM4LCA4OCwgMSwgMjQ4LCAxNjQsIDM4LCA4OCwgMSwgMTE1LCAKLSAgICAyMjQsIDMwLCAzOCwgODgsIDEsIDIyNCwgNDEsIDM4LCA4OCwgMSwgMTI0LCAyMTgsIDUyLCAzOCwgODgsIDEsIDEyNCwgCi0gICAgMjE3LCAxNjEsIDM4LCA4OCwgMSwgMTE1LCAyMTgsIDUyLCAzOCwgODgsIDEsIDExNSwgMjE3LCAxNjEsIDM4LCA4OCwgMSwgCi0gICAgMjA1LCAzOCwgODgsIDEsIDI1MiwgMTA3LCAzOCwgODgsIDEsIDEyNCwgMTkzLCAzOCwgODgsIDEsIDEyNCwgMjI2LCAyMywgCi0gICAgMzgsIDg4LCAxLCAxMjQsIDI0NCwgMTY0LCAzOCwgODgsIDEsIDExNSwgMTkzLCAzOCwgODgsIDEsIDExNSwgMjQ0LCAxNjQsIAotICAgIDM4LCA4OCwgMSwgMTE1LCAyMjYsIDIzLCAzOCwgODgsIDEsIDE4OCwgMzgsIDg4LCAxLCAxMTUsIDE4NiwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDE4NiwgMzgsIDg4LCAxLCAyMDMsIDM4LCA4OCwgMSwgMjIzLCA0OCwgMzgsIDg4LCAxLCAyMzMsIDE1NywgMzgsIAotICAgIDg4LCAxLCAyMzIsIDE1MSwgMzgsIDg4LCAxLCAyMTQsIDQ5LCAzOCwgODgsIDEsIDEyNCwgMjIxLCAyNCwgMzgsIDg4LCAxLCAKLSAgICAxMjQsIDIxOSwgMTU3LCAzOCwgODgsIDEsIDEyNCwgMjIyLCAyMDIsIDM4LCA4OCwgMSwgMTI0LCAxNTksIDM4LCA4OCwgMSwgCi0gICAgMjMyLCAyMTMsIDM4LCA4OCwgMSwgNjEsIDM4LCA4OCwgMSwgMTE1LCAxNTksIDM4LCA4OCwgMSwgNzIsIDM4LCA4OCwgMSwgCi0gICAgMjM2LCAyOCwgMzgsIDg4LCAxLCA2OSwgMzgsIDg4LCAxLCAyMTUsIDkyLCAzOCwgODgsIDEsIDI0NSwgMTY1LCAzOCwgODgsIAotICAgIDEsIDIyNywgNDksIDM4LCA4OCwgMSwgMjMzLCAxNDMsIDM4LCA4OCwgMSwgMjQyLCAxMDksIDIyMiwgMjAyLCAzOCwgODgsIAotICAgIDI0OSwgMTMzLCA1LCAxMzgsIDIwMywgMzgsIDg4LCAyNDksIDEzMywgNSwgMTM4LCAyMzMsIDE1NywgMzgsIDg4LCAyNDksIAotICAgIDEzMywgNSwgMjMzLCAxNTgsIDIxOCwgOSwgMjMzLCAxMzMsIDM4LCA4OCwgNSwgMjMyLCA5LCAyMzQsIDIzNiwgMjMzLCAKLSAgICAxMzMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDQwLCAyMjksIDE1OSwgMzgsIDg4LCAyNDksIDEzMywgNSwgMTE1LCAxOTMsIAotICAgIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDEyNCwgMjI0LCAzMSwgMTY3LCAxMTUsIDE5MywgMzgsIDg4LCAyNDksIDEzMywgNSwgCi0gICAgMTg4LCAzOCwgODgsIDI0OSwgMTMzLCA1LCAyNTIsIDEwNywgMzgsIDg4LCAyNDksIDEzMywgNSwgMjIyLCAyMDIsIDM4LCAKLSAgICA4OCwgNSwgMjIyLCAxODEsIDM4LCA4OCwgMzAsIDUsIDYxLCAzOCwgODgsIDMwLCA1LCAyMzIsIDksIDIyMiwgMTQyLCAzOCwgCi0gICAgODgsIDMwLCA1LCAyNTQsIDIzMiwgMzgsIDg4LCAzMCwgNSwgMjE4LCAxNSwgMjU0LCAyMzIsIDM4LCA4OCwgMzAsIDUsIDcyLCAKLSAgICAzOCwgODgsIDMwLCA1LCAyMzYsIDI4LCAzOCwgODgsIDMwLCA1LCAyMTUsIDE4MywgMzgsIDg4LCAzMCwgNSwgMjE1LCA5MSwgCi0gICAgMzgsIDg4LCAzMCwgNSwgNjksIDM4LCA4OCwgMzAsIDUsIDIxNSwgOTIsIDM4LCA4OCwgMzAsIDUsIDc1LCAzOCwgODgsIDMwLCAKLSAgICA1LCAyMjcsIDEyMSwgNTUsIDM4LCA4OCwgMzAsIDUsIDIyNiwgMjMzLCAzOCwgODgsIDMwLCA1LCA3NCwgMzgsIDg4LCAzMCwgCi0gICAgNSwgMjU0LCAxNDgsIDM4LCA4OCwgMzAsIDUsIDIyNywgNDksIDM4LCA4OCwgMzAsIDUsIDI1NCwgMTA4LCAzOCwgODgsIDMwLCAKLSAgICA1LCA4OCwgMjU0LCAxMDgsIDM4LCA4OCwgMzAsIDUsIDIyNywgMTIxLCA0OSwgMzgsIDg4LCA1LCAyMzIsIDksIDIzNCwgCi0gICAgMjM1LCAzOCwgODgsIDUsIDIxNiwgMjQwLCAzOCwgODgsIDUsIDIxNiwgMjM5LCAzOCwgODgsIDUsIDIzNCwgMTA2LCAyMTYsIAotICAgIDIzOCwgMzgsIDg4LCA1LCAyMzQsIDEwNiwgMjE2LCAyMzcsIDM4LCA4OCwgNSwgMjM0LCAxMDYsIDIxNiwgMjM2LCAzOCwgCi0gICAgODgsIDUsIDIyNCwgNzcsIDI0MiwgMjYsIDM4LCA4OCwgNSwgMjMyLCA5LCAyMjIsIDE2OCwgMzgsIDg4LCA1LCAyMzQsIAotICAgIDEwNSwgMjM0LCAyMjAsIDM4LCA4OCwgMzcsIDI0OSwgNTUsIDI0NywgNzQsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDIxMiwgCi0gICAgNzksIDM4LCA4OCwgMjQxLCAzMywgMjEsIDExNiwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTA5LCAzOCwgODgsIDI0MSwgMzMsIAotICAgIDIxLCAxNjYsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE2MywgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTgwLCAzOCwgODgsIDI0MSwgCi0gICAgMzMsIDIxLCAxODksIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE5OCwgMzgsIDg4LCAyNDEsIDMzLCAyMSwgMTk1LCAzOCwgODgsIAotICAgIDI0MSwgMzMsIDIxLCAyMDAsIDM4LCA4OCwgODgsIDIxLCAyMTIsIDc5LCAzOCwgODgsIDg4LCAyMSwgMTE2LCAzOCwgODgsIAotICAgIDg4LCAyMSwgMTA5LCAzOCwgODgsIDg4LCAyMSwgMTY2LCAzOCwgODgsIDg4LCAyMSwgMTYzLCAzOCwgODgsIDg4LCAyMSwgCi0gICAgMTgwLCAzOCwgODgsIDg4LCAyMSwgMTg5LCAzOCwgODgsIDg4LCAyMSwgMTk4LCAzOCwgODgsIDg4LCAyMSwgMTk1LCAzOCwgCi0gICAgODgsIDg4LCAyMSwgMjAwLCAzOCwgODgsIDUsIDIxMywgMjM0LCAzOCwgODgsIDUsIDIxMywgMjMzLCAzOCwgODgsIDUsIAotICAgIDIyMiwgMTMzLCAzOCwgODgsIDUsIDIzNCwgMTY2LCAzOCwgODgsIDUsIDI0MCwgMjE5LCAzOCwgODgsIDUsIDI0NywgODgsIAotICAgIDM4LCA4OCwgNSwgMjIzLCAyMDIsIDIyMywgODksIDIyNCwgNDEsIDM4LCA4OCwgNSwgMjMyLCA5LCAyMTMsIDYxLCAzOCwgCi0gICAgODgsIDUsIDIzNSwgMTAsIDM4LCA4OCwgNSwgMjM1LCA5LCAzOCwgODgsIDUsIDIyMiwgMTM5LCAzOCwgODgsIDUsIDIyMiwgCi0gICAgMTM4LCAzOCwgODgsIDUsIDI0MSwgMjQ4LCAzOCwgODgsIDUsIDI1MCwgMjE2LCA5OSwgNSwgMjE1LCAxNzAsIDIyMywgMTgzLCAKLSAgICA5OSwgNSwgMjE1LCAxNzAsIDI1MCwgMTg5LCA5OSwgNSwgMjUwLCAxMjAsIDk5LCA1LCAyMTgsIDIxNSwgOTksIDUsIDI1MSwgCi0gICAgMTU2LCA5OSwgMSwgMjU0LCA5MiwgOTksIDEsIDI1NCwgOTMsIDIxNywgMjIxLCA5OSwgMSwgMjM2LCAyNCwgOTksIDEsIAotICAgIDIzNiwgMjUsIDIxNywgMjIxLCA5OSwgMSwgMjE1LCAxNzMsIDk5LCAxLCAyMTUsIDE3NCwgMjE3LCAyMjEsIDk5LCAxLCAKLSAgICAyMjQsIDc3LCAyMjMsIDIyOSwgOTksIDEsIDIyNCwgNzcsIDIyMywgMjMwLCAyMTcsIDIyMSwgOTksIDEsIDIzMywgMTU4LCAKLSAgICAyMzMsIDQ4LCA5OSwgMSwgMjMzLCAxNTgsIDIzMywgNDksIDIxNywgMjIxLCA5OSwgMSwgMjQ1LCAxMzYsIDk5LCAxLCAyNTQsIAotICAgIDEwNiwgOTksIDEsIDIyNywgNzgsIDk5LCAxLCAyMjcsIDc5LCAyMTcsIDIyMSwgOTksIDEsIDE4MSwgOTksIDEsIDIzNSwgCi0gICAgMTcsIDIzMiwgMTIsIDk5LCAxLCAyNDMsIDExMCwgOTksIDEsIDI0MywgMTExLCAyNDIsIDEzNywgOTksIDEsIDIyOSwgMTU5LCAKLSAgICA5OSwgMSwgMjUwLCAyMTksIDk5LCAxLCAyNTAsIDIyMCwgMjMzLCAxNDYsIDk5LCAxLCAyMzUsIDEzOSwgOTksIDEsIDIzNSwgCi0gICAgMTQwLCAyMzUsIDExOSwgOTksIDEsIDIyOCwgMjMsIDk5LCAxLCAyMTgsIDUzLCAyMzMsIDk5LCA5OSwgMSwgMjE4LCA1MywgCi0gICAgMjMwLCAxMzcsIDIzMiwgMTIsIDk5LCAxLCAyNDgsIDE2NSwgMjMwLCAxMzcsIDI1NCwgNTQsIDk5LCAxLCAyNDgsIDE2NSwgCi0gICAgMjMwLCAxMzcsIDIzMiwgMTIsIDk5LCAxLCAyMzAsIDQ2LCAyMjQsIDQ0LCA5OSwgMSwgMjE4LCA1MiwgOTksIDEsIDIxOCwgCi0gICAgNTMsIDIxNywgMjQyLCA5OSwgMSwgMjQ4LCAxNjQsIDk5LCAxLCAyNDgsIDE2NSwgMjMyLCAzMCwgOTksIDEsIDIwNSwgOTksIAotICAgIDEsIDE5MywgOTksIDEsIDIyNiwgMjE0LCAyMzQsIDIzMSwgOTksIDEsIDI1MiwgMTA3LCA5OSwgMSwgMjUyLCAxMDgsIDIzNCwgCi0gICAgMTc4LCA5OSwgMSwgMTg4LCA5OSwgMSwgMTg2LCA5OSwgMSwgMjAzLCA5OSwgMSwgMjMzLCAxNTcsIDk5LCAxLCAyMTQsIDQ5LCAKLSAgICA5OSwgMSwgMjIyLCAyMDMsIDIyMiwgMTg5LCA5OSwgMSwgMjIyLCAyMDMsIDIyMiwgMTQ5LCA5OSwgMSwgMjIyLCAyMDIsIAotICAgIDk5LCAxLCAxNTksIDk5LCA1LCAyMjMsIDIyMiwgOTksIDMwLCA1LCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMTUsIDE2OSwgCi0gICAgOTksIDMwLCA1LCAyMTUsIDE3MCwgMjIyLCAxNDUsIDk5LCAzMCwgNSwgMjE4LCAyNDgsIDk5LCAzMCwgNSwgMjE4LCAyNDksIAotICAgIDIzNiwgMTYsIDk5LCAzMCwgNSwgMjI0LCA3NywgMjIzLCAyMjksIDk5LCAzMCwgNSwgMjI0LCA3NywgMjIzLCAyMzAsIDIxNywgCi0gICAgMjIxLCA5OSwgMzAsIDUsIDIzMywgMTU4LCAyMzMsIDQ4LCA5OSwgMzAsIDUsIDIzMywgMTU4LCAyMzMsIDQ5LCAyMTcsIAotICAgIDIyMSwgOTksIDMwLCA1LCAyMTgsIDE2LCA5OSwgMzAsIDUsIDIxOCwgMTcsIDIyMywgMjI5LCA5OSwgMzAsIDUsIDIxOCwgCi0gICAgMTcsIDIxNywgMjIxLCA5OSwgMzAsIDUsIDIxOCwgMTcsIDIyMywgMjMwLCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMjYsIDU5LCAKLSAgICA5OSwgMzAsIDUsIDIyNiwgNjAsIDIxNywgMjIxLCA5OSwgMjU0LCAxNTUsIDI1NCwgMTU0LCA5OSwgMSwgMjM0LCAyNTUsIAotICAgIDIyMiwgMTQ0LCA5OSwgMSwgMjM0LCAxMTAsIDIyMiwgMTQ0LCA5OSwgMSwgMjE2LCAwLCAyMjIsIDE0NCwgOTksIDEsIDI0NSwgCi0gICAgMTYwLCAyMjIsIDE0NCwgOTksIDEsIDIxNCwgMjMzLCAyMjIsIDE0NCwgOTksIDEsIDIxMiwgMTAwLCAyMjIsIDE0NCwgOTksIAotICAgIDEsIDI1MywgMTI1LCAyMjIsIDE0NCwgOTksIDIxLCAyMTIsIDc5LCA5OSwgMjEsIDExNiwgOTksIDIxLCAxMDksIDk5LCAyMSwgCi0gICAgMTY2LCA5OSwgMjEsIDE2MywgOTksIDIxLCAxODAsIDk5LCAyMSwgMTg5LCA5OSwgMjEsIDE5OCwgOTksIDIxLCAxOTUsIDk5LCAKLSAgICAyMSwgMjAwLCA5OSwgMjI2LCAxNTcsIDk5LCAyMjYsIDE4MiwgOTksIDIxMywgMjIzLCA5OSwgMjUwLCAxNjgsIDIyNiwgCi0gICAgMTc1LCA5OSwgMjUwLCAxNjgsIDIyMCwgOTgsIDk5LCAyNTAsIDE2OCwgMjI2LCAxMzAsIDk5LCAyMjYsIDE4MSwgOTksIDI3LCAKLSAgICAxNiwgMjQ3LCA4MCwgOTksIDI3LCAxNiwgMjQ4LCAyLCA5OSwgMjcsIDE2LCAyNDYsIDE5LCA5OSwgMjcsIDE2LCAyNDgsIAotICAgIDEyMSwgOTksIDI3LCAxNiwgMjQ4LCAxMjIsIDIxOCwgMjE1LCA5OSwgMjcsIDE2LCAyNDcsIDE1NywgOTksIDI3LCAxNiwgCi0gICAgMjQ4LCAxNTcsIDk5LCAyNywgMTYsIDI0NywgMjQwLCA5OSwgMjcsIDE2LCAyNDgsIDE0MywgOTksIDI3LCAxNiwgMjQ4LCAKLSAgICAxMjIsIDI0MywgMzMsIDk5LCAyNywgMTYsIDM3LCAyMTcsIDIxNywgOTksIDI3LCAxNiwgMzcsIDI0NSwgOTksIDk5LCAyNywgCi0gICAgMTYsIDM3LCAyMzQsIDE3MywgOTksIDI3LCAxNiwgMzcsIDIzNCwgMTc1LCA5OSwgMjcsIDE2LCAzNywgMjM1LCAxMjMsIDk5LCAKLSAgICAyNywgMTYsIDM3LCAyMzQsIDE3NCwgMiwgMjM1LCAxMjMsIDk5LCAyNywgMTYsIDM3LCAyMzQsIDE3NiwgMiwgMjM1LCAxMjMsIAotICAgIDk5LCAyNywgMTYsIDM3LCAyNTEsIDIxNCwgOTksIDI3LCAxNiwgMzcsIDI0MiwgMTQxLCA5OSwgMjcsIDE2LCAyMjMsIDE0NiwgCi0gICAgMjI3LCA0MCwgMjQ2LCAyOSwgOTksIDI3LCAxNiwgMjIzLCAxNDYsIDIyNywgNDAsIDI0OCwgMTU1LCA5OSwgMjcsIDE2LCAKLSAgICAyMjMsIDE0NiwgMjQ5LCAxOTMsIDIxNiwgNzUsIDk5LCAyNywgMTYsIDIyMywgMTQ2LCAyNDksIDE5MywgMjE4LCAyMywgOTksIAotICAgIDI3LCAxNiwgMjMzLCA2OCwgMjI3LCA0MCwgMjI2LCAxNzAsIDk5LCAyNywgMTYsIDIzMywgNjgsIDIyNywgNDAsIDIyNSwgCi0gICAgMjUsIDk5LCAyNywgMTYsIDIzMywgNjgsIDI0OSwgMTkzLCAyMjUsIDE3MCwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjQ5LCAKLSAgICAxOTMsIDIyNSwgMTYwLCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyMjcsIDQwLCAyMjUsIDE5MywgMjE4LCAyMzcsIDUsIDIyNiwgCi0gICAgMTU0LCAyMTgsIDIzNywgNSwgMjI2LCAxNjYsIDIxOCwgMjM3LCA1LCAyMjYsIDE2MywgMjE4LCAyMzcsIDEsIDYxLCAyMTgsIAotICAgIDIzNywgMSwgNzIsIDIxOCwgMjM3LCAxLCA2OSwgMjE4LCAyMzcsIDEsIDI1NCwgMTQ4LCAyMTgsIDIzNywgMSwgNzUsIDIxOCwgCi0gICAgMjM3LCAxLCA3NCwgMjE4LCAyMzcsIDEsIDI0NSwgMjIsIDIxOCwgMjM3LCAxLCAxODEsIDIxOCwgMjM3LCAxLCAyMjQsIAotICAgIDIzMiwgMjE4LCAyMzcsIDEsIDI0MywgMTEwLCAyMTgsIDIzNywgMSwgMjI5LCAxNTksIDIxOCwgMjM3LCAxLCAyNTAsIDIxOSwgCi0gICAgMjE4LCAyMzcsIDEsIDIzNSwgMTM5LCAyMTgsIDIzNywgMSwgMjEyLCAxMDksIDIxOCwgMjM3LCAxLCAyMjgsIDIzLCAyMTgsIAotICAgIDIzNywgMSwgMjE4LCA1MiwgMjE4LCAyMzcsIDEsIDI0OCwgMTY0LCAyMTgsIDIzNywgMSwgMjA1LCAyMTgsIDIzNywgMSwgCi0gICAgMTkzLCAyMTgsIDIzNywgMSwgMjQ0LCAxNjQsIDIxOCwgMjM3LCAxLCAyMTUsIDEsIDIxOCwgMjM3LCAxLCAyNTIsIDEwNywgCi0gICAgMjE4LCAyMzcsIDEsIDE4OCwgMjE4LCAyMzcsIDEsIDE4NiwgMjE4LCAyMzcsIDEsIDIwMywgMjE4LCAyMzcsIDEsIDIzMywgCi0gICAgMTU3LCAyMTgsIDIzNywgMSwgMjE0LCA0OSwgMjE4LCAyMzcsIDEsIDIyMiwgMjAyLCAyMTgsIDIzNywgMSwgMjEzLCAxNTMsIAotICAgIDIxOCwgMjM3LCAxLCAxNTksIDIxOCwgMjM3LCAyNDksIDEzMywgNSwgMjI2LCAxNzksIDIxOCwgMjM3LCAyNDksIDEzMywgNSwgCi0gICAgMjI2LCAxNTYsIDIxOCwgMjM3LCAyNDksIDEzMywgNSwgMjI2LCAxNTMsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNjksIAotICAgIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNTIsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNzMsIDIxOCwgMjM3LCAzMCwgNSwgCi0gICAgMjI2LCAxNjIsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxODAsIDIxOCwgMjM3LCAzMCwgNSwgMjI2LCAxNzEsIDIxOCwgMjM3LCAKLSAgICA1LCAyMjYsIDE4MywgMjE4LCAyMzcsIDEsIDIzNCwgMTM4LCAyMTgsIDIzNywgMSwgMjE4LCAxNzYsIDIxOCwgMjM3LCAyMSwgCi0gICAgMjEyLCA3OSwgMjE4LCAyMzcsIDIxLCAxMTYsIDIxOCwgMjM3LCAyMSwgMTA5LCAyMTgsIDIzNywgMjEsIDE2NiwgMjE4LCAKLSAgICAyMzcsIDIxLCAxNjMsIDIxOCwgMjM3LCAyMSwgMTgwLCAyMTgsIDIzNywgMjEsIDE4OSwgMjE4LCAyMzcsIDIxLCAxOTgsIAotICAgIDIxOCwgMjM3LCAyMSwgMTk1LCAyMTgsIDIzNywgMjEsIDIwMCwgMjUyLCA0MCwgMSwgNjEsIDI1MiwgNDAsIDEsIDIyMCwgCi0gICAgOTAsIDYxLCAyNTIsIDQwLCAxLCAxNTksIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDE1OSwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIAotICAgIDE1OSwgMjUyLCA0MCwgMSwgMjUyLCAxMDcsIDI1MiwgNDAsIDEsIDIzNCwgMjE3LCAyNTIsIDEwNywgMjUyLCA0MCwgMSwgCi0gICAgMTkzLCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxOTMsIDI1MiwgNDAsIDEsIDIwNSwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIAotICAgIDIwNSwgMjUyLCA0MCwgMSwgMjE0LCA0OSwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMjE0LCA0OSwgMjUyLCA0MCwgMSwgMjI2LCAKLSAgICAxOTQsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDI0MywgMTEwLCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAyNDMsIDExMCwgMjUyLCAKLSAgICA0MCwgMSwgMjM1LCAxMzksIDI1MiwgNDAsIDEsIDI0OCwgMTY0LCAyNTIsIDQwLCAxLCAyMDMsIDI1MiwgNDAsIDEsIDIyMCwgCi0gICAgOTAsIDIwMywgMjUyLCA0MCwgMSwgMTg4LCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxODgsIDI1MiwgNDAsIDEsIDIxOSwgMjEzLCAKLSAgICAyMTgsIDUyLCAyNTIsIDQwLCAxLCAyMjgsIDE2NiwgMjE4LCA1MiwgMjUyLCA0MCwgMSwgMjIyLCAyMDIsIDI1MiwgNDAsIDEsIAotICAgIDIyMCwgOTAsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAyMzEsIDI0NCwgMjIyLCAyMDIsIDI1MiwgNDAsIDEsIDE4NiwgMjUyLCAKLSAgICA0MCwgMSwgMjIwLCA5MCwgMTg2LCAyNTIsIDQwLCAxLCAyMjksIDE1OSwgMjUyLCA0MCwgMSwgMjMzLCAxNTcsIDI1MiwgNDAsIAotICAgIDEsIDIyMCwgOTAsIDIzMywgMTU3LCAyNTIsIDQwLCAxLCAyMjgsIDIzLCAyNTIsIDQwLCAxLCAyNTAsIDIxOSwgMjUyLCA0MCwgCi0gICAgMSwgMjI5LCAyMjgsIDI1MiwgNDAsIDEsIDIzMSwgMTg3LCAyNTIsIDQwLCAxLCA3MiwgMjUyLCA0MCwgMSwgNjksIDI1MiwgCi0gICAgNDAsIDUsIDIxNiwgMjQ0LCAyNTIsIDQwLCAzMCwgNSwgNzQsIDI1MiwgNDAsIDMwLCA1LCAyMjYsIDE5NCwgNzQsIDI1MiwgCi0gICAgNDAsIDMwLCA1LCAyNDUsIDE2NSwgMjUyLCA0MCwgMzAsIDUsIDcyLCAyNTIsIDQwLCAzMCwgNSwgMjM0LCAyMTcsIDcyLCAKLSAgICAyNTIsIDQwLCAzMCwgNSwgNzUsIDI1MiwgNDAsIDMwLCA1LCAyMzQsIDIxNywgNzUsIDI1MiwgNDAsIDMwLCA1LCA2OSwgCi0gICAgMjUyLCA0MCwgMzAsIDUsIDExMSwgMzEsIDIyMCwgOTAsIDIyMiwgMjAyLCAyNTIsIDQwLCAyNDksIDEzMywgNSwgMjI5LCAKLSAgICAxNjEsIDI1MiwgNDAsIDI0OSwgMTMzLCA1LCAyNDIsIDQxLCAyNTIsIDQwLCAyMjYsIDE2NSwgMjUyLCA0MCwgMjI2LCAxNjEsIAotICAgIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjMwLCA0NiwgMjMxLCAxMDQsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjI1LCAKLSAgICAxOTYsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjM1LCA1MSwgMjUyLCA0MCwgMTYsIDI1MSwgMTY0LCAyMjYsIDE2NSwgCi0gICAgMTgyLCAxLCAxODEsIDE4MiwgMSwgMjM0LCA0OCwgMTgyLCAxLCAyMzQsIDEzOCwgMTgyLCAxLCAyNDMsIDExMCwgMTgyLCAxLCAKLSAgICAyNDIsIDE2MiwgMTgyLCAxLCAyMjksIDE1OSwgMTgyLCAxLCAyNTAsIDIxOSwgMTgyLCAxLCAyNTAsIDkyLCAxODIsIDEsIAotICAgIDIzNSwgMTM5LCAxODIsIDEsIDIyOCwgMjMsIDE4MiwgMSwgMjE4LCA1MiwgMTgyLCAxLCAyMTcsIDE2MSwgMTgyLCAxLCAKLSAgICAyNDgsIDE2NCwgMTgyLCAxLCAyMDUsIDE4MiwgMSwgMTkzLCAxODIsIDEsIDIyNSwgMTc0LCAxODIsIDEsIDIyNiwgMjMsIAotICAgIDE4MiwgMSwgMjQ0LCAxNjQsIDE4MiwgMSwgMjQ0LCA0NCwgMTgyLCAxLCAyNTIsIDEwNywgMTgyLCAxLCAyNTEsIDE0NSwgCi0gICAgMTgyLCAxLCAxODgsIDE4MiwgMSwgMjMwLCAyMzcsIDE4MiwgMSwgMjE2LCAxNDEsIDE4MiwgMSwgMjE2LCAxMzMsIDE4MiwgCi0gICAgMSwgMjQ1LCAyNDksIDE4MiwgMSwgMTg2LCAxODIsIDEsIDIwMywgMTgyLCAxLCAyMzMsIDE1NywgMTgyLCAxLCAxNTksIAotICAgIDE4MiwgMSwgMjQxLCAxMzksIDE4MiwgMSwgMjE1LCAxLCAxODIsIDEsIDIyMiwgMjAyLCAxODIsIDEsIDIyMSwgMjQsIDE4MiwgCi0gICAgMSwgMjE0LCA0OSwgMTgyLCAxLCA2MSwgMTgyLCAyMTksIDE4LCAxLCAxODYsIDE4MiwgMjE5LCAxOCwgMSwgMjAzLCAxODIsIAotICAgIDMwLCA1LCAyNTQsIDIzMiwgMTgyLCAzMCwgNSwgNzIsIDE4MiwgMzAsIDUsIDc1LCAxODIsIDMwLCA1LCAyMjcsIDQ5LCAKLSAgICAxODIsIDMwLCA1LCA2OSwgMTgyLCAzMCwgNSwgMjE1LCA5MiwgMTgyLCAzMCwgNSwgNzQsIDE4MiwgMjQ5LCAxMzMsIDUsIAotICAgIDIzNSwgMjcsIDE4MiwgMjQ5LCAxMzMsIDUsIDE4MywgMTgyLCAyNDksIDEzMywgNSwgMTUwLCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMDQsIDE4MiwgMjQ5LCAxMzMsIDUsIDIyNiwgMjI5LCAxODIsIDI0OSwgMTMzLCA1LCAxNDksIDE4MiwgMjQ5LCAxMzMsIDUsIAotICAgIDIxOCwgOTksIDE4MiwgMjQ5LCAxMzMsIDUsIDIyOCwgNSwgMTgyLCAyNDksIDEzMywgNSwgMjM0LCAyMzUsIDE4MiwgNSwgCi0gICAgMjI0LCA0MiwgMTgyLCA1LCAyMjgsIDYwLCAxODIsIDIyNSwgMjcsIDIxOCwgNTEsIDE4MiwgMjI1LCAyNywgMjI4LCAxMywgCi0gICAgMjE3LCA3NCwgMjE4LCA1MSwgMTgyLCAyMjUsIDI3LCAyNTAsIDk4LCAxODIsIDIyNSwgMjcsIDIxNiwgMTI4LCAyNTAsIDk4LCAKLSAgICAxODIsIDIyNSwgMjcsIDIxNiwgMTI3LCAxODIsIDIxLCAyMTIsIDc5LCAxODIsIDIxLCAxMTYsIDE4MiwgMjEsIDEwOSwgCi0gICAgMTgyLCAyMSwgMTY2LCAxODIsIDIxLCAxNjMsIDE4MiwgMjEsIDE4MCwgMTgyLCAyMSwgMTg5LCAxODIsIDIxLCAxOTgsIAotICAgIDE4MiwgMjEsIDE5NSwgMTgyLCAyMSwgMjAwLCAxODIsIDEsIDIxNiwgMTE1LCAxODIsIDEsIDIxNiwgMTA1LCAxODIsIDEsIAotICAgIDI0OCwgODYsIDIyNywgNzYsIDI1MCwgNDAsIDIxLCAyMTIsIDc5LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTE2LCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAyMSwgMTA5LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTY2LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgCi0gICAgMTYzLCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTgwLCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTg5LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAyMSwgMTk4LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMTk1LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMjAwLCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDE1NywgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjUzLCAxMjIsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDI1NCwgMTIxLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDI0LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIAotICAgIDg2LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDE1NiwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAxOTQsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMTk1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDE5MywgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjU0LCAxODksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMywgMTMsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzNSwgCi0gICAgMTY5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzYsIDI5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzUsIDE4OCwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMSwgMjM1LCAxNzcsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMiwgMTU2LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyMTUsIDE5MCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjE1LCAxODgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIxNSwgCi0gICAgMTM5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMTUsIDg1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDgyLCAyMjcsIDc2LCAKLSAgICAyNTAsIDQwLCAxLCAyNDUsIDcwLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNDUsIDE2OCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgCi0gICAgMjQ1LCAxMDgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI0NSwgNDksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIzMiwgMjA4LCAKLSAgICAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMjcsIDUsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIyNywgMTE2LCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyMjYsIDI0OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjI3LCA4OCwgMjI3LCA3NiwgMjUwLCA0MCwgMjMwLCAKLSAgICAxNzMsIDIxNiwgODQsIDIyNywgNzYsIDI1MCwgNDAsIDI0MywgMTA1LCAyMTYsIDg1LCAyMjcsIDc2LCAyNTAsIDQwLCAyMzAsIAotICAgIDE3MSwgMjE2LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjIzLCAyNDIsIDIyNywgNzYsIDI1MCwgNDAsIDIyNiwgMjEsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDI1NCwgMTEzLCAyMjcsIDc2LCAyNTAsIDQwLCAyMjUsIDI3LCAyMzAsIDE2OCwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMjI1LCAyNywgNTEsIDIzMCwgMTY4LCAyMTQsIDIyOSwgMTYwLCAyMzQsIDIxNSwgMjE0LCAyMjksIDE2MCwgMjIxLCAKLSAgICAwLCAyMTQsIDIyOSwgMTYwLCAyMjUsIDc4LCAyMTQsIDIyOSwgNSwgMjI5LCA0MCwgMjE0LCAyMjksIDUsIDIxMywgNjksIAotICAgIDIzMSwgMzUsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyNTQsIDExOCwgMjM1LCAyNDAsIDIxOCwgMjAxLCAKLSAgICAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyMzUsIDI0MCwgMjE4LCAyMDEsIDIxNCwgMjI5LCAxNjAsIDIxMywgNjksIDIzNCwgCi0gICAgMjAzLCAyMzUsIDI0MCwgMjE4LCAyMDEsIDIxNCwgMjI5LCAxNjAsIDI1MCwgMTkwLCA1NSwgMjE0LCAyMjksIDE2MCwgMjEzLCAKLSAgICA2OSwgMjM0LCAyMDMsIDIzNSwgMjQwLCAyMTgsIDIwMiwgMjIyLCAxMTUsIDIxNCwgMjI5LCAxNjAsIDUxLCAyMTgsIDIwMSwgCi0gICAgMjE0LCAyMjksIDE2MCwgMjE2LCAxNjksIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMzQsIDIwMywgMjUzLCAyNDQsIAotICAgIDIxNCwgMjI5LCAxNjAsIDYyLCA1NSwgMjE0LCAyMjksIDE2MCwgMTE3LCAxNzYsIDU1LCAyMTQsIDIyOSwgMTYwLCAxMzMsIAotICAgIDE3NiwgNTUsIDIxNCwgMjI5LCAxNjAsIDIyMywgMTM3LCAyMzQsIDIxNCwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgCi0gICAgMTYwLCAyNTMsIDEyMCwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIDIxOCwgMjAxLCAyMTQsIAotICAgIDIyOSwgNSwgMjE0LCAxMjksIDIxNSwgMTg1LCAyMTQsIDIyOSwgNSwgMjIzLCAyMDIsIDIxNCwgMTI5LCAyMTUsIDE4NSwgCi0gICAgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAyNTMsIDI0NCwgMjE0LCAyMjksIDUsIDIyMywgMjAyLCAyMTQsIDEyOSwgMjUzLCAKLSAgICAyNDQsIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgMjE1LCAxODYsIDIsIDIxOCwgMjcsIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgCi0gICAgMjUzLCAyNDUsIDIsIDIxOCwgMjcsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjU0LCAyLCAyMTQsIDIyOSwgNSwgMjUzLCAKLSAgICAyNDMsIDI1MiwgODUsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjE0LCAyNTIsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgCi0gICAgMjE0LCAyNTMsIDIsIDIxOCwgMjcsIDIxNCwgMjI5LCA1LCAyMTcsIDIxLCAyMTQsIDIyOSwgNSwgMjQxLCAxNzYsIDE4NCwgCi0gICAgMjUzLCAyNDIsIDIxNCwgMjI5LCA1LCAxODQsIDI1MywgMjQyLCAyMTQsIDIyOSwgNSwgMjIzLCA1MywgMTg0LCAyNTMsIAotICAgIDI0MiwgMjE0LCAyMjksIDUsIDI1MywgMjQzLCAyMTUsIDE5MiwgMjMwLCAxNjAsIDIxNCwgMjI5LCA1LCAyNTMsIDE5MCwgNywgCi0gICAgMSwgMywgNiwgNjEsIDcsIDEsIDMsIDYsIDI1NCwgMTQ4LCA3LCAzLCAxLCAyMTYsIDU4LCAyNTQsIDE0OCwgNywgMSwgMywgCi0gICAgNiwgMjUyLCA1NCwgMjUzLCA3NCwgNywgMSwgMywgNiwgMjUwLCAyNTIsIDcsIDEsIDMsIDYsIDI0OSwgMywgNywgMSwgMywgCi0gICAgNiwgMjQ1LCAyNSwgNywgMSwgMywgNiwgNzQsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMTYsIAotICAgIDU4LCA3MiwgNywgMSwgMywgNiwgMjM1LCAxNDIsIDcsIDEsIDMsIDYsIDIzNSwgMjcsIDcsIDEsIDMsIDYsIDIzMywgMTcxLCAKLSAgICAyLCA5MCwgNywgMSwgMywgNiwgMTgzLCA3LCAxLCAzLCA2LCAyMjMsIDIwMiwgMjA0LCA3LCAxLCAzLCA2LCA3NSwgNywgMSwgCi0gICAgMywgNiwgMjI3LCA0MCwgNzUsIDcsIDMsIDEsIDIyMCwgMTEzLCA3NSwgNywgMywgMSwgMjIwLCAxMTMsIDIyNywgNDAsIDc1LCAKLSAgICA3LCAzLCAxLCAyMjAsIDExMywgMTU3LCAyLCA5MCwgNywgMywgMSwgMjE2LCA1OCwgMjI3LCA5OSwgNywgMSwgMywgNiwgCi0gICAgMjI3LCAyLCA3LCAzLCAxLCAyMTYsIDIyNywgMTUxLCA3NSwgNywgMywgMSwgMjUxLCAxMDEsIDE1MSwgNzUsIDcsIDEsIDMsIAotICAgIDYsIDIyNiwgMjI5LCA3LCAxLCAzLCA2LCAyMjMsIDIwMiwgMTQ5LCA3LCAxLCAzLCA2LCAyMTYsIDU4LCAxNDksIDcsIDEsIAotICAgIDMsIDYsIDIxOCwgOTksIDcsIDEsIDMsIDYsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgNjksIDcsIDMsIDEsIDIyMCwgMTEzLCAKLSAgICAyNDcsIDIwOCwgNjksIDcsIDMsIDEsIDIyMCwgMTEzLCAyMTYsIDU4LCAxODMsIDcsIDEsIDMsIDYsIDIxNSwgNzksIDcsIDEsIAotICAgIDMsIDYsIDIxNCwgODIsIDcsIDEsIDMsIDYsIDIxMiwgMTUyLCA3LCAxLCAzLCA2LCAyNDQsIDIzMiwgNywgMSwgMjE0LCAKLSAgICAxMTYsIDIzMywgMTA1LCAyMTksIDE4MiwgNywgMSwgMjU0LCAxMDMsIDI1LCAxLCAzLCA2LCAyNDMsIDgzLCAyNSwgMSwgMywgCi0gICAgNiwgMjMzLCAxMjIsIDI1LCAxLCAzLCA2LCAyMjUsIDI0MCwgMjUsIDEsIDMsIDYsIDIyMywgMTkwLCAyNSwgMSwgMywgNiwgCi0gICAgMjI1LCA0NiwgMzMsIDEsIDMsIDYsIDI0NSwgMTMxLCA1OSwgMSwgNiwgNjEsIDU5LCAxLCA2LCAyNTQsIDE0OCwgNTksIDEsIAotICAgIDYsIDI1MywgNzQsIDU5LCAxLCA2LCAyNTIsIDU0LCAyNTMsIDc0LCA1OSwgMSwgNiwgMjQ5LCAzLCA1OSwgMSwgNiwgNzQsIAotICAgIDU5LCAxLCA2LCAyMjMsIDIwMiwgNzQsIDU5LCAxLCA2LCAyNDMsIDE3NywgNTksIDEsIDYsIDI0MiwgNDEsIDU5LCAxLCA2LCAKLSAgICA3MiwgNTksIDEsIDYsIDIzNSwgMTQyLCA1OSwgMSwgNiwgMjM1LCAyNywgNTksIDEsIDYsIDE1MCwgNTksIDEsIDYsIDE4MywgCi0gICAgNTksIDEsIDYsIDIwNCwgNTksIDEsIDYsIDIyMywgMjAyLCAyMDQsIDU5LCAxLCA2LCA3NSwgNTksIDEsIDYsIDIyNywgMiwgCi0gICAgNTksIDEsIDYsIDIyNiwgMjI5LCA1OSwgMSwgNiwgMTQ5LCA1OSwgMSwgNiwgMjE4LCA5OSwgNTksIDEsIDYsIDY5LCA1OSwgCi0gICAgMSwgNiwgMjE0LCA4MiwgNTksIDEsIDMsIDYxLCA1OSwgMSwgMywgMjE2LCA1OCwgNjEsIDU5LCAxLCAzLCAyNTQsIDUyLCAKLSAgICA1OSwgMSwgMywgMjE2LCA1OCwgMjU0LCAxNDgsIDU5LCAxLCAzLCAyNTMsIDc0LCA1OSwgMSwgMywgMjQ5LCAzLCA1OSwgMSwgCi0gICAgMywgNzQsIDU5LCAxLCAzLCAyMjIsIDExMywgNTksIDEsIDMsIDIyNywgNDAsIDc0LCA1OSwgMSwgMywgMjE2LCA1OCwgMjI3LCAKLSAgICA0MCwgNzQsIDU5LCAxLCAzLCAyNDMsIDE3NywgNTksIDEsIDMsIDIxNiwgNTgsIDcyLCA1OSwgMSwgMywgMjM1LCAyNywgNTksIAotICAgIDEsIDMsIDE4MywgNTksIDEsIDMsIDI0NSwgOTYsIDU5LCAxLCAzLCA3NSwgNTksIDEsIDMsIDIyNywgNDAsIDc1LCA1OSwgMSwgCi0gICAgMywgMjE2LCAyMjcsIDE1MSwgNzUsIDU5LCAxLCAzLCAyNTEsIDEwMSwgMTUxLCA3NSwgNTksIDEsIDMsIDIyNiwgMjI5LCAKLSAgICA1OSwgMSwgMywgMjE4LCA5OSwgNTksIDEsIDMsIDY5LCA1OSwgMSwgMywgMjIwLCAxMTMsIDY5LCA1OSwgMSwgMywgMjE2LCAKLSAgICA1OCwgMTgzLCA1OSwgMSwgMywgMjE1LCA3OSwgNTksIDEsIDMsIDI1NCwgMTAzLCA1OSwgMSwgMywgMjUxLCAyMDMsIDU5LCAKLSAgICAxLCAzLCAyNSwgMjQzLCA4MywgNTksIDEsIDMsIDI0OCwgNSwgNTksIDEsIDMsIDI1LCAyMjYsIDksIDU5LCAxLCAzLCAyNTAsIAotICAgIDQ3LCA3LCAyMTksIDEwLCAzLCAxLCA3MiwgNywgMjE5LCAxMCwgMywgMSwgMTQ5LCA3LCAyMTksIDEwLCAzLCAxLCA2OSwgNywgCi0gICAgMjE5LCAxMCwgMywgMSwgMjE1LCA3OSwgMjUsIDIxOSwgMTAsIDMsIDEsIDI1MSwgMjAzLCAyNSwgMjE5LCAxMCwgMywgMSwgCi0gICAgMjQzLCA4MywgMjUsIDIxOSwgMTAsIDMsIDEsIDIyMywgMTkwLCAyNSwgMjE5LCAxMCwgMywgMSwgMjI2LCA5LCAyNSwgMjE5LCAKLSAgICAxMCwgMywgMSwgMjUwLCA0NywgNywgMywgMSwgMjE1LCAxODMsIDcsIDMsIDEsIDU0LCAyLCAyMzEsIDM3LCAyMTcsIDQyLCAKLSAgICA3LCAzLCAxLCAyNDksIDQsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDI0NCwgMjMxLCAyLCAyMzEsIDM3LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjMxLCAzNywgCi0gICAgMjE3LCA0MiwgNywgMywgMSwgMjI2LCAyMzAsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjQ0LCA1NywgMjQsIDIzMSwgMzcsIDIxNywgNDIsIDcsIAotICAgIDMsIDEsIDIyMywgNCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDIzMSwgMzcsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMTYsIDU4LCAyNDMsIDE3NywgCi0gICAgNTksIDEsIDMzLCAyNDUsIDEwOCwgNywgMywgMSwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCAzLCAxLCAyMTcsIDE2NCwgMiwgCi0gICAgMjE5LCA0NywgNywgMywgNiwgMSwgMjQwLCAxNDYsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE4NCwgMiwgOTAsIDcsIDMsIDEsIAotICAgIDIyNiwgMjMwLCAyLCA5MCwgNywgMywgNiwgMSwgMTExLCAyLCA5MCwgNywgMywgMSwgMjE1LCAxMjksIDIsIDkwLCA3LCAzLCAKLSAgICAxLCA1NCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDQsIAotICAgIDIzMSwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzNSwgCi0gICAgMjgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzIsIAotICAgIDExMCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjMwLCA5OCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjI2LCAKLSAgICAyMzAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMjMsIAotICAgIDQsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0NSwgNDEsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIxNSwgCi0gICAgODAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIxMywgMTY3LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyNTQsIDUzLCAKLSAgICAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyNDksIDQsIDIsIDI0MSwgMzgsIDI0LCAyMTgsIDI3LCA3LCAzLCAxLCAxOTEsIAotICAgIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyNywgNDAsIDE5MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjIzLCAKLSAgICAyMDIsIDIyNywgNDAsIDE5MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjIyLCAxMTQsIDIsIDIyMywgMjA3LCAxMDEsIAotICAgIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCAxNTcsIDIsIDIyMywgMjA3LCAKLSAgICAxMDEsIDcsIDMsIDEsIDI0NSwgNDEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDExMSwgMiwgMjIzLCAyMDcsIDEwMSwgCi0gICAgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDIyMywgMjA3LCAxMDEsIDU5LCAxLCAzLCAyMTYsIDU4LCAyNTQsIDUyLCA1OSwgMSwgCi0gICAgMywgMjUwLCAyNTIsIDU5LCAxLCAzLCAyNTAsIDI1MywgMiwgMjQ5LCA0MSwgNTksIDEsIDMsIDI0NSwgMjUsIDU5LCAxLCAzLCAKLSAgICAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDU5LCAxLCAzLCAyNDQsIDIzMCwgNTksIDEsIDMsIDI0NywgNzMsIDIzNSwgMTQzLCAKLSAgICAyLCA5MCwgNTksIDEsIDMsIDExMywgMjQzLCAxNzcsIDU5LCAxLCAzLCAyMTYsIDU4LCAyNDIsIDQxLCA1OSwgMSwgMywgCi0gICAgMjQwLCAxNDYsIDIsIDkwLCA1OSwgMSwgMywgMjM1LCAxODMsIDU5LCAxLCAzLCA2LCA3MiwgNTksIDEsIDMsIDYsIDI0MCwgCi0gICAgMTQ2LCAyLCA5MCwgNTksIDEsIDMsIDIzNSwgMTQzLCAyLCAyNDksIDY3LCA1OSwgMSwgMywgMjMzLCAxNzEsIDIsIDIyMywgCi0gICAgMjA3LCAxMDEsIDU5LCAxLCAzLCAyMzMsIDE3MSwgMiwgMjI2LCAxOTMsIDEwMSwgNTksIDEsIDMsIDYsIDE1MCwgNTksIDEsIAotICAgIDMsIDIzMiwgMTEwLCAyLCAxMDEsIDU5LCAxLCAzLCAyMTYsIDU4LCAyMzIsIDExMCwgMiwgMTg0LCAyMzMsIDYwLCA1OSwgMSwgCi0gICAgMywgMjMwLCA5OCwgMiwgNDIsIDEwMSwgNTksIDEsIDMsIDIzMCwgOTgsIDIsIDIyMywgMjA3LCAxMDEsIDU5LCAxLCAzLCA2LCAKLSAgICAyMDQsIDU5LCAxLCAzLCAyNTIsIDU0LCA3NSwgNTksIDEsIDMsIDIyNiwgOSwgNTksIDEsIDMsIDIyMywgNCwgMiwgMTAxLCAKLSAgICA1OSwgMSwgMywgMjQ1LCA0MCwgNTksIDEsIDMsIDIxOCwgMTAwLCAyLCAyMjYsIDE5MywgMTAxLCA1OSwgMSwgMywgMTExLCAKLSAgICAxMzQsIDU5LCAxLCAzLCAyMTUsIDEyOCwgNTksIDEsIDMsIDYsIDY5LCA1OSwgMSwgMywgMjE1LCA4MCwgMiwgMTAxLCA1OSwgCi0gICAgMSwgMywgMjE2LCA1OCwgMjE1LCA3OSwgNTksIDEsIDMsIDIxMiwgMTUyLCA1OSwgMSwgMywgMjEyLCAxNTMsIDIsIDIyMywgCi0gICAgMjA3LCAxMDEsIDU5LCAxLCAzLCAyMTIsIDE1MywgMiwgMjQ5LCA0MSwgNTksIDEsIDMsIDI0NCwgMjMyLCA1OSwgMSwgMywgCi0gICAgMjE3LCAxMzIsIDM3LCAyNDYsIDcyLCAyNDIsIDExNCwgMjU0LCAxNzQsIDM3LCAyNDYsIDcyLCAyNTQsIDE2NCwgMjU0LCAKLSAgICAxNzQsIDM3LCAyMTksIDI1MywgNTUsIDM3LCAyMTgsIDIwNywgNzcsIDM3LCAyMzIsIDM2LCAzNywgMjQyLCAxMTEsIDM3LCAKLSAgICAyMzIsIDM0LCAzNywgMjU0LCAxNjIsIDM3LCAyNDIsIDExMiwgMzcsIDI1NCwgMTYzLCAzNywgNywgMywgMSwgMjI0LCAxMTMsIAotICAgIDU1LCAzNywgMjUxLCA3MywgMzcsIDIzMiwgMzUsIDM3LCA1MSwgMjQ5LCAyMjQsIDQ5LCAzNywgMjI3LCA5MSwgNDksIDM3LCAKLSAgICAyMTIsIDI4LCA1NSwgMzcsIDIzNSwgMTcwLCA1NSwgMzcsIDIxNSwgMTIyLCA0OSwgMzcsIDIxNSwgMTA1LCA0OSwgMzcsIDcsIAotICAgIDMsIDEsIDI0NCwgMzIsIDIyNywgNDAsIDExOCwgNDksIDM3LCA3LCAzLCAxLCAyNTQsIDE0OCwgMzcsIDcsIDMsIDEsIDI1MywgCi0gICAgMjQwLCAzNywgNywgMywgMSwgMjUzLCA5MiwgMzcsIDcsIDMsIDEsIDI1MCwgMjUzLCAyNTAsIDExNywgMzcsIDcsIDMsIDEsIAotICAgIDIzNSwgMjEwLCAyNDksIDMsIDM3LCA3LCAzLCAxLCAyNDUsIDI1LCAzNywgNywgMywgMSwgMjQzLCAxNzcsIDM3LCA3LCAxLCAKLSAgICAzLCA2LCAyNDMsIDE3NywgMzcsIDcsIDMsIDEsIDIzNSwgMjcsIDM3LCA3LCAzLCAxLCAxNTAsIDM3LCA3LCAxLCAzLCA2LCAKLSAgICAxNTAsIDM3LCA3LCAxLCAzLCA2LCAxODMsIDM3LCA3LCAzLCAxLCAyMDQsIDM3LCA3LCAxLCAzLCA2LCAyMDQsIDM3LCA3LCAKLSAgICAxLCAzLCA2LCAxNDksIDM3LCA3LCAzLCAxLCAyMjQsIDExMywgMjIzLCA4OCwgMzcsIDcsIDMsIDEsIDE5NywgMzcsIDcsIDMsIAotICAgIDEsIDE4NCwgMTk3LCAzNywgNywgMywgMSwgMjEyLCAxNTIsIDM3LCA1MSwgMjM1LCAxOTEsIDI1MSwgNzUsIDU1LCAzNywgCi0gICAgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgNTUsIDM3LCA0MiwgMjUzLCAxNjUsIDQ5LCAzNywgNDYsIDI1MywgMTY1LCAyNCwgCi0gICAgMTE5LCAyNTMsIDE2NSwgNTUsIDcsIDYsIDEsIDExOCwgMiwgMjIzLCAxMzEsIDU1LCA3LCAzLCAxLCAxMTgsIDIsIDIyMywgCi0gICAgMTMxLCA1NSwgNywgNiwgMSwgNTQsIDIsIDYyLCA0OSwgNywgMywgMSwgNTQsIDIsIDYyLCA0OSwgNywgNiwgMSwgNTQsIDIsIAotICAgIDYyLCA1NSwgNywgMywgMSwgNTQsIDIsIDYyLCA1NSwgNywgNiwgMSwgNTQsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgCi0gICAgNTQsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjUwLCAyNTMsIDIsIDI1MCwgMTE4LCAyNCwgMTc5LCA3LCAzLCAxLCAKLSAgICAyNTAsIDI1MywgMiwgMjUwLCAxMTgsIDI0LCAxNzksIDcsIDYsIDEsIDI0OSwgNCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDksIAotICAgIDQsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjQ5LCA0LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0OSwgNCwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyNDksIDQsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIAotICAgIDI0OSwgNCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDI0OSwgNCwgMiwgCi0gICAgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyMzIsIDM4LCAKLSAgICAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDE5MSwgMiwgMjMyLCAzOCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxOTEsIDIsIAotICAgIDIzMiwgMzgsIDI0LCAxNzksIDcsIDMsIDEsIDE5MSwgMiwgMjMyLCAzOCwgMjQsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDIxNywgNDMsIAotICAgIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDIxNywgNDMsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDI1MCwgMTE4LCAyNCwgMjUxLCA3NCwgCi0gICAgNywgMywgMSwgMTkxLCAyLCAyNTAsIDExOCwgMjQsIDI1MSwgNzQsIDcsIDYsIDEsIDI0NCwgMjMxLCAyLCA2MiwgNDksIDcsIAotICAgIDMsIDEsIDI0NCwgMjMxLCAyLCA2MiwgNDksIDcsIDYsIDEsIDI0MywgMTc4LCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgMjMyLCAzNywgNywgNiwgMSwgMjQyLCA0MiwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCA2MiwgCi0gICAgNDksIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDYyLCA1NSwgNywgMywgMSwgMjQyLCA0MiwgMiwgNjIsIDU1LCA3LCA2LCAxLCAKLSAgICAyNDIsIDQyLCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDI0MiwgNDIsIDIsIAotICAgIDI1MCwgMTE3LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMjQyLCA0MiwgMiwgMjUxLCA3NSwgCi0gICAgNTUsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI1MSwgNzUsIDU1LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjE3LCA0MywgNTUsIAotICAgIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjEwLCAyNCwgCi0gICAgMTc5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMTAsIDI0LCAxNzksIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDE3OSwgCi0gICAgNywgMywgMSwgMjM1LCAyOCwgMiwgMTc5LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzNSwgMjgsIAotICAgIDIsIDYyLCA1NSwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyMzIsIAotICAgIDI0MywgNTUsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCA2MiwgNTUsIDcsIAotICAgIDYsIDEsIDIzMywgMTcxLCAyLCA2MiwgMjUxLCAyMjAsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgNjIsIAotICAgIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMjMyLCAxMTAsIDIsIDE3OSwgNywgMywgMSwgMjMyLCAxMTAsIDIsIAotICAgIDE3OSwgNywgNiwgMSwgMjMyLCAxMTAsIDIsIDYyLCA0OSwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDYyLCA0OSwgNywgNiwgMSwgCi0gICAgMjMyLCAxMTAsIDIsIDYyLCA1NSwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDYyLCA1NSwgNywgMywgCi0gICAgMSwgMjMwLCA5OCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIzMCwgCi0gICAgOTgsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjE3LCA0MywgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyMTcsIAotICAgIDQzLCAyNCwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAyNDcsIDIwOSwgNywgMywgMSwgMTU3LCAyLCAKLSAgICAyMTcsIDQzLCAyNCwgMjQ3LCAyMDksIDcsIDYsIDEsIDE1NywgMiwgMjMyLCAzOCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAKLSAgICAxNTcsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMTc5LCA3LCAzLCAKLSAgICAxLCAxNTcsIDIsIDIzMiwgMzgsIDI0LCAxNzksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAxNzksIDcsIDMsIDEsIDIyNiwgCi0gICAgMjMwLCAyLCAxNzksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIyNiwgMjMwLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA2MiwgNDksIDcsIDYsIDEsIDIyNCwgCi0gICAgMTEzLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCA2MiwgCi0gICAgMjUxLCAyMjAsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgCi0gICAgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIzMiwgMjQzLCA1NSwgCi0gICAgNywgNiwgMSwgMjIzLCA0LCAyLCA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMjMsIDQsIAotICAgIDIsIDYyLCA1NSwgNywgMywgMSwgMjIzLCA0LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjU0LCAxNjQsIDI0LCAKLSAgICA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMjU0LCAxNjQsIDI0LCA2MiwgNDksIDcsIDYsIDEsIDIyMywgNCwgMiwgCi0gICAgMjUwLCAxNjcsIDI0LCA2MiwgNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMjUwLCAxNjcsIDI0LCA2MiwgNDksIDcsIDYsIDEsIAotICAgIDIyMywgNCwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDYyLCAyNTEsIDIyMCwgCi0gICAgMjQsIDYyLCA0OSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDYyLCA0OSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDYyLCA0OSwgCi0gICAgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDYyLCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDIzMiwgMjQzLCA1NSwgNywgNiwgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTExLCAKLSAgICAyLCAyNDcsIDIxMCwgNTUsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDIxNywgNDMsIAotICAgIDU1LCA3LCAzLCAxLCAxMTEsIDIsIDIxNywgNDMsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgCi0gICAgMTExLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDExMSwgMiwgMjE3LCA0MywgMjQsIDE3OSwgNywgMywgMSwgMTExLCAyLCAKLSAgICAyMTcsIDQzLCAyNCwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIDIzMiwgMzgsIDI0LCAyNDcsIDIwOSwgNywgMywgMSwgMTExLCAKLSAgICAyLCAyMzIsIDM4LCAyNCwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxNSwgODAsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDIxNSwgODAsIAotICAgIDIsIDIxNywgNDIsIDcsIDYsIDEsIDIxNSwgODAsIDIsIDYyLCA1NSwgNywgMywgMSwgMjE1LCA4MCwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyMTQsIDgzLCAyLCAyNDIsIDExMywgNywgMywgMSwgMjE0LCA4MywgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDIxNCwgCi0gICAgODMsIDIsIDE3OSwgNywgMywgMSwgMjE0LCA4MywgMiwgMTc5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCAyNDcsIDIwOSwgNywgCi0gICAgMywgMSwgMjE0LCA4MywgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxNCwgODMsIDIsIDYyLCA0OSwgNywgMywgMSwgMjE0LCAKLSAgICA4MywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDYyLCA1NSwgCi0gICAgNywgNiwgMSwgMjEzLCAxNjcsIDIsIDYyLCA0OSwgNywgMywgMSwgMjEzLCAxNjcsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjEzLCAKLSAgICAxNjcsIDIsIDI0NywgMjA5LCA3LCAzLCAxLCAyMTMsIDE2NywgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAKLSAgICA2MiwgNDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDIyMywgNywgCi0gICAgMywgMSwgMjEyLCAxNTMsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgCi0gICAgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAKLSAgICAyNDcsIDIwOSwgNywgMywgMSwgMjE0LCA4MywgMiwgMjIzLCAxMzEsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjIzLCAKLSAgICAxMzEsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDQ2LCAxNTEsIDIyMywgMTMwLCA3LCAzLCAxLCAxODQsIDIyMywgNCwgMiwgNjIsIAotICAgIDQ5LCA3LCAzLCAxLCAxODQsIDIyMywgNCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAxODQsIDIyMywgNCwgMiwgMTI0LCAKLSAgICA5MCwgNywgNiwgMSwgMjIwLCAyNTUsIDE5NywgNywgMywgMSwgMjQ4LCA1LCA3LCA2LCAxLCAxMTgsIDIsIDYyLCA1NSwgNywgCi0gICAgMywgMSwgMTE4LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDExOCwgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExOCwgMiwgMjQxLCAKLSAgICAzOCwgNDksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIAotICAgIDI0LCAxNzksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTE4LCAyLCAyNDksIAotICAgIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIAotICAgIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgCi0gICAgNzUsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDE3OSwgNywgNiwgMSwgMTE4LCAyLCAyNTEsIDc1LCAKLSAgICAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIAotICAgIDI1MSwgNzUsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgMjQxLCAzOCwgNDksIDcsIAotICAgIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyNTEsIDc1LCAyNCwgCi0gICAgNjIsIDU1LCA3LCA2LCAxLCAxOTEsIDIsIDYyLCA1NSwgNywgMywgMSwgMTkxLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE5MSwgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE5MSwgMiwgMjE3LCA0MiwgCi0gICAgNywgMywgMSwgMTkxLCAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCAzLCAxLCAKLSAgICAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDMsIAotICAgIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgCi0gICAgMzgsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTkxLCAKLSAgICAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgNiwgMSwgCi0gICAgMjQwLCAxNDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgNjIsIAotICAgIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDYyLCA1NSwgNywgNiwgMSwgMTU3LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMTU3LCAKLSAgICAyLCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgMywgMSwgMTU3LCAyLCAyNDksIAotICAgIDIyNCwgMjQsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxNTcsIDIsIAotICAgIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIAotICAgIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyNDEsIDM4LCA0OSwgCi0gICAgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAKLSAgICAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDYyLCA1NSwgNywgMywgMSwgMTExLCAyLCA2MiwgNTUsIDcsIDYsIAotICAgIDEsIDExMSwgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExMSwgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjQwLCAyMzYsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAxNzksIDcsIDYsIDEsIDExMSwgMiwgCi0gICAgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyNDEsIAotICAgIDM4LCA0OSwgNywgNiwgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDIxNywgNDIsIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAKLSAgICAyMzYsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIxMywgMTA2LCAKLSAgICAyLCAyNDIsIDExMywgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDYyLCA1NSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDYyLCA1NSwgCi0gICAgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjQxLCAzOCwgNDksIDcsIAotICAgIDYsIDEsIDIxMywgMTA2LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMjMxLCAKLSAgICAzNiwgMjMyLCAyMTQsIDcsIDMsIDEsIDIzMSwgMzYsIDIzMiwgMjE0LCA3LCA2LCAxLCAyMzEsIDM2LCAyMTUsIDc5LCA3LCAKLSAgICAzLCAxLCAyMzEsIDM2LCAyMTUsIDc5LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAxNzcsIDcsIDMsIDEsIDIxMywgCi0gICAgMTA2LCAyLCAyMzIsIDE3NywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjU0LCA1MywgCi0gICAgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAKLSAgICAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgCi0gICAgMzksIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIAotICAgIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCA1MCwgCi0gICAgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgCi0gICAgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjA3LCAyNCwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCA2NCwgCi0gICAgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAKLSAgICAxLCAyNDUsIDY0LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgMzksIDI1LCAzLCAKLSAgICAxLCAyNDUsIDI5LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgCi0gICAgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIAotICAgIDI0NSwgMjksIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIAotICAgIDI0OCwgOTksIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAKLSAgICAxODQsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgCi0gICAgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjM1LCAxODQsIAotICAgIDIsIDIyNSwgMzksIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAKLSAgICAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgMjM0LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgCi0gICAgMSwgMjI3LCA2NiwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjUsIDM5LCAyNSwgNiwgCi0gICAgMSwgMjI3LCA2NiwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgCi0gICAgMjI1LCAzOSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNSwgNDAsIAotICAgIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgCi0gICAgMTI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAKLSAgICAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyNDgsIDk5LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIwNywgCi0gICAgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjE1LCAKLSAgICAxMjksIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIAotICAgIDIyNywgNjgsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgCi0gICAgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgCi0gICAgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgCi0gICAgMjM0LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjYsIDIzNCwgMjUsIAotICAgIDMsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAKLSAgICAyMzUsIDE4NCwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjcsIAotICAgIDY2LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIAotICAgIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTQsIAotICAgIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAKLSAgICAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgCi0gICAgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjUsIAotICAgIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgCi0gICAgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgCi0gICAgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAKLSAgICAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgCi0gICAgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICA1MSwgMjQsIDIyNSwgNTEsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTQsIAotICAgIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgCi0gICAgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAKLSAgICAyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIAotICAgIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIAotICAgIDIsIDIwNywgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAKLSAgICAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgCi0gICAgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIAotICAgIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgCi0gICAgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjUsIDUxLCAyNSwgCi0gICAgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgCi0gICAgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAKLSAgICAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNCwgCi0gICAgMTAxLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgMjM1LCAKLSAgICAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCAKLSAgICA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjE0LCAxMDEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMzIsIDM3LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjYsIDIzNCwgCi0gICAgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNTEsIDI1LCAyMzQsIDExLCAyNSwgMjI1LCA1MSwgMjUsIDIyNSwgMzksIDI1LCAKLSAgICAyMjYsIDUwLCAyNSwgMjQ3LCAyMDQsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjE0LCAyNDYsIDI0LCAKLSAgICAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzUsIAotICAgIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgNTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIAotICAgIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIAotICAgIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjYsIDIzNCwgCi0gICAgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIyNSwgNTEsIDI1LCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCAyMzQsIDI1LCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMTQsIDEwMSwgCi0gICAgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMzIsIDM3LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjE0LCAKLSAgICAyNDUsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjQ3LCAyMDQsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAKLSAgICAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyMTQsIDEwMSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMzIsIDM3LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIAotICAgIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIyNiwgMjM0LCAyNSwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjE0LCAxMDEsIAotICAgIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMjMsIDE5MSwgCi0gICAgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyMywgMTkxLCAyLCAyNDgsIDk5LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNiwgCi0gICAgNTAsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIAotICAgIDIxNCwgMTAxLCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIzMiwgMzcsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjE0LCAKLSAgICAyNDUsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjMsIDE5MSwgMiwgMjQ4LCA5OSwgMjUsIAotICAgIDI0NywgMjA0LCAyNCwgMjE0LCAyNDUsIDI1LCAyNDcsIDIwNCwgMjQsIDIyNiwgMjM0LCAyNSwgMjE0LCAyNDUsIDI1LCAzLCAKLSAgICAxLCAyMjcsIDY4LCAyLCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjEyLCAyMTAsIAotICAgIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAKLSAgICA1MCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIAotICAgIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMTQsIDI0NSwgCi0gICAgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA1MSwgMjUsIDIyNiwgCi0gICAgMjM0LCAyNSwgMjQ4LCA5OSwgMjQ1LCAxMDksIDIyNCwgMTcyLCAyNDUsIDExOCwgMjI0LCAxNzIsIDI0NSwgMTA5LCAyMTksIAotICAgIDIwNiwgMjQ1LCAxMTgsIDIxOSwgMjA2LCAyMTcsIDk1LCAyMTksIDIwNiwgMjQzLCAyMzUsIDIxOSwgMjA2LCAyMjAsIDUxLCAKLSAgICAyMTksIDIwNiwgMjQ0LCA4MSwgMjE5LCAyMDYsIDIyNSwgMjcsIDIxOSwgMjA2LCAyMTcsIDEyMywgMjE5LCAyMDYsIDI0MiwgCi0gICAgMTcsIDIxOSwgMjA2LCAyMTIsIDgwLCAyMTMsIDIzMCwgMjE5LCAyMDYsIDIxMiwgODAsIDIxMywgMjMwLCAyMjgsIDE3OCwgCi0gICAgMjEyLCA4MCwgMjEzLCAyMzAsIDIzNSwgNjYsIDIzMywgNjIsIDc3LCAyMjMsIDE0MCwgNzcsIDI0MCwgMTYwLCAyMjgsIAotICAgIDE3OSwgMjQwLCAxNjAsIDI0NCwgODEsIDI0OCwgMTAxLCAyNDUsIDEwOSwgMjQ4LCAxMDEsIDI0NSwgMTE4LCAyNDgsIDEwMSwgCi0gICAgMTk5LCAxMzQsIDUxLCA3MSwgMjMyLCAyNDIsIDUxLCAxMTUsIDIzMiwgMjQyLCA0MiwgMjIwLCA4MSwgMjI0LCAxNDMsIDc3LCAKLSAgICA0NiwgMjIwLCA4MSwgMjI0LCAxNDMsIDc3LCAyMjAsIDgxLCAyMzIsIDE2NCwgMjI0LCAxNDMsIDc3LCAyMjAsIDgxLCAyNDEsIAotICAgIDE0OSwgMjI0LCAxNDMsIDc3LCA0MiwgNTEsIDIyNCwgMTQzLCA3NywgNDYsIDUxLCAyMjQsIDE0MywgNzcsIDUxLCAyMzIsIAotICAgIDE2NCwgMjI0LCAxNDMsIDc3LCA1MSwgMjQxLCAxNDksIDIyNCwgMTQzLCA3NywgMjQ4LCAxNDksIDUxLCAyNDgsIDE0OSwgCi0gICAgMjUxLCA0MiwgMjE2LCAxODAsIDI1MSwgNDIsIDEyMiwgNjIsIDIzMywgODAsIDExNywgNjIsIDIzMywgODAsIDE5OSwgMjQ1LCAKLSAgICAxMjAsIDI0MCwgMTU4LCAyMjUsIDE0NCwgMjMyLCAyNDMsIDIyMSwgNTcsIDIyNiwgMTQzLCAyMjEsIDU3LCAyMzMsIDYyLCAKLSAgICAyNDUsIDExNiwgMjIzLCAxNDAsIDI0NSwgMTE2LCAyMjUsIDEyNiwgMjQ3LCAxNDgsIDI0MywgMjQ0LCAyMzMsIDYyLCAyMjYsIAotICAgIDI0MSwgMjIzLCAxNDAsIDIyNiwgMjQxLCAyMzAsIDE0LCAyMjgsIDE4NCwgMjE5LCAyMDYsIDIyNiwgNTgsIDIzMSwgNiwgCi0gICAgNTIsIDIyNiwgNTgsIDIxNywgMjAxLCAyMTcsIDEwMSwgNTIsIDIyNSwgNzEsIDUxLCAyMjUsIDcxLCAyMTYsIDE2OSwgMjI1LCAKLSAgICA3MSwgMjIzLCAyMDIsIDIyNSwgNzEsIDIyMywgMjAyLCA1MSwgMjI1LCA3MSwgMjIzLCAyMDIsIDIxNiwgMTY5LCAyMjUsIAotICAgIDcxLCAyNTAsIDE3MCwgMjIwLCA4MSwgMjMzLCA2NiwgMjU0LCAxOSwgMjI0LCAxNDMsIDc3LCAyMjAsIDgxLCAyMjMsIDE0NCwgCi0gICAgMjU0LCAxOSwgMjI0LCAxNDMsIDc3LCAyMjQsIDAsIDc3LCA1MSwgMjQ0LCAyNTQsIDc3LCAyMzUsIDE5OCwgMjI2LCAyNDMsIAotICAgIDIxNSwgMTUwLCAxMzcsIDIxNywgNjUsIDI1MCwgMTcxLCAyMzUsIDIxMywgMjI1LCAxNDQsIDI1MywgMTMwLCAyNDAsIDE2MSwgCi0gICAgMjUxLCA0MiwgMjQzLCAyMjgsIDIyMCwgMjMsIDQyLCA0MSwgMjUxLCA4NSwgMiwgMjI0LCAxNTIsIDQ2LCA0MSwgMjUxLCAKLSAgICA4NSwgMiwgMjI0LCAxNTIsIDUxLCAyMjQsIDE1OCwgNzcsIDIyNCwgMTU4LCAyNDQsIDI1NCwgNzcsIDI0NCwgMjU0LCAyMjQsIAotICAgIDE1OCwgNzcsIDIxNywgMjMsIDUsIDI0NSwgMzAsIDIyMywgMjAyLCAyMjUsIDIwMCwgNTIsIDgzLCAxMzIsIDI1MSwgNDIsIAotICAgIDgzLCA5NSwgMjUxLCA0MiwgMTE1LCAyNTMsIDEzMiwgMjIzLCAyMDIsIDIyMSwgNzAsIDI0OSwgMTk0LCAyMTUsIDEzNCwgCi0gICAgMTE3LCAyNTMsIDEzMSwgMjU0LCA2NywgMjE0LCAxNjUsIDI0OSwgMTU2LCAyMzAsIDI1MSwgNTIsIDIxOCwgMTc5LCAyNDgsIAotICAgIDEwMSwgMjM1LCAxOTEsIDIxNSwgMTUwLCAyNDQsIDIxLCAyMjUsIDI3LCA3NywgMTMzLCA2MiwgMjI1LCAyNiwgMjI0LCAKLSAgICAxNjksIDIyNSwgNzEsIDI0MywgMjM3LCA2MiwgMjI1LCAyNiwgMjQ0LCA1MCwgNjIsIDIyNSwgMjYsIDExNywgNjIsIDIyNSwgCi0gICAgMjYsIDI0MywgMjM3LCA2MiwgNzcsIDI0NiwgNzIsIDI0OSwgNzAsIDIxNiwgMTc5LCA3MSwgMjQzLCAyMzcsIDI0NywgNzIsIAotICAgIDIzMSwgMTQ3LCAxNCwgMjE5LCAyMDYsIDIxMywgMTk2LCAyMzUsIDY2LCAyNDMsIDE5OCwgMjUzLCAyMjIsIDIzNSwgMTg5LCAKLSAgICAyMTcsIDM4LCAyMzUsIDE4OSwgMjIxLCA1NywgMjM1LCAxODksIDIyNSwgMTU2LCAyMzUsIDIyNSwgMjE4LCAxMjcsIDIxOCwgCi0gICAgMTk2LCAyNTQsIDE2NiwgMjE4LCAxMjcsIDIxOCwgMTk2LCAyMzUsIDIyNSwgMTIsIDI0MywgMjQ1LCAyMjEsIDMsIDI1NCwgCi0gICAgMTY2LCAxMiwgMjQzLCAyNDUsIDIyMSwgMywgMjMwLCAxMCwgMjEsIDIyMSwgNCwgMjI4LCAxODAsIDIxLCAyMjEsIDQsIAotICAgIDIxOCwgMjIzLCAyMTIsIDc5LCAyMTgsIDIyMywgNywgMywgMSwgNzIsIDIxOCwgMjIzLCAxNjMsIDIxOCwgMjIzLCAxODAsIAotICAgIDIxOCwgMjIzLCAxODksIDIxOCwgMjIzLCAxOTgsIDIxOCwgMjIzLCAxOTUsIDIxOCwgMjIzLCAyMDAsIDIxOCwgMjIzLCA5NCwgCi0gICAgNTIsIDIxOCwgMjIzLCAyMzAsIDI1MCwgMjE4LCAyMjMsIDI0NSwgNjEsIDUyLCAyMTgsIDIyMywgNDIsIDIyNiwgMTMxLCAKLSAgICAyMTgsIDIyMywgNDYsIDIyNiwgMTMxLCAyMTgsIDIyMywgNywgMywgMSwgMjA0LCAyMTksIDEwLCAyMTIsIDc5LCAyMTksIAotICAgIDEwLCAxMTYsIDIxOSwgMTAsIDEwOSwgMjE5LCAxMCwgMTY2LCAyMTksIDEwLCAxNjMsIDIxOSwgMTAsIDE4MCwgMjE5LCAxMCwgCi0gICAgMTg5LCAyMTksIDEwLCAxOTgsIDIxOSwgMTAsIDE5NSwgMjE5LCAxMCwgMjAwLCAyMTksIDEwLCA5NCwgNTIsIDIxOSwgMTAsIAotICAgIDIzMCwgMjUwLCAyMTksIDEwLCAyNDUsIDYxLCA1MiwgMjE5LCAxMCwgNDIsIDIyNiwgMTMxLCAyMTksIDEwLCA0NiwgMjI2LCAKLSAgICAxMzEsIDcsIDIxOSwgMTAsIDMsIDEsIDYxLCA3LCAyMTksIDEwLCAzLCAxLCA3NCwgNywgMjE5LCAxMCwgMywgMSwgNzUsIDcsIAotICAgIDIxOSwgMTAsIDMsIDEsIDIxMywgMTY2LCA3LCAyMTksIDEwLCAzLCAxLCAyMjIsIDExMywgNywgMjE5LCAxMCwgMywgMSwgCi0gICAgMjQyLCA0MSwgNywgMjE5LCAxMCwgMywgMSwgMjM1LCAyNywgNywgMjE5LCAxMCwgMywgMSwgMTUwLCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAxODMsIDcsIDIxOSwgMTAsIDMsIDEsIDIwNCwgNywgMjE5LCAxMCwgMywgMSwgMjI2LCAyMjksIDcsIDIxOSwgMTAsIDMsIAotICAgIDEsIDE5NywgNywgMjE5LCAxMCwgMywgMSwgMjE4LCA5OSwgMjQ1LCAxMywgNTIsIDI0OSwgMTY1LCA1MiwgMjQ5LCA1NywgCi0gICAgNTIsIDI0MywgMjIxLCAyNDMsIDIyNCwgNTIsIDIzMiwgMjI3LCA1MiwgMjMxLCA3LCA1MiwgMjMwLCAyOSwgNTIsIDIyNiwgCi0gICAgMzgsIDUyLCAyMjMsIDI5LCA1MiwgMjEzLCAyMDQsIDUyLCAxNTYsIDIyMCwgMjI5LCA1MiwgMjQ3LCA4MSwgNTIsIDI0NSwgCi0gICAgMTQsIDUyLCAyMzQsIDg1LCA1MiwgMjE2LCA3NiwgNTIsIDI0NiwgNTUsIDUyLCAyNDMsIDE2LCAyMjYsIDY4LCA1MiwgMjI2LCAKLSAgICAzNiwgNTIsIDI0MiwgODgsIDUyLCAyNTMsIDk4LCA1MiwgMjQwLCAyMTUsIDUyLCAyNTAsIDExOSwgNTIsIDIzMiwgMjIwLCAKLSAgICAyMTYsIDIxNiwgNTIsIDIxOSwgMTg4LCA1MiwgMjE3LCAxOTgsIDUyLCAyMzUsIDIzOCwgMjIzLCAyOSwgNTIsIDM3LCA0MiwgCi0gICAgMjQxLCAyMzgsIDQ5LCAzNywgNDYsIDI0MSwgMjM4LCA0OSwgMzcsIDE4NCwgNzEsIDIzMiwgMjQzLCAyMjYsIDI0NCwgMzcsIAotICAgIDIyMCwgMTc1LCA3MSwgMjMyLCAyNDMsIDIyNiwgMjQ0LCAzNywgMjUzLCAyNTUsIDc2LCA0OSwgMzcsIDI0OSwgMTk1LCA3NiwgCi0gICAgNDksIDM3LCA0MiwgNzYsIDQ5LCAzNywgNDYsIDc2LCA0OSwgMzcsIDIyMywgMTMxLCAyMjYsIDI0NCwgMzcsIDI0OSwgMTk1LCAKLSAgICAyMjMsIDEzMSwgMjI2LCAyNDQsIDM3LCAyNTMsIDI1NSwgMjIzLCAxMzEsIDIyNiwgMjQ0LCAzNywgMTMzLCAxNzYsIDQ5LCAKLSAgICAzNywgMjQzLCAyMzcsIDE3NiwgNDksIDM3LCAyNDUsIDEwNCwgMjQ5LCAyMjgsIDM3LCAyNDUsIDEwNCwgMjE5LCAxNjYsIAotICAgIDM3LCAyNDUsIDEwNCwgMjQ3LCAyMDAsIDM3LCAyNDUsIDEwNCwgMjQ5LCAyMjksIDI1MiwgOTcsIDM3LCA0MiwgNDYsIDc2LCAKLSAgICA0OSwgMzcsIDI0NSwgMTA0LCAyMjIsIDEwNywgMzcsIDI0NSwgMTA0LCAyMzQsIDE0MSwgMzcsIDI0NSwgMTA0LCAyMTUsIAotICAgIDEyNiwgMjI1LCAxNDEsIDIxNiwgMTgzLCAzNywgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjYsIDI0NCwgMzcsIDUxLCA3MSwgCi0gICAgMjE5LCA0NSwgMjI2LCAyNDQsIDM3LCAyNTQsIDksIDg3LCAzNywgMjE2LCAxNjksIDIxNSwgMTUyLCAzNywgMjEzLCAyMzIsIAotICAgIDI1MSwgNjgsIDQ5LCAzNywgMTMyLCA3NiwgMjI2LCAyNDQsIDM3LCAxODQsIDUxLCAyMTksIDIzMiwgMjI2LCAyNDQsIDM3LCAKLSAgICA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMzcsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMzcsIAotICAgIDQyLCA3NiwgNTUsIDM3LCA0NiwgNzYsIDU1LCAzNywgMjUzLCAxMzMsIDQ5LCAyNTQsIDE3MSwgMjI3LCA5NywgMjU0LCAKLSAgICAxNTYsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjE5LCAxOSwgMTg3LCA2LCAyNTAsIDI1MiwgMjQ4LCAyMiwgMjUwLCAxMTIsIAotICAgIDI1MCwgMTA5LCAyMzIsIDI0MywgODcsIDI1MCwgMTcyLCAyMjcsIDk3LCAyNTAsIDIxMiwgMjE1LCAxNTksIDI0NSwgMTUsIAotICAgIDI0OSwgMTMwLCAyMjIsIDEwNCwgMjQ4LCAyMiwgMjQ0LCAxNDcsIDExMywgMywgMjQzLCAxNzcsIDExMywgNiwgMjQyLCA0MSwgCi0gICAgMjUxLCAxNDIsIDYsIDI0MiwgNDEsIDE4NywgNiwgMjQyLCA0MSwgMjI1LCAxNjksIDI0OSwgMTMwLCAyMjUsIDE2OSwgMjQ5LCAKLSAgICAxMzEsIDExMCwgMTE3LCAyMjUsIDI0MCwgMTEzLCA2LCA3MiwgMjUxLCAxNDIsIDYsIDcyLCAxMTMsIDYsIDE1MCwgMTEzLCAKLSAgICAzLCAxNTAsIDIzMywgMTcxLCA1NCwgMjUyLCA2MCwgODcsIDE4NywgNiwgMjA0LCAyMjgsIDUyLCA1MiwgMjE5LCAyMTgsIAotICAgIDIyNCwgMTIsIDI0OSwgMTAxLCAxMTMsIDYsIDIyNiwgMjI5LCAxODcsIDYsIDIyNiwgMjI5LCAxODcsIDYsIDIyNCwgMjQwLCAKLSAgICAxMTMsIDYsIDE0OSwgMjUxLCAxNDIsIDYsIDE0OSwgMTg3LCA2LCAxNDksIDIyNSwgNzYsIDIxOCwgMjEsIDIyMywgMjE0LCAKLSAgICAyMjEsIDUzLCA3NywgMjE3LCAyMTAsIDUyLCAyMTYsIDIxMCwgMTUyLCA1MiwgMjE0LCAyMTcsIDE4NywgNiwgMjEyLCAxNTIsIAotICAgIDIyNywgMSwgNTIsIDIyNywgODcsIDUyLCAyMzUsIDE5MSwgMjI3LCA4NywgNTIsIDI1MSwgMTQyLCA2LCAyMTIsIDE1MiwgCi0gICAgMjE2LCA1OCwgMjUsIDMsIDEsIDIzNSwgMTgzLCAyMzQsIDE3OSwgNTIsIDI1NCwgMTYsIDUyLCAxMTMsIDYsIDI1MywgNzQsIAotICAgIDI1MSwgMTQyLCA2LCAyNTAsIDI1MiwgMjQ1LCAzMywgODcsIDExMywgMywgNzQsIDExMywgNiwgNzQsIDExMywgNiwgMjQ0LCAKLSAgICAyMzAsIDIxNiwgNTgsIDYsIDI0NCwgMjMwLCAxMTMsIDYsIDE4MywgMTEzLCAzLCA3NSwgMTA2LCA4NywgMjUxLCAyMDYsIAotICAgIDg3LCAyNDIsIDE3OCwgODcsIDI0OCwgMTM1LCA4NywgMjM1LCAyMjksIDIxOSwgMjE2LCAyMjMsIDg5LCA2LCAyMjQsIDI0MCwgCi0gICAgMjQ0LCAxNTAsIDUyLCAxODcsIDMsIDIyNSwgMjQwLCAxODcsIDMsIDI0MywgODMsIDE4NywgNiwgMjQzLCA4MywgMTg3LCA2LCAKLSAgICAyMjUsIDI0MCwgMTg3LCAyMzAsIDk3LCAyMTgsIDI0MSwgMjE2LCA1OCwgMzUsIDYsIDI0MywgMTc3LCAyMTYsIDU4LCAzNSwgCi0gICAgNiwgMTUwLCAyMjMsIDIwMiwgMzUsIDYsIDE1MCwgMjE2LCA1OCwgMzUsIDYsIDIxMywgMTA1LCAxODcsIDMyLCA2LCAyNDksIAotICAgIDMsIDE4NywgMzIsIDMsIDI0OSwgMywgMTg3LCAzMiwgMywgNzQsIDE4NywgMzIsIDMsIDcyLCAxODcsIDMyLCAzLCAyMzUsIAotICAgIDE0MiwgMjI1LCA1NCwgMjMyLCAyNDIsIDIxNiwgNTgsIDI1NCwgMzUsIDIyNiwgNTgsIDUyLCAyNTQsIDg4LCAyMTYsIDU4LCAKLSAgICAzLCAyNDQsIDIzMCwgMTYsIDMxLCAyMjIsIDE2NywgMjE5LCAyMTYsIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyMSwgMzksIAotICAgIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyOSwgMjUsIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIxNywgMTk0LCAyMTQsIAotICAgIDk3LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDEyMSwgMjE0LCA5NywgMjQzLCAyMjgsIDExNywgMjE3LCAxMTksIDIxNCwgOTcsIAotICAgIDI0MywgMjI4LCAxMjIsIDI0NCwgODYsIDIxNCwgOTcsIDI0MywgMjI4LCAxMTcsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMzMsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgMjI4LCAyNDMsIDIzNywgMjQ0LCA4NSwgMjE0LCA5NywgMjQzLCAKLSAgICAyMjgsIDEyMiwgMjIwLCA0MywgMjE0LCA5NywgMjQzLCAyMjgsIDI0NCwgNTAsIDIyMCwgNDEsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMjIsIDI0NSwgMTQ1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTMzLCAyNDUsIDE0MywgMjE0LCA5NywgMjQzLCAyMjgsIAotICAgIDI0NCwgNTAsIDI0NSwgMTQzLCAyMTQsIDk3LCAyNDMsIDIyOCwgMjIxLCA0MywgMjQ1LCAxNDMsIDI0MywgMjI4LCAyMjgsIAotICAgIDUzLCAxMTYsIDIyMywgMTAwLCAyMjgsIDU0LCAxMTYsIDIyMywgMTAwLCAyMjgsIDU0LCAxMDksIDIyMywgMTAwLCAyMjgsIAotICAgIDU0LCAxNjYsIDIyMywgMTAwLCAyMjgsIDU0LCAxNjMsIDIyMywgMTAwLCAyMjgsIDU0LCAxODAsIDIyMywgMTAwLCAyMjgsIAotICAgIDU0LCAxODksIDIyMywgMTAwLCAyMjgsIDU0LCAxOTgsIDIyMywgMTAwLCAyMjgsIDU0LCAxOTUsIDIyMywgMTAwLCAyMjgsIAotICAgIDU0LCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTcsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NSwgMTI0LCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjE2LCA0MSwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgODMsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAxMjIsIDI0MCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCA1MCwgMjQwLCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAxMjIsIDIxNywgMTAwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTE2LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTA5LCAzLCAKLSAgICAyMjMsIDEwMCwgMjI4LCA1NCwgMTY2LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTYzLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTgwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTg5LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk4LCAzLCAyMjMsIDEwMCwgCi0gICAgMjI4LCA1NCwgMTk1LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjAwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE3LCAyMDAsIAotICAgIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDUsIDEyNCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNiwgNDEsIDMsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAyNDQsIDgzLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTIyLCAyNDAsIDIwMCwgMywgMjIzLCAxMDAsIAotICAgIDIyOCwgNTQsIDI0NCwgNTAsIDI0MCwgMjAwLCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTIyLCAyMTcsIDEwMCwgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDEyMiwgMjE3LCAxMDEsIDI1MCwgMjUzLCAyNDksIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIAotICAgIDUwLCAyMTcsIDEwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNywgMjAxLCAyMTcsIDEwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDIyMywgMjAyLCAxMjIsIDI0MCwgMjAwLCA3LCAzLCAxLCAyMjMsIDIwMiwgMjUwLCAyNTIsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAyMjAsIDUzLCAyMzMsIDEwMSwgMTcsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIDg0LCAyNDUsIDE4MiwgMTcsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAyNDQsIDg0LCAyMTcsIDEwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjQwLCAyMDEsIDIxNywgCi0gICAgMTAwLCAyMTQsIDk3LCAyNDMsIDIyOCwgMjEyLCA4MCwgMjE3LCAxMTksIDEzMiwgNjgsIDIxNSwgMTI0LCA2OCwgOTUsIDY4LCAKLSAgICAyNDYsIDU4LCA2OCwgNDIsIDQ2LCA2OCwgMTE0LCAxMTksIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgCi0gICAgMjQ1LCAxNzYsIDY4LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY4LCAxMzIsIDc2LCAyLCAKLSAgICA5MCwgOTUsIDc2LCAyLCA5MCwgMTMyLCAyMTQsIDIwLCA2OCwgOTUsIDIxNCwgMjAsIDY4LCAxMzIsIDExNywgMjQxLCAyMTgsIAotICAgIDY4LCAyMTUsIDEyNCwgMTE3LCAyNDEsIDIxOCwgNjgsIDk1LCAxMTcsIDI0MSwgMjE4LCA2OCwgMjQ2LCA1OCwgMTE3LCAKLSAgICAyNDEsIDIxOCwgNjgsIDEzMiwgNzYsIDIsIDIxOCwgMjcsIDk1LCA3NiwgMiwgMjE4LCAyNywgMTMyLCA3NiwgMjQzLCAyMTMsIAotICAgIDEzNCwgMjE1LCAxMjQsIDc2LCAyNDMsIDIxMywgMTM0LCA5NSwgNzYsIDI0MywgMjEzLCAxMzQsIDI0NiwgNTgsIDc2LCAKLSAgICAyNDMsIDIxMywgMTM0LCAxMTQsIDExOSwgNzYsIDIsIDI1MiwgNDcsIDEzMiwgNzYsIDIsIDEwMSwgOTUsIDc2LCAyLCAxMDEsIAotICAgIDEzMiwgNzYsIDIsIDIzMiwgMTc3LCA5NSwgNzYsIDIsIDIzMiwgMTc3LCA0MiwgNDYsIDIxNCwgMjAsIDY4LCA0MiwgNDYsIAotICAgIDc2LCAyLCA5MCwgMjQ2LCA1OCwgMjEyLCAyOCwgNjgsIDIxNSwgMTI0LCA3NiwgMiwgMjE3LCAzMCwgMjMzLCA2MSwgMjE1LCAKLSAgICAxMjQsIDc2LCAyLCAyMTcsIDMwLCAyMjMsIDEzOCwgMjQ2LCA1OCwgNzYsIDIsIDIxNywgMzAsIDIzMywgNjEsIDI0NiwgNTgsIAotICAgIDc2LCAyLCAyMTcsIDMwLCAyMjMsIDEzOCwgOTUsIDc2LCAyLCAyNDksIDEwMCwgMjQ2LCA1NywgMjQ2LCA1OCwgNzYsIDIsIAotICAgIDI0OSwgMTAwLCAyMzMsIDYxLCAyNTMsIDI1NSwgMjE2LCAyMjcsIDIyMSwgNzMsIDY4LCAyNDksIDE5NSwgMjE2LCAyMjcsIAotICAgIDIyMSwgNzMsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyMTEsIDIxMSwgMTg0LCAxMzQsIDEzMiwgNzYsIDIxMSwgCi0gICAgMjExLCAyNTIsIDYwLCAxMTAsIDk1LCA3NiwgMjExLCAyMTEsIDEzNCwgMjUzLCAyNTUsIDIyNywgNDAsIDI0OSwgMjI5LCAKLSAgICA2OCwgMjQ5LCAxOTUsIDIyNywgNDAsIDI0OSwgMjI5LCA2OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyMTUsIDEyMywgCi0gICAgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDU3LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxMzgsIAotICAgIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAyMzMsIDYxLCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMjMsIDk1LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDU3LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDEzOCwgMjQ2LCA1OCwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMjMzLCA2MSwgOTUsIDc2LCAxMTAsIDEzMiwgNjgsIDIxNSwgMTI0LCA3NiwgMTMyLCA2NSwgCi0gICAgMjQ2LCA1OCwgNjgsIDEzMiwgNzYsIDExMCwgOTUsIDY4LCAxMzIsIDIyNiwgMTk3LCAyNTMsIDE2MiwgMjE1LCAxMjQsIAotICAgIDIyNiwgMTk3LCAyNTMsIDE2MiwgOTUsIDIyNiwgMTk3LCAyNTMsIDE2MiwgMjQ2LCA1OCwgMjI2LCAxOTcsIDI1MywgMTYyLCAKLSAgICAxMzIsIDI0MSwgMjM4LCAxMTAsIDk1LCAyNDEsIDIzNywgOTUsIDI0MSwgMjM4LCAxMTAsIDEzMiwgMjQxLCAyMzcsIDEzMiwgCi0gICAgNTEsIDc2LCAyLCA5MCwgNDIsIDQ2LCA1MSwgNzYsIDIsIDkwLCA5NSwgNTEsIDc2LCAyLCA5MCwgMTMyLCA1MSwgNjgsIAotICAgIDIxNSwgMTI0LCA1MSwgNjgsIDk1LCA1MSwgNjgsIDI0NiwgNTgsIDUxLCA2OCwgNDIsIDQ2LCA1MSwgNjgsIDExNCwgMTE5LCAKLSAgICA1MSwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNTEsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDUxLCA2OCwgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA1MSwgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNTEsIDY4LCAxMzIsIDIxNiwgMTY5LCA2OCwgOTUsIDIxNiwgCi0gICAgMTY5LCA2OCwgMTMyLCAyMTksIDE2MiwgNjgsIDk1LCAyMTksIDE2MiwgNjgsIDIxNSwgMTI0LCA3NiwgMiwgNTEsIDkwLCAKLSAgICAyNDYsIDU4LCA3NiwgMiwgNTEsIDkwLCAxMzIsIDI0OCwgMTAwLCA2OCwgMjE1LCAxMjQsIDI0OCwgMTAwLCA2OCwgOTUsIAotICAgIDI0OCwgMTAwLCA2OCwgMjQ2LCA1OCwgMjQ4LCAxMDAsIDY4LCAxMzIsIDc2LCAyMTEsIDIxMSwgMTM0LCA5NSwgNzYsIDIxMSwgCi0gICAgMjExLCAxMzQsIDEzMiwgNjcsIDY4LCAyMTUsIDEyNCwgNjcsIDY4LCA5NSwgNjcsIDY4LCAyNDYsIDU4LCA2NywgNjgsIAotICAgIDIxNSwgMTI0LCA2NywgNzYsIDI0MywgMjEzLCAxMzQsIDIxNSwgMTI0LCA2NywgNzYsIDIyNywgNjMsIDIyNiwgODksIDIxNSwgCi0gICAgMTI0LCA2NywgNzYsIDIyNywgNjMsIDIyNiwgOTAsIDIsIDE5OSwgMTM0LCAyMTUsIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAKLSAgICAyMjYsIDkwLCAyLCA3MSwgMTM0LCAyMTUsIDEyNCwgNjcsIDUxLCA2OCwgMjE1LCAxMjQsIDY3LCA1MSwgNzYsIDIyNywgNjMsIAotICAgIDIyNiwgODksIDk1LCA2NywgNzYsIDI0MywgMjEzLCAyMTQsIDQwLCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyMTEsIDIxMSwgCi0gICAgMjQ5LCA5OSwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMjExLCAyMTEsIDI0OSwgOTksIDExNCwgMTE5LCA2NywgNjgsIDQ2LCAKLSAgICA3NiwgMiwgMywgMjQ5LCAyMjgsIDI0NiwgNTgsIDc2LCAxMzIsIDY1LCAyMTUsIDEyNCwgNjgsIDEzMywgOTUsIDI1MywgCi0gICAgMTYyLCAxMzIsIDc2LCAyLCA3MSwgOTAsIDk1LCA3NiwgMiwgNzEsIDkwLCA0MiwgNDYsIDc2LCAyLCA3MSwgOTAsIDEzMiwgCi0gICAgNzYsIDIsIDUxLCA3MSwgOTAsIDk1LCA3NiwgMiwgNTEsIDcxLCA5MCwgNDIsIDQ2LCA3NiwgMiwgNTEsIDcxLCA5MCwgMTMyLCAKLSAgICAyMjcsIDM4LCA2OCwgOTUsIDIyNywgMzgsIDY4LCA0MiwgNDYsIDIyNywgMzgsIDY4LCAzMSwgMjU0LCA2MywgMjQ5LCAxNTMsIAotICAgIDIyNiwgMTI1LCAyNDcsIDE4NSwgMjE3LCAxNDAsIDI0NCwgMjUwLCAyMTcsIDE0MCwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0NCwgCi0gICAgMjUxLCAyNDUsIDExMCwgMjIxLCA0OCwgMjM1LCAyNDEsIDIzMCwgMzksIDI0NSwgMTI3LCAyMjcsIDk3LCAyMjgsIDE2MywgCi0gICAgMjU0LCAzMywgMjQ1LCAxMjcsIDIyNywgOTcsIDMsIDI0NSwgMTI3LCAyMjcsIDk3LCAyNDksIDEyNSwgMjUzLCAxNTMsIAotICAgIDIzMSwgMTI2LCAyNDcsIDkyLCAyMjgsIDE2MywgMjQ5LCAxMjcsIDI1MywgMTUzLCAyMzEsIDEyNiwgMywgMjQ5LCAxMjUsIAotICAgIDI1MywgMTUzLCAyMzEsIDEyNiwgMjQ1LCAxMDEsIDY1LCAyMjUsIDU2LCAyMzAsIDk3LCAyMjUsIDYzLCAyMzAsIDk3LCAKLSAgICAyNDksIDEwNCwgMjMwLCA5NywgMjE4LCAyNDEsIDIzMCwgMjUxLCA1MiwgMjMwLCAyNDksIDUyLCA2MiwgMjI1LCAxNTYsIAotICAgIDI0NywgMTIxLCAyMjAsIDIzLCAyMjEsIDQ5LCAyMzAsIDI1MCwgMjUzLCAxMzMsIDIyNywgMzMsIDIyMywgMTMxLCAyMjcsIAotICAgIDMzLCAyNTEsIDQzLCAyMjcsIDMzLCA0MSwgMjIzLCA5NSwgMjQ5LCA1MCwgMjIzLCA5NSwgMjQzLCAyMzAsIDIyMywgOTUsIAotICAgIDIyNSwgNTIsIDEwOCwgMjM1LCAyMzEsIDQ2LCAyNTQsIDE4LCAyNTQsIDE4LCAyMzEsIDE1MywgMjU0LCAxOCwgMjE5LCAKLSAgICAxODcsIDI1NCwgMTgsIDI0NywgMTIzLCAyNDcsIDkyLCAyMjgsIDE2MywgMjQ3LCAxMjYsIDIyNiwgMTM2LCAxMDgsIDIyOCwgCi0gICAgMTYzLCAyMjYsIDEzNiwgMTA4LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMyLCAxOTksIDIyNywgMjQsIDIzNSwgMTk1LCAyMTUsIAotICAgIDE0NiwgMjM1LCAyMDgsIDUxLCAyMzUsIDIwOCwgMjE2LCAxNjksIDIzNSwgMjA4LCAyNDksIDEyMSwgMjM1LCAyMDgsIDIxOCwgCi0gICAgMjEzLCAyMzUsIDIwOCwgMjE0LCAxMTAsIDIzNSwgMjA4LCAyNDksIDE5NSwgMjM1LCAyMDgsIDI0OSwgMTk1LCAyNDksIAotICAgIDEyMSwgMjM1LCAyMDgsIDI1MywgMjU1LCAyNDksIDEyMSwgMjM1LCAyMDgsIDIxNywgMTM5LCAyNTEsIDI0MywgMjI0LCAyOSwgCi0gICAgMjI1LCA1MywgNjIsIDIzMCwgMjUwLCAyNDUsIDAsIDI0MywgMjIsIDIyNSwgNTMsIDI0MSwgNDMsIDIxNywgNDMsIDIyNywgCi0gICAgMzMsIDIyMywgMjAyLCAyMTcsIDQyLCAyMzUsIDE5MSwgMjMzLCA4OSwgMTk3LCAyMjAsIDgzLCAyMTQsIDE5LCAyMTMsIAotICAgIDE4OCwgMjI1LCA2MywgMjI4LCAxNjMsIDIxNywgNDIsIDIzMCwgMjUxLCAyMTcsIDQyLCAyNTMsIDEyNiwgMTIzLCAxMDgsIAotICAgIDIyOCwgMTYzLCAyNTMsIDEyNiwgMTIzLCAxMDgsIDI1MywgMjE4LCAxMjMsIDEwOCwgMjUzLCAyMTgsIDI1MSwgMTcsIDIyOCwgCi0gICAgMTYzLCAyNTQsIDE2NSwgMTIzLCAxMDgsIDIyOSwgMTgxLCAyNTMsIDIxOCwgMjI4LCAxNzAsIDI1NCwgMTY1LCAxMjMsIAotICAgIDEwOCwgMjU0LCA1NywgMTIzLCAxMDgsIDIyOCwgMTYzLCAyNTQsIDU3LCAxMjMsIDEwOCwgMjU0LCA1NywgMTIzLCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTYsIDE2OSwgMjE3LCA0MiwgMjU0LCA2NCwgMTIzLCAxMDgsIDI0NSwgNTcsIDEwOCwgMjQzLCAyMSwgCi0gICAgMjQ1LCA1NywgMTA4LCAyNDcsIDE4NiwgMjUxLCAyMDAsIDI1MywgMjIwLCAyMTcsIDE0OSwgMjMyLCAyNTAsIDI0MywgMjEsIAotICAgIDEyMywgMTA4LCAyNTMsIDIxOCwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMTcsIDE0OSwgMjM2LCAxMCwgMjI3LCA5NywgMjM2LCAKLSAgICAxMCwgNjUsIDE2NywgMjUzLCAyMTgsIDEyMywgMTA4LCAyNDksIDE2NSwgMjQ1LCA2MCwgMjQ1LCA2MSwgMjQ5LCAxNjQsIAotICAgIDIyMywgMTMxLCAyMzUsIDI1MiwgMTIzLCAxMDgsIDIyMywgMTMxLCAxMjMsIDEwOCwgMjQ5LCA5MywgMTA4LCAyNDUsIDMyLCAKLSAgICAyNDUsIDU5LCAxMDgsIDIxOSwgOTYsIDI0NSwgNjAsIDI0OCwgNiwgMTIzLCAxMDgsIDEyMywgMjExLCAyMTEsIDI1MSwgNywgCi0gICAgMjQ4LCAyMywgMjMxLCAxNTMsIDI1MSwgNiwgMjI0LCAxNTYsIDEyMywgMTA4LCAyMjgsIDE2MywgMTIzLCAxMDgsIDI0MCwgCi0gICAgOTcsIDEwOCwgMjI4LCAxNjMsIDI0MCwgOTcsIDEwOCwgMjE5LCA0OSwgMjQ1LCA1NywgMTA4LCAyMzMsIDM5LCAxNjcsIAotICAgIDEyMywgMTA4LCAyNDIsIDEwNywgMTY3LCAxMjMsIDEwOCwgMjMzLCAzOSwgMTEwLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDExMCwgCi0gICAgMTIzLCAxMDgsIDIzMywgMzksIDI1MSwgMTcsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDI1MSwgMTcsIDIyOCwgCi0gICAgMTYzLCAxMjMsIDEwOCwgMjMwLCAxNjcsIDIzMywgMzgsIDIzMCwgMTY3LCAyNDIsIDEwNiwgMjUxLCAyMDAsIDIyOCwgMTYzLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyOCwgMTYzLCAyMzMsIDM4LCAyMjgsIDE2MywgMjQyLCAxMDYsIDIyOSwgMTgxLCAyMzMsIDM5LCAKLSAgICAyMjgsIDE3MCwgMTIzLCAxMDgsIDIyOSwgMTgxLCAyNDIsIDEwNywgMjI4LCAxNzAsIDEyMywgMTA4LCAyMzMsIDM5LCAxNjcsIAotICAgIDI0NSwgNTcsIDEwOCwgMjQyLCAxMDcsIDE2NywgMjQ1LCA1NywgMTA4LCAyMjksIDE4MSwgMjMzLCAzOSwgMjI4LCAxNzAsIAotICAgIDI0NSwgNTcsIDEwOCwgMjI5LCAxODEsIDI0MiwgMTA3LCAyMjgsIDE3MCwgMjQ1LCA1NywgMTA4LCAyMzMsIDM5LCAxNjcsIAotICAgIDI0MiwgMTA2LCAyNDIsIDEwNywgMTY3LCAyMzMsIDM4LCAyMjksIDE4MSwgMjMzLCAzOSwgMjI4LCAxNzAsIDI0MiwgMTA2LCAKLSAgICAyMjksIDE4MSwgMjQyLCAxMDcsIDIyOCwgMTcwLCAyMzMsIDM4LCAyMjUsIDgyLCAyMTksIDAsIDIyNSwgODMsIDE2NywgCi0gICAgMTIzLCAxMDgsIDIxOSwgMSwgMTY3LCAxMjMsIDEwOCwgMjI1LCA4MywgMTY3LCAyNDUsIDU3LCAxMDgsIDIxOSwgMSwgMTY3LCAKLSAgICAyNDUsIDU3LCAxMDgsIDI0NywgOTIsIDIyOCwgMTYzLCAyMjUsIDg1LCAyNDcsIDkyLCAyMjgsIDE2MywgMjE5LCAyLCAyMTksIAotICAgIDksIDIyNywgOTcsIDIxOCwgMjIyLCAyMjcsIDk3LCAyMjgsIDE2MywgMTE4LCAyMTksIDksIDIyNywgOTcsIDIyOCwgMTYzLCAKLSAgICAxMTgsIDIxOCwgMjIyLCAyMjcsIDk3LCAyMTksIDksIDY1LCAxNjcsIDEyMywgMTA4LCAyMTgsIDIyMiwgNjUsIDE2NywgCi0gICAgMTIzLCAxMDgsIDIyOSwgMTgxLCAxMTgsIDIxOSwgOSwgNjUsIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjI5LCAxODEsIDExOCwgCi0gICAgMjE4LCAyMjIsIDY1LCAyMjgsIDE3MCwgMTIzLCAxMDgsIDIxOSwgOSwgNjUsIDIsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjE4LCAKLSAgICAyMjIsIDY1LCAyLCAyMjgsIDE2MywgMTIzLCAxMDgsIDIzMCwgMTUxLCAyMzAsIDE1MiwgMjMwLCAxNTMsIDIzMCwgMTUyLCAKLSAgICAyMTUsIDE0NiwgNDEsIDIzNiwgMTAsIDIyNywgOTcsIDQxLCAyMjcsIDE3LCAyMjcsIDk3LCA0MSwgMjM2LCAxMCwgNjUsIAotICAgIDE2NywgMTIzLCAxMDgsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAxMjMsIDEwOCwgNDEsIDI1MCwgMTgzLCA0MSwgMjQ5LCA0MywgCi0gICAgMzYsIDIyNSwgMTU2LCAzNiwgMjMwLCAyNTAsIDM2LCAyMTcsIDM4LCAzNiwgMjQ3LCAxMjEsIDIyMCwgMjMsIDM2LCA2MiwgCi0gICAgMjI3LCAzMywgMzYsIDIyMywgMTMxLCAyMjcsIDMzLCAzNiwgMjUzLCAxMzMsIDIyNywgMzMsIDM2LCAyNDUsIDYwLCAzNiwgCi0gICAgMjQ4LCAxMDEsIDkxLCAyMjUsIDE1NiwgOTEsIDIzMCwgMjUwLCA5MSwgMjE3LCAzOCwgOTEsIDYyLCAyMjcsIDMzLCA0NiwgCi0gICAgMjE4LCAzNiwgNDIsIDIxOCwgMzYsIDExOSwgMjE4LCAzNiwgMTE0LCAyMTgsIDM2LCAyNTMsIDEzNiwgMjMwLCAyMjYsIAotICAgIDIxNiwgMTQ5LCAyNDMsIDI1MCwgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCA0NiwgMjE2LCA1NywgNTEsIDcxLCAyNTIsIDYwLCAKLSAgICA1MSwgNDYsIDIxNiwgNTcsIDI0NywgOTIsIDIyOCwgMTYzLCAyMjUsIDQ4LCAyMjgsIDE2MywgMjE2LCAxNDksIDI0NywgOTIsIAotICAgIDIyOCwgMTYzLCAyNDMsIDI1MSwgMjI5LCAxODMsIDUxLCA3MSwgMjUyLCA2MCwgNTEsIDQ2LCAyMTYsIDU3LCAyMjUsIDgzLCAKLSAgICAyMTUsIDE1NCwgMjIzLCAyNDEsIDIxOSwgMSwgMjE1LCAxNTQsIDIyMywgMjQxLCAyMjgsIDE2OCwgMjE5LCAyMiwgMjI3LCAKLSAgICA5NywgMjQ5LCAxMjUsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMSwgMjI4LCAxNjgsIDIxOSwgMjIsIDY1LCAxNjcsIAotICAgIDEyMywgMTA4LCAyNDksIDEyNSwgMjUzLCAxNTMsIDIyOCwgMTY4LCAyMTksIDIyLCAxNjcsIDEyMywgMTA4LCAyMjcsIDE3LCAKLSAgICAyMjcsIDk3LCAyMzYsIDEwLCAyMjcsIDk3LCAyMzAsIDE1NywgMjQxLCAxODUsIDI0OSwgMTM2LCAyMzEsIDIwMCwgMjM1LCAKLSAgICAyMDUsIDIxMywgMTMzLCAyMzAsIDIyLCAyMjgsIDE2OSwgNDYsIDI1NCwgMTksIDIsIDI1MywgMTk1LCA0NiwgMjE2LCAxODMsIAotICAgIDIzMCwgOTcsIDIzMiwgMTk5LCAyNTQsIDI3LCAyMzAsIDk3LCAyMzIsIDE5OSwgMjI3LCAyNCwgMjMwLCA5NywgMjM1LCAKLSAgICAxOTUsIDIzMCwgOTcsIDIxNSwgMTQ2LCAyNDcsIDIwMSwgMjI3LCAzMywgNjIsIDIyNywgMzMsIDIxOSwgOTYsIDIyNywgMzMsIAotICAgIDI0NywgMTIxLCAyMTcsIDM4LCAyNTEsIDkwLCA0MiwgMjI4LCAxNjgsIDI0NCwgMTQ5LCAyMjEsIDY5LCAyMjUsIDYzLCA0NiwgCi0gICAgMjI4LCAxNjgsIDI0NCwgMTQ5LCAyMjEsIDY5LCAyMjUsIDYzLCA0MiwgMjIxLCA2OSwgMjI1LCA2MywgNDYsIDIyMSwgNjksIAotICAgIDIyNSwgNjMsIDIyMywgMjAyLCAyMTcsIDQzLCAyNDUsIDYwLCAyNDksIDQwLCAyMzIsIDE5OSwgMjI3LCAyNCwgMjQ5LCA0MCwgCi0gICAgMjMyLCAxOTksIDI1NCwgMjcsIDUxLCAyMTksIDgsIDUxLCAyMTgsIDIyMSwgNTEsIDIzNSwgMTk1LCA1MSwgMjE1LCAxNDYsIAotICAgIDIyNSwgMTc5LCAxMjMsIDI0LCAyMjYsIDEzNiwgMTA4LCAyMzMsIDM5LCAyLCAyNDcsIDc0LCAyNDIsIDEwNywgMiwgMjQ3LCAKLSAgICA3NCwgMjE0LCAxNjQsIDIzMCwgMTY3LCAyMzMsIDM4LCAyMTQsIDE2NCwgMjMwLCAxNjcsIDI0MiwgMTA2LCAyMzMsIDM5LCAKLSAgICAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAyNDIsIDEwNywgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAxMjMsIAotICAgIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDEyMywgMjExLCAyMTEsIDE2NywgCi0gICAgMjI1LCA4MiwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMTksIDAsIDI0NywgOTIsIDIyOCwgMTYzLCAyMjUsIDg2LCAxNjcsIAotICAgIDI0NSwgNjIsIDI0NywgOTIsIDIyOCwgMTYzLCAyMTksIDMsIDE2NywgMjQ1LCA2MiwgMjI4LCAxNjMsIDQxLCAyMzYsIDEwLCAKLSAgICA2NSwgMTY3LCAxMjMsIDEwOCwgMjI4LCAxNjMsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAxMjMsIDEwOCwgNDEsIDIzNiwgMTAsIAotICAgIDY1LCAxNjcsIDIyOCwgMTYzLCAxMjMsIDEwOCwgNDEsIDIyNywgMTcsIDY1LCAxNjcsIDIyOCwgMTYzLCAxMjMsIDEwOCwgCi0gICAgMjMzLCAzOSwgMjUxLCAxNywgMjI4LCAxNjMsIDI0NSwgNTcsIDEwOCwgMjQyLCAxMDcsIDI1MSwgMTcsIDIyOCwgMTYzLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyNSwgODMsIDI1MSwgMTcsIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDIxOSwgMSwgMjUxLCAxNywgCi0gICAgMjI4LCAxNjMsIDI0NSwgNTcsIDEwOCwgMjI4LCAxNjMsIDIyOCwgMTY4LCAyMTksIDIyLCAyMjcsIDk3LCAyNDcsIDkyLCAKLSAgICAyMjgsIDE2MywgMjQ5LCAxMjcsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMSwgMjI4LCAxNjMsIDIyOCwgMTY4LCAyMTksIAotICAgIDIyLCA2NSwgMTY3LCAxMjMsIDEwOCwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjI4LCAxNjgsIAotICAgIDIxOSwgMjIsIDE2NywgMjQ1LCA2MiwgNzEsIDI0NSwgMTIwLCAyMzEsIDM1LCAxOTksIDI0NSwgMTIwLCAxMTQsIDQ2LCAKLSAgICAyNDcsIDIwNywgMjQ1LCAxMjAsIDExOSwgNDYsIDI0NywgMjA3LCAyNDUsIDEyMCwgMjQ1LCAxMjcsIDY1LCAyLCAxODQsIAotICAgIDE5OSwgOTAsIDI0NSwgMTI3LCA2NSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIAotICAgIDMsIDI0NSwgMTI3LCA2NSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIDI0NSwgCi0gICAgMTI3LCA2NSwgMiwgNjIsIDQ5LCAyNDUsIDEyNywgNjUsIDIsIDIyNiwgMjQ3LCAzLCAyNDUsIDEyNywgNjUsIDIsIDIyNiwgCi0gICAgMjQ3LCAyNDUsIDEyNywgNjUsIDIsIDIxNSwgMTUzLCAyNDUsIDEyNywgNjUsIDIsIDExNywgMTk5LCAyMTksIDMyLCAyNDksIAotICAgIDEyNSwgMiwgMTg0LCAxOTksIDkwLCAyNDksIDEyNSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIAotICAgIDE5OSwgOTAsIDMsIDI0OSwgMTI1LCAyLCA3MSwgMjUyLCA2MCwgMjUzLCAxMjMsIDI0NSwgMTAxLCA2NSwgMTk5LCA5MCwgCi0gICAgMjQ5LCAxMjUsIDIsIDIyNiwgMjQ3LCAzLCAyNDksIDEyNSwgMiwgMjI2LCAyNDcsIDIxMiwgMTUzLCAxNzQsIDI1MiwgOTEsIAotICAgIDIzMSwgMTI1LCAyNDcsIDIwMiwgNTIsIDI0NSwgMTI5LCA2OCwgMjQwLCAyMjEsIDExNCwgMjUzLCAxNjQsIDExOSwgMjUzLCAKLSAgICAxNjQsIDIyNSwgNTksIDIyNiwgNDEsIDIxNCwgMTYsIDIzMiwgMjQyLCA0MiwgMjUwLCAxMTUsIDQ2LCAyNTAsIDExNSwgNDIsIAotICAgIDI0NCwgMjYsIDQ2LCAyNDQsIDI2LCAyNTEsIDEwMSwgNDYsIDI0OSwgNzIsIDI1MSwgMTAxLCA0MiwgMjQ5LCA3MiwgMjE2LCAKLSAgICAyMjcsIDQ2LCAyNDksIDcyLCAyMTYsIDIyNywgNDIsIDI0OSwgNzIsIDIyMywgMjAyLCAyMjgsIDE2MywgNTIsIDQxLCAyMzIsIAotICAgIDE1OSwgMjUzLCAxOTUsIDIyMiwgODMsIDIyMiwgOTAsIDIxNywgMjEwLCAyMjQsIDEzLCAyMjUsIDEyMSwgMjM1LCAyMzUsIAotICAgIDIxNCwgMTQ1LCAyMTksIDE2NiwgMjI1LCAxNzMsIDY1LCAyMzUsIDIwNCwgNTIsIDIxNiwgNTgsIDIyOCwgMTYzLCA1MiwgCi0gICAgMjE0LCAyNiwgMjQwLCAyMjMsIDIxNiwgMjI3LCA0MiwgMjQ5LCA5OSwgMjE2LCAyMjcsIDQ2LCAyNDksIDk5LCAyNTEsIAotICAgIDEwMSwgNDIsIDI0OSwgOTksIDI1MSwgMTAxLCA0NiwgMjQ5LCA5OSwgMjE2LCAyMjcsIDE1MSwgMjM1LCAyMDgsIDI1MSwgCi0gICAgMTAxLCAxNTEsIDIzNSwgMjA4LCAyNDMsIDIxMCwgMjIwLCAzLCAxMTQsIDI1MywgMTY1LCAyNTEsIDIwMSwgMTE3LCAxOTksIAotICAgIDI1MiwgNDksIDIyNywgMjYsIDIzNCwgMTQ0LCAyNDUsIDUzLCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCAyMTMsIAotICAgIDE2NywgMjM1LCAyNTIsIDExOCwgMjI0LCAxMCwgMjUxLCA4OSwgMjM0LCAxNDMsIDIzMywgNjYsIDI1NCwgMTksIDEyNSwgCi0gICAgMjIzLCAxNDQsIDI1NCwgMTksIDEyNSwgMjQ1LCA1MywgMjExLCAyMTEsIDIxNywgMTQ5LCAyMzMsIDcwLCAyNTEsIDIxMiwgCi0gICAgMjIzLCAxMzAsIDI0OSwgMTMsIDI1NCwgNjQsIDI1MywgMTcyLCAyMTgsIDEyNiwgMjE2LCAyMTcsIDIyMywgMzQsIDI0NywgCi0gICAgMTY3LCAyMjcsIDE4LCAyNDksIDEzOCwgMjE4LCAzLCAyMjAsIDE0LCAyNDksIDkwLCAyNDksIDg5LCAxOTQsIDE5NiwgMTYsIAotICAgIDI0MCwgMTQzLCAxOTQsIDE5NiwgMTYsIDIxOSwgMTYwLCAyMjQsIDE3MiwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ1LCAKLSAgICA2MiwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ3LCAxMjYsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NywgMjAwLCAKLSAgICAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDksIDIyOCwgMTk0LCAKLSAgICAxOTYsIDE2LCAyNDksIDIyOSwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjM1LCA1OSwgMTk0LCAxOTYsIAotICAgIDE2LCAyMjAsIDI0LCAxMzQsIDE5NCwgMTk2LCAxNiwgMjUyLCA5OCwgMTM0LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAKLSAgICAyMjAsIDIzLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNTIsIDk3LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyMzMsIAotICAgIDM4LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDIsIDEwNiwgMTk0LCAxOTYsIDE2LCAxMzIsIDIxNCwgMjUxLCAxOTQsIAotICAgIDE5NiwgMTYsIDk1LCAyMTQsIDI1MSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMTMyLCA2OCwgMTk0LCAxOTYsIDE2LCAKLSAgICAyMjQsIDE3MywgOTUsIDY4LCAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyNTIsIDk3LCAxOTQsIDE5NiwgMTYsIDExOSwgCi0gICAgMjE4LCAzNywgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ4LCA2LCAyMTksIDc1LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAKLSAgICAxMTksIDI1MCwgMTcwLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDgsIDUsIDE5NCwgMTk2LCAxNiwgMTE5LCAyMTgsIAotICAgIDM3LCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDIxNSwgMTI0LCAyMTQsIDI1MSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMjE1LCAxMjQsIDY4LCAxOTQsIDE5NiwgMTYsIDExNCwgMjE4LCAzNywgMjI2LCAyNDcsIDE5NCwgMTk2LCAxNiwgMjQ4LCAKLSAgICAxNywgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMTE0LCAyNTAsIDE3MCwgMTk0LCAxOTYsIDE2LCAyMjQsIAotICAgIDE3MywgMjQ4LCAxNiwgMTk0LCAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjQ2LCA1OCwgCi0gICAgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NiwgNTgsIDY4LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTQyLCAKLSAgICAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDgsIDYsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0NywgMjAxLCAyMTUsIAotICAgIDE1MywgMTk0LCAxOTYsIDE2LCAyMzUsIDYwLCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjE1LCAxNTMsIAotICAgIDE5NCwgMTk2LCAxNiwgMTE0LCAyMjAsIDE4NSwgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE0MiwgMjI0LCAxNzIsIAotICAgIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIxOSwgOTUsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0OSwgMTY0LCAxOTQsIAotICAgIDE5NiwgMTYsIDExNCwgMjE4LCAzNywgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjQ4LCAxNywgMjQ3LCAyMDksIDE5NCwgCi0gICAgMTk2LCAxNiwgMjE5LCA5NiwgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjM1LCA2MCwgMjQ3LCAyMDksIDE5NCwgMTk2LCAKLSAgICAxNiwgMjQ5LCAyMjksIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDExOSwgMjIwLCAxODUsIDIxOSwgNzUsIDE5NCwgMTk2LCAKLSAgICAxNiwgNDIsIDIyMCwgMTg1LCAyMTksIDc1LCAxOTQsIDE5NiwgMTYsIDIxNywgNDMsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIAotICAgIDI0MiwgMTA3LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAyNDksIDE1OCwgMTM0LCAxOTQsIDE5NiwgMTYsIDI0OCwgMTcsIAotICAgIDIxNywgNDIsIDE5NCwgMTk2LCAxNiwgMjEyLCAyNywgMTk0LCAxOTYsIDE2LCAyMTksIDc2LCAyMTcsIDQyLCAxOTQsIDE5NiwgCi0gICAgMTYsIDIyMSwgNzEsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyMjgsIDE2MywgMjQ1LCA2MiwgMTk0LCAKLSAgICAxOTYsIDE2LCAyMjQsIDE3MywgMjI0LCAxNTcsIDE5NCwgMTk2LCAxNiwgMTE5LCAyNTAsIDE3MSwgMjE3LCA0MiwgMTk0LCAKLSAgICAxOTYsIDE2LCAxMTQsIDI1MCwgMTcxLCAyMTcsIDQyLCAxOTQsIDE5NiwgMTYsIDIzNSwgMTgzLCAxOTQsIDE5NiwgMTYsIAotICAgIDIyMywgMTkwLCAxOTQsIDE5NiwgMTYsIDIyNywgNjcsIDE5NCwgMTk2LCAxNiwgMjU0LCA1MywgMjE1LCAxNTMsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjQ1LCA2NCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjM1LCAxODQsIDIxNSwgMTUzLCAxOTQsIDE5NiwgCi0gICAgMTYsIDIyNywgNjgsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI1NCwgNTIsIDIyOCwgMTYzLCAyNTAsIDY2LCA3NywgNDYsIAotICAgIDI1NCwgMTksIDIsIDI0NiwgNTgsIDIxMiwgMjgsIDY4LCAyMjAsIDE1OSwgMjI3LCA0MCwgMjUxLCA4OSwgMjUxLCAyMjIsIAotICAgIDg3LCA3MSwgMjMyLCAyNDMsIDIsIDIzMSwgMzcsIDI0NywgNzQsIDIzNSwgMjEzLCA4NywgMjQ5LCAxMjIsIDIxNSwgMTUxLCAKLSAgICA4NywgMjQ3LCAxNDEsIDIxNSwgMTUxLCA4NywgMjQ1LCAxMTIsIDg3LCAyNDksIDE0OSwgODcsIDY3LCA0MSwgMiwgMjUwLCAKLSAgICAxMDksIDcxLCAyMzIsIDI0MiwgMjQ1LCA4OSwgODcsIDI1NCwgNDgsIDIzNCwgMTQ1LCA4NywgMjQxLCAxOTcsIDg3LCAzNiwgCi0gICAgMTk5LCAyNTIsIDYwLCAyLCAyMjgsIDE2MSwgMzYsIDIxNiwgMTg0LCAyNDYsIDYwLCAyNTEsIDYzLCAyNDksIDIyOSwgMiwgCi0gICAgMjI4LCAxNjUsIDY4LCAyMTUsIDE0OSwgODcsIDIzMCwgMjA3LCA4NywgMjQwLCAxNTYsIDg3LCAyMjcsIDM5LCAyNDIsIDQwLCAKLSAgICA4NywgMjI3LCAzOSwgMjMzLCAxNjksIDg3LCAyMjYsIDExNywgODcsIDIyNiwgMTE2LCA4NywgMjQ3LCAxNDksIDI0OSwgMzgsIAotICAgIDE2LCAyNDMsIDI0NSwgMTA5LCAyMTksIDIzNCwgODcsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzIsIDI0OCwgMzQsIDIyMSwgCi0gICAgNTgsIDIzNCwgMTQ1LCA4NywgMjI1LCA3MywgMjI2LCAyMDAsIDIyOSwgMTY0LCAyMjYsIDIwMCwgMjI1LCA2OSwgMjIyLCAKLSAgICAxMDgsIDg3LCAyNDksIDIxMCwgMjIyLCAxMDgsIDg3LCA0MiwgMjI2LCAxMzIsIDIxNSwgMTMxLCAxMDEsIDQyLCAyMjYsIAotICAgIDEzMiwgMjQ0LCAyNDUsIDQyLCAyMjYsIDEzMiwgMjMyLCAxNjMsIDEwMSwgNDYsIDIyNiwgMTMyLCAyMTUsIDEzMSwgMTAxLCAKLSAgICA0NiwgMjI2LCAxMzIsIDI0NCwgMjQ1LCA0NiwgMjI2LCAxMzIsIDIzMiwgMTYzLCAxMDEsIDQyLCA0MSwgMjUxLCA4NSwgCi0gICAgMjE1LCAxMzEsIDI0OSwgOTksIDQyLCA0MSwgMjUxLCA4NSwgMjQ0LCAyNDUsIDQyLCA0MSwgMjUxLCA4NSwgMjMyLCAxNjMsIAotICAgIDI0OSwgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMjE1LCAxMzEsIDI0OSwgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMjQ0LCAyNDUsIAotICAgIDQ2LCA0MSwgMjUxLCA4NSwgMjMyLCAxNjMsIDI0OSwgOTksIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAyMTUsIDEzMSwgMTAxLCAKLSAgICA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjMxLCAzNywgMjI1LCAyMzMsIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAyMzIsIDE2MywgCi0gICAgMTAxLCAyNDksIDQwLCAyNTEsIDg1LCAyNDQsIDI0NSwgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIxNSwgMTMxLCAxMDEsIDQ2LCAKLSAgICAyNDksIDQwLCAyNTEsIDg1LCAyMzEsIDM3LCAyMjUsIDIzMywgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIzMiwgMTYzLCAxMDEsIAotICAgIDIzNSwgMjA5LCAyNDQsIDI0NSwgMTk5LCAyMzIsIDI0MywgMjQ0LCAyNDUsIDIxNSwgMTMxLCA0MiwgMTY3LCAyMzIsIDE2MywgCi0gICAgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIyMiwgOTEsIDIxNSwgMTMxLCA0NiwgMTY3LCAyMzIsIDE2MywgNDIsIDI0OSwgNDAsIAotICAgIDI1MSwgODUsIDIyMiwgOTEsIDIxOCwgMjQyLCAyMTYsIDIyNiwgMjE4LCAyNDIsIDI1MSwgMTAwLCAyMTYsIDIyNywgNDEsIAotICAgIDEyNSwgMjUxLCAxMDEsIDQxLCAxMjUsIDI1MSwgMTAxLCA0MSwgMjUxLCA4NSwgMTEwLCAyMTYsIDIyNywgNDEsIDEyNSwgCi0gICAgMzQsIDE2LCAyNTEsIDEwMCwgNDIsIDcxLCA5MiwgMjMyLCAyNDIsIDQ2LCA3MSwgOTIsIDIzMiwgMjQyLCAxOTksIDIyMiwgCi0gICAgMTIzLCAyMzIsIDI0MSwgMTk5LCAyMjIsIDEyMywgMjMyLCAyNDAsIDE5OSwgMjIyLCAxMjMsIDIzMiwgMjM5LCAxOTksIAotICAgIDIyMiwgMTIzLCAyMzIsIDIzOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjE2LCAyMjcsIDIyMywgMTQ4LCAyNDcsIAotICAgIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyNTEsIDEwMSwgMjIzLCAxNDgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMiwgMjQ5LCAKLSAgICAyMjgsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTksIDI0LCAxOTksIDIsIDI0OSwgMjI4LCAyNDcsIDI1MywgMTYsIDE3NywgCi0gICAgMTE0LCAyNCwgMTk5LCAyLCAyNDksIDIyOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyLCAyMTYsIDE4MywgMjQ3LCAyNTMsIAotICAgIDE2LCAxNzcsIDExOSwgMjQsIDE5OSwgMiwgMjE2LCAxODMsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTQsIDI0LCAxOTksIDIsIAotICAgIDIxNiwgMTgzLCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyMTQsIDE5LCAyNDcsIDI1MywgMTYsIDE3NywgMTE5LCAyNCwgCi0gICAgMTk5LCAyLCAyMTQsIDE5LCAyNDcsIDI1MywgMTYsIDE3NywgMTE0LCAyNCwgMTk5LCAyLCAyMTQsIDE5LCAyNDcsIDI1MywgCi0gICAgMTYsIDE3NywgMTE5LCAyNCwgMjQxLCAzMSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExNCwgMjQsIDI0MSwgMzEsIDI0NywgMjUzLCAKLSAgICAxNiwgMTc3LCA3MSwgMjQsIDIxNiwgMjI3LCAyMzMsIDcwLCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDI0LCAyNTEsIDEwMSwgCi0gICAgMjMzLCA3MCwgNDEsIDI0NCwgMSwgMjIzLCAyMDYsIDg3LCAyNDUsIDEzOSwgODcsIDcxLCAyMzIsIDI0MywgMjQ0LCAyNDUsIAotICAgIDIzMSwgMTAwLCAyNTEsIDc0LCAyMzEsIDEwMCwgMTg0LCAxMTAsIDIyMCwgMTc0LCAyMzEsIDEwMCwgMjIwLCAxNzUsIDExMCwgCi0gICAgMjMyLCAxOTAsIDIzMSwgMTAwLCAxODQsIDExMCwgMTE3LCAyMjAsIDE2MSwgMjMxLCAxMDAsIDExNywgMjIwLCAxNjIsIAotICAgIDExMCwgMjMyLCAxOTAsIDIzMSwgMTAwLCAxMTcsIDIyMCwgMTYyLCAyMzUsIDY3LCAyMzEsIDEwMCwgMjE2LCAxNjYsIDIzMSwgCi0gICAgMTAwLCAyMTcsIDE3NiwgMjMxLCAxMDAsIDIyNiwgNjMsIDI0NSwgMTgwLCAyNDIsIDEwMCwgMjQzLCAxOTEsIDIxNiwgMjI3LCAKLSAgICAyMjYsIDEzMSwgMjUxLCAxMDEsIDIyNiwgMTMxLCAyMTYsIDIyNywgMjQ5LCA0MCwgMTI1LCAyNTEsIDEwMSwgMjQ5LCA0MCwgCi0gICAgMTI1LCAyMTYsIDIyNywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDI1MSwgMTAxLCAyMTYsIDIxOSwgMjIwLCAyMzMsIAotICAgIDEyNSwgNjcsIDIxNiwgMTk3LCAyNTEsIDIxMiwgMjIzLCAxMzEsIDIsIDI0OSwgMjI4LCAyMTksIDYwLCAyNDQsIDMzLCAKLSAgICAyNTQsIDE3NywgMjQ5LCAzNywgMjQ1LCAxMjgsIDIzNSwgMTk1LCAyNDgsIDM0LCAyNDQsIDI0NywgODcsIDgzLCAyMjMsIAotICAgIDE0NCwgNTEsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgNTEsIDIxNiwgMTgzLCA4MywgMjE1LCAxMzMsIDUxLCAyMTYsIDE4MywgCi0gICAgODMsIDI0NiwgNTksIDUxLCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCA1MSwgMjE2LCAxODQsIDIsIDcxLCAxMzQsIDgzLCAKLSAgICAyMzMsIDY2LCA1MSwgMjE2LCAxODQsIDIsIDcxLCAxMzQsIDgzLCAyMjMsIDE0NCwgMjE2LCAxODQsIDIsIDUxLCA3MSwgCi0gICAgMTM0LCAyNTQsIDgxLCAyNDksIDE5NiwgMjE5LCA2NiwgMjE3LCAzOSwgMjQ5LCAxOTYsIDI0MCwgMjI0LCAyLCAyNDQsIDE5LCAKLSAgICAyMjIsIDE1NywgMTYsIDMxLCAyMjgsIDU4LCAxNiwgMzEsIDIxOSwgOTEsIDY1LCAyNDEsIDIxNywgMTYsIDMxLCAyMTksIAotICAgIDkxLCA2NSwgMjE3LCAxNjUsIDE2LCAzMSwgMjQ1LCAxMDEsIDY1LCAyMTcsIDE2NSwgMTYsIDMxLCAyNDUsIDEwMSwgNjUsIAotICAgIDIxNiwgMjAwLCAxNiwgMzEsIDI0NSwgOTEsIDE2LCAzMSwgMjU0LCAxNjgsIDE2LCAzMSwgMjUxLCAyMjEsIDE2LCAzMSwgCi0gICAgMjUyLCA5NiwgMTYsIDMxLCAxOTksIDIxOCwgMzgsIDE2LCAzMSwgMjMyLCAyNDMsIDI0NCwgMTE0LCAxNiwgMzEsIDcxLCAKLSAgICAyMTgsIDM4LCAxNiwgMzEsIDI0MywgMjQ1LCAyNDQsIDExNCwgMTYsIDMxLCAyNTAsIDE2MiwgMjIzLCAyMDUsIDE2LCAzMSwgCi0gICAgMjIwLCAyMDgsIDIyNiwgMjU0LCAxNiwgMzEsIDIyMCwgMjA4LCAyMzUsIDI1MSwgMTYsIDMxLCAyNDgsIDk3LCAyMzIsIAotICAgIDIzMywgMjQ1LCA0MiwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAxMTcsIDExNiwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAKLSAgICAxMTcsIDEwOSwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAxMTcsIDE2NiwgMTYsIDMxLCAyNDcsIDIzOCwgMjQ5LCAxMTcsIAotICAgIDE2MywgMTYsIDMxLCAxNDYsIDI1NCwgMTY4LCAxNiwgMzEsIDIxOCwgMTIzLCAyMzYsIDU3LCAxNiwgMzEsIDI0NSwgMTAxLCAKLSAgICA2NSwgMjE2LCAyMDEsIDI1MSwgMTM2LCAxNiwgMzEsIDI1MCwgMTkzLCAxNiwgMzEsIDI0NSwgMTAxLCA2NSwgMjMxLCAxNDYsIAotICAgIDE2LCAzMSwgMjE5LCA2LCAxNiwgMzEsIDI0NSwgNDIsIDE2LCAzMSwgMjQ0LCA3NiwgMjIxLCA1NywgMTYsIDMxLCAyNDIsIAotICAgIDk5LCAyMjEsIDU3LCAxNiwgMzEsIDIyNCwgMTQsIDIyMSwgNTcsIDE2LCAzMSwgMjE1LCAxNDUsIDIyMSwgNTcsIDE2LCAzMSwgCi0gICAgMjE5LCAyMDYsIDE2LCAzMSwgMjQ4LCAxNCwgMjUxLCAxMzksIDg3LCAyMjcsIDQwLCAyNTEsIDg5LCAxNiwgMzEsIDIyOSwgCi0gICAgMTY3LCAxNiwgMzEsIDI0OCwgMTUsIDI0MywgMjQ1LCAxMDksIDE2LCAzMSwgMjE5LCA3LCAyNDMsIDI0NSwgMTA5LCAyMjcsIAotICAgIDEwNSwgMTAxLCAyMjcsIDEwNSwgMjUwLCA4NywgMjI3LCAxMDUsIDI0MywgMjQ4LCAyMjcsIDEwNSwgMjM1LCAxOTEsIDI0MywgCi0gICAgMjQ4LCAyMjcsIDEwNSwgMjUxLCAyMTksIDI1MSwgNTMsIDIyNywgMTA1LCAyNTEsIDk2LCAyMTcsIDY1LCAyMjcsIDEwNSwgCi0gICAgMjUxLCA4MiwgMjUyLCA2NSwgMjQwLCA5NiwgMjI3LCAxMDUsIDI1NCwgMzYsIDY1LCAyNTAsIDY1LCAyMjcsIDEwNSwgMjQ4LCAKLSAgICAxMDEsIDIyNywgMTA1LCAyNDksIDI5LCAyNTQsIDE3MSwgMjI4LCA1NiwgMjI3LCAxMDUsIDUxLCAyNTIsIDk3LCAzNiwgMjEsIAotICAgIDExNiwgMzYsIDIxLCAxMDksIDM2LCAyMSwgMTY2LCAzNiwgMjEsIDE2MywgMzYsIDIxLCAxODAsIDM2LCAyMSwgMTg5LCAzNiwgCi0gICAgMjEsIDE5OCwgMzYsIDIxLCAxOTUsIDM2LCAyMSwgMjAwLCAzNiwgNTAsIDIxNywgMjAwLCAzNiwgNTAsIDI0NSwgMTI0LCAKLSAgICAzNiwgNTAsIDIxNiwgNDEsIDM2LCA1MCwgMjE3LCAxMTcsIDM2LCA1MCwgMjQzLCAyMzEsIDM2LCA1MCwgMjQ0LCA4NywgMzYsIAotICAgIDUwLCAyMjAsIDQ3LCAzNiwgNTAsIDIyMSwgNDAsIDM2LCA1MCwgMjQ1LCAxNDcsIDM2LCA1MCwgMjI5LCAyOCwgMzYsIDUwLCAKLSAgICAyMTYsIDM4LCA4NiwgMjEsIDExNiwgODYsIDIxLCAxMDksIDg2LCAyMSwgMTY2LCA4NiwgMjEsIDE2MywgODYsIDIxLCAxODAsIAotICAgIDg2LCAyMSwgMTg5LCA4NiwgMjEsIDE5OCwgODYsIDIxLCAxOTUsIDg2LCAyMSwgMjAwLCA4NiwgNTAsIDIxNywgMjAwLCA4NiwgCi0gICAgNTAsIDI0NSwgMTI0LCA4NiwgNTAsIDIxNiwgNDEsIDg2LCA1MCwgMjE3LCAxMTcsIDg2LCA1MCwgMjQzLCAyMzEsIDg2LCAKLSAgICA1MCwgMjQ0LCA4NywgODYsIDUwLCAyMjAsIDQ3LCA4NiwgNTAsIDIyMSwgNDAsIDg2LCA1MCwgMjQ1LCAxNDcsIDg2LCA1MCwgCi0gICAgMjI5LCAyOCwgODYsIDUwLCAyMTYsIDM4LCAyMSwgMTIyLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDExNywgMjQzLCAyMDAsIAotICAgIDIxOSwgNjksIDIxLCAxMzMsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjQzLCAyMzcsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgCi0gICAgMjQ0LCA1MCwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMjAsIDUzLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIyMSwgNDMsIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjQ1LCAxNTAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjI5LCAzMSwgMjQzLCAKLSAgICAyMDAsIDIxOSwgNjksIDUwLCAyMTcsIDIwMSwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDUsIDEyNSwgMjQzLCAyMDAsIAotICAgIDIxOSwgNjksIDUwLCAyMTYsIDQyLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIxNywgMTE4LCAyNDMsIDIwMCwgMjE5LCA2OSwgCi0gICAgNTAsIDI0MywgMjMyLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDI0NCwgODgsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjIwLCAKLSAgICA0OCwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMjEsIDQxLCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDI0NSwgMTQ4LCAyNDMsIAotICAgIDIwMCwgMjE5LCA2OSwgNTAsIDIyOSwgMjksIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjE2LCAzOSwgMjQzLCAyMDAsIDIxOSwgCi0gICAgNjksIDg2LCA3LCAzLCAxLCA2MSwgODYsIDcsIDMsIDEsIDI1MywgNzQsIDg2LCA3LCAzLCAxLCAyNTAsIDI1MiwgODYsIDcsIAotICAgIDMsIDEsIDI0OSwgMywgODYsIDcsIDMsIDEsIDc0LCA4NiwgNywgMywgMSwgMjQ0LCAyMzAsIDg2LCA3LCAzLCAxLCAyNDMsIAotICAgIDE3NywgODYsIDcsIDMsIDEsIDI0MiwgNDEsIDg2LCA3LCAzLCAxLCA3MiwgODYsIDcsIDMsIDEsIDIzNSwgMTQyLCA4NiwgNywgCi0gICAgMywgMSwgMjM1LCAyNywgODYsIDcsIDMsIDEsIDE1MCwgODYsIDcsIDMsIDEsIDE4MywgODYsIDcsIDMsIDEsIDIwNCwgODYsIAotICAgIDcsIDMsIDEsIDc1LCA4NiwgNywgMywgMSwgMjI2LCAyMjksIDg2LCA3LCAzLCAxLCAyMjQsIDI0MCwgODYsIDcsIDMsIDEsIAotICAgIDE0OSwgODYsIDcsIDMsIDEsIDE5NywgODYsIDcsIDMsIDEsIDIxOCwgOTksIDg2LCA3LCAzLCAxLCA2OSwgODYsIDcsIDMsIAotICAgIDEsIDIxNSwgNzksIDg2LCA3LCAzLCAxLCAyMTQsIDgyLCA4NiwgNywgMywgMSwgMjEzLCAxNjYsIDg2LCA3LCAzLCAxLCAKLSAgICAyMTMsIDEwNSwgODYsIDcsIDMsIDEsIDIxMiwgMTUyLCAzNiwgNywgNiwgMSwgNjEsIDM2LCA3LCA2LCAxLCAyNTMsIDc0LCAKLSAgICAzNiwgNywgNiwgMSwgMjUwLCAyNTIsIDM2LCA3LCA2LCAxLCAyNDksIDMsIDM2LCA3LCA2LCAxLCA3NCwgMzYsIDcsIDYsIDEsIAotICAgIDI0NCwgMjMwLCAzNiwgNywgNiwgMSwgMjQzLCAxNzcsIDM2LCA3LCA2LCAxLCAyNDIsIDQxLCAzNiwgNywgNiwgMSwgNzIsIAotICAgIDM2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMzYsIDcsIDYsIDEsIDIzNSwgMjcsIDM2LCA3LCA2LCAxLCAxNTAsIDM2LCA3LCA2LCAKLSAgICAxLCAxODMsIDM2LCA3LCA2LCAxLCAyMDQsIDM2LCA3LCA2LCAxLCA3NSwgMzYsIDcsIDYsIDEsIDIyNiwgMjI5LCAzNiwgNywgCi0gICAgNiwgMSwgMjI0LCAyNDAsIDM2LCA3LCA2LCAxLCAxNDksIDM2LCA3LCA2LCAxLCAxOTcsIDM2LCA3LCA2LCAxLCAyMTgsIDk5LCAKLSAgICAzNiwgNywgNiwgMSwgNjksIDM2LCA3LCA2LCAxLCAyMTUsIDc5LCAzNiwgNywgNiwgMSwgMjE0LCA4MiwgMzYsIDcsIDYsIDEsIAotICAgIDIxMywgMTY2LCAzNiwgNywgNiwgMSwgMjEzLCAxMDUsIDM2LCA3LCA2LCAxLCAyMTIsIDE1MiwgMzYsIDcsIDMsIDEsIDYxLCAKLSAgICAzNiwgNywgMywgMSwgMjUzLCA3NCwgMzYsIDcsIDMsIDEsIDI1MCwgMjUyLCAzNiwgNywgMywgMSwgMjQ5LCAzLCAzNiwgNywgCi0gICAgMywgMSwgNzQsIDM2LCA3LCAzLCAxLCAyNDQsIDIzMCwgMzYsIDcsIDMsIDEsIDI0MywgMTc3LCAzNiwgNywgMywgMSwgMjQyLCAKLSAgICA0MSwgMzYsIDcsIDMsIDEsIDcyLCAzNiwgNywgMywgMSwgMjM1LCAxNDIsIDM2LCA3LCAzLCAxLCAyMzUsIDI3LCAzNiwgNywgCi0gICAgMywgMSwgMTUwLCAzNiwgNywgMywgMSwgMTgzLCAzNiwgNywgMywgMSwgMjA0LCAzNiwgNywgMywgMSwgNzUsIDM2LCA3LCAzLCAKLSAgICAxLCAyMjYsIDIyOSwgMzYsIDcsIDMsIDEsIDIyNCwgMjQwLCAzNiwgNywgMywgMSwgMTQ5LCAzNiwgNywgMywgMSwgMTk3LCAKLSAgICAzNiwgNywgMywgMSwgMjE4LCA5OSwgMzYsIDcsIDMsIDEsIDY5LCAzNiwgNywgMywgMSwgMjE1LCA3OSwgMzYsIDcsIDMsIDEsIAotICAgIDIxNCwgODIsIDM2LCA3LCAzLCAxLCAyMTMsIDE2NiwgMzYsIDcsIDMsIDEsIDIxMywgMTA1LCAzNiwgNywgMywgMSwgMjEyLCAKLSAgICAxNTIsIDM2LCAyMSwgMjEyLCA3OSwgMTQ2LCAzNiwgNTAsIDI0NSwgMTI0LCAxNDYsIDM2LCA1MCwgMjE2LCA0MSwgMTQ2LCAKLSAgICAzNiwgNTAsIDIxNywgMTE3LCAxNDYsIDM2LCA1MCwgMjQzLCAyMzEsIDE0NiwgMzYsIDUwLCAyNDQsIDg3LCAxNDYsIDM2LCAKLSAgICA1MCwgMjIwLCA0NywgMTQ2LCAzNiwgNTAsIDIyMSwgNDAsIDE0NiwgMzYsIDUwLCAyNDUsIDE0NywgMTQ2LCAzNiwgNTAsIAotICAgIDIyOSwgMjgsIDE0NiwgMzYsIDUwLCAyMTYsIDM4LCA1MSwgMzYsIDIxLCAxMTYsIDUxLCAzNiwgMjEsIDEwOSwgNTEsIDM2LCAKLSAgICAyMSwgMTY2LCA1MSwgMzYsIDIxLCAxNjMsIDUxLCAzNiwgMjEsIDE4MCwgNTEsIDM2LCAyMSwgMTg5LCA1MSwgMzYsIDIxLCAKLSAgICAxOTgsIDUxLCAzNiwgMjEsIDE5NSwgNTEsIDM2LCAyMSwgMjAwLCA1MSwgMzYsIDUwLCAyMTcsIDIwMCwgMTQ2LCAzNiwgMjEsIAotICAgIDIxMiwgNzksIDkyLCA5NiwgMTc3LCAyNDEsIDMxLCA5MiwgOTYsIDEwNywgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDIxNCwgCi0gICAgMjE2LCA5MiwgOTYsIDEwNywgMjE0LCAyMTYsIDkyLCA5NiwgMTc3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTA3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIAotICAgIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgMjE2LCAxNjksIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIDk2LCAxNzcsIDIyNCwgCi0gICAgMTY5LCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDIyNCwgMTY5LCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAKLSAgICAxNzcsIDIyNCwgMTY5LCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTA3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDIxNCwgCi0gICAgMjE2LCA5MiwgOTYsIDE3NywgMTE5LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTE5LCAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTE5LCAxMDcsIDI0LCA0NiwgMjMzLCAyLCA5MiwgOTYsIDEwNywgMTE5LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgCi0gICAgMTc3LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDExOSwgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExOSwgCi0gICAgMTA3LCAyNCwgNDIsIDIzMywgMiwgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAKLSAgICAyMjMsIDE0OCwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQ2LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDQ2LCAKLSAgICAyMzMsIDIsIDkyLCA5NiwgMTA3LCAxMTQsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDExNCwgMjQsIDIzMywgNzAsIAotICAgIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0MiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0MiwgMjMzLCAyLCA5MiwgCi0gICAgOTYsIDEwNywgMTE0LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgNzEsIAotICAgIDE3NywgMjQsIDQ2LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDEwNywgMjQsIDQ2LCAxMTQsIDIzMywgMiwgOTIsIDk2LCA3MSwgMTA3LCAyNCwgNDYsIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDE3NywgMjQsIDQ2LCAxMTQsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDYsIDExOSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgNzEsIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCA0MiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0MiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDQyLCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCA0MiwgMTE0LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQyLCAxMTksIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgNzEsIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMTE5LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDExOSwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExOSwgMTA3LCAyNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgNDYsIDE3NywgMjQsIDQyLCAxMTksIDI0MSwgMjA1LCA5MiwgOTYsIDQyLCAxNzcsIDI0LCA0NiwgMTE5LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDQyLCAKLSAgICAxMDcsIDI0LCA0NiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDEwNywgMjQsIDQyLCAxMTQsIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTQsIDE3NywgMjQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICA0NiwgMTc3LCAyNCwgNDIsIDExNCwgMjQxLCAyMDUsIDkyLCA5NiwgNDIsIDE3NywgMjQsIDQ2LCAxMTQsIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDcxLCAyMzMsIDIsIDkyLCA5NiwgNDYsIDEwNywgMjQsIDQyLCA3MSwgMjMzLCAyLCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgMTE5LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICAxMTksIDEwNywgMjQsIDExNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDQyLCAxMTQsIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCA0NiwgMTE0LCAxMDcsIDI0LCA0MiwgMTE5LCAKLSAgICAyMzMsIDIsIDkyLCA5NiwgNDIsIDExOSwgMTA3LCAyNCwgNDYsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMTksIDEwNywgCi0gICAgMjQsIDQyLCAxMTQsIDIzMywgMiwgOTIsIDk2LCAxMTksIDE3NywgMjQsIDExNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAKLSAgICAxMTQsIDE3NywgMjQsIDExOSwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCA0NiwgMTc3LCAyNCwgNDIsIDcxLCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCA0MiwgMTc3LCAyNCwgNDYsIDcxLCAyNDEsIDIwNSwgOTIsIDk2LCAxMDcsIDcxLCAyNCwgMjQxLCAzMSwgOTIsIAotICAgIDk2LCAxNzcsIDUxLCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDUxLCAyNDgsIDEwMiwgMjQxLCAzMSwgOTIsIAotICAgIDk2LCAxNzcsIDUxLCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTA3LCA1MSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgCi0gICAgOTYsIDUxLCAyNDEsIDMxLCA5MiwgOTYsIDUxLCAyMTQsIDIxNiwgOTIsIDk2LCAxMTksIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCAKLSAgICA2NywgOTIsIDk2LCAxMTksIDUxLCAyNCwgNDYsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgCi0gICAgOTYsIDExOSwgMjIwLCA4MSwgMjQsIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDExOSwgNTEsIDI0LCA0MiwgMjIwLCA4MCwgOTIsIAotICAgIDk2LCA1MSwgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxMTQsIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCA2NywgOTIsIDk2LCAKLSAgICAxMTQsIDUxLCAyNCwgNDYsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExNCwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDExNCwgCi0gICAgMjIwLCA4MSwgMjQsIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDExNCwgNTEsIDI0LCA0MiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgCi0gICAgMTE0LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIDQ2LCAyNDYsIDY3LCA5MiwgOTYsIDcxLCA1MSwgCi0gICAgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDcxLCAyMjAsIDgxLCAyNCwgCi0gICAgNDIsIDI0NiwgNjcsIDkyLCA5NiwgNzEsIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCA5NiwgNTEsIDcxLCAyNCwgMjMzLCAKLSAgICA3MCwgOTIsIDk2LCAxMTksIDIyMCwgODEsIDI0LCAxOTksIDI0NiwgNjcsIDkyLCA5NiwgMTE5LCA1MSwgMjQsIDE5OSwgCi0gICAgMjIwLCA4MCwgOTIsIDk2LCA1MSwgMTE5LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxMTQsIDIyMCwgODEsIDI0LCAxOTksIAotICAgIDI0NiwgNjcsIDkyLCA5NiwgMTE0LCA1MSwgMjQsIDE5OSwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgMTE0LCAyNCwgMjQxLCAzMSwgCi0gICAgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIDE5OSwgMjQ2LCA2NywgOTIsIDk2LCA3MSwgNTEsIDI0LCAxOTksIDIyMCwgODAsIAotICAgIDkyLCA5NiwgNTEsIDcxLCAyNCwgMjQxLCAzMSwgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTksIDI0LCAyMjMsIDE0OCwgCi0gICAgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExNCwgMjQsIAotICAgIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE0LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCAyNDcsIDIwNywgCi0gICAgMjE1LCAxMzEsIDQ2LCAyMTEsIDIxMSwgMjMyLCAxNjMsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCAyNDcsIDIwNywgMjE1LCAKLSAgICAxMzEsIDQyLCAyMTEsIDIxMSwgMjMyLCAxNjMsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIDI0OSwgNzAsIAotICAgIDkyLCA5NiwgMTc3LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjE1LCAxMzQsIDkyLCA5NiwgMTc3LCAyMjMsIDE0OCwgOTIsIAotICAgIDk2LCAxNzcsIDI0NiwgNjAsIDkyLCA5NiwgMTA3LCAyMzMsIDcwLCA5MiwgOTYsIDEwNywgMjE1LCAxMzQsIDkyLCA5NiwgCi0gICAgMTA3LCAyMjMsIDE0OCwgOTIsIDk2LCAxMDcsIDI0NiwgNjAsIDkyLCA5NiwgMTc3LCA0MiwgMjQsIDEwNywgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAxMDcsIDI0NiwgNjAsIDkyLCA5NiwgMTA3LCA0MiwgMjQsIDE3NywgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTA3LCAxMTQsIDI0LCAxNzcsIDI0NiwgNjAsIDIxNSwgMTMxLCAxNTEsIDI1MSwgMTM2LCAyMzIsIDE2MywgCi0gICAgMTIyLCAyNDUsIDE0NiwgMjUxLCAxMzYsIDIzMiwgMTYzLCAxMjIsIDIyNCwgMTY3LCAyNTEsIDEzNiwgMjMyLCAxNjMsIAotICAgIDEzMywgMjQ1LCAxNDQsIDI1MSwgMTM2LCAyMzIsIDE2MywgMTUxLCAyNTEsIDEzNiwgMjMyLCAxNjMsIDI0NCwgNTAsIDI0NSwgCi0gICAgMTQ0LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDEzMywgMjI0LCAxNjUsIDI1MSwgMTM2LCAyMzIsIDE2MywgMjIxLCA0MywgMjQ1LCAKLSAgICAxNDQsIDI1MSwgMTM2LCAyNDMsIDIwMCwgMjUxLCAxMzYsIDQyLCAyMjEsIDQzLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAKLSAgICAxMzMsIDIyNCwgMTY1LCAyNTEsIDEzNiwgNDIsIDI0NCwgNTAsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgNDIsIDE1MSwgMjUxLCAKLSAgICAxMzYsIDQyLCAxMzMsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgNDIsIDEyMiwgMjI0LCAxNjcsIDI1MSwgMTM2LCA0MiwgMTIyLCAKLSAgICAyNDUsIDE0NiwgMjUxLCAxMzYsIDQ2LCAxNTEsIDI1MSwgMTM2LCAxNzcsIDIyMSwgMTQsIDIzMSwgMTQ3LCAyMjEsIDE0LCAKLSAgICAyNDgsIDEwNywgMjIxLCAxNCwgMjE1LCAxMzEsIDEyMiwgMjQ1LCAxNDYsIDI1MSwgMTM2LCA0NiwgMTIyLCAyNDUsIDE0NiwgCi0gICAgMjUxLCAxMzYsIDIyNCwgMTcxLCAyMzIsIDE2MywgMjMzLCA3MCwgMjI0LCAxNzEsIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAKLSAgICAxNzEsIDIxNSwgMTMxLCAyMzMsIDcwLCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQyLCAyNCwgMjMyLCAxNjMsIDQyLCAyNCwgCi0gICAgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQyLCAyNCwgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIAotICAgIDE3MSwgMjE1LCAxMzEsIDQyLCAyNCwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAKLSAgICAyMTUsIDEzMSwgNDIsIDI0LCAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgMTcxLCAyMTUsIAotICAgIDEzMSwgMjIzLCAxNDgsIDIyNCwgMTcxLCAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgMjMzLCA3MCwgMjI0LCAxNzEsIAotICAgIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCA0MiwgMjQsIDIzMiwgMTYzLCAyMjMsIDE0OCwgODMsIDIxOSwgMTY2LCA2NywgCi0gICAgMjE5LCAxNjYsIDY3LCA0MSwgMiwgMjIzLCA4NSwgMjQ5LCA5OCwgNjcsIDQxLCAyNDksIDEyNiwgODMsIDMsIDIxOSwgMTY2LCAKLSAgICA0MSwgMiwgMTk5LCAyNDQsIDc0LCA0MSwgMiwgNzEsIDI0NCwgNzQsIDQxLCAyLCAyMjcsIDExLCAyNDksIDY2LCAyNDQsIAotICAgIDc0LCA0MSwgMiwgMjE1LCAxMzEsIDQyLCAyMTEsIDIxMSwgMjMyLCAxNjMsIDQ2LCAyNDQsIDc0LCA0MSwgMiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyMTEsIDIxMSwgMjMyLCAxNjMsIDQyLCAyNDQsIDc0LCA0MSwgMiwgMjQ3LCAyMDcsIDI0OSwgNjYsIDI0NCwgCi0gICAgNzQsIDgzLCAzLCAyMTksIDE2NiwgNjcsIDMsIDIxOSwgMTY2LCA4MywgMjI0LCA5LCA2NywgMjI0LCA5LCA4MywgNzEsIAotICAgIDIyNCwgOSwgNjcsIDcxLCAyMjQsIDksIDgzLCAyMjYsIDEzNCwgNjcsIDIyNiwgMTM0LCA4MywgMjE1LCAxMzMsIDIxNiwgCi0gICAgMTgzLCA2NywgMjE1LCAxMzMsIDIxNiwgMTgzLCA4MywgMjE1LCAxMzMsIDMsIDIxNiwgMTgzLCA2NywgMjE1LCAxMzMsIDMsIAotICAgIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIDIxNiwgMTgzLCA2NywgMjIzLCAxNDQsIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIAotICAgIDMsIDIxNiwgMTgzLCA2NywgMjIzLCAxNDQsIDMsIDIxNiwgMTgzLCA4MywgMjIzLCAxNDQsIDIyNSwgMTQyLCA2NywgMjIzLCAKLSAgICAxNDQsIDIyNSwgMTQyLCA4MywgMjQ2LCA1OSwgMjE2LCAxODMsIDY3LCAyNDYsIDU5LCAyMTYsIDE4MywgODMsIDI0NiwgNTksIAotICAgIDMsIDIxNiwgMTgzLCA2NywgMjQ2LCA1OSwgMywgMjE2LCAxODMsIDgzLCAyMzMsIDY2LCAyMTYsIDE4MywgNjcsIDIzMywgCi0gICAgNjYsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgMywgMjE2LCAxODMsIDY3LCAyMzMsIDY2LCAzLCAyMTYsIDE4MywgODMsIAotICAgIDIzMywgNjYsIDIyNSwgMTQyLCA2NywgMjMzLCA2NiwgMjI1LCAxNDIsIDgzLCAyNDcsIDIwMCwgNjcsIDI0NywgMjAwLCA2NywgCi0gICAgMjQ3LCAyMDEsIDI0OSwgMTI2LCA4MywgMywgMjQ3LCAyMDAsIDI0NCwgNTgsIDIzMiwgMTU5LCA2NywgMjQ5LCAyMjgsIAotICAgIDI0NiwgNzIsIDI0OSwgMjI4LCAyNDksIDIyOSwgMiwgNzEsIDI0NCwgNzQsIDI1MSwgNDAsIDgzLCAyNDksIDIyOCwgMjQ5LCAKLSAgICAyMjksIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAKLSAgICAyMzIsIDE2MywgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIDIxNSwgMTMxLCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgCi0gICAgMiwgMjE1LCAxMzEsIDQ2LCAyMjQsIDE3MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAyNTQsIDY0LCAyNTEsIDE3LCAyMTUsIAotICAgIDEzMSwgNDIsIDIyNCwgMTcxLCAyNTEsIDE0NCwgNDIsIDE1MSwgODMsIDI0OSwgMjI4LCA0NiwgMTUxLCA4MywgMjQ5LCAKLSAgICAyMjgsIDIzNSwgMTkyLCAyNTEsIDQyLCAyMzUsIDE5MiwgNjcsIDI0OSwgMjI4LCAyMTUsIDEzMSwgMTUxLCAyMzUsIDE5MiwgCi0gICAgNjcsIDI0OSwgMjI4LCAyMzIsIDE2MywgMTUxLCAyMzUsIDE5MiwgNjcsIDI0OSwgMjI4LCAyMTUsIDEzMSwgNDIsIDIyNCwgCi0gICAgMTcxLCAyNDksIDIyNiwgMjUzLCAxOTUsIDIxNSwgMTMxLCA0NiwgMjI0LCAxNzEsIDI0OSwgMjI2LCAyNTMsIDE5NSwgMjMyLCAKLSAgICAxNjMsIDQ2LCAyMjQsIDE3MSwgMjQ5LCAyMjYsIDI1MywgMTk1LCAyMzIsIDE2MywgNDIsIDIyNCwgMTcxLCAyNDksIDIyNiwgCi0gICAgMjUzLCAxOTUsIDIxNSwgMTMxLCAxNTEsIDI0OSwgMjI4LCAyMzIsIDE2MywgMTUxLCAyNDksIDIyOCwgODMsIDIzMiwgMTYzLCAKLSAgICA0NiwgMjE2LCAxODMsIDgzLCAyMzIsIDE2MywgNDIsIDIxNiwgMTgzLCA4MywgMjE1LCAxMzEsIDQyLCAyMTYsIDE4MywgODMsIAotICAgIDIxNSwgMTMxLCA0NiwgMjE2LCAxODMsIDY3LCAyNTEsIDQyLCA0MSwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCA0NiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgNDEsIDIsIDIxNSwgMTMxLCA0MiwgMjQ3LCAyMDcsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMzIsIAotICAgIDE2MywgNDYsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA2NywgNDEsIDIsIDcxLCAyNTEsIDE1NSwgMjMyLCAyNDIsIDY3LCAKLSAgICAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDI0NywgNzQsIDIxNSwgMTMzLCAyMTYsIDE4NCwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIAotICAgIDIxNSwgMTMzLCAyMTYsIDE4NCwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDIzMywgMTA4LCAyNDksIDIyOCwgNjcsIDQxLCAyLCAKLSAgICAyMTUsIDEzMSwgNDIsIDIyNCwgMTcwLCA2NywgNDEsIDIsIDIzMiwgMTYzLCA0MiwgMjI0LCAxNzAsIDY3LCA0MSwgMiwgCi0gICAgMjMyLCAxNjMsIDQ2LCAyMjQsIDE3MCwgNjcsIDQxLCAyLCAyMTUsIDEzMSwgNDYsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIAotICAgIDIsIDIxNSwgMTMxLCA0MiwgMjI0LCAxNzAsIDY3LCAyNDksIDIyOSwgMiwgMjMyLCAxNjMsIDQyLCAyMjQsIDE3MCwgNjcsIAotICAgIDI0OSwgMjI5LCAyLCAyMzIsIDE2MywgNDYsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIDIsIDIxNSwgMTMxLCA0NiwgMjI0LCAKLSAgICAxNzAsIDIxNSwgMTMxLCA0MiwgMjE2LCAxODMsIDIxNSwgMTMxLCA0NiwgMjE2LCAxODMsIDIzMiwgMTYzLCA0MiwgMjE2LCAKLSAgICAxODMsIDY3LCAyMzEsIDE0NywgMjE5LCAxNjYsIDgzLCAyMzEsIDE0NywgMjE5LCAxNjYsIDY3LCAyMzEsIDE0NywgMywgCi0gICAgMjE5LCAxNjYsIDgzLCAyMzEsIDE0NywgMywgMjE5LCAxNjYsIDIzMiwgMTYzLCA0NiwgMjE2LCAxODMsIDgzLCAyMTgsIAotICAgIDIzOSwgMiwgMjI0LCAyNSwgMjQ5LCAxODQsIDIxNSwgMTY0LCAyMTksIDI0NCwgMjQ5LCAxNjAsIDgzLCAyMTksIDk1LCA2NywgCi0gICAgMjE5LCA5NSwgMjMzLCAwLCAyMTcsIDg2LCAyMTgsIDIzOCwgMjUzLCAxNDksIDIyOCwgMTgyLCAyNDcsIDI0NSwgMjI4LCAKLSAgICAxODIsIDI0OSwgMTM1LCAyMjcsIDI5LCA4MywgMjE3LCAyMDksIDY3LCAyMTcsIDIwOSwgMjUyLCA3NSwgMjUxLCA4OSwgCi0gICAgMjUyLCA3NSwgOTIsIDIsIDI1MCwgNjUsIDI1MiwgNzUsIDkyLCAyLCAyMTMsIDE2NiwgMjIyLCAxNjksIDIxNSwgMTY1LCAyLCAKLSAgICAyMjQsIDUxLCAyNDYsIDM5LCAyNDAsIDIzMCwgMjUxLCAxOTksIDY3LCAyMjAsIDE4MiwgMjI1LCAyMzMsIDgzLCAyMjAsIAotICAgIDE4MiwgMjI1LCAyMzMsIDIyMSwgMTAsIDIyMywgMjAyLCAyMjMsIDg5LCAyNDQsIDI0LCAyNDEsIDIxMiwgMjUxLCA0MiwgCi0gICAgODMsIDQyLCAyMjUsIDE0MSwgMjM1LCAyMzksIDgzLCA0NiwgMjI1LCAxNDEsIDIzNSwgMjM5LCA2NywgNDIsIDIyNSwgMTQxLCAKLSAgICAyMzUsIDIzOSwgNjcsIDExNCwgMjI1LCAxNDEsIDIzNSwgMjM5LCA2NywgNDYsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIAotICAgIDExOSwgMjI1LCAxNDEsIDIzNSwgMjM5LCAyMjAsIDI5LCAyNCwgMjQ5LCA2OSwgMjUwLCAxNTIsIDUyLCAyMjQsIDYyLCA1MiwgCi0gICAgMjUxLCAxNjIsIDUyLCAyNTAsIDIxMSwgMjU0LCAxMywgMjI3LCAxMiwgMjQ5LCA3MCwgMjUwLCA0OCwgMjIzLCAxOTAsIAotICAgIDI0OSwgNzEsIDY1LCAyMzIsIDE3MywgMjQ5LCA3MSwgNjUsIDIzNSwgMTE3LCAyMTksIDk2LCAyNCwgMjQ5LCA3NiwgMjQ0LCAKLSAgICAxMzYsIDg3LCAyNTQsIDE1MywgMjIxLCAxMiwgMjQyLCA1LCAyNCwgMjIwLCAxMTUsIDIyNiwgOTUsIDg3LCAyMTIsIDI0NSwgCi0gICAgMjEzLCA1OCwgMjE2LCAxNzMsIDMxLCAyNDEsIDIwNywgMjE2LCAxNzMsIDMxLCAyMzMsIDEzMSwgMjE2LCAxNzMsIDMxLCAKLSAgICAyNDQsIDY1LCAyMTYsIDE3MywgMzEsIDIxNywgODcsIDIxNiwgMTczLCAzMSwgMjEzLCAyMjQsIDIxNiwgMTczLCAzMSwgCi0gICAgMjE0LCAyNCwgMjE2LCAxNzMsIDMxLCAyMzAsIDE4NSwgMjE2LCAxNzMsIDMxLCAyNDUsIDE3OSwgMjEzLCAyNDIsIDY1LCAKLSAgICAyNDcsIDIyNiwgNjcsIDI0MywgMjA5LCAyNDQsIDE1OCwgNjcsIDIyMCwgMiwgMjQ0LCAxNTgsIDgzLCAyMjAsIDIsIDI0NCwgCi0gICAgMTU4LCA2NywgMjE4LCAyMzksIDIsIDIyNCwgMjUsIDI0NCwgNjEsIDIyNCwgMTY3LCAyMzAsIDE5OCwgMjMzLCAxMDMsIAotICAgIDIyNCwgMTY3LCAyMzAsIDE5OCwgMjMxLCAxMTgsIDI0NCwgMTA3LCA1MiwgMjQ1LCAxNzksIDIzMSwgMjUzLCA1MiwgMjM1LCAKLSAgICA0MSwgMjIyLCAxMzcsIDIxNSwgMTE2LCAyMjksIDE3NSwgMjI1LCAxNTQsIDI1MywgMTgzLCAyMTcsIDI0NywgMjQzLCAyOCwgCi0gICAgMjUwLCAxOTEsIDIzMywgNDMsIDIxNCwgMTMxLCAyMzMsIDEwLCAyMjIsIDExMCwgMjIyLCAxODgsIDI1MCwgMTgwLCAyNTMsIAotICAgIDIxMiwgMjI1LCAxODQsIDY3LCAyNTAsIDU0LCAyMzQsIDg3LCA2NywgMjUwLCA1NCwgMjI0LCAxNTksIDY3LCAyNTAsIDU0LCAKLSAgICAyMjMsIDk3LCA2NywgMjUwLCA1NCwgMjUxLCAxNTQsIDY3LCAyNTAsIDU0LCAyMzQsIDM5LCA2NywgMjUwLCA1NCwgMjI2LCAKLSAgICAxMDUsIDgzLCAyNTAsIDU0LCAyMzQsIDg3LCA4MywgMjUwLCA1NCwgMjI0LCAxNTksIDgzLCAyNTAsIDU0LCAyMjMsIDk3LCAKLSAgICA4MywgMjUwLCA1NCwgMjUxLCAxNTQsIDgzLCAyNTAsIDU0LCAyMzQsIDM5LCA4MywgMjUwLCA1NCwgMjI2LCAxMDUsIDgzLCAKLSAgICAyMTksIDIwNCwgMjE4LCAyNTEsIDY3LCAyNDEsIDIxMiwgMjE4LCAyNTEsIDY3LCAyNDcsIDIwMSwgMjE4LCAyNTEsIDgzLCAKLSAgICAyNDksIDE4MiwgMjE4LCAyNTEsIDY3LCAyMTksIDIwNCwgMjE4LCAyNTEsIDgzLCAyNDEsIDIxMiwgMjE4LCAyNTEsIDgzLCAKLSAgICAyNDcsIDIwMSwgMjE4LCAyNTEsIDY3LCAyNDksIDE4MiwgMjE4LCAyNTEsIDI0MCwgMjMwLCAyMTksIDE3MCwgMjI0LCAxNjcsIAotICAgIDIyOCwgMTU4LCAyNDUsIDE0NiwgMjI4LCAxNTgsIDI1MSwgMjQ5LCAyNDUsIDE0NiwgMjI4LCAxNTMsIDI1MSwgMjQ5LCAKLSAgICAyMjAsIDQ2LCAyMjgsIDE1MywgMjMwLCAxMjcsIDI0NCwgMzUsIDUyLCAyMzAsIDEyNywgMjMwLCA5LCA1MiwgMjMwLCAxMjcsIAotICAgIDIyMCwgMjU1LCA1MiwgMjEzLCAyNTAsIDE3NSwgMjQ5LCA3MCwgMjQ1LCAxNzYsIDE3NSwgMjQ5LCA3MCwgMjE1LCAxNDIsIAotICAgIDIyNCwgNSwgODcsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDE0LCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTMsIAotICAgIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMiwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDExLCAKLSAgICAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTAsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCA5LCAyMjUsIAotICAgIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgOCwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyNDMsIDI2LCAyMzEsIDIwMSwgCi0gICAgODMsIDIxNSwgMTQyLCAyMjQsIDUsIDg3LCAyMjQsIDYsIDIyNiwgMTQ4LCA4NywgMjI2LCAxMjQsIDIyNiwgMTQ4LCA4NywgCi0gICAgMjI2LCA0OSwgMjI2LCAxNDgsIDUyLCAyMTMsIDI0MCwgODcsIDI0NywgMTkzLCAyNDQsIDE1NywgMjQ3LCAxOTMsIDI0NCwgCi0gICAgMTU2LCAyNDcsIDE5MywgMjQ0LCAxNTUsIDI0NywgMTkzLCAyNDQsIDE1NCwgMjQ3LCAxOTMsIDI0NCwgMTUzLCAyNDcsIAotICAgIDE5MywgMjQ0LCAxNTIsIDY3LCAyNDksIDIyOSwgMiwgNjIsIDIyMywgMTQ4LCA2NywgMjQ5LCAyMjksIDIsIDExNywgMjQ3LCAKLSAgICA3MiwgODMsIDI0OSwgMjI5LCAyLCA2NywgNjIsIDIyMywgMTQ4LCA4MywgMjQ5LCAyMjksIDIsIDExNywgNjcsIDI0NywgNzIsIAotICAgIDIzMCwgMjEyLCAzMSwgMjEzLCA1OCwgMjMwLCAyMTIsIDMxLCAyMTIsIDI0NCwgMjQ3LCAxNzYsIDMxLCAyNDIsIDEwOCwgCi0gICAgMjEzLCA1OCwgMjQ3LCAxNzYsIDMxLCAyMzMsIDM3LCAyMTIsIDI0NCwgMjQ3LCAxNzYsIDMxLCAyMzMsIDM3LCAyMTMsIDU4LCAKLSAgICAyNDcsIDE3NiwgMzEsIDI0MiwgMTA4LCAyMTIsIDI0NCwgNjcsIDI0NCwgNDIsIDgzLCAyNDQsIDQyLCAyNDIsIDUsIDI0LCAKLSAgICAyMjUsIDIzNiwgMjU0LCAyOSwgMjQ5LCA2OCwgMjE4LCAxODAsIDIxOSwgMTAzLCA2NSwgMjU0LCAxMzEsIDIyMiwgMTI0LCAKLSAgICAyNTQsIDc3LCAyNDQsIDIwLCAyNDMsIDM2LCAyMTksIDEwMywgNjUsIDI0MSwgMTg3LCAyNTMsIDExNSwgODcsIDI0NCwgMzEsIAotICAgIDIyNiwgMjUwLCA2NywgMjE5LCA5NSwgMTMzLCAyMzIsIDIzNywgMjQ5LCAxMTQsIDIyMywgMTQ4LCAxMzMsIDIzMiwgMjM3LCAKLSAgICAyNDksIDExNCwgMjMzLCA3MCwgMjE0LCAzNCwgNTIsIDEyNCwgMjE0LCAxMTEsIDUyLCAyNDYsIDY0LCAyNDQsIDEwNywgNTIsIAotICAgIDI0NiwgNjQsIDIzMSwgMjUzLCA1MiwgMjM1LCAyMDAsIDI0NCwgMTA3LCAyNCwgMjMxLCAyNTMsIDUyLCAyMzEsIDI1MywgCi0gICAgMjQsIDI0NCwgMTA3LCA1MiwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDUyLCAyMzEsIDI1MywgMiwgMjE5LCA0NSwgMjQsIAotICAgIDIzMSwgMjUzLCAyNCwgMjQ0LCAxMDcsIDUyLCA3MSwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDUyLCAxOTksIDIzMSwgMjUzLCAKLSAgICAyLCAyMTksIDQ1LCA1MiwgMjMxLCAxNDcsIDY3LCAyNDksIDIyOCwgMjMxLCAxNDcsIDgzLCAyNDksIDIyOCwgMjMxLCAxNDcsIAotICAgIDMsIDY3LCAyNDksIDIyOCwgMjMxLCAyMTYsIDg3LCAyNDcsIDExOSwgODcsIDIxNSwgMTQwLCAyMjYsIDEyMywgODcsIDI0OSwgCi0gICAgMTY5LCAyNDMsIDE5NiwgMjE1LCAxMTIsIDIyOSwgMTcwLCAyNTAsIDk1LCAyMjYsIDE4OCwgMjM1LCA0NywgMjE0LCAxNjIsIAotICAgIDI1MCwgMzAsIDgzLCAyMzAsIDE5OSwgMjMyLCAyNTMsIDIyMSwgMzMsIDIyMSwgNjcsIDIyNCwgMTUwLCAyMjEsIDUxLCAKLSAgICAyMTksIDIzOSwgMjUyLCA3OCwgMjUyLCA0NiwgOTEsIDIzNCwgMTQ0LCA2NywgMjQ2LCA0OCwgMjMxLCAyNDgsIDY3LCAyNDYsIAotICAgIDQ4LCAyMzQsIDg3LCA4MywgMjQ2LCA0OCwgMjMxLCAyNDgsIDgzLCAyNDYsIDQ4LCAyMzQsIDg3LCAyMTksIDI0NSwgMjEzLCAKLSAgICAyMTYsIDIxOSwgMjQ4LCAyMTgsIDIzOSwgMjUxLCAyMjcsIDI0OSwgMTg0LCAyMjQsIDUwLCA4MywgMjE5LCAyNDQsIDIxNywgCi0gICAgODgsIDI0OSwgMTg1LCAyNCwgMjI0LCA1MCwgMjE2LCA1OCwgNjcsIDIyMCwgMTgyLCAyMjUsIDIzMywgMjE2LCA1OCwgODMsIAotICAgIDIyMCwgMTgyLCAyMjUsIDIzMywgNjcsIDI0NywgMjAxLCAyMzUsIDI1MiwgMjE5LCAxNjYsIDI0OSwgNjUsIDIzMywgMTE1LCAKLSAgICAyNDcsIDE0NSwgMjUwLCAxNzYsIDIyNywgMzIsIDIyNSwgMjM2LCAyNTAsIDE3NywgMjIwLCAxNiwgMjQxLCAxOTYsIDIsIAotICAgIDY3LCAyNDksIDcwLCAzNiwgMjQ5LCA2NSwgMjMzLCAxMTUsIDI1MCwgODgsIDIyOCwgMTg2LCAyNDUsIDgzLCAyNTQsIDUwLCAKLSAgICAyMjcsIDU3LCA0MiwgMjE0LCAxMCwgMjE2LCAyMDgsIDgzLCAyMTYsIDIxLCA0MiwgMjE0LCAxMCwgMjE2LCAyMDgsIDY3LCAKLSAgICAyMTYsIDIxLCA0MiwgMjE0LCAxMCwgMjE2LCAyMDgsIDgzLCA0MiwgMjMzLCAxMTYsIDIzMSwgMTE3LCA2NywgNDIsIDIzMywgCi0gICAgMTE2LCAyMzEsIDExNywgMjQ2LCA0NCwgMjIwLCAxMCwgNTIsIDEwNywgNjcsIDI0NiwgNTksIDIxNiwgMTgzLCA0MiwgMjQ5LCAKLSAgICAxOTMsIDI0NSwgODMsIDkxLCAyMjIsIDE2OSwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyMzUsIDI1MiwgNjcsIDI0OSwgMjI5LCAKLSAgICAyMzUsIDI1MiwgODMsIDIxOSwgMTY2LCA4MywgMjE2LCAxNTAsIDIyMywgMjEyLCA0MiwgMjQ1LCA4MiwgMjIzLCAyMTIsIAotICAgIDQyLCAyNDUsIDgxLCAyNTMsIDEyNywgMTYsIDMxLCAyMTUsIDExNiwgMTA3LCAyNDksIDIyOSwgMiwgMjE5LCA0NSwgMjQsIAotICAgIDExNywgMTc2LCA0OSwgMjI2LCA2NCwgMjIzLCAxNDUsIDIzNSwgMjAyLCAyMjYsIDY0LCAyMzMsIDY3LCAyMzUsIDIwMiwgCi0gICAgMjI2LCA2NCwgMjM1LCAxOTEsIDIyNiwgNjQsIDgzLCAyNDksIDcxLCAyMjcsIDYzLCAyMjAsIDIwOSwgMjIwLCAxOTcsIAotICAgIDIyMCwgMTU0LCAyNDksIDI1NCwgMjUwLCAxNTgsIDI0MSwgMTQzLCAyMjAsIDU0LCAyNDMsIDM3LCAyMTMsIDIxNiwgMjQwLCAKLSAgICAyMTAsIDI0MywgMzcsIDIsIDI0MSwgMjUxLCAyMzEsIDIzNiwgMTYsIDMxLCAyMzMsIDEsIDIzMCwgMTg1LCAyMTUsIDE2NSwgCi0gICAgMjI3LCA2MywgMjQyLCAxMDAsIDI0MywgMjM4LCAyNDQsIDQzLCAyMzUsIDI1MiwgMjQxLCA0NSwgMjQ0LCA5OCwgMjIyLCAKLSAgICAxODUsIDQxLCAyNDMsIDIzNywgMjQ5LCA5OCwgMjIwLCAzMiwgMjQwLCAxMDUsIDIyMCwgMzUsIDIyNiwgNDQsIDIsIDI1MiwgCi0gICAgNzgsIDIxNywgMTk1LCAyMzUsIDEzMSwgMjUyLCA2NSwgODcsIDI0MSwgMjE1LCAyNDIsIDExMCwgODcsIDI0MywgMjAzLCAKLSAgICAyMjUsIDI4LCAyNDksIDQ0LCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDY3LCAyNDQsIDQzLCAyLCAxOTksIDIzMSwgMzcsIAotICAgIDgzLCAyMTksIDQ2LCAyMTUsIDEzMSwgMjUxLCAxNDAsIDIyMiwgMTEyLCA4MywgMjIyLCAxMTIsIDIzMiwgMTYzLCAyNTEsIAotICAgIDE0MCwgMjIyLCAxMTIsIDY3LCAyMjIsIDExMiwgNjcsIDEwNywgMjUwLCA2NiwgNzcsIDIxNywgMjEwLCAyMzIsIDIwNiwgCi0gICAgNTIsIDIxOCwgNCwgMjQ2LCA0MywgMjU0LCA5OSwgMjQ1LCA3OCwgMjI0LCA0OCwgMjQ0LCA1NCwgMjI0LCA0OCwgMjQxLCAKLSAgICAyNTQsIDIxNCwgMTUyLCAyNDEsIDI1NCwgMjEzLCAxODYsIDI0MSwgMjU0LCAyMzIsIDE2MywgNDYsIDIyNiwgNzMsIDIyNiwgCi0gICAgNzMsIDIxNSwgMTMxLCA0NiwgMjI2LCA3MywgNjcsIDIyOSwgNjEsIDgzLCAyMjksIDYxLCAyNTAsIDY2LCA3NywgMTA3LCAKLSAgICAyNTAsIDY2LCA3NywgMjMwLCAxNTQsIDIxMywgMTY2LCAxMDcsIDIzMCwgMTU0LCAyMTMsIDE2NiwgMjUyLCA3NSwgMjEzLCAKLSAgICAxNjYsIDEwNywgMjUyLCA3NSwgMjEzLCAxNjYsIDIyNiwgMjUwLCAyNSwgMjQ5LCA3MCwgMTA3LCAyNSwgMjQ5LCA3MCwgCi0gICAgMjI3LCA0MCwgMjUwLCAxMDksIDI0OSwgNzAsIDEwNywgMjI3LCA0MCwgMjUwLCAxMDksIDI0OSwgNzAsIDcsIDI0OSwgNzAsIAotICAgIDIyMSwgMTMsIDY3LCA3LCAyNDksIDcwLCAyMjYsIDI1MCwgNywgMjQ5LCA3MCwgMjMxLCAyNTAsIDI0OSwgNzAsIDIxOSwgCi0gICAgOTYsIDY1LCAyNDgsIDk1LCAyNDMsIDIzNywgMjE3LCAyMjMsIDI1MywgMTMyLCAyNDMsIDIzNywgMjUyLCA3NiwgMjUzLCAKLSAgICAxMzIsIDEwNywgMjQzLCAyMzcsIDI1MiwgNzYsIDI1MywgMTMyLCAyNDMsIDIzNywgMjQ5LCAxODAsIDI1MywgMTMyLCA4MywgCi0gICAgMjQzLCAyMzcsIDIyNSwgMTQzLCAyMTksIDk1LCA2NywgMjQzLCAyMzcsIDIyNSwgMTQzLCAyMTksIDk1LCAyMTksIDE5OSwgCi0gICAgMjE5LCA1MSwgMjI2LCAyNTAsIDY3LCAyMTksIDk1LCAzNiwgNjcsIDIxOSwgOTUsIDIyNywgNDAsIDI1MCwgMTA5LCA4MywgCi0gICAgMjE5LCA5NSwgODMsIDI1MCwgMTA5LCA2NywgMjE5LCA5NSwgMjI2LCAyNTAsIDgzLCAyMTksIDk1LCAxMDcsIDIyNiwgMjUwLCAKLSAgICA4MywgMjE5LCA5NSwgMjI1LCAxOTIsIDIxOSwgOTUsIDIyMSwgMTMsIDY3LCAyMTksIDk1LCAxMDcsIDI1MywgMTMyLCAyMjcsIAotICAgIDQwLCAyNTAsIDEwOSwgMjUzLCAxMzIsIDI0NSwgMTUwLCAyMTksIDE3NiwgMjUzLCAxMzIsIDI0NSwgMTUwLCAyMjUsIDE0MywgCi0gICAgODMsIDIxOSwgOTUsIDI0NSwgMTUwLCAyMjUsIDE0MywgMjI1LCAxOTIsIDIxOSwgOTUsIDIyMCwgNTMsIDIyNSwgMTQzLCAKLSAgICA4MywgMjE5LCA5NSwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAyMjQsIDcsIDgzLCAyMTksIDk1LCAxMDcsIDI0NSwgMTUwLCAyMjUsIAotICAgIDE0MywgMjI0LCA3LCA4MywgMjE5LCA5NSwgMjE2LCA0MiwgMjI1LCAxNDMsIDgzLCAyMTksIDk1LCAyMjAsIDQ4LCAyMjUsIAotICAgIDE0MywgMjUzLCAxMzIsIDIxNywgMjIzLCAyNTMsIDEzMiwgMjI3LCA0MCwgMjUwLCAxMDksIDIxNywgMjIzLCAyNTMsIDEzMiwgCi0gICAgMTA3LCAyMTcsIDIyMywgMjUzLCAxMzIsIDIyMCwgNTMsIDIyNiwgMzMsIDgzLCAyNCwgNjcsIDI0NCwgMjMsIDgzLCAyNDQsIAotICAgIDIzLCA2NywgMjQ0LCAyMywgMjQ1LCAxNTAsIDIyNiwgMzMsIDIyNiwgMjUwLCA4MywgMjQ0LCAyMywgMzYsIDIyNywgNDAsIAotICAgIDI1MCwgMTA5LCAyNDUsIDE1MCwgMjI1LCAxNDMsIDIxOSwgOTUsIDEwNywgMjE3LCAyMjMsIDIyNSwgMTkyLCAyNTMsIDEzMiwgCi0gICAgMjE5LCAyNDYsIDIxNywgNTksIDIxNiwgMTc2LCAyMTksIDI0NiwgMTA3LCAyNTAsIDUxLCAyMTksIDI0NiwgMjE5LCAyMDEsIAotICAgIDEwNywgMjE5LCAyMDEsIDI1MiwgNzYsIDI1MywgMTMyLCAyNDUsIDE1MCwgMjE3LCAyMjMsIDIyNSwgNTUsIDI1MywgMTMyLCAKLSAgICAxMDcsIDI0NSwgMTUwLCAyMTcsIDIyMywgMjI1LCA1NSwgMjUzLCAxMzIsIDI0OSwgNzEsIDc3LCAyMjEsIDEzLCA2NywgCi0gICAgMjQ5LCAyMjgsIDE0NiwgOTEsIDI0OSwgNzEsIDc3LCAyMzIsIDE2MywgNDYsIDI0NiwgNDEsIDY3LCAyMTksIDE2NiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyNDYsIDQxLCA2NywgMjE5LCAxNjYsIDIzMiwgMTYzLCA0NiwgMjIxLCAxMywgNjcsIDIxOSwgMTY2LCAyMTUsIAotICAgIDEzMSwgNDYsIDIyMSwgMTMsIDY3LCAyMTksIDE2NiwgODMsIDIyNCwgMTU4LCAxNTIsIDIyNywgMTQsIDY3LCAyMjQsIDE1OCwgCi0gICAgMTUyLCAyMjcsIDE0LCA2NywgMjQ0LCAyNTQsIDE1MiwgMjI3LCAxNCwgODMsIDI0NywgMjAxLCAyMzAsIDI1MSwgNjcsIAotICAgIDIxMywgMTY2LCAxMDcsIDI0NCwgMjU0LCAxNTIsIDg3LCAxNzcsIDcxLCAxMzQsIDIzMSwgMTQ3LCA3MSwgMTM0LCAxMDcsIAotICAgIDcxLCAxMzQsIDEwNywgMjIwLCA4MSwgMjE2LCA1OCwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgCi0gICAgMjIwLCA4MSwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgNTEsIDIxNiwgNTgsIDI0OSwgMTU4LCAKLSAgICAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDUxLCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAKLSAgICAxMTUsIDIyMCwgODEsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDExNSwgNTEsIDI0OSwgMTU4LCAKLSAgICAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAyNDksIDMzLCAyMTksIDgwLCAyMjYsIDE0MywgNSwgMjI3LCAxNCwgMTA3LCAyNDQsIAotICAgIDI1NCwgMTUyLCAyMjcsIDE0LCAxMDcsIDI0MSwgMjEyLCAyNDQsIDI1NCwgMTUyLCAyMjcsIDE0LCAxMDcsIDgzLCAyNDEsIAotICAgIDIxMSwgMjIzLCA4OSwgMTA3LCA4MywgMjQxLCAyMTIsIDI1MSwgNDIsIDI0NCwgMjQsIDI0MSwgMjExLCAyMjMsIDg5LCAKLSAgICAyNDQsIDI0LCAyNDEsIDIxMiwgMjUxLCA0MiwgMjMxLCAxNDcsIDQyLCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAxNDcsIAotICAgIDQ2LCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAxNDcsIDI0NCwgMzIsIDQyLCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAKLSAgICAxNDcsIDI0NCwgMzIsIDQ2LCAyMjYsIDEzMiwgMjI3LCAxNCwgMjMxLCAxNDcsIDIzMywgNjYsIDI1NCwgMTksIDI1MSwgODUsIAotICAgIDIyNywgMTQsIDIzMSwgMTQ3LCAyMjMsIDE0NCwgMjU0LCAxOSwgMjUxLCA4NSwgMjI3LCAxNCwgMTA3LCAyMzMsIDY2LCAKLSAgICAyNTQsIDE5LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDIyMywgMTQ0LCAyNTQsIDE5LCAyMjQsIDE0MywgMTUyLCAKLSAgICAyMjcsIDE0LCAxMDcsIDIzMywgNjYsIDI1NCwgMTksIDI1MSwgODUsIDIyNywgMTQsIDEwNywgMjIzLCAxNDQsIDI1NCwgMTksIAotICAgIDI1MSwgODUsIDIyNywgMTQsIDE3NywgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NSwgMjI3LCAxNCwgMTc3LCA0NiwgCi0gICAgMjE2LCAyMTksIDIyMCwgMjMzLCAyNTEsIDg1LCAyMjcsIDE0LCAyMzEsIDE0NywgNDIsIDI0OSwgNDAsIDI1MSwgODUsIAotICAgIDIyNywgMTQsIDIzMSwgMTQ3LCA0NiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjI3LCAxNCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAKLSAgICAxMTYsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTA5LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE2NiwgMjQ3LCAxNTYsIAotICAgIDE0NiwgMzYsIDIxLCAxNjMsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTgwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE4OSwgCi0gICAgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxOTgsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTk1LCAyNDcsIDE1NiwgMTQ2LCAKLSAgICAzNiwgMjEsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDUwLCAyMTcsIDIwMCwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDExNiwgCi0gICAgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDEwOSwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE2NiwgMjQ3LCAxNTYsIDM2LCAzNSwgCi0gICAgMjEsIDE2MywgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE4MCwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE4OSwgMjQ3LCAxNTYsIAotICAgIDM2LCAzNSwgMjEsIDE5OCwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDE5NSwgMjQ3LCAxNTYsIDM2LCAzNSwgMjEsIDIwMCwgCi0gICAgMjQ3LCAxNTYsIDM2LCAzNSwgNTAsIDIxNywgMjAwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxMTYsIDI0NywgMTU2LCAKLSAgICAxNDYsIDM2LCAzNSwgMjEsIDEwOSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTY2LCAyNDcsIDE1NiwgMTQ2LCAzNiwgCi0gICAgMzUsIDIxLCAxNjMsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE4MCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgCi0gICAgMTg5LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxOTgsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE5NSwgMjQ3LCAKLSAgICAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMjAwLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDUwLCAyMTcsIDIwMCwgMTA3LCAyMTMsIAotICAgIDIzMSwgOTUsIDY4LCAxMDcsIDk0LCA1MiwgMTA3LCAyMzAsIDI1MSwgNTIsIDEwNywgMjQ3LCAxMjEsIDUyLCAxMDcsIDIxOSwgCi0gICAgMjE1LCAyNDUsIDE3NiwgNjgsIDEwNywgOTUsIDY4LCAxMDcsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjgsIDI0NiwgNTIsIAotICAgIDIyNSwgMTQ1LCA5NSwgNjgsIDEwNywgMjIzLCA4NiwgOTUsIDY4LCAyMTYsIDE4MiwgOTUsIDY4LCAxMDcsIDIxNiwgMTgyLCAKLSAgICA5NSwgNjgsIDI0OCwgMTAwLCAyMTYsIDE4MiwgOTUsIDY4LCAxMDcsIDI0OCwgMTAwLCAyMTYsIDE4MiwgOTUsIDY4LCA4MywgCi0gICAgOTUsIDY4LCAyMTcsIDk3LCAyMTYsIDIyNSwgOTUsIDI1MywgMTY0LCAyMTcsIDk3LCAyNTEsIDk5LCA5NSwgMjUzLCAxNjQsIAotICAgIDgzLCA5NSwgMjUzLCAxNjQsIDEwNywgODMsIDI0OSwgMzMsIDI0NiwgNTgsIDI0LCA5NSwgNjgsIDEwNywgODMsIDI0OSwgCi0gICAgMzMsIDIxNSwgMTI0LCAyNCwgOTUsIDY4LCAyMTksIDE2MywgODMsIDk1LCA2OCwgMTA3LCAyNDksIDE0NSwgODMsIDk1LCAKLSAgICA2OCwgMjIzLCAxNDMsIDY3LCA5NSwgNjgsIDIzMywgNjUsIDY3LCA5NSwgNjgsIDI1MiwgMTAwLCAyMjEsIDEzLCA2NywgOTUsIAotICAgIDY4LCAyNDMsIDIxMSwgMjIxLCAxMywgNjcsIDk1LCA2OCwgMTA3LCAyMzIsIDE2MywgMjIzLCAxNDIsIDY3LCA5NSwgNjgsIAotICAgIDEwNywgMjE1LCAxMzEsIDIyMywgMTQyLCA2NywgOTUsIDY4LCAyMjgsIDE2MCwgMjMyLCAxNjMsIDIyMywgMTQyLCA2NywgCi0gICAgOTUsIDY4LCAyNDksIDQwLCAyMzIsIDE3NywgMjI4LCAxNjAsIDIxNSwgMTMxLCAyMjMsIDE0MiwgNjcsIDk1LCA2OCwgMzYsIAotICAgIDEwNywgNjcsIDk1LCA2OCwgMjEzLCAyMzcsIDk1LCA2OCwgMjUxLCAxNDMsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDI1MSwgCi0gICAgMTQzLCA5NSwgNjgsIDI1MSwgMTQzLCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAxMDcsIDI1MSwgMTQzLCAyMTksIDIxNSwgCi0gICAgMjQ1LCAxNzYsIDY4LCAxMDcsIDI1MSwgMTQzLCA5NSwgNjgsIDEwNywgMjUxLCAxNDMsIDIyOCwgMTY3LCAyNDUsIDE3NiwgCi0gICAgNjgsIDIxNywgMjI1LCA5NSwgNjgsIDEwNywgMjE3LCAyMjQsIDk1LCA2OCwgMjE0LCAyLCA5NSwgNjgsIDEwNywgMjE0LCAyLCAKLSAgICA5NSwgNjgsIDIyNywgMzcsIDk1LCA2OCwgNTEsIDI0OSwgNDAsIDIzMiwgMTc3LCAxMzMsIDI0NywgMTY2LCAyNTQsIDE4LCAKLSAgICA2NywgMjE2LCAxODQsIDI0OSwgMTI2LCAzLCA2NywgMjE2LCAxODMsIDIyNiwgNDcsIDIyNywgNDAsIDIxOSwgOCwgMjI3LCAKLSAgICA0MCwgMjE4LCAyMjEsIDQyLCAyMjMsIDMsIDI1MiwgOTEsIDI0OCwgMTEsIDQ2LCAyMjMsIDMsIDI1MiwgOTEsIDI0OCwgMTEsIAotICAgIDE2NywgMiwgNjIsIDIzNSwgMjEyLCAyMjMsIDIwMywgMjE5LCAyMzIsIDIyNSwgODEsIDIxOSwgOCwgMjE4LCAyMjIsIDIyNSwgCi0gICAgODEsIDIxOSwgMjMxLCA3MSwgMjUyLCA2MCwgMiwgMTk5LCA5MCwgMTg0LCAyNDcsIDEyMCwgOTEsIDIzMiwgMTk5LCAyNTQsIAotICAgIDI3LCA5MSwgMjMyLCAxOTksIDIyNywgMjQsIDY3LCAyNDcsIDIwMSwgMiwgMjUwLCAxMDcsIDI0NywgNzQsIDI0LCAyLCAKLSAgICAyNDcsIDc0LCAyNDUsIDEyNywgNjUsIDIyNywgMzUsIDIxNSwgMTIzLCAyMzIsIDE2MywgNDYsIDI0OSwgMTAwLCAyLCAyNDcsIAotICAgIDc0LCAyMTUsIDEzMSwgNDIsIDI0OSwgMTAwLCAyLCAyNDcsIDc0LCA0MiwgMjI2LCAyNTIsIDIzNSwgNjksIDQ2LCAyMjYsIAotICAgIDI1MiwgMjM1LCA2OSwgMjQzLCAyMDAsIDIyNiwgMjUyLCAyMzUsIDY5LCAyMzMsIDEwOCwgMTE0LCAyMTgsIDM2LCAyMzMsIAotICAgIDEwOCwgMTE5LCAyMTgsIDM2LCA0MiwgMjQsIDQ2LCA1MSwgMjE2LCA1NywgNDIsIDI0LCA0NiwgMjE4LCAzNiwgNDIsIDIzMCwgCi0gICAgMTU3LCAxODQsIDQ2LCAyMTgsIDM2LCAxODQsIDQyLCAyMTgsIDM2LCAxMTQsIDIxOCwgMzcsIDIsIDI0OSwgMjI5LCA0OSwgCi0gICAgMjMyLCAxNjAsIDI0NywgMTI1LCAyNTEsIDcsIDE5OSwgMjIzLCA0NCwgNjcsIDI0OSwgMTQ0LCAyNDcsIDIwMCwgNjcsIAotICAgIDI0OSwgMTQ0LCAyNDcsIDIwMSwgMiwgMTMyLCAyMTcsIDY4LCA2NywgMjQ5LCAxNDQsIDI0NywgMjAxLCAyLCA5NSwgMjE3LCAKLSAgICA2OCwgNjcsIDQxLCAyLCAxMzIsIDIxNywgNjgsIDY3LCA0MSwgMiwgOTUsIDIxNywgNjgsIDE0LCA0MiwgNjcsIDQxLCAxMjUsIAotICAgIDE0LCA0NiwgNjcsIDQxLCAxMjUsIDE0LCA0MiwgMjU0LCAxOSwgMTI1LCAxNCwgNDYsIDI1NCwgMTksIDEyNSwgMTQsIDQyLCAKLSAgICA1MSwgMjU0LCAxOSwgMTI1LCAxNCwgNDYsIDUxLCAyNTQsIDE5LCAxMjUsIDE0LCA0MiwgNjcsIDIxNiwgMjE5LCAyMjAsIAotICAgIDIzMywgMTI1LCAxNCwgNDYsIDY3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMTQsIDQyLCAyNDQsIDMyLCAyMjYsIDEzMSwgCi0gICAgMTQsIDQ2LCAyNDQsIDMyLCAyMjYsIDEzMSwgMjE1LCAxMjQsIDIyNCwgMTY5LCA2OCwgMjQ2LCA1OCwgMjI0LCAxNjksIDY4LCAKLSAgICAyNTMsIDI1NSwgMjQzLCA3NCwgMjQ5LCAyMjksIDY4LCAyNDksIDE5NSwgMjQzLCA3NCwgMjQ5LCAyMjksIDY4LCA0NiwgNzYsIAotICAgIDIsIDM2LCAyMjUsIDE1NiwgMTg0LCAxMzIsIDY4LCAxODQsIDk1LCA2OCwgMTg0LCA0MiwgNDYsIDY4LCAxODQsIDEzMiwgCi0gICAgNTEsIDY4LCAxODQsIDk1LCA1MSwgNjgsIDE4NCwgNDIsIDQ2LCA1MSwgNjgsIDE4NCwgMTMyLCA3NiwgMjQzLCAyMTMsIAotICAgIDEzNCwgMTg0LCA5NSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgMTMyLCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgCi0gICAgOTUsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgMTg0LCA5NSwgMjE5LCAxNjIsIDY4LCA0NCwgNDUsIDI1MSwgMTM4LCA0NCwgCi0gICAgNDUsIDI0NywgNzEsIDQ0LCA0NSwgMjQ2LCAxOTksIDQ0LCA0NSwgMjQ3LCA3MCwgNDQsIDQ1LCAyNDYsIDEzNSwgNDQsIDQ1LCAKLSAgICAyNDcsIDYsIDQ0LCA0NSwgMjQ2LCAxOTgsIDQ0LCA0NSwgMjQ3LCA2OSwgNDQsIDQ1LCAyNDYsIDEwMywgNDQsIDQ1LCAyNDYsIAotICAgIDIzMCwgNDQsIDQ1LCAyNDYsIDE2NiwgNDQsIDQ1LCAyNDcsIDM3LCA0NCwgNDUsIDI0NiwgMTM0LCA0NCwgNDUsIDI0NywgNSwgCi0gICAgNDQsIDQ1LCAyNDYsIDE5NywgNDQsIDQ1LCAyNDcsIDY4LCA0NCwgNDUsIDI0NiwgODcsIDQ0LCA0NSwgMjQ2LCAyMTQsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxNTAsIDQ0LCA0NSwgMjQ3LCAyMSwgNDQsIDQ1LCAyNDYsIDExOCwgNDQsIDQ1LCAyNDYsIDI0NSwgNDQsIAotICAgIDQ1LCAyNDYsIDE4MSwgNDQsIDQ1LCAyNDcsIDUyLCA0NCwgNDUsIDI0NiwgMTAyLCA0NCwgNDUsIDI0NiwgMjI5LCA0NCwgCi0gICAgNDUsIDI0NiwgMTY1LCA0NCwgNDUsIDI0NywgMzYsIDQ0LCA0NSwgMjQ2LCAxMzMsIDQ0LCA0NSwgMjQ3LCA0LCA0NCwgNDUsIAotICAgIDI0NiwgMTk2LCA0NCwgNDUsIDI0NywgNjcsIDQ0LCA0NSwgMjQ2LCA3OSwgNDQsIDQ1LCAyNDYsIDIwNiwgNDQsIDQ1LCAKLSAgICAyNDYsIDE0MiwgNDQsIDQ1LCAyNDcsIDEzLCA0NCwgNDUsIDI0NiwgMTEwLCA0NCwgNDUsIDI0NiwgMjM3LCA0NCwgNDUsIAotICAgIDI0NiwgMTczLCA0NCwgNDUsIDI0NywgNDQsIDQ0LCA0NSwgMjQ2LCA5NCwgNDQsIDQ1LCAyNDYsIDIyMSwgNDQsIDQ1LCAKLSAgICAyNDYsIDE1NywgNDQsIDQ1LCAyNDcsIDI4LCA0NCwgNDUsIDI0NiwgMTI1LCA0NCwgNDUsIDI0NiwgMjUyLCA0NCwgNDUsIAotICAgIDI0NiwgMTg4LCA0NCwgNDUsIDI0NywgNTksIDQ0LCA0NSwgMjQ2LCA4NiwgNDQsIDQ1LCAyNDYsIDIxMywgNDQsIDQ1LCAKLSAgICAyNDYsIDE0OSwgNDQsIDQ1LCAyNDcsIDIwLCA0NCwgNDUsIDI0NiwgMTE3LCA0NCwgNDUsIDI0NiwgMjQ0LCA0NCwgNDUsIAotICAgIDI0NiwgMTgwLCA0NCwgNDUsIDI0NywgNTEsIDQ0LCA0NSwgMjQ2LCAxMDEsIDQ0LCA0NSwgMjQ2LCAyMjgsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNjQsIDQ0LCA0NSwgMjQ3LCAzNSwgNDQsIDQ1LCAyNDYsIDEzMiwgNDQsIDQ1LCAyNDcsIDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxOTUsIDQ0LCA0NSwgMjQ3LCA2NiwgNDQsIDQ1LCAyNDYsIDc1LCA0NCwgNDUsIDI0NiwgMjAyLCA0NCwgNDUsIDI0NiwgCi0gICAgMTM4LCA0NCwgNDUsIDI0NywgOSwgNDQsIDQ1LCAyNDYsIDEwNiwgNDQsIDQ1LCAyNDYsIDIzMywgNDQsIDQ1LCAyNDYsIAotICAgIDE2OSwgNDQsIDQ1LCAyNDcsIDQwLCA0NCwgNDUsIDI0NiwgOTAsIDQ0LCA0NSwgMjQ2LCAyMTcsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNTMsIDQ0LCA0NSwgMjQ3LCAyNCwgNDQsIDQ1LCAyNDYsIDEyMSwgNDQsIDQ1LCAyNDYsIDI0OCwgNDQsIDQ1LCAyNDYsIAotICAgIDE4NCwgNDQsIDQ1LCAyNDcsIDU1LCA0NCwgNDUsIDI0NiwgODIsIDQ0LCA0NSwgMjQ2LCAyMDksIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNDUsIDQ0LCA0NSwgMjQ3LCAxNiwgNDQsIDQ1LCAyNDYsIDExMywgNDQsIDQ1LCAyNDYsIDI0MCwgNDQsIDQ1LCAyNDYsIAotICAgIDE3NiwgNDQsIDQ1LCAyNDcsIDQ3LCA0NCwgNDUsIDI0NiwgOTcsIDQ0LCA0NSwgMjQ2LCAyMjQsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNjAsIDQ0LCA0NSwgMjQ3LCAzMSwgNDQsIDQ1LCAyNDYsIDEyOCwgNDQsIDQ1LCAyNDYsIDI1NSwgNDQsIDQ1LCAyNDYsIAotICAgIDE5MSwgNDQsIDQ1LCAyNDcsIDYyLCA0NCwgNDUsIDI0NiwgNzgsIDQ0LCA0NSwgMjQ2LCAyMDUsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNDEsIDQ0LCA0NSwgMjQ3LCAxMiwgNDQsIDQ1LCAyNDYsIDEwOSwgNDQsIDQ1LCAyNDYsIDIzNiwgNDQsIDQ1LCAyNDYsIAotICAgIDE3MiwgNDQsIDQ1LCAyNDcsIDQzLCA0NCwgNDUsIDI0NiwgOTMsIDQ0LCA0NSwgMjQ2LCAyMjAsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNTYsIDQ0LCA0NSwgMjQ3LCAyNywgNDQsIDQ1LCAyNDYsIDEyNCwgNDQsIDQ1LCAyNDYsIDI1MSwgNDQsIDQ1LCAyNDYsIAotICAgIDE4NywgNDQsIDQ1LCAyNDcsIDU4LCA0NCwgNDUsIDI0NiwgODUsIDQ0LCA0NSwgMjQ2LCAyMTIsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNDgsIDQ0LCA0NSwgMjQ3LCAxOSwgNDQsIDQ1LCAyNDYsIDExNiwgNDQsIDQ1LCAyNDYsIDI0MywgNDQsIDQ1LCAyNDYsIAotICAgIDE3OSwgNDQsIDQ1LCAyNDcsIDUwLCA0NCwgNDUsIDI0NiwgMTAwLCA0NCwgNDUsIDI0NiwgMjI3LCA0NCwgNDUsIDI0NiwgCi0gICAgMTYzLCA0NCwgNDUsIDI0NywgMzQsIDQ0LCA0NSwgMjQ2LCAxMzEsIDQ0LCA0NSwgMjQ3LCAyLCA0NCwgNDUsIDI0NiwgMTk0LCAKLSAgICA0NCwgNDUsIDI0NywgNjUsIDQ0LCA0NSwgMjQ2LCA3MywgNDQsIDQ1LCAyNDYsIDIwMCwgNDQsIDQ1LCAyNDYsIDEzNiwgNDQsIAotICAgIDQ1LCAyNDcsIDcsIDQ0LCA0NSwgMjQ2LCAxMDQsIDQ0LCA0NSwgMjQ2LCAyMzEsIDQ0LCA0NSwgMjQ2LCAxNjcsIDQ0LCA0NSwgCi0gICAgMjQ3LCAzOCwgNDQsIDQ1LCAyNDYsIDg4LCA0NCwgNDUsIDI0NiwgMjE1LCA0NCwgNDUsIDI0NiwgMTUxLCA0NCwgNDUsIAotICAgIDI0NywgMjIsIDQ0LCA0NSwgMjQ2LCAxMTksIDQ0LCA0NSwgMjQ2LCAyNDYsIDQ0LCA0NSwgMjQ2LCAxODIsIDQ0LCA0NSwgCi0gICAgMjQ3LCA1MywgNDQsIDQ1LCAyNDYsIDgwLCA0NCwgNDUsIDI0NiwgMjA3LCA0NCwgNDUsIDI0NiwgMTQzLCA0NCwgNDUsIAotICAgIDI0NywgMTQsIDQ0LCA0NSwgMjQ2LCAxMTEsIDQ0LCA0NSwgMjQ2LCAyMzgsIDQ0LCA0NSwgMjQ2LCAxNzQsIDQ0LCA0NSwgCi0gICAgMjQ3LCA0NSwgNDQsIDQ1LCAyNDYsIDk1LCA0NCwgNDUsIDI0NiwgMjIyLCA0NCwgNDUsIDI0NiwgMTU4LCA0NCwgNDUsIAotICAgIDI0NywgMjksIDQ0LCA0NSwgMjQ2LCAxMjYsIDQ0LCA0NSwgMjQ2LCAyNTMsIDQ0LCA0NSwgMjQ2LCAxODksIDQ0LCA0NSwgCi0gICAgMjQ3LCA2MCwgNDQsIDQ1LCAyNDYsIDc2LCA0NCwgNDUsIDI0NiwgMjAzLCA0NCwgNDUsIDI0NiwgMTM5LCA0NCwgNDUsIAotICAgIDI0NywgMTAsIDQ0LCA0NSwgMjQ2LCAxMDcsIDQ0LCA0NSwgMjQ2LCAyMzQsIDQ0LCA0NSwgMjQ2LCAxNzAsIDQ0LCA0NSwgCi0gICAgMjQ3LCA0MSwgNDQsIDQ1LCAyNDYsIDkxLCA0NCwgNDUsIDI0NiwgMjE4LCA0NCwgNDUsIDI0NiwgMTU0LCA0NCwgNDUsIAotICAgIDI0NywgMjUsIDQ0LCA0NSwgMjQ2LCAxMjIsIDQ0LCA0NSwgMjQ2LCAyNDksIDQ0LCA0NSwgMjQ2LCAxODUsIDQ0LCA0NSwgCi0gICAgMjQ3LCA1NiwgNDQsIDQ1LCAyNDYsIDgzLCA0NCwgNDUsIDI0NiwgMjEwLCA0NCwgNDUsIDI0NiwgMTQ2LCA0NCwgNDUsIAotICAgIDI0NywgMTcsIDQ0LCA0NSwgMjQ2LCAxMTQsIDQ0LCA0NSwgMjQ2LCAyNDEsIDQ0LCA0NSwgMjQ2LCAxNzcsIDQ0LCA0NSwgCi0gICAgMjQ3LCA0OCwgNDQsIDQ1LCAyNDYsIDk4LCA0NCwgNDUsIDI0NiwgMjI1LCA0NCwgNDUsIDI0NiwgMTYxLCA0NCwgNDUsIAotICAgIDI0NywgMzIsIDQ0LCA0NSwgMjQ2LCAxMjksIDQ0LCA0NSwgMjQ3LCAwLCA0NCwgNDUsIDI0NiwgMTkyLCA0NCwgNDUsIDI0NywgCi0gICAgNjMsIDQ0LCA0NSwgMjQ2LCA3NCwgNDQsIDQ1LCAyNDYsIDIwMSwgNDQsIDQ1LCAyNDYsIDEzNywgNDQsIDQ1LCAyNDcsIDgsIAotICAgIDQ0LCA0NSwgMjQ2LCAxMDUsIDQ0LCA0NSwgMjQ2LCAyMzIsIDQ0LCA0NSwgMjQ2LCAxNjgsIDQ0LCA0NSwgMjQ3LCAzOSwgCi0gICAgNDQsIDQ1LCAyNDYsIDg5LCA0NCwgNDUsIDI0NiwgMjE2LCA0NCwgNDUsIDI0NiwgMTUyLCA0NCwgNDUsIDI0NywgMjMsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxMjAsIDQ0LCA0NSwgMjQ2LCAyNDcsIDQ0LCA0NSwgMjQ2LCAxODMsIDQ0LCA0NSwgMjQ3LCA1NCwgNDQsIAotICAgIDQ1LCAyNDYsIDgxLCA0NCwgNDUsIDI0NiwgMjA4LCA0NCwgNDUsIDI0NiwgMTQ0LCA0NCwgNDUsIDI0NywgMTUsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMTIsIDQ0LCA0NSwgMjQ2LCAyMzksIDQ0LCA0NSwgMjQ2LCAxNzUsIDQ0LCA0NSwgMjQ3LCA0NiwgNDQsIDQ1LCAKLSAgICAyNDYsIDk2LCA0NCwgNDUsIDI0NiwgMjIzLCA0NCwgNDUsIDI0NiwgMTU5LCA0NCwgNDUsIDI0NywgMzAsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMjcsIDQ0LCA0NSwgMjQ2LCAyNTQsIDQ0LCA0NSwgMjQ2LCAxOTAsIDQ0LCA0NSwgMjQ3LCA2MSwgNDQsIDQ1LCAKLSAgICAyNDYsIDc3LCA0NCwgNDUsIDI0NiwgMjA0LCA0NCwgNDUsIDI0NiwgMTQwLCA0NCwgNDUsIDI0NywgMTEsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMDgsIDQ0LCA0NSwgMjQ2LCAyMzUsIDQ0LCA0NSwgMjQ2LCAxNzEsIDQ0LCA0NSwgMjQ3LCA0MiwgNDQsIDQ1LCAKLSAgICAyNDYsIDkyLCA0NCwgNDUsIDI0NiwgMjE5LCA0NCwgNDUsIDI0NiwgMTU1LCA0NCwgNDUsIDI0NywgMjYsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMjMsIDQ0LCA0NSwgMjQ2LCAyNTAsIDQ0LCA0NSwgMjQ2LCAxODYsIDQ0LCA0NSwgMjQ3LCA1NywgNDQsIDQ1LCAKLSAgICAyNDYsIDg0LCA0NCwgNDUsIDI0NiwgMjExLCA0NCwgNDUsIDI0NiwgMTQ3LCA0NCwgNDUsIDI0NywgMTgsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMTUsIDQ0LCA0NSwgMjQ2LCAyNDIsIDQ0LCA0NSwgMjQ2LCAxNzgsIDQ0LCA0NSwgMjQ3LCA0OSwgNDQsIDQ1LCAKLSAgICAyNDYsIDk5LCA0NCwgNDUsIDI0NiwgMjI2LCA0NCwgNDUsIDI0NiwgMTYyLCA0NCwgNDUsIDI0NywgMzMsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxMzAsIDQ0LCA0NSwgMjQ3LCAxLCA0NCwgNDUsIDI0NiwgMTkzLCA0NCwgNDUsIDI0NywgNjQsIDk1LCAyMTYsIDI0LCAKLSAgICA3NiwgMiwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgNTEsIDc2LCAyLCA3MSwgOTAsIAotICAgIDk1LCA1MSwgNzYsIDIsIDcxLCA5MCwgNDIsIDQ2LCA1MSwgNzYsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyNDMsIAotICAgIDIxMywgMTM0LCAxMzIsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgOTUsIDUxLCA3NiwgMjQzLCAyMTMsIDEzNCwgMjQ2LCA1OCwgCi0gICAgNzYsIDIsIDE5OSwgOTAsIDIxNSwgMTI0LCA3NiwgMiwgMTk5LCA5MCwgMjE1LCAxMjQsIDIxNiwgMTY5LCA2OCwgMjQ2LCAKLSAgICA1OCwgMjE2LCAxNjksIDY4LCAxMzIsIDUxLCAyNDgsIDEwMiwgNjgsIDk1LCA1MSwgMjQ4LCAxMDIsIDY4LCAxMzIsIDIxNiwgCi0gICAgMTY5LCAyNDgsIDEwMiwgNjgsIDk1LCAyMTYsIDE2OSwgMjQ4LCAxMDIsIDY4LCA5NSwgMjE2LCAyNCwgMjE2LCAxNjksIAotICAgIDI0OCwgMTAyLCA2OCwgOTUsIDc2LCAyLCAyNDYsIDcyLCAyMTksIDc5LCAyMTUsIDEyNCwgNzYsIDIxMSwgMjExLCAxMzQsIAotICAgIDI0NiwgNTgsIDc2LCAyMTEsIDIxMSwgMTM0LCA5NSwgNzYsIDIsIDIxOCwgMjgsIDIsIDcxLCA5MCwgOTUsIDc2LCAyLCAKLSAgICAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDIsIDIxOCwgMjcsIDk1LCAyMTYsIDI0LCA3NiwgMiwgCi0gICAgMjE4LCAyOCwgMiwgNzEsIDkwLCA5NSwgMjE2LCAyNCwgNzYsIDIsIDIxOCwgMjgsIDIsIDUxLCA3MSwgOTAsIDEzMiwgMjUzLCAKLSAgICAxNjYsIDk1LCAyNTMsIDE2NiwgMTMyLCA1MSwgMjUzLCAxNjYsIDk1LCA1MSwgMjUzLCAxNjYsIDEzMiwgNzYsIDIxMSwgCi0gICAgMjExLCA4MywgMjQ3LCAyMDAsIDk1LCA3NiwgMjExLCAyMTEsIDgzLCAyNDcsIDIwMCwgMTMyLCA3NiwgMjQzLCAyMTMsIAotICAgIDI1MiwgNjAsIDIxMSwgMjExLCA4MywgMjQ3LCAyMDAsIDk1LCA3NiwgMjQzLCAyMTMsIDI1MiwgNjAsIDIxMSwgMjExLCA4MywgCi0gICAgMjQ3LCAyMDAsIDIyOCwgMTY3LCAyMTMsIDI1MCwgMjQsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIAotICAgIDE3NiwgMjQsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDIsIDEwMSwgMjI4LCAKLSAgICAxNjcsIDI0NSwgMTc2LCA3NiwgMiwgMTAxLCAyMTksIDIxNSwgMjQ1LCAxNzYsIDc2LCAyLCAxMDEsIDIxOSwgMjE1LCAyMTMsIAotICAgIDI1MCwgNzYsIDIsIDEwMSwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjQsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjgsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNzYsIDI0LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDc2LCAKLSAgICAyNCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA3NiwgMjQsIDIyOCwgMTY3LCAyMTMsIAotICAgIDI1MCwgNjgsIDIyMywgMTI1LCAyNDcsIDIwNywgMjQ5LCA2NSwgMjQ0LCAxNDMsIDI0NywgMjA2LCAyNDQsIDE0MywgMjQ3LCAKLSAgICAyMDcsIDI0OSwgNjUsIDIyMywgMTI1LCAyNDcsIDIwNiwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMjQ5LCA2NSwgMjI4LCAKLSAgICAxNjcsIDI0NSwgMTc2LCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA3NiwgMjQ5LCA2NSwgMjE5LCAyMTUsIDI0NSwgMTc2LCAKLSAgICA2OCwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyNDksIDY1LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyMjMsIDEyNSwgMjQ3LCAKLSAgICAyMDcsIDI0OSwgNjUsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIAotICAgIDIyOCwgMTY3LCAyMTMsIDI1MCwgNjgsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDI0OSwgNjUsIDIyOCwgMTY3LCAyNDUsIAotICAgIDE3NiwgNjgsIDIxNCwgMjAsIDc2LCAyMjUsIDE0MSwgMjQ3LCAxNDcsIDIyMywgMTQ4LCA3NiwgMjI1LCAxNDEsIDk1LCAKLSAgICAyMTcsIDE0MSwgMjQ5LCAzMiwgMjE1LCAxMjMsIDc2LCAyMjUsIDE0MSwgOTUsIDIxNywgMTQxLCAyNDksIDMyLCAyNDYsIAotICAgIDU3LCA3NiwgMjI1LCAxNDEsIDI0NiwgNTgsIDIxNywgMTQxLCAyNDksIDMyLCAyMzMsIDYxLCA3NiwgMjI1LCAxNDEsIDI0NiwgCi0gICAgNTgsIDIxNywgMTQxLCAyNDksIDMyLCAyMjMsIDEzOCwgMjIzLCAxNDEsIDI1MywgMTk2LCAyNDksIDE5NSwgNjgsIDIzMywgCi0gICAgNjQsIDI1MywgMTk2LCAyNTMsIDI1NSwgNjgsIDIxNiwgMjI3LCAyNTMsIDE5NiwgMjUzLCAyNTUsIDY4LCAyNTEsIDEwMSwgCi0gICAgMjUzLCAxOTYsIDI1MywgMjU1LCA2OCwgMjE2LCAyMjcsIDI1MywgMTk2LCAyNDksIDE5NSwgNzYsIDIsIDIzMCwgMjUwLCAKLSAgICAyMTYsIDIyNywgMjUzLCAxOTYsIDI1MywgMjU1LCA3NiwgMiwgMjI1LCAxNTYsIDIzMiwgMTYzLCA0NiwgMjIxLCA3MiwgCi0gICAgMjQ5LCAxOTUsIDY4LCAyMzIsIDE2MywgNDIsIDIyMSwgNzIsIDI1MywgMjU1LCA2OCwgMjUzLCAyNTUsIDI0OSwgMTkzLCAKLSAgICAyNDksIDIyOSwgNjgsIDI0OSwgMTk1LCAyNDksIDE5MywgMjQ5LCAyMjksIDY4LCA5NSwgNzYsIDc4LCAyMjAsIDE3NSwgCi0gICAgMTMyLCA2OCwgMTMyLCA3NiwgNzgsIDIyMCwgMTc1LCA5NSwgNjgsIDIyMCwgMTc1LCA5NSwgNzYsIDc4LCAxMzIsIDY4LCAKLSAgICA5NSwgNzYsIDIsIDk0LCA1NSwgMTMyLCA3NiwgMiwgOTQsIDU1LCA5NSwgNzYsIDIxNywgOTMsIDIxMywgMTY2LCA0MiwgNDYsIAotICAgIDc2LCAyMTcsIDkzLCAzLCAyNDksIDIyOCwgMjE1LCAxMjQsIDIxNiwgMjQsIDc2LCAyNDMsIDIxMywgMywgMjQ5LCAyMjgsIAotICAgIDQyLCAyMDYsIDExNCwgNDYsIDIwNiwgMTE5LCAyNDEsIDIzNywgNDIsIDIwNiwgMTE5LCA0NiwgMjA2LCAxMTQsIDI0MSwgCi0gICAgMjM3LCAxMTQsIDIwNiwgNDYsIDExOSwgMjA2LCA0MiwgMjQxLCAyMzcsIDExNCwgMjA2LCA0MiwgMTE5LCAyMDYsIDQ2LCAKLSAgICAyNDEsIDIzNywgNDIsIDIwNiwgMTE0LCA0NiwgMjA2LCAxMTQsIDI0MSwgMjM3LCAxMTQsIDIwNiwgNDYsIDExOSwgMjA2LCAKLSAgICA0NiwgMjQxLCAyMzcsIDQyLCAyMDYsIDExOSwgNDYsIDIwNiwgMTE5LCAyNDEsIDIzNywgMTE0LCAyMDYsIDQyLCAxMTksIAotICAgIDIwNiwgNDIsIDI0MSwgMjM3LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgMjExLCAyMTEsIDEzNCwgOTUsIDI0MSwgCi0gICAgMjM4LCAyLCAyMDYsIDExNCwgMjExLCAyMTEsIDEzNCwgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyMTEsIAotICAgIDIxMSwgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjExLCAyMTEsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgCi0gICAgMjA2LCAxMTksIDIxMSwgMjExLCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDIxMSwgMjExLCAxMzQsIDIxNSwgCi0gICAgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjExLCAyMTEsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIAotICAgIDIxMSwgMjExLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCAyNDMsIDIxMywgMTM0LCA5NSwgMjQxLCAyMzgsIAotICAgIDIsIDIwNiwgMTE0LCAyNDMsIDIxMywgMTM0LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyNDMsIDIxMywgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIAotICAgIDExOSwgMjQzLCAyMTMsIDEzNCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgMjQzLCAyMTMsIDEzNCwgMjE1LCAxMjQsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAyNDMsIDIxMywgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjQzLCAKLSAgICAyMTMsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIAotICAgIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAyMjMsIDE0OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAKLSAgICAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgCi0gICAgMTQ4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAyMTUsIDEzNCwgMTMyLCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgOTUsIDI0MSwgMjM4LCAKLSAgICAyLCAyMDYsIDExNCwgNzgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAxMTksIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgCi0gICAgMTg0LCAyNDgsIDEwMSwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI1MSwgMjIwLCAxODQsIDI0OCwgMTAxLCA5NSwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgMTg0LCAyNDgsIDEwMSwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDExOSwgMjUxLCAKLSAgICAyMjAsIDE4NCwgMjQ4LCAxMDEsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDI0NiwgNTgsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTQ4LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjUxLCAyMDcsIDIxNSwgCi0gICAgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDE0OCwgNDYsIDUxLCA3NiwgMiwgMjIzLCA4NSwgMjQxLCAyMTksIDI0NSwgCi0gICAgNjEsIDUsIDc4LCA5NSwgNjgsIDIxNywgNDMsIDIyNywgMzQsIDc4LCA5NSwgNjgsIDEzMiwgNzYsIDc4LCAyMTcsIDQzLCAKLSAgICAyMjcsIDMzLCA5NSwgNzYsIDc4LCAyMTcsIDQzLCAyMjcsIDMzLCA5NSwgNzYsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgCi0gICAgMjMzLCAzOSwgNzgsIDEzMiwgNjgsIDEzMiwgNzYsIDIxNywgOTMsIDIzMywgMzgsIDI0MiwgMTA3LCA3OCwgOTUsIDY4LCAKLSAgICAyMTksIDksIDc4LCA5NSwgNjgsIDEzMiwgNzYsIDIxNywgOTMsIDIxOSwgOCwgMjE4LCAyMjIsIDc4LCAxMzIsIDY4LCA0MiwgCi0gICAgMjQ0LCA2MCwgMjE4LCAyNywgNDYsIDI0NCwgNjAsIDIxOCwgMjcsIDExNCwgMjQ0LCA2MCwgMjE4LCAyNywgMTE5LCAyNDQsIAotICAgIDYwLCAyMTgsIDI3LCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDI0OCwgMTEsIDIxMiwgMTUzLCAxNzQsIDIxOSwgMTc0LCAKLSAgICAyMTIsIDE1MywgMTc0LCAyMTYsIDE1LCAyNDksIDE2NCwgNDIsIDY3LCAyNDksIDQwLCAxMjUsIDQ2LCA2NywgMjQ5LCA0MCwgCi0gICAgMTI1LCA0MiwgNjcsIDIyNiwgMTMxLCA0NiwgNjcsIDIyNiwgMTMxLCAyMTIsIDE1MywgMTc0LCA0MiwgMjM2LCAxMCwgMTI1LCAKLSAgICAyMTIsIDE1MywgMTc0LCA0NiwgMjM2LCAxMCwgMTI1LCAyMTIsIDE1MywgMTc0LCA0MiwgMjUxLCAxNjUsIDEyNSwgMjEyLCAKLSAgICAxNTMsIDE3NCwgNDYsIDI1MSwgMTY1LCAxMjUsIDQyLCA0MSwgMjUxLCA4NSwgMiwgMjE1LCAxNTMsIDQ2LCA0MSwgMjUxLCAKLSAgICA4NSwgMiwgMjE1LCAxNTMsIDQyLCA0MSwgMjUxLCA4NSwgMiwgMjE3LCA2OSwgMjM1LCAyNTIsIDIxNiwgMjI3LCAyNDksIAotICAgIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIsIDIxNywgNjksIDIzNSwgMjUyLCAyNTEsIDEwMSwgMjQ5LCA5OSwgNDIsIDQxLCAKLSAgICAyNTEsIDg1LCAyLCAyMTcsIDY5LCAyMzUsIDI1MiwgMjUxLCAxMDEsIDI0OSwgOTksIDQ2LCA0MSwgMjUxLCA4NSwgMiwgCi0gICAgMjE3LCA2OSwgMjM1LCAyNTIsIDIxNiwgMjI3LCAyNDksIDk5LCA0MiwgMjU0LCAxOSwgMjUxLCA4NSwgMiwgMjQ3LCA3NCwgCi0gICAgNDYsIDI1NCwgMTksIDI1MSwgODUsIDIsIDI0NywgNzQsIDQyLCAyNTMsIDE5NiwgMjMzLCAzOSwgMTI1LCA0NiwgMjUzLCAKLSAgICAxOTYsIDI0MiwgMTA3LCAxMjUsIDUxLCA0MiwgMjUzLCAxOTYsIDI0MiwgMTA3LCAxMjUsIDUxLCA0NiwgMjUzLCAxOTYsIAotICAgIDIzMywgMzksIDEyNSwgNDIsIDgzLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDYsIDgzLCAyMTYsIDIxOSwgMjIwLCAKLSAgICAyMzMsIDEyNSwgMjQ2LCA3MiwgMjQ0LCAxMDQsIDcxLCAyMTIsIDI4LCAyMzIsIDI0MiwgMjMxLCAxNTMsIDI1NCwgMTksIAotICAgIDIyNywgMzUsIDIzMywgNzAsIDQ2LCAyNTQsIDE5LCAyMTQsIDI0NCwgMiwgMjE5LCAxNjYsIDIzMSwgMTUzLCA0NiwgMjU0LCAKLSAgICAxOSwgMiwgMjQ3LCA3NCwgMjU0LCAxOSwgMiwgMjIzLCA0LCAyMzUsIDIxMiwgMjU0LCAxNjQsIDI1NCwgMTgsIDIxOSwgCi0gICAgMTg3LCAyNTQsIDE5LCAyMjcsIDM1LCAyMzMsIDcwLCAyMTksIDE4NywgMjU0LCAxOSwgMjI3LCAzNSwgMjE1LCAxMzQsIAotICAgIDIxNiwgNTgsIDI1NCwgMTgsIDIyMywgMjAyLCAyNTQsIDE4LCAyNTQsIDE5LCAyLCAyMTUsIDE1MywgMjIzLCAyMDIsIDI1NCwgCi0gICAgMTksIDIsIDIxNSwgMTUzLCAyMjcsIDExMiwgMjU0LCAxOSwgMjI3LCAzNSwgMjE1LCAxMzQsIDIyNywgMTEyLCAyNTQsIDE5LCAKLSAgICAyMjcsIDM1LCAyNDYsIDYwLCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgCi0gICAgMjUyLCA3NiwgMjI1LCAxNDEsIDExNCwgMjQsIDIyMywgMTQ4LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAKLSAgICAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDExNCwgMjQsIDIzMywgNzAsIDIzMSwgMTUzLCAyNTQsIAotICAgIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgMTE5LCAyNCwgMjIzLCAKLSAgICAxNDgsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIAotICAgIDE0MSwgMTE5LCAyNCwgMjMzLCA3MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAKLSAgICAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCA0NiwgMjQsIDIxNSwgMTM0LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgCi0gICAgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDQyLCAyNCwgMjE1LCAxMzQsIDIzMSwgMTUzLCAKLSAgICAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgNDYsIDI0LCAKLSAgICAyNDYsIDYwLCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgCi0gICAgMjI1LCAxNDEsIDQyLCAyNCwgMjQ2LCA2MCwgMjIzLCAyMDIsIDI0NSwgMTEwLCAyMjEsIDQ4LCAyNDUsIDExMCwgMjIxLCAKLSAgICA0OSwgMiwgMjI2LCAyNDcsIDI0NSwgMTEwLCAyMjEsIDQ5LCAyLCAzLCAyNDksIDIyOSwgNDksIDI0NSwgMTEwLCAyMjEsIAotICAgIDQ5LCAyLCA0NiwgNzYsIDQ5LCAyNDUsIDExMCwgMjIxLCA0OSwgMiwgNDIsIDc2LCA0OSwgMjQ5LCAyMjksIDIsIDE5OSwgCi0gICAgMTM0LCAzNiwgNzEsIDEzNCwgMzYsIDIyNiwgMTM1LCAzNiwgMjIzLCAyMDMsIDIxOSwgMjMxLCAzNiwgMjI2LCA0NywgMjQ5LCAKLSAgICAyMjksIDI0NywgMTI1LCAyNTEsIDcsIDE5OSwgMjUyLCA2MCwgMjQsIDIxNiwgMjI3LCAxNTEsIDI0NywgMTI1LCAyNTEsIDcsIAotICAgIDcxLCAxMzQsIDI0OSwgMjI5LCAyLCAyMTgsIDIyNCwgMjEzLCAxNjYsIDM2LCAyNTMsIDI1NCwgMjQ3LCAxMjEsIDUyLCAKLSAgICAxMTQsIDc2LCAyMTcsIDkzLCAyNDksIDIyOCwgMzYsIDY3LCAyNTEsIDQyLCAzNiwgMjUxLCA0MiwgMzYsIDIzMywgMzgsIAotICAgIDM2LCAyNDIsIDEwNiwgMjQ5LCAyMjksIDIsIDMsIDI0OSwgMjI5LCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCAKLSAgICAyNDksIDIyOSwgMiwgMTE3LCAxOTksIDIxOSwgMzMsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjIzLCAxNDgsIDkxLCAyMjMsIAotICAgIDEyNSwgMjQ3LCAyMDcsIDIyMCwgMjMsIDkxLCAyNDQsIDE0MywgMjQ3LCAyMDcsIDIyMCwgMjMsIDkxLCAyNTMsIDEzMiwgCi0gICAgOTEsIDMsIDI0OSwgMjI4LCA5MSwgMjE5LCAxNjYsIDExNywgMjM1LCA2OCwgMjE5LCAxNjQsIDIxNiwgMTg0LCAyLCA2MiwgCi0gICAgNDksIDIxNiwgMTg0LCAyLCAyMTUsIDE1MywgMjIzLCA0LCAyMzUsIDI1MiwgMjE2LCAxODMsIDIxNiwgMTg0LCAyLCAyMjEsIAotICAgIDU1LCAyNTMsIDEyMywgMjUxLCAxMDAsIDQ2LCAyMTYsIDE4NCwgNzgsIDQyLCAyMTYsIDE4MywgNDIsIDIxNiwgMTg0LCAKLSAgICAyNTEsIDIwNywgNzEsIDEzNCwgNzEsIDI1MiwgNjAsIDI1MSwgMjA3LCA0NiwgMjE2LCAxODMsIDI1MSwgOTEsIDIsIDQyLCAKLSAgICAxNTEsIDI1MSwgMTQ0LCAyNTEsIDkxLCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgODMsIDI1MSwgOTAsIDI5LCAyLCA0MiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgMjksIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCA2NywgMjQwLCAyMjMsIDgzLCAyNDAsIDIyMywgNDIsIAotICAgIDIxMywgMjI5LCAyNDQsIDEwNCwgNDYsIDIxMywgMjI5LCAyNDQsIDEwNCwgNDIsIDUxLCAyMTMsIDIyOSwgMjQ0LCAxMDQsIAotICAgIDQ2LCA1MSwgMjEzLCAyMjksIDI0NCwgMTA0LCAyMzUsIDI0NCwgMjM1LCAyMzEsIDIxNywgNjYsIDExMCwgMjM1LCAyMzEsIAotICAgIDIzNSwgMjMyLCAyMjksIDE4MywgMiwgNzEsIDEzNCwgMjQ2LCA2NiwgMjMwLCAxNTcsIDQxLCAyLCAyNDksIDEyMCwgMjI2LCAKLSAgICAyNTEsIDIzNSwgMjQyLCAyNTMsIDE1MiwgMjIwLCAxNDQsIDIyNSwgNjMsIDI0NSwgNjEsIDUsIDI0LCAyMjAsIDI1LCAyMjYsIAotICAgIDEzNSwgMjQ1LCA2MSwgNSwgMjQsIDIyMCwgMjUsIDIyNiwgMTM2LCAyLCAyMTcsIDQzLCA0OSwgMjQwLCA5NywgMjExLCAKLSAgICAyMTEsIDI0LCAyMjAsIDI1LCAyMjYsIDEzNSwgMjQyLCAxNTksIDIxOSwgOTQsIDIxNywgMTM4LCAyNDYsIDU5LCAyMTYsIAotICAgIDE4NCwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDI0NiwgNTksIDIxNiwgMTg0LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgODMsIAotICAgIDI0NywgMjAxLCAyLCAxMTksIDY4LCA4MywgMjMyLCAxNTksIDY3LCAyNDksIDIyOSwgMiwgMTE5LCA2OCwgODMsIDI0OSwgCi0gICAgMjI5LCAyLCAxMTksIDY4LCAyNDUsIDQ4LCA2NywgMjE5LCAxNjYsIDI0NSwgNDgsIDgzLCAyMTksIDE2NiwgMjQ1LCA0OCwgCi0gICAgNjcsIDI0NywgMjAwLCAyNDUsIDQ4LCA4MywgMjQ3LCAyMDAsIDI0NSwgNDgsIDY3LCAyNDksIDIyOCwgMjQ1LCA0OCwgODMsIAotICAgIDI0OSwgMjI4LCAyMjMsIDQzLCAyMjMsIDIwMywgMjE5LCAyMzIsIDIyNywgMzMsIDIxOSwgMjMyLCAyLCAyMjYsIDI0NywgCi0gICAgMjIzLCAyMDMsIDIxOSwgMjMyLCAyLCAxOTksIDkwLCAyNTEsIDE3MiwgMjE5LCAyMzEsIDI1MSwgMTcyLCAyMjMsIDIwMywgCi0gICAgMjE5LCAyMzEsIDUxLCAyMjUsIDE1NiwgMjE2LCAxNjksIDIyNSwgMTU2LCAyMzMsIDY2LCAyNDksIDMzLCAyNTQsIDE5LCAKLSAgICAxMjUsIDIyMywgMTQ0LCAyNDksIDMzLCAyNTQsIDE5LCAxMjUsIDIxNywgMzEsIDIzMCwgMjQ4LCAyMzAsIDk3LCAzNiwgNjIsIAotICAgIDIyNywgMzMsIDIzMCwgOTcsIDM2LCA5NCwgMjI3LCAzMywgMjMwLCA5NywgMzYsIDI5LCAyMjcsIDMzLCAyMzAsIDk3LCAKLSAgICAyMTUsIDE0NywgMjI3LCAzNCwgMiwgMjQ3LCA3NCwgMjMwLCA5NywgMjE1LCAxNDcsIDIyNywgMzQsIDIsIDIyNSwgMTU2LCAKLSAgICAyMzAsIDk3LCA0MSwgMjM1LCAxOTYsIDIyNywgMzMsIDIzMCwgOTcsIDQxLCAyMTUsIDE0NywgMjI3LCAzMywgMTE3LCAyMzIsIAotICAgIDE5OSwgMjQsIDIyNywgMzMsIDExNywgMjMyLCAxOTksIDE2NywgMjI3LCAzMywgMjMwLCA5NywgMjksIDIyNywgMzMsIDIzMCwgCi0gICAgMjI0LCAxMTcsIDIxOCwgMjQ0LCAyMTgsIDI0MiwgMiwgMjM1LCAyMDgsIDIyNCwgMTY5LCAyMzUsIDIwOSwgMjI3LCAzMywgCi0gICAgMjQ0LCA2OCwgMjI2LCAxMjcsIDIzNSwgMjA4LCAyMzUsIDIwOSwgMiwgNTEsIDkwLCAyMzUsIDIwOSwgMjUzLCA4OSwgMiwgCi0gICAgMjIwLCAyMywgMjQ5LCAyMjUsIDI0MywgMTk3LCAyNTMsIDI1NSwgMjM1LCAyMDYsIDIzMiwgMjQzLCAyMzUsIDIwNywgMiwgCi0gICAgMjI0LCA4LCAyMjYsIDExMCwgMjUzLCAxNzMsIDIyNSwgMTM1LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIsIDIyMSwgNzIsIAotICAgIDIyNiwgMTEwLCAyNTMsIDE3MywgMjI1LCAxMzUsIDIzMiwgMjQzLCAyMzUsIDIwNywgMjI4LCAxNjMsIDIzNSwgMjQ2LCAKLSAgICAyMTcsIDE0OSwgMjI1LCAxMzUsIDIzNSwgMjA5LCAyNTMsIDE3MywgMTE4LCAyMjUsIDE0NSwgMjI3LCAzMywgMjI0LCAxNjMsIAotICAgIDIzNSwgMjA5LCAyMjcsIDMzLCAyMzUsIDIwOSwgMiwgMTMyLCA3NiwgMiwgMTAxLCAyMzUsIDIwOSwgMiwgMjksIDUyLCAKLSAgICAyMzUsIDIwOSwgMiwgMjM1LCAxOTUsIDIzNSwgMjA5LCAyLCAyMTUsIDE0NiwgMjM1LCAyMDksIDIsIDIyNiwgMjQ3LCAyMzUsIAotICAgIDIwOSwgMiwgMjE1LCAxNTMsIDIzNSwgNjksIDIzMywgMTA4LCA0MiwgMjE2LCAxODQsIDIyNywgMzMsIDIxMiwgMTUzLCAKLSAgICAxNzQsIDIyMiwgMTE5LCAyNDksIDE0OCwgMjEyLCAxNTMsIDE3NCwgMjIyLCAxMTksIDIyNSwgMTg4LCAyMTIsIDE1MywgCi0gICAgMTc0LCAyMjIsIDExOSwgMjI1LCA2MCwgOTQsIDUsIDIsIDMsIDI0OSwgMjI5LCA0OSwgOTQsIDUsIDIsIDI0OSwgMjI0LCAKLSAgICAyNTQsIDE3NSwgNDksIDk0LCA1LCAyLCAyMTcsIDQzLCA0OSwgOTQsIDUsIDIsIDYyLCA1NSwgOTQsIDUsIDIsIDIxNywgNDMsIAotICAgIDU1LCA5NCwgNSwgMiwgMjE5LCAxMCwgMTA5LCA5NCwgNSwgMiwgODMsIDIxNiwgMTgzLCAyMzAsIDI1MSwgNSwgMiwgMjQ5LCAKLSAgICAxNTgsIDQ5LCAyMzAsIDI1MSwgNSwgMiwgNjIsIDU1LCAyMzAsIDI1MSwgNSwgMiwgMjQ0LCAxNDMsIDI0NywgNzIsIDIzMCwgCi0gICAgMjUxLCA1LCAyLCAyMjMsIDEyNSwgMjQ3LCA3MiwgOTQsIDUsIDIzNSwgMjUyLCA0MiwgMTUxLCAyNDksIDIyOCwgOTQsIDUsIAotICAgIDIzNSwgMjUyLCA0NiwgMTUxLCAyNDksIDIyOCwgMjE0LCAyMzEsIDE2NywgMjQ5LCA3MSwgMjI1LCA2MywgMjMwLCAxNTQsIAotICAgIDUsIDIsIDYyLCA0OSwgMjMwLCAxNTQsIDUsIDIsIDIxNSwgMTUzLCAyMjEsIDY5LCAyMjUsIDY0LCAyLCAyNTEsIDEwMSwgCi0gICAgMjQ5LCAxOTIsIDIyMCwgNSwgMjI1LCA2MywgMjMwLCAxNTQsIDUsIDIzNSwgMjUyLCA0MiwgMTUxLCAyNDksIDIyOCwgMjMwLCAKLSAgICAxNTQsIDUsIDIzNSwgMjUyLCA0NiwgMTUxLCAyNDksIDIyOCwgMzYsIDIzMCwgMTU0LCA1LCAyLCAyNDksIDIyNCwgMjU0LCAKLSAgICAxNzQsIDIzMCwgMTU0LCA1LCAyMzUsIDI1MiwgNTEsIDI0OSwgMjI4LCAzNiwgMjQ3LCAxMjEsIDUyLCA5NCwgNSwgMjM1LCAKLSAgICAyNTIsIDIxNiwgMTgzLCAyMzAsIDI1MSwgNSwgMjM1LCAyNTIsIDIxNiwgMTgzLCAyMzAsIDE1NCwgNSwgMjM1LCAyNTIsIAotICAgIDIxNiwgMTgzLCAyMzUsIDIwMywgMjI1LCA2MywgMjIzLCAxMzksIDIzNSwgMjAzLCAyMjUsIDYzLCAyMTIsIDE1MywgMTc0LCAKLSAgICAyMjMsIDI0MCwgMjQ5LCAxNDgsIDI1NCwgNDMsIDE2NywgMjQ5LCAxMDQsIDIzNSwgMTk2LCAyLCAyNDcsIDc0LCAyMTUsIAotICAgIDE0NywgMiwgMjMwLCAyNTEsIDUyLCAyMTUsIDE0NywgMiwgMjI2LCAyNDcsIDIzNSwgMTk2LCAyLCAyMjYsIDI0NywgMjM1LCAKLSAgICAxOTYsIDIsIDIzMiwgMTk5LCAyNTQsIDI3LCAyMTUsIDE0NywgMiwgMjMyLCAxOTksIDIyNywgMjQsIDIxNSwgMTQ3LCA3OCwgCi0gICAgMjM1LCAxOTUsIDIzNSwgMTk2LCA3OCwgMjE1LCAxNDYsIDIxNSwgMTQ3LCA3OCwgMjUyLCA2MCwgNzgsIDIzNSwgMTk1LCAKLSAgICAyMzUsIDE5NiwgNzgsIDI1MiwgNjAsIDc4LCAyMTUsIDE0NiwgMjE1LCAxNDcsIDI1MSwgMjA3LCAyNCwgMjM1LCA2OCwgMiwgCi0gICAgMjE1LCAxNDYsIDIzNSwgMTk2LCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIDIsIDIzNSwgMTk1LCAyNDksIDE5MywgMjE1LCAKLSAgICAxNDcsIDIsIDIyMSwgNTQsIDI0OSwgMTkzLCAyMzUsIDE5NiwgMiwgMjIxLCA1NCwgNTEsIDQxLCAyMzUsIDE5NSwgNTEsIAotICAgIDQxLCAyMTUsIDE0NiwgMjQ5LCAxOTMsIDIxNSwgMTQ3LCAyLCAyMjEsIDU1LCAyNCwgMjIwLCA1LCAyMjUsIDYzLCAyMzIsIAotICAgIDE5OSwgMjQsIDIsIDYyLCA0OSwgMjMyLCAxOTksIDE2NywgMiwgNjIsIDQ5LCA1MSwgMjMyLCAxOTksIDI1NCwgMjcsIDUxLCAKLSAgICAyMzIsIDE5OSwgMjI3LCAyNCwgMTE3LCAyMzUsIDE5NywgMjMyLCAxOTksIDI1NCwgMjcsIDExNywgMjM1LCAxOTcsIDIzMiwgCi0gICAgMTk5LCAyMjcsIDI0LCAyMjAsIDEzLCAyMzMsIDEwOCwgMjI3LCAyNCwgMjIwLCAxMywgMjMzLCAxMDgsIDI1NCwgMjcsIAotICAgIDIzMiwgMTk5LCAxNjcsIDIyNiwgMjQ1LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMyLCAxOTksIDI0LCAyLCAyMzEsIDM3LCAKLSAgICAyMTksIDc5LCAyMzIsIDE5OSwgMTY3LCAyLCAyMzEsIDM3LCAyMTksIDc5LCAyMzIsIDE5OSwgMjQsIDIsIDE5OSwgMjQ4LCAKLSAgICAxMDEsIDIzMiwgMTk5LCAxNjcsIDIsIDE5OSwgMjQ4LCAxMDEsIDIzMiwgMTk5LCAyNCwgMiwgNTEsIDIyNiwgMjQ3LCAyMzIsIAotICAgIDE5OSwgMjQsIDIsIDIxNSwgMTUzLCAyMzIsIDE5OSwgMjQsIDIsIDUxLCAyMTUsIDE1MywgMywgMjE0LCAyMjgsIDIsIDIxNSwgCi0gICAgMTUzLCAyMzIsIDE5OSwgMTY3LCAyLCA1MSwgMjI2LCAyNDcsIDIzMiwgMTk5LCAxNjcsIDIsIDUxLCAyMTUsIDE1MywgMjEyLCAKLSAgICAxNTMsIDE3NCwgMjQ3LCA4MywgMjUzLCAyNDYsIDIxMiwgMTUzLCAxNzQsIDIyNCwgNDAsIDI1MywgMjQ2LCAyNDUsIDYxLCAKLSAgICA1LCAyLCA2MiwgNTUsIDI0MCwgOTcsIDIsIDYyLCA0OSwgMjE2LCAxNjksIDE5OSwgMjUyLCA2MCwgMiwgNTEsIDcxLCA5MCwgCi0gICAgMjE2LCAxNjksIDE5OSwgMjUyLCA2MCwgMiwgMjE2LCAxNjksIDcxLCA5MCwgMjE3LCA0MywgMjI3LCAzNCwgMiwgNjIsIDQ5LCAKLSAgICAyMTcsIDQzLCAyMjcsIDM0LCAyLCAyMjMsIDEyNSwgMjQ3LCA3MiwgMjIwLCA4OCwgMjMwLCAyNTEsIDIyMCwgODcsIDI0OSwgCi0gICAgMTM5LCAyLCA2MiwgNDksIDI0NSwgNjEsIDIsIDI1MywgMTMyLCAyNTQsIDU3LCAxMjMsIDIxMSwgMjExLCAyLCAyNDksIAotICAgIDIyNCwgMjU0LCAxNzQsIDI1MywgMjE4LCAxMjMsIDE2NywgMTIzLCAxMDgsIDI0NSwgNjEsIDUsIDc4LCA5NCwgNTIsIDk0LCAKLSAgICA1LCA3OCwgMjQ1LCA2MSwgNTIsIDI0NSwgNjEsIDUsIDc4LCAyMTcsIDQzLCAyMjcsIDMzLCA1MSwgMjQ5LCAxNjUsIDI0NSwgCi0gICAgNjIsIDExNywgMjQ5LCAxMzQsIDI0NSwgNjEsIDIyMCwgMTAyLCAxMzMsIDI0OSwgMTM0LCAyNDUsIDYxLCAyMjAsIDEwMiwgCi0gICAgMjQ1LCA2MSwgNSwgMiwgMTE3LCAxNzYsIDc4LCAyNCwgMTE3LCAxNzYsIDU1LCAyNDUsIDU3LCAyLCAyNDMsIDIzNywgMTc2LCAKLSAgICA0OSwgMjMzLCAzOSwgMiwgMjQ5LCAyMjksIDIzNSwgMjEyLCAyNDIsIDEwNywgMiwgMjQ5LCAyMjksIDIzNSwgMjEyLCAyMzMsIAotICAgIDM5LCAyLCAyMjQsIDE1OCwgMTUyLCA0OSwgMjQyLCAxMDcsIDIsIDIyNCwgMTU4LCAxNTIsIDQ5LCAyMzMsIDM5LCAxNjcsIAotICAgIDIyMCwgMjUsIDEyMywgMTA4LCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDEwOCwgMjMzLCAzOSwgMTY3LCAyMjAsIAotICAgIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgMjM1LCAyMTIsIDI0MiwgMTA3LCAxNjcsIDIyMCwgMjUsIDEyMywgMjExLCAKLSAgICAyMTEsIDIsIDYyLCAyMzUsIDIxMiwgMjMzLCAzOSwgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIAotICAgIDI0MiwgMTA3LCAxNjcsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDIsIDYyLCA0OSwgMjMzLCAzOSwgMTY3LCAyMjAsIDI1LCAKLSAgICAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNzgsIDIyMywgMTQ4LCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgCi0gICAgMjExLCAyLCA2MiwgNzgsIDIzMywgNzAsIDIzMywgMzksIDE2NywgMjUzLCAyMTksIDI0MiwgMTA3LCAxNjcsIDI1MywgMjE5LCAKLSAgICAyMzMsIDM5LCAyNCwgMjIwLCA3OSwgMjI4LCAxNjMsIDEyMywgMTA4LCAyNDIsIDEwNywgMjQsIDIyMCwgNzksIDIyOCwgCi0gICAgMTYzLCAxMjMsIDEwOCwgMjMzLCAzOSwgMjQsIDIyOCwgMTYzLCAyNTMsIDIxOSwgMjQyLCAxMDcsIDI0LCAyMjgsIDE2MywgCi0gICAgMjUzLCAyMTksIDIzMywgMzksIDc4LCAyNDYsIDY1LCAxMjMsIDc4LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDc4LCAyNDYsIDY1LCAKLSAgICAxMjMsIDc4LCAyMzMsIDM4LCAyMzMsIDM5LCA3OCwgMjIwLCA4OCwgMTY3LCAyNDUsIDYyLCAyNDIsIDEwNywgNzgsIDIyMCwgCi0gICAgODgsIDE2NywgMjQ1LCA2MiwgMjMzLCAzOSwgNzgsIDIyMCwgODgsIDc4LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDc4LCAyMjAsIAotICAgIDg4LCA3OCwgMjMzLCAzOCwgMjMzLCAzOSwgNzgsIDI0MiwgMTA3LCA3OCwgMjQ2LCA2NSwgMjQ1LCA2MiwgMjQyLCAxMDcsIAotICAgIDc4LCAyMzMsIDM5LCA3OCwgMjQ2LCA2NSwgMjQ1LCA2MiwgMjMzLCAzOSwgNzgsIDIyMCwgMjUsIDEyMywgNzgsIDI0MiwgCi0gICAgMTA3LCA3OCwgMjIwLCAyNSwgMjQ1LCA2MiwgMjQyLCAxMDcsIDc4LCAyMjAsIDI1LCAxMjMsIDc4LCAyMzMsIDM5LCA3OCwgCi0gICAgMjIwLCAyNSwgMjQ1LCA2MiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAyMjAsIDI1LCAxMjMsIAotICAgIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzksIDIsIDYyLCAKLSAgICAyMzUsIDIxMiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNywgMiwgNjIsIDIzNSwgMjEyLCAyNDYsIAotICAgIDY1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDI0NiwgNjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIAotICAgIDI0NiwgNjUsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMjQ2LCA2NSwgMjIwLCAyNSwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjIwLCA4OCwgMTY3LCAyMzMsIDM4LCAyMjAsIDg4LCAxNjcsIDI0MiwgMTA2LCAKLSAgICAyMjAsIDg4LCA3OCwgMjMzLCAzOSwgNzgsIDI0NSwgNjEsIDUyLCAyMjAsIDg4LCA3OCwgMjQyLCAxMDcsIDc4LCAyNDUsIAotICAgIDYxLCA1MiwgNTEsIDIyOSwgMTczLCAyMzMsIDM4LCA1MSwgMjI5LCAxNzMsIDI0MiwgMTA2LCA1MSwgMjI5LCAxNzMsIDIzMywgCi0gICAgMzksIDIsIDIxNSwgMTUzLCAyNDIsIDEwNywgMjI2LCAyNDUsIDIzMywgMzgsIDI0MiwgMTA3LCAyNTEsIDIwNywgMjMzLCAKLSAgICAzOCwgMjMzLCAzOSwgMjQ5LCAxOTMsIDI1MSwgNywgMjQ5LCAzNCwgMjQyLCAxMDcsIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgCi0gICAgMzQsIDIzMywgMzksIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzUsIDc4LCAyMjAsIDI1LCAyNDUsIDYyLCAyNDIsIDEwNywgCi0gICAgMjQ5LCAxOTMsIDI1MSwgNywgMjQ5LCAzNSwgNzgsIDIyMCwgMjUsIDI0NSwgNjIsIDIyMCwgNiwgMjE3LCAxNTMsIDIzMywgCi0gICAgMTA2LCAyMTcsIDE1MywgMjIwLCA2LCAyMTcsIDE1NCwgMTY3LCAxMjMsIDEwOCwgMjMzLCAxMDYsIDIxNywgMTU0LCAxNjcsIAotICAgIDEyMywgMTA4LCAyNDUsIDYxLCA1LCAyLCAyNTEsIDM3LCA0OSwgMjI1LCA4MywgNzgsIDIyMCwgNzksIDI0NSwgNjEsIDUyLCAKLSAgICAyMTksIDEsIDc4LCAyMjAsIDc5LCAyNDUsIDYxLCA1MiwgMjI1LCA4MywgNzgsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIAotICAgIDEwOCwgMjE5LCAxLCA3OCwgMjIwLCA3OSwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjQ1LCA2MSwgNTIsIAotICAgIDIxOSwgMSwgNzgsIDI0NSwgNjEsIDUyLCAyMjUsIDgzLCA3OCwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMTksIDEsIDc4LCAKLSAgICAyMjgsIDE2MywgMTIzLCAxMDgsIDIyNSwgODMsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE5LCAxLCA3OCwgMjU0LCA1NywgCi0gICAgMTIzLCAxMDgsIDIyNSwgODMsIDc4LCAyMjgsIDE2MywgMjU0LCA1NywgMTIzLCAxMDgsIDIxOSwgMSwgNzgsIDIyOCwgMTYzLCAKLSAgICAyNTQsIDU3LCAxMjMsIDEwOCwgNTEsIDIyNSwgODIsIDUxLCAyMTksIDAsIDIxOSwgOSwgMiwgMjQ3LCA3NCwgMjE4LCAyMjIsIAotICAgIDIsIDI0NywgNzQsIDIxOSwgOSwgMiwgOTQsIDUsIDU1LCAyMTgsIDIyMiwgMiwgOTQsIDUsIDU1LCAyMTksIDksIDIsIDIzMCwgCi0gICAgMTU0LCA1LCA1NSwgMjE4LCAyMjIsIDIsIDIzMCwgMTU0LCA1LCA1NSwgMjE5LCA5LCA2NSwgMTY3LCAxMjMsIDIxMSwgMjExLCAKLSAgICAyLCA2MiwgNDksIDIxOCwgMjIyLCA2NSwgMTY3LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIDIxOSwgOSwgNjUsIDc4LCAKLSAgICAyNDUsIDYxLCA1MiwgMjE4LCAyMjIsIDY1LCA3OCwgMjQ1LCA2MSwgNTIsIDIxOSwgOSwgNjUsIDc4LCAyMTcsIDQzLCAyMjcsIAotICAgIDMzLCAyMTgsIDIyMiwgNjUsIDc4LCAyMTcsIDQzLCAyMjcsIDMzLCAyMTksIDksIDY1LCA3OCwgMjU0LCA1NywgMTIzLCAKLSAgICAxMDgsIDIxOCwgMjIyLCA2NSwgNzgsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTksIDksIDY1LCA3OCwgMjI4LCAxNjMsIDEyMywgCi0gICAgMTA4LCAyMTgsIDIyMiwgNjUsIDc4LCAyMjgsIDE2MywgMTIzLCAxMDgsIDQxLCA0MiwgMjI3LCA0MCwgOTIsIDIyNywgMzMsIAotICAgIDQxLCA0NiwgMjI3LCA0MCwgOTIsIDIyNywgMzMsIDI0OSwgMTkzLCAyMTksIDgsIDI0OSwgMTkzLCAyMTgsIDIyMSwgMjQ5LCAKLSAgICAxOTMsIDIxOSwgOSwgMTY3LCAxMjMsIDEwOCwgMjQ5LCAxOTMsIDIxOCwgMjIyLCAxNjcsIDEyMywgMTA4LCAyMTksIDksIAotICAgIDc4LCAyMTgsIDIyMSwgMjE4LCAyMjIsIDc4LCAyMTksIDgsIDIxOSwgOSwgNzgsIDIxOSwgOCwgMjE4LCAyMjIsIDc4LCAKLSAgICAyMTgsIDIyMSwgMjE4LCAyMjIsIDI1MSwgMjA3LCAyMTksIDgsIDIxOCwgMjIyLCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIAotICAgIDI1MSwgNywgMjQ4LCAxMDIsIDIsIDIxOSwgOCwgMjQ1LCAxMjcsIDY1LCAyMjcsIDM1LCAyNDYsIDU3LCAyMjUsIDE4MCwgMiwgCi0gICAgMjE3LCAyMjAsIDIxNiwgMjI2LCAyMTYsIDE5OCwgMjM1LCAxOTUsIDI0MywgMjQ2LCAyMjgsIDE3NiwgMjIwLCAxNzUsIDQyLCAKLSAgICAyMTgsIDM2LCAyMjAsIDE3NSwgMTE5LCAyMTgsIDM2LCAyMjAsIDE3NSwgMTE0LCAyMTgsIDM2LCAyMjYsIDQ4LCAyLCAxOTcsIAotICAgIDcxLCAyNTIsIDYwLCAyMTYsIDE2OSwgNDYsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgNDIsIDIxNiwgNTcsIDcxLCAKLSAgICAyNTIsIDYwLCA1MSwgNDIsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgNTEsIDQyLCAyMTYsIDU3LCAxODQsIDI0OCwgCi0gICAgMTAyLCAyNDMsIDIxMywgNDIsIDIzMSwgMTI3LCA2NSwgNTEsIDIxNCwgMjE2LCAyMjAsIDE3NSwgMTE5LCAyMTgsIDM3LCAyLCAKLSAgICAyMjYsIDI0NywgMjIwLCAxNzUsIDExNCwgMjE4LCAzNywgMiwgMjE1LCAxNTMsIDIyMCwgMTc1LCAxMTQsIDIxOCwgMzcsIAotICAgIDc4LCAyMjAsIDE3NSwgMTE5LCAyMTgsIDM2LCA1MSwgMTE5LCAyMTgsIDM2LCA1MSwgMTE0LCAyMTgsIDM2LCA1MSwgMjE5LCAKLSAgICA0NSwgMjI4LCAxNjMsIDUyLCAyMjMsIDIwMiwgNTEsIDIxOSwgNDUsIDIyOCwgMTYzLCA1MiwgMjQ3LCA5MiwgMjI4LCAxNjMsIAotICAgIDI0NywgMTI3LCAyLCAyMjMsIDIwMiwgMjI5LCAxODIsIDIyMCwgMjMsIDcxLCAyMzIsIDI0MywgMiwgMjQ5LCAyMjksIDQ5LCAKLSAgICA3MSwgMjMyLCAyNDMsIDIsIDI0OSwgMjI5LCA1NSwgMTE5LCAyMTgsIDM3LCAyLCAyNDksIDIyOSwgNTUsIDIyNiwgMTM2LCAKLSAgICAyLCAxOTksIDkwLCAyMjYsIDEzNiwgMiwgMjE3LCA0MywgMjI3LCAzMywgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCAyNTEsIAotICAgIDE2NywgMjIzLCAyNDEsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgMiwgMTk5LCA5MCwgMjE2LCAxNjksIDI0OSwgMTY1LCAKLSAgICAyMjcsIDMzLCAyMTYsIDE2OSwgMjI5LCAxNzMsIDIzMywgMzgsIDIxNiwgMTY5LCAyMjksIDE3MywgMjQyLCAxMDYsIDI0NiwgCi0gICAgNjUsIDIyMCwgMjUsIDIzMywgMzksIDE2NywgMTIzLCAxMDgsIDI0NiwgNjUsIDIyMCwgMjUsIDI0MiwgMTA3LCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTYsIDE2OSwgMjE5LCAyMzIsIDI1MSwgMTY3LCAyMjMsIDI0MSwgMjMzLCAxMDgsIDIxNiwgMTY5LCA3MSwgCi0gICAgMjUyLCA2MCwgMjI3LCAzMywgNTEsIDIxOSwgMjMyLCAyMjcsIDMzLCA2NywgNzEsIDEzNCwgMjMwLCA5NywgNjcsIDcxLCAKLSAgICAxMzQsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNjcsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDY3LCA2OCwgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA2NywgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjcsIDY4LCA0MiwgNDYsIDY3LCA2OCwgMTMyLCA4MywgCi0gICAgNjgsIDIxNSwgMTI0LCA4MywgNjgsIDI0NiwgNTgsIDgzLCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA4MywgNjgsIDIyOCwgCi0gICAgMTY3LCAyMTMsIDI1MCwgODMsIDY4LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDgzLCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCAKLSAgICA4MywgNjgsIDQyLCA0NiwgODMsIDY4LCAxMTQsIDExOSwgODMsIDY4LCA5NSwgNzYsIDIsIDIxNywgMzAsIDI0NiwgNTcsIAotICAgIDk1LCA3NiwgMiwgMjE3LCAzMCwgMjE1LCAxMjMsIDEzMiwgNzYsIDIsIDIxNywgMzAsIDI0NiwgNTcsIDEzMiwgNzYsIDIsIAotICAgIDIxNywgMzAsIDIxNSwgMTIzLCA0MSwgMiwgMjE2LCAyMjcsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyNTEsIDEwMSwgMTUxLCAKLSAgICAyNTEsIDE0NCwgNDEsIDIsIDIxNSwgMTMxLCA0NiwgMjQ3LCAyMDcsIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMzIsIDE2MywgCi0gICAgNDIsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgNDIsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCAKLSAgICA0NiwgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIDIxNiwgMjI3LCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgCi0gICAgMjUxLCAxMDEsIDE1MSwgMjUxLCAxNDQsIDI0NiwgNzIsIDIxOSwgMTY2LCA4MywgMjMzLCAxMDgsIDIxOSwgMTY2LCA2NywgCi0gICAgMjMzLCAxMDgsIDIxOSwgMTY2LCA4MywgMjE0LCAxNjQsIDMsIDIxOSwgMTY2LCA2NywgMjE0LCAxNjQsIDMsIDIxOSwgMTY2LCAKLSAgICA4MywgMjI2LCA2NSwgNjcsIDIyNiwgNjUsIDY3LCAyNDEsIDE3OCwgODMsIDI0MSwgMTc4LCAxOTksIDgzLCAyNDEsIDE3OCwgCi0gICAgODMsIDIzMywgMTA4LCAyNDksIDIyOCwgODMsIDIzMSwgMTQ3LCAyNDcsIDIwMCwgNjcsIDIzMSwgMTQ3LCAyNDcsIDIwMCwgCi0gICAgODMsIDIzMSwgMTQ3LCAyMzIsIDE1OSwgNjcsIDIzMSwgMTQ3LCAyMzIsIDE1OSwgODMsIDMsIDI0NywgMjAwLCA4MywgMywgCi0gICAgMjMyLCAxNTksIDY3LCAzLCAyMzIsIDE1OSwgODMsIDE5OSwgMjQ1LCAxMjEsIDY3LCAxOTksIDI0NSwgMTIxLCA4MywgNzEsIAotICAgIDI0NSwgMTIxLCA2NywgNzEsIDI0NSwgMTIxLCA0MiwgNzYsIDIsIDMsIDI0OSwgMjI4LCAxMzMsIDEzMiwgMjUzLCAxNjIsIAotICAgIDQyLCA3NiwgMiwgMzYsIDIyNSwgMTU2LCAxODQsIDEzMiwgMjE5LCAxNjIsIDY4LCAxMzIsIDIxNiwgMjQsIDc2LCAyLCA3MSwgCi0gICAgOTAsIDEzMiwgMjE2LCAyNCwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgMjE2LCAyNCwgNzYsIDI0MywgMjEzLCAxMzQsIAotICAgIDEzMiwgMjE2LCAyNCwgMjE2LCAxNjksIDI0OCwgMTAyLCA2OCwgMTMyLCA3NiwgMiwgMjQ2LCA3MiwgMjE5LCA3OSwgMTMyLCAKLSAgICA3NiwgMiwgMjE4LCAyOCwgMiwgNzEsIDkwLCAxMzIsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDIxNiwgCi0gICAgMjQsIDc2LCAyLCAyMTgsIDI3LCAxMzIsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA3MSwgOTAsIDEzMiwgMjE2LCAKLSAgICAyNCwgNzYsIDIsIDIxOCwgMjgsIDIsIDUxLCA3MSwgOTAsIDEzMiwgNzYsIDIxNywgOTMsIDIxMywgMTY2LCAyMTQsIDIwLCAKLSAgICA3NiwgMjI1LCAxNDEsIDI0NywgMTQ3LCAyMzMsIDcwLCAyNDUsIDYxLCA1LCA3OCwgMTMyLCA2OCwgMjIzLCAyMDMsIDIxNywgCi0gICAgNDMsIDIyNywgMzQsIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCA3OCwgMjIzLCAyMDMsIDI1NCwgNTcsIDEyMywgMTA4LCA5NSwgCi0gICAgNzYsIDIxNywgOTMsIDI0MiwgMTA2LCA5NSwgNzYsIDIxNywgOTMsIDIxOCwgMjIxLCAxMzIsIDIyNCwgMTY5LCA2OCwgOTUsIAotICAgIDIyNCwgMTY5LCA2OCwgMjIzLCAyMDMsIDIxNywgNDMsIDIyNywgMzQsIDc4LCA5NSwgNjgsIDk1LCA3NiwgNzgsIDIyMywgCi0gICAgMjAzLCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE3LCA0MywgMjI3LCAzNCwgNzgsIDEzMiwgNjgsIDEzMiwgNzYsIDc4LCAyNTQsIAotICAgIDU3LCAxMjMsIDEwOCwgMTMyLCA3NiwgNzgsIDIyMywgMjAzLCAyMTcsIDQzLCAyMjcsIDMzLCA5NSwgNzYsIDc4LCAyMjMsIAotICAgIDIwMywgMjE3LCA0MywgMjI3LCAzMywgNjcsIDIzMSwgMTQ3LCAyMTksIDk1LCA4MywgMywgMjE5LCA5NSwgNjcsIDMsIDIxOSwgCi0gICAgOTUsIDgzLCAyMjMsIDE0NCwgMjI2LCA2NSwgNjcsIDIyMywgMTQ0LCAyMjYsIDY1LCAxMDcsIDIzMywgMTA4LCAyNDksIAotICAgIDIyOCwgMTA3LCAyMjYsIDI0OCwgMiwgMjI2LCAyNDgsIDIzNSwgMjEyLCAxMDcsIDI0OSwgMjI5LCAyLCAyNDksIDIyOSwgCi0gICAgMjM1LCAyMTIsIDEwNywgMjQ5LCAyMjgsIDEwNywgMzYsIDIyMiwgMTY5LCAxMzYsIDYsIDEsIDI1MywgNzUsIDEzNiwgNiwgCi0gICAgMSwgMjUxLCA0NiwgMTM2LCA2LCAxLCAyMTQsIDIzMCwgMTM2LCA2LCAxLCAyNDIsIDE2MSwgMTM2LCA2LCAxLCAyNDcsIDk0LCAKLSAgICAxMzYsIDYsIDEsIDIxMywgMTIsIDEzNiwgNiwgMSwgMjEyLCA2MSwgMTM2LCA2LCAxLCAyNDUsIDI0NSwgMTM2LCA2LCAxLCAKLSAgICAyMTIsIDg0LCAxMzYsIDYsIDEsIDIzNSwgMTQ2LCAxMzYsIDYsIDEsIDcwLCAyMzUsIDE0NiwgMTM2LCA2LCAxLCA3MiwgCi0gICAgMTM2LCA2LCAxLCAyNDcsIDExMiwgMTM2LCA2LCAxLCAyMzQsIDI0NSwgMTM2LCA2LCAxLCAyMzIsIDIxNSwgMTM2LCA2LCAxLCAKLSAgICAyMzAsIDEwMSwgMTM2LCA2LCAxLCAyMzAsIDEyLCAxMzYsIDYsIDEsIDIyNywgNTEsIDEzNiwgNiwgMSwgMjI1LCAxMzgsIAotICAgIDEzNiwgNiwgMSwgMjIzLCAxMjQsIDEzNiwgNiwgMSwgMjIwLCAxMSwgMTM2LCA2LCAxLCAyMTYsIDQ2LCAxMzYsIDYsIDEsIAotICAgIDIxNSwgMTcxLCAxMzYsIDYsIDEsIDI0MywgMjE2LCAxMzYsIDYsIDEsIDI0MSwgMTg0LCAxMzYsIDYsIDEsIDIyNywgMywgCi0gICAgMTM2LCA2LCAxLCAyMjYsIDk2LCAxMzYsIDYsIDEsIDIyMCwgMTUzLCAxMzYsIDYsIDEsIDIxNiwgMTI1LCAxMzYsIDYsIDEsIAotICAgIDI1MCwgMTIsIDEzNiwgNiwgMSwgMjIxLCAyNCwgMTM2LCA2LCAxLCAyMTMsIDE4LCAxMzYsIDYsIDEsIDIxMywgMjAsIDEzNiwgCi0gICAgNiwgMSwgMjEzLCA0NywgMTM2LCA2LCAxLCAyMTksIDE4NSwgMTU5LCAxMzYsIDYsIDEsIDIxMiwgMjAzLCAxMzYsIDYsIDEsIAotICAgIDMsIDIxMiwgMTc0LCAxMzYsIDYsIDEsIDMsIDIxMiwgMTc1LCAyLCAyMTgsIDI3LCAxMzYsIDYsIDEsIDIxMiwgMjM1LCAKLSAgICAxMzYsIDYsIDEsIDIzNSwgMTgyLCAzLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgNiwgCi0gICAgMSwgMjM1LCAxODIsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAyNDQsIDUxLCAxMzYsIDYsIDEsIDIzNSwgMTQ0LCAKLSAgICAxMzYsIDYsIDEsIDIyMCwgMTUyLCAxMzYsIDYsIDEsIDIxNiwgMTYwLCA2MSwgMTM2LCA2LCAxLCAyMzMsIDk4LCAyMzAsIAotICAgIDEwMSwgMTM2LCAzLCAxLCAyNTMsIDc1LCAxMzYsIDMsIDEsIDI1MSwgNDYsIDEzNiwgMywgMSwgMjE0LCAyMzAsIDEzNiwgMywgCi0gICAgMSwgMjQyLCAxNjEsIDEzNiwgMywgMSwgMjQ3LCA5NCwgMTM2LCAzLCAxLCAyMTMsIDEyLCAxMzYsIDMsIDEsIDIxMiwgNjEsIAotICAgIDEzNiwgMywgMSwgMjQ1LCAyNDUsIDEzNiwgMywgMSwgMjEyLCA4NCwgMTM2LCAzLCAxLCAyMzUsIDE0NiwgMTM2LCAzLCAxLCAKLSAgICA3MCwgMjM1LCAxNDYsIDEzNiwgMywgMSwgNzIsIDEzNiwgMywgMSwgMjQ3LCAxMTIsIDEzNiwgMywgMSwgMjM0LCAyNDUsIAotICAgIDEzNiwgMywgMSwgMjMyLCAyMTUsIDEzNiwgMywgMSwgMjMwLCAxMDEsIDEzNiwgMywgMSwgMjMwLCAxMiwgMTM2LCAzLCAxLCAKLSAgICAyMjcsIDUxLCAxMzYsIDMsIDEsIDIyNSwgMTM4LCAxMzYsIDMsIDEsIDIyMywgMTI0LCAxMzYsIDMsIDEsIDIyMCwgMTEsIAotICAgIDEzNiwgMywgMSwgMjE2LCA0NiwgMTM2LCAzLCAxLCAyMTUsIDE3MSwgMTM2LCAzLCAxLCAyNDMsIDIxNiwgMTM2LCAzLCAxLCAKLSAgICAyNDEsIDE4NCwgMTM2LCAzLCAxLCAyMjcsIDMsIDEzNiwgMywgMSwgMjI2LCA5NiwgMTM2LCAzLCAxLCAyMjAsIDE1MywgCi0gICAgMTM2LCAzLCAxLCAyMTYsIDEyNSwgMTM2LCAzLCAxLCAyNTAsIDEyLCAxMzYsIDMsIDEsIDIyMSwgMjQsIDEzNiwgMywgMSwgCi0gICAgMjEzLCAxOCwgMTM2LCAzLCAxLCAyMTMsIDIwLCAxMzYsIDMsIDEsIDIxMywgNDcsIDEzNiwgMywgMSwgMjE5LCAxODUsIAotICAgIDE1OSwgMTM2LCAzLCAxLCAyMTIsIDIwMywgMTM2LCAzLCAxLCAzLCAyMTIsIDE3NCwgMTM2LCAzLCAxLCAzLCAyMTIsIDE3NSwgCi0gICAgMiwgMjE4LCAyNywgMTM2LCAzLCAxLCAyMTIsIDIzNSwgMTM2LCAzLCAxLCAyMzUsIDE4MiwgMywgMjEyLCAxNzQsIDEzNiwgCi0gICAgMywgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIDMsIDEsIDIzNSwgMTgyLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgCi0gICAgMywgMSwgMjQ0LCA1MSwgMTM2LCAzLCAxLCAyMzUsIDE0NCwgMTM2LCAzLCAxLCAyMjAsIDE1MiwgMTM2LCAzLCAxLCAyMTYsIAotICAgIDE2MCwgNjEsIDEzNiwgMywgMSwgMjMzLCA5OCwgMjMwLCAxMDEsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCA1MSwgMTM0LCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgNTEsIDEzNCwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDYsIAotICAgIDEsIDIyNiwgMjMwLCAyLCA5MCwgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDExOCwgMiwgOTAsIAotICAgIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI0NywgMjQ2LCA3LCAzLCAKLSAgICAxLCAyNDIsIDQyLCAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjQ3LCAyNDYsIDcsIDMsIDEsIDIzNSwgMjgsIAotICAgIDIsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjQ3LCAyNDYsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDcsIAotICAgIDI0NiwgNywgNiwgMSwgMjU0LCA1MiwgNywgNiwgMSwgMjMyLCAxMTAsIDIsIDEwMSwgNywgNiwgMSwgMjE2LCA1OCwgNjEsIAotICAgIDcsIDYsIDEsIDIxNiwgNTgsIDI1NCwgNTIsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDQ2LCAxMDEsIDcsIDYsIDEsIDIxNCwgCi0gICAgODMsIDIsIDEwMSwgNywgMywgMSwgMjE0LCA4MywgMiwgMTAxLCA3LCAzLCAxLCAyMTUsIDgwLCAyLCAyNDksIDQxLCA3LCA2LCAKLSAgICAxLCAxNTEsIDI0MiwgNDEsIDcsIDMsIDEsIDE1MSwgMjQyLCA0MSwgNywgMywgMSwgMjE4LCAyNSwgMjI2LCA5LCA3LCAzLCAKLSAgICAxLCAxOTEsIDIsIDIyOCwgMTYxLCA3LCAzLCAxLCAyMTYsIDU4LCAyMjQsIDExMywgMiwgMjE4LCAyNywgNywgMywgMSwgCi0gICAgMTU3LCAyLCAxMTUsIDIyMywgMTMxLCAyMzUsIDIxMiwgNywgMSwgMywgNiwgMjE2LCA1OCwgNzQsIDcsIDIxOSwgMTAsIDMsIAotICAgIDEsIDIzNSwgMTQyLCA1OSwgMSwgNiwgMjE1LCA3OSwgNywgNiwgMSwgMjIzLCA0LCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNywgCi0gICAgNiwgMSwgMjEyLCAxNTMsIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3OSwgNiwgMSwgMjU0LCA3MywgNzksIDMsIDEsIDI1NCwgCi0gICAgNzMsIDc5LCA2LCAxLCAyMTQsIDE1MSwgNzksIDMsIDEsIDIxNCwgMTUxLCA3OSwgNiwgMSwgMjQzLCA4MywgNzksIDMsIDEsIAotICAgIDI0MywgODMsIDc5LCA2LCAxLCAyNDgsIDEzNiwgNzksIDMsIDEsIDI0OCwgMTM2LCA3OSwgNiwgMSwgMjQ1LCAxNTEsIDc5LCAKLSAgICAzLCAxLCAyNDUsIDE1MSwgNzksIDYsIDEsIDIxOSwgMjIwLCA3OSwgMywgMSwgMjE5LCAyMjAsIDc5LCA2LCAxLCAyMTIsIAotICAgIDk0LCA3OSwgMywgMSwgMjEyLCA5NCwgNzksIDYsIDEsIDI0MSwgMjMxLCA3OSwgMywgMSwgMjQxLCAyMzEsIDc5LCA2LCAxLCAKLSAgICAyMTcsIDEzMCwgNzksIDMsIDEsIDIxNywgMTMwLCA3OSwgNiwgMSwgMjQwLCAxMDksIDc5LCAzLCAxLCAyNDAsIDEwOSwgNzksIAotICAgIDYsIDEsIDIzNCwgMjMyLCA3OSwgMywgMSwgMjM0LCAyMzIsIDc5LCA2LCAxLCAyMzMsIDk2LCA3OSwgMywgMSwgMjMzLCA5NiwgCi0gICAgNzksIDYsIDEsIDIzMSwgNDIsIDc5LCAzLCAxLCAyMzEsIDQyLCA3OSwgNiwgMSwgMjI5LCA2NCwgNzksIDMsIDEsIDIyOSwgCi0gICAgNjQsIDc5LCA2LCAxLCAyMzMsIDI0MiwgNzksIDMsIDEsIDIzMywgMjQyLCA3OSwgNiwgMSwgNzUsIDc5LCAzLCAxLCA3NSwgCi0gICAgNzksIDYsIDEsIDIyNSwgMjQwLCA3OSwgMywgMSwgMjI1LCAyNDAsIDc5LCA2LCAxLCAyMjMsIDExMiwgNzksIDMsIDEsIAotICAgIDIyMywgMTEyLCA3OSwgNiwgMSwgMjIwLCA5MSwgNzksIDMsIDEsIDIyMCwgOTEsIDc5LCA2LCAxLCAyMTcsIDI0OCwgNzksIAotICAgIDMsIDEsIDIxNywgMjQ4LCA3OSwgNiwgMSwgMjE1LCAxOTYsIDc5LCAzLCAxLCAyMTUsIDE5NiwgNzksIDYsIDEsIDI0NCwgCi0gICAgOTAsIDc5LCAzLCAxLCAyNDQsIDkwLCA3OSwgNiwgMSwgMjM0LCAxMTgsIDc5LCAzLCAxLCAyMzQsIDExOCwgNzksIDYsIDEsIAotICAgIDIyNSwgNDYsIDc5LCAzLCAxLCAyMjUsIDQ2LCA3OSwgNiwgMSwgMjI3LCA0NCwgNzksIDMsIDEsIDIyNywgNDQsIDc5LCA2LCAKLSAgICAxLCAyNDcsIDIwNSwgMjU0LCA3OCwgNzksIDMsIDEsIDI0NywgMjA1LCAyNTQsIDc4LCA3OSwgNiwgMSwgNTMsIDc5LCAyNTQsIAotICAgIDEwMywgNzksIDMsIDEsIDUzLCA3OSwgMjU0LCAxMDMsIDc5LCA2LCAxLCAyNDksIDU1LCAyNDUsIDE1MSwgNzksIDMsIDEsIAotICAgIDI0OSwgNTUsIDI0NSwgMTUxLCA3OSwgNiwgMSwgMjQ3LCAyMDUsIDIzNCwgMjMyLCA3OSwgMywgMSwgMjQ3LCAyMDUsIDIzNCwgCi0gICAgMjMyLCA3OSwgNiwgMSwgMjQ3LCAyMDUsIDIyOSwgNjQsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjI5LCA2NCwgNzksIDYsIDEsIAotICAgIDI0OSwgNTUsIDIyOSwgNjQsIDc5LCAzLCAxLCAyNDksIDU1LCAyMjksIDY0LCA3OSwgNiwgMSwgNTMsIDc5LCAyMjcsIDQ0LCAKLSAgICA3OSwgMywgMSwgNTMsIDc5LCAyMjcsIDQ0LCA3OSwgNiwgMSwgMjIyLCAxNjEsIDc5LCAzLCAxLCAyMjIsIDE2MSwgNzksIDYsIAotICAgIDEsIDI0OSwgNjgsIDIyMCwgMjM1LCA3OSwgMywgMSwgMjQ5LCA2OCwgMjIwLCAyMzUsIDc5LCA2LCAxLCA1MywgNzksIDIyMCwgCi0gICAgMjM1LCA3OSwgMywgMSwgNTMsIDc5LCAyMjAsIDIzNSwgNzksIDYsIDEsIDUzLCA3OSwgMjQ1LCA0MCwgNzksIDMsIDEsIDUzLCAKLSAgICA3OSwgMjQ1LCA0MCwgNzksIDYsIDEsIDI1NCwgOTAsIDIzNCwgMTIzLCA3OSwgMywgMSwgMjU0LCA5MCwgMjM0LCAxMjMsIAotICAgIDc5LCA2LCAxLCAyNDcsIDIwNSwgMjQxLCAzMiwgNzksIDMsIDEsIDI0NywgMjA1LCAyNDEsIDMyLCA3OSwgNiwgMSwgNTMsIAotICAgIDc5LCAyNDEsIDMyLCA3OSwgMywgMSwgNTMsIDc5LCAyNDEsIDMyLCA3OSwgNiwgMSwgNTMsIDc5LCAxNTksIDc5LCAzLCAxLCAKLSAgICA1MywgNzksIDE1OSwgNzksIDYsIDEsIDIzMywgMTcwLCAxNTksIDc5LCAzLCAxLCAyMzMsIDE3MCwgMTU5LCA3OSwgNiwgMSwgCi0gICAgNTMsIDc5LCAyNDEsIDIwMSwgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAyMDEsIDc5LCA2LCAxLCA1MywgNzksIDI0MSwgMjM0LCAKLSAgICA3OSwgMywgMSwgNTMsIDc5LCAyNDEsIDIzNCwgNzksIDYsIDEsIDUzLCA3OSwgMjQzLCA3OCwgNzksIDMsIDEsIDUzLCA3OSwgCi0gICAgMjQzLCA3OCwgNzksIDYsIDEsIDUzLCA3OSwgMjQ3LCAxMTUsIDc5LCAzLCAxLCA1MywgNzksIDI0NywgMTE1LCA3OSwgNiwgCi0gICAgMSwgNTMsIDc5LCAyMjAsIDIwMiwgNzksIDMsIDEsIDUzLCA3OSwgMjIwLCAyMDIsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgCi0gICAgMjIwLCAyMDIsIDc5LCAzLCAxLCA1MywgMjI4LCA2MywgMjIwLCAyMDIsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgMjI5LCAKLSAgICAxMTMsIDc5LCAzLCAxLCA1MywgMjI4LCA2MywgMjI5LCAxMTMsIDc5LCA2LCAxLCA1MywgMjI4LCA2MywgMjI4LCAxMCwgNzksIAotICAgIDMsIDEsIDUzLCAyMjgsIDYzLCAyMjgsIDEwLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIxNCwgMjEsIDc5LCAzLCAxLCA1MywgCi0gICAgMjI4LCA2MywgMjE0LCAyMSwgNzksIDE2LCAyMzQsIDI1MCwgNzksIDE2LCAyMzEsIDQzLCAyMjMsIDExMiwgNzksIDE2LCAKLSAgICAyMjUsIDI0MSwgMjIzLCAxMTIsIDc5LCAxNiwgMjE5LCA4NywgNzksIDE2LCAyMTcsIDI0OSwgMjIzLCAxMTIsIDc5LCAxNiwgCi0gICAgMjM0LCAxMTksIDIyMywgMTEyLCA3OSwgMTYsIDIyMCwgMjAzLCAyMjAsIDkxLCA3OSwgNiwgMSwgMjQ5LCA1NSwgMjIwLCAKLSAgICAyMzUsIDc5LCAzLCAxLCAyNDksIDU1LCAyMjAsIDIzNSwgNzksIDYsIDEsIDI0OSwgNTUsIDI0MywgNzgsIDc5LCAzLCAxLCAKLSAgICAyNDksIDU1LCAyNDMsIDc4LCA3OSwgMzcsIDIyOSwgNjUsIDQ5LCA3OSwgMzcsIDIxOSwgMTc5LCAyNTMsIDEzOSwgNzksIAotICAgIDM3LCAyMTksIDE3OSwgMjMzLCA0NSwgNzksIDUzLCAyMjgsIDYzLCAyNDMsIDIwMCwgMjE5LCA2OSwgNzksIDUzLCAyMjgsIAotICAgIDYzLCAyNDcsIDE0OSwgMjI0LCAxNTgsIDc3LCA3OSwgNTMsIDIyOCwgNjMsIDIzNSwgMjM0LCAyMjQsIDE1OCwgNzcsIDc5LCAKLSAgICA1MywgMjI4LCA2MywgMjE0LCAyMTgsIDI0NywgMTI0LCA3OSwgMjQzLCAyMjgsIDEyMiwgMjQyLCA5LCA3OSwgMjQzLCAyMDAsIAotICAgIDIxOSwgNjksIDc5LCAyMzAsIDE5NCwgMjQ3LCAxMjQsIDEwMCwgMywgMSwgMjU0LCAzMiwgMTAwLCAzLCAxLCAyNTIsIDcxLCAKLSAgICAxMDAsIDMsIDEsIDI0MywgODIsIDEwMCwgMywgMSwgMjQ3LCA4MiwgMTAwLCAzLCAxLCAyNDUsIDEwOCwgMTAwLCAzLCAxLCAKLSAgICAyMTQsIDE0MSwgMTAwLCAzLCAxLCAyMTIsIDgyLCAxMDAsIDMsIDEsIDIxOCwgMTEsIDEwMCwgMywgMSwgMjM1LCAyNTEsIAotICAgIDEwMCwgMywgMSwgMjM0LCAyMzksIDEwMCwgMywgMSwgMjMzLCAxMDQsIDEwMCwgMywgMSwgMjMxLCAyNDgsIDEwMCwgMywgMSwgCi0gICAgMjMwLCAxNSwgMTAwLCAzLCAxLCAyMjcsIDYyLCAxMDAsIDMsIDEsIDIyNiwgMTQ1LCAxMDAsIDMsIDEsIDIxMiwgNzEsIAotICAgIDEwMCwgMywgMSwgMjI0LCA2MSwgMTAwLCAzLCAxLCAyMjIsIDE1OSwgMTAwLCAzLCAxLCAyMTgsIDEsIDEwMCwgMywgMSwgCi0gICAgMjE1LCAxNjAsIDEwMCwgMywgMSwgMjI2LCAxNiwgMTAwLCAzLCAxLCAyMzQsIDEyNywgMTAwLCAzLCAxLCAyNDIsIDIxNywgCi0gICAgMTAwLCAzLCAxLCAyMjQsIDIxNywgMTAwLCAzLCAxLCAyMjAsIDIwMCwgMTAwLCAzLCAxLCAyNTAsIDM0LCAxMDAsIDMsIDEsIAotICAgIDI1MCwgMTk1LCAxMDAsIDMsIDEsIDIzNSwgMTAzLCAxMDAsIDMsIDEsIDI0OSwgMjMzLCAxMDAsIDMsIDEsIDI1MCwgNzksIAotICAgIDEwMCwgMywgMSwgMjEzLCAxNTEsIDEwMCwgMywgMSwgMjM1LCAxMTMsIDEwMCwgMywgMSwgMjQyLCAyNCwgMTAwLCAzLCAxLCAKLSAgICAyNDEsIDIyMiwgMTAwLCAzLCAxLCAyNDEsIDE2MCwgMTAwLCAzLCAxLCAyMTQsIDYsIDEwMCwgMywgMSwgMjQxLCAyNDMsIAotICAgIDEwMCwgMywgMSwgMjQxLCA1MSwgMjE3LCA2MiwgMSwgMTg2LCAyMTcsIDYyLCAxLCAyMTMsIDg3LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDg2LCAyMTcsIDYyLCAxLCAyMTMsIDc2LCAyMTcsIDYyLCAxLCAyMTMsIDc0LCAyMTcsIDYyLCAxLCAyNTEsIDIwOSwgCi0gICAgMjU0LCAxNzYsIDIxMywgNzAsIDIxNywgNjIsIDEsIDIxMywgNzAsIDIxNywgNjIsIDEsIDIxMywgODQsIDIxNywgNjIsIDEsIAotICAgIDIxMywgODEsIDIxNywgNjIsIDEsIDIxMywgODMsIDIxNywgNjIsIDEsIDIxMywgODIsIDIxNywgNjIsIDEsIDIxMywgMywgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA3OCwgMjE3LCA2MiwgMSwgMjEzLCA2OCwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA2OCwgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA2NSwgMjE3LCA2MiwgMSwgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjUxLCAyMDksIDI1NCwgMTc2LCAKLSAgICAyMTMsIDcyLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDcyLCAyMTcsIDYyLCAxLCAyMTMsIDcxLCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDkxLCAyMTcsIDYyLCAxLCAyMTMsIDY2LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDY2LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDU2LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDU2LCAyMTcsIDYyLCAxLCAyMTIsIDI1NSwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA0MCwgMjE3LCA2MiwgMSwgMjU0LCAxMTIsIDIxMywgNDAsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNDAsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNjQsIDIxNywgNjIsIDEsIDIxMywgNjMsIDIxNywgNjIsIDEsIDIxMywgNjAsIDIxNywgNjIsIAotICAgIDEsIDIxNiwgNzksIDIxMywgNzMsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNTgsIDIxNywgNjIsIDEsIDIxMywgNTcsIAotICAgIDIxNywgNjIsIDEsIDIxMiwgMjAzLCAyMTcsIDYyLCAxLCAyMTMsIDU0LCAyMTcsIDYyLCAxLCAyMTMsIDUzLCAyMTcsIDYyLCAKLSAgICAxLCAyMTMsIDc1LCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDc1LCAyMTcsIDYyLCAxLCAyNTMsIDc5LCAyMTMsIDc1LCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDUyLCAyMTcsIDYyLCAxLCAyMTMsIDUwLCAyMTcsIDYyLCAxLCAyMTMsIDUxLCAyMTcsIDYyLCAKLSAgICAxLCAyMTMsIDQ5LCAyMTcsIDYyLCAxLCAyMTMsIDQ4LCAyMTcsIDYyLCAxLCAyMTMsIDg1LCAyMTcsIDYyLCAxLCAyMTMsIAotICAgIDQ2LCAyMTcsIDYyLCAxLCAyMTMsIDQ1LCAyMTcsIDYyLCAxLCAyMTMsIDQ0LCAyMTcsIDYyLCAxLCAyMTMsIDQzLCAyMTcsIAotICAgIDYyLCAxLCAyMTMsIDQxLCAyMTcsIDYyLCAxLCAyMTcsIDI0MSwgMjEzLCA0MSwgMjE3LCA2MiwgMSwgMjEzLCAzOSwgMjE3LCAKLSAgICA2MiwgNTksIDEsIDIzMywgMTQ5LCA3NywgMjE3LCA2MiwgMjIxLCA1OCwgNzcsIDIxNywgNjIsIDI0OSwgMTMzLCAyMzUsIAotICAgIDY2LCAyOCwgNCwgMjMyLCAyMDcsIDI4LCA0LCAyMzAsIDIzMCwgMjgsIDQsIDIyMywgMTEwLCAyOCwgNCwgMjE5LCAyNDEsIAotICAgIDI4LCA0LCAyMjAsIDE4NiwgMjgsIDQsIDI1MSwgMTI3LCAyOCwgNCwgMjE2LCAyNTIsIDI4LCA0LCAyNDksIDE3NCwgMjgsIAotICAgIDQsIDIyOCwgMTgzLCAyOCwgNCwgMjI3LCAyNTIsIDI4LCA0LCAyNDIsIDE1NiwgMjI3LCAxMjAsIDI4LCA0LCAyMTIsIDE1LCAKLSAgICAyOCwgNCwgMjQ3LCA5NywgMjgsIDQsIDI0OCwgNTUsIDI4LCA0LCAyMzUsIDcwLCAyOCwgNCwgMjE3LCAxMDgsIDI4LCA0LCAKLSAgICAyNTAsIDIyLCAyOCwgNCwgMjI1LCAyNTIsIDI4LCA0LCAyMjUsIDE0OSwgMjgsIDQsIDI0MiwgMjMxLCAyOCwgNCwgMjQyLCAKLSAgICAyMjcsIDI4LCA0LCAyNDIsIDIyOCwgMjgsIDQsIDI0MiwgMjI5LCAyOCwgNCwgMjE5LCAxNTcsIDI4LCA0LCAyMTksIDExNywgCi0gICAgMjgsIDQsIDIxOSwgMTI4LCAyOCwgNCwgMjE5LCAxNTYsIDI4LCA0LCAyMTksIDEzMiwgMjgsIDQsIDIxOSwgMTMzLCAyOCwgCi0gICAgNCwgMjE5LCAxMjEsIDI4LCA0LCAyNTAsIDE0NiwgMjgsIDQsIDI1MCwgMTI2LCAyOCwgNCwgMjUwLCAxMjgsIDI4LCA0LCAKLSAgICAyNTAsIDE0NSwgMjgsIDQsIDI1MCwgMTQzLCAyOCwgNCwgMjUwLCAxNDQsIDI4LCA0LCAyNTAsIDEyNywgMjgsIDQsIDIxMSwgCi0gICAgMjQyLCAyOCwgNCwgMjExLCAyMjIsIDI4LCA0LCAyMTEsIDIzMywgMjgsIDQsIDIxMSwgMjQxLCAyOCwgNCwgMjExLCAyMzYsIAotICAgIDI4LCA0LCAyMTEsIDIzNywgMjgsIDQsIDIxMSwgMjI1LCAyOCwgNCwgMjUwLCAxNDIsIDI4LCA0LCAyNTAsIDEyOSwgMjgsIAotICAgIDQsIDI1MCwgMTMxLCAyOCwgNCwgMjUwLCAxNDEsIDI4LCA0LCAyNTAsIDEzOSwgMjgsIDQsIDI1MCwgMTQwLCAyOCwgNCwgCi0gICAgMjUwLCAxMzAsIDI4LCA0LCAyMjQsIDEyNSwgMjgsIDQsIDIyNCwgMTE1LCAyOCwgNCwgMjI0LCAxMjEsIDI4LCA0LCAyMjQsIAotICAgIDEyNCwgMjgsIDQsIDIyNCwgMTIyLCAyOCwgNCwgMjI0LCAxMjMsIDI4LCA0LCAyMjQsIDEyMCwgMjgsIDQsIDIzMywgMTgxLCAKLSAgICAyOCwgNCwgMjMzLCAxNzMsIDI4LCA0LCAyMzMsIDE3NiwgMjgsIDQsIDIzMywgMTgwLCAyOCwgNCwgMjMzLCAxNzcsIDI4LCAKLSAgICA0LCAyMzMsIDE3OCwgMjgsIDQsIDIzMywgMTc0LCAyOCwgNCwgMjEzLCAxMTgsIDI4LCA0LCAyMTMsIDEwOCwgMjgsIDQsIAotICAgIDIxMywgMTE0LCAyOCwgNCwgMjEzLCAxMTcsIDI4LCA0LCAyMTMsIDExNSwgMjgsIDQsIDIxMywgMTE2LCAyOCwgNCwgMjEzLCAKLSAgICAxMTMsIDI4LCA0LCAyNDIsIDUyLCAyOCwgNCwgMjQyLCA0MywgMjgsIDQsIDI0MiwgNDYsIDI4LCA0LCAyNDIsIDUxLCAyOCwgCi0gICAgNCwgMjQyLCA0OCwgMjgsIDQsIDI0MiwgNDksIDI4LCA0LCAyNDIsIDQ1LCAzNywgMzMsIDEsIDI1MSwgMjUxLCAzNywgMzMsIAotICAgIDEsIDIxNCwgMjMyLCAzNywgMzMsIDEsIDI0MiwgMjEyLCAzNywgMzMsIDEsIDI0OCwgNDEsIDM3LCAzMywgMSwgMjEyLCA2NywgCi0gICAgMzcsIDMzLCAxLCAyMTIsIDg3LCAzNywgMzMsIDEsIDE4MSwgMzcsIDMzLCAxLCAyNDUsIDEzMSwgMzcsIDMzLCAxLCAyNDUsIAotICAgIDExNywgMzcsIDMzLCAxLCAyNDUsIDEwOCwgMzcsIDMzLCAxLCA3NSwgMzcsIDMzLCAxLCAyMjYsIDk2LCAzNywgMzMsIDEsIAotICAgIDI0NSwgNTUsIDM3LCAzMywgMSwgMjQ1LCA0NSwgMzcsIDMzLCAxLCAyMTcsIDIyOSwgMzcsIDMzLCAxLCAxNTksIDM3LCAzMywgCi0gICAgMSwgMjE2LCAxMzYsIDM3LCAzMywgMSwgMjUwLCA2NywgMzcsIDMzLCAxLCAyMjEsIDI0LCAzNywgMzMsIDEsIDIyMCwgMjQ1LCAKLSAgICAzNywgMzMsIDEsIDI0NCwgNTEsIDM3LCAzMywgMSwgMjQ1LCA0NCwgMzcsIDMzLCAxLCA2MSwgMzcsIDMzLCAxLCAyMzYsIAotICAgIDU1LCAzNywgMzMsIDEsIDI0NywgMTEzLCAzNywgMzMsIDEsIDIzMCwgMjEwLCAyMTUsIDE3NSwgMzcsIDMzLCAxLCAyMTMsIAotICAgIDQ5LCAzNywgMzMsIDEsIDIxMiwgMjAzLCAzNywgMzMsIDEsIDIzNSwgMTgxLCA2MSwgMzcsIDMzLCAxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDM3LCAzMywgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzNywgMzMsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgCi0gICAgMjEyLCAxNzQsIDQ2LCAyNTQsIDE5LCAyMTksIDUsIDIzMSwgMjE3LCA0NiwgMjU0LCAxOSwgMjQ2LCA3MiwgMjE5LCA1LCAKLSAgICAyMzEsIDIxNywgNDIsIDIxOSwgNSwgMTI1LCA0NiwgMjE5LCA1LCAxMjUsIDQyLCAyNDYsIDcyLCAyMTksIDUsIDEyNSwgNDYsIAotICAgIDI0NiwgNzIsIDIxOSwgNSwgMTI1LCAyMjQsIDQ4LCAyMzUsIDE5OSwgMjMxLCAyMTcsIDIyNCwgNDgsIDI0NiwgNzIsIDIzNSwgCi0gICAgMTk5LCAyMzEsIDIxNywgMjQ2LCA3MiwgMjE2LCAxOTksIDIzMSwgMjE3LCA0MiwgMjE2LCAxOTksIDEyNSwgNDYsIDIxNiwgCi0gICAgMTk5LCAxMjUsIDIyNCwgNDgsIDIxOSwgMTY2LCA0MiwgMjI0LCA0OCwgMjI3LCA2NCwgMTI1LCA0NiwgMjI0LCA0OCwgMjI3LCAKLSAgICA2NCwgMTI1LCAyNDUsIDE2NiwgMjQ5LCA5NywgMjI2LCAxNDEsIDI0MywgMjQ3LCAyMjYsIDE0MSwgMjIzLCAyMDIsIDI0MywgCi0gICAgMjQ3LCAyMjYsIDE0MSwgMjQwLCAxNTcsIDI0NiwgNzIsIDIyNywgMTE1LCAyNDYsIDU4LCAyNTQsIDI4LCAyMTUsIDEyNCwgCi0gICAgMjU0LCAyOCwgMjQ2LCA3MiwgMjIzLCAxNDQsIDI1NCwgMTgsIDUxLCAyMjcsIDExMiwgMjQwLCAxNjAsIDIzNSwgMTkxLCAKLSAgICAyMzUsIDE5OCwgMjI2LCAxODYsIDI1MSwgODEsIDI0MCwgMTYxLCAyLCAyNDcsIDIwOSwgMjE3LCA0MywgMiwgMjIzLCAxMzEsIAotICAgIDQ5LCA0MiwgMTE1LCAyMjYsIDEzMywgMTI1LCA0NiwgMTE1LCAyMjYsIDEzMywgMTI1LCAyMTcsIDQzLCAyLCA2MiwgNDksIAotICAgIDIxNywgNDMsIDIsIDYyLCA1NSwgNDIsIDcxLCAyNTIsIDYwLCAyLCAyMjQsIDE1MiwgNDYsIDcxLCAyNTIsIDYwLCAyLCAKLSAgICAyMjQsIDE1MiwgMjE2LCAyMjcsIDQyLCAxNTEsIDEyNSwgMjE2LCAyMjcsIDQ2LCAxNTEsIDEyNSwgMjUxLCAxMDEsIDQyLCAKLSAgICAxNTEsIDEyNSwgMjUxLCAxMDEsIDQ2LCAxNTEsIDEyNSwgNDIsIDIyMCwgMTEzLCAxMTEsIDEyNSwgNDYsIDIyMCwgMTEzLCAKLSAgICAxMTEsIDEyNSwgNDIsIDUxLCAyMjYsIDEzMSwgNDYsIDUxLCAyMjYsIDEzMSwgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgCi0gICAgMjI1LCAyNiwgMTIyLCA2MiwgMTEwLCAxMTcsIDE3NiwgMjI1LCAyNiwgOTEsIDI0MywgMjM3LCA2MiwgMjI1LCAyNiwgMjQ0LCAKLSAgICA1MCwgNjIsIDc3LCAyMjMsIDIwMiwgMjI0LCAxNTgsIDc3LCA3MSwgMjE3LCA0MiwgMjIzLCAxMzEsIDIyNSwgMTQ0LCAyMTMsIAotICAgIDE5NiwgMjIxLCA1OCwgMjMxLCAzNywgMjQ3LCA3NCwgOSwgMzQsIDIyMywgMjI3LCA5LCAzNCwgMjQ5LCAyMDMsIDksIDM0LCAKLSAgICAyMjIsIDk1LCAxMTYsIDksIDM0LCAyMjIsIDk1LCAxMDksIDksIDM0LCAyMjIsIDk1LCAxNjYsIDksIDM0LCAyMjYsIDQzLCAKLSAgICA5LCAzNCwgMjUxLCA4OSwgOSwgMzQsIDIxOCwgNDAsIDksIDM0LCAyMzQsIDQyLCAxMTYsIDksIDM0LCAyMzQsIDQyLCAxMDksIAotICAgIDksIDM0LCAyNDcsIDEyMiwgOSwgMzQsIDIyMiwgOTgsIDksIDM0LCAzLCAxMTYsIDksIDM0LCAzLCAxMDksIDksIDM0LCAKLSAgICAyMzMsIDEyMSwgMTE2LCA5LCAzNCwgMjMzLCAxMjEsIDEwOSwgOSwgMzQsIDIzMywgMTIxLCAxNjYsIDksIDM0LCAyMzMsIAotICAgIDEyMSwgMTYzLCA5LCAzNCwgMjE5LCAyNTIsIDksIDM0LCAyMTcsIDk4LCA5LCAzNCwgMjE5LCAyNTAsIDExNiwgOSwgMzQsIAotICAgIDIxOSwgMjUwLCAxMDksIDksIDM0LCAyNDEsIDIxMiwgMTE2LCA5LCAzNCwgMjQxLCAyMTIsIDEwOSwgOSwgMzQsIDI0MSwgCi0gICAgMjU0LCA5LCAzNCwgMjI0LCAzOSwgOSwgMzQsIDI1MCwgMTksIDksIDM0LCAyMTgsIDIzOCwgOSwgMzQsIDIzMCwgMTk4LCA5LCAKLSAgICAzNCwgMjQ4LCAzOSwgOSwgMzQsIDIzMCwgMTkwLCA5LCAzNCwgMjQ5LCAyMTgsIDksIDM0LCAyMTQsIDI1LCAxMTYsIDksIAotICAgIDM0LCAyMTQsIDI1LCAxMDksIDksIDM0LCAyNDQsIDY1LCA5LCAzNCwgMjI2LCAxMDYsIDExNiwgOSwgMzQsIDIyNiwgMTA2LCAKLSAgICAxMDksIDksIDM0LCAyMjAsIDg2LCAxNTEsIDIxNiwgMTk0LCAyMTYsIDE0NiwgOSwgMzQsIDI0OSwgODQsIDksIDM0LCAyNDcsIAotICAgIDkwLCA5LCAzNCwgMjM1LCAxMzUsIDksIDM0LCAyNTEsIDEyMiwgNjUsIDI0OSwgMTg3LCA5LCAzNCwgMjQ0LCAyMzksIDksIAotICAgIDM0LCAyMTksIDE4MSwgMTE2LCA5LCAzNCwgMjE5LCAxODEsIDEwOSwgOSwgMzQsIDI1MiwgNzMsIDksIDM0LCAyMjAsIDkzLCAKLSAgICA5LCAzNCwgMjUwLCAyNDksIDIyMCwgOTMsIDksIDM0LCAyMjksIDE3MiwgMTE2LCA5LCAzNCwgMjI5LCAxNzIsIDEwOSwgOSwgCi0gICAgMzQsIDIyOSwgMTcyLCAxNjYsIDksIDM0LCAyMjksIDE3MiwgMTYzLCA5LCAzNCwgMjMxLCAxMTEsIDksIDM0LCAyMjAsIAotICAgIDIzNywgOSwgMzQsIDIyNCwgNDUsIDksIDM0LCAyNDUsIDQsIDksIDM0LCAyMjcsIDc1LCA5LCAzNCwgMjUxLCA2MSwgMTE2LCAKLSAgICA5LCAzNCwgMjUxLCA2MSwgMTA5LCA5LCAzNCwgMjMxLCAxNTEsIDksIDM0LCAyMzAsIDE5MywgOSwgMzQsIDI0MiwgMTE3LCAKLSAgICAxMTYsIDksIDM0LCAyNDIsIDExNywgMTA5LCA5LCAzNCwgMjQyLCAxMTcsIDE2NiwgOSwgMzQsIDIxNywgNjAsIDksIDM0LCAKLSAgICAyNDksIDE4NiwgOSwgMzQsIDIxMywgMjUwLCAxMTYsIDksIDM0LCAyMTMsIDI1MCwgMTA5LCA5LCAzNCwgMjUwLCAyNDksIAotICAgIDIyMiwgODksIDksIDM0LCAyMjAsIDg2LCAyNDAsIDIzNSwgOSwgMzQsIDI0MCwgMjM1LCA5LCAzNCwgMjUwLCAyNDksIDIxOSwgCi0gICAgMTkwLCA5LCAzNCwgMjUwLCAyNDksIDIyMCwgMjMyLCA5LCAzNCwgMjQ0LCAxLCA5LCAzNCwgMjUwLCAyNDksIDI1MCwgMTYwLCAKLSAgICA5LCAzNCwgMjIwLCA4NiwgMjE0LCA0MSwgOSwgMzQsIDIxNCwgNDIsIDExNiwgOSwgMzQsIDIxNCwgNDIsIDEwOSwgOSwgMzQsIAotICAgIDI0OSwgMjIwLCA5LCAzNCwgMjUwLCAyNDksIDI0MiwgMTQyLCA5LCAzNCwgMTg0LCAxMTYsIDksIDM0LCAxODQsIDEwOSwgOSwgCi0gICAgMzQsIDI1MCwgMjQ5LCAyMzIsIDE5MCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDMsIDY0LCA5LCAzNCwgMjMwLCAxODksIDExNiwgCi0gICAgOSwgMzQsIDIzMCwgMTg5LCAxMDksIDksIDM0LCAyMjQsIDUwLCA5LCAzNCwgMjUxLCAxMzAsIDksIDM0LCAyNTAsIDI0OSwgCi0gICAgMjE4LCA3LCAyMzMsIDc2LCA5LCAzNCwgMjUwLCAyNDksIDIzMywgNzcsIDksIDM0LCAyNTAsIDI0OSwgMjEzLCAyMjQsIDksIAotICAgIDM0LCAyNTAsIDI0OSwgMjQ0LCAxNSwgOSwgMzQsIDI0NSwgMTc0LCAxMTYsIDksIDM0LCAyNDUsIDE3NCwgMTA5LCA5LCAzNCwgCi0gICAgMjQ1LCAxNzQsIDE2NiwgOSwgMzQsIDI1MCwgMjQ5LCAyNDUsIDE3MywgOSwgMzQsIDI0MSwgMjE5LCA5LCAzNCwgMjUwLCAKLSAgICAyNDksIDI0MCwgMjMyLCA5LCAzNCwgMjUxLCAxMTksIDksIDM0LCAyNDIsIDE5OCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDQsIAotICAgIDU5LCA5LCAzNCwgMjUwLCAyNDksIDI1MSwgMTYwLCA5LCAzNCwgMjUwLCAyNDksIDIyMiwgMTcyLCA5LCAzNCwgMjIwLCA4NiwgCi0gICAgMjEzLCAyNDMsIDksIDM0LCAyMjAsIDg2LCAyMTMsIDMyLCA5LCAzNCwgMjUwLCAyNDksIDI0MywgMjE0LCA5LCAzNCwgMjM1LCAKLSAgICAxNDEsIDI0NSwgOCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDUsIDgsIDksIDM0LCAyMzUsIDE0MSwgMjE2LCAyMjgsIDksIDM0LCAKLSAgICAyNTAsIDI0OSwgMjE2LCAyMjgsIDksIDM0LCAyMzUsIDE0MSwgMjQ2LCA1MCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDYsIDUwLCAKLSAgICA5LCAzNCwgMjE2LCA1NSwgOSwgMzQsIDIzNSwgMTQxLCAyMTYsIDU1LCA5LCAzNCwgMjUwLCAyNDksIDIxNiwgNTUsIDU3LCAKLSAgICAzNCwgMTE2LCA1NywgMzQsIDIzMiwgMjQyLCA1NywgMzQsIDI0NywgNzQsIDU3LCAzNCwgMjIwLCAyMywgNTcsIDM0LCAyMjIsIAotICAgIDk0LCA1NywgMzQsIDEwMSwgNTcsIDM0LCAxMDksIDU3LCAzNCwgMjMzLCA5LCA1NywgMzQsIDIzMSwgMjQ4LCA1NywgMzQsIAotICAgIDIzMywgNTcsIDU3LCAzNCwgMjQ1LCA4OCwgNTcsIDM0LCAxOTUsIDU3LCAzNCwgMTE5LCAyNTEsIDg5LCA1NywgMzQsIDI0OSwgCi0gICAgODYsIDU3LCAzNCwgMjQwLCAxMDQsIDU3LCAzNCwgMjE4LCA0MCwgNTcsIDM0LCAyMjcsIDQwLCAyNTEsIDg5LCA1NywgMzQsIAotICAgIDIzNCwgNDEsIDU3LCAzNCwgMjI1LCAxMDQsIDU3LCAzNCwgMjEzLCAxOTAsIDU3LCAzNCwgMjE5LCAxNzUsIDU3LCAzNCwgCi0gICAgNDYsIDIyNywgNDAsIDI1MSwgODksIDU3LCAzNCwgMjQxLCAxNjEsIDI0NSwgMTAzLCA1NywgMzQsIDIxNywgMjAwLCA1NywgCi0gICAgMzQsIDI0NywgMTIyLCA1NywgMzQsIDIyMiwgOTgsIDU3LCAzNCwgMjQ5LCAyMDMsIDU3LCAzNCwgMjI1LCA2NSwgNTcsIDM0LCAKLSAgICAyNTQsIDEyMCwgNTcsIDM0LCAyMzAsIDE4MCwgNTcsIDM0LCAyNDUsIDEwMywgNTcsIDM0LCAyNDUsIDE3OSwgNTcsIDM0LCAKLSAgICAyMjIsIDExOCwgNTcsIDM0LCAyNDIsIDE1MCwgNTcsIDM0LCAyNDIsIDE1MSwgMjIwLCA5LCA1NywgMzQsIDI0NSwgNywgNTcsIAotICAgIDM0LCAyNTEsIDE3MSwgNTcsIDM0LCAyMTMsIDIwOCwgNTcsIDM0LCAyNTAsIDM4LCA1NywgMzQsIDIyMywgOTgsIDU3LCAzNCwgCi0gICAgMjM1LCAyNDcsIDU3LCAzNCwgMjIwLCA3LCA1NywgMzQsIDIzMywgMTIwLCA1NywgMzQsIDI0OSwgOTUsIDU3LCAzNCwgMjE5LCAKLSAgICAxNjksIDU3LCAzNCwgMjMwLCAxODUsIDU3LCAzNCwgMjIzLCAxMjEsIDU3LCAzNCwgMjEzLCAxOTMsIDU3LCAzNCwgMjI3LCAKLSAgICA1NiwgNTcsIDM0LCAyMTYsIDYxLCA1NywgMzQsIDI0NiwgMzUsIDU3LCAzNCwgMjIwLCAxNzUsIDIxNywgOTgsIDU3LCAzNCwgCi0gICAgMjQ2LCA3MiwgMjQ5LCAyMDMsIDU3LCAzNCwgMTg0LCAyMTksIDQ4LCA1NywgMzQsIDExNywgMjQxLCAyNDksIDU3LCAzNCwgCi0gICAgMjIwLCAxODAsIDU3LCAzNCwgMjUxLCA5NSwgNTcsIDM0LCAyMTksIDI0OSwgNTcsIDM0LCAyNTEsIDY1LCA1NywgMzQsIAotICAgIDIxOSwgNzgsIDU3LCAzNCwgMjQxLCAyMTEsIDU3LCAzNCwgMjQyLCAxMCwgNTcsIDM0LCAyNDcsIDc3LCA1NywgMzQsIDI0MSwgCi0gICAgMjU0LCA1NywgMzQsIDI1MSwgODEsIDU3LCAzNCwgMjI0LCAzOSwgNTcsIDM0LCAyMjIsIDEwNiwgNTcsIDM0LCAyNDcsIAotICAgIDE1MSwgNTcsIDM0LCAyNTMsIDg0LCA1NywgMzQsIDIxOSwgMTY2LCA1NywgMzQsIDIyOCwgMTYyLCA1NywgMzQsIDIxOCwgCi0gICAgMjM4LCA1NywgMzQsIDIyMiwgMTI5LCA1NywgMzQsIDIzMCwgMTk4LCA1NywgMzQsIDIxNiwgMTkzLCA1NywgMzQsIDIzMywgCi0gICAgMTQ1LCA1NywgMzQsIDIxOSwgNjksIDU3LCAzNCwgMjQ4LCAzOSwgNTcsIDM0LCAyMTQsIDUsIDU3LCAzNCwgMjQ3LCAxMDAsIAotICAgIDIyOCwgMTYyLCA1NywgMzQsIDI0OSwgMTU0LCA1NywgMzQsIDI0MywgMTk0LCA1NywgMzQsIDI0OSwgMjE0LCA1NywgMzQsIAotICAgIDIxOSwgODIsIDU3LCAzNCwgMjE0LCAyNCwgNTcsIDM0LCAyNDQsIDY1LCA1NywgMzQsIDI0OSwgMjExLCA1NywgMzQsIDI0NCwgCi0gICAgMTI5LCA1NywgMzQsIDUxLCAyMTMsIDE2NiwgNTcsIDM0LCAxNTEsIDIxNiwgMTk0LCAyMTYsIDE0NiwgNTcsIDM0LCAyMjAsIAotICAgIDE3LCA1NywgMzQsIDI0NCwgMTM5LCA1NywgMzQsIDI0OSwgODQsIDU3LCAzNCwgMjQ3LCA5MCwgNTcsIDM0LCAyMjUsIDYyLCAKLSAgICA1NywgMzQsIDIzNSwgMTM1LCA1NywgMzQsIDIzMSwgMTMxLCA1NywgMzQsIDIxNywgNDEsIDU3LCAzNCwgMjE4LCAxOTAsIAotICAgIDU3LCAzNCwgMjMzLCAzLCA1NywgMzQsIDIxNSwgMTAzLCA1NywgMzQsIDI0NCwgODksIDU3LCAzNCwgMjUxLCAxMjIsIDY1LCAKLSAgICAyNDksIDE4NywgNTcsIDM0LCAyMjAsIDExNCwgNTcsIDM0LCAyNDYsIDcyLCAyMTcsIDE5NSwgNTcsIDM0LCAyMTMsIDIzOCwgCi0gICAgNTcsIDM0LCAyMjAsIDMxLCA1NywgMzQsIDI0NywgMTM5LCA1NywgMzQsIDI0NCwgMjM5LCA1NywgMzQsIDIxOSwgMTkzLCAKLSAgICA1NywgMzQsIDY4LCA1NywgMzQsIDIxOSwgNzEsIDU3LCAzNCwgMjE5LCAxODAsIDU3LCAzNCwgMjE2LCAyMTIsIDU3LCAzNCwgCi0gICAgMjQyLCAxMjMsIDU3LCAzNCwgMjUwLCAxNTEsIDU3LCAzNCwgMjE5LCA5OSwgNTcsIDM0LCAyNTIsIDczLCA1NywgMzQsIAotICAgIDIyMywgMTg0LCA1NywgMzQsIDIyMCwgOTMsIDU3LCAzNCwgMjM1LCAxMzAsIDU3LCAzNCwgMjI5LCAxNzEsIDU3LCAzNCwgCi0gICAgMjIwLCAyMzcsIDU3LCAzNCwgMjQ0LCAxMTgsIDU3LCAzNCwgMjI3LCA3NSwgNTcsIDM0LCAyNTQsIDI3LCA1NywgMzQsIAotICAgIDIyNSwgMTYyLCA1NywgMzQsIDI0NSwgMTgzLCA1NywgMzQsIDI1MSwgNjAsIDU3LCAzNCwgMjMxLCAxNTEsIDU3LCAzNCwgCi0gICAgMjMwLCAyNTIsIDU3LCAzNCwgMjIxLCA3NiwgNTcsIDM0LCAyNTMsIDE2NywgNTcsIDM0LCAyMzAsIDE5MywgNTcsIDM0LCAKLSAgICAyMTYsIDIzMiwgNTcsIDM0LCAyMjcsIDMxLCA1NywgMzQsIDI1MSwgMTI0LCA1NywgMzQsIDIxOSwgNjcsIDU3LCAzNCwgCi0gICAgMjQ5LCAxNjMsIDU3LCAzNCwgMjQyLCAxMTYsIDU3LCAzNCwgMjE3LCA2MCwgNTcsIDM0LCAyMzUsIDIxNCwgNTcsIDM0LCAKLSAgICAyNTEsIDEzNCwgNTcsIDM0LCAyMTQsIDQyLCAyNDUsIDEwMywgNTcsIDM0LCAyNDksIDE4NiwgNTcsIDM0LCAyMTMsIDI0OSwgCi0gICAgNTcsIDM0LCAyMjIsIDg5LCA1NywgMzQsIDI0MCwgMjM1LCA1NywgMzQsIDIxOSwgMTkwLCA1NywgMzQsIDIxNCwgMjU0LCAKLSAgICA1NywgMzQsIDI1MSwgMjQ4LCA1NywgMzQsIDIyNSwgMjA1LCA1NywgMzQsIDI1MiwgOTIsIDU3LCAzNCwgMjIwLCAyMzIsIAotICAgIDU3LCAzNCwgMjI0LCAzLCA1NywgMzQsIDIyMywgMzcsIDU3LCAzNCwgMjQ0LCAxLCA1NywgMzQsIDI1MSwgMTIzLCA1NywgCi0gICAgMzQsIDI1MCwgMTYwLCA1NywgMzQsIDI1MSwgMTQ5LCA1NywgMzQsIDIzMCwgMTk1LCA1NywgMzQsIDIxNCwgNDEsIDU3LCAKLSAgICAzNCwgMjQ5LCAyMjAsIDU3LCAzNCwgMjEzLCAyMjEsIDU3LCAzNCwgMjQ3LCAxMzIsIDU3LCAzNCwgMjE0LCAxNDIsIDU3LCAKLSAgICAzNCwgMjQyLCAxNDIsIDU3LCAzNCwgMjMyLCAxOTAsIDU3LCAzNCwgMjQzLCA2NCwgNTcsIDM0LCAyMzAsIDE4OCwgNTcsIAotICAgIDM0LCAyMjAsIDIyLCA1NywgMzQsIDIyMCwgMTc1LCAyMTgsIDI2LCAyNTEsIDE2MCwgNTcsIDM0LCAyMjQsIDUwLCA1NywgCi0gICAgMzQsIDI1MSwgMTMwLCA1NywgMzQsIDIxMywgMTg1LCA1NywgMzQsIDI0NCwgMTU4LCA1NywgMzQsIDIzMywgNzYsIDU3LCAKLSAgICAzNCwgMjE4LCA3LCAyMzMsIDc2LCA1NywgMzQsIDIzMywgNzIsIDU3LCAzNCwgMjE5LCAyMTcsIDU3LCAzNCwgMjMzLCA3NywgCi0gICAgNTcsIDM0LCAyMTMsIDIyNCwgNTcsIDM0LCAyNDQsIDE1LCA1NywgMzQsIDI0NSwgMTczLCA1NywgMzQsIDI0MSwgMjE5LCAKLSAgICA1NywgMzQsIDI0MywgMjI2LCA1NywgMzQsIDI0MCwgMjMyLCA1NywgMzQsIDI1MSwgMTE5LCA1NywgMzQsIDIxOCwgMTQsIAotICAgIDU3LCAzNCwgMjQyLCAxNiwgNTcsIDM0LCAyNDQsIDgyLCA1NywgMzQsIDIyMiwgMTk3LCAyMTMsIDIyMSwgNTcsIDM0LCAKLSAgICAyNTAsIDE1MywgNTcsIDM0LCAyNDIsIDE5OCwgNTcsIDM0LCAyNDQsIDU5LCA1NywgMzQsIDI1MSwgMTYwLCA1NywgMzQsIAotICAgIDIyMiwgMTcyLCA1NywgMzQsIDI0OCwgMjUsIDU3LCAzNCwgMjEzLCAyNDMsIDU3LCAzNCwgMjQxLCAxOTQsIDU3LCAzNCwgCi0gICAgMjEzLCAzMiwgNTcsIDM0LCAyMzEsIDUsIDU3LCAzNCwgMjUxLCAxNDQsIDU3LCAzNCwgMjQ1LCAxMTMsIDU3LCAzNCwgMjQzLCAKLSAgICAyMTQsIDU3LCAzNCwgMjE2LCAxNjcsIDU3LCAzNCwgMjQ2LCAzNywgNTcsIDM0LCAyMjQsIDMzLCA1NywgMzQsIDIyOCwgCi0gICAgMTY0LCA1NywgMzQsIDI0NSwgOCwgNTcsIDM0LCAyMTYsIDIyOCwgNTcsIDM0LCAyNDYsIDUwLCA1NywgMzQsIDIxNiwgNTUsIAotICAgIDU3LCAzNCwgMjQ0LCAxNywgMTA1LCAyNDcsIDI0NCwgMTM3LCA0MiwgMjExLCAyMTEsIDIyMywgMTQ4LCAxMDUsIDI0NywgCi0gICAgMjQ0LCAxMzcsIDc4LCAyMTEsIDIxMSwgNTUsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNDIsIDIxMSwgMjExLCAyMzEsIDM3LCAKLSAgICAyNCwgMjIzLCAxNDgsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNzgsIDIxMSwgMjExLCAyMzEsIDM3LCAyNCwgNTUsIDEwNSwgCi0gICAgMjQ3LCAyNDQsIDEzNywgMjQzLCAyMDAsIDIxOCwgMjEwLCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIAotICAgIDIxMywgNDksIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCA1NSwgMTA1LCAyNDcsIDI0NCwgMTM3LCAKLSAgICAyMTgsIDIxMSwgMjQzLCAyMTMsIDIzMywgNzAsIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMTUsIAotICAgIDEzMSwgMjMzLCA3MCwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAyMTMsIDIxNSwgMTMxLCAyMjMsIDE0OCwgCi0gICAgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAyMTMsIDIzMiwgMTYzLCAyMzMsIDcwLCAxMDUsIDI0NywgMjQ0LCAKLSAgICAxMzcsIDIyNiwgMjQ2LCAxMDUsIDIxOSwgMjA2LCAxMDUsIDI0OSwgMTU3LCAxMDUsIDI0MywgMjAwLCAyMTksIDY5LCAyNDcsIAotICAgIDEyOSwgNzcsIDIzNSwgMTMxLCAyMzUsIDIzMywgMjE5LCA5OCwgODcsIDEwNSwgMjM1LCAxNTYsIDc3LCAxMDUsIDI0OSwgCi0gICAgMTg5LCA3NywgMTA1LCA1MCwgMjEyLCA3OSwgNDIsIDI1NCwgMTksIDEyNSwgNDYsIDI1NCwgMTksIDEyNSwgNDIsIDUxLCAKLSAgICAyNTQsIDE5LCAxMjUsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCA0MiwgMjQ5LCAxMDAsIDEyNSwgNDYsIDI0OSwgMTAwLCAxMjUsIAotICAgIDQyLCA2NywgMjQ5LCAxMDAsIDEyNSwgNDYsIDY3LCAyNDksIDEwMCwgMTI1LCA0MiwgODMsIDIzMywgNDQsIDEyNSwgNDYsIAotICAgIDgzLCAyMzMsIDQ0LCAxMjUsIDIyNSwgMTE3LCA3NywgMjQzLCA4LCA3NywgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAKLSAgICA0NiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQyLCA2NywgMjMzLCA0NCwgMTI1LCA0NiwgNjcsIDIzMywgNDQsIDEyNSwgCi0gICAgNDIsIDY3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDYsIDY3LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgNDIsIDY3LCAKLSAgICA0MSwgMTI1LCA0NiwgNjcsIDQxLCAxMjUsIDIxNCwgMjAsIDI0OCwgMTAxLCAyMjMsIDIwMiwgNTEsIDIyNSwgNzIsIDIyNCwgCi0gICAgMTQzLCA3NywgNTEsIDIyNSwgNzIsIDIyNCwgMTQzLCA3NywgMTE1LCA1MSwgMjI1LCA3MiwgMjI0LCAxNDMsIDc3LCAyMjUsIAotICAgIDExNywgMTUyLCAyNDQsIDE1OCwgMjQxLCAyNDcsIDIyOCwgNTQsIDExNiwgMjQxLCAyNDcsIDIyOCwgNTQsIDEwOSwgMjQxLCAKLSAgICAyNDcsIDIyOCwgNTQsIDE2NiwgMjQxLCAyNDcsIDIyOCwgNTQsIDE2MywgMjQxLCAyNDcsIDIyOCwgNTQsIDE4MCwgMjQxLCAKLSAgICAyNDcsIDIyOCwgNTQsIDE4OSwgMjQxLCAyNDcsIDIyOCwgNTQsIDE5OCwgMjQxLCAyNDcsIDIyOCwgNTQsIDE5NSwgMjQxLCAKLSAgICAyNDcsIDIyOCwgNTQsIDIwMCwgMTA1LCAyMzMsIDI5LCAxNjAsIDc3LCAxMDUsIDIyMywgMTI1LCAxNjAsIDc3LCAxMDUsIAotICAgIDI0NywgMjUxLCAxNjAsIDc3LCAxMDUsIDI0NSwgODcsIDE2MCwgNzcsIDIzLCAyMjAsIDgxLCA2MiwgMTYwLCA3NywgMjMsIAotICAgIDUxLCA2MiwgMTYwLCA3NywgMjE0LCAxNiwgMjQ4LCAxMDEsIDcxLCAyMzQsIDIzOCwgMjIzLCAyMjgsIDc3LCA3MSwgMjM0LCAKLSAgICAyMzgsIDIyMywgMjI4LCAyLCAyMTQsIDExNiwgMjE5LCAyMTgsIDc3LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAxNTIsIAotICAgIDIxNSwgMTMxLCAyNDIsIDksIDcxLCAyMzQsIDIzOCwgMjIzLCAyMjgsIDIsIDIxNCwgMTE2LCAyMTksIDIxOCwgMTUyLCAKLSAgICAyMTUsIDEzMSwgMjQyLCA5LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAxNTIsIDIzMiwgMTYzLCAyNDIsIDksIDM2LCAyMjUsIAotICAgIDExNywgNzcsIDEwNSwgMjAxLCAyMzIsIDI0MywgMjQ0LCAxMTUsIDIyMSwgNTgsIDg3LCAyNDEsIDI0NywgMjI4LCA1NCwgCi0gICAgMjE3LCAyMDAsIDI0MSwgMjQ3LCAyMjgsIDU0LCAyMTYsIDM4LCAyNDEsIDI0NywgMjI4LCA1NCwgMjE3LCAxMTUsIDcxLCAKLSAgICAxMDUsIDIzNSwgMTU2LCA3NywgMjMxLCAyMDMsIDc3LCAyMjYsIDEyNywgMjU0LCA0OSwgNzcsIDEwNSwgNDMsIDIzNSwgCi0gICAgMjM1LCAxMDUsIDE1MSwgMjQ0LCA3NSwgMjE5LCAyMDYsIDE0MiwgMSwgMywgNjEsIDE0MiwgMSwgNjEsIDE0MiwgMSwgMywgCi0gICAgNzIsIDE0MiwgMSwgNzIsIDE0MiwgMSwgMywgNjksIDE0MiwgMSwgNjksIDE0MiwgMSwgMywgNzQsIDE0MiwgMSwgNzQsIAotICAgIDE0MiwgMSwgMywgNzUsIDE0MiwgMSwgNzUsIDE0MiwgMSwgMTgxLCAxNDIsIDEsIDI0MywgMTEwLCAxNDIsIDEsIDIzNCwgCi0gICAgMTAxLCAxNDIsIDEsIDI0MiwgMTkwLCAxNDIsIDEsIDIzMywgMjM4LCAxNDIsIDEsIDI0MiwgOTIsIDE0MiwgMSwgMjM0LCAKLSAgICAxODgsIDE0MiwgMSwgMjQzLCAzOCwgMTQyLCAxLCAyMzQsIDM3LCAxNDIsIDEsIDI0MiwgMTUwLCAxNDIsIDEsIDIyMiwgCi0gICAgMjAyLCAxNDIsIDEsIDIxMiwgMTA5LCAxNDIsIDEsIDIyMCwgMTE3LCAxNDIsIDEsIDIxMiwgMzcsIDE0MiwgMSwgMjE5LCAKLSAgICAyNywgMTQyLCAxLCAyMTIsIDgsIDE0MiwgMSwgMjIyLCAxMDAsIDE0MiwgMSwgMjEyLCA4NywgMTQyLCAxLCAyMTksIDI0MiwgCi0gICAgMTQyLCAxLCAyMTIsIDE2LCAxNDIsIDEsIDIxOCwgNTIsIDE0MiwgMSwgMjQ4LCAxNjQsIDE0MiwgMSwgMjE3LCA3MSwgMTQyLCAKLSAgICAxLCAyNDcsIDIxMSwgMTQyLCAxLCAzLCAyMTYsIDgyLCAxNDIsIDEsIDIxNiwgODIsIDE0MiwgMSwgMjQ2LCAzMywgMTQyLCAKLSAgICAxLCAyMTcsIDIyOSwgMTQyLCAxLCAyNDgsIDQxLCAxNDIsIDEsIDEwOCwgMTQyLCAxLCAyNDcsIDk5LCAxNDIsIDEsIDIwNSwgCi0gICAgMTQyLCAxLCAyMjksIDY0LCAxNDIsIDEsIDIyOCwgOTIsIDE0MiwgMSwgMjI5LCAxODcsIDE0MiwgMSwgMjI4LCAxODUsIAotICAgIDE0MiwgMSwgMTU5LCAxNDIsIDEsIDI1MiwgMTA3LCAxNDIsIDEsIDE5MywgMTQyLCAxLCAyNDEsIDE2NSwgMTQyLCAxLCAKLSAgICAyNTEsIDE4NCwgMTQyLCAxLCAyMjUsIDI0MCwgMTQyLCAxLCAyNDAsIDIxMiwgMTQyLCAxLCAyNTEsIDU0LCAxNDIsIDEsIAotICAgIDIyNSwgMzUsIDE0MiwgMSwgMjQxLCAyMjIsIDE0MiwgMSwgMjUxLCAyNTEsIDE0MiwgMSwgMjI2LCA5NiwgMTQyLCAxLCAKLSAgICAyNDEsIDU0LCAxNDIsIDEsIDI1MSwgMTI4LCAxNDIsIDEsIDIyNSwgMTUwLCAxNDIsIDEsIDE4OCwgMTQyLCAxLCAyMzEsIAotICAgIDQyLCAxNDIsIDEsIDIzMCwgMTcyLCAxNDIsIDEsIDIzMSwgMTU2LCAxNDIsIDEsIDIzMCwgMjMxLCAxNDIsIDEsIDMsIDE4NiwgCi0gICAgMTQyLCAxLCAxODYsIDE0MiwgMSwgMywgMjEyLCAyMDMsIDE0MiwgMSwgMjEyLCAyMDMsIDE0MiwgMSwgMywgMjEyLCAyMzUsIAotICAgIDE0MiwgMSwgMjEyLCAyMzUsIDE0MiwgMSwgMjAzLCAxNDIsIDEsIDIyMywgMTg4LCAxNDIsIDEsIDIyMywgNTEsIDE0MiwgMSwgCi0gICAgMjI0LCAyMSwgMTQyLCAxLCAyMjMsIDExMiwgMTQyLCAxLCAzLCAyMTQsIDQ5LCAxNDIsIDEsIDIxNCwgNDksIDE0MiwgMSwgCi0gICAgMjEzLCAyMzUsIDE0MiwgMSwgMjE0LCA2LCAxNDIsIDEsIDIxMywgMjE0LCAxNDIsIDEsIDIwNCwgMTQyLCAxLCAyMTQsIDk5LCAKLSAgICAxNDIsIDEsIDMsIDE4MSwgMTQyLCAxLCAzLCAyMzQsIDE4OCwgMzcsIDIzNCwgMjA2LCAyMTQsIDExNiwgMjE5LCAyMTgsIAotICAgIDc3LCAzNywgMjM0LCAyMDYsIDIyMSwgNzUsIDIxOSwgMjE4LCA3NywgMjM0LCAyMDYsIDIxNCwgMTE2LCAyMTksIDIxOCwgCi0gICAgNzcsIDIzNCwgMjA2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDE0MiwgMjM1LCAxNTYsIDc3LCAxNDIsIDIxNCwgMTE2LCAKLSAgICAyMzUsIDE1NiwgNzcsIDE0MiwgMjQ3LCAxNzMsIDIxMiwgMjE2LCAyMzQsIDIwNiwgNTEsIDI0MCwgMTYwLCA1NiwgMSwgMywgCi0gICAgNjEsIDU2LCAxLCA2MSwgNTYsIDEsIDMsIDcyLCA1NiwgMSwgNzIsIDU2LCAxLCAzLCA2OSwgNTYsIDEsIDY5LCA1NiwgMSwgCi0gICAgMywgNzQsIDU2LCAxLCA3NCwgNTYsIDEsIDMsIDc1LCA1NiwgMSwgNzUsIDU2LCAxLCAxODEsIDU2LCAxLCAyNDMsIDExMCwgCi0gICAgNTYsIDEsIDIzNCwgMTAxLCA1NiwgMSwgMjQyLCAxOTAsIDU2LCAxLCAyMzMsIDIzOCwgNTYsIDEsIDI0MiwgOTIsIDU2LCAxLCAKLSAgICAyMzQsIDE4OCwgNTYsIDEsIDI0MywgMzgsIDU2LCAxLCAyMzQsIDM3LCA1NiwgMSwgMjQyLCAxNTAsIDU2LCAxLCAyMjIsIAotICAgIDIwMiwgNTYsIDEsIDIxMiwgMTA5LCA1NiwgMSwgMjIwLCAxMTcsIDU2LCAxLCAyMTIsIDM3LCA1NiwgMSwgMjE5LCAyNywgCi0gICAgNTYsIDEsIDIxMiwgOCwgNTYsIDEsIDIyMiwgMTAwLCA1NiwgMSwgMjEyLCA4NywgNTYsIDEsIDIxOSwgMjQyLCA1NiwgMSwgCi0gICAgMjEyLCAxNiwgNTYsIDEsIDIxOCwgNTIsIDU2LCAxLCAyNDgsIDE2NCwgNTYsIDEsIDIxNywgNzEsIDU2LCAxLCAyNDcsIAotICAgIDIxMSwgNTYsIDEsIDMsIDIxNiwgODIsIDU2LCAxLCAyMTYsIDgyLCA1NiwgMSwgMjQ2LCAzMywgNTYsIDEsIDIxNywgMjI5LCAKLSAgICA1NiwgMSwgMjQ4LCA0MSwgNTYsIDEsIDEwOCwgNTYsIDEsIDI0NywgOTksIDU2LCAxLCAyMDUsIDU2LCAxLCAyMjksIDY0LCAKLSAgICA1NiwgMSwgMjI4LCA5MiwgNTYsIDEsIDIyOSwgMTg3LCA1NiwgMSwgMjI4LCAxODUsIDU2LCAxLCAxNTksIDU2LCAxLCAyNTIsIAotICAgIDEwNywgNTYsIDEsIDE5MywgNTYsIDEsIDI0MSwgMTY1LCA1NiwgMSwgMjUxLCAxODQsIDU2LCAxLCAyMjUsIDI0MCwgNTYsIAotICAgIDEsIDI0MCwgMjEyLCA1NiwgMSwgMjUxLCA1NCwgNTYsIDEsIDIyNSwgMzUsIDU2LCAxLCAyNDEsIDIyMiwgNTYsIDEsIDI1MSwgCi0gICAgMjUxLCA1NiwgMSwgMjI2LCA5NiwgNTYsIDEsIDI0MSwgNTQsIDU2LCAxLCAyNTEsIDEyOCwgNTYsIDEsIDIyNSwgMTUwLCAKLSAgICA1NiwgMSwgMTg4LCA1NiwgMSwgMjMxLCA0MiwgNTYsIDEsIDIzMCwgMTcyLCA1NiwgMSwgMjMxLCAxNTYsIDU2LCAxLCAyMzAsIAotICAgIDIzMSwgNTYsIDEsIDMsIDE4NiwgNTYsIDEsIDE4NiwgNTYsIDEsIDMsIDIxMiwgMjAzLCA1NiwgMSwgMjEyLCAyMDMsIDU2LCAKLSAgICAxLCAzLCAyMTIsIDIzNSwgNTYsIDEsIDIxMiwgMjM1LCA1NiwgMSwgMjAzLCA1NiwgMSwgMjIzLCAxODgsIDU2LCAxLCAyMjMsIAotICAgIDUxLCA1NiwgMSwgMjI0LCAyMSwgNTYsIDEsIDIyMywgMTEyLCA1NiwgMSwgMywgMjE0LCA0OSwgNTYsIDEsIDIxNCwgNDksIAotICAgIDU2LCAxLCAyMTMsIDIzNSwgNTYsIDEsIDIxNCwgNiwgNTYsIDEsIDIxMywgMjE0LCA1NiwgMSwgMjA0LCA1NiwgMSwgMjE0LCAKLSAgICA5OSwgNTYsIDEsIDMsIDE4MSwgNTYsIDEsIDMsIDIzNCwgMTg4LCA1NiwgMSwgMjE1LCAxLCA1NiwgMSwgMjE0LCAxNTQsIAotICAgIDU2LCAxLCAyMTQsIDIzMiwgNTYsIDEsIDIxNCwgMTE5LCA1NiwgMjMxLCAzNywgMjQ3LCA3NCwgMjM0LCAyMDYsIDIyNSwgCi0gICAgNTcsIDIxOSwgMjE4LCA3NywgNTYsIDIzNSwgMTU2LCA3NywgNTYsIDIxNCwgMTE2LCAyMzUsIDE1NiwgNzcsIDU2LCAyNDcsIAotICAgIDE3MywgMjM0LCA4LCAyMDIsIDEsIDI1MywgNzQsIDIwMiwgMSwgMjI2LCAyMjksIDIwMiwgMSwgMTgzLCAyMDIsIDEsIDI0NCwgCi0gICAgMjMwLCAyMDIsIDEsIDI0OSwgMywgMjAyLCAxLCAyMTgsIDk5LCAyMDIsIDEsIDIwNCwgMjAyLCAxLCAxNTAsIDIwMiwgMSwgCi0gICAgMjQzLCAxNzcsIDIwMiwgMSwgMjM1LCAyNywgMjAyLCAxLCAyNDIsIDQxLCAyMDIsIDEsIDIzNSwgMTQyLCAyMDIsIDEsIAotICAgIDIyNCwgMjQwLCAyMDIsIDEsIDIxMywgMTY2LCAyMDIsIDEsIDIxMiwgNzYsIDIwMiwgMSwgMjUwLCA5MywgMjAyLCAxLCAKLSAgICAyMjEsIDI2LCAyMDIsIDEsIDE0OSwgMjAyLCAxLCAyMTIsIDE1MiwgMjAyLCAxLCAyNTAsIDI1MiwgMjAyLCAxLCAxOTcsIAotICAgIDIwMiwgMSwgNjEsIDIwMiwgMSwgNzUsIDIwMiwgMSwgNzQsIDIwMiwgMSwgMjQ1LCAxNTQsIDIwMiwgMSwgMjU0LCAxMDgsIAotICAgIDIwMiwgMSwgMjQ1LCAxNTIsIDIwMiwgMSwgMjUzLCAxMDgsIDIwMiwgMSwgMjI3LCAyLCAyMDIsIDEsIDI1NCwgMzIsIDIwMiwgCi0gICAgMSwgMjQ1LCAxMDgsIDIwMiwgMSwgMjU0LCAyNCwgMjAyLCAxLCAyNDUsIDk2LCAyMDIsIDEsIDI0NSwgNTUsIDIwMiwgMSwgCi0gICAgNzIsIDIwMiwgMSwgNjksIDIwMiwgMSwgMjM1LCAxNTQsIDIwMiwgMSwgMjE1LCA3OSwgMjAyLCAxLCAyMjksIDE2MSwgMjAyLCAKLSAgICAxLCAyNDIsIDE1NCwgMjAyLCAxLCAyMzYsIDI5LCAyMywgMSwgMjM0LCA2NywgMjMsIDEsIDIxOSwgMTUwLCAyMywgMSwgCi0gICAgMjM0LCA2MCwgMjMsIDEsIDIyOSwgNTcsIDIzLCAxLCAyMjksIDU1LCAyMywgMSwgMjI5LCA1NCwgMjMsIDEsIDIxNywgNTUsIAotICAgIDIzLCAxLCAyMTksIDEzOSwgMjMsIDEsIDIyMywgMTc5LCAyMywgMSwgMjIzLCAxNzQsIDIzLCAxLCAyMjMsIDE3MSwgMjMsIAotICAgIDEsIDIyMywgMTY0LCAyMywgMSwgMjIzLCAxNTksIDIzLCAxLCAyMjMsIDE1NCwgMjMsIDEsIDIyMywgMTY1LCAyMywgMSwgCi0gICAgMjIzLCAxNzcsIDIzLCAxLCAyMzEsIDMwLCAyMywgMSwgMjI1LCAyMjcsIDIzLCAxLCAyMTksIDE0NywgMjMsIDEsIDIyNSwgCi0gICAgMjE2LCAyMywgMSwgMjIwLCA3NiwgMjMsIDEsIDIxOSwgMTQ0LCAyMywgMSwgMjM2LCA1MSwgMjMsIDEsIDI0OSwgMjM5LCAKLSAgICAyMywgMSwgMjE5LCAxNTQsIDIzLCAxLCAyNTAsIDQzLCAyMywgMSwgMjM0LCAxMTYsIDIzLCAxLCAyMTcsIDEyNiwgMjMsIDEsIAotICAgIDIyNiwgNywgMjMsIDEsIDI0MSwgMTU4LCAyMywgMSwgNjEsIDIzLCAxLCAyNTQsIDE0OCwgMjMsIDEsIDE4NiwgMjMsIDEsIAotICAgIDIxMywgODAsIDIzLCAxLCAyNDUsIDc2LCAyMywgMSwgNzQsIDIzLCAxLCAyMTMsIDI3LCAyMywgMSwgMjEzLCAzOCwgMjMsIAotICAgIDEsIDc1LCAyMywgMSwgMjE0LCA0OSwgMjMsIDEsIDIxNCwgNDYsIDIzLCAxLCAyMjcsIDk5LCAyMywgMSwgMjEyLCAyMzUsIAotICAgIDIzLCAxLCA2OSwgMjMsIDEsIDIxMywgMjUyLCAyMywgMSwgMjE0LCA2LCAyMywgMSwgMjEzLCAyMzUsIDIzLCAxLCAyMTIsIAotICAgIDIwMywgMjMsIDEsIDI0NSwgMjIsIDIzLCAxLCAyMTIsIDI1NSwgMjMsIDEsIDcyLCAyMywgMjQ0LCA3MiwgMjMsIDEsIDIxOSwgCi0gICAgMTQ4LCAyMywgMSwgMjI5LCA0NywgMjMsIDEsIDIyOSwgNDksIDIzLCAxLCAyMjksIDUyLCAyMywgMSwgMjIzLCAxNzIsIDIzLCAKLSAgICAxLCAyMjMsIDE1MywgMjMsIDEsIDIyMywgMTYxLCAyMywgMSwgMjIzLCAxNjYsIDIzLCAxLCAyMjMsIDE1MSwgMjMsIDEsIAotICAgIDIzMSwgMjMsIDIzLCAxLCAyMzEsIDIwLCAyMywgMSwgMjMxLCAyNCwgMjMsIDEsIDIzNCwgMjI2LCAyMywgMSwgMjI1LCAKLSAgICAyMjIsIDIzLCAxLCAyMjUsIDIwOCwgMjMsIDEsIDIyNSwgMjE0LCAyMywgMSwgMjI1LCAyMTEsIDIzLCAxLCAyMjUsIDIyNSwgCi0gICAgMjMsIDEsIDIyNSwgMjA5LCAyMywgMSwgMjM0LCAyMjQsIDIzLCAxLCAyMzQsIDIyMiwgMjMsIDEsIDIyMCwgNjksIDIzLCAxLCAKLSAgICAyMjAsIDY3LCAyMywgMSwgMjIwLCA1OSwgMjMsIDEsIDIyMCwgNjQsIDIzLCAxLCAyMjAsIDc0LCAyMywgMSwgMjI2LCAxNjAsIAotICAgIDIzLCAxLCAyMTksIDE1MSwgMjMsIDEsIDIxMywgMTcsIDIzLCAxLCAyMTMsIDEzLCAyMywgMSwgMjEzLCAxNCwgMjMsIDEsIAotICAgIDIzNCwgMjI1LCAyMywgMSwgMjE5LCAxNTIsIDIzLCAxLCAyMTMsIDIzLCAyMywgMSwgMjEyLCAyMjksIDIzLCAxLCAyMTIsIAotICAgIDIyOCwgMjMsIDEsIDIxMiwgMjMxLCAyMywgMSwgMjEyLCAxOTQsIDIzLCAxLCAyMTIsIDE5NSwgMjMsIDEsIDIxMiwgMTk4LCAKLSAgICAyMywgMSwgMjUzLCAyMDQsIDIzLCAxLCAyNTMsIDE5OCwgMTA1LCAyNTQsIDEwLCAyMzIsIDIzMiwgNzcsIDEwNSwgMjU0LCAKLSAgICAxMCwgMjIzLCAyMDMsIDc3LCAxMDUsIDI1NCwgMTAsIDEyMiwgNzcsIDEwNSwgMjU0LCAxMCwgMTE3LCA3NywgMTA1LCAyNTQsIAotICAgIDEwLCAxMzMsIDc3LCAxMDUsIDI1NCwgMTAsIDI0MywgMjM3LCA3NywgMTA1LCAyNTQsIDEwLCAyMTYsIDIyNywgNzcsIDEwNSwgCi0gICAgMjU0LCAxMCwgMjMxLCAzNywgNzcsIDEwNSwgMjU0LCAxMCwgMjUxLCAxMDEsIDc3LCAxMDUsIDI1NCwgMTAsIDI0NCwgNjEsIAotICAgIDc3LCAxMDUsIDI1NCwgMTAsIDIyMiwgOTUsIDc3LCAxMDUsIDI1NCwgMTAsIDIxNywgMTIyLCA3NywgMTA1LCAyNTQsIDEwLCAKLSAgICAyNDMsIDIzMCwgNzcsIDEwNSwgMjU0LCAxMCwgMjQxLCAyMDgsIDc3LCAxMDUsIDI1NCwgMTAsIDI0NSwgMTgwLCA3NywgCi0gICAgMTA1LCAyNTQsIDEwLCAyMzEsIDI0OSwgNzcsIDIwMiwgMSwgMjUxLCA1NCwgMjAyLCAxLCAyMTIsIDM3LCAyMDIsIDEsIAotICAgIDIzNSwgMTEwLCAyMDIsIDEsIDI0MiwgOTIsIDIwMiwgMSwgMjQ1LCAxNjUsIDIwMiwgMSwgMjQ1LCA5MywgMjAyLCAxLCAKLSAgICAyMjcsIDQ5LCAyMDIsIDEsIDIyNywgNTMsIDIwMiwgMSwgMjM1LCAxNzcsIDIwMiwgMSwgMjU0LCAxMiwgMjAyLCAxLCAyMzUsIAotICAgIDIyMSwgMjAyLCAxLCAyMTUsIDEzOSwgMjAyLCAxLCAyMzYsIDExLCAyMDIsIDEsIDIyOSwgMTQyLCAyMDIsIDEsIDI1NCwgCi0gICAgMTAyLCAyMDIsIDEsIDI1MywgMTAzLCAyMDIsIDEsIDI1NCwgNDUsIDIwMiwgMSwgMjI3LCA3MCwgMjAyLCAxLCAyMjcsIDU1LCAKLSAgICAyMDIsIDEsIDIzNSwgMjE4LCAyMDIsIDQwLCAxLCAyMjYsIDIyOSwgMjAyLCA0MCwgMSwgMjE4LCA5OSwgMjAyLCA0MCwgMSwgCi0gICAgMjM1LCAyNywgMjAyLCA0MCwgMSwgMjQyLCA0MSwgMjAyLCAxLCAyNDIsIDIyNiwgMjAyLCAxLCAyMzMsIDI2LCAyMDIsIDEsIAotICAgIDIxMSwgMjQ5LCA5LCAyMTksIDQ1LCAyMTgsIDk5LCA5LCAyMTksIDQ1LCAyMTMsIDI0NSwgOSwgMjE5LCA0NSwgMjEzLCAKLSAgICAxNDYsIDksIDIxOSwgNDUsIDI1MSwgOCwgOSwgMjE5LCA0NSwgMjE4LCAxOTksIDksIDIxOSwgNDUsIDI0MCwgMTUwLCA5LCAKLSAgICAyMTksIDQ1LCAyNDAsIDE1NCwgOSwgMjE5LCA0NSwgMjQwLCAyMTgsIDksIDIxOSwgNDUsIDI0MCwgMTUxLCA5LCAyMTksIAotICAgIDQ1LCAyMTgsIDEwMiwgOSwgMjE5LCA0NSwgMjQwLCAxNTMsIDksIDIxOSwgNDUsIDI0MCwgMTQ5LCA5LCAyMTksIDQ1LCAKLSAgICAyNDAsIDIxNiwgOSwgMjE5LCA0NSwgMjQwLCAxNTIsIDksIDIxOSwgNDUsIDI0MCwgMTQ4LCA5LCAyMTksIDQ1LCAyMDQsIDksIAotICAgIDIxOSwgNDUsIDI0MiwgNDEsIDksIDIxOSwgNDUsIDE5NywgOSwgMjE5LCA0NSwgMjI2LCAyMjksIDksIDIxOSwgNDUsIDIxOSwgCi0gICAgMjA4LCA5LCAyMTksIDQ1LCAyNDksIDMsIDksIDIxOSwgNDUsIDI0MCwgMTU1LCA5LCAyMTksIDQ1LCAyNDEsIDE3NSwgOSwgCi0gICAgMjE5LCA0NSwgMjE4LCAxMTEsIDksIDIxOSwgNDUsIDIxOCwgMTc4LCA5LCAyMTksIDQ1LCAyMTksIDEwNywgOSwgMjE5LCAKLSAgICA0NSwgMjIxLCAzMSwgOSwgMjE5LCA0NSwgMjI2LCA5OCwgOSwgMjE5LCA0NSwgMjI0LCAyNDIsIDksIDIxOSwgNDUsIDIxNiwgCi0gICAgMjUzLCA5LCAyMTksIDQ1LCAyMTgsIDEwMSwgOSwgMjE5LCA0NSwgMjE4LCAxODksIDksIDIxOSwgNDUsIDI0MCwgMTYyLCA5LCAKLSAgICAyMTksIDQ1LCAyNDAsIDE0NywgOSwgMjE5LCA0NSwgMjI2LCAyNSwgOSwgMjE5LCA0NSwgMjI0LCAyNDAsIDU2LCAxLCAzLCAKLSAgICAyMzMsIDIzOCwgNTYsIDEsIDMsIDIyMCwgMTE3LCA1NiwgMSwgMywgMjE5LCAyNywgNTYsIDEsIDMsIDEwOCwgNTYsIDEsIDMsIAotICAgIDIyOCwgOTIsIDU2LCAxLCAzLCAxNTksIDU2LCAxLCAzLCAyNDEsIDE2NSwgNTYsIDEsIDMsIDI0MCwgMjEyLCA1NiwgMSwgMywgCi0gICAgMjQxLCAyMjIsIDU2LCAxLCAzLCAyNDEsIDU0LCA1NiwgMSwgMywgMjMwLCAxNzIsIDU2LCAxLCAzLCAyMDMsIDU2LCAxLCAzLCAKLSAgICAyMjMsIDE4OCwgNTYsIDEsIDMsIDIyMywgNTEsIDU2LCAxLCAzLCAyMjQsIDIxLCA1NiwgMSwgMywgMjIzLCAxMTIsIDg2LCAKLSAgICAyMywgMjM0LCA2NywgODYsIDIzLCAyMjksIDU3LCA4NiwgMjMsIDIxNywgNTUsIDg2LCAyMywgMjIzLCAxNzksIDg2LCAyMywgCi0gICAgMjMxLCAzMCwgODYsIDIzLCAyMjUsIDIyNywgODYsIDIzLCAyMjAsIDc2LCA4NiwgMjMsIDIzNiwgNTEsIDg2LCAyMywgMjQ5LCAKLSAgICAyMzksIDg2LCAyMywgMjUwLCA0MywgODYsIDIzLCAyMzQsIDExNiwgODYsIDIzLCAyMTcsIDEyNiwgODYsIDIzLCAyMjYsIDcsIAotICAgIDg2LCAyMywgMjQxLCAxNTgsIDg2LCAyMywgMjM0LCA2OCwgNjEsIDg2LCAyMywgMjI5LCA1OCwgNjEsIDg2LCAyMywgMjE3LCAKLSAgICA1NiwgNjEsIDg2LCAyMywgMjIzLCAxODAsIDYxLCA4NiwgMjMsIDIzMSwgMzEsIDYxLCA4NiwgMjMsIDIyNSwgMjI4LCA2MSwgCi0gICAgODYsIDIzLCAyMjAsIDc3LCA2MSwgODYsIDIzLCAyMzYsIDUyLCA2MSwgODYsIDIzLCAyNDksIDI0MCwgNjEsIDg2LCAyMywgCi0gICAgMjUwLCA0NCwgNjEsIDg2LCAyMywgMjM0LCAxMTcsIDYxLCA4NiwgMjMsIDIxNywgMTI3LCA2MSwgODYsIDIzLCAyMjYsIDgsIAotICAgIDYxLCA4NiwgMjMsIDI0MSwgMTU5LCA2MSwgODYsIDIzLCAyNDksIDI0MCwgNjksIDg2LCAyMzQsIDEyLCAxMzcsIDIyNywgCi0gICAgODMsIDg2LCAyMzQsIDEyLCAxMzcsIDE1NywgMjQwLCAyMTIsIDg2LCAxNDMsIDExNiwgODYsIDE0MywgMTA5LCA4NiwgMTQzLCAKLSAgICAxNjYsIDg2LCAxNDMsIDE2MywgODYsIDE0MywgMTgwLCA4NiwgMTQzLCAxODksIDg2LCAxNDMsIDE5OCwgODYsIDE0MywgCi0gICAgMTk1LCA4NiwgMTQzLCAyMDAsIDg2LCAxNDMsIDIxNywgMjAwLCA4NiwgMTQzLCAyMzAsIDE5OCwgODYsIDE0MywgMjQ0LCAKLSAgICA2NSwgODYsIDE0MywgMjE0LCAyNCwgODYsIDE0MywgMjEzLCAyMDEsIDg2LCAxNDMsIDIzMSwgMTA2LCA4NiwgMTQzLCAyNDUsIAotICAgIDE3OSwgODYsIDE0MywgMjE4LCAyMzgsIDg2LCAxNDMsIDIxOSwgNzIsIDg2LCAxNDMsIDI0MSwgMjI4LCA4NiwgMTQzLCAKLSAgICAyMTksIDIzOCwgODYsIDE0MywgMjMwLCAyNCwgODYsIDE0MywgMjE5LCAxOTIsIDg2LCAxNDMsIDI0NCwgNzEsIDg2LCAxNDMsIAotICAgIDI0OSwgMTQwLCA4NiwgMTQzLCAyMzMsIDE0OCwgODYsIDE0MywgMjIzLCAyMjMsIDg2LCAxNDMsIDI1MCwgMjAzLCA4NiwgCi0gICAgMTQzLCAyMTksIDMwLCA4NiwgMTQzLCAyMTgsIDIyMCwgODYsIDE0MywgMjQ1LCA4NiwgODYsIDE0MywgMjIzLCAyMTUsIDg2LCAKLSAgICAxNDMsIDI1NCwgNTksIDg2LCAxNDMsIDI0NCwgOTcsIDg2LCAxNDMsIDIyMywgMjEzLCA4NiwgMTQzLCAyMjEsIDc2LCA4NiwgCi0gICAgMTQzLCAyMjQsIDIwLCAzNiwgMTQzLCAyMjQsIDE1NywgMzYsIDE0MywgMjM0LCA4OSwgMzYsIDE0MywgMjIyLCAxMTYsIDM2LCAKLSAgICAxNDMsIDIzNCwgOCwgMzYsIDUwLCAyMTcsIDIwMSwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDIxNiwgMzksIAotICAgIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMTcsIDExNiwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIAotICAgIDI0MywgMjQxLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjQ0LCA4NCwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAKLSAgICAzNiwgNTAsIDIyMCwgNDAsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMjEsIDM4LCAyMjcsIDYzLCA4MywgCi0gICAgMjE5LCAxNjYsIDM2LCA1MCwgMjQ1LCAxNDIsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMjI2LCAxMjMsIDUyLCAzNiwgNTAsIAotICAgIDIxNiwgMzksIDExNiwgMzYsIDUwLCAyMTYsIDM5LCAxMDksIDM2LCA1MCwgMjE2LCAzOSwgMTY2LCAzNiwgNTAsIDIxNiwgCi0gICAgMzksIDE2MywgMzYsIDUwLCAyMTYsIDM5LCAxODAsIDM2LCA1MCwgMjE2LCAzOSwgMTg5LCAzNiwgNTAsIDIxNiwgMzksIAotICAgIDE5OCwgMzYsIDUwLCAyMTYsIDM5LCAxOTUsIDM2LCA1MCwgMjE2LCAzOSwgMjAwLCAzNiwgNTAsIDIxNywgMTE1LCAzNiwgCi0gICAgNTAsIDIxNywgMTE2LCAxMTYsIDM2LCA1MCwgMjE3LCAxMTYsIDEwOSwgMzYsIDUwLCAyMTcsIDExNiwgMTY2LCAzNiwgNTAsIAotICAgIDIxNywgMTE2LCAxNjMsIDM2LCA1MCwgMjE3LCAxMTYsIDE4MCwgMzYsIDIzLCAyMzQsIDY3LCAzNiwgMjMsIDIyOSwgNTcsIAotICAgIDM2LCAyMywgMjE3LCA1NSwgMzYsIDIzLCAyMjMsIDE3OSwgMzYsIDIzLCAyMzEsIDMwLCAzNiwgMjMsIDIyNSwgMjI3LCAzNiwgCi0gICAgMjMsIDIyMCwgNzYsIDM2LCAyMywgMjM2LCA1MSwgMzYsIDIzLCAyNDksIDIzOSwgMzYsIDIzLCAyNTAsIDQzLCAzNiwgMjMsIAotICAgIDIzNCwgMTE2LCAzNiwgMjMsIDIxNywgMTI2LCAzNiwgMjMsIDIyNiwgNywgMzYsIDIzLCAyNDEsIDE1OCwgMzYsIDIzLCAKLSAgICAyMzQsIDY4LCA2MSwgMzYsIDIzLCAyMjksIDU4LCA2MSwgMzYsIDIzLCAyMTcsIDU2LCA2MSwgMzYsIDIzLCAyMjMsIDE4MCwgCi0gICAgNjEsIDM2LCAyMywgMjMxLCAzMSwgNjEsIDM2LCAyMywgMjI1LCAyMjgsIDYxLCAzNiwgMjMsIDIyMCwgNzcsIDYxLCAzNiwgCi0gICAgMjMsIDIzNiwgNTIsIDYxLCAzNiwgMjMsIDI0OSwgMjQwLCA2MSwgMzYsIDIzLCAyNTAsIDQ0LCA2MSwgMzYsIDIzLCAyMzQsIAotICAgIDExNywgNjEsIDM2LCAyMywgMjE3LCAxMjcsIDYxLCAzNiwgMjMsIDIyNiwgOCwgNjEsIDM2LCAyMywgMjQxLCAxNTksIDYxLCAKLSAgICAzNiwgMjM0LCAxMiwgMTM3LCAyNTAsIDg0LCAzNiwgMjM0LCAxMiwgMTM3LCAyMzUsIDUwLCAzNiwgMjMsIDIzNiwgNTIsIAotICAgIDY5LCAyMzQsIDEyLCAyMTksIDk4LCA4NywgMzYsIDE0MywgMTE2LCAzNiwgMTQzLCAxMDksIDM2LCAxNDMsIDE2NiwgMzYsIAotICAgIDE0MywgMTYzLCAzNiwgMTQzLCAxODAsIDM2LCAxNDMsIDE4OSwgMzYsIDE0MywgMTk4LCAzNiwgMTQzLCAxOTUsIDM2LCAKLSAgICAxNDMsIDIwMCwgMzYsIDE0MywgMjE3LCAyMDAsIDM2LCAxNDMsIDIzMCwgMTk4LCAzNiwgMTQzLCAyNDQsIDY1LCAzNiwgCi0gICAgMTQzLCAyMTQsIDI0LCAzNiwgMTQzLCAyMTMsIDIwMSwgMzYsIDE0MywgMjMxLCAxMDYsIDM2LCAxNDMsIDI0NSwgMTc5LCAKLSAgICAzNiwgMTQzLCAyMTgsIDIzOCwgMzYsIDE0MywgMjE5LCA3MiwgMzYsIDE0MywgMjQxLCAyMjgsIDM2LCAxNDMsIDIxOSwgCi0gICAgMjM4LCAzNiwgMTQzLCAyMzAsIDI0LCAzNiwgMTQzLCAyMTksIDE5MiwgMzYsIDE0MywgMjQ0LCA3MSwgMzYsIDE0MywgMjQ5LCAKLSAgICAxNDAsIDM2LCAxNDMsIDIzMywgMTQ4LCAzNiwgMTQzLCAyMjIsIDkzLCAzNiwgMTQzLCAyMzEsIDI1MiwgMzYsIDE0MywgCi0gICAgMjQ0LCAxMDYsIDM2LCAxNDMsIDIxOCwgMjUwLCAzNiwgMTQzLCAyNDUsIDEsIDM2LCAxNDMsIDIyNSwgNjgsIDM2LCAxNDMsIAotICAgIDI1MywgMTEyLCAzNiwgMTQzLCAyMzUsIDE1NywgMzYsIDE0MywgMjIzLCAyMTMsIDM2LCAxNDMsIDI0OSwgMTAzLCAzNiwgCi0gICAgMTQzLCAyNDksIDk0LCAzNiwgMTQzLCAyNDEsIDE1MSwgMzYsIDE0MywgMjUwLCAxMDgsIDM2LCAxNDMsIDIzMiwgMTY1LCAKLSAgICAzNiwgMTQzLCAyMzMsIDcwLCAzNiwgMTQzLCAyMjMsIDE0OCwgMzYsIDE0MywgMjMxLCAxNDgsIDM2LCAxNDMsIDIyMywgCi0gICAgMjM3LCAzNiwgMTQzLCAyMTksIDMwLCAzNiwgMTQzLCAyMTgsIDIyMCwgMzYsIDE0MywgMjQ1LCA4NiwgMzYsIDE0MywgMjIzLCAKLSAgICAyMTUsIDM2LCAxNDMsIDI1NCwgNTksIDM2LCAxNDMsIDIyOSwgNDMsIDM2LCA1MCwgMjE3LCAxMTYsIDE4OSwgMzYsIDUwLCAKLSAgICAyMTcsIDExNiwgMTk4LCAzNiwgNTAsIDIxNywgMTE2LCAxOTUsIDM2LCA1MCwgMjE3LCAxMTYsIDIwMCwgMzYsIDUwLCAyNDMsIAotICAgIDI0MCwgMzYsIDUwLCAyNDMsIDI0MSwgMTE2LCAzNiwgNTAsIDI0MywgMjQxLCAxMDksIDM2LCA1MCwgMjQzLCAyNDEsIDE2NiwgCi0gICAgMzYsIDUwLCAyNDMsIDI0MSwgMTYzLCAzNiwgNTAsIDI0MywgMjQxLCAxODAsIDM2LCA1MCwgMjQzLCAyNDEsIDE4OSwgMzYsIAotICAgIDUwLCAyNDMsIDI0MSwgMTk4LCAzNiwgNTAsIDI0MywgMjQxLCAxOTUsIDM2LCA1MCwgMjQzLCAyNDEsIDIwMCwgMzYsIDUwLCAKLSAgICAyNDQsIDgzLCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDEzMywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ0LCAxMTcsIDEwNSwgCi0gICAgMjAxLCAxNiwgMzEsIDIzMSwgMjIzLCAxMDUsIDIwMSwgMTYsIDMxLCAyNTMsIDIxNywgMTA1LCAyMDEsIDE2LCAzMSwgMjMxLCAKLSAgICAxOTYsIDEwNSwgMjAxLCAxNiwgMzEsIDIzNSwgNDgsIDEwNSwgMjAxLCAxNiwgMzEsIDIzNSwgNDksIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI1MywgMTA0LCAxMDUsIDIwMSwgMTYsIDMxLCAyMjEsIDU2LCAxMDUsIDIwMSwgMTYsIDMxLCAyMjcsIDEwNCwgMTA1LCAKLSAgICAyMDEsIDE2LCAzMSwgMjI4LCAxNTEsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgMzYsIDQxLCAyNDEsIDE3NSwgNDEsIDI0NSwgCi0gICAgNTEsIDQxLCAyNDUsIDEwLCAyMzIsIDI0OCwgMjMzLCAxMiwgNTIsIDM2LCA1NiwgNjEsIDM2LCA1NiwgNzIsIDM2LCA1NiwgCi0gICAgNjksIDM2LCA1NiwgNzQsIDM2LCA1NiwgNzUsIDM2LCA1NiwgMTgxLCAzNiwgNTYsIDIzNCwgMTAxLCAzNiwgNTYsIDIzMywgCi0gICAgMjM4LCAzNiwgNTYsIDIzNCwgMTg4LCAzNiwgNTYsIDIzNCwgMzcsIDM2LCA1NiwgMjIyLCAyMDIsIDM2LCA1NiwgMjIwLCAKLSAgICAxMTcsIDM2LCA1NiwgMjE5LCAyNywgMzYsIDU2LCAyMjIsIDEwMCwgMzYsIDU2LCAyMTksIDI0MiwgMzYsIDU2LCAyMTgsIAotICAgIDUyLCAzNiwgNTYsIDIxNywgNzEsIDM2LCA1NiwgMjE2LCA4MiwgMzYsIDU2LCAyMTcsIDIyOSwgMzYsIDU2LCAxMDgsIDM2LCAKLSAgICA1NiwgMjA1LCAzNiwgNTYsIDIyOSwgNjQsIDM2LCA1NiwgMjI4LCA5MiwgMzYsIDU2LCAyMjksIDE4NywgMzYsIDU2LCAyMjgsIAotICAgIDE4NSwgMzYsIDU2LCAxNTksIDM2LCA1NiwgMjQxLCAxNjUsIDM2LCA1NiwgMjQwLCAyMTIsIDM2LCA1NiwgMjQxLCAyMjIsIAotICAgIDM2LCA1NiwgMjQxLCA1NCwgMzYsIDU2LCAxODgsIDM2LCA1NiwgMjMxLCA0MiwgMzYsIDU2LCAyMzAsIDE3MiwgMzYsIDU2LCAKLSAgICAyMzEsIDE1NiwgMzYsIDU2LCAyMzAsIDIzMSwgMzYsIDU2LCAxODYsIDM2LCA1NiwgMjEyLCAyMDMsIDM2LCA1NiwgMjEyLCAKLSAgICAyMzUsIDM2LCA1NiwgMjAzLCAzNiwgNTYsIDIyMywgMTg4LCAzNiwgNTYsIDIyMywgNTEsIDM2LCA1NiwgMjI0LCAyMSwgMzYsIAotICAgIDU2LCAyMjMsIDExMiwgMzYsIDU2LCAyMTQsIDQ5LCAzNiwgNTYsIDIxMywgMjM1LCAzNiwgNTYsIDIxNCwgNiwgMzYsIDU2LCAKLSAgICAyMTMsIDIxNCwgNDEsIDI1MywgMjM4LCA0MSwgMjUzLCAxNTQsIDQxLCAyNTQsIDYsIDQxLCAyNTQsIDE5MCwgNDEsIDIzNSwgCi0gICAgMjIzLCA0MSwgMjM1LCAxOTMsIDQxLCAyMTUsIDEzNywgNDEsIDI0NSwgMzEsIDQxLCAyNDUsIDE2MywgNDEsIDIyNywgNTIsIAotICAgIDQxLCAyMjcsIDQ2LCA0MSwgMjM0LCAyNDksIDQxLCAyMzQsIDIxOSwgNDEsIDIzNCwgMjE2LCA0MSwgMjQzLCA2OCwgNDEsIAotICAgIDI0MywgNzcsIDQxLCAyNDIsIDE4MCwgNDEsIDI0MiwgMTc2LCA0MSwgMjMzLCAxNzIsIDQxLCAyNDIsIDE2OSwgNDEsIDIzNCwgCi0gICAgODEsIDQxLCAyMzQsIDgwLCA0MSwgMjM0LCA3OSwgNDEsIDIzNCwgNzgsIDQxLCAyNDIsIDY3LCA0MSwgMjQyLCA2NiwgNDEsIAotICAgIDIzMywgMjE0LCA0MSwgMjMzLCAyMTYsIDQxLCAyMzQsIDE4NCwgNDEsIDIzNCwgMTAsIDQxLCAyMzQsIDE3LCA0MSwgMjIyLCAKLSAgICAxODcsIDQxLCAyMjIsIDE1MywgNDEsIDIyMCwgNTcsIDQxLCAyMjEsIDYxLCA0MSwgMjIxLCA2MCwgNDEsIDI0OCwgMTYxLCAKLSAgICA0MSwgMjQ3LCAyNDMsIDQxLCAyNDcsIDc1LCA0MSwgMjE2LCAyNDMsIDQxLCAyMzAsIDIwLCA0MSwgMjI4LCAxNTIsIDQxLCAKLSAgICAyNDIsIDE0LCA0MSwgMjI2LCAyMDgsIDQxLCAyMjYsIDIwNywgNDEsIDI1MiwgMTA1LCA0MSwgMjI1LCAyMzcsIDQxLCAyMjUsIAotICAgIDIwMSwgNDEsIDIyNSwgMjAyLCA0MSwgMjUxLCAxNTcsIDQxLCAyNDAsIDIxMSwgNDEsIDI0MCwgMjA3LCA0MSwgMjUxLCAyMCwgCi0gICAgNDEsIDI0MCwgMTk0LCA0MSwgMjQxLCAxOTksIDQxLCAyMjYsIDM1LCA0MSwgMjI2LCA2OSwgNDEsIDI0MSwgMTgzLCA0MSwgCi0gICAgMjI2LCA2NiwgNDEsIDIyNiwgODIsIDQxLCAyNTEsIDIzNywgNDEsIDIyNSwgMTQwLCA0MSwgMjUxLCAxMDYsIDQxLCAyNDEsIAotICAgIDQyLCA0MSwgMjI1LCAxMzAsIDQxLCAyNDEsIDM1LCA0MSwgMjQxLCAzNywgNDEsIDIzMiwgNywgNDEsIDIzMiwgMywgNDEsIAotICAgIDIzMiwgMTEsIDQxLCAyMzEsIDIxMywgNDEsIDIzMSwgMjM4LCA0MSwgMjMxLCAxMCwgNDEsIDIzMCwgMjQ1LCA0MSwgMjMwLCAKLSAgICAyNDQsIDQxLCAyMzEsIDEzOCwgNDEsIDIzMSwgMTM1LCA0MSwgMjMxLCAxMzksIDQxLCAyMTMsIDkwLCA0MSwgMjEzLCA4OCwgCi0gICAgNDEsIDIxMiwgMTkyLCA0MSwgMjIzLCAxMjMsIDQxLCAyMjMsIDEyNywgNDEsIDIyMywgMjgsIDQxLCAyMjMsIDIzLCA0MSwgCi0gICAgMjIzLCAyMzUsIDQxLCAyMjMsIDIzMiwgNDEsIDIxNCwgMjIsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTIsIDc5LCAKLSAgICAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTE2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTA5LCAxMDUsIAotICAgIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTY2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTYzLCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMTgwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTg5LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDAsIDIyNiwgMTk4LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMTk1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIAotICAgIDIyNiwgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE3LCAyMDAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgCi0gICAgMjI2LCAyNDUsIDEyNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgNDEsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0MCwgMjI2LCAyMTcsIDExNywgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDI0MywgMjMxLCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDAsIDIyNiwgMjQ0LCA4NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIyMCwgNDcsIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI0MCwgMjI2LCAyMjEsIDQwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjQ1LCAxNDcsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAyMjksIDI4LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAzOCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzIsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDI4LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAyOSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzQsIDQxLCAyNDAsIAotICAgIDIxNywgNDEsIDI0OCwgMTY0LCA0MSwgMjUzLCAxMDgsIDQxLCAxMzQsIDQxLCAyMjYsIDI0OSwgNDEsIDIyNiwgOTksIDQxLCAKLSAgICAyNDcsIDEwMSwgNDEsIDI0NywgMTAyLCAyMTksIDE2NSwgNDEsIDI0NywgMTAyLCAyNDksIDQ5LCA0MSwgMjM1LCAxNTQsIAotICAgIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyNDEsIDIwMCwgNDEsIDI0NSwgNTQsIDIzMCwgMjUsIDIxOCwgMTIwLCA0MSwgMjQ1LCAKLSAgICA1NCwgMjMwLCAyNSwgMjE4LCAyNCwgNDEsIDI0NSwgNTQsIDIzMCwgMjUsIDIzMSwgMTM0LCA0MSwgMjQ5LCA5NiwgNDEsIAotICAgIDIyNiwgMjE0LCAyNTQsIDM0LCA0MSwgMjA1LCA0MSwgMjMwLCAxNzMsIDYxLCA0MSwgMTg4LCA0MSwgMTgxLCA0MSwgMjM0LCAKLSAgICAxOTEsIDQxLCAyMzEsIDE5MiwgNDEsIDI0MywgNTYsIDQxLCAyNTAsIDIwNiwgNDEsIDIzNCwgMTkwLCA0MSwgMjI2LCAyNiwgCi0gICAgNDEsIDIyOSwgMTYzLCA0MSwgMjMwLCAxNzMsIDI0NCwgMjMwLCA0MSwgMjMwLCAxNzMsIDI0MywgMTc3LCA0MSwgMjMxLCAKLSAgICA4MiwgNDEsIDIzNCwgMTQwLCA0MSwgMjQwLCAxNTUsIDQxLCAyMzQsIDEwMywgNDEsIDIzMSwgNDQsIDQxLCAyNDIsIDE5MiwgCi0gICAgNDEsIDIxNywgNzMsIDQxLCAyMzAsIDE3MywgMTUwLCA0MSwgMjMwLCAyMzgsIDQxLCAyNDcsIDEwOSwgNDEsIDIzNCwgNDksIAotICAgIDQxLCAyNDQsIDE0LCA0MSwgMjI4LCAyMDAsIDQxLCAyMzAsIDE3MywgMTgzLCA0MSwgMjMwLCAyMzUsIDQxLCAyNDksIDE3NiwgCi0gICAgNDEsIDIzNCwgNDMsIDQxLCAyMzAsIDIzNiwgMjE5LCAxNjUsIDQxLCAyNDksIDE3NywgMjE5LCAxNjUsIDQxLCAyMzIsIAotICAgIDExMCwgMjE5LCAxNjUsIDQxLCAyMzQsIDQ0LCAyMTksIDE2NSwgNDEsIDIzMCwgMjM2LCAyNDksIDQ5LCA0MSwgMjQ5LCAKLSAgICAxNzcsIDI0OSwgNDksIDQxLCAyMzIsIDExMCwgMjQ5LCA0OSwgNDEsIDIzNCwgNDQsIDI0OSwgNDksIDQxLCAyMzIsIDExMCwgCi0gICAgMTEwLCAxOTcsIDQxLCAyMzIsIDExMCwgMTEwLCAyMjMsIDQsIDIxOSwgMTY1LCA0MSwgMTkzLCA0MSwgMjM0LCA0LCA0MSwgCi0gICAgMjMwLCAxNzUsIDQxLCAyNDIsIDEyNywgNDEsIDIyNCwgNjYsIDQxLCAyMjQsIDY3LCAxMTAsIDE5NywgNDEsIDIyNCwgNjcsIAotICAgIDExMCwgMjIzLCA0LCAyMTksIDE2NSwgNDEsIDIyNSwgNDcsIDQxLCAyMjgsIDEyNCwgNDEsIDIzMCwgMTczLCAxOTcsIDQxLCAKLSAgICAyMzAsIDE3NCwgNDEsIDIyNSwgNCwgNDEsIDIyOCwgMzMsIDQxLCAyMzAsIDE3MywgMjE1LCA3OSwgNDEsIDIzMCwgMTIwLCAKLSAgICA0MSwgMjMzLCAyMDcsIDQxLCAyMzAsIDEyMSwgMjMxLCAxMzgsIDQxLCAyMjUsIDMsIDQxLCAyMjgsIDMyLCA0MSwgMjMwLCAKLSAgICAxNzMsIDIxNCwgODIsIDQxLCAyMzAsIDExNSwgNDEsIDIzMywgMjA1LCA0MSwgMjMwLCAxMTYsIDIzMSwgMTM4LCA0MSwgCi0gICAgMjM1LCAyOCwgMjI3LCA4NiwgNDEsIDIzMiwgMTEwLCAyMjcsIDg2LCA0MSwgMjU0LCA0NSwgNDEsIDI1MSwgODcsIDQxLCAKLSAgICAyNTAsIDE0NywgNDEsIDI1MCwgMTI1LCA0MSwgMjUwLCAyNTMsIDExMCwgMjM0LCAxNDAsIDQxLCAyNDksIDE3NSwgNDEsIAotICAgIDI0OCwgODgsIDQxLCAyNDIsIDUzLCA0MSwgMTU5LCA0MSwgMjQwLCAyMTgsIDQxLCAyMzUsIDI1MSwgNDEsIDIzNCwgNTYsIAotICAgIDQxLCAyMzQsIDQ0LCAyNTAsIDE4MiwgNDEsIDIzMywgMjQwLCA0MSwgMjMyLCAyMTEsIDQxLCAyMzIsIDIxMCwgNDEsIDIzMiwgCi0gICAgMjAwLCA0MSwgMjMyLCAxMjIsIDQxLCAyMzEsIDE5MywgMjIwLCA3LCA0MSwgMjMxLCA5LCA0MSwgMjMwLCAyMjIsIDQxLCAKLSAgICAyMjYsIDI0LCA0MSwgMjI1LCAxNTMsIDQxLCAyMjUsIDk5LCA0MSwgMjI1LCA5NywgNDEsIDIxOSwgMTU5LCA0MSwgMjE4LCAKLSAgICAyMDMsIDQxLCAyMTQsIDgsIDQxLCAyMTUsIDgwLCAxMTAsIDE4MywgNDEsIDExOCwgMTEwLCAxODMsIDEwNSwgMjAxLCAxNiwgCi0gICAgMzEsIDI0OCwgOTIsIDExNiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTA5LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIAotICAgIDkyLCAxNjYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE2MywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTgwLCAKLSAgICAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxODksIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE5OCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQ4LCA5MiwgMTk1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMDAsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNywgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyNDUsIDEyNCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCA0MSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE3LCAxMTcsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDI0MywgMjMxLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyNDQsIDg3LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMjAsIDQ3LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMjEsIDQwLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyNDUsIDE0NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjI5LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzMiwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAyOSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzNSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzMSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE2LCAzNywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjE2LCAzMywgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjE3LCAxMTUsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNywgMTE0LCA0MSwgMjQzLCA5NCwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ5LCA4MCwgMjQxLCAyMDcsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIyNCwgMTUsIAotICAgIDI0NSwgMTc5LCAyNDEsIDE3NywgMzEsIDI0NywgMTgzLCAyNTMsIDEyMywgMjE3LCAxNDksIDI1MSwgMjMyLCAyNDEsIDE3NywgCi0gICAgMzEsIDIxMiwgMjE0LCAyNDQsIDcsIDI0MSwgMTc3LCAzMSwgMjE0LCA0MywgMjQxLCAxNzcsIDMxLCAyNDksIDE0MiwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTcsIDE0OSwgMjUzLCAxNzQsIDI0MSwgMTc3LCAzMSwgMjQxLCA0NiwgMjE2LCAyNDksIDI0MSwgMTc3LCAKLSAgICAzMSwgMywgMjE4LCAxMiwgMjQxLCAxNzcsIDMxLCAyMTYsIDE5NSwgMjQxLCAxNzcsIDMxLCAyMjYsIDk0LCAyNDEsIDE3NywgCi0gICAgMzEsIDIxOSwgOTcsIDI0MSwgMTc3LCAzMSwgMjQ0LCAxMDgsIDI0MSwgMTc3LCAzMSwgMjQyLCAxMDksIDIyNSwgMTIwLCAKLSAgICAyNDEsIDE3NywgMzEsIDIzMCwgMjI1LCAyNDEsIDE3NywgMzEsIDI0NSwgODUsIDI0MSwgMTc3LCAzMSwgMjQ0LCA4LCAyNDEsIAotICAgIDE3NywgMzEsIDIxMywgMTk0LCAyMjcsIDYzLCAyMTcsIDE0OSwgMjQ4LCAzNywgMjQxLCAxNzcsIDMxLCAyNTMsIDIyMSwgCi0gICAgMjQxLCAxNzcsIDMxLCAyNDksIDEyNCwgMjQxLCAxNzcsIDMxLCAyNTEsIDE1MCwgMjE3LCA5MiwgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDIsIDEyNSwgMjQxLCAxNzcsIDMxLCAyMTksIDE3NywgMjUzLCAyMzcsIDI0MSwgMTc3LCAzMSwgMjIzLCAyMDUsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjM1LCAyMTcsIDI0MSwgMTc3LCAzMSwgMjQyLCAxMDksIDIxOCwgMTIsIDI0MSwgMTc3LCAzMSwgMjMwLCAKLSAgICAxODEsIDI0OSwgOTgsIDI0MSwgMTc3LCAzMSwgMjQyLCAxMDksIDIyNSwgNzcsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIAotICAgIDI1NCwgMTc4LCAyMTQsIDI0LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyNDksIDIwMSwgMjQ0LCA2NSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMzUsIDIzMCwgMjQxLCAxNzcsIDMxLCAyNDYsIDEyLCAyNDEsIDE3NywgMzEsIDIyMywgMjA4LCAyNDEsIDE3NywgCi0gICAgMzEsIDI0MiwgMTA5LCAyMjUsIDEwNCwgMjQxLCAxNzcsIDMxLCAyMjUsIDYxLCAyNDEsIDE3NywgMzEsIDI0OCwgMTA2LCAKLSAgICA2NSwgMjE3LCAxNDksIDIzMywgMiwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ0LCAxNDIsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjI3LCAyOSwgMjQxLCAxNzcsIDMxLCAyMjcsIDEwOCwgMjQxLCAxNzcsIDMxLCAyNDgsIDEwLCAyNDEsIDE3NywgMzEsIAotICAgIDI0OCwgMzAsIDI0MSwgMTc3LCAzMSwgMjM1LCAyNDMsIDI0MSwgMTc3LCAzMSwgMjUxLCA3NywgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDksIDE1OSwgMjExLCAyMTEsIDIzMSwgMTQxLCAyNDEsIDE3NywgMzEsIDI0MywgNjMsIDIxNiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDIyNSwgMTIsIDIxNSwgMTI1LCAyNDEsIDE3NywgMzEsIDIyNywgMjgsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIAotICAgIDIxMywgMjU0LCAyNDEsIDE3NywgMzEsIDIyMywgMTk4LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyNTAsIDE1MywgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTcsIDE0OSwgMjUzLCAxNzAsIDIxNywgODcsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzNCwgMTg1LCAKLSAgICAyMTksIDc0LCAyMzAsIDE4NSwgMjQxLCAxNzcsIDMxLCAyNDcsIDIzOSwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjMxLCAKLSAgICAyMTUsIDIzMiwgOCwgMjQxLCAxNzcsIDMxLCAyNTQsIDE3OSwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjE0LCAzOCwgCi0gICAgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQzLCAyMywgMjEzLCAyMjQsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzNSwgCi0gICAgNTUsIDIzMywgMTMxLCAyNDEsIDE3NywgMzEsIDI0NywgMTM2LCAyNDEsIDE3NywgMzEsIDIzMiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDIzNSwgMjIwLCAyMTYsIDE0NSwgMjQxLCAxNzcsIDMxLCAzLCAyMjUsIDc3LCAyNDEsIDE3NywgMzEsIDI1NCwgMTIyLCAKLSAgICAyNDksIDE1MSwgMjQxLCAxNzcsIDMxLCAyNTEsIDIzNSwgMjQ5LCAxNTEsIDgsIDQsIDIzNSwgMTU4LCA4LCA0LCAyMzUsIAotICAgIDE1MSwgOCwgNCwgNzIsIDgsIDQsIDIzNSwgMTgwLCA4LCA0LCAyMzYsIDUzLCA4LCA0LCAyMzYsIDM2LCA4LCA0LCAyMzYsIAotICAgIDU1LCA4LCA0LCAyMzYsIDU0LCA4LCA0LCAyNTMsIDEyMiwgOCwgNCwgMjUzLCA4NSwgOCwgNCwgNjEsIDgsIDQsIDI1MywgCi0gICAgMjM5LCA4LCA0LCAyMTUsIDEzNSwgOCwgNCwgMjE1LCAxMzgsIDgsIDQsIDIxNSwgMTM2LCA4LCA0LCAyMjcsIDgsIDgsIDQsIAotICAgIDIyNiwgMjM4LCA4LCA0LCA3NSwgOCwgNCwgMjI3LCA0MSwgOCwgNCwgMjQ1LCAyLCA4LCA0LCA3NCwgOCwgNCwgMjEzLCAKLSAgICAxODMsIDgsIDQsIDI1MSwgMTUxLCA4LCA0LCAyNTEsIDE0OCwgOCwgNCwgMjUxLCAxODQsIDgsIDQsIDI1MSwgMTYxLCA4LCAKLSAgICA0LCAyNTEsIDE3NCwgOCwgNCwgMjUxLCAxNzMsIDgsIDQsIDI1MSwgMTc2LCA4LCA0LCAyNTEsIDE3NSwgOCwgNCwgMjUyLCAKLSAgICA0MSwgOCwgNCwgMjUyLCAzMywgOCwgNCwgMjUyLCAxMDcsIDgsIDQsIDI1MiwgNjEsIDgsIDQsIDI1MSwgMzAsIDgsIDQsIAotICAgIDI1MSwgMzQsIDgsIDQsIDI1MSwgMzEsIDgsIDQsIDI1MSwgMTA1LCA4LCA0LCAyNTEsIDg5LCA4LCA0LCAyNTEsIDEyOCwgOCwgCi0gICAgNCwgMjUxLCAxMTAsIDgsIDQsIDI1MSwgMTk4LCA4LCA0LCAyNTEsIDI1MSwgOCwgNCwgMjUxLCAyMTAsIDgsIDQsIDI1MSwgCi0gICAgMTYsIDgsIDQsIDI1MSwgMTMsIDgsIDQsIDI1MSwgNTQsIDgsIDQsIDI1MSwgMjksIDgsIDQsIDI1MSwgMjMsIDgsIDQsIAotICAgIDI1MSwgMjcsIDgsIDQsIDI1MSwgMSwgOCwgNCwgMjUxLCAwLCA4LCA0LCAyNTEsIDYsIDgsIDQsIDI1MSwgNCwgOCwgNCwgCi0gICAgMjUxLCAyLCA4LCA0LCAyNTEsIDMsIDgsIDQsIDIyNSwgMTgxLCA4LCA0LCAyMjUsIDE3NywgOCwgNCwgMjI1LCAyNDAsIDgsIAotICAgIDQsIDIyNSwgMTkxLCA4LCA0LCAyMjUsIDIwNywgOCwgNCwgMjI1LCAyMzQsIDgsIDQsIDIyNSwgMjMwLCA4LCA0LCAyMjYsIAotICAgIDExMywgOCwgNCwgMjI2LCAxMDQsIDgsIDQsIDE5MywgOCwgNCwgMjI2LCAxNDksIDgsIDQsIDIyNSwgMjEsIDgsIDQsIDIyNSwgCi0gICAgMjMsIDgsIDQsIDIyNSwgMjIsIDgsIDQsIDIyNSwgMTEzLCA4LCA0LCAyMjUsIDEwMiwgOCwgNCwgMjI1LCAxNTAsIDgsIDQsIAotICAgIDIyNSwgMTI1LCA4LCA0LCAyMjUsIDgsIDgsIDQsIDIyNSwgNSwgOCwgNCwgMjI1LCAzNSwgOCwgNCwgMjI1LCAyMCwgOCwgNCwgCi0gICAgMjI1LCAxMywgOCwgNCwgMjI1LCAxOCwgOCwgNCwgMjI0LCAyNDQsIDgsIDQsIDIyNCwgMjQzLCA4LCA0LCAyMjQsIDI0OCwgCi0gICAgOCwgNCwgMjI0LCAyNDcsIDgsIDQsIDIyNCwgMjQ1LCA4LCA0LCAyMjQsIDI0NiwgOCwgNCwgMjUyLCAxNiwgOCwgNCwgMjUyLCAKLSAgICAxNSwgOCwgNCwgMjUyLCAyMiwgOCwgNCwgMjUyLCAxNywgOCwgNCwgMjUyLCAxOSwgOCwgNCwgMjUyLCAxOCwgOCwgNCwgCi0gICAgMjUyLCAyMSwgOCwgNCwgMjUyLCAyMCwgOCwgNCwgMjUyLCAyOCwgOCwgNCwgMjUyLCAyNywgOCwgNCwgMjUyLCAzMSwgOCwgCi0gICAgNCwgMjUyLCAyOSwgOCwgNCwgMjUyLCA3LCA4LCA0LCAyNTIsIDksIDgsIDQsIDI1MiwgOCwgOCwgNCwgMjUyLCAxMiwgOCwgCi0gICAgNCwgMjUyLCAxMSwgOCwgNCwgMjUyLCAxNCwgOCwgNCwgMjUyLCAxMywgOCwgNCwgMjUyLCAyMywgOCwgNCwgMjUyLCAyNiwgCi0gICAgOCwgNCwgMjUyLCAyNCwgOCwgNCwgMjUyLCAzLCA4LCA0LCAyNTIsIDIsIDgsIDQsIDI1MiwgMTAsIDgsIDQsIDI1MiwgNiwgCi0gICAgOCwgNCwgMjUyLCA0LCA4LCA0LCAyNTIsIDUsIDgsIDQsIDI1MSwgMjU1LCA4LCA0LCAyNTEsIDI1NCwgOCwgNCwgMjUyLCAxLCAKLSAgICA4LCA0LCAyNTIsIDAsIDgsIDQsIDIyOSwgMjQ4LCA4LCA0LCAyMjksIDI0NywgOCwgNCwgMjI5LCAyNTMsIDgsIDQsIDIyOSwgCi0gICAgMjQ5LCA4LCA0LCAyMjksIDI1MCwgOCwgNCwgMjI5LCAyNTIsIDgsIDQsIDIyOSwgMjUxLCA4LCA0LCAyMjksIDI1NSwgOCwgCi0gICAgNCwgMjI5LCAyNTQsIDgsIDQsIDIzMCwgMSwgOCwgNCwgMjMwLCAwLCA4LCA0LCAyMjksIDI0NCwgOCwgNCwgMjI5LCAyNDMsIAotICAgIDgsIDQsIDIyOSwgMjQ2LCA4LCA0LCAyMjksIDI0NSwgOCwgNCwgMjI5LCAyMzgsIDgsIDQsIDIyOSwgMjM3LCA4LCA0LCAKLSAgICAyMjksIDI0MiwgOCwgNCwgMjI5LCAyNDEsIDgsIDQsIDIyOSwgMjM5LCA4LCA0LCAyMjksIDI0MCwgOCwgNCwgMjI5LCAyMzIsIAotICAgIDgsIDQsIDIyOSwgMjMxLCA4LCA0LCAyMjksIDIzNiwgOCwgNCwgMjI5LCAyMzUsIDgsIDQsIDIyOSwgMjMzLCA4LCA0LCAKLSAgICAyMjksIDIzNCwgOCwgNCwgMjQxLCA5NiwgOCwgNCwgMjQxLCA5NSwgOCwgNCwgMjQxLCAxMDEsIDgsIDQsIDI0MSwgOTcsIDgsIAotICAgIDQsIDI0MSwgOTgsIDgsIDQsIDI0MSwgMTAwLCA4LCA0LCAyNDEsIDk5LCA4LCA0LCAyNDEsIDEwNCwgOCwgNCwgMjQxLCAKLSAgICAxMDMsIDgsIDQsIDI0MSwgMTA2LCA4LCA0LCAyNDEsIDEwNSwgOCwgNCwgMjQxLCA4NywgOCwgNCwgMjQxLCA4OSwgOCwgNCwgCi0gICAgMjQxLCA4OCwgOCwgNCwgMjQxLCA5MiwgOCwgNCwgMjQxLCA5MSwgOCwgNCwgMjQxLCA5NCwgOCwgNCwgMjQxLCA5MywgOCwgCi0gICAgNCwgMjQxLCA4MywgOCwgNCwgMjQxLCA4MiwgOCwgNCwgMjQxLCA5MCwgOCwgNCwgMjQxLCA4NiwgOCwgNCwgMjQxLCA4NCwgCi0gICAgOCwgNCwgMjQxLCA4NSwgOCwgNCwgMjQxLCA3NywgOCwgNCwgMjQxLCA4MSwgOCwgNCwgMjQxLCA4MCwgOCwgNCwgMjQxLCAKLSAgICA3OCwgOCwgNCwgMjQxLCA3OSwgOCwgNCwgMjMwLCAyNDEsIDgsIDQsIDIzMCwgMjQwLCA4LCA0LCAyMzEsIDQyLCA4LCA0LCAKLSAgICAyMzAsIDI0NywgOCwgNCwgMjMxLCAxNiwgOCwgNCwgMjMxLCAzNCwgOCwgNCwgMjMxLCAzMiwgOCwgNCwgMjMxLCAyMDIsIDgsIAotICAgIDQsIDIzMSwgMTk4LCA4LCA0LCAxODgsIDgsIDQsIDIzMSwgMjM1LCA4LCA0LCAyMzAsIDE0NCwgOCwgNCwgMjMwLCAxNDMsIAotICAgIDgsIDQsIDIzMCwgMTQ3LCA4LCA0LCAyMzAsIDE0NSwgOCwgNCwgMjMwLCAxOTEsIDgsIDQsIDIzMCwgMTc3LCA4LCA0LCAKLSAgICAyMzAsIDIzMSwgOCwgNCwgMjMwLCAxOTYsIDgsIDQsIDIzMSwgOTMsIDgsIDQsIDIzMSwgMTU2LCA4LCA0LCAyMzAsIDEyNSwgCi0gICAgOCwgNCwgMjMwLCAxMjIsIDgsIDQsIDIzMCwgMTcyLCA4LCA0LCAyMzAsIDE0MCwgOCwgNCwgMjMwLCAxMzMsIDgsIDQsIAotICAgIDIzMCwgMTM4LCA4LCA0LCAyMzAsIDEwMCwgOCwgNCwgMjMwLCA5OSwgOCwgNCwgMjMwLCAxMDUsIDgsIDQsIDIzMCwgMTAyLCAKLSAgICA4LCA0LCAyNDQsIDUyLCA4LCA0LCAyNDQsIDQ3LCA4LCA0LCAyNDQsIDkwLCA4LCA0LCAyNDQsIDY3LCA4LCA0LCAyNDQsIAotICAgIDEzNSwgOCwgNCwgMjQ0LCAxMjYsIDgsIDQsIDI0NCwgMTY0LCA4LCA0LCAyNDQsIDEzOCwgOCwgNCwgMjQzLCAyMjksIDgsIAotICAgIDQsIDI0NCwgMTIsIDgsIDQsIDI0MywgMjUyLCA4LCA0LCAyNDMsIDE5MCwgOCwgNCwgMjQzLCAxODksIDgsIDQsIDI0MywgCi0gICAgMjA1LCA4LCA0LCAyNDMsIDE5NSwgOCwgNCwgMjQzLCAxOTMsIDgsIDQsIDI0MywgMTk0LCA4LCA0LCAyNDMsIDE4MCwgOCwgCi0gICAgNCwgMjQzLCAxNzksIDgsIDQsIDI0MywgMTgzLCA4LCA0LCAyNDMsIDE4MSwgOCwgNCwgMjE0LCAxMjUsIDgsIDQsIDIxNCwgCi0gICAgMTIwLCA4LCA0LCAyMTQsIDE1NCwgOCwgNCwgMjE0LCAxMzQsIDgsIDQsIDIxNCwgMTQ2LCA4LCA0LCAyMTQsIDE0MywgOCwgCi0gICAgNCwgMjE0LCAxNDgsIDgsIDQsIDIxNCwgMTQ3LCA4LCA0LCAyMTQsIDIzOSwgOCwgNCwgMjE0LCAyMzUsIDgsIDQsIDIxNSwgCi0gICAgMSwgOCwgNCwgMjE0LCAyNTAsIDgsIDQsIDIxNCwgMTA2LCA4LCA0LCAyMTQsIDEwMiwgOCwgNCwgMjE0LCAxMTksIDgsIDQsIAotICAgIDIxNCwgMTA3LCA4LCA0LCAyMTQsIDE1NSwgOCwgNCwgMjE0LCAyMjEsIDgsIDQsIDIxNCwgOTMsIDgsIDQsIDIxNCwgOTIsIAotICAgIDgsIDQsIDIxNCwgOTksIDgsIDQsIDIxNCwgOTYsIDgsIDQsIDIxNCwgOTQsIDgsIDQsIDIxNCwgOTUsIDgsIDQsIDIxNCwgCi0gICAgODYsIDgsIDQsIDIxNCwgODUsIDgsIDQsIDIxNCwgOTAsIDgsIDQsIDIxNCwgODksIDgsIDQsIDIxNCwgODcsIDgsIDQsIAotICAgIDIxNCwgODgsIDgsIDQsIDI0NywgMTMwLCA4LCA0LCAyNDcsIDExOCwgOCwgNCwgMjQ3LCAyMTEsIDgsIDQsIDI0NywgMTU1LCAKLSAgICA4LCA0LCAyNDcsIDE4OCwgOCwgNCwgMjQ3LCAxOTIsIDgsIDQsIDI0NywgMTkxLCA4LCA0LCAyNDgsIDk4LCA4LCA0LCAyNDgsIAotICAgIDkzLCA4LCA0LCAyNDgsIDE2NCwgOCwgNCwgMjQ4LCAxMTcsIDgsIDQsIDI0NiwgMTcsIDgsIDQsIDI0NiwgMTgsIDgsIDQsIAotICAgIDI0NywgNzQsIDgsIDQsIDI0NiwgNTYsIDgsIDQsIDI0NywgOTksIDgsIDQsIDI0NywgNzYsIDgsIDQsIDI0NywgMjM3LCA4LCAKLSAgICA0LCAyNDgsIDQxLCA4LCA0LCAyNDcsIDI1MiwgOCwgNCwgMjQ2LCA4LCA4LCA0LCAyNDYsIDYsIDgsIDQsIDI0NiwgMzMsIDgsIAotICAgIDQsIDI0NiwgMTYsIDgsIDQsIDI0NiwgMTEsIDgsIDQsIDI0NiwgMTQsIDgsIDQsIDIxNywgMjAsIDgsIDQsIDIxNywgMTQsIAotICAgIDgsIDQsIDIxNywgNzEsIDgsIDQsIDIxNywgMjksIDgsIDQsIDIxNywgNjMsIDgsIDQsIDIxNywgNjUsIDgsIDQsIDIxNywgCi0gICAgNjQsIDgsIDQsIDIxNywgMjUzLCA4LCA0LCAyMTcsIDI0MCwgOCwgNCwgMjE4LCA1MiwgOCwgNCwgMjE4LCA1LCA4LCA0LCAKLSAgICAyMTYsIDY2LCA4LCA0LCAyMTYsIDY1LCA4LCA0LCAyMTYsIDY4LCA4LCA0LCAyMTYsIDY3LCA4LCA0LCAyMTYsIDIxOCwgOCwgCi0gICAgNCwgMjE2LCAyMTQsIDgsIDQsIDEwOCwgOCwgNCwgMjE2LCAyMjYsIDgsIDQsIDIxNywgMTY2LCA4LCA0LCAyMTcsIDIyOSwgCi0gICAgOCwgNCwgMjE3LCAxOTAsIDgsIDQsIDIxNiwgNTIsIDgsIDQsIDIxNiwgNDgsIDgsIDQsIDIxNiwgODIsIDgsIDQsIDIxNiwgCi0gICAgNjQsIDgsIDQsIDIxNiwgNTMsIDgsIDQsIDIxNiwgNjIsIDgsIDQsIDI0OCwgNTgsIDgsIDQsIDI0OCwgNTcsIDgsIDQsIAotICAgIDI0OCwgNjMsIDgsIDQsIDI0OCwgNTksIDgsIDQsIDI0OCwgNjAsIDgsIDQsIDI0OCwgNjIsIDgsIDQsIDI0OCwgNjEsIDgsIAotICAgIDQsIDI0OCwgNzksIDgsIDQsIDI0OCwgNzgsIDgsIDQsIDI0OCwgODYsIDgsIDQsIDI0OCwgODAsIDgsIDQsIDI0OCwgNDgsIAotICAgIDgsIDQsIDI0OCwgNTAsIDgsIDQsIDI0OCwgNDksIDgsIDQsIDI0OCwgNTMsIDgsIDQsIDI0OCwgNTIsIDgsIDQsIDI0OCwgCi0gICAgNTYsIDgsIDQsIDI0OCwgNTQsIDgsIDQsIDI0OCwgNzEsIDgsIDQsIDI0OCwgNzQsIDgsIDQsIDI0OCwgNzIsIDgsIDQsIAotICAgIDI0OCwgNDQsIDgsIDQsIDI0OCwgNDMsIDgsIDQsIDI0OCwgNTEsIDgsIDQsIDI0OCwgNDcsIDgsIDQsIDI0OCwgNDUsIDgsIAotICAgIDQsIDI0OCwgNDYsIDgsIDQsIDIyOSwgMjA2LCA4LCA0LCAyMjksIDIwNSwgOCwgNCwgMjI5LCAyMTMsIDgsIDQsIDIyOSwgCi0gICAgMjA4LCA4LCA0LCAyMjksIDIwOSwgOCwgNCwgMjI5LCAyMTAsIDgsIDQsIDIyOSwgMjIyLCA4LCA0LCAyMjksIDIyMSwgOCwgCi0gICAgNCwgMjI5LCAyMjgsIDgsIDQsIDIyOSwgMjIzLCA4LCA0LCAyMjksIDE5OCwgOCwgNCwgMjI5LCAxOTcsIDgsIDQsIDIyOSwgCi0gICAgMjA0LCA4LCA0LCAyMjksIDE5OSwgOCwgNCwgMjI5LCAyMTQsIDgsIDQsIDIyOSwgMjIwLCA4LCA0LCAyMjksIDIxOCwgOCwgCi0gICAgNCwgMjI5LCAxOTAsIDgsIDQsIDIyOSwgMTg5LCA4LCA0LCAyMjksIDE5NSwgOCwgNCwgMjI5LCAxOTMsIDgsIDQsIDIyOSwgCi0gICAgMTkxLCA4LCA0LCAyMjksIDE5MiwgOCwgNCwgMjQxLCA2MywgOCwgNCwgMjQxLCA2MiwgOCwgNCwgMjQxLCA2OSwgOCwgNCwgCi0gICAgMjQxLCA2NCwgOCwgNCwgMjQxLCA2NiwgOCwgNCwgMjQxLCA2NSwgOCwgNCwgMjQxLCA2OCwgOCwgNCwgMjQxLCA2NywgOCwgCi0gICAgNCwgMjQxLCA3NCwgOCwgNCwgMjQxLCA3MywgOCwgNCwgMjQxLCA3NiwgOCwgNCwgMjQxLCA3NSwgOCwgNCwgMjQxLCA1NywgCi0gICAgOCwgNCwgMjQxLCA1OCwgOCwgNCwgMjQxLCA2MCwgOCwgNCwgMjQxLCA1OSwgOCwgNCwgMjQxLCA2MSwgOCwgNCwgMjQxLCAKLSAgICA3MCwgOCwgNCwgMjQxLCA3MiwgOCwgNCwgMjQxLCA3MSwgOCwgNCwgMjQxLCA1NiwgOCwgNCwgMjI5LCAyMCwgOCwgNCwgCi0gICAgMjI5LCAxOCwgOCwgNCwgMjI5LCA2NCwgOCwgNCwgMjI5LCAyMywgOCwgNCwgMjI5LCA0NiwgOCwgNCwgMjI5LCA2MCwgOCwgCi0gICAgNCwgMjI5LCA1OSwgOCwgNCwgMjMwLCA1LCA4LCA0LCAyMDUsIDgsIDQsIDIzMCwgMTcsIDgsIDQsIDIyOCwgNDIsIDgsIDQsIAotICAgIDIyOCwgNDQsIDgsIDQsIDIyOCwgNDMsIDgsIDQsIDIyOCwgMTYyLCA4LCA0LCAyMjgsIDE0OSwgOCwgNCwgMjI4LCAxODUsIAotICAgIDgsIDQsIDIyOCwgMTcxLCA4LCA0LCAyMjksIDE2NSwgOCwgNCwgMjI5LCAxODcsIDgsIDQsIDIyOSwgMTc2LCA4LCA0LCAKLSAgICAyMjgsIDM3LCA4LCA0LCAyMjgsIDM0LCA4LCA0LCAyMjgsIDkyLCA4LCA0LCAyMjgsIDQxLCA4LCA0LCAyMjgsIDM5LCA4LCAKLSAgICA0LCAyMjgsIDQwLCA4LCA0LCAyNDEsIDEyNywgOCwgNCwgMjQxLCAxMjYsIDgsIDQsIDI0MSwgMTMyLCA4LCA0LCAyNDEsIAotICAgIDEyOCwgOCwgNCwgMjQxLCAxMjksIDgsIDQsIDI0MSwgMTMxLCA4LCA0LCAyNDEsIDEzMCwgOCwgNCwgMjQxLCAxMzcsIDgsIAotICAgIDQsIDI0MSwgMTM2LCA4LCA0LCAyNDEsIDEzOSwgOCwgNCwgMjQxLCAxMzgsIDgsIDQsIDI0MSwgMTE5LCA4LCA0LCAyNDEsIAotICAgIDEyMSwgOCwgNCwgMjQxLCAxMjAsIDgsIDQsIDI0MSwgMTIzLCA4LCA0LCAyNDEsIDEyNSwgOCwgNCwgMjQxLCAxMjQsIDgsIAotICAgIDQsIDI0MSwgMTMzLCA4LCA0LCAyNDEsIDEzNSwgOCwgNCwgMjQxLCAxMzQsIDgsIDQsIDI0MSwgMTE1LCA4LCA0LCAyNDEsIAotICAgIDExNCwgOCwgNCwgMjQxLCAxMjIsIDgsIDQsIDI0MSwgMTE4LCA4LCA0LCAyNDEsIDExNiwgOCwgNCwgMjQxLCAxMTcsIDgsIAotICAgIDQsIDI0MSwgMTA5LCA4LCA0LCAyNDEsIDEwOCwgOCwgNCwgMjQxLCAxMTMsIDgsIDQsIDI0MSwgMTEyLCA4LCA0LCAyNDEsIAotICAgIDExMCwgOCwgNCwgMjQxLCAxMTEsIDgsIDQsIDIzMiwgMjI0LCA4LCA0LCAyMzIsIDIxOCwgOCwgNCwgMjMzLCAxMywgOCwgNCwgCi0gICAgMjMyLCAyMzEsIDgsIDQsIDIzMywgNSwgOCwgNCwgMjMzLCA0LCA4LCA0LCAyMzMsIDgsIDgsIDQsIDIzMywgNiwgOCwgNCwgCi0gICAgMjMzLCAxMDIsIDgsIDQsIDIzMywgOTMsIDgsIDQsIDIzMywgMTU3LCA4LCA0LCAyMzMsIDExMSwgOCwgNCwgMjMyLCAxMzcsIAotICAgIDgsIDQsIDIzMiwgMTM2LCA4LCA0LCAyMzIsIDEzOSwgOCwgNCwgMjMyLCAxMzgsIDgsIDQsIDIzMiwgMTcxLCA4LCA0LCAKLSAgICAyMzIsIDE2MSwgOCwgNCwgMjMyLCAyMDgsIDgsIDQsIDIzMiwgMTc1LCA4LCA0LCAyMzMsIDI4LCA4LCA0LCAyMzMsIDgyLCAKLSAgICA4LCA0LCAyMzMsIDQxLCA4LCA0LCAyMzIsIDEzMiwgOCwgNCwgMjMyLCAxMzEsIDgsIDQsIDIzMiwgMTU2LCA4LCA0LCAyMzIsIAotICAgIDEzNSwgOCwgNCwgMjMyLCAxMzMsIDgsIDQsIDIzMiwgMTM0LCA4LCA0LCAyMzIsIDExNCwgOCwgNCwgMjMyLCAxMTMsIDgsIAotICAgIDQsIDIzMiwgMTIxLCA4LCA0LCAyMzIsIDExNywgOCwgNCwgMjMyLCAxMTUsIDgsIDQsIDIzMiwgMTE2LCA4LCA0LCAyNDIsIAotICAgIDE2NSwgOCwgNCwgMjQyLCAxNjQsIDgsIDQsIDI0MiwgMTkwLCA4LCA0LCAyNDIsIDE3NSwgOCwgNCwgMjQyLCAxODIsIDgsIAotICAgIDQsIDI0MiwgMTgxLCA4LCA0LCAyNDIsIDE4NCwgOCwgNCwgMjQyLCAxODMsIDgsIDQsIDI0MywgNjUsIDgsIDQsIDI0MywgCi0gICAgNjAsIDgsIDQsIDI0MywgMTEwLCA4LCA0LCAyNDMsIDc1LCA4LCA0LCAyNDIsIDcyLCA4LCA0LCAyNDIsIDcxLCA4LCA0LCAKLSAgICAyNDIsIDc0LCA4LCA0LCAyNDIsIDczLCA4LCA0LCAyNDIsIDEzMCwgOCwgNCwgMjQyLCAxMjgsIDgsIDQsIDI0MiwgMTUwLCAKLSAgICA4LCA0LCAyNDIsIDEzOCwgOCwgNCwgMjQzLCA5LCA4LCA0LCAyNDMsIDcsIDgsIDQsIDI0MywgMzgsIDgsIDQsIDI0MywgMjAsIAotICAgIDgsIDQsIDI0MiwgNjIsIDgsIDQsIDI0MiwgNjEsIDgsIDQsIDI0MiwgOTIsIDgsIDQsIDI0MiwgNzAsIDgsIDQsIDI0MiwgCi0gICAgNjMsIDgsIDQsIDI0MiwgNjksIDgsIDQsIDIzNCwgNzAsIDgsIDQsIDIzNCwgNjksIDgsIDQsIDIzNCwgMTAxLCA4LCA0LCAKLSAgICAyMzQsIDg0LCA4LCA0LCAyMzQsIDk0LCA4LCA0LCAyMzQsIDk3LCA4LCA0LCAyMzQsIDk1LCA4LCA0LCAyMzQsIDIwNywgOCwgCi0gICAgNCwgMjM0LCAxOTYsIDgsIDQsIDE4MSwgOCwgNCwgMjM0LCAyMzMsIDgsIDQsIDIzMywgMjIxLCA4LCA0LCAyMzMsIDIyNiwgCi0gICAgOCwgNCwgMjMzLCAyMjMsIDgsIDQsIDIzNCwgOSwgOCwgNCwgMjM0LCA1LCA4LCA0LCAyMzQsIDM3LCA4LCA0LCAyMzQsIDE2LCAKLSAgICA4LCA0LCAyMzQsIDE2MiwgOCwgNCwgMjM0LCAxNDYsIDgsIDQsIDIzNCwgMTg4LCA4LCA0LCAyMzQsIDE2NSwgOCwgNCwgCi0gICAgMjMzLCAyMTAsIDgsIDQsIDIzMywgMjA4LCA4LCA0LCAyMzMsIDIzOCwgOCwgNCwgMjMzLCAyMjAsIDgsIDQsIDIzMywgMjEzLCAKLSAgICA4LCA0LCAyMzMsIDIxNywgOCwgNCwgMjQyLCAyNDcsIDgsIDQsIDI0MiwgMjQ2LCA4LCA0LCAyNDIsIDI1MSwgOCwgNCwgCi0gICAgMjQyLCAyNDgsIDgsIDQsIDI0MiwgMjUwLCA4LCA0LCAyNDIsIDI0OSwgOCwgNCwgMjQzLCAyLCA4LCA0LCAyNDMsIDEsIDgsIAotICAgIDQsIDI0MywgNSwgOCwgNCwgMjQzLCAzLCA4LCA0LCAyNDIsIDIzOCwgOCwgNCwgMjQyLCAyMzcsIDgsIDQsIDI0MiwgMjQwLCAKLSAgICA4LCA0LCAyNDIsIDIzOSwgOCwgNCwgMjQyLCAyNDMsIDgsIDQsIDI0MiwgMjQyLCA4LCA0LCAyNDIsIDI0NSwgOCwgNCwgCi0gICAgMjQyLCAyNDQsIDgsIDQsIDI0MiwgMjUzLCA4LCA0LCAyNDIsIDI1MiwgOCwgNCwgMjQzLCAwLCA4LCA0LCAyNDIsIDI1NCwgCi0gICAgOCwgNCwgMjQyLCAyMzMsIDgsIDQsIDI0MiwgMjMyLCA4LCA0LCAyNDIsIDI0MSwgOCwgNCwgMjQyLCAyMzYsIDgsIDQsIAotICAgIDI0MiwgMjM0LCA4LCA0LCAyNDIsIDIzNSwgOCwgNCwgMjMxLCA2MCwgOCwgNCwgMjMxLCA2MSwgOCwgNCwgMjMxLCA3OSwgOCwgCi0gICAgNCwgMjMxLCA3OCwgOCwgNCwgMjMxLCA4MSwgOCwgNCwgMjMxLCA4MCwgOCwgNCwgMjMxLCA1MSwgOCwgNCwgMjMxLCA1MywgCi0gICAgOCwgNCwgMjMxLCA1MiwgOCwgNCwgMjMxLCA1NiwgOCwgNCwgMjMxLCA1NSwgOCwgNCwgMjMxLCA1OCwgOCwgNCwgMjMxLCAKLSAgICA1NywgOCwgNCwgMjMxLCA2MiwgOCwgNCwgMjMxLCA2NCwgOCwgNCwgMjMxLCA2MywgOCwgNCwgMjMxLCA0NywgOCwgNCwgCi0gICAgMjMxLCA0NiwgOCwgNCwgMjMxLCA1NCwgOCwgNCwgMjMxLCA1MCwgOCwgNCwgMjMxLCA0OCwgOCwgNCwgMjMxLCA0OSwgOCwgCi0gICAgNCwgMjQwLCAxNzIsIDgsIDQsIDI0MCwgMTcxLCA4LCA0LCAyNDAsIDE3OCwgOCwgNCwgMjQwLCAxNzMsIDgsIDQsIDI0MCwgCi0gICAgMTc1LCA4LCA0LCAyNDAsIDE3NCwgOCwgNCwgMjQwLCAxNzcsIDgsIDQsIDI0MCwgMTc2LCA4LCA0LCAyNDAsIDE4MywgOCwgCi0gICAgNCwgMjQwLCAxODIsIDgsIDQsIDI0MCwgMTg1LCA4LCA0LCAyNDAsIDE4NCwgOCwgNCwgMjQwLCAxNjQsIDgsIDQsIDI0MCwgCi0gICAgMTYzLCA4LCA0LCAyNDAsIDE2NiwgOCwgNCwgMjQwLCAxNjUsIDgsIDQsIDI0MCwgMTY4LCA4LCA0LCAyNDAsIDE2NywgOCwgCi0gICAgNCwgMjQwLCAxNzAsIDgsIDQsIDI0MCwgMTY5LCA4LCA0LCAyNDAsIDE3OSwgOCwgNCwgMjQwLCAxODEsIDgsIDQsIDI0MCwgCi0gICAgMTgwLCA4LCA0LCAyMjksIDExMCwgOCwgNCwgMjI5LCAxMTIsIDgsIDQsIDIyOSwgMTExLCA4LCA0LCAyMjksIDE1MCwgOCwgCi0gICAgNCwgMjI5LCAxNDksIDgsIDQsIDIyOSwgMTU5LCA4LCA0LCAyMjksIDE1MywgOCwgNCwgMjI5LCA3MywgOCwgNCwgMjI5LCAKLSAgICA3MiwgOCwgNCwgMjI5LCA3NCwgOCwgNCwgMjI5LCA4MiwgOCwgNCwgMjI5LCA3OSwgOCwgNCwgMjI5LCA5MCwgOCwgNCwgCi0gICAgMjI5LCA4NCwgOCwgNCwgMjI5LCAxNDMsIDgsIDQsIDIyOSwgMTQ4LCA4LCA0LCAyMjksIDE0NSwgOCwgNCwgMjQxLCAxNDIsIAotICAgIDgsIDQsIDI0MSwgMTUyLCA4LCA0LCAyNDEsIDE2MCwgOCwgNCwgMjQxLCAyMzQsIDgsIDQsIDI0MSwgMjI3LCA4LCA0LCAKLSAgICAxNTksIDgsIDQsIDI0MSwgMjQ1LCA4LCA0LCAyNDAsIDE5NiwgOCwgNCwgMjQwLCAxOTUsIDgsIDQsIDI0MCwgMTk4LCA4LCAKLSAgICA0LCAyNDAsIDE5NywgOCwgNCwgMjQwLCAyMjksIDgsIDQsIDI0MCwgMjIwLCA4LCA0LCAyNDEsIDU0LCA4LCA0LCAyNDEsIAotICAgIDM0LCA4LCA0LCAyNDEsIDE3OSwgOCwgNCwgMjQxLCAyMjIsIDgsIDQsIDI0MSwgMTkwLCA4LCA0LCAyMTQsIDI3LCA4LCA0LCAKLSAgICAyMTQsIDEyLCA4LCA0LCAyMTQsIDQ5LCA4LCA0LCAyMTQsIDM1LCA4LCA0LCAyMTMsIDE3MywgOCwgNCwgMjEzLCAxNzUsIDgsIAotICAgIDQsIDIxMywgMTc0LCA4LCA0LCAyMTMsIDE5MSwgOCwgNCwgMjEzLCAyMTQsIDgsIDQsIDIxMywgMTk3LCA4LCA0LCAyMTMsIAotICAgIDI0NiwgOCwgNCwgMjE0LCA2LCA4LCA0LCAyMTMsIDI1MSwgOCwgNCwgMjEyLCAyMywgOCwgNCwgMjEyLCAyMiwgOCwgNCwgCi0gICAgMjEyLCAzNywgOCwgNCwgMjEyLCAyNSwgOCwgNCwgMjEyLCAzMCwgOCwgNCwgMjEyLCAzMiwgOCwgNCwgMjEyLCAzMSwgOCwgCi0gICAgNCwgMjEyLCA5NSwgOCwgNCwgMjEyLCA5MiwgOCwgNCwgMjEyLCAxMDksIDgsIDQsIDIxMiwgOTgsIDgsIDQsIDIxMiwgMSwgCi0gICAgOCwgNCwgMjEyLCAzLCA4LCA0LCAyMTIsIDIsIDgsIDQsIDIxMiwgMTIsIDgsIDQsIDIxMiwgMTEsIDgsIDQsIDIxMiwgMTYsIAotICAgIDgsIDQsIDIxMiwgMTMsIDgsIDQsIDIxMiwgNzcsIDgsIDQsIDIxMiwgODcsIDgsIDQsIDIxMiwgODEsIDgsIDQsIDIxMSwgCi0gICAgMjUzLCA4LCA0LCAyMTEsIDI1MiwgOCwgNCwgMjEyLCA4LCA4LCA0LCAyMTIsIDAsIDgsIDQsIDIxMSwgMjU0LCA4LCA0LCAKLSAgICAyMTEsIDI1NSwgOCwgNCwgMjExLCAyNDQsIDgsIDQsIDIxMSwgMjQzLCA4LCA0LCAyMTEsIDI0OSwgOCwgNCwgMjExLCAyNDcsIAotICAgIDgsIDQsIDIxMSwgMjQ1LCA4LCA0LCAyMTEsIDI0NiwgOCwgNCwgMjQ5LCAyMjEsIDgsIDQsIDI0OSwgMjE3LCA4LCA0LCAKLSAgICAyNDksIDI0NCwgOCwgNCwgMjQ5LCAyMzAsIDgsIDQsIDI0OSwgMjQxLCA4LCA0LCAyNDksIDIzNSwgOCwgNCwgMjQ5LCAyNDMsIAotICAgIDgsIDQsIDI0OSwgMjQyLCA4LCA0LCAyNTAsIDE1NiwgOCwgNCwgMjUwLCAxNTAsIDgsIDQsIDI1MCwgMjE5LCA4LCA0LCAKLSAgICAyNTAsIDE4MywgOCwgNCwgMjQ5LCA0NSwgOCwgNCwgMjQ5LCA0NywgOCwgNCwgMjQ5LCA0NiwgOCwgNCwgMjQ5LCA5MiwgOCwgCi0gICAgNCwgMjQ5LCA4MywgOCwgNCwgMjQ5LCAxNzUsIDgsIDQsIDI0OSwgMTA4LCA4LCA0LCAyNTAsIDk0LCA4LCA0LCAyNTAsIAotICAgIDEyNCwgOCwgNCwgMjUwLCA5OSwgOCwgNCwgMjQ5LCAyNiwgOCwgNCwgMjQ5LCAyNSwgOCwgNCwgMjQ5LCA1MywgOCwgNCwgCi0gICAgMjQ5LCA0MywgOCwgNCwgMjQ5LCAzMSwgOCwgNCwgMjQ5LCA0MiwgOCwgNCwgMjQ5LCA2LCA4LCA0LCAyNDksIDUsIDgsIDQsIAotICAgIDI0OSwgMTYsIDgsIDQsIDI0OSwgMTIsIDgsIDQsIDI0OSwgNywgOCwgNCwgMjQ5LCA5LCA4LCA0LCAyMTEsIDIyNywgOCwgNCwgCi0gICAgMjExLCAyMjYsIDgsIDQsIDIxMSwgMjMzLCA4LCA0LCAyMTEsIDIyOCwgOCwgNCwgMjExLCAyMzAsIDgsIDQsIDIxMSwgMjI5LCAKLSAgICA4LCA0LCAyMTEsIDIzMiwgOCwgNCwgMjExLCAyMzEsIDgsIDQsIDIxMSwgMjM5LCA4LCA0LCAyMTEsIDIzOCwgOCwgNCwgCi0gICAgMjExLCAyNDIsIDgsIDQsIDIxMSwgMjQwLCA4LCA0LCAyMTEsIDIyMywgOCwgNCwgMjExLCAyMjUsIDgsIDQsIDIxMSwgMjI0LCAKLSAgICA4LCA0LCAyMTEsIDIzNCwgOCwgNCwgMjExLCAyMzcsIDgsIDQsIDIxMSwgMjM1LCA4LCA0LCAyMTEsIDIxOCwgOCwgNCwgCi0gICAgMjExLCAyMjIsIDgsIDQsIDIxMSwgMjIxLCA4LCA0LCAyMTEsIDIxOSwgOCwgNCwgMjExLCAyMjAsIDgsIDQsIDIxMSwgMjEzLCAKLSAgICA4LCA0LCAyMTEsIDIxMiwgOCwgNCwgMjExLCAyMTcsIDgsIDQsIDIxMSwgMjE2LCA4LCA0LCAyMTEsIDIxNCwgOCwgNCwgCi0gICAgMjExLCAyMTUsIDgsIDQsIDIyNywgMjI0LCA4LCA0LCAyMjcsIDIyMywgOCwgNCwgMjI3LCAyMjksIDgsIDQsIDIyNywgMjI1LCAKLSAgICA4LCA0LCAyMjcsIDIyNiwgOCwgNCwgMjI3LCAyMjgsIDgsIDQsIDIyNywgMjI3LCA4LCA0LCAyMjcsIDIzNCwgOCwgNCwgCi0gICAgMjI3LCAyMzMsIDgsIDQsIDIyNywgMjM3LCA4LCA0LCAyMjcsIDIzNiwgOCwgNCwgMjI3LCAyMTcsIDgsIDQsIDIyNywgMjE4LCAKLSAgICA4LCA0LCAyMjcsIDIyMSwgOCwgNCwgMjI3LCAyMjIsIDgsIDQsIDIyNywgMjMwLCA4LCA0LCAyMjcsIDIzMiwgOCwgNCwgCi0gICAgMjI3LCAyMTIsIDgsIDQsIDIyNywgMjIwLCA4LCA0LCAyMjcsIDIxNiwgOCwgNCwgMjI3LCAyMTMsIDgsIDQsIDIyNywgMjE0LCAKLSAgICA4LCA0LCAyMjcsIDIwNywgOCwgNCwgMjI3LCAyMDYsIDgsIDQsIDIyNywgMjExLCA4LCA0LCAyMjcsIDIxMCwgOCwgNCwgCi0gICAgMjI3LCAyMDgsIDgsIDQsIDIyNywgMjA5LCA4LCA0LCAyMjAsIDU1LCA4LCA0LCAxODksIDgsIDQsIDIyMCwgMTE3LCA4LCA0LCAKLSAgICAyMjAsIDU4LCA4LCA0LCAyMjAsIDEwOSwgOCwgNCwgMjIwLCAxMTIsIDgsIDQsIDIyMCwgMTEwLCA4LCA0LCAyMjIsIDE0MiwgCi0gICAgOCwgNCwgMjIyLCAxMzIsIDgsIDQsIDIyMiwgMjAyLCA4LCA0LCAyMjIsIDE1MCwgOCwgNCwgMjE4LCAyMjgsIDgsIDQsIAotICAgIDIxOCwgMjMwLCA4LCA0LCAyMTgsIDIyOSwgOCwgNCwgMjE5LCAyMjEsIDgsIDQsIDIxOSwgMjEwLCA4LCA0LCAyMTksIDI0MiwgCi0gICAgOCwgNCwgMjE5LCAyMjQsIDgsIDQsIDIyMSwgMzUsIDgsIDQsIDIyMiwgMTAwLCA4LCA0LCAyMjEsIDU5LCA4LCA0LCAyMTgsIAotICAgIDIwNiwgOCwgNCwgMjE4LCAyMDQsIDgsIDQsIDIxOSwgMjcsIDgsIDQsIDIxOCwgMjI3LCA4LCA0LCAyMTgsIDIwOSwgOCwgNCwgCi0gICAgMjE4LCAyMTcsIDgsIDQsIDIxOCwgMTEzLCA4LCA0LCAyMTgsIDExMiwgOCwgNCwgMjE4LCAxNzcsIDgsIDQsIDIxOCwgMTE5LCAKLSAgICA4LCA0LCAyMTgsIDExNCwgOCwgNCwgMjE4LCAxMTgsIDgsIDQsIDIxOSwgMTIzLCA4LCA0LCAyMTksIDEyMiwgOCwgNCwgCi0gICAgMjE5LCAxMjgsIDgsIDQsIDIxOSwgMTI0LCA4LCA0LCAyMTksIDEyNSwgOCwgNCwgMjE5LCAxMjcsIDgsIDQsIDIxOSwgMTI2LCAKLSAgICA4LCA0LCAyMTksIDEzNSwgOCwgNCwgMjE5LCAxMzQsIDgsIDQsIDIxOSwgMTU3LCA4LCA0LCAyMTksIDEzNiwgOCwgNCwgCi0gICAgMjE5LCAxMTksIDgsIDQsIDIxOSwgMTE4LCA4LCA0LCAyMTksIDEyMSwgOCwgNCwgMjE5LCAxMjAsIDgsIDQsIDIxOSwgMTMwLCAKLSAgICA4LCA0LCAyMTksIDEzMywgOCwgNCwgMjE5LCAxMzEsIDgsIDQsIDIxOSwgMTE1LCA4LCA0LCAyMTksIDExNCwgOCwgNCwgCi0gICAgMjE5LCAxMTcsIDgsIDQsIDIxOSwgMTE2LCA4LCA0LCAyMTksIDEwOSwgOCwgNCwgMjE5LCAxMDgsIDgsIDQsIDIxOSwgMTEzLCAKLSAgICA4LCA0LCAyMTksIDExMiwgOCwgNCwgMjE5LCAxMTAsIDgsIDQsIDIxOSwgMTExLCA4LCA0LCAyMTIsIDcwLCA4LCA0LCAyMTIsIAotICAgIDY5LCA4LCA0LCAyMTIsIDc1LCA4LCA0LCAyMTIsIDcyLCA4LCA0LCAyMTIsIDUyLCA4LCA0LCAyMTIsIDU0LCA4LCA0LCAKLSAgICAyMTIsIDUzLCA4LCA0LCAyMTIsIDU3LCA4LCA0LCAyMTIsIDU2LCA4LCA0LCAyMTIsIDYwLCA4LCA0LCAyMTIsIDU4LCA4LCAKLSAgICA0LCAyMTIsIDY0LCA4LCA0LCAyMTIsIDYzLCA4LCA0LCAyMTIsIDY3LCA4LCA0LCAyMTIsIDY1LCA4LCA0LCAyMTIsIDQ4LCAKLSAgICA4LCA0LCAyMTIsIDQ3LCA4LCA0LCAyMTIsIDU1LCA4LCA0LCAyMTIsIDUxLCA4LCA0LCAyMTIsIDQ5LCA4LCA0LCAyMTIsIAotICAgIDUwLCA4LCA0LCAyMTIsIDQwLCA4LCA0LCAyMTIsIDM5LCA4LCA0LCAyMTIsIDQ0LCA4LCA0LCAyMTIsIDQzLCA4LCA0LCAKLSAgICAyMTIsIDQxLCA4LCA0LCAyMTIsIDQyLCA4LCA0LCAyNTAsIDcyLCA4LCA0LCAyNTAsIDY5LCA4LCA0LCAyNTAsIDkyLCA4LCAKLSAgICA0LCAyNTAsIDgwLCA4LCA0LCAyNTAsIDIsIDgsIDQsIDI1MCwgMSwgOCwgNCwgMjUwLCA0LCA4LCA0LCAyNTAsIDMsIDgsIDQsIAotICAgIDI1MCwgMTYsIDgsIDQsIDI1MCwgMTUsIDgsIDQsIDI1MCwgMjMsIDgsIDQsIDI1MCwgMTgsIDgsIDQsIDI1MCwgNTIsIDgsIAotICAgIDQsIDI1MCwgNTAsIDgsIDQsIDI1MCwgNjcsIDgsIDQsIDI1MCwgNTgsIDgsIDQsIDI0OSwgMjUyLCA4LCA0LCAyNTAsIDYsIAotICAgIDgsIDQsIDI1MCwgMCwgOCwgNCwgMjQ5LCAyNTMsIDgsIDQsIDI0OSwgMjU1LCA4LCA0LCAyNDksIDI0NiwgOCwgNCwgMjQ5LCAKLSAgICAyNDUsIDgsIDQsIDI0OSwgMjUwLCA4LCA0LCAyNDksIDI0OSwgOCwgNCwgMjQ5LCAyNDcsIDgsIDQsIDI0OSwgMjQ4LCA4LCAKLSAgICA0LCAyMjMsIDgwLCA4LCA0LCAyMjMsIDgxLCA4LCA0LCAyMjMsIDY3LCA4LCA0LCAyMjMsIDY4LCA4LCA0LCAyMjMsIDcxLCAKLSAgICA4LCA0LCAyMjMsIDcwLCA4LCA0LCAyMjMsIDczLCA4LCA0LCAyMjMsIDcyLCA4LCA0LCAyMjMsIDc1LCA4LCA0LCAyMjMsIAotICAgIDc0LCA4LCA0LCAyMjMsIDc5LCA4LCA0LCAyMjMsIDc2LCA4LCA0LCAyMjMsIDYzLCA4LCA0LCAyMjMsIDYyLCA4LCA0LCAKLSAgICAyMjMsIDY5LCA4LCA0LCAyMjMsIDY2LCA4LCA0LCAyMjMsIDY0LCA4LCA0LCAyMjMsIDY1LCA4LCA0LCAyMjMsIDU3LCA4LCAKLSAgICA0LCAyMjMsIDU2LCA4LCA0LCAyMjMsIDYxLCA4LCA0LCAyMjMsIDYwLCA4LCA0LCAyMjMsIDU4LCA4LCA0LCAyMjMsIDU5LCAKLSAgICA4LCA0LCAyMjgsIDE0NSwgOCwgNCwgMjI4LCAxNDQsIDgsIDQsIDIyOCwgMTQ3LCA4LCA0LCAyMjgsIDE0NiwgOCwgNCwgCi0gICAgMjI4LCAxMzcsIDgsIDQsIDIyOCwgMTM5LCA4LCA0LCAyMjgsIDEzOCwgOCwgNCwgMjI4LCAxNDEsIDgsIDQsIDIyOCwgMTQwLCAKLSAgICA4LCA0LCAyMjgsIDE0MywgOCwgNCwgMjI4LCAxNDIsIDgsIDQsIDIyOCwgMTMyLCA4LCA0LCAyMjgsIDEzMSwgOCwgNCwgCi0gICAgMjI4LCAxMzYsIDgsIDQsIDIyOCwgMTM1LCA4LCA0LCAyMjgsIDEzMywgOCwgNCwgMjI4LCAxMzQsIDgsIDQsIDIyOCwgMTI2LCAKLSAgICA4LCA0LCAyMjgsIDEyNSwgOCwgNCwgMjI4LCAxMzAsIDgsIDQsIDIyOCwgMTI5LCA4LCA0LCAyMjgsIDEyNywgOCwgNCwgCi0gICAgMjI4LCAxMjgsIDgsIDQsIDIyMCwgMjUxLCA4LCA0LCAyMjAsIDI0NywgOCwgNCwgMjIxLCAyNCwgOCwgNCwgMjIxLCA2LCA4LCAKLSAgICA0LCAyMjAsIDE0MCwgOCwgNCwgMjIwLCAxNDIsIDgsIDQsIDIyMCwgMTQxLCA4LCA0LCAyMjAsIDE2MCwgOCwgNCwgMjIwLCAKLSAgICAxNTcsIDgsIDQsIDIyMCwgMTg3LCA4LCA0LCAyMjAsIDE3OCwgOCwgNCwgMjIwLCAyMjIsIDgsIDQsIDIyMCwgMjE1LCA4LCAKLSAgICA0LCAyMjAsIDI0MywgOCwgNCwgMjIwLCAyMzAsIDgsIDQsIDIyMCwgMTM2LCA4LCA0LCAyMjAsIDEzNSwgOCwgNCwgMjIwLCAKLSAgICAxNTAsIDgsIDQsIDIyMCwgMTM5LCA4LCA0LCAyMjAsIDEzNywgOCwgNCwgMjIwLCAxMzgsIDgsIDQsIDIyMCwgMTIwLCA4LCAKLSAgICA0LCAyMjAsIDExOSwgOCwgNCwgMjIwLCAxMjYsIDgsIDQsIDIyMCwgMTIzLCA4LCA0LCAyMjAsIDEyMSwgOCwgNCwgMjIwLCAKLSAgICAxMjIsIDgsIDQsIDIyNCwgMzMsIDgsIDQsIDIyNCwgMjgsIDgsIDQsIDIwMywgOCwgNCwgMjI0LCAzOSwgOCwgNCwgMjIzLCAKLSAgICAzMSwgOCwgNCwgMjIzLCAzMywgOCwgNCwgMjIzLCAzMiwgOCwgNCwgMjIzLCA5MCwgOCwgNCwgMjIzLCA4MywgOCwgNCwgCi0gICAgMjIzLCAxMTIsIDgsIDQsIDIyMywgOTQsIDgsIDQsIDIyMywgMTk2LCA4LCA0LCAyMjQsIDIxLCA4LCA0LCAyMjMsIDIzMSwgCi0gICAgOCwgNCwgMjIzLCAyNCwgOCwgNCwgMjIzLCAyMiwgOCwgNCwgMjIzLCA1MSwgOCwgNCwgMjIzLCAzMCwgOCwgNCwgMjIzLCAKLSAgICAyNiwgOCwgNCwgMjIzLCAyNywgOCwgNCwgMjIzLCA3LCA4LCA0LCAyMjMsIDYsIDgsIDQsIDIyMywgMTIsIDgsIDQsIDIyMywgCi0gICAgMTAsIDgsIDQsIDIyMywgOCwgOCwgNCwgMjIzLCA5LCA4LCA0LCAyMzUsIDEwMSwgOCwgNCwgMjM1LCAxMDAsIDgsIDQsIAotICAgIDIzNSwgMTEwLCA4LCA0LCAyMzUsIDEwMiwgOCwgNCwgMjM1LCAxMDYsIDgsIDQsIDIzNSwgMTA1LCA4LCA0LCAyMzUsIDEwOCwgCi0gICAgOCwgNCwgMjM1LCAxMDcsIDgsIDQsIDIzNSwgNDQsIDgsIDQsIDIzNSwgNDMsIDgsIDQsIDIzNSwgNDYsIDgsIDQsIDIzNSwgCi0gICAgNDUsIDgsIDQsIDIzNSwgNTksIDgsIDQsIDIzNSwgNTcsIDgsIDQsIDIzNSwgNzEsIDgsIDQsIDIzNSwgNjEsIDgsIDQsIAotICAgIDIzNSwgMzgsIDgsIDQsIDIzNSwgMzYsIDgsIDQsIDIzNSwgNTQsIDgsIDQsIDIzNSwgNDIsIDgsIDQsIDIzNSwgMzksIDgsIAotICAgIDQsIDIzNSwgNDAsIDgsIDQsIDIzNSwgMzAsIDgsIDQsIDIzNSwgMjksIDgsIDQsIDIzNSwgMzQsIDgsIDQsIDIzNSwgMzMsIAotICAgIDgsIDQsIDIzNSwgMzEsIDgsIDQsIDIzNSwgMzIsIDgsIDQsIDIyNCwgMTkxLCA4LCA0LCAyMjQsIDE4OSwgOCwgNCwgMjI0LCAKLSAgICAxOTgsIDgsIDQsIDIyNCwgMTkyLCA4LCA0LCAyMjQsIDE5NSwgOCwgNCwgMjI0LCAxOTQsIDgsIDQsIDIyNCwgMTk3LCA4LCAKLSAgICA0LCAyMjQsIDE5NiwgOCwgNCwgMjI0LCAxNDQsIDgsIDQsIDIyNCwgMTQxLCA4LCA0LCAyMjQsIDE0NiwgOCwgNCwgMjI0LCAKLSAgICAxNDUsIDgsIDQsIDIyNCwgMTc4LCA4LCA0LCAyMjQsIDE3NywgOCwgNCwgMjI0LCAxODcsIDgsIDQsIDIyNCwgMTgxLCA4LCAKLSAgICA0LCAyMjQsIDEzNiwgOCwgNCwgMjI0LCAxMzIsIDgsIDQsIDIyNCwgMTc1LCA4LCA0LCAyMjQsIDE0MCwgOCwgNCwgMjI0LCAKLSAgICAxMzgsIDgsIDQsIDIyNCwgMTM5LCA4LCA0LCAyMjQsIDExNiwgOCwgNCwgMjI0LCAxMTQsIDgsIDQsIDIyNCwgMTI2LCA4LCAKLSAgICA0LCAyMjQsIDExOSwgOCwgNCwgMjI0LCAxMTcsIDgsIDQsIDIyNCwgMTE4LCA4LCA0LCAyMzUsIDkwLCA4LCA0LCAyMzUsIAotICAgIDg5LCA4LCA0LCAyMzUsIDk2LCA4LCA0LCAyMzUsIDkxLCA4LCA0LCAyMzUsIDkzLCA4LCA0LCAyMzUsIDkyLCA4LCA0LCAKLSAgICAyMzUsIDk1LCA4LCA0LCAyMzUsIDk0LCA4LCA0LCAyMzUsIDgxLCA4LCA0LCAyMzUsIDgzLCA4LCA0LCAyMzUsIDgyLCA4LCAKLSAgICA0LCAyMzUsIDg2LCA4LCA0LCAyMzUsIDg1LCA4LCA0LCAyMzUsIDg4LCA4LCA0LCAyMzUsIDg3LCA4LCA0LCAyMzUsIDc3LCAKLSAgICA4LCA0LCAyMzUsIDc2LCA4LCA0LCAyMzUsIDg0LCA4LCA0LCAyMzUsIDgwLCA4LCA0LCAyMzUsIDc4LCA4LCA0LCAyMzUsIAotICAgIDc5LCA4LCA0LCAyMzUsIDczLCA4LCA0LCAyMzUsIDcyLCA4LCA0LCAyMzUsIDc1LCA4LCA0LCAyMzUsIDc0LCA4LCA0LCAKLSAgICAyMjgsIDI0OSwgOCwgNCwgMjI4LCAyNDgsIDgsIDQsIDIyOSwgMCwgOCwgNCwgMjI4LCAyNTAsIDgsIDQsIDIyOCwgMjUyLCAKLSAgICA4LCA0LCAyMjgsIDI1MSwgOCwgNCwgMjI4LCAyNTUsIDgsIDQsIDIyOCwgMjUzLCA4LCA0LCAyMjgsIDIzOCwgOCwgNCwgCi0gICAgMjI4LCAyMzksIDgsIDQsIDIyOCwgMjQ0LCA4LCA0LCAyMjgsIDI0MywgOCwgNCwgMjI4LCAyNDcsIDgsIDQsIDIyOCwgMjQ1LCAKLSAgICA4LCA0LCAyMjgsIDIzMywgOCwgNCwgMjI4LCAyNDIsIDgsIDQsIDIyOCwgMjM3LCA4LCA0LCAyMjgsIDIzNCwgOCwgNCwgCi0gICAgMjI4LCAyMzUsIDgsIDQsIDIyOCwgMjI4LCA4LCA0LCAyMjgsIDIyNywgOCwgNCwgMjI4LCAyMzIsIDgsIDQsIDIyOCwgMjMxLCAKLSAgICA4LCA0LCAyMjgsIDIyOSwgOCwgNCwgMjI4LCAyMzAsIDgsIDQsIDIyOCwgMCwgOCwgNCwgMjI3LCAyNTUsIDgsIDQsIDIyOCwgCi0gICAgMTAsIDgsIDQsIDIyOCwgNCwgOCwgNCwgMjI4LCA3LCA4LCA0LCAyMjgsIDYsIDgsIDQsIDIyOCwgOSwgOCwgNCwgMjI4LCA4LCAKLSAgICA4LCA0LCAyMjcsIDI0MywgOCwgNCwgMjI3LCAyNDUsIDgsIDQsIDIyNywgMjQ0LCA4LCA0LCAyMjcsIDI0OSwgOCwgNCwgCi0gICAgMjI3LCAyNDgsIDgsIDQsIDIyNywgMjUzLCA4LCA0LCAyMjcsIDI1MCwgOCwgNCwgMjI3LCAyNDEsIDgsIDQsIDIyNywgMjQwLCAKLSAgICA4LCA0LCAyMjcsIDI0NywgOCwgNCwgMjI3LCAyNDIsIDgsIDQsIDIxMywgMTM4LCA4LCA0LCAyMTMsIDEzNywgOCwgNCwgCi0gICAgMjEzLCAxNDUsIDgsIDQsIDIxMywgMTQwLCA4LCA0LCAyMTMsIDE0MiwgOCwgNCwgMjEzLCAxNDEsIDgsIDQsIDIxMywgMTQ0LCAKLSAgICA4LCA0LCAyMTMsIDE0MywgOCwgNCwgMjEzLCAxMjcsIDgsIDQsIDIxMywgMTI4LCA4LCA0LCAyMTMsIDEzMiwgOCwgNCwgCi0gICAgMjEzLCAxMzEsIDgsIDQsIDIxMywgMTM2LCA4LCA0LCAyMTMsIDEzNCwgOCwgNCwgMjEzLCAxMDksIDgsIDQsIDIxMywgMTA3LCAKLSAgICA4LCA0LCAyMTMsIDExOSwgOCwgNCwgMjEzLCAxMTIsIDgsIDQsIDIxMywgMTEwLCA4LCA0LCAyMTMsIDExMSwgOCwgNCwgCi0gICAgMjEyLCAyNDEsIDgsIDQsIDIxMiwgMjM5LCA4LCA0LCAyMTIsIDI1NSwgOCwgNCwgMjEyLCAyNDIsIDgsIDQsIDIxMiwgMjQ5LCAKLSAgICA4LCA0LCAyMTIsIDI0OCwgOCwgNCwgMjEyLCAyNTIsIDgsIDQsIDIxMiwgMjUwLCA4LCA0LCAyMTIsIDE4MiwgOCwgNCwgCi0gICAgMjEyLCAxODEsIDgsIDQsIDIxMiwgMTg1LCA4LCA0LCAyMTIsIDE4MywgOCwgNCwgMjEyLCAyMTUsIDgsIDQsIDIxMiwgMjEyLCAKLSAgICA4LCA0LCAyMTIsIDIzNSwgOCwgNCwgMjEyLCAyMTksIDgsIDQsIDIxMiwgMTczLCA4LCA0LCAyMTIsIDE3MCwgOCwgNCwgCi0gICAgMjEyLCAyMDMsIDgsIDQsIDIxMiwgMTgwLCA4LCA0LCAyMTIsIDE3NiwgOCwgNCwgMjEyLCAxNzcsIDgsIDQsIDIxMiwgMTU1LCAKLSAgICA4LCA0LCAyMTIsIDE1NCwgOCwgNCwgMjEyLCAxNjEsIDgsIDQsIDIxMiwgMTU4LCA4LCA0LCAyMTIsIDE1NiwgOCwgNCwgCi0gICAgMjEyLCAxNTcsIDgsIDM0LCAyMjQsIDE3OCwgOCwgMzQsIDIzMywgMTMsIDgsIDM0LCAyMzQsIDcwLCA4LCAzNCwgMjI4LCA0LCAKLSAgICA4LCAzNCwgMjQ5LCAxMiwgOCwgMzQsIDIxOSwgMTI4LCA4LCAzNCwgMjQyLCAyNDQsIDgsIDM0LCAyNDMsIDIwLCA4LCAzNCwgCi0gICAgMjMxLCA0MiwgOCwgMzQsIDI0MCwgMTcyLCA4LCAzNCwgMjMyLCAxMTYsIDgsIDM0LCAyNTIsIDMsIDgsIDM0LCAyMzAsIAotICAgIDE5NiwgOCwgMzQsIDIxMiwgMjM1LCA4LCAzNCwgMjI1LCA4LCA4LCAzNCwgMjQwLCAxNjYsIDgsIDM0LCAyMTcsIDI1MywgOCwgCi0gICAgMzQsIDI0MywgMTEwLCA4LCAzNCwgMjEyLCAwLCA4LCAzNCwgMjQ5LCA2LCA4LCAzNCwgMjQ4LCA0NiwgOCwgMzQsIDI1MSwgCi0gICAgMjcsIDgsIDM0LCAyNDIsIDI0MCwgOCwgMzQsIDIyNywgMjUwLCA4LCAzNCwgMjE2LCA4MiwgOCwgMzQsIDIyNywgNDEsIDgsIAotICAgIDM0LCAyMzUsIDc3LCA4LCAzNCwgMjEyLCAxMiwgOCwgMzQsIDIyNCwgMjQ0LCA4LCAzNCwgMjQxLCA5NCwgOCwgMzQsIDIxMiwgCi0gICAgMjQxLCA4LCAzNCwgMjE0LCA5NSwgOCwgMzQsIDIyMCwgMTI2LCA4LCAzNCwgMjE0LCAyMjEsIDgsIDM0LCAyMTIsIDEwOSwgCi0gICAgOCwgMzQsIDIzNSwgNzEsIDgsIDM0LCAyMjcsIDIxNiwgOCwgMzQsIDIzNSwgNzUsIDgsIDM0LCAyNDIsIDEzMCwgOCwgMzQsIAotICAgIDIzNSwgOTUsIDgsIDM0LCAyMTMsIDIxNCwgOCwgMzQsIDI0NiwgMzMsIDgsIDM0LCAyMjAsIDEzOCwgOCwgMzQsIDIzMywgOCwgCi0gICAgOCwgMzQsIDI0OSwgMTYsIDgsIDM0LCAyNDksIDQ2LCA4LCAzNCwgMjQ5LCAyMzAsIDgsIDM0LCAyNDAsIDE2OSwgOCwgMzQsIAotICAgIDIyMCwgMjUxLCA4LCAzNCwgMjExLCAyNTUsIDgsIDM0LCAyMjAsIDE3OCwgOCwgMzQsIDI1MCwgNjcsIDgsIDM0LCAyMTEsIAotICAgIDIzMCwgOCwgMzQsIDIyOSwgMjUyLCA4LCAzNCwgMjM0LCAxODgsIDIzMiwgMjI1LCAxLCAyNTIsIDEwNywgMjMyLCAyMjUsIAotICAgIDEsIDE5MywgMjMyLCAyMjUsIDEsIDIyNiwgMjMsIDIzMiwgMjI1LCAxLCAyNDgsIDE2NCwgMjMyLCAyMjUsIDEsIDIxOCwgCi0gICAgNTIsIDIzMiwgMjI1LCAxLCAyMTcsIDE2MSwgMjMyLCAyMjUsIDEsIDI0MywgMTEwLCAyMzIsIDIyNSwgMSwgMTgxLCAyMzIsIAotICAgIDIyNSwgMSwgMjM0LCAxMzgsIDIzMiwgMjI1LCAxLCAyMzUsIDEzOSwgMjMyLCAyMjUsIDEsIDI1MCwgMjE5LCAyMzIsIDIyNSwgCi0gICAgMSwgMjUwLCA5MiwgMjMyLCAyMjUsIDEsIDI0NSwgMjQ5LCAyMzIsIDIyNSwgMSwgMjE2LCAxNDEsIDIzMiwgMjI1LCAxLCAKLSAgICAyMTYsIDEzMywgMjMyLCAyMjUsIDEsIDE4OCwgMjMyLCAyMjUsIDEsIDIwNSwgMjMyLCAyMjUsIDEsIDIzMywgMTU3LCAyMzIsIAotICAgIDIyNSwgMSwgMjIyLCAyMDIsIDIzMiwgMjI1LCAxLCAyMTIsIDc1LCAyMzIsIDIyNSwgMSwgMjEyLCAxMDksIDIzMiwgMjI1LCAKLSAgICAxLCAyMjksIDE1OSwgMjMyLCAyMjUsIDEsIDE1OSwgMjMyLCAyMjUsIDEsIDIxMywgMTUzLCAyMzIsIDIyNSwgMSwgMjQxLCAKLSAgICAxNzQsIDIzMiwgMjI1LCAxLCAyNDQsIDE2NCwgMjMyLCAyMjUsIDEsIDIxNCwgNDksIDIzMiwgMjI1LCAxLCAyMjEsIDI0LCAKLSAgICAyMzIsIDIyNSwgMSwgMTg2LCAyMzIsIDIyNSwgMSwgMjQyLCAyMjUsIDIzMiwgMjI1LCAxLCA2MSwgMjMyLCAyMjUsIDEsIAotICAgIDI1NCwgMTQ4LCAyMzIsIDIyNSwgMSwgNzQsIDIzMiwgMjI1LCAxLCAyNDUsIDIyLCAyMzIsIDIyNSwgMSwgNzIsIDIzMiwgCi0gICAgMjI1LCAxLCA3NSwgMjMyLCAyMjUsIDEsIDY5LCAyMzIsIDIyNSwgMSwgMjE1LCAxODMsIDIzMiwgMjI1LCAxLCAyMTUsIAotICAgIDE3OCwgMjMyLCAyMjUsIDEsIDIyNywgOTksIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyMTcsIDcxLCAyMzIsIDIyNSwgCi0gICAgMSwgMTYwLCAyMzAsIDQ2LCAyMjUsIDE1MCwgMjMyLCAyMjUsIDEsIDE2MCwgMjMwLCAxMDQsIDI0OSwgMTUsIDIzMiwgMjI1LCAKLSAgICAxLCAxNjAsIDIzMCwgMTA0LCAyNTEsIDEyOCwgMjMyLCAyMjUsIDEsIDE2MCwgMjMwLCAxMDQsIDIwNSwgMjMyLCAyMjUsIDEsIAotICAgIDE2MCwgMjMwLCAxMDQsIDIzNSwgMTE2LCAyMzIsIDIyNSwgMjI1LCAyNywgMjQ5LCAxNTcsIDIzMiwgMjI1LCAyMjUsIDI3LCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMzksIDQsIDI0NSwgMTY1LCAzOSwgNCwgMjQ1LCAxNjIsIDM5LCA0LCAyNDEsIDIwNCwgMzksIAotICAgIDQsIDIxNCwgMSwgMzksIDQsIDIxNCwgMCwgMzksIDQsIDIyNiwgODYsIDM5LCA0LCAyNTEsIDE5MSwgMzksIDQsIDI1MSwgCi0gICAgMjQyLCAzOSwgNCwgMjMxLCAxNzksIDM5LCA0LCAyMzQsIDAsIDM5LCA0LCAyMzEsIDczLCAzOSwgNCwgMjQzLCA1MSwgMzksIAotICAgIDQsIDI0NCwgMTE2LCAzOSwgNCwgMjE0LCAyMjcsIDM5LCA0LCAyMTcsIDIxOSwgMzksIDQsIDIxNywgMTQ3LCAzOSwgNCwgCi0gICAgMjQ3LCAyMjQsIDM5LCA0LCAyNDcsIDIyMSwgMzksIDQsIDIzMywgNzQsIDM5LCA0LCAyMjQsIDEsIDM5LCA0LCAyNDgsIDI4LCAKLSAgICAzOSwgNCwgMjI5LCAyMTksIDM5LCA0LCAyMjIsIDg5LCAzOSwgNCwgMjIwLCAyNDEsIDM5LCA0LCAyMTIsIDg1LCAzOSwgNCwgCi0gICAgMjEyLCA2NiwgMzksIDQsIDI1MCwgMTE2LCAzOSwgNCwgMjM1LCAxMjUsIDM5LCA0LCAyMjksIDcsIDM5LCA0LCAyMTMsIDM1LCAKLSAgICAzOSwgNCwgMjM0LCAxODcsIDM5LCA0LCAyMjksIDEzNiwgMzksIDQsIDI0MywgMzEsIDM5LCA0LCAyMzEsIDE0NSwgMzksIDQsIAotICAgIDIyOSwgMTg0LCAzOSwgNCwgMjI4LCAxNiwgMzksIDQsIDcyLCAzOSwgNCwgMjM1LCAyNTEsIDM5LCA0LCAyNDEsIDE2NSwgCi0gICAgMzksIDQsIDI0MSwgMTQ2LCAzOSwgNCwgMjEzLCAyMzUsIDM5LCA0LCAyMTMsIDIyNiwgMzksIDQsIDIyNSwgMjQwLCAzOSwgCi0gICAgNCwgMjUxLCAxODksIDM5LCA0LCAyNTEsIDE4NCwgMzksIDQsIDIzMSwgMTcyLCAzOSwgNCwgMjMzLCAyNTMsIDM5LCA0LCAKLSAgICAyMzEsIDcwLCAzOSwgNCwgMjQzLCA0NywgMzksIDQsIDI0NCwgOTAsIDM5LCA0LCAyMTQsIDE1NCwgMzksIDQsIDIxNywgNzEsIAotICAgIDM5LCA0LCAyMTcsIDEyOCwgMzksIDQsIDI0NywgMjE2LCAzOSwgNCwgMjQ3LCAyMjAsIDM5LCA0LCAyMzMsIDEzLCAzOSwgNCwgCi0gICAgMjIzLCAxODgsIDM5LCA0LCAyNDcsIDIxMSwgMzksIDQsIDIyOSwgMjEzLCAzOSwgNCwgMjIwLCAxMTcsIDM5LCA0LCAyMjAsIAotICAgIDIxMiwgMzksIDQsIDIxMiwgMzcsIDM5LCA0LCAyMTIsIDYyLCAzOSwgNCwgMjQ5LCAyNDQsIDM5LCA0LCAyMzUsIDExMCwgCi0gICAgMzksIDQsIDIyOSwgMCwgMzksIDQsIDIxMiwgMjU1LCAzOSwgNCwgMjM0LCAxMDEsIDM5LCA0LCAyMjksIDEyOCwgMzksIDQsIAotICAgIDI0MiwgMTkwLCAzOSwgNCwgMjMxLCA0MiwgMzksIDQsIDIyOSwgNjQsIDM5LCA0LCAyMjgsIDEwLCAzOSwgNCwgNjEsIDM5LCAKLSAgICA0LCAyNTQsIDMyLCAzOSwgNCwgMjI5LCAxNTUsIDM5LCA0LCAxNTksIDM5LCA0LCAyNDIsIDEsIDM5LCA0LCAyMTQsIDQ5LCAKLSAgICAzOSwgNCwgMjE0LCAzOSwgMzksIDQsIDE5MywgMzksIDQsIDI1MSwgMTk1LCAzOSwgNCwgMjUyLCAxMDcsIDM5LCA0LCAyMzEsIAotICAgIDE4NywgMzksIDQsIDIzNCwgNCwgMzksIDQsIDIzNCwgMywgMzksIDQsIDIzMSwgNzcsIDM5LCA0LCAyNDMsIDU1LCAzOSwgNCwgCi0gICAgMjQ0LCAxNjQsIDM5LCA0LCAyMTUsIDEsIDM5LCA0LCAyMTgsIDUyLCAzOSwgNCwgMjE3LCAxNjEsIDM5LCA0LCAyNDcsIAotICAgIDIzMiwgMzksIDQsIDI0NywgMjIzLCAzOSwgNCwgMjMzLCAxNTcsIDM5LCA0LCAyMDMsIDM5LCA0LCAyNDgsIDE2NCwgMzksIAotICAgIDQsIDIyOSwgMjI4LCAzOSwgNCwgMjIyLCAyMDIsIDM5LCA0LCAyMjEsIDI0LCAzOSwgNCwgMjEyLCAxMDksIDM5LCA0LCAKLSAgICAyMTIsIDc1LCAzOSwgNCwgMjUwLCAyMTksIDM5LCA0LCAyMzUsIDEzOSwgMzksIDQsIDIyOSwgMTYsIDM5LCA0LCAxODYsIAotICAgIDM5LCA0LCAxODEsIDM5LCA0LCAyMzQsIDIzOSwgMzksIDQsIDIyOSwgMTQxLCAzOSwgNCwgMjQzLCAxMTAsIDM5LCA0LCAKLSAgICAxODgsIDM5LCA0LCAyMDUsIDM5LCA0LCAyMjgsIDIzLCAzOSwgNCwgMjI3LCA0OSwgMzksIDQsIDIyNywgNDUsIDM5LCA0LCAKLSAgICAyNDEsIDM5LCAzOSwgNCwgMjEzLCAyMDIsIDM5LCA0LCAyMTMsIDE5OCwgMzksIDQsIDIyNSwgMTI5LCAzOSwgNCwgMjUxLCAKLSAgICAxODcsIDM5LCA0LCAyNTEsIDExOCwgMzksIDQsIDIzMSwgMTY3LCAzOSwgNCwgMjMzLCAyNTEsIDM5LCA0LCAyMzEsIDY2LCAKLSAgICAzOSwgNCwgMjQzLCA0MywgMzksIDQsIDI0NCwgMywgMzksIDQsIDIxNCwgMTA4LCAzOSwgNCwgMjE2LCAyMzAsIDM5LCA0LCAKLSAgICAyMTcsIDEwNiwgMzksIDQsIDI0NywgMjE0LCAzOSwgNCwgMjQ3LCAyMTgsIDM5LCA0LCAyMzIsIDE4MCwgMzksIDQsIDIyMywgCi0gICAgOTksIDM5LCA0LCAyNDcsIDc5LCAzOSwgNCwgMjI5LCAyMDAsIDM5LCA0LCAyMTksIDIyNiwgMzksIDQsIDIyMCwgMTgxLCAKLSAgICAzOSwgNCwgMjEyLCAxNCwgMzksIDQsIDIxMiwgNTksIDM5LCA0LCAyNDksIDExMywgMzksIDQsIDIzNSwgNjIsIDM5LCA0LCAKLSAgICAyMjgsIDI0NiwgMzksIDQsIDIxMiwgMjIwLCAzOSwgNCwgMjM0LCAxOSwgMzksIDQsIDIyOSwgMTI2LCAzOSwgNCwgMjQyLCAKLSAgICAxNDAsIDM5LCA0LCAyMzAsIDIwMiwgMzksIDQsIDIyOCwgMTc1LCAzOSwgNCwgMjI3LCAyNTEsIDM5LCA0LCA2OSwgMzksIDQsIAotICAgIDIxNSwgMTYwLCAzOSwgNCwgMjQwLCAyMTIsIDM5LCA0LCAyNDAsIDIwMiwgMzksIDQsIDIxMywgMTgzLCAzOSwgNCwgMjEzLCAKLSAgICAxNzcsIDM5LCA0LCAyMjUsIDM1LCAzOSwgNCwgMjUxLCAxODYsIDM5LCA0LCAyNTEsIDU0LCAzOSwgNCwgMjMxLCAxNjYsIAotICAgIDM5LCA0LCAyMzMsIDI0OSwgMzksIDQsIDIzMSwgNjUsIDM5LCA0LCAyNDMsIDQyLCAzOSwgNCwgMjQzLCAyMDUsIDM5LCA0LCAKLSAgICAyMTQsIDk5LCAzOSwgNCwgMjE2LCA4MiwgMzksIDQsIDIxNywgOTAsIDM5LCA0LCAyNDcsIDIxMiwgMzksIDQsIDI0NywgCi0gICAgMjE3LCAzOSwgNCwgMjMyLCAxNTYsIDM5LCA0LCAyMjMsIDUxLCAzOSwgNCwgMjQ2LCAzMywgMzksIDQsIDIyOSwgMTk1LCAKLSAgICAzOSwgNCwgMjE5LCAyNywgMzksIDQsIDIyMCwgMTUwLCAzOSwgNCwgMjEyLCA4LCAzOSwgNCwgMjEyLCA1NSwgMzksIDQsIAotICAgIDI0OSwgNTMsIDM5LCA0LCAyMzUsIDU0LCAzOSwgNCwgMjI4LCAyNDIsIDM5LCA0LCAyMTIsIDIwMywgMzksIDQsIDIzMywgCi0gICAgMjM4LCAzOSwgNCwgMjI5LCAxMjUsIDM5LCA0LCAyNDIsIDkyLCAzOSwgNCwgMjMwLCAxNzIsIDM5LCA0LCAyMjgsIDkyLCAKLSAgICAzOSwgNCwgMjI3LCAyNDcsIDM5LCA0LCA3NSwgMzksIDQsIDIyNywgNjIsIDM5LCA0LCAyMjksIDg2LCAzOSwgNCwgMjQxLCAKLSAgICA1NCwgMzksIDQsIDI0MSwgNDIsIDM5LCA0LCAyMTMsIDIxNCwgMzksIDQsIDIxMywgMjAzLCAzOSwgNCwgMjI1LCAxNTAsIAotICAgIDM5LCA0LCAyNTEsIDE4OCwgMzksIDQsIDI1MSwgMTI4LCAzOSwgNCwgMjMxLCAxNjgsIDM5LCA0LCAyMzMsIDI1MiwgMzksIAotICAgIDQsIDIzMSwgNjgsIDM5LCA0LCAyNDMsIDQ1LCAzOSwgNCwgMjQzLCA0NCwgMzksIDQsIDI0NCwgMTIsIDM5LCA0LCAyMTQsIAotICAgIDExOSwgMzksIDQsIDEwOCwgMzksIDQsIDIxNywgMTA5LCAzOSwgNCwgMjQ3LCAyMTUsIDM5LCA0LCAyNDcsIDIxOSwgMzksIAotICAgIDQsIDIzMiwgMjA4LCAzOSwgNCwgMjIzLCAxMTIsIDM5LCA0LCAyNDcsIDk5LCAzOSwgNCwgMjI5LCAyMDQsIDM5LCA0LCAKLSAgICAyMTksIDI0MiwgMzksIDQsIDIyMCwgMTg3LCAzOSwgNCwgMjEyLCAxNiwgMzksIDQsIDIxMiwgNjAsIDM5LCA0LCAyNDksIAotICAgIDE3NSwgMzksIDQsIDIzNSwgNzEsIDM5LCA0LCAyMjgsIDI0NywgMzksIDQsIDIxMiwgMjM1LCAzOSwgNCwgMjM0LCAzNywgCi0gICAgMzksIDQsIDIyOSwgMTI3LCAzOSwgNCwgMjQyLCAxNTAsIDM5LCA0LCAyMzAsIDIzMSwgMzksIDQsIDIyOCwgMTg1LCAzOSwgCi0gICAgNCwgMjI3LCAyNTMsIDM5LCA0LCA3NCwgMzksIDQsIDI0NSwgMTA4LCAzOSwgNCwgMjI5LCAxNDYsIDM5LCA0LCAyNDEsIAotICAgIDIyMiwgMzksIDQsIDI0MSwgMTkzLCAzOSwgNCwgMjE0LCA2LCAzOSwgNCwgMjEzLCAyNTMsIDM5LCA0LCAyMjYsIDk2LCAzOSwgCi0gICAgNCwgMjUxLCAxOTIsIDM5LCA0LCAyNTEsIDI1MSwgMzksIDQsIDIzMSwgMTgwLCAzOSwgNCwgMjM0LCAxLCAzOSwgNCwgMjMzLCAKLSAgICAyNTUsIDM5LCA0LCAyMzEsIDc0LCAzOSwgNCwgMjQzLCA1MiwgMzksIDQsIDI0MywgNTAsIDM5LCA0LCAyNDQsIDEyMywgMzksIAotICAgIDQsIDIxNCwgMjMyLCAzOSwgNCwgMjE3LCAyMjksIDM5LCA0LCAyMTcsIDE0OCwgMzksIDQsIDI0NywgMjI1LCAzOSwgNCwgCi0gICAgMjQ3LCAyMjIsIDM5LCA0LCAyMzMsIDgyLCAzOSwgNCwgMjI0LCAyMSwgMzksIDQsIDI0OCwgNDEsIDM5LCA0LCAyMjksIAotICAgIDIyMCwgMzksIDQsIDIyMiwgMTAwLCAzOSwgNCwgMjIwLCAyNDMsIDM5LCA0LCAyMTIsIDg3LCAzOSwgNCwgMjEyLCA2NywgCi0gICAgMzksIDQsIDI1MCwgMTI0LCAzOSwgNCwgMjM1LCAxMjcsIDM5LCA0LCAyMjksIDksIDM5LCA0LCAyMTMsIDM4LCAzOSwgNCwgCi0gICAgMjM0LCAxODgsIDM5LCA0LCAyMjksIDEzNywgMzksIDQsIDIyOSwgMTMzLCAzOSwgNCwgMjQzLCAzOCwgMzksIDQsIDI0MywgCi0gICAgMjcsIDM5LCA0LCAyMzEsIDE1NiwgMzksIDQsIDIyOSwgMTg3LCAzOSwgNCwgMjI4LCAxNywgMzksIDQsIDIyOSwgMTYxLCAKLSAgICAzOSwgNCwgMjMzLCA0NiwgMzksIDI0OSwgMTU3LCAzOSwgMjQzLCAyMDAsIDIxOSwgNjksIDM5LCAyMjQsIDE1OCwgNzcsIAotICAgIDM5LCA0LCAyMjksIDIwMywgMjQ0LCAxNjQsIDM5LCA0LCAyMjksIDIwMywgMTgxLCAzOSwgNCwgMjI5LCAyMDMsIDIxOSwgCi0gICAgMjI2LCAzOSwgMTYsIDI0NCwgMTEzLCAzOSwgMTYsIDIzNCwgMTg2LCAzOSwgMTYsIDIxNywgMzQsIDM5LCAxNiwgMjI5LCAKLSAgICAzOSwgMzksIDE2LCAyNTIsIDY2LCAzOSwgMTYsIDI0NCwgMTYzLCAzOSwgMTYsIDIxOCwgNDksIDM5LCAxNiwgMjQ4LCAxMjEsIAotICAgIDM5LCAxNiwgMjQ3LCA3OCwgMzksIDE2LCAyMzMsIDIyNywgMzksIDE2LCAyMTYsIDIzNCwgMzksIDE2LCAyNDcsIDk4LCAzOSwgCi0gICAgMTYsIDIzNSwgNjMsIDM5LCAyMSwgMjEyLCA3OSwgMzksIDIxLCAxMTYsIDM5LCAyMSwgMTA5LCAzOSwgMjEsIDE2NiwgMzksIAotICAgIDIxLCAxNjMsIDM5LCAyMSwgMTgwLCAzOSwgMjEsIDE4OSwgMzksIDIxLCAxOTgsIDM5LCAyMSwgMTk1LCAzOSwgMjEsIDIwMCwgCi0gICAgMzksIDQsIDIyOSwgMjAzLCAxODgsIDM5LCA0LCAyMjksIDIwMywgMjQ3LCA5OSwgMzMsIDYsIDEsIDIxMiwgODMsIDMzLCAzLCAKLSAgICAxLCAyMTIsIDgzLCAzMywgNiwgMSwgMjQ1LCAyNDUsIDMzLCAzLCAxLCAyNDUsIDI0NSwgMzMsIDYsIDEsIDIyMywgMjAyLCAKLSAgICAyNDUsIDI0NywgMzMsIDMsIDEsIDIyMywgMjAyLCAyNDUsIDI0NywgMzMsIDYsIDEsIDIzNSwgMTgzLCAzMywgMywgMSwgCi0gICAgMjM1LCAxODMsIDMzLCA2LCAxLCAyNDcsIDExMywgMzMsIDMsIDEsIDI0NywgMTEzLCAzMywgNiwgMSwgMjMwLCAyMTAsIAotICAgIDIxNSwgMTc1LCAzMywgMywgMSwgMjMwLCAyMTAsIDIxNSwgMTc1LCAzMywgNiwgMSwgMjUxLCA2NCwgMjI3LCA2NywgMzMsIAotICAgIDMsIDEsIDI1MSwgNjQsIDIyNywgNjcsIDMzLCA2LCAxLCAyMjksIDE2OSwgMjEzLCAyMiwgMzMsIDMsIDEsIDIyOSwgMTY5LCAKLSAgICAyMTMsIDIyLCAzMywgNiwgMSwgMjEzLCAxOSwgMiwgMjUyLCAxMDIsIDIxMywgMjIsIDMzLCAzLCAxLCAyMTMsIDE5LCAyLCAKLSAgICAyNTIsIDEwMiwgMjEzLCAyMiwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyMTMsIDQ5LCAzMywgMywgMSwgMjM1LCAxODEsIDIxMywgCi0gICAgNDksIDMzLCA2LCAxLCAyMjMsIDIwMiwgMjEyLCAyMDMsIDMzLCAzLCAxLCAyMjMsIDIwMiwgMjEyLCAyMDMsIDMzLCA2LCAxLCAKLSAgICAyMzUsIDE4MSwgNjEsIDMzLCAzLCAxLCAyMzUsIDE4MSwgNjEsIDMzLCA2LCAxLCAyNDksIDE5MywgMjMyLCAyMjEsIDIxMiwgCi0gICAgMTc0LCAzMywgMywgMSwgMjQ5LCAxOTMsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDI1MSwgMTM3LCAyMTIsIAotICAgIDE3NCwgMzMsIDMsIDEsIDI1MSwgMTM3LCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyNDksIDE5MywgMjMyLCAKLSAgICAyMjEsIDIxMiwgMTc0LCAzMywgMywgMSwgMjM1LCAxODEsIDI0OSwgMTkzLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAKLSAgICAxLCAyMTIsIDIzNywgMzMsIDMsIDEsIDIxMiwgMjM3LCAzMywgNiwgMSwgMjIzLCAyMDIsIDIxNiwgMTM2LCAzMywgMywgMSwgCi0gICAgMjIzLCAyMDIsIDIxNiwgMTM2LCAzMywgNiwgMSwgMjE5LCAyMzYsIDI0OCwgNDEsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ4LCAKLSAgICA0MSwgMzMsIDYsIDEsIDIxOSwgMjM2LCAyNDUsIDEzMSwgMzMsIDMsIDEsIDIxOSwgMjM2LCAyNDUsIDEzMSwgMzMsIDYsIDEsIAotICAgIDIxOSwgMjM2LCAyNDUsIDExNywgMzMsIDMsIDEsIDIxOSwgMjM2LCAyNDUsIDExNywgMzMsIDYsIDEsIDIzMCwgMjE0LCA3NSwgCi0gICAgMzMsIDMsIDEsIDIzMCwgMjE0LCA3NSwgMzMsIDYsIDEsIDI1MSwgMTYzLCA3NSwgMzMsIDMsIDEsIDI1MSwgMTYzLCA3NSwgCi0gICAgMzMsIDYsIDEsIDUxLCAyMzAsIDIxNCwgNzUsIDMzLCAzLCAxLCA1MSwgMjMwLCAyMTQsIDc1LCAzMywgMSwgMjMwLCAxNTYsIAotICAgIDc1LCAzNywgMzMsIDIxNCwgODQsIDM3LCAzMywgMjE3LCAyMDEsIDIzMSwgNCwgNTIsIDM3LCAzMywgMjQwLCAyMDEsIDIzMSwgCi0gICAgNCwgNTIsIDM3LCAzMywgMjE3LCAxMDEsIDIzMSwgNCwgNTIsIDIyMCwgMjEsIDI1MywgMTMyLCAzNywgMzMsIDIzNCwgMTk4LCAKLSAgICAzNywgMzMsIDIyNiwgMTAxLCAzMywgMjM0LCAxOTgsIDMzLCAyMjYsIDEwMSwgMzMsIDYsIDEsIDI0NiwgMSwgMzMsIDMsIDEsIAotICAgIDI0NiwgMSwgMzMsIDYsIDEsIDI0NSwgMjM4LCAzMywgMywgMSwgMjQ1LCAyMzgsIDMzLCA2LCAxLCAyMTIsIDQ1LCAzMywgMywgCi0gICAgMSwgMjEyLCA0NSwgMzMsIDYsIDEsIDI1MCwgMTQwLCAzMywgMywgMSwgMjUwLCAxNDAsIDMzLCA2LCAxLCAyNDUsIDIzNywgCi0gICAgMzMsIDMsIDEsIDI0NSwgMjM3LCAzMywgNiwgMSwgMjE3LCAyMzAsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDMsIDEsIDIxNywgCi0gICAgMjMwLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCA2LCAxLCAyMTYsIDQzLCAzMywgMywgMSwgMjE2LCA0MywgMzMsIDYsIDEsIAotICAgIDIxNiwgMTE5LCAzMywgMywgMSwgMjE2LCAxMTksIDMzLCA2LCAxLCAyMTYsIDEyMywgMzMsIDMsIDEsIDIxNiwgMTIzLCAzMywgCi0gICAgNiwgMSwgMjE3LCAyMzUsIDMzLCAzLCAxLCAyMTcsIDIzNSwgMzMsIDYsIDEsIDI0MCwgMTkwLCAzMywgMywgMSwgMjQwLCAKLSAgICAxOTAsIDMzLCA2LCAxLCAyMjAsIDEzMiwgMzMsIDMsIDEsIDIyMCwgMTMyLCAyMCwgMSwgNjEsIDIwLCAxLCAxODEsIDIwLCAKLSAgICAxLCA2OSwgMjAsIDEsIDIzMywgMjM4LCAyMCwgMSwgMjQ1LCAxNjUsIDIwLCAxLCAyMjQsIDEsIDIwLCAxLCAyMTgsIDM1LCAKLSAgICAyMCwgMSwgNzUsIDIwLCAxLCAyMjgsIDEwLCAyMCwgMSwgNzIsIDIwLCAxLCAyMzMsIDE1NywgMjAsIDEsIDE5MywgMjAsIDEsIAotICAgIDIyMywgMTM2LCAyMCwgMSwgMjIzLCAxODIsIDIwLCAxLCAyMzMsIDczLCAyMCwgMSwgMjMxLCAxNDQsIDIwLCAxLCAyMTgsIAotICAgIDQ5LCAyMCwgMSwgMjI5LCAyMjYsIDIwLCAxLCAyMjksIDE0LCAyMCwgMSwgMTgzLCAyMCwgMSwgMjE4LCAyMDUsIDIwLCAxLCAKLSAgICAyMzAsIDE3MiwgMjAsIDEsIDIyMCwgMjA3LCAyMCwgMSwgMjIwLCAxMTcsIDIwLCAxLCAyMjAsIDIxNywgMjAsIDEsIDIyMSwgCi0gICAgNDQsIDIwLCAxLCAyMzMsIDE3NywgMjAsIDEsIDIzNCwgMTYyLCAyMCwgMSwgMjI4LCA2NCwgMjAsIDEsIDIyOCwgOTIsIDIwLCAKLSAgICAxLCAyMjgsIDI0MSwgMjAsIDEsIDIxMiwgMjE3LCAyMCwgMSwgMjIwLCAxNTAsIDIwLCAxLCAyMTIsIDE3OCwgMjAsIDEsIAotICAgIDE4NiwgMjAsIDEsIDIyOCwgMTIwLCAyMCwgMSwgMjM0LCAxNDgsIDIwLCAxLCAyMjYsIDI3LCAyMCwgMSwgMjI5LCA3LCAyMCwgCi0gICAgMSwgMjI4LCAxMDEsIDIwLCAxLCAyMjUsIDMwLCAyMCwgMSwgMjEzLCAxODAsIDIwLCAxLCAyMjYsIDg2LCAyMCwgMSwgMjQ0LCAKLSAgICAxMTYsIDIwLCAxLCAyMjMsIDUxLCAyMCwgMSwgMjMyLCAxNTYsIDIwLCAxLCAyMzEsIDQyLCAyMCwgMSwgMjI5LCA2NCwgMjAsIAotICAgIDEsIDIyMywgMjA0LCAyMCwgMSwgMjI0LCA2MSwgMjAsIDEsIDIzNCwgMTcxLCAyMCwgMSwgMjI5LCA5MywgMjAsIDEsIDIyOSwgCi0gICAgMTQxLCAyMCwgMSwgMjI5LCAxNTksIDIwLCAxLCAyMjAsIDE4NywgMjAsIDEsIDIyNSwgMzMsIDIwLCAxLCAyNDMsIDIwNSwgCi0gICAgMjAsIDEsIDI0NCwgNiwgMjAsIDEsIDIxNCwgNDksIDIwLCAxLCAyMDUsIDIwLCAxLCAyMzMsIDEzLCAyMCwgMSwgMjI1LCAKLSAgICAyNDAsIDIwLCAxLCAyMzIsIDE3NCwgMjAsIDEsIDIzNCwgMzcsIDIwLCAxLCAyMzEsIDE3NywgMjAsIDEsIDIyMywgMjMzLCAKLSAgICAyMCwgMSwgMjMxLCAxMjIsIDIwLCAxLCAxODgsIDIwLCAxLCAyMTcsIDcxLCAyMCwgMSwgMjM0LCAxMDEsIDIwLCAxLCAyMzAsIAotICAgIDIzMSwgMjAsIDEsIDIzMSwgMTg1LCAyMCwgMSwgMjE3LCAxODMsIDIwLCAxLCAyMzQsIDQsIDIwLCAxLCAyMTcsIDIwMCwgCi0gICAgMjAsIDEsIDIyOCwgOTMsIDIwLCAxLCAyMjIsIDE2NiwgMjAsIDEsIDI0NCwgMTYwLCAyMCwgMSwgMjM0LCA2LCAyMCwgMSwgCi0gICAgMjM0LCAzMywgMjAsIDM3LCAxNTIsIDIzNCwgMTQsIDIwLCAzNywgMTUyLCAyMTYsIDc0LCAyMCwgMjI5LCAxMywgMjAsIAotICAgIDI0MywgMjAwLCAyMTksIDY5LCAyMCwgMjQ5LCAxNjQsIDIwLCAyNDksIDE1NywgMjAsIDIyMSwgNzAsIDIwLCAyMjQsIDE1OCwgCi0gICAgNzcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjUsIDE5MywgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEzLCAKLSAgICA1OSwgMjI1LCAxOTMsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjEsIDcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIAotICAgIDIxMywgNTksIDIyMSwgNywgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEyLCAyNDUsIDIyNCwgMTc1LCA1OSwgMSwgMjUwLCAzMywgCi0gICAgMTYwLCAyMTMsIDU5LCAyMjQsIDE3NSwgNTksIDEsIDI1MCwgMzMsIDE2MCwgMjEyLCAyNDUsIDIyMywgNTEsIDU5LCAxLCAKLSAgICAyNTAsIDMzLCAxNjAsIDIxMywgNTksIDIyMywgNTEsIDU5LCAxLCAyNDQsIDI0NCwgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAKLSAgICAxLCAxMjQsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMjQ2LCA3MiwgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIAotICAgIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDQsIAotICAgIDI0NiwgNzIsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMTI0LCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIAotICAgIDEsIDIzMSwgMzgsIDI0NiwgNzIsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAyNDYsIDcyLCAyMzMsIDYzLCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQ0LCAKLSAgICAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDEyNCwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyMzEsIDM4LCAyMzMsIAotICAgIDYzLCAxNjAsIDEzNCwgNTksIDEsIDExNSwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMjMzLCA2MywgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCA2MiwgNzEsIDEzNCwgNTksIDEsIDYyLCAyMjAsIDIzLCA1OSwgMSwgNjIsIDE5OSwgMTM0LCAKLSAgICA1OSwgMSwgMjMyLCAxNjMsIDQ2LCAyNDksIDEwMCwgMjU0LCAxOCwgNTksIDEsIDIyNCwgNDgsIDExNCwgNjgsIDU5LCAxLCAKLSAgICAyMjQsIDQ4LCAxMTksIDY4LCA1OSwgMSwgMjI0LCA0OCwgMjQ0LCAyNTQsIDc3LCA1OSwgMSwgMjI0LCA0OCwgMjM1LCAxOTEsIAotICAgIDI0NCwgMjU0LCA3NywgNTksIDEsIDExNSwgMjM1LCAxOTEsIDI0NCwgMjU0LCA3NywgNTksIDEsIDIxOSwgNTEsIDI0LCAKLSAgICAxMjQsIDIxNiwgMjQxLCA1OSwgMSwgMjE5LCA1MSwgMjQsIDExNSwgMjE2LCAyNDEsIDcsIDYsIDEsIDI0NSwgMTU2LCAyNTQsIAotICAgIDc4LCA3LCAzLCAxLCAyNDUsIDE1NiwgMjU0LCA3OCwgNywgNiwgMSwgMjQ1LCAxNTYsIDI1NCwgMTAzLCA3LCAzLCAxLCAKLSAgICAyNDUsIDE1NiwgMjU0LCAxMDMsIDcsIDYsIDEsIDI0MSwgMTkxLCA3LCAzLCAxLCAyNDEsIDE5MSwgNywgNiwgMSwgMjE2LCAKLSAgICA2LCA3LCAzLCAxLCAyMTYsIDYsIDcsIDYsIDEsIDIxNiwgMTg3LCA3LCAzLCAxLCAyMTYsIDE4NywgNywgNiwgMSwgMjQ5LCAKLSAgICA1MSwgNywgMywgMSwgMjQ5LCA1MSwgNywgNiwgMSwgMjQ5LCA1MiwgMiwgMjQ5LCAxNTcsIDcsIDMsIDEsIDI0OSwgNTIsIDIsIAotICAgIDI0OSwgMTU3LCA3LCAxLCAzLCA2LCAyNDQsIDIzMCwgNywgMSwgMywgNiwgMTk3LCA3LCA2LCAxLCAyNTQsIDIzMiwgNywgMywgCi0gICAgMSwgMjU0LCAyMzIsIDcsIDYsIDEsIDI1MywgMjQwLCA3LCAzLCAxLCAyNTMsIDI0MCwgNywgNiwgMSwgMjUzLCAxMDgsIDcsIAotICAgIDMsIDEsIDI1MywgMTA4LCA3LCA2LCAxLCAyNTMsIDkyLCA3LCAzLCAxLCAyNTMsIDkyLCA3LCA2LCAxLCAyNTMsIDkzLCAyLCAKLSAgICAxOTksIDEzNCwgNywgMywgMSwgMjUzLCA5MywgMiwgMTk5LCAxMzQsIDcsIDYsIDEsIDI1MywgODMsIDcsIDMsIDEsIDI1MywgCi0gICAgODMsIDcsIDYsIDEsIDIyMywgMjAyLCAyNTAsIDI1MywgMiwgMjQ3LCA3NCwgNywgMywgMSwgMjIzLCAyMDIsIDI1MCwgMjUzLCAKLSAgICAyLCAyNDcsIDc0LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgOTAsIDcsIDYsIDEsIAotICAgIDIzNSwgMjgsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAKLSAgICAyMzUsIDI4LCAyLCAyMTksIDQ1LCAyNCwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyMTksIDQ1LCAyNCwgCi0gICAgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyNTEsIDYzLCAxNTAsIDcsIDMsIDEsIDI1MSwgNjMsIDE1MCwgNywgNiwgMSwgMjMzLCAKLSAgICAxNzEsIDIsIDEyNCwgOTAsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAxMjQsIDkwLCA3LCA2LCAxLCAxNTcsIDIsIDE4NCwgCi0gICAgMjE5LCA0NSwgMjI2LCAyNDQsIDcsIDMsIDEsIDE1NywgMiwgMTg0LCAyMTksIDQ1LCAyMjYsIDI0NCwgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyMzIsIDE3NywgNywgMywgMSwgMTU3LCAyLCAyMzIsIDE3NywgNywgNiwgMSwgMjI3LCA0OSwgNywgMywgMSwgMjI3LCAKLSAgICA0OSwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMjYsIDIzMCwgCi0gICAgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyNDQsIDIyLCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgMjQ0LCAyMiwgNywgNiwgMSwgMjI2LCAyMzAsIDIsIDIxOSwgMTYxLCAyMTgsIDI3LCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgMjE5LCAxNjEsIDIxOCwgMjcsIDcsIDYsIDEsIDIyNCwgMjQxLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAKLSAgICAyNDcsIDI0NiwgNywgMywgMSwgMjI0LCAyNDEsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MSwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyMjQsIAotICAgIDExMywgMjIzLCA4OCwgNywgMywgMSwgMjI0LCAxMTMsIDIyMywgODgsIDcsIDYsIDEsIDIyMywgNDEsIDIyMywgODgsIDcsIAotICAgIDMsIDEsIDIyMywgNDEsIDIyMywgODgsIDcsIDYsIDEsIDIxNSwgODAsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjE1LCAKLSAgICA4MCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyMTQsIDkwLCA3LCAzLCAxLCAyMTQsIDkwLCA3LCA2LCAxLCAyMTQsIAotICAgIDEyNiwgMjEyLCAxNTIsIDcsIDMsIDEsIDIxNCwgMTI2LCAyMTIsIDE1MiwgNywgNiwgMSwgMjE3LCAxMDUsIDIsIDkwLCA3LCAKLSAgICAzLCAxLCAyMTcsIDEwNSwgMiwgOTAsIDcsIDYsIDEsIDIxNywgMTA1LCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgCi0gICAgNywgMywgMSwgMjE3LCAxMDUsIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMTQsIDIyMiwgNywgCi0gICAgMywgMSwgMjE0LCAyMjIsIDcsIDYsIDEsIDI0NSwgMzAsIDcsIDMsIDEsIDI0NSwgMzAsIDcsIDYsIDEsIDIzNSwgMTY5LCA3LCAKLSAgICAzLCAxLCAyMzUsIDE2OSwgNywgNiwgMSwgMjQ5LCAxNDYsIDcsIDMsIDEsIDI0OSwgMTQ2LCA1OSwgMSwgMjE1LCAxMDQsIDcsIAotICAgIDMsIDEsIDI0NiwgMjQsIDcsIDMsIDEsIDIzMiwgMTQyLCA3LCAzLCAxLCAyMzAsIDE1MCwgNywgMywgMSwgMjI4LCA1NywgNywgCi0gICAgMywgMSwgMjIzLCA0MCwgNywgMSwgMywgNiwgMjIzLCA0MCwgNywgMywgMSwgMjE2LCA3MiwgNywgMywgMSwgMjE1LCAxNjcsIAotICAgIDcsIDYsIDEsIDIzNSwgMjEwLCAyNDksIDMsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDksIDMsIDcsIDYsIDEsIDIzNSwgMjEwLCAKLSAgICAyNDQsIDIzMCwgNywgMywgMSwgMjM1LCAyMTAsIDI0NCwgMjMwLCA3LCA2LCAxLCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIDYsIAotICAgIDEsIDIxNiwgNTgsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgMywgMSwgMjE2LCA1OCwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCAKLSAgICA2LCAxLCAyMTYsIDU4LCAxNTAsIDcsIDMsIDEsIDIxNiwgNTgsIDE1MCwgNywgNiwgMSwgMjM1LCAyMTAsIDE0OSwgNywgMywgCi0gICAgMSwgMjM1LCAyMTAsIDE0OSwgNywgNiwgMSwgMjM1LCAyMTAsIDE5NywgNywgMywgMSwgMjM1LCAyMTAsIDE5NywgNywgNiwgCi0gICAgMSwgMjM1LCAyMTAsIDIxOCwgOTksIDcsIDMsIDEsIDIzNSwgMjEwLCAyMTgsIDk5LCA1OSwgMSwgMTE1LCAyNDksIDIyNCwgCi0gICAgMjU0LCAxNzQsIDU5LCAxLCAyNDksIDE2NCwgNTksIDEsIDIyMCwgMTc1LCAyNDUsIDYxLCA1MiwgNywgNiwgMSwgMjIyLCAKLSAgICAxNzAsIDcsIDMsIDEsIDIyMiwgMTcwLCA3LCA2LCAxLCAyMTYsIDU4LCAyNDIsIDQxLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgMjIzLCAyMDcsIDI0MSwgMzgsIDI0LCAyNTEsIDIxOCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjQ3LCAyNDYsIDcsIDMsIDEsIAotICAgIDIzMCwgOTgsIDIsIDI0NywgMjQ2LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyNDMsIAotICAgIDE3OCwgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDIzNSwgCi0gICAgMjgsIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMjcsIDExMiwgOTAsIDcsIDMsIDEsIDIyNCwgMTEzLCAKLSAgICAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIyMywgNCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMjMsIDQsIDIsIAotICAgIDIyNywgMTEyLCA5MCwgNywgMSwgMywgNiwgMjE2LCA1OCwgMTgzLCA3LCAyNDUsIDY2LCAxLCAyMjMsIDIwMiwgMjQ0LCAKLSAgICAyMzAsIDcsIDI0NSwgNjYsIDEsIDIyMywgMjAyLCAyMjYsIDIyOSwgNywgMjQ1LCA2NiwgMSwgMjM1LCAxOTEsIDE4MywgNywgCi0gICAgMjQ1LCA2NiwgMSwgMjQwLCAxNDYsIDIzMiwgMTgyLCA3LCAyNDUsIDY2LCAxLCAyNTMsIDE5MywgMTgzLCAyMTgsIDE3NSwgCi0gICAgMjMwLCAzMiwgMSwgNjEsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCA3MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDUsIDI0NiwgMywgCi0gICAgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDY5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgNzQsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAKLSAgICA3NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDUsIDI0MSwgMjM2LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjM0LCAzNywgMjE4LCAKLSAgICAxNzUsIDIzMCwgMzIsIDEsIDIzNCwgMTEzLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQyLCAxNTAsIDIxOCwgMTc1LCAyMzAsIAotICAgIDMyLCAxLCAyNDIsIDIwMCwgMjE4LCAxNzUsIDIzMCwgMzIsIDUsIDI1MywgMjQyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgCi0gICAgMjQ5LCAxNzUsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNTAsIDIzLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjM1LCA3MSwgCi0gICAgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNSwgMTExLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjE2LCA5NSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDIxNiwgMTAwLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQ4LCA1NiwgMjE4LCAxNzUsIDIzMCwgMzIsIAotICAgIDEsIDI0OCwgNjUsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAxMDgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMTcsIDEwOSwgCi0gICAgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0NywgOTksIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDcsIDIxNSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDIyOCwgMTg1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjI1LCAxNTAsIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAxLCAyMjUsIDI1MywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI1MSwgMTI4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjUxLCAKLSAgICAxODgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzAsIDIzMSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIyMywgMTEyLCAyMTgsIAotICAgIDE3NSwgMjMwLCAzMiwgMSwgMjMyLCAyMDgsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMjMsIDczLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMSwgMjE5LCAyNDIsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDEsIDU0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIAotICAgIDYxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIDcyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIDY5LCAyMTgsIDE3NSwgCi0gICAgMjMwLCAzMiwgMzAsIDUsIDc0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMzAsIDUsIDIyNywgNDksIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAyMjUsIDE0NiwgMjMxLCAyMjEsIDIxOCwgMTc1LCAyMzAsIDMyLCAyMjUsIDE0NiwgMjMxLCAyMjAsIDIxOCwgMTc1LCAyMzAsIAotICAgIDMyLCAyMjUsIDE0NiwgMjMxLCAyMTksIDIxOCwgMTc1LCAyMzAsIDMyLCAyMjUsIDE0NiwgMjMxLCAyMTgsIDIyOCwgMTY3LCAKLSAgICAyMzUsIDIzNywgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEyMiwgCi0gICAgMjQyLCA5LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAyMjgsIDE2NywgMjM1LCAyMzcsIAotICAgIDI0MywgMjI4LCAxMjIsIDIyMCwgNDUsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEyMiwgMjQ1LCAxNDUsIDIyOCwgCi0gICAgMTY3LCAyMzUsIDIzNywgMjQzLCAyMjgsIDEzMywgMjIwLCA0NCwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyMjQsIDE2NywgNzcsIAotICAgIDIyOCwgMTY3LCAyMzUsIDIzNywgMjI1LCAxNzIsIDc3LCAyMjgsIDE2NywgMjM1LCAyMzcsIDIyMywgMjksIDc3LCAyMjgsIAotICAgIDE2NywgMjM1LCAyMzcsIDIyNCwgMTY4LCA3NywgMjI2LCAyMCwgMSwgMTgxLCAyMjYsIDIwLCAxLCAyMzQsIDEzOCwgMjI2LCAKLSAgICAyMCwgMSwgMjQzLCAxMTAsIDIyNiwgMjAsIDEsIDIyOSwgMTU5LCAyMjYsIDIwLCAxLCAyNTAsIDIxOSwgMjI2LCAyMCwgMSwgCi0gICAgMjUwLCA5MiwgMjI2LCAyMCwgMSwgMjM1LCAxMzksIDIyNiwgMjAsIDEsIDIyOCwgMjMsIDIyNiwgMjAsIDEsIDIxOCwgNTIsIAotICAgIDIyNiwgMjAsIDEsIDIxNywgMTYxLCAyMjYsIDIwLCAxLCAyNDgsIDE2NCwgMjI2LCAyMCwgMSwgMjA1LCAyMjYsIDIwLCAxLCAKLSAgICAxOTMsIDIyNiwgMjAsIDEsIDIyNiwgMjMsIDIyNiwgMjAsIDEsIDI1MiwgMTA3LCAyMjYsIDIwLCAxLCAxODgsIDIyNiwgMjAsIAotICAgIDEsIDIxNiwgMTQxLCAyMjYsIDIwLCAxLCAyMTYsIDEzMywgMjI2LCAyMCwgMSwgMjQ1LCAyNDksIDIyNiwgMjAsIDEsIDIxNCwgCi0gICAgNDksIDIyNiwgMjAsIDEsIDIxMiwgNzUsIDIyNiwgMjAsIDEsIDIxMiwgMTA5LCAyMjYsIDIwLCAxLCAzLCA2MSwgMjI2LCAKLSAgICAyMCwgMSwgMTg2LCAyMjYsIDIwLCAxLCAyMDMsIDIyNiwgMjAsIDEsIDIzMywgMTU3LCAyMjYsIDIwLCAxLCAyMjEsIDI0LCAKLSAgICAyMjYsIDIwLCAxLCAyMjIsIDIwMiwgMjI2LCAyMCwgMSwgMTU5LCAyMjYsIDIwLCAxLCA2MSwgMjI2LCAyMCwgMSwgNzIsIAotICAgIDIyNiwgMjAsIDEsIDY5LCAyMjYsIDIwLCAxLCA3NCwgMjI2LCAyMCwgMSwgNzUsIDIyNiwgMjAsIDEsIDIyNCwgMjMyLCAKLSAgICAyMjYsIDIwLCAxLCAyMTMsIDE1MywgMjI2LCAyMCwgMSwgMjQ0LCAxNjQsIDIyNiwgMjAsIDEsIDI0MywgNSwgMjI2LCAyMCwgCi0gICAgMSwgMjQ1LCAxNjUsIDIyNiwgMjAsIDIxOSwgMTgsIDEsIDIxNCwgNDksIDIyNiwgMjAsIDIxOSwgMTgsIDEsIDE4NiwgMjI2LCAKLSAgICAyMCwgMSwgMjE2LCAxMTUsIDIyNiwgMjAsIDEsIDIxNiwgMTA1LCAyMjYsIDIwLCAxLCAyNDgsIDg2LCAyMjYsIDIwLCAxLCAKLSAgICAyMjgsIDE5OCwgMjI2LCAyMCwgMSwgMjU0LCA1MCwgMTg2LCAyMjYsIDIwLCAxLCAyMTQsIDExNSwgMjIxLCAyNCwgMjI2LCAKLSAgICAyMCwgMSwgMjE0LCAxMTYsIDE1OSwgMjI2LCAyMCwgMSwgMjUzLCAxMzgsIDI0NCwgMTY0LCAyMjYsIDIwLCAyMTksIDE4LCAKLSAgICAxLCAyMDMsIDIyNiwgMjAsIDIxOCwgMjI1LCAxLCAyMDMsIDIyNiwgMjAsIDEsIDI1MCwgMTg3LCAyMjYsIDIwLCAyMjAsIAotICAgIDgxLCAyNDEsIDIyMCwgNzcsIDIyNiwgMjAsIDUxLCAyNDEsIDIyMCwgNzcsIDIyNiwgMjAsIDE1MiwgMjIxLCAxNywgMjI2LCAKLSAgICAyMCwgMTUyLCA1MSwgMjIxLCAxNywgMTY5LCA1LCAyNTMsIDI0MiwgMTY5LCA1LCAyMTQsIDEyOCwgMTY5LCAxLCA2MSwgCi0gICAgMTY5LCAxLCAyNTQsIDIzMiwgMTY5LCAxLCA3MiwgMTY5LCAxLCAyMzYsIDI4LCAxNjksIDEsIDY5LCAxNjksIDEsIDIxNSwgCi0gICAgOTIsIDE2OSwgMSwgMTYxLCAxNDksIDE2OSwgMSwgMTYxLCAyMjMsIDgyLCAxNjksIDEsIDE2MSwgMTUwLCAxNjksIDEsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE2OSwgMSwgNzQsIDE2OSwgMSwgMjQ1LCAxNjUsIDE2OSwgMSwgMjU0LCAxMDgsIDE2OSwgMSwgCi0gICAgNzUsIDE2OSwgMSwgMjI3LCA0OSwgMTY5LCAxLCAyNTMsIDEwOCwgMTY5LCAxLCAxODEsIDE2OSwgMSwgMjM0LCAxMzgsIAotICAgIDE2OSwgMSwgMjQzLCAxMTAsIDE2OSwgMSwgMjQyLCAyMjUsIDE2OSwgMSwgMjI5LCAxNTksIDE2OSwgMSwgMjUwLCAyMTksIAotICAgIDE2OSwgMSwgMjUwLCA5MiwgMTY5LCAxLCAyMzUsIDEzOSwgMTY5LCAxLCAyMzUsIDExNSwgMTY5LCAxLCAyMjgsIDIzLCAKLSAgICAxNjksIDEsIDIxNiwgMTE1LCAxNjksIDEsIDIxNiwgMTA1LCAxNjksIDEsIDI0OCwgODYsIDE2OSwgMSwgMjQ4LCA3MCwgCi0gICAgMTY5LCAxLCAyMjgsIDE5OCwgMTY5LCAxLCAyMTgsIDUyLCAxNjksIDEsIDIxNywgMTYxLCAxNjksIDEsIDI0OCwgMTY0LCAKLSAgICAxNjksIDEsIDI0NywgMjMyLCAxNjksIDEsIDIwNSwgMTY5LCAxLCAxOTMsIDE2OSwgMSwgMjI2LCAyMywgMTY5LCAxLCAyNTIsIAotICAgIDEwNywgMTY5LCAxLCAyNTEsIDE5NSwgMTY5LCAxLCAxODgsIDE2OSwgMSwgMTg2LCAxNjksIDEsIDIwMywgMTY5LCAxLCAKLSAgICAyMzMsIDE1NywgMTY5LCAxLCAyMTUsIDEsIDE2OSwgMSwgMjIxLCAyNCwgMTY5LCAxLCAyMTksIDE1NywgMTY5LCAxLCAyMjIsIAotICAgIDIwMiwgMTY5LCAxLCAxNTksIDE2OSwgMSwgMjMyLCAyMTMsIDE2OSwgMjQ5LCAxMzMsIDUsIDI0MiwgMjUsIDE2OSwgMzAsIAotICAgIDUsIDI1NCwgMjMyLCAxNjksIDMwLCA1LCA3MiwgMTY5LCAzMCwgNSwgMjM2LCAyOCwgMTY5LCAzMCwgNSwgNjksIDE2OSwgCi0gICAgMzAsIDUsIDIxNSwgOTIsIDE2OSwgMzAsIDUsIDE2MSwgMTQ5LCAxNjksIDMwLCA1LCAxNjEsIDIyMywgODIsIDE2OSwgMzAsIAotICAgIDUsIDE2MSwgMTUwLCAxNjksIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNjksIDMwLCA1LCA3NCwgMTY5LCAzMCwgNSwgMjQ1LCAKLSAgICAxNjUsIDE2OSwgMzAsIDUsIDI1NCwgMTA4LCAxNjksIDMwLCA1LCA3NSwgMTY5LCAzMCwgNSwgMjI3LCA0OSwgMTY5LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDE2OSwgNSwgMjE0LCAxMzMsIDE2OSwgMjQ4LCAxMjMsIDE2OSwgNTEsIDI0OCwgMTIzLCAxNjksIDIxLCAKLSAgICAyMTIsIDc5LCAxNjksIDIxLCAxMTYsIDE2OSwgMjEsIDEwOSwgMTY5LCAyMSwgMTY2LCAxNjksIDIxLCAxNjMsIDE2OSwgMjEsIAotICAgIDE4MCwgMTY5LCAyMSwgMTg5LCAxNjksIDIxLCAxOTgsIDE2OSwgMjEsIDE5NSwgMTY5LCAyMSwgMjAwLCAzNywgODIsIDIxLCAKLSAgICAyMTIsIDc5LCAzNywgODIsIDIxLCAxMTYsIDM3LCA4MiwgMjEsIDEwOSwgMzcsIDgyLCAyMSwgMTY2LCAzNywgODIsIDIxLCAKLSAgICAxNjMsIDM3LCA4MiwgMjEsIDE4MCwgMzcsIDgyLCAyMSwgMTg5LCAzNywgODIsIDIxLCAxOTgsIDM3LCA4MiwgMjEsIDE5NSwgCi0gICAgMzcsIDgyLCAyMSwgMjAwLCAzNywgODIsIDEsIDYxLCAzNywgODIsIDEsIDY5LCAzNywgODIsIDEsIDE4MSwgMzcsIDgyLCAxLCAKLSAgICAyMDUsIDM3LCA4MiwgMSwgMTkzLCAzNywgODIsIDEsIDIwMywgMzcsIDgyLCAxLCAyMTQsIDE1NCwgMzcsIDgyLCA1LCAyNTMsIAotICAgIDkxLCA4MiwgNSwgMjE5LCAyMDUsIDI1MCwgMTg3LCA4MiwgNSwgMjUwLCAxODgsIDIxNCwgMTMzLCA4MiwgNSwgNTEsIDI1MCwgCi0gICAgMTg4LCAyMTQsIDEzMywgODIsIDUsIDI1MCwgMTg4LCAxMDksIDgyLCA1LCAyNTAsIDE4OCwgMTY2LCA4MiwgNSwgMjUwLCAKLSAgICAxODgsIDI1MywgOTEsIDgyLCA1LCAyMjUsIDExLCA4MiwgMjQzLCA3NiwgMjQ0LCA3MiwgODIsIDI1MCwgMTcwLCA4MiwgCi0gICAgMjQxLCAyMTQsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMjEyLCA3OSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxMTYsIAotICAgIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTA5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE2NiwgMjM0LCAxOTQsIDIzMywgCi0gICAgMTQsIDIxLCAxNjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTgwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE4OSwgMjM0LCAKLSAgICAxOTQsIDIzMywgMTQsIDIxLCAxOTgsIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTk1LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIAotICAgIDIwMCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDE4MSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIzNCwgMTM4LCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMSwgMjQzLCAxMTAsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjksIDE1OSwgMjM0LCAxOTQsIDIzMywgMTQsIAotICAgIDEsIDIyMiwgMjAyLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjIxLCAyNCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxMiwgCi0gICAgMTA5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI4LCAyMywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxOCwgNTIsIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAxLCAyNDAsIDIxNCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIwNSwgMjM0LCAxOTQsIDIzMywgMTQsIAotICAgIDEsIDE5MywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNiwgMjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAxODgsIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAxLCAyNDgsIDE2NCwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDI1MiwgMTA3LCAyMzQsIDE5NCwgMjMzLCAKLSAgICAxNCwgMSwgMjAzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMTg2LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjMzLCAxNTcsIAotICAgIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTQsIDQ5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE3LCAxNjEsIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAxLCAxNTksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTUsIDEsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyNTAsIAotICAgIDIxOSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDYxLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI3LCA5OSwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDEsIDcyLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI3LCA0OSwgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCAKLSAgICAyMTUsIDE4MywgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCA3NCwgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCA2OSwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDMwLCAyNDUsIDE2NSwgMjM0LCAxOTQsIDIzMywgMTQsIDMwLCA3NSwgMjM0LCAxOTQsIDIzMywgMTQsIDE2MCwgCi0gICAgMjI1LCAxNjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxNjAsIDI1MCwgMjAwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMTYwLCAyNTAsIAotICAgIDIwMSwgMjI1LCAxNjMsIDIzNCwgMTk0LCAyMzMsIDE0LCA1LCAyNDksIDIwLCAyMzQsIDE5NCwgMjMzLCAxNCwgNSwgMjIwLCAKLSAgICAxMjUsIDIyMywgMjQzLCAxLCAxODEsIDIyMywgMjQzLCAxLCAyNDMsIDExMCwgMjIzLCAyNDMsIDEsIDIyOSwgMTU5LCAyMjMsIAotICAgIDI0MywgMSwgMjE4LCA1MiwgMjIzLCAyNDMsIDEsIDI0OCwgMTY0LCAyMjMsIDI0MywgMSwgMjA1LCAyMjMsIDI0MywgMSwgCi0gICAgMTkzLCAyMjMsIDI0MywgMSwgMjUyLCAxMDcsIDIyMywgMjQzLCAxLCAxODgsIDIyMywgMjQzLCAxLCAyNTAsIDIxOSwgMjIzLCAKLSAgICAyNDMsIDEsIDIzNSwgMTM5LCAyMjMsIDI0MywgMSwgMjI4LCAyMywgMjIzLCAyNDMsIDEsIDIyMiwgMjAyLCAyMjMsIDI0MywgCi0gICAgMSwgMjAzLCAyMjMsIDI0MywgMSwgMjMzLCAxNTcsIDIyMywgMjQzLCAxLCAxODYsIDIyMywgMjQzLCAxLCAyMTQsIDQ5LCAKLSAgICAyMjMsIDI0MywgMSwgMTU5LCAyMjMsIDI0MywgMSwgMjMxLCAxODcsIDIyMywgMjQzLCAxLCAyMjksIDE0MSwgMjIzLCAyNDMsIAotICAgIDEsIDIyOSwgMjI4LCAyMjMsIDI0MywgMSwgMjI3LCAyNTQsIDIyMywgMjQzLCAxLCA2MSwgMjIzLCAyNDMsIDMwLCA1LCA3MiwgCi0gICAgMjIzLCAyNDMsIDMwLCA1LCA2OSwgMjIzLCAyNDMsIDMwLCA1LCA3NCwgMjIzLCAyNDMsIDMwLCA1LCAyNTQsIDEwOCwgMjIzLCAKLSAgICAyNDMsIDMwLCA1LCA3NSwgMjIzLCAyNDMsIDMwLCA1LCAyNTMsIDEwOCwgMjIzLCAyNDMsIDMwLCA1LCAyNDUsIDIyLCAyMjMsIAotICAgIDI0MywgMzAsIDUsIDI0NSwgMTg5LCAyMjMsIDI0MywgMjQ5LCAxMzMsIDUsIDIyOSwgMTYxLCAyMjMsIDI0MywgMjQ5LCAKLSAgICAxMzMsIDUsIDIwNCwgMjIzLCAyNDMsIDI0OSwgMTMzLCA1LCAxNDksIDIyMywgMjQzLCAyNDksIDEzMywgNSwgMjQyLCA0MSwgCi0gICAgMjIzLCAyNDMsIDIxNCwgMTMzLCAyMjMsIDI0MywgMjIyLCA5MiwgNzcsIDIzLCA5NywgMjE3LCA1MSwgMjMsIDk3LCAyMTcsIAotICAgIDUwLCAyMywgOTcsIDIxNywgNDgsIDIzLCA5NywgMjE3LCA1MywgMjMsIDk3LCAyMjMsIDE3NCwgMjMsIDk3LCAyMjMsIDE1OCwgCi0gICAgMjMsIDk3LCAyMjMsIDE1MywgMjMsIDk3LCAyMjMsIDE1NSwgMjMsIDk3LCAyMjMsIDE3MSwgMjMsIDk3LCAyMjMsIDE2NCwgCi0gICAgMjMsIDk3LCAyMjMsIDE1NywgMjMsIDk3LCAyMjMsIDE3NiwgMjMsIDk3LCAyMjMsIDE1OSwgMjMsIDk3LCAyMjMsIDE3OCwgCi0gICAgMjMsIDk3LCAyMjMsIDE3NSwgMjMsIDk3LCAyMzEsIDI2LCAyMywgOTcsIDIzMSwgMTcsIDIzLCA5NywgMjMxLCAyMCwgMjMsIAotICAgIDk3LCAyMjUsIDIxMiwgMjMsIDk3LCAyMjUsIDIyMywgMjMsIDk3LCAyMjUsIDIyNCwgMjMsIDk3LCAyMTksIDE0MiwgMjMsIAotICAgIDk3LCAyMzYsIDQxLCAyMywgOTcsIDIzNiwgNDgsIDIzLCA5NywgMjE5LCAxNTMsIDIzLCA5NywgMjE5LCAxNDAsIDIzLCA5NywgCi0gICAgMjI2LCA2LCAyMywgOTcsIDI0MSwgMTUzLCAyMywgOTcsIDIxOSwgMTM3LCAxNDQsIDUsIDIyNiwgMTU1LCAxNDQsIDUsIAotICAgIDI1MCwgMTIxLCAxNDQsIDUsIDIzMywgOTAsIDE0NCwgNSwgMjEzLCAyMjgsIDE0NCwgMSwgNjEsIDE0NCwgMSwgMjQwLCAKLSAgICAxNDYsIDIzNCwgMTk3LCAxNDQsIDEsIDcyLCAxNDQsIDEsIDIzNiwgMjgsIDE0NCwgMSwgNjksIDE0NCwgMSwgMjI2LCAyMTQsIAotICAgIDI1MCwgOTcsIDE0NCwgMSwgMjI5LCAxNjAsIDIzMywgNTIsIDE0NCwgMSwgMjI5LCAxNjAsIDIzMywgNTMsIDIyNCwgMzQsIAotICAgIDE0NCwgMSwgNzQsIDE0NCwgMSwgMjU0LCAxMDgsIDE0NCwgMSwgNzUsIDE0NCwgMSwgMTgxLCAxNDQsIDEsIDIzNSwgMTcsIAotICAgIDIyMiwgMTQ0LCAxNDQsIDEsIDIzNSwgMTcsIDIzMCwgMTM2LCAxNDQsIDEsIDI0MywgMTEwLCAxNDQsIDEsIDI0MywgMTExLCAKLSAgICAyMzAsIDEzNiwgMTQ0LCAxLCAyMjksIDE1OSwgMTQ0LCAxLCAyNTAsIDIxOSwgMTQ0LCAxLCAyNTAsIDIyMCwgMjMwLCAxMzYsIAotICAgIDE0NCwgMSwgMjM1LCAxMzksIDE0NCwgMSwgMjI4LCAyNCwgMjMwLCAxMzYsIDE0NCwgMSwgMjM1LCAxNDAsIDIzMiwgMTIsIAotICAgIDE0NCwgMSwgMjI4LCAyMywgMTQ0LCAxLCAyMTYsIDExNSwgMTQ0LCAxLCAyMTYsIDExNiwgMjMyLCAxMiwgMTQ0LCAxLCAKLSAgICAyNDgsIDg2LCAxNDQsIDEsIDI0OCwgODcsIDIzMiwgMTIsIDE0NCwgMSwgMjMwLCA0NiwgMjMwLCAxMzYsIDE0NCwgMSwgCi0gICAgMjE4LCA1MiwgMTQ0LCAxLCAyMTgsIDUzLCAyMzAsIDEzNiwgMTQ0LCAxLCAyNDgsIDE2NCwgMTQ0LCAxLCAyNDgsIDE2NSwgCi0gICAgMjMyLCAxMiwgMTQ0LCAxLCAyMDUsIDE0NCwgMSwgMTkzLCAxNDQsIDEsIDIyNiwgMjE0LCAyMzAsIDEzNiwgMTQ0LCAxLCAKLSAgICAyNTIsIDEwNywgMTQ0LCAxLCAyNTIsIDEwOCwgMjMwLCAxMzYsIDE0NCwgMSwgMTg4LCAxNDQsIDEsIDE4NiwgMTQ0LCAxLCAKLSAgICAyMDMsIDE0NCwgMSwgMjI0LCA3NywgMjU0LCAxMTUsIDE0NCwgMSwgMjMzLCAxNTcsIDE0NCwgMSwgMjE0LCA0OSwgMTQ0LCAKLSAgICAxLCAyMjIsIDIwMywgMjMwLCAxMzYsIDE0NCwgMSwgMjIyLCAyMDMsIDIzMiwgMTIsIDE0NCwgMSwgMjIyLCAyMDIsIDE0NCwgCi0gICAgMSwgMTU5LCAxNDQsIDUsIDI1MCwgMTIyLCAyMTcsIDIwMywgMTQ0LCAzMCwgNSwgMjE3LCAyNTQsIDE0NCwgMzAsIDUsIAotICAgIDIxNiwgMjQ2LCAxNDQsIDMwLCA1LCAyMTMsIDE3OCwgMTQ0LCAzMCwgNSwgMjEzLCAxNzksIDIzMSwgMTMzLCAxNDQsIDMwLCAKLSAgICA1LCAyMTgsIDI0OCwgMTQ0LCAzMCwgNSwgMjE4LCAyNDksIDIzMSwgMTIxLCAxNDQsIDMwLCA1LCAyMTgsIDE2LCAxNDQsIAotICAgIDMwLCA1LCAyNDcsIDE0NiwgMjMwLCAxMzUsIDE0NCwgMzAsIDUsIDIyNiwgNTksIDE0NCwgMjQ5LCAxMzMsIDUsIDIzNCwgCi0gICAgMTY0LCAxNDQsIDI0OSwgMTMzLCA1LCAyMjYsIDcxLCAxNDQsIDI0OSwgMTMzLCA1LCAyNTAsIDIwNywgMTQ0LCAyMjYsIAotICAgIDE2NywgMTQ0LCA0MiwgMjIzLCAyMjEsIDE0NCwgNDYsIDIyMywgMjIxLCAxNDQsIDIyNiwgMjAzLCAyNTQsIDI2LCAxNDQsIAotICAgIDIyNiwgMjAzLCAyMzIsIDI5LCAxNDQsIDIyNiwgMjAzLCAyMzIsIDE0NiwgMTQ0LCAyMjYsIDIwMywgMjEzLCAyMjMsIDE0NCwgCi0gICAgMjI2LCAyMDMsIDIyNiwgMTY4LCAxNDQsIDIyNiwgMjAzLCAyMzIsIDIzNCwgMTQ0LCAyMjYsIDIwMywgMjMyLCAxNDAsIAotICAgIDE0NCwgMjI2LCAyMDMsIDI1NCwgMTU0LCAxNDQsIDIyNiwgMjAzLCAyNTQsIDE1NSwgMjU0LCAxNTQsIDE0NCwgMjI2LCAKLSAgICAyMDMsIDIyNSwgMTgzLCAxNDQsIDIxNiwgNTgsIDIyNiwgMjAzLCAyMjUsIDE4MywgMTQ0LCAyMjYsIDE2NCwgMTQ0LCAyMSwgCi0gICAgMjEyLCA3OSwgMTQ0LCAyMSwgMTE2LCAxNDQsIDIxLCAxMDksIDE0NCwgMjEsIDE2NiwgMTQ0LCAyMSwgMTYzLCAxNDQsIDIxLCAKLSAgICAxODAsIDE0NCwgMjEsIDE4OSwgMTQ0LCAyMSwgMTk4LCAxNDQsIDIxLCAxOTUsIDE0NCwgMjEsIDIwMCwgMTQ0LCAyMjYsIAotICAgIDIwMywgMjE3LCAyMiwgMjE2LCA3MCwgMTQ0LCAyMjYsIDIwMywgMjM1LCAxNjUsIDE2MiwgMSwgNjEsIDE2MiwgMSwgNzIsIAotICAgIDE2MiwgMSwgNjksIDE2MiwgMSwgNzQsIDE2MiwgMSwgMjU0LCAxMDgsIDE2MiwgMSwgNzUsIDE2MiwgMSwgMTgxLCAxNjIsIAotICAgIDEsIDIzNCwgMTM4LCAxNjIsIDEsIDI0MywgMTEwLCAxNjIsIDEsIDI0MiwgMjI1LCAxNjIsIDEsIDIyOSwgNzUsIDE2MiwgMSwgCi0gICAgMjI5LCAxNTksIDE2MiwgMSwgMjUwLCA5MiwgMTYyLCAxLCAyNTAsIDQ5LCAxNjIsIDEsIDIzNSwgMTM5LCAxNjIsIDEsIAotICAgIDIzNSwgMTE1LCAxNjIsIDEsIDIyOSwgNjYsIDE2MiwgMSwgMjI5LCA2OCwgMTYyLCAxLCAyMjksIDY3LCAxNjIsIDEsIDIxOCwgCi0gICAgNTIsIDE2MiwgMSwgMjE3LCAxNjEsIDE2MiwgMSwgMjQ4LCAxNjQsIDE2MiwgMSwgMjQ3LCAyMzIsIDE2MiwgMSwgMjI4LCAKLSAgICA2MiwgMTYyLCAxLCAyMDUsIDE2MiwgMSwgMjQ4LCA4NiwgMTYyLCAxLCAxOTMsIDE2MiwgMSwgMjI1LCAxMDAsIDE2MiwgMSwgCi0gICAgMjI2LCAyMywgMTYyLCAxLCAyNTIsIDEwNywgMTYyLCAxLCAyNTEsIDE5NSwgMTYyLCAxLCAyMzAsIDE2NSwgMTYyLCAxLCAKLSAgICAxODgsIDE2MiwgMSwgMjUyLCAzMSwgMTYyLCAxLCAxODYsIDE2MiwgMSwgMjAzLCAxNjIsIDEsIDIzMywgMTU3LCAxNjIsIDEsIAotICAgIDIxNSwgMSwgMTYyLCAxLCAyMTksIDE1NywgMTYyLCAxLCAyMjIsIDIwMiwgMTYyLCAxLCAxNTksIDE2MiwgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAxNjIsIDMwLCA1LCA3MiwgMTYyLCAzMCwgNSwgMjM2LCAyOCwgMTYyLCAzMCwgNSwgMjQ1LCAxNTIsIDE2MiwgMzAsIAotICAgIDUsIDY5LCAxNjIsIDMwLCA1LCAyMjcsIDk5LCAxNjIsIDMwLCA1LCA3NSwgMTYyLCAzMCwgNSwgMjU0LCAxMDgsIDE2MiwgCi0gICAgMzAsIDUsIDI1MywgMTA4LCAxNjIsIDMwLCA1LCAyMTUsIDE4MywgMTYyLCAyNDksIDEzMywgNSwgMTg2LCAxNjIsIDI0OSwgCi0gICAgMTMzLCA1LCAyMDMsIDE2MiwgMjQ5LCAxMzMsIDUsIDIzMywgMTU3LCAxNjIsIDI0OSwgMTMzLCA1LCAyMTQsIDQ5LCAxNjIsIAotICAgIDEsIDQwLCAyMzUsIDI3LCAxNjIsIDEsIDQwLCAyNDMsIDE3NywgMTYyLCAxLCA0MCwgMjI5LCAxNjEsIDE2MiwgMjQ5LCAKLSAgICAxMzMsIDUsIDQwLCAyMjksIDE2MSwgMTYyLCAxLCA0MCwgMjUwLCA5MywgMTYyLCAxLCA0MCwgMjE4LCA5OSwgMTYyLCAxLCAKLSAgICA0MCwgMjA0LCAxNjIsIDEsIDQwLCAyMjYsIDIyOSwgMTYyLCAxLCA0MCwgMjEzLCAxMDUsIDE2MiwgMSwgNDAsIDE0OSwgCi0gICAgMTYyLCAxLCA0MCwgMTUwLCAxNjIsIDEsIDQwLCAyMTksIDE1OCwgMTYyLCAyNDksIDEzMywgNSwgNDAsIDE4MywgMTYyLCAKLSAgICAyNDksIDEzMywgNSwgNDAsIDI0MiwgNDEsIDE2MiwgMjEsIDIxMiwgNzksIDE2MiwgMjEsIDExNiwgMTYyLCAyMSwgMTA5LCAKLSAgICAxNjIsIDIxLCAxNjYsIDE2MiwgMjEsIDE2MywgMTYyLCAyMSwgMTgwLCAxNjIsIDIxLCAxODksIDE2MiwgMjEsIDE5OCwgCi0gICAgMTYyLCAyMSwgMTk1LCAxNjIsIDIxLCAyMDAsIDE2MiwgMjI1LCAyNywgMjE5LCAxODMsIDE2MiwgMjI1LCAyNywgMjQ4LCAKLSAgICAxMjMsIDE2MiwgMjI1LCAyNywgNTEsIDI0OCwgMTIzLCAxNjIsIDIyNSwgMjcsIDIxNiwgMTY5LCAyNDgsIDEyMywgNjQsIDEsIAotICAgIDIzNCwgMTMyLCAyNDMsIDExMCwgNjQsIDEsIDIzNCwgMTMyLCAyNTAsIDIxOSwgNjQsIDEsIDIzNCwgMTMyLCAyNTAsIDkyLCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDIzNSwgMTM5LCA2NCwgMSwgMjM0LCAxMzIsIDIzNSwgMTE1LCA2NCwgMSwgMjM0LCAxMzIsIAotICAgIDIyOCwgMjMsIDY0LCAxLCAyMzQsIDEzMiwgMjE2LCAxMTUsIDY0LCAxLCAyMzQsIDEzMiwgMjE2LCAxMDUsIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjQ4LCA4NiwgNjQsIDEsIDIzNCwgMTMyLCAyNDgsIDcwLCA2NCwgMSwgMjM0LCAxMzIsIDI0NywgMjMyLCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDIwNSwgNjQsIDEsIDIzNCwgMTMyLCAyMjIsIDIwMiwgNjQsIDEsIDIzNCwgMTMyLCAxNTksIAotICAgIDY0LCAxLCAyMzQsIDEzMiwgMjQxLCAxNzQsIDY0LCAxLCAyMzQsIDEzMiwgMjQ0LCAxNjQsIDY0LCA1OSwgMSwgMjM0LCAKLSAgICAxMzIsIDIyNCwgMiwgNjQsIDEsIDIzNCwgMTMyLCAyMTMsIDE1MywgNjQsIDEsIDIzNCwgMTMyLCAyMTIsIDEwOSwgNjQsIDEsIAotICAgIDIzNCwgMTMyLCAyMDMsIDY0LCAyMzIsIDE5OCwgMjM0LCAxMzIsIDIyNywgMTE3LCA2NCwgMjMyLCAxOTgsIDIzNCwgMTMyLCAKLSAgICAyMjQsIDE4OCwgNjQsIDIzMiwgMTk4LCAyMzQsIDEzMiwgMjQxLCAxMDcsIDY0LCAxNiwgMjU0LCA5OCwgMjQ0LCAyNTMsIAotICAgIDY0LCAxNiwgMjU0LCA5OCwgMTE2LCA2NCwgMTYsIDI1NCwgOTgsIDEwOSwgNjQsIDEsIDI1NCwgOTgsIDIwMywgNjQsIDUsIAotICAgIDIyNiwgMTUxLCAyMzQsIDIxOCwgMjE2LCAyNDEsIDM4LCAxOTAsIDEsIDExNSwgMjM0LCAzNywgMzgsIDE5MCwgMSwgMTI0LCAKLSAgICAyMzQsIDM3LCAzOCwgMTkwLCAxLCAxMTUsIDIzNCwgMTEzLCAzOCwgMTkwLCAxLCAxMjQsIDIzNCwgMTEzLCAzOCwgMTkwLCAKLSAgICAxLCAxMTUsIDIzNCwgMTIwLCAzOCwgMTkwLCAxLCAxMjQsIDIzNCwgMTIwLCAzOCwgMTkwLCAxLCAxMTUsIDI0MiwgMTUwLCAKLSAgICAzOCwgMTkwLCAxLCAxMjQsIDI0MiwgMTUwLCAzOCwgMTkwLCAxLCAxMTUsIDIyOSwgOTAsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjI5LCA5MCwgMzgsIDE5MCwgMSwgMTE1LCAyNDksIDE3NSwgMzgsIDE5MCwgMSwgMTI0LCAyNDksIDE3NSwgMzgsIDE5MCwgCi0gICAgMSwgMTE1LCAyNTAsIDIzLCAzOCwgMTkwLCAxLCAxMjQsIDI1MCwgMjMsIDM4LCAxOTAsIDEsIDExNSwgMjE5LCAyNDIsIDM4LCAKLSAgICAxOTAsIDEsIDEyNCwgMjE5LCAyNDIsIDM4LCAxOTAsIDEsIDExNSwgMjI3LCAyNTMsIDM4LCAxOTAsIDEsIDEyNCwgMjI3LCAKLSAgICAyNTMsIDM4LCAxOTAsIDEsIDExNSwgMjQ3LCA5OSwgMzgsIDE5MCwgMSwgMTI0LCAyNDcsIDk5LCAzOCwgMTkwLCAxLCAxMTUsIAotICAgIDEwOCwgMzgsIDE5MCwgMSwgMTI0LCAxMDgsIDM4LCAxOTAsIDEsIDExNSwgMjE3LCAxMDksIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjE3LCAxMDksIDM4LCAxOTAsIDEsIDExNSwgMjI4LCAxODUsIDM4LCAxOTAsIDEsIDEyNCwgMjI4LCAxODUsIDM4LCAxOTAsIAotICAgIDEsIDExNSwgMjUxLCAxMjgsIDM4LCAxOTAsIDEsIDEyNCwgMjUxLCAxMjgsIDM4LCAxOTAsIDEsIDExNSwgMjI1LCAxNTAsIAotICAgIDM4LCAxOTAsIDEsIDEyNCwgMjI1LCAxNTAsIDM4LCAxOTAsIDEsIDExNSwgMjI1LCAyNTMsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjI1LCAyNTMsIDM4LCAxOTAsIDEsIDExNSwgMjQ0LCAxMiwgMzgsIDE5MCwgMSwgMTI0LCAyNDQsIDEyLCAzOCwgMTkwLCAxLCAKLSAgICAxMTUsIDIzMCwgMjMxLCAzOCwgMTkwLCAxLCAxMjQsIDIzMCwgMjMxLCAzOCwgMTkwLCAxLCAxMTUsIDIxMiwgMjM1LCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDIxMiwgMjM1LCAzOCwgMTkwLCAxLCAxMTUsIDIyMywgMTEyLCAzOCwgMTkwLCAxLCAxMjQsIDIyMywgCi0gICAgMTEyLCAzOCwgMTkwLCAxLCAxMTUsIDIzMiwgMjA4LCAzOCwgMTkwLCAxLCAxMjQsIDIzMiwgMjA4LCAzOCwgMTkwLCAxLCAKLSAgICAxMTUsIDIxNCwgMTE5LCAzOCwgMTkwLCAxLCAxMjQsIDIxNCwgMTE5LCAzOCwgMTkwLCAxLCAxMTUsIDI0MSwgNTQsIDM4LCAKLSAgICAxOTAsIDEsIDEyNCwgMjQxLCA1NCwgMzgsIDE5MCwgMSwgMTE1LCA3NSwgMzgsIDE5MCwgMSwgMTI0LCA3NSwgMzgsIDE5MCwgCi0gICAgMjMyLCA5LCAyMzQsIDIzNSwgMzgsIDE5MCwgMzAsIDI1NCwgMjMyLCAzOCwgMTkwLCAzMCwgNzIsIDM4LCAxOTAsIDMwLCAKLSAgICAyMTUsIDE4MywgMzgsIDE5MCwgMzAsIDY5LCAzOCwgMTkwLCAzMCwgNzQsIDM4LCAxOTAsIDMwLCA3NSwgMzgsIDE5MCwgCi0gICAgMjMyLCA5LCAyMzQsIDExNSwgMzgsIDE5MCwgMzAsIDI0MCwgMTExLCAzOCwgMTkwLCAzMCwgMjE1LCAxODIsIDM4LCAxOTAsIAotICAgIDMwLCAyMTUsIDE5NiwgMzgsIDE5MCwgMzAsIDI1MywgMTA2LCAzOCwgMTkwLCAzMCwgMjUzLCA4MywgMzgsIDE5MCwgMzAsIAotICAgIDI1NCwgMzIsIDM4LCAxOTAsIDMwLCAyNTQsIDQ1LCAzOCwgMTkwLCAxNjAsIDIzMiwgOSwgMjQ1LCAxMzcsIDM4LCAxOTAsIAotICAgIDE2MCwgMjMyLCA5LCAyMjgsIDYxLCAzOCwgMTkwLCAxNjAsIDIzMiwgOSwgMjE3LCAxMDksIDM4LCAxOTAsIDE2MCwgMjMyLCAKLSAgICA5LCAyMTksIDIyOCwgMzgsIDE5MCwgMTYsIDIzNCwgMjIsIDM4LCAxOTAsIDE2LCAyMjgsIDYxLCAzOCwgMTkwLCAxNiwgCi0gICAgMjIyLCAxNjgsIDM4LCAxOTAsIDE2LCAyNDEsIDU1LCAyNDEsIDUwLCAzOCwgMTkwLCAxNiwgMjM0LCAzMSwgMjM0LCAzMCwgCi0gICAgMjgsIDQsIDIxNiwgOTgsIDI4LCA0LCAyMTYsIDEwMSwgMjgsIDQsIDIxNiwgMTA0LCAyOCwgNCwgMjE2LCAxMDIsIDI4LCA0LCAKLSAgICAyMTYsIDEwMywgMjgsIDQsIDIxNiwgMTAwLCAyOCwgNCwgMjQ4LCA2NCwgMjgsIDQsIDI0OCwgNjYsIDI4LCA0LCAyNDgsIAotICAgIDY5LCAyOCwgNCwgMjQ4LCA2NywgMjgsIDQsIDI0OCwgNjgsIDI4LCA0LCAyNDgsIDY1LCAyOCwgNCwgMjQ1LCAyMzksIDI4LCAKLSAgICA0LCAyNDUsIDI0MiwgMjgsIDQsIDI0NSwgMjQ4LCAyOCwgNCwgMjQ1LCAyNDYsIDI4LCA0LCAyNDUsIDI0NywgMjgsIDQsIAotICAgIDI0NSwgMjQwLCAyOCwgNCwgMjUwLCAxMzgsIDI4LCA0LCAyNTAsIDEzMiwgMjgsIDQsIDI1MCwgMTM0LCAyOCwgNCwgMjUwLCAKLSAgICAxMzcsIDI4LCA0LCAyNTAsIDEzNSwgMjgsIDQsIDI1MCwgMTM2LCAyOCwgNCwgMjUwLCAxMzMsIDI4LCA0LCAyNTIsIDMxLCAKLSAgICAyOCwgNCwgMjUyLCAxMCwgMjgsIDQsIDI1MiwgMjIsIDI4LCA0LCAyNTIsIDMwLCAyOCwgNCwgMjUyLCAyNSwgMjgsIDQsIAotICAgIDI1MiwgMjYsIDI4LCA0LCAyNTIsIDE0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNCwgMjgsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMSwgMjIyLCAxNjgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjMzLCAxMzMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgCi0gICAgMjMwLCAyNDEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMTkzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIwNSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyNTAsIDM5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNywgNDQsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMSwgMjM0LCAxMDksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI5LCA4MCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAKLSAgICAyMTcsIDEwMywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTQsIDQ0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxMywgNTgsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQwLCAyMDYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE1LCAxNjAsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgNzIsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI2LCAxOCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAKLSAgICAxLCAyNTMsIDExOCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDIsIDE0MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzUsIAotICAgIDExNCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMjQsIDU3LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI1MiwgMTA3LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNSwgMTAzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0NywgMTcxLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDI0MiwgMTk3LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0NywgMjEzLCAyMzEsIDE0MCwgCi0gICAgMjMxLCAxOTQsIDEsIDI1MSwgMTk0LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzNCwgMjksIDIzMiwgMTgxLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDIzMywgMTM0LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzAsIDI0MiwgCi0gICAgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI2LCAyMTQsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIAotICAgIDEsIDIzMCwgNDYsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNywgNDUsIDIzMiwgMTgxLCAyMzEsIDE0MCwgCi0gICAgMjMxLCAxOTQsIDEsIDIyOSwgODEsIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0MCwgMTQ2LCAyMzIsIAotICAgIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjI3LCA2MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjM1LCAKLSAgICAyNDksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDI1NCwgMzEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIxMywgCi0gICAgMjksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIxOSwgMjE5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTUsIAotICAgIDE1NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjUwLCA2MCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjI4LCAKLSAgICA0NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAyNTAsIDYxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIzMiwgMTQzLCAyMzUsIDE0OCwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAyNTMsIDIxNiwgMjM1LCAxNDgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDIxMiwgNzksIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDExNiwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTA5LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDIxLCAxNjYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE2MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTgwLCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxODksIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE5OCwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAyMSwgMTk1LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAyMDAsIDIzLCAxMzUsIDIyNywgMTk3LCAyMywgMTM1LCAKLSAgICAyMjcsIDIwMiwgMjMsIDEzNSwgMjEyLCAyMzQsIDIzLCAxMzUsIDIxMiwgMjMzLCAyMywgMTM1LCAyMTIsIDIzMiwgMjMsIAotICAgIDEzNSwgMjE1LCAyNDYsIDIzLCAxMzUsIDIxNSwgMjQ5LCAyMywgMTM1LCAyMTIsIDIwMSwgMjMsIDEzNSwgMjEyLCAxOTcsIAotICAgIDIzLCAxMzUsIDI0NSwgMjEsIDIzLCAxMzUsIDI0NSwgMTksIDIzLCAxMzUsIDI0NSwgMjAsIDIzLCAxMzUsIDI0NSwgMTcsIAotICAgIDIzLCAxMzUsIDI0MCwgMTM2LCAyMywgMTM1LCAyNDAsIDEzNSwgMjMsIDEzNSwgMjQwLCAxMzMsIDIzLCAxMzUsIDI0MCwgCi0gICAgMTM0LCAyMywgMTM1LCAyNDAsIDEzOSwgMjMsIDEzNSwgMjQwLCAxMzIsIDIzLCAxMzUsIDI0MCwgMTMxLCAyMywgMTM1LCAKLSAgICAyNDAsIDE0MSwgMjMsIDEzNSwgMjUzLCAyMDMsIDIzLCAxMzUsIDI1MywgMjAyLCAyMywgODksIDIyOSwgNTAsIDIzLCA4OSwgCi0gICAgMjI5LCA1NiwgMjMsIDg5LCAyMTksIDEzOSwgMjMsIDg5LCAyMTksIDEzOCwgMjMsIDg5LCAyMTcsIDUwLCAyMywgODksIAotICAgIDIxNywgNDgsIDIzLCA4OSwgMjE3LCA0NywgMjMsIDg5LCAyMTcsIDUzLCAyMywgODksIDIxNywgNTQsIDIzLCA4OSwgMjE3LCAKLSAgICA0NiwgMjMsIDg5LCAyMjMsIDE1OCwgMjMsIDg5LCAyMjMsIDE3MywgMjMsIDg5LCAyMTksIDE0NSwgMjMsIDg5LCAyMjMsIAotICAgIDE3MCwgMjMsIDg5LCAyMjMsIDE2MCwgMjMsIDg5LCAyMjMsIDE2MiwgMjMsIDg5LCAyMjMsIDE0OSwgMjMsIDg5LCAyMjMsIAotICAgIDE1MCwgMjMsIDg5LCAyMzQsIDIyMywgMjMsIDg5LCAyMzEsIDI1LCAyMywgODksIDIzMSwgMTksIDIzLCA4OSwgMjE5LCAKLSAgICAxNDksIDIzLCA4OSwgMjMxLCAyMiwgMjMsIDg5LCAyMzEsIDI4LCAyMywgODksIDIyNSwgMjA4LCAyMywgODksIDIyNSwgCi0gICAgMjE3LCAyMywgODksIDIyNSwgMjIxLCAyMywgODksIDIxOSwgMTQ3LCAyMywgODksIDIyNSwgMjExLCAyMywgODksIDIyNSwgCi0gICAgMjI1LCAyMywgODksIDIyNSwgMjI2LCAyMywgODksIDIyMCwgNjgsIDIzLCA4OSwgMjIwLCA3MSwgMjMsIDg5LCAyMTksIAotICAgIDE0MywgMjMsIDg5LCAyMTksIDE0MSwgMjMsIDg5LCAyMjAsIDY2LCAyMywgODksIDIyMCwgNzQsIDIzLCA4OSwgMjIwLCA3NSwgCi0gICAgMjMsIDg5LCAyMjAsIDYwLCAyMywgODksIDIyMCwgNzMsIDIzLCA4OSwgMjI2LCAxNTgsIDIzLCA4OSwgMjI2LCAxNTksIDIzLCAKLSAgICA4OSwgMjEzLCAxNSwgMjMsIDg5LCAyMTMsIDE2LCAyMywgODksIDI0OSwgMjM3LCAyMywgODksIDI0OSwgMjM2LCAyMywgODksIAotICAgIDIxOSwgMTU0LCAyMywgODksIDIyNiwgNCwgMjMsIDg5LCAyMjYsIDMsIDksIDEzLCAyMzgsIDE3LCA5LCAxMywgMjM4LCAxNiwgCi0gICAgOSwgMTMsIDIzOCwgMTUsIDksIDEzLCAyMzgsIDE0LCA5LCAxMywgMjM4LCAxMywgOSwgMTMsIDIzOCwgMTIsIDksIDEzLCAKLSAgICAyMzgsIDExLCA5LCAxMywgMjM4LCAxMCwgOSwgMTMsIDIzOCwgOSwgOSwgMTMsIDIzOCwgOCwgOSwgMTMsIDIzOCwgNywgOSwgCi0gICAgMTMsIDIzOCwgNiwgOSwgMTMsIDIzOCwgNSwgOSwgMTMsIDIzOCwgNCwgOSwgMTMsIDIzOCwgMywgOSwgMTMsIDIzOCwgMiwgCi0gICAgOSwgMTMsIDIzOCwgMSwgOSwgMTMsIDIzOCwgMCwgOSwgMTMsIDIzNywgMjU1LCA5LCAxMywgMjM3LCAyNTQsIDksIDEzLCAKLSAgICAyMzcsIDI1MywgOSwgMTMsIDIzNywgMjUyLCA5LCAxMywgMjM3LCAyNTEsIDksIDEzLCAyMzcsIDI1MCwgOSwgMTMsIDIzNywgCi0gICAgMjQ5LCA5LCAxMywgMjM3LCAyNDgsIDksIDEzLCAyMzcsIDI0NywgOSwgMTMsIDIzNywgMjQ2LCA5LCAxMywgMjM3LCAyNDUsIAotICAgIDksIDEzLCAyMzcsIDI0NCwgOSwgMTMsIDIzNywgMjQzLCA5LCAxMywgMjM3LCAyNDIsIDksIDEzLCAyMzcsIDI0MSwgOSwgCi0gICAgMTMsIDIzNywgMjQwLCA5LCAxMywgMjM3LCAyMzksIDksIDEzLCAyMzcsIDIzOCwgOSwgMTMsIDIzNywgMjM3LCA5LCAxMywgCi0gICAgMjM3LCAyMzYsIDksIDEzLCAyMzcsIDIzNSwgOSwgMTMsIDIzNywgMjM0LCA5LCAxMywgMjM3LCAyMzMsIDksIDEzLCAyMzcsIAotICAgIDIzMiwgOSwgMTMsIDIzNywgMjMxLCA5LCAxMywgMjM3LCAyMzAsIDksIDEzLCAyMzcsIDIyOSwgOSwgMTMsIDIzNywgMjI4LCAKLSAgICA5LCAxMywgMjM3LCAyMjcsIDksIDEzLCAyMzcsIDIyNiwgOSwgMTMsIDIzNywgMjI1LCA5LCAxMywgMjM3LCAyMjQsIDksIAotICAgIDEzLCAyMzcsIDIyMywgOSwgMTMsIDIzNywgMjIyLCA5LCAxMywgMjM3LCAyMjEsIDksIDEzLCAyMzcsIDIyMCwgOSwgMTMsIAotICAgIDIzNywgMjE5LCA5LCAxMywgMjM3LCAyMTgsIDksIDEzLCAyMzcsIDIxNywgOSwgMTMsIDIzNywgMjE2LCA5LCAxMywgMjM3LCAKLSAgICAyMTUsIDksIDEzLCAyMzcsIDIxNCwgOSwgMTMsIDIzNywgMjEzLCA5LCAxMywgMjM3LCAyMTIsIDksIDEzLCAyMzcsIDIxMSwgCi0gICAgOSwgMTMsIDIzNywgMjEwLCA5LCAxMywgMjM3LCAyMDksIDksIDEzLCAyMzcsIDIwOCwgOSwgMTMsIDIzNywgMjA3LCA5LCAKLSAgICAxMywgMjM3LCAyMDYsIDksIDEzLCAyMzcsIDIwNSwgOSwgMTMsIDIzNywgMjA0LCA5LCAxMywgMjM3LCAyMDMsIDksIDEzLCAKLSAgICAyMzcsIDIwMiwgOSwgMTMsIDIzNywgMjAxLCA5LCAxMywgMjM3LCAyMDAsIDksIDEzLCAyMzcsIDE5OSwgOSwgMTMsIDIzNywgCi0gICAgMTk4LCA5LCAxMywgMjM3LCAxOTcsIDksIDEzLCAyMzcsIDE5NiwgOSwgMTMsIDIzNywgMTk1LCA5LCAxMywgMjM3LCAxOTQsIAotICAgIDksIDEzLCAyMzcsIDE5MywgOSwgMTMsIDIzNywgMTkyLCA5LCAxMywgMjM3LCAxOTEsIDksIDEzLCAyMzcsIDE5MCwgOSwgCi0gICAgMTMsIDIzNywgMTg5LCA5LCAxMywgMjM3LCAxODgsIDksIDEzLCAyMzcsIDE4NywgOSwgMTMsIDIzNywgMTg2LCA5LCAxMywgCi0gICAgMjM3LCAxODUsIDksIDEzLCAyMzcsIDE4NCwgOSwgMTMsIDIzNywgMTgzLCA5LCAxMywgMjM3LCAxODIsIDksIDEzLCAyMzcsIAotICAgIDE4MSwgOSwgMTMsIDIzNywgMTgwLCA5LCAxMywgMjM3LCAxNzksIDksIDEzLCAyMzcsIDE3OCwgOSwgMTMsIDIzNywgMTc3LCAKLSAgICA5LCAxMywgMjM3LCAxNzYsIDksIDEzLCAyMzcsIDE3NSwgOSwgMTMsIDIzNywgMTc0LCA5LCAxMywgMjM3LCAxNzMsIDksIAotICAgIDEzLCAyMzcsIDE3MiwgOSwgMTMsIDIzNywgMTcxLCA5LCAxMywgMjM3LCAxNzAsIDksIDEzLCAyMzcsIDE2OSwgOSwgMTMsIAotICAgIDIzNywgMTY4LCA5LCAxMywgMjM3LCAxNjcsIDksIDEzLCAyMzcsIDE2NiwgOSwgMTMsIDIzNywgMTY1LCA5LCAxMywgMjM3LCAKLSAgICAxNjQsIDksIDEzLCAyMzcsIDE2MywgOSwgMTMsIDIzNywgMTYyLCA5LCAxMywgMjM3LCAxNjEsIDksIDEzLCAyMzcsIDE2MCwgCi0gICAgOSwgMTMsIDIzNywgMTU5LCA5LCAxMywgMjM3LCAxNTgsIDksIDEzLCAyMzcsIDE1NywgOSwgMTMsIDIzNywgMTU2LCA5LCAKLSAgICAxMywgMjM3LCAxNTUsIDksIDEzLCAyMzcsIDE1NCwgOSwgMTMsIDIzNywgMTUzLCA5LCAxMywgMjM3LCAxNTIsIDksIDEzLCAKLSAgICAyMzcsIDE1MSwgOSwgMTMsIDIzNywgMTUwLCA5LCAxMywgMjM3LCAxNDksIDksIDEzLCAyMzcsIDE0OCwgOSwgMTMsIDIzNywgCi0gICAgMTQ3LCA5LCAxMywgMjM3LCAxNDYsIDksIDEzLCAyMzcsIDE0NSwgOSwgMTMsIDIzNywgMTQ0LCA5LCAxMywgMjM3LCAxNDMsIAotICAgIDksIDEzLCAyMzcsIDE0MiwgOSwgMTMsIDIzNywgMTQxLCA5LCAxMywgMjM3LCAxNDAsIDksIDEzLCAyMzcsIDEzOSwgOSwgCi0gICAgMTMsIDIzNywgMTM4LCA5LCAxMywgMjM3LCAxMzcsIDksIDEzLCAyMzcsIDEzNiwgOSwgMTMsIDIzNywgMTM1LCA5LCAxMywgCi0gICAgMjM3LCAxMzQsIDksIDEzLCAyMzcsIDEzMywgOSwgMTMsIDIzNywgMTMyLCA5LCAxMywgMjM3LCAxMzEsIDksIDEzLCAyMzcsIAotICAgIDEzMCwgOSwgMTMsIDIzNywgMTI5LCA5LCAxMywgMjM3LCAxMjgsIDksIDEzLCAyMzcsIDEyNywgOSwgMTMsIDIzNywgMTI2LCAKLSAgICA5LCAxMywgMjM3LCAxMjUsIDksIDEzLCAyMzcsIDEyNCwgOSwgMTMsIDIzNywgMTIzLCA5LCAxMywgMjM3LCAxMjIsIDksIAotICAgIDEzLCAyMzcsIDEyMSwgOSwgMTMsIDIzNywgMTIwLCA5LCAxMywgMjM3LCAxMTksIDksIDEzLCAyMzcsIDExOCwgOSwgMTMsIAotICAgIDIzNywgMTE3LCA5LCAxMywgMjM3LCAxMTYsIDksIDEzLCAyMzcsIDExNSwgOSwgMTMsIDIzNywgMTE0LCA5LCAxMywgMjM3LCAKLSAgICAxMTMsIDksIDEzLCAyMzcsIDExMiwgOSwgMTMsIDIzNywgMTExLCA5LCAxMywgMjM3LCAxMTAsIDksIDEzLCAyMzcsIDEwOSwgCi0gICAgOSwgMTMsIDIzNywgMTA4LCA5LCAxMywgMjM3LCAxMDcsIDksIDEzLCAyMzcsIDEwNiwgOSwgMTMsIDIzNywgMTA1LCA5LCAKLSAgICAxMywgMjM3LCAxMDQsIDksIDEzLCAyMzcsIDEwMywgOSwgMTMsIDIzNywgMTAyLCA5LCAxMywgMjM3LCAxMDEsIDksIDEzLCAKLSAgICAyMzcsIDEwMCwgOSwgMTMsIDIzNywgOTksIDksIDEzLCAyMzcsIDk4LCA5LCAxMywgMjM3LCA5NywgOSwgMTMsIDIzNywgOTYsIAotICAgIDksIDEzLCAyMzcsIDk1LCA5LCAxMywgMjM3LCA5NCwgOSwgMTMsIDIzNywgOTMsIDksIDEzLCAyMzcsIDkyLCA5LCAxMywgCi0gICAgMjM3LCA5MSwgOSwgMTMsIDIzNywgOTAsIDksIDEzLCAyMzcsIDg5LCA5LCAxMywgMjM3LCA4OCwgOSwgMTMsIDIzNywgODcsIAotICAgIDksIDEzLCAyMzcsIDg2LCA5LCAxMywgMjM3LCA4NSwgOSwgMTMsIDIzNywgODQsIDksIDEzLCAyMzcsIDgzLCA5LCAxMywgCi0gICAgMjM3LCA4MiwgOSwgMTMsIDIzNywgODEsIDksIDEzLCAyMzcsIDgwLCA5LCAxMywgMjM3LCA3OSwgOSwgMTMsIDIzNywgNzgsIAotICAgIDksIDEzLCAyMzcsIDc3LCA5LCAxMywgMjM3LCA3NiwgOSwgMTMsIDIzNywgNzUsIDksIDEzLCAyMzcsIDc0LCA5LCAxMywgCi0gICAgMjM3LCA3MywgOSwgMTMsIDIzNywgNzIsIDksIDEzLCAyMzcsIDcxLCA5LCAxMywgMjM3LCA3MCwgOSwgMTMsIDIzNywgNjksIAotICAgIDksIDEzLCAyMzcsIDY4LCA5LCAxMywgMjM3LCA2NywgOSwgMTMsIDIzNywgNjYsIDksIDEzLCAyMzcsIDY1LCA5LCAxMywgCi0gICAgMjM3LCA2NCwgOSwgMTMsIDIzNywgNjMsIDksIDEzLCAyMzcsIDYyLCA5LCAxMywgMjM3LCA2MSwgOSwgMTMsIDIzNywgNjAsIAotICAgIDksIDEzLCAyMzcsIDU5LCA5LCAxMywgMjM3LCA1OCwgOSwgMTMsIDIzNywgNTcsIDksIDEzLCAyMzcsIDU2LCA5LCAxMywgCi0gICAgMjM3LCA1NSwgOSwgMTMsIDIzNywgNTQsIDksIDEzLCAyMzcsIDUzLCA5LCAxMywgMjM3LCA1MiwgOSwgMTMsIDIzNywgNTEsIAotICAgIDksIDEzLCAyMzcsIDUwLCA5LCAxMywgMjM3LCA0OSwgOSwgMTMsIDIzNywgNDgsIDksIDEzLCAyMzcsIDQ3LCA5LCAxMywgCi0gICAgMjM3LCA0NiwgOSwgMTMsIDIzNywgNDUsIDksIDEzLCAyMzcsIDQ0LCA5LCAxMywgMjM3LCA0MywgOSwgMTMsIDIzNywgNDIsIAotICAgIDksIDEzLCAyMzcsIDQxLCA5LCAxMywgMjM3LCA0MCwgOSwgMTMsIDIzNywgMzksIDksIDEzLCAyMzcsIDM4LCA5LCAxMywgCi0gICAgMjM3LCAzNywgOSwgMTMsIDIzNywgMzYsIDksIDEzLCAyMzcsIDM1LCA5LCAxMywgMjM3LCAzNCwgOSwgMTMsIDIzNywgMzMsIAotICAgIDksIDEzLCAyMzcsIDMyLCA5LCAxMywgMjM3LCAzMSwgOSwgMTMsIDIzNywgMzAsIDksIDEzLCAyMzcsIDI5LCA5LCAxMywgCi0gICAgMjM3LCAyOCwgOSwgMTMsIDIzNywgMjcsIDksIDEzLCAyMzcsIDI2LCA5LCAxMywgMjM3LCAyNSwgOSwgMTMsIDIzNywgMjQsIAotICAgIDksIDEzLCAyMzcsIDIzLCA5LCAxMywgMjM3LCAyMiwgOSwgMTMsIDIzNywgMjEsIDksIDEzLCAyMzcsIDIwLCA5LCAxMywgCi0gICAgMjM3LCAxOSwgOSwgMTMsIDIzNywgMTgsIDksIDEzLCAyMzcsIDE3LCA5LCAxMywgMjM3LCAxNiwgOSwgMTMsIDIzNywgMTUsIAotICAgIDksIDEzLCAyMzcsIDE0LCA5LCAxMywgMjM3LCAxMywgOSwgMTMsIDIzNywgMTIsIDksIDEzLCAyMzcsIDExLCA5LCAxMywgCi0gICAgMjM3LCAxMCwgOSwgMTMsIDIzNywgOSwgOSwgMTMsIDIzNywgOCwgOSwgMTMsIDIzNywgNywgOSwgMTMsIDIzNywgNiwgOSwgCi0gICAgMTMsIDIzNywgNSwgOSwgMTMsIDIzNywgNCwgOSwgMTMsIDIzNywgMywgOSwgMTMsIDIzNywgMiwgOSwgMTMsIDIzNywgMSwgCi0gICAgOSwgMTMsIDIzNywgMCwgOSwgMTMsIDIzNiwgMjU1LCA5LCAxMywgMjM2LCAyNTQsIDksIDEzLCAyMzYsIDI1MywgOSwgMTMsIAotICAgIDIzNiwgMjUyLCA5LCAxMywgMjM2LCAyNTEsIDksIDEzLCAyMzYsIDI1MCwgOSwgMTMsIDIzNiwgMjQ5LCA5LCAxMywgMjM2LCAKLSAgICAyNDgsIDksIDEzLCAyMzYsIDI0NywgOSwgMTMsIDIzNiwgMjQ2LCA5LCAxMywgMjM2LCAyNDUsIDksIDEzLCAyMzYsIDI0NCwgCi0gICAgOSwgMTMsIDIzNiwgMjQzLCA5LCAxMywgMjM2LCAyNDIsIDksIDEzLCAyMzYsIDI0MSwgOSwgMTMsIDIzNiwgMjQwLCA5LCAKLSAgICAxMywgMjM2LCAyMzksIDksIDEzLCAyMzYsIDIzOCwgOSwgMTMsIDIzNiwgMjM3LCA5LCAxMywgMjM2LCAyMzYsIDksIDEzLCAKLSAgICAyMzYsIDIzNSwgOSwgMTMsIDIzNiwgMjM0LCA5LCAxMywgMjM2LCAyMzMsIDksIDEzLCAyMzYsIDIzMiwgOSwgMTMsIDIzNiwgCi0gICAgMjMxLCA5LCAxMywgMjM2LCAyMzAsIDksIDEzLCAyMzYsIDIyOSwgOSwgMTMsIDIzNiwgMjI4LCA5LCAxMywgMjM2LCAyMjcsIAotICAgIDksIDEzLCAyMzYsIDIyNiwgOSwgMTMsIDIzNiwgMjI1LCA5LCAxMywgMjM2LCAyMjQsIDksIDEzLCAyMzYsIDIyMywgOSwgCi0gICAgMTMsIDIzNiwgMjIyLCA5LCAxMywgMjM2LCAyMjEsIDksIDEzLCAyMzYsIDIyMCwgOSwgMTMsIDIzNiwgMjE5LCA5LCAxMywgCi0gICAgMjM2LCAyMTgsIDksIDEzLCAyMzYsIDIxNywgOSwgMTMsIDIzNiwgMjE2LCA5LCAxMywgMjM2LCAyMTUsIDksIDEzLCAyMzYsIAotICAgIDIxNCwgOSwgMTMsIDIzNiwgMjEzLCA5LCAxMywgMjM2LCAyMTIsIDksIDEzLCAyMzYsIDIxMSwgOSwgMTMsIDIzNiwgMjEwLCAKLSAgICA5LCAxMywgMjM2LCAyMDksIDksIDEzLCAyMzYsIDIwOCwgOSwgMTMsIDIzNiwgMjA3LCA5LCAxMywgMjM2LCAyMDYsIDksIAotICAgIDEzLCAyMzYsIDIwNSwgOSwgMTMsIDIzNiwgMjA0LCA5LCAxMywgMjM2LCAyMDMsIDksIDEzLCAyMzYsIDIwMiwgOSwgMTMsIAotICAgIDIzNiwgMjAxLCA5LCAxMywgMjM2LCAyMDAsIDksIDEzLCAyMzYsIDE5OSwgOSwgMTMsIDIzNiwgMTk4LCA5LCAxMywgMjM2LCAKLSAgICAxOTcsIDksIDEzLCAyMzYsIDE5NiwgOSwgMTMsIDIzNiwgMTk1LCA5LCAxMywgMjM2LCAxOTQsIDksIDEzLCAyMzYsIDE5MywgCi0gICAgOSwgMTMsIDIzNiwgMTkyLCA5LCAxMywgMjM2LCAxOTEsIDksIDEzLCAyMzYsIDE5MCwgOSwgMTMsIDIzNiwgMTg5LCA5LCAKLSAgICAxMywgMjM2LCAxODgsIDksIDEzLCAyMzYsIDE4NywgOSwgMTMsIDIzNiwgMTg2LCA5LCAxMywgMjM2LCAxODUsIDksIDEzLCAKLSAgICAyMzYsIDE4NCwgOSwgMTMsIDIzNiwgMTgzLCA5LCAxMywgMjM2LCAxODIsIDksIDEzLCAyMzYsIDE4MSwgOSwgMTMsIDIzNiwgCi0gICAgMTgwLCA5LCAxMywgMjM2LCAxNzksIDksIDEzLCAyMzYsIDE3OCwgOSwgMTMsIDIzNiwgMTc3LCA5LCAxMywgMjM2LCAxNzYsIAotICAgIDksIDEzLCAyMzYsIDE3NSwgOSwgMTMsIDIzNiwgMTc0LCA5LCAxMywgMjM2LCAxNzMsIDksIDEzLCAyMzYsIDE3MiwgOSwgCi0gICAgMTMsIDIzNiwgMTcxLCA5LCAxMywgMjM2LCAxNzAsIDksIDEzLCAyMzYsIDE2OSwgOSwgMTMsIDIzNiwgMTY4LCA5LCAxMywgCi0gICAgMjM2LCAxNjcsIDksIDEzLCAyMzYsIDE2NiwgOSwgMTMsIDIzNiwgMTY1LCA5LCAxMywgMjM2LCAxNjQsIDksIDEzLCAyMzYsIAotICAgIDE2MywgOSwgMTMsIDIzNiwgMTYyLCA5LCAxMywgMjM2LCAxNjEsIDksIDEzLCAyMzYsIDE2MCwgOSwgMTMsIDIzNiwgMTU5LCAKLSAgICA5LCAxMywgMjM2LCAxNTgsIDksIDEzLCAyMzYsIDE1NywgOSwgMTMsIDIzNiwgMTU2LCA5LCAxMywgMjM2LCAxNTUsIDksIAotICAgIDEzLCAyMzYsIDE1NCwgOSwgMTMsIDIzNiwgMTUzLCA5LCAxMywgMjM2LCAxNTIsIDksIDEzLCAyMzYsIDE1MSwgOSwgMTMsIAotICAgIDIzNiwgMTUwLCA5LCAxMywgMjM2LCAxNDksIDksIDEzLCAyMzYsIDE0OCwgOSwgMTMsIDIzNiwgMTQ3LCA5LCAxMywgMjM2LCAKLSAgICAxNDYsIDksIDEzLCAyMzYsIDE0NSwgOSwgMTMsIDIzNiwgMTQ0LCA5LCAxMywgMjM2LCAxNDMsIDksIDEzLCAyMzYsIDE0MiwgCi0gICAgOSwgMTMsIDIzNiwgMTQxLCA5LCAxMywgMjM2LCAxNDAsIDksIDEzLCAyMzYsIDEzOSwgOSwgMTMsIDIzNiwgMTM4LCA5LCAKLSAgICAxMywgMjM2LCAxMzcsIDksIDEzLCAyMzYsIDEzNiwgOSwgMTMsIDIzNiwgMTM1LCA5LCAxMywgMjM2LCAxMzQsIDksIDEzLCAKLSAgICAyMzYsIDEzMywgOSwgMTMsIDIzNiwgMTMyLCA5LCAxMywgMjM2LCAxMzEsIDksIDEzLCAyMzYsIDEzMCwgOSwgMTMsIDIzNiwgCi0gICAgMTI5LCA5LCAxMywgMjM2LCAxMjgsIDksIDEzLCAyMzYsIDEyNywgOSwgMTMsIDIzNiwgMTI2LCA5LCAxMywgMjM2LCAxMjUsIAotICAgIDksIDEzLCAyMzYsIDEyNCwgOSwgMTMsIDIzNiwgMTIzLCA5LCAxMywgMjM2LCAxMjIsIDksIDEzLCAyMzYsIDEyMSwgOSwgCi0gICAgMTMsIDIzNiwgMTIwLCA5LCAxMywgMjM2LCAxMTksIDksIDEzLCAyMzYsIDExOCwgOSwgMTMsIDIzNiwgMTE3LCA5LCAxMywgCi0gICAgMjM2LCAxMTYsIDksIDEzLCAyMzYsIDExNSwgOSwgMTMsIDIzNiwgMTE0LCA5LCAxMywgMjM2LCAxMTMsIDksIDEzLCAyMzYsIAotICAgIDExMiwgOSwgMTMsIDIzNiwgMTExLCA5LCAxMywgMjM2LCAxMTAsIDksIDEzLCAyMzYsIDEwOSwgOSwgMTMsIDIzNiwgMTA4LCAKLSAgICA5LCAxMywgMjM2LCAxMDcsIDksIDEzLCAyMzYsIDEwNiwgOSwgMTMsIDIzNiwgMTA1LCA5LCAxMywgMjM2LCAxMDQsIDksIAotICAgIDEzLCAyMzYsIDEwMywgOSwgMTMsIDIzNiwgMTAyLCA5LCAxMywgMjM2LCAxMDEsIDksIDEzLCAyMzYsIDEwMCwgOSwgMTMsIAotICAgIDIzNiwgOTksIDksIDEzLCAyMzYsIDk4LCA5LCAxMywgMjM2LCA5NywgOSwgMTMsIDIzNiwgOTYsIDksIDEzLCAyMzYsIDk1LCAKLSAgICA5LCAxMywgMjM2LCA5NCwgOSwgMTMsIDIzNiwgOTMsIDksIDEzLCAyMzYsIDkyLCA5LCAxMywgMjM2LCA5MSwgOSwgMTMsIAotICAgIDIzNiwgOTAsIDksIDEzLCAyMzYsIDg5LCA5LCAxMywgMjM2LCA4OCwgOSwgMTMsIDIzNiwgODcsIDksIDEzLCAyMzYsIDg2LCAKLSAgICA5LCAxMywgMjM2LCA4NSwgOSwgMTMsIDIzNiwgODQsIDksIDEzLCAyMzYsIDgzLCA5LCAxMywgMjM2LCA4MiwgOSwgMTMsIAotICAgIDIzNiwgODEsIDksIDEzLCAyMzYsIDgwLCA5LCAxMywgMjM2LCA3OSwgOSwgMTMsIDIzNiwgNzgsIDksIDEzLCAyMzYsIDc3LCAKLSAgICA5LCAxMywgMjM2LCA3NiwgOSwgMTMsIDIzNiwgNzUsIDksIDEzLCAyMzYsIDc0LCA5LCAxMywgMjM2LCA3MywgOSwgMTMsIAotICAgIDIzNiwgNzIsIDksIDEzLCAyMzYsIDcxLCA5LCAxMywgMjM2LCA3MCwgOSwgMTMsIDIzNiwgNjksIDksIDEzLCAyMzYsIDY4LCAKLSAgICA5LCAxMywgMjM2LCA2NywgOSwgMTMsIDIzNiwgNjYsIDksIDEzLCAyMzYsIDY1LCA5LCAxMywgMjM2LCA2NCwgOSwgMTMsIAotICAgIDIzNiwgNjMsIDksIDEzLCAyMzYsIDYyLCA5LCAxMywgMjM2LCA2MSwgOSwgMTMsIDIzNiwgNjAsIDcsIDMsIDI2LCAyNDQsIAotICAgIDk0LCA3LCAzLCAyNiwgMjQ0LCA5MCwgNywgMywgMjYsIDI0NCwgNDUsIDcsIDMsIDI2LCAyNDQsIDkzLCA3LCAzLCAyNiwgCi0gICAgMjQ0LCA5MiwgNywgMywgMjYsIDE4NCwgMjIzLCA0LCAyMTgsIDk5LCA3LCAzLCAyNiwgMjE5LCAxMDcsIDE0MSwgMywgMjYsIAotICAgIDIzMSwgMTIzLCAyMjgsIDE1MCwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIDI0NSwgMTY5LCAxNDEsIDMsIDI2LCAyMzEsIDEyMywgCi0gICAgMjM1LCAyMjQsIDE0MSwgMywgMjYsIDIxNCwgMTU3LCAyMjgsIDE1MCwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIDIxMywgMTQ4LCAKLSAgICA5MywgMSwgMjEyLCAyMjUsIDIsIDI0MSwgMTQ0LCA5MywgMjI1LCAxNDUsIDIzNSwgNTMsIDIxNCwgMjQzLCA5MywgMjYsIAotICAgIDIxMiwgMjUzLCAyMTIsIDIyNSwgMjEyLCAyMjUsIDIyNiwgMTEyLCA5MywgMSwgMjU0LCA0OCwgMjUzLCA3OCwgOTMsIDEsIAotICAgIDIxMywgMjMyLCAyNTQsIDc4LCA5MywgMSwgMjEzLCAyMzIsIDI0OCwgMTM0LCA5MywgMSwgMjEzLCAyMzIsIDI0MSwgMjIyLCAKLSAgICA5MywgMSwgMjEzLCAyMzIsIDIzNCwgMjU0LCA5MywgMSwgMjEzLCAyMzIsIDIzMywgMTE4LCA5MywgMSwgMjEzLCAyMzIsIAotICAgIDQwLCAyMzEsIDEyOSwgOTMsIDEsIDIxMywgMjMyLCAyMjMsIDIxOSwgOTMsIDEsIDIxMywgMjMyLCAyMTcsIDI0NSwgOTMsIAotICAgIDEsIDI1NCwgNDgsIDk0LCA1MiwgOTMsIDEsIDIyMCwgMjAxLCAyLCAyMjAsIDIwMSwgMjQ3LCA3NCwgOTMsIDEsIDIyMCwgCi0gICAgMjAxLCAyLCAyMjAsIDg1LCAyNDcsIDc0LCA5MywgMSwgMjIwLCAyMDEsIDIsIDI0OCwgMTUxLCAyNCwgMjIwLCAyMDEsIAotICAgIDI0NywgNzQsIDkzLCAxLCAyMjAsIDIwMSwgMiwgMjQ4LCAxNTEsIDI0LCAyMjAsIDg1LCAyNDcsIDc0LCA5MywgMSwgMTA2LCAKLSAgICAyLCAyMjYsIDExMiwgOTMsIDEsIDEwNiwgMiwgMjI0LCAyMjAsIDkzLCAxLCAxMDYsIDIsIDIzMSwgMjM0LCA5MywgMSwgCi0gICAgMjUxLCAyMDYsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjQyLCAxNzgsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjQ4LCAxMzUsIDIsIAotICAgIDI0OCwgMTUwLCA5MywgMSwgMjQxLCAyMjMsIDIsIDIzMSwgMjM0LCA5MywgMSwgMjE0LCAyMzcsIDIsIDI0OCwgMTUwLCA5MywgCi0gICAgMSwgMjEyLCA5MSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTcsIDE4NCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTIsIDIyNSwgCi0gICAgMiwgMjQ4LCAxNTAsIDkzLCAxLCA0MCwgMjM0LCAyNTUsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjM0LCAyNTUsIDIsIDI0OCwgCi0gICAgMTUwLCA5MywgMSwgMjMzLCAxMTksIDIsIDI0OCwgMTUwLCA5MywgMSwgMjMxLCAxMzAsIDIsIDI0OCwgMTUwLCA5MywgMSwgCi0gICAgMjI4LCA1MSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjIsIDE2NSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCA0MCwgMjI2LCA5NywgCi0gICAgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjYsIDk3LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNiwgMTM4LCAyLCAyNDgsIDE1MCwgCi0gICAgOTMsIDEsIDIyNCwgMTg1LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIyMywgMjIwLCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIyMCwgCi0gICAgMjAxLCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNywgMjQ2LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIxNCwgMjM3LCAyLCAyNDEsIAotICAgIDQ3LCA5MywgMSwgMjUxLCAyMDYsIDIsIDIyNCwgNTksIDkzLCAxLCAyMzQsIDI1NSwgMiwgMjI0LCA1OSwgOTMsIDEsIDIyNiwgCi0gICAgOTcsIDIsIDIyNCwgNTksIDkzLCAyNiwgMTA2LCAyMzMsIDExOCwgMTIsIDEsIDEwNiwgMjE0LCAzMSwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMTA2LCAyMTQsIDMxLCA0MCwgMTcsIDEyLCAxLCAyNTEsIDI0MSwgNDgsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI1MSwgMjQxLCA3MCwgMTcsIDEyLCAxLCAyNTEsIDI0MSwgMTM4LCAxNywgMTIsIDEsIDIyNiwgODEsIAotICAgIDQ4LCAxNywgMTIsIDEsIDIyNiwgODEsIDQwLCAxNywgMTIsIDEsIDIyNiwgODEsIDcwLCAxNywgMTIsIDEsIDIyNiwgODEsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyNTEsIDIyOSwgNDgsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDQwLCAxNywgMTIsIDEsIDI1MSwgCi0gICAgMjI5LCA3MCwgMTcsIDEyLCAxLCAyNTEsIDIyOSwgMTM4LCAxNywgMTIsIDEsIDIxNiwgMTA4LCA0OCwgMTcsIDEyLCAxLCAKLSAgICAyMTYsIDEwOCwgNDAsIDE3LCAxMiwgMSwgMjE2LCAxMDgsIDcwLCAxNywgMTIsIDEsIDIxNiwgMTA4LCAxMzgsIDE3LCAxMiwgCi0gICAgMSwgMjE3LCAyMTQsIDQ4LCAxNywgMTIsIDEsIDIxNywgMjE0LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNCwgNzAsIDE3LCAKLSAgICAxMiwgMSwgMjE3LCAyMTQsIDEzOCwgMTcsIDEyLCAxLCAyMTYsIDExMCwgNDgsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIxNiwgMTEwLCA3MCwgMTcsIDEyLCAxLCAyMTYsIDExMCwgMTM4LCAxNywgMTIsIDEsIDIxNCwgMjI2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMTQsIDIyNiwgNDAsIDE3LCAxMiwgMSwgMjE0LCAyMjYsIDcwLCAxNywgMTIsIDEsIDIxNCwgCi0gICAgMjI2LCAxMzgsIDE3LCAxMiwgMSwgMjI2LCA3OSwgNDgsIDE3LCAxMiwgMSwgMjI2LCA3OSwgNDAsIDE3LCAxMiwgMSwgMjI2LCAKLSAgICA3OSwgNzAsIDE3LCAxMiwgMSwgMjI2LCA3OSwgMTM4LCAxNywgMTIsIDEsIDI0NSwgMjU1LCA0OCwgMTcsIDEyLCAxLCAyNDUsIAotICAgIDI1NSwgNDAsIDE3LCAxMiwgMSwgMjQ1LCAyNTUsIDcwLCAxNywgMTIsIDEsIDI0NSwgMjU1LCAxMzgsIDE3LCAxMiwgMSwgCi0gICAgMjI4LCAxNSwgNDgsIDE3LCAxMiwgMSwgMjI4LCAxNSwgNDAsIDE3LCAxMiwgMSwgMjI4LCAxNSwgNzAsIDE3LCAxMiwgMSwgCi0gICAgMjI4LCAxNSwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjM0LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjE3LCAyMzQsIDcwLCAxNywgMTIsIDEsIDIxNywgMjM0LCAxMzgsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDQ4LCAxNywgCi0gICAgMTIsIDEsIDIxNywgMjMyLCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIzMiwgNzAsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDEzOCwgCi0gICAgMTcsIDEyLCAxLCAyNDgsIDg0LCA0OCwgMTcsIDEyLCAxLCAyNDgsIDg0LCA0MCwgMTcsIDEyLCAxLCAyNDgsIDE0NywgNDgsIAotICAgIDE3LCAxMiwgMSwgMjQ4LCAxNDcsIDQwLCAxNywgMTIsIDEsIDI0NiwgMjYsIDQ4LCAxNywgMTIsIDEsIDI0NiwgMjYsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI0OCwgODIsIDQ4LCAxNywgMTIsIDEsIDI0OCwgODIsIDQwLCAxNywgMTIsIDEsIDIzNSwgMTIyLCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyMzUsIDEyMiwgNDAsIDE3LCAxMiwgMSwgMjIzLCA3OCwgNDgsIDE3LCAxMiwgMSwgMjIzLCA3OCwgNDAsIAotICAgIDE3LCAxMiwgMSwgMjM0LCAxODEsIDQ4LCAxNywgMTIsIDEsIDIzNCwgMTgxLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDE4MSwgCi0gICAgNzAsIDE3LCAxMiwgMSwgMjM0LCAxODEsIDEzOCwgMTcsIDEyLCAxLCAyNDMsIDk4LCA0OCwgMTcsIDEyLCAxLCAyNDMsIDk4LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAyNDMsIDk4LCA3MCwgMTcsIDEyLCAxLCAyNDMsIDk4LCAxMzgsIDE3LCAxMiwgMSwgMjQyLCA4MywgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjQyLCA4MywgNDAsIDE3LCAxMiwgMSwgMjQyLCA4MywgNzAsIDE3LCAxMiwgMSwgMjQyLCA4MywgCi0gICAgMTM4LCAxNywgMTIsIDEsIDIyOSwgODksIDQ4LCAxNywgMTIsIDEsIDIyOSwgODksIDQwLCAxNywgMTIsIDEsIDIyOSwgODksIAotICAgIDcwLCAxNywgMTIsIDEsIDIyOSwgODksIDEzOCwgMTcsIDEyLCAxLCAyMjgsIDE3NCwgMjQyLCAxOTUsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyOCwgMTc0LCAyNDIsIDE5NSwgNDAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDQ4LCAxNywgMTIsIDEsIDIyMywgMTE2LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgNzAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDEzOCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMiwgNzMsIDc4LCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMiwgNzMsIDc4LCA0MCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMjQyLCAxNDgsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDIsIDE0OCwgNDAsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0MiwgMTQ4LCA3MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDEzOCwgMTcsIDEyLCAxLCAyNDEsIAotICAgIDIwMywgMjQ3LCA5NiwgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTYsIDQwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAKLSAgICAyNDcsIDk2LCA3MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQ3LCA5NiwgMTM4LCAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAKLSAgICA0OCwgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgNDAsIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDIsIDE5MiwgNzgsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAyLCAxOTIsIDc4LCA0MCwgMTcsIDEyLCAxNiwgNjIsIDQ5LCAxMiwgMTYsIDYyLCAKLSAgICA1NSwgMTIsIDE2LCAxMTcsIDE3NiwgNDksIDEyLCAxNiwgMTE3LCAxNzYsIDU1LCAxMiwgMTYsIDEzMywgMTc2LCA0OSwgMTIsIAotICAgIDE2LCAxMzMsIDE3NiwgNTUsIDEyLCAxNiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCA0OSwgMTIsIDE2LCAxMzMsIAotICAgIDE3NiwgMjI1LCAxNDEsIDI0NiwgNTgsIDU1LCAxMiwgMTYsIDI0MywgMjM3LCAxNzYsIDQ5LCAxMiwgMTYsIDI0MywgMjM3LCAKLSAgICAxNzYsIDU1LCAxMiwgMTYsIDUxLCA3MSwgMjUyLCA2MCwgNTUsIDEyLCAxNiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIAotICAgIDE2LCAxMTcsIDE3NiwgMjE0LCAxNjYsIDU1LCAxMiwgMTYsIDIyMywgMTMwLCAxMiwgMTYsIDMsIDIxOCwgMzAsIDQ5LCAxMiwgCi0gICAgMTYsIDMsIDIxOCwgMzAsIDU1LCAxMiwgMSwgMjI5LCAxNjIsIDQ4LCAxNywgMTIsIDEsIDIyOSwgMTYyLCA0MCwgMTcsIDEyLCAKLSAgICAxLCAyMjksIDE2MiwgNzAsIDE3LCAxMiwgMSwgMjI5LCAxNjIsIDEzOCwgMTcsIDEyLCAxLCAxMTEsIDQ4LCAxNywgMTIsIDEsIAotICAgIDExMSwgNDAsIDE3LCAxMiwgMSwgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDEsIDIyNywgMTAwLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyMTIsIDIwNCwgNDgsIDE3LCAxMiwgMSwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDEsIDExMSwgMiwgMTkyLCA3OCwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjE0LCAyMzMsIDQ4LCAxNywgMTIsIDEsIDIxNCwgMjMzLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAKLSAgICAyMjcsIDEwMCwgNDgsIDE3LCAxMiwgMSwgMjM0LCA4MiwgMjI3LCAxMDAsIDQwLCAxNywgMTIsIDEsIDIzNCwgODIsIDIxMiwgCi0gICAgMjA0LCA0OCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIDIwNCwgNDAsIDE3LCAxMiwgMSwgMTkxLCA0OCwgMTcsIDEyLCAxLCAKLSAgICAxOTEsIDQwLCAxNywgMTIsIDEsIDE5MSwgNzAsIDE3LCAxMiwgMSwgMTkxLCAxMzgsIDE3LCAxMiwgMSwgMjE1LCAxNzcsIAotICAgIDIzNCwgMTkyLCAyMzQsIDgyLCAxMDYsIDIxMCwgNzAsIDE3LCAxMiwgMSwgMjE1LCAxNzcsIDIzNCwgMTkyLCAyMzQsIDgyLCAKLSAgICAxMDYsIDIxMCwgMTM4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyNTQsIDE0OSwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyNTQsIDE0OSwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTQsIAotICAgIDE1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxNCwgMTUsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTkyLCA3OCwgMiwgMTExLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDExMSwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAxOTIsIDc4LCAyLCAyMjcsIDEwMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMjcsIDEwMCwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTIsIDIwNCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIAotICAgIDc4LCAyLCAyMTIsIDIwNCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxOTEsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMTkyLCA3OCwgMiwgMTkxLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDE5MSwgNzAsIDE3LCAKLSAgICAxMiwgMjYsIDIxNSwgMTc3LCAyMzQsIDgyLCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMTUsIDE3NywgMjM0LCA4MiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE1LCAxNzcsIAotICAgIDIzNCwgODIsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNzAsIDE3LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCA0OCwgCi0gICAgMTcsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDQwLCAxNywgMTIsIDEsIDI0NCwgMTM2LCA3MywgNzAsIDE3LCAxMiwgMSwgMjQ0LCAKLSAgICAxMzYsIDczLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTkyLCA3OCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDczLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMjEsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNzMsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEyMSwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA3MywgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMTQ2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyMTcsIDE0NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAxNDUsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAxMjEsIDIsIDE0NSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjM0LCAxMzYsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgCi0gICAgODYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIAotICAgIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgCi0gICAgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDE0NSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMjEsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIxMiwgMTA1LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDI1NCwgMTA0LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDIsIAotICAgIDIyMSwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIAotICAgIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgCi0gICAgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgCi0gICAgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgCi0gICAgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDEwNiwgCi0gICAgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTIxLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgMjEwLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyMTAsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNjMsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCA2MywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDYzLCAyLCA3MywgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjQxLCAyMDMsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0MSwgCi0gICAgMjAzLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxNDUsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNTYsIDIsIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAyMjMsIAotICAgIDI0NiwgMiwgMjE4LCAyMjMsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDEwNiwgMjEwLCAyLCAyMTgsIDIyMywgMTA2LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjQ4LCAxMjgsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIwOSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0NCwgMTM0LCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjQ4LCAKLSAgICAxMzAsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIxMSwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIAotICAgIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIAotICAgIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNjMsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyNTEsIDIzMSwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyNTEsIDIzMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNzMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjEyLCAxMDIsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjI4LCAxNzQsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMjEyLCAxMDIsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMjI4LCAxNzQsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTA2LCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgMjEwLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgNjMsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgCi0gICAgMTc0LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMjgsIDE3NCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgCi0gICAgMTc0LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDEwNiwgCi0gICAgMjEwLCAyLCAyMTgsIDIyMywgMTA2LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDIyOCwgCi0gICAgMTc0LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxMjEsIAotICAgIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyNTEsIDIzMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgCi0gICAgMjMxLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1MSwgCi0gICAgMjMxLCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMTcsIAotICAgIDIxNiwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAxNDYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMTIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAKLSAgICAxMzYsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIAotICAgIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIzNCwgCi0gICAgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgNjMsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMTIsIDEwNSwgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyNTQsIDEwNCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjQyLCAyMjEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI0NCwgCi0gICAgMTEyLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIAotICAgIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIAotICAgIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzNCwgCi0gICAgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIAotICAgIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIAotICAgIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIAotICAgIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAyMDMsIDIsIAotICAgIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCAyMTgsIAotICAgIDIyMywgMTA2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxMjEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCA3MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA3MywgCi0gICAgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDE5MiwgNzgsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyNTEsIDIzMSwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMTcsIDE0NiwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAxNDYsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIyMiwgODYsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjAsIDI0MCwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDIzMywgMTI3LCAxMzgsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDEzOCwgMTcsIAotICAgIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgCi0gICAgMTIsIDI2LCA3MywgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMSwgMTYsIDIsIDI0NCwgMTM0LCAxMzgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgMTMwLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIyMSwgMTYsIDIsIDIzNCwgMjExLCAxMzgsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE4LCAzMCwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyMiwgODYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDEyMSwgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCAxNDUsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMTM2LCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAKLSAgICA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjIzLCAKLSAgICAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgCi0gICAgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIAotICAgIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIAotICAgIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIAotICAgIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDE5NiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyNDgsIDE2MCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMTQ1LCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCAyMzQsIDEzNiwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCAxOTYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDg2LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgCi0gICAgMjYsIDIxOCwgMzAsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTQ1LCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgODYsIDIsIDEyMSwgMTM4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIDEzNiwgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjAsIDI0MCwgMiwgMTQ1LCAxMzgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCAxMzgsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIxMiwgMTA1LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAxMDYsIDIsIDI0NCwgMTMyLCA0MCwgMTcsIDEyLCAyNiwgMTA2LCAKLSAgICAyLCAyNDQsIDEzMiwgNDgsIDE3LCAyMjcsIDEzLCA0MiwgMjI2LCAxMzEsIDIyNywgMTMsIDQ2LCAyMjYsIDEzMSwgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDIsIDE0NSwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAKLSAgICAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDIxNywgMjE2LCAyLCA2MywgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgMTIxLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgMiwgNzMsIAotICAgIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEyMSwgCi0gICAgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAKLSAgICAyLCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDEyMSwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgMTQ1LCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDEyMSwgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIAotICAgIDEyMSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCAxMjEsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMjAsIDI0MCwgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAKLSAgICAyNDAsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMzQsIDEzNiwgCi0gICAgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE4LCAKLSAgICAzMCwgMiwgNjMsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIxOCwgMzAsIDIsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgNzMsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTQ1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgMiwgNjMsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCAKLSAgICAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNDIsIAotICAgIDIyMSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDYzLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDI0NCwgMTEyLCAyLCAyMzQsIDEzNiwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMjM0LCAKLSAgICAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMjQsIAotICAgIDIyNiwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgNjMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDEwNiwgCi0gICAgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIAotICAgIDIsIDE0NSwgMiwgMTQ1LCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCAyLCA2MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIAotICAgIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgCi0gICAgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTIxLCAyLCAKLSAgICA3MywgNDAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIAotICAgIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNDEsIAotICAgIDIwMywgMiwgNjMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDIsIDEwNiwgCi0gICAgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgCi0gICAgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjI4LCAxNzQsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgMiwgMTA2LCAyMTAsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA2MywgNzAsIAotICAgIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgCi0gICAgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxNDUsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgCi0gICAgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDYzLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMTQ1LCAyLCAxMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgMiwgMTA2LCAyMTAsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIAotICAgIDE5NiwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTQ1LCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCAyLCA3MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDYzLCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDIsIAotICAgIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIAotICAgIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMjgsIDE3NCwgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMTQ1LCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIAotICAgIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIzNCwgMjU1LCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgMTQ1LCAyLCA2MywgNzAsIDE3LCAKLSAgICAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIDEzNiwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgMTc1LCAKLSAgICAyMTUsIDEwMiwgMjUzLCAxNTMsIDIzNCwgMTMsIDIxOSwgNzAsIDUsIDQ4LCAxNywgMTIsIDI2LCAyMjQsIDIyMiwgMjE1LCAKLSAgICAxMDIsIDI1MywgMTUzLCAyMzQsIDEzLCAyMTksIDcwLCA1LCA0OCwgMTcsIDEyLCAyNiwgMjU0LCA2MiwgNDgsIDE3LCAxMiwgCi0gICAgMjYsIDI1NCwgOTEsIDQ4LCAxNywgMTIsIDI2LCAyMzAsIDIyMywgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTc2LCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjI0LCAzNSwgNDgsIDE3LCAxMiwgMjYsIDI1NCwgODAsIDQ4LCAxNywgMTIsIDI2LCAyMTQsIDMzLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjIyLCAxNzUsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE3NCwgMjU0LCA4MCwgMjE0LCAzMiwgMTIsIDI2LCAKLSAgICAyMzUsIDEzNCwgMjIzLCAxODcsIDUyLCAxMiwgMjYsIDI1MSwgMTUzLCAyNTMsIDIwOSwgMjUzLCAyMTAsIDQzLCAyMjIsIAotICAgIDc2LCA0MywgMjIxLCAyMjEsIDQzLCAyMjEsIDE1MywgNDMsIDIyMSwgMTQyLCA0MywgMjIxLCAxMzEsIDQzLCAyMjEsIDEyMCwgCi0gICAgNDMsIDIyMSwgMTA5LCA0MywgMjIxLCA5OCwgNDMsIDIyMSwgODcsIDQzLCAyMjIsIDc1LCA0MywgMjIyLCA2NCwgNDMsIAotICAgIDIyMiwgNTMsIDQzLCAyMjIsIDQyLCA0MywgMjIyLCAzMSwgNDMsIDIyMiwgMjAsIDQzLCAyMjIsIDksIDIyNSwgNzQsIDI0MywgCi0gICAgMjQ1LCAzMSwgNzEsIDI0OSwgMTU3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMDUsIDI0OSwgMTU3LCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCAxMDUsIDI0MywgMjAwLCAyMTksIDY5LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyNDksIAotICAgIDE2NCwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjIxLCA3MCwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ0LCAKLSAgICAyNTQsIDc3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAyMjQsIDE1OCwgNzcsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgCi0gICAgNzEsIDQyLCA2NywgMjMzLCA0NCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNjcsIDIzMywgNDQsIAotICAgIDI1MSwgODMsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDE5OSwgMjQ1LCAxMjAsIDM3LCAyNiwgNDIsIDI0MiwgOSwgCi0gICAgMzcsIDI2LCA0NiwgMjQyLCA5LCAzNywgNTEsIDIxNywgNDMsIDQyLCAyNDIsIDksIDM3LCA1MSwgMjE3LCA0MywgNDYsIAotICAgIDI0MiwgOSwgMzcsIDIzMiwgMzgsIDQyLCAyNDIsIDksIDM3LCAyMzIsIDM4LCA0NiwgMjQyLCA5LCAzNywgMjQ5LCAxMzcsIAotICAgIDIzMiwgMzcsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDExNywgNjIsIDIzMywgODAsIDIyNSwgNzQsIDI0MywgMjQ1LCAKLSAgICAzMSwgNzEsIDI0NSwgMTE4LCAyNDgsIDEwMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ1LCAxMDksIDI0OCwgCi0gICAgMTAxLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMTUsIDIzMiwgMjQyLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAKLSAgICAyMTQsIDE2LCAxMTUsIDIzMiwgMjQyLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjI2LCAxMzEsIDIyNSwgNzQsIAotICAgIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAyMjYsIDEzMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI0OSwgNDAsIAotICAgIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDI0OSwgNDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCAKLSAgICA3MSwgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgMjE2LCAyMTksIAotICAgIDIyMCwgMjMzLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA4MywgMjMzLCA0NCwgMTI1LCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgODMsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIAotICAgIDUxLCAyNTQsIDE5LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCAyMjUsIAotICAgIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgCi0gICAgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgMjQ5LCAxMDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAKLSAgICAyNDUsIDMxLCA3MSwgNDYsIDI0OSwgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA2NywgMjQ5LCAKLSAgICAxMDAsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDY3LCAyNDksIDEwMCwgMTI1LCAyMjEsIDUyLCAyNDcsIAotICAgIDc0LCA2NywgMjIxLCA1MiwgMjQ3LCA3NCwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDQxLCAxMjUsIDIyNSwgCi0gICAgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA0MSwgMTI1LCAyNDgsIDEwMCwgMjI2LCAyNDMsIDI1MCwgMTA2LCAyMjYsIAotICAgIDI0MywgMjE0LCAxNiwgMjI2LCAyNDMsIDUxLCAyMTQsIDE2LCAyMjYsIDI0MywgMjQ4LCAxMDAsIDExNSwgMjMyLCAyNDIsIAotICAgIDI1MCwgMTA2LCAxMTUsIDIzMiwgMjQyLCAyMTQsIDE2LCAxMTUsIDIzMiwgMjQyLCAzLCAyNDksIDE1NywgMywgMTA1LCAKLSAgICAyNDksIDE1NywgMywgMjQzLCAyMDAsIDIxOSwgNjksIDMsIDIyMSwgNzAsIDMsIDI0OSwgMTY0LCAzLCAyMjQsIDE1OCwgNzcsIAotICAgIDMsIDI0NCwgMjU0LCA3NywgMywgMjQ1LCAxMTgsIDI0OCwgMTAxLCAzLCA0MiwgMjI2LCAxMzEsIDMsIDQ2LCAyMjYsIDEzMSwgCi0gICAgMywgNDIsIDI0OSwgNDAsIDEyNSwgMywgNDYsIDI0OSwgNDAsIDEyNSwgMywgNDIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAKLSAgICAzLCA0NiwgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDMsIDUwLCA1MiwgMywgMjU0LCAzNSwgMywgMjUzLCAxMzIsIDMsIAotICAgIDk0LCA1MiwgMywgMjQwLCAxNTksIDMsIDIzMywgMzksIDUyLCAzLCAyNDIsIDEwNywgNTIsIDMsIDI0NSwgNjEsIDUyLCAzLCAKLSAgICAyMjMsIDIwMywgMjE5LCAyMzEsIDMsIDI0NywgODYsIDUyLCAzLCAyMjYsIDU3LCA1MiwgMywgMjQ5LCAxNTYsIDI1MywgCi0gICAgMTIyLCAxMiwgMjQ0LCAxMzIsIDQ4LCAxNywgMTIsIDIxNywgMjUxLCAyLCAyNDQsIDEzMiwgNDksIDEyLCAyNDgsIDEyOCwgCi0gICAgNDgsIDE3LCAxMiwgMjE4LCAyOCwgMjQzLCAyMjcsIDEyLCAyMzQsIDIwOSwgNDgsIDE3LCAxMiwgMjQ0LCAxMzQsIDQ4LCAKLSAgICAxNywgMTIsIDI0NCwgMTM0LCAxMzgsIDE3LCAxMiwgMjQ4LCAxMzAsIDQ4LCAxNywgMTIsIDI0OCwgMTMwLCAxMzgsIDE3LCAKLSAgICAxMiwgMjM0LCAyMTEsIDQ4LCAxNywgMTIsIDIzNCwgMjExLCAxMzgsIDE3LCAxMiwgMjIxLCAxNiwgNDgsIDE3LCAxMiwgCi0gICAgMjIxLCAxNiwgMTM4LCAxNywgMTIsIDIxOCwgMjQ3LCA0OCwgMTcsIDEyLCAyMTgsIDI0NywgMTM4LCAxNywgMTIsIDEsIAotICAgIDE5MiwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAyMzIsIDMzLCA3OCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAyMzIsIDMzLCAKLSAgICA3OCwgNDAsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDc4LCA0OCwgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIxNCwgMTUsIDIsIDE5MiwgNzgsIDQ4LCAxNywgMTIsIDEsIDIxNCwgMTUsIDIsIDE5MiwgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCAyNTEsIDIyMCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDI1MSwgMjIwLCAKLSAgICA0MCwgMTcsIDEyLCAxLCA3MywgMiwgMTkyLCA3OCwgNDgsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDQwLCAxNywgMTIsIAotICAgIDEsIDczLCAyLCAxOTIsIDc4LCA3MCwgMTcsIDEyLCAxLCA3MywgMiwgMTkyLCA3OCwgMTM4LCAxNywgMTIsIDEsIDEwNiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMTA2LCA0MCwgMTcsIDEyLCAxLCAyNTEsIDIzMSwgNDgsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI1MSwgMjMxLCA3MCwgMTcsIDEyLCAxLCAyNTEsIDIzMSwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjE2LCAKLSAgICAyMzEsIDIyOCwgNDgsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDIzMSwgMjI4LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDQwLCAxNywgMTIsIDEsIDIxNywgMjE2LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgCi0gICAgMTM4LCAxNywgMTIsIDEsIDIxNywgMTQ2LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgNDAsIDE3LCAxMiwgMSwgMjE3LCAKLSAgICAxNDYsIDcwLCAxNywgMTIsIDEsIDIxNywgMTQ2LCAxMzgsIDE3LCAxMiwgMSwgMTQ1LCA0OCwgMTcsIDEyLCAxLCAxNDUsIAotICAgIDQwLCAxNywgMTIsIDEsIDE0NSwgNzAsIDE3LCAxMiwgMSwgMTQ1LCAxMzgsIDE3LCAxMiwgMSwgMTIxLCA0OCwgMTcsIDEyLCAKLSAgICAxLCAxMjEsIDQwLCAxNywgMTIsIDEsIDEyMSwgNzAsIDE3LCAxMiwgMSwgMTIxLCAxMzgsIDE3LCAxMiwgMSwgMjM0LCAxMzYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDIzNCwgMTM2LCA0MCwgMTcsIDEyLCAxLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMSwgMjM0LCAKLSAgICAxMzYsIDEzOCwgMTcsIDEyLCAxLCAyNDgsIDE0MSwgNDgsIDE3LCAxMiwgMSwgMjQ4LCAxNDEsIDQwLCAxNywgMTIsIDEsIAotICAgIDIxNywgMTU2LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDE1NiwgNDAsIDE3LCAxMiwgMSwgMjIzLCAyNDYsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAxLCAyMTIsIDEwMiwgNDgsIDE3LCAxMiwgMSwgMjEyLCAxMDIsIDQwLCAxNywgCi0gICAgMTIsIDEsIDIyMiwgODYsIDQ4LCAxNywgMTIsIDEsIDIyMiwgODYsIDQwLCAxNywgMTIsIDEsIDIyMiwgODYsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIyMiwgODYsIDEzOCwgMTcsIDEyLCAxLCAyMjAsIDI0MCwgNDgsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIyMCwgMjQwLCA3MCwgMTcsIDEyLCAxLCAyMjAsIDI0MCwgMTM4LCAxNywgMTIsIDEsIDIyMiwgMTk2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMjIsIDE5NiwgNDAsIDE3LCAxMiwgMSwgMjIyLCAxOTYsIDcwLCAxNywgMTIsIDEsIDIyMiwgCi0gICAgMTk2LCAxMzgsIDE3LCAxMiwgMSwgMjQ4LCAxNjAsIDQ4LCAxNywgMTIsIDEsIDI0OCwgMTYwLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyNDgsIDE2MCwgNzAsIDE3LCAxMiwgMSwgMjQ4LCAxNjAsIDEzOCwgMTcsIDEyLCAxLCAyMTgsIDMwLCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMTgsIDMwLCA0MCwgMTcsIDEyLCAxLCAyMTgsIDMwLCA3MCwgMTcsIDEyLCAxLCAyMTgsIDMwLCAxMzgsIDE3LCAxMiwgCi0gICAgMSwgMjEyLCAxMDUsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMTA1LCA0MCwgMTcsIDEyLCAxLCAyMTIsIDEwNSwgNzAsIDE3LCAKLSAgICAxMiwgMSwgMjEyLCAxMDUsIDEzOCwgMTcsIDEyLCAxLCAyNTQsIDEwNCwgNDgsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDQwLCAKLSAgICAxNywgMTIsIDEsIDI1NCwgMTA0LCA3MCwgMTcsIDEyLCAxLCAyNTQsIDEwNCwgMTM4LCAxNywgMTIsIDEsIDI0MiwgMjIxLCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyNDIsIDIyMSwgNDAsIDE3LCAxMiwgMSwgMjQyLCAyMjEsIDcwLCAxNywgMTIsIDEsIDI0MiwgCi0gICAgMjIxLCAxMzgsIDE3LCAxMiwgMSwgMjQ0LCAxMTIsIDQ4LCAxNywgMTIsIDEsIDI0NCwgMTEyLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyNDQsIDExMiwgNzAsIDE3LCAxMiwgMSwgMjQ0LCAxMTIsIDEzOCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjI0LCAyMjYsIDQwLCAxNywgMTIsIDEsIDIyNCwgMjI2LCA3MCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgMTM4LCAxNywgCi0gICAgMTIsIDEsIDIzNCwgMjU1LCA0OCwgMTcsIDEyLCAxLCAyMzQsIDI1NSwgNDAsIDE3LCAxMiwgMSwgMjM0LCAyNTUsIDcwLCAKLSAgICAxNywgMTIsIDEsIDIzNCwgMjU1LCAxMzgsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDQ4LCAxNywgMTIsIDEsIDIzMywgMTI3LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgNzAsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDEzOCwgMTcsIDEyLCAxLCA2MywgNDgsIAotICAgIDE3LCAxMiwgMSwgNjMsIDQwLCAxNywgMTIsIDEsIDYzLCA3MCwgMTcsIDEyLCAxLCA2MywgMTM4LCAxNywgMTIsIDEsIDIyOCwgCi0gICAgMTc0LCA0OCwgMTcsIDEyLCAxLCAyMjgsIDE3NCwgNDAsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDcwLCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTc0LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCA0MCwgMTcsIDEyLCAKLSAgICAxLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAxLCAyMTQsIDE1LCA0OCwgMTcsIAotICAgIDEyLCAxLCAyMTQsIDE1LCA0MCwgMTcsIDEyLCAxLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyMTAsIDQwLCAxNywgCi0gICAgMTIsIDEsIDczLCA0OCwgMTcsIDEyLCAxLCA3MywgNDAsIDE3LCAxMiwgMSwgNzMsIDcwLCAxNywgMTIsIDEsIDczLCAxMzgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDIzMiwgMzMsIDc4LCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIAotICAgIDIsIDEwNiwgMiwgMjMyLCAzMywgNzgsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAxOTIsIDc4LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCA3OCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAKLSAgICAxMDYsIDIsIDE5MiwgMjUxLCAyMjAsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAxOTIsIDI1MSwgCi0gICAgMjIwLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIAotICAgIDQwLCAxNywgMjEyLCA4MCwgMjEzLCAyMzAsIDIyOCwgMTg0LCAyMTksIDIwNiwgMTIwLCAyNDQsIDI1NCwgNzcsIDEyMCwgCi0gICAgMjI0LCAxNDMsIDc3LCAxMjAsIDUwLCA1MiwgMTIwLCAyNDcsIDg2LCA1MiwgMTIwLCAyMjYsIDU3LCA1MiwgMTIwLCAyNTQsIAotICAgIDM1LCAxMjAsIDI1MywgMjI2LCAxMjAsIDQyLCAyMjYsIDEzMSwgMTIwLCA0NiwgMjI2LCAxMzEsIDEyMCwgMjUzLCAxMzIsIAotICAgIDEyMCwgOTQsIDUyLCAxMjAsIDI0OSwgMTU3LCAxMjAsIDI0MCwgMTU5LCAxMjAsIDI0MywgMjAwLCAyMTksIDY5LCAxMjAsIAotICAgIDIxOSwgMjMxLCAxMjAsIDIxLCAyMTIsIDc5LCAxMjAsIDIxLCAxMTYsIDEyMCwgMjEsIDEwOSwgMTIwLCAyMSwgMTY2LCAKLSAgICAxMjAsIDIxLCAxNjMsIDEyMCwgMjEsIDE4MCwgMTIwLCAyMSwgMTg5LCAxMjAsIDIxLCAxOTgsIDEyMCwgMjEsIDE5NSwgCi0gICAgMTIwLCAyMSwgMjAwLCAxMjAsIDI0OSwgMTY0LCAxMjAsIDIyMSwgNzAsIDEyMCwgMjMzLCAzOSwgNTIsIDEyMCwgMjQ1LCAKLSAgICA2MSwgNTIsIDEyMCwgMjQyLCAxMDcsIDUyLCAxMjAsIDIyNCwgMTU4LCA3NywgMTIwLCAyNDksIDE1NiwgMjUzLCAxMjIsIAotICAgIDEyMCwgNywgNiwgMSwgNjEsIDEyMCwgNywgNiwgMSwgMjUzLCA3NCwgMTIwLCA3LCA2LCAxLCAyNTAsIDI1MiwgMTIwLCA3LCAKLSAgICA2LCAxLCAyNDksIDMsIDEyMCwgNywgNiwgMSwgNzQsIDEyMCwgNywgNiwgMSwgMjQ0LCAyMzAsIDEyMCwgNywgNiwgMSwgCi0gICAgMjQzLCAxNzcsIDEyMCwgNywgNiwgMSwgMjQyLCA0MSwgMTIwLCA3LCA2LCAxLCA3MiwgMTIwLCA3LCA2LCAxLCAyMzUsIAotICAgIDE0MiwgMTIwLCA3LCA2LCAxLCAyMzUsIDI3LCAxMjAsIDcsIDYsIDEsIDE1MCwgMTIwLCA3LCA2LCAxLCAxODMsIDEyMCwgNywgCi0gICAgNiwgMSwgMjA0LCAxMjAsIDcsIDYsIDEsIDc1LCAxMjAsIDcsIDYsIDEsIDIyNiwgMjI5LCAxMjAsIDcsIDYsIDEsIDIyNCwgCi0gICAgMjQwLCAxMjAsIDcsIDYsIDEsIDE0OSwgMTIwLCA3LCA2LCAxLCAxOTcsIDEyMCwgNywgNiwgMSwgMjE4LCA5OSwgMTIwLCA3LCAKLSAgICA2LCAxLCA2OSwgMTIwLCA3LCA2LCAxLCAyMTUsIDc5LCAxMjAsIDcsIDYsIDEsIDIxNCwgODIsIDEyMCwgNywgNiwgMSwgCi0gICAgMjEzLCAxNjYsIDEyMCwgNywgNiwgMSwgMjEzLCAxMDUsIDEyMCwgNywgNiwgMSwgMjEyLCAxNTIsIDEyMCwgNDIsIDQxLCAKLSAgICAxMjUsIDEyMCwgMjIzLCAyMDMsIDIxOSwgMjMxLCAxMjAsIDQ2LCA0MSwgMTI1LCAxMjAsIDI0OSwgMjI0LCAyNTQsIDE3NCwgCi0gICAgMTIwLCAxMTUsIDIzMiwgMjQyLCAxMjAsIDI0MiwgMTE0LCAyNTQsIDE3NCwgMTIwLCA3LCAzLCAxLCA2MSwgMTIwLCA3LCAzLCAKLSAgICAxLCAyNTMsIDc0LCAxMjAsIDcsIDMsIDEsIDI1MCwgMjUyLCAxMjAsIDcsIDMsIDEsIDI0OSwgMywgMTIwLCA3LCAzLCAxLCAKLSAgICA3NCwgMTIwLCA3LCAzLCAxLCAyNDQsIDIzMCwgMTIwLCA3LCAzLCAxLCAyNDMsIDE3NywgMTIwLCA3LCAzLCAxLCAyNDIsIAotICAgIDQxLCAxMjAsIDcsIDMsIDEsIDcyLCAxMjAsIDcsIDMsIDEsIDIzNSwgMTQyLCAxMjAsIDcsIDMsIDEsIDIzNSwgMjcsIDEyMCwgCi0gICAgNywgMywgMSwgMTUwLCAxMjAsIDcsIDMsIDEsIDE4MywgMTIwLCA3LCAzLCAxLCAyMDQsIDEyMCwgNywgMywgMSwgNzUsIAotICAgIDEyMCwgNywgMywgMSwgMjI2LCAyMjksIDEyMCwgNywgMywgMSwgMjI0LCAyNDAsIDEyMCwgNywgMywgMSwgMTQ5LCAxMjAsIAotICAgIDcsIDMsIDEsIDE5NywgMTIwLCA3LCAzLCAxLCAyMTgsIDk5LCAxMjAsIDcsIDMsIDEsIDY5LCAxMjAsIDcsIDMsIDEsIDIxNSwgCi0gICAgNzksIDEyMCwgNywgMywgMSwgMjE0LCA4MiwgMTIwLCA3LCAzLCAxLCAyMTMsIDE2NiwgMTIwLCA3LCAzLCAxLCAyMTMsIAotICAgIDEwNSwgMTIwLCA3LCAzLCAxLCAyMTIsIDE1MiwgMTIwLCA0MiwgMjQ5LCA0MCwgMTI1LCAxMjAsIDcxLCAyMzIsIDI0MiwgCi0gICAgMTIwLCA0NiwgMjQ5LCA0MCwgMTI1LCAxMjAsIDIxNywgNDIsIDEyMCwgNDIsIDY3LCAyMjYsIDEzMSwgMTIwLCA0NiwgNjcsIAotICAgIDIyNiwgMTMxLCA5OCwgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgOTgsIDQyLCAyNDksIDEwMCwgMTI1LCA5OCwgNDYsIDI0OSwgCi0gICAgMTAwLCAxMjUsIDk4LCAxMDUsIDI0OSwgMTU3LCA5OCwgNTYsIDIzMSwgMzcsIDI0NywgNzQsIDk4LCA1NiwgMSwgMjEzLCAKLSAgICAyMTQsIDk4LCA1NiwgMSwgMywgNjEsIDk4LCA1NiwgMSwgMywgNzIsIDk4LCA1NiwgMSwgMywgNjksIDk4LCA1NiwgMSwgMywgCi0gICAgNzQsIDk4LCA1NiwgMSwgMywgNzUsIDk4LCA1NiwgMSwgMywgMTg2LCA5OCwgNTYsIDEsIDMsIDIxMiwgMjAzLCA5OCwgNTYsIAotICAgIDEsIDMsIDIxMiwgMjM1LCA5OCwgNTYsIDEsIDMsIDIxNiwgODIsIDk4LCAyMzQsIDIwNiwgMjI1LCA1NywgMjE5LCAyMTgsIAotICAgIDc3LCA5OCwgNTYsIDEsIDYxLCA5OCwgNTYsIDEsIDcyLCA5OCwgNTYsIDEsIDY5LCA5OCwgNTYsIDEsIDc0LCA5OCwgNTYsIAotICAgIDEsIDc1LCA5OCwgNTYsIDEsIDE4MSwgOTgsIDU2LCAxLCAyMzQsIDEwMSwgOTgsIDU2LCAxLCAyMzMsIDIzOCwgOTgsIDU2LCAKLSAgICAxLCAyMzQsIDE4OCwgOTgsIDU2LCAxLCAyMzQsIDM3LCA5OCwgNTYsIDEsIDIyMiwgMjAyLCA5OCwgNTYsIDEsIDIyMCwgCi0gICAgMTE3LCA5OCwgNTYsIDEsIDIxOSwgMjcsIDk4LCA1NiwgMSwgMjIyLCAxMDAsIDk4LCA1NiwgMSwgMjE5LCAyNDIsIDk4LCAKLSAgICA1NiwgMSwgMjE4LCA1MiwgOTgsIDU2LCAxLCAyMTcsIDcxLCA5OCwgNTYsIDEsIDIxNiwgODIsIDk4LCA1NiwgMSwgMjE3LCAKLSAgICAyMjksIDk4LCA1NiwgMSwgMTA4LCA5OCwgNTYsIDEsIDIwNSwgOTgsIDU2LCAxLCAyMjksIDY0LCA5OCwgNTYsIDEsIDIyOCwgCi0gICAgOTIsIDk4LCA1NiwgMSwgMjI5LCAxODcsIDk4LCA1NiwgMSwgMjI4LCAxODUsIDk4LCA1NiwgMSwgMTU5LCA5OCwgNTYsIDEsIAotICAgIDI0MSwgMTY1LCA5OCwgNTYsIDEsIDI0MCwgMjEyLCA5OCwgNTYsIDEsIDI0MSwgMjIyLCA5OCwgNTYsIDEsIDI0MSwgNTQsIAotICAgIDk4LCA1NiwgMSwgMTg4LCA5OCwgNTYsIDEsIDIzMSwgNDIsIDk4LCA1NiwgMSwgMjMwLCAxNzIsIDk4LCA1NiwgMSwgMjMxLCAKLSAgICAxNTYsIDk4LCA1NiwgMSwgMjMwLCAyMzEsIDk4LCA1NiwgMSwgMTg2LCA5OCwgNTYsIDEsIDIxMiwgMjAzLCA5OCwgNTYsIDEsIAotICAgIDIxMiwgMjM1LCA5OCwgNTYsIDEsIDIwMywgOTgsIDU2LCAxLCAyMjMsIDE4OCwgOTgsIDU2LCAxLCAyMjMsIDUxLCA5OCwgCi0gICAgNTYsIDEsIDIyNCwgMjEsIDk4LCA1NiwgMSwgMjIzLCAxMTIsIDk4LCA1NiwgMSwgMjE0LCA0OSwgOTgsIDU2LCAxLCAyMDQsIAotICAgIDk4LCA1NiwgMjE0LCAxMTYsIDIxOSwgMjE4LCA3NywgOTgsIDU2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDk4LCAyMywgCi0gICAgMjQ0LCA3MiwgOTgsIDIzLCAxLCAyMzQsIDY3LCA5OCwgMjMsIDEsIDIxOSwgMTUwLCA5OCwgMjMsIDEsIDIzNCwgNjAsIDk4LCAKLSAgICAyMywgMSwgMjI5LCA1NywgOTgsIDIzLCAxLCAyMjksIDU1LCA5OCwgMjMsIDEsIDIyOSwgNTQsIDk4LCAyMywgMSwgMjE3LCAKLSAgICA1NSwgOTgsIDIzLCAxLCAyMTksIDEzOSwgOTgsIDIzLCAxLCAyMjMsIDE3OSwgOTgsIDIzLCAxLCAyMjMsIDE3NCwgOTgsIAotICAgIDIzLCAxLCAyMjMsIDE3MSwgOTgsIDIzLCAxLCAyMjMsIDE2NCwgOTgsIDIzLCAxLCAyMjMsIDE1OSwgOTgsIDIzLCAxLCAKLSAgICAyMjMsIDE1NCwgOTgsIDIzLCAxLCAyMjMsIDE2NSwgOTgsIDIzLCAxLCAyMjMsIDE3NywgOTgsIDIzLCAxLCAyMzEsIDMwLCAKLSAgICA5OCwgMjMsIDEsIDIyNSwgMjI3LCA5OCwgMjMsIDEsIDIxOSwgMTQ3LCA5OCwgMjMsIDEsIDIyNSwgMjE2LCA5OCwgMjMsIDEsIAotICAgIDIyMCwgNzYsIDk4LCAyMywgMSwgMjE5LCAxNDQsIDk4LCAyMywgMSwgMjM2LCA1MSwgOTgsIDIzLCAxLCAyNDksIDIzOSwgCi0gICAgOTgsIDIzLCAxLCAyMTksIDE1NCwgOTgsIDIzLCAxLCAyNTAsIDQzLCA5OCwgMjMsIDEsIDIzNCwgMTE2LCA5OCwgMjMsIDEsIAotICAgIDIxNywgMTI2LCA5OCwgMjMsIDEsIDIyNiwgNywgOTgsIDIzLCAxLCAyNDEsIDE1OCwgOTgsIDIzLCAxLCA2MSwgOTgsIDIzLCAKLSAgICAxLCAyNTQsIDE0OCwgOTgsIDIzLCAxLCAxODYsIDk4LCAyMywgMSwgMjEzLCA4MCwgOTgsIDIzLCAxLCAyNDUsIDc2LCA5OCwgCi0gICAgMjMsIDEsIDc0LCA5OCwgMjMsIDEsIDIxMywgMjcsIDk4LCAyMywgMSwgMjEzLCAzOCwgOTgsIDIzLCAxLCA3NSwgOTgsIDIzLCAKLSAgICAxLCAyMTQsIDQ5LCA5OCwgMjMsIDEsIDIxNCwgNDYsIDk4LCAyMywgMSwgMjI3LCA5OSwgOTgsIDIzLCAxLCAyMTIsIDIzNSwgCi0gICAgOTgsIDIzLCAxLCA2OSwgOTgsIDIzLCAxLCAyMTMsIDI1MiwgOTgsIDIzLCAxLCAyMTQsIDYsIDk4LCAyMywgMSwgMjEzLCAKLSAgICAyMzUsIDk4LCAyMywgMSwgMjEyLCAyMDMsIDk4LCAyMywgMSwgMjQ1LCAyMiwgOTgsIDIzLCAxLCAyMTIsIDI1NSwgOTgsIAotICAgIDIzLCAxLCA3MiwgMTIwLCAyNTAsIDExMCwgNTIsIDEyMCwgMjI1LCAxMDgsIDUyLCAxMjAsIDIyOCwgMTYzLCA1MiwgMTIwLCAKLSAgICAyMzIsIDM3LCAxMjAsIDI1MSwgNjMsIDEzNCwgMTIwLCAyMTMsIDMxLCA1MiwgMTIwLCAyMTMsIDIwNCwgNTIsIDk4LCAyNDMsIAotICAgIDI0MywgMTc3LCAyMTQsIDIxNiwgOTgsIDEzMiwgNjgsIDk4LCAyMTUsIDEyNCwgNjgsIDk4LCA5NSwgNjgsIDk4LCAyNDYsIAotICAgIDU4LCA2OCwgOTgsIDgzLCAyMTksIDE2NiwgOTgsIDY3LCAyNDksIDIyOCwgMjM1LCAyMDEsIDI1NCwgMTAsIDI1NCwgMjksIAotICAgIDIzNSwgMjAxLCAyNTQsIDEwLCAyMjEsIDU3LCAyMzUsIDIwMSwgMjU0LCAxMCwgMjE3LCAxODksIDIyNywgMTEzLCAyMjMsIAotICAgIDIyNCwgMjUwLCA3OCwgMjIzLCAyMjQsIDI1MCwgNzgsIDU4LCA1NCwgNCwgMjUzLCA1OCwgNjEsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAyNywgNzQsIDU4LCA1NCwgNCwgMjUzLCAzNiwgNzIsIDU4LCA1NCwgNCwgMjUzLCA0LCA3NSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDU0LCA2OSwgNTgsIDU0LCA0LCAyNTMsIDczLCAyNDgsIDE2NCwgNTgsIDU0LCA0LCAyNTMsIDIwLCAyNDgsIDQxLCA1OCwgCi0gICAgNTQsIDQsIDI1MywgNjAsIDI0NywgMjExLCA1OCwgNTQsIDQsIDI1MywgNTAsIDI0NywgOTksIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAxNCwgMjQ2LCAzMywgNTgsIDU0LCA0LCAyNTMsIDgsIDIzNSwgMTM5LCA1OCwgNTQsIDQsIDI1MywgMTksIDIzNSwgMTI3LCAKLSAgICA1OCwgNTQsIDQsIDI1MywgMjksIDIzNSwgNzEsIDU4LCA1NCwgNCwgMjUzLCAwLCAyMzUsIDU0LCA1OCwgNTQsIDQsIDI1MiwgCi0gICAgMjQ0LCAxODEsIDU4LCA1NCwgNCwgMjUzLCAyMSwgMjM0LCAxODgsIDU4LCA1NCwgNCwgMjUyLCAyNTQsIDIzNCwgMTAxLCAKLSAgICA1OCwgNTQsIDQsIDI1MiwgMjUxLCAyMzQsIDM3LCA1OCwgNTQsIDQsIDI1MiwgMjQwLCAyMzMsIDIzOCwgNTgsIDU0LCA0LCAKLSAgICAyNTIsIDI0MSwgMTg4LCA1OCwgNTQsIDQsIDI1MywgNTEsIDIzMSwgMTU2LCA1OCwgNTQsIDQsIDI1MiwgMjQ4LCAyMzEsIAotICAgIDQyLCA1OCwgNTQsIDQsIDI1MywgNDksIDIzMCwgMjMxLCA1OCwgNTQsIDQsIDI1MywgNDEsIDIzMCwgMTcyLCA1OCwgNTQsIAotICAgIDQsIDI1MywgNjIsIDIwNSwgNTgsIDU0LCA0LCAyNTMsIDQwLCAyMjksIDE4NywgNTgsIDU0LCA0LCAyNTMsIDM0LCAyMjksIAotICAgIDY0LCA1OCwgNTQsIDQsIDI1MywgMTMsIDIyOCwgMTg1LCA1OCwgNTQsIDQsIDI1MywgMTAsIDIyOCwgOTIsIDU4LCA1NCwgNCwgCi0gICAgMjUzLCA2OSwgMTkzLCA1OCwgNTQsIDQsIDI1MiwgMjQ5LCAyMjYsIDk2LCA1OCwgNTQsIDQsIDI1MywgMjYsIDIyNSwgMjQwLCAKLSAgICA1OCwgNTQsIDQsIDI1MywgNTMsIDIyNSwgMTUwLCA1OCwgNTQsIDQsIDI1MywgMTUsIDIyNSwgMzUsIDU4LCA1NCwgNCwgCi0gICAgMjUzLCA0OCwgMjI0LCAyMzIsIDU4LCA1NCwgNCwgMjUyLCAyNDMsIDIyNCwgMjEzLCA1OCwgNTQsIDQsIDI1MywgNDMsIAotICAgIDIyNCwgMTk4LCA1OCwgNTQsIDQsIDI1MywgMzIsIDIyNCwgMTg3LCA1OCwgNTQsIDQsIDI1MywgNSwgMjAzLCA1OCwgNTQsIAotICAgIDQsIDI1MywgMzcsIDIyNCwgMjEsIDU4LCA1NCwgNCwgMjUzLCAxMiwgMjIzLCAxODgsIDU4LCA1NCwgNCwgMjUzLCA3MSwgCi0gICAgMjIzLCAxMTIsIDU4LCA1NCwgNCwgMjUzLCAzOCwgMjIzLCA1MSwgNTgsIDU0LCA0LCAyNTMsIDMzLCAyMjIsIDIwMiwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDU2LCAyMjIsIDEwMCwgNTgsIDU0LCA0LCAyNTMsIDI0LCAyMjAsIDExNywgNTgsIDU0LCA0LCAyNTMsIAotICAgIDUyLCAyMTksIDI0MiwgNTgsIDU0LCA0LCAyNTMsIDcsIDIxOSwgMjcsIDU4LCA1NCwgNCwgMjUzLCA2LCAyMTgsIDUyLCA1OCwgCi0gICAgNTQsIDQsIDI1MywgNjcsIDIxNywgMjI5LCA1OCwgNTQsIDQsIDI1MywgMjgsIDIxNywgNzEsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA2NSwgMTA4LCA1OCwgNTQsIDQsIDI1MiwgMjUyLCAyMTYsIDgyLCA1OCwgNTQsIDQsIDI1MywgMTEsIDIxNCwgNDksIDU4LCAKLSAgICA1NCwgNCwgMjUyLCAyNDYsIDIxNCwgNiwgNTgsIDU0LCA0LCAyNTMsIDI1LCAyMTMsIDIzNSwgNTgsIDU0LCA0LCAyNTMsIAotICAgIDIzLCAyMTMsIDIxNCwgNTgsIDU0LCA0LCAyNTMsIDQ3LCAyMTIsIDEwOSwgNTgsIDU0LCA0LCAyNTIsIDI0NywgMjEyLCA4NywgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDQ0LCAyMTIsIDE2LCA1OCwgNTQsIDQsIDI1MywgMzksIDI1NCwgMjM0LCA1OCwgNTQsIDQsIAotICAgIDI1MywgMjIsIDI1NCwgMjMzLCA1OCwgNTQsIDQsIDI1MiwgMjM3LCAyNTMsIDEwOCwgNTgsIDU0LCA0LCAyNTIsIDI1MCwgCi0gICAgMjQ2LCAxLCA1OCwgNTQsIDQsIDI1MiwgMjMzLCAyNDYsIDAsIDU4LCA1NCwgNCwgMjUzLCAxNywgMjI4LCAzMSwgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDM1LCAyMjUsIDM0LCA1OCwgNTQsIDQsIDI1MywgMywgMjI1LCAzNywgNTgsIDU0LCA0LCAyNTIsIDI0NSwgCi0gICAgMjI0LCA3NiwgNTgsIDU0LCA0LCAyNTMsIDMxLCAyMjQsIDc1LCA1OCwgNTQsIDQsIDI1MiwgMjUzLCAyMjMsIDExMSwgNTgsIAotICAgIDU0LCA0LCAyNTIsIDI1NSwgMjE4LCA1MCwgNTgsIDU0LCA0LCAyNTIsIDIzNSwgMjE2LCA0MywgNTgsIDU0LCA0LCAyNTIsIAotICAgIDIzMiwgMTA5LCA1OCwgNTQsIDE2LCAyNTMsIDQ2LCA1OCwgNTQsIDE2LCAyNTMsIDQ1LCA1OCwgNTQsIDE2LCAyNTMsIDQyLCAKLSAgICA1OCwgNTQsIDE2LCAyNTMsIDMwLCA1OCwgNTQsIDE2LCAyNTMsIDE4LCA1OCwgNTQsIDE2LCAyNTMsIDE2LCA1OCwgNTQsIAotICAgIDE2LCAyNTMsIDksIDU4LCA1NCwgMTYsIDI1MywgMiwgNTgsIDU0LCAxNiwgMjUzLCAxLCA1OCwgNTQsIDE2LCAyNTIsIDI0MiwgCi0gICAgNTgsIDU0LCAxNiwgMjUyLCAyMzksIDU4LCA1NCwgMTYsIDI1MiwgMjM4LCA1OCwgNTQsIDE2LCAyNTIsIDIzNiwgNTgsIDU0LCAKLSAgICAxNiwgMjUyLCAyMzQsIDU4LCA1NCwgMTAyLCAyNTIsIDIzMSwgMjMxLCAyNDgsIDU4LCA1NCwgMTAyLCAyNTIsIDIzMCwgCi0gICAgMjEzLCAyMDgsIDU4LCA1NCwgMTAyLCAyNTIsIDIyOSwgMjQ4LCAyNSwgNTgsIDU0LCAxMDIsIDI1MiwgMjI4LCAyNDUsIDU4LCAKLSAgICA1OCwgNTQsIDEwMiwgMjUyLCAyMjcsIDIzMSwgMjIyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjYsIDIxOSwgMTAxLCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAyMjUsIDI0NSwgNCwgNTgsIDU0LCAxMDIsIDI1MiwgMjI0LCAyMjQsIDQ1LCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAyMjMsIDIyMCwgMjQyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjIsIDI0MSwgMjIxLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjEsIAotICAgIDIxOSwgMjEyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMjAsIDI1MSwgMTI2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTksIDI0OSwgCi0gICAgODQsIDU4LCA1NCwgMTAyLCAyNTIsIDIxOCwgMjUxLCA0NCwgNTgsIDU0LCAxMDIsIDI1MiwgMjE3LCAyMTMsIDI0MywgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMjE2LCAyNTIsIDU2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTUsIDIyNywgNzEsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDIxNCwgMjE5LCAxODYsIDU4LCA1NCwgMTAyLCAyNTIsIDIxMywgMjQ5LCAxMSwgNTgsIDU0LCAyMzAsIDIxMiwgCi0gICAgMjUyLCAyMTIsIDIzNCwgMjI5LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIxMSwgMjM0LCAyMzcsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDIxMCwgMjI3LCA4NCwgNTgsIDU0LCAxMDIsIDI1MiwgMjA5LCAyMTMsIDIyMSwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMjA4LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIwNywgMjUzLCAxODgsIDU4LCA1NCwgMjMwLCAyMTIsIDI1MiwgMjA2LCAKLSAgICAyMzEsIDExNiwgNTgsIDU0LCAxMDIsIDI1MiwgMjA1LCAyNTEsIDYyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDQsIDI0MiwgCi0gICAgMTQyLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDMsIDU4LCA1NCwgMTAyLCAyNTIsIDIwMiwgMjEzLCAxOTksIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDIwMSwgNTgsIDU0LCAxMDIsIDI1MiwgMjAwLCA1OCwgNTQsIDEwMiwgMjUyLCAxOTksIDI0MCwgMjM1LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxOTgsIDU4LCA1NCwgMTAyLCAyNTIsIDE5NywgNTgsIDU0LCAxMDIsIDI1MiwgMTk2LCA1OCwgNTQsIDIzMCwgCi0gICAgMjEyLCAyNTIsIDE5NCwgMjE2LCA1NiwgNTgsIDU0LCAxMDIsIDI1MiwgMTkzLCA1OCwgNTQsIDEwMiwgMjUyLCAxOTIsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE5MSwgMjQ5LCAxODcsIDU4LCA1NCwgMTAyLCAyNTIsIDE5MCwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMTg5LCA1OCwgNTQsIDEwMiwgMjUyLCAxODgsIDI0MywgNjksIDU4LCA1NCwgMTAyLCAyNTIsIDE4NywgMjUzLCAxNzUsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE4NiwgNTgsIDU0LCAxMDIsIDI1MiwgMTg1LCA1OCwgNTQsIDEwMiwgMjUyLCAxODQsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE4MywgNTgsIDU0LCAxMDIsIDI1MiwgMTgyLCA1OCwgNTQsIDEwMiwgMjUyLCAxODEsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDE4MCwgNTgsIDU0LCAxMDIsIDI1MiwgMTc5LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzgsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDE3NywgMjMwLCAyMDQsIDU4LCA1NCwgMTAyLCAyNTIsIDE3NiwgNTgsIDU0LCAxMDIsIDI1MiwgMTc1LCAyMTYsIDE5MywgCi0gICAgNTgsIDU0LCAxMDIsIDI1MiwgMTc0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzMsIDU4LCA1NCwgMTAyLCAyNTIsIDE3MiwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTcxLCA1OCwgNTQsIDEwMiwgMjUyLCAxNzAsIDU4LCA1NCwgMTAyLCAyNTIsIDE2OSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTY4LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjcsIDU4LCA1NCwgMTAyLCAyNTIsIDE2NiwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTY1LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjQsIDU4LCA1NCwgMTAyLCAyNTIsIDE2MywgMjQxLCAxOTUsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE0MiwgMjQzLCAyNTMsIDU4LCA1NCwgMTAyLCAyNTIsIDEzOSwgMjUyLCAzNiwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTM0LCAyMTksIDE5MywgNTgsIDU0LCAxMDIsIDI1MiwgMTMzLCA2OCwgNTgsIDU0LCAxMDIsIDI1MiwgMTMyLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxMzEsIDIxOCwgMTgxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMzAsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDEyOSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI4LCAyMTMsIDIzOSwgMjUwLCA3NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI3LCAKLSAgICAyNTAsIDc1LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjYsIDI1MCwgNzYsIDI0MywgMjI1LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjUsIAotICAgIDIxMywgMjQxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjQsIDU4LCA1NCwgMTAyLCAyNTIsIDEyMywgNTgsIDU0LCAyMzAsIDIxMiwgCi0gICAgMjUyLCAxMjIsIDI0NywgMTUwLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjEsIDU4LCA1NCwgMTAyLCAyNTIsIDEyMCwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTE4LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTcsIDU4LCA1NCwgMTAyLCAyNTIsIDExNiwgNTgsIDU0LCAxMDIsIAotICAgIDI1MiwgMTE1LCAyNDgsIDEwNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTE0LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTMsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDExMiwgNTgsIDU0LCAxMDIsIDI1MiwgMTExLCA1OCwgNTQsIDEwMiwgMjUyLCAxMTAsIDU4LCA1NCwgMTAyLCAKLSAgICAyMTQsIDE2MywgMjUyLCAxOTUsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNjIsIDU4LCA1NCwgMTAyLCAyMTQsIAotICAgIDE2MywgMjUyLCAxNjEsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNjAsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgCi0gICAgMjUyLCAxNTksIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTgsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAKLSAgICAxNTcsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTYsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTUsIAotICAgIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTQsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTMsIDU4LCA1NCwgCi0gICAgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTIsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNTEsIDU4LCA1NCwgMTAyLCAKLSAgICAyMTQsIDE2MywgMjUyLCAxNTAsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDksIDU4LCA1NCwgMTAyLCAyMTQsIAotICAgIDE2MywgMjUyLCAxNDgsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDcsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgCi0gICAgMjUyLCAxNDYsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDUsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAKLSAgICAxNDQsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDMsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDEsIAotICAgIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxNDAsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxMzgsIDU4LCA1NCwgCi0gICAgMTAyLCAyMTQsIDE2MywgMjUyLCAxMzcsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxMzYsIDU4LCA1NCwgMTAyLCAKLSAgICAyMTQsIDE2MywgMjUyLCAxMzUsIDU4LCA1NCwgMTAyLCAyMTQsIDE2MywgMjUyLCAxMTksIDU4LCA1NCwgMTAyLCAyMTQsIAotICAgIDE2MywgMjUyLCAxMDksIDI1NCwgMTQxLCAyMTMsIDE5NiwgMjIxLCA1OCwgMjMyLCAyNDIsIDI1NCwgMTQxLCAyMTMsIDE5NiwgCi0gICAgMjIxLCA1OCwgMjQ3LCA3NCwgMjU0LCAxNDEsIDI1MCwgNjYsIDc3LCAyNTQsIDE0MSwgNTAsIDExNiwgMjU0LCAxNDEsIDUwLCAKLSAgICAxMDksIDI1NCwgMTQxLCA1MCwgMTY2LCAyNTQsIDE0MSwgNTAsIDE2MywgMjU0LCAxNDEsIDUwLCAxODAsIDI1NCwgMTQxLCAKLSAgICA1MCwgMTg5LCAyNTQsIDE0MSwgNTAsIDE5OCwgMjU0LCAxNDEsIDUwLCAxOTUsIDI1NCwgMTQxLCA1MCwgMjAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDIxNywgMjAwLCAyNTQsIDE0MSwgNTAsIDIxNiwgMzgsIDI1NCwgMTQxLCA1MCwgMjE3LCAxMTUsIDI1NCwgCi0gICAgMTQxLCA1MCwgMjQzLCAyNDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA4MywgMjU0LCAxNDEsIDUwLCAyMjAsIDM5LCAyNTQsIAotICAgIDE0MSwgNTAsIDIyMSwgMzcsIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNDEsIDI1NCwgMTQxLCA1MCwgMjI5LCAyNiwgMjU0LCAKLSAgICAxNDEsIDUwLCAxMjIsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDExNywgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMTMzLCAKLSAgICAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDIzNywgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA1MCwgMjQwLCAKLSAgICAyMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA1MywgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCA0MywgMjQwLCAyMDAsIAotICAgIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNTAsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMzEsIDI0MCwgMjAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDEyMiwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMTE3LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAxMzMsIAotICAgIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0MywgMjM3LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDQsIDUwLCAyMTcsIAotICAgIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjAsIDUzLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjEsIDQzLCAyMTcsIDEwMCwgCi0gICAgMjU0LCAxNDEsIDUwLCAyNDUsIDE1MCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjI5LCAzMSwgMjE3LCAxMDAsIDI1NCwgCi0gICAgMTQxLCA1MCwgMjE3LCAyMDEsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIxNiwgMzksIDIxNywgMTAwLCAyNTQsIDE0MSwgCi0gICAgNTAsIDIxNywgMTE2LCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDI0MSwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgCi0gICAgMjQ0LCA4NCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA0MCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCAKLSAgICAzOCwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNDIsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMjcsIAotICAgIDIxNywgMTAwLCAyNTQsIDE0MSwgMjEzLCAyNTUsIDI1MiwgNDgsIDIxNSwgMTQ0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDI0NCwgCi0gICAgNjEsIDIxOSwgNCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyMjIsIDk1LCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjE3LCAKLSAgICAxMjIsIDIxOSwgNCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNDMsIDIzMCwgMjE5LCA0LCAyNTQsIDE0MSwgMjQ2LCAzNiwgCi0gICAgMjMxLCAxNTUsIDI0NCwgNjEsIDIxOSwgNCwgMjU0LCAxNDEsIDIzMiwgMjI4LCAyMzEsIDE1NSwgMjQ0LCA2MSwgMjE5LCA0LCAKLSAgICAyNTQsIDE0MSwgMjMxLCAxNTUsIDIyMiwgOTUsIDIxOSwgNCwgMjU0LCAxNDEsIDIzMSwgMTU1LCAyMTcsIDEyMiwgMjE5LCAKLSAgICA0LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDIyNCwgMTY2LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIAotICAgIDI0MiwgOSwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyNDYsIDU0LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAKLSAgICAxODAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgODMsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIAotICAgIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTcsIDEwMCwgMjUsIDI1NCwgMTY3LCAyNTMsIAotICAgIDExMCwgMjQ0LCA4NCwgMjE3LCAxMDAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxOCwgMTgsIDI1LCAKLSAgICAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDg0LCAKLSAgICAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAxMjIsIDI0MCwgMjAxLCAyMTgsIDE4LCAyNSwgMjU0LCAxNjcsIAotICAgIDI1MywgMTEwLCAyNDQsIDUwLCAyNDAsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMTcsIAotICAgIDEwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE3LCAxMDEsIDIxOCwgMTgsIDI1LCAKLSAgICAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAKLSAgICAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDg0LCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgCi0gICAgMTEwLCAxMjIsIDI0MCwgMjAxLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyNDAsIDIwMSwgCi0gICAgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAKLSAgICAyNTMsIDExMCwgMjE3LCAyMDEsIDIxNywgMTAxLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDg0LCAKLSAgICAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjE3LCAyMDEsIDIzMCwgMjM0LCAyNSwgMjU0LCAKLSAgICAxNjcsIDI0MSwgMTg5LCAxMjIsIDIyNSwgMTY0LCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMTYsIDI1LCAyNTQsIDE2NywgCi0gICAgMjQxLCAxODYsIDExNiwgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAxMDksIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDEwOSwgCi0gICAgMjUsIDI1NCwgMTY3LCAyNDksIDgsIDExNywgMjQ2LCA1MywgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAxMTcsIDI0NiwgNTMsIAotICAgIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDE4MCwgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMjE3LCAyMDAsIDI1LCAyNTQsIAotICAgIDE2NywgMjE2LCAxNjEsIDIxNywgMjAxLCAyNTQsIDUwLCAxNywgMjUsIDI1NCwgMTY3LCAyNDEsIDE4NiwgMjE3LCAyMDAsIAotICAgIDI1LCAyNTQsIDE2NywgMjMxLCAxMDgsIDIxNywgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAyMTcsIDIwMCwgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjE3LCAxMTUsIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDI0NCwgODMsIDI1LCAyNTQsIAotICAgIDE2NywgMjE2LCAxNjEsIDI0NCwgODQsIDI1NCwgNTAsIDE3LCAyNSwgMjU0LCAxNjcsIDI0MSwgMTg2LCAyNDQsIDgzLCAyNSwgCi0gICAgMjU0LCAxNjcsIDIxNywgMTM0LCAyNDQsIDgzLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMjIsIDI0MCwgMjAwLCAyNSwgCi0gICAgMjU0LCAxNjcsIDIxNywgMTM0LCAxMzMsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI0NSwgNjcsIDI0NCwgNTAsIDI0MCwgCi0gICAgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgCi0gICAgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjUwLCAxNTksIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIzMCwgNCwgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDEyMiwgMjE3LCAxMDAsIAotICAgIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIDI0NCwgNTAsIDIxNywgMTAwLCAyNSwgMjU0LCAxNjcsIDI0OCwgOCwgMjQ0LCA1MCwgCi0gICAgMjMwLCAyMzQsIDI1LCAyNTQsIDE2NywgMjE5LCA1OCwgMjQ0LCA4NCwgMjMwLCAyMzQsIDI1LCAxMjIsIDE1MSwgNTIsIDI1LCAKLSAgICAxMjIsIDE1MSwgNSwgMjU0LCA1MCwgMTcsIDI1LCAxMTcsIDIxNywgMTIwLCA1MiwgMjUsIDEzMywgMjI0LCAxNjUsIDUyLCAKLSAgICAyNSwgMjEzLCAzNiwgNTIsIDI1LCAyMTgsIDE5LCA1MiwgMjUsIDI0NiwgNTUsIDUyLCAyNSwgMjI3LCAxMTAsIDUyLCAyNSwgCi0gICAgMTE3LCAyMjcsIDEwOSwgNTIsIDI1LCAxMzMsIDIyNywgMTA5LCA1MiwgMjUsIDI0MywgMjM3LCAyMjcsIDEwOSwgNTIsIDI1LCAKLSAgICAyNDQsIDUwLCAyMjcsIDEwOSwgNTIsIDI1LCAyMzEsIDEwMiwgNTIsIDI1LCAyMzMsIDE3OSwgMjUyLCA0OCwgNTIsIDI1LCAKLSAgICAyMzIsIDIyMywgNTIsIDI1LCAyMjYsIDI1NSwgNTIsIDI1LCAyMTMsIDE0NywgNTIsIDI1LCAyNTMsIDE1OCwgNTIsIDI1LCAKLSAgICAyNTMsIDE3MSwgNTIsIDI1LCAyNDIsIDEyMCwgNTIsIDI1LCAyMTYsIDE0NCwgMjUyLCA0OCwgNTIsIDI1LCAyMTIsIDgwLCAKLSAgICA1MiwgMjIzLCAxMDAsIDIyMSwgMzQsIDUyLCAyMjMsIDEwMCwgMjE1LCAxNTUsIDUyLCAyMjMsIDEwMCwgMjIxLCA2MiwgNTIsIAotICAgIDIyMywgMTAwLCAyMjEsIDMyLCA1MiwgMjIzLCAxMDAsIDI0NywgMTY1LCAyMjEsIDMyLCA1MiwgMjIzLCAxMDAsIDIyMCwgCi0gICAgOTQsIDUyLCAyMjMsIDEwMCwgMjQ4LCA0LCA1MiwgMjIzLCAxMDAsIDIyNCwgMTUxLCA1MiwgMjIzLCAxMDAsIDIyMSwgNTAsIAotICAgIDUyLCAyMjMsIDEwMCwgMjQ2LCAxNSwgNTIsIDIyMywgMTAwLCAyNTMsIDE1MywgNTIsIDIyMywgMTAwLCAyNTAsIDEwNSwgCi0gICAgNTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIDg4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI1LCAxNTgsIDI0MSwgCi0gICAgMjE5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE3LCAyNTIsIDI0MSwgMjE5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAKLSAgICAxNzksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTAsIDM4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjEzLCAyMDgsIDIyNiwgCi0gICAgMTksIDI0NywgMTQzLCA1LCAyNDEsIDE5NSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0MywgNjEsIDIyNiwgMTksIDI0NywgCi0gICAgMTQzLCA1LCAyMTcsIDcwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgNjgsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIDk1LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjIwLCAyMDksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDksIDE4MSwgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDIzMSwgMjQ3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjMxLCAxOTksIDIyNiwgMTksIDI0NywgMTQzLCAKLSAgICA1LCAyMjIsIDEzNCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIzMywgOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgCi0gICAgMTEzLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAxNjMsIDIyNSwgMTY3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ3LCAKLSAgICA4NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0OSwgMTYxLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjIwLCAxNSwgMjI2LCAKLSAgICAxOSwgMjQ3LCAxNDMsIDUsIDI0OSwgMTYyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCAyMzksIDIyNiwgMTksIDI0NywgCi0gICAgMTQzLCA1LCAyMjAsIDE5NiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0MCwgMjM1LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgCi0gICAgMjQxLCAxNjMsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIDQxLCAyMzMsIDYwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgCi0gICAgMjUwLCAxNTYsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjQsIDQ1LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ1LCAxODYsIAotICAgIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDYsIDYxLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE2LCA2OSwgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDI1MSwgMjQyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI1LCAxNjgsIDIxNiwgMTkzLCAyMjYsIDE5LCAKLSAgICAyNDcsIDE0MywgNSwgMjE0LCAxNDAsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIDE0NiwgMjI2LCAxOSwgMjQ3LCAxNDMsIAotICAgIDUsIDIyMywgOTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMzIsIDI1MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNiwgCi0gICAgMjM5LCAyNTIsIDEwMSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NCwgMTcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDIsIAotICAgIDExNSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxOSwgNTksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAzLCAyNTMsIDg0LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjE0LCAxNiwgMjUyLCA2NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDM3LCAyMjcsIAotICAgIDExMiwgOTAsIDIzMiwgMTIwLCAxLCA2MSwgMjMyLCAxMjAsIDEsIDc0LCAyMzIsIDEyMCwgMSwgMjUzLCA3NCwgMjMyLCAKLSAgICAxMjAsIDEsIDI1MSwgMTk2LCAyMzIsIDEyMCwgMSwgMjQzLCAxNzcsIDIzMiwgMTIwLCAxLCAyNDksIDMsIDIzMiwgMTIwLCAKLSAgICAxLCA3MiwgMjMyLCAxMjAsIDEsIDIxNCwgODIsIDIzMiwgMTIwLCAxLCAyMTIsIDE1MiwgMjMyLCAxMjAsIDEsIDIxNywgCi0gICAgMTYzLCAyMzIsIDEyMCwgMSwgMjM1LCAxNDIsIDIzMiwgMTIwLCAxLCAyMzUsIDI3LCAyMzIsIDEyMCwgMSwgMjI0LCAyNDAsIAotICAgIDIzMiwgMTIwLCAxLCAxNTAsIDIzMiwgMTIwLCAxLCAxODMsIDIzMiwgMTIwLCAxLCAyMDQsIDIzMiwgMTIwLCAxLCAyMzAsIAotICAgIDIzNSwgMjMyLCAxMjAsIDEsIDIyOCwgMTk5LCAyMzIsIDEyMCwgMSwgNjksIDIzMiwgMTIwLCAxLCAyMjYsIDIyOSwgMjMyLCAKLSAgICAxMjAsIDEsIDIzNCwgNTYsIDIzMiwgMTIwLCAxLCAxNDksIDIzMiwgMTIwLCAxLCAxOTcsIDIzMiwgMTIwLCAxLCAyMTgsIAotICAgIDk5LCAyMzIsIDEyMCwgMSwgMjE2LCAxMTgsIDIzMiwgMTIwLCAxLCAyNTQsIDMyLCAyMzIsIDEyMCwgMSwgMjQ1LCAxMDgsIAotICAgIDIzMiwgMTIwLCAxLCAyNDIsIDQxLCAyMzIsIDEyMCwgMSwgMjEzLCAxNjYsIDI1MCwgMTY5LCAxLCA2MSwgMjUwLCAxNjksIAotICAgIDEsIDIyNiwgMjE1LCAyNTAsIDE2OSwgMSwgMjQ5LCAzLCAyNTAsIDE2OSwgMSwgMTUwLCAyNTAsIDE2OSwgMSwgMjE1LCA5MCwgCi0gICAgMjUwLCAxNjksIDEsIDE0OSwgMjUwLCAxNjksIDEsIDIzMywgODYsIDI1MCwgMTY5LCAxLCAyNTQsIDIzNCwgMjUwLCAxNjksIAotICAgIDEsIDIyNCwgMjQwLCAyNTAsIDE2OSwgMSwgMjUzLCA3NCwgMjUwLCAxNjksIDEsIDE4MywgMjUwLCAxNjksIDEsIDc1LCAKLSAgICAyNTAsIDE2OSwgMSwgMjQ4LCAxNjYsIDI1MCwgMTY5LCAxLCAyMTgsIDk5LCAyNTAsIDE2OSwgMSwgMjIxLCAyNiwgMjUwLCAKLSAgICAxNjksIDEsIDIyMSwgMjUsIDI1MCwgMTY5LCAxLCAxOTcsIDI1MCwgMTY5LCAxLCAyNTAsIDI1MSwgMjUwLCAxNjksIDEsIAotICAgIDY5LCAyNTAsIDE2OSwgMSwgMjI4LCAxOTksIDI1MCwgMTY5LCAxLCAyMTMsIDE2NiwgMjUwLCAxNjksIDEsIDIwNCwgMjUwLCAKLSAgICAxNjksIDEsIDIxNiwgMTE3LCAyNTAsIDE2OSwgMSwgMjI2LCAyMjksIDI1MCwgMTY5LCAxLCAyMTksIDE1OCwgMjUwLCAxNjksIAotICAgIDEsIDcyLCAyNTAsIDE2OSwgMSwgNzQsIDI1MCwgMTY5LCAxLCAyMTUsIDg3LCAyNTAsIDE2OSwgMSwgMjM1LCAyNywgMjUwLCAKLSAgICAxNjksIDEsIDIzNSwgMTgsIDI1MCwgMTY5LCAxLCAyMjksIDIzMCwgMjUwLCAxNjksIDEsIDIxNSwgOTIsIDI1MCwgMTY5LCAKLSAgICAxLCAyNDMsIDE3NywgMjUwLCAxNjksIDEsIDI0MywgMTEyLCAyNTAsIDE2OSwgMSwgMjE5LCAxMDcsIDI1MCwgMTY5LCAxLCAKLSAgICAyMTksIDEwNiwgMjUwLCAxNjksIDEsIDIyOSwgMTYxLCAyNTAsIDE2OSwgMSwgMjM2LCAyOCwgMjUwLCAxNjksIDEsIDI1MCwgCi0gICAgMjUwLCAyNTAsIDE2OSwgMSwgMjE2LCAxMTgsIDI1MCwgMTY5LCAxLCAyMTUsIDg5LCAyNTAsIDE2OSwgMSwgMjIzLCA4MiwgCi0gICAgMjUwLCAxNjksIDEsIDIzMSwgMTkyLCAyNTAsIDE2OSwgMSwgMjMxLCAxOTEsIDI1MCwgMTY5LCAxLCAyMzEsIDE5MCwgMjUwLCAKLSAgICAxNjksIDEsIDIzMSwgMTg5LCAyNTAsIDE2OSwgMSwgMjMzLCA4NSwgMjUwLCAxNjksIDEsIDI0NSwgMTkwLCAyNTAsIDE2OSwgCi0gICAgMSwgMjE1LCA4OCwgNTMsIDMyLCAxLCA2MSwgNTMsIDMyLCAxLCAyNTEsIDI1MSwgNTMsIDMyLCAxLCAyMzQsIDE4OCwgNTMsIAotICAgIDMyLCAxLCAyNDgsIDQxLCA1MywgMzIsIDEsIDc0LCA1MywgMzIsIDEsIDIxNCwgMjMyLCA1MywgMzIsIDEsIDIxMiwgODcsIAotICAgIDUzLCAzMiwgMSwgMjQxLCAyMjIsIDUzLCAzMiwgMSwgMjE3LCAxNDgsIDUzLCAzMiwgMSwgNzIsIDUzLCAzMiwgMSwgMTgxLCAKLSAgICA1MywgMzIsIDEsIDI0NSwgMTMxLCA1MywgMzIsIDEsIDI0NSwgMTE3LCA1MywgMzIsIDEsIDI0NSwgMTA4LCA1MywgMzIsIDEsIAotICAgIDI0NSwgNDAsIDUzLCAzMiwgMSwgNzUsIDUzLCAzMiwgMSwgMjI2LCA5NiwgNTMsIDMyLCAxLCAyMjAsIDI0MywgNTMsIDMyLCAKLSAgICAxLCAyMzMsIDIzOCwgNTMsIDMyLCAxLCAyNDUsIDU1LCA1MywgMzIsIDEsIDI0NSwgNDUsIDUzLCAzMiwgMSwgMjE3LCAyMjksIAotICAgIDUzLCAzMiwgMSwgNjksIDUzLCAzMiwgMSwgMjQ1LCAxMzQsIDUzLCAzMiwgMSwgMjI2LCAxMiwgNTMsIDMyLCAxLCAyMzQsIAotICAgIDEyNSwgNTMsIDMyLCAxLCAyNDUsIDE1OSwgNTMsIDMyLCAxLCAyNDUsIDQ3LCA1MywgMzIsIDEsIDI1MCwgNjcsIDUzLCAzMiwgCi0gICAgMSwgMjM2LCAyOCwgNTMsIDMyLCAxLCAyMTUsIDkyLCA1MywgMzIsIDIyOCwgNTQsIDExNiwgNTMsIDMyLCAyMjgsIDU0LCAKLSAgICAxODAsIDUzLCAzMiwgMjI4LCA1NCwgMjE3LCAyMDAsIDUzLCAzMiwgMjI4LCA1NCwgMjQ0LCA4MywgMjQyLCAxMjksIDEsIAotICAgIDI1NCwgMTExLCAyNDIsIDEyOSwgMSwgMjUyLCA4MiwgMjQyLCAxMjksIDEsIDI0MiwgMTg3LCAyNDIsIDEyOSwgMSwgMjQ4LCAKLSAgICAxNDgsIDI0MiwgMTI5LCAxLCAyNTQsIDEwNywgMjQyLCAxMjksIDEsIDIyNCwgMjIzLCAyNDIsIDEyOSwgMSwgMjM1LCAxNTMsIAotICAgIDI0MiwgMTI5LCAxLCAyNDIsIDIwLCAyNDIsIDEyOSwgMSwgMjE3LCAxMTEsIDI0MiwgMTI5LCAxLCAyNDUsIDE0MCwgMjQyLCAKLSAgICAxMjksIDEsIDIzMywgMjExLCAyNDIsIDEyOSwgMSwgMjMzLCAxMzYsIDI0MiwgMTI5LCAxLCAyMzEsIDI0MiwgMjQyLCAxMjksIAotICAgIDEsIDIzMCwgNiwgMjQyLCAxMjksIDEsIDIzNSwgMTIwLCAyNDIsIDEyOSwgMSwgMjE1LCAxMDcsIDI0MiwgMTI5LCAxLCAKLSAgICAyMjYsIDE5NiwgMjQyLCAxMjksIDEsIDIyOSwgMjYsIDI0MiwgMTI5LCAxLCAyMjQsIDU2LCAyNDIsIDEyOSwgMSwgMjIyLCAKLSAgICAxMzYsIDI0MiwgMTI5LCAxLCAyMTcsIDIxMiwgMjQyLCAxMjksIDEsIDIxMywgMjE5LCAyNDIsIDEyOSwgMSwgMjQ0LCAxNDYsIAotICAgIDI0MiwgMTI5LCAxLCAyMzYsIDMyLCAyNDIsIDEyOSwgMSwgMjQwLCAxOTEsIDI0MiwgMTI5LCAxLCAyMjcsIDcsIDI0MiwgCi0gICAgMTI5LCAxLCAyMjksIDMxLCAyNDAsIDIwMCwgMjE1LCAxNzksIDEsIDI1NCwgNTYsIDIxNSwgMTc5LCAxLCAyNTEsIDIwMywgCi0gICAgMjE1LCAxNzksIDEsIDI0MywgODQsIDIxNSwgMTc5LCAxLCAyMzQsIDEzOCwgMjE1LCAxNzksIDEsIDI0OCwgNSwgMjE1LCAKLSAgICAxNzksIDEsIDI0MSwgNTQsIDIxNSwgMTc5LCAxLCAyMTMsIDIxNCwgMjE1LCAxNzksIDEsIDIxMiwgNzgsIDIxNSwgMTc5LCAKLSAgICAxLCAyNDAsIDIyOCwgMjE1LCAxNzksIDEsIDIxNywgMTgzLCAyMTUsIDE3OSwgMSwgMjEyLCAyMjQsIDIxNSwgMTc5LCAxLCAKLSAgICAyMzQsIDI1NCwgMjE1LCAxNzksIDEsIDIyMCwgMjAwLCAyMTUsIDE3OSwgMSwgMjMzLCAxMjIsIDIxNSwgMTc5LCAxLCAyMzEsIAotICAgIDEyOSwgMjE1LCAxNzksIDEsIDI0NywgMjI5LCAyMTUsIDE3OSwgMSwgMjI4LCA1MCwgMjE1LCAxNzksIDEsIDIxMiwgOCwgCi0gICAgMjE1LCAxNzksIDEsIDIyMiwgMTYzLCAyMTUsIDE3OSwgMSwgMjU0LCAxMDMsIDIxNSwgMTc5LCAxLCAyMjUsIDM1LCAyMTUsIAotICAgIDE3OSwgMSwgMjIyLCAxOTQsIDIxNSwgMTc5LCAxLCAyMjQsIDE4MCwgMjE1LCAxNzksIDEsIDIyNCwgMzYsIDIxNSwgMTc5LCAKLSAgICAxLCAyMTcsIDE1MiwgMjE1LCAxNzksIDEsIDI0MiwgMjIwLCAyMTUsIDE3OSwgMSwgMTA4LCAyMTUsIDE3OSwgMSwgNzIsIAotICAgIDIxNSwgMTc5LCAxLCA2OSwgMjE1LCAxNzksIDEsIDIxOSwgMTE3LCAyMTUsIDE3OSwgMjEzLCAxOTYsIDI0NywgMTI0LCA1MywgCi0gICAgMjI2LCA0NSwgNSwgNjEsIDUzLCAyMjYsIDQ1LCA1LCA3MiwgNTMsIDIyNiwgNDUsIDUsIDY5LCA1MywgMjI2LCA0NSwgNSwgCi0gICAgMTgxLCA1MywgMjI2LCA0NSwgNSwgMjMzLCAyMzgsIDUzLCAyMjYsIDQ1LCA1LCAyNDMsIDExMCwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDI0MiwgOTIsIDUzLCAyMjYsIDQ1LCA1LCAyMTMsIDE1MywgNTMsIDIyNiwgNDUsIDUsIDI1MCwgMjE5LCA1MywgMjI2LCA0NSwgCi0gICAgNSwgMjM1LCAxMzksIDUzLCAyMjYsIDQ1LCA1LCAyMzUsIDExMCwgNTMsIDIyNiwgNDUsIDUsIDIxOCwgNTIsIDUzLCAyMjYsIAotICAgIDQ1LCA1LCAyMTYsIDgyLCA1MywgMjI2LCA0NSwgNSwgMjQ4LCAxNjQsIDUzLCAyMjYsIDQ1LCA1LCAyNDcsIDIxMSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDI0NiwgMzMsIDUzLCAyMjYsIDQ1LCA1LCAyMTcsIDE2MSwgNTMsIDIyNiwgNDUsIDUsIDE5MywgNTMsIAotICAgIDIyNiwgNDUsIDUsIDI1MiwgMTA3LCA1MywgMjI2LCA0NSwgNSwgMjQ0LCAxNjQsIDUzLCAyMjYsIDQ1LCA1LCAyMDUsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMjgsIDkyLCA1MywgMjI2LCA0NSwgNSwgMTg4LCA1MywgMjI2LCA0NSwgNSwgMjMxLCA0MiwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIzMCwgMTcyLCA1MywgMjI2LCA0NSwgNSwgMTg2LCA1MywgMjI2LCA0NSwgNSwgMjE1LCAxLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjE0LCAxNTQsIDUzLCAyMjYsIDQ1LCA1LCAyMDMsIDUzLCAyMjYsIDQ1LCA1LCAyMjMsIDUxLCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjMzLCAxNTcsIDUzLCAyMjYsIDQ1LCA1LCAyMjIsIDIwMiwgNTMsIDIyNiwgNDUsIDUsIDIxMiwgMTA5LCAKLSAgICA1MywgMjI2LCA0NSwgNSwgMjIxLCAyNCwgNTMsIDIyNiwgNDUsIDUsIDIxOSwgMTU3LCA1MywgMjI2LCA0NSwgNSwgMTU5LCAKLSAgICA1MywgMjI2LCA0NSwgNSwgMjUzLCAxMDIsIDUzLCAyMjYsIDQ1LCA1LCAyNTMsIDEwMSwgNTMsIDIyNiwgNDUsIDUsIDI1MywgCi0gICAgMTAwLCA1MywgMjI2LCA0NSwgNSwgMjEzLCAxMzAsIDUzLCAyMjYsIDQ1LCA1LCAyNDgsIDE0NSwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDI0OCwgMTQ0LCA1MywgMjI2LCA0NSwgNSwgMjUyLCA4OCwgNTMsIDIyNiwgNDUsIDUsIDI1MSwgMTQsIDUzLCAyMjYsIDQ1LCAKLSAgICAyMTMsIDE5NiwgMjQ3LCAxMjQsIDUzLCAyMjYsIDQ1LCA1MCwgMTE2LCA1MywgMjI2LCA0NSwgNTAsIDEwOSwgNTMsIDIyNiwgCi0gICAgNDUsIDUwLCAyMTcsIDIwMCwgNTMsIDIyNiwgNDUsIDUwLCAyMTYsIDM4LCA1MywgMjI2LCA0NSwgNTAsIDI0MCwgMjAwLCAKLSAgICAxNzEsIDYsIDEsIDE4NCwgNzIsIDE3MSwgNiwgMSwgMTg0LCA3NCwgMTcxLCA2LCAxLCAxODQsIDYxLCAxNzEsIDYsIDEsIAotICAgIDE4NCwgMjU0LCAxMTQsIDE3MSwgNiwgMSwgMTg0LCA3NSwgMTcxLCA2LCAxLCAxODQsIDIyNywgNDksIDE3MSwgNiwgMSwgCi0gICAgMjIwLCAxNzUsIDcyLCAxNzEsIDYsIDEsIDIyMCwgMTc1LCA3NCwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNjEsIDE3MSwgNiwgCi0gICAgMSwgMjIwLCAxNzUsIDI1NCwgMTE0LCAxNzEsIDYsIDEsIDIyMCwgMTc1LCA3NSwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgMjI3LCAKLSAgICA0OSwgMTcxLCA2LCAxLCAyNTMsIDgzLCAxNzEsIDYsIDEsIDIyNiwgMjQwLCAxNzEsIDYsIDEsIDIxMywgMTgzLCAxNzEsIDYsIAotICAgIDEsIDIxMywgMzUsIDE3MSwgNiwgMSwgMjQyLCA0MSwgMTcxLCA2LCAxLCAyMjYsIDg2LCAxNzEsIDYsIDEsIDI1MSwgMjQyLCAKLSAgICAxNzEsIDYsIDEsIDIxNywgMjE5LCAxNzEsIDYsIDEsIDI0OCwgMjgsIDE3MSwgNiwgMSwgMjUwLCA2NCwgMTcxLCA2LCAxLCAKLSAgICAyMzUsIDEyNSwgMTcxLCA2LCAxLCAyMzQsIDE5NSwgMTcxLCA2LCAxLCAyNDMsIDU5LCAxNzEsIDYsIDEsIDI0NSwgMTU5LCAKLSAgICAxNzEsIDYsIDEsIDIxNCwgMjI3LCAxNzEsIDYsIDEsIDI0NSwgMjUsIDE3MSwgNiwgMSwgMjE3LCAxNDcsIDE3MSwgNiwgMSwgCi0gICAgMjQ1LCA0NSwgMTcxLCA2LCAxLCAyMTIsIDg1LCAxNzEsIDYsIDEsIDI0NSwgNDAsIDE3MSwgNiwgMSwgMjEyLCA2NiwgMTcxLCAKLSAgICA2LCAxLCAyNDUsIDU1LCAxNzEsIDYsIDEsIDI0NSwgMTMxLCAxNzEsIDYsIDEsIDI0NSwgMTE3LCAxNzEsIDYsIDEsIDI0NSwgCi0gICAgMTA4LCAxNzEsIDYsIDEsIDI0NSwgOTYsIDE3MSwgNiwgMSwgMjI3LCA4NSwgMTcxLCA2LCAxLCAyNDUsIDUsIDE3MSwgMywgCi0gICAgMSwgMTg0LCA3MiwgMTcxLCAzLCAxLCAxODQsIDc0LCAxNzEsIDMsIDEsIDE4NCwgNjEsIDE3MSwgMywgMSwgMTg0LCAyNTQsIAotICAgIDExNCwgMTcxLCAzLCAxLCAxODQsIDc1LCAxNzEsIDMsIDEsIDE4NCwgMjI3LCA0OSwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgCi0gICAgNzIsIDE3MSwgMywgMSwgMjIwLCAxNzUsIDc0LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA2MSwgMTcxLCAzLCAxLCAyMjAsIAotICAgIDE3NSwgMjU0LCAxMTQsIDE3MSwgMywgMSwgMjIwLCAxNzUsIDc1LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCAyMjcsIDQ5LCAKLSAgICAxNzEsIDMsIDEsIDI1MywgODMsIDE3MSwgMywgMSwgMjI2LCAyNDAsIDE3MSwgMywgMSwgMjEzLCAxODMsIDE3MSwgMywgMSwgCi0gICAgMjEzLCAzNSwgMTcxLCAzLCAxLCAyNDIsIDQxLCAxNzEsIDMsIDEsIDIyNiwgODYsIDE3MSwgMywgMSwgMjUxLCAyNDIsIAotICAgIDE3MSwgMywgMSwgMjE3LCAyMTksIDE3MSwgMywgMSwgMjQ4LCAyOCwgMTcxLCAzLCAxLCAyNTAsIDY0LCAxNzEsIDMsIDEsIAotICAgIDIzNSwgMTI1LCAxNzEsIDMsIDEsIDIzNCwgMTk1LCAxNzEsIDMsIDEsIDI0MywgNTksIDE3MSwgMywgMSwgMjQ1LCAxNTksIAotICAgIDE3MSwgMywgMSwgMjE0LCAyMjcsIDE3MSwgMywgMSwgMjQ1LCAyNSwgMTcxLCAzLCAxLCAyMTcsIDE0NywgMTcxLCAzLCAxLCAKLSAgICAyNDUsIDQ1LCAxNzEsIDMsIDEsIDIxMiwgODUsIDE3MSwgMywgMSwgMjQ1LCA0MCwgMTcxLCAzLCAxLCAyMTIsIDY2LCAxNzEsIAotICAgIDMsIDEsIDI0NSwgNTUsIDE3MSwgMywgMSwgMjQ1LCAxMzEsIDE3MSwgMywgMSwgMjQ1LCAxMTcsIDE3MSwgMywgMSwgMjQ1LCAKLSAgICAxMDgsIDE3MSwgMywgMSwgMjQ1LCA5NiwgMTcxLCAzLCAxLCAyMjcsIDg1LCAxNzEsIDMsIDEsIDI0NSwgNSwgMjIwLCAyNDksIAotICAgIDEsIDIyNiwgODQsIDIyMCwgMjQ5LCAxLCAyMTYsIDIxOCwgMjIwLCAyNDksIDEsIDIzNCwgMTAwLCAyMjAsIDI0OSwgMSwgCi0gICAgMjQ0LCAxMTYsIDIyMCwgMjQ5LCAxLCAyMTcsIDEyNSwgMjIwLCAyNDksIDEsIDIxOSwgMjQyLCAyMjAsIDI0OSwgMSwgMjE4LCAKLSAgICAyMTQsIDIyMCwgMjQ5LCAxLCAyNDksIDI1NCwgMjIwLCAyNDksIDEsIDIxMywgMzcsIDIyMCwgMjQ5LCAxLCAyNDAsIDE5OSwgCi0gICAgMjIwLCAyNDksIDEsIDI1MSwgMTgzLCAyMjAsIDI0OSwgMSwgMjQ4LCA0MCwgMjIwLCAyNDksIDEsIDI0MywgOTYsIDIyMCwgCi0gICAgMjQ5LCAxLCAyMTQsIDEwNCwgMjIwLCAyNDksIDEsIDIxNywgMTI5LCAyMjAsIDI0OSwgMSwgMjEyLCAxNCwgMjIwLCAyNDksIAotICAgIDEsIDIzMSwgMTU0LCAyMjAsIDI0OSwgMSwgMjM1LCA1MiwgMjIwLCAyNDksIDEsIDIxMywgMjEyLCAyMjAsIDI0OSwgMSwgCi0gICAgMjQyLCAyOSwgMjIwLCAyNDksIDEsIDIzMiwgMTk1LCAyMjAsIDI0OSwgMSwgMjMxLCAyLCAyMjAsIDI0OSwgMSwgMjM2LCAKLSAgICAzNSwgMjIwLCAyNDksIDEsIDI0NSwgMTU4LCAyMjAsIDI0OSwgMSwgMjUzLCAxNDYsIDIyMCwgMjQ5LCAxLCAyNTQsIDE1MiwgCi0gICAgMjIwLCAyNDksIDEsIDIyNywgNjIsIDIyMCwgMjQ5LCAxLCAyMTMsIDE5OSwgMjIwLCAyNDksIDEsIDIyNiwgMjU0LCAyMjAsIAotICAgIDI0OSwgMSwgMjU0LCAxMTQsIDIyMCwgMjQ5LCAxLCAyMjMsIDEwOSwgMjIwLCAyNDksIDEsIDIyOCwgNTAsIDIyMCwgMjQ5LCAKLSAgICAxLCAyNDUsIDE3MywgMjIwLCAyNDksIDEsIDI1NCwgMTE5LCAyMjAsIDI0OSwgMSwgMjQwLCAxMDQsIDIyMCwgMjQ5LCAxLCAKLSAgICAyMTUsIDEzNCwgMjIwLCAyNDksIDEsIDIyNywgMTE4LCAyMjAsIDI0OSwgMSwgMjI3LCA0MiwgMjIwLCAyNDksIDEsIDIyNywgCi0gICAgODQsIDIyMCwgMjQ5LCAxLCAyNTMsIDg2LCAyMjAsIDI0OSwgMSwgMjUzLCAxODksIDIyMCwgMjQ5LCAxLCAyMjcsIDI0LCAKLSAgICAyMjAsIDI0OSwgMSwgMjU0LCAxMDAsIDIyMCwgMjQ5LCAxLCAyNDUsIDQ5LCAyMjAsIDI0OSwgMSwgMjUzLCAxNjgsIDIyMCwgCi0gICAgMjQ5LCAxLCAyNDUsIDE4MywgMjIwLCAyNDksIDEsIDI0MCwgMTEwLCAyMjAsIDI0OSwgMSwgMjEzLCA0LCAyMjcsIDksIDEsIAotICAgIDI1NCwgNzgsIDIyNywgOSwgMSwgMjUyLCAxMDcsIDIyNywgOSwgMSwgMjE4LCA1MiwgMjI3LCA5LCAxLCAyMzUsIDEzOSwgCi0gICAgMjI3LCA5LCAxLCAyMTMsIDE1MywgMjI3LCA5LCAxLCAyMzQsIDEzOCwgMjI3LCA5LCAxLCAyNDgsIDI3LCAyMjcsIDksIDEsIAotICAgIDIwMywgMjI3LCA5LCAxLCAyMjIsIDIwMiwgMjI3LCA5LCAxLCAyMjAsIDIwNiwgMjI3LCA5LCAxLCAyNDcsIDIzMiwgMjI3LCAKLSAgICA5LCAxLCAyNTAsIDE0OCwgMjI3LCA5LCAxLCAyNDMsIDExMCwgMjI3LCA5LCAxLCAyNDQsIDE2NCwgMjI3LCA5LCAxLCAyMjQsIAotICAgIDIzMCwgMjI3LCA5LCAxLCAyMzUsIDEzLCAyMjcsIDksIDEsIDIzMywgMTUyLCAyMjcsIDksIDEsIDIzMSwgMTMsIDIyNywgOSwgCi0gICAgMSwgMjI4LCAzNSwgMjI3LCA5LCAxLCAyMTQsIDE0LCAyMjcsIDksIDEsIDE1OSwgMjI3LCA5LCAxLCAxODYsIDIyNywgOSwgCi0gICAgMSwgNjEsIDIyNywgOSwgMSwgNzQsIDIyNywgOSwgMSwgNzIsIDIyNywgOSwgMSwgNzUsIDIyNywgOSwgMSwgNjksIDIyNywgCi0gICAgOSwgMSwgMjU0LCAyMzIsIDIyNywgOSwgMSwgMjQ1LCAxNjUsIDIyNywgOSwgMSwgMjI3LCA0OSwgMjI3LCA5LCAyMSwgMjEyLCAKLSAgICA3OSwgMjI3LCA5LCAyMSwgMTE2LCAyMjcsIDksIDIxLCAxMDksIDIyNywgOSwgMjEsIDE2NiwgMjI3LCA5LCAyMSwgMTYzLCAKLSAgICAyMjcsIDksIDIxLCAxODAsIDIyNywgOSwgMjEsIDE4OSwgMjI3LCA5LCAyMSwgMTk4LCAyMjcsIDksIDIxLCAxOTUsIDIyNywgCi0gICAgOSwgMjEsIDIwMCwgMjQ5LCAxMCwgNCwgNjEsIDI0OSwgMTAsIDQsIDc0LCAyNDksIDEwLCA0LCA3MiwgMjQ5LCAxMCwgNCwgCi0gICAgNzUsIDI0OSwgMTAsIDQsIDY5LCAyNDksIDEwLCA0LCAyMzUsIDEzOSwgMjQ5LCAxMCwgNCwgMjM1LCA3MSwgMjQ5LCAxMCwgCi0gICAgNCwgMTgxLCAyNDksIDEwLCA0LCAyMzQsIDE4OCwgMjQ5LCAxMCwgNCwgMjM0LCAxMDEsIDI0OSwgMTAsIDQsIDIzNCwgMzcsIAotICAgIDI0OSwgMTAsIDQsIDIzMywgMjM4LCAyNDksIDEwLCA0LCAyMzMsIDE1NywgMjQ5LCAxMCwgNCwgMjMzLCA4MiwgMjQ5LCAxMCwgCi0gICAgNCwgMjMzLCAxMywgMjQ5LCAxMCwgNCwgMjMyLCAyMDgsIDI0OSwgMTAsIDQsIDIzMiwgMTU2LCAyNDksIDEwLCA0LCAxODgsIAotICAgIDI0OSwgMTAsIDQsIDIzMSwgMTU2LCAyNDksIDEwLCA0LCAyMzEsIDQyLCAyNDksIDEwLCA0LCAyMzAsIDIzMSwgMjQ5LCAxMCwgCi0gICAgNCwgMjMwLCAxNzIsIDI0OSwgMTAsIDQsIDIwNSwgMjQ5LCAxMCwgNCwgMjI5LCAxODcsIDI0OSwgMTAsIDQsIDIyOSwgNjQsIAotICAgIDI0OSwgMTAsIDQsIDIyOCwgMTg1LCAyNDksIDEwLCA0LCAyMjgsIDkyLCAyNDksIDEwLCA0LCAxOTMsIDI0OSwgMTAsIDQsIAotICAgIDIyNiwgOTYsIDI0OSwgMTAsIDQsIDIyNSwgMjQwLCAyNDksIDEwLCA0LCAyMjUsIDE1MCwgMjQ5LCAxMCwgNCwgMjI1LCAzNSwgCi0gICAgMjQ5LCAxMCwgNCwgMjAzLCAyNDksIDEwLCA0LCAyMjQsIDIxLCAyNDksIDEwLCA0LCAyMjMsIDE4OCwgMjQ5LCAxMCwgNCwgCi0gICAgMjIzLCAxMTIsIDI0OSwgMTAsIDQsIDIyMywgNTEsIDI0OSwgMTAsIDQsIDIyMiwgMjAyLCAyNDksIDEwLCA0LCAyMjIsIAotICAgIDEwMCwgMjQ5LCAxMCwgNCwgMjIwLCAxMTcsIDI0OSwgMTAsIDQsIDIxOSwgMjQyLCAyNDksIDEwLCA0LCAyMTksIDI3LCAKLSAgICAyNDksIDEwLCA0LCAyMTgsIDUyLCAyNDksIDEwLCA0LCAyMTcsIDIyOSwgMjQ5LCAxMCwgNCwgMjE3LCA3MSwgMjQ5LCAxMCwgCi0gICAgNCwgMTA4LCAyNDksIDEwLCA0LCAyMTYsIDgyLCAyNDksIDEwLCA0LCAyMTQsIDQ5LCAyNDksIDEwLCA0LCAyMTQsIDYsIAotICAgIDI0OSwgMTAsIDQsIDIxMywgMjM1LCAyNDksIDEwLCA0LCAyMTMsIDIxNCwgMjQ5LCAxMCwgNCwgMjEzLCAxNTMsIDI0OSwgCi0gICAgMTAsIDQsIDIxMywgMTUwLCAyNDksIDEwLCA0LCAyMTIsIDEwOSwgMjQ5LCAxMCwgNCwgMjEyLCAxNiwgMjM1LCAyNTMsIAotICAgIDI1MywgMTk3LCAxLCAyNTQsIDc2LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDI1MSwgMjAyLCAyMzUsIDI1MywgMjUzLCAKLSAgICAxOTcsIDEsIDI0MiwgMTc3LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDI0OCwgMTMzLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIAotICAgIDI0MSwgMjIyLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxNCwgMTQsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjEyLCA5MCwgCi0gICAgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNDEsIDE4MCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTcsIDE3OSwgMjM1LCAKLSAgICAyNTMsIDI1MywgMTk3LCAxLCAyMTIsIDIyMywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMzQsIDIzMCwgMjM1LCAyNTMsIAotICAgIDI1MywgMTk3LCAxLCAyMzMsIDExNywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMzEsIDEyOSwgMjM1LCAyNTMsIDI1MywgCi0gICAgMTk3LCAxLCAyMjgsIDUwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyMiwgMTY0LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIAotICAgIDI1MywgNzgsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjI2LCA5NiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjIsIDE5MywgCi0gICAgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjQsIDE3OSwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjMsIDIxOSwgMjM1LCAKLSAgICAyNTMsIDI1MywgMTk3LCAxLCAyMjAsIDIwMCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTcsIDI0MywgMjM1LCAyNTMsIAotICAgIDI1MywgMTk3LCAyMjIsIDkyLCA1MiwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMTE2LCAyMzUsIDI1MywgMjUzLCAxOTcsIAotICAgIDUwLCAxMDksIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDE2NiwgMjM1LCAyNTMsIDI1MywgMTk3LCA1MCwgMjE3LCAyMDAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNiwgMzgsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDEyMiwgMjQwLCAyMDAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDEyMiwgMjE3LCAxMDAsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNywgMjAxLCAKLSAgICAyMTcsIDEwMCwgMjI1LCAyNTEsIDEsIDI1NCwgNzQsIDIyNSwgMjUxLCAxLCAyNTEsIDIwNSwgMjI1LCAyNTEsIDEsIDI0MywgCi0gICAgODUsIDIyNSwgMjUxLCAxLCAyNDgsIDcsIDIyNSwgMjUxLCAxLCAyNDEsIDIyMiwgMjI1LCAyNTEsIDEsIDIxNCwgMjEsIAotICAgIDIyNSwgMjUxLCAxLCAyMTIsIDEwMywgMjI1LCAyNTEsIDEsIDI0MSwgMTgyLCAyMjUsIDI1MSwgMSwgMjE3LCAxODMsIDIyNSwgCi0gICAgMjUxLCAxLCAyMTIsIDIyNCwgMjI1LCAyNTEsIDEsIDIzNCwgMjU0LCAyMjUsIDI1MSwgMSwgMjMzLCAxMjMsIDIyNSwgMjUxLCAKLSAgICAxLCAyMzEsIDEyOSwgMjI1LCAyNTEsIDEsIDIyOCwgNTAsIDIyNSwgMjUxLCAxLCAyMjEsIDY0LCAyMjUsIDI1MSwgMSwgCi0gICAgMjU0LCAxMDMsIDIyNSwgMjUxLCAxLCAyMjYsIDk2LCAyMjUsIDI1MSwgMSwgMjIyLCAxOTQsIDIyNSwgMjUxLCAxLCAyMjQsIAotICAgIDE4NCwgMjI1LCAyNTEsIDEsIDIyMywgOTEsIDIyNSwgMjUxLCAxLCAyMjAsIDIwMCwgMjI1LCAyNTEsIDEsIDIxNywgMjQ4LCAKLSAgICAyMjUsIDI1MSwgNTAsIDExNiwgMjI1LCAyNTEsIDUwLCAyMTcsIDIwMCwgMjI1LCAyNTEsIDUwLCAyMTYsIDM4LCAyMjUsIAotICAgIDI1MSwgNTAsIDEyMiwgMjQwLCAyMDAsIDIyNSwgMjUxLCA1MCwgMTA5LCAyMjUsIDI1MSwgNTAsIDE2NiwgMjI1LCAyNTEsIAotICAgIDIxMywgMTk2LCAyMjEsIDU3LCAyMzIsIDExOSwgMSwgNjEsIDIzMiwgMTE5LCAxLCAyNTMsIDc0LCAyMzIsIDExOSwgMSwgCi0gICAgMjQzLCAxNzcsIDIzMiwgMTE5LCAxLCAyNDksIDMsIDIzMiwgMTE5LCAxLCA3NCwgMjMyLCAxMTksIDEsIDIxNSwgNzksIAotICAgIDIzMiwgMTE5LCAxLCA3MiwgMjMyLCAxMTksIDEsIDIxMywgMTA1LCAyMzIsIDExOSwgMSwgMjM1LCAyNywgMjMyLCAxMTksIAotICAgIDEsIDE1MCwgMjMyLCAxMTksIDEsIDE4MywgMjMyLCAxMTksIDEsIDIwNCwgMjMyLCAxMTksIDEsIDc1LCAyMzIsIDExOSwgMSwgCi0gICAgMTQ5LCAyMzIsIDExOSwgMSwgMjE5LCAxNTgsIDIzMiwgMTE5LCAxLCAyMTgsIDk5LCAyMzIsIDExOSwgMSwgNjksIDIzMiwgCi0gICAgMTE5LCAxLCAyNDQsIDIzMCwgMjMyLCAxMTksIDEsIDIyNCwgMjQwLCAyMzIsIDExOSwgMSwgMTk3LCAyMzIsIDExOSwgMSwgCi0gICAgMjE2LCAxMTgsIDIzMiwgMTE5LCAxLCAyNTQsIDMyLCAyMzIsIDExOSwgMSwgMjQ1LCAxMDgsIDIzMiwgMTE5LCAxLCAyMzIsIAotICAgIDEyMSwgMjMyLCAxMTksIDEsIDIyOCwgMTk5LCAyMzIsIDExOSwgMSwgMjUwLCAyNTIsIDIzMiwgMTE5LCAyMTYsIDE4MCwgCi0gICAgNzcsIDIzNCwgMTI2LCAxLCA2MSwgMjM0LCAxMjYsIDMwLCA1LCA3MiwgMjM0LCAxMjYsIDMwLCA1LCA2OSwgMjM0LCAxMjYsIAotICAgIDMwLCA1LCAxNjEsIDE0OSwgMjM0LCAxMjYsIDMwLCA1LCA3NCwgMjM0LCAxMjYsIDMwLCA1LCA3NSwgMjM0LCAxMjYsIDMwLCAKLSAgICAyMzMsIDQ3LCA3NywgMjM0LCAxMjYsIDUsIDUxLCAyMjMsIDEzMSwgNTUsIDIzNCwgMTI2LCA1LCAyNTMsIDI0MiwgMjM0LCAKLSAgICAxMjYsIDUsIDIxNCwgMTI4LCAyMzQsIDEyNiwgMSwgMTgxLCAyMzQsIDEyNiwgMSwgMjM0LCAxMzgsIDIzNCwgMTI2LCAxLCAKLSAgICAyNDMsIDExMCwgMjM0LCAxMjYsIDEsIDI0MiwgMjI1LCAyMzQsIDEyNiwgMSwgMjUwLCAyMTksIDIzNCwgMTI2LCAxLCAyNTAsIAotICAgIDkyLCAyMzQsIDEyNiwgMSwgMjM1LCAxMzksIDIzNCwgMTI2LCAxLCAyMjgsIDIzLCAyMzQsIDEyNiwgMSwgMjE2LCAxMTUsIAotICAgIDIzNCwgMTI2LCAxLCAyMTYsIDEwNSwgMjM0LCAxMjYsIDEsIDI0OCwgODYsIDIzNCwgMTI2LCAxLCAyNDgsIDcwLCAyMzQsIAotICAgIDEyNiwgMSwgMjI4LCAxOTgsIDIzNCwgMTI2LCAxLCAyMTgsIDUyLCAyMzQsIDEyNiwgMSwgMjE3LCAxNjEsIDIzNCwgMTI2LCAKLSAgICAxLCAyNDgsIDE2NCwgMjM0LCAxMjYsIDEsIDI0NywgMjMyLCAyMzQsIDEyNiwgMSwgMjA1LCAyMzQsIDEyNiwgMSwgMTkzLCAKLSAgICAyMzQsIDEyNiwgMSwgMjI2LCAyMywgMjM0LCAxMjYsIDEsIDI1MiwgMTA3LCAyMzQsIDEyNiwgMSwgMjUxLCAxOTUsIDIzNCwgCi0gICAgMTI2LCAxLCAxODgsIDIzNCwgMTI2LCAxLCAxODYsIDIzNCwgMTI2LCAxLCAyMDMsIDIzNCwgMTI2LCAxLCAyMzMsIDE1NywgCi0gICAgMjM0LCAxMjYsIDEsIDIxNSwgMSwgMjM0LCAxMjYsIDEsIDIyMSwgMjQsIDIzNCwgMTI2LCAxLCAyMTksIDE1NywgMjM0LCAKLSAgICAxMjYsIDEsIDIyMiwgMjAyLCAyMzQsIDEyNiwgMSwgMjEyLCAxMDksIDIzNCwgMTI2LCAxLCAxNTksIDIzNCwgMTI2LCAxLCAKLSAgICAyMzQsIDU1LCAyMzQsIDEyNiwgMSwgMjE2LCA4NywgMjM0LCAxMjYsIDUsIDI1MiwgNjAsIDQ5LCAyMzQsIDEyNiwgNSwgCi0gICAgMjUwLCAxNTQsIDIzNCwgMTI2LCA1LCA2MiwgNTUsIDIzNCwgMTI2LCAyMTQsIDEzMywgMjM0LCAxMjYsIDIxLCAxMTYsIAotICAgIDIzNCwgMTI2LCAyMSwgMTA5LCAyMzQsIDEyNiwgMjEsIDE2NiwgMjM0LCAxMjYsIDIxLCAxNjMsIDIzNCwgMTI2LCA1MCwgCi0gICAgMjE3LCAyMDAsIDIzNCwgMTI2LCA1MCwgMjE2LCAzOCwgMjM0LCAxMjYsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMzQsIDEyNiwgCi0gICAgNTAsIDEyMiwgMjE3LCAxMDAsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDcsIDc0LCAyMzQsIDEyNiwgMjI1LCAyNywgMywgMjQ5LCAKLSAgICAyMjgsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDksIDIyOCwgMjM0LCAxMjYsIDIyNSwgMjcsIDI0OSwgNzcsIDEzNCwgMjM0LCAKLSAgICAxMjYsIDIyNSwgMjcsIDIzMSwgMjQzLCAyMzQsIDEyNiwgMjI1LCAyNywgMjMyLCAxNzAsIDIzNCwgMTI2LCAyMjUsIDI3LCAKLSAgICAyNDgsIDEyMywgMjM0LCAxMjYsIDIyNSwgMjcsIDUxLCAyNDgsIDEyMywgMjM0LCAxMjYsIDIyNSwgMjcsIDIzMiwgMjM2LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDEsIDIyMiwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjMzLCAxMTcsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MSwgMTgwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzEsIDEyOSwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjI0LCAxNzksIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNCwgMTQsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMCwgMjAwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjMsIDIxOSwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjUxLCAyMDIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMjQzLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjIsIDE0MiwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjM0LCAyMzAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyOCwgNTAsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzNCwgMTIyLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjIsIDE5MywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxNjQsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0NCwgMTIzLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNTQsIDc4LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNTMsIDc3LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDcsIDIzMCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQyLCAxNzcsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0OCwgMTMzLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDIsIDIxNCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE3LCAxNzksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxMiwgODksIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0NywgMjI3LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTIsIDIyMywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjE3LCAxNTAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTMxLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCA1MCwgMTE2LCA1MywgCi0gICAgMjE5LCAyMTUsIDI1MywgMjA4LCA1MCwgMjQ0LCA4MywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMTI4LCAyMzUsIDIzNSwgCi0gICAgMjUzLCA4OCwgMSwgNjEsIDI1MywgODgsIDEsIDI1NCwgMjMyLCAyNTMsIDg4LCAxLCAyNTMsIDI0MCwgMjUzLCA4OCwgMSwgCi0gICAgMjU0LCAxOTEsIDI1MywgODgsIDEsIDI1NCwgMzIsIDI1MywgODgsIDEsIDI1NCwgMTkyLCAyNTMsIDg4LCAxLCAyNTQsIAotICAgIDE0OCwgMjUzLCA4OCwgMSwgMjU0LCAxNDQsIDI1MywgODgsIDEsIDc0LCAyNTMsIDg4LCAxLCAyNDUsIDE2NSwgMjUzLCA4OCwgCi0gICAgMSwgNzUsIDI1MywgODgsIDEsIDIyNywgNDksIDI1MywgODgsIDEsIDcyLCAyNTMsIDg4LCAxLCAyMzYsIDI4LCAyNTMsIDg4LCAKLSAgICAxLCA2OSwgMjUzLCA4OCwgMSwgMjE1LCA5MiwgMjUzLCA4OCwgMSwgMjM0LCAxODgsIDI1MywgODgsIDEsIDIxMywgMTUwLCAKLSAgICAyNTMsIDg4LCAxLCAyMTMsIDExNiwgMjUzLCA4OCwgMSwgMjEzLCAxMjUsIDI1MywgODgsIDEsIDI0MywgMzgsIDI1MywgODgsIAotICAgIDEsIDI0MywgMCwgMjUzLCA4OCwgMSwgMjQyLCAyMTIsIDI1MywgODgsIDEsIDI1MCwgMTI0LCAyNTMsIDg4LCAxLCAyMzUsIAotICAgIDEyNywgMjUzLCA4OCwgMSwgMjE3LCAyMjksIDI1MywgODgsIDEsIDIxNywgMTQ4LCAyNTMsIDg4LCAxLCAyNDgsIDQxLCAKLSAgICAyNTMsIDg4LCAxLCAyNDcsIDIyNSwgMjUzLCA4OCwgMSwgMjE2LCAxMTIsIDI1MywgODgsIDEsIDIyNiwgOTYsIDI1MywgODgsIAotICAgIDEsIDI0NCwgMTIzLCAyNTMsIDg4LCAxLCAyNTEsIDI1MSwgMjUzLCA4OCwgMSwgMjUxLCAxOTIsIDI1MywgODgsIDEsIDIyOSwgCi0gICAgMTQ4LCAyNTMsIDg4LCAxLCAyMjksIDcwLCAyNTMsIDg4LCAxLCAyMjksIDcxLCAyNTMsIDg4LCAxLCAyMjksIDE4NywgMjUzLCAKLSAgICA4OCwgMSwgMjI4LCAxNywgMjUzLCA4OCwgMSwgMjI4LCAxOTcsIDI1MywgODgsIDEsIDIzMSwgMTU2LCAyNTMsIDg4LCAxLCAKLSAgICAyNDEsIDEwMiwgMjUzLCA4OCwgMSwgMjEyLCAxNTksIDI1MywgODgsIDEsIDIxMywgMzgsIDI1MywgODgsIDEsIDIxNCwgCi0gICAgMjMyLCAyNTMsIDg4LCAxLCAyMjQsIDIxLCAyNTMsIDg4LCAxLCAyMzMsIDgyLCAyNTMsIDg4LCAxLCAyMjIsIDEwMCwgMjUzLCAKLSAgICA4OCwgMSwgMjEyLCA4NywgMjUzLCA4OCwgMSwgMjIwLCAyNDMsIDI1MywgODgsIDEsIDIxMiwgNjcsIDI1MywgODgsIDEsIAotICAgIDIyMCwgMTI0LCAyNTMsIDg4LCAxLCAyMTksIDEyOSwgMjUzLCA4OCwgMSwgMjQxLCAyMjIsIDI1MywgODgsIDI1NCwgMTgxLCAKLSAgICA3NywgMjE3LCAzMiwgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgMjI1LCAyNiwgMywgMTE3LCAxNzYsIDExMCwgMTIyLCA2MiwgCi0gICAgMjI1LCAyNiwgMjMzLCAxMDgsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIDIyNSwgMjYsIDIzMywgMTA4LCAxMjIsIDYyLCAKLSAgICAxMTAsIDExNywgMTc2LCAyMjUsIDI2LCAyMzMsIDEwOCwgMTE3LCAyMjMsIDEyOSwgMTEwLCAxMjIsIDIyMywgMTMxLCAyMjUsIAotICAgIDI2LCAyMzMsIDEwOCwgMTIyLCAyMjMsIDEzMSwgMTEwLCAxMTcsIDIyMywgMTI5LCAyMjUsIDI2LCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxMjYsIDEsIDI1NCwgNzYsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjUxLCAyMDIsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgCi0gICAgMjQyLCAxNzcsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjQ4LCAxMzMsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjQxLCAKLSAgICAyMjIsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjE0LCAxNCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTIsIDkwLCAyMzUsIAotICAgIDIxNSwgMjI2LCAxMjYsIDEsIDI0MSwgMTgwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNywgMTc5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDEsIDIxMiwgMjIzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIzNCwgMjMwLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxMjYsIDEsIDIzMywgMTE3LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIzMSwgMTI5LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIAotICAgIDIyOCwgNTAsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjIyLCAxNjQsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjUzLCA3OCwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjYsIDk2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMiwgMTkzLCAyMzUsIAotICAgIDIxNSwgMjI2LCAxMjYsIDEsIDIyNCwgMTc5LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMywgMjE5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDEsIDIyMCwgMjAwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNywgMjQzLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxMjYsIDUwLCAxMTYsIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDEwOSwgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTY2LCAKLSAgICAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxNjMsIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDIxNywgMjAwLCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDUwLCAyMTYsIDM4LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxMjYsIDUwLCAxMjIsIDIxNywgMTAwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI1NCwgNzYsIDIzNSwgMjE1LCAKLSAgICAyMjYsIDE5OCwgMSwgMjUxLCAyMDIsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjQyLCAxNzcsIDIzNSwgMjE1LCAyMjYsIAotICAgIDE5OCwgMSwgMjQ4LCAxMzMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjQxLCAyMjIsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgCi0gICAgMjE0LCAxMywgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTIsIDkwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MSwgMTgwLCAKLSAgICAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIxNywgMTc5LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIxMiwgMjIzLCAyMzUsIAotICAgIDIxNSwgMjI2LCAxOTgsIDEsIDIzNCwgMjMwLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIzMywgMTE3LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDEsIDIzMSwgMTI4LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIyOCwgNTAsIDIzNSwgMjE1LCAyMjYsIAotICAgIDE5OCwgMSwgMjIyLCAxNjQsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjI2LCA5NiwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAKLSAgICAyMjIsIDE5MywgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMjAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTcsIAotICAgIDI0MywgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTE2LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAxMDksIDIzNSwgMjE1LCAKLSAgICAyMjYsIDE5OCwgNTAsIDE2NiwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTYzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDUwLCAKLSAgICAyMTcsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMjE2LCAzOCwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTIyLCAKLSAgICAyNDAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTIyLCAyMTcsIDEwMCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgNjEsIAotICAgIDUzLCAxODUsIDEsIDIxMywgMjgsIDYxLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0OCwgNTMsIDE4NSwgMSwgMjI3LCAKLSAgICAxNiwgNzIsIDUzLCAxODUsIDEsIDIxMywgMjgsIDcyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCA3NCwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgNzUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgOTksIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgOTksIAotICAgIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTg1LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE4NSwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgMjU0LCAxNDcsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTQ3LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAKLSAgICAyNTQsIDEyMSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxMjEsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTQyLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0MiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNjAsIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI1NCwgMTYwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0NiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjQ0LCAyMzYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NCwgMjM2LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDgzLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDgzLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEyOSwgNTMsIDE4NSwgMSwgCi0gICAgMjEzLCAyOCwgMjU0LCAxMjksIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTQwLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAKLSAgICAyNTQsIDE0MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA5OCwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjI3LCA5OCwgNTMsIAotICAgIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCA4NiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCA4NiwgNTMsIDE4NSwgMSwgMjI3LCAKLSAgICAxNiwgMjU0LCAxMzksIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgMTE5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIAotICAgIDExNywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAzMiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMzcsIDUzLCAKLSAgICAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTM3LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDkwLCA1MywgMTg1LCAxLCAyMTMsIAotICAgIDI4LCAyNDUsIDkwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDEwNSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjQ1LCAKLSAgICAxMDUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgNzcsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgNzcsIDUzLCAxODUsIAotICAgIDEsIDIxMywgMjgsIDI1NCwgMjQsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgOTYsIDUzLCAxODUsIDEsIDIxMywgMjgsIAotICAgIDI1NCwgMTM2LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDcwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDQxLCA1MywgCi0gICAgMTg1LCAxLCAyMjcsIDE2LCAyNDAsIDEwNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAxNzEsIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI0NSwgMTcxLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDIxNSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgCi0gICAgMjUzLCAyMTUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIzNSwgMTc5LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMzUsIDE3OSwgCi0gICAgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCAyNSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjI3LCAyNSwgNTMsIDE4NSwgMSwgCi0gICAgMjI3LCAxNiwgMjUzLCAyMTEsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgMjExLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAKLSAgICAyNTQsIDEzNSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAxNTIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTMzLCAKLSAgICA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIDE0NiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCAxNDYsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI0NSwgNDAsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgNDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgCi0gICAgMTIyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDEyMiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMzAsIDUzLCAKLSAgICAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTMwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDgsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDI1MiwgNDUsIDIyMywgMzgsIDIxLCAxMTYsIDIyMywgMzgsIDIxLCAxMDksIDIyMywgMzgsIDIxLCAxNjYsIDIyMywgCi0gICAgMzgsIDIxLCAxNjMsIDIyMywgMzgsIDIxLCAxODAsIDIyMywgMzgsIDIxLCAxODksIDIyMywgMzgsIDIxLCAxOTgsIDIyMywgCi0gICAgMzgsIDIxLCAxOTUsIDIyMywgMzgsIDIxLCAyMDAsIDIyMywgMzgsIDUwLCAyMTcsIDIwMCwgMjIzLCAzOCwgNTAsIDIxNiwgCi0gICAgMzgsIDIyMywgMzgsIDUwLCAyMTcsIDExNSwgMjIzLCAzOCwgNTAsIDI0MywgMjQwLCAyMjMsIDM4LCA1MCwgMjQ0LCA4MywgCi0gICAgMjIzLCAzOCwgNTAsIDIyMCwgMzksIDIyMywgMzgsIDUwLCAyMjEsIDM3LCAyMjMsIDM4LCA1MCwgMjQ1LCAxNDEsIDIyMywgCi0gICAgMzgsIDUwLCAyMjksIDI2LCAyMjMsIDM4LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDExNywgMjQwLCAyMDAsIAotICAgIDIyMywgMzgsIDUwLCAxMzMsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjQzLCAyMzcsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgCi0gICAgMjQ0LCA1MCwgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyMjAsIDUzLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDIyMSwgNDMsIAotICAgIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjQ1LCAxNTAsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjI5LCAzMSwgMjQwLCAKLSAgICAyMDAsIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgMjIzLCAzOCwgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIAotICAgIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDIxNywgMTIxLCAyMjMsIDM4LCAyNDMsIDIyOCwgMTE3LCAyMTcsIDExOSwgMTEyLCAKLSAgICA1LCAyNTAsIDE4NywgMTEyLCA1LCAyNTMsIDI0MiwgMTEyLCA1LCAyMTQsIDEyOCwgMTEyLCA1LCAyMzUsIDEwNCwgMTEyLCAKLSAgICA1LCAyMTUsIDEzMiwgMTEyLCAxLCA2MSwgMTEyLCAxLCAyNTQsIDIzMiwgMTEyLCAxLCA3MiwgMTEyLCAxLCAyMzYsIDI4LCAKLSAgICAxMTIsIDEsIDY5LCAxMTIsIDEsIDIxNSwgOTIsIDExMiwgMSwgMTYxLCAxNDksIDExMiwgMSwgMTYxLCAyMjMsIDgyLCAxMTIsIAotICAgIDEsIDE2MSwgMTUwLCAxMTIsIDEsIDE2MSwgMjMyLCAyMTQsIDExMiwgMSwgNzQsIDExMiwgMSwgMjU0LCAxMDgsIDExMiwgMSwgCi0gICAgNzUsIDExMiwgMSwgMjUzLCAxMDgsIDExMiwgMSwgMTgxLCAxMTIsIDEsIDIzNCwgMTM4LCAxMTIsIDEsIDI0MywgMTEwLCAKLSAgICAxMTIsIDEsIDI0MiwgMjI1LCAxMTIsIDEsIDIyOSwgMTU5LCAxMTIsIDEsIDI1MCwgMjE5LCAxMTIsIDEsIDI1MCwgOTIsIAotICAgIDExMiwgMSwgMjM1LCAxMzksIDExMiwgMSwgMjM1LCAxMTUsIDExMiwgMSwgMjI4LCAyMywgMTEyLCAxLCAyMTYsIDExNSwgCi0gICAgMTEyLCAxLCAyMTYsIDEwNSwgMTEyLCAxLCAyNDgsIDg2LCAxMTIsIDEsIDI0OCwgNzAsIDExMiwgMSwgMjI4LCAxOTgsIAotICAgIDExMiwgMSwgMjE4LCA1MiwgMTEyLCAxLCAyMTcsIDE2MSwgMTEyLCAxLCAyNDgsIDE2NCwgMTEyLCAxLCAyNDcsIDIzMiwgCi0gICAgMTEyLCAxLCAyMDUsIDExMiwgMSwgMTkzLCAxMTIsIDEsIDIyNiwgMjMsIDExMiwgMSwgMjUyLCAxMDcsIDExMiwgMSwgMjUxLCAKLSAgICAxOTUsIDExMiwgMSwgMTg4LCAxMTIsIDEsIDE4NiwgMTEyLCAxLCAyMDMsIDExMiwgMSwgMjMzLCAxNTcsIDExMiwgMSwgCi0gICAgMjE1LCAxLCAxMTIsIDEsIDIyMSwgMjQsIDExMiwgMSwgMjE5LCAxNTcsIDExMiwgMSwgMjIyLCAyMDIsIDExMiwgMSwgMTU5LCAKLSAgICAxMTIsIDEsIDIzMiwgMjEzLCAxMTIsIDEsIDUzLCAxNzgsIDIzMiwgMjEyLCAxMTIsIDEsIDUzLCAxNzgsIDIyMywgODEsIAotICAgIDExMiwgMSwgNTMsIDE3OCwgMjI4LCAxODksIDExMiwgMzAsIDUsIDI1NCwgMjMyLCAxMTIsIDMwLCA1LCAyNTEsIDE5MywgCi0gICAgMjU0LCAyMzIsIDExMiwgMzAsIDUsIDcyLCAxMTIsIDMwLCA1LCAyMzYsIDI4LCAxMTIsIDMwLCA1LCA2OSwgMTEyLCAzMCwgCi0gICAgNSwgMjE1LCA5MiwgMTEyLCAzMCwgNSwgMTYxLCAxNDksIDExMiwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTEyLCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDExMiwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDExMiwgMzAsIDUsIDc0LCAxMTIsIDMwLCA1LCAyNTQsIAotICAgIDEwOCwgMTEyLCAzMCwgNSwgNzUsIDExMiwgMzAsIDUsIDI1MywgMTA4LCAxMTIsIDIxNCwgMTMzLCAxMTIsIDI0OCwgMTIzLCAKLSAgICAxMTIsIDUxLCAyNDgsIDEyMywgMTEyLCAyMjUsIDI3LCAyNDcsIDc0LCAxMTIsIDIyNSwgMjcsIDUxLCAyNDcsIDc0LCAxMTIsIAotICAgIDIyNSwgMjcsIDIzMiwgMjQyLCAxMTIsIDIyNSwgMjcsIDI0OSwgNzcsIDEzNCwgMTEyLCAyMjUsIDI3LCAyMzIsIDE3MCwgCi0gICAgMTEyLCA1MCwgMTE2LCAxMTIsIDUwLCAxMDksIDExMiwgNTAsIDE2NiwgMTEyLCA1MCwgMTYzLCAxMTIsIDUwLCAxODAsIAotICAgIDExMiwgNTAsIDE4OSwgMTEyLCA1MCwgMTk4LCAxMTIsIDUwLCAxOTUsIDExMiwgNTAsIDIwMCwgMTEyLCA1MCwgMjE3LCAKLSAgICAyMDAsIDExMiwgNTAsIDIxNiwgMzgsIDExMiwgNTAsIDIxNywgMTE1LCAxMTIsIDUwLCAyNDMsIDI0MCwgMTEyLCA1MCwgCi0gICAgMjQ0LCA4MywgMTEyLCA1MCwgMjIwLCAzOSwgMTEyLCA1MCwgMjIxLCAzNywgMTEyLCA1MCwgMjQ1LCAxNDEsIDExMiwgNTAsIAotICAgIDIyOSwgMjYsIDExMiwgNTAsIDEyMiwgMjQwLCAyMDAsIDExMiwgNTAsIDEyMiwgMjE3LCAxMDAsIDExMiwgMjEsIDIxMiwgCi0gICAgNzksIDExMiwgMjEsIDExNiwgMTEyLCAyMSwgMTA5LCAxMTIsIDIxLCAxNjYsIDExMiwgMjEsIDE2MywgMTEyLCAyMSwgMTgwLCAKLSAgICAxMTIsIDIxLCAxODksIDExMiwgMjEsIDE5OCwgMTEyLCAyMSwgMTk1LCAxMTIsIDIxLCAyMDAsIDIwOCwgNSwgMjUwLCAxODcsIAotICAgIDIwOCwgNSwgMjUzLCAyNDIsIDIwOCwgNSwgMjE0LCAxMjgsIDIwOCwgMSwgNjEsIDIwOCwgMSwgMjU0LCAyMzIsIDIwOCwgMSwgCi0gICAgNzIsIDIwOCwgMSwgMjM2LCAyOCwgMjA4LCAxLCA2OSwgMjA4LCAxLCAyMTUsIDkyLCAyMDgsIDEsIDc0LCAyMDgsIDEsIAotICAgIDI1NCwgMTA4LCAyMDgsIDEsIDc1LCAyMDgsIDEsIDI1MywgMTA4LCAyMDgsIDEsIDE4MSwgMjA4LCAxLCAyMzQsIDEzOCwgCi0gICAgMjA4LCAxLCAyNDMsIDExMCwgMjA4LCAxLCAyNDIsIDIyNSwgMjA4LCAxLCAyMjksIDE1OSwgMjA4LCAxLCAyNTAsIDIxOSwgCi0gICAgMjA4LCAxLCAyNTAsIDkyLCAyMDgsIDEsIDIzNSwgMTM5LCAyMDgsIDEsIDIzNSwgMTE1LCAyMDgsIDEsIDIyOCwgMjMsIAotICAgIDIwOCwgMSwgMjE2LCAxMTUsIDIwOCwgMSwgMjE2LCAxMDUsIDIwOCwgMSwgMjQ4LCA4NiwgMjA4LCAxLCAyNDgsIDc1LCAKLSAgICAyMDgsIDEsIDI0OCwgNzAsIDIwOCwgMSwgMjIzLCAxOTIsIDIwOCwgMSwgMjI4LCAxOTgsIDIwOCwgMSwgMjE4LCA1MiwgCi0gICAgMjA4LCAxLCAyMTcsIDE2MSwgMjA4LCAxLCAyNDgsIDE2NCwgMjA4LCAxLCAyNDcsIDIzMiwgMjA4LCAxLCAyMDUsIDIwOCwgCi0gICAgMSwgMTkzLCAyMDgsIDEsIDIyNiwgMjMsIDIwOCwgMSwgMjUyLCAxMDcsIDIwOCwgMSwgMjUxLCAxOTUsIDIwOCwgMSwgMTg4LCAKLSAgICAyMDgsIDEsIDE4NiwgMjA4LCAxLCAyMDMsIDIwOCwgMSwgMjMzLCAxNTcsIDIwOCwgMSwgMjE1LCAxLCAyMDgsIDEsIDIyMSwgCi0gICAgMjQsIDIwOCwgMSwgMjE5LCAxNTcsIDIwOCwgMSwgMjIyLCAyMDIsIDIwOCwgMSwgMTU5LCAyMDgsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMjA4LCAzMCwgNSwgNzIsIDIwOCwgMzAsIDUsIDIzNiwgMjgsIDIwOCwgMzAsIDUsIDY5LCAyMDgsIDMwLCA1LCAKLSAgICAyMTUsIDkyLCAyMDgsIDMwLCA1LCA3NCwgMjA4LCAzMCwgNSwgMjU0LCAxMDgsIDIwOCwgMzAsIDUsIDc1LCAyMDgsIDMwLCAKLSAgICA1LCAyNTMsIDEwOCwgMjA4LCA1LCAyMTQsIDEzMywgMjA4LCA1LCAyMjgsIDYwLCAyMDgsIDI1NCwgMTgxLCA1MiwgMjA4LCAKLSAgICAyNDUsIDgwLCA1MiwgMjA4LCA1MCwgNTIsIDIwOCwgMjIyLCA5MiwgNzcsIDIwOCwgNTEsIDIyMiwgOTIsIDc3LCAyMDgsIAotICAgIDI0OCwgMTIzLCAyMDgsIDUxLCAyNDgsIDEyMywgMTUsIDUsIDYxLCAxNSwgNSwgMTE4LCAyOSwgNjEsIDE1LCA1LCAxMTgsIAotICAgIDI5LCAyNTIsIDk0LCAxNSwgNSwgMTE4LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAxMTgsIDI5LCAxNTksIDE1LCAKLSAgICA1LCAxMTgsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMTE4LCAyOSwgMjMzLCAxMzksIDI0MiwgNzUsIDE1LCA1LCAxMTgsIDI5LCAKLSAgICAyMzAsIDEzMSwgMTUsIDUsIDExOCwgMjksIDIyMiwgMTkwLCAxNSwgNSwgMjU0LCAyMzQsIDE1LCA1LCAyNTQsIDE4NSwgMTUsIAotICAgIDUsIDI1NCwgMTg2LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDI0NiwgMjIsIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyNTQsIDE4NiwgMjksIDI0MywgOTQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjU0LCAxODYsIDI5LCAxNTksIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNTQsIAotICAgIDE4NiwgMjksIDIzNiwgNCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMjMzLCAxNDAsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIyMCwgCi0gICAgMjI4LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDI1NCwgMTg2LCAyNDIsIDc1LCAKLSAgICAxNSwgNSwgMjU0LCAxODMsIDE1LCA1LCAyNTQsIDE4NCwgMjksIDI1MiwgNzksIDE1LCA1LCAyNTQsIDE4NCwgMjksIDI0MywgCi0gICAgODEsIDIxNywgMTkyLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyMzEsIDE1NywgOTQsIDI0NSwgMTA4LCAxNSwgNSwgMjU0LCAKLSAgICAxODQsIDI5LCAyMjEsIDIyLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjU0LCAxNjAsIDE1LCA1LCAKLSAgICAyNTQsIDk0LCAxNSwgNSwgMjU0LCA5NSwgMjksIDI0NSwgNTAsIDE1LCA1LCAyNTQsIDk1LCAyOSwgMjIwLCAxOTAsIDk0LCAKLSAgICAyNDIsIDE2NiwgMTUsIDUsIDI1NCwgODYsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjU0LCA4NiwgMTUsIDUsIDI1NCwgODcsIAotICAgIDI5LCAyNDcsIDE2OCwgMTUsIDUsIDI1NCwgODcsIDI5LCAyNDIsIDE2NiwgMTUsIDUsIDI1NCwgODcsIDI5LCAxNTksIDE1LCAKLSAgICA1LCAyNTQsIDg3LCAyOSwgMjM1LCAzLCAxNSwgNSwgMjU0LCA4NywgMjksIDIzNCwgMTAxLCAxNSwgNSwgMjU0LCA4NywgMjksIAotICAgIDIyMCwgMjQzLCAxNSwgNSwgMjU0LCA4NywgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjU0LCA4MywgMTUsIDUsIDI1NCwgNzYsIAotICAgIDE1LCA1LCAyNTQsIDQxLCAxNSwgNSwgMjU0LCA0MiwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjU0LCAzMiwgMTUsIDUsIDI1NCwgCi0gICAgMzMsIDExMCwgMjU0LCAzMiwgMTUsIDUsIDI1NCwgMzMsIDEzMywgMjE3LCAzOCwgMTUsIDUsIDI1NCwgMzMsIDk0LCAyMzAsIAotICAgIDM1LCAyMjcsIDMwLCAyNTQsIDMzLCA5NCwgMjMwLCAzNCwgMTUsIDUsIDI1NCwgMzMsIDk0LCAyMzAsIDM1LCAyMTksIDE2NSwgCi0gICAgMTUsIDUsIDI1NCwgNSwgMTUsIDUsIDI1MywgMjM1LCAxNSwgNSwgMjUzLCAyMDUsIDE1LCA1LCAyNTMsIDIwNiwgMjksIAotICAgIDIzMywgMjE3LCAxNSwgNSwgMjUzLCAxNzksIDE1LCA1LCAyNTMsIDE1MSwgMTUsIDUsIDI1MywgMTQ2LCAxNSwgNSwgMjUzLCAKLSAgICAxNDcsIDIxMiwgMzMsIDIxNywgMTkyLCAxNSwgNSwgMjUzLCAxNDcsIDIzNSwgNywgMjE3LCAxOTIsIDE1LCA1LCAyNTMsIAotICAgIDE0NywgMTEwLCAyNTMsIDE0NywgMjE2LCA3OCwgMTEwLCAyMTYsIDc4LCAyMTYsIDc4LCAxMTAsIDIxNiwgNzgsIDIyNiwgCi0gICAgMTQ5LCAxNSwgNSwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDYsIDE1LCA1LCAyNTMsIDE0NywgMTEwLCAKLSAgICAyNTMsIDE0NywgMTEwLCAyNTMsIDE0NywgMjQ5LCA2NSwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDYsIAotICAgIDE1LCA1LCAyNTMsIDE0NCwgMTUsIDUsIDI1MywgMTQxLCAxNSwgNSwgMjUyLCAxMDcsIDE1LCA1LCAyNTIsIDk0LCAxNSwgNSwgCi0gICAgMjUyLCA4OSwgMTUsIDUsIDI1MiwgODYsIDE1LCA1LCAyNTIsIDgwLCAxNSwgNSwgMjUyLCA4MSwgMTEwLCAyNTIsIDgwLCAKLSAgICAxNSwgNSwgMjUyLCA3OSwgMTUsIDUsIDEzNCwgMTUsIDUsIDI1MiwgNTksIDE1LCA1LCAyNTEsIDE4NCwgMTUsIDUsIDI1MSwgCi0gICAgMTg1LCAyOSwgNjEsIDE1LCA1LCAyNTEsIDE4NSwgMjksIDI0MywgNzIsIDE1LCA1LCAyNTEsIDE4NSwgMjksIDIzNiwgMzEsIAotICAgIDI0MiwgNzUsIDE1LCA1LCAyNTEsIDU0LCAxNSwgNSwgMjUxLCA1NSwgMTEwLCAyNTEsIDU1LCAyNTQsIDE4NSwgMTUsIDUsIAotICAgIDI1MSwgNTUsIDExMCwgMjUxLCA1NSwgMjE1LCAxNjAsIDE1LCA1LCAyNTEsIDU1LCAyNDksIDY1LCAyNTEsIDU0LCAxNSwgNSwgCi0gICAgMjUxLCAzOCwgMTUsIDUsIDI1MSwgMzksIDExMCwgMjUxLCAzOCwgMTUsIDUsIDI1MSwgMjcsIDE1LCA1LCAyNTEsIDI2LCAKLSAgICAxNSwgNSwgMjQ4LCAxNjQsIDE1LCA1LCAyNDgsIDE1NSwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMTE4LCA5NCwgCi0gICAgMjMxLCAyMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI1NCwgNDEsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCAKLSAgICA3NSwgMjksIDI1MiwgNzksIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjQ4LCAxNTYsIAotICAgIDIzNCwgNzUsIDI5LCAyNDMsIDExMCwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQzLCAxMTEsIDk0LCAyMzEsIAotICAgIDIxMCwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgCi0gICAgMjksIDI0MiwgMTczLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjQ4LCAxNTYsIAotICAgIDIzNCwgNzUsIDI5LCAxNTksIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzNSwgMTc3LCAxNSwgNSwgMjQ4LCAKLSAgICAxNTYsIDIzNCwgNzUsIDI5LCAyMzUsIDE3OCwgOTQsIDIzMiwgMTU2LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAKLSAgICAyMzQsIDI0NywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMzLCAxNTcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCAKLSAgICA3NSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzIsIDE1NywgOTQsIDIzMSwgMjA5LCAKLSAgICAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzIsIDE0MiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgCi0gICAgMjI5LCAxODcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIyNiwgMTUwLCA5NCwgMjI2LCAxNDksIDE1LCA1LCAKLSAgICAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIyMCwgMTE3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMTgsIDIyLCAKLSAgICAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMTUsIDE5OCwgOTQsIDI0MiwgMTczLCAxNSwgNSwgMjQ4LCAxNTYsIAotICAgIDIzNCwgNzUsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDI0OCwgMTMyLCAxNSwgNSwgMjQ4LCAxMTEsIDE1LCA1LCAyNDgsIDExMCwgCi0gICAgMTUsIDUsIDI0OCwgMTA5LCAxNSwgNSwgMjQ3LCAyMTEsIDE1LCA1LCAyNDcsIDE5NCwgMTUsIDUsIDI0NywgMTY5LCAxNSwgCi0gICAgNSwgMjQ3LCAxNzAsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0NywgMTY4LCAxNSwgNSwgMjQ3LCAxNTgsIDE1LCA1LCAyNDcsIAotICAgIDE1OSwgMjM0LCAyMTMsIDExMSwgMjQyLCA3NiwgMjQ3LCAxMzksIDE1LCA1LCAyNDcsIDEzOSwgMTUsIDUsIDI0NiwgMzMsIAotICAgIDE1LCA1LCAyNDYsIDM0LCAxMTAsIDI0NiwgMzMsIDE1LCA1LCAyNDYsIDM0LCAyNDIsIDc1LCAxNSwgNSwgMjQ2LCAzNCwgCi0gICAgMjIwLCAyMjUsIDE1LCA1LCAyNDYsIDMxLCAxNSwgNSwgMjQ2LCAzMiwgMjksIDI0NSwgMzcsIDE1LCA1LCAyNDYsIDMwLCAKLSAgICAxNSwgNSwgMjQ2LCAyOSwgMTUsIDUsIDI0NiwgMjgsIDE1LCA1LCAyNDYsIDI3LCAxNSwgNSwgMjQ2LCAyMywgMTUsIDUsIAotICAgIDI0NiwgMjEsIDE1LCA1LCAyNDYsIDIyLCAyNDIsIDc1LCAxNSwgNSwgMjQ2LCAyMiwgMjQyLCA3NiwgMjQyLCA3NSwgMTUsIAotICAgIDUsIDI0NiwgMjAsIDE1LCA1LCAyNDYsIDEzLCAxNSwgNSwgNzQsIDE1LCA1LCAxOTEsIDI5LCAyMjYsIDE0OSwgMTUsIDUsIAotICAgIDE5MSwgMTEwLCAxOTEsIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDI0NSwgMTkwLCAxNSwgNSwgMjQ1LCAxOTEsIAotICAgIDI5LCAxMTgsIDk0LCAyNDIsIDMwLCA5NCwgMjQ4LCAxNjQsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDI0MywgNzIsIDE1LCA1LCAKLSAgICAyNDUsIDE5MSwgMjksIDIzMSwgNDIsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjQ1LCAxOTEsIAotICAgIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0NSwgMTkxLCAyOSwgNjksIDE1LCA1LCAyNDUsIDE2NywgMTUsIDUsIDI0NSwgMTU3LCAKLSAgICAxNSwgNSwgMjQ1LCAxMzEsIDE1LCA1LCAyNDUsIDEwOCwgMTUsIDUsIDI0NSwgMTA5LCAyOSwgMjQzLCA4MCwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyNDUsIDEwOSwgMjksIDIzMSwgMTU2LCAxNSwgNSwgCi0gICAgMjQ1LCAxMDksIDI0OSwgNjUsIDI0NSwgMTA4LCAxNSwgNSwgMjQ1LCAxMDksIDIyNywgMzAsIDI0NSwgMTA4LCAxNSwgNSwgCi0gICAgMjQ1LCAxMDksIDIxOSwgMTY1LCAxNSwgNSwgMjQ1LCA1MiwgMTUsIDUsIDI0NSwgNTAsIDE1LCA1LCAyNDUsIDM3LCAxNSwgCi0gICAgNSwgMjQ0LCAyMzQsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDYxLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAxMTgsIDk0LCAyMzMsIAotICAgIDEyOCwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMTE4LCA5NCwgMjMzLCAxMjksIDI5LCAyMzMsIDEyOCwgMTUsIDUsIDI0NCwgCi0gICAgMjM1LCAyOSwgMjU0LCAzMiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQ2LCAKLSAgICAyMiwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQ2LCAyMiwgMjQyLCA3NiwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgCi0gICAgMjM1LCAyOSwgMTU5LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyNDIsIDMwLCAyNDIsIDc1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAKLSAgICAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzQsIDIxMiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjM0LCAyMTMsIDIxOSwgMTY1LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzMsIDIzNiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjMzLCAxNTcsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIzMywgMTI5LCAyOSwgMjMzLCAxMjgsIDE1LCA1LCAyNDQsIDIzNSwgCi0gICAgMjksIDIzMywgMTMsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMTUsIAotICAgIDE5NywgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyNDMsIDExMCwgMTUsIDUsIDI0MywgMTExLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjQzLCAxMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDExOCwgOTQsIDI0OCwgMTY1LCA5NCwgCi0gICAgMTU5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAxNTksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDExOCwgOTQsIAotICAgIDIzNiwgMzAsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1NCwgMTg0LCAyMTcsIDE5MywgOTQsIDIxOCwgNDEsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1MywgMTQ2LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyNTMsIDE0NSwgOTQsIDI0MywgOTQsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDI1MiwgNjAsIDk0LCAyMDMsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI1MSwgMjcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIAotICAgIDI1MSwgMjgsIDk0LCAyMDMsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0OCwgMTY0LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNDcsIDIxMSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ3LCAxNzAsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjQ2LCAzMSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQ1LCAxMzEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgCi0gICAgMTMyLCA5NCwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgMTA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNDUsIDEwOSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQzLCA3MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDI0MiwgMTg4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDE4OSwgOTQsIDYxLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDIsIDE3NCwgOTQsIDIxOSwgMjcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMzAsIDk0LCAyMzIsIAotICAgIDE1NywgOTQsIDI0NSwgMzcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMTIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgCi0gICAgMTMsIDk0LCAyMzMsIDE1NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQxLCAxNjYsIDk0LCAyMzMsIDEzLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDAsIDIwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjM1LCAxNjQsIDk0LCAyNDAsIDIxMywgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzQsIAotICAgIDI0NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNCwgOTgsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDIzNCwgOTksIDk0LCAyMzMsIDEyOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMzLCAyMzcsIDk0LCAKLSAgICAyNTQsIDMyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzMsIDE1NywgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMxLCAxNTcsIAotICAgIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMxLCA0MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjI4LCA1MCwgCi0gICAgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjI4LCA1MSwgMTEwLCAyMjgsIDUwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxOTMsIDE1LCAKLSAgICA1LCAyNDMsIDEwOSwgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjIsIDE0NywgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyMCwgMjQ0LCA5NCwgMjE2LCA2MiwgMTUsIDUsIAotICAgIDI0MywgMTA5LCAyOSwgMjIwLCAyMTAsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIxOCwgMjQ0LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCA2OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjE1LCAxODgsIDE1LCAKLSAgICA1LCAyNDMsIDEwOSwgMjksIDIxNSwgMTg5LCA5NCwgMjQ2LCAzMywgMTUsIDUsIDI0MywgMTA5LCAxMTAsIDI0MywgMTA4LCAKLSAgICAxNSwgNSwgMjQzLCAxMDMsIDE1LCA1LCAyNDMsIDEwNCwgMjQ5LCA2NSwgMjQzLCAxMDMsIDE1LCA1LCAyNDMsIDEwMSwgMTUsIAotICAgIDUsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyNDMsIDk0LCAxNSwgNSwgCi0gICAgMjQzLCA5NSwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIDI0MywgOTMsIAotICAgIDE1LCA1LCAyNDMsIDkxLCAxNSwgNSwgMjQzLCA4MiwgMTUsIDUsIDI0MywgODAsIDE1LCA1LCAyNDMsIDgxLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDI0MywgODEsIDExMCwgMjQzLCA4MCwgMTUsIDUsIDI0MywgODEsIDI0OSwgNjUsIDI0MywgODAsIDE1LCA1LCAKLSAgICAyNDMsIDcyLCAxNSwgNSwgMjQzLCA3MSwgMTUsIDUsIDI0MywgNjYsIDE1LCA1LCAyNDMsIDEyLCAxNSwgNSwgMjQzLCAxMywgCi0gICAgMjksIDIzMywgMjE3LCAxNSwgNSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMjksIDc0LCAxNSwgNSwgMjQyLCAxOTEsIAotICAgIDI5LCA2OSwgMTUsIDUsIDI0MiwgMTkxLCAyNDksIDY1LCAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAKLSAgICAxODksIDExMCwgMjQyLCAxODgsIDE1LCA1LCAyNDIsIDE4OSwgMjQ5LCA2NSwgMjQyLCAxODgsIDE1LCA1LCAyNDIsIDE4NSwgCi0gICAgMTUsIDUsIDI0MiwgMTczLCAxNSwgNSwgMjQyLCAxNzQsIDI0MiwgNzUsIDE1LCA1LCAyNDIsIDE3MSwgMTUsIDUsIDI0MiwgCi0gICAgMTcyLCAyOSwgMTE4LCA5NCwgMjM2LCAzMCwgMTUsIDUsIDI0MiwgMTcyLCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyNDIsIDE3MiwgMjksIDIzNiwgMzAsIDE1LCA1LCAyNDIsIDE3MiwgMjksIDIzMiwgMTU3LCA5NCwgMjM2LCAzMCwgMTUsIDUsIAotICAgIDI0MiwgMTcyLCAyOSwgMTkzLCAxNSwgNSwgMjQyLCAxNjgsIDE1LCA1LCAyNDIsIDE2NiwgMTUsIDUsIDI0MiwgMTY3LCAKLSAgICAyNDksIDY1LCAyNDIsIDE2NiwgMTUsIDUsIDI0MiwgMTY3LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDI0MiwgMTY3LCAyOSwgCi0gICAgMjE4LCAyMiwgMTUsIDUsIDI0MiwgMTY3LCAyMTcsIDE5MiwgMTUsIDUsIDI0MiwgOTIsIDE1LCA1LCAyNDIsIDkzLCAyNDksIAotICAgIDY1LCAyNDIsIDkyLCAxNSwgNSwgMjQyLCA5MCwgMTUsIDUsIDI0MiwgOTEsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDI0MiwgCi0gICAgOTEsIDI5LCAyMzQsIDI0OCwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNDIsIDkxLCAyOSwgMjI4LCA1MCwgMTUsIAotICAgIDUsIDI0MiwgOTEsIDI5LCAyMjIsIDE4MCwgOTQsIDIxNiwgNzcsIDE1LCA1LCAyNDIsIDkxLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjQyLCA4NCwgMTUsIDUsIDI0MiwgODUsIDI5LCAxMTgsIDk0LCAyMzMsIDIxNywgMTUsIDUsIDI0MiwgODUsIDI5LCAyMzMsIAotICAgIDIxNywgMTUsIDUsIDI0MiwgODUsIDExMCwgMjQyLCA4NSwgMjMyLCAxNDksIDE1LCA1LCAyNDIsIDc5LCAxNSwgNSwgMjQyLCAKLSAgICA3NywgMTUsIDUsIDI0MiwgNzgsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI0MiwgNjksIDE1LCA1LCAyNDIsIDY4LCAxNSwgNSwgCi0gICAgMjQyLCA2NSwgMTUsIDUsIDI0MiwgNjQsIDE1LCA1LCAxNTksIDE1LCA1LCAyNDIsIDMwLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDI0MiwgMzAsIDI0MiwgNzUsIDE1LCA1LCAyNDIsIDEyLCAxNSwgNSwgMjQxLCAxNjUsIDE1LCA1LCAyNDEsIDE2NiwgMjksIAotICAgIDI1MywgMTQ2LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjUyLCA5NCwgCi0gICAgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjQ3LCAxMzksIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI0MywgMTAxLCAxNSwgNSwgMjQxLCAKLSAgICAxNjYsIDI5LCAyMzQsIDkwLCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyMjAsIAotICAgIDI0MywgMTUsIDUsIDI0MSwgMTY2LCAyOSwgNjksIDE1LCA1LCAyNDAsIDIxMiwgMTUsIDUsIDI0MCwgMjA4LCAxNSwgNSwgCi0gICAgMjQwLCAyMDksIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjQwLCAyMDksIDI5LCAyNDIsIDEyLCAxNSwgNSwgMjQwLCAyMDksIDI5LCAKLSAgICAyMzQsIDIxMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgMjMyLCAyMjYsIDE1LCA1LCAyNDAsIDIwOSwgMjksIDIxNSwgMTg4LCAKLSAgICAxNSwgNSwgMjQwLCAyMDUsIDE1LCA1LCA3MiwgMTUsIDUsIDI0MCwgMTQ2LCA2MSwgMTUsIDUsIDI0MCwgMTA4LCAxNSwgNSwgCi0gICAgMjM2LCA1OCwgMTUsIDUsIDIzNiwgNTksIDExMCwgMjM2LCA1OSwgMjUxLCAyNywgMTUsIDUsIDIzNiwgNTksIDExMCwgMjM2LCAKLSAgICA1OSwgMjE5LCAxNjUsIDE1LCA1LCAyMzYsIDMzLCAxNSwgNSwgMjM2LCAzMCwgMTUsIDUsIDIzNiwgMzEsIDI0NywgMTk0LCAKLSAgICAxNSwgNSwgMjM2LCAzMSwgMjIzLCAxODgsIDE1LCA1LCAyMzYsIDMxLCAxMTAsIDIzNiwgMzEsIDIyMCwgMTk0LCAxMTAsIAotICAgIDIyMCwgMTk0LCAyMTUsIDE4OSwgMTEwLCAyMTUsIDE4OCwgMTUsIDUsIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyMzYsIAotICAgIDIyLCAxNSwgNSwgMjM2LCAyMywgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjM2LCAyMSwgMTUsIDUsIDIzNiwgCi0gICAgMTEsIDE1LCA1LCAyMzYsIDEyLCAyOSwgMjE4LCAyMiwgMTUsIDUsIDIzNiwgMTIsIDI0OSwgNjUsIDIzNiwgMTEsIDE1LCA1LCAKLSAgICAyMzYsIDEyLCAyMjcsIDMwLCAyMzYsIDExLCAxNSwgNSwgMjM2LCAxMiwgMjE5LCAxNjUsIDE1LCA1LCAyMzYsIDQsIDE1LCAKLSAgICA1LCAyMzUsIDI1MSwgMTUsIDUsIDIzNSwgMTc3LCAxNSwgNSwgMjM1LCAxNjMsIDE1LCA1LCAxODEsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgNjEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjU0LCAxNjAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjU0LCAxNjEsIAotICAgIDk0LCAyMzMsIDIzNiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTIsIDk0LCAKLSAgICAxNSwgNSwgMjM1LCAxNywgMjksIDI1MiwgNzksIDE1LCA1LCAyMzUsIDE3LCAyOSwgMTM0LCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDI1MSwgMTg0LCAxNSwgNSwgMjM1LCAxNywgMjksIDI0NSwgNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQ1LCAzNywgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDExMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjM1LCAxNywgCi0gICAgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0MywgNzIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjQzLCA3MywgOTQsIDIyMSwgMjMsIDk0LCA2MSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDIsIDE5MCwgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCAyNDIsIDE3MywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDIsIDE2NywgOTQsIDIyMiwgMTQ3LCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDI0MiwgMTY3LCAyNDksIDY1LCAyNDIsIDE2NiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDIsIDkyLCAxNSwgNSwgCi0gICAgMjM1LCAxNywgMjksIDI0MiwgNjgsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjM2LCAzMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzYsIDExLCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNCwgMjQ3LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNCwgMTAxLCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDIzNCwgOTgsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMzLCAxMywgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzIsIDE1NiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDE1NiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDE1NywgOTQsIAotICAgIDI0NiwgMzMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDIsIDE5MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMzEsIDE1NywgOTQsIDIxNywgMjI5LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgNDIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMxLCA0MywgOTQsIDIyOCwgNDUsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjI4LCA1MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjUsIDI0MCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjMsIDUxLCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDIyMiwgMjAyLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMiwgMTQ3LCAxNSwgNSwgMjM1LCAxNywgCi0gICAgMjksIDIyMSwgMjQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAyMTAsIAotICAgIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAxNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIwLCAxMDgsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgMjE4LCAyNTIsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjE4LCAxLCAxNSwgNSwgMjM1LCAxNywgMjksIDY5LCAxNSwgCi0gICAgNSwgMjM1LCAxNywgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjM1LCAxNywgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjM1LCAxNywgCi0gICAgMjksIDIxNSwgMTYzLCAyOSwgMTkzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIxMiwgMzcsIDE1LCA1LCAyMzUsIDE1LCAxNSwgNSwgMjM1LCAxNiwgMjQ5LCA2NSwgMjM1LCAxNSwgMTUsIDUsIDIzNSwgOCwgCi0gICAgMTUsIDUsIDIzNSwgNSwgMTUsIDUsIDIzNSwgMywgMTUsIDUsIDIzNSwgMiwgMTUsIDUsIDIzNSwgMCwgMTUsIDUsIDIzNSwgCi0gICAgMSwgMTEwLCAyMzUsIDAsIDE1LCA1LCAyMzQsIDI0NywgMTUsIDUsIDIzNCwgMjQ4LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgCi0gICAgMTUsIDUsIDIzNCwgMjQzLCAxNSwgNSwgMjM0LCAyNDQsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjM0LCAyNDQsIDI0OSwgNjUsIAotICAgIDIzNCwgMjQzLCAxNSwgNSwgMjM0LCAyNDEsIDE1LCA1LCAyMzQsIDI0MCwgMTUsIDUsIDIzNCwgMjEyLCAxNSwgNSwgMjM0LCAKLSAgICAyMTMsIDIzMywgMTQxLCAyOSwgMTExLCAxMTAsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzQsIDIxMywgMTEwLCAyMzQsIAotICAgIDIxMywgMjMzLCAxNDEsIDI5LCAxMTEsIDExMCwgMjMzLCAxNDEsIDI5LCA2OSwgMTUsIDUsIDIzNCwgMTYzLCAxNSwgNSwgCi0gICAgMjM0LCAxMDEsIDE1LCA1LCAyMzQsIDEwMiwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzQsIDEwMiwgMjksIDY5LCAxNSwgNSwgCi0gICAgMjM0LCAxMDIsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzNCwgOTgsIDE1LCA1LCAyMzQsIDkwLCAxNSwgNSwgMjM0LCA3NywgCi0gICAgMTUsIDUsIDIzNCwgNzYsIDE1LCA1LCAyMzQsIDc0LCAxNSwgNSwgMjM0LCA3NSwgMTEwLCAyMzQsIDc0LCAxNSwgNSwgMjMzLCAKLSAgICAyMzgsIDE1LCA1LCAyMzMsIDIzOSwgMTEwLCAyNDEsIDE2NiwgMjksIDI1MywgMTQ1LCAyMzMsIDIzOSwgMTEwLCAyNDEsIAotICAgIDE2NiwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjMzLCAyMzYsIDE1LCA1LCAyMzMsIDIzNCwgMTUsIDUsIDIzMywgMjM1LCAKLSAgICAyMTQsIDI0NCwgMTcsIDE1LCA1LCAyMzMsIDIzMywgMTUsIDUsIDIzMywgMjMwLCAxNSwgNSwgMjMzLCAyMzEsIDI0MiwgNzUsIAotICAgIDE1LCA1LCAyMzMsIDIyOSwgMTUsIDUsIDIzMywgMjE3LCAxNSwgNSwgMjMzLCAyMTgsIDIyNywgMzAsIDIzMywgMjE3LCAxNSwgCi0gICAgNSwgMjMzLCAyMTIsIDE1LCA1LCAyMzMsIDE5NCwgMTUsIDUsIDIzMywgMTU3LCAxNSwgNSwgMjMzLCAxNDAsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDYxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAxMTgsIDk0LCAyNDgsIDE2NSwgOTQsIDE1OSwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjQzLCA3MiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjMzLCAxMjgsIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1NCwgODYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyMzMsIAotICAgIDE0MSwgMjksIDI1MywgMTQ3LCAyMTIsIDMzLCAyMTcsIDE5MiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjUyLCA5NCwgMTUsIAotICAgIDUsIDIzMywgMTQxLCAyOSwgMjUxLCAxODQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0OCwgMTExLCAxNSwgNSwgMjMzLCAKLSAgICAxNDEsIDI5LCAyNDUsIDEwOCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIAotICAgIDI0MywgNzIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MiwgODQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MiwgODUsIDk0LCAKLSAgICAyNDIsIDg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAxNTksIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MiwgMTIsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDI0MSwgMTY2LCAyOSwgMjI4LCA1MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAzMSwgMjQyLCAKLSAgICA3NSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAxMSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAxMiwgOTQsIDE1OSwgCi0gICAgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM2LCAxMiwgOTQsIDIzMiwgMTU2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzQsIAotICAgIDEwMSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM0LCA5MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMzLCAyMzYsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIzMywgMjMwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzMsIDIzMSwgOTQsIDI0MSwgMTY2LCA5NCwgCi0gICAgNjEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzIsIDIyNiwgMTUsIDUsIAotICAgIDIzMywgMTQxLCAyOSwgMjMyLCAxNTYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMiwgMTQ0LCAxNSwgNSwgMjMzLCAxNDEsIAotICAgIDI5LCAyMzEsIDE1NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDIzMywgCi0gICAgMTQxLCAyOSwgMjMwLCAxMzEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAKLSAgICAyMjAsIDI0NCwgOTQsIDIxOCwgMjQ0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjAsIDE5MCwgOTQsIDI0MiwgMTY3LCA5NCwgCi0gICAgMjQ1LCA1MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxOTAsIDk0LCAyNDIsIDE2NywgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIyMCwgMTQ4LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjAsIDE0OSwgOTQsIDIyMCwgMTQ4LCAxNSwgCi0gICAgNSwgMjMzLCAxNDEsIDI5LCAyMTgsIDI0NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE4LCAzMywgMTUsIDUsIDIzMywgMTQxLCAKLSAgICAyOSwgMjE4LCAyMiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE3LCAyMzAsIDk0LCAxMTgsIDk0LCAyMTksIDI4LCA5NCwgCi0gICAgMjA1LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCA2OSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTExLCA5NCwgNjEsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDExMSwgOTQsIDExMSwgOTQsIDY5LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTUsIDE5OCwgOTQsIAotICAgIDI1MywgMTQ2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxMDAsIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjE5LCAxNjUsIDE1LCA1LCAyMzMsIDEzOCwgMTUsIDUsIDIzMywgMTM5LCAyOSwgMjIwLCAKLSAgICAyNDMsIDE1LCA1LCAyMzMsIDEzOSwgMjksIDIyMCwgMjQ0LCA5NCwgMjE4LCAyNDQsIDE1LCA1LCAyMzMsIDEzOSwgMjQyLCAKLSAgICA3NSwgMTUsIDUsIDIzMywgMTM5LCAyNDIsIDc2LCAxMTAsIDIzMywgMTM5LCAyNDIsIDc2LCAyMjAsIDI0MywgMTUsIDUsIAotICAgIDIzMywgMTM1LCAxNSwgNSwgMjMzLCAxMjgsIDE1LCA1LCAyMzMsIDEyOSwgMjksIDIzMywgMTI4LCAxNSwgNSwgMjMzLCAKLSAgICAxMjYsIDE1LCA1LCAyMzMsIDEyNywgMjksIDIzMywgMjE3LCAxNSwgNSwgMjMzLCAxMjcsIDI5LCAyMzMsIDIxOCwgOTQsIAotICAgIDIyMywgNTEsIDE1LCA1LCAyMzMsIDEzLCAxNSwgNSwgMjMyLCAyNTQsIDE1LCA1LCAyMzIsIDI0NSwgMTUsIDUsIDIzMiwgCi0gICAgMjI2LCAxNSwgNSwgMjMyLCAxNTYsIDE1LCA1LCAyMzIsIDE1NywgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzIsIDE1NCwgMTUsIAotICAgIDUsIDIzMiwgMTU1LCAyOSwgMjU0LCA4NiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyOSwgMjQ1LCAzNywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjQ1LCAzOCwgMjE3LCAxOTIsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyNDEsIDE2NiwgMjksIDI1MiwgOTQsIDE1LCA1LCAKLSAgICAyMzIsIDE1NSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIzNSwgNSwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjM1LCAzLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzUsIDQsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjM0LCAxMDEsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIzMywgMTU4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjksIDIzMywgMTQwLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzEsIDE1NywgOTQsIDI0NSwgMTA4LCAxNSwgNSwgMjMyLCAKLSAgICAxNTUsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjI4LCA5MiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgCi0gICAgMjIwLCAxMTgsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjIwLCAxMDAsIDk0LCAyNTEsIDU0LCAxNSwgCi0gICAgNSwgMjMyLCAxNTUsIDI5LCAyMTYsIDc3LCAxNSwgNSwgMjMyLCAxNTUsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDI0OSwgNjUsIDIzMiwgMTU0LCAxNSwgNSwgMjMyLCAxNTUsIDIyNywgMzAsIDIzMiwgMTU0LCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDIxOSwgMTY1LCAxNSwgNSwgMjMyLCAxNTUsIDIyMCwgMjI1LCAxNSwgNSwgMjMyLCAxNTMsIDE1LCA1LCAyMzIsIDE0OSwgCi0gICAgMTUsIDUsIDIzMiwgMTUwLCAxMTAsIDIzMiwgMTQ5LCAxNSwgNSwgMjMyLCAxNTAsIDIyNywgMzAsIDIzMiwgMTQ5LCAxNSwgCi0gICAgNSwgMjMyLCAxNTAsIDIyMCwgMjI1LCAxNSwgNSwgMjMyLCAxNDcsIDE1LCA1LCAyMzIsIDE0NCwgMTUsIDUsIDIzMiwgMTQyLCAKLSAgICAxNSwgNSwgMjMyLCAxNDMsIDExMCwgMjMyLCAxNDIsIDE1LCA1LCAyMzIsIDE0MywgMTEwLCAyMzIsIDE0MywgMjQzLCA3MywgCi0gICAgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMTg4LCAxNSwgNSwgMjMyLCA0MywgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzIsIDQzLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjMyLCA0MiwgMTUsIDUsIDIzMiwgMTUsIDE1LCA1LCAyMzEsIDIyOSwgMTUsIDUsIDIzMSwgCi0gICAgMjEwLCAxNSwgNSwgMjMxLCAyMDksIDE1LCA1LCAyMzEsIDE1NiwgMTUsIDUsIDIzMSwgMTEyLCAxNSwgNSwgMjMxLCA0MiwgCi0gICAgMTUsIDUsIDIzMSwgMSwgMTUsIDUsIDIzMCwgMTcyLCAxNSwgNSwgMjMwLCAxNzMsIDExMCwgMjMwLCAxNzIsIDE1LCA1LCAKLSAgICAyMzAsIDE2MywgMTUsIDUsIDIzMCwgMTY0LCAyNDIsIDc1LCAxNSwgNSwgMjMwLCAxNDgsIDE1LCA1LCAyMzAsIDEzNCwgMTUsIAotICAgIDUsIDIzMCwgMTMxLCAxNSwgNSwgMjMwLCAxMzIsIDI5LCA2MSwgMTUsIDUsIDIzMCwgMTMyLCAyOSwgMjMzLCAyMTcsIDE1LCAKLSAgICA1LCAyMzAsIDEzMiwgMjksIDIxMiwgMTA5LCAxNSwgNSwgMjMwLCAxMzIsIDExMCwgMjMwLCAxMzEsIDE1LCA1LCAyMzAsIAotICAgIDEzMiwgMTEwLCAyMzAsIDEzMiwgMjksIDExOCwgOTQsIDIwNSwgMTUsIDUsIDIzMCwgMTMyLCAyNDksIDY1LCAyMzAsIDEzMSwgCi0gICAgMTUsIDUsIDIzMCwgMTI5LCAxNSwgNSwgMjMwLCAxMzAsIDI5LCA2MSwgMTUsIDUsIDIzMCwgMTMwLCAyOSwgMTE4LCA5NCwgCi0gICAgMjQ3LCAyMTEsIDE1LCA1LCAyMzAsIDEzMCwgMjksIDI0NywgMjExLCAxNSwgNSwgMjMwLCAxMzAsIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyMDUsIDE1LCA1LCAyMzAsIDQ1LCAxNSwgNSwgMjMwLCAzNCwgMTUsIDUsIDIzMCwgMzUsIDIzNSwgMTkwLCAxNSwgNSwgCi0gICAgMjMwLCAzNSwgMjksIDIyMCwgMTUxLCAyMTcsIDE5MiwgMTUsIDUsIDIzMCwgMzUsIDIyNywgMzAsIDIzMCwgMzQsIDE1LCA1LCAKLSAgICAyMzAsIDMzLCAxNSwgNSwgMjMwLCAyOCwgMjI4LCAzNiwgMTUsIDUsIDIzMCwgMjcsIDE1LCA1LCAyMzAsIDI2LCAxNSwgNSwgCi0gICAgMjI5LCAxODcsIDE1LCA1LCAyMjksIDE4OCwgMjksIDYxLCAxNSwgNSwgMjI5LCAxODgsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIAotICAgIDIyOSwgMTg4LCAyMjAsIDIyNSwgMTUsIDUsIDIyOSwgNjQsIDE1LCA1LCAyMjksIDY1LCAyOSwgNzQsIDE1LCA1LCAyMjksIAotICAgIDYzLCAxNSwgNSwgMjI5LCAzNCwgMTUsIDUsIDIyOSwgMzUsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIyOSwgCi0gICAgMzUsIDI5LCAyNDMsIDczLCA5NCwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIDMyLCAxNSwgNSwgMjI5LCAzMywgCi0gICAgMjksIDI1NCwgMzIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjUzLCAxNDcsIAotICAgIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjI5LCAzMywgMjksIDIzMSwgMTU3LCAKLSAgICA5NCwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMjksIDMzLCAyOSwgCi0gICAgMjI4LCA1MCwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjAsIDI0NCwgOTQsIAotICAgIDExOCwgMjU0LCAzMiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMjAsIDI0NCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgCi0gICAgMjksIDIyMCwgMjQ0LCA5NCwgMjUzLCAxNDcsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMTUsIDE5OCwgCi0gICAgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDIxNSwgMTAwLCAxNSwgNSwgMjI5LCAyMSwgMTUsIDUsIDIyOCwgCi0gICAgOTIsIDE1LCA1LCAyMjgsIDY1LCAxNSwgNSwgMjI4LCA1MCwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjQzLCAKLSAgICA3MiwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjMxLCAyMTAsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIAotICAgIDIyMiwgMTc5LCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAyMjIsIDE4MCwgMTEwLCAyMjgsIDUxLCAyMzMsIDEzOSwgCi0gICAgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIyOCwgNTEsIAotICAgIDIxNywgMTkyLCAxNSwgNSwgMjI4LCA1MSwgMTEwLCAyMjgsIDUwLCAxNSwgNSwgMjI4LCA1MSwgMjQ5LCA2NSwgMjI4LCA1MCwgCi0gICAgMTUsIDUsIDIyOCwgNTEsIDI0OSwgNjUsIDIyOCwgNTEsIDIzMywgMTM5LCAxMTAsIDIzMywgMTM4LCAxNSwgNSwgMjI4LCAKLSAgICA0NSwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjUzLCAxNDEsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIAotICAgIDI1MSwgMTg0LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyNDYsIDI5LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAKLSAgICAxODQsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzUsIDMsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIzMywgMTU3LCAKLSAgICAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgCi0gICAgMjIwLCA5NywgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMjgsIDQ2LCAyMzQsIDc1LCAKLSAgICAyOSwgMjUxLCAxODQsIDE1LCA1LCAyMjgsIDQ2LCAyMzQsIDc1LCAyOSwgMjUxLCAxODUsIDY5LCAxNSwgNSwgMTkzLCAxNSwgCi0gICAgNSwgMjI2LCAyMDQsIDE1LCA1LCAyMjYsIDE3NCwgMTUsIDUsIDIyNiwgMTQ5LCAxNSwgNSwgMjI2LCAzNywgMTUsIDUsIAotICAgIDIyNSwgMjQwLCAxNSwgNSwgMjI1LCAyNDEsIDI5LCA2MSwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjU0LCAxODUsIDE1LCA1LCAKLSAgICAyMjUsIDI0MSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyNTEsIDU0LCAxNSwgNSwgMjI1LCAyNDEsIAotICAgIDI5LCA3NCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgNzIsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDI0MCwgMTA4LCAxNSwgNSwgCi0gICAgMjI1LCAyNDEsIDI5LCA2OSwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMjUsIDI0MSwgMjQ5LCAKLSAgICA2NSwgMjI1LCAyNDAsIDE1LCA1LCAyMjUsIDE4NSwgMTUsIDUsIDIyNSwgMTg2LCAyOSwgMjM0LCAyNDMsIDE1LCA1LCAyMjUsIAotICAgIDE4NiwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjI1LCAxODYsIDI5LCAyMTIsIDEwOSwgMTUsIDUsIDIyNSwgMTg2LCAyMjcsIAotICAgIDMwLCAyMjUsIDE4NSwgMTUsIDUsIDIwMywgMTUsIDUsIDIyNCwgNzIsIDE1LCA1LCAyMjMsIDE4OCwgMTUsIDUsIDIyMywgCi0gICAgNTEsIDE1LCA1LCAyMjIsIDIwMiwgMTUsIDUsIDIyMiwgMTkxLCAyMjgsIDM2LCAxNSwgNSwgMjIyLCAxOTAsIDE1LCA1LCAKLSAgICAyMjIsIDE5MSwgMjksIDYxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyNDYsIDMzLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyNDYsIAotICAgIDMxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAxNTksIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIzNCwgMjQ3LCAxNSwgNSwgMjIyLCAKLSAgICAxOTEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyMjIsIDE5MSwgMjksIAotICAgIDIzMSwgNDIsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIyOCwgNTAsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIyMiwgMTc5LCAxNSwgCi0gICAgNSwgMjIyLCAxOTEsIDI5LCAyMjAsIDIxMCwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE4LCA0MSwgMTUsIDUsIDIyMiwgMTkxLCAKLSAgICAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTk0LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIAotICAgIDE2NywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAxMjEsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTAwLCAxNSwgNSwgCi0gICAgMjIyLCAxOTEsIDExMCwgMjIyLCAxOTAsIDE1LCA1LCAyMjIsIDE5MSwgMjQyLCA3NSwgMTUsIDUsIDIyMiwgMTc5LCAxNSwgCi0gICAgNSwgMjIyLCAxODAsIDIzMywgMTQxLCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyMjIsIDE1NSwgMTUsIDUsIDIyMiwgMTQ3LCAKLSAgICAxNSwgNSwgMjIxLCAyNCwgMTUsIDUsIDIyMSwgMjIsIDE1LCA1LCAyMjEsIDIzLCAyOSwgNjEsIDE1LCA1LCAyMjEsIDIzLCAKLSAgICAyOSwgMjUyLCA5NCwgMTUsIDUsIDIyMSwgMjMsIDI5LCAyNDIsIDE2NiwgMTUsIDUsIDIyMSwgMjMsIDI5LCAyMjksIDE4NywgCi0gICAgMTUsIDUsIDIyMSwgMjMsIDI5LCAyMjAsIDE0OCwgMTUsIDUsIDIyMSwgMjMsIDI5LCAyMTYsIDYyLCAxNSwgNSwgMjIxLCAKLSAgICAyMywgMjksIDY5LCAxNSwgNSwgMjIxLCAyMywgMjksIDExMSwgOTQsIDYxLCAxNSwgNSwgMjIxLCAyMSwgMTUsIDUsIDIyMSwgCi0gICAgMTksIDE1LCA1LCAyMjEsIDEsIDE1LCA1LCAyMjAsIDI0MywgMTUsIDUsIDIyMCwgMjQ0LCAyNDAsIDIxMiwgMTUsIDUsIAotICAgIDIyMCwgMjQ0LCAxMTAsIDIyMCwgMjQ0LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAKLSAgICAxNSwgNSwgMjIwLCAyNDQsIDExMCwgMjIwLCAyNDQsIDIxOCwgNDIsIDExMCwgMjE4LCA0MiwgMjQzLCA3MywgMTEwLCAyNDMsIAotICAgIDcyLCAxNSwgNSwgMjIwLCAyMzYsIDE1LCA1LCAyMjAsIDIzMSwgMTUsIDUsIDIyMCwgMjI4LCAxNSwgNSwgMjIwLCAyMjcsIAotICAgIDE1LCA1LCAyMjAsIDIyNCwgMTUsIDUsIDIyMCwgMjEwLCAxNSwgNSwgMjIwLCAyMTEsIDI5LCA2MSwgMTUsIDUsIDIyMCwgCi0gICAgMjExLCAyOSwgMjM2LCAxMSwgMTUsIDUsIDIyMCwgMjA0LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCA2MSwgMTUsIDUsIDIyMCwgCi0gICAgMjA1LCAyOSwgMjUyLCA4MCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjUxLCAzOCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjQ3LCAKLSAgICAxNTgsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI0MywgNzIsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzNiwgMzAsIDE1LCA1LCAKLSAgICAyMjAsIDIwNSwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzMywgMjEyLCAxNSwgNSwgCi0gICAgMjIwLCAyMDUsIDI5LCAyMzIsIDE0NCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgMjMwLCAxNjMsIDE1LCA1LCAyMjAsIDIwNSwgCi0gICAgMjksIDIyMiwgMTc5LCAxNSwgNSwgMjIwLCAxOTgsIDE1LCA1LCAyMjAsIDE5MywgMTUsIDUsIDIyMCwgMTk0LCAyMTcsIAotICAgIDE5MiwgMTUsIDUsIDIyMCwgMTk0LCAxMTAsIDIyMCwgMTk0LCAyNTEsIDI4LCAxMTAsIDI1MSwgMjcsIDE1LCA1LCAyMjAsIAotICAgIDE4OSwgMTUsIDUsIDIyMCwgMTUwLCAxNSwgNSwgMjIwLCAxNTEsIDExMCwgMjM1LCAxOTEsIDIyMCwgMTUwLCAxNSwgNSwgCi0gICAgMjIwLCAxNDgsIDE1LCA1LCAyMjAsIDE0NywgMTUsIDUsIDIyMCwgMTE3LCAxNSwgNSwgMjIwLCAxMTgsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyMjAsIDEwOCwgMTUsIDUsIDIyMCwgMTA2LCAxNSwgNSwgMjIwLCAxMDcsIDExMCwgMjIwLCAxMDcsIDIyMCwgMTQ4LCAKLSAgICAxNSwgNSwgMjIwLCA5OSwgMTUsIDUsIDIyMCwgOTcsIDE1LCA1LCAyMTksIDI3LCAxNSwgNSwgMjE5LCAyOCwgMTEwLCAyMTksIAotICAgIDI3LCAxNSwgNSwgMjE4LCAyNTUsIDE1LCA1LCAyMTgsIDI1NCwgMTUsIDUsIDIxOCwgMjUyLCAxNSwgNSwgMjE4LCAyNDQsIAotICAgIDE1LCA1LCAyMTgsIDI0MywgMTUsIDUsIDIxOCwgMjE3LCAxNSwgNSwgMjE4LCAyMTYsIDE1LCA1LCAyMTgsIDUyLCAxNSwgNSwgCi0gICAgMjE4LCA1MywgMjUzLCAxMzIsIDE1LCA1LCAyMTgsIDUzLCAyOSwgMjQxLCAxNjUsIDE1LCA1LCAyMTgsIDUzLCAyOSwgMjMxLCAKLSAgICA0MiwgMTUsIDUsIDIxOCwgNTMsIDI0MiwgNzUsIDE1LCA1LCAyMTgsIDQxLCAxNSwgNSwgMjE4LCA0MiwgMTEwLCAyMTgsIAotICAgIDQyLCAyMjksIDY1LCAxMTAsIDIyOSwgNjUsIDI0NywgMTQwLCAxMTAsIDI0NywgMTM5LCAxNSwgNSwgMjE4LCA0MiwgMjE5LCAKLSAgICAxNjUsIDE1LCA1LCAyMTgsIDMzLCAxNSwgNSwgMTI2LCAyOSwgMjUxLCAxODQsIDE1LCA1LCAxMjYsIDI5LCAyNDIsIDg0LCAKLSAgICAxNSwgNSwgMTI2LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAxMjYsIDI5LCAyMjAsIDE1MCwgMTUsIDUsIDEyNiwgMjksIDIxNiwgCi0gICAgNzcsIDE1LCA1LCAxMjYsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIxOCwgMjIsIDE1LCA1LCAyMTgsIDEsIDE1LCA1LCAyMTcsIAotICAgIDIyOSwgMTUsIDUsIDIxNywgMjMwLCAyNDIsIDc1LCAxNSwgNSwgMjE3LCA3MSwgMTUsIDUsIDIxNywgNzIsIDIxNywgMTkyLCAKLSAgICAxNSwgNSwgMjE3LCA0NCwgMTUsIDUsIDIxNywgMjUsIDE1LCA1LCAyMTcsIDI2LCAyOSwgMjE4LCAyMiwgMTUsIDUsIDIxNywgCi0gICAgMjYsIDExMCwgMjE3LCAyNSwgMTUsIDUsIDIxNywgMjYsIDExMCwgMjE3LCAyNiwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIAotICAgIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIDIxNiwgODIsIDE1LCA1LCAyMTYsIDc3LCAxNSwgNSwgMjE2LCA3NSwgCi0gICAgMTUsIDUsIDIxNiwgNzIsIDE1LCA1LCAyMTYsIDYyLCAxNSwgNSwgMjE2LCA2MywgMTEwLCAyMTYsIDYzLCAyMTIsIDExMCwgCi0gICAgMTEwLCAyMTIsIDEwOSwgMTUsIDUsIDY5LCAxNSwgNSwgMTExLCAyNDIsIDg0LCAxNSwgNSwgMTExLCAxMTEsIDY5LCAxNSwgCi0gICAgNSwgMTExLCAxMTAsIDExMSwgMjI2LCAyMTQsIDExMCwgMjI2LCAyMTQsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgMTUsIDUsIAotICAgIDExMSwgMTEwLCAxMTEsIDIxOCwgMjE4LCAxMTAsIDIxOCwgMjE3LCAxNSwgNSwgMTExLCAxMTAsIDExMSwgMTExLCAyMjMsIAotICAgIDIwMiwgMTEwLCAxMTEsIDIyMywgMjAxLCAxNSwgNSwgMjE1LCAxOTcsIDE1LCA1LCAyMTUsIDE5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg4LCAxNSwgNSwgMjE1LCAxODksIDIzMywgMjEyLCAxNSwgNSwgMjE1LCAxODksIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjE1LCAKLSAgICAxODksIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjE1LCAxODksIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDIxNSwgCi0gICAgMTg5LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgMTExLCAyNDIsIDc1LCAxNSwgNSwgMjE1LCAxODksIDI0MiwgNzUsIDE1LCA1LCAKLSAgICAyMTUsIDE4OSwgMjIwLCAyMjUsIDE1LCA1LCAyMTUsIDE4OSwgMjIwLCAyMjYsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjE1LCAKLSAgICAxODQsIDE1LCA1LCAyMTUsIDE2NywgMTUsIDUsIDIxNSwgMTY4LCAyOSwgMjMzLCAxNDAsIDE1LCA1LCAyMTUsIDE2OCwgMjksIAotICAgIDIzMSwgMTU3LCA5NCwgMjQ4LCAxNjQsIDE1LCA1LCAyMTUsIDE2OCwgMjksIDIyMSwgMjIsIDE1LCA1LCAyMTUsIDE2OCwgCi0gICAgMjksIDY5LCAxNSwgNSwgMjE1LCAxNjYsIDE1LCA1LCAyMTUsIDE2MiwgMTUsIDUsIDIxNSwgMTYzLCAyOSwgMjM0LCAyMTIsIAotICAgIDE1LCA1LCAyMTUsIDE2MywgMjksIDE5MywgMTUsIDUsIDIxNSwgMTYwLCAxNSwgNSwgMjE1LCAxNjEsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyMTUsIDEyMSwgMTUsIDUsIDIxNSwgMTIyLCAyNDksIDY1LCAyMTUsIDEyMSwgMTUsIDUsIDIxNSwgMTIyLCAyMjAsIAotICAgIDIyNSwgMTUsIDUsIDIxNSwgMTE5LCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAxMTgsIDk0LCAxNTksIDE1LCA1LCAyMTUsIDEyMCwgCi0gICAgMjksIDExOCwgOTQsIDIwNSwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjU0LCA4NiwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMTU5LCAKLSAgICAxNSwgNSwgMjE1LCAxMjAsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjE1LCAxMjAsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIxNSwgCi0gICAgMTIwLCAyOSwgMjE1LCAxOTgsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjE1LCAxOTgsIDk0LCAyNTEsIAotICAgIDE4NCwgMTUsIDUsIDIxNSwgMTE4LCAxNSwgNSwgMjE1LCAxMTUsIDE1LCA1LCAyMTUsIDExNCwgMTUsIDUsIDIxNSwgMTEwLCAKLSAgICAxNSwgNSwgMjE1LCAxMTEsIDI5LCA2MSwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjUzLCAxNDEsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDEzNCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQ2LCAyMywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQzLCAxMTAsIDE1LCAKLSAgICA1LCAyMTUsIDExMSwgMjksIDI0MywgOTQsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjE1LCAxMTEsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDIsIDkyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAKLSAgICAxNTksIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzNiwgMzAsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzNiwgMTEsIDE1LCA1LCAKLSAgICAyMTUsIDExMSwgMjksIDIzNSwgMTYzLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzQsIDEwMSwgMTUsIDUsIDIxNSwgMTExLCAKLSAgICAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIzMSwgMSwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMTkzLCAxNSwgCi0gICAgNSwgMjE1LCAxMTEsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjIwLCAxMDYsIDE1LCA1LCAyMTUsIAotICAgIDExMSwgMjksIDIxNiwgODIsIDE1LCA1LCAyMTUsIDExMSwgMjksIDExMSwgOTQsIDI0MiwgODQsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMTUsIDEwOCwgMTUsIDUsIDIxNSwgMTA4LCAxNSwgNSwgMjE1LCAKLSAgICAxMDksIDI5LCA2OSwgMTUsIDUsIDIxNSwgMTAwLCAxNSwgNSwgMjE1LCAxMDEsIDI5LCA2MSwgMTUsIDUsIDIxNSwgMTAxLCAKLSAgICAyOSwgMjMzLCAyMzgsIDE1LCA1LCAyMTUsIDEwMSwgMjksIDIzMywgMjE3LCAxNSwgNSwgMjE1LCAxMDEsIDI5LCAyMTgsIAotICAgIDIyLCAxNSwgNSwgMjE1LCA5NiwgMTUsIDUsIDIxNSwgOTksIDE1LCA1LCAyMTUsIDk3LCAxNSwgNSwgMjE1LCA5MywgMTUsIAotICAgIDUsIDIxNSwgODIsIDE1LCA1LCAyMTUsIDgzLCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyMTUsIDgxLCAxNSwgNSwgMjEyLCAKLSAgICAxMDksIDE1LCA1LCAyMTIsIDExMCwgMjE3LCAxOTIsIDE1LCA1LCAyMTIsIDExMCwgOTEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIAotICAgIDIxMiwgMTA2LCAxNSwgNSwgMjEyLCA5OSwgMTUsIDUsIDIxMiwgODYsIDE1LCA1LCAyMTIsIDM3LCAxNSwgNSwgMjEyLCAzOCwgCi0gICAgMTEwLCAyMTIsIDM3LCAxNSwgNSwgMjEyLCAzNiwgMTUsIDUsIDIxMiwgMzQsIDE1LCA1LCAyMTIsIDM1LCAyMzUsIDcsIAotICAgIDIxNywgMTkyLCAxNSwgNSwgMjEyLCAyOSwgMTUsIDUsIDIxMiwgMjEsIDE1LCA1LCAyMTIsIDgsIDE1LCA1LCAyMTIsIDYsIAotICAgIDE1LCA1LCAyMTIsIDcsIDI5LCA2MSwgMTUsIDUsIDIxMiwgNSwgMTUsIDUsIDIxMiwgNCwgMTUsIDEyOCwgNSwgMTE3LCAKLSAgICAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTMzLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI1MywgMTQ2LCAxNSwgCi0gICAgMTI4LCA1LCAyNDQsIDUwLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIAotICAgIDIyMSwgNDMsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIAotICAgIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAxMzMsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjQ3LCAxMzksIDE1LCAKLSAgICAxMjgsIDUsIDI0NCwgNTAsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgCi0gICAgMjIxLCA0MywgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgCi0gICAgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0MywgMjM3LCA2OSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgNjksIDE1LCAxMjgsIDUsIAotICAgIDIyMCwgNTMsIDY5LCAxNSwgMTI4LCA1LCAyMjEsIDQzLCA2OSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDY5LCAxNSwgMTI4LCAKLSAgICA1LCAyMjksIDMxLCA2OSwgMTUsIDEyOCwgNSwgMTIyLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAxMTcsIDI0MywgMTQsIDE1LCAKLSAgICAxMjgsIDUsIDEzMywgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIAotICAgIDI0MywgMTQsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDI0MywgMTQsIDE1LCAKLSAgICAxMjgsIDUsIDI0NSwgMTUwLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAxMjIsIAotICAgIDI0MywgMTEsIDE1LCAxMjgsIDUsIDExNywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMTMzLCAyNDMsIDExLCAxNSwgMTI4LCA1LCAKLSAgICAyNDMsIDIzNywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjQzLCAxMSwgMTUsIDEyOCwgNSwgMTE3LCAyMjEsIDEsIAotICAgIDE1LCAxMjgsIDUsIDEzMywgMjIxLCAxLCAxNSwgMTI4LCA1LCAxMzMsIDIyMSwgMiwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCAKLSAgICA1LCAyNDMsIDIzNywgMjIxLCAxLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyMjEsIDEsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIAotICAgIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjIxLCAxLCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjIxLCAxLCAxNSwgCi0gICAgMTI4LCA1LCAyMjksIDMxLCAyMjEsIDEsIDE1LCAxMjgsIDUsIDEyMiwgMjIwLCAyNTIsIDE1LCAxMjgsIDUsIDExNywgMjIwLCAKLSAgICAyNTIsIDE1LCAxMjgsIDUsIDEzMywgMjIwLCAyNTIsIDE1LCAxMjgsIDUsIDEzMywgMjIwLCAyNTMsIDIxNCwgMjQ0LCAxNywgCi0gICAgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyMjAsIDI1MiwgMTUsIDEyOCwgCi0gICAgNSwgMjIxLCAyLCAyOSwgMjQzLCA5NSwgOTQsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyMjEsIDIsIDI5LCAyNDMsIDk1LCAKLSAgICA5NCwgMjMxLCAxLCAxNSwgMTI4LCA1LCAxMjIsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDExNywgMjUxLCAyNCwgMTUsIDEyOCwgCi0gICAgNSwgMTMzLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMzMsIDI1MSwgMjUsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgNSwgMjQzLCAKLSAgICAyMzcsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI1MSwgMjQsIDE1LCAxMjgsIDUsIDEzMywgMjE0LCAyNDQsIAotICAgIDI0MywgMjQ1LCAyNDUsIDM5LCAxNSwgMTI4LCA1LCAxMzMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjQ1LCAzNiwgMTUsIDEyOCwgCi0gICAgNSwgMjQzLCAyMzcsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjMyLCAyNDYsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ0LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzIsIAotICAgIDI0NywgNjEsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ3LCAyNTMsIDc0LCAxNSwgCi0gICAgMTI4LCA1LCAyMjAsIDUzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDI1MywgMTQzLCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzNiwgMywgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDUsIAotICAgIDYxLCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgNSwgMjUzLCA3NCwgMTUsIDEyOCwgNSwgCi0gICAgMjQ1LCAxNTAsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjE1LCA5NSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgMjE1LCA5NCwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDE5LCAxNSwgCi0gICAgMTI4LCA1LCAyMjksIDMxLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzNiwgMTgsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgCi0gICAgMjQ0LCAyNDMsIDI0NSwgMjM2LCAxNywgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDIwLCAKLSAgICA2MSwgMTUsIDEyOCwgNSwgMTE3LCAyNTMsIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDEzMywgMjUzLCAxNDcsIDIxNywgCi0gICAgMTkyLCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjUzLCAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTMsIAotICAgIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI1MywgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMTIyLCAKLSAgICAyNTIsIDY5LCAxNSwgMTI4LCA1LCAxMTcsIDI1MiwgNjksIDE1LCAxMjgsIDUsIDEzMywgMjUyLCA2OSwgMTUsIDEyOCwgNSwgCi0gICAgMjQzLCAyMzcsIDI1MiwgNjksIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNTIsIDcwLCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIAotICAgIDUsIDI0NCwgNTAsIDI1MiwgNjksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI1MiwgNzAsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgCi0gICAgNSwgMjI5LCA0MSwgMTUsIDEyOCwgNSwgMjI5LCA0MiwgMTUsIDEyOCwgNSwgMTIyLCAyNDUsIDM1LCAxNSwgMTI4LCA1LCAKLSAgICAxMTcsIDI0NSwgMzUsIDE1LCAxMjgsIDUsIDEyMiwgMjE3LCAxMjIsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAxMTcsIDIxNywgCi0gICAgMTIwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIwLCA0MiwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDEyMiwgCi0gICAgMjE3LCAxMjIsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgNjEsIDE1LCAxMjgsIDUsIDExNywgMjE3LCAxMjAsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgNjEsIDE1LCAxMjgsIDUsIDEyMiwgMjQ1LCAxNDYsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAxMjIsIDIyNCwgCi0gICAgMTY3LCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgNTMsIDI1MywgMTM1LCAxMjIsIDIyMCwgNDMsIDE1LCAxMjgsIDUsIDUzLCAKLSAgICAyNTMsIDEzNSwgMTIyLCAyMjQsIDE2NiwgMTUsIDIyNSwgMjcsIDUsIDUzLCAyNTMsIDEzNSwgMjEzLCAxOTYsIDI0NywgCi0gICAgMTI0LCAxNSwgMjI1LCAyNywgNSwgNzEsIDI0OSwgMTY0LCAxNSwgMjI1LCAyNywgNSwgMjQ3LCAyMDcsIDI0OSwgMTY0LCAKLSAgICAxNSwgMjI1LCAyNywgNSwgMjQ3LCAyMDcsIDIxNiwgMTc5LCAxMCwgMTEsIDI1NSwgNTgsIDEwLCAxMSwgMjU1LCA1NywgMTAsIAotICAgIDExLCAyNTUsIDU2LCAxMCwgMTEsIDI1NSwgNTUsIDEwLCAxMSwgMjU1LCA1NCwgMTAsIDExLCAyNTUsIDUzLCAxMCwgMTEsIAotICAgIDI1NSwgNTIsIDEwLCAxMSwgMjU1LCA1MSwgMTAsIDExLCAyNTUsIDUwLCAxMCwgMTEsIDI1NSwgNDksIDEwLCAxMSwgMjU1LCAKLSAgICA0OCwgMTAsIDExLCAyNTUsIDQ3LCAxMCwgMTEsIDI1NSwgNDYsIDEwLCAxMSwgMjU1LCA0NSwgMTAsIDExLCAyNTUsIDQ0LCAKLSAgICAxMCwgMTEsIDI1NSwgNDMsIDEwLCAxMSwgMjU1LCA0MiwgMTAsIDExLCAyNTUsIDQxLCAxMCwgMTEsIDI1NSwgNDAsIDEwLCAKLSAgICAxMSwgMjU1LCAzOSwgMTAsIDExLCAyNTUsIDM4LCAxMCwgMTEsIDI1NSwgMzcsIDEwLCAxMSwgMjU1LCAzNiwgMTAsIDExLCAKLSAgICAyNTUsIDM1LCAxMCwgMTEsIDI1NSwgMzQsIDEwLCAxMSwgMjU1LCAzMywgMTAsIDExLCAyNTUsIDMyLCAxMCwgMTEsIDI1NSwgCi0gICAgMzEsIDEwLCAxMSwgMjU1LCAzMCwgMTAsIDExLCAyNTUsIDI5LCAxMCwgMTEsIDI1NSwgMjgsIDEwLCAxMSwgMjU1LCAyNywgCi0gICAgMTAsIDExLCAyNTUsIDI2LCAxMCwgMTEsIDI1NSwgMjUsIDEwLCAxMSwgMjU1LCAyNCwgMTAsIDExLCAyNTUsIDIzLCAxMCwgCi0gICAgMTEsIDI1NSwgMjIsIDEwLCAxMSwgMjU1LCAyMSwgMTAsIDExLCAyNTUsIDIwLCAxMCwgMTEsIDI1NSwgMTksIDEwLCAxMSwgCi0gICAgMjU1LCAxOCwgMTAsIDExLCAyNTUsIDE3LCAxMCwgMTEsIDI1NSwgMTYsIDEwLCAxMSwgMjU1LCAxNSwgMTAsIDExLCAyNTUsIAotICAgIDE0LCAxMCwgMTEsIDI1NSwgMTMsIDEwLCAxMSwgMjU1LCAxMiwgMTAsIDExLCAyNTUsIDExLCAxMCwgMTEsIDI1NSwgMTAsIAotICAgIDEwLCAxMSwgMjU1LCA5LCAxMCwgMTEsIDI1NSwgOCwgMTAsIDExLCAyNTUsIDcsIDEwLCAxMSwgMjU1LCA2LCAxMCwgMTEsIAotICAgIDI1NSwgNSwgMTAsIDExLCAyNTUsIDQsIDEwLCAxMSwgMjU1LCAzLCAxMCwgMTEsIDI1NSwgMiwgMTAsIDExLCAyNTUsIDEsIAotICAgIDEwLCAxMSwgMjU1LCAwLCAxMCwgMTEsIDI1NCwgMjU1LCAxMCwgMTEsIDI1NCwgMjU0LCAxMCwgMTEsIDI1NCwgMjUzLCAxMCwgCi0gICAgMTEsIDI1NCwgMjUyLCAxMCwgMTEsIDI1NCwgMjUxLCAxMCwgMTEsIDI1NCwgMjUwLCAxMCwgMTEsIDI1NCwgMjQ5LCAxMCwgCi0gICAgMTEsIDI1NCwgMjQ4LCAxMCwgMTEsIDI1NCwgMjQ3LCAxMCwgMTEsIDI1NCwgMjQ2LCAxMCwgMTEsIDI1NCwgMjQ1LCAxMCwgCi0gICAgMTEsIDI1NCwgMjQ0LCAxMCwgMTEsIDI1NCwgMjQzLCAxMCwgMTEsIDI1NCwgMjQyLCAxMCwgMTEsIDI1NCwgMjQxLCAxMCwgCi0gICAgMTEsIDI1NCwgMjQwLCAxMCwgMTEsIDI1NCwgMjM5LCAxMCwgMTEsIDI1NCwgMjM4LCAxMCwgMTEsIDI1NCwgMjM3LCAxMCwgCi0gICAgMTEsIDI1NCwgMjM2LCAxMCwgMTEsIDI1NCwgMjM1LCAxMCwgMTEsIDI1MywgNzIsIDEwLCAxMSwgMjUzLCA3MCwgMTAsIDExLCAKLSAgICAyNTMsIDY4LCAxMCwgMTEsIDI1MywgNjYsIDEwLCAxMSwgMjUzLCA2NCwgMTAsIDExLCAyNTMsIDYzLCAxMCwgMTEsIDI1MywgCi0gICAgNjEsIDEwLCAxMSwgMjUzLCA1OSwgMTAsIDExLCAyNTMsIDU3LCAxMCwgMTEsIDI1MywgNTUsIDEwLCAxMSwgMjUwLCAyNDgsIAotICAgIDEwLCAxMSwgMjUwLCAyNDcsIDEwLCAxMSwgMjUwLCAyNDYsIDEwLCAxMSwgMjUwLCAyNDUsIDEwLCAxMSwgMjUwLCAyNDQsIAotICAgIDEwLCAxMSwgMjUwLCAyNDMsIDEwLCAxMSwgMjUwLCAyNDIsIDEwLCAxMSwgMjUwLCAyNDEsIDEwLCAxMSwgMjUwLCAyNDAsIAotICAgIDEwLCAxMSwgMjUwLCAyMzksIDEwLCAxMSwgMjUwLCAyMzgsIDEwLCAxMSwgMjUwLCAyMzcsIDEwLCAxMSwgMjUwLCAyMzYsIAotICAgIDEwLCAxMSwgMjUwLCAyMzUsIDEwLCAxMSwgMjUwLCAyMzQsIDEwLCAxMSwgMjUwLCAyMzMsIDEwLCAxMSwgMjUwLCAyMzIsIAotICAgIDEwLCAxMSwgMjUwLCAyMzEsIDEwLCAxMSwgMjUwLCAyMzAsIDEwLCAxMSwgMjUwLCAyMjksIDEwLCAxMSwgMjUwLCAyMjgsIAotICAgIDEwLCAxMSwgMjUwLCAyMjcsIDEwLCAxMSwgMjUwLCAyMjYsIDEwLCAxMSwgMjUwLCAyMjUsIDEwLCAxMSwgMjUwLCAyMjQsIAotICAgIDEwLCAxMSwgMjUwLCAyMjMsIDEwLCAxMSwgMjUwLCAyMjIsIDEwLCAxMSwgMjUwLCAyMjEsIDEwLCAxMSwgMjQ5LCAyLCAxMCwgCi0gICAgMTEsIDI0OSwgMSwgMTAsIDExLCAyNDksIDAsIDEwLCAxMSwgMjQ4LCAyNTUsIDEwLCAxMSwgMjQ4LCAyNTQsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNTMsIDEwLCAxMSwgMjQ4LCAyNTIsIDEwLCAxMSwgMjQ4LCAyNTEsIDEwLCAxMSwgMjQ4LCAyNTAsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNDksIDEwLCAxMSwgMjQ4LCAyNDgsIDEwLCAxMSwgMjQ4LCAyNDcsIDEwLCAxMSwgMjQ4LCAyNDYsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNDUsIDEwLCAxMSwgMjQ4LCAyNDQsIDEwLCAxMSwgMjQ4LCAyNDMsIDEwLCAxMSwgMjQ4LCAyNDIsIDEwLCAxMSwgCi0gICAgMjQ4LCAyNDEsIDEwLCAxMSwgMjQ4LCAyNDAsIDEwLCAxMSwgMjQ4LCAyMzksIDEwLCAxMSwgMjQ4LCAyMzgsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMzcsIDEwLCAxMSwgMjQ4LCAyMzYsIDEwLCAxMSwgMjQ4LCAyMzUsIDEwLCAxMSwgMjQ4LCAyMzQsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMzMsIDEwLCAxMSwgMjQ4LCAyMzIsIDEwLCAxMSwgMjQ4LCAyMzEsIDEwLCAxMSwgMjQ4LCAyMzAsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMjksIDEwLCAxMSwgMjQ4LCAyMjgsIDEwLCAxMSwgMjQ4LCAyMjcsIDEwLCAxMSwgMjQ4LCAyMjYsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMjUsIDEwLCAxMSwgMjQ4LCAyMjQsIDEwLCAxMSwgMjQ4LCAyMjMsIDEwLCAxMSwgMjQ4LCAyMjIsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMjEsIDEwLCAxMSwgMjQ4LCAyMjAsIDEwLCAxMSwgMjQ4LCAyMTksIDEwLCAxMSwgMjQ4LCAyMTgsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMTcsIDEwLCAxMSwgMjQ4LCAyMTYsIDEwLCAxMSwgMjQ4LCAyMTUsIDEwLCAxMSwgMjQ4LCAyMTQsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMTMsIDEwLCAxMSwgMjQ4LCAyMTIsIDEwLCAxMSwgMjQ4LCAyMTEsIDEwLCAxMSwgMjQ4LCAyMTAsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMDksIDEwLCAxMSwgMjQ4LCAyMDgsIDEwLCAxMSwgMjQ4LCAyMDcsIDEwLCAxMSwgMjQ4LCAyMDYsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMDUsIDEwLCAxMSwgMjQ4LCAyMDQsIDEwLCAxMSwgMjQ4LCAyMDMsIDEwLCAxMSwgMjQ4LCAyMDIsIDEwLCAxMSwgCi0gICAgMjQ4LCAyMDEsIDEwLCAxMSwgMjQ4LCAyMDAsIDEwLCAxMSwgMjQ4LCAxOTksIDEwLCAxMSwgMjQ4LCAxOTgsIDEwLCAxMSwgCi0gICAgMjQ4LCAxOTcsIDEwLCAxMSwgMjQ4LCAxOTYsIDEwLCAxMSwgMjQ4LCAxOTUsIDEwLCAxMSwgMjQ4LCAxOTQsIDEwLCAxMSwgCi0gICAgMjQ4LCAxOTMsIDEwLCAxMSwgMjQ4LCAxOTIsIDEwLCAxMSwgMjQ4LCAxOTEsIDEwLCAxMSwgMjQ4LCAxOTAsIDEwLCAxMSwgCi0gICAgMjQ4LCAxODksIDEwLCAxMSwgMjQ4LCAxODgsIDEwLCAxMSwgMjQ4LCAxODcsIDEwLCAxMSwgMjQ4LCAxODYsIDEwLCAxMSwgCi0gICAgMjQ4LCAxODUsIDEwLCAxMSwgMjQ4LCAxODQsIDEwLCAxMSwgMjQ4LCAxODMsIDEwLCAxMSwgMjQ4LCAxODIsIDEwLCAxMSwgCi0gICAgMjQ4LCAxODEsIDEwLCAxMSwgMjQ4LCAxODAsIDEwLCAxMSwgMjQ4LCAxNzksIDEwLCAxMSwgMjQ4LCAxNzgsIDEwLCAxMSwgCi0gICAgMjQ4LCAxNzcsIDEwLCAxMSwgMjQ4LCAxNzYsIDEwLCAxMSwgMjQ4LCAxNzUsIDEwLCAxMSwgMjQ4LCAxNzQsIDEwLCAxMSwgCi0gICAgMjQ4LCAxNzMsIDEwLCAxMSwgMjQ4LCAxNzIsIDEwLCAxMSwgMjQ4LCAxNzEsIDEwLCAxMSwgMjQ4LCAxNzAsIDEwLCAxMSwgCi0gICAgMjQ4LCAxNjksIDEwLCAxMSwgMjQ4LCAxNjgsIDEwLCAxMSwgMjQ4LCAxNjcsIDEwLCAxMSwgMjQ1LCAyMzUsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMzQsIDEwLCAxMSwgMjQ1LCAyMzMsIDEwLCAxMSwgMjQ1LCAyMzIsIDEwLCAxMSwgMjQ1LCAyMzEsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMzAsIDEwLCAxMSwgMjQ1LCAyMjksIDEwLCAxMSwgMjQ1LCAyMjgsIDEwLCAxMSwgMjQ1LCAyMjcsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMjYsIDEwLCAxMSwgMjQ1LCAyMjUsIDEwLCAxMSwgMjQ1LCAyMjQsIDEwLCAxMSwgMjQ1LCAyMjMsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMjIsIDEwLCAxMSwgMjQ1LCAyMjEsIDEwLCAxMSwgMjQ1LCAyMjAsIDEwLCAxMSwgMjQ1LCAyMTksIDEwLCAxMSwgCi0gICAgMjQ1LCAyMTgsIDEwLCAxMSwgMjQ1LCAyMTcsIDEwLCAxMSwgMjQ1LCAyMTYsIDEwLCAxMSwgMjQ1LCAyMTUsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMTQsIDEwLCAxMSwgMjQ1LCAyMTMsIDEwLCAxMSwgMjQ1LCAyMTIsIDEwLCAxMSwgMjQ1LCAyMTEsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMTAsIDEwLCAxMSwgMjQ1LCAyMDksIDEwLCAxMSwgMjQ1LCAyMDgsIDEwLCAxMSwgMjQ1LCAyMDcsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMDYsIDEwLCAxMSwgMjQ1LCAyMDUsIDEwLCAxMSwgMjQ1LCAyMDQsIDEwLCAxMSwgMjQ1LCAyMDMsIDEwLCAxMSwgCi0gICAgMjQ1LCAyMDIsIDEwLCAxMSwgMjQ1LCAyMDEsIDEwLCAxMSwgMjQ1LCAyMDAsIDEwLCAxMSwgMjQ1LCAxOTksIDEwLCAxMSwgCi0gICAgMjQ1LCAxOTgsIDEwLCAxMSwgMjQ1LCAxOTcsIDEwLCAxMSwgMjQ1LCAxOTYsIDEwLCAxMSwgMjQ1LCAxOTUsIDEwLCAxMSwgCi0gICAgMjQ1LCAxOTQsIDEwLCAxMSwgMjQ1LCAxOTMsIDEwLCAxMSwgMjQ1LCAxOTIsIDEwLCAxMSwgMjQ0LCAyMjksIDEwLCAxMSwgCi0gICAgMjQ0LCAyMjgsIDEwLCAxMSwgMjQ0LCAyMjcsIDEwLCAxMSwgMjQ0LCAyMjYsIDEwLCAxMSwgMjQ0LCAyMjUsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMjQsIDEwLCAxMSwgMjQ0LCAyMjMsIDEwLCAxMSwgMjQ0LCAyMjIsIDEwLCAxMSwgMjQ0LCAyMjEsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMjAsIDEwLCAxMSwgMjQ0LCAyMTksIDEwLCAxMSwgMjQ0LCAyMTgsIDEwLCAxMSwgMjQ0LCAyMTcsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMTYsIDEwLCAxMSwgMjQ0LCAyMTUsIDEwLCAxMSwgMjQ0LCAyMTQsIDEwLCAxMSwgMjQ0LCAyMTMsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMTIsIDEwLCAxMSwgMjQ0LCAyMTEsIDEwLCAxMSwgMjQ0LCAyMTAsIDEwLCAxMSwgMjQ0LCAyMDksIDEwLCAxMSwgCi0gICAgMjQ0LCAyMDgsIDEwLCAxMSwgMjQ0LCAyMDcsIDEwLCAxMSwgMjQ0LCAyMDYsIDEwLCAxMSwgMjQ0LCAyMDUsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMDQsIDEwLCAxMSwgMjQ0LCAyMDMsIDEwLCAxMSwgMjQ0LCAyMDIsIDEwLCAxMSwgMjQ0LCAyMDEsIDEwLCAxMSwgCi0gICAgMjQ0LCAyMDAsIDEwLCAxMSwgMjQ0LCAxOTksIDEwLCAxMSwgMjQ0LCAxOTgsIDEwLCAxMSwgMjQ0LCAxOTcsIDEwLCAxMSwgCi0gICAgMjQ0LCAxOTYsIDEwLCAxMSwgMjQ0LCAxOTUsIDEwLCAxMSwgMjQ0LCAxOTQsIDEwLCAxMSwgMjQ0LCAxOTMsIDEwLCAxMSwgCi0gICAgMjQ0LCAxOTIsIDEwLCAxMSwgMjQ0LCAxOTEsIDEwLCAxMSwgMjQ0LCAxOTAsIDEwLCAxMSwgMjQ0LCAxODksIDEwLCAxMSwgCi0gICAgMjQ0LCAxODgsIDEwLCAxMSwgMjQ0LCAxODcsIDEwLCAxMSwgMjQ0LCAxODYsIDEwLCAxMSwgMjQ0LCAxODUsIDEwLCAxMSwgCi0gICAgMjQ0LCAxODQsIDEwLCAxMSwgMjQ0LCAxODMsIDEwLCAxMSwgMjQ0LCAxODIsIDEwLCAxMSwgMjQ0LCAxODEsIDEwLCAxMSwgCi0gICAgMjQ0LCAxODAsIDEwLCAxMSwgMjQ0LCAxNzksIDEwLCAxMSwgMjQ0LCAxNzgsIDEwLCAxMSwgMjQ0LCAxNzcsIDEwLCAxMSwgCi0gICAgMjQ0LCAxNzYsIDEwLCAxMSwgMjQ0LCAxNzUsIDEwLCAxMSwgMjQ0LCAxNzQsIDEwLCAxMSwgMjQ0LCAxNzMsIDEwLCAxMSwgCi0gICAgMjQ0LCAxNzIsIDEwLCAxMSwgMjQ0LCAxNzEsIDEwLCAxMSwgMjQ0LCAxNzAsIDEwLCAxMSwgMjQ0LCAxNjksIDEwLCAxMSwgCi0gICAgMjQ0LCAxNjgsIDEwLCAxMSwgMjQ0LCAxNjcsIDEwLCAxMSwgMjQ0LCAxNjYsIDEwLCAxMSwgMjQ0LCAxNjUsIDEwLCAxMSwgCi0gICAgMjQzLCAxNzYsIDEwLCAxMSwgMjQzLCAxNzUsIDEwLCAxMSwgMjQzLCAxNzQsIDEwLCAxMSwgMjQzLCAxNzMsIDEwLCAxMSwgCi0gICAgMjQzLCAxNzIsIDEwLCAxMSwgMjQzLCAxNzEsIDEwLCAxMSwgMjQzLCAxNzAsIDEwLCAxMSwgMjQzLCAxNjksIDEwLCAxMSwgCi0gICAgMjQzLCAxNjgsIDEwLCAxMSwgMjQzLCAxNjcsIDEwLCAxMSwgMjQzLCAxNjYsIDEwLCAxMSwgMjQzLCAxNjUsIDEwLCAxMSwgCi0gICAgMjQzLCAxNjQsIDEwLCAxMSwgMjQzLCAxNjMsIDEwLCAxMSwgMjQzLCAxNjIsIDEwLCAxMSwgMjQzLCAxNjEsIDEwLCAxMSwgCi0gICAgMjQzLCAxNjAsIDEwLCAxMSwgMjQzLCAxNTksIDEwLCAxMSwgMjQzLCAxNTgsIDEwLCAxMSwgMjQzLCAxNTcsIDEwLCAxMSwgCi0gICAgMjQzLCAxNTYsIDEwLCAxMSwgMjQzLCAxNTUsIDEwLCAxMSwgMjQzLCAxNTQsIDEwLCAxMSwgMjQzLCAxNTMsIDEwLCAxMSwgCi0gICAgMjQzLCAxNTIsIDEwLCAxMSwgMjQzLCAxNTEsIDEwLCAxMSwgMjQzLCAxNTAsIDEwLCAxMSwgMjQzLCAxNDksIDEwLCAxMSwgCi0gICAgMjQzLCAxNDgsIDEwLCAxMSwgMjQzLCAxNDcsIDEwLCAxMSwgMjQzLCAxNDYsIDEwLCAxMSwgMjQzLCAxNDUsIDEwLCAxMSwgCi0gICAgMjQzLCAxNDQsIDEwLCAxMSwgMjQzLCAxNDMsIDEwLCAxMSwgMjQzLCAxNDIsIDEwLCAxMSwgMjQzLCAxNDEsIDEwLCAxMSwgCi0gICAgMjQzLCAxNDAsIDEwLCAxMSwgMjQzLCAxMzksIDEwLCAxMSwgMjQzLCAxMzgsIDEwLCAxMSwgMjQzLCAxMzcsIDEwLCAxMSwgCi0gICAgMjQzLCAxMzYsIDEwLCAxMSwgMjQzLCAxMzUsIDEwLCAxMSwgMjQzLCAxMzQsIDEwLCAxMSwgMjQzLCAxMzMsIDEwLCAxMSwgCi0gICAgMjQzLCAxMzIsIDEwLCAxMSwgMjQzLCAxMzEsIDEwLCAxMSwgMjQzLCAxMzAsIDEwLCAxMSwgMjQzLCAxMjksIDEwLCAxMSwgCi0gICAgMjQzLCAxMjgsIDEwLCAxMSwgMjQzLCAxMjcsIDEwLCAxMSwgMjQzLCAxMjYsIDEwLCAxMSwgMjQzLCAxMjUsIDEwLCAxMSwgCi0gICAgMjQzLCAxMjQsIDEwLCAxMSwgMjQzLCAxMjMsIDEwLCAxMSwgMjQzLCAxMjIsIDEwLCAxMSwgMjQzLCAxMjEsIDEwLCAxMSwgCi0gICAgMjQzLCAxMjAsIDEwLCAxMSwgMjQzLCAxMTksIDEwLCAxMSwgMjQzLCAxMTgsIDEwLCAxMSwgMjQzLCAxMTcsIDEwLCAxMSwgCi0gICAgMjQzLCAxMTYsIDEwLCAxMSwgMjQzLCAxMTUsIDEwLCAxMSwgMjQzLCAxMTQsIDEwLCAxMSwgMjQzLCAxMTMsIDEwLCAxMSwgCi0gICAgMjQyLCAzOSwgMTAsIDExLCAyNDIsIDM4LCAxMCwgMTEsIDI0MiwgMzcsIDEwLCAxMSwgMjQyLCAzNiwgMTAsIDExLCAyNDIsIAotICAgIDM1LCAxMCwgMTEsIDI0MiwgMzQsIDEwLCAxMSwgMjQyLCAzMywgMTAsIDExLCAyNDIsIDMyLCAxMCwgMTEsIDI0MiwgMzEsIAotICAgIDEwLCAxMSwgMjQwLCAxMzAsIDEwLCAxMSwgMjQwLCAxMjksIDEwLCAxMSwgMjQwLCAxMjgsIDEwLCAxMSwgMjQwLCAxMjcsIAotICAgIDEwLCAxMSwgMjQwLCAxMjYsIDEwLCAxMSwgMjQwLCAxMjUsIDEwLCAxMSwgMjQwLCAxMjQsIDEwLCAxMSwgMjQwLCAxMjMsIAotICAgIDEwLCAxMSwgMjQwLCAxMjIsIDEwLCAxMSwgMjQwLCAxMjEsIDEwLCAxMSwgMjQwLCAxMjAsIDEwLCAxMSwgMjQwLCAxMTksIAotICAgIDEwLCAxMSwgMjQwLCAxMTgsIDEwLCAxMSwgMjQwLCAxMTcsIDEwLCAxMSwgMjQwLCAxMTYsIDEwLCAxMSwgMjQwLCAxMTUsIAotICAgIDEwLCAxMSwgMjQwLCAxMTQsIDEwLCAxMSwgMjQwLCAxMTMsIDEwLCAxMSwgMjQwLCAxMTIsIDEwLCAxMSwgMjM1LCAyNiwgCi0gICAgMTAsIDExLCAyMzUsIDI1LCAxMCwgMTEsIDIzNSwgMjQsIDEwLCAxMSwgMjM1LCAyMywgMTAsIDExLCAyMzUsIDIyLCAxMCwgCi0gICAgMTEsIDIzNSwgMjEsIDEwLCAxMSwgMjM1LCAyMCwgMTAsIDExLCAyMzUsIDE5LCAxMCwgMTEsIDIzMywgMTY4LCAxMCwgMTEsIAotICAgIDIzMywgMTY3LCAxMCwgMTEsIDIzMywgMTY2LCAxMCwgMTEsIDIzMywgMTY1LCAxMCwgMTEsIDIzMywgMTY0LCAxMCwgMTEsIAotICAgIDIzMywgMTYzLCAxMCwgMTEsIDIzMywgMTYyLCAxMCwgMTEsIDIzMywgMTYxLCAxMCwgMTEsIDIzMywgMTYwLCAxMCwgMTEsIAotICAgIDIzMywgMTU5LCAxMCwgMTEsIDIzMiwgMTA5LCAxMCwgMTEsIDIzMiwgMTA4LCAxMCwgMTEsIDIzMiwgMTA3LCAxMCwgMTEsIAotICAgIDIzMiwgMTA2LCAxMCwgMTEsIDIzMiwgMTA1LCAxMCwgMTEsIDIzMiwgMTA0LCAxMCwgMTEsIDIzMiwgMTAzLCAxMCwgMTEsIAotICAgIDIzMiwgMTAyLCAxMCwgMTEsIDIzMiwgMTAxLCAxMCwgMTEsIDIzMiwgMTAwLCAxMCwgMTEsIDIzMiwgOTksIDEwLCAxMSwgCi0gICAgMjMyLCA5OCwgMTAsIDExLCAyMzIsIDk3LCAxMCwgMTEsIDIzMiwgOTYsIDEwLCAxMSwgMjMyLCA5NSwgMTAsIDExLCAyMzIsIAotICAgIDk0LCAxMCwgMTEsIDIzMiwgOTMsIDEwLCAxMSwgMjMyLCA5MiwgMTAsIDExLCAyMzIsIDkxLCAxMCwgMTEsIDIzMiwgOTAsIAotICAgIDEwLCAxMSwgMjMyLCA4OSwgMTAsIDExLCAyMzIsIDg4LCAxMCwgMTEsIDIzMiwgODcsIDEwLCAxMSwgMjMyLCA4NiwgMTAsIAotICAgIDExLCAyMzIsIDg1LCAxMCwgMTEsIDIzMiwgODQsIDEwLCAxMSwgMjMyLCA4MywgMTAsIDExLCAyMzIsIDgyLCAxMCwgMTEsIAotICAgIDIzMiwgODEsIDEwLCAxMSwgMjMyLCA4MCwgMTAsIDExLCAyMzIsIDc5LCAxMCwgMTEsIDIzMiwgNzgsIDEwLCAxMSwgMjMyLCAKLSAgICA3NywgMTAsIDExLCAyMzIsIDc2LCAxMCwgMTEsIDIzMiwgNzUsIDEwLCAxMSwgMjMyLCA3NCwgMTAsIDExLCAyMzIsIDczLCAKLSAgICAxMCwgMTEsIDIzMiwgNzIsIDEwLCAxMSwgMjMyLCA3MSwgMTAsIDExLCAyMzIsIDcwLCAxMCwgMTEsIDIzMiwgNjksIDEwLCAKLSAgICAxMSwgMjMyLCA2OCwgMTAsIDExLCAyMzIsIDY3LCAxMCwgMTEsIDIzMiwgNjYsIDEwLCAxMSwgMjMyLCA2NSwgMTAsIDExLCAKLSAgICAyMzIsIDY0LCAxMCwgMTEsIDIzMiwgNjMsIDEwLCAxMSwgMjMyLCA2MiwgMTAsIDExLCAyMzIsIDYxLCAxMCwgMTEsIDIzMiwgCi0gICAgNjAsIDEwLCAxMSwgMjMyLCA1OSwgMTAsIDExLCAyMzIsIDU4LCAxMCwgMTEsIDIzMiwgNTcsIDEwLCAxMSwgMjMyLCA1NiwgCi0gICAgMTAsIDExLCAyMzIsIDU1LCAxMCwgMTEsIDIzMiwgNTQsIDEwLCAxMSwgMjMyLCA1MywgMTAsIDExLCAyMzIsIDUyLCAxMCwgCi0gICAgMTEsIDIzMiwgNTEsIDEwLCAxMSwgMjMyLCA1MCwgMTAsIDExLCAyMzIsIDQ5LCAxMCwgMTEsIDIzMiwgNDgsIDEwLCAxMSwgCi0gICAgMjMyLCA0NywgMTAsIDExLCAyMzIsIDQ2LCAxMCwgMTEsIDIzMiwgNDUsIDEwLCAxMSwgMjMyLCA0NCwgMTAsIDExLCAyMzAsIAotICAgIDk1LCAxMCwgMTEsIDIzMCwgOTQsIDEwLCAxMSwgMjMwLCA5MywgMTAsIDExLCAyMzAsIDkyLCAxMCwgMTEsIDIzMCwgOTEsIAotICAgIDEwLCAxMSwgMjMwLCA5MCwgMTAsIDExLCAyMzAsIDg5LCAxMCwgMTEsIDIzMCwgODgsIDEwLCAxMSwgMjMwLCA4NywgMTAsIAotICAgIDExLCAyMzAsIDg2LCAxMCwgMTEsIDIzMCwgODUsIDEwLCAxMSwgMjMwLCA4NCwgMTAsIDExLCAyMzAsIDgzLCAxMCwgMTEsIAotICAgIDIzMCwgODIsIDEwLCAxMSwgMjMwLCA4MSwgMTAsIDExLCAyMzAsIDgwLCAxMCwgMTEsIDIzMCwgNzksIDEwLCAxMSwgMjMwLCAKLSAgICA3OCwgMTAsIDExLCAyMzAsIDc3LCAxMCwgMTEsIDIzMCwgNzYsIDEwLCAxMSwgMjMwLCA3NSwgMTAsIDExLCAyMzAsIDc0LCAKLSAgICAxMCwgMTEsIDIzMCwgNzMsIDEwLCAxMSwgMjMwLCA3MiwgMTAsIDExLCAyMzAsIDcxLCAxMCwgMTEsIDIzMCwgNzAsIDEwLCAKLSAgICAxMSwgMjMwLCA2OSwgMTAsIDExLCAyMzAsIDY4LCAxMCwgMTEsIDIzMCwgNjcsIDEwLCAxMSwgMjMwLCA2NiwgMTAsIDExLCAKLSAgICAyMzAsIDY1LCAxMCwgMTEsIDIzMCwgNjQsIDEwLCAxMSwgMjMwLCA2MywgMTAsIDExLCAyMzAsIDYyLCAxMCwgMTEsIDIzMCwgCi0gICAgNjEsIDEwLCAxMSwgMjMwLCA2MCwgMTAsIDExLCAyMzAsIDU5LCAxMCwgMTEsIDIzMCwgNTgsIDEwLCAxMSwgMjMwLCA1NywgCi0gICAgMTAsIDExLCAyMzAsIDU2LCAxMCwgMTEsIDIzMCwgNTUsIDEwLCAxMSwgMjMwLCA1NCwgMTAsIDExLCAyMzAsIDUzLCAxMCwgCi0gICAgMTEsIDIzMCwgNTIsIDEwLCAxMSwgMjMwLCA1MSwgMTAsIDExLCAyMzAsIDUwLCAxMCwgMTEsIDIzMCwgNDksIDEwLCAxMSwgCi0gICAgMjMwLCA0OCwgMTAsIDExLCAyMzAsIDQ3LCAxMCwgMTEsIDIyOCwgMjIyLCAxMCwgMTEsIDIyOCwgMjIxLCAxMCwgMTEsIAotICAgIDIyOCwgMjIwLCAxMCwgMTEsIDIyOCwgMjE5LCAxMCwgMTEsIDIyOCwgMjE4LCAxMCwgMTEsIDIyOCwgMjE3LCAxMCwgMTEsIAotICAgIDIyOCwgMjE2LCAxMCwgMTEsIDIyOCwgMjE1LCAxMCwgMTEsIDIyOCwgMjE0LCAxMCwgMTEsIDIyOCwgMjEzLCAxMCwgMTEsIAotICAgIDIyOCwgMjEyLCAxMCwgMTEsIDIyOCwgMjExLCAxMCwgMTEsIDIyOCwgMjEwLCAxMCwgMTEsIDIyOCwgMjA5LCAxMCwgMTEsIAotICAgIDIyOCwgMjA4LCAxMCwgMTEsIDIyOCwgMjA3LCAxMCwgMTEsIDIyOCwgMjA2LCAxMCwgMTEsIDIyOCwgMjA1LCAxMCwgMTEsIAotICAgIDIyOCwgMjA0LCAxMCwgMTEsIDIyOCwgMjAzLCAxMCwgMTEsIDIyOCwgMjAyLCAxMCwgMTEsIDIyOCwgMjAxLCAxMCwgMTEsIAotICAgIDIyOCwgOTEsIDEwLCAxMSwgMjI4LCA5MCwgMTAsIDExLCAyMjgsIDg5LCAxMCwgMTEsIDIyOCwgODgsIDEwLCAxMSwgMjI4LCAKLSAgICA4NywgMTAsIDExLCAyMjgsIDg2LCAxMCwgMTEsIDIyOCwgODUsIDEwLCAxMSwgMjI4LCA4NCwgMTAsIDExLCAyMjgsIDgzLCAKLSAgICAxMCwgMTEsIDIyOCwgODIsIDEwLCAxMSwgMjI4LCA4MSwgMTAsIDExLCAyMjgsIDgwLCAxMCwgMTEsIDIyOCwgNzksIDEwLCAKLSAgICAxMSwgMjI4LCA3OCwgMTAsIDExLCAyMjgsIDc3LCAxMCwgMTEsIDIyOCwgNzYsIDEwLCAxMSwgMjI4LCA3NSwgMTAsIDExLCAKLSAgICAyMjgsIDc0LCAxMCwgMTEsIDIyOCwgNzMsIDEwLCAxMSwgMjI4LCA3MiwgMTAsIDExLCAyMjgsIDcxLCAxMCwgMTEsIDIyOCwgCi0gICAgNzAsIDEwLCAxMSwgMjI4LCA2OSwgMTAsIDExLCAyMjgsIDY4LCAxMCwgMTEsIDIyOCwgNjcsIDEwLCAxMSwgMjI4LCA2NiwgCi0gICAgMTAsIDExLCAyMjcsIDE5NiwgMTAsIDExLCAyMjcsIDE5NSwgMTAsIDExLCAyMjcsIDE5NCwgMTAsIDExLCAyMjcsIDE5MywgCi0gICAgMTAsIDExLCAyMjcsIDE5MiwgMTAsIDExLCAyMjcsIDE5MSwgMTAsIDExLCAyMjcsIDE5MCwgMTAsIDExLCAyMjcsIDE4OSwgCi0gICAgMTAsIDExLCAyMjcsIDE4OCwgMTAsIDExLCAyMjcsIDE4NywgMTAsIDExLCAyMjcsIDE4NiwgMTAsIDExLCAyMjcsIDE4NSwgCi0gICAgMTAsIDExLCAyMjcsIDE4NCwgMTAsIDExLCAyMjcsIDE4MywgMTAsIDExLCAyMjcsIDE4MiwgMTAsIDExLCAyMjcsIDE4MSwgCi0gICAgMTAsIDExLCAyMjcsIDE4MCwgMTAsIDExLCAyMjcsIDE3OSwgMTAsIDExLCAyMjcsIDE3OCwgMTAsIDExLCAyMjcsIDE3NywgCi0gICAgMTAsIDExLCAyMjcsIDE3NiwgMTAsIDExLCAyMjcsIDE3NSwgMTAsIDExLCAyMjcsIDE3NCwgMTAsIDExLCAyMjcsIDE3MywgCi0gICAgMTAsIDExLCAyMjcsIDE3MiwgMTAsIDExLCAyMjcsIDE3MSwgMTAsIDExLCAyMjcsIDE3MCwgMTAsIDExLCAyMjcsIDE2OSwgCi0gICAgMTAsIDExLCAyMjcsIDE2OCwgMTAsIDExLCAyMjcsIDE2NywgMTAsIDExLCAyMjcsIDE2NiwgMTAsIDExLCAyMjcsIDE2NSwgCi0gICAgMTAsIDExLCAyMjcsIDE2NCwgMTAsIDExLCAyMjcsIDE2MywgMTAsIDExLCAyMjcsIDE2MiwgMTAsIDExLCAyMjcsIDE2MSwgCi0gICAgMTAsIDExLCAyMjcsIDE2MCwgMTAsIDExLCAyMjcsIDE1OSwgMTAsIDExLCAyMjcsIDE1OCwgMTAsIDExLCAyMjcsIDE1NywgCi0gICAgMTAsIDExLCAyMjcsIDE1NiwgMTAsIDExLCAyMjcsIDE1NSwgMTAsIDExLCAyMjcsIDE1NCwgMTAsIDExLCAyMjcsIDE1MywgCi0gICAgMTAsIDExLCAyMjcsIDE1MiwgMTAsIDExLCAyMjcsIDE1MSwgMTAsIDExLCAyMjcsIDE1MCwgMTAsIDExLCAyMjcsIDE0OSwgCi0gICAgMTAsIDExLCAyMjcsIDE0OCwgMTAsIDExLCAyMjcsIDE0NywgMTAsIDExLCAyMjcsIDE0NiwgMTAsIDExLCAyMjcsIDE0NSwgCi0gICAgMTAsIDExLCAyMjcsIDE0NCwgMTAsIDExLCAyMjcsIDE0MywgMTAsIDExLCAyMjcsIDE0MiwgMTAsIDExLCAyMjcsIDE0MSwgCi0gICAgMTAsIDExLCAyMjcsIDE0MCwgMTAsIDExLCAyMjcsIDEzOSwgMTAsIDExLCAyMjcsIDEzOCwgMTAsIDExLCAyMjcsIDEzNywgCi0gICAgMTAsIDExLCAyMjcsIDEzNiwgMTAsIDExLCAyMjcsIDEzNSwgMTAsIDExLCAyMjcsIDEzNCwgMTAsIDExLCAyMjcsIDEzMywgCi0gICAgMTAsIDExLCAyMjcsIDEzMiwgMTAsIDExLCAyMjcsIDEzMSwgMTAsIDExLCAyMjcsIDEzMCwgMTAsIDExLCAyMjcsIDEyOSwgCi0gICAgMTAsIDExLCAyMjcsIDEyOCwgMTAsIDExLCAyMjcsIDEyNywgMTAsIDExLCAyMjcsIDEyNiwgMTAsIDExLCAyMjcsIDEyNSwgCi0gICAgMTAsIDExLCAyMjcsIDEyNCwgMTAsIDExLCAyMjcsIDEyMywgMTAsIDExLCAyMjcsIDEyMiwgMTAsIDExLCAyMjYsIDIyOCwgCi0gICAgMTAsIDExLCAyMjYsIDIyNywgMTAsIDExLCAyMjYsIDIyNiwgMTAsIDExLCAyMjYsIDIyNSwgMTAsIDExLCAyMjYsIDIyNCwgCi0gICAgMTAsIDExLCAyMjYsIDIyMywgMTAsIDExLCAyMjYsIDIyMiwgMTAsIDExLCAyMjYsIDIyMSwgMTAsIDExLCAyMjYsIDIyMCwgCi0gICAgMTAsIDExLCAyMjYsIDIxOSwgMTAsIDExLCAyMjYsIDIxOCwgMTAsIDExLCAyMjYsIDIxNywgMTAsIDExLCAyMjYsIDIxNiwgCi0gICAgMTAsIDExLCAyMjQsIDIzOSwgMTAsIDExLCAyMjQsIDIzOCwgMTAsIDExLCAyMjQsIDIzNywgMTAsIDExLCAyMjQsIDIzNiwgCi0gICAgMTAsIDExLCAyMjQsIDIzNSwgMTAsIDExLCAyMjQsIDIzNCwgMTAsIDExLCAyMjQsIDIzMywgMTAsIDExLCAyMjQsIDExMSwgCi0gICAgMTAsIDExLCAyMjQsIDExMCwgMTAsIDExLCAyMjQsIDEwOSwgMTAsIDExLCAyMjQsIDEwOCwgMTAsIDExLCAyMjQsIDEwNywgCi0gICAgMTAsIDExLCAyMjQsIDEwNiwgMTAsIDExLCAyMjQsIDEwNSwgMTAsIDExLCAyMjQsIDEwNCwgMTAsIDExLCAyMjQsIDEwMywgCi0gICAgMTAsIDExLCAyMjQsIDEwMiwgMTAsIDExLCAyMjQsIDEwMSwgMTAsIDExLCAyMjQsIDEwMCwgMTAsIDExLCAyMjQsIDk5LCAKLSAgICAxMCwgMTEsIDIyNCwgOTgsIDEwLCAxMSwgMjI0LCA5NywgMTAsIDExLCAyMjQsIDk2LCAxMCwgMTEsIDIyNCwgOTUsIDEwLCAKLSAgICAxMSwgMjI0LCA5NCwgMTAsIDExLCAyMjQsIDkzLCAxMCwgMTEsIDIyNCwgOTIsIDEwLCAxMSwgMjI0LCA5MSwgMTAsIDExLCAKLSAgICAyMjQsIDkwLCAxMCwgMTEsIDIyNCwgODksIDEwLCAxMSwgMjI0LCA4OCwgMTAsIDExLCAyMjQsIDg3LCAxMCwgMTEsIDIyNCwgCi0gICAgODYsIDEwLCAxMSwgMjI0LCA4NSwgMTAsIDExLCAyMjQsIDg0LCAxMCwgMTEsIDIyNCwgODMsIDEwLCAxMSwgMjI0LCA4MiwgCi0gICAgMTAsIDExLCAyMjQsIDgxLCAxMCwgMTEsIDIyNCwgODAsIDEwLCAxMSwgMjI0LCA3OSwgMTAsIDExLCAyMjQsIDc4LCAxMCwgCi0gICAgMTEsIDIyMywgMSwgMTAsIDExLCAyMjMsIDAsIDEwLCAxMSwgMjIyLCAyNTUsIDEwLCAxMSwgMjIyLCAyNTQsIDEwLCAxMSwgCi0gICAgMjIyLCAyNTMsIDEwLCAxMSwgMjIyLCAyNTIsIDEwLCAxMSwgMjIyLCAyNTEsIDEwLCAxMSwgMjIyLCAyNTAsIDEwLCAxMSwgCi0gICAgMjIyLCAyNDksIDEwLCAxMSwgMjIyLCAyNDgsIDEwLCAxMSwgMjIyLCAyNDcsIDEwLCAxMSwgMjIyLCAyNDYsIDEwLCAxMSwgCi0gICAgMjIyLCAyNDUsIDEwLCAxMSwgMjIyLCAyNDQsIDEwLCAxMSwgMjIyLCAyNDMsIDEwLCAxMSwgMjIyLCAyNDIsIDEwLCAxMSwgCi0gICAgMjIyLCAyNDEsIDEwLCAxMSwgMjIyLCAyNDAsIDEwLCAxMSwgMjIyLCAyMzksIDEwLCAxMSwgMjIyLCAyMzgsIDEwLCAxMSwgCi0gICAgMjIyLCAyMzcsIDEwLCAxMSwgMjIyLCAyMzYsIDEwLCAxMSwgMjIyLCAyMzUsIDEwLCAxMSwgMjIyLCAyMzQsIDEwLCAxMSwgCi0gICAgMjIyLCAyMzMsIDEwLCAxMSwgMjIyLCAyMzIsIDEwLCAxMSwgMjIyLCAyMzEsIDEwLCAxMSwgMjIyLCAyMzAsIDEwLCAxMSwgCi0gICAgMjIyLCAyMjksIDEwLCAxMSwgMjIyLCAyMjgsIDEwLCAxMSwgMjIyLCAyMjcsIDEwLCAxMSwgMjIyLCAyMjYsIDEwLCAxMSwgCi0gICAgMjIyLCAyMjUsIDEwLCAxMSwgMjIyLCAyMjQsIDEwLCAxMSwgMjIyLCAyMjMsIDEwLCAxMSwgMjIyLCAyMjIsIDEwLCAxMSwgCi0gICAgMjIyLCAyMjEsIDEwLCAxMSwgMjIyLCAyMjAsIDEwLCAxMSwgMjIyLCAyMTksIDEwLCAxMSwgMjIyLCAyMTgsIDEwLCAxMSwgCi0gICAgMjIyLCAyMTcsIDEwLCAxMSwgMjIyLCAyMTYsIDEwLCAxMSwgMjIyLCAyMTUsIDEwLCAxMSwgMjIyLCAyMTQsIDEwLCAxMSwgCi0gICAgMjIyLCAyMTMsIDEwLCAxMSwgMjIyLCAyMTIsIDEwLCAxMSwgMjIyLCAyMTEsIDEwLCAxMSwgMjIyLCAyMTAsIDEwLCAxMSwgCi0gICAgMjIyLCAyMDksIDEwLCAxMSwgMjIyLCAyMDgsIDEwLCAxMSwgMjIyLCAyMDcsIDEwLCAxMSwgMjIyLCAyMDYsIDEwLCAxMSwgCi0gICAgMjIyLCAyMDUsIDEwLCAxMSwgMjIyLCAyMDQsIDEwLCAxMSwgMjE4LCA5NywgMTAsIDExLCAyMTgsIDk2LCAxMCwgMTEsIAotICAgIDIxOCwgOTUsIDEwLCAxMSwgMjE4LCA5NCwgMTAsIDExLCAyMTgsIDkzLCAxMCwgMTEsIDIxOCwgOTIsIDEwLCAxMSwgMjE4LCAKLSAgICA5MSwgMTAsIDExLCAyMTgsIDkwLCAxMCwgMTEsIDIxOCwgODksIDEwLCAxMSwgMjE4LCA4OCwgMTAsIDExLCAyMTgsIDg3LCAKLSAgICAxMCwgMTEsIDIxOCwgODYsIDEwLCAxMSwgMjE4LCA4NSwgMTAsIDExLCAyMTgsIDg0LCAxMCwgMTEsIDIxOCwgODMsIDEwLCAKLSAgICAxMSwgMjE4LCA4MiwgMTAsIDExLCAyMTgsIDgxLCAxMCwgMTEsIDIxOCwgODAsIDEwLCAxMSwgMjE4LCA3OSwgMTAsIDExLCAKLSAgICAyMTgsIDc4LCAxMCwgMTEsIDIxOCwgNzcsIDEwLCAxMSwgMjE4LCA3NiwgMTAsIDExLCAyMTgsIDc1LCAxMCwgMTEsIDIxOCwgCi0gICAgNzQsIDEwLCAxMSwgMjE4LCA3MywgMTAsIDExLCAyMTgsIDcyLCAxMCwgMTEsIDIxOCwgNzEsIDEwLCAxMSwgMjE4LCA3MCwgCi0gICAgMTAsIDExLCAyMTgsIDY5LCAxMCwgMTEsIDIxOCwgNjgsIDEwLCAxMSwgMjE4LCA2NywgMTAsIDExLCAyMTgsIDY2LCAxMCwgCi0gICAgMTEsIDIxOCwgNjUsIDEwLCAxMSwgMjE4LCA2NCwgMTAsIDExLCAyMTgsIDYzLCAxMCwgMTEsIDIxOCwgNjIsIDEwLCAxMSwgCi0gICAgMjE4LCA2MSwgMTAsIDExLCAyMTgsIDYwLCAxMCwgMTEsIDIxOCwgNTksIDEwLCAxMSwgMjE4LCA1OCwgMTAsIDExLCAyMTgsIAotICAgIDU3LCAxMCwgMTEsIDIxOCwgNTYsIDEwLCAxMSwgMjE4LCA1NSwgMTAsIDExLCAyMTgsIDU0LCAxMCwgMTEsIDIxNSwgMjQ1LCAKLSAgICAxMCwgMTEsIDIxNSwgMjQ0LCAxMCwgMTEsIDIxNSwgMjQzLCAxMCwgMTEsIDIxNSwgMjQyLCAxMCwgMTEsIDIxNSwgMjQxLCAKLSAgICAxMCwgMTEsIDIxNSwgMjQwLCAxMCwgMTEsIDIxNSwgMjM5LCAxMCwgMTEsIDIxNSwgMjM4LCAxMCwgMTEsIDIxNSwgMjM3LCAKLSAgICAxMCwgMTEsIDIxNSwgMjM2LCAxMCwgMTEsIDIxNSwgMjM1LCAxMCwgMTEsIDIxNSwgMjM0LCAxMCwgMTEsIDIxNSwgMjMzLCAKLSAgICAxMCwgMTEsIDIxNSwgMjMyLCAxMCwgMTEsIDIxNSwgMjMxLCAxMCwgMTEsIDIxNSwgMjMwLCAxMCwgMTEsIDIxNSwgMjI5LCAKLSAgICAxMCwgMTEsIDIxNSwgMjI4LCAxMCwgMTEsIDIxNSwgMjI3LCAxMCwgMTEsIDIxNSwgMjI2LCAxMCwgMTEsIDIxNSwgMjI1LCAKLSAgICAxMCwgMTEsIDIxNSwgMjI0LCAxMCwgMTEsIDIxNSwgMjIzLCAxMCwgMTEsIDIxNSwgMjIyLCAxMCwgMTEsIDIxNSwgMjIxLCAKLSAgICAxMCwgMTEsIDIxNSwgMjIwLCAxMCwgMTEsIDIxNSwgMjE5LCAxMCwgMTEsIDIxNSwgMjE4LCAxMCwgMTEsIDIxNSwgMjE3LCAKLSAgICAxMCwgMTEsIDIxNSwgMjE2LCAxMCwgMTEsIDIxNSwgMjE1LCAxMCwgMTEsIDIxNSwgMjE0LCAxMCwgMTEsIDIxNSwgMjEzLCAKLSAgICAxMCwgMTEsIDIxNSwgMjEyLCAxMCwgMTEsIDIxNSwgMjExLCAxMCwgMTEsIDIxNSwgMjEwLCAxMCwgMTEsIDIxNSwgMjA5LCAKLSAgICAxMCwgMTEsIDIxNSwgMjA4LCAxMCwgMTEsIDIxNSwgMjA3LCAxMCwgMTEsIDIxNSwgMjA2LCAxMCwgMTEsIDIxNSwgMjA1LCAKLSAgICAxMCwgMTEsIDIxNSwgMjA0LCAxMCwgMTEsIDIxNSwgMjAzLCAxMCwgMTEsIDIxNSwgMjAyLCAxMCwgMTEsIDIxNSwgMjAxLCAKLSAgICAxMCwgMTEsIDIxNSwgMjAwLCAxMCwgMTEsIDIxNSwgMTk5LCAxMCwgMTEsIDIxNSwgNzgsIDEwLCAxMSwgMjE1LCA3NywgMTAsIAotICAgIDExLCAyMTUsIDc2LCAxMCwgMTEsIDIxNSwgNzUsIDEwLCAxMSwgMjE1LCA3NCwgMTAsIDExLCAyMTUsIDczLCAxMCwgMTEsIAotICAgIDIxNSwgNzIsIDEwLCAxMSwgMjE1LCA3MSwgMTAsIDExLCAyMTUsIDcwLCAxMCwgMTEsIDIxNSwgNjksIDEwLCAxMSwgMjE1LCAKLSAgICA2OCwgMTAsIDExLCAyMTUsIDY3LCAxMCwgMTEsIDIxNSwgNjYsIDEwLCAxMSwgMjE1LCA2NSwgMTAsIDExLCAyMTUsIDY0LCAKLSAgICAxMCwgMTEsIDIxNSwgNjMsIDEwLCAxMSwgMjE1LCA2MiwgMTAsIDExLCAyMTUsIDYxLCAxMCwgMTEsIDIxNSwgNjAsIDEwLCAKLSAgICAxMSwgMjE1LCA1OSwgMTAsIDExLCAyMTUsIDU4LCAxMCwgMTEsIDIxNSwgNTcsIDEwLCAxMSwgMjE1LCA1NiwgMTAsIDExLCAKLSAgICAyMTUsIDU1LCAxMCwgMTEsIDIxNSwgNTQsIDEwLCAxMSwgMjE1LCA1MywgMTAsIDExLCAyMTUsIDUyLCAxMCwgMTEsIDIxNSwgCi0gICAgNTEsIDEwLCAxMSwgMjE1LCA1MCwgMTAsIDExLCAyMTUsIDQ5LCAxMCwgMTEsIDIxNSwgNDgsIDEwLCAxMSwgMjE1LCA0NywgCi0gICAgMTAsIDExLCAyMTUsIDQ2LCAxMCwgMTEsIDIxNSwgNDUsIDEwLCAxMSwgMjE1LCA0NCwgMTAsIDExLCAyMTUsIDQzLCAxMCwgCi0gICAgMTEsIDIxNSwgNDIsIDEwLCAxMSwgMjE1LCA0MSwgMTAsIDExLCAyMTUsIDQwLCAxMCwgMTEsIDIxNSwgMzksIDEwLCAxMSwgCi0gICAgMjE1LCAzOCwgMTAsIDExLCAyMTUsIDM3LCAxMCwgMTEsIDIxNSwgMzYsIDEwLCAxMSwgMjE1LCAzNSwgMTAsIDExLCAyMTUsIAotICAgIDM0LCAxMCwgMTEsIDIxNSwgMzMsIDEwLCAxMSwgMjE1LCAzMiwgMTAsIDExLCAyMTUsIDMxLCAxMCwgMTEsIDIxNSwgMzAsIAotICAgIDEwLCAxMSwgMjE1LCAyOSwgMTAsIDExLCAyMTUsIDI4LCAxMCwgMTEsIDIxNSwgMjcsIDEwLCAxMSwgMjE1LCAyNiwgMTAsIAotICAgIDExLCAyMTUsIDI1LCAxMCwgMTEsIDIxNSwgMjQsIDEwLCAxMSwgMjE1LCAyMywgMTAsIDExLCAyMTUsIDIyLCAxMCwgMTEsIAotICAgIDIxNSwgMjEsIDEwLCAxMSwgMjE1LCAyMCwgMTAsIDExLCAyMTUsIDE5LCAxMCwgMTEsIDIxNSwgMTgsIDEwLCAxMSwgMjE1LCAKLSAgICAxNywgMTAsIDExLCAyMTUsIDE2LCAxMCwgMTEsIDIxNSwgMTUsIDEwLCAxMSwgMjE1LCAxNCwgMTAsIDExLCAyMTUsIDEzLCAKLSAgICAxMCwgMTEsIDIxNSwgMTIsIDEwLCAxMSwgMjE1LCAxMSwgMTAsIDExLCAyMTUsIDEwLCAxMCwgMTEsIDIxNSwgOSwgMTAsIAotICAgIDExLCAyMTUsIDgsIDEwLCAxMSwgMjE1LCA3LCAxMCwgMTEsIDIxNSwgNiwgMTAsIDExLCAyMTUsIDUsIDEwLCAxMSwgMjE1LCAKLSAgICA0LCAxMCwgMTEsIDIxNSwgMywgMTAsIDExLCAyMTUsIDIsIDEwLCAxMSwgMjE0LCA4MSwgMTAsIDExLCAyMTQsIDgwLCAxMCwgCi0gICAgMTEsIDIxNCwgNzksIDEwLCAxMSwgMjE0LCA3OCwgMTAsIDExLCAyMTQsIDc3LCAxMCwgMTEsIDIxNCwgNzYsIDEwLCAxMSwgCi0gICAgMjE0LCA3NSwgMTAsIDExLCAyMTQsIDc0LCAxMCwgMTEsIDIxNCwgNzMsIDEwLCAxMSwgMjE0LCA3MiwgMTAsIDExLCAyMTQsIAotICAgIDcxLCAxMCwgMTEsIDIxNCwgNzAsIDEwLCAxMSwgMjE0LCA2OSwgMTAsIDExLCAyMTQsIDY4LCAxMCwgMTEsIDIxNCwgNjcsIAotICAgIDEwLCAxMSwgMjE0LCA2NiwgMTAsIDExLCAyMTQsIDY1LCAxMCwgMTEsIDIxNCwgNjQsIDEwLCAxMSwgMjE0LCA2MywgMTAsIAotICAgIDExLCAyMTQsIDYyLCAxMCwgMTEsIDIxNCwgNjEsIDEwLCAxMSwgMjE0LCA2MCwgMTAsIDExLCAyMTQsIDU5LCAxMCwgMTEsIAotICAgIDIxNCwgNTgsIDEwLCAxMSwgMjE0LCA1NywgMTAsIDExLCAyMTQsIDU2LCAxMCwgMTEsIDIxNCwgNTUsIDEwLCAxMSwgMjE0LCAKLSAgICA1NCwgMTAsIDExLCAyMTQsIDUzLCAxMCwgMTEsIDIxNCwgNTIsIDEwLCAxMSwgMjE0LCA1MSwgMTAsIDExLCAyMTQsIDUwLCAKLSAgICAxMCwgMTEsIDIxMywgMTY1LCAxMCwgMTEsIDIxMywgMTY0LCAxMCwgMTEsIDIxMywgMTYzLCAxMCwgMTEsIDIxMywgMTYyLCAKLSAgICAxMCwgMTEsIDIxMywgMTYxLCAxMCwgMTEsIDIxMywgMTYwLCAxMCwgMTEsIDIxMywgMTU5LCAxMCwgMTEsIDIxMywgMTU4LCAKLSAgICAxMCwgMTEsIDIxMywgMTU3LCAxMCwgMTEsIDIxMywgMTU2LCAxMCwgMTEsIDIxMywgMTU1LCAxMCwgMTEsIDIxMywgMTU0LCAKLSAgICAxMCwgMTEsIDIxMywgMTAzLCAxMCwgMTEsIDIxMywgMTAyLCAxMCwgMTEsIDIxMywgMTAxLCAxMCwgMTEsIDIxMywgMTAwLCAKLSAgICAxMCwgMTEsIDIxMywgOTksIDEwLCAxMSwgMjEzLCA5OCwgMTAsIDExLCAyMTMsIDk3LCAxMCwgMTEsIDIxMywgOTYsIDEwLCAKLSAgICAxMSwgMjEzLCA5NSwgMTAsIDExLCAyMTIsIDE1MSwgMTAsIDExLCAyMTIsIDE1MCwgMTAsIDExLCAyMTIsIDE0OSwgMTAsIAotICAgIDExLCAyMTIsIDE0OCwgMTAsIDExLCAyMTIsIDE0NywgMTAsIDExLCAyMTIsIDE0NiwgMTAsIDExLCAyMTIsIDE0NSwgMTAsIAotICAgIDExLCAyMTIsIDE0NCwgMTAsIDExLCAyMTIsIDE0MywgMTAsIDExLCAyMTIsIDE0MiwgMTAsIDExLCAyMTIsIDE0MSwgMTAsIAotICAgIDExLCAyMTIsIDE0MCwgMTAsIDExLCAyMTIsIDEzOSwgMTAsIDExLCAyMTIsIDEzOCwgMTAsIDExLCAyMTIsIDEzNywgMTAsIAotICAgIDExLCAyMTIsIDEzNiwgMTAsIDExLCAyMTIsIDEzNSwgMTAsIDExLCAyMTIsIDEzNCwgMTAsIDExLCAyMTIsIDEzMywgMTAsIAotICAgIDExLCAyMTIsIDEzMiwgMTAsIDExLCAyMTIsIDEzMSwgMTAsIDExLCAyMTIsIDEzMCwgMTAsIDExLCAyMTIsIDEyOSwgMTAsIAotICAgIDExLCAyMTIsIDEyOCwgMTAsIDExLCAyMTIsIDEyNywgMTAsIDExLCAyMTIsIDEyNiwgMTAsIDExLCAyMTIsIDEyNSwgMTAsIAotICAgIDExLCAyMTIsIDEyNCwgMTAsIDExLCAyMTIsIDEyMywgMTAsIDExLCAyMTIsIDEyMiwgMTAsIDExLCAyMTIsIDEyMSwgMTAsIAotICAgIDExLCAyMTIsIDEyMCwgMTAsIDExLCAyMTIsIDExOSwgMTAsIDExLCAyMTIsIDExOCwgMTAsIDExLCAyMTIsIDExNywgMTAsIAotICAgIDExLCAyMTIsIDExNiwgMTAsIDExLCAyMTIsIDExNSwgMTAsIDExLCAyMTIsIDExNCwgMTAsIDExLCAyMTIsIDExMywgMTAsIAotICAgIDExLCAyMTIsIDExMiwgMTAsIDExLCAyMTIsIDExMSwgMTAsIDExLCAyNTQsIDIzMSwgMTAsIDExLCAyNTQsIDIzMCwgMTAsIAotICAgIDExLCAyNTQsIDIyOSwgMTAsIDExLCAyNTQsIDIyOCwgMTAsIDExLCAyNTQsIDIyNywgMTAsIDExLCAyNTQsIDIyNiwgMTAsIAotICAgIDExLCAyNTQsIDIyNSwgMTAsIDExLCAyNTQsIDIyNCwgMTAsIDExLCAyNTQsIDIyMywgMTAsIDExLCAyNTQsIDIyMiwgMTAsIAotICAgIDExLCAyNTQsIDIyMSwgMTAsIDExLCAyNTQsIDIyMCwgMTAsIDExLCAyNTQsIDIxOSwgMTAsIDExLCAyNTQsIDIxOCwgMTAsIAotICAgIDExLCAyNTQsIDIxNywgMTAsIDExLCAyNTQsIDIxNiwgMTAsIDExLCAyNTQsIDIxNSwgMTAsIDExLCAyNTQsIDIxNCwgMTAsIAotICAgIDExLCAyNTQsIDIxMywgMTAsIDExLCAyNTQsIDIxMiwgMTAsIDExLCAyNTQsIDIxMSwgMTAsIDExLCAyNTQsIDIxMCwgMTAsIAotICAgIDExLCAyNTQsIDIwOSwgMTAsIDExLCAyNTQsIDIwOCwgMTAsIDExLCAyNTQsIDIwNywgMTAsIDExLCAyNTQsIDIwNiwgMTAsIAotICAgIDExLCAyNTQsIDIwNSwgMTAsIDExLCAyNTQsIDIwNCwgMTAsIDExLCAyNTQsIDIwMywgMTAsIDExLCAyNTQsIDIwMiwgMTAsIAotICAgIDExLCAyNTQsIDIwMSwgMTAsIDExLCAyNTQsIDIwMCwgMTAsIDExLCAyNTQsIDE5OSwgMTAsIDExLCAyNTQsIDE5OCwgMjAsIAotICAgIDEsIDE1MywgMjI5LCA5OCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjQzLCA0NiwgMjQ0LCA1LCAyMCwgMSwgMTUzLCAyMjUsIAotICAgIDEzMSwgMjMxLCA4NCwgMjI1LCAxODksIDIwLCAxLCAxNTMsIDIyNSwgMTMxLCAyMzEsIDg0LCAyMjUsIDE5MCwgMjAsIDEsIAotICAgIDE1MywgMjMwLCA0NCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjIwLCAxNDYsIDIwLCAxLCAxNTMsIDIxNywgMTksIDIzMSwgCi0gICAgODMsIDIwLCAxLCAxNTMsIDIyNywgMjM4LCAyMzEsIDgzLCAyMCwgMSwgMTUzLCAyMjAsIDE5OSwgMjI2LCAyMTQsIDIyOSwgCi0gICAgMCwgMjAsIDEsIDE1MywgMjI1LCAxMzEsIDIyNiwgMjE0LCAyMjksIDEsIDIyNSwgMTg5LCAyMCwgMSwgMTUzLCAyMjUsIAotICAgIDEzMSwgMjI2LCAyMTQsIDIyOSwgMSwgMjI1LCAxOTAsIDIwLCAxLCAxNTMsIDIzMiwgMjMsIDIwLCAxLCAxNTMsIDIxNiwgCi0gICAgODMsIDIzMiwgMjQsIDIwLCAxLCAxNTMsIDIyOSwgMTU0LCAyMCwgMSwgMTUzLCAyMzIsIDIwLCAyMCwgMSwgMTUzLCAyMzEsIAotICAgIDIzOSwgMjAsIDEsIDE1MywgMjMwLCAxMTksIDIwLCAxLCAxNTMsIDIyMSwgNDUsIDIwLCAxLCAxNTMsIDIyOCwgOTYsIDIwLCAKLSAgICAxLCAxNTMsIDIzNCwgMTU1LCAyMCwgMSwgMTUzLCAyMjgsIDIyNSwgMjAsIDEsIDE1MywgMjE4LCAyMDUsIDIwLCAxLCAxNTMsIAotICAgIDIyOSwgOTcsIDIwLCAxLCAxNTMsIDIzMywgMTEwLCAyMCwgMSwgMTUzLCAyMzMsIDM2LCAyMzMsIDIxMCwgMjAsIDEsIDE1MywgCi0gICAgMjI4LCAxMDMsIDIzMSwgOTEsIDIwLCAxLCAxNTMsIDIzMiwgMjcsIDIwLCAxLCAxNTMsIDIyNiwgMTE5LCAyMCwgMSwgMTUzLCAKLSAgICAyNDIsIDIwNywgMjAsIDEsIDE1MywgMjI2LCAxNzcsIDIwLCAxLCAxNTMsIDIzMCwgMjIxLCAyMjksIDEzMCwgMjAsIDEsIAotICAgIDE1MywgMjI3LCAyMTksIDIzMSwgOTQsIDIwLCAxLCAxNTMsIDExMSwgMjEyLCAxNzksIDIzMCwgMzgsIDIwLCAxLCAxNTMsIAotICAgIDI0MiwgMjA4LCAyMCwgMSwgMTUzLCAyMjgsIDEwMywgMjI4LCAxMDQsIDIwLCAxLCAxNTMsIDIyMCwgNTYsIDIwLCAxLCAKLSAgICAxNTMsIDIzMSwgNzYsIDIwLCAxLCAxNTMsIDIzMSwgOTcsIDIwLCAxLCAxNTMsIDIzMCwgMjAwLCAyMCwgMSwgMTUzLCAyMzQsIAotICAgIDI1MywgMjAsIDEsIDE1MywgMjI2LCAyMTQsIDIzMywgNzEsIDIwLCAxLCAxNTMsIDIyOSwgMjI5LCAyMzMsIDcxLCAyMCwgMSwgCi0gICAgMTUzLCAyMjYsIDM0LCAyMCwgMSwgMTUzLCAyMzIsIDIxLCAyMCwgMSwgMTUzLCAyMjksIDM4LCAyMCwgMSwgMTUzLCAyMjUsIAotICAgIDIwLCAyMCwgMSwgMTUzLCAyMTYsIDgwLCAyMCwgMSwgMTUzLCAyMzIsIDE1MiwgMjAsIDEsIDE1MywgMjE5LCAyMjcsIDIwLCAKLSAgICAxLCAxNTMsIDIxNywgMTY5LCAyMCwgMSwgMTUzLCAyMzIsIDE4LCAyMCwgMSwgMTUzLCAyMzQsIDE2MiwgMjAsIDEsIDE1MywgCi0gICAgMjI5LCAyMjUsIDIwLCAxLCAxNTMsIDIzMywgMjIyLCAyMCwgMSwgMTUzLCAyMzAsIDIwMSwgMjAsIDEsIDE1MywgMjIwLCAKLSAgICAxNDMsIDIwLCAxLCAxNTMsIDIzMiwgMTkxLCAyMCwgMSwgMTUzLCAyNDQsIDYyLCAyMCwgMSwgMTUzLCAyMjMsIDEwMSwgMjAsIAotICAgIDEsIDE1MywgMjMzLCAyNTAsIDIwLCAxLCAxNTMsIDIxOSwgMjIzLCAyMCwgMSwgMTUzLCAyMzEsIDIzNiwgMjI1LCAyMzEsIAotICAgIDIwLCAxLCAxNTMsIDIyMCwgMTkyLCAyMCwgMSwgMTUzLCAyMjgsIDEwMiwgMjAsIDEsIDE1MywgMjIwLCAxNzcsIDIyOCwgCi0gICAgMTEzLCAyMTIsIDE4NywgMjAsIDEsIDE1MywgMjI4LCAxLCAyMzAsIDIxOCwgMjAsIDEsIDE1MywgMjI2LCAyMDksIDIwLCAxLCAKLSAgICAxNTMsIDIyOCwgMjI2LCAyMCwgMSwgMTUzLCAyMTUsIDE0MSwgMjAsIDEsIDE1MywgMjI5LCAxMzMsIDIwLCAxLCAxNTMsIAotICAgIDIzMiwgMTcsIDIwLCAxLCAxNTMsIDIyOSwgMTIsIDIwLCAxLCAxNTMsIDIzMSwgMTgyLCAyMCwgMSwgMTUzLCAyMjgsIDEyLCAKLSAgICAyMCwgMSwgMTUzLCAyMTcsIDE3MywgMjAsIDEsIDE1MywgMjE5LCAyMjEsIDIwLCAxLCAxNTMsIDIyNiwgMjEwLCAyMCwgMSwgCi0gICAgMTUzLCAyMjgsIDExNywgMjAsIDEsIDE1MywgMjMyLCAyNSwgMjAsIDEsIDE1MywgMjI4LCAxMCwgMjAsIDEsIDE1MywgMjM0LCAKLSAgICAyMjEsIDIwLCAxLCAxNTMsIDIyOCwgMTIwLCAyMCwgMSwgMTUzLCAyMTQsIDIyNywgMjAsIDEsIDE1MywgMjMyLCAxNTYsIAotICAgIDIwLCAxLCAxNTMsIDIyOSwgMTgwLCAyMCwgMSwgMTUzLCAyMzAsIDE2LCAyMCwgMSwgMTUzLCAyMzEsIDE4MSwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIyOCwgMTE1LCAyMCwgMSwgMjI2LCAxNCwgMjE2LCA4MywgMjMyLCAyMiwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgCi0gICAgMTExLCAyMCwgMSwgMjI2LCAxNCwgMjIxLCA0OSwgMjE2LCA4MiwgMjAsIDEsIDIyNiwgMTQsIDIzMiwgMTkzLCAyMjgsIDk5LCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxODgsIDIzMiwgMjYsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDk2LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjEzLCA2LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxODMsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDI0MiwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIyNiwgODMsIDIwLCAxLCAyMjYsIDE0LCAyMTMsIDc3LCAyMzMsIDcxLCAyMCwgMSwgMjI2LCAxNCwgMjMzLCAKLSAgICAxMjcsIDIyOCwgMTEzLCAyMjgsIDIwLCAyMCwgMSwgMjI2LCAxNCwgMjI4LCA5NywgMjIwLCAyMTgsIDIwLCAxLCAyMjYsIAotICAgIDE0LCAyMjksIDE5NiwgMjI5LCAxNSwgMjAsIDEsIDIyNiwgMTQsIDI0MiwgMjA1LCAyMCwgMSwgMjI2LCAxNCwgMjI1LCAKLSAgICAxODEsIDIwLCAxLCAyMjYsIDE0LCAyMTYsIDgzLCAyMjgsIDExMSwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgMjIzLCAyMjksIAotICAgIDEwLCAyMCwgMSwgMjI2LCAxNCwgMjIwLCAyMTksIDIwLCAxLCAyMjYsIDE0LCAyMzEsIDg0LCAyMTcsIDE3MiwgMjAsIDEsIAotICAgIDIyNiwgMTQsIDIzMSwgMTcwLCAyMzEsIDE4NCwgMjAsIDEsIDIyNiwgMTQsIDIyOCwgMTEsIDIyOCwgOTksIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMzQsIDE1MSwgMjAsIDEsIDIyNiwgMTQsIDI0MiwgMjA2LCAyMCwgMSwgMjI2LCAxNCwgMjM0LCAxNDcsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMzMsIDE1MSwgMjAsIDEsIDIyNiwgMTQsIDIyNiwgMTIxLCAyMCwgMSwgMjI2LCAxNCwgMjE0LCAKLSAgICAxNTksIDIwLCAxLCAyMjYsIDE0LCAyMjksIDk5LCAyMzAsIDExNywgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTMyLCAyMzEsIAotICAgIDE2NiwgMjAsIDEsIDIyNiwgMTQsIDIxMywgMTgxLCAyMCwgMSwgMjI2LCAxNCwgMjIyLCAxODIsIDIwLCAxLCAyMjYsIDE0LCAKLSAgICAyMTgsIDQ1LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA5NiwgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTE3LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjI5LCAxMTgsIDIzMywgMTA3LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA4NiwgMjAsIDEsIDIyNiwgMTQsIDIxOCwgCi0gICAgMjUzLCAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxNzQsIDIwLCAxLCAyMjYsIDE0LCAyMzAsIDIwMywgMjAsIDEsIDIyNiwgMTQsIAotICAgIDIyOCwgMjEsIDIwLCAxLCAyMjYsIDE0LCAyMjUsIDI0LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA5NSwgMjI5LCAxMzQsIDIwLCAKLSAgICAxLCAyMjYsIDE0LCAyNDQsIDk1LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCAxNjEsIDIwLCAxLCAyMjYsIDE0LCAyNDQsIDExNiwgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIzNCwgMTU5LCAyMCwgMSwgMjI2LCAxNCwgMjMyLCA0MywgMjI5LCA0LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjMyLCA0MywgMjI4LCAyMzYsIDIwLCAxLCAyMjYsIDE0LCAyMzMsIDM1LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCAxNDAsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMjgsIDEyMiwgMjAsIDEsIDIyNiwgMTQsIDE4OCwgMjAsIDEsIDIyNiwgMTQsIDIzNCwgODMsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMjksIDg3LCAyMCwgMSwgMTMxLCAyMjksIDk4LCAyMzIsIDI0LCAyMCwgMSwgMTMxLCAyMjcsIAotICAgIDIzNywgMjAsIDEsIDEzMSwgMjEyLCAxODcsIDIwLCAxLCAxMzEsIDIxNCwgMzcsIDIwLCAxLCAxMzEsIDIyOSwgMTMzLCAyMCwgCi0gICAgMSwgMTMxLCAyMjksIDIxNywgMjAsIDEsIDEzMSwgMjI5LCAxMDUsIDIwLCAxLCAxMzEsIDI0MiwgMjE1LCAyMCwgMSwgMTMxLCAKLSAgICAyMzEsIDE3OCwgMjAsIDEsIDEzMSwgMjQzLCA1MywgMjAsIDEsIDEzMSwgMjI4LCAzLCAyMzAsIDIzOSwgMjMxLCA5OCwgMjAsIAotICAgIDEsIDEzMSwgMjI4LCA5NSwgMjMxLCAxNjksIDIwLCAxLCAxMzEsIDIzMSwgMTc1LCAyMCwgMSwgMTMxLCAyMjUsIDE4NywgCi0gICAgMjAsIDEsIDEzMSwgMjI5LCAyMDIsIDIwLCAxLCAxMzEsIDIzMSwgMTg2LCAyNTAsIDIxNSwgMjAsIDEsIDEzMSwgMjM0LCAKLSAgICAxNDksIDIwLCAxLCAxMzEsIDI0MiwgMjE2LCAyMCwgMSwgMTMxLCAyMzQsIDE1NiwgMjAsIDEsIDEzMSwgMjEyLCAyMDQsIAotICAgIDIzMCwgMTQ2LCAyMCwgMSwgMTMxLCAyMjcsIDIzMSwgMjAsIDEsIDEzMSwgMjMxLCAxNjMsIDIwLCAxLCAxMzEsIDIyOCwgCi0gICAgMTIxLCAyMCwgMSwgMTMxLCAyMzEsIDE2OSwgMjAsIDEsIDEzMSwgMjEzLCA3LCAyMCwgMSwgMTMxLCAyMzQsIDIsIDIwLCAxLCAKLSAgICAxMzEsIDIzNSwgMTQsIDIwLCAxLCAxMzEsIDIyMSwgNDQsIDIwLCAxLCAxMzEsIDIyOSwgMjExLCAyMCwgMSwgMTMxLCAyMTgsIAotICAgIDQzLCAyMCwgMSwgMTMxLCAyMjgsIDI0MCwgMjAsIDEsIDEzMSwgMjE3LCAxOSwgMjEyLCAxODksIDIwLCAxLCAxMzEsIDIxOSwgCi0gICAgMjMsIDIwLCAxLCAxMzEsIDIyOSwgMTI0LCAyMjgsIDIwLCAyMCwgMSwgMTMxLCAyMTQsIDE1OCwgMjAsIDEsIDEzMSwgMjMwLCAKLSAgICAxOSwgMjAsIDEsIDEzMSwgMjMyLCA0MywgMjM0LCAxNTgsIDIwLCAxLCAxMzEsIDIyOCwgMTA0LCAyMCwgMSwgMTMxLCAyMjksIAotICAgIDExOSwgMjAsIDEsIDEzMSwgMjMzLCAxMTEsIDIwLCAxLCAxMzEsIDIzMSwgMTcxLCAyMCwgMSwgMTMxLCAyMzEsIDc1LCAyMCwgCi0gICAgMSwgMTMxLCAyMjgsIDk4LCAyMCwgMSwgMTMxLCAyMTcsIDE2OCwgMjAsIDEsIDEzMSwgMjI5LCAxMjEsIDIwLCAxLCAxMzEsIAotICAgIDI0MywgMjA0LCAyMCwgMSwgMTMxLCAyMjksIDIxNiwgMjAsIDEsIDEzMSwgMjI4LCAxMjMsIDIwLCAxLCAxMzEsIDIyOCwgCi0gICAgMTE5LCAyMCwgMSwgMTMxLCAyNTEsIDM2LCAyMCwgMSwgMTMxLCAyMTQsIDE2MCwgMjAsIDEsIDEzMSwgMjMxLCAxNzYsIDIwLCAKLSAgICAxLCAxMzEsIDIyMywgNTEsIDIwLCAxLCAxMzEsIDIyOSwgMTQsIDIwLCAxLCAxMzEsIDIzMywgMTI2LCAyMCwgMSwgMTMxLCAKLSAgICAyMTcsIDE3LCAyMCwgMSwgMTMxLCAyMjgsIDEwNSwgMjI5LCA4NywgMjAsIDEsIDEzMSwgMjI5LCA2LCAyMCwgMSwgMTMxLCAKLSAgICAyMzQsIDE2MiwgMjAsIDEsIDEzMSwgMjI5LCAxMjUsIDIwLCAxLCAxMzEsIDIzMiwgMTcsIDIwLCAxLCAxMzEsIDIzMSwgCi0gICAgMTY0LCAyMCwgMSwgMTMxLCAyMzIsIDE1NiwgMjAsIDEsIDEzMSwgMjMzLCAyMTAsIDIwLCAxLCAxMzEsIDIyOSwgMTIsIDIwLCAKLSAgICAxLCAxMzEsIDIyOSwgODcsIDIwLCAxLCAxMzEsIDIxMywgMTcyLCAyMCwgMSwgMTMxLCAyMjksIDEyMiwgMjAsIDEsIDEzMSwgCi0gICAgMjI4LCAxMDgsIDIwLCAxLCAxMzEsIDIyOCwgMTAwLCAyMCwgMSwgMTMxLCAyMzMsIDIyNCwgMjI4LCAyMjYsIDIwLCAxLCAKLSAgICAxMzEsIDIyOCwgMTA2LCAyMCwgMSwgMTMxLCAyMjksIDIyNCwgMjAsIDEsIDEzMSwgMjMyLCA0MywgMjI4LCAxMTEsIDIwLCAKLSAgICAxLCAxMzEsIDIxMywgOTEsIDIwLCAxLCAxMzEsIDIyOSwgMjIzLCAyMCwgMSwgMTMxLCAyMjAsIDE0NSwgMjAsIDEsIDEzMSwgCi0gICAgMjIxLCA0NywgMjAsIDEsIDEzMSwgMjMxLCAxNzIsIDIwLCAxLCAxMzEsIDIzMiwgMjQsIDIwLCAxLCAxMzEsIDIzMSwgMTgyLCAKLSAgICAyMCwgMSwgMTMxLCAyMzQsIDE1MCwgMjAsIDEsIDEzMSwgMjMxLCAxNzMsIDIwLCAxLCAxMzEsIDIzNCwgMTU0LCAyMCwgMSwgCi0gICAgMTMxLCAyMzEsIDE4NiwgMjI1LCAyMzUsIDIwLCAxLCAxMzEsIDIxMiwgMTcxLCAyMCwgMSwgMTMxLCAyMjksIDIsIDIwLCAxLCAKLSAgICAxMzEsIDIzMSwgMzMsIDIwLCAxLCAxMzEsIDIzMCwgMTcwLCAyMCwgMSwgMTMxLCAyMjAsIDE5NSwgMjAsIDEsIDEzMSwgCi0gICAgMjM0LCAxNzIsIDIzMywgOTQsIDIwLCAxLCAxMzEsIDIzNCwgMTcyLCAyNDQsIDEyOCwgMjAsIDEsIDEzMSwgMjI5LCAxNTIsIAotICAgIDIwLCAxLCAxMzEsIDIzMCwgMTYsIDIwLCAxLCAxMzEsIDIzMiwgMjI5LCAyMCwgMSwgMTMxLCAyMjUsIDE5NywgMjAsIDEsIAotICAgIDEzMSwgMjI2LCA3NCwgMjAsIDEsIDEzMSwgMjE3LCAxODMsIDIwLCAxLCAxMDMsIDIzMSwgMTYyLCAyMCwgMSwgMTAzLCAKLSAgICAyMTQsIDM1LCAyMCwgMSwgMTAzLCAyMjksIDAsIDIwLCAxLCAxMDMsIDIzMSwgODMsIDIwLCAxLCAxMDMsIDIyOCwgMjU0LCAKLSAgICAyMCwgMSwgMTAzLCAyMzMsIDcsIDIwLCAxLCAxMDMsIDIyOSwgMywgMjAsIDEsIDEwMywgMjI4LCAxMTgsIDIwLCAxLCAxMDMsIAotICAgIDIyOSwgMTM5LCAyMCwgMSwgMTAzLCAyMjgsIDIwLCAyMCwgMSwgMTAzLCAyMTMsIDE4MiwgMjAsIDEsIDEwMywgMjI5LCA5NSwgCi0gICAgMjAsIDEsIDEwMywgMjIwLCAyNDEsIDIwLCAxLCAxMDMsIDIyOSwgMTA2LCAyMCwgMSwgMTAzLCAyMzQsIDE1NywgMjAsIDEsIAotICAgIDEwMywgMjE3LCAxNzAsIDIwLCAxLCAxMDMsIDIyMCwgMjIxLCAyMCwgMSwgMTAzLCAyMjksIDExLCAyMCwgMSwgMTAzLCAKLSAgICAyMTgsIDI1MywgMjAsIDEsIDEwMywgMjM0LCAxNjIsIDIwLCAxLCAxMDMsIDIxMywgNzksIDIwLCAxLCAxMDMsIDIzMywgCi0gICAgMjI1LCAyMCwgMSwgMTAzLCAyMjIsIDE1MCwgMjAsIDEsIDEwMywgMjMxLCA4OCwgMjAsIDEsIDEwMywgMjI5LCAyMTUsIDIwLCAKLSAgICAxLCAxMDMsIDIzMSwgMjUxLCAyMCwgMSwgMTAzLCAyMzEsIDk0LCAyMCwgMSwgMTAzLCAyMjEsIDQ2LCAyMCwgMSwgMTAzLCAKLSAgICAyMTMsIDMwLCAyMCwgMSwgMTAzLCAyMjksIDUsIDIwLCAxLCAxMDMsIDIzNCwgMTUzLCAyMzEsIDE2NSwgMjAsIDEsIDEwMywgCi0gICAgMjI5LCAxMDIsIDIwLCAxLCAxMDMsIDIxNiwgODIsIDIwLCAxLCAxMDMsIDI0MiwgMjI0LCAyMCwgMSwgMTAzLCAyMjksIDkyLCAKLSAgICAyMCwgMSwgMTAzLCAyNDQsIDk2LCAyMCwgMSwgMTAzLCAyMjksIDIxOSwgMjAsIDEsIDEwMywgMjMxLCA2NywgMjAsIDEsIAotICAgIDEwMywgMjMzLCAzMSwgMjAsIDEsIDEwMywgMjI5LCAyMDEsIDIwLCAxLCAxMDMsIDIzMCwgMjE3LCAyMCwgMSwgMTAzLCAKLSAgICAyMzEsIDcxLCAyMCwgMSwgMTAzLCAyMjUsIDYsIDIwLCAxLCAxMDMsIDIzMSwgNjksIDIwLCAxLCAxMDMsIDIzMSwgODUsIAotICAgIDIwLCAxLCAxMDMsIDIzMiwgMTQyLCAyMCwgMSwgMTAzLCAyMjgsIDExMCwgMjAsIDEsIDEwMywgMjMxLCAxODUsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMjAyLCAyMCwgMSwgMTAzLCAyMjgsIDEyLCAyMCwgMSwgMTAzLCAyMTcsIDE3MywgMjAsIDEsIDEwMywgCi0gICAgMjE5LCAyMjEsIDIwLCAxLCAxMDMsIDIxMiwgMTcxLCAyMCwgMSwgMTAzLCAyMzQsIDE1NCwgMjAsIDEsIDEwMywgMjI0LCAKLSAgICA2MCwgMjAsIDEsIDEwMywgMjE3LCAyMTgsIDIwLCAxLCAxMDMsIDIyOSwgMTAzLCAyMCwgMSwgMTAzLCAyMzEsIDkwLCAyMCwgCi0gICAgMSwgMTAzLCAyMjgsIDEwOSwgMjAsIDEsIDEwMywgMjM0LCAxNTIsIDIwLCAxLCAxMDMsIDIyNSwgMTkxLCAyMCwgMSwgMTAzLCAKLSAgICAyMjYsIDI4LCAyMCwgMSwgMTAzLCAyMjcsIDI0NiwgMjAsIDEsIDEwMywgMjMzLCAzNSwgMjAsIDEsIDEwMywgMjI5LCAxNDAsIAotICAgIDIwLCAxLCAxMDMsIDIzMSwgODcsIDIwLCAxLCAxMDMsIDIyOSwgMTE0LCAyMCwgMSwgMTAzLCAyMTIsIDE4NCwgMjAsIDEsIAotICAgIDEwMywgMjI2LCAxNDksIDIwLCAxLCAxMDMsIDIxMiwgMTgzLCAyMCwgMSwgMTAzLCAyMjksIDIyNCwgMjAsIDEsIDEwMywgCi0gICAgMjI4LCA5OSwgMjAsIDEsIDEwMywgMjE5LCAyNSwgMjAsIDEsIDEwMywgMjMzLCAyMjksIDIwLCAxLCAxMDMsIDIyOSwgMTI5LCAKLSAgICAyMCwgMSwgMTAzLCAyMjksIDEwMCwgMjAsIDEsIDEwMywgMjE2LCA2NiwgMjAsIDEsIDEwMywgMjMxLCA5OCwgMjAsIDEsIAotICAgIDEwMywgMjMzLCAyMTksIDIwLCAxLCAxMDMsIDIyOCwgMTA3LCAyMCwgMSwgMTAzLCAyMTcsIDE3MSwgMjAsIDEsIDEwMywgCi0gICAgMjMyLCAxOSwgMjAsIDEsIDEwMywgMjI5LCAxMzgsIDIwLCAxLCAxMDMsIDIzMywgMzAsIDIwLCAxLCAxMDMsIDIyOSwgMTIwLCAKLSAgICAyMCwgMSwgMTAzLCAyMjgsIDExMiwgMjAsIDEsIDEwMywgMjI4LCAyNDAsIDIwLCAxLCAxMDMsIDI0MiwgMjA5LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDIzOCwgMjAsIDEsIDEwMywgMjIzLCAyMzQsIDIyNywgNzUsIDIwLCAxLCAxMDMsIDIxOCwgMzUsIDIwLCAxLCAKLSAgICAxMDMsIDIxNiwgMjIzLCAyMCwgMSwgMTAzLCAyMjgsIDEwLCAyMCwgMSwgMTAzLCAyMjMsIDEzNiwgMjAsIDEsIDEwMywgCi0gICAgMjMzLCA3MywgMjAsIDEsIDEwMywgMjMxLCAxNDQsIDIwLCAxLCAxMDMsIDE4MywgMjAsIDEsIDEwMywgMjE4LCAyMDUsIDIwLCAKLSAgICAxLCAxMDMsIDIzMCwgMTcyLCAyMCwgMSwgMTAzLCAyMjAsIDIwNywgMjAsIDEsIDEwMywgMjIwLCAyMTcsIDIwLCAxLCAxMDMsIAotICAgIDIzMywgMTc3LCAyMCwgMSwgMTAzLCAyMjgsIDkyLCAyMCwgMSwgMTAzLCAyMjAsIDE1MCwgMjAsIDEsIDEwMywgMjI4LCAKLSAgICAxMDEsIDIwLCAxLCAxMDMsIDIyNiwgODYsIDIwLCAxLCAxMDMsIDIyOSwgNjQsIDIwLCAxLCAxMDMsIDIyMCwgMTc2LCAyMCwgCi0gICAgMSwgMTAzLCAyMjUsIDE5LCAyMCwgMSwgMTAzLCAyMzAsIDExNywgMjAsIDEsIDEwMywgMjMyLCAxNzQsIDIwLCAxLCAxMDMsIAotICAgIDIyMywgMjM0LCAyMzAsIDE2NiwgMjAsIDEsIDEwMywgMjE3LCA3MSwgMjAsIDEsIDEwMywgMjI4LCA5MywgMjAsIDEsIDEwMywgCi0gICAgMjMxLCAxODYsIDE5OCwgMjAsIDEsIDEwMywgMjIyLCAxNDgsIDIwLCAxLCAxMDMsIDI0NCwgMTYzLCAyMCwgMSwgODAsIAotICAgIDIyOSwgMjIzLCAyMCwgMSwgODAsIDIxNiwgMjI5LCAyMCwgMSwgODAsIDIzMSwgMTc1LCAyMCwgMSwgODAsIDIzMywgMTExLCAKLSAgICAyMCwgMSwgODAsIDIxNCwgMTA5LCAyMCwgMSwgODAsIDIzMiwgMTc4LCAyMCwgMSwgODAsIDIyNiwgMjEzLCAyMCwgMSwgODAsIAotICAgIDIxOSwgMjMwLCAyMCwgMSwgODAsIDIyNCwgMzcsIDIwLCAxLCA4MCwgMjI4LCAxMTQsIDIwLCAxLCA4MCwgMjI5LCAxOTQsIAotICAgIDIwLCAxLCA4MCwgMjI1LCAzMywgMjAsIDEsIDgwLCAyMTgsIDEzLCAyMCwgMSwgODAsIDIyOSwgMTA4LCAyMCwgMSwgODAsIAotICAgIDIzMywgMjU0LCAyMCwgMSwgODAsIDIxMywgMTc1LCAyMCwgMSwgODAsIDIyMiwgODksIDIwLCAxLCA4MCwgMjI5LCAxMzAsIAotICAgIDIwLCAxLCA4MCwgMjI2LCAyMTAsIDIwLCAxLCA4MCwgMjE2LCAyMzAsIDIwLCAxLCA4MCwgMjMzLCAyMjMsIDIwLCAxLCA4MCwgCi0gICAgMjMyLCAxOTIsIDIwLCAxLCA4MCwgMjI4LCAxMTcsIDIwLCAxLCA4MCwgMjI5LCA4NCwgMjAsIDEsIDgwLCAyMzIsIDI1LCAKLSAgICAyMCwgMSwgODAsIDIyOSwgMTAxLCAyMCwgMSwgODAsIDIyOSwgODMsIDIwLCAxLCA4MCwgMjI4LCAxMTYsIDIwLCAxLCA4MCwgCi0gICAgMjIzLCAxMzQsIDIwLCAxLCA4MCwgMjI5LCAyLCAyMCwgMSwgODAsIDIyNiwgODUsIDIwLCAxLCA4MCwgMjIyLCAyMDAsIDIwLCAKLSAgICAxLCA4MCwgMjI5LCAxMTUsIDIwLCAxLCA4MCwgMjMxLCA3NywgMjAsIDEsIDgwLCAyNDIsIDIwMywgMjAsIDEsIDgwLCAyMjksIAotICAgIDEwNCwgMjAsIDEsIDgwLCAyMjksIDEzLCAyMCwgMSwgODAsIDIzMSwgMjM1LCAyMCwgMSwgODAsIDIzMiwgMTc2LCAyMCwgMSwgCi0gICAgODAsIDIyOSwgMTM1LCAyMCwgMSwgODAsIDIyOSwgMjA3LCAyMCwgMSwgODAsIDIxOCwgMzQsIDIyOCwgOTksIDIwLCAxLCAKLSAgICA4MCwgMjIxLCA0OCwgMjAsIDEsIDgwLCAyMjUsIDI5LCAyMCwgMSwgODAsIDIyOSwgMjI3LCAyMTksIDIzNSwgMjAsIDEsIAotICAgIDgwLCAyMjksIDEyMywgMjI4LCAyMCwgMjAsIDEsIDgwLCAyMTIsIDI1MSwgMjAsIDEsIDgwLCAyNDIsIDIwNCwgMjAsIDEsIAotICAgIDgwLCAyMTYsIDgxLCAyMCwgMSwgODAsIDIxMywgMTAsIDIwLCAxLCA4MCwgMjI1LCAxNTAsIDIwLCAxLCA4MCwgMjE2LCA3MSwgCi0gICAgMjAsIDEsIDgwLCAyMzQsIDE2MCwgMjAsIDEsIDgwLCAyMTksIDI0LCAyMCwgMSwgODAsIDIxNywgMTcyLCAyMCwgMSwgODAsIAotICAgIDIxNCwgMTYxLCAyMCwgMSwgODAsIDIxMywgMjQ3LCAyMCwgMSwgODAsIDIzMywgMTU0LCAyMCwgMSwgODAsIDIyNSwgMzUsIAotICAgIDIwLCAxLCA4MCwgMjE4LCA0NCwgMjAsIDEsIDgwLCAyNDIsIDIyMywgMjAsIDEsIDgwLCAyMjksIDE0NCwgMjAsIDEsIDgwLCAKLSAgICAyMjAsIDIyMCwgMjAsIDEsIDgwLCAyMzEsIDcyLCAyMCwgMSwgODAsIDIzMSwgMTc5LCAyMCwgMSwgODAsIDIyNywgMjM1LCAKLSAgICAyMCwgMSwgODAsIDIyOCwgMjIzLCAyMCwgMSwgODAsIDI0MywgNDksIDIwLCAxLCA4MCwgMjE2LCA3MiwgMjAsIDEsIDgwLCAKLSAgICAyMzMsIDIzMiwgMjAsIDEsIDgwLCAyMTMsIDU3LCAyMCwgMSwgODAsIDIyOCwgMTEsIDI0OSwgMjA5LCAyMCwgMSwgODAsIAotICAgIDIxMiwgMjQxLCAyMCwgMSwgODAsIDIzMSwgODksIDIwLCAxLCA4MCwgMjI5LCAyMTIsIDIwLCAxLCA4MCwgMjI1LCAyMzIsIAotICAgIDIwLCAxLCA4MCwgMjEyLCAxODgsIDIwLCAxLCA4MCwgMjMzLCAzMiwgMjAsIDEsIDgwLCAyNDMsIDIwNCwgMjAsIDEsIDgwLCAKLSAgICAyNDMsIDQ4LCAyMCwgMSwgODAsIDIyOSwgOTQsIDIwLCAxLCA4MCwgMjM0LCAxNjIsIDIwLCAxLCA4MCwgMjMyLCAyOCwgMjAsIAotICAgIDEsIDgwLCAyMjksIDEwNywgMjAsIDEsIDgwLCAyNDIsIDIxMCwgMjAsIDEsIDgwLCAyNDQsIDE2NCwgMjAsIDEsIDgwLCAKLSAgICAyMjgsIDk0LCAyMCwgMSwgODAsIDIyNiwgMjksIDIwLCAxLCA4MCwgMjEzLCA4LCAyMCwgMSwgODAsIDIyOSwgMTMxLCAyMCwgCi0gICAgMSwgODAsIDIyOCwgMTEsIDI1MSwgMjAwLCAyMCwgMSwgODAsIDIyNywgMjE1LCAyMCwgMSwgODAsIDIyNSwgMTI3LCAyMCwgCi0gICAgMSwgODAsIDIzMSwgMzMsIDIwLCAxLCA4MCwgMjQzLCAyMDIsIDIwLCAxLCA4MCwgMjMwLCAzOCwgMjAsIDEsIDgwLCAyMzAsIAotICAgIDE3MCwgMjAsIDEsIDgwLCAyNDIsIDIwOSwgMjAsIDEsIDgwLCAyNDMsIDIwNiwgNzIsIDIwLCAxLCA4MCwgMjMwLCAxMTgsIAotICAgIDIwLCAxLCA4MCwgMjI1LCAzMiwgMjAsIDEsIDgwLCAyMjksIDk2LCAyMCwgMSwgODAsIDIzMywgMjEwLCAyMCwgMSwgODAsIAotICAgIDIyNSwgMjI5LCAyMCwgMSwgODAsIDIyOCwgMTAyLCAyMCwgMSwgODAsIDIxMywgOSwgMjAsIDEsIDgwLCAyMjksIDExNiwgCi0gICAgMjAsIDEsIDgwLCAyMjYsIDIxNCwgMjI2LCA2MiwgMjAsIDEsIDgwLCAyNDMsIDIwNiwgMjUwLCAyMDMsIDIwLCAxLCA4MCwgCi0gICAgMjQ0LCA2LCAyMCwgMSwgODAsIDIyOSwgNywgMjAsIDEsIDgwLCA2MSwgMjAsIDEsIDgwLCAyMTYsIDIyMywgMjAsIDEsIDgwLCAKLSAgICA3NSwgMjAsIDEsIDgwLCA3MiwgMjAsIDEsIDgwLCAyMzMsIDEwOSwgMjAsIDEsIDgwLCAyMjYsIDIxNCwgMjI1LCAxNTcsIAotICAgIDIwLCAxLCA4MCwgMjE4LCA0OSwgMjAsIDEsIDgwLCAyMTgsIDIsIDIwLCAxLCA4MCwgMjI5LCAyMjcsIDIzMCwgMTA2LCAKLSAgICAyNDAsIDIyMSwgMjAsIDEsIDgwLCAyMjAsIDE5NSwgMjAsIDEsIDgwLCAyMTMsIDUsIDIwLCAxLCA4MCwgMjI5LCA3NywgMjAsIAotICAgIDEsIDgwLCAyMTIsIDE5MywgMjAsIDEsIDgwLCAyMTIsIDIxOCwgMjE4LCAxODUsIDIwLCAxLCA4MCwgMjEyLCAyMTgsIDI0OSwgCi0gICAgODYsIDIwLCAxLCA4MCwgMjEyLCAxNzgsIDIwLCAxLCA4MCwgMjEyLCAxODYsIDIwLCAxLCA4MCwgMjM0LCAxNDgsIDIwLCAxLCAKLSAgICA4MCwgMjI2LCAyNywgMjAsIDEsIDgwLCAyMjksIDgsIDI0NSwgNjUsIDIwLCAxLCA4MCwgMjI1LCAzMCwgMjAsIDEsIDgwLCAKLSAgICAyMTMsIDE4MCwgMjAsIDEsIDgwLCAyNDQsIDExNiwgMjAsIDEsIDgwLCAyMTQsIDIyNywgMjAsIDEsIDgwLCAyMzIsIDE1NiwgCi0gICAgMjAsIDEsIDgwLCAyMzEsIDQyLCAyMCwgMSwgODAsIDIyMywgMjA0LCAyMCwgMSwgODAsIDIyNCwgNjEsIDIwLCAxLCA4MCwgCi0gICAgMjI5LCA3NiwgMjAsIDEsIDgwLCAyMjksIDE1OSwgMjAsIDEsIDgwLCAyMjAsIDE4NywgMjAsIDEsIDgwLCAyMjAsIDE3NiwgCi0gICAgMjAsIDEsIDgwLCAyNDMsIDIwNiwgMjIzLCAyMzYsIDIwLCAxLCA4MCwgMjA1LCAyMCwgMSwgODAsIDIyNSwgMjQwLCAyMCwgCi0gICAgMSwgODAsIDIzMiwgMTc0LCAyMCwgMSwgODAsIDIzNCwgMzcsIDIwLCAxLCA4MCwgMjMxLCAxMjIsIDIwLCAxLCA4MCwgMTg4LCAKLSAgICAyMCwgMSwgODAsIDIzMSwgMjMyLCAyMCwgMSwgODAsIDIxNywgMTc0LCAyMCwgMSwgODAsIDIzNCwgMTAxLCAyMCwgMSwgODAsIAotICAgIDIzMCwgMjIwLCAyMCwgMSwgODAsIDIxNywgMjAwLCAyMCwgMSwgODAsIDI0NCwgMTM3LCAyMCwgMSwgODAsIDI0MiwgMTk5LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMTgxLCAyMCwgMSwgMjI2LCAxMywgNjksIDIwLCAxLCAyMjYsIDEzLCAyMzMsIDIzOCwgMjAsIDEsIAotICAgIDIyNiwgMTMsIDI0NSwgMTY1LCAyMCwgMSwgMjI2LCAxMywgMjI0LCAxLCAyMCwgMSwgMjI2LCAxMywgMjE4LCAzNSwgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIyOCwgMTAsIDIwLCAxLCAyMjYsIDEzLCAyMzMsIDE1NywgMjAsIDEsIDIyNiwgMTMsIDIyMywgMTM2LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjIzLCAxODIsIDIwLCAxLCAyMjYsIDEzLCAyMzEsIDE0NCwgMjAsIDEsIDIyNiwgMTMsIDIxOCwgCi0gICAgNDksIDIwLCAxLCAyMjYsIDEzLCAyMjksIDIyNiwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgMTQsIDIwLCAxLCAyMjYsIDEzLCAKLSAgICAxODMsIDIwLCAxLCAyMjYsIDEzLCAyMTgsIDIwNSwgMjAsIDEsIDIyNiwgMTMsIDIyMCwgMjA3LCAyMCwgMSwgMjI2LCAxMywgCi0gICAgMjIwLCAxMTcsIDIwLCAxLCAyMjYsIDEzLCAyMjEsIDQ0LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxNzcsIDIwLCAxLCAyMjYsIAotICAgIDEzLCAyMzQsIDE2MiwgMjAsIDEsIDIyNiwgMTMsIDIyOCwgNjQsIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDkyLCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjI4LCAyNDEsIDIwLCAxLCAyMjYsIDEzLCAyMTIsIDIxNywgMjAsIDEsIDIyNiwgMTMsIDIyMCwgMTUwLCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMTg2LCAyMCwgMSwgMjI2LCAxMywgMjI4LCAxMjAsIDIwLCAxLCAyMjYsIDEzLCAyMjYsIDI3LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjI4LCAxMDEsIDIwLCAxLCAyMjYsIDEzLCAyMTMsIDE4MCwgMjAsIDEsIDIyNiwgMTMsIDIyNiwgCi0gICAgODYsIDIwLCAxLCAyMjYsIDEzLCAyMjMsIDUxLCAyMCwgMSwgMjI2LCAxMywgMjI5LCA2NCwgMjAsIDEsIDIyNiwgMTMsIAotICAgIDIyMywgMjA0LCAyMCwgMSwgMjI2LCAxMywgMjM0LCAxNzEsIDIwLCAxLCAyMjYsIDEzLCAyMjksIDkzLCAyMCwgMSwgMjI2LCAKLSAgICAxMywgMjI5LCAxNDEsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDE4NywgMjAsIDEsIDIyNiwgMTMsIDIyNSwgMzMsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyNDQsIDYsIDIwLCAxLCAyMjYsIDEzLCAyMTQsIDQ5LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxMywgMjAsIDEsIAotICAgIDIyNiwgMTMsIDIzMiwgMTc0LCAyMCwgMSwgMjI2LCAxMywgMjM0LCAzNywgMjAsIDEsIDIyNiwgMTMsIDIzMSwgMTc3LCAyMCwgCi0gICAgMSwgMjI2LCAxMywgMjIzLCAyMzMsIDIwLCAxLCAyMjYsIDEzLCAxODgsIDIwLCAxLCAyMjYsIDEzLCAyMzAsIDIzMSwgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIzMSwgMTg1LCAyMCwgMSwgMjI2LCAxMywgMjE3LCAxODMsIDIwLCAxLCAyMjYsIDEzLCAyMzQsIDQsIAotICAgIDIwLCAxLCAyMjYsIDEzLCAyMjIsIDE2NiwgMjAsIDEsIDIyNiwgMTMsIDIxNCwgOTgsIDU2LCAxLCAyNTMsIDE5MywgNzQsIAotICAgIDE0MiwgMSwgMjUzLCAxOTMsIDIxMywgMzgsIDQ3LCAyNywgMTYsIDIyNSwgMzksIDQ3LCAyNywgMTYsIDI0OCwgMTAzLCA0NywgCi0gICAgMjcsIDE2LCAyMjYsIDUwLCA0NywgMjcsIDE2LCAyMjYsIDIzNywgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIDIyNiwgMjM3LCAKLSAgICAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjE0LCAyNDgsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyMTQsIDI0OCwgMjQ3LCAxNTMsIAotICAgIDQ3LCAyNywgMTYsIDIzNCwgMjAyLCA0NywgMjcsIDE2LCAyMTgsIDExNSwgNDcsIDI3LCAxNiwgMjI2LCAxMzcsIDQ3LCAyNywgCi0gICAgMTYsIDIxMiwgMjA4LCA0NywgMjcsIDE2LCAyMTIsIDIwOSwgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIzMywgMjQzLCA0NywgCi0gICAgMjcsIDE2LCAyNTMsIDIzNiwgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIDI0NCwgMjQ5LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgCi0gICAgMjE3LCAyMTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY3LCA0NywgMjcsIDE2LCAyNTMsIDIyNywgNDcsIDI3LCAxNiwgMjUzLCAKLSAgICAyMjgsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMTgsIDEyMSwgNDcsIDI3LCAxNiwgMjE3LCAxMTIsIDQ3LCAyNywgMTYsIAotICAgIDIyNywgNzIsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIyNSwgMzgsIAotICAgIDQ3LCAyNywgMTYsIDI1MCwgODUsIDQ3LCAyNywgMTYsIDIxNCwgMjM4LCA0NywgMjcsIDE2LCAyMzUsIDE2MiwgMjUzLCAKLSAgICAxOTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjM0LCAxNjgsIDI1MywgMTkxLCA0NywgCi0gICAgMjcsIDE2LCAyMjIsIDEzMSwgNDcsIDI3LCAxNiwgMjI2LCAxMjgsIDQ3LCAyNywgMTYsIDIxOSwgODYsIDI1MywgMjMwLCAKLSAgICA0NywgMjcsIDE2LCAyMjYsIDIzNiwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIxNCwgMjQ3LCAyNTMsIDE5MSwgNDcsIDI3LCAKLSAgICAxNiwgMjUzLCAyMzEsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyNTMsIDIyNSwgNDcsIDI3LCAxNiwgMjM0LCA0NiwgNDcsIAotICAgIDI3LCAxNiwgMjIzLCAxOTksIDQ3LCAyNywgMTYsIDIyNSwgMjM4LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjE3LCAzNiwgCi0gICAgNDcsIDI3LCAxNiwgMjU0LCAzMCwgNDcsIDI3LCAxNiwgMjIyLCA3OCwgNDcsIDI3LCAxNiwgMjE4LCAxMjQsIDI1MywgMTkxLCAKLSAgICA0NywgMjcsIDE2LCAyMTgsIDEyNCwgMjMxLCAxMDcsIDIxOSwgODQsIDQ3LCAyNywgMTYsIDIyNiwgMjMxLCAyNTMsIDE5MSwgCi0gICAgNDcsIDI3LCAxNiwgMjE3LCAxNDMsIDQ3LCAyNywgMTYsIDIzMywgNTEsIDQ3LCAyNywgMTYsIDI0NSwgMjUyLCA0NywgMjcsIAotICAgIDE2LCAyMTYsIDE4NSwgNDcsIDI3LCAxNiwgMjE3LCAxODUsIDQ3LCAyNywgMTYsIDIzMywgMjQ2LCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDIzNiwgMjQ0LCAyNDksIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIAotICAgIDIzNiwgNywgNDcsIDI3LCAxNiwgMjE2LCAxNTcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMzQsIDIwNSwgMjE2LCAxNTYsIAotICAgIDQ3LCAyNywgMTYsIDIyNiwgNzUsIDQ3LCAyNywgMTYsIDIyNSwgNDMsIDQ3LCAyNywgMTYsIDIzNCwgMjAsIDQ3LCAyNywgCi0gICAgMTYsIDI1MCwgMTcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMjQsIDM4LCA0NywgMjcsIDE2LCAyMjYsIDE0MCwgMjUzLCAKLSAgICAxOTEsIDQ3LCAyNywgMTYsIDIyNiwgMTM4LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjQwLCAxMDIsIDQ3LCAyNywgMTYsIAotICAgIDIzMCwgMjMsIDQ3LCAyNywgMTYsIDIyNiwgMzIsIDQ3LCAyNywgMTYsIDIzNCwgMjEsIDI1NCwgNTgsIDQ3LCAyNywgMTYsIAotICAgIDIxNiwgMTU3LCAyNTQsIDU4LCA0NywgMjcsIDE2LCAyMTksIDYzLCA0NywgMjcsIDE2LCAyNDIsIDEwMSwgNDcsIDI3LCAxNiwgCi0gICAgMjM1LCAxNjIsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjcsIDcyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAyMzcsIAotICAgIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjYsIDMxLCA0NywgMjcsIDE2LCAyMzQsIDcsIDQ3LCAyNywgMTYsIDIyNiwgMzAsIAotICAgIDQ3LCAyNywgMTYsIDIzMywgMjQ1LCA0NywgMjcsIDE2LCAyMjYsIDc2LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjM0LCAKLSAgICAxNjgsIDIyOSwgMTc4LCAyNTQsIDcsIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIAotICAgIDE2LCAyMTIsIDIwNiwgNDcsIDI3LCAxNiwgMjUzLCAyMjgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNTMsIDIyOSwgMjE4LCAKLSAgICAxMjIsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTIsIDIwNywgNDcsIDI3LCAxNiwgMjMzLCAyNDQsIDQ3LCAyNywgMTYsIAotICAgIDI0NSwgMTMwLCA0NywgMjcsIDE2LCAyNTAsIDg2LCA0NywgMjcsIDE2LCAyMzEsIDExLCAyMzUsIDE2MSwgNDcsIDI3LCAxNiwgCi0gICAgMjE0LCAyNDgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjUsIDIzOCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNSwgNDQsIAotICAgIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjcsIDY5LCA0NywgMjcsIDE2LCAyNTMsIDI1MSwgNDcsIDI3LCAxNiwgMjMyLCAKLSAgICAxMTgsIDQ3LCAyNywgMTYsIDIyNiwgMTM4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAxNDAsIDIyOSwgMTc3LCA0NywgCi0gICAgMjcsIDE2LCAyNDUsIDI2LCAyMjYsIDEzOSwgNDcsIDI3LCAxNiwgMjMzLCAxNzUsIDQ3LCAyNywgMTYsIDI1MywgMjUyLCAKLSAgICA0NywgMjcsIDE2LCAyMTYsIDE1NywgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI0NSwgMTMzLCA0NywgMjcsIDE2LCAyMTgsIAotICAgIDEyNCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIxOCwgMTE2LCA0NywgMjcsIDE2LCAyNTAsIDE3LCAyMjksIDE3NywgNDcsIAotICAgIDI3LCAxNiwgMjQ1LCA2OSwgNDcsIDI3LCAxNiwgMjIyLCA3OSwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIxMywgMTM5LCAKLSAgICAyMzQsIDQ2LCA0NywgMjcsIDE2LCAyMTYsIDE1NCwgNDcsIDI3LCAxNiwgMjI1LCA0NSwgNDcsIDI3LCAxNiwgMjE2LCAxNTgsIAotICAgIDQ3LCAyNywgMTYsIDIxNiwgMTU1LCA0NywgMjcsIDE2LCAyMjUsIDQyLCA0NywgMjcsIDE2LCAyMTYsIDE1MywgNDcsIDI3LCAKLSAgICAxNiwgMjI1LCA0MSwgNDcsIDI3LCAxNiwgMjQyLCAxMzQsIDQ3LCAyNywgMTYsIDI1MywgMTg1LCA0NywgMjcsIDE2LCAyNDUsIAotICAgIDI2LCAyNTMsIDE4NSwgNDcsIDI3LCAxNiwgMjI2LCAyMzEsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTcsIDE0MiwgMjQ1LCAKLSAgICAzNCwgNDcsIDI3LCAxNiwgMjE3LCAxNDIsIDI0NCwgMjQ4LCA0NywgMjcsIDE2LCAyMTcsIDE0NCwgMjUzLCAyMzIsIDQ3LCAKLSAgICAyNywgMTYsIDIxNywgMTM3LCAyMzQsIDI1MSwgMjUzLCAyMjQsIDQ3LCAyNywgMTYsIDIzNCwgMjA0LCA0NywgMjcsIDE2LCAKLSAgICAyNDUsIDk3LCA0NywgMjcsIDE2LCAyMTMsIDIsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyMTMsIDIsIDI1NCwgNywgNDcsIAotICAgIDI3LCAxNiwgMjE5LCA4NSwgNDcsIDI3LCAxNiwgMjM0LCA0NywgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDcsIDE1NCwgMjUzLCAKLSAgICAxOTEsIDQ3LCAyNywgMTYsIDIzMywgMjQ3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjMzLCAyNDcsIDI1NCwgNTgsIDQ3LCAKLSAgICAyNywgMTYsIDIzMywgMjQ3LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjUzLCAyMzEsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDIzMywgNDcsIDI3LCAxNiwgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIxNiwgMTY4LCA0NywgMjcsIDE2LCAyMTcsIAotICAgIDE3NywgNDcsIDI3LCAxNiwgMjM0LCAxMSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjQ1LCA5MiwgMjUwLCA4LCA0NywgMjcsIAotICAgIDE2LCAyMzMsIDU2LCAyNDUsIDI1MywgMjUwLCA5LCA0NywgMjcsIDE2LCAyMzMsIDU2LCAyMTYsIDE3MCwgMjUwLCA5LCA0NywgCi0gICAgMjcsIDE2LCAyMzMsIDU2LCAyMTcsIDE4NywgMjUwLCA5LCA0NywgMjcsIDE2LCAyMzMsIDU2LCAyMzYsIDIsIDI1MCwgOCwgCi0gICAgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyOSwgMTc4LCAyNTQsIDcsIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjYsIDEyOSwgCi0gICAgMjUzLCAxODEsIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjYsIDEyOSwgMjQ3LCAyMzYsIDQ3LCAyNywgMTYsIDI0NywgMTc3LCAKLSAgICA0NywgMjcsIDE2LCAyNDcsIDE3OCwgMjI2LCAxMjksIDI1MywgMTgyLCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIAotICAgIDIyNiwgMTI5LCAyNTMsIDE4MiwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDcsIDE3OCwgMjI2LCAxMjksIDI0NywgMjM2LCA0NywgCi0gICAgMjcsIDE2LCAyMTYsIDE3NCwgNDcsIDI3LCAxNiwgMjUzLCAxODYsIDQ3LCAyNywgMTYsIDIzNiwgOSwgNDcsIDI3LCAxNiwgCi0gICAgMjQ3LCAxOTgsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMjUsIDEzNCwgMjUzLCAxODcsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAKLSAgICAyNTMsIDE4NCwgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDI1MywgMTg3LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjMxLCAxMDEsIAotICAgIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMzEsIDExMCwgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDI0MiwgMTM2LCA0NywgMjcsIAotICAgIDE2LCAyNTQsIDExNiwgMjQyLCAxMzMsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyMjUsIDEzNCwgMjQyLCAxMzYsIDQ3LCAyNywgCi0gICAgMTYsIDIzMSwgMjE0LCAyMjUsIDUwLCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDI1NCwgNjAsIDIyNSwgNTAsIAotICAgIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjQ3LCAyMzUsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgCi0gICAgMjU0LCA2MCwgMjQ3LCAyMzUsIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE2LCAxNjMsIDI0MCwgMTAwLCAKLSAgICA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE2LCAxNzUsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTcsIDE4MSwgMjQwLCAxMDAsIAotICAgIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTcsIDE4MSwgMjMzLCA1OSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAKLSAgICAyMzMsIDU5LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIyNSwgMTcxLCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgCi0gICAgMjM1LCAxNjcsIDIxNywgMjA0LCAyNDAsIDEwMSwgNDcsIDI3LCAxNiwgMjUzLCAyMjksIDIxNywgMjA0LCAyNDAsIDEwMSwgCi0gICAgNDcsIDI3LCAxNiwgMjQ0LCAxNDAsIDIxNywgMTc4LCA0NywgMjcsIDE2LCAyNDQsIDE0MCwgMjMwLCAyMTMsIDQ3LCAyNywgCi0gICAgMTYsIDI0NCwgMTQwLCAyNDcsIDE4MiwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNCwgMjQyLCAyNDAsIDEwMCwgNDcsIDI3LCAKLSAgICAxNiwgMjMxLCAyMTQsIDIyNSwgNDksIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjI1LCAxNzEsIDIxNywgCi0gICAgMTgxLCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjQyLCAxMzEsIDIzMCwgOTgsIDI1MywgMjMyLCA0NywgMjcsIDE2LCAyNDIsIAotICAgIDEzMSwgMjMwLCA5OCwgMjQ3LCAxNTIsIDQ3LCAyNywgMTYsIDI0NSwgMTA2LCAyMzQsIDI1MSwgMjQzLCAyMDcsIDIxNCwgCi0gICAgMTA1LCA0NywgMjcsIDE2LCAyMzYsIDgsIDQ3LCAyNywgMTYsIDIzNiwgNiwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI1MywgCi0gICAgMTkyLCAyNDcsIDIzNCwgMjQwLCA5OSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAxOTMsIDQ3LCAyNywgMTYsIAotICAgIDI0MywgMjA3LCAyNDcsIDE5NiwgMjMwLCAyMywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIzMCwgMTgsIDI0MCwgMTAwLCA0NywgCi0gICAgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDI0NywgMjExLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjIwLCAzMCwgMjQ3LCAKLSAgICAxOTUsIDI0NywgMjExLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIzNCwgMTg4LCA0NywgMjcsIDE2LCAyNDMsIAotICAgIDIwNywgMjQ3LCAxOTYsIDIxMiwgMTYsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMjI5LCA2NSwgMjM0LCAKLSAgICAyMDEsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMjI5LCA2NSwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDMsIAotICAgIDIwNywgMjMxLCAyNTQsIDI1MCwgMTAsIDI0NywgMTgyLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjMxLCAyNTQsIDI1MCwgCi0gICAgMTAsIDIzMCwgMjEzLCA0NywgMjcsIDE2LCAyNDQsIDkxLCAyMjAsIDMwLCAyNTAsIDEwLCAyMTQsIDI0MSwgNDcsIDI3LCAKLSAgICAxNiwgMjQzLCAyMDcsIDIyMCwgMzAsIDI1MCwgMTAsIDIxOCwgMTI1LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjI5LCAxNzksIAotICAgIDQ3LCAyNywgMTYsIDI1MCwgMTEsIDIxMSwgMjQ4LCA0NywgMjcsIDE2LCAyNTAsIDExLCAyMzQsIDQ1LCA0NywgMjcsIDE2LCAKLSAgICAyNTAsIDExLCAyMTksIDE5NywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0MCwgMTQ2LCAyMTMsIDEsIDIxNywgMTgyLCA0NywgCi0gICAgMjcsIDE2LCAyNDMsIDIwNywgMjQ1LCAxMDcsIDI1MywgMjUzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIxNiwgMTY0LCA0NywgCi0gICAgMjcsIDE2LCAyNDcsIDE5MCwgMjE2LCAxNjQsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyMTcsIDE4MiwgNDcsIDI3LCAxNiwgCi0gICAgMjQ3LCAxOTAsIDI1MywgMjM0LCAyNDUsIDI1MywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjQ3LCAxOTAsIDIzMCwgMjExLCAKLSAgICAyMTcsIDE4NiwgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjQ3LCAxOTAsIDI0NywgMTc0LCAyNDUsIDMsIDI0NywgOTMsIDQ3LCAKLSAgICAyNywgMTYsIDI0NywgMTkwLCAyMTYsIDE3MiwgMjI3LCA3NywgMjQ3LCA5MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyNTMsIAotICAgIDIzNCwgMjQ1LCAyNTMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjMwLCAyMTEsIDIxNywgMTg2LCAyNDcsIDkzLCAKLSAgICA0NywgMjcsIDE2LCAyMTMsIDEsIDI0NywgMTc0LCAyNDUsIDMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjE2LCAKLSAgICAxNzIsIDIyNywgNzcsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0MywgMjUsIDI0NywgMTg5LCA0NywgMjcsIDE2LCAyNDMsIAotICAgIDI1LCAyMTMsIDAsIDQ3LCAyNywgMTYsIDI0NywgMTk3LCAyNTMsIDIzNCwgMjMxLCAxMiwgNDcsIDI3LCAxNiwgMjQ3LCAKLSAgICAxOTcsIDI1MywgMjM0LCAyMzEsIDEzNywgNDcsIDI3LCAxNiwgMjQ3LCAxOTcsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyNDcsIAotICAgIDE5NywgMjE3LCAxMzUsIDQ3LCAyNywgMTYsIDIyMCwgODksIDIxNywgMTM1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIAotICAgIDEzNiwgMjQ3LCAxMzgsIDQ3LCAyNywgMTYsIDIyMCwgODksIDIxNywgMTM2LCAyMTYsIDE2NSwgNDcsIDI3LCAxNiwgMjIwLCAKLSAgICA4OSwgMjE3LCAxMzYsIDIxNywgMTc1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyNTMsIDE1OSwgNDcsIDI3LCAxNiwgMjIwLCAKLSAgICA4OSwgMjUzLCAxNjAsIDI0NywgMTM4LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyNTMsIDE2MCwgMjE2LCAxNjUsIDQ3LCAyNywgCi0gICAgMTYsIDIyMCwgODksIDI1MywgMTYwLCAyMTcsIDE3NSwgNDcsIDI3LCAxNiwgMjQ3LCAxNzUsIDI0MywgNiwgNDcsIDI3LCAKLSAgICAxNiwgMjQ3LCAxODEsIDIyNywgMiwgNDcsIDI3LCAxNiwgMjE5LCA3NywgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDE5MywgNDcsIAotICAgIDI3LCAxNiwgMjUzLCAxNzgsIDIxNCwgMTA1LCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgMjQzLCAxMTAsIDQ3LCAyNywgMTYsIAotICAgIDI1MywgMTc4LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDIzNCwgMTg4LCA0NywgMjcsIDE2LCAyNTMsIDE3OCwgCi0gICAgMjEyLCAxNiwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDIyOSwgNjQsIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAyMjksIDE3OCwgCi0gICAgMjMxLCAxMDksIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyMjksIDE3OCwgMjMxLCAxMDksIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAKLSAgICAyMjksIDE3OCwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDIzNCwgMTY5LCAyMjksIDE3OCwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIAotICAgIDIzNCwgNDcsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI5LCAxNzgsIDIzNCwgMjAxLCAyNywgMTYsIDIyMCwgCi0gICAgODEsIDI1MiwgNTUsIDI3LCAxNiwgNTEsIDI1MiwgNTUsIDI3LCAxNiwgNDAsIDI1MiwgNTUsIDI3LCAxNiwgMjIzLCAyMDMsIAotICAgIDQwLCAyNTIsIDU1LCAyNywgMTYsIDI0OCwgMTAwLCAyNTIsIDU1LCAyNywgMTYsIDIyMCwgMTc1LCAyNTIsIDU1LCAyNywgCi0gICAgMTYsIDQyLCAyMjMsIDIyOCwgNTIsIDI3LCAxNiwgNDYsIDIyMywgMjI4LCA1MiwgMjcsIDE2LCAyMjMsIDIyOCwgMjQ3LCAKLSAgICA3MiwgMjcsIDE2LCAyNDgsIDE0MSwgMjIyLCA4MiwgMjcsIDE2LCAyNDgsIDE2NSwgMjUwLCAxODEsIDI3LCAxNiwgMjIyLCAKLSAgICA4MiwgMjcsIDE2LCAyNDksIDE3MSwgMjcsIDE2LCAyMjMsIDIyNiwgMjQ0LCA4MCwgMjcsIDE2LCAyMjMsIDIyNiwgMjQ0LCAKLSAgICA3OSwgMjcsIDE2LCAyMjMsIDIyNiwgMjQ0LCA3OCwgMjcsIDE2LCAyNDQsIDEwMCwgMjcsIDE2LCAyNDQsIDEwMSwgNTUsIAotICAgIDI3LCAxNiwgMjUxLCA3NiwgNzcsIDI3LCAxNiwgMjUwLCAyMTAsIDI3LCAxNiwgMjUxLCA4NiwgMjcsIDE2LCAxMjUsIDI3LCAKLSAgICAxNiwgMjI3LCA1OSwgMjE5LCAxMDIsIDI3LCAxNiwgMjE2LCAyMywgMjE5LCAxMDIsIDI3LCAxNiwgMjE3LCA5NiwgMjE5LCAKLSAgICAxMDIsIDI3LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAyNywgMTYsIDI0NCwgNDksIDIxOSwgMTAyLCAyNywgMTYsIDIyMCwgCi0gICAgNTIsIDIxOSwgMTAyLCAyNywgMTYsIDIyMCwgNTAsIDI0MywgMjIwLCAyNywgMTYsIDI0MywgMjM0LCAyNDMsIDIyMCwgMjcsIAotICAgIDE2LCAyNDMsIDE3OCwgMjQ5LCAyMDcsIDI3LCAxNiwgMjQzLCAxNzgsIDI0OSwgMjA4LCAyMjcsIDQsIDI1NCwgNTEsIDI3LCAKLSAgICAxNiwgMjQzLCAxNzgsIDI0OSwgMjA4LCAyMjcsIDQsIDI1MiwgNDIsIDI3LCAxNiwgMjUwLCAyNTMsIDI0OSwgMjA3LCAyNywgCi0gICAgMTYsIDI0NCwgMjMxLCAyNDksIDIwNywgMjcsIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDgsIDIyNywgNCwgMjU0LCA1MSwgMjcsIAotICAgIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDgsIDIyNywgNCwgMjUyLCA0MiwgMjcsIDE2LCAyNDYsIDM4LCAyNDksIDIwNiwgMjcsIAotICAgIDE2LCAyNDYsIDM4LCAyNDksIDIwNSwgMjcsIDE2LCAyMzAsIDE1NSwgMjMxLCAxNTUsIDIyMywgMjEzLCAyNywgMTYsIDUxLCAKLSAgICAyMjAsIDI1NCwgMjcsIDE2LCA1MSwgMjQ0LCAzNCwgMjcsIDE2LCAyNDQsIDM1LCAyMTUsIDEzNCwgMjcsIDE2LCAyNDQsIAotICAgIDM1LCAyNDYsIDYwLCAyNywgMTYsIDIzMCwgOSwgMjE1LCAxMzQsIDI3LCAxNiwgMjMwLCA5LCAyNDYsIDYwLCAyNywgMTYsIAotICAgIDIyMCwgMjU1LCAyMTUsIDEzNCwgMjcsIDE2LCAyMjAsIDI1NSwgMjQ2LCA2MCwgMjcsIDE2LCAyMjQsIDE2NywgMTYwLCAKLSAgICAyMjAsIDI1NCwgMjcsIDE2LCAyMjQsIDE2NywgMTYwLCAyNDQsIDM0LCAyNywgMTYsIDI0OSwgMTU1LCAyMTcsIDQwLCAyNywgCi0gICAgMTYsIDI0OSwgMjcsIDIxNywgNDAsIDI3LCAxNiwgMjI3LCA0LCAyNTQsIDUxLCAyNywgMTYsIDIyNywgNCwgMjUyLCA0MiwgCi0gICAgMjcsIDE2LCAyMjQsIDE0OSwgMjU0LCA1MSwgMjcsIDE2LCAyMjQsIDE0OSwgMjUyLCA0MiwgMjcsIDE2LCAyMzAsIDE1OCwgCi0gICAgMjIzLCAyMTMsIDI3LCAxNiwgMjEzLCAyMzYsIDIyMywgMjEzLCAyNywgMTYsIDE1MSwgMjIzLCAyMTMsIDI3LCAxNiwgMjI0LCAKLSAgICAxNjcsIDIyMywgMjEzLCAyNywgMTYsIDI0NSwgMTQ2LCAyMjMsIDIxMywgMjcsIDE2LCAyMjAsIDQ2LCAyMjMsIDIxMywgMjcsIAotICAgIDE2LCAyMTcsIDExMywgMjIzLCAyMTMsIDI3LCAxNiwgMjIwLCAzOCwgMjIzLCAyMTMsIDI3LCAxNiwgMTIyLCAyNDAsIDIwMSwgCi0gICAgMjE2LCAzNiwgMjIzLCAyMTMsIDI3LCAxNiwgMjEzLCAxNjcsIDIyOCwgMTU0LCAyNywgMTYsIDk0LCAyMjgsIDE1NCwgMjcsIAotICAgIDE2LCAyNDksIDIyOSwgMjEzLCAxNjcsIDIyOCwgMTU0LCAyNywgMTYsIDQxLCAyMjgsIDE1NSwgMjEzLCAyMzgsIDI3LCAxNiwgCi0gICAgNDEsIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDExNCwgMjEzLCAyMzgsIDI3LCAKLSAgICAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDI1MSwgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgNDIsIAotICAgIDIxMywgMjM4LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgNDIsIDI1MSwgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAKLSAgICAyMjgsIDE1NSwgNDYsIDIxMywgMjM4LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgNDYsIDI1MSwgMTQ0LCAyNywgMTYsIAotICAgIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE5LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDExOSwgMjUxLCAKLSAgICAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDQ2LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgCi0gICAgMjI4LCAxNTUsIDExNCwgNDYsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMCwgMTk5LCAyMjgsIDE1NSwgMjEzLCAyMzgsIDI3LCAKLSAgICAxNiwgMjMwLCAxOTksIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4MSwgMjI4LCAxNTUsIDExOSwgMjEzLCAKLSAgICAyMzgsIDI3LCAxNiwgMjE2LCAxODEsIDIyOCwgMTU1LCAxMTksIDI1MSwgMTQ0LCAyNywgMTYsIDIyNiwgMTMyLCAyMjgsIAotICAgIDE1NCwgMjcsIDE2LCAyMTQsIDExMywgMjI4LCAxNTQsIDI3LCAxNiwgMjI4LCAxNTUsIDI1MSwgMTQ0LCAyNywgMTYsIDIyOCwgCi0gICAgNTksIDIyOCwgMTU0LCAyNywgMTYsIDI0OSwgMTc4LCAyMjgsIDE1NSwgMjEzLCAyMzgsIDI3LCAxNiwgMjQ5LCAxNzgsIAotICAgIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyNTEsIDc0LCAyNywgMTYsIDIxMywgMjM2LCAyMjgsIDE1OCwgMjcsIDE2LCAKLSAgICAxNTEsIDIyOCwgMTU4LCAyNywgMTYsIDIyNCwgMTY3LCAyMjgsIDE1OCwgMjcsIDE2LCAyNDUsIDE0NiwgMjI4LCAxNTgsIAotICAgIDI3LCAxNiwgMjIwLCA0NiwgMjI4LCAxNTgsIDI3LCAxNiwgMjE3LCAxMTMsIDIyOCwgMTU4LCAyNywgMTYsIDIyMCwgMzgsIAotICAgIDIyOCwgMTU4LCAyNywgMTYsIDEyMiwgMjQwLCAyMDEsIDIxNiwgMzYsIDIyOCwgMTU4LCAyNywgMTYsIDM3LCAyMTksIDc5LCAKLSAgICAyNywgMTYsIDM3LCAyMTksIDE3MiwgMjE5LCA3OSwgMjcsIDE2LCAzNywgMjE2LCAxOTIsIDI3LCAxNiwgMzcsIDIxNiwgCi0gICAgMTkxLCAyNywgMTYsIDM3LCAyMTYsIDE5MCwgMjcsIDE2LCAyNDQsIDcwLCAyMTYsIDE5MiwgMjcsIDE2LCAyNDQsIDcwLCAKLSAgICAyMTYsIDE5MSwgMjcsIDE2LCAyNDQsIDcwLCAyMTYsIDE5MCwgMjcsIDE2LCAzNywgMjUzLCAxMDUsIDI0NywgNzQsIDI3LCAKLSAgICAxNiwgMzcsIDI0NCwgNDEsIDI3LCAxNiwgMzcsIDI0NCwgNDAsIDI3LCAxNiwgMzcsIDI0NCwgMzksIDI3LCAxNiwgMzcsIAotICAgIDI0NCwgMzgsIDI3LCAxNiwgMzcsIDI0NCwgMzcsIDI3LCAxNiwgMjUxLCAyMzQsIDI1MSwgMjUwLCAyNywgMTYsIDI0NSwgCi0gICAgMTAxLCAyNTEsIDI1MCwgMjcsIDE2LCAyNTEsIDIzNCwgMjE3LCA2NSwgMjcsIDE2LCAyNDUsIDEwMSwgMjE3LCA2NSwgMjcsIAotICAgIDE2LCAyNTEsIDIzNCwgMjIwLCA4LCAyNywgMTYsIDI0NSwgMTAxLCAyMjAsIDgsIDI3LCAxNiwgMjUxLCAyMzQsIDIyNSwgCi0gICAgMjQ3LCAyNywgMTYsIDI0NSwgMTAxLCAyMjUsIDI0NywgMjcsIDE2LCAzNywgMjU0LCAxNzQsIDI3LCAxNiwgMzcsIDIxOSwgCi0gICAgMTA0LCAyNywgMTYsIDM3LCAyMTcsIDE5MSwgMjcsIDE2LCAzNywgMjE5LCAxMDUsIDI3LCAxNiwgMzcsIDIzMSwgMjI1LCAKLSAgICAyNywgMTYsIDM3LCAyMzEsIDIyNCwgMjcsIDE2LCAzNywgMjU0LCAxNzMsIDI3LCAxNiwgMzcsIDIzMiwgMTY3LCAyNywgMTYsIAotICAgIDI1MywgMTY5LCAyMTUsIDEzNCwgMjcsIDE2LCAyNTMsIDE2OSwgMjQ2LCA2MCwgMjcsIDE2LCAzNywgMjQ3LCA4OSwgMjcsIAotICAgIDE2LCAzNywgMjIzLCAxMjgsIDI3LCAxNiwgMzcsIDI0NCwgMjcsIDI3LCAxNiwgMzcsIDIyMCwgNCwgMjcsIDE2LCAzNywgCi0gICAgMjUxLCAyMTUsIDI3LCAxNiwgMzcsIDUxLCAyMTYsIDIzMiwgMjcsIDE2LCAzNywgMjE2LCAxNjksIDIxNiwgMjMyLCAyNywgCi0gICAgMTYsIDIyMywgMTMyLCAyNywgMTYsIDIxOSwgMjAsIDI3LCAxNiwgMjEyLCAxNTIsIDI3LCAxNiwgMjI1LCAyMzksIDI3LCAKLSAgICAxNiwgMjMxLCA5MiwgMjcsIDE2LCAyNDMsIDI0MiwgMjcsIDE2LCAyNDksIDc4LCAyNywgMTYsIDI0OCwgMjksIDI3LCAxNiwgCi0gICAgMjQyLCAxMjYsIDIyOCwgMTU5LCAyMjAsIDIzLCAyNywgMTYsIDI0MiwgMTI2LCAyMjgsIDE1OSwgMjI4LCAxODYsIDIyMCwgCi0gICAgMjMsIDI3LCAxNiwgMjE2LCAyMTMsIDI3LCAxNiwgMjE2LCA1OSwgMjcsIDE2LCAyMzUsIDE5MSwgMjE2LCA1OSwgMjcsIDE2LCAKLSAgICAyMTYsIDYwLCAyMjAsIDIzLCAyNywgMTYsIDIxNiwgNjAsIDIxNSwgMTM0LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDQsIAotICAgIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MSwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQwLCAyNywgMTYsIDIyNywgMTUsIDIxOSwgCi0gICAgMzksIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzOCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDM3LCAyNywgMTYsIDIyNywgMTUsIAotICAgIDIxOSwgMzYsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNSwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDM0LCAyNywgMTYsIDIyNywgCi0gICAgMTUsIDIxOSwgNDMsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MiwgMjcsIDE2LCAyNDEsIDIyOSwgMjcsIDE2LCAyMjksIAotICAgIDE4NiwgMjcsIDE2LCAyNDUsIDEwMSwgNjUsIDIxOSwgNzMsIDI3LCAxNiwgMjQ4LCAyMiwgMjIwLCAyMywgMjcsIDE2LCAzNywgCi0gICAgMTE5LCAyNTEsIDk1LCAyNywgMTYsIDM3LCAxMTQsIDI1MSwgOTUsIDI3LCAxNiwgMzcsIDI0MSwgMjM5LCAyNywgMTYsIDM3LCAKLSAgICAyMTksIDI1MSwgMjI1LCAxNzUsIDI3LCAxNiwgMjI2LCA5MSwgNzcsIDI3LCAxNiwgMjI2LCA5MSwgMTE0LCA3NywgMjcsIAotICAgIDE2LCAxNTEsIDIyNiwgOTEsIDc3LCAyNywgMTYsIDI0MiwgMTU4LCAyMTUsIDEzNCwgMjcsIDE2LCAyNDIsIDE1OCwgMjQ2LCAKLSAgICA2MCwgMjcsIDE2LCAyLCAyNDQsIDY5LCAyNywgMTYsIDI0OCwgMTI1LCAyNywgMTYsIDI0OCwgMTI2LCAyNTQsIDYzLCAyNywgCi0gICAgMTYsIDIzMSwgMTk3LCAyNywgMTYsIDIzMiwgMTgyLCAyNywgMTYsIDI1MSwgNzEsIDI3LCAxNiwgMjIxLCA3NCwgMjEzLCAKLSAgICAyMzgsIDI3LCAxNiwgMjIxLCA3NCwgMjUxLCAxNDQsIDI3LCAxNiwgMjMwLCAyNTMsIDI3LCAxNiwgMjMwLCAyNTQsIDI1MSwgCi0gICAgMTQ0LCAyNywgMTYsIDIyMSwgNjgsIDIxMywgMjM4LCAyNywgMTYsIDIyMSwgNjgsIDI1MSwgMTQ0LCAyNywgMTYsIDI0MywgCi0gICAgMTkyLCAyMTMsIDIzOCwgMjcsIDE2LCAyNDMsIDE5MiwgMjUxLCAxNDQsIDI3LCAxNiwgMjMyLCAxODMsIDIyNiwgNTUsIAotICAgIDIyMywgMjEzLCAyNywgMTYsIDIzMiwgMTgzLCAyMzYsIDAsIDIyMywgMjEzLCAyNywgMTYsIDI1MSwgNzIsIDIyMywgMjEzLCAKLSAgICAyNywgMTYsIDIyMSwgNzQsIDIyMywgMjEzLCAyNywgMTYsIDIzMCwgMjU0LCAyMjMsIDIxMywgMjcsIDE2LCAyMjEsIDY4LCAKLSAgICAyMjMsIDIxMywgMjcsIDE2LCAyMTcsIDIwMiwgMjI2LCA1MywgMjQ5LCA0OCwgMjI1LCA1OCwgMjI2LCA1NCwgMjcsIDE2LCAKLSAgICAyMTcsIDIwMiwgMjI2LCA1MywgMjQ5LCA0OCwgMjI1LCA1OCwgMjM1LCAyNTUsIDI3LCAxNiwgMjE3LCAyMDIsIDIyNiwgNTMsIAotICAgIDI0OSwgNDgsIDIyNSwgNTgsIDIyNiwgNTUsIDI0NywgMTYzLCAyNywgMTYsIDIxNywgMjAyLCAyMzUsIDI1NCwgMjQ5LCA0OCwgCi0gICAgMjI1LCA1OCwgMjI2LCA1NCwgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNSwgMjU1LCAKLSAgICAyNywgMTYsIDIxNywgMjAyLCAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM2LCAwLCAyNDcsIDE2MywgMjcsIDE2LCAKLSAgICAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNiwgMCwgMjQ3LCAxNjIsIDI3LCAxNiwgMjE3LCAyMDIsIAotICAgIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzYsIDAsIDI0NywgMTYxLCAyNywgMTYsIDI0OSwgNzMsIDI3LCAxNiwgCi0gICAgMjQyLCAxMDMsIDI1MCwgMjUzLCAyNDksIDIwNywgMjcsIDE2LCAyNDIsIDEwMywgMjQ0LCAyMzEsIDI0OSwgMjA3LCAyNywgCi0gICAgMTYsIDQxLCAyNTMsIDc0LCAyNywgMTYsIDIxNCwgMTMyLCAyNywgMTYsIDIyNSwgMTQ4LCAyNywgMTYsIDI0OSwgMTk4LCAKLSAgICAyNywgMTYsIDIyMiwgMTIxLCAyNywgMTYsIDI0OSwgMjAyLCAyNywgMTYsIDIxNiwgMjIwLCAyNywgMTYsIDIyNSwgMTIyLCAKLSAgICAyNywgMTYsIDIyNSwgMTIzLCAyNDQsIDI5LCAyNywgMTYsIDIyMiwgMTIyLCAyNDQsIDI5LCAyNywgMTYsIDIxNiwgMjIxLCAKLSAgICAyMjMsIDIxMCwgMjcsIDE2LCAyMjYsIDM5LCAyMTksIDExLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzQsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE2MywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTUzLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNDYsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzOCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTMyLCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxMzEsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzMCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTI5LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzMsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE3MiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTcxLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE2OSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY4LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjcsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE2NiwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY1LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNjQsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2MiwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTYxLCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE1OSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTU4LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzcsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzNiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTM1LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzQsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDEzMywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTc0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjMsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE0NiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM4LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxMzEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzMCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTcyLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNzEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3MCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTY5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjYsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE2NSwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTY0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTksIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE1OCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU3LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTYsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE1NSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU0LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNTIsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1MSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTUwLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNDksIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0OCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTQ3LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0NCwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTQzLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDIsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE0MSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQwLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzksIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDEzNywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM2LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxMzUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzNCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTMzLCAzNywgMjUsIAotICAgIDI3LCAyMTYsIDE2NiwgMzcsIDI1LCAyNywgMjE3LCAxNzYsIDM3LCAyNSwgMjcsIDIyNiwgNjMsIDI1LCAyNywgMjMzLCA1NSwgCi0gICAgMjMwLCAyMTIsIDMxLCAyNDUsIDE3OSwgMjQ3LCAxNzYsIDMxLCAyNDEsIDIwNiwgMjQ1LCAxNzksIDI0NywgMTc2LCAzMSwgCi0gICAgMjQwLCAyMDQsIDI0NSwgMTc5LCAyNDcsIDE3NiwgMzEsIDI0NSwgMTc4LCAyNDEsIDIwNywgMjQ3LCAxNzYsIDMxLCAyNDUsIAotICAgIDE3OCwgMjQwLCAyMDMsIDI0NywgMTc2LCAzMSwgMjQ1LCAxNzksIDE3MCwgMzEsIDI1MCwgMTA4LCAxNzAsIDMxLCAyNDMsIAotICAgIDIwMCwgMjQ5LCAyMjgsIDE3MCwgMzEsIDIzMCwgMjQ2LCAxNzAsIDMxLCAyNTIsIDUwLCAxNzAsIDMxLCAyMzQsIDE4NSwgCi0gICAgMjIwLCA3LCAxNzAsIDMxLCAyNDksIDExOCwgMTcwLCAzMSwgMjUzLCAxNDgsIDE3MCwgMzEsIDIyNywgMjksIDE3MCwgMzEsIAotICAgIDI1MSwgODAsIDIyNiwgMjU0LCAxNzAsIDMxLCAyNDgsIDI0LCAxNjcsIDI0NywgMTMxLCAxNzAsIDMxLCAyNDcsIDEyOCwgCi0gICAgMTcwLCAzMSwgMjEyLCAyMTMsIDE3MCwgMzEsIDIzNSwgMjQzLCAxNzAsIDMxLCAyMjYsIDcyLCAxNzAsIDMxLCAyMjQsIDIwLCAKLSAgICAxNzAsIDMxLCAyNDksIDEyOCwgMTcwLCAzMSwgMjQxLCA0NiwgMjUyLCAxMDEsIDE3MCwgMzEsIDIxNCwgNDMsIDE3MCwgMzEsIAotICAgIDI0NCwgOCwgMTcwLCAzMSwgMjU0LCAxNTEsIDE3MCwgMzEsIDIyMywgMjM5LCAxNzAsIDMxLCAyMjMsIDIxNywgMTcwLCAzMSwgCi0gICAgMjQ1LCAxNzcsIDE3MCwgMzEsIDIzNSwgNTYsIDE3MCwgMzEsIDI0OSwgMTIzLCAxNzAsIDMxLCAyNDUsIDEwMCwgMTcwLCAKLSAgICAzMSwgMjQ2LCA3LCAxNzAsIDMxLCAyNTAsIDgxLCAxNzAsIDMxLCAyNDgsIDMzLCAxNzAsIDMxLCAyMiwgMjIzLCAyMTYsIAotICAgIDE3MCwgMzEsIDIyNiwgMjA1LCAxNzAsIDMxLCAyMzMsIDU4LCAxNzAsIDMxLCAyNDksIDE5MSwgMTcwLCAzMSwgMjM0LCA4NiwgCi0gICAgMTcwLCAzMSwgMjQzLCA2MiwgMTcwLCAzMSwgMjE5LCA1MiwgMTcwLCAzMSwgMjI1LCAxNiwgMTcwLCAzMSwgMjQzLCAxOTksIAotICAgIDE3MCwgMzEsIDIyMywgMjE4LCAxNzAsIDMxLCAyMzMsIDk1LCAxNjcsIDIzMCwgMjI3LCAxNzAsIDMxLCAyMjMsIDIxNCwgCi0gICAgMTcwLCAzMSwgMjQyLCAxNDQsIDIxMSwgMjExLCAyMzEsIDE0MSwgMTcwLCAzMSwgMjQ1LCAxMDIsIDE3MCwgMzEsIDIxOSwgCi0gICAgNjQsIDE3MCwgMzEsIDI0MiwgMTA1LCAxNzAsIDMxLCAyNDUsIDk0LCAxNzAsIDMxLCAyMjYsIDEwOCwgMTcwLCAzMSwgMjIzLCAKLSAgICAxMjIsIDE3MCwgMzEsIDI0NCwgMjgsIDE3MCwgMzEsIDIxNCwgMjQwLCAxNjcsIDIxNCwgMjgsIDE3MCwgMzEsIDI0OSwgCi0gICAgMTMyLCAxNzAsIDMxLCAyMzEsIDE1NCwgMTcwLCAzMSwgMjQ1LCAyNywgMTcwLCAzMSwgMjE1LCAxNDMsIDE3MCwgMzEsIAotICAgIDI0NywgMTY0LCAxNzAsIDMxLCAyNDksIDE5MywgMjMwLCAxODAsIDE3MCwgMzEsIDI0MiwgODcsIDE3MCwgMzEsIDI0MywgCi0gICAgNjMsIDIzNSwgMjUxLCAxNzAsIDMxLCAyMzEsIDIwNCwgMTcwLCAzMSwgMjU0LCAxNzAsIDE3MCwgMzEsIDI0NSwgMTE1LCAKLSAgICAxNzAsIDMxLCAyNDYsIDYzLCAxNzAsIDMxLCAyMTQsIDI2LCAxNzAsIDMxLCAyMjAsIDc4LCAxNzAsIDMxLCAyMzUsIDIxOSwgCi0gICAgMTcwLCAzMSwgMjQ3LCAyNDksIDE3MCwgMzEsIDI0OCwgMTA1LCAxNzAsIDMxLCAyNDcsIDE2MCwgMTcwLCAzMSwgMjQ0LCAKLSAgICAyNTIsIDE3MCwgMzEsIDIyMSwgMzYsIDE3MCwgMzEsIDIxOSwgNjgsIDE3MCwgMzEsIDI0MSwgMjQxLCAxNzAsIDMxLCAyNDksIAotICAgIDE1MSwgMTcwLCAzMSwgMjQ5LCAxODgsIDE3MCwgMzEsIDI0NCwgMTQ1LCAxNzAsIDMxLCAyNTQsIDExNywgMTcwLCAzMSwgCi0gICAgMjQ5LCAxNTAsIDE3MCwgMzEsIDIyNywgNjMsIDIxNywgMTQ5LCAyMTQsIDIxOSwgMTcwLCAzMSwgMjQ3LCAxODQsIDE3MCwgCi0gICAgMzEsIDIzMywgMTQ3LCAxNzAsIDMxLCAyNDMsIDIzOSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTE2LCAKLSAgICAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxMDksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIAotICAgIDE2NiwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTYzLCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIAotICAgIDIxLCAxODAsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDE4OSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgCi0gICAgMTQ1LCAyMSwgMTk4LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxOTUsIDI0OSwgODgsIDIyMywgMTAzLCAKLSAgICAyMTUsIDE0NSwgMjEsIDIwMCwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTE2LCAyNDksIDg4LCAyMjMsIAotICAgIDEwMywgMjE3LCAxOTYsIDIxLCAxMDksIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE2NiwgMjQ5LCA4OCwgCi0gICAgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTYzLCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxODAsIDI0OSwgCi0gICAgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE4OSwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTk4LCAKLSAgICAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxOTUsIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIAotICAgIDIwMCwgMTQsIDIyLCA2LCA2MSwgMTQsIDIyLCA2LCAyNTMsIDc0LCAxNCwgMjIsIDYsIDI1MCwgMjUyLCAxNCwgMjIsIDYsIAotICAgIDI0OSwgMywgMTQsIDIyLCA2LCA3NCwgMTQsIDIyLCA2LCAyNDQsIDIzMCwgMTQsIDIyLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAKLSAgICA2LCAyNDIsIDQxLCAxNCwgMjIsIDYsIDcyLCAxNCwgMjIsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDYsIDIzNSwgMjcsIDE0LCAKLSAgICAyMiwgNiwgMTUwLCAxNCwgMjIsIDYsIDE4MywgMTQsIDIyLCA2LCAyMDQsIDE0LCAyMiwgNiwgNzUsIDE0LCAyMiwgNiwgCi0gICAgMjI2LCAyMjksIDE0LCAyMiwgNiwgMjI0LCAyNDAsIDE0LCAyMiwgNiwgMTQ5LCAxNCwgMjIsIDYsIDE5NywgMTQsIDIyLCA2LCAKLSAgICAyMTgsIDk5LCAxNCwgMjIsIDYsIDY5LCAxNCwgMjIsIDYsIDIxNSwgNzksIDE0LCAyMiwgNiwgMjE0LCA4MiwgMTQsIDIyLCAKLSAgICA2LCAyMTMsIDE2NiwgMTQsIDIyLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCA2LCAyMTIsIDE1MiwgMTQsIDIyLCAzLCA2MSwgMTQsIAotICAgIDIyLCAzLCAyNTMsIDc0LCAxNCwgMjIsIDMsIDI1MCwgMjUyLCAxNCwgMjIsIDMsIDI0OSwgMywgMTQsIDIyLCAzLCA3NCwgCi0gICAgMTQsIDIyLCAzLCAyNDQsIDIzMCwgMTQsIDIyLCAzLCAyNDMsIDE3NywgMTQsIDIyLCAzLCAyNDIsIDQxLCAxNCwgMjIsIDMsIAotICAgIDcyLCAxNCwgMjIsIDMsIDIzNSwgMTQyLCAxNCwgMjIsIDMsIDIzNSwgMjcsIDE0LCAyMiwgMywgMTUwLCAxNCwgMjIsIDMsIAotICAgIDE4MywgMTQsIDIyLCAzLCAyMDQsIDE0LCAyMiwgMywgNzUsIDE0LCAyMiwgMywgMjI2LCAyMjksIDE0LCAyMiwgMywgMjI0LCAKLSAgICAyNDAsIDE0LCAyMiwgMywgMTQ5LCAxNCwgMjIsIDMsIDE5NywgMTQsIDIyLCAzLCAyMTgsIDk5LCAxNCwgMjIsIDMsIDY5LCAKLSAgICAxNCwgMjIsIDMsIDIxNSwgNzksIDE0LCAyMiwgMywgMjE0LCA4MiwgMTQsIDIyLCAzLCAyMTMsIDE2NiwgMTQsIDIyLCAzLCAKLSAgICAyMTMsIDEwNSwgMTQsIDIyLCAzLCAyMTIsIDE1MiwgMTQsIDMyLCA2LCA2MSwgMTQsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzIsIAotICAgIDYsIDI1MCwgMjUyLCAxNCwgMzIsIDYsIDI0OSwgMywgMTQsIDMyLCA2LCA3NCwgMTQsIDMyLCA2LCAyNDQsIDIzMCwgMTQsIAotICAgIDMyLCA2LCAyNDMsIDE3NywgMTQsIDMyLCA2LCAyNDIsIDQxLCAxNCwgMzIsIDYsIDcyLCAxNCwgMzIsIDYsIDIzNSwgMTQyLCAKLSAgICAxNCwgMzIsIDYsIDIzNSwgMjcsIDE0LCAzMiwgNiwgMTUwLCAxNCwgMzIsIDYsIDE4MywgMTQsIDMyLCA2LCAyMDQsIDE0LCAKLSAgICAzMiwgNiwgNzUsIDE0LCAzMiwgNiwgMjI2LCAyMjksIDE0LCAzMiwgNiwgMjI0LCAyNDAsIDE0LCAzMiwgNiwgMTQ5LCAxNCwgCi0gICAgMzIsIDYsIDE5NywgMTQsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzIsIDYsIDY5LCAxNCwgMzIsIDYsIDIxNSwgNzksIDE0LCAKLSAgICAzMiwgNiwgMjE0LCA4MiwgMTQsIDMyLCA2LCAyMTMsIDE2NiwgMTQsIDMyLCA2LCAyMTMsIDEwNSwgMTQsIDMyLCA2LCAyMTIsIAotICAgIDE1MiwgMTQsIDMyLCAzLCA2MSwgMTQsIDMyLCAzLCAyNTMsIDc0LCAxNCwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzIsIDMsIAotICAgIDI0OSwgMywgMTQsIDMyLCAzLCA3NCwgMTQsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDMyLCAzLCAyNDMsIDE3NywgMTQsIDMyLCAKLSAgICAzLCA3MiwgMTQsIDMyLCAzLCAyMzUsIDE0MiwgMTQsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzIsIDMsIDE1MCwgMTQsIDMyLCAKLSAgICAzLCAxODMsIDE0LCAzMiwgMywgMjA0LCAxNCwgMzIsIDMsIDc1LCAxNCwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzIsIDMsIAotICAgIDIyNCwgMjQwLCAxNCwgMzIsIDMsIDE0OSwgMTQsIDMyLCAzLCAxOTcsIDE0LCAzMiwgMywgMjE4LCA5OSwgMTQsIDMyLCAzLCAKLSAgICA2OSwgMTQsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzIsIDMsIDIxNCwgODIsIDE0LCAzMiwgMywgMjEzLCAxNjYsIDE0LCAzMiwgCi0gICAgMywgMjEzLCAxMDUsIDE0LCAzMiwgMywgMjEyLCAxNTIsIDE0LCAyMiwgMzIsIDYsIDYxLCAxNCwgMjIsIDMyLCA2LCAyNTMsIAotICAgIDc0LCAxNCwgMjIsIDMyLCA2LCAyNTAsIDI1MiwgMTQsIDIyLCAzMiwgNiwgMjQ5LCAzLCAxNCwgMjIsIDMyLCA2LCA3NCwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAyMiwgMzIsIDYsIDI0MywgMTc3LCAxNCwgMjIsIDMyLCA2LCAyNDIsIDQxLCAKLSAgICAxNCwgMjIsIDMyLCA2LCA3MiwgMTQsIDIyLCAzMiwgNiwgMjM1LCAxNDIsIDE0LCAyMiwgMzIsIDYsIDIzNSwgMjcsIDE0LCAKLSAgICAyMiwgMzIsIDYsIDE1MCwgMTQsIDIyLCAzMiwgNiwgMTgzLCAxNCwgMjIsIDMyLCA2LCAyMDQsIDE0LCAyMiwgMzIsIDYsIAotICAgIDc1LCAxNCwgMjIsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDIyLCAzMiwgNiwgMjI0LCAyNDAsIDE0LCAyMiwgMzIsIDYsIDE0OSwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMTk3LCAxNCwgMjIsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMjIsIDMyLCA2LCA2OSwgMTQsIDIyLCAKLSAgICAzMiwgNiwgMjE1LCA3OSwgMTQsIDIyLCAzMiwgNiwgMjE0LCA4MiwgMTQsIDIyLCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAyMiwgCi0gICAgMzIsIDYsIDIxMywgMTA1LCAxNCwgMjIsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDIyLCAzMiwgMywgNjEsIDE0LCAyMiwgMzIsIAotICAgIDMsIDI1MywgNzQsIDE0LCAyMiwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMjIsIDMyLCAzLCAyNDksIDMsIDE0LCAyMiwgMzIsIAotICAgIDMsIDc0LCAxNCwgMjIsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDIyLCAzMiwgMywgMjQzLCAxNzcsIDE0LCAyMiwgMzIsIDMsIAotICAgIDI0MiwgNDEsIDE0LCAyMiwgMzIsIDMsIDcyLCAxNCwgMjIsIDMyLCAzLCAyMzUsIDE0MiwgMTQsIDIyLCAzMiwgMywgMjM1LCAKLSAgICAyNywgMTQsIDIyLCAzMiwgMywgMTUwLCAxNCwgMjIsIDMyLCAzLCAxODMsIDE0LCAyMiwgMzIsIDMsIDIwNCwgMTQsIDIyLCAKLSAgICAzMiwgMywgNzUsIDE0LCAyMiwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIDMyLCAzLCAyMjQsIDI0MCwgMTQsIDIyLCAzMiwgCi0gICAgMywgMTQ5LCAxNCwgMjIsIDMyLCAzLCAxOTcsIDE0LCAyMiwgMzIsIDMsIDIxOCwgOTksIDE0LCAyMiwgMzIsIDMsIDY5LCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDMyLCAzLCAyMTQsIDgyLCAxNCwgMjIsIDMyLCAzLCAyMTMsIDE2NiwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjEzLCAxMDUsIDE0LCAyMiwgMzIsIDMsIDIxMiwgMTUyLCAxNCwgMTEzLCA2LCA2MSwgMTQsIAotICAgIDExMywgNiwgMjUwLCAyNTIsIDE0LCAxMTMsIDYsIDI0OSwgMywgMTQsIDExMywgNiwgMjQzLCAxNzcsIDE0LCAxMTMsIDYsIAotICAgIDIzNSwgMTQyLCAxNCwgMTEzLCA2LCAyMzUsIDI3LCAxNCwgMTEzLCA2LCAyMDQsIDE0LCAxMTMsIDYsIDc1LCAxNCwgMTEzLCAKLSAgICA2LCAyMjYsIDIyOSwgMTQsIDExMywgNiwgMjI0LCAyNDAsIDE0LCAxMTMsIDYsIDE5NywgMTQsIDExMywgNiwgMjE4LCA5OSwgCi0gICAgMTQsIDExMywgNiwgNjksIDE0LCAxMTMsIDYsIDIxNSwgNzksIDE0LCAxMTMsIDYsIDIxNCwgODIsIDE0LCAxMTMsIDYsIAotICAgIDIxMywgMTY2LCAxNCwgMTEzLCA2LCAyMTMsIDEwNSwgMTQsIDExMywgNiwgMjEyLCAxNTIsIDE0LCAxMTMsIDMsIDYxLCAxNCwgCi0gICAgMTEzLCAzLCAyNTMsIDc0LCAxNCwgMTEzLCAzLCAyNTAsIDI1MiwgMTQsIDExMywgMywgMjQ5LCAzLCAxNCwgMTEzLCAzLCAKLSAgICAyNDQsIDIzMCwgMTQsIDExMywgMywgMjQyLCA0MSwgMTQsIDExMywgMywgNzIsIDE0LCAxMTMsIDMsIDIzNSwgMTQyLCAxNCwgCi0gICAgMTEzLCAzLCAyMzUsIDI3LCAxNCwgMTEzLCAzLCAxNTAsIDE0LCAxMTMsIDMsIDE4MywgMTQsIDExMywgMywgMjA0LCAxNCwgCi0gICAgMTEzLCAzLCAyMjYsIDIyOSwgMTQsIDExMywgMywgMjI0LCAyNDAsIDE0LCAxMTMsIDMsIDE0OSwgMTQsIDExMywgMywgMTk3LCAKLSAgICAxNCwgMTEzLCAzLCAyMTgsIDk5LCAxNCwgMTEzLCAzLCA2OSwgMTQsIDExMywgMywgMjE1LCA3OSwgMTQsIDExMywgMywgCi0gICAgMjE0LCA4MiwgMTQsIDExMywgMywgMjEzLCAxNjYsIDE0LCAxMTMsIDMsIDIxMywgMTA1LCAxNCwgMTEzLCAzLCAyMTIsIAotICAgIDE1MiwgMTQsIDIyLCAxMTMsIDYsIDYxLCAxNCwgMjIsIDExMywgNiwgMjUzLCA3NCwgMTQsIDIyLCAxMTMsIDYsIDI1MCwgCi0gICAgMjUyLCAxNCwgMjIsIDExMywgNiwgMjQ5LCAzLCAxNCwgMjIsIDExMywgNiwgNzQsIDE0LCAyMiwgMTEzLCA2LCAyNDQsIAotICAgIDIzMCwgMTQsIDIyLCAxMTMsIDYsIDI0MywgMTc3LCAxNCwgMjIsIDExMywgNiwgMjQyLCA0MSwgMTQsIDIyLCAxMTMsIDYsIAotICAgIDcyLCAxNCwgMjIsIDExMywgNiwgMjM1LCAxNDIsIDE0LCAyMiwgMTEzLCA2LCAyMzUsIDI3LCAxNCwgMjIsIDExMywgNiwgCi0gICAgMTUwLCAxNCwgMjIsIDExMywgNiwgMTgzLCAxNCwgMjIsIDExMywgNiwgMjA0LCAxNCwgMjIsIDExMywgNiwgNzUsIDE0LCAKLSAgICAyMiwgMTEzLCA2LCAyMjYsIDIyOSwgMTQsIDIyLCAxMTMsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDExMywgNiwgMTQ5LCAxNCwgCi0gICAgMjIsIDExMywgNiwgMTk3LCAxNCwgMjIsIDExMywgNiwgMjE4LCA5OSwgMTQsIDIyLCAxMTMsIDYsIDY5LCAxNCwgMjIsIAotICAgIDExMywgNiwgMjE1LCA3OSwgMTQsIDIyLCAxMTMsIDYsIDIxNCwgODIsIDE0LCAyMiwgMTEzLCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDIyLCAxMTMsIDYsIDIxMywgMTA1LCAxNCwgMjIsIDExMywgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMTEzLCAzLCA2MSwgMTQsIAotICAgIDIyLCAxMTMsIDMsIDI1MywgNzQsIDE0LCAyMiwgMTEzLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAxMTMsIDMsIDI0OSwgMywgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDc0LCAxNCwgMjIsIDExMywgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMTEzLCAzLCAyNDMsIDE3NywgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDI0MiwgNDEsIDE0LCAyMiwgMTEzLCAzLCA3MiwgMTQsIDIyLCAxMTMsIDMsIDIzNSwgMTQyLCAKLSAgICAxNCwgMjIsIDExMywgMywgMjM1LCAyNywgMTQsIDIyLCAxMTMsIDMsIDE1MCwgMTQsIDIyLCAxMTMsIDMsIDE4MywgMTQsIAotICAgIDIyLCAxMTMsIDMsIDIwNCwgMTQsIDIyLCAxMTMsIDMsIDc1LCAxNCwgMjIsIDExMywgMywgMjI2LCAyMjksIDE0LCAyMiwgCi0gICAgMTEzLCAzLCAyMjQsIDI0MCwgMTQsIDIyLCAxMTMsIDMsIDE0OSwgMTQsIDIyLCAxMTMsIDMsIDE5NywgMTQsIDIyLCAxMTMsIAotICAgIDMsIDIxOCwgOTksIDE0LCAyMiwgMTEzLCAzLCA2OSwgMTQsIDIyLCAxMTMsIDMsIDIxNSwgNzksIDE0LCAyMiwgMTEzLCAzLCAKLSAgICAyMTQsIDgyLCAxNCwgMjIsIDExMywgMywgMjEzLCAxNjYsIDE0LCAyMiwgMTEzLCAzLCAyMTMsIDEwNSwgMTQsIDIyLCAxMTMsIAotICAgIDMsIDIxMiwgMTUyLCAxNCwgMTI5LCA2LCA2MSwgMTQsIDEyOSwgNiwgMjUzLCA3NCwgMTQsIDEyOSwgNiwgMjQ5LCAzLCAxNCwgCi0gICAgMTI5LCA2LCA3NCwgMTQsIDEyOSwgNiwgMjQ0LCAyMzAsIDE0LCAxMjksIDYsIDI0MywgMTc3LCAxNCwgMTI5LCA2LCAyMzUsIAotICAgIDE0MiwgMTQsIDEyOSwgNiwgMjM1LCAyNywgMTQsIDEyOSwgNiwgMTUwLCAxNCwgMTI5LCA2LCAxODMsIDE0LCAxMjksIDYsIAotICAgIDIwNCwgMTQsIDEyOSwgNiwgNzUsIDE0LCAxMjksIDYsIDIyNiwgMjI5LCAxNCwgMTI5LCA2LCAyMjQsIDI0MCwgMTQsIDEyOSwgCi0gICAgNiwgMTk3LCAxNCwgMTI5LCA2LCAyMTgsIDk5LCAxNCwgMTI5LCA2LCA2OSwgMTQsIDEyOSwgNiwgMjE1LCA3OSwgMTQsIAotICAgIDEyOSwgNiwgMjE0LCA4MiwgMTQsIDEyOSwgNiwgMjEzLCAxNjYsIDE0LCAxMjksIDYsIDIxMywgMTA1LCAxNCwgMTI5LCAzLCAKLSAgICA2MSwgMTQsIDEyOSwgMywgMjUzLCA3NCwgMTQsIDEyOSwgMywgMjUwLCAyNTIsIDE0LCAxMjksIDMsIDI0OSwgMywgMTQsIAotICAgIDEyOSwgMywgNzQsIDE0LCAxMjksIDMsIDI0NCwgMjMwLCAxNCwgMTI5LCAzLCAyNDMsIDE3NywgMTQsIDEyOSwgMywgMjQyLCAKLSAgICA0MSwgMTQsIDEyOSwgMywgNzIsIDE0LCAxMjksIDMsIDIzNSwgMTQyLCAxNCwgMTI5LCAzLCAyMzUsIDI3LCAxNCwgMTI5LCAKLSAgICAzLCAxNTAsIDE0LCAxMjksIDMsIDE4MywgMTQsIDEyOSwgMywgMjA0LCAxNCwgMTI5LCAzLCA3NSwgMTQsIDEyOSwgMywgCi0gICAgMjI2LCAyMjksIDE0LCAxMjksIDMsIDIyNCwgMjQwLCAxNCwgMTI5LCAzLCAxNDksIDE0LCAxMjksIDMsIDE5NywgMTQsIAotICAgIDEyOSwgMywgMjE4LCA5OSwgMTQsIDEyOSwgMywgNjksIDE0LCAxMjksIDMsIDIxNSwgNzksIDE0LCAxMjksIDMsIDIxNCwgCi0gICAgODIsIDE0LCAxMjksIDMsIDIxMywgMTY2LCAxNCwgMTI5LCAzLCAyMTMsIDEwNSwgMTQsIDEyOSwgMywgMjEyLCAxNTIsIDE0LCAKLSAgICAxODcsIDYsIDYxLCAxNCwgMTg3LCA2LCAyNTMsIDc0LCAxNCwgMTg3LCA2LCAyNDksIDMsIDE0LCAxODcsIDYsIDc0LCAxNCwgCi0gICAgMTg3LCA2LCAyNDQsIDIzMCwgMTQsIDE4NywgNiwgMjQzLCAxNzcsIDE0LCAxODcsIDYsIDcyLCAxNCwgMTg3LCA2LCAyMzUsIAotICAgIDE0MiwgMTQsIDE4NywgNiwgMjM1LCAyNywgMTQsIDE4NywgNiwgMTUwLCAxNCwgMTg3LCA2LCAxODMsIDE0LCAxODcsIDYsIAotICAgIDc1LCAxNCwgMTg3LCA2LCAxOTcsIDE0LCAxODcsIDYsIDIxOCwgOTksIDE0LCAxODcsIDYsIDY5LCAxNCwgMTg3LCA2LCAKLSAgICAyMTUsIDc5LCAxNCwgMTg3LCA2LCAyMTQsIDgyLCAxNCwgMTg3LCA2LCAyMTMsIDE2NiwgMTQsIDE4NywgNiwgMjEzLCAxMDUsIAotICAgIDE0LCAxODcsIDMsIDYxLCAxNCwgMTg3LCAzLCAyNTMsIDc0LCAxNCwgMTg3LCAzLCAyNTAsIDI1MiwgMTQsIDE4NywgMywgCi0gICAgMjQ5LCAzLCAxNCwgMTg3LCAzLCA3NCwgMTQsIDE4NywgMywgMjQ0LCAyMzAsIDE0LCAxODcsIDMsIDI0MywgMTc3LCAxNCwgCi0gICAgMTg3LCAzLCAyNDIsIDQxLCAxNCwgMTg3LCAzLCA3MiwgMTQsIDE4NywgMywgMjM1LCAxNDIsIDE0LCAxODcsIDMsIDIzNSwgCi0gICAgMjcsIDE0LCAxODcsIDMsIDE1MCwgMTQsIDE4NywgMywgMTgzLCAxNCwgMTg3LCAzLCAyMDQsIDE0LCAxODcsIDMsIDc1LCAKLSAgICAxNCwgMTg3LCAzLCAyMjYsIDIyOSwgMTQsIDE4NywgMywgMjI0LCAyNDAsIDE0LCAxODcsIDMsIDE0OSwgMTQsIDE4NywgMywgCi0gICAgMTk3LCAxNCwgMTg3LCAzLCAyMTgsIDk5LCAxNCwgMTg3LCAzLCA2OSwgMTQsIDE4NywgMywgMjE1LCA3OSwgMTQsIDE4NywgCi0gICAgMywgMjE0LCA4MiwgMTQsIDE4NywgMywgMjEzLCAxNjYsIDE0LCAxODcsIDMsIDIxMywgMTA1LCAxNCwgMTg3LCAzLCAyMTIsIAotICAgIDE1MiwgMTQsIDIyLCAxMjksIDYsIDYxLCAxNCwgMjIsIDEyOSwgNiwgMjUzLCA3NCwgMTQsIDIyLCAxMjksIDYsIDI1MCwgCi0gICAgMjUyLCAxNCwgMjIsIDEyOSwgNiwgMjQ5LCAzLCAxNCwgMjIsIDEyOSwgNiwgNzQsIDE0LCAyMiwgMTI5LCA2LCAyNDQsIAotICAgIDIzMCwgMTQsIDIyLCAxMjksIDYsIDI0MywgMTc3LCAxNCwgMjIsIDEyOSwgNiwgMjQyLCA0MSwgMTQsIDIyLCAxMjksIDYsIAotICAgIDcyLCAxNCwgMjIsIDEyOSwgNiwgMjM1LCAxNDIsIDE0LCAyMiwgMTI5LCA2LCAyMzUsIDI3LCAxNCwgMjIsIDEyOSwgNiwgCi0gICAgMTUwLCAxNCwgMjIsIDEyOSwgNiwgMTgzLCAxNCwgMjIsIDEyOSwgNiwgMjA0LCAxNCwgMjIsIDEyOSwgNiwgNzUsIDE0LCAKLSAgICAyMiwgMTI5LCA2LCAyMjYsIDIyOSwgMTQsIDIyLCAxMjksIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDEyOSwgNiwgMTQ5LCAxNCwgCi0gICAgMjIsIDEyOSwgNiwgMTk3LCAxNCwgMjIsIDEyOSwgNiwgMjE4LCA5OSwgMTQsIDIyLCAxMjksIDYsIDY5LCAxNCwgMjIsIAotICAgIDEyOSwgNiwgMjE1LCA3OSwgMTQsIDIyLCAxMjksIDYsIDIxNCwgODIsIDE0LCAyMiwgMTI5LCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDIyLCAxMjksIDYsIDIxMywgMTA1LCAxNCwgMjIsIDEyOSwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMTI5LCAzLCA2MSwgMTQsIAotICAgIDIyLCAxMjksIDMsIDI1MywgNzQsIDE0LCAyMiwgMTI5LCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAxMjksIDMsIDI0OSwgMywgCi0gICAgMTQsIDIyLCAxMjksIDMsIDc0LCAxNCwgMjIsIDEyOSwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMTI5LCAzLCAyNDMsIDE3NywgCi0gICAgMTQsIDIyLCAxMjksIDMsIDI0MiwgNDEsIDE0LCAyMiwgMTI5LCAzLCA3MiwgMTQsIDIyLCAxMjksIDMsIDIzNSwgMTQyLCAKLSAgICAxNCwgMjIsIDEyOSwgMywgMjM1LCAyNywgMTQsIDIyLCAxMjksIDMsIDE1MCwgMTQsIDIyLCAxMjksIDMsIDE4MywgMTQsIAotICAgIDIyLCAxMjksIDMsIDIwNCwgMTQsIDIyLCAxMjksIDMsIDc1LCAxNCwgMjIsIDEyOSwgMywgMjI2LCAyMjksIDE0LCAyMiwgCi0gICAgMTI5LCAzLCAyMjQsIDI0MCwgMTQsIDIyLCAxMjksIDMsIDE0OSwgMTQsIDIyLCAxMjksIDMsIDE5NywgMTQsIDIyLCAxMjksIAotICAgIDMsIDIxOCwgOTksIDE0LCAyMiwgMTI5LCAzLCA2OSwgMTQsIDIyLCAxMjksIDMsIDIxNSwgNzksIDE0LCAyMiwgMTI5LCAzLCAKLSAgICAyMTQsIDgyLCAxNCwgMjIsIDEyOSwgMywgMjEzLCAxNjYsIDE0LCAyMiwgMTI5LCAzLCAyMTMsIDEwNSwgMTQsIDIyLCAxMjksIAotICAgIDMsIDIxMiwgMTUyLCAxNCwgMzUsIDYsIDYxLCAxNCwgMzUsIDYsIDI1MywgNzQsIDE0LCAzNSwgNiwgMjUwLCAyNTIsIDE0LCAKLSAgICAzNSwgNiwgMjQ5LCAzLCAxNCwgMzUsIDYsIDc0LCAxNCwgMzUsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDYsIDI0MywgMTc3LCAKLSAgICAxNCwgMzUsIDYsIDI0MiwgNDEsIDE0LCAzNSwgNiwgNzIsIDE0LCAzNSwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgNiwgMjM1LCAKLSAgICAyNywgMTQsIDM1LCA2LCAxNTAsIDE0LCAzNSwgNiwgMTgzLCAxNCwgMzUsIDYsIDIwNCwgMTQsIDM1LCA2LCA3NSwgMTQsIAotICAgIDM1LCA2LCAyMjYsIDIyOSwgMTQsIDM1LCA2LCAyMjQsIDI0MCwgMTQsIDM1LCA2LCAxNDksIDE0LCAzNSwgNiwgMTk3LCAxNCwgCi0gICAgMzUsIDYsIDIxOCwgOTksIDE0LCAzNSwgNiwgNjksIDE0LCAzNSwgNiwgMjE1LCA3OSwgMTQsIDM1LCA2LCAyMTQsIDgyLCAKLSAgICAxNCwgMzUsIDYsIDIxMywgMTY2LCAxNCwgMzUsIDYsIDIxMywgMTA1LCAxNCwgMzUsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDMsIAotICAgIDYxLCAxNCwgMzUsIDMsIDI1MywgNzQsIDE0LCAzNSwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMywgMjQ5LCAzLCAxNCwgMzUsIAotICAgIDMsIDc0LCAxNCwgMzUsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDMsIDI0MywgMTc3LCAxNCwgMzUsIDMsIDI0MiwgNDEsIDE0LCAKLSAgICAzNSwgMywgNzIsIDE0LCAzNSwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMywgMjM1LCAyNywgMTQsIDM1LCAzLCAxNTAsIDE0LCAKLSAgICAzNSwgMywgMTgzLCAxNCwgMzUsIDMsIDIwNCwgMTQsIDM1LCAzLCA3NSwgMTQsIDM1LCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAKLSAgICAzLCAyMjQsIDI0MCwgMTQsIDM1LCAzLCAxNDksIDE0LCAzNSwgMywgMTk3LCAxNCwgMzUsIDMsIDIxOCwgOTksIDE0LCAzNSwgCi0gICAgMywgNjksIDE0LCAzNSwgMywgMjE1LCA3OSwgMTQsIDM1LCAzLCAyMTQsIDgyLCAxNCwgMzUsIDMsIDIxMywgMTY2LCAxNCwgCi0gICAgMzUsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDMsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCA2LCA2MSwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMjUzLCA3NCwgMTQsIDM1LCAyMiwgNiwgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDYsIDI0OSwgMywgMTQsIDM1LCAyMiwgNiwgCi0gICAgNzQsIDE0LCAzNSwgMjIsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCA2LCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgNiwgMjQyLCAKLSAgICA0MSwgMTQsIDM1LCAyMiwgNiwgNzIsIDE0LCAzNSwgMjIsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDI3LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAxNTAsIDE0LCAzNSwgMjIsIDYsIDE4MywgMTQsIDM1LCAyMiwgNiwgMjA0LCAxNCwgMzUsIDIyLCAKLSAgICA2LCA3NSwgMTQsIDM1LCAyMiwgNiwgMjI2LCAyMjksIDE0LCAzNSwgMjIsIDYsIDIyNCwgMjQwLCAxNCwgMzUsIDIyLCA2LCAKLSAgICAxNDksIDE0LCAzNSwgMjIsIDYsIDE5NywgMTQsIDM1LCAyMiwgNiwgMjE4LCA5OSwgMTQsIDM1LCAyMiwgNiwgNjksIDE0LCAKLSAgICAzNSwgMjIsIDYsIDIxNSwgNzksIDE0LCAzNSwgMjIsIDYsIDIxNCwgODIsIDE0LCAzNSwgMjIsIDYsIDIxMywgMTY2LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgNiwgMjEyLCAxNTIsIDE0LCAzNSwgMjIsIDMsIDYxLCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzLCAyNTAsIDI1MiwgMTQsIDM1LCAyMiwgMywgMjQ5LCAzLCAxNCwgMzUsIAotICAgIDIyLCAzLCA3NCwgMTQsIDM1LCAyMiwgMywgMjQ0LCAyMzAsIDE0LCAzNSwgMjIsIDMsIDI0MywgMTc3LCAxNCwgMzUsIDIyLCAKLSAgICAzLCAyNDIsIDQxLCAxNCwgMzUsIDIyLCAzLCA3MiwgMTQsIDM1LCAyMiwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDMsIAotICAgIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMsIDE1MCwgMTQsIDM1LCAyMiwgMywgMTgzLCAxNCwgMzUsIDIyLCAzLCAyMDQsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDc1LCAxNCwgMzUsIDIyLCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgMywgMjI0LCAyNDAsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDE0OSwgMTQsIDM1LCAyMiwgMywgMTk3LCAxNCwgMzUsIDIyLCAzLCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzLCAKLSAgICA2OSwgMTQsIDM1LCAyMiwgMywgMjE1LCA3OSwgMTQsIDM1LCAyMiwgMywgMjE0LCA4MiwgMTQsIDM1LCAyMiwgMywgMjEzLCAKLSAgICAxNjYsIDE0LCAzNSwgMjIsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCAzLCAyMTIsIDE1MiwgMTQsIDM1LCAzMiwgNiwgNjEsIAotICAgIDE0LCAzNSwgMzIsIDYsIDI1MywgNzQsIDE0LCAzNSwgMzIsIDYsIDI1MCwgMjUyLCAxNCwgMzUsIDMyLCA2LCAyNDksIDMsIAotICAgIDE0LCAzNSwgMzIsIDYsIDc0LCAxNCwgMzUsIDMyLCA2LCAyNDQsIDIzMCwgMTQsIDM1LCAzMiwgNiwgMjQzLCAxNzcsIDE0LCAKLSAgICAzNSwgMzIsIDYsIDI0MiwgNDEsIDE0LCAzNSwgMzIsIDYsIDcyLCAxNCwgMzUsIDMyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAKLSAgICAzMiwgNiwgMjM1LCAyNywgMTQsIDM1LCAzMiwgNiwgMTUwLCAxNCwgMzUsIDMyLCA2LCAxODMsIDE0LCAzNSwgMzIsIDYsIAotICAgIDIwNCwgMTQsIDM1LCAzMiwgNiwgNzUsIDE0LCAzNSwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDMyLCA2LCAyMjQsIDI0MCwgCi0gICAgMTQsIDM1LCAzMiwgNiwgMTQ5LCAxNCwgMzUsIDMyLCA2LCAxOTcsIDE0LCAzNSwgMzIsIDYsIDIxOCwgOTksIDE0LCAzNSwgCi0gICAgMzIsIDYsIDY5LCAxNCwgMzUsIDMyLCA2LCAyMTUsIDc5LCAxNCwgMzUsIDMyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDMyLCA2LCAKLSAgICAyMTMsIDE2NiwgMTQsIDM1LCAzMiwgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMzIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDMyLCAKLSAgICAzLCA2MSwgMTQsIDM1LCAzMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAzMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMzIsIDMsIAotICAgIDI0OSwgMywgMTQsIDM1LCAzMiwgMywgNzQsIDE0LCAzNSwgMzIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDMyLCAzLCAyNDMsIAotICAgIDE3NywgMTQsIDM1LCAzMiwgMywgMjQyLCA0MSwgMTQsIDM1LCAzMiwgMywgNzIsIDE0LCAzNSwgMzIsIDMsIDIzNSwgMTQyLCAKLSAgICAxNCwgMzUsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzUsIDMyLCAzLCAxNTAsIDE0LCAzNSwgMzIsIDMsIDE4MywgMTQsIDM1LCAKLSAgICAzMiwgMywgMjA0LCAxNCwgMzUsIDMyLCAzLCA3NSwgMTQsIDM1LCAzMiwgMywgMjI2LCAyMjksIDE0LCAzNSwgMzIsIDMsIAotICAgIDIyNCwgMjQwLCAxNCwgMzUsIDMyLCAzLCAxNDksIDE0LCAzNSwgMzIsIDMsIDE5NywgMTQsIDM1LCAzMiwgMywgMjE4LCA5OSwgCi0gICAgMTQsIDM1LCAzMiwgMywgNjksIDE0LCAzNSwgMzIsIDMsIDIxNSwgNzksIDE0LCAzNSwgMzIsIDMsIDIxNCwgODIsIDE0LCAKLSAgICAzNSwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzUsIDMyLCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAzMiwgMywgMjEyLCAxNTIsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCA2MSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MywgNzQsIDE0LCAzNSwgMjIsIDMyLCA2LCAKLSAgICAyNTAsIDI1MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDI0OSwgMywgMTQsIDM1LCAyMiwgMzIsIDYsIDc0LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgMzIsIDYsIDI0MiwgNDEsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCA3MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCAzMiwgNiwgCi0gICAgMjM1LCAyNywgMTQsIDM1LCAyMiwgMzIsIDYsIDE1MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDE4MywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIwNCwgMTQsIDM1LCAyMiwgMzIsIDYsIDc1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI2LCAyMjksIDE0LCAzNSwgMjIsIAotICAgIDMyLCA2LCAyMjQsIDI0MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDE0OSwgMTQsIDM1LCAyMiwgMzIsIDYsIDE5NywgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDYsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDMyLCA2LCA2OSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNSwgNzksIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCAzMiwgMywgNjEsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDksIAotICAgIDMsIDE0LCAzNSwgMjIsIDMyLCAzLCA3NCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDIsIDQxLCAxNCwgMzUsIDIyLCAzMiwgMywgNzIsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMyLCAzLCAxNTAsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAzLCAxODMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMDQsIDE0LCAzNSwgMjIsIDMyLCAzLCA3NSwgMTQsIAotICAgIDM1LCAyMiwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI0LCAyNDAsIDE0LCAzNSwgMjIsIDMyLCAzLCAKLSAgICAxNDksIDE0LCAzNSwgMjIsIDMyLCAzLCAxOTcsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgMywgNjksIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE0LCA4MiwgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzUsIDIyLCAzMiwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTIsIAotICAgIDE1MiwgMTQsIDIzMCwgMjA4LCA2LCA2MSwgMTQsIDIzMCwgMjA4LCA2LCAyNTMsIDc0LCAxNCwgMjMwLCAyMDgsIDYsIDI1MCwgCi0gICAgMjUyLCAxNCwgMjMwLCAyMDgsIDYsIDI0OSwgMywgMTQsIDIzMCwgMjA4LCA2LCA3NCwgMTQsIDIzMCwgMjA4LCA2LCAyNDQsIAotICAgIDIzMCwgMTQsIDIzMCwgMjA4LCA2LCAyNDMsIDE3NywgMTQsIDIzMCwgMjA4LCA2LCAyNDIsIDQxLCAxNCwgMjMwLCAyMDgsIAotICAgIDYsIDcyLCAxNCwgMjMwLCAyMDgsIDYsIDIzNSwgMTQyLCAxNCwgMjMwLCAyMDgsIDYsIDIzNSwgMjcsIDE0LCAyMzAsIDIwOCwgCi0gICAgNiwgMTUwLCAxNCwgMjMwLCAyMDgsIDYsIDE4MywgMTQsIDIzMCwgMjA4LCA2LCAyMDQsIDE0LCAyMzAsIDIwOCwgNiwgNzUsIAotICAgIDE0LCAyMzAsIDIwOCwgNiwgMjI2LCAyMjksIDE0LCAyMzAsIDIwOCwgNiwgMjI0LCAyNDAsIDE0LCAyMzAsIDIwOCwgNiwgCi0gICAgMTQ5LCAxNCwgMjMwLCAyMDgsIDYsIDE5NywgMTQsIDIzMCwgMjA4LCA2LCAyMTgsIDk5LCAxNCwgMjMwLCAyMDgsIDYsIDY5LCAKLSAgICAxNCwgMjMwLCAyMDgsIDYsIDIxNSwgNzksIDE0LCAyMzAsIDIwOCwgNiwgMjE0LCA4MiwgMTQsIDIzMCwgMjA4LCA2LCAyMTMsIAotICAgIDE2NiwgMTQsIDIzMCwgMjA4LCA2LCAyMTMsIDEwNSwgMTQsIDIzMCwgMjA4LCA2LCAyMTIsIDE1MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCA2MSwgMTQsIDIzMCwgMjA4LCAzLCAyNTMsIDc0LCAxNCwgMjMwLCAyMDgsIDMsIDI1MCwgMjUyLCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDI0OSwgMywgMTQsIDIzMCwgMjA4LCAzLCA3NCwgMTQsIDIzMCwgMjA4LCAzLCAyNDQsIDIzMCwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyNDMsIDE3NywgMTQsIDIzMCwgMjA4LCAzLCAyNDIsIDQxLCAxNCwgMjMwLCAyMDgsIDMsIDcyLCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDIzNSwgMTQyLCAxNCwgMjMwLCAyMDgsIDMsIDIzNSwgMjcsIDE0LCAyMzAsIDIwOCwgMywgMTUwLCAxNCwgMjMwLCAKLSAgICAyMDgsIDMsIDE4MywgMTQsIDIzMCwgMjA4LCAzLCAyMDQsIDE0LCAyMzAsIDIwOCwgMywgNzUsIDE0LCAyMzAsIDIwOCwgMywgCi0gICAgMjI2LCAyMjksIDE0LCAyMzAsIDIwOCwgMywgMjI0LCAyNDAsIDE0LCAyMzAsIDIwOCwgMywgMTQ5LCAxNCwgMjMwLCAyMDgsIAotICAgIDMsIDE5NywgMTQsIDIzMCwgMjA4LCAzLCAyMTgsIDk5LCAxNCwgMjMwLCAyMDgsIDMsIDY5LCAxNCwgMjMwLCAyMDgsIDMsIAotICAgIDIxNSwgNzksIDE0LCAyMzAsIDIwOCwgMywgMjE0LCA4MiwgMTQsIDIzMCwgMjA4LCAzLCAyMTMsIDE2NiwgMTQsIDIzMCwgCi0gICAgMjA4LCAzLCAyMTMsIDEwNSwgMTQsIDIzMCwgMjA4LCAzLCAyMTIsIDE1MiwgMTQsIDMyLCAzLCAyNDcsIDczLCA3MiwgMTQsIAotICAgIDMyLCAzLCAyNDcsIDczLCAyMzUsIDE0MiwgMTQsIDIyLCA2LCAyNTQsIDUyLCAxNCwgMjIsIDYsIDI1MSwgMjAzLCAxNCwgCi0gICAgMjIsIDYsIDI0MywgODMsIDE0LCAyMiwgNiwgMjQ4LCA1LCAxNCwgMjIsIDYsIDI0NSwgNjMsIDE0LCAyMiwgNiwgMjEyLCAKLSAgICA3OCwgMTQsIDIyLCA2LCAyNDUsIDI4LCAxNCwgMjIsIDYsIDIxNywgMTMyLCAxNCwgMjIsIDYsIDIzNSwgMTgzLCAxNCwgMjIsIAotICAgIDYsIDIzNCwgMjI3LCAxNCwgMjIsIDYsIDIzMywgMTIyLCAxNCwgMjIsIDYsIDIzMCwgMTcyLCAxNCwgMjIsIDYsIDIyOCwgCi0gICAgOTIsIDE0LCAyMiwgNiwgMjEzLCAxNDUsIDE0LCAyMiwgNiwgMjI3LCA2NSwgMTQsIDIyLCA2LCAyMjUsIDI0MCwgMTQsIDIyLCAKLSAgICA2LCAyMjMsIDE5MCwgMTQsIDIyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAyMiwgNiwgMjIwLCAxMDMsIDE0LCAyMiwgNiwgCi0gICAgMjE3LCAyNDgsIDE0LCAyMiwgNiwgMjE1LCAxMjgsIDE0LCAyMiwgNiwgMjI2LCA5LCAxNCwgMjIsIDYsIDI1MCwgNDcsIDE0LCAKLSAgICAyMiwgNiwgMjI1LCA0NiwgMTQsIDIyLCA2LCAyMjcsIDY3LCAxNCwgMjIsIDIzMCwgMzksIDE0LCAyMiwgMywgMjU0LCA1MiwgCi0gICAgMTQsIDIyLCAzLCAyNTEsIDIwMywgMTQsIDIyLCAzLCAyNDMsIDgzLCAxNCwgMjIsIDMsIDI0OCwgNSwgMTQsIDIyLCAzLCAKLSAgICAyNDUsIDYzLCAxNCwgMjIsIDMsIDIxMiwgNzgsIDE0LCAyMiwgMywgMjQ1LCAyOCwgMTQsIDIyLCAzLCAyMTcsIDEzMiwgMTQsIAotICAgIDIyLCAzLCAyMzUsIDE4MywgMTQsIDIyLCAzLCAyMzQsIDIyNywgMTQsIDIyLCAzLCAyMzMsIDEyMiwgMTQsIDIyLCAzLCAKLSAgICAyMzAsIDE3MiwgMTQsIDIyLCAzLCAyMjgsIDkyLCAxNCwgMjIsIDMsIDIxMywgMTQ1LCAxNCwgMjIsIDMsIDIyNywgNjUsIAotICAgIDE0LCAyMiwgMywgMjI1LCAyNDAsIDE0LCAyMiwgMywgMjIzLCAxOTAsIDE0LCAyMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgCi0gICAgMjIsIDMsIDIyMCwgMTAzLCAxNCwgMjIsIDMsIDIxNywgMjQ4LCAxNCwgMjIsIDMsIDIxNSwgMTI4LCAxNCwgMjIsIDMsIAotICAgIDIyNiwgOSwgMTQsIDIyLCAzLCAyNTAsIDQ3LCAxNCwgMjIsIDMsIDIyNSwgNDYsIDE0LCAyMiwgMywgMjI3LCA2NywgMTQsIAotICAgIDIyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAyMiwgMjQ1LCA2NCwgODcsIDE0LCAyMiwgMjE3LCAxMzMsIDg3LCAxNCwgCi0gICAgMjIsIDIzNCwgMjI4LCA4NywgMTQsIDIyLCAyMjYsIDEwLCA4NywgMTQsIDIyLCAyMjMsIDE5MSwgODcsIDE0LCAyMiwgMjI1LCAKLSAgICAyNDEsIDg3LCAxNCwgMzIsIDYsIDI1NCwgNTIsIDE0LCAzMiwgNiwgMjUxLCAyMDMsIDE0LCAzMiwgNiwgMjQzLCA4MywgMTQsIAotICAgIDMyLCA2LCAyNDgsIDUsIDE0LCAzMiwgNiwgMjQ1LCA2MywgMTQsIDMyLCA2LCAyMTIsIDc4LCAxNCwgMzIsIDYsIDI0NSwgCi0gICAgMjgsIDE0LCAzMiwgNiwgMjE3LCAxMzIsIDE0LCAzMiwgNiwgMjM1LCAxODMsIDE0LCAzMiwgNiwgMjM0LCAyMjcsIDE0LCAKLSAgICAzMiwgNiwgMjMzLCAxMjIsIDE0LCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAzMiwgNiwgMjI4LCA5MiwgMTQsIDMyLCA2LCAyMTMsIAotICAgIDE0NSwgMTQsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMzIsIDYsIDIyNSwgMjQwLCAxNCwgMzIsIDYsIDIyMywgMTkwLCAxNCwgCi0gICAgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDMyLCA2LCAyMjAsIDEwMywgMTQsIDMyLCA2LCAyMTcsIDI0OCwgMTQsIDMyLCA2LCAKLSAgICAyMTUsIDEyOCwgMTQsIDMyLCA2LCAyMjYsIDksIDE0LCAzMiwgNiwgMjUwLCA0NywgMTQsIDMyLCA2LCAyMjUsIDQ2LCAxNCwgCi0gICAgMzIsIDYsIDIyNywgNjcsIDE0LCAzMiwgMjMwLCAzOSwgMTQsIDMyLCAzLCAyNTQsIDUyLCAxNCwgMzIsIDMsIDI1MSwgMjAzLCAKLSAgICAxNCwgMzIsIDMsIDI0MywgODMsIDE0LCAzMiwgMywgMjQ4LCA1LCAxNCwgMzIsIDMsIDI0NSwgNjMsIDE0LCAzMiwgMywgCi0gICAgMjEyLCA3OCwgMTQsIDMyLCAzLCAyNDUsIDI4LCAxNCwgMzIsIDMsIDIxNywgMTMyLCAxNCwgMzIsIDMsIDIzNSwgMTgzLCAKLSAgICAxNCwgMzIsIDMsIDIzNCwgMjI3LCAxNCwgMzIsIDMsIDIzMywgMTIyLCAxNCwgMzIsIDMsIDIzMCwgMTcyLCAxNCwgMzIsIDMsIAotICAgIDIyOCwgOTIsIDE0LCAzMiwgMywgMjEzLCAxNDUsIDE0LCAzMiwgMywgMjI3LCA2NSwgMTQsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDMyLCAzLCAyMjMsIDE5MCwgMTQsIDMyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAzMiwgMywgMjIwLCAxMDMsIDE0LCAKLSAgICAzMiwgMywgMjE3LCAyNDgsIDE0LCAzMiwgMywgMjE1LCAxMjgsIDE0LCAzMiwgMywgMjI2LCA5LCAxNCwgMzIsIDMsIDI1MCwgCi0gICAgNDcsIDE0LCAzMiwgMywgMjI1LCA0NiwgMTQsIDMyLCAzLCAyMjcsIDY3LCAxNCwgMzIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgCi0gICAgMTQsIDMyLCAyNDUsIDY0LCA4NywgMTQsIDMyLCAyMTcsIDEzMywgODcsIDE0LCAzMiwgMjM0LCAyMjgsIDg3LCAxNCwgMzIsIAotICAgIDIyNiwgMTAsIDg3LCAxNCwgMzIsIDIyMywgMTkxLCA4NywgMTQsIDMyLCAyMjUsIDI0MSwgODcsIDE0LCAyMiwgMzIsIDYsIAotICAgIDI1NCwgNTIsIDE0LCAyMiwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMjIsIDMyLCA2LCAyNDMsIDgzLCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNDgsIDUsIDE0LCAyMiwgMzIsIDYsIDI0NSwgNjMsIDE0LCAyMiwgMzIsIDYsIDIxMiwgNzgsIDE0LCAyMiwgMzIsIDYsIAotICAgIDI0NSwgMjgsIDE0LCAyMiwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMjIsIDMyLCA2LCAyMzUsIDE4MywgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjM0LCAyMjcsIDE0LCAyMiwgMzIsIDYsIDIzMywgMTIyLCAxNCwgMjIsIDMyLCA2LCAyMzAsIDE3MiwgMTQsIDIyLCAzMiwgCi0gICAgNiwgMjI4LCA5MiwgMTQsIDIyLCAzMiwgNiwgMjEzLCAxNDUsIDE0LCAyMiwgMzIsIDYsIDIyNywgNjUsIDE0LCAyMiwgMzIsIAotICAgIDYsIDIyNSwgMjQwLCAxNCwgMjIsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIDIyLCAzMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgCi0gICAgMjIsIDMyLCA2LCAyMjAsIDEwMywgMTQsIDIyLCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAyMiwgMzIsIDYsIDIxNSwgMTI4LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAyMjYsIDksIDE0LCAyMiwgMzIsIDYsIDI1MCwgNDcsIDE0LCAyMiwgMzIsIDYsIDIyNSwgNDYsIAotICAgIDE0LCAyMiwgMzIsIDYsIDIyNywgNjcsIDE0LCAyMiwgMzIsIDIzMCwgMzksIDE0LCAyMiwgMzIsIDMsIDI1NCwgNTIsIDE0LCAKLSAgICAyMiwgMzIsIDMsIDI1MSwgMjAzLCAxNCwgMjIsIDMyLCAzLCAyNDMsIDgzLCAxNCwgMjIsIDMyLCAzLCAyNDgsIDUsIDE0LCAKLSAgICAyMiwgMzIsIDMsIDI0NSwgNjMsIDE0LCAyMiwgMzIsIDMsIDIxMiwgNzgsIDE0LCAyMiwgMzIsIDMsIDI0NSwgMjgsIDE0LCAKLSAgICAyMiwgMzIsIDMsIDIxNywgMTMyLCAxNCwgMjIsIDMyLCAzLCAyMzUsIDE4MywgMTQsIDIyLCAzMiwgMywgMjM0LCAyMjcsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIzMywgMTIyLCAxNCwgMjIsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDIyLCAzMiwgMywgMjI4LCA5MiwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjEzLCAxNDUsIDE0LCAyMiwgMzIsIDMsIDIyNywgNjUsIDE0LCAyMiwgMzIsIDMsIDIyNSwgMjQwLCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMjMsIDE5MCwgMTQsIDIyLCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMjIsIDMyLCAzLCAyMjAsIAotICAgIDEwMywgMTQsIDIyLCAzMiwgMywgMjE3LCAyNDgsIDE0LCAyMiwgMzIsIDMsIDIxNSwgMTI4LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAyMiwgMzIsIDMsIDI1MCwgNDcsIDE0LCAyMiwgMzIsIDMsIDIyNSwgNDYsIDE0LCAyMiwgMzIsIDMsIAotICAgIDIyNywgNjcsIDE0LCAyMiwgMzIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgMTQsIDIyLCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAyMiwgCi0gICAgMzIsIDIxNywgMTMzLCA4NywgMTQsIDIyLCAzMiwgMjM0LCAyMjgsIDg3LCAxNCwgMjIsIDMyLCAyMjYsIDEwLCA4NywgMTQsIAotICAgIDIyLCAzMiwgMjIzLCAxOTEsIDg3LCAxNCwgMjIsIDMyLCAyMjUsIDI0MSwgODcsIDE0LCAzNSwgMjIsIDYsIDI1NCwgNTIsIAotICAgIDE0LCAzNSwgMjIsIDYsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCA2LCAyNDMsIDgzLCAxNCwgMzUsIDIyLCA2LCAyNDgsIDUsIAotICAgIDE0LCAzNSwgMjIsIDYsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDYsIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDYsIDI0NSwgMjgsIAotICAgIDE0LCAzNSwgMjIsIDYsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgNiwgMjM0LCAKLSAgICAyMjcsIDE0LCAzNSwgMjIsIDYsIDIzMywgMTIyLCAxNCwgMzUsIDIyLCA2LCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMjI4LCA5MiwgMTQsIDM1LCAyMiwgNiwgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDYsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDYsIAotICAgIDIyNSwgMjQwLCAxNCwgMzUsIDIyLCA2LCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMzUsIAotICAgIDIyLCA2LCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgNiwgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDYsIDIxNSwgMTI4LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMjYsIDksIDE0LCAzNSwgMjIsIDYsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDYsIDIyNSwgNDYsIDE0LCAKLSAgICAzNSwgMjIsIDYsIDIyNywgNjcsIDE0LCAzNSwgMjIsIDIzMCwgMzksIDE0LCAzNSwgMjIsIDMsIDI1NCwgNTIsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCAzLCAyNDMsIDgzLCAxNCwgMzUsIDIyLCAzLCAyNDgsIDUsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDMsIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDMsIDI0NSwgMjgsIDE0LCAzNSwgCi0gICAgMjIsIDMsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCAzLCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMywgMjM0LCAyMjcsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDIzMywgMTIyLCAxNCwgMzUsIDIyLCAzLCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMywgMjI4LCA5MiwgMTQsIAotICAgIDM1LCAyMiwgMywgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDMsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMsIDIyNSwgMjQwLCAxNCwgCi0gICAgMzUsIDIyLCAzLCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAzLCAyMjAsIAotICAgIDEwMywgMTQsIDM1LCAyMiwgMywgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDMsIDIxNSwgMTI4LCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAzNSwgMjIsIDMsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDMsIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMsIAotICAgIDIyNywgNjcsIDE0LCAzNSwgMjIsIDIyNiwgMTI1LCAyNDcsIDE4NSwgMTQsIDM1LCAyMiwgMjQ1LCA2NCwgODcsIDE0LCAzNSwgCi0gICAgMjIsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAyMiwgMjM0LCAyMjgsIDg3LCAxNCwgMzUsIDIyLCAyMjYsIDEwLCA4NywgMTQsIAotICAgIDM1LCAyMiwgMjIzLCAxOTEsIDg3LCAxNCwgMzUsIDIyLCAyMjUsIDI0MSwgODcsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTQsIAotICAgIDUyLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDMsIDgzLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjQ4LCA1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQ1LCA2MywgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMiwgNzgsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDUsIDI4LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAxMzIsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMzIsIDYsIDIzNCwgMjI3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjMzLCAxMjIsIAotICAgIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyOCwgOTIsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjUsIDI0MCwgMTQsIAotICAgIDM1LCAyMiwgMzIsIDYsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNSwgMTI4LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjI2LCA5LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjUwLCA0NywgMTQsIDM1LCAyMiwgMzIsIDYsIAotICAgIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAzMiwgMjMwLCAzOSwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDI1NCwgNTIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgMzIsIDMsIDI0MywgODMsIAotICAgIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDgsIDUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMjEyLCA3OCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI0NSwgMjgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDM1LCAKLSAgICAyMiwgMzIsIDMsIDIzNSwgMTgzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjM0LCAyMjcsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzMsIAotICAgIDEyMiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIzMCwgMTcyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjI4LCA5MiwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI3LCA2NSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNSwgMjQwLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgMywgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDMyLCAzLCA0MCwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE1LCAKLSAgICAxMjgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjYsIDksIDE0LCAzNSwgMjIsIDMyLCAzLCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjI1LCA0NiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNywgNjcsIDE0LCAzNSwgMjIsIDMyLCAyMjYsIDEyNSwgCi0gICAgMjQ3LCAxODUsIDE0LCAzNSwgMjIsIDMyLCAyNDUsIDY0LCA4NywgMTQsIDM1LCAyMiwgMzIsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDM1LCAyMiwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDM1LCAyMiwgMzIsIDIyNiwgMTAsIDg3LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgMjIzLCAxOTEsIDg3LCAxNCwgMzUsIDIyLCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMjIsIDYsIDI0NywgMTc5LCAxNCwgMjIsIAotICAgIDMsIDI0NywgMTc5LCAxNCwgMjIsIDIxLCAyMTIsIDc5LCAxNCwgMjIsIDIxLCAxMTYsIDE0LCAyMiwgMjEsIDEwOSwgMTQsIAotICAgIDIyLCAyMSwgMTY2LCAxNCwgMjIsIDIxLCAxNjMsIDE0LCAyMiwgMjEsIDE4MCwgMTQsIDIyLCAyMSwgMTg5LCAxNCwgMjIsIAotICAgIDIxLCAxOTgsIDE0LCAyMiwgMjEsIDE5NSwgMTQsIDIyLCAyMSwgMjAwLCAxNCwgMTg3LCAyMSwgMjEyLCA3OSwgMTQsIDE4NywgCi0gICAgMjEsIDExNiwgMTQsIDE4NywgMjEsIDEwOSwgMTQsIDE4NywgMjEsIDE2NiwgMTQsIDE4NywgMjEsIDE2MywgMTQsIDE4NywgCi0gICAgMjEsIDE4MCwgMTQsIDE4NywgMjEsIDE4OSwgMTQsIDE4NywgMjEsIDE5OCwgMTQsIDE4NywgMjEsIDE5NSwgMTQsIDE4NywgCi0gICAgMjEsIDIwMCwgMTQsIDM1LCAyMSwgMjEyLCA3OSwgMTQsIDM1LCAyMSwgMTE2LCAxNCwgMzUsIDIxLCAxMDksIDE0LCAzNSwgCi0gICAgMjEsIDE2NiwgMTQsIDM1LCAyMSwgMTYzLCAxNCwgMzUsIDIxLCAxODAsIDE0LCAzNSwgMjEsIDE4OSwgMTQsIDM1LCAyMSwgCi0gICAgMTk4LCAxNCwgMzUsIDIxLCAxOTUsIDE0LCAzNSwgMjEsIDIwMCwgMTQsIDM1LCAyMiwgMjEsIDIxMiwgNzksIDE0LCAzNSwgCi0gICAgMjIsIDIxLCAxMTYsIDE0LCAzNSwgMjIsIDIxLCAxMDksIDE0LCAzNSwgMjIsIDIxLCAxNjYsIDE0LCAzNSwgMjIsIDIxLCAKLSAgICAxNjMsIDE0LCAzNSwgMjIsIDIxLCAxODAsIDE0LCAzNSwgMjIsIDIxLCAxODksIDE0LCAzNSwgMjIsIDIxLCAxOTgsIDE0LCAKLSAgICAzNSwgMjIsIDIxLCAxOTUsIDE0LCAzNSwgMjIsIDIxLCAyMDAsIDE0LCAyMzAsIDIwOCwgMjEsIDIxMiwgNzksIDE0LCAyMzAsIAotICAgIDIwOCwgMjEsIDExNiwgMTQsIDIzMCwgMjA4LCAyMSwgMTA5LCAxNCwgMjMwLCAyMDgsIDIxLCAxNjYsIDE0LCAyMzAsIDIwOCwgCi0gICAgMjEsIDE2MywgMTQsIDIzMCwgMjA4LCAyMSwgMTgwLCAxNCwgMjMwLCAyMDgsIDIxLCAxODksIDE0LCAyMzAsIDIwOCwgMjEsIAotICAgIDE5OCwgMTQsIDIzMCwgMjA4LCAyMSwgMTk1LCAxNCwgMjMwLCAyMDgsIDIxLCAyMDAsIDIzMiwgMTAsIDg1LCAyNDUsIDE3NiwgCi0gICAgMjEzLCAyMjQsIDIzMiwgMTAsIDg1LCAyMTksIDIxNSwgMjEzLCAyMjQsIDIzMiwgMTAsIDg1LCAyMTMsIDI1MCwgMjEzLCAKLSAgICAyMjQsIDIzMiwgMTAsIDg1LCAyMjgsIDE2NywgMjEzLCAyMjQsIDIzMiwgMTAsIDg1LCAyMjQsIDQsIDI0NiwgNTAsIDIzMiwgCi0gICAgMTAsIDg1LCAyNDIsIDEwNCwgMjQ2LCA1MCwgMjMyLCAxMCwgODUsIDY3LCAyNDYsIDUwLCAyMzIsIDEwLCA4NSwgMTIyLCAKLSAgICA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDExNywgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAxMzMsIDY1LCAyNTAsIAotICAgIDc3LCAyMzIsIDEwLCA4NSwgMjQzLCAyMzcsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMjQ0LCA1MCwgNjUsIDI1MCwgCi0gICAgNzcsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDIyMSwgNDMsIDY1LCAyNTAsIDc3LCAKLSAgICAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMjI5LCAzMSwgNjUsIDI1MCwgNzcsIAotICAgIDIzMiwgMTAsIDg1LCAxMjIsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMTE3LCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgCi0gICAgODUsIDEzMywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyNDMsIDIzNywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAKLSAgICAyNDQsIDUwLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDIyMCwgNTMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjIxLCA0MywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyNDUsIDE1MCwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAKLSAgICAyMjksIDMxLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDEyMiwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMTE3LCAKLSAgICA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAxMzMsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDI0MywgMjM3LCA2NSwgCi0gICAgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDQsIDUwLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgCi0gICAgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyMjEsIDQzLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDUsIDE1MCwgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjI5LCAzMSwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjI1LCAxNTksIDIzMiwgCi0gICAgMTAsIDg1LCAyMjcsIDIyLCAyMzIsIDEwLCA4NSwgMjUyLCA3MywgMjMyLCAxMCwgODUsIDI1MCwgNywgMjMyLCAxMCwgODUsIAotICAgIDIxOSwgMTcxLCAyMzIsIDEwLCA4NSwgMjE4LCAyNDAsIDIzMiwgMTAsIDg1LCAyNTMsIDk1LCAyMzIsIDEwLCA4NSwgMjEzLCAKLSAgICAyMTcsIDIzMiwgMTAsIDg1LCAyMzUsIDY1LCAyMzIsIDEwLCA4NSwgMjUyLCAxMDEsIDEyNywgODUsIDE5OSwgMjUyLCAxMDEsIAotICAgIDEyNywgODUsIDI0MSwgMzAsIDEyNywgODUsIDI0MSwgMjksIDEyNywgODUsIDI0MSwgMjgsIDEyNywgODUsIDI0MSwgMjcsIAotICAgIDEyNywgODUsIDI0MSwgMjYsIDEyNywgODUsIDI0MSwgMjUsIDEyNywgODUsIDI0MSwgMjQsIDEyNywgODUsIDI0MSwgMjMsIAotICAgIDEyNywgODUsIDI0MSwgMjIsIDEyNywgODUsIDI0MSwgMjEsIDEyNywgODUsIDI0MSwgMjAsIDEyNywgODUsIDI0MSwgMTksIAotICAgIDEyNywgODUsIDI0MSwgMTgsIDEyNywgODUsIDI0MSwgMTcsIDEyNywgODUsIDI0MSwgMTYsIDEyNywgODUsIDI0MSwgMTUsIAotICAgIDEyNywgODUsIDI0MSwgMTQsIDEyNywgODUsIDI0MSwgMTMsIDEyNywgODUsIDI0MSwgMTIsIDEyNywgODUsIDI0MSwgMTEsIAotICAgIDEyNywgODUsIDI0MSwgMTAsIDEyNywgODUsIDI0MSwgOSwgMTI3LCA4NSwgMjQxLCA4LCAxMjcsIDg1LCAyNDEsIDcsIDEyNywgCi0gICAgODUsIDI0MSwgNiwgMTI3LCA4NSwgMjQxLCA1LCAxMjcsIDg1LCAyNDEsIDQsIDEyNywgODUsIDI0MSwgMywgMTI3LCA4NSwgCi0gICAgMjQxLCAyLCAxMjcsIDg1LCAyNDEsIDEsIDEyNywgODUsIDI0MSwgMCwgMTI3LCA4NSwgMjQwLCAyNTUsIDEyNywgODUsIAotICAgIDI0MCwgMjU0LCAxMjcsIDg1LCAyNDAsIDI1MywgMTI3LCA4NSwgMjQwLCAyNTIsIDEyNywgODUsIDI0MCwgMjUxLCAxMjcsIAotICAgIDg1LCAyNDAsIDI1MCwgMTI3LCA4NSwgMjQwLCAyNDksIDEyNywgODUsIDI0MCwgMjQ4LCAxMjcsIDg1LCAyNDAsIDI0NywgCi0gICAgMTI3LCA4NSwgMjQwLCAyNDYsIDEyNywgODUsIDI0MCwgMjQ1LCAxMjcsIDg1LCAyNDAsIDI0NCwgMTI3LCA4NSwgMjQwLCAKLSAgICAyNDMsIDEyNywgODUsIDI0MCwgMjQyLCAxMjcsIDg1LCAyNDAsIDI0MSwgMTI3LCA4NSwgMjQwLCAyNDAsIDEyNywgODUsIAotICAgIDI0MCwgMjM5LCAxMjcsIDg1LCAyNDAsIDIzOCwgMTI3LCA4NSwgNzEsIDI1MiwgMTAxLCAxMjcsIDg1LCAyMTQsIDIxNSwgCi0gICAgMTI3LCA4NSwgMjE0LCAyMTQsIDEyNywgODUsIDIxNCwgMjEzLCAxMjcsIDg1LCAyMTQsIDIxMiwgMTI3LCA4NSwgMjE0LCAKLSAgICAyMTEsIDEyNywgODUsIDIxNCwgMjEwLCAxMjcsIDg1LCAyMTQsIDIwOSwgMTI3LCA4NSwgMjE0LCAyMDgsIDEyNywgODUsIAotICAgIDIxNCwgMjA3LCAxMjcsIDg1LCAyMTQsIDIwNiwgMTI3LCA4NSwgMjE0LCAyMDUsIDEyNywgODUsIDIxNCwgMjA0LCAxMjcsIAotICAgIDg1LCAyMTQsIDIwMywgMTI3LCA4NSwgMjE0LCAyMDIsIDEyNywgODUsIDIxNCwgMjAxLCAxMjcsIDg1LCAyMTQsIDIwMCwgCi0gICAgMTI3LCA4NSwgMjE0LCAxOTksIDEyNywgODUsIDIxNCwgMTk4LCAxMjcsIDg1LCAyMTQsIDE5NywgMTI3LCA4NSwgMjE0LCAKLSAgICAxOTYsIDEyNywgODUsIDIxNCwgMTk1LCAxMjcsIDg1LCAyMTQsIDE5NCwgMTI3LCA4NSwgMjE0LCAxOTMsIDEyNywgODUsIAotICAgIDIxNCwgMTkyLCAxMjcsIDg1LCAyMTQsIDE5MSwgMTI3LCA4NSwgMjE0LCAxOTAsIDEyNywgODUsIDIxNCwgMTg5LCAxMjcsIAotICAgIDg1LCAyMTQsIDE4OCwgMTI3LCA4NSwgMjE0LCAxODcsIDEyNywgODUsIDIxNCwgMTg2LCAxMjcsIDg1LCAyMTQsIDE4NSwgCi0gICAgMTI3LCA4NSwgMjE0LCAxODQsIDEyNywgODUsIDIxNCwgMTgzLCAxMjcsIDg1LCAyMTQsIDE4MiwgMTI3LCA4NSwgMjE0LCAKLSAgICAxODEsIDEyNywgODUsIDIxNCwgMTgwLCAxMjcsIDg1LCAyMTQsIDE3OSwgMTI3LCA4NSwgMjE0LCAxNzgsIDEyNywgODUsIAotICAgIDIxNCwgMTc3LCAxMjcsIDg1LCAyMTQsIDE3NiwgMTI3LCA4NSwgMjE0LCAxNzUsIDEyNywgODUsIDIxNCwgMTc0LCAxMjcsIAotICAgIDg1LCAyMTQsIDE3MywgMTI3LCA4NSwgMjE0LCAxNzIsIDEyNywgODUsIDIxNCwgMTcxLCAxMjcsIDg1LCAyMTQsIDE3MCwgCi0gICAgMTI3LCA4NSwgMjE0LCAxNjksIDEyNywgODUsIDIxNCwgMTY4LCAxMjcsIDg1LCAyMTQsIDE2NywgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAyNTIsIDEwMSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNTQsIDE2OSwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDExNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDEzMywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ0LCA1MCwgNjUsIDIxOSwgCi0gICAgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjEsIAotICAgIDQzLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ1LCAxNTAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjE3LCAyMDEsIDY1LCAyMTksIAotICAgIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgCi0gICAgNDAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjQsIDE2MCwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNTQsIDE2OSwgNjUsIDI0MSwgCi0gICAgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDExNywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDEzMywgNjUsIAotICAgIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIDY1LCAyNDEsIDIwOSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMjEsIDQzLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjE3LCAyMDEsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgNjUsIDI0MSwgMjA5LCAyMjUsIAotICAgIDE2NSwgMjUwLCAxNzUsIDIzNCwgNDAsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjQsIDE2MCwgNjUsIAotICAgIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICAyNTQsIDE2OSwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDExNywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgCi0gICAgMjUwLCAxNzUsIDEzMywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ0LCA1MCwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIAotICAgIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjEsIDQzLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjQ1LCAxNTAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjE3LCAyMDEsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgCi0gICAgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgNDAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAyMjQsIDE2MCwgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyNDcsIDE5OSwgCi0gICAgMjI1LCAxNjUsIDI1MCwgMTc1LCA4MywgMjM1LCA2NSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNTQsIDE2OSwgNjUsIDI0OSwgCi0gICAgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDExNywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDEzMywgNjUsIAotICAgIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0MywgMjM3LCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIyMCwgNTMsIDY1LCAyNDksIDE3OSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMjEsIDQzLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjksIDMxLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjE3LCAyMDEsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzUsIDEzNywgNjUsIDI0OSwgMTc5LCAyMjUsIAotICAgIDE2NSwgMjUwLCAxNzUsIDIzNCwgNDAsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjQsIDE2MCwgNjUsIAotICAgIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIzNCwgODgsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAKLSAgICA2NywgMjM1LCA2NSwgMjEsIDIxMiwgODAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjEyLCA4MCwgMjQ5LCAxNTcsIDIxLCAKLSAgICAxMjIsIDI0OSwgMTU3LCAyMSwgMTE3LCAyNDksIDE1NywgMjEsIDEzMywgMjQ5LCAxNTcsIDIxLCAyNDMsIDIzNywgMjQ5LCAKLSAgICAxNTcsIDIxLCAyNDQsIDUwLCAyNDksIDE1NywgMjEsIDIyMCwgNTMsIDI0OSwgMTU3LCAyMSwgMjIxLCA0MywgMjQ5LCAxNTcsIAotICAgIDIxLCAyNDUsIDE1MCwgMjQ5LCAxNTcsIDIxLCAyMjksIDMxLCAyNDksIDE1NywgODYsIDcsIDYsIDEsIDYxLCA4NiwgNywgNiwgCi0gICAgMSwgMjUzLCA3NCwgODYsIDcsIDYsIDEsIDI1MCwgMjUyLCA4NiwgNywgNiwgMSwgMjQ5LCAzLCA4NiwgNywgNiwgMSwgNzQsIAotICAgIDg2LCA3LCA2LCAxLCAyNDQsIDIzMCwgODYsIDcsIDYsIDEsIDI0MywgMTc3LCA4NiwgNywgNiwgMSwgMjQyLCA0MSwgODYsIAotICAgIDcsIDYsIDEsIDcyLCA4NiwgNywgNiwgMSwgMjM1LCAxNDIsIDg2LCA3LCA2LCAxLCAyMzUsIDI3LCA4NiwgNywgNiwgMSwgCi0gICAgMTUwLCA4NiwgNywgNiwgMSwgMTgzLCA4NiwgNywgNiwgMSwgMjA0LCA4NiwgNywgNiwgMSwgNzUsIDg2LCA3LCA2LCAxLCAKLSAgICAyMjYsIDIyOSwgODYsIDcsIDYsIDEsIDIyNCwgMjQwLCA4NiwgNywgNiwgMSwgMTQ5LCA4NiwgNywgNiwgMSwgMTk3LCA4NiwgCi0gICAgNywgNiwgMSwgMjE4LCA5OSwgODYsIDcsIDYsIDEsIDY5LCA4NiwgNywgNiwgMSwgMjE1LCA3OSwgODYsIDcsIDYsIDEsIAotICAgIDIxNCwgODIsIDg2LCA3LCA2LCAxLCAyMTMsIDE2NiwgODYsIDcsIDYsIDEsIDIxMywgMTA1LCA4NiwgNywgNiwgMSwgMjEyLCAKLSAgICAxNTIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgNywgNiwgMSwgMTk3LCAzNiwgMzIsIDcsIDYsIDEsIDI1MCwgCi0gICAgMjUyLCAzNiwgMzIsIDcsIDYsIDEsIDE0OSwgMzYsIDI1MCwgMTI1LCAzNiwgMjEzLCAxNjgsIDkxLCA3LCA2LCAxLCA2MSwgCi0gICAgOTEsIDcsIDYsIDEsIDI1MywgNzQsIDkxLCA3LCA2LCAxLCAyNTAsIDI1MiwgOTEsIDcsIDYsIDEsIDI0OSwgMywgOTEsIDcsIAotICAgIDYsIDEsIDc0LCA5MSwgNywgNiwgMSwgMjQ0LCAyMzAsIDkxLCA3LCA2LCAxLCAyNDMsIDE3NywgOTEsIDcsIDYsIDEsIDI0MiwgCi0gICAgNDEsIDkxLCA3LCA2LCAxLCA3MiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQyLCA5MSwgNywgNiwgMSwgMjM1LCAyNywgOTEsIDcsIAotICAgIDYsIDEsIDE1MCwgOTEsIDcsIDYsIDEsIDE4MywgOTEsIDcsIDYsIDEsIDIwNCwgOTEsIDcsIDYsIDEsIDc1LCA5MSwgNywgNiwgCi0gICAgMSwgMjI2LCAyMjksIDkxLCA3LCA2LCAxLCAyMjQsIDI0MCwgOTEsIDcsIDYsIDEsIDE0OSwgOTEsIDcsIDYsIDEsIDE5NywgCi0gICAgOTEsIDcsIDYsIDEsIDIxOCwgOTksIDkxLCA3LCA2LCAxLCA2OSwgOTEsIDcsIDYsIDEsIDIxNSwgNzksIDkxLCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCA5MSwgNywgNiwgMSwgMjEzLCAxNjYsIDkxLCA3LCA2LCAxLCAyMTMsIDEwNSwgOTEsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCA5MSwgMjQwLCAxOTMsIDkxLCAyMzAsIDEyMCwgOTEsIDIyMiwgMTAyLCA5MSwgMjE5LCAxNTgsIDkxLCAyMjUsIDk4LCAKLSAgICA5MSwgMjE0LCA3LCAxNDYsIDM2LCA3LCA2LCAxLCA2MSwgMTQ2LCAzNiwgNywgNiwgMSwgMjUzLCA3NCwgMTQ2LCAzNiwgNywgCi0gICAgNiwgMSwgMjUwLCAyNTIsIDE0NiwgMzYsIDcsIDYsIDEsIDI0OSwgMywgMTQ2LCAzNiwgNywgNiwgMSwgNzQsIDE0NiwgMzYsIAotICAgIDcsIDYsIDEsIDI0NCwgMjMwLCAxNDYsIDM2LCA3LCA2LCAxLCAyNDMsIDE3NywgMTQ2LCAzNiwgNywgNiwgMSwgMjQyLCA0MSwgCi0gICAgMTQ2LCAzNiwgNywgNiwgMSwgNzIsIDE0NiwgMzYsIDcsIDYsIDEsIDIzNSwgMTQyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMzUsIAotICAgIDI3LCAxNDYsIDM2LCA3LCA2LCAxLCAxNTAsIDE0NiwgMzYsIDcsIDYsIDEsIDE4MywgMTQ2LCAzNiwgNywgNiwgMSwgMjA0LCAKLSAgICAxNDYsIDM2LCA3LCA2LCAxLCA3NSwgMTQ2LCAzNiwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgMzYsIDcsIDYsIDEsIDIyNCwgCi0gICAgMjQwLCAxNDYsIDM2LCA3LCA2LCAxLCAxNDksIDE0NiwgMzYsIDcsIDYsIDEsIDE5NywgMTQ2LCAzNiwgNywgNiwgMSwgMjE4LCAKLSAgICA5OSwgMTQ2LCAzNiwgNywgNiwgMSwgNjksIDE0NiwgMzYsIDcsIDYsIDEsIDIxNSwgNzksIDE0NiwgMzYsIDcsIDYsIDEsIAotICAgIDIxNCwgODIsIDE0NiwgMzYsIDcsIDYsIDEsIDIxMywgMTY2LCAxNDYsIDM2LCA3LCA2LCAxLCAyMTMsIDEwNSwgMTQ2LCAzNiwgCi0gICAgNywgNiwgMSwgMjEyLCAxNTIsIDE0NiwgOTEsIDcsIDYsIDEsIDYxLCAxNDYsIDkxLCA3LCA2LCAxLCAyNTMsIDc0LCAxNDYsIAotICAgIDkxLCA3LCA2LCAxLCAyNTAsIDI1MiwgMTQ2LCA5MSwgNywgNiwgMSwgMjQ5LCAzLCAxNDYsIDkxLCA3LCA2LCAxLCA3NCwgCi0gICAgMTQ2LCA5MSwgNywgNiwgMSwgMjQ0LCAyMzAsIDE0NiwgOTEsIDcsIDYsIDEsIDI0MywgMTc3LCAxNDYsIDkxLCA3LCA2LCAxLCAKLSAgICAyNDIsIDQxLCAxNDYsIDkxLCA3LCA2LCAxLCA3MiwgMTQ2LCA5MSwgNywgNiwgMSwgMjM1LCAxNDIsIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIzNSwgMjcsIDE0NiwgOTEsIDcsIDYsIDEsIDE1MCwgMTQ2LCA5MSwgNywgNiwgMSwgMTgzLCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMDQsIDE0NiwgOTEsIDcsIDYsIDEsIDc1LCAxNDYsIDkxLCA3LCA2LCAxLCAyMjYsIDIyOSwgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjI0LCAyNDAsIDE0NiwgOTEsIDcsIDYsIDEsIDE0OSwgMTQ2LCA5MSwgNywgNiwgMSwgMTk3LCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMTgsIDk5LCAxNDYsIDkxLCA3LCA2LCAxLCA2OSwgMTQ2LCA5MSwgNywgNiwgMSwgMjE1LCA3OSwgMTQ2LCA5MSwgNywgCi0gICAgNiwgMSwgMjE0LCA4MiwgMTQ2LCA5MSwgNywgNiwgMSwgMjEzLCAxNjYsIDE0NiwgOTEsIDcsIDYsIDEsIDIxMywgMTA1LCAKLSAgICAxNDYsIDkxLCA3LCA2LCAxLCAyMTIsIDE1MiwgMjQ5LCA2OCwgMTQ2LCA5MSwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgOTEsIAotICAgIDI0MCwgMTA2LCAxNDYsIDkxLCAxOTMsIDE0NiwgOTEsIDIyMiwgMjAyLCAxNDYsIDkxLCAyNTQsIDE4NSwgMTQ2LCA5MSwgCi0gICAgMjE0LCA3LCA0MSwgMjQ3LCAxMTYsIDkxLCAyNDksIDIxNiwgOTEsIDI0OSwgMTA5LCA5MSwgMjQzLCAyMjIsIDkxLCAyNDAsIAotICAgIDk4LCA5MSwgMjI5LCAxNjgsIDkxLCAyMjksIDE2MSwgOTEsIDIyNywgODAsIDkxLCAyMTksIDIyMiwgOTEsIDExNCwgMiwgCi0gICAgMjQ0LCAyNTQsIDc3LCA5MSwgMjE0LCAxMDAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDYxLCAyMjMsIDI1MywgMjM1LCAKLSAgICAyMzYsIDE2LCAxLCAyNTMsIDc0LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyNTAsIDI1MiwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMjQ5LCAzLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3NCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgMjQ0LCAyMzAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDI0MywgMTc3LCAyMjMsIDI1MywgMjM1LCAyMzYsIAotICAgIDE2LCAxLCAyNDIsIDQxLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3MiwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgCi0gICAgMjM1LCAxNDIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIzNSwgMjcsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDE1MCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMTgzLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMDQsIDIyMywgCi0gICAgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDc1LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMjYsIDIyOSwgMjIzLCAyNTMsIAotICAgIDIzNSwgMjM2LCAxNiwgMSwgMjI0LCAyNDAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDE0OSwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMTk3LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMTgsIDk5LCAyMjMsIDI1MywgMjM1LCAyMzYsIAotICAgIDE2LCAxLCA2OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjE1LCA3OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgCi0gICAgMjE0LCA4MiwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjEzLCAxNjYsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIxMywgMTA1LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMTIsIDE1MiwgNDEsIDE0MiwgMjQxLCA0OSwgOTEsIDU2LCAKLSAgICAyMzQsIDI3LCA5MSwgNTYsIDIyMiwgMjAyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDMsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCA0NywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU1LCA5MSwgNTYsIDI0OCwgNDEsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAKLSAgICA2MiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQ5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjEsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCA0OCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDYxLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzUsIDkxLCA5LCAyMTUsIAotICAgIDE0OCwgMjM4LCAyOCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTgsIDkxLCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCA0NCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDYwLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzYsIAotICAgIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1OSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDIyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgCi0gICAgMjcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyMCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUwLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNTIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzMCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQxLCA5MSwgOSwgMjE1LCAKLSAgICAxNDgsIDIzOCwgMzksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2NSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDY0LCA5MSwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgMTgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0NSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDYzLCAKLSAgICA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIAotICAgIDE5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyNCwgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDIzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTMsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzMSwgOTEsIDksIDIxNSwgCi0gICAgMTQ4LCAyMzgsIDMzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyNiwgOTEsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDU3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTEsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgCi0gICAgOSwgMjE1LCAxNDgsIDIzOCwgMzIsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNjQsIAotICAgIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNjIsIDIxNiwgMjE5LCAyMjAsIDIzMywgCi0gICAgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgMjksIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgNDIsIDIxNiwgMjE5LCAKLSAgICAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgMjUsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgNTYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NCwgOSwgMjE1LCAxNDgsIDIzOCwgMzgsIDM2LCAKLSAgICAxNDMsIDI1NCwgMTUwLCAzNiwgMTQzLCAyNTQsIDE3MiwgMjQ5LCAxNCwgMjQ0LCAxMSwgMjQ5LCAxOTMsIDIxNSwgMTY0LCAKLSAgICAyMjksIDQ0LCAyLCAyMTksIDkyLCAyMTgsIDIzMywgMTEwLCAyMzAsIDE4NCwgMjE4LCAyMzIsIDI0OSwgMjE5LCAyNTMsIAotICAgIDEyMywgMjQ2LCA5LCAyMTgsIDIzMSwgMTEwLCAyNTEsIDQ3LCAyMjQsIDQ5LCAyNTEsIDY4LCAyNTMsIDEyMywgMjI5LCA0MywgCi0gICAgMjE0LCAyNSwgMjE0LCAxOSwgMjE0LCAxMTIsIDIzMSwgOCwgMjE0LCA5LCAyNDUsIDE4MCwgMjQyLCAxNTcsIDI0NSwgMTIsIAotICAgIDI0NSwgMTgwLCAyNDIsIDE1NywgMjU0LCAzNywgMjQ1LCAxODAsIDI0MiwgMTU3LCAyNTMsIDE0MCwgMjQyLCAxNTcsIDIsIAotICAgIDIzMSwgMTE1LCAxNTYsIDIzMCwgMTk5LCA4NywgMjE0LCAxMSwgMjQ5LCA3NywgMjMwLCAxOTksIDg3LCAyNDQsIDYxLCAKLSAgICAyMjQsIDE2NywgMjMwLCAxOTksIDg3LCAyMTQsIDExLCAyNDIsIDE4NiwgMjMwLCAxOTksIDg3LCAyNDMsIDIwMCwgMjMwLCAKLSAgICAxOTksIDg3LCAyMTQsIDM2LCAyNDIsIDE4NiwgMjMwLCAxOTksIDg3LCAyMzMsIDEwMywgMjI0LCAxNjcsIDIzMCwgMTk5LCAKLSAgICA4NywgMjE0LCAzNiwgMjQ5LCA3NywgMjMwLCAxOTksIDg3LCAyNDksIDc3LCAyMzAsIDE5OCwgMTU2LCAyMzAsIDE5OSwgMiwgCi0gICAgMjQ0LCAxNTgsIDI0NCwgNjEsIDIyNCwgMTY3LCAyMzAsIDE5OSwgMiwgMjQ0LCAxNTgsIDIzMywgMTAzLCAyMjQsIDE2NywgCi0gICAgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyNDMsIDIwMCwgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyMTgsIDIzOSwgMiwgMjQ0LCAKLSAgICAxNTgsIDI0MiwgMTU1LCAyMTksIDk1LCAyMjAsIDE3OSwgMjE5LCA5NSwgMjUwLCA1MywgMjIyLCA4NywgMjQ1LCA2LCAyMTYsIAotICAgIDE5MywgMjQ4LCAzNSwgMjE2LCAxOTMsIDIyNiwgMTg2LCAyMTYsIDE5MywgMjUwLCAyMTMsIDIxNiwgNzMsIDI1MCwgNTUsIAotICAgIDI1MSwgMTMzLCAyMjMsIDkzLCAyNDEsIDE2NCwgMjE4LCAyMzYsIDI1MSwgMTMzLCAyNDUsIDE4NCwgNjUsIDIzMiwgMCwgCi0gICAgMjQ1LCAxODQsIDY1LCAyMjMsIDE4NCwgMjQxLCAxODgsIDI0MywgMjM3LCAyMzMsIDc4LCAyNDksIDE4MywgMjMxLCAyMzMsIAotICAgIDIzMywgNzcsIDI0NCwgMTQ0LCAyMzMsIDc3LCAyMzMsIDc4LCAyNDQsIDE2LCAyMzUsIDI1MiwgMjEzLCAyMjQsIDIzMCwgCi0gICAgMTI4LCAyMTYsIDI0NSwgMjUzLCAxMDcsIDI0MiwgMTE5LCAyMzEsIDEzMSwgMjE0LCAyMywgMjE4LCA4LCAyMzMsIDUwLCAKLSAgICAyNTIsIDY4LCAyMjUsIDE5NCwgMjI0LCA0LCAyNTMsIDIyMywgMjQyLCAxMDQsIDI1MywgMjIzLCAyMjYsIDkyLCAyMjYsIAotICAgIDkzLCAyNTAsIDU2LCAyMTksIDU0LCAyNDIsIDYsIDIyMCwgMTgsIDY1LCAyMjUsIDE3NiwgMjMxLCAxNTIsIDIyNywgNjMsIAotICAgIDI1MSwgMTE5LCAyMjUsIDEwOSwgMjMzLCA2MCwgMjIzLCAxODUsIDI0OSwgODIsIDIyMywgMTg1LCAyNTIsIDc4LCAyNDksIAotICAgIDExMiwgMjIzLCAxODQsIDI0OSwgMzYsIDI0LCAyMjMsIDE4NCwgMjE5LCA4MSwgMjUxLCA5MywgMjE5LCAyMDIsIDI1MSwgCi0gICAgNzgsIDI0MywgMjIxLCAyNDMsIDIxNywgMjIzLCAxMDgsIDIxOCwgMTkxLCAyMjUsIDExMSwgMjQ4LCAxMjAsIDIyNywgMTAxLCAKLSAgICAyMTgsIDIwOCwgMjQzLCAyMTgsIDIyMCwgMTU1LCAyNDQsIDYwLCAyNTAsIDIwOSwgMiwgMjE4LCAxODQsIDI0NywgMjQyLCAKLSAgICAyMTksIDIzNiwgMjQwLCAxMDUsIDI0OSwgODEsIDIyMCwgMjUwLCAyNDAsIDEwNCwgMjQwLCAxMDUsIDI0OSwgODEsIDI0NiwgCi0gICAgNjIsIDI0OSwgMTExLCAyNTAsIDIxLCAxMzQsIDI1MCwgMTg2LCAyMzIsIDE5NCwgMjQ5LCAzMCwgMjQxLCA0MSwgMjI1LCAKLSAgICAxMTMsIDIyMCwgMTY0LCAyNTEsIDIxMywgMjUxLCA4OSwgMjI1LCAxMTQsIDY1LCAyNDQsIDIsIDI0OSwgMTEwLCAyNDMsIAotICAgIDI0OSwgMjQsIDIzNCwgNDEsIDIxNywgMjI3LCAyMTMsIDIxNiwgMjQxLCAyNTIsIDIyMiwgMTgzLCAyNTEsIDEwMywgMjQsIAotICAgIDI0OSwgNDMsIDIxMywgMjIyLCAyNDIsIDE2MCwgMjQ5LCAxNzIsIDI0MiwgMTYwLCAyMTYsIDE1MSwgMjQ2LCA0NSwgMjUxLCAKLSAgICAyMzgsIDIzMCwgMTYzLCAyNDksIDIwMCwgMjUxLCAyMzgsIDIzMCwgMTYyLCAyNTIsIDEwNCwgMjUxLCAxMDIsIDIyMywgCi0gICAgMTg2LCAyMTMsIDE4OSwgMjI1LCA3NSwgMjUxLCAxNTgsIDI1MCwgMjA4LCAyMzUsIDEzNiwgMjUwLCAxNCwgMjE2LCAxOTMsIAotICAgIDI0NCwgMTMwLCAyNTAsIDEzLCAyNDQsIDYzLCAyNDQsIDY0LCAyMTksIDIwMCwgMjUyLCA3NywgMjI2LCAxMjIsIDIyNSwgCi0gICAgMTI0LCAyNDksIDE0MywgMjUyLCA3OCwgMjE4LCAxMCwgMjE2LCAxOTMsIDI0OSwgNjgsIDI0NCwgMzYsIDIyNSwgMTk1LCAKLSAgICAyNDgsIDMyLCAyMzUsIDEzMSwgMjQ3LCA4NSwgMjUwLCAxNjQsIDIxOSwgNTMsIDIxMywgMjI1LCAyNTAsIDM1LCAyMzAsIAotICAgIDE5OSwgMjE0LCAxNDQsIDI1MCwgOTYsIDIyMiwgMTE3LCAyMjIsIDE0MSwgMjQyLCAxMjQsIDI1MCwgMTgzLCAyNTAsIDE2NSwgCi0gICAgMjQwLCAyMzIsIDI0NCwgOTksIDIxMywgMjQxLCAyMjMsIDEwMiwgMjQ5LCAxNzMsIDI0NCwgNTUsIDIyNSwgMTM2LCAyNCwgCi0gICAgMjQ0LCA1OSwgMjMxLCA0MCwgMjMwLCAxNzgsIDI1MCwgMTk4LCAyNDksIDIzMiwgMjQxLCAyMTYsIDI1MywgMTU2LCAyMjYsIAotICAgIDE4OSwgMjE2LCAyMjcsIDI0MSwgMjM0LCAyNDksIDIyMiwgMjE3LCAxOTUsIDIxNywgNjcsIDI0OSwgMjEzLCAyNTEsIDEyNSwgCi0gICAgMjI2LCA1MiwgMjUzLCAxNTUsIDIxNCwgMTUwLCAyNDMsIDg2LCAyNDcsIDE0OSwgMjQxLCAxNDIsIDIyMCwgMTIsIDIzMiwgCi0gICAgMzksIDI1MSwgMTY4LCAyNDMsIDg3LCAyNDcsIDE5MiwgMjUxLCA5MiwgMjQ0LCAyMSwgMjI1LCAxNjUsIDI1MCwgMTczLCAKLSAgICAyNywgMjI4LCAxNTgsIDIzMCwgMTU1LCAyNywgMjI4LCAxNTMsIDIyMiwgMTMwLCAyNDIsIDgwLCAyNywgMjM0LCAxNDMsIAotICAgIDIxNiwgMTQ4LCAyMTQsIDEzNSwgMjcsIDIyMiwgMTExLCAyMjMsIDM1LCAyMjAsIDE5MSwgMiwgMjIyLCAxNDMsIDIxNywgCi0gICAgMTk3LCAyMjQsIDY4LCAyNCwgMjUyLCA3OCwgMjIwLCAzMywgMjQsIDIyMCwgMzMsIDI1MSwgMTEyLCAyNTIsIDQzLCAyNCwgCi0gICAgMjQxLCAzNiwgMjUwLCA1NywgMjQ0LCA0MiwgMjE5LCAyNDcsIDIyMywgMzYsIDIxOCwgMjEyLCAyMTYsIDE1MiwgMjQwLCAKLSAgICAyMzMsIDIyNCwgNjksIDI1NCwgMzgsIDI0NCwgMCwgMjIzLCA0NywgMjQ0LCAwLCAyMTgsIDE4NiwgMjQwLCAyMjIsIDI1MSwgCi0gICAgNDgsIDI0MCwgMjIyLCAyLCAyNDMsIDcwLCAyMjcsIDk1LCAyNTEsIDQ4LCAyMzUsIDEzMSwgMjI1LCAxMTksIDIyNywgOTQsIAotICAgIDI0NSwgMTEsIDIyNSwgMTE5LCAyMjcsIDk0LCAyNDAsIDIzMSwgMjUyLCA2NCwgMjUzLCA5NywgMjE3LCAyMDUsIDIzMiwgCi0gICAgMzksIDI0MCwgMjI3LCAyMzIsIDE2NiwgMjQwLCAyMjcsIDI0OSwgMTE1LCAyMTksIDY1LCAyMjIsIDExNiwgMjQ3LCAyNTAsIAotICAgIDIxOSwgNjUsIDI0NCwgMTQ4LCAyMzUsIDE0NywgMjMzLCAxMTMsIDIzNSwgMTMxLCAyNTAsIDE1OCwgMjQ1LCAxMSwgMjUwLCAKLSAgICAxNTgsIDIyNCwgMzMsIDIzMCwgMTgyLCAyMjYsIDIzOCwgMjE0LCAyNSwgMjUxLCA1MiwgMjQ5LCA4NCwgMjE3LCA2MCwgCi0gICAgMjMzLCA0MiwgMjI0LCA3MCwgMjUwLCAxNTYsIDI0NiwgNTAsIDI0OSwgNzUsIDIxMywgMjQ0LCAyMTksIDI1NCwgMjE5LCAKLSAgICAyNTIsIDI0MCwgMjMyLCAyMjQsIDQ1LCAyNDIsIDE0NiwgMjIwLCAyMzcsIDIzMCwgMjE1LCAyMjMsIDk2LCAyNTAsIDQ1LCAKLSAgICAyNDcsIDkwLCAyMjUsIDIwNSwgMjUxLCAxMjYsIDI0NSwgMTI2LCAyMjcsIDEwMywgMjE5LCAxODQsIDIyMCwgMjMyLCAyNTEsIAotICAgIDUxLCAyNTQsIDMsIDI0MSwgNDAsIDIzMywgMTQ0LCAyNTEsIDIzNiwgMjQ0LCA1OSwgMjE2LCAxNTEsIDI0NCwgNTksIDI1MSwgCi0gICAgMTMyLCAyMTYsIDU1LCAyNDEsIDIzMiwgMjUwLCA0NiwgMjUyLCAxMDQsIDI1MCwgNDYsIDI0MywgMjEyLCAyNTIsIDEwNCwgCi0gICAgMjUwLCA0NiwgMjUxLCAxNjAsIDIyNiwgNzAsIDIzNCwgMzUsIDIyNSwgMTI4LCAyNDYsIDQyLCAyNTAsIDE5OSwgMjUyLCAKLSAgICA5NSwgMjUwLCAxOTksIDI0NywgODQsIDIzMCwgMTgzLCAyNDQsIDE1OCwgMjQ5LCA4NSwgMjQ0LCAxNTgsIDIxNywgNjEsIAotICAgIDI0NCwgMTU4LCAyMjQsIDcxLCAyNDQsIDE1OCwgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDYsIDUxLCAyNDQsIDE1OCwgMjE5LCAKLSAgICAxNzMsIDIxMywgMjQ0LCAyNDAsIDIzMywgMjQ0LCAxNTgsIDIzMCwgMjE2LCAyNDQsIDE1OCwgMjQ3LCA5MSwgMjQ0LCAxNTgsIAotICAgIDIyNSwgMjA2LCAyNDQsIDE1OCwgMjQzLCAyMTUsIDI0NCwgMTU4LCAyNDIsIDMsIDI0NCwgMTU4LCAyMTMsIDIxMSwgMjQ0LCAKLSAgICAxNTgsIDI1MSwgMjQ3LCAyNDQsIDE1OCwgMjI2LCAxNzIsIDI0NCwgMTU4LCAyMjUsIDIwNiwgMjI4LCAxNjQsIDIyNiwgCi0gICAgMTA2LCAyMjUsIDY3LCAyNDQsIDIzNywgMjQ1LCAxODMsIDIyOCwgMTY0LCAyMzAsIDE4MCwgMjE2LCAyMzIsIDY3LCAxMTQsIAotICAgIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIDExOSwgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCA2NywgCi0gICAgNDIsIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIDQ2LCAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIAotICAgIDI0NCwgNTMsIDI0MSwgMjU1LCA1MiwgMjE0LCAxNywgMjQxLCAyNTUsIDUyLCAyMjcsIDgxLCAyNDEsIDI1NSwgNTIsIDIxNywgCi0gICAgODksIDExNCwgNTIsIDIxNywgODksIDExOSwgNTIsIDI0OSwgMjEyLCAyNDEsIDI1MCwgNTIsIDIyNywgNDAsIDI0MSwgMjUwLCAKLSAgICA1MiwgMjQ5LCA2MywgMjEzLCAyMDcsIDI0MSwgMjM0LCAyNDQsIDIzOCwgMjI5LCAxODUsIDIxOCwgOTgsIDIzNSwgMTI2LCAKLSAgICAyNDYsIDQ3LCAyMzQsIDkxLCAyNTEsIDE3MCwgMjEzLCAyMDcsIDI0OSwgMTg2LCAyMjUsIDE0LCAyNDEsIDI1MywgMjI1LCAKLSAgICAxMTAsIDIzMSwgMjQwLCAyMjAsIDE4NCwgMjUzLCAxMTksIDIyMCwgMTg0LCAyNDEsIDE1MCwgMjIwLCAxODQsIDIxMywgCi0gICAgMjA3LCAyMjIsIDE1NiwgMjEzLCAyMDcsIDI1MSwgMTExLCAyNDMsIDI1NCwgMjUxLCAxOSwgMjM1LCAyNTIsIDIyMCwgOTUsIAotICAgIDI1MSwgMTgsIDIzNSwgMjUyLCAyMjAsIDk1LCAyNTEsIDg4LCAyNDIsIDE3MCwgMjMxLCAyNDgsIDIxMywgMjA4LCAyNDQsIAotICAgIDE0MiwgMjMxLCAyNDksIDI0LCAyMTMsIDIwOSwgMjQxLCA0NiwgMjQxLCAyNDksIDExNywgMjMxLCAxMjMsIDI0MSwgNDYsIAotICAgIDI0MSwgMjQ5LCAxMTcsIDIxMywgMjA2LCAyNDEsIDQ2LCAyNDEsIDI0OSwgMjI1LCAxMzMsIDIyNywgOTMsIDIxMywgMjA5LCAKLSAgICAyLCAyNTEsIDM1LCAyNDUsIDE4MSwgMjUxLCA2OSwgMiwgMjE0LCAyMjMsIDIyNiwgNDQsIDIsIDI1MSwgMTM1LCAyNDIsIAotICAgIDE2LCAyMzEsIDI0OSwgMiwgMjQyLCA4OSwgMjI1LCAyNDEsIDIzMSwgMjM3LCAyMzEsIDI0OSwgMiwgMjE2LCA2MSwgMjI3LCAKLSAgICA3NCwgMjMxLCAyNDgsIDIyNywgNzQsIDIxMywgMjA4LCAyNTIsIDEwMywgMjQ5LCAxMjksIDIxMywgMTkyLCAyMjUsIDcwLCAKLSAgICAyMzUsIDEzMSwgMjI3LCA4OSwgMjM1LCAxMzEsIDI0MiwgMTQ1LCAyNDIsIDE5OCwgMjUyLCAxMDQsIDI1NCwgMjIsIDI0NCwgCi0gICAgMjQyLCAyNTQsIDY5LCAyNTQsIDcwLCAyMzAsIDIwNiwgMjM2LCAxLCAyMjAsIDI4LCAyMzUsIDIyOSwgMjQ3LCAyNDEsIAotICAgIDIyNiwgNDMsIDI0MiwgODYsIDI0OCwgMTI0LCAyMzIsIDIzMCwgMjMwLCAzMCwgMjI1LCAxMzIsIDI0NCwgMTU5LCAyMzEsIAotICAgIDIwNSwgMjQyLCAxNSwgMjUyLCA1OCwgMjI1LCAxMzUsIDIxOCwgMTE3LCAyMjUsIDE5OCwgMjM0LCA3MywgNzcsIDIzMiwgCi0gICAgMTY2LCAyMzMsIDM0LCAyMjMsIDEzMCwgMjQzLCAzMCwgMjE5LCA3MSwgMjM0LCA3MiwgMjUxLCA5NywgMjQ5LCA4NywgMiwgCi0gICAgMjQxLCAyMTEsIDIxNCwgMywgMjUxLCAyNDUsIDI0MSwgMjExLCAyNTEsIDYzLCAyNDEsIDIxMSwgMTE3LCAyNDEsIDIwOSwgCi0gICAgMjE5LCAxOTgsIDI0MSwgMjExLCAyNDIsIDk4LCAyNDEsIDIxMSwgMjQxLCAyMTIsIDIsIDY4LCAyNTEsIDEzMSwgMjQxLCAKLSAgICAyMTEsIDI0MiwgMTA0LCAyNDEsIDIxMSwgMjEzLCAzMywgMjQxLCAyMTEsIDIyNSwgMTUsIDI0MSwgMjExLCAyNDEsIDIxMiwgCi0gICAgMiwgMjIzLCAxODYsIDIyMywgMTk3LCAyNDEsIDIwOSwgMjQxLCAyMTIsIDI0OCwgMzIsIDI0NywgMjAxLCAyMjEsIDUsIDIsIAotICAgIDExOCwgNjIsIDIzNSwgMjEyLCAyNDUsIDEyOSwgMTc3LCAyNTEsIDQ1LCAyNTQsIDIxLCA4NywgMjUxLCAxMjAsIDIyMCwgCi0gICAgMjAsIDg3LCAyNDksIDE2NiwgODcsIDIxOSwgMTc4LCAyMTgsIDE5MywgODcsIDI0NiwgNDAsIDI0OCwgMTAyLCA4NywgMjI1LCAKLSAgICAxOTksIDY1LCAyMjUsIDEyOSwgMjQ0LCAzMCwgMjUxLCAxODEsIDI0NywgMTE3LCA4NywgMjE5LCAxOTEsIDI1MiwgNzcsIAotICAgIDIxNywgMTAyLCAyNTIsIDc3LCA2NywgMjQ0LCAyMCwgMjQwLCAyMDEsIDIyNSwgMTM5LCA4NywgMjMwLCAyMTksIDI1MiwgCi0gICAgOTAsIDI0OSwgMzksIDI0NCwgMjU1LCAxMDcsIDI0NywgODYsIDUyLCAyNDksIDc5LCAyNTAsIDE3NCwgMjUyLCA2MywgMiwgCi0gICAgMjEzLCAzMSwgNTIsIDI1MiwgNjMsIDIsIDI0NywgODYsIDUyLCAyNTIsIDYzLCAyLCAyNDUsIDE0LCA1MiwgMjUyLCA2MywgCi0gICAgMiwgMjI1LCAxMDgsIDUyLCAyMzAsIDIxOSwgMiwgMjEzLCAyMjAsIDI1MCwgNzQsIDIsIDIxNSwgMTI0LCAyMTYsIDE4OSwgCi0gICAgMjQsIDIxMywgMzEsIDUyLCAyMjIsIDk3LCAyMjYsIDQyLCAyNDksIDE0NywgMjUxLCA2NywgMjMwLCAyNTUsIDI0NCwgMjUsIAotICAgIDI0NywgMTM3LCAyMjcsIDI3LCAyNDcsIDE0MiwgMjQ2LCA0LCAyNDQsIDc2LCAyNDQsIDksIDIyNywgNDAsIDI0NCwgNzYsIAotICAgIDI0NCwgOSwgMjI2LCAyMDEsIDIsIDI0OSwgNDEsIDIyNiwgMjAxLCAyNDQsIDE1MSwgMjE1LCAxMzQsIDI1MCwgMjA0LCAKLSAgICAyMTcsIDIyNiwgMjUwLCAyMDQsIDI1MCwgMTc1LCAyMzUsIDIzOSwgMjUwLCA3NCwgMiwgMjE1LCAxMjQsIDIxNiwgMTg4LCAKLSAgICAyNTAsIDc0LCAyLCAyNDYsIDU4LCAyMTYsIDE4OCwgMjUyLCA2MCwgMjUwLCA3MywgMjQ5LCAxOTksIDIyNSwgMTAsIDIyMywgCi0gICAgODcsIDIyNSwgMTAsIDIyNiwgMTQ3LCAyMTksIDYxLCAyMjMsIDQyLCAyMTYsIDE4MCwgMjIzLCA0MiwgMjUxLCAxMTYsIAotICAgIDIxOCwgMzksIDIzMywgNzUsIDIyOCwgMTU2LCAyMjgsIDE1NywgMiwgMjQ4LCAzMSwgMjQ5LCA4NiwgMjQ5LCAxOTMsIDI1MSwgCi0gICAgMTE3LCAyMjcsIDQwLCAyNTEsIDExNywgMjQyLCAxMDQsIDI1MSwgMTE3LCAyNTEsIDEzMSwgMjUxLCAxMTcsIDIyNywgMjMsIAotICAgIDI1MSwgMTE3LCAyNTEsIDExNCwgMjMwLCAyNSwgMjUyLCA5MywgMjIyLCAxMDUsIDIzMSwgMTI0LCAyMTcsIDIxMCwgMjI0LCAKLSAgICAxNiwgMjI2LCAxOTksIDI0NCwgMTI3LCAyMzIsIDM5LCAyMjIsIDE0MCwgMjU0LCAwLCAyMjUsIDMxLCAyNTQsIDE1NywgCi0gICAgMjMyLCAxNjgsIDI1MCwgNjMsIDIzMSwgMTM2LCAyMjYsIDI1MywgMjE2LCAxOTYsIDIzNSwgMjQ4LCAyMTYsIDE5NiwgMjI2LCAKLSAgICAyMDYsIDI0NSwgMjM2LCA4NywgMjM1LCAyNDUsIDI0NSwgNzgsIDI0NSwgNzksIDIsIDI0NiwgNTgsIDc2LCA0OSwgMjQ5LCAKLSAgICAxOTMsIDIzMiwgNiwgMiwgMjMyLCAxNjIsIDI0NCwgNDIsIDI0OSwgMTkzLCAyMzIsIDYsIDIsIDIyNCwgNDgsIDI0NCwgNDIsIAotICAgIDIyNywgNDAsIDIzMiwgNiwgMiwgMjI0LCA0OCwgMjQ0LCA0MiwgMjI3LCA0MCwgMjMyLCA2LCAyLCAyMzIsIDE2MiwgMjQ0LCAKLSAgICA0MiwgMjI1LCAxMTYsIDIyNSwgMTE3LCAyNDAsIDIzNSwgMjI5LCAxNjYsIDIzMCwgMjI5LCAyMjUsIDI0OSwgMjMwLCAyMjksIAotICAgIDIyNSwgMjUwLCAyLCA5NSwgNzYsIDI1MywgMTIzLCAyMzMsIDcwLCAyMTQsIDE1MywgMjMwLCAyMjgsIDIzMCwgMjI5LCAKLSAgICAyMjUsIDI1MCwgMjI3LCA5NiwgMjI4LCAxODYsIDIzMCwgMjI5LCAyMjUsIDI0OCwgMjU0LCAxLCAyLCAyNTIsIDQ5LCAyNTAsIAotICAgIDE5OCwgMjE0LCAxNTAsIDI1MCwgMTk4LCAyMTcsIDIwNywgMjI0LCA2MywgMjE0LCAxNDksIDIxNiwgMjUsIDk1LCAyNTMsIAotICAgIDE2MiwgMjQ5LCAxOTUsIDk1LCAyNCwgMTMyLCAyMjcsIDQwLCAyNDksIDIyOSwgMjUzLCAxNjIsIDI0OSwgMTk1LCA5NSwgCi0gICAgMjQsIDEzMiwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYzLCAyLCAzNiwgMTIyLCAyMjYsIDI0NCwgMjQ5LCAxOTUsIAotICAgIDI0NiwgNTgsIDI0LCAyMTUsIDEyNCwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAyNTMsIDI1NSwgMjQ2LCA1OCwgCi0gICAgMjQsIDIxNSwgMTI0LCAyMjcsIDQwLCAyNDksIDIyOSwgMjUzLCAxNjIsIDExNSwgMjUxLCA2NiwgODcsIDEyNCwgMjUxLCAKLSAgICA2NiwgODcsIDIxOSwgMTk1LCAyLCAyNTAsIDE5MiwgOTAsIDIxOSwgMTk0LCAyMTksIDE5NSwgMiwgMTIyLCAyMTksIDIxOCwgCi0gICAgMjE0LCAxOSwgMjE5LCAxOTUsIDIsIDEzMywgMjE5LCAyMTgsIDIxNCwgMTgsIDI1MiwgMzUsIDI0NSwgMTI5LCAyMjUsIAotICAgIDE2MSwgMjMzLCA2NiwgMjMyLCAxNiwgMjQyLCAxNjAsIDIyMywgMTQ0LCAyMzIsIDE2LCAyNDIsIDE2MCwgMjMyLCAyMDQsIAotICAgIDIsIDIzNSwgMjIyLCAyMjYsIDc0LCAyNDksIDE5MywgMjMyLCAyMDQsIDIsIDIzNCwgMTQ0LCAyMzQsIDE0NCwgMjMyLCAKLSAgICAyMDMsIDIyNywgNDAsIDIzMiwgMjAzLCAyNTEsIDIyMSwgMjUxLCAyMjIsIDIsIDI1MCwgMTkyLCA5MCwgMjUxLCAxMTUsIAotICAgIDIzMiwgMjMzLCA4NywgMjI0LCA2NCwgMjUxLCAxNSwgMjUyLCAxMDIsIDIsIDEzMiwgNzYsIDQ5LCAyNDUsIDEwMSwgMiwgCi0gICAgMTMyLCA3NiwgNDksIDIyNywgNjMsIDIsIDI0NCwgMjU0LCAxNTIsIDIsIDQyLCA0NiwgNzYsIDQ5LCAyMTksIDIyNSwgMiwgCi0gICAgOTUsIDc2LCA0OSwgMjE2LCAyMjcsIDIsIDIxNSwgMTI0LCA3NiwgNDksIDIyOCwgMTg2LCAxMjIsIDIxNSwgMTU0LCAyNDUsIAotICAgIDE0OCwgODcsIDIzNCwgMTQyLCAyMTcsIDIwMCwgMjM1LCAyMTYsIDE2LCAzMSwgNywgNiwgMjMzLCAzMywgMjM1LCAyMTYsIAotICAgIDE2LCAzMSwgNywgMywgMjMzLCAzMywgMjM1LCAyMTYsIDE2LCAzMSwgMjI4LCA1NSwgMjM1LCAyMTYsIDE2LCAzMSwgMjE4LCAKLSAgICAxMjgsIDIzNSwgMjE2LCAxNiwgMzEsIDcsIDIzMywgMzMsIDI0NCwgNjUsIDI0NSwgMTI5LCAyMTYsIDIyMiwgMjEzLCAxODcsIAotICAgIDI0MiwgNCwgMjI4LCAzOCwgMjQsIDI1MSwgMTIxLCAyNDEsIDUyLCAyMjUsIDE4MiwgMjMxLCAzOSwgMjE3LCAyMDgsIDI0OSwgCi0gICAgNTQsIDI1MiwgNzgsIDIyMCwgNTMsIDIyNSwgMTQzLCAyMTksIDk2LCAyLCAyMzEsIDM3LCAyNDcsIDc0LCAyMzUsIDEzMSwgCi0gICAgMTYsIDMxLCAyNTEsIDIzMywgMjE2LCAxNzgsIDI0NSwgMTE0LCA4MywgNDEsIDI1MSwgMTUsIDY3LCA0MSwgMjUxLCAxNSwgCi0gICAgMjMzLCAxMDgsIDIyNCwgNCwgMjQ5LCAyMjgsIDIzMywgMTA4LCAyNTEsIDEzMSwgMjQ5LCAyMjgsIDIzMywgMTA4LCAyMjcsIAotICAgIDIzLCAyNDcsIDIwMCwgMjMzLCAxMDgsIDI1MSwgMTMxLCAyNDcsIDIwMCwgMywgMjI3LCAyMywgMjQ3LCAyMDAsIDMsIDI1MSwgCi0gICAgMTMxLCAyNDcsIDIwMCwgMjE1LCAxMzMsIDIyNCwgNCwgMjE2LCAxODMsIDI0NiwgNTksIDIyNCwgNCwgMjE2LCAxODMsIAotICAgIDIxNSwgMTMzLCAzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDYsIDU5LCAzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDksIDE5NywgCi0gICAgMjQ0LCAxNTksIDEyMiwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMTE3LCAyMjcsIDEwNiwgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAxMzMsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0MywgMjM3LCAyMjcsIDEwNiwgMjQ5LCAKLSAgICAxOTcsIDI0NCwgMTU5LCAyNDQsIDUwLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjAsIDUzLCAyMjcsIDEwNiwgCi0gICAgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjEsIDQzLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDE1MCwgMjI3LCAKLSAgICAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI5LCAzMSwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjE3LCAyMDEsIAotICAgIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0NSwgMTI1LCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAKLSAgICAyMTYsIDQyLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjcsIDU4LCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNiwgCi0gICAgMjIsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjE3LCA5NCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDMsIDIzMywgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAyNDQsIDQ4LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyMCwgNDksIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIxLCAKLSAgICA0MiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDE0OSwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjksIDMwLCAyNDksIDE5NywgCi0gICAgMjQ0LCAxNTksIDIxNywgMTk5LCAyNDksIDE5NywgMjQ0LCAxNTksIDI0NSwgMTIzLCAyNDksIDE5NywgMjQ0LCAxNTksIAotICAgIDIxNiwgNDAsIDIzMCwgMTg3LCAyNDMsIDIwMSwgMjE2LCAyNDcsIDIxNiwgMjE1LCAyMTksIDg4LCA2NSwgMjMzLCAxMSwgCi0gICAgMjIwLCA5NiwgNjUsIDIzNSwgMTMyLCAyMzAsIDE3NiwgMjQyLCAxMDIsIDI0NCwgMTU5LCAyLCAyMjAsIDIsIDI0NCwgMjM3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjE3LCAyMjIsIDY1LCAyMzUsIDU2LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIAotICAgIDE4MCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyMjAsIDIsIDI0NCwgMjM3LCAyMjAsIAotICAgIDIsIDI0NCwgMTU5LCAyLCAyMjcsIDQwLCAyMzAsIDE4MSwgMjQsIDI0OSwgMTY4LCAyMTgsIDE5MiwgMjIwLCAyLCAyNDQsIAotICAgIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyMTcsIDU4LCAyNDQsIDIzNywgMjIwLCAyLCAyNDQsIDE1OSwgMiwgCi0gICAgMjQyLCA4LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyNDAsIDIzNCwgMjEzLCAyMTgsIDI0NCwgMTU4LCAyMjAsIDIsIDI0NCwgCi0gICAgMTU5LCAyLCAyMjAsIDIsIDI0NCwgMjM3LCAyNDQsIDE1OSwgMjIyLCAxMzUsIDI0OCwgMTMsIDI0NCwgMiwgMjIzLCAyMzgsIAotICAgIDI0NCwgMTU4LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAyNDEsIDIxMCwgMjQ0LCAyMzcsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIAotICAgIDIxOCwgMjM0LCAyMjAsIDEsIDI0NCwgMTU4LCAyMjksIDE2OSwgMjQ0LCAxNTgsIDIxNSwgMTU4LCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxNTksIDIsIDI0OSwgMTY4LCAyMTgsIDE5MiwgMjI2LCA2NywgMjQ0LCAxNTgsIDI0OSwgMTQxLCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxNTksIDIxNywgOTEsIDExOCwgMjM0LCA3MiwgMjM0LCA3MSwgMjQ0LCAxNTksIDIsIDI0OSwgMTkzLCAyNDQsIDIzNywgCi0gICAgMjQ0LCAxNTksIDIsIDIxOSwgMzEsIDIxNiwgMjMzLCAyNCwgMjEzLCAyMTgsIDI0NCwgMjM5LCAyNDQsIDE1OSwgMiwgMjE5LCAKLSAgICAzMSwgMjE2LCAyMzMsIDI0LCAyMTcsIDU4LCAyNDQsIDIzNywgMjQ3LCAxNDQsIDI0NCwgMTU4LCAyNTQsIDE3LCAyNDQsIAotICAgIDE1OCwgMjI1LCAxMDcsIDI0NCwgMTU4LCAyNDksIDU2LCAyNDQsIDE1OCwgMjI2LCA0NiwgMjQ0LCAxNTgsIDI0NCwgMTU5LCAKLSAgICAyLCAyMzIsIDE3OSwgNjUsIDIxNiwgMTYyLCAyNDcsIDE0NCwgMjUxLCAxNywgMjIzLCAyMzgsIDI0NCwgMTU4LCAyNDQsIAotICAgIDEyMSwgMjQ0LCAxNTgsIDIxNCwgNCwgMjQ0LCAxNTgsIDIyMCwgMTksIDI0NCwgMTU4LCAyMTcsIDI0LCAyNDQsIDE1OCwgCi0gICAgMjMyLCAxNjksIDI0OSwgNTYsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyNDksIAotICAgIDE2OCwgMjE4LCAxOTIsIDI0NCwgMTU5LCAyMjIsIDEwOSwgMjM1LCAyNTIsIDI0NCwgMTIyLCAyNTMsIDEyOSwgMjQ0LCAKLSAgICAxNTgsIDI0NCwgMTgsIDI0NCwgMTU4LCAyNDcsIDExNywgMjQ0LCAxNTgsIDI0NCwgMTU5LCAyMTMsIDIxNiwgMjMwLCAxODAsIAotICAgIDI0NCwgMTU5LCAyLCAyMzEsIDE0OSwgMjMxLCAyMDcsIDI0MiwgMTAyLCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIyMCwgMiwgCi0gICAgMjQ0LCAyMzcsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjE3LCAyMjIsIDY1LCAyMzUsIDU2LCAyMjAsIDIsIDI1MCwgMTU3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODAsIDIyMCwgMiwgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyNDEsIDIxMCwgCi0gICAgMjQ0LCAyMzcsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjEzLCAxODQsIDIyMCwgMywgMjM0LCA3MSwgMjUwLCAxNTcsIAotICAgIDI0NCwgMTU5LCAyLCAyNDksIDE5MywgMjQ0LCAyMzcsIDIyNSwgMTA3LCAyNTAsIDE1NywgMjQ0LCAxNTgsIDI0OSwgNTYsIAotICAgIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjE0LCA0LCAyNTAsIDE1NywgMjQ0LCAxNTgsIDI0NCwgMTU5LCAyLCAyMjgsIDE4NiwgCi0gICAgMjQyLCAxMzksIDI0MywgMTAsIDI0NCwgMTU5LCAyLCAyMjcsIDgxLCAyNDMsIDEwLCAyMjYsIDQ0LCAyNTEsIDk0LCAyNDgsIAotICAgIDI2LCAyMjIsIDg4LCAyMzAsIDIxNSwgMjQxLCAyMTMsIDIzMCwgMjE1LCAyMTksIDE5NiwgMjMwLCAyMTUsIDI0MSwgMjQ0LCAKLSAgICAyMjYsIDQ0LCAyMjQsIDQ3LCAxMjIsIDI0MSwgMjU0LCAyMjYsIDQ0LCAyMjQsIDQ3LCAyNTEsIDEwNCwgMjQxLCAyNTAsIAotICAgIDIzNSwgMjUyLCAyNTAsIDExMywgMjI2LCA0NCwgMjQzLCAyMDgsIDIyNiwgNDQsIDIsIDIyNSwgMTA3LCAyNDQsIDE1OCwgCi0gICAgMjI2LCA0NCwgMiwgMjQ0LCAxMCwgMjQxLCAyNDksIDIyMywgMTA0LCAyNDEsIDE5OCwgMjE5LCA4MywgMjMyLCAyMDIsIAotICAgIDIyNCwgNTMsIDI1MCwgMTc2LCAyNDEsIDE0OCwgMjE2LCAyMDUsIDI0MSwgMTQ4LCAyMTYsIDIwNiwgMiwgMjUxLCA0MywgCi0gICAgMjI4LCAxNjQsIDIxNiwgMjA1LCAyMzEsIDk5LCAxNzcsIDIyNCwgNTQsIDIxOSwgODksIDIxNiwgMjAzLCAyMTYsIDIwNCwgCi0gICAgMjUwLCAxNzYsIDI1MSwgMjEsIDIyNywgNjAsIDI1MSwgMjEsIDIxNiwgMTU5LCAyNTEsIDIyLCAyMTksIDY5LCAyMzEsIDAsIAotICAgIDI1NCwgMzksIDI0NCwgNjYsIDI0NSwgOTUsIDIyNSwgMTMzLCAyNTAsIDE3NiwgMjI3LCA2MCwgMjI1LCAxMzMsIDI1MCwgCi0gICAgMTc2LCAyMTcsIDIzOSwgMjI3LCA2MCwgMjE3LCAyMzksIDI1MywgOTYsIDIyNywgNjAsIDI1MywgOTYsIDIyNCwgMTEsIAotICAgIDIxNCwgMjI0LCAyNDgsIDksIDIxNiwgMTUwLCAyNTMsIDE1NywgMjMyLCAxNzIsIDIxNiwgMjExLCAyMzAsIDIwOSwgMjMwLCAKLSAgICAxODYsIDIyNCwgNTIsIDIxOCwgMjA3LCAyMjQsIDUyLCAyMzAsIDE4NiwgMjUwLCAyMTQsIDI1NCwgMTM0LCAyMTYsIDIwMiwgCi0gICAgMjIwLCAxOTYsIDIyMywgODQsIDIxOSwgMTg5LCAxOTksIDIxNiwgMjA5LCAyMzMsIDIsIDcxLCAyMTYsIDIwOSwgMjMzLCAyLCAKLSAgICAyNDksIDEyOSwgNTIsIDIyNSwgMTMzLCAyNTAsIDE2MSwgMjIzLCAxOTcsIDIzMywgMiwgMjE2LCAxODAsIDI0NCwgNDMsIAotICAgIDIyNywgNjMsIDIyNSwgMTE4LCAyNDcsIDc3LCAyMjgsIDE4NiwgMjQ1LCA4NCwgNTIsIDIyMCwgMCwgODcsIDIyOCwgMTg2LCAKLSAgICAyMjAsIDAsIDg3LCAyMjUsIDksIDIzMiwgMjIyLCAyMzUsIDI1MiwgMjM1LCAxNTUsIDIyNSwgMTczLCA4NywgMjQ3LCAxMDAsIAotICAgIDIyOCwgMTYzLCAyMzIsIDIyMiwgODcsIDIyNSwgMTEyLCAyMTQsIDI1LCA4NywgMjI4LCAxNzcsIDIxNCwgMjUsIDg3LCAKLSAgICAyNTEsIDE4MCwgMjI4LCAxODYsIDI1MSwgMTc5LCAyNTEsIDE3OCwgMjMwLCAxODYsIDI1MSwgMTc4LCAyMjYsIDg4LCAyMjgsIAotICAgIDE4NiwgMjI2LCA4NywgMjUwLCAzNywgMjQ5LCA2NCwgMjMxLCAxMjAsIDg3LCAyMTMsIDIwNSwgODcsIDIyMywgMjExLCAKLSAgICAyNTIsIDEwNCwgODcsIDIxNiwgMjQ4LCAyMTQsIDI1LCAyNDksIDE5MCwgMjIwLCAxNTgsIDI1MiwgMzgsIDI1MiwgMzYsIAotICAgIDIyNiwgMTE1LCAyNDksIDExNiwgMjQ5LCAyOCwgMjUyLCA4NywgMjQ5LCAyMTUsIDQyLCAyMzIsIDE0OCwgMTA0LCAxNiwgCi0gICAgMzEsIDIyNCwgMTQ4LCAxMDQsIDE2LCAzMSwgMjU0LCAxMDAsIDEwNCwgMTYsIDMxLCAyNDQsIDY1LCAxMDQsIDE2LCAzMSwgCi0gICAgMjQ1LCAxNzksIDEwNCwgMTYsIDMxLCAyMTQsIDI0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTMsIDEwNCwgMTYsIDMxLCAyNTMsIAotICAgIDIxNCwgMjIzLCAyNTUsIDEwNCwgMTYsIDMxLCAyNTMsIDIxNCwgMjIzLCAyNTQsIDEwNCwgMTYsIDMxLCAyNTMsIDIxNCwgCi0gICAgMjE0LCAxMjQsIDEwNCwgMTYsIDMxLCAyNTMsIDIxNCwgMjE0LCAxMjMsIDEwNCwgMTYsIDMxLCAyMTQsIDEzOCwgMTA0LCAKLSAgICAxNiwgMzEsIDIxNCwgMTM3LCAxMDQsIDE2LCAzMSwgMjE0LCAxMzYsIDEwNCwgMTYsIDMxLCAyMTgsIDI0NSwgMTA0LCAxNiwgCi0gICAgMzEsIDIyNiwgMSwgMjE4LCAyNDUsIDEwNCwgMTYsIDMxLCA4MywgMjE4LCAyNDUsIDEwNCwgMTYsIDMxLCAyMzEsIDExOSwgCi0gICAgMjE5LCAxNiwgMTA0LCAxNiwgMzEsIDIzMSwgMTE5LCAyMTksIDE1LCAxMDQsIDE2LCAzMSwgMjMxLCAxMTksIDIxOSwgMTQsIAotICAgIDEwNCwgMTYsIDMxLCAyNDksIDIzMSwgMTA0LCAxNiwgMzEsIDIyMiwgMTcyLCAxMDQsIDE2LCAzMSwgMjI5LCAxOSwgMTA0LCAKLSAgICAxNiwgMzEsIDIxNCwgMTIyLCAxMDQsIDE2LCAzMSwgMjE0LCAxMjEsIDEwNCwgMTYsIDMxLCAyMjMsIDEwNSwgMjIyLCAxNzIsIAotICAgIDEwNCwgMTYsIDMxLCAyMjMsIDEwNSwgMjIyLCAxNzEsIDEwNCwgMTYsIDMxLCAyNDIsIDE0MiwgMTA0LCAxNiwgMzEsIDIyMCwgCi0gICAgOTIsIDEwNCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIzNSwgMTc1LCAyMjcsIDE5LCAxMDQsIAotICAgIDE2LCAzMSwgMjQ5LCA3NCwgNjUsIDIzNSwgMTc0LCAxMDQsIDE2LCAzMSwgMjIzLCAyNTEsIDY1LCAyMzUsIDE3NCwgMTA0LCAKLSAgICAxNiwgMzEsIDI0OSwgMTA3LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgMjM1LCAxNzMsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAKLSAgICAyMTksIDE3LCA2NSwgMjQ5LCAxMDYsIDEwNCwgMTYsIDMxLCAyNDksIDc0LCA2NSwgMjQ5LCAxMDYsIDEwNCwgMTYsIDMxLCAKLSAgICAyNDksIDc0LCA2NSwgMjQ5LCAxMDUsIDEwNCwgMTYsIDMxLCAyNDksIDEwNywgMjUzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMjIsIAotICAgIDE3MywgNjUsIDI0OSwgMTA3LCAyNTMsIDI1MCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIDY1LCAyMjIsIDE3MywgNjUsIDI0OSwgCi0gICAgMTA2LCAxMDQsIDE2LCAzMSwgMjE0LCAyMjAsIDEwNCwgMTYsIDMxLCAyMTcsIDM3LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjMzLCA4MSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDI1MywgMjQ5LCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgMjE5LCAxNywgCi0gICAgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjIyLCAxNzMsIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIAotICAgIDY1LCAyMjIsIDE3MywgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjE0LCAxMzksIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgCi0gICAgMzEsIDIyMywgMjUxLCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMjMsIDI1MSwgNjUsIDI1MywgMjQ3LCAxMDQsIDE2LCAKLSAgICAzMSwgMjIzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMjMsIDI0OSwgMTA0LCAxNiwgMzEsIDIyMywgMjQ4LCAxMDQsIDE2LCAzMSwgCi0gICAgMjIzLCAyNDcsIDEwNCwgMTYsIDMxLCAyNTQsIDY2LCAxMDQsIDE2LCAzMSwgMjU0LCA2NSwgMTA0LCAxNiwgMzEsIDIzMSwgCi0gICAgMjI2LCAxMDQsIDE2LCAzMSwgMjIyLCAxNzgsIDEwNCwgMTYsIDMxLCAyNTMsIDE2MSwgMTA0LCAxNiwgMzEsIDIyNCwgMTgsIAotICAgIDEwNCwgMTYsIDMxLCAyMjQsIDE3LCAxMDQsIDE2LCAzMSwgMjUzLCA5OSwgMTA0LCAxNiwgMzEsIDI1MSwgMTUyLCAyMjcsIAotICAgIDIwLCAxMDQsIDE2LCAzMSwgMjE4LCAwLCAxMDQsIDE2LCAzMSwgMjE3LCAyNTUsIDEwNCwgMTYsIDMxLCAyMjQsIDE1MywgCi0gICAgMjMyLCAyNTEsIDEwNCwgMTYsIDMxLCAyNTEsIDEwOSwgMTA0LCAxNiwgMzEsIDI1MSwgMTA4LCAxMDQsIDE2LCAzMSwgMjUxLCAKLSAgICAxMDcsIDEwNCwgMTYsIDMxLCAyNTQsIDQ3LCAxMDQsIDE2LCAzMSwgMjI3LCA4NCwgMTA0LCAxNiwgMzEsIDIxOSwgMTgwLCAKLSAgICAxMDQsIDE2LCAzMSwgMjE3LCAzNSwgMTA0LCAxNiwgMzEsIDI0MiwgNzcsIDEwNCwgMTYsIDMxLCAyMTQsIDEyLCAxMDQsIAotICAgIDE2LCAzMSwgMjI1LCAxMDYsIDEwNCwgMTYsIDMxLCAyNTAsIDIwMiwgMTA0LCAxNiwgMzEsIDIxNiwgNTAsIDEwNCwgMTYsIAotICAgIDMxLCAyNTAsIDE3OCwgMjMwLCAxOTIsIDEwNCwgMTYsIDMxLCAyMjIsIDEyMCwgNjUsIDIzNSwgNTgsIDEwNCwgMTYsIDMxLCAKLSAgICAyNTAsIDIxMSwgMTA0LCAxNiwgMzEsIDIxNiwgMTc3LCAxMDQsIDE2LCAzMSwgMjE5LCA5MywgMjE2LCAxNzcsIDEwNCwgMTYsIAotICAgIDMxLCAyMzIsIDIwMSwgMTA0LCAxNiwgMzEsIDIxOSwgMjQwLCAxMDQsIDE2LCAzMSwgMjE1LCAxMTMsIDEwNCwgMTYsIDMxLCAKLSAgICAyNDAsIDIzMywgMjQ2LCAxOSwgMTA0LCAxNiwgMzEsIDI1MywgMTQyLCAxMDQsIDE2LCAzMSwgMjI1LCAxMTQsIDI1MywgCi0gICAgMTQyLCAxMDQsIDE2LCAzMSwgMjUxLCA3MCwgMTA0LCAxNiwgMzEsIDIyNSwgMTA1LCAyNTEsIDcwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjU0LCA0NCwgMTA0LCAxNiwgMzEsIDIxOSwgNTcsIDIxOCwgMjI2LCAyMTksIDU2LCAxMDQsIDE2LCAzMSwgMjE5LCA1NywgCi0gICAgMjE4LCAyMjYsIDIxOSwgNTUsIDEwNCwgMTYsIDMxLCAyMTksIDEzLCAxMDQsIDE2LCAzMSwgMjI1LCA4MCwgMTA0LCAxNiwgCi0gICAgMzEsIDI0NywgMTMzLCAxMDQsIDE2LCAzMSwgMjQ3LCAxMzUsIDEwNCwgMTYsIDMxLCAyNDcsIDEzNCwgMTA0LCAxNiwgMzEsIAotICAgIDIyNSwgMTcsIDEwNCwgMTYsIDMxLCAyMjUsIDcsIDEwNCwgMTYsIDMxLCAyNDksIDYyLCAxMDQsIDE2LCAzMSwgMjQ5LCA2MSwgCi0gICAgMTA0LCAxNiwgMzEsIDI0OSwgNjAsIDEwNCwgMTYsIDMxLCAyNDksIDU5LCAxMDQsIDE2LCAzMSwgMjQ5LCA1OCwgMTA0LCAKLSAgICAxNiwgMzEsIDI1NCwgNzcsIDEwNCwgMTYsIDMxLCAyNTIsIDM5LCA2NSwgMjMxLCAyMTIsIDEwNCwgMTYsIDMxLCAyNTIsIAotICAgIDM5LCA2NSwgMjE0LCAyNDksIDEwNCwgMTYsIDMxLCAyMjMsIDIwOSwgMTA0LCAxNiwgMzEsIDI0MCwgMjI1LCAxMDQsIDE2LCAKLSAgICAzMSwgMjI5LCA0MywgMTA0LCAxNiwgMzEsIDI0OCwgOTEsIDEwNCwgMTYsIDMxLCAyMzAsIDIwNCwgMTA0LCAxNiwgMzEsIAotICAgIDE1MSwgMjQ2LCA0OSwgMTA0LCAxNiwgMzEsIDE1MSwgMjI3LCAwLCA5LCAxMywgMjQwLCA5NSwgOSwgMTMsIDI0MCwgOTQsIAotICAgIDksIDEzLCAyNDAsIDkzLCA5LCAxMywgMjQwLCA5MiwgOSwgMTMsIDI0MCwgOTEsIDksIDEzLCAyNDAsIDkwLCA5LCAxMywgCi0gICAgMjQwLCA4OSwgOSwgMTMsIDI0MCwgODgsIDksIDEzLCAyNDAsIDg3LCA5LCAxMywgMjQwLCA4NiwgOSwgMTMsIDI0MCwgODUsIAotICAgIDksIDEzLCAyNDAsIDg0LCA5LCAxMywgMjQwLCA4MywgOSwgMTMsIDI0MCwgODIsIDksIDEzLCAyNDAsIDgxLCA5LCAxMywgCi0gICAgMjQwLCA4MCwgOSwgMTMsIDI0MCwgNzksIDksIDEzLCAyNDAsIDc4LCA5LCAxMywgMjQwLCA3NywgOSwgMTMsIDI0MCwgNzYsIAotICAgIDksIDEzLCAyNDAsIDc1LCA5LCAxMywgMjQwLCA3NCwgOSwgMTMsIDI0MCwgNzMsIDksIDEzLCAyNDAsIDcyLCA5LCAxMywgCi0gICAgMjQwLCA3MSwgOSwgMTMsIDI0MCwgNzAsIDksIDEzLCAyNDAsIDY5LCA5LCAxMywgMjQwLCA2OCwgOSwgMTMsIDI0MCwgNjcsIAotICAgIDksIDEzLCAyNDAsIDY2LCA5LCAxMywgMjQwLCA2NSwgOSwgMTMsIDI0MCwgNjQsIDksIDEzLCAyNDAsIDYzLCA5LCAxMywgCi0gICAgMjQwLCA2MiwgOSwgMTMsIDI0MCwgNjEsIDksIDEzLCAyNDAsIDYwLCA5LCAxMywgMjQwLCA1OSwgOSwgMTMsIDI0MCwgNTgsIAotICAgIDksIDEzLCAyNDAsIDU3LCA5LCAxMywgMjQwLCA1NiwgOSwgMTMsIDI0MCwgNTUsIDksIDEzLCAyNDAsIDU0LCA5LCAxMywgCi0gICAgMjQwLCA1MywgOSwgMTMsIDI0MCwgNTIsIDksIDEzLCAyNDAsIDUxLCA5LCAxMywgMjQwLCA1MCwgOSwgMTMsIDI0MCwgNDksIAotICAgIDksIDEzLCAyNDAsIDQ4LCA5LCAxMywgMjQwLCA0NywgOSwgMTMsIDI0MCwgNDYsIDksIDEzLCAyNDAsIDQ1LCA5LCAxMywgCi0gICAgMjQwLCA0NCwgOSwgMTMsIDI0MCwgNDMsIDksIDEzLCAyNDAsIDQyLCA5LCAxMywgMjQwLCA0MSwgOSwgMTMsIDI0MCwgNDAsIAotICAgIDksIDEzLCAyNDAsIDM5LCA5LCAxMywgMjQwLCAzOCwgOSwgMTMsIDI0MCwgMzcsIDksIDEzLCAyNDAsIDM2LCA5LCAxMywgCi0gICAgMjQwLCAzNSwgOSwgMTMsIDI0MCwgMzQsIDksIDEzLCAyNDAsIDMzLCA5LCAxMywgMjQwLCAzMiwgOSwgMTMsIDI0MCwgMzEsIAotICAgIDksIDEzLCAyNDAsIDMwLCA5LCAxMywgMjQwLCAyOSwgOSwgMTMsIDI0MCwgMjgsIDksIDEzLCAyNDAsIDI3LCA5LCAxMywgCi0gICAgMjQwLCAyNiwgOSwgMTMsIDI0MCwgMjUsIDksIDEzLCAyNDAsIDI0LCA5LCAxMywgMjQwLCAyMywgOSwgMTMsIDI0MCwgMjIsIAotICAgIDksIDEzLCAyNDAsIDIxLCA5LCAxMywgMjQwLCAyMCwgOSwgMTMsIDI0MCwgMTksIDksIDEzLCAyNDAsIDE4LCA5LCAxMywgCi0gICAgMjQwLCAxNywgOSwgMTMsIDI0MCwgMTYsIDksIDEzLCAyNDAsIDE1LCA5LCAxMywgMjQwLCAxNCwgOSwgMTMsIDI0MCwgMTMsIAotICAgIDksIDEzLCAyNDAsIDEyLCA5LCAxMywgMjQwLCAxMSwgOSwgMTMsIDI0MCwgMTAsIDksIDEzLCAyNDAsIDksIDksIDEzLCAKLSAgICAyNDAsIDgsIDksIDEzLCAyNDAsIDcsIDksIDEzLCAyNDAsIDYsIDksIDEzLCAyNDAsIDUsIDksIDEzLCAyNDAsIDQsIDksIAotICAgIDEzLCAyNDAsIDMsIDksIDEzLCAyNDAsIDIsIDksIDEzLCAyNDAsIDEsIDksIDEzLCAyNDAsIDAsIDksIDEzLCAyMzksIDI1NSwgCi0gICAgOSwgMTMsIDIzOSwgMjU0LCA5LCAxMywgMjM5LCAyNTMsIDksIDEzLCAyMzksIDI1MiwgOSwgMTMsIDIzOSwgMjUxLCA5LCAKLSAgICAxMywgMjM5LCAyNTAsIDksIDEzLCAyMzksIDI0OSwgOSwgMTMsIDIzOSwgMjQ4LCA5LCAxMywgMjM5LCAyNDcsIDksIDEzLCAKLSAgICAyMzksIDI0NiwgOSwgMTMsIDIzOSwgMjQ1LCA5LCAxMywgMjM5LCAyNDQsIDksIDEzLCAyMzksIDI0MywgOSwgMTMsIDIzOSwgCi0gICAgMjQyLCA5LCAxMywgMjM5LCAyNDEsIDksIDEzLCAyMzksIDI0MCwgOSwgMTMsIDIzOSwgMjM5LCA5LCAxMywgMjM5LCAyMzgsIAotICAgIDksIDEzLCAyMzksIDIzNywgOSwgMTMsIDIzOSwgMjM2LCA5LCAxMywgMjM5LCAyMzUsIDksIDEzLCAyMzksIDIzNCwgOSwgCi0gICAgMTMsIDIzOSwgMjMzLCA5LCAxMywgMjM5LCAyMzIsIDksIDEzLCAyMzksIDIzMSwgOSwgMTMsIDIzOSwgMjMwLCA5LCAxMywgCi0gICAgMjM5LCAyMjksIDksIDEzLCAyMzksIDIyOCwgOSwgMTMsIDIzOSwgMjI3LCA5LCAxMywgMjM5LCAyMjYsIDksIDEzLCAyMzksIAotICAgIDIyNSwgOSwgMTMsIDIzOSwgMjI0LCA5LCAxMywgMjM5LCAyMjMsIDksIDEzLCAyMzksIDIyMiwgOSwgMTMsIDIzOSwgMjIxLCAKLSAgICA5LCAxMywgMjM5LCAyMjAsIDksIDEzLCAyMzksIDIxOSwgOSwgMTMsIDIzOSwgMjE4LCA5LCAxMywgMjM5LCAyMTcsIDksIAotICAgIDEzLCAyMzksIDIxNiwgOSwgMTMsIDIzOSwgMjE1LCA5LCAxMywgMjM5LCAyMTQsIDksIDEzLCAyMzksIDIxMywgOSwgMTMsIAotICAgIDIzOSwgMjEyLCA5LCAxMywgMjM5LCAyMTEsIDksIDEzLCAyMzksIDIxMCwgOSwgMTMsIDIzOSwgMjA5LCA5LCAxMywgMjM5LCAKLSAgICAyMDgsIDksIDEzLCAyMzksIDIwNywgOSwgMTMsIDIzOSwgMjA2LCA5LCAxMywgMjM5LCAyMDUsIDksIDEzLCAyMzksIDIwNCwgCi0gICAgOSwgMTMsIDIzOSwgMjAzLCA5LCAxMywgMjM5LCAyMDIsIDksIDEzLCAyMzksIDIwMSwgOSwgMTMsIDIzOSwgMjAwLCA5LCAKLSAgICAxMywgMjM5LCAxOTksIDksIDEzLCAyMzksIDE5OCwgOSwgMTMsIDIzOSwgMTk3LCA5LCAxMywgMjM5LCAxOTYsIDksIDEzLCAKLSAgICAyMzksIDE5NSwgOSwgMTMsIDIzOSwgMTk0LCA5LCAxMywgMjM5LCAxOTMsIDksIDEzLCAyMzksIDE5MiwgOSwgMTMsIDIzOSwgCi0gICAgMTkxLCA5LCAxMywgMjM5LCAxOTAsIDksIDEzLCAyMzksIDE4OSwgOSwgMTMsIDIzOSwgMTg4LCA5LCAxMywgMjM5LCAxODcsIAotICAgIDksIDEzLCAyMzksIDE4NiwgOSwgMTMsIDIzOSwgMTg1LCA5LCAxMywgMjM5LCAxODQsIDksIDEzLCAyMzksIDE4MywgOSwgCi0gICAgMTMsIDIzOSwgMTgyLCA5LCAxMywgMjM5LCAxODEsIDksIDEzLCAyMzksIDE4MCwgOSwgMTMsIDIzOSwgMTc5LCA5LCAxMywgCi0gICAgMjM5LCAxNzgsIDksIDEzLCAyMzksIDE3NywgOSwgMTMsIDIzOSwgMTc2LCA5LCAxMywgMjM5LCAxNzUsIDksIDEzLCAyMzksIAotICAgIDE3NCwgOSwgMTMsIDIzOSwgMTczLCA5LCAxMywgMjM5LCAxNzIsIDksIDEzLCAyMzksIDE3MSwgOSwgMTMsIDIzOSwgMTcwLCAKLSAgICA5LCAxMywgMjM5LCAxNjksIDksIDEzLCAyMzksIDE2OCwgOSwgMTMsIDIzOSwgMTY3LCA5LCAxMywgMjM5LCAxNjYsIDksIAotICAgIDEzLCAyMzksIDE2NSwgOSwgMTMsIDIzOSwgMTY0LCA5LCAxMywgMjM5LCAxNjMsIDksIDEzLCAyMzksIDE2MiwgOSwgMTMsIAotICAgIDIzOSwgMTYxLCA5LCAxMywgMjM5LCAxNjAsIDksIDEzLCAyMzksIDE1OSwgOSwgMTMsIDIzOSwgMTU4LCA5LCAxMywgMjM5LCAKLSAgICAxNTcsIDksIDEzLCAyMzksIDE1NiwgOSwgMTMsIDIzOSwgMTU1LCA5LCAxMywgMjM5LCAxNTQsIDksIDEzLCAyMzksIDE1MywgCi0gICAgOSwgMTMsIDIzOSwgMTUyLCA5LCAxMywgMjM5LCAxNTEsIDksIDEzLCAyMzksIDE1MCwgOSwgMTMsIDIzOSwgMTQ5LCA5LCAKLSAgICAxMywgMjM5LCAxNDgsIDksIDEzLCAyMzksIDE0NywgOSwgMTMsIDIzOSwgMTQ2LCA5LCAxMywgMjM5LCAxNDUsIDksIDEzLCAKLSAgICAyMzksIDE0NCwgOSwgMTMsIDIzOSwgMTQzLCA5LCAxMywgMjM5LCAxNDIsIDksIDEzLCAyMzksIDE0MSwgOSwgMTMsIDIzOSwgCi0gICAgMTQwLCA5LCAxMywgMjM5LCAxMzksIDksIDEzLCAyMzksIDEzOCwgOSwgMTMsIDIzOSwgMTM3LCA5LCAxMywgMjM5LCAxMzYsIAotICAgIDksIDEzLCAyMzksIDEzNSwgOSwgMTMsIDIzOSwgMTM0LCA5LCAxMywgMjM5LCAxMzMsIDksIDEzLCAyMzksIDEzMiwgOSwgCi0gICAgMTMsIDIzOSwgMTMxLCA5LCAxMywgMjM5LCAxMzAsIDksIDEzLCAyMzksIDEyOSwgOSwgMTMsIDIzOSwgMTI4LCA5LCAxMywgCi0gICAgMjM5LCAxMjcsIDksIDEzLCAyMzksIDEyNiwgOSwgMTMsIDIzOSwgMTI1LCA5LCAxMywgMjM5LCAxMjQsIDksIDEzLCAyMzksIAotICAgIDEyMywgOSwgMTMsIDIzOSwgMTIyLCA5LCAxMywgMjM5LCAxMjEsIDksIDEzLCAyMzksIDEyMCwgOSwgMTMsIDIzOSwgMTE5LCAKLSAgICA5LCAxMywgMjM5LCAxMTgsIDksIDEzLCAyMzksIDExNywgOSwgMTMsIDIzOSwgMTE2LCA5LCAxMywgMjM5LCAxMTUsIDksIAotICAgIDEzLCAyMzksIDExNCwgOSwgMTMsIDIzOSwgMTEzLCA5LCAxMywgMjM5LCAxMTIsIDksIDEzLCAyMzksIDExMSwgOSwgMTMsIAotICAgIDIzOSwgMTEwLCA5LCAxMywgMjM5LCAxMDksIDksIDEzLCAyMzksIDEwOCwgOSwgMTMsIDIzOSwgMTA3LCA5LCAxMywgMjM5LCAKLSAgICAxMDYsIDksIDEzLCAyMzksIDEwNSwgOSwgMTMsIDIzOSwgMTA0LCA5LCAxMywgMjM5LCAxMDMsIDksIDEzLCAyMzksIDEwMiwgCi0gICAgOSwgMTMsIDIzOSwgMTAxLCA5LCAxMywgMjM5LCAxMDAsIDksIDEzLCAyMzksIDk5LCA5LCAxMywgMjM5LCA5OCwgOSwgMTMsIAotICAgIDIzOSwgOTcsIDksIDEzLCAyMzksIDk2LCA5LCAxMywgMjM5LCA5NSwgOSwgMTMsIDIzOSwgOTQsIDksIDEzLCAyMzksIDkzLCAKLSAgICA5LCAxMywgMjM5LCA5MiwgOSwgMTMsIDIzOSwgOTEsIDksIDEzLCAyMzksIDkwLCA5LCAxMywgMjM5LCA4OSwgOSwgMTMsIAotICAgIDIzOSwgODgsIDksIDEzLCAyMzksIDg3LCA5LCAxMywgMjM5LCA4NiwgOSwgMTMsIDIzOSwgODUsIDksIDEzLCAyMzksIDg0LCAKLSAgICA5LCAxMywgMjM5LCA4MywgOSwgMTMsIDIzOSwgODIsIDksIDEzLCAyMzksIDgxLCA5LCAxMywgMjM5LCA4MCwgOSwgMTMsIAotICAgIDIzOSwgNzksIDksIDEzLCAyMzksIDc4LCA5LCAxMywgMjM5LCA3NywgOSwgMTMsIDIzOSwgNzYsIDksIDEzLCAyMzksIDc1LCAKLSAgICA5LCAxMywgMjM5LCA3NCwgOSwgMTMsIDIzOSwgNzMsIDksIDEzLCAyMzksIDcyLCA5LCAxMywgMjM5LCA3MSwgOSwgMTMsIAotICAgIDIzOSwgNzAsIDksIDEzLCAyMzksIDY5LCA5LCAxMywgMjM5LCA2OCwgOSwgMTMsIDIzOSwgNjcsIDksIDEzLCAyMzksIDY2LCAKLSAgICA5LCAxMywgMjM5LCA2NSwgOSwgMTMsIDIzOSwgNjQsIDksIDEzLCAyMzksIDYzLCA5LCAxMywgMjM5LCA2MiwgOSwgMTMsIAotICAgIDIzOSwgNjEsIDksIDEzLCAyMzksIDYwLCA5LCAxMywgMjM5LCA1OSwgOSwgMTMsIDIzOSwgNTgsIDksIDEzLCAyMzksIDU3LCAKLSAgICA5LCAxMywgMjM5LCA1NiwgOSwgMTMsIDIzOSwgNTUsIDksIDEzLCAyMzksIDU0LCA5LCAxMywgMjM5LCA1MywgOSwgMTMsIAotICAgIDIzOSwgNTIsIDksIDEzLCAyMzksIDUxLCA5LCAxMywgMjM5LCA1MCwgOSwgMTMsIDIzOSwgNDksIDksIDEzLCAyMzksIDQ4LCAKLSAgICA5LCAxMywgMjM5LCA0NywgOSwgMTMsIDIzOSwgNDYsIDksIDEzLCAyMzksIDQ1LCA5LCAxMywgMjM5LCA0NCwgOSwgMTMsIAotICAgIDIzOSwgNDMsIDksIDEzLCAyMzksIDQyLCA5LCAxMywgMjM5LCA0MSwgOSwgMTMsIDIzOSwgNDAsIDksIDEzLCAyMzksIDM5LCAKLSAgICA5LCAxMywgMjM5LCAzOCwgOSwgMTMsIDIzOSwgMzcsIDksIDEzLCAyMzksIDM2LCA5LCAxMywgMjM5LCAzNSwgOSwgMTMsIAotICAgIDIzOSwgMzQsIDksIDEzLCAyMzksIDMzLCA5LCAxMywgMjM5LCAzMiwgOSwgMTMsIDIzOSwgMzEsIDksIDEzLCAyMzksIDMwLCAKLSAgICA5LCAxMywgMjM5LCAyOSwgOSwgMTMsIDIzOSwgMjgsIDksIDEzLCAyMzksIDI3LCA5LCAxMywgMjM5LCAyNiwgOSwgMTMsIAotICAgIDIzOSwgMjUsIDksIDEzLCAyMzksIDI0LCA5LCAxMywgMjM5LCAyMywgOSwgMTMsIDIzOSwgMjIsIDksIDEzLCAyMzksIDIxLCAKLSAgICA5LCAxMywgMjM5LCAyMCwgOSwgMTMsIDIzOSwgMTksIDksIDEzLCAyMzksIDE4LCA5LCAxMywgMjM5LCAxNywgOSwgMTMsIAotICAgIDIzOSwgMTYsIDksIDEzLCAyMzksIDE1LCA5LCAxMywgMjM5LCAxNCwgOSwgMTMsIDIzOSwgMTMsIDksIDEzLCAyMzksIDEyLCAKLSAgICA5LCAxMywgMjM5LCAxMSwgOSwgMTMsIDIzOSwgMTAsIDksIDEzLCAyMzksIDksIDksIDEzLCAyMzksIDgsIDksIDEzLCAyMzksIAotICAgIDcsIDksIDEzLCAyMzksIDYsIDksIDEzLCAyMzksIDUsIDksIDEzLCAyMzksIDQsIDksIDEzLCAyMzksIDMsIDksIDEzLCAKLSAgICAyMzksIDIsIDksIDEzLCAyMzksIDEsIDksIDEzLCAyMzksIDAsIDksIDEzLCAyMzgsIDI1NSwgOSwgMTMsIDIzOCwgMjU0LCAKLSAgICA5LCAxMywgMjM4LCAyNTMsIDksIDEzLCAyMzgsIDI1MiwgOSwgMTMsIDIzOCwgMjUxLCA5LCAxMywgMjM4LCAyNTAsIDksIAotICAgIDEzLCAyMzgsIDI0OSwgOSwgMTMsIDIzOCwgMjQ4LCA5LCAxMywgMjM4LCAyNDcsIDksIDEzLCAyMzgsIDI0NiwgOSwgMTMsIAotICAgIDIzOCwgMjQ1LCA5LCAxMywgMjM4LCAyNDQsIDksIDEzLCAyMzgsIDI0MywgOSwgMTMsIDIzOCwgMjQyLCA5LCAxMywgMjM4LCAKLSAgICAyNDEsIDksIDEzLCAyMzgsIDI0MCwgOSwgMTMsIDIzOCwgMjM5LCA5LCAxMywgMjM4LCAyMzgsIDksIDEzLCAyMzgsIDIzNywgCi0gICAgOSwgMTMsIDIzOCwgMjM2LCA5LCAxMywgMjM4LCAyMzUsIDksIDEzLCAyMzgsIDIzNCwgOSwgMTMsIDIzOCwgMjMzLCA5LCAKLSAgICAxMywgMjM4LCAyMzIsIDksIDEzLCAyMzgsIDIzMSwgOSwgMTMsIDIzOCwgMjMwLCA5LCAxMywgMjM4LCAyMjksIDksIDEzLCAKLSAgICAyMzgsIDIyOCwgOSwgMTMsIDIzOCwgMjI3LCA5LCAxMywgMjM4LCAyMjYsIDksIDEzLCAyMzgsIDIyNSwgOSwgMTMsIDIzOCwgCi0gICAgMjI0LCA5LCAxMywgMjM4LCAyMjMsIDksIDEzLCAyMzgsIDIyMiwgOSwgMTMsIDIzOCwgMjIxLCA5LCAxMywgMjM4LCAyMjAsIAotICAgIDksIDEzLCAyMzgsIDIxOSwgOSwgMTMsIDIzOCwgMjE4LCA5LCAxMywgMjM4LCAyMTcsIDksIDEzLCAyMzgsIDIxNiwgOSwgCi0gICAgMTMsIDIzOCwgMjE1LCA5LCAxMywgMjM4LCAyMTQsIDksIDEzLCAyMzgsIDIxMywgOSwgMTMsIDIzOCwgMjEyLCA5LCAxMywgCi0gICAgMjM4LCAyMTEsIDksIDEzLCAyMzgsIDIxMCwgOSwgMTMsIDIzOCwgMjA5LCA5LCAxMywgMjM4LCAyMDgsIDksIDEzLCAyMzgsIAotICAgIDIwNywgOSwgMTMsIDIzOCwgMjA2LCA5LCAxMywgMjM4LCAyMDUsIDksIDEzLCAyMzgsIDIwNCwgOSwgMTMsIDIzOCwgMjAzLCAKLSAgICA5LCAxMywgMjM4LCAyMDIsIDksIDEzLCAyMzgsIDIwMSwgOSwgMTMsIDIzOCwgMjAwLCA5LCAxMywgMjM4LCAxOTksIDksIAotICAgIDEzLCAyMzgsIDE5OCwgOSwgMTMsIDIzOCwgMTk3LCA5LCAxMywgMjM4LCAxOTYsIDksIDEzLCAyMzgsIDE5NSwgOSwgMTMsIAotICAgIDIzOCwgMTk0LCA5LCAxMywgMjM4LCAxOTMsIDksIDEzLCAyMzgsIDE5MiwgOSwgMTMsIDIzOCwgMTkxLCA5LCAxMywgMjM4LCAKLSAgICAxOTAsIDksIDEzLCAyMzgsIDE4OSwgOSwgMTMsIDIzOCwgMTg4LCA5LCAxMywgMjM4LCAxODcsIDksIDEzLCAyMzgsIDE4NiwgCi0gICAgOSwgMTMsIDIzOCwgMTg1LCA5LCAxMywgMjM4LCAxODQsIDksIDEzLCAyMzgsIDE4MywgOSwgMTMsIDIzOCwgMTgyLCA5LCAKLSAgICAxMywgMjM4LCAxODEsIDksIDEzLCAyMzgsIDE4MCwgOSwgMTMsIDIzOCwgMTc5LCA5LCAxMywgMjM4LCAxNzgsIDksIDEzLCAKLSAgICAyMzgsIDE3NywgOSwgMTMsIDIzOCwgMTc2LCA5LCAxMywgMjM4LCAxNzUsIDksIDEzLCAyMzgsIDE3NCwgOSwgMTMsIDIzOCwgCi0gICAgMTczLCA5LCAxMywgMjM4LCAxNzIsIDksIDEzLCAyMzgsIDE3MSwgOSwgMTMsIDIzOCwgMTcwLCA5LCAxMywgMjM4LCAxNjksIAotICAgIDksIDEzLCAyMzgsIDE2OCwgOSwgMTMsIDIzOCwgMTY3LCA5LCAxMywgMjM4LCAxNjYsIDksIDEzLCAyMzgsIDE2NSwgOSwgCi0gICAgMTMsIDIzOCwgMTY0LCA5LCAxMywgMjM4LCAxNjMsIDksIDEzLCAyMzgsIDE2MiwgOSwgMTMsIDIzOCwgMTYxLCA5LCAxMywgCi0gICAgMjM4LCAxNjAsIDksIDEzLCAyMzgsIDE1OSwgOSwgMTMsIDIzOCwgMTU4LCA5LCAxMywgMjM4LCAxNTcsIDksIDEzLCAyMzgsIAotICAgIDE1NiwgOSwgMTMsIDIzOCwgMTU1LCA5LCAxMywgMjM4LCAxNTQsIDksIDEzLCAyMzgsIDE1MywgOSwgMTMsIDIzOCwgMTUyLCAKLSAgICA5LCAxMywgMjM4LCAxNTEsIDksIDEzLCAyMzgsIDE1MCwgOSwgMTMsIDIzOCwgMTQ5LCA5LCAxMywgMjM4LCAxNDgsIDksIAotICAgIDEzLCAyMzgsIDE0NywgOSwgMTMsIDIzOCwgMTQ2LCA5LCAxMywgMjM4LCAxNDUsIDksIDEzLCAyMzgsIDE0NCwgOSwgMTMsIAotICAgIDIzOCwgMTQzLCA5LCAxMywgMjM4LCAxNDIsIDksIDEzLCAyMzgsIDE0MSwgOSwgMTMsIDIzOCwgMTQwLCA5LCAxMywgMjM4LCAKLSAgICAxMzksIDksIDEzLCAyMzgsIDEzOCwgOSwgMTMsIDIzOCwgMTM3LCA5LCAxMywgMjM4LCAxMzYsIDksIDEzLCAyMzgsIDEzNSwgCi0gICAgOSwgMTMsIDIzOCwgMTM0LCA5LCAxMywgMjM4LCAxMzMsIDksIDEzLCAyMzgsIDEzMiwgOSwgMTMsIDIzOCwgMTMxLCA5LCAKLSAgICAxMywgMjM4LCAxMzAsIDksIDEzLCAyMzgsIDEyOSwgOSwgMTMsIDIzOCwgMTI4LCA5LCAxMywgMjM4LCAxMjcsIDksIDEzLCAKLSAgICAyMzgsIDEyNiwgOSwgMTMsIDIzOCwgMTI1LCA5LCAxMywgMjM4LCAxMjQsIDksIDEzLCAyMzgsIDEyMywgOSwgMTMsIDIzOCwgCi0gICAgMTIyLCA5LCAxMywgMjM4LCAxMjEsIDksIDEzLCAyMzgsIDEyMCwgOSwgMTMsIDIzOCwgMTE5LCA5LCAxMywgMjM4LCAxMTgsIAotICAgIDksIDEzLCAyMzgsIDExNywgOSwgMTMsIDIzOCwgMTE2LCA5LCAxMywgMjM4LCAxMTUsIDksIDEzLCAyMzgsIDExNCwgOSwgCi0gICAgMTMsIDIzOCwgMTEzLCA5LCAxMywgMjM4LCAxMTIsIDksIDEzLCAyMzgsIDExMSwgOSwgMTMsIDIzOCwgMTEwLCA5LCAxMywgCi0gICAgMjM4LCAxMDksIDksIDEzLCAyMzgsIDEwOCwgOSwgMTMsIDIzOCwgMTA3LCA5LCAxMywgMjM4LCAxMDYsIDksIDEzLCAyMzgsIAotICAgIDEwNSwgOSwgMTMsIDIzOCwgMTA0LCA5LCAxMywgMjM4LCAxMDMsIDksIDEzLCAyMzgsIDEwMiwgOSwgMTMsIDIzOCwgMTAxLCAKLSAgICA5LCAxMywgMjM4LCAxMDAsIDksIDEzLCAyMzgsIDk5LCA5LCAxMywgMjM4LCA5OCwgOSwgMTMsIDIzOCwgOTcsIDksIDEzLCAKLSAgICAyMzgsIDk2LCA5LCAxMywgMjM4LCA5NSwgOSwgMTMsIDIzOCwgOTQsIDksIDEzLCAyMzgsIDkzLCA5LCAxMywgMjM4LCA5MiwgCi0gICAgOSwgMTMsIDIzOCwgOTEsIDksIDEzLCAyMzgsIDkwLCA5LCAxMywgMjM4LCA4OSwgOSwgMTMsIDIzOCwgODgsIDksIDEzLCAKLSAgICAyMzgsIDg3LCA5LCAxMywgMjM4LCA4NiwgOSwgMTMsIDIzOCwgODUsIDksIDEzLCAyMzgsIDg0LCA5LCAxMywgMjM4LCA4MywgCi0gICAgOSwgMTMsIDIzOCwgODIsIDksIDEzLCAyMzgsIDgxLCA5LCAxMywgMjM4LCA4MCwgOSwgMTMsIDIzOCwgNzksIDksIDEzLCAKLSAgICAyMzgsIDc4LCA5LCAxMywgMjM4LCA3NywgOSwgMTMsIDIzOCwgNzYsIDksIDEzLCAyMzgsIDc1LCA5LCAxMywgMjM4LCA3NCwgCi0gICAgOSwgMTMsIDIzOCwgNzMsIDksIDEzLCAyMzgsIDcyLCA5LCAxMywgMjM4LCA3MSwgOSwgMTMsIDIzOCwgNzAsIDksIDEzLCAKLSAgICAyMzgsIDY5LCA5LCAxMywgMjM4LCA2OCwgOSwgMTMsIDIzOCwgNjcsIDksIDEzLCAyMzgsIDY2LCAyMzMsIDExNCwgMjE4LCAKLSAgICAzMywgMTI2LCAyMTksIDIwNiwgMTI2LCAyNDQsIDI1NCwgNzcsIDEyNiwgMjI0LCAxNDMsIDc3LCAxMjYsIDUwLCA1MiwgCi0gICAgMTI2LCAyNDcsIDg2LCA1MiwgMTI2LCAyMjYsIDU3LCA1MiwgMTI2LCAyNTQsIDM1LCAxMjYsIDI1MywgMjI2LCAxMjYsIDQyLCAKLSAgICAyMjYsIDEzMSwgMTI2LCA0NiwgMjI2LCAxMzEsIDEyNiwgMjUzLCAxMzIsIDEyNiwgOTQsIDUyLCAxMjYsIDI0OSwgMTU3LCAKLSAgICAxMjYsIDI0MCwgMTU5LCAxMjYsIDI0MywgMjAwLCAyMTksIDY5LCAxMjYsIDIxOSwgMjMxLCAxMjYsIDIxLCAyMTIsIDc5LCAKLSAgICAxMjYsIDIxLCAxMTYsIDEyNiwgMjEsIDEwOSwgMTI2LCAyMSwgMTY2LCAxMjYsIDIxLCAxNjMsIDEyNiwgMjEsIDE4MCwgCi0gICAgMTI2LCAyMSwgMTg5LCAxMjYsIDIxLCAxOTgsIDEyNiwgMjEsIDE5NSwgMTI2LCAyMSwgMjAwLCAxMjYsIDI0OSwgMTY0LCAKLSAgICAxMjYsIDIyMSwgNzAsIDEyNiwgMjMzLCAzOSwgNTIsIDEyNiwgMjQ1LCA2MSwgNTIsIDEyNiwgMjQyLCAxMDcsIDUyLCAxMjYsIAotICAgIDIyNCwgMTU4LCA3NywgMTI2LCAyNDksIDE1NiwgMjUzLCAxMjIsIDEyNiwgNywgNiwgMSwgNjEsIDEyNiwgNywgNiwgMSwgCi0gICAgMjUzLCA3NCwgMTI2LCA3LCA2LCAxLCAyNTAsIDI1MiwgMTI2LCA3LCA2LCAxLCAyNDksIDMsIDEyNiwgNywgNiwgMSwgNzQsIAotICAgIDEyNiwgNywgNiwgMSwgMjQ0LCAyMzAsIDEyNiwgNywgNiwgMSwgMjQzLCAxNzcsIDEyNiwgNywgNiwgMSwgMjQyLCA0MSwgCi0gICAgMTI2LCA3LCA2LCAxLCA3MiwgMTI2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMTI2LCA3LCA2LCAxLCAyMzUsIDI3LCAxMjYsIDcsIAotICAgIDYsIDEsIDE1MCwgMTI2LCA3LCA2LCAxLCAxODMsIDEyNiwgNywgNiwgMSwgMjA0LCAxMjYsIDcsIDYsIDEsIDc1LCAxMjYsIAotICAgIDcsIDYsIDEsIDIyNiwgMjI5LCAxMjYsIDcsIDYsIDEsIDIyNCwgMjQwLCAxMjYsIDcsIDYsIDEsIDE0OSwgMTI2LCA3LCA2LCAKLSAgICAxLCAxOTcsIDEyNiwgNywgNiwgMSwgMjE4LCA5OSwgMTI2LCA3LCA2LCAxLCA2OSwgMTI2LCA3LCA2LCAxLCAyMTUsIDc5LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIxNCwgODIsIDEyNiwgNywgNiwgMSwgMjEzLCAxNjYsIDEyNiwgNywgNiwgMSwgMjEzLCAxMDUsIAotICAgIDEyNiwgNywgNiwgMSwgMjEyLCAxNTIsIDEyNiwgNDIsIDQxLCAxMjUsIDEyNiwgMjIzLCAyMDMsIDIxOSwgMjMxLCAxMjYsIAotICAgIDQ2LCA0MSwgMTI1LCAxMjYsIDI0OSwgMjI0LCAyNTQsIDE3NCwgMTI2LCAxMTUsIDIzMiwgMjQyLCAxMjYsIDI0MiwgMTE0LCAKLSAgICAyNTQsIDE3NCwgMTI2LCA3LCAzLCAxLCA2MSwgMTI2LCA3LCAzLCAxLCAyNTMsIDc0LCAxMjYsIDcsIDMsIDEsIDI1MCwgCi0gICAgMjUyLCAxMjYsIDcsIDMsIDEsIDI0OSwgMywgMTI2LCA3LCAzLCAxLCA3NCwgMTI2LCA3LCAzLCAxLCAyNDQsIDIzMCwgMTI2LCAKLSAgICA3LCAzLCAxLCAyNDMsIDE3NywgMTI2LCA3LCAzLCAxLCAyNDIsIDQxLCAxMjYsIDcsIDMsIDEsIDcyLCAxMjYsIDcsIDMsIDEsIAotICAgIDIzNSwgMTQyLCAxMjYsIDcsIDMsIDEsIDIzNSwgMjcsIDEyNiwgNywgMywgMSwgMTUwLCAxMjYsIDcsIDMsIDEsIDE4MywgCi0gICAgMTI2LCA3LCAzLCAxLCAyMDQsIDEyNiwgNywgMywgMSwgNzUsIDEyNiwgNywgMywgMSwgMjI2LCAyMjksIDEyNiwgNywgMywgCi0gICAgMSwgMjI0LCAyNDAsIDEyNiwgNywgMywgMSwgMTQ5LCAxMjYsIDcsIDMsIDEsIDE5NywgMTI2LCA3LCAzLCAxLCAyMTgsIDk5LCAKLSAgICAxMjYsIDcsIDMsIDEsIDY5LCAxMjYsIDcsIDMsIDEsIDIxNSwgNzksIDEyNiwgNywgMywgMSwgMjE0LCA4MiwgMTI2LCA3LCAKLSAgICAzLCAxLCAyMTMsIDE2NiwgMTI2LCA3LCAzLCAxLCAyMTMsIDEwNSwgMTI2LCA3LCAzLCAxLCAyMTIsIDE1MiwgMTI2LCA0MiwgCi0gICAgMjQ5LCA0MCwgMTI1LCAxMjYsIDcxLCAyMzIsIDI0MiwgMTI2LCA0NiwgMjQ5LCA0MCwgMTI1LCAxMjYsIDIxNywgNDIsIAotICAgIDI1MCwgMTk0LCAyMTgsIDMzLCA0MywgMjIxLCAyNTQsIDQzLCAyMjEsIDI0MywgNDMsIDIyMSwgMjMyLCA0MywgMjIxLCAKLSAgICAyMjAsIDQzLCAyMjEsIDIwOSwgNDMsIDIyMSwgMTk4LCA0MywgMjIxLCAxODcsIDQzLCAyMjEsIDE3NiwgNDMsIDIyMSwgCi0gICAgMTY1LCA0MywgMjIxLCAxNTcsIDQzLCAyMjEsIDE1NiwgNDMsIDIyMSwgMTU1LCA0MywgMjIxLCAxNTQsIDQzLCAyMjEsIAotICAgIDE1MiwgNDMsIDIyMSwgMTUxLCA0MywgMjIxLCAxNTAsIDQzLCAyMjEsIDE0OSwgNDMsIDIyMSwgMTQ4LCA0MywgMjIxLCAKLSAgICAxNDcsIDQzLCAyMjEsIDE0NiwgNDMsIDIyMSwgMTQ1LCA0MywgMjIxLCAxNDQsIDQzLCAyMjEsIDE0MywgNDMsIDIyMSwgCi0gICAgMTQxLCA0MywgMjIxLCAxNDAsIDQzLCAyMjEsIDEzOSwgNDMsIDIyMSwgMTM4LCA0MywgMjIxLCAxMzcsIDQzLCAyMjEsIAotICAgIDEzNiwgNDMsIDIyMSwgMTM1LCA0MywgMjIxLCAxMzQsIDQzLCAyMjEsIDEzMywgNDMsIDIyMSwgMTMyLCA0MywgMjIxLCAKLSAgICAxMzAsIDQzLCAyMjEsIDEyOSwgNDMsIDIyMSwgMTI4LCA0MywgMjIxLCAxMjcsIDQzLCAyMjEsIDEyNiwgNDMsIDIyMSwgCi0gICAgMTI1LCA0MywgMjIxLCAxMjQsIDQzLCAyMjEsIDEyMywgNDMsIDIyMSwgMTIyLCA0MywgMjIxLCAxMjEsIDQzLCAyMjEsIAotICAgIDExOSwgNDMsIDIyMSwgMTE4LCA0MywgMjIxLCAxMTcsIDQzLCAyMjEsIDExNiwgNDMsIDIyMSwgMTE1LCA0MywgMjIxLCAKLSAgICAxMTQsIDQzLCAyMjEsIDExMywgNDMsIDIyMSwgMTEyLCA0MywgMjIxLCAxMTEsIDQzLCAyMjEsIDExMCwgNDMsIDIyMSwgCi0gICAgMTA4LCA0MywgMjIxLCAxMDcsIDQzLCAyMjEsIDEwNiwgNDMsIDIyMSwgMTA1LCA0MywgMjIxLCAxMDQsIDQzLCAyMjEsIAotICAgIDEwMywgNDMsIDIyMSwgMTAyLCA0MywgMjIxLCAxMDEsIDQzLCAyMjEsIDEwMCwgNDMsIDIyMSwgOTksIDQzLCAyMjEsIDk3LCAKLSAgICA0MywgMjIxLCA5NiwgNDMsIDIyMSwgOTUsIDQzLCAyMjEsIDk0LCA0MywgMjIxLCA5MywgNDMsIDIyMSwgOTIsIDQzLCAyMjEsIAotICAgIDkxLCA0MywgMjIxLCA5MCwgNDMsIDIyMSwgODksIDQzLCAyMjEsIDg4LCA0MywgMjIxLCA4NiwgNDMsIDIyMSwgODUsIDQzLCAKLSAgICAyMjEsIDg0LCA0MywgMjIxLCA4MywgNDMsIDIyMSwgODIsIDQzLCAyMjEsIDgxLCA0MywgMjIxLCA4MCwgNDMsIDIyMSwgNzksIAotICAgIDQzLCAyMjEsIDc4LCA0MywgMjIxLCA3NywgNDMsIDIyMiwgNzQsIDQzLCAyMjIsIDczLCA0MywgMjIyLCA3MiwgNDMsIDIyMiwgCi0gICAgNzEsIDQzLCAyMjIsIDcwLCA0MywgMjIyLCA2OSwgNDMsIDIyMiwgNjgsIDQzLCAyMjIsIDY3LCA0MywgMjIyLCA2NiwgNDMsIAotICAgIDIyMiwgNjUsIDQzLCAyMjIsIDYzLCA0MywgMjIyLCA2MiwgNDMsIDIyMiwgNjEsIDQzLCAyMjIsIDYwLCA0MywgMjIyLCA1OSwgCi0gICAgNDMsIDIyMiwgNTgsIDQzLCAyMjIsIDU3LCA0MywgMjIyLCA1NiwgNDMsIDIyMiwgNTUsIDQzLCAyMjIsIDU0LCA0MywgMjIyLCAKLSAgICA1MiwgNDMsIDIyMiwgNTEsIDQzLCAyMjIsIDUwLCA0MywgMjIyLCA0OSwgNDMsIDIyMiwgNDgsIDQzLCAyMjIsIDQ3LCA0MywgCi0gICAgMjIyLCA0NiwgNDMsIDIyMiwgNDUsIDQzLCAyMjIsIDQ0LCA0MywgMjIyLCA0MywgNDMsIDIyMiwgNDEsIDQzLCAyMjIsIDQwLCAKLSAgICA0MywgMjIyLCAzOSwgNDMsIDIyMiwgMzgsIDQzLCAyMjIsIDM3LCA0MywgMjIyLCAzNiwgNDMsIDIyMiwgMzUsIDQzLCAyMjIsIAotICAgIDM0LCA0MywgMjIyLCAzMywgNDMsIDIyMiwgMzIsIDQzLCAyMjIsIDMwLCA0MywgMjIyLCAyOSwgNDMsIDIyMiwgMjgsIDQzLCAKLSAgICAyMjIsIDI3LCA0MywgMjIyLCAyNiwgNDMsIDIyMiwgMjUsIDQzLCAyMjIsIDI0LCA0MywgMjIyLCAyMywgNDMsIDIyMiwgMjIsIAotICAgIDQzLCAyMjIsIDIxLCA0MywgMjIyLCAxOSwgNDMsIDIyMiwgMTgsIDQzLCAyMjIsIDE3LCA0MywgMjIyLCAxNiwgNDMsIDIyMiwgCi0gICAgMTUsIDQzLCAyMjIsIDE0LCA0MywgMjIyLCAxMywgNDMsIDIyMiwgMTIsIDQzLCAyMjIsIDExLCA0MywgMjIyLCAxMCwgNDMsIAotICAgIDIyMiwgOCwgNDMsIDIyMiwgNywgNDMsIDIyMiwgNiwgNDMsIDIyMiwgNSwgNDMsIDIyMiwgNCwgNDMsIDIyMiwgMywgNDMsIAotICAgIDIyMiwgMiwgNDMsIDIyMiwgMSwgNDMsIDIyMiwgMCwgNDMsIDIyMSwgMjU1LCA0MywgMjIxLCAyNTMsIDQzLCAyMjEsIDI1MiwgCi0gICAgNDMsIDIyMSwgMjUxLCA0MywgMjIxLCAyNTAsIDQzLCAyMjEsIDI0OSwgNDMsIDIyMSwgMjQ4LCA0MywgMjIxLCAyNDcsIDQzLCAKLSAgICAyMjEsIDI0NiwgNDMsIDIyMSwgMjQ1LCA0MywgMjIxLCAyNDQsIDQzLCAyMjEsIDI0MiwgNDMsIDIyMSwgMjQxLCA0MywgCi0gICAgMjIxLCAyNDAsIDQzLCAyMjEsIDIzOSwgNDMsIDIyMSwgMjM4LCA0MywgMjIxLCAyMzcsIDQzLCAyMjEsIDIzNiwgNDMsIAotICAgIDIyMSwgMjM1LCA0MywgMjIxLCAyMzQsIDQzLCAyMjEsIDIzMywgNDMsIDIyMSwgMjMxLCA0MywgMjIxLCAyMzAsIDQzLCAKLSAgICAyMjEsIDIyOSwgNDMsIDIyMSwgMjI4LCA0MywgMjIxLCAyMjcsIDQzLCAyMjEsIDIyNiwgNDMsIDIyMSwgMjI1LCA0MywgCi0gICAgMjIxLCAyMjQsIDQzLCAyMjEsIDIyMywgNDMsIDIyMSwgMjIyLCA0MywgMjIxLCAyMTksIDQzLCAyMjEsIDIxOCwgNDMsIAotICAgIDIyMSwgMjE3LCA0MywgMjIxLCAyMTYsIDQzLCAyMjEsIDIxNSwgNDMsIDIyMSwgMjE0LCA0MywgMjIxLCAyMTMsIDQzLCAKLSAgICAyMjEsIDIxMiwgNDMsIDIyMSwgMjExLCA0MywgMjIxLCAyMTAsIDQzLCAyMjEsIDIwOCwgNDMsIDIyMSwgMjA3LCA0MywgCi0gICAgMjIxLCAyMDYsIDQzLCAyMjEsIDIwNSwgNDMsIDIyMSwgMjA0LCA0MywgMjIxLCAyMDMsIDQzLCAyMjEsIDIwMiwgNDMsIAotICAgIDIyMSwgMjAxLCA0MywgMjIxLCAyMDAsIDQzLCAyMjEsIDE5OSwgNDMsIDIyMSwgMTk3LCA0MywgMjIxLCAxOTYsIDQzLCAKLSAgICAyMjEsIDE5NSwgNDMsIDIyMSwgMTk0LCA0MywgMjIxLCAxOTMsIDQzLCAyMjEsIDE5MiwgNDMsIDIyMSwgMTkxLCA0MywgCi0gICAgMjIxLCAxOTAsIDQzLCAyMjEsIDE4OSwgNDMsIDIyMSwgMTg4LCA0MywgMjIxLCAxODYsIDQzLCAyMjEsIDE4NSwgNDMsIAotICAgIDIyMSwgMTg0LCA0MywgMjIxLCAxODMsIDQzLCAyMjEsIDE4MiwgNDMsIDIyMSwgMTgxLCA0MywgMjIxLCAxODAsIDQzLCAKLSAgICAyMjEsIDE3OSwgNDMsIDIyMSwgMTc4LCA0MywgMjIxLCAxNzcsIDQzLCAyMjEsIDE3NSwgNDMsIDIyMSwgMTc0LCA0MywgCi0gICAgMjIxLCAxNzMsIDQzLCAyMjEsIDE3MiwgNDMsIDIyMSwgMTcxLCA0MywgMjIxLCAxNzAsIDQzLCAyMjEsIDE2OSwgNDMsIAotICAgIDIyMSwgMTY4LCA0MywgMjIxLCAxNjcsIDQzLCAyMjEsIDE2NiwgNDMsIDIyMSwgMTY0LCA0MywgMjIxLCAxNjMsIDQzLCAKLSAgICAyMjEsIDE2MiwgNDMsIDIyMSwgMTYxLCA0MywgMjIxLCAxNjAsIDQzLCAyMjEsIDE1OSwgNDMsIDIyMSwgMTU4LCAKKyAgICAwLCAyMTksIDE4LCAyNDUsIDMxLCA3OCwgMjIzLCAyNTQsIDc4LCA1NCwgNTAsIDI0NywgMTMyLCA1MCwgMjI1LCAxODIsIAorICAgIDUwLCAyNTQsIDEyNiwgMjU0LCA1NywgNDMsIDIyNiwgMywgNDQsIDIyNiwgMywgMjUzLCAyMTYsIDk2LCA1MCwgMjQ5LCAKKyAgICAyMTksIDI0MCwgMTY3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxOSwgNDYsIDIxLCAyMTAsIDg2LCAyMSwgMTEwLCAyMSwgCisgICAgMTA1LCAyMSwgMTU4LCAyMSwgMTYxLCAyMSwgMTg5LCAyMSwgMTk0LCAyMSwgMTk4LCAyMSwgMTk1LCAyMSwgMjAwLCAyNDksIAorICAgIDIyNiwgMjIwLCAxNTAsIDIzMywgMTUsIDUwLCAyNDUsIDk4LCA1MCwgMjQyLCAxMzAsIDUwLCAyMjQsIDEzLCA3OCwgMjQ5LCAKKyAgICAyMTcsIDI1MywgMjA2LCA3LCA2LCAxLCA2MSwgNywgNiwgMSwgMjUzLCAxNTgsIDcsIDYsIDEsIDI1MSwgNjYsIDcsIDYsIDEsIAorICAgIDI0OSwgNjAsIDcsIDYsIDEsIDc1LCA3LCA2LCAxLCAyNDUsIDYsIDcsIDYsIDEsIDI0MywgMjAyLCA3LCA2LCAxLCAyNDIsIAorICAgIDYwLCA3LCA2LCAxLCA3MywgNywgNiwgMSwgMjM1LCAxNDQsIDcsIDYsIDEsIDIzNSwgMjMsIDcsIDYsIDEsIDE1NiwgNywgNiwgCisgICAgMSwgMTkzLCA3LCA2LCAxLCAyMzAsIDI1LCA3LCA2LCAxLCA3NiwgNywgNiwgMSwgMjI2LCAxMDUsIDcsIDYsIDEsIDIyNCwgCisgICAgOTYsIDcsIDYsIDEsIDE1MywgNywgNiwgMSwgMjIyLCA5MSwgNywgNiwgMSwgMjE3LCAxNTIsIDcsIDYsIDEsIDcwLCA3LCA2LCAKKyAgICAxLCAyMTQsIDEwNSwgNywgNiwgMSwgMjEyLCA5OCwgNywgNiwgMSwgMjExLCAxNzgsIDcsIDYsIDEsIDIxMSwgMTE3LCA3LCAKKyAgICA2LCAxLCAyMTAsIDE1OSwgNDMsIDQyLCAxMjcsIDIyMywgNTAsIDIxOSwgNDYsIDQ0LCA0MiwgMTI3LCAyNTAsIDMxLCAyNTUsIAorICAgIDE0LCAxMjEsIDIzMiwgMjEzLCAyNDIsIDEzNywgMjU1LCAxNCwgNywgNCwgMSwgNjEsIDcsIDQsIDEsIDI1MywgMTU4LCA3LCAKKyAgICA0LCAxLCAyNTEsIDY2LCA3LCA0LCAxLCAyNDksIDYwLCA3LCA0LCAxLCA3NSwgNywgNCwgMSwgMjQ1LCA2LCA3LCA0LCAxLCAKKyAgICAyNDMsIDIwMiwgNywgNCwgMSwgMjQyLCA2MCwgNywgNCwgMSwgNzMsIDcsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMzUsIAorICAgIDIzLCA3LCA0LCAxLCAxNTYsIDcsIDQsIDEsIDE5MywgNywgNCwgMSwgMjMwLCAyNSwgNywgNCwgMSwgNzYsIDcsIDQsIDEsIAorICAgIDIyNiwgMTA1LCA3LCA0LCAxLCAyMjQsIDk2LCA3LCA0LCAxLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTEsIDcsIDQsIDEsIDIxNywgCisgICAgMTUyLCA3LCA0LCAxLCA3MCwgNywgNCwgMSwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxMiwgOTgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKKyAgICA3LCA0LCAxLCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNTksIDQzLCAyNDksIDk5LCAxMjcsIDY3LCAyMzIsIDIxMywgNDQsIAorICAgIDI0OSwgOTksIDEyNywgMTgyLCAyMjgsIDczLCAyMTksIDE4LCAyMzUsIDE5MywgMjQ1LCAzMSwgNzgsIDI1MCwgMTc2LCA1MCwgCisgICAgMjI0LCAyMjgsIDUwLCAyNDksIDk4LCA1MCwgMjExLCA0MCwgNTAsIDI1MSwgMTM1LCAxMzAsIDIyMSwgMTczLCA1MCwgMjQ4LCAKKyAgICAxLCAyNDksIDE2MywgNTAsIDI0NCwgMTM2LCAyMjYsIDE1NCwgMjM1LCAyMzgsIDIzMywgNDIsIDUyLCAyNTQsIDExMCwgCisgICAgMjIzLCAyNTQsIDc4LCAyMjgsIDUyLCA1MCwgMjE5LCA1MiwgMjQwLCAxNjgsIDIyMywgMTAyLCA1MCwgMjMxLCAyMzIsIAorICAgIDI0OCwgNzEsIDUwLCAyMjUsIDIxLCA1MCwgMjE4LCAyMywgMTA1LCAyMTgsIDIzLCAxNTgsIDI1NSwgMywgMjU1LCAxNCwgCisgICAgMjMwLCAyMjgsIDUwLCAyMjUsIDY4LCA1MCwgMjMwLCAyMjQsIDI0NywgMTIwLCAyNTAsIDE4MywgMjE4LCAyMywgMTEwLCAKKyAgICAyMzEsIDE0OCwgMjI2LCAxNTQsIDIzNSwgMjM4LCAyMjIsIDI0NywgNTIsIDI1NCwgMTEwLCAyMjMsIDI1NCwgNzgsIDIxMiwgCisgICAgMTE0LCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAyMTIsIDExNCwgMjQ0LCAKKyAgICAyLCAxMzQsIDIyNCwgMTksIDIzNSwgMTkzLCAyMjQsIDEzLCA3OCwgNywgNiwgMSwgMTE1LCAyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMTE1LCAyLCAxODIsIDcsIDYsIDEsIAorICAgIDExNSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA0OCwgNywgNiwgMSwgMjU0LCAyNDMsIDcsIDYsIAorICAgIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAxNjAsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDE0MiwgCisgICAgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAxNjAsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIAorICAgIDI0MiwgMTM2LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAzMCwgNywgNiwgCisgICAgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQ1LCA1OSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMTgyLCA3LCA2LCAKKyAgICAxLCAxNDQsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDMwLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDE4MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDgsIDEsIDIzMCwgODQsIDUwLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIDIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAKKyAgICAyNTAsIDMwLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE0MiwgNywgNiwgMSwgCisgICAgMjE2LCAxNTEsIDcsIDQsIDEsIDIyMCwgNzYsIDIyMiwgOTEsIDcsIDQsIDEsIDExNSwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIAorICAgIDExNSwgMiwgMTQyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDExNSwgMiwgMTgyLCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDI0OCwgMSwgNywgNCwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDI1NCwgMjQzLCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMTYwLCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAxNDIsIAorICAgIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMTYwLCAyLCAyNDgsIDEsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAKKyAgICAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMzAsIDcsIDQsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDI0NSwgNTksIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDE4MiwgNywgNCwgCisgICAgMSwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMCwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCAxODIsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCAxLCAyNDcsIDE2OSwgNTAsIDcsIDQsIDEsIDE0NCwgCisgICAgMiwgOTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzAsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTQyLCA3LCA0LCAxLCAKKyAgICAyMTYsIDE1MSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0OCwgMSwgNywgNiwgMSwgMTE1LCAyLCAyMzEsIDIzMiwgNywgNCwgCisgICAgMSwgMTE1LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIAorICAgIDE0NiwgNywgNiwgMSwgMTE1LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTE1LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMjUxLCAKKyAgICA2NywgMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxNDIsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMzAsIDcsIDQsIAorICAgIDEsIDI1MSwgNjcsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjUxLCA2NywgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjUxLCA2NywgMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQ5LCAKKyAgICA2MSwgMiwgOTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDkxLCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNjAsIDIsIDI1MSwgMTQ2LCAKKyAgICA3LCA2LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMjI2LCAKKyAgICAyMjQsIDcsIDQsIDEsIDE2MCwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAKKyAgICAzMCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjUxLCAxNDYsIDcsIDYsIAorICAgIDEsIDI0MywgMjAzLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI0MywgMjAzLCAKKyAgICAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIAorICAgIDMwLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCA5MSwgNywgNCwgMSwgMjQyLCAKKyAgICA2MSwgMiwgOTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAxODIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAxODIsIDcsIDYsIDEsIAorICAgIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNDAsIDE1NCwgCisgICAgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgCisgICAgMjI0LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCA1OSwgNDgsIDcsIDQsIAorICAgIDEsIDI0NywgMTE5LCA3MywgNywgNiwgMjcsIDIzNiwgMzEsIDcsIDQsIDI3LCAyMzYsIDMxLCA3LCA2LCAxLCAyMzUsIDE0NSwgCisgICAgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjM1LCAxNDUsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMTgzLCAKKyAgICA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjMzLCAyMzksIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxNDIsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDE4MywgNywgNCwgMSwgCisgICAgMjMzLCAxNDksIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgNywgNCwgMSwgMjMzLCAxNDksIAorICAgIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDkxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgCisgICAgOTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE0MiwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMTQyLCA3LCA2LCAxLCAyMzAsIDI2LCAKKyAgICAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDI1MCwgCisgICAgMjM0LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjMwLCAyNiwgMjI0LCAyMDQsIDI1MSwgNzgsIAorICAgIDI1NCwgNTcsIDcsIDYsIDEsIDI0NSwgMTM4LCA3LCA0LCAxLCAyNDUsIDEzOCwgNywgNiwgMSwgMTQ0LCAyLCAyMzEsIDIzMiwgCisgICAgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTQ0LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICAyNTEsIDE0NiwgNywgNiwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDUyLCAxNDIsIDcsIDYsIDI3LCAKKyAgICAyMjYsIDIzNCwgNywgNCwgMjcsIDIyNiwgMjM0LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMTQyLCA3LCA0LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgMTQyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNTAsIAorICAgIDE4MywgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDIyMiwgOTIsIDIsIDE0MiwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMTQyLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAKKyAgICAyNTAsIDMwLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDE4MywgNywgCisgICAgNCwgMSwgMjIyLCA5MiwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMjIsIAorICAgIDkyLCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjUwLCAxODMsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMjM0LCAKKyAgICA3LCA2LCAxLCAyMTcsIDE1MywgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCA5MSwgNywgNiwgMSwgMTA0LCAyLCAxODIsIAorICAgIDcsIDQsIDEsIDEwNCwgMiwgMTgyLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAxMDQsIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxMDQsIDIsIDI1MSwgMTQ2LCA3LCA2LCAxLCAxMDQsIAorICAgIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDYsIDEsIDEwNCwgMiwgNTIsIDE0MiwgCisgICAgNywgNCwgMSwgMTA0LCAyLCA1MiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI0LCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDIyNiwgMjI0LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDMwLCA3LCAKKyAgICA2LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIxMSwgCisgICAgMTE4LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIAorICAgIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgCisgICAgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxOTksIDIyMiwgOTEsIAorICAgIDcsIDQsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgNTcsIDIsIDEwMywgNywgNiwgMSwgNTcsIDIsIDIxNiwgMTEsIDcsIDQsIAorICAgIDEsIDU3LCAyLCAyMTYsIDExLCA3LCA2LCAxLCAxMzgsIDE5NCwgNywgNCwgMSwgMTM4LCAxOTQsIDcsIDYsIDEsIDIwNCwgCisgICAgNzYsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDEwMywgNywgNCwgMSwgMjUxLCA2NywgMiwgMTAzLCA3LCA2LCAxLCAyNTQsIAorICAgIDIxOSwgMjQ5LCA2MCwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMTAzLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAyMTYsIDExLCA3LCAKKyAgICA0LCAxLCAyNDksIDYxLCAyLCAyMTYsIDExLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDgsIDU0LCA3LCA2LCAxLCAyMjMsIDQ5LCAKKyAgICA3NSwgNywgNiwgMSwgMjIxLCAxOTUsIDcsIDYsIDEsIDIwNCwgNzUsIDcsIDYsIDEsIDI0NSwgNywgMiwgMTAzLCA3LCA0LCAKKyAgICAxLCAyNDUsIDcsIDIsIDEwMywgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDEwMywgNywgNiwgMSwgMjQzLCAxMDcsIDcsIDQsIDEsIAorICAgIDI0MCwgMjAxLCA3LCA2LCAxLCAyMzUsIDE4NSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDkxLCA3LCA2LCAxLCAyMzUsIDI0LCAKKyAgICAyLCAxMDMsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDEwMywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDEzMCwgNywgNCwgMSwgCisgICAgMjMzLCAxMDAsIDIsIDkxLCA3LCA2LCAxLCAyMTUsIDk0LCAxOTMsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDcsIAorICAgIDQsIDEsIDIzMCwgMjYsIDIsIDE5OSwgNDQsIDIzMywgMzYsIDcsIDYsIDEsIDE0NCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDAsIDI0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OCwgNywgNiwgMSwgMjI2LCAyMTksIDcsIDQsIAorICAgIDEsIDIyNiwgMjE5LCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMTAzLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMTAzLCA3LCAxLCAKKyAgICAyMTAsIDIxNCwgNywgNiwgMSwgMTM4LCAxMDUsIDcsIDQsIDEsIDEzOCwgMTA1LCA3LCA2LCAxLCAyNDUsIDc1LCA3LCAxLCAKKyAgICAyMjMsIDQ5LCAyNDUsIDc2LCAyMzIsIDEyMywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIyNiwgNjYsIDEwMywgNywgNiwgMSwgCisgICAgMjE3LCAxNTMsIDIsIDEwMywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDEwMywgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDIyMywgCisgICAgNTUsIDEwMywgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OCwgNywgNiwgMSwgCisgICAgMjE0LCAxNTcsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIxMSwgMTE4LCAyLCAxMDMsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCAKKyAgICA2LCAxLCAyNDUsIDgsIDcsIDYsIDEsIDI0NSwgOSwgMjIzLCA0OCwgNywgNCwgMSwgMjQ1LCA5LCAyMjMsIDQ4LCA3LCA0LCAKKyAgICAxLCAyNDUsIDksIDIsIDIxNywgNzcsIDcsIDEsIDExMywgMiwgOTEsIDcsIDYsIDEsIDEzOCwgMTg5LCA3LCA0LCAxLCAxMzgsIAorICAgIDE4OSwgNywgMSwgMjM1LCAxOTMsIDI0MiwgMTgwLCAyMTgsIDEzMCwgMiwgOTEsIDcsIDEsIDIxMSwgMTgxLCA3LCAxLCAKKyAgICAyNDgsIDQ3LCAyNTAsIDExLCA3LCAxLCAyMzMsIDc3LCAyNTAsIDExLCA3LCAxLCAyNTQsIDEzNywgMjUwLCAxMSwgNywgMSwgCisgICAgMjIzLCA1NSwgMjUwLCAxMSwgNywgNiwgMSwgMjQ2LCA0MCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDQsIAorICAgIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ2LCA0MCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMiwgCisgICAgMTg4LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgNCwgMSwgMjM1LCAxNDQsIDcsIDQsIDEsIDIzMiwgMTg4LCA3LCA2LCAxLCAKKyAgICAyMjgsIDE4NiwgNywgNiwgMSwgMjMwLCAyNiwgMiwgNCwgMSwgMjM1LCAxNDQsIDcsIDQsIDEsIDIyOCwgMTg2LCA3LCA2LCAKKyAgICAxLCAxMTUsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgCisgICAgMjUwLCAyMzQsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDIzNCwgNywgCisgICAgNCwgMSwgMTQ0LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIAorICAgIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKKyAgICAyMzEsIDIzMiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAorICAgIDI1MCwgMjM0LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTUsIDk0LCA3NSwgNywgNiwgMSwgMTE1LCAyLCAyNDgsIDIsIDIyLCAyMzEsIAorICAgIDIzMiwgNywgNCwgMSwgMTE1LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTE1LCAyLCA1OSwgNzcsIDIyLCAKKyAgICAyMzEsIDIzMiwgNywgNCwgMSwgMTE1LCAyLCA1OSwgNzcsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjU0LCAyNDQsIDIsIAorICAgIDIzMSwgMjMyLCA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCA5MSwgNywgNCwgCisgICAgMSwgMjQzLCAyMDMsIDIsIDkxLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMjM0LCAKKyAgICA3LCA2LCAxLCAxNDQsIDIsIDIyNiwgMjI0LCA3LCA0LCAxLCAxNDQsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDIyNiwgMjI1LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjI2LCAyMjUsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgCisgICAgMjQ1LCA5LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ1LCA5LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjM1LCAxNDUsIDIsIAorICAgIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDYsIDM5LCA3LCA2LCAxLCAyNDksIDYxLCAyLCA0LCAxLCAyMTAsIDE1OSwgNywgNCwgMSwgCisgICAgMjQ2LCAzOSwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDE0MiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDE0MiwgNywgNiwgMSwgCisgICAgMjQwLCAxOTksIDcsIDYsIDEsIDIxMSwgMTgxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjMwLCAKKyAgICAyNiwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDc3LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIDIsIAorICAgIDIyMiwgMjM0LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMjU0LCAyNDQsIDIsIDE0MiwgNywgNCwgMSwgMjU0LCAyNDQsIDIsIAorICAgIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMTgsIDEwMywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTgsIDEwMywgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTE1LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxMTUsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTE1LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIAorICAgIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAKKyAgICAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDE2MCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgCisgICAgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNDQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgCisgICAgNiwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIAorICAgIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTA0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDIyMiwgCisgICAgOTIsIDIsIDI0OSwgMjIwLCA1MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjQ5LCAyMjAsIDUxLCA3LCA2LCAxLCAyMTcsIAorICAgIDE1MywgMiwgMjQ5LCAyMjAsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ5LCAyMjAsIDUxLCA3LCA2LCAxLCAyMTAsIAorICAgIDIzMSwgNywgNCwgMSwgMjEwLCAyMzEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDIsIDYxLCAKKyAgICAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMTk5LCA0NCwgMjMzLCAzNiwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgCisgICAgMjQ5LCAxMDAsIDcsIDYsIDEsIDIyNiwgMTM0LCA3LCA0LCAxLCAyMjYsIDEzNCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNiwgMSwgMTE1LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDExNSwgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAKKyAgICAxNDQsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDI0OCwgMiwgMjIsIDIzMSwgMjMyLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjMxLCAKKyAgICAyMzIsIDcsIDYsIDEsIDE0NCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICA1OSwgNzcsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNzcsIDIyLCAyMzEsIDIzMiwgNywgNiwgMSwgCisgICAgMjExLCAxMTgsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNDksIAorICAgIDEwMCwgNywgNCwgMSwgMjQ3LCAxMTksIDIzNSwgMTQ0LCA3LCA0LCAxLCAyNDgsIDE0MywgMjQ3LCAyMjAsIDcsIDQsIDEsIAorICAgIDIyNCwgMzEsIDI0NywgMjIwLCA3LCA2LCAxLCAxMTUsIDIsIDkxLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCA5MSwgNywgNCwgMSwgCisgICAgMjUxLCA2NywgMiwgOTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAxMzAsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNDcsIAorICAgIDI1NSwgOTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgCisgICAgMjE3LCAyNTAsIDIxNywgNzcsIDcsIDYsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgNCwgMSwgMjQyLCAxODAsIDIxOCwgCisgICAgMTI5LCA3LCA2LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMTMwLCA3LCA2LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgCisgICAgNywgNiwgMSwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMTYwLCAyLCA5MSwgNywgNiwgMSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA0LCAKKyAgICAxLCAyMzUsIDE0NSwgMiwgOTEsIDcsIDYsIDEsIDQsIDIyNCwgOTcsIDIsIDI0MSwgNTIsIDIxNywgNzcsIDcsIDQsIDEsIAorICAgIDIyNCwgOTcsIDIsIDI0MSwgNTIsIDIxNywgNzcsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCA5MSwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDkxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgOTEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgMjE1LCA5NCwgNjEsIDcsIDQsIDEsIDI1NCwgMTQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIDE0MywgNywgNCwgMSwgNTcsIAorICAgIDIsIDEwMywgNywgNCwgMSwgMjA0LCA3NiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDI0OSwgCisgICAgNjEsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDEwMywgNywgNCwgMSwgMjIzLCA0OSwgNzUsIDcsIDQsIDEsIAorICAgIDIyMSwgMTk1LCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc1LCA3LCA0LCAxLCAyMjMsIDQ5LCAKKyAgICAyMDQsIDc1LCA3LCA0LCAxLCAyMjMsIDQ5LCAyMDQsIDE2MCwgMiwgMTAzLCA3LCA0LCAxLCAyNTAsIDAsIDIyMywgNDksIAorICAgIDIwNCwgNzUsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgOTEsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAxMDMsIAorICAgIDcsIDQsIDEsIDExOSwgMjQzLCAyMDIsIDcsIDEsIDQsIDYsIDI0MywgMjAyLCA3LCA0LCAxLCAyNDMsIDEwNywgNywgNCwgMSwgCisgICAgMjIzLCAxNTEsIDI0MCwgMjQ4LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYwLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAxMDMsIAorICAgIDcsIDQsIDEsIDI0MSwgMjA4LCAyLCAxMDMsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxODUsIAorICAgIDcsIDEsIDQsIDYsIDczLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjMzLCAxNDksIAorICAgIDIsIDI1MiwgNDEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIzMywgMSwgNywgNCwgMSwgCisgICAgMjE1LCA5NCwgMTkzLCA3LCA0LCAxLCAyMTUsIDk0LCAyMzIsIDUwLCAyLCAxOTksIDIzMywgMzYsIDcsIDQsIDEsIDIzMiwgCisgICAgNTAsIDIsIDEwMywgNywgNCwgMSwgMjMwLCAyNiwgMiwgNDMsIDEwMywgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjIzLCA1NSwgCisgICAgMTAzLCA3LCAxLCA0LCA2LCAyMzAsIDI1LCA3LCA0LCAxLCAyNTIsIDEzNCwgNzYsIDcsIDEsIDQsIDYsIDIyNiwgMjM0LCA3LCAKKyAgICA0LCAxLCAyNTAsIDAsIDIyNiwgMjAxLCA3LCA0LCAxLCAyMjUsIDEzMywgNywgNCwgMSwgMjE1LCA5NCwgMTUzLCA3LCA0LCAKKyAgICAxLCAyMTUsIDk0LCAyMjMsIDIyNCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMTUsIDk0LCAyMjMsIDIyNCwgMiwgCisgICAgMTAzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgCisgICAgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI0NCwgODcsIDcsIDQsIDEsIDIyMywgNDksIDIyMywgMjI0LCAyLCAyNDQsIDg3LCA3LCAKKyAgICAxLCA0LCA2LCAxNTMsIDcsIDEsIDQsIDYsIDIzNSwgMTkzLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDEwMywgNywgNCwgCisgICAgMSwgMjQ1LCA3NSwgNywgNCwgMSwgMjQ3LCAxMTksIDIzNSwgMTQ1LCAyLCAyMTgsIDEwMywgMjIsIDEwMywgNywgNCwgMSwgCisgICAgMjE4LCAyMzEsIDIyMywgNDksIDI0NSwgNzUsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTUsIAorICAgIDk0LCAyMTcsIDE1MiwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMTA0LCAxMzAsIDcsIAorICAgIDQsIDEsIDIxNCwgMTU3LCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMTAzLCA3LCA0LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgNywgCisgICAgNCwgMSwgMjE1LCA5NCwgMjEyLCA5OCwgNywgNCwgMSwgMjE1LCA5NCwgMjExLCAxMTcsIDcsIDEsIDQsIDYsIDIxMSwgMTE3LCAKKyAgICA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ5LCAxMDAsIDcsIDQsIAorICAgIDEsIDI0NSwgOCwgNywgNCwgMSwgMjQ1LCA5LCAyLCAyNDksIDEwMCwgNywgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA3LCAxLCAKKyAgICAyMjUsIDEzOSwgMjEzLCAxMzUsIDI0MywgMjQ5LCA3LCAxLCAyMzUsIDE5MywgMjQyLCAxODAsIDIxOCwgMTI5LCA3LCAxLCAKKyAgICAyMTgsIDExMCwgMjUxLCA2NiwgNywgMSwgMjUxLCAyNDYsIDI1MCwgMTEsIDcsIDEsIDQsIDYsIDI1MywgMTU4LCA3LCA0LCAKKyAgICAxLCAyNTAsIDAsIDIwNCwgNzUsIDcsIDEsIDQsIDYsIDI0MywgMjAzLCAyLCAxMDMsIDcsIDEsIDQsIDYsIDI0MiwgNjAsIDcsIAorICAgIDQsIDEsIDIzNSwgMTQ1LCAyLCAyNDksIDEyNywgNywgNCwgMSwgMjE1LCA5NCwgMjM1LCAyMywgNywgMSwgNCwgNiwgMTU2LCAKKyAgICA3LCA0LCAxLCAyMjQsIDk3LCAyLCAxMDMsIDcsIDEsIDI0MiwgMTgwLCAyMTgsIDEzMCwgMiwgOTEsIDcsIDEsIDIyMywgNDksIAorICAgIDI0MiwgMTgwLCAyMTgsIDEzMCwgMiwgOTEsIDcsIDQsIDEsIDI0NiwgNDAsIDI0NywgMjIwLCA3LCA0LCAxLCAyNDgsIDI2LCAKKyAgICAyNDcsIDIyMCwgNywgNCwgMSwgMjQ2LCA0MCwgMjQ3LCAyMjEsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTUsIDE4NSwgCisgICAgMjQ3LCAyMjAsIDcsIDQsIDEsIDIxNiwgMjM1LCAyNDcsIDIyMCwgNywgNCwgMSwgMjE3LCAyOSwgMjQ3LCAyMjEsIDIsIAorICAgIDI0OSwgMTAwLCA3LCA0LCAxLCAyNDQsIDEzNCwgMjQ3LCAyMjAsIDcsIDQsIDEsIDIzMiwgMTAwLCAyNDcsIDIyMCwgNywgNCwgCisgICAgMSwgMjMyLCA1MSwgMjQ3LCAyMjAsIDcsIDEsIDI1MSwgMjQ2LCAyMjUsIDE4MSwgNywgMSwgMjUxLCAyNTQsIDIyNSwgMTgxLCAKKyAgICA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYxLCAyLCAyNDQsIDg3LCA3LCA0LCAxLCAyMTUsIDk0LCAyNDIsIDYxLCAyLCAyNDQsIAorICAgIDg4LCAyMiwgMjE3LCA3NywgNTgsIDEsIDQsIDI0MiwgNjAsIDU4LCAxLCA0LCAyNDIsIDYxLCAyLCAxMDMsIDU4LCAxLCA0LCAKKyAgICAyMzUsIDE0NCwgNTgsIDEsIDQsIDE1MywgNTgsIDEsIDQsIDIxNSwgOTQsIDE1MywgNTgsIDEsIDQsIDIxNSwgOTQsIDIyMywgCisgICAgMjI0LCAyLCAxMDMsIDU4LCAxLCA0LCA2LCAyMzUsIDE5MywgMTUzLCA1OCwgMSwgNCwgMjEyLCA5OCwgNTgsIDEsIDQsIAorICAgIDIxMSwgMTE3LCA1OCwgMSwgMjI0LCAxOTAsIDU4LCAxLCA1MiwgMjI0LCAxOTAsIDU4LCAxLCAyMTUsIDk0LCAyNDksIDIxOSwgCisgICAgNTgsIDEsIDI1NCwgNTcsIDU4LCAxLCAyMjMsIDQ5LCAyNDksIDIxOSwgNTgsIDEsIDQ0LCAxNjMsIDIyMiwgMjMzLCA1OCwgCisgICAgMSwgNDMsIDE2MywgMjIyLCAyMzMsIDU4LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDU4LCAxLCAyMjMsIDQ5LCAyNDIsIAorICAgIDE4MCwgMjE4LCAxMjksIDU4LCAxLCA0MywgMjUzLCAyNDksIDU4LCAxLCA0NCwgMjUzLCAyNDksIDU4LCAxLCAxMjAsIDI1MywgCisgICAgMjQ5LCA1OCwgMSwgMTI0LCAyNTMsIDI0OSwgNTgsIDEsIDI1MCwgMzEsIDI1NSwgMTQsIDI1MCwgMjM0LCA1OCwgMSwgNjcsIAorICAgIDIzMiwgMjEzLCA1OCwgMSwgMjMxLCAyMzIsIDU4LCAxLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyNDIsIDEzNywgMjU1LCAKKyAgICAxNCwgNTgsIDEsIDEyMSwgNjcsIDIzMiwgMjEzLCA1OCwgMSwgMTIxLCAyMzEsIDIzMiwgNTgsIDEsIDEyMSwgMjQyLCAxMzcsIAorICAgIDI1NSwgMTQsIDU4LCAxLCAxMjEsIDI1NSwgMywgMjU1LCAxNCwgNTgsIDEsIDIxNSwgMjIyLCAyNDksIDIyNiwgNTgsIDEsIAorICAgIDE2MywgMjE1LCAyMjIsIDI0OSwgMjI2LCA1OCwgMSwgMjUwLCAxNzMsIDQ0LCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMjUwLCAKKyAgICAxNzMsIDQzLCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMTIwLCAyMTcsIDg3LCA1OCwgMSwgMTI0LCAyMTcsIDg3LCA1OCwgMSwgCisgICAgOTYsIDUwLCA1OCwgMSwgMjMwLCAxODIsIDUwLCAyNTEsIDE0NiwgNTksIDQ4LCAyMjIsIDIzNCwgNDgsIDIyNiwgMjI0LCA0LCAKKyAgICAxODIsIDUyLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyMjMsIDM2LCAxMDMsIDU4LCAxLCAyNDksIDEzMSwgMjU1LCAxNCwgCisgICAgNTgsIDEsIDQsIDI0MywgMTA3LCA1OCwgMSwgNCwgMTU2LCA1OCwgMSwgNCwgMjIyLCA5MSwgNTgsIDEsIDQsIDIxMSwgMTc4LCAKKyAgICA1OCwgMSwgNCwgMjIzLCA0OSwgMjQyLCAxODAsIDIxOCwgMTI5LCA1OCwgMSwgMjQ1LCAyMCwgMTM4LCAxMzAsIDU4LCAxLCAKKyAgICAxMjUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAxMzgsIDEzMCwgNTgsIDEsIAorICAgIDI0NSwgMTksIDEzOCwgMTMwLCA1OCwgMSwgMjEwLCAyNTQsIDI0OCwgNDQsIDEzOCwgNzgsIDU4LCAxLCAyMTEsIDcwLCAKKyAgICAyNDgsIDQ0LCAxMzgsIDc4LCA1OCwgMSwgMjEzLCAxMzMsIDU4LCAxLCAyMTQsIDE4NiwgNTgsIDEsIDUyLCAyNTQsIDU3LCAKKyAgICA1OCwgMSwgMTIxLCAxMjQsIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCAxMjAsIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCA0MywgCisgICAgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDQ0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgMjIyLCAyMzMsIDU4LCAxLCAyMzAsIAorICAgIDIyNCwgMjQyLCAxMzcsIDI1NSwgMTQsIDU4LCAxLCAyMzAsIDIyNCwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCA1OCwgMSwgCisgICAgMjMwLCAyMjQsIDUyLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAxMjEsIDE4MiwgNTgsIDEsIDIyMywgMTU3LCAyNDksIAorICAgIDIyNiwgNTgsIDEsIDI1MiwgNTgsIDEyNSwgMjE2LCAzMCwgNTgsIDEsIDI0NSwgMTQzLCAxMjUsIDIxNiwgMzAsIDU4LCAxLCAKKyAgICAyNTIsIDU4LCAxMjEsIDIxNiwgMzAsIDU4LCAxLCAyNDUsIDE0MywgMTIxLCAyMTYsIDMwLCA1OCwgMSwgMjIwLCA1NCwgNTgsIAorICAgIDEsIDIwNCwgMjIwLCA1NCwgNTgsIDEsIDEyMSwgNDMsIDc0LCAzOCwgMjQyLCAxMzcsIDI1NSwgMTQsIDM4LCAyNTUsIDMsIAorICAgIDI1NSwgMTQsIDM4LCAyNTAsIDMxLCAyNTUsIDE0LCAzOCwgMTgyLCAzOCwgMjMxLCAyMzIsIDM4LCAyMjYsIDExOSwgMzgsIAorICAgIDI1MSwgMTQ2LCAzOCwgNTksIDQ4LCAzOCwgMjQ4LCAxLCAzOCwgMjQxLCA1MiwgNDgsIDM4LCAyMjIsIDIzNCwgNDgsIDM4LCAKKyAgICA1MiwgMjU1LCAzLCAyNTUsIDE0LCAzOCwgMjUwLCAyMzQsIDM4LCA2NywgMjMyLCAyMTQsIDQ4LCAzOCwgNTIsIDY3LCAyMzIsIAorICAgIDIxNCwgNDgsIDM4LCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDM4LCAyNTAsIDI1NSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0NiwgCisgICAgMzgsIDIxNSwgOTQsIDI0OSwgMjIwLCA0OCwgMzgsIDI0OSwgMjIwLCA0OCwgMzgsIDIyMywgNDksIDI0OSwgMjIwLCA0OCwgCisgICAgMzgsIDI0OSwgMjIwLCA3NywgMjIyLCAyNTEsIDM4LCAyNDIsIDEzNywgMjU1LCAxNSwgNTEsIDM4LCAyNTUsIDMsIDI1NSwgCisgICAgMTUsIDUxLCAzOCwgNDMsIDIxNywgODgsIDUxLCAzOCwgNDQsIDIxNywgODgsIDUxLCAzOCwgNDMsIDI1NCwgMTEwLCA0OCwgCisgICAgMzgsIDI0MCwgMjQ4LCAzOCwgNDMsIDE2MywgMjIyLCAyMzQsIDUxLCAzOCwgMTIwLCAyMTcsIDg4LCA1MSwgMzgsIDEyNCwgCisgICAgMjE3LCA4OCwgNTEsIDM4LCA5NiwgNSwgNTEsIDM4LCAyMzAsIDE4MiwgNSwgNTEsIDM4LCAyMjYsIDY0LCAyNDEsIDUyLCAKKyAgICA1MSwgMzgsIDIyMywgNTUsIDI0MSwgNTIsIDUxLCAzOCwgNTksIDUxLCAzOCwgMjQ4LCAyLCA1MSwgMzgsIDIyMiwgMjM0LCAKKyAgICA1MSwgMzgsIDI0OSwgMjIwLCA1MSwgMzgsIDI1MCwgMTgzLCAzOCwgMjI2LCAyMjQsIDM4LCA2NywgMjMyLCAyMTQsIDUxLCAKKyAgICAzOCwgMjUxLCAxNDAsIDUxLCAzOCwgMjM1LCAxOTMsIDUyLCAyNTQsIDI0LCA1MSwgMzgsIDI1MCwgMjM1LCA1MSwgMzgsIAorICAgIDI1MCwgMzEsIDI1NSwgMTUsIDUxLCAzOCwgMjUxLCAxNDcsIDUxLCAzOCwgMjM1LCAxOTMsIDI1MSwgMTQ3LCA1MSwgMzgsIAorICAgIDIxNiwgODksIDUxLCAzOCwgMjMxLCAyMzMsIDUxLCAzOCwgMTIxLCAyMzIsIDIxMywgMzgsIDUyLCAxMjEsIDIzMiwgMjEzLCAKKyAgICAzOCwgMjE2LCA4OSwgMjI2LCAxMjAsIDM4LCAyMTksIDI1MSwgMjE4LCAxMDMsIDIyNiwgMTIwLCAzOCwgMTk5LCAyMTgsIAorICAgIDEwMywgMjI2LCAxMjAsIDM4LCAyMTksIDI1MSwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCAxOTksIDIxOSwgNDcsIDIyNiwgCisgICAgMTIwLCAzOCwgNDQsIDE2MywgMjIyLCAyMzQsIDUxLCAzOCwgMjM1LCAxOTMsIDI1MSwgMTQwLCA1MSwgMzgsIDQyLCA1MSwgCisgICAgMzgsIDIyMSwgMTgwLCA1MSwgMzgsIDIxMSwgMTc5LCA0OCwgMzgsIDY3LCAxODIsIDM4LCA1MiwgMjI2LCAxMTksIDM4LCAKKyAgICAyNDIsIDEzNywgMTM4LCA3OCwgMzgsIDI1NSwgMywgMTM4LCA3OCwgMzgsIDI2LCAyMjUsIDE3NSwgMzgsIDI2LCAyMzQsIDIsIAorICAgIDM4LCAyNiwgMjQ3LCAyNTIsIDIxNiwgMTgsIDM4LCAyNiwgMjEwLCAyMTksIDM4LCAyNTEsIDE0MCwgNDgsIDM4LCAyNDUsIAorICAgIDk4LCA1LCA1MSwgMzgsIDUyLCA2NywgMjMyLCAyMTQsIDUxLCAzOCwgNDMsIDI1NCwgMTEwLCA1MSwgMzgsIDIyOCwgNTIsIAorICAgIDIxNiwgODksIDQ4LCAzOCwgMjQxLCA1OCwgNDgsIDM4LCAyNTQsIDE0OCwgMTI4LCAyMTYsIDQyLCA0OCwgMzgsIDQzLCA0NCwgCisgICAgODAsIDUxLCAzOCwgMjE0LCAxNTMsIDgwLCA1MSwgMzgsIDI0MiwgMTQyLCAyMzUsIDYzLCAzOCwgNDQsIDI1MywgMjUwLCAKKyAgICA0OCwgMzgsIDQzLCAxNjMsIDIyMiwgMjM0LCA0OCwgMzgsIDI0NCwgMTMxLCAzOCwgMjExLCAxNzksIDUxLCAzOCwgNDMsIAorICAgIDI1MywgMjUwLCA1MSwgMzgsIDQ0LCAyNTMsIDI1MCwgNTEsIDM4LCA0NCwgMjUzLCAyNTAsIDIyLCAxMjAsIDI1MywgMjUwLCAKKyAgICA1MSwgMzgsIDQ0LCAxNjMsIDIyMiwgMjM0LCA0OCwgMzgsIDU5LCA3NywgMjIyLCAyNTEsIDM4LCAyNTMsIDIxNywgNTEsIAorICAgIDM4LCA1MiwgMjIyLCAyMzQsIDUxLCAzOCwgMjEwLCAzNSwgNDgsIDM4LCA1MiwgMjUxLCAxNDcsIDUxLCAzOCwgNTIsIDI1MSwgCisgICAgMTQ2LCAzOCwgNTIsIDIzMSwgMjMyLCAzOCwgNTIsIDIzMSwgMjMzLCA1MSwgMzgsIDUyLCAxODIsIDM4LCA1MiwgMjM1LCAKKyAgICAxOTMsIDI1MSwgMTQ2LCAzOCwgNTIsIDk3LCA4MCwgNTEsIDM4LCA3LCA0LCAxLCA2MSwgMzgsIDcsIDQsIDEsIDc1LCAzOCwgCisgICAgNywgNCwgMSwgNzMsIDM4LCA3LCA0LCAxLCA3NiwgMzgsIDcsIDQsIDEsIDcwLCAzOCwgNywgNCwgMSwgMjUxLCA2NiwgMzgsIAorICAgIDcsIDQsIDEsIDI0OSwgNjAsIDM4LCA3LCA0LCAxLCAyNDIsIDYwLCAzOCwgNywgNCwgMSwgMTkzLCAzOCwgNywgNCwgMSwgCisgICAgMTUzLCAzOCwgNywgNCwgMSwgMjE3LCAxNTIsIDM4LCA3LCA0LCAxLCAyMTQsIDEwNSwgMzgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKKyAgICAyNiwgNiwgMSwgMjQxLCAxOTYsIDI2LCA0LCAxLCAyNDEsIDE5NiwgMjYsIDYsIDEsIDI1NCwgMjMsIDIyMSwgMjQ2LCAyNiwgCisgICAgNCwgMSwgMjU0LCAyMywgMjIxLCAyNDYsIDI2LCAyMjcsIDE5OCwgNTAsIDI2LCAyMzIsIDEwOCwgMjI3LCAxOTgsIDUwLCAKKyAgICAyNiwgNiwgMSwgMjI2LCA1MSwgMjQ3LCAyMjcsIDI2LCA0LCAxLCAyMjYsIDUxLCAyNDcsIDIyNywgMjYsIDIxMCwgMjE5LCAKKyAgICAyNiwgNCwgMjIzLCA0OSwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgNCwgMjQ2LCAxMTgsIDIzMiwgODMsIDIxOSwgCisgICAgMTc4LCA4NywgMjYsIDQsIDIyMywgNDksIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCAyMjQsIDEzLCAKKyAgICA3OCwgMjYsIDIxNiwgMTgsIDI2LCAyNDcsIDI1MiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMTYsIDE4LCAKKyAgICAyNiwgMjU0LCA5NywgMjE3LCAyLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjE2LCAKKyAgICAxOCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgMTgsIDI2LCAKKyAgICA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjU0LCAxNDMsIDI2LCA2LCAxLCAKKyAgICAyNTIsIDI2LCAyNiwgNiwgMSwgMjQzLCAxMDcsIDI2LCA2LCAxLCAyNDgsIDU0LCAyNiwgNiwgMSwgMjQ1LCAxMDAsIDI2LCAKKyAgICA2LCAxLCAyMTAsIDg1LCAyNiwgNiwgMSwgMjQ1LCA2MywgMjYsIDYsIDEsIDIxNiwgMTc5LCAyNiwgNiwgMSwgMjM1LCAxODUsIAorICAgIDI2LCA2LCAxLCAyMzQsIDIyMiwgMjYsIDYsIDEsIDIzMywgOTgsIDI2LCA2LCAxLCAyMzAsIDEwMiwgMjYsIDYsIDEsIDIyNywgCisgICAgMjM3LCAyNiwgNiwgMSwgMjExLCAxNTcsIDI2LCA2LCAxLCAyMjYsIDE5OSwgMjYsIDYsIDEsIDIyNSwgMTA4LCAyNiwgNiwgCisgICAgMSwgMjIzLCAzNywgMjYsIDYsIDEsIDIxOSwgMTc3LCAyNiwgNiwgMSwgMjE3LCA0MSwgMjYsIDYsIDEsIDIxNCwgMTU3LCAKKyAgICAyNiwgNiwgMSwgMjI1LCAxMzMsIDI2LCA2LCAxLCAyNTAsIDExMCwgMjYsIDYsIDEsIDIyNCwgMTYxLCAyNiwgNiwgMSwgCisgICAgMjI2LCAyMDEsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTEsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAKKyAgICAyNTEsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIDE4LCAyNiwgCisgICAgNCwgMSwgMjQ1LCA2NCwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTgsIDIsIDI0NywgMjUyLCAyMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDI1NCwgMTQzLCAyNiwgNCwgMSwgMjUyLCAyNiwgMjYsIAorICAgIDQsIDEsIDI0MywgMTA3LCAyNiwgNCwgMSwgMjQ4LCA1NCwgMjYsIDQsIDEsIDI0NSwgMTAwLCAyNiwgNCwgMSwgMjEwLCA4NSwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjMsIDI2LCA0LCAxLCAyMTYsIDE3OSwgMjYsIDQsIDEsIDIzNSwgMTg1LCAyNiwgNCwgMSwgMjM0LCAKKyAgICAyMjIsIDI2LCA0LCAxLCAyMzMsIDk4LCAyNiwgNCwgMSwgMjMwLCAxMDIsIDI2LCA0LCAxLCAyMjcsIDIzNywgMjYsIDQsIDEsIAorICAgIDIxMSwgMTU3LCAyNiwgNCwgMSwgMjI2LCAxOTksIDI2LCA0LCAxLCAyMjUsIDEwOCwgMjYsIDQsIDEsIDIyMywgMzcsIDI2LCAKKyAgICA0LCAxLCA0MCwgMjE5LCAxNzcsIDI2LCA0LCAxLCAyMTksIDE3NywgMjYsIDQsIDEsIDIxNywgNDEsIDI2LCA0LCAxLCAyMTQsIAorICAgIDE1NywgMjYsIDQsIDEsIDIyNSwgMTMzLCAyNiwgNCwgMSwgMjUwLCAxMTAsIDI2LCA0LCAxLCAyMjQsIDE2MSwgMjYsIDQsIAorICAgIDEsIDIyNiwgMjAxLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUxLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgCisgICAgMjUxLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOCwgMjYsIAorICAgIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDE4LCAyNiwgNiwgMjM0LCAyNDcsIDg3LCAyNiwgMjUyLCAyNywgODcsIDI2LCAKKyAgICAyMTYsIDE4MCwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQxLCA1MiwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjU1LCAzLCAyMiwgCisgICAgMjQxLCA1MiwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQ4LCAyLCAyMiwgMjQxLCA1MiwgODcsIDI2LCAyMjUsIDEzNCwgODcsIAorICAgIDI2LCAyMjUsIDEwOSwgODcsIDI2LCAyMzQsIDI0NywgODcsIDI2LCAxLCAyNTQsIDIzLCAyMzQsIDYsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDIzLCAyMzQsIDYsIDI2LCAxLCAyMTgsIDEzNywgMjYsIDQsIDEsIDIxOCwgMTM3LCAyNiwgMSwgMjQ3LCAyMjcsIAorICAgIDI2LCA0LCAxLCAyNDcsIDIyNywgMjYsIDEsIDIzNCwgNiwgMjYsIDQsIDEsIDIzNCwgNiwgMjYsIDEsIDIyMSwgMjQ2LCAyNiwgCisgICAgNCwgMSwgMjIxLCAyNDYsIDgxLCA2LCAxLCAyMjAsIDU1LCA4MSwgNCwgMSwgMjIwLCA1NSwgODEsIDYsIDEsIDI0NCwgMTQwLCAKKyAgICA4MSwgNCwgMSwgMjQ0LCAxNDAsIDgxLCA2LCAxLCAyMzQsIDExNywgODEsIDQsIDEsIDIzNCwgMTE3LCA4MSwgNiwgMSwgCisgICAgMjQxLCA0NSwgODEsIDQsIDEsIDI0MSwgNDUsIDgxLCA2LCAxLCAyNDMsIDEwMiwgODEsIDQsIDEsIDI0MywgMTAyLCA4MSwgCisgICAgNiwgMSwgMjIwLCAyMiwgODEsIDQsIDEsIDIyMCwgMjIsIDgxLCA2LCAxLCAyNDgsIDY5LCA4MSwgNCwgMSwgMjQ4LCA2OSwgCisgICAgMjYsIDIzNCwgMjIzLCA4NywgMjYsIDIyMywgMzgsIDg3LCAyNiwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgMSwgMjEwLCAKKyAgICAyMjQsIDI2LCA2LCAyMTYsIDE4MCwgODcsIDI2LCAyMzIsIDgzLCAyNDUsIDEwMSwgODcsIDI2LCAyMjMsIDQ5LCAyMzIsIAorICAgIDgzLCAyNDUsIDEwMSwgODcsIDI2LCA2LCAxLCAyMjAsIDcsIDI2LCA0LCAxLCAyMjAsIDcsIDI2LCA2LCAyMzIsIDgzLCAKKyAgICAyMTksIDE3OCwgODcsIDI2LCA2LCAxLCAyMjEsIDI0MywgMjYsIDQsIDEsIDIyMSwgMjQzLCAyNiwgMjIzLCAzOCwgMiwgCisgICAgMjE4LCAxMDMsIDg3LCAyNiwgNiwgMjIzLCA0OSwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMjQ2LCAxMTgsIAorICAgIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDYsIDIyMywgNDksIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIDE3OCwgODcsIAorICAgIDMzLCA2LCAxLCAyMzYsIDYxLCAyLCAyNDIsIDEzNiwgMzMsIDYsIDEsIDIzNSwgMTg5LCAzMywgNiwgMSwgMjQ3LCAxNjIsIAorICAgIDMzLCA2LCAxLCAyNDIsIDE4NywgMzMsIDYsIDEsIDIxNCwgMjAyLCAyMzYsIDYwLCAzMywgNiwgMSwgMjQ2LCAzNiwgMzMsIAorICAgIDYsIDEsIDI1MSwgNzYsIDczLCAzMywgNiwgMSwgMjExLCA4LCAzMywgNiwgMSwgMjM1LCAxMjYsIDMzLCA2LCAxLCAyMzIsIAorICAgIDE4NywgMzMsIDYsIDEsIDIyOCwgMTc4LCAzMywgNiwgMSwgMjE1LCAxNzQsIDMzLCA2LCAxLCAyMzQsIDQ4LCAzMywgNiwgMSwgCisgICAgMjQwLCAxNTQsIDIsIDI0MiwgMTM2LCAzMywgNiwgMSwgMjE5LCAyNTEsIDcwLCAzMywgNiwgMSwgMjQ2LCAzMiwgMzMsIDYsIAorICAgIDEsIDYxLCAzMywgNiwgMSwgMjUyLCA3NSwgMzMsIDYsIDEsIDIxMywgMjU1LCAzMywgNiwgMSwgMjQyLCAyMzYsIDMzLCA2LCAKKyAgICAxLCAyNDgsIDkwLCAzMywgNiwgMSwgMjM2LCA2MCwgMzMsIDYsIDEsIDIxMCwgNzQsIDMzLCA2LCAxLCAyMTAsIDk0LCAzMywgCisgICAgNiwgMSwgNzMsIDMzLCA2LCAxLCAyMTksIDI1MSwgNzMsIDMzLCA2LCAxLCAxNzYsIDMzLCA2LCAxLCAyNDUsIDE3NCwgMzMsIAorICAgIDYsIDEsIDI0NSwgMTU5LCAzMywgNiwgMSwgMjQ1LCAxNTAsIDMzLCA2LCAxLCA3NiwgMzMsIDYsIDEsIDIyNSwgMjIxLCAzMywgCisgICAgNiwgMSwgMjQ1LCA5MiwgMzMsIDYsIDEsIDI0NSwgODIsIDMzLCA2LCAxLCAyMTcsIDIyLCAzMywgNiwgMSwgNzAsIDMzLCA2LCAKKyAgICAxLCAyNDUsIDIwMiwgMzMsIDYsIDEsIDE2MiwgMzMsIDYsIDEsIDIxNSwgMTc4LCAzMywgNiwgMSwgMjUwLCAxMzEsIDMzLCAKKyAgICA2LCAxLCAyMjAsIDEwMiwgMzMsIDYsIDEsIDIyMCwgNjUsIDMzLCA2LCAxLCAyNDIsIDMsIDUwLCAzMywgNiwgMSwgMjExLCAKKyAgICAyNywgMzMsIDYsIDEsIDIxOSwgNTIsIDUwLCAzMywgNiwgMSwgNzUsIDMzLCA2LCAxLCAyMTAsIDIxMiwgMzMsIDYsIDEsIAorICAgIDE5MSwgMzMsIDQsIDEsIDYxLCAzMywgNCwgMSwgMjUyLCA3NSwgMzMsIDQsIDEsIDIxMywgMjU1LCAzMywgNCwgMSwgMjQyLCAKKyAgICAyMzYsIDMzLCA0LCAxLCAyNDgsIDkwLCAzMywgNCwgMSwgMjM2LCA2MCwgMzMsIDQsIDEsIDIxMCwgNzQsIDMzLCA0LCAxLCAKKyAgICAyMTAsIDk0LCAzMywgNCwgMSwgNzMsIDMzLCA0LCAxLCAyMTksIDI1MSwgNzMsIDMzLCA0LCAxLCAxNzYsIDMzLCA0LCAxLCAKKyAgICAyNDUsIDE3NCwgMzMsIDQsIDEsIDI0NSwgMTU5LCAzMywgNCwgMSwgMjQ1LCAxNTAsIDMzLCA0LCAxLCA3NiwgMzMsIDQsIDEsIAorICAgIDIyNSwgMjIxLCAzMywgNCwgMSwgMjQ1LCA5MiwgMzMsIDQsIDEsIDI0NSwgODIsIDMzLCA0LCAxLCAyMTcsIDIyLCAzMywgNCwgCisgICAgMSwgNzAsIDMzLCA0LCAxLCAyNDUsIDIwMiwgMzMsIDQsIDEsIDE2MiwgMzMsIDQsIDEsIDIxNSwgMTc4LCAzMywgNCwgMSwgCisgICAgMjUwLCAxMzEsIDMzLCA0LCAxLCAyMjAsIDEwMiwgMzMsIDQsIDEsIDIyMCwgNjUsIDMzLCA0LCAxLCAyNDIsIDMsIDUwLCAKKyAgICAzMywgNCwgMSwgMjExLCAyNywgMzMsIDQsIDEsIDIxOSwgNTIsIDUwLCAzMywgNCwgMSwgNzUsIDMzLCA0LCAxLCAyMTAsIAorICAgIDIxMiwgMzMsIDQsIDEsIDE5MSwgMzMsIDQsIDEsIDIzNiwgNjEsIDIsIDI0MiwgMTM2LCAzMywgNCwgMSwgMjM1LCAxODksIAorICAgIDMzLCA0LCAxLCAyNDcsIDE2MiwgMzMsIDQsIDEsIDI0MiwgMTg3LCAzMywgNCwgMSwgMjE0LCAyMDIsIDIzNiwgNjAsIDMzLCAKKyAgICA0LCAxLCAyNDYsIDM2LCAzMywgNCwgMSwgMjUxLCA3NiwgNzMsIDMzLCA0LCAxLCAyMTEsIDgsIDMzLCA0LCAxLCAyMzUsIAorICAgIDEyNiwgMzMsIDQsIDEsIDIzMiwgMTg3LCAzMywgNCwgMSwgMjI4LCAxNzgsIDMzLCA0LCAxLCAyMTUsIDE3NCwgMzMsIDQsIAorICAgIDEsIDIzNCwgNDgsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjQyLCAxMzYsIDMzLCA0LCAxLCAyMTksIDI1MSwgNzAsIDMzLCAKKyAgICA0LCAxLCAyNDYsIDMyLCAzMywgNiwgMSwgMjI2LCAyMDEsIDMzLCA0LCAxLCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIxMSwgNTksIAorICAgIDMzLCA0LCAxLCAyMTEsIDU5LCAzMywgNiwgMSwgMjM1LCAxODMsIDc1LCAzMywgNCwgMSwgMjM1LCAxODMsIDc1LCAzMywgNiwgCisgICAgMSwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIAorICAgIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA2LCAxLCAKKyAgICAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA2LCAxLCAyMzUsIDE4MywgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxODMsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDYsIDEsIAorICAgIDIzMywgMjMzLCAzMywgNCwgMSwgMjMzLCAyMzMsIDMzLCA2LCAxLCAyMjQsIDE2MSwgMzMsIDQsIDEsIDIyNCwgMTYxLCAzMywgCisgICAgNiwgMSwgMjQ0LCA4MiwgMzMsIDQsIDEsIDI0NCwgODIsIDMzLCA2LCAxLCAyMzUsIDE0NiwgMzMsIDQsIDEsIDIzNSwgMTQ2LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxNDcsIDIsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgMzMsIDQsIDEsIDIzNSwgMTQ3LCAyLCA1MiwgCisgICAgMjQyLCAxMzcsIDI1NSwgMTQsIDMzLCA2LCAxLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIxNCwgMjA1LCAzMywgNiwgMSwgMjIyLCAKKyAgICAxODUsIDIyNiwgMjAxLCAzMywgNCwgMSwgMjIyLCAxODUsIDIyNiwgMjAxLCAzMywgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgCisgICAgNjUsIDMzLCA0LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCA2NSwgMzMsIDYsIDEsIDIyNiwgMTQwLCAzMywgNCwgMSwgMjI2LCAKKyAgICAxNDAsIDMzLCA2LCAxLCAyMzQsIDYsIDMzLCA0LCAxLCAyMzQsIDYsIDMzLCAyMTYsIDE0NiwgNTAsIDM4LCAzMywgMjE2LCAKKyAgICA2NSwgMzgsIDMzLCAyMjYsIDY1LCAzOCwgMzMsIDI0OCwgMTU0LCAyMjUsIDE4LCAzOCwgMzMsIDIyNCwgMTU1LCAyMjUsIAorICAgIDE4LCAzOCwgMzMsIDIyNSwgMywgMzgsIDMzLCAyNDAsIDIxMSwgMjE2LCAxNDYsIDUwLCAzOCwgMzMsIDIzMCwgMTkxLCA1MCwgCisgICAgMzMsIDYsIDEsIDIxOSwgMjUxLCAyNDAsIDE1NCwgMiwgMjE3LCA3NywgMzMsIDQsIDEsIDIxOSwgMjUxLCAyNDAsIDE1NCwgCisgICAgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDIyMCwgMTQ2LCA1MCwgMzMsIDQsIDEsIDIyMCwgMTQ2LCA1MCwgMzMsIDYsIDEsIAorICAgIDI0NSwgOTMsIDIsIDIxNiwgMTE0LCAzMywgNCwgMSwgMjQ1LCA5MywgMiwgMjE2LCAxMTQsIDMzLCA2LCAxLCAyNDIsIDIzNywgCisgICAgMiwgMjE0LCAxNTYsIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgMjE0LCAxNTYsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgOTEsIAorICAgIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgOTEsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIAorICAgIDEsIDI0MiwgMjM3LCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIAorICAgIDIxMCwgNzUsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjEwLCA5NSwgMiwgCisgICAgMjQ4LCAzOSwgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCAyNDgsIDM5LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxMywgMiwgNjcsIDkxLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgNjcsIDkxLCAzMywgNiwgMSwgCisgICAgMjM1LCAxMywgMiwgOTEsIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCA5MSwgMzMsIDYsIDEsIDI1MiwgMTI0LCAxNzYsIDMzLCA0LCAKKyAgICAxLCAyNTIsIDEyNCwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgCisgICAgMjQ4LCAzOSwgMzMsIDYsIDI3LCAyNDUsIDE1MSwgMjQyLCAyMzYsIDMzLCA0LCAyNywgMjQ1LCAxNTEsIDI0MiwgMjM2LCAKKyAgICAzMywgNiwgMSwgMjI1LCAyMjIsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAxLCAyMjUsIDIyMiwgMiwgMjMwLCAyMjQsIAorICAgIDEwMywgMzMsIDYsIDEsIDI1NSwgMjAsIDE2MiwgMzMsIDQsIDEsIDI1NSwgMjAsIDE2MiwgMzMsIDYsIDEsIDI0NSwgODMsIAorICAgIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDUsIDgzLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjE3LCAyMywgMiwgMjQ4LCAzOSwgCisgICAgMzMsIDQsIDEsIDIxNywgMjMsIDIsIDI0OCwgMzksIDMzLCA2LCAxLCAyMTgsIDEyMSwgNzAsIDMzLCA0LCAxLCAyMTgsIAorICAgIDEyMSwgNzAsIDMzLCA2LCAxLCAyMTgsIDEyMSwgMTA0LCAyLCA5MSwgMzMsIDQsIDEsIDIxOCwgMTIxLCAxMDQsIDIsIDkxLCAKKyAgICAzMywgNiwgMSwgMjQyLCA0OSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0MiwgNDksIDIsIDI0OCwgMzksIDMzLCA2LCAyNywgCisgICAgMjE3LCAyMywgMjE1LCAxNzgsIDMzLCA0LCAyNywgMjE3LCAyMywgMjE1LCAxNzgsIDMzLCA2LCAxLCAyNTAsIDEzMiwgMiwgCisgICAgMjQ4LCAzOSwgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIDY3LCA5MSwgCisgICAgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAyMjAsIDMzLCAzMywgNCwgMSwgMjIwLCAzMywgMzMsIAorICAgIDYsIDEsIDI1NSwgMjAsIDI1MCwgMTMxLCAzMywgNCwgMSwgMjU1LCAyMCwgMjUwLCAxMzEsIDMzLCA2LCAxLCAyNTUsIDIwLCAKKyAgICAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI1NSwgMjAsIDI1MCwgMTMyLCAyLCAyNDgsIDM5LCAzMywgMSwgCisgICAgMjI2LCA1OCwgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTQ2LCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNDYsIAorICAgIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCAxMDMsIDMzLCA0LCAxLCAyMzUsIDEzLCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE3NSwgCisgICAgMiwgMjE3LCA3NywgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAyMTcsIDc3LCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDEwMywgCisgICAgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE1MSwgMiwgMjE3LCA3NywgMzMsIDQsIDEsIAorICAgIDI0NSwgMTUxLCAyLCAyMTcsIDc3LCAzMywgNiwgMSwgMjM0LCAxMjcsIDI1MCwgMTMxLCAzMywgNCwgMSwgMjM0LCAxMjcsIAorICAgIDI1MCwgMTMxLCAzMywgNiwgMSwgMjQ1LCAxNjAsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyNDUsIDE2MCwgMiwgMjE3LCA3NywgCisgICAgMzMsIDQsIDEsIDIyNiwgNTgsIDMzLCA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ2LCAzMywgNCwgMSwgMTE1LCAyLCAyNTEsIAorICAgIDE0NiwgMzMsIDYsIDEsIDExNSwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTE1LCAyLCAyNDgsIDEsIDMzLCA2LCAyNywgMTE1LCAKKyAgICAyMzYsIDYwLCAzMywgNCwgMjcsIDExNSwgMjM2LCA2MCwgMzMsIDYsIDEsIDIzNiwgNjEsIDIsIDI1MSwgMTQ2LCAzMywgNCwgCisgICAgMSwgMjM2LCA2MSwgMiwgMjUxLCAxNDYsIDMzLCA2LCAxLCAyMjEsIDE5NSwgMzMsIDQsIDEsIDIyMSwgMTk1LCAzMywgNiwgCisgICAgMSwgMjIxLCAxOTYsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDIyMSwgMTk2LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyMTAsIDc1LCAKKyAgICAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDEsIAorICAgIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyNTUsIDIwLCAyNDYsIDM2LCAzMywgNCwgMSwgMjU1LCAKKyAgICAyMCwgMjQ2LCAzNiwgMzMsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgMzMsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIAorICAgIDIzMiwgMzMsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCAzMywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAxNDQsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDI1MiwgMTM0LCA3NiwgMzMsIAorICAgIDQsIDEsIDI1MiwgMTM0LCA3NiwgMzMsIDYsIDEsIDI1MiwgMTM0LCAxNDQsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI1MiwgCisgICAgMTM0LCAxNDQsIDIsIDI0OCwgMSwgMzMsIDYsIDEsIDE2MCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTYwLCAyLCAyNDgsIDEsIAorICAgIDMzLCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMyLCAzMywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgMzMsIDYsIDEsIDEwNCwgMiwgCisgICAgMjQ4LCAxLCAzMywgNCwgMSwgMTA0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDMzLCA0LCAxLCAKKyAgICAxMDQsIDIsIDUyLCAxNDIsIDMzLCA2LCAxLCAyNTAsIDEzMiwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjUwLCAxMzIsIDIsIAorICAgIDI0OCwgMSwgMzMsIDYsIDEsIDI0MiwgMjM3LCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDI0OCwgMzksIAorICAgIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAKKyAgICAyNDIsIDIzNywgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDIzNywgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIAorICAgIDMzLCA2LCAxLCAyNDIsIDQ5LCAyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCAxMDMsIDMzLCA2LCAxLCAyNDIsIDQ5LCAKKyAgICAyLCA5MSwgMzMsIDQsIDEsIDI0MiwgNDksIDIsIDkxLCAzMywgNiwgMSwgMjM0LCAxNCwgMjQ4LCA5MCwgMzMsIDQsIDEsIAorICAgIDIzNCwgMTQsIDI0OCwgOTAsIDMzLCA2LCAxLCAyMzQsIDE0LCAyNDcsIDE2MiwgMzMsIDQsIDEsIDIzNCwgMTQsIDI0NywgCisgICAgMTYyLCAzMywgNiwgMSwgMjM0LCAxNCwgMjEwLCAyNywgMzMsIDQsIDEsIDIzNCwgMTQsIDIxMCwgMjcsIDMzLCA2LCAxLCAKKyAgICAyMzQsIDE0LCAyNDYsIDMwLCAzMywgNCwgMSwgMjM0LCAxNCwgMjQ2LCAzMCwgMzMsIDYsIDEsIDIzNCwgMTQsIDIzMiwgCisgICAgMTg3LCAzMywgNCwgMSwgMjM0LCAxNCwgMjMyLCAxODcsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMjgsIDE3OCwgMzMsIDQsIDEsIAorICAgIDIzNCwgMTQsIDIyOCwgMTc4LCAzMywgNiwgMSwgMjM0LCAxNCwgMjE5LCAxMDksIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTksIAorICAgIDEwOSwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxNiwgNjAsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTYsIDYwLCAzMywgNiwgMSwgCisgICAgMjIzLCA0OSwgMjEwLCA5NCwgMzMsIDQsIDEsIDIyMywgNDksIDIxMCwgOTQsIDMzLCA2LCAxLCAyNDUsIDE3NSwgMiwgMTAzLCAKKyAgICAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDEwMywgMzMsIDYsIDEsIDIzMiwgMjU0LCAzMywgNCwgMSwgMjMyLCAyNTQsIDMzLCAKKyAgICA2LCAxLCAyMjMsIDM5LCAzMywgNCwgMSwgMjIzLCAzOSwgMzMsIDYsIDEsIDIxMSwgOTIsIDMzLCA0LCAxLCAyMTEsIDkyLCAKKyAgICAzMywgNiwgMSwgMjI0LCA4OCwgMzMsIDQsIDEsIDIyNCwgODgsIDMzLCA2LCAxLCAyMTIsIDIyLCAzMywgNCwgMSwgMjEyLCAKKyAgICAyMiwgMzMsIDYsIDEsIDI1NCwgMTY2LCAxNzYsIDMzLCA0LCAxLCAyNTQsIDE2NiwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNzUsIAorICAgIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDI0NSwgCisgICAgMTUxLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAKKyAgICAyMjUsIDIyMiwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIyNSwgMjIyLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjIwLCAzNCwgCisgICAgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIyMCwgMzQsIDIsIDI0OCwgMzksIDE1MCwgNiwgMSwgMjUzLCAxNjQsIDE1MCwgNiwgCisgICAgMSwgMjUyLCAzOSwgMTUwLCA2LCAxLCAyNDIsIDIwMywgMTUwLCA2LCAxLCAyNDgsIDIyMSwgMTUwLCA2LCAxLCAyNDUsIAorICAgIDIxMywgMTUwLCA2LCAxLCAyMTAsIDExNiwgMTUwLCA2LCAxLCAyNDUsIDE5NywgMTUwLCA2LCAxLCAyNDUsIDY1LCAxNTAsIAorICAgIDYsIDEsIDExMSwgMTUwLCA2LCAxLCAyMTAsIDc0LCAxNTAsIDYsIDEsIDIzNSwgMjI3LCAxNTAsIDYsIDEsIDIzMiwgMTkwLCAKKyAgICAxNTAsIDYsIDEsIDIxMSwgMTYwLCAxNTAsIDYsIDEsIDI1MSwgMzMsIDE1MCwgNiwgMSwgMjM0LCAxNjUsIDE1MCwgNiwgMSwgCisgICAgMjQxLCA2OCwgMTUwLCA2LCAxLCAyMzUsIDE0MSwgMTUwLCA2LCAxLCAyNDIsIDI0NiwgMTUwLCA2LCAxLCAyNTAsIDEyNiwgCisgICAgMTUwLCA2LCAxLCAyMzEsIDU4LCAxNTAsIDYsIDEsIDIxMSwgOCwgMTUwLCA2LCAxLCAyMjgsIDM5LCAxNTAsIDYsIDEsIAorICAgIDIyMCwgMTAyLCAxNTAsIDYsIDEsIDIxMywgMTM4LCAxNTAsIDYsIDEsIDI1MCwgMTU3LCAxNTAsIDYsIDEsIDIyNSwgMjA1LCAKKyAgICAxNTAsIDYsIDEsIDIzNSwgMTEwLCAxNTAsIDYsIDEsIDIwNSwgMTUwLCA2LCAxLCAyMjEsIDE2MSwgMTUwLCA2LCAxLCAyMTMsIAorICAgIDE3OSwgMTUwLCA2LCAxLCAyMTYsIDYyLCAxNTAsIDYsIDEsIDIyMywgOTUsIDE1MCwgNiwgMSwgMjQ5LCAyMzgsIDE1MCwgNiwgCisgICAgMSwgMjEwLCAyNDksIDE1MCwgNiwgMSwgMjI1LCA0NiwgMTUwLCA2LCAxLCAyMzQsIDE3NiwgMTUwLCA2LCAxLCAyMjYsIAorICAgIDIyMiwgMTUwLCA2LCAxLCAyNDQsIDE0MiwgMTUwLCA1OCwgMSwgNDMsIDE2MywgMjIyLCAyMzMsIDE1MCwgMjU0LCA1NywgCisgICAgMTUwLCAyNDUsIDE1NCwgNzgsIDE1MCwgMjQ1LCAzMSwgNzgsIDE1MCwgMjQ5LCAyMTksIDE1MCwgMjI0LCAxMywgNzgsIAorICAgIDE1MCwgMjU1LCAyMSwgNzgsIDE1MCwgNCwgMSwgMjUzLCAxNjQsIDE1MCwgNCwgMSwgMjUyLCAzOSwgMTUwLCA0LCAxLCAKKyAgICAyNDIsIDIwMywgMTUwLCA0LCAxLCAyNDgsIDIyMSwgMTUwLCA0LCAxLCAyNDUsIDIxMywgMTUwLCA0LCAxLCAyMTAsIDExNiwgCisgICAgMTUwLCA0LCAxLCAyNDUsIDE5NywgMTUwLCA0LCAxLCAyNDUsIDY1LCAxNTAsIDQsIDEsIDExMSwgMTUwLCA0LCAxLCAyMTAsIAorICAgIDc0LCAxNTAsIDQsIDEsIDIzNSwgMjI3LCAxNTAsIDQsIDEsIDIzMiwgMTkwLCAxNTAsIDQsIDEsIDIxMSwgMTYwLCAxNTAsIAorICAgIDQsIDEsIDI1MSwgMzMsIDE1MCwgNCwgMSwgMjM0LCAxNjUsIDE1MCwgNCwgMSwgMjQxLCA2OCwgMTUwLCA0LCAxLCAyMzUsIAorICAgIDE0MSwgMTUwLCA0LCAxLCAyNDIsIDI0NiwgMTUwLCA0LCAxLCAyNTAsIDEyNiwgMTUwLCA0LCAxLCAyMzEsIDU4LCAxNTAsIAorICAgIDQsIDEsIDIxMSwgOCwgMTUwLCA0LCAxLCAyMjgsIDM5LCAxNTAsIDQsIDEsIDIyMCwgMTAyLCAxNTAsIDQsIDEsIDIxMywgCisgICAgMTM4LCAxNTAsIDQsIDEsIDI1MCwgMTU3LCAxNTAsIDQsIDEsIDIyNSwgMjA1LCAxNTAsIDQsIDEsIDIzNSwgMTEwLCAxNTAsIAorICAgIDQsIDEsIDIwNSwgMTUwLCA0LCAxLCAyMjEsIDE2MSwgMTUwLCA0LCAxLCAyMTMsIDE3OSwgMTUwLCA0LCAxLCAyMTYsIDYyLCAKKyAgICAxNTAsIDQsIDEsIDIyMywgOTUsIDE1MCwgNCwgMSwgMjQ5LCAyMzgsIDE1MCwgNCwgMSwgMjEwLCAyNDksIDE1MCwgNCwgMSwgCisgICAgMjI1LCA0NiwgMTUwLCA0LCAxLCAyMzQsIDE3NiwgMTUwLCA0LCAxLCAyMjYsIDIyMiwgMTUwLCA0LCAxLCAyNDQsIDE0MiwgCisgICAgMTUwLCA0LCAyNywgMjQ1LCAyMTQsIDIxMCwgMjQ5LCAxNTAsIDI0MywgMjI5LCAyMTgsIDEyOSwgMTUwLCAyNDAsIDE2OCwgCisgICAgMTUwLCAyNDYsIDk1LCA1MCwgOTQsIDI1NSwgMTUsIDI0NSwgNTcsIDk0LCAyNTUsIDE1LCAyMjEsIDE2MiwgOTQsIDI1NSwgCisgICAgMTUsIDIyMCwgODgsIDk0LCAyNTUsIDE1LCAyMTAsIDEwNCwgMjI0LCA3MSwgOTQsIDI1NSwgMTUsIDIxMCwgMTA0LCAyNDMsIAorICAgIDEyNSwgOTQsIDI1NSwgMTUsIDIxNiwgNzUsIDk0LCAyNTUsIDE1LCAyMjMsIDQ3LCA5NCwgMjU1LCAxNSwgMjEwLCAxMDMsIAorICAgIDk0LCAyNTUsIDE1LCAyMjUsIDI0NSwgOTQsIDI1NSwgMTUsIDIxMSwgMjAsIDk0LCAyNTUsIDE1LCAyMTYsIDIxNCwgOTQsIAorICAgIDI1NSwgMTUsIDI0MywgNDEsIDk0LCAyNTUsIDE1LCAyNDMsIDQyLCAyMzAsIDY5LCA5NCwgMjU1LCAxNSwgMjQzLCAzOSwgCisgICAgOTQsIDI1NSwgMTUsIDIyNCwgNzIsIDIyNiwgMTYsIDk0LCAyNTUsIDE1LCAyMTYsIDI1MywgMjQzLCA1NiwgOTQsIDI1NSwgCisgICAgMTUsIDIyNSwgMjI2LCA5NCwgMjU1LCAxNSwgMjUzLCAyMDAsIDI0MiwgNDEsIDk0LCAyNTUsIDE1LCAyMzAsIDc5LCA5NCwgCisgICAgMjU1LCAxNSwgMjMxLCAyMDgsIDk0LCAyNTUsIDE1LCAyMzEsIDQ5LCA5NCwgMjU1LCAxNSwgMjMxLCA1MCwgMjM0LCAxNzcsIAorICAgIDk0LCAyNTUsIDE1LCAyNDgsIDE2MywgOTQsIDI1NSwgMTUsIDIyNCwgODMsIDk0LCAyNTUsIDE1LCAyMTYsIDI1MywgMjI0LCAKKyAgICA2NywgOTQsIDI1NSwgMTUsIDIxMSwgMzAsIDI1MiwgNDAsIDIxMCwgMjMwLCA5NCwgMjU1LCAxNSwgMjI2LCAyMDcsIDk0LCAKKyAgICAyNTUsIDE1LCAyMzYsIDE5LCA5NCwgMjU1LCAxNSwgMjQ4LCA3MCwgOTQsIDI1NSwgMTUsIDIxMCwgMzMsIDk0LCAxNjQsIAorICAgIDIzMSwgMTQzLCAyNTAsIDM1LCA5NCwgMjI1LCAxMSwgMjIwLCAzNiwgOTQsIDIyNSwgMTEsIDI0MSwgMjUwLCAyMjEsIDE2MiwgCisgICAgOTQsIDIyNSwgMTEsIDI0MSwgMjUwLCAyMjUsIDIzOSwgOTQsIDIyNSwgMTEsIDI0MSwgMjUwLCAyMjQsIDc2LCA5NCwgMjI1LCAKKyAgICAxMSwgMjQxLCAxNTgsIDk0LCAyMjUsIDExLCAyMTUsIDE3NiwgOTQsIDIyNSwgMTEsIDIyMSwgMTYyLCA5NCwgMjI1LCAxMSwgCisgICAgMjI1LCAyMzksIDk0LCAyMjUsIDExLCAyMjQsIDc2LCA5NCwgMjI1LCAxMSwgMjQxLCA2MSwgOTQsIDIyNSwgMTEsIDI0MSwgCisgICAgNjIsIDI0MSwgMjUyLCAzMSwgMjE0LCAzLCA5NCwgMjI1LCAxMSwgMjI0LCAxNywgOTQsIDIyNSwgMTEsIDI0OCwgMjA4LCAKKyAgICAxNzcsIDIzMSwgMTcxLCA5NCwgMjI1LCAxMSwgMjMxLCAzOCwgOTQsIDIyNCwgMTQxLCAyMzEsIDE2OCwgOTQsIDIyNSwgMTEsIAorICAgIDIyMywgMTY5LCA5NCwgMjI0LCAxNDEsIDIyNSwgMjQ3LCA5NCwgMjI1LCAxMSwgMjIwLCAyMSwgMjQ3LCAxMjAsIDk0LCAKKyAgICAyMjUsIDExLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAyMjQsIDE0MSwgMjE5LCA1MywgMjI1LCAyNDEsIDk0LCAxNjQsIAorICAgIDIxNCwgMTYwLCAyNDcsIDEyMCwgOTQsIDE2NCwgMjMyLCAxMDgsIDI0NywgMTIwLCA5NCwgMjI0LCAxNDEsIDIyNywgMTk1LCAKKyAgICAyNDIsIDQwLCA5NCwgMjI1LCAxMSwgMjI0LCA3NywgMjI0LCA3MSwgOTQsIDEsIDI1NCwgMTcwLCA5NCwgMSwgMjUyLCAyOCwgCisgICAgOTQsIDEsIDI0MiwgMjAxLCA5NCwgMSwgMjQ4LCAxODksIDk0LCAxLCAyNDEsIDIzOCwgOTQsIDEsIDIxNCwgMywgOTQsIDEsIAorICAgIDIxMCwgOTcsIDk0LCAxLCAyNDEsIDE5NywgOTQsIDEsIDIxNiwgMjMwLCA5NCwgMSwgMjEwLCAyMzMsIDk0LCAxLCA0MCwgCisgICAgMjM0LCAyNTAsIDk0LCAxLCAyMzQsIDI1MCwgOTQsIDEsIDIzMywgOTQsIDk0LCAxLCA0MCwgMjMxLCA2NSwgOTQsIDEsIAorICAgIDIzMSwgNjUsIDk0LCAxLCA0MCwgMjI3LCAxOTQsIDk0LCAxLCAyMjcsIDE5NCwgOTQsIDEsIDIyMSwgMjQ5LCA5NCwgMSwgCisgICAgMjUzLCAxNjIsIDk0LCAxLCA0MCwgMjI1LCAyMjEsIDk0LCAxLCAyMjUsIDIyMSwgOTQsIDEsIDQwLCAyMTUsIDE3OSwgOTQsIAorICAgIDEsIDIxNSwgMTc5LCA5NCwgMSwgMjI0LCAzOSwgOTQsIDEsIDIyMywgNjcsIDk0LCAxLCAyMjAsIDIwLCA5NCwgMSwgMjE3LCAKKyAgICAzOCwgOTQsIDI3LCAyMTEsIDYsIDUyLCAyMTQsIDMsIDk0LCAyNywgMjExLCA2LCAyMTQsIDQsIDIxMCwgMjMzLCA5NCwgMjcsIAorICAgIDIxMSwgNiwgNTIsIDIxMCwgMjMzLCA5NCwgMjI0LCAxNDEsIDI0MywgNDEsIDk0LCAyMjQsIDE0MSwgMjQzLCAzOSwgMTAsIAorICAgIDU0LCA1MCwgMTAsIDUsIDIyMSwgMjQyLCAxMCwgMjQ0LCAzMCwgMjMxLCAxNTQsIDEwLCA1LCAyMjIsIDIzLCAxMCwgNSwgCisgICAgMjIxLCAyNDUsIDI1NCwgMzcsIDI0OSwgMTA5LCAyMjIsIDE5MywgMjU0LCAzNywgMjQ0LCA0LCAyMjIsIDE5MywgMTAsIAorICAgIDIyMywgMTM0LCAyNTQsIDM3LCAyMjUsIDE4MywgMjMwLCAxOTMsIDUwLCAyNTQsIDM3LCAyMjUsIDE4MywgMjE2LCAyNDgsIAorICAgIDIxNiwgMTQ4LCA1MCwgMjU0LCAyMjEsIDUwLCAxMCwgMjQ5LCAyMTksIDEwLCAyNDgsIDE1MCwgMjIwLCAxMzcsIDEwLCAKKyAgICAyMjUsIDEzLCAyMTMsIDI0MSwgNTAsIDEwLCA1LCAyMzAsIDE3NCwgMTAsIDUsIDIyMiwgMywgMjU0LCAxNzIsIDIxMiwgNDUsIAorICAgIDEwLCA1LCAyNTQsIDE3MiwgMjUzLCAyMjEsIDEwLCA1LCAyMjMsIDE2NywgMjU0LCAxNzEsIDEwLCA1LCAyMjMsIDE3NSwgCisgICAgMjU0LCAxNTIsIDI1NCwgMTA0LCAxMCwgNSwgMjE3LCA3MCwgMTAsIDQsIDEyNSwgMjE3LCA4MCwgMTAsIDQsIDEyNSwgMjcsIAorICAgIDExMiwgMiwgMjMzLCAxMDMsIDIsIDIxMSwgNDMsIDEwLCA0LCAxMjUsIDIxMCwgMTA4LCAxMCwgNCwgMjQ0LCAxNjUsIDEwLCAKKyAgICA0LCAyNDgsIDE4NCwgMTAsIDQsIDIzNCwgMjA1LCAxMCwgMjIwLCAxNTAsIDEwLCAyMTUsIDIxMSwgNTksIDIyNCwgMTQxLCAKKyAgICA3OCwgMTAsIDIyNCwgMTMsIDc4LCAxMCwgMSwgMjM0LCAyMDksIDIxMSwgNDMsIDEwLCAxLCAyNDIsIDE5LCAxMCwgMSwgCisgICAgMTEyLCAyLCAyMzEsIDIyOCwgNDgsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNDgsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDQ4LCAKKyAgICAxMCwgMSwgMTEyLCAyLCAyMDIsIDUxLCAxMCwgMSwgNzksIDIsIDIwMiwgNDgsIDEwLCAxLCAyNTQsIDE3MCwgMTAsIDEsIAorICAgIDI1MiwgNTQsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY0LCAxMCwgMSwgMjE3LCA3LCAxMCwgMSwgMjE2LCAxOTIsIDEwLCAxLCAKKyAgICAyMzUsIDEyMywgMTAsIDEsIDI0MiwgMzcsIDEwLCAxLCAyMzQsIDEyOSwgMTAsIDEsIDI0OCwgMTk1LCAxMCwgMSwgMjE2LCAKKyAgICAyMDIsIDEwLCAxLCAyMjMsIDk1LCAxMCwgMSwgMjEwLCAxMDgsIDEwLCAxLCAyMjEsIDE2NiwgMTAsIDEsIDIyMCwgNTksIAorICAgIDEwLCAxLCAyMjIsIDI2LCAxMCwgMSwgMjQ4LCAyMTYsIDEwLCAxLCAyMTcsIDgwLCAxMCwgMSwgMjEwLCAxMTEsIDEwLCAxLCAKKyAgICAyNTQsIDE5NiwgMTAsIDEsIDI0MiwgMjQ0LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIzNCwgCisgICAgMTc1LCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCA3OSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAKKyAgICAyMTcsIDQzLCAxMCwgMSwgMjQ0LCAxNDIsIDEwLCAxLCAyMjQsIDgxLCAxMCwgMSwgMjM0LCAyNTAsIDEwLCAxLCAyMzMsIAorICAgIDEwMiwgMTAsIDEsIDIzMSwgNzgsIDEwLCAxLCAyMjgsIDYyLCAxMCwgMSwgMjQxLCAyMTgsIDEwLCAxLCAyMTIsIDMwLCAxMCwgCisgICAgMSwgMTEyLCAyMzEsIDE5MiwgMTAsIDEsIDIxMSwgNDMsIDEwLCAyNDQsIDE2MywgMTAsIDI0OCwgMTgyLCAxMCwgMjM0LCAKKyAgICAyMDMsIDEwLCAyNDQsIDE2NSwgMTAsIDI0OCwgMTg0LCAxMCwgMjM0LCAyMDUsIDEwLCAyMjAsIDkzLCAxMCwgMjE4LCA0NSwgCisgICAgMTAsIDIzMSwgMjI2LCA0OCwgMTAsIDIwMiwgNDgsIDEwLCAyMDIsIDUxLCAxMCwgMjE4LCA2NSwgMjU0LCAxNzAsIDEwLCAKKyAgICAyMzUsIDE5MywgMjQ4LCAxODQsIDEwLCAxNjQsIDIyOCwgNjMsIDI0MiwgMjE4LCAxMCwgMjA5LCAyNTUsIDEwLCAyNSwgNSwgCisgICAgNCwgMjE0LCAxMDYsIDQ4LCAxMCwgMjUsIDUsIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNDgsIDEwLCAyNSwgNSwgNTksIDUxLCAKKyAgICAxMCwgMjIzLCA0OSwgMjQ4LCAxODQsIDEwLCAyNDQsIDE2NiwgMiwgMTEzLCAyNDcsIDExOCwgMTAsIDIxMiwgMzIsIDIwMiwgCisgICAgNTEsIDI1NCwgMzcsIDIxLCAyMTAsIDg2LCAyNTQsIDM3LCAyMSwgMTEwLCAyNTQsIDM3LCAyMSwgMTA1LCAyNTQsIDM3LCAKKyAgICAyMSwgMTU4LCAyNTQsIDM3LCAyMSwgMTYxLCAyNTQsIDM3LCAyMSwgMTg5LCAyNTQsIDM3LCAyMSwgMTk0LCAyNTQsIDM3LCAKKyAgICAyMSwgMTk4LCAyNTQsIDM3LCAyMSwgMTk1LCAyNTQsIDM3LCAyMSwgMjAwLCAxMCwgMjI1LCAxODIsIDUwLCAxMCwgMjQ4LCAKKyAgICA4MywgMjIwLCAxMzcsIDEwLCAyMTYsIDE0NiwgMjIwLCAxMzcsIDEwLCAyNDQsIDgxLCAyMjUsIDksIDIxOCwgMTU2LCAxMCwgCisgICAgMSwgMjQ3LCAxMTksIDI1MiwgNTQsIDEwLCAxLCAyNDcsIDExOSwgMjI0LCA4MSwgMTAsIDEsIDIxOCwgMjMsIDI1NCwgMTcwLCAKKyAgICAxMCwgMSwgMTEyLCAyMTIsIDQ2LCAxMCwgMSwgMTEyLCAyLCAyMTIsIDMyLCAyMDIsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyMTIsIAorICAgIDMyLCAyMDIsIDUxLCAxMCwgMSwgMTI1LCAyNDIsIDE5LCAxMCwgMSwgMTI1LCAyMDIsIDI1NCwgMTcwLCAxMCwgMSwgMTI1LCAKKyAgICAyMDIsIDIxMiwgMzAsIDEwLCAxLCAxMDQsIDIsIDIwMiwgNDgsIDEwLCAxLCAxMjUsIDIwMiwgMjExLCA0MywgMTAsIDEsIAorICAgIDIxNSwgMTQ4LCAxMCwgMSwgMjE1LCAxNDYsIDEwLCAxLCAyNTIsIDY0LCAxMCwgMSwgMjE3LCA4LCAyLCAyMjIsIDIzMywgCisgICAgMTAsIDEsIDIxNywgOCwgMiwgMTM0LCAxNzAsIDc3LCAyNDYsIDEwMywgMTAsIDEsIDIyNSwgMjA1LCAxMCwgMSwgMjE3LCA1LCAKKyAgICAxMCwgMSwgMjUyLCA1MiwgMTAsIDEsIDEyMiwgMiwgMjAyLCA0OCwgMTAsIDEsIDEyMiwgMiwgMTEzLCAxNzAsIDY3LCA0OCwgCisgICAgMTAsIDEsIDIyNywgMTUzLCAxMCwgMSwgMjQ2LCA0MywgMTAsIDEsIDEyMiwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCAKKyAgICAyNiwgMTAsIDEsIDIxNywgMjQsIDEwLCAxLCAyNDgsIDEzMCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAyMjIsIDIzMywgMTAsIDEsIAorICAgIDI0OCwgMTk2LCAyLCA1OSwgNTEsIDEwLCAxLCAyNDgsIDE5NiwgMiwgNTksIDI1MiwgNDMsIDIyLCA0LCAyMTcsIDgwLCAxMCwgCisgICAgMSwgMjQ4LCAyMDEsIDEwLCAxLCAyNDgsIDEzMiwgMTAsIDEsIDI0NiwgNzAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMTM0LCAKKyAgICAxNzAsIDc3LCAyNDYsIDEwMywgMTAsIDEsIDI0OCwgMTk2LCAyLCAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjIyLCAxNzEsIAorICAgIDEwLCAxLCAyMjMsIDk2LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDIyMywgOTYsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjIzLCAKKyAgICA5NiwgMiwgNTksIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgNTksIAorICAgIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMzUsIDEyMCwgCisgICAgMTAsIDEsIDIyMywgOTYsIDIsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgNTksIDI1MiwgNDMsIDIyLCAKKyAgICA1OSwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjIxLCAxNjcsIDIsIDEzNCwgMTcwLCAKKyAgICAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjIyLCAyNywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjIyLCAKKyAgICAyNywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCA4MSwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIAorICAgIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI0NywgMTE5LCAyNDQsIDE0MiwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgMjMwLCAKKyAgICAxMDksIDUxLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDU5LCA1MSwgMTAsIDEsIDIxMywgMjQ4LCAxMCwgMSwgMjQ0LCAxNDMsIDIsIAorICAgIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDIyNSwgMjAzLCAxMCwgMSwgMjI0LCA4MiwgMiwgNTksIDQ4LCAxMCwgMSwgMjI0LCA4MiwgCisgICAgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAxNzQsIDEwLCAxLCAyMTcsIDI1MCwgMjM0LCAyNTAsIDEwLCAxLCAyMzQsIAorICAgIDI1MSwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMzQsIDI1MSwgMiwgNTksIDQ4LCAxMCwgMSwgMjI5LCA3OSwgMTAsIDEsIDIzNCwgCisgICAgMjUxLCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyNDMsIDEyMiwgMTAsIDEsIDI0MywgMTIzLCAyLCAyMjIsIDIzMywgMTAsIAorICAgIDEsIDIyOSwgMiwgMTAsIDEsIDI0MywgMTIzLCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyNDIsIDEwMSwgMTAsIDEsIDI0MywgCisgICAgMTIzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMzMsIDEwMywgCisgICAgMiwgNTksIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCAxMzQsIAorICAgIDE3MCwgNTEsIDEwLCAxLCAyMjgsIDYzLCAyLCA1OSwgNTEsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOCwgMTAsIDEsIDIyMiwgCisgICAgMjE0LCAxMCwgMSwgMjI4LCA2MywgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMjgsIDYzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDEsIDEwLCAxLCAyMTcsIDI3LCAyLCA1OSwgNDgsIDEwLCAxLCAyNDEsIDIxOSwgMiwgNzksIAorICAgIDQ4LCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcxLCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCAyLCAyMDIsIDQ4LCAxMCwgCisgICAgMSwgMjE3LCA4LCAyMzEsIDE2NSwgMjQyLCAxNzEsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMjIsIDIzMywgMTAsIDEsIDIzNCwgCisgICAgNzMsIDIyNiwgMjM0LCAxMCwgMSwgMjI2LCAyMzQsIDEwLCAxLCA3MCwgMTAsIDEsIDIxMCwgMjEyLCAxMCwgMSwgMjM0LCAKKyAgICA3MywgMjEwLCAyMTIsIDEwLCAxLCAyMTIsIDMxLCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMTMsIDI1NSwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCAyMTEsIDQzLCAxMCwgMSwgNzksIDIsIDIxNywgNzcsIDEwLCAxLCA3OSwgMiwgNCwgMjE0LCAxMDUsIDEwLCAKKyAgICAxLCAyMTIsIDMxLCAyLCA1OSwgNDgsIDEwLCAxLCA3NSwgMTAsIDEsIDc5LCAyLCAxMzQsIDE3MCwgNTEsIDEwLCAxLCA3OSwgCisgICAgMjUyLCAxMzIsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDIwMiwgNDgsIDEwLCAyNDMsIDIyOSwgMjE4LCAxMjksIDEwLCAxLCAKKyAgICAyNTQsIDI0MywgMTAsIDQsIDEyNSwgMjcsIDIyMiwgMjcsIDIsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkyLCAxMCwgNCwgCisgICAgMTI1LCAyNywgMjI0LCA4MiwgMiwgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTIsIDEwLCA0LCAxMjUsIDY2LCA2NSwgMTcsIAorICAgIDEwLCA0LCAxMjUsIDIzMywgMTAzLCAyNTQsIDE3MCwgMTAsIDQsIDEyNSwgMjM1LCAxMjMsIDEwLCA0LCAxMjUsIDEzNCwgCisgICAgMjQ3LCAxMTgsIDEwLCA0LCAxMjUsIDIyMSwgMTY2LCAxMCwgMjQ1LCAxNDMsIDY0LCAyNTMsIDE2NiwgMTAsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjIyLCAxMzgsIDI0NSwgMTc1LCAyNDEsIDE1NSwgMTAsIDQsIDEyNSwgMjIyLCAxODMsIDIxMCwgODYsIDEwLCA0LCAKKyAgICAxMjUsIDIxNCwgMTU5LCAyMjMsIDExNSwgMjEwLCA4NiwgMTAsIDQsIDEyNSwgMjQ3LCAxMTksIDI0MSwgMjM2LCA2NCwgCisgICAgMjM0LCAxMjksIDEwLCA0LCAxMjUsIDY2LCA1MywgMTcsIDEwLCA0LCAxMjEsIDIyMSwgMTY2LCAxMCwgNCwgMTI1LCAyMzEsIAorICAgIDIyNywgMTAsIDQsIDIxMiwgMzAsIDEwLCA0LCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAKKyAgICAyMjgsIDYyLCAxMCwgMjI1LCA0MSwgNjQsIDIyMiwgMTMsIDEwLCAyNDUsIDE1MiwgMjUwLCAxNzUsIDEyMSwgMjE4LCAxMjksIAorICAgIDEwLCAyNDUsIDE1MiwgMjUwLCAxNzUsIDEyNSwgMjE4LCAxMjksIDEwLCAyMjIsIDE4MywgMTI1LCAyMTgsIDEzMCwgMiwgCisgICAgMjQ0LCAxMDQsIDI1MCwgMTc0LCAxMCwgNCwgMTIxLCAyMzEsIDc4LCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDIzNSwgMTkzLCAKKyAgICAyMTQsIDEwNSwgMTAsIDEsIDIyMywgOTYsIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIAorICAgIDIxMCwgODYsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTAsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMDUsIDI0NSwgMjIsIAorICAgIDI1NCwgMzcsIDIxLCAxNTgsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxNjEsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxODksIAorICAgIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxOTQsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxOTgsIDI0NSwgMjIsIDI1NCwgMzcsIAorICAgIDIxLCAxOTUsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAyMDAsIDEwLCAxLCAyMjAsIDYwLCAyLCA1OSwgNTEsIDEwLCAxLCAKKyAgICAyNDgsIDIxNywgMiwgNTksIDUxLCAxMCwgMSwgMjQyLCAyNDUsIDIsIDU5LCA1MSwgMTAsIDUsIDIxOSwgMTU4LCAyNTQsIAorICAgIDEyNiwgMTAsIDUsIDIxOSwgMTU4LCAyMjQsIDIzNSwgMjMxLCA1OCwgMTAsIDEsIDI0MSwgMjE5LCAyLCAyMzUsIDE5MywgCisgICAgMjE0LCAxMDUsIDE4OCwgMjQ1LCAxNDMsIDY0LCAyMjYsIDE0LCAxODgsIDIxOCwgMTksIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgMTg4LCAyMTgsIDY3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDE4OCwgMjE4LCAxOSwgMjQ5LCAyMjYsIDE4OCwgMjE4LCA2NywgCisgICAgMjQ5LCAyMjYsIDE4OCwgMjAzLCAyNDksIDIyNiwgMTg4LCAyNDksIDIyNywgMjE5LCAxMDYsIDIzMywgNDYsIDE4OCwgMjQ5LCAKKyAgICAyMjcsIDIxOSwgMTA2LCAyMjIsIDI1MSwgMTg4LCAyMTgsIDE5LCAyNDksIDIyNywgMjE5LCAxMDYsIDIzMywgNDYsIDE4OCwgCisgICAgMjE4LCA2NywgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMjIsIDI1MSwgMTg4LCAyNDksIDE4MCwgMTg4LCAyNDIsIDEsIDIyNiwgCisgICAgMjUwLCAxODgsIDI0MiwgMSwgMjMxLCAzNiwgMTg4LCAyNDIsIDEsIDI1MywgMjE4LCAxODgsIDI1NSwgMjEsIDc4LCAxODgsIAorICAgIDEsIDI1NCwgMTc0LCAxODgsIDEsIDIxOCwgMjMsIDI1NCwgMTc0LCAxODgsIDEsIDI1MiwgMjUsIDE4OCwgMSwgMjQzLCAKKyAgICAxMTMsIDE4OCwgMSwgMjQzLCAxMTQsIDI0MywgOTEsIDE4OCwgMSwgMjQ4LCAxOTIsIDE4OCwgMSwgMjQ3LCAxMTksIDI0OCwgCisgICAgMTkzLCAyMjIsIDIyOSwgMTg4LCAxLCAyNDEsIDIzOCwgMTg4LCAxLCAyMTIsIDMwLCAxODgsIDEsIDIxMCwgMTA4LCAxODgsIAorICAgIDEsIDI0MSwgMTk1LCAxODgsIDEsIDIxNiwgMjI2LCAxODgsIDEsIDIxNiwgMjI3LCAyNDMsIDkxLCAxODgsIDEsIDIxMCwgCisgICAgMTk5LCAxODgsIDEsIDIxMCwgMjAwLCAyNDEsIDIzOCwgMTg4LCAxLCAyMzQsIDIyNSwgMTg4LCAxLCAyMzMsIDEwMSwgMTg4LCAKKyAgICAxLCAyMzAsIDE5MCwgMTg4LCAxLCAyMjcsIDE5NCwgMTg4LCAxLCAyMjAsIDE0MywgMTg4LCAxLCA0MCwgMjIwLCAxNDMsIAorICAgIDE4OCwgMSwgNzUsIDE4OCwgMSwgMjI1LCAyMjEsIDE4OCwgMSwgMjIzLCA0OSwgMjI1LCAyMjEsIDE4OCwgMSwgMjIyLCAyNCwgCisgICAgMTg4LCAxLCAyMjQsIDc1LCAxODgsIDEsIDIyMiwgMjI5LCAxODgsIDEsIDIyMCwgMjAsIDE4OCwgMSwgMjE3LCAzNiwgMTg4LCAKKyAgICAxLCAyMjUsIDE2OSwgMjUyLCAxMiwgMTg4LCAxLCAyMjUsIDE2OSwgMjQyLCAyNDIsIDE4OCwgMSwgMjI1LCAxNjksIDI0OCwgCisgICAgMjAsIDE4OCwgMjI0LCAxNTEsIDQ4LCAxODgsIDIyNCwgMTUxLCA1MSwgMTg4LCAyMjQsIDE1MSwgMjQ2LCAxMTcsIDE4OCwgCisgICAgMjEwLCAxNywgNDgsIDE4OCwgMjEwLCAxNywgNTEsIDE4OCwgMjEwLCAxNywgMjQ2LCAxMTcsIDE4OCwgMjIzLCAxMzEsIDQ4LCAKKyAgICAxODgsIDIyMywgMTMxLCA1MSwgMTg4LCAyNDYsIDExOCwgMjEwLCAyNCwgMjQxLCA0NCwgMTg4LCAyNDYsIDExOCwgMjEwLCAKKyAgICAyNCwgMjU0LCAxMDUsIDE4OCwgMjQxLCAyNDEsIDQ4LCAxODgsIDI0MSwgMjQxLCA1MSwgMTg4LCAyNDEsIDI0MCwgMjQ2LCAKKyAgICAxMTcsIDE4OCwgMjQ1LCA3OSwgNDgsIDE4OCwgMjQ1LCA3OSwgNTEsIDE4OCwgMjIyLCAxMDcsIDE4OCwgMjQ0LCAxMzYsIAorICAgIDI0NywgMTIwLCAxODgsIDIyMywgMjQ4LCAxODgsIDIyMiwgMTM0LCAxODgsIDExMywgNjcsIDE3MCwgNDgsIDE4OCwgMTEzLCAKKyAgICA2NywgMTcwLCA1MSwgMTg4LCAxMzQsIDE3MCwgNDgsIDE4OCwgMTM0LCAxNzAsIDUxLCAxODgsIDIyNiwgMjQ4LCAyMzIsIAorICAgIDIxNCwgNDgsIDE4OCwgMjI2LCAyNDgsIDIzMiwgMjE0LCA1MSwgMTg4LCAyMzAsIDU2LCAxODgsIDI1MiwgMTMxLCAxODgsIAorICAgIDEsIDIxOSwgNDksIDIxMCwgODAsIDE4OCwgMSwgMjE5LCA0OSwgMjM0LCAxMjIsIDE4OCwgMSwgMjE5LCA0OSwgMjQ0LCAKKyAgICAxNTQsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMzQsIDE3MCwgMjQwLCAyNTAsIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgNTksIAorICAgIDI1MiwgNDMsIDIyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgCisgICAgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgMjUyLCA0MywgMjIsIDExMywgMTcwLCAKKyAgICA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIDExMywgMTcwLCAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgCisgICAgMjM1LCAxOTMsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMTIyLCAyLCAKKyAgICAxMTMsIDE3MCwgNDgsIDEwLCAxLCAxMjIsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDI0OCwgCisgICAgMTk2LCAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDI1MiwgNDMsIDIyLCA0LCAyMTcsIDgwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIAorICAgIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyMjMsIDk2LCAyLCA5MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAKKyAgICAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAKKyAgICAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCAKKyAgICA0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAyNDQsIDE0MywgMiwgMTM0LCAxNzAsIDIyNSwgCisgICAgNywgMjE0LCAxNTMsIDUxLCAxMCwgMSwgMjM0LCAxNzUsIDIsIDU5LCA0OCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMzQsIAorICAgIDE3MCwgNDgsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDUxLCAxMCwgMSwgNjYsIAorICAgIDIsIDU5LCA0OCwgMTAsIDEsIDY2LCAyLCA1OSwgNTEsIDEwLCAxLCAyMjgsIDYzLCAyLCAxMTMsIDE3MCwgNTEsIDEwLCAxLCAKKyAgICAyMjgsIDYzLCAyLCA0LCAyMTcsIDgwLCAxMCwgMSwgMjI4LCA2MywgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMzMsIDEwMywgCisgICAgMiwgMTMwLCAxMCwgMSwgMjIzLCA5NiwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgMTAsIDEsIDIyMywgOTYsIDIsIAorICAgIDIwMiwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgMTAsIDEsIDEyMiwgMiwgNCwgCisgICAgMTAsIDEsIDIxNywgODEsIDUxLCAxMCwgMSwgMTIyLCAyLCA0LCAxMCwgMSwgMjE3LCA4MSwgMjIsIDExMywgMjQ3LCAxMTgsIAorICAgIDEwLCAxLCAyMjEsIDE2NywgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAxMCwgMSwgMjIzLCA5NiwgCisgICAgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAxMCwgMSwgMTIyLCAyLCA0LCAxMCwgMSwgMjE3LCAKKyAgICA4MSwgNDgsIDEwLCAxLCAxMTIsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMTMsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyNDUsIAorICAgIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIAorICAgIDExMywgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgCisgICAgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjQ0LCAxMSwgNTEsIDEwLCAxLCAyMTIsIDMxLCAyLCAKKyAgICAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIDIxMiwgMzEsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAxMzQsIDQ4LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIAorICAgIDc5LCAyNTIsIDEzMywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAxMjIsIDIsIDI0NSwgMjIsIAorICAgIDI1NCwgMzcsIDIxLCAyNDQsIDExLCA1MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjQ0LCAKKyAgICAxMSwgNDgsIDEwLCAxLCAyMjEsIDE2NywgMiwgMjM1LCAxOTMsIDIxNCwgMTA1LCAxMCwgMSwgMjM0LCAyNTEsIDIsIDExMywgCisgICAgMTcwLCA0OCwgMjE2LCAyMDUsIDEsIDI0MiwgNDYsIDIxNiwgMjA1LCAxLCAyMjAsIDY4LCAyMTYsIDIwNSwgMSwgMjI4LCAKKyAgICA2MSwgMjE2LCAyMDUsIDEsIDIyMywgMTg0LCAyMTYsIDIwNSwgMSwgMjUyLCAxODksIDIxNiwgMjA1LCAxLCAyMzIsIDI1MSwgCisgICAgMjE2LCAyMDUsIDEsIDIzNSwgOCwgMjE2LCAyMDUsIDEsIDI1NCwgMTU5LCAyMTYsIDIwNSwgMSwgMjE0LCAyNSwgMjE2LCAKKyAgICAyMDUsIDEsIDIzMSwgNzcsIDIxNiwgMjA1LCAxLCAyNDQsIDE5NCwgMjE2LCAyMDUsIDEsIDI0OCwgMjMsIDIxNiwgMjA1LCAKKyAgICAxLCAyMTYsIDIwNywgMjE2LCAyMDUsIDEsIDIzMywgMTMxLCAyMTYsIDIwNSwgMSwgMjQzLCAxMzEsIDIxNiwgMjA1LCAxLCAKKyAgICAyNDIsIDE3NywgMjE2LCAyMDUsIDEsIDIyMSwgMTY1LCAyMTYsIDIwNSwgMSwgMjQ4LCAxNDgsIDIxNiwgMjA1LCAxLCAyMTAsIAorICAgIDEwMCwgMjE2LCAyMDUsIDEsIDIxNywgMzcsIDIxNiwgMjA1LCAxLCAyMTEsIDEwMywgMjE2LCAyMDUsIDEsIDIyNSwgMjMzLCAKKyAgICAyMTYsIDIwNSwgMSwgMjM1LCAxMjgsIDIxNiwgMjA1LCAxLCAyNTAsIDEzNCwgMjE2LCAyMDUsIDEsIDIxNSwgMTU1LCAyMTYsIAorICAgIDIwNSwgMSwgMjQxLCAxODgsIDIxNiwgMjA1LCAxLCAyMzQsIDEzMSwgMjE2LCAyMDUsIDEsIDIxNiwgMjA2LCAyMTYsIDIwNSwgCisgICAgMSwgMjEwLCAxMTUsIDIxNiwgMjA1LCAxLCAyMjAsIDU4LCAyMTYsIDIwNSwgMSwgMjIyLCAzMCwgMjE2LCAyMDUsIDEsIAorICAgIDI0OCwgMjE5LCAyMTYsIDIwNSwgMSwgMTExLCAyMTYsIDIwNSwgMSwgMjEwLCAyMywgMjE2LCAyMDUsIDEsIDI1NCwgMTkzLCAKKyAgICAyMTYsIDIwNSwgMSwgMjQyLCAyNDMsIDIxNiwgMjA1LCAxLCAyMjQsIDg1LCAyMTYsIDIwNSwgMSwgMjEyLCA2MywgMjE2LCAKKyAgICAyMDUsIDI1NSwgMjIsIDIxNiwgMjA1LCAyNTUsIDM4LCAyMTYsIDIwNSwgMjQwLCAxMTQsIDIxNiwgMjA1LCAyNDUsIDIwOCwgCisgICAgMjE2LCAyMDUsIDIxNCwgMjIyLCAyMTYsIDIwNSwgMjI2LCAxODIsIDIxNiwgMjA1LCAyNDUsIDIxNiwgMjE2LCAyMDUsIAorICAgIDI0NSwgMTYsIDIxNiwgMjA1LCAyMjYsIDI0NywgMjE2LCAyMDUsIDIyNiwgMjU1LCAyMTYsIDIwNSwgMjE4LCA0NSwgMjE2LCAKKyAgICAyMDUsIDEsIDIyOSwgMjI1LCAyMjgsIDEzNywgMjEsIDIxMCwgODYsIDIyOCwgMTM3LCAyMSwgMTEwLCAyMjgsIDEzNywgMjEsIAorICAgIDEwNSwgMjI4LCAxMzcsIDIxLCAxNTgsIDIyOCwgMTM3LCAyMSwgMTYxLCAyMjgsIDEzNywgMjEsIDE4OSwgMjI4LCAxMzcsIAorICAgIDIxLCAxOTQsIDIyOCwgMTM3LCAyMSwgMTk4LCAyMjgsIDEzNywgMjEsIDE5NSwgMjI4LCAxMzcsIDIxLCAyMDAsIDIyOCwgCisgICAgMTM3LCAxLCA2MSwgMjI4LCAxMzcsIDEsIDI0NSwgMjA5LCAyMjgsIDEzNywgMSwgNzMsIDIyOCwgMTM3LCAxLCA3NSwgMjI4LCAKKyAgICAxMzcsIDEsIDcwLCAyMjgsIDEzNywgMSwgMjI2LCAxODMsIDIyOCwgMTM3LCAxLCA3NiwgMjI4LCAxMzcsIDEsIDI0OCwgCisgICAgMjA5LCAyMjgsIDEzNywgMSwgMjMwLCAyNSwgMjI4LCAxMzcsIDEsIDI1MiwgMTkxLCAyMjgsIDEzNywgMSwgMTkwLCAyMjgsIAorICAgIDEzNywgMSwgMjE3LCAxMDUsIDIyOCwgMTM3LCAxLCAyMzUsIDE0MSwgMjI4LCAxMzcsIDEsIDI1MCwgMTU3LCAyMjgsIDEzNywgCisgICAgMSwgMjQ4LCAyMjEsIDIyOCwgMTM3LCAxLCAyMDUsIDIyOCwgMTM3LCAxLCAyMjIsIDE3OSwgMjI4LCAxMzcsIDEsIDIwNiwgCisgICAgMjI4LCAxMzcsIDEsIDI0MywgNzksIDIyOCwgMTM3LCAxLCAyNDQsIDE5NiwgMjI4LCAxMzcsIDEsIDE3NiwgMjI4LCAxMzcsIAorICAgIDEsIDIzMywgMTM1LCAyMjgsIDEzNywgMSwgMjI5LCAyMjksIDIxMSwgMjIzLCAyMjgsIDEzNywgMSwgMTg0LCAyMjgsIDEzNywgCisgICAgMSwgMjI3LCAxNjUsIDIyOCwgMTM3LCAxLCAxOTcsIDIyOCwgMTM3LCAxLCAxNjIsIDIyOCwgMTM3LCAxLCAyMTIsIDY1LCAKKyAgICAyMjgsIDEzNywgMSwgMTkxLCAyMjgsIDEzNywgMSwgMjI3LCAxNjYsIDIxMSwgMjIzLCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgCisgICAgMjM1LCAxNDEsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAyNTAsIDE1NywgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIDIwNSwgMjI4LCAKKyAgICAxMzcsIDM4LCAyMTksIDI1MSwgMTI1LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDIxOSwgMjUxLCAxMjEsIDIxNiwgMzAsIAorICAgIDIyOCwgMTM3LCAzOCwgMjE5LCAyNTEsIDIyMiwgMjI4LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDE5OSwgMjQ4LCAzOCwgCisgICAgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDEyNSwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDEyMSwgMjE2LCAKKyAgICAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDIyMiwgMjI4LCAyMTYsIDMwLCAyMjgsIDEzNywgMzgsIDIyOSwgMTkzLCA3OCwgCisgICAgMjI4LCAxMzcsIDM4LCA1MiwgNTksIDQ4LCAyMjgsIDEzNywgMTI1LCAxMzgsIDI1NCwgNTcsIDIyOCwgMTM3LCAxMjEsIAorICAgIDEzOCwgMjU0LCA1NywgMjI4LCAxMzcsIDE2LCAyMjYsIDE4NCwgMjQ4LCA1MCwgMjI4LCAxMzcsIDE2LCAyNDMsIDc4LCAKKyAgICAyMjgsIDEzNywgMjQ5LCAyMTksIDIyOCwgMTM3LCAyNDUsIDMxLCA3OCwgMjI4LCAxMzcsIDIzMywgMTA4LCAyMjEsIDI1MiwgCisgICAgMSwgMjU0LCAxNzYsIDIyMSwgMjUyLCAxLCAyNTEsIDIyOCwgMjIxLCAyNTIsIDEsIDI0MywgMTEyLCAyMjEsIDI1MiwgMSwgCisgICAgMjQ4LCAxOTQsIDIyMSwgMjUyLCAxLCAyMzUsIDE1MiwgMjIxLCAyNTIsIDEsIDI1MiwgMTg5LCAyMjEsIDI1MiwgMSwgMjEwLCAKKyAgICA4OSwgMjIxLCAyNTIsIDEsIDIzNSwgMTYwLCAyMjEsIDI1MiwgMSwgMjE2LCA2NywgMjIxLCAyNTIsIDEsIDIxMCwgMTgyLCAKKyAgICAyMjEsIDI1MiwgMSwgMjM1LCA5LCAyMjEsIDI1MiwgMSwgMjMzLCAxMjgsIDIyMSwgMjUyLCAxLCAyMzAsIDE5MCwgMjIxLCAKKyAgICAyNTIsIDEsIDIyNywgMTk0LCAyMjEsIDI1MiwgMSwgMjE5LCAxNTYsIDIyMSwgMjUyLCAxLCAyMzUsIDI1NSwgMjIxLCAyNTIsIAorICAgIDEsIDI0NCwgMTIxLCAyMjEsIDI1MiwgMSwgMjE1LCAxODEsIDIyMSwgMjUyLCAxLCAyMjQsIDEwLCAyMjEsIDI1MiwgMSwgCisgICAgMjIyLCAyMjksIDIyMSwgMjUyLCAxLCAyMjAsIDg1LCAyMjEsIDI1MiwgMSwgMjE3LCAxMDAsIDIyMSwgMjUyLCAxNjQsIAorICAgIDIzNSwgMjU1LCAyMjEsIDI1MiwgMTY0LCAyMzUsIDI1NCwgMjIxLCAyNTIsIDE2NCwgMjI2LCAyNDMsIDIyMSwgMjUyLCAKKyAgICAxNjQsIDI0OCwgMjA3LCAyMjEsIDI1MiwgNTgsIDEsIDI0NSwgMTA1LCAyMTAsIDE4MiwgMjIxLCAyNTIsIDE2NCwgMjQ1LCAKKyAgICAxMDUsIDIxMCwgMTgyLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNzUsIDIyMSwgMjUyLCAyNSwgNSwgNzUsIDIyMSwgMjUyLCAKKyAgICAyNSwgNSwgMjI2LCAxMTgsIDI1NSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgMjI2LCAxMTgsIDYxLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNjEsIDIyMSwgCisgICAgMjUyLCAyNSwgNSwgNjEsIDIyMSwgMjUyLCA1OCwgMSwgMjE5LCAyNTEsIDYxLCAyMjEsIDI1MiwgMjUsIDUsIDIxOSwgMjUxLCAKKyAgICA2MSwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDcwLCAyMjEsIDI1MiwgMjUsIDUsIDcwLCAyMjEsIDI1MiwgNTgsIDEsIDczLCAKKyAgICAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgNzMsIDIyMSwgMjUyLCAyNSwgNSwgNzYsIDIyMSwgCisgICAgMjUyLCAyNSwgNSwgMjE4LCA0NSwgMjIxLCAyNTIsIDE2NCwgMjI5LCA5MiwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMjksIDkyLCAKKyAgICAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgMjE4LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgMTE0LCAyMjEsIDI1MiwgCisgICAgMjI0LCAxNDEsIDI1MiwgMTE0LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1MywgMjAxLCAyMjEsIDI1MiwgMjI0LCAxNDEsIAorICAgIDIyMCwgOCwgMjIxLCAyNTIsIDI1NSwgMjEsIDc4LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIzMSwgNjgsIDIyNCwgNDUsIDIyMSwgCisgICAgMjUyLCAyMjQsIDE0MSwgMjEwLCAzMSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMjQsIDQ1LCAyMjEsIDI1MiwgMjI0LCAxNDEsIAorICAgIDIxMCwgMTE0LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDIxNSwgOTAsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjU0LCA5LCAyMjEsIAorICAgIDI1MiwgMjI0LCAxNDEsIDIxOSwgNTMsIDIzMSwgMTQ1LCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgMTAwLCAyMzEsIDE4MiwgCisgICAgMSwgMjQyLCAyNCwgMjMxLCAxODIsIDEsIDI1NSwgMjUsIDIzMSwgMTgyLCAxLCAyNTQsIDIxNiwgMjMxLCAxODIsIDEsIAorICAgIDI1NCwgMjU1LCAyMzEsIDE4MiwgMSwgMjU0LCAyMDksIDIzMSwgMTgyLCAxLCAyMTQsIDEyNCwgMjMxLCAxODIsIDEsIDI1MywgCisgICAgMTYwLCAyMzEsIDE4MiwgMSwgMjM1LCAxNjAsIDIzMSwgMTgyLCAxLCAyNTMsIDE5OCwgMjMxLCAxODIsIDEsIDI1NCwgMTgxLCAKKyAgICAyMzEsIDE4MiwgMSwgMjU0LCAxODYsIDIzMSwgMTgyLCAxLCAyNTQsIDE3OCwgMjMxLCAxODIsIDEsIDI1NCwgMTM2LCAyMzEsIAorICAgIDE4MiwgMSwgMjU0LCAxMjMsIDIzMSwgMTgyLCAxLCAyNTMsIDIzNywgMjMxLCAxODIsIDEsIDIzNSwgMjU1LCAyMzEsIDE4MiwgCisgICAgMSwgMjU0LCA3MiwgMjMxLCAxODIsIDEsIDI1MywgMjA4LCAyMzEsIDE4MiwgMSwgMjU0LCA0NSwgMjMxLCAxODIsIDEsIAorICAgIDI1NCwgNDEsIDIzMSwgMTgyLCAxLCAyNTMsIDIzMSwgMjMxLCAxODIsIDEsIDI1MywgMjA2LCAyMzEsIDE4MiwgMSwgMjQ2LCAKKyAgICA1NSwgMjMxLCAxODIsIDEsIDIzNSwgMiwgMjMxLCAxODIsIDEsIDI1NCwgMTk2LCAyMzEsIDE4MiwgMjU0LCAyMjIsIDc4LCAKKyAgICAyMzEsIDE4MiwgMjEzLCAxMzYsIDc4LCAyMzEsIDE4MiwgMjQzLCA1MywgNzgsIDIzMSwgMTgyLCAyMjQsIDE0MCwgMTAsIDEsIAorICAgIDI1MiwgNTUsIDIsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDE1MSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjE3LCA4MSwgCisgICAgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgCisgICAgMSwgMjI0LCA4MiwgMiwgNTksIDUxLCAxMCwgMSwgMjMzLCAxMDMsIDIsIDUyLCAxMzAsIDEwLCAxLCA2NiwgMiwgMTM0LCAKKyAgICAxNzAsIDQ4LCAxMCwgMSwgNzksIDIsIDExMywgMTcwLCAyNTIsIDQzLCAyMiwgMjAyLCA0OCwgMTAsIDEsIDc5LCAyLCAxMTMsIAorICAgIDE3MCwgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDIyMywgOTYsIDIsIDIzMiwgMTIzLCAxMCwgMSwgMjEyLCAzMSwgMiwgCisgICAgNTksIDIxMSwgMjMxLCAxMCwgMSwgMjIyLCAyMDEsIDIxMSwgNDMsIDEwLCAyNDksIDk5LCAyNDQsIDE2NSwgMTAsIDI0OSwgCisgICAgOTksIDI0OCwgMTg0LCAxMCwgMjQ5LCA5OSwgMjM0LCAyMDUsIDEwLCAyNDksIDk5LCAyNDQsIDE2MywgMTAsIDI0OSwgOTksIAorICAgIDI0OCwgMTgyLCAxMCwgMjQ5LCA5OSwgMjM0LCAyMDMsIDEwLCAxMzgsIDEyMywgNTksIDQ4LCAxMCwgMTM4LCAxMTMsIDE3MCwgCisgICAgNDgsIDEwLCAxMzgsIDIzMiwgMTI0LCA0OCwgMTAsIDEzOCwgMTIzLCA1OSwgNTEsIDEwLCAxMzgsIDExMywgMTcwLCA1MSwgCisgICAgMTAsIDEzOCwgMjMyLCAxMjQsIDUxLCAxMCwgMjA0LCAyNDQsIDE2MywgMTAsIDIwNCwgMjQ4LCAxODIsIDEwLCAyMDQsIAorICAgIDIzNCwgMjAzLCAxMCwgNCwgMTI1LCAyMTIsIDMwLCAxMCwgMjQ0LCAxNjYsIDIsIDIyMiwgMjMzLCAxMCwgMjQ0LCAxNjYsIAorICAgIDIsIDU5LCA0OCwgMTAsIDIzNCwgMjA2LCAyLCA1OSwgNTEsIDEwLCA0MywgMjUzLCAyNTAsIDQ4LCAxMCwgNDQsIDI1MywgCisgICAgMjUwLCA0OCwgMTAsIDQzLCAyNTMsIDI1MCwgNTEsIDEwLCA0NCwgMjUzLCAyNTAsIDUxLCAxMCwgNTIsIDQ0LCAyNTMsIAorICAgIDI1MCwgNDgsIDEwLCA1MiwgNDQsIDI1MywgMjUwLCA3NywgMiwgMjQ3LCAxMjAsIDEwLCA0NCwgMjUzLCAyNTAsIDc3LCAyLCAKKyAgICAyNDcsIDEyMCwgMTAsIDI0OCwgMTg1LCAyLCAyNDcsIDEyMCwgODQsIDUsIDIzNSwgMTkzLCAyNTAsIDI1NSwgODQsIDUsIAorICAgIDI1MCwgMjU1LCA4NCwgNSwgMjU0LCA3NSwgODQsIDUsIDIxMywgMTQ3LCA4NCwgMSwgMjE5LCAyNTEsIDYxLCA4NCwgMSwgCisgICAgNjEsIDg0LCAxLCAyNTUsIDczLCA4NCwgMSwgNzMsIDg0LCAxLCAyMzYsIDMzLCA4NCwgMSwgNzAsIDg0LCAxLCAyMTQsIAorICAgIDExOCwgODQsIDEsIDE0OSwgMTUzLCA4NCwgMSwgMTQ5LCAxNTYsIDg0LCAxLCAyNTEsIDIsIDc1LCA4NCwgMSwgMjE5LCAKKyAgICAyNTEsIDc1LCA4NCwgMSwgNzUsIDg0LCAxLCAyNTQsIDIwMSwgODQsIDEsIDI1MSwgMiwgNzYsIDg0LCAxLCAyMTksIDI1MSwgCisgICAgNzYsIDg0LCAxLCA3NiwgODQsIDEsIDI1MywgMTkyLCA4NCwgMSwgMTc2LCA4NCwgMSwgMjM0LCAxMzIsIDg0LCAxLCAyNDMsIAorICAgIDEzNSwgODQsIDEsIDI0MiwgMjQ5LCA4NCwgMSwgMjI5LCA3NywgODQsIDEsIDI1MSwgMzMsIDg0LCAxLCAyNTAsIDE1NywgCisgICAgODQsIDEsIDIzNSwgMTQxLCA4NCwgMSwgMjM1LCAxMTQsIDg0LCAxLCAyMjcsIDE2NSwgODQsIDEsIDIxNSwgMTU2LCA4NCwgCisgICAgMSwgMjE1LCAxNDQsIDg0LCAxLCAyNDgsIDEzNSwgODQsIDEsIDI0OCwgMTE5LCA4NCwgMSwgMjI4LCAxMTAsIDg0LCAxLCAKKyAgICAyMTcsIDEwNSwgODQsIDEsIDIxNiwgMjA4LCA4NCwgMSwgMjQ4LCAyMjEsIDg0LCAxLCAyNDgsIDI1LCA4NCwgMSwgMTk3LCAKKyAgICA4NCwgMSwgMjI4LCA5MiwgODQsIDEsIDE5MCwgODQsIDEsIDIyNSwgMTQ3LCA4NCwgMSwgMjUyLCAxOTEsIDg0LCAxLCAyNTIsIAorICAgIDE4LCA4NCwgMSwgMTg0LCA4NCwgMSwgMTkxLCA4NCwgMSwgMjA1LCA4NCwgMSwgMjIyLCAxNzksIDg0LCAxLCAyMzMsIDEzNSwgCisgICAgODQsIDEsIDIzMiwgMTg0LCA4NCwgMSwgMjMyLCAxNzUsIDg0LCAxLCAyMTQsIDI3LCA4NCwgMSwgMjIwLCAxMDIsIDg0LCAxLCAKKyAgICAyMTgsIDIyMywgODQsIDEsIDIwNiwgODQsIDEsIDE2MiwgODQsIDI1LCA1LCAyMjYsIDIzNCwgODQsIDI1LCA1LCAyMjYsIAorICAgIDE4MSwgODQsIDUsIDIyNywgMjA1LCA4NCwgNSwgMjUzLCAxNzUsIDg0LCAyNSwgNSwgMjU1LCA3MywgODQsIDI1LCA1LCA3MywgCisgICAgODQsIDI1LCA1LCAyMzYsIDMzLCA4NCwgMjUsIDUsIDcwLCA4NCwgMjUsIDUsIDIxNCwgMTE4LCA4NCwgMjUsIDUsIDE0OSwgCisgICAgMTUzLCA4NCwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDg0LCAyNSwgNSwgMjUxLCAyLCA3NSwgODQsIDI1LCA1LCAyMTksIAorICAgIDI1MSwgNzUsIDg0LCAyNSwgNSwgNzUsIDg0LCAyNSwgNSwgMjU0LCAyMDEsIDg0LCAyNSwgNSwgMjUxLCAyLCA3NiwgODQsIAorICAgIDI1LCA1LCAyMTksIDI1MSwgNzYsIDg0LCAyNSwgNSwgNzYsIDg0LCAyNSwgNSwgMjUzLCAxOTIsIDg0LCA1LCAyMTMsIDE1MiwgCisgICAgODQsIDI1LCA1LCAyMjQsIDE4NSwgNzUsIDg0LCAyNSwgNSwgMjUzLCAxNzEsIDg0LCAyMjYsIDIwNCwgODQsIDIxOCwgMTExLCAKKyAgICA1LCAyMTQsIDIxNiwgODQsIDIxOCwgMTExLCA1LCAyNTQsIDc3LCA4NCwgMjQyLCAxMzcsIDI1NSwgMTQsIDg0LCAyNTUsIDMsIAorICAgIDI1NSwgMTQsIDg0LCAyNSwgNSwgMjUxLCAyLCAxOTksIDc1LCA4NCwgMjUsIDUsIDIxNCwgMjE0LCA4NCwgMjUsIDUsIDIxNCwgCisgICAgMTE3LCA4NCwgMSwgMjI0LCA4OCwgODQsIDEsIDIzNCwgMTE1LCA4NCwgMSwgMjQyLCAyMjYsIDg0LCAxLCAyMTAsIDExNiwgCisgICAgODQsIDEsIDI0OCwgMTI0LCA4NCwgMSwgMjIzLCAzOSwgODQsIDEsIDI0NCwgMTk2LCA4NCwgMSwgMjEwLCAxNjgsIDg0LCAxLCAKKyAgICAxNDksIDIyMiwgMTgwLCA4NCwgMSwgMTQ5LCAyMzIsIDE4NSwgODQsIDI1LCA1LCAxNDksIDE1NiwgODQsIDI1LCA1LCAxNDksIAorICAgIDIzMiwgMTg1LCA4NCwgMjQ4LCAxNzgsIDg0LCA1MiwgMjQ4LCAxNzgsIDg0LCAyMSwgMjEwLCA4NiwgODQsIDIxLCAxMTAsIAorICAgIDg0LCAyMSwgMTA1LCA4NCwgMjEsIDE1OCwgODQsIDIxLCAxNjEsIDg0LCAyMSwgMTg5LCA4NCwgMjEsIDE5NCwgODQsIDIxLCAKKyAgICAxOTgsIDg0LCAyMSwgMTk1LCA4NCwgMjEsIDIwMCwgODQsIDI1NSwgMjEsIDUwLCA4NCwgNSwgMTI1LCAyMTksIDE3LCAyNDcsIAorICAgIDEyMCwgODQsIDEsIDI1MSwgMiwgNjEsIDg0LCAxLCAyMjYsIDIzNCwgODQsIDEsIDIyNiwgMTgxLCA4NCwgMSwgMjUzLCAKKyAgICAxNzEsIDg0LCAxLCAyMTQsIDIxNCwgODQsIDEsIDIxNCwgMTE3LCA4NCwgMSwgMjEwLCA4MiwgODQsIDEsIDExNCwgMTkxLCAKKyAgICA4NCwgMSwgMjQzLCAyOSwgODQsIDEsIDIzNSwgOTYsIDg0LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDg0LCAxLCAyNDgsIAorICAgIDEyNSwgODQsIDEsIDI1MiwgMTExLCAxNDYsIDUsIDI1MCwgMjU1LCAxNDYsIDUsIDI1NCwgNzUsIDE0NiwgNSwgMjEzLCAKKyAgICAxNDcsIDE0NiwgMSwgNjEsIDE0NiwgMSwgMjU1LCA3MywgMTQ2LCAxLCA3MywgMTQ2LCAxLCAyMzYsIDMzLCAxNDYsIDEsIAorICAgIDcwLCAxNDYsIDEsIDIxNCwgMTE4LCAxNDYsIDEsIDE0OSwgMTUzLCAxNDYsIDEsIDE0OSwgMTU2LCAxNDYsIDEsIDc1LCAKKyAgICAxNDYsIDEsIDI1NCwgMjAxLCAxNDYsIDEsIDc2LCAxNDYsIDEsIDI1MywgMTkyLCAxNDYsIDEsIDE3NiwgMTQ2LCAxLCAyMzQsIAorICAgIDEzMiwgMTQ2LCAxLCAyNDMsIDEzNSwgMTQ2LCAxLCAyNDIsIDI0OSwgMTQ2LCAxLCAyMjksIDc3LCAxNDYsIDEsIDI1MSwgCisgICAgMzMsIDE0NiwgMSwgMjUwLCAxNTcsIDE0NiwgMSwgMjM1LCAxNDEsIDE0NiwgMSwgMjM1LCAxMTQsIDE0NiwgMSwgMjI3LCAKKyAgICAxNjUsIDE0NiwgMSwgMjE1LCAxNTYsIDE0NiwgMSwgMjE1LCAxNDQsIDE0NiwgMSwgMjQ4LCAxMzUsIDE0NiwgMSwgMjQ4LCAKKyAgICAxMTksIDE0NiwgMSwgMjI4LCAxMTAsIDE0NiwgMSwgMjE3LCAxMDUsIDE0NiwgMSwgMjE2LCAyMDgsIDE0NiwgMSwgMjQ4LCAKKyAgICAyMjEsIDE0NiwgMSwgMjQ4LCAyNSwgMTQ2LCAxLCAxOTcsIDE0NiwgMSwgMTkwLCAxNDYsIDEsIDIyNSwgMTQ3LCAxNDYsIDEsIAorICAgIDI1MiwgMTkxLCAxNDYsIDEsIDI1MiwgMTgsIDE0NiwgMSwgMTg0LCAxNDYsIDEsIDE5MSwgMTQ2LCAxLCAyMDUsIDE0NiwgMSwgCisgICAgMjMzLCAxMzUsIDE0NiwgMSwgMjIwLCAxMDIsIDE0NiwgMSwgMjE4LCAyMjMsIDE0NiwgMSwgMjA2LCAxNDYsIDEsIDE2MiwgCisgICAgMTQ2LCA1LCAyMjcsIDIwNSwgMTQ2LCA1LCAyNTMsIDE3NSwgMTQ2LCAyNSwgNSwgMjU1LCA3MywgMTQ2LCAyNSwgNSwgNzMsIAorICAgIDE0NiwgMjUsIDUsIDIzNiwgMzMsIDE0NiwgMjUsIDUsIDcwLCAxNDYsIDI1LCA1LCAyMTQsIDExOCwgMTQ2LCAyNSwgNSwgCisgICAgMTQ5LCAxNTMsIDE0NiwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE0NiwgMjUsIDUsIDc1LCAxNDYsIDI1LCA1LCAyNTQsIAorICAgIDIwMSwgMTQ2LCAyNSwgNSwgNzYsIDE0NiwgMjUsIDUsIDI1MywgMTkyLCAxNDYsIDUsIDIxMywgMTUyLCAxNDYsIDEsIDIzNCwgCisgICAgMTI0LCAyMTcsIDEwNSwgMTQ2LCAyNTMsIDE5MywgMjMzLCAyMywgNzgsIDE0NiwgMSwgMjIyLCAxNzksIDE0NiwgMSwgMjIzLCAKKyAgICAzOSwgMTQ2LCAxLCAyMTAsIDE2OCwgMTQ2LCAxLCAxNDksIDIyMiwgMTgwLCAxNDYsIDEsIDE0OSwgMjMyLCAxODUsIDE0NiwgCisgICAgMjUsIDUsIDE0OSwgMTU2LCAxNDYsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNDYsIDIxLCAyMTAsIDg2LCAxNDYsIDIxLCAKKyAgICAxMTAsIDE0NiwgMjEsIDEwNSwgMTQ2LCAyMSwgMTU4LCAxNDYsIDIxLCAxNjEsIDE0NiwgMjEsIDE4OSwgMTQ2LCAyMSwgCisgICAgMTk0LCAxNDYsIDIxLCAxOTgsIDE0NiwgMjEsIDE5NSwgMTQ2LCAyMSwgMjAwLCAxNDYsIDEsIDIyMywgMTg4LCAyLCAyMzAsIAorICAgIDIyNCwgMjQ3LCAyNTQsIDE0NiwgMSwgMjIzLCAxODgsIDIsIDIzMiwgMTA4LCAyNDcsIDI1NCwgMTQ2LCAyMjIsIDExOCwgCisgICAgNzgsIDE0NiwgMjIyLCAxMTgsIDUwLCAxNDYsIDI0OSwgOTgsIDIyNywgMTk3LCAxMTAsIDE0NiwgMjQ5LCA5OCwgMjI3LCAKKyAgICAxOTcsIDEwNSwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTU4LCAxNDYsIDI0OSwgOTgsIDIyNywgMTk3LCAxNjEsIDE0NiwgCisgICAgMjQ5LCA5OCwgMjI3LCAxOTcsIDEyMywgMjMzLCAxNiwgMjE2LCAyMDEsIDIxNiwgMTk2LCAyNDgsIDQ4LCAxNDYsIDI0OSwgCisgICAgOTgsIDI0OCwgNDksIDIxOSwgMTE5LCAxNDYsIDIzNSwgMTYxLCAxNDYsIDI0MywgMTAzLCA3OCwgMTgzLCA1LCAyNTQsIAorICAgIDI1NCwgMjUxLCAyNDMsIDE4MywgNSwgMjUxLCAyNDMsIDE4MywgNSwgMjEzLCAxNDcsIDE4MywgMSwgNjEsIDE4MywgMSwgCisgICAgMjU1LCA3MywgMTgzLCAxLCA3MywgMTgzLCAxLCAyMzYsIDMzLCAxODMsIDEsIDcwLCAxODMsIDEsIDIxNCwgMTE4LCAxODMsIAorICAgIDEsIDI0NSwgMjA5LCAxODMsIDEsIDI1NCwgMjAxLCAxODMsIDEsIDIyNiwgMTgzLCAxODMsIDEsIDI1MywgMTkyLCAxODMsIAorICAgIDEsIDE3NiwgMTgzLCAxLCAyMzQsIDEzMiwgMTgzLCAxLCAyNDMsIDEzNSwgMTgzLCAxLCAyNDIsIDI0OSwgMTgzLCAxLCAKKyAgICAyMjksIDc3LCAxODMsIDEsIDI1MSwgMzMsIDE4MywgMSwgMjUwLCAxNTcsIDE4MywgMSwgMjM1LCAxNDEsIDE4MywgMSwgCisgICAgMjM1LCAxMTQsIDE4MywgMSwgMjI3LCAxNjUsIDE4MywgMSwgMjE1LCAxNTYsIDE4MywgMSwgMjE1LCAxNDQsIDE4MywgMSwgCisgICAgMjQ4LCAxMzUsIDE4MywgMSwgMjQ4LCAxMTksIDE4MywgMSwgMjI4LCAxMTAsIDE4MywgMSwgMjE3LCAxMDUsIDE4MywgMSwgCisgICAgMjE2LCAyMDgsIDE4MywgMSwgMjQ4LCAyMjEsIDE4MywgMSwgMjQ4LCAyNSwgMTgzLCAxLCAxOTcsIDE4MywgMSwgMTkwLCAKKyAgICAxODMsIDEsIDIyNSwgMTQ3LCAxODMsIDEsIDI1MiwgMTkxLCAxODMsIDEsIDI1MiwgMTgsIDE4MywgMSwgMTg0LCAxODMsIDEsIAorICAgIDE5MSwgMTgzLCAxLCAyMDUsIDE4MywgMSwgMjMzLCAxMzUsIDE4MywgMSwgMjMyLCAxODQsIDE4MywgMSwgMjE0LCAyNywgCisgICAgMTgzLCAxLCAyMjAsIDEwMiwgMTgzLCAxLCAyMDYsIDE4MywgMSwgMTYyLCAxODMsIDUsIDIyNywgMjA1LCAxODMsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAxODMsIDI1LCA1LCA3MywgMTgzLCAyNSwgNSwgMjM2LCAzMywgMTgzLCAyNSwgNSwgNzAsIDE4MywgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxODMsIDI1LCA1LCAyNDUsIDIwOSwgMTgzLCAyNSwgNSwgMjU0LCAyMDEsIDE4MywgMjUsIDUsIDIyNiwgCisgICAgMTgzLCAxODMsIDI1LCA1LCAyNTMsIDE5MiwgMTgzLCA1LCAyMTMsIDE1MiwgMTgzLCA1LCAyMTQsIDIxOCwgMTgzLCAxLCAKKyAgICAyMzQsIDExNSwgMTgzLCAxLCAyNDIsIDIyNiwgMTgzLCAxLCAyMTAsIDExNiwgMTgzLCAxLCAyMjIsIDE3OSwgMTgzLCAxLCAKKyAgICAyNDQsIDE5NiwgMTgzLCAyMSwgMjEwLCA4NiwgMTgzLCAyMSwgMTEwLCAxODMsIDIxLCAxMDUsIDE4MywgMjEsIDE1OCwgCisgICAgMTgzLCAyMSwgMTYxLCAxODMsIDIxLCAxODksIDE4MywgMjEsIDE5NCwgMTgzLCAyMSwgMTk4LCAxODMsIDIxLCAxOTUsIAorICAgIDE4MywgMjEsIDIwMCwgMTgzLCAyMTYsIDc0LCAxODMsIDI1NCwgMjUzLCAxODMsIDIzNSwgMTc4LCAxODMsIDIxNCwgMTQ2LCAKKyAgICAxODMsIDI0NSwgMTgxLCAyMjYsIDE4OCwgMTgzLCA1LCAyMTEsIDc4LCAxNzEsIDUsIDI1MCwgMjU1LCAxNzEsIDUsIDI1NCwgCisgICAgNzUsIDE3MSwgNSwgMjEzLCAxNDcsIDE3MSwgMSwgNjEsIDE3MSwgMSwgMjU1LCA3MywgMTcxLCAxLCA3MywgMTcxLCAxLCAKKyAgICAyMzYsIDMzLCAxNzEsIDEsIDcwLCAxNzEsIDEsIDIxNCwgMTE4LCAxNzEsIDEsIDE0OSwgMTUzLCAxNzEsIDEsIDE0OSwgCisgICAgMTU2LCAxNzEsIDI1LCAyNTEsIDIsIDc1LCAxNzEsIDEsIDc1LCAxNzEsIDEsIDI1NCwgMjAxLCAxNzEsIDI1LCAyNTEsIDIsIAorICAgIDc2LCAxNzEsIDEsIDc2LCAxNzEsIDEsIDI1MywgMTkyLCAxNzEsIDEsIDE3NiwgMTcxLCAxLCAyMzQsIDEzMiwgMTcxLCAxLCAKKyAgICAyNDMsIDEzNSwgMTcxLCAxLCAyNDIsIDI0OSwgMTcxLCAxLCAyMjksIDc3LCAxNzEsIDEsIDI1MSwgMzMsIDE3MSwgMSwgCisgICAgMjUwLCAxNTcsIDE3MSwgMSwgMjM1LCAxNDEsIDE3MSwgMSwgMjM1LCAxMTQsIDE3MSwgMSwgMjI3LCAxNjUsIDE3MSwgMSwgCisgICAgMjE1LCAxNTYsIDE3MSwgMSwgMjE1LCAxNDQsIDE3MSwgMSwgMjQ4LCAxMzUsIDE3MSwgMSwgMjQ4LCAxMTksIDE3MSwgMSwgCisgICAgMjI4LCAxMTAsIDE3MSwgMSwgMjE3LCAxMDUsIDE3MSwgMSwgMjE2LCAyMDgsIDE3MSwgMSwgMjQ4LCAyMjEsIDE3MSwgMSwgCisgICAgMjQ4LCAyNSwgMTcxLCAxLCAxOTcsIDE3MSwgMSwgMTkwLCAxNzEsIDEsIDIyNSwgMTQ3LCAxNzEsIDEsIDI1MiwgMTkxLCAKKyAgICAxNzEsIDEsIDI1MiwgMTgsIDE3MSwgMSwgMTg0LCAxNzEsIDEsIDE5MSwgMTcxLCAxLCAyMDUsIDE3MSwgMSwgMjMzLCAxMzUsIAorICAgIDE3MSwgMSwgMjMyLCAxODQsIDE3MSwgMSwgMjE0LCAyNywgMTcxLCAxLCAyMjAsIDEwMiwgMTcxLCAxLCAyMTgsIDIyMywgCisgICAgMTcxLCAxLCAyMDYsIDE3MSwgMSwgMTYyLCAxNzEsIDUsIDIyNywgMjA1LCAxNzEsIDUsIDI1MywgMTc1LCAxNzEsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAxNzEsIDI1LCA1LCA3MywgMTcxLCAyNSwgNSwgMjM2LCAzMywgMTcxLCAyNSwgNSwgNzAsIDE3MSwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxNzEsIDI1LCA1LCAxNDksIDE1MywgMTcxLCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTcxLCAyNSwgNSwgCisgICAgMjUxLCAyLCA3NSwgMTcxLCAyNSwgNSwgNzUsIDE3MSwgMjUsIDUsIDI1NCwgMjAxLCAxNzEsIDI1LCA1LCAyNTEsIDIsIDc2LCAKKyAgICAxNzEsIDI1LCA1LCA3NiwgMTcxLCAyNSwgNSwgMjUzLCAxOTIsIDE3MSwgNSwgMjEzLCAxNTIsIDE3MSwgMjI2LCAyMDQsIAorICAgIDE3MSwgMSwgMTQ5LCAyMjIsIDE4MCwgMTcxLCAxLCAxNDksIDIzMiwgMTg1LCAxNzEsIDI1LCA1LCAxNDksIDE1NiwgMTcxLCAKKyAgICAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTcxLCAyMSwgMjEwLCA4NiwgMTcxLCAyMSwgMTEwLCAxNzEsIDIxLCAxMDUsIDE3MSwgCisgICAgMjEsIDE1OCwgMTcxLCAyMSwgMTYxLCAxNzEsIDIxLCAxODksIDE3MSwgMjEsIDE5NCwgMTcxLCAyMSwgMTk4LCAxNzEsIDIxLCAKKyAgICAxOTUsIDE3MSwgMjEsIDIwMCwgMTcxLCAyNTUsIDIxLCA1MCwgMTcxLCAyMjIsIDExOCwgNTAsIDE1NywgNSwgMjUwLCAyNTUsIAorICAgIDE1NywgNSwgMjU0LCA3NSwgMTU3LCA1LCAyMTMsIDE0NywgMTU3LCAxLCA2MSwgMTU3LCAxLCAyNTUsIDczLCAxNTcsIDEsIAorICAgIDczLCAxNTcsIDEsIDIzNiwgMzMsIDE1NywgMSwgNzAsIDE1NywgMSwgMjE0LCAxMTgsIDE1NywgMSwgMTQ5LCAxNTMsIDE1NywgCisgICAgMSwgMTQ5LCAxNTYsIDE1NywgMSwgNzUsIDE1NywgMSwgMjU0LCAyMDEsIDE1NywgMSwgNzYsIDE1NywgMSwgMjUzLCAxOTIsIAorICAgIDE1NywgMSwgMTc2LCAxNTcsIDEsIDIzNCwgMTMyLCAxNTcsIDEsIDI0MywgMTM1LCAxNTcsIDEsIDI0MiwgMjQ5LCAxNTcsIAorICAgIDEsIDIyOSwgNzcsIDE1NywgMSwgMjUxLCAzMywgMTU3LCAxLCAyNTAsIDE1NywgMTU3LCAxLCAyMzUsIDE0MSwgMTU3LCAxLCAKKyAgICAyMzUsIDExNCwgMTU3LCAxLCAyMjcsIDE2NSwgMTU3LCAxLCAyMTUsIDE1NiwgMTU3LCAxLCAyMTUsIDE0NCwgMTU3LCAxLCAKKyAgICAyNDgsIDEzNSwgMTU3LCAxLCAyNDgsIDExOSwgMTU3LCAxLCAyMjgsIDExMCwgMTU3LCAxLCAyMTcsIDEwNSwgMTU3LCAxLCAKKyAgICAyMTYsIDIwOCwgMTU3LCAxLCAyNDgsIDIyMSwgMTU3LCAxLCAyNDgsIDI1LCAxNTcsIDEsIDE5NywgMTU3LCAxLCAxOTAsIAorICAgIDE1NywgMSwgMjI1LCAxNDcsIDE1NywgMSwgMjUyLCAxOTEsIDE1NywgMSwgMjUyLCAxOCwgMTU3LCAxLCAxODQsIDE1NywgMSwgCisgICAgMTkxLCAxNTcsIDEsIDIwNSwgMTU3LCAxLCAyMzMsIDEzNSwgMTU3LCAxLCAyMzIsIDE4NCwgMTU3LCAxLCAyMTQsIDI3LCAKKyAgICAxNTcsIDEsIDIyMCwgMTAyLCAxNTcsIDEsIDIxOCwgMjIzLCAxNTcsIDEsIDIwNiwgMTU3LCAxLCAxNjIsIDE1NywgNSwgCisgICAgMjI3LCAyMDUsIDE1NywgNSwgMjUzLCAxNzUsIDE1NywgMjUsIDUsIDI1NSwgNzMsIDE1NywgMjUsIDUsIDczLCAxNTcsIDI1LCAKKyAgICA1LCAyMzYsIDMzLCAxNTcsIDI1LCA1LCA3MCwgMTU3LCAyNSwgNSwgMjE0LCAxMTgsIDE1NywgMjUsIDUsIDE0OSwgMTUzLCAKKyAgICAxNTcsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNTcsIDI1LCA1LCA3NSwgMTU3LCAyNSwgNSwgMjU0LCAyMDEsIDE1NywgMjUsIAorICAgIDUsIDc2LCAxNTcsIDI1LCA1LCAyNTMsIDE5MiwgMTU3LCA1LCAyMTMsIDE1MiwgMTU3LCAyNTQsIDIwMiwgMjMzLCAyMywgCisgICAgNzgsIDE1NywgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAxNTcsIDEsIDIyMiwgMTc5LCAxNTcsIDEsIDIyMywgMzksIDE1NywgCisgICAgMSwgMjEwLCAxNjgsIDE1NywgMSwgMTQ5LCAyMjIsIDE4MCwgMTU3LCAxLCAxNDksIDIzMiwgMTg1LCAxNTcsIDI1LCA1LCAKKyAgICAxNDksIDE1NiwgMTU3LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTU3LCAyMSwgMjEwLCA4NiwgMTU3LCAyMSwgMTEwLCAxNTcsIAorICAgIDIxLCAxMDUsIDE1NywgMjEsIDE1OCwgMTU3LCAyMSwgMTYxLCAxNTcsIDIxLCAxODksIDE1NywgMjEsIDE5NCwgMTU3LCAyMSwgCisgICAgMTk4LCAxNTcsIDIxLCAxOTUsIDE1NywgMjEsIDIwMCwgMTU3LCAyMzUsIDE2MSwgMTU3LCAxLCAyMTIsIDY1LCAxNTcsIAorICAgIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAxNTcsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAxNTcsIDI0NCwgMiwgMTM0LCAyMjQsIAorICAgIDE5LCAxNTcsIDI0NCwgMiwgMTIzLCAyMTksIDExNywgMTU3LCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDE1NywgMjQ0LCAyLCAKKyAgICAxMzQsIDIxOSwgMTE2LCAzNiwgNSwgMjU0LCA3NSwgMzYsIDUsIDIxMywgMTQ3LCAzNiwgMSwgNjEsIDM2LCAxLCAyNTUsIAorICAgIDczLCAzNiwgMSwgNzMsIDM2LCAxLCAyMzYsIDMzLCAzNiwgMSwgNzAsIDM2LCAxLCAyMTQsIDExOCwgMzYsIDEsIDc1LCAzNiwgCisgICAgMSwgMjQ1LCAyMDksIDM2LCAxLCAyNTQsIDIwMSwgMzYsIDEsIDc2LCAzNiwgMSwgMjI2LCAxODMsIDM2LCAxLCAyNTMsIAorICAgIDE5MiwgMzYsIDEsIDE3NiwgMzYsIDEsIDIyOSwgNzcsIDM2LCAxLCAyNTEsIDMzLCAzNiwgMSwgMjM1LCAxNDEsIDM2LCAxLCAKKyAgICAyMjcsIDE2NSwgMzYsIDEsIDIxNSwgMTU2LCAzNiwgMSwgMjI4LCAxMTAsIDM2LCAxLCAyMTcsIDEwNSwgMzYsIDEsIDE5NywgCisgICAgMzYsIDEsIDIyOCwgOTIsIDM2LCAxLCAxOTAsIDM2LCAxLCAxODQsIDM2LCAxLCAxOTEsIDM2LCAxLCAyMDUsIDM2LCAxLCAKKyAgICAyMjIsIDE3OSwgMzYsIDEsIDIzMywgMTM1LCAzNiwgMSwgMjMyLCAxODQsIDM2LCAxLCAyMzIsIDE3NSwgMzYsIDEsIDIxNCwgCisgICAgMjcsIDM2LCAxLCAyMjAsIDEwMiwgMzYsIDEsIDIxOCwgMjIzLCAzNiwgMSwgMjA2LCAzNiwgMSwgMTYyLCAzNiwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDM2LCAyNSwgNSwgNzMsIDM2LCAyNSwgNSwgMjM2LCAzMywgMzYsIDI1LCA1LCA3MCwgMzYsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMzYsIDI1LCA1LCA3NSwgMzYsIDI1LCA1LCAyNDUsIDIwOSwgMzYsIDI1LCA1LCAyNTQsIDIwMSwgMzYsIAorICAgIDI1LCA1LCA3NiwgMzYsIDI1LCA1LCAyMjYsIDE4MywgMzYsIDI1LCA1LCAyNTMsIDE5MiwgMzYsIDUsIDIxMywgMTUyLCAzNiwgCisgICAgMjI2LCAyMDQsIDM2LCAyNTMsIDE5MywgMjMzLCAyMywgNzgsIDM2LCAyMSwgMjEwLCA4NiwgMzYsIDIxLCAxMTAsIDM2LCAKKyAgICAyMSwgMTA1LCAzNiwgMjEsIDE1OCwgMzYsIDIxLCAxNjEsIDM2LCAyMSwgMTg5LCAzNiwgMjEsIDE5NCwgMzYsIDIxLCAxOTgsIAorICAgIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDIwMCwgMzYsIDU0LCAyMTYsIDI0NywgMzYsIDU0LCAxMjMsIDI0MCwgMjEwLCAzNiwgCisgICAgNTQsIDEyMywgMjE2LCAxNDcsIDM2LCAyNDgsIDE0NiwgNTAsIDM2LCAyMzAsIDEzNSwgNTAsIDM2LCAyMTEsIDQ1LCA1MCwgCisgICAgMzYsIDI0OCwgODcsIDUwLCAzNiwgMjQ5LCAxMzksIDUwLCAzNiwgMjUzLCAyMzgsIDc3LCA1MCwgMzYsIDIyMiwgMTE4LCAKKyAgICA1MCwgMzYsIDU0LCA1MCwgMTQ4LCA1LCAyNTAsIDI1NSwgMTQ4LCA1LCAyNTQsIDc1LCAxNDgsIDUsIDIxMywgMTQ3LCAxNDgsIAorICAgIDEsIDYxLCAxNDgsIDEsIDI1NSwgNzMsIDE0OCwgMSwgNzMsIDE0OCwgMSwgMjM2LCAzMywgMTQ4LCAxLCA3MCwgMTQ4LCAxLCAKKyAgICAyMTQsIDExOCwgMTQ4LCAxLCAxNDksIDE1MywgMTQ4LCAxLCAxNDksIDE1NiwgMTQ4LCAxLCA3NSwgMTQ4LCAxLCAyNDUsIAorICAgIDIwOSwgMTQ4LCAxLCAyNTQsIDIwMSwgMTQ4LCAxLCA3NiwgMTQ4LCAxLCAyMjYsIDE4MywgMTQ4LCAxLCAyNTMsIDE5MiwgCisgICAgMTQ4LCAxLCAxNzYsIDE0OCwgMSwgMjM0LCAxMzIsIDE0OCwgMSwgMjQzLCAxMzUsIDE0OCwgMSwgMjQyLCAyNDksIDE0OCwgCisgICAgMSwgMjI5LCA3NywgMTQ4LCAxLCAyNTEsIDMzLCAxNDgsIDEsIDI1MCwgMTU3LCAxNDgsIDEsIDIzNSwgMTQxLCAxNDgsIDEsIAorICAgIDIzNSwgMTE0LCAxNDgsIDEsIDIyNywgMTY1LCAxNDgsIDEsIDIxNSwgMTU2LCAxNDgsIDEsIDIxNSwgMTQ0LCAxNDgsIDEsIAorICAgIDI0OCwgMTM1LCAxNDgsIDEsIDI0OCwgMTE5LCAxNDgsIDEsIDIyOCwgMTEwLCAxNDgsIDEsIDIxNywgMTA1LCAxNDgsIDEsIAorICAgIDIxNiwgMjA4LCAxNDgsIDEsIDI0OCwgMjIxLCAxNDgsIDEsIDI0OCwgMjUsIDE0OCwgMSwgMTk3LCAxNDgsIDEsIDE5MCwgCisgICAgMTQ4LCAxLCAyMjUsIDE0NywgMTQ4LCAxLCAyNTIsIDE5MSwgMTQ4LCAxLCAyNTIsIDE4LCAxNDgsIDEsIDE4NCwgMTQ4LCAxLCAKKyAgICAxOTEsIDE0OCwgMSwgMjA1LCAxNDgsIDEsIDIyMiwgMTc5LCAxNDgsIDEsIDIzMywgMTM1LCAxNDgsIDEsIDIzMiwgMTg0LCAKKyAgICAxNDgsIDEsIDIxNCwgMjcsIDE0OCwgMSwgMjIwLCAxMDIsIDE0OCwgMSwgMjE4LCAyMjMsIDE0OCwgMSwgMjA2LCAxNDgsIDEsIAorICAgIDE2MiwgMTQ4LCA1LCAyNTMsIDE3NSwgMTQ4LCAyNSwgNSwgMjU1LCA3MywgMTQ4LCAyNSwgNSwgNzMsIDE0OCwgMjUsIDUsIAorICAgIDIzNiwgMzMsIDE0OCwgMjUsIDUsIDcwLCAxNDgsIDI1LCA1LCAyMTQsIDExOCwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTMsIDE0OCwgCisgICAgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE0OCwgMjUsIDUsIDc1LCAxNDgsIDI1LCA1LCAyNDUsIDIwOSwgMTQ4LCAyNSwgNSwgCisgICAgMjU0LCAyMDEsIDE0OCwgMjUsIDUsIDc2LCAxNDgsIDI1LCA1LCAyMjYsIDE4MywgMTQ4LCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDE0OCwgNSwgMjEzLCAxNTIsIDE0OCwgMjMzLCAyMywgNzgsIDE0OCwgMjU0LCAyMDIsIDIzMywgMjMsIDc4LCAxNDgsIDEsIAorICAgIDIxNSwgMTgzLCAxNDgsIDEsIDI0NiwgMzgsIDE0OCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTQ4LCAxLCAxNDksIDIzMiwgMTg1LCAKKyAgICAxNDgsIDI1LCA1LCAxNDksIDE1NiwgMTQ4LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTQ4LCAyMSwgMjEwLCA4NiwgMTQ4LCAKKyAgICAyMSwgMTEwLCAxNDgsIDIxLCAxMDUsIDE0OCwgMjEsIDE1OCwgMTQ4LCAyMSwgMTYxLCAxNDgsIDIxLCAxODksIDE0OCwgMjEsIAorICAgIDE5NCwgMTQ4LCAyMSwgMTk4LCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDIwMCwgMTQ4LCAyNDQsIDIsIDIxLCAyMTAsIDg3LCAKKyAgICAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEyMywgMzEsIDIyNiwgMjM3LCAyMjQsIAorICAgIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMTMsIDMxLCAyMjYsIDIzNywgMjI0LCAyMjMsIDY0LCAxNjEsIDE0OCwgCisgICAgMjQ0LCAyLCAyMSwgMTM0LCAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEyMywgCisgICAgMzEsIDI0NSwgNDIsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDExMywgMzEsIDI0NSwgNDIsIDIyNCwgCisgICAgMjIzLCA2NCwgMTYxLCAxNDgsIDI0NCwgMiwgMjEsIDEzNCwgMzEsIDI0NSwgNDIsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIAorICAgIDUsIDIxNSwgODQsIDE2NSwgNSwgMjU0LCA3NSwgMTY1LCA1LCAyMTMsIDE0NywgMTY1LCAxLCA2MSwgMTY1LCAxLCAyNTUsIAorICAgIDczLCAxNjUsIDEsIDczLCAxNjUsIDEsIDIzNiwgMzMsIDE2NSwgMSwgNzAsIDE2NSwgMSwgMjE0LCAxMTgsIDE2NSwgMSwgCisgICAgMTQ5LCAxNTMsIDE2NSwgMSwgMTQ5LCAxNTYsIDE2NSwgMSwgNzUsIDE2NSwgMSwgMjQ1LCAyMDksIDE2NSwgMSwgMjU0LCAKKyAgICAyMDEsIDE2NSwgMSwgNzYsIDE2NSwgMSwgMjI2LCAxODMsIDE2NSwgMSwgMjUzLCAxOTIsIDE2NSwgMSwgMTc2LCAxNjUsIDEsIAorICAgIDIzNCwgMTMyLCAxNjUsIDEsIDI0MywgMTM1LCAxNjUsIDEsIDI0MiwgMjQ5LCAxNjUsIDEsIDIyOSwgNzcsIDE2NSwgMSwgCisgICAgMjUxLCAzMywgMTY1LCAxLCAyNTAsIDE1NywgMTY1LCAxLCAyMzUsIDE0MSwgMTY1LCAxLCAyMzUsIDExNCwgMTY1LCAxLCAKKyAgICAyMjcsIDE2NSwgMTY1LCAxLCAyMTUsIDE1NiwgMTY1LCAxLCAyMTUsIDE0NCwgMTY1LCAxLCAyNDgsIDEzNSwgMTY1LCAxLCAKKyAgICAyNDgsIDExOSwgMTY1LCAxLCAyMjgsIDExMCwgMTY1LCAxLCAyMTcsIDEwNSwgMTY1LCAxLCAyMTYsIDIwOCwgMTY1LCAxLCAKKyAgICAyNDgsIDIyMSwgMTY1LCAxLCAyNDgsIDI1LCAxNjUsIDEsIDE5NywgMTY1LCAxLCAxOTAsIDE2NSwgMSwgMjI1LCAxNDcsIAorICAgIDE2NSwgMSwgMjUyLCAxOTEsIDE2NSwgMSwgMjUyLCAxOCwgMTY1LCAxLCAxODQsIDE2NSwgMSwgMTkxLCAxNjUsIDEsIDIwNSwgCisgICAgMTY1LCAxLCAyMjIsIDE3OSwgMTY1LCAxLCAyMzMsIDEzNSwgMTY1LCAxLCAyMzIsIDE4NCwgMTY1LCAxLCAyMTQsIDI3LCAKKyAgICAxNjUsIDEsIDIyMCwgMTAyLCAxNjUsIDEsIDIxOCwgMjIzLCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgCisgICAgMjI3LCAyMDUsIDE2NSwgNSwgMjUzLCAxNzUsIDE2NSwgMjUsIDUsIDI1NSwgNzMsIDE2NSwgMjUsIDUsIDczLCAxNjUsIDI1LCAKKyAgICA1LCAyMzYsIDMzLCAxNjUsIDI1LCA1LCA3MCwgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAKKyAgICAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNjUsIDI1LCA1LCA3NSwgMTY1LCAyNSwgNSwgMjQ1LCAyMDksIDE2NSwgMjUsIAorICAgIDUsIDI1NCwgMjAxLCAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjI2LCAxODMsIDE2NSwgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIDIzMywgMjMsIDc4LCAxNjUsIDI1NCwgMjAyLCAyMzMsIDIzLCA3OCwgMTY1LCAxLCAKKyAgICAyNDQsIDE5NiwgMTY1LCAxLCAxNDksIDIyMiwgMTgwLCAxNjUsIDEsIDE0OSwgMjMyLCAxODUsIDE2NSwgMjUsIDUsIDE0OSwgCisgICAgMTU2LCAxNjUsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTAsIDE2NSwgMjEsIAorICAgIDEwNSwgMTY1LCAyMSwgMTU4LCAxNjUsIDIxLCAxNjEsIDE2NSwgMjEsIDE4OSwgMTY1LCAyMSwgMTk0LCAxNjUsIDIxLCAKKyAgICAxOTgsIDE2NSwgMjEsIDE5NSwgMTY1LCAyMSwgMjAwLCAxNjUsIDUsIDIzNSwgMTAyLCAxNjUsIDUsIDIxNCwgMTYxLCAxMzYsIAorICAgIDUsIDI1NCwgNzUsIDEzNiwgNSwgMjEzLCAxNDcsIDEzNiwgMSwgNjEsIDEzNiwgMSwgMjU1LCA3MywgMTM2LCAxLCA3MywgCisgICAgMTM2LCAxLCAyMzYsIDMzLCAxMzYsIDEsIDcwLCAxMzYsIDEsIDIxNCwgMTE4LCAxMzYsIDEsIDE0OSwgMTUzLCAxMzYsIDEsIAorICAgIDE0OSwgMTU2LCAxMzYsIDEsIDc1LCAxMzYsIDEsIDI0NSwgMjA5LCAxMzYsIDEsIDI1NCwgMjAxLCAxMzYsIDEsIDc2LCAKKyAgICAxMzYsIDEsIDIyNiwgMTgzLCAxMzYsIDEsIDI1MywgMTkyLCAxMzYsIDEsIDE3NiwgMTM2LCAxLCAyMzQsIDEzMiwgMTM2LCAKKyAgICAxLCAyNDMsIDEzNSwgMTM2LCAxLCAyNDIsIDI0OSwgMTM2LCAxLCAyMjksIDc3LCAxMzYsIDEsIDI1MSwgMzMsIDEzNiwgMSwgCisgICAgMjUwLCAxNTcsIDEzNiwgMSwgMjM1LCAxNDEsIDEzNiwgMSwgMjM1LCAxMTQsIDEzNiwgMSwgMjI3LCAxNjUsIDEzNiwgMSwgCisgICAgMjE1LCAxNTYsIDEzNiwgMSwgMjE1LCAxNDQsIDEzNiwgMSwgMjQ4LCAxMzUsIDEzNiwgMSwgMjQ4LCAxMTksIDEzNiwgMSwgCisgICAgMjI4LCAxMTAsIDEzNiwgMSwgMjE3LCAxMDUsIDEzNiwgMSwgMjE2LCAyMDgsIDEzNiwgMSwgMjQ4LCAyMjEsIDEzNiwgMSwgCisgICAgMjQ4LCAyNSwgMTM2LCAxLCAxOTcsIDEzNiwgMSwgMjI4LCA5MiwgMTM2LCAxLCAxOTAsIDEzNiwgMSwgMjI1LCAxNDcsIAorICAgIDEzNiwgMSwgMjUyLCAxOTEsIDEzNiwgMSwgMjUyLCAxOCwgMTM2LCAxLCAxODQsIDEzNiwgMSwgMTkxLCAxMzYsIDEsIDIwNSwgCisgICAgMTM2LCAxLCAyMjIsIDE3OSwgMTM2LCAxLCAyMzMsIDEzNSwgMTM2LCAxLCAyMzIsIDE4NCwgMTM2LCAxLCAyMzIsIDE3NSwgCisgICAgMTM2LCAxLCAyMTQsIDI3LCAxMzYsIDEsIDIyMCwgMTAyLCAxMzYsIDEsIDIxOCwgMjIzLCAxMzYsIDEsIDIwNiwgMTM2LCAxLCAKKyAgICAxNjIsIDEzNiwgMSwgMjE1LCAxMjUsIDEzNiwgNSwgMjUzLCAxNzUsIDEzNiwgMjUsIDUsIDI1NSwgNzMsIDEzNiwgMjUsIDUsIAorICAgIDczLCAxMzYsIDI1LCA1LCAyMzYsIDMzLCAxMzYsIDI1LCA1LCA3MCwgMTM2LCAyNSwgNSwgMjE0LCAxMTgsIDEzNiwgMjUsIAorICAgIDUsIDE0OSwgMTUzLCAxMzYsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxMzYsIDI1LCA1LCA3NSwgMTM2LCAyNSwgNSwgMjQ1LCAKKyAgICAyMDksIDEzNiwgMjUsIDUsIDI1NCwgMjAxLCAxMzYsIDI1LCA1LCA3NiwgMTM2LCAyNSwgNSwgMjI2LCAxODMsIDEzNiwgMjUsIAorICAgIDUsIDI1MywgMTkyLCAxMzYsIDUsIDIxMywgMTUyLCAxMzYsIDEsIDU5LCAyMjMsIDczLCAxMzYsIDI1MywgMTkzLCAyMzMsIAorICAgIDIzLCA3OCwgMTM2LCAxLCAxNDksIDIyMiwgMTgwLCAxMzYsIDEsIDE0OSwgMjMyLCAxODUsIDEzNiwgMjUsIDUsIDE0OSwgCisgICAgMTU2LCAxMzYsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxMzYsIDIxLCAyMTAsIDg2LCAxMzYsIDIxLCAxMTAsIDEzNiwgMjEsIAorICAgIDEwNSwgMTM2LCAyMSwgMTU4LCAxMzYsIDIxLCAxNjEsIDEzNiwgMjEsIDE4OSwgMTM2LCAyMSwgMTk0LCAxMzYsIDIxLCAKKyAgICAxOTgsIDEzNiwgMjEsIDE5NSwgMTM2LCAyMSwgMjAwLCAxMzYsIDU0LCAyMTYsIDI0NywgMTM2LCA1NCwgMTIzLCAyNDAsIAorICAgIDIxMCwgMTM2LCA1NCwgMTIzLCAyMTYsIDE0NywgMTM2LCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMTM2LCAyNDQsIDIsIDEyMywgCisgICAgMjQyLCAyNywgMTM2LCAyNDQsIDIsIDEzNCwgMjI0LCAxOSwgMTM2LCAyNDgsIDE1MCwgNzgsIDEzNiwgMSwgMjUwLCA5OSwgCisgICAgMjI4LCAxMTEsIDEzNiwgMSwgMjUwLCA5OSwgMjMwLCAyNSwgMTM2LCAxLCAyNTAsIDk5LCAyMjIsIDE4MCwgMTM2LCAxLCAKKyAgICAyNTAsIDk5LCAxNTYsIDEzNiwgMSwgMjUwLCA5OSwgMjMyLCAxODUsIDEzNiwgMSwgMjUwLCA5OSwgMjM1LCAyMywgMTc1LCAKKyAgICA1LCAyNTQsIDc0LCAxNzUsIDUsIDIxMywgMTQ2LCAxNzUsIDEsIDI1MywgMTY1LCAxNzUsIDEsIDI1NSwgMjcsIDE3NSwgMSwgCisgICAgMjU0LCAyMjMsIDE3NSwgMSwgMjU0LCAyMzgsIDE3NSwgMSwgMjM1LCAxNTEsIDE3NSwgMSwgMjM2LCAzMiwgMTc1LCAxLCAKKyAgICAyMTQsIDExMCwgMTc1LCAxLCAyMTQsIDExMiwgMTc1LCAxLCAyMzUsIDE3MywgMTc1LCAxLCAyMzUsIDE3NCwgMTc1LCAxLCAKKyAgICAyMzYsIDE4LCAxNzUsIDEsIDIzNiwgMjAsIDE3NSwgMSwgMjQ1LCAxNywgMTc1LCAxLCAyNDUsIDIwNCwgMTc1LCAxLCAyNTQsIAorICAgIDE4OCwgMTc1LCAxLCAyMjYsIDEwOCwgMTc1LCAxLCAyMjYsIDE3NywgMTc1LCAxLCAyNTMsIDE3OCwgMTc1LCAxLCAyNTQsIAorICAgIDE0NiwgMjM0LCAxODcsIDE3NSwgMSwgMjMxLCAyMDksIDIzNCwgMTg3LCAxNzUsIDEsIDI1NCwgMTQ2LCAyNDMsIDgyLCAKKyAgICAxNzUsIDEsIDIzMSwgMjA5LCAyNDMsIDgyLCAxNzUsIDEsIDIzNCwgMjI5LCAyMjksIDIyMiwgMTc1LCAxLCAyMjEsIDIzNiwgCisgICAgMjQzLCA4MiwgMTc1LCAxLCAyNTQsIDE0NiwgMjUwLCAyMTYsIDE3NSwgMSwgMjMxLCAyMDksIDI1MCwgMjE2LCAxNzUsIDEsIAorICAgIDI1NCwgMTQ2LCAyMzUsIDEyNywgMTc1LCAxLCAyMzEsIDIwOSwgMjM1LCAxMjcsIDE3NSwgMSwgMjE3LCA5OCwgMjI5LCAKKyAgICAyMjIsIDE3NSwgMSwgMjE3LCA5OCwgMjIxLCAyMzUsIDIyOSwgMjIzLCAxNzUsIDEsIDIyMSwgMjM2LCAyMzUsIDEyNywgCisgICAgMTc1LCAxLCAyNTQsIDE0NiwgMjE1LCAxNTIsIDE3NSwgMSwgMjMxLCAyMDksIDIxNSwgMTUyLCAxNzUsIDEsIDI1NCwgMTQ2LCAKKyAgICAyNDgsIDEyNiwgMTc1LCAxLCAyMzEsIDIwOSwgMjQ4LCAxMjYsIDE3NSwgMSwgMjMwLCA1MywgMjI5LCAxODAsIDE3NSwgMSwgCisgICAgMjIxLCAyMzYsIDI0OCwgMTI2LCAxNzUsIDEsIDI1NCwgMTQ2LCAyMTcsIDMwLCAxNzUsIDEsIDIzMSwgMjA5LCAyMTcsIDMwLCAKKyAgICAxNzUsIDEsIDI1NCwgMTQ2LCAyNDgsIDE0NCwgMTc1LCAxLCAyMzEsIDIwOSwgMjQ4LCAxNDQsIDE3NSwgMSwgMjQ4LCAxNzQsIAorICAgIDIyOSwgMTgwLCAxNzUsIDEsIDIyMSwgMjM2LCAyNDgsIDE0NCwgMTc1LCAxLCAyNTQsIDE0NiwgMjI1LCAyMjgsIDE3NSwgMSwgCisgICAgMjMxLCAyMDksIDIyNSwgMjI4LCAxNzUsIDEsIDI1NCwgMTQ2LCAyNTIsIDExMiwgMTc1LCAxLCAyMzEsIDIwOSwgMjUyLCAKKyAgICAxMTIsIDE3NSwgMSwgMjMxLCAxMzEsIDE3NSwgMSwgMjU0LCAxMzEsIDI1MiwgMTEyLCAxNzUsIDEsIDIxMSwgNTEsIDE3NSwgCisgICAgMSwgMjIzLCAxMzMsIDE3NSwgMSwgMjQ4LCAxNzQsIDIzMywgNjcsIDE3NSwgMSwgMjE0LCAxLCAxNzUsIDEsIDIxNywgOTgsIAorICAgIDIyMSwgMjEwLCAxNzUsIDEsIDIzMCwgNTMsIDIyMSwgMjEwLCAxNzUsIDEsIDI0OCwgMTc0LCAyMjEsIDIxMCwgMTc1LCAxLCAKKyAgICAyNDEsIDI0MiwgMTc1LCAxLCAyMzAsIDUzLCAyMzMsIDY3LCAxNzUsIDEsIDI0NCwgMTU2LCAxNzUsIDUsIDI1NCwgMTc3LCAKKyAgICAxNzUsIDI1LCA1LCAyNTQsIDIzMywgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDI1NCwgMjQwLCAxNzUsIDI1LCA1LCAyNDcsIAorICAgIDIyOCwgMjU0LCAyNDAsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyMzUsIDE3MCwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIzNSwgCisgICAgMTcwLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjI2LCA4OCwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIyNiwgODgsIDE3NSwgCisgICAgMjUsIDUsIDI0MywgMTI0LCAxNzUsIDI1LCA1LCAyMzQsIDE1LCAxNzUsIDI1LCA1LCAyNDcsIDIyOCwgMjM0LCAxNSwgMTc1LCAKKyAgICAyNSwgNSwgMjM0LCAxNywgMjQ4LCA2NywgMTc1LCAyNSwgNSwgMjM0LCAxNiwgMjQyLCA0NywgMjU0LCAyMzMsIDE3NSwgMjUsIAorICAgIDUsIDIzNCwgMTYsIDI0MiwgNDcsIDI0NywgMjI4LCAyNTQsIDIzMywgMTc1LCAyNSwgNSwgMjM0LCAxNiwgMjQyLCA0NywgCisgICAgMjQzLCA4MSwgMTc1LCAyNSwgNSwgMjQzLCA4MSwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDI0MywgMTI0LCAxNzUsIDI1LCA1LCAKKyAgICAyNDcsIDIyOCwgMjQzLCA4MSwgMTc1LCAyMjQsIDE0MSwgMjMzLCAyMDcsIDE2OCwgMTM1LCAyMzQsIDI5LCAyMzQsIDI0NiwgCisgICAgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMzQsIDEyOCwgMTY4LCAxMzUsIDIzNCwgMTA2LCAyMzQsIDk5LCAxNjgsIDEzNSwgMjM0LCAKKyAgICAxMDYsIDIzNCwgOTUsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCAxMDMsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjIzLCAxNTQsIAorICAgIDE2OCwgMTM1LCAyMjksIDUsIDIyOCwgMjQ4LCAxNjgsIDEzNSwgMjUwLCA4NywgMjUwLCAxNDcsIDE2OCwgMTM1LCAyNTAsIAorICAgIDg3LCAyNTAsIDk1LCAxNjgsIDEzNSwgMjUwLCA4NywgMjUwLCAxNDYsIDE2OCwgMTM1LCAyMTksIDU5LCAyMTksIDU4LCAKKyAgICAxNjgsIDEzNSwgMjUwLCA4NywgMjUwLCA4MywgMTY4LCAxMzUsIDIxMCwgMjQ1LCAyMTAsIDI1MiwgMTY4LCAxMzUsIDI0NywgCisgICAgMTQ2LCAyNTAsIDE1NCwgMTY4LCAxMzUsIDIxNiwgNDIsIDIyNSwgMjM4LCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIxNiwgMjAwLCAKKyAgICAxNjgsIDEzNSwgMjE2LCAxNTcsIDIyOSwgMjAxLCAxNjgsIDEzNSwgMjE2LCAxNTcsIDIyNSwgMTExLCAxNjgsIDEzNSwgCisgICAgMjI4LCA3NSwgMjI5LCA5OCwgMTY4LCAxMzUsIDI0NywgMTQ2LCAyNDgsIDY4LCAxNjgsIDEzNSwgMjE2LCA0MiwgMjE3LCAKKyAgICA1NSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDEzMSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDIwNCwgMTY4LCAxMzUsIAorICAgIDIxNiwgMTU3LCAyMTYsIDE1NCwgMTY4LCAxMzUsIDIyOCwgNzUsIDIyNywgMjM3LCAxNjgsIDEzNSwgMjUxLCAyMDYsIDI1MiwgCisgICAgMTY0LCAxNjgsIDEzNSwgMjI1LCAxNywgMjI1LCA0MiwgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjUsIDExMywgMTY4LCAxMzUsIAorICAgIDI0NCwgNDQsIDI0NCwgMTk2LCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyNSwgMTQxLCAxNjgsIDEzNSwgMjQ0LCA0NCwgMjQ0LCAKKyAgICAxNzMsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjIxLCAyNDcsIDE2OCwgMTM1LCAyMzAsIDE2MiwgMTg0LCAxNjgsIDEzNSwgCisgICAgMjEwLCAyNDUsIDIxMSwgNzksIDE2OCwgMTM1LCAyMjIsIDIxMiwgMjIyLCAxMzksIDE2OCwgMTM1LCAyMjIsIDE0MCwgMTY4LCAKKyAgICAxMzUsIDIzMiwgMTU3LCAyMzIsIDIwNiwgMTY4LCAxMzUsIDIzMiwgOTgsIDE2OCwgMTM1LCAyMTEsIDIyOCwgMjEyLCA2MSwgCisgICAgMTY4LCAxMzUsIDIxOSwgNTksIDIyMiwgNiwgMTY4LCAxMzUsIDIxOSwgNTksIDIyMiwgMTE0LCAxNjgsIDEzNSwgMjE5LCAKKyAgICA1OSwgMjE4LCA4MiwgMTY4LCAxMzUsIDI0MSwgNjksIDI0MSwgMTU5LCAxNjgsIDEzNSwgMjMyLCAxNTcsIDI1MCwgNjgsIAorICAgIDE2OCwgMTM1LCAxNDQsIDI1NCwgMTE1LCAxNjgsIDEzNSwgMjQxLCA2OSwgMjI4LCA3MCwgMTY4LCAxMzUsIDIyNiwgNjgsIAorICAgIDE2OCwgMTM1LCAyMjEsIDIzMCwgNjEsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjQyLCAxNywgMTY4LCAxMzUsIDIyMSwgMjMwLCAKKyAgICAyNTUsIDczLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMTM2LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDczLCAxNjgsIDEzNSwgCisgICAgMjIxLCAyMzAsIDIzNiwgMzMsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjE0LCAyMTQsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjE0LCAKKyAgICAyMTIsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzAsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjE0LCAxMTgsIDE2OCwgMTM1LCAyMjUsIAorICAgIDEyNCwgMTY4LCAyNDksIDk4LCAxNiwgMjUyLCAxNjUsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzUsIDE2OCwgMTM1LCAyMjEsIAorICAgIDIzMCwgMjU0LCAyNDMsIDE2OCwgMTM1LCAyMjEsIDIzMCwgNzYsIDE2OCwgMTM1LCAyMjEsIDIzMCwgMjU0LCAyMDIsIDIzMSwgCisgICAgMTk4LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMjAyLCAyMzEsIDE5OSwgMTY4LCAxMzUsIDIzMywgMTA2LCAxNjgsIAorICAgIDEzNSwgMjMxLCAxOTUsIDE2OCwgMTM1LCAyMzEsIDE5NiwgMTY4LCAxMzUsIDIzMSwgMjA0LCAyNDUsIDE4MCwgMTY4LCAKKyAgICAxMzUsIDIzMSwgMjA0LCAyMTYsIDE1NiwgMTY4LCAxMzUsIDIzMSwgMjA0LCAyMTUsIDIyOCwgMTY4LCAxMzUsIDIzMSwgCisgICAgMjA0LCAyNTAsIDEzNSwgMTY4LCAxMzUsIDIxNiwgMTk4LCAxNjgsIDEzNSwgMjI4LCAyMDUsIDE2OCwgMTM1LCAyMTEsIDczLCAKKyAgICAxNjgsIDEzNSwgMjQ0LCAzNSwgMTY4LCAyMSwgMjEwLCA4NiwgMTY4LCAyMSwgMTEwLCAxNjgsIDIxLCAxMDUsIDE2OCwgMjEsIAorICAgIDE1OCwgMTY4LCAyMSwgMTYxLCAxNjgsIDIxLCAxODksIDE2OCwgMjEsIDE5NCwgMTY4LCAyMSwgMTk4LCAxNjgsIDIxLCAKKyAgICAxOTUsIDE2OCwgMjEsIDIwMCwgMTY4LCAxMzUsIDI1NCwgMTExLCAxNjgsIDEzNSwgMjM0LCAxMDQsIDIwOSwgMjA5LCAxLCAKKyAgICAyMzQsIDI4LCAyMDksIDIwOSwgMSwgMjM0LCAxMDYsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNiwgMjE3LCA2MiwgCisgICAgMjA5LCAyMDksIDEsIDIyOSwgNCwgMjA5LCAyMDksIDEsIDI0OSwgMjM4LCAyMDksIDIwOSwgMSwgMjE5LCA1OSwgMjE3LCAKKyAgICA2MiwgMjA5LCAyMDksIDEsIDIyNywgMTM0LCAyMDksIDIwOSwgMSwgMjQ3LCAxNDUsIDIwOSwgMjA5LCAxLCAxMTEsIDIwOSwgCisgICAgMjA5LCAxLCAyMTYsIDE1NywgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDIxNiwgMTU3LCAyMTcsIDYyLCAyMDksIDIwOSwgMSwgCisgICAgMjI4LCA3NCwgMjA5LCAyMDksIDEsIDI1MSwgMjA1LCAyMDksIDIwOSwgMSwgMjI1LCAxNiwgMjA5LCAyMDksIDEsIDIyNSwgCisgICAgMTIyLCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgMjE3LCA2MiwgMjA5LCAyMDksIDEsIDIyNSwgMTIyLCAyMTcsIAorICAgIDYyLCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDIzMCwgMTYxLCAyMDksIDIwOSwgMSwgCisgICAgMjEwLCAyNDQsIDIwOSwgMjA5LCAxLCAyMzIsIDE1NywgMjMyLCAyMDYsIDIwOSwgMjA5LCAxLCAyMzIsIDE1NywgMjMyLCAKKyAgICAxMjEsIDIwOSwgMjA5LCAxLCAyMTEsIDIyNywgMjA5LCAyMDksIDEsIDIxOSwgNTksIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAKKyAgICAyNDEsIDY5LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgNzYsIDIwOSwgMjA5LCAxLCAyNDEsIDY5LCAyMTcsIDYyLCAyMDksIAorICAgIDIwOSwgMjQ1LCAxNjMsIDIwOSwgMjA5LCAyNSwgNSwgNjEsIDIwOSwgMjA5LCAyNSwgNSwgMjMxLCAyMDQsIDIzNCwgMjM0LCAKKyAgICAyMDksIDIwOSwgMjUsIDUsIDI1NSwgNzMsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAxMzYsIDIwOSwgMjA5LCAyNSwgNSwgNzMsIAorICAgIDIwOSwgMjA5LCAyNSwgNSwgMjM2LCAzMywgMjA5LCAyMDksIDI1LCA1LCAyMTEsIDExNywgMjA5LCAyMDksIDI1LCA1LCAKKyAgICAyMTAsIDE2OSwgMjA5LCAyMDksIDI1LCA1LCA3MCwgMjA5LCAyMDksIDI1LCA1LCAyMTQsIDExOCwgMjA5LCAyMDksIDI1LCAKKyAgICA1LCAyMzEsIDIwNCwgMjM0LCAxMywgMjA5LCAyMDksIDIyMCwgMTQ1LCA1LCAyMzIsIDE1NiwgMjA5LCAyMDksIDIyMCwgCisgICAgMTQ1LCA1LCAyMjcsIDEzNCwgMjA5LCAyMDksIDI1LCA1LCA3NSwgMjA5LCAyMDksIDI1LCA1LCAyNDUsIDE5NSwgMjA5LCAKKyAgICAyMDksIDI1LCA1LCA3NiwgMjA5LCAyMDksIDI1LCA1LCAyNTMsIDE2NywgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDIwMSwgCisgICAgMjA5LCAyMDksIDIzNCwgMjksIDIzMywgMTM1LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwNCwgMjQ1LCAxODAsIDIwOSwgMjA5LCAKKyAgICAxMzgsIDIzMSwgMjA0LCAyMTYsIDE1NiwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDQsIDIxNiwgMTE3LCAyMDksIDIwOSwgCisgICAgMTM4LCAyMzEsIDIwNCwgMjUwLCAyMjMsIDIwOSwgMjA5LCAyNTEsIDQsIDc4LCAyMDksIDIwOSwgMjI4LCAyMTQsIDIwOSwgCisgICAgMjA5LCAyMSwgMjEwLCA4NiwgMjA5LCAyMDksIDIxLCAxMTAsIDIwOSwgMjA5LCAyMSwgMTA1LCAyMDksIDIwOSwgMjEsIAorICAgIDE1OCwgMjA5LCAyMDksIDIxLCAxNjEsIDIwOSwgMjA5LCAyMSwgMTg5LCAyMDksIDIwOSwgMjEsIDE5NCwgMjA5LCAyMDksIAorICAgIDIxLCAxOTgsIDIwOSwgMjA5LCAyMSwgMTk1LCAyMDksIDIwOSwgMjEsIDIwMCwgMjA5LCAyMDksIDI0MSwgNjksIDIyOCwgCisgICAgNzQsIDIwOSwgMjA5LCAyNDEsIDY5LCAyMzAsIDE2MSwgMjA5LCAyMDksIDEsIDIzNCwgMTA3LCAyNDIsIDE3NCwgMjA5LCAKKyAgICAyMDksIDEsIDIzNCwgMTA3LCAyMjcsIDEzNCwgNjMsIDMsIDIyNiwgMjA0LCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAKKyAgICAyMzAsIDI0OCwgMjE1LCAxODksIDYxLCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAyMzAsIDI0OCwgMjU1LCAxNTksIAorICAgIDIyMiwgMjE2LCAyNTIsIDc3LCAxODQsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTEsIDAsIDIzMCwgMjQ4LCAyNTUsIDE1OSwgCisgICAgMjQyLCAxMTUsIDIxNSwgMTczLCAxODQsIDYzLCAxNjQsIDY1LCAyMTEsIDAsIDIzMCwgMjQ4LCAyMzEsIDkzLCAxODQsIDYzLCAKKyAgICAxNjQsIDI0OSwgMjUyLCAyMTEsIDAsIDIzMCwgMjQ4LCAyMjAsIDEwOSwgMTg0LCA2MywgMTY0LCAyNTAsIDIzOSwgMjExLCAKKyAgICAwLCAyMzAsIDI0OCwgMjI1LCAxMTIsIDIyMCwgOTYsIDE4NCwgNjMsIDE2NCwgMjExLCAwLCAyMzAsIDI0OCwgMjE1LCAxNzMsIAorICAgIDIyMCwgOTYsIDE4NCwgNjMsIDE2NCwgMjIxLCAyMDgsIDIyMCwgOTUsIDYzLCAxNjQsIDI1MSwgMTI4LCAyMTEsIDAsIDIzMCwgCisgICAgMjQ3LCA2MywgMTY0LCAyNTEsIDIyMywgMjIwLCAzLCAyMTEsIDAsIDIzMCwgMjQ3LCA2MywgMTY0LCAyMzUsIDE5NywgMjE1LCAKKyAgICAxNzIsIDYzLCAxNjQsIDI0OCwgNjEsIDIxNSwgMTczLCAyNTEsIDEyNywgNjMsIDE2NCwgMjIwLCA5NSwgNjMsIDE2NCwgCisgICAgMjI3LCAxMzksIDIyMCwgOTUsIDYzLCAxNjQsIDIxNSwgMTczLCAyMjAsIDk1LCA2MywgMTY0LCAyMjcsIDEzOSwgMjE1LCAKKyAgICAxNzMsIDIyMCwgOTUsIDYzLCAxNjQsIDIyMiwgMjM2LCAyNTAsIDEyMiwgMjE4LCAyMzYsIDIyMCwgOTUsIDYzLCAxNjQsIAorICAgIDIyMywgNDIsIDI0MiwgMTQ2LCAyMjAsIDk1LCA2MywgMTY0LCAyNTAsIDIzOSwgMjU1LCAxNjMsIDIyMiwgMTQ0LCAyMzEsIAorICAgIDkyLCAxOTksIDI1MSwgNywgNjMsIDE2NCwgMjQyLCAxMTUsIDIxNSwgMTcyLCA2MywgMjMyLCAxNDQsIDUsIDI1MCwgMTU1LCAKKyAgICAyMjIsIDE0MywgNjMsIDIzMiwgMTQ0LCA1LCAyMzIsIDI1MiwgMjIyLCAxNDMsIDYzLCAyNTMsIDIxMiwgNSwgMjIwLCAxMDUsIAorICAgIDI0MywgNjUsIDI1NSwgMTY0LCAyMjIsIDE0MywgNjMsIDI1MywgMjEyLCA1LCAyNTUsIDE2MSwgMTkwLCA2MywgMjUzLCAKKyAgICAyMTIsIDUsIDIyMSwgMTgyLCAyMTUsIDE2OCwgNjMsIDUsIDIyMywgMTMwLCAyNDcsIDE1OSwgMjQzLCA2NCwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyNDcsIDE1OSwgMjQyLCAxNzYsIDYzLCA1LCAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MiwgMTE2LCA2MywgNSwgCisgICAgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDMsIDY0LCA2MywgNSwgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDIsIDE3NiwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyNDcsIDE1OSwgMjIzLCAxMzAsIDIyOSwgMjE4LCA2MywgMjEsIDIxMCwgODYsIDYzLCAyMSwgMTEwLCA2MywgCisgICAgMjEsIDEwNSwgNjMsIDIxLCAxNTgsIDYzLCAyMSwgMTYxLCA2MywgMjEsIDE4OSwgNjMsIDIxLCAxOTQsIDYzLCAyMSwgMTk4LCAKKyAgICA2MywgMjEsIDE5NSwgNjMsIDIxLCAyMDAsIDYzLCAyMSwgMTYzLCAxMTAsIDYzLCAyMSwgMTYzLCAxMDUsIDYzLCAyMSwgCisgICAgMTYzLCAxNTgsIDYzLCAyMSwgMTYzLCAxNjEsIDYzLCAyMSwgMTYzLCAxODksIDYzLCAyMSwgMTYzLCAxOTQsIDYzLCAyMSwgCisgICAgMTYzLCAxOTgsIDYzLCAyMSwgMTYzLCAxOTUsIDYzLCAyMSwgMTYzLCAyMDAsIDYzLCAyMSwgMTYzLCAyMTAsIDg2LCA2MywgCisgICAgMTY0LCAyNTEsIDEzMCwgMjIyLCAxNDMsIDYzLCAxNjQsIDIyOSwgNjgsIDI1MSwgNjgsIDIyNywgMTQ5LCAyMTAsIDI1LCAKKyAgICA2MywgMTY0LCAyNTAsIDIzOSwgMjU1LCAxNjMsIDIyMiwgMTQ0LCAyNTEsIDY5LCAyMzAsIDIwMiwgMjUxLCA3LCA2MywgCisgICAgMTY0LCAyMjksIDY4LCAyNTEsIDY4LCAyMjAsIDEwNiwgMjIyLCAxNDMsIDYzLCAxNjQsIDI1MCwgMTMyLCAyMzAsIDI0NywgCisgICAgNjMsIDE2NCwgMjE1LCAxODQsIDI1NSwgMTYwLCA2MywgMTY0LCAyNDIsIDEwMCwgMjIyLCAxNDQsIDI0MiwgNjMsIDYzLCAKKyAgICAxNjQsIDI0MiwgMTAwLCAyMjIsIDE0NCwgMjQyLCA2OSwgNjMsIDE2NCwgMjU0LCAxMTYsIDIzNCwgMTIzLCAyNDIsIDYzLCAKKyAgICA2MywgMTY0LCAyNTQsIDExNiwgMjM0LCAxMjMsIDI0MiwgNjksIDYzLCA1LCAyMTEsIDY1LCAyMTUsIDE3MSwgNjMsIDUsIAorICAgIDIzMSwgMTY3LCAyMTUsIDE3MSwgNjMsIDEsIDE3NiwgNjMsIDEsIDIzNCwgMTMyLCA2MywgMSwgMjQzLCAxMzUsIDYzLCAxLCAKKyAgICAyNDIsIDI0OSwgNjMsIDEsIDIyOSwgNzcsIDYzLCAxLCAyNTEsIDMzLCA2MywgMSwgMjUwLCAxNTcsIDYzLCAxLCAyMzUsIAorICAgIDE0MSwgNjMsIDEsIDIyNywgMTY1LCA2MywgMSwgMjE1LCAxNTYsIDYzLCAxLCAyMTUsIDE0NCwgNjMsIDEsIDI0OCwgMTM1LCAKKyAgICA2MywgMSwgMjQ4LCAxMTksIDYzLCAxLCAyMjgsIDExMCwgNjMsIDEsIDIxNywgMTA1LCA2MywgMSwgMjE2LCAyMDgsIDYzLCAKKyAgICAxLCAyNDgsIDIyMSwgNjMsIDEsIDI0OCwgMjUsIDYzLCAxLCAxOTcsIDYzLCAxLCAxOTAsIDYzLCAxLCAyMjUsIDE0NywgNjMsIAorICAgIDEsIDI1MiwgMTkxLCA2MywgMSwgMjUyLCAxOCwgNjMsIDEsIDE4NCwgNjMsIDEsIDIxNSwgMTgzLCA2MywgMSwgMjE1LCAKKyAgICAxNzUsIDYzLCAxLCAyNDYsIDM4LCA2MywgMSwgMjQ2LCAzMywgNjMsIDEsIDIxMiwgNjUsIDYzLCAxLCAyMTAsIDgyLCA2MywgCisgICAgMSwgMjEwLCAxMTYsIDYzLCAxLCAyNTUsIDE2NiwgNjMsIDEsIDE5MSwgNjMsIDEsIDIwNSwgNjMsIDEsIDIzMywgMTM1LCAKKyAgICA2MywgMSwgMjIwLCAxMDIsIDYzLCAxLCAyMTgsIDIyMywgNjMsIDEsIDIwNiwgNjMsIDEsIDE2MiwgNjMsIDEsIDYxLCA2MywgCisgICAgMSwgMjMzLCAyMzEsIDYzLCAxLCAyNDQsIDc3LCAyMDUsIDYzLCAxLCAyMzQsIDQ2LCA2MywgMSwgMjIyLCAxNzksIDYzLCAKKyAgICAyNSwgNSwgMjU1LCA3MywgNjMsIDI1LCA1LCA3MywgNjMsIDI1LCA1LCAyMzYsIDMzLCA2MywgMjUsIDUsIDcwLCA2MywgMjUsIAorICAgIDUsIDIxNCwgMTE4LCA2MywgMjUsIDUsIDE0OSwgMTUzLCA2MywgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDYzLCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDYzLCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgNjMsIDI1LCA1LCA3NSwgNjMsIDI1LCA1LCAyNDUsIDIwOSwgCisgICAgNjMsIDI1LCA1LCA3NiwgNjMsIDI1LCA1LCAyMjYsIDE4MywgNjMsIDUsIDIyMiwgMjIxLCAyMTgsIDg0LCAyMjksIDc4LCAKKyAgICAyMjIsIDIxMSwgNjMsIDUsIDIyMiwgMjE2LCAyNTIsIDc2LCA2MywgMjUsIDUsIDIyMywgNDksIDczLCA2MywgMjUsIDUsIAorICAgIDIyMywgNDksIDIzNiwgMzMsIDYzLCA1LCAyMjcsIDE0OSwgMjEwLCAyNiwgMjI5LCAyMjYsIDI0OCwgMjIxLCA2MywgNSwgCisgICAgMjE5LCA3MSwgMjMzLCA2MCwgNjMsIDE2NCwgMjQyLCAyOSwgNjMsIDE2NCwgMjI2LCA1NywgNjMsIDUsIDIzMywgNjMsIAorICAgIDIyMiwgMTQzLCA2MywgNSwgMjExLCA3MCwgMjIyLCAxNDMsIDYzLCA1LCAyMzMsIDY0LCAyMTUsIDE4NCwgMjUxLCA3LCA2MywgCisgICAgNSwgMjMxLCA5NSwgMjUxLCA3LCA2MywgNSwgMjQyLCAxMTksIDI1MSwgOCwgMjIzLCA0MCwgNjMsIDUsIDI0MiwgMTE5LCAKKyAgICAyMzEsIDg1LCAyMjMsIDQwLCA2MywgNSwgMjM1LCAxOTMsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDUsIDIzMywgCisgICAgNjQsIDIxNSwgMTg0LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAKKyAgICAyMzUsIDE5MywgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgMSwgMTc2LCA2MywgMjE4LCA3MywgMSwgMjM0LCAxMzIsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNDMsIDEzNSwgNjMsIDIxOCwgNzMsIDEsIDI0MiwgMjQ5LCA2MywgMjE4LCA3MywgMSwgMjI5LCAKKyAgICA3NywgNjMsIDIxOCwgNzMsIDEsIDI1MSwgMzMsIDYzLCAyMTgsIDczLCAxLCAyNTAsIDE1NywgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIzNSwgMTQxLCA2MywgMjE4LCA3MywgMSwgMjI3LCAxNjUsIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE1NiwgNjMsIDIxOCwgCisgICAgNzMsIDEsIDIxNSwgMTQ0LCA2MywgMjE4LCA3MywgMSwgMjQ4LCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyNDgsIDExOSwgNjMsIAorICAgIDIxOCwgNzMsIDEsIDIyOCwgMTEwLCA2MywgMjE4LCA3MywgMSwgMjE3LCAxMDUsIDYzLCAyMTgsIDczLCAxLCAyMTYsIDIwOCwgCisgICAgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMjIxLCA2MywgMjE4LCA3MywgMSwgMjQ4LCAyNSwgNjMsIDIxOCwgNzMsIDEsIDE5NywgCisgICAgNjMsIDIxOCwgNzMsIDEsIDE5MCwgNjMsIDIxOCwgNzMsIDEsIDIyNSwgMTQ3LCA2MywgMjE4LCA3MywgMSwgMjUyLCAxOTEsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNTIsIDE4LCA2MywgMjE4LCA3MywgMSwgMTg0LCA2MywgMjE4LCA3MywgMSwgMjE1LCAxODMsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyMTUsIDE3NSwgNjMsIDIxOCwgNzMsIDEsIDI0NiwgMzgsIDYzLCAyMTgsIDczLCAxLCAyNDYsIAorICAgIDMzLCA2MywgMjE4LCA3MywgMSwgMjEyLCA2NSwgNjMsIDIxOCwgNzMsIDEsIDIxMCwgODIsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMTAsIDExNiwgNjMsIDIxOCwgNzMsIDEsIDI1NSwgMTY2LCA2MywgMjE4LCA3MywgMSwgMTkxLCA2MywgMjE4LCA3MywgMSwgCisgICAgMjA1LCA2MywgMjE4LCA3MywgMSwgMjMzLCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyMjAsIDEwMiwgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIxOCwgMjIzLCA2MywgMjE4LCA3MywgMSwgMjA2LCA2MywgMjE4LCA3MywgMSwgMTYyLCA2MywgMjE4LCA3MywgMSwgNjEsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyMzMsIDIzMSwgNjMsIDIxOCwgNzMsIDEsIDI0NCwgNzcsIDIxMiwgNjUsIDYzLCAyMTgsIDczLCAKKyAgICAxLCAyNDQsIDc3LCAxOTEsIDYzLCAyMTgsIDczLCAxLCAyNDQsIDc3LCAyMDUsIDYzLCAyMzMsIDIxOCwgMjIyLCAxNDEsIAorICAgIDIzNCwgMTMyLCA2MywgMjMzLCAyMTgsIDIyMiwgMTQxLCAyMzQsIDEzMywgMjUxLCA2OSwgMjMwLCAyMDIsIDI1MSwgNywgCisgICAgNjMsIDI1MCwgMjUyLCA1LCAxMTQsIDI1MiwgNzAsIDYzLCAyNTAsIDI1MiwgNSwgMTkyLCAyNTIsIDcwLCA2MywgMjUwLCAKKyAgICAyNTIsIDUsIDI1MCwgMjUzLCAyMTcsIDIwLCA2MywgMjUwLCAyNTIsIDUsIDIyMSwgMjA3LCAyNTUsIDE2NSwgNjMsIDE2LCAKKyAgICAyNDYsIDkxLCAyNTEsIDEyNSwgNjMsIDE2LCAyMjMsIDEyOSwgMjIyLCAyMjIsIDYzLCAxNiwgMjI2LCA3NywgMjQzLCA2MywgCisgICAgNjMsIDE2LCAyMjMsIDEyOSwgMjIyLCAyMjMsIDIyMywgNDIsIDI0MiwgMTQ1LCA2MywgMTYsIDIyNSwgMTEyLCAxOTAsIDYzLCAKKyAgICAxNiwgMjI4LCA1OSwgMjUxLCAxMjUsIDYzLCAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIDIyNywgMTM5LCAyNTUsIDE2MiwgNjMsIAorICAgIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgMjQyLCAxMTcsIDI1NSwgMTYyLCA2MywgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAKKyAgICAyNTEsIDY5LCAyNTUsIDE2MiwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjIzLCAxMzAsIDI0NywgMTU4LCA2MywgNSwgCisgICAgMjIzLCAxMzAsIDIyOSwgMjE5LCAyNDIsIDExNiwgNjMsIDE2NCwgMjUxLCAxMjksIDIyMCwgMywgMjQyLCAyMTUsIDIzMCwgCisgICAgMjQ4LCAyMjMsIDQxLCA2MywgMTY0LCAyMzAsIDE2MywgMjExLCAwLCAyNDIsIDIxNSwgMjMwLCAyNDgsIDIyMywgNDEsIDYzLCAKKyAgICAxNjQsIDIyNywgMTM5LCAyMTUsIDE3MiwgNjMsIDE2NCwgNjUsIDI1MSwgMTUyLCAyMjIsIDIxMywgMjExLCAwLCAyMzAsIAorICAgIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgMTY0LCAyNDksIDI1MiwgMjUxLCAxNTIsIDIyMiwgMjEzLCAyMTEsIDAsIDIzMCwgCisgICAgMjQ4LCAyMjAsIDEwOSwgMTg0LCAyMjIsIDI1MCwgMjE3LCAyNTUsIDUwLCAyMzMsIDQ1LCAyMTcsIDI1NSwgNTAsIDIyMiwgCisgICAgMjUwLCAyMTcsIDI1NSwgNSwgMiwgMjQ3LCAxMTgsIDIzMywgNDUsIDIxNywgMjU1LCA1LCAyLCAyNDcsIDExOCwgNjMsIAorICAgIDE2NCwgMjMzLCA1NSwgMjMxLCA5NiwgMjIyLCAxNDMsIDYzLCAxNjQsIDIxNSwgMjUwLCAyMzEsIDk2LCAyMjIsIDE0MywgCisgICAgNjgsIDEsIDE3NiwgNjgsIDEsIDIzNCwgMTMyLCA2OCwgMSwgMjQzLCAxMzUsIDY4LCAxLCAyNDIsIDI0OSwgNjgsIDEsIAorICAgIDIyOSwgNzcsIDY4LCAxLCAyNTEsIDMzLCA2OCwgMSwgMjUwLCAxNTcsIDY4LCAxLCAyMzUsIDE0MSwgNjgsIDEsIDIzNSwgCisgICAgMTE0LCA2OCwgMSwgMjI3LCAxNjUsIDY4LCAxLCAyMjgsIDc2LCA2OCwgMSwgMjE1LCAxNTYsIDY4LCAxLCAyMTUsIDE0NCwgCisgICAgNjgsIDEsIDI0OCwgMTM1LCA2OCwgMSwgMjQ4LCAxMTksIDY4LCAxLCAyMjgsIDExMCwgNjgsIDEsIDIxNywgMTA1LCA2OCwgCisgICAgMSwgMjE2LCAyMDgsIDY4LCAxLCAyNDgsIDIyMSwgNjgsIDEsIDI0OCwgMjUsIDY4LCAxLCAxOTcsIDY4LCAxLCAxOTAsIDY4LCAKKyAgICAxLCAyMjUsIDE0NywgNjgsIDEsIDI1MiwgMTkxLCA2OCwgMSwgMjUyLCAxOCwgNjgsIDEsIDE4NCwgNjgsIDEsIDE5MSwgNjgsIAorICAgIDEsIDIwNSwgNjgsIDEsIDIzMywgMTM1LCA2OCwgMSwgMjEyLCA2NSwgNjgsIDEsIDIwNiwgNjgsIDEsIDE2MiwgNjgsIDEsIAorICAgIDIzMiwgMTg0LCA2OCwgMSwgNjEsIDY4LCAxLCAyMjAsIDg2LCA2MSwgNjgsIDEsIDczLCA2OCwgMSwgMjM2LCAzMywgNjgsIAorICAgIDEsIDcwLCA2OCwgMSwgMjE0LCAxMTgsIDY4LCAxLCA3NSwgNjgsIDEsIDIzMCwgMTUxLCA3NSwgNjgsIDEsIDc2LCA2OCwgMSwgCisgICAgMjUzLCAxOTIsIDY4LCAyNSwgNSwgMjE3LCA2NCwgMjU1LCA3MywgNjgsIDI1LCA1LCAyNTUsIDczLCA2OCwgMjUsIDUsIDczLCAKKyAgICA2OCwgMjUsIDUsIDIzNiwgMzMsIDY4LCAyNSwgNSwgNzAsIDY4LCAyNSwgNSwgMjE0LCAxMTgsIDY4LCAyNSwgNSwgNzUsIAorICAgIDY4LCAyNSwgNSwgMjU0LCAyMDEsIDY4LCAyNSwgNSwgMjMwLCAxNTEsIDIzNiwgMzMsIDY4LCAyNSwgNSwgMjMwLCAxNTEsIAorICAgIDc2LCA2OCwgMjUsIDUsIDE2MCwgNDgsIDY4LCA1LCAyNTQsIDc1LCA2OCwgNSwgNTksIDUxLCA2OCwgNSwgMjEzLCAxNDcsIAorICAgIDY4LCA1LCAyMTMsIDE1MiwgNjgsIDUsIDI1MywgMjM1LCA2OCwgMTE2LCA1LCAxNDcsIDE5MSwgNjgsIDExNiwgNSwgMTQ3LCAKKyAgICAyMDUsIDY4LCAxMTYsIDUsIDE0NywgMjEyLCA2NSwgNjgsIDExNiwgNSwgMTQ3LCAxNjIsIDY4LCAxLCAyNDIsIDEzMiwgCisgICAgMjA2LCA2OCwgMjEsIDIxMCwgODYsIDY4LCAyMSwgMTEwLCA2OCwgMjEsIDEwNSwgNjgsIDIxLCAxNTgsIDY4LCAyMSwgMTYxLCAKKyAgICA2OCwgMjEsIDE4OSwgNjgsIDIxLCAxOTQsIDY4LCAyMSwgMTk4LCA2OCwgMjEsIDE5NSwgNjgsIDIxLCAyMDAsIDY4LCA1LCAKKyAgICAyMzIsIDE5MiwgMjIxLCAxNzIsIDY4LCA1LCAyMjEsIDE3MiwgNjgsIDE2LCAyMzIsIDE1MywgNjgsIDE2LCAyNDksIDIxMywgCisgICAgNjgsIDE2LCAyNTQsIDIyMCwgNjgsIDE2LCAyNDMsIDQ4LCA2OCwgMSwgMjIwLCAxMDIsIDY4LCAxLCAyMTgsIDIyMywgNjgsIAorICAgIDEsIDE0OSwgMTUzLCA2OCwgMSwgMTQ5LCAyMjIsIDE4MCwgNjgsIDEsIDE0OSwgMTU2LCA2OCwgMSwgMTQ5LCAyMzIsIDE4NSwgCisgICAgNjgsIDI1LCA1LCAxNDksIDE1MywgNjgsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA2OCwgMjUsIDUsIDE0OSwgMTU2LCA2OCwgCisgICAgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDY4LCAxLCAyMzAsIDE1MSwgMjI5LCA3NywgNjgsIDEsIDIzMCwgMTUxLCAyMzUsIAorICAgIDExNCwgNjgsIDEsIDIzMCwgMTUxLCAyNTIsIDExMSwgNjgsIDEsIDIzMCwgMTUxLCAyNTIsIDEwNiwgNjgsIDExNiwgNSwgCisgICAgMjMwLCAxNTEsIDE0NywgMTk3LCA2OCwgMTE2LCA1LCAyMzAsIDE1MSwgMTQ3LCAxODQsIDY4LCAxMTYsIDUsIDIzMCwgMTUxLCAKKyAgICAxNDcsIDIzMywgMTM1LCA2OCwgMSwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyMjAsIDEwMiwgNjgsIDI1LCA1LCAyMjAsIDEwOCwgCisgICAgMjM0LCAyMTMsIDI0NSwgNTUsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyNDEsIDI0NywgNjgsIDEzOCwgCisgICAgMTY0LCAyMjAsIDEwOCwgMjM0LCAyMTMsIDIzNCwgMTgzLCAyMjUsIDEyMSwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMDgsIAorICAgIDIzNCwgMjEzLCAyMTYsIDIwOCwgNjgsIDEsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMjQsIDExNCwgNjgsIDI1LCAKKyAgICA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjQ1LCA1NSwgNjgsIDI1LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIAorICAgIDIxMywgMjE0LCAyMTQsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyOSwgNjgsIDUsIDIxMiwgNywgCisgICAgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjcsIAorICAgIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyNiwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgCisgICAgMjEzLCAyMTYsIDI1LCA2OCwgMSwgMjQ1LCAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgMjI4LCAxMTAsIDY4LCAxLCAyNDUsIAorICAgIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTAsIDE3NiwgNjgsIDEsIDI0NSwgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIAorICAgIDI0MiwgMjE3LCA2OCwgMjUsIDUsIDI0MywgNTksIDIzNCwgMjEzLCA3MywgNjgsIDI1LCA1LCAyMzQsIDE4OCwgMjI2LCAKKyAgICAyMzQsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDcwLCA2OCwgMjUsIDUsIDIzNCwgMTg4LCAyNDUsIDIwOSwgNjgsIDEsIDIyMCwgCisgICAgODYsIDE3NiwgNjgsIDEsIDIyMCwgODYsIDIzNCwgMTMyLCA2OCwgMSwgMjIwLCA4NiwgMjQzLCAxMzUsIDY4LCAxLCAyMjAsIAorICAgIDg2LCAyNTEsIDMzLCA2OCwgMSwgMjIwLCA4NiwgMjEwLCAxMTYsIDY4LCAxLCAyMjAsIDg2LCAyMjcsIDE2NSwgNjgsIDEsIAorICAgIDIyMCwgODYsIDI0OCwgMjIxLCA2OCwgMSwgMjIwLCA4NiwgMTk3LCA2OCwgMSwgMjIwLCA4NiwgMjI1LCAxNDcsIDY4LCAxLCAKKyAgICAyMjAsIDg2LCAyNDQsIDE5NiwgNjgsIDEsIDIyMCwgODYsIDI1MiwgMTkxLCA2OCwgMSwgMjIwLCA4NiwgMjE2LCAyMDgsIAorICAgIDY4LCAxLCAyMjAsIDg2LCAxNjIsIDY4LCAxMTYsIDUsIDIyMCwgODYsIDE0NywgMjEyLCA2NSwgNjgsIDI1LCA1LCAyMjAsIAorICAgIDg2LCAyNTUsIDczLCA2OCwgMjUsIDUsIDIyMCwgODYsIDc1LCA2OCwgMjUsIDUsIDIyMCwgODYsIDE2MCwgNDgsIDY4LCAyNSwgCisgICAgNSwgMjIwLCA4NiwgNDAsIDIxMSwgMTE3LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyOCwgNjgsIDUsIDIyMCwgODYsIDIxNiwgCisgICAgMjcsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIDI1LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyNCwgNjgsIDUsIDIyMCwgODYsIAorICAgIDI0OSwgMTUyLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4NiwgMjQ5LCAxNTIsIDIxNiwgMjcsIDY4LCA1LCAyMjAsIDg2LCAKKyAgICAyNDksIDE1MiwgMjQ1LCAxNTMsIDIxNiwgMzAsIDY4LCAxLCAyMjIsIDEyOCwgMjI2LCA2MywgMjQ0LCAxOTYsIDY4LCA1LCAKKyAgICAyMjIsIDEyOCwgMjI2LCA2MywgMjE2LCAyNSwgNjgsIDIyMCwgODYsIDIxLCAyMTAsIDg2LCA2OCwgMjIwLCA4NiwgMjEsIAorICAgIDExMCwgNjgsIDIyMCwgODYsIDIxLCAxMDUsIDY4LCAyMjAsIDg2LCAyMSwgMTU4LCA2OCwgMjIwLCA4NiwgMjEsIDE2MSwgCisgICAgNjgsIDIyMCwgODYsIDIxLCAxODksIDY4LCAyMjAsIDg2LCAyMSwgMTk0LCA2OCwgMjIwLCA4NiwgMjEsIDE5OCwgNjgsIAorICAgIDIyMCwgODYsIDIxLCAxOTUsIDY4LCAyMjAsIDg2LCAyMSwgMjAwLCA2OCwgNSwgMjM0LCAxMjYsIDIxNiwgMjksIDY4LCA1LCAKKyAgICAyMzQsIDEyNiwgMjE2LCAyNywgNjgsIDI1LCA1LCAyNTQsIDE5MCwgNjEsIDY4LCAyNSwgNSwgMjU0LCAxOTAsIDI1NCwgCisgICAgMjAxLCA2OCwgMTYsIDIyMCwgODYsIDExMCwgNjgsIDE2LCAyMjAsIDg2LCAyNDUsIDMwLCA5OCwgNiwgMSwgMjU0LCAxMjMsIAorICAgIDk4LCA2LCAxLCAyNTIsIDE1MiwgOTgsIDYsIDEsIDI0MywgMTA2LCA5OCwgNiwgMSwgMjQ3LCAxMjgsIDk4LCA2LCAxLCAKKyAgICAyNDUsIDE1MCwgOTgsIDYsIDEsIDIxMywgMTYwLCA5OCwgNiwgMSwgMjEwLCA4OSwgOTgsIDYsIDEsIDIxNywgNjAsIDk4LCAKKyAgICA2LCAxLCAyMzUsIDI1NSwgOTgsIDYsIDEsIDIzNCwgMjM0LCA5OCwgNiwgMSwgMjMzLCA4MSwgOTgsIDYsIDEsIDIzMSwgCisgICAgMTg1LCA5OCwgNiwgMSwgMjI5LCAxOTUsIDk4LCA2LCAxLCAyMjYsIDE5NiwgOTgsIDYsIDEsIDIyNiwgMTcsIDk4LCA2LCAxLCAKKyAgICAyMTAsIDc4LCA5OCwgNiwgMSwgMjIzLCAxNzEsIDk4LCA2LCAxLCAyMjEsIDI0MywgOTgsIDYsIDEsIDIxNywgNTAsIDk4LCAKKyAgICA2LCAxLCAyMTQsIDE5MCwgOTgsIDYsIDEsIDIyNSwgMTQwLCA5OCwgNiwgMSwgMjM0LCAxMjEsIDk4LCA2LCAxLCAyNDIsIAorICAgIDI0MSwgOTgsIDYsIDEsIDIyNCwgNzMsIDk4LCA2LCAxLCAyMjAsIDIwLCA5OCwgNiwgMSwgMjUwLCA5NywgOTgsIDYsIDEsIAorICAgIDI1MSwgNywgOTgsIDYsIDEsIDIzNSwgMTAwLCA5OCwgNiwgMSwgMjUwLCA0MCwgOTgsIDYsIDEsIDI1MCwgMTQzLCA5OCwgNiwgCisgICAgMSwgMjExLCAxNjMsIDk4LCA2LCAxLCAyMzUsIDExMSwgOTgsIDYsIDEsIDI0MiwgNDMsIDk4LCA2LCAxLCAyNDEsIDIzOCwgCisgICAgOTgsIDYsIDEsIDI0MSwgMTc1LCA5OCwgNiwgMSwgMjEyLCAyMiwgOTgsIDYsIDEsIDI0MiwgNCwgOTgsIDYsIDEsIDI0MSwgCisgICAgNjUsIDk4LCA2LCAxLCAyMTAsIDI0NiwgOTgsIDYsIDEsIDI1NCwgMjMyLCA5OCwgMSwgMjU0LCAxMjMsIDk4LCAxLCAyNTIsIAorICAgIDE1MiwgOTgsIDEsIDI0MywgMTA2LCA5OCwgMSwgMjQ3LCAxMjgsIDk4LCAxLCAyNDUsIDE1MCwgOTgsIDEsIDIxMywgMTYwLCAKKyAgICA5OCwgMSwgMjEwLCA4OSwgOTgsIDEsIDIxNywgNjAsIDk4LCAxLCAyMzUsIDI1NSwgOTgsIDEsIDIzNCwgMjM0LCA5OCwgMSwgCisgICAgMjMzLCA4MSwgOTgsIDEsIDIzMSwgMTg1LCA5OCwgMSwgMjI5LCAxOTUsIDk4LCAxLCAyMjYsIDE5NiwgOTgsIDEsIDIyNiwgCisgICAgMTcsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzEsIDk4LCAxLCAyMjEsIDI0MywgOTgsIDEsIDIxNywgNTAsIDk4LCAKKyAgICAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQwLCA5OCwgMSwgMjM0LCAxMjEsIDk4LCAxLCAyNDIsIDI0MSwgOTgsIDEsIAorICAgIDIyNCwgNzMsIDk4LCAxLCAyMjAsIDIwLCA5OCwgMSwgMjUwLCA5NywgOTgsIDEsIDI1MSwgNywgOTgsIDEsIDIzNSwgMTAwLCAKKyAgICA5OCwgMSwgMjUwLCA0MCwgOTgsIDEsIDI1MCwgMTQzLCA5OCwgMSwgMjExLCAxNjMsIDk4LCAxLCAyMzUsIDExMSwgOTgsIDEsIAorICAgIDI0MiwgNDMsIDk4LCAxLCAyNDEsIDIzOCwgOTgsIDEsIDI0MSwgMTc1LCA5OCwgMSwgMjEyLCAyMiwgOTgsIDEsIDI0MiwgNCwgCisgICAgOTgsIDEsIDI0MSwgNjUsIDk4LCAxLCAyNDQsIDEyMSwgOTgsIDEsIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNjUsIDk4LCAxLCAKKyAgICAyMTUsIDk0LCAyNDMsIDEwNiwgOTgsIDEsIDI1NCwgMTk2LCA5OCwgMjI2LCAxNSwgMjIwLCAxMzcsIDU4LCAxLCA5OCwgCisgICAgMjI5LCAxOTUsIDk4LCAxLCAyNTQsIDIzMiwgOTgsIDEsIDI0MiwgMywgNTAsIDk4LCAxLCAyMzMsIDEyNywgNTAsIDI0LCAKKyAgICAxMDAsIDIzNCwgNTgsIDI0LCAxMDAsIDIxOCwgMjE1LCAyNCwgMTAwLCAyMjgsIDIyNiwgMjQsIDEwMCwgMjE2LCAxMDEsIAorICAgIDI0LCAxMDAsIDIxOCwgMjA0LCAyNCwgMTAwLCAyMjMsIDI2LCAyNCwgMTAwLCAyMzAsIDIxNywgMjQsIDEwMCwgMjI1LCA5NSwgCisgICAgMjQsIDEwMCwgMjE4LCAyMTIsIDI0LCAxMDAsIDIxOSwgMTQ4LCAyNCwgMTAwLCAyMTgsIDIwOSwgMjQsIDEwMCwgMjM2LCAKKyAgICA1NiwgMjQsIDEwMCwgMjUwLCA0NiwgMjQsIDEwMCwgMjE4LCAyMTksIDI0LCAxMDAsIDI1MCwgMTA2LCAyNCwgMTAwLCAyMzQsIAorICAgIDExMCwgMjQsIDEwMCwgMjE2LCAxNzMsIDI0LCAxMDAsIDIyNSwgMTMxLCAyNCwgMTAwLCAyNDEsIDE3MiwgMjQsIDEwMCwgCisgICAgMjI4LCAyMjIsIDI0LCAxMDAsIDIxOCwgMjEzLCAyNCwgMTAwLCAyMjgsIDIxNiwgMjQsIDEwMCwgMjI4LCAyMjAsIDI0LCAKKyAgICAxMDAsIDIxNiwgOTgsIDI0LCAxMDAsIDIyMywgMTQsIDI0LCAxMDAsIDIxOCwgMjExLCAyNCwgMTAwLCAyMjMsIDI0LCAyNCwgCisgICAgMTAwLCAyMzQsIDIxOCwgMjQsIDEwMCwgMjMwLCAyMTAsIDI0LCAxMDAsIDIzNCwgMjIxLCAyNCwgMTAwLCAyMjUsIDkwLCAKKyAgICAyNCwgMTAwLCAyMjUsIDg4LCAyNCwgMTAwLCAyMjUsIDc2LCAyNCwgMTAwLCAyMjUsIDg0LCAyNCwgMTAwLCAyMjUsIDgyLCAKKyAgICAyNCwgMTAwLCAyMjUsIDc5LCAyNCwgMTAwLCAyMjUsIDgxLCAyNCwgMTAwLCAyMjUsIDc4LCAyNCwgMTAwLCAyMjUsIDgzLCAKKyAgICAyNCwgMTAwLCAyMjUsIDkzLCAyNCwgMTAwLCAyMjUsIDk0LCAyNCwgMTAwLCAyMjUsIDc3LCAyNCwgMTAwLCAyMjUsIDg3LCAKKyAgICAyNCwgMTAwLCAyMzQsIDIxOSwgMjQsIDEwMCwgMjM0LCAyMTcsIDI0LCAxMDAsIDIxOSwgMTQxLCAyNCwgMTAwLCAyMTksIAorICAgIDEzOSwgMjQsIDEwMCwgMjE5LCAxMzEsIDI0LCAxMDAsIDIxOSwgMTM0LCAyNCwgMTAwLCAyMTksIDE0MCwgMjQsIDEwMCwgCisgICAgMjE5LCAxMzYsIDI0LCAxMDAsIDIxOSwgMTM1LCAyNCwgMTAwLCAyMTksIDEzMywgMjQsIDEwMCwgMjE5LCAxNDQsIDI0LCAKKyAgICAxMDAsIDIxOSwgMTQ2LCAyNCwgMTAwLCAyMTksIDE0NywgMjQsIDEwMCwgMjE5LCAxNDIsIDI0LCAxMDAsIDIxOSwgMTMyLCAKKyAgICAyNCwgMTAwLCAyMTksIDEzNywgMjQsIDEwMCwgMjE5LCAxNDUsIDI0LCAxMDAsIDI1MCwgOTAsIDI0LCAxMDAsIDI1MCwgODgsIAorICAgIDI0LCAxMDAsIDI1MCwgMTY4LCAyNCwgMTAwLCAyNTAsIDE2NiwgMjQsIDEwMCwgMjI2LCAzMiwgMjQsIDEwMCwgMjM2LCA1MSwgCisgICAgMjQsIDEwMCwgMjM2LCA0MiwgMjQsIDEwMCwgMjM2LCA1MCwgMjQsIDEwMCwgMjM2LCA0NywgMjQsIDEwMCwgMjM2LCA0NSwgCisgICAgMjQsIDEwMCwgMjM2LCA0OSwgMjQsIDEwMCwgMjE4LCAyMTYsIDI0LCAxMDAsIDIzNiwgNTQsIDI0LCAxMDAsIDIzNiwgNTUsIAorICAgIDI0LCAxMDAsIDIzNiwgNDMsIDI0LCAxMDAsIDIzNiwgNDgsIDI0LCAxMDAsIDIxMSwgMjYsIDI0LCAxMDAsIDI1MCwgNDUsIAorICAgIDI0LCAxMDAsIDI1MCwgOTEsIDI0LCAxMDAsIDI1MCwgODksIDI0LCAxMDAsIDI1MCwgMTY5LCAyNCwgMTAwLCAyNTAsIDE2NywgCisgICAgMjQsIDEwMCwgMjUwLCAxMDQsIDI0LCAxMDAsIDI1MCwgMTA1LCAyNCwgMTAwLCAyNTAsIDkyLCAyNCwgMTAwLCAyNTAsIAorICAgIDE3MCwgMjQsIDEwMCwgMjI1LCAxMjksIDI0LCAxMDAsIDIzNCwgMjIwLCAyNCwgMTAwLCAyMTgsIDIxNywgMjQsIDEwMCwgCisgICAgMjExLCAzMiwgMjQsIDEwMCwgMjM0LCA0OSwgMjQsIDEwMCwgMjI4LCAyMTgsIDI0LCAxMDAsIDIyOCwgMjI0LCAyNCwgMTAwLCAKKyAgICAyMjgsIDIyMywgMjQsIDEwMCwgMjE2LCA5NSwgMjQsIDEwMCwgMjQ0LCAxMDMsIDI0LCAxNDMsIDI0NCwgMTAzLCAyNCwgCisgICAgMTQzLCA2MSwgMjQsIDE0MywgMjU0LCAyNDMsIDI0LCAxNDMsIDE5MSwgMjQsIDE0MywgMjExLCA5MiwgMjQsIDE0MywgMjQ1LCAKKyAgICAxMTcsIDI0LCAxNDMsIDc1LCAyNCwgMTQzLCAyMTEsIDM2LCAyNCwgMTQzLCAyMTEsIDQ3LCAyNCwgMTQzLCA3NiwgMjQsIAorICAgIDE0MywgMjEyLCA2NSwgMjQsIDE0MywgMjEyLCA2MiwgMjQsIDE0MywgMjI2LCAyMzQsIDI0LCAxNDMsIDIxMCwgMjQ0LCAyNCwgCisgICAgMTQzLCA3MCwgMjQsIDE0MywgMjEyLCAxMSwgMjQsIDE0MywgMjEyLCAyMiwgMjQsIDE0MywgMjExLCAyNTAsIDI0LCAxNDMsIAorICAgIDIxMCwgMjEyLCAyNCwgMTQzLCAyNDUsIDU1LCAyNCwgMTQzLCAyMTEsIDgsIDI0LCAxNDMsIDczLCAyNCwgMTQzLCAyNTUsIAorICAgIDE1NywgMjQsIDE0MywgMjU1LCAxNTYsIDI0LCAxNDMsIDIxMSwgMTA2LCAyNCwgMTQzLCAyMTEsIDEwNCwgMjQsIDE0MywgCisgICAgMjQ1LCAxMTUsIDI0LCAxNDMsIDI0NSwgMTE0LCAyNCwgMTQzLCAyNDUsIDExNiwgMjQsIDE0MywgMjExLCAzNSwgMjQsIAorICAgIDE0MywgMjExLCAzNCwgMjQsIDE0MywgMjI3LCA4NCwgMjQsIDE0MywgMjI3LCA4NSwgMjQsIDE0MywgMjI3LCA3OCwgMjQsIAorICAgIDE0MywgMjI3LCA4MywgMjQsIDE0MywgMjI3LCA4MSwgMjQsIDE0MywgMjEwLCAyMzgsIDI0LCAxNDMsIDIxMCwgMjM3LCAyNCwgCisgICAgMTQzLCAyMTAsIDIzNiwgMjQsIDE0MywgMjEwLCAyMzksIDI0LCAxNDMsIDIxMCwgMjQwLCAyNCwgMTQzLCAyMTUsIDMwLCAKKyAgICAyNCwgMTQzLCAyMTUsIDI5LCAyNCwgMTQzLCAyMTUsIDI3LCAyNCwgMTQzLCAyMTUsIDI0LCAyNCwgMTQzLCAyMTUsIDI1LCAKKyAgICAyNCwgMTQzLCAyMTAsIDIxMSwgMjQsIDE0MywgMjEwLCAyMDgsIDI0LCAxNDMsIDIxMCwgMjA5LCAyNCwgMTQzLCAyMTAsIAorICAgIDIwMywgMjQsIDE0MywgMjEwLCAyMDQsIDI0LCAxNDMsIDIxMCwgMjA1LCAyNCwgMTQzLCAyMTAsIDIwNywgMjQsIDE0MywgCisgICAgMjQ1LCA0OSwgMjQsIDE0MywgMjQ1LCA1MSwgMjQsIDE0MywgMjExLCA3LCAyNCwgMTQzLCAyNDAsIDE1MywgMjQsIDE0MywgCisgICAgMjQwLCAxNDUsIDI0LCAxNDMsIDI0MCwgMTQ4LCAyNCwgMTQzLCAyNDAsIDE0NiwgMjQsIDE0MywgMjQwLCAxNTAsIDI0LCAKKyAgICAxNDMsIDI0MCwgMTUyLCAyNCwgMTQzLCAyNTQsIDM0LCAyNCwgMTQzLCAyNTQsIDMxLCAyNCwgMTQzLCAyNTQsIDI5LCAyNCwgCisgICAgMTQzLCAyNTQsIDMwLCAyNCwgMTQzLCAyMTgsIDIyMCwgMjQsIDE0MywgMjU1LCAxNTgsIDI0LCAxNDMsIDIxMSwgMTA1LCAKKyAgICAyNCwgMTQzLCAyMTEsIDMzLCAyNCwgMTQzLCAyMjcsIDgwLCAyNCwgMTQzLCAyMjcsIDc5LCAyNCwgOTAsIDIzNCwgNTgsIAorICAgIDI0LCA5MCwgMjE4LCAyMTUsIDI0LCA5MCwgMjM0LCA1MSwgMjQsIDkwLCAyMjgsIDIyNiwgMjQsIDkwLCAyMjgsIDIyNCwgCisgICAgMjQsIDkwLCAyMjgsIDIyMywgMjQsIDkwLCAyMTYsIDEwMSwgMjQsIDkwLCAyMjMsIDI2LCAyNCwgOTAsIDIyMywgMjEsIDI0LCAKKyAgICA5MCwgMjIzLCAxOCwgMjQsIDkwLCAyMjMsIDExLCAyNCwgOTAsIDIyMywgNiwgMjQsIDkwLCAyMjMsIDEsIDI0LCA5MCwgCisgICAgMjIzLCAxMiwgMjQsIDkwLCAyMjMsIDI0LCAyNCwgOTAsIDIzMCwgMjE3LCAyNCwgOTAsIDIyNSwgOTUsIDI0LCA5MCwgMjI1LCAKKyAgICA4NCwgMjQsIDkwLCAyMTksIDE0OCwgMjQsIDkwLCAyMTgsIDIwOSwgMjQsIDkwLCAyMzYsIDU2LCAyNCwgOTAsIDI1MCwgNDYsIAorICAgIDI0LCA5MCwgMjUwLCAxMDYsIDI0LCA5MCwgMjM0LCAxMTAsIDI0LCA5MCwgMjE2LCAxNzMsIDI0LCA5MCwgMjI1LCAxMzEsIAorICAgIDI0LCA5MCwgMjQxLCAxNzIsIDI0LCA5MCwgMjM0LCA1MiwgMjQsIDkwLCAyMzQsIDUwLCAyNCwgOTAsIDIyOCwgMjIyLCAyNCwgCisgICAgOTAsIDIyOCwgMjE2LCAyNCwgOTAsIDIyOCwgMjE4LCAyNCwgOTAsIDIyOCwgMjIxLCAyNCwgOTAsIDIyOCwgMjE3LCAyNCwgCisgICAgOTAsIDIxNiwgOTgsIDI0LCA5MCwgMjE2LCA5NSwgMjQsIDkwLCAyMjMsIDE5LCAyNCwgOTAsIDIyMywgMTQsIDI0LCA5MCwgCisgICAgMjIzLCAwLCAyNCwgOTAsIDIyMiwgMjU1LCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgOTAsIDIyMywgMTYsIDI0LCA5MCwgMjIzLCAKKyAgICAxNSwgMjQsIDkwLCAyMjMsIDgsIDI0LCA5MCwgMjIzLCAxMCwgMjQsIDkwLCAyMjMsIDIzLCAyNCwgOTAsIDIyMywgMywgMjQsIAorICAgIDkwLCAyMjMsIDEzLCAyNCwgOTAsIDIyMywgMjIsIDI0LCA5MCwgMjIyLCAyNTQsIDI0LCA5MCwgMjMwLCAyMTMsIDI0LCA5MCwgCisgICAgMjMwLCAyMDgsIDI0LCA5MCwgMjMwLCAyMTAsIDI0LCA5MCwgMjMwLCAyMDcsIDI0LCA5MCwgMjMwLCAyMDUsIDI0LCA5MCwgCisgICAgMjMwLCAyMTEsIDI0LCA5MCwgMjMwLCAyMTYsIDI0LCA5MCwgMjMwLCAyMTQsIDI0LCA5MCwgMjM0LCAyMjEsIDI0LCA5MCwgCisgICAgMjI1LCA4NiwgMjQsIDkwLCAyMjUsIDg3LCAyNCwgOTAsIDIyNSwgOTIsIDI0LCA5MCwgMjM0LCAyMTksIDI0LCA5MCwgMjE5LCAKKyAgICAxNDEsIDI0LCA5MCwgMjE5LCAxMzEsIDI0LCA5MCwgMjE5LCAxMzQsIDI0LCA5MCwgMjE5LCAxMzYsIDI0LCA5MCwgMjI2LCAKKyAgICAzMiwgMjQsIDkwLCAyMzYsIDUxLCAyNCwgOTAsIDIzNiwgNDQsIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjM2LCA1MiwgCisgICAgMjQsIDkwLCAyMTEsIDI2LCAyNCwgOTAsIDIxMSwgMjIsIDI0LCA5MCwgMjExLCAyMywgMjQsIDkwLCAyMjUsIDEyOSwgMjQsIAorICAgIDkwLCAyMzQsIDIyMCwgMjQsIDkwLCAyNDEsIDE3MCwgMjQsIDkwLCAyNDEsIDE2OCwgMjQsIDkwLCAyNDEsIDE3MSwgMjQsIAorICAgIDkwLCAyNDEsIDE2OSwgMjQsIDkwLCAyMTEsIDMyLCAyNCwgOTAsIDIzNCwgNTQsIDI0LCA5MCwgMjM0LCA1MywgMjQsIDkwLCAKKyAgICAyMzQsIDU3LCAyNCwgOTAsIDIzNCwgNTUsIDI0LCA5MCwgMjM0LCA1NiwgMjQsIDkwLCAyMTgsIDIxMywgMjksIDMsIDE2MiwgCisgICAgMjksIDMsIDI0MCwgMjIyLCAyOSwgMywgMjQxLCAxODAsIDI5LCAzLCAyNDIsIDQ2LCAyOSwgMywgMjQxLCAyMjAsIDI5LCAzLCAKKyAgICAyNDEsIDIzOCwgMjksIDMsIDI0MSwgNjgsIDI5LCAzLCAyNDEsIDY3LCAyOSwgMywgMjMzLCAxMzUsIDI5LCAzLCAyMzIsIAorICAgIDk4LCAyOSwgMywgMjMyLCAyNDEsIDI5LCAzLCAyMzMsIDEzNCwgMjksIDMsIDIzMywgNTAsIDI5LCAzLCAyMzMsIDU4LCAyOSwgCisgICAgMywgMjMyLCAxNTYsIDI5LCAzLCAyMzIsIDcwLCAyOSwgMywgMjQxLCAxODksIDI5LCAzLCAyNDEsIDE4MywgMjksIDMsIAorICAgIDI0MSwgMTg1LCAyOSwgMywgMjQxLCAxODgsIDI5LCAzLCAyNDEsIDE4NiwgMjksIDMsIDI0MSwgMTg3LCAyOSwgMywgMjQxLCAKKyAgICAxODQsIDI5LCAzLCAyNDEsIDE4MiwgMjksIDMsIDE4NCwgMjksIDMsIDIzMCwgMTAyLCAyOSwgMywgMjMwLCAyMzAsIDI5LCAKKyAgICAzLCAyMzEsIDIzNywgMjksIDMsIDIzMSwgODAsIDI5LCAzLCAyMzEsIDkxLCAyOSwgMywgMjMwLCAxNjEsIDI5LCAzLCAyMzAsIAorICAgIDQyLCAyOSwgMywgMjE3LCAxNjMsIDI5LCAzLCAyMTcsIDE1NywgMjksIDMsIDIxNywgMTU5LCAyOSwgMywgMjE3LCAxNjIsIAorICAgIDI5LCAzLCAyMTcsIDE2MCwgMjksIDMsIDIxNywgMTYxLCAyOSwgMywgMjE3LCAxNTgsIDI5LCAzLCAyMTcsIDE1NiwgMjksIAorICAgIDMsIDIwNSwgMjksIDMsIDIyMiwgMTQwLCAyOSwgMywgMjIzLCAzNSwgMjksIDMsIDIyMywgMTg0LCAyOSwgMywgMjIzLCAKKyAgICAxMDgsIDI5LCAzLCAyMjMsIDEyOCwgMjksIDMsIDIyMiwgMjExLCAyOSwgMywgMjIyLCAxMDksIDI5LCAzLCAyMDYsIDI5LCAKKyAgICAzLCAyMTgsIDgzLCAyOSwgMywgMjE5LCAxOTEsIDI5LCAzLCAyMjIsIDMxLCAyOSwgMywgMjIxLCAxNzAsIDI5LCAzLCAyMjEsIAorICAgIDE4MSwgMjksIDMsIDIxOSwgNTgsIDI5LCAzLCAyMTcsIDI1MywgMjksIDMsIDIyMCwgMTAyLCAyOSwgMywgMjE5LCAyMjUsIAorICAgIDI5LCAzLCAyMjAsIDMyLCAyOSwgMywgMjIwLCA5OCwgMjksIDMsIDIyMCwgNjEsIDI5LCAzLCAyMjAsIDYzLCAyOSwgMywgCisgICAgMjIwLCA3LCAyOSwgMywgMjE5LCAyMDgsIDI5LCAzLCAyMjQsIDg4LCAyOSwgMywgMjI0LCAzMCwgMjksIDMsIDIyNCwgNTMsIAorICAgIDI5LCAzLCAyMjQsIDg3LCAyOSwgMywgMjI0LCA2OCwgMjksIDMsIDIyNCwgNjksIDI5LCAzLCAyMjQsIDQyLCAyOSwgMywgCisgICAgMjI0LCA0MSwgMjksIDMsIDIyMywgMjQyLCAyOSwgMywgMjIzLCAyMzgsIDI5LCAzLCAyMjMsIDI0MSwgMjksIDMsIDIyMywgCisgICAgMjM5LCAyOSwgMywgMjIzLCAyNDAsIDI5LCAzLCAyMjQsIDY1LCAyOSwgMywgMjI0LCA1OSwgMjksIDMsIDIyNCwgNjEsIDI5LCAKKyAgICAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2MiwgMjksIDMsIDIyNCwgNjMsIDI5LCAzLCAyMjQsIDYwLCAyOSwgMywgMjI0LCAKKyAgICA1OCwgMjksIDMsIDIyNCwgNTQsIDI5LCAzLCAyMjQsIDU3LCAyOSwgMywgMjI0LCA1NSwgMjksIDMsIDIyNCwgNTYsIDI5LCAKKyAgICAzLCAyNTIsIDE5MSwgMjksIDMsIDI1MSwgMTI1LCAyOSwgMywgMjUyLCA2LCAyOSwgMywgMjUyLCAxODksIDI5LCAzLCAyNTIsIAorICAgIDY2LCAyOSwgMywgMjUyLCA3NSwgMjksIDMsIDI1MSwgMjA1LCAyOSwgMywgMjUxLCA4MywgMjksIDMsIDIxNCwgMjcsIDI5LCAKKyAgICAzLCAyMTIsIDExNiwgMjksIDMsIDIxMywgMTc2LCAyOSwgMywgMjE0LCAyNiwgMjksIDMsIDIxMywgMjUwLCAyOSwgMywgCisgICAgMjEzLCAyNTUsIDI5LCAzLCAyMTMsIDEzOCwgMjksIDMsIDIxMiwgMTA3LCAyOSwgMywgMjE3LCAxMDUsIDI5LCAzLCAyMTUsIAorICAgIDExOCwgMjksIDMsIDIxNiwgMTE3LCAyOSwgMywgMjE3LCAxMDEsIDI5LCAzLCAyMTcsIDExLCAyOSwgMywgMjE3LCAyMiwgCisgICAgMjksIDMsIDExMSwgMjksIDMsIDIxNSwgODAsIDI5LCAzLCAyNTEsIDMzLCAyOSwgMywgMjQ5LCAxMTIsIDI5LCAzLCAyNTAsIAorICAgIDUxLCAyOSwgMywgMjUxLCAzMiwgMjksIDMsIDI1MCwgMTgyLCAyOSwgMywgMjUwLCAxOTAsIDI5LCAzLCAyNDksIDIzOCwgCisgICAgMjksIDMsIDI0OSwgODEsIDI5LCAzLCAyMTEsIDE2NSwgMjksIDMsIDIxMSwgMTQxLCAyOSwgMywgMjExLCAxNTcsIDI5LCAzLCAKKyAgICAyMTEsIDE2NCwgMjksIDMsIDIxMSwgMTYxLCAyOSwgMywgMjExLCAxNjIsIDI5LCAzLCAyMTEsIDE0OCwgMjksIDMsIDIxMSwgCisgICAgMTQ3LCAyOSwgMywgMjExLCAxMzYsIDI5LCAzLCAyMTEsIDEzMiwgMjksIDMsIDIxMSwgMTM1LCAyOSwgMywgMjExLCAxMzMsIAorICAgIDI5LCAzLCAyMTEsIDEzNCwgMjksIDMsIDE5NywgMjksIDMsIDIyNywgMjM3LCAyOSwgMywgMjI4LCAyMzMsIDI5LCAzLCAKKyAgICAyMjksIDIyNSwgMjksIDMsIDIyOSwgMTAzLCAyOSwgMywgMjI5LCAxMDcsIDI5LCAzLCAyMjgsIDc0LCAyOSwgMywgMjI3LCAKKyAgICAxNzQsIDI5LCAzLCAyMjcsIDE2NSwgMjksIDMsIDIyNywgMTI4LCAyOSwgMywgMjI3LCAxNDgsIDI5LCAzLCAyMjcsIDE2NCwgCisgICAgMjksIDMsIDIyNywgMTU1LCAyOSwgMywgMjI3LCAxNTYsIDI5LCAzLCAyMjcsIDEzNCwgMjksIDMsIDIyNywgMTE5LCAyOSwgCisgICAgMywgMjQyLCAxODAsIDYxLCAyOSwgMywgMjQyLCAxODAsIDcwLCAyOSwgMywgMjQyLCAxODAsIDczLCAyOSwgMywgMjQyLCAKKyAgICAxODAsIDI1NSwgNzMsIDI5LCAzLCAyNDIsIDE4MCwgMjQ1LCAyMDksIDI5LCAzLCAyNDIsIDE4MCwgNzUsIDI5LCAzLCAyNDIsIAorICAgIDE4MCwgNzYsIDI5LCAzLCAyNDIsIDE4MCwgMjEyLCA2NSwgMjksIDMsIDE3NiwgMjksIDMsIDIzMywgMjE3LCAyOSwgMywgCisgICAgMjM0LCA5MiwgMjksIDMsIDIzNSwgMTAsIDI5LCAzLCAyMzQsIDE4MSwgMjksIDMsIDIzNCwgMTgyLCAyOSwgMywgMjM0LCAKKyAgICAyOCwgMjksIDMsIDIzNCwgMjcsIDI5LCAzLCAyMzMsIDE4MiwgMjksIDMsIDIzMywgMTc2LCAyOSwgMywgMjMzLCAxODEsIAorICAgIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTc4LCAyOSwgMywgMjMzLCAxNzEsIDI5LCAzLCAyMzMsIDE2NSwgMjksIAorICAgIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNzAsIDI5LCAzLCAyMzMsIDE2OCwgMjksIDMsIDIzMywgMTY5LCAyOSwgMywgCisgICAgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2NCwgMjksIDMsIDIzMywgMTYwLCAyOSwgMywgMjMzLCAxNjMsIDI5LCAzLCAyMzMsIAorICAgIDE2MSwgMjksIDMsIDIzMywgMTYyLCAyOSwgMywgMjEyLCA2NSwgMjksIDMsIDIxMSwgMTk1LCAyOSwgMywgMjExLCAyNTAsIAorICAgIDI5LCAzLCAyMTIsIDY0LCAyOSwgMywgMjEyLCAxNywgMjksIDMsIDIxMiwgMjIsIDI5LCAzLCAyMTEsIDIyNywgMjksIDMsIAorICAgIDIxMSwgMjI2LCAyOSwgMywgMjI1LCAxMzksIDYxLCAyOSwgMywgMjI1LCAxMzksIDcwLCAyOSwgMywgMjI1LCAxMzksIDczLCAKKyAgICAyOSwgMywgMjI1LCAxMzksIDI1NSwgNzMsIDI5LCAzLCAyMjUsIDEzOSwgMjQ1LCAyMDksIDI5LCAzLCAyMjUsIDEzOSwgNzUsIAorICAgIDI5LCAzLCAyMjUsIDEzOSwgNzYsIDI5LCAzLCAyMTAsIDExNiwgMjksIDMsIDIxMCwgMTMsIDI5LCAzLCAyMTAsIDQ0LCAyOSwgCisgICAgMywgMjEwLCAxMTUsIDI5LCAzLCAyMTAsIDkyLCAyOSwgMywgMjEwLCA5NCwgMjksIDMsIDIxMCwgMjMsIDI5LCAzLCAyMTAsIAorICAgIDAsIDI5LCAzLCAyMTAsIDgyLCAyOSwgMywgMjEwLCA2MiwgMjksIDMsIDIxMCwgNjksIDI5LCAzLCAyMTAsIDgxLCAyOSwgMywgCisgICAgMjEwLCA3MywgMjksIDMsIDIxMCwgNzQsIDI5LCAzLCAyMTAsIDY3LCAyOSwgMywgMjEwLCA1MywgMjksIDMsIDE5MSwgMjksIAorICAgIDMsIDIxMCwgMjEyLCAyOSwgMywgMjExLCA4LCAyOSwgMywgMjExLCAxMDMsIDI5LCAzLCAyMTEsIDQ0LCAyOSwgMywgMjExLCAKKyAgICA0NywgMjksIDMsIDIxMCwgMjQ0LCAyOSwgMywgMjEwLCAyMzUsIDI5LCAzLCAyNDgsIDIyMSwgMjksIDMsIDI0NiwgNzgsIAorICAgIDI5LCAzLCAyNDgsIDMsIDI5LCAzLCAyNDgsIDIyMCwgMjksIDMsIDI0OCwgNzcsIDI5LCAzLCAyNDgsIDkwLCAyOSwgMywgCisgICAgMjQ3LCAxNDUsIDI5LCAzLCAyNDYsIDQ3LCAyOSwgMywgMjQ4LCAxMzUsIDI5LCAzLCAyNDgsIDEwMCwgMjksIDMsIDI0OCwgCisgICAgMTEyLCAyOSwgMywgMjQ4LCAxMzQsIDI5LCAzLCAyNDgsIDEyMiwgMjksIDMsIDI0OCwgMTIzLCAyOSwgMywgMjQ4LCAxMDUsIAorICAgIDI5LCAzLCAyNDgsIDkxLCAyOSwgMywgMjM1LCAxNDEsIDI5LCAzLCAyMzUsIDUxLCAyOSwgMywgMjM1LCAxMDgsIDI5LCAzLCAKKyAgICAyMzUsIDE0MCwgMjksIDMsIDIzNSwgMTI0LCAyOSwgMywgMjM1LCAxMjYsIDI5LCAzLCAyMzUsIDY4LCAyOSwgMywgMjM1LCAKKyAgICAzMSwgMjksIDMsIDI0MywgMTM1LCAyOSwgMywgMjQyLCAxMTMsIDI5LCAzLCAyNDIsIDIxNCwgMjksIDMsIDI0MywgMTMyLCAKKyAgICAyOSwgMywgMjQzLCA1NSwgMjksIDMsIDI0MywgNjIsIDI5LCAzLCAyNDIsIDE3NCwgMjksIDMsIDI0MiwgMTczLCAyOSwgMywgCisgICAgMjQyLCA3OCwgMjksIDMsIDI0MiwgNzQsIDI5LCAzLCAyNDIsIDc3LCAyOSwgMywgMjQyLCA3NSwgMjksIDMsIDI0MiwgNzYsIAorICAgIDI5LCAzLCAyNDMsIDI5LCAyOSwgMywgMjQzLCA5LCAyOSwgMywgMjQzLCAxOSwgMjksIDMsIDI0MywgMjgsIDI5LCAzLCAKKyAgICAyNDMsIDIzLCAyOSwgMywgMjQzLCAyNCwgMjksIDMsIDI0MywgMTMsIDI5LCAzLCAyNDIsIDI1NCwgMjksIDMsIDIxNiwgCisgICAgMjA4LCAyOSwgMywgMjE2LCAxMzYsIDI5LCAzLCAyMTYsIDE3NSwgMjksIDMsIDIxNiwgMjA3LCAyOSwgMywgMjE2LCAxOTQsIAorICAgIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTU2LCAyOSwgMywgMjE2LCAxMjgsIDI5LCAzLCAyNTAsIDE1NywgMjksIAorICAgIDMsIDI1MCwgNjksIDI5LCAzLCAyNTAsIDExMCwgMjksIDMsIDI1MCwgMTU2LCAyOSwgMywgMjUwLCAxMjgsIDI5LCAzLCAKKyAgICAyNTAsIDEzMSwgMjksIDMsIDI1MCwgODYsIDI5LCAzLCAyNTAsIDU4LCAyOSwgMywgMjI1LCAxNDcsIDI5LCAzLCAyMjUsIAorICAgIDExNCwgMjksIDMsIDIyNSwgMTMzLCAyOSwgMywgMjI1LCAxNDYsIDI5LCAzLCAyMjUsIDEzNSwgMjksIDMsIDIyNSwgMTM2LCAKKyAgICAyOSwgMywgMjI1LCAxMjEsIDI5LCAzLCAyMjUsIDExMCwgMjksIDMsIDIxNSwgMTgzLCAyOSwgMywgMjE1LCAxNjMsIDI5LCAKKyAgICAzLCAyMTUsIDE2NywgMjksIDMsIDIxNSwgMTgyLCAyOSwgMywgMjE1LCAxNzcsIDI5LCAzLCAyMTUsIDE3OCwgMjksIDMsIAorICAgIDIxNSwgMTY2LCAyOSwgMywgMjE1LCAxNjEsIDI5LCAzLCAyMTUsIDM5LCAyOSwgMywgMjE1LCAzMSwgMjksIDMsIDIxNSwgCisgICAgMzUsIDI5LCAzLCAyMTUsIDM4LCAyOSwgMywgMjE1LCAzNiwgMjksIDMsIDIxNSwgMzcsIDI5LCAzLCAyMTUsIDMzLCAyOSwgCisgICAgMywgMjE1LCAzMiwgMjksIDMsIDI0NCwgMTk2LCAyOSwgMywgMjQzLCAyMzQsIDI5LCAzLCAyNDQsIDEyMSwgMjksIDMsIAorICAgIDI0NCwgMTk1LCAyOSwgMywgMjQ0LCAxNDcsIDI5LCAzLCAyNDQsIDE1NCwgMjksIDMsIDI0NCwgNDMsIDI5LCAzLCAyNDMsIAorICAgIDIxMywgMjksIDMsIDE5MCwgMjksIDMsIDIyNCwgMTUwLCAyOSwgMywgMjI1LCAxMDgsIDI5LCAzLCAyMjYsIDg5LCAyOSwgMywgCisgICAgMjI1LCAyMTEsIDI5LCAzLCAyMjUsIDIyMSwgMjksIDMsIDIyNSwgMTYsIDI5LCAzLCAyMjQsIDExNCwgMjksIDMsIDIyMiwgCisgICAgOTksIDI5LCAzLCAyMzAsIDMxLCAyOSwgMywgMjQzLCAyMDcsIDI5LCAzOCwgMjQzLCA1MywgMjIsIDI1LCAyMzMsIDIzLCAKKyAgICA3OCwgMjksIDM4LCAyNSwgMjMzLCAyMywgNzgsIDI5LCAzOCwgMjQzLCA1MywgNzgsIDI5LCAyMjEsIDE3MywgNzgsIDI5LCAKKyAgICAyMTEsIDIwOCwgMjksIDI0MywgMjI5LCAyMTgsIDEyOSwgMjksIDI0OSwgMjE5LCAyOSwgMjIwLCAxNTAsIDI5LCAyNDksIAorICAgIDIyNiwgMjksIDIyNCwgMTk5LCAyNDksIDIyNiwgMjksIDIyNCwgMTMsIDc4LCAyOSwgMjI2LCAxNSwgMjIwLCAxMzcsIDI5LCAKKyAgICAyMSwgMTEwLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgMTYxLCAyOSwgMjEsIDE4OSwgMjksIDIxLCAxOTQsIAorICAgIDI5LCAyMSwgMTk4LCAyOSwgMjEsIDE5NSwgMjksIDIxLCAyMDAsIDI5LCA1NCwgMjE2LCAyNDcsIDI5LCA1NCwgMjE1LCA3MywgCisgICAgMjksIDU0LCAyMTYsIDE2MiwgMjksIDU0LCAyNDQsIDE1LCAyOSwgNTQsIDI0NCwgMTE0LCAyOSwgNTQsIDIxOSwgMTExLCAKKyAgICAyOSwgNTQsIDIyMCwgMTE2LCAyOSwgNTQsIDI0NSwgMTg0LCAyOSwgNTQsIDIyOCwgMTk1LCAyOSwgNTQsIDI0MCwgMjEwLCAKKyAgICAyOSwgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjksIDMsIDIyMSwgMTc3LCAyMzAsIDQyLCAyOSwgMywgMjMwLCAzOCwgMjksIAorICAgIDMsIDIzMCwgMzksIDI5LCAzLCAyMzAsIDQwLCAyOSwgMywgMjIxLCAxNzcsIDI1MSwgODMsIDI5LCAzLCAyNTEsIDgwLCAyOSwgCisgICAgMywgMjUxLCA4MSwgMjksIDMsIDI1MSwgODIsIDI5LCAzLCAyMjEsIDE3NywgMjQzLCAyMTMsIDI5LCAzLCAyNDMsIDIwOSwgCisgICAgMjksIDMsIDI0MywgMjEwLCAyOSwgMywgMjQzLCAyMTEsIDI5LCAzLCAyMjEsIDE3NywgMjI0LCAxMTQsIDI5LCAzLCAyMjQsIAorICAgIDExMCwgMjksIDMsIDIyNCwgMTExLCAyOSwgMywgMjI0LCAxMTIsIDI5LCAyMTYsIDMxLCAxNjQsIDIxMCwgMjQ3LCAyOSwgCisgICAgMjE2LCAzMSwgMTY0LCAyNDgsIDQxLCAyOSwgMjE2LCAzMSwgMTY0LCAyMjIsIDIzOCwgMjksIDIxNiwgMzEsIDE2NCwgMjE5LCAKKyAgICAyNTEsIDIyMiwgMjM4LCAyOSwgMjE2LCAzMSwgMTY0LCAyNDcsIDIzNSwgMjksIDIxNiwgMzEsIDE2NCwgMjM0LCAxNjQsIAorICAgIDI5LCAyMTYsIDMxLCAxNjQsIDI1MCwgOTQsIDI5LCAyMTYsIDMxLCAxNjQsIDI0MSwgMTc3LCAyOSwgMjE2LCAzMSwgMTY0LCAKKyAgICAyNDgsIDQwLCAyOSwgMjE2LCAzMSwgMTY0LCAyMzMsIDE5NCwgMTY5LCAxLCA2MSwgMTY5LCAxLCA3NSwgMTY5LCAxLCA3MywgCisgICAgMTY5LCAxLCA3NiwgMTY5LCAxLCA3MCwgMTY5LCAxLCAyMTQsIDEwNSwgMTY5LCAxLCAyNDMsIDEzNSwgMTY5LCAxLCAxNzYsIAorICAgIDE2OSwgMSwgMjQzLCA2MiwgMTY5LCAxLCAyNDIsIDIxNCwgMTY5LCAxLCAyNDIsIDE3NCwgMTY5LCAxLCAyNDIsIDExMywgCisgICAgMTY5LCAxLCAyNDIsIDc5LCAxNjksIDEsIDE2MiwgMTY5LCAxLCAyNDEsIDIzOCwgMTY5LCAxLCAyNDEsIDE4MCwgMTY5LCAxLCAKKyAgICAyNDEsIDY4LCAxNjksIDEsIDI0MCwgMjIyLCAxNjksIDEsIDI0MCwgMjAxLCAxNjksIDEsIDIzMywgMTM1LCAxNjksIDEsIAorICAgIDIzMywgNTgsIDE2OSwgMSwgMjMyLCAyNDEsIDE2OSwgMSwgMjMyLCAxNTYsIDE2OSwgMSwgMjMyLCA5OCwgMTY5LCAxLCAKKyAgICAyMzIsIDcxLCAxNjksIDEsIDE4NCwgMTY5LCAxLCAyMzEsIDkxLCAxNjksIDEsIDIzMCwgMjMwLCAxNjksIDEsIDIzMCwgCisgICAgMTYxLCAxNjksIDEsIDIzMCwgMTAyLCAxNjksIDEsIDE5NywgMTY5LCAxLCAyNDEsIDkwLCAxNjksIDEsIDIyOSwgMjEzLCAKKyAgICAxNjksIDEsIDIyOSwgMTA3LCAxNjksIDEsIDIyOCwgMjMzLCAxNjksIDEsIDIyOCwgNzQsIDE2OSwgMSwgMjI3LCAyMzcsIAorICAgIDE2OSwgMSwgMjI3LCAxNzYsIDE2OSwgMSwgMjI0LCAyOSwgMTY5LCAxLCAyMjQsIDE2LCAxNjksIDEsIDIyNCwgOSwgMTY5LCAKKyAgICAxLCAyMjQsIDEsIDE2OSwgMSwgMjIzLCAyNDYsIDE2OSwgMSwgMjIzLCAyNDQsIDE2OSwgMSwgMjA2LCAxNjksIDEsIDIyMiwgCisgICAgOTEsIDE2OSwgMSwgMjIxLCAxODEsIDE2OSwgMSwgMjE5LCAxOTEsIDE2OSwgMSwgMjE5LCA1OCwgMTY5LCAxLCAyMTgsIDgzLCAKKyAgICAxNjksIDEsIDIxOCwgMiwgMTY5LCAxLCAyNDgsIDIyMSwgMTY5LCAxLCAyMTcsIDEwNSwgMTY5LCAxLCAyNDgsIDkwLCAxNjksIAorICAgIDEsIDIxNywgMjIsIDE2OSwgMSwgMjQ4LCAzLCAxNjksIDEsIDIxNiwgMTE3LCAxNjksIDEsIDI0NywgMTQ1LCAxNjksIDEsIAorICAgIDI0NiwgNzgsIDE2OSwgMSwgMjQ2LCA1MCwgMTY5LCAxLCAyNDcsIDE1NiwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgCisgICAgNTgsIDE2OSwgMSwgMjE2LCA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE2LCA0NCwgCisgICAgMTY5LCAxLCAyMTUsIDE4MywgMTY5LCAxLCAyMTUsIDE3OCwgMTY5LCAxLCAyMTUsIDE2NywgMTY5LCAxLCAyMTUsIDE2NiwgCisgICAgMTY5LCAxLCAyMTUsIDE2MywgMTY5LCAxLCAyMTUsIDE2MiwgMTY5LCAxLCAyMTIsIDY1LCAxNjksIDEsIDIxMiwgMjIsIAorICAgIDE2OSwgMSwgMjExLCAyNTAsIDE2OSwgMSwgMjExLCAyMjcsIDE2OSwgMSwgMjExLCAxOTUsIDE2OSwgMSwgMjExLCAxODMsIAorICAgIDE2OSwgMSwgMTkxLCAxNjksIDEsIDIxMSwgNDcsIDE2OSwgMSwgMjExLCA4LCAxNjksIDEsIDIxMCwgMjQ0LCAxNjksIDEsIAorICAgIDIxMCwgMjEyLCAxNjksIDEsIDIxMCwgMTc3LCAxOCwgMTksIDI0MCwgMTY4LCAxOCwgMTksIDc1LCAxOCwgMTksIDI1NSwgCisgICAgMzcsIDE4LCAxOSwgNzMsIDE4LCAxOSwgMjM2LCAzMywgMTgsIDE5LCA3NiwgMTgsIDE5LCAyMjYsIDE4MywgMTgsIDE5LCAKKyAgICAyMTEsIDExNiwgMjI2LCAxODMsIDE4LCAxOSwgNzIsIDI0NSwgMjA5LCAxOCwgMTksIDcyLCA3MywgMTgsIDE5LCA2MSwgMTgsIAorICAgIDE5LCAyNTUsIDczLCAxOCwgMTksIDIxMiwgMjIsIDE4LCAxOSwgMTU5LCAyMTIsIDIyLCAxOCwgMTksIDIxMSwgMjUwLCAxOCwgCisgICAgMTksIDE1OSwgMjExLCAyNTAsIDE4LCAxOSwgMjExLCAyNDIsIDE4LCAxOSwgMTU5LCAyMTEsIDI0MiwgMTgsIDE5LCAyMTEsIAorICAgIDIyNywgMTgsIDE5LCAxNTksIDIxMSwgMjI3LCAxOCwgMTksIDIxMSwgMjE1LCAxOCwgMTksIDE1OSwgMjExLCAyMTUsIDE4LCAKKyAgICAxOSwgMjI5LCAxOTAsIDIxMSwgMjE1LCAxOCwgMTksIDIxMiwgNjUsIDE4LCAxOSwgMTU5LCAyMTIsIDY1LCAxOCwgMTksIAorICAgIDIxMiwgNjQsIDE4LCAxOSwgMTU5LCAyMTIsIDY0LCAxOCwgMTksIDIyOSwgMTkwLCAyMTIsIDY0LCAxOCwgMTksIDI1NCwgCisgICAgMjAxLCAxOCwgMTksIDIxMSwgMTE2LCAyMTIsIDk4LCAxOCwgMTksIDI0MiwgMTgwLCAyMTgsIDEyOSwgMTgsIDE5LCA0MCwgCisgICAgMTQyLCAxOCwgMTksIDQwLCAyNDIsIDEzNiwgMTgsIDE5LCA0MCwgMjUxLCAxNzUsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgCisgICAgNDAsIDIxNiwgMTQsIDE2MywgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDQ0LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCAKKyAgICAyMjIsIDIzMywgMTgsIDE5LCA0MCwgNTIsIDE0MiwgMTgsIDE5LCA0MCwgNTIsIDIxOSwgMjUxLCA2NywgMjE4LCA5MCwgMTgsIAorICAgIDE5LCA0MCwgMjMwLCAyMjQsIDI0NywgMTIwLCAxOCwgMTksIDQwLCAyMTksIDI1MSwgMjAzLCA5MSwgMTgsIDE5LCA0MCwgCisgICAgMjI1LCAyMiwgMTgsIDE5LCA0MCwgMTI0LCAyMTcsIDg3LCAxOCwgMTksIDI0NSwgMTUwLCAxOCwgMTksIDIzNSwgMjU1LCAKKyAgICAxOCwgMTksIDIyNiwgMTk2LCAxOCwgMTksIDI1NCwgMTIzLCAxOCwgMTksIDIyNSwgMjIxLCAxOCwgMTksIDIyNiwgODcsIAorICAgIDE4LCAxOSwgMjI1LCAxMDgsIDE4LCAxOSwgMjI1LCA3MSwgMTgsIDE5LCAyMjUsIDE2LCAxOCwgMTksIDIyNCwgMjQ5LCAxOCwgCisgICAgMTksIDIxMSwgMTE2LCAyMjQsIDI0OSwgMTgsIDE5LCA3MiwgMjQxLCAyMjAsIDE4LCAxOSwgNzIsIDI0MSwgMTgwLCAxOCwgCisgICAgMTksIDE5MCwgMTgsIDE5LCAyMjYsIDg5LCAxOCwgMTksIDIyNCwgMTEyLCAxOCwgMTksIDE1OSwgMjI0LCAxMTIsIDE4LCAKKyAgICAxOSwgMjI0LCAxMTAsIDE4LCAxOSwgMTU5LCAyMjQsIDExMCwgMTgsIDE5LCAyMjQsIDEwOSwgMTgsIDE5LCAxNTksIDIyNCwgCisgICAgMTA5LCAxOCwgMTksIDIyNCwgMTA3LCAxOCwgMTksIDE1OSwgMjI0LCAxMDcsIDE4LCAxOSwgMjI0LCAxMDYsIDE4LCAxOSwgCisgICAgMTU5LCAyMjQsIDEwNiwgMTgsIDE5LCAyMjQsIDExNCwgMTgsIDE5LCAxNTksIDIyNCwgMTE0LCAxOCwgMTksIDIyNCwgMTEzLCAKKyAgICAxOCwgMTksIDE1OSwgMjI0LCAxMTMsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMTEzLCAxOCwgMTksIDIyNiwgMTA1LCAxOCwgCisgICAgMTksIDE1OSwgMjI2LCAxMDUsIDE4LCAxOSwgNzIsIDI0MiwgNjAsIDE4LCAxOSwgMjE3LCAyMiwgMTgsIDE5LCAyMTcsIDk5LCAKKyAgICAxOCwgMTksIDIxNiwgMTE3LCAxOCwgMTksIDIxNiwgMTAzLCAxOCwgMTksIDExMSwgMTgsIDE5LCAyMTYsIDE3LCAxOCwgMTksIAorICAgIDIxMSwgMTE2LCAyMTYsIDE3LCAxOCwgMTksIDcyLCAyNDgsIDc3LCAxOCwgMTksIDcyLCAyNDgsIDMsIDE4LCAxOSwgMjE3LCAKKyAgICAxMDUsIDE4LCAxOSwgMjE3LCAxMDEsIDE4LCAxOSwgMjE1LCA3OCwgMTgsIDE5LCAxNTksIDIxNSwgNzgsIDE4LCAxOSwgCisgICAgMjE1LCA2MiwgMTgsIDE5LCAxNTksIDIxNSwgNjIsIDE4LCAxOSwgMjE1LCA2MSwgMTgsIDE5LCAxNTksIDIxNSwgNjEsIDE4LCAKKyAgICAxOSwgMTA1LCAxOCwgMTksIDE1OSwgMTA1LCAxOCwgMTksIDIxNSwgNTQsIDE4LCAxOSwgMTU5LCAyMTUsIDU0LCAxOCwgMTksIAorICAgIDIxNSwgODAsIDE4LCAxOSwgMTU5LCAyMTUsIDgwLCAxOCwgMTksIDIxNSwgNzksIDE4LCAxOSwgMTU5LCAyMTUsIDc5LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTUsIDc5LCAxOCwgMTksIDIxNywgMTUyLCAxOCwgMTksIDIxNSwgMTUxLCAxOCwgMTksIDIxNSwgCisgICAgMTM1LCAxOCwgMTksIDIxNSwgMTMzLCAxOCwgMTksIDIxNSwgMTU2LCAxOCwgMTksIDIzNCwgMTgyLCAxOCwgMTksIDIzNSwgCisgICAgNywgMTgsIDE5LCAyMzQsIDkyLCAxOCwgMTksIDIzNCwgODMsIDE4LCAxOSwgMjM0LCAyOCwgMTgsIDE5LCAyMzQsIDEwLCAKKyAgICAxOCwgMTksIDIxMSwgMTE2LCAyMzQsIDEwLCAxOCwgMTksIDE3NiwgMTgsIDE5LCAyMzUsIDEwLCAxOCwgMTksIDIzMywgCisgICAgMTc4LCAxOCwgMTksIDE1OSwgMjMzLCAxNzgsIDE4LCAxOSwgMjMzLCAxNzYsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NiwgMTgsIAorICAgIDE5LCAyMzMsIDE3NSwgMTgsIDE5LCAxNTksIDIzMywgMTc1LCAxOCwgMTksIDIzMywgMTc0LCAxOCwgMTksIDE1OSwgMjMzLCAKKyAgICAxNzQsIDE4LCAxOSwgMjMzLCAxNzMsIDE4LCAxOSwgMTU5LCAyMzMsIDE3MywgMTgsIDE5LCAyMzMsIDE4MiwgMTgsIDE5LCAKKyAgICAxNTksIDIzMywgMTgyLCAxOCwgMTksIDIzMywgMTgxLCAxOCwgMTksIDE1OSwgMjMzLCAxODEsIDE4LCAxOSwgMjI5LCAxOTAsIAorICAgIDIzMywgMTgxLCAxOCwgMTksIDIzNSwgMjMsIDE4LCAxOSwgMjMzLCAxODMsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAxNzYsIAorICAgIDE4LCAxOSwgMjE5LCAyNywgMjM0LCA4NCwgMTgsIDE5LCAyMTksIDI3LCAyMzQsIDIzLCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgCisgICAgMjQ4LCAxOCwgMTksIDI1MCwgMTkwLCAxOCwgMTksIDI1MSwgMzEsIDE4LCAxOSwgMjUwLCA1MSwgMTgsIDE5LCAyNTAsIDQxLCAKKyAgICAxOCwgMTksIDI0OSwgMjM4LCAxOCwgMTksIDI0OSwgMTc0LCAxOCwgMTksIDIxMSwgMTE2LCAyNDksIDE3NCwgMTgsIDE5LCAKKyAgICAyNTEsIDMzLCAxOCwgMTksIDI1MSwgMzIsIDE4LCAxOSwgMjQ5LCA3OSwgMTgsIDE5LCAxNTksIDI0OSwgNzksIDE4LCAxOSwgCisgICAgMjQ5LCA3NywgMTgsIDE5LCAxNTksIDI0OSwgNzcsIDE4LCAxOSwgMjQ5LCA3NiwgMTgsIDE5LCAxNTksIDI0OSwgNzYsIDE4LCAKKyAgICAxOSwgMjQ5LCA3NSwgMTgsIDE5LCAxNTksIDI0OSwgNzUsIDE4LCAxOSwgMjQ5LCA3NCwgMTgsIDE5LCAxNTksIDI0OSwgNzQsIAorICAgIDE4LCAxOSwgMjQ5LCA4MSwgMTgsIDE5LCAxNTksIDI0OSwgODEsIDE4LCAxOSwgMjQ5LCA4MCwgMTgsIDE5LCAxNTksIDI0OSwgCisgICAgODAsIDE4LCAxOSwgMjI5LCAxOTAsIDI0OSwgODAsIDE4LCAxOSwgMjUxLCA2NiwgMTgsIDE5LCAyMjEsIDIwOSwgMjE2LCAKKyAgICAyMTAsIDE4LCAxOSwgMjMxLCA5MSwgMTgsIDE5LCAyMzEsIDIzNiwgMTgsIDE5LCAyMzAsIDIzMCwgMTgsIDE5LCAyMzAsIAorICAgIDIwMSwgMTgsIDE5LCAyMzAsIDE2MSwgMTgsIDE5LCAyMzAsIDEzMiwgMTgsIDE5LCAyMTEsIDExNiwgMjMwLCAxMzIsIDE4LCAKKyAgICAxOSwgMTg0LCAxOCwgMTksIDIzMSwgMjM3LCAxOCwgMTksIDIzMCwgNDAsIDE4LCAxOSwgMTU5LCAyMzAsIDQwLCAxOCwgMTksIAorICAgIDIzMCwgMzgsIDE4LCAxOSwgMTU5LCAyMzAsIDM4LCAxOCwgMTksIDIzMCwgMzcsIDE4LCAxOSwgMTU5LCAyMzAsIDM3LCAxOCwgCisgICAgMTksIDIzMCwgMzYsIDE4LCAxOSwgMTU5LCAyMzAsIDM2LCAxOCwgMTksIDIzMCwgMzUsIDE4LCAxOSwgMTU5LCAyMzAsIDM1LCAKKyAgICAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMTU5LCAyMzAsIDQyLCAxOCwgMTksIDIzMCwgNDEsIDE4LCAxOSwgMTU5LCAyMzAsIAorICAgIDQxLCAxOCwgMTksIDIyOSwgMTkwLCAyMzAsIDQxLCAxOCwgMTksIDE5MywgMTgsIDE5LCAxNTksIDE5MywgMTgsIDE5LCAKKyAgICAyMzAsIDIzNCwgMTgsIDE5LCAyNTMsIDIwNSwgMTkzLCAxOCwgMTksIDIyMSwgMjA5LCAxOTMsIDE4LCAxOSwgMjI5LCAxMDcsIAorICAgIDE4LCAxOSwgMjI5LCAyMjQsIDE4LCAxOSwgMjI4LCAyMzMsIDE4LCAxOSwgMjI4LCAyMDgsIDE4LCAxOSwgMjI4LCA3NCwgCisgICAgMTgsIDE5LCAyMjgsIDY0LCAxOCwgMTksIDIxMSwgMTE2LCAyMjgsIDY0LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyMjksIAorICAgIDIyNSwgMTgsIDE5LCAyMjcsIDE3MiwgMTgsIDE5LCAxNTksIDIyNywgMTcyLCAxOCwgMTksIDIyNywgMTc0LCAxOCwgMTksIAorICAgIDE1OSwgMjI3LCAxNzQsIDE4LCAxOSwgMjI3LCAxNzMsIDE4LCAxOSwgMTU5LCAyMjcsIDE3MywgMTgsIDE5LCAyMjksIDE5MCwgCisgICAgMjI3LCAxNzMsIDE4LCAxOSwgMjMwLCAyNSwgMTgsIDE5LCA3MiwgMjI5LCA3OSwgMTgsIDE5LCAyMjgsIDIzOCwgMTgsIDE5LCAKKyAgICAyMzMsIDU4LCAxOCwgMTksIDIzMywgMTMzLCAxOCwgMTksIDIzMiwgMjQxLCAxOCwgMTksIDIzMiwgMjI3LCAxOCwgMTksIAorICAgIDIzMiwgMTU2LCAxOCwgMTksIDIzMiwgMTI3LCAxOCwgMTksIDIxMSwgMTE2LCAyMzIsIDEyNywgMTgsIDE5LCAyMzMsIDEzNSwgCisgICAgMTgsIDE5LCAyMzMsIDEzNCwgMTgsIDE5LCAyMzIsIDY4LCAxOCwgMTksIDE1OSwgMjMyLCA2OCwgMTgsIDE5LCAyMzIsIDY3LCAKKyAgICAxOCwgMTksIDE1OSwgMjMyLCA2NywgMTgsIDE5LCAyMzIsIDY2LCAxOCwgMTksIDE1OSwgMjMyLCA2NiwgMTgsIDE5LCAyMzIsIAorICAgIDY1LCAxOCwgMTksIDE1OSwgMjMyLCA2NSwgMTgsIDE5LCAyMzIsIDY0LCAxOCwgMTksIDE1OSwgMjMyLCA2NCwgMTgsIDE5LCAKKyAgICAyMzIsIDcwLCAxOCwgMTksIDE1OSwgMjMyLCA3MCwgMTgsIDE5LCAyMzIsIDY5LCAxOCwgMTksIDE1OSwgMjMyLCA2OSwgMTgsIAorICAgIDE5LCAxNTYsIDE4LCAxOSwgMTU5LCAxNTYsIDE4LCAxOSwgMTQ3LCAxNTYsIDE4LCAxOSwgMjIxLCAxODEsIDE4LCAxOSwgCisgICAgMjIyLCAyOSwgMTgsIDE5LCAyMTksIDE5MSwgMTgsIDE5LCAyMTksIDE3NSwgMTgsIDE5LCAyMTksIDU4LCAxOCwgMTksIAorICAgIDIxOSwgNDAsIDE4LCAxOSwgMjExLCAxMTYsIDIxOSwgNDAsIDE4LCAxOSwgMjA2LCAxOCwgMTksIDIyMiwgMzEsIDE4LCAxOSwgCisgICAgMjE3LCAyNDksIDE4LCAxOSwgMTU5LCAyMTcsIDI0OSwgMTgsIDE5LCAyMTcsIDI0MywgMTgsIDE5LCAxNTksIDIxNywgMjQzLCAKKyAgICAxOCwgMTksIDIxNywgMjQyLCAxOCwgMTksIDE1OSwgMjE3LCAyNDIsIDE4LCAxOSwgMjE3LCAyMzgsIDE4LCAxOSwgMTU5LCAKKyAgICAyMTcsIDIzOCwgMTgsIDE5LCAyMTcsIDIzNywgMTgsIDE5LCAxNTksIDIxNywgMjM3LCAxOCwgMTksIDIxNywgMjUzLCAxOCwgCisgICAgMTksIDE1OSwgMjE3LCAyNTMsIDE4LCAxOSwgMjE3LCAyNTIsIDE4LCAxOSwgMTU5LCAyMTcsIDI1MiwgMTgsIDE5LCAyMjksIAorICAgIDE5MCwgMjE3LCAyNTIsIDE4LCAxOSwgMjIyLCA5MSwgMTgsIDE5LCAyNTMsIDIwNSwgMjIyLCA5MSwgMTgsIDE5LCAyMTcsIAorICAgIDI1NCwgMTgsIDE5LCAyNTEsIDIxOCwgMjIyLCA5MSwgMTgsIDE5LCAyMzAsIDEyNywgMjE5LCAxMDgsIDE4LCAxOSwgMjI5LCAKKyAgICAxOTAsIDIxOSwgOTksIDE4LCAxOSwgMjI5LCAxOTAsIDIyMiwgODksIDE4LCAxOSwgMjI5LCAxOTAsIDIxOCwgMjM1LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTgsIDg2LCAxOCwgMTksIDIyOSwgMTkwLCAyMTksIDk4LCAxOCwgMTksIDIyOSwgMTkwLCAyMjEsIAorICAgIDE4NCwgMTgsIDE5LCAyMjAsIDYzLCAxOCwgMTksIDIyMCwgMzIsIDE4LCAxOSwgMjIwLCAyNywgMTgsIDE5LCAyMjAsIDcsIAorICAgIDE4LCAxOSwgMjIwLCAxLCAxOCwgMTksIDIyMCwgMTAyLCAxOCwgMTksIDIyMCwgOTgsIDE4LCAxOSwgMjE5LCAyMDYsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgMjA1LCAxOCwgMTksIDIxOSwgCisgICAgMjA0LCAxOCwgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMDMsIDE4LCAxOSwgMTU5LCAyMTksIDIwMywgMTgsIAorICAgIDE5LCAyMTksIDIwMiwgMTgsIDE5LCAxNTksIDIxOSwgMjAyLCAxOCwgMTksIDIxOSwgMjA4LCAxOCwgMTksIDE1OSwgMjE5LCAKKyAgICAyMDgsIDE4LCAxOSwgMjE5LCAyMDcsIDE4LCAxOSwgMTU5LCAyMTksIDIwNywgMTgsIDE5LCAyMjAsIDEwNCwgMTgsIDE5LCAKKyAgICAyMTEsIDQ3LCAxOCwgMTksIDIxMSwgMTAxLCAxOCwgMTksIDIxMSwgOCwgMTgsIDE5LCAyMTAsIDI1NSwgMTgsIDE5LCAyMTAsIAorICAgIDI0NCwgMTgsIDE5LCAyMTAsIDIyOSwgMTgsIDE5LCAyMTEsIDExNiwgMjEwLCAyMjksIDE4LCAxOSwgMTkxLCAxOCwgMTksIAorICAgIDIxMSwgMTAzLCAxOCwgMTksIDIxMCwgMTc0LCAxOCwgMTksIDE1OSwgMjEwLCAxNzQsIDE4LCAxOSwgMjEwLCAxNzMsIDE4LCAKKyAgICAxOSwgMTU5LCAyMTAsIDE3MywgMTgsIDE5LCAyMTAsIDE3MiwgMTgsIDE5LCAxNTksIDIxMCwgMTcyLCAxOCwgMTksIDIxMCwgCisgICAgMTcxLCAxOCwgMTksIDE1OSwgMjEwLCAxNzEsIDE4LCAxOSwgMjEwLCAxNzAsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MCwgMTgsIAorICAgIDE5LCAyMTAsIDE3NiwgMTgsIDE5LCAxNTksIDIxMCwgMTc2LCAxOCwgMTksIDIxMCwgMTc1LCAxOCwgMTksIDE1OSwgMjEwLCAKKyAgICAxNzUsIDE4LCAxOSwgMjI5LCAxOTAsIDIxMCwgMTc1LCAxOCwgMTksIDIxMSwgMTE3LCAxOCwgMTksIDI1MiwgNCwgMjExLCAKKyAgICAxMTcsIDE4LCAxOSwgMTU5LCAyMTEsIDExNywgMTgsIDE5LCAyMjEsIDIwOSwgMjExLCA4LCAxOCwgMTksIDIyMywgMTI4LCAKKyAgICAxOCwgMTksIDIyMywgMjIzLCAyMjMsIDEyOCwgMTgsIDE5LCAxNTksIDIzMywgNTgsIDE4LCAxOSwgMjIzLCAxODMsIDE4LCAKKyAgICAxOSwgMjIzLCAzNSwgMTgsIDE5LCAyMjIsIDIzOSwgMTgsIDE5LCAyMjIsIDIxMSwgMTgsIDE5LCAyMjIsIDE5NywgMTgsIAorICAgIDE5LCAxNTksIDIzMiwgMTU2LCAxOCwgMTksIDIwNSwgMTgsIDE5LCAyMjMsIDE4NCwgMTgsIDE5LCAxNTksIDIzMywgMTM1LCAKKyAgICAxOCwgMTksIDIyMiwgMTA4LCAxOCwgMTksIDE1OSwgMjIyLCAxMDgsIDE4LCAxOSwgMTUzLCAxOCwgMTksIDE1OSwgMTUzLCAKKyAgICAxOCwgMTksIDE0NywgMTUzLCAxOCwgMTksIDI0NCwgMTU0LCAxOCwgMTksIDI0NCwgMTkzLCAxOCwgMTksIDI0NCwgMTIxLCAKKyAgICAxOCwgMTksIDI0NCwgMTA4LCAxOCwgMTksIDI0NCwgNDMsIDE4LCAxOSwgMjQ0LCAzNCwgMTgsIDE5LCAyNDQsIDE5NiwgMTgsIAorICAgIDE5LCAyNDQsIDE5NSwgMTgsIDE5LCAyNDMsIDIxMiwgMTgsIDE5LCAxNTksIDI0MywgMjEyLCAxOCwgMTksIDI0NSwgNiwgCisgICAgMTgsIDE5LCAyMTYsIDE5NSwgMTgsIDE5LCAyMzAsIDIzLCAyMTYsIDE5NSwgMTgsIDE5LCAyMTYsIDE3NSwgMTgsIDE5LCAKKyAgICAyMzAsIDIzLCAyMTYsIDE3NSwgMTgsIDE5LCAyMTYsIDE3MSwgMTgsIDE5LCAyMzAsIDIzLCAyMTYsIDE3MSwgMTgsIDE5LCAKKyAgICAyMTYsIDE1NiwgMTgsIDE5LCAyMTYsIDE1MywgMTgsIDE5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIwNywgMTgsIDE5LCAKKyAgICAyMTYsIDEyNywgMTgsIDE5LCAxNTksIDIxNiwgMTI3LCAxOCwgMTksIDIxNiwgMjEwLCAxOCwgMTksIDIxNSwgMTQyLCAxOCwgCisgICAgMTksIDIxNSwgMTQwLCAxOCwgMTksIDIxNSwgMTM5LCAxOCwgMTksIDIxNSwgMTQ0LCAxOCwgMTksIDIxNSwgMTQ1LCAxOCwgCisgICAgMTksIDIxNSwgNTIsIDE4LCAxOSwgMjE1LCA1MSwgMTgsIDE5LCAyMTUsIDUwLCAxOCwgMTksIDIxNSwgNTMsIDE4LCAxOSwgCisgICAgMjI3LCAxOTMsIDI0MSwgMjM4LCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDE4MCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCAKKyAgICAxNjEsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgNjgsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgNTMsIDE4LCAxOSwgMjI3LCAKKyAgICAxOTMsIDE2MiwgMTgsIDE5LCAyMjcsIDE5MywgMjQyLCA0NiwgMTgsIDE5LCAyMjcsIDE5MywgMjQyLCA2MCwgMTgsIDE5LCAKKyAgICAyMjcsIDE5MiwgMjQyLCA2MCwgMTgsIDE5LCAyNDEsIDE1NCwgMTgsIDE5LCAyMjQsIDg0LCAxOCwgMTksIDIyNCwgNTMsIAorICAgIDE4LCAxOSwgMjI0LCA0OCwgMTgsIDE5LCAyMjQsIDQyLCAxOCwgMTksIDIyNCwgMzcsIDE4LCAxOSwgMjI0LCA4OCwgMTgsIAorICAgIDE5LCAyMjQsIDg3LCAxOCwgMTksIDIyNCwgOTYsIDE4LCAxOSwgMjE2LCA1NSwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIAorICAgIDIxNiwgNTIsIDE4LCAxOSwgMjE2LCA1NiwgMTgsIDE5LCAxNTksIDIyMywgMTI4LCAxOCwgMTksIDE1OSwgMjIzLCAzNSwgCisgICAgMTgsIDE5LCAxNTksIDIyMiwgMjExLCAxOCwgMTksIDE1OSwgMjA1LCAxOCwgMTksIDIyOSwgNzUsIDE4LCAxOSwgMjI5LCAKKyAgICAyNywgMTgsIDE5LCAyMjksIDIzLCAxOCwgMTksIDIyOSwgNCwgMTgsIDE5LCAyMjgsIDI1NSwgMTgsIDE5LCAyMjksIDc3LCAKKyAgICAxOCwgMTksIDIyOSwgNzYsIDE4LCAxOSwgMjI5LCA3OSwgMTgsIDE5LCAyMjgsIDEwMywgMTgsIDE5LCAyMjEsIDIwOSwgCisgICAgMjIwLCA2MywgMTgsIDE5LCAyMjEsIDIwOSwgMjIwLCAzMiwgMTgsIDE5LCAyMjEsIDIwOSwgMjIwLCA3LCAxOCwgMTksIAorICAgIDIyMSwgMjA5LCAyMjAsIDEwMiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxOTUsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCisgICAgMTc1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDE1NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMDgsIDE4LCAxOSwgMjExLCAKKyAgICAyMTMsIDIxNiwgMjEwLCAxOCwgMTksIDIzMiwgMjQ4LCAxOCwgMTksIDIzMiwgMjQ3LCAxOCwgMTksIDIzMiwgMjQ2LCAxOCwgCisgICAgMTksIDIzMiwgMjQ1LCAxOCwgMTksIDIzMiwgMjU0LCAxOCwgMTksIDIzMiwgMjUzLCAxOCwgMTksIDIzMiwgMjU1LCAxOCwgCisgICAgMTksIDIxNiwgMjA5LCAyMTYsIDE5NSwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNzUsIDE4LCAxOSwgMjE2LCAyMDksIAorICAgIDIxNiwgMTcxLCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDE1NiwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNTMsIDE4LCAxOSwgCisgICAgMjE2LCAyMDksIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjA5LCAyMTYsIDIwNywgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAKKyAgICAyMTAsIDE4LCAxOSwgMjU0LCAxODksIDI1MywgMTU4LCAxOCwgMTksIDI1MSwgMjE4LCA3NSwgMTgsIDE5LCAyNTEsIDIxOCwgCisgICAgNzMsIDE4LCAxOSwgMjUxLCAyMTgsIDc2LCAxOCwgMTksIDI1MSwgMjE4LCA2MSwgMTgsIDE5LCAyNTEsIDIxOCwgMjEyLCAKKyAgICAyMiwgMTgsIDE5LCAyNTEsIDIxOCwgMjExLCAyNTAsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMSwgMjI3LCAxOCwgMTksIDI1MSwgCisgICAgMjE4LCAyMTIsIDY1LCAxOCwgMTksIDI1MSwgMjE4LCAyMjksIDEwNywgMTgsIDE5LCAyNTEsIDIxOCwgMjI4LCAyMzMsIDE4LCAKKyAgICAxOSwgMjUxLCAyMTgsIDIyOCwgNzQsIDE4LCAxOSwgMjUxLCAyMTgsIDE5NywgMTgsIDE5LCAyNTEsIDIxOCwgMjM0LCAxODIsIAorICAgIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgOTIsIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgMjgsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDE3NiwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCAyMzgsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgMTgwLCAxOCwgMTksIDIyMSwgCisgICAgMjA5LCAyNDEsIDY4LCAxOCwgMTksIDIyMSwgMjA5LCAxNjIsIDE4LCAxOSwgNzIsIDI0MiwgMjIwLCAxOCwgMTksIDcyLCAKKyAgICAyNDIsIDIyNCwgMTgsIDE5LCA3MiwgMjQyLCAyMzYsIDE4LCAxOSwgNzIsIDI0MiwgMjM1LCAxOCwgMTksIDcyLCAyNDIsIAorICAgIDIyNSwgMTgsIDE5LCA3MiwgMjQyLCAyNDksIDE4LCAxOSwgNzIsIDIyMiwgMTQwLCAxOCwgMTksIDcyLCAyMjIsIDIxMSwgCisgICAgMTgsIDE5LCA3MiwgMjIzLCAxMjgsIDE4LCAxOSwgNzIsIDIyMywgMTA4LCAxOCwgMTksIDcyLCAyMjMsIDM1LCAxOCwgMTksIAorICAgIDcyLCAyMDUsIDE4LCAxOSwgNzIsIDIxMSwgMTk1LCAxOCwgMTksIDcyLCAyMTEsIDIyNywgMTgsIDE5LCA3MiwgMjEyLCAyMiwgCisgICAgMTgsIDE5LCA3MiwgMjEyLCAxNywgMTgsIDE5LCA3MiwgMjExLCAyNTAsIDE4LCAxOSwgNzIsIDIxMiwgNjUsIDE4LCAxOSwgCisgICAgNzIsIDI0MCwgMTk0LCAxOCwgMTksIDcyLCAyNDAsIDE5NSwgMTgsIDE5LCA3MiwgMjQwLCAxOTgsIDE4LCAxOSwgNzIsIAorICAgIDI0MCwgMTk3LCAxOCwgMTksIDcyLCAyNDAsIDE5NiwgMTgsIDE5LCA3MiwgMjQwLCAyMDAsIDE4LCAxOSwgNzIsIDIxNiwgCisgICAgMTM2LCAxOCwgMTksIDcyLCAyMTYsIDE1NiwgMTgsIDE5LCA3MiwgMjE2LCAxOTUsIDE4LCAxOSwgNzIsIDIxNiwgMTk0LCAKKyAgICAxOCwgMTksIDcyLCAyMTYsIDE3NSwgMTgsIDE5LCA3MiwgMjE2LCAyMDgsIDE4LCAxOSwgNzIsIDIxNSwgMTIzLCAxOCwgMTksIAorICAgIDcyLCAyMTUsIDEzMywgMTgsIDE5LCA3MiwgMjE1LCAxNTEsIDE4LCAxOSwgNzIsIDIxNSwgMTUwLCAxOCwgMTksIDcyLCAKKyAgICAyMTUsIDEzNSwgMTgsIDE5LCA3MiwgMjE1LCAxNTYsIDE4LCAxOSwgNzIsIDIyNCwgMTUwLCAxOCwgMTksIDcyLCAyMjUsIAorICAgIDE2LCAxOCwgMTksIDcyLCAyMjUsIDIyMSwgMTgsIDE5LCA3MiwgMjI1LCAyMTEsIDE4LCAxOSwgNzIsIDIyNSwgMTA4LCAxOCwgCisgICAgMTksIDcyLCAxOTAsIDE4LCAxOSwgNzIsIDIyNiwgMTA1LCAxOCwgMTksIDcyLCAyNDIsIDExMywgMTgsIDE5LCA3MiwgMjQyLCAKKyAgICAxNzQsIDE4LCAxOSwgNzIsIDI0MywgNjIsIDE4LCAxOSwgNzIsIDI0MywgNTUsIDE4LCAxOSwgNzIsIDI0MiwgMjE0LCAxOCwgCisgICAgMTksIDcyLCAyNDMsIDEzNSwgMTgsIDE5LCA3MiwgMjM0LCAxMDAsIDE4LCAxOSwgNzIsIDIzNCwgMTA1LCAxOCwgMTksIDcyLCAKKyAgICAyMzQsIDExOSwgMTgsIDE5LCA3MiwgMjM0LCAxMTgsIDE4LCAxOSwgNzIsIDIzNCwgMTEyLCAxOCwgMTksIDcyLCAyMzQsIAorICAgIDEzMiwgMTgsIDE5LCA3MiwgMjM0LCA0MSwgMTgsIDE5LCA3MiwgMjM0LCA0MiwgMTgsIDE5LCA3MiwgMjM0LCA0NSwgMTgsIAorICAgIDE5LCA3MiwgMjM0LCA0NCwgMTgsIDE5LCA3MiwgMjM0LCA0MywgMTgsIDE5LCA3MiwgMjM0LCA0NiwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCA0NywgMTgsIDE5LCA3MiwgMjI3LCAyMzcsIDE4LCAxOSwgNzIsIDIyOCwgNzQsIDE4LCAxOSwgNzIsIDIyOSwgMTA3LCAKKyAgICAxOCwgMTksIDcyLCAyMjksIDEwMywgMTgsIDE5LCA3MiwgMjI4LCAyMzMsIDE4LCAxOSwgNzIsIDE5NywgMTgsIDE5LCA3MiwgCisgICAgMjMwLCAxMDIsIDE4LCAxOSwgNzIsIDIzMCwgMTYxLCAxOCwgMTksIDcyLCAyMzEsIDkxLCAxOCwgMTksIDcyLCAyMzEsIDgwLCAKKyAgICAxOCwgMTksIDcyLCAyMzAsIDIzMCwgMTgsIDE5LCA3MiwgMTg0LCAxOCwgMTksIDcyLCAyMTAsIDIxMiwgMTgsIDE5LCA3MiwgCisgICAgMjEwLCAyNDQsIDE4LCAxOSwgNzIsIDIxMSwgNDcsIDE4LCAxOSwgNzIsIDIxMSwgNDQsIDE4LCAxOSwgNzIsIDIxMSwgOCwgCisgICAgMTgsIDE5LCA3MiwgMTkxLCAxOCwgMTksIDcyLCAyMzUsIDUxLCAxOCwgMTksIDIyMSwgMjA5LCAyMzUsIDUxLCAxOCwgMTksIAorICAgIDcyLCAyMzUsIDY4LCAxOCwgMTksIDcyLCAyMzUsIDEyNiwgMTgsIDE5LCA3MiwgMjM1LCAxMjQsIDE4LCAxOSwgNzIsIDIzNSwgCisgICAgMTA4LCAxOCwgMTksIDIyMSwgMjA5LCAyMzUsIDEwOCwgMTgsIDE5LCA3MiwgMjM1LCAxNDEsIDE4LCAxOSwgNzIsIDIzNSwgCisgICAgODEsIDE4LCAxOSwgNzIsIDIzNSwgODUsIDE4LCAxOSwgNzIsIDIzNSwgOTUsIDE4LCAxOSwgNzIsIDIzNSwgOTQsIDE4LCAKKyAgICAxOSwgNzIsIDIzNSwgOTMsIDE4LCAxOSwgNzIsIDIzNSwgOTYsIDE4LCAxOSwgNzIsIDIzMiwgOTgsIDE4LCAxOSwgNzIsIAorICAgIDIzMiwgMTU2LCAxOCwgMTksIDcyLCAyMzMsIDU4LCAxOCwgMTksIDcyLCAyMzMsIDUwLCAxOCwgMTksIDcyLCAyMzIsIDI0MSwgCisgICAgMTgsIDE5LCA3MiwgMjMzLCAxMzUsIDE4LCAxOSwgNzIsIDI0NywgMTQ5LCAxOCwgMTksIDcyLCAyNDcsIDE1MCwgMTgsIDE5LCAKKyAgICA3MiwgMjQ3LCAxNTUsIDE4LCAxOSwgNzIsIDI0NywgMTU0LCAxOCwgMTksIDcyLCAyNDcsIDE1MSwgMTgsIDE5LCA3MiwgCisgICAgMjQ3LCAxNTYsIDE4LCAxOSwgNzIsIDIzMiwgMjQ0LCAxOCwgMTksIDcyLCAyMzIsIDI0NiwgMTgsIDE5LCA3MiwgMjMyLCAKKyAgICAyNTAsIDE4LCAxOSwgNzIsIDIzMiwgMjQ5LCAxOCwgMTksIDcyLCAyMzIsIDI0OCwgMTgsIDE5LCA3MiwgMjMyLCAyNTQsIAorICAgIDE4LCAxOSwgNzIsIDIxNiwgNTAsIDE4LCAxOSwgNzIsIDIxNiwgNTIsIDE4LCAxOSwgNzIsIDIxNiwgNTUsIDE4LCAxOSwgCisgICAgNzIsIDIxNiwgNTQsIDE4LCAxOSwgNzIsIDIxNiwgNTMsIDE4LCAxOSwgNzIsIDIxNiwgNTYsIDE4LCAxOSwgNzIsIDIxNiwgCisgICAgNDUsIDE4LCAxOSwgNzIsIDIxNiwgNDYsIDE4LCAxOSwgNzIsIDIxNiwgNTgsIDE4LCAxOSwgNzIsIDIxNiwgNTcsIDE4LCAKKyAgICAxOSwgNzIsIDIxNiwgNDcsIDE4LCAxOSwgNzIsIDIxNiwgNTksIDE4LCAxOSwgNzIsIDIxMCwgMTMsIDE4LCAxOSwgNzIsIAorICAgIDIxMCwgMjMsIDE4LCAxOSwgNzIsIDIxMCwgOTQsIDE4LCAxOSwgNzIsIDIxMCwgOTIsIDE4LCAxOSwgNzIsIDIxMCwgNDQsIAorICAgIDE4LCAxOSwgNzIsIDIxMCwgMTE2LCAxOCwgMTksIDcyLCAyMTAsIDE1OSwgMTgsIDE5LCA3MiwgNjUsIDIxMCwgMTU5LCAxOCwgCisgICAgMTksIDcyLCAyNDYsIDI4LCAxOCwgMTksIDcyLCAyNDYsIDI5LCAxOCwgMTksIDcyLCAyNDYsIDM2LCAxOCwgMTksIDcyLCAKKyAgICAyNDYsIDM1LCAxOCwgMTksIDcyLCAyNDYsIDMxLCAxOCwgMTksIDcyLCAyNDYsIDM4LCAxOCwgMTksIDcyLCAyMTgsIDgzLCAKKyAgICAxOCwgMTksIDcyLCAyMTksIDU4LCAxOCwgMTksIDcyLCAyMjEsIDE4MSwgMTgsIDE5LCA3MiwgMjIxLCAxNzAsIDE4LCAxOSwgCisgICAgNzIsIDIxOSwgMTkxLCAxOCwgMTksIDcyLCAyMDYsIDE4LCAxOSwgNzIsIDIxOSwgMjI1LCAxOCwgMTksIDcyLCAyMjAsIDcsIAorICAgIDE4LCAxOSwgNzIsIDIyMCwgNjMsIDE4LCAxOSwgNzIsIDIyMCwgNjEsIDE4LCAxOSwgNzIsIDIyMCwgMzIsIDE4LCAxOSwgCisgICAgNzIsIDIyMCwgMTAyLCAxOCwgMTksIDcyLCAyMjAsIDEwNCwgMTgsIDE5LCA3MiwgMjE1LCAxNjMsIDE4LCAxOSwgNzIsIAorICAgIDIxNSwgMTY2LCAxOCwgMTksIDcyLCAyMTUsIDE3OCwgMTgsIDE5LCA3MiwgMjE1LCAxNzcsIDE4LCAxOSwgNzIsIDIxNSwgCisgICAgMTY3LCAxOCwgMTksIDcyLCAyMTUsIDE4MywgMTgsIDE5LCA3MiwgMjUwLCA2OSwgMTgsIDE5LCA3MiwgMjUwLCA4NiwgMTgsIAorICAgIDE5LCA3MiwgMjUwLCAxMzEsIDE4LCAxOSwgNzIsIDI1MCwgMTI4LCAxOCwgMTksIDcyLCAyNTAsIDExMCwgMTgsIDE5LCA3MiwgCisgICAgMjUwLCAxNTcsIDE4LCAxOSwgNzIsIDIxNSwgMTI2LCAxOCwgMTksIDcyLCAyMTUsIDEyNywgMTgsIDE5LCA3MiwgMjE1LCAKKyAgICAxMzAsIDE4LCAxOSwgNzIsIDIxNSwgMTI5LCAxOCwgMTksIDcyLCAyMTUsIDEyOCwgMTgsIDE5LCA3MiwgMjE1LCAxMzEsIAorICAgIDE4LCAxOSwgMjUwLCAxMTEsIDUwLCAxOCwgMTksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTgsIDE5LCAyMjQsIDgwLCAxOCwgCisgICAgMTksIDIyOSwgNzMsIDE4LCAxOSwgMjI4LCAxMDAsIDE4LCAxOSwgMjI4LCA5OSwgMTgsIDE5LCAyMjgsIDk4LCAxOCwgMTksIAorICAgIDIyOCwgOTcsIDE4LCAxOSwgMjI4LCAxMDIsIDE4LCAxOSwgMjI4LCAxMDEsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI1LCAKKyAgICAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNCwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjMsIDE4LCAxOSwgMjExLCAyMTMsIAorICAgIDIxNiwgMTIyLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjgsIDE4LCAxOSwgCisgICAgMjExLCAyMTMsIDIxNiwgMTI3LCAxOCwgMTksIDIxMSwgMjEzLCA0MCwgMjE2LCAyMTAsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDIxMiwgOTgsIDIyNiwgMjI2LCAyMTksIDE5LCA3OCwgMjI2LCAyMjYsIDEsIDI1MiwgNDgsIDIyNiwgMjI2LCAxLCAyMzIsIAorICAgIDg3LCAyMjYsIDIyNiwgMSwgMjQ0LCAxNTEsIDIyNiwgMjI2LCAxLCAyMjIsIDE1LCAyMjYsIDIyNiwgMSwgMjI4LCAxOTMsIAorICAgIDIyNiwgMjI2LCAxLCAyMTQsIDIyNiwgMjI2LCAyMjYsIDEsIDI0OCwgMTk3LCAyMjYsIDIyNiwgMSwgMjE2LCA4MCwgMjI2LCAKKyAgICAyMjYsIDEsIDI0OSwgMjI5LCAyMjYsIDIyNiwgMSwgMjUwLCAxODAsIDIyNiwgMjI2LCAxLCAyMzAsIDkxLCAyMjYsIDIyNiwgCisgICAgMSwgMjQyLCAxNTYsIDIyNiwgMjI2LCAxLCAyMjksIDYzLCAyMjYsIDIyNiwgMSwgMjE4LCAxMjIsIDIyNiwgMjI2LCAxLCAKKyAgICAyMjIsIDEzNSwgMjI2LCAyMjYsIDEsIDI1NCwgMTk4LCAyMjYsIDIyNiwgMSwgMjI2LCAxODcsIDIyNiwgMjI2LCAxLCAyMTQsIAorICAgIDE1MCwgMjI2LCAyMjYsIDEsIDI0NSwgMjMxLCAyMjYsIDIyNiwgMSwgMjM1LCAxODgsIDIyNiwgMjI2LCAxLCAyNDUsIDIzMiwgCisgICAgMjI2LCAyMjYsIDEsIDIyNiwgMTU4LCAyMjYsIDIyNiwgMSwgMjE0LCAyMDYsIDIyNiwgMjI2LCAxLCAyMzYsIDM5LCAyMjYsIAorICAgIDIyNiwgMSwgMjQ1LCAyMjksIDIyNiwgMjI2LCAxLCAyMjUsIDIwMiwgMjI2LCAyMjYsIDI0NCwgMTUwLCA3OCwgMjI2LCAKKyAgICAyMjYsIDIyMywgNDksIDI0NCwgMTUwLCA3OCwgMTc4LCAxLCAyNDQsIDE0MSwgMjQ0LCAxMzMsIDI0NCwgMTU1LCAyNDUsIDYsIAorICAgIDE3OCwgMSwgMjE0LCAxMDUsIDE3OCwgMSwgMjE0LCAxMzUsIDIxNCwgMTUxLCA3MCwgMTc4LCAxLCAyMTAsIDIxNCwgMTc4LCAKKyAgICAxLCAyMTEsIDExNywgMTc4LCAxLCAyMTIsIDk4LCAxNzgsIDEsIDIxNiwgMTMwLCAyMTYsIDEyOSwgMjE2LCAxNTEsIDE3OCwgCisgICAgMSwgMjQ1LCA1OSwgMTc4LCAxLCAyNTQsIDkzLCA2MSwgMTc4LCAxLCAyMjYsIDE0MywgNzYsIDE3OCwgMSwgMjU1LCAxNywgCisgICAgNjEsIDE3OCwgMSwgMjU0LCAyMjcsIDE3OCwgMSwgMjMyLCAxMzMsIDc2LCAxNzgsIDEsIDIxOSwgMjQ0LCA3NiwgMTc4LCAxLCAKKyAgICA3NiwgMTc4LCAxLCAyMjYsIDIzNCwgMTc4LCAxLCAyMjYsIDE5NiwgMTc4LCAxLCAyMjMsIDE2NCwgMjIzLCAxNzcsIDIyMywgCisgICAgOTQsIDE1MywgMTc4LCAxLCAyMzQsIDE5MywgMTc4LCAxLCAyNTAsIDE3NywgMTc4LCAxLCAyMzQsIDE5NCwgMjM1LCAyMywgCisgICAgMTc4LCAxLCAyNDMsIDIwMiwgMTc4LCAxLCAyNDUsIDEzOCwgMTc4LCAxLCAyNDMsIDU4LCAyNDIsIDY2LCAyNDMsIDIwMiwgCisgICAgMTc4LCAxLCAyNDMsIDk2LCAxNzgsIDEsIDIxMSwgMTg4LCAyMTEsIDE4MiwgMjEyLCA5OCwgMTc4LCAxLCAyNDIsIDM4LCAKKyAgICAyNDIsIDYwLCAxNzgsIDEsIDI0MiwgNDIsIDI0MiwgNjAsIDE3OCwgMSwgMjMyLCAxMzUsIDI0MiwgNjAsIDE3OCwgMSwgCisgICAgMjE5LCAyNDcsIDI0MiwgNjAsIDE3OCwgMSwgMjI5LCAxODUsIDIyNywgMTU3LCAyMjksIDE4NiwgMjMwLCAyNSwgMTc4LCAxLCAKKyAgICAyMTksIDI0NSwgMjMwLCAyNSwgMTc4LCAxLCAyNDYsIDExNSwgMTc4LCAxLCAyMzUsIDE2OCwgMjM1LCAxNzIsIDIzNSwgCisgICAgMTYyLCA3MywgMTc4LCAxLCA3NSwgMTc4LCAxLCAyMzUsIDExNywgMjM1LCAxNDQsIDE3OCwgMSwgMjQzLCA0MywgMTc4LCAxLCAKKyAgICAyMzIsIDEzNiwgMjU0LCAyNDMsIDE3OCwgMSwgMjE5LCAyNDksIDYxLCAxNzgsIDEsIDIzNSwgMTU0LCAyNDUsIDExMywgCisgICAgMTc4LCAxLCAyMjUsIDE2NCwgMjI1LCAxODYsIDIyNiwgMTA1LCAxNzgsIDEsIDI1NCwgMTYzLCAyNDUsIDExMSwgMTc4LCAxLCAKKyAgICAyMTksIDI0LCAyMjIsIDkxLCAxNzgsIDEsIDIxOSwgMTc5LCAyMzIsIDEzMiwgMjIyLCA5MSwgMTc4LCAxLCAyMTksIDI0MywgCisgICAgMjIyLCA5MSwgMTc4LCAxLCAyNTEsIDY2LCAxNzgsIDEsIDIxMCwgMTU5LCAxNzgsIDEsIDIxNiwgNjMsIDIxNiwgNzMsIAorICAgIDIxNSwgNDEsIDIxNywgMTUyLCAxNzgsIDEsIDIxOSwgMjQyLCAyMTcsIDE1MiwgMTc4LCAxLCAyNDksIDYwLCAxNzgsIDEsIAorICAgIDI1MiwgMzEsIDI1MiwgMzQsIDI1MSwgMjI0LCAyNTMsIDE1OCwgMTc4LCAxLCAyMTksIDI0OCwgMjUzLCAxNTgsIDE3OCwgMSwgCisgICAgMjQ2LCAxMTQsIDE3OCwgMSwgMjI2LCAxNzEsIDE3OCwgMSwgMjQ1LCAxOTYsIDI0NSwgMTk4LCA3NSwgMTc4LCAxLCAyMzEsIAorICAgIDE3OCwgMjMxLCAxODYsIDE5MywgMTc4LCAxLCAyMzIsIDEzNCwgMTkzLCAxNzgsIDEsIDIxOSwgMjQ2LCAxOTMsIDE3OCwgMSwgCisgICAgMjMzLCA3MywgMjMzLCAxMTQsIDIzMiwgMTQzLCAxNTYsIDE3OCwgMSwgMjQ2LCAxMTYsIDE3OCwgMSwgMjM1LCAyMzAsIAorICAgIDE3OCwgMSwgMjM1LCAyMzEsIDE3OCwgMSwgMjQ4LCAyMTAsIDI0OCwgMjE1LCAyNDksIDYwLCAxNzgsIDEsIDIyNiwgMTM4LCAKKyAgICAyNDUsIDU4LCA3NiwgMTc4LCAxLCAyNDUsIDIyNywgMTc4LCAxLCAyMzUsIDE4NywgMTc4LCAxLCAyNDksIDc4LCAxNzgsIDEsIAorICAgIDI1MSwgMTcsIDE3OCwgMSwgMjUwLCAxODksIDE3OCwgMSwgMjE4LCAxNjEsIDE3OCwgMSwgMjMyLCAxMzEsIDE3OCwgMSwgCisgICAgMjE5LCAyNDEsIDE3OCwgMSwgMjQwLCAxMTAsIDE3OCwgMSwgMjI0LCA5NiwgMTc4LCAxLCAyMTEsIDE3OCwgMTc4LCAyMTksIAorICAgIDE1NSwgMjI0LCAxNDAsIDE3OCwgMjMwLCA4NSwgMjI0LCAxNDAsIDE3OCwgMjQ5LCAxMzEsIDIyNCwgMTQwLCAxNzgsIDI1NCwgCisgICAgNiwgODcsIDE3OCwgMjE1LCA4MiwgODcsIDE3OCwgMjUyLCA0NiwgODcsIDIxNywgODMsIDEsIDYxLCAyMTcsIDgzLCAxLCAKKyAgICA3MywgMjE3LCA4MywgMSwgNzAsIDIxNywgODMsIDEsIDE3NiwgMjE3LCA4MywgMSwgMjQzLCAxMzUsIDIxNywgODMsIDEsIAorICAgIDIyOSwgNzcsIDIxNywgODMsIDEsIDIxNywgMTA1LCAyMTcsIDgzLCAxLCAyNDgsIDIyMSwgMjE3LCA4MywgMSwgMTk3LCAKKyAgICAyMTcsIDgzLCAxLCAxOTAsIDIxNywgODMsIDEsIDI1MiwgMTkxLCAyMTcsIDgzLCAxLCAxODQsIDIxNywgODMsIDEsIDE5MSwgCisgICAgMjE3LCA4MywgMSwgMjMzLCAxMzUsIDIxNywgODMsIDEsIDIxMiwgNjUsIDIxNywgODMsIDEsIDIwNiwgMjE3LCA4MywgMSwgCisgICAgMTYyLCAyMTcsIDgzLCAyNSwgNSwgNzMsIDIxNywgODMsIDI1LCA1LCA3MCwgMjE3LCA4MywgNSwgMjEzLCAxNTIsIDI0MiwgCisgICAgNywgMSwgNjEsIDI0MiwgNywgMSwgNzMsIDI0MiwgNywgMSwgNzAsIDI0MiwgNywgMSwgMTc2LCAyNDIsIDcsIDEsIDI0MywgCisgICAgMTM1LCAyNDIsIDcsIDEsIDIyOSwgNzcsIDI0MiwgNywgMSwgMjE3LCAxMDUsIDI0MiwgNywgMSwgMjQ4LCAyMjEsIDI0MiwgCisgICAgNywgMSwgMTk3LCAyNDIsIDcsIDEsIDE5MCwgMjQyLCA3LCAxLCAyNTIsIDE5MSwgMjQyLCA3LCAxLCAxODQsIDI0MiwgNywgCisgICAgMSwgMTkxLCAyNDIsIDcsIDEsIDIwNSwgMjQyLCA3LCAxLCAyMzMsIDEzNSwgMjQyLCA3LCAxLCAyMTIsIDY1LCAyNDIsIDcsIAorICAgIDEsIDIwNiwgMjQyLCA3LCAxLCAxNjIsIDI0MiwgNywgMjUsIDUsIDczLCAyNDIsIDcsIDI1LCA1LCA3MCwgMjQyLCA3LCA1LCAKKyAgICAyMjYsIDQ5LCAyMjUsIDEyNiwgMjE5LCAxNTUsIDIyNCwgMTQwLCAyMjUsIDEyNiwgNTIsIDIyNCwgMTQwLCAyNTEsIDEyMCwgCisgICAgMSwgNjEsIDI1MSwgMTIwLCAxLCA3MywgMjUxLCAxMjAsIDEsIDcwLCAyNTEsIDEyMCwgMSwgMTc2LCAyNTEsIDEyMCwgMSwgCisgICAgMjQzLCAxMzUsIDI1MSwgMTIwLCAxLCAyMjksIDc3LCAyNTEsIDEyMCwgMSwgMjE3LCAxMDUsIDI1MSwgMTIwLCAxLCAyNDgsIAorICAgIDIyMSwgMjUxLCAxMjAsIDEsIDE5NywgMjUxLCAxMjAsIDEsIDE5MCwgMjUxLCAxMjAsIDEsIDI1MiwgMTkxLCAyNTEsIDEyMCwgCisgICAgMSwgMTg0LCAyNTEsIDEyMCwgMSwgMTkxLCAyNTEsIDEyMCwgMSwgMjA1LCAyNTEsIDEyMCwgMSwgMjMzLCAxMzUsIDI1MSwgCisgICAgMTIwLCAxLCAyMTIsIDY1LCAyNTEsIDEyMCwgMSwgMjA2LCAyNTEsIDEyMCwgMSwgMTYyLCAyNTEsIDEyMCwgMjUsIDUsIDczLCAKKyAgICAyNTEsIDEyMCwgMjUsIDUsIDcwLCAyMTcsIDgyLCAxLCA2MSwgMjE3LCA4MiwgMSwgNzMsIDIxNywgODIsIDEsIDcwLCAyMTcsIAorICAgIDgyLCAxLCAxNzYsIDIxNywgODIsIDEsIDI0MywgMTM1LCAyMTcsIDgyLCAxLCAyMjksIDc3LCAyMTcsIDgyLCAxLCAyMTcsIAorICAgIDEwNSwgMjE3LCA4MiwgMSwgMjQ4LCAyMjEsIDIxNywgODIsIDEsIDE5NywgMjE3LCA4MiwgMSwgMTkwLCAyMTcsIDgyLCAxLCAKKyAgICAyNTIsIDE5MSwgMjE3LCA4MiwgMSwgMTg0LCAyMTcsIDgyLCAxLCAxOTEsIDIxNywgODIsIDEsIDIzMywgMTM1LCAyMTcsIAorICAgIDgyLCAxLCAyMTIsIDY1LCAyMTcsIDgyLCAxLCAyMDYsIDIxNywgODIsIDI1LCA1LCA3MywgMjE3LCA4MiwgMjUsIDUsIDcwLCAKKyAgICA2OSwgMSwgMTc2LCA2OSwgMSwgMjM0LCAxMzIsIDY5LCAxLCAyMzQsIDI4LCA2OSwgMSwgMjM0LCAxMDUsIDY5LCAxLCAyMjksIAorICAgIDQsIDY5LCAxLCAyNTEsIDMzLCA2OSwgMSwgMjUwLCAxNTcsIDY5LCAxLCAyNDksIDIzOCwgNjksIDEsIDI1MCwgODYsIDY5LCAKKyAgICAxLCAyMjcsIDEzNCwgNjksIDEsIDI0OCwgMjIxLCA2OSwgMSwgMjE1LCAxNDQsIDY5LCAxLCAyNDcsIDE0NSwgNjksIDEsIAorICAgIDIxNSwgMTM5LCA2OSwgMSwgMjI4LCA4MCwgNjksIDEsIDIxNywgMTA1LCA2OSwgMSwgMjE2LCAyMDgsIDY5LCAxLCAxMTEsIAorICAgIDY5LCAxLCAyMTYsIDE1NiwgNjksIDEsIDIyOCwgNzQsIDY5LCAxLCAyNTIsIDE5MSwgNjksIDEsIDIyNSwgMTQ3LCA2OSwgMSwgCisgICAgMjI1LCAxNiwgNjksIDEsIDIyNSwgMTIxLCA2OSwgMSwgMjMwLCAxNjEsIDY5LCAxLCAyMTAsIDI0NCwgNjksIDEsIDIyMiwgCisgICAgMjExLCA2OSwgMSwgMjMyLCAxNTYsIDY5LCAxLCAyMTMsIDEzOCwgNjksIDEsIDIyMCwgMTAyLCA2OSwgMSwgMjE4LCAxODQsIAorICAgIDY5LCAxLCAyMDYsIDY5LCAxLCAxNjIsIDY5LCAxLCAyMzMsIDEzNSwgNjksIDEsIDIyNCwgODgsIDY5LCAyMzUsIDI0MywgCisgICAgMjUsIDIyNCwgNzQsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgODcsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNTMsIDY5LCAKKyAgICAyMzUsIDI0MywgMjUsIDIyNCwgNDgsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgCisgICAgMiwgNjksIDIzNSwgMjQzLCAyNSwgMjIzLCAyNDYsIDY5LCAyMzUsIDI0MywgMjUsIDIyMywgMjQ1LCA2OSwgMjM1LCAyNDMsIAorICAgIDI1LCAyMjIsIDEwMCwgNjksIDIzNSwgMjQzLCAyNSwgMjIyLCA5MywgNjksIDIzNSwgMjQzLCAyNSwgMjMyLCA2MiwgNjksIAorICAgIDIzNSwgMjQzLCAyNSwgMjMyLCA1MiwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCA2OSwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAKKyAgICA4MCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzOCwgMjE1LCA0OSwgMTEwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDM4LCAKKyAgICAyMTUsIDQ5LCAxMDUsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNzAsIDY5LCAyNSwgMjM1LCAyMjksIDI1NCwgNDUsIDY5LCAKKyAgICAyNSwgMjM1LCAyMjksIDI1NSwgNzMsIDY5LCAyNSwgNSwgMjU1LCA3MywgNjksIDI1LCA1LCA3MywgNjksIDI1LCA1LCAyMzYsIAorICAgIDMzLCA2OSwgMjUsIDUsIDIxMSwgMTE3LCA2OSwgMjUsIDUsIDIxMCwgMTY5LCA2OSwgMjUsIDUsIDcwLCA2OSwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCA2OSwgMjUsIDUsIDIxNCwgMjI5LCA2OSwgMjUsIDUsIDIyNiwgMjM0LCA2OSwgMjUsIDUsIDE5MSwgNjksIAorICAgIDI1LCA1LCAyMzYsIDYwLCA2OSwgMjUsIDUsIDc1LCA2OSwgMjUsIDUsIDI1NCwgMjQzLCA2OSwgMjUsIDUsIDI1NCwgMjAxLCAKKyAgICA2OSwgMjUsIDUsIDIyNiwgMTgzLCA2OSwgMjUsIDUsIDI1MywgMTkyLCA2OSwgNSwgMjI4LCAyMDYsIDY5LCA1LCAyMjMsIAorICAgIDEyNiwgNjksIDUsIDIxMCwgMTgwLCA2OSwgNSwgMjMwLCA1MiwgNjksIDUsIDIxNSwgMjEzLCA2OSwgNSwgMjUyLCAxNDMsIAorICAgIDY5LCA1LCAyMjIsIDIwNiwgNjksIDUsIDIxNiwgNDAsIDY5LCA1LCAyMzQsIDI0MSwgNjksIDUsIDI1NCwgMjAzLCA2OSwgNSwgCisgICAgMjIxLCAyNDQsIDIyMSwgMjM4LCA2OSwgNSwgMjEzLCAxNDksIDY5LCA1LCAyNDksIDIzMiwgNjksIDUsIDI1MiwgMTE3LCAKKyAgICA2OSwgNSwgMjM0LCAxMjUsIDY5LCA1LCAyNTIsIDEzNywgNjksIDUsIDI1MSwgOSwgMjI1LCA3MiwgMjMzLCAxODcsIDY5LCAKKyAgICA1LCAyMzMsIDMwLCAyMTYsIDE3LCA2OSwgNSwgMjUyLCAyMCwgNjksIDUsIDIyNSwgMTIzLCAyMzAsIDk5LCA2OSwgNSwgCisgICAgMjM0LCA5LCA2OSwgMjQ5LCA5OCwgMTYsIDIyMywgMjgsIDY5LCA1LCAyNTMsIDE3NCwgNjksIDUsIDI1MywgMTk1LCA2OSwgCisgICAgMjEsIDIxMCwgODYsIDY5LCAyMSwgMTEwLCA2OSwgMjEsIDEwNSwgNjksIDIxLCAxNTgsIDY5LCAyMSwgMTYxLCA2OSwgMjEsIAorICAgIDE4OSwgNjksIDIxLCAxOTQsIDY5LCAyMSwgMTk4LCA2OSwgMjEsIDE5NSwgNjksIDIxLCAyMDAsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIxOSwgNDMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIzMCwgNzEsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIyNSwgNzEsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDI1MiwgNDksIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDI1MSwgMTAzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIxNSwgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjI0LCAyMDksIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjA3LCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMjQsIDIxMywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMTEsIDgzLCAyNTEsIDIzNiwgCisgICAgODMsIDI0NSwgMTYzLCA4MywgMjQ5LCAyMTksIDgzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDgzLCAyNDksIDIyNiwgODMsIAorICAgIDI0NCwgMTEsIDI0NywgMTE4LCA4MywgMjE2LCAzOSwgMjE5LCA1MiwgMjQwLCAxNjgsIDgzLCAyMTksIDE5MCwgMywgMjUxLCAKKyAgICAxNzIsIDIzMSwgMTU0LCA4MywgMjMxLCAxODMsIDI0OSwgMjE5LCA4MywgMjMxLCAxODMsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgODMsIDIyOCwgMTkxLCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIDE1NywgMTEwLCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIAorICAgIDE1NywgMTA1LCA4MywgMjQzLCAyNTMsIDQ1LCAyMjEsIDE1NywgMTU4LCA4MywgMjUsIDIyMCwgMTM3LCA4MywgMjEsIDIxMCwgCisgICAgODYsIDgzLCAyMSwgMTEwLCA4MywgMjEsIDEwNSwgODMsIDIxLCAxNTgsIDgzLCAyMSwgMTYxLCA4MywgMjEsIDE4OSwgODMsIAorICAgIDIxLCAxOTQsIDgzLCAyMSwgMTk4LCA4MywgMjEsIDE5NSwgODMsIDIxLCAyMDAsIDgzLCAxLCA2MSwgODMsIDEsIDc1LCA4MywgCisgICAgMSwgNzMsIDgzLCAxLCA3NiwgODMsIDEsIDcwLCA4MywgMSwgMjI2LCAyMzQsIDgzLCAxLCAyMTQsIDIxNCwgODMsIDEsIAorICAgIDI0NSwgMjA5LCA4MywgMSwgMTk3LCA4MywgMSwgMjU0LCAxMTUsIDgzLCAxLCAyNTIsIDE5MSwgODMsIDEsIDE5MCwgODMsIAorICAgIDEsIDIyNCwgODgsIDgzLCAxLCAyNDMsIDEzNSwgODMsIDEsIDE4NCwgODMsIDEsIDIzMywgMTM1LCA4MywgMSwgMjA2LCA4MywgCisgICAgMSwgMjIwLCAxMDIsIDgzLCAxLCAyMTcsIDEwNSwgODMsIDEsIDI0OCwgMjIxLCA4MywgMSwgMjUwLCAxNTcsIDgzLCAxLCAKKyAgICAyMzUsIDE0MSwgODMsIDEsIDE5MSwgODMsIDEsIDIwNSwgODMsIDEsIDIxMiwgNjUsIDgzLCAxLCAyNDQsIDE5NiwgODMsIDEsIAorICAgIDE3NiwgODMsIDEsIDIzNCwgMTMyLCA4MywgMSwgMjE1LCAxODMsIDgzLCAxLCAyMTAsIDExNiwgODMsIDEsIDI0MiwgNDYsIAorICAgIDgzLCAxLCAyMTAsIDE2LCA4MywgMSwgMjMyLCAyNTQsIDgzLCAxLCAyMTAsIDY5LCA4MywgMSwgMjUwLCAxMTAsIDgzLCAxLCAKKyAgICAyMTYsIDM5LCAxOTksIDI1LCA1MCwgODMsIDEsIDIxNiwgMzksIDc1LCA4MywgMSwgMjE2LCAzOSwgNzMsIDgzLCAxLCAyMTYsIAorICAgIDM5LCA3NiwgODMsIDEsIDIxNiwgMzksIDcwLCA4MywgMSwgMjE2LCAzOSwgMjI2LCAyMzQsIDgzLCAxLCAyMTYsIDM5LCAKKyAgICAyMTQsIDIxNCwgODMsIDEsIDIxNiwgMzksIDI1NCwgMTE1LCA4MywgMSwgMjE2LCAzOSwgMjUyLCAxOTEsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAxOTAsIDgzLCAxLCAyMTYsIDM5LCAyMjQsIDg4LCA4MywgMSwgMjE2LCAzOSwgMjQzLCAxMzUsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAxODQsIDgzLCAxLCAyMTYsIDM5LCAyMTcsIDEwNSwgODMsIDEsIDIxNiwgMzksIDI0OCwgMjIxLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMjUwLCAxNTcsIDgzLCAxLCAyMTYsIDM5LCAyMzUsIDE0MSwgODMsIDEsIDIxNiwgMzksIDIxNSwgMTgzLCA4MywgMSwgCisgICAgMjE2LCAzOSwgMTkxLCA4MywgMSwgMjE2LCAzOSwgMjEyLCA2NSwgODMsIDEsIDIxNiwgMzksIDE3NiwgODMsIDEsIDIxNiwgCisgICAgMzksIDI0MywgMTMyLCA4MywgMSwgMjE2LCAzOSwgMjQyLCA0NiwgODMsIDEsIDIxNiwgMzksIDIzNSwgMTA3LCA4MywgMSwgCisgICAgMjE2LCAzOSwgMjI4LCAyMzEsIDgzLCAxLCAyMTYsIDM5LCAyNDYsIDM4LCA4MywgMSwgMjE5LCAxOTAsIDc1LCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDczLCA4MywgMSwgMjE5LCAxOTAsIDIzNSwgMTUyLCA4MywgMSwgMjE5LCAxOTAsIDIxNCwgMjE0LCA4MywgCisgICAgMSwgMjE5LCAxOTAsIDcwLCA4MywgMSwgMjE5LCAxOTAsIDI1NCwgMTE1LCA4MywgMSwgMjE5LCAxOTAsIDE3NiwgODMsIDEsIAorICAgIDIxOSwgMTkwLCAyNDMsIDEzNSwgODMsIDEsIDIxOSwgMTkwLCAxNjIsIDgzLCAxLCAyMTksIDE5MCwgMTkwLCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDIyMCwgMTAyLCA4MywgMSwgMjE5LCAxOTAsIDIxNywgMTA1LCA4MywgMSwgMjE5LCAxOTAsIDI0OCwgMjIxLCAKKyAgICA4MywgMSwgMjE5LCAxOTAsIDIzNSwgMTQxLCA4MywgMSwgMjE5LCAxOTAsIDI0NCwgMTk2LCA4MywgMSwgMjE5LCAxOTAsIAorICAgIDI0MywgMTMyLCA4MywgMSwgMjE5LCAxOTAsIDI0MiwgNDYsIDgzLCAxLCAyMTksIDE5MCwgMjE1LCAxODMsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgMjEwLCAxMTYsIDgzLCAxLCAyMTksIDE5MCwgMjIzLCAxODQsIDgzLCAxLCAyMTksIDE5MCwgMjUwLCAxNTcsIAorICAgIDgzLCAxLCAyMTksIDE5MCwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCA3MywgODMsIDEsIDIzMSwgMTgzLCAxNzYsIDgzLCAKKyAgICAxLCAyMzEsIDE4MywgMjA1LCA4MywgMSwgMjMxLCAxODMsIDI0NCwgMTk2LCA4MywgMSwgMjMxLCAxODMsIDIxMCwgODIsIAorICAgIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1NCwgNzYsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEzLCAKKyAgICAxNDgsIDExMCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAxODYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMzUsIDE5MywgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE2MiwgCisgICAgMjQzLCAxMTYsIDI1MiwgMTU1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxMzQsIDI1MiwgMTU1LCA4MywgMSwgMjU0LCAKKyAgICAxNjIsIDI0MywgMTE2LCA2MSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgNzMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAKKyAgICAxMTYsIDE3NiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI5LCA3NywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjUxLCAzMywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE1LCAxNTYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxNSwgMTQ0LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDEzNSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjI4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyNDgsIDIyMSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTkwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjUsIAorICAgIDE0NywgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE4LCAyMjMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgCisgICAgODIsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTQsIAorICAgIDIwOSwgODMsIDEsIDIxNiwgMzksIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyMTYsIDM5LCAyNTQsIAorICAgIDE2MiwgMjQzLCAxMTYsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDIsIDI0OSwgCisgICAgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyOSwgNzcsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIAorICAgIDI0MywgMTE2LCAyNTEsIDMzLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjM1LCAxMTQsIDgzLCAxLCAKKyAgICAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTUsIDE1NiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAKKyAgICAxMTYsIDI0OCwgMTE5LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE3LCAxMDUsIDgzLCAxLCAyMzEsIAorICAgIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDgsIDI1LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjE4LCAyMjMsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNDksIDcyLCA4MywgMSwgMjMxLCAxODMsIAorICAgIDI1NCwgMTYyLCAyNDMsIDExNiwgMjEwLCA4MiwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgCisgICAgMTE2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxNjMsIDcwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAxNjMsIAorICAgIDE5MSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI1MiwgMTgsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAKKyAgICAxMTYsIDI0OCwgMjExLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjMyLCAyNTQsIDE4LCAxOSwgCisgICAgMjI2LCAxMDksIDE4LCAxOSwgMjUzLCAxNjcsIDE4LCAxOSwgMjU1LCAyOCwgMTgsIDE5LCAyMTIsIDI1LCAxOCwgMTksIAorICAgIDIyNCwgMjIxLCAxOCwgMTksIDIyNSwgMjI5LCAxOCwgMTksIDIyNCwgMTA1LCAxOCwgMTksIDIxNywgMzEsIDE4LCAxOSwgCisgICAgMjM0LCAxODksIDE4LCAxOSwgMjMzLCAxNzksIDE4LCAxOSwgMjMxLCAxMzIsIDE4LCAxOSwgMjI4LCAzNywgMTgsIDE5LCAKKyAgICAyMjksIDE4MSwgMTgsIDE5LCAyMzMsIDY4LCAxOCwgMTksIDIxOSwgMjIsIDE4LCAxOSwgMjIxLCAyMTEsIDE4LCAxOSwgCisgICAgMjE5LCAyMzIsIDE4LCAxOSwgMjIwLCA2NiwgMTgsIDE5LCAyMTksIDIwMSwgMTgsIDE5LCAyMTAsIDIyMCwgMTgsIDE5LCAKKyAgICAyMTEsIDUyLCAxOCwgMTksIDIyMywgMTM0LCAxOCwgMTksIDIyNywgMTcxLCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE3MSwgCisgICAgMTgsIDE5LCAyMjcsIDE3MCwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNzAsIDE4LCAxOSwgMjI3LCAxNjksIDE4LCAxOSwgCisgICAgMjI2LCAyMTYsIDIyNywgMTY5LCAxOCwgMTksIDIyNywgMTY4LCAxOCwgMTksIDIyNiwgMjE2LCAyMjcsIDE2OCwgMTgsIDE5LCAKKyAgICAyMjIsIDEwNSwgMTgsIDE5LCAyMjIsIDEwNCwgMTgsIDE5LCAyMjIsIDEwMywgMTgsIDE5LCAyMjIsIDEwMiwgMTgsIDE5LCAKKyAgICAyMjIsIDEwMSwgMTgsIDE5LCAyMjIsIDEwOSwgMTgsIDE5LCAyMjYsIDIxNiwgMjI2LCAxMDUsIDE4LCAxOSwgMjI2LCAyMTYsIAorICAgIDIxNywgMTUyLCAxOCwgMTksIDIyNiwgMjE2LCAyMzUsIDIzLCAxOCwgMTksIDIyNiwgMjE2LCAyNTEsIDY2LCAxOCwgMTksIAorICAgIDIyNiwgMjE2LCAxOTMsIDE4LCAxOSwgMjI2LCAyMTYsIDIzMCwgMjUsIDE4LCAxOSwgMjI2LCAyMTYsIDIyMiwgOTEsIDE4LCAKKyAgICAxOSwgMjI2LCAyMTYsIDIyMCwgMTA0LCAxOCwgMTksIDI0NSwgMjE5LCAyMTIsIDk4LCAxOCwgMTksIDIxMiwgNywgMjEyLCAKKyAgICA5OCwgMTgsIDE5LCA0MCwgNCwgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDIyMywgMTU3LCAyNDcsIDEyMCwgMTgsIDE5LCAyMjMsIAorICAgIDIyMywgMjIyLCAxMDYsIDE4LCAxOSwgMTU5LCAyMzIsIDEyNywgMTgsIDE5LCAxNTksIDIzMywgMTM0LCAxOCwgMTksIDIxNiwgCisgICAgMTI2LCAxOCwgMTksIDIxNiwgMTI4LCAxOCwgMTksIDIxNSwgMTM2LCAxOCwgMTksIDIxNSwgMTM4LCAxOCwgMTksIDIxNSwgCisgICAgMTQzLCAxOCwgMTksIDIxNiwgNDksIDE4LCAxOSwgMjE2LCA1MSwgMTgsIDE5LCAyMjEsIDIwOSwgMjE5LCAyMDYsIDE4LCAKKyAgICAxOSwgMjIxLCAyMDksIDIyMCwgMSwgMTgsIDE5LCAyMjEsIDIwOSwgMjQxLCA1MywgMTgsIDE5LCA3MiwgMjQyLCA3MywgMTgsIAorICAgIDE5LCA3MiwgMjQ4LCA1MiwgMjQzLCA1NSwgMTgsIDE5LCA3MiwgMjQzLCAxMzIsIDE4LCAxOSwgNzIsIDI0MiwgNzgsIDE4LCAKKyAgICAxOSwgMjIxLCAyMDksIDIzNSwgMzMsIDE4LCAxOSwgNzIsIDIzNSwgMzEsIDE4LCAxOSwgMjUyLCA2OCwgMjQ4LCA1MiwgCisgICAgMTU2LCAxOCwgMTksIDI1MiwgNjgsIDI0OCwgNTIsIDE1MywgMTgsIDE5LCA3MiwgMjQ4LCA0NywgMjIyLCA5MSwgMjMyLCAKKyAgICAyMjMsIDIxMywgMTIyLCAyMzMsIDEwLCAyMzIsIDIyMywgMSwgMTc2LCAyMzIsIDIyMywgMSwgMjM0LCAxMzIsIDIzMiwgCisgICAgMjIzLCAxLCAyNDMsIDEzNSwgMjMyLCAyMjMsIDEsIDI0MiwgMjQ5LCAyMzIsIDIyMywgMSwgMjI5LCA3NywgMjMyLCAyMjMsIAorICAgIDEsIDI1MSwgMzMsIDIzMiwgMjIzLCAxLCAyNTAsIDE1NywgMjMyLCAyMjMsIDEsIDIzNSwgMTQxLCAyMzIsIDIyMywgMSwgCisgICAgMjM1LCAxMTQsIDIzMiwgMjIzLCAxLCAyMTEsIDcxLCAyMzIsIDIyMywgMSwgMjE3LCAxMDUsIDIzMiwgMjIzLCAxLCAyMTYsIAorICAgIDIwOCwgMjMyLCAyMjMsIDEsIDI0OCwgMjIxLCAyMzIsIDIyMywgMSwgMjQ4LCAyNSwgMjMyLCAyMjMsIDEsIDE5NywgMjMyLCAKKyAgICAyMjMsIDEsIDE5MCwgMjMyLCAyMjMsIDEsIDIyNSwgMTQ3LCAyMzIsIDIyMywgMSwgMjUyLCAxOTEsIDIzMiwgMjIzLCAxLCAKKyAgICAyNTIsIDE4LCAyMzIsIDIyMywgMSwgMTg0LCAyMzIsIDIyMywgMSwgMTkxLCAyMzIsIDIyMywgMSwgMjA1LCAyMzIsIDIyMywgCisgICAgMSwgMjMzLCAxMzUsIDIzMiwgMjIzLCAxLCAyMTIsIDY1LCAyMzIsIDIyMywgMSwgMjIwLCAxMDIsIDIzMiwgMjIzLCAxLCAKKyAgICAyMTgsIDIyMywgMjMyLCAyMjMsIDEsIDIwNiwgMjMyLCAyMjMsIDEsIDE2MiwgMjMyLCAyMjMsIDI1LCA1LCA2MSwgMjMyLCAKKyAgICAyMjMsIDI1LCA1LCA3MywgMjMyLCAyMjMsIDI1LCA1LCA3MCwgMjMyLCAyMjMsIDI1LCA1LCAyNDUsIDIwOSwgMjMyLCAyMjMsIAorICAgIDI1LCA1LCAyNTQsIDIwMSwgMjMyLCAyMjMsIDI1LCA1LCAyMjYsIDE4MywgMjMyLCAyMjMsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMjMyLCAyMjMsIDI1LCA1LCA3NSwgMjMyLCAyMjMsIDI1LCA1LCA3NiwgMjMyLCAyMjMsIDIxOCwgNzMsIDEsIDE5MSwgMjMyLCAKKyAgICAyMjMsIDIxOCwgNzMsIDEsIDIwNSwgMjMyLCAyMjMsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDIzMiwgMjIzLCA0LCAxLCAxNzYsIAorICAgIDIzMiwgMjIzLCA0LCAxLCAyMjksIDc3LCAyMzIsIDIyMywgNCwgMSwgMjU0LCA3NSwgMjMyLCAyMjMsIDQsIDEsIDIxNywgCisgICAgMTA1LCAyMzIsIDIyMywgNCwgMSwgMTk3LCAyMzIsIDIyMywgNCwgMSwgMTkwLCAyMzIsIDIyMywgNCwgMSwgMTg0LCAyMzIsIAorICAgIDIyMywgNCwgMSwgMjA1LCAyMzIsIDIyMywgNCwgMSwgMjMzLCAxMzUsIDIzMiwgMjIzLCA1LCAyMzAsIDg5LCAyMzIsIDIyMywgCisgICAgNSwgMjM0LCAxNzEsIDIzMiwgMjIzLCA1LCAyMjIsIDMyLCAyMzIsIDIyMywgNSwgMjMyLCAxMjcsIDIzMiwgMjIzLCAyNDUsIAorICAgIDMxLCA3OCwgMjMyLCAyMjMsIDIyNCwgMTMsIDc4LCAyMzIsIDIyMywgMjEsIDIxMCwgODYsIDIzMiwgMjIzLCAyMSwgMTEwLCAKKyAgICAyMzIsIDIyMywgMjEsIDEwNSwgMjMyLCAyMjMsIDIxLCAxNTgsIDIzMiwgMjIzLCAyMSwgMTYxLCAyMzIsIDIyMywgMjEsIAorICAgIDE4OSwgMjMyLCAyMjMsIDIxLCAxOTQsIDIzMiwgMjIzLCAyMSwgMTk4LCAyMzIsIDIyMywgMjEsIDE5NSwgMjMyLCAyMjMsIAorICAgIDIxLCAyMDAsIDM5LCAyMzMsIDU5LCAxLCAxNzYsIDM5LCAyMzMsIDU5LCAxLCAyMTEsIDE2NSwgMzksIDIzMywgNTksIDEsIAorICAgIDIyOSwgNzcsIDM5LCAyMzMsIDU5LCAxLCAyMTUsIDE4MywgMzksIDIzMywgNTksIDEsIDIwNiwgMzksIDIzMywgNTksIDEsIAorICAgIDE5MSwgMzksIDIzMywgNTksIDEsIDIxNywgMTA1LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyMDgsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAyMzMsIDEzNSwgMzksIDIzMywgNTksIDEsIDE5MCwgMzksIDIzMywgNTksIDEsIDIyNSwgMTQ3LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMTg0LCAzOSwgMjMzLCA1OSwgMSwgMjQ0LCAxOTYsIDM5LCAyMzMsIDU5LCAxLCAyMTQsIDI3LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMTYyLCAzOSwgMjMzLCA1OSwgMSwgMjI0LCA4OCwgMzksIDIzMywgNTksIDEsIDIzNCwgMTMyLCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMjE1LCAxNzUsIDM5LCAyMzMsIDU5LCAxLCAxOTcsIDM5LCAyMzMsIDU5LCAxLCA2MSwgMzksIDIzMywgNTksIDEsIDczLCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgMjQ1LCAyMDksIDM5LCAyMzMsIDU5LCAxLCAyNDUsIDE5NywgMzksIDIzMywgNTksIDEsIDcwLCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgMjI2LCAxODMsIDM5LCAyMzMsIDU5LCAxLCA3NiwgMzksIDIzMywgNTksIDEsIDIxNCwgMjE0LCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgNzUsIDM5LCAyMzMsIDU5LCAxLCAyNTMsIDE5MCwgMzksIDIzMywgNTksIDEsIDI1NCwgMjAxLCAKKyAgICAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyOCwgMzksIDIzMywgNTksIDEsIDIxNiwgMjcsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIAorICAgIDI2LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAyNSwgMzksIDIzMywgNTksIDEsIDIxNiwgMjQsIDE2NiwgMzksIDE3MywgMSwgCisgICAgMTI1LCAyMjQsIDg4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI0LCA4OCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE3NiwgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI5LCA3NywgMTY2LCAzOSwgCisgICAgMTczLCAxLCAxMjEsIDE3NiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjI5LCA3NywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNSwgMTgzLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjA2LCAxNjYsIAorICAgIDM5LCAxNzMsIDEsIDEyNSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE1LCAxODMsIDE2NiwgMzksIDE3MywgMSwgCisgICAgMTIxLCAyMDYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTcsIDEwNSwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDIxNiwgMjA4LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTk3LCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyMSwgMjE3LCAxMDUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTYsIDIwOCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5NywgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyNSwgMTQ3LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTkwLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI1LCAxNDcsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNDQsIDE5NiwgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDEzNSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDI0NCwgMTk2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTM1LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTYyLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjQ4LCAyMjEsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAyNTIsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0OCwgCisgICAgMjIxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjUyLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDE4NCwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTM4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxODQsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTIxLCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxOCwgODIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKKyAgICAyMTgsIDgyLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNSwgMjE5LCAyMzksIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgNzMsIAorICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDIzNiwgMzMsIDE2NiwgMzksIDE3MywgMjUsIDUsIDcwLCAxNjYsIDM5LCAxNzMsIDI1LCAKKyAgICA1LCAyMTQsIDExOCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgNzUsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NCwgMjQzLCAxNjYsIAorICAgIDM5LCAxNzMsIDI1LCA1LCA3NiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI3LCAwLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAKKyAgICAyMTQsIDIxNCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjUzLCAxNjcsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgMjgsIAorICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMTExLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjYsIDEwOSwgMTY2LCAzOSwgCisgICAgMTczLCAyNSwgNSwgMjI2LCAyNTMsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMjEwLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAKKyAgICAyMzUsIDE1MiwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjE0LCAxMDUsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIyOSwgNzksIAorICAgIDE2NiwgMzksIDE3MywgMSwgNDAsIDIzMCwgMjUsIDE2NiwgMzksIDE3MywgMSwgNDAsIDE5MywgMTY2LCAzOSwgMTczLCAxLCAKKyAgICA0MCwgMjM1LCAyMywgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjQ5LCA2MCwgMTY2LCAzOSwgMTczLCAxLCA0MCwgMjUzLCAxNTgsIAorICAgIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE1OCwgMTY2LCAzOSwgMTczLCAxMzgsIDIzMSwgMTU3LCAxNjYsIDM5LCAxNzMsIAorICAgIDIxLCAyMTAsIDg2LCAxNjYsIDM5LCAxNzMsIDIxLCAxMTAsIDE2NiwgMzksIDE3MywgMjEsIDEwNSwgMTY2LCAzOSwgMTczLCAKKyAgICAyMSwgMTU4LCAxNjYsIDM5LCAxNzMsIDIxLCAxNjEsIDE2NiwgMzksIDE3MywgMjEsIDE4OSwgMTY2LCAzOSwgMTczLCAyMSwgCisgICAgMTk0LCAxNjYsIDM5LCAxNzMsIDIxLCAxOTgsIDE2NiwgMzksIDE3MywgMjEsIDE5NSwgMTY2LCAzOSwgMTczLCAyMSwgMjAwLCAKKyAgICAxNjYsIDM5LCAxNzMsIDg5LCAyMSwgMTEwLCAxNjYsIDM5LCAxNzMsIDUsIDIzMywgMTIwLCAxNjYsIDM5LCAxNzMsIDUsIAorICAgIDIzMywgMTE5LCA2OSwgMTYsIDIyNSwgMjM2LCA2OSwgMTYsIDIzMCwgNzIsIDIzNCwgMjUsIDY5LCAxNiwgMjI1LCA3MiwgCisgICAgMjM0LCAyNSwgNjksIDE2LCAyNTIsIDUwLCAyMzQsIDI1LCA2OSwgMTYsIDI1MSwgMTA0LCAyMzQsIDI1LCA2OSwgMTYsIAorICAgIDIyNCwgMjE2LCAyMzQsIDI1LCA2OSwgMTYsIDIyNCwgMjEwLCAyMzQsIDI1LCA2OSwgMTYsIDIyNCwgMjA4LCAyMzQsIDI1LCAKKyAgICA2OSwgMTYsIDIyNCwgMjE0LCAyMzQsIDI1LCA2OSwgMTYsIDIyNCwgMjEyLCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTczLCAKKyAgICAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTY5LCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTY4LCAyMzQsIDI1LCA2OSwgMTYsIAorICAgIDI0OCwgMTcxLCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTcwLCAyMzQsIDI1LCA2OSwgMTYsIDI0OCwgMTY3LCAyMzQsIDI1LCAKKyAgICA2OSwgMTYsIDIxNSwgODcsIDY5LCAxNiwgMjMwLCA3MiwgMjIyLCAyMDUsIDY5LCAxNiwgMjI1LCA3MiwgMjIyLCAyMDUsIAorICAgIDY5LCAxNiwgMjUyLCA1MCwgMjIyLCAyMDUsIDY5LCAxNiwgMjUxLCAxMDQsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjE2LCAKKyAgICAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxMCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMDgsIDIyMiwgMjA1LCA2OSwgMTYsIAorICAgIDIyNCwgMjE0LCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxMiwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNzMsIDIyMiwgCisgICAgMjA1LCA2OSwgMTYsIDI0OCwgMTY5LCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE2OCwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAKKyAgICAxNzEsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTcwLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE2NywgMjIyLCAyMDUsIAorICAgIDI1MSwgMTIxLCAxLCAxNzYsIDI1MSwgMTIxLCAxLCAyNDMsIDEzNSwgMjUxLCAxMjEsIDEsIDIyOSwgNzcsIDI1MSwgMTIxLCAKKyAgICAxLCAyMjksIDIyLCAyNTEsIDEyMSwgMSwgMTkwLCAyNTEsIDEyMSwgMSwgMjUyLCAxOTEsIDI1MSwgMTIxLCAxLCAxODQsIAorICAgIDI1MSwgMTIxLCAxLCAyMzAsIDEwNSwgMjUxLCAxMjEsIDEsIDIxNywgMTA1LCAyNTEsIDEyMSwgMSwgMjQ4LCAyMjEsIDI1MSwgCisgICAgMTIxLCAxLCAxOTcsIDI1MSwgMTIxLCAxLCAyMjgsIDM2LCAyNTEsIDEyMSwgMSwgMjUxLCAzMywgMjUxLCAxMjEsIDEsIAorICAgIDIzNSwgMTQxLCAyNTEsIDEyMSwgMSwgMjI3LCAxNjUsIDI1MSwgMTIxLCAxLCAyMjcsIDE1OCwgMjUxLCAxMjEsIDEsIDE5MSwgCisgICAgMjUxLCAxMjEsIDEsIDIwNSwgMjUxLCAxMjEsIDEsIDIzMywgMTM1LCAyNTEsIDEyMSwgMSwgMjE0LCAyNywgMjUxLCAxMjEsIAorICAgIDEsIDIwNiwgMjUxLCAxMjEsIDEsIDYxLCAyNTEsIDEyMSwgMSwgMTYyLCAyNTEsIDEyMSwgMjUsIDUsIDczLCAyNTEsIDEyMSwgCisgICAgMjUsIDUsIDcwLCAyNTEsIDEyMSwgMjUsIDUsIDc1LCAyNTEsIDEyMSwgMjUsIDUsIDc2LCAyNTEsIDEyMSwgMjUsIDUsIAorICAgIDI1NCwgMjQzLCAyNTEsIDEyMSwgMjI2LCA2MCwgMjUxLCAxMjEsIDI0NSwgMTQzLCA2NCwgMjIxLCAxNzIsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAxNzYsIDM5LCA4OSwgMSwgMTI1LCAyMzQsIDEzMiwgMzksIDg5LCAxLCAxMjUsIDIzMywgMTcxLCAzOSwgODksIDEsIAorICAgIDEyMSwgMTc2LCAzOSwgODksIDEsIDEyMSwgMjMzLCAxNzEsIDM5LCA4OSwgMSwgMTIxLCAyMzQsIDEzMiwgMzksIDg5LCAxLCAKKyAgICAyMjksIDc3LCAzOSwgODksIDEsIDEyNSwgMjUxLCAzMywgMzksIDg5LCAxLCAxMjUsIDI1MCwgMTU3LCAzOSwgODksIDEsIAorICAgIDEyMSwgMjUxLCAzMywgMzksIDg5LCAxLCAxMjEsIDIwNiwgMzksIDg5LCAxLCAxMjEsIDI1MCwgMTU3LCAzOSwgODksIDEsIAorICAgIDIyNywgMTY1LCAzOSwgODksIDEsIDIyMywgMTQwLCAzOSwgODksIDEsIDEyNSwgMjIzLCAxMzgsIDM5LCA4OSwgMSwgMjQ4LCAKKyAgICAyMjEsIDM5LCA4OSwgMSwgMTIxLCAyMjMsIDEzOCwgMzksIDg5LCAxLCAyMjMsIDE0OSwgMzksIDg5LCAxLCAxMjUsIDIxNywgCisgICAgMTA1LCAzOSwgODksIDEsIDEyNSwgMjE2LCAyMDgsIDM5LCA4OSwgMSwgMTIxLCAyMTcsIDEwNSwgMzksIDg5LCAxLCAxMjEsIAorICAgIDIxNiwgMjA4LCAzOSwgODksIDEsIDE5NywgMzksIDg5LCAxLCAyNTIsIDE5MSwgMzksIDg5LCAxLCAxMjUsIDE5MCwgMzksIAorICAgIDg5LCAxLCAxMjUsIDIyNSwgMTQ3LCAzOSwgODksIDEsIDEyNSwgMjQ0LCAxOTYsIDM5LCA4OSwgMSwgMTIxLCAxOTAsIDM5LCAKKyAgICA4OSwgMSwgMTIxLCAyNDQsIDE5NiwgMzksIDg5LCAxLCAxMjEsIDIyNSwgMTQ3LCAzOSwgODksIDEsIDE4NCwgMzksIDg5LCAKKyAgICAxLCAxMjEsIDE5MSwgMzksIDg5LCAxLCAxMjUsIDE5MSwgMzksIDg5LCAxLCAyMDUsIDM5LCA4OSwgMSwgMjIyLCAxMzcsIAorICAgIDM5LCA4OSwgMSwgMjMzLCAxMzUsIDM5LCA4OSwgMSwgMjMyLCA5MywgMzksIDg5LCAxLCAyMTIsIDY1LCAzOSwgODksIDEsIAorICAgIDEyNSwgMjIwLCAxMDIsIDM5LCA4OSwgMSwgMTI1LCAyMTgsIDIyMywgMzksIDg5LCAxLCAxMjUsIDIwNiwgMzksIDg5LCAxLCAKKyAgICAxMjUsIDE2MiwgMzksIDg5LCAxLCAyMzIsIDE4NCwgMzksIDg5LCAxLCA2MSwgMzksIDg5LCAxLCAxMjEsIDE2MiwgMzksIAorICAgIDg5LCAxLCA3MywgMzksIDg5LCAxLCAyMzYsIDMzLCAzOSwgODksIDEsIDcwLCAzOSwgODksIDEsIDIxNCwgMTE4LCAzOSwgCisgICAgODksIDEsIDI0NSwgMjA5LCAzOSwgODksIDEsIDIyNiwgMTgzLCAzOSwgODksIDEsIDIzMywgMTIwLCAzOSwgODksIDEsIAorICAgIDI0MiwgMTMyLCAyMDYsIDM5LCA4OSwgMTE2LCA1LCAxNDcsIDIwNSwgMzksIDg5LCAxMTYsIDUsIDE0NywgMjMzLCAxMzUsIAorICAgIDM5LCA4OSwgMTE2LCA1LCAyMzMsIDEzNiwgMjE3LCA1OCwgMjMzLCAxMDksIDM5LCA4OSwgNSwgMjMxLCAyMDQsIDIzNCwgCisgICAgMjMxLCAyMzMsIDEwOSwgMzksIDg5LCAxMTYsIDUsIDQwLCAyMjksIDc3LCAzOSwgODksIDExNiwgNSwgMTIxLCAxOTAsIDM5LCAKKyAgICA4OSwgMTE2LCA1LCAxMjUsIDIyMywgMTM5LCAxNzcsIDEyMSwgMTkwLCAzOSwgODksIDExNiwgNSwgMTg0LCAzOSwgODksIAorICAgIDExNiwgNSwgMjUyLCAxOTEsIDM5LCA4OSwgMTE2LCA1LCAyMDYsIDM5LCA4OSwgNSwgMjIyLCAxMCwgMzksIDg5LCAyNSwgNSwgCisgICAgNjEsIDM5LCA4OSwgMjUsIDUsIDIzMSwgMjA0LCAyMjEsIDIyNiwgMzksIDg5LCAyNSwgNSwgMjU1LCA3MywgMzksIDg5LCAKKyAgICAyNSwgNSwgMjE3LCA2NCwgMjU1LCA3MywgMzksIDg5LCAyNSwgNSwgNzMsIDM5LCA4OSwgMjUsIDUsIDIzNiwgMzMsIDM5LCAKKyAgICA4OSwgMjUsIDUsIDIxNCwgMjE0LCAzOSwgODksIDI1LCA1LCAyMTQsIDExNywgMzksIDg5LCAyNSwgNSwgNzAsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIxNCwgMTE4LCAzOSwgODksIDI1LCA1LCA3NiwgMzksIDg5LCAyNSwgNSwgMjI3LCAxLCA1MSwgMzksIDg5LCAKKyAgICAyNSwgNSwgMjI2LCAxMDksIDM5LCA4OSwgMjUsIDUsIDc1LCAzOSwgODksIDI1LCA1LCAyNTQsIDI0MywgMzksIDg5LCAyNSwgCisgICAgNSwgMjI2LCAxODMsIDM5LCA4OSwgMjUsIDUsIDI1NCwgMjAxLCAzOSwgODksIDI1LCA1LCA4OSwgMjU0LCAyMDEsIDM5LCAKKyAgICA4OSwgMjUsIDUsIDIyNywgMSwgNDgsIDM5LCA4OSwgNSwgMjMxLCAyMDQsIDIzNCwgMjMwLCAzOSwgODksIDUsIDIxNiwgMjksIAorICAgIDM5LCA4OSwgNSwgMjE2LCAyOCwgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIDI3LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgCisgICAgMjYsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAyNSwgMzksIDg5LCA1LCAyMjMsIDE4OCwgMjQyLCA0NSwgMzksIDg5LCA1LCAKKyAgICAyMzEsIDIwNCwgMjIxLCAyNTMsIDM5LCA4OSwgNSwgMjM0LCA5NiwgMjM0LCAyMTUsIDM5LCA4OSwgMzgsIDI0OSwgMTE1LCAKKyAgICAyNDcsIDEyMCwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMjEwLCA4NiwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTEwLCAzOSwgODksIAorICAgIDI0MSwgNDYsIDIxLCAxMDUsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE1OCwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTYxLCAzOSwgCisgICAgODksIDI0MSwgNDYsIDIxLCAxODksIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5NCwgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk4LCAKKyAgICAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTUsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDIwMCwgMzksIDg5LCA4OSwgMjEsIDIxMCwgCisgICAgODYsIDM5LCA4OSwgODksIDIxLCAxMTAsIDM5LCA4OSwgODksIDIxLCAxMDUsIDM5LCA4OSwgODksIDIxLCAxNTgsIDM5LCAKKyAgICA4OSwgODksIDIxLCAxNjEsIDM5LCA4OSwgODksIDIxLCAxODksIDM5LCA4OSwgODksIDIxLCAxOTQsIDM5LCA4OSwgODksIAorICAgIDIxLCAxOTgsIDM5LCA4OSwgODksIDIxLCAxOTUsIDM5LCA4OSwgODksIDIxLCAyMDAsIDM5LCA4OSwgNSwgMjExLCAyNDksIAorICAgIDM5LCA4OSwgNSwgMjExLCAyNDgsIDM5LCA4OSwgNSwgMjIxLCAyMTUsIDM5LCA4OSwgNSwgMjM0LCAxNjAsIDM5LCA4OSwgNSwgCisgICAgMjQwLCAyMzIsIDM5LCA4OSwgNSwgMjQ3LCAxMzQsIDM5LCA4OSwgNSwgMjIzLCA0OSwgMjIyLCAxODcsIDIyMywgMTQ5LCAKKyAgICAzOSwgODksIDUsIDIzMSwgMjA0LCAyMTEsIDcyLCAzOSwgODksIDUsIDIzNSwgNiwgMzksIDg5LCA1LCAyMzUsIDUsIDM5LCAKKyAgICA4OSwgNSwgMjIxLCAyMjIsIDM5LCA4OSwgNSwgMjIxLCAyMjEsIDM5LCA4OSwgNSwgMjQyLCA5LCAzOSwgODksIDUsIDI1MSwgCisgICAgMzAsIDEwMiwgNSwgMjE0LCAyMDAsIDIyMywgMzAsIDEwMiwgNSwgMjE0LCAyMDAsIDI1MSwgMSwgMTAyLCA1LCAyNTAsIAorICAgIDE4NiwgMTAyLCA1LCAyMTgsIDE1LCAxMDIsIDUsIDI1MSwgMjMzLCAxMDIsIDEsIDI1NCwgMTg0LCAxMDIsIDEsIDI1NCwgCisgICAgMTg1LCAyMTcsIDEzLCAxMDIsIDEsIDIzNiwgMjksIDEwMiwgMSwgMjM2LCAzMCwgMjE3LCAxMywgMTAyLCAxLCAyMTQsIAorICAgIDIwMywgMTAyLCAxLCAyMTQsIDIwNCwgMjE3LCAxMywgMTAyLCAxLCAyMjMsIDE4OCwgMjIzLCA3OSwgMTAyLCAxLCAyMjMsIAorICAgIDE4OCwgMjIzLCA4MCwgMjE3LCAxMywgMTAyLCAxLCAyMzMsIDEzNiwgMjMzLCAyNCwgMTAyLCAxLCAyMzMsIDEzNiwgMjMzLCAKKyAgICAyNSwgMjE3LCAxMywgMTAyLCAxLCAyNDUsIDE3OSwgMTAyLCAxLCAyNTQsIDE5OSwgMTAyLCAxLCAyMjYsIDIxMiwgMTAyLCAKKyAgICAxLCAyMjYsIDIxMywgMjE3LCAxMywgMTAyLCAxLCAxNzYsIDEwMiwgMSwgMjM1LCAxMywgMjMxLCAyMDcsIDEwMiwgMSwgCisgICAgMjQzLCAxMzUsIDEwMiwgMSwgMjQzLCAxMzYsIDI0MiwgMTYxLCAxMDIsIDEsIDIyOSwgNzcsIDEwMiwgMSwgMjUxLCAzMywgCisgICAgMTAyLCAxLCAyNTEsIDM0LCAyMzMsIDEyMywgMTAyLCAxLCAyMzUsIDE0MSwgMTAyLCAxLCAyMzUsIDE0MiwgMjM1LCAxMTgsIAorICAgIDEwMiwgMSwgMjI3LCAxNjUsIDEwMiwgMSwgMjE3LCAxMDYsIDIzMywgNzYsIDEwMiwgMSwgMjE3LCAxMDYsIDIzMCwgNjcsIAorICAgIDIzMSwgMjA3LCAxMDIsIDEsIDI0OCwgMjIyLCAyMzAsIDY3LCAyNTQsIDE0NSwgMTAyLCAxLCAyNDgsIDIyMiwgMjMwLCA2NywgCisgICAgMjMxLCAyMDcsIDEwMiwgMSwgMjI5LCAyMjksIDIyMywgMTUyLCAxMDIsIDEsIDIxNywgMTA1LCAxMDIsIDEsIDIxNywgMTA2LCAKKyAgICAyMTcsIDM1LCAxMDIsIDEsIDI0OCwgMjIxLCAxMDIsIDEsIDI0OCwgMjIyLCAyMzEsIDIyNSwgMTAyLCAxLCAxOTcsIDEwMiwgCisgICAgMSwgMTkwLCAxMDIsIDEsIDIyNiwgOTAsIDIzNCwgMjI2LCAxMDIsIDEsIDI1MiwgMTkxLCAxMDIsIDEsIDI1MiwgMTkyLCAKKyAgICAyMzQsIDE3MiwgMTAyLCAxLCAxODQsIDEwMiwgMSwgMTkxLCAxMDIsIDEsIDIwNSwgMTAyLCAxLCAyMzMsIDEzNSwgMTAyLCAKKyAgICAxLCAyMTIsIDY1LCAxMDIsIDEsIDIyMiwgMzQsIDIyMiwgMjAsIDEwMiwgMSwgMjIyLCAzNCwgMjIxLCAyMzMsIDEwMiwgMSwgCisgICAgMjA2LCAxMDIsIDEsIDE2MiwgMTAyLCA1LCAyMjMsIDcwLCAxMDIsIDI1LCA1LCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMTQsIAorICAgIDE5OSwgMTAyLCAyNSwgNSwgMjE0LCAyMDAsIDIyMSwgMjI5LCAxMDIsIDI1LCA1LCAyMTgsIDQ3LCAxMDIsIDI1LCA1LCAKKyAgICAyMTgsIDQ4LCAyMzYsIDIxLCAxMDIsIDI1LCA1LCAyMjMsIDE4OCwgMjIzLCA3OSwgMTAyLCAyNSwgNSwgMjIzLCAxODgsIAorICAgIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIzMywgMTM2LCAyMzMsIDI0LCAxMDIsIDI1LCA1LCAyMzMsIDEzNiwgCisgICAgMjMzLCAyNSwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE3LCA2NSwgMTAyLCAyNSwgNSwgMjE3LCA2NiwgMjIzLCA3OSwgMTAyLCAKKyAgICAyNSwgNSwgMjE3LCA2NiwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE3LCA2NiwgMjIzLCA4MCwgMjE3LCAxMywgMTAyLCAyNSwgCisgICAgNSwgMjI1LCAxODQsIDEwMiwgMjUsIDUsIDIyNSwgMTg1LCAyMTcsIDEzLCAxMDIsIDI1NCwgMjUwLCAyNTQsIDI0OSwgMTAyLCAKKyAgICAxLCAyMzQsIDI1MSwgMjIxLCAyMjgsIDEwMiwgMSwgMjM0LCAxMDIsIDIyMSwgMjI4LCAxMDIsIDEsIDIxNSwgMzQsIDIyMSwgCisgICAgMjI4LCAxMDIsIDEsIDI0NSwgMjAzLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTQsIDAsIDIyMSwgMjI4LCAxMDIsIDEsIDIxMCwgCisgICAgMTA3LCAyMjEsIDIyOCwgMTAyLCAxLCAyNTMsIDIwOSwgMjIxLCAyMjgsIDEwMiwgMjEsIDIxMCwgODYsIDEwMiwgMjEsIAorICAgIDExMCwgMTAyLCAyMSwgMTA1LCAxMDIsIDIxLCAxNTgsIDEwMiwgMjEsIDE2MSwgMTAyLCAyMSwgMTg5LCAxMDIsIDIxLCAKKyAgICAxOTQsIDEwMiwgMjEsIDE5OCwgMTAyLCAyMSwgMTk1LCAxMDIsIDIxLCAyMDAsIDEwMiwgMjI2LCAyOSwgMTAyLCAyMjYsIAorICAgIDU1LCAxMDIsIDIxMSwgMjM4LCAxMDIsIDI1MCwgMjM2LCAyMjYsIDQ4LCAxMDIsIDI1MCwgMjM2LCAyMTksIDE3MiwgMTAyLCAKKyAgICAyNTAsIDIzNiwgMjI2LCAyLCAxMDIsIDIyNiwgNTQsIDEwMiwgMjgsIDE2LCAyNDcsIDEyNiwgMTAyLCAyOCwgMTYsIDI0OCwgCisgICAgNTEsIDEwMiwgMjgsIDE2LCAyNDYsIDY0LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzYsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NywgCisgICAgMjE4LCAxNSwgMTAyLCAyOCwgMTYsIDI0NywgMjA1LCAxMDIsIDI4LCAxNiwgMjQ4LCAyMTQsIDEwMiwgMjgsIDE2LCAyNDgsIAorICAgIDMzLCAxMDIsIDI4LCAxNiwgMjQ4LCAxOTgsIDEwMiwgMjgsIDE2LCAyNDgsIDE3NywgMjQzLCA1NywgMTAyLCAyOCwgMTYsIAorICAgIDM4LCAyMTcsIDksIDEwMiwgMjgsIDE2LCAzOCwgMjQ1LCAxNDEsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNjcsIDEwMiwgCisgICAgMjgsIDE2LCAzOCwgMjM0LCAxNjksIDEwMiwgMjgsIDE2LCAzOCwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAKKyAgICAxNjgsIDIsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTcwLCAyLCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIAorICAgIDM4LCAyNTIsIDM3LCAxMDIsIDI4LCAxNiwgMzgsIDI0MiwgMTY1LCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDIwNCwgMjQ2LCAKKyAgICA3NCwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyMDQsIDI0OCwgMjEyLCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDI1MCwgMCwgCisgICAgMjE1LCAxMTEsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjUwLCAwLCAyMTcsIDczLCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgCisgICAgMjA0LCAyMjYsIDQzLCAxMDIsIDI4LCAxNiwgMjMzLCA0NCwgMjA0LCAyMjQsIDEzOSwgMTAyLCAyOCwgMTYsIDIzMywgNDQsIAorICAgIDI1MCwgMCwgMjI1LCAzOCwgMTAyLCAyOCwgMTYsIDIzMywgNDQsIDI1MCwgMCwgMjI1LCAyNiwgMTAyLCAyOCwgMTYsIDIzMywgCisgICAgNDQsIDIwNCwgMjI1LCA2MSwgMjA3LCA1LCAyMjYsIDI2LCAyMDcsIDUsIDIyNiwgMzksIDIwNywgNSwgMjI2LCAzNSwgMjA3LCAKKyAgICAxLCA2MSwgMjA3LCAxLCA3MywgMjA3LCAxLCA3MCwgMjA3LCAxLCAyNTQsIDI0MywgMjA3LCAxLCA3NiwgMjA3LCAxLCA3NSwgCisgICAgMjA3LCAxLCAyNDUsIDU1LCAyMDcsIDEsIDE3NiwgMjA3LCAxLCAyMjQsIDg4LCAyMDcsIDEsIDI0MywgMTM1LCAyMDcsIDEsIAorICAgIDIyOSwgNzcsIDIwNywgMSwgMjUxLCAzMywgMjA3LCAxLCAyMzUsIDE0MSwgMjA3LCAxLCAyMTAsIDExNiwgMjA3LCAxLCAKKyAgICAyMjcsIDE2NSwgMjA3LCAxLCAyMTcsIDEwNSwgMjA3LCAxLCAyNDgsIDIyMSwgMjA3LCAxLCAxOTcsIDIwNywgMSwgMTkwLCAKKyAgICAyMDcsIDEsIDI0NCwgMTk2LCAyMDcsIDEsIDIxNCwgMjcsIDIwNywgMSwgMjUyLCAxOTEsIDIwNywgMSwgMTg0LCAyMDcsIDEsIAorICAgIDE5MSwgMjA3LCAxLCAyMDUsIDIwNywgMSwgMjMzLCAxMzUsIDIwNywgMSwgMjEyLCA2NSwgMjA3LCAxLCAyMDYsIDIwNywgMSwgCisgICAgMjExLCAxNjUsIDIwNywgMSwgMTYyLCAyMDcsIDExNiwgNSwgMjI2LCA1MiwgMjA3LCAxMTYsIDUsIDIyNiwgMjgsIDIwNywgCisgICAgMTE2LCA1LCAyMjYsIDI1LCAyMDcsIDI1LCA1LCAyMjYsIDQyLCAyMDcsIDI1LCA1LCAyMjYsIDI0LCAyMDcsIDI1LCA1LCAKKyAgICAyMjYsIDQ2LCAyMDcsIDI1LCA1LCAyMjYsIDM0LCAyMDcsIDI1LCA1LCAyMjYsIDUzLCAyMDcsIDI1LCA1LCAyMjYsIDQ0LCAKKyAgICAyMDcsIDUsIDIyNiwgNTYsIDIwNywgNSwgMjEzLCAxNTIsIDIwNywgMTE2LCA1LCAyMjUsIDI0OCwgMTg0LCAyMDcsIDExNiwgCisgICAgNSwgMjI1LCAyNDgsIDIxMiwgNjUsIDIwNywgMSwgMjM0LCAxMzIsIDIwNywgMSwgMjE3LCAyMzEsIDIwNywgMjEsIDIxMCwgCisgICAgODYsIDIwNywgMjEsIDExMCwgMjA3LCAyMSwgMTA1LCAyMDcsIDIxLCAxNTgsIDIwNywgMjEsIDE2MSwgMjA3LCAyMSwgMTg5LCAKKyAgICAyMDcsIDIxLCAxOTQsIDIwNywgMjEsIDE5OCwgMjA3LCAyMSwgMTk1LCAyMDcsIDIxLCAyMDAsIDIwNywgMjUzLCAxNzUsIAorICAgIDIwNywgMSwgMjIzLCA1MiwgMjA3LCAxLCAyMzMsIDcsIDIwNywgMSwgMjUyLCAxOCwgMjA3LCAxLCA0MCwgMjM1LCAyMywgCisgICAgMjA3LCAxLCA0MCwgMTkzLCAyNTIsIDEyMCwgMSwgNjEsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgNjEsIDI1MiwgMTIwLCAxLCAKKyAgICAxNjIsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMTYyLCAyNTIsIDEyMCwgMSwgMjMxLCAxODEsIDE2MiwgMjUyLCAxMjAsIDEsIAorICAgIDI1MiwgMTkxLCAyNTIsIDEyMCwgMSwgMjM0LCAyMTIsIDI1MiwgMTkxLCAyNTIsIDEyMCwgMSwgMTkwLCAyNTIsIDEyMCwgMSwgCisgICAgMjE5LCAxNjQsIDE5MCwgMjUyLCAxMjAsIDEsIDE5NywgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAxOTcsIDI1MiwgMTIwLCAxLCAKKyAgICAyMTIsIDY1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDIxMiwgNjUsIDI1MiwgMTIwLCAxLCAyMjYsIDY3LCAyMTIsIDY1LCAKKyAgICAyNTIsIDEyMCwgMSwgMjQzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMjQzLCAxMzUsIDI1MiwgMTIwLCAxLCAyMzUsIAorICAgIDE0MSwgMjUyLCAxMjAsIDEsIDI0OCwgMjIxLCAyNTIsIDEyMCwgMSwgMjA1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDIwNSwgCisgICAgMjUyLCAxMjAsIDEsIDE4NCwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAxODQsIDI1MiwgMTIwLCAxLCAyMTksIDI2LCAyMTcsIAorICAgIDEwNSwgMjUyLCAxMjAsIDEsIDIyOCwgNTUsIDIxNywgMTA1LCAyNTIsIDEyMCwgMSwgMjA2LCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDIwNiwgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAyMDYsIDI1MiwgMTIwLCAxLCAxOTEsIDI1MiwgMTIwLCAxLCAyMTksIAorICAgIDE2NCwgMTkxLCAyNTIsIDEyMCwgMSwgMjI5LCA3NywgMjUyLCAxMjAsIDEsIDIzMywgMTM1LCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDIzMywgMTM1LCAyNTIsIDEyMCwgMSwgMjI3LCAxNjUsIDI1MiwgMTIwLCAxLCAyNTEsIDMzLCAyNTIsIDEyMCwgMSwgCisgICAgMjI5LCAxNDgsIDI1MiwgMTIwLCAxLCAyMzEsIDEyNCwgMjUyLCAxMjAsIDEsIDczLCAyNTIsIDEyMCwgMSwgNzAsIDI1MiwgCisgICAgMTIwLCA1LCAyMTYsIDMzLCAyNTIsIDEyMCwgMjUsIDUsIDc1LCAyNTIsIDEyMCwgMjUsIDUsIDIyNiwgNjcsIDc1LCAyNTIsIAorICAgIDEyMCwgMjUsIDUsIDI0NSwgMjA5LCAyNTIsIDEyMCwgMjUsIDUsIDczLCAyNTIsIDEyMCwgMjUsIDUsIDIzNCwgMjEyLCA3MywgCisgICAgMjUyLCAxMjAsIDI1LCA1LCA3NiwgMjUyLCAxMjAsIDI1LCA1LCAyMzQsIDIxMiwgNzYsIDI1MiwgMTIwLCAyNSwgNSwgNzAsIAorICAgIDI1MiwgMTIwLCAyNSwgNSwgMTA0LCAzMSwgMjE5LCAxNjQsIDIwNiwgMjUyLCAxMjAsIDExNiwgNSwgMjI5LCA3OSwgMjUyLCAKKyAgICAxMjAsIDExNiwgNSwgMjQyLCA2MCwgMjUyLCAxMjAsIDIyNiwgMzcsIDI1MiwgMTIwLCAyMjYsIDMzLCAyNTIsIDEyMCwgMTYsIAorICAgIDI1MSwgMjQxLCAyMjksIDIyOSwgMjMxLCAzNywgMjUyLCAxMjAsIDE2LCAyNTEsIDI0MSwgMjI1LCA2NCwgMjUyLCAxMjAsIAorICAgIDE2LCAyNTEsIDI0MSwgMjM1LCA0OCwgMjUyLCAxMjAsIDE2LCAyNTEsIDI0MSwgMjI2LCAzNywgMTk2LCAxLCAxNzYsIDE5NiwgCisgICAgMSwgMjM0LCAzOSwgMTk2LCAxLCAyMzQsIDEzMiwgMTk2LCAxLCAyNDMsIDEzNSwgMTk2LCAxLCAyNDIsIDE4NiwgMTk2LCAxLCAKKyAgICAyMjksIDc3LCAxOTYsIDEsIDI1MSwgMzMsIDE5NiwgMSwgMjUwLCAxNTcsIDE5NiwgMSwgMjM1LCAxNDEsIDE5NiwgMSwgCisgICAgMjI3LCAxNjUsIDE5NiwgMSwgMjE3LCAxMDUsIDE5NiwgMSwgMjE2LCAyMDgsIDE5NiwgMSwgMjQ4LCAyMjEsIDE5NiwgMSwgCisgICAgMTk3LCAxOTYsIDEsIDE5MCwgMTk2LCAxLCAyMjUsIDQyLCAxOTYsIDEsIDIyNSwgMTQ3LCAxOTYsIDEsIDI0NCwgMTk2LCAKKyAgICAxOTYsIDEsIDI0NCwgNzUsIDE5NiwgMSwgMjUyLCAxOTEsIDE5NiwgMSwgMjUxLCAyMjIsIDE5NiwgMSwgMTg0LCAxOTYsIDEsIAorICAgIDIzMCwgMTY4LCAxOTYsIDEsIDIxNSwgMTgzLCAxOTYsIDEsIDIxNSwgMTc1LCAxOTYsIDEsIDI0NiwgMzgsIDE5NiwgMSwgCisgICAgMTkxLCAxOTYsIDEsIDIwNSwgMTk2LCAxLCAyMzMsIDEzNSwgMTk2LCAxLCAxNjIsIDE5NiwgMSwgMjQxLCAxNTMsIDE5NiwgCisgICAgMSwgMjE0LCAyNywgMTk2LCAxLCAyMDYsIDE5NiwgMSwgMjIwLCAxMDIsIDE5NiwgMSwgMjEyLCA2NSwgMTk2LCAxLCA2MSwgCisgICAgMTk2LCAyMTgsIDczLCAxLCAxOTEsIDE5NiwgMjE4LCA3MywgMSwgMjA1LCAxOTYsIDI1LCA1LCAyNTUsIDczLCAxOTYsIDI1LCAKKyAgICA1LCA3MywgMTk2LCAyNSwgNSwgNzYsIDE5NiwgMjUsIDUsIDIyNiwgMTgzLCAxOTYsIDI1LCA1LCA3MCwgMTk2LCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDE5NiwgMjUsIDUsIDc1LCAxOTYsIDExNiwgNSwgMjM1LCAyMywgMTk2LCAxMTYsIDUsIDE5MywgMTk2LCAKKyAgICAxMTYsIDUsIDE1NiwgMTk2LCAxMTYsIDUsIDIzMCwgMjUsIDE5NiwgMTE2LCA1LCAyMjYsIDEwNSwgMTk2LCAxMTYsIDUsIAorICAgIDE1MywgMTk2LCAxMTYsIDUsIDIxNywgMTUyLCAxOTYsIDExNiwgNSwgMjI3LCAxNDIsIDE5NiwgMTE2LCA1LCAyMzQsIDIzMCwgCisgICAgMTk2LCA1LCAyMjMsIDE1MCwgMTk2LCA1LCAyMjcsIDIwNSwgMTk2LCAyMjQsIDE0MSwgMjE3LCAxMDMsIDE5NiwgMjI0LCAKKyAgICAxNDEsIDIyNywgMTUyLCAyMTYsIDEyMCwgMjE3LCAxMDMsIDE5NiwgMjI0LCAxNDEsIDI1MCwgMTY0LCAxOTYsIDIyNCwgCisgICAgMTQxLCAyMTUsIDE3MCwgMjUwLCAxNjQsIDE5NiwgMjI0LCAxNDEsIDIxNSwgMTY5LCAxOTYsIDIxLCAyMTAsIDg2LCAxOTYsIAorICAgIDIxLCAxMTAsIDE5NiwgMjEsIDEwNSwgMTk2LCAyMSwgMTU4LCAxOTYsIDIxLCAxNjEsIDE5NiwgMjEsIDE4OSwgMTk2LCAyMSwgCisgICAgMTk0LCAxOTYsIDIxLCAxOTgsIDE5NiwgMjEsIDE5NSwgMTk2LCAyMSwgMjAwLCAxOTYsIDEsIDIxNSwgMTU2LCAxOTYsIDEsIAorICAgIDIxNSwgMTQ0LCAxOTYsIDEsIDI0OCwgMTM1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAyMTAsIDg2LCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDIxLCAxMTAsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDEwNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgCisgICAgMTU4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxNjEsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDE4OSwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAyMSwgMTk0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxOTgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIAorICAgIDE5NSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMjAwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMywgMTM1LCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDEsIDI1MywgMjA2LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NCwgMjE2LCAyMjYsIDIxMCwgCisgICAgMjUwLCAxMDMsIDEsIDI1NCwgMTE1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NCwgMTc4LCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDEsIDIzMywgMTM0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NSwgMzUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgCisgICAgMjU1LCAzNiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDM0LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI1NSwgMjksIAorICAgIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCAyNDEsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjM1LCAxNzEsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMSwgMjM2LCAzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzUsIDE5MCwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyMzUsIDE3OSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzIsIDk4LCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDEsIDIxNCwgMjIxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIxNCwgMjE5LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIAorICAgIDIxNCwgMTY4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIxNCwgMTExLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMywgCisgICAgNTgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCAxMDgsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCAyMTIsIAorICAgIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCAxNTAsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjQ1LCA4NiwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAxLCAyMzIsIDE1NiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMjYsIDEzNywgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyMjYsIDI1MiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMjYsIDEyNSwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMjYsIDIyMiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMzAsIDEwMywgMjE1LCAxMjEsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMjQzLCAxMzAsIDIxNSwgMTIyLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIzMCwgMTAxLCAyMTUsIDEyMiwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAyMjMsIDkyLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIyNSwgMTQ1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIAorICAgIDI1NCwgMjA4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIyNCwgMTQxLCAyMzAsIDk4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIyNCwgCisgICAgMTQxLCA1MiwgMjMwLCA5OCwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIDIxOCwgOCwgMjA3LCAyMjQsIDE0MSwgMjUxLCAKKyAgICAyNDEsIDIyNiwgMzgsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMjQsIDEyOSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAyNDEsIAorICAgIDI1MSwgMTksIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMzMsIDgsIDIyMSwgMjI1LCAyMDcsIDIyNCwgMTQxLCAyNTEsIAorICAgIDI0MSwgMjM1LCAxMywgMjIxLCAyMjUsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyNDgsIDIyMiwgMjIxLCAyMjUsIDIwNywgCisgICAgMjI0LCAxNDEsIDI1MSwgMjQxLCAyNTIsIDE5MiwgMjIxLCAyMjUsIDIxMywgMjUyLCAxMzgsIDIzNCwgMjEwLCAyMTMsIAorICAgIDI1MiwgMTM4LCAyMjAsIDc3LCAyMTMsIDI1MiwgMTM4LCAyMjQsIDE5OCwgMjEzLCAyNTIsIDUsIDIyOCwgMjA5LCAyMTMsIAorICAgIDI1MiwgNSwgMjExLCA4MCwgMjMwLCAyMjIsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjU0LCAyMTMsIDIzNSwgCisgICAgMjQzLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDIzNSwgMjQzLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIAorICAgIDIxMSwgODAsIDIzNCwgMTk4LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDIsIDUxLCAyMTMsIDI1MiwgCisgICAgMTM4LCAyMTEsIDgwLCAyMzQsIDE5OCwgMjM1LCAyNDMsIDIxOCwgMSwgMjIxLCAxOTcsIDIxMywgMjUyLCAxMzgsIDUyLCAKKyAgICAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxNSwgMjExLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIzNCwgMTk4LCAyNTQsIAorICAgIDc3LCAyMTMsIDI1MiwgMTM4LCA1OSwgNTEsIDIxMywgMjUyLCAxMzgsIDExMywgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgCisgICAgMTM0LCAxNzAsIDUxLCAyMTMsIDI1MiwgMTM4LCAyMjIsIDI0MCwgMjM0LCAyMDksIDIzNSwgMjQzLCAyMTgsIDAsIDIxMywgCisgICAgMjUyLCAxMzgsIDI1MywgMjA0LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxOCwgMCwgMjEzLCAKKyAgICAyNTIsIDUsIDIxMywgMTQ4LCAyMTQsIDIxNiwgMjEzLCAyNTIsIDUsIDIyMywgNDksIDIxMywgMTQ4LCAyMTQsIDIxNiwgCisgICAgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyNTQsIDc3LCAyMTMsIDI1MiwgNSwgMjIzLCA0OSwgMjEzLCAxNDgsIDI1NCwgNzcsIAorICAgIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjE0LCAyMTcsIDIsIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCAKKyAgICA3OCwgMiwgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDI1NCwgNzYsIDI1NCwgOTEsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyNTIsIAorICAgIDE2NiwgMjEzLCAyNTIsIDUsIDI1NCwgNzYsIDIxNCwgMjAsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyMTQsIDIxLCAyLCAKKyAgICAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjE2LCA2OCwgMjEzLCAyNTIsIDUsIDI0MSwgMTkxLCAxOTksIDI1NCwgNzUsIDIxMywgCisgICAgMjUyLCA1LCAxOTksIDI1NCwgNzUsIDIxMywgMjUyLCA1LCAyMjIsIDE0MiwgMTk5LCAyNTQsIDc1LCAyMTMsIDI1MiwgNSwgCisgICAgMjU0LCA3NiwgMjE0LCAyMjMsIDIzMCwgOTAsIDIxMywgMjUyLCA1LCAyNTQsIDIwLCAyMTMsIDI1MiwgNSwgMjIyLCAxODcsIAorICAgIDI1NCwgMjAsIDIxMywgMjUyLCAxMzgsIDI1MSwgMiwgNDgsIDIxMywgMjUyLCA1LCAyMzUsIDEwMiwgMjEzLCAyNTIsIDUsIAorICAgIDIxNCwgMTYxLCA3LCAxLCA0LCA2LCA2MSwgNywgMSwgNCwgNiwgMjU0LCAyNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDI1NCwgCisgICAgMjQzLCA3LCAxLCA0LCA2LCAyNTIsIDEzNCwgMjUzLCAxNTgsIDcsIDEsIDQsIDYsIDI1MSwgNjYsIDcsIDEsIDQsIDYsIAorICAgIDI0OSwgNjAsIDcsIDEsIDQsIDYsIDI0NSwgNTksIDcsIDEsIDQsIDYsIDc1LCA3LCA0LCAxLCAyMTUsIDk0LCAyMDQsIDc1LCAKKyAgICA3LCA0LCAxLCAyMTUsIDk0LCA3MywgNywgMSwgNCwgNiwgMjM1LCAxNDQsIDcsIDEsIDQsIDYsIDIzNSwgMjMsIDcsIDEsIDQsIAorICAgIDYsIDIzMywgMTQ5LCAyLCA5MSwgNywgMSwgNCwgNiwgMTkzLCA3LCAxLCA0LCA2LCAyMjMsIDQ5LCAyMzAsIDI1LCA3LCAxLCAKKyAgICA0LCA2LCA3NiwgNywgMSwgNCwgNiwgMjA0LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIDc2LCA3LCA0LCAxLCAyMTksIDE4NywgCisgICAgMjA0LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIDE0NCwgMiwgOTEsIDcsIDQsIDEsIDIxNSwgOTQsIDIyNiwgMjM0LCA3LCAxLCAKKyAgICA0LCA2LCAyMjYsIDEzNCwgNywgNCwgMSwgMjE2LCAxNCwgMTYzLCA3NiwgNywgNCwgMSwgMjUxLCAxNzUsIDE2MywgNzYsIDcsIAorICAgIDEsIDQsIDYsIDIyNiwgMTA1LCA3LCAxLCA0LCA2LCAyMjMsIDQ5LCAxNTMsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDE1MywgNywgCisgICAgMSwgNCwgNiwgMjE3LCAxNTIsIDcsIDEsIDQsIDYsIDcwLCA3LCA0LCAxLCAyMTksIDE4NywgNzAsIDcsIDQsIDEsIDIxOSwgCisgICAgMTg3LCAyNDgsIDAsIDcwLCA3LCA0LCAxLCAyMTksIDE4NywgMjE1LCA5NCwgMTkzLCA3LCAxLCA0LCA2LCAyMTQsIDEwNSwgCisgICAgNywgMSwgNCwgNiwgMjEyLCA5OCwgNywgMSwgNCwgNiwgMjEwLCAxNTksIDcsIDEsIDQsIDYsIDI0NSwgOCwgNywgMSwgMjEzLCAKKyAgICAxMzUsIDIzMywgODIsIDIxOCwgMjUwLCA3LCAxLCAyNTQsIDE5NiwgMjYsIDEsIDQsIDYsIDI0MywgMTA3LCAyNiwgMSwgNCwgCisgICAgNiwgMjMzLCA5OCwgMjYsIDEsIDQsIDYsIDIyNSwgMTA4LCAyNiwgMSwgNCwgNiwgMjIzLCAzNywgMjYsIDEsIDQsIDYsIAorICAgIDIyNCwgMTYxLCAzMywgMSwgNCwgNiwgMjQ1LCAxNzQsIDU4LCAxLCA2LCA2MSwgNTgsIDEsIDYsIDI1NCwgMjQzLCA1OCwgMSwgCisgICAgNiwgMjUzLCAxNTgsIDU4LCAxLCA2LCAyNTIsIDEzNCwgMjUzLCAxNTgsIDU4LCAxLCA2LCAyNDksIDYwLCA1OCwgMSwgNiwgCisgICAgNzUsIDU4LCAxLCA2LCAyMjMsIDQ5LCA3NSwgNTgsIDEsIDYsIDI0MywgMjAyLCA1OCwgMSwgNiwgMjQyLCA2MCwgNTgsIDEsIAorICAgIDYsIDczLCA1OCwgMSwgNiwgMjM1LCAxNDQsIDU4LCAxLCA2LCAyMzUsIDIzLCA1OCwgMSwgNiwgMTU2LCA1OCwgMSwgNiwgCisgICAgMTkzLCA1OCwgMSwgNiwgMjMwLCAyNSwgNTgsIDEsIDYsIDIyMywgNDksIDIzMCwgMjUsIDU4LCAxLCA2LCA3NiwgNTgsIDEsIAorICAgIDYsIDIyNiwgMTM0LCA1OCwgMSwgNiwgMjI2LCAxMDUsIDU4LCAxLCA2LCAxNTMsIDU4LCAxLCA2LCAyMTcsIDE1MiwgNTgsIAorICAgIDEsIDYsIDcwLCA1OCwgMSwgNiwgMjEyLCA5OCwgNTgsIDEsIDQsIDYxLCA1OCwgMSwgNCwgMjE1LCA5NCwgNjEsIDU4LCAxLCAKKyAgICA0LCAyNTQsIDE0MywgNTgsIDEsIDQsIDIxNSwgOTQsIDI1NCwgMjQzLCA1OCwgMSwgNCwgMjUzLCAxNTgsIDU4LCAxLCA0LCAKKyAgICAyNDksIDYwLCA1OCwgMSwgNCwgNzUsIDU4LCAxLCA0LCAyMjEsIDE5NSwgNTgsIDEsIDQsIDIwNCwgNzUsIDU4LCAxLCA0LCAKKyAgICAyMTUsIDk0LCAyMDQsIDc1LCA1OCwgMSwgNCwgMjQzLCAyMDIsIDU4LCAxLCA0LCAyMTUsIDk0LCA3MywgNTgsIDEsIDQsIAorICAgIDIzNSwgMjMsIDU4LCAxLCA0LCAxOTMsIDU4LCAxLCA0LCAyNDUsIDEzOCwgNTgsIDEsIDQsIDc2LCA1OCwgMSwgNCwgMjA0LCAKKyAgICA3NiwgNTgsIDEsIDQsIDIxNiwgMTQsIDE2MywgNzYsIDU4LCAxLCA0LCAyNTEsIDE3NSwgMTYzLCA3NiwgNTgsIDEsIDQsIAorICAgIDIyNiwgMTA1LCA1OCwgMSwgNCwgMjE3LCAxNTIsIDU4LCAxLCA0LCA3MCwgNTgsIDEsIDQsIDIxOSwgMTg3LCA3MCwgNTgsIAorICAgIDEsIDQsIDIxNSwgOTQsIDE5MywgNTgsIDEsIDQsIDIxNCwgMTA1LCA1OCwgMSwgNCwgMjU0LCAxOTYsIDU4LCAxLCA0LCAKKyAgICAyNTIsIDI2LCA1OCwgMSwgNCwgMjYsIDI0MywgMTA3LCA1OCwgMSwgNCwgMjQ4LCA1NCwgNTgsIDEsIDQsIDI2LCAyMjUsIAorICAgIDEzMywgNTgsIDEsIDQsIDI1MCwgMTEwLCA3LCAyMTgsIDY1LCA0LCAxLCA3MywgNywgMjE4LCA2NSwgNCwgMSwgMTUzLCA3LCAKKyAgICAyMTgsIDY1LCA0LCAxLCA3MCwgNywgMjE4LCA2NSwgNCwgMSwgMjE0LCAxMDUsIDI2LCAyMTgsIDY1LCA0LCAxLCAyNTIsIAorICAgIDI2LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjQzLCAxMDcsIDI2LCAyMTgsIDY1LCA0LCAxLCAyMjMsIDM3LCAyNiwgMjE4LCA2NSwgCisgICAgNCwgMSwgMjI1LCAxMzMsIDI2LCAyMTgsIDY1LCA0LCAxLCAyNTAsIDExMCwgNywgNCwgMSwgMjE0LCAyMTQsIDcsIDQsIDEsIAorICAgIDU3LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyNDUsIAorICAgIDcsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMCwgCisgICAgMjYsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjMsIAorICAgIDIyNCwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI0NCwgODgsIDIyLCAyMzAsIDIyNCwgMTgyLCAKKyAgICA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjMwLCAyMjQsIDE4MiwgCisgICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MywgMjAyLCA1OCwgMSwgCisgICAgMzMsIDI0NSwgMTUwLCA3LCA0LCAxLCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDQsIDEsIDIxNiwgMjExLCAyLCAyMTgsIAorICAgIDEwNywgNywgNCwgNiwgMSwgMjQwLCAxNTQsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE4NiwgMiwgOTEsIDcsIDQsIDEsIDIyNiwgCisgICAgMTA2LCAyLCA5MSwgNywgNCwgNiwgMSwgMTA0LCAyLCA5MSwgNywgNCwgMSwgMjE0LCAxNTgsIDIsIDkxLCA3LCA0LCAxLCAKKyAgICA1NywgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0NSwgNywgCisgICAgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjExLCAxNzksIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMTE1LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI0MSwgNTIsIDIyLCAyMTcsIDc3LCA3LCA0LCAxLCAxNjAsIDIsIDIyMywgCisgICAgNTUsIDEwMywgNywgNCwgMSwgMjA0LCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjIzLCA0OSwgMjA0LCAxNjAsIAorICAgIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjIxLCAxOTYsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjQwLCAxNTQsIAorICAgIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjA0LCAxNDQsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjQ1LCA3NiwgMiwgCisgICAgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAxMDQsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjQ1LCA5LCAyLCAyMjMsIDU1LCAKKyAgICAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDE0MywgNTgsIDEsIDQsIDI1MSwgNjYsIDU4LCAxLCA0LCAyNTEsIDY3LCAKKyAgICAyLCAyNDksIDEwMCwgNTgsIDEsIDQsIDI0NSwgNTksIDU4LCAxLCA0LCAyMjMsIDQ5LCAyMDQsIDc1LCA1OCwgMSwgNCwgCisgICAgMjQ1LCA2LCA1OCwgMSwgNCwgMjQ3LCAxMTksIDIzNSwgMTQ1LCAyLCA5MSwgNTgsIDEsIDQsIDExOSwgMjQzLCAyMDIsIDU4LCAKKyAgICAxLCA0LCAyMTUsIDk0LCAyNDIsIDYwLCA1OCwgMSwgNCwgMjQwLCAxNTQsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxODUsIAorICAgIDU4LCAxLCA0LCA2LCA3MywgNTgsIDEsIDQsIDYsIDI0MCwgMTU0LCAyLCA5MSwgNTgsIDEsIDQsIDIzNSwgMTQ1LCAyLCAKKyAgICAyNDksIDEyNywgNTgsIDEsIDQsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCAyMzMsIDE0OSwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA1OCwgMSwgNCwgNiwgMTU2LCA1OCwgMSwgNCwgMjMyLCA1MCwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCAKKyAgICA5NCwgMjMyLCA1MCwgMiwgMTk5LCAyMzMsIDM2LCA1OCwgMSwgNCwgMjMwLCAyNiwgMiwgNDMsIDEwMywgNTgsIDEsIDQsIAorICAgIDIzMCwgMjYsIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDYsIDIzMCwgMjUsIDU4LCAxLCA0LCAyNTIsIDEzNCwgNzYsIAorICAgIDU4LCAxLCA0LCAyMjUsIDEzMywgNTgsIDEsIDQsIDIyMiwgOTIsIDIsIDEwMywgNTgsIDEsIDQsIDI0NSwgNzUsIDU4LCAxLCAKKyAgICA0LCAyMTcsIDE1MywgMiwgMjI2LCA2NiwgMTAzLCA1OCwgMSwgNCwgMTA0LCAxMzAsIDU4LCAxLCA0LCAyMTQsIDE1NywgNTgsIAorICAgIDEsIDQsIDYsIDcwLCA1OCwgMSwgNCwgMjE0LCAxMDYsIDIsIDEwMywgNTgsIDEsIDQsIDIxNSwgOTQsIDIxNCwgMTA1LCA1OCwgCisgICAgMSwgNCwgMjEwLCAxNTksIDU4LCAxLCA0LCAyMTAsIDE2MCwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgMjEwLCAxNjAsIAorICAgIDIsIDI0OSwgMTAwLCA1OCwgMSwgNCwgMjQ1LCA4LCA1OCwgMSwgNCwgMjE2LCAxNzksIDM4LCAyNDYsIDExOCwgMjQyLCAKKyAgICAxMzcsIDI1NSwgMTQsIDM4LCAyNDYsIDExOCwgMjU1LCAzLCAyNTUsIDE0LCAzOCwgMjE5LCA2OSwgNTEsIDM4LCAyMTgsIDYsIAorICAgIDc4LCAzOCwgMjMxLCAyMzEsIDM4LCAyNDIsIDEzNCwgMzgsIDIzMSwgMjI5LCAzOCwgMjU1LCAxLCAzOCwgMjQyLCAxMzUsIAorICAgIDM4LCAyNTUsIDIsIDM4LCA3LCA0LCAxLCAyMjMsIDIyNCwgNTEsIDM4LCAyNTEsIDE0NSwgMzgsIDIzMSwgMjMwLCAzOCwgCisgICAgNTIsIDI1MCwgMzEsIDQ4LCAzOCwgMjI2LCAyMjUsIDQ4LCAzOCwgMjEwLCAzNSwgNTEsIDM4LCAyMzUsIDE3MiwgNTEsIDM4LCAKKyAgICAyMTQsIDE1MSwgNDgsIDM4LCAyMTQsIDEzNCwgNDgsIDM4LCA3LCA0LCAxLCAyNDQsIDYzLCAyMDQsIDExNSwgNDgsIDM4LCAKKyAgICA3LCA0LCAxLCAyNTQsIDI0MywgMzgsIDcsIDQsIDEsIDI1NCwgNzMsIDM4LCA3LCA0LCAxLCAyNTMsIDE3NiwgMzgsIDcsIDQsIAorICAgIDEsIDI1MSwgNjcsIDI1MCwgMTgzLCAzOCwgNywgNCwgMSwgMjM1LCAyMTMsIDI0OSwgNjAsIDM4LCA3LCA0LCAxLCAyNDUsIAorICAgIDU5LCAzOCwgNywgNCwgMSwgMjQzLCAyMDIsIDM4LCA3LCAxLCA0LCA2LCAyNDMsIDIwMiwgMzgsIDcsIDQsIDEsIDIzNSwgCisgICAgMjMsIDM4LCA3LCA0LCAxLCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxOTMsIDM4LCA3LCA0LCAKKyAgICAxLCAyMzAsIDI1LCAzOCwgNywgMSwgNCwgNiwgMjMwLCAyNSwgMzgsIDcsIDEsIDQsIDYsIDE1MywgMzgsIDcsIDQsIDEsIAorICAgIDIyMywgMjI0LCAyMjIsIDE4NiwgMzgsIDcsIDQsIDEsIDIyMiwgOTEsIDM4LCA3LCA0LCAxLCAxOTksIDIyMiwgOTEsIDM4LCAKKyAgICA3LCA0LCAxLCAyMTAsIDE1OSwgMzgsIDUyLCAyMzUsIDE5MywgMjUxLCAxNDcsIDUxLCAzOCwgMjU0LCAxNDgsIDEyOCwgCisgICAgMjE2LCA0MiwgNTEsIDM4LCA0MywgMjUzLCAyNTAsIDQ4LCAzOCwgNDQsIDI1MywgMjUwLCAyMiwgMTI0LCAyNTMsIDI1MCwgCisgICAgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA1MSwgNywgNiwgCisgICAgMSwgNTcsIDIsIDU5LCA0OCwgNywgNCwgMSwgNTcsIDIsIDU5LCA0OCwgNywgNiwgMSwgNTcsIDIsIDU5LCA1MSwgNywgNCwgCisgICAgMSwgNTcsIDIsIDU5LCA1MSwgNywgNiwgMSwgNTcsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgNTcsIDIsIDIzMiwgMjE0LCAKKyAgICA1MSwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAxODQsIDIyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI1MCwgCisgICAgMTg0LCAyMiwgMTQyLCA3LCA2LCAxLCAyNDksIDYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDU5LCA0OCwgCisgICAgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0OSwgCisgICAgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyNDksIDYxLCAKKyAgICAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMzEsIAorICAgIDUxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgCisgICAgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgCisgICAgNTEsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjE2LCA4OSwgNTEsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxODQsIDIyLCAyNTEsIDE0NiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyNTAsIDE4NCwgMjIsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyNDUsIDcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQ1LCAKKyAgICA3LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDU5LCA0OCwgNywgNiwgMSwgCisgICAgMjQyLCA2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIAorICAgIDI0OCwgMSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDE4MywgNywgNCwgCisgICAgMSwgMjQyLCA2MSwgMiwgMjUwLCAxODMsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDI1MSwgMTQ3LCA1MSwgNywgNCwgMSwgMjQyLCAKKyAgICA2MSwgMiwgMjUxLCAxNDcsIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjE2LCA4OSwgNTEsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCAyMTYsIDg5LCA1MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMiwgMjIsIDE0MiwgNywgNCwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDI0OCwgMiwgMjIsIDE0MiwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMTQyLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgNTksIDUxLCA3LCA2LCAxLCAKKyAgICAyMzUsIDI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgCisgICAgMjMzLCAxNDksIDIsIDU5LCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIAorICAgIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjMyLCAyMTQsIAorICAgIDUxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyNTAsIDMxLCA1MSwgCisgICAgNywgNiwgMSwgMjMyLCA1MCwgMiwgMTQyLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAxNDIsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIAorICAgIDU5LCA0OCwgNywgNCwgMSwgMjMyLCA1MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMzIsIDUwLCAyLCA1OSwgNTEsIDcsIDQsIAorICAgIDEsIDIzMiwgNTAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAKKyAgICA1OSwgNDgsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgNTksIDUxLCA3LCA2LCAKKyAgICAxLCAyMzAsIDI2LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgCisgICAgMjMwLCAyNiwgMiwgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyMTYsIDg5LCAyMiwgMjQ4LCAxLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAyNDgsIDEsIDcsIDYsIDEsIDE0NCwgCisgICAgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxNDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA2LCAKKyAgICAxLCAyMjYsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMTQyLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgNTksIAorICAgIDQ4LCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgCisgICAgNTksIDUxLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIAorICAgIDQsIDEsIDIyMywgMjI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMjIyLCA5MiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjU1LCAzLCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyNTUsIDMsIAorICAgIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMjM1LCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDkyLCAKKyAgICAyLCAyNTAsIDIzNSwgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDcsIAorICAgIDQsIDEsIDIyMiwgOTIsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgNTksIDQ4LCAKKyAgICA3LCA0LCAxLCAyMTcsIDE1MywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MywgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAKKyAgICAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgNTEsIDcsIAorICAgIDYsIDEsIDEwNCwgMiwgMjE2LCA4OSwgNTEsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgCisgICAgMjUwLCAzMSwgNTEsIDcsIDQsIDEsIDEwNCwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjE2LCA4OSwgMjIsIAorICAgIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgCisgICAgMjQ4LCAxLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMTgyLCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTQsIAorICAgIDEwNiwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQyLCAKKyAgICAxMzYsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA2LCAxLCAyMTIsIAorICAgIDk5LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI0OCwgMSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCAKKyAgICA3LCA0LCAxLCAyMTIsIDk5LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCA1MSwgNywgNCwgMSwgMjEyLCAKKyAgICA5OSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDE3OSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTEsIDE3OSwgMiwgNTksIAorICAgIDQ4LCA3LCA2LCAxLCAyMTEsIDE3OSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTEsIDE3OSwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAKKyAgICAyMTEsIDExOCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgCisgICAgMjUwLCAzMCwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIAorICAgIDIxMCwgMTYwLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgCisgICAgMjE3LCAxNTMsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAyMTEsIAorICAgIDExOCwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIDQ0LCAxNjMsIDIyMiwgMjMzLCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTk5LCAyMjIsIDkyLCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDE5OSwgCisgICAgMjIyLCA5MiwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMjIwLCA3NiwgMjIyLCA5MSwgNywgNCwgMSwgMjQ4LCA1NCwgNywgNiwgCisgICAgMSwgMTE1LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDI0MSwgNTIsIDQ4LCAKKyAgICA3LCA0LCAxLCAxMTUsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIAorICAgIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIAorICAgIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCAKKyAgICA0OCwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgCisgICAgMjIsIDE4MiwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAKKyAgICA1OSwgNTEsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgCisgICAgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE0MiwgNywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgCisgICAgMjUxLCAxNDcsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDI0MSwgNTIsIDQ4LCA3LCAKKyAgICA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgMTgyLCA3LCAKKyAgICA2LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDI1MSwgMTQ3LCAyMiwgNTksIAorICAgIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgCisgICAgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMTgyLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDE4MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIAorICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCisgICAgMzEsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIAorICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDEsIDUyLCA0OCwgNywgCisgICAgNCwgMSwgMjQwLCAxNTQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAKKyAgICAyNDAsIDE1NCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIAorICAgIDYsIDEsIDE0NCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIAorICAgIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCAKKyAgICA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCAxODIsIAorICAgIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgNTksIAorICAgIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgCisgICAgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDksIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIAorICAgIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAxODIsIDcsIDQsIAorICAgIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAxODIsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCA1OSwgNTEsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgNTksIDUxLCA3LCA0LCAxLCAKKyAgICAxMDQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDUyLCAKKyAgICA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTA0LCAKKyAgICAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQyLCAxMzYsIDcsIDQsIAorICAgIDEsIDIxMSwgMTE4LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgCisgICAgMjQxLCA1MiwgNDgsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxODIsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAxODIsIDcsIDYsIAorICAgIDEsIDIzMCwgMjIzLCAyMzIsIDE4NSwgNywgNCwgMSwgMjMwLCAyMjMsIDIzMiwgMTg1LCA3LCA2LCAxLCAyMzAsIDIyMywgCisgICAgMjE0LCAxMDUsIDcsIDQsIDEsIDIzMCwgMjIzLCAyMTQsIDEwNSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTIzLCA3LCAKKyAgICA0LCAxLCAyMTEsIDExOCwgMiwgMjMyLCAxMjMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDE0NCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgCisgICAgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIAorICAgIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIAorICAgIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjU0LCAxNDQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1MywgMjYsIDQsIAorICAgIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAKKyAgICAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NCwgMjYsIAorICAgIDYsIDEsIDI0NSwgMTAxLCAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIAorICAgIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgCisgICAgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAKKyAgICAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIAorICAgIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAKKyAgICAxNTQsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgCisgICAgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgNjQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAKKyAgICAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgCisgICAgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMzUsIDE4NiwgCisgICAgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAKKyAgICAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCisgICAgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTUzLCAyNiwgNiwgCisgICAgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIAorICAgIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgCisgICAgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIyNiwgCisgICAgMjAwLCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAKKyAgICAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgCisgICAgNCwgMSwgMjI2LCAyMDAsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAKKyAgICAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDIyNiwgMjAwLCAKKyAgICAyLCAyNDgsIDE1MywgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAKKyAgICAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjQsIAorICAgIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCisgICAgMjE0LCAxNTgsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAKKyAgICAyMjYsIDExMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAKKyAgICAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIAorICAgIDIyNiwgMjAyLCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1MywgMjYsIDQsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIAorICAgIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIAorICAgIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgCisgICAgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDE0NCwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgCisgICAgMTAxLCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAKKyAgICAyMjYsIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNiwgCisgICAgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjI2LCAxMTAsIDI2LCAKKyAgICA0LCAxLCAyMTQsIDE1OCwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIAorICAgIDIyNiwgMjAyLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjU0LCAKKyAgICAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAorICAgIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAKKyAgICAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgCisgICAgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAKKyAgICAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgCisgICAgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIAorICAgIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIDE0NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjEwLCAyMTksIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIAorICAgIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAorICAgIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIAorICAgIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAKKyAgICAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgCisgICAgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAKKyAgICAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgCisgICAgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAKKyAgICAyMjQsIDE2NywgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIAorICAgIDYsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDQsIDEsIDIyNiwgCisgICAgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgCisgICAgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIAorICAgIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIAorICAgIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAKKyAgICAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAyMDIsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAKKyAgICAyNTQsIDE0NCwgMiwgMjMxLCAyMzIsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgCisgICAgNCwgMSwgMjU0LCAxNDQsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNiwgMTExLCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI1LCAxNzYsIAorICAgIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAKKyAgICAyMzEsIDIzMiwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTY3LCAyNiwgMjM0LCAyLCAyNiwgMjI0LCAxNjcsIDI2LCAyMjQsIAorICAgIDE1NCwgMjYsIDIyNSwgMTc1LCAyNiwgMjQ3LCAyNTIsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIxNCwgCisgICAgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjQ1LCAKKyAgICA2NCwgMiwgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgCisgICAgMjQ1LCAxMDEsIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgNjQsIAorICAgIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNjcsIDI2LCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIAorICAgIDI2LCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgCisgICAgMTg2LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMzEsIDIzMiwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAKKyAgICAyNDcsIDI1MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMjYsIDExMCwgMjYsIAorICAgIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MiwgMjIsIDIyNSwgCisgICAgMTc1LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIzMSwgMjMyLCAKKyAgICAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjI2LCAxMTAsIDI2LCAyNDgsIAorICAgIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzMiwgMjYsIDQsIAorICAgIDEsIDIxNCwgMTU4LCAyLCAyNDcsIDI1MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIAorICAgIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDIyMywgMzgsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjIzLCAzOCwgMiwgMjQ4LCAKKyAgICAxNTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIAorICAgIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAKKyAgICAyMzEsIDIzMiwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjIzLCAzOCwgMiwgMjQ4LCAxNTMsIDI2LCAyNDcsIDI1MiwgMjIsIDIxNCwgMTMsIDI2LCAyNDcsIAorICAgIDI1MiwgMjIsIDIyNiwgMTEwLCAyNiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMTQsIDE0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI2LCAxMTEsIAorICAgIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAKKyAgICAyMjUsIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAKKyAgICAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE2NywgMjYsIDIyNiwgMTEwLCAyNiwgMjQ4LCAxNTMsIAorICAgIDI0NSwgMTUxLCAyMjQsIDI3LCAyNDUsIDE2MCwgMjI0LCAyNywgMjQ1LCAxNTEsIDIxOSwgMTgsIDI0NSwgMTYwLCAyMTksIAorICAgIDE4LCAyMTYsIDE0MSwgMjE5LCAxOCwgMjQ0LCA5LCAyMTksIDE4LCAyMTksIDEyMywgMjE5LCAxOCwgMjQ0LCAxMTIsIDIxOSwgCisgICAgMTgsIDIyNCwgMTQxLCAyMTksIDE4LCAyMTYsIDE3MCwgMjE5LCAxOCwgMjQyLCAzNSwgMjE5LCAxOCwgMjEwLCA4NywgMjExLCAKKyAgICAyNDUsIDIxOSwgMTgsIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDY3LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjM1LCA2MywgCisgICAgMjMzLCAzOCwgNzgsIDIyMiwgMjQzLCA3OCwgMjQwLCAxNjgsIDIyOCwgNjgsIDI0MCwgMTY4LCAyNDQsIDExMiwgMjQ4LCAKKyAgICAxNTYsIDI0NSwgMTUxLCAyNDgsIDE1NiwgMjQ1LCAxNjAsIDI0OCwgMTU2LCAyMDMsIDEzMCwgNTIsIDY3LCAyMzIsIDIxMywgCisgICAgNTIsIDEyMSwgMjMyLCAyMTMsIDQzLCAyMTksIDE1NSwgMjIzLCAyNTQsIDc4LCA0NCwgMjE5LCAxNTUsIDIyMywgMjU0LCAKKyAgICA3OCwgMjE5LCAxNTUsIDIzMiwgMTA5LCAyMjMsIDI1NCwgNzgsIDIxOSwgMTU1LCAyNDEsIDE2MywgMjIzLCAyNTQsIDc4LCAKKyAgICA0MywgNTIsIDIyMywgMjU0LCA3OCwgNDQsIDUyLCAyMjMsIDI1NCwgNzgsIDUyLCAyMzIsIDEwOSwgMjIzLCAyNTQsIDc4LCAKKyAgICA1MiwgMjQxLCAxNjMsIDIyMywgMjU0LCA3OCwgMjQ4LCAyMDUsIDUyLCAyNDgsIDIwNSwgMjUxLCAxMTMsIDIxNSwgMjIyLCAKKyAgICAyNTEsIDExMywgMTIzLCA1OSwgMjMzLCA1NiwgMTEzLCA1OSwgMjMzLCA1NiwgMjAzLCAyNDUsIDE2MywgMjQwLCAxNjYsIAorICAgIDIyNSwgMTAsIDIzMiwgMjE0LCAyMjAsIDEzNywgMjI2LCAxNSwgMjIwLCAxMzcsIDIzMywgMzgsIDI0NSwgMTU4LCAyMjIsIAorICAgIDI0MywgMjQ1LCAxNTgsIDIyNCwgMjQ2LCAyNDcsIDE5NiwgMjQ0LCAxOSwgMjMzLCAzOCwgMjI2LCAxMTcsIDIyMiwgMjQzLCAKKyAgICAyMjYsIDExNywgMjI5LCAxOTQsIDIyOCwgNzMsIDIxOSwgMTgsIDIyNSwgMTgzLCAyMzAsIDE5MywgNTAsIDIyNSwgMTgzLCAKKyAgICAyMTYsIDI0OCwgMjE2LCAxNDgsIDUwLCAyMjQsIDE5MCwgNTIsIDIyNCwgMTkwLCAyMTUsIDIxMSwgMjI0LCAxOTAsIDIyMywgCisgICAgNDksIDIyNCwgMTkwLCAyMjMsIDQ5LCA1MiwgMjI0LCAxOTAsIDIyMywgNDksIDIxNSwgMjExLCAyMjQsIDE5MCwgMjUwLCAKKyAgICAyMzgsIDIxOSwgMTU1LCAyMzMsIDQyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDc4LCAyMTksIDE1NSwgMjIyLCAyNDcsIDI1NCwgCisgICAgMTEwLCAyMjMsIDI1NCwgNzgsIDIyMywgMTA3LCA3OCwgNTIsIDI0NSwgMzEsIDc4LCAyMzUsIDIwMSwgMjI2LCAxMTksIAorICAgIDIxNCwgMTgwLCAxMzUsIDIxNiwgMTExLCAyNTAsIDIzOSwgMjM1LCAyMTYsIDIyNSwgMTAsIDI1MywgMjE0LCAyNDAsIDE2OSwgCisgICAgMjUxLCAxMTMsIDI0NCwgMiwgMjE5LCA5NSwgNDMsIDQyLCAyNTEsIDE1OCwgMiwgMjI0LCA3LCA0NCwgNDIsIDI1MSwgMTU4LCAKKyAgICAyLCAyMjQsIDcsIDUyLCAyMjQsIDEzLCA3OCwgMjI0LCAxMywgMjQ1LCAzMSwgNzgsIDI0NSwgMzEsIDIyNCwgMTMsIDc4LCAKKyAgICAyMTYsIDcwLCA1LCAyNDUsIDY1LCAyMjMsIDQ5LCAyMjUsIDY4LCA1MCwgODUsIDE0MCwgMjUxLCAxMTMsIDg1LCA5NywgCisgICAgMjUxLCAxMTMsIDEyMSwgMjUzLCAyMTYsIDIyMywgNDksIDIyMCwgMTUwLCAyNTAsIDEsIDIxNCwgMTYzLCAxMTMsIDI1MywgCisgICAgMjE1LCAyNTQsIDE1OCwgMjEzLCAxODgsIDI0OSwgMjE3LCAyMzAsIDE4MiwgNTAsIDIxNywgMjM0LCAyNDgsIDE1NiwgMjM1LCAKKyAgICAxOTMsIDIxNCwgMTgwLCAyNDQsIDUyLCAyMjQsIDE0MSwgNzgsIDEzNCwgNTksIDIyNCwgMTQwLCAyMjQsIDI0LCAyMjQsIAorICAgIDE5MCwgMjQ0LCAxMSwgNTksIDIyNCwgMTQwLCAyNDQsIDgxLCA1OSwgMjI0LCAxNDAsIDExMywgNTksIDIyNCwgMTQwLCAKKyAgICAyNDQsIDExLCA1OSwgNzgsIDI0NiwgMTE4LCAyNDksIDEzMCwgMjE1LCAyMjEsIDY3LCAyNDQsIDExLCAyNDcsIDExOCwgCisgICAgMjMxLCA4MiwgMTEsIDIxOSwgMTgsIDIxMSwgMjA5LCAyMzUsIDYzLCAyNDMsIDIyNywgMjU0LCA1MiwgMjM1LCAxOTEsIAorICAgIDIxNiwgODUsIDIzNSwgMTkxLCAyMjAsIDEzNywgMjM1LCAxOTEsIDIyNSwgMjIsIDIzNSwgMjI4LCAyMTcsIDE4MiwgMjE3LCAKKyAgICAyNTEsIDI1NSwgNSwgMjE3LCAxODIsIDIxNywgMjUxLCAyMzUsIDIyOCwgMTAsIDI0NCwgMjAsIDIyMCwgODAsIDI1NSwgNSwgCisgICAgMTAsIDI0NCwgMjAsIDIyMCwgODAsIDIyOSwgMTg5LCAyMSwgMjIwLCA4MSwgMjI4LCA2OSwgMjEsIDIyMCwgODEsIDIxOCwgCisgICAgMjMsIDIxMCwgODYsIDIxOCwgMjMsIDcsIDQsIDEsIDczLCAyMTgsIDIzLCAxNjEsIDIxOCwgMjMsIDE4OSwgMjE4LCAyMywgCisgICAgMTk0LCAyMTgsIDIzLCAxOTgsIDIxOCwgMjMsIDE5NSwgMjE4LCAyMywgMjAwLCAyMTgsIDIzLCA5NiwgNTAsIDIxOCwgMjMsIAorICAgIDIzMCwgMTgxLCAyMTgsIDIzLCAyNDUsIDk4LCA1MCwgMjE4LCAyMywgNDMsIDIyNiwgMywgMjE4LCAyMywgNDQsIDIyNiwgMywgCisgICAgMjE4LCAyMywgNywgNCwgMSwgMjMwLCAyNSwgMjE4LCA2NSwgMjEwLCA4NiwgMjE4LCA2NSwgMTEwLCAyMTgsIDY1LCAxMDUsIAorICAgIDIxOCwgNjUsIDE1OCwgMjE4LCA2NSwgMTYxLCAyMTgsIDY1LCAxODksIDIxOCwgNjUsIDE5NCwgMjE4LCA2NSwgMTk4LCAKKyAgICAyMTgsIDY1LCAxOTUsIDIxOCwgNjUsIDIwMCwgMjE4LCA2NSwgOTYsIDUwLCAyMTgsIDY1LCAyMzAsIDE4MSwgMjE4LCA2NSwgCisgICAgMjQ1LCA5OCwgNTAsIDIxOCwgNjUsIDQzLCAyMjYsIDMsIDIxOCwgNjUsIDQ0LCAyMjYsIDMsIDcsIDIxOCwgNjUsIDQsIDEsIAorICAgIDYxLCA3LCAyMTgsIDY1LCA0LCAxLCA3NSwgNywgMjE4LCA2NSwgNCwgMSwgNzYsIDcsIDIxOCwgNjUsIDQsIDEsIDIxMSwgCisgICAgMTc4LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjEsIDE5NSwgNywgMjE4LCA2NSwgNCwgMSwgMjQyLCA2MCwgNywgMjE4LCA2NSwgCisgICAgNCwgMSwgMjM1LCAyMywgNywgMjE4LCA2NSwgNCwgMSwgMTU2LCA3LCAyMTgsIDY1LCA0LCAxLCAxOTMsIDcsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIzMCwgMjUsIDcsIDIxOCwgNjUsIDQsIDEsIDIyNiwgMTA1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjIsIDkxLCA3LCAKKyAgICAyMTgsIDY1LCA0LCAxLCAyMTcsIDE1MiwgMjQ1LCA0NiwgNTAsIDI0OSwgMjI3LCA1MCwgMjQ5LCAxMTcsIDUwLCAyNDMsIAorICAgIDI1MSwgMjQzLCAyNTQsIDUwLCAyMzIsIDE5OCwgNTAsIDIzMCwgMTk0LCA1MCwgMjI5LCAyMTAsIDUwLCAyMjUsIDE2MiwgCisgICAgNTAsIDIyMiwgMTE4LCA1MCwgMjExLCAyMTcsIDUwLCAxNjYsIDIyMCwgNDksIDUwLCAyNDcsIDEyNywgNTAsIDI0NSwgNDcsIAorICAgIDUwLCAyMzQsIDc2LCA1MCwgMjE1LCAxMTIsIDUwLCAyNDYsIDEwMSwgNTAsIDI0MywgNDAsIDIyNSwgMTkzLCA1MCwgMjI1LCAKKyAgICAxNjAsIDUwLCAyNDIsIDEwOSwgNTAsIDI1MywgMTgyLCA1MCwgMjQwLCAyMjgsIDUwLCAyNTAsIDE4NSwgNTAsIDIzMiwgCisgICAgMTkxLCAyMTYsIDMsIDUwLCAyMTksIDAsIDUwLCAyMTYsIDI0NSwgNTAsIDIzNSwgMjQxLCAyMjIsIDExOCwgNTAsIDM4LCAKKyAgICA0MywgMjQxLCAyNTUsIDQ4LCAzOCwgNDQsIDI0MSwgMjU1LCA0OCwgMzgsIDE5OSwgNjcsIDIzMiwgMjE0LCAyMjYsIDEyMCwgCisgICAgMzgsIDIxOSwgMjUxLCA2NywgMjMyLCAyMTQsIDIyNiwgMTIwLCAzOCwgMjU0LCA4OCwgODAsIDQ4LCAzOCwgMjUwLCAyLCAKKyAgICA4MCwgNDgsIDM4LCA0MywgODAsIDQ4LCAzOCwgNDQsIDgwLCA0OCwgMzgsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDI1MCwgCisgICAgMiwgMjIyLCAyMzQsIDIyNiwgMTIwLCAzOCwgMjU0LCA4OCwgMjIyLCAyMzQsIDIyNiwgMTIwLCAzOCwgMTM0LCAxNzAsIDQ4LCAKKyAgICAzOCwgMjQ0LCAxMSwgMTcwLCA0OCwgMzgsIDI0NSwgMTQ2LCAyNTAsIDM1LCAzOCwgMjQ1LCAxNDYsIDIxOCwgMjM0LCAzOCwgCisgICAgMjQ1LCAxNDYsIDI0NywgMjQ4LCAzOCwgMjQ1LCAxNDYsIDI1MCwgMzYsIDI1MiwgMTgwLCAzOCwgNDMsIDQ0LCA4MCwgNDgsIAorICAgIDM4LCAyNDUsIDE0NiwgMjIxLCAxODgsIDM4LCAyNDUsIDE0NiwgMjM0LCAxMzUsIDM4LCAyNDUsIDE0NiwgMjE0LCAxNTUsIAorICAgIDIyNSwgNywgMjE1LCAyMjUsIDM4LCAyMjMsIDUwLCAyMTksIDQ3LCAyMjYsIDEyMCwgMzgsIDUyLCA2NywgMjE4LCAxMDMsIAorICAgIDIyNiwgMTIwLCAzOCwgMjU0LCA5OCwgODcsIDM4LCAyMTUsIDIxMSwgMjE0LCAxODIsIDM4LCAyMTEsIDI0NywgMjUxLCAKKyAgICAxNDAsIDQ4LCAzOCwgMTQwLCA4MCwgMjI2LCAxMjAsIDM4LCAxOTksIDUyLCAyMTksIDQ3LCAyMjYsIDEyMCwgMzgsIDk3LCAKKyAgICAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgMTAzLCAzOCwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgCisgICAgMTAzLCAzOCwgNDMsIDgwLCA1MSwgMzgsIDQ0LCA4MCwgNTEsIDM4LCAyNTMsIDIxNywgNDgsIDI1NSwgMTEsIDIyNiwgMjMxLCAKKyAgICAyNTQsIDI1MSwgMjE2LCA0MiwgMjE2LCAxOTYsIDIxOCwgNzQsIDEzOSwgNiwgMjUxLCA2NiwgMjQ4LCA3MSwgMjUwLCAxNzgsIAorICAgIDI1MCwgMTc1LCAyMzIsIDIxNCwgODcsIDI1MCwgMjQwLCAyMjYsIDIzMSwgMjUxLCAyNiwgMjE0LCAxODksIDI0NSwgNDgsIAorICAgIDI0OSwgMTkxLCAyMjEsIDE4NSwgMjQ4LCA3MSwgMjQ0LCAxNzksIDExOSwgNCwgMjQzLCAyMDIsIDExOSwgNiwgMjQyLCA2MCwgCisgICAgMjUxLCAyMTksIDYsIDI0MiwgNjAsIDEzOSwgNiwgMjQyLCA2MCwgMjI1LCAzNywgMjQ5LCAxOTEsIDIyNSwgMzcsIDI0OSwgCisgICAgMTkyLCAxMTcsIDExMywgMjI1LCAxMDgsIDExOSwgNiwgNzMsIDI1MSwgMjE5LCA2LCA3MywgMTE5LCA2LCAxNTYsIDExOSwgCisgICAgNCwgMTU2LCAyMzMsIDE0OSwgNTcsIDI1MiwgMTQxLCA4NywgMTM5LCA2LCAyMzAsIDI1LCAyMjcsIDE5NiwgNTAsIDIxOSwgCisgICAgMzEsIDIyMywgMTE5LCAyNDksIDE2MiwgMTE5LCA2LCAyMjYsIDEwNSwgMTM5LCA2LCAyMjYsIDEwNSwgMTM5LCA2LCAyMjQsIAorICAgIDk2LCAxMTksIDYsIDE1MywgMjUxLCAyMTksIDYsIDE1MywgMTM5LCA2LCAxNTMsIDIyNCwgMTk2LCAyMTcsIDcxLCAyMjMsIAorICAgIDYyLCAyMjAsIDEzMiwgNzgsIDIxNywgMSwgNTAsIDIxNSwgMjUzLCAxNjQsIDUwLCAyMTMsIDI0MCwgMTM5LCA2LCAyMTAsIAorICAgIDE1OSwgMjI2LCAxMzMsIDUwLCAyMjYsIDIyMSwgNTAsIDIzNSwgMTkzLCAyMjYsIDIyMSwgNTAsIDI1MSwgMjE5LCA2LCAKKyAgICAyMTAsIDE1OSwgMjE1LCA5NCwgMjYsIDQsIDEsIDIzNSwgMTg1LCAyMzQsIDE3MywgNTAsIDI1NCwgMTA3LCA1MCwgMTE5LCAKKyAgICA2LCAyNTMsIDE1OCwgMjUxLCAyMTksIDYsIDI1MSwgNjYsIDI0NSwgNjgsIDg3LCAxMTksIDQsIDc1LCAxMTksIDYsIDc1LCAKKyAgICAxMTksIDYsIDI0NSwgNiwgMjE1LCA5NCwgNiwgMjQ1LCA2LCAxMTksIDYsIDE5MywgMTE5LCA0LCA3NiwgMTEyLCA4NywgCisgICAgMjUyLCAyOSwgODcsIDI0MiwgMjAyLCA4NywgMjQ4LCAxOTAsIDg3LCAyMzUsIDIzMiwgMjE5LCAyOSwgMjIyLCAxODcsIDYsIAorICAgIDIyNCwgOTYsIDI0NCwgMTgyLCA1MCwgMTM5LCA0LCAyMjUsIDEwOCwgMTM5LCA0LCAyNDMsIDEwNywgMTM5LCA2LCAyNDMsIAorICAgIDEwNywgMTM5LCA2LCAyMjUsIDEwOCwgMTM5LCAyMzAsIDI0LCAyMTgsIDQwLCAyMTUsIDk0LCAzNSwgNiwgMjQzLCAyMDIsIAorICAgIDIxNSwgOTQsIDM1LCA2LCAxNTYsIDIyMywgNDksIDM1LCA2LCAxNTYsIDIxNSwgOTQsIDM1LCA2LCAyMTEsIDExNywgMTM5LCAKKyAgICAzMiwgNiwgMjQ5LCA2MCwgMTM5LCAzMiwgNCwgMjQ5LCA2MCwgMTM5LCAzMiwgNCwgNzUsIDEzOSwgMzIsIDQsIDczLCAxMzksIAorICAgIDMyLCA0LCAyMzUsIDE0NCwgMjI0LCAxNzAsIDIzMiwgMjEzLCAyMTUsIDk0LCAyNTQsIDEyNiwgMjI1LCAxODMsIDUwLCAKKyAgICAyNTQsIDE4MCwgMjE1LCA5NCwgNCwgMjQ1LCA2LCAxNiwgMzEsIDIyMSwgMjUyLCAyMTksIDI5LCAyMTIsIDExNCwgMjQ0LCAKKyAgICAyLCAxMjMsIDIyMCwgMTE4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDIyOCwgMTk0LCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIAorICAgIDIxNiwgMjQxLCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDIxNiwgMTY4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMTMsIDIxNiwgCisgICAgMTY2LCAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0NCwgMTE3LCAyMTIsIDExNCwgMjQ0LCAyLCAxMTMsIDI0NCwgMTE2LCAKKyAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMzQsIDI0NCwgMTE2LCAyMTIsIDExNCwgMjQ0LCAyLCAyNDQsIDExLCAyNDQsIDExNiwgCisgICAgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMTksIDExNSwgMjEyLCAxMTQsIDI0NCwgMiwgMjQ0LCA4MSwgMjE5LCAxMTMsIAorICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDIxMiwgMTE0LCAyNDQsIDIsIDEzNCwgMjQ1LCAxODYsIDIxMiwgCisgICAgMTE0LCAyNDQsIDIsIDI0NCwgODEsIDI0NSwgMTg2LCAyMTIsIDExNCwgMjQ0LCAyLCAyMjAsIDEyMiwgMjQ1LCAxODYsIAorICAgIDI0NCwgMiwgMjI3LCAxOTcsIDExMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTA1LCAKKyAgICAyMjIsIDE5OCwgMjI3LCAxOTgsIDE1OCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxNjEsIDIyMiwgMTk4LCAyMjcsIDE5OCwgCisgICAgMTg5LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTgsIDIyMiwgMTk4LCAyMjcsIAorICAgIDE5OCwgMTk1LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIwMCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTYsIDI0NywgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAyNDUsIDE2NywgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTUsIDc2LCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDI0NCwgMTE0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjQwLCAyMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCA4MSwgCisgICAgMjQwLCAyMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0NywgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMTAsIAorICAgIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTA1LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE1OCwgNCwgMjIyLCAxOTgsIDIyNywgCisgICAgMTk4LCAxNjEsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTg5LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NCwgNCwgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAxOTgsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk1LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDIwMCwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTYsIDI0NywgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDUsIDE2NywgNCwgCisgICAgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTUsIDc2LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgMTE0LCA0LCAyMjIsIAorICAgIDE5OCwgMjI3LCAxOTgsIDEyMywgMjQwLCAyMTAsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ0LCA4MSwgMjQwLCAyMTAsIAorICAgIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDIxNiwgMTQ4LCAKKyAgICAyNTEsIDY3LCAyNDksIDYwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIDIxNiwgMTQ3LCAyMjIsIDE5OCwgMjI3LCAKKyAgICAxOTgsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgMTk4LCAyMjMsIDQ5LCAxMjMsIDI0MCwgMjEwLCA3LCAKKyAgICA0LCAxLCAyMjMsIDQ5LCAyNTEsIDY2LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDIxOSwgMTI1LCAyMzMsIDc4LCAxNywgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAyNDQsIDExNSwgMjQ1LCAyMjYsIDE3LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgMTE1LCAyMTYsIAorICAgIDE0NywgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjExLCAyMTYsIDE0NywgMjEyLCAxMTQsIDI0NCwgMiwgMjEwLCAKKyAgICA4NywgMjE2LCAxNjYsIDE0MCwgNzQsIDIxNCwgMTUzLCA3NCwgOTcsIDc0LCAyNDYsIDEwNCwgNzQsIDQzLCA0NCwgNzQsIAorICAgIDEyMCwgMTI0LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgNzQsIDE0MCwgODAsIDIsIDkxLCA5NywgODAsIDIsIDkxLCAxNDAsIDIxMiwgCisgICAgMzYsIDc0LCA5NywgMjEyLCAzNiwgNzQsIDE0MCwgMTEzLCAyNDEsIDIzNCwgNzQsIDIxNCwgMTUzLCAxMTMsIDI0MSwgMjM0LCAKKyAgICA3NCwgOTcsIDExMywgMjQxLCAyMzQsIDc0LCAyNDYsIDEwNCwgMTEzLCAyNDEsIDIzNCwgNzQsIDE0MCwgODAsIDIsIDIxNywgCisgICAgNzcsIDk3LCA4MCwgMiwgMjE3LCA3NywgMTQwLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDgwLCAyNDMsIDI0MywgCisgICAgMTMwLCA5NywgODAsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTIwLCAxMjQsIDgwLCAyLCAKKyAgICAyNTIsIDEyNywgMTQwLCA4MCwgMiwgMTAzLCA5NywgODAsIDIsIDEwMywgMTQwLCA4MCwgMiwgMjMyLCAxMjMsIDk3LCA4MCwgCisgICAgMiwgMjMyLCAxMjMsIDQzLCA0NCwgMjEyLCAzNiwgNzQsIDQzLCA0NCwgODAsIDIsIDkxLCAyNDYsIDEwNCwgMjEwLCAzNSwgCisgICAgNzQsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3NywgMjMzLCAzNywgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc3LCAyMjIsIAorICAgIDI0MSwgMjQ2LCAxMDQsIDgwLCAyLCAyMTYsIDc3LCAyMzMsIDM3LCAyNDYsIDEwNCwgODAsIDIsIDIxNiwgNzcsIDIyMiwgCisgICAgMjQxLCA5NywgODAsIDIsIDI0OSwgMTYxLCAyNDYsIDEwMywgMjQ2LCAxMDQsIDgwLCAyLCAyNDksIDE2MSwgMjMzLCAzNywgCisgICAgMjU0LCA4OCwgMjE2LCAxNCwgMjIwLCAxNTMsIDc0LCAyNTAsIDIsIDIxNiwgMTQsIDIyMCwgMTUzLCA3NCwgMjI4LCA1NiwgCisgICAgMjEyLCA5LCA4MCwgMjE2LCA0MiwgMTk5LCAxMzAsIDE0MCwgODAsIDIxNiwgNDIsIDI1MiwgMTQxLCAxMTcsIDk3LCA4MCwgCisgICAgMjE2LCA0MiwgMTMwLCAyNTQsIDg4LCAyMDQsIDI1MCwgMzYsIDc0LCAyNTAsIDIsIDIwNCwgMjUwLCAzNiwgNzQsIDE0MCwgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMTQsIDE1MiwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgMTAzLCAKKyAgICAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI0MSwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIAorICAgIDEzOSwgMjMzLCAzNywgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjE0LCAxNTIsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDI0NiwgMTAzLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI0MSwgMjQ2LCAxMDQsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgMjMzLCAzNywgOTcsIDgwLCAxMTcsIDE0MCwgNzQsIDIxNCwgMTUzLCA4MCwgMTQwLCA2NCwgCisgICAgMjQ2LCAxMDQsIDc0LCAxNDAsIDgwLCAxMTcsIDk3LCA3NCwgMTQwLCAyMjYsIDcwLCAyNTMsIDI0NywgMjE0LCAxNTMsIAorICAgIDIyNiwgNzAsIDI1MywgMjQ3LCA5NywgMjI2LCA3MCwgMjUzLCAyNDcsIDI0NiwgMTA0LCAyMjYsIDcwLCAyNTMsIDI0NywgCisgICAgMTQwLCAyNDEsIDI1NSwgMTE3LCA5NywgMjQxLCAyNTQsIDk3LCAyNDEsIDI1NSwgMTE3LCAxNDAsIDI0MSwgMjU0LCAxNDAsIAorICAgIDUyLCA4MCwgMiwgOTEsIDQzLCA0NCwgNTIsIDgwLCAyLCA5MSwgOTcsIDUyLCA4MCwgMiwgOTEsIDE0MCwgNTIsIDc0LCAKKyAgICAyMTQsIDE1MywgNTIsIDc0LCA5NywgNTIsIDc0LCAyNDYsIDEwNCwgNTIsIDc0LCA0MywgNDQsIDUyLCA3NCwgMTIwLCAxMjQsIAorICAgIDUyLCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA1MiwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA1MiwgNzQsIDIxOSwgMjgsIDI0NSwgCisgICAgMjIwLCA1MiwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgNTIsIDc0LCAxNDAsIDIxNSwgMjExLCA3NCwgOTcsIDIxNSwgMjExLCAKKyAgICA3NCwgMTQwLCAyMTgsIDIzMCwgNzQsIDk3LCAyMTgsIDIzMCwgNzQsIDIxNCwgMTUzLCA4MCwgMiwgNTIsIDkxLCAyNDYsIAorICAgIDEwNCwgODAsIDIsIDUyLCA5MSwgMTQwLCAyNDgsIDE1NSwgNzQsIDIxNCwgMTUzLCAyNDgsIDE1NSwgNzQsIDk3LCAyNDgsIAorICAgIDE1NSwgNzQsIDI0NiwgMTA0LCAyNDgsIDE1NSwgNzQsIDE0MCwgODAsIDIxNiwgNDIsIDEzMCwgOTcsIDgwLCAyMTYsIDQyLCAKKyAgICAxMzAsIDE0MCwgNzEsIDc0LCAyMTQsIDE1MywgNzEsIDc0LCA5NywgNzEsIDc0LCAyNDYsIDEwNCwgNzEsIDc0LCAyMTQsIAorICAgIDE1MywgNzEsIDgwLCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgMjI1LCAyMTQsIDIxNCwgCisgICAgMTUzLCA3MSwgODAsIDIyNiwgMTk3LCAyMjUsIDIxNSwgMiwgMjAzLCAxMzAsIDIxNCwgMTUzLCA3MSwgODAsIDIyNiwgMTk3LCAKKyAgICAyMjUsIDIxNSwgMiwgNjcsIDEzMCwgMjE0LCAxNTMsIDcxLCA1MiwgNzQsIDIxNCwgMTUzLCA3MSwgNTIsIDgwLCAyMjYsIAorICAgIDE5NywgMjI1LCAyMTQsIDk3LCA3MSwgODAsIDI0MywgMjQzLCAyMTIsIDU2LCAyMjgsIDU2LCAyMTIsIDksIDgwLCAyMTYsIAorICAgIDQyLCAyNDksIDE2MCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDgwLCAyMTYsIDQyLCAyNDksIDE2MCwgMTIwLCAxMjQsIDcxLCA3NCwgCisgICAgNDQsIDgwLCAyLCA0LCAyNTAsIDM1LCAyNDYsIDEwNCwgODAsIDE0MCwgNjQsIDIxNCwgMTUzLCA3NCwgMTM0LCA5NywgMjUzLCAKKyAgICAyNDcsIDE0MCwgODAsIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCA2NywgOTEsIDQzLCA0NCwgODAsIDIsIDY3LCA5MSwgMTQwLCAKKyAgICA4MCwgMiwgNTIsIDY3LCA5MSwgOTcsIDgwLCAyLCA1MiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIAorICAgIDIyNiwgMTczLCA3NCwgOTcsIDIyNiwgMTczLCA3NCwgNDMsIDQ0LCAyMjYsIDE3MywgNzQsIDMxLCAyNTQsIDE1NCwgMjQ5LCAKKyAgICAyMTQsIDIyNSwgMjUzLCAyNDcsIDIzMywgMjE2LCAxODcsIDI0NSwgMjcsIDIxNiwgMTg3LCAyNDcsIDEzOCwgMjI4LCA1MiwgCisgICAgMjQ1LCAyOCwgMjQ1LCAxNTIsIDIyMCwgMTI3LCAyMzUsIDI0NSwgMjI5LCAyMjEsIDI0NSwgMTcwLCAyMjYsIDIzMSwgMjI4LCAKKyAgICA1MiwgMjU0LCAxMjQsIDI0NSwgMTcwLCAyMjYsIDIzMSwgNCwgMjQ1LCAxNzAsIDIyNiwgMjMxLCAyNDksIDE4NiwgMjUzLCAKKyAgICAyMzgsIDIzMSwgNjIsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIzMSwgNjIsIDQsIDI0OSwgCisgICAgMTg2LCAyNTMsIDIzOCwgMjMxLCA2MiwgMjQ1LCAxNDMsIDY0LCAyMjQsIDE3MiwgMjMwLCAyNCwgMjI0LCAxODAsIDIzMCwgCisgICAgMjQsIDI0OSwgMTY1LCAyMzAsIDI0LCAyMTgsIDQwLCAyMzAsIDE4MiwgNTAsIDIzMCwgMTgwLCA1MCwgNTksIDIyNSwgMjIsIAorICAgIDI0NywgMTY5LCAyMTksIDk1LCAyMjAsIDEyOCwgMjMwLCAxODEsIDI1MywgMjE3LCAyMjYsIDE2NywgMjIyLCAyMzQsIDIyNiwgCisgICAgMTY3LCAyNTEsIDExNCwgMjI2LCAxNjcsIDQyLCAyMjIsIDE5MywgMjQ5LCAxMDksIDIyMiwgMTkzLCAyNDQsIDQsIDIyMiwgCisgICAgMTkzLCAyMjQsIDE2OCwgMTExLCAyMzUsIDIzNCwgNDQsIDI1NCwgMTA5LCAyNTQsIDEwOSwgMjMxLCA4OCwgMjU0LCAxMDksIAorICAgIDIxOCwgMjU1LCAyNTQsIDEwOSwgMjQ3LCAxNzEsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDcsIDE3NCwgMjI2LCA4LCAxMTEsIAorICAgIDIyOCwgNTIsIDIyNiwgOCwgMTExLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjM1LCAxOTgsIAorICAgIDIxNCwgMTc1LCAyMzUsIDIxMSwgNTIsIDIzNSwgMjExLCAyMTUsIDIxMSwgMjM1LCAyMTEsIDI0OSwgMTgyLCAyMzUsIDIxMSwgCisgICAgMjE4LCAxMywgMjM1LCAyMTEsIDIxMywgMTI5LCAyMzUsIDIxMSwgMjUwLCAyLCAyMzUsIDIxMSwgMjUwLCAyLCAyNDksIAorICAgIDE4MiwgMjM1LCAyMTEsIDI1NCwgODgsIDI0OSwgMTgyLCAyMzUsIDIxMSwgMjE2LCAxODYsIDI1MiwgNjcsIDIyMywgMTM3LCAKKyAgICAyMjQsIDE2OSwgNTksIDIzMCwgMTgxLCAyNDUsIDMzLCAyNDMsIDQ2LCAyMjQsIDE2OSwgMjQxLCA1NywgMjE2LCA4OSwgCisgICAgMjI2LCAxNjcsIDIyMywgNDksIDE4MiwgMjM1LCAxOTMsIDIzMywgNjUsIDIyMiwgOTEsIDIxOSwgMTU3LCAyMTIsIDM1LCAKKyAgICAyMTEsIDIwMCwgMjI0LCAxODAsIDIyOCwgNTIsIDE4MiwgMjMwLCAxODIsIDE4MiwgMjUzLCAyMTAsIDEyOCwgMTExLCAyMjgsIAorICAgIDUyLCAyNTMsIDIxMCwgMTI4LCAxMTEsIDI1NCwgNDgsIDEyOCwgMTExLCAyNTQsIDQ4LCAyNTEsIDg4LCAyMjgsIDUyLCAKKyAgICAyNTUsIDQsIDEyOCwgMTExLCAyMjksIDEwMCwgMjU0LCA0OCwgMjI4LCA1OSwgMjU1LCA0LCAxMjgsIDExMSwgMjU0LCAxNDgsIAorICAgIDEyOCwgMTExLCAyMjgsIDUyLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDI1NCwgMTQ4LCAxMjgsIDE3NywgMTI4LCAxMTEsIDIxNSwgCisgICAgMjExLCAxODIsIDI1NCwgMTU1LCAxMjgsIDExMSwgMjQ1LCA5NCwgMTExLCAyNDMsIDQ1LCAyNDUsIDk0LCAxMTEsIDI0NywgCisgICAgMjM0LCAyNTIsIDIzLCAyNTQsIDUwLCAyMTYsIDE5NiwgMjMyLCAyMjEsIDI0MywgNDUsIDEyOCwgMTExLCAyNTQsIDQ4LCAKKyAgICAxMjgsIDIxNiwgNDIsIDE3NywgMjE2LCAxOTYsIDIzNiwgMTUsIDIyNiwgMjMxLCAyMzYsIDE1LCA2NCwgMTc3LCAyNTQsIAorICAgIDQ4LCAxMjgsIDExMSwgMjQ5LCAyMjcsIDI0NSwgOTcsIDI0NSwgOTgsIDI0OSwgMjI2LCAyMjIsIDIzNCwgMjM2LCAwLCAKKyAgICAxMjgsIDExMSwgMjIyLCAyMzQsIDEyOCwgMTExLCAyNDksIDE1NCwgMTExLCAyNDUsIDY3LCAyNDUsIDk2LCAxMTEsIDIxOCwgCisgICAgMTU3LCAyNDUsIDk3LCAyNDgsIDU1LCAxMjgsIDExMSwgMTI4LCAyMTYsIDQyLCAyNTEsIDc4LCAyNDgsIDcyLCAyMzEsIDg4LCAKKyAgICAyNTEsIDc3LCAyMjQsIDExLCAxMjgsIDExMSwgMjI4LCA1MiwgMTI4LCAxMTEsIDI0MCwgMTA0LCAxMTEsIDIyOCwgNTIsIAorICAgIDI0MCwgMTA0LCAxMTEsIDIxOCwgMTA5LCAyNDUsIDk0LCAxMTEsIDIzMywgMTUsIDE3NywgMTI4LCAxMTEsIDI0MiwgMTMwLCAKKyAgICAxNzcsIDEyOCwgMTExLCAyMzMsIDE1LCAxMTcsIDEyOCwgMTExLCAyNDIsIDEzMCwgMTE3LCAxMjgsIDExMSwgMjMzLCAxNSwgCisgICAgMjUxLCA4OCwgMjI4LCA1MiwgMTI4LCAxMTEsIDI0MiwgMTMwLCAyNTEsIDg4LCAyMjgsIDUyLCAxMjgsIDExMSwgMjMwLCAKKyAgICA5NywgMjMzLCAxNCwgMjMwLCA5NywgMjQyLCAxMjksIDI1MiwgMjMsIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjI4LCA1MiwgCisgICAgMjMzLCAxNCwgMjI4LCA1MiwgMjQyLCAxMjksIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAxMjgsIDExMSwgMjI5LCAKKyAgICAxMDAsIDI0MiwgMTMwLCAyMjgsIDU5LCAxMjgsIDExMSwgMjMzLCAxNSwgMTc3LCAyNDUsIDk0LCAxMTEsIDI0MiwgMTMwLCAKKyAgICAxNzcsIDI0NSwgOTQsIDExMSwgMjI5LCAxMDAsIDIzMywgMTUsIDIyOCwgNTksIDI0NSwgOTQsIDExMSwgMjI5LCAxMDAsIAorICAgIDI0MiwgMTMwLCAyMjgsIDU5LCAyNDUsIDk0LCAxMTEsIDIzMywgMTUsIDE3NywgMjQyLCAxMjksIDI0MiwgMTMwLCAxNzcsIAorICAgIDIzMywgMTQsIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAyNDIsIDEyOSwgMjI5LCAxMDAsIDI0MiwgMTMwLCAyMjgsIAorICAgIDU5LCAyMzMsIDE0LCAyMjQsIDIwMiwgMjE4LCA1NSwgMjI0LCAyMDMsIDE3NywgMTI4LCAxMTEsIDIxOCwgNTYsIDE3NywgCisgICAgMTI4LCAxMTEsIDIyNCwgMjAzLCAxNzcsIDI0NSwgOTQsIDExMSwgMjE4LCA1NiwgMTc3LCAyNDUsIDk0LCAxMTEsIDI0NywgCisgICAgMTM4LCAyMjgsIDUyLCAyMjQsIDIwNSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIxOCwgNTcsIDIxOCwgNjQsIDIyNiwgMjMxLCAKKyAgICAyMTgsIDIyLCAyMjYsIDIzMSwgMjI4LCA1MiwgMTE1LCAyMTgsIDY0LCAyMjYsIDIzMSwgMjI4LCA1MiwgMTE1LCAyMTgsIAorICAgIDIyLCAyMjYsIDIzMSwgMjE4LCA2NCwgNjQsIDE3NywgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCAxNzcsIDEyOCwgMTExLCAKKyAgICAyMjksIDEwMCwgMTE1LCAyMTgsIDY0LCA2NCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIyOSwgMTAwLCAxMTUsIDIxOCwgMjIsIAorICAgIDY0LCAyMjgsIDU5LCAxMjgsIDExMSwgMjE4LCA2NCwgNjQsIDIsIDIyOCwgNTIsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgMiwgCisgICAgMjI4LCA1MiwgMTI4LCAxMTEsIDIzMCwgODEsIDIzMCwgODIsIDIzMCwgODMsIDIzMCwgODIsIDIxNCwgMTc1LCA0MiwgMjM2LCAKKyAgICAxNSwgMjI2LCAyMzEsIDQyLCAyMjYsIDE1MCwgMjI2LCAyMzEsIDQyLCAyMzYsIDE1LCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIAorICAgIDIyNiwgMTUwLCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIDI1MCwgMjUxLCA0MiwgMjQ5LCAxMDIsIDM3LCAyMjUsIDIyLCAzNywgCisgICAgMjMwLCAxODEsIDM3LCAyMTYsIDg1LCAzNywgMjQ3LCAxNjksIDIxOSwgOTUsIDM3LCA1OSwgMjI2LCAxNjcsIDM3LCAyMjIsIAorICAgIDIzNCwgMjI2LCAxNjcsIDM3LCAyNTMsIDIxNywgMjI2LCAxNjcsIDM3LCAyNDUsIDk3LCAzNywgMjQ4LCAxNTYsIDkyLCAKKyAgICAyMjUsIDIyLCA5MiwgMjMwLCAxODEsIDkyLCAyMTYsIDg1LCA5MiwgNTksIDIyNiwgMTY3LCA0NCwgMjE3LCA4NywgNDMsIAorICAgIDIxNywgODcsIDEyNCwgMjE3LCA4NywgMTIwLCAyMTcsIDg3LCAyNTMsIDIyMCwgMjMwLCAxNTYsIDIxNSwgMTkxLCAyNDQsIAorICAgIDI1LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNTIsIDQ0LCAyMTUsIAorICAgIDkzLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjI0LCAxNjMsIDIyOCwgNTIsIDIxNSwgMTkxLCAyNDcsIDEzOCwgMjI4LCA1MiwgCisgICAgMjQ0LCAyNiwgMjI5LCAxMDIsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0NCwgMjE1LCA5MywgMjI0LCAyMDMsIDIxNCwgMTg0LCAKKyAgICAyMjMsIDkxLCAyMTgsIDU2LCAyMTQsIDE4NCwgMjIzLCA5MSwgMjI4LCA1NywgMjE4LCA3NywgMjI2LCAyMzEsIDI0OSwgCisgICAgMTg2LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCA3NiwgMjI4LCA1NywgMjE4LCA3NywgNjQsIDE3NywgMTI4LCAxMTEsIAorICAgIDI0OSwgMTg2LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCA3NywgMTc3LCAxMjgsIDExMSwgMjI2LCAxNTAsIDIyNiwgMjMxLCAKKyAgICAyMzYsIDE1LCAyMjYsIDIzMSwgMjMwLCA4NywgMjQxLCAyMDAsIDI0OSwgMTk2LCAyMzEsIDEzNywgMjM1LCAyMDgsIDIxMSwgCisgICAgMTQ1LCAyMjksIDIwMiwgMjI4LCA1OCwgNDQsIDI1NCwgMTEwLCAyLCAyNTQsIDI1LCA0NCwgMjE1LCAyMjUsIDIzMCwgMjQsIAorICAgIDIzMiwgMTQ2LCAyNTQsIDExOCwgMjMwLCAyNCwgMjMyLCAxNDYsIDIyNiwgMTU4LCAyMzAsIDI0LCAyMzUsIDE5OCwgMjMwLCAKKyAgICAyNCwgMjE0LCAxNzUsIDI0NywgMjQ5LCAyMjYsIDE2NywgNTksIDIyNiwgMTY3LCAyMTgsIDE1NywgMjI2LCAxNjcsIDI0NywgCisgICAgMTY5LCAyMTYsIDg1LCAyNTEsIDE2NCwgNDMsIDIyOCwgNTcsIDI0NCwgMTgxLCAyMjAsIDE0OSwgMjI0LCAxODAsIDQ0LCAKKyAgICAyMjgsIDU3LCAyNDQsIDE4MSwgMjIwLCAxNDksIDIyNCwgMTgwLCA0MywgMjIwLCAxNDksIDIyNCwgMTgwLCA0NCwgMjIwLCAKKyAgICAxNDksIDIyNCwgMTgwLCAyMjMsIDQ5LCAyMTYsIDg5LCAyNDUsIDk3LCAyNDksIDk5LCAyMzIsIDE0NiwgMjI2LCAxNTgsIAorICAgIDI0OSwgOTksIDIzMiwgMTQ2LCAyNTQsIDExOCwgNTIsIDIxOCwgNjMsIDUyLCAyMTgsIDIxLCA1MiwgMjM1LCAxOTgsIDUyLCAKKyAgICAyMTQsIDE3NSwgMjI1LCA0NywgMTI4LCAyMiwgMjI2LCA4LCAxMTEsIDIzMywgMTUsIDIsIDI0NywgMTIwLCAyNDIsIDEzMCwgCisgICAgMiwgMjQ3LCAxMjAsIDIxMywgMTg3LCAyMzAsIDk3LCAyMzMsIDE0LCAyMTMsIDE4NywgMjMwLCA5NywgMjQyLCAxMjksIAorICAgIDIzMywgMTUsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIAorICAgIDE0LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTI5LCAxMjgsIDIxNiwgCisgICAgNDIsIDE3NywgMjI0LCAyMDIsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMTgsIDU1LCAyNDcsIDEzOCwgMjI4LCA1MiwgMjI0LCAKKyAgICAyMDYsIDE3NywgMjQ1LCA5OSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIxOCwgNTgsIDE3NywgMjQ1LCA5OSwgMjI4LCA1MiwgNDIsIAorICAgIDIzNiwgMTUsIDY0LCAxNzcsIDEyOCwgMTExLCAyMjgsIDUyLCA0MiwgMjI2LCAxNTAsIDY0LCAxNzcsIDEyOCwgMTExLCA0MiwgCisgICAgMjM2LCAxNSwgNjQsIDE3NywgMjI4LCA1MiwgMTI4LCAxMTEsIDQyLCAyMjYsIDE1MCwgNjQsIDE3NywgMjI4LCA1MiwgMTI4LCAKKyAgICAxMTEsIDIzMywgMTUsIDI1MSwgODgsIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjQyLCAxMzAsIDI1MSwgODgsIDIyOCwgNTIsIAorICAgIDI0NSwgOTQsIDExMSwgMjI0LCAyMDMsIDI1MSwgODgsIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjE4LCA1NiwgMjUxLCA4OCwgCisgICAgMjI4LCA1MiwgMjQ1LCA5NCwgMTExLCAyMjgsIDUyLCAyMjgsIDU3LCAyMTgsIDc3LCAyMjYsIDIzMSwgMjQ3LCAxMzgsIAorICAgIDIyOCwgNTIsIDI0OSwgMTg4LCAyNTMsIDIzOCwgMjI4LCA1NywgMjE4LCA3NiwgMjI4LCA1MiwgMjI4LCA1NywgMjE4LCA3NywgCisgICAgNjQsIDE3NywgMTI4LCAxMTEsIDI0NywgMTM4LCAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgCisgICAgNzcsIDE3NywgMjQ1LCA5OSwgNjcsIDI0NSwgMTYzLCAyMzAsIDIyMiwgMjAzLCAyNDUsIDE2MywgMTIwLCA0NCwgMjQ3LCAKKyAgICAyNTUsIDI0NSwgMTYzLCAxMjQsIDQ0LCAyNDcsIDI1NSwgMjQ1LCAxNjMsIDI0NSwgMTcwLCA2NCwgMiwgMTk5LCAyMDMsIAorICAgIDkxLCAyNDUsIDE3MCwgNjQsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgNCwgCisgICAgMjQ1LCAxNzAsIDY0LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDI0NSwgMTcwLCAKKyAgICA2NCwgMiwgNTksIDQ4LCAyNDUsIDE3MCwgNjQsIDIsIDIyNiwgMTIzLCA0LCAyNDUsIDE3MCwgNjQsIDIsIDIyNiwgMTIzLCAKKyAgICAyNDUsIDE3MCwgNjQsIDIsIDIxNCwgMTgzLCAyNDUsIDE3MCwgNjQsIDIsIDExMywgMjAzLCAyMTgsIDkwLCAyNDksIDE4NiwgCisgICAgMiwgMTk5LCAyMDMsIDkxLCAyNDksIDE4NiwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIAorICAgIDkxLCA0LCAyNDksIDE4NiwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCAyNDksIAorICAgIDE4NiwgMiwgMjI2LCAxMjMsIDQsIDI0OSwgMTg2LCAyLCAyMjYsIDEyMywgMjEwLCAxNjAsIDE4NywgMjUyLCAxNzMsIDIzMSwgCisgICAgNjEsIDI0NywgMjUwLCA1MCwgMjQ1LCAxNzIsIDc0LCAyNDAsIDIzNCwgMTIwLCAyNTMsIDI0OSwgMTI0LCAyNTMsIDI0OSwgCisgICAgMjI0LCAxNzUsIDIyNSwgMTY1LCAyMTIsIDMyLCAyMzIsIDIxMywgNDMsIDI1MCwgMTgxLCA0NCwgMjUwLCAxODEsIDQzLCAKKyAgICAyNDQsIDU3LCA0NCwgMjQ0LCA1NywgMjUxLCAxNzUsIDQ0LCAyNDksIDEzMiwgMjUxLCAxNzUsIDQzLCAyNDksIDEzMiwgCisgICAgMjE2LCAxNCwgNDQsIDI0OSwgMTMyLCAyMTYsIDE0LCA0MywgMjQ5LCAxMzIsIDIyMywgNDksIDIyOCwgNTIsIDUwLCA0MiwgCisgICAgMjMyLCAxMDQsIDI1NCwgMjUsIDIyMSwgMTY0LCAyMjEsIDE3MSwgMjE3LCAxLCAyMjMsIDEyMCwgMjI0LCAyNDEsIDIzNSwgCisgICAgMjM4LCAyMTMsIDE2NSwgMjE4LCAyMzQsIDIyNSwgNDEsIDY0LCAyMzUsIDIwNywgNTAsIDIxNSwgOTQsIDIyOCwgNTIsIDUwLCAKKyAgICAyMTIsIDQyLCAyNDAsIDIzNiwgMjE2LCAxNCwgNDMsIDI0OSwgMTYwLCAyMTYsIDE0LCA0NCwgMjQ5LCAxNjAsIDI1MSwgCisgICAgMTc1LCA0MywgMjQ5LCAxNjAsIDI1MSwgMTc1LCA0NCwgMjQ5LCAxNjAsIDIxNiwgMTQsIDE2MywgMjM1LCAyMTEsIDI1MSwgCisgICAgMTc1LCAxNjMsIDIzNSwgMjExLCAyNDMsIDI0MCwgMjE5LCA3NSwgMTIwLCAyNTMsIDI1MCwgMjUyLCAyNCwgMTEzLCAyMDMsIAorICAgIDI1MiwgMTI5LCAyMjYsIDE2MCwgMjM0LCAxMzgsIDI0NSwgOTAsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMjIsIDI1MSwgMjExLCAKKyAgICAxNzksIDIzNiwgMCwgMTE1LCAyMjMsIDExNywgMjUxLCAxNjMsIDIzNCwgMTM3LCAyMzMsIDQyLCAyNTQsIDExMCwgMTI3LCAKKyAgICAyMjIsIDI0NywgMjU0LCAxMTAsIDEyNywgMjQ1LCA5MCwgMjE2LCA0MiwgMjE2LCAxOTYsIDIzMywgNDYsIDI1MiwgMzUsIAorICAgIDIyMiwgMjMzLCAyNDksIDcwLCAyNTQsIDE1NSwgMjU0LCAxLCAyMTcsIDE4MSwgMjE2LCA0LCAyMjIsIDEyMywgMjQ3LCAKKyAgICAyMTUsIDIyNiwgMTUxLCAyNDksIDE5OCwgMjE3LCA1MiwgMjE5LCA4NiwgMjQ5LCAxNTEsIDI0OSwgMTUwLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDI0MCwgMTUxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxOCwgMjI4LCAyMjQsIDI3LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NSwgOTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ3LCAKKyAgICAxNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ3LCAyNDgsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjI0LCAyOCwgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNTAsIDM1LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI1MCwgMzYsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDIzNSwgNTYsIDI1NCwgCisgICAgNjYsIDI0MywgMjI1LCAxNiwgMjE5LCA5NiwgMTMwLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MiwgMTgxLCAxMzAsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjE5LCA5NSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAKKyAgICAyNTIsIDE4MCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMzMsIDE0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDI0MiwgMTI5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDE0MCwgMjE0LCAxOSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCA5NywgMjE0LCAxOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAxNDAsIDc0LCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDk3LCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyNTIsIDE4MCwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjQsIDIxNywgODgsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI0OCwgNTUsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDEyNCwgMjUwLCAyMzgsIDI1NCwgCisgICAgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ4LCA1NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjQsIDIxNywgODgsIAorICAgIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE0LCAxNTMsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjI0LCAyOCwgMjE0LCAxNTMsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDEyMCwgMjE3LCA4OCwgMjI2LCAxMjMsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCA2NiwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMTIwLCAyNTAsIDIzOCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDgsIDY1LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDEyMCwgMjE3LCA4OCwgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDYsIDEwNCwgMjE0LCAxOSwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDYsIDEwNCwgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIzLCAKKyAgICAyNTMsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgNTUsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI0NywgMjQ5LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMzUsIDU3LCAyMTQsIDE4MywgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIAorICAgIDIyMCwgNSwgMjM1LCA1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjMsIDI1MywgMjI0LCAyNywgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNTAsIDM2LCAyMTgsIDE1NiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDksIDIyNiwgCisgICAgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIAorICAgIDY2LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE4LCAxNTcsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIAorICAgIDE2LCAyMzUsIDU3LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjQ4LCAxLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDEyNCwgMjIwLCA1LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCA0MywgMjIwLCA1LCAKKyAgICAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTYsIDg5LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjQyLCAxMzAsIDI0OCwgMSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDksIDIyMCwgMTMwLCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDI0OCwgNjYsIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTAsIDM0LCAyNTQsIDY2LCAyNDMsIDIyNSwgCisgICAgMTYsIDIxOCwgMTM2LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIwLCAxNTEsIDIxNCwgMTgzLCAyNTQsIDY2LCAKKyAgICAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIyOCwgNTIsIDI0NSwgOTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMjI0LCAxMiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjQsIDI1MCwgMjM5LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAKKyAgICAxNiwgMTIwLCAyNTAsIDIzOSwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIzNSwgMTg1LCAyNTQsIDY2LCAyNDMsIAorICAgIDIyNSwgMTYsIDIyMywgMzcsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI2LCAyMDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgCisgICAgMjU0LCAxNDQsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0NSwgMTAxLCAyMTQsIDE4MywgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMzUsIDE4NiwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI2LCAyMDIsIDIxNCwgCisgICAgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1NCwgMTQzLCAyMjgsIDUyLCAyNTAsIDEzMCwgNzgsIDQ0LCAyNTQsIAorICAgIDExMCwgMiwgMjQ2LCAxMDQsIDIxMCwgMzUsIDc0LCAyMTksIDIzNSwgMjA0LCAyNTEsIDE2MywgMjUyLCA0NSwgODcsIDY3LCAKKyAgICAyMzIsIDIxNCwgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCAyMzUsIDIxNiwgODcsIDI0OSwgMTgzLCAyMTQsIDE4MSwgODcsIAorICAgIDI0NywgMTg5LCAyMTQsIDE4MSwgODcsIDI0NSwgMTU0LCA4NywgMjQ5LCAyMTAsIDg3LCA3MSwgNDIsIDIsIDI1MCwgMTc1LCAKKyAgICA2NywgMjMyLCAyMTMsIDI0NSwgMTMwLCA4NywgMjU0LCAxMzksIDIzNCwgMTM5LCA4NywgMjQxLCAyMTMsIDg3LCAzNywgCisgICAgMjAzLCAyNTIsIDE0MSwgMiwgMjI4LCA1MCwgMzcsIDIxNSwgMjI2LCAyNDYsIDEwNiwgMjUxLCAxMzUsIDI1MCwgMzYsIDIsIAorICAgIDIyOCwgNTQsIDc0LCAyMTQsIDE3OSwgODcsIDIzMCwgMTM3LCA4NywgMjQwLCAxNjQsIDg3LCAyMjYsIDE3NCwgMjQyLCA1OSwgCisgICAgODcsIDIyNiwgMTc0LCAyMzMsIDE0NywgODcsIDIyNSwgMjQ0LCA4NywgMjI1LCAyNDMsIDg3LCAyNDcsIDE5NywgMjQ5LCAKKyAgICA5NywgMTYsIDI0NCwgMjAsIDEwNSwgMjE5LCA1MCwgODcsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyNywgMjQ4LCAKKyAgICA4MywgMjIwLCAxMzgsIDIzNCwgMTM5LCA4NywgMjI0LCAxOTIsIDIyNiwgNzUsIDIyOSwgODIsIDIyNiwgNzUsIDIyNCwgCisgICAgMTg4LCAyMjEsIDE4OSwgODcsIDI1MCwgMTcsIDIyMSwgMTg5LCA4NywgNDMsIDIyNiwgNCwgMjE0LCAxNjAsIDEwMywgNDMsIAorICAgIDIyNiwgNCwgMjQ1LCAyMSwgNDMsIDIyNiwgNCwgMjMyLCAxMDgsIDEwMywgNDQsIDIyNiwgNCwgMjE0LCAxNjAsIDEwMywgCisgICAgNDQsIDIyNiwgNCwgMjQ1LCAyMSwgNDQsIDIyNiwgNCwgMjMyLCAxMDgsIDEwMywgNDMsIDQyLCAyNTEsIDE1OCwgMjE0LCAKKyAgICAxNjAsIDI0OSwgMTYwLCA0MywgNDIsIDI1MSwgMTU4LCAyNDUsIDIxLCA0MywgNDIsIDI1MSwgMTU4LCAyMzIsIDEwOCwgCisgICAgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDIxNCwgMTYwLCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMjQ1LCAKKyAgICAyMSwgNDQsIDQyLCAyNTEsIDE1OCwgMjMyLCAxMDgsIDI0OSwgMTYwLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIxNCwgCisgICAgMTYwLCAxMDMsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjMwLCAyMjQsIDIyNSwgMTAxLCA0MywgMjQ5LCA5OSwgMjUxLCAKKyAgICAxNTgsIDIzMiwgMTA4LCAxMDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyNDUsIDIxLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIAorICAgIDIxNCwgMTYwLCAxMDMsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgMjMwLCAyMjQsIDIyNSwgMTAxLCA0NCwgMjQ5LCA5OSwgCisgICAgMjUxLCAxNTgsIDIzMiwgMTA4LCAxMDMsIDIzNSwgMjEyLCAyNDUsIDIxLCAyMDMsIDIzMiwgMjE0LCAyNDUsIDIxLCAyMTQsIAorICAgIDE2MCwgNDMsIDE3NywgMjMyLCAxMDgsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgMjIxLCAxNzIsIDIxNCwgMTYwLCA0NCwgCisgICAgMTc3LCAyMzIsIDEwOCwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMjEsIDE3MiwgMjE4LCA0MSwgMjE2LCAxMywgMjE4LCAKKyAgICA0MSwgMjUxLCAxNzQsIDIxNiwgMTQsIDQyLCAxMjcsIDI1MSwgMTc1LCA0MiwgMTI3LCAyNTEsIDE3NSwgNDIsIDI1MSwgCisgICAgMTU4LCAxMTcsIDIxNiwgMTQsIDQyLCAxMjcsIDM0LCAxNiwgMjUxLCAxNzQsIDQzLCA2NywgOTMsIDIzMiwgMjEzLCA0NCwgCisgICAgNjcsIDkzLCAyMzIsIDIxMywgMjAzLCAyMjEsIDIwNSwgMjMyLCAyMTIsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjExLCAyMDMsIAorICAgIDIyMSwgMjA1LCAyMzIsIDIxMCwgMjAzLCAyMjEsIDIwNSwgMjMyLCAyMDksIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgCisgICAgMjE2LCAxNCwgMjIyLCAyNTEsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjUxLCAxNzUsIDIyMiwgMjUxLCAyNDgsIDQ2LCAKKyAgICAxNiwgMTkyLCA2NywgMiwgMjUwLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgMTI0LCAyMiwgMjAzLCAyLCAyNTAsIDM1LCAyNDgsIAorICAgIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDI1MCwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyLCAyMTUsIDIyNSwgCisgICAgMjQ4LCA0NiwgMTYsIDE5MiwgMTI0LCAyMiwgMjAzLCAyLCAyMTUsIDIyNSwgMjQ4LCA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgCisgICAgMjAzLCAyLCAyMTUsIDIyNSwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAyMTIsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAKKyAgICAxMjQsIDIyLCAyMDMsIDIsIDIxMiwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgCisgICAgMjQ4LCA0NiwgMTYsIDE5MiwgMTI0LCAyMiwgMjQxLCA0NCwgMjQ4LCA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjQxLCA0NCwgCisgICAgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAyMTYsIDE0LCAyMzMsIDQ2LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIAorICAgIDI1MSwgMTc1LCAyMzMsIDQ2LCA0MiwgMjQ0LCAzMiwgMjIzLCA1NCwgODcsIDI0NSwgMTgyLCA4NywgNjcsIDIzMiwgMjE0LCAKKyAgICAyNDUsIDIxLCAyMzEsIDMzLCAyNTEsIDE0NiwgMjMxLCAzMywgMTk5LCAxMTcsIDIxOSwgMjUwLCAyMzEsIDMzLCAyMTksIAorICAgIDI1MSwgMTE3LCAyMzIsIDEzNywgMjMxLCAzMywgMTk5LCAxMTcsIDExMywgMjE5LCAyMzcsIDIzMSwgMzMsIDExMywgMjE5LCAKKyAgICAyMzgsIDExNywgMjMyLCAxMzcsIDIzMSwgMzMsIDExMywgMjE5LCAyMzgsIDIzNSwgNjQsIDIzMSwgMzMsIDIxNSwgMjA4LCAKKyAgICAyMzEsIDMzLCAyMTYsIDIyMywgMjMxLCAzMywgMjI1LCAxODgsIDI0NSwgMjI0LCAyNDIsIDEyMiwgMjQzLCAyMTksIDIxNiwgCisgICAgMTQsIDIyNiwgMywgMjUxLCAxNzUsIDIyNiwgMywgMjE2LCAxNCwgMjQ5LCA5OSwgMTI3LCAyNTEsIDE3NSwgMjQ5LCA5OSwgCisgICAgMTI3LCAyMTYsIDE0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjUxLCAxNzUsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA3MSwgCisgICAgMjE1LCAyMzksIDI1MiwgMzUsIDIyMiwgMjM0LCAyLCAyNTAsIDM1LCAyMTgsIDEyMCwgMjQ0LCA2NCwgMjU1LCAxNywgMjQ5LCAKKyAgICA5NiwgMjQ1LCAxNzEsIDIzNSwgMTk4LCAyNDgsIDgzLCAyNDUsIDI0LCA4NywgODUsIDIyMiwgMjQ3LCA1MiwgMjE1LCAyMjUsIAorICAgIDg1LCAyMzMsIDQyLCA1MiwgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MiwgNTIsIDIxNSwgMjI1LCA4NSwgMjQ2LCAxMDUsIDUyLCAKKyAgICAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCA1MiwgMjE1LCAyMjYsIDIsIDY3LCAxMzAsIDg1LCAyMzMsIDQyLCA1MiwgMjE1LCAKKyAgICAyMjYsIDIsIDY3LCAxMzAsIDg1LCAyMjIsIDI0NywgMjE1LCAyMjYsIDIsIDUyLCA2NywgMTMwLCAyNTQsIDE3MywgMjUwLCAKKyAgICAzLCAyMTgsIDEyNiwgMjE2LCA4NiwgMjUwLCAzLCAyNDAsIDIzNywgMiwgMjQ0LCA1MCwgMjIxLCAyNDEsIDE2LCAzMSwgCisgICAgMjI3LCAyMDIsIDE2LCAzMSwgMjE4LCAxNTIsIDY0LCAyNDEsIDIzMywgMTYsIDMxLCAyMTgsIDE1MiwgNjQsIDIxNiwgMjEyLCAKKyAgICAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE2LCAyMTIsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMTUsIDI0MywgMTYsIDMxLCAKKyAgICAyNDUsIDEzMiwgMTYsIDMxLCAyNTUsIDcsIDE2LCAzMSwgMjUyLCA0NCwgMTYsIDMxLCAyNTIsIDE3OSwgMTYsIDMxLCAyMDMsIAorICAgIDIxNywgODksIDE2LCAzMSwgMjMyLCAyMTQsIDI0NCwgMTQ1LCAxNiwgMzEsIDY3LCAyMTcsIDg5LCAxNiwgMzEsIDI0NCwgCisgICAgMjAsIDI0NCwgMTQ1LCAxNiwgMzEsIDI1MCwgMjMwLCAyMjMsIDUzLCAxNiwgMzEsIDIyMCwgMjgsIDIyNiwgMTMwLCAxNiwgCisgICAgMzEsIDIyMCwgMjgsIDIzNSwgMjU1LCAxNiwgMzEsIDI0OCwgMTUxLCAyMzIsIDIwNCwgMjQ1LCA3NywgMTYsIDMxLCAyNDgsIAorICAgIDMxLCAyNDksIDE3OCwgMTEwLCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgMTc4LCAxMDUsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAKKyAgICAxNzgsIDE1OCwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIDE3OCwgMTYxLCAxNiwgMzEsIDE1MiwgMjU1LCA3LCAxNiwgMzEsIAorICAgIDIxNywgMTc3LCAyMzYsIDYyLCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDQsIDI1MSwgMjEzLCAxNiwgMzEsIDI1MSwgCisgICAgNSwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIzMSwgODEsIDE2LCAzMSwgMjE4LCA2MSwgMTYsIDMxLCAyNDUsIDc3LCAxNiwgCisgICAgMzEsIDI0NCwgMTA3LCAyMjAsIDEzNywgMTYsIDMxLCAyNDIsIDEyMSwgMjIwLCAxMzcsIDE2LCAzMSwgMjIzLCAxMjEsIAorICAgIDIyMCwgMTM3LCAxNiwgMzEsIDIxNCwgMTc0LCAyMjAsIDEzNywgMTYsIDMxLCAyMTksIDE4LCAxNiwgMzEsIDI0OCwgNjMsIAorICAgIDI1MSwgMjE2LCA4NywgMjA0LCAyNTEsIDE2MywgMTYsIDMxLCAyMjksIDg1LCAxNiwgMzEsIDI0OCwgNjQsIDI0NCwgMjAsIAorICAgIDEwNSwgMTYsIDMxLCAyMTgsIDYyLCAyNDQsIDIwLCAxMDUsIDIyNiwgMjQxLCAxMDMsIDIyNiwgMjQxLCAyNTAsIDE1MiwgCisgICAgMjI2LCAyNDEsIDI0NCwgMjMsIDIyNiwgMjQxLCAyMzUsIDE5MywgMjQ0LCAyMywgMjI2LCAyNDEsIDI1MiwgNDIsIDI1MSwgCisgICAgMTI0LCAyMjYsIDI0MSwgMjUxLCAxNzAsIDIxNiwgMTExLCAyMjYsIDI0MSwgMjUxLCAxNTUsIDI1MiwgMTQ2LCAyNDAsIAorICAgIDEwMywgMjI2LCAyNDEsIDI1NCwgMTI3LCA2NCwgMjUwLCAxMjksIDIyNiwgMjQxLCAyNDgsIDE1NiwgMjI2LCAyNDEsIDI0OSwgCisgICAgODcsIDI1NSwgMTEsIDIyNywgMjAwLCAyMjYsIDI0MSwgNTIsIDI1MiwgMTgwLCAzNywgMjEsIDExMCwgMzcsIDIxLCAxMDUsIAorICAgIDM3LCAyMSwgMTU4LCAzNywgMjEsIDE2MSwgMzcsIDIxLCAxODksIDM3LCAyMSwgMTk0LCAzNywgMjEsIDE5OCwgMzcsIDIxLCAKKyAgICAxOTUsIDM3LCAyMSwgMjAwLCAzNywgNTQsIDIxNiwgMjQ3LCAzNywgNTQsIDI0NSwgMTY3LCAzNywgNTQsIDIxNSwgNzYsIAorICAgIDM3LCA1NCwgMjE2LCAxNjQsIDM3LCA1NCwgMjQ0LCA1LCAzNywgNTQsIDI0NCwgMTE4LCAzNywgNTQsIDIxOSwgMTE5LCAzNywgCisgICAgNTQsIDIyMCwgMTE5LCAzNywgNTQsIDI0NSwgMTkwLCAzNywgNTQsIDIyOCwgMTk3LCAzNywgNTQsIDIxNSwgNzMsIDg4LCAKKyAgICAyMSwgMTEwLCA4OCwgMjEsIDEwNSwgODgsIDIxLCAxNTgsIDg4LCAyMSwgMTYxLCA4OCwgMjEsIDE4OSwgODgsIDIxLCAxOTQsIAorICAgIDg4LCAyMSwgMTk4LCA4OCwgMjEsIDE5NSwgODgsIDIxLCAyMDAsIDg4LCA1NCwgMjE2LCAyNDcsIDg4LCA1NCwgMjQ1LCAKKyAgICAxNjcsIDg4LCA1NCwgMjE1LCA3NiwgODgsIDU0LCAyMTYsIDE2NCwgODgsIDU0LCAyNDQsIDUsIDg4LCA1NCwgMjQ0LCAxMTgsIAorICAgIDg4LCA1NCwgMjE5LCAxMTksIDg4LCA1NCwgMjIwLCAxMTksIDg4LCA1NCwgMjQ1LCAxOTAsIDg4LCA1NCwgMjI4LCAxOTcsIAorICAgIDg4LCA1NCwgMjE1LCA3MywgMjEsIDEyMywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMTEzLCAyNDMsIDIyOSwgMjE4LCAKKyAgICAxMjksIDIxLCAxMzQsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDI0NCwgMTEsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIAorICAgIDI0NCwgODEsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIxOSwgMTI1LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMjAsIAorICAgIDEyMiwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjQ1LCAxOTMsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDIyOCwgMjAwLCAKKyAgICAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMTYsIDI0OCwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjQ1LCAxNjgsIDI0MywgCisgICAgMjI5LCAyMTgsIDEyOSwgNTQsIDIxNSwgNzcsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIxNiwgMTY1LCAyNDMsIDIyOSwgCisgICAgMjE4LCAxMjksIDU0LCAyNDQsIDYsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDI0NCwgMTE5LCAyNDMsIDIyOSwgMjE4LCAKKyAgICAxMjksIDU0LCAyMTksIDEyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjIwLCAxMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgNTQsIDI0NSwgMTkxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMjgsIDE5OCwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgCisgICAgMjE1LCA3NCwgMjQzLCAyMjksIDIxOCwgMTI5LCA4OCwgNywgNCwgMSwgNjEsIDg4LCA3LCA0LCAxLCAyNTMsIDE1OCwgODgsIAorICAgIDcsIDQsIDEsIDI1MSwgNjYsIDg4LCA3LCA0LCAxLCAyNDksIDYwLCA4OCwgNywgNCwgMSwgNzUsIDg4LCA3LCA0LCAxLCAKKyAgICAyNDUsIDYsIDg4LCA3LCA0LCAxLCAyNDMsIDIwMiwgODgsIDcsIDQsIDEsIDI0MiwgNjAsIDg4LCA3LCA0LCAxLCA3MywgODgsIAorICAgIDcsIDQsIDEsIDIzNSwgMTQ0LCA4OCwgNywgNCwgMSwgMjM1LCAyMywgODgsIDcsIDQsIDEsIDE1NiwgODgsIDcsIDQsIDEsIAorICAgIDE5MywgODgsIDcsIDQsIDEsIDIzMCwgMjUsIDg4LCA3LCA0LCAxLCA3NiwgODgsIDcsIDQsIDEsIDIyNiwgMTA1LCA4OCwgNywgCisgICAgNCwgMSwgMjI0LCA5NiwgODgsIDcsIDQsIDEsIDE1MywgODgsIDcsIDQsIDEsIDIyMiwgOTEsIDg4LCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgODgsIDcsIDQsIDEsIDcwLCA4OCwgNywgNCwgMSwgMjE0LCAxMDUsIDg4LCA3LCA0LCAxLCAyMTIsIDk4LCA4OCwgNywgCisgICAgNCwgMSwgMjExLCAxNzgsIDg4LCA3LCA0LCAxLCAyMTEsIDExNywgODgsIDcsIDQsIDEsIDIxMCwgMTU5LCAzNywgNywgNiwgCisgICAgMSwgNjEsIDM3LCA3LCA2LCAxLCAyNTMsIDE1OCwgMzcsIDcsIDYsIDEsIDI1MSwgNjYsIDM3LCA3LCA2LCAxLCAyNDksIDYwLCAKKyAgICAzNywgNywgNiwgMSwgNzUsIDM3LCA3LCA2LCAxLCAyNDUsIDYsIDM3LCA3LCA2LCAxLCAyNDMsIDIwMiwgMzcsIDcsIDYsIDEsIAorICAgIDI0MiwgNjAsIDM3LCA3LCA2LCAxLCA3MywgMzcsIDcsIDYsIDEsIDIzNSwgMTQ0LCAzNywgNywgNiwgMSwgMjM1LCAyMywgCisgICAgMzcsIDcsIDYsIDEsIDE1NiwgMzcsIDcsIDYsIDEsIDE5MywgMzcsIDcsIDYsIDEsIDIzMCwgMjUsIDM3LCA3LCA2LCAxLCAKKyAgICA3NiwgMzcsIDcsIDYsIDEsIDIyNiwgMTA1LCAzNywgNywgNiwgMSwgMjI0LCA5NiwgMzcsIDcsIDYsIDEsIDE1MywgMzcsIDcsIAorICAgIDYsIDEsIDIyMiwgOTEsIDM3LCA3LCA2LCAxLCAyMTcsIDE1MiwgMzcsIDcsIDYsIDEsIDcwLCAzNywgNywgNiwgMSwgMjE0LCAKKyAgICAxMDUsIDM3LCA3LCA2LCAxLCAyMTIsIDk4LCAzNywgNywgNiwgMSwgMjExLCAxNzgsIDM3LCA3LCA2LCAxLCAyMTEsIDExNywgCisgICAgMzcsIDcsIDYsIDEsIDIxMCwgMTU5LCAzNywgNywgNCwgMSwgNjEsIDM3LCA3LCA0LCAxLCAyNTMsIDE1OCwgMzcsIDcsIDQsIAorICAgIDEsIDI1MSwgNjYsIDM3LCA3LCA0LCAxLCAyNDksIDYwLCAzNywgNywgNCwgMSwgNzUsIDM3LCA3LCA0LCAxLCAyNDUsIDYsIAorICAgIDM3LCA3LCA0LCAxLCAyNDMsIDIwMiwgMzcsIDcsIDQsIDEsIDI0MiwgNjAsIDM3LCA3LCA0LCAxLCA3MywgMzcsIDcsIDQsIAorICAgIDEsIDIzNSwgMTQ0LCAzNywgNywgNCwgMSwgMjM1LCAyMywgMzcsIDcsIDQsIDEsIDE1NiwgMzcsIDcsIDQsIDEsIDE5MywgCisgICAgMzcsIDcsIDQsIDEsIDIzMCwgMjUsIDM3LCA3LCA0LCAxLCA3NiwgMzcsIDcsIDQsIDEsIDIyNiwgMTA1LCAzNywgNywgNCwgCisgICAgMSwgMjI0LCA5NiwgMzcsIDcsIDQsIDEsIDE1MywgMzcsIDcsIDQsIDEsIDIyMiwgOTEsIDM3LCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgMzcsIDcsIDQsIDEsIDcwLCAzNywgNywgNCwgMSwgMjE0LCAxMDUsIDM3LCA3LCA0LCAxLCAyMTIsIDk4LCAzNywgNywgCisgICAgNCwgMSwgMjExLCAxNzgsIDM3LCA3LCA0LCAxLCAyMTEsIDExNywgMzcsIDcsIDQsIDEsIDIxMCwgMTU5LCAzNywgMjEsIAorICAgIDIxMCwgODYsIDE1MiwgMzcsIDU0LCAyNDUsIDE2NywgMTUyLCAzNywgNTQsIDIxNSwgNzYsIDE1MiwgMzcsIDU0LCAyMTYsIAorICAgIDE2NCwgMTUyLCAzNywgNTQsIDI0NCwgNSwgMTUyLCAzNywgNTQsIDI0NCwgMTE4LCAxNTIsIDM3LCA1NCwgMjE5LCAxMTksIAorICAgIDE1MiwgMzcsIDU0LCAyMjAsIDExOSwgMTUyLCAzNywgNTQsIDI0NSwgMTkwLCAxNTIsIDM3LCA1NCwgMjI4LCAxOTcsIDE1MiwgCisgICAgMzcsIDU0LCAyMTUsIDczLCA1MiwgMzcsIDIxLCAxMTAsIDUyLCAzNywgMjEsIDEwNSwgNTIsIDM3LCAyMSwgMTU4LCA1MiwgCisgICAgMzcsIDIxLCAxNjEsIDUyLCAzNywgMjEsIDE4OSwgNTIsIDM3LCAyMSwgMTk0LCA1MiwgMzcsIDIxLCAxOTgsIDUyLCAzNywgCisgICAgMjEsIDE5NSwgNTIsIDM3LCAyMSwgMjAwLCA1MiwgMzcsIDU0LCAyMTYsIDI0NywgMTUyLCAzNywgMjEsIDIxMCwgODYsIDkzLCAKKyAgICA5OSwgMTkyLCAyNDEsIDQ0LCA5MywgOTksIDExNCwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDIxMywgMjM5LCA5MywgOTksIAorICAgIDExNCwgMjEzLCAyMzksIDkzLCA5OSwgMTkyLCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTE0LCAKKyAgICAyMTUsIDIxMSwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDIxMywgMjM5LCAKKyAgICA5MywgOTksIDExNCwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTIsIDIyNCwgMjQsIDI0OCwgCisgICAgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDExNCwgMjI0LCAyNCwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMjQsIAorICAgIDI0LCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMjQsIDI0LCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgCisgICAgMTkyLCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQ0LCAyNDEsIDIyMSwgOTMsIDk5LCAxMjQsIAorICAgIDExNCwgMjIsIDQ0LCAyMzIsIDIzMCwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMTI0LCAKKyAgICAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIAorICAgIDQzLCAyMzIsIDIzMCwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAxMjAsIDIyLCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDQ0LCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQ0LCAyMzIsIAorICAgIDIzMCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMjMzLCA0NiwgOTMsIAorICAgIDk5LCAxMjAsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQzLCAyMzIsIDIzMCwgOTMsIAorICAgIDk5LCAxMTQsIDEyMCwgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCA2NywgMjIsIDIyMiwgMjUxLCA5MywgOTksIDY3LCAKKyAgICAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCAKKyAgICAxMjQsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxMTQsIDIyLCA0NCwgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTI0LCAxOTIsIDIyLCA0NCwgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDQ0LCAxMjQsIDI0MSwgCisgICAgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDY3LCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAKKyAgICA2NywgMTkyLCAyMiwgNDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTI0LCAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTE0LCAyMiwgNDMsIDIzMiwgMjMwLCAKKyAgICA5MywgOTksIDEyNCwgMTkyLCAyMiwgNDMsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0MywgMTI0LCAKKyAgICAyNDEsIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDEyNCwgMjIsIDI0MSwgNDQsIAorICAgIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCA0MywgMTI0LCAKKyAgICAyMzIsIDIzMCwgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAyMDMsIAorICAgIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgMTI0LCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAyMiwgCisgICAgNDQsIDEyNCwgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMTIwLCAyMiwgCisgICAgMjQxLCA0NCwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCAKKyAgICAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgMjAzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIAorICAgIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDE5MiwgMjIsIDQzLCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIAorICAgIDIyLCA0NCwgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCA2NywgCisgICAgMjIsIDI0MSwgNDQsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCA2NywgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDExNCwgMjIsIAorICAgIDQzLCA2NywgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIAorICAgIDIyLCAxMjQsIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAxMjAsIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgNjcsIDExNCwgMjIsIDIwMywgMjMyLCAyMzAsIDkzLCA5OSwgNDMsIDEyMCwgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIAorICAgIDkzLCA5OSwgNDQsIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgNDMsIDEyNCwgMTE0LCAyMiwgCisgICAgNDQsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNDQsIDEyNCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgMTI0LCAxOTIsIDIyLCAxMjAsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCAxMjQsIDIwMywgMjQxLCAKKyAgICAyMjEsIDkzLCA5OSwgNDQsIDE5MiwgMjIsIDQzLCA2NywgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIDQ0LCA2NywgCisgICAgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCA1MiwgMjQ4LCAxNTcsIDI0MSwgCisgICAgNDQsIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNTcsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCA1MiwgMjQ4LCAxNTcsIDIxMywgCisgICAgMjM5LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTU3LCAyMTMsIDIzOSwgOTMsIDk5LCA1MiwgMjQxLCA0NCwgOTMsIDk5LCAKKyAgICA1MiwgMjEzLCAyMzksIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAKKyAgICAyMiwgNDQsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxMjQsIDIxOSwgMTU1LCAKKyAgICAyMiwgNDMsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIDIyLCA0MywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIAorICAgIDIzMywgNDYsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgCisgICAgNDQsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxMjAsIDIxOSwgMTU1LCAyMiwgCisgICAgNDMsIDI0NiwgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCA0MywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIAorICAgIDIzMywgNDYsIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgNDQsIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDQ0LCAKKyAgICAyMTksIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCA2NywgMjE5LCAxNTUsIDIyLCA0MywgCisgICAgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCA2NywgMjIsIDIzMywgNDYsIAorICAgIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgMjIsIDIwMywgMjE5LCAKKyAgICAxNTQsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAKKyAgICAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDIwMywgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDI0MSwgNDQsIAorICAgIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgMjAzLCAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCAyMDMsIDIxOSwgCisgICAgMTU0LCA5MywgOTksIDUyLCA2NywgMjIsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjQsIDIyLCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyNCwgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjAsIAorICAgIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAyNDcsIAorICAgIDI1NSwgMjE0LCAxNjAsIDQ0LCAyMTYsIDQyLCAyMzIsIDEwOCwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI0NywgMjU1LCAKKyAgICAyMTQsIDE2MCwgNDMsIDIxNiwgNDIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDI0NywgMjU1LCAyNDksIAorICAgIDEzMCwgOTMsIDk5LCAxOTIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyMTQsIDE2MywgOTMsIDk5LCAxOTIsIDIyMiwgMjUxLCAKKyAgICA5MywgOTksIDE5MiwgMjQ2LCAxMDYsIDkzLCA5OSwgMTE0LCAyMzMsIDQ2LCA5MywgOTksIDExNCwgMjE0LCAxNjMsIDkzLCAKKyAgICA5OSwgMTE0LCAyMjIsIDI1MSwgOTMsIDk5LCAxMTQsIDI0NiwgMTA2LCA5MywgOTksIDE5MiwgNDMsIDIyLCAxMTQsIDIyMiwgCisgICAgMjUxLCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMTE0LCAyNDYsIDEwNiwgOTMsIDk5LCAxMTQsIDQzLCAyMiwgMTkyLCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDE5MiwgMjQ2LCAxMDYsIDIxNCwgMTYwLCAxNjMsIDI1MSwgMjEzLCAyMzIsIAorICAgIDEwOCwgMTIzLCAyNDUsIDE4OSwgMjUxLCAyMTMsIDIzMiwgMTA4LCAxMjMsIDIyNCwgMjIsIDI1MSwgMjEzLCAyMzIsIDEwOCwgCisgICAgMTM0LCAyNDUsIDE4NywgMjUxLCAyMTMsIDIzMiwgMTA4LCAxNjMsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMjQ0LCA4MSwgMjQ1LCAKKyAgICAxODcsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTM0LCAyMjQsIDIwLCAyNTEsIDIxMywgMjMyLCAxMDgsIDIyMCwgMTIyLCAyNDUsIAorICAgIDE4NywgMjUxLCAyMTMsIDI0MywgMjI5LCAyNTEsIDIxMywgNDMsIDIyMCwgMTIyLCAyNDUsIDE4NywgMjUxLCAyMTMsIDQzLCAKKyAgICAxMzQsIDIyNCwgMjAsIDI1MSwgMjEzLCA0MywgMjQ0LCA4MSwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgMTYzLCAyNTEsIAorICAgIDIxMywgNDMsIDEzNCwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgMTIzLCAyMjQsIDIyLCAyNTEsIDIxMywgNDMsIDEyMywgCisgICAgMjQ1LCAxODksIDI1MSwgMjEzLCA0NCwgMTYzLCAyNTEsIDIxMywgMTkyLCAyMjAsIDkyLCAyMzEsIDgyLCAyMjAsIDkyLCAKKyAgICAyNDgsIDE2MiwgMjIwLCA5MiwgMjE0LCAxNjAsIDEyMywgMjQ1LCAxODksIDI1MSwgMjEzLCA0NCwgMTIzLCAyNDUsIDE4OSwgCisgICAgMjUxLCAyMTMsIDIyNCwgMjYsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgCisgICAgMjYsIDIxNCwgMTYwLCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgNDMsIDIyLCAyMzIsIDEwOCwgNDMsIDIyLCAyMzIsIAorICAgIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCA0MywgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgMjI0LCAyNiwgCisgICAgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCAKKyAgICA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDIyMiwgCisgICAgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMiwgMjMyLCAxMDgsIDQzLCAyMiwgMjMyLCAxMDgsIDIyMiwgMjUxLCA4NSwgMjE4LCAyMzQsIDcxLCAyMTgsIDIzNCwgNzEsIAorICAgIDQyLCAyLCAyMjIsIDE4MywgMjQ5LCAxNTksIDcxLCA0MiwgMjQ5LCAxODcsIDg1LCA0LCAyMTgsIDIzNCwgNDIsIDIsIDIwMywgCisgICAgMjQ0LCAxMDUsIDQyLCAyLCA2NywgMjQ0LCAxMDUsIDQyLCAyLCAyMjYsIDE0NCwgMjQ5LCAxMjYsIDI0NCwgMTA1LCA0MiwgCisgICAgMiwgMjE0LCAxNjAsIDQzLCAyMTYsIDQyLCAyMzIsIDEwOCwgNDQsIDI0NCwgMTA1LCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMTYsIDQyLCAyMzIsIDEwOCwgNDMsIDI0NCwgMTA1LCA0MiwgMiwgMjQ3LCAyNTUsIDI0OSwgMTI2LCAyNDQsIDEwNSwgODUsIAorICAgIDQsIDIxOCwgMjM0LCA3MSwgNCwgMjE4LCAyMzQsIDg1LCAyMjMsIDExNiwgNzEsIDIyMywgMTE2LCA4NSwgNjcsIDIyMywgCisgICAgMTE2LCA3MSwgNjcsIDIyMywgMTE2LCA4NSwgMjI2LCA2LCA3MSwgMjI2LCA2LCA4NSwgMjE0LCAxNjIsIDIxNSwgMjI1LCAKKyAgICA3MSwgMjE0LCAxNjIsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI1LCA3MSwgMjE0LCAxNjIsIDQsIDIxNSwgCisgICAgMjI1LCA4NSwgMjIyLCAyNDcsIDIxNSwgMjI1LCA3MSwgMjIyLCAyNDcsIDIxNSwgMjI1LCA4NSwgMjIyLCAyNDcsIDQsIAorICAgIDIxNSwgMjI1LCA3MSwgMjIyLCAyNDcsIDQsIDIxNSwgMjI1LCA4NSwgMjIyLCAyNDcsIDIyNSwgOCwgNzEsIDIyMiwgMjQ3LCAKKyAgICAyMjUsIDgsIDg1LCAyNDYsIDEwNSwgMjE1LCAyMjUsIDcxLCAyNDYsIDEwNSwgMjE1LCAyMjUsIDg1LCAyNDYsIDEwNSwgNCwgCisgICAgMjE1LCAyMjUsIDcxLCAyNDYsIDEwNSwgNCwgMjE1LCAyMjUsIDg1LCAyMzMsIDQyLCAyMTUsIDIyNSwgNzEsIDIzMywgNDIsIAorICAgIDIxNSwgMjI1LCA4NSwgMjMzLCA0MiwgNCwgMjE1LCAyMjUsIDcxLCAyMzMsIDQyLCA0LCAyMTUsIDIyNSwgODUsIDIzMywgCisgICAgNDIsIDIyNSwgOCwgNzEsIDIzMywgNDIsIDIyNSwgOCwgODUsIDI0NywgMjQ4LCA3MSwgMjQ3LCAyNDgsIDcxLCAyNDcsIAorICAgIDI0OSwgMjQ5LCAxODcsIDg1LCA0LCAyNDcsIDI0OCwgMjQ0LCA4OSwgMjMyLCAxMDQsIDcxLCAyNTAsIDM1LCAyNDYsIDExOCwgCisgICAgMjUwLCAzNSwgMjUwLCAzNiwgMiwgNjcsIDI0NCwgMTA1LCAyNTEsIDExMSwgODUsIDI1MCwgMzUsIDI1MCwgMzYsIDIsIDQzLCAKKyAgICAxNjMsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjMyLCAxMDgsIDE2MywgCisgICAgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIxNCwgMTYwLCAxNjMsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgNDQsIAorICAgIDIyNCwgMjYsIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyNTQsIDE1NSwgMjUxLCA4OCwgMjE0LCAxNjAsIDQzLCAyMjQsIDI2LCAKKyAgICAyNTEsIDIyMSwgNDMsIDE2MywgODUsIDI1MCwgMzUsIDQ0LCAxNjMsIDg1LCAyNTAsIDM1LCAyMzUsIDE5NCwgMjUxLCAxMTMsIAorICAgIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjE0LCAxNjAsIDE2MywgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMzIsIDEwOCwgCisgICAgMTYzLCAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIxNCwgMTYwLCA0MywgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjE0LCAKKyAgICAxNjAsIDQ0LCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIDI1LCAyMzIsIDEwOCwgNDQsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgCisgICAgMjUsIDIzMiwgMTA4LCA0MywgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjE0LCAxNjAsIDE2MywgMjUwLCAzNSwgMjMyLCAKKyAgICAxMDgsIDE2MywgMjUwLCAzNSwgODUsIDIzMiwgMTA4LCA0NCwgMjE1LCAyMjUsIDg1LCAyMzIsIDEwOCwgNDMsIDIxNSwgCisgICAgMjI1LCA4NSwgMjE0LCAxNjAsIDQzLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYwLCA0NCwgMjE1LCAyMjUsIDcxLCAyNTEsIAorICAgIDExMywgNDIsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMTQsIDE2MCwgCisgICAgNDMsIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjMyLCAxMDgsIDQ0LCAyNDcsIDI1NSwgMTYzLCAyNTEsIAorICAgIDIyMSwgNzEsIDQyLCAyLCA2NywgMjUxLCAyMzIsIDIzMiwgMjEzLCA3MSwgMjE0LCAxNjIsIDIxNSwgMjI2LCAyLCAyNDcsIAorICAgIDEyMCwgMjE0LCAxNjIsIDIxNSwgMjI2LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjE0LCAxNjIsIDIxNSwgMjI2LCAyLCA0NCwgCisgICAgMTYzLCAyNTEsIDIyMSwgMjMzLCA4NSwgMjUwLCAzNSwgNzEsIDQyLCAyLCAyMTQsIDE2MCwgNDMsIDIyNCwgMjUsIDcxLCAKKyAgICA0MiwgMiwgMjMyLCAxMDgsIDQzLCAyMjQsIDI1LCA3MSwgNDIsIDIsIDIzMiwgMTA4LCA0NCwgMjI0LCAyNSwgNzEsIDQyLCAKKyAgICAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjUsIDcxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgNDMsIDIyNCwgMjUsIDcxLCAyNTAsIAorICAgIDM2LCAyLCAyMzIsIDEwOCwgNDMsIDIyNCwgMjUsIDcxLCAyNTAsIDM2LCAyLCAyMzIsIDEwOCwgNDQsIDIyNCwgMjUsIDcxLCAKKyAgICAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjUsIDIxNCwgMTYwLCA0NCwgCisgICAgMjE1LCAyMjUsIDIzMiwgMTA4LCA0MywgMjE1LCAyMjUsIDcxLCAyMzEsIDgyLCAyMTgsIDIzNCwgODUsIDIzMSwgODIsIAorICAgIDIxOCwgMjM0LCA3MSwgMjMxLCA4MiwgNCwgMjE4LCAyMzQsIDg1LCAyMzEsIDgyLCA0LCAyMTgsIDIzNCwgMjMyLCAxMDgsIAorICAgIDQ0LCAyMTUsIDIyNSwgODUsIDIxOCwgMzgsIDIsIDIyMywgMTMyLCAyNDksIDI0NywgMjE0LCAxOTQsIDIxOSwgNjAsIDI0OSwgCisgICAgMjIyLCA4NSwgMjE4LCAxNTYsIDcxLCAyMTgsIDE1NiwgMjMyLCAyMjgsIDIxNiwgMTMyLCAyMTgsIDM3LCAyNTMsIDIzNCwgCisgICAgMjI4LCA3MSwgMjQ4LCAzOCwgMjI4LCA3MSwgMjQ5LCAxOTUsIDIyNiwgMTYzLCA4NSwgMjE3LCAwLCA3MSwgMjE3LCAwLCAKKyAgICAyNTIsIDE1NiwgMjUxLCAxNjMsIDI1MiwgMTU2LCA5MywgMiwgMjUwLCAxMjksIDI1MiwgMTU2LCA5MywgMiwgMjExLCAxNzgsIAorICAgIDIyMSwgMjU0LCAyMTQsIDE5NSwgMiwgMjIzLCAxNjAsIDI0NiwgODQsIDI0MCwgMjQzLCAyNTIsIDIyLCA3MSwgMjIwLCAyLCAKKyAgICAyMjUsIDEwMSwgODUsIDIyMCwgMiwgMjI1LCAxMDEsIDIyMCwgODcsIDIyMywgNDksIDIyMiwgMTg3LCAyNDQsIDU1LCAyNDEsIAorICAgIDIyOCwgMjUxLCAxMTMsIDg1LCA0MywgMjI1LCA3LCAyMzUsIDI0MiwgODUsIDQ0LCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgCisgICAgNDMsIDIyNSwgNywgMjM1LCAyNDIsIDcxLCAxMjAsIDIyNSwgNywgMjM1LCAyNDIsIDcxLCA0NCwgMjI1LCA3LCAyMzUsIAorICAgIDI0MiwgNzEsIDEyNCwgMjI1LCA3LCAyMzUsIDI0MiwgMjE5LCAxMDEsIDIyLCAyNDksIDEyOSwgMjUwLCAyMTksIDUwLCAKKyAgICAyMjMsIDE3MiwgNTAsIDI1MSwgMjM5LCA1MCwgMjUxLCAyNSwgMjU0LCAxMDIsIDIyNiwgMTQ1LCAyNDksIDEzMCwgMjUwLCAKKyAgICAxMTEsIDIyMywgMzcsIDI0OSwgMTMxLCA2NCwgMjMyLCAxMTgsIDI0OSwgMTMxLCA2NCwgMjM1LCAxMTYsIDIxOCwgMTU3LCAKKyAgICAyMiwgMjQ5LCAxMzYsIDI0NCwgMTY4LCA4NywgMjU0LCAyNDgsIDIyMCwgODksIDI0MiwgMjIsIDIyLCAyMTksIDE4OSwgCisgICAgMjI1LCAyMjAsIDg3LCAyMTAsIDI1NCwgMjExLCA2OSwgMjE1LCAyMTUsIDMxLCAyNDEsIDIyMywgMjE1LCAyMTUsIDMxLCAKKyAgICAyMzMsIDEwNywgMjE1LCAyMTUsIDMxLCAyNDQsIDk2LCAyMTUsIDIxNSwgMzEsIDIxNiwgMTMzLCAyMTUsIDIxNSwgMzEsIAorICAgIDIxMSwgMjM5LCAyMTUsIDIxNSwgMzEsIDIxMiwgNDAsIDIxNSwgMjE1LCAzMSwgMjMwLCAxMTUsIDIxNSwgMjE1LCAzMSwgCisgICAgMjQ1LCAyMjMsIDIxMiwgMSwgNjQsIDI0OCwgMTgsIDcxLCAyNDMsIDIzOSwgMjQ0LCAxOTAsIDcxLCAyMTksIDc0LCAyNDQsIAorICAgIDE5MCwgODUsIDIxOSwgNzQsIDI0NCwgMTkwLCA3MSwgMjE4LCAzOCwgMiwgMjIzLCAxMzIsIDI0NCwgOTIsIDIyNCwgMjIsIAorICAgIDIzMCwgMTI4LCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIDEyOCwgMjMxLCA1NCwgMjQ0LCAxMzgsIDUwLCAyNDUsIDIyMywgCisgICAgMjMxLCAxOTAsIDUwLCAyMzUsIDM4LCAyMjEsIDIyMCwgMjE0LCAxNDUsIDIyOSwgOTMsIDIyNSwgMjAsIDI1NCwgMTIsIAorICAgIDIxNywgNDAsIDI0MywgNTIsIDI1MSwgMywgMjMzLCAxOSwgMjEzLCAxNTAsIDIzMiwgMjM4LCAyMjEsIDE5MSwgMjIyLCAxOSwgCisgICAgMjUwLCAyNDgsIDI1NCwgNDIsIDIyNSwgNTIsIDcxLCAyNTAsIDExNywgMjM0LCA3OCwgNzEsIDI1MCwgMTE3LCAyMjQsIDE0LCAKKyAgICA3MSwgMjUwLCAxMTcsIDIyMiwgMTk1LCA3MSwgMjUwLCAxMTcsIDI1MSwgMjMxLCA3MSwgMjUwLCAxMTcsIDIzNCwgMzAsIAorICAgIDcxLCAyNTAsIDExNywgMjI1LCAyMzEsIDg1LCAyNTAsIDExNywgMjM0LCA3OCwgODUsIDI1MCwgMTE3LCAyMjQsIDE0LCA4NSwgCisgICAgMjUwLCAxMTcsIDIyMiwgMTk1LCA4NSwgMjUwLCAxMTcsIDI1MSwgMjMxLCA4NSwgMjUwLCAxMTcsIDIzNCwgMzAsIDg1LCAKKyAgICAyNTAsIDExNywgMjI1LCAyMzEsIDg1LCAyMTksIDE2LCAyMTgsIDUwLCA3MSwgMjQxLCAyMjgsIDIxOCwgNTAsIDcxLCAyNDcsIAorICAgIDI0OSwgMjE4LCA1MCwgODUsIDI0OSwgMjQ1LCAyMTgsIDUwLCA3MSwgMjE5LCAxNiwgMjE4LCA1MCwgODUsIDI0MSwgMjI4LCAKKyAgICAyMTgsIDUwLCA4NSwgMjQ3LCAyNDksIDIxOCwgNTAsIDcxLCAyNDksIDI0NSwgMjE4LCA1MCwgMjQwLCAyNDMsIDIxOCwgCisgICAgMjM4LCAyMjQsIDIyLCAyMjgsIDQ3LCAyNDUsIDE4OSwgMjI4LCA0NywgMjUyLCA3MywgMjQ1LCAxODksIDIyOCwgNDIsIAorICAgIDI1MiwgNzMsIDIxOSwgMTE4LCAyMjgsIDQyLCAyMzAsIDU3LCAyNDQsIDY2LCA1MCwgMjMwLCA1NywgMjI5LCAxODgsIDUwLCAKKyAgICAyMzAsIDU3LCAyMjAsIDc2LCA1MCwgMjEyLCA5LCAxODgsIDI0OSwgMTMwLCAyNDUsIDIyMCwgMTg4LCAyNDksIDEzMCwgCisgICAgMjE0LCAxNzEsIDIyMywgMTEyLCA4NywgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0OCwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjE1LCA0NywgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0NiwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjE1LCA0NSwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0NCwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjE1LCA0MywgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAzMSwgMjE1LCA0MiwgMjI1LCAzNCwgMjIzLCAxMTIsIDE2LCAKKyAgICAzMSwgMjQzLCA1MCwgMjMxLCAxMzgsIDg1LCAyMTQsIDE3MSwgMjIzLCAxMTIsIDg3LCAyMjMsIDExMywgMjI2LCAyMCwgODcsIAorICAgIDIyNSwgMjUyLCAyMjYsIDIwLCA4NywgMjI1LCAxNzQsIDIyNiwgMjAsIDUwLCAyMTEsIDI1NSwgODcsIDI0NywgMjQxLCAKKyAgICAyNDQsIDE4OSwgMjQ3LCAyNDEsIDI0NCwgMTg4LCAyNDcsIDI0MSwgMjQ0LCAxODcsIDI0NywgMjQxLCAyNDQsIDE4NiwgCisgICAgMjQ3LCAyNDEsIDI0NCwgMTg1LCAyNDcsIDI0MSwgMjQ0LCAxODQsIDcxLCAyNTAsIDM2LCAyLCA1OSwgMjIyLCAyNTEsIDcxLCAKKyAgICAyNTAsIDM2LCAyLCAxMTMsIDI0NywgMTE4LCA4NSwgMjUwLCAzNiwgMiwgNzEsIDU5LCAyMjIsIDI1MSwgODUsIDI1MCwgMzYsIAorICAgIDIsIDExMywgNzEsIDI0NywgMTE4LCAyMzAsIDE0MiwgMzEsIDIxMSwgNjksIDIzMCwgMTQyLCAzMSwgMjEwLCAyNTMsIDI0NywgCisgICAgMjI0LCAzMSwgMjQyLCAxMzEsIDIxMSwgNjksIDI0NywgMjI0LCAzMSwgMjMzLCAxMywgMjEwLCAyNTMsIDI0NywgMjI0LCAKKyAgICAzMSwgMjMzLCAxMywgMjExLCA2OSwgMjQ3LCAyMjQsIDMxLCAyNDIsIDEzMSwgMjEwLCAyNTMsIDcxLCAyNDQsIDczLCA4NSwgCisgICAgMjQ0LCA3MywgMjQyLCAyMiwgMjIsIDIyNSwgMTA0LCAyNTQsIDEyMCwgMjQ5LCAxMjgsIDIxNywgMjM1LCAyMTgsIDE2NCwgCisgICAgNjQsIDI1NCwgMjI2LCAyMjEsIDIwNiwgMjU0LCAxNjksIDI0NCwgNTEsIDI0MywgNjAsIDIxOCwgMTY0LCA2NCwgMjQxLCAKKyAgICAyMDIsIDI1MywgMTk5LCA4NywgMjQ0LCA2MiwgMjI2LCAxMjYsIDcxLCAyMTgsIDE1NiwgMTM0LCAyMzIsIDIwOCwgMjQ5LCAKKyAgICAxNzUsIDIyMiwgMjUxLCAxMzQsIDIzMiwgMjA4LCAyNDksIDE3NSwgMjMzLCA0NiwgMjEyLCA1MCwgNTAsIDEyNSwgMjEzLCAKKyAgICAxMzAsIDUwLCAyNDYsIDExMCwgMjQ0LCAxMzgsIDUwLCAyNDYsIDExMCwgMjMxLCAxOTAsIDUwLCAyMzUsIDIwMywgMjQ0LCAKKyAgICAxMzgsIDIyLCAyMzEsIDE5MCwgNTAsIDIzMSwgMTkwLCAyMiwgMjQ0LCAxMzgsIDUwLCAyMzEsIDE5MCwgMiwgMjE4LCAxMDMsIAorICAgIDUwLCAyMzEsIDE5MCwgMiwgMjE4LCAxMDMsIDIyLCAyMzEsIDE5MCwgMjIsIDI0NCwgMTM4LCA1MCwgNjcsIDIzMSwgMTkwLCAKKyAgICAyLCAyMTgsIDEwMywgNTAsIDIwMywgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCA1MCwgMjMxLCA4MiwgNzEsIDI1MCwgMzUsIAorICAgIDIzMSwgODIsIDg1LCAyNTAsIDM1LCAyMzEsIDgyLCA0LCA3MSwgMjUwLCAzNSwgMjMxLCAxNTMsIDg3LCAyNDcsIDE2NywgCisgICAgODcsIDIxNCwgMTY5LCAyMjUsIDI1MSwgODcsIDI0OSwgMjMxLCAyNDMsIDIyNCwgMjE0LCAxNDEsIDIyOSwgODgsIDI1MCwgCisgICAgMTYxLCAyMjYsIDYxLCAyMzUsIDQ0LCAyMTMsIDE4NSwgMjUwLCA5MywgODUsIDIzMCwgMTI5LCAyMzIsIDIyNSwgMjIwLCAKKyAgICAxMTIsIDIyMCwgMTQ3LCAyMjQsIDUsIDIyMCwgMTMwLCAyMTksIDU1LCAyNTIsIDE1OSwgMjUyLCAxMjYsIDkyLCAyMzQsIAorICAgIDEzOCwgNzEsIDI0NiwgOTMsIDIzMSwgMTg1LCA3MSwgMjQ2LCA5MywgMjM0LCA3OCwgODUsIDI0NiwgOTMsIDIzMSwgMTg1LCAKKyAgICA4NSwgMjQ2LCA5MywgMjM0LCA3OCwgMjE5LCA2MSwgMjExLCAyMzAsIDIxOSwgNjQsIDIxOCwgMzgsIDI1MiwgNTEsIDI0OSwgCisgICAgMjQ3LCAyMjMsIDE1OSwgODUsIDIxOSwgNjAsIDIxNiwgMTM0LCAyNDksIDI0OCwgMjIsIDIyMywgMTU5LCAyMTUsIDk0LCAKKyAgICA3MSwgMjIwLCAyLCAyMjUsIDEwMSwgMjE1LCA5NCwgODUsIDIyMCwgMiwgMjI1LCAxMDEsIDcxLCAyNDcsIDI0OSwgMjM2LCAKKyAgICAwLCAyMTgsIDIzNCwgMjQ5LCAxMjUsIDIzMywgOTEsIDI0NywgMTkzLCAyNTAsIDI0NCwgMjI2LCAxNjYsIDIyNSwgMTA0LCAKKyAgICAyNTAsIDI0NSwgMjE5LCA4OCwgMjQxLCAyMTIsIDIsIDcxLCAyNDksIDEzMCwgMzcsIDI0OSwgMTI1LCAyMzMsIDkxLCAyNTAsIAorICAgIDE1MywgMjI4LCA3NSwgMjQ1LCAxMjQsIDI1NCwgMTQxLCAyMjYsIDE5MSwgNDMsIDIxMiwgMjYsIDIxNSwgMjUxLCA4NSwgCisgICAgMjE1LCA1NSwgNDMsIDIxMiwgMjYsIDIxNSwgMjUxLCA3MSwgMjE1LCA1NSwgNDMsIDIxMiwgMjYsIDIxNSwgMjUxLCA4NSwgCisgICAgNDMsIDIzMywgOTIsIDIzMSwgNTMsIDcxLCA0MywgMjMzLCA5MiwgMjMxLCA1MywgMjQ2LCA4OSwgMjE5LCA4MiwgNTAsIAorICAgIDExNCwgNzEsIDI0NiwgMTA1LCAyMTUsIDIyNSwgNDMsIDI1MCwgMCwgMjQ1LCAxMjQsIDkyLCAyMjEsIDI1NCwgMjQ0LCAKKyAgICAxNzUsIDI0NywgMjU1LCAyMzYsIDAsIDcxLCAyNTAsIDM2LCAyMzYsIDAsIDg1LCAyMTgsIDIzNCwgODUsIDIxNSwgMTkyLCAKKyAgICAyMjMsIDYwLCA0MywgMjQ1LCAxMjMsIDIyMywgNjAsIDQzLCAyNDUsIDEyMiwgMjUzLCAyMTEsIDE2LCAzMSwgMjE0LCAxNDUsIAorICAgIDExNCwgMjUwLCAzNiwgMiwgMjE4LCAxMDMsIDIyLCAxMTMsIDE3MCwgNDgsIDIyNSwgMTg5LCAyMjIsIDI0OCwgMjM1LCAKKyAgICAyMDUsIDIyNSwgMTg5LCAyMzMsIDQzLCAyMzUsIDIwNSwgMjI1LCAxODksIDIzNSwgMTkzLCAyMjUsIDE4OSwgODUsIDI0OSwgCisgICAgMTMxLCAyMjYsIDE5NywgMjIwLCAyOSwgMjIwLCAxNywgMjE5LCAyMjksIDI1MCwgNjEsIDI1MCwgMjI2LCAyNDEsIDE1NywgCisgICAgMjE5LCAxMjYsIDI0MywgNjEsIDIxMSwgMjMwLCAyNDAsIDIyMCwgMjQzLCA2MSwgMiwgMjQyLCAxMiwgMjMxLCAxNzMsIDE2LCAKKyAgICAzMSwgMjMyLCAyMjksIDIzMCwgMTE1LCAyMTQsIDE5NSwgMjI2LCAxOTcsIDI0MiwgMTIyLCAyNDQsIDEyLCAyNDQsIDc0LCAKKyAgICAyMzYsIDAsIDI0MSwgNTksIDI0NCwgMTI5LCAyMjIsIDE0LCA0MiwgMjQ0LCAxMSwgMjQ5LCAxNTksIDIxOSwgMTA0LCAyNDAsIAorICAgIDExMiwgMjE5LCAxMDcsIDIyNSwgMTY4LCAyLCAyNTIsIDE1OSwgMjE2LCAyNDIsIDIzNSwgMTMxLCAyNTIsIDE0NiwgODcsIAorICAgIDI0MSwgMjMxLCAyNDIsIDEzMywgODcsIDI0MywgMjMyLCAyMjQsIDE0MiwgMjQ5LCAxMDMsIDIyNiwgMTk3LCA4NSwgMjE4LCAKKyAgICAyMzQsIDcxLCAyNDQsIDc0LCAyLCAyMDMsIDIzMCwgMjI0LCA4NSwgMjE4LCAxMDQsIDIxNCwgMTYwLCAyNTEsIDIxNywgCisgICAgMjIxLCAxOTMsIDg1LCAyMjEsIDE5MywgMjMyLCAxMDgsIDI1MSwgMjE3LCAyMjEsIDE5MywgNzEsIDIyMSwgMTkzLCA3MSwgCisgICAgMTE0LCAyNTAsIDEzMCwgNzgsIDIxNywgMSwgMjMyLCAxNTQsIDUwLCAyMTcsIDUzLCAyNDYsIDg4LCAyNTQsIDE5MSwgMjQ1LCAKKyAgICAxMTksIDIyMywgMTU3LCAyNDQsIDg1LCAyMjMsIDE1NywgMjQyLCAxNSwgMjEzLCAxNzQsIDI0MiwgMTUsIDIxMSwgMTk4LCAKKyAgICAyNDIsIDE1LCAyMzIsIDEwOCwgNDQsIDIyNSwgMTk4LCAyMjUsIDE5OCwgMjE0LCAxNjAsIDQ0LCAyMjUsIDE5OCwgNzEsIAorICAgIDIyOCwgMjMwLCA4NSwgMjI4LCAyMzAsIDI1MCwgMTMwLCA3OCwgMTE0LCAyNTAsIDEzMCwgNzgsIDIzMCwgODQsIDIxMSwgCisgICAgMTc4LCAxMTQsIDIzMCwgODQsIDIxMSwgMTc4LCAyNTIsIDE1NiwgMjExLCAxNzgsIDExNCwgMjUyLCAxNTYsIDIxMSwgMTc4LCAKKyAgICAyMjYsIDEyNiwgMjYsIDI0OSwgMTMwLCAxMTQsIDI2LCAyNDksIDEzMCwgMjA0LCAyNTAsIDE3NSwgMjQ5LCAxMzAsIDExNCwgCisgICAgMjA0LCAyNTAsIDE3NSwgMjQ5LCAxMzAsIDcsIDI0OSwgMTMwLCAyMjAsIDkxLCA3MSwgNywgMjQ5LCAxMzAsIDIyNiwgMTI2LCAKKyAgICA3LCAyNDksIDEzMCwgMjMxLCAxODcsIDI0OSwgMTMwLCAyMTgsIDE1NywgNjQsIDI0OCwgMTQ5LCAyNDQsIDExLCAyMTcsIAorICAgIDE1LCAyNTMsIDIxNiwgMjQ0LCAxMSwgMjUyLCAxNTcsIDI1MywgMjE2LCAxMTQsIDI0NCwgMTEsIDI1MiwgMTU3LCAyNTMsIAorICAgIDIxNiwgMjQ0LCAxMSwgMjQ5LCAyNDMsIDI1MywgMjE2LCA4NSwgMjQ0LCAxMSwgMjI1LCA5LCAyMTgsIDE1NiwgNzEsIDI0NCwgCisgICAgMTEsIDIyNSwgOSwgMjE4LCAxNTYsIDIxOSwgMTEsIDIxOCwgMTExLCAyMjYsIDEyNiwgNzEsIDIxOCwgMTU2LCAzNywgNzEsIAorICAgIDIxOCwgMTU2LCAyMDQsIDI1MCwgMTc1LCA4NSwgMjE4LCAxNTYsIDg1LCAyNTAsIDE3NSwgNzEsIDIxOCwgMTU2LCAyMjYsIAorICAgIDEyNiwgODUsIDIxOCwgMTU2LCAxMTQsIDIyNiwgMTI2LCA4NSwgMjE4LCAxNTYsIDIyNSwgNjAsIDIxOCwgMTU2LCAyMjAsIAorICAgIDkxLCA3MSwgMjE4LCAxNTYsIDExNCwgMjUzLCAyMTYsIDIwNCwgMjUwLCAxNzUsIDI1MywgMjE2LCAyNDUsIDE5MywgMjE4LCAKKyAgICAyNDQsIDI1MywgMjE2LCAyNDUsIDE5MywgMjI1LCA5LCA4NSwgMjE4LCAxNTYsIDI0NSwgMTkzLCAyMjUsIDksIDIyNSwgNjAsIAorICAgIDIxOCwgMTU2LCAyMTksIDEyNSwgMjI1LCA5LCA4NSwgMjE4LCAxNTYsIDI0NSwgMTkzLCAyMjUsIDksIDIyMywgMTE0LCA4NSwgCisgICAgMjE4LCAxNTYsIDExNCwgMjQ1LCAxOTMsIDIyNSwgOSwgMjIzLCAxMTQsIDg1LCAyMTgsIDE1NiwgMjE1LCA3NywgMjI1LCA5LCAKKyAgICA4NSwgMjE4LCAxNTYsIDIxOSwgMTIwLCAyMjUsIDksIDI1MywgMjE2LCAyMTcsIDE1LCAyNTMsIDIxNiwgMjA0LCAyNTAsIAorICAgIDE3NSwgMjE3LCAxNSwgMjUzLCAyMTYsIDExNCwgMjE3LCAxNSwgMjUzLCAyMTYsIDIxOSwgMTI1LCAyMjUsIDE1NywgODUsIAorICAgIDIyLCA3MSwgMjQ0LCA1NCwgODUsIDI0NCwgNTQsIDcxLCAyNDQsIDU0LCAyNDUsIDE5MywgMjI1LCAxNTcsIDIyNiwgMTI2LCAKKyAgICA4NSwgMjQ0LCA1NCwgMzcsIDIwNCwgMjUwLCAxNzUsIDI0NSwgMTkzLCAyMjUsIDksIDIxOCwgMTU2LCAxMTQsIDIxNywgMTUsIAorICAgIDIyNSwgNjAsIDI1MywgMjE2LCAyMTksIDYyLCAyMTYsIDEwNSwgMjE1LCAyMTgsIDIxOSwgNjIsIDExNCwgMjUwLCAxMTQsIAorICAgIDIxOSwgNjIsIDIxOSwgMTMsIDExNCwgMjE5LCAxMywgMjUyLCAxNTcsIDI1MywgMjE2LCAyNDUsIDE5MywgMjE3LCAxNSwgCisgICAgMjI0LCAxNzEsIDI1MywgMjE2LCAxMTQsIDI0NSwgMTkzLCAyMTcsIDE1LCAyMjQsIDE3MSwgMjUzLCAyMTYsIDI0OSwgMTMxLCAKKyAgICA3OCwgMjIwLCA5MSwgNzEsIDI1MCwgMzUsIDE1MiwgOTIsIDI0OSwgMTMxLCA3OCwgMjMyLCAxMDgsIDQ0LCAyNDYsIDg2LCAKKyAgICA3MSwgMjE4LCAyMzQsIDIxNCwgMTYwLCA0NCwgMjQ2LCA4NiwgNzEsIDIxOCwgMjM0LCAyMzIsIDEwOCwgNDQsIDIyMCwgOTEsIAorICAgIDcxLCAyMTgsIDIzNCwgMjE0LCAxNjAsIDQ0LCAyMjAsIDkxLCA3MSwgMjE4LCAyMzQsIDg1LCAyMjQsIDEzLCAxNjQsIDIyNiwgCisgICAgMTQ3LCA3MSwgMjI0LCAxMywgMTY0LCAyMjYsIDE0NywgNzEsIDI0NSwgMzEsIDE2NCwgMjI2LCAxNDcsIDg1LCAyNDcsIAorICAgIDI0OSwgMjMwLCAxODIsIDcxLCAyMTEsIDE3OCwgMTE0LCAyNDUsIDMxLCAxNjQsIDg3LCAxOTIsIDY3LCAxMzAsIDIzMSwgCisgICAgODIsIDY3LCAxMzAsIDExNCwgNjcsIDEzMCwgMTE0LCAyMTksIDE1NSwgMjE1LCA5NCwgMjQ5LCAyMjAsIDIyMywgMjU0LCAKKyAgICAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIxOSwgMTU1LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgNTIsIAorICAgIDIxNSwgOTQsIDI0OSwgMjIwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMTE0LCA1MiwgMjQ5LCAyMjAsIDIyMywgMjU0LCAKKyAgICAxNjQsIDIyNiwgMTQ3LCAxMTQsIDEyMSwgMjE5LCAxNTUsIDI0OSwgMjIwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgCisgICAgMTE0LCAxMjEsIDUyLCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDI0OSwgOTEsIDIxOCwgMTQwLCAyMjYsIAorICAgIDE1LCA1LCAyMjYsIDE0NywgMTE0LCAyNDUsIDMxLCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDI0MSwgMjI4LCAyNDUsIDMxLCAKKyAgICAxNjQsIDIyNiwgMTQ3LCAxMTQsIDg1LCAyNDEsIDIyNywgMjIyLCAxODcsIDExNCwgODUsIDI0MSwgMjI4LCAyNTEsIDExMywgCisgICAgMjQ0LCA1NSwgMjQxLCAyMjcsIDIyMiwgMTg3LCAyNDQsIDU1LCAyNDEsIDIyOCwgMjUxLCAxMTMsIDIzMSwgODIsIDQzLCAKKyAgICAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCA0NCwgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjQ0LCA2MywgNDMsIAorICAgIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDI0NCwgNjMsIDQ0LCAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyMzMsIAorICAgIDQyLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyMjIsIDI0NywgMjU0LCAxMTAsIDI1MSwgMTU4LCAKKyAgICAyMjYsIDE0NywgMTE0LCAyMzMsIDQyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjIyLCAyNDcsIAorICAgIDI1NCwgMTEwLCAyMjMsIDI1NCwgMTY0LCAyMjYsIDE0NywgMTE0LCAyMzMsIDQyLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIyNiwgCisgICAgMTQ3LCAxMTQsIDIyMiwgMjQ3LCAyNTQsIDExMCwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAxOTIsIDQzLCAyMTYsIDYsIDIyMCwgCisgICAgNTMsIDI1MSwgMTU4LCAyMjYsIDE0NywgMTkyLCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1OCwgMjI2LCAxNDcsIAorICAgIDIzMSwgODIsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjI2LCAxNDcsIDIzMSwgODIsIDQ0LCAyNDksIDk5LCAyNTEsIDE1OCwgCisgICAgMjI2LCAxNDcsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTEwLCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDEwNSwgMjQ3LCAKKyAgICAyMDQsIDE1MiwgMzcsIDIxLCAxNTgsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTYxLCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIAorICAgIDE4OSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxOTQsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTk4LCAyNDcsIDIwNCwgCisgICAgMTUyLCAzNywgMjEsIDE5NSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAyMDAsIDI0NywgMjA0LCAxNTIsIDM3LCA1NCwgMjE2LCAKKyAgICAyNDcsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxMTAsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxMDUsIDI0NywgMjA0LCAzNywgCisgICAgMzUsIDIxLCAxNTgsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxNjEsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxODksIDI0NywgCisgICAgMjA0LCAzNywgMzUsIDIxLCAxOTQsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAxOTgsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAKKyAgICAxOTUsIDI0NywgMjA0LCAzNywgMzUsIDIxLCAyMDAsIDI0NywgMjA0LCAzNywgMzUsIDU0LCAyMTYsIDI0NywgMjQ3LCAyMDQsIAorICAgIDE1MiwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxMDUsIDI0NywgMjA0LCAxNTIsIDM3LCAKKyAgICAzNSwgMjEsIDE1OCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAKKyAgICAxODksIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5NCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIAorICAgIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDIwMCwgMjQ3LCAyMDQsIDE1MiwgCisgICAgMzcsIDM1LCA1NCwgMjE2LCAyNDcsIDExNCwgMjExLCAyNDYsIDk3LCA3NCwgMTE0LCA5NiwgNTAsIDExNCwgMjMwLCAxODIsIAorICAgIDUwLCAxMTQsIDI0NywgMTY5LCA1MCwgMTE0LCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDExNCwgOTcsIDc0LCAxMTQsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3NCwgMjQ2LCA5OCwgMjI1LCAxMSwgOTcsIDc0LCAxMTQsIDIyMiwgMTg0LCA5NywgNzQsIDIxNSwgCisgICAgMjI0LCA5NywgNzQsIDExNCwgMjE1LCAyMjQsIDk3LCA3NCwgMjQ4LCAxNTUsIDIxNSwgMjI0LCA5NywgNzQsIDExNCwgMjQ4LCAKKyAgICAxNTUsIDIxNSwgMjI0LCA5NywgNzQsIDg1LCA5NywgNzQsIDIxNiwgMTQ0LCAyMTYsIDEyLCA5NywgMjUzLCAyNDksIDIxNiwgCisgICAgMTQ0LCAyNTEsIDE3MywgOTcsIDI1MywgMjQ5LCA4NSwgOTcsIDI1MywgMjQ5LCAxMTQsIDg1LCAyNDksIDkxLCAyNDYsIAorICAgIDEwNCwgMjIsIDk3LCA3NCwgMTE0LCA4NSwgMjQ5LCA5MSwgMjE0LCAxNTMsIDIyLCA5NywgNzQsIDIxOCwgMjMxLCA4NSwgCisgICAgOTcsIDc0LCAxMTQsIDI0OSwgMjA2LCA4NSwgOTcsIDc0LCAyMjIsIDI0NiwgNzEsIDk3LCA3NCwgMjMzLCA0MSwgNzEsIDk3LCAKKyAgICA3NCwgMjUyLCAxODMsIDIyMCwgOTEsIDcxLCA5NywgNzQsIDI0MywgMjQxLCAyMjAsIDkxLCA3MSwgOTcsIDc0LCAxMTQsIAorICAgIDIzMiwgMTA4LCAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMTE0LCAyMTQsIDE2MCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDIyOCwgCisgICAgNDksIDIzMiwgMTA4LCAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMjQ5LCA5OSwgMjMyLCAxMjMsIDIyOCwgNDksIDIxNCwgMTYwLCAKKyAgICAyMjIsIDI0NSwgNzEsIDk3LCA3NCwgMzcsIDExNCwgNzEsIDk3LCA3NCwgMjExLCAyNTIsIDk3LCA3NCwgMjUxLCAyMjAsIAorICAgIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjUxLCAyMjAsIDk3LCA3NCwgMjUxLCAyMjAsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgCisgICAgMTE0LCAyNTEsIDIyMCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAxMTQsIDI1MSwgMjIwLCA5NywgNzQsIDExNCwgMjUxLCAKKyAgICAyMjAsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjE3LCAxNywgOTcsIDc0LCAxMTQsIDIxNywgMTYsIDk3LCA3NCwgMjEyLCAKKyAgICAxOCwgOTcsIDc0LCAxMTQsIDIxMiwgMTgsIDk3LCA3NCwgMjI2LCAxNzIsIDk3LCA3NCwgNTIsIDI0OSwgOTksIDIzMiwgCisgICAgMTIzLCAxMzQsIDI0NywgMjE0LCAyNTQsIDEwOSwgNzEsIDIxNSwgMjI2LCAyNDksIDE4NywgNCwgNzEsIDIxNSwgMjI1LCAKKyAgICAyMjUsIDE3MSwgMjA0LCAyMTgsIDYzLCAyMDQsIDIxOCwgMjEsIDQzLCAyMjIsIDkwLCAyNTIsIDE3MywgMjQ4LCA2MCwgNDQsIAorICAgIDIyMiwgOTAsIDI1MiwgMTczLCAyNDgsIDYwLCAxNzcsIDIsIDU5LCAyMzUsIDIxNSwgMjIzLCA1MCwgMjE5LCA0NywgMjI0LCAKKyAgICAyMDEsIDIxOCwgNjMsIDIxOCwgMjIsIDIyNCwgMjAxLCAyMTksIDQ2LCA2NywgMjUyLCAxNDEsIDIsIDIwMywgOTEsIDExLCAKKyAgICAyMjIsIDIyOCwgMjQ3LCAyNTQsIDE5OSwgMjQ3LCAxNjgsIDExLCAyNDQsIDE3NSwgMjQ3LCAyNTQsIDkyLCAyMzIsIDE0NiwgCisgICAgMjU0LCAxMTgsIDkyLCAyMzIsIDE0NiwgMjI2LCAxNTgsIDcxLCAyNDcsIDI0OSwgMiwgMjUwLCAxNzMsIDI0NywgMTIwLCAKKyAgICAyMiwgMiwgMjQ3LCAxMjAsIDI0NSwgMTcwLCA2NCwgMjI2LCAxNzAsIDIxNCwgMTUyLCAyMzIsIDEwOCwgNDQsIDI0OSwgCisgICAgMTYxLCAyLCAyNDcsIDEyMCwgMjE0LCAxNjAsIDQzLCAyNDksIDE2MSwgMiwgMjQ3LCAxMjAsIDQzLCAyMjYsIDEyOCwgMjM1LCAKKyAgICA2NiwgNDQsIDIyNiwgMTI4LCAyMzUsIDY2LCAyNDMsIDIyOSwgMjI2LCAxMjgsIDIzNSwgNjYsIDIzMywgODUsIDEyMCwgCisgICAgMjE3LCA4NywgMjMzLCA4NSwgMTI0LCAyMTcsIDg3LCA0MywgMjIsIDQ0LCA1MiwgMjE1LCA5MywgNDMsIDIyLCA0NCwgMjE3LCAKKyAgICA4NywgNDMsIDIzMCwgODcsIDE5OSwgNDQsIDIxNywgODcsIDE5OSwgNDMsIDIxNywgODcsIDEyMCwgMjE3LCA4OCwgMiwgCisgICAgMjUwLCAzNiwgNDgsIDIzMiwgMTA1LCAyNDcsIDE3MywgMjUxLCA3OCwgMjAzLCAyMjIsIDEzMywgNzEsIDI0OSwgMjA1LCAKKyAgICAyNDcsIDI0OCwgNzEsIDI0OSwgMjA1LCAyNDcsIDI0OSwgMiwgMTQwLCAyMTYsIDExNCwgNzEsIDI0OSwgMjA1LCAyNDcsIAorICAgIDI0OSwgMiwgOTcsIDIxNiwgMTE0LCA3MSwgNDIsIDIsIDE0MCwgMjE2LCAxMTQsIDcxLCA0MiwgMiwgOTcsIDIxNiwgMTE0LCAKKyAgICAxMSwgNDMsIDcxLCA0MiwgMTI3LCAxMSwgNDQsIDcxLCA0MiwgMTI3LCAxMSwgNDMsIDI1NCwgMTEwLCAxMjcsIDExLCA0NCwgCisgICAgMjU0LCAxMTAsIDEyNywgMTEsIDQzLCA1MiwgMjU0LCAxMTAsIDEyNywgMTEsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgMTEsIAorICAgIDQzLCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDExLCA0NCwgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAxMSwgNDMsIAorICAgIDI0NCwgNjMsIDIyNiwgMywgMTEsIDQ0LCAyNDQsIDYzLCAyMjYsIDMsIDIxNCwgMTUzLCAyMjQsIDI0LCA3NCwgMjQ2LCAKKyAgICAxMDQsIDIyNCwgMjQsIDc0LCAyNTQsIDg4LCAyNDMsIDk4LCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyNDMsIDk4LCAyNTAsIAorICAgIDM2LCA3NCwgNDQsIDgwLCAyLCAzNywgMjI1LCAyMiwgMTk5LCAxNDAsIDc0LCAxOTksIDk3LCA3NCwgMTk5LCA0MywgNDQsIAorICAgIDc0LCAxOTksIDE0MCwgNTIsIDc0LCAxOTksIDk3LCA1MiwgNzQsIDE5OSwgNDMsIDQ0LCA1MiwgNzQsIDE5OSwgMTQwLCA4MCwgCisgICAgMjQzLCAyNDMsIDEzMCwgMTk5LCA5NywgODAsIDI0MywgMjQzLCAxMzAsIDE5OSwgMTQwLCA1MiwgODAsIDI0MywgMjQzLCAKKyAgICAxMzAsIDE5OSwgOTcsIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgMTk5LCA5NywgMjE4LCAyMzAsIDc0LCA0NiwgNDcsIDI1MSwgCisgICAgMjE1LCA0NiwgNDcsIDI0NywgMTE3LCA0NiwgNDcsIDI0NiwgMjQ1LCA0NiwgNDcsIDI0NywgMTE2LCA0NiwgNDcsIDI0NiwgCisgICAgMTgxLCA0NiwgNDcsIDI0NywgNTIsIDQ2LCA0NywgMjQ2LCAyNDQsIDQ2LCA0NywgMjQ3LCAxMTUsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNDksIDQ2LCA0NywgMjQ3LCAyMCwgNDYsIDQ3LCAyNDYsIDIxMiwgNDYsIDQ3LCAyNDcsIDgzLCA0NiwgNDcsIDI0NiwgCisgICAgMTgwLCA0NiwgNDcsIDI0NywgNTEsIDQ2LCA0NywgMjQ2LCAyNDMsIDQ2LCA0NywgMjQ3LCAxMTQsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzMsIDQ2LCA0NywgMjQ3LCA0LCA0NiwgNDcsIDI0NiwgMTk2LCA0NiwgNDcsIDI0NywgNjcsIDQ2LCA0NywgMjQ2LCAxNjQsIAorICAgIDQ2LCA0NywgMjQ3LCAzNSwgNDYsIDQ3LCAyNDYsIDIyNywgNDYsIDQ3LCAyNDcsIDk4LCA0NiwgNDcsIDI0NiwgMTQ4LCA0NiwgCisgICAgNDcsIDI0NywgMTksIDQ2LCA0NywgMjQ2LCAyMTEsIDQ2LCA0NywgMjQ3LCA4MiwgNDYsIDQ3LCAyNDYsIDE3OSwgNDYsIDQ3LCAKKyAgICAyNDcsIDUwLCA0NiwgNDcsIDI0NiwgMjQyLCA0NiwgNDcsIDI0NywgMTEzLCA0NiwgNDcsIDI0NiwgMTI1LCA0NiwgNDcsIAorICAgIDI0NiwgMjUyLCA0NiwgNDcsIDI0NiwgMTg4LCA0NiwgNDcsIDI0NywgNTksIDQ2LCA0NywgMjQ2LCAxNTYsIDQ2LCA0NywgCisgICAgMjQ3LCAyNywgNDYsIDQ3LCAyNDYsIDIxOSwgNDYsIDQ3LCAyNDcsIDkwLCA0NiwgNDcsIDI0NiwgMTQwLCA0NiwgNDcsIAorICAgIDI0NywgMTEsIDQ2LCA0NywgMjQ2LCAyMDMsIDQ2LCA0NywgMjQ3LCA3NCwgNDYsIDQ3LCAyNDYsIDE3MSwgNDYsIDQ3LCAKKyAgICAyNDcsIDQyLCA0NiwgNDcsIDI0NiwgMjM0LCA0NiwgNDcsIDI0NywgMTA1LCA0NiwgNDcsIDI0NiwgMTMyLCA0NiwgNDcsIAorICAgIDI0NywgMywgNDYsIDQ3LCAyNDYsIDE5NSwgNDYsIDQ3LCAyNDcsIDY2LCA0NiwgNDcsIDI0NiwgMTYzLCA0NiwgNDcsIDI0NywgCisgICAgMzQsIDQ2LCA0NywgMjQ2LCAyMjYsIDQ2LCA0NywgMjQ3LCA5NywgNDYsIDQ3LCAyNDYsIDE0NywgNDYsIDQ3LCAyNDcsIDE4LCAKKyAgICA0NiwgNDcsIDI0NiwgMjEwLCA0NiwgNDcsIDI0NywgODEsIDQ2LCA0NywgMjQ2LCAxNzgsIDQ2LCA0NywgMjQ3LCA0OSwgNDYsIAorICAgIDQ3LCAyNDYsIDI0MSwgNDYsIDQ3LCAyNDcsIDExMiwgNDYsIDQ3LCAyNDYsIDEyMSwgNDYsIDQ3LCAyNDYsIDI0OCwgNDYsIAorICAgIDQ3LCAyNDYsIDE4NCwgNDYsIDQ3LCAyNDcsIDU1LCA0NiwgNDcsIDI0NiwgMTUyLCA0NiwgNDcsIDI0NywgMjMsIDQ2LCA0NywgCisgICAgMjQ2LCAyMTUsIDQ2LCA0NywgMjQ3LCA4NiwgNDYsIDQ3LCAyNDYsIDEzNiwgNDYsIDQ3LCAyNDcsIDcsIDQ2LCA0NywgMjQ2LCAKKyAgICAxOTksIDQ2LCA0NywgMjQ3LCA3MCwgNDYsIDQ3LCAyNDYsIDE2NywgNDYsIDQ3LCAyNDcsIDM4LCA0NiwgNDcsIDI0NiwgCisgICAgMjMwLCA0NiwgNDcsIDI0NywgMTAxLCA0NiwgNDcsIDI0NiwgMTI4LCA0NiwgNDcsIDI0NiwgMjU1LCA0NiwgNDcsIDI0NiwgCisgICAgMTkxLCA0NiwgNDcsIDI0NywgNjIsIDQ2LCA0NywgMjQ2LCAxNTksIDQ2LCA0NywgMjQ3LCAzMCwgNDYsIDQ3LCAyNDYsIAorICAgIDIyMiwgNDYsIDQ3LCAyNDcsIDkzLCA0NiwgNDcsIDI0NiwgMTQzLCA0NiwgNDcsIDI0NywgMTQsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDYsIDQ2LCA0NywgMjQ3LCA3NywgNDYsIDQ3LCAyNDYsIDE3NCwgNDYsIDQ3LCAyNDcsIDQ1LCA0NiwgNDcsIDI0NiwgCisgICAgMjM3LCA0NiwgNDcsIDI0NywgMTA4LCA0NiwgNDcsIDI0NiwgMTI0LCA0NiwgNDcsIDI0NiwgMjUxLCA0NiwgNDcsIDI0NiwgCisgICAgMTg3LCA0NiwgNDcsIDI0NywgNTgsIDQ2LCA0NywgMjQ2LCAxNTUsIDQ2LCA0NywgMjQ3LCAyNiwgNDYsIDQ3LCAyNDYsIAorICAgIDIxOCwgNDYsIDQ3LCAyNDcsIDg5LCA0NiwgNDcsIDI0NiwgMTM5LCA0NiwgNDcsIDI0NywgMTAsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMDIsIDQ2LCA0NywgMjQ3LCA3MywgNDYsIDQ3LCAyNDYsIDE3MCwgNDYsIDQ3LCAyNDcsIDQxLCA0NiwgNDcsIDI0NiwgCisgICAgMjMzLCA0NiwgNDcsIDI0NywgMTA0LCA0NiwgNDcsIDI0NiwgMTMxLCA0NiwgNDcsIDI0NywgMiwgNDYsIDQ3LCAyNDYsIAorICAgIDE5NCwgNDYsIDQ3LCAyNDcsIDY1LCA0NiwgNDcsIDI0NiwgMTYyLCA0NiwgNDcsIDI0NywgMzMsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMjUsIDQ2LCA0NywgMjQ3LCA5NiwgNDYsIDQ3LCAyNDYsIDE0NiwgNDYsIDQ3LCAyNDcsIDE3LCA0NiwgNDcsIDI0NiwgCisgICAgMjA5LCA0NiwgNDcsIDI0NywgODAsIDQ2LCA0NywgMjQ2LCAxNzcsIDQ2LCA0NywgMjQ3LCA0OCwgNDYsIDQ3LCAyNDYsIAorICAgIDI0MCwgNDYsIDQ3LCAyNDcsIDExMSwgNDYsIDQ3LCAyNDYsIDExOSwgNDYsIDQ3LCAyNDYsIDI0NiwgNDYsIDQ3LCAyNDYsIAorICAgIDE4MiwgNDYsIDQ3LCAyNDcsIDUzLCA0NiwgNDcsIDI0NiwgMTUwLCA0NiwgNDcsIDI0NywgMjEsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMTMsIDQ2LCA0NywgMjQ3LCA4NCwgNDYsIDQ3LCAyNDYsIDEzNCwgNDYsIDQ3LCAyNDcsIDUsIDQ2LCA0NywgMjQ2LCAxOTcsIAorICAgIDQ2LCA0NywgMjQ3LCA2OCwgNDYsIDQ3LCAyNDYsIDE2NSwgNDYsIDQ3LCAyNDcsIDM2LCA0NiwgNDcsIDI0NiwgMjI4LCA0NiwgCisgICAgNDcsIDI0NywgOTksIDQ2LCA0NywgMjQ2LCAxMjYsIDQ2LCA0NywgMjQ2LCAyNTMsIDQ2LCA0NywgMjQ2LCAxODksIDQ2LCAKKyAgICA0NywgMjQ3LCA2MCwgNDYsIDQ3LCAyNDYsIDE1NywgNDYsIDQ3LCAyNDcsIDI4LCA0NiwgNDcsIDI0NiwgMjIwLCA0NiwgNDcsIAorICAgIDI0NywgOTEsIDQ2LCA0NywgMjQ2LCAxNDEsIDQ2LCA0NywgMjQ3LCAxMiwgNDYsIDQ3LCAyNDYsIDIwNCwgNDYsIDQ3LCAKKyAgICAyNDcsIDc1LCA0NiwgNDcsIDI0NiwgMTcyLCA0NiwgNDcsIDI0NywgNDMsIDQ2LCA0NywgMjQ2LCAyMzUsIDQ2LCA0NywgCisgICAgMjQ3LCAxMDYsIDQ2LCA0NywgMjQ2LCAxMjIsIDQ2LCA0NywgMjQ2LCAyNDksIDQ2LCA0NywgMjQ2LCAxODUsIDQ2LCA0NywgCisgICAgMjQ3LCA1NiwgNDYsIDQ3LCAyNDYsIDE1MywgNDYsIDQ3LCAyNDcsIDI0LCA0NiwgNDcsIDI0NiwgMjE2LCA0NiwgNDcsIAorICAgIDI0NywgODcsIDQ2LCA0NywgMjQ2LCAxMzcsIDQ2LCA0NywgMjQ3LCA4LCA0NiwgNDcsIDI0NiwgMjAwLCA0NiwgNDcsIDI0NywgCisgICAgNzEsIDQ2LCA0NywgMjQ2LCAxNjgsIDQ2LCA0NywgMjQ3LCAzOSwgNDYsIDQ3LCAyNDYsIDIzMSwgNDYsIDQ3LCAyNDcsIAorICAgIDEwMiwgNDYsIDQ3LCAyNDYsIDEyOSwgNDYsIDQ3LCAyNDcsIDAsIDQ2LCA0NywgMjQ2LCAxOTIsIDQ2LCA0NywgMjQ3LCA2MywgCisgICAgNDYsIDQ3LCAyNDYsIDE2MCwgNDYsIDQ3LCAyNDcsIDMxLCA0NiwgNDcsIDI0NiwgMjIzLCA0NiwgNDcsIDI0NywgOTQsIDQ2LCAKKyAgICA0NywgMjQ2LCAxNDQsIDQ2LCA0NywgMjQ3LCAxNSwgNDYsIDQ3LCAyNDYsIDIwNywgNDYsIDQ3LCAyNDcsIDc4LCA0NiwgNDcsIAorICAgIDI0NiwgMTc1LCA0NiwgNDcsIDI0NywgNDYsIDQ2LCA0NywgMjQ2LCAyMzgsIDQ2LCA0NywgMjQ3LCAxMDksIDQ2LCA0NywgCisgICAgMjQ2LCAxMjAsIDQ2LCA0NywgMjQ2LCAyNDcsIDQ2LCA0NywgMjQ2LCAxODMsIDQ2LCA0NywgMjQ3LCA1NCwgNDYsIDQ3LCAKKyAgICAyNDYsIDE1MSwgNDYsIDQ3LCAyNDcsIDIyLCA0NiwgNDcsIDI0NiwgMjE0LCA0NiwgNDcsIDI0NywgODUsIDQ2LCA0NywgCisgICAgMjQ2LCAxMzUsIDQ2LCA0NywgMjQ3LCA2LCA0NiwgNDcsIDI0NiwgMTk4LCA0NiwgNDcsIDI0NywgNjksIDQ2LCA0NywgMjQ2LCAKKyAgICAxNjYsIDQ2LCA0NywgMjQ3LCAzNywgNDYsIDQ3LCAyNDYsIDIyOSwgNDYsIDQ3LCAyNDcsIDEwMCwgNDYsIDQ3LCAyNDYsIAorICAgIDEyNywgNDYsIDQ3LCAyNDYsIDI1NCwgNDYsIDQ3LCAyNDYsIDE5MCwgNDYsIDQ3LCAyNDcsIDYxLCA0NiwgNDcsIDI0NiwgCisgICAgMTU4LCA0NiwgNDcsIDI0NywgMjksIDQ2LCA0NywgMjQ2LCAyMjEsIDQ2LCA0NywgMjQ3LCA5MiwgNDYsIDQ3LCAyNDYsIAorICAgIDE0MiwgNDYsIDQ3LCAyNDcsIDEzLCA0NiwgNDcsIDI0NiwgMjA1LCA0NiwgNDcsIDI0NywgNzYsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNzMsIDQ2LCA0NywgMjQ3LCA0NCwgNDYsIDQ3LCAyNDYsIDIzNiwgNDYsIDQ3LCAyNDcsIDEwNywgNDYsIDQ3LCAyNDYsIAorICAgIDEyMywgNDYsIDQ3LCAyNDYsIDI1MCwgNDYsIDQ3LCAyNDYsIDE4NiwgNDYsIDQ3LCAyNDcsIDU3LCA0NiwgNDcsIDI0NiwgCisgICAgMTU0LCA0NiwgNDcsIDI0NywgMjUsIDQ2LCA0NywgMjQ2LCAyMTcsIDQ2LCA0NywgMjQ3LCA4OCwgNDYsIDQ3LCAyNDYsIAorICAgIDEzOCwgNDYsIDQ3LCAyNDcsIDksIDQ2LCA0NywgMjQ2LCAyMDEsIDQ2LCA0NywgMjQ3LCA3MiwgNDYsIDQ3LCAyNDYsIDE2OSwgCisgICAgNDYsIDQ3LCAyNDcsIDQwLCA0NiwgNDcsIDI0NiwgMjMyLCA0NiwgNDcsIDI0NywgMTAzLCA0NiwgNDcsIDI0NiwgMTMwLCAKKyAgICA0NiwgNDcsIDI0NywgMSwgNDYsIDQ3LCAyNDYsIDE5MywgNDYsIDQ3LCAyNDcsIDY0LCA0NiwgNDcsIDI0NiwgMTYxLCA0NiwgCisgICAgNDcsIDI0NywgMzIsIDQ2LCA0NywgMjQ2LCAyMjQsIDQ2LCA0NywgMjQ3LCA5NSwgNDYsIDQ3LCAyNDYsIDE0NSwgNDYsIDQ3LCAKKyAgICAyNDcsIDE2LCA0NiwgNDcsIDI0NiwgMjA4LCA0NiwgNDcsIDI0NywgNzksIDQ2LCA0NywgMjQ2LCAxNzYsIDQ2LCA0NywgCisgICAgMjQ3LCA0NywgNDYsIDQ3LCAyNDYsIDIzOSwgNDYsIDQ3LCAyNDcsIDExMCwgOTcsIDIxNSwgNTgsIDgwLCAyLCA2NywgOTEsIAorICAgIDk3LCAyMTUsIDU4LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCA1MiwgODAsIDIsIDY3LCA5MSwgOTcsIDUyLCA4MCwgMiwgCisgICAgNjcsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIDI0MywgMjQzLCAxMzAsIDE0MCwgCisgICAgNTIsIDgwLCAyNDMsIDI0MywgMTMwLCA5NywgNTIsIDgwLCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgODAsIDIsIDIwMywgCisgICAgOTEsIDIxNCwgMTUzLCA4MCwgMiwgMjAzLCA5MSwgMjE0LCAxNTMsIDIxNSwgMjExLCA3NCwgMjQ2LCAxMDQsIDIxNSwgMjExLCAKKyAgICA3NCwgMTQwLCA1MiwgMjQ4LCAxNTcsIDc0LCA5NywgNTIsIDI0OCwgMTU3LCA3NCwgMTQwLCAyMTUsIDIxMSwgMjQ4LCAxNTcsIAorICAgIDc0LCA5NywgMjE1LCAyMTEsIDI0OCwgMTU3LCA3NCwgOTcsIDIxNSwgNTgsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIDk3LCAKKyAgICA4MCwgMiwgMjQ2LCAxMTgsIDIxOCwgMTM5LCAyMTQsIDE1MywgODAsIDIxNiwgNDIsIDEzMCwgMjQ2LCAxMDQsIDgwLCAyMTYsIAorICAgIDQyLCAxMzAsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCA5NywgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgCisgICAgOTEsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3NywgOTcsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIAorICAgIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyNTMsIDI1MSwgOTcsIDI1MywgMjUxLCAKKyAgICAxNDAsIDUyLCAyNTMsIDI1MSwgOTcsIDUyLCAyNTMsIDI1MSwgMTQwLCA4MCwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCA5NywgCisgICAgODAsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgMTQwLCA4MCwgMjQzLCAyNDMsIDI1MiwgMTQxLCAyMTYsIDQyLCA4NSwgMjQ3LCAKKyAgICAyNDgsIDk3LCA4MCwgMjQzLCAyNDMsIDI1MiwgMTQxLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDIyOCwgNTYsIDIxMiwgOSwgCisgICAgMjIsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDIyLCAyMTksIDI4LCAyMTIsIDksIDc0LCAKKyAgICAyMjgsIDU2LCAyMTIsIDksIDgwLCAyLCAxMDMsIDIyOCwgNTYsIDI0NSwgMjIwLCA4MCwgMiwgMTAzLCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgODAsIDIsIDEwMywgMjE5LCAyOCwgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDU2LCAyMTIsIDksIDgwLCAyMiwgCisgICAgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDIyLCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIAorICAgIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgMjIsIDIxOSwgMjgsIDIxMiwgOSwgNzQsIDIxOSwgMjgsIDIxMiwgOSwgODAsIDIyLCAKKyAgICAyMjgsIDU2LCAyMTIsIDksIDc0LCAyMjIsIDIyOCwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyNDQsIDE3NSwgMjQ3LCAyNTQsIAorICAgIDI0NCwgMTc1LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIyMiwgMjI4LCAyNDcsIDI1NCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDgwLCAKKyAgICAyNDksIDEyNSwgMjI4LCA1NiwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDI0OSwgMTI1LCAyMTksIAorICAgIDI4LCAyNDUsIDIyMCwgNzQsIDI0NCwgMTc1LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgCisgICAgMjIyLCAyMjgsIDI0NywgMjU1LCAyNDksIDEyNSwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgCisgICAgODAsIDI0OSwgMTI1LCAyMjgsIDU2LCAyMTIsIDksIDc0LCAyMjgsIDU2LCAyMTIsIDksIDgwLCAyNDksIDEyNSwgMjI4LCAKKyAgICA1NiwgMjQ1LCAyMjAsIDc0LCAyMTIsIDM2LCA4MCwgMjI1LCA3LCAyNDcsIDE5NSwgMjIyLCAyNTEsIDgwLCAyMjUsIDcsIAorICAgIDk3LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjE0LCAxNTIsIDgwLCAyMjUsIDcsIDk3LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjQ2LCAKKyAgICAxMDMsIDgwLCAyMjUsIDcsIDI0NiwgMTA0LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjMzLCAzNywgODAsIDIyNSwgNywgMjQ2LCAKKyAgICAxMDQsIDIxNiwgMTg4LCAyNDksIDkwLCAyMjIsIDI0MSwgMjIyLCAyNDQsIDI1NCwgMjYsIDI1MCwgMiwgNzQsIDIzMywgNDAsIAorICAgIDI1NCwgMjYsIDI1NCwgODgsIDc0LCAyMTYsIDE0LCAyNTQsIDI2LCAyNTQsIDg4LCA3NCwgMjUxLCAxNzUsIDI1NCwgMjYsIAorICAgIDI1NCwgODgsIDc0LCAyMTYsIDE0LCAyNTQsIDI2LCAyNTAsIDIsIDgwLCAyLCAyMzAsIDE4MSwgMjE2LCAxNCwgMjU0LCAyNiwgCisgICAgMjU0LCA4OCwgODAsIDIsIDIyNSwgMjIsIDIzMiwgMTA4LCA0NCwgMjIwLCAxNTIsIDI1MCwgMiwgNzQsIDIzMiwgMTA4LCAKKyAgICA0MywgMjIwLCAxNTIsIDI1NCwgODgsIDc0LCAyNTQsIDg4LCAyNTAsIDAsIDI1MCwgMzYsIDc0LCAyNTAsIDIsIDI1MCwgMCwgCisgICAgMjUwLCAzNiwgNzQsIDk3LCA4MCwgNzcsIDIxOSwgMjUxLCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgMjE5LCAyNTEsIDk3LCAKKyAgICA3NCwgMjE5LCAyNTEsIDk3LCA4MCwgNzcsIDE0MCwgNzQsIDk3LCA4MCwgMiwgOTYsIDUxLCAxNDAsIDgwLCAyLCA5NiwgNTEsIAorICAgIDk3LCA4MCwgMjE2LCAxMzksIDIxMSwgMTc4LCA0MywgNDQsIDgwLCAyMTYsIDEzOSwgNCwgMjUwLCAzNSwgMjE0LCAxNTMsIAorICAgIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgNCwgMjUwLCAzNSwgNDMsIDI1MiwgMTM5LCAxMjAsIDQ0LCAyNTIsIDEzOSwgMTI0LCAKKyAgICAyNDEsIDI1NCwgNDMsIDI1MiwgMTM5LCAxMjQsIDQ0LCAyNTIsIDEzOSwgMTIwLCAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgCisgICAgNDQsIDEyNCwgMjUyLCAxMzksIDQzLCAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgNDMsIDEyNCwgMjUyLCAxMzksIDQ0LCAKKyAgICAyNDEsIDI1NCwgNDMsIDI1MiwgMTM5LCAxMjAsIDQ0LCAyNTIsIDEzOSwgMTIwLCAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgCisgICAgNDQsIDEyNCwgMjUyLCAxMzksIDQ0LCAyNDEsIDI1NCwgNDMsIDI1MiwgMTM5LCAxMjQsIDQ0LCAyNTIsIDEzOSwgMTI0LCAKKyAgICAyNDEsIDI1NCwgMTIwLCAyNTIsIDEzOSwgNDMsIDEyNCwgMjUyLCAxMzksIDQzLCAyNDEsIDI1NCwgMTQwLCAyNDEsIDI1NSwgCisgICAgMiwgMjUyLCAxMzksIDEyMCwgMjE2LCA0MiwgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDIxNiwgNDIsIAorICAgIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDQsIDIxNiwgNDIsIDEzMCwgMjQ2LCAxMDQsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgNDQsIDIxNiwgNDIsIDEzMCwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjE2LCAKKyAgICA0MiwgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDIxNiwgNDIsIDEzMCwgMjE0LCAxNTMsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDIxNiwgNDIsIDEzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIAorICAgIDIxNiwgNDIsIDEzMCwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjQzLCAyNDMsIDEzMCwgOTcsIDI0MSwgCisgICAgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyNDMsIDI0MywgMTMwLCAyMTQsIDE1MywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAKKyAgICA0NCwgMjQzLCAyNDMsIDEzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDQsIDI0MywgMjQzLCAxMzAsIAorICAgIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI0MywgMjQzLCAxMzAsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDEyNCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI0MywgMjQzLCAKKyAgICAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNDMsIDI0MywgMTMwLCAxNDAsIDI0MSwgMjU1LCAKKyAgICAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgMTA2LCAyMTQsIDE1MywgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjUyLCAzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAKKyAgICAyNTEsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDI0NiwgCisgICAgMTA2LCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjUyLCAzMCwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjIyLCAyNTEsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyMTQsIDE2MywgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgNzcsIDk3LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDI0NiwgMTA2LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjE0LCAxNjMsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyNDYsIDEwNiwgMTQwLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE5OSwgMjQ4LCAxNTYsIAorICAgIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI1MiwgNDMsIDE5OSwgMjQ4LCAxNTYsIDk3LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDEyMCwgNzcsIDE5OSwgMjQ4LCAxNTYsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDEyNCwgMjUyLCAKKyAgICA0MywgMTk5LCAyNDgsIDE1NiwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDI0NiwgCisgICAgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjUxLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAKKyAgICA0MywgMjUyLCAzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNTEsIDQ0LCA1MiwgODAsIDIsIAorICAgIDIyMiwgMTgzLCAyNDEsIDIzNSwgMjQ1LCA5OCwgNSwgNzcsIDk3LCA3NCwgMjE2LCA4OSwgMjI2LCAxNjgsIDc3LCA5NywgCisgICAgNzQsIDE0MCwgODAsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIDgwLCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCAKKyAgICA4MCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjMzLCAxNSwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDIxNiwgMTM5LCAyMzMsIAorICAgIDE0LCAyNDIsIDEzMCwgNzcsIDk3LCA3NCwgMjE4LCA2NCwgNzcsIDk3LCA3NCwgMTQwLCA4MCwgMjE2LCAxMzksIDIxOCwgCisgICAgNjMsIDIxOCwgMjIsIDc3LCAxNDAsIDc0LCA0MywgMjQ0LCA5MSwgMjE3LCA3NywgNDQsIDI0NCwgOTEsIDIxNywgNzcsIAorICAgIDEyMCwgMjQ0LCA5MSwgMjE3LCA3NywgMTI0LCAyNDQsIDkxLCAyMTcsIDc3LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAKKyAgICAyNDgsIDYwLCAyMTAsIDE2MCwgMTg3LCAyMTgsIDI0MiwgMjEwLCAxNjAsIDE4NywgMjE1LCA0OSwgMjQ5LCAyMjYsIDQzLCAKKyAgICA3MSwgMjQ5LCA5OSwgMTI3LCA0NCwgNzEsIDI0OSwgOTksIDEyNywgNDMsIDcxLCAyMjYsIDMsIDQ0LCA3MSwgMjI2LCAzLCAKKyAgICAyMTAsIDE2MCwgMTg3LCA0MywgMjM2LCAxNSwgMTI3LCAyMTAsIDE2MCwgMTg3LCA0NCwgMjM2LCAxNSwgMTI3LCAyMTAsIAorICAgIDE2MCwgMTg3LCA0MywgMjUxLCAyNDIsIDEyNywgMjEwLCAxNjAsIDE4NywgNDQsIDI1MSwgMjQyLCAxMjcsIDQzLCA0MiwgCisgICAgMjUxLCAxNTgsIDIsIDIxNCwgMTgzLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTQsIDE4MywgNDMsIDQyLCAyNTEsIDE1OCwgCisgICAgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjE2LCAxNCwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAKKyAgICAyMzYsIDAsIDI1MSwgMTc1LCAyNDksIDE2MCwgNDMsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjUxLCAKKyAgICAxNzUsIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgMjM2LCAwLCAyMTYsIDE0LCAyNDksIDE2MCwgCisgICAgNDMsIDI1NCwgMTEwLCAyNTEsIDE1OCwgMiwgMjQ3LCAxMjAsIDQ0LCAyNTQsIDExMCwgMjUxLCAxNTgsIDIsIDI0NywgMTIwLCAKKyAgICA0MywgMjU0LCAyNiwgMjMzLCAxNSwgMTI3LCA0NCwgMjU0LCAyNiwgMjQyLCAxMzAsIDEyNywgNTIsIDQzLCAyNTQsIDI2LCAKKyAgICAyNDIsIDEzMCwgMTI3LCA1MiwgNDQsIDI1NCwgMjYsIDIzMywgMTUsIDEyNywgNDMsIDg1LCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNDQsIDg1LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjQ2LCAxMTgsIDI0NCwgMTM1LCA2NywgMjEwLCAzNSwgMjMyLCAKKyAgICAyMTMsIDIzMSwgODgsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjMzLCA0NiwgNDQsIDI1NCwgMTEwLCAyMTQsIDEyLCAyLCAyMTgsIAorICAgIDIzNCwgMjMxLCA4OCwgNDQsIDI1NCwgMTEwLCAyLCAyNDcsIDEyMCwgMjU0LCAxMTAsIDIsIDIyMiwgOTIsIDIzNSwgMjE1LCAKKyAgICAyNTUsIDMsIDI1NCwgMTA5LCAyMTgsIDI1NSwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyMzMsIDQ2LCAyMTgsIDI1NSwgMjU0LCAKKyAgICAxMTAsIDIyNiwgMTcwLCAyMTQsIDE2MywgMjE1LCA5NCwgMjU0LCAxMDksIDIyMywgNDksIDI1NCwgMTA5LCAyNTQsIDExMCwgCisgICAgMiwgMjE0LCAxODMsIDIyMywgNDksIDI1NCwgMTEwLCAyLCAyMTQsIDE4MywgMjI2LCAyNDgsIDI1NCwgMTEwLCAyMjYsIAorICAgIDE3MCwgMjE0LCAxNjMsIDIyNiwgMjQ4LCAyNTQsIDExMCwgMjI2LCAxNzAsIDI0NiwgMTA2LCAyMzEsIDg4LCAyNTQsIDExMCwgCisgICAgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyMCwgMjIsIDIyMiwgMjUxLCAyMzEsIDg4LCAKKyAgICAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyMCwgMjIsIDIzMywgNDYsIAorICAgIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgMTI0LCAyMiwgCisgICAgMjIyLCAyNTEsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgCisgICAgNywgMTI0LCAyMiwgMjMzLCA0NiwgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCAKKyAgICA4MCwgMjI1LCA3LCA0NCwgMjIsIDIxNCwgMTYzLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgCisgICAgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQzLCAyMiwgMjE0LCAxNjMsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIAorICAgIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDQsIDIyLCAyNDYsIDEwNiwgMjMxLCA4OCwgMjU0LCAKKyAgICAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0MywgMjIsIDI0NiwgMTA2LCAyMjMsIAorICAgIDQ5LCAyNDUsIDE1MiwgMjIwLCAxMjcsIDI0NSwgMTUyLCAyMjAsIDEyOCwgMiwgMjI2LCAxMjMsIDI0NSwgMTUyLCAyMjAsIAorICAgIDEyOCwgMiwgNCwgMjUwLCAzNiwgNDgsIDI0NSwgMTUyLCAyMjAsIDEyOCwgMiwgNDQsIDgwLCA0OCwgMjQ1LCAxNTIsIDIyMCwgCisgICAgMTI4LCAyLCA0MywgODAsIDQ4LCAyNTAsIDM2LCAyLCAyMDMsIDEzMCwgMzcsIDY3LCAxMzAsIDM3LCAyMjYsIDcsIDM3LCAKKyAgICAyMjMsIDUwLCAyMTksIDQ2LCAzNywgMjI1LCAxNzEsIDI1MCwgMzYsIDI0NywgMTczLCAyNTEsIDc4LCAyMDMsIDI1MiwgCisgICAgMTQxLCAyMiwgMjE2LCAxNCwgMTYzLCAyNDcsIDE3MywgMjUxLCA3OCwgNjcsIDEzMCwgMjUwLCAzNiwgMiwgMjE4LCAyNCwgCisgICAgMjExLCAxNzgsIDM3LCAyNTQsIDg3LCAyNDcsIDE2OSwgNTAsIDEyMCwgODAsIDIxNiwgMTM5LCAyNTAsIDM1LCAzNywgNzEsIAorICAgIDI1MSwgMTEzLCAzNywgMjUxLCAxMTMsIDM3LCAyMzMsIDE0LCAzNywgMjQyLCAxMjksIDI1MCwgMzYsIDIsIDQsIDI1MCwgCisgICAgMzYsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMjIsIDI1MSwgMjUwLCAzNiwgMiwgMTEzLCAyMDMsIDIxOCwgOTEsIDIxNiwgNDIsIAorICAgIDIxNiwgMTk2LCAyMjIsIDI1MSwgOTIsIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjE5LCA5NSwgOTIsIDI0NCwgMTc1LCAyNDcsIAorICAgIDI1NSwgMjE5LCA5NSwgOTIsIDI1MywgMjE2LCA5MiwgNCwgMjUwLCAzNSwgOTIsIDIxOCwgMjM0LCAxMTMsIDIzNSwgNjUsIAorICAgIDIxOCwgMjMyLCAyMTUsIDIyNiwgMiwgNTksIDQ4LCAyMTUsIDIyNiwgMiwgMjE0LCAxODMsIDIyMiwgOTIsIDIzNiwgMCwgCisgICAgMjE1LCAyMjUsIDIxNSwgMjI2LCAyLCAyMjAsIDEzNCwgMjUzLCAyMDcsIDI1MSwgMTc0LCA0NCwgMjE1LCAyMjYsIDc3LCAKKyAgICA0MywgMjE1LCAyMjUsIDQzLCAyMTUsIDIyNiwgMjUyLCAzMCwgNjcsIDEzMCwgNjcsIDI1MiwgMTQxLCAyNTIsIDMwLCA0NCwgCisgICAgMjE1LCAyMjUsIDI1MSwgMTY1LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjUxLCAxNjUsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCAKKyAgICA4NSwgMjUxLCAxNjQsIDMwLCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMzAsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA3MSwgCisgICAgMjQwLCAyMzYsIDg1LCAyNDAsIDIzNiwgNDMsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgNDQsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgCisgICAgNDMsIDUyLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDQ0LCA1MiwgMjExLCAyNDQsIDI0NCwgMTM1LCAyMzUsIDI0OCwgMjM1LCAKKyAgICAyMzQsIDIxNiwgMTEyLCAxMTcsIDIzNSwgMjM0LCAyMzUsIDIzNSwgMjI5LCAxMDIsIDIsIDY3LCAxMzAsIDI0NiwgMTEyLCAKKyAgICAyMzAsIDg3LCA0MiwgMiwgMjQ5LCAxODEsIDIyNiwgMTI3LCAyMzUsIDI0NiwgMjUzLCAyMzcsIDIxOSwgMjE5LCAyMjQsIAorICAgIDE4MCwgMjQ1LCA5OCwgNSwgMjIsIDIxOSwgOTcsIDIyNiwgNywgMjQ1LCA5OCwgNSwgMjIsIDIxOSwgOTcsIDIyNiwgOCwgMiwgCisgICAgMjE2LCA4OSwgNDgsIDI0MCwgMTA0LCAyMTYsIDQyLCAyMiwgMjE5LCA5NywgMjI2LCA3LCAyNDIsIDE4MywgMjE4LCAxNTUsIAorICAgIDIxNiwgMTg1LCAyNDYsIDEwNSwgMjE1LCAyMjYsIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNDYsIDEwNSwgMjE1LCAyMjYsIAorICAgIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA4NSwgMjQ3LCAyNDksIDIsIDEyNCwgNzQsIDg1LCAyMzIsIDEwNCwgNzEsIDI1MCwgCisgICAgMzYsIDIsIDEyNCwgNzQsIDg1LCAyNTAsIDM2LCAyLCAxMjQsIDc0LCAyNDUsIDg1LCA3MSwgMjE4LCAyMzQsIDI0NSwgODUsIAorICAgIDg1LCAyMTgsIDIzNCwgMjQ1LCA4NSwgNzEsIDI0NywgMjQ4LCAyNDUsIDg1LCA4NSwgMjQ3LCAyNDgsIDI0NSwgODUsIDcxLCAKKyAgICAyNTAsIDM1LCAyNDUsIDg1LCA4NSwgMjUwLCAzNSwgMjIyLCAxMzIsIDIyMywgNTAsIDIxOSwgNDcsIDIyNiwgMTY3LCAyMTksIAorICAgIDQ3LCAyLCAyMjYsIDEyMywgMjIzLCA1MCwgMjE5LCA0NywgMiwgMjAzLCA5MSwgMjUxLCAyNDksIDIxOSwgNDYsIDI1MSwgCisgICAgMjQ5LCAyMjMsIDUwLCAyMTksIDQ2LCA1MiwgMjI1LCAyMiwgMjE1LCAyMTEsIDIyNSwgMjIsIDIzMywgNDIsIDI0OSwgOTEsIAorICAgIDI1NCwgMTEwLCAxMjcsIDIyMiwgMjQ3LCAyNDksIDkxLCAyNTQsIDExMCwgMTI3LCAyMTYsIDc4LCAyMzAsIDE3OSwgMjMwLCAKKyAgICAyNCwgMzcsIDU5LCAyMjYsIDE2NywgMjMwLCAyNCwgMzcsIDk2LCAyMjYsIDE2NywgMjMwLCAyNCwgMzcsIDMwLCAyMjYsIAorICAgIDE2NywgMjMwLCAyNCwgMjE0LCAxNzYsIDIyNiwgMTY4LCAyLCAyNDcsIDEyMCwgMjMwLCAyNCwgMjE0LCAxNzYsIDIyNiwgCisgICAgMTY4LCAyLCAyMjUsIDIyLCAyMzAsIDI0LCA0MiwgMjM1LCAxOTksIDIyNiwgMTY3LCAyMzAsIDI0LCA0MiwgMjE0LCAxNzYsIAorICAgIDIyNiwgMTY3LCAxMTMsIDIzMiwgMTQ2LCAyMiwgMjI2LCAxNjcsIDExMywgMjMyLCAxNDYsIDE3NywgMjI2LCAxNjcsIDIzMCwgCisgICAgMjQsIDMwLCAyMjYsIDE2NywgMjMwLCAxNTQsIDExMywgMjE4LCA0MywgMjE4LCA0MSwgMiwgMjM1LCAyMTEsIDIyNCwgMjQsIAorICAgIDIzNSwgMjEyLCAyMjYsIDE2NywgMjQ0LCA5OSwgMjI1LCAyNTUsIDIzNSwgMjExLCAyMzUsIDIxMiwgMiwgNTIsIDkxLCAKKyAgICAyMzUsIDIxMiwgMjUzLCAxNzMsIDIsIDIxOSwgOTUsIDI1MCwgMzIsIDI0MywgMjI2LCAyNTQsIDg4LCAyMzUsIDIwOSwgCisgICAgMjMyLCAyMTQsIDIzNSwgMjEwLCAyLCAyMjMsIDExNSwgMjI1LCAyMzcsIDI1NCwgMiwgMjI1LCAxLCAyMzIsIDIxNCwgMjM1LCAKKyAgICAyMTAsIDIsIDIyMCwgMTUyLCAyMjUsIDIzNywgMjU0LCAyLCAyMjUsIDEsIDIzMiwgMjE0LCAyMzUsIDIxMCwgMjI4LCA1MiwgCisgICAgMjM1LCAyNTAsIDIxNiwgMTk2LCAyMjUsIDEsIDIzNSwgMjEyLCAyNTQsIDIsIDExNSwgMjI1LCAxMSwgMjI2LCAxNjcsIAorICAgIDIyNCwgMTgsIDIzNSwgMjEyLCAyMjYsIDE2NywgMjM1LCAyMTIsIDIsIDE0MCwgODAsIDIsIDEwMywgMjM1LCAyMTIsIDIsIAorICAgIDMwLCA1MCwgMjM1LCAyMTIsIDIsIDIzNSwgMTk4LCAyMzUsIDIxMiwgMiwgMjE0LCAxNzUsIDIzNSwgMjEyLCAyLCAyMjYsIAorICAgIDEyMywgMjM1LCAyMTIsIDIsIDIxNCwgMTgzLCAyMzUsIDY2LCAyMzMsIDg1LCA0MywgMjE1LCAyMjYsIDIyNiwgMTY3LCAKKyAgICAyMTAsIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjQ5LCAyMDksIDIxMCwgMTYwLCAxODcsIDIyMSwgMjAxLCAyMjUsIDU2LCAyMTAsIAorICAgIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjI0LCAxNzYsIDk2LCA1LCAyLCA0LCAyNTAsIDM2LCA0OCwgOTYsIDUsIDIsIDI1MCwgCisgICAgMzEsIDI1NSwgMTUsIDQ4LCA5NiwgNSwgMiwgMjE2LCA4OSwgNDgsIDk2LCA1LCAyLCA1OSwgNTEsIDk2LCA1LCAyLCAyMTYsIAorICAgIDg5LCA1MSwgOTYsIDUsIDIsIDIxOCwgNjUsIDEwNSwgOTYsIDUsIDIsIDg1LCAyMTUsIDIyNSwgMjMwLCAxODIsIDUsIDIsIAorICAgIDI0OSwgMjIwLCA0OCwgMjMwLCAxODIsIDUsIDIsIDU5LCA1MSwgMjMwLCAxODIsIDUsIDIsIDI0NCwgMTc1LCAyNDcsIDExOCwgCisgICAgMjMwLCAxODIsIDUsIDIsIDIyMiwgMjI4LCAyNDcsIDExOCwgOTYsIDUsIDIzNiwgMCwgNDMsIDE2MywgMjUwLCAzNSwgOTYsIAorICAgIDUsIDIzNiwgMCwgNDQsIDE2MywgMjUwLCAzNSwgMjEzLCAyNTQsIDE3NywgMjQ5LCAxMzEsIDIyNCwgMTgwLCAyMzAsIDg0LCAKKyAgICA1LCAyLCA1OSwgNDgsIDIzMCwgODQsIDUsIDIsIDIxNCwgMTgzLCAyMjAsIDE0OSwgMjI0LCAxODEsIDIsIDI1MSwgMTc1LCAKKyAgICAyNDksIDI1NSwgMjE5LCA3NywgMjI0LCAxODAsIDIzMCwgODQsIDUsIDIzNiwgMCwgNDMsIDE2MywgMjUwLCAzNSwgMjMwLCAKKyAgICA4NCwgNSwgMjM2LCAwLCA0NCwgMTYzLCAyNTAsIDM1LCAzNywgMjMwLCA4NCwgNSwgMiwgMjUwLCAzMSwgMjU1LCAxNCwgCisgICAgMjMwLCA4NCwgNSwgMjM2LCAwLCA1MiwgMjUwLCAzNSwgMzcsIDI0NywgMTY5LCA1MCwgOTYsIDUsIDIzNiwgMCwgMjE1LCAKKyAgICAyMjUsIDIzMCwgMTgyLCA1LCAyMzYsIDAsIDIxNSwgMjI1LCAyMzAsIDg0LCA1LCAyMzYsIDAsIDIxNSwgMjI1LCAyMzUsIAorICAgIDIwNiwgMjI0LCAxODAsIDIyMiwgMjQyLCAyMzUsIDIwNiwgMjI0LCAxODAsIDIxMCwgMTYwLCAxODcsIDIyMywgOTAsIDI0OSwgCisgICAgMjA5LCAyNTQsIDEzNCwgMTc3LCAyNDksIDE2NSwgMjM1LCAxOTksIDIsIDI0NywgMTIwLCAyMTQsIDE3NiwgMiwgMjMwLCAKKyAgICAxODIsIDUwLCAyMTQsIDE3NiwgMiwgMjI2LCAxMjMsIDIzNSwgMTk5LCAyLCAyMjYsIDEyMywgMjM1LCAxOTksIDIsIDIzMiwgCisgICAgMTQ2LCAyNTQsIDExOCwgMjE0LCAxNzYsIDIsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjE0LCAxNzYsIDc3LCAyMzUsIDE5OCwgCisgICAgMjM1LCAxOTksIDc3LCAyMTQsIDE3NSwgMjE0LCAxNzYsIDc3LCAyNTIsIDE0MSwgNzcsIDIzNSwgMTk4LCAyMzUsIDE5OSwgCisgICAgNzcsIDI1MiwgMTQxLCA3NywgMjE0LCAxNzUsIDIxNCwgMTc2LCAyNTIsIDMwLCAyMiwgMjM1LCA2NSwgMiwgMjE0LCAxNzUsIAorICAgIDIzNSwgMTk5LCAyNTIsIDMwLCAyMiwgMjM1LCA2NSwgMiwgMjM1LCAxOTgsIDI1MCwgMCwgMjE0LCAxNzYsIDIsIDIyMCwgCisgICAgMTMzLCAyNTAsIDAsIDIzNSwgMTk5LCAyLCAyMjAsIDEzMywgNTIsIDQyLCAyMzUsIDE5OCwgNTIsIDQyLCAyMTQsIDE3NSwgCisgICAgMjUwLCAwLCAyMTQsIDE3NiwgMiwgMjIwLCAxMzQsIDIyLCAyMTksIDc3LCAyMjQsIDE4MCwgMjMyLCAxNDYsIDIyLCAyLCAKKyAgICA1OSwgNDgsIDIzMiwgMTQ2LCAxNzcsIDIsIDU5LCA0OCwgNTIsIDIzMiwgMTQ2LCAyNTQsIDExOCwgNTIsIDIzMiwgMTQ2LCAKKyAgICAyMjYsIDE1OCwgMTEzLCAyMzUsIDIwMCwgMjMyLCAxNDYsIDI1NCwgMTE4LCAxMTMsIDIzNSwgMjAwLCAyMzIsIDE0NiwgCisgICAgMjI2LCAxNTgsIDIxOSwgODUsIDIzMywgODUsIDIyNiwgMTU4LCAyMTksIDg1LCAyMzMsIDg1LCAyNTQsIDExOCwgMjMyLCAKKyAgICAxNDYsIDE3NywgMjI2LCAxMjEsIDIzMiwgMTQ2LCAyNTQsIDExOCwgMjMyLCAxNDYsIDIyLCAyLCAyMzAsIDIyNCwgMjE4LCAKKyAgICAxMzksIDIzMiwgMTQ2LCAxNzcsIDIsIDIzMCwgMjI0LCAyMTgsIDEzOSwgMjMyLCAxNDYsIDIyLCAyLCAyMDMsIDI0OCwgCisgICAgMTU2LCAyMzIsIDE0NiwgMTc3LCAyLCAyMDMsIDI0OCwgMTU2LCAyMzIsIDE0NiwgMjIsIDIsIDUyLCAyMjYsIDEyMywgMjMyLCAKKyAgICAxNDYsIDIyLCAyLCAyMTQsIDE4MywgMjMyLCAxNDYsIDIyLCAyLCA1MiwgMjE0LCAxODMsIDQsIDIxMywgMjUxLCAyLCAyMTQsIAorICAgIDE4MywgMjMyLCAxNDYsIDE3NywgMiwgNTIsIDIyNiwgMTIzLCAyMzIsIDE0NiwgMTc3LCAyLCA1MiwgMjE0LCAxODMsIDIxMCwgCisgICAgMTYwLCAxODcsIDI0NywgMTI5LCAyNTQsIDc5LCAyMTAsIDE2MCwgMTg3LCAyMjMsIDE0OCwgMjU0LCA3OSwgMjQ1LCA5OCwgCisgICAgNSwgMiwgNTksIDUxLCAyNDAsIDEwNCwgMiwgNTksIDQ4LCAyMTUsIDIxMSwgMjAzLCAyNTIsIDE0MSwgMiwgNTIsIDY3LCAKKyAgICA5MSwgMjE1LCAyMTEsIDIwMywgMjUyLCAxNDEsIDIsIDIxNSwgMjExLCA2NywgOTEsIDIxNiwgODksIDIyNiwgMTY4LCAyLCAKKyAgICA1OSwgNDgsIDIxNiwgODksIDIyNiwgMTY4LCAyLCAyMjIsIDIyOCwgMjQ3LCAxMTgsIDIxOSwgMTYyLCAyMzAsIDE4MiwgCisgICAgMjE5LCAxNjEsIDI0OSwgMTk5LCAyLCA1OSwgNDgsIDI0NSwgOTgsIDIsIDI1MywgMjE2LCAyNTQsIDE0OCwgMTI4LCAyMTYsIAorICAgIDQyLCAyLCAyNTAsIDMxLCAyNTUsIDE0LCAyNTQsIDQ4LCAxMjgsIDE3NywgMTI4LCAxMTEsIDI0NSwgOTgsIDUsIDc3LCA5NiwgCisgICAgNTAsIDk2LCA1LCA3NywgMjQ1LCA5OCwgNTAsIDI0NSwgOTgsIDUsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgNTIsIDI0OSwgCisgICAgMjI3LCAyNDUsIDk5LCAxMTMsIDI0OSwgMTk0LCAyNDUsIDk4LCAyMTksIDE3NiwgMTM0LCAyNDksIDE5NCwgMjQ1LCA5OCwgCisgICAgMjE5LCAxNzYsIDI0NSwgOTgsIDUsIDIsIDExMywgMTcwLCA3NywgMjIsIDExMywgMTcwLCA1MSwgMjQ1LCA5NCwgMiwgMjQ0LCAKKyAgICAxMSwgMTcwLCA0OCwgMjMzLCAxNSwgMiwgMjUwLCAzNiwgMjM1LCAyMTUsIDI0MiwgMTMwLCAyLCAyNTAsIDM2LCAyMzUsIAorICAgIDIxNSwgMjMzLCAxNSwgMiwgMjI0LCAxMywgMTY0LCA0OCwgMjQyLCAxMzAsIDIsIDIyNCwgMTMsIDE2NCwgNDgsIDIzMywgCisgICAgMTUsIDE3NywgMjE5LCA5NywgMTI4LCAxMTEsIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMTExLCAyMzMsIDE1LCAKKyAgICAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDIzNSwgMjE1LCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIAorICAgIDIxNiwgNDIsIDIsIDU5LCAyMzUsIDIxNSwgMjMzLCAxNSwgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCA0OCwgCisgICAgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIDIzMywgMTUsIDE3NywgMjE5LCA5NywgCisgICAgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNzcsIDIyMiwgMjUxLCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIAorICAgIDIsIDU5LCA3NywgMjMzLCA0NiwgMjMzLCAxNSwgMTc3LCAyNTQsIDQ5LCAyNDIsIDEzMCwgMTc3LCAyNTQsIDQ5LCAyMzMsIAorICAgIDE1LCAyMiwgMjE5LCAxNTMsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDIsIDEzMCwgMjIsIDIxOSwgMTUzLCAyMjgsIDUyLCAKKyAgICAxMjgsIDExMSwgMjMzLCAxNSwgMjIsIDIyOCwgNTIsIDI1NCwgNDksIDI0MiwgMTMwLCAyMiwgMjI4LCA1MiwgMjU0LCA0OSwgCisgICAgMjMzLCAxNSwgNzcsIDI0NiwgMTExLCAxMjgsIDc3LCAyNDIsIDEyOSwgMjQyLCAxMzAsIDc3LCAyNDYsIDExMSwgMTI4LCAKKyAgICA3NywgMjMzLCAxNCwgMjMzLCAxNSwgNzcsIDIxOSwgMTYyLCAxNzcsIDI0NSwgOTksIDI0MiwgMTMwLCA3NywgMjE5LCAxNjIsIAorICAgIDE3NywgMjQ1LCA5OSwgMjMzLCAxNSwgNzcsIDIxOSwgMTYyLCA3NywgMjQyLCAxMjksIDI0MiwgMTMwLCA3NywgMjE5LCAKKyAgICAxNjIsIDc3LCAyMzMsIDE0LCAyMzMsIDE1LCA3NywgMjQyLCAxMzAsIDc3LCAyNDYsIDExMSwgMjQ1LCA5OSwgMjQyLCAxMzAsIAorICAgIDc3LCAyMzMsIDE1LCA3NywgMjQ2LCAxMTEsIDI0NSwgOTksIDIzMywgMTUsIDc3LCAyMTksIDk3LCAxMjgsIDc3LCAyNDIsIAorICAgIDEzMCwgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDI0MiwgMTMwLCA3NywgMjE5LCA5NywgMTI4LCA3NywgMjMzLCAxNSwgNzcsIAorICAgIDIxOSwgOTcsIDI0NSwgOTksIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyMTksIDk3LCAxMjgsIDIxNiwgCisgICAgNDIsIDE3NywgMjQyLCAxMjksIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyMzMsIDE1LCAyLCA1OSwgMjM1LCAyMTUsIAorICAgIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEzMCwgMiwgNTksIDIzNSwgMjE1LCAyNDYsIDExMSwgMTI4LCAKKyAgICAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDI0NiwgMTExLCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDI0NiwgMTExLCAKKyAgICAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjQ2LCAxMTEsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgCisgICAgMTc3LCAyNDIsIDEyOSwgMjE5LCAxNjIsIDE3NywgMjMzLCAxNCwgMjE5LCAxNjIsIDE3NywgMjQyLCAxMjksIDIxOSwgMTYyLCAKKyAgICA3NywgMjMzLCAxNSwgNzcsIDI0NSwgOTgsIDUwLCAyMTksIDE2MiwgNzcsIDI0MiwgMTMwLCA3NywgMjQ1LCA5OCwgNTAsIAorICAgIDUyLCAyMjksIDkxLCAyMzMsIDE0LCA1MiwgMjI5LCA5MSwgMjQyLCAxMjksIDUyLCAyMjksIDkxLCAyMzMsIDE1LCAyLCAKKyAgICAyMTQsIDE4MywgMjQyLCAxMzAsIDIyNiwgMTIxLCAyMzMsIDE0LCAyNDIsIDEzMCwgMjUyLCAzMCwgMjMzLCAxNCwgMjMzLCAKKyAgICAxNSwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkyLCAyNDIsIDEzMCwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkyLCAyMzMsIAorICAgIDE1LCAyNTAsIDAsIDI1MSwgNzgsIDI0OSwgOTMsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyNDIsIDEzMCwgMjUwLCAwLCAKKyAgICAyNTEsIDc4LCAyNDksIDkzLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjE5LCA3OCwgMjE2LCAyMDAsIDIzMywgODMsIDIxNiwgCisgICAgMjAwLCAyMTksIDc4LCAyMTYsIDIwMSwgMTc3LCAxMjgsIDExMSwgMjMzLCA4MywgMjE2LCAyMDEsIDE3NywgMTI4LCAxMTEsIAorICAgIDI0NSwgOTgsIDUsIDIsIDI1MSwgMTA4LCA0OCwgMjI0LCAyMDMsIDc3LCAyMTksIDE1MywgMjQ1LCA5OCwgNTAsIDIxOCwgCisgICAgNTYsIDc3LCAyMTksIDE1MywgMjQ1LCA5OCwgNTAsIDIyNCwgMjAzLCA3NywgMjE5LCAxNTMsIDIyOCwgNTIsIDEyOCwgMTExLCAKKyAgICAyMTgsIDU2LCA3NywgMjE5LCAxNTMsIDIyOCwgNTIsIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDI0NSwgOTgsIDUwLCAyMTgsIAorICAgIDU2LCA3NywgMjQ1LCA5OCwgNTAsIDIyNCwgMjAzLCA3NywgMjI4LCA1MiwgMTI4LCAxMTEsIDIxOCwgNTYsIDc3LCAyMjgsIAorICAgIDUyLCAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxOCwgNTYsIDc3LCAyNTQsIDE0OCwgCisgICAgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjI4LCA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjI4LCAKKyAgICA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCA1MiwgMjI0LCAyMDIsIDUyLCAyMTgsIDU1LCAyMTgsIDY0LCAyLCAyNDcsIDEyMCwgCisgICAgMjE4LCAyMiwgMiwgMjQ3LCAxMjAsIDIxOCwgNjQsIDIsIDk2LCA1LCA1MSwgMjE4LCAyMiwgMiwgOTYsIDUsIDUxLCAyMTgsIAorICAgIDY0LCAyLCAyMzAsIDg0LCA1LCA1MSwgMjE4LCAyMiwgMiwgMjMwLCA4NCwgNSwgNTEsIDIxOCwgNjQsIDY0LCAxNzcsIDEyOCwgCisgICAgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMTgsIDIyLCA2NCwgMTc3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjE4LCA2NCwgCisgICAgNjQsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCAyMiwgNjQsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCA2NCwgNjQsIDc3LCAyMTYsIAorICAgIDg5LCAyMjYsIDE2NywgMjE4LCAyMiwgNjQsIDc3LCAyMTYsIDg5LCAyMjYsIDE2NywgMjE4LCA2NCwgNjQsIDc3LCAyNTQsIAorICAgIDE0OCwgMTI4LCAxMTEsIDIxOCwgMjIsIDY0LCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDY0LCA2NCwgNzcsIDIyOCwgCisgICAgNTIsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgNzcsIDIyOCwgNTIsIDEyOCwgMTExLCA0MiwgNDMsIDIwNCwgOTMsIDIyNiwgCisgICAgMTY3LCA0MiwgNDQsIDIwNCwgOTMsIDIyNiwgMTY3LCAyNTAsIDAsIDIxOCwgNjMsIDI1MCwgMCwgMjE4LCAyMSwgMjUwLCAwLCAKKyAgICAyMTgsIDY0LCAxNzcsIDEyOCwgMTExLCAyNTAsIDAsIDIxOCwgMjIsIDE3NywgMTI4LCAxMTEsIDIxOCwgNjQsIDc3LCAyMTgsIAorICAgIDIxLCAyMTgsIDIyLCA3NywgMjE4LCA2MywgMjE4LCA2NCwgNzcsIDIxOCwgNjMsIDIxOCwgMjIsIDc3LCAyMTgsIDIxLCAKKyAgICAyMTgsIDIyLCAyNTIsIDMwLCAyMTgsIDYzLCAyMTgsIDIyLCAyNTIsIDMwLCAyMiwgMjM1LCA2NSwgMjUxLCA3OCwgMjQ4LCAKKyAgICAxNTcsIDIsIDIxOCwgNjMsIDI0NSwgMTcwLCA2NCwgMjI2LCAxNzAsIDI0NiwgMTAzLCAyMjUsIDQ4LCAyLCAyMTcsIDEyLCAKKyAgICAyMTYsIDEzLCAyMTUsIDI0MCwgMjM1LCAxOTgsIDI0NCwgMjEsIDIyOCwgNjUsIDIxOSwgMjUxLCA0MywgMjE3LCA4NywgCisgICAgMjE5LCAyNTEsIDEyNCwgMjE3LCA4NywgMjE5LCAyNTEsIDEyMCwgMjE3LCA4NywgMjI1LCAxNzIsIDIsIDIyMiwgOTEsIDY3LCAKKyAgICAyNTIsIDE0MSwgMjE1LCAyMTEsIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQxLCA0MywgMjE1LCA5MywgNjcsIDI1MiwgCisgICAgMTQxLCA1MiwgNDMsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0MywgMjE1LCA5MywgMTk5LCAyNDgsIDE1NywgCisgICAgMjQzLCAyNDMsIDQzLCAyMzEsIDYzLCA2NCwgNTIsIDIxMywgMjM5LCAyMTksIDI1MSwgMTI0LCAyMTcsIDg4LCAyLCAyMjYsIAorICAgIDEyMywgMjE5LCAyNTEsIDEyMCwgMjE3LCA4OCwgMiwgMjE0LCAxODMsIDIxOSwgMjUxLCAxMjAsIDIxNywgODgsIDc3LCAKKyAgICAyMTksIDI1MSwgMTI0LCAyMTcsIDg3LCA1MiwgMTI0LCAyMTcsIDg3LCA1MiwgMTIwLCAyMTcsIDg3LCA1MiwgMjE4LCAxMDMsIAorICAgIDIyOCwgNTIsIDUwLCAyMjMsIDQ5LCA1MiwgMjE4LCAxMDMsIDIyOCwgNTIsIDUwLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ3LCAKKyAgICAxNzUsIDIsIDIyMywgNDksIDIyOSwgMTAxLCAyMTksIDk1LCA2NywgMjMyLCAyMTQsIDIsIDI1MCwgMzYsIDQ4LCA2NywgCisgICAgMjMyLCAyMTQsIDIsIDI1MCwgMzYsIDUxLCAxMjQsIDIxNywgODgsIDIsIDI1MCwgMzYsIDUxLCAyMjYsIDgsIDIsIDIwMywgCisgICAgOTEsIDIyNiwgOCwgMiwgMjE2LCA4OSwgMjI2LCAxNjcsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIDI1MSwgMjQ0LCAyMjMsIAorICAgIDkxLCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAyLCAyMDMsIDkxLCAyMTUsIDIxMSwgMjQ5LCAyMjcsIDIyNiwgMTY3LCAKKyAgICAyMTUsIDIxMSwgMjI5LCA5MSwgMjMzLCAxNCwgMjE1LCAyMTEsIDIyOSwgOTEsIDI0MiwgMTI5LCAyNDYsIDExMSwgMjE5LCAKKyAgICA5NywgMjMzLCAxNSwgMTc3LCAxMjgsIDExMSwgMjQ2LCAxMTEsIDIxOSwgOTcsIDI0MiwgMTMwLCAxNzcsIDEyOCwgMTExLCAKKyAgICAyMTUsIDIxMSwgMjE5LCA0NywgMjUxLCAyNDQsIDIyMywgOTEsIDIzMywgODUsIDIxNSwgMjExLCA2NywgMjUyLCAxNDEsIAorICAgIDIyNiwgMTY3LCA1MiwgMjE5LCA0NywgMjI2LCAxNjcsIDcxLCA2NywgMTMwLCAyMzAsIDI0LCA3MSwgNjcsIDEzMCwgMjI4LCAKKyAgICA1NiwgMjQ1LCAyMjAsIDcxLCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA3MSwgNzQsIDIxOSwgMjgsIDI0NSwgMjIwLCA3MSwgNzQsIAorICAgIDIxOSwgMjgsIDIxMiwgOSwgNzEsIDc0LCA0MywgNDQsIDcxLCA3NCwgMTQwLCA4NSwgNzQsIDIxNCwgMTUzLCA4NSwgNzQsIAorICAgIDI0NiwgMTA0LCA4NSwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA4NSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgODUsIDc0LCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgODUsIDc0LCAyMTksIDI4LCAyMTIsIDksIDg1LCA3NCwgNDMsIDQ0LCA4NSwgNzQsIDEyMCwgCisgICAgMTI0LCA4NSwgNzQsIDk3LCA4MCwgMiwgMjE2LCA3NywgMjQ2LCAxMDMsIDk3LCA4MCwgMiwgMjE2LCA3NywgMjE0LCAxNTIsIAorICAgIDE0MCwgODAsIDIsIDIxNiwgNzcsIDI0NiwgMTAzLCAxNDAsIDgwLCAyLCAyMTYsIDc3LCAyMTQsIDE1MiwgNDIsIDIsIDIxNiwgCisgICAgMTQsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyNTEsIDE3NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgCisgICAgMjQ3LCAyNTUsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMzIsIDEwOCwgNDMsIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCAKKyAgICAyNDcsIDI0OSwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgMjQ3LCAyNDksIAorICAgIDIsIDIxNiwgMTQsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAyLCAyNTEsIDE3NSwgMTYzLCAyNTEsIDIyMSwgMjQ2LCAKKyAgICAxMTgsIDIxOCwgMjM0LCA4NSwgMjMzLCA4NSwgMjE4LCAyMzQsIDcxLCAyMzMsIDg1LCAyMTgsIDIzNCwgODUsIDIxMywgCisgICAgMTg3LCA0LCAyMTgsIDIzNCwgNzEsIDIxMywgMTg3LCA0LCAyMTgsIDIzNCwgODUsIDIyNSwgMTkwLCA3MSwgMjI1LCAxOTAsIAorICAgIDcxLCAyNDEsIDE5MywgODUsIDI0MSwgMTkzLCAyMDMsIDg1LCAyNDEsIDE5MywgODUsIDIzMywgODUsIDI1MCwgMzUsIDg1LCAKKyAgICAyMzEsIDgyLCAyNDcsIDI0OCwgNzEsIDIzMSwgODIsIDI0NywgMjQ4LCA4NSwgMjMxLCA4MiwgMjMyLCAxMDQsIDcxLCAyMzEsIAorICAgIDgyLCAyMzIsIDEwNCwgODUsIDQsIDI0NywgMjQ4LCA4NSwgNCwgMjMyLCAxMDQsIDcxLCA0LCAyMzIsIDEwNCwgODUsIDIwMywgCisgICAgMjQ1LCAxNjQsIDcxLCAyMDMsIDI0NSwgMTY0LCA4NSwgNjcsIDI0NSwgMTY0LCA3MSwgNjcsIDI0NSwgMTY0LCA0MywgODAsIAorICAgIDIsIDQsIDI1MCwgMzUsIDEzNCwgMTQwLCAyNTMsIDI0NywgNDMsIDgwLCAyLCAzNywgMjI1LCAyMiwgMTk5LCAxNDAsIDIxOCwgCisgICAgMjMwLCA3NCwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAKKyAgICAxNDAsIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgMTMwLCAxNDAsIDIxNSwgNTgsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIAorICAgIDE0MCwgODAsIDIsIDI0NiwgMTE4LCAyMTgsIDEzOSwgMTQwLCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAxNDAsIDgwLCAKKyAgICAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc3LCAxNDAsIDIxNSwgNTgsIAorICAgIDgwLCAyLCAyMTcsIDc4LCAyLCA2NywgOTEsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIAorICAgIDE0MCwgODAsIDIxNiwgMTM5LCAyMTEsIDE3OCwgMjEyLCAzNiwgODAsIDIyNSwgNywgMjQ3LCAxOTUsIDIzMywgNDYsIDI0NSwgCisgICAgOTgsIDUsIDc3LCAxNDAsIDc0LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIDE2OCwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAKKyAgICAyMjMsIDUwLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDk3LCA4MCwgMjE2LCAxMzksIDI0MiwgMTI5LCA5NywgODAsIDIxNiwgCisgICAgMTM5LCAyMTgsIDIxLCAxNDAsIDIyNCwgMjQsIDc0LCA5NywgMjI0LCAyNCwgNzQsIDIyMywgNTAsIDIxNiwgODksIDIyNiwgCisgICAgMTY4LCA3NywgOTcsIDc0LCA5NywgODAsIDc3LCAyMjMsIDUwLCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIxNiwgODksIDIyNiwgCisgICAgMTY4LCA3NywgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMTQwLCA4MCwgNzcsIDIyMywgNTAsIAorICAgIDIxNiwgODksIDIyNiwgMTY3LCA5NywgODAsIDc3LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIDE2NywgNzEsIDIzMSwgODIsIAorICAgIDIxOCwgMTU2LCA4NSwgNCwgMjE4LCAxNTYsIDcxLCA0LCAyMTgsIDE1NiwgODUsIDIyMiwgMjQ3LCAyMjUsIDE5MCwgNzEsIAorICAgIDIyMiwgMjQ3LCAyMjUsIDE5MCwgMTE0LCAyMzMsIDg1LCAyNTAsIDM1LCAxMTQsIDIyNiwgMTI0LCAyLCAyMjYsIDEyNCwgCisgICAgMjM1LCAyMTUsIDExNCwgMjUwLCAzNiwgMiwgMjUwLCAzNiwgMjM1LCAyMTUsIDExNCwgMjUwLCAzNSwgMTE0LCAzNywgMjIxLCAKKyAgICAyNTQsIDE0NSwgNiwgMSwgMjUzLCAxNTksIDE0NSwgNiwgMSwgMjUxLCAxMTcsIDE0NSwgNiwgMSwgMjEzLCAyNTMsIDE0NSwgCisgICAgNiwgMSwgMjQyLCAxODUsIDE0NSwgNiwgMSwgMjQ3LCAxNDAsIDE0NSwgNiwgMSwgMjExLCAyMSwgMTQ1LCA2LCAxLCAyMTAsIAorICAgIDY4LCAxNDUsIDYsIDEsIDI0NiwgMzQsIDE0NSwgNiwgMSwgMjEwLCA5MSwgMTQ1LCA2LCAxLCAyMzUsIDE0OCwgMTQ1LCA2LCAKKyAgICAxLCA2NSwgMjM1LCAxNDgsIDE0NSwgNiwgMSwgNzMsIDE0NSwgNiwgMSwgMjQ3LCAxNjAsIDE0NSwgNiwgMSwgMjM0LCAyNDAsIAorICAgIDE0NSwgNiwgMSwgMjMyLCAxODYsIDE0NSwgNiwgMSwgMjMwLCAyOSwgMTQ1LCA2LCAxLCAyMjksIDE5MSwgMTQ1LCA2LCAxLCAKKyAgICAyMjYsIDE4NSwgMTQ1LCA2LCAxLCAyMjUsIDQsIDE0NSwgNiwgMSwgMjIyLCAyMjcsIDE0NSwgNiwgMSwgMjE5LCA4MywgCisgICAgMTQ1LCA2LCAxLCAyMTUsIDgxLCAxNDUsIDYsIDEsIDIxNCwgMjAxLCAxNDUsIDYsIDEsIDI0MywgMjQ2LCAxNDUsIDYsIDEsIAorICAgIDI0MSwgMTk5LCAxNDUsIDYsIDEsIDIyNiwgMTM1LCAxNDUsIDYsIDEsIDIyNSwgMjIxLCAxNDUsIDYsIDEsIDIxOSwgMjI4LCAKKyAgICAxNDUsIDYsIDEsIDIxNSwgMTY3LCAxNDUsIDYsIDEsIDI1MCwgNzUsIDE0NSwgNiwgMSwgMjIwLCAxMDIsIDE0NSwgNiwgMSwgCisgICAgMjExLCAyNywgMTQ1LCA2LCAxLCAyMTEsIDI5LCAxNDUsIDYsIDEsIDIxMSwgNTcsIDE0NSwgNiwgMSwgMjE4LCAyNTMsIAorICAgIDE2MiwgMTQ1LCA2LCAxLCAyMTAsIDIxMiwgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4NCwgCisgICAgMiwgMjE3LCA3NywgMTQ1LCA2LCAxLCAyMTAsIDI0NCwgMTQ1LCA2LCAxLCAyMzUsIDE4NCwgNCwgMjEwLCAxODMsIDE0NSwgCisgICAgNiwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIDYsIDEsIDIzNSwgMTg0LCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgCisgICAgNiwgMSwgMjQ0LCA4MiwgMTQ1LCA2LCAxLCAyMzUsIDE0NiwgMTQ1LCA2LCAxLCAyMTksIDIyNywgMTQ1LCA2LCAxLCAyMTUsIAorICAgIDIwMiwgNjEsIDE0NSwgNiwgMSwgMjMzLCA3NSwgMjMwLCAyOSwgMTQ1LCA0LCAxLCAyNTMsIDE1OSwgMTQ1LCA0LCAxLCAKKyAgICAyNTEsIDExNywgMTQ1LCA0LCAxLCAyMTMsIDI1MywgMTQ1LCA0LCAxLCAyNDIsIDE4NSwgMTQ1LCA0LCAxLCAyNDcsIDE0MCwgCisgICAgMTQ1LCA0LCAxLCAyMTEsIDIxLCAxNDUsIDQsIDEsIDIxMCwgNjgsIDE0NSwgNCwgMSwgMjQ2LCAzNCwgMTQ1LCA0LCAxLCAKKyAgICAyMTAsIDkxLCAxNDUsIDQsIDEsIDIzNSwgMTQ4LCAxNDUsIDQsIDEsIDY1LCAyMzUsIDE0OCwgMTQ1LCA0LCAxLCA3MywgCisgICAgMTQ1LCA0LCAxLCAyNDcsIDE2MCwgMTQ1LCA0LCAxLCAyMzQsIDI0MCwgMTQ1LCA0LCAxLCAyMzIsIDE4NiwgMTQ1LCA0LCAxLCAKKyAgICAyMzAsIDI5LCAxNDUsIDQsIDEsIDIyOSwgMTkxLCAxNDUsIDQsIDEsIDIyNiwgMTg1LCAxNDUsIDQsIDEsIDIyNSwgNCwgCisgICAgMTQ1LCA0LCAxLCAyMjIsIDIyNywgMTQ1LCA0LCAxLCAyMTksIDgzLCAxNDUsIDQsIDEsIDIxNSwgODEsIDE0NSwgNCwgMSwgCisgICAgMjE0LCAyMDEsIDE0NSwgNCwgMSwgMjQzLCAyNDYsIDE0NSwgNCwgMSwgMjQxLCAxOTksIDE0NSwgNCwgMSwgMjI2LCAxMzUsIAorICAgIDE0NSwgNCwgMSwgMjI1LCAyMjEsIDE0NSwgNCwgMSwgMjE5LCAyMjgsIDE0NSwgNCwgMSwgMjE1LCAxNjcsIDE0NSwgNCwgMSwgCisgICAgMjUwLCA3NSwgMTQ1LCA0LCAxLCAyMjAsIDEwMiwgMTQ1LCA0LCAxLCAyMTEsIDI3LCAxNDUsIDQsIDEsIDIxMSwgMjksIAorICAgIDE0NSwgNCwgMSwgMjExLCA1NywgMTQ1LCA0LCAxLCAyMTgsIDI1MywgMTYyLCAxNDUsIDQsIDEsIDIxMCwgMjEyLCAxNDUsIAorICAgIDQsIDEsIDQsIDIxMCwgMTgzLCAxNDUsIDQsIDEsIDQsIDIxMCwgMTg0LCAyLCAyMTcsIDc3LCAxNDUsIDQsIDEsIDIxMCwgCisgICAgMjQ0LCAxNDUsIDQsIDEsIDIzNSwgMTg0LCA0LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCAyNTEsIDI0OSwgMjEwLCAxODMsIAorICAgIDE0NSwgNCwgMSwgMjM1LCAxODQsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCAyNDQsIDgyLCAxNDUsIDQsIDEsIAorICAgIDIzNSwgMTQ2LCAxNDUsIDQsIDEsIDIxOSwgMjI3LCAxNDUsIDQsIDEsIDIxNSwgMjAyLCA2MSwgMTQ1LCA0LCAxLCAyMzMsIAorICAgIDc1LCAyMzAsIDI5LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgNTIsIDEzMCwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDUyLCAKKyAgICAxMzAsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgOTEsIDcsIDYsIAorICAgIDEsIDIyMywgMjI0LCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAxMTUsIDIsIDkxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ3LCAKKyAgICAyNTUsIDkxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyNDgsIDM5LCA3LCAKKyAgICA2LCAxLCAyMzUsIDI0LCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyMTAsIAorICAgIDE2MCwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI0OCwgMzksIDcsIDYsIDEsIDI1NCwgMTQzLCA3LCA2LCAKKyAgICAxLCAyMzIsIDUwLCAyLCAxMDMsIDcsIDYsIDEsIDIxNSwgOTQsIDYxLCA3LCA2LCAxLCAyMTUsIDk0LCAyNTQsIDE0MywgNywgCisgICAgNCwgMSwgMjE0LCAxMDYsIDIsIDQ0LCAxMDMsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDEwMywgNywgNCwgMSwgMjEyLCA5OSwgCisgICAgMiwgMTAzLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgMjQ5LCAxMDAsIDcsIDYsIDEsIDE2MywgMjQyLCA2MCwgNywgNCwgMSwgCisgICAgMTYzLCAyNDIsIDYwLCA3LCA0LCAxLCAyMTcsIDc1LCAyMjUsIDEzMywgNywgNCwgMSwgMTYwLCAyLCAyMjgsIDUwLCA3LCA0LCAKKyAgICAxLCAyMTUsIDk0LCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgNywgNCwgMSwgMTQ0LCAyLCAxMjEsIDIyMiwgMjM0LCAyMzUsIAorICAgIDIxNSwgNywgMSwgNCwgNiwgMjE1LCA5NCwgNzUsIDcsIDIxOCwgNjUsIDQsIDEsIDIzNSwgMTQ0LCA1OCwgMSwgNiwgMjE0LCAKKyAgICAxMDUsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMjE3LCAKKyAgICAyNTAsIDIxNywgNzcsIDgxLCA2LCAxLCAyNTQsIDE2NCwgODEsIDQsIDEsIDI1NCwgMTY0LCA4MSwgNiwgMSwgMjEzLCAxNzMsIAorICAgIDgxLCA0LCAxLCAyMTMsIDE3MywgODEsIDYsIDEsIDI0MywgMTA3LCA4MSwgNCwgMSwgMjQzLCAxMDcsIDgxLCA2LCAxLCAKKyAgICAyNDgsIDE5MSwgODEsIDQsIDEsIDI0OCwgMTkxLCA4MSwgNiwgMSwgMjQ1LCAxOTQsIDgxLCA0LCAxLCAyNDUsIDE5NCwgODEsIAorICAgIDYsIDEsIDIxOSwgMzMsIDgxLCA0LCAxLCAyMTksIDMzLCA4MSwgNiwgMSwgMjEwLCAxMDEsIDgxLCA0LCAxLCAyMTAsIDEwMSwgCisgICAgODEsIDYsIDEsIDI0MSwgMjQ4LCA4MSwgNCwgMSwgMjQxLCAyNDgsIDgxLCA2LCAxLCAyMTYsIDE3NywgODEsIDQsIDEsIAorICAgIDIxNiwgMTc3LCA4MSwgNiwgMSwgMjQwLCAxMTYsIDgxLCA0LCAxLCAyNDAsIDExNiwgODEsIDYsIDEsIDIzNCwgMjI3LCA4MSwgCisgICAgNCwgMSwgMjM0LCAyMjcsIDgxLCA2LCAxLCAyMzMsIDcyLCA4MSwgNCwgMSwgMjMzLCA3MiwgODEsIDYsIDEsIDIzMCwgMjMwLCAKKyAgICA4MSwgNCwgMSwgMjMwLCAyMzAsIDgxLCA2LCAxLCAyMjgsIDIzMywgODEsIDQsIDEsIDIyOCwgMjMzLCA4MSwgNiwgMSwgCisgICAgMjMzLCAyMzMsIDgxLCA0LCAxLCAyMzMsIDIzMywgODEsIDYsIDEsIDc2LCA4MSwgNCwgMSwgNzYsIDgxLCA2LCAxLCAyMjUsIAorICAgIDEwOCwgODEsIDQsIDEsIDIyNSwgMTA4LCA4MSwgNiwgMSwgMjIyLCAyMTEsIDgxLCA0LCAxLCAyMjIsIDIxMSwgODEsIDYsIAorICAgIDEsIDIxOSwgMTY1LCA4MSwgNCwgMSwgMjE5LCAxNjUsIDgxLCA2LCAxLCAyMTcsIDQxLCA4MSwgNCwgMSwgMjE3LCA0MSwgCisgICAgODEsIDYsIDEsIDIxNCwgMjI5LCA4MSwgNCwgMSwgMjE0LCAyMjksIDgxLCA2LCAxLCAyNDQsIDEyMSwgODEsIDQsIDEsIAorICAgIDI0NCwgMTIxLCA4MSwgNiwgMSwgMjM0LCAxMTIsIDgxLCA0LCAxLCAyMzQsIDExMiwgODEsIDYsIDEsIDIyNCwgMTYxLCA4MSwgCisgICAgNCwgMSwgMjI0LCAxNjEsIDgxLCA2LCAxLCAyMjYsIDE3OCwgODEsIDQsIDEsIDIyNiwgMTc4LCA4MSwgNiwgMSwgMjQ3LCAKKyAgICAyNTMsIDI1NCwgMTcwLCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDI1NCwgMTcwLCA4MSwgNiwgMSwgNTUsIDgxLCAyNTQsIDE5NiwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjU0LCAxOTYsIDgxLCA2LCAxLCAyNDksIDExNSwgMjQ1LCAxOTQsIDgxLCA0LCAxLCAyNDksIAorICAgIDExNSwgMjQ1LCAxOTQsIDgxLCA2LCAxLCAyNDcsIDI1MywgMjM0LCAyMjcsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjM0LCAKKyAgICAyMjcsIDgxLCA2LCAxLCAyNDcsIDI1MywgMjI4LCAyMzMsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjI4LCAyMzMsIDgxLCA2LCAKKyAgICAxLCAyNDksIDExNSwgMjI4LCAyMzMsIDgxLCA0LCAxLCAyNDksIDExNSwgMjI4LCAyMzMsIDgxLCA2LCAxLCA1NSwgODEsIAorICAgIDIyNiwgMTc4LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjYsIDE3OCwgODEsIDYsIDEsIDIyMSwgMjQ2LCA4MSwgNCwgMSwgMjIxLCAKKyAgICAyNDYsIDgxLCA2LCAxLCAyNDksIDEyOCwgMjIwLCA1NSwgODEsIDQsIDEsIDI0OSwgMTI4LCAyMjAsIDU1LCA4MSwgNiwgMSwgCisgICAgNTUsIDgxLCAyMjAsIDU1LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDU1LCA4MSwgNiwgMSwgNTUsIDgxLCAyNDUsIDc1LCAKKyAgICA4MSwgNCwgMSwgNTUsIDgxLCAyNDUsIDc1LCA4MSwgNiwgMSwgMjU0LCAxODIsIDIzNCwgMTE3LCA4MSwgNCwgMSwgMjU0LCAKKyAgICAxODIsIDIzNCwgMTE3LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDI0MSwgNDUsIDgxLCA0LCAxLCAyNDcsIDI1MywgMjQxLCA0NSwgCisgICAgODEsIDYsIDEsIDU1LCA4MSwgMjQxLCA0NSwgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCA0NSwgODEsIDYsIDEsIDU1LCA4MSwgCisgICAgMTYyLCA4MSwgNCwgMSwgNTUsIDgxLCAxNjIsIDgxLCA2LCAxLCAyMzMsIDE0OCwgMTYyLCA4MSwgNCwgMSwgMjMzLCAxNDgsIAorICAgIDE2MiwgODEsIDYsIDEsIDU1LCA4MSwgMjQxLCAyMTcsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgMjE3LCA4MSwgNiwgMSwgCisgICAgNTUsIDgxLCAyNDEsIDI1MSwgODEsIDQsIDEsIDU1LCA4MSwgMjQxLCAyNTEsIDgxLCA2LCAxLCA1NSwgODEsIDI0MywgMTAyLCAKKyAgICA4MSwgNCwgMSwgNTUsIDgxLCAyNDMsIDEwMiwgODEsIDYsIDEsIDU1LCA4MSwgMjQ3LCAxNjMsIDgxLCA0LCAxLCA1NSwgODEsIAorICAgIDI0NywgMTYzLCA4MSwgNiwgMSwgNTUsIDgxLCAyMjAsIDIyLCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDIyLCA4MSwgNiwgMSwgCisgICAgNTUsIDIyNywgMjA4LCAyMjAsIDIyLCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMjAsIDIyLCA4MSwgNiwgMSwgNTUsIAorICAgIDIyNywgMjA4LCAyMjksIDI3LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMjksIDI3LCA4MSwgNiwgMSwgNTUsIDIyNywgCisgICAgMjA4LCAyMjcsIDE0OCwgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjI3LCAxNDgsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMDgsIAorICAgIDIxMiwgMzcsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIxMiwgMzcsIDgxLCAxNiwgMjM0LCAyNDYsIDgxLCAxNiwgMjMwLCAKKyAgICAyMzEsIDIyMiwgMjExLCA4MSwgMTYsIDIyNSwgMTA5LCAyMjIsIDIxMSwgODEsIDE2LCAyMTgsIDE0NywgODEsIDE2LCAyMTcsIAorICAgIDQyLCAyMjIsIDIxMSwgODEsIDE2LCAyMzQsIDExMywgMjIyLCAyMTEsIDgxLCAxNiwgMjIwLCAyMywgMjE5LCAxNjUsIDgxLCAKKyAgICA2LCAxLCAyNDksIDExNSwgMjIwLCA1NSwgODEsIDQsIDEsIDI0OSwgMTE1LCAyMjAsIDU1LCA4MSwgNiwgMSwgMjQ5LCAxMTUsIAorICAgIDI0MywgMTAyLCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDI0MywgMTAyLCA4MSwgMzgsIDIyOCwgMjM0LCA0OCwgODEsIDM4LCAKKyAgICAyMTgsIDI0NywgMjUzLCAyMjQsIDgxLCAzOCwgMjE4LCAyNDcsIDIzMywgMjEsIDgxLCA2LCAxLCAyNTEsIDE5OSwgMjM0LCAKKyAgICAxMTcsIDgxLCA0LCAxLCAyNTEsIDE5OSwgMjM0LCAxMTcsIDgxLCA1NSwgMjI3LCAyMDgsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgODEsIDU1LCAyMjcsIDIwOCwgMjQ3LCAxOTcsIDIyNCwgMTMsIDc4LCA4MSwgNTUsIDIyNywgMjA4LCAyMzUsIDIzNywgMjI0LCAKKyAgICAxMywgNzgsIDgxLCA1NSwgMjI3LCAyMDgsIDIxMywgMjQxLCAyNDcsIDE3MiwgODEsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAKKyAgICA4MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA4MSwgMjMwLCAxMjQsIDI0NywgMTcyLCA5OCwgNCwgMSwgMjU0LCAxMjMsIDk4LCAKKyAgICA0LCAxLCAyNTIsIDE1MiwgOTgsIDQsIDEsIDI0MywgMTA2LCA5OCwgNCwgMSwgMjQ3LCAxMjgsIDk4LCA0LCAxLCAyNDUsIAorICAgIDE1MCwgOTgsIDQsIDEsIDIxMywgMTYwLCA5OCwgNCwgMSwgMjEwLCA4OSwgOTgsIDQsIDEsIDIxNywgNjAsIDk4LCA0LCAxLCAKKyAgICAyMzUsIDI1NSwgOTgsIDQsIDEsIDIzNCwgMjM0LCA5OCwgNCwgMSwgMjMzLCA4MSwgOTgsIDQsIDEsIDIzMSwgMTg1LCA5OCwgCisgICAgNCwgMSwgMjI5LCAxOTUsIDk4LCA0LCAxLCAyMjYsIDE5NiwgOTgsIDQsIDEsIDIyNiwgMTcsIDk4LCA0LCAxLCAyMTAsIDc4LCAKKyAgICA5OCwgNCwgMSwgMjIzLCAxNzEsIDk4LCA0LCAxLCAyMjEsIDI0MywgOTgsIDQsIDEsIDIxNywgNTAsIDk4LCA0LCAxLCAyMTQsIAorICAgIDE5MCwgOTgsIDQsIDEsIDIyNSwgMTQwLCA5OCwgNCwgMSwgMjM0LCAxMjEsIDk4LCA0LCAxLCAyNDIsIDI0MSwgOTgsIDQsIAorICAgIDEsIDIyNCwgNzMsIDk4LCA0LCAxLCAyMjAsIDIwLCA5OCwgNCwgMSwgMjUwLCA5NywgOTgsIDQsIDEsIDI1MSwgNywgOTgsIAorICAgIDQsIDEsIDIzNSwgMTAwLCA5OCwgNCwgMSwgMjUwLCA0MCwgOTgsIDQsIDEsIDI1MCwgMTQzLCA5OCwgNCwgMSwgMjExLCAKKyAgICAxNjMsIDk4LCA0LCAxLCAyMzUsIDExMSwgOTgsIDQsIDEsIDI0MiwgNDMsIDk4LCA0LCAxLCAyNDEsIDIzOCwgOTgsIDQsIDEsIAorICAgIDI0MSwgMTc1LCA5OCwgNCwgMSwgMjEyLCAyMiwgOTgsIDQsIDEsIDI0MiwgNCwgOTgsIDQsIDEsIDI0MSwgNjUsIDk4LCA0LCAKKyAgICAxLCAyMTAsIDI0NiwgOTgsIDQsIDEsIDI1NCwgMjMyLCAyMTYsIDEwOCwgMSwgMTkxLCAyMTYsIDEwOCwgMSwgMjExLCA5OSwgCisgICAgMjE2LCAxMDgsIDEsIDIxMSwgOTgsIDIxNiwgMTA4LCAxLCAyMTEsIDg4LCAyMTYsIDEwOCwgMSwgMjExLCA4NiwgMjE2LCAKKyAgICAxMDgsIDEsIDI1MiwgMzIsIDI1NSwgMTYsIDIxMSwgODEsIDIxNiwgMTA4LCAxLCAyMTEsIDgxLCAyMTYsIDEwOCwgMSwgCisgICAgMjExLCA5NiwgMjE2LCAxMDgsIDEsIDIxMSwgOTMsIDIxNiwgMTA4LCAxLCAyMTEsIDk1LCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA5NCwgMjE2LCAxMDgsIDEsIDIxMSwgMTIsIDIxNiwgMTA4LCAxLCAyMTEsIDkwLCAyMTYsIDEwOCwgMSwgMjExLCA3OSwgCisgICAgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDc5LCAyMTYsIDEwOCwgMSwgMjExLCA3NiwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgODQsIDIxNiwgMTA4LCAxLCAyNTIsIDMyLCAyNTUsIDE2LCAyMTEsIDg0LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgCisgICAgODQsIDIxNiwgMTA4LCAxLCAyMTEsIDgzLCAyMTYsIDEwOCwgMSwgMjExLCAxMDMsIDIxNiwgMTA4LCAxLCAyMTEsIDc3LCAKKyAgICAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNzcsIDIxNiwgMTA4LCAxLCAyMTEsIDY2LCAyMTYsIDEwOCwgMSwgMjE1LCAKKyAgICAxMTUsIDIxMSwgNjYsIDIxNiwgMTA4LCAxLCAyMTEsIDgsIDIxNiwgMTA4LCAxLCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgCisgICAgMjU0LCAyMDcsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA0OSwgMjE2LCAxMDgsIDEsIDIxMSwgNzUsIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDc0LCAyMTYsIDEwOCwgMSwgMjExLCA3MSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIAorICAgIDg1LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNjksIDIxNiwgMTA4LCAxLCAyMTEsIDY3LCAyMTYsIDEwOCwgMSwgCisgICAgMjEwLCAyMTIsIDIxNiwgMTA4LCAxLCAyMTEsIDY0LCAyMTYsIDEwOCwgMSwgMjExLCA2MywgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgODcsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA4NywgMjE2LCAxMDgsIDEsIDI1MywgMTYzLCAyMTEsIDg3LCAyMTYsIAorICAgIDEwOCwgMSwgMjExLCA2MiwgMjE2LCAxMDgsIDEsIDIxMSwgNjAsIDIxNiwgMTA4LCAxLCAyMTEsIDYxLCAyMTYsIDEwOCwgMSwgCisgICAgMjExLCA1OSwgMjE2LCAxMDgsIDEsIDIxMSwgNTgsIDIxNiwgMTA4LCAxLCAyMTEsIDk3LCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA1NiwgMjE2LCAxMDgsIDEsIDIxMSwgNTQsIDIxNiwgMTA4LCAxLCAyMTEsIDUzLCAyMTYsIDEwOCwgMSwgMjExLCA1MiwgCisgICAgMjE2LCAxMDgsIDEsIDIxMSwgNTAsIDIxNiwgMTA4LCAxLCAyMTcsIDM0LCAyMTEsIDUwLCAyMTYsIDEwOCwgMSwgMjExLCAKKyAgICA0OCwgMjE2LCAxMDgsIDEsIDIxMSwgNDcsIDIxNiwgMTA4LCAxLCAyMTAsIDI0NCwgMjE2LCAxMDgsIDU4LCAxLCAyMzMsIAorICAgIDEyNiwgNzgsIDIxNiwgMTA4LCAyMjAsIDEzOCwgNzgsIDIxNiwgMTA4LCAxMTYsIDIzNSwgNjMsIDI5LCAzLCAyMzIsIDE1NSwgCisgICAgMjksIDMsIDIzMCwgMTYwLCAyOSwgMywgMjIyLCAyMDksIDI5LCAzLCAyMTksIDU3LCAyOSwgMywgMjIwLCA2LCAyOSwgMywgCisgICAgMjUxLCAyMDQsIDI5LCAzLCAyMTYsIDQxLCAyOSwgMywgMjQ5LCAyMzcsIDI5LCAzLCAyMjgsIDcyLCAyOSwgMywgMjI3LCAKKyAgICAxMzMsIDI5LCAzLCAyNDIsIDE4MCwgMjI3LCAwLCAyOSwgMywgMjEwLCAyMiwgMjksIDMsIDI0NywgMTQzLCAyOSwgMywgCisgICAgMjQ4LCAxMDQsIDI5LCAzLCAyMzUsIDY3LCAyOSwgMywgMjE2LCAxNTUsIDI5LCAzLCAyNTAsIDg1LCAyOSwgMywgMjI1LCAKKyAgICAxMjAsIDI5LCAzLCAyMjUsIDE1LCAyOSwgMywgMjQyLCAyNTUsIDI5LCAzLCAyNDIsIDI1MSwgMjksIDMsIDI0MiwgMjUyLCAKKyAgICAyOSwgMywgMjQyLCAyNTMsIDI5LCAzLCAyMTgsIDIyMywgMjksIDMsIDIxOCwgMTc5LCAyOSwgMywgMjE4LCAxOTIsIDI5LCAKKyAgICAzLCAyMTgsIDIyMiwgMjksIDMsIDIxOCwgMTk2LCAyOSwgMywgMjE4LCAxOTcsIDI5LCAzLCAyMTgsIDE4NCwgMjksIDMsIAorICAgIDI1MCwgMjEzLCAyOSwgMywgMjUwLCAxOTIsIDI5LCAzLCAyNTAsIDE5NCwgMjksIDMsIDI1MCwgMjEyLCAyOSwgMywgMjUwLCAKKyAgICAyMTAsIDI5LCAzLCAyNTAsIDIxMSwgMjksIDMsIDI1MCwgMTkzLCAyOSwgMywgMjA5LCAyNDMsIDI5LCAzLCAyMDksIDIyMSwgCisgICAgMjksIDMsIDIwOSwgMjM0LCAyOSwgMywgMjA5LCAyNDIsIDI5LCAzLCAyMDksIDIzNywgMjksIDMsIDIwOSwgMjM4LCAyOSwgCisgICAgMywgMjA5LCAyMjYsIDI5LCAzLCAyNTAsIDIwOCwgMjksIDMsIDI1MCwgMTk1LCAyOSwgMywgMjUwLCAxOTcsIDI5LCAzLCAKKyAgICAyNTAsIDIwNywgMjksIDMsIDI1MCwgMjA1LCAyOSwgMywgMjUwLCAyMDYsIDI5LCAzLCAyNTAsIDE5NiwgMjksIDMsIDIyMywgCisgICAgMjM2LCAyOSwgMywgMjIzLCAyMjYsIDI5LCAzLCAyMjMsIDIzMiwgMjksIDMsIDIyMywgMjM1LCAyOSwgMywgMjIzLCAyMzMsIAorICAgIDI5LCAzLCAyMjMsIDIzNCwgMjksIDMsIDIyMywgMjMxLCAyOSwgMywgMjMzLCAxNTksIDI5LCAzLCAyMzMsIDE1MSwgMjksIAorICAgIDMsIDIzMywgMTU0LCAyOSwgMywgMjMzLCAxNTgsIDI5LCAzLCAyMzMsIDE1NSwgMjksIDMsIDIzMywgMTU2LCAyOSwgMywgCisgICAgMjMzLCAxNTIsIDI5LCAzLCAyMTEsIDEzMCwgMjksIDMsIDIxMSwgMTIwLCAyOSwgMywgMjExLCAxMjYsIDI5LCAzLCAyMTEsIAorICAgIDEyOSwgMjksIDMsIDIxMSwgMTI3LCAyOSwgMywgMjExLCAxMjgsIDI5LCAzLCAyMTEsIDEyNSwgMjksIDMsIDI0MiwgNzEsIAorICAgIDI5LCAzLCAyNDIsIDYyLCAyOSwgMywgMjQyLCA2NSwgMjksIDMsIDI0MiwgNzAsIDI5LCAzLCAyNDIsIDY3LCAyOSwgMywgCisgICAgMjQyLCA2OCwgMjksIDMsIDI0MiwgNjQsIDM4LCAzMywgMSwgMjUyLCA3NSwgMzgsIDMzLCAxLCAyMTMsIDI1NSwgMzgsIDMzLCAKKyAgICAxLCAyNDIsIDIzNiwgMzgsIDMzLCAxLCAyNDgsIDkwLCAzOCwgMzMsIDEsIDIxMCwgNzQsIDM4LCAzMywgMSwgMjEwLCA5NCwgCisgICAgMzgsIDMzLCAxLCAxNzYsIDM4LCAzMywgMSwgMjQ1LCAxNzQsIDM4LCAzMywgMSwgMjQ1LCAxNTksIDM4LCAzMywgMSwgMjQ1LCAKKyAgICAxNTAsIDM4LCAzMywgMSwgNzYsIDM4LCAzMywgMSwgMjI1LCAyMjEsIDM4LCAzMywgMSwgMjQ1LCA5MiwgMzgsIDMzLCAxLCAKKyAgICAyNDUsIDgyLCAzOCwgMzMsIDEsIDIxNywgMjIsIDM4LCAzMywgMSwgMTYyLCAzOCwgMzMsIDEsIDIxNSwgMTc4LCAzOCwgMzMsIAorICAgIDEsIDI1MCwgMTMxLCAzOCwgMzMsIDEsIDIyMCwgMTAyLCAzOCwgMzMsIDEsIDIyMCwgNjUsIDM4LCAzMywgMSwgMjQ0LCA4MiwgCisgICAgMzgsIDMzLCAxLCAyNDUsIDgxLCAzOCwgMzMsIDEsIDYxLCAzOCwgMzMsIDEsIDIzNiwgNjAsIDM4LCAzMywgMSwgMjQ3LCAKKyAgICAxNjEsIDM4LCAzMywgMSwgMjMwLCAxNDAsIDIxNCwgMjA1LCAzOCwgMzMsIDEsIDIxMSwgNTksIDM4LCAzMywgMSwgMjEwLCAKKyAgICAyMTIsIDM4LCAzMywgMSwgMjM1LCAxODMsIDYxLCAzOCwgMzMsIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzgsIDMzLCAxLCAKKyAgICAyNTEsIDI0OSwgMjEwLCAxODMsIDM4LCAzMywgMSwgMjM1LCAxODMsIDI1MSwgMjQ5LCAyMTAsIDE4MywgNDQsIDI1NCwgCisgICAgMTEwLCAyMTgsIDYwLCAyMzEsIDE1NCwgNDQsIDI1NCwgMTEwLCAyNDYsIDExOCwgMjE4LCA2MCwgMjMxLCAxNTQsIDQzLCAKKyAgICAyMTgsIDYwLCAxMjcsIDQ0LCAyMTgsIDYwLCAxMjcsIDQzLCAyNDYsIDExOCwgMjE4LCA2MCwgMTI3LCA0NCwgMjQ2LCAxMTgsIAorICAgIDIxOCwgNjAsIDEyNywgMjIzLCAxNTcsIDIzNSwgMjAyLCAyMzEsIDE1NCwgMjIzLCAxNTcsIDI0NiwgMTE4LCAyMzUsIDIwMiwgCisgICAgMjMxLCAxNTQsIDI0NiwgMTE4LCAyMTUsIDI0MSwgMjMxLCAxNTQsIDQzLCAyMTUsIDI0MSwgMTI3LCA0NCwgMjE1LCAyNDEsIAorICAgIDEyNywgMjIzLCAxNTcsIDIxOCwgMjM0LCA0MywgMjIzLCAxNTcsIDIyNiwgMTk4LCAxMjcsIDQ0LCAyMjMsIDE1NywgMjI2LCAKKyAgICAxOTgsIDEyNywgMjQ1LCAyMTAsIDI0OSwgMTU4LCAyMjYsIDEzLCAyNDQsIDIyLCAyMjYsIDEzLCAyMjMsIDQ5LCAyNDQsIAorICAgIDIyLCAyMjYsIDEzLCAyNDAsIDE2NSwgMjQ2LCAxMTgsIDIyNiwgMjUxLCAyNDYsIDEwNCwgMjU0LCAxMTksIDIxNCwgMTUzLCAKKyAgICAyNTQsIDExOSwgMjQ2LCAxMTgsIDIyMiwgMjQ3LCAyNTQsIDEwOSwgNTIsIDIyNiwgMjQ4LCAyNDAsIDE2OCwgMjM1LCAxOTMsIAorICAgIDIzNSwgMjAxLCAyMjYsIDU5LCAyNTEsIDE1NCwgMjQwLCAxNjksIDIsIDI0OCwgMSwgMjE2LCA4OSwgMiwgMjIyLCAyMzQsIAorICAgIDQ4LCA0MywgMTIxLCAyMjYsIDUsIDEyNywgNDQsIDEyMSwgMjI2LCA1LCAxMjcsIDIxNiwgODksIDIsIDU5LCA0OCwgMjE2LCAKKyAgICA4OSwgMiwgNTksIDUxLCA0MywgNjcsIDI1MiwgMTQxLCAyLCAyMjQsIDcsIDQ0LCA2NywgMjUyLCAxNDEsIDIsIDIyNCwgNywgCisgICAgMjE2LCAxNCwgNDMsIDE2MywgMTI3LCAyMTYsIDE0LCA0NCwgMTYzLCAxMjcsIDI1MSwgMTc1LCA0MywgMTYzLCAxMjcsIAorICAgIDI1MSwgMTc1LCA0NCwgMTYzLCAxMjcsIDQzLCAyMTksIDE4NywgMTA0LCAxMjcsIDQ0LCAyMTksIDE4NywgMTA0LCAxMjcsIAorICAgIDQzLCA1MiwgMjI2LCAzLCA0NCwgNTIsIDIyNiwgMywgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDEyMywgCisgICAgNTksIDExNywgMTEzLCAxNzAsIDIyNCwgMTQwLCA5MiwgMjQ0LCAxMSwgNTksIDIyNCwgMTQwLCAyNDQsIDgxLCA1OSwgNzgsIAorICAgIDIyMywgNDksIDIyNCwgMTMsIDc4LCA2NywgMTgyLCAyMjIsIDIzNCwgMjI1LCAxMCwgMjExLCAyMDksIDIyMCwgMTM4LCAKKyAgICAyMzAsIDIyNCwgMjQ3LCAxMjAsIDIxNSwgOTQsIDI0OSwgMjE5LCAyMjMsIDE1NywgMjQ3LCAxMjAsIDIyMywgMTU3LCAyNDksIAorICAgIDIxOSwgMjE1LCA5NCwgMjIwLCAxNTAsIDI0OCwgMjA2LCAyLCA0MywgMjQyLCAxMDgsIDI0OCwgMjA2LCAyLCA0NCwgMjQyLCAKKyAgICAxMDgsIDIxNSwgOTQsIDI0OCwgMjA1LCAyMTYsIDE0LCAxNjMsIDIyMSwgMTczLCA1MCwgMjE1LCA1OSwgMjQ4LCAxNTYsIAorICAgIDIxNiwgMTQzLCAyNDgsIDE1NiwgOSwgMzQsIDIyMywgNzYsIDksIDM0LCAyNTAsIDEwLCA5LCAzNCwgMjIxLCAxNzYsIDExMCwgCisgICAgOSwgMzQsIDIyMSwgMTc2LCAxMDUsIDksIDM0LCAyMjEsIDE3NiwgMTU4LCA5LCAzNCwgMjI1LCAxNjcsIDksIDM0LCAyNTEsIAorICAgIDE2MywgOSwgMzQsIDIxNywgOTIsIDksIDM0LCAyMzQsIDMzLCAxMTAsIDksIDM0LCAyMzQsIDMzLCAxMDUsIDksIDM0LCAKKyAgICAyNDcsIDE3MCwgOSwgMzQsIDIyMSwgMTc5LCA5LCAzNCwgNCwgMTEwLCA5LCAzNCwgNCwgMTA1LCA5LCAzNCwgMjMzLCA5NywgCisgICAgMTEwLCA5LCAzNCwgMjMzLCA5NywgMTA1LCA5LCAzNCwgMjMzLCA5NywgMTU4LCA5LCAzNCwgMjMzLCA5NywgMTYxLCA5LCAKKyAgICAzNCwgMjE5LCA2OCwgOSwgMzQsIDIxNiwgMTQ1LCA5LCAzNCwgMjE5LCA2NiwgMTEwLCA5LCAzNCwgMjE5LCA2NiwgMTA1LCAKKyAgICA5LCAzNCwgMjQxLCAyMjgsIDExMCwgOSwgMzQsIDI0MSwgMjI4LCAxMDUsIDksIDM0LCAyNDIsIDE1LCA5LCAzNCwgMjIzLCAKKyAgICAxNDcsIDksIDM0LCAyNTAsIDgyLCA5LCAzNCwgMjE4LCAzNywgOSwgMzQsIDIzMCwgMTI4LCA5LCAzNCwgMjQ4LCA4OCwgOSwgCisgICAgMzQsIDIzMCwgMTIwLCA5LCAzNCwgMjUwLCAyNSwgOSwgMzQsIDIxMiwgNDEsIDExMCwgOSwgMzQsIDIxMiwgNDEsIDEwNSwgCisgICAgOSwgMzQsIDI0NCwgOTYsIDksIDM0LCAyMjUsIDIzMiwgMTEwLCA5LCAzNCwgMjI1LCAyMzIsIDEwNSwgOSwgMzQsIDIxOSwgCisgICAgMTYwLCAxNjMsIDIxNSwgMjM2LCAyMTUsIDE4OCwgOSwgMzQsIDI0OSwgMTQ1LCA5LCAzNCwgMjQ3LCAxMzYsIDksIDM0LCAKKyAgICAyMzUsIDEzNywgOSwgMzQsIDI1MSwgMTk4LCA2NCwgMjQ5LCAyNTAsIDksIDM0LCAyNDUsIDE1LCA5LCAzNCwgMjE4LCAyNDksIAorICAgIDExMCwgOSwgMzQsIDIxOCwgMjQ5LCAxMDUsIDksIDM0LCAyNTIsIDE1NCwgOSwgMzQsIDIxOSwgMTY3LCA5LCAzNCwgMjUxLCAKKyAgICA2MywgMjE5LCAxNjcsIDksIDM0LCAyMjksIDkwLCAxMTAsIDksIDM0LCAyMjksIDkwLCAxMDUsIDksIDM0LCAyMjksIDkwLCAKKyAgICAxNTgsIDksIDM0LCAyMjksIDkwLCAxNjEsIDksIDM0LCAyMzEsIDQ2LCA5LCAzNCwgMjIwLCA1NywgOSwgMzQsIDIyMywgCisgICAgMTUzLCA5LCAzNCwgMjQ1LCAzNywgOSwgMzQsIDIyNiwgMjA5LCA5LCAzNCwgMjUxLCAxMzMsIDExMCwgOSwgMzQsIDI1MSwgCisgICAgMTMzLCAxMDUsIDksIDM0LCAyMzEsIDg2LCA5LCAzNCwgMjMwLCAxMjMsIDksIDM0LCAyNDIsIDE0MCwgMTEwLCA5LCAzNCwgCisgICAgMjQyLCAxNDAsIDEwNSwgOSwgMzQsIDI0MiwgMTQwLCAxNTgsIDksIDM0LCAyMTYsIDEwNiwgOSwgMzQsIDI0OSwgMjQ5LCA5LCAKKyAgICAzNCwgMjEyLCA5LCAxMTAsIDksIDM0LCAyMTIsIDksIDEwNSwgOSwgMzQsIDI1MSwgNjMsIDIyMSwgMTcwLCA5LCAzNCwgCisgICAgMjE5LCAxNjAsIDI0MCwgMjQ4LCA5LCAzNCwgMjQwLCAyNDgsIDksIDM0LCAyNTEsIDYzLCAyMTksIDIsIDksIDM0LCAyNTEsIAorICAgIDYzLCAyMjAsIDUyLCA5LCAzNCwgMjQ0LCAzMiwgOSwgMzQsIDI1MSwgNjMsIDI1MCwgMjI4LCA5LCAzNCwgMjE5LCAxNjAsIAorICAgIDIxMiwgNTcsIDksIDM0LCAyMTIsIDU4LCAxMTAsIDksIDM0LCAyMTIsIDU4LCAxMDUsIDksIDM0LCAyNTAsIDI3LCA5LCAzNCwgCisgICAgMjUxLCA2MywgMjQyLCAxNjYsIDksIDM0LCAxOTksIDExMCwgOSwgMzQsIDE5OSwgMTA1LCA5LCAzNCwgMjUxLCA2MywgMjMyLCAKKyAgICAxMzcsIDksIDM0LCAyNTEsIDYzLCAyNDMsIDg4LCA5LCAzNCwgMjMwLCAxMTksIDExMCwgOSwgMzQsIDIzMCwgMTE5LCAxMDUsIAorICAgIDksIDM0LCAyMjMsIDE1OSwgOSwgMzQsIDI1MSwgMjA3LCA5LCAzNCwgMjUxLCA2MywgMjE3LCA1NiwgMjMzLCA1MiwgOSwgCisgICAgMzQsIDI1MSwgNjMsIDIzMywgNTMsIDksIDM0LCAyNTEsIDYzLCAyMTEsIDIzOSwgOSwgMzQsIDI1MSwgNjMsIDI0NCwgNDYsIAorICAgIDksIDM0LCAyNDUsIDIxOCwgMTEwLCA5LCAzNCwgMjQ1LCAyMTgsIDEwNSwgOSwgMzQsIDI0NSwgMjE4LCAxNTgsIDksIDM0LCAKKyAgICAyNTEsIDYzLCAyNDUsIDIxNywgOSwgMzQsIDI0MSwgMjM1LCA5LCAzNCwgMjUxLCA2MywgMjQwLCAyNDUsIDksIDM0LCAyNTEsIAorICAgIDE5NCwgOSwgMzQsIDI0MiwgMjIyLCA5LCAzNCwgMjUxLCA2MywgMjQ0LCA5MCwgOSwgMzQsIDI1MSwgNjMsIDI1MSwgMjM3LCAKKyAgICA5LCAzNCwgMjUxLCA2MywgMjIyLCAxLCA5LCAzNCwgMjE5LCAxNjAsIDIxMiwgMiwgOSwgMzQsIDIxOSwgMTYwLCAyMTEsIAorICAgIDQxLCA5LCAzNCwgMjUxLCA2MywgMjQzLCAyNDQsIDksIDM0LCAyMzUsIDE0MywgMjQ1LCA0MSwgOSwgMzQsIDI1MSwgNjMsIAorICAgIDI0NSwgNDEsIDksIDM0LCAyMzUsIDE0MywgMjE2LCAxNSwgOSwgMzQsIDI1MSwgNjMsIDIxNiwgMTUsIDksIDM0LCAyMzUsIAorICAgIDE0MywgMjQ2LCA5NiwgOSwgMzQsIDI1MSwgNjMsIDI0NiwgOTYsIDksIDM0LCAyMTUsIDkxLCA5LCAzNCwgMjM1LCAxNDMsIAorICAgIDIxNSwgOTEsIDksIDM0LCAyNTEsIDYzLCAyMTUsIDkxLCA2MCwgMzQsIDExMCwgNjAsIDM0LCAyMzIsIDIxMywgNjAsIDM0LCAKKyAgICAyNDcsIDEyMCwgNjAsIDM0LCAyMTksIDk1LCA2MCwgMzQsIDIyMSwgMTc1LCA2MCwgMzQsIDEwMywgNjAsIDM0LCAxMDUsIAorICAgIDYwLCAzNCwgMjMyLCAyMzcsIDYwLCAzNCwgMjMxLCAxODUsIDYwLCAzNCwgMjMzLCAzMywgNjAsIDM0LCAyNDUsIDEyOSwgCisgICAgNjAsIDM0LCAxOTUsIDYwLCAzNCwgMTI0LCAyNTEsIDE2MywgNjAsIDM0LCAyNDksIDE0NywgNjAsIDM0LCAyNDAsIDExMSwgCisgICAgNjAsIDM0LCAyMTcsIDkyLCA2MCwgMzQsIDIwNCwgMjUxLCAxNjMsIDYwLCAzNCwgMjM0LCAzMiwgNjAsIDM0LCAyMjQsIAorICAgIDIyNCwgNjAsIDM0LCAyMTEsIDIwMiwgNjAsIDM0LCAyMTgsIDI0MywgNjAsIDM0LCA0NCwgMjA0LCAyNTEsIDE2MywgNjAsIAorICAgIDM0LCAyNDEsIDE3NiwgMjQ1LCAxNDUsIDYwLCAzNCwgMjE2LCAyNDcsIDYwLCAzNCwgMjQ3LCAxNzAsIDYwLCAzNCwgMjIxLCAKKyAgICAxNzksIDYwLCAzNCwgMjUwLCAxMCwgNjAsIDM0LCAyMjQsIDE4MiwgNjAsIDM0LCAyNTQsIDIxNSwgNjAsIDM0LCAyMzAsIAorICAgIDExMCwgNjAsIDM0LCAyNDUsIDE0NSwgNjAsIDM0LCAyNDUsIDIyMywgNjAsIDM0LCAyMjEsIDIwMCwgNjAsIDM0LCAyNDIsIAorICAgIDE3NCwgNjAsIDM0LCAyNDIsIDE3NSwgMjE5LCA4MSwgNjAsIDM0LCAyNDUsIDQwLCA2MCwgMzQsIDI1MSwgMjQ4LCA2MCwgCisgICAgMzQsIDIxMSwgMjIxLCA2MCwgMzQsIDI1MCwgMTAxLCA2MCwgMzQsIDIyMiwgMTk2LCA2MCwgMzQsIDIzNSwgMjUxLCA2MCwgCisgICAgMzQsIDIxOSwgNzksIDYwLCAzNCwgMjMzLCA5NiwgNjAsIDM0LCAyNDksIDE1NiwgNjAsIDM0LCAyMTgsIDIzNywgNjAsIDM0LCAKKyAgICAyMzAsIDExNSwgNjAsIDM0LCAyMjIsIDIyNCwgNjAsIDM0LCAyMTEsIDIwNiwgNjAsIDM0LCAyMjYsIDE5MCwgNjAsIDM0LCAKKyAgICAyMTUsIDk3LCA2MCwgMzQsIDI0NiwgODAsIDYwLCAzNCwgMjE5LCAyNTEsIDIxNiwgMTQ1LCA2MCwgMzQsIDI0NiwgMTE4LCAKKyAgICAyNTAsIDEwLCA2MCwgMzQsIDE5OSwgMjE4LCAxMDgsIDYwLCAzNCwgMTEzLCAyNDIsIDEwLCA2MCwgMzQsIDIyMCwgMCwgNjAsIAorICAgIDM0LCAyNTEsIDE2OSwgNjAsIDM0LCAyMTksIDY1LCA2MCwgMzQsIDI1MSwgMTM3LCA2MCwgMzQsIDIxOCwgMTM4LCA2MCwgCisgICAgMzQsIDI0MSwgMjI3LCA2MCwgMzQsIDI0MiwgMjgsIDYwLCAzNCwgMjQ3LCAxMjMsIDYwLCAzNCwgMjQyLCAxNSwgNjAsIDM0LCAKKyAgICAyNTEsIDE1NCwgNjAsIDM0LCAyMjMsIDE0NywgNjAsIDM0LCAyMjEsIDE4NywgNjAsIDM0LCAyNDcsIDE5OSwgNjAsIDM0LCAKKyAgICAyNTMsIDE2OCwgNjAsIDM0LCAyMTgsIDIzNCwgNjAsIDM0LCAyMjgsIDUxLCA2MCwgMzQsIDIxOCwgMzcsIDYwLCAzNCwgCisgICAgMjIxLCAyMTEsIDYwLCAzNCwgMjMwLCAxMjgsIDYwLCAzNCwgMjE1LCAyMzUsIDYwLCAzNCwgMjMzLCAxMjIsIDYwLCAzNCwgCisgICAgMjE4LCAxMjksIDYwLCAzNCwgMjQ4LCA4OCwgNjAsIDM0LCAyMTIsIDIxLCA2MCwgMzQsIDI0NywgMTQ2LCAyMjgsIDUxLCAKKyAgICA2MCwgMzQsIDI0OSwgMjE1LCA2MCwgMzQsIDI0MywgMjIyLCA2MCwgMzQsIDI1MCwgMjEsIDYwLCAzNCwgMjE4LCAxNDIsIAorICAgIDYwLCAzNCwgMjEyLCA0MCwgNjAsIDM0LCAyNDQsIDk2LCA2MCwgMzQsIDI1MCwgMTgsIDYwLCAzNCwgMjQ0LCAxNjEsIDYwLCAKKyAgICAzNCwgNTIsIDIxMSwgMTc4LCA2MCwgMzQsIDE2MywgMjE1LCAyMzYsIDIxNSwgMTg4LCA2MCwgMzQsIDIxOSwgODksIDYwLCAKKyAgICAzNCwgMjQ0LCAxNzEsIDYwLCAzNCwgMjQ5LCAxNDUsIDYwLCAzNCwgMjQ3LCAxMzYsIDYwLCAzNCwgMjI0LCAxNzksIDYwLCAKKyAgICAzNCwgMjM1LCAxMzcsIDYwLCAzNCwgMjMxLCA2NywgNjAsIDM0LCAyMTYsIDg4LCA2MCwgMzQsIDIxNywgMjQ1LCA2MCwgMzQsIAorICAgIDIzMiwgMjMxLCA2MCwgMzQsIDIxNCwgMTMxLCA2MCwgMzQsIDI0NCwgMTIwLCA2MCwgMzQsIDI1MSwgMTk4LCA2NCwgMjQ5LCAKKyAgICAyNTAsIDYwLCAzNCwgMjE5LCAxODgsIDYwLCAzNCwgMjQ2LCAxMTgsIDIxNiwgMjQyLCA2MCwgMzQsIDIxMSwgMjUzLCA2MCwgCisgICAgMzQsIDIxOSwgMTAzLCA2MCwgMzQsIDI0NywgMTg3LCA2MCwgMzQsIDI0NSwgMTUsIDYwLCAzNCwgMjE5LCA1LCA2MCwgMzQsIAorICAgIDc0LCA2MCwgMzQsIDIxOCwgMTMxLCA2MCwgMzQsIDIxOCwgMjQ4LCA2MCwgMzQsIDIxNSwgMjU1LCA2MCwgMzQsIDI0MiwgCisgICAgMTQ3LCA2MCwgMzQsIDI1MCwgMjE4LCA2MCwgMzQsIDIxOCwgMTYwLCA2MCwgMzQsIDI1MiwgMTU0LCA2MCwgMzQsIDIyMywgCisgICAgMzEsIDYwLCAzNCwgMjE5LCAxNjcsIDYwLCAzNCwgMjM1LCAxMzAsIDYwLCAzNCwgMjI5LCA4OSwgNjAsIDM0LCAyMjAsIDU3LCAKKyAgICA2MCwgMzQsIDI0NCwgMTQ5LCA2MCwgMzQsIDIyNiwgMjA5LCA2MCwgMzQsIDI1NCwgMTE4LCA2MCwgMzQsIDIyNSwgMjksIAorICAgIDYwLCAzNCwgMjQ1LCAyMjcsIDYwLCAzNCwgMjUxLCAxMzIsIDYwLCAzNCwgMjMxLCA4NiwgNjAsIDM0LCAyMzAsIDE4MywgCisgICAgNjAsIDM0LCAyMjAsIDE1NiwgNjAsIDM0LCAyNTMsIDI1MiwgNjAsIDM0LCAyMzAsIDEyMywgNjAsIDM0LCAyMTYsIDE5LCAKKyAgICA2MCwgMzQsIDIyNiwgMTY1LCA2MCwgMzQsIDI1MSwgMjAxLCA2MCwgMzQsIDIxOCwgMTI3LCA2MCwgMzQsIDI0OSwgMjI1LCAKKyAgICA2MCwgMzQsIDI0MiwgMTM5LCA2MCwgMzQsIDIxNiwgMTA2LCA2MCwgMzQsIDIzNSwgMjE3LCA2MCwgMzQsIDI1MSwgMjExLCAKKyAgICA2MCwgMzQsIDIxMiwgNTgsIDI0NSwgMTQ1LCA2MCwgMzQsIDI0OSwgMjQ5LCA2MCwgMzQsIDIxMiwgOCwgNjAsIDM0LCAyMjEsIAorICAgIDE3MCwgNjAsIDM0LCAyNDAsIDI0OCwgNjAsIDM0LCAyMTksIDIsIDYwLCAzNCwgMjE0LCAyMiwgNjAsIDM0LCAyNTIsIDcyLCAKKyAgICA2MCwgMzQsIDIyNSwgNzMsIDYwLCAzNCwgMjUyLCAxNzQsIDYwLCAzNCwgMjIwLCA1MiwgNjAsIDM0LCAyMjMsIDExMCwgNjAsIAorICAgIDM0LCAyMjIsIDEyNiwgNjAsIDM0LCAyNDQsIDMyLCA2MCwgMzQsIDI1MSwgMjAwLCA2MCwgMzQsIDI1MCwgMjI4LCA2MCwgCisgICAgMzQsIDI1MSwgMjI2LCA2MCwgMzQsIDIzMCwgMTI1LCA2MCwgMzQsIDIxMiwgNTcsIDYwLCAzNCwgMjUwLCAyNywgNjAsIDM0LCAKKyAgICAyMTEsIDIzNiwgNjAsIDM0LCAyNDcsIDE4MCwgNjAsIDM0LCAyMTMsIDE2MSwgNjAsIDM0LCAyNDIsIDE2NiwgNjAsIDM0LCAKKyAgICAyMzIsIDEzNywgNjAsIDM0LCAyNDMsIDg4LCA2MCwgMzQsIDIzMCwgMTE4LCA2MCwgMzQsIDIxOSwgOTQsIDYwLCAzNCwgCisgICAgMjE5LCAyNTEsIDIxNywgNzYsIDI1MSwgMjM3LCA2MCwgMzQsIDIyMywgMTU5LCA2MCwgMzQsIDI1MSwgMjA3LCA2MCwgMzQsIAorICAgIDIxMSwgMTk3LCA2MCwgMzQsIDI0NCwgMTkwLCA2MCwgMzQsIDIzMywgNTIsIDYwLCAzNCwgMjE3LCA1NiwgMjMzLCA1MiwgCisgICAgNjAsIDM0LCAyMzMsIDQ4LCA2MCwgMzQsIDIxOSwgMzAsIDYwLCAzNCwgMjMzLCA1MywgNjAsIDM0LCAyMTEsIDIzOSwgNjAsIAorICAgIDM0LCAyNDQsIDQ2LCA2MCwgMzQsIDI0NSwgMjE3LCA2MCwgMzQsIDI0MSwgMjM1LCA2MCwgMzQsIDI0NCwgMCwgNjAsIDM0LCAKKyAgICAyNDAsIDI0NSwgNjAsIDM0LCAyNTEsIDE5NCwgNjAsIDM0LCAyMTcsIDYzLCA2MCwgMzQsIDI0MiwgMzQsIDYwLCAzNCwgCisgICAgMjQ0LCAxMTMsIDYwLCAzNCwgMjIyLCAyOCwgMjExLCAyMzYsIDYwLCAzNCwgMjUwLCAyMjAsIDYwLCAzNCwgMjQyLCAyMjIsIAorICAgIDYwLCAzNCwgMjQ0LCA5MCwgNjAsIDM0LCAyNTEsIDIzNywgNjAsIDM0LCAyMjIsIDEsIDYwLCAzNCwgMjQ4LCA3NCwgNjAsIAorICAgIDM0LCAyMTIsIDIsIDYwLCAzNCwgMjQxLCAyMTAsIDYwLCAzNCwgMjExLCA0MSwgNjAsIDM0LCAyMzAsIDE5MiwgNjAsIDM0LCAKKyAgICAyNTEsIDIyMSwgNjAsIDM0LCAyNDUsIDE1NSwgNjAsIDM0LCAyNDMsIDI0NCwgNjAsIDM0LCAyMTUsIDIwOSwgNjAsIDM0LCAKKyAgICAyNDYsIDgyLCA2MCwgMzQsIDIyMywgMTQxLCA2MCwgMzQsIDIyOCwgNTMsIDYwLCAzNCwgMjQ1LCA0MSwgNjAsIDM0LCAyMTYsIAorICAgIDE1LCA2MCwgMzQsIDI0NiwgOTYsIDYwLCAzNCwgMjE1LCA5MSwgNjAsIDM0LCAyNDQsIDQ4LCAxMDksIDI0OCwgMzcsIDEzNSwgCisgICAgNDMsIDIxNiwgNDIsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgNzcsIDIxNiwgNDIsIDUxLCAxMDksIDI0OCwgMzcsIAorICAgIDEzNSwgNDMsIDIxNiwgNDIsIDIzMCwgMjI0LCAyMiwgMjIyLCAyNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCA3NywgMjE2LCA0MiwgCisgICAgMjMwLCAyMjQsIDIyLCA1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDI0MywgMjI5LCAyMTgsIDEwLCAxMDksIDI0OCwgMzcsIAorICAgIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDQ4LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDUxLCAKKyAgICAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDIzMywgNDYsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIAorICAgIDExLCAyNDMsIDI0MywgMjE0LCAxNjAsIDIzMywgNDYsIDEwOSwgMjQ4LCAzNywgMTM1LCAyMTgsIDExLCAyNDMsIDI0MywgCisgICAgMjE0LCAxNjAsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIDIzMiwgMTA4LCAyMzMsIAorICAgIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjI2LCAxMjIsIDEwOSwgMjE5LCAxOCwgMTA5LCAyNDksIDIxOSwgMTA5LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDI0NywgMTc3LCA3OCwgMjM1LCAxMzEsIDIzNSwgMjM2LCAyMTgsIDE1OSwgODcsIDEwOSwgMjM1LCAKKyAgICAxNTgsIDc4LCAxMDksIDI0OSwgMjUyLCA3OCwgMTA5LCA1NCwgMjEwLCA4NiwgNDMsIDI1NCwgMTEwLCAxMjcsIDQ0LCAyNTQsIAorICAgIDExMCwgMTI3LCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgNDMsIDI0OSwgMTYxLCAKKyAgICAxMjcsIDQ0LCAyNDksIDE2MSwgMTI3LCA0MywgNzEsIDI0OSwgMTYxLCAxMjcsIDQ0LCA3MSwgMjQ5LCAxNjEsIDEyNywgNDMsIAorICAgIDg1LCAyMzMsIDIwLCAxMjcsIDQ0LCA4NSwgMjMzLCAyMCwgMTI3LCAyMjQsIDIzNywgNzgsIDI0MywgMzIsIDc4LCA0MywgCisgICAgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDMsIDcxLCAyMzMsIDIwLCAxMjcsIDQ0LCAKKyAgICA3MSwgMjMzLCAyMCwgMTI3LCA0MywgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0NCwgNzEsIDIxNiwgNiwgMjIwLCA1MywgCisgICAgMTI3LCA0MywgNzEsIDQyLCAxMjcsIDQ0LCA3MSwgNDIsIDEyNywgMjEyLCAzNiwgMjQ4LCAxNTYsIDIyMywgNDksIDUyLCAKKyAgICAyMjQsIDE5MSwgMjIzLCAyNTQsIDc4LCA1MiwgMjI0LCAxOTEsIDIyMywgMjU0LCA3OCwgMTIxLCA1MiwgMjI0LCAxOTEsIAorICAgIDIyMywgMjU0LCA3OCwgMjI0LCAyMzcsIDE2NCwgMjQ0LCAxOTAsIDI0MiwgOCwgMjI3LCAxOTgsIDExMCwgMjQyLCA4LCAKKyAgICAyMjcsIDE5OCwgMTA1LCAyNDIsIDgsIDIyNywgMTk4LCAxNTgsIDI0MiwgOCwgMjI3LCAxOTgsIDE2MSwgMjQyLCA4LCAyMjcsIAorICAgIDE5OCwgMTg5LCAyNDIsIDgsIDIyNywgMTk4LCAxOTQsIDI0MiwgOCwgMjI3LCAxOTgsIDE5OCwgMjQyLCA4LCAyMjcsIDE5OCwgCisgICAgMTk1LCAyNDIsIDgsIDIyNywgMTk4LCAyMDAsIDEwOSwgMjMzLCAzLCAxMzgsIDc4LCAxMDksIDIyMiwgMjI4LCAxMzgsIDc4LCAKKyAgICAxMDksIDI0OCwgNDQsIDEzOCwgNzgsIDEwOSwgMjQ1LCAxMjgsIDEzOCwgNzgsIDI0LCAyMTksIDE1NSwgNTksIDEzOCwgNzgsIAorICAgIDI0LCA1MiwgNTksIDEzOCwgNzgsIDIxMiwgMzIsIDI0OCwgMTU2LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDc4LCA2NywgCisgICAgMjM0LCAyMzMsIDIyMywgNzcsIDIsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAxNjQsIAorICAgIDIxNCwgMTYwLCAyNDIsIDI3LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDIsIDIxMywgMTM1LCAyMTksIDMxLCAxNjQsIDIxNCwgCisgICAgMTYwLCAyNDIsIDI3LCA2NywgMjM0LCAyMzMsIDIyMywgNzcsIDE2NCwgMjMyLCAxMDgsIDI0MiwgMjcsIDM3LCAyMjQsIAorICAgIDIzNywgNzgsIDEwOSwgMjE3LCAzLCAyMzIsIDIxNCwgMjQ0LCAxNDYsIDIyMCwgMTM4LCA4NywgMjQyLCA4LCAyMjcsIDE5OCwgCisgICAgMjE2LCAyNDcsIDI0MiwgOCwgMjI3LCAxOTgsIDIxNSwgNzMsIDI0MiwgOCwgMjI3LCAxOTgsIDIxNiwgMTYyLCA2NywgMTA5LCAKKyAgICAyMzUsIDE1OCwgNzgsIDIzMSwgMTQwLCA3OCwgMjI1LCAyNTUsIDI1NCwgMTQwLCA3OCwgMTA5LCA0NSwgMjM1LCAyMzgsIAorICAgIDEwOSwgMTYzLCAyNDQsIDEwNiwgMjE5LCAxOCwgMTQxLCAxLCA0LCA2MSwgMTQxLCAxLCA2MSwgMTQxLCAxLCA0LCA3MywgCisgICAgMTQxLCAxLCA3MywgMTQxLCAxLCA0LCA3MCwgMTQxLCAxLCA3MCwgMTQxLCAxLCA0LCA3NSwgMTQxLCAxLCA3NSwgMTQxLCAxLCAKKyAgICA0LCA3NiwgMTQxLCAxLCA3NiwgMTQxLCAxLCAxNzYsIDE0MSwgMSwgMjQzLCAxMzUsIDE0MSwgMSwgMjM0LCA5MiwgMTQxLCAKKyAgICAxLCAyNDIsIDIxNCwgMTQxLCAxLCAyMzMsIDIxNywgMTQxLCAxLCAyNDIsIDExMywgMTQxLCAxLCAyMzQsIDE4MiwgMTQxLCAKKyAgICAxLCAyNDMsIDYyLCAxNDEsIDEsIDIzNCwgMjgsIDE0MSwgMSwgMjQyLCAxNzQsIDE0MSwgMSwgMjA2LCAxNDEsIDEsIDIxMCwgCisgICAgMTE2LCAxNDEsIDEsIDIxOSwgMTkxLCAxNDEsIDEsIDIxMCwgNDQsIDE0MSwgMSwgMjE4LCA4MywgMTQxLCAxLCAyMTAsIDEzLCAKKyAgICAxNDEsIDEsIDIyMSwgMTgxLCAxNDEsIDEsIDIxMCwgOTQsIDE0MSwgMSwgMjE5LCA1OCwgMTQxLCAxLCAyMTAsIDIzLCAxNDEsIAorICAgIDEsIDIxNywgMTA1LCAxNDEsIDEsIDI0OCwgMjIxLCAxNDEsIDEsIDIxNiwgMTE3LCAxNDEsIDEsIDI0OCwgMywgMTQxLCAxLCAKKyAgICA0LCAyMTUsIDExOCwgMTQxLCAxLCAyMTUsIDExOCwgMTQxLCAxLCAyNDYsIDc4LCAxNDEsIDEsIDIxNywgMjIsIDE0MSwgMSwgCisgICAgMjQ4LCA5MCwgMTQxLCAxLCAxMTEsIDE0MSwgMSwgMjQ3LCAxNDUsIDE0MSwgMSwgMTk3LCAxNDEsIDEsIDIyOCwgMjMzLCAKKyAgICAxNDEsIDEsIDIyNywgMjM3LCAxNDEsIDEsIDIyOSwgMTA3LCAxNDEsIDEsIDIyOCwgNzQsIDE0MSwgMSwgMTYyLCAxNDEsIDEsIAorICAgIDI1MiwgMTkxLCAxNDEsIDEsIDE5MCwgMTQxLCAxLCAyNDEsIDE4MCwgMTQxLCAxLCAyNTIsIDYsIDE0MSwgMSwgMjI1LCAKKyAgICAxMDgsIDE0MSwgMSwgMjQwLCAyMjIsIDE0MSwgMSwgMjUxLCAxMjUsIDE0MSwgMSwgMjI0LCAxNTAsIDE0MSwgMSwgMjQxLCAKKyAgICAyMzgsIDE0MSwgMSwgMjUyLCA3NSwgMTQxLCAxLCAyMjUsIDIyMSwgMTQxLCAxLCAyNDEsIDY4LCAxNDEsIDEsIDI1MSwgCisgICAgMjA1LCAxNDEsIDEsIDIyNSwgMTYsIDE0MSwgMSwgMTg0LCAxNDEsIDEsIDIzMCwgMjMwLCAxNDEsIDEsIDIzMCwgMTAyLCAKKyAgICAxNDEsIDEsIDIzMSwgOTEsIDE0MSwgMSwgMjMwLCAxNjEsIDE0MSwgMSwgNCwgMTkxLCAxNDEsIDEsIDE5MSwgMTQxLCAxLCAKKyAgICA0LCAyMTAsIDIxMiwgMTQxLCAxLCAyMTAsIDIxMiwgMTQxLCAxLCA0LCAyMTAsIDI0NCwgMTQxLCAxLCAyMTAsIDI0NCwgCisgICAgMTQxLCAxLCAyMDUsIDE0MSwgMSwgMjIzLCAzNSwgMTQxLCAxLCAyMjIsIDE0MCwgMTQxLCAxLCAyMjMsIDEyOCwgMTQxLCAxLCAKKyAgICAyMjIsIDIxMSwgMTQxLCAxLCA0LCAyMTIsIDY1LCAxNDEsIDEsIDIxMiwgNjUsIDE0MSwgMSwgMjExLCAyNTAsIDE0MSwgMSwgCisgICAgMjEyLCAyMiwgMTQxLCAxLCAyMTEsIDIyNywgMTQxLCAxLCAyMzAsIDI1LCAxNDEsIDEsIDIxMiwgMTE2LCAxNDEsIDEsIDQsIAorICAgIDE3NiwgMTQxLCAxLCA0LCAyMzQsIDE4MiwgMzgsIDIzNCwgMjAxLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDM4LCAyMzQsIAorICAgIDIwMSwgMjIwLCAxNTUsIDIxOSwgMzEsIDc4LCAyMzQsIDIwMSwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAyMzQsIDIwMSwgCisgICAgMjIwLCAxNTUsIDIxOSwgMzEsIDc4LCAxNDEsIDIzNSwgMTU4LCA3OCwgMTQxLCAyMTMsIDEzNSwgMjM1LCAxNTgsIDc4LCAKKyAgICAxNDEsIDI0NywgMjIxLCAyMTAsIDIyNSwgMjM0LCAyMDEsIDUyLCAyNDAsIDE2OCwgNTYsIDEsIDQsIDYxLCA1NiwgMSwgNjEsIAorICAgIDU2LCAxLCA0LCA3MywgNTYsIDEsIDczLCA1NiwgMSwgNCwgNzAsIDU2LCAxLCA3MCwgNTYsIDEsIDQsIDc1LCA1NiwgMSwgCisgICAgNzUsIDU2LCAxLCA0LCA3NiwgNTYsIDEsIDc2LCA1NiwgMSwgMTc2LCA1NiwgMSwgMjQzLCAxMzUsIDU2LCAxLCAyMzQsIDkyLCAKKyAgICA1NiwgMSwgMjQyLCAyMTQsIDU2LCAxLCAyMzMsIDIxNywgNTYsIDEsIDI0MiwgMTEzLCA1NiwgMSwgMjM0LCAxODIsIDU2LCAKKyAgICAxLCAyNDMsIDYyLCA1NiwgMSwgMjM0LCAyOCwgNTYsIDEsIDI0MiwgMTc0LCA1NiwgMSwgMjA2LCA1NiwgMSwgMjEwLCAxMTYsIAorICAgIDU2LCAxLCAyMTksIDE5MSwgNTYsIDEsIDIxMCwgNDQsIDU2LCAxLCAyMTgsIDgzLCA1NiwgMSwgMjEwLCAxMywgNTYsIDEsIAorICAgIDIyMSwgMTgxLCA1NiwgMSwgMjEwLCA5NCwgNTYsIDEsIDIxOSwgNTgsIDU2LCAxLCAyMTAsIDIzLCA1NiwgMSwgMjE3LCAKKyAgICAxMDUsIDU2LCAxLCAyNDgsIDIyMSwgNTYsIDEsIDIxNiwgMTE3LCA1NiwgMSwgMjQ4LCAzLCA1NiwgMSwgNCwgMjE1LCAxMTgsIAorICAgIDU2LCAxLCAyMTUsIDExOCwgNTYsIDEsIDI0NiwgNzgsIDU2LCAxLCAyMTcsIDIyLCA1NiwgMSwgMjQ4LCA5MCwgNTYsIDEsIAorICAgIDExMSwgNTYsIDEsIDI0NywgMTQ1LCA1NiwgMSwgMTk3LCA1NiwgMSwgMjI4LCAyMzMsIDU2LCAxLCAyMjcsIDIzNywgNTYsIAorICAgIDEsIDIyOSwgMTA3LCA1NiwgMSwgMjI4LCA3NCwgNTYsIDEsIDE2MiwgNTYsIDEsIDI1MiwgMTkxLCA1NiwgMSwgMTkwLCA1NiwgCisgICAgMSwgMjQxLCAxODAsIDU2LCAxLCAyNTIsIDYsIDU2LCAxLCAyMjUsIDEwOCwgNTYsIDEsIDI0MCwgMjIyLCA1NiwgMSwgMjUxLCAKKyAgICAxMjUsIDU2LCAxLCAyMjQsIDE1MCwgNTYsIDEsIDI0MSwgMjM4LCA1NiwgMSwgMjUyLCA3NSwgNTYsIDEsIDIyNSwgMjIxLCAKKyAgICA1NiwgMSwgMjQxLCA2OCwgNTYsIDEsIDI1MSwgMjA1LCA1NiwgMSwgMjI1LCAxNiwgNTYsIDEsIDE4NCwgNTYsIDEsIDIzMCwgCisgICAgMjMwLCA1NiwgMSwgMjMwLCAxMDIsIDU2LCAxLCAyMzEsIDkxLCA1NiwgMSwgMjMwLCAxNjEsIDU2LCAxLCA0LCAxOTEsIDU2LCAKKyAgICAxLCAxOTEsIDU2LCAxLCA0LCAyMTAsIDIxMiwgNTYsIDEsIDIxMCwgMjEyLCA1NiwgMSwgNCwgMjEwLCAyNDQsIDU2LCAxLCAKKyAgICAyMTAsIDI0NCwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyMywgMzUsIDU2LCAxLCAyMjIsIDE0MCwgNTYsIDEsIDIyMywgMTI4LCAKKyAgICA1NiwgMSwgMjIyLCAyMTEsIDU2LCAxLCA0LCAyMTIsIDY1LCA1NiwgMSwgMjEyLCA2NSwgNTYsIDEsIDIxMSwgMjUwLCA1NiwgCisgICAgMSwgMjEyLCAyMiwgNTYsIDEsIDIxMSwgMjI3LCA1NiwgMSwgMjMwLCAyNSwgNTYsIDEsIDIxMiwgMTE2LCA1NiwgMSwgNCwgCisgICAgMTc2LCA1NiwgMSwgNCwgMjM0LCAxODIsIDU2LCAxLCAyMTQsIDI3LCA1NiwgMSwgMjEzLCAxNzYsIDU2LCAxLCAyMTMsIAorICAgIDI1NSwgNTYsIDEsIDIxMywgMTM4LCA1NiwgMjMwLCAyMjQsIDI0NywgMTIwLCAyMzQsIDIwMSwgMjI0LCAxNzMsIDIxOSwgCisgICAgMzEsIDc4LCA1NiwgMjM1LCAxNTgsIDc4LCA1NiwgMjEzLCAxMzUsIDIzNSwgMTU4LCA3OCwgNTYsIDI0NywgMjIxLCAyMzMsIAorICAgIDI1NSwgMjUxLCAxODQsIDEsIDI1MywgMTU4LCAyNTEsIDE4NCwgMSwgMjI2LCAxMDUsIDI1MSwgMTg0LCAxLCAxOTMsIDI1MSwgCisgICAgMTg0LCAxLCAyNDUsIDYsIDI1MSwgMTg0LCAxLCAyNDksIDYwLCAyNTEsIDE4NCwgMSwgMjE3LCAxNTIsIDI1MSwgMTg0LCAxLCAKKyAgICAyMzAsIDI1LCAyNTEsIDE4NCwgMSwgMTU2LCAyNTEsIDE4NCwgMSwgMjQzLCAyMDIsIDI1MSwgMTg0LCAxLCAyMzUsIDIzLCAKKyAgICAyNTEsIDE4NCwgMSwgMjQyLCA2MCwgMjUxLCAxODQsIDEsIDIzNSwgMTQ0LCAyNTEsIDE4NCwgMSwgMjI0LCA5NiwgMjUxLCAKKyAgICAxODQsIDEsIDIxMSwgMTc4LCAyNTEsIDE4NCwgMSwgMjEwLCA4MywgMjUxLCAxODQsIDEsIDI1MCwgMTU4LCAyNTEsIDE4NCwgCisgICAgMSwgMjIwLCAxMDQsIDI1MSwgMTg0LCAxLCAxNTMsIDI1MSwgMTg0LCAxLCAyMTAsIDE1OSwgMjUxLCAxODQsIDEsIDI1MSwgCisgICAgNjYsIDI1MSwgMTg0LCAxLCAyMjIsIDkxLCAyNTEsIDE4NCwgMSwgNjEsIDI1MSwgMTg0LCAxLCA3NiwgMjUxLCAxODQsIDEsIAorICAgIDc1LCAyNTEsIDE4NCwgMSwgMjQ1LCAxOTcsIDI1MSwgMTg0LCAxLCAyNTQsIDIwMSwgMjUxLCAxODQsIDEsIDI0NSwgMTk1LCAKKyAgICAyNTEsIDE4NCwgMSwgMjUzLCAxOTIsIDI1MSwgMTg0LCAxLCAyMjYsIDEzNCwgMjUxLCAxODQsIDEsIDI1NCwgMTIzLCAyNTEsIAorICAgIDE4NCwgMSwgMjQ1LCAxNTAsIDI1MSwgMTg0LCAxLCAyNTQsIDExNSwgMjUxLCAxODQsIDEsIDI0NSwgMTM4LCAyNTEsIDE4NCwgCisgICAgMSwgMjQ1LCA5MiwgMjUxLCAxODQsIDEsIDczLCAyNTEsIDE4NCwgMSwgNzAsIDI1MSwgMTg0LCAxLCAyMzUsIDE1NiwgMjUxLCAKKyAgICAxODQsIDEsIDIxNCwgMTA1LCAyNTEsIDE4NCwgMSwgMjI5LCA3OSwgMjUxLCAxODQsIDEsIDI0MiwgMTc4LCAyNTEsIDE4NCwgCisgICAgMSwgMjM2LCAzNCwgMjQsIDEsIDIzNCwgNTgsIDI0LCAxLCAyMTgsIDIxNSwgMjQsIDEsIDIzNCwgNTEsIDI0LCAxLCAyMjgsIAorICAgIDIyNiwgMjQsIDEsIDIyOCwgMjI0LCAyNCwgMSwgMjI4LCAyMjMsIDI0LCAxLCAyMTYsIDEwMSwgMjQsIDEsIDIxOCwgMjA0LCAKKyAgICAyNCwgMSwgMjIzLCAyNiwgMjQsIDEsIDIyMywgMjEsIDI0LCAxLCAyMjMsIDE4LCAyNCwgMSwgMjIzLCAxMSwgMjQsIDEsIAorICAgIDIyMywgNiwgMjQsIDEsIDIyMywgMSwgMjQsIDEsIDIyMywgMTIsIDI0LCAxLCAyMjMsIDI0LCAyNCwgMSwgMjMwLCAyMTcsIAorICAgIDI0LCAxLCAyMjUsIDk1LCAyNCwgMSwgMjE4LCAyMTIsIDI0LCAxLCAyMjUsIDg0LCAyNCwgMSwgMjE5LCAxNDgsIDI0LCAxLCAKKyAgICAyMTgsIDIwOSwgMjQsIDEsIDIzNiwgNTYsIDI0LCAxLCAyNTAsIDQ2LCAyNCwgMSwgMjE4LCAyMTksIDI0LCAxLCAyNTAsIAorICAgIDEwNiwgMjQsIDEsIDIzNCwgMTEwLCAyNCwgMSwgMjE2LCAxNzMsIDI0LCAxLCAyMjUsIDEzMSwgMjQsIDEsIDI0MSwgMTcyLCAKKyAgICAyNCwgMSwgNjEsIDI0LCAxLCAyNTQsIDI0MywgMjQsIDEsIDE5MSwgMjQsIDEsIDIxMSwgOTIsIDI0LCAxLCAyNDUsIDExNywgCisgICAgMjQsIDEsIDc1LCAyNCwgMSwgMjExLCAzNiwgMjQsIDEsIDIxMSwgNDcsIDI0LCAxLCA3NiwgMjQsIDEsIDIxMiwgNjUsIDI0LCAKKyAgICAxLCAyMTIsIDYyLCAyNCwgMSwgMjI2LCAyMzQsIDI0LCAxLCAyMTAsIDI0NCwgMjQsIDEsIDcwLCAyNCwgMSwgMjEyLCAxMSwgCisgICAgMjQsIDEsIDIxMiwgMjIsIDI0LCAxLCAyMTEsIDI1MCwgMjQsIDEsIDIxMCwgMjEyLCAyNCwgMSwgMjQ1LCA1NSwgMjQsIDEsIAorICAgIDIxMSwgOCwgMjQsIDEsIDczLCAyNCwgMjQ0LCAxMDMsIDI0LCAxLCAyMTgsIDIxMywgMjQsIDEsIDIyOCwgMjE2LCAyNCwgMSwgCisgICAgMjI4LCAyMTgsIDI0LCAxLCAyMjgsIDIyMSwgMjQsIDEsIDIyMywgMTksIDI0LCAxLCAyMjMsIDAsIDI0LCAxLCAyMjMsIDgsIAorICAgIDI0LCAxLCAyMjMsIDEzLCAyNCwgMSwgMjIyLCAyNTQsIDI0LCAxLCAyMzAsIDIxMCwgMjQsIDEsIDIzMCwgMjA3LCAyNCwgMSwgCisgICAgMjMwLCAyMTEsIDI0LCAxLCAyMzQsIDIyMSwgMjQsIDEsIDIyNSwgOTAsIDI0LCAxLCAyMjUsIDc2LCAyNCwgMSwgMjI1LCAKKyAgICA4MiwgMjQsIDEsIDIyNSwgNzksIDI0LCAxLCAyMjUsIDkzLCAyNCwgMSwgMjI1LCA3NywgMjQsIDEsIDIzNCwgMjE5LCAyNCwgCisgICAgMSwgMjM0LCAyMTcsIDI0LCAxLCAyMTksIDE0MSwgMjQsIDEsIDIxOSwgMTM5LCAyNCwgMSwgMjE5LCAxMzEsIDI0LCAxLCAKKyAgICAyMTksIDEzNiwgMjQsIDEsIDIxOSwgMTQ2LCAyNCwgMSwgMjI2LCAzMiwgMjQsIDEsIDIxOCwgMjE2LCAyNCwgMSwgMjExLCAKKyAgICAyNiwgMjQsIDEsIDIxMSwgMjIsIDI0LCAxLCAyMTEsIDIzLCAyNCwgMSwgMjM0LCAyMjAsIDI0LCAxLCAyMTgsIDIxNywgMjQsIAorICAgIDEsIDIxMSwgMzIsIDI0LCAxLCAyMTAsIDIzOCwgMjQsIDEsIDIxMCwgMjM3LCAyNCwgMSwgMjEwLCAyNDAsIDI0LCAxLCAKKyAgICAyMTAsIDIwMywgMjQsIDEsIDIxMCwgMjA0LCAyNCwgMSwgMjEwLCAyMDcsIDI0LCAxLCAyNTQsIDM0LCAyNCwgMSwgMjU0LCAKKyAgICAyOCwgMTA5LCAyNTQsIDk5LCAyMzIsIDIwMywgNzgsIDEwOSwgMjU0LCA5OSwgMjIzLCA1MCwgNzgsIDEwOSwgMjU0LCA5OSwgCisgICAgMTIzLCA3OCwgMTA5LCAyNTQsIDk5LCAxMTMsIDc4LCAxMDksIDI1NCwgOTksIDEzNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCAKKyAgICAxMSwgNzgsIDEwOSwgMjU0LCA5OSwgMjE2LCAxNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjMwLCAyMjQsIDc4LCAxMDksIDI1NCwgCisgICAgOTksIDI1MSwgMTc1LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIDkyLCA3OCwgMTA5LCAyNTQsIDk5LCAyMjEsIDE3NiwgNzgsIAorICAgIDEwOSwgMjU0LCA5OSwgMjE2LCAxNjksIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjQxLCAKKyAgICAyMjQsIDc4LCAxMDksIDI1NCwgOTksIDI0NSwgMjI0LCA3OCwgMTA5LCAyNTQsIDk5LCAyMzEsIDE4NiwgNzgsIDI1MSwgCisgICAgMTg0LCAxLCAyNTEsIDEyNSwgMjUxLCAxODQsIDEsIDIxMCwgNDQsIDI1MSwgMTg0LCAxLCAyMzUsIDEwOCwgMjUxLCAxODQsIAorICAgIDEsIDI0MiwgMTEzLCAyNTEsIDE4NCwgMSwgMjQ1LCAyMDksIDI1MSwgMTg0LCAxLCAyNDUsIDEzNSwgMjUxLCAxODQsIDEsIAorICAgIDIyNiwgMTgzLCAyNTEsIDE4NCwgMSwgMjI2LCAxODcsIDI1MSwgMTg0LCAxLCAyMzUsIDE3OSwgMjUxLCAxODQsIDEsIDI1NCwgCisgICAgMTAxLCAyNTEsIDE4NCwgMSwgMjM1LCAyMjQsIDI1MSwgMTg0LCAxLCAyMTQsIDE2OCwgMjUxLCAxODQsIDEsIDIzNiwgMTYsIAorICAgIDI1MSwgMTg0LCAxLCAyMjksIDU3LCAyNTEsIDE4NCwgMSwgMjU0LCAxOTUsIDI1MSwgMTg0LCAxLCAyNTMsIDE4NywgMjUxLCAKKyAgICAxODQsIDEsIDI1NCwgMTM2LCAyNTEsIDE4NCwgMSwgMjI2LCAyMDQsIDI1MSwgMTg0LCAxLCAyMjYsIDE4OSwgMjUxLCAxODQsIAorICAgIDEsIDIzNSwgMjIxLCAyNTEsIDE4NCwgNDAsIDEsIDIyNiwgMTA1LCAyNTEsIDE4NCwgNDAsIDEsIDIxNywgMTUyLCAyNTEsIAorICAgIDE4NCwgNDAsIDEsIDIzNSwgMjMsIDI1MSwgMTg0LCA0MCwgMSwgMjQyLCA2MCwgMjUxLCAxODQsIDEsIDI0MiwgMjUwLCAKKyAgICAyNTEsIDE4NCwgMSwgMjMyLCAyNTUsIDI1MSwgMTg0LCAxLCAyMDksIDI1MCwgOSwgMjE4LCAxMDMsIDIxNywgMTUyLCA5LCAKKyAgICAyMTgsIDEwMywgMjEyLCA0LCA5LCAyMTgsIDEwMywgMjExLCAxNTgsIDksIDIxOCwgMTAzLCAyNTEsIDc5LCA5LCAyMTgsIAorICAgIDEwMywgMjE3LCAyNTQsIDksIDIxOCwgMTAzLCAyNDAsIDE1OCwgOSwgMjE4LCAxMDMsIDI0MCwgMTYyLCA5LCAyMTgsIDEwMywgCisgICAgMjQwLCAyMzEsIDksIDIxOCwgMTAzLCAyNDAsIDE1OSwgOSwgMjE4LCAxMDMsIDIxNywgMTU1LCA5LCAyMTgsIDEwMywgMjQwLCAKKyAgICAxNjEsIDksIDIxOCwgMTAzLCAyNDAsIDE1NywgOSwgMjE4LCAxMDMsIDI0MCwgMjI5LCA5LCAyMTgsIDEwMywgMjQwLCAxNjAsIAorICAgIDksIDIxOCwgMTAzLCAyNDAsIDE1NiwgOSwgMjE4LCAxMDMsIDIzMCwgMjUsIDksIDIxOCwgMTAzLCAyNDIsIDYwLCA5LCAKKyAgICAyMTgsIDEwMywgMjIyLCA5MSwgOSwgMjE4LCAxMDMsIDIyNiwgMTA1LCA5LCAyMTgsIDEwMywgMjE5LCAyMSwgOSwgMjE4LCAKKyAgICAxMDMsIDI0OSwgNjAsIDksIDIxOCwgMTAzLCAyNDAsIDE2MywgOSwgMjE4LCAxMDMsIDI0MSwgMTkwLCA5LCAyMTgsIDEwMywgCisgICAgMjE3LCAxNjQsIDksIDIxOCwgMTAzLCAyMTcsIDIzMywgOSwgMjE4LCAxMDMsIDIxOCwgMTY4LCA5LCAyMTgsIDEwMywgMjIwLCAKKyAgICAxMTAsIDksIDIxOCwgMTAzLCAyMjUsIDIyNCwgOSwgMjE4LCAxMDMsIDIyNCwgOTgsIDksIDIxOCwgMTAzLCAyMTYsIDQzLCAKKyAgICA5LCAyMTgsIDEwMywgMjE3LCAxNTQsIDksIDIxOCwgMTAzLCAyMTcsIDI0NCwgOSwgMjE4LCAxMDMsIDI0MCwgMTcwLCA5LCAKKyAgICAyMTgsIDEwMywgMjQwLCAxNTUsIDksIDIxOCwgMTAzLCAyMjUsIDE0OSwgOSwgMjE4LCAxMDMsIDIyNCwgOTYsIDU2LCAxLCAKKyAgICA0LCAyMzMsIDIxNywgNTYsIDEsIDQsIDIxOSwgMTkxLCA1NiwgMSwgNCwgMjE4LCA4MywgNTYsIDEsIDQsIDExMSwgNTYsIDEsIAorICAgIDQsIDIyNywgMjM3LCA1NiwgMSwgNCwgMTYyLCA1NiwgMSwgNCwgMjQxLCAxODAsIDU2LCAxLCA0LCAyNDAsIDIyMiwgNTYsIAorICAgIDEsIDQsIDI0MSwgMjM4LCA1NiwgMSwgNCwgMjQxLCA2OCwgNTYsIDEsIDQsIDIzMCwgMTAyLCA1NiwgMSwgNCwgMjA1LCA1NiwgCisgICAgMSwgNCwgMjIzLCAzNSwgNTYsIDEsIDQsIDIyMiwgMTQwLCA1NiwgMSwgNCwgMjIzLCAxMjgsIDU2LCAxLCA0LCAyMjIsIAorICAgIDIxMSwgODgsIDI0LCAyMzQsIDU4LCA4OCwgMjQsIDIyOCwgMjI2LCA4OCwgMjQsIDIxNiwgMTAxLCA4OCwgMjQsIDIyMywgCisgICAgMjYsIDg4LCAyNCwgMjMwLCAyMTcsIDg4LCAyNCwgMjI1LCA5NSwgODgsIDI0LCAyMTksIDE0OCwgODgsIDI0LCAyMzYsIDU2LCAKKyAgICA4OCwgMjQsIDI1MCwgNDYsIDg4LCAyNCwgMjUwLCAxMDYsIDg4LCAyNCwgMjM0LCAxMTAsIDg4LCAyNCwgMjE2LCAxNzMsIAorICAgIDg4LCAyNCwgMjI1LCAxMzEsIDg4LCAyNCwgMjQxLCAxNzIsIDg4LCAyNCwgMjM0LCA1OSwgNjEsIDg4LCAyNCwgMjI4LCAKKyAgICAyMjcsIDYxLCA4OCwgMjQsIDIxNiwgMTAyLCA2MSwgODgsIDI0LCAyMjMsIDI3LCA2MSwgODgsIDI0LCAyMzAsIDIxOCwgNjEsIAorICAgIDg4LCAyNCwgMjI1LCA5NiwgNjEsIDg4LCAyNCwgMjE5LCAxNDksIDYxLCA4OCwgMjQsIDIzNiwgNTcsIDYxLCA4OCwgMjQsIAorICAgIDI1MCwgNDcsIDYxLCA4OCwgMjQsIDI1MCwgMTA3LCA2MSwgODgsIDI0LCAyMzQsIDExMSwgNjEsIDg4LCAyNCwgMjE2LCAKKyAgICAxNzQsIDYxLCA4OCwgMjQsIDIyNSwgMTMyLCA2MSwgODgsIDI0LCAyNDEsIDE3MywgNjEsIDg4LCAyNCwgMjUwLCA0NywgNzAsIAorICAgIDg4LCAyMzQsIDMsIDEzNSwgMjI2LCAyMTcsIDg4LCAyMzQsIDMsIDEzNSwgMTQ0LCAyNDAsIDIyMiwgODgsIDE1NCwgMTEwLCAKKyAgICA4OCwgMTU0LCAxMDUsIDg4LCAxNTQsIDE1OCwgODgsIDE1NCwgMTYxLCA4OCwgMTU0LCAxODksIDg4LCAxNTQsIDE5NCwgODgsIAorICAgIDE1NCwgMTk4LCA4OCwgMTU0LCAxOTUsIDg4LCAxNTQsIDIwMCwgODgsIDE1NCwgMjE2LCAyNDcsIDg4LCAxNTQsIDIzMCwgCisgICAgMTI4LCA4OCwgMTU0LCAyNDQsIDk2LCA4OCwgMTU0LCAyMTIsIDQwLCA4OCwgMTU0LCAyMTEsIDIxNCwgODgsIDE1NCwgMjMxLCAKKyAgICAzOSwgODgsIDE1NCwgMjQ1LCAyMjMsIDg4LCAxNTQsIDIxOCwgMzcsIDg4LCAxNTQsIDIxOCwgMTMyLCA4OCwgMTU0LCAyNDEsIAorICAgIDI0NCwgODgsIDE1NCwgMjE5LCA1NCwgODgsIDE1NCwgMjI5LCAyMDQsIDg4LCAxNTQsIDIxOSwgNCwgODgsIDE1NCwgMjQ0LCAKKyAgICAxMDIsIDg4LCAxNTQsIDI0OSwgMjAwLCA4OCwgMTU0LCAyMzMsIDEyNSwgODgsIDE1NCwgMjIzLCA3MSwgODgsIDE1NCwgCisgICAgMjUxLCAxNSwgODgsIDE1NCwgMjE4LCA4NywgODgsIDE1NCwgMjE4LCAyMCwgODgsIDE1NCwgMjQ1LCAxMjcsIDg4LCAxNTQsIAorICAgIDIyMywgNjMsIDg4LCAxNTQsIDI1NCwgMTUwLCA4OCwgMTU0LCAyNDQsIDEyOCwgODgsIDE1NCwgMjIzLCA2MSwgODgsIDE1NCwgCisgICAgMjIwLCAxNTYsIDg4LCAxNTQsIDIyMywgMTI3LCAzNywgMTU0LCAyMjQsIDEyLCAzNywgMTU0LCAyMzQsIDgwLCAzNywgMTU0LCAKKyAgICAyMjEsIDE5OCwgMzcsIDE1NCwgMjMzLCAyNTUsIDM3LCA1NCwgMjE2LCAyNDgsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIAorICAgIDM3LCA1NCwgMjE1LCA3NCwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMTYsIDE2MywgMjI2LCAxOTcsIDg1LCAKKyAgICAyMTgsIDIzNCwgMzcsIDU0LCAyNDQsIDE2LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDI0NCwgMTE1LCAyMjYsIAorICAgIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDIxOSwgMTEyLCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDIyMCwgCisgICAgMTE3LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAzNywgNTQsIDI0NSwgMTg1LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAKKyAgICAyMjUsIDI1MSwgNTAsIDM3LCA1NCwgMjE1LCA3NCwgMTEwLCAzNywgNTQsIDIxNSwgNzQsIDEwNSwgMzcsIDU0LCAyMTUsIAorICAgIDc0LCAxNTgsIDM3LCA1NCwgMjE1LCA3NCwgMTYxLCAzNywgNTQsIDIxNSwgNzQsIDE4OSwgMzcsIDU0LCAyMTUsIDc0LCAKKyAgICAxOTQsIDM3LCA1NCwgMjE1LCA3NCwgMTk4LCAzNywgNTQsIDIxNSwgNzQsIDE5NSwgMzcsIDU0LCAyMTUsIDc0LCAyMDAsIAorICAgIDM3LCA1NCwgMjE2LCAxNjIsIDM3LCA1NCwgMjE2LCAxNjMsIDExMCwgMzcsIDU0LCAyMTYsIDE2MywgMTA1LCAzNywgNTQsIAorICAgIDIxNiwgMTYzLCAxNTgsIDM3LCA1NCwgMjE2LCAxNjMsIDE2MSwgMzcsIDU0LCAyMTYsIDE2MywgMTg5LCAzNywgMjQsIDIzNCwgCisgICAgNTgsIDM3LCAyNCwgMjI4LCAyMjYsIDM3LCAyNCwgMjE2LCAxMDEsIDM3LCAyNCwgMjIzLCAyNiwgMzcsIDI0LCAyMzAsIAorICAgIDIxNywgMzcsIDI0LCAyMjUsIDk1LCAzNywgMjQsIDIxOSwgMTQ4LCAzNywgMjQsIDIzNiwgNTYsIDM3LCAyNCwgMjUwLCA0NiwgCisgICAgMzcsIDI0LCAyNTAsIDEwNiwgMzcsIDI0LCAyMzQsIDExMCwgMzcsIDI0LCAyMTYsIDE3MywgMzcsIDI0LCAyMjUsIDEzMSwgCisgICAgMzcsIDI0LCAyNDEsIDE3MiwgMzcsIDI0LCAyMzQsIDU5LCA2MSwgMzcsIDI0LCAyMjgsIDIyNywgNjEsIDM3LCAyNCwgMjE2LCAKKyAgICAxMDIsIDYxLCAzNywgMjQsIDIyMywgMjcsIDYxLCAzNywgMjQsIDIzMCwgMjE4LCA2MSwgMzcsIDI0LCAyMjUsIDk2LCA2MSwgCisgICAgMzcsIDI0LCAyMTksIDE0OSwgNjEsIDM3LCAyNCwgMjM2LCA1NywgNjEsIDM3LCAyNCwgMjUwLCA0NywgNjEsIDM3LCAyNCwgCisgICAgMjUwLCAxMDcsIDYxLCAzNywgMjQsIDIzNCwgMTExLCA2MSwgMzcsIDI0LCAyMTYsIDE3NCwgNjEsIDM3LCAyNCwgMjI1LCAKKyAgICAxMzIsIDYxLCAzNywgMjQsIDI0MSwgMTczLCA2MSwgMzcsIDIzNCwgMywgMTM1LCAyNTAsIDE0OCwgMzcsIDIzNCwgMywgCisgICAgMTM1LCAyMzUsIDQ3LCAzNywgMjQsIDIzNiwgNTcsIDcwLCAyMzQsIDMsIDIxOCwgMTU5LCA4NywgMzcsIDE1NCwgMTEwLCAKKyAgICAzNywgMTU0LCAxMDUsIDM3LCAxNTQsIDE1OCwgMzcsIDE1NCwgMTYxLCAzNywgMTU0LCAxODksIDM3LCAxNTQsIDE5NCwgMzcsIAorICAgIDE1NCwgMTk4LCAzNywgMTU0LCAxOTUsIDM3LCAxNTQsIDIwMCwgMzcsIDE1NCwgMjE2LCAyNDcsIDM3LCAxNTQsIDIzMCwgCisgICAgMTI4LCAzNywgMTU0LCAyNDQsIDk2LCAzNywgMTU0LCAyMTIsIDQwLCAzNywgMTU0LCAyMTEsIDIxNCwgMzcsIDE1NCwgMjMxLCAKKyAgICAzOSwgMzcsIDE1NCwgMjQ1LCAyMjMsIDM3LCAxNTQsIDIxOCwgMzcsIDM3LCAxNTQsIDIxOCwgMTMyLCAzNywgMTU0LCAyNDEsIAorICAgIDI0NCwgMzcsIDE1NCwgMjE5LCA1NCwgMzcsIDE1NCwgMjI5LCAyMDQsIDM3LCAxNTQsIDIxOSwgNCwgMzcsIDE1NCwgMjQ0LCAKKyAgICAxMDIsIDM3LCAxNTQsIDI0OSwgMjAwLCAzNywgMTU0LCAyMzMsIDEyNSwgMzcsIDE1NCwgMjIxLCAxNzQsIDM3LCAxNTQsIAorICAgIDIzMSwgMTg5LCAzNywgMTU0LCAyNDQsIDEzNywgMzcsIDE1NCwgMjE4LCA0OSwgMzcsIDE1NCwgMjQ1LCAzNCwgMzcsIDE1NCwgCisgICAgMjI0LCAxODcsIDM3LCAxNTQsIDI1MywgMTk2LCAzNywgMTU0LCAyMzUsIDE1OSwgMzcsIDE1NCwgMjIzLCA2MSwgMzcsIAorICAgIDE1NCwgMjQ5LCAxNjQsIDM3LCAxNTQsIDI0OSwgMTU1LCAzNywgMTU0LCAyNDEsIDE2NSwgMzcsIDE1NCwgMjUwLCAxNzQsIAorICAgIDM3LCAxNTQsIDIzMiwgMTEwLCAzNywgMTU0LCAyMzMsIDQ2LCAzNywgMTU0LCAyMjIsIDI1MSwgMzcsIDE1NCwgMjMxLCA4MywgCisgICAgMzcsIDE1NCwgMjIzLCA4NywgMzcsIDE1NCwgMjE4LCA4NywgMzcsIDE1NCwgMjE4LCAyMCwgMzcsIDE1NCwgMjQ1LCAxMjcsIAorICAgIDM3LCAxNTQsIDIyMywgNjMsIDM3LCAxNTQsIDI1NCwgMTUwLCAzNywgMTU0LCAyMjgsIDIxMiwgMzcsIDU0LCAyMTYsIDE2MywgCisgICAgMTk0LCAzNywgNTQsIDIxNiwgMTYzLCAxOTgsIDM3LCA1NCwgMjE2LCAxNjMsIDE5NSwgMzcsIDU0LCAyMTYsIDE2MywgMjAwLCAKKyAgICAzNywgNTQsIDI0NCwgMTUsIDM3LCA1NCwgMjQ0LCAxNiwgMTEwLCAzNywgNTQsIDI0NCwgMTYsIDEwNSwgMzcsIDU0LCAyNDQsIAorICAgIDE2LCAxNTgsIDM3LCA1NCwgMjQ0LCAxNiwgMTYxLCAzNywgNTQsIDI0NCwgMTYsIDE4OSwgMzcsIDU0LCAyNDQsIDE2LCAKKyAgICAxOTQsIDM3LCA1NCwgMjQ0LCAxNiwgMTk4LCAzNywgNTQsIDI0NCwgMTYsIDE5NSwgMzcsIDU0LCAyNDQsIDE2LCAyMDAsIAorICAgIDM3LCA1NCwgMjQ0LCAxMTQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzNSwgMTMzLCAxMDksIDIxNywgMywgMTYsIDMxLCAKKyAgICAyNDQsIDE0OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjMxLCAxNjAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI1NCwgNDcsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzMSwgMTMyLCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzUsIDQ1LCAxMDksIDIxNywgMywgCisgICAgMTYsIDMxLCAyMzUsIDQ2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNTMsIDE4OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjIwLCAKKyAgICAxMzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyNiwgMjM5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjgsIDQwLCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDgsIDg1LCA0MiwgMjQxLCAxOTAsIDQyLCAyNDUsIDg4LCA0MiwgMjQ1LCA0MywgMjMyLCAKKyAgICAyMTksIDIzMiwgMjQwLCA1MCwgMzcsIDU2LCA2MSwgMzcsIDU2LCA3MywgMzcsIDU2LCA3MCwgMzcsIDU2LCA3NSwgMzcsIAorICAgIDU2LCA3NiwgMzcsIDU2LCAxNzYsIDM3LCA1NiwgMjM0LCA5MiwgMzcsIDU2LCAyMzMsIDIxNywgMzcsIDU2LCAyMzQsIDE4MiwgCisgICAgMzcsIDU2LCAyMzQsIDI4LCAzNywgNTYsIDIwNiwgMzcsIDU2LCAyMTksIDE5MSwgMzcsIDU2LCAyMTgsIDgzLCAzNywgNTYsIAorICAgIDIyMSwgMTgxLCAzNywgNTYsIDIxOSwgNTgsIDM3LCA1NiwgMjE3LCAxMDUsIDM3LCA1NiwgMjE2LCAxMTcsIDM3LCA1NiwgCisgICAgMjE1LCAxMTgsIDM3LCA1NiwgMjE3LCAyMiwgMzcsIDU2LCAxMTEsIDM3LCA1NiwgMTk3LCAzNywgNTYsIDIyOCwgMjMzLCAKKyAgICAzNywgNTYsIDIyNywgMjM3LCAzNywgNTYsIDIyOSwgMTA3LCAzNywgNTYsIDIyOCwgNzQsIDM3LCA1NiwgMTYyLCAzNywgNTYsIAorICAgIDI0MSwgMTgwLCAzNywgNTYsIDI0MCwgMjIyLCAzNywgNTYsIDI0MSwgMjM4LCAzNywgNTYsIDI0MSwgNjgsIDM3LCA1NiwgCisgICAgMTg0LCAzNywgNTYsIDIzMCwgMjMwLCAzNywgNTYsIDIzMCwgMTAyLCAzNywgNTYsIDIzMSwgOTEsIDM3LCA1NiwgMjMwLCAKKyAgICAxNjEsIDM3LCA1NiwgMTkxLCAzNywgNTYsIDIxMCwgMjEyLCAzNywgNTYsIDIxMCwgMjQ0LCAzNywgNTYsIDIwNSwgMzcsIAorICAgIDU2LCAyMjMsIDM1LCAzNywgNTYsIDIyMiwgMTQwLCAzNywgNTYsIDIyMywgMTI4LCAzNywgNTYsIDIyMiwgMjExLCAzNywgCisgICAgNTYsIDIxMiwgNjUsIDM3LCA1NiwgMjExLCAyNTAsIDM3LCA1NiwgMjEyLCAyMiwgMzcsIDU2LCAyMTEsIDIyNywgNDIsIAorICAgIDI1NCwgNzEsIDQyLCAyNTMsIDIzOSwgNDIsIDI1NCwgOTUsIDQyLCAyNTUsIDMxLCA0MiwgMjM1LCAyMjYsIDQyLCAyMzUsIAorICAgIDE5NiwgNDIsIDIxNCwgMTY2LCA0MiwgMjQ1LCA2NiwgNDIsIDI0NSwgMjA2LCA0MiwgMjI2LCAxODYsIDQyLCAyMjYsIDE4MCwgCisgICAgNDIsIDIzNCwgMjQ1LCA0MiwgMjM0LCAyMTQsIDQyLCAyMzQsIDIxMSwgNDIsIDI0MywgOTIsIDQyLCAyNDMsIDEwMSwgNDIsIAorICAgIDI0MiwgMjA0LCA0MiwgMjQyLCAyMDAsIDQyLCAyMzMsIDE1MCwgNDIsIDI0MiwgMTkzLCA0MiwgMjM0LCA3MiwgNDIsIDIzNCwgCisgICAgNzEsIDQyLCAyMzQsIDcwLCA0MiwgMjM0LCA2OSwgNDIsIDI0MiwgODYsIDQyLCAyNDIsIDg1LCA0MiwgMjMzLCAxOTMsIDQyLCAKKyAgICAyMzMsIDE5NSwgNDIsIDIzNCwgMTc4LCA0MiwgMjM0LCAxLCA0MiwgMjM0LCA4LCA0MiwgMjIyLCAxNiwgNDIsIDIyMSwgCisgICAgMjM3LCA0MiwgMjE5LCAxMjksIDQyLCAyMjAsIDE0MSwgNDIsIDIyMCwgMTQwLCA0MiwgMjQ4LCAyMTgsIDQyLCAyNDgsIDM2LCAKKyAgICA0MiwgMjQ3LCAxMjEsIDQyLCAyMTYsIDMyLCA0MiwgMjI5LCAyMDAsIDQyLCAyMjgsIDQxLCA0MiwgMjQyLCAzMiwgNDIsIAorICAgIDIyNiwgODQsIDQyLCAyMjYsIDgzLCA0MiwgMjUyLCAxODgsIDQyLCAyMjUsIDEwNSwgNDIsIDIyNSwgNjksIDQyLCAyMjUsIAorICAgIDcwLCA0MiwgMjUxLCAyMzQsIDQyLCAyNDAsIDIyMSwgNDIsIDI0MCwgMjE3LCA0MiwgMjUxLCA5MSwgNDIsIDI0MCwgMjA0LCAKKyAgICA0MiwgMjQxLCAyMTUsIDQyLCAyMjUsIDE1OSwgNDIsIDIyNSwgMTk0LCA0MiwgMjQxLCAxOTgsIDQyLCAyMjUsIDE5MSwgNDIsIAorICAgIDIyNSwgMjA3LCA0MiwgMjUyLCA2MSwgNDIsIDIyNSwgNiwgNDIsIDI1MSwgMTgwLCA0MiwgMjQxLCA1NiwgNDIsIDIyNCwgCisgICAgMjUwLCA0MiwgMjQxLCA0OCwgNDIsIDI0MSwgNTAsIDQyLCAyMzEsIDIwMSwgNDIsIDIzMSwgMTk3LCA0MiwgMjMxLCAyMDYsIAorICAgIDQyLCAyMzEsIDE1MCwgNDIsIDIzMSwgMTc1LCA0MiwgMjMwLCAxOTcsIDQyLCAyMzAsIDE3NiwgNDIsIDIzMCwgMTc1LCA0MiwgCisgICAgMjMxLCA3NCwgNDIsIDIzMSwgNzEsIDQyLCAyMzEsIDc1LCA0MiwgMjExLCAxMDIsIDQyLCAyMTEsIDEwMCwgNDIsIDIxMCwgCisgICAgMjAxLCA0MiwgMjIyLCAyMjYsIDQyLCAyMjIsIDIzMCwgNDIsIDIyMiwgMTE3LCA0MiwgMjIyLCAxMTEsIDQyLCAyMjMsIDg1LCAKKyAgICA0MiwgMjIzLCA4MiwgNDIsIDIxMiwgMzgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTAsIDg2LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTEwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTA1LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTU4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTYxLCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTg5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTk0LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTk4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMTk1LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjAwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE2LCAyNDcsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDUsIDE2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIAorICAgIDIxNSwgNzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTYsIDE2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCisgICAgMjQwLCAyMzksIDI0NCwgNSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDI0NCwgMTE4LCAxMDksIDIxNywgMywgCisgICAgMTYsIDMxLCAyNDAsIDIzOSwgMjE5LCAxMTksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMjAsIDExOSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDI0NSwgMTkwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjI4LCAKKyAgICAxOTcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDczLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIAorICAgIDIzOSwgMjE1LCA2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNjMsIDEwOSwgMjE3LCAzLCAxNiwgCisgICAgMzEsIDI0MCwgMjM5LCAyMTUsIDY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA2OSwgNDIsIDI0MCwgCisgICAgMjMwLCA0MiwgMjQ4LCAyMjEsIDQyLCAyNTMsIDE5MiwgNDIsIDEzMCwgNDIsIDIyNiwgMTI1LCA0MiwgMjI1LCAyMjUsIDQyLCAKKyAgICAyNDcsIDE0NywgNDIsIDI0NywgMTQ4LCAyMTgsIDIzMywgNDIsIDI0NywgMTQ4LCAyNDksIDEwOCwgNDIsIDIzNSwgMTU2LCAKKyAgICA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDI0MSwgMjE2LCA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDIxNywgMTc0LCA0MiwgCisgICAgMjQ1LCA5MSwgMjI5LCAyMDUsIDIxNywgNzQsIDQyLCAyNDUsIDkxLCAyMjksIDIwNSwgMjMxLCA3MCwgNDIsIDI0OSwgMTU3LCAKKyAgICA0MiwgMjI2LCA5MCwgMjU0LCAxMjUsIDQyLCAxOTcsIDQyLCAyMzAsIDEwMywgNjEsIDQyLCAxODQsIDQyLCAxNzYsIDQyLCAKKyAgICAyMzQsIDE4NSwgNDIsIDIzMSwgMTI5LCA0MiwgMjQzLCA4MCwgNDIsIDI1MSwgMTgsIDQyLCAyMzQsIDE4NCwgNDIsIDIyNSwgCisgICAgMTUwLCA0MiwgMjI5LCA4MSwgNDIsIDIzMCwgMTAzLCAyNDUsIDYsIDQyLCAyMzAsIDEwMywgMjQzLCAyMDIsIDQyLCAyMzEsIAorICAgIDE1LCA0MiwgMjM0LCAxMzQsIDQyLCAyNDAsIDE2MywgNDIsIDIzNCwgOTQsIDQyLCAyMzAsIDIzMiwgNDIsIDI0MiwgMjE2LCAKKyAgICA0MiwgMjE2LCAxMTksIDQyLCAyMzAsIDEwMywgMTU2LCA0MiwgMjMwLCAxNjksIDQyLCAyNDcsIDE1NywgNDIsIDIzNCwgNDAsIAorICAgIDQyLCAyNDQsIDQ1LCA0MiwgMjI4LCAxMTIsIDQyLCAyMzAsIDEwMywgMTkzLCA0MiwgMjMwLCAxNjYsIDQyLCAyNDksIDIzOSwgCisgICAgNDIsIDIzNCwgMzQsIDQyLCAyMzAsIDE2NywgMjE4LCAyMzMsIDQyLCAyNDksIDI0MCwgMjE4LCAyMzMsIDQyLCAyMzIsIDUwLCAKKyAgICAyMTgsIDIzMywgNDIsIDIzNCwgMzUsIDIxOCwgMjMzLCA0MiwgMjMwLCAxNjcsIDI0OSwgMTA4LCA0MiwgMjQ5LCAyNDAsIAorICAgIDI0OSwgMTA4LCA0MiwgMjMyLCA1MCwgMjQ5LCAxMDgsIDQyLCAyMzQsIDM1LCAyNDksIDEwOCwgNDIsIDIzMiwgNTAsIDExNywgCisgICAgMjIyLCA5MSwgNDIsIDIzMiwgNTAsIDExNywgMjIyLCA5MiwgMjE4LCAyMzMsIDQyLCAxOTAsIDQyLCAyMzMsIDI1MSwgNDIsIAorICAgIDIzMCwgMTA1LCA0MiwgMjQyLCAxNTEsIDQyLCAyMjMsIDE3NiwgNDIsIDIyMywgMTc3LCAxMTcsIDIyMiwgOTEsIDQyLCAKKyAgICAyMjMsIDE3NywgMTE3LCAyMjIsIDkyLCAyMTgsIDIzMywgNDIsIDIyNCwgMTYyLCA0MiwgMjI4LCAxMywgNDIsIDIzMCwgCisgICAgMTAzLCAyMjIsIDkxLCA0MiwgMjMwLCAxMDQsIDQyLCAyMjQsIDExNiwgNDIsIDIyNywgMTc2LCA0MiwgMjMwLCAxMDMsIAorICAgIDIxNCwgMTA1LCA0MiwgMjMwLCA0OSwgNDIsIDIzMywgMTg1LCA0MiwgMjMwLCA1MCwgMjMxLCA3NCwgNDIsIDIyNCwgMTE1LCAKKyAgICA0MiwgMjI3LCAxNzUsIDQyLCAyMzAsIDEwMywgMjEyLCA5OCwgNDIsIDIzMCwgNDMsIDQyLCAyMzMsIDE4MywgNDIsIDIzMCwgCisgICAgNDQsIDIzMSwgNzQsIDQyLCAyMzUsIDI0LCAyMjYsIDIyMCwgNDIsIDIzMiwgNTAsIDIyNiwgMjIwLCA0MiwgMjU0LCAxMzYsIAorICAgIDQyLCAyNTEsIDE2MCwgNDIsIDI1MCwgMjE0LCA0MiwgMjUwLCAxOTEsIDQyLCAyNTEsIDY3LCAxMTcsIDIzNCwgMTM0LCA0MiwgCisgICAgMjQ5LCAyMzgsIDQyLCAyNDgsIDE0MiwgNDIsIDI0MiwgNzIsIDQyLCAxNjIsIDQyLCAyNDAsIDIzMSwgNDIsIDIzNSwgMjU1LCAKKyAgICA0MiwgMjM0LCA0NywgNDIsIDIzNCwgMzUsIDI1MCwgMjUwLCA0MiwgMjMzLCAyMTksIDQyLCAyMzIsIDE1OSwgNDIsIDIzMiwgCisgICAgMTU4LCA0MiwgMjMyLCAxNDcsIDQyLCAyMzIsIDYzLCA0MiwgMjMxLCAxMzAsIDIxOSwgNzksIDQyLCAyMzAsIDE5NiwgNDIsIAorICAgIDIzMCwgMTUyLCA0MiwgMjI1LCAxNDgsIDQyLCAyMjUsIDE5LCA0MiwgMjI0LCAyMTksIDQyLCAyMjQsIDIxNywgNDIsIDIxOCwgCisgICAgMjI3LCA0MiwgMjE4LCAyLCA0MiwgMjEyLCAyNCwgNDIsIDIxNCwgMTA2LCAxMTcsIDE5MywgNDIsIDExNSwgMTE3LCAxOTMsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxMTAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxMDUsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxNTgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxNjEsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxODksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxOTQsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxOTgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAxOTUsIAorICAgIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMDAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIAorICAgIDI0NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NSwgMTY3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIAorICAgIDE0NiwgMjE1LCA3NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNiwgMTY0LCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDgsIDE0NiwgMjQ0LCA1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjQ0LCAxMTgsIDEwOSwgMjE3LCAKKyAgICAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTksIDExOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIyMCwgMTE5LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjQ1LCAxOTAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAKKyAgICAyMjgsIDE5NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNzMsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAorICAgIDI0OCwgMTQ2LCAyMTUsIDY3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2MywgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY5LCAxMDksIAorICAgIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA3MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgCisgICAgNjUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIAorICAgIDE0NiwgMjE1LCA3MiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjgsIDEwOSwgMjE3LCAzLCAxNiwgCisgICAgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2MiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNiwgMTYxLCA0MiwgMjQzLCAKKyAgICAxMTgsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI0OSwgMTQwLCAyNDEsIDIyMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgCisgICAgMjIzLCAxMjIsIDI0NSwgMjIzLCAyNDEsIDE5MiwgMzEsIDI0NywgMjMxLCAyNTMsIDIwNywgMjE2LCAxOTYsIDI1MiwgNTYsIAorICAgIDI0MSwgMTkyLCAzMSwgMjEwLCAyMjMsIDI0NCwgMzgsIDI0MSwgMTkyLCAzMSwgMjEyLCA1OSwgMjQxLCAxOTIsIDMxLCAKKyAgICAyNDksIDIwMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjU0LCAzLCAyNDEsIDE5MiwgMzEsIDI0MSwgNjAsIDIxNiwgMzgsIAorICAgIDI0MSwgMTkyLCAzMSwgNCwgMjE3LCA2MSwgMjQxLCAxOTIsIDMxLCAyMTUsIDIzNywgMjQxLCAxOTIsIDMxLCAyMjUsIDIxOSwgCisgICAgMjQxLCAxOTIsIDMxLCAyMTgsIDE1OCwgMjQxLCAxOTIsIDMxLCAyNDQsIDEzOSwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgCisgICAgMjI0LCAyNDAsIDI0MSwgMTkyLCAzMSwgMjMwLCAxNTUsIDI0MSwgMTkyLCAzMSwgMjQ1LCAxMjYsIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ0LCAzOSwgMjQxLCAxOTIsIDMxLCAyMTEsIDIwNywgMjI2LCAxOTcsIDIxNiwgMTk2LCAyNDgsIDg2LCAyNDEsIDE5MiwgCisgICAgMzEsIDI1NCwgNTEsIDI0MSwgMTkyLCAzMSwgMjQ5LCAxODUsIDI0MSwgMTkyLCAzMSwgMjUxLCAyMjcsIDIxNiwgMTM4LCAKKyAgICAyNDEsIDE5MiwgMzEsIDI0MiwgMTQ5LCAyNDEsIDE5MiwgMzEsIDIxOCwgMjQ1LCAyNTQsIDcwLCAyNDEsIDE5MiwgMzEsIAorICAgIDIyMywgNTMsIDI0MSwgMTkyLCAzMSwgMjM1LCAyMjAsIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIxNywgNjEsIDI0MSwgCisgICAgMTkyLCAzMSwgMjMwLCAxMTEsIDI0OSwgMTU5LCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMjQsIDE5NywgMjQxLCAxOTIsIAorICAgIDMxLCAyMTYsIDE5NiwgMjU1LCAxOCwgMjEyLCA0MCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUwLCA4LCAyNDQsIDk2LCAKKyAgICAyNDEsIDE5MiwgMzEsIDIzNSwgMjMzLCAyNDEsIDE5MiwgMzEsIDI0NiwgNTcsIDI0MSwgMTkyLCAzMSwgMjIzLCA1NiwgCisgICAgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjI0LCAyMjQsIDI0MSwgMTkyLCAzMSwgMjI0LCAxNzcsIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ4LCAxNjEsIDY0LCAyMTYsIDE5NiwgMjMyLCAyMzAsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI0NCwgMTc0LCAyNDEsIAorICAgIDE5MiwgMzEsIDIyNiwgMTYzLCAyNDEsIDE5MiwgMzEsIDIyNiwgMjQ0LCAyNDEsIDE5MiwgMzEsIDI0OCwgNTksIDI0MSwgCisgICAgMTkyLCAzMSwgMjQ4LCA3OSwgMjQxLCAxOTIsIDMxLCAyMzUsIDI0NywgMjQxLCAxOTIsIDMxLCAyNTEsIDE0OSwgMjQxLCAKKyAgICAxOTIsIDMxLCAyNDksIDIyMSwgMjE2LCA0MiwgMjMxLCA3NiwgMjQxLCAxOTIsIDMxLCAyNDMsIDg3LCAyMTYsIDM4LCAyNDEsIAorICAgIDE5MiwgMzEsIDIyNCwgMTI1LCAyMTQsIDE1NCwgMjQxLCAxOTIsIDMxLCAyMjYsIDE2MiwgMjQxLCAxOTIsIDMxLCAyMTYsIAorICAgIDE5NiwgMjEyLCAxMywgMjQxLCAxOTIsIDMxLCAyMjMsIDQ1LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNTAsIDIyMCwgCisgICAgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUzLCAyNTUsIDIxNiwgMTMzLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyMzQsIAorICAgIDE3OSwgMjE4LCAxMzQsIDIzMCwgMTE1LCAyNDEsIDE5MiwgMzEsIDI0OCwgMzIsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIzMSwgMTUyLCAyMzEsIDIwMiwgMjQxLCAxOTIsIDMxLCAyNTUsIDE5LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyMTIsIAorICAgIDU0LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDMsIDQ3LCAyMTEsIDIzOSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgCisgICAgMjM1LCA1MiwgMjMzLCAxMDcsIDI0MSwgMTkyLCAzMSwgMjQ3LCAxODQsIDI0MSwgMTkyLCAzMSwgMjMyLCAyMjAsIDI0MSwgCisgICAgMTkyLCAzMSwgMjM1LCAyMjMsIDIxNSwgMTg3LCAyNDEsIDE5MiwgMzEsIDQsIDIyNCwgMTk3LCAyNDEsIDE5MiwgMzEsIAorICAgIDI1NCwgMjE3LCAyNDksIDIxMiwgMjQxLCAxOTIsIDMxLCAyNTIsIDU5LCAyNDksIDIxMiwgOCwgMywgMjM1LCAxNjAsIDgsIAorICAgIDMsIDIzNSwgMTUzLCA4LCAzLCA3MywgOCwgMywgMjM1LCAxODIsIDgsIDMsIDIzNiwgNTgsIDgsIDMsIDIzNiwgNDEsIDgsIAorICAgIDMsIDIzNiwgNjAsIDgsIDMsIDIzNiwgNTksIDgsIDMsIDI1MywgMjA2LCA4LCAzLCAyNTMsIDE2OSwgOCwgMywgNjEsIDgsIAorICAgIDMsIDI1NCwgNzIsIDgsIDMsIDIxNCwgMTY0LCA4LCAzLCAyMTQsIDE2NywgOCwgMywgMjE0LCAxNjUsIDgsIDMsIDIyNiwgCisgICAgMTQwLCA4LCAzLCAyMjYsIDExNCwgOCwgMywgNzYsIDgsIDMsIDIyNiwgMTc1LCA4LCAzLCAyNDUsIDM1LCA4LCAzLCA3NSwgCisgICAgOCwgMywgMjExLCAxOTUsIDgsIDMsIDI1MSwgMjI4LCA4LCAzLCAyNTEsIDIyNSwgOCwgMywgMjUyLCA2LCA4LCAzLCAyNTEsIAorICAgIDIzOCwgOCwgMywgMjUxLCAyNTEsIDgsIDMsIDI1MSwgMjUwLCA4LCAzLCAyNTEsIDI1MywgOCwgMywgMjUxLCAyNTIsIDgsIAorICAgIDMsIDI1MiwgMTIxLCA4LCAzLCAyNTIsIDExMywgOCwgMywgMjUyLCAxOTEsIDgsIDMsIDI1MiwgMTQyLCA4LCAzLCAyNTEsIAorICAgIDEwMSwgOCwgMywgMjUxLCAxMDUsIDgsIDMsIDI1MSwgMTAyLCA4LCAzLCAyNTEsIDE3OSwgOCwgMywgMjUxLCAxNjMsIDgsIAorICAgIDMsIDI1MSwgMjA1LCA4LCAzLCAyNTEsIDE4NSwgOCwgMywgMjUyLCAyMSwgOCwgMywgMjUyLCA3NSwgOCwgMywgMjUyLCAzMywgCisgICAgOCwgMywgMjUxLCA4NywgOCwgMywgMjUxLCA4NCwgOCwgMywgMjUxLCAxMjUsIDgsIDMsIDI1MSwgMTAwLCA4LCAzLCAyNTEsIAorICAgIDk0LCA4LCAzLCAyNTEsIDk4LCA4LCAzLCAyNTEsIDcyLCA4LCAzLCAyNTEsIDcwLCA4LCAzLCAyNTEsIDc3LCA4LCAzLCAKKyAgICAyNTEsIDc1LCA4LCAzLCAyNTEsIDczLCA4LCAzLCAyNTEsIDc0LCA4LCAzLCAyMjUsIDQ5LCA4LCAzLCAyMjUsIDQ1LCA4LCAKKyAgICAzLCAyMjUsIDEwOCwgOCwgMywgMjI1LCA1OSwgOCwgMywgMjI1LCA3NSwgOCwgMywgMjI1LCAxMDIsIDgsIDMsIDIyNSwgOTgsIAorICAgIDgsIDMsIDIyNSwgMjQwLCA4LCAzLCAyMjUsIDIzMCwgOCwgMywgMTkwLCA4LCAzLCAyMjYsIDIxLCA4LCAzLCAyMjQsIDEzNSwgCisgICAgOCwgMywgMjI0LCAxMzcsIDgsIDMsIDIyNCwgMTM2LCA4LCAzLCAyMjQsIDIzMywgOCwgMywgMjI0LCAyMjIsIDgsIDMsIAorICAgIDIyNSwgMTYsIDgsIDMsIDIyNCwgMjQ1LCA4LCAzLCAyMjQsIDEyMSwgOCwgMywgMjI0LCAxMTcsIDgsIDMsIDIyNCwgMTUwLCAKKyAgICA4LCAzLCAyMjQsIDEzNCwgOCwgMywgMjI0LCAxMjYsIDgsIDMsIDIyNCwgMTMyLCA4LCAzLCAyMjQsIDEwMCwgOCwgMywgCisgICAgMjI0LCA5OSwgOCwgMywgMjI0LCAxMDQsIDgsIDMsIDIyNCwgMTAzLCA4LCAzLCAyMjQsIDEwMSwgOCwgMywgMjI0LCAxMDIsIAorICAgIDgsIDMsIDI1MiwgOTYsIDgsIDMsIDI1MiwgOTUsIDgsIDMsIDI1MiwgMTAyLCA4LCAzLCAyNTIsIDk3LCA4LCAzLCAyNTIsIAorICAgIDk5LCA4LCAzLCAyNTIsIDk4LCA4LCAzLCAyNTIsIDEwMSwgOCwgMywgMjUyLCAxMDAsIDgsIDMsIDI1MiwgMTA4LCA4LCAzLCAKKyAgICAyNTIsIDEwNywgOCwgMywgMjUyLCAxMTEsIDgsIDMsIDI1MiwgMTA5LCA4LCAzLCAyNTIsIDg3LCA4LCAzLCAyNTIsIDg5LCAKKyAgICA4LCAzLCAyNTIsIDg4LCA4LCAzLCAyNTIsIDkyLCA4LCAzLCAyNTIsIDkxLCA4LCAzLCAyNTIsIDk0LCA4LCAzLCAyNTIsIAorICAgIDkzLCA4LCAzLCAyNTIsIDEwMywgOCwgMywgMjUyLCAxMDYsIDgsIDMsIDI1MiwgMTA0LCA4LCAzLCAyNTIsIDgzLCA4LCAzLCAKKyAgICAyNTIsIDgyLCA4LCAzLCAyNTIsIDkwLCA4LCAzLCAyNTIsIDg2LCA4LCAzLCAyNTIsIDg0LCA4LCAzLCAyNTIsIDg1LCA4LCAKKyAgICAzLCAyNTIsIDc5LCA4LCAzLCAyNTIsIDc4LCA4LCAzLCAyNTIsIDgxLCA4LCAzLCAyNTIsIDgwLCA4LCAzLCAyMjksIDE2OSwgCisgICAgOCwgMywgMjI5LCAxNjgsIDgsIDMsIDIyOSwgMTc0LCA4LCAzLCAyMjksIDE3MCwgOCwgMywgMjI5LCAxNzEsIDgsIDMsIAorICAgIDIyOSwgMTczLCA4LCAzLCAyMjksIDE3MiwgOCwgMywgMjI5LCAxNzcsIDgsIDMsIDIyOSwgMTc2LCA4LCAzLCAyMjksIDE3OSwgCisgICAgOCwgMywgMjI5LCAxNzgsIDgsIDMsIDIyOSwgMTY1LCA4LCAzLCAyMjksIDE2NCwgOCwgMywgMjI5LCAxNjcsIDgsIDMsIAorICAgIDIyOSwgMTY2LCA4LCAzLCAyMjksIDE1OCwgOCwgMywgMjI5LCAxNTcsIDgsIDMsIDIyOSwgMTYyLCA4LCAzLCAyMjksIDE2MSwgCisgICAgOCwgMywgMjI5LCAxNTksIDgsIDMsIDIyOSwgMTYwLCA4LCAzLCAyMjksIDE1MiwgOCwgMywgMjI5LCAxNTEsIDgsIDMsIAorICAgIDIyOSwgMTU2LCA4LCAzLCAyMjksIDE1NSwgOCwgMywgMjI5LCAxNTMsIDgsIDMsIDIyOSwgMTU0LCA4LCAzLCAyNDEsIDExMCwgCisgICAgOCwgMywgMjQxLCAxMDksIDgsIDMsIDI0MSwgMTE1LCA4LCAzLCAyNDEsIDExMSwgOCwgMywgMjQxLCAxMTIsIDgsIDMsIAorICAgIDI0MSwgMTE0LCA4LCAzLCAyNDEsIDExMywgOCwgMywgMjQxLCAxMTgsIDgsIDMsIDI0MSwgMTE3LCA4LCAzLCAyNDEsIDEyMCwgCisgICAgOCwgMywgMjQxLCAxMTksIDgsIDMsIDI0MSwgMTAxLCA4LCAzLCAyNDEsIDEwMywgOCwgMywgMjQxLCAxMDIsIDgsIDMsIAorICAgIDI0MSwgMTA2LCA4LCAzLCAyNDEsIDEwNSwgOCwgMywgMjQxLCAxMDgsIDgsIDMsIDI0MSwgMTA3LCA4LCAzLCAyNDEsIDk3LCAKKyAgICA4LCAzLCAyNDEsIDk2LCA4LCAzLCAyNDEsIDEwNCwgOCwgMywgMjQxLCAxMDAsIDgsIDMsIDI0MSwgOTgsIDgsIDMsIDI0MSwgCisgICAgOTksIDgsIDMsIDI0MSwgOTEsIDgsIDMsIDI0MSwgOTUsIDgsIDMsIDI0MSwgOTQsIDgsIDMsIDI0MSwgOTIsIDgsIDMsIAorICAgIDI0MSwgOTMsIDgsIDMsIDIzMCwgMTcyLCA4LCAzLCAyMzAsIDE3MSwgOCwgMywgMjMwLCAyMzAsIDgsIDMsIDIzMCwgMTc4LCAKKyAgICA4LCAzLCAyMzAsIDIwMywgOCwgMywgMjMwLCAyMjEsIDgsIDMsIDIzMCwgMjE5LCA4LCAzLCAyMzEsIDEzOSwgOCwgMywgCisgICAgMjMxLCAxMzQsIDgsIDMsIDE4NCwgOCwgMywgMjMxLCAxNzIsIDgsIDMsIDIzMCwgNzQsIDgsIDMsIDIzMCwgNzMsIDgsIDMsIAorICAgIDIzMCwgNzcsIDgsIDMsIDIzMCwgNzUsIDgsIDMsIDIzMCwgMTIxLCA4LCAzLCAyMzAsIDEwNywgOCwgMywgMjMwLCAxNjEsIAorICAgIDgsIDMsIDIzMCwgMTI2LCA4LCAzLCAyMzEsIDI2LCA4LCAzLCAyMzEsIDkxLCA4LCAzLCAyMzAsIDU1LCA4LCAzLCAyMzAsIAorICAgIDUxLCA4LCAzLCAyMzAsIDEwMiwgOCwgMywgMjMwLCA3MCwgOCwgMywgMjMwLCA2MywgOCwgMywgMjMwLCA2OCwgOCwgMywgCisgICAgMjMwLCAyOCwgOCwgMywgMjMwLCAyNywgOCwgMywgMjMwLCAzMywgOCwgMywgMjMwLCAzMCwgOCwgMywgMjQ0LCA4MywgOCwgCisgICAgMywgMjQ0LCA3OCwgOCwgMywgMjQ0LCAxMjEsIDgsIDMsIDI0NCwgOTgsIDgsIDMsIDI0NCwgMTY3LCA4LCAzLCAyNDQsIAorICAgIDE1OCwgOCwgMywgMjQ0LCAxOTYsIDgsIDMsIDI0NCwgMTcwLCA4LCAzLCAyNDQsIDMsIDgsIDMsIDI0NCwgNDMsIDgsIDMsIAorICAgIDI0NCwgMjcsIDgsIDMsIDI0MywgMjE4LCA4LCAzLCAyNDMsIDIxNywgOCwgMywgMjQzLCAyMzQsIDgsIDMsIDI0MywgMjIzLCAKKyAgICA4LCAzLCAyNDMsIDIyMSwgOCwgMywgMjQzLCAyMjIsIDgsIDMsIDI0MywgMjA1LCA4LCAzLCAyNDMsIDIwNCwgOCwgMywgCisgICAgMjQzLCAyMDgsIDgsIDMsIDI0MywgMjA2LCA4LCAzLCAyMTMsIDE0NCwgOCwgMywgMjEzLCAxMzksIDgsIDMsIDIxMywgMTc2LCAKKyAgICA4LCAzLCAyMTMsIDE1MywgOCwgMywgMjEzLCAxNjYsIDgsIDMsIDIxMywgMTYzLCA4LCAzLCAyMTMsIDE2OCwgOCwgMywgCisgICAgMjEzLCAxNjcsIDgsIDMsIDIxNCwgNywgOCwgMywgMjE0LCAyLCA4LCAzLCAyMTQsIDI3LCA4LCAzLCAyMTQsIDE4LCA4LCAzLCAKKyAgICAyMTMsIDEyNSwgOCwgMywgMjEzLCAxMjEsIDgsIDMsIDIxMywgMTM4LCA4LCAzLCAyMTMsIDEyNiwgOCwgMywgMjEzLCAxNzgsIAorICAgIDgsIDMsIDIxMywgMjQ0LCA4LCAzLCAyMTIsIDExMCwgOCwgMywgMjEyLCAxMDgsIDgsIDMsIDIxMiwgMTE2LCA4LCAzLCAKKyAgICAyMTIsIDExMywgOCwgMywgMjEyLCAxMTEsIDgsIDMsIDIxMiwgMTEyLCA4LCAzLCAyMTIsIDEwMiwgOCwgMywgMjEyLCAxMDEsIAorICAgIDgsIDMsIDIxMiwgMTA2LCA4LCAzLCAyMTIsIDEwNSwgOCwgMywgMjEyLCAxMDMsIDgsIDMsIDIxMiwgMTA0LCA4LCAzLCAKKyAgICAyNDcsIDE3OCwgOCwgMywgMjQ3LCAxNjYsIDgsIDMsIDI0OCwgMywgOCwgMywgMjQ3LCAyMDMsIDgsIDMsIDI0NywgMjM2LCAKKyAgICA4LCAzLCAyNDcsIDI0MCwgOCwgMywgMjQ3LCAyMzksIDgsIDMsIDI0OCwgMTUyLCA4LCAzLCAyNDgsIDE0NywgOCwgMywgCisgICAgMjQ4LCAyMjEsIDgsIDMsIDI0OCwgMTcyLCA4LCAzLCAyNDYsIDYyLCA4LCAzLCAyNDYsIDYzLCA4LCAzLCAyNDcsIDEyMCwgCisgICAgOCwgMywgMjQ2LCAxMDIsIDgsIDMsIDI0NywgMTQ1LCA4LCAzLCAyNDcsIDEyMiwgOCwgMywgMjQ4LCAzMCwgOCwgMywgMjQ4LCAKKyAgICA5MCwgOCwgMywgMjQ4LCA0NSwgOCwgMywgMjQ2LCA1MywgOCwgMywgMjQ2LCA1MSwgOCwgMywgMjQ2LCA3OCwgOCwgMywgCisgICAgMjQ2LCA2MSwgOCwgMywgMjQ2LCA1NiwgOCwgMywgMjQ2LCA1OSwgOCwgMywgMjE2LCA2NywgOCwgMywgMjE2LCA2MSwgOCwgCisgICAgMywgMjE2LCAxMTcsIDgsIDMsIDIxNiwgNzYsIDgsIDMsIDIxNiwgMTA5LCA4LCAzLCAyMTYsIDExMSwgOCwgMywgMjE2LCAKKyAgICAxMTAsIDgsIDMsIDIxNywgNDYsIDgsIDMsIDIxNywgMzMsIDgsIDMsIDIxNywgMTA1LCA4LCAzLCAyMTcsIDU0LCA4LCAzLCAKKyAgICAyMTUsIDEwMiwgOCwgMywgMjE1LCAxMDEsIDgsIDMsIDIxNSwgMTA0LCA4LCAzLCAyMTUsIDEwMywgOCwgMywgMjE2LCA1LCAKKyAgICA4LCAzLCAyMTYsIDEsIDgsIDMsIDExMSwgOCwgMywgMjE2LCAxMywgOCwgMywgMjE2LCAyMTMsIDgsIDMsIDIxNywgMjIsIDgsIAorICAgIDMsIDIxNiwgMjM3LCA4LCAzLCAyMTUsIDg4LCA4LCAzLCAyMTUsIDgzLCA4LCAzLCAyMTUsIDExOCwgOCwgMywgMjE1LCAKKyAgICAxMDAsIDgsIDMsIDIxNSwgODksIDgsIDMsIDIxNSwgOTgsIDgsIDMsIDI0OCwgMTA3LCA4LCAzLCAyNDgsIDEwNiwgOCwgMywgCisgICAgMjQ4LCAxMTIsIDgsIDMsIDI0OCwgMTA4LCA4LCAzLCAyNDgsIDEwOSwgOCwgMywgMjQ4LCAxMTEsIDgsIDMsIDI0OCwgMTEwLCAKKyAgICA4LCAzLCAyNDgsIDEyOCwgOCwgMywgMjQ4LCAxMjcsIDgsIDMsIDI0OCwgMTM1LCA4LCAzLCAyNDgsIDEyOSwgOCwgMywgCisgICAgMjQ4LCA5NywgOCwgMywgMjQ4LCA5OSwgOCwgMywgMjQ4LCA5OCwgOCwgMywgMjQ4LCAxMDIsIDgsIDMsIDI0OCwgMTAxLCA4LCAKKyAgICAzLCAyNDgsIDEwNSwgOCwgMywgMjQ4LCAxMDMsIDgsIDMsIDI0OCwgMTIwLCA4LCAzLCAyNDgsIDEyMywgOCwgMywgMjQ4LCAKKyAgICAxMjEsIDgsIDMsIDI0OCwgOTMsIDgsIDMsIDI0OCwgOTIsIDgsIDMsIDI0OCwgMTAwLCA4LCAzLCAyNDgsIDk2LCA4LCAzLCAKKyAgICAyNDgsIDk0LCA4LCAzLCAyNDgsIDk1LCA4LCAzLCAyMjksIDEyNiwgOCwgMywgMjI5LCAxMjUsIDgsIDMsIDIyOSwgMTMzLCAKKyAgICA4LCAzLCAyMjksIDEyOCwgOCwgMywgMjI5LCAxMjksIDgsIDMsIDIyOSwgMTMwLCA4LCAzLCAyMjksIDE0MiwgOCwgMywgCisgICAgMjI5LCAxNDEsIDgsIDMsIDIyOSwgMTQ4LCA4LCAzLCAyMjksIDE0MywgOCwgMywgMjI5LCAxMTgsIDgsIDMsIDIyOSwgMTE3LCAKKyAgICA4LCAzLCAyMjksIDEyNCwgOCwgMywgMjI5LCAxMTksIDgsIDMsIDIyOSwgMTM0LCA4LCAzLCAyMjksIDE0MCwgOCwgMywgCisgICAgMjI5LCAxMzgsIDgsIDMsIDIyOSwgMTEwLCA4LCAzLCAyMjksIDEwOSwgOCwgMywgMjI5LCAxMTUsIDgsIDMsIDIyOSwgMTEzLCAKKyAgICA4LCAzLCAyMjksIDExMSwgOCwgMywgMjI5LCAxMTIsIDgsIDMsIDI0MSwgNzcsIDgsIDMsIDI0MSwgNzYsIDgsIDMsIDI0MSwgCisgICAgODMsIDgsIDMsIDI0MSwgNzgsIDgsIDMsIDI0MSwgODAsIDgsIDMsIDI0MSwgNzksIDgsIDMsIDI0MSwgODIsIDgsIDMsIAorICAgIDI0MSwgODEsIDgsIDMsIDI0MSwgODgsIDgsIDMsIDI0MSwgODcsIDgsIDMsIDI0MSwgOTAsIDgsIDMsIDI0MSwgODksIDgsIAorICAgIDMsIDI0MSwgNzEsIDgsIDMsIDI0MSwgNzIsIDgsIDMsIDI0MSwgNzQsIDgsIDMsIDI0MSwgNzMsIDgsIDMsIDI0MSwgNzUsIAorICAgIDgsIDMsIDI0MSwgODQsIDgsIDMsIDI0MSwgODYsIDgsIDMsIDI0MSwgODUsIDgsIDMsIDI0MSwgNzAsIDgsIDMsIDIyOCwgCisgICAgMTg5LCA4LCAzLCAyMjgsIDE4NywgOCwgMywgMjI4LCAyMzMsIDgsIDMsIDIyOCwgMTkyLCA4LCAzLCAyMjgsIDIxNSwgOCwgCisgICAgMywgMjI4LCAyMjksIDgsIDMsIDIyOCwgMjI4LCA4LCAzLCAyMjksIDE4MywgOCwgMywgMTk3LCA4LCAzLCAyMjksIDE5NywgCisgICAgOCwgMywgMjI3LCAxODYsIDgsIDMsIDIyNywgMTg4LCA4LCAzLCAyMjcsIDE4NywgOCwgMywgMjI4LCA1MSwgOCwgMywgMjI4LCAKKyAgICAzOCwgOCwgMywgMjI4LCA3NCwgOCwgMywgMjI4LCA2MCwgOCwgMywgMjI5LCA4MywgOCwgMywgMjI5LCAxMDcsIDgsIDMsIAorICAgIDIyOSwgOTQsIDgsIDMsIDIyNywgMTgxLCA4LCAzLCAyMjcsIDE3NywgOCwgMywgMjI3LCAyMzcsIDgsIDMsIDIyNywgMTg1LCAKKyAgICA4LCAzLCAyMjcsIDE4MywgOCwgMywgMjI3LCAxODQsIDgsIDMsIDI0MSwgMTQxLCA4LCAzLCAyNDEsIDE0MCwgOCwgMywgCisgICAgMjQxLCAxNDYsIDgsIDMsIDI0MSwgMTQyLCA4LCAzLCAyNDEsIDE0MywgOCwgMywgMjQxLCAxNDUsIDgsIDMsIDI0MSwgMTQ0LCAKKyAgICA4LCAzLCAyNDEsIDE1MSwgOCwgMywgMjQxLCAxNTAsIDgsIDMsIDI0MSwgMTUzLCA4LCAzLCAyNDEsIDE1MiwgOCwgMywgCisgICAgMjQxLCAxMzMsIDgsIDMsIDI0MSwgMTM1LCA4LCAzLCAyNDEsIDEzNCwgOCwgMywgMjQxLCAxMzcsIDgsIDMsIDI0MSwgMTM5LCAKKyAgICA4LCAzLCAyNDEsIDEzOCwgOCwgMywgMjQxLCAxNDcsIDgsIDMsIDI0MSwgMTQ5LCA4LCAzLCAyNDEsIDE0OCwgOCwgMywgCisgICAgMjQxLCAxMjksIDgsIDMsIDI0MSwgMTI4LCA4LCAzLCAyNDEsIDEzNiwgOCwgMywgMjQxLCAxMzIsIDgsIDMsIDI0MSwgMTMwLCAKKyAgICA4LCAzLCAyNDEsIDEzMSwgOCwgMywgMjQxLCAxMjMsIDgsIDMsIDI0MSwgMTIyLCA4LCAzLCAyNDEsIDEyNywgOCwgMywgCisgICAgMjQxLCAxMjYsIDgsIDMsIDI0MSwgMTI0LCA4LCAzLCAyNDEsIDEyNSwgOCwgMywgMjMyLCAxOTUsIDgsIDMsIDIzMiwgMTg5LCAKKyAgICA4LCAzLCAyMzIsIDI0MSwgOCwgMywgMjMyLCAyMDIsIDgsIDMsIDIzMiwgMjMzLCA4LCAzLCAyMzIsIDIzMiwgOCwgMywgCisgICAgMjMyLCAyMzYsIDgsIDMsIDIzMiwgMjM0LCA4LCAzLCAyMzMsIDc5LCA4LCAzLCAyMzMsIDY5LCA4LCAzLCAyMzMsIDEzNSwgCisgICAgOCwgMywgMjMzLCA4OCwgOCwgMywgMjMyLCA3OSwgOCwgMywgMjMyLCA3OCwgOCwgMywgMjMyLCA4MSwgOCwgMywgMjMyLCAKKyAgICA4MCwgOCwgMywgMjMyLCAxMTYsIDgsIDMsIDIzMiwgMTA2LCA4LCAzLCAyMzIsIDE1NiwgOCwgMywgMjMyLCAxMjAsIDgsIDMsIAorICAgIDIzMywgMiwgOCwgMywgMjMzLCA1OCwgOCwgMywgMjMzLCAxNywgOCwgMywgMjMyLCA3NCwgOCwgMywgMjMyLCA3MiwgOCwgMywgCisgICAgMjMyLCA5OCwgOCwgMywgMjMyLCA3NywgOCwgMywgMjMyLCA3NSwgOCwgMywgMjMyLCA3NiwgOCwgMywgMjMyLCA1NCwgOCwgCisgICAgMywgMjMyLCA1MywgOCwgMywgMjMyLCA2MiwgOCwgMywgMjMyLCA1NywgOCwgMywgMjMyLCA1NSwgOCwgMywgMjMyLCA1NiwgCisgICAgOCwgMywgMjQyLCAxODksIDgsIDMsIDI0MiwgMTg4LCA4LCAzLCAyNDIsIDIxNCwgOCwgMywgMjQyLCAxOTksIDgsIDMsIAorICAgIDI0MiwgMjA2LCA4LCAzLCAyNDIsIDIwNSwgOCwgMywgMjQyLCAyMDgsIDgsIDMsIDI0MiwgMjA3LCA4LCAzLCAyNDMsIDg5LCAKKyAgICA4LCAzLCAyNDMsIDg0LCA4LCAzLCAyNDMsIDEzNSwgOCwgMywgMjQzLCA5OSwgOCwgMywgMjQyLCA5MSwgOCwgMywgMjQyLCAKKyAgICA5MCwgOCwgMywgMjQyLCA5MywgOCwgMywgMjQyLCA5MiwgOCwgMywgMjQyLCAxNTQsIDgsIDMsIDI0MiwgMTUyLCA4LCAzLCAKKyAgICAyNDIsIDE3NCwgOCwgMywgMjQyLCAxNjIsIDgsIDMsIDI0MywgMzMsIDgsIDMsIDI0MywgMzEsIDgsIDMsIDI0MywgNjIsIDgsIAorICAgIDMsIDI0MywgNDQsIDgsIDMsIDI0MiwgODEsIDgsIDMsIDI0MiwgODAsIDgsIDMsIDI0MiwgMTEzLCA4LCAzLCAyNDIsIDg5LCAKKyAgICA4LCAzLCAyNDIsIDgyLCA4LCAzLCAyNDIsIDg4LCA4LCAzLCAyMzQsIDYxLCA4LCAzLCAyMzQsIDYwLCA4LCAzLCAyMzQsIAorICAgIDkyLCA4LCAzLCAyMzQsIDc1LCA4LCAzLCAyMzQsIDg1LCA4LCAzLCAyMzQsIDg4LCA4LCAzLCAyMzQsIDg2LCA4LCAzLCAKKyAgICAyMzQsIDIwMiwgOCwgMywgMjM0LCAxOTAsIDgsIDMsIDE3NiwgOCwgMywgMjM0LCAyMjgsIDgsIDMsIDIzMywgMjAwLCA4LCAKKyAgICAzLCAyMzMsIDIwNSwgOCwgMywgMjMzLCAyMDIsIDgsIDMsIDIzNCwgMCwgOCwgMywgMjMzLCAyNTIsIDgsIDMsIDIzNCwgMjgsIAorICAgIDgsIDMsIDIzNCwgNywgOCwgMywgMjM0LCAxNTYsIDgsIDMsIDIzNCwgMTQwLCA4LCAzLCAyMzQsIDE4MiwgOCwgMywgMjM0LCAKKyAgICAxNTksIDgsIDMsIDIzMywgMTg5LCA4LCAzLCAyMzMsIDE4NiwgOCwgMywgMjMzLCAyMTcsIDgsIDMsIDIzMywgMTk5LCA4LCAKKyAgICAzLCAyMzMsIDE5MiwgOCwgMywgMjMzLCAxOTYsIDgsIDMsIDI0MywgMTUsIDgsIDMsIDI0MywgMTQsIDgsIDMsIDI0MywgMTksIAorICAgIDgsIDMsIDI0MywgMTYsIDgsIDMsIDI0MywgMTgsIDgsIDMsIDI0MywgMTcsIDgsIDMsIDI0MywgMjYsIDgsIDMsIDI0MywgCisgICAgMjUsIDgsIDMsIDI0MywgMjksIDgsIDMsIDI0MywgMjcsIDgsIDMsIDI0MywgNiwgOCwgMywgMjQzLCA1LCA4LCAzLCAyNDMsIAorICAgIDgsIDgsIDMsIDI0MywgNywgOCwgMywgMjQzLCAxMSwgOCwgMywgMjQzLCAxMCwgOCwgMywgMjQzLCAxMywgOCwgMywgMjQzLCAKKyAgICAxMiwgOCwgMywgMjQzLCAyMSwgOCwgMywgMjQzLCAyMCwgOCwgMywgMjQzLCAyNCwgOCwgMywgMjQzLCAyMiwgOCwgMywgCisgICAgMjQzLCAxLCA4LCAzLCAyNDMsIDAsIDgsIDMsIDI0MywgOSwgOCwgMywgMjQzLCA0LCA4LCAzLCAyNDMsIDIsIDgsIDMsIAorICAgIDI0MywgMywgOCwgMywgMjMwLCAyNDksIDgsIDMsIDIzMCwgMjUwLCA4LCAzLCAyMzEsIDEyLCA4LCAzLCAyMzEsIDExLCA4LCAKKyAgICAzLCAyMzEsIDE0LCA4LCAzLCAyMzEsIDEzLCA4LCAzLCAyMzAsIDI0MCwgOCwgMywgMjMwLCAyNDIsIDgsIDMsIDIzMCwgCisgICAgMjQxLCA4LCAzLCAyMzAsIDI0NSwgOCwgMywgMjMwLCAyNDQsIDgsIDMsIDIzMCwgMjQ3LCA4LCAzLCAyMzAsIDI0NiwgOCwgCisgICAgMywgMjMwLCAyNTEsIDgsIDMsIDIzMCwgMjUzLCA4LCAzLCAyMzAsIDI1MiwgOCwgMywgMjMwLCAyMzYsIDgsIDMsIDIzMCwgCisgICAgMjM1LCA4LCAzLCAyMzAsIDI0MywgOCwgMywgMjMwLCAyMzksIDgsIDMsIDIzMCwgMjM3LCA4LCAzLCAyMzAsIDIzOCwgOCwgCisgICAgMywgMjQwLCAxODAsIDgsIDMsIDI0MCwgMTc5LCA4LCAzLCAyNDAsIDE4NiwgOCwgMywgMjQwLCAxODEsIDgsIDMsIDI0MCwgCisgICAgMTgzLCA4LCAzLCAyNDAsIDE4MiwgOCwgMywgMjQwLCAxODUsIDgsIDMsIDI0MCwgMTg0LCA4LCAzLCAyNDAsIDE5MSwgOCwgCisgICAgMywgMjQwLCAxOTAsIDgsIDMsIDI0MCwgMTkzLCA4LCAzLCAyNDAsIDE5MiwgOCwgMywgMjQwLCAxNzIsIDgsIDMsIDI0MCwgCisgICAgMTcxLCA4LCAzLCAyNDAsIDE3NCwgOCwgMywgMjQwLCAxNzMsIDgsIDMsIDI0MCwgMTc2LCA4LCAzLCAyNDAsIDE3NSwgOCwgCisgICAgMywgMjQwLCAxNzgsIDgsIDMsIDI0MCwgMTc3LCA4LCAzLCAyNDAsIDE4NywgOCwgMywgMjQwLCAxODksIDgsIDMsIDI0MCwgCisgICAgMTg4LCA4LCAzLCAyMjksIDI0LCA4LCAzLCAyMjksIDI2LCA4LCAzLCAyMjksIDI1LCA4LCAzLCAyMjksIDY3LCA4LCAzLCAKKyAgICAyMjksIDY1LCA4LCAzLCAyMjksIDc3LCA4LCAzLCAyMjksIDcwLCA4LCAzLCAyMjgsIDI0MywgOCwgMywgMjI4LCAyNDIsIDgsIAorICAgIDMsIDIyOCwgMjQ0LCA4LCAzLCAyMjgsIDI1MiwgOCwgMywgMjI4LCAyNDksIDgsIDMsIDIyOSwgNCwgOCwgMywgMjI4LCAKKyAgICAyNTQsIDgsIDMsIDIyOSwgNTgsIDgsIDMsIDIyOSwgNjQsIDgsIDMsIDIyOSwgNjAsIDgsIDMsIDI0MSwgMTU2LCA4LCAzLCAKKyAgICAyNDEsIDE2NiwgOCwgMywgMjQxLCAxNzUsIDgsIDMsIDI0MSwgMjUxLCA4LCAzLCAyNDEsIDI0MywgOCwgMywgMTYyLCA4LCAKKyAgICAzLCAyNDIsIDYsIDgsIDMsIDI0MCwgMjA2LCA4LCAzLCAyNDAsIDIwNSwgOCwgMywgMjQwLCAyMDgsIDgsIDMsIDI0MCwgCisgICAgMjA3LCA4LCAzLCAyNDAsIDI0MiwgOCwgMywgMjQwLCAyMzMsIDgsIDMsIDI0MSwgNjgsIDgsIDMsIDI0MSwgNDcsIDgsIDMsIAorICAgIDI0MSwgMTk0LCA4LCAzLCAyNDEsIDIzOCwgOCwgMywgMjQxLCAyMDYsIDgsIDMsIDIxMiwgNDMsIDgsIDMsIDIxMiwgMjgsIAorICAgIDgsIDMsIDIxMiwgNjUsIDgsIDMsIDIxMiwgNTEsIDgsIDMsIDIxMSwgMTg1LCA4LCAzLCAyMTEsIDE4NywgOCwgMywgMjExLCAKKyAgICAxODYsIDgsIDMsIDIxMSwgMjAzLCA4LCAzLCAyMTEsIDIyNywgOCwgMywgMjExLCAyMTAsIDgsIDMsIDIxMiwgNSwgOCwgMywgCisgICAgMjEyLCAyMiwgOCwgMywgMjEyLCAxMCwgOCwgMywgMjEwLCAzMCwgOCwgMywgMjEwLCAyOSwgOCwgMywgMjEwLCA0NCwgOCwgCisgICAgMywgMjEwLCAzMiwgOCwgMywgMjEwLCAzNywgOCwgMywgMjEwLCAzOSwgOCwgMywgMjEwLCAzOCwgOCwgMywgMjEwLCAxMDIsIAorICAgIDgsIDMsIDIxMCwgOTksIDgsIDMsIDIxMCwgMTE2LCA4LCAzLCAyMTAsIDEwNSwgOCwgMywgMjEwLCA2LCA4LCAzLCAyMTAsIAorICAgIDgsIDgsIDMsIDIxMCwgNywgOCwgMywgMjEwLCAxOSwgOCwgMywgMjEwLCAxOCwgOCwgMywgMjEwLCAyMywgOCwgMywgMjEwLCAKKyAgICAyMCwgOCwgMywgMjEwLCA4NCwgOCwgMywgMjEwLCA5NCwgOCwgMywgMjEwLCA4OCwgOCwgMywgMjEwLCAyLCA4LCAzLCAyMTAsIAorICAgIDEsIDgsIDMsIDIxMCwgMTMsIDgsIDMsIDIxMCwgNSwgOCwgMywgMjEwLCAzLCA4LCAzLCAyMTAsIDQsIDgsIDMsIDIwOSwgCisgICAgMjQ1LCA4LCAzLCAyMDksIDI0NCwgOCwgMywgMjA5LCAyNTAsIDgsIDMsIDIwOSwgMjQ4LCA4LCAzLCAyMDksIDI0NiwgOCwgCisgICAgMywgMjA5LCAyNDcsIDgsIDMsIDI1MCwgMjgsIDgsIDMsIDI1MCwgMjQsIDgsIDMsIDI1MCwgNTEsIDgsIDMsIDI1MCwgMzcsIAorICAgIDgsIDMsIDI1MCwgNDgsIDgsIDMsIDI1MCwgNDIsIDgsIDMsIDI1MCwgNTAsIDgsIDMsIDI1MCwgNDksIDgsIDMsIDI1MCwgCisgICAgMjI0LCA4LCAzLCAyNTAsIDIxNywgOCwgMywgMjUxLCAzMywgOCwgMywgMjUwLCAyNTEsIDgsIDMsIDI0OSwgMTA0LCA4LCAzLCAKKyAgICAyNDksIDEwNiwgOCwgMywgMjQ5LCAxMDUsIDgsIDMsIDI0OSwgMTUzLCA4LCAzLCAyNDksIDE0NCwgOCwgMywgMjQ5LCAyMzgsIAorICAgIDgsIDMsIDI0OSwgMTY5LCA4LCAzLCAyNTAsIDE2MCwgOCwgMywgMjUwLCAxOTAsIDgsIDMsIDI1MCwgMTY1LCA4LCAzLCAKKyAgICAyNDksIDg0LCA4LCAzLCAyNDksIDgyLCA4LCAzLCAyNDksIDExMiwgOCwgMywgMjQ5LCAxMDIsIDgsIDMsIDI0OSwgODksIDgsIAorICAgIDMsIDI0OSwgMTAxLCA4LCAzLCAyNDksIDYzLCA4LCAzLCAyNDksIDYyLCA4LCAzLCAyNDksIDczLCA4LCAzLCAyNDksIDY5LCAKKyAgICA4LCAzLCAyNDksIDY0LCA4LCAzLCAyNDksIDY2LCA4LCAzLCAyMDksIDIyOCwgOCwgMywgMjA5LCAyMjcsIDgsIDMsIDIwOSwgCisgICAgMjM0LCA4LCAzLCAyMDksIDIyOSwgOCwgMywgMjA5LCAyMzEsIDgsIDMsIDIwOSwgMjMwLCA4LCAzLCAyMDksIDIzMywgOCwgCisgICAgMywgMjA5LCAyMzIsIDgsIDMsIDIwOSwgMjQwLCA4LCAzLCAyMDksIDIzOSwgOCwgMywgMjA5LCAyNDMsIDgsIDMsIDIwOSwgCisgICAgMjQxLCA4LCAzLCAyMDksIDIyNCwgOCwgMywgMjA5LCAyMjYsIDgsIDMsIDIwOSwgMjI1LCA4LCAzLCAyMDksIDIzNSwgOCwgCisgICAgMywgMjA5LCAyMzgsIDgsIDMsIDIwOSwgMjM2LCA4LCAzLCAyMDksIDIxNywgOCwgMywgMjA5LCAyMjEsIDgsIDMsIDIwOSwgCisgICAgMjIwLCA4LCAzLCAyMDksIDIxOCwgOCwgMywgMjA5LCAyMTksIDgsIDMsIDIwOSwgMjExLCA4LCAzLCAyMDksIDIxMCwgOCwgCisgICAgMywgMjA5LCAyMTYsIDgsIDMsIDIwOSwgMjE0LCA4LCAzLCAyMDksIDIxMiwgOCwgMywgMjA5LCAyMTMsIDgsIDMsIDIyNywgCisgICAgMTA0LCA4LCAzLCAyMjcsIDEwMywgOCwgMywgMjI3LCAxMDksIDgsIDMsIDIyNywgMTA1LCA4LCAzLCAyMjcsIDEwNiwgOCwgCisgICAgMywgMjI3LCAxMDgsIDgsIDMsIDIyNywgMTA3LCA4LCAzLCAyMjcsIDExNCwgOCwgMywgMjI3LCAxMTMsIDgsIDMsIDIyNywgCisgICAgMTE3LCA4LCAzLCAyMjcsIDExNiwgOCwgMywgMjI3LCA5NywgOCwgMywgMjI3LCA5OCwgOCwgMywgMjI3LCAxMDEsIDgsIDMsIAorICAgIDIyNywgMTAyLCA4LCAzLCAyMjcsIDExMCwgOCwgMywgMjI3LCAxMTIsIDgsIDMsIDIyNywgOTIsIDgsIDMsIDIyNywgMTAwLCAKKyAgICA4LCAzLCAyMjcsIDk2LCA4LCAzLCAyMjcsIDkzLCA4LCAzLCAyMjcsIDk0LCA4LCAzLCAyMjcsIDg3LCA4LCAzLCAyMjcsIAorICAgIDg2LCA4LCAzLCAyMjcsIDkxLCA4LCAzLCAyMjcsIDkwLCA4LCAzLCAyMjcsIDg4LCA4LCAzLCAyMjcsIDg5LCA4LCAzLCAKKyAgICAyMTksIDEyNywgOCwgMywgMTk0LCA4LCAzLCAyMTksIDE5MSwgOCwgMywgMjE5LCAxMzAsIDgsIDMsIDIxOSwgMTgzLCA4LCAKKyAgICAzLCAyMTksIDE4NiwgOCwgMywgMjE5LCAxODQsIDgsIDMsIDIyMSwgMjI2LCA4LCAzLCAyMjEsIDIxNCwgOCwgMywgMjA2LCAKKyAgICA4LCAzLCAyMjEsIDIzNCwgOCwgMywgMjE4LCAyOCwgOCwgMywgMjE4LCAzMCwgOCwgMywgMjE4LCAyOSwgOCwgMywgMjE5LCAKKyAgICAzNCwgOCwgMywgMjE5LCAyMywgOCwgMywgMjE5LCA1OCwgOCwgMywgMjE5LCAzOCwgOCwgMywgMjIwLCAxMTQsIDgsIDMsIAorICAgIDIyMSwgMTgxLCA4LCAzLCAyMjAsIDEzOSwgOCwgMywgMjE4LCA1LCA4LCAzLCAyMTgsIDMsIDgsIDMsIDIxOCwgODMsIDgsIAorICAgIDMsIDIxOCwgMjcsIDgsIDMsIDIxOCwgOSwgOCwgMywgMjE4LCAxNywgOCwgMywgMjE3LCAxNjYsIDgsIDMsIDIxNywgMTY1LCAKKyAgICA4LCAzLCAyMTcsIDIzMiwgOCwgMywgMjE3LCAxNzMsIDgsIDMsIDIxNywgMTY4LCA4LCAzLCAyMTcsIDE3MiwgOCwgMywgCisgICAgMjE4LCAxODYsIDgsIDMsIDIxOCwgMTg1LCA4LCAzLCAyMTgsIDE5MiwgOCwgMywgMjE4LCAxODcsIDgsIDMsIDIxOCwgMTg5LCAKKyAgICA4LCAzLCAyMTgsIDE5MSwgOCwgMywgMjE4LCAxOTAsIDgsIDMsIDIxOCwgMjAwLCA4LCAzLCAyMTgsIDE5OCwgOCwgMywgCisgICAgMjE4LCAyMjMsIDgsIDMsIDIxOCwgMjAxLCA4LCAzLCAyMTgsIDE4MSwgOCwgMywgMjE4LCAxODAsIDgsIDMsIDIxOCwgMTg0LCAKKyAgICA4LCAzLCAyMTgsIDE4MiwgOCwgMywgMjE4LCAxOTQsIDgsIDMsIDIxOCwgMTk3LCA4LCAzLCAyMTgsIDE5NSwgOCwgMywgCisgICAgMjE4LCAxNzcsIDgsIDMsIDIxOCwgMTc1LCA4LCAzLCAyMTgsIDE3OSwgOCwgMywgMjE4LCAxNzgsIDgsIDMsIDIxOCwgMTcwLCAKKyAgICA4LCAzLCAyMTgsIDE2OSwgOCwgMywgMjE4LCAxNzQsIDgsIDMsIDIxOCwgMTczLCA4LCAzLCAyMTgsIDE3MSwgOCwgMywgCisgICAgMjE4LCAxNzIsIDgsIDMsIDIxMCwgNzcsIDgsIDMsIDIxMCwgNzYsIDgsIDMsIDIxMCwgODIsIDgsIDMsIDIxMCwgNzksIDgsIAorICAgIDMsIDIxMCwgNTksIDgsIDMsIDIxMCwgNjEsIDgsIDMsIDIxMCwgNjAsIDgsIDMsIDIxMCwgNjQsIDgsIDMsIDIxMCwgNjMsIAorICAgIDgsIDMsIDIxMCwgNjcsIDgsIDMsIDIxMCwgNjUsIDgsIDMsIDIxMCwgNzEsIDgsIDMsIDIxMCwgNzAsIDgsIDMsIDIxMCwgCisgICAgNzQsIDgsIDMsIDIxMCwgNzIsIDgsIDMsIDIxMCwgNTUsIDgsIDMsIDIxMCwgNTQsIDgsIDMsIDIxMCwgNjIsIDgsIDMsIAorICAgIDIxMCwgNTgsIDgsIDMsIDIxMCwgNTYsIDgsIDMsIDIxMCwgNTcsIDgsIDMsIDIxMCwgNDcsIDgsIDMsIDIxMCwgNDYsIDgsIAorICAgIDMsIDIxMCwgNTEsIDgsIDMsIDIxMCwgNTAsIDgsIDMsIDIxMCwgNDgsIDgsIDMsIDIxMCwgNDksIDgsIDMsIDI1MCwgMTM2LCAKKyAgICA4LCAzLCAyNTAsIDEzMywgOCwgMywgMjUwLCAxNTcsIDgsIDMsIDI1MCwgMTQ0LCA4LCAzLCAyNTAsIDY1LCA4LCAzLCAyNTAsIAorICAgIDY0LCA4LCAzLCAyNTAsIDY3LCA4LCAzLCAyNTAsIDY2LCA4LCAzLCAyNTAsIDc5LCA4LCAzLCAyNTAsIDc4LCA4LCAzLCAKKyAgICAyNTAsIDg2LCA4LCAzLCAyNTAsIDgxLCA4LCAzLCAyNTAsIDExNSwgOCwgMywgMjUwLCAxMTMsIDgsIDMsIDI1MCwgMTMxLCAKKyAgICA4LCAzLCAyNTAsIDEyMSwgOCwgMywgMjUwLCA1OSwgOCwgMywgMjUwLCA2OSwgOCwgMywgMjUwLCA2MywgOCwgMywgMjUwLCAKKyAgICA2MCwgOCwgMywgMjUwLCA2MiwgOCwgMywgMjUwLCA1MywgOCwgMywgMjUwLCA1MiwgOCwgMywgMjUwLCA1NywgOCwgMywgCisgICAgMjUwLCA1NiwgOCwgMywgMjUwLCA1NCwgOCwgMywgMjUwLCA1NSwgOCwgMywgMjIyLCAxNzUsIDgsIDMsIDIyMiwgMTc5LCA4LCAKKyAgICAzLCAyMjIsIDE1OCwgOCwgMywgMjIyLCAxNTksIDgsIDMsIDIyMiwgMTYyLCA4LCAzLCAyMjIsIDE2MSwgOCwgMywgMjIyLCAKKyAgICAxNjUsIDgsIDMsIDIyMiwgMTYzLCA4LCAzLCAyMjIsIDE2OSwgOCwgMywgMjIyLCAxNjgsIDgsIDMsIDIyMiwgMTc0LCA4LCAKKyAgICAzLCAyMjIsIDE3MCwgOCwgMywgMjIyLCAxNTQsIDgsIDMsIDIyMiwgMTUyLCA4LCAzLCAyMjIsIDE2MCwgOCwgMywgMjIyLCAKKyAgICAxNTcsIDgsIDMsIDIyMiwgMTU1LCA4LCAzLCAyMjIsIDE1NiwgOCwgMywgMjIyLCAxNDcsIDgsIDMsIDIyMiwgMTQ2LCA4LCAKKyAgICAzLCAyMjIsIDE1MSwgOCwgMywgMjIyLCAxNTAsIDgsIDMsIDIyMiwgMTQ4LCA4LCAzLCAyMjIsIDE0OSwgOCwgMywgMjI4LCAKKyAgICAzNCwgOCwgMywgMjI4LCAzMywgOCwgMywgMjI4LCAzNiwgOCwgMywgMjI4LCAzNSwgOCwgMywgMjI4LCAyNiwgOCwgMywgCisgICAgMjI4LCAyOCwgOCwgMywgMjI4LCAyNywgOCwgMywgMjI4LCAzMCwgOCwgMywgMjI4LCAyOSwgOCwgMywgMjI4LCAzMiwgOCwgCisgICAgMywgMjI4LCAzMSwgOCwgMywgMjI4LCAyMSwgOCwgMywgMjI4LCAyMCwgOCwgMywgMjI4LCAyNSwgOCwgMywgMjI4LCAyNCwgCisgICAgOCwgMywgMjI4LCAyMiwgOCwgMywgMjI4LCAyMywgOCwgMywgMjI4LCAxNSwgOCwgMywgMjI4LCAxNCwgOCwgMywgMjI4LCAKKyAgICAxOSwgOCwgMywgMjI4LCAxOCwgOCwgMywgMjI4LCAxNiwgOCwgMywgMjI4LCAxNywgOCwgMywgMjIwLCA3MiwgOCwgMywgCisgICAgMjIwLCA2NywgOCwgMywgMjIwLCAxMDIsIDgsIDMsIDIyMCwgODMsIDgsIDMsIDIxOSwgMjE1LCA4LCAzLCAyMTksIDIxNywgCisgICAgOCwgMywgMjE5LCAyMTYsIDgsIDMsIDIxOSwgMjM2LCA4LCAzLCAyMTksIDIzMywgOCwgMywgMjIwLCA3LCA4LCAzLCAyMTksIAorICAgIDI1NCwgOCwgMywgMjIwLCA0MiwgOCwgMywgMjIwLCAzNSwgOCwgMywgMjIwLCA2MywgOCwgMywgMjIwLCA1MCwgOCwgMywgCisgICAgMjE5LCAyMTEsIDgsIDMsIDIxOSwgMjA5LCA4LCAzLCAyMTksIDIyNSwgOCwgMywgMjE5LCAyMTQsIDgsIDMsIDIxOSwgMjEyLCAKKyAgICA4LCAzLCAyMTksIDIxMywgOCwgMywgMjE5LCAxOTQsIDgsIDMsIDIxOSwgMTkzLCA4LCAzLCAyMTksIDIwMCwgOCwgMywgCisgICAgMjE5LCAxOTcsIDgsIDMsIDIxOSwgMTk1LCA4LCAzLCAyMTksIDE5NiwgOCwgMywgMjIzLCAxNDEsIDgsIDMsIDIyMywgMTM1LCAKKyAgICA4LCAzLCAyMDUsIDgsIDMsIDIyMywgMTQ3LCA4LCAzLCAyMjIsIDEyMCwgOCwgMywgMjIyLCAxMjIsIDgsIDMsIDIyMiwgCisgICAgMTIxLCA4LCAzLCAyMjIsIDE4OCwgOCwgMywgMjIyLCAxODEsIDgsIDMsIDIyMiwgMjExLCA4LCAzLCAyMjIsIDE5MiwgOCwgCisgICAgMywgMjIzLCA0MywgOCwgMywgMjIzLCAxMjgsIDgsIDMsIDIyMywgODEsIDgsIDMsIDIyMiwgMTEzLCA4LCAzLCAyMjIsIAorICAgIDExMCwgOCwgMywgMjIyLCAxNDAsIDgsIDMsIDIyMiwgMTE5LCA4LCAzLCAyMjIsIDExNSwgOCwgMywgMjIyLCAxMTYsIDgsIAorICAgIDMsIDIyMiwgOTUsIDgsIDMsIDIyMiwgOTQsIDgsIDMsIDIyMiwgMTAwLCA4LCAzLCAyMjIsIDk4LCA4LCAzLCAyMjIsIDk2LCAKKyAgICA4LCAzLCAyMjIsIDk3LCA4LCAzLCAyMzUsIDk4LCA4LCAzLCAyMzUsIDk3LCA4LCAzLCAyMzUsIDEwOCwgOCwgMywgMjM1LCAKKyAgICA5OSwgOCwgMywgMjM1LCAxMDQsIDgsIDMsIDIzNSwgMTAzLCA4LCAzLCAyMzUsIDEwNiwgOCwgMywgMjM1LCAxMDUsIDgsIDMsIAorICAgIDIzNSwgNDEsIDgsIDMsIDIzNSwgNDAsIDgsIDMsIDIzNSwgNDMsIDgsIDMsIDIzNSwgNDIsIDgsIDMsIDIzNSwgNTYsIDgsIAorICAgIDMsIDIzNSwgNTQsIDgsIDMsIDIzNSwgNjgsIDgsIDMsIDIzNSwgNTgsIDgsIDMsIDIzNSwgMzQsIDgsIDMsIDIzNSwgMzIsIAorICAgIDgsIDMsIDIzNSwgNTEsIDgsIDMsIDIzNSwgMzksIDgsIDMsIDIzNSwgMzYsIDgsIDMsIDIzNSwgMzcsIDgsIDMsIDIzNSwgCisgICAgMjYsIDgsIDMsIDIzNSwgMjUsIDgsIDMsIDIzNSwgMzAsIDgsIDMsIDIzNSwgMjksIDgsIDMsIDIzNSwgMjcsIDgsIDMsIAorICAgIDIzNSwgMjgsIDgsIDMsIDIyNCwgNDYsIDgsIDMsIDIyNCwgNDQsIDgsIDMsIDIyNCwgNTMsIDgsIDMsIDIyNCwgNDcsIDgsIAorICAgIDMsIDIyNCwgNTAsIDgsIDMsIDIyNCwgNDksIDgsIDMsIDIyNCwgNTIsIDgsIDMsIDIyNCwgNTEsIDgsIDMsIDIyMywgMjU1LCAKKyAgICA4LCAzLCAyMjMsIDI1MiwgOCwgMywgMjI0LCAxLCA4LCAzLCAyMjQsIDAsIDgsIDMsIDIyNCwgMzMsIDgsIDMsIDIyNCwgMzIsIAorICAgIDgsIDMsIDIyNCwgNDIsIDgsIDMsIDIyNCwgMzYsIDgsIDMsIDIyMywgMjQ3LCA4LCAzLCAyMjMsIDI0MywgOCwgMywgMjI0LCAKKyAgICAzMCwgOCwgMywgMjIzLCAyNTEsIDgsIDMsIDIyMywgMjQ5LCA4LCAzLCAyMjMsIDI1MCwgOCwgMywgMjIzLCAyMjcsIDgsIDMsIAorICAgIDIyMywgMjI1LCA4LCAzLCAyMjMsIDIzNywgOCwgMywgMjIzLCAyMzAsIDgsIDMsIDIyMywgMjI4LCA4LCAzLCAyMjMsIDIyOSwgCisgICAgOCwgMywgMjM1LCA4NywgOCwgMywgMjM1LCA4NiwgOCwgMywgMjM1LCA5MywgOCwgMywgMjM1LCA4OCwgOCwgMywgMjM1LCAKKyAgICA5MCwgOCwgMywgMjM1LCA4OSwgOCwgMywgMjM1LCA5MiwgOCwgMywgMjM1LCA5MSwgOCwgMywgMjM1LCA3OCwgOCwgMywgCisgICAgMjM1LCA4MCwgOCwgMywgMjM1LCA3OSwgOCwgMywgMjM1LCA4MywgOCwgMywgMjM1LCA4MiwgOCwgMywgMjM1LCA4NSwgOCwgCisgICAgMywgMjM1LCA4NCwgOCwgMywgMjM1LCA3NCwgOCwgMywgMjM1LCA3MywgOCwgMywgMjM1LCA4MSwgOCwgMywgMjM1LCA3NywgCisgICAgOCwgMywgMjM1LCA3NSwgOCwgMywgMjM1LCA3NiwgOCwgMywgMjM1LCA3MCwgOCwgMywgMjM1LCA2OSwgOCwgMywgMjM1LCAKKyAgICA3MiwgOCwgMywgMjM1LCA3MSwgOCwgMywgMjI4LCAxNjIsIDgsIDMsIDIyOCwgMTYxLCA4LCAzLCAyMjgsIDE2OSwgOCwgMywgCisgICAgMjI4LCAxNjMsIDgsIDMsIDIyOCwgMTY1LCA4LCAzLCAyMjgsIDE2NCwgOCwgMywgMjI4LCAxNjgsIDgsIDMsIDIyOCwgMTY2LCAKKyAgICA4LCAzLCAyMjgsIDE1MSwgOCwgMywgMjI4LCAxNTIsIDgsIDMsIDIyOCwgMTU3LCA4LCAzLCAyMjgsIDE1NiwgOCwgMywgCisgICAgMjI4LCAxNjAsIDgsIDMsIDIyOCwgMTU4LCA4LCAzLCAyMjgsIDE0NiwgOCwgMywgMjI4LCAxNTUsIDgsIDMsIDIyOCwgMTUwLCAKKyAgICA4LCAzLCAyMjgsIDE0NywgOCwgMywgMjI4LCAxNDgsIDgsIDMsIDIyOCwgMTQxLCA4LCAzLCAyMjgsIDE0MCwgOCwgMywgCisgICAgMjI4LCAxNDUsIDgsIDMsIDIyOCwgMTQ0LCA4LCAzLCAyMjgsIDE0MiwgOCwgMywgMjI4LCAxNDMsIDgsIDMsIDIyNywgMTM3LCAKKyAgICA4LCAzLCAyMjcsIDEzNiwgOCwgMywgMjI3LCAxNDgsIDgsIDMsIDIyNywgMTQxLCA4LCAzLCAyMjcsIDE0NSwgOCwgMywgCisgICAgMjI3LCAxNDQsIDgsIDMsIDIyNywgMTQ3LCA4LCAzLCAyMjcsIDE0NiwgOCwgMywgMjI3LCAxMjQsIDgsIDMsIDIyNywgMTI2LCAKKyAgICA4LCAzLCAyMjcsIDEyNSwgOCwgMywgMjI3LCAxMzAsIDgsIDMsIDIyNywgMTI5LCA4LCAzLCAyMjcsIDEzNCwgOCwgMywgCisgICAgMjI3LCAxMzEsIDgsIDMsIDIyNywgMTIyLCA4LCAzLCAyMjcsIDEyMCwgOCwgMywgMjI3LCAxMjgsIDgsIDMsIDIyNywgMTIzLCAKKyAgICA4LCAzLCAyMTEsIDE1MCwgOCwgMywgMjExLCAxNDksIDgsIDMsIDIxMSwgMTU3LCA4LCAzLCAyMTEsIDE1MiwgOCwgMywgCisgICAgMjExLCAxNTQsIDgsIDMsIDIxMSwgMTUzLCA4LCAzLCAyMTEsIDE1NiwgOCwgMywgMjExLCAxNTUsIDgsIDMsIDIxMSwgMTM5LCAKKyAgICA4LCAzLCAyMTEsIDE0MCwgOCwgMywgMjExLCAxNDQsIDgsIDMsIDIxMSwgMTQzLCA4LCAzLCAyMTEsIDE0OCwgOCwgMywgCisgICAgMjExLCAxNDYsIDgsIDMsIDIxMSwgMTIxLCA4LCAzLCAyMTEsIDExOSwgOCwgMywgMjExLCAxMzEsIDgsIDMsIDIxMSwgMTI0LCAKKyAgICA4LCAzLCAyMTEsIDEyMiwgOCwgMywgMjExLCAxMjMsIDgsIDMsIDIxMCwgMjUwLCA4LCAzLCAyMTAsIDI0OCwgOCwgMywgCisgICAgMjExLCA4LCA4LCAzLCAyMTAsIDI1MSwgOCwgMywgMjExLCAyLCA4LCAzLCAyMTEsIDEsIDgsIDMsIDIxMSwgNSwgOCwgMywgCisgICAgMjExLCAzLCA4LCAzLCAyMTAsIDE5MSwgOCwgMywgMjEwLCAxOTAsIDgsIDMsIDIxMCwgMTk0LCA4LCAzLCAyMTAsIDE5MiwgCisgICAgOCwgMywgMjEwLCAyMjQsIDgsIDMsIDIxMCwgMjIxLCA4LCAzLCAyMTAsIDI0NCwgOCwgMywgMjEwLCAyMjgsIDgsIDMsIAorICAgIDIxMCwgMTgyLCA4LCAzLCAyMTAsIDE3OCwgOCwgMywgMjEwLCAyMTIsIDgsIDMsIDIxMCwgMTg5LCA4LCAzLCAyMTAsIDE4NSwgCisgICAgOCwgMywgMjEwLCAxODYsIDgsIDMsIDIxMCwgMTYyLCA4LCAzLCAyMTAsIDE2MSwgOCwgMywgMjEwLCAxNjksIDgsIDMsIAorICAgIDIxMCwgMTY1LCA4LCAzLCAyMTAsIDE2MywgOCwgMywgMjEwLCAxNjQsIDgsIDM0LCAyMjQsIDMzLCA4LCAzNCwgMjMyLCAKKyAgICAyNDEsIDgsIDM0LCAyMzQsIDYxLCA4LCAzNCwgMjI3LCAxNDEsIDgsIDM0LCAyNDksIDY5LCA4LCAzNCwgMjE4LCAxOTIsIDgsIAorICAgIDM0LCAyNDMsIDEyLCA4LCAzNCwgMjQzLCA0NCwgOCwgMzQsIDIzMCwgMjMwLCA4LCAzNCwgMjQwLCAxODAsIDgsIDM0LCAKKyAgICAyMzIsIDU2LCA4LCAzNCwgMjUyLCA4MywgOCwgMzQsIDIzMCwgMTI2LCA4LCAzNCwgMjEwLCAyNDQsIDgsIDM0LCAyMjQsIAorICAgIDEyMSwgOCwgMzQsIDI0MCwgMTc0LCA4LCAzNCwgMjE3LCA0NiwgOCwgMzQsIDI0MywgMTM1LCA4LCAzNCwgMjEwLCA1LCA4LCAKKyAgICAzNCwgMjQ5LCA2MywgOCwgMzQsIDI0OCwgOTUsIDgsIDM0LCAyNTEsIDk4LCA4LCAzNCwgMjQzLCA4LCA4LCAzNCwgMjI3LCAKKyAgICAxMzEsIDgsIDM0LCAyMTUsIDExOCwgOCwgMzQsIDIyNiwgMTc1LCA4LCAzNCwgMjM1LCA3NCwgOCwgMzQsIDIxMCwgMTksIDgsIAorICAgIDM0LCAyMjQsIDEwMCwgOCwgMzQsIDI0MSwgMTA4LCA4LCAzNCwgMjEwLCAyNTAsIDgsIDM0LCAyMTIsIDExMiwgOCwgMzQsIAorICAgIDIxOSwgMjAwLCA4LCAzNCwgMjEzLCAyNDQsIDgsIDM0LCAyMTAsIDExNiwgOCwgMzQsIDIzNSwgNjgsIDgsIDM0LCAyMjcsIAorICAgIDk2LCA4LCAzNCwgMjM1LCA3MiwgOCwgMzQsIDI0MiwgMTU0LCA4LCAzNCwgMjM1LCA5MiwgOCwgMzQsIDIxMSwgMjI3LCA4LCAKKyAgICAzNCwgMjQ2LCA3OCwgOCwgMzQsIDIxOSwgMjEzLCA4LCAzNCwgMjMyLCAyMzYsIDgsIDM0LCAyNDksIDczLCA4LCAzNCwgCisgICAgMjQ5LCAxMDUsIDgsIDM0LCAyNTAsIDM3LCA4LCAzNCwgMjQwLCAxNzcsIDgsIDM0LCAyMjAsIDcyLCA4LCAzNCwgMjEwLCA0LCAKKyAgICA4LCAzNCwgMjE5LCAyNTQsIDgsIDM0LCAyNTAsIDEzMSwgOCwgMzQsIDIwOSwgMjMxLCA4LCAzNCwgMjI5LCAxNzMsIDgsIAorICAgIDM0LCAyMzQsIDE4MiwgMjMyLCAxOTYsIDEsIDI1MiwgMTkxLCAyMzIsIDE5NiwgMSwgMTkwLCAyMzIsIDE5NiwgMSwgMjI1LCAKKyAgICAxNDcsIDIzMiwgMTk2LCAxLCAyNDgsIDIyMSwgMjMyLCAxOTYsIDEsIDIxNywgMTA1LCAyMzIsIDE5NiwgMSwgMjE2LCAyMDgsIAorICAgIDIzMiwgMTk2LCAxLCAyNDMsIDEzNSwgMjMyLCAxOTYsIDEsIDE3NiwgMjMyLCAxOTYsIDEsIDIzNCwgMTMyLCAyMzIsIDE5NiwgCisgICAgMSwgMjM1LCAxNDEsIDIzMiwgMTk2LCAxLCAyNTEsIDMzLCAyMzIsIDE5NiwgMSwgMjUwLCAxNTcsIDIzMiwgMTk2LCAxLCAKKyAgICAyNDYsIDM4LCAyMzIsIDE5NiwgMSwgMjE1LCAxODMsIDIzMiwgMTk2LCAxLCAyMTUsIDE3NSwgMjMyLCAxOTYsIDEsIDE4NCwgCisgICAgMjMyLCAxOTYsIDEsIDE5NywgMjMyLCAxOTYsIDEsIDIzMywgMTM1LCAyMzIsIDE5NiwgMSwgMjA2LCAyMzIsIDE5NiwgMSwgCisgICAgMjEwLCA4MiwgMjMyLCAxOTYsIDEsIDIxMCwgMTE2LCAyMzIsIDE5NiwgMSwgMjI5LCA3NywgMjMyLCAxOTYsIDEsIDE2MiwgCisgICAgMjMyLCAxOTYsIDEsIDIxMSwgMTY1LCAyMzIsIDE5NiwgMSwgMjQxLCAxODksIDIzMiwgMTk2LCAxLCAyNDQsIDE5NiwgMjMyLCAKKyAgICAxOTYsIDEsIDIxMiwgNjUsIDIzMiwgMTk2LCAxLCAyMjAsIDEwMiwgMjMyLCAxOTYsIDEsIDE5MSwgMjMyLCAxOTYsIDEsIAorICAgIDI0MiwgMjQ5LCAyMzIsIDE5NiwgMSwgNjEsIDIzMiwgMTk2LCAxLCAyNTQsIDI0MywgMjMyLCAxOTYsIDEsIDc1LCAyMzIsIAorICAgIDE5NiwgMSwgMjQ1LCA1NSwgMjMyLCAxOTYsIDEsIDczLCAyMzIsIDE5NiwgMSwgNzYsIDIzMiwgMTk2LCAxLCA3MCwgMjMyLCAKKyAgICAxOTYsIDEsIDIxNCwgMjE0LCAyMzIsIDE5NiwgMSwgMjE0LCAyMDgsIDIzMiwgMTk2LCAxLCAyMjYsIDIzNCwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMjE2LCAxMTcsIDIzMiwgMTk2LCAxLCAxMzgsIDIyOSwgMjI5LCAyMjUsIDE2LCAyMzIsIDE5NiwgCisgICAgMSwgMTM4LCAyMzAsIDMyLCAyNDksIDcyLCAyMzIsIDE5NiwgMSwgMTM4LCAyMzAsIDMyLCAyNTEsIDIwNSwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMTk3LCAyMzIsIDE5NiwgMSwgMTM4LCAyMzAsIDMyLCAyMzUsIDExNSwgMjMyLCAxOTYsIDIyNCwgCisgICAgMTQxLCAyNDksIDIxOSwgMjMyLCAxOTYsIDIyNCwgMTQxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDQxLCAzLCAyNDUsIDIwOSwgCisgICAgNDEsIDMsIDI0NSwgMjA1LCA0MSwgMywgMjQxLCAyMjAsIDQxLCAzLCAyMTIsIDE3LCA0MSwgMywgMjEyLCAxNiwgNDEsIDMsIAorICAgIDIyNSwgMjExLCA0MSwgMywgMjUyLCAxMywgNDEsIDMsIDI1MiwgNjYsIDQxLCAzLCAyMzEsIDExNiwgNDEsIDMsIDIzMywgCisgICAgMjQ3LCA0MSwgMywgMjMxLCA2LCA0MSwgMywgMjQzLCA3NSwgNDEsIDMsIDI0NCwgMTQ3LCA0MSwgMywgMjEzLCAyNTAsIDQxLCAKKyAgICAzLCAyMTcsIDExLCA0MSwgMywgMjE2LCAxOTQsIDQxLCAzLCAyNDgsIDE2LCA0MSwgMywgMjQ4LCAxMywgNDEsIDMsIDIzMywgCisgICAgNTAsIDQxLCAzLCAyMjMsIDEwOCwgNDEsIDMsIDI0OCwgNzcsIDQxLCAzLCAyMjksIDEzOSwgNDEsIDMsIDIyMSwgMTcwLCAKKyAgICA0MSwgMywgMjIwLCA2MSwgNDEsIDMsIDIxMCwgOTIsIDQxLCAzLCAyMTAsIDczLCA0MSwgMywgMjUwLCAxODIsIDQxLCAzLCAKKyAgICAyMzUsIDEyNCwgNDEsIDMsIDIyOCwgMTc2LCA0MSwgMywgMjExLCA0NCwgNDEsIDMsIDIzNCwgMTgxLCA0MSwgMywgMjI5LCAKKyAgICA1MSwgNDEsIDMsIDI0MywgNTUsIDQxLCAzLCAyMzEsIDgwLCA0MSwgMywgMjI5LCAxMDMsIDQxLCAzLCAyMjcsIDE1NSwgNDEsIAorICAgIDMsIDczLCA0MSwgMywgMjM1LCAyNTUsIDQxLCAzLCAyNDEsIDE4MCwgNDEsIDMsIDI0MSwgMTYwLCA0MSwgMywgMjExLCAKKyAgICAyNTAsIDQxLCAzLCAyMTEsIDI0MSwgNDEsIDMsIDIyNSwgMTA4LCA0MSwgMywgMjUyLCAxMSwgNDEsIDMsIDI1MiwgNiwgNDEsIAorICAgIDMsIDIzMSwgMTA5LCA0MSwgMywgMjMzLCAyNDQsIDQxLCAzLCAyMzEsIDMsIDQxLCAzLCAyNDMsIDcxLCA0MSwgMywgMjQ0LCAKKyAgICAxMjEsIDQxLCAzLCAyMTMsIDE3NiwgNDEsIDMsIDIxNiwgMTE3LCA0MSwgMywgMjE2LCAxNzUsIDQxLCAzLCAyNDgsIDgsIAorICAgIDQxLCAzLCAyNDgsIDEyLCA0MSwgMywgMjMyLCAyNDEsIDQxLCAzLCAyMjMsIDM1LCA0MSwgMywgMjQ4LCAzLCA0MSwgMywgCisgICAgMjI5LCAxMzMsIDQxLCAzLCAyMTksIDE5MSwgNDEsIDMsIDIyMCwgMzIsIDQxLCAzLCAyMTAsIDQ0LCA0MSwgMywgMjEwLCAKKyAgICA2OSwgNDEsIDMsIDI1MCwgNTEsIDQxLCAzLCAyMzUsIDEwOCwgNDEsIDMsIDIyOCwgMTY5LCA0MSwgMywgMjExLCA4LCA0MSwgCisgICAgMywgMjM0LCA5MiwgNDEsIDMsIDIyOSwgNDMsIDQxLCAzLCAyNDIsIDIxNCwgNDEsIDMsIDIzMCwgMjMwLCA0MSwgMywgMjI4LCAKKyAgICAyMzMsIDQxLCAzLCAyMjcsIDE0OCwgNDEsIDMsIDYxLCA0MSwgMywgMjU0LCAxMjMsIDQxLCAzLCAyMjksIDcyLCA0MSwgMywgCisgICAgMTYyLCA0MSwgMywgMjQyLCAxOCwgNDEsIDMsIDIxMiwgNjUsIDQxLCAzLCAyMTIsIDU1LCA0MSwgMywgMTkwLCA0MSwgMywgCisgICAgMjUyLCAxOCwgNDEsIDMsIDI1MiwgMTkxLCA0MSwgMywgMjMxLCAxMjQsIDQxLCAzLCAyMzMsIDI1MSwgNDEsIDMsIDIzMywgCisgICAgMjUwLCA0MSwgMywgMjMxLCAxMCwgNDEsIDMsIDI0MywgNzksIDQxLCAzLCAyNDQsIDE5NiwgNDEsIDMsIDIxNCwgMjcsIDQxLCAKKyAgICAzLCAyMTcsIDEwNSwgNDEsIDMsIDIxNiwgMjA4LCA0MSwgMywgMjQ4LCAyNSwgNDEsIDMsIDI0OCwgMTUsIDQxLCAzLCAyMzMsIAorICAgIDEzNSwgNDEsIDMsIDIwNSwgNDEsIDMsIDI0OCwgMjIxLCA0MSwgMywgMjI5LCAxNDgsIDQxLCAzLCAyMDYsIDQxLCAzLCAKKyAgICAyMjAsIDEwMiwgNDEsIDMsIDIxMCwgMTE2LCA0MSwgMywgMjEwLCA4MiwgNDEsIDMsIDI1MSwgMzMsIDQxLCAzLCAyMzUsIAorICAgIDE0MSwgNDEsIDMsIDIyOCwgMTg1LCA0MSwgMywgMTkxLCA0MSwgMywgMTc2LCA0MSwgMywgMjM0LCAyMzQsIDQxLCAzLCAKKyAgICAyMjksIDU2LCA0MSwgMywgMjQzLCAxMzUsIDQxLCAzLCAxODQsIDQxLCAzLCAxOTcsIDQxLCAzLCAyMjcsIDE2NSwgNDEsIDMsIAorICAgIDIyNiwgMTgzLCA0MSwgMywgMjI2LCAxNzksIDQxLCAzLCAyNDEsIDUzLCA0MSwgMywgMjExLCAyMTUsIDQxLCAzLCAyMTEsIAorICAgIDIxMSwgNDEsIDMsIDIyNCwgMjQ5LCA0MSwgMywgMjUyLCA5LCA0MSwgMywgMjUxLCAxOTMsIDQxLCAzLCAyMzEsIDEwNCwgCisgICAgNDEsIDMsIDIzMywgMjQyLCA0MSwgMywgMjMwLCAyNTUsIDQxLCAzLCAyNDMsIDY3LCA0MSwgMywgMjQ0LCAzNCwgNDEsIDMsIAorICAgIDIxMywgMTI3LCA0MSwgMywgMjE2LCAxNywgNDEsIDMsIDIxNiwgMTUzLCA0MSwgMywgMjQ4LCA2LCA0MSwgMywgMjQ4LCAxMCwgCisgICAgNDEsIDMsIDIzMiwgMTI3LCA0MSwgMywgMjIyLCAxOTcsIDQxLCAzLCAyNDcsIDEyNSwgNDEsIDMsIDIyOSwgMTIwLCA0MSwgCisgICAgMywgMjE5LCA0MCwgNDEsIDMsIDIyMCwgMSwgNDEsIDMsIDIxMCwgMjEsIDQxLCAzLCAyMTAsIDY2LCA0MSwgMywgMjQ5LCAKKyAgICAxNzQsIDQxLCAzLCAyMzUsIDU5LCA0MSwgMywgMjI4LCAxNTksIDQxLCAzLCAyMTAsIDIyOSwgNDEsIDMsIDIzNCwgMTAsIAorICAgIDQxLCAzLCAyMjksIDQxLCA0MSwgMywgMjQyLCAxNjQsIDQxLCAzLCAyMzAsIDEzMiwgNDEsIDMsIDIyOCwgNjQsIDQxLCAzLCAKKyAgICAyMjcsIDEzMiwgNDEsIDMsIDcwLCA0MSwgMywgMjE0LCAxOTAsIDQxLCAzLCAyNDAsIDIyMiwgNDEsIDMsIDI0MCwgMjEyLCAKKyAgICA0MSwgMywgMjExLCAxOTUsIDQxLCAzLCAyMTEsIDE4OSwgNDEsIDMsIDIyNCwgMTUwLCA0MSwgMywgMjUyLCA4LCA0MSwgMywgCisgICAgMjUxLCAxMjUsIDQxLCAzLCAyMzEsIDEwMywgNDEsIDMsIDIzMywgMjQwLCA0MSwgMywgMjMwLCAyNTQsIDQxLCAzLCAyNDMsIAorICAgIDY2LCA0MSwgMywgMjQzLCAyMzQsIDQxLCAzLCAyMTIsIDExNiwgNDEsIDMsIDIxNSwgMTE4LCA0MSwgMywgMjE2LCAxMzYsIAorICAgIDQxLCAzLCAyNDgsIDQsIDQxLCAzLCAyNDgsIDksIDQxLCAzLCAyMzIsIDk4LCA0MSwgMywgMjIyLCAxNDAsIDQxLCAzLCAKKyAgICAyNDYsIDc4LCA0MSwgMywgMjI5LCAxMTUsIDQxLCAzLCAyMTgsIDgzLCA0MSwgMywgMjE5LCAyMjUsIDQxLCAzLCAyMTAsIAorICAgIDEzLCA0MSwgMywgMjEwLCA2MiwgNDEsIDMsIDI0OSwgMTEyLCA0MSwgMywgMjM1LCA1MSwgNDEsIDMsIDIyOCwgMTU1LCA0MSwgCisgICAgMywgMjEwLCAyMTIsIDQxLCAzLCAyMzMsIDIxNywgNDEsIDMsIDIyOSwgNDAsIDQxLCAzLCAyNDIsIDExMywgNDEsIDMsIAorICAgIDIzMCwgMTAyLCA0MSwgMywgMjI3LCAyMzcsIDQxLCAzLCAyMjcsIDEyOCwgNDEsIDMsIDc2LCA0MSwgMywgMjI2LCAxOTYsIAorICAgIDQxLCAzLCAyMjksIDAsIDQxLCAzLCAyNDEsIDY4LCA0MSwgMywgMjQxLCA1NiwgNDEsIDMsIDIxMSwgMjI3LCA0MSwgMywgCisgICAgMjExLCAyMTYsIDQxLCAzLCAyMjUsIDE2LCA0MSwgMywgMjUyLCAxMCwgNDEsIDMsIDI1MSwgMjA1LCA0MSwgMywgMjMxLCAKKyAgICAxMDUsIDQxLCAzLCAyMzMsIDI0MywgNDEsIDMsIDIzMSwgMSwgNDEsIDMsIDI0MywgNjksIDQxLCAzLCAyNDMsIDY4LCA0MSwgCisgICAgMywgMjQ0LCA0MywgNDEsIDMsIDIxMywgMTM4LCA0MSwgMywgMTExLCA0MSwgMywgMjE2LCAxNTYsIDQxLCAzLCAyNDgsIDcsIAorICAgIDQxLCAzLCAyNDgsIDExLCA0MSwgMywgMjMyLCAxNTYsIDQxLCAzLCAyMjIsIDIxMSwgNDEsIDMsIDI0NywgMTQ1LCA0MSwgMywgCisgICAgMjI5LCAxMjQsIDQxLCAzLCAyMTksIDU4LCA0MSwgMywgMjIwLCA3LCA0MSwgMywgMjEwLCAyMywgNDEsIDMsIDIxMCwgNjcsIAorICAgIDQxLCAzLCAyNDksIDIzOCwgNDEsIDMsIDIzNSwgNjgsIDQxLCAzLCAyMjgsIDE2MCwgNDEsIDMsIDIxMCwgMjQ0LCA0MSwgMywgCisgICAgMjM0LCAyOCwgNDEsIDMsIDIyOSwgNDIsIDQxLCAzLCAyNDIsIDE3NCwgNDEsIDMsIDIzMCwgMTYxLCA0MSwgMywgMjI4LCAKKyAgICA3NCwgNDEsIDMsIDIyNywgMTM0LCA0MSwgMywgNzUsIDQxLCAzLCAyNDUsIDE1MCwgNDEsIDMsIDIyOSwgNjEsIDQxLCAzLCAKKyAgICAyNDEsIDIzOCwgNDEsIDMsIDI0MSwgMjA5LCA0MSwgMywgMjEyLCAyMiwgNDEsIDMsIDIxMiwgMTIsIDQxLCAzLCAyMjUsIAorICAgIDIyMSwgNDEsIDMsIDI1MiwgMTQsIDQxLCAzLCAyNTIsIDc1LCA0MSwgMywgMjMxLCAxMTcsIDQxLCAzLCAyMzMsIDI0OCwgCisgICAgNDEsIDMsIDIzMywgMjQ2LCA0MSwgMywgMjMxLCA3LCA0MSwgMywgMjQzLCA3NiwgNDEsIDMsIDI0MywgNzQsIDQxLCAzLCAKKyAgICAyNDQsIDE1NCwgNDEsIDMsIDIxMywgMjU1LCA0MSwgMywgMjE3LCAyMiwgNDEsIDMsIDIxNiwgMTk1LCA0MSwgMywgMjQ4LCAKKyAgICAxNywgNDEsIDMsIDI0OCwgMTQsIDQxLCAzLCAyMzMsIDU4LCA0MSwgMywgMjIzLCAxMjgsIDQxLCAzLCAyNDgsIDkwLCA0MSwgCisgICAgMywgMjI5LCAxNDAsIDQxLCAzLCAyMjEsIDE4MSwgNDEsIDMsIDIyMCwgNjMsIDQxLCAzLCAyMTAsIDk0LCA0MSwgMywgMjEwLCAKKyAgICA3NCwgNDEsIDMsIDI1MCwgMTkwLCA0MSwgMywgMjM1LCAxMjYsIDQxLCAzLCAyMjgsIDE3OCwgNDEsIDMsIDIxMSwgNDcsIAorICAgIDQxLCAzLCAyMzQsIDE4MiwgNDEsIDMsIDIyOSwgNTIsIDQxLCAzLCAyMjksIDQ4LCA0MSwgMywgMjQzLCA2MiwgNDEsIDMsIAorICAgIDI0MywgNTEsIDQxLCAzLCAyMzEsIDkxLCA0MSwgMywgMjI5LCAxMDcsIDQxLCAzLCAyMjcsIDE1NiwgNDEsIDMsIDIyOSwgCisgICAgNzksIDQxLCAzLCAyMzMsIDIyLCA0MSwgMjQ5LCAyMTksIDQxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDQxLCAyMjQsIDEzLCAKKyAgICA3OCwgNDEsIDMsIDIyOSwgMTIzLCAyNDQsIDE5NiwgNDEsIDMsIDIyOSwgMTIzLCAxNzYsIDQxLCAzLCAyMjksIDEyMywgCisgICAgMjE5LCA0MCwgNDEsIDE2LCAyNDQsIDE0NCwgNDEsIDE2LCAyMzQsIDE4MCwgNDEsIDE2LCAyMTYsIDgxLCA0MSwgMTYsIAorICAgIDIyOCwgMjA4LCA0MSwgMTYsIDI1MiwgMTQ3LCA0MSwgMTYsIDI0NCwgMTk1LCA0MSwgMTYsIDIxNywgMTAxLCA0MSwgMTYsIAorICAgIDI0OCwgMTc2LCA0MSwgMTYsIDI0NywgMTI0LCA0MSwgMTYsIDIzMywgMjA2LCA0MSwgMTYsIDIxNiwgMjEsIDQxLCAxNiwgCisgICAgMjQ3LCAxNDQsIDQxLCAxNiwgMjM1LCA2MCwgNDEsIDIxLCAyMTAsIDg2LCA0MSwgMjEsIDExMCwgNDEsIDIxLCAxMDUsIDQxLCAKKyAgICAyMSwgMTU4LCA0MSwgMjEsIDE2MSwgNDEsIDIxLCAxODksIDQxLCAyMSwgMTk0LCA0MSwgMjEsIDE5OCwgNDEsIDIxLCAxOTUsIAorICAgIDQxLCAyMSwgMjAwLCA0MSwgMywgMjI5LCAxMjMsIDE4NCwgNDEsIDMsIDIyOSwgMTIzLCAyNDcsIDE0NSwgMzMsIDYsIDEsIAorICAgIDIxMCwgOTAsIDMzLCA0LCAxLCAyMTAsIDkwLCAzMywgNiwgMSwgMjQ2LCAzNCwgMzMsIDQsIDEsIDI0NiwgMzQsIDMzLCA2LCAKKyAgICAxLCAyMjMsIDQ5LCAyNDYsIDM2LCAzMywgNCwgMSwgMjIzLCA0OSwgMjQ2LCAzNiwgMzMsIDYsIDEsIDIzNSwgMTg1LCAzMywgCisgICAgNCwgMSwgMjM1LCAxODUsIDMzLCA2LCAxLCAyNDcsIDE2MSwgMzMsIDQsIDEsIDI0NywgMTYxLCAzMywgNiwgMSwgMjMwLCAKKyAgICAxNDAsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjMwLCAxNDAsIDIxNCwgMjA1LCAzMywgNiwgMSwgMjUxLCAxMzYsIDIyNiwgCisgICAgMjAxLCAzMywgNCwgMSwgMjUxLCAxMzYsIDIyNiwgMjAxLCAzMywgNiwgMSwgMjI5LCA4NywgMjExLCAzMSwgMzMsIDQsIDEsIAorICAgIDIyOSwgODcsIDIxMSwgMzEsIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNTIsIDE4NSwgMjExLCAzMSwgMzMsIDQsIDEsIDIxMSwgCisgICAgMjgsIDIsIDI1MiwgMTg1LCAyMTEsIDMxLCAzMywgNiwgMSwgMjM1LCAxODMsIDIxMSwgNTksIDMzLCA0LCAxLCAyMzUsIAorICAgIDE4MywgMjExLCA1OSwgMzMsIDYsIDEsIDIyMywgNDksIDIxMCwgMjEyLCAzMywgNCwgMSwgMjIzLCA0OSwgMjEwLCAyMTIsIAorICAgIDMzLCA2LCAxLCAyMzUsIDE4MywgNjEsIDMzLCA0LCAxLCAyMzUsIDE4MywgNjEsIDMzLCA2LCAxLCAyNTAsIDAsIDIzMiwgCisgICAgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MCwgMCwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUxLCAyMTQsIAorICAgIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUxLCAyMTQsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIDI1MCwgMCwgMjMyLCAKKyAgICAxOTIsIDIxMCwgMTgzLCAzMywgNCwgMSwgMjM1LCAxODMsIDI1MCwgMCwgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgCisgICAgMjEwLCAyNDYsIDMzLCA0LCAxLCAyMTAsIDI0NiwgMzMsIDYsIDEsIDIyMywgNDksIDIxNSwgMTc4LCAzMywgNCwgMSwgMjIzLCAKKyAgICA0OSwgMjE1LCAxNzgsIDMzLCA2LCAxLCAyMTksIDUyLCAyNDgsIDkwLCAzMywgNCwgMSwgMjE5LCA1MiwgMjQ4LCA5MCwgMzMsIAorICAgIDYsIDEsIDIxOSwgNTIsIDI0NSwgMTc0LCAzMywgNCwgMSwgMjE5LCA1MiwgMjQ1LCAxNzQsIDMzLCA2LCAxLCAyMTksIDUyLCAKKyAgICAyNDUsIDE1OSwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0NSwgMTU5LCAzMywgNiwgMSwgMjMwLCAxNDQsIDc2LCAzMywgNCwgMSwgCisgICAgMjMwLCAxNDQsIDc2LCAzMywgNiwgMSwgMjUxLCAyNDAsIDc2LCAzMywgNCwgMSwgMjUxLCAyNDAsIDc2LCAzMywgNiwgMSwgCisgICAgNTIsIDIzMCwgMTQ0LCA3NiwgMzMsIDQsIDEsIDUyLCAyMzAsIDE0NCwgNzYsIDMzLCAxLCAyMzAsIDg2LCA3NiwgMzgsIDMzLCAKKyAgICAyMTIsIDEwMCwgMzgsIDMzLCAyMTYsIDI0OCwgMjMwLCAxOTEsIDUwLCAzOCwgMzMsIDI0MCwgMjExLCAyMzAsIDE5MSwgNTAsIAorICAgIDM4LCAzMywgMjE2LCAxNDgsIDIzMCwgMTkxLCA1MCwgMjE5LCA5MywgMjUzLCAyMTYsIDM4LCAzMywgMSwgMjE0LCAyMDIsIAorICAgIDIzNiwgNjAsIDM4LCAzMywgMSwgNzMsIDM4LCAzMywgMSwgMjExLCA4LCAzOCwgMzMsIDEsIDcwLCAzOCwgMzMsIDEsIDI0MiwgCisgICAgMywgNTAsIDM4LCAzMywgMSwgMjExLCAyNywgMzgsIDMzLCAxLCAyMTksIDUyLCA1MCwgMzgsIDMzLCAxLCAyMjYsIDIwMSwgCisgICAgMzgsIDMzLCAyMzQsIDE5MiwgMzgsIDMzLCAyMjUsIDIyNywgMzMsIDIzNCwgMTkyLCAzMywgMjI1LCAyMjcsIDMzLCA2LCAxLCAKKyAgICAyNDYsIDQ2LCAzMywgNCwgMSwgMjQ2LCA0NiwgMzMsIDYsIDEsIDI0NiwgMjcsIDMzLCA0LCAxLCAyNDYsIDI3LCAzMywgNiwgCisgICAgMSwgMjEwLCA1MiwgMzMsIDQsIDEsIDIxMCwgNTIsIDMzLCA2LCAxLCAyNTAsIDIwNiwgMzMsIDQsIDEsIDI1MCwgMjA2LCAKKyAgICAzMywgNiwgMSwgMjQ2LCAyNSwgMzMsIDQsIDEsIDI0NiwgMjUsIDMzLCA2LCAxLCAyMTcsIDIzLCAyLCAyMzAsIDIyNCwgCisgICAgMTAzLCAzMywgNCwgMSwgMjE3LCAyMywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDIxNSwgNzgsIDMzLCA0LCAxLCAKKyAgICAyMTUsIDc4LCAzMywgNiwgMSwgMjE1LCAxNjAsIDMzLCA0LCAxLCAyMTUsIDE2MCwgMzMsIDYsIDEsIDIxNSwgMTY0LCAzMywgCisgICAgNCwgMSwgMjE1LCAxNjQsIDMzLCA2LCAxLCAyMTcsIDI4LCAzMywgNCwgMSwgMjE3LCAyOCwgMzMsIDYsIDEsIDI0MCwgMTk4LCAKKyAgICAzMywgNCwgMSwgMjQwLCAxOTgsIDMzLCA2LCAxLCAyMTksIDIwNiwgMzMsIDQsIDEsIDIxOSwgMjA2LCAzOCwgMzMsIDEsIAorICAgIDIzNSwgMTgzLCA3NSwgMjAsIDEsIDYxLCAyMCwgMSwgMTc2LCAyMCwgMSwgNzAsIDIwLCAxLCAyMzMsIDIxNywgMjAsIDEsIAorICAgIDI0NSwgMjA5LCAyMCwgMSwgMjIzLCAxMDgsIDIwLCAxLCAyMTcsIDg2LCAyMCwgMSwgNzYsIDIwLCAxLCAyMjcsIDE0OCwgCisgICAgMjAsIDEsIDczLCAyMCwgMSwgMjMzLCAxMzUsIDIwLCAxLCAxOTAsIDIwLCAxLCAyMjIsIDIzOSwgMjAsIDEsIDIyMywgMjksIAorICAgIDIwLCAxLCAyMzMsIDQ5LCAyMCwgMSwgMjMxLCA3OSwgMjAsIDEsIDIxNywgMTAxLCAyMCwgMSwgMjI5LCAxNDYsIDIwLCAxLCAKKyAgICAyMjgsIDE4MywgMjAsIDEsIDE5MywgMjAsIDEsIDIxOCwgNCwgMjAsIDEsIDIzMCwgMTAyLCAyMCwgMSwgMjIwLCAyNywgMjAsIAorICAgIDEsIDIxOSwgMTkxLCAyMCwgMSwgMjIwLCAzNywgMjAsIDEsIDIyMCwgMTIzLCAyMCwgMSwgMjMzLCAxNTUsIDIwLCAxLCAKKyAgICAyMzQsIDE1NiwgMjAsIDEsIDIyNywgMjA5LCAyMCwgMSwgMjI3LCAyMzcsIDIwLCAxLCAyMjgsIDE1NCwgMjAsIDEsIDIxMCwgCisgICAgMjI2LCAyMCwgMSwgMjE5LCAyMjUsIDIwLCAxLCAyMTAsIDE4NywgMjAsIDEsIDE5MSwgMjAsIDEsIDIyOCwgOSwgMjAsIDEsIAorICAgIDIzNCwgMTQyLCAyMCwgMSwgMjI1LCAxNTEsIDIwLCAxLCAyMjgsIDE3NiwgMjAsIDEsIDIyNywgMjQ2LCAyMCwgMSwgMjI0LCAKKyAgICAxNDQsIDIwLCAxLCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMjExLCAyMCwgMSwgMjQ0LCAxNDcsIDIwLCAxLCAyMjIsIDE0MCwgCisgICAgMjAsIDEsIDIzMiwgOTgsIDIwLCAxLCAyMzAsIDIzMCwgMjAsIDEsIDIyOCwgMjMzLCAyMCwgMSwgMjIzLCA1MSwgMjAsIDEsIAorICAgIDIyMywgMTcxLCAyMCwgMSwgMjM0LCAxNjUsIDIwLCAxLCAyMjksIDcsIDIwLCAxLCAyMjksIDU2LCAyMCwgMSwgMjI5LCA3NywgCisgICAgMjAsIDEsIDIyMCwgNywgMjAsIDEsIDIyNCwgMTQ3LCAyMCwgMSwgMjQzLCAyMzQsIDIwLCAxLCAyNDQsIDM3LCAyMCwgMSwgCisgICAgMjEyLCA2NSwgMjAsIDEsIDE5NywgMjAsIDEsIDIzMiwgMjQxLCAyMCwgMSwgMjI1LCAxMDgsIDIwLCAxLCAyMzIsIDExOSwgCisgICAgMjAsIDEsIDIzNCwgMjgsIDIwLCAxLCAyMzEsIDExNCwgMjAsIDEsIDIyMywgODMsIDIwLCAxLCAyMzEsIDU4LCAyMCwgMSwgCisgICAgMTg0LCAyMCwgMSwgMjE2LCAxMTcsIDIwLCAxLCAyMzQsIDkyLCAyMCwgMSwgMjMwLCAxNjEsIDIwLCAxLCAyMzEsIDEyMiwgCisgICAgMjAsIDEsIDIxNiwgMjMwLCAyMCwgMSwgMjMzLCAyNTEsIDIwLCAxLCAyMTYsIDI0NywgMjAsIDEsIDIyNywgMjM4LCAyMCwgCisgICAgMSwgMjIxLCAyNTEsIDIwLCAxLCAyNDQsIDE5MiwgMjAsIDEsIDIzMywgMjUzLCAyMCwgMSwgMjM0LCAyNCwgMjAsIDM4LCAKKyAgICAxNjQsIDIzNCwgNSwgMjAsIDM4LCAxNjQsIDIxNSwgMTEwLCAyMCwgMjI4LCAxODIsIDIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDIwLCAyNDksIDIyNiwgMjAsIDI0OSwgMjE5LCAyMCwgMjIwLCAxNTAsIDIwLCAyMjQsIDEzLCA3OCwgNTgsIDEsIDI1MCwgCisgICAgOTYsIDEzOCwgMjEwLCAyNTQsIDIyNSwgNjEsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIDIyNSwgNjEsIDU4LCAxLCAKKyAgICAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjAsIDg0LCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAyMjAsIDg0LCAKKyAgICA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjI0LCAzMCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgCisgICAgMjI0LCAzMCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyMiwgMTQwLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAKKyAgICAyMTEsIDcwLCAyMjIsIDE0MCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAKKyAgICAxMTgsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMTgsIAorICAgIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ2LCAxMTgsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMCwgMjQ2LCAxMTgsIAorICAgIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMTI1LCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIAorICAgIDIyNSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAKKyAgICAxMzAsIDU4LCAxLCAyNDUsIDE5LCAyNDYsIDExOCwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyNDUsIDIwLCAyMzMsIAorICAgIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjMzLCAzOSwgMTM4LCAxMzAsIDU4LCAxLCAyMzAsIDIyNSwgMjMzLCAzOSwgCisgICAgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjMzLCAzOSwgMTM4LCAKKyAgICAxMzAsIDU4LCAxLCA1OSwgNjcsIDEzMCwgNTgsIDEsIDU5LCAyMTksIDk1LCA1OCwgMSwgNTksIDIwMywgMTMwLCA1OCwgMSwgCisgICAgMjMyLCAxMDgsIDQ0LCAyNDksIDE2MSwgMjU0LCAxMDksIDU4LCAxLCAyMjMsIDE1NywgMTIwLCA3NCwgNTgsIDEsIDIyMywgCisgICAgMTU3LCAxMjQsIDc0LCA1OCwgMSwgMjIzLCAxNTcsIDI0NSwgMzEsIDc4LCA1OCwgMSwgMjIzLCAxNTcsIDIzNSwgMTkzLCAKKyAgICAyNDUsIDMxLCA3OCwgNTgsIDEsIDEyMSwgMjM1LCAxOTMsIDI0NSwgMzEsIDc4LCA1OCwgMSwgMjE4LCAxMTEsIDIyLCAxMjUsIAorICAgIDIxNiwgMzAsIDU4LCAxLCAyMTgsIDExMSwgMjIsIDEyMSwgMjE2LCAzMCwgNywgNiwgMSwgMjQ1LCAxOTksIDI1NCwgMTcwLCAKKyAgICA3LCA0LCAxLCAyNDUsIDE5OSwgMjU0LCAxNzAsIDcsIDYsIDEsIDI0NSwgMTk5LCAyNTQsIDE5NiwgNywgNCwgMSwgMjQ1LCAKKyAgICAxOTksIDI1NCwgMTk2LCA3LCA2LCAxLCAyNDEsIDIwNywgNywgNCwgMSwgMjQxLCAyMDcsIDcsIDYsIDEsIDIxNSwgNDAsIDcsIAorICAgIDQsIDEsIDIxNSwgNDAsIDcsIDYsIDEsIDIxNSwgMjI5LCA3LCA0LCAxLCAyMTUsIDIyOSwgNywgNiwgMSwgMjQ5LCAxMTAsIAorICAgIDcsIDQsIDEsIDI0OSwgMTEwLCA3LCA2LCAxLCAyNDksIDExMSwgMiwgMjQ5LCAyMTksIDcsIDQsIDEsIDI0OSwgMTExLCAyLCAKKyAgICAyNDksIDIxOSwgNywgMSwgNCwgNiwgMjQ1LCA2LCA3LCAxLCA0LCA2LCAyMjIsIDkxLCA3LCA2LCAxLCAyNTUsIDczLCA3LCAKKyAgICA0LCAxLCAyNTUsIDczLCA3LCA2LCAxLCAyNTQsIDczLCA3LCA0LCAxLCAyNTQsIDczLCA3LCA2LCAxLCAyNTMsIDE5MiwgNywgCisgICAgNCwgMSwgMjUzLCAxOTIsIDcsIDYsIDEsIDI1MywgMTc2LCA3LCA0LCAxLCAyNTMsIDE3NiwgNywgNiwgMSwgMjUzLCAxNzcsIAorICAgIDIsIDIwMywgMTMwLCA3LCA0LCAxLCAyNTMsIDE3NywgMiwgMjAzLCAxMzAsIDcsIDYsIDEsIDI1MywgMTY3LCA3LCA0LCAxLCAKKyAgICAyNTMsIDE2NywgNywgNiwgMSwgMjIzLCA0OSwgMjUxLCA2NywgMiwgMjQ3LCAxMjAsIDcsIDQsIDEsIDIyMywgNDksIDI1MSwgCisgICAgNjcsIDIsIDI0NywgMTIwLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgOTEsIDcsIDYsIAorICAgIDEsIDIzNSwgMjQsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAKKyAgICAyMzUsIDI0LCAyLCAyMTgsIDEwMywgMjIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjE4LCAxMDMsIAorICAgIDIyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIDI1MSwgMTM1LCAxNTYsIDcsIDQsIDEsIDI1MSwgMTM1LCAxNTYsIDcsIDYsIAorICAgIDEsIDIzMywgMTQ5LCAyLCAxMjUsIDkxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAxOTksIDIxOCwgMTAzLCAyMjYsIDEyMCwgNywgNCwgMSwgMTQ0LCAyLCAxOTksIDIxOCwgMTAzLCAyMjYsIDEyMCwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyMzIsIDEyMywgNywgNCwgMSwgMTQ0LCAyLCAyMzIsIDEyMywgNywgNiwgMSwgMjI2LCAxODMsIDcsIDQsIAorICAgIDEsIDIyNiwgMTgzLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAKKyAgICAyMjYsIDEwNiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjQ0LCA1MywgCisgICAgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDI0NCwgNTMsIDcsIDYsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDIyOSwgMjE3LCA3NywgCisgICAgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMjI5LCAyMTcsIDc3LCA3LCA2LCAxLCAyMjQsIDk3LCAyLCAyMTgsIDEwMywgCisgICAgMjE2LCAxMzksIDI0OCwgMzksIDcsIDQsIDEsIDIyNCwgOTcsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgCisgICAgNiwgMSwgMjI0LCA5NywgMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAyMjQsIDk3LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIAorICAgIDEsIDIyMywgMjI0LCAyMjIsIDE4NiwgNywgNCwgMSwgMjIzLCAyMjQsIDIyMiwgMTg2LCA3LCA2LCAxLCAyMjIsIDEzMCwgCisgICAgMjIyLCAxODYsIDcsIDQsIDEsIDIyMiwgMTMwLCAyMjIsIDE4NiwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDI0NywgMjU1LCAKKyAgICA5MSwgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgMjEyLCAxMDYsIDcsIDQsIDEsIDIxMiwgCisgICAgMTA2LCA3LCA2LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDQsIDEsIDIxMywgMTQ1LCAyMTAsIDE1OSwgNywgNiwgMSwgCisgICAgMjE2LCAxNTIsIDIsIDkxLCA3LCA0LCAxLCAyMTYsIDE1MiwgMiwgOTEsIDcsIDYsIDEsIDIxNiwgMTUyLCAyLCAyMTgsIAorICAgIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIDQsIDEsIDIxNiwgMTUyLCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgCisgICAgMzksIDcsIDYsIDEsIDIxMywgMjQ1LCA3LCA0LCAxLCAyMTMsIDI0NSwgNywgNiwgMSwgMjQ1LCA2NSwgNywgNCwgMSwgMjQ1LCAKKyAgICA2NSwgNywgNiwgMSwgMjM1LCAxNzEsIDcsIDQsIDEsIDIzNSwgMTcxLCA3LCA2LCAxLCAyNDksIDIwNywgNywgNCwgMSwgCisgICAgMjQ5LCAyMDcsIDU4LCAxLCAyMTQsIDEzMywgNywgNCwgMSwgMjQ2LCA2OSwgNywgNCwgMSwgMjMyLCA4NCwgNywgNCwgMSwgCisgICAgMjMwLCA4MCwgNywgNCwgMSwgMjI3LCAyMDEsIDcsIDQsIDEsIDIyMiwgMTI5LCA3LCAxLCA0LCA2LCAyMjIsIDEyOSwgNywgCisgICAgNCwgMSwgMjE1LCAxMDgsIDcsIDQsIDEsIDIxNCwgMTk3LCA3LCA2LCAxLCAyMzUsIDIxMywgMjQ5LCA2MCwgNywgNCwgMSwgCisgICAgMjM1LCAyMTMsIDI0OSwgNjAsIDcsIDYsIDEsIDIzNSwgMjEzLCAyNDUsIDYsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDUsIDYsIAorICAgIDcsIDYsIDEsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNiwgMSwgMjE1LCA5NCwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA0LCAKKyAgICAxLCAyMTUsIDk0LCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDYsIDEsIDIxNSwgOTQsIDE1NiwgNywgNCwgMSwgMjE1LCA5NCwgCisgICAgMTU2LCA3LCA2LCAxLCAyMzUsIDIxMywgMTUzLCA3LCA0LCAxLCAyMzUsIDIxMywgMTUzLCA3LCA2LCAxLCAyMzUsIDIxMywgCisgICAgMjIyLCA5MSwgNywgNCwgMSwgMjM1LCAyMTMsIDIyMiwgOTEsIDcsIDYsIDEsIDIzNSwgMjEzLCAyMTcsIDE1MiwgNywgNCwgCisgICAgMSwgMjM1LCAyMTMsIDIxNywgMTUyLCA1OCwgMSwgMTIxLCAyNTAsIDMxLCAyNTUsIDE0LCA1OCwgMSwgMjQ5LCAyMjYsIDU4LCAKKyAgICAxLCAyMTksIDI1MSwgMjQ1LCA5OCwgNTAsIDcsIDYsIDEsIDIyMSwgMjU1LCA3LCA0LCAxLCAyMjEsIDI1NSwgNywgNiwgMSwgCisgICAgMjE1LCA5NCwgMjQyLCA2MCwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIyMywgNTUsIDI0MSwgNTIsIDIyLCAyNTIsIDQxLCA3LCAKKyAgICA2LCAxLCAyMzAsIDI2LCAyLCAyNDgsIDM5LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyNTEsIAorICAgIDY3LCAyLCAxMzAsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDEzMCwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgMjQ4LCA5MSwgCisgICAgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjM1LCAyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCAKKyAgICA0LCAxLCAyMzUsIDI0LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgCisgICAgMSwgMjMwLCAyNiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIDEsIAorICAgIDIyMiwgOTIsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMTAzLCA1OCwgMSwgNiwgMjQyLCA2MSwgMiwgCisgICAgOTEsIDU4LCAxLCA0LCAyNywgMjI2LCAyMzQsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDE5MywgNywgMjQ1LCAxMDMsIDEsIAorICAgIDIyMywgNDksIDI0NSwgNiwgNywgMjQ1LCAxMDMsIDEsIDIyMywgNDksIDIyNiwgMTA1LCA3LCAyNDUsIDEwMywgMSwgMjM1LCAKKyAgICAxOTMsIDE5MywgNywgMjQ1LCAxMDMsIDEsIDI0MCwgMTU0LCAyMzIsIDEyOSwgNywgMjQ1LCAxMDMsIDEsIDI1NCwgMjMsIAorICAgIDE5MywgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA2MSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3MywgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCA1LCAyNDYsIDQ4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDcwLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDc1LCAKKyAgICAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDc2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDUsIDI0MSwgMjUzLCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDIzNCwgMjgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjM0LCAxMDUsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMjQyLCAxNzQsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQyLCAyMjQsIDIxNywgMjMwLCAyMjksIDIxNCwgNSwgCisgICAgMjU0LCA3NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDksIDIzOCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNTAsIDg2LCAKKyAgICAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNSwgNjgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjM1LCAxMDksIDIxNywgCisgICAgMjMwLCAyMjksIDIxNCwgMSwgMjE1LCAxMzMsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE1LCAxMzksIDIxNywgMjMwLCAKKyAgICAyMjksIDIxNCwgMSwgMjQ4LCAxMDUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ4LCAxMTQsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMTExLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxNiwgMTU2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0NywgCisgICAgMTQ1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OCwgNywgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjgsIDc0LCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDEsIDIyNSwgMTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjI1LCAxMjEsIDIxNywgMjMwLCAKKyAgICAyMjksIDIxNCwgMSwgMjUxLCAyMDUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjUyLCAxMCwgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAxLCAyMzAsIDE2MSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjIsIDIxMSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAKKyAgICAyMzIsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMjIsIDE2NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTksIAorICAgIDU4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0MSwgNjgsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDYxLCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA3MywgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNzAsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMjUsIDUsIDc1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCAyMjYsIDE4MywgMjE3LCAyMzAsIDIyOSwgMjE0LCAKKyAgICAyMjUsIDEyLCAyMzEsIDE1OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyMjUsIDEyLCAyMzEsIDE1NywgMjE3LCAyMzAsIDIyOSwgCisgICAgMjE0LCAyMjUsIDEyLCAyMzEsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyMjUsIDEyLCAyMzEsIDE1NSwgMjI4LCA1NiwgCisgICAgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyMjQsIDIxLCAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMjMsIDI0MiwgMjcsIAorICAgIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEzNCwgMjI0LCAxOSwgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAKKyAgICAyMTksIDExNywgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyNDUsIDE4OCwgMjI4LCA1NiwgMjM1LCAyNDAsIAorICAgIDI0NCwgMiwgMTM0LCAyMTksIDExNiwgMjI4LCA1NiwgMjM1LCAyNDAsIDIyNCwgMjIsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgCisgICAgMjI1LCA0MCwgNzgsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjIsIDExOCwgNzgsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjQsIDIzLCAKKyAgICA3OCwgMjI1LCAxNDQsIDEsIDE3NiwgMjI1LCAxNDQsIDEsIDIzNCwgMTMyLCAyMjUsIDE0NCwgMSwgMjQzLCAxMzUsIDIyNSwgCisgICAgMTQ0LCAxLCAyMjksIDc3LCAyMjUsIDE0NCwgMSwgMjUxLCAzMywgMjI1LCAxNDQsIDEsIDI1MCwgMTU3LCAyMjUsIDE0NCwgCisgICAgMSwgMjM1LCAxNDEsIDIyNSwgMTQ0LCAxLCAyMjcsIDE2NSwgMjI1LCAxNDQsIDEsIDIxNywgMTA1LCAyMjUsIDE0NCwgMSwgCisgICAgMjE2LCAyMDgsIDIyNSwgMTQ0LCAxLCAyNDgsIDIyMSwgMjI1LCAxNDQsIDEsIDE5NywgMjI1LCAxNDQsIDEsIDE5MCwgMjI1LCAKKyAgICAxNDQsIDEsIDIyNSwgMTQ3LCAyMjUsIDE0NCwgMSwgMjUyLCAxOTEsIDIyNSwgMTQ0LCAxLCAxODQsIDIyNSwgMTQ0LCAxLCAKKyAgICAyMTUsIDE4MywgMjI1LCAxNDQsIDEsIDIxNSwgMTc1LCAyMjUsIDE0NCwgMSwgMjQ2LCAzOCwgMjI1LCAxNDQsIDEsIDIxMiwgCisgICAgNjUsIDIyNSwgMTQ0LCAxLCAyMTAsIDgyLCAyMjUsIDE0NCwgMSwgMjEwLCAxMTYsIDIyNSwgMTQ0LCAxLCA0LCA2MSwgMjI1LCAKKyAgICAxNDQsIDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIwNSwgMjI1LCAxNDQsIDEsIDIzMywgMTM1LCAyMjUsIDE0NCwgMSwgMjIwLCAKKyAgICAxMDIsIDIyNSwgMTQ0LCAxLCAyMDYsIDIyNSwgMTQ0LCAxLCAxNjIsIDIyNSwgMTQ0LCAxLCA2MSwgMjI1LCAxNDQsIDEsIAorICAgIDczLCAyMjUsIDE0NCwgMSwgNzAsIDIyNSwgMTQ0LCAxLCA3NSwgMjI1LCAxNDQsIDEsIDc2LCAyMjUsIDE0NCwgMSwgMjI0LCAKKyAgICA4OCwgMjI1LCAxNDQsIDEsIDIxMSwgMTY1LCAyMjUsIDE0NCwgMSwgMjQ0LCAxOTYsIDIyNSwgMTQ0LCAxLCAyNDMsIDI5LCAKKyAgICAyMjUsIDE0NCwgMSwgMjQ1LCAyMDksIDIyNSwgMTQ0LCAyMTgsIDczLCAxLCAyMTIsIDY1LCAyMjUsIDE0NCwgMjE4LCA3MywgCisgICAgMSwgMTkxLCAyMjUsIDE0NCwgMSwgMjE1LCAxNTYsIDIyNSwgMTQ0LCAxLCAyMTUsIDE0NCwgMjI1LCAxNDQsIDEsIDI0OCwgCisgICAgMTM1LCAyMjUsIDE0NCwgMSwgMjI4LCAxMTAsIDIyNSwgMTQ0LCAxLCAyNTQsIDE0MSwgMTkxLCAyMjUsIDE0NCwgMSwgMjEzLCAKKyAgICAxMzQsIDIyMCwgMTAyLCAyMjUsIDE0NCwgMSwgMjEzLCAxMzUsIDE2MiwgMjI1LCAxNDQsIDEsIDI1MywgMjIzLCAyNDQsIAorICAgIDE5NiwgMjI1LCAxNDQsIDIxOCwgNzMsIDEsIDIwNSwgMjI1LCAxNDQsIDIxOCwgMjUsIDEsIDIwNSwgMjI1LCAxNDQsIDEsIAorICAgIDI1MCwgMjU1LCAyMjUsIDE0NCwgMjE5LCAxNTUsIDI0MSwgMjM2LCA3OCwgMjI1LCAxNDQsIDUyLCAyNDEsIDIzNiwgNzgsIAorICAgIDIyNSwgMTQ0LCAxNjQsIDIyMCwgOTUsIDIyNSwgMTQ0LCAxNjQsIDUyLCAyMjAsIDk1LCAxNzksIDUsIDI1NCwgNzUsIDE3OSwgCisgICAgNSwgMjEzLCAxNDcsIDE3OSwgMSwgNjEsIDE3OSwgMSwgMjU1LCA3MywgMTc5LCAxLCA3MywgMTc5LCAxLCAyMzYsIDMzLCAKKyAgICAxNzksIDEsIDcwLCAxNzksIDEsIDIxNCwgMTE4LCAxNzksIDEsIDE0OSwgMTUzLCAxNzksIDEsIDE0OSwgMjIyLCAxODAsIAorICAgIDE3OSwgMSwgMTQ5LCAxNTYsIDE3OSwgMSwgMTQ5LCAyMzIsIDE4NSwgMTc5LCAxLCA3NSwgMTc5LCAxLCAyNDUsIDIwOSwgCisgICAgMTc5LCAxLCAyNTQsIDIwMSwgMTc5LCAxLCA3NiwgMTc5LCAxLCAyMjYsIDE4MywgMTc5LCAxLCAyNTMsIDE5MiwgMTc5LCAxLCAKKyAgICAxNzYsIDE3OSwgMSwgMjM0LCAxMzIsIDE3OSwgMSwgMjQzLCAxMzUsIDE3OSwgMSwgMjQyLCAyNDksIDE3OSwgMSwgMjI5LCAKKyAgICA3NywgMTc5LCAxLCAyNTEsIDMzLCAxNzksIDEsIDI1MCwgMTU3LCAxNzksIDEsIDIzNSwgMTQxLCAxNzksIDEsIDIzNSwgCisgICAgMTE0LCAxNzksIDEsIDIyNywgMTY1LCAxNzksIDEsIDIxNSwgMTU2LCAxNzksIDEsIDIxNSwgMTQ0LCAxNzksIDEsIDI0OCwgCisgICAgMTM1LCAxNzksIDEsIDI0OCwgMTE5LCAxNzksIDEsIDIyOCwgMTEwLCAxNzksIDEsIDIxNywgMTA1LCAxNzksIDEsIDIxNiwgCisgICAgMjA4LCAxNzksIDEsIDI0OCwgMjIxLCAxNzksIDEsIDI0OCwgMjUsIDE3OSwgMSwgMTk3LCAxNzksIDEsIDE5MCwgMTc5LCAxLCAKKyAgICAyMjUsIDE0NywgMTc5LCAxLCAyNTIsIDE5MSwgMTc5LCAxLCAyNTIsIDE4LCAxNzksIDEsIDE4NCwgMTc5LCAxLCAxOTEsIAorICAgIDE3OSwgMSwgMjA1LCAxNzksIDEsIDIzMywgMTM1LCAxNzksIDEsIDIxNCwgMjcsIDE3OSwgMSwgMjIwLCAxMDIsIDE3OSwgMSwgCisgICAgMjE4LCAyMjMsIDE3OSwgMSwgMjA2LCAxNzksIDEsIDE2MiwgMTc5LCAxLCAyMzIsIDE4NCwgMTc5LCAxMTYsIDUsIDI0MiwgCisgICAgNDQsIDE3OSwgMjUsIDUsIDI1NSwgNzMsIDE3OSwgMjUsIDUsIDczLCAxNzksIDI1LCA1LCAyMzYsIDMzLCAxNzksIDI1LCA1LCAKKyAgICA3MCwgMTc5LCAyNSwgNSwgMjE0LCAxMTgsIDE3OSwgMjUsIDUsIDE0OSwgMTUzLCAxNzksIDI1LCA1LCAxNDksIDIyMiwgCisgICAgMTgwLCAxNzksIDI1LCA1LCAxNDksIDE1NiwgMTc5LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTc5LCAyNSwgNSwgNzUsIAorICAgIDE3OSwgMjUsIDUsIDI0NSwgMjA5LCAxNzksIDI1LCA1LCAyNTQsIDIwMSwgMTc5LCAyNSwgNSwgNzYsIDE3OSwgMjUsIDUsIAorICAgIDIyNiwgMTgzLCAxNzksIDI1LCA1LCAyNTMsIDE5MiwgMTc5LCA1LCAyMTMsIDE1MiwgMTc5LCAyNDgsIDE3OCwgMTc5LCA1MiwgCisgICAgMjQ4LCAxNzgsIDE3OSwgMjEsIDIxMCwgODYsIDE3OSwgMjEsIDExMCwgMTc5LCAyMSwgMTA1LCAxNzksIDIxLCAxNTgsIAorICAgIDE3OSwgMjEsIDE2MSwgMTc5LCAyMSwgMTg5LCAxNzksIDIxLCAxOTQsIDE3OSwgMjEsIDE5OCwgMTc5LCAyMSwgMTk1LCAKKyAgICAxNzksIDIxLCAyMDAsIDM4LCA4NCwgMjEsIDIxMCwgODYsIDM4LCA4NCwgMjEsIDExMCwgMzgsIDg0LCAyMSwgMTA1LCAzOCwgCisgICAgODQsIDIxLCAxNTgsIDM4LCA4NCwgMjEsIDE2MSwgMzgsIDg0LCAyMSwgMTg5LCAzOCwgODQsIDIxLCAxOTQsIDM4LCA4NCwgCisgICAgMjEsIDE5OCwgMzgsIDg0LCAyMSwgMTk1LCAzOCwgODQsIDIxLCAyMDAsIDM4LCA4NCwgMSwgNjEsIDM4LCA4NCwgMSwgNzAsIAorICAgIDM4LCA4NCwgMSwgMTc2LCAzOCwgODQsIDEsIDE5NywgMzgsIDg0LCAxLCAxOTAsIDM4LCA4NCwgMSwgMjA1LCAzOCwgODQsIAorICAgIDEsIDIxMywgMTc2LCAzOCwgODQsIDUsIDI1MywgMTc1LCA4NCwgNSwgMjE5LCAxNywgMjUwLCAyNTUsIDg0LCA1LCAyNTEsIAorICAgIDAsIDIxMywgMTUyLCA4NCwgNSwgNTIsIDI1MSwgMCwgMjEzLCAxNTIsIDg0LCA1LCAyNTEsIDAsIDEwNSwgODQsIDUsIDI1MSwgCisgICAgMCwgMTU4LCA4NCwgNSwgMjUxLCAwLCAyNTMsIDE3NSwgODQsIDUsIDIyNCwgMTI0LCA4NCwgMjQzLCAxMDAsIDI0NCwgMTAzLCAKKyAgICA4NCwgMjUwLCAyMzgsIDg0LCAyNDEsIDIzMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMjEwLCA4NiwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAyMSwgMTEwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxMDUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIAorICAgIDE1OCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTYxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAxODksIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMjEsIDE5NCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTk4LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAKKyAgICAxOTUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDIwMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxNzYsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMSwgMjM0LCAxMzIsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjQzLCAxMzUsIDIzNCwgMTg4LCAyMzIsIAorICAgIDI0MiwgMSwgMjI5LCA3NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMDYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjIwLCAKKyAgICAxMDIsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjEwLCAxMTYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjI3LCAxNjUsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE3LCAxMDUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjQwLCAyMjYsIDIzNCwgCisgICAgMTg4LCAyMzIsIDI0MiwgMSwgMTk3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE5MCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAKKyAgICAyMjUsIDE0NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxODQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjQ4LCAyMjEsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjUyLCAxOTEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjA1LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDE5MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMzMsIDEzNSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAKKyAgICAyMTIsIDY1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNiwgMjA4LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDE2MiwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTQsIDI3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI1MSwgMzMsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMSwgNjEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjI2LCAyMzQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgNzMsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjI2LCAxODMsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDIxNCwgMjE0LCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCA3NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzAsIDIzNCwgMTg4LCAyMzIsIAorICAgIDI0MiwgMjUsIDI0NSwgMjA5LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCA3NiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIAorICAgIDIyNSwgMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAyNTEsIDEyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgMjUxLCAKKyAgICAxMywgMjI1LCAzMCwgMjM0LCAxODgsIDIzMiwgMjQyLCA1LCAyNDksIDc3LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDUsIDIxOSwgCisgICAgMTk5LCAyMjMsIDkzLCAxLCAxNzYsIDIyMywgOTMsIDEsIDI0MywgMTM1LCAyMjMsIDkzLCAxLCAyMjksIDc3LCAyMjMsIDkzLCAKKyAgICAxLCAyMTcsIDEwNSwgMjIzLCA5MywgMSwgMjQ4LCAyMjEsIDIyMywgOTMsIDEsIDE5NywgMjIzLCA5MywgMSwgMTkwLCAyMjMsIAorICAgIDkzLCAxLCAyNTIsIDE5MSwgMjIzLCA5MywgMSwgMTg0LCAyMjMsIDkzLCAxLCAyNTEsIDMzLCAyMjMsIDkzLCAxLCAyMzUsIAorICAgIDE0MSwgMjIzLCA5MywgMSwgMjI3LCAxNjUsIDIyMywgOTMsIDEsIDIwNiwgMjIzLCA5MywgMSwgMjA1LCAyMjMsIDkzLCAxLCAKKyAgICAyMzMsIDEzNSwgMjIzLCA5MywgMSwgMTkxLCAyMjMsIDkzLCAxLCAyMTIsIDY1LCAyMjMsIDkzLCAxLCAxNjIsIDIyMywgOTMsIAorICAgIDEsIDIzMSwgMTI0LCAyMjMsIDkzLCAxLCAyMjksIDU2LCAyMjMsIDkzLCAxLCAyMjksIDE0OCwgMjIzLCA5MywgMSwgMjI3LCAKKyAgICAxMzUsIDIyMywgOTMsIDEsIDYxLCAyMjMsIDkzLCAyNSwgNSwgNzMsIDIyMywgOTMsIDI1LCA1LCA3MCwgMjIzLCA5MywgMjUsIAorICAgIDUsIDc1LCAyMjMsIDkzLCAyNSwgNSwgMjU0LCAyMDEsIDIyMywgOTMsIDI1LCA1LCA3NiwgMjIzLCA5MywgMjUsIDUsIDI1MywgCisgICAgMTkyLCAyMjMsIDkzLCAyNSwgNSwgMjQ1LCA1NSwgMjIzLCA5MywgMjUsIDUsIDI0NSwgMjMzLCAyMjMsIDkzLCAxMTYsIDUsIAorICAgIDIyOSwgNzksIDIyMywgOTMsIDExNiwgNSwgMjMwLCAyNSwgMjIzLCA5MywgMTE2LCA1LCAxNTMsIDIyMywgOTMsIDExNiwgNSwgCisgICAgMjQyLCA2MCwgMjIzLCA5MywgMjEzLCAxNTIsIDIyMywgOTMsIDIyMSwgMTczLCA3OCwgMjQsIDEwMCwgMjE2LCA5NywgMjQsIAorICAgIDEwMCwgMjE2LCA5NiwgMjQsIDEwMCwgMjE2LCA5NCwgMjQsIDEwMCwgMjE2LCA5OSwgMjQsIDEwMCwgMjIzLCAyMSwgMjQsIAorICAgIDEwMCwgMjIzLCA1LCAyNCwgMTAwLCAyMjMsIDAsIDI0LCAxMDAsIDIyMywgMiwgMjQsIDEwMCwgMjIzLCAxOCwgMjQsIDEwMCwgCisgICAgMjIzLCAxMSwgMjQsIDEwMCwgMjIzLCA0LCAyNCwgMTAwLCAyMjMsIDIzLCAyNCwgMTAwLCAyMjMsIDYsIDI0LCAxMDAsIAorICAgIDIyMywgMjUsIDI0LCAxMDAsIDIyMywgMjIsIDI0LCAxMDAsIDIzMCwgMjEzLCAyNCwgMTAwLCAyMzAsIDIwNCwgMjQsIDEwMCwgCisgICAgMjMwLCAyMDcsIDI0LCAxMDAsIDIyNSwgODAsIDI0LCAxMDAsIDIyNSwgOTEsIDI0LCAxMDAsIDIyNSwgOTIsIDI0LCAxMDAsIAorICAgIDIxOCwgMjA3LCAyNCwgMTAwLCAyMzYsIDQ2LCAyNCwgMTAwLCAyMzYsIDUzLCAyNCwgMTAwLCAyMTgsIDIxOCwgMjQsIDEwMCwgCisgICAgMjE4LCAyMDUsIDI0LCAxMDAsIDIyNSwgMTMwLCAyNCwgMTAwLCAyNDEsIDE2NywgMjQsIDEwMCwgMjE4LCAyMDIsIDE1NSwgCisgICAgNSwgMjI2LCAyNywgMTU1LCA1LCAyNTAsIDE4NywgMTU1LCA1LCAyMzMsIDY2LCAxNTUsIDUsIDIxMSwgMjQzLCAxNTUsIDEsIAorICAgIDYxLCAxNTUsIDEsIDI0MCwgMTU0LCAyMzQsIDE5MSwgMTU1LCAxLCA3MywgMTU1LCAxLCAyMzYsIDMzLCAxNTUsIDEsIDcwLCAKKyAgICAxNTUsIDEsIDIyNiwgOTAsIDI1MCwgMTYzLCAxNTUsIDEsIDIyOSwgNzgsIDIzMywgMjgsIDE1NSwgMSwgMjI5LCA3OCwgCisgICAgMjMzLCAyOSwgMjIzLCAxNDIsIDE1NSwgMSwgNzUsIDE1NSwgMSwgMjU0LCAyMDEsIDE1NSwgMSwgNzYsIDE1NSwgMSwgMTc2LCAKKyAgICAxNTUsIDEsIDIzNSwgMTMsIDIyMSwgMjI4LCAxNTUsIDEsIDIzNSwgMTMsIDIzMCwgNjYsIDE1NSwgMSwgMjQzLCAxMzUsIAorICAgIDE1NSwgMSwgMjQzLCAxMzYsIDIzMCwgNjYsIDE1NSwgMSwgMjI5LCA3NywgMTU1LCAxLCAyNTEsIDMzLCAxNTUsIDEsIDI1MSwgCisgICAgMzQsIDIzMCwgNjYsIDE1NSwgMSwgMjM1LCAxNDEsIDE1NSwgMSwgMjI3LCAxNjYsIDIzMCwgNjYsIDE1NSwgMSwgMjM1LCAKKyAgICAxNDIsIDIzMSwgMjA3LCAxNTUsIDEsIDIyNywgMTY1LCAxNTUsIDEsIDIxNSwgMTU2LCAxNTUsIDEsIDIxNSwgMTU3LCAyMzEsIAorICAgIDIwNywgMTU1LCAxLCAyNDgsIDEzNSwgMTU1LCAxLCAyNDgsIDEzNiwgMjMxLCAyMDcsIDE1NSwgMSwgMjI5LCAyMjksIDIzMCwgCisgICAgNjYsIDE1NSwgMSwgMjE3LCAxMDUsIDE1NSwgMSwgMjE3LCAxMDYsIDIzMCwgNjYsIDE1NSwgMSwgMjQ4LCAyMjEsIDE1NSwgCisgICAgMSwgMjQ4LCAyMjIsIDIzMSwgMjA3LCAxNTUsIDEsIDE5NywgMTU1LCAxLCAxOTAsIDE1NSwgMSwgMjI2LCA5MCwgMjMwLCAKKyAgICA2NiwgMTU1LCAxLCAyNTIsIDE5MSwgMTU1LCAxLCAyNTIsIDE5MiwgMjMwLCA2NiwgMTU1LCAxLCAxODQsIDE1NSwgMSwgCisgICAgMTkxLCAxNTUsIDEsIDIwNSwgMTU1LCAxLCAyMjMsIDE4OCwgMjU0LCAyMTAsIDE1NSwgMSwgMjMzLCAxMzUsIDE1NSwgMSwgCisgICAgMjEyLCA2NSwgMTU1LCAxLCAyMjIsIDM0LCAyMzAsIDY2LCAxNTUsIDEsIDIyMiwgMzQsIDIzMSwgMjA3LCAxNTUsIDEsIAorICAgIDIwNiwgMTU1LCAxLCAxNjIsIDE1NSwgNSwgMjUwLCAxODgsIDIxNiwgMjUwLCAxNTUsIDI1LCA1LCAyMTcsIDQ3LCAxNTUsIAorICAgIDI1LCA1LCAyMTYsIDM1LCAxNTUsIDI1LCA1LCAyMTEsIDE5MCwgMTU1LCAyNSwgNSwgMjExLCAxOTEsIDIzMSwgNjksIDE1NSwgCisgICAgMjUsIDUsIDIxOCwgNDcsIDE1NSwgMjUsIDUsIDIxOCwgNDgsIDIzMSwgNTcsIDE1NSwgMjUsIDUsIDIxNywgNjUsIDE1NSwgCisgICAgMjUsIDUsIDI0NywgMTk0LCAyMzAsIDY1LCAxNTUsIDI1LCA1LCAyMjUsIDE4NCwgMTU1LCAxMTYsIDUsIDIzNCwgMTU4LCAKKyAgICAxNTUsIDExNiwgNSwgMjI1LCAxOTYsIDE1NSwgMTE2LCA1LCAyNTEsIDE5LCAxNTUsIDIyNiwgNDAsIDE1NSwgNDMsIDIyMywgCisgICAgNjksIDE1NSwgNDQsIDIyMywgNjksIDE1NSwgMjI2LCA3OSwgMjU0LCAxMTcsIDE1NSwgMjI2LCA3OSwgMjMxLCAyMjQsIAorICAgIDE1NSwgMjI2LCA3OSwgMjMyLCA4OCwgMTU1LCAyMjYsIDc5LCAyMTEsIDIzOCwgMTU1LCAyMjYsIDc5LCAyMjYsIDQxLCAKKyAgICAxNTUsIDIyNiwgNzksIDIzMiwgMjA1LCAxNTUsIDIyNiwgNzksIDIzMiwgODIsIDE1NSwgMjI2LCA3OSwgMjU0LCAyNDksIAorICAgIDE1NSwgMjI2LCA3OSwgMjU0LCAyNTAsIDI1NCwgMjQ5LCAxNTUsIDIyNiwgNzksIDIyNSwgNTEsIDE1NSwgMjE1LCA5NCwgCisgICAgMjI2LCA3OSwgMjI1LCA1MSwgMTU1LCAyMjYsIDM2LCAxNTUsIDIxLCAyMTAsIDg2LCAxNTUsIDIxLCAxMTAsIDE1NSwgMjEsIAorICAgIDEwNSwgMTU1LCAyMSwgMTU4LCAxNTUsIDIxLCAxNjEsIDE1NSwgMjEsIDE4OSwgMTU1LCAyMSwgMTk0LCAxNTUsIDIxLCAKKyAgICAxOTgsIDE1NSwgMjEsIDE5NSwgMTU1LCAyMSwgMjAwLCAxNTUsIDIyNiwgNzksIDIxNiwgNjksIDIxNSwgMTA2LCAxNTUsIAorICAgIDIyNiwgNzksIDIzNSwgMTY3LCAxNzIsIDEsIDYxLCAxNzIsIDEsIDczLCAxNzIsIDEsIDcwLCAxNzIsIDEsIDc1LCAxNzIsIAorICAgIDEsIDI1NCwgMjAxLCAxNzIsIDEsIDc2LCAxNzIsIDEsIDE3NiwgMTcyLCAxLCAyMzQsIDEzMiwgMTcyLCAxLCAyNDMsIDEzNSwgCisgICAgMTcyLCAxLCAyNDIsIDI0OSwgMTcyLCAxLCAyMjgsIDI0NSwgMTcyLCAxLCAyMjksIDc3LCAxNzIsIDEsIDI1MCwgMTU3LCAKKyAgICAxNzIsIDEsIDI1MCwgMTEyLCAxNzIsIDEsIDIzNSwgMTQxLCAxNzIsIDEsIDIzNSwgMTE0LCAxNzIsIDEsIDIyOCwgMjM1LCAKKyAgICAxNzIsIDEsIDIyOCwgMjM3LCAxNzIsIDEsIDIyOCwgMjM2LCAxNzIsIDEsIDIxNywgMTA1LCAxNzIsIDEsIDIxNiwgMjA4LCAKKyAgICAxNzIsIDEsIDI0OCwgMjIxLCAxNzIsIDEsIDI0OCwgMjUsIDE3MiwgMSwgMjI3LCAyMDcsIDE3MiwgMSwgMTk3LCAxNzIsIDEsIAorICAgIDI0OCwgMTM1LCAxNzIsIDEsIDE5MCwgMTcyLCAxLCAyMjQsIDIyMCwgMTcyLCAxLCAyMjUsIDE0NywgMTcyLCAxLCAyNTIsIAorICAgIDE5MSwgMTcyLCAxLCAyNTIsIDE4LCAxNzIsIDEsIDIzMCwgOTUsIDE3MiwgMSwgMTg0LCAxNzIsIDEsIDI1MiwgMTExLCAKKyAgICAxNzIsIDEsIDE5MSwgMTcyLCAxLCAyMDUsIDE3MiwgMSwgMjMzLCAxMzUsIDE3MiwgMSwgMjE0LCAyNywgMTcyLCAxLCAyMTgsIAorICAgIDIyMywgMTcyLCAxLCAyMDYsIDE3MiwgMSwgMTYyLCAxNzIsIDI1LCA1LCAyNTUsIDczLCAxNzIsIDI1LCA1LCA3MywgMTcyLCAKKyAgICAyNSwgNSwgMjM2LCAzMywgMTcyLCAyNSwgNSwgMjQ1LCAxOTUsIDE3MiwgMjUsIDUsIDcwLCAxNzIsIDI1LCA1LCAyMjYsIAorICAgIDIzNCwgMTcyLCAyNSwgNSwgNzYsIDE3MiwgMjUsIDUsIDI1NCwgMjAxLCAxNzIsIDI1LCA1LCAyNTMsIDE5MiwgMTcyLCAyNSwgCisgICAgNSwgMjE0LCAyMTQsIDE3MiwgMTE2LCA1LCAxOTEsIDE3MiwgMTE2LCA1LCAyMDUsIDE3MiwgMTE2LCA1LCAyMzMsIDEzNSwgCisgICAgMTcyLCAxMTYsIDUsIDIxMiwgNjUsIDE3MiwgMSwgNDAsIDIzNSwgMjMsIDE3MiwgMSwgNDAsIDI0MywgMjAyLCAxNzIsIDEsIAorICAgIDQwLCAyMjksIDc5LCAxNzIsIDExNiwgNSwgNDAsIDIyOSwgNzksIDE3MiwgMSwgNDAsIDI1MCwgMTU4LCAxNzIsIDEsIDQwLCAKKyAgICAyMTcsIDE1MiwgMTcyLCAxLCA0MCwgMjMwLCAyNSwgMTcyLCAxLCA0MCwgMjI2LCAxMDUsIDE3MiwgMSwgNDAsIDIxMSwgCisgICAgMTE3LCAxNzIsIDEsIDQwLCAxNTMsIDE3MiwgMSwgNDAsIDE1NiwgMTcyLCAxLCA0MCwgMjE4LCAyMjYsIDE3MiwgMTE2LCA1LCAKKyAgICA0MCwgMTkzLCAxNzIsIDExNiwgNSwgNDAsIDI0MiwgNjAsIDE3MiwgMjEsIDIxMCwgODYsIDE3MiwgMjEsIDExMCwgMTcyLCAKKyAgICAyMSwgMTA1LCAxNzIsIDIxLCAxNTgsIDE3MiwgMjEsIDE2MSwgMTcyLCAyMSwgMTg5LCAxNzIsIDIxLCAxOTQsIDE3MiwgMjEsIAorICAgIDE5OCwgMTcyLCAyMSwgMTk1LCAxNzIsIDIxLCAyMDAsIDE3MiwgMjI0LCAxNDEsIDIxOCwgMjUxLCAxNzIsIDIyNCwgMTQxLCAKKyAgICAyNDgsIDE3OCwgMTcyLCAyMjQsIDE0MSwgNTIsIDI0OCwgMTc4LCAxNzIsIDIyNCwgMTQxLCAyMTUsIDIxMSwgMjQ4LCAxNzgsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjQzLCAxMzUsIDY4LCAxLCAyMzQsIDEyNiwgMjUxLCAzMywgNjgsIDEsIDIzNCwgMTI2LCAKKyAgICAyNTAsIDE1NywgNjgsIDEsIDIzNCwgMTI2LCAyMzUsIDE0MSwgNjgsIDEsIDIzNCwgMTI2LCAyMzUsIDExNCwgNjgsIDEsIAorICAgIDIzNCwgMTI2LCAyMjcsIDE2NSwgNjgsIDEsIDIzNCwgMTI2LCAyMTUsIDE1NiwgNjgsIDEsIDIzNCwgMTI2LCAyMTUsIDE0NCwgCisgICAgNjgsIDEsIDIzNCwgMTI2LCAyNDgsIDEzNSwgNjgsIDEsIDIzNCwgMTI2LCAyNDgsIDExOSwgNjgsIDEsIDIzNCwgMTI2LCAKKyAgICAyNDgsIDI1LCA2OCwgMSwgMjM0LCAxMjYsIDE5NywgNjgsIDEsIDIzNCwgMTI2LCAyMDYsIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMTYyLCA2OCwgMSwgMjM0LCAxMjYsIDI0MSwgMTg5LCA2OCwgMSwgMjM0LCAxMjYsIDI0NCwgMTk2LCA2OCwgNTgsIDEsIAorICAgIDIzNCwgMTI2LCAyMjMsIDEwOSwgNjgsIDEsIDIzNCwgMTI2LCAyMTEsIDE2NSwgNjgsIDEsIDIzNCwgMTI2LCAyMTAsIDExNiwgCisgICAgNjgsIDEsIDIzNCwgMTI2LCAyMDUsIDY4LCAyMzIsIDE0NSwgMjM0LCAxMjYsIDIyNiwgMjUzLCA2OCwgMjMyLCAxNDUsIAorICAgIDIzNCwgMTI2LCAyMjQsIDQzLCA2OCwgMjMyLCAxNDUsIDIzNCwgMTI2LCAyNDEsIDEyMSwgNjgsIDE2LCAyNTQsIDE5MCwgCisgICAgMjQ1LCAzMCwgNjgsIDE2LCAyNTQsIDE5MCwgMTEwLCA2OCwgMTYsIDI1NCwgMTkwLCAxMDUsIDY4LCAxLCAyNTQsIDE5MCwgCisgICAgMjA1LCA2OCwgNSwgMjI2LCAyMywgMjM0LCAyMTMsIDIxNiwgMzAsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAyOCwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMzQsIDI4LCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMTA1LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgCisgICAgMTA1LCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMTE0LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgMTE0LCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDI0MiwgMTc0LCAzOSwgMjA4LCAxLCAxMjUsIDI0MiwgMTc0LCAzOSwgMjA4LCAxLCAxMjEsIDIyOSwgNCwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjksIDQsIDM5LCAyMDgsIDEsIDEyMSwgMjQ5LCAyMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjQ5LCAKKyAgICAyMzgsIDM5LCAyMDgsIDEsIDEyMSwgMjUwLCA4NiwgMzksIDIwOCwgMSwgMTI1LCAyNTAsIDg2LCAzOSwgMjA4LCAxLCAxMjEsIAorICAgIDIxOSwgNTgsIDM5LCAyMDgsIDEsIDEyNSwgMjE5LCA1OCwgMzksIDIwOCwgMSwgMTIxLCAyMjcsIDEzNCwgMzksIDIwOCwgMSwgCisgICAgMTI1LCAyMjcsIDEzNCwgMzksIDIwOCwgMSwgMTIxLCAyNDcsIDE0NSwgMzksIDIwOCwgMSwgMTI1LCAyNDcsIDE0NSwgMzksIAorICAgIDIwOCwgMSwgMTIxLCAxMTEsIDM5LCAyMDgsIDEsIDEyNSwgMTExLCAzOSwgMjA4LCAxLCAxMjEsIDIxNiwgMTU2LCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIxNiwgMTU2LCAzOSwgMjA4LCAxLCAxMjEsIDIyOCwgNzQsIDM5LCAyMDgsIDEsIDEyNSwgMjI4LCAKKyAgICA3NCwgMzksIDIwOCwgMSwgMTIxLCAyNTEsIDIwNSwgMzksIDIwOCwgMSwgMTI1LCAyNTEsIDIwNSwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyMjUsIDE2LCAzOSwgMjA4LCAxLCAxMjUsIDIyNSwgMTYsIDM5LCAyMDgsIDEsIDEyMSwgMjI1LCAxMjEsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjI1LCAxMjEsIDM5LCAyMDgsIDEsIDEyMSwgMjQ0LCA0MywgMzksIDIwOCwgMSwgMTI1LCAyNDQsIAorICAgIDQzLCAzOSwgMjA4LCAxLCAxMjEsIDIzMCwgMTYxLCAzOSwgMjA4LCAxLCAxMjUsIDIzMCwgMTYxLCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDIxMCwgMjQ0LCAzOSwgMjA4LCAxLCAxMjUsIDIxMCwgMjQ0LCAzOSwgMjA4LCAxLCAxMjEsIDIyMiwgMjExLCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyMiwgMjExLCAzOSwgMjA4LCAxLCAxMjEsIDIzMiwgMTU2LCAzOSwgMjA4LCAxLCAxMjUsIDIzMiwgCisgICAgMTU2LCAzOSwgMjA4LCAxLCAxMjEsIDIxMywgMTM4LCAzOSwgMjA4LCAxLCAxMjUsIDIxMywgMTM4LCAzOSwgMjA4LCAxLCAKKyAgICAxMjEsIDI0MSwgNjgsIDM5LCAyMDgsIDEsIDEyNSwgMjQxLCA2OCwgMzksIDIwOCwgMSwgMTIxLCA3NiwgMzksIDIwOCwgMSwgCisgICAgMTI1LCA3NiwgMzksIDIwOCwgMjMxLCAyMDQsIDIzNCwgMjMwLCAzOSwgMjA4LCAyNSwgMjU1LCA3MywgMzksIDIwOCwgMjUsIAorICAgIDczLCAzOSwgMjA4LCAyNSwgMjE0LCAyMTQsIDM5LCAyMDgsIDI1LCA3MCwgMzksIDIwOCwgMjUsIDc1LCAzOSwgMjA4LCAyNSwgCisgICAgNzYsIDM5LCAyMDgsIDIzMSwgMjA0LCAyMzQsIDEwOCwgMzksIDIwOCwgMjUsIDI0MCwgMTE5LCAzOSwgMjA4LCAyNSwgMjE0LCAKKyAgICAyMTMsIDM5LCAyMDgsIDI1LCAyMTQsIDIyOSwgMzksIDIwOCwgMjUsIDI1MywgMTkwLCAzOSwgMjA4LCAyNSwgMjUzLCAxNjcsIAorICAgIDM5LCAyMDgsIDI1LCAyNTQsIDEyMywgMzksIDIwOCwgMjUsIDI1NCwgMTM2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAKKyAgICAyNDUsIDE4MCwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjI3LCAyMDYsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIxNiwgCisgICAgMTU2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMTksIDQyLCAzOSwgMjA4LCAxNiwgMjM0LCAxMywgMzksIDIwOCwgMTYsIAorICAgIDIyNywgMjA2LCAzOSwgMjA4LCAxNiwgMjIxLCAyNTMsIDM5LCAyMDgsIDE2LCAyNDEsIDY5LCAyNDEsIDY0LCAzOSwgMjA4LCAKKyAgICAxNiwgMjM0LCAyMiwgMjM0LCAyMSwgMTg2LCAxODUsIDEsIDc1LCAxODYsIDE4NSwgMSwgNzYsIDE4NiwgMTg1LCAxLCAyNTAsIAorICAgIDE1NywgMTg2LCAxODUsIDEsIDIyNywgMTY1LCAxODYsIDE4NSwgMSwgMjE1LCAxNTYsIDE4NiwgMTg1LCAxLCAyMTUsIDE0NCwgCisgICAgMTg2LCAxODUsIDEsIDI0OCwgMTM1LCAxODYsIDE4NSwgMSwgMjQ4LCAxMTksIDE4NiwgMTg1LCAxLCAyMjgsIDExMCwgMTg2LCAKKyAgICAxODUsIDEsIDIyMCwgMTAyLCAxODYsIDE4NSwgMSwgMjE4LCAyMjMsIDE4NiwgMTg1LCAyNSwgNSwgMjM2LCAzMywgMTg2LCAKKyAgICAxODUsIDI1LCA1LCAyMTQsIDExOCwgMTg2LCAxODUsIDI1LCA1LCAyNTUsIDM3LCAxODYsIDE4NSwgMjUsIDUsIDI1MywgCisgICAgMTkyLCAxODYsIDE4NSwgMjUsIDUsIDI1NSwgMzAsIDE4NiwgMTg1LCAyNTAsIDEyNSwgMTg2LCAxODUsIDI1NCwgMjA2LCAKKyAgICAyMzQsIDk4LCAxODYsIDE4NSwgMjU0LCAxMDMsIDE4NiwgMTg1LCAzLCAyMjMsIDc0LCA3OCwgMTg2LCAxODUsIDIxMSwgCisgICAgMjA5LCAyMjMsIDc0LCA3OCwgMTg2LCAxODUsIDI1LCA1LCAyMTMsIDE0NywgMTg2LCAxODUsIDIxMywgMTUyLCAyOSwgMywgCisgICAgMjE1LCAxMzcsIDI5LCAzLCAyMTUsIDE0MCwgMjksIDMsIDIxNSwgMTQzLCAyOSwgMywgMjE1LCAxNDEsIDI5LCAzLCAyMTUsIAorICAgIDE0MiwgMjksIDMsIDIxNSwgMTM5LCAyOSwgMywgMjQ4LCAxMTMsIDI5LCAzLCAyNDgsIDExNSwgMjksIDMsIDI0OCwgMTE4LCAKKyAgICAyOSwgMywgMjQ4LCAxMTYsIDI5LCAzLCAyNDgsIDExNywgMjksIDMsIDI0OCwgMTE0LCAyOSwgMywgMjQ2LCAyOCwgMjksIDMsIAorICAgIDI0NiwgMzEsIDI5LCAzLCAyNDYsIDM3LCAyOSwgMywgMjQ2LCAzNSwgMjksIDMsIDI0NiwgMzYsIDI5LCAzLCAyNDYsIDI5LCAKKyAgICAyOSwgMywgMjUwLCAyMDQsIDI5LCAzLCAyNTAsIDE5OCwgMjksIDMsIDI1MCwgMjAwLCAyOSwgMywgMjUwLCAyMDMsIDI5LCAKKyAgICAzLCAyNTAsIDIwMSwgMjksIDMsIDI1MCwgMjAyLCAyOSwgMywgMjUwLCAxOTksIDI5LCAzLCAyNTIsIDExMSwgMjksIDMsIAorICAgIDI1MiwgOTAsIDI5LCAzLCAyNTIsIDEwMiwgMjksIDMsIDI1MiwgMTEwLCAyOSwgMywgMjUyLCAxMDUsIDI5LCAzLCAyNTIsIAorICAgIDEwNiwgMjksIDMsIDI1MiwgOTQsIDE4NiwgMTg1LCAxLCAyMzQsIDE5LCAxODYsIDE4NSwgMSwgMjIxLCAyNTMsIDE4NiwgCisgICAgMTg1LCAxLCAyMzMsIDEwOSwgMTg2LCAxODUsIDEsIDIzMCwgMTcyLCAxODYsIDE4NSwgMSwgMTkwLCAxODYsIDE4NSwgMSwgCisgICAgMTk3LCAxODYsIDE4NSwgMSwgMjUwLCAxMDIsIDE4NiwgMTg1LCAxLCAyMTYsIDkwLCAxODYsIDE4NSwgMSwgMjM0LCAxMDEsIAorICAgIDE4NiwgMTg1LCAxLCAyMjgsIDI1MCwgMTg2LCAxODUsIDEsIDIxNiwgMTUwLCAxODYsIDE4NSwgMSwgMjEyLCA2MCwgMTg2LCAKKyAgICAxODUsIDEsIDIxMSwgNjksIDE4NiwgMTg1LCAxLCAyNDAsIDIxNiwgMTg2LCAxODUsIDEsIDIxNCwgMTkwLCAxODYsIDE4NSwgCisgICAgMSwgNzMsIDE4NiwgMTg1LCAxLCAyMjUsIDE0MiwgMTg2LCAxODUsIDEsIDI1MywgMjAyLCAxODYsIDE4NSwgMSwgMjQyLCAKKyAgICAxNjcsIDE4NiwgMTg1LCAxLCAyMzUsIDExMiwgMTg2LCAxODUsIDEsIDIyMywgMTY2LCAxODYsIDE4NSwgMSwgMjUyLCAxOTEsIAorICAgIDE4NiwgMTg1LCAxLCAyMzUsIDEwMCwgMTg2LCAxODUsIDEsIDI0NywgMjE5LCAxODYsIDE4NSwgMSwgMjQyLCAyMjEsIDE4NiwgCisgICAgMTg1LCAxLCAyNDgsIDUsIDE4NiwgMTg1LCAxLCAyNTIsIDE2LCAxODYsIDE4NSwgMSwgMjM0LCAyMCwgMjMyLCAxMjgsIAorICAgIDE4NiwgMTg1LCAxLCAyMzMsIDExMCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMzAsIDE3MywgMjMyLCAxMjgsIDE4NiwgCisgICAgMTg1LCAxLCAyMjYsIDkwLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIyOSwgMjI5LCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIAorICAgIDIxNiwgOTEsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjI4LCAyNTEsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjQwLCAKKyAgICAxNTQsIDIzMiwgMTI4LCAxODYsIDE4NSwgMjUsIDUsIDIyNiwgMTk1LCAxODYsIDE4NSwgMjUsIDUsIDIzNSwgMjUzLCAxODYsIAorICAgIDE4NSwgMjUsIDUsIDI1NCwgMTIyLCAxODYsIDE4NSwgMjUsIDUsIDIxMSwgMzgsIDE4NiwgMTg1LCAyNSwgNSwgMjE5LCAzMiwgCisgICAgMTg2LCAxODUsIDI1LCA1LCAyMTQsIDE4NywgMTg2LCAxODUsIDI1LCA1LCAyNTAsIDEyMywgMTg2LCAxODUsIDI1LCA1LCAKKyAgICAyMjcsIDE5MSwgMTg2LCAxODUsIDI1MCwgMTI0LCAxODYsIDE4NSwgMjMyLCA4NSwgMjM1LCAxNTAsIDE4NiwgMTg1LCAyNTQsIAorICAgIDQ2LCAyMzUsIDE1MCwgMTg2LCAxODUsIDIxLCAyMTAsIDg2LCAxODYsIDE4NSwgMjEsIDExMCwgMTg2LCAxODUsIDIxLCAKKyAgICAxMDUsIDE4NiwgMTg1LCAyMSwgMTU4LCAxODYsIDE4NSwgMjEsIDE2MSwgMTg2LCAxODUsIDIxLCAxODksIDE4NiwgMTg1LCAKKyAgICAyMSwgMTk0LCAxODYsIDE4NSwgMjEsIDE5OCwgMTg2LCAxODUsIDIxLCAxOTUsIDE4NiwgMTg1LCAyMSwgMjAwLCAyNCwgCisgICAgMTQzLCAyMjcsIDc3LCAyNCwgMTQzLCAyMjcsIDgyLCAyNCwgMTQzLCAyMTAsIDI0MywgMjQsIDE0MywgMjEwLCAyNDIsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjQxLCAyNCwgMTQzLCAyMTUsIDIzLCAyNCwgMTQzLCAyMTUsIDI2LCAyNCwgMTQzLCAyMTAsIDIxMCwgMjQsIAorICAgIDE0MywgMjEwLCAyMDYsIDI0LCAxNDMsIDI0NSwgNTQsIDI0LCAxNDMsIDI0NSwgNTIsIDI0LCAxNDMsIDI0NSwgNTMsIDI0LCAKKyAgICAxNDMsIDI0NSwgNTAsIDI0LCAxNDMsIDI0MCwgMTQ0LCAyNCwgMTQzLCAyNDAsIDE0MywgMjQsIDE0MywgMjQwLCAxNDEsIAorICAgIDI0LCAxNDMsIDI0MCwgMTQyLCAyNCwgMTQzLCAyNDAsIDE0NywgMjQsIDE0MywgMjQwLCAxNDAsIDI0LCAxNDMsIDI0MCwgCisgICAgMTM5LCAyNCwgMTQzLCAyNDAsIDE0OSwgMjQsIDE0MywgMjU0LCAzMywgMjQsIDE0MywgMjU0LCAzMiwgMjQsIDkwLCAyMjgsIAorICAgIDIxOSwgMjQsIDkwLCAyMjgsIDIyNSwgMjQsIDkwLCAyMTgsIDIwNCwgMjQsIDkwLCAyMTgsIDIwMywgMjQsIDkwLCAyMTYsIAorICAgIDk2LCAyNCwgOTAsIDIxNiwgOTQsIDI0LCA5MCwgMjE2LCA5MywgMjQsIDkwLCAyMTYsIDk5LCAyNCwgOTAsIDIxNiwgMTAwLCAKKyAgICAyNCwgOTAsIDIxNiwgOTIsIDI0LCA5MCwgMjIzLCA1LCAyNCwgOTAsIDIyMywgMjAsIDI0LCA5MCwgMjE4LCAyMTAsIDI0LCAKKyAgICA5MCwgMjIzLCAxNywgMjQsIDkwLCAyMjMsIDcsIDI0LCA5MCwgMjIzLCA5LCAyNCwgOTAsIDIyMiwgMjUyLCAyNCwgOTAsIAorICAgIDIyMiwgMjUzLCAyNCwgOTAsIDIzNCwgMjE4LCAyNCwgOTAsIDIzMCwgMjEyLCAyNCwgOTAsIDIzMCwgMjA2LCAyNCwgOTAsIAorICAgIDIxOCwgMjE0LCAyNCwgOTAsIDIzMCwgMjA5LCAyNCwgOTAsIDIzMCwgMjE1LCAyNCwgOTAsIDIyNSwgNzYsIDI0LCA5MCwgCisgICAgMjI1LCA4NSwgMjQsIDkwLCAyMjUsIDg5LCAyNCwgOTAsIDIxOCwgMjEyLCAyNCwgOTAsIDIyNSwgNzksIDI0LCA5MCwgMjI1LCAKKyAgICA5MywgMjQsIDkwLCAyMjUsIDk0LCAyNCwgOTAsIDIxOSwgMTQwLCAyNCwgOTAsIDIxOSwgMTQzLCAyNCwgOTAsIDIxOCwgCisgICAgMjA4LCAyNCwgOTAsIDIxOCwgMjA2LCAyNCwgOTAsIDIxOSwgMTM4LCAyNCwgOTAsIDIxOSwgMTQ2LCAyNCwgOTAsIDIxOSwgCisgICAgMTQ3LCAyNCwgOTAsIDIxOSwgMTMyLCAyNCwgOTAsIDIxOSwgMTQ1LCAyNCwgOTAsIDIyNiwgMzAsIDI0LCA5MCwgMjI2LCAKKyAgICAzMSwgMjQsIDkwLCAyMTEsIDI0LCAyNCwgOTAsIDIxMSwgMjUsIDI0LCA5MCwgMjUwLCA0NCwgMjQsIDkwLCAyNTAsIDQzLCAKKyAgICAyNCwgOTAsIDIxOCwgMjE5LCAyNCwgOTAsIDIyNSwgMTI4LCAyNCwgOTAsIDIyNSwgMTI3LCA5LCAxNCwgMjM4LCAyNCwgOSwgCisgICAgMTQsIDIzOCwgMjMsIDksIDE0LCAyMzgsIDIyLCA5LCAxNCwgMjM4LCAyMSwgOSwgMTQsIDIzOCwgMjAsIDksIDE0LCAyMzgsIAorICAgIDE5LCA5LCAxNCwgMjM4LCAxOCwgOSwgMTQsIDIzOCwgMTcsIDksIDE0LCAyMzgsIDE2LCA5LCAxNCwgMjM4LCAxNSwgOSwgCisgICAgMTQsIDIzOCwgMTQsIDksIDE0LCAyMzgsIDEzLCA5LCAxNCwgMjM4LCAxMiwgOSwgMTQsIDIzOCwgMTEsIDksIDE0LCAyMzgsIAorICAgIDEwLCA5LCAxNCwgMjM4LCA5LCA5LCAxNCwgMjM4LCA4LCA5LCAxNCwgMjM4LCA3LCA5LCAxNCwgMjM4LCA2LCA5LCAxNCwgCisgICAgMjM4LCA1LCA5LCAxNCwgMjM4LCA0LCA5LCAxNCwgMjM4LCAzLCA5LCAxNCwgMjM4LCAyLCA5LCAxNCwgMjM4LCAxLCA5LCAKKyAgICAxNCwgMjM4LCAwLCA5LCAxNCwgMjM3LCAyNTUsIDksIDE0LCAyMzcsIDI1NCwgOSwgMTQsIDIzNywgMjUzLCA5LCAxNCwgCisgICAgMjM3LCAyNTIsIDksIDE0LCAyMzcsIDI1MSwgOSwgMTQsIDIzNywgMjUwLCA5LCAxNCwgMjM3LCAyNDksIDksIDE0LCAyMzcsIAorICAgIDI0OCwgOSwgMTQsIDIzNywgMjQ3LCA5LCAxNCwgMjM3LCAyNDYsIDksIDE0LCAyMzcsIDI0NSwgOSwgMTQsIDIzNywgMjQ0LCAKKyAgICA5LCAxNCwgMjM3LCAyNDMsIDksIDE0LCAyMzcsIDI0MiwgOSwgMTQsIDIzNywgMjQxLCA5LCAxNCwgMjM3LCAyNDAsIDksIAorICAgIDE0LCAyMzcsIDIzOSwgOSwgMTQsIDIzNywgMjM4LCA5LCAxNCwgMjM3LCAyMzcsIDksIDE0LCAyMzcsIDIzNiwgOSwgMTQsIAorICAgIDIzNywgMjM1LCA5LCAxNCwgMjM3LCAyMzQsIDksIDE0LCAyMzcsIDIzMywgOSwgMTQsIDIzNywgMjMyLCA5LCAxNCwgMjM3LCAKKyAgICAyMzEsIDksIDE0LCAyMzcsIDIzMCwgOSwgMTQsIDIzNywgMjI5LCA5LCAxNCwgMjM3LCAyMjgsIDksIDE0LCAyMzcsIDIyNywgCisgICAgOSwgMTQsIDIzNywgMjI2LCA5LCAxNCwgMjM3LCAyMjUsIDksIDE0LCAyMzcsIDIyNCwgOSwgMTQsIDIzNywgMjIzLCA5LCAKKyAgICAxNCwgMjM3LCAyMjIsIDksIDE0LCAyMzcsIDIyMSwgOSwgMTQsIDIzNywgMjIwLCA5LCAxNCwgMjM3LCAyMTksIDksIDE0LCAKKyAgICAyMzcsIDIxOCwgOSwgMTQsIDIzNywgMjE3LCA5LCAxNCwgMjM3LCAyMTYsIDksIDE0LCAyMzcsIDIxNSwgOSwgMTQsIDIzNywgCisgICAgMjE0LCA5LCAxNCwgMjM3LCAyMTMsIDksIDE0LCAyMzcsIDIxMiwgOSwgMTQsIDIzNywgMjExLCA5LCAxNCwgMjM3LCAyMTAsIAorICAgIDksIDE0LCAyMzcsIDIwOSwgOSwgMTQsIDIzNywgMjA4LCA5LCAxNCwgMjM3LCAyMDcsIDksIDE0LCAyMzcsIDIwNiwgOSwgCisgICAgMTQsIDIzNywgMjA1LCA5LCAxNCwgMjM3LCAyMDQsIDksIDE0LCAyMzcsIDIwMywgOSwgMTQsIDIzNywgMjAyLCA5LCAxNCwgCisgICAgMjM3LCAyMDEsIDksIDE0LCAyMzcsIDIwMCwgOSwgMTQsIDIzNywgMTk5LCA5LCAxNCwgMjM3LCAxOTgsIDksIDE0LCAyMzcsIAorICAgIDE5NywgOSwgMTQsIDIzNywgMTk2LCA5LCAxNCwgMjM3LCAxOTUsIDksIDE0LCAyMzcsIDE5NCwgOSwgMTQsIDIzNywgMTkzLCAKKyAgICA5LCAxNCwgMjM3LCAxOTIsIDksIDE0LCAyMzcsIDE5MSwgOSwgMTQsIDIzNywgMTkwLCA5LCAxNCwgMjM3LCAxODksIDksIAorICAgIDE0LCAyMzcsIDE4OCwgOSwgMTQsIDIzNywgMTg3LCA5LCAxNCwgMjM3LCAxODYsIDksIDE0LCAyMzcsIDE4NSwgOSwgMTQsIAorICAgIDIzNywgMTg0LCA5LCAxNCwgMjM3LCAxODMsIDksIDE0LCAyMzcsIDE4MiwgOSwgMTQsIDIzNywgMTgxLCA5LCAxNCwgMjM3LCAKKyAgICAxODAsIDksIDE0LCAyMzcsIDE3OSwgOSwgMTQsIDIzNywgMTc4LCA5LCAxNCwgMjM3LCAxNzcsIDksIDE0LCAyMzcsIDE3NiwgCisgICAgOSwgMTQsIDIzNywgMTc1LCA5LCAxNCwgMjM3LCAxNzQsIDksIDE0LCAyMzcsIDE3MywgOSwgMTQsIDIzNywgMTcyLCA5LCAKKyAgICAxNCwgMjM3LCAxNzEsIDksIDE0LCAyMzcsIDE3MCwgOSwgMTQsIDIzNywgMTY5LCA5LCAxNCwgMjM3LCAxNjgsIDksIDE0LCAKKyAgICAyMzcsIDE2NywgOSwgMTQsIDIzNywgMTY2LCA5LCAxNCwgMjM3LCAxNjUsIDksIDE0LCAyMzcsIDE2NCwgOSwgMTQsIDIzNywgCisgICAgMTYzLCA5LCAxNCwgMjM3LCAxNjIsIDksIDE0LCAyMzcsIDE2MSwgOSwgMTQsIDIzNywgMTYwLCA5LCAxNCwgMjM3LCAxNTksIAorICAgIDksIDE0LCAyMzcsIDE1OCwgOSwgMTQsIDIzNywgMTU3LCA5LCAxNCwgMjM3LCAxNTYsIDksIDE0LCAyMzcsIDE1NSwgOSwgCisgICAgMTQsIDIzNywgMTU0LCA5LCAxNCwgMjM3LCAxNTMsIDksIDE0LCAyMzcsIDE1MiwgOSwgMTQsIDIzNywgMTUxLCA5LCAxNCwgCisgICAgMjM3LCAxNTAsIDksIDE0LCAyMzcsIDE0OSwgOSwgMTQsIDIzNywgMTQ4LCA5LCAxNCwgMjM3LCAxNDcsIDksIDE0LCAyMzcsIAorICAgIDE0NiwgOSwgMTQsIDIzNywgMTQ1LCA5LCAxNCwgMjM3LCAxNDQsIDksIDE0LCAyMzcsIDE0MywgOSwgMTQsIDIzNywgMTQyLCAKKyAgICA5LCAxNCwgMjM3LCAxNDEsIDksIDE0LCAyMzcsIDE0MCwgOSwgMTQsIDIzNywgMTM5LCA5LCAxNCwgMjM3LCAxMzgsIDksIAorICAgIDE0LCAyMzcsIDEzNywgOSwgMTQsIDIzNywgMTM2LCA5LCAxNCwgMjM3LCAxMzUsIDksIDE0LCAyMzcsIDEzNCwgOSwgMTQsIAorICAgIDIzNywgMTMzLCA5LCAxNCwgMjM3LCAxMzIsIDksIDE0LCAyMzcsIDEzMSwgOSwgMTQsIDIzNywgMTMwLCA5LCAxNCwgMjM3LCAKKyAgICAxMjksIDksIDE0LCAyMzcsIDEyOCwgOSwgMTQsIDIzNywgMTI3LCA5LCAxNCwgMjM3LCAxMjYsIDksIDE0LCAyMzcsIDEyNSwgCisgICAgOSwgMTQsIDIzNywgMTI0LCA5LCAxNCwgMjM3LCAxMjMsIDksIDE0LCAyMzcsIDEyMiwgOSwgMTQsIDIzNywgMTIxLCA5LCAKKyAgICAxNCwgMjM3LCAxMjAsIDksIDE0LCAyMzcsIDExOSwgOSwgMTQsIDIzNywgMTE4LCA5LCAxNCwgMjM3LCAxMTcsIDksIDE0LCAKKyAgICAyMzcsIDExNiwgOSwgMTQsIDIzNywgMTE1LCA5LCAxNCwgMjM3LCAxMTQsIDksIDE0LCAyMzcsIDExMywgOSwgMTQsIDIzNywgCisgICAgMTEyLCA5LCAxNCwgMjM3LCAxMTEsIDksIDE0LCAyMzcsIDExMCwgOSwgMTQsIDIzNywgMTA5LCA5LCAxNCwgMjM3LCAxMDgsIAorICAgIDksIDE0LCAyMzcsIDEwNywgOSwgMTQsIDIzNywgMTA2LCA5LCAxNCwgMjM3LCAxMDUsIDksIDE0LCAyMzcsIDEwNCwgOSwgCisgICAgMTQsIDIzNywgMTAzLCA5LCAxNCwgMjM3LCAxMDIsIDksIDE0LCAyMzcsIDEwMSwgOSwgMTQsIDIzNywgMTAwLCA5LCAxNCwgCisgICAgMjM3LCA5OSwgOSwgMTQsIDIzNywgOTgsIDksIDE0LCAyMzcsIDk3LCA5LCAxNCwgMjM3LCA5NiwgOSwgMTQsIDIzNywgOTUsIAorICAgIDksIDE0LCAyMzcsIDk0LCA5LCAxNCwgMjM3LCA5MywgOSwgMTQsIDIzNywgOTIsIDksIDE0LCAyMzcsIDkxLCA5LCAxNCwgCisgICAgMjM3LCA5MCwgOSwgMTQsIDIzNywgODksIDksIDE0LCAyMzcsIDg4LCA5LCAxNCwgMjM3LCA4NywgOSwgMTQsIDIzNywgODYsIAorICAgIDksIDE0LCAyMzcsIDg1LCA5LCAxNCwgMjM3LCA4NCwgOSwgMTQsIDIzNywgODMsIDksIDE0LCAyMzcsIDgyLCA5LCAxNCwgCisgICAgMjM3LCA4MSwgOSwgMTQsIDIzNywgODAsIDksIDE0LCAyMzcsIDc5LCA5LCAxNCwgMjM3LCA3OCwgOSwgMTQsIDIzNywgNzcsIAorICAgIDksIDE0LCAyMzcsIDc2LCA5LCAxNCwgMjM3LCA3NSwgOSwgMTQsIDIzNywgNzQsIDksIDE0LCAyMzcsIDczLCA5LCAxNCwgCisgICAgMjM3LCA3MiwgOSwgMTQsIDIzNywgNzEsIDksIDE0LCAyMzcsIDcwLCA5LCAxNCwgMjM3LCA2OSwgOSwgMTQsIDIzNywgNjgsIAorICAgIDksIDE0LCAyMzcsIDY3LCA5LCAxNCwgMjM3LCA2NiwgOSwgMTQsIDIzNywgNjUsIDksIDE0LCAyMzcsIDY0LCA5LCAxNCwgCisgICAgMjM3LCA2MywgOSwgMTQsIDIzNywgNjIsIDksIDE0LCAyMzcsIDYxLCA5LCAxNCwgMjM3LCA2MCwgOSwgMTQsIDIzNywgNTksIAorICAgIDksIDE0LCAyMzcsIDU4LCA5LCAxNCwgMjM3LCA1NywgOSwgMTQsIDIzNywgNTYsIDksIDE0LCAyMzcsIDU1LCA5LCAxNCwgCisgICAgMjM3LCA1NCwgOSwgMTQsIDIzNywgNTMsIDksIDE0LCAyMzcsIDUyLCA5LCAxNCwgMjM3LCA1MSwgOSwgMTQsIDIzNywgNTAsIAorICAgIDksIDE0LCAyMzcsIDQ5LCA5LCAxNCwgMjM3LCA0OCwgOSwgMTQsIDIzNywgNDcsIDksIDE0LCAyMzcsIDQ2LCA5LCAxNCwgCisgICAgMjM3LCA0NSwgOSwgMTQsIDIzNywgNDQsIDksIDE0LCAyMzcsIDQzLCA5LCAxNCwgMjM3LCA0MiwgOSwgMTQsIDIzNywgNDEsIAorICAgIDksIDE0LCAyMzcsIDQwLCA5LCAxNCwgMjM3LCAzOSwgOSwgMTQsIDIzNywgMzgsIDksIDE0LCAyMzcsIDM3LCA5LCAxNCwgCisgICAgMjM3LCAzNiwgOSwgMTQsIDIzNywgMzUsIDksIDE0LCAyMzcsIDM0LCA5LCAxNCwgMjM3LCAzMywgOSwgMTQsIDIzNywgMzIsIAorICAgIDksIDE0LCAyMzcsIDMxLCA5LCAxNCwgMjM3LCAzMCwgOSwgMTQsIDIzNywgMjksIDksIDE0LCAyMzcsIDI4LCA5LCAxNCwgCisgICAgMjM3LCAyNywgOSwgMTQsIDIzNywgMjYsIDksIDE0LCAyMzcsIDI1LCA5LCAxNCwgMjM3LCAyNCwgOSwgMTQsIDIzNywgMjMsIAorICAgIDksIDE0LCAyMzcsIDIyLCA5LCAxNCwgMjM3LCAyMSwgOSwgMTQsIDIzNywgMjAsIDksIDE0LCAyMzcsIDE5LCA5LCAxNCwgCisgICAgMjM3LCAxOCwgOSwgMTQsIDIzNywgMTcsIDksIDE0LCAyMzcsIDE2LCA5LCAxNCwgMjM3LCAxNSwgOSwgMTQsIDIzNywgMTQsIAorICAgIDksIDE0LCAyMzcsIDEzLCA5LCAxNCwgMjM3LCAxMiwgOSwgMTQsIDIzNywgMTEsIDksIDE0LCAyMzcsIDEwLCA5LCAxNCwgCisgICAgMjM3LCA5LCA5LCAxNCwgMjM3LCA4LCA5LCAxNCwgMjM3LCA3LCA5LCAxNCwgMjM3LCA2LCA5LCAxNCwgMjM3LCA1LCA5LCAKKyAgICAxNCwgMjM3LCA0LCA5LCAxNCwgMjM3LCAzLCA5LCAxNCwgMjM3LCAyLCA5LCAxNCwgMjM3LCAxLCA5LCAxNCwgMjM3LCAwLCAKKyAgICA5LCAxNCwgMjM2LCAyNTUsIDksIDE0LCAyMzYsIDI1NCwgOSwgMTQsIDIzNiwgMjUzLCA5LCAxNCwgMjM2LCAyNTIsIDksIAorICAgIDE0LCAyMzYsIDI1MSwgOSwgMTQsIDIzNiwgMjUwLCA5LCAxNCwgMjM2LCAyNDksIDksIDE0LCAyMzYsIDI0OCwgOSwgMTQsIAorICAgIDIzNiwgMjQ3LCA5LCAxNCwgMjM2LCAyNDYsIDksIDE0LCAyMzYsIDI0NSwgOSwgMTQsIDIzNiwgMjQ0LCA5LCAxNCwgMjM2LCAKKyAgICAyNDMsIDksIDE0LCAyMzYsIDI0MiwgOSwgMTQsIDIzNiwgMjQxLCA5LCAxNCwgMjM2LCAyNDAsIDksIDE0LCAyMzYsIDIzOSwgCisgICAgOSwgMTQsIDIzNiwgMjM4LCA5LCAxNCwgMjM2LCAyMzcsIDksIDE0LCAyMzYsIDIzNiwgOSwgMTQsIDIzNiwgMjM1LCA5LCAKKyAgICAxNCwgMjM2LCAyMzQsIDksIDE0LCAyMzYsIDIzMywgOSwgMTQsIDIzNiwgMjMyLCA5LCAxNCwgMjM2LCAyMzEsIDksIDE0LCAKKyAgICAyMzYsIDIzMCwgOSwgMTQsIDIzNiwgMjI5LCA5LCAxNCwgMjM2LCAyMjgsIDksIDE0LCAyMzYsIDIyNywgOSwgMTQsIDIzNiwgCisgICAgMjI2LCA5LCAxNCwgMjM2LCAyMjUsIDksIDE0LCAyMzYsIDIyNCwgOSwgMTQsIDIzNiwgMjIzLCA5LCAxNCwgMjM2LCAyMjIsIAorICAgIDksIDE0LCAyMzYsIDIyMSwgOSwgMTQsIDIzNiwgMjIwLCA5LCAxNCwgMjM2LCAyMTksIDksIDE0LCAyMzYsIDIxOCwgOSwgCisgICAgMTQsIDIzNiwgMjE3LCA5LCAxNCwgMjM2LCAyMTYsIDksIDE0LCAyMzYsIDIxNSwgOSwgMTQsIDIzNiwgMjE0LCA5LCAxNCwgCisgICAgMjM2LCAyMTMsIDksIDE0LCAyMzYsIDIxMiwgOSwgMTQsIDIzNiwgMjExLCA5LCAxNCwgMjM2LCAyMTAsIDksIDE0LCAyMzYsIAorICAgIDIwOSwgOSwgMTQsIDIzNiwgMjA4LCA5LCAxNCwgMjM2LCAyMDcsIDksIDE0LCAyMzYsIDIwNiwgOSwgMTQsIDIzNiwgMjA1LCAKKyAgICA5LCAxNCwgMjM2LCAyMDQsIDksIDE0LCAyMzYsIDIwMywgOSwgMTQsIDIzNiwgMjAyLCA5LCAxNCwgMjM2LCAyMDEsIDksIAorICAgIDE0LCAyMzYsIDIwMCwgOSwgMTQsIDIzNiwgMTk5LCA5LCAxNCwgMjM2LCAxOTgsIDksIDE0LCAyMzYsIDE5NywgOSwgMTQsIAorICAgIDIzNiwgMTk2LCA5LCAxNCwgMjM2LCAxOTUsIDksIDE0LCAyMzYsIDE5NCwgOSwgMTQsIDIzNiwgMTkzLCA5LCAxNCwgMjM2LCAKKyAgICAxOTIsIDksIDE0LCAyMzYsIDE5MSwgOSwgMTQsIDIzNiwgMTkwLCA5LCAxNCwgMjM2LCAxODksIDksIDE0LCAyMzYsIDE4OCwgCisgICAgOSwgMTQsIDIzNiwgMTg3LCA5LCAxNCwgMjM2LCAxODYsIDksIDE0LCAyMzYsIDE4NSwgOSwgMTQsIDIzNiwgMTg0LCA5LCAKKyAgICAxNCwgMjM2LCAxODMsIDksIDE0LCAyMzYsIDE4MiwgOSwgMTQsIDIzNiwgMTgxLCA5LCAxNCwgMjM2LCAxODAsIDksIDE0LCAKKyAgICAyMzYsIDE3OSwgOSwgMTQsIDIzNiwgMTc4LCA5LCAxNCwgMjM2LCAxNzcsIDksIDE0LCAyMzYsIDE3NiwgOSwgMTQsIDIzNiwgCisgICAgMTc1LCA5LCAxNCwgMjM2LCAxNzQsIDksIDE0LCAyMzYsIDE3MywgOSwgMTQsIDIzNiwgMTcyLCA5LCAxNCwgMjM2LCAxNzEsIAorICAgIDksIDE0LCAyMzYsIDE3MCwgOSwgMTQsIDIzNiwgMTY5LCA5LCAxNCwgMjM2LCAxNjgsIDksIDE0LCAyMzYsIDE2NywgOSwgCisgICAgMTQsIDIzNiwgMTY2LCA5LCAxNCwgMjM2LCAxNjUsIDksIDE0LCAyMzYsIDE2NCwgOSwgMTQsIDIzNiwgMTYzLCA5LCAxNCwgCisgICAgMjM2LCAxNjIsIDksIDE0LCAyMzYsIDE2MSwgOSwgMTQsIDIzNiwgMTYwLCA5LCAxNCwgMjM2LCAxNTksIDksIDE0LCAyMzYsIAorICAgIDE1OCwgOSwgMTQsIDIzNiwgMTU3LCA5LCAxNCwgMjM2LCAxNTYsIDksIDE0LCAyMzYsIDE1NSwgOSwgMTQsIDIzNiwgMTU0LCAKKyAgICA5LCAxNCwgMjM2LCAxNTMsIDksIDE0LCAyMzYsIDE1MiwgOSwgMTQsIDIzNiwgMTUxLCA5LCAxNCwgMjM2LCAxNTAsIDksIAorICAgIDE0LCAyMzYsIDE0OSwgOSwgMTQsIDIzNiwgMTQ4LCA5LCAxNCwgMjM2LCAxNDcsIDksIDE0LCAyMzYsIDE0NiwgOSwgMTQsIAorICAgIDIzNiwgMTQ1LCA5LCAxNCwgMjM2LCAxNDQsIDksIDE0LCAyMzYsIDE0MywgOSwgMTQsIDIzNiwgMTQyLCA5LCAxNCwgMjM2LCAKKyAgICAxNDEsIDksIDE0LCAyMzYsIDE0MCwgOSwgMTQsIDIzNiwgMTM5LCA5LCAxNCwgMjM2LCAxMzgsIDksIDE0LCAyMzYsIDEzNywgCisgICAgOSwgMTQsIDIzNiwgMTM2LCA5LCAxNCwgMjM2LCAxMzUsIDksIDE0LCAyMzYsIDEzNCwgOSwgMTQsIDIzNiwgMTMzLCA5LCAKKyAgICAxNCwgMjM2LCAxMzIsIDksIDE0LCAyMzYsIDEzMSwgOSwgMTQsIDIzNiwgMTMwLCA5LCAxNCwgMjM2LCAxMjksIDksIDE0LCAKKyAgICAyMzYsIDEyOCwgOSwgMTQsIDIzNiwgMTI3LCA5LCAxNCwgMjM2LCAxMjYsIDksIDE0LCAyMzYsIDEyNSwgOSwgMTQsIDIzNiwgCisgICAgMTI0LCA5LCAxNCwgMjM2LCAxMjMsIDksIDE0LCAyMzYsIDEyMiwgOSwgMTQsIDIzNiwgMTIxLCA5LCAxNCwgMjM2LCAxMjAsIAorICAgIDksIDE0LCAyMzYsIDExOSwgOSwgMTQsIDIzNiwgMTE4LCA5LCAxNCwgMjM2LCAxMTcsIDksIDE0LCAyMzYsIDExNiwgOSwgCisgICAgMTQsIDIzNiwgMTE1LCA5LCAxNCwgMjM2LCAxMTQsIDksIDE0LCAyMzYsIDExMywgOSwgMTQsIDIzNiwgMTEyLCA5LCAxNCwgCisgICAgMjM2LCAxMTEsIDksIDE0LCAyMzYsIDExMCwgOSwgMTQsIDIzNiwgMTA5LCA5LCAxNCwgMjM2LCAxMDgsIDksIDE0LCAyMzYsIAorICAgIDEwNywgOSwgMTQsIDIzNiwgMTA2LCA5LCAxNCwgMjM2LCAxMDUsIDksIDE0LCAyMzYsIDEwNCwgOSwgMTQsIDIzNiwgMTAzLCAKKyAgICA5LCAxNCwgMjM2LCAxMDIsIDksIDE0LCAyMzYsIDEwMSwgOSwgMTQsIDIzNiwgMTAwLCA5LCAxNCwgMjM2LCA5OSwgOSwgMTQsIAorICAgIDIzNiwgOTgsIDksIDE0LCAyMzYsIDk3LCA5LCAxNCwgMjM2LCA5NiwgOSwgMTQsIDIzNiwgOTUsIDksIDE0LCAyMzYsIDk0LCAKKyAgICA5LCAxNCwgMjM2LCA5MywgOSwgMTQsIDIzNiwgOTIsIDksIDE0LCAyMzYsIDkxLCA5LCAxNCwgMjM2LCA5MCwgOSwgMTQsIAorICAgIDIzNiwgODksIDksIDE0LCAyMzYsIDg4LCA5LCAxNCwgMjM2LCA4NywgOSwgMTQsIDIzNiwgODYsIDksIDE0LCAyMzYsIDg1LCAKKyAgICA5LCAxNCwgMjM2LCA4NCwgOSwgMTQsIDIzNiwgODMsIDksIDE0LCAyMzYsIDgyLCA5LCAxNCwgMjM2LCA4MSwgOSwgMTQsIAorICAgIDIzNiwgODAsIDksIDE0LCAyMzYsIDc5LCA5LCAxNCwgMjM2LCA3OCwgOSwgMTQsIDIzNiwgNzcsIDksIDE0LCAyMzYsIDc2LCAKKyAgICA5LCAxNCwgMjM2LCA3NSwgOSwgMTQsIDIzNiwgNzQsIDksIDE0LCAyMzYsIDczLCA5LCAxNCwgMjM2LCA3MiwgOSwgMTQsIAorICAgIDIzNiwgNzEsIDksIDE0LCAyMzYsIDcwLCA5LCAxNCwgMjM2LCA2OSwgOSwgMTQsIDIzNiwgNjgsIDksIDE0LCAyMzYsIDY3LCAKKyAgICA5LCAxNCwgMjM2LCA2NiwgOSwgMTQsIDIzNiwgNjUsIDcsIDQsIDI3LCAyNDQsIDEyNSwgNywgNCwgMjcsIDI0NCwgMTIxLCAKKyAgICA3LCA0LCAyNywgMjQ0LCA3NiwgNywgNCwgMjcsIDI0NCwgMTI0LCA3LCA0LCAyNywgMjQ0LCAxMjMsIDcsIDQsIDI3LCAxOTksIAorICAgIDIyMiwgOTIsIDIxNywgMTUyLCA3LCA0LCAyNywgMjE4LCAxNjgsIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIyOCwgMzksIDE1MCwgCisgICAgNCwgMjcsIDIzMSwgNTksIDI0NSwgMjEzLCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMzUsIDIyNywgMTUwLCA0LCAyNywgMjEzLCAKKyAgICAxODAsIDIyOCwgMzksIDE1MCwgNCwgMjcsIDIzMSwgNTksIDIxMSwgMTYwLCA5NCwgMSwgMjEwLCAyMzQsIDIsIDI0MSwgCisgICAgMTU4LCA5NCwgMjI1LCAxMSwgMjM1LCA1MCwgMjE0LCAxMSwgOTQsIDI3LCAyMTEsIDYsIDIxMCwgMjM0LCAyMTAsIDIzNCwgCisgICAgMjI1LCAyMzksIDk0LCAxLCAyNTQsIDEzOSwgMjUzLCAxNjIsIDk0LCAxLCAyMTEsIDI0NywgMjU0LCAxNzAsIDk0LCAxLCAKKyAgICAyMTEsIDI0NywgMjQ4LCAxODksIDk0LCAxLCAyMTEsIDI0NywgMjQxLCAyMzgsIDk0LCAxLCAyMTEsIDI0NywgMjM0LCAyNTAsIAorICAgIDk0LCAxLCAyMTEsIDI0NywgMjMzLCA5NCwgOTQsIDEsIDIxMSwgMjQ3LCA0MCwgMjMxLCA2NSwgOTQsIDEsIDIxMSwgMjQ3LCAKKyAgICAyMjMsIDY3LCA5NCwgMSwgMjExLCAyNDcsIDIxNywgMzgsIDk0LCAxLCAyNTQsIDEzOSwgOTYsIDUwLCA5NCwgMSwgMjIwLCAKKyAgICAyMSwgMiwgMjIwLCAyMSwgMjQ3LCAxMjAsIDk0LCAxLCAyMjAsIDIxLCAyLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAxLCAKKyAgICAyMjAsIDIxLCAyLCAyNDgsIDIwOCwgMjIsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgMSwgMjIwLCAyMSwgMiwgMjQ4LCAyMDgsIAorICAgIDIyLCAyMTksIDE1OSwgMjQ3LCAxMjAsIDk0LCAxLCAxMTIsIDIsIDIyNSwgMjM5LCA5NCwgMSwgMTEyLCAyLCAyMjQsIDc2LCAKKyAgICA5NCwgMSwgMTEyLCAyLCAyMzEsIDE3MSwgOTQsIDEsIDI1MiwgMjksIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjQyLCAyMDIsIDIsIAorICAgIDI0OCwgMjA3LCA5NCwgMSwgMjQ4LCAxOTAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjQxLCAyMzksIDIsIDIzMSwgMTcxLCA5NCwgCisgICAgMSwgMjE0LCA0LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxMCwgOTgsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjE2LCAyMzEsIDIsIAorICAgIDI0OCwgMjA3LCA5NCwgMSwgMjEwLCAyMzQsIDIsIDI0OCwgMjA3LCA5NCwgMSwgNDAsIDIzNCwgMjUxLCAyLCAyNDgsIDIwNywgCisgICAgOTQsIDEsIDIzNCwgMjUxLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIzMywgOTUsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjMxLCAKKyAgICA2NiwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjcsIDE5NSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjEsIDI1MCwgMiwgMjQ4LCAKKyAgICAyMDcsIDk0LCAxLCA0MCwgMjI1LCAyMjIsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI1LCAyMjIsIDIsIDI0OCwgMjA3LCA5NCwgCisgICAgMSwgMjE1LCAxODAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI0LCA0MCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMjMsIDY4LCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDIyMCwgMjEsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjE3LCAzOSwgMiwgMjQ4LCAyMDcsIDk0LCAKKyAgICAxLCAyMTQsIDQsIDIsIDI0MSwgNjEsIDk0LCAxLCAyNTIsIDI5LCAyLCAyMjMsIDE2OSwgOTQsIDEsIDIzNCwgMjUxLCAyLCAKKyAgICAyMjMsIDE2OSwgOTQsIDEsIDIyNSwgMjIyLCAyLCAyMjMsIDE2OSwgOTQsIDI3LCAxMTIsIDIzMywgOTQsIDEwLCAxLCAxMTIsIAorICAgIDIxMiwgNDcsIDUzLCAxNywgMTAsIDEsIDExMiwgMjEyLCA0NywgNDAsIDE3LCAxMCwgMSwgMjUyLCA2NSwgNTMsIDE3LCAxMCwgCisgICAgMSwgMjUyLCA2NSwgNDAsIDE3LCAxMCwgMSwgMjUyLCA2NSwgNjUsIDE3LCAxMCwgMSwgMjUyLCA2NSwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDIyNSwgMjA2LCA1MywgMTcsIDEwLCAxLCAyMjUsIDIwNiwgNDAsIDE3LCAxMCwgMSwgMjI1LCAyMDYsIDY1LCAxNywgCisgICAgMTAsIDEsIDIyNSwgMjA2LCAxNDcsIDE3LCAxMCwgMSwgMjUyLCA1MywgNTMsIDE3LCAxMCwgMSwgMjUyLCA1MywgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjUyLCA1MywgNjUsIDE3LCAxMCwgMSwgMjUyLCA1MywgMTQ3LCAxNywgMTAsIDEsIDIxNSwgMTQ3LCA1MywgMTcsIAorICAgIDEwLCAxLCAyMTUsIDE0NywgNDAsIDE3LCAxMCwgMSwgMjE1LCAxNDcsIDY1LCAxNywgMTAsIDEsIDIxNSwgMTQ3LCAxNDcsIAorICAgIDE3LCAxMCwgMSwgMjE3LCA2LCA1MywgMTcsIDEwLCAxLCAyMTcsIDYsIDQwLCAxNywgMTAsIDEsIDIxNywgNiwgNjUsIDE3LCAKKyAgICAxMCwgMSwgMjE3LCA2LCAxNDcsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDUzLCAxNywgMTAsIDEsIDIxNSwgMTQ5LCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMTUsIDE0OSwgNjUsIDE3LCAxMCwgMSwgMjE1LCAxNDksIDE0NywgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMjEzLCAyNDksIDQwLCAxNywgMTAsIDEsIDIxMywgMjQ5LCA2NSwgMTcsIDEwLCAxLCAyMTMsIDI0OSwgCisgICAgMTQ3LCAxNywgMTAsIDEsIDIyNSwgMjA0LCA1MywgMTcsIDEwLCAxLCAyMjUsIDIwNCwgNDAsIDE3LCAxMCwgMSwgMjI1LCAKKyAgICAyMDQsIDY1LCAxNywgMTAsIDEsIDIyNSwgMjA0LCAxNDcsIDE3LCAxMCwgMSwgMjQ2LCA0NCwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjQ2LCA0NCwgNDAsIDE3LCAxMCwgMSwgMjQ2LCA0NCwgNjUsIDE3LCAxMCwgMSwgMjQ2LCA0NCwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDIyNywgMTU0LCA1MywgMTcsIDEwLCAxLCAyMjcsIDE1NCwgNDAsIDE3LCAxMCwgMSwgMjI3LCAxNTQsIDY1LCAxNywgMTAsIAorICAgIDEsIDIyNywgMTU0LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCAyNywgNTMsIDE3LCAxMCwgMSwgMjE3LCAyNywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjE3LCAyNywgNjUsIDE3LCAxMCwgMSwgMjE3LCAyNywgMTQ3LCAxNywgMTAsIDEsIDIxNywgMjUsIDUzLCAxNywgMTAsIAorICAgIDEsIDIxNywgMjUsIDQwLCAxNywgMTAsIDEsIDIxNywgMjUsIDY1LCAxNywgMTAsIDEsIDIxNywgMjUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDgsIDEzMywgNTMsIDE3LCAxMCwgMSwgMjQ4LCAxMzMsIDQwLCAxNywgMTAsIDEsIDI0OCwgMjAyLCA1MywgMTcsIAorICAgIDEwLCAxLCAyNDgsIDIwMiwgNDAsIDE3LCAxMCwgMSwgMjQ2LCA3MSwgNTMsIDE3LCAxMCwgMSwgMjQ2LCA3MSwgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjQ4LCAxMzEsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTMxLCA0MCwgMTcsIDEwLCAxLCAyMzUsIDEyMSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMjM1LCAxMjEsIDQwLCAxNywgMTAsIDEsIDIyMiwgMTcyLCA1MywgMTcsIDEwLCAxLCAyMjIsIDE3MiwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjM0LCAxNzUsIDUzLCAxNywgMTAsIDEsIDIzNCwgMTc1LCA0MCwgMTcsIDEwLCAxLCAyMzQsIAorICAgIDE3NSwgNjUsIDE3LCAxMCwgMSwgMjM0LCAxNzUsIDE0NywgMTcsIDEwLCAxLCAyNDMsIDEyMywgNTMsIDE3LCAxMCwgMSwgCisgICAgMjQzLCAxMjMsIDQwLCAxNywgMTAsIDEsIDI0MywgMTIzLCA2NSwgMTcsIDEwLCAxLCAyNDMsIDEyMywgMTQ3LCAxNywgMTAsIAorICAgIDEsIDI0MiwgMTAyLCA1MywgMTcsIDEwLCAxLCAyNDIsIDEwMiwgNDAsIDE3LCAxMCwgMSwgMjQyLCAxMDIsIDY1LCAxNywgCisgICAgMTAsIDEsIDI0MiwgMTAyLCAxNDcsIDE3LCAxMCwgMSwgMjI5LCAzLCA1MywgMTcsIDEwLCAxLCAyMjksIDMsIDQwLCAxNywgCisgICAgMTAsIDEsIDIyOSwgMywgNjUsIDE3LCAxMCwgMSwgMjI5LCAzLCAxNDcsIDE3LCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTksIAorICAgIDUzLCAxNywgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE5LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgNTMsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyMTUsIDQwLCAxNywgMTAsIDEsIDIyMiwgMjE1LCA2NSwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgMTQ3LCAxNywgMTAsIAorICAgIDEsIDI0MSwgMjE5LCAyLCA3OSwgNzcsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyLCA3OSwgNzcsIDQwLCAxNywgMTAsIAorICAgIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0MiwgMTcyLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQyLCAxNzIsIDY1LCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCAyNDcsIDE0MiwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDI0NywgMTQyLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDIsIDY1LCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDcsIDE0MiwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDc5LCAyNTIsIDEzMywgNTMsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCA0MCwgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIAorICAgIDIsIDIwMiwgNzcsIDUzLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMTYsIDU5LCAKKyAgICA0OCwgMTAsIDE2LCA1OSwgNTEsIDEwLCAxNiwgMTEzLCAxNzAsIDQ4LCAxMCwgMTYsIDExMywgMTcwLCA1MSwgMTAsIDE2LCAKKyAgICAxMzQsIDE3MCwgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDUxLCAxMCwgMTYsIDEzNCwgMTcwLCAyMjUsIDcsIDI0NiwgMTA0LCAKKyAgICA0OCwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgNTEsIDEwLCAxNiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIAorICAgIDE2LCAyNDQsIDExLCAxNzAsIDUxLCAxMCwgMTYsIDUyLCA2NywgMjUyLCAxNDEsIDUxLCAxMCwgMTYsIDExMywgMTcwLCAKKyAgICAyMTMsIDE4OSwgNDgsIDEwLCAxNiwgMTEzLCAxNzAsIDIxMywgMTg5LCA1MSwgMTAsIDE2LCAyMjIsIDIzMywgMTAsIDE2LCAKKyAgICA0LCAyMTcsIDgxLCA0OCwgMTAsIDE2LCA0LCAyMTcsIDgxLCA1MSwgMTAsIDEsIDIyOSwgODAsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyOSwgODAsIDQwLCAxNywgMTAsIDEsIDIyOSwgODAsIDY1LCAxNywgMTAsIDEsIDIyOSwgODAsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAxMDQsIDUzLCAxNywgMTAsIDEsIDEwNCwgNDAsIDE3LCAxMCwgMSwgMjI2LCAyMzUsIDUzLCAxNywgMTAsIDEsIDIyNiwgCisgICAgMjM1LCA0MCwgMTcsIDEwLCAxLCAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDEsIAorICAgIDEwNCwgMiwgMjAyLCA3NywgNTMsIDE3LCAxMCwgMSwgMjE0LCAwLCA1MywgMTcsIDEwLCAxLCAyMTQsIDAsIDQwLCAxNywgCisgICAgMTAsIDEsIDIzNCwgNzMsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMzQsIDczLCAyMjYsIDIzNSwgNDAsIDE3LCAxMCwgCisgICAgMSwgMjM0LCA3MywgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIzNCwgNzMsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxNjAsIDUzLCAxNywgMTAsIDEsIDE2MCwgNDAsIDE3LCAxMCwgMSwgMTYwLCA2NSwgMTcsIDEwLCAxLCAxNjAsIDE0NywgMTcsIAorICAgIDEwLCAxLCAyMTQsIDIwNywgMjM0LCAxODYsIDIzNCwgNzMsIDExMiwgMjMxLCAxOTMsIDY1LCAxNywgMTAsIDEsIDIxNCwgCisgICAgMjA3LCAyMzQsIDE4NiwgMjM0LCA3MywgMTEyLCAyMzEsIDE5MywgMTQ3LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgCisgICAgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAyNTQsIDI0NCwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyNTQsIDI0NCwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMTIsIDMxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDIxMiwgMzEsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTA0LCA1MywgMTcsIDEwLCAyNywgNzksIAorICAgIDIsIDIwMiwgNzcsIDIsIDEwNCwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjYsIDIzNSwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjYsIDIzNSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAKKyAgICAyMTAsIDIxMywgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMTAsIDIxMywgNDAsIDE3LCAxMCwgMjcsIAorICAgIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA0MCwgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNjUsIDE3LCAxMCwgMjcsIDIxNCwgMjA3LCAyMzQsIDczLCA3OSwgMiwgCisgICAgMjAyLCA3NywgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIxNCwgMjA3LCAyMzQsIDczLCA3OSwgMiwgMjAyLCAKKyAgICA3NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNCwgMjA3LCAyMzQsIDczLCA3OSwgMiwgMjAyLCA3NywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCA1MywgMTcsIDEwLCAxLCAyNDQsIDE2OCwgCisgICAgNzksIDQwLCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTIyLCAKKyAgICA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyNTIsIDU1LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyNTIsIAorICAgIDU1LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAKKyAgICAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAKKyAgICAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMTIsIDIzMSwgCisgICAgMTkzLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTEyLCAyMzEsIDE5MywgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMTUxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCA2NiwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTIyLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDE1MSwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjIsIDI3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDgsIAorICAgIDIxNywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKKyAgICAyMTcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgCisgICAgNjYsIDUzLCAxNywgMTAsIDI3LCAyMTAsIDExMiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDE1MSwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxNTEsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMjIsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMjQsIDgyLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjQsIDgyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgCisgICAgMjUxLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzNCwgMjUxLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjM0LCAyNTEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIzMywgMTAzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgCisgICAgMTIyLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCA1MywgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjgsIDYzLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMjgsIAorICAgIDYzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQxLCAKKyAgICAyMTksIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIAorICAgIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDc5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNiwgMjAzLCAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjMsIDk2LCAyLCAyMTgsIDIzLCAxMTIsIDUzLCAxNywgMTAsIDI3LCAxMTIsIDIzMSwgMTkzLCAyLCAyMTgsIDIzLCAxMTIsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyNDgsIDE4MywgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDIzNCwgCisgICAgMjA0LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ0LCAxNjYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAKKyAgICAyNDgsIDE4NSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDIzNCwgMjA2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgCisgICAgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEwLCAxMDksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIAorICAgIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIAorICAgIDc3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjE2LCAxOTMsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTYsIDE5MywgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMjI4LCA2MywgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNiwgMTkzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgCisgICAgNzksIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDIzMywgCisgICAgMTAzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgCisgICAgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMjgsIDYzLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMjgsIDYzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAxMTIsIDIzMSwgMTkzLCAyLCAyMTgsIDIzLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjIzLCA5NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDc5LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIAorICAgIDIwMiwgNzcsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyNDEsIDIxOSwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU1LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjE3LCAKKyAgICA4LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMTYsIDE5MywgCisgICAgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNjYsIDY1LCAxNywgCisgICAgMTAsIDI3LCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzQsIAorICAgIDEzMCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIAorICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgCisgICAgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMTAsIDExMiwgMiwgNjYsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDUsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDI0NCwgMTQzLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDMsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI0LCAKKyAgICA4MiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgCisgICAgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzQsIAorICAgIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTIyLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgNjUsIAorICAgIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAKKyAgICA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgCisgICAgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDIxOCwgCisgICAgMjMsIDExMiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNzksIAorICAgIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyNTIsIDU1LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIxNiwgMTkzLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjcsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgNjAsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIDEwMywgMTQ3LCAKKyAgICAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDY2LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDIyOCwgNjMsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCA3OSwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgCisgICAgMjIwLCA5NCwgMiwgMjQ0LCAxNjYsIDE0NywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ4LCAxODUsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA5NCwgMiwgMjM0LCAyMDYsIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDExMiwgMjMxLCAxOTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMTIyLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAKKyAgICAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjIwLCAKKyAgICA2MCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgCisgICAgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIAorICAgIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjIzLCA5NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgCisgICAgODEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDI1NCwgMTk3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDc5LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDUsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA3OSwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAxNTEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjM0LCAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIyMywgOTYsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIyMywgOTYsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjcsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMjQxLCAyMTksIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIxLCAxNjcsIDIsIDEyMiwgMTQ3LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDE0NywgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgMTQ3LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTAsIDExMiwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgMTEyLCAyLCAyNDQsIDE2NCwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDExMiwgMiwgMjQ0LCAxNjQsIDUzLCAxNywgMjI2LCAxNDYsIDQzLCAyMjYsIDMsIDIyNiwgMTQ2LCA0NCwgMjI2LCAzLCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAxNTEsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIAorICAgIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIAorICAgIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDgsIDIsIDY2LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTIyLCAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIAorICAgIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgCisgICAgMTY3LCAyLCAxNTEsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDEyMiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIAorICAgIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDEyMiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjIyLCAyNywgMiwgMTIyLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgCisgICAgMiwgMjM0LCAxMzAsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMjAsIDYwLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgCisgICAgMTMwLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyMTcsIDgxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCAyLCAKKyAgICA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgCisgICAgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDQsIAorICAgIDE0MywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIDIsIDY2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgCisgICAgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgMTUxLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgMTUxLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCAKKyAgICAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzMsIAorICAgIDEwMywgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNjYsIDIsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCA2NiwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDY2LCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCAxNTEsIDY1LCAxNywgCisgICAgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDE1MSwgMiwgMjM0LCAxMzAsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgCisgICAgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAKKyAgICAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxNTEsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAxNTEsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgMTIyLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTUxLCAyLCA2NiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIAorICAgIDEzMCwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxNTEsIDIsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxMjIsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIzNCwgMjUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCAKKyAgICAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgMTIyLCA0MCwgMTcsIDEwLCAyNywgMTUxLCAyLCAKKyAgICAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMTIyLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIAorICAgIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjUyLCAKKyAgICA1NSwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIAorICAgIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDY2LCAyLCA2NiwgNjUsIAorICAgIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIyLCA0LCAyMTQsIDEyOCwgMjUzLCAyMzgsIDIzNCwgNCwgMjE4LCAxMzAsIAorICAgIDUsIDUzLCAxNywgMTAsIDI3LCAyMjQsIDc4LCAyMTQsIDEyOCwgMjUzLCAyMzgsIDIzNCwgNCwgMjE4LCAxMzAsIDUsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNTQsIDE1MywgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTgzLCA1MywgMTcsIDEwLCAyNywgMjMwLCAxNTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMjIsIDUsIDUzLCAxNywgMTAsIDI3LCAyMjMsIDE0MywgNTMsIDE3LCAxMCwgMjcsIDI1NCwgCisgICAgMTcyLCA1MywgMTcsIDEwLCAyNywgMjEyLCA0OSwgNTMsIDE3LCAxMCwgMjcsIDIyMiwgNCwgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMywgMjU0LCAxNzIsIDIxMiwgNDgsIDEwLCAyNywgMjM1LCAxMzQsIDIyMywgMzQsIDUwLCAxMCwgMjcsIDI1MSwgCisgICAgMjMwLCAyNTQsIDM5LCAyNTQsIDQwLCA0NSwgMjIxLCAxNTYsIDQ1LCAyMjEsIDQ1LCA0NSwgMjIwLCAyMzMsIDQ1LCAyMjAsIAorICAgIDIyMiwgNDUsIDIyMCwgMjExLCA0NSwgMjIwLCAyMDAsIDQ1LCAyMjAsIDE4OSwgNDUsIDIyMCwgMTc4LCA0NSwgMjIwLCAKKyAgICAxNjcsIDQ1LCAyMjEsIDE1NSwgNDUsIDIyMSwgMTQ0LCA0NSwgMjIxLCAxMzMsIDQ1LCAyMjEsIDEyMiwgNDUsIDIyMSwgCisgICAgMTExLCA0NSwgMjIxLCAxMDAsIDQ1LCAyMjEsIDg5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDksIDIxOSwgMjI0LCAKKyAgICAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMTA5LCAyNDksIDIxOSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMTA5LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0OSwgMjI2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgCisgICAgMzEsIDY3LCAyMjAsIDE1MCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAzMSwgNzgsIDIyNCwgMTk0LCAyNDQsIAorICAgIDIwLCAzMSwgNjcsIDIyNCwgMTMsIDc4LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNzEsIDIzMywgMjAsIDEyNywgCisgICAgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyMzMsIDIwLCAyNTEsIDE1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIAorICAgIDMxLCA2NywgMjAzLCAyNDUsIDE2MywgMzgsIDI3LCA0MywgMjQyLCAyNywgMzgsIDI3LCA0NCwgMjQyLCAyNywgMzgsIDUyLCAKKyAgICAyMTYsIDg5LCA0MywgMjQyLCAyNywgMzgsIDUyLCAyMTYsIDg5LCA0NCwgMjQyLCAyNywgMzgsIDIzMSwgMjMzLCA0MywgCisgICAgMjQyLCAyNywgMzgsIDIzMSwgMjMzLCA0NCwgMjQyLCAyNywgMzgsIDI0OSwgMTk3LCAyMzEsIDIzMiwgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgMTEzLCA1OSwgMjMzLCA1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAxNjAsIAorICAgIDI0OCwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDUsIDE1MSwgMjQ4LCAxNTYsIDIyNCwgMTk0LCAyNDQsIAorICAgIDIwLCAzMSwgNjcsIDEyMSwgMjMyLCAyMTMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDIxMiwgMzIsIDEyMSwgMjMyLCAKKyAgICAyMTMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyMjYsIDMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIAorICAgIDQ0LCAyMjYsIDMsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyNDksIDk5LCAxMjcsIDIyNCwgMTk0LCAyNDQsIAorICAgIDIwLCAzMSwgNjcsIDQ0LCAyNDksIDk5LCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyMTYsIDYsIDIyMCwgCisgICAgNTMsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0MywgODUsIDIzMywgMjAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDg1LCAKKyAgICAyMzMsIDIwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA1MiwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDQsIDUyLCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgCisgICAgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQzLCAyNDksIDE2MSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgMjQ5LCAKKyAgICAxNjEsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDcxLCAyNDksIDE2MSwgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNzEsIDI0OSwgMTYxLCAxMjcsIDIyMCwgMTMxLCAyNDcsIDEyMCwgNzEsIDIyMCwgMTMxLCAKKyAgICAyNDcsIDEyMCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDQyLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgCisgICAgNjcsIDQ0LCA0MiwgMTI3LCAyNDgsIDE1NSwgMjI2LCAxMTksIDI1MCwgMTcyLCAyMjYsIDExOSwgMjEyLCAzMiwgMjI2LCAKKyAgICAxMTksIDUyLCAyMTIsIDMyLCAyMjYsIDExOSwgMjQ4LCAxNTUsIDEyMSwgMjMyLCAyMTMsIDI1MCwgMTcyLCAxMjEsIDIzMiwgCisgICAgMjEzLCAyMTIsIDMyLCAxMjEsIDIzMiwgMjEzLCA0LCAyNDksIDIxOSwgNCwgMTA5LCAyNDksIDIxOSwgNCwgMjQzLCAyMjksIAorICAgIDIxOCwgMTI5LCA0LCAyMjAsIDE1MCwgNCwgMjQ5LCAyMjYsIDQsIDIyNCwgMTMsIDc4LCA0LCAyNDUsIDMxLCA3OCwgNCwgCisgICAgMjQ1LCAxNjAsIDI0OCwgMTU2LCA0LCA0MywgMjI2LCAzLCA0LCA0NCwgMjI2LCAzLCA0LCA0MywgMjQ5LCA5OSwgMTI3LCA0LCAKKyAgICA0NCwgMjQ5LCA5OSwgMTI3LCA0LCA0MywgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNCwgNTQsIDUwLCA0LCAyNTQsIDEyNiwgNCwgMjUzLCAyMTYsIDQsIDk2LCA1MCwgNCwgMjQwLCAxNjcsIDQsIDIzMywgCisgICAgMTUsIDUwLCA0LCAyNDIsIDEzMCwgNTAsIDQsIDI0NSwgOTgsIDUwLCA0LCAyMjMsIDUwLCAyMTksIDQ2LCA0LCAyNDcsIAorICAgIDEzMiwgNTAsIDQsIDIyNSwgMTgyLCA1MCwgNCwgMjQ5LCAyMTcsIDI1MywgMjA2LCAxMCwgMjQ0LCAxNjQsIDUzLCAxNywgCisgICAgMTAsIDIxNywgNDQsIDIsIDI0NCwgMTY0LCA0OCwgMTAsIDI0OCwgMTgzLCA1MywgMTcsIDEwLCAyMTcsIDc4LCAyNDQsIDEsIAorICAgIDEwLCAyMzQsIDIwNCwgNTMsIDE3LCAxMCwgMjQ0LCAxNjYsIDUzLCAxNywgMTAsIDI0NCwgMTY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjQ4LCAxODUsIDUzLCAxNywgMTAsIDI0OCwgMTg1LCAxNDcsIDE3LCAxMCwgMjM0LCAyMDYsIDUzLCAxNywgMTAsIDIzNCwgCisgICAgMjA2LCAxNDcsIDE3LCAxMCwgMjIwLCA5NCwgNTMsIDE3LCAxMCwgMjIwLCA5NCwgMTQ3LCAxNywgMTAsIDIxOCwgNDYsIDUzLCAKKyAgICAxNywgMTAsIDIxOCwgNDYsIDE0NywgMTcsIDEwLCAxLCAyMDIsIDUzLCAxNywgMTAsIDEsIDExMiwgMiwgMjMxLCAyMjgsIAorICAgIDc3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNDAsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDc3LCAKKyAgICA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNzcsIDUzLCAKKyAgICAxNywgMTAsIDEsIDIxMiwgMzEsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA1MywgCisgICAgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNDAsIDE3LCAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDUzLCAxNywgCisgICAgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNjUsIDE3LCAxMCwgMSwgNzksIAorICAgIDIsIDIwMiwgNzcsIDE0NywgMTcsIDEwLCAxLCAxMTIsIDUzLCAxNywgMTAsIDEsIDExMiwgNDAsIDE3LCAxMCwgMSwgMjUyLCAKKyAgICA1NSwgNTMsIDE3LCAxMCwgMSwgMjUyLCA1NSwgNDAsIDE3LCAxMCwgMSwgMjUyLCA1NSwgNjUsIDE3LCAxMCwgMSwgMjUyLCAKKyAgICA1NSwgMTQ3LCAxNywgMTAsIDEsIDIxNywgOCwgMjMxLCAxNjUsIDUzLCAxNywgMTAsIDEsIDIxNywgOCwgMjMxLCAxNjUsIAorICAgIDQwLCAxNywgMTAsIDEsIDIxNywgOCwgNTMsIDE3LCAxMCwgMSwgMjE3LCA4LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDgsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIxNywgOCwgMTQ3LCAxNywgMTAsIDEsIDIxNiwgMTkzLCA1MywgMTcsIDEwLCAxLCAyMTYsIDE5MywgNDAsIAorICAgIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDY1LCAxNywgMTAsIDEsIDIxNiwgMTkzLCAxNDcsIDE3LCAxMCwgMSwgMTUxLCA1MywgCisgICAgMTcsIDEwLCAxLCAxNTEsIDQwLCAxNywgMTAsIDEsIDE1MSwgNjUsIDE3LCAxMCwgMSwgMTUxLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMTIyLCA1MywgMTcsIDEwLCAxLCAxMjIsIDQwLCAxNywgMTAsIDEsIDEyMiwgNjUsIDE3LCAxMCwgMSwgMTIyLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDEsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAxLCAyMzQsIDEzMCwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDE0NywgMTcsIDEwLCAxLCAyNDgsIDE5NiwgNTMsIDE3LCAxMCwgMSwgMjQ4LCAxOTYsIAorICAgIDQwLCAxNywgMTAsIDEsIDIxNiwgMjAzLCA1MywgMTcsIDEwLCAxLCAyMTYsIDIwMywgNDAsIDE3LCAxMCwgMSwgMjIzLCA5NiwgCisgICAgNTMsIDE3LCAxMCwgMSwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMSwgMjEwLCAxMDksIDUzLCAxNywgMTAsIDEsIDIxMCwgMTA5LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMjEsIDE2NywgNTMsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDQwLCAxNywgMTAsIDEsIDIyMSwgCisgICAgMTY3LCA2NSwgMTcsIDEwLCAxLCAyMjEsIDE2NywgMTQ3LCAxNywgMTAsIDEsIDIyMCwgNjAsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyMCwgNjAsIDQwLCAxNywgMTAsIDEsIDIyMCwgNjAsIDY1LCAxNywgMTAsIDEsIDIyMCwgNjAsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyMjIsIDI3LCA1MywgMTcsIDEwLCAxLCAyMjIsIDI3LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDI3LCA2NSwgMTcsIDEwLCAxLCAKKyAgICAyMjIsIDI3LCAxNDcsIDE3LCAxMCwgMSwgMjQ4LCAyMTcsIDUzLCAxNywgMTAsIDEsIDI0OCwgMjE3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDgsIDIxNywgNjUsIDE3LCAxMCwgMSwgMjQ4LCAyMTcsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDgxLCA1MywgMTcsIAorICAgIDEwLCAxLCAyMTcsIDgxLCA0MCwgMTcsIDEwLCAxLCAyMTcsIDgxLCA2NSwgMTcsIDEwLCAxLCAyMTcsIDgxLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjEwLCAxMTIsIDUzLCAxNywgMTAsIDEsIDIxMCwgMTEyLCA0MCwgMTcsIDEwLCAxLCAyMTAsIDExMiwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDE0NywgMTcsIDEwLCAxLCAyNTQsIDE5NywgNTMsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIAorICAgIDQwLCAxNywgMTAsIDEsIDI1NCwgMTk3LCA2NSwgMTcsIDEwLCAxLCAyNTQsIDE5NywgMTQ3LCAxNywgMTAsIDEsIDI0MiwgCisgICAgMjQ1LCA1MywgMTcsIDEwLCAxLCAyNDIsIDI0NSwgNDAsIDE3LCAxMCwgMSwgMjQyLCAyNDUsIDY1LCAxNywgMTAsIDEsIAorICAgIDI0MiwgMjQ1LCAxNDcsIDE3LCAxMCwgMSwgMjQ0LCAxNDMsIDUzLCAxNywgMTAsIDEsIDI0NCwgMTQzLCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDQsIDE0MywgNjUsIDE3LCAxMCwgMSwgMjQ0LCAxNDMsIDE0NywgMTcsIDEwLCAxLCAyMjQsIDgyLCA1MywgMTcsIAorICAgIDEwLCAxLCAyMjQsIDgyLCA0MCwgMTcsIDEwLCAxLCAyMjQsIDgyLCA2NSwgMTcsIDEwLCAxLCAyMjQsIDgyLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjM0LCAyNTEsIDUzLCAxNywgMTAsIDEsIDIzNCwgMjUxLCA0MCwgMTcsIDEwLCAxLCAyMzQsIDI1MSwgNjUsIAorICAgIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDE0NywgMTcsIDEwLCAxLCAyMzMsIDEwMywgNTMsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDQwLCAxNywgMTAsIDEsIDIzMywgMTAzLCA2NSwgMTcsIDEwLCAxLCAyMzMsIDEwMywgMTQ3LCAxNywgMTAsIDEsIDY2LCA1MywgCisgICAgMTcsIDEwLCAxLCA2NiwgNDAsIDE3LCAxMCwgMSwgNjYsIDY1LCAxNywgMTAsIDEsIDY2LCAxNDcsIDE3LCAxMCwgMSwgMjI4LCAKKyAgICA2MywgNTMsIDE3LCAxMCwgMSwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMSwgMjI4LCA2MywgNjUsIDE3LCAxMCwgMSwgMjI4LCAKKyAgICA2MywgMTQ3LCAxNywgMTAsIDEsIDI0MSwgMjE5LCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDY1LCAxNywgMTAsIDEsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMSwgMjEyLCAzMSwgNTMsIDE3LCAxMCwgCisgICAgMSwgMjEyLCAzMSwgNDAsIDE3LCAxMCwgMSwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyMzEsIDE5MywgCisgICAgNDAsIDE3LCAxMCwgMSwgNzksIDUzLCAxNywgMTAsIDEsIDc5LCA0MCwgMTcsIDEwLCAxLCA3OSwgNjUsIDE3LCAxMCwgMSwgCisgICAgNzksIDE0NywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjMxLCAyMjgsIDc3LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjMxLCAyMjgsIDc3LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgCisgICAgMjAyLCA3NywgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAKKyAgICAyMDIsIDI1MiwgNDMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIAorICAgIDIsIDExMiwgNDAsIDE3LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA3MywgMjE5LCAxOCwgMTI2LCAyNDUsIDMxLCA3OCwgCisgICAgMTI2LCAyMjMsIDI1NCwgNzgsIDEyNiwgNTQsIDUwLCAxMjYsIDI0NywgMTMyLCA1MCwgMTI2LCAyMjUsIDE4MiwgNTAsIAorICAgIDEyNiwgMjU0LCAxMjYsIDEyNiwgMjU0LCA1NywgMTI2LCA0MywgMjI2LCAzLCAxMjYsIDQ0LCAyMjYsIDMsIDEyNiwgMjUzLCAKKyAgICAyMTYsIDEyNiwgOTYsIDUwLCAxMjYsIDI0OSwgMjE5LCAxMjYsIDI0MCwgMTY3LCAxMjYsIDI0MywgMjI5LCAyMTgsIDEyOSwgCisgICAgMTI2LCAyMTksIDQ2LCAxMjYsIDIxLCAyMTAsIDg2LCAxMjYsIDIxLCAxMTAsIDEyNiwgMjEsIDEwNSwgMTI2LCAyMSwgMTU4LCAKKyAgICAxMjYsIDIxLCAxNjEsIDEyNiwgMjEsIDE4OSwgMTI2LCAyMSwgMTk0LCAxMjYsIDIxLCAxOTgsIDEyNiwgMjEsIDE5NSwgCisgICAgMTI2LCAyMSwgMjAwLCAxMjYsIDI0OSwgMjI2LCAxMjYsIDIyMCwgMTUwLCAxMjYsIDIzMywgMTUsIDUwLCAxMjYsIDI0NSwgCisgICAgOTgsIDUwLCAxMjYsIDI0MiwgMTMwLCA1MCwgMTI2LCAyMjQsIDEzLCA3OCwgMTI2LCAyNDksIDIxNywgMjUzLCAyMDYsIAorICAgIDEyNiwgNywgNiwgMSwgNjEsIDEyNiwgNywgNiwgMSwgMjUzLCAxNTgsIDEyNiwgNywgNiwgMSwgMjUxLCA2NiwgMTI2LCA3LCAKKyAgICA2LCAxLCAyNDksIDYwLCAxMjYsIDcsIDYsIDEsIDc1LCAxMjYsIDcsIDYsIDEsIDI0NSwgNiwgMTI2LCA3LCA2LCAxLCAyNDMsIAorICAgIDIwMiwgMTI2LCA3LCA2LCAxLCAyNDIsIDYwLCAxMjYsIDcsIDYsIDEsIDczLCAxMjYsIDcsIDYsIDEsIDIzNSwgMTQ0LCAKKyAgICAxMjYsIDcsIDYsIDEsIDIzNSwgMjMsIDEyNiwgNywgNiwgMSwgMTU2LCAxMjYsIDcsIDYsIDEsIDE5MywgMTI2LCA3LCA2LCAKKyAgICAxLCAyMzAsIDI1LCAxMjYsIDcsIDYsIDEsIDc2LCAxMjYsIDcsIDYsIDEsIDIyNiwgMTA1LCAxMjYsIDcsIDYsIDEsIDIyNCwgCisgICAgOTYsIDEyNiwgNywgNiwgMSwgMTUzLCAxMjYsIDcsIDYsIDEsIDIyMiwgOTEsIDEyNiwgNywgNiwgMSwgMjE3LCAxNTIsIAorICAgIDEyNiwgNywgNiwgMSwgNzAsIDEyNiwgNywgNiwgMSwgMjE0LCAxMDUsIDEyNiwgNywgNiwgMSwgMjEyLCA5OCwgMTI2LCA3LCAKKyAgICA2LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA2LCAxLCAyMTEsIDExNywgMTI2LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgCisgICAgNDIsIDEyNywgMTI2LCAyMjMsIDUwLCAyMTksIDQ2LCAxMjYsIDQ0LCA0MiwgMTI3LCAxMjYsIDI1MCwgMzEsIDI1NSwgMTQsIAorICAgIDEyNiwgMTIxLCAyMzIsIDIxMywgMTI2LCAyNDIsIDEzNywgMjU1LCAxNCwgMTI2LCA3LCA0LCAxLCA2MSwgMTI2LCA3LCA0LCAKKyAgICAxLCAyNTMsIDE1OCwgMTI2LCA3LCA0LCAxLCAyNTEsIDY2LCAxMjYsIDcsIDQsIDEsIDI0OSwgNjAsIDEyNiwgNywgNCwgMSwgCisgICAgNzUsIDEyNiwgNywgNCwgMSwgMjQ1LCA2LCAxMjYsIDcsIDQsIDEsIDI0MywgMjAyLCAxMjYsIDcsIDQsIDEsIDI0MiwgNjAsIAorICAgIDEyNiwgNywgNCwgMSwgNzMsIDEyNiwgNywgNCwgMSwgMjM1LCAxNDQsIDEyNiwgNywgNCwgMSwgMjM1LCAyMywgMTI2LCA3LCAKKyAgICA0LCAxLCAxNTYsIDEyNiwgNywgNCwgMSwgMTkzLCAxMjYsIDcsIDQsIDEsIDIzMCwgMjUsIDEyNiwgNywgNCwgMSwgNzYsIAorICAgIDEyNiwgNywgNCwgMSwgMjI2LCAxMDUsIDEyNiwgNywgNCwgMSwgMjI0LCA5NiwgMTI2LCA3LCA0LCAxLCAxNTMsIDEyNiwgNywgCisgICAgNCwgMSwgMjIyLCA5MSwgMTI2LCA3LCA0LCAxLCAyMTcsIDE1MiwgMTI2LCA3LCA0LCAxLCA3MCwgMTI2LCA3LCA0LCAxLCAKKyAgICAyMTQsIDEwNSwgMTI2LCA3LCA0LCAxLCAyMTIsIDk4LCAxMjYsIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjYsIDcsIDQsIDEsIAorICAgIDIxMSwgMTE3LCAxMjYsIDcsIDQsIDEsIDIxMCwgMTU5LCAxMjYsIDQzLCAyNDksIDk5LCAxMjcsIDEyNiwgNjcsIDIzMiwgCisgICAgMjEzLCAxMjYsIDQ0LCAyNDksIDk5LCAxMjcsIDEyNiwgMTgyLCAxMjYsIDQzLCA3MSwgMjI2LCAzLCAxMjYsIDQ0LCA3MSwgCisgICAgMjI2LCAzLCAxMDEsIDEwOSwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMDEsIDQzLCAyNDksIDE2MSwgMTI3LCAxMDEsIDQ0LCAKKyAgICAyNDksIDE2MSwgMTI3LCAxMDEsIDEwOSwgMjQ5LCAyMTksIDEwMSwgNTYsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMTAxLCA1NiwgCisgICAgMSwgMjExLCAyMjcsIDEwMSwgNTYsIDEsIDQsIDYxLCAxMDEsIDU2LCAxLCA0LCA3MywgMTAxLCA1NiwgMSwgNCwgNzAsIAorICAgIDEwMSwgNTYsIDEsIDQsIDc1LCAxMDEsIDU2LCAxLCA0LCA3NiwgMTAxLCA1NiwgMSwgNCwgMTkxLCAxMDEsIDU2LCAxLCA0LCAKKyAgICAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgNCwgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDQsIDIxNSwgMTE4LCAxMDEsIDIzNCwgCisgICAgMjAxLCAyMjQsIDE3MywgMjE5LCAzMSwgNzgsIDEwMSwgNTYsIDEsIDYxLCAxMDEsIDU2LCAxLCA3MywgMTAxLCA1NiwgMSwgCisgICAgNzAsIDEwMSwgNTYsIDEsIDc1LCAxMDEsIDU2LCAxLCA3NiwgMTAxLCA1NiwgMSwgMTc2LCAxMDEsIDU2LCAxLCAyMzQsIDkyLCAKKyAgICAxMDEsIDU2LCAxLCAyMzMsIDIxNywgMTAxLCA1NiwgMSwgMjM0LCAxODIsIDEwMSwgNTYsIDEsIDIzNCwgMjgsIDEwMSwgNTYsIAorICAgIDEsIDIwNiwgMTAxLCA1NiwgMSwgMjE5LCAxOTEsIDEwMSwgNTYsIDEsIDIxOCwgODMsIDEwMSwgNTYsIDEsIDIyMSwgMTgxLCAKKyAgICAxMDEsIDU2LCAxLCAyMTksIDU4LCAxMDEsIDU2LCAxLCAyMTcsIDEwNSwgMTAxLCA1NiwgMSwgMjE2LCAxMTcsIDEwMSwgNTYsIAorICAgIDEsIDIxNSwgMTE4LCAxMDEsIDU2LCAxLCAyMTcsIDIyLCAxMDEsIDU2LCAxLCAxMTEsIDEwMSwgNTYsIDEsIDE5NywgMTAxLCAKKyAgICA1NiwgMSwgMjI4LCAyMzMsIDEwMSwgNTYsIDEsIDIyNywgMjM3LCAxMDEsIDU2LCAxLCAyMjksIDEwNywgMTAxLCA1NiwgMSwgCisgICAgMjI4LCA3NCwgMTAxLCA1NiwgMSwgMTYyLCAxMDEsIDU2LCAxLCAyNDEsIDE4MCwgMTAxLCA1NiwgMSwgMjQwLCAyMjIsIAorICAgIDEwMSwgNTYsIDEsIDI0MSwgMjM4LCAxMDEsIDU2LCAxLCAyNDEsIDY4LCAxMDEsIDU2LCAxLCAxODQsIDEwMSwgNTYsIDEsIAorICAgIDIzMCwgMjMwLCAxMDEsIDU2LCAxLCAyMzAsIDEwMiwgMTAxLCA1NiwgMSwgMjMxLCA5MSwgMTAxLCA1NiwgMSwgMjMwLCAKKyAgICAxNjEsIDEwMSwgNTYsIDEsIDE5MSwgMTAxLCA1NiwgMSwgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDIxMCwgMjQ0LCAxMDEsIAorICAgIDU2LCAxLCAyMDUsIDEwMSwgNTYsIDEsIDIyMywgMzUsIDEwMSwgNTYsIDEsIDIyMiwgMTQwLCAxMDEsIDU2LCAxLCAyMjMsIAorICAgIDEyOCwgMTAxLCA1NiwgMSwgMjIyLCAyMTEsIDEwMSwgNTYsIDEsIDIxMiwgNjUsIDEwMSwgNTYsIDEsIDIzMCwgMjUsIDEwMSwgCisgICAgNTYsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMTAxLCA1NiwgMjIwLCAxNTUsIDIxOSwgMzEsIDc4LCAxMDEsIDI0LCAyNDQsIAorICAgIDEwMywgMTAxLCAyNCwgMSwgMjM0LCA1OCwgMTAxLCAyNCwgMSwgMjE4LCAyMTUsIDEwMSwgMjQsIDEsIDIzNCwgNTEsIDEwMSwgCisgICAgMjQsIDEsIDIyOCwgMjI2LCAxMDEsIDI0LCAxLCAyMjgsIDIyNCwgMTAxLCAyNCwgMSwgMjI4LCAyMjMsIDEwMSwgMjQsIDEsIAorICAgIDIxNiwgMTAxLCAxMDEsIDI0LCAxLCAyMTgsIDIwNCwgMTAxLCAyNCwgMSwgMjIzLCAyNiwgMTAxLCAyNCwgMSwgMjIzLCAyMSwgCisgICAgMTAxLCAyNCwgMSwgMjIzLCAxOCwgMTAxLCAyNCwgMSwgMjIzLCAxMSwgMTAxLCAyNCwgMSwgMjIzLCA2LCAxMDEsIDI0LCAxLCAKKyAgICAyMjMsIDEsIDEwMSwgMjQsIDEsIDIyMywgMTIsIDEwMSwgMjQsIDEsIDIyMywgMjQsIDEwMSwgMjQsIDEsIDIzMCwgMjE3LCAKKyAgICAxMDEsIDI0LCAxLCAyMjUsIDk1LCAxMDEsIDI0LCAxLCAyMTgsIDIxMiwgMTAxLCAyNCwgMSwgMjI1LCA4NCwgMTAxLCAyNCwgCisgICAgMSwgMjE5LCAxNDgsIDEwMSwgMjQsIDEsIDIxOCwgMjA5LCAxMDEsIDI0LCAxLCAyMzYsIDU2LCAxMDEsIDI0LCAxLCAyNTAsIAorICAgIDQ2LCAxMDEsIDI0LCAxLCAyMTgsIDIxOSwgMTAxLCAyNCwgMSwgMjUwLCAxMDYsIDEwMSwgMjQsIDEsIDIzNCwgMTEwLCAKKyAgICAxMDEsIDI0LCAxLCAyMTYsIDE3MywgMTAxLCAyNCwgMSwgMjI1LCAxMzEsIDEwMSwgMjQsIDEsIDI0MSwgMTcyLCAxMDEsIAorICAgIDI0LCAxLCA2MSwgMTAxLCAyNCwgMSwgMjU0LCAyNDMsIDEwMSwgMjQsIDEsIDE5MSwgMTAxLCAyNCwgMSwgMjExLCA5MiwgCisgICAgMTAxLCAyNCwgMSwgMjQ1LCAxMTcsIDEwMSwgMjQsIDEsIDc1LCAxMDEsIDI0LCAxLCAyMTEsIDM2LCAxMDEsIDI0LCAxLCAKKyAgICAyMTEsIDQ3LCAxMDEsIDI0LCAxLCA3NiwgMTAxLCAyNCwgMSwgMjEyLCA2NSwgMTAxLCAyNCwgMSwgMjEyLCA2MiwgMTAxLCAKKyAgICAyNCwgMSwgMjI2LCAyMzQsIDEwMSwgMjQsIDEsIDIxMCwgMjQ0LCAxMDEsIDI0LCAxLCA3MCwgMTAxLCAyNCwgMSwgMjEyLCAKKyAgICAxMSwgMTAxLCAyNCwgMSwgMjEyLCAyMiwgMTAxLCAyNCwgMSwgMjExLCAyNTAsIDEwMSwgMjQsIDEsIDIxMCwgMjEyLCAxMDEsIAorICAgIDI0LCAxLCAyNDUsIDU1LCAxMDEsIDI0LCAxLCAyMTEsIDgsIDEwMSwgMjQsIDEsIDczLCAxMjYsIDI1MCwgMTc2LCA1MCwgCisgICAgMTI2LCAyMjQsIDIyOCwgNTAsIDEyNiwgMjI4LCA1MiwgNTAsIDEyNiwgMjMxLCAyMzIsIDEyNiwgMjUxLCAxMzUsIDEzMCwgCisgICAgMTI2LCAyMTEsIDQwLCA1MCwgMTI2LCAyMTEsIDIxNywgNTAsIDEwMSwgMjQ0LCAxOCwgMTkyLCAyMTMsIDIzOSwgMTAxLCAKKyAgICAxNDAsIDc0LCAxMDEsIDIxNCwgMTUzLCA3NCwgMTAxLCA5NywgNzQsIDEwMSwgMjQ2LCAxMDQsIDc0LCAxMDEsIDg1LCAyMTgsIAorICAgIDIzNCwgMTAxLCA3MSwgMjUwLCAzNSwgMjM1LCAyMDQsIDI1NCwgOTksIDI1NCwgMTIwLCAyMzUsIDIwNCwgMjU0LCA5OSwgCisgICAgMjIwLCAxMzcsIDIzNSwgMjA0LCAyNTQsIDk5LCAyMTYsIDIzNiwgMjI2LCAyNDksIDIyMywgNzIsIDI1MCwgMTQyLCAyMjMsIAorICAgIDcyLCAyNTAsIDE0MiwgNjIsIDU3LCAzLCAyNTMsIDE0MiwgNjEsIDYyLCA1NywgMywgMjUzLCAxMTEsIDc1LCA2MiwgNTcsIAorICAgIDMsIDI1MywgMTIwLCA3MywgNjIsIDU3LCAzLCAyNTMsIDg4LCA3NiwgNjIsIDU3LCAzLCAyNTMsIDEzOCwgNzAsIDYyLCA1NywgCisgICAgMywgMjUzLCAxNTcsIDI0OCwgMjIxLCA2MiwgNTcsIDMsIDI1MywgMTA0LCAyNDgsIDkwLCA2MiwgNTcsIDMsIDI1MywgMTQ0LCAKKyAgICAyNDgsIDMsIDYyLCA1NywgMywgMjUzLCAxMzQsIDI0NywgMTQ1LCA2MiwgNTcsIDMsIDI1MywgOTgsIDI0NiwgNzgsIDYyLCAKKyAgICA1NywgMywgMjUzLCA5MiwgMjM1LCAxNDEsIDYyLCA1NywgMywgMjUzLCAxMDMsIDIzNSwgMTI2LCA2MiwgNTcsIDMsIDI1MywgCisgICAgMTEzLCAyMzUsIDY4LCA2MiwgNTcsIDMsIDI1MywgODQsIDIzNSwgNTEsIDYyLCA1NywgMywgMjUzLCA3MiwgMTc2LCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTA1LCAyMzQsIDE4MiwgNjIsIDU3LCAzLCAyNTMsIDgyLCAyMzQsIDkyLCA2MiwgNTcsIDMsIDI1MywgCisgICAgNzksIDIzNCwgMjgsIDYyLCA1NywgMywgMjUzLCA2OCwgMjMzLCAyMTcsIDYyLCA1NywgMywgMjUzLCA2OSwgMTg0LCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTM1LCAyMzEsIDkxLCA2MiwgNTcsIDMsIDI1MywgNzYsIDIzMCwgMjMwLCA2MiwgNTcsIDMsIDI1MywgCisgICAgMTMzLCAyMzAsIDE2MSwgNjIsIDU3LCAzLCAyNTMsIDEyNSwgMjMwLCAxMDIsIDYyLCA1NywgMywgMjUzLCAxNDYsIDE5NywgCisgICAgNjIsIDU3LCAzLCAyNTMsIDEyNCwgMjI5LCAxMDcsIDYyLCA1NywgMywgMjUzLCAxMTgsIDIyOCwgMjMzLCA2MiwgNTcsIDMsIAorICAgIDI1MywgOTcsIDIyOCwgNzQsIDYyLCA1NywgMywgMjUzLCA5NCwgMjI3LCAyMzcsIDYyLCA1NywgMywgMjUzLCAxNTMsIDE5MCwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDc3LCAyMjUsIDIyMSwgNjIsIDU3LCAzLCAyNTMsIDExMCwgMjI1LCAxMDgsIDYyLCA1NywgMywgCisgICAgMjUzLCAxMzcsIDIyNSwgMTYsIDYyLCA1NywgMywgMjUzLCA5OSwgMjI0LCAxNTAsIDYyLCA1NywgMywgMjUzLCAxMzIsIAorICAgIDIyNCwgODgsIDYyLCA1NywgMywgMjUzLCA3MSwgMjI0LCA2OSwgNjIsIDU3LCAzLCAyNTMsIDEyNywgMjI0LCA1MywgNjIsIAorICAgIDU3LCAzLCAyNTMsIDExNiwgMjI0LCA0MiwgNjIsIDU3LCAzLCAyNTMsIDg5LCAyMDUsIDYyLCA1NywgMywgMjUzLCAxMjEsIAorICAgIDIyMywgMTI4LCA2MiwgNTcsIDMsIDI1MywgOTYsIDIyMywgMzUsIDYyLCA1NywgMywgMjUzLCAxNTUsIDIyMiwgMjExLCA2MiwgCisgICAgNTcsIDMsIDI1MywgMTIyLCAyMjIsIDE0MCwgNjIsIDU3LCAzLCAyNTMsIDExNywgMjA2LCA2MiwgNTcsIDMsIDI1MywgMTQwLCAKKyAgICAyMjEsIDE4MSwgNjIsIDU3LCAzLCAyNTMsIDEwOCwgMjE5LCAxOTEsIDYyLCA1NywgMywgMjUzLCAxMzYsIDIxOSwgNTgsIAorICAgIDYyLCA1NywgMywgMjUzLCA5MSwgMjE4LCA4MywgNjIsIDU3LCAzLCAyNTMsIDkwLCAyMTcsIDEwNSwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDE1MSwgMjE3LCAyMiwgNjIsIDU3LCAzLCAyNTMsIDExMiwgMjE2LCAxMTcsIDYyLCA1NywgMywgMjUzLCAxNDksIAorICAgIDExMSwgNjIsIDU3LCAzLCAyNTMsIDgwLCAyMTUsIDExOCwgNjIsIDU3LCAzLCAyNTMsIDk1LCAyMTIsIDY1LCA2MiwgNTcsIAorICAgIDMsIDI1MywgNzQsIDIxMiwgMjIsIDYyLCA1NywgMywgMjUzLCAxMDksIDIxMSwgMjUwLCA2MiwgNTcsIDMsIDI1MywgMTA3LCAKKyAgICAyMTEsIDIyNywgNjIsIDU3LCAzLCAyNTMsIDEzMSwgMjEwLCAxMTYsIDYyLCA1NywgMywgMjUzLCA3NSwgMjEwLCA5NCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEyOCwgMjEwLCAyMywgNjIsIDU3LCAzLCAyNTMsIDEyMywgMjU1LCA3NSwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDEwNiwgMjU1LCA3NCwgNjIsIDU3LCAzLCAyNTMsIDY1LCAyNTMsIDE5MiwgNjIsIDU3LCAzLCAyNTMsIDc4LCAyNDYsIDQ2LCAKKyAgICA2MiwgNTcsIDMsIDI1MywgNjEsIDI0NiwgNDUsIDYyLCA1NywgMywgMjUzLCAxMDEsIDIyNywgMTc0LCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTE5LCAyMjQsIDE0OCwgNjIsIDU3LCAzLCAyNTMsIDg3LCAyMjQsIDE1MiwgNjIsIDU3LCAzLCAyNTMsIDczLCAKKyAgICAyMjMsIDE4NiwgNjIsIDU3LCAzLCAyNTMsIDExNSwgMjIzLCAxODUsIDYyLCA1NywgMywgMjUzLCA4MSwgMjIyLCAyMTAsIAorICAgIDYyLCA1NywgMywgMjUzLCA4MywgMjE3LCAxMDIsIDYyLCA1NywgMywgMjUzLCA2MywgMjE1LCA3OCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDYwLCAxMDUsIDYyLCA1NywgMTYsIDI1MywgMTMwLCA2MiwgNTcsIDE2LCAyNTMsIDEyOSwgNjIsIDU3LCAxNiwgCisgICAgMjUzLCAxMjYsIDYyLCA1NywgMTYsIDI1MywgMTE0LCA2MiwgNTcsIDE2LCAyNTMsIDEwMiwgNjIsIDU3LCAxNiwgMjUzLCAKKyAgICAxMDAsIDYyLCA1NywgMTYsIDI1MywgOTMsIDYyLCA1NywgMTYsIDI1MywgODYsIDYyLCA1NywgMTYsIDI1MywgODUsIDYyLCAKKyAgICA1NywgMTYsIDI1MywgNzAsIDYyLCA1NywgMTYsIDI1MywgNjcsIDYyLCA1NywgMTYsIDI1MywgNjYsIDYyLCA1NywgMTYsIAorICAgIDI1MywgNjQsIDYyLCA1NywgMTYsIDI1MywgNjIsIDYyLCA1NywgMTA2LCAyNTMsIDU5LCAyMzEsIDE4NSwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgNTgsIDIxMSwgMjIxLCA2MiwgNTcsIDEwNiwgMjUzLCA1NywgMjQ4LCA3NCwgNjIsIDU3LCAxMDYsIDI1MywgCisgICAgNTYsIDI0NSwgOTUsIDYyLCA1NywgMTA2LCAyNTMsIDU1LCAyMzEsIDE1OSwgNjIsIDU3LCAxMDYsIDI1MywgNTQsIDIxOCwgCisgICAgMTYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1MywgMjQ1LCAzNywgNjIsIDU3LCAxMDYsIDI1MywgNTIsIDIyMywgMTUzLCA2MiwgCisgICAgNTcsIDEwNiwgMjUzLCA1MSwgMjIwLCA2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTAsIDI0MSwgMjM3LCA2MiwgNTcsIDEwNiwgCisgICAgMjUzLCA0OSwgMjE5LCAyNSwgNjIsIDU3LCAxMDYsIDI1MywgNDgsIDI1MSwgMjAzLCA2MiwgNTcsIDEwNiwgMjUzLCA0NywgCisgICAgMjQ5LCAxNDUsIDYyLCA1NywgMTA2LCAyNTMsIDQ2LCAyNTEsIDExNSwgNjIsIDU3LCAxMDYsIDI1MywgNDUsIDIxMiwgMiwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgNDQsIDI1MiwgMTM2LCA2MiwgNTcsIDEwNiwgMjUzLCA0MywgMjI2LCAyMDUsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDQyLCAyMTgsIDI1NCwgNjIsIDU3LCAxMDYsIDI1MywgNDEsIDI0OSwgNjgsIDYyLCA1NywgMjMwLCAxNDIsIAorICAgIDI1MywgNDAsIDIzNCwgMjI0LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDM5LCAyMzQsIDIzMiwgNjIsIDU3LCAxMDYsIDI1MywgCisgICAgMzgsIDIyNiwgMjE4LCA2MiwgNTcsIDEwNiwgMjUzLCAzNywgMjExLCAyMzYsIDYyLCA1NywgMTA2LCAyNTMsIDM2LCA2MiwgCisgICAgNTcsIDIzMCwgMTQyLCAyNTMsIDM1LCAyNTQsIDE3LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDM0LCAyMzEsIDUyLCA2MiwgCisgICAgNTcsIDEwNiwgMjUzLCAzMywgMjUxLCAxMzQsIDYyLCA1NywgMTA2LCAyNTMsIDMyLCAyNDIsIDE2NiwgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgMzEsIDYyLCA1NywgMTA2LCAyNTMsIDMwLCAyMTEsIDIxMiwgNjIsIDU3LCAxMDYsIDI1MywgMjksIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDI4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNywgMjQwLCAyNDgsIDYyLCA1NywgMTA2LCAyNTMsIDI2LCA2MiwgCisgICAgNTcsIDEwNiwgMjUzLCAyNSwgNjIsIDU3LCAxMDYsIDI1MywgMjQsIDYyLCA1NywgMjMwLCAxNDIsIDI1MywgMjIsIDIxNSwgCisgICAgOTIsIDYyLCA1NywgMTA2LCAyNTMsIDIxLCA2MiwgNTcsIDEwNiwgMjUzLCAyMCwgNjIsIDU3LCAxMDYsIDI1MywgMTksIAorICAgIDI0OSwgMjUwLCA2MiwgNTcsIDEwNiwgMjUzLCAxOCwgNjIsIDU3LCAxMDYsIDI1MywgMTcsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDE2LCAyNDMsIDkzLCA2MiwgNTcsIDEwNiwgMjUzLCAxNSwgMjU0LCA0LCA2MiwgNTcsIDEwNiwgMjUzLCAxNCwgNjIsIDU3LCAKKyAgICAxMDYsIDI1MywgMTMsIDYyLCA1NywgMTA2LCAyNTMsIDEyLCA2MiwgNTcsIDEwNiwgMjUzLCAxMSwgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgMTAsIDYyLCA1NywgMTA2LCAyNTMsIDksIDYyLCA1NywgMTA2LCAyNTMsIDgsIDYyLCA1NywgMTA2LCAyNTMsIDcsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDYsIDYyLCA1NywgMTA2LCAyNTMsIDUsIDIzMCwgMTM0LCA2MiwgNTcsIDEwNiwgMjUzLCA0LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCAzLCAyMTUsIDIzNSwgNjIsIDU3LCAxMDYsIDI1MywgMiwgNjIsIDU3LCAxMDYsIDI1MywgMSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgMCwgNjIsIDU3LCAxMDYsIDI1MiwgMjU1LCA2MiwgNTcsIDEwNiwgMjUyLCAyNTQsIDYyLCAKKyAgICA1NywgMTA2LCAyNTIsIDI1MywgNjIsIDU3LCAxMDYsIDI1MiwgMjUyLCA2MiwgNTcsIDEwNiwgMjUyLCAyNTEsIDYyLCA1NywgCisgICAgMTA2LCAyNTIsIDI1MCwgNjIsIDU3LCAxMDYsIDI1MiwgMjQ5LCA2MiwgNTcsIDEwNiwgMjUyLCAyNDgsIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDI0NywgMjQxLCAyMTEsIDYyLCA1NywgMTA2LCAyNTIsIDIyNiwgMjQ0LCAyOCwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMjIzLCAyNTIsIDExNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjE4LCAyMTksIDUsIDYyLCA1NywgMTA2LCAyNTIsIDIxNywgNzQsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDIxNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjE1LCAyMTcsIDIzNiwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMjE0LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTMsIDYyLCA1NywgMTA2LCAyNTIsIDIxMiwgMjExLCAyNTQsIDI1MCwgMTM5LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMTEsIDI1MCwgMTM5LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTAsIDI1MCwgMTQwLCAyNDMsIAorICAgIDI1NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjA5LCAyMTIsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDIwOCwgNjIsIDU3LCAxMDYsIAorICAgIDI1MiwgMjA3LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTIsIDIwNiwgMjQ3LCAxOTgsIDYyLCA1NywgMTA2LCAyNTIsIDIwNSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjA0LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDIsIDYyLCA1NywgMTA2LCAyNTIsIDIwMSwgNjIsIAorICAgIDU3LCAxMDYsIDI1MiwgMjAwLCA2MiwgNTcsIDEwNiwgMjUyLCAxOTksIDI0OCwgMTU5LCA2MiwgNTcsIDEwNiwgMjUyLCAKKyAgICAxOTgsIDYyLCA1NywgMTA2LCAyNTIsIDE5NywgNjIsIDU3LCAxMDYsIDI1MiwgMTk2LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTUsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDE5NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTMsIDIzLCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjQ2LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQ1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAorICAgIDI1MiwgMjQ0LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCisgICAgMjQyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjQwLCAKKyAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM4LCA2MiwgNTcsIAorICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM3LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM2LCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjM1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjM0LCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjMzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIAorICAgIDI1MiwgMjMxLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjMwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgCisgICAgMjI5LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI4LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI3LCAKKyAgICA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI1LCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjI0LCA2MiwgNTcsIAorICAgIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIyLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjIxLCA2MiwgNTcsIDEwNiwgCisgICAgMjEzLCAxODYsIDI1MiwgMjIwLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMjE5LCA2MiwgNTcsIDEwNiwgMjEzLCAKKyAgICAxODYsIDI1MiwgMjAzLCA2MiwgNTcsIDEwNiwgMjEzLCAxODYsIDI1MiwgMTkzLCAyNTQsIDIzNiwgMjExLCAyMDksIDIyMCwgCisgICAgMTM4LCAyMzIsIDIxMywgMjU0LCAyMzYsIDIxMSwgMjA5LCAyMjAsIDEzOCwgMjQ3LCAxMjAsIDI1NCwgMjM2LCAyNTAsIAorICAgIDEzMCwgNzgsIDI1NCwgMjM2LCA1NCwgMTEwLCAyNTQsIDIzNiwgNTQsIDEwNSwgMjU0LCAyMzYsIDU0LCAxNTgsIDI1NCwgCisgICAgMjM2LCA1NCwgMTYxLCAyNTQsIDIzNiwgNTQsIDE4OSwgMjU0LCAyMzYsIDU0LCAxOTQsIDI1NCwgMjM2LCA1NCwgMTk4LCAKKyAgICAyNTQsIDIzNiwgNTQsIDE5NSwgMjU0LCAyMzYsIDU0LCAyMDAsIDI1NCwgMjM2LCA1NCwgMjE2LCAyNDcsIDI1NCwgMjM2LCAKKyAgICA1NCwgMjE1LCA3MywgMjU0LCAyMzYsIDU0LCAyMTYsIDE2MiwgMjU0LCAyMzYsIDU0LCAyNDQsIDE1LCAyNTQsIDIzNiwgNTQsIAorICAgIDI0NCwgMTE0LCAyNTQsIDIzNiwgNTQsIDIxOSwgMTExLCAyNTQsIDIzNiwgNTQsIDIyMCwgMTE2LCAyNTQsIDIzNiwgNTQsIAorICAgIDI0NSwgMTg0LCAyNTQsIDIzNiwgNTQsIDIyOCwgMTk1LCAyNTQsIDIzNiwgNTQsIDEyMywgMjQwLCAyMTAsIDI1NCwgMjM2LCAKKyAgICA1NCwgMTEzLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAxMzQsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NCwgMTEsIAorICAgIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDIxOSwgMTI1LCAyNDAsIAorICAgIDIxMCwgMjU0LCAyMzYsIDU0LCAyMjAsIDEyMiwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMjQ1LCAxOTMsIDI0MCwgMjEwLCAKKyAgICAyNTQsIDIzNiwgNTQsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAxMjMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgCisgICAgNTQsIDExMywgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMTM0LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDQsIDExLCAKKyAgICAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDQsIDgxLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTksIDEyNSwgMjE2LCAKKyAgICAxNDcsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMjIsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDI0NSwgMTkzLCAyMTYsIDE0NywgCisgICAgMjU0LCAyMzYsIDU0LCAyMjgsIDIwMCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE2LCAyNDgsIDIxNiwgMTQ3LCAyNTQsIAorICAgIDIzNiwgNTQsIDIxNSwgNzQsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxNiwgMTYzLCAyMTYsIDE0NywgMjU0LCAyMzYsIAorICAgIDU0LCAyNDQsIDE2LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDQsIDExNSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgCisgICAgMjE5LCAxMTIsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyMCwgMTE3LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDUsIAorICAgIDE4NSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjI4LCAxOTYsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgMjEyLCAxNCwgMjUyLCAKKyAgICAxMjgsIDIxNCwgMTczLCAyNTQsIDIzNiwgMjEyLCAxNCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgMTQsIAorICAgIDIyMSwgMTc2LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAxNCwgMjE2LCAxNjksIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIAorICAgIDE0LCAyNDQsIDQsIDIxOCwgNTksIDI1NCwgMjM2LCAyNDYsIDgxLCAyMzEsIDkwLCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIAorICAgIDIzNiwgMjMyLCAxOTksIDIzMSwgOTAsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgMjM2LCAyMzEsIDkwLCAyMjEsIDE3NiwgCisgICAgMjE4LCA1OSwgMjU0LCAyMzYsIDIzMSwgOTAsIDIxNiwgMTY5LCAyMTgsIDU5LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyMjQsIDIxLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAyNDIsIDI3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyNDYsIDEwMCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDE4OSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE0LCAyNiwgCisgICAgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTYsIAorICAgIDE0NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE1LCAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgCisgICAgODEsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIDI0OCwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAKKyAgICAxOTQsIDI0NCwgMTE1LCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAyNDAsIDIxMSwgMjE3LCA2NywgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjExLCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyMTYsIDE0OCwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxNiwgMTQ4LCAyMTcsIDY3LCAyNiwgCisgICAgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIDI0OCwgMjE4LCAKKyAgICAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIAorICAgIDI0MCwgMjExLCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjExLCAyMTgsIDE1MCwgCisgICAgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjE2LCAxNDgsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAKKyAgICAyNDgsIDIxNiwgMTQ4LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgMTE1LCAyMTYsIDE0OCwgMjE4LCAKKyAgICAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyMTYsIDI0OCwgMjMwLCAxNjQsIDI2LCAyNTUsIDYsIDI0MSwgMjA1LCAxMjMsIAorICAgIDIyNSwgMzEsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMTAsIDI2LCAyNTUsIDYsIDI0MSwgMjAxLCAxMTAsIDI2LCAyNTUsIAorICAgIDYsIDI0NSwgMTA0LCAxMDUsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMDUsIDI2LCAyNTUsIDYsIDI0OSwgNjUsIDExMywgCisgICAgMjQ2LCA5OSwgMjYsIDI1NSwgNiwgMjQ1LCAxMDQsIDExMywgMjQ2LCA5OSwgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDE4OSwgCisgICAgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDIxNiwgMjQ3LCAyNiwgMjU1LCA2LCAyMTUsIDIwMywgMjE2LCAyNDgsIDI1NCwgMTQxLCAKKyAgICAxNywgMjYsIDI1NSwgNiwgMjQxLCAyMDEsIDIxNiwgMjQ3LCAyNiwgMjU1LCA2LCAyMzEsIDQxLCAyMTYsIDI0NywgMjYsIAorICAgIDI1NSwgNiwgMjE2LCAxODEsIDIxNiwgMjQ3LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMjE2LCAxNjIsIDI2LCAyNTUsIDYsIAorICAgIDIxNSwgMjAzLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDI0NCwgMTE1LCAyNTQsIDE0MSwgMTcsIDI2LCAKKyAgICAyNTUsIDYsIDI0MSwgMjAxLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgMTE0LCAyNiwgMjU1LCA2LCAKKyAgICAyMTYsIDE4MSwgMTIzLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEzNCwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIAorICAgIDI0NSwgMTA0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgCisgICAgMjU1LCA2LCAyMTYsIDE4MSwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDI1MCwgMjI3LCAyNDQsIDgxLCAyNDAsIAorICAgIDIxMCwgMjYsIDI1NSwgNiwgMjI5LCAxODIsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTIzLCAKKyAgICAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgODEsIDIxNiwgMTQ3LCAyNiwgMjU1LCA2LCAyNDgsIDU3LCAKKyAgICAyNDQsIDgxLCAyMzAsIDE2NCwgMjYsIDI1NSwgNiwgMjE4LCAxMTgsIDI0NCwgMTE1LCAyMzAsIDE2NCwgMjYsIDEyMywgCisgICAgMTYzLCA1MCwgMjYsIDEyMywgMTYzLCA1LCAyNTQsIDE0MSwgMTcsIDI2LCAxMTMsIDIxNiwgMTY3LCA1MCwgMjYsIDEzNCwgCisgICAgMjI0LCAyMCwgNTAsIDI2LCAyMTEsIDQ1LCA1MCwgMjYsIDIxNywgNjgsIDUwLCAyNiwgMjQ2LCAxMDEsIDUwLCAyNiwgMjI2LCAKKyAgICAyNDYsIDUwLCAyNiwgMTEzLCAyMjYsIDI0NSwgNTAsIDI2LCAxMzQsIDIyNiwgMjQ1LCA1MCwgMjYsIDI0NCwgMTEsIDIyNiwgCisgICAgMjQ1LCA1MCwgMjYsIDI0NCwgODEsIDIyNiwgMjQ1LCA1MCwgMjYsIDIzMSwgMzUsIDUwLCAyNiwgMjMzLCAxNTcsIDI1MiwgCisgICAgMTI4LCA1MCwgMjYsIDIzMiwgMTk0LCA1MCwgMjYsIDIyNiwgMTMxLCA1MCwgMjYsIDIxMSwgMTU5LCA1MCwgMjYsIDI1MywgCisgICAgMjQzLCA1MCwgMjYsIDI1NCwgMCwgNTAsIDI2LCAyNDIsIDE0NCwgNTAsIDI2LCAyMTUsIDE4NiwgMjUyLCAxMjgsIDUwLCAKKyAgICAyNiwgMjEwLCA4NywgNTAsIDIyMiwgMTk4LCAyMjAsIDExMywgNTAsIDIyMiwgMTk4LCAyMTQsIDE4NSwgNTAsIDIyMiwgCisgICAgMTk4LCAyMjAsIDE0MiwgNTAsIDIyMiwgMTk4LCAyMjAsIDExMSwgNTAsIDIyMiwgMTk4LCAyNDcsIDIxMywgMjIwLCAxMTEsIAorICAgIDUwLCAyMjIsIDE5OCwgMjE5LCAxNjgsIDUwLCAyMjIsIDE5OCwgMjQ4LCA1MywgNTAsIDIyMiwgMTk4LCAyMjQsIDYsIDUwLCAKKyAgICAyMjIsIDE5OCwgMjIwLCAxMjksIDUwLCAyMjIsIDE5OCwgMjQ2LCA2MCwgNTAsIDIyMiwgMTk4LCAyNTMsIDIzOCwgNTAsIAorICAgIDIyMiwgMTk4LCAyNTAsIDE3MSwgNTAsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI1LCAyMTMsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjI1LCAyNCwgMjQxLCAyMzUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE3LCA0NSwgMjQxLCAyMzUsIDIyNSwgCisgICAgMTQzLCAyNDcsIDE5MSwgNSwgMjUwLCAyNDcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUwLCAxMDEsIDIyNSwgMTQzLCAKKyAgICAyNDcsIDE5MSwgNSwgMjExLCAyMjEsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQxLCAyMTEsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjQzLCA4NSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTYsIDExNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICA3NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTEsIDE2OSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjAsIDI5LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI0OSwgMjQ0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIzMSwgMTg0LCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDIzMSwgMTM2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyMSwgMjE2LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIzMiwgMjM3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MSwgMTg4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIAorICAgIDI1MCwgMjMxLCAyMjUsIDM1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NywgMTMzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIAorICAgIDUsIDI0OSwgMjIzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxOSwgODcsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ5LCAKKyAgICAyMjQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUyLCA2MywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjAsIDE2LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI0MCwgMjQ4LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0MSwgMTc4LCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDI1MSwgMTEyLCAyMzMsIDM2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMjI0LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDIyMywgMTUzLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NSwgMjMwLCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDI0NiwgMTA3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNSwgMTA1LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDI1MiwgNjYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI1LCAzNiwgMjE1LCAyMzUsIDIyNSwgMTQzLCAyNDcsIAorICAgIDE5MSwgNSwgMjEzLCAxNTksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI2LCAxOCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyMjIsIDE5MCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMzIsIDIyNCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjYsIAorICAgIDExNSwgMjUyLCAxODQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjQ0LCA0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyNDIsIDEzOCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTgsIDExOSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCA0LCAyNTMsIAorICAgIDE2OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTIsIDMyLCAyNTIsIDE0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAzOCwgCisgICAgMjI2LCAyNDgsIDkxLCAyMzIsIDYwLCAxLCA2MSwgMjMyLCA2MCwgMSwgNzUsIDIzMiwgNjAsIDEsIDI1MywgMTU4LCAyMzIsIAorICAgIDYwLCAxLCAyNTIsIDE5LCAyMzIsIDYwLCAxLCAyNDMsIDIwMiwgMjMyLCA2MCwgMSwgMjQ5LCA2MCwgMjMyLCA2MCwgMSwgCisgICAgNzMsIDIzMiwgNjAsIDEsIDIxMiwgOTgsIDIzMiwgNjAsIDEsIDIxMCwgMTU5LCAyMzIsIDYwLCAxLCAyMTYsIDIxMCwgMjMyLCAKKyAgICA2MCwgMSwgMjM1LCAxNDQsIDIzMiwgNjAsIDEsIDIzNSwgMjMsIDIzMiwgNjAsIDEsIDIyNCwgOTYsIDIzMiwgNjAsIDEsIAorICAgIDE1NiwgMjMyLCA2MCwgMSwgMTkzLCAyMzIsIDYwLCAxLCAyMzAsIDI1LCAyMzIsIDYwLCAxLCAyMzAsIDE2NiwgMjMyLCA2MCwgCisgICAgMSwgMjI4LCAxMTEsIDIzMiwgNjAsIDEsIDcwLCAyMzIsIDYwLCAxLCAyMjYsIDEwNSwgMjMyLCA2MCwgMSwgMjM0LCA0NywgCisgICAgMjMyLCA2MCwgMSwgMTUzLCAyMzIsIDYwLCAxLCAyMjIsIDkxLCAyMzIsIDYwLCAxLCAyMTcsIDE1MiwgMjMyLCA2MCwgMSwgCisgICAgMjE1LCAxNTksIDIzMiwgNjAsIDEsIDI1NCwgMTIzLCAyMzIsIDYwLCAxLCAyNDUsIDE1MCwgMjMyLCA2MCwgMSwgMjQyLCAKKyAgICA2MCwgMjMyLCA2MCwgMSwgMjExLCAxNzgsIDI1MCwgMjM3LCAxLCA2MSwgMjUwLCAyMzcsIDEsIDIyNiwgOTEsIDI1MCwgCisgICAgMjM3LCAxLCAyNDksIDYwLCAyNTAsIDIzNywgMSwgMTU2LCAyNTAsIDIzNywgMSwgMjE0LCAxMTYsIDI1MCwgMjM3LCAxLCAKKyAgICAxNTMsIDI1MCwgMjM3LCAxLCAyMzMsIDYyLCAyNTAsIDIzNywgMSwgMjU1LCA3NSwgMjUwLCAyMzcsIDEsIDIyNCwgOTYsIAorICAgIDI1MCwgMjM3LCAxLCAyNTMsIDE1OCwgMjUwLCAyMzcsIDEsIDE5MywgMjUwLCAyMzcsIDEsIDc2LCAyNTAsIDIzNywgMSwgCisgICAgMjQ4LCAyMjMsIDI1MCwgMjM3LCAxLCAyMTcsIDE1MiwgMjUwLCAyMzcsIDEsIDIyMCwgMTA0LCAyNTAsIDIzNywgMSwgMjIwLCAKKyAgICAxMDMsIDI1MCwgMjM3LCAxLCAyMjIsIDkxLCAyNTAsIDIzNywgMSwgMjUxLCA2NSwgMjUwLCAyMzcsIDEsIDcwLCAyNTAsIAorICAgIDIzNywgMSwgMjI4LCAxMTEsIDI1MCwgMjM3LCAxLCAyMTEsIDE3OCwgMjUwLCAyMzcsIDEsIDIzMCwgMjUsIDI1MCwgMjM3LCAKKyAgICAxLCAyMTUsIDE1OCwgMjUwLCAyMzcsIDEsIDIyNiwgMTA1LCAyNTAsIDIzNywgMSwgMjE4LCAyMjYsIDI1MCwgMjM3LCAxLCAKKyAgICA3MywgMjUwLCAyMzcsIDEsIDc1LCAyNTAsIDIzNywgMSwgMjE0LCAxMTMsIDI1MCwgMjM3LCAxLCAyMzUsIDIzLCAyNTAsIAorICAgIDIzNywgMSwgMjM1LCAxNCwgMjUwLCAyMzcsIDEsIDIyOSwgMTUwLCAyNTAsIDIzNywgMSwgMjE0LCAxMTgsIDI1MCwgMjM3LCAKKyAgICAxLCAyNDMsIDIwMiwgMjUwLCAyMzcsIDEsIDI0MywgMTM3LCAyNTAsIDIzNywgMSwgMjE4LCAxNjgsIDI1MCwgMjM3LCAxLCAKKyAgICAyMTgsIDE2NywgMjUwLCAyMzcsIDEsIDIyOSwgNzksIDI1MCwgMjM3LCAxLCAyMzYsIDMzLCAyNTAsIDIzNywgMSwgMjUxLCAKKyAgICA2NCwgMjUwLCAyMzcsIDEsIDIxNSwgMTU5LCAyNTAsIDIzNywgMSwgMjE0LCAxMTUsIDI1MCwgMjM3LCAxLCAyMjIsIDE4MCwgCisgICAgMjUwLCAyMzcsIDEsIDIzMSwgMTI5LCAyNTAsIDIzNywgMSwgMjMxLCAxMjgsIDI1MCwgMjM3LCAxLCAyMzEsIDEyNywgMjUwLCAKKyAgICAyMzcsIDEsIDIzMSwgMTI2LCAyNTAsIDIzNywgMSwgMjMzLCA2MSwgMjUwLCAyMzcsIDEsIDI0NSwgMjM0LCAyNTAsIDIzNywgCisgICAgMSwgMjE0LCAxMTQsIDU1LCAzMiwgMSwgNjEsIDU1LCAzMiwgMSwgMjUyLCA3NSwgNTUsIDMyLCAxLCAyMzQsIDE4MiwgNTUsIAorICAgIDMyLCAxLCAyNDgsIDkwLCA1NSwgMzIsIDEsIDc1LCA1NSwgMzIsIDEsIDIxMywgMjU1LCA1NSwgMzIsIDEsIDIxMCwgOTQsIAorICAgIDU1LCAzMiwgMSwgMjQxLCAyMzgsIDU1LCAzMiwgMSwgMjE2LCAxOTUsIDU1LCAzMiwgMSwgNzMsIDU1LCAzMiwgMSwgMTc2LCAKKyAgICA1NSwgMzIsIDEsIDI0NSwgMTc0LCA1NSwgMzIsIDEsIDI0NSwgMTU5LCA1NSwgMzIsIDEsIDI0NSwgMTUwLCA1NSwgMzIsIDEsIAorICAgIDI0NSwgNzUsIDU1LCAzMiwgMSwgNzYsIDU1LCAzMiwgMSwgMjI1LCAyMjEsIDU1LCAzMiwgMSwgMjIwLCA2MywgNTUsIDMyLCAKKyAgICAxLCAyMzMsIDIxNywgNTUsIDMyLCAxLCAyNDUsIDkyLCA1NSwgMzIsIDEsIDI0NSwgODIsIDU1LCAzMiwgMSwgMjE3LCAyMiwgCisgICAgNTUsIDMyLCAxLCA3MCwgNTUsIDMyLCAxLCAyNDUsIDE3NywgNTUsIDMyLCAxLCAyMjUsIDEzNiwgNTUsIDMyLCAxLCAyMzQsIAorICAgIDExOSwgNTUsIDMyLCAxLCAyNDUsIDIwMiwgNTUsIDMyLCAxLCAyNDUsIDg0LCA1NSwgMzIsIDEsIDI1MCwgMTMxLCA1NSwgCisgICAgMzIsIDEsIDIzNiwgMzMsIDU1LCAzMiwgMSwgMjE0LCAxMTgsIDU1LCAzMiwgMjI3LCAxOTgsIDExMCwgNTUsIDMyLCAyMjcsIAorICAgIDE5OCwgMTg5LCA1NSwgMzIsIDIyNywgMTk4LCAyMTYsIDI0NywgNTUsIDMyLCAyMjcsIDE5OCwgMjQ0LCAxMTQsIDI0MiwgCisgICAgMTUzLCAxLCAyNTQsIDIwNCwgMjQyLCAxNTMsIDEsIDI1MiwgMTYzLCAyNDIsIDE1MywgMSwgMjQyLCAyMTEsIDI0MiwgMTUzLCAKKyAgICAxLCAyNDgsIDIwNCwgMjQyLCAxNTMsIDEsIDI1NCwgMjAwLCAyNDIsIDE1MywgMSwgMjI0LCA3OSwgMjQyLCAxNTMsIDEsIAorICAgIDIzNSwgMTU1LCAyNDIsIDE1MywgMSwgMjQyLCAzOSwgMjQyLCAxNTMsIDEsIDIxNiwgMTU4LCAyNDIsIDE1MywgMSwgMjQ1LCAKKyAgICAxODMsIDI0MiwgMTUzLCAxLCAyMzMsIDE5MCwgMjQyLCAxNTMsIDEsIDIzMywgMTEzLCAyNDIsIDE1MywgMSwgMjMxLCAxNzksIAorICAgIDI0MiwgMTUzLCAxLCAyMjksIDE4NCwgMjQyLCAxNTMsIDEsIDIzNSwgMTE5LCAyNDIsIDE1MywgMSwgMjE0LCAxMzYsIDI0MiwgCisgICAgMTUzLCAxLCAyMjYsIDY5LCAyNDIsIDE1MywgMSwgMjI4LCAxOTUsIDI0MiwgMTUzLCAxLCAyMjMsIDE2NSwgMjQyLCAxNTMsIAorICAgIDEsIDIyMSwgMjE4LCAyNDIsIDE1MywgMSwgMjE3LCA0LCAyNDIsIDE1MywgMSwgMjExLCAyMzQsIDI0MiwgMTUzLCAxLCAKKyAgICAyNDQsIDE3OCwgMjQyLCAxNTMsIDEsIDIzNiwgMzcsIDI0MiwgMTUzLCAxLCAyNDAsIDE5OSwgMjQyLCAxNTMsIDEsIDIyNiwgCisgICAgMTM5LCAyNDIsIDE1MywgMSwgMjI4LCAyMDAsIDI0MCwgMjEwLCAyMTQsIDIwOSwgMSwgMjU0LCAxNDcsIDIxNCwgMjA5LCAxLCAKKyAgICAyNTIsIDI2LCAyMTQsIDIwOSwgMSwgMjQzLCAxMDgsIDIxNCwgMjA5LCAxLCAyMzQsIDEzMiwgMjE0LCAyMDksIDEsIDI0OCwgCisgICAgNTQsIDIxNCwgMjA5LCAxLCAyNDEsIDY4LCAyMTQsIDIwOSwgMSwgMjExLCAyMjcsIDIxNCwgMjA5LCAxLCAyMTAsIDg1LCAKKyAgICAyMTQsIDIwOSwgMSwgMjQwLCAyNDEsIDIxNCwgMjA5LCAxLCAyMTYsIDIzMCwgMjE0LCAyMDksIDEsIDIxMCwgMjMzLCAyMTQsIAorICAgIDIwOSwgMSwgMjM0LCAyNTAsIDIxNCwgMjA5LCAxLCAyMjAsIDIwLCAyMTQsIDIwOSwgMSwgMjMzLCA5OCwgMjE0LCAyMDksIAorICAgIDEsIDIzMSwgNjUsIDIxNCwgMjA5LCAxLCAyNDgsIDIxLCAyMTQsIDIwOSwgMSwgMjI3LCAxOTQsIDIxNCwgMjA5LCAxLCAKKyAgICAyMTAsIDEzLCAyMTQsIDIwOSwgMSwgMjIxLCAyNDgsIDIxNCwgMjA5LCAxLCAyNTQsIDE5NiwgMjE0LCAyMDksIDEsIDIyNCwgCisgICAgMTUwLCAyMTQsIDIwOSwgMSwgMjIyLCAyNSwgMjE0LCAyMDksIDEsIDIyNCwgMzUsIDIxNCwgMjA5LCAxLCAyMjMsIDE0NCwgCisgICAgMjE0LCAyMDksIDEsIDIxNiwgMTk5LCAyMTQsIDIwOSwgMSwgMjQyLCAyNDQsIDIxNCwgMjA5LCAxLCAxMTEsIDIxNCwgMjA5LCAKKyAgICAxLCA3MywgMjE0LCAyMDksIDEsIDcwLCAyMTQsIDIwOSwgMSwgMjE4LCAxNzksIDIxNCwgMjA5LCAyMTEsIDIwOSwgMjQ3LCAKKyAgICAxNzIsIDU1LCAyMjUsIDE2OSwgNSwgNjEsIDU1LCAyMjUsIDE2OSwgNSwgNzMsIDU1LCAyMjUsIDE2OSwgNSwgNzAsIDU1LCAKKyAgICAyMjUsIDE2OSwgNSwgMTc2LCA1NSwgMjI1LCAxNjksIDUsIDIzMywgMjE3LCA1NSwgMjI1LCAxNjksIDUsIDI0MywgMTM1LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI0MiwgMTEzLCA1NSwgMjI1LCAxNjksIDUsIDIxMSwgMTY1LCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI1MSwgMzMsIDU1LCAyMjUsIDE2OSwgNSwgMjM1LCAxNDEsIDU1LCAyMjUsIDE2OSwgNSwgMjM1LCAxMDgsIDU1LCAyMjUsIAorICAgIDE2OSwgNSwgMjE3LCAxMDUsIDU1LCAyMjUsIDE2OSwgNSwgMjE1LCAxMTgsIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAyMjEsIAorICAgIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAzLCA1NSwgMjI1LCAxNjksIDUsIDI0NiwgNzgsIDU1LCAyMjUsIDE2OSwgNSwgMjE2LCAKKyAgICAyMDgsIDU1LCAyMjUsIDE2OSwgNSwgMTkwLCA1NSwgMjI1LCAxNjksIDUsIDI1MiwgMTkxLCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI0NCwgMTk2LCA1NSwgMjI1LCAxNjksIDUsIDE5NywgNTUsIDIyNSwgMTY5LCA1LCAyMjcsIDIzNywgNTUsIDIyNSwgMTY5LCAKKyAgICA1LCAxODQsIDU1LCAyMjUsIDE2OSwgNSwgMjMwLCAyMzAsIDU1LCAyMjUsIDE2OSwgNSwgMjMwLCAxMDIsIDU1LCAyMjUsIAorICAgIDE2OSwgNSwgMTkxLCA1NSwgMjI1LCAxNjksIDUsIDIxNCwgMjcsIDU1LCAyMjUsIDE2OSwgNSwgMjEzLCAxNzYsIDU1LCAKKyAgICAyMjUsIDE2OSwgNSwgMjA1LCA1NSwgMjI1LCAxNjksIDUsIDIyMiwgMTQwLCA1NSwgMjI1LCAxNjksIDUsIDIzMywgMTM1LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDIwNiwgNTUsIDIyNSwgMTY5LCA1LCAyMTAsIDExNiwgNTUsIDIyNSwgMTY5LCA1LCAyMjAsIAorICAgIDEwMiwgNTUsIDIyNSwgMTY5LCA1LCAyMTgsIDIyMywgNTUsIDIyNSwgMTY5LCA1LCAxNjIsIDU1LCAyMjUsIDE2OSwgNSwgCisgICAgMjUzLCAxODYsIDU1LCAyMjUsIDE2OSwgNSwgMjUzLCAxODUsIDU1LCAyMjUsIDE2OSwgNSwgMjUzLCAxODQsIDU1LCAyMjUsIAorICAgIDE2OSwgNSwgMjExLCAxNDIsIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAyMDAsIDU1LCAyMjUsIDE2OSwgNSwgMjQ4LCAxOTksIAorICAgIDU1LCAyMjUsIDE2OSwgNSwgMjUyLCAxNzAsIDU1LCAyMjUsIDE2OSwgNSwgMjUxLCA4NSwgNTUsIDIyNSwgMTY5LCAyMTEsIAorICAgIDIwOSwgMjQ3LCAxNzIsIDU1LCAyMjUsIDE2OSwgNTQsIDExMCwgNTUsIDIyNSwgMTY5LCA1NCwgMTA1LCA1NSwgMjI1LCAKKyAgICAxNjksIDU0LCAyMTYsIDI0NywgNTUsIDIyNSwgMTY5LCA1NCwgMjE1LCA3MywgNTUsIDIyNSwgMTY5LCA1NCwgMjQwLCAyMTAsIAorICAgIDE4MSwgNiwgMSwgMTk5LCA3MywgMTgxLCA2LCAxLCAxOTksIDc1LCAxODEsIDYsIDEsIDE5OSwgNjEsIDE4MSwgNiwgMSwgCisgICAgMTk5LCAyNTQsIDIwOSwgMTgxLCA2LCAxLCAxOTksIDc2LCAxODEsIDYsIDEsIDE5OSwgMjI2LCAxODMsIDE4MSwgNiwgMSwgCisgICAgMjE5LCAyNTEsIDczLCAxODEsIDYsIDEsIDIxOSwgMjUxLCA3NSwgMTgxLCA2LCAxLCAyMTksIDI1MSwgNjEsIDE4MSwgNiwgCisgICAgMSwgMjE5LCAyNTEsIDI1NCwgMjA5LCAxODEsIDYsIDEsIDIxOSwgMjUxLCA3NiwgMTgxLCA2LCAxLCAyMTksIDI1MSwgMjI2LCAKKyAgICAxODMsIDE4MSwgNiwgMSwgMjUzLCAxNjcsIDE4MSwgNiwgMSwgMjI2LCAxMTYsIDE4MSwgNiwgMSwgMjExLCAxOTUsIDE4MSwgCisgICAgNiwgMSwgMjExLCA0NCwgMTgxLCA2LCAxLCAyNDIsIDYwLCAxODEsIDYsIDEsIDIyNSwgMjExLCAxODEsIDYsIDEsIDI1MiwgCisgICAgNjYsIDE4MSwgNiwgMSwgMjE3LCAxMSwgMTgxLCA2LCAxLCAyNDgsIDc3LCAxODEsIDYsIDEsIDI1MCwgMTI4LCAxODEsIDYsIAorICAgIDEsIDIzNSwgMTI0LCAxODEsIDYsIDEsIDIzNCwgMTg5LCAxODEsIDYsIDEsIDI0MywgODMsIDE4MSwgNiwgMSwgMjQ1LCAKKyAgICAyMDIsIDE4MSwgNiwgMSwgMjEzLCAyNTAsIDE4MSwgNiwgMSwgMjQ1LCA1OSwgMTgxLCA2LCAxLCAyMTYsIDE5NCwgMTgxLCAKKyAgICA2LCAxLCAyNDUsIDgyLCAxODEsIDYsIDEsIDIxMCwgOTIsIDE4MSwgNiwgMSwgMjQ1LCA3NSwgMTgxLCA2LCAxLCAyMTAsIAorICAgIDczLCAxODEsIDYsIDEsIDI0NSwgOTIsIDE4MSwgNiwgMSwgMjQ1LCAxNzQsIDE4MSwgNiwgMSwgMjQ1LCAxNTksIDE4MSwgNiwgCisgICAgMSwgMjQ1LCAxNTAsIDE4MSwgNiwgMSwgMjQ1LCAxMzgsIDE4MSwgNiwgMSwgMjI2LCAyMTksIDE4MSwgNiwgMSwgMjQ1LCAKKyAgICAzOCwgMTgxLCA0LCAxLCAxOTksIDczLCAxODEsIDQsIDEsIDE5OSwgNzUsIDE4MSwgNCwgMSwgMTk5LCA2MSwgMTgxLCA0LCAKKyAgICAxLCAxOTksIDI1NCwgMjA5LCAxODEsIDQsIDEsIDE5OSwgNzYsIDE4MSwgNCwgMSwgMTk5LCAyMjYsIDE4MywgMTgxLCA0LCAKKyAgICAxLCAyMTksIDI1MSwgNzMsIDE4MSwgNCwgMSwgMjE5LCAyNTEsIDc1LCAxODEsIDQsIDEsIDIxOSwgMjUxLCA2MSwgMTgxLCAKKyAgICA0LCAxLCAyMTksIDI1MSwgMjU0LCAyMDksIDE4MSwgNCwgMSwgMjE5LCAyNTEsIDc2LCAxODEsIDQsIDEsIDIxOSwgMjUxLCAKKyAgICAyMjYsIDE4MywgMTgxLCA0LCAxLCAyNTMsIDE2NywgMTgxLCA0LCAxLCAyMjYsIDExNiwgMTgxLCA0LCAxLCAyMTEsIDE5NSwgCisgICAgMTgxLCA0LCAxLCAyMTEsIDQ0LCAxODEsIDQsIDEsIDI0MiwgNjAsIDE4MSwgNCwgMSwgMjI1LCAyMTEsIDE4MSwgNCwgMSwgCisgICAgMjUyLCA2NiwgMTgxLCA0LCAxLCAyMTcsIDExLCAxODEsIDQsIDEsIDI0OCwgNzcsIDE4MSwgNCwgMSwgMjUwLCAxMjgsIAorICAgIDE4MSwgNCwgMSwgMjM1LCAxMjQsIDE4MSwgNCwgMSwgMjM0LCAxODksIDE4MSwgNCwgMSwgMjQzLCA4MywgMTgxLCA0LCAxLCAKKyAgICAyNDUsIDIwMiwgMTgxLCA0LCAxLCAyMTMsIDI1MCwgMTgxLCA0LCAxLCAyNDUsIDU5LCAxODEsIDQsIDEsIDIxNiwgMTk0LCAKKyAgICAxODEsIDQsIDEsIDI0NSwgODIsIDE4MSwgNCwgMSwgMjEwLCA5MiwgMTgxLCA0LCAxLCAyNDUsIDc1LCAxODEsIDQsIDEsIAorICAgIDIxMCwgNzMsIDE4MSwgNCwgMSwgMjQ1LCA5MiwgMTgxLCA0LCAxLCAyNDUsIDE3NCwgMTgxLCA0LCAxLCAyNDUsIDE1OSwgCisgICAgMTgxLCA0LCAxLCAyNDUsIDE1MCwgMTgxLCA0LCAxLCAyNDUsIDEzOCwgMTgxLCA0LCAxLCAyMjYsIDIxOSwgMTgxLCA0LCAxLCAKKyAgICAyNDUsIDM4LCAyMjAsIDY5LCAxLCAyMjUsIDIwOSwgMjIwLCA2OSwgMSwgMjE2LCA1LCAyMjAsIDY5LCAxLCAyMzQsIDkxLCAKKyAgICAyMjAsIDY5LCAxLCAyNDQsIDE0NywgMjIwLCA2OSwgMSwgMjE2LCAxNzIsIDIyMCwgNjksIDEsIDIxOSwgNTgsIDIyMCwgNjksIAorICAgIDEsIDIxOCwgMTQsIDIyMCwgNjksIDEsIDI1MCwgNjEsIDIyMCwgNjksIDEsIDIxMSwgNDYsIDIyMCwgNjksIDEsIDI0MCwgCisgICAgMjA5LCAyMjAsIDY5LCAxLCAyNTIsIDUsIDIyMCwgNjksIDEsIDI0OCwgODksIDIyMCwgNjksIDEsIDI0MywgMTIxLCAyMjAsIAorICAgIDY5LCAxLCAyMTMsIDEyMywgMjIwLCA2OSwgMSwgMjE2LCAxNzYsIDIyMCwgNjksIDEsIDIxMCwgMjEsIDIyMCwgNjksIDEsIAorICAgIDIzMSwgODksIDIyMCwgNjksIDEsIDIzNSwgNDksIDIyMCwgNjksIDEsIDIxMSwgMjI1LCAyMjAsIDY5LCAxLCAyNDIsIDQ4LCAKKyAgICAyMjAsIDY5LCAxLCAyMzIsIDE0MiwgMjIwLCA2OSwgMSwgMjMwLCAxODksIDIyMCwgNjksIDEsIDIzNiwgNDAsIDIyMCwgNjksIAorICAgIDEsIDI0NSwgMjAxLCAyMjAsIDY5LCAxLCAyNTMsIDIzMSwgMjIwLCA2OSwgMSwgMjU0LCAyNDcsIDIyMCwgNjksIDEsIDIyNiwgCisgICAgMTk2LCAyMjAsIDY5LCAxLCAyMTEsIDIxMiwgMjIwLCA2OSwgMSwgMjI2LCAxMzAsIDIyMCwgNjksIDEsIDI1NCwgMjA5LCAKKyAgICAyMjAsIDY5LCAxLCAyMjIsIDIwOCwgMjIwLCA2OSwgMSwgMjI3LCAxOTQsIDIyMCwgNjksIDEsIDI0NSwgMjE3LCAyMjAsIAorICAgIDY5LCAxLCAyNTQsIDIxNCwgMjIwLCA2OSwgMSwgMjQwLCAxMTEsIDIyMCwgNjksIDEsIDIxNCwgMTYzLCAyMjAsIDY5LCAxLCAKKyAgICAyMjYsIDI1NCwgMjIwLCA2OSwgMSwgMjI2LCAxNzYsIDIyMCwgNjksIDEsIDIyNiwgMjE4LCAyMjAsIDY5LCAxLCAyNTMsIAorICAgIDE3MCwgMjIwLCA2OSwgMSwgMjU0LCAxOSwgMjIwLCA2OSwgMSwgMjI2LCAxNTgsIDIyMCwgNjksIDEsIDI1NCwgMTkyLCAKKyAgICAyMjAsIDY5LCAxLCAyNDUsIDg2LCAyMjAsIDY5LCAxLCAyNTMsIDI1MywgMjIwLCA2OSwgMSwgMjQ1LCAyMjcsIDIyMCwgNjksIAorICAgIDEsIDI0MCwgMTE4LCAyMjAsIDY5LCAxLCAyMTEsIDEzLCAyMjYsIDE0MSwgMSwgMjU0LCAxNzAsIDIyNiwgMTQxLCAxLCAKKyAgICAyNTIsIDE5MSwgMjI2LCAxNDEsIDEsIDIxNywgMTA1LCAyMjYsIDE0MSwgMSwgMjM1LCAxNDEsIDIyNiwgMTQxLCAxLCAyMTEsIAorICAgIDE2NSwgMjI2LCAxNDEsIDEsIDIzNCwgMTMyLCAyMjYsIDE0MSwgMSwgMjQ4LCA3NiwgMjI2LCAxNDEsIDEsIDIwNSwgMjI2LCAKKyAgICAxNDEsIDEsIDIwNiwgMjI2LCAxNDEsIDEsIDIyMCwgMjYsIDIyNiwgMTQxLCAxLCAyNDgsIDI1LCAyMjYsIDE0MSwgMSwgCisgICAgMjUwLCAyMTUsIDIyNiwgMTQxLCAxLCAyNDMsIDEzNSwgMjI2LCAxNDEsIDEsIDI0NCwgMTk2LCAyMjYsIDE0MSwgMSwgMjI0LCAKKyAgICA4NiwgMjI2LCAxNDEsIDEsIDIzNSwgOSwgMjI2LCAxNDEsIDEsIDIzMywgMTMwLCAyMjYsIDE0MSwgMSwgMjMwLCAyMDAsIAorICAgIDIyNiwgMTQxLCAxLCAyMjcsIDE3OCwgMjI2LCAxNDEsIDEsIDIxMiwgMzAsIDIyNiwgMTQxLCAxLCAxNjIsIDIyNiwgMTQxLCAKKyAgICAxLCAxOTEsIDIyNiwgMTQxLCAxLCA2MSwgMjI2LCAxNDEsIDEsIDc1LCAyMjYsIDE0MSwgMSwgNzMsIDIyNiwgMTQxLCAxLCAKKyAgICA3NiwgMjI2LCAxNDEsIDEsIDcwLCAyMjYsIDE0MSwgMSwgMjU1LCA3MywgMjI2LCAxNDEsIDEsIDI0NSwgMjA5LCAyMjYsIAorICAgIDE0MSwgMSwgMjI2LCAxODMsIDIyNiwgMTQxLCAyMSwgMjEwLCA4NiwgMjI2LCAxNDEsIDIxLCAxMTAsIDIyNiwgMTQxLCAyMSwgCisgICAgMTA1LCAyMjYsIDE0MSwgMjEsIDE1OCwgMjI2LCAxNDEsIDIxLCAxNjEsIDIyNiwgMTQxLCAyMSwgMTg5LCAyMjYsIDE0MSwgCisgICAgMjEsIDE5NCwgMjI2LCAxNDEsIDIxLCAxOTgsIDIyNiwgMTQxLCAyMSwgMTk1LCAyMjYsIDE0MSwgMjEsIDIwMCwgMjQ5LCAKKyAgICA2NywgMywgNjEsIDI0OSwgNjcsIDMsIDc1LCAyNDksIDY3LCAzLCA3MywgMjQ5LCA2NywgMywgNzYsIDI0OSwgNjcsIDMsIAorICAgIDcwLCAyNDksIDY3LCAzLCAyMzUsIDE0MSwgMjQ5LCA2NywgMywgMjM1LCA2OCwgMjQ5LCA2NywgMywgMTc2LCAyNDksIDY3LCAKKyAgICAzLCAyMzQsIDE4MiwgMjQ5LCA2NywgMywgMjM0LCA5MiwgMjQ5LCA2NywgMywgMjM0LCAyOCwgMjQ5LCA2NywgMywgMjMzLCAKKyAgICAyMTcsIDI0OSwgNjcsIDMsIDIzMywgMTM1LCAyNDksIDY3LCAzLCAyMzMsIDU4LCAyNDksIDY3LCAzLCAyMzIsIDI0MSwgCisgICAgMjQ5LCA2NywgMywgMjMyLCAxNTYsIDI0OSwgNjcsIDMsIDIzMiwgOTgsIDI0OSwgNjcsIDMsIDE4NCwgMjQ5LCA2NywgMywgCisgICAgMjMxLCA5MSwgMjQ5LCA2NywgMywgMjMwLCAyMzAsIDI0OSwgNjcsIDMsIDIzMCwgMTYxLCAyNDksIDY3LCAzLCAyMzAsIAorICAgIDEwMiwgMjQ5LCA2NywgMywgMTk3LCAyNDksIDY3LCAzLCAyMjksIDEwNywgMjQ5LCA2NywgMywgMjI4LCAyMzMsIDI0OSwgCisgICAgNjcsIDMsIDIyOCwgNzQsIDI0OSwgNjcsIDMsIDIyNywgMjM3LCAyNDksIDY3LCAzLCAxOTAsIDI0OSwgNjcsIDMsIDIyNSwgCisgICAgMjIxLCAyNDksIDY3LCAzLCAyMjUsIDEwOCwgMjQ5LCA2NywgMywgMjI1LCAxNiwgMjQ5LCA2NywgMywgMjI0LCAxNTAsIAorICAgIDI0OSwgNjcsIDMsIDIwNSwgMjQ5LCA2NywgMywgMjIzLCAxMjgsIDI0OSwgNjcsIDMsIDIyMywgMzUsIDI0OSwgNjcsIDMsIAorICAgIDIyMiwgMjExLCAyNDksIDY3LCAzLCAyMjIsIDE0MCwgMjQ5LCA2NywgMywgMjA2LCAyNDksIDY3LCAzLCAyMjEsIDE4MSwgCisgICAgMjQ5LCA2NywgMywgMjE5LCAxOTEsIDI0OSwgNjcsIDMsIDIxOSwgNTgsIDI0OSwgNjcsIDMsIDIxOCwgODMsIDI0OSwgNjcsIAorICAgIDMsIDIxNywgMTA1LCAyNDksIDY3LCAzLCAyMTcsIDIyLCAyNDksIDY3LCAzLCAyMTYsIDExNywgMjQ5LCA2NywgMywgMTExLCAKKyAgICAyNDksIDY3LCAzLCAyMTUsIDExOCwgMjQ5LCA2NywgMywgMjEyLCA2NSwgMjQ5LCA2NywgMywgMjEyLCAyMiwgMjQ5LCA2NywgCisgICAgMywgMjExLCAyNTAsIDI0OSwgNjcsIDMsIDIxMSwgMjI3LCAyNDksIDY3LCAzLCAyMTEsIDE2NSwgMjQ5LCA2NywgMywgMjExLCAKKyAgICAxNjIsIDI0OSwgNjcsIDMsIDIxMCwgMTE2LCAyNDksIDY3LCAzLCAyMTAsIDIzLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI1NCwgCisgICAgMTY4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI1MiwgMjUsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjQyLCAyMDEsIDIzNiwgMSwgCisgICAgMjU0LCAyNywgMSwgMjQ4LCAxODgsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjQxLCAyMzgsIDIzNiwgMSwgMjU0LCAyNywgMSwgCisgICAgMjEyLCAzMCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTAsIDk3LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MSwgMTk1LCAyMzYsIAorICAgIDEsIDI1NCwgMjcsIDEsIDIxNiwgMjI2LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIxMCwgMjMyLCAyMzYsIDEsIDI1NCwgMjcsIAorICAgIDEsIDIzNCwgMjI1LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIzMywgOTMsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjMxLCA2NSwgCisgICAgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjcsIDE5NCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjEsIDI0OSwgMjM2LCAxLCAyNTQsIAorICAgIDI3LCAxLCAyNTMsIDE2MiwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjUsIDIyMSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjIsIAorICAgIDI0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyNCwgMzQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIzLCA2NywgMjM2LCAxLCAKKyAgICAyNTQsIDI3LCAxLCAyMjAsIDIwLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIxNywgMzYsIDIzNiwgMSwgMjU0LCAyNywgMjIxLCAKKyAgICAxNzMsIDUwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEwNSwgMjM2LCAxLCAyNTQsIAorICAgIDI3LCA1NCwgMTU4LCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAyMTYsIDI0NywgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE1LCA3MywgCisgICAgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTIzLCAyMTYsIDE0NywgCisgICAgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE2LCAyNDgsIDIxNiwgMTQ3LCAyMjUsIDExOSwgMSwgMjU0LCAxNjUsIDIyNSwgMTE5LCAKKyAgICAxLCAyNTIsIDI4LCAyMjUsIDExOSwgMSwgMjQzLCAxMDksIDIyNSwgMTE5LCAxLCAyNDgsIDU2LCAyMjUsIDExOSwgMSwgCisgICAgMjQxLCAyMzgsIDIyNSwgMTE5LCAxLCAyMTIsIDM3LCAyMjUsIDExOSwgMSwgMjEwLCAxMTAsIDIyNSwgMTE5LCAxLCAyNDEsIAorICAgIDE5NywgMjI1LCAxMTksIDEsIDIxNiwgMjMwLCAyMjUsIDExOSwgMSwgMjEwLCAyMzMsIDIyNSwgMTE5LCAxLCAyMzQsIDI1MCwgCisgICAgMjI1LCAxMTksIDEsIDIzMywgOTksIDIyNSwgMTE5LCAxLCAyMzEsIDY1LCAyMjUsIDExOSwgMSwgMjI3LCAxOTQsIDIyNSwgCisgICAgMTE5LCAxLCAyMjAsIDE0NCwgMjI1LCAxMTksIDEsIDI1NCwgMTk2LCAyMjUsIDExOSwgMSwgMjI1LCAyMjEsIDIyNSwgMTE5LCAKKyAgICAxLCAyMjIsIDI1LCAyMjUsIDExOSwgMSwgMjI0LCAzOSwgMjI1LCAxMTksIDEsIDIyMiwgMTg5LCAyMjUsIDExOSwgMSwgCisgICAgMjIwLCAyMCwgMjI1LCAxMTksIDEsIDIxNywgNDEsIDIyNSwgMTE5LCA1NCwgMTEwLCAyMjUsIDExOSwgNTQsIDIxNiwgMjQ3LCAKKyAgICAyMjUsIDExOSwgNTQsIDIxNSwgNzMsIDIyNSwgMTE5LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjI1LCAxMTksIDU0LCAxMDUsIAorICAgIDIyNSwgMTE5LCA1NCwgMTU4LCAyMjUsIDExOSwgMjExLCAyMDksIDIyMCwgMTM3LCAyMzIsIDU5LCAxLCA2MSwgMjMyLCA1OSwgCisgICAgMSwgMjUzLCAxNTgsIDIzMiwgNTksIDEsIDI0MywgMjAyLCAyMzIsIDU5LCAxLCAyNDksIDYwLCAyMzIsIDU5LCAxLCA3NSwgCisgICAgMjMyLCA1OSwgMSwgMjE0LCAxMDUsIDIzMiwgNTksIDEsIDczLCAyMzIsIDU5LCAxLCAyMTEsIDExNywgMjMyLCA1OSwgMSwgCisgICAgMjM1LCAyMywgMjMyLCA1OSwgMSwgMTU2LCAyMzIsIDU5LCAxLCAxOTMsIDIzMiwgNTksIDEsIDIzMCwgMjUsIDIzMiwgNTksIAorICAgIDEsIDc2LCAyMzIsIDU5LCAxLCAxNTMsIDIzMiwgNTksIDEsIDIxOCwgMjI2LCAyMzIsIDU5LCAxLCAyMTcsIDE1MiwgMjMyLCAKKyAgICA1OSwgMSwgNzAsIDIzMiwgNTksIDEsIDI0NSwgNiwgMjMyLCA1OSwgMSwgMjI0LCA5NiwgMjMyLCA1OSwgMSwgMjIyLCA5MSwgCisgICAgMjMyLCA1OSwgMSwgMjE1LCAxNTksIDIzMiwgNTksIDEsIDI1NCwgMTIzLCAyMzIsIDU5LCAxLCAyNDUsIDE1MCwgMjMyLCAKKyAgICA1OSwgMSwgMjMyLCA2MiwgMjMyLCA1OSwgMSwgMjI4LCAxMTEsIDIzMiwgNTksIDEsIDI1MSwgNjYsIDIzMiwgNTksIDIxNSwgCisgICAgMjIyLCA3OCwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDYxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgNzUsIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCA3MywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDc2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTkxLCAKKyAgICAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjEyLCA2NSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDI1MiwgMTkxLCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgMjUyLCAxOTAsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxOTAsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAKKyAgICAxODQsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxOTcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjksIDIyOCwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDIyOSwgMTA3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI5LCAxMDYsIDIzMSwgNDgsIDI0MSwgMTc0LCAKKyAgICAxLCAyMDUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjMsIDE4NywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIzMywgMTM1LCAKKyAgICAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjM0LCAxMzIsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNDEsIDE4OSwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDIwNiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyMiwgMzMsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAKKyAgICAyMjEsIDE4MSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE3NiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyNCwgODgsIDIzMSwgCisgICAgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDEwNSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxNywgMTA0LCAyMzEsIDQ4LCAyNDEsIAorICAgIDE3NCwgMSwgMjE3LCAyMiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxNywgMjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAKKyAgICAxMTEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNDgsIDIyMSwgMjMxLCA0OCwgMjQxLCAxNzQsIDE2LCAyMTMsIDE3MCwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDE2LCAyMTMsIDE2OSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNjEsIDIzMSwgNDgsIDI0OSwgCisgICAgOTQsIDEsIDc1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCA3MywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNzYsIDIzMSwgNDgsIAorICAgIDI0OSwgOTQsIDEsIDE5MSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjEyLCA2NSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjUyLCAKKyAgICAxOTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE5MCwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTg0LCAyMzEsIDQ4LCAyNDksIAorICAgIDk0LCAxLCAxOTcsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIyOSwgMTA3LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMDUsIDIzMSwgCisgICAgNDgsIDI0OSwgOTQsIDEsIDIzMywgMTM1LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMzQsIDEzMiwgMjMxLCA0OCwgMjQ5LCAKKyAgICA5NCwgMSwgMjQxLCAxODksIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIwNiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjU0LCAyMywgCisgICAgMjA2LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMjEsIDE4MSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTc2LCAyMzEsIDQ4LCAKKyAgICAyNDksIDk0LCAxLCAyMjQsIDg4LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMTcsIDEwNSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgCisgICAgMjE3LCAyMiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMTExLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyNDgsIDIyMSwgMjMxLCAKKyAgICA0OCwgMjQ5LCA5NCwgMjMyLCAxNDUsIDIyMiwgMjE3LCAyMzEsIDQ4LCAyNDksIDk0LCAyMzIsIDE0NSwgMjM2LCA2LCAyMzQsIAorICAgIDEyMCwgMSwgNjEsIDIzNCwgMTIwLCAyNSwgNSwgNzMsIDIzNCwgMTIwLCAyNSwgNSwgNzAsIDIzNCwgMTIwLCAyNSwgNSwgCisgICAgMTQ5LCAxNTMsIDIzNCwgMTIwLCAyNSwgNSwgNzUsIDIzNCwgMTIwLCAyNSwgNSwgNzYsIDIzNCwgMTIwLCAyNSwgMjMzLCAKKyAgICAyMywgNzgsIDIzNCwgMTIwLCA1LCA1MiwgMjIyLCAyMzQsIDUxLCAyMzQsIDEyMCwgNSwgMjU0LCA3NSwgMjM0LCAxMjAsIDUsIAorICAgIDIxMywgMTQ3LCAyMzQsIDEyMCwgMSwgMTc2LCAyMzQsIDEyMCwgMSwgMjM0LCAxMzIsIDIzNCwgMTIwLCAxLCAyNDMsIDEzNSwgCisgICAgMjM0LCAxMjAsIDEsIDI0MiwgMjQ5LCAyMzQsIDEyMCwgMSwgMjUxLCAzMywgMjM0LCAxMjAsIDEsIDI1MCwgMTU3LCAyMzQsIAorICAgIDEyMCwgMSwgMjM1LCAxNDEsIDIzNCwgMTIwLCAxLCAyMjcsIDE2NSwgMjM0LCAxMjAsIDEsIDIxNSwgMTU2LCAyMzQsIDEyMCwgCisgICAgMSwgMjE1LCAxNDQsIDIzNCwgMTIwLCAxLCAyNDgsIDEzNSwgMjM0LCAxMjAsIDEsIDI0OCwgMTE5LCAyMzQsIDEyMCwgMSwgCisgICAgMjI4LCAxMTAsIDIzNCwgMTIwLCAxLCAyMTcsIDEwNSwgMjM0LCAxMjAsIDEsIDIxNiwgMjA4LCAyMzQsIDEyMCwgMSwgMjQ4LCAKKyAgICAyMjEsIDIzNCwgMTIwLCAxLCAyNDgsIDI1LCAyMzQsIDEyMCwgMSwgMTk3LCAyMzQsIDEyMCwgMSwgMTkwLCAyMzQsIDEyMCwgCisgICAgMSwgMjI1LCAxNDcsIDIzNCwgMTIwLCAxLCAyNTIsIDE5MSwgMjM0LCAxMjAsIDEsIDI1MiwgMTgsIDIzNCwgMTIwLCAxLCAKKyAgICAxODQsIDIzNCwgMTIwLCAxLCAxOTEsIDIzNCwgMTIwLCAxLCAyMDUsIDIzNCwgMTIwLCAxLCAyMzMsIDEzNSwgMjM0LCAxMjAsIAorICAgIDEsIDIxNCwgMjcsIDIzNCwgMTIwLCAxLCAyMjAsIDEwMiwgMjM0LCAxMjAsIDEsIDIxOCwgMjIzLCAyMzQsIDEyMCwgMSwgCisgICAgMjA2LCAyMzQsIDEyMCwgMSwgMjEwLCAxMTYsIDIzNCwgMTIwLCAxLCAxNjIsIDIzNCwgMTIwLCAxLCAyMzQsIDQ2LCAyMzQsIAorICAgIDEyMCwgMSwgMjE1LCAxMjQsIDIzNCwgMTIwLCA1LCAyNTIsIDE0MSwgNDgsIDIzNCwgMTIwLCA1LCAyNTAsIDIyMSwgMjM0LCAKKyAgICAxMjAsIDUsIDU5LCA1MSwgMjM0LCAxMjAsIDIxMywgMTUyLCAyMzQsIDEyMCwgMjEsIDExMCwgMjM0LCAxMjAsIDIxLCAxMDUsIAorICAgIDIzNCwgMTIwLCAyMSwgMTU4LCAyMzQsIDEyMCwgMjEsIDE2MSwgMjM0LCAxMjAsIDU0LCAyMTYsIDI0NywgMjM0LCAxMjAsIAorICAgIDU0LCAyMTUsIDczLCAyMzQsIDEyMCwgNTQsIDEyMywgMjQwLCAyMTAsIDIzNCwgMTIwLCA1NCwgMTIzLCAyMTYsIDE0NywgCisgICAgMjM0LCAxMjAsIDIyNCwgMTQxLCAyNDcsIDEyMCwgMjM0LCAxMjAsIDIyNCwgMTQxLCA0LCAyNTAsIDM1LCAyMzQsIDEyMCwgCisgICAgMjI0LCAxNDEsIDI1MCwgMzUsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ5LCAxMzcsIDEzMCwgMjM0LCAxMjAsIDIyNCwgMTQxLCAKKyAgICAyMzEsIDE4MCwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyMzIsIDExNSwgMjM0LCAxMjAsIDIyNCwgMTQxLCAyNDgsIDE3OCwgCisgICAgMjM0LCAxMjAsIDIyNCwgMTQxLCA1MiwgMjQ4LCAxNzgsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjMyLCAyMDcsIDU1LCAyMTksIAorICAgIDI4LCAyNTQsIDM4LCAxLCAyNDEsIDIzOCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzMywgOTMsIDU1LCAyMTksIDI4LCAKKyAgICAyNTQsIDM4LCAxLCAyNDEsIDE5NSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzMSwgNjUsIDU1LCAyMTksIDI4LCAyNTQsIAorICAgIDM4LCAxLCAyMjQsIDM0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjEyLCAzMCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIAorICAgIDEsIDIyMCwgMjAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjMsIDY3LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgCisgICAgMjUyLCAyNSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxNywgMzYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjEsIAorICAgIDIyNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIzNCwgMjI1LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjI3LCAKKyAgICAxOTQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzQsIDExNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyMiwgMjQsIAorICAgIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjEsIDI0OSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0NCwgMTU0LCA1NSwgCisgICAgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjU0LCAxNzAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNTMsIDE2MSwgNTUsIAorICAgIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0OCwgMjIsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDIsIDIwMSwgNTUsIDIxOSwgCisgICAgMjgsIDI1NCwgMzgsIDEsIDI0OCwgMTg4LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQyLCAyMzgsIDU1LCAyMTksIDI4LCAKKyAgICAyNTQsIDM4LCAxLCAyMTYsIDIyNiwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMCwgOTYsIDU1LCAyMTksIDI4LCAyNTQsIAorICAgIDM4LCAxLCAyNDgsIDE5LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjEwLCAyMzIsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAKKyAgICAxLCAyMTYsIDE5NywgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxNiwgMTc4LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgNTQsIAorICAgIDExMCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDU0LCAyNDQsIDExNCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEzMiwgMjM1LCAKKyAgICAyMzgsIDI1MywgMTcyLCAxLCA2MSwgMjUzLCAxNzIsIDEsIDI1NSwgNzMsIDI1MywgMTcyLCAxLCAyNTQsIDczLCAyNTMsIAorICAgIDE3MiwgMSwgMjU1LCAzMiwgMjUzLCAxNzIsIDEsIDI1NCwgMTIzLCAyNTMsIDE3MiwgMSwgMjU1LCAzMywgMjUzLCAxNzIsIAorICAgIDEsIDI1NCwgMjQzLCAyNTMsIDE3MiwgMSwgMjU0LCAyMzksIDI1MywgMTcyLCAxLCA3NSwgMjUzLCAxNzIsIDEsIDI0NSwgCisgICAgMjA5LCAyNTMsIDE3MiwgMSwgNzYsIDI1MywgMTcyLCAxLCAyMjYsIDE4MywgMjUzLCAxNzIsIDEsIDczLCAyNTMsIDE3MiwgCisgICAgMSwgMjM2LCAzMywgMjUzLCAxNzIsIDEsIDcwLCAyNTMsIDE3MiwgMSwgMjE0LCAxMTgsIDI1MywgMTcyLCAxLCAyMzQsIAorICAgIDE4MiwgMjUzLCAxNzIsIDEsIDIxMSwgMTYyLCAyNTMsIDE3MiwgMSwgMjExLCAxMjgsIDI1MywgMTcyLCAxLCAyMTEsIDEzNywgCisgICAgMjUzLCAxNzIsIDEsIDI0MywgNjIsIDI1MywgMTcyLCAxLCAyNDMsIDI0LCAyNTMsIDE3MiwgMSwgMjQyLCAyMzYsIDI1MywgCisgICAgMTcyLCAxLCAyNTAsIDE5MCwgMjUzLCAxNzIsIDEsIDIzNSwgMTI2LCAyNTMsIDE3MiwgMSwgMjE3LCAyMiwgMjUzLCAxNzIsIAorICAgIDEsIDIxNiwgMTk1LCAyNTMsIDE3MiwgMSwgMjQ4LCA5MCwgMjUzLCAxNzIsIDEsIDI0OCwgMTcsIDI1MywgMTcyLCAxLCAKKyAgICAyMTUsIDE1MSwgMjUzLCAxNzIsIDEsIDIyNSwgMjIxLCAyNTMsIDE3MiwgMSwgMjQ0LCAxNTQsIDI1MywgMTcyLCAxLCAyNTIsIAorICAgIDc1LCAyNTMsIDE3MiwgMSwgMjUyLCAxNCwgMjUzLCAxNzIsIDEsIDIyOSwgNjQsIDI1MywgMTcyLCAxLCAyMjgsIDIzOSwgCisgICAgMjUzLCAxNzIsIDEsIDIyOCwgMjQwLCAyNTMsIDE3MiwgMSwgMjI5LCAxMDcsIDI1MywgMTcyLCAxLCAyMjcsIDE1NiwgMjUzLCAKKyAgICAxNzIsIDEsIDIyOCwgMTA1LCAyNTMsIDE3MiwgMSwgMjMxLCA5MSwgMjUzLCAxNzIsIDEsIDI0MSwgMTE2LCAyNTMsIDE3MiwgCisgICAgMSwgMjEwLCAxNjYsIDI1MywgMTcyLCAxLCAyMTEsIDQ3LCAyNTMsIDE3MiwgMSwgMjEzLCAyNTUsIDI1MywgMTcyLCAxLCAKKyAgICAyMjMsIDEyOCwgMjUzLCAxNzIsIDEsIDIzMywgNTgsIDI1MywgMTcyLCAxLCAyMjEsIDE4MSwgMjUzLCAxNzIsIDEsIDIxMCwgCisgICAgOTQsIDI1MywgMTcyLCAxLCAyMjAsIDYzLCAyNTMsIDE3MiwgMSwgMjEwLCA3NCwgMjUzLCAxNzIsIDEsIDIxOSwgMTk4LCAKKyAgICAyNTMsIDE3MiwgMSwgMjE4LCAxOTMsIDI1MywgMTcyLCAxLCAyNDEsIDIzOCwgMjUzLCAxNzIsIDI1NSwgMjEsIDc4LCAyMTYsIAorICAgIDc5LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgNCwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAKKyAgICAxNDAsIDIzMywgODUsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCAyMzMsIDg1LCAxMjMsIDU5LCAxMTcsIAorICAgIDExMywgMTcwLCAyMjQsIDE0MCwgMjMzLCA4NSwgMTEzLCAyMjIsIDIzMiwgMTE3LCAxMjMsIDIyMiwgMjM0LCAyMjQsIDE0MCwgCisgICAgMjMzLCA4NSwgMTIzLCAyMjIsIDIzNCwgMTE3LCAxMTMsIDIyMiwgMjMyLCAyMjQsIDE0MCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAKKyAgICAxLCAyNTQsIDE2OCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNTIsIDI1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI0MiwgCisgICAgMjAxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI0OCwgMTg4LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI0MSwgMjM4LCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxMiwgMzAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjEwLCA5NywgMjM1LCAyMTgsIAorICAgIDIyNSwgMjU0LCAxLCAyNDEsIDE5NSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTYsIDIyNiwgMjM1LCAyMTgsIDIyNSwgCisgICAgMjU0LCAxLCAyMTAsIDIzMiwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMzQsIDIyNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAKKyAgICAyMzMsIDkzLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIzMSwgNjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjI3LCAxOTQsIAorICAgIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjIxLCAyNDksIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjUzLCAxNjIsIDIzNSwgCisgICAgMjE4LCAyMjUsIDI1NCwgMSwgMjI1LCAyMjEsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjIyLCAyNCwgMjM1LCAyMTgsIAorICAgIDIyNSwgMjU0LCAxLCAyMjQsIDM0LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMywgNjcsIDIzNSwgMjE4LCAyMjUsIDI1NCwgCisgICAgMSwgMjIwLCAyMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTcsIDM2LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMTAsIAorICAgIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDEwNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTU4LCAyMzUsIDIxOCwgMjI1LCAKKyAgICAyNTQsIDU0LCAxNjEsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDIxNiwgMjQ3LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAKKyAgICAyMTUsIDczLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAKKyAgICAxMjMsIDIxNiwgMTQ3LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjU0LCAxNjgsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNTIsIAorICAgIDI1LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQyLCAyMDEsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNDgsIDE4OCwgMjM1LCAKKyAgICAyMTgsIDIyNiwgNzIsIDEsIDI0MSwgMjM4LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjEyLCAyOSwgMjM1LCAyMTgsIDIyNiwgCisgICAgNzIsIDEsIDIxMCwgOTcsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyNDEsIDE5NSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIAorICAgIDIxNiwgMjI2LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjEwLCAyMzIsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzQsIDIyNSwgCisgICAgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIzMywgOTMsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzEsIDY0LCAyMzUsIDIxOCwgCisgICAgMjI2LCA3MiwgMSwgMjI3LCAxOTQsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjEsIDI0OSwgMjM1LCAyMTgsIDIyNiwgNzIsIAorICAgIDEsIDIyNSwgMjIxLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIyLCAyNCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMCwgCisgICAgMjAsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMTcsIDM2LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDExMCwgMjM1LCAyMTgsIAorICAgIDIyNiwgNzIsIDU0LCAxMDUsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTU4LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDE2MSwgCisgICAgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAyMTYsIDI0NywgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAyMTUsIDczLCAyMzUsIAorICAgIDIxOCwgMjI2LCA3MiwgNTQsIDEyMywgMjQwLCAyMTAsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMTIzLCAyMTYsIDE0NywgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDYxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCA2MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgCisgICAgMjU0LCAyNDMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA3MywgNTUsIDIwMSwgMSwgMjExLCAzNywgNzMsIDU1LCAyMDEsIDEsIAorICAgIDIxMSwgMzcsIDc1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNzYsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDIzNCwgCisgICAgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAyMzQsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTUsIDI1LCA1NSwgMjAxLCAxLCAKKyAgICAyMTEsIDM3LCAyNTUsIDI1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyNDIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMjQyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMTYsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjE2LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjM3LCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjU0LCAyNTUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjU1LCA1NSwgMjAxLCAxLCAyMjYsIAorICAgIDE0OSwgMjU0LCAyNDEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIAorICAgIDEyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAxNjcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMTY3LCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMjQsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjI0LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE0OSwgMjU0LCAyMzUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjM1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjI2LCAyMzMsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMjMzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAxNzgsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMTc4LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzQsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDUsIDE2MSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTU5LCA1NSwgMjAxLCAxLCAyMjYsIAorICAgIDE0OSwgMjU0LCAxMjMsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTQsIDIzMiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAKKyAgICAyMzIsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDEzMSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxMzEsIDU1LCAKKyAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDE0NywgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxNDcsIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTQ5LCAyNDUsIDExOCwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAxMTgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMTE1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMzgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjMxLCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMDgsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE3NSwgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI0MCwgMTEzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAyMTUsIDU1LCAyMDEsIDEsIDIxMSwgCisgICAgMzcsIDI0NSwgMjE1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCA0NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjU0LCAKKyAgICA0NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIzNSwgMTgxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMzUsIDE4MSwgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTU5LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDE1OSwgNTUsIDIwMSwgMSwgCisgICAgMjI2LCAxNDksIDI1NCwgNDEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgNDEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAKKyAgICAyNTQsIDIzMCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMjM3LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMjgsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDIzMSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjUzLCAyMzEsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDUsIDc1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNDUsIDc1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjUzLCAyMDYsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMjA2LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMjUsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgMjI1LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNDAsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNTIsIDEyNSwgMjIyLCAxMjcsIDIxLCAxMTAsIDIyMiwgMTI3LCAyMSwgMTA1LCAyMjIsIDEyNywgCisgICAgMjEsIDE1OCwgMjIyLCAxMjcsIDIxLCAxNjEsIDIyMiwgMTI3LCAyMSwgMTg5LCAyMjIsIDEyNywgMjEsIDE5NCwgMjIyLCAKKyAgICAxMjcsIDIxLCAxOTgsIDIyMiwgMTI3LCAyMSwgMTk1LCAyMjIsIDEyNywgMjEsIDIwMCwgMjIyLCAxMjcsIDU0LCAyMTYsIAorICAgIDI0NywgMjIyLCAxMjcsIDU0LCAyMTUsIDczLCAyMjIsIDEyNywgNTQsIDIxNiwgMTYyLCAyMjIsIDEyNywgNTQsIDI0NCwgCisgICAgMTUsIDIyMiwgMTI3LCA1NCwgMjQ0LCAxMTQsIDIyMiwgMTI3LCA1NCwgMjE5LCAxMTEsIDIyMiwgMTI3LCA1NCwgMjIwLCAKKyAgICAxMTYsIDIyMiwgMTI3LCA1NCwgMjQ1LCAxODQsIDIyMiwgMTI3LCA1NCwgMjI4LCAxOTUsIDIyMiwgMTI3LCA1NCwgMTIzLCAKKyAgICAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAxMTMsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDEzNCwgMjQwLCAyMTAsIDIyMiwgCisgICAgMTI3LCA1NCwgMjQ0LCAxMSwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDIyMiwgMTI3LCAKKyAgICA1NCwgMjE5LCAxMjUsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDIyMCwgMTIyLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAKKyAgICAyNDUsIDE5MywgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMjI4LCAyMDAsIDI0MCwgMjEwLCAyMjIsIDEyNywgMjQ0LCAyLCAKKyAgICAxMjMsIDI0MiwgMjcsIDIyMiwgMTI3LCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjIyLCAxMjcsIDI0NCwgMiwgMTIzLCAyMTYsIAorICAgIDE2OCwgMjIyLCAxMjcsIDI0NCwgMiwgMTEzLCAyMTYsIDE2NiwgMTE4LCA1LCAyNTAsIDI1NSwgMTE4LCA1LCAyNTQsIDc1LCAKKyAgICAxMTgsIDUsIDIxMywgMTQ3LCAxMTgsIDUsIDIzNSwgMTAyLCAxMTgsIDUsIDIxNCwgMTYxLCAxMTgsIDEsIDYxLCAxMTgsIDEsIAorICAgIDI1NSwgNzMsIDExOCwgMSwgNzMsIDExOCwgMSwgMjM2LCAzMywgMTE4LCAxLCA3MCwgMTE4LCAxLCAyMTQsIDExOCwgMTE4LCAKKyAgICAxLCAxNDksIDE1MywgMTE4LCAxLCAxNDksIDIyMiwgMTgwLCAxMTgsIDEsIDE0OSwgMTU2LCAxMTgsIDEsIDE0OSwgMjMyLCAKKyAgICAxODUsIDExOCwgMSwgNzUsIDExOCwgMSwgMjU0LCAyMDEsIDExOCwgMSwgNzYsIDExOCwgMSwgMjUzLCAxOTIsIDExOCwgMSwgCisgICAgMTc2LCAxMTgsIDEsIDIzNCwgMTMyLCAxMTgsIDEsIDI0MywgMTM1LCAxMTgsIDEsIDI0MiwgMjQ5LCAxMTgsIDEsIDIyOSwgCisgICAgNzcsIDExOCwgMSwgMjUxLCAzMywgMTE4LCAxLCAyNTAsIDE1NywgMTE4LCAxLCAyMzUsIDE0MSwgMTE4LCAxLCAyMzUsIAorICAgIDExNCwgMTE4LCAxLCAyMjcsIDE2NSwgMTE4LCAxLCAyMTUsIDE1NiwgMTE4LCAxLCAyMTUsIDE0NCwgMTE4LCAxLCAyNDgsIAorICAgIDEzNSwgMTE4LCAxLCAyNDgsIDExOSwgMTE4LCAxLCAyMjgsIDExMCwgMTE4LCAxLCAyMTcsIDEwNSwgMTE4LCAxLCAyMTYsIAorICAgIDIwOCwgMTE4LCAxLCAyNDgsIDIyMSwgMTE4LCAxLCAyNDgsIDI1LCAxMTgsIDEsIDE5NywgMTE4LCAxLCAxOTAsIDExOCwgMSwgCisgICAgMjI1LCAxNDcsIDExOCwgMSwgMjUyLCAxOTEsIDExOCwgMSwgMjUyLCAxOCwgMTE4LCAxLCAxODQsIDExOCwgMSwgMTkxLCAKKyAgICAxMTgsIDEsIDIwNSwgMTE4LCAxLCAyMzMsIDEzNSwgMTE4LCAxLCAyMTQsIDI3LCAxMTgsIDEsIDIyMCwgMTAyLCAxMTgsIDEsIAorICAgIDIxOCwgMjIzLCAxMTgsIDEsIDIwNiwgMTE4LCAxLCAxNjIsIDExOCwgMSwgMjMyLCAxODQsIDExOCwgMSwgNTUsIDM2LCAKKyAgICAyMzIsIDE3NSwgMTE4LCAxLCA1NSwgMzYsIDIyMiwgMTc5LCAxMTgsIDEsIDU1LCAzNiwgMjI4LCA5MiwgMTE4LCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTE4LCAyNSwgNSwgMjUyLCAxNSwgMjU1LCA3MywgMTE4LCAyNSwgNSwgNzMsIDExOCwgMjUsIDUsIDIzNiwgCisgICAgMzMsIDExOCwgMjUsIDUsIDcwLCAxMTgsIDI1LCA1LCAyMTQsIDExOCwgMTE4LCAyNSwgNSwgMTQ5LCAxNTMsIDExOCwgMjUsIAorICAgIDUsIDE0OSwgMjIyLCAxODAsIDExOCwgMjUsIDUsIDE0OSwgMTU2LCAxMTgsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxMTgsIAorICAgIDI1LCA1LCA3NSwgMTE4LCAyNSwgNSwgMjU0LCAyMDEsIDExOCwgMjUsIDUsIDc2LCAxMTgsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMTE4LCAyMTMsIDE1MiwgMTE4LCAyNDgsIDE3OCwgMTE4LCA1MiwgMjQ4LCAxNzgsIDExOCwgMjI0LCAxNDEsIDI0NywgMTIwLCAKKyAgICAxMTgsIDIyNCwgMTQxLCA1MiwgMjQ3LCAxMjAsIDExOCwgMjI0LCAxNDEsIDIzMiwgMjEzLCAxMTgsIDIyNCwgMTQxLCAyNDksIAorICAgIDEzNywgMTMwLCAxMTgsIDIyNCwgMTQxLCAyMzIsIDExNSwgMTE4LCA1NCwgMTEwLCAxMTgsIDU0LCAxMDUsIDExOCwgNTQsIAorICAgIDE1OCwgMTE4LCA1NCwgMTYxLCAxMTgsIDU0LCAxODksIDExOCwgNTQsIDE5NCwgMTE4LCA1NCwgMTk4LCAxMTgsIDU0LCAKKyAgICAxOTUsIDExOCwgNTQsIDIwMCwgMTE4LCA1NCwgMjE2LCAyNDcsIDExOCwgNTQsIDIxNSwgNzMsIDExOCwgNTQsIDIxNiwgCisgICAgMTYyLCAxMTgsIDU0LCAyNDQsIDE1LCAxMTgsIDU0LCAyNDQsIDExNCwgMTE4LCA1NCwgMjE5LCAxMTEsIDExOCwgNTQsIAorICAgIDIyMCwgMTE2LCAxMTgsIDU0LCAyNDUsIDE4NCwgMTE4LCA1NCwgMjI4LCAxOTUsIDExOCwgNTQsIDEyMywgMjQwLCAyMTAsIAorICAgIDExOCwgNTQsIDEyMywgMjE2LCAxNDcsIDExOCwgMjEsIDIxMCwgODYsIDExOCwgMjEsIDExMCwgMTE4LCAyMSwgMTA1LCAKKyAgICAxMTgsIDIxLCAxNTgsIDExOCwgMjEsIDE2MSwgMTE4LCAyMSwgMTg5LCAxMTgsIDIxLCAxOTQsIDExOCwgMjEsIDE5OCwgCisgICAgMTE4LCAyMSwgMTk1LCAxMTgsIDIxLCAyMDAsIDIzNCwgMjQ0LCA1LCAyNTAsIDI1NSwgMjM0LCAyNDQsIDUsIDI1NCwgNzUsIAorICAgIDIzNCwgMjQ0LCA1LCAyMTMsIDE0NywgMjM0LCAyNDQsIDEsIDYxLCAyMzQsIDI0NCwgMSwgMjU1LCA3MywgMjM0LCAyNDQsIAorICAgIDEsIDczLCAyMzQsIDI0NCwgMSwgMjM2LCAzMywgMjM0LCAyNDQsIDEsIDcwLCAyMzQsIDI0NCwgMSwgMjE0LCAxMTgsIDIzNCwgCisgICAgMjQ0LCAxLCA3NSwgMjM0LCAyNDQsIDEsIDI1NCwgMjAxLCAyMzQsIDI0NCwgMSwgNzYsIDIzNCwgMjQ0LCAxLCAyNTMsIAorICAgIDE5MiwgMjM0LCAyNDQsIDEsIDE3NiwgMjM0LCAyNDQsIDEsIDIzNCwgMTMyLCAyMzQsIDI0NCwgMSwgMjQzLCAxMzUsIDIzNCwgCisgICAgMjQ0LCAxLCAyNDIsIDI0OSwgMjM0LCAyNDQsIDEsIDIyOSwgNzcsIDIzNCwgMjQ0LCAxLCAyNTEsIDMzLCAyMzQsIDI0NCwgCisgICAgMSwgMjUwLCAxNTcsIDIzNCwgMjQ0LCAxLCAyMzUsIDE0MSwgMjM0LCAyNDQsIDEsIDIzNSwgMTE0LCAyMzQsIDI0NCwgMSwgCisgICAgMjI3LCAxNjUsIDIzNCwgMjQ0LCAxLCAyMTUsIDE1NiwgMjM0LCAyNDQsIDEsIDIxNSwgMTQ0LCAyMzQsIDI0NCwgMSwgMjQ4LCAKKyAgICAxMzUsIDIzNCwgMjQ0LCAxLCAyNDgsIDEyNCwgMjM0LCAyNDQsIDEsIDI0OCwgMTE5LCAyMzQsIDI0NCwgMSwgMjIzLCAzOSwgCisgICAgMjM0LCAyNDQsIDEsIDIyOCwgMTEwLCAyMzQsIDI0NCwgMSwgMjE3LCAxMDUsIDIzNCwgMjQ0LCAxLCAyMTYsIDIwOCwgMjM0LCAKKyAgICAyNDQsIDEsIDI0OCwgMjIxLCAyMzQsIDI0NCwgMSwgMjQ4LCAyNSwgMjM0LCAyNDQsIDEsIDE5NywgMjM0LCAyNDQsIDEsIAorICAgIDE5MCwgMjM0LCAyNDQsIDEsIDIyNSwgMTQ3LCAyMzQsIDI0NCwgMSwgMjUyLCAxOTEsIDIzNCwgMjQ0LCAxLCAyNTIsIDE4LCAKKyAgICAyMzQsIDI0NCwgMSwgMTg0LCAyMzQsIDI0NCwgMSwgMTkxLCAyMzQsIDI0NCwgMSwgMjA1LCAyMzQsIDI0NCwgMSwgMjMzLCAKKyAgICAxMzUsIDIzNCwgMjQ0LCAxLCAyMTQsIDI3LCAyMzQsIDI0NCwgMSwgMjIwLCAxMDIsIDIzNCwgMjQ0LCAxLCAyMTgsIDIyMywgCisgICAgMjM0LCAyNDQsIDEsIDIwNiwgMjM0LCAyNDQsIDEsIDE2MiwgMjM0LCAyNDQsIDI1LCA1LCAyNTUsIDczLCAyMzQsIDI0NCwgCisgICAgMjUsIDUsIDczLCAyMzQsIDI0NCwgMjUsIDUsIDIzNiwgMzMsIDIzNCwgMjQ0LCAyNSwgNSwgNzAsIDIzNCwgMjQ0LCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDIzNCwgMjQ0LCAyNSwgNSwgNzUsIDIzNCwgMjQ0LCAyNSwgNSwgMjU0LCAyMDEsIDIzNCwgMjQ0LCAKKyAgICAyNSwgNSwgNzYsIDIzNCwgMjQ0LCAyNSwgNSwgMjUzLCAxOTIsIDIzNCwgMjQ0LCA1LCAyMTMsIDE1MiwgMjM0LCAyNDQsIDUsIAorICAgIDIyNywgMjA1LCAyMzQsIDI0NCwgMjU1LCAyMSwgNTAsIDIzNCwgMjQ0LCAyNDUsIDEyMSwgNTAsIDIzNCwgMjQ0LCA1NCwgCisgICAgNTAsIDIzNCwgMjQ0LCAyMjEsIDE3MywgNzgsIDIzNCwgMjQ0LCA1MiwgMjIxLCAxNzMsIDc4LCAyMzQsIDI0NCwgMjQ4LCAKKyAgICAxNzgsIDIzNCwgMjQ0LCA1MiwgMjQ4LCAxNzgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyMiwgMTgsIDIxOSwgMzYsIDIxOSwgCisgICAgNDQsIDEsIDIxNywgODAsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI1MiwgMTY4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNTEsIAorICAgIDIzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDgsIDIwMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQzLCAxMjAsIDIxOSwgCisgICAgMzYsIDIxOSwgNDQsIDEsIDIzMSwgMjEwLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjksIDc0LCAyMTksIDM2LCAyMTksIDQ0LCAKKyAgICAxLCAyMzMsIDExMiwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI5LCAyMTMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIxNCwgMjQsIAorICAgIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyNiwgNzMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIxMSwgODQsIDIxOSwgMzYsIDIxOSwgCisgICAgNDQsIDEsIDIyMywgMTY4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNDIsIDM3LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzQsIAorICAgIDI0OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjM1LCAxMzYsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyNywgMTYyLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAxLCAyNTQsIDIwOSwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ1LCAyMDcsIDIxOSwgMzYsIDIxOSwgCisgICAgNDQsIDEsIDIzNiwgMzQsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIxNCwgMjA4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjYsIAorICAgIDIyMiwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ1LCAxOTcsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzMSwgMjIzLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAyMSwgMjEwLCA4NiwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDExMCwgMjE5LCAzNiwgMjE5LCA0NCwgCisgICAgMjEsIDEwNSwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE1OCwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE2MSwgMjE5LCAzNiwgCisgICAgMjE5LCA0NCwgMjEsIDE4OSwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE5NCwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE5OCwgCisgICAgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDE5NSwgMjE5LCAzNiwgMjE5LCA0NCwgMjEsIDIwMCwgMjUwLCAxNTEsIDUsIDI1MCwgCisgICAgMjU1LCAyNTAsIDE1MSwgNSwgMjU0LCA3NSwgMjUwLCAxNTEsIDUsIDIxMywgMTQ3LCAyNTAsIDE1MSwgMSwgMjU1LCA3MywgCisgICAgMjUwLCAxNTEsIDEsIDczLCAyNTAsIDE1MSwgMSwgNzAsIDI1MCwgMTUxLCAxLCA3NSwgMjUwLCAxNTEsIDEsIDIzNSwgMTAsIAorICAgIDI1MCwgMTUxLCAxLCAyMzQsIDEzMSwgMjUwLCAxNTEsIDEsIDI0MywgMTMyLCAyNTAsIDE1MSwgMSwgMjQyLCAyNDgsIDI1MCwgCisgICAgMTUxLCAxLCAyMjksIDc2LCAyNTAsIDE1MSwgMSwgMjUxLCAzMiwgMjUwLCAxNTEsIDEsIDI1MCwgMTU2LCAyNTAsIDE1MSwgCisgICAgMSwgMjM1LCAxNDAsIDI1MCwgMTUxLCAxLCAyMzUsIDExMywgMjUwLCAxNTEsIDEsIDIyNywgMTY0LCAyNTAsIDE1MSwgMSwgCisgICAgMjE1LCAxNTUsIDI1MCwgMTUxLCAxLCAyMTUsIDE0MywgMjUwLCAxNTEsIDEsIDI0OCwgMTM0LCAyNTAsIDE1MSwgMSwgMjQ4LCAKKyAgICAxMTgsIDI1MCwgMTUxLCAxLCAyMjgsIDEwOSwgMjUwLCAxNTEsIDEsIDIxNywgMTAxLCAyNTAsIDE1MSwgMSwgMjE2LCAyMDcsIAorICAgIDI1MCwgMTUxLCAxLCAyNDgsIDIyMCwgMjUwLCAxNTEsIDEsIDI0OCwgMjQsIDI1MCwgMTUxLCAxLCAyMjksIDIyNSwgMjUwLCAKKyAgICAxNTEsIDEsIDIyNiwgODksIDI1MCwgMTUxLCAxLCAyMjUsIDE0NiwgMjUwLCAxNTEsIDEsIDI1MiwgMTg5LCAyNTAsIDE1MSwgCisgICAgMSwgMjUyLCAxNywgMjUwLCAxNTEsIDEsIDIzMSwgMjM3LCAyNTAsIDE1MSwgMSwgMjEwLCAxNjcsIDI1MCwgMTUxLCAxLCAKKyAgICAyMTEsIDEwMywgMjUwLCAxNTEsIDEsIDIyMywgMTg0LCAyNTAsIDE1MSwgMSwgMjMzLCAxMzQsIDI1MCwgMTUxLCAxLCAyMTIsIAorICAgIDY0LCAyNTAsIDE1MSwgMSwgMjIyLCAzMSwgMjUwLCAxNTEsIDEsIDI0MiwgNDYsIDI1MCwgMTUxLCAyNSwgNSwgNjEsIDI1MCwgCisgICAgMTUxLCAyNSwgNSwgNzMsIDI1MCwgMTUxLCAyNSwgNSwgMjM2LCAzMywgMjUwLCAxNTEsIDI1LCA1LCA3MCwgMjUwLCAxNTEsIAorICAgIDI1LCA1LCAyMTQsIDExOCwgMjUwLCAxNTEsIDI1LCA1LCA3NSwgMjUwLCAxNTEsIDI1LCA1LCAyNTQsIDIwMSwgMjUwLCAKKyAgICAxNTEsIDI1LCA1LCA3NiwgMjUwLCAxNTEsIDI1LCA1LCAyNTMsIDE5MiwgMjUwLCAxNTEsIDI1LCA1LCAyMjYsIDIxOSwgCisgICAgMjUwLCAxNTEsIDE0NCwgNzgsIDI1MCwgMTUxLCAyNTMsIDE5MywgNzgsIDI1MCwgMTUxLCAyMTMsIDE1MiwgMjUwLCAxNTEsIAorICAgIDIzMSwgMjM1LCAyNTAsIDE1MSwgMjEsIDIxMCwgODYsIDI1MCwgMTUxLCAyMSwgMTEwLCAyNTAsIDE1MSwgMjEsIDEwNSwgCisgICAgMjUwLCAxNTEsIDIxLCAxNTgsIDI1MCwgMTUxLCAyMSwgMTYxLCAyNTAsIDE1MSwgMjEsIDE4OSwgMjUwLCAxNTEsIDIxLCAKKyAgICAxOTQsIDI1MCwgMTUxLCAyMSwgMTk4LCAyNTAsIDE1MSwgMjEsIDE5NSwgMjUwLCAxNTEsIDIxLCAyMDAsIDI1MCwgMTUxLCAKKyAgICAyMjEsIDE3MywgNzgsIDI1MCwgMTUxLCAyNDgsIDE3OCwgMjUwLCAxNTEsIDUyLCAyNDgsIDE3OCwgMjUwLCAxNTEsIDIyNCwgCisgICAgMTMsIDc4LCAxNzQsIDUsIDI1MCwgMjU1LCAxNzQsIDUsIDI1NCwgNzUsIDE3NCwgNSwgMjEzLCAxNDcsIDE3NCwgMSwgNjEsIAorICAgIDE3NCwgMSwgMjU1LCA3MywgMTc0LCAxLCA3MywgMTc0LCAxLCAyMzYsIDMzLCAxNzQsIDEsIDcwLCAxNzQsIDEsIDIxNCwgCisgICAgMTE4LCAxNzQsIDEsIDE0OSwgMTUzLCAxNzQsIDEsIDE0OSwgMjIyLCAxODAsIDE3NCwgMSwgMTQ5LCAxNTYsIDE3NCwgMSwgCisgICAgMTQ5LCAyMzIsIDE4NSwgMTc0LCAxLCA3NSwgMTc0LCAxLCAyNTQsIDIwMSwgMTc0LCAxLCA3NiwgMTc0LCAxLCAyNTMsIAorICAgIDE5MiwgMTc0LCAxLCAxNzYsIDE3NCwgMSwgMjM0LCAxMzIsIDE3NCwgMSwgMjQzLCAxMzUsIDE3NCwgMSwgMjQyLCAyNDksIAorICAgIDE3NCwgMSwgMjI5LCA3NywgMTc0LCAxLCAyNTEsIDMzLCAxNzQsIDEsIDI1MCwgMTU3LCAxNzQsIDEsIDIzNSwgMTQxLCAKKyAgICAxNzQsIDEsIDIzNSwgMTE0LCAxNzQsIDEsIDIyNywgMTY1LCAxNzQsIDEsIDIxNSwgMTU2LCAxNzQsIDEsIDIxNSwgMTQ0LCAKKyAgICAxNzQsIDEsIDI0OCwgMTM1LCAxNzQsIDEsIDI0OCwgMTE5LCAxNzQsIDEsIDIyOCwgMTEwLCAxNzQsIDEsIDIxNywgMTA1LCAKKyAgICAxNzQsIDEsIDIxNiwgMjA4LCAxNzQsIDEsIDI0OCwgMjIxLCAxNzQsIDEsIDI0OCwgMjUsIDE3NCwgMSwgMTk3LCAxNzQsIDEsIAorICAgIDE5MCwgMTc0LCAxLCAyMjUsIDE0NywgMTc0LCAxLCAyNTIsIDE5MSwgMTc0LCAxLCAyNTIsIDE4LCAxNzQsIDEsIDE4NCwgCisgICAgMTc0LCAxLCAxOTEsIDE3NCwgMSwgMjA1LCAxNzQsIDEsIDIzMywgMTM1LCAxNzQsIDEsIDIzMiwgMTg0LCAxNzQsIDEsIAorICAgIDIxNCwgMjcsIDE3NCwgMSwgMjIwLCAxMDIsIDE3NCwgMSwgMjE4LCAyMjMsIDE3NCwgMSwgMjA2LCAxNzQsIDEsIDE2MiwgCisgICAgMTc0LCAyNSwgNSwgMjU1LCA3MywgMTc0LCAyNSwgNSwgNzMsIDE3NCwgMjUsIDUsIDIzNiwgMzMsIDE3NCwgMjUsIDUsIDcwLCAKKyAgICAxNzQsIDI1LCA1LCAyMTQsIDExOCwgMTc0LCAyNSwgNSwgMTQ5LCAxNTMsIDE3NCwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIAorICAgIDE3NCwgMjUsIDUsIDE0OSwgMTU2LCAxNzQsIDI1LCA1LCAxNDksIDIzMiwgMTg1LCAxNzQsIDI1LCA1LCA3NSwgMTc0LCAyNSwgCisgICAgNSwgMjU0LCAyMDEsIDE3NCwgMjUsIDUsIDc2LCAxNzQsIDI1LCA1LCAyNTMsIDE5MiwgMTc0LCA1LCAyMTMsIDE1MiwgMTc0LCAKKyAgICA1LCAyNTMsIDE3NSwgMTc0LCA1LCAyMzUsIDEwMiwgMTc0LCA1LCAyMTQsIDE2MSwgMTc0LCAyMjYsIDIwNCwgMTc0LCAyNDgsIAorICAgIDE3OCwgMTc0LCA1MiwgMjQ4LCAxNzgsIDE3NCwgMjU1LCAyMSwgNTAsIDE3NCwgMjIwLCAxMzcsIDE3NCwgMjEsIDIxMCwgCisgICAgODYsIDE3NCwgMjEsIDExMCwgMTc0LCAyMSwgMTA1LCAxNzQsIDIxLCAxNTgsIDE3NCwgMjEsIDE2MSwgMTc0LCAyMSwgMTg5LCAKKyAgICAxNzQsIDIxLCAxOTQsIDE3NCwgMjEsIDE5OCwgMTc0LCAyMSwgMTk1LCAxNzQsIDIxLCAyMDAsIDIxNywgNjksIDEsIDYxLCAKKyAgICAyMTcsIDY5LCAxLCAyNTUsIDczLCAyMTcsIDY5LCAxLCA3MywgMjE3LCA2OSwgMSwgMjM2LCAzMywgMjE3LCA2OSwgMSwgNzAsIAorICAgIDIxNywgNjksIDEsIDIxNCwgMTE4LCAyMTcsIDY5LCAxLCA3NSwgMjE3LCA2OSwgMSwgMjU0LCAyMDEsIDIxNywgNjksIDEsIAorICAgIDc2LCAyMTcsIDY5LCAxLCAyNTMsIDE5MiwgMjE3LCA2OSwgMSwgMTc2LCAyMTcsIDY5LCAxLCAyMzQsIDEzMiwgMjE3LCA2OSwgCisgICAgMSwgMjQzLCAxMzUsIDIxNywgNjksIDEsIDI0MiwgMjQ5LCAyMTcsIDY5LCAxLCAyMjksIDc3LCAyMTcsIDY5LCAxLCAyNTEsIAorICAgIDMzLCAyMTcsIDY5LCAxLCAyNTAsIDE1NywgMjE3LCA2OSwgMSwgMjM1LCAxNDEsIDIxNywgNjksIDEsIDIzNSwgMTE0LCAKKyAgICAyMTcsIDY5LCAxLCAyMjcsIDE2NSwgMjE3LCA2OSwgMSwgMjE1LCAxNTYsIDIxNywgNjksIDEsIDIxNSwgMTQ0LCAyMTcsIAorICAgIDY5LCAxLCAyNDgsIDEzNSwgMjE3LCA2OSwgMSwgMjQ4LCAxMTksIDIxNywgNjksIDEsIDIyOCwgMTEwLCAyMTcsIDY5LCAxLCAKKyAgICAyMTcsIDEwNSwgMjE3LCA2OSwgMSwgMjE2LCAyMDgsIDIxNywgNjksIDEsIDI0OCwgMjIxLCAyMTcsIDY5LCAxLCAyNDgsIAorICAgIDI1LCAyMTcsIDY5LCAxLCAxOTcsIDIxNywgNjksIDEsIDE5MCwgMjE3LCA2OSwgMSwgMjI1LCAxNDcsIDIxNywgNjksIDEsIAorICAgIDI1MiwgMTkxLCAyMTcsIDY5LCAxLCAyNTIsIDE4LCAyMTcsIDY5LCAxLCAxODQsIDIxNywgNjksIDEsIDE5MSwgMjE3LCA2OSwgCisgICAgMSwgMjA1LCAyMTcsIDY5LCAxLCAyMzMsIDEzNSwgMjE3LCA2OSwgMSwgMjE0LCAyNywgMjE3LCA2OSwgMSwgMjIwLCAxMDIsIAorICAgIDIxNywgNjksIDEsIDIwNiwgMjE3LCA2OSwgMSwgMTYyLCAyMTcsIDY5LCAxLCAyMjIsIDE3OSwgMjE3LCA2OSwgNSwgMjU0LCAKKyAgICA3NSwgMjE3LCA2OSwgNSwgMjEzLCAxNDcsIDIxNywgNjksIDI1LCA1LCAyNTUsIDczLCAyMTcsIDY5LCAyNSwgNSwgNzMsIAorICAgIDIxNywgNjksIDI1LCA1LCAyMzYsIDMzLCAyMTcsIDY5LCAyNSwgNSwgNzAsIDIxNywgNjksIDI1LCA1LCAyMTQsIDExOCwgCisgICAgMjE3LCA2OSwgMjUsIDUsIDc1LCAyMTcsIDY5LCAyNSwgNSwgMjU0LCAyMDEsIDIxNywgNjksIDI1LCA1LCA3NiwgMjE3LCAKKyAgICA2OSwgMjUsIDUsIDI1MywgMTkyLCAyMTcsIDY5LCA1LCAyMTMsIDE1MiwgMjE3LCA2OSwgNSwgMjI3LCAyMDUsIDIxNywgNjksIAorICAgIDIxLCAyMTAsIDg2LCAyMTcsIDY5LCAyMSwgMTEwLCAyMTcsIDY5LCAyMSwgMTA1LCAyMTcsIDY5LCAyMSwgMTU4LCAyMTcsIAorICAgIDY5LCAyMSwgMTYxLCAyMTcsIDY5LCAyMSwgMTg5LCAyMTcsIDY5LCAyMSwgMTk0LCAyMTcsIDY5LCAyMSwgMTk4LCAyMTcsIAorICAgIDY5LCAyMSwgMTk1LCAyMTcsIDY5LCAyMSwgMjAwLCAxNSwgNSwgNjEsIDE1LCA1LCAxMTUsIDMwLCA2MSwgMTUsIDUsIDExNSwgCisgICAgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMTE1LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMTE1LCAzMCwgMTYyLCAKKyAgICAxNSwgNSwgMTE1LCAzMCwgMjM2LCAzNSwgMTUsIDUsIDExNSwgMzAsIDIzMywgMTE2LCAyNDIsIDk0LCAxNSwgNSwgMTE1LCAKKyAgICAzMCwgMjMwLCA2MSwgMTUsIDUsIDExNSwgMzAsIDIyMiwgMjEsIDE1LCA1LCAyNTUsIDc1LCAxNSwgNSwgMjU1LCAyNSwgMTUsIAorICAgIDUsIDI1NSwgMjYsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjU1LCAyNiwgMzAsIDI0MywgMTE4LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIAorICAgIDI1NSwgMjYsIDMwLCAxNjIsIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI1NSwgMjYsIAorICAgIDMwLCAyMzYsIDksIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjIwLCA0OCwgCisgICAgMTUsIDUsIDI1NSwgMjYsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDI1NSwgMjYsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNTUsIDIzLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjIwLCAKKyAgICAxMDAsIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDI1NCwgMjU1LCAxNSwgNSwgMjU0LCAxODYsIDE1LCAKKyAgICA1LCAyNTQsIDE4NywgMzAsIDI0NSwgODcsIDE1LCA1LCAyNTQsIDE4NywgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MCwgMTUsIAorICAgIDUsIDI1NCwgMTc4LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjQ3LCAKKyAgICAyMTYsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI0MiwgMTkwLCAxNSwgNSwgMjU0LCAxNzksIDMwLCAxNjIsIDE1LCA1LCAyNTQsIAorICAgIDE3OSwgMzAsIDIzNCwgMjU1LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjU0LCAxNzksIDMwLCAKKyAgICAyMjAsIDYzLCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDI1NCwgMTc1LCAxNSwgNSwgMjU0LCAxNjgsIAorICAgIDE1LCA1LCAyNTQsIDEzMiwgMTUsIDUsIDI1NCwgMTMzLCAzMCwgMjIwLCA2MywgMTUsIDUsIDI1NCwgMTIzLCAxNSwgNSwgCisgICAgMjU0LCAxMjQsIDExNywgMjU0LCAxMjMsIDE1LCA1LCAyNTQsIDEyNCwgMTM0LCAyMTYsIDg1LCAxNSwgNSwgMjU0LCAxMjQsIAorICAgIDk2LCAyMjksIDIxNywgMjI2LCAxNjQsIDI1NCwgMTI0LCA5NiwgMjI5LCAyMTYsIDE1LCA1LCAyNTQsIDEyNCwgOTYsIDIyOSwgCisgICAgMjE3LCAyMTgsIDIzMywgMTUsIDUsIDI1NCwgOTQsIDE1LCA1LCAyNTQsIDY3LCAxNSwgNSwgMjU0LCAzNSwgMTUsIDUsIAorICAgIDI1NCwgMzYsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDI1NCwgOCwgMTUsIDUsIDI1MywgMjM2LCAxNSwgNSwgMjUzLCAyMzEsIAorICAgIDE1LCA1LCAyNTMsIDIzMiwgMjEwLCA0MCwgMjE2LCAyMzksIDE1LCA1LCAyNTMsIDIzMiwgMjM1LCAzLCAyMTYsIDIzOSwgCisgICAgMTUsIDUsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAyMTUsIDExNCwgMTE3LCAyMTUsIDExNCwgMjE1LCAxMTQsIDExNywgCisgICAgMjE1LCAxMTQsIDIyNiwgMjEsIDE1LCA1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMSwgMTUsIDUsIAorICAgIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAxMTcsIDI1MywgMjMyLCAyNDksIDEyNSwgMjUzLCAyMzIsIDExNywgMjUzLCAKKyAgICAyMzIsIDExNywgMjUzLCAyMzEsIDE1LCA1LCAyNTMsIDIyOSwgMTUsIDUsIDI1MywgMjI2LCAxNSwgNSwgMjUyLCAxOTEsIAorICAgIDE1LCA1LCAyNTIsIDE3NiwgMTUsIDUsIDI1MiwgMTcxLCAxNSwgNSwgMjUyLCAxNjcsIDE1LCA1LCAyNTIsIDE2MSwgMTUsIAorICAgIDUsIDI1MiwgMTYyLCAxMTcsIDI1MiwgMTYxLCAxNSwgNSwgMjUyLCAxNjAsIDE1LCA1LCAxMzAsIDE1LCA1LCAyNTIsIDE0MCwgCisgICAgMTUsIDUsIDI1MiwgNiwgMTUsIDUsIDI1MiwgNywgMzAsIDYxLCAxNSwgNSwgMjUyLCA3LCAzMCwgMjQzLCA5NiwgMTUsIDUsIAorICAgIDI1MiwgNywgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNTEsIDEyNSwgMTUsIDUsIDI1MSwgMTI2LCAxMTcsIDI1MSwgCisgICAgMTI2LCAyNTUsIDI1LCAxNSwgNSwgMjUxLCAxMjYsIDExNywgMjUxLCAxMjYsIDIxNCwgMTkwLCAxNSwgNSwgMjUxLCAxMjYsIAorICAgIDI0OSwgMTI1LCAyNTEsIDEyNSwgMTUsIDUsIDI1MSwgMTA5LCAxNSwgNSwgMjUxLCAxMTAsIDExNywgMjUxLCAxMDksIDE1LCAKKyAgICA1LCAyNTEsIDk4LCAxNSwgNSwgMjUxLCA5NywgMTUsIDUsIDI0OCwgMjIxLCAxNSwgNSwgMjQ4LCAyMTIsIDE1LCA1LCAyNDgsIAorICAgIDIxMywgMjM0LCA2NiwgMzAsIDExNSwgOTYsIDIzMSwgMTQ3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNTQsIAorICAgIDEzMiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgCisgICAgMzAsIDI1MiwgNiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCAKKyAgICA2NiwgMzAsIDI0MywgMTM2LCA5NiwgMjMxLCAxNDcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MiwgMjE0LCAKKyAgICAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDIsIDE5NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgCisgICAgMjQyLCAxMDMsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDE2MiwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAKKyAgICAzMCwgMjM1LCAxNzksIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzNSwgMTgwLCA5NiwgMjMyLCA5OCwgMTUsIDUsIAorICAgIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMywgMTM1LCAKKyAgICAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIAorICAgIDk5LCA5NiwgMjMxLCAxNDYsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzMiwgODQsIDE1LCA1LCAyNDgsIDIxMywgCisgICAgMjM0LCA2NiwgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMjYsIDIyLCA5NiwgMjI2LCAKKyAgICAyMSwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjE5LCAxOTEsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIAorICAgIDIxNywgNzIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxNCwgMjMxLCA5NiwgMjQyLCAxOTcsIDE1LCA1LCAKKyAgICAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjQ4LCAxODcsIDE1LCA1LCAyNDgsIDE2NiwgMTUsIDUsIAorICAgIDI0OCwgMTY1LCAxNSwgNSwgMjQ4LCAxNjQsIDE1LCA1LCAyNDgsIDMsIDE1LCA1LCAyNDcsIDI0MiwgMTUsIDUsIDI0NywgCisgICAgMjE3LCAxNSwgNSwgMjQ3LCAyMTgsIDMwLCAyMjAsIDYzLCAxNSwgNSwgMjQ3LCAyMTYsIDE1LCA1LCAyNDcsIDIwNiwgMTUsIAorICAgIDUsIDI0NywgMjA3LCAyMzQsIDIwOCwgMTA0LCAyNDIsIDk1LCAyNDcsIDE4NywgMTUsIDUsIDI0NywgMTg3LCAxNSwgNSwgCisgICAgMjQ2LCA3OCwgMTUsIDUsIDI0NiwgNzksIDExNywgMjQ2LCA3OCwgMTUsIDUsIDI0NiwgNzksIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNDYsIDc5LCAyMjAsIDQ1LCAxNSwgNSwgMjQ2LCA3NiwgMTUsIDUsIDI0NiwgNzcsIDMwLCAyNDUsIDcyLCAxNSwgNSwgCisgICAgMjQ2LCA3NSwgMTUsIDUsIDI0NiwgNzQsIDE1LCA1LCAyNDYsIDczLCAxNSwgNSwgMjQ2LCA3MiwgMTUsIDUsIDI0NiwgNjgsIAorICAgIDE1LCA1LCAyNDYsIDY2LCAxNSwgNSwgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIDI0NiwgNjcsIDI0MiwgOTUsIDI0MiwgCisgICAgOTQsIDE1LCA1LCAyNDYsIDY1LCAxNSwgNSwgMjQ2LCA1OCwgMTUsIDUsIDc1LCAxNSwgNSwgMTYwLCAzMCwgMjI2LCAyMSwgCisgICAgMTUsIDUsIDE2MCwgMTE3LCAxNjAsIDIyNywgMTk1LCAxMTcsIDIyNywgMTk0LCAxNSwgNSwgMjQ1LCAyMzQsIDE1LCA1LCAKKyAgICAyNDUsIDIzNSwgMzAsIDExNSwgOTYsIDI0MiwgNDksIDk2LCAyNDgsIDIyMSwgMTUsIDUsIDI0NSwgMjM1LCAzMCwgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDI0NSwgMjM1LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDIyMiwgOCwgMTUsIDUsIAorICAgIDI0NSwgMjM1LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0NSwgMjM1LCAzMCwgNzAsIDE1LCA1LCAyNDUsIDIxMSwgMTUsIDUsIAorICAgIDI0NSwgMjAwLCAxNSwgNSwgMjQ1LCAxNzQsIDE1LCA1LCAyNDUsIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAzMCwgMjQzLCAKKyAgICAxMDQsIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0NSwgMTUxLCAzMCwgMjMxLCAKKyAgICA5MSwgMTUsIDUsIDI0NSwgMTUxLCAyNDksIDEyNSwgMjQ1LCAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMjI2LCAxNjQsIDI0NSwgCisgICAgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDIxOCwgMjMzLCAxNSwgNSwgMjQ1LCA4OSwgMTUsIDUsIDI0NSwgODcsIDE1LCA1LCAKKyAgICAyNDUsIDcyLCAxNSwgNSwgMjQ1LCAxMCwgMTUsIDUsIDI0NSwgMTEsIDMwLCA2MSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAxMTUsIAorICAgIDk2LCAyMzMsIDEwNCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAxMTUsIDk2LCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgCisgICAgMjQ1LCAxMSwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjQ2LCA2NywgMjQyLCA5NSwgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI0NSwgMTEsIDMwLCAxNjIsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjQyLCA0OSwgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIAorICAgIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDIzNCwgMjA4LCAyMTgsIDIzMywgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzMsIDIxNSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzMsIDEzNSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIAorICAgIDIzMiwgMjQxLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIzMiwgOTgsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjE0LCAyMzAsIDE1LCAKKyAgICA1LCAyNDUsIDExLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyNDMsIDEzNSwgMTUsIDUsIDI0MywgMTM2LCAyNDIsIDk0LCAxNSwgCisgICAgNSwgMjQzLCAxMzMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDExNSwgOTYsIDI0OCwgMjIyLCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAxMTUsIDk2LCAxNjIsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDExNSwgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI1NSwgMjQsIDIxNiwgMjQwLCA5NiwgMjE3LCA5MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjU0LCAxMjMsIAorICAgIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MywgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTMsIDIzMCwgOTYsIDI0MywgCisgICAgMTE4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUyLCAxNDEsIDk2LCAKKyAgICAyMDUsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MSwgOTgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MSwgOTksIDk2LCAyMDUsIAorICAgIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0OCwgMjIxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDgsIDMsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0NywgMjE4LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ2LCA3NiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQ1LCAxNzQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NSwgMTc1LCA5NiwgMjMzLCAxMzUsIDE1LCA1LCAKKyAgICAyNDMsIDEzNCwgMzAsIDI0NSwgMTUwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDUsIDE1MSwgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDMsIAorICAgIDk2LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDIxNCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAyMTIsIDE1LCA1LCAKKyAgICAyNDMsIDEzNCwgMzAsIDI0MiwgMjEzLCA5NiwgNjEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMTk4LCA5NiwgMjE4LCAKKyAgICA4MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCA0OSwgOTYsIDIzMiwgOTksIDk2LCAyNDUsIDcyLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDMxLCA5NiwgMjMzLCAxMzUsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0MSwgMTgxLCA5NiwgMjMyLCAyNDEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MCwgMjE4LCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzUsIDE2NiwgOTYsIDI0MCwgCisgICAgMjIzLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMzQsIDIwNywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM0LCA4OSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM0LCA5MCwgOTYsIAorICAgIDIzMywgMTA0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzMsIDIxNiwgOTYsIDI1NCwgMTIzLCAxNSwgNSwgMjQzLCAxMzQsIAorICAgIDMwLCAyMzMsIDEzNSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyMzAsIDIzMCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIAorICAgIDIyNywgMTk1LCAxMTcsIDIyNywgMTk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxOTAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIAorICAgIDIyMiwgOCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIxLCAyMzEsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMCwgNjMsIDE1LCAKKyAgICA1LCAyNDMsIDEzNCwgMzAsIDIyMCwgNjQsIDk2LCAyMTUsIDk4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDMwLCAxNSwgCisgICAgNSwgMjQzLCAxMzQsIDMwLCAyMTgsIDQzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjQzLCAxMzQsIAorICAgIDMwLCA3MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNCwgMjIwLCA5NiwgCisgICAgMjQ2LCA3OCwgMTUsIDUsIDI0MywgMTM0LCAxMTcsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMjgsIDE1LCA1LCAyNDMsIAorICAgIDEyOSwgMjQ5LCAxMjUsIDI0MywgMTI4LCAxNSwgNSwgMjQzLCAxMjYsIDE1LCA1LCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgCisgICAgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMjQzLCAxMTgsIDE1LCA1LCAyNDMsIDExOSwgMjQzLCAxMjcsIDExNywgCisgICAgMjQzLCAxMjcsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDI0MywgMTE3LCAxNSwgNSwgMjQzLCAxMTUsIDE1LCA1LCAKKyAgICAyNDMsIDEwNiwgMTUsIDUsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQzLCAxMDUsIAorICAgIDExNywgMjQzLCAxMDQsIDE1LCA1LCAyNDMsIDEwNSwgMjQ5LCAxMjUsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCA5NiwgMTUsIAorICAgIDUsIDI0MywgOTUsIDE1LCA1LCAyNDMsIDkwLCAxNSwgNSwgMjQzLCAzNiwgMTUsIDUsIDI0MywgMzcsIDMwLCAyMzMsIDE5NiwgCisgICAgMTUsIDUsIDI0MiwgMjE0LCAxNSwgNSwgMjQyLCAyMTUsIDMwLCA3NSwgMTUsIDUsIDI0MiwgMjE1LCAzMCwgNzAsIDE1LCA1LCAKKyAgICAyNDIsIDIxNSwgMjQ5LCAxMjUsIDI0MiwgMjE0LCAxNSwgNSwgMjQyLCAyMTIsIDE1LCA1LCAyNDIsIDIxMywgMTE3LCAyNDIsIAorICAgIDIxMiwgMTUsIDUsIDI0MiwgMjEzLCAyNDksIDEyNSwgMjQyLCAyMTIsIDE1LCA1LCAyNDIsIDIwOSwgMTUsIDUsIDI0MiwgCisgICAgMTk3LCAxNSwgNSwgMjQyLCAxOTgsIDI0MiwgOTQsIDE1LCA1LCAyNDIsIDE5NSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMTE1LCAKKyAgICA5NiwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjQyLCAxOTYsIAorICAgIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjQyLCAxOTYsIDMwLCAyMzIsIDk5LCA5NiwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAKKyAgICAzMCwgMTkwLCAxNSwgNSwgMjQyLCAxOTIsIDE1LCA1LCAyNDIsIDE5MCwgMTUsIDUsIDI0MiwgMTkxLCAyNDksIDEyNSwgCisgICAgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjQyLCAxOTEsIDMwLCAyMTcsIDcyLCAKKyAgICAxNSwgNSwgMjQyLCAxOTEsIDIxNiwgMjM5LCAxNSwgNSwgMjQyLCAxMTMsIDE1LCA1LCAyNDIsIDExNCwgMjQ5LCAxMjUsIAorICAgIDI0MiwgMTEzLCAxNSwgNSwgMjQyLCAxMTEsIDE1LCA1LCAyNDIsIDExMiwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQyLCAKKyAgICAxMTIsIDMwLCAyMzQsIDI0MywgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNDIsIDExMiwgMzAsIDIyNywgMTk0LCAKKyAgICAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMjIsIDksIDk2LCAyMTUsIDExMywgMTUsIDUsIDI0MiwgMTEyLCAyNDIsIDk0LCAxNSwgCisgICAgNSwgMjQyLCAxMDMsIDE1LCA1LCAyNDIsIDEwNCwgMzAsIDExNSwgOTYsIDIzMywgMTk2LCAxNSwgNSwgMjQyLCAxMDQsIDMwLCAKKyAgICAyMzMsIDE5NiwgMTUsIDUsIDI0MiwgMTA0LCAxMTcsIDI0MiwgMTA0LCAyMzIsIDkxLCAxNSwgNSwgMjQyLCA5OCwgMTUsIDUsIAorICAgIDI0MiwgOTYsIDE1LCA1LCAyNDIsIDk3LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0MiwgODgsIDE1LCA1LCAyNDIsIDg3LCAxNSwgCisgICAgNSwgMjQyLCA4NCwgMTUsIDUsIDI0MiwgODMsIDE1LCA1LCAxNjIsIDE1LCA1LCAyNDIsIDQ5LCAyMTYsIDIzOSwgMTUsIDUsIAorICAgIDI0MiwgNDksIDI0MiwgOTQsIDE1LCA1LCAyNDIsIDMwLCAxNSwgNSwgMjQxLCAxODAsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIAorICAgIDI1MywgMjMxLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjUyLCAxNzYsIAorICAgIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI0NywgMTg3LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNDMsIDEyNiwgMTUsIDUsIDI0MSwgCisgICAgMTgxLCAzMCwgMjM0LCA4MSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIAorICAgIDIyMCwgNjMsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDcwLCAxNSwgNSwgMjQwLCAyMjIsIDE1LCA1LCAyNDAsIDIxOCwgMTUsIAorICAgIDUsIDI0MCwgMjE5LCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDI0MiwgMzAsIDE1LCA1LCAyNDAsIDIxOSwgCisgICAgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyMzIsIDE5NywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjE0LCAKKyAgICAyMTksIDE1LCA1LCAyNDAsIDIxNSwgMTUsIDUsIDczLCAxNSwgNSwgMjQwLCAxNTQsIDYxLCAxNSwgNSwgMjQwLCAxMTUsIAorICAgIDE1LCA1LCAyMzYsIDYzLCAxNSwgNSwgMjM2LCA2NCwgMTE3LCAyMzYsIDY0LCAyNTEsIDk4LCAxNSwgNSwgMjM2LCA2NCwgCisgICAgMTE3LCAyMzYsIDY0LCAyMTgsIDIzMywgMTUsIDUsIDIzNiwgMzgsIDE1LCA1LCAyMzYsIDM1LCAxNSwgNSwgMjM2LCAzNiwgCisgICAgMjQ3LCAyNDIsIDE1LCA1LCAyMzYsIDM2LCAyMjMsIDM1LCAxNSwgNSwgMjM2LCAzNiwgMTE3LCAyMzYsIDM2LCAyMjAsIDE0LCAKKyAgICAxMTcsIDIyMCwgMTQsIDIxNCwgMjIwLCAxMTcsIDIxNCwgMjE5LCAxNSwgNSwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIAorICAgIDIzNiwgMjcsIDE1LCA1LCAyMzYsIDI4LCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjM2LCAyNiwgMTUsIDUsIAorICAgIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDE3LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDIzNiwgMTcsIDI0OSwgMTI1LCAyMzYsIDE2LCAKKyAgICAxNSwgNSwgMjM2LCAxNywgMjI2LCAxNjQsIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDE3LCAyMTgsIDIzMywgMTUsIDUsIDIzNiwgCisgICAgOSwgMTUsIDUsIDIzNSwgMjU1LCAxNSwgNSwgMjM1LCAxNzksIDE1LCA1LCAyMzUsIDE2NSwgMTUsIDUsIDE3NiwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCA2MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTQsIDI1NSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTUsIAorICAgIDAsIDk2LCAyMzMsIDIxNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTMsIDIyOSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTIsIAorICAgIDE3NiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAxMzAsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjUyLCA2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0NSwgODcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQ1LCA3MiwgCisgICAgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDMsIDExOCwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIzNSwgMTMsIAorICAgIDMwLCAyNDMsIDk3LCA5NiwgMjIwLCAxMDEsIDk2LCA2MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDIxNCwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyNDIsIDE5NywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDIsIDE5MSwgOTYsIDIyMSwgMjMxLCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDI0MiwgMTkxLCAyNDksIDEyNSwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAxMTMsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCA4NywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjM1LCAxMywgCisgICAgMzAsIDIzNiwgMTYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCAyNDIsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCA5MiwgCisgICAgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzQsIDg5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMiwgMjQxLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMiwgOTgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCA5MSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzEsIAorICAgIDkyLCA5NiwgMjQ2LCA3OCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzEsIDkyLCA5NiwgMjQyLCAyMTQsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjMxLCA5MiwgOTYsIDIxNywgMjIsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjMwLCAyMzEsIDk2LCAyMjcsIDE4OSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMjcsIDE5NCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjUsIDEwOCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjIsIAorICAgIDE0MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMDYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIxLCAyMzEsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjIwLCAxMDIsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIwLCA2MywgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMjAsIAorICAgIDMwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxOSwgMjI1LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxOSwgMTgyLCAxNSwgNSwgCisgICAgMjM1LCAxMywgMzAsIDIxOCwgNTEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE3LCA1MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAKKyAgICA3MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyMTQsIDE5MywgMzAsIDE5MCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMTAsIDQ0LCAxNSwgNSwgMjM1LCAxMSwgMTUsIDUsIDIzNSwgMTIsIDI0OSwgMTI1LCAyMzUsIDExLCAxNSwgCisgICAgNSwgMjM1LCA0LCAxNSwgNSwgMjM1LCAxLCAxNSwgNSwgMjM0LCAyNTUsIDE1LCA1LCAyMzQsIDI1NCwgMTUsIDUsIDIzNCwgCisgICAgMjUyLCAxNSwgNSwgMjM0LCAyNTMsIDExNywgMjM0LCAyNTIsIDE1LCA1LCAyMzQsIDI0MiwgMTUsIDUsIDIzNCwgMjQzLCAKKyAgICAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIzNCwgMjM4LCAxNSwgNSwgMjM0LCAyMzksIDMwLCAyNTIsIDE3NiwgMTUsIAorICAgIDUsIDIzNCwgMjM5LCAyNDksIDEyNSwgMjM0LCAyMzgsIDE1LCA1LCAyMzQsIDIzNiwgMTUsIDUsIDIzNCwgMjM1LCAxNSwgNSwgCisgICAgMjM0LCAyMDcsIDE1LCA1LCAyMzQsIDIwOCwgMjMzLCAxMTgsIDMwLCAxMDQsIDExNywgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIAorICAgIDUsIDIzNCwgMjA4LCAxMTcsIDIzNCwgMjA4LCAyMzMsIDExOCwgMzAsIDEwNCwgMTE3LCAyMzMsIDExOCwgMzAsIDcwLCAxNSwgCisgICAgNSwgMjM0LCAxNTcsIDE1LCA1LCAyMzQsIDkyLCAxNSwgNSwgMjM0LCA5MywgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjM0LCAKKyAgICA5MywgMzAsIDcwLCAxNSwgNSwgMjM0LCA5MywgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjM0LCA4OSwgMTUsIDUsIDIzNCwgODEsIAorICAgIDE1LCA1LCAyMzQsIDY4LCAxNSwgNSwgMjM0LCA2NywgMTUsIDUsIDIzNCwgNjUsIDE1LCA1LCAyMzQsIDY2LCAxMTcsIDIzNCwgCisgICAgNjUsIDE1LCA1LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMjE4LCAxMTcsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMzAsIDIzMywgCisgICAgMjE4LCAxMTcsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMzMsIDIxNSwgMTUsIDUsIDIzMywgMjEzLCAxNSwgCisgICAgNSwgMjMzLCAyMTQsIDIxNCwgMTIsIDE3LCAxNSwgNSwgMjMzLCAyMTIsIDE1LCA1LCAyMzMsIDIwOSwgMTUsIDUsIDIzMywgCisgICAgMjEwLCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAyMDgsIDE1LCA1LCAyMzMsIDE5NiwgMTUsIDUsIDIzMywgMTk3LCAyMjYsIAorICAgIDE2NCwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDE5MSwgMTUsIDUsIDIzMywgMTcyLCAxNSwgNSwgMjMzLCAxMzUsIDE1LCA1LCAKKyAgICAyMzMsIDExNywgMTUsIDUsIDIzMywgMTE4LCAzMCwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDExNSwgOTYsIDI0OCwgCisgICAgMjIyLCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMTUsIDk2LCAyNDMsIDk2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAxMTUsIDk2LCAyMzMsIDEwNCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAorICAgIDI1NCwgMTIzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNTMsIDIzMiwgMjEwLCA0MCwgMjE2LCAyMzksIDE1LCA1LCAyMzMsIAorICAgIDExOCwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0OCwgCisgICAgMTY2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDUsIDE1MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyNDIsIDEwNCwgOTYsIDI0MiwgMTAzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxNjIsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDI0MiwgMzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MSwgMTgxLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMzMsIAorICAgIDExOCwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzNiwgMTYsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDIzNiwgMTcsIDk2LCAxNjIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzNiwgMTcsIDk2LCAyMzIsIDk4LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDMwLCAyMzQsIDkyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzQsIDgxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyMzMsIDIxNSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMzLCAyMDksIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMjEwLCAKKyAgICA5NiwgMjQxLCAxODEsIDk2LCA2MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIAorICAgIDIzMiwgMTk3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzIsIDg2LCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMzEsIDkxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCAKKyAgICA1LCAyMzMsIDExOCwgMzAsIDIzMCwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMjAsIDY0LCA5NiwgMjE4LCA0MywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjIwLCAxMCwgOTYsIDI0MiwgMTkxLCA5NiwgCisgICAgMjQ1LCA4NywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjIwLCAxMCwgOTYsIDI0MiwgMTkxLCAyMTYsIDIzOSwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAzMCwgMjE5LCAyMjMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxOSwgMjI0LCA5NiwgMjE5LCAyMjMsIDE1LCAKKyAgICA1LCAyMzMsIDExOCwgMzAsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNywgODQsIDE1LCA1LCAyMzMsIDExOCwgCisgICAgMzAsIDIxNywgNzIsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNywgMjMsIDk2LCAxMTUsIDk2LCAyMTgsIDg0LCA5NiwgMTk3LCAKKyAgICAxNSwgNSwgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMzMsIAorICAgIDExOCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgCisgICAgMjMxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMjE4LCAyMzMsIDE1LCA1LCAyMzMsIDExNSwgMTUsIDUsIDIzMywgMTE2LCAzMCwgMjIwLCA2MywgMTUsIDUsIAorICAgIDIzMywgMTE2LCAzMCwgMjIwLCA2NCwgOTYsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExNiwgMjQyLCA5NCwgMTUsIDUsIDIzMywgCisgICAgMTE2LCAyNDIsIDk1LCAxMTcsIDIzMywgMTE2LCAyNDIsIDk1LCAyMjAsIDYzLCAxNSwgNSwgMjMzLCAxMTEsIDE1LCA1LCAKKyAgICAyMzMsIDEwNCwgMTUsIDUsIDIzMywgMTA1LCAzMCwgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDEwMiwgMTUsIDUsIDIzMywgCisgICAgMTAzLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDEwMywgMzAsIDIzMywgMTk3LCA5NiwgMjIyLCAxNDAsIDE1LCA1LCAKKyAgICAyMzIsIDI0MSwgMTUsIDUsIDIzMiwgMjI2LCAxNSwgNSwgMjMyLCAyMTYsIDE1LCA1LCAyMzIsIDE5NywgMTUsIDUsIDIzMiwgCisgICAgOTgsIDE1LCA1LCAyMzIsIDk5LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMzAsIAorICAgIDI1NCwgMTc4LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0NSwgNzIsIDE1LCAKKyAgICA1LCAyMzIsIDk3LCAzMCwgMjQ1LCA3MywgMjE2LCAyMzksIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjQzLCAxMDUsIDIxNiwgCisgICAgMjM5LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0MSwgMTgxLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM2LCAKKyAgICAxNiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzUsIDEsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM0LCAyNTUsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjM1LCAwLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMzMsIDEzNiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMjcsIDIzNywgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMTksIDE5MiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIxOSwgMTc0LCA5NiwgMjUxLCAxMjUsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjE1LCAxMTMsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAyMTYsIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDI0OSwgMTI1LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMjI2LCAKKyAgICAxNjQsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAyMTgsIDIzMywgMTUsIDUsIDIzMiwgOTcsIDIyMCwgNDUsIDE1LCA1LCAKKyAgICAyMzIsIDk1LCAxNSwgNSwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIDExNywgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIAorICAgIDIyNiwgMTY0LCAyMzIsIDkxLCAxNSwgNSwgMjMyLCA5MiwgMjIwLCA0NSwgMTUsIDUsIDIzMiwgODksIDE1LCA1LCAyMzIsIAorICAgIDg2LCAxNSwgNSwgMjMyLCA4NCwgMTUsIDUsIDIzMiwgODUsIDExNywgMjMyLCA4NCwgMTUsIDUsIDIzMiwgODUsIDExNywgCisgICAgMjMyLCA4NSwgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMTg0LCAxNSwgNSwgMjMxLCAyMzksIDMwLCAyMTcsIDcyLCAKKyAgICAxNSwgNSwgMjMxLCAyMzksIDI0MiwgOTQsIDE1LCA1LCAyMzEsIDIzOCwgMTUsIDUsIDIzMSwgMjEwLCAxNSwgNSwgMjMxLCAKKyAgICAxNjYsIDE1LCA1LCAyMzEsIDE0NywgMTUsIDUsIDIzMSwgMTQ2LCAxNSwgNSwgMjMxLCA5MSwgMTUsIDUsIDIzMSwgNDcsIAorICAgIDE1LCA1LCAyMzAsIDIzMCwgMTUsIDUsIDIzMCwgMTg4LCAxNSwgNSwgMjMwLCAxMDIsIDE1LCA1LCAyMzAsIDEwMywgMTE3LCAKKyAgICAyMzAsIDEwMiwgMTUsIDUsIDIzMCwgOTMsIDE1LCA1LCAyMzAsIDk0LCAyNDIsIDk0LCAxNSwgNSwgMjMwLCA3OCwgMTUsIDUsIAorICAgIDIzMCwgNjQsIDE1LCA1LCAyMzAsIDYxLCAxNSwgNSwgMjMwLCA2MiwgMzAsIDYxLCAxNSwgNSwgMjMwLCA2MiwgMzAsIDIzMywgCisgICAgMTk2LCAxNSwgNSwgMjMwLCA2MiwgMzAsIDIxMCwgMTE2LCAxNSwgNSwgMjMwLCA2MiwgMTE3LCAyMzAsIDYxLCAxNSwgNSwgCisgICAgMjMwLCA2MiwgMTE3LCAyMzAsIDYyLCAzMCwgMTE1LCA5NiwgMTk3LCAxNSwgNSwgMjMwLCA2MiwgMjQ5LCAxMjUsIDIzMCwgCisgICAgNjEsIDE1LCA1LCAyMzAsIDU5LCAxNSwgNSwgMjMwLCA2MCwgMzAsIDYxLCAxNSwgNSwgMjMwLCA2MCwgMzAsIDExNSwgOTYsIAorICAgIDI0OCwgMywgMTUsIDUsIDIzMCwgNjAsIDMwLCAyNDgsIDMsIDE1LCA1LCAyMzAsIDYwLCAyNDIsIDk0LCAxNSwgNSwgMTk3LCAKKyAgICAxNSwgNSwgMjI5LCAyMjcsIDE1LCA1LCAyMjksIDIxNiwgMTUsIDUsIDIyOSwgMjE3LCAyMzUsIDE5MiwgMTUsIDUsIDIyOSwgCisgICAgMjE3LCAzMCwgMjE5LCAyMjYsIDIxNiwgMjM5LCAxNSwgNSwgMjI5LCAyMTcsIDIyNiwgMTY0LCAyMjksIDIxNiwgMTUsIDUsIAorICAgIDIyOSwgMjE1LCAxNSwgNSwgMjI5LCAyMDgsIDIyNywgMTgwLCAxNSwgNSwgMjI5LCAyMDcsIDE1LCA1LCAyMjksIDIwNiwgCisgICAgMTUsIDUsIDIyOSwgMTA3LCAxNSwgNSwgMjI5LCAxMDgsIDMwLCA2MSwgMTUsIDUsIDIyOSwgMTA4LCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMjksIDEwOCwgMjIwLCA0NSwgMTUsIDUsIDIyOCwgMjMzLCAxNSwgNSwgMjI4LCAyMzQsIDMwLCA3NSwgMTUsIAorICAgIDUsIDIyOCwgMjMyLCAxNSwgNSwgMjI4LCAyMDMsIDE1LCA1LCAyMjgsIDIwNCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgCisgICAgMTUsIDUsIDIyOCwgMjA0LCAzMCwgMjQzLCA5NywgOTYsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIyOCwgMjAxLCAKKyAgICAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNTQsIDEyMywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIAorICAgIDIwMiwgMzAsIDI1MywgMjMyLCA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgCisgICAgMjI4LCAyMDIsIDMwLCAyMzEsIDkyLCA5NiwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjksIAorICAgIDEwNywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyMCwgNjMsIDE1LCA1LCAKKyAgICAyMjgsIDIwMiwgMzAsIDIyMCwgNjQsIDk2LCAxMTUsIDI1NCwgMTIzLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCAKKyAgICA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyMCwgNjQsIDk2LCAyNTMsIDIzMiwgOTYsIDI1MywgMjMxLCAKKyAgICAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMTQsIAorICAgIDEyNiwgMTUsIDUsIDIyOCwgMTkwLCAxNSwgNSwgMjI3LCAyMzcsIDE1LCA1LCAyMjcsIDIxMCwgMTUsIDUsIDIyNywgMTk0LCAKKyAgICAxNSwgNSwgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgMjQzLCA5NiwgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIAorICAgIDIzMSwgMTQ3LCAxNSwgNSwgMjI3LCAxOTUsIDIzMywgMTE2LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjI3LCAxOTUsIDIzMywgCisgICAgMTE2LCAzMCwgMjIyLCA5LCAxMTcsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyNywgMTk1LCAKKyAgICAyMzMsIDExNiwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjI3LCAxOTUsIDIxNiwgMjM5LCAxNSwgNSwgMjI3LCAxOTUsIDExNywgCisgICAgMjI3LCAxOTQsIDE1LCA1LCAyMjcsIDE5NSwgMjQ5LCAxMjUsIDIyNywgMTk0LCAxNSwgNSwgMjI3LCAxOTUsIDI0OSwgMTI1LCAKKyAgICAyMjcsIDE5NSwgMjMzLCAxMTYsIDExNywgMjMzLCAxMTUsIDE1LCA1LCAyMjcsIDE4OSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIAorICAgIDI0LCAzMCwgMjUzLCAyMjYsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDI1MiwgNiwgMTUsIDUsIDIyNywgMTkwLCAKKyAgICAyNTUsIDI0LCAzMCwgMjQ2LCA3NCwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjQyLCAxMDMsIDE1LCA1LCAyMjcsIAorICAgIDE5MCwgMjU1LCAyNCwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDIzNCwgCisgICAgMjU1LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMzMsIDEzNSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAKKyAgICAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDIxOSwgMTcxLCAxNSwgNSwgMjI3LCAxOTAsIAorICAgIDI1NSwgMjQsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyNywgMTkwLCAyMzQsIDY2LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjI3LCAKKyAgICAxOTAsIDIzNCwgNjYsIDMwLCAyNTIsIDcsIDcwLCAxNSwgNSwgMTkwLCAxNSwgNSwgMjI2LCA4MCwgMTUsIDUsIDIyNiwgNDcsIAorICAgIDE1LCA1LCAyMjYsIDIxLCAxNSwgNSwgMjI1LCAxNjEsIDE1LCA1LCAyMjUsIDEwOCwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgCisgICAgNjEsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI1NSwgMjUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI1MiwgNiwgMTUsIDUsIAorICAgIDIyNSwgMTA5LCAzMCwgMjUxLCAxMjUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDc1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3MywgCisgICAgMTUsIDUsIDIyNSwgMTA5LCAzMCwgMjQwLCAxMTUsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDcwLCAxNSwgNSwgMjI1LCAxMDksIAorICAgIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyNSwgMTA5LCAyNDksIDEyNSwgMjI1LCAxMDgsIDE1LCA1LCAyMjUsIDUzLCAxNSwgNSwgCisgICAgMjI1LCA1NCwgMzAsIDIzNCwgMjM4LCAxNSwgNSwgMjI1LCA1NCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjI1LCA1NCwgMzAsIAorICAgIDIxMCwgMTE2LCAxNSwgNSwgMjI1LCA1NCwgMjI2LCAxNjQsIDIyNSwgNTMsIDE1LCA1LCAyMDUsIDE1LCA1LCAyMjMsIDE4MiwgCisgICAgMTUsIDUsIDIyMywgMzUsIDE1LCA1LCAyMjIsIDE0MCwgMTUsIDUsIDIwNiwgMTUsIDUsIDIyMiwgMjIsIDIyNywgMTgwLCAKKyAgICAxNSwgNSwgMjIyLCAyMSwgMTUsIDUsIDIyMiwgMjIsIDMwLCA2MSwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyNDYsIDc4LCAxNSwgCisgICAgNSwgMjIyLCAyMiwgMzAsIDI0NiwgNzYsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMTYyLCAxNSwgNSwgMjIyLCAyMiwgMzAsIAorICAgIDIzNCwgMjQyLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIzMiwgODQsIDE1LCAKKyAgICA1LCAyMjIsIDIyLCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMjIsIDIyLCAKKyAgICAzMCwgMjIyLCA4LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIyMCwgMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE3LCA5MywgMTUsIAorICAgIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDIyNSwgMTUsIDUsIDIyMiwgMjIsIAorICAgIDMwLCAyMTQsIDE5NywgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDE1MCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMTQsIDEyNiwgCisgICAgMTUsIDUsIDIyMiwgMjIsIDExNywgMjIyLCAyMSwgMTUsIDUsIDIyMiwgMjIsIDI0MiwgOTQsIDE1LCA1LCAyMjIsIDgsIDE1LCAKKyAgICA1LCAyMjIsIDksIDIzMywgMTE4LCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMjEsIDIzOSwgMTUsIDUsIDIyMSwgMjMxLCAxNSwgCisgICAgNSwgMjIwLCAxMDIsIDE1LCA1LCAyMjAsIDEwMCwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgNjEsIDE1LCA1LCAyMjAsIDEwMSwgCisgICAgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyNDIsIDE5MCwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjI5LCAKKyAgICAxMDcsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIxOSwgMjIzLCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMTUsIDk4LCAxNSwgNSwgCisgICAgMjIwLCAxMDEsIDMwLCA3MCwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMjAsIDk5LCAxNSwgCisgICAgNSwgMjIwLCA5NywgMTUsIDUsIDIyMCwgNzgsIDE1LCA1LCAyMjAsIDYzLCAxNSwgNSwgMjIwLCA2NCwgMjQwLCAyMjIsIDE1LCAKKyAgICA1LCAyMjAsIDY0LCAxMTcsIDIyMCwgNjQsIDI0MywgMTI3LCAxMTcsIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIAorICAgIDE1LCA1LCAyMjAsIDY0LCAxMTcsIDIyMCwgNjQsIDIxNywgOTQsIDExNywgMjE3LCA5NCwgMjQzLCA5NywgMTE3LCAyNDMsIAorICAgIDk2LCAxNSwgNSwgMjIwLCA1NiwgMTUsIDUsIDIyMCwgNTEsIDE1LCA1LCAyMjAsIDQ4LCAxNSwgNSwgMjIwLCA0NywgMTUsIAorICAgIDUsIDIyMCwgNDQsIDE1LCA1LCAyMjAsIDMwLCAxNSwgNSwgMjIwLCAzMSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAzMSwgMzAsIAorICAgIDIzNiwgMTYsIDE1LCA1LCAyMjAsIDI0LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDI1MiwgCisgICAgMTYxLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDI1MSwgMTA5LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDI0NywgMjA2LCAxNSwgNSwgCisgICAgMjIwLCAyNSwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAKKyAgICAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMywgMTkxLCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMiwgCisgICAgODYsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjMwLCA5MywgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjAsIAorICAgIDE4LCAxNSwgNSwgMjIwLCAxMywgMTUsIDUsIDIyMCwgMTQsIDIxNiwgMjM5LCAxNSwgNSwgMjIwLCAxNCwgMTE3LCAyMjAsIAorICAgIDE0LCAyNTEsIDk5LCAxMTcsIDI1MSwgOTgsIDE1LCA1LCAyMjAsIDksIDE1LCA1LCAyMTksIDIyNSwgMTUsIDUsIDIxOSwgCisgICAgMjI2LCAxMTcsIDIzNSwgMTkzLCAyMTksIDIyNSwgMTUsIDUsIDIxOSwgMjIzLCAxNSwgNSwgMjE5LCAyMjIsIDE1LCA1LCAKKyAgICAyMTksIDE5MSwgMTUsIDUsIDIxOSwgMTkyLCAyNDIsIDk0LCAxNSwgNSwgMjE5LCAxODIsIDE1LCA1LCAyMTksIDE4MCwgMTUsIAorICAgIDUsIDIxOSwgMTgxLCAxMTcsIDIxOSwgMTgxLCAyMTksIDIyMywgMTUsIDUsIDIxOSwgMTczLCAxNSwgNSwgMjE5LCAxNzEsIAorICAgIDE1LCA1LCAyMTgsIDgzLCAxNSwgNSwgMjE4LCA4NCwgMTE3LCAyMTgsIDgzLCAxNSwgNSwgMjE4LCA1NCwgMTUsIDUsIDIxOCwgCisgICAgNTMsIDE1LCA1LCAyMTgsIDUxLCAxNSwgNSwgMjE4LCA0MywgMTUsIDUsIDIxOCwgNDIsIDE1LCA1LCAyMTgsIDE3LCAxNSwgCisgICAgNSwgMjE4LCAxNiwgMTUsIDUsIDIxNywgMTA1LCAxNSwgNSwgMjE3LCAxMDYsIDI1MywgMjE2LCAxNSwgNSwgMjE3LCAxMDYsIAorICAgIDMwLCAyNDEsIDE4MCwgMTUsIDUsIDIxNywgMTA2LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMTcsIDEwNiwgMjQyLCA5NCwgCisgICAgMTUsIDUsIDIxNywgOTMsIDE1LCA1LCAyMTcsIDk0LCAxMTcsIDIxNywgOTQsIDIyOCwgMjM0LCAxMTcsIDIyOCwgMjM0LCAKKyAgICAyNDcsIDE4OCwgMTE3LCAyNDcsIDE4NywgMTUsIDUsIDIxNywgOTQsIDIxOCwgMjMzLCAxNSwgNSwgMjE3LCA4NCwgMTUsIDUsIAorICAgIDEyOSwgMzAsIDI1MiwgNiwgMTUsIDUsIDEyOSwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMTI5LCAzMCwgMjIwLCA2MywgMTUsIAorICAgIDUsIDEyOSwgMzAsIDIxOSwgMjI1LCAxNSwgNSwgMTI5LCAzMCwgMjE1LCAxMTMsIDE1LCA1LCAxMjksIDMwLCAyMTQsIDIxOSwgCisgICAgMTUsIDUsIDIxNywgNzIsIDE1LCA1LCAyMTcsIDUwLCAxNSwgNSwgMjE3LCAyMiwgMTUsIDUsIDIxNywgMjMsIDI0MiwgOTQsIAorICAgIDE1LCA1LCAyMTYsIDExNywgMTUsIDUsIDIxNiwgMTE4LCAyMTYsIDIzOSwgMTUsIDUsIDIxNiwgOTAsIDE1LCA1LCAyMTYsIAorICAgIDcyLCAxNSwgNSwgMjE2LCA3MywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMTYsIDczLCAxMTcsIDIxNiwgNzIsIDE1LCA1LCAKKyAgICAyMTYsIDczLCAxMTcsIDIxNiwgNzMsIDI0MywgMTI3LCAxMTcsIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIAorICAgIDE1LCA1LCAyMTUsIDExOCwgMTUsIDUsIDIxNSwgMTEzLCAxNSwgNSwgMjE1LCAxMTEsIDE1LCA1LCAyMTUsIDEwOCwgMTUsIAorICAgIDUsIDIxNSwgOTgsIDE1LCA1LCAyMTUsIDk5LCAxMTcsIDIxNSwgOTksIDIxMCwgMTE3LCAxMTcsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgNzAsIDE1LCA1LCAxMDQsIDI0MiwgMTAzLCAxNSwgNSwgMTA0LCAxMDQsIDcwLCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMjI2LCAKKyAgICA5MCwgMTE3LCAyMjYsIDkwLCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAyMTgsIDE4LCAKKyAgICAxMTcsIDIxOCwgMTcsIDE1LCA1LCAxMDQsIDExNywgMTA0LCAxMDQsIDIyMywgNDksIDExNywgMTA0LCAyMjMsIDQ4LCAxNSwgCisgICAgNSwgMjE0LCAyMzAsIDE1LCA1LCAyMTQsIDIyNSwgMTUsIDUsIDIxNCwgMjE5LCAxNSwgNSwgMjE0LCAyMjAsIDIzMywgMTkxLCAKKyAgICAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyMTQsIAorICAgIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDcwLCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCAKKyAgICAxMDQsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDIyMCwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMjIwLCAyMjAsIDQ1LCAxNSwgNSwgCisgICAgMjE0LCAyMjAsIDIyMCwgNDYsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIxNCwgMjE1LCAxNSwgNSwgMjE0LCAxOTcsIDE1LCA1LCAKKyAgICAyMTQsIDE5OCwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAyMzEsIDkyLCA5NiwgMjQ4LCAyMjEsIDE1LCAKKyAgICA1LCAyMTQsIDE5OCwgMzAsIDIyMCwgMTAwLCAxNSwgNSwgMjE0LCAxOTgsIDMwLCA3MCwgMTUsIDUsIDIxNCwgMTk2LCAxNSwgCisgICAgNSwgMjE0LCAxOTIsIDE1LCA1LCAyMTQsIDE5MywgMzAsIDIzNCwgMjA3LCAxNSwgNSwgMjE0LCAxOTMsIDMwLCAxOTAsIDE1LCAKKyAgICA1LCAyMTQsIDE5MCwgMTUsIDUsIDIxNCwgMTkxLCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgCisgICAgMjQ5LCAxMjUsIDIxNCwgMTUwLCAxNSwgNSwgMjE0LCAxNTEsIDIyMCwgNDUsIDE1LCA1LCAyMTQsIDE0OCwgMTUsIDUsIAorICAgIDIxNCwgMTQ5LCAzMCwgMTE1LCA5NiwgMTYyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxMTUsIDk2LCAxOTcsIDE1LCA1LCAKKyAgICAyMTQsIDE0OSwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIAorICAgIDIyNywgMTk0LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzEsIAorICAgIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzEsIDk2LCAyNTIsIDYsIDE1LCA1LCAyMTQsIDE0NywgCisgICAgMTUsIDUsIDIxNCwgMTQ0LCAxNSwgNSwgMjE0LCAxNDMsIDE1LCA1LCAyMTQsIDEzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgNjEsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI1MywgMjI2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMzAsIDE1LCA1LCAyMTQsIAorICAgIDE0MCwgMzAsIDI0NiwgNjgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyNDMsIDExOCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyNDMsIDk2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDIsIDExMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTYyLCAxNSwgNSwgCisgICAgMjE0LCAxNDAsIDMwLCAyMzYsIDM1LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAKKyAgICAyMzUsIDE2NSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjMyLCA4NCwgMTUsIAorICAgIDUsIDIxNCwgMTQwLCAzMCwgMjMwLCAxODgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE5MCwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjIwLCA2MywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE5LCAxODAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNSwgMTE4LCAKKyAgICAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMDQsIDk2LCAyNDIsIDEwMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzcsIDE1LCA1LCAyMTQsIDEzOCwgMzAsIDcwLCAKKyAgICAxNSwgNSwgMjE0LCAxMjYsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDYxLCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMzMsIDIxNywgCisgICAgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMTQsIAorICAgIDEyMiwgMTUsIDUsIDIxNCwgMTI1LCAxNSwgNSwgMjE0LCAxMjMsIDE1LCA1LCAyMTQsIDExOSwgMTUsIDUsIDIxNCwgMTA4LCAKKyAgICAxNSwgNSwgMjE0LCAxMDksIDMwLCAyMzQsIDIwNywgMTUsIDUsIDIxNCwgMTA3LCAxNSwgNSwgMjEwLCAxMTYsIDE1LCA1LCAKKyAgICAyMTAsIDExNywgMjE2LCAyMzksIDE1LCA1LCAyMTAsIDExNywgOTIsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIxMCwgMTEzLCAKKyAgICAxNSwgNSwgMjEwLCAxMDYsIDE1LCA1LCAyMTAsIDkzLCAxNSwgNSwgMjEwLCA0NCwgMTUsIDUsIDIxMCwgNDUsIDExNywgCisgICAgMjEwLCA0NCwgMTUsIDUsIDIxMCwgNDMsIDE1LCA1LCAyMTAsIDQxLCAxNSwgNSwgMjEwLCA0MiwgMjM1LCAzLCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDIxMCwgMzYsIDE1LCA1LCAyMTAsIDI4LCAxNSwgNSwgMjEwLCAxMywgMTUsIDUsIDIxMCwgMTEsIDE1LCAKKyAgICA1LCAyMTAsIDEyLCAzMCwgNjEsIDE1LCA1LCAyMTAsIDEwLCAxNSwgNSwgMjEwLCA5LCAxNSwgMTMyLCA1LCAxMTMsIDI1MywgCisgICAgMjMxLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTMsIDIzMSwgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIxOSwgMTI1LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjIwLCAKKyAgICAxMjIsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyNTMsIAorICAgIDIzMSwgMTUsIDEzMiwgNSwgMTM0LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjQ3LCAxODcsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODEsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyMCwgCisgICAgMTIyLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjQ3LCAKKyAgICAxODcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDcwLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCA3MCwgMTUsIDEzMiwgNSwgMjE5LCAKKyAgICAxMjUsIDcwLCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgNzAsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCA3MCwgMTUsIDEzMiwgNSwgCisgICAgMjI4LCAyMDAsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDExMywgMjQzLCAzOCwgMTUsIAorICAgIDEzMiwgNSwgMTM0LCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAKKyAgICAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDI0MywgMzgsIAorICAgIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgCisgICAgMTIzLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCAzNSwgMTUsIAorICAgIDEzMiwgNSwgMjQ0LCAxMSwgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTEzLCAKKyAgICAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3OSwgMjE0LCAxMiwgMTcsIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIAorICAgIDIxOSwgMTI1LCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIAorICAgIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMjMsIDIyMCwgNzMsIDE1LCAKKyAgICAxMzIsIDUsIDExMywgMjIwLCA3MywgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDczLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzQsIAorICAgIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMjAsIDczLCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMjAsIDczLCAKKyAgICAxNSwgMTMyLCA1LCAyMjAsIDc5LCAzMCwgMjQzLCAxMTksIDk2LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjIwLCA3OSwgMzAsIAorICAgIDI0MywgMTE5LCA5NiwgMjMwLCAxODgsIDE1LCAxMzIsIDUsIDEyMywgMjUxLCA5NSwgMTUsIDEzMiwgNSwgMTEzLCAyNTEsIAorICAgIDk1LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDEzNCwgMjUxLCA5NiwgMjE0LCAxMiwgMTcsIDE1LCAKKyAgICAxMzIsIDUsIDI0NCwgMTEsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDEzNCwgCisgICAgMjE0LCAxMiwgMjQ0LCAyMCwgMjQ1LCA3NCwgMTUsIDEzMiwgNSwgMTM0LCAyMTQsIDEyLCAyNDQsIDIwLCAyNDUsIDcxLCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIDIxNywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgCisgICAgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTUsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgCisgICAgMjE4LCA2MSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTgsIDI1MywgMTU4LCAxNSwgCisgICAgMTMyLCA1LCAyMTksIDEyNSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjUzLCAyMjgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIAorICAgIDEyLCAyNDQsIDIwLCAyMzYsIDgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDEwLCA2MSwgCisgICAgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMTAsIDI1MywgMTU4LCAxNSwgMTMyLCA1LCAKKyAgICAyNDUsIDE5MywgMjE0LCAxMiwgMjQ0LCAyMCwgMjE0LCAxMjEsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyMTQsIDEyLCAyNDQsIAorICAgIDIwLCAyMTQsIDEyMCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjQsIDE1LCAxMzIsIAorICAgIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDIzLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgCisgICAgMjQ0LCAyMCwgMjM2LCAyMiwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIDI0NCwgMjAsIDIzNiwgMjUsIDYxLCAKKyAgICAxNSwgMTMyLCA1LCAxMTMsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMiwgMjE2LCAyMzksIAorICAgIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUzLCAyMzIsIAorICAgIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjUzLCAyMzIsIDIxNiwgMjM5LCAxNSwgMTMyLCA1LCAxMjMsIDI1MiwgCisgICAgMTUwLCAxNSwgMTMyLCA1LCAxMTMsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAxMzQsIDI1MiwgMTUwLCAxNSwgMTMyLCA1LCAKKyAgICAyNDQsIDExLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUyLCAxNTEsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgxLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjUyLCAxNTEsIDIxNCwgMTIsIDE3LCAxNSwgCisgICAgMTMyLCA1LCAyMjgsIDIxMCwgMTUsIDEzMiwgNSwgMjI4LCAyMTEsIDE1LCAxMzIsIDUsIDEyMywgMjQ1LCA3MCwgMTUsIAorICAgIDEzMiwgNSwgMTEzLCAyNDUsIDcwLCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTY5LCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgCisgICAgMTEzLCAyMTYsIDE2NywgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDIxOSwgMTE0LCAyNDcsIDE4NywgMTUsIAorICAgIDEzMiwgNSwgMTIzLCAyMTYsIDE2OSwgMjE0LCAxMiwgMjQ0LCAyMCwgNjEsIDE1LCAxMzIsIDUsIDExMywgMjE2LCAxNjcsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDYxLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgMTg5LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgCisgICAgMTIzLCAyMjQsIDIyLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgNTUsIDI1MywgMjE5LCAxMjMsIDIxOSwgMTE1LCAxNSwgMTMyLCAKKyAgICA1LCA1NSwgMjUzLCAyMTksIDEyMywgMjI0LCAyMSwgMTUsIDIyNCwgMTQxLCA1LCA1NSwgMjUzLCAyMTksIDIxMSwgMjA5LCAKKyAgICAyNDcsIDE3MiwgMTUsIDIyNCwgMTQxLCA1LCA2NywgMjQ5LCAyMjYsIDE1LCAyMjQsIDE0MSwgNSwgMjQ3LCAyNTUsIDI0OSwgCisgICAgMjI2LCAxNSwgMjI0LCAxNDEsIDUsIDI0NywgMjU1LCAyMTUsIDIyMSwgMTIsIDEzLCAyNTUsIDE1NSwgMTIsIDEzLCAyNTUsIAorICAgIDE1NCwgMTIsIDEzLCAyNTUsIDE1MywgMTIsIDEzLCAyNTUsIDE1MiwgMTIsIDEzLCAyNTUsIDE1MSwgMTIsIDEzLCAyNTUsIAorICAgIDE1MCwgMTIsIDEzLCAyNTUsIDE0OSwgMTIsIDEzLCAyNTUsIDE0OCwgMTIsIDEzLCAyNTUsIDE0NywgMTIsIDEzLCAyNTUsIAorICAgIDE0NiwgMTIsIDEzLCAyNTUsIDE0NSwgMTIsIDEzLCAyNTUsIDE0NCwgMTIsIDEzLCAyNTUsIDE0MywgMTIsIDEzLCAyNTUsIAorICAgIDE0MiwgMTIsIDEzLCAyNTUsIDE0MSwgMTIsIDEzLCAyNTUsIDE0MCwgMTIsIDEzLCAyNTUsIDEzOSwgMTIsIDEzLCAyNTUsIAorICAgIDEzOCwgMTIsIDEzLCAyNTUsIDEzNywgMTIsIDEzLCAyNTUsIDEzNiwgMTIsIDEzLCAyNTUsIDEzNSwgMTIsIDEzLCAyNTUsIAorICAgIDEzNCwgMTIsIDEzLCAyNTUsIDEzMywgMTIsIDEzLCAyNTUsIDEzMiwgMTIsIDEzLCAyNTUsIDEzMSwgMTIsIDEzLCAyNTUsIAorICAgIDEzMCwgMTIsIDEzLCAyNTUsIDEyOSwgMTIsIDEzLCAyNTUsIDEyOCwgMTIsIDEzLCAyNTUsIDEyNywgMTIsIDEzLCAyNTUsIAorICAgIDEyNiwgMTIsIDEzLCAyNTUsIDEyNSwgMTIsIDEzLCAyNTUsIDEyNCwgMTIsIDEzLCAyNTUsIDEyMywgMTIsIDEzLCAyNTUsIAorICAgIDEyMiwgMTIsIDEzLCAyNTUsIDEyMSwgMTIsIDEzLCAyNTUsIDEyMCwgMTIsIDEzLCAyNTUsIDExOSwgMTIsIDEzLCAyNTUsIAorICAgIDExOCwgMTIsIDEzLCAyNTUsIDExNywgMTIsIDEzLCAyNTUsIDExNiwgMTIsIDEzLCAyNTUsIDExNSwgMTIsIDEzLCAyNTUsIAorICAgIDExNCwgMTIsIDEzLCAyNTUsIDExMywgMTIsIDEzLCAyNTUsIDExMiwgMTIsIDEzLCAyNTUsIDExMSwgMTIsIDEzLCAyNTUsIAorICAgIDExMCwgMTIsIDEzLCAyNTUsIDEwOSwgMTIsIDEzLCAyNTUsIDEwOCwgMTIsIDEzLCAyNTUsIDEwNywgMTIsIDEzLCAyNTUsIAorICAgIDEwNiwgMTIsIDEzLCAyNTUsIDEwNSwgMTIsIDEzLCAyNTUsIDEwNCwgMTIsIDEzLCAyNTUsIDEwMywgMTIsIDEzLCAyNTUsIAorICAgIDEwMiwgMTIsIDEzLCAyNTUsIDEwMSwgMTIsIDEzLCAyNTUsIDEwMCwgMTIsIDEzLCAyNTUsIDk5LCAxMiwgMTMsIDI1NSwgCisgICAgOTgsIDEyLCAxMywgMjU1LCA5NywgMTIsIDEzLCAyNTUsIDk2LCAxMiwgMTMsIDI1NSwgOTUsIDEyLCAxMywgMjU1LCA5NCwgCisgICAgMTIsIDEzLCAyNTUsIDkzLCAxMiwgMTMsIDI1NSwgOTIsIDEyLCAxMywgMjU1LCA5MSwgMTIsIDEzLCAyNTUsIDkwLCAxMiwgCisgICAgMTMsIDI1NSwgODksIDEyLCAxMywgMjU1LCA4OCwgMTIsIDEzLCAyNTUsIDg3LCAxMiwgMTMsIDI1NSwgODYsIDEyLCAxMywgCisgICAgMjU1LCA4NSwgMTIsIDEzLCAyNTUsIDg0LCAxMiwgMTMsIDI1NSwgODMsIDEyLCAxMywgMjU1LCA4MiwgMTIsIDEzLCAyNTUsIAorICAgIDgxLCAxMiwgMTMsIDI1NSwgODAsIDEyLCAxMywgMjU1LCA3OSwgMTIsIDEzLCAyNTUsIDc4LCAxMiwgMTMsIDI1NSwgNzcsIAorICAgIDEyLCAxMywgMjU1LCA3NiwgMTIsIDEzLCAyNTMsIDE1NiwgMTIsIDEzLCAyNTMsIDE1NCwgMTIsIDEzLCAyNTMsIDE1MiwgCisgICAgMTIsIDEzLCAyNTMsIDE1MCwgMTIsIDEzLCAyNTMsIDE0OCwgMTIsIDEzLCAyNTMsIDE0NywgMTIsIDEzLCAyNTMsIDE0NSwgCisgICAgMTIsIDEzLCAyNTMsIDE0MywgMTIsIDEzLCAyNTMsIDE0MSwgMTIsIDEzLCAyNTMsIDEzOSwgMTIsIDEzLCAyNTEsIDYyLCAKKyAgICAxMiwgMTMsIDI1MSwgNjEsIDEyLCAxMywgMjUxLCA2MCwgMTIsIDEzLCAyNTEsIDU5LCAxMiwgMTMsIDI1MSwgNTgsIDEyLCAKKyAgICAxMywgMjUxLCA1NywgMTIsIDEzLCAyNTEsIDU2LCAxMiwgMTMsIDI1MSwgNTUsIDEyLCAxMywgMjUxLCA1NCwgMTIsIDEzLCAKKyAgICAyNTEsIDUzLCAxMiwgMTMsIDI1MSwgNTIsIDEyLCAxMywgMjUxLCA1MSwgMTIsIDEzLCAyNTEsIDUwLCAxMiwgMTMsIDI1MSwgCisgICAgNDksIDEyLCAxMywgMjUxLCA0OCwgMTIsIDEzLCAyNTEsIDQ3LCAxMiwgMTMsIDI1MSwgNDYsIDEyLCAxMywgMjUxLCA0NSwgCisgICAgMTIsIDEzLCAyNTEsIDQ0LCAxMiwgMTMsIDI1MSwgNDMsIDEyLCAxMywgMjUxLCA0MiwgMTIsIDEzLCAyNTEsIDQxLCAxMiwgCisgICAgMTMsIDI1MSwgNDAsIDEyLCAxMywgMjUxLCAzOSwgMTIsIDEzLCAyNTEsIDM4LCAxMiwgMTMsIDI1MSwgMzcsIDEyLCAxMywgCisgICAgMjUxLCAzNiwgMTIsIDEzLCAyNTEsIDM1LCAxMiwgMTMsIDI0OSwgNTksIDEyLCAxMywgMjQ5LCA1OCwgMTIsIDEzLCAyNDksIAorICAgIDU3LCAxMiwgMTMsIDI0OSwgNTYsIDEyLCAxMywgMjQ5LCA1NSwgMTIsIDEzLCAyNDksIDU0LCAxMiwgMTMsIDI0OSwgNTMsIAorICAgIDEyLCAxMywgMjQ5LCA1MiwgMTIsIDEzLCAyNDksIDUxLCAxMiwgMTMsIDI0OSwgNTAsIDEyLCAxMywgMjQ5LCA0OSwgMTIsIAorICAgIDEzLCAyNDksIDQ4LCAxMiwgMTMsIDI0OSwgNDcsIDEyLCAxMywgMjQ5LCA0NiwgMTIsIDEzLCAyNDksIDQ1LCAxMiwgMTMsIAorICAgIDI0OSwgNDQsIDEyLCAxMywgMjQ5LCA0MywgMTIsIDEzLCAyNDksIDQyLCAxMiwgMTMsIDI0OSwgNDEsIDEyLCAxMywgMjQ5LCAKKyAgICA0MCwgMTIsIDEzLCAyNDksIDM5LCAxMiwgMTMsIDI0OSwgMzgsIDEyLCAxMywgMjQ5LCAzNywgMTIsIDEzLCAyNDksIDM2LCAKKyAgICAxMiwgMTMsIDI0OSwgMzUsIDEyLCAxMywgMjQ5LCAzNCwgMTIsIDEzLCAyNDksIDMzLCAxMiwgMTMsIDI0OSwgMzIsIDEyLCAKKyAgICAxMywgMjQ5LCAzMSwgMTIsIDEzLCAyNDksIDMwLCAxMiwgMTMsIDI0OSwgMjksIDEyLCAxMywgMjQ5LCAyOCwgMTIsIDEzLCAKKyAgICAyNDksIDI3LCAxMiwgMTMsIDI0OSwgMjYsIDEyLCAxMywgMjQ5LCAyNSwgMTIsIDEzLCAyNDksIDI0LCAxMiwgMTMsIDI0OSwgCisgICAgMjMsIDEyLCAxMywgMjQ5LCAyMiwgMTIsIDEzLCAyNDksIDIxLCAxMiwgMTMsIDI0OSwgMjAsIDEyLCAxMywgMjQ5LCAxOSwgCisgICAgMTIsIDEzLCAyNDksIDE4LCAxMiwgMTMsIDI0OSwgMTcsIDEyLCAxMywgMjQ5LCAxNiwgMTIsIDEzLCAyNDksIDE1LCAxMiwgCisgICAgMTMsIDI0OSwgMTQsIDEyLCAxMywgMjQ5LCAxMywgMTIsIDEzLCAyNDksIDEyLCAxMiwgMTMsIDI0OSwgMTEsIDEyLCAxMywgCisgICAgMjQ5LCAxMCwgMTIsIDEzLCAyNDksIDksIDEyLCAxMywgMjQ5LCA4LCAxMiwgMTMsIDI0OSwgNywgMTIsIDEzLCAyNDksIDYsIAorICAgIDEyLCAxMywgMjQ5LCA1LCAxMiwgMTMsIDI0OSwgNCwgMTIsIDEzLCAyNDksIDMsIDEyLCAxMywgMjQ5LCAyLCAxMiwgMTMsIAorICAgIDI0OSwgMSwgMTIsIDEzLCAyNDksIDAsIDEyLCAxMywgMjQ4LCAyNTUsIDEyLCAxMywgMjQ4LCAyNTQsIDEyLCAxMywgMjQ4LCAKKyAgICAyNTMsIDEyLCAxMywgMjQ4LCAyNTIsIDEyLCAxMywgMjQ4LCAyNTEsIDEyLCAxMywgMjQ4LCAyNTAsIDEyLCAxMywgMjQ4LCAKKyAgICAyNDksIDEyLCAxMywgMjQ4LCAyNDgsIDEyLCAxMywgMjQ4LCAyNDcsIDEyLCAxMywgMjQ4LCAyNDYsIDEyLCAxMywgMjQ4LCAKKyAgICAyNDUsIDEyLCAxMywgMjQ4LCAyNDQsIDEyLCAxMywgMjQ4LCAyNDMsIDEyLCAxMywgMjQ4LCAyNDIsIDEyLCAxMywgMjQ4LCAKKyAgICAyNDEsIDEyLCAxMywgMjQ4LCAyNDAsIDEyLCAxMywgMjQ4LCAyMzksIDEyLCAxMywgMjQ4LCAyMzgsIDEyLCAxMywgMjQ4LCAKKyAgICAyMzcsIDEyLCAxMywgMjQ4LCAyMzYsIDEyLCAxMywgMjQ4LCAyMzUsIDEyLCAxMywgMjQ4LCAyMzQsIDEyLCAxMywgMjQ4LCAKKyAgICAyMzMsIDEyLCAxMywgMjQ4LCAyMzIsIDEyLCAxMywgMjQ4LCAyMzEsIDEyLCAxMywgMjQ4LCAyMzAsIDEyLCAxMywgMjQ4LCAKKyAgICAyMjksIDEyLCAxMywgMjQ4LCAyMjgsIDEyLCAxMywgMjQ4LCAyMjcsIDEyLCAxMywgMjQ4LCAyMjYsIDEyLCAxMywgMjQ4LCAKKyAgICAyMjUsIDEyLCAxMywgMjQ4LCAyMjQsIDEyLCAxMywgMjQ2LCAyMywgMTIsIDEzLCAyNDYsIDIyLCAxMiwgMTMsIDI0NiwgMjEsIAorICAgIDEyLCAxMywgMjQ2LCAyMCwgMTIsIDEzLCAyNDYsIDE5LCAxMiwgMTMsIDI0NiwgMTgsIDEyLCAxMywgMjQ2LCAxNywgMTIsIAorICAgIDEzLCAyNDYsIDE2LCAxMiwgMTMsIDI0NiwgMTUsIDEyLCAxMywgMjQ2LCAxNCwgMTIsIDEzLCAyNDYsIDEzLCAxMiwgMTMsIAorICAgIDI0NiwgMTIsIDEyLCAxMywgMjQ2LCAxMSwgMTIsIDEzLCAyNDYsIDEwLCAxMiwgMTMsIDI0NiwgOSwgMTIsIDEzLCAyNDYsIAorICAgIDgsIDEyLCAxMywgMjQ2LCA3LCAxMiwgMTMsIDI0NiwgNiwgMTIsIDEzLCAyNDYsIDUsIDEyLCAxMywgMjQ2LCA0LCAxMiwgCisgICAgMTMsIDI0NiwgMywgMTIsIDEzLCAyNDYsIDIsIDEyLCAxMywgMjQ2LCAxLCAxMiwgMTMsIDI0NiwgMCwgMTIsIDEzLCAyNDUsIAorICAgIDI1NSwgMTIsIDEzLCAyNDUsIDI1NCwgMTIsIDEzLCAyNDUsIDI1MywgMTIsIDEzLCAyNDUsIDI1MiwgMTIsIDEzLCAyNDUsIAorICAgIDI1MSwgMTIsIDEzLCAyNDUsIDI1MCwgMTIsIDEzLCAyNDUsIDI0OSwgMTIsIDEzLCAyNDUsIDI0OCwgMTIsIDEzLCAyNDUsIAorICAgIDI0NywgMTIsIDEzLCAyNDUsIDI0NiwgMTIsIDEzLCAyNDUsIDI0NSwgMTIsIDEzLCAyNDUsIDI0NCwgMTIsIDEzLCAyNDUsIAorICAgIDI0MywgMTIsIDEzLCAyNDUsIDI0MiwgMTIsIDEzLCAyNDUsIDI0MSwgMTIsIDEzLCAyNDUsIDI0MCwgMTIsIDEzLCAyNDUsIAorICAgIDIzOSwgMTIsIDEzLCAyNDUsIDIzOCwgMTIsIDEzLCAyNDUsIDIzNywgMTIsIDEzLCAyNDUsIDIzNiwgMTIsIDEzLCAyNDUsIAorICAgIDUsIDEyLCAxMywgMjQ1LCA0LCAxMiwgMTMsIDI0NSwgMywgMTIsIDEzLCAyNDUsIDIsIDEyLCAxMywgMjQ1LCAxLCAxMiwgCisgICAgMTMsIDI0NSwgMCwgMTIsIDEzLCAyNDQsIDI1NSwgMTIsIDEzLCAyNDQsIDI1NCwgMTIsIDEzLCAyNDQsIDI1MywgMTIsIDEzLCAKKyAgICAyNDQsIDI1MiwgMTIsIDEzLCAyNDQsIDI1MSwgMTIsIDEzLCAyNDQsIDI1MCwgMTIsIDEzLCAyNDQsIDI0OSwgMTIsIDEzLCAKKyAgICAyNDQsIDI0OCwgMTIsIDEzLCAyNDQsIDI0NywgMTIsIDEzLCAyNDQsIDI0NiwgMTIsIDEzLCAyNDQsIDI0NSwgMTIsIDEzLCAKKyAgICAyNDQsIDI0NCwgMTIsIDEzLCAyNDQsIDI0MywgMTIsIDEzLCAyNDQsIDI0MiwgMTIsIDEzLCAyNDQsIDI0MSwgMTIsIDEzLCAKKyAgICAyNDQsIDI0MCwgMTIsIDEzLCAyNDQsIDIzOSwgMTIsIDEzLCAyNDQsIDIzOCwgMTIsIDEzLCAyNDQsIDIzNywgMTIsIDEzLCAKKyAgICAyNDQsIDIzNiwgMTIsIDEzLCAyNDQsIDIzNSwgMTIsIDEzLCAyNDQsIDIzNCwgMTIsIDEzLCAyNDQsIDIzMywgMTIsIDEzLCAKKyAgICAyNDQsIDIzMiwgMTIsIDEzLCAyNDQsIDIzMSwgMTIsIDEzLCAyNDQsIDIzMCwgMTIsIDEzLCAyNDQsIDIyOSwgMTIsIDEzLCAKKyAgICAyNDQsIDIyOCwgMTIsIDEzLCAyNDQsIDIyNywgMTIsIDEzLCAyNDQsIDIyNiwgMTIsIDEzLCAyNDQsIDIyNSwgMTIsIDEzLCAKKyAgICAyNDQsIDIyNCwgMTIsIDEzLCAyNDQsIDIyMywgMTIsIDEzLCAyNDQsIDIyMiwgMTIsIDEzLCAyNDQsIDIyMSwgMTIsIDEzLCAKKyAgICAyNDQsIDIyMCwgMTIsIDEzLCAyNDQsIDIxOSwgMTIsIDEzLCAyNDQsIDIxOCwgMTIsIDEzLCAyNDQsIDIxNywgMTIsIDEzLCAKKyAgICAyNDQsIDIxNiwgMTIsIDEzLCAyNDQsIDIxNSwgMTIsIDEzLCAyNDQsIDIxNCwgMTIsIDEzLCAyNDQsIDIxMywgMTIsIDEzLCAKKyAgICAyNDQsIDIxMiwgMTIsIDEzLCAyNDQsIDIxMSwgMTIsIDEzLCAyNDQsIDIxMCwgMTIsIDEzLCAyNDQsIDIwOSwgMTIsIDEzLCAKKyAgICAyNDQsIDIwOCwgMTIsIDEzLCAyNDQsIDIwNywgMTIsIDEzLCAyNDQsIDIwNiwgMTIsIDEzLCAyNDQsIDIwNSwgMTIsIDEzLCAKKyAgICAyNDQsIDIwNCwgMTIsIDEzLCAyNDQsIDIwMywgMTIsIDEzLCAyNDQsIDIwMiwgMTIsIDEzLCAyNDQsIDIwMSwgMTIsIDEzLCAKKyAgICAyNDQsIDIwMCwgMTIsIDEzLCAyNDQsIDE5OSwgMTIsIDEzLCAyNDQsIDE5OCwgMTIsIDEzLCAyNDQsIDE5NywgMTIsIDEzLCAKKyAgICAyNDMsIDIwMSwgMTIsIDEzLCAyNDMsIDIwMCwgMTIsIDEzLCAyNDMsIDE5OSwgMTIsIDEzLCAyNDMsIDE5OCwgMTIsIDEzLCAKKyAgICAyNDMsIDE5NywgMTIsIDEzLCAyNDMsIDE5NiwgMTIsIDEzLCAyNDMsIDE5NSwgMTIsIDEzLCAyNDMsIDE5NCwgMTIsIDEzLCAKKyAgICAyNDMsIDE5MywgMTIsIDEzLCAyNDMsIDE5MiwgMTIsIDEzLCAyNDMsIDE5MSwgMTIsIDEzLCAyNDMsIDE5MCwgMTIsIDEzLCAKKyAgICAyNDMsIDE4OSwgMTIsIDEzLCAyNDMsIDE4OCwgMTIsIDEzLCAyNDMsIDE4NywgMTIsIDEzLCAyNDMsIDE4NiwgMTIsIDEzLCAKKyAgICAyNDMsIDE4NSwgMTIsIDEzLCAyNDMsIDE4NCwgMTIsIDEzLCAyNDMsIDE4MywgMTIsIDEzLCAyNDMsIDE4MiwgMTIsIDEzLCAKKyAgICAyNDMsIDE4MSwgMTIsIDEzLCAyNDMsIDE4MCwgMTIsIDEzLCAyNDMsIDE3OSwgMTIsIDEzLCAyNDMsIDE3OCwgMTIsIDEzLCAKKyAgICAyNDMsIDE3NywgMTIsIDEzLCAyNDMsIDE3NiwgMTIsIDEzLCAyNDMsIDE3NSwgMTIsIDEzLCAyNDMsIDE3NCwgMTIsIDEzLCAKKyAgICAyNDMsIDE3MywgMTIsIDEzLCAyNDMsIDE3MiwgMTIsIDEzLCAyNDMsIDE3MSwgMTIsIDEzLCAyNDMsIDE3MCwgMTIsIDEzLCAKKyAgICAyNDMsIDE2OSwgMTIsIDEzLCAyNDMsIDE2OCwgMTIsIDEzLCAyNDMsIDE2NywgMTIsIDEzLCAyNDMsIDE2NiwgMTIsIDEzLCAKKyAgICAyNDMsIDE2NSwgMTIsIDEzLCAyNDMsIDE2NCwgMTIsIDEzLCAyNDMsIDE2MywgMTIsIDEzLCAyNDMsIDE2MiwgMTIsIDEzLCAKKyAgICAyNDMsIDE2MSwgMTIsIDEzLCAyNDMsIDE2MCwgMTIsIDEzLCAyNDMsIDE1OSwgMTIsIDEzLCAyNDMsIDE1OCwgMTIsIDEzLCAKKyAgICAyNDMsIDE1NywgMTIsIDEzLCAyNDMsIDE1NiwgMTIsIDEzLCAyNDMsIDE1NSwgMTIsIDEzLCAyNDMsIDE1NCwgMTIsIDEzLCAKKyAgICAyNDMsIDE1MywgMTIsIDEzLCAyNDMsIDE1MiwgMTIsIDEzLCAyNDMsIDE1MSwgMTIsIDEzLCAyNDMsIDE1MCwgMTIsIDEzLCAKKyAgICAyNDMsIDE0OSwgMTIsIDEzLCAyNDMsIDE0OCwgMTIsIDEzLCAyNDMsIDE0NywgMTIsIDEzLCAyNDMsIDE0NiwgMTIsIDEzLCAKKyAgICAyNDMsIDE0NSwgMTIsIDEzLCAyNDMsIDE0NCwgMTIsIDEzLCAyNDMsIDE0MywgMTIsIDEzLCAyNDMsIDE0MiwgMTIsIDEzLCAKKyAgICAyNDMsIDE0MSwgMTIsIDEzLCAyNDMsIDE0MCwgMTIsIDEzLCAyNDMsIDEzOSwgMTIsIDEzLCAyNDMsIDEzOCwgMTIsIDEzLCAKKyAgICAyNDIsIDU4LCAxMiwgMTMsIDI0MiwgNTcsIDEyLCAxMywgMjQyLCA1NiwgMTIsIDEzLCAyNDIsIDU1LCAxMiwgMTMsIDI0MiwgCisgICAgNTQsIDEyLCAxMywgMjQyLCA1MywgMTIsIDEzLCAyNDIsIDUyLCAxMiwgMTMsIDI0MiwgNTEsIDEyLCAxMywgMjQyLCA1MCwgCisgICAgMTIsIDEzLCAyNDAsIDEzOCwgMTIsIDEzLCAyNDAsIDEzNywgMTIsIDEzLCAyNDAsIDEzNiwgMTIsIDEzLCAyNDAsIDEzNSwgCisgICAgMTIsIDEzLCAyNDAsIDEzNCwgMTIsIDEzLCAyNDAsIDEzMywgMTIsIDEzLCAyNDAsIDEzMiwgMTIsIDEzLCAyNDAsIDEzMSwgCisgICAgMTIsIDEzLCAyNDAsIDEzMCwgMTIsIDEzLCAyNDAsIDEyOSwgMTIsIDEzLCAyNDAsIDEyOCwgMTIsIDEzLCAyNDAsIDEyNywgCisgICAgMTIsIDEzLCAyNDAsIDEyNiwgMTIsIDEzLCAyNDAsIDEyNSwgMTIsIDEzLCAyNDAsIDEyNCwgMTIsIDEzLCAyNDAsIDEyMywgCisgICAgMTIsIDEzLCAyNDAsIDEyMiwgMTIsIDEzLCAyNDAsIDEyMSwgMTIsIDEzLCAyNDAsIDEyMCwgMTIsIDEzLCAyMzUsIDIyLCAKKyAgICAxMiwgMTMsIDIzNSwgMjEsIDEyLCAxMywgMjM1LCAyMCwgMTIsIDEzLCAyMzUsIDE5LCAxMiwgMTMsIDIzNSwgMTgsIDEyLCAKKyAgICAxMywgMjM1LCAxNywgMTIsIDEzLCAyMzUsIDE2LCAxMiwgMTMsIDIzNSwgMTUsIDEyLCAxMywgMjMzLCAxNDYsIDEyLCAxMywgCisgICAgMjMzLCAxNDUsIDEyLCAxMywgMjMzLCAxNDQsIDEyLCAxMywgMjMzLCAxNDMsIDEyLCAxMywgMjMzLCAxNDIsIDEyLCAxMywgCisgICAgMjMzLCAxNDEsIDEyLCAxMywgMjMzLCAxNDAsIDEyLCAxMywgMjMzLCAxMzksIDEyLCAxMywgMjMzLCAxMzgsIDEyLCAxMywgCisgICAgMjMzLCAxMzcsIDEyLCAxMywgMjMyLCA0OSwgMTIsIDEzLCAyMzIsIDQ4LCAxMiwgMTMsIDIzMiwgNDcsIDEyLCAxMywgMjMyLCAKKyAgICA0NiwgMTIsIDEzLCAyMzIsIDQ1LCAxMiwgMTMsIDIzMiwgNDQsIDEyLCAxMywgMjMyLCA0MywgMTIsIDEzLCAyMzIsIDQyLCAKKyAgICAxMiwgMTMsIDIzMiwgNDEsIDEyLCAxMywgMjMyLCA0MCwgMTIsIDEzLCAyMzIsIDM5LCAxMiwgMTMsIDIzMiwgMzgsIDEyLCAKKyAgICAxMywgMjMyLCAzNywgMTIsIDEzLCAyMzIsIDM2LCAxMiwgMTMsIDIzMiwgMzUsIDEyLCAxMywgMjMyLCAzNCwgMTIsIDEzLCAKKyAgICAyMzIsIDMzLCAxMiwgMTMsIDIzMiwgMzIsIDEyLCAxMywgMjMyLCAzMSwgMTIsIDEzLCAyMzIsIDMwLCAxMiwgMTMsIDIzMiwgCisgICAgMjksIDEyLCAxMywgMjMyLCAyOCwgMTIsIDEzLCAyMzIsIDI3LCAxMiwgMTMsIDIzMiwgMjYsIDEyLCAxMywgMjMyLCAyNSwgCisgICAgMTIsIDEzLCAyMzIsIDI0LCAxMiwgMTMsIDIzMiwgMjMsIDEyLCAxMywgMjMyLCAyMiwgMTIsIDEzLCAyMzIsIDIxLCAxMiwgCisgICAgMTMsIDIzMiwgMjAsIDEyLCAxMywgMjMyLCAxOSwgMTIsIDEzLCAyMzIsIDE4LCAxMiwgMTMsIDIzMiwgMTcsIDEyLCAxMywgCisgICAgMjMyLCAxNiwgMTIsIDEzLCAyMzIsIDE1LCAxMiwgMTMsIDIzMiwgMTQsIDEyLCAxMywgMjMyLCAxMywgMTIsIDEzLCAyMzIsIAorICAgIDEyLCAxMiwgMTMsIDIzMiwgMTEsIDEyLCAxMywgMjMyLCAxMCwgMTIsIDEzLCAyMzIsIDksIDEyLCAxMywgMjMyLCA4LCAxMiwgCisgICAgMTMsIDIzMiwgNywgMTIsIDEzLCAyMzIsIDYsIDEyLCAxMywgMjMyLCA1LCAxMiwgMTMsIDIzMiwgNCwgMTIsIDEzLCAyMzIsIAorICAgIDMsIDEyLCAxMywgMjMyLCAyLCAxMiwgMTMsIDIzMiwgMSwgMTIsIDEzLCAyMzIsIDAsIDEyLCAxMywgMjMxLCAyNTUsIDEyLCAKKyAgICAxMywgMjMxLCAyNTQsIDEyLCAxMywgMjMxLCAyNTMsIDEyLCAxMywgMjMxLCAyNTIsIDEyLCAxMywgMjMxLCAyNTEsIDEyLCAKKyAgICAxMywgMjMxLCAyNTAsIDEyLCAxMywgMjMxLCAyNDksIDEyLCAxMywgMjMxLCAyNDgsIDEyLCAxMywgMjMxLCAyNDcsIDEyLCAKKyAgICAxMywgMjMxLCAyNDYsIDEyLCAxMywgMjMxLCAyNDUsIDEyLCAxMywgMjMxLCAyNDQsIDEyLCAxMywgMjMxLCAyNDMsIDEyLCAKKyAgICAxMywgMjMxLCAyNDIsIDEyLCAxMywgMjMxLCAyNDEsIDEyLCAxMywgMjMxLCAyNDAsIDEyLCAxMywgMjMwLCAyMiwgMTIsIAorICAgIDEzLCAyMzAsIDIxLCAxMiwgMTMsIDIzMCwgMjAsIDEyLCAxMywgMjMwLCAxOSwgMTIsIDEzLCAyMzAsIDE4LCAxMiwgMTMsIAorICAgIDIzMCwgMTcsIDEyLCAxMywgMjMwLCAxNiwgMTIsIDEzLCAyMzAsIDE1LCAxMiwgMTMsIDIzMCwgMTQsIDEyLCAxMywgMjMwLCAKKyAgICAxMywgMTIsIDEzLCAyMzAsIDEyLCAxMiwgMTMsIDIzMCwgMTEsIDEyLCAxMywgMjMwLCAxMCwgMTIsIDEzLCAyMzAsIDksIAorICAgIDEyLCAxMywgMjMwLCA4LCAxMiwgMTMsIDIzMCwgNywgMTIsIDEzLCAyMzAsIDYsIDEyLCAxMywgMjMwLCA1LCAxMiwgMTMsIAorICAgIDIzMCwgNCwgMTIsIDEzLCAyMzAsIDMsIDEyLCAxMywgMjMwLCAyLCAxMiwgMTMsIDIzMCwgMSwgMTIsIDEzLCAyMzAsIDAsIAorICAgIDEyLCAxMywgMjI5LCAyNTUsIDEyLCAxMywgMjI5LCAyNTQsIDEyLCAxMywgMjI5LCAyNTMsIDEyLCAxMywgMjI5LCAyNTIsIAorICAgIDEyLCAxMywgMjI5LCAyNTEsIDEyLCAxMywgMjI5LCAyNTAsIDEyLCAxMywgMjI5LCAyNDksIDEyLCAxMywgMjI5LCAyNDgsIAorICAgIDEyLCAxMywgMjI5LCAyNDcsIDEyLCAxMywgMjI5LCAyNDYsIDEyLCAxMywgMjI5LCAyNDUsIDEyLCAxMywgMjI5LCAyNDQsIAorICAgIDEyLCAxMywgMjI5LCAyNDMsIDEyLCAxMywgMjI5LCAyNDIsIDEyLCAxMywgMjI5LCAyNDEsIDEyLCAxMywgMjI5LCAyNDAsIAorICAgIDEyLCAxMywgMjI5LCAyMzksIDEyLCAxMywgMjI5LCAyMzgsIDEyLCAxMywgMjI5LCAyMzcsIDEyLCAxMywgMjI5LCAyMzYsIAorICAgIDEyLCAxMywgMjI5LCAyMzUsIDEyLCAxMywgMjI5LCAyMzQsIDEyLCAxMywgMjI5LCAyMzMsIDEyLCAxMywgMjI5LCAyMzIsIAorICAgIDEyLCAxMywgMjI5LCAyMzEsIDEyLCAxMywgMjI5LCAyMzAsIDEyLCAxMywgMjI4LCAxMzQsIDEyLCAxMywgMjI4LCAxMzMsIAorICAgIDEyLCAxMywgMjI4LCAxMzIsIDEyLCAxMywgMjI4LCAxMzEsIDEyLCAxMywgMjI4LCAxMzAsIDEyLCAxMywgMjI4LCAxMjksIAorICAgIDEyLCAxMywgMjI4LCAxMjgsIDEyLCAxMywgMjI4LCAxMjcsIDEyLCAxMywgMjI4LCAxMjYsIDEyLCAxMywgMjI4LCAxMjUsIAorICAgIDEyLCAxMywgMjI4LCAxMjQsIDEyLCAxMywgMjI4LCAxMjMsIDEyLCAxMywgMjI4LCAxMjIsIDEyLCAxMywgMjI4LCAxMjEsIAorICAgIDEyLCAxMywgMjI4LCAxMjAsIDEyLCAxMywgMjI4LCAxMTksIDEyLCAxMywgMjI4LCAxMTgsIDEyLCAxMywgMjI4LCAxMTcsIAorICAgIDEyLCAxMywgMjI4LCAxMTYsIDEyLCAxMywgMjI4LCAxMTUsIDEyLCAxMywgMjI4LCAxMTQsIDEyLCAxMywgMjI4LCAxMTMsIAorICAgIDEyLCAxMywgMjI3LCAyMzYsIDEyLCAxMywgMjI3LCAyMzUsIDEyLCAxMywgMjI3LCAyMzQsIDEyLCAxMywgMjI3LCAyMzMsIAorICAgIDEyLCAxMywgMjI3LCAyMzIsIDEyLCAxMywgMjI3LCAyMzEsIDEyLCAxMywgMjI3LCAyMzAsIDEyLCAxMywgMjI3LCAyMjksIAorICAgIDEyLCAxMywgMjI3LCAyMjgsIDEyLCAxMywgMjI3LCAyMjcsIDEyLCAxMywgMjI3LCAyMjYsIDEyLCAxMywgMjI3LCAyMjUsIAorICAgIDEyLCAxMywgMjI3LCAyMjQsIDEyLCAxMywgMjI3LCAyMjMsIDEyLCAxMywgMjI3LCAyMjIsIDEyLCAxMywgMjI3LCAyMjEsIAorICAgIDEyLCAxMywgMjI3LCAyMjAsIDEyLCAxMywgMjI3LCAyMTksIDEyLCAxMywgMjI3LCAyMTgsIDEyLCAxMywgMjI3LCAyMTcsIAorICAgIDEyLCAxMywgMjI3LCAyMTYsIDEyLCAxMywgMjI3LCAyMTUsIDEyLCAxMywgMjI3LCAyMTQsIDEyLCAxMywgMjI3LCAyMTMsIAorICAgIDEyLCAxMywgMjI3LCAyMTIsIDEyLCAxMywgMjI3LCAyMTEsIDEyLCAxMywgMjI3LCA3NiwgMTIsIDEzLCAyMjcsIDc1LCAxMiwgCisgICAgMTMsIDIyNywgNzQsIDEyLCAxMywgMjI3LCA3MywgMTIsIDEzLCAyMjcsIDcyLCAxMiwgMTMsIDIyNywgNzEsIDEyLCAxMywgCisgICAgMjI3LCA3MCwgMTIsIDEzLCAyMjcsIDY5LCAxMiwgMTMsIDIyNywgNjgsIDEyLCAxMywgMjI3LCA2NywgMTIsIDEzLCAyMjcsIAorICAgIDY2LCAxMiwgMTMsIDIyNywgNjUsIDEyLCAxMywgMjI3LCA2NCwgMTIsIDEzLCAyMjcsIDYzLCAxMiwgMTMsIDIyNywgNjIsIAorICAgIDEyLCAxMywgMjI3LCA2MSwgMTIsIDEzLCAyMjcsIDYwLCAxMiwgMTMsIDIyNywgNTksIDEyLCAxMywgMjI3LCA1OCwgMTIsIAorICAgIDEzLCAyMjcsIDU3LCAxMiwgMTMsIDIyNywgNTYsIDEyLCAxMywgMjI3LCA1NSwgMTIsIDEzLCAyMjcsIDU0LCAxMiwgMTMsIAorICAgIDIyNywgNTMsIDEyLCAxMywgMjI3LCA1MiwgMTIsIDEzLCAyMjcsIDUxLCAxMiwgMTMsIDIyNywgNTAsIDEyLCAxMywgMjI3LCAKKyAgICA0OSwgMTIsIDEzLCAyMjcsIDQ4LCAxMiwgMTMsIDIyNywgNDcsIDEyLCAxMywgMjI3LCA0NiwgMTIsIDEzLCAyMjcsIDQ1LCAKKyAgICAxMiwgMTMsIDIyNywgNDQsIDEyLCAxMywgMjI3LCA0MywgMTIsIDEzLCAyMjcsIDQyLCAxMiwgMTMsIDIyNywgNDEsIDEyLCAKKyAgICAxMywgMjI3LCA0MCwgMTIsIDEzLCAyMjcsIDM5LCAxMiwgMTMsIDIyNywgMzgsIDEyLCAxMywgMjI3LCAzNywgMTIsIDEzLCAKKyAgICAyMjcsIDM2LCAxMiwgMTMsIDIyNywgMzUsIDEyLCAxMywgMjI3LCAzNCwgMTIsIDEzLCAyMjcsIDMzLCAxMiwgMTMsIDIyNywgCisgICAgMzIsIDEyLCAxMywgMjI3LCAzMSwgMTIsIDEzLCAyMjcsIDMwLCAxMiwgMTMsIDIyNywgMjksIDEyLCAxMywgMjI3LCAyOCwgCisgICAgMTIsIDEzLCAyMjcsIDI3LCAxMiwgMTMsIDIyNywgMjYsIDEyLCAxMywgMjI3LCAyNSwgMTIsIDEzLCAyMjcsIDI0LCAxMiwgCisgICAgMTMsIDIyNywgMjMsIDEyLCAxMywgMjI3LCAyMiwgMTIsIDEzLCAyMjcsIDIxLCAxMiwgMTMsIDIyNywgMjAsIDEyLCAxMywgCisgICAgMjI3LCAxOSwgMTIsIDEzLCAyMjcsIDE4LCAxMiwgMTMsIDIyNywgMTcsIDEyLCAxMywgMjI3LCAxNiwgMTIsIDEzLCAyMjcsIAorICAgIDE1LCAxMiwgMTMsIDIyNywgMTQsIDEyLCAxMywgMjI3LCAxMywgMTIsIDEzLCAyMjcsIDEyLCAxMiwgMTMsIDIyNywgMTEsIAorICAgIDEyLCAxMywgMjI3LCAxMCwgMTIsIDEzLCAyMjcsIDksIDEyLCAxMywgMjI3LCA4LCAxMiwgMTMsIDIyNywgNywgMTIsIDEzLCAKKyAgICAyMjcsIDYsIDEyLCAxMywgMjI3LCA1LCAxMiwgMTMsIDIyNywgNCwgMTIsIDEzLCAyMjcsIDMsIDEyLCAxMywgMjI3LCAyLCAKKyAgICAxMiwgMTMsIDIyNiwgMTA0LCAxMiwgMTMsIDIyNiwgMTAzLCAxMiwgMTMsIDIyNiwgMTAyLCAxMiwgMTMsIDIyNiwgMTAxLCAKKyAgICAxMiwgMTMsIDIyNiwgMTAwLCAxMiwgMTMsIDIyNiwgOTksIDEyLCAxMywgMjI2LCA5OCwgMTIsIDEzLCAyMjYsIDk3LCAxMiwgCisgICAgMTMsIDIyNiwgOTYsIDEyLCAxMywgMjI2LCA5NSwgMTIsIDEzLCAyMjYsIDk0LCAxMiwgMTMsIDIyNiwgOTMsIDEyLCAxMywgCisgICAgMjI2LCA5MiwgMTIsIDEzLCAyMjQsIDk1LCAxMiwgMTMsIDIyNCwgOTQsIDEyLCAxMywgMjI0LCA5MywgMTIsIDEzLCAyMjQsIAorICAgIDkyLCAxMiwgMTMsIDIyNCwgOTEsIDEyLCAxMywgMjI0LCA5MCwgMTIsIDEzLCAyMjQsIDg5LCAxMiwgMTMsIDIyMywgMjIyLCAKKyAgICAxMiwgMTMsIDIyMywgMjIxLCAxMiwgMTMsIDIyMywgMjIwLCAxMiwgMTMsIDIyMywgMjE5LCAxMiwgMTMsIDIyMywgMjE4LCAKKyAgICAxMiwgMTMsIDIyMywgMjE3LCAxMiwgMTMsIDIyMywgMjE2LCAxMiwgMTMsIDIyMywgMjE1LCAxMiwgMTMsIDIyMywgMjE0LCAKKyAgICAxMiwgMTMsIDIyMywgMjEzLCAxMiwgMTMsIDIyMywgMjEyLCAxMiwgMTMsIDIyMywgMjExLCAxMiwgMTMsIDIyMywgMjEwLCAKKyAgICAxMiwgMTMsIDIyMywgMjA5LCAxMiwgMTMsIDIyMywgMjA4LCAxMiwgMTMsIDIyMywgMjA3LCAxMiwgMTMsIDIyMywgMjA2LCAKKyAgICAxMiwgMTMsIDIyMywgMjA1LCAxMiwgMTMsIDIyMywgMjA0LCAxMiwgMTMsIDIyMywgMjAzLCAxMiwgMTMsIDIyMywgMjAyLCAKKyAgICAxMiwgMTMsIDIyMywgMjAxLCAxMiwgMTMsIDIyMywgMjAwLCAxMiwgMTMsIDIyMywgMTk5LCAxMiwgMTMsIDIyMywgMTk4LCAKKyAgICAxMiwgMTMsIDIyMywgMTk3LCAxMiwgMTMsIDIyMywgMTk2LCAxMiwgMTMsIDIyMywgMTk1LCAxMiwgMTMsIDIyMywgMTk0LCAKKyAgICAxMiwgMTMsIDIyMywgMTkzLCAxMiwgMTMsIDIyMywgMTkyLCAxMiwgMTMsIDIyMywgMTkxLCAxMiwgMTMsIDIyMywgMTkwLCAKKyAgICAxMiwgMTMsIDIyMywgMTg5LCAxMiwgMTMsIDIyMiwgODgsIDEyLCAxMywgMjIyLCA4NywgMTIsIDEzLCAyMjIsIDg2LCAxMiwgCisgICAgMTMsIDIyMiwgODUsIDEyLCAxMywgMjIyLCA4NCwgMTIsIDEzLCAyMjIsIDgzLCAxMiwgMTMsIDIyMiwgODIsIDEyLCAxMywgCisgICAgMjIyLCA4MSwgMTIsIDEzLCAyMjIsIDgwLCAxMiwgMTMsIDIyMiwgNzksIDEyLCAxMywgMjIyLCA3OCwgMTIsIDEzLCAyMjIsIAorICAgIDc3LCAxMiwgMTMsIDIyMiwgNzYsIDEyLCAxMywgMjIyLCA3NSwgMTIsIDEzLCAyMjIsIDc0LCAxMiwgMTMsIDIyMiwgNzMsIAorICAgIDEyLCAxMywgMjIyLCA3MiwgMTIsIDEzLCAyMjIsIDcxLCAxMiwgMTMsIDIyMiwgNzAsIDEyLCAxMywgMjIyLCA2OSwgMTIsIAorICAgIDEzLCAyMjIsIDY4LCAxMiwgMTMsIDIyMiwgNjcsIDEyLCAxMywgMjIyLCA2NiwgMTIsIDEzLCAyMjIsIDY1LCAxMiwgMTMsIAorICAgIDIyMiwgNjQsIDEyLCAxMywgMjIyLCA2MywgMTIsIDEzLCAyMjIsIDYyLCAxMiwgMTMsIDIyMiwgNjEsIDEyLCAxMywgMjIyLCAKKyAgICA2MCwgMTIsIDEzLCAyMjIsIDU5LCAxMiwgMTMsIDIyMiwgNTgsIDEyLCAxMywgMjIyLCA1NywgMTIsIDEzLCAyMjIsIDU2LCAKKyAgICAxMiwgMTMsIDIyMiwgNTUsIDEyLCAxMywgMjIyLCA1NCwgMTIsIDEzLCAyMjIsIDUzLCAxMiwgMTMsIDIyMiwgNTIsIDEyLCAKKyAgICAxMywgMjIyLCA1MSwgMTIsIDEzLCAyMjIsIDUwLCAxMiwgMTMsIDIyMiwgNDksIDEyLCAxMywgMjIyLCA0OCwgMTIsIDEzLCAKKyAgICAyMjIsIDQ3LCAxMiwgMTMsIDIyMiwgNDYsIDEyLCAxMywgMjIyLCA0NSwgMTIsIDEzLCAyMjIsIDQ0LCAxMiwgMTMsIDIyMiwgCisgICAgNDMsIDEyLCAxMywgMjIyLCA0MiwgMTIsIDEzLCAyMjIsIDQxLCAxMiwgMTMsIDIyMiwgNDAsIDEyLCAxMywgMjIyLCAzOSwgCisgICAgMTIsIDEzLCAyMjIsIDM4LCAxMiwgMTMsIDIyMiwgMzcsIDEyLCAxMywgMjIyLCAzNiwgMTIsIDEzLCAyMjIsIDM1LCAxMiwgCisgICAgMTMsIDIxNywgMTUwLCAxMiwgMTMsIDIxNywgMTQ5LCAxMiwgMTMsIDIxNywgMTQ4LCAxMiwgMTMsIDIxNywgMTQ3LCAxMiwgCisgICAgMTMsIDIxNywgMTQ2LCAxMiwgMTMsIDIxNywgMTQ1LCAxMiwgMTMsIDIxNywgMTQ0LCAxMiwgMTMsIDIxNywgMTQzLCAxMiwgCisgICAgMTMsIDIxNywgMTQyLCAxMiwgMTMsIDIxNywgMTQxLCAxMiwgMTMsIDIxNywgMTQwLCAxMiwgMTMsIDIxNywgMTM5LCAxMiwgCisgICAgMTMsIDIxNywgMTM4LCAxMiwgMTMsIDIxNywgMTM3LCAxMiwgMTMsIDIxNywgMTM2LCAxMiwgMTMsIDIxNywgMTM1LCAxMiwgCisgICAgMTMsIDIxNywgMTM0LCAxMiwgMTMsIDIxNywgMTMzLCAxMiwgMTMsIDIxNywgMTMyLCAxMiwgMTMsIDIxNywgMTMxLCAxMiwgCisgICAgMTMsIDIxNywgMTMwLCAxMiwgMTMsIDIxNywgMTI5LCAxMiwgMTMsIDIxNywgMTI4LCAxMiwgMTMsIDIxNywgMTI3LCAxMiwgCisgICAgMTMsIDIxNywgMTI2LCAxMiwgMTMsIDIxNywgMTI1LCAxMiwgMTMsIDIxNywgMTI0LCAxMiwgMTMsIDIxNywgMTIzLCAxMiwgCisgICAgMTMsIDIxNywgMTIyLCAxMiwgMTMsIDIxNywgMTIxLCAxMiwgMTMsIDIxNywgMTIwLCAxMiwgMTMsIDIxNywgMTE5LCAxMiwgCisgICAgMTMsIDIxNywgMTE4LCAxMiwgMTMsIDIxNywgMTE3LCAxMiwgMTMsIDIxNywgMTE2LCAxMiwgMTMsIDIxNywgMTE1LCAxMiwgCisgICAgMTMsIDIxNywgMTE0LCAxMiwgMTMsIDIxNywgMTEzLCAxMiwgMTMsIDIxNywgMTEyLCAxMiwgMTMsIDIxNywgMTExLCAxMiwgCisgICAgMTMsIDIxNywgMTEwLCAxMiwgMTMsIDIxNywgMTA5LCAxMiwgMTMsIDIxNywgMTA4LCAxMiwgMTMsIDIxNywgMTA3LCAxMiwgCisgICAgMTMsIDIxNSwgMjIsIDEyLCAxMywgMjE1LCAyMSwgMTIsIDEzLCAyMTUsIDIwLCAxMiwgMTMsIDIxNSwgMTksIDEyLCAxMywgCisgICAgMjE1LCAxOCwgMTIsIDEzLCAyMTUsIDE3LCAxMiwgMTMsIDIxNSwgMTYsIDEyLCAxMywgMjE1LCAxNSwgMTIsIDEzLCAyMTUsIAorICAgIDE0LCAxMiwgMTMsIDIxNSwgMTMsIDEyLCAxMywgMjE1LCAxMiwgMTIsIDEzLCAyMTUsIDExLCAxMiwgMTMsIDIxNSwgMTAsIAorICAgIDEyLCAxMywgMjE1LCA5LCAxMiwgMTMsIDIxNSwgOCwgMTIsIDEzLCAyMTUsIDcsIDEyLCAxMywgMjE1LCA2LCAxMiwgMTMsIAorICAgIDIxNSwgNSwgMTIsIDEzLCAyMTUsIDQsIDEyLCAxMywgMjE1LCAzLCAxMiwgMTMsIDIxNSwgMiwgMTIsIDEzLCAyMTUsIDEsIAorICAgIDEyLCAxMywgMjE1LCAwLCAxMiwgMTMsIDIxNCwgMjU1LCAxMiwgMTMsIDIxNCwgMjU0LCAxMiwgMTMsIDIxNCwgMjUzLCAxMiwgCisgICAgMTMsIDIxNCwgMjUyLCAxMiwgMTMsIDIxNCwgMjUxLCAxMiwgMTMsIDIxNCwgMjUwLCAxMiwgMTMsIDIxNCwgMjQ5LCAxMiwgCisgICAgMTMsIDIxNCwgMjQ4LCAxMiwgMTMsIDIxNCwgMjQ3LCAxMiwgMTMsIDIxNCwgMjQ2LCAxMiwgMTMsIDIxNCwgMjQ1LCAxMiwgCisgICAgMTMsIDIxNCwgMjQ0LCAxMiwgMTMsIDIxNCwgMjQzLCAxMiwgMTMsIDIxNCwgMjQyLCAxMiwgMTMsIDIxNCwgMjQxLCAxMiwgCisgICAgMTMsIDIxNCwgMjQwLCAxMiwgMTMsIDIxNCwgMjM5LCAxMiwgMTMsIDIxNCwgMjM4LCAxMiwgMTMsIDIxNCwgMjM3LCAxMiwgCisgICAgMTMsIDIxNCwgMjM2LCAxMiwgMTMsIDIxNCwgMjM1LCAxMiwgMTMsIDIxNCwgMjM0LCAxMiwgMTMsIDIxNCwgMjMzLCAxMiwgCisgICAgMTMsIDIxNCwgMjMyLCAxMiwgMTMsIDIxNCwgMTA0LCAxMiwgMTMsIDIxNCwgMTAzLCAxMiwgMTMsIDIxNCwgMTAyLCAxMiwgCisgICAgMTMsIDIxNCwgMTAxLCAxMiwgMTMsIDIxNCwgMTAwLCAxMiwgMTMsIDIxNCwgOTksIDEyLCAxMywgMjE0LCA5OCwgMTIsIDEzLCAKKyAgICAyMTQsIDk3LCAxMiwgMTMsIDIxNCwgOTYsIDEyLCAxMywgMjE0LCA5NSwgMTIsIDEzLCAyMTQsIDk0LCAxMiwgMTMsIDIxNCwgCisgICAgOTMsIDEyLCAxMywgMjE0LCA5MiwgMTIsIDEzLCAyMTQsIDkxLCAxMiwgMTMsIDIxNCwgOTAsIDEyLCAxMywgMjE0LCA4OSwgCisgICAgMTIsIDEzLCAyMTQsIDg4LCAxMiwgMTMsIDIxNCwgODcsIDEyLCAxMywgMjE0LCA4NiwgMTIsIDEzLCAyMTQsIDg1LCAxMiwgCisgICAgMTMsIDIxNCwgODQsIDEyLCAxMywgMjE0LCA4MywgMTIsIDEzLCAyMTQsIDgyLCAxMiwgMTMsIDIxNCwgODEsIDEyLCAxMywgCisgICAgMjE0LCA4MCwgMTIsIDEzLCAyMTQsIDc5LCAxMiwgMTMsIDIxNCwgNzgsIDEyLCAxMywgMjE0LCA3NywgMTIsIDEzLCAyMTQsIAorICAgIDc2LCAxMiwgMTMsIDIxNCwgNzUsIDEyLCAxMywgMjE0LCA3NCwgMTIsIDEzLCAyMTQsIDczLCAxMiwgMTMsIDIxNCwgNzIsIAorICAgIDEyLCAxMywgMjE0LCA3MSwgMTIsIDEzLCAyMTQsIDcwLCAxMiwgMTMsIDIxNCwgNjksIDEyLCAxMywgMjE0LCA2OCwgMTIsIAorICAgIDEzLCAyMTQsIDY3LCAxMiwgMTMsIDIxNCwgNjYsIDEyLCAxMywgMjE0LCA2NSwgMTIsIDEzLCAyMTQsIDY0LCAxMiwgMTMsIAorICAgIDIxNCwgNjMsIDEyLCAxMywgMjE0LCA2MiwgMTIsIDEzLCAyMTQsIDYxLCAxMiwgMTMsIDIxNCwgNjAsIDEyLCAxMywgMjE0LCAKKyAgICA1OSwgMTIsIDEzLCAyMTQsIDU4LCAxMiwgMTMsIDIxNCwgNTcsIDEyLCAxMywgMjE0LCA1NiwgMTIsIDEzLCAyMTQsIDU1LCAKKyAgICAxMiwgMTMsIDIxNCwgNTQsIDEyLCAxMywgMjE0LCA1MywgMTIsIDEzLCAyMTQsIDUyLCAxMiwgMTMsIDIxNCwgNTEsIDEyLCAKKyAgICAxMywgMjE0LCA1MCwgMTIsIDEzLCAyMTQsIDQ5LCAxMiwgMTMsIDIxNCwgNDgsIDEyLCAxMywgMjE0LCA0NywgMTIsIDEzLCAKKyAgICAyMTQsIDQ2LCAxMiwgMTMsIDIxNCwgNDUsIDEyLCAxMywgMjE0LCA0NCwgMTIsIDEzLCAyMTQsIDQzLCAxMiwgMTMsIDIxNCwgCisgICAgNDIsIDEyLCAxMywgMjE0LCA0MSwgMTIsIDEzLCAyMTQsIDQwLCAxMiwgMTMsIDIxNCwgMzksIDEyLCAxMywgMjE0LCAzOCwgCisgICAgMTIsIDEzLCAyMTQsIDM3LCAxMiwgMTMsIDIxNCwgMzYsIDEyLCAxMywgMjE0LCAzNSwgMTIsIDEzLCAyMTQsIDM0LCAxMiwgCisgICAgMTMsIDIxNCwgMzMsIDEyLCAxMywgMjE0LCAzMiwgMTIsIDEzLCAyMTQsIDMxLCAxMiwgMTMsIDIxNCwgMzAsIDEyLCAxMywgCisgICAgMjE0LCAyOSwgMTIsIDEzLCAyMTQsIDI4LCAxMiwgMTMsIDIxMiwgOTcsIDEyLCAxMywgMjEyLCA5NiwgMTIsIDEzLCAyMTIsIAorICAgIDk1LCAxMiwgMTMsIDIxMiwgOTQsIDEyLCAxMywgMjEyLCA5MywgMTIsIDEzLCAyMTIsIDkyLCAxMiwgMTMsIDIxMiwgOTEsIAorICAgIDEyLCAxMywgMjEyLCA5MCwgMTIsIDEzLCAyMTIsIDg5LCAxMiwgMTMsIDIxMiwgODgsIDEyLCAxMywgMjEyLCA4NywgMTIsIAorICAgIDEzLCAyMTIsIDg2LCAxMiwgMTMsIDIxMiwgODUsIDEyLCAxMywgMjEyLCA4NCwgMTIsIDEzLCAyMTIsIDgzLCAxMiwgMTMsIAorICAgIDIxMiwgODIsIDEyLCAxMywgMjEyLCA4MSwgMTIsIDEzLCAyMTIsIDgwLCAxMiwgMTMsIDIxMiwgNzksIDEyLCAxMywgMjEyLCAKKyAgICA3OCwgMTIsIDEzLCAyMTIsIDc3LCAxMiwgMTMsIDIxMiwgNzYsIDEyLCAxMywgMjEyLCA3NSwgMTIsIDEzLCAyMTIsIDc0LCAKKyAgICAxMiwgMTMsIDIxMiwgNzMsIDEyLCAxMywgMjEyLCA3MiwgMTIsIDEzLCAyMTIsIDcxLCAxMiwgMTMsIDIxMiwgNzAsIDEyLCAKKyAgICAxMywgMjEyLCA2OSwgMTIsIDEzLCAyMTIsIDY4LCAxMiwgMTMsIDIxMiwgNjcsIDEyLCAxMywgMjEyLCA2NiwgMTIsIDEzLCAKKyAgICAyMTEsIDE3NywgMTIsIDEzLCAyMTEsIDE3NiwgMTIsIDEzLCAyMTEsIDE3NSwgMTIsIDEzLCAyMTEsIDE3NCwgMTIsIDEzLCAKKyAgICAyMTEsIDE3MywgMTIsIDEzLCAyMTEsIDE3MiwgMTIsIDEzLCAyMTEsIDE3MSwgMTIsIDEzLCAyMTEsIDE3MCwgMTIsIDEzLCAKKyAgICAyMTEsIDE2OSwgMTIsIDEzLCAyMTEsIDE2OCwgMTIsIDEzLCAyMTEsIDE2NywgMTIsIDEzLCAyMTEsIDE2NiwgMTIsIDEzLCAKKyAgICAyMTEsIDExNSwgMTIsIDEzLCAyMTEsIDExNCwgMTIsIDEzLCAyMTEsIDExMywgMTIsIDEzLCAyMTEsIDExMiwgMTIsIDEzLCAKKyAgICAyMTEsIDExMSwgMTIsIDEzLCAyMTEsIDExMCwgMTIsIDEzLCAyMTEsIDEwOSwgMTIsIDEzLCAyMTEsIDEwOCwgMTIsIDEzLCAKKyAgICAyMTEsIDEwNywgMTIsIDEzLCAyMTAsIDE1OCwgMTIsIDEzLCAyMTAsIDE1NywgMTIsIDEzLCAyMTAsIDE1NiwgMTIsIDEzLCAKKyAgICAyMTAsIDE1NSwgMTIsIDEzLCAyMTAsIDE1NCwgMTIsIDEzLCAyMTAsIDE1MywgMTIsIDEzLCAyMTAsIDE1MiwgMTIsIDEzLCAKKyAgICAyMTAsIDE1MSwgMTIsIDEzLCAyMTAsIDE1MCwgMTIsIDEzLCAyMTAsIDE0OSwgMTIsIDEzLCAyMTAsIDE0OCwgMTIsIDEzLCAKKyAgICAyMTAsIDE0NywgMTIsIDEzLCAyMTAsIDE0NiwgMTIsIDEzLCAyMTAsIDE0NSwgMTIsIDEzLCAyMTAsIDE0NCwgMTIsIDEzLCAKKyAgICAyMTAsIDE0MywgMTIsIDEzLCAyMTAsIDE0MiwgMTIsIDEzLCAyMTAsIDE0MSwgMTIsIDEzLCAyMTAsIDE0MCwgMTIsIDEzLCAKKyAgICAyMTAsIDEzOSwgMTIsIDEzLCAyMTAsIDEzOCwgMTIsIDEzLCAyMTAsIDEzNywgMTIsIDEzLCAyMTAsIDEzNiwgMTIsIDEzLCAKKyAgICAyMTAsIDEzNSwgMTIsIDEzLCAyMTAsIDEzNCwgMTIsIDEzLCAyMTAsIDEzMywgMTIsIDEzLCAyMTAsIDEzMiwgMTIsIDEzLCAKKyAgICAyMTAsIDEzMSwgMTIsIDEzLCAyMTAsIDEzMCwgMTIsIDEzLCAyMTAsIDEyOSwgMTIsIDEzLCAyMTAsIDEyOCwgMTIsIDEzLCAKKyAgICAyMTAsIDEyNywgMTIsIDEzLCAyMTAsIDEyNiwgMTIsIDEzLCAyMTAsIDEyNSwgMTIsIDEzLCAyMTAsIDEyNCwgMTIsIDEzLCAKKyAgICAyMTAsIDEyMywgMTIsIDEzLCAyMTAsIDEyMiwgMTIsIDEzLCAyMTAsIDEyMSwgMTIsIDEzLCAyMTAsIDEyMCwgMTIsIDEzLCAKKyAgICAyMTAsIDExOSwgMTIsIDEzLCAyMTAsIDExOCwgMTIsIDEzLCAyNTUsIDcyLCAxMiwgMTMsIDI1NSwgNzEsIDEyLCAxMywgCisgICAgMjU1LCA3MCwgMTIsIDEzLCAyNTUsIDY5LCAxMiwgMTMsIDI1NSwgNjgsIDEyLCAxMywgMjU1LCA2NywgMTIsIDEzLCAyNTUsIAorICAgIDY2LCAxMiwgMTMsIDI1NSwgNjUsIDEyLCAxMywgMjU1LCA2NCwgMTIsIDEzLCAyNTUsIDYzLCAxMiwgMTMsIDI1NSwgNjIsIAorICAgIDEyLCAxMywgMjU1LCA2MSwgMTIsIDEzLCAyNTUsIDYwLCAxMiwgMTMsIDI1NSwgNTksIDEyLCAxMywgMjU1LCA1OCwgMTIsIAorICAgIDEzLCAyNTUsIDU3LCAxMiwgMTMsIDI1NSwgNTYsIDEyLCAxMywgMjU1LCA1NSwgMTIsIDEzLCAyNTUsIDU0LCAxMiwgMTMsIAorICAgIDI1NSwgNTMsIDEyLCAxMywgMjU1LCA1MiwgMTIsIDEzLCAyNTUsIDUxLCAxMiwgMTMsIDI1NSwgNTAsIDEyLCAxMywgMjU1LCAKKyAgICA0OSwgMTIsIDEzLCAyNTUsIDQ4LCAxMiwgMTMsIDI1NSwgNDcsIDEyLCAxMywgMjU1LCA0NiwgMTIsIDEzLCAyNTUsIDQ1LCAKKyAgICAxMiwgMTMsIDI1NSwgNDQsIDEyLCAxMywgMjU1LCA0MywgMTIsIDEzLCAyNTUsIDQyLCAxMiwgMTMsIDI1NSwgNDEsIDEyLCAKKyAgICAxMywgMjU1LCA0MCwgMTIsIDEzLCAyNTUsIDM5LCAyMCwgMSwgMTY3LCAyMjksIDEyLCAyMzEsIDE2LCAyMCwgMSwgMTY3LCAKKyAgICAyNDMsIDcwLCAyNDQsIDM2LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjMxLCAxNywgMjI1LCA1NywgMjAsIDEsIDE2NywgCisgICAgMjI0LCAyNTEsIDIzMSwgMTcsIDIyNSwgNTgsIDIwLCAxLCAxNjcsIDIyOSwgMjI2LCAyMzEsIDE2LCAyMCwgMSwgMTY3LCAKKyAgICAyMTksIDIyMSwgMjAsIDEsIDE2NywgMjE2LCA2NiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgMjI3LCAxMTgsIDIzMSwgMTYsIAorICAgIDIwLCAxLCAxNjcsIDIyMCwgMTksIDIyNiwgOTAsIDIyOCwgMTY5LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjI2LCA5MCwgCisgICAgMjI4LCAxNzAsIDIyNSwgNTcsIDIwLCAxLCAxNjcsIDIyNCwgMjUxLCAyMjYsIDkwLCAyMjgsIDE3MCwgMjI1LCA1OCwgMjAsIAorICAgIDEsIDE2NywgMjMxLCAyMTgsIDIwLCAxLCAxNjcsIDIxNSwgMTE5LCAyMzEsIDIxOSwgMjAsIDEsIDE2NywgMjI5LCA3MSwgCisgICAgMjAsIDEsIDE2NywgMjMxLCAyMTUsIDIwLCAxLCAxNjcsIDIzMSwgMTc2LCAyMCwgMSwgMTY3LCAyMzAsIDQ4LCAyMCwgMSwgCisgICAgMTY3LCAyMjAsIDEyNCwgMjAsIDEsIDE2NywgMjI3LCAyNDEsIDIwLCAxLCAxNjcsIDIzNCwgMTQ5LCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDEzOCwgMjAsIDEsIDE2NywgMjE4LCA0LCAyMCwgMSwgMTY3LCAyMjksIDExLCAyMCwgMSwgMTY3LCAyMzMsIDg3LCAKKyAgICAyMCwgMSwgMTY3LCAyMzMsIDEyLCAyMzMsIDE4OSwgMjAsIDEsIDE2NywgMjI3LCAyNDgsIDIzMSwgMjQsIDIwLCAxLCAxNjcsIAorICAgIDIzMSwgMjIyLCAyMCwgMSwgMTY3LCAyMjUsIDI0NiwgMjAsIDEsIDE2NywgMjQyLCAyMzEsIDIwLCAxLCAxNjcsIDIyNiwgCisgICAgNTAsIDIwLCAxLCAxNjcsIDIzMCwgMTUxLCAyMjksIDQ1LCAyMCwgMSwgMTY3LCAyMjcsIDk5LCAyMzEsIDI3LCAyMCwgMSwgCisgICAgMTY3LCAxMDQsIDIxMCwgMTg4LCAyMjksIDIyMCwgMjAsIDEsIDE2NywgMjQyLCAyMzIsIDIwLCAxLCAxNjcsIDIyNywgMjQ4LCAKKyAgICAyMjcsIDI0OSwgMjAsIDEsIDE2NywgMjE5LCAxMjgsIDIwLCAxLCAxNjcsIDIzMSwgOSwgMjAsIDEsIDE2NywgMjMxLCAzMCwgCisgICAgMjAsIDEsIDE2NywgMjMwLCAxMzAsIDIwLCAxLCAxNjcsIDIzNCwgMjQ5LCAyMCwgMSwgMTY3LCAyMjYsIDkwLCAyMzMsIDQ3LCAKKyAgICAyMCwgMSwgMTY3LCAyMjksIDE0OSwgMjMzLCA0NywgMjAsIDEsIDE2NywgMjI1LCAxNTgsIDIwLCAxLCAxNjcsIDIzMSwgCisgICAgMjE2LCAyMCwgMSwgMTY3LCAyMjgsIDIwNywgMjAsIDEsIDE2NywgMjI0LCAxMzQsIDIwLCAxLCAxNjcsIDIxNSwgMTE2LCAKKyAgICAyMCwgMSwgMTY3LCAyMzIsIDk0LCAyMCwgMSwgMTY3LCAyMTksIDQxLCAyMCwgMSwgMTY3LCAyMTYsIDIxNiwgMjAsIDEsIAorICAgIDE2NywgMjMxLCAyMTMsIDIwLCAxLCAxNjcsIDIzNCwgMTU2LCAyMCwgMSwgMTY3LCAyMjksIDE0NSwgMjAsIDEsIDE2NywgCisgICAgMjMzLCAyMDEsIDIwLCAxLCAxNjcsIDIzMCwgMTMxLCAyMCwgMSwgMTY3LCAyMTksIDIxOCwgMjAsIDEsIDE2NywgMjMyLCAKKyAgICAxMzgsIDIwLCAxLCAxNjcsIDI0NCwgOTMsIDIwLCAxLCAxNjcsIDIyMiwgMTk5LCAyMCwgMSwgMTY3LCAyMzMsIDI0MSwgMjAsIAorICAgIDEsIDE2NywgMjE5LCAzNywgMjAsIDEsIDE2NywgMjMxLCAxNzMsIDIyNSwgOTksIDIwLCAxLCAxNjcsIDIyMCwgMTIsIDIwLCAKKyAgICAxLCAxNjcsIDIyNywgMjQ3LCAyMCwgMSwgMTY3LCAyMTksIDI1MywgMjI4LCAyLCAyMTAsIDE5NiwgMjAsIDEsIDE2NywgCisgICAgMjI3LCAxMzgsIDIzMCwgMTQ4LCAyMCwgMSwgMTY3LCAyMjYsIDg1LCAyMCwgMSwgMTY3LCAyMjgsIDEzOSwgMjAsIDEsIAorICAgIDE2NywgMjE0LCAxNzAsIDIwLCAxLCAxNjcsIDIyOSwgNDgsIDIwLCAxLCAxNjcsIDIzMSwgMjEyLCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDE4MSwgMjAsIDEsIDE2NywgMjMxLCAxMTksIDIwLCAxLCAxNjcsIDIyNywgMTUxLCAyMCwgMSwgMTY3LCAyMTYsIAorICAgIDIyMCwgMjAsIDEsIDE2NywgMjE5LCAzNCwgMjAsIDEsIDE2NywgMjI2LCA4NiwgMjAsIDEsIDE2NywgMjI4LCA2LCAyMCwgMSwgCisgICAgMTY3LCAyMzEsIDIyMCwgMjAsIDEsIDE2NywgMjI3LCAxNDgsIDIwLCAxLCAxNjcsIDIzNCwgMjE2LCAyMCwgMSwgMTY3LCAKKyAgICAyMjgsIDksIDIwLCAxLCAxNjcsIDIxMywgMjUwLCAyMCwgMSwgMTY3LCAyMzIsIDk4LCAyMCwgMSwgMTY3LCAyMjksIDk4LCAKKyAgICAyMCwgMSwgMTY3LCAyMjksIDE5NiwgMjAsIDEsIDE2NywgMjMxLCAxMTgsIDIwLCAxLCAyMjUsIDEzOCwgMjI4LCA0LCAyMCwgCisgICAgMSwgMjI1LCAxMzgsIDIxNSwgMTE5LCAyMzEsIDIxNywgMjAsIDEsIDIyNSwgMTM4LCAyMTksIDE4NSwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMjAsIDEyOCwgMjE1LCAxMTgsIDIwLCAxLCAyMjUsIDEzOCwgMjMyLCAxNDAsIDIyNywgMjQ0LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIzMSwgMTI1LCAyMzEsIDIyMSwgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDg3LCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgCisgICAgMTUsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxMjAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAyMzcsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjI1LCAyMDgsIDIwLCAxLCAyMjUsIDEzOCwgMjExLCA4OSwgMjMzLCA0NywgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIAorICAgIDEwMywgMjI4LCAyLCAyMjcsIDE2MCwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDI0MiwgMjIwLCAzOCwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMjksIDExNiwgMjI4LCAxODQsIDIwLCAxLCAyMjUsIDEzOCwgMjQyLCAyMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI1LCAKKyAgICA0OSwgMjAsIDEsIDIyNSwgMTM4LCAyMTUsIDExOSwgMjI4LCAwLCAyMCwgMSwgMjI1LCAxMzgsIDIyMCwgNDMsIDIyOCwgCisgICAgMTc5LCAyMCwgMSwgMjI1LCAxMzgsIDIyMCwgMzksIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxNywgMjE2LCAyMTksIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjMxLCAxMDcsIDIzMSwgMTIxLCAyMCwgMSwgMjI1LCAxMzgsIDIyNywgMTQ5LCAyMjcsIDI0NCwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyMzQsIDE0NSwgMjAsIDEsIDIyNSwgMTM4LCAyNDIsIDIzMCwgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE0MSwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzMsIDEyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjUsIDI0OSwgMjAsIDEsIDIyNSwgMTM4LCAKKyAgICAyMTMsIDE4MiwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDEzLCAyMzAsIDQ2LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgNDcsIAorICAgIDIzMSwgMTAzLCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgMTkzLCAyMCwgMSwgMjI1LCAxMzgsIDIyMiwgMTEsIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjE3LCA5NywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMzIsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAzMywgMjMzLCA4NCwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDE5LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIxOCwgNTIsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxMTEsIDIwLCAxLCAyMjUsIDEzOCwgMjMwLCAxMzMsIDIwLCAKKyAgICAxLCAyMjUsIDEzOCwgMjI3LCAxNjMsIDIwLCAxLCAyMjUsIDEzOCwgMjI0LCAxMzgsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAKKyAgICAyOCwgMjI5LCA0OSwgMjAsIDEsIDIyNSwgMTM4LCAyNDQsIDEyNiwgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDk4LCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDI0NCwgMTQ3LCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMTUzLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMjM5LCAKKyAgICAyMjgsIDE3MywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDIzOSwgMjI4LCAxNDksIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAxMSwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDU1LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgMTEsIDIwLCAxLCAyMjUsIDEzOCwgMTg0LCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgNzQsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAxLCAyMCwgMSwgMTM3LCAyMjksIDEyLCAKKyAgICAyMzEsIDIxOSwgMjAsIDEsIDEzNywgMjI3LCAxMTcsIDIwLCAxLCAxMzcsIDIxMCwgMTk2LCAyMCwgMSwgMTM3LCAyMTIsIAorICAgIDUzLCAyMCwgMSwgMTM3LCAyMjksIDQ4LCAyMCwgMSwgMTM3LCAyMjksIDEzNywgMjAsIDEsIDEzNywgMjI5LCAxOSwgMjAsIAorICAgIDEsIDEzNywgMjQyLCAyMzksIDIwLCAxLCAxMzcsIDIzMSwgMTE1LCAyMCwgMSwgMTM3LCAyNDMsIDc3LCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDE0MCwgMjMwLCAxNzAsIDIzMSwgMzEsIDIwLCAxLCAxMzcsIDIyNywgMjQwLCAyMzEsIDEwNiwgMjAsIDEsIDEzNywgCisgICAgMjMxLCAxMTIsIDIwLCAxLCAxMzcsIDIyNSwgNTUsIDIwLCAxLCAxMzcsIDIyOSwgMTIyLCAyMCwgMSwgMTM3LCAyMzEsIAorICAgIDEyMywgMjUxLCAyOSwgMjAsIDEsIDEzNywgMjM0LCAxNDMsIDIwLCAxLCAxMzcsIDI0MiwgMjQwLCAyMCwgMSwgMTM3LCAKKyAgICAyMzQsIDE1MCwgMjAsIDEsIDEzNywgMjEwLCAyMTMsIDIzMCwgNzYsIDIwLCAxLCAxMzcsIDIyNywgMTExLCAyMCwgMSwgCisgICAgMTM3LCAyMzEsIDEwMCwgMjAsIDEsIDEzNywgMjI4LCAxMCwgMjAsIDEsIDEzNywgMjMxLCAxMDYsIDIwLCAxLCAxMzcsIAorICAgIDIxMSwgMTYsIDIwLCAxLCAxMzcsIDIzMywgMjQ5LCAyMCwgMSwgMTM3LCAyMzUsIDEwLCAyMCwgMSwgMTM3LCAyMjAsIDEyMywgCisgICAgMjAsIDEsIDEzNywgMjI5LCAxMzEsIDIwLCAxLCAxMzcsIDIxNywgOTUsIDIwLCAxLCAxMzcsIDIyOCwgMTUzLCAyMCwgMSwgCisgICAgMTM3LCAyMTYsIDY2LCAyMTAsIDE5OCwgMjAsIDEsIDEzNywgMjE4LCA3OSwgMjAsIDEsIDEzNywgMjI5LCAzOSwgMjI3LCAKKyAgICAxNjAsIDIwLCAxLCAxMzcsIDIxMywgMTgxLCAyMCwgMSwgMTM3LCAyMjksIDE5OSwgMjAsIDEsIDEzNywgMjMxLCAyMzksIAorICAgIDIzNCwgMTUyLCAyMCwgMSwgMTM3LCAyMjcsIDI0OSwgMjAsIDEsIDEzNywgMjI5LCAzNCwgMjAsIDEsIDEzNywgMjMzLCA4OCwgCisgICAgMjAsIDEsIDEzNywgMjMxLCAxMDgsIDIwLCAxLCAxMzcsIDIzMSwgOCwgMjAsIDEsIDEzNywgMjI3LCAyNDMsIDIwLCAxLCAKKyAgICAxMzcsIDIxNiwgMjE1LCAyMCwgMSwgMTM3LCAyMjksIDM2LCAyMCwgMSwgMTM3LCAyNDMsIDIzMywgMjAsIDEsIDEzNywgCisgICAgMjI5LCAxMzYsIDIwLCAxLCAxMzcsIDIyOCwgMTIsIDIwLCAxLCAxMzcsIDIyOCwgOCwgMjAsIDEsIDEzNywgMjUxLCAxMDcsIAorICAgIDIwLCAxLCAxMzcsIDIxMywgMTgzLCAyMCwgMSwgMTM3LCAyMzEsIDExMywgMjAsIDEsIDEzNywgMjIyLCAxNDAsIDIwLCAxLCAKKyAgICAxMzcsIDIyOCwgMTgzLCAyMCwgMSwgMTM3LCAyMzMsIDEwMiwgMjAsIDEsIDEzNywgMjE2LCA2NCwgMjAsIDEsIDEzNywgCisgICAgMjI3LCAyNTAsIDIyOSwgMSwgMjAsIDEsIDEzNywgMjI4LCAxNzUsIDIwLCAxLCAxMzcsIDIzNCwgMTU2LCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDQwLCAyMCwgMSwgMTM3LCAyMzEsIDIxMiwgMjAsIDEsIDEzNywgMjMxLCAxMDEsIDIwLCAxLCAxMzcsIDIzMiwgOTgsIAorICAgIDIwLCAxLCAxMzcsIDIzMywgMTg5LCAyMCwgMSwgMTM3LCAyMjgsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAxLCAyMCwgMSwgCisgICAgMTM3LCAyMTEsIDE4NCwgMjAsIDEsIDEzNywgMjI5LCAzNywgMjAsIDEsIDEzNywgMjI3LCAyNTMsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMjQ1LCAyMCwgMSwgMTM3LCAyMzMsIDIwMywgMjI4LCAxMzksIDIwLCAxLCAxMzcsIDIyNywgMjUxLCAyMCwgMSwgCisgICAgMTM3LCAyMjksIDE0NCwgMjAsIDEsIDEzNywgMjMxLCAyMzksIDIyOCwgMCwgMjAsIDEsIDEzNywgMjExLCAxMDMsIDIwLCAxLCAKKyAgICAxMzcsIDIyOSwgMTQzLCAyMCwgMSwgMTM3LCAyMTksIDIyMCwgMjAsIDEsIDEzNywgMjIwLCAxMjYsIDIwLCAxLCAxMzcsIAorICAgIDIzMSwgMTA5LCAyMCwgMSwgMTM3LCAyMzEsIDIxOSwgMjAsIDEsIDEzNywgMjMxLCAxMTksIDIwLCAxLCAxMzcsIDIzNCwgCisgICAgMTQ0LCAyMCwgMSwgMTM3LCAyMzEsIDExMCwgMjAsIDEsIDEzNywgMjM0LCAxNDgsIDIwLCAxLCAxMzcsIDIzMSwgMTIzLCAKKyAgICAyMjUsIDEwMywgMjAsIDEsIDEzNywgMjEwLCAxNzksIDIwLCAxLCAxMzcsIDIyOCwgMTcxLCAyMCwgMSwgMTM3LCAyMzAsIAorICAgIDIyMCwgMjAsIDEsIDEzNywgMjMwLCAxMDAsIDIwLCAxLCAxMzcsIDIyMCwgMTUsIDIwLCAxLCAxMzcsIDIzNCwgMTY2LCAKKyAgICAyMzMsIDcwLCAyMCwgMSwgMTM3LCAyMzQsIDE2NiwgMjQ0LCAxNjAsIDIwLCAxLCAxMzcsIDIyOSwgNjksIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgMTk2LCAyMCwgMSwgMTM3LCAyMzIsIDIwMCwgMjAsIDEsIDEzNywgMjI1LCA2NSwgMjAsIDEsIDEzNywgMjI1LCAKKyAgICAxOTksIDIwLCAxLCAxMzcsIDIxNiwgMjMwLCAyMCwgMSwgMTA3LCAyMzEsIDk5LCAyMCwgMSwgMTA3LCAyMTIsIDUxLCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE2OSwgMjAsIDEsIDEwNywgMjMxLCAxNiwgMjAsIDEsIDEwNywgMjI4LCAxNjcsIDIwLCAxLCAxMDcsIAorICAgIDIzMiwgMjM1LCAyMCwgMSwgMTA3LCAyMjgsIDE3MiwgMjAsIDEsIDEwNywgMjI4LCA3LCAyMCwgMSwgMTA3LCAyMjksIDU0LCAKKyAgICAyMCwgMSwgMTA3LCAyMjcsIDE2MCwgMjAsIDEsIDEwNywgMjExLCAxOTQsIDIwLCAxLCAxMDcsIDIyOSwgOSwgMjAsIDEsIAorICAgIDEwNywgMjIwLCA2MSwgMjAsIDEsIDEwNywgMjI5LCAyMCwgMjAsIDEsIDEwNywgMjM0LCAxNTEsIDIwLCAxLCAxMDcsIDIxNiwgCisgICAgMjE3LCAyMCwgMSwgMTA3LCAyMjAsIDQxLCAyMCwgMSwgMTA3LCAyMjgsIDE4MCwgMjAsIDEsIDEwNywgMjE4LCA1MiwgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNTYsIDIwLCAxLCAxMDcsIDIxMSwgOTEsIDIwLCAxLCAxMDcsIDIzMywgMjA0LCAyMCwgMSwgMTA3LCAKKyAgICAyMjEsIDIzNCwgMjAsIDEsIDEwNywgMjMxLCAyMSwgMjAsIDEsIDEwNywgMjI5LCAxMzUsIDIwLCAxLCAxMDcsIDIzMSwgCisgICAgMTg4LCAyMCwgMSwgMTA3LCAyMzEsIDI3LCAyMCwgMSwgMTA3LCAyMjAsIDEyNSwgMjAsIDEsIDEwNywgMjExLCAzOSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNzQsIDIwLCAxLCAxMDcsIDIzNCwgMTQ3LCAyMzEsIDEwMiwgMjAsIDEsIDEwNywgMjI5LCAxNiwgCisgICAgMjAsIDEsIDEwNywgMjE1LCAxMTgsIDIwLCAxLCAxMDcsIDI0MiwgMjQ4LCAyMCwgMSwgMTA3LCAyMjksIDYsIDIwLCAxLCAKKyAgICAxMDcsIDI0NCwgMTI3LCAyMCwgMSwgMTA3LCAyMjksIDEzOSwgMjAsIDEsIDEwNywgMjMxLCAwLCAyMCwgMSwgMTA3LCAyMzMsIAorICAgIDUsIDIwLCAxLCAxMDcsIDIyOSwgMTIxLCAyMCwgMSwgMTA3LCAyMzAsIDE0NywgMjAsIDEsIDEwNywgMjMxLCA0LCAyMCwgMSwgCisgICAgMTA3LCAyMjQsIDExOCwgMjAsIDEsIDEwNywgMjMxLCAyLCAyMCwgMSwgMTA3LCAyMzEsIDE4LCAyMCwgMSwgMTA3LCAyMzIsIAorICAgIDg0LCAyMCwgMSwgMTA3LCAyMjcsIDI1NSwgMjAsIDEsIDEwNywgMjMxLCAxMjIsIDIwLCAxLCAxMDcsIDIzMywgMTgwLCAyMCwgCisgICAgMSwgMTA3LCAyMjcsIDE1MSwgMjAsIDEsIDEwNywgMjE2LCAyMjAsIDIwLCAxLCAxMDcsIDIxOSwgMzQsIDIwLCAxLCAxMDcsIAorICAgIDIxMCwgMTc5LCAyMCwgMSwgMTA3LCAyMzQsIDE0OCwgMjAsIDEsIDEwNywgMjIzLCAxNzAsIDIwLCAxLCAxMDcsIDIxNywgCisgICAgMTAsIDIwLCAxLCAxMDcsIDIyOSwgMTcsIDIwLCAxLCAxMDcsIDIzMSwgMjMsIDIwLCAxLCAxMDcsIDIyNywgMjU0LCAyMCwgCisgICAgMSwgMTA3LCAyMzQsIDE0NiwgMjAsIDEsIDEwNywgMjI1LCA1OSwgMjAsIDEsIDEwNywgMjI1LCAxNTIsIDIwLCAxLCAxMDcsIAorICAgIDIyNywgMTI3LCAyMCwgMSwgMTA3LCAyMzMsIDExLCAyMCwgMSwgMTA3LCAyMjksIDU1LCAyMCwgMSwgMTA3LCAyMzEsIDIwLCAKKyAgICAyMCwgMSwgMTA3LCAyMjksIDI5LCAyMCwgMSwgMTA3LCAyMTAsIDE5MywgMjAsIDEsIDEwNywgMjI2LCAyMSwgMjAsIDEsIAorICAgIDEwNywgMjEwLCAxOTIsIDIwLCAxLCAxMDcsIDIyOSwgMTQ0LCAyMCwgMSwgMTA3LCAyMjcsIDI0NCwgMjAsIDEsIDEwNywgCisgICAgMjE4LCA4MSwgMjAsIDEsIDEwNywgMjMzLCAyMDgsIDIwLCAxLCAxMDcsIDIyOSwgNDQsIDIwLCAxLCAxMDcsIDIyOSwgMTQsIAorICAgIDIwLCAxLCAxMDcsIDIxNSwgMTAyLCAyMCwgMSwgMTA3LCAyMzEsIDMxLCAyMCwgMSwgMTA3LCAyMzMsIDE5OCwgMjAsIDEsIAorICAgIDEwNywgMjI3LCAyNTIsIDIwLCAxLCAxMDcsIDIxNiwgMjE4LCAyMCwgMSwgMTA3LCAyMzEsIDIxNCwgMjAsIDEsIDEwNywgCisgICAgMjI5LCA1MywgMjAsIDEsIDEwNywgMjMzLCA0LCAyMCwgMSwgMTA3LCAyMjksIDM1LCAyMCwgMSwgMTA3LCAyMjgsIDEsIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTUzLCAyMCwgMSwgMTA3LCAyNDIsIDIzMywgMjAsIDEsIDEwNywgMjMzLCAyMTcsIDIwLCAxLCAxMDcsIAorICAgIDIyMywgODQsIDIyNiwgMjA5LCAyMCwgMSwgMTA3LCAyMTcsIDg2LCAyMCwgMSwgMTA3LCAyMTYsIDEwLCAyMCwgMSwgMTA3LCAKKyAgICAyMjcsIDE0OCwgMjAsIDEsIDEwNywgMjIyLCAyMzksIDIwLCAxLCAxMDcsIDIzMywgNDksIDIwLCAxLCAxMDcsIDIzMSwgNzksIAorICAgIDIwLCAxLCAxMDcsIDE5MywgMjAsIDEsIDEwNywgMjE4LCA0LCAyMCwgMSwgMTA3LCAyMzAsIDEwMiwgMjAsIDEsIDEwNywgCisgICAgMjIwLCAyNywgMjAsIDEsIDEwNywgMjIwLCAzNywgMjAsIDEsIDEwNywgMjMzLCAxNTUsIDIwLCAxLCAxMDcsIDIyNywgMjM3LCAKKyAgICAyMCwgMSwgMTA3LCAyMTksIDIyNSwgMjAsIDEsIDEwNywgMjI3LCAyNDYsIDIwLCAxLCAxMDcsIDIyNSwgMjExLCAyMCwgMSwgCisgICAgMTA3LCAyMjgsIDIzMywgMjAsIDEsIDEwNywgMjE5LCAyNTIsIDIwLCAxLCAxMDcsIDIyNCwgMTMzLCAyMCwgMSwgMTA3LCAKKyAgICAyMzAsIDQ2LCAyMCwgMSwgMTA3LCAyMzIsIDExOSwgMjAsIDEsIDEwNywgMjIzLCA4NCwgMjMwLCA5NiwgMjAsIDEsIDEwNywgCisgICAgMjE2LCAxMTcsIDIwLCAxLCAxMDcsIDIyNywgMjM4LCAyMCwgMSwgMTA3LCAyMzEsIDEyMywgMTk4LCAyMCwgMSwgMTA3LCAKKyAgICAyMjEsIDIzMiwgMjAsIDEsIDEwNywgMjQ0LCAxOTUsIDIwLCAxLCA4MiwgMjI5LCAxNDMsIDIwLCAxLCA4MiwgMjE2LCAxNiwgCisgICAgMjAsIDEsIDgyLCAyMzEsIDExMiwgMjAsIDEsIDgyLCAyMzMsIDg4LCAyMCwgMSwgODIsIDIxMywgMTI4LCAyMCwgMSwgODIsIAorICAgIDIzMiwgMTI1LCAyMCwgMSwgODIsIDIyNiwgODksIDIwLCAxLCA4MiwgMjE5LCA0NSwgMjAsIDEsIDgyLCAyMjMsIDE0NSwgCisgICAgMjAsIDEsIDgyLCAyMjgsIDMsIDIwLCAxLCA4MiwgMjI5LCAxMTQsIDIwLCAxLCA4MiwgMjI0LCAxNDcsIDIwLCAxLCA4MiwgCisgICAgMjE3LCA2MiwgMjAsIDEsIDgyLCAyMjksIDIyLCAyMCwgMSwgODIsIDIzMywgMjQ1LCAyMCwgMSwgODIsIDIxMSwgMTg3LCAKKyAgICAyMCwgMSwgODIsIDIyMSwgMTcwLCAyMCwgMSwgODIsIDIyOSwgNDUsIDIwLCAxLCA4MiwgMjI2LCA4NiwgMjAsIDEsIDgyLCAKKyAgICAyMTYsIDE3LCAyMCwgMSwgODIsIDIzMywgMjAyLCAyMCwgMSwgODIsIDIzMiwgMTM5LCAyMCwgMSwgODIsIDIyOCwgNiwgMjAsIAorICAgIDEsIDgyLCAyMjgsIDI1NCwgMjAsIDEsIDgyLCAyMzEsIDIyMCwgMjAsIDEsIDgyLCAyMjksIDE1LCAyMCwgMSwgODIsIDIyOCwgCisgICAgMjUzLCAyMCwgMSwgODIsIDIyOCwgNSwgMjAsIDEsIDgyLCAyMjIsIDIzNywgMjAsIDEsIDgyLCAyMjgsIDE3MSwgMjAsIDEsIAorICAgIDgyLCAyMjUsIDIxMCwgMjAsIDEsIDgyLCAyMjIsIDMxLCAyMCwgMSwgODIsIDIyOSwgMzAsIDIwLCAxLCA4MiwgMjMxLCAxMCwgCisgICAgMjAsIDEsIDgyLCAyNDIsIDIyNywgMjAsIDEsIDgyLCAyMjksIDE4LCAyMCwgMSwgODIsIDIyOCwgMTgyLCAyMCwgMSwgODIsIAorICAgIDIzMSwgMTcyLCAyMCwgMSwgODIsIDIzMiwgMTIxLCAyMCwgMSwgODIsIDIyOSwgNTAsIDIwLCAxLCA4MiwgMjI5LCAxMjcsIAorICAgIDIwLCAxLCA4MiwgMjE3LCA4NSwgMjI3LCAyNDQsIDIwLCAxLCA4MiwgMjIwLCAxMjcsIDIwLCAxLCA4MiwgMjI0LCAxNDMsIAorICAgIDIwLCAxLCA4MiwgMjI5LCAxNDcsIDIxOSwgNTEsIDIwLCAxLCA4MiwgMjI5LCAzOCwgMjI3LCAxNjAsIDIwLCAxLCA4MiwgCisgICAgMjExLCA0LCAyMCwgMSwgODIsIDI0MiwgMjI4LCAyMCwgMSwgODIsIDIxNSwgMTE3LCAyMCwgMSwgODIsIDIxMSwgMTksIDIwLCAKKyAgICAxLCA4MiwgMjI1LCAxNiwgMjAsIDEsIDgyLCAyMTUsIDEwNywgMjAsIDEsIDgyLCAyMzQsIDE1NCwgMjAsIDEsIDgyLCAyMTgsIAorICAgIDgwLCAyMCwgMSwgODIsIDIxNiwgMjE5LCAyMCwgMSwgODIsIDIxMywgMTg0LCAyMCwgMSwgODIsIDIxMiwgNiwgMjAsIDEsIAorICAgIDgyLCAyMzMsIDEzMiwgMjAsIDEsIDgyLCAyMjQsIDE1MCwgMjAsIDEsIDgyLCAyMTcsIDk2LCAyMCwgMSwgODIsIDI0MiwgCisgICAgMjQ3LCAyMCwgMSwgODIsIDIyOSwgNTksIDIwLCAxLCA4MiwgMjIwLCA0MCwgMjAsIDEsIDgyLCAyMzEsIDUsIDIwLCAxLCAKKyAgICA4MiwgMjMxLCAxMTYsIDIwLCAxLCA4MiwgMjI3LCAxMTUsIDIwLCAxLCA4MiwgMjI4LCAxMzYsIDIwLCAxLCA4MiwgMjQzLCAKKyAgICA3MywgMjAsIDEsIDgyLCAyMTUsIDEwOCwgMjAsIDEsIDgyLCAyMzMsIDIxMSwgMjAsIDEsIDgyLCAyMTEsIDY3LCAyMCwgMSwgCisgICAgODIsIDIyNywgMTQ5LCAyNTAsIDE2LCAyMCwgMSwgODIsIDIxMCwgMjUwLCAyMCwgMSwgODIsIDIzMSwgMjIsIDIwLCAxLCAKKyAgICA4MiwgMjI5LCAxMzIsIDIwLCAxLCA4MiwgMjI1LCAxMDAsIDIwLCAxLCA4MiwgMjEwLCAxOTcsIDIwLCAxLCA4MiwgMjMzLCAKKyAgICA2LCAyMCwgMSwgODIsIDI0MywgMjMzLCAyMCwgMSwgODIsIDI0MywgNzIsIDIwLCAxLCA4MiwgMjI5LCA4LCAyMCwgMSwgODIsIAorICAgIDIzNCwgMTU2LCAyMCwgMSwgODIsIDIzMSwgMjIzLCAyMCwgMSwgODIsIDIyOSwgMjEsIDIwLCAxLCA4MiwgMjQyLCAyMzQsIAorICAgIDIwLCAxLCA4MiwgMjQ0LCAxOTYsIDIwLCAxLCA4MiwgMjI3LCAyMzksIDIwLCAxLCA4MiwgMjI1LCAxNTMsIDIwLCAxLCA4MiwgCisgICAgMjExLCAxNywgMjAsIDEsIDgyLCAyMjksIDQ2LCAyMCwgMSwgODIsIDIyNywgMTQ5LCAyNTIsIDIzLCAyMCwgMSwgODIsIAorICAgIDIyNywgOTUsIDIwLCAxLCA4MiwgMjI0LCAyNDcsIDIwLCAxLCA4MiwgMjMwLCAyMjAsIDIwLCAxLCA4MiwgMjQzLCAyMzEsIAorICAgIDIwLCAxLCA4MiwgMjI5LCAyMjAsIDIwLCAxLCA4MiwgMjMwLCAxMDAsIDIwLCAxLCA4MiwgMjQyLCAyMzMsIDIwLCAxLCA4MiwgCisgICAgMjQzLCAyMzUsIDczLCAyMCwgMSwgODIsIDIzMCwgNDcsIDIwLCAxLCA4MiwgMjI0LCAxNDYsIDIwLCAxLCA4MiwgMjI5LCAKKyAgICAxMCwgMjAsIDEsIDgyLCAyMzMsIDE4OSwgMjAsIDEsIDgyLCAyMjUsIDk3LCAyMCwgMSwgODIsIDIyNywgMjQ3LCAyMCwgMSwgCisgICAgODIsIDIxMSwgMTgsIDIwLCAxLCA4MiwgMjI5LCAzMSwgMjAsIDEsIDgyLCAyMjYsIDkwLCAyMjUsIDE4NywgMjAsIDEsIDgyLCAKKyAgICAyNDMsIDIzNSwgMjUxLCAxNSwgMjAsIDEsIDgyLCAyNDQsIDM3LCAyMCwgMSwgODIsIDIyOCwgMTc2LCAyMCwgMSwgODIsIAorICAgIDYxLCAyMCwgMSwgODIsIDIxNiwgMTAsIDIwLCAxLCA4MiwgNzYsIDIwLCAxLCA4MiwgNzMsIDIwLCAxLCA4MiwgMjMzLCA4NiwgCisgICAgMjAsIDEsIDgyLCAyMjYsIDkwLCAyMjUsIDIzLCAyMCwgMSwgODIsIDIxNywgMTAxLCAyMCwgMSwgODIsIDIxNywgNTEsIDIwLCAKKyAgICAxLCA4MiwgMjI5LCAxNDcsIDIzMCwgMzQsIDI0MCwgMjM0LCAyMCwgMSwgODIsIDIyMCwgMTUsIDIwLCAxLCA4MiwgMjExLCAKKyAgICAxNCwgMjAsIDEsIDgyLCAyMjgsIDI0NywgMjAsIDEsIDgyLCAyMTAsIDIwMiwgMjAsIDEsIDgyLCAyMTAsIDIyNywgMjE3LCAKKyAgICAyNDAsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDI0OSwgMTQ3LCAyMCwgMSwgODIsIDIxMCwgMTg3LCAyMCwgMSwgODIsIDIxMCwgCisgICAgMTk1LCAyMCwgMSwgODIsIDIzNCwgMTQyLCAyMCwgMSwgODIsIDIyNSwgMTUxLCAyMCwgMSwgODIsIDIyOCwgMTc3LCAyNDUsIAorICAgIDEwMiwgMjAsIDEsIDgyLCAyMjQsIDE0NCwgMjAsIDEsIDgyLCAyMTEsIDE5MiwgMjAsIDEsIDgyLCAyNDQsIDE0NywgMjAsIAorICAgIDEsIDgyLCAyMTMsIDI1MCwgMjAsIDEsIDgyLCAyMzIsIDk4LCAyMCwgMSwgODIsIDIzMCwgMjMwLCAyMCwgMSwgODIsIDIyMywgCisgICAgNTEsIDIwLCAxLCA4MiwgMjIzLCAxNzEsIDIwLCAxLCA4MiwgMjI4LCAyNDYsIDIwLCAxLCA4MiwgMjI5LCA3NywgMjAsIDEsIAorICAgIDgyLCAyMjAsIDcsIDIwLCAxLCA4MiwgMjE5LCAyNTIsIDIwLCAxLCA4MiwgMjQzLCAyMzUsIDIyMywgODYsIDIwLCAxLCA4MiwgCisgICAgMTk3LCAyMCwgMSwgODIsIDIyNSwgMTA4LCAyMCwgMSwgODIsIDIzMiwgMTE5LCAyMCwgMSwgODIsIDIzNCwgMjgsIDIwLCAxLCAKKyAgICA4MiwgMjMxLCA1OCwgMjAsIDEsIDgyLCAxODQsIDIwLCAxLCA4MiwgMjMxLCAxNjksIDIwLCAxLCA4MiwgMjE2LCAyMjEsIAorICAgIDIwLCAxLCA4MiwgMjM0LCA5MiwgMjAsIDEsIDgyLCAyMzAsIDE1MCwgMjAsIDEsIDgyLCAyMTYsIDI0NywgMjAsIDEsIDgyLCAKKyAgICAyNDQsIDE2OSwgMjAsIDEsIDgyLCAyNDIsIDIyMywgMjAsIDEsIDIyNSwgMTM3LCAxNzYsIDIwLCAxLCAyMjUsIDEzNywgNzAsIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjMzLCAyMTcsIDIwLCAxLCAyMjUsIDEzNywgMjQ1LCAyMDksIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjIzLCAxMDgsIDIwLCAxLCAyMjUsIDEzNywgMjE3LCA4NiwgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDE0OCwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyMzMsIDEzNSwgMjAsIDEsIDIyNSwgMTM3LCAyMjIsIDIzOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjMsIDI5LCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMSwgNzksIDIwLCAxLCAyMjUsIDEzNywgMjE3LCAxMDEsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjI5LCAxNDYsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCAxODMsIDIwLCAxLCAyMjUsIDEzNywgMTkzLCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIxOCwgNCwgMjAsIDEsIDIyNSwgMTM3LCAyMjAsIDI3LCAyMCwgMSwgMjI1LCAxMzcsIDIxOSwgMTkxLCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDIyMCwgMTIzLCAyMCwgMSwgMjI1LCAxMzcsIDIzMywgMTU1LCAyMCwgMSwgMjI1LCAxMzcsIDIzNCwgMTU2LCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIyNywgMjA5LCAyMCwgMSwgMjI1LCAxMzcsIDIyNywgMjM3LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyOCwgMTU0LCAyMCwgMSwgMjI1LCAxMzcsIDIxMCwgMjI2LCAyMCwgMSwgMjI1LCAxMzcsIDIxOSwgMjI1LCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDE5MSwgMjAsIDEsIDIyNSwgMTM3LCAyMjgsIDksIDIwLCAxLCAyMjUsIDEzNywgMjI1LCAxNTEsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjI3LCAyNDYsIDIwLCAxLCAyMjUsIDEzNywgMjExLCAxOTIsIDIwLCAxLCAyMjUsIDEzNywgMjI1LCAyMTEsIAorICAgIDIwLCAxLCAyMjUsIDEzNywgMjIyLCAxNDAsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCAyMzMsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjIzLCA1MSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDE2NSwgMjAsIDEsIDIyNSwgMTM3LCAyMjksIDcsIDIwLCAxLCAyMjUsIAorICAgIDEzNywgMjI5LCA1NiwgMjAsIDEsIDIyNSwgMTM3LCAyMjAsIDcsIDIwLCAxLCAyMjUsIDEzNywgMjI0LCAxNDcsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjQ0LCAzNywgMjAsIDEsIDIyNSwgMTM3LCAyMTIsIDY1LCAyMCwgMSwgMjI1LCAxMzcsIDIzMiwgMjQxLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMiwgMTE5LCAyMCwgMSwgMjI1LCAxMzcsIDIzNCwgMjgsIDIwLCAxLCAyMjUsIDEzNywgCisgICAgMjMxLCAxMTQsIDIwLCAxLCAyMjUsIDEzNywgMjIzLCA4MywgMjAsIDEsIDIyNSwgMTM3LCAxODQsIDIwLCAxLCAyMjUsIAorICAgIDEzNywgMjMwLCAxNjEsIDIwLCAxLCAyMjUsIDEzNywgMjMxLCAxMjIsIDIwLCAxLCAyMjUsIDEzNywgMjE2LCAyMzAsIDIwLCAKKyAgICAxLCAyMjUsIDEzNywgMjMzLCAyNTEsIDIwLCAxLCAyMjUsIDEzNywgMjIxLCAyNTEsIDIwLCAxLCAyMjUsIDEzNywgMjEyLCAKKyAgICAxMTUsIDk1LCAxLCAxOTAsIDk1LCAxLCAyNTIsIDE5MSwgOTUsIDEsIDgsIDE5MCwgOTUsIDEsIDIyNSwgNDIsIDk1LCAxLCAKKyAgICAxODQsIDk1LCAxLCAyMzAsIDIzMywgOTUsIDEsIDI1NCwgMjMsIDE4NCwgOTUsIDEsIDI0NCwgMTk2LCA5NSwgMSwgMjE0LCAKKyAgICAyNywgOTUsIDEsIDIxMywgMTc3LCA5NSwgMSwgMjE3LCAxMDUsIDk1LCAxLCAyNDgsIDIyMSwgOTUsIDEsIDgsIDIxNSwgCisgICAgMTU2LCA5NSwgMSwgOCwgMjE3LCAxMDUsIDk1LCAxLCAyMTUsIDE1NiwgOTUsIDEsIDI0OCwgMTM1LCA5NSwgMSwgMTk3LCAKKyAgICA5NSwgMSwgMjI4LCAyMzcsIDk1LCAxLCA4LCAyMjgsIDExMCwgOTUsIDEsIDI1NCwgMjMsIDE5NywgOTUsIDEsIDIyOCwgCisgICAgMTEwLCA5NSwgMSwgMjI4LCA5NiwgOTUsIDEsIDIzMywgMTM1LCA5NSwgMSwgMjMyLCA2MSwgOTUsIDEsIDIzMiwgMjU0LCAKKyAgICA5NSwgMSwgMjMyLCAyNDMsIDk1LCAxLCAyMTYsIDU2LCA5NSwgMSwgMjQ3LCAxNTMsIDk1LCAxLCAyMTYsIDQ4LCA5NSwgMSwgCisgICAgMjQ3LCAxNTIsIDk1LCAxLCAxNzYsIDk1LCAxLCAyNDMsIDEzNSwgOTUsIDEsIDgsIDE3NiwgOTUsIDEsIDIyNCwgODgsIDk1LCAKKyAgICAxLCAyMjQsIDY2LCA5NSwgMSwgMjI5LCA3NywgOTUsIDEsIDIyOSwgMjgsIDk1LCAxLCAyNTQsIDIzLCAyMjksIDc3LCA5NSwgCisgICAgMSwgMTYyLCA5NSwgMSwgMjExLCAxNjUsIDk1LCAxLCAyNDIsIDI0OSwgOTUsIDEsIDI0MiwgMjI2LCA5NSwgMSwgMjE1LCAKKyAgICAxNjUsIDk1LCAxLCAyNDYsIDI2LCA5NSwgMSwgMjI3LCAxNjUsIDk1LCAxLCAyMjcsIDE1MCwgOTUsIDEsIDIxNSwgMTc1LCAKKyAgICA5NSwgMSwgMjQ2LCAzMywgOTUsIDEsIDgsIDIxNSwgMTc1LCA5NSwgMSwgOCwgMjQ2LCAzMywgOTUsIDEsIDIyMywgMTA2LCAKKyAgICAyMTUsIDE3NSwgOTUsIDEsIDIyMCwgMTAyLCA5NSwgMSwgMjE4LCAyMjMsIDk1LCAxLCAyMTAsIDgyLCA5NSwgMSwgMjEwLCAKKyAgICAxNCwgOTUsIDEsIDIxNSwgMTgzLCA5NSwgMSwgMjQ2LCAzOCwgOTUsIDEsIDgsIDIxNSwgMTgzLCA5NSwgMSwgMjA2LCA5NSwgCisgICAgMSwgMjEwLCAxMTYsIDk1LCAxLCAyMTAsIDE1LCA5NSwgMSwgMjA5LCAyNDMsIDk1LCAxLCAyMDksIDIyMywgOTUsIDEsIAorICAgIDI1NCwgMjMsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMTUsIDk1LCAxLCAyMDksIDIyMiwgOTUsIDEsIDIxMiwgNjUsIDk1LCAKKyAgICAxLCAyNTQsIDIwOSwgOTUsIDEsIDI0MSwgMTg5LCA5NSwgMSwgMjI5LCAxOTIsIDk1LCA1LCAyNTMsIDIyMiwgOTUsIDUsIAorICAgIDIyMywgMTA2LCAyMTMsIDEzMywgOTUsIDUsIDIyMywgMTA2LCAyNTMsIDIyMiwgOTUsIDI1LCA1LCA2MSwgOTUsIDI1LCA1LCAKKyAgICAyNTUsIDczLCA5NSwgMjUsIDUsIDI1NCwgMjA1LCA5NSwgMjUsIDUsIDI1NCwgMTIzLCA5NSwgMjUsIDUsIDI1NCwgMTE1LCAKKyAgICA5NSwgMjUsIDUsIDc2LCA5NSwgMjUsIDUsIDIyNiwgMTgzLCA5NSwgMjUsIDUsIDIxMSwgMjI3LCA5NSwgMjUsIDUsIDIxMiwgCisgICAgOTgsIDk1LCAyNSwgNSwgNzUsIDk1LCAyNSwgNSwgMjQ1LCAxNTAsIDk1LCAyNSwgNSwgMjQ1LCAxMzgsIDk1LCAyNSwgNSwgCisgICAgMjI2LCAyMzIsIDk1LCAyNSwgNSwgNzMsIDk1LCAyNSwgNSwgMjQwLCAxMTksIDk1LCAyNSwgNSwgMjQwLCAxMTgsIDk1LCAKKyAgICAyNSwgNSwgMjQwLCAxMTcsIDk1LCAyNSwgNSwgMjM1LCAxODksIDk1LCAyNSwgNSwgMjM2LCA2MCwgOTUsIDI1LCA1LCAyMzYsIAorICAgIDMzLCA5NSwgMjUsIDUsIDIzNSwgMTU2LCA5NSwgMjUsIDUsIDIzNSwgMjMxLCA5NSwgMjUsIDUsIDcwLCA5NSwgMjUsIDUsIAorICAgIDIxNCwgMjI5LCA5NSwgMjUsIDUsIDIxNCwgMjI4LCA5NSwgMjUsIDUsIDIxNCwgMjI3LCA5NSwgMjUsIDUsIDIxNCwgMTE4LCAKKyAgICA5NSwgMjUsIDUsIDIxNCwgMjExLCA5NSwgMjUsIDUsIDIxNCwgMTc4LCA5NSwgMjUsIDUsIDIxMSwgMTE3LCA5NSwgMjUsIDUsIAorICAgIDIxMSwgOCwgOTUsIDI1LCA1LCAyNTQsIDI0MywgOTUsIDI1LCA1LCAyNTQsIDIzOSwgOTUsIDI1LCA1LCAyNDUsIDg2LCA5NSwgCisgICAgMjUsIDUsIDIyMiwgMTgzLCAyNDUsIDg2LCA5NSwgMjUsIDUsIDI0NSwgOTIsIDk1LCAyNSwgNSwgMjIyLCAxODMsIDI0NSwgCisgICAgOTIsIDk1LCAyNSwgNSwgMjU0LCAyMDEsIDk1LCAyNSwgNSwgMjQ1LCAxOTUsIDk1LCAyNSwgNSwgMjUzLCAxOTIsIDk1LCAKKyAgICAyNSwgNSwgMjI2LCAxMzQsIDk1LCAyNSwgNSwgMjMwLCAyNSwgOTUsIDI1LCA1LCAyMjksIDc5LCA5NSwgMTM4LCAyMjIsIAorICAgIDI1MSwgOTUsIDEzOCwgMjE2LCAxNCwgMjIyLCAyNTEsIDk1LCAxMzgsIDQ4LCA5NSwgMTM4LCA1MSwgOTUsIDEsIDIxNiwgCisgICAgMjgsIDk1LCAxLCAyMTYsIDI3LCA5NSwgMSwgMjE2LCAyNiwgOTUsIDEsIDIxNiwgMjUsIDk1LCAxLCAyMTYsIDI0LCA5NSwgCisgICAgMSwgMjE2LCAyMywgOTUsIDEsIDIxNiwgMjIsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyOSwgOTUsIDEsIDIyMywgMTA2LCAKKyAgICAyMTYsIDI4LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjYsIDk1LCAxLCAyMjMsIDEwNiwgMjE2LCAyNSwgOTUsIDEsIDIyMywgCisgICAgMTA2LCAyMTYsIDI0LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjIsIDU2LCAxLCAyNTQsIDIzLCA3NSwgMTQxLCAxLCAyNTQsIAorICAgIDIzLCAyMTEsIDQ3LCA0OSwgMjgsIDE2LCAyMjQsIDE1NCwgNDksIDI4LCAxNiwgMjQ4LCAxNTgsIDQ5LCAyOCwgMTYsIDIyNSwgCisgICAgMTc1LCA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyNDcsIDIwMSwgNDksIAorICAgIDI4LCAxNiwgMjE0LCAxNiwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAKKyAgICAyMzQsIDE5NywgNDksIDI4LCAxNiwgMjE3LCAxNjksIDQ5LCAyOCwgMTYsIDIyNiwgOSwgNDksIDI4LCAxNiwgMjEwLCAyMTcsIAorICAgIDQ5LCAyOCwgMTYsIDIxMCwgMjE4LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgMjMzLCAyMzQsIDQ5LCAyOCwgMTYsIDI1NCwgCisgICAgNjgsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyNDUsIDI2LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjE3LCAyLCA0OSwgMjgsIAorICAgIDE2LCAyMzQsIDE2MSwgNDksIDI4LCAxNiwgMjU0LCA1OCwgNDksIDI4LCAxNiwgMjU0LCA1OSwgMjQ3LCAyMDEsIDQ5LCAyOCwgCisgICAgMTYsIDIxNywgMTc1LCA0OSwgMjgsIDE2LCAyMTYsIDE1OSwgNDksIDI4LCAxNiwgMjI2LCAyMDYsIDI1NCwgMjEsIDQ5LCAKKyAgICAyOCwgMTYsIDI0MiwgMTU5LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjQsIDE1MywgNDksIDI4LCAxNiwgMjUwLCAxNDksIAorICAgIDQ5LCAyOCwgMTYsIDIxNCwgNiwgNDksIDI4LCAxNiwgMjM1LCAxNjQsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAKKyAgICAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjIxLCAyMTMsIDQ5LCAyOCwgMTYsIAorICAgIDIyNiwgMCwgNDksIDI4LCAxNiwgMjE4LCAxNDYsIDI1NCwgNjEsIDQ5LCAyOCwgMTYsIDIyNiwgMTEyLCAyNTQsIDIxLCA0OSwgCisgICAgMjgsIDE2LCAyMTQsIDE1LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyNTQsIDYyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDU2LCA0OSwgMjgsIDE2LCAyMzQsIDM3LCA0OSwgMjgsIDE2LCAyMjMsIDQ2LCA0OSwgMjgsIDE2LCAyMjUsIDEwNiwgMjU0LCAKKyAgICAyMSwgNDksIDI4LCAxNiwgMjE2LCA4MywgNDksIDI4LCAxNiwgMjU0LCAxMjEsIDQ5LCAyOCwgMTYsIDIyMSwgMTU5LCA0OSwgCisgICAgMjgsIDE2LCAyMTcsIDE3OCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjE3LCAxNzgsIDIzMSwgNDAsIDIxOCwgMTQ0LCA0OSwgCisgICAgMjgsIDE2LCAyMjYsIDEwNywgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjE2LCAxOTAsIDQ5LCAyOCwgMTYsIDIzMywgMjcsIDQ5LCAKKyAgICAyOCwgMTYsIDI0NiwgNDEsIDQ5LCAyOCwgMTYsIDIxNSwgMjI3LCA0OSwgMjgsIDE2LCAyMTYsIDIzMiwgNDksIDI4LCAxNiwgCisgICAgMjMzLCAyMzcsIDQ5LCAyOCwgMTYsIDI1NCwgNjgsIDI0NSwgMjYsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAKKyAgICAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzYsIDEyLCA0OSwgMjgsIDE2LCAyMTUsIDE5OSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAyMDAsIDIxNSwgMTk4LCA0OSwgMjgsIDE2LCAyMjUsIDIwMCwgNDksIDI4LCAxNiwgMjI0LCAxNTgsIDQ5LCAyOCwgCisgICAgMTYsIDIzNCwgMTEsIDQ5LCAyOCwgMTYsIDI1MCwgODAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyMywgMTQ2LCA0OSwgMjgsIAorICAgIDE2LCAyMjYsIDEyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjYsIDEwLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyNDAsIDEwOSwgCisgICAgNDksIDI4LCAxNiwgMjI5LCAyMDMsIDQ5LCAyOCwgMTYsIDIyNSwgMTU2LCA0OSwgMjgsIDE2LCAyMzQsIDEyLCAyNTQsIAorICAgIDE0OSwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDI1NCwgMTQ5LCA0OSwgMjgsIDE2LCAyMTgsIDEyMywgNDksIDI4LCAxNiwgCisgICAgMjQyLCAxMjMsIDQ5LCAyOCwgMTYsIDIzNSwgMTY0LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIDIwNiwgMjI5LCA5NSwgCisgICAgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNSwgMTU1LCA0OSwgMjgsIDE2LCAyMzMsIAorICAgIDI1NCwgNDksIDI4LCAxNiwgMjI1LCAxNTQsIDQ5LCAyOCwgMTYsIDIzMywgMjM2LCA0OSwgMjgsIDE2LCAyMjUsIDIwMSwgCisgICAgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDIyOSwgOTYsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAKKyAgICAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMTAsIDIxNSwgNDksIDI4LCAxNiwgMjU0LCA1OSwgMjI5LCA5NSwgNDksIAorICAgIDI4LCAxNiwgMjU0LCA2MCwgMjE3LCAxNzYsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxMCwgMjE2LCA0OSwgMjgsIDE2LCAKKyAgICAyMzMsIDIzNSwgNDksIDI4LCAxNiwgMjQ1LCAxNzMsIDQ5LCAyOCwgMTYsIDI1MCwgMTUwLCA0OSwgMjgsIDE2LCAyMzAsIAorICAgIDE5OCwgMjM1LCAxNjMsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNSwgMTA2LCAyMjksIAorICAgIDk1LCA0OSwgMjgsIDE2LCAyMjQsIDE1OSwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAyMDMsIDQ5LCAyOCwgMTYsIDI1NCwgCisgICAgODQsIDQ5LCAyOCwgMTYsIDIzMiwgNTgsIDQ5LCAyOCwgMTYsIDIyNiwgMTAsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgCisgICAgMTIsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgNjAsIDIyNiwgMTEsIDQ5LCAyOCwgMTYsIDIzMywgMTUzLCA0OSwgMjgsIAorICAgIDE2LCAyNTQsIDg1LCA0OSwgMjgsIDE2LCAyMTUsIDE5OSwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjQ1LCAxNzYsIDQ5LCAyOCwgCisgICAgMTYsIDIxNywgMTc4LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTcsIDE3MCwgNDksIDI4LCAxNiwgMjUwLCA4MCwgMjI5LCAKKyAgICA5NSwgNDksIDI4LCAxNiwgMjQ1LCAxMDYsIDQ5LCAyOCwgMTYsIDIyMSwgMTYwLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTEsIAorICAgIDE1MSwgMjM0LCAzNywgNDksIDI4LCAxNiwgMjE1LCAxOTYsIDQ5LCAyOCwgMTYsIDIyNCwgMTYwLCA0OSwgMjgsIDE2LCAKKyAgICAyMTUsIDIwMCwgNDksIDI4LCAxNiwgMjE1LCAxOTcsIDQ5LCAyOCwgMTYsIDIyNCwgMTU3LCA0OSwgMjgsIDE2LCAyMTUsIAorICAgIDE5NSwgNDksIDI4LCAxNiwgMjI0LCAxNTYsIDQ5LCAyOCwgMTYsIDI0MiwgMTU4LCA0OSwgMjgsIDE2LCAyNTQsIDE0LCA0OSwgCisgICAgMjgsIDE2LCAyNDUsIDYwLCAyNTQsIDE0LCA0OSwgMjgsIDE2LCAyMjYsIDEwNywgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjE2LCAKKyAgICAxODksIDI0NSwgNjksIDQ5LCAyOCwgMTYsIDIxNiwgMTg5LCAyNDUsIDI1LCA0OSwgMjgsIDE2LCAyMTYsIDE5MSwgMjU0LCAKKyAgICA2MywgNDksIDI4LCAxNiwgMjE2LCAxODQsIDIzNCwgMjQ3LCAyNTQsIDU1LCA0OSwgMjgsIDE2LCAyMzQsIDE5OSwgNDksIAorICAgIDI4LCAxNiwgMjQ1LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTEsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyMTEsIDExLCAKKyAgICAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMTgsIDE0NSwgNDksIDI4LCAxNiwgMjM0LCAzOCwgMjU0LCA5NiwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyMDIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgCisgICAgMjU0LCAxNDksIDQ5LCAyOCwgMTYsIDIzMywgMjM4LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNTQsIDYyLCAyMjksIDk1LCAKKyAgICA0OSwgMjgsIDE2LCAyNTQsIDY0LCA0OSwgMjgsIDE2LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgMjE1LCAyMTAsIDQ5LCAyOCwgCisgICAgMTYsIDIxNiwgMjI0LCA0OSwgMjgsIDE2LCAyMzQsIDIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDI0NSwgMTM0LCAyNTAsIDcxLCAKKyAgICA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyNDYsIDQyLCAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyMTUsIDIxMiwgCisgICAgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjE2LCAyMzQsIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIAorICAgIDIzNiwgNywgMjUwLCA3MSwgNDksIDI4LCAxNiwgMjQyLCAxNTksIDIyOSwgOTYsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDI0MiwgCisgICAgMTU5LCAyMjYsIDEsIDI1NCwgMTAsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjYsIDEsIDI0OCwgMjksIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjI1LCA0OSwgMjgsIDE2LCAyNDcsIDIyNiwgMjI2LCAxLCAyNTQsIDExLCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgCisgICAgMjQ3LCAyMjYsIDIyNiwgMSwgMjU0LCAxMSwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjQ3LCAyMjYsIDIyNiwgMSwgMjQ4LCAKKyAgICAyOSwgNDksIDI4LCAxNiwgMjE1LCAyMTYsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDQ5LCAyOCwgMTYsIDIzNiwgMTQsIDQ5LCAKKyAgICAyOCwgMTYsIDI0NywgMjQ2LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjI1LCAwLCAyNTQsIDE2LCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDIxMSwgMjU0LCAxMywgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDI1NCwgMTYsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMzEsIAorICAgIDM0LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjMxLCA0NSwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDI0MiwgMTYwLCA0OSwgCisgICAgMjgsIDE2LCAyNTQsIDIxMSwgMjQyLCAxNTcsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyMjUsIDAsIDI0MiwgMTYwLCA0OSwgCisgICAgMjgsIDE2LCAyMzEsIDE1MSwgMjI0LCAxNjUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjU0LCAxNTEsIAorICAgIDIyNCwgMTY1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDI0OCwgMjgsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzEsIDE1MSwgMjU0LCAxNTEsIDI0OCwgMjgsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE1LCAyMDUsIAorICAgIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE1LCAyMTcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTYsIDIyOCwgCisgICAgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTYsIDIyOCwgMjMzLCAzNSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIAorICAgIDIzMSwgMTUxLCAyMzMsIDM1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIyNSwgMzksIDI0MCwgMTA3LCA0OSwgCisgICAgMjgsIDE2LCAyMzUsIDE2OSwgMjE2LCAyNTEsIDI0MCwgMTA4LCA0OSwgMjgsIDE2LCAyNTQsIDYwLCAyMTYsIDI1MSwgMjQwLCAKKyAgICAxMDgsIDQ5LCAyOCwgMTYsIDI0NCwgMTcyLCAyMTYsIDIyNSwgNDksIDI4LCAxNiwgMjQ0LCAxNzIsIDIzMCwgMTQzLCA0OSwgCisgICAgMjgsIDE2LCAyNDQsIDE3MiwgMjQ3LCAyMzAsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMTQsIDEwLCAyNDAsIDEwNywgNDksIAorICAgIDI4LCAxNiwgMjMxLCAxNTEsIDIyNCwgMTY0LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIyNSwgMzksIDIxNiwgCisgICAgMjI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjQyLCAxNTUsIDIzMCwgMjYsIDI1NCwgNjMsIDQ5LCAyOCwgMTYsIDI0MiwgCisgICAgMTU1LCAyMzAsIDI2LCAyNDcsIDIwMCwgNDksIDI4LCAxNiwgMjQ1LCAxNDgsIDIzNCwgMjQ3LCAyNDMsIDIzNiwgMjEzLCAKKyAgICAxMjQsIDQ5LCAyOCwgMTYsIDIzNiwgMTMsIDQ5LCAyOCwgMTYsIDIzNiwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNTQsIAorICAgIDIyLCAyNDgsIDI3LCAyNDAsIDEwNiwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAxOTAsIDQ5LCAyOCwgMTYsIAorICAgIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI5LCAyMDMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMjksIDE5OCwgMjQwLCAxMDcsIAorICAgIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjE5LCAxMDIsIAorICAgIDI0NywgMjQzLCAyNDgsIDMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjM0LCAxODIsIDQ5LCAyOCwgMTYsIAorICAgIDI0MywgMjM2LCAyNDcsIDI0NCwgMjEwLCAyMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NywgMjQ0LCAyMjgsIDIzNCwgCisgICAgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI4LCAyMzQsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0MywgMjM2LCAyMzEsIDE5MSwgMjUwLCA3MywgMjQ3LCAyMzAsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyMzEsIDE5MSwgCisgICAgMjUwLCA3MywgMjMwLCAxNDMsIDQ5LCAyOCwgMTYsIDI0NCwgMTIyLCAyMTksIDEwMiwgMjUwLCA3MywgMjE0LCA5LCA0OSwgCisgICAgMjgsIDE2LCAyNDMsIDIzNiwgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNywgMTc5LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjI5LCAKKyAgICA5NywgNDksIDI4LCAxNiwgMjUwLCA3NCwgMjA5LCAyNDksIDQ5LCAyOCwgMTYsIDI1MCwgNzQsIDIzNCwgMzYsIDQ5LCAyOCwgCisgICAgMTYsIDI1MCwgNzQsIDIxOSwgOSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0MCwgMTU0LCAyMTEsIDEwLCAyMTYsIDIyOSwgCisgICAgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDI0NSwgMTQ5LCAyNTQsIDg2LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMTUsIDIwNiwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNSwgMjA2LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE2LCAyMjksIDQ5LCAyOCwgCisgICAgMTYsIDI0NywgMjM4LCAyNTQsIDY1LCAyNDYsIDQyLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIzMCwgMTQxLCAKKyAgICAyMTYsIDIzMywgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyNDcsIDIyMiwgMjQ1LCAzNiwgMjQ3LCAxMzksIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTUsIDIxNCwgMjI2LCAyMTEsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAKKyAgICAyNTQsIDY1LCAyNDYsIDQyLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjMwLCAxNDEsIDIxNiwgMjMzLCAyNDcsIAorICAgIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjQ3LCAyMjIsIDI0NSwgMzYsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIAorICAgIDEwLCAyMTUsIDIxNCwgMjI2LCAyMTEsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDMsIDQ5LCAyNDcsIDIzNywgNDksIDI4LCAKKyAgICAxNiwgMjQzLCA0OSwgMjExLCA5LCA0OSwgMjgsIDE2LCAyNDcsIDI0NSwgMjU0LCA2NSwgMjMwLCAxOTksIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjQ1LCAyNTQsIDY1LCAyMzEsIDczLCA0OSwgMjgsIDE2LCAyNDcsIDI0NSwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjQ1LCAyMTYsIDE4MiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDIxNiwgMTgyLCA0OSwgMjgsIDE2LCAyMTksIDE2MywgCisgICAgMjE2LCAxODMsIDI0NywgMTg2LCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjE2LCAxODMsIDIxNSwgMjA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMTksIDE2MywgMjE2LCAxODMsIDIxNiwgMjIyLCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDQsIDQ5LCAyOCwgMTYsIAorICAgIDIxOSwgMTYzLCAyNTMsIDI0NSwgMjQ3LCAxODYsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyNTMsIDI0NSwgMjE1LCAyMDcsIAorICAgIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyNTMsIDI0NSwgMjE2LCAyMjIsIDQ5LCAyOCwgMTYsIDI0NywgMjIzLCAyNDMsIDMwLCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIyOSwgMjI2LCAxMzQsIDQ5LCAyOCwgMTYsIDIxOCwgMTM3LCA0OSwgMjgsIDE2LCAyNTQsIDcsIAorICAgIDE5MCwgNDksIDI4LCAxNiwgMjU0LCA3LCAyMTMsIDEyNCwgNDksIDI4LCAxNiwgMjU0LCA3LCAyNDMsIDEzNSwgNDksIDI4LCAKKyAgICAxNiwgMjU0LCA3LCAyNDgsIDMsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjM0LCAxODIsIDQ5LCAyOCwgMTYsIDI1NCwgNywgCisgICAgMjEwLCAyMywgNDksIDI4LCAxNiwgMjU0LCA3LCAyMjgsIDIzMywgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDIyOSwgOTYsIAorICAgIDIzMSwgNDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAyMjksIDk2LCAyMzEsIDQ0LCA0OSwgMjgsIDE2LCAyMzQsIDE2MiwgCisgICAgMjI5LCA5NiwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDIzNCwgMTYzLCAyMjksIDk2LCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAzOCwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjksIDk2LCAyMzQsIDE5NiwgMjgsIDE2LCAyMTksIAorICAgIDE1NSwgMjUyLCAxMzUsIDI4LCAxNiwgNTIsIDI1MiwgMTM1LCAyOCwgMTYsIDQwLCAyNTIsIDEzNSwgMjgsIDE2LCAyMjMsIAorICAgIDUwLCA0MCwgMjUyLCAxMzUsIDI4LCAxNiwgMjQ4LCAxNTUsIDI1MiwgMTM1LCAyOCwgMTYsIDIxOSwgMjUxLCAyNTIsIDEzNSwgCisgICAgMjgsIDE2LCA0MywgMjIzLCA3NywgNTAsIDI4LCAxNiwgNDQsIDIyMywgNzcsIDUwLCAyOCwgMTYsIDIyMywgNzcsIDI0NywgCisgICAgMTE4LCAyOCwgMTYsIDI0OCwgMTk2LCAyMjEsIDE2MywgMjgsIDE2LCAyNDgsIDIyMiwgMjUwLCAyNDksIDI4LCAxNiwgMjIxLCAKKyAgICAxNjMsIDI4LCAxNiwgMjQ5LCAyMzQsIDI4LCAxNiwgMjIzLCA3NSwgMjQ0LCAxMTEsIDI4LCAxNiwgMjIzLCA3NSwgMjQ0LCAKKyAgICAxMTAsIDI4LCAxNiwgMjIzLCA3NSwgMjQ0LCAxMDksIDI4LCAxNiwgMjQ0LCAxMzEsIDI4LCAxNiwgMjQ0LCAxMzIsIDUxLCAKKyAgICAyOCwgMTYsIDI1MSwgMTQ4LCA3OCwgMjgsIDE2LCAyNTEsIDI0LCAyOCwgMTYsIDI1MSwgMTU5LCAyOCwgMTYsIDEyNywgMjgsIAorICAgIDE2LCAyMjYsIDE5MywgMjE4LCAxNjMsIDI4LCAxNiwgMjE1LCA1NywgMjE4LCAxNjMsIDI4LCAxNiwgMjE2LCAxNDIsIDIxOCwgCisgICAgMTYzLCAyOCwgMTYsIDI0NCwgMTAsIDIxOCwgMTYzLCAyOCwgMTYsIDI0NCwgODAsIDIxOCwgMTYzLCAyOCwgMTYsIDIxOSwgCisgICAgMTI0LCAyMTgsIDE2MywgMjgsIDE2LCAyMTksIDEyMiwgMjQzLCAyNTAsIDI4LCAxNiwgMjQ0LCA4LCAyNDMsIDI1MCwgMjgsIAorICAgIDE2LCAyNDMsIDIwMywgMjUwLCAxNCwgMjgsIDE2LCAyNDMsIDIwMywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgCisgICAgMTYsIDI0MywgMjAzLCAyNTAsIDE1LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAxNiwgMjUxLCA2NywgMjUwLCAxNCwgMjgsIAorICAgIDE2LCAyNDUsIDcsIDI1MCwgMTQsIDI4LCAxNiwgMjQ1LCA3LCAyNTAsIDE1LCAyMjYsIDEzNiwgMjU0LCAxNDIsIDI4LCAxNiwgCisgICAgMjQ1LCA3LCAyNTAsIDE1LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAxNiwgMjQ2LCA4MywgMjUwLCAxMywgMjgsIDE2LCAKKyAgICAyNDYsIDgzLCAyNTAsIDEyLCAyOCwgMTYsIDIzMCwgODUsIDIzMSwgOTAsIDIyMywgNjEsIDI4LCAxNiwgNTIsIDIyMCwgNzUsIAorICAgIDI4LCAxNiwgNTIsIDI0NCwgNjUsIDI4LCAxNiwgMjQ0LCA2NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjQ0LCA2NiwgMjQ2LCAKKyAgICAxMDYsIDI4LCAxNiwgMjI5LCAxODgsIDIxNCwgMTYzLCAyOCwgMTYsIDIyOSwgMTg4LCAyNDYsIDEwNiwgMjgsIDE2LCAyMjAsIAorICAgIDc2LCAyMTQsIDE2MywgMjgsIDE2LCAyMjAsIDc2LCAyNDYsIDEwNiwgMjgsIDE2LCAyMjQsIDIyLCAxMzgsIDIyMCwgNzUsIAorICAgIDI4LCAxNiwgMjI0LCAyMiwgMTM4LCAyNDQsIDY1LCAyOCwgMTYsIDI0OSwgMjE2LCAyMTYsIDg3LCAyOCwgMTYsIDI0OSwgCisgICAgODUsIDIxNiwgODcsIDI4LCAxNiwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgMTYsIDIyNiwgMTM2LCAyNTIsIDEyMiwgMjgsIAorICAgIDE2LCAyMjQsIDQsIDI1NCwgMTQyLCAyOCwgMTYsIDIyNCwgNCwgMjUyLCAxMjIsIDI4LCAxNiwgMjMwLCA4OCwgMjIzLCA2MSwgCisgICAgMjgsIDE2LCAyMTEsIDI1MSwgMjIzLCA2MSwgMjgsIDE2LCAxNjMsIDIyMywgNjEsIDI4LCAxNiwgMjI0LCAyMiwgMjIzLCAKKyAgICA2MSwgMjgsIDE2LCAyNDUsIDE4OSwgMjIzLCA2MSwgMjgsIDE2LCAyMTksIDExOCwgMjIzLCA2MSwgMjgsIDE2LCAyMTYsIAorICAgIDE2MCwgMjIzLCA2MSwgMjgsIDE2LCAyMTksIDExMCwgMjIzLCA2MSwgMjgsIDE2LCAxMjMsIDI0MCwgMjExLCAyMTUsIDcxLCAKKyAgICAyMjMsIDYxLCAyOCwgMTYsIDIxMSwgMTc5LCAyMjgsIDQzLCAyOCwgMTYsIDk2LCAyMjgsIDQzLCAyOCwgMTYsIDI1MCwgMzYsIAorICAgIDIxMSwgMTc5LCAyMjgsIDQzLCAyOCwgMTYsIDQyLCAyMjgsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCA0MiwgMjI4LCA0NCwgCisgICAgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyMCwgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIAorICAgIDIyOCwgNDQsIDEyMCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDQzLCAyMTEsIDI1MywgMjgsIDE2LCAKKyAgICAyMTUsIDIyNiwgMjI4LCA0NCwgNDMsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0NCwgMjExLCAyNTMsIAorICAgIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTI0LCAKKyAgICAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgMTI0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgCisgICAgMjI4LCA0NCwgMTIwLCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyMCwgNDQsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIzMCwgMTI5LCAyMjgsIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMzAsIDEyOSwgMjI4LCA0NCwgMjUxLCAyMjEsIAorICAgIDI4LCAxNiwgMjE1LCAyMjMsIDIyOCwgNDQsIDEyNCwgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjMsIDIyOCwgNDQsIDEyNCwgCisgICAgMjUxLCAyMjEsIDI4LCAxNiwgMjI2LCA0LCAyMjgsIDQzLCAyOCwgMTYsIDIxMywgMTMyLCAyMjgsIDQzLCAyOCwgMTYsIAorICAgIDIyOCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDIyNywgMjAzLCAyMjgsIDQzLCAyOCwgMTYsIDI0OSwgMjQxLCAyMjgsIDQ0LCAKKyAgICAyMTEsIDI1MywgMjgsIDE2LCAyNDksIDI0MSwgMjI4LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjUxLCAxNDYsIDI4LCAxNiwgCisgICAgMjExLCAyNTEsIDIyOCwgNDcsIDI4LCAxNiwgMTYzLCAyMjgsIDQ3LCAyOCwgMTYsIDIyNCwgMjIsIDIyOCwgNDcsIDI4LCAKKyAgICAxNiwgMjQ1LCAxODksIDIyOCwgNDcsIDI4LCAxNiwgMjE5LCAxMTgsIDIyOCwgNDcsIDI4LCAxNiwgMjE2LCAxNjAsIDIyOCwgCisgICAgNDcsIDI4LCAxNiwgMjE5LCAxMTAsIDIyOCwgNDcsIDI4LCAxNiwgMTIzLCAyNDAsIDIxMSwgMjE1LCA3MSwgMjI4LCA0NywgCisgICAgMjgsIDE2LCAzOCwgMjE4LCAxMzksIDI4LCAxNiwgMzgsIDIxOCwgMjQwLCAyMTgsIDEzOSwgMjgsIDE2LCAzOCwgMjE1LCAKKyAgICAyMzQsIDI4LCAxNiwgMzgsIDIxNSwgMjMzLCAyOCwgMTYsIDM4LCAyMTUsIDIzMiwgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAKKyAgICAyMzQsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgMjMzLCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIDIzMiwgMjgsIDE2LCAzOCwgCisgICAgMjUzLCAxODksIDI0NywgMTIwLCAyOCwgMTYsIDM4LCAyNDQsIDcyLCAyOCwgMTYsIDM4LCAyNDQsIDcxLCAyOCwgMTYsIDM4LCAKKyAgICAyNDQsIDcwLCAyOCwgMTYsIDM4LCAyNDQsIDY5LCAyOCwgMTYsIDM4LCAyNDQsIDY4LCAyOCwgMTYsIDI1MiwgNTgsIDI1MiwgCisgICAgNzQsIDI4LCAxNiwgMjQ1LCAxNDMsIDI1MiwgNzQsIDI4LCAxNiwgMjUyLCA1OCwgMjE2LCAxMTEsIDI4LCAxNiwgMjQ1LCAKKyAgICAxNDMsIDIxNiwgMTExLCAyOCwgMTYsIDI1MiwgNTgsIDIxOSwgODAsIDI4LCAxNiwgMjQ1LCAxNDMsIDIxOSwgODAsIDI4LCAKKyAgICAxNiwgMjUyLCA1OCwgMjI1LCAxMTUsIDI4LCAxNiwgMjQ1LCAxNDMsIDIyNSwgMTE1LCAyOCwgMTYsIDM4LCAyNTUsIDE0LCAKKyAgICAyOCwgMTYsIDM4LCAyMTgsIDE2NSwgMjgsIDE2LCAzOCwgMjE2LCAyMzgsIDI4LCAxNiwgMzgsIDIxOCwgMTY2LCAyOCwgMTYsIAorICAgIDM4LCAyMzEsIDE2MiwgMjgsIDE2LCAzOCwgMjMxLCAxNjEsIDI4LCAxNiwgMzgsIDI1NSwgMTMsIDI4LCAxNiwgMzgsIDIzMiwgCisgICAgMTEyLCAyOCwgMTYsIDI1MywgMjU0LCAyMTQsIDE2MywgMjgsIDE2LCAyNTMsIDI1NCwgMjQ2LCAxMDYsIDI4LCAxNiwgMzgsIAorICAgIDI0NywgMTM1LCAyOCwgMTYsIDM4LCAyMjIsIDIzMSwgMjgsIDE2LCAzOCwgMjQ0LCA1OCwgMjgsIDE2LCAzOCwgMjE5LCA3NiwgCisgICAgMjgsIDE2LCAzOCwgMjUyLCAzOCwgMjgsIDE2LCAzOCwgNTIsIDIxNiwgMTksIDI4LCAxNiwgMzgsIDIxNSwgMjExLCAyMTYsIAorICAgIDE5LCAyOCwgMTYsIDIyMiwgMjM1LCAyOCwgMTYsIDIxOCwgNzUsIDI4LCAxNiwgMjEwLCAxNTksIDI4LCAxNiwgMjI1LCAKKyAgICAxMDcsIDI4LCAxNiwgMjMxLCAyNSwgMjgsIDE2LCAyNDQsIDE3LCAyOCwgMTYsIDI0OSwgMTM4LCAyOCwgMTYsIDI0OCwgNzgsIAorICAgIDI4LCAxNiwgMjQyLCAxNTAsIDIyOCwgNDgsIDIxOSwgOTUsIDI4LCAxNiwgMjQyLCAxNTAsIDIyOCwgNDgsIDIyOCwgNzUsIAorICAgIDIxOSwgOTUsIDI4LCAxNiwgMjE2LCAwLCAyOCwgMTYsIDIxNSwgOTUsIDI4LCAxNiwgMjM1LCAxOTMsIDIxNSwgOTUsIDI4LCAKKyAgICAxNiwgMjE1LCA5NiwgMjE5LCA5NSwgMjgsIDE2LCAyMTUsIDk2LCAyMTQsIDE2MywgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAKKyAgICAxMDIsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTksIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTgsIDI4LCAxNiwgMjI2LCAKKyAgICAxNDgsIDIxOCwgOTcsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTYsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTUsIDI4LCAKKyAgICAxNiwgMjI2LCAxNDgsIDIxOCwgOTQsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgOTMsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgCisgICAgOTIsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgMTAxLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDEwMCwgMjgsIDE2LCAyNDEsIAorICAgIDI0NSwgMjgsIDE2LCAyMjksIDEwNSwgMjgsIDE2LCAyNDUsIDE0MywgNjQsIDIxOCwgMTMzLCAyOCwgMTYsIDI0OCwgNzEsIAorICAgIDIxOSwgOTUsIDI4LCAxNiwgMzgsIDEyNCwgMjUxLCAxNjksIDI4LCAxNiwgMzgsIDEyMCwgMjUxLCAxNjksIDI4LCAxNiwgCisgICAgMzgsIDI0MiwgMCwgMjgsIDE2LCAzOCwgMjE5LCA2NywgMjI1LCA0MywgMjgsIDE2LCAyMjUsIDIxNiwgNzgsIDI4LCAxNiwgCisgICAgMjI1LCAyMTYsIDEyMCwgNzgsIDI4LCAxNiwgMTYzLCAyMjUsIDIxNiwgNzgsIDI4LCAxNiwgMjQyLCAxODIsIDIxNCwgMTYzLCAKKyAgICAyOCwgMTYsIDI0MiwgMTgyLCAyNDYsIDEwNiwgMjgsIDE2LCAyLCAyNDQsIDEwMCwgMjgsIDE2LCAyNDgsIDE4MCwgMjgsIAorICAgIDE2LCAyNDgsIDE4MSwgMjU0LCAxNTQsIDI4LCAxNiwgMjMxLCAxMzMsIDI4LCAxNiwgMjMyLCAxMjksIDI4LCAxNiwgMjUxLCAKKyAgICAxNDMsIDI4LCAxNiwgMjIwLCAxNTQsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTU0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMzAsIAorICAgIDE4NCwgMjgsIDE2LCAyMzAsIDE4NSwgMjUxLCAyMjEsIDI4LCAxNiwgMjIwLCAxNDgsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgCisgICAgMTQ4LCAyNTEsIDIyMSwgMjgsIDE2LCAyNDMsIDIyMCwgMjExLCAyNTMsIDI4LCAxNiwgMjQzLCAyMjAsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIzMiwgMTMwLCAyMjUsIDE4MCwgMjIzLCA2MSwgMjgsIDE2LCAyMzIsIDEzMCwgMjM2LCA0LCAyMjMsIDYxLCAKKyAgICAyOCwgMTYsIDI1MSwgMTQ0LCAyMjMsIDYxLCAyOCwgMTYsIDIyMCwgMTU0LCAyMjMsIDYxLCAyOCwgMTYsIDIzMCwgMTg1LCAKKyAgICAyMjMsIDYxLCAyOCwgMTYsIDIyMCwgMTQ4LCAyMjMsIDYxLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMjUsIDE3OCwgMjQ5LCAxMDcsIAorICAgIDIyNCwgMTc0LCAyMjUsIDE3OSwgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjM2LCAKKyAgICAzLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMjUsIDE3OCwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMjUsIDE4MCwgMjQ3LCAyMTEsIAorICAgIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMjUsIDE3OSwgMjgsIDE2LCAyMTYsIDI0OSwgCisgICAgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgMywgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgCisgICAgMjI0LCAxNzQsIDIzNiwgNCwgMjQ3LCAyMTEsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAKKyAgICAyMzYsIDQsIDI0NywgMjEwLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjM2LCA0LCAKKyAgICAyNDcsIDIwOSwgMjgsIDE2LCAyNDksIDEzMywgMjgsIDE2LCAyNDIsIDEyNiwgMjUxLCA2NywgMjUwLCAxNCwgMjgsIDE2LCAKKyAgICAyNDIsIDEyNiwgMjQ1LCA3LCAyNTAsIDE0LCAyOCwgMTYsIDQyLCAyNTMsIDE1OCwgMjgsIDE2LCAyMTMsIDE1MSwgMjgsIAorICAgIDE2LCAyMjUsIDE0LCAyOCwgMTYsIDI1MCwgNSwgMjgsIDE2LCAyMjEsIDIwMywgMjgsIDE2LCAyNTAsIDksIDI4LCAxNiwgCisgICAgMjE2LCA3LCAyOCwgMTYsIDIyNCwgMjQyLCAyOCwgMTYsIDIyNCwgMjQzLCAyNDQsIDYwLCAyOCwgMTYsIDIyMSwgMjA0LCAKKyAgICAyNDQsIDYwLCAyOCwgMTYsIDIxNiwgOCwgMjIzLCA1OCwgMjgsIDE2LCAyMjUsIDE2MywgMjE4LCA2NiwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjI5LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTgsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIwOCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjAxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTMsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDE4NywgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg2LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAxODUsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4NCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI4LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMjcsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyNiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjI1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyMywgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjIyLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjEsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIyMCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE5LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTcsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIxNiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMTQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxMywgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkyLCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAxOTEsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MCwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMTg5LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyOSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjE4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5MywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxODUsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIyNywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjI2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMjUsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjIxLCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMjAsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxOSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjE0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIxMiwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjExLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTAsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIwOSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA3LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDYsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIwNSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMDMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAwLCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAxOTksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5OCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMTk3LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTYsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5NSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMTk0LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTIsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5MSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTkwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxODksIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDE4OCwgMzgsIDI2LCAyOCwgMjE1LCAyMDgsIDM4LCAyNiwgMjgsIDIxNiwgMjIzLCAzOCwgMjYsIAorICAgIDI4LCAyMjUsIDE4OCwgMjYsIDI4LCAyMzMsIDMxLCAyMzAsIDE0MiwgMzEsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0MSwgCisgICAgMjIyLCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDAsIDIxNCwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjIsIAorICAgIDI0MSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIyLCAyNDAsIDIxMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMywgMTgwLCAKKyAgICAzMSwgMjUwLCAxNzQsIDE4MCwgMzEsIDI0MywgMjI5LCAyNTAsIDM1LCAxODAsIDMxLCAyMzAsIDE3NywgMTgwLCAzMSwgCisgICAgMjUyLCAxMzAsIDE4MCwgMzEsIDIzNCwgMTc5LCAyMTksIDc5LCAxODAsIDMxLCAyNDksIDE3OSwgMTgwLCAzMSwgMjUzLCAKKyAgICAyMzMsIDE4MCwgMzEsIDIyNiwgMTYzLCAxODAsIDMxLCAyNTEsIDE1MywgMjI2LCAxMzAsIDE4MCwgMzEsIDI0OCwgNzMsIAorICAgIDE3NywgMjQ3LCAxNzksIDE4MCwgMzEsIDI0NywgMTc2LCAxODAsIDMxLCAyMTAsIDIyMiwgMTgwLCAzMSwgMjM1LCAyNDcsIAorICAgIDE4MCwgMzEsIDIyNSwgMTk3LCAxODAsIDMxLCAyMjMsIDEyNywgMTgwLCAzMSwgMjQ5LCAxODksIDE4MCwgMzEsIDI0MSwgCisgICAgNjAsIDI1MiwgMTg0LCAxODAsIDMxLCAyMTIsIDU5LCAxODAsIDMxLCAyNDQsIDM5LCAxODAsIDMxLCAyNTQsIDI0NiwgMTgwLCAKKyAgICAzMSwgMjIzLCA4OSwgMTgwLCAzMSwgMjIzLCA2NSwgMTgwLCAzMSwgMjQ1LCAyMjEsIDE4MCwgMzEsIDIzNSwgNTMsIDE4MCwgCisgICAgMzEsIDI0OSwgMTg0LCAxODAsIDMxLCAyNDUsIDE0MiwgMTgwLCAzMSwgMjQ2LCA1MiwgMTgwLCAzMSwgMjUwLCAxNDUsIAorICAgIDE4MCwgMzEsIDI0OCwgODIsIDE4MCwgMzEsIDIzLCAyMjMsIDY0LCAxODAsIDMxLCAyMjYsIDgxLCAxODAsIDMxLCAyMzMsIAorICAgIDM0LCAxODAsIDMxLCAyNDksIDI1NCwgMTgwLCAzMSwgMjM0LCA3NywgMTgwLCAzMSwgMjQzLCA4NiwgMTgwLCAzMSwgMjE4LCAKKyAgICAxMTIsIDE4MCwgMzEsIDIyNCwgMTMwLCAxODAsIDMxLCAyNDMsIDIyOCwgMTgwLCAzMSwgMjIzLCA2NiwgMTgwLCAzMSwgCisgICAgMjMzLCA3MSwgMTc3LCAyMzAsIDE1NywgMTgwLCAzMSwgMjIzLCA2MiwgMTgwLCAzMSwgMjQyLCAxNjgsIDIxNiwgNDIsIAorICAgIDIzMSwgNzYsIDE4MCwgMzEsIDI0NSwgMTQ0LCAxODAsIDMxLCAyMTgsIDEyNCwgMTgwLCAzMSwgMjQyLCAxMjgsIDE4MCwgCisgICAgMzEsIDI0NSwgMTM2LCAxODAsIDMxLCAyMjUsIDIzNSwgMTgwLCAzMSwgMjIyLCAyMjUsIDE4MCwgMzEsIDI0NCwgNTksIAorICAgIDE4MCwgMzEsIDIxNCwgOCwgMTc3LCAyMTIsIDQ0LCAxODAsIDMxLCAyNDksIDE5MywgMTgwLCAzMSwgMjMxLCA4OSwgMTgwLCAKKyAgICAzMSwgMjQ1LCA2MSwgMTgwLCAzMSwgMjE0LCAxNzIsIDE4MCwgMzEsIDI0NywgMjEyLCAxODAsIDMxLCAyNTAsIDAsIDIzMCwgCisgICAgMTEwLCAxODAsIDMxLCAyNDIsIDEwNiwgMTgwLCAzMSwgMjQzLCA4NywgMjM1LCAyNTUsIDE4MCwgMzEsIDIzMSwgMTQxLCAKKyAgICAxODAsIDMxLCAyNTUsIDEwLCAxODAsIDMxLCAyNDUsIDE1NywgMTgwLCAzMSwgMjQ2LCAxMDksIDE4MCwgMzEsIDIxMiwgNDIsIAorICAgIDE4MCwgMzEsIDIxOSwgMTUwLCAxODAsIDMxLCAyMzUsIDIyMiwgMTgwLCAzMSwgMjQ4LCA0MiwgMTgwLCAzMSwgMjQ4LCAKKyAgICAxNjAsIDE4MCwgMzEsIDI0NywgMjA4LCAxODAsIDMxLCAyNDUsIDI5LCAxODAsIDMxLCAyMjAsIDExNSwgMTgwLCAzMSwgCisgICAgMjE4LCAxMjgsIDE4MCwgMzEsIDI0MiwgMiwgMTgwLCAzMSwgMjQ5LCAyMTIsIDE4MCwgMzEsIDI0OSwgMjUxLCAxODAsIDMxLCAKKyAgICAyNDQsIDE3NywgMTgwLCAzMSwgMjU0LCAyMTIsIDE4MCwgMzEsIDI0OSwgMjExLCAxODAsIDMxLCAyMjYsIDE5NywgMjE2LCAKKyAgICAxOTYsIDIxMywgMjQyLCAxODAsIDMxLCAyNDcsIDIzMiwgMTgwLCAzMSwgMjMzLCAxMjQsIDE4MCwgMzEsIDI0NCwgMTMsIAorICAgIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxMTAsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAKKyAgICAxMDUsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxNTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIAorICAgIDIxLCAxNjEsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxODksIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAKKyAgICAxNzQsIDIxLCAxOTQsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAxOTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgCisgICAgMjE0LCAxNzQsIDIxLCAxOTUsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE0LCAxNzQsIDIxLCAyMDAsIDI0OSwgMTQ5LCAyMjIsIAorICAgIDIwMiwgMjE2LCAyNDMsIDIxLCAxMTAsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxMDUsIDI0OSwgMTQ5LCAKKyAgICAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxNTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxNjEsIDI0OSwgCisgICAgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxODksIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxOTQsIAorICAgIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAxOTgsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAKKyAgICAxOTUsIDI0OSwgMTQ5LCAyMjIsIDIwMiwgMjE2LCAyNDMsIDIxLCAyMDAsIDExLCAyMywgNiwgNjEsIDExLCAyMywgNiwgCisgICAgMjUzLCAxNTgsIDExLCAyMywgNiwgMjUxLCA2NiwgMTEsIDIzLCA2LCAyNDksIDYwLCAxMSwgMjMsIDYsIDc1LCAxMSwgMjMsIAorICAgIDYsIDI0NSwgNiwgMTEsIDIzLCA2LCAyNDMsIDIwMiwgMTEsIDIzLCA2LCAyNDIsIDYwLCAxMSwgMjMsIDYsIDczLCAxMSwgCisgICAgMjMsIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIDYsIDIzNSwgMjMsIDExLCAyMywgNiwgMTU2LCAxMSwgMjMsIDYsIDE5MywgMTEsIAorICAgIDIzLCA2LCAyMzAsIDI1LCAxMSwgMjMsIDYsIDc2LCAxMSwgMjMsIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDYsIDIyNCwgOTYsIAorICAgIDExLCAyMywgNiwgMTUzLCAxMSwgMjMsIDYsIDIyMiwgOTEsIDExLCAyMywgNiwgMjE3LCAxNTIsIDExLCAyMywgNiwgNzAsIAorICAgIDExLCAyMywgNiwgMjE0LCAxMDUsIDExLCAyMywgNiwgMjEyLCA5OCwgMTEsIDIzLCA2LCAyMTEsIDE3OCwgMTEsIDIzLCA2LCAKKyAgICAyMTEsIDExNywgMTEsIDIzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCA0LCA2MSwgMTEsIDIzLCA0LCAyNTMsIDE1OCwgMTEsIAorICAgIDIzLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDQsIDI0OSwgNjAsIDExLCAyMywgNCwgNzUsIDExLCAyMywgNCwgMjQ1LCA2LCAxMSwgCisgICAgMjMsIDQsIDI0MywgMjAyLCAxMSwgMjMsIDQsIDI0MiwgNjAsIDExLCAyMywgNCwgNzMsIDExLCAyMywgNCwgMjM1LCAxNDQsIAorICAgIDExLCAyMywgNCwgMjM1LCAyMywgMTEsIDIzLCA0LCAxNTYsIDExLCAyMywgNCwgMTkzLCAxMSwgMjMsIDQsIDIzMCwgMjUsIAorICAgIDExLCAyMywgNCwgNzYsIDExLCAyMywgNCwgMjI2LCAxMDUsIDExLCAyMywgNCwgMjI0LCA5NiwgMTEsIDIzLCA0LCAxNTMsIAorICAgIDExLCAyMywgNCwgMjIyLCA5MSwgMTEsIDIzLCA0LCAyMTcsIDE1MiwgMTEsIDIzLCA0LCA3MCwgMTEsIDIzLCA0LCAyMTQsIAorICAgIDEwNSwgMTEsIDIzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDQsIDIxMSwgMTE3LCAxMSwgCisgICAgMjMsIDQsIDIxMCwgMTU5LCAxMSwgMzIsIDYsIDYxLCAxMSwgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzIsIDYsIDI1MSwgNjYsIAorICAgIDExLCAzMiwgNiwgMjQ5LCA2MCwgMTEsIDMyLCA2LCA3NSwgMTEsIDMyLCA2LCAyNDUsIDYsIDExLCAzMiwgNiwgMjQzLCAKKyAgICAyMDIsIDExLCAzMiwgNiwgMjQyLCA2MCwgMTEsIDMyLCA2LCA3MywgMTEsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDMyLCA2LCAKKyAgICAyMzUsIDIzLCAxMSwgMzIsIDYsIDE1NiwgMTEsIDMyLCA2LCAxOTMsIDExLCAzMiwgNiwgMjMwLCAyNSwgMTEsIDMyLCA2LCAKKyAgICA3NiwgMTEsIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzIsIDYsIDE1MywgMTEsIDMyLCA2LCAKKyAgICAyMjIsIDkxLCAxMSwgMzIsIDYsIDIxNywgMTUyLCAxMSwgMzIsIDYsIDcwLCAxMSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzIsIAorICAgIDYsIDIxMiwgOTgsIDExLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzMiwgNiwgMjExLCAxMTcsIDExLCAzMiwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAzMiwgNCwgNjEsIDExLCAzMiwgNCwgMjUzLCAxNTgsIDExLCAzMiwgNCwgMjUxLCA2NiwgMTEsIDMyLCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMzIsIDQsIDc1LCAxMSwgMzIsIDQsIDI0NSwgNiwgMTEsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIDMyLCAKKyAgICA0LCA3MywgMTEsIDMyLCA0LCAyMzUsIDE0NCwgMTEsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMzIsIDQsIDE1NiwgMTEsIDMyLCAKKyAgICA0LCAxOTMsIDExLCAzMiwgNCwgMjMwLCAyNSwgMTEsIDMyLCA0LCA3NiwgMTEsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDMyLCAKKyAgICA0LCAyMjQsIDk2LCAxMSwgMzIsIDQsIDE1MywgMTEsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzIsIDQsIDIxNywgMTUyLCAxMSwgCisgICAgMzIsIDQsIDcwLCAxMSwgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzIsIDQsIDIxMiwgOTgsIDExLCAzMiwgNCwgMjExLCAxNzgsIAorICAgIDExLCAzMiwgNCwgMjExLCAxMTcsIDExLCAzMiwgNCwgMjEwLCAxNTksIDExLCAyMywgMzIsIDYsIDYxLCAxMSwgMjMsIDMyLCAKKyAgICA2LCAyNTMsIDE1OCwgMTEsIDIzLCAzMiwgNiwgMjUxLCA2NiwgMTEsIDIzLCAzMiwgNiwgMjQ5LCA2MCwgMTEsIDIzLCAzMiwgCisgICAgNiwgNzUsIDExLCAyMywgMzIsIDYsIDI0NSwgNiwgMTEsIDIzLCAzMiwgNiwgMjQzLCAyMDIsIDExLCAyMywgMzIsIDYsIAorICAgIDI0MiwgNjAsIDExLCAyMywgMzIsIDYsIDczLCAxMSwgMjMsIDMyLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAzMiwgNiwgMjM1LCAKKyAgICAyMywgMTEsIDIzLCAzMiwgNiwgMTU2LCAxMSwgMjMsIDMyLCA2LCAxOTMsIDExLCAyMywgMzIsIDYsIDIzMCwgMjUsIDExLCAKKyAgICAyMywgMzIsIDYsIDc2LCAxMSwgMjMsIDMyLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDIzLCAKKyAgICAzMiwgNiwgMTUzLCAxMSwgMjMsIDMyLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDIzLCAzMiwgCisgICAgNiwgNzAsIDExLCAyMywgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyMTEsIDE3OCwgMTEsIDIzLCAzMiwgNiwgMjExLCAxMTcsIDExLCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCAKKyAgICA0LCA2MSwgMTEsIDIzLCAzMiwgNCwgMjUzLCAxNTgsIDExLCAyMywgMzIsIDQsIDI1MSwgNjYsIDExLCAyMywgMzIsIDQsIAorICAgIDI0OSwgNjAsIDExLCAyMywgMzIsIDQsIDc1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDYsIDExLCAyMywgMzIsIDQsIDI0MywgCisgICAgMjAyLCAxMSwgMjMsIDMyLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDMyLCA0LCA3MywgMTEsIDIzLCAzMiwgNCwgMjM1LCAxNDQsIAorICAgIDExLCAyMywgMzIsIDQsIDIzNSwgMjMsIDExLCAyMywgMzIsIDQsIDE1NiwgMTEsIDIzLCAzMiwgNCwgMTkzLCAxMSwgMjMsIAorICAgIDMyLCA0LCAyMzAsIDI1LCAxMSwgMjMsIDMyLCA0LCA3NiwgMTEsIDIzLCAzMiwgNCwgMjI2LCAxMDUsIDExLCAyMywgMzIsIAorICAgIDQsIDIyNCwgOTYsIDExLCAyMywgMzIsIDQsIDE1MywgMTEsIDIzLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDIzLCAzMiwgNCwgCisgICAgMjE3LCAxNTIsIDExLCAyMywgMzIsIDQsIDcwLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNCwgMjEyLCAKKyAgICA5OCwgMTEsIDIzLCAzMiwgNCwgMjExLCAxNzgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDExOSwgNiwgNjEsIDExLCAxMTksIDYsIDI1MSwgNjYsIDExLCAxMTksIDYsIDI0OSwgNjAsIDExLCAxMTksIAorICAgIDYsIDI0MywgMjAyLCAxMSwgMTE5LCA2LCAyMzUsIDE0NCwgMTEsIDExOSwgNiwgMjM1LCAyMywgMTEsIDExOSwgNiwgMjMwLCAKKyAgICAyNSwgMTEsIDExOSwgNiwgNzYsIDExLCAxMTksIDYsIDIyNiwgMTA1LCAxMSwgMTE5LCA2LCAyMjQsIDk2LCAxMSwgMTE5LCAKKyAgICA2LCAyMjIsIDkxLCAxMSwgMTE5LCA2LCAyMTcsIDE1MiwgMTEsIDExOSwgNiwgNzAsIDExLCAxMTksIDYsIDIxNCwgMTA1LCAKKyAgICAxMSwgMTE5LCA2LCAyMTIsIDk4LCAxMSwgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDExOSwgNiwgMjExLCAxMTcsIDExLCAxMTksIAorICAgIDYsIDIxMCwgMTU5LCAxMSwgMTE5LCA0LCA2MSwgMTEsIDExOSwgNCwgMjUzLCAxNTgsIDExLCAxMTksIDQsIDI1MSwgNjYsIAorICAgIDExLCAxMTksIDQsIDI0OSwgNjAsIDExLCAxMTksIDQsIDI0NSwgNiwgMTEsIDExOSwgNCwgMjQyLCA2MCwgMTEsIDExOSwgNCwgCisgICAgNzMsIDExLCAxMTksIDQsIDIzNSwgMTQ0LCAxMSwgMTE5LCA0LCAyMzUsIDIzLCAxMSwgMTE5LCA0LCAxNTYsIDExLCAxMTksIAorICAgIDQsIDE5MywgMTEsIDExOSwgNCwgMjMwLCAyNSwgMTEsIDExOSwgNCwgMjI2LCAxMDUsIDExLCAxMTksIDQsIDIyNCwgOTYsIAorICAgIDExLCAxMTksIDQsIDE1MywgMTEsIDExOSwgNCwgMjIyLCA5MSwgMTEsIDExOSwgNCwgMjE3LCAxNTIsIDExLCAxMTksIDQsIAorICAgIDcwLCAxMSwgMTE5LCA0LCAyMTQsIDEwNSwgMTEsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDExOSwgNCwgMjExLCAxNzgsIDExLCAKKyAgICAxMTksIDQsIDIxMSwgMTE3LCAxMSwgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDIzLCAxMTksIDYsIDYxLCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjUzLCAxNTgsIDExLCAyMywgMTE5LCA2LCAyNTEsIDY2LCAxMSwgMjMsIDExOSwgNiwgMjQ5LCA2MCwgMTEsIDIzLCAKKyAgICAxMTksIDYsIDc1LCAxMSwgMjMsIDExOSwgNiwgMjQ1LCA2LCAxMSwgMjMsIDExOSwgNiwgMjQzLCAyMDIsIDExLCAyMywgCisgICAgMTE5LCA2LCAyNDIsIDYwLCAxMSwgMjMsIDExOSwgNiwgNzMsIDExLCAyMywgMTE5LCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAKKyAgICAxMTksIDYsIDIzNSwgMjMsIDExLCAyMywgMTE5LCA2LCAxNTYsIDExLCAyMywgMTE5LCA2LCAxOTMsIDExLCAyMywgMTE5LCAKKyAgICA2LCAyMzAsIDI1LCAxMSwgMjMsIDExOSwgNiwgNzYsIDExLCAyMywgMTE5LCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIyNCwgOTYsIDExLCAyMywgMTE5LCA2LCAxNTMsIDExLCAyMywgMTE5LCA2LCAyMjIsIDkxLCAxMSwgMjMsIDExOSwgNiwgCisgICAgMjE3LCAxNTIsIDExLCAyMywgMTE5LCA2LCA3MCwgMTEsIDIzLCAxMTksIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNiwgCisgICAgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDYsIDIxMSwgMTc4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxMTcsIDExLCAyMywgMTE5LCAKKyAgICA2LCAyMTAsIDE1OSwgMTEsIDIzLCAxMTksIDQsIDYxLCAxMSwgMjMsIDExOSwgNCwgMjUzLCAxNTgsIDExLCAyMywgMTE5LCAKKyAgICA0LCAyNTEsIDY2LCAxMSwgMjMsIDExOSwgNCwgMjQ5LCA2MCwgMTEsIDIzLCAxMTksIDQsIDc1LCAxMSwgMjMsIDExOSwgNCwgCisgICAgMjQ1LCA2LCAxMSwgMjMsIDExOSwgNCwgMjQzLCAyMDIsIDExLCAyMywgMTE5LCA0LCAyNDIsIDYwLCAxMSwgMjMsIDExOSwgCisgICAgNCwgNzMsIDExLCAyMywgMTE5LCA0LCAyMzUsIDE0NCwgMTEsIDIzLCAxMTksIDQsIDIzNSwgMjMsIDExLCAyMywgMTE5LCA0LCAKKyAgICAxNTYsIDExLCAyMywgMTE5LCA0LCAxOTMsIDExLCAyMywgMTE5LCA0LCAyMzAsIDI1LCAxMSwgMjMsIDExOSwgNCwgNzYsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAxMTksIDQsIDIyNCwgOTYsIDExLCAyMywgMTE5LCA0LCAxNTMsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMjIsIDkxLCAxMSwgMjMsIDExOSwgNCwgMjE3LCAxNTIsIDExLCAyMywgMTE5LCA0LCA3MCwgCisgICAgMTEsIDIzLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgCisgICAgMTc4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAxMTcsIDExLCAyMywgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDEzMywgNiwgNjEsIAorICAgIDExLCAxMzMsIDYsIDI1MywgMTU4LCAxMSwgMTMzLCA2LCAyNDksIDYwLCAxMSwgMTMzLCA2LCA3NSwgMTEsIDEzMywgNiwgCisgICAgMjQ1LCA2LCAxMSwgMTMzLCA2LCAyNDMsIDIwMiwgMTEsIDEzMywgNiwgMjM1LCAxNDQsIDExLCAxMzMsIDYsIDIzNSwgMjMsIAorICAgIDExLCAxMzMsIDYsIDE1NiwgMTEsIDEzMywgNiwgMTkzLCAxMSwgMTMzLCA2LCAyMzAsIDI1LCAxMSwgMTMzLCA2LCA3NiwgCisgICAgMTEsIDEzMywgNiwgMjI2LCAxMDUsIDExLCAxMzMsIDYsIDIyNCwgOTYsIDExLCAxMzMsIDYsIDIyMiwgOTEsIDExLCAxMzMsIAorICAgIDYsIDIxNywgMTUyLCAxMSwgMTMzLCA2LCA3MCwgMTEsIDEzMywgNiwgMjE0LCAxMDUsIDExLCAxMzMsIDYsIDIxMiwgOTgsIAorICAgIDExLCAxMzMsIDYsIDIxMSwgMTc4LCAxMSwgMTMzLCA2LCAyMTEsIDExNywgMTEsIDEzMywgNCwgNjEsIDExLCAxMzMsIDQsIAorICAgIDI1MywgMTU4LCAxMSwgMTMzLCA0LCAyNTEsIDY2LCAxMSwgMTMzLCA0LCAyNDksIDYwLCAxMSwgMTMzLCA0LCA3NSwgMTEsIAorICAgIDEzMywgNCwgMjQ1LCA2LCAxMSwgMTMzLCA0LCAyNDMsIDIwMiwgMTEsIDEzMywgNCwgMjQyLCA2MCwgMTEsIDEzMywgNCwgCisgICAgNzMsIDExLCAxMzMsIDQsIDIzNSwgMTQ0LCAxMSwgMTMzLCA0LCAyMzUsIDIzLCAxMSwgMTMzLCA0LCAxNTYsIDExLCAxMzMsIAorICAgIDQsIDE5MywgMTEsIDEzMywgNCwgMjMwLCAyNSwgMTEsIDEzMywgNCwgNzYsIDExLCAxMzMsIDQsIDIyNiwgMTA1LCAxMSwgCisgICAgMTMzLCA0LCAyMjQsIDk2LCAxMSwgMTMzLCA0LCAxNTMsIDExLCAxMzMsIDQsIDIyMiwgOTEsIDExLCAxMzMsIDQsIDIxNywgCisgICAgMTUyLCAxMSwgMTMzLCA0LCA3MCwgMTEsIDEzMywgNCwgMjE0LCAxMDUsIDExLCAxMzMsIDQsIDIxMiwgOTgsIDExLCAxMzMsIAorICAgIDQsIDIxMSwgMTc4LCAxMSwgMTMzLCA0LCAyMTEsIDExNywgMTEsIDEzMywgNCwgMjEwLCAxNTksIDExLCAxMzksIDYsIDYxLCAKKyAgICAxMSwgMTM5LCA2LCAyNTMsIDE1OCwgMTEsIDEzOSwgNiwgMjQ5LCA2MCwgMTEsIDEzOSwgNiwgNzUsIDExLCAxMzksIDYsIAorICAgIDI0NSwgNiwgMTEsIDEzOSwgNiwgMjQzLCAyMDIsIDExLCAxMzksIDYsIDczLCAxMSwgMTM5LCA2LCAyMzUsIDE0NCwgMTEsIAorICAgIDEzOSwgNiwgMjM1LCAyMywgMTEsIDEzOSwgNiwgMTU2LCAxMSwgMTM5LCA2LCAxOTMsIDExLCAxMzksIDYsIDc2LCAxMSwgCisgICAgMTM5LCA2LCAyMjIsIDkxLCAxMSwgMTM5LCA2LCAyMTcsIDE1MiwgMTEsIDEzOSwgNiwgNzAsIDExLCAxMzksIDYsIDIxNCwgCisgICAgMTA1LCAxMSwgMTM5LCA2LCAyMTIsIDk4LCAxMSwgMTM5LCA2LCAyMTEsIDE3OCwgMTEsIDEzOSwgNiwgMjExLCAxMTcsIDExLCAKKyAgICAxMzksIDQsIDYxLCAxMSwgMTM5LCA0LCAyNTMsIDE1OCwgMTEsIDEzOSwgNCwgMjUxLCA2NiwgMTEsIDEzOSwgNCwgMjQ5LCAKKyAgICA2MCwgMTEsIDEzOSwgNCwgNzUsIDExLCAxMzksIDQsIDI0NSwgNiwgMTEsIDEzOSwgNCwgMjQzLCAyMDIsIDExLCAxMzksIDQsIAorICAgIDI0MiwgNjAsIDExLCAxMzksIDQsIDczLCAxMSwgMTM5LCA0LCAyMzUsIDE0NCwgMTEsIDEzOSwgNCwgMjM1LCAyMywgMTEsIAorICAgIDEzOSwgNCwgMTU2LCAxMSwgMTM5LCA0LCAxOTMsIDExLCAxMzksIDQsIDIzMCwgMjUsIDExLCAxMzksIDQsIDc2LCAxMSwgCisgICAgMTM5LCA0LCAyMjYsIDEwNSwgMTEsIDEzOSwgNCwgMjI0LCA5NiwgMTEsIDEzOSwgNCwgMTUzLCAxMSwgMTM5LCA0LCAyMjIsIAorICAgIDkxLCAxMSwgMTM5LCA0LCAyMTcsIDE1MiwgMTEsIDEzOSwgNCwgNzAsIDExLCAxMzksIDQsIDIxNCwgMTA1LCAxMSwgMTM5LCAKKyAgICA0LCAyMTIsIDk4LCAxMSwgMTM5LCA0LCAyMTEsIDE3OCwgMTEsIDEzOSwgNCwgMjExLCAxMTcsIDExLCAxMzksIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMjMsIDEzMywgNiwgNjEsIDExLCAyMywgMTMzLCA2LCAyNTMsIDE1OCwgMTEsIDIzLCAxMzMsIDYsIDI1MSwgCisgICAgNjYsIDExLCAyMywgMTMzLCA2LCAyNDksIDYwLCAxMSwgMjMsIDEzMywgNiwgNzUsIDExLCAyMywgMTMzLCA2LCAyNDUsIDYsIAorICAgIDExLCAyMywgMTMzLCA2LCAyNDMsIDIwMiwgMTEsIDIzLCAxMzMsIDYsIDI0MiwgNjAsIDExLCAyMywgMTMzLCA2LCA3MywgCisgICAgMTEsIDIzLCAxMzMsIDYsIDIzNSwgMTQ0LCAxMSwgMjMsIDEzMywgNiwgMjM1LCAyMywgMTEsIDIzLCAxMzMsIDYsIDE1NiwgCisgICAgMTEsIDIzLCAxMzMsIDYsIDE5MywgMTEsIDIzLCAxMzMsIDYsIDIzMCwgMjUsIDExLCAyMywgMTMzLCA2LCA3NiwgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIyNiwgMTA1LCAxMSwgMjMsIDEzMywgNiwgMjI0LCA5NiwgMTEsIDIzLCAxMzMsIDYsIDE1MywgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIyMiwgOTEsIDExLCAyMywgMTMzLCA2LCAyMTcsIDE1MiwgMTEsIDIzLCAxMzMsIDYsIDcwLCAxMSwgMjMsIAorICAgIDEzMywgNiwgMjE0LCAxMDUsIDExLCAyMywgMTMzLCA2LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNiwgMjExLCAxNzgsIDExLCAKKyAgICAyMywgMTMzLCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMzMsIDYsIDIxMCwgMTU5LCAxMSwgMjMsIDEzMywgNCwgNjEsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyNTMsIDE1OCwgMTEsIDIzLCAxMzMsIDQsIDI1MSwgNjYsIDExLCAyMywgMTMzLCA0LCAyNDksIDYwLCAKKyAgICAxMSwgMjMsIDEzMywgNCwgNzUsIDExLCAyMywgMTMzLCA0LCAyNDUsIDYsIDExLCAyMywgMTMzLCA0LCAyNDMsIDIwMiwgMTEsIAorICAgIDIzLCAxMzMsIDQsIDI0MiwgNjAsIDExLCAyMywgMTMzLCA0LCA3MywgMTEsIDIzLCAxMzMsIDQsIDIzNSwgMTQ0LCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjM1LCAyMywgMTEsIDIzLCAxMzMsIDQsIDE1NiwgMTEsIDIzLCAxMzMsIDQsIDE5MywgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIzMCwgMjUsIDExLCAyMywgMTMzLCA0LCA3NiwgMTEsIDIzLCAxMzMsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjI0LCA5NiwgMTEsIDIzLCAxMzMsIDQsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDIyMiwgOTEsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMTcsIDE1MiwgMTEsIDIzLCAxMzMsIDQsIDcwLCAxMSwgMjMsIDEzMywgNCwgMjE0LCAxMDUsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxNzgsIDExLCAyMywgMTMzLCA0LCAyMTEsIDExNywgMTEsIAorICAgIDIzLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDYsIDYxLCAxMSwgMzUsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDYsIDI1MSwgCisgICAgNjYsIDExLCAzNSwgNiwgMjQ5LCA2MCwgMTEsIDM1LCA2LCA3NSwgMTEsIDM1LCA2LCAyNDUsIDYsIDExLCAzNSwgNiwgMjQzLCAKKyAgICAyMDIsIDExLCAzNSwgNiwgMjQyLCA2MCwgMTEsIDM1LCA2LCA3MywgMTEsIDM1LCA2LCAyMzUsIDE0NCwgMTEsIDM1LCA2LCAKKyAgICAyMzUsIDIzLCAxMSwgMzUsIDYsIDE1NiwgMTEsIDM1LCA2LCAxOTMsIDExLCAzNSwgNiwgMjMwLCAyNSwgMTEsIDM1LCA2LCAKKyAgICA3NiwgMTEsIDM1LCA2LCAyMjYsIDEwNSwgMTEsIDM1LCA2LCAyMjQsIDk2LCAxMSwgMzUsIDYsIDE1MywgMTEsIDM1LCA2LCAKKyAgICAyMjIsIDkxLCAxMSwgMzUsIDYsIDIxNywgMTUyLCAxMSwgMzUsIDYsIDcwLCAxMSwgMzUsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIAorICAgIDYsIDIxMiwgOTgsIDExLCAzNSwgNiwgMjExLCAxNzgsIDExLCAzNSwgNiwgMjExLCAxMTcsIDExLCAzNSwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAzNSwgNCwgNjEsIDExLCAzNSwgNCwgMjUzLCAxNTgsIDExLCAzNSwgNCwgMjUxLCA2NiwgMTEsIDM1LCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMzUsIDQsIDc1LCAxMSwgMzUsIDQsIDI0NSwgNiwgMTEsIDM1LCA0LCAyNDMsIDIwMiwgMTEsIDM1LCAKKyAgICA0LCAyNDIsIDYwLCAxMSwgMzUsIDQsIDczLCAxMSwgMzUsIDQsIDIzNSwgMTQ0LCAxMSwgMzUsIDQsIDIzNSwgMjMsIDExLCAKKyAgICAzNSwgNCwgMTU2LCAxMSwgMzUsIDQsIDE5MywgMTEsIDM1LCA0LCAyMzAsIDI1LCAxMSwgMzUsIDQsIDc2LCAxMSwgMzUsIDQsIAorICAgIDIyNiwgMTA1LCAxMSwgMzUsIDQsIDIyNCwgOTYsIDExLCAzNSwgNCwgMTUzLCAxMSwgMzUsIDQsIDIyMiwgOTEsIDExLCAzNSwgCisgICAgNCwgMjE3LCAxNTIsIDExLCAzNSwgNCwgNzAsIDExLCAzNSwgNCwgMjE0LCAxMDUsIDExLCAzNSwgNCwgMjEyLCA5OCwgMTEsIAorICAgIDM1LCA0LCAyMTEsIDE3OCwgMTEsIDM1LCA0LCAyMTEsIDExNywgMTEsIDM1LCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAyMywgNiwgCisgICAgNjEsIDExLCAzNSwgMjMsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDIzLCA2LCAyNTEsIDY2LCAxMSwgMzUsIDIzLCA2LCAyNDksIAorICAgIDYwLCAxMSwgMzUsIDIzLCA2LCA3NSwgMTEsIDM1LCAyMywgNiwgMjQ1LCA2LCAxMSwgMzUsIDIzLCA2LCAyNDMsIDIwMiwgCisgICAgMTEsIDM1LCAyMywgNiwgMjQyLCA2MCwgMTEsIDM1LCAyMywgNiwgNzMsIDExLCAzNSwgMjMsIDYsIDIzNSwgMTQ0LCAxMSwgCisgICAgMzUsIDIzLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCA2LCAxNTYsIDExLCAzNSwgMjMsIDYsIDE5MywgMTEsIDM1LCAyMywgCisgICAgNiwgMjMwLCAyNSwgMTEsIDM1LCAyMywgNiwgNzYsIDExLCAzNSwgMjMsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMjQsIDk2LCAxMSwgMzUsIDIzLCA2LCAxNTMsIDExLCAzNSwgMjMsIDYsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDYsIDIxNywgCisgICAgMTUyLCAxMSwgMzUsIDIzLCA2LCA3MCwgMTEsIDM1LCAyMywgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDYsIDIxMiwgOTgsIAorICAgIDExLCAzNSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDExNywgMTEsIDM1LCAyMywgNiwgMjEwLCAKKyAgICAxNTksIDExLCAzNSwgMjMsIDQsIDYxLCAxMSwgMzUsIDIzLCA0LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgNCwgMjUxLCA2NiwgCisgICAgMTEsIDM1LCAyMywgNCwgMjQ5LCA2MCwgMTEsIDM1LCAyMywgNCwgNzUsIDExLCAzNSwgMjMsIDQsIDI0NSwgNiwgMTEsIDM1LCAKKyAgICAyMywgNCwgMjQzLCAyMDIsIDExLCAzNSwgMjMsIDQsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDQsIDczLCAxMSwgMzUsIDIzLCAKKyAgICA0LCAyMzUsIDE0NCwgMTEsIDM1LCAyMywgNCwgMjM1LCAyMywgMTEsIDM1LCAyMywgNCwgMTU2LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAxOTMsIDExLCAzNSwgMjMsIDQsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDQsIDc2LCAxMSwgMzUsIDIzLCA0LCAyMjYsIDEwNSwgCisgICAgMTEsIDM1LCAyMywgNCwgMjI0LCA5NiwgMTEsIDM1LCAyMywgNCwgMTUzLCAxMSwgMzUsIDIzLCA0LCAyMjIsIDkxLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAyMywgNCwgNzAsIDExLCAzNSwgMjMsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIAorICAgIDIzLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxMTcsIDExLCAzNSwgCisgICAgMjMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCA2LCA2MSwgMTEsIDM1LCAzMiwgNiwgMjUzLCAxNTgsIDExLCAzNSwgMzIsIAorICAgIDYsIDI1MSwgNjYsIDExLCAzNSwgMzIsIDYsIDI0OSwgNjAsIDExLCAzNSwgMzIsIDYsIDc1LCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyNDUsIDYsIDExLCAzNSwgMzIsIDYsIDI0MywgMjAyLCAxMSwgMzUsIDMyLCA2LCAyNDIsIDYwLCAxMSwgMzUsIDMyLCA2LCAKKyAgICA3MywgMTEsIDM1LCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzNSwgMzIsIDYsIDIzNSwgMjMsIDExLCAzNSwgMzIsIDYsIDE1NiwgCisgICAgMTEsIDM1LCAzMiwgNiwgMTkzLCAxMSwgMzUsIDMyLCA2LCAyMzAsIDI1LCAxMSwgMzUsIDMyLCA2LCA3NiwgMTEsIDM1LCAKKyAgICAzMiwgNiwgMjI2LCAxMDUsIDExLCAzNSwgMzIsIDYsIDIyNCwgOTYsIDExLCAzNSwgMzIsIDYsIDE1MywgMTEsIDM1LCAzMiwgCisgICAgNiwgMjIyLCA5MSwgMTEsIDM1LCAzMiwgNiwgMjE3LCAxNTIsIDExLCAzNSwgMzIsIDYsIDcwLCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyMTQsIDEwNSwgMTEsIDM1LCAzMiwgNiwgMjEyLCA5OCwgMTEsIDM1LCAzMiwgNiwgMjExLCAxNzgsIDExLCAzNSwgMzIsIDYsIAorICAgIDIxMSwgMTE3LCAxMSwgMzUsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNCwgNjEsIDExLCAzNSwgMzIsIDQsIDI1MywgCisgICAgMTU4LCAxMSwgMzUsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMzUsIDMyLCA0LCAyNDksIDYwLCAxMSwgMzUsIDMyLCA0LCA3NSwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjQ1LCA2LCAxMSwgMzUsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIDM1LCAzMiwgNCwgMjQyLCA2MCwgCisgICAgMTEsIDM1LCAzMiwgNCwgNzMsIDExLCAzNSwgMzIsIDQsIDIzNSwgMTQ0LCAxMSwgMzUsIDMyLCA0LCAyMzUsIDIzLCAxMSwgCisgICAgMzUsIDMyLCA0LCAxNTYsIDExLCAzNSwgMzIsIDQsIDE5MywgMTEsIDM1LCAzMiwgNCwgMjMwLCAyNSwgMTEsIDM1LCAzMiwgCisgICAgNCwgNzYsIDExLCAzNSwgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzUsIDMyLCA0LCAyMjQsIDk2LCAxMSwgMzUsIDMyLCA0LCAKKyAgICAxNTMsIDExLCAzNSwgMzIsIDQsIDIyMiwgOTEsIDExLCAzNSwgMzIsIDQsIDIxNywgMTUyLCAxMSwgMzUsIDMyLCA0LCA3MCwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIxMiwgOTgsIDExLCAzNSwgMzIsIDQsIDIxMSwgMTc4LCAKKyAgICAxMSwgMzUsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAzMiwgNCwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDMyLCA2LCA2MSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUxLCA2NiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDYsIDI0OSwgNjAsIDExLCAzNSwgMjMsIDMyLCA2LCA3NSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgNiwgMTEsIDM1LCAyMywgCisgICAgMzIsIDYsIDI0MywgMjAyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjQyLCA2MCwgMTEsIDM1LCAyMywgMzIsIDYsIDczLCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMTU2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMTkzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMwLCAyNSwgMTEsIDM1LCAyMywgMzIsIAorICAgIDYsIDc2LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMTUzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIyLCA5MSwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNywgMTUyLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNiwgNzAsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDIxMiwgOTgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDMyLCA0LCA2MSwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MywgCisgICAgMTU4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUxLCA2NiwgMTEsIDM1LCAyMywgMzIsIDQsIDI0OSwgNjAsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCA3NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNiwgMTEsIDM1LCAyMywgMzIsIDQsIDI0MywgMjAyLCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNCwgMjQyLCA2MCwgMTEsIDM1LCAyMywgMzIsIDQsIDczLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAKKyAgICAxNDQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMTU2LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMTkzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjMwLCAyNSwgMTEsIDM1LCAyMywgMzIsIDQsIDc2LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjI2LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjQsIDk2LCAxMSwgMzUsIDIzLCAzMiwgNCwgMTUzLCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNywgMTUyLCAxMSwgMzUsIDIzLCAzMiwgNCwgCisgICAgNzAsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMiwgOTgsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAyMzAsIDEzOCwgNiwgNjEsIDExLCAyMzAsIDEzOCwgNiwgMjUzLCAxNTgsIDExLCAyMzAsIDEzOCwgNiwgCisgICAgMjUxLCA2NiwgMTEsIDIzMCwgMTM4LCA2LCAyNDksIDYwLCAxMSwgMjMwLCAxMzgsIDYsIDc1LCAxMSwgMjMwLCAxMzgsIDYsIAorICAgIDI0NSwgNiwgMTEsIDIzMCwgMTM4LCA2LCAyNDMsIDIwMiwgMTEsIDIzMCwgMTM4LCA2LCAyNDIsIDYwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDczLCAxMSwgMjMwLCAxMzgsIDYsIDIzNSwgMTQ0LCAxMSwgMjMwLCAxMzgsIDYsIDIzNSwgMjMsIDExLCAyMzAsIAorICAgIDEzOCwgNiwgMTU2LCAxMSwgMjMwLCAxMzgsIDYsIDE5MywgMTEsIDIzMCwgMTM4LCA2LCAyMzAsIDI1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDc2LCAxMSwgMjMwLCAxMzgsIDYsIDIyNiwgMTA1LCAxMSwgMjMwLCAxMzgsIDYsIDIyNCwgOTYsIDExLCAyMzAsIAorICAgIDEzOCwgNiwgMTUzLCAxMSwgMjMwLCAxMzgsIDYsIDIyMiwgOTEsIDExLCAyMzAsIDEzOCwgNiwgMjE3LCAxNTIsIDExLCAKKyAgICAyMzAsIDEzOCwgNiwgNzAsIDExLCAyMzAsIDEzOCwgNiwgMjE0LCAxMDUsIDExLCAyMzAsIDEzOCwgNiwgMjEyLCA5OCwgMTEsIAorICAgIDIzMCwgMTM4LCA2LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTM4LCA2LCAyMTEsIDExNywgMTEsIDIzMCwgMTM4LCA2LCAyMTAsIAorICAgIDE1OSwgMTEsIDIzMCwgMTM4LCA0LCA2MSwgMTEsIDIzMCwgMTM4LCA0LCAyNTMsIDE1OCwgMTEsIDIzMCwgMTM4LCA0LCAKKyAgICAyNTEsIDY2LCAxMSwgMjMwLCAxMzgsIDQsIDI0OSwgNjAsIDExLCAyMzAsIDEzOCwgNCwgNzUsIDExLCAyMzAsIDEzOCwgNCwgCisgICAgMjQ1LCA2LCAxMSwgMjMwLCAxMzgsIDQsIDI0MywgMjAyLCAxMSwgMjMwLCAxMzgsIDQsIDI0MiwgNjAsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgNzMsIDExLCAyMzAsIDEzOCwgNCwgMjM1LCAxNDQsIDExLCAyMzAsIDEzOCwgNCwgMjM1LCAyMywgMTEsIDIzMCwgCisgICAgMTM4LCA0LCAxNTYsIDExLCAyMzAsIDEzOCwgNCwgMTkzLCAxMSwgMjMwLCAxMzgsIDQsIDIzMCwgMjUsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgNzYsIDExLCAyMzAsIDEzOCwgNCwgMjI2LCAxMDUsIDExLCAyMzAsIDEzOCwgNCwgMjI0LCA5NiwgMTEsIDIzMCwgCisgICAgMTM4LCA0LCAxNTMsIDExLCAyMzAsIDEzOCwgNCwgMjIyLCA5MSwgMTEsIDIzMCwgMTM4LCA0LCAyMTcsIDE1MiwgMTEsIAorICAgIDIzMCwgMTM4LCA0LCA3MCwgMTEsIDIzMCwgMTM4LCA0LCAyMTQsIDEwNSwgMTEsIDIzMCwgMTM4LCA0LCAyMTIsIDk4LCAxMSwgCisgICAgMjMwLCAxMzgsIDQsIDIxMSwgMTc4LCAxMSwgMjMwLCAxMzgsIDQsIDIxMSwgMTE3LCAxMSwgMjMwLCAxMzgsIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMzIsIDQsIDI0NywgMTE5LCA3MywgMTEsIDMyLCA0LCAyNDcsIDExOSwgMjM1LCAxNDQsIDExLCAyMywgNiwgCisgICAgMjU0LCAxNDMsIDExLCAyMywgNiwgMjUyLCAyNiwgMTEsIDIzLCA2LCAyNDMsIDEwNywgMTEsIDIzLCA2LCAyNDgsIDU0LCAKKyAgICAxMSwgMjMsIDYsIDI0NSwgMTAwLCAxMSwgMjMsIDYsIDIxMCwgODUsIDExLCAyMywgNiwgMjQ1LCA2MywgMTEsIDIzLCA2LCAKKyAgICAyMTYsIDE3OSwgMTEsIDIzLCA2LCAyMzUsIDE4NSwgMTEsIDIzLCA2LCAyMzQsIDIyMiwgMTEsIDIzLCA2LCAyMzMsIDk4LCAKKyAgICAxMSwgMjMsIDYsIDIzMCwgMTAyLCAxMSwgMjMsIDYsIDIyNywgMjM3LCAxMSwgMjMsIDYsIDIxMSwgMTU3LCAxMSwgMjMsIDYsIAorICAgIDIyNiwgMTk5LCAxMSwgMjMsIDYsIDIyNSwgMTA4LCAxMSwgMjMsIDYsIDIyMywgMzcsIDExLCAyMywgNiwgMjE2LCAxODAsIAorICAgIDg3LCAxMSwgMjMsIDYsIDIxOSwgMTc3LCAxMSwgMjMsIDYsIDIxNywgNDEsIDExLCAyMywgNiwgMjE0LCAxNTcsIDExLCAyMywgCisgICAgNiwgMjI1LCAxMzMsIDExLCAyMywgNiwgMjUwLCAxMTAsIDExLCAyMywgNiwgMjI0LCAxNjEsIDExLCAyMywgNiwgMjI2LCAKKyAgICAyMDEsIDExLCAyMywgMjI5LCAyMjEsIDExLCAyMywgNCwgMjU0LCAxNDMsIDExLCAyMywgNCwgMjUyLCAyNiwgMTEsIDIzLCAKKyAgICA0LCAyNDMsIDEwNywgMTEsIDIzLCA0LCAyNDgsIDU0LCAxMSwgMjMsIDQsIDI0NSwgMTAwLCAxMSwgMjMsIDQsIDIxMCwgODUsIAorICAgIDExLCAyMywgNCwgMjQ1LCA2MywgMTEsIDIzLCA0LCAyMTYsIDE3OSwgMTEsIDIzLCA0LCAyMzUsIDE4NSwgMTEsIDIzLCA0LCAKKyAgICAyMzQsIDIyMiwgMTEsIDIzLCA0LCAyMzMsIDk4LCAxMSwgMjMsIDQsIDIzMCwgMTAyLCAxMSwgMjMsIDQsIDIyNywgMjM3LCAKKyAgICAxMSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDQsIDIyNiwgMTk5LCAxMSwgMjMsIDQsIDIyNSwgMTA4LCAxMSwgMjMsIDQsIAorICAgIDIyMywgMzcsIDExLCAyMywgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMjMsIDQsIDIxOSwgMTc3LCAxMSwgMjMsIDQsIDIxNywgCisgICAgNDEsIDExLCAyMywgNCwgMjE0LCAxNTcsIDExLCAyMywgNCwgMjI1LCAxMzMsIDExLCAyMywgNCwgMjUwLCAxMTAsIDExLCAKKyAgICAyMywgNCwgMjI0LCAxNjEsIDExLCAyMywgNCwgMjI2LCAyMDEsIDExLCAyMywgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMjMsIAorICAgIDI0NSwgMTAxLCA4NywgMTEsIDIzLCAyMTYsIDE4MCwgODcsIDExLCAyMywgMjM0LCAyMjMsIDg3LCAxMSwgMjMsIDIyNSwgCisgICAgMTM0LCA4NywgMTEsIDIzLCAyMjMsIDM4LCA4NywgMTEsIDIzLCAyMjUsIDEwOSwgODcsIDExLCAzMiwgNiwgMjU0LCAxNDMsIAorICAgIDExLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDMyLCA2LCAyNDMsIDEwNywgMTEsIDMyLCA2LCAyNDgsIDU0LCAxMSwgMzIsIDYsIAorICAgIDI0NSwgMTAwLCAxMSwgMzIsIDYsIDIxMCwgODUsIDExLCAzMiwgNiwgMjQ1LCA2MywgMTEsIDMyLCA2LCAyMTYsIDE3OSwgCisgICAgMTEsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDMyLCA2LCAyMzQsIDIyMiwgMTEsIDMyLCA2LCAyMzMsIDk4LCAxMSwgMzIsIDYsIAorICAgIDIzMCwgMTAyLCAxMSwgMzIsIDYsIDIyNywgMjM3LCAxMSwgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMzIsIDYsIDIyNiwgMTk5LCAKKyAgICAxMSwgMzIsIDYsIDIyNSwgMTA4LCAxMSwgMzIsIDYsIDIyMywgMzcsIDExLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzIsIAorICAgIDYsIDIxOSwgMTc3LCAxMSwgMzIsIDYsIDIxNywgNDEsIDExLCAzMiwgNiwgMjE0LCAxNTcsIDExLCAzMiwgNiwgMjI1LCAKKyAgICAxMzMsIDExLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAzMiwgNiwgMjI2LCAyMDEsIDExLCAKKyAgICAzMiwgMjI5LCAyMjEsIDExLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAzMiwgNCwgMjUyLCAyNiwgMTEsIDMyLCA0LCAyNDMsIAorICAgIDEwNywgMTEsIDMyLCA0LCAyNDgsIDU0LCAxMSwgMzIsIDQsIDI0NSwgMTAwLCAxMSwgMzIsIDQsIDIxMCwgODUsIDExLCAzMiwgCisgICAgNCwgMjQ1LCA2MywgMTEsIDMyLCA0LCAyMTYsIDE3OSwgMTEsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDMyLCA0LCAyMzQsIAorICAgIDIyMiwgMTEsIDMyLCA0LCAyMzMsIDk4LCAxMSwgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMzIsIDQsIDIyNywgMjM3LCAxMSwgCisgICAgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzIsIDQsIDIyNiwgMTk5LCAxMSwgMzIsIDQsIDIyNSwgMTA4LCAxMSwgMzIsIDQsIAorICAgIDIyMywgMzcsIDExLCAzMiwgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMzIsIDQsIDIxOSwgMTc3LCAxMSwgMzIsIDQsIDIxNywgCisgICAgNDEsIDExLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzMiwgNCwgMjI1LCAxMzMsIDExLCAzMiwgNCwgMjUwLCAxMTAsIDExLCAKKyAgICAzMiwgNCwgMjI0LCAxNjEsIDExLCAzMiwgNCwgMjI2LCAyMDEsIDExLCAzMiwgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzIsIAorICAgIDI0NSwgMTAxLCA4NywgMTEsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAzMiwgMjM0LCAyMjMsIDg3LCAxMSwgMzIsIDIyNSwgCisgICAgMTM0LCA4NywgMTEsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDMyLCAyMjUsIDEwOSwgODcsIDExLCAyMywgMzIsIDYsIDI1NCwgCisgICAgMTQzLCAxMSwgMjMsIDMyLCA2LCAyNTIsIDI2LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDEwNywgMTEsIDIzLCAzMiwgNiwgMjQ4LCAKKyAgICA1NCwgMTEsIDIzLCAzMiwgNiwgMjQ1LCAxMDAsIDExLCAyMywgMzIsIDYsIDIxMCwgODUsIDExLCAyMywgMzIsIDYsIDI0NSwgCisgICAgNjMsIDExLCAyMywgMzIsIDYsIDIxNiwgMTc5LCAxMSwgMjMsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDIzLCAzMiwgNiwgMjM0LCAKKyAgICAyMjIsIDExLCAyMywgMzIsIDYsIDIzMywgOTgsIDExLCAyMywgMzIsIDYsIDIzMCwgMTAyLCAxMSwgMjMsIDMyLCA2LCAyMjcsIAorICAgIDIzNywgMTEsIDIzLCAzMiwgNiwgMjExLCAxNTcsIDExLCAyMywgMzIsIDYsIDIyNiwgMTk5LCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyMjUsIDEwOCwgMTEsIDIzLCAzMiwgNiwgMjIzLCAzNywgMTEsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMTksIDE3NywgMTEsIDIzLCAzMiwgNiwgMjE3LCA0MSwgMTEsIDIzLCAzMiwgNiwgMjE0LCAxNTcsIDExLCAyMywgCisgICAgMzIsIDYsIDIyNSwgMTMzLCAxMSwgMjMsIDMyLCA2LCAyNTAsIDExMCwgMTEsIDIzLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAKKyAgICAyMywgMzIsIDYsIDIyNiwgMjAxLCAxMSwgMjMsIDMyLCAyMjksIDIyMSwgMTEsIDIzLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAKKyAgICAyMywgMzIsIDQsIDI1MiwgMjYsIDExLCAyMywgMzIsIDQsIDI0MywgMTA3LCAxMSwgMjMsIDMyLCA0LCAyNDgsIDU0LCAxMSwgCisgICAgMjMsIDMyLCA0LCAyNDUsIDEwMCwgMTEsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDIzLCAzMiwgNCwgMjQ1LCA2MywgMTEsIAorICAgIDIzLCAzMiwgNCwgMjE2LCAxNzksIDExLCAyMywgMzIsIDQsIDIzNSwgMTg1LCAxMSwgMjMsIDMyLCA0LCAyMzQsIDIyMiwgCisgICAgMTEsIDIzLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDIzLCAzMiwgNCwgMjMwLCAxMDIsIDExLCAyMywgMzIsIDQsIDIyNywgMjM3LCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNCwgMjI2LCAxOTksIDExLCAyMywgMzIsIDQsIDIyNSwgCisgICAgMTA4LCAxMSwgMjMsIDMyLCA0LCAyMjMsIDM3LCAxMSwgMjMsIDMyLCA0LCA0MCwgMjE5LCAxNzcsIDExLCAyMywgMzIsIDQsIAorICAgIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA0LCAyMTcsIDQxLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDIzLCAzMiwgNCwgCisgICAgMjI1LCAxMzMsIDExLCAyMywgMzIsIDQsIDI1MCwgMTEwLCAxMSwgMjMsIDMyLCA0LCAyMjQsIDE2MSwgMTEsIDIzLCAzMiwgCisgICAgNCwgMjI2LCAyMDEsIDExLCAyMywgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDIzLCAzMiwgMjQ1LCAxMDEsIDg3LCAKKyAgICAxMSwgMjMsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAyMywgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDIzLCAzMiwgMjI1LCAxMzQsIAorICAgIDg3LCAxMSwgMjMsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDIzLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNTQsIDE0MywgMTEsIDM1LCAyMywgNiwgMjUyLCAyNiwgMTEsIDM1LCAyMywgNiwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDYsIAorICAgIDI0OCwgNTQsIDExLCAzNSwgMjMsIDYsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNDUsIDYzLCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgNiwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDYsIAorICAgIDIzNCwgMjIyLCAxMSwgMzUsIDIzLCA2LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCA2LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgNiwgCisgICAgMjI3LCAyMzcsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCA2LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgCisgICAgNiwgMjI1LCAxMDgsIDExLCAzNSwgMjMsIDYsIDIyMywgMzcsIDExLCAzNSwgMjMsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAKKyAgICAyMywgNiwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDYsIDIxNywgNDEsIDExLCAzNSwgMjMsIDYsIDIxNCwgMTU3LCAxMSwgMzUsIAorICAgIDIzLCA2LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgNiwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDYsIDIyNCwgMTYxLCAxMSwgCisgICAgMzUsIDIzLCA2LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMjI5LCAyMjEsIDExLCAzNSwgMjMsIDQsIDI1NCwgMTQzLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCA0LCAyNDMsIDEwNywgMTEsIDM1LCAyMywgNCwgMjQ4LCA1NCwgMTEsIAorICAgIDM1LCAyMywgNCwgMjQ1LCAxMDAsIDExLCAzNSwgMjMsIDQsIDIxMCwgODUsIDExLCAzNSwgMjMsIDQsIDI0NSwgNjMsIDExLCAKKyAgICAzNSwgMjMsIDQsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCA0LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgNCwgMjM0LCAyMjIsIAorICAgIDExLCAzNSwgMjMsIDQsIDIzMywgOTgsIDExLCAzNSwgMjMsIDQsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDM1LCAyMywgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDQsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCA0LCAyMjUsIAorICAgIDEwOCwgMTEsIDM1LCAyMywgNCwgMjIzLCAzNywgMTEsIDM1LCAyMywgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAyMTksIDE3NywgMTEsIDM1LCAyMywgNCwgMjE3LCA0MSwgMTEsIDM1LCAyMywgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDQsIAorICAgIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCA0LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgNCwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIAorICAgIDQsIDIyNiwgMjAxLCAxMSwgMzUsIDIzLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzNSwgMjMsIDI0NSwgMTAxLCA4NywgCisgICAgMTEsIDM1LCAyMywgMjE2LCAxODAsIDg3LCAxMSwgMzUsIDIzLCAyMzQsIDIyMywgODcsIDExLCAzNSwgMjMsIDIyNSwgMTM0LCAKKyAgICA4NywgMTEsIDM1LCAyMywgMjIzLCAzOCwgODcsIDExLCAzNSwgMjMsIDIyNSwgMTA5LCA4NywgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDI1NCwgMTQzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MywgMTA3LCAxMSwgCisgICAgMzUsIDIzLCAzMiwgNiwgMjQ4LCA1NCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCAzMiwgNiwgCisgICAgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0NSwgNjMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTYsIDE3OSwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM0LCAyMjIsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzMsIAorICAgIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjcsIDIzNywgMTEsIDM1LCAyMywgCisgICAgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAxOTksIDExLCAzNSwgMjMsIDMyLCA2LCAyMjUsIAorICAgIDEwOCwgMTEsIDM1LCAyMywgMzIsIDYsIDIyMywgMzcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDYsIDIxNywgNDEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTQsIAorICAgIDE1NywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNSwgMTMzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMjQsIDE2MSwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMjAxLCAxMSwgMzUsIDIzLCAzMiwgMjI5LCAKKyAgICAyMjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTQsIDE0MywgMTEsIDM1LCAyMywgMzIsIDQsIDI1MiwgMjYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA0LCAyNDMsIDEwNywgMTEsIDM1LCAyMywgMzIsIDQsIDI0OCwgNTQsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDEwMCwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDYzLCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNCwgMjIyLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgMjI3LCAyMzcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgMTk5LCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMDgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCAzMiwgCisgICAgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIDQxLCAKKyAgICAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDIwMSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDM1LCAyMywgMzIsIDI0NSwgMTAxLCA4NywgMTEsIDM1LCAKKyAgICAyMywgMzIsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAyMywgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgCisgICAgMTM0LCA4NywgMTEsIDM1LCAyMywgMzIsIDIyMywgMzgsIDg3LCAxMSwgMzUsIDIzLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgCisgICAgMjMsIDYsIDI0NywgMjI3LCAxMSwgMjMsIDQsIDI0NywgMjI3LCAxMSwgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMjMsIDIxLCAKKyAgICAxMTAsIDExLCAyMywgMjEsIDEwNSwgMTEsIDIzLCAyMSwgMTU4LCAxMSwgMjMsIDIxLCAxNjEsIDExLCAyMywgMjEsIDE4OSwgCisgICAgMTEsIDIzLCAyMSwgMTk0LCAxMSwgMjMsIDIxLCAxOTgsIDExLCAyMywgMjEsIDE5NSwgMTEsIDIzLCAyMSwgMjAwLCAxMSwgCisgICAgMTM5LCAyMSwgMjEwLCA4NiwgMTEsIDEzOSwgMjEsIDExMCwgMTEsIDEzOSwgMjEsIDEwNSwgMTEsIDEzOSwgMjEsIDE1OCwgCisgICAgMTEsIDEzOSwgMjEsIDE2MSwgMTEsIDEzOSwgMjEsIDE4OSwgMTEsIDEzOSwgMjEsIDE5NCwgMTEsIDEzOSwgMjEsIDE5OCwgCisgICAgMTEsIDEzOSwgMjEsIDE5NSwgMTEsIDEzOSwgMjEsIDIwMCwgMTEsIDM1LCAyMSwgMjEwLCA4NiwgMTEsIDM1LCAyMSwgMTEwLCAKKyAgICAxMSwgMzUsIDIxLCAxMDUsIDExLCAzNSwgMjEsIDE1OCwgMTEsIDM1LCAyMSwgMTYxLCAxMSwgMzUsIDIxLCAxODksIDExLCAKKyAgICAzNSwgMjEsIDE5NCwgMTEsIDM1LCAyMSwgMTk4LCAxMSwgMzUsIDIxLCAxOTUsIDExLCAzNSwgMjEsIDIwMCwgMTEsIDM1LCAKKyAgICAyMywgMjEsIDIxMCwgODYsIDExLCAzNSwgMjMsIDIxLCAxMTAsIDExLCAzNSwgMjMsIDIxLCAxMDUsIDExLCAzNSwgMjMsIAorICAgIDIxLCAxNTgsIDExLCAzNSwgMjMsIDIxLCAxNjEsIDExLCAzNSwgMjMsIDIxLCAxODksIDExLCAzNSwgMjMsIDIxLCAxOTQsIAorICAgIDExLCAzNSwgMjMsIDIxLCAxOTgsIDExLCAzNSwgMjMsIDIxLCAxOTUsIDExLCAzNSwgMjMsIDIxLCAyMDAsIDExLCAyMzAsIAorICAgIDEzOCwgMjEsIDIxMCwgODYsIDExLCAyMzAsIDEzOCwgMjEsIDExMCwgMTEsIDIzMCwgMTM4LCAyMSwgMTA1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDIxLCAxNTgsIDExLCAyMzAsIDEzOCwgMjEsIDE2MSwgMTEsIDIzMCwgMTM4LCAyMSwgMTg5LCAxMSwgMjMwLCAxMzgsIAorICAgIDIxLCAxOTQsIDExLCAyMzAsIDEzOCwgMjEsIDE5OCwgMTEsIDIzMCwgMTM4LCAyMSwgMTk1LCAxMSwgMjMwLCAxMzgsIDIxLCAKKyAgICAyMDAsIDEwLCAxMSwgMjU0LCAxNzAsIDEwLCAxMSwgMjUyLCA1NCwgMTAsIDExLCAyMzUsIDEyMywgMTAsIDExLCAyNDgsIAorICAgIDE5NSwgMTAsIDExLCAyMTIsIDMwLCAxMCwgMTEsIDIxMCwgMTA4LCAxMCwgMTEsIDI0MiwgMzcsIDEwLCAxMSwgMjE3LCA4MCwgCisgICAgMTAsIDExLCAyMTEsIDQzLCAxMCwgMTEsIDIzNCwgMjUwLCAxMCwgMTEsIDIzMywgMTAyLCAxMCwgMTEsIDIzMSwgNzgsIDEwLCAKKyAgICAxMSwgMjI4LCA2MiwgMTAsIDExLCAyMjEsIDE2NiwgMTAsIDExLCAyNTQsIDE5NiwgMTAsIDExLCAyNDQsIDE0MiwgMTAsIAorICAgIDExLCAyMjIsIDI2LCAxMCwgMTEsIDIyNCwgODEsIDEwLCAxMSwgMjIzLCA5NSwgMTAsIDExLCAyMjAsIDU5LCAxMCwgMTEsIAorICAgIDIxNywgNywgMTAsIDExLCAyMTYsIDE5MiwgMTAsIDExLCAyMzQsIDEyOSwgMTAsIDExLCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAyNDgsIDIxNiwgMTAsIDExLCAyMTAsIDExMSwgMTAsIDExLCAyNDIsIDI0NCwgMTAsIDExLCAyNDcsIDExOSwgMjUyLCA1NCwgCisgICAgMTAsIDExLCAyNDcsIDExOSwgMjI4LCA2MiwgMTAsIDExLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMjQ3LCAxMTksIAorICAgIDIyNCwgODEsIDEwLCAxMSwgNjUsIDI1MiwgNTQsIDEwLCAxMSwgNjUsIDIzNSwgMTIzLCAxMCwgMTEsIDY1LCAyNDEsIDIxOCwgCisgICAgMTAsIDExLCA2NSwgMjQyLCAzNywgMTAsIDExLCA2NSwgMjExLCA0MywgMTAsIDExLCA2NSwgMjM0LCAyNTAsIDEwLCAxMSwgCisgICAgNjUsIDIzMywgMTAyLCAxMCwgMTEsIDY1LCAyMzEsIDc4LCAxMCwgMTEsIDY1LCAyMjgsIDYyLCAxMCwgMTEsIDY1LCAyMjEsIAorICAgIDE2NiwgMTAsIDExLCA2NSwgMjU0LCAxOTYsIDEwLCAxMSwgNjUsIDI0NCwgMTQyLCAxMCwgMTEsIDY1LCAyMjIsIDI2LCAxMCwgCisgICAgMTEsIDY1LCAyMjQsIDgxLCAxMCwgMTEsIDY1LCAyMjAsIDU5LCAxMCwgMTEsIDY1LCAyMTcsIDcsIDEwLCAxMSwgNjUsIAorICAgIDIxNiwgMTkyLCAxMCwgMTEsIDY1LCAyMzQsIDEyOSwgMTAsIDExLCA2NSwgMjQ4LCAyMTYsIDEwLCAxMSwgNjUsIDI0MiwgCisgICAgMjQ0LCAxMCwgMTEsIDIxNywgNzYsIDIzNSwgMTIzLCAxMCwgMTEsIDIxNywgNzYsIDI0MiwgMzcsIDEwLCAxMSwgMjE3LCAKKyAgICA3NiwgMjExLCA0MywgMTAsIDExLCAyMTcsIDc2LCAyMzMsIDEwMiwgMTAsIDExLCAyMTcsIDc2LCAyMjgsIDYyLCAxMCwgMTEsIAorICAgIDIxNywgNzYsIDIyMSwgMTY2LCAxMCwgMTEsIDIxNywgNzYsIDI1NCwgMTk2LCAxMCwgMTEsIDIxNywgNzYsIDIyMiwgMjYsIAorICAgIDEwLCAxMSwgMjE3LCA3NiwgMjI0LCA4MSwgMTAsIDExLCAyMTcsIDc2LCAyMjAsIDU5LCAxMCwgMTEsIDIxNywgNzYsIDIzNCwgCisgICAgMTI5LCAxMCwgMTEsIDIxNywgNzYsIDI0OCwgMjE2LCAxMCwgMTEsIDIxNywgNzYsIDI0MiwgMjQ0LCAxMCwgMTEsIDIxNywgCisgICAgNzYsIDI0NywgMTE5LCAyMjgsIDYyLCAxMCwgMTEsIDIxNywgNzYsIDI0NywgMTE5LCAyMjQsIDgxLCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyNTIsIDU0LCAxMCwgMTEsIDIxOCwgMTEwLCAyMzUsIDEyMywgMTAsIDExLCAyMTgsIDExMCwgMjQxLCAyMTgsIDEwLCAKKyAgICAxMSwgMjE4LCAxMTAsIDI0MiwgMzcsIDEwLCAxMSwgMjE4LCAxMTAsIDIxNywgODAsIDEwLCAxMSwgMjE4LCAxMTAsIDIxMSwgCisgICAgNDMsIDEwLCAxMSwgMjE4LCAxMTAsIDIzNCwgMjUwLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzEsIDc4LCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyMjgsIDYyLCAxMCwgMTEsIDIxOCwgMTEwLCAyMjEsIDE2NiwgMTAsIDExLCAyMTgsIDExMCwgMjU0LCAxOTYsIDEwLCAKKyAgICAxMSwgMjE4LCAxMTAsIDI0NCwgMTQyLCAxMCwgMTEsIDIxOCwgMTEwLCAyMjIsIDI2LCAxMCwgMTEsIDIxOCwgMTEwLCAyMjQsIAorICAgIDgxLCAxMCwgMTEsIDIxOCwgMTEwLCAyMjAsIDU5LCAxMCwgMTEsIDIxOCwgMTEwLCAyMTcsIDcsIDEwLCAxMSwgMjE4LCAKKyAgICAxMTAsIDIxNiwgMTkyLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzQsIDEyOSwgMTAsIDExLCAyMTgsIDExMCwgMjQ4LCAyMTYsIAorICAgIDEwLCAxMSwgMjE4LCAxMTAsIDIxMCwgMTExLCAxMCwgMTEsIDIxOCwgMTEwLCAyNDIsIDI0NCwgMTAsIDExLCAyMTgsIDExMCwgCisgICAgMjQ3LCAxMTksIDI1MiwgNTQsIDEwLCAxMSwgMjE4LCAxMTAsIDI0NywgMTE5LCAyNDQsIDE0MiwgMTAsIDExLCAyMzIsIAorICAgIDEyMiwgMjU0LCAxNzAsIDEwLCAxMSwgMjMyLCAxMjIsIDI1MiwgNTQsIDEwLCAxMSwgMjMyLCAxMjIsIDIzNSwgMTIzLCAxMCwgCisgICAgMTEsIDIzMiwgMTIyLCAyNDgsIDE5NSwgMTAsIDExLCAyMzIsIDEyMiwgMjQxLCAyMTgsIDEwLCAxMSwgMjMyLCAxMjIsIAorICAgIDIxMiwgMzAsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMCwgMTA4LCAxMCwgMTEsIDIzMiwgMTIyLCAyNDIsIDM3LCAxMCwgMTEsIAorICAgIDIzMiwgMTIyLCAyMTcsIDgwLCAxMCwgMTEsIDIzMiwgMTIyLCAyMTEsIDQzLCAxMCwgMTEsIDIzMiwgMTIyLCAyMzMsIDEwMiwgCisgICAgMTAsIDExLCAyMzIsIDEyMiwgMjMxLCA3OCwgMTAsIDExLCAyMzIsIDEyMiwgMjI4LCA2MiwgMTAsIDExLCAyMzIsIDEyMiwgCisgICAgMjIxLCAxNjYsIDEwLCAxMSwgMjMyLCAxMjIsIDI1NCwgMTk2LCAxMCwgMTEsIDIzMiwgMTIyLCAyNDQsIDE0MiwgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjIyLCAyNiwgMTAsIDExLCAyMzIsIDEyMiwgMjI0LCA4MSwgMTAsIDExLCAyMzIsIDEyMiwgMjIzLCA5NSwgCisgICAgMTAsIDExLCAyMzIsIDEyMiwgMjIwLCA1OSwgMTAsIDExLCAyMzIsIDEyMiwgMjE3LCA3LCAxMCwgMTEsIDIzMiwgMTIyLCAKKyAgICAyMTYsIDE5MiwgMTAsIDExLCAyMzIsIDEyMiwgMjM0LCAxMjksIDEwLCAxMSwgMjMyLCAxMjIsIDIxNiwgMjAyLCAxMCwgMTEsIAorICAgIDIzMiwgMTIyLCAyNDgsIDIxNiwgMTAsIDExLCAyMzIsIDEyMiwgMjEwLCAxMTEsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MiwgCisgICAgMjQ0LCAxMCwgMTEsIDEzOSwgMjUyLCA1NCwgMTAsIDExLCAxMzksIDIzNSwgMTIzLCAxMCwgMTEsIDEzOSwgMjQ4LCAxOTUsIAorICAgIDEwLCAxMSwgMTM5LCAyMTIsIDMwLCAxMCwgMTEsIDEzOSwgMjEwLCAxMDgsIDEwLCAxMSwgMTM5LCAyNDIsIDM3LCAxMCwgCisgICAgMTEsIDEzOSwgMjE3LCA4MCwgMTAsIDExLCAxMzksIDIxMSwgNDMsIDEwLCAxMSwgMTM5LCAyMzMsIDEwMiwgMTAsIDExLCAKKyAgICAxMzksIDIzMSwgNzgsIDEwLCAxMSwgMTM5LCAyMjgsIDYyLCAxMCwgMTEsIDEzOSwgMjIxLCAxNjYsIDEwLCAxMSwgMTM5LCAKKyAgICAyNTQsIDE5NiwgMTAsIDExLCAxMzksIDI0NCwgMTQyLCAxMCwgMTEsIDEzOSwgMjIyLCAyNiwgMTAsIDExLCAxMzksIDIyNCwgCisgICAgODEsIDEwLCAxMSwgMTM5LCAyMjMsIDk1LCAxMCwgMTEsIDEzOSwgMjIwLCA1OSwgMTAsIDExLCAxMzksIDIxNywgNywgMTAsIAorICAgIDExLCAxMzksIDIxNiwgMTkyLCAxMCwgMTEsIDEzOSwgMjM0LCAxMjksIDEwLCAxMSwgMTM5LCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAxMzksIDI0OCwgMjE2LCAxMCwgMTEsIDEzOSwgMjEwLCAxMTEsIDEwLCAxMSwgMTM5LCAyNDIsIDI0NCwgMTAsIDExLCAyMjYsIAorICAgIDE2OCwgNjYsIDIsIDEyMiwgMiwgMjE3LCA0MywgMTAsIDExLCAyMjYsIDE2OCwgMTIyLCAyLCAyNDgsIDE5NSwgMjMxLCAKKyAgICAyMDUsIDg2LCAyNDUsIDIyMCwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjE5LCAyOCwgMjExLCAyMzksIDIzMSwgMjA1LCAKKyAgICA4NiwgMjEyLCA5LCAyMTEsIDIzOSwgMjMxLCAyMDUsIDg2LCAyMjgsIDU2LCAyMTEsIDIzOSwgMjMxLCAyMDUsIDg2LCAyMjMsIAorICAgIDExMSwgMjQ2LCA5NiwgMjMxLCAyMDUsIDg2LCAyNDIsIDEyNywgMjQ2LCA5NiwgMjMxLCAyMDUsIDg2LCA3MSwgMjQ2LCA5NiwgCisgICAgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAxMTMsIDY0LCAyNTAsIDE0MSwgMjMxLCAKKyAgICAyMDUsIDg2LCAxMzQsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUwLCAxNDEsIDIzMSwgCisgICAgMjA1LCA4NiwgMjQ0LCA4MSwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDIxOSwgMTI1LCA2NCwgMjUwLCAxNDEsIAorICAgIDIzMSwgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyNDUsIDE5MywgNjQsIDI1MCwgCisgICAgMTQxLCAyMzEsIDIwNSwgODYsIDIyOCwgMjAwLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUyLCAKKyAgICAxNTMsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMTM0LCA2NCwgMjUyLCAxNTMsIAorICAgIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTIsIDE1MywgCisgICAgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUyLCAKKyAgICAxNTMsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIAorICAgIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUwLCAzNCwgCisgICAgMjMxLCAyMDUsIDg2LCAxMzQsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTAsIDM0LCAyMzEsIAorICAgIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDIxOSwgMTI1LCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTAsIDM0LCAyMzEsIAorICAgIDIwNSwgODYsIDIyOCwgMjAwLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyMjUsIDI1LCAyMzEsIDIwNSwgODYsIDIyNiwgCisgICAgMTU2LCAyMzEsIDIwNSwgODYsIDI1MiwgMTU0LCAyMzEsIDIwNSwgODYsIDI1MCwgNzAsIDIzMSwgMjA1LCA4NiwgMjE4LCAKKyAgICAyMzksIDIzMSwgMjA1LCA4NiwgMjE4LCAzOSwgMjMxLCAyMDUsIDg2LCAyNTMsIDE3OSwgMjMxLCAyMDUsIDg2LCAyMTEsIAorICAgIDIzMiwgMjMxLCAyMDUsIDg2LCAyMzUsIDYyLCAyMzEsIDIwNSwgODYsIDI1MiwgMTg0LCAxMzEsIDg2LCAyMDMsIDI1MiwgCisgICAgMTg0LCAxMzEsIDg2LCAyNDEsIDQzLCAxMzEsIDg2LCAyNDEsIDQyLCAxMzEsIDg2LCAyNDEsIDQxLCAxMzEsIDg2LCAyNDEsIAorICAgIDQwLCAxMzEsIDg2LCAyNDEsIDM5LCAxMzEsIDg2LCAyNDEsIDM4LCAxMzEsIDg2LCAyNDEsIDM3LCAxMzEsIDg2LCAyNDEsIAorICAgIDM2LCAxMzEsIDg2LCAyNDEsIDM1LCAxMzEsIDg2LCAyNDEsIDM0LCAxMzEsIDg2LCAyNDEsIDMzLCAxMzEsIDg2LCAyNDEsIAorICAgIDMyLCAxMzEsIDg2LCAyNDEsIDMxLCAxMzEsIDg2LCAyNDEsIDMwLCAxMzEsIDg2LCAyNDEsIDI5LCAxMzEsIDg2LCAyNDEsIAorICAgIDI4LCAxMzEsIDg2LCAyNDEsIDI3LCAxMzEsIDg2LCAyNDEsIDI2LCAxMzEsIDg2LCAyNDEsIDI1LCAxMzEsIDg2LCAyNDEsIAorICAgIDI0LCAxMzEsIDg2LCAyNDEsIDIzLCAxMzEsIDg2LCAyNDEsIDIyLCAxMzEsIDg2LCAyNDEsIDIxLCAxMzEsIDg2LCAyNDEsIAorICAgIDIwLCAxMzEsIDg2LCAyNDEsIDE5LCAxMzEsIDg2LCAyNDEsIDE4LCAxMzEsIDg2LCAyNDEsIDE3LCAxMzEsIDg2LCAyNDEsIAorICAgIDE2LCAxMzEsIDg2LCAyNDEsIDE1LCAxMzEsIDg2LCAyNDEsIDE0LCAxMzEsIDg2LCAyNDEsIDEzLCAxMzEsIDg2LCAyNDEsIAorICAgIDEyLCAxMzEsIDg2LCAyNDEsIDExLCAxMzEsIDg2LCAyNDEsIDEwLCAxMzEsIDg2LCAyNDEsIDksIDEzMSwgODYsIDI0MSwgOCwgCisgICAgMTMxLCA4NiwgMjQxLCA3LCAxMzEsIDg2LCAyNDEsIDYsIDEzMSwgODYsIDI0MSwgNSwgMTMxLCA4NiwgMjQxLCA0LCAxMzEsIAorICAgIDg2LCAyNDEsIDMsIDEzMSwgODYsIDI0MSwgMiwgMTMxLCA4NiwgMjQxLCAxLCAxMzEsIDg2LCAyNDEsIDAsIDEzMSwgODYsIAorICAgIDI0MCwgMjU1LCAxMzEsIDg2LCAyNDAsIDI1NCwgMTMxLCA4NiwgMjQwLCAyNTMsIDEzMSwgODYsIDI0MCwgMjUyLCAxMzEsIAorICAgIDg2LCAyNDAsIDI1MSwgMTMxLCA4NiwgNjcsIDI1MiwgMTg0LCAxMzEsIDg2LCAyMTMsIDIzOCwgMTMxLCA4NiwgMjEzLCAKKyAgICAyMzcsIDEzMSwgODYsIDIxMywgMjM2LCAxMzEsIDg2LCAyMTMsIDIzNSwgMTMxLCA4NiwgMjEzLCAyMzQsIDEzMSwgODYsIAorICAgIDIxMywgMjMzLCAxMzEsIDg2LCAyMTMsIDIzMiwgMTMxLCA4NiwgMjEzLCAyMzEsIDEzMSwgODYsIDIxMywgMjMwLCAxMzEsIAorICAgIDg2LCAyMTMsIDIyOSwgMTMxLCA4NiwgMjEzLCAyMjgsIDEzMSwgODYsIDIxMywgMjI3LCAxMzEsIDg2LCAyMTMsIDIyNiwgCisgICAgMTMxLCA4NiwgMjEzLCAyMjUsIDEzMSwgODYsIDIxMywgMjI0LCAxMzEsIDg2LCAyMTMsIDIyMywgMTMxLCA4NiwgMjEzLCAKKyAgICAyMjIsIDEzMSwgODYsIDIxMywgMjIxLCAxMzEsIDg2LCAyMTMsIDIyMCwgMTMxLCA4NiwgMjEzLCAyMTksIDEzMSwgODYsIAorICAgIDIxMywgMjE4LCAxMzEsIDg2LCAyMTMsIDIxNywgMTMxLCA4NiwgMjEzLCAyMTYsIDEzMSwgODYsIDIxMywgMjE1LCAxMzEsIAorICAgIDg2LCAyMTMsIDIxNCwgMTMxLCA4NiwgMjEzLCAyMTMsIDEzMSwgODYsIDIxMywgMjEyLCAxMzEsIDg2LCAyMTMsIDIxMSwgCisgICAgMTMxLCA4NiwgMjEzLCAyMTAsIDEzMSwgODYsIDIxMywgMjA5LCAxMzEsIDg2LCAyMTMsIDIwOCwgMTMxLCA4NiwgMjEzLCAKKyAgICAyMDcsIDEzMSwgODYsIDIxMywgMjA2LCAxMzEsIDg2LCAyMTMsIDIwNSwgMTMxLCA4NiwgMjEzLCAyMDQsIDEzMSwgODYsIAorICAgIDIxMywgMjAzLCAxMzEsIDg2LCAyMTMsIDIwMiwgMTMxLCA4NiwgMjEzLCAyMDEsIDEzMSwgODYsIDIxMywgMjAwLCAxMzEsIAorICAgIDg2LCAyMTMsIDE5OSwgMTMxLCA4NiwgMjEzLCAxOTgsIDEzMSwgODYsIDIxMywgMTk3LCAxMzEsIDg2LCAyMTMsIDE5NiwgCisgICAgMTMxLCA4NiwgMjEzLCAxOTUsIDEzMSwgODYsIDIxMywgMTk0LCAxMzEsIDg2LCAyMTMsIDE5MywgMTMxLCA4NiwgMjEzLCAKKyAgICAxOTIsIDEzMSwgODYsIDIxMywgMTkxLCAxMzEsIDg2LCAyMTMsIDE5MCwgMjI1LCAzMywgMjUwLCAyNDMsIDI1MiwgMTg0LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjU1LCA5LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDIxOSwgCisgICAgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAxMSwgNjQsIAorICAgIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIxOSwgCisgICAgMTI1LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDI0NSwgMTkzLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgMjE5LCAxNSwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIxNiwgMjQ4LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNSwgMTM5LCAKKyAgICA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgMjI0LCAxNSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgCisgICAgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjQxLCAyMjUsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAKKyAgICAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgODEsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIxOSwgMTI1LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0MSwgMjI1LCAyMjUsIAorICAgIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgCisgICAgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgMjM1LCAxMzksIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDEsIDIyNSwgMjI1LCAKKyAgICAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyNDEsIAorICAgIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgCisgICAgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgCisgICAgMTEsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgODEsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIxOSwgMTI1LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0NywgMjQ3LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCAKKyAgICA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjM1LCAxMzksIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDcsIDI0NywgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAKKyAgICAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDg1LCAyMzUsIDYyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjU1LCA5LCA2NCwgCisgICAgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDEzNCwgCisgICAgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCAxMSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIAorICAgIDI0MywgMjQ0LCA4MSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjE5LCAxMjUsIDY0LCAyNDksIDI0MiwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIyMCwgMTIyLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDUsIDE5MywgCisgICAgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjI4LCAyMDAsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIxNiwgMjQ4LCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzUsIDEzOSwgNjQsIDI0OSwgMjQyLCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCAzMSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjI0LCAxNSwgNjQsIAorICAgIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgCisgICAgNzEsIDIzNSwgNjIsIDIxLCAyMTAsIDg3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMTAsIDg3LCAyNDksIDIxOSwgMjEsIAorICAgIDEyMywgMjQ5LCAyMTksIDIxLCAxMTMsIDI0OSwgMjE5LCAyMSwgMTM0LCAyNDksIDIxOSwgMjEsIDI0NCwgMTEsIDI0OSwgCisgICAgMjE5LCAyMSwgMjQ0LCA4MSwgMjQ5LCAyMTksIDIxLCAyMTksIDEyNSwgMjQ5LCAyMTksIDIxLCAyMjAsIDEyMiwgMjQ5LCAKKyAgICAyMTksIDIxLCAyNDUsIDE5MywgMjQ5LCAyMTksIDIxLCAyMjgsIDIwMCwgMjQ5LCAyMTksIDg4LCA3LCA2LCAxLCA2MSwgODgsIAorICAgIDcsIDYsIDEsIDI1MywgMTU4LCA4OCwgNywgNiwgMSwgMjUxLCA2NiwgODgsIDcsIDYsIDEsIDI0OSwgNjAsIDg4LCA3LCA2LCAKKyAgICAxLCA3NSwgODgsIDcsIDYsIDEsIDI0NSwgNiwgODgsIDcsIDYsIDEsIDI0MywgMjAyLCA4OCwgNywgNiwgMSwgMjQyLCA2MCwgCisgICAgODgsIDcsIDYsIDEsIDczLCA4OCwgNywgNiwgMSwgMjM1LCAxNDQsIDg4LCA3LCA2LCAxLCAyMzUsIDIzLCA4OCwgNywgNiwgCisgICAgMSwgMTU2LCA4OCwgNywgNiwgMSwgMTkzLCA4OCwgNywgNiwgMSwgMjMwLCAyNSwgODgsIDcsIDYsIDEsIDc2LCA4OCwgNywgCisgICAgNiwgMSwgMjI2LCAxMDUsIDg4LCA3LCA2LCAxLCAyMjQsIDk2LCA4OCwgNywgNiwgMSwgMTUzLCA4OCwgNywgNiwgMSwgMjIyLCAKKyAgICA5MSwgODgsIDcsIDYsIDEsIDIxNywgMTUyLCA4OCwgNywgNiwgMSwgNzAsIDg4LCA3LCA2LCAxLCAyMTQsIDEwNSwgODgsIDcsIAorICAgIDYsIDEsIDIxMiwgOTgsIDg4LCA3LCA2LCAxLCAyMTEsIDE3OCwgODgsIDcsIDYsIDEsIDIxMSwgMTE3LCA4OCwgNywgNiwgMSwgCisgICAgMjEwLCAxNTksIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDcsIDYsIDEsIDIyMiwgOTEsIDM3LCAzMiwgNywgNiwgMSwgCisgICAgMjUxLCA2NiwgMzcsIDMyLCA3LCA2LCAxLCAxNTMsIDM3LCAyNTAsIDE5MSwgMzcsIDIxMSwgMTgwLCA5MiwgNywgNiwgMSwgCisgICAgNjEsIDkyLCA3LCA2LCAxLCAyNTMsIDE1OCwgOTIsIDcsIDYsIDEsIDI1MSwgNjYsIDkyLCA3LCA2LCAxLCAyNDksIDYwLCAKKyAgICA5MiwgNywgNiwgMSwgNzUsIDkyLCA3LCA2LCAxLCAyNDUsIDYsIDkyLCA3LCA2LCAxLCAyNDMsIDIwMiwgOTIsIDcsIDYsIDEsIAorICAgIDI0MiwgNjAsIDkyLCA3LCA2LCAxLCA3MywgOTIsIDcsIDYsIDEsIDIzNSwgMTQ0LCA5MiwgNywgNiwgMSwgMjM1LCAyMywgCisgICAgOTIsIDcsIDYsIDEsIDE1NiwgOTIsIDcsIDYsIDEsIDE5MywgOTIsIDcsIDYsIDEsIDIzMCwgMjUsIDkyLCA3LCA2LCAxLCAKKyAgICA3NiwgOTIsIDcsIDYsIDEsIDIyNiwgMTA1LCA5MiwgNywgNiwgMSwgMjI0LCA5NiwgOTIsIDcsIDYsIDEsIDE1MywgOTIsIDcsIAorICAgIDYsIDEsIDIyMiwgOTEsIDkyLCA3LCA2LCAxLCAyMTcsIDE1MiwgOTIsIDcsIDYsIDEsIDcwLCA5MiwgNywgNiwgMSwgMjE0LCAKKyAgICAxMDUsIDkyLCA3LCA2LCAxLCAyMTIsIDk4LCA5MiwgNywgNiwgMSwgMjExLCAxNzgsIDkyLCA3LCA2LCAxLCAyMTEsIDExNywgCisgICAgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCA5MiwgMjQwLCAyMDEsIDkyLCAyMzAsIDQ5LCA5MiwgMjIxLCAxODMsIDkyLCAyMTgsIAorICAgIDIyNiwgOTIsIDIyNCwgMjE4LCA5MiwgMjEyLCAyMywgMTUyLCAzNywgNywgNiwgMSwgNjEsIDE1MiwgMzcsIDcsIDYsIDEsIAorICAgIDI1MywgMTU4LCAxNTIsIDM3LCA3LCA2LCAxLCAyNTEsIDY2LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDksIDYwLCAxNTIsIDM3LCAKKyAgICA3LCA2LCAxLCA3NSwgMTUyLCAzNywgNywgNiwgMSwgMjQ1LCA2LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDMsIDIwMiwgMTUyLCAKKyAgICAzNywgNywgNiwgMSwgMjQyLCA2MCwgMTUyLCAzNywgNywgNiwgMSwgNzMsIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMTQ0LCAKKyAgICAxNTIsIDM3LCA3LCA2LCAxLCAyMzUsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCAxNTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE5MywgCisgICAgMTUyLCAzNywgNywgNiwgMSwgMjMwLCAyNSwgMTUyLCAzNywgNywgNiwgMSwgNzYsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNiwgCisgICAgMTA1LCAxNTIsIDM3LCA3LCA2LCAxLCAyMjQsIDk2LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIAorICAgIDIyMiwgOTEsIDE1MiwgMzcsIDcsIDYsIDEsIDIxNywgMTUyLCAxNTIsIDM3LCA3LCA2LCAxLCA3MCwgMTUyLCAzNywgNywgNiwgCisgICAgMSwgMjE0LCAxMDUsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIAorICAgIDM3LCA3LCA2LCAxLCAyMTEsIDExNywgMTUyLCAzNywgNywgNiwgMSwgMjEwLCAxNTksIDIyMywgMTU3LCAyMzEsIDk3LCA1MCwgCisgICAgMjIzLCAxNTcsIDIzMSwgOTQsIDUwLCAxNTIsIDkyLCA3LCA2LCAxLCA2MSwgMTUyLCA5MiwgNywgNiwgMSwgMjUzLCAxNTgsIAorICAgIDE1MiwgOTIsIDcsIDYsIDEsIDI1MSwgNjYsIDE1MiwgOTIsIDcsIDYsIDEsIDI0OSwgNjAsIDE1MiwgOTIsIDcsIDYsIDEsIAorICAgIDc1LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDUsIDYsIDE1MiwgOTIsIDcsIDYsIDEsIDI0MywgMjAyLCAxNTIsIDkyLCA3LCA2LCAKKyAgICAxLCAyNDIsIDYwLCAxNTIsIDkyLCA3LCA2LCAxLCA3MywgMTUyLCA5MiwgNywgNiwgMSwgMjM1LCAxNDQsIDE1MiwgOTIsIDcsIAorICAgIDYsIDEsIDIzNSwgMjMsIDE1MiwgOTIsIDcsIDYsIDEsIDE1NiwgMTUyLCA5MiwgNywgNiwgMSwgMTkzLCAxNTIsIDkyLCA3LCAKKyAgICA2LCAxLCAyMzAsIDI1LCAxNTIsIDkyLCA3LCA2LCAxLCA3NiwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAxMDUsIDE1MiwgOTIsIAorICAgIDcsIDYsIDEsIDIyNCwgOTYsIDE1MiwgOTIsIDcsIDYsIDEsIDE1MywgMTUyLCA5MiwgNywgNiwgMSwgMjIyLCA5MSwgMTUyLCAKKyAgICA5MiwgNywgNiwgMSwgMjE3LCAxNTIsIDE1MiwgOTIsIDcsIDYsIDEsIDcwLCAxNTIsIDkyLCA3LCA2LCAxLCAyMTQsIDEwNSwgCisgICAgMTUyLCA5MiwgNywgNiwgMSwgMjEyLCA5OCwgMTUyLCA5MiwgNywgNiwgMSwgMjExLCAxNzgsIDE1MiwgOTIsIDcsIDYsIDEsIAorICAgIDIxMSwgMTE3LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTAsIDE1OSwgMjQ5LCAxMjgsIDE1MiwgOTIsIDcsIDYsIDEsIDIyNiwgCisgICAgMTA1LCAxNTIsIDkyLCAyNDAsIDExMywgMTUyLCA5MiwgMTkwLCAxNTIsIDkyLCAyMDYsIDE1MiwgOTIsIDI1NSwgMjUsIAorICAgIDE1MiwgOTIsIDIxMiwgMjMsIDQyLCAyNDcsIDE2NCwgOTIsIDI1MCwgMjMsIDkyLCAyNDksIDE3MCwgOTIsIDI0MywgMjUyLCAKKyAgICA5MiwgMjQwLCAxMDUsIDkyLCAyMjksIDg2LCA5MiwgMjI5LCA3OSwgOTIsIDIyNiwgMjE0LCA5MiwgMjE5LCAzNSwgOTIsIAorICAgIDEyMCwgMiwgMjQ1LCAzMSwgNzgsIDkyLCAyMTMsIDExOSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNjEsIDIyMywgCisgICAgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDI1MywgMTU4LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNTEsIDY2LCAyMjMsIAorICAgIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNDksIDYwLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3NSwgMjIzLCAxMDMsIAorICAgIDIzNSwgMjM5LCAxNiwgMSwgMjQ1LCA2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNDMsIDIwMiwgMjIzLCAxMDMsIAorICAgIDIzNSwgMjM5LCAxNiwgMSwgMjQyLCA2MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzMsIDIyMywgMTAzLCAyMzUsIAorICAgIDIzOSwgMTYsIDEsIDIzNSwgMTQ0LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMzUsIDIzLCAyMjMsIDEwMywgMjM1LCAKKyAgICAyMzksIDE2LCAxLCAxNTYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDE5MywgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgCisgICAgMSwgMjMwLCAyNSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzYsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIAorICAgIDIyNiwgMTA1LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMjQsIDk2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAKKyAgICAxNTMsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIyMiwgOTEsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxNywgCisgICAgMTUyLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCA3MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjE0LCAxMDUsIAorICAgIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMiwgOTgsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMSwgMTc4LCAKKyAgICAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTEsIDExNywgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjEwLCAxNTksIAorICAgIDQyLCAxNDEsIDI0MSwgNjMsIDkyLCA1NiwgMjM0LCAxOCwgOTIsIDU2LCAyMDYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MCwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjIsIDkyLCA1NiwgMjQ4LCA5MCwgOTIsIAorICAgIDksIDIxNCwgMTc3LCAyMzgsIDY5LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyOCwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICA0MiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDM1LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDQsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCA2NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjcsIDkyLCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA0MywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjksIDkyLCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAzNCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI3LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTcsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDM3LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgNDgsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDcyLCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgNzEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyNSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDUyLCA5MiwgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNzAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ3LCA5MiwgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMjYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDMxLCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMzAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2MCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDM4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0MSwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDMzLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1OCwgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgMzksIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA2OSwgMjE2LCA2LCAKKyAgICAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNTMsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDM2LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA0OSwgMjE2LCAKKyAgICA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgMzIsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDYzLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIDE3NywgMjM4LCA0NSwgMzcsIAorICAgIDE1NCwgMjU0LCAyNDUsIDM3LCAxNTQsIDI1NSwgMTIsIDI0OSwgNzEsIDI0NCwgNDIsIDI1MCwgMCwgMjE0LCAxOTQsIDIyOCwgCisgICAgMjEzLCAyLCAyMTgsIDE1MywgMjE4LCAzMywgMTE3LCAyMzAsIDExNCwgMjE4LCAzMiwgMjUwLCAyNiwgMjUzLCAyMDcsIAorICAgIDI0NiwgNTQsIDIxOCwgMzEsIDExNywgMjUxLCAxMTgsIDIyMywgMTU4LCAyNTEsIDE0MCwgMjUzLCAyMDcsIDIyOCwgMjEyLCAKKyAgICAyMTIsIDQxLCAyMTIsIDM1LCAyMTMsIDEzMSwgMjMwLCAxOTUsIDIxMiwgMjUsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjQ1LCAKKyAgICA0NSwgMjQ1LCAyMjQsIDI0MiwgMTgxLCAyNTQsIDEyOCwgMjQ1LCAyMjQsIDI0MiwgMTgxLCAyNTMsIDIyNSwgMjQyLCAxODEsIAorICAgIDIsIDIzMSwgNTEsIDE2NiwgMjMwLCAxMjksIDg3LCAyMTIsIDI3LCAyNDksIDEzNywgMjMwLCAxMjksIDg3LCAyNDQsIDkyLCAKKyAgICAyMjQsIDIyLCAyMzAsIDEyOSwgODcsIDIxMiwgMjcsIDI0MiwgMjEwLCAyMzAsIDEyOSwgODcsIDI0MywgMjI5LCAyMzAsIAorICAgIDEyOSwgODcsIDIxMiwgNTIsIDI0MiwgMjEwLCAyMzAsIDEyOSwgODcsIDIzMywgODAsIDIyNCwgMjIsIDIzMCwgMTI5LCA4NywgCisgICAgMjEyLCA1MiwgMjQ5LCAxMzcsIDIzMCwgMTI5LCA4NywgMjQ5LCAxMzcsIDIzMCwgMTI4LCAxNjYsIDIzMCwgMTI5LCAyLCAKKyAgICAyNDQsIDE5MCwgMjQ0LCA5MiwgMjI0LCAyMiwgMjMwLCAxMjksIDIsIDI0NCwgMTkwLCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIAorICAgIDEyOSwgMiwgMjQ0LCAxOTAsIDI0MywgMjI5LCAyMzAsIDEyOSwgMiwgMjQ0LCAxOTAsIDIxOCwgMzgsIDIsIDI0NCwgMTkwLCAKKyAgICAyNDIsIDE3OSwgMjE4LCAxNTYsIDIxOSwgMjU1LCAyMTgsIDE1NiwgMjUwLCAxMTYsIDIyMSwgMTY4LCAyNDUsIDM5LCAyMTUsIAorICAgIDIzNSwgMjQ4LCA4NCwgMjE1LCAyMzUsIDIyNiwgNTksIDIxNSwgMjM1LCAyNTEsIDI3LCAyMTUsIDEwOSwgMjUwLCAxMTgsIAorICAgIDI1MSwgMjEwLCAyMjIsIDE5MSwgMjQxLCAxNzksIDIxOCwgMzYsIDI1MSwgMjEwLCAyNDUsIDIyOCwgNjQsIDIzMSwgMTk0LCAKKyAgICAyNDUsIDIyOCwgNjQsIDIyMywgMzEsIDI0MSwgMjA0LCAyNDQsIDExLCAyMzMsIDU0LCAyNDksIDI0NiwgMjMxLCAxNzAsIAorICAgIDIzMywgNTMsIDI0NCwgMTc2LCAyMzMsIDUzLCAyMzMsIDU0LCAyNDQsIDQ3LCAyMzYsIDAsIDIxMSwgMjM5LCAyMzAsIDU4LCAKKyAgICAyMTYsIDM0LCAyNTMsIDE5MSwgMjQyLCAxNDMsIDIzMSwgNjcsIDIxMiwgMzksIDIxNywgNTcsIDIzMywgMjYsIDI1MiwgCisgICAgMTQ5LCAyMjUsIDYyLCAyMjMsIDExMSwgMjU0LCA1NCwgMjQyLCAxMjcsIDI1NCwgNTQsIDIyNSwgMjE3LCAyMjUsIDIxOCwgCisgICAgMjUwLCAxMTksIDIxOCwgMTE0LCAyNDIsIDIzLCAyMTksIDkwLCA2NCwgMjI1LCA0NCwgMjMxLCA4NywgMjI2LCAxOTcsIAorICAgIDI1MSwgMTk0LCAyMjQsIDIyOSwgMjMzLCAzNiwgMjIzLCAzMiwgMjQ5LCAxNDIsIDIyMywgMzIsIDI1MiwgMTU5LCAyNDksIAorICAgIDE3MywgMjIzLCAzMSwgMjQ5LCA5NSwgMjIsIDIyMywgMzEsIDIxOCwgMTQxLCAyNTEsIDE2NywgMjE5LCAxNCwgMjUxLCAKKyAgICAxNTEsIDI0MywgMjUxLCAyNDMsIDI0NywgMjIyLCAyMDcsIDIxNywgMjQ2LCAyMjQsIDIzMSwgMjQ4LCAxNzUsIDIyNiwgCisgICAgMjM2LCAyMTgsIDcsIDI0MywgMjQ4LCAyMTksIDIzMCwgMjQ0LCA5MSwgMjUxLCAyMSwgMiwgMjE3LCAyMzksIDI0OCwgMzUsIAorICAgIDIxOSwgNTIsIDI0MCwgMTEyLCAyNDksIDE0MSwgMjIwLCA3MCwgMjQwLCAxMTEsIDI0MCwgMTEyLCAyNDksIDE0MSwgMjQ2LCAKKyAgICAxMDgsIDI0OSwgMTcyLCAyNTAsIDg0LCAxMzAsIDI1MCwgMjU0LCAyMzIsIDE0MSwgMjQ5LCA4OCwgMjQxLCA1NSwgMjI0LCAKKyAgICAyMzMsIDIxOSwgMjQwLCAyNTIsIDM2LCAyNTEsIDE2MywgMjI0LCAyMzQsIDY0LCAyNDQsIDMzLCAyNDksIDE3MSwgMjQ0LCAKKyAgICAyNCwgMjIsIDIzNCwgMzIsIDIxNywgMTksIDIxMSwgMjMwLCAyNDIsIDEzLCAyMjIsIDEyLCAyNTEsIDE3NywgMjIsIDI0OSwgCisgICAgMTAyLCAyMTEsIDIzNywgMjQyLCAxODQsIDI0OSwgMjM1LCAyNDIsIDE4NCwgMjE1LCAxOTMsIDI0NiwgOTAsIDI1MiwgNjIsIAorICAgIDIzMCwgOTMsIDI1MCwgNywgMjUyLCA2MiwgMjMwLCA5MiwgMjUyLCAxODcsIDI1MSwgMTc2LCAyMjMsIDMzLCAyMTEsIDIwMSwgCisgICAgMjI0LCAxOTUsIDI1MSwgMjM1LCAyNTEsIDIwLCAyMzUsIDEzOCwgMjUwLCA3NywgMjE1LCAyMzUsIDI0NCwgMTYyLCAyNTAsIAorICAgIDc2LCAyNDQsIDk0LCAyNDQsIDk1LCAyMTksIDEyLCAyNTIsIDE1OCwgMjI1LCAyNTAsIDIyNCwgMjQ0LCAyNDksIDIwNCwgCisgICAgMjUyLCAxNTksIDIxNywgNTksIDIxNSwgMjM1LCAyNDksIDEyOCwgMjQ0LCA2NywgMjI1LCA2MywgMjQ4LCA4MSwgMjM1LCAKKyAgICAxMzEsIDI0NywgMTMxLCAyNTAsIDIzMiwgMjE4LCAxMTMsIDIxMSwgMjQwLCAyNTAsIDk4LCAyMzAsIDEyOSwgMjEzLCAxNjQsIAorICAgIDI1MCwgMTYyLCAyMjEsIDE5OSwgMjIxLCAyMjQsIDI0MiwgMTQ4LCAyNTAsIDI1MSwgMjUwLCAyMzMsIDI0MCwgMjQ1LCAKKyAgICAyNDQsIDEzMCwgMjEyLCAwLCAyMjIsIDIwMCwgMjQ5LCAyMzYsIDI0NCwgODYsIDIyNSwgMiwgMjIsIDI0NCwgOTAsIDIzMCwgCisgICAgMjI3LCAyMzAsIDEwOCwgMjUxLCAxMCwgMjUwLCAzOSwgMjQxLCAyMzIsIDI1MywgMjQxLCAyMjYsIDYyLCAyMTYsIDE0LCAKKyAgICAyNDEsIDI1MSwgMjUwLCAyOSwgMjE2LCAyNDIsIDIxNiwgMTEzLCAyNTAsIDIwLCAyNTEsIDIwMiwgMjI1LCAxNzcsIDI1MywgCisgICAgMjQwLCAyMTMsIDE3MiwgMjQzLCAxMTAsIDI0NywgMTk3LCAyNDEsIDE1NiwgMjE5LCA4NCwgMjMxLCAyMzQsIDI1MSwgMjQ1LCAKKyAgICAyNDMsIDExMSwgMjQ3LCAyNDAsIDI1MSwgMTY2LCAyNDQsIDUyLCAyMjUsIDMzLCAyNTAsIDI0MSwgMjgsIDIyOCwgNDcsIAorICAgIDIzMCwgODUsIDI4LCAyMjgsIDQyLCAyMjEsIDIxMiwgMjQyLCA5OSwgMjgsIDIzNCwgMTM3LCAyMTUsIDE5MCwgMjEzLCAKKyAgICAxNTQsIDI4LCAyMjEsIDE5MiwgMjIyLCAxMjQsIDIyMCwgMTEsIDIsIDIyMSwgMjI3LCAyMTYsIDI0NCwgMjIzLCAxNzgsIAorICAgIDIyLCAyNTIsIDE1OSwgMjE5LCAxMDUsIDIyLCAyMTksIDEwNSwgMjUxLCAxODcsIDI1MiwgMTIzLCAyMiwgMjQxLCA0OSwgCisgICAgMjUwLCAxMjAsIDI0NCwgNzMsIDIxOSwgNjMsIDIyMiwgMTI1LCAyMTgsIDEyLCAyMTUsIDE5NCwgMjQwLCAyNDYsIDIyMywgCisgICAgMTc5LCAyNTQsIDEyOSwgMjQ0LCAzMSwgMjIyLCAxMzYsIDI0NCwgMzEsIDIxNywgMjQxLCAyNDAsIDIzNSwgMjUxLCAxMTksIAorICAgIDI0MCwgMjM1LCAyLCAyNDMsIDk0LCAyMjYsIDIyOSwgMjUxLCAxMTksIDIzNSwgMTMxLCAyMjQsIDIzOSwgMjI2LCAyMjgsIAorICAgIDI0NSwgNDQsIDIyNCwgMjM5LCAyMjYsIDIyOCwgMjQwLCAyNDQsIDI1MiwgMTQ1LCAyNTMsIDE4MSwgMjE2LCAyNTIsIDIzMSwgCisgICAgMjM0LCAyNDAsIDI0MCwgMjMyLCAxMTEsIDI0MCwgMjQwLCAyNDksIDE3NiwgMjE4LCAxMjUsIDIyMSwgMTk4LCAyNDgsIDQzLCAKKyAgICAyMTgsIDEyNSwgMjQ0LCAxODAsIDIzNSwgMTQ5LCAyMzMsIDg5LCAyMzUsIDEzMSwgMjUwLCAyMjYsIDI0NSwgNDQsIDI1MCwgCisgICAgMjI2LCAyMjMsIDE0MSwgMjMwLCAxMTIsIDIyNiwgMTE0LCAyMTIsIDQxLCAyNTEsIDEyMywgMjQ5LCAxNDUsIDIxNiwgMTA2LCAKKyAgICAyMzMsIDE4LCAyMjMsIDE4MCwgMjUwLCAyMjQsIDI0NiwgOTYsIDI0OSwgMTM1LCAyMTIsIDMsIDIxOSwgNzAsIDIxOSwgNjgsIAorICAgIDI0MCwgMjQ1LCAyMjMsIDE1MywgMjQyLCAxNzAsIDIyMCwgNTcsIDIzMCwgMTQ1LCAyMjIsIDE5NCwgMjUwLCAxMDgsIDI0NywgCisgICAgMTM2LCAyMjUsIDczLCAyNTEsIDIwMywgMjQ1LCAxNjksIDIyNiwgMjM4LCAyMTgsIDI1MiwgMjIwLCA1MiwgMjUxLCAxMjIsIAorICAgIDI1NCwgOTIsIDI0MSwgNTQsIDIzMywgMTIxLCAyNTIsIDYwLCAyNDQsIDkwLCAyMTUsIDE5MywgMjQ0LCA5MCwgMjUxLCAKKyAgICAyMDksIDIxNSwgOTEsIDI0MSwgMjQ5LCAyNTAsIDEwOSwgMjUyLCAxODcsIDI1MCwgMTA5LCAyNDMsIDI0MiwgMjUyLCAxODcsIAorICAgIDI1MCwgMTA5LCAyNTEsIDIzNywgMjI1LCAxOTUsIDIzNCwgMjYsIDIyNCwgMjQ4LCAyNDYsIDg3LCAyNTEsIDExLCAyNTIsIAorICAgIDE3NywgMjUxLCAxMSwgMjQ3LCAxMzAsIDIzMCwgMTEzLCAyNDQsIDE5MCwgMjQ5LCAxNDYsIDI0NCwgMTkwLCAyMTYsIDEwNywgCisgICAgMjQ0LCAxOTAsIDIyMywgMTgxLCAyNDQsIDE5MCwgMjUwLCAyMjUsIDI0NCwgMTkwLCAyNDYsIDk3LCAyNDQsIDE5MCwgMjE4LCAKKyAgICAyNDEsIDIxMiwgMywgMjQwLCAyNDYsIDI0NCwgMTkwLCAyMzAsIDE0NiwgMjQ0LCAxOTAsIDI0NywgMTM3LCAyNDQsIDE5MCwgCisgICAgMjI1LCA3NCwgMjQ0LCAxOTAsIDI0MywgMjQ1LCAyNDQsIDE5MCwgMjQyLCAyMCwgMjQ0LCAxOTAsIDIxMSwgMjI0LCAyNDQsIAorICAgIDE5MCwgMjUyLCA3MSwgMjQ0LCAxOTAsIDIyNiwgNDUsIDI0NCwgMTkwLCAyMjUsIDc0LCAyMjgsIDUzLCAyMjUsIDIzMiwgCisgICAgMjI0LCAxODYsIDI0NSwgMTMsIDI0NSwgMjI3LCAyMjgsIDUzLCAyMzAsIDExMCwgMjE2LCAxOSwgNzEsIDEyMCwgMjI1LCA3LCAKKyAgICAyNTIsIDE4MiwgMjM1LCAyNDIsIDcxLCAxMjQsIDIyNSwgNywgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgNDMsIDIyNSwgNywgCisgICAgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgNDQsIDIyNSwgNywgMjUyLCAxODIsIDIzNSwgMjQyLCAyNDQsIDg0LCAyNDIsIDE2LCAKKyAgICA1MCwgMjEyLCAzMywgMjQyLCAxNiwgNTAsIDIyNiwgMjE1LCAyNDIsIDE2LCA1MCwgMjE2LCAxMzUsIDEyMCwgNTAsIDIxNiwgCisgICAgMTM1LCAxMjQsIDUwLCAyNTAsIDE5LCAyNDIsIDExLCA1MCwgMjA0LCAyNDIsIDExLCA1MCwgMjQ5LCAxMjMsIDIxMSwgMjIwLCAKKyAgICAyNDEsIDI1MSwgMjQ1LCAxNCwgMjI5LCAxMDQsIDIxNywgMTUxLCAyMzUsIDEyNSwgMjQ2LCA5MiwgMjM0LCA4MiwgMjUxLCAKKyAgICAyNDcsIDIxMSwgMjIwLCAyNDksIDI0OSwgMjI0LCAxMjcsIDI0MiwgMTQsIDIyNCwgMjMwLCAyMzEsIDE3NywgMjIwLCA0LCAKKyAgICAyNTMsIDIwMywgMjIwLCA0LCAyNDEsIDE2NCwgMjIwLCA0LCAyMTEsIDIyMCwgMjIxLCAyNDAsIDIxMSwgMjIwLCAyNTEsIAorICAgIDE4NiwgMjQ0LCAyOSwgMjUxLCA5MCwgMjM2LCAwLCAyMTksIDE2OSwgMjUxLCA4OSwgMjM2LCAwLCAyMTksIDE2OSwgMjUxLCAKKyAgICAxNjIsIDI0MiwgMTk0LCAyMzEsIDE4NSwgMjExLCAyMjEsIDI0NCwgMTc0LCAyMzEsIDE4NiwgMjIsIDIxMSwgMjIyLCAyNDEsIAorICAgIDYwLCAyNDIsIDEwLCAxMTMsIDIzMSwgNTksIDI0MSwgNjAsIDI0MiwgMTAsIDExMywgMjExLCAyMTksIDI0MSwgNjAsIDI0MiwgCisgICAgMTAsIDIyNCwgMjU1LCAyMjYsIDIyNywgMjExLCAyMjIsIDIsIDI1MSwgMTA2LCAyNDUsIDIyNSwgMjUxLCAxNDEsIDIsIAorICAgIDIxMywgMjQ2LCAyMjUsIDE2OCwgMiwgMjUxLCAyMTIsIDI0MiwgMzQsIDIzMSwgMTg2LCAyLCAyNDIsIDExMCwgMjI1LCAKKyAgICAxMDksIDIzMSwgMTc0LCAyMzEsIDE4NiwgMiwgMjE1LCA5NywgMjI2LCAyMDgsIDIzMSwgMTg1LCAyMjYsIDIwOCwgMjExLCAKKyAgICAyMjEsIDI1MiwgMTg2LCAyNDksIDE5MCwgMjExLCAyMDUsIDIyNCwgMTg5LCAyMzUsIDEzMSwgMjI2LCAyMjMsIDIzNSwgCisgICAgMTMxLCAyNDIsIDE2OSwgMjQyLCAyMjIsIDI1MiwgMTg3LCAyNTQsIDExMywgMjQ1LCAxOCwgMjU0LCAxNjAsIDI1NCwgMTYxLCAKKyAgICAyMzAsIDEzNiwgMjM2LCA1LCAyMTksIDEwMCwgMjM1LCAyMzIsIDI0OCwgMzQsIDIyNSwgMTY3LCAyNDIsIDEwNSwgMjQ4LCAKKyAgICAxNzksIDIzMiwgMjAxLCAyMjksIDIxMSwgMjI0LCAyNTQsIDI0NCwgMTkxLCAyMzEsIDE0MiwgMjQyLCAzMywgMjUyLCAxMzgsIAorICAgIDIyNSwgMSwgMjE3LCAxNzEsIDIyNSwgNjYsIDIzNCwgNjQsIDc4LCAyMzIsIDExMSwgMjMzLCAxMCwgMjIyLCAyMzMsIDI0MywgCisgICAgNTQsIDIxOCwgMTMxLCAyMzQsIDYzLCAyNTEsIDE3MSwgMjQ5LCAxNDgsIDIsIDI0MSwgMjI3LCAyMTIsIDE5LCAyNTIsIDY5LCAKKyAgICAyNDEsIDIyNywgMjUxLCAxMzUsIDI0MSwgMjI3LCAxMTMsIDI0MSwgMjI1LCAyMTksIDEwLCAyNDEsIDIyNywgMjQyLCAxMjAsIAorICAgIDI0MSwgMjI3LCAyNDEsIDIyOCwgMiwgNzQsIDI1MSwgMjA4LCAyNDEsIDIyNywgMjQyLCAxMjcsIDI0MSwgMjI3LCAyMTEsIAorICAgIDQyLCAyNDEsIDIyNywgMjI0LCAxMjgsIDI0MSwgMjI3LCAyNDEsIDIyOCwgMiwgMjIzLCAzMywgMjIzLCA0NCwgMjQxLCAKKyAgICAyMjUsIDI0MSwgMjI4LCAyNDgsIDgxLCAyNDcsIDI0OSwgMjIwLCA4MiwgMiwgMTE1LCA1OSwgMjM1LCAyMTUsIDI0NSwgCisgICAgMTcyLCAxOTIsIDI1MSwgMTE2LCAyNTQsIDExMiwgODcsIDI1MSwgMTk1LCAyMTksIDkyLCA4NywgMjQ5LCAyMjgsIDg3LCAKKyAgICAyMTgsIDI0NiwgMjE3LCAyNDgsIDg3LCAyNDYsIDg1LCAyNDgsIDE1NywgODcsIDIyNSwgNjcsIDY0LCAyMjQsIDI0OSwgCisgICAgMjQ0LCA2MSwgMjUyLCAzLCAyNDcsIDE2NSwgODcsIDIxOSwgMywgMjUyLCAxNTgsIDIxNiwgMTQ5LCAyNTIsIDE1OCwgNzEsIAorICAgIDI0NCwgNTEsIDI0MCwgMjExLCAyMjUsIDUsIDg3LCAyMzAsIDE0OSwgMjUyLCAxNzIsIDI0OSwgOTgsIDI0NSwgMzIsIDExNCwgCisgICAgMjQ3LCAxMzIsIDUwLCAyNDksIDEzOSwgMjUwLCAyNDIsIDI1MiwgMTQ0LCAyLCAyMTEsIDQwLCA1MCwgMjUyLCAxNDQsIDIsIAorICAgIDI0NywgMTMyLCA1MCwgMjUyLCAxNDQsIDIsIDI0NSwgNDcsIDUwLCAyNTIsIDE0NCwgMiwgMjI0LCAyMjgsIDUwLCAyMzAsIAorICAgIDE0OSwgMiwgMjExLCAyMzUsIDI1MCwgMTM4LCAyLCAyMTQsIDE1MywgMjE1LCAyMzEsIDIyLCAyMTEsIDQwLCA1MCwgMjIxLCAKKyAgICAxNzgsIDIyNSwgMTY2LCAyNDksIDIwOCwgMjUxLCAxMzksIDIzMCwgMTg2LCAyNDQsIDU2LCAyNDcsIDE4NSwgMjI2LCAxNjEsIAorICAgIDI0NywgMTkwLCAyNDYsIDQ5LCAyNDQsIDEwNywgMjQ0LCA0MCwgMjA0LCAyNDQsIDEwNywgMjQ0LCA0MCwgMjI2LCA3NiwgMiwgCisgICAgMjQ5LCAxMDAsIDIyNiwgNzYsIDI0NCwgMTgzLCAyMTQsIDE2MywgMjUxLCAxNiwgMjE3LCAxOCwgMjUxLCAxNiwgMjUwLCAKKyAgICAyNDMsIDIzNSwgMjQyLCAyNTAsIDEzOCwgMiwgMjE0LCAxNTMsIDIxNSwgMjMwLCAyNTAsIDEzOCwgMiwgMjQ2LCAxMDQsIAorICAgIDIxNSwgMjMwLCAyNTIsIDE0MSwgMjUwLCAxMzcsIDI1MCwgNiwgMjI0LCAxMjMsIDIyMiwgMTg1LCAyMjQsIDEyMywgMjI2LCAKKyAgICAxOSwgMjE4LCAxMjEsIDIyMiwgMTMxLCAyMTUsIDIyMiwgMjIyLCAxMzEsIDI1MSwgMTkxLCAyMTcsIDkxLCAyMzMsIDUxLCAKKyAgICAyMjgsIDQ1LCAyMjgsIDQ2LCAyLCAyNDgsIDgwLCAyNDksIDE0NywgMjUwLCAwLCAyNTEsIDE5MiwgMjA0LCAyNTEsIDE5MiwgCisgICAgMjQyLCAxMjcsIDI1MSwgMTkyLCAyNTEsIDIwOCwgMjUxLCAxOTIsIDIyNiwgMTU3LCAyNTEsIDE5MiwgMjUxLCAxODksIAorICAgIDIyOSwgMjA1LCAyNTIsIDE3NSwgMjIxLCAxODYsIDIzMSwgNjAsIDIxNywgMSwgMjIzLCAxMjMsIDIyNiwgNzQsIDI0NCwgCisgICAgMTU5LCAyMzEsIDIzNCwgMjIxLCAyMjMsIDI1NCwgODksIDIyNCwgMTQ1LCAyNTQsIDI1MiwgMjMyLCAxMTMsIDI1MCwgMTI3LCAKKyAgICAyMzEsIDcyLCAyMjYsIDEyOSwgMjE1LCAyMzgsIDIzNSwgMjUyLCAyMTUsIDIzOCwgMjI2LCA4MiwgMjQ2LCAyNCwgODcsIAorICAgIDIzNSwgMjQ5LCAyNDUsIDExOSwgMjQ1LCAxMjAsIDIsIDI0NiwgMTA0LCA4MCwgNDgsIDI1MCwgMCwgMjMxLCAyMDAsIDIsIAorICAgIDIzMiwgMTA3LCAyNDQsIDczLCAyNTAsIDAsIDIzMSwgMjAwLCAyLCAyMjMsIDE1NywgMjQ0LCA3MywgMjA0LCAyMzEsIDIwMCwgCisgICAgMiwgMjIzLCAxNTcsIDI0NCwgNzMsIDIwNCwgMjMxLCAyMDAsIDIsIDIzMiwgMTA3LCAyNDQsIDczLCAyMjQsIDIzNiwgMjI0LCAKKyAgICAyMzcsIDI0MCwgMjQ4LCAyMjksIDg0LCAyMzAsIDE1OSwgMjI1LCAxMTcsIDIzMCwgMTU5LCAyMjUsIDExOCwgMiwgOTcsIAorICAgIDgwLCAyNTMsIDIwNywgMjMzLCA0NiwgMjEzLCAxNzUsIDIzMCwgMTU4LCAyMzAsIDE1OSwgMjI1LCAxMTgsIDIyNiwgMjMwLCAKKyAgICAyMjgsIDc1LCAyMzAsIDE1OSwgMjI1LCAxMTYsIDI1NCwgOTAsIDIsIDI1MiwgMTI5LCAyNTEsIDEwLCAyMTMsIDE3MiwgCisgICAgMjUxLCAxMCwgMjE2LCAyNTQsIDIyMywgMTczLCAyMTMsIDE3MSwgMjE1LCA2MCwgOTcsIDI1MywgMjQ3LCAyNTAsIDIsIDk3LCAKKyAgICAyMiwgMTQwLCAyMDQsIDI1MCwgMzYsIDI1MywgMjQ3LCAyNTAsIDIsIDk3LCAyMiwgMTQwLCAyMDQsIDI1MCwgMzYsIDI1MywgCisgICAgMjQ4LCAyLCAzNywgMTIzLCAyMjYsIDEyMCwgMjUwLCAyLCAyNDYsIDEwNCwgMjIsIDIxNCwgMTUzLCAyMDQsIDI1MCwgMzYsIAorICAgIDI1MywgMjQ3LCAyNTQsIDg4LCAyNDYsIDEwNCwgMjIsIDIxNCwgMTUzLCAyMDQsIDI1MCwgMzYsIDI1MywgMjQ3LCAxMjEsIAorICAgIDI1MSwgMTM4LCA4NywgMTI1LCAyNTEsIDEzOCwgODcsIDIxOSwgNywgMiwgMjUxLCA0LCA5MSwgMjE5LCA2LCAyMTksIDcsIAorICAgIDIsIDEyMywgMjE5LCAzMSwgMjEyLCAzNSwgMjE5LCA3LCAyLCAxMzQsIDIxOSwgMzEsIDIxMiwgMzQsIDI1MiwgMTE1LCAKKyAgICAyNDUsIDE3MiwgMjI1LCAyNywgMjMzLCA0MiwgMjMxLCAyMTEsIDI0MiwgMTg0LCAyMjIsIDI0NywgMjMxLCAyMTEsIDI0MiwgCisgICAgMTg0LCAyMzIsIDE1MiwgMiwgMjM1LCAyMjUsIDIyNSwgMTk5LCAyNTAsIDAsIDIzMiwgMTUyLCAyLCAyMzQsIDEzOCwgMjM0LCAKKyAgICAxMzgsIDIzMiwgMTUxLCAyMDQsIDIzMiwgMTUxLCAyNTIsIDQ0LCAyNTIsIDQ1LCAyLCAyNTEsIDQsIDkxLCAyNTEsIDE5MCwgCisgICAgMjMyLCAyMDQsIDg3LCAyMjMsIDE3NCwgMjUxLCA4NiwgMjUyLCAxODUsIDIsIDE0MCwgODAsIDQ4LCAyNDUsIDE0MywgMiwgCisgICAgMTQwLCA4MCwgNDgsIDIyNiwgMTk3LCAyLCAyNDUsIDMxLCAxNjQsIDIsIDQzLCA0NCwgODAsIDQ4LCAyMTksIDM5LCAyLCAKKyAgICA5NywgODAsIDQ4LCAyMTYsIDE0LCAyLCAyMTQsIDE1MywgODAsIDQ4LCAyMjgsIDc1LCAxMjMsIDIxNCwgMTg0LCAyNDUsIAorICAgIDE5MSwgODcsIDIzNCwgMTM2LCAyMTYsIDI0NywgMjM1LCAyMTksIDE2LCAzMSwgNywgNiwgMjMzLCA5LCAyMzUsIDIxOSwgCisgICAgMTYsIDMxLCA3LCA0LCAyMzMsIDksIDIzNSwgMjE5LCAxNiwgMzEsIDIyNywgMTk5LCAyMzUsIDIxOSwgMTYsIDMxLCAyMTcsIAorICAgIDE4MywgMjM1LCAyMTksIDE2LCAzMSwgNywgMjMzLCA5LCAyNDQsIDk2LCAyNDUsIDE3MiwgMjE2LCA5LCAyMTEsIDE5OSwgCisgICAgMjQyLCAyMSwgMjI3LCAxODIsIDIyLCAyNTEsIDE5NywgMjQxLCA2NiwgMjI1LCA1MCwgMjMwLCAyMjYsIDIxNiwgMjU1LCAKKyAgICAyNDksIDExNCwgMjUyLCAxNTksIDIxOSwgMTI1LCAyMjUsIDksIDIxOCwgMTU3LCAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIAorICAgIDIzNSwgMTMxLCAxNiwgMzEsIDI1MiwgNTcsIDIxNSwgMjIwLCAyNDUsIDE1NiwgODUsIDQyLCAyNTEsIDg2LCA3MSwgNDIsIAorICAgIDI1MSwgODYsIDIzMywgODUsIDIyMywgMTExLCAyNTAsIDM1LCAyMzMsIDg1LCAyNTEsIDIwOCwgMjUwLCAzNSwgMjMzLCA4NSwgCisgICAgMjI2LCAxNTcsIDI0NywgMjQ4LCAyMzMsIDg1LCAyNTEsIDIwOCwgMjQ3LCAyNDgsIDQsIDIyNiwgMTU3LCAyNDcsIDI0OCwgCisgICAgNCwgMjUxLCAyMDgsIDI0NywgMjQ4LCAyMTQsIDE2MiwgMjIzLCAxMTEsIDIxNSwgMjI1LCAyNDYsIDEwNSwgMjIzLCAxMTEsIAorICAgIDIxNSwgMjI1LCAyMTQsIDE2MiwgNCwgMjIzLCAxMTEsIDIxNSwgMjI1LCAyNDYsIDEwNSwgNCwgMjIzLCAxMTEsIDIxNSwgCisgICAgMjI1LCAzNywgMjQ5LCAxMzEsIDIyNCwgMjUyLCAyNDksIDEzMSwgMjI0LCAyNTMsIDIsIDI0MiwgMjYsIDUxLCAyNDksIAorICAgIDEzMSwgMjI0LCAyNTIsIDIyOCwgNDksIDQzLCAyMjAsIDE1MywgMiwgMTM0LCAyNDcsIDExOCwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMTIzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMTEzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMTM0LCAKKyAgICAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCAxMSwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgODEsIAorICAgIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTksIDEyNSwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIyMCwgCisgICAgMTIyLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ1LCAxOTMsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAKKyAgICAyMjgsIDIwMCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNiwgMjQ4LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIAorICAgIDE5MSwgMjQ1LCAxNjgsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDc3LCAyMjYsIDI0MiwgMjUwLCA0LCAKKyAgICAyNDQsIDE5MSwgMjI2LCAxOTIsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNSwgNTYsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNiwgCisgICAgMTQwLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDcsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgNzksIDI1MCwgNCwgMjQ0LCAKKyAgICAxOTEsIDIxOSwgMTIxLCAyNTAsIDQsIDI0NCwgMTkxLCAyMjAsIDEyMSwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ1LCAxOTIsIAorICAgIDI1MCwgNCwgMjQ0LCAxOTEsIDIyOCwgMTk5LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIDI0NiwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMjQ1LCAxNjYsIDI1MCwgNCwgMjQ0LCAxOTEsIDIxNSwgNzUsIDIzMCwgMTE3LCAyNDMsIDIzMCwgMjE2LCAzNiwgMjE2LCAyLCAKKyAgICAyMTgsIDE0OCwgNjQsIDIzMiwgMjM5LCAyMTksIDE3MCwgNjQsIDIzNSwgMTMyLCAyMzAsIDEwNiwgMjQyLCAxMjQsIDI0NCwgCisgICAgMTkwLCAyNDIsIDEyNCwgMjQ0LCAxOTEsIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDI0NCwgMTkxLCAyLCAyMTcsIDE0LCA2NCwgCisgICAgMjM1LCA1MywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIAorICAgIDIzMCwgMTExLCAyMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTEsIDIyLCAKKyAgICAyNDksIDIzMCwgMjE3LCAyNDcsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTExLCAyMiwgMjE2LCAxMDQsIAorICAgIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyNDIsIDI1LCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQwLCAyNDcsIAorICAgIDIxMSwgMjMzLCAyNDQsIDE5MCwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDI0NCwgMTkxLCAKKyAgICAyMjEsIDIxNywgMjQ4LCA2MiwgMjQ0LCAzMywgMjIzLCA4OCwgMjQ0LCAxOTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyNDEsIAorICAgIDIyNiwgMjQ1LCAxMywgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDIxOCwgMzQsIDIxOSwgNzMsIDI0NCwgMTkwLCAyMjksIDg3LCAKKyAgICAyNDQsIDE5MCwgMjQ1LCAyMywgMjQ0LCAxOTAsIDIxNCwgMTg4LCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIsIDI0OSwgMjMwLCAKKyAgICAyMTcsIDI0NywgMjI1LCAxOTIsIDI0NCwgMTkwLCAyNDksIDIwMSwgMjQ0LCAxOTAsIDI0OSwgMjAyLCAyNDQsIDE5MCwgCisgICAgMjM0LCA2MiwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyMTYsIDEzNywgMTE1LCAyMzQsIDYzLCAyMzQsIDYyLCAyNDQsIDE5MSwgCisgICAgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjM0LCA2MiwgMjQ0LCAxOTEsIDIsIDI1MCwgMCwgMjQ1LCAxMywgMjQ0LCAxOTEsIDIsIAorICAgIDIxOCwgODgsIDIxNiwgMTksIDI0NCwgMTkxLCAyLCAyMTgsIDg4LCAyMTYsIDIwLCAyMiwgMjExLCAyMzMsIDI0NSwgMTUsIAorICAgIDI0NCwgMTkxLCAyLCAyMTgsIDg4LCAyMTYsIDIwLCAyMiwgMjE2LCAxMDQsIDI0NSwgMTMsIDI0NywgMTkyLCAyNDQsIDE5MCwgCisgICAgMjExLCAyMDQsIDI0NCwgMTkwLCAyNTQsIDEwOCwgMjQ0LCAxOTAsIDIyNCwgMjI3LCAyNDQsIDE5MCwgMjQ5LCAxMTYsIAorICAgIDI0NCwgMTkwLCAyMjUsIDE3MCwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyMzIsIDEyNiwgNjQsIDIxNSwgMjA0LCAyNDcsIAorICAgIDE5MiwgMjUxLCA4OCwgMjIzLCA4OCwgMjQ0LCAxOTAsIDI0MywgMjM5LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMCwgCisgICAgMjU0LCAxMDYsIDI0NCwgMTkwLCAyNDQsIDE1MiwgMjQ0LCAxOTAsIDIxMiwgMjAsIDI0NCwgMTkwLCAyMTksIDkxLCAyNDQsIAorICAgIDE5MCwgMjE2LCA3MSwgMjQ0LCAxOTAsIDI0MiwgMTI1LCAyNDQsIDE5MCwgMjMyLCAxMTQsIDI0OSwgMTE2LCAyNDQsIDE5MCwgCisgICAgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIDI0MCwgMjAzLCAyNDQsIDE5MCwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAKKyAgICAxMTEsIDIyLCAyNDksIDIzMCwgMjE3LCAyNDcsIDI0NCwgMTkxLCAyMjEsIDE5MCwgMjM2LCAwLCAyNDQsIDE1MywgMjUzLCAKKyAgICAyMTMsIDI0NCwgMTkwLCAyNDQsIDQ5LCAyNDQsIDE5MCwgMjE5LCA5MiwgMjQ0LCAxOTAsIDI0NywgMTY1LCAyNDQsIDE5MCwgCisgICAgMjQ0LCAxOTEsIDIxMSwgMjMwLCAyMzAsIDExMCwgMjQ0LCAxOTEsIDIsIDIzMSwgODQsIDIzMSwgMTQ0LCAyNDIsIDEyNCwgCisgICAgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxNywgMTQsIAorICAgIDY0LCAyMzUsIDUzLCAyMTksIDc0LCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIDIxOSwgNzQsIDI1MCwgCisgICAgMjI1LCAyNDQsIDE5MSwgMiwgMjQxLCAyMjYsIDI0NSwgMTMsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjExLCAxOTYsIAorICAgIDIxOSwgNzUsIDIzNCwgNjIsIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjUwLCAwLCAyNDUsIDEzLCAyMjQsIDIyNywgMjUwLCAKKyAgICAyMjUsIDI0NCwgMTkwLCAyNDksIDExNiwgMjUwLCAyMjUsIDI0NCwgMTkwLCAyMTIsIDIwLCAyNTAsIDIyNSwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyLCAyMjgsIDc1LCAyNDIsIDE2MywgMjQzLCAzNCwgMjQ0LCAxOTEsIDIsIDIyNiwgMjE1LCAyNDMsIDM0LCAKKyAgICAyMjUsIDE2OCwgMjUxLCAxNjgsIDI0OCwgNzUsIDIyMSwgMTY5LCAyMzAsIDE0NSwgMjQxLCAyMjksIDIzMCwgMTQ1LCAyMTksIAorICAgIDgsIDIzMCwgMTQ1LCAyNDIsIDUsIDIyNSwgMTY4LCAyMjMsIDE1NiwgMTIzLCAyNDIsIDE1LCAyMjUsIDE2OCwgMjIzLCAKKyAgICAxNTYsIDI1MSwgMTc4LCAyNDIsIDExLCAyMzYsIDAsIDI1MCwgMTc5LCAyMjUsIDE2OCwgMjQzLCAyMzgsIDIyNSwgMTY4LCAKKyAgICAyLCAyMjQsIDIyNywgMjQ0LCAxOTAsIDIyNSwgMTY4LCAyLCAyNDQsIDQxLCAyNDIsIDEwLCAyMjIsIDIwMywgMjQxLCAyMTQsIAorICAgIDIxOCwgMTQzLCAyMzIsIDE0OSwgMjIzLCAxNjIsIDI1MCwgMjQ0LCAyNDEsIDE2MiwgMjE1LCAyNDgsIDI0MSwgMTYyLCAKKyAgICAyMTUsIDI0OSwgMiwgMjUxLCAxMTQsIDIyOCwgNTMsIDIxNSwgMjQ4LCAyMzEsIDMyLCAxOTIsIDIyMywgMTYzLCAyMTgsIAorICAgIDE0OSwgMjE1LCAyNDYsIDIxNSwgMjQ3LCAyNTAsIDI0NCwgMjUxLCA5MiwgMjI2LCAxOTQsIDI1MSwgOTIsIDIxNSwgMjAxLCAKKyAgICAyNTEsIDkzLCAyMTgsIDEyOSwgMjMwLCAxODcsIDI1NCwgMTMwLCAyNDQsIDk3LCAyNDUsIDEzNywgMjI0LCAyNTUsIDI1MCwgCisgICAgMjQ0LCAyMjYsIDE5NCwgMjI0LCAyNTUsIDI1MCwgMjQ0LCAyMTcsIDMyLCAyMjYsIDE5NCwgMjE3LCAzMiwgMjUzLCAxODAsIAorICAgIDIyNiwgMTk0LCAyNTMsIDE4MCwgMjIzLCAxMTgsIDIxMywgMjQ3LCAyNDgsIDU4LCAyMTUsIDE5MiwgMjUzLCAyNDIsIDIzMiwgCisgICAgMTE3LCAyMTUsIDI1NCwgMjMwLCAxMzksIDIzMCwgMTE2LCAyMjMsIDE2MSwgMjE4LCA2LCAyMjMsIDE2MSwgMjMwLCAxMTYsIAorICAgIDI1MSwgMjgsIDI1NCwgMjI5LCAyMTUsIDI0NSwgMjIwLCAxNiwgMjIyLCAxODIsIDIxOSwgMSwgMjAzLCAyMTUsIDI1MiwgCisgICAgMjMyLCAyMzAsIDY3LCAyMTUsIDI1MiwgMjMyLCAyMzAsIDI0OSwgMTkwLCA1MCwgMjI0LCAyNTUsIDI1MCwgMjI5LCAyMjMsIAorICAgIDQ0LCAyMzIsIDIzMCwgMjE1LCAyMjIsIDI0NCwgNzQsIDIyNiwgMTk3LCAyMjQsIDIzOCwgMjQ3LCAxMjMsIDIyOCwgNzUsIAorICAgIDI0NSwgMTI1LCA1MCwgMjE5LCA3MiwgODcsIDIyOCwgNzUsIDIxOSwgNzIsIDg3LCAyMjQsIDEyMiwgMjMyLCAxOTMsIDIzNiwgCisgICAgMCwgMjM1LCAxNTcsIDIyNSwgNDEsIDg3LCAyNDcsIDE0NiwgMjI4LCA1MiwgMjMyLCAxOTMsIDg3LCAyMjQsIDIzMiwgMjEyLCAKKyAgICA0MSwgODcsIDIyOCwgNjYsIDIxMiwgNDEsIDg3LCAyNTIsIDIsIDIyOCwgNzUsIDI1MiwgMSwgMjUyLCAwLCAyMzAsIDExNiwgCisgICAgMjUyLCAwLCAyMjUsIDIxMywgMjI4LCA3NSwgMjI1LCAyMTIsIDI1MCwgMTAwLCAyNDksIDEyNCwgMjMxLCA1NiwgODcsIAorICAgIDIxMSwgMjE4LCA4NywgMjIzLCA1OSwgMjUyLCAxODcsIDg3LCAyMTYsIDM3LCAyMTIsIDQxLCAyNDksIDI1MywgMjE5LCAKKyAgICAyMzQsIDI1MiwgMTE4LCAyNTIsIDExNiwgMjI1LCAyNDIsIDI0OSwgMTc3LCAyNDksIDg2LCAyNTIsIDE2OSwgMjUwLCAyMiwgCisgICAgNDMsIDIzMiwgOTAsIDEwOCwgMTYsIDMxLCAyMjQsIDMsIDEwOCwgMTYsIDMxLCAyNTQsIDE5MiwgMTA4LCAxNiwgMzEsIAorICAgIDI0NCwgOTYsIDEwOCwgMTYsIDMxLCAyNDUsIDIyMywgMTA4LCAxNiwgMzEsIDIxMiwgNDAsIDEwOCwgMTYsIDMxLCAyNTQsIAorICAgIDQzLCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjIzLCAxMDUsIDEwOCwgMTYsIDMxLCAyNTQsIDQ0LCAyMjMsIDEwNCwgMTA4LCAKKyAgICAxNiwgMzEsIDI1NCwgNDQsIDIxMywgMTQzLCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjEzLCAxNDIsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTMsIDE1NywgMTA4LCAxNiwgMzEsIDIxMywgMTU2LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTUsIDEwOCwgMTYsIDMxLCAyMTgsIAorICAgIDQ0LCAxMDgsIDE2LCAzMSwgMjI1LCAxMjUsIDIxOCwgNDQsIDEwOCwgMTYsIDMxLCA4NSwgMjE4LCA0NCwgMTA4LCAxNiwgCisgICAgMzEsIDIzMSwgNTUsIDIxOCwgNzEsIDEwOCwgMTYsIDMxLCAyMzEsIDU1LCAyMTgsIDcwLCAxMDgsIDE2LCAzMSwgMjMxLCAKKyAgICA1NSwgMjE4LCA2OSwgMTA4LCAxNiwgMzEsIDI1MCwgMzgsIDEwOCwgMTYsIDMxLCAyMjIsIDEsIDEwOCwgMTYsIDMxLCAyMjgsIAorICAgIDE4OCwgMTA4LCAxNiwgMzEsIDIxMywgMTQxLCAxMDgsIDE2LCAzMSwgMjEzLCAxNDAsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNCwgCisgICAgMjIyLCAxLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDQsIDIyMiwgMCwgMTA4LCAxNiwgMzEsIDI0MiwgMTY2LCAxMDgsIDE2LCAKKyAgICAzMSwgMjE5LCAxNjYsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NywgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NywgCisgICAgMjI2LCAxNTIsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDIzNSwgMTc2LCAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAKKyAgICAyMzUsIDE3NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTY4LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIzNSwgMTc1LCAyMjYsIAorICAgIDE1MywgMTA4LCAxNiwgMzEsIDIxOCwgNzIsIDY0LCAyNDksIDE2NywgMTA4LCAxNiwgMzEsIDI0OSwgMTM0LCA2NCwgMjQ5LCAKKyAgICAxNjcsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDI0OSwgMTY2LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNjgsIDI1NCwgODMsIAorICAgIDEwOCwgMTYsIDMxLCAyMjIsIDIsIDY0LCAyNDksIDE2OCwgMjU0LCA4MywgMTA4LCAxNiwgMzEsIDIxOCwgNzIsIDY0LCAKKyAgICAyMjIsIDIsIDY0LCAyNDksIDE2NywgMTA4LCAxNiwgMzEsIDIxMywgMjQzLCAxMDgsIDE2LCAzMSwgMjE2LCA4NCwgMjI2LCAKKyAgICAxNTMsIDEwOCwgMTYsIDMxLCAyMzMsIDU3LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDI1NCwgODIsIDIyNiwgMTUzLCAxMDgsIAorICAgIDE2LCAzMSwgMjE4LCA3MiwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIDMxLCAyMjIsIDIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAKKyAgICAzMSwgMjE4LCA3MiwgNjQsIDIyMiwgMiwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIDMxLCAyMTMsIDE1OCwgNjQsIDI1NCwgODEsIAorICAgIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgNjQsIDI1NCwgODEsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgNjQsIDI1NCwgODAsIAorICAgIDEwOCwgMTYsIDMxLCAyMjMsIDEwMCwgMTA4LCAxNiwgMzEsIDIyMywgOTksIDEwOCwgMTYsIDMxLCAyMjMsIDk4LCAxMDgsIAorICAgIDE2LCAzMSwgMjIzLCA5NywgMTA4LCAxNiwgMzEsIDI1NCwgMTU3LCAxMDgsIDE2LCAzMSwgMjU0LCAxNTYsIDEwOCwgMTYsIAorICAgIDMxLCAyMzEsIDE2MywgMTA4LCAxNiwgMzEsIDIyMiwgNywgMTA4LCAxNiwgMzEsIDI1MywgMjQ2LCAxMDgsIDE2LCAzMSwgCisgICAgMjIzLCAxMjUsIDEwOCwgMTYsIDMxLCAyMjMsIDEyNCwgMTA4LCAxNiwgMzEsIDI1MywgMTgzLCAxMDgsIDE2LCAzMSwgMjUxLCAKKyAgICAyMjksIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjE3LCA0OSwgMTA4LCAxNiwgMzEsIDIxNywgNDgsIDEwOCwgMTYsIDMxLCAKKyAgICAyMjQsIDgsIDIzMiwgMjIyLCAxMDgsIDE2LCAzMSwgMjUxLCAxODMsIDEwOCwgMTYsIDMxLCAyNTEsIDE4MiwgMTA4LCAxNiwgCisgICAgMzEsIDI1MSwgMTgxLCAxMDgsIDE2LCAzMSwgMjU0LCAxMzgsIDEwOCwgMTYsIDMxLCAyMjYsIDIxOCwgMTA4LCAxNiwgMzEsIAorICAgIDIxOCwgMjQ4LCAxMDgsIDE2LCAzMSwgMjE2LCA4MiwgMTA4LCAxNiwgMzEsIDI0MiwgOTYsIDEwOCwgMTYsIDMxLCAyMTIsIAorICAgIDI4LCAxMDgsIDE2LCAzMSwgMjI0LCAyMjYsIDEwOCwgMTYsIDMxLCAyNTEsIDE0LCAxMDgsIDE2LCAzMSwgMjE1LCA4NiwgCisgICAgMTA4LCAxNiwgMzEsIDI1MCwgMjQ2LCAyMzAsIDEyMiwgMTA4LCAxNiwgMzEsIDIyMSwgMjAyLCA2NCwgMjM1LCA1NSwgMTA4LCAKKyAgICAxNiwgMzEsIDI1MSwgMjUsIDEwOCwgMTYsIDMxLCAyMTUsIDIxOSwgMTA4LCAxNiwgMzEsIDIxOCwgMTU0LCAyMTUsIDIxOSwgCisgICAgMTA4LCAxNiwgMzEsIDIzMiwgMTQ4LCAxMDgsIDE2LCAzMSwgMjE5LCA1NiwgMTA4LCAxNiwgMzEsIDIxNCwgMTQyLCAxMDgsIAorICAgIDE2LCAzMSwgMjQwLCAyNDYsIDI0NiwgNjQsIDEwOCwgMTYsIDMxLCAyNTMsIDIyNywgMTA4LCAxNiwgMzEsIDIyNCwgMjM0LCAKKyAgICAyNTMsIDIyNywgMTA4LCAxNiwgMzEsIDI1MSwgMTQyLCAxMDgsIDE2LCAzMSwgMjI0LCAyMjUsIDI1MSwgMTQyLCAxMDgsIAorICAgIDE2LCAzMSwgMjU0LCAxMzUsIDEwOCwgMTYsIDMxLCAyMTgsIDExNywgMjE4LCAyNiwgMjE4LCAxMTYsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTgsIDExNywgMjE4LCAyNiwgMjE4LCAxMTUsIDEwOCwgMTYsIDMxLCAyMTgsIDY4LCAxMDgsIDE2LCAzMSwgMjI0LCAyMDAsIAorICAgIDEwOCwgMTYsIDMxLCAyNDcsIDE4MSwgMTA4LCAxNiwgMzEsIDI0NywgMTgzLCAxMDgsIDE2LCAzMSwgMjQ3LCAxODIsIDEwOCwgCisgICAgMTYsIDMxLCAyMjQsIDEzMSwgMTA4LCAxNiwgMzEsIDIyNCwgMTIwLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMjIsIDEwOCwgMTYsIAorICAgIDMxLCAyNDksIDEyMSwgMTA4LCAxNiwgMzEsIDI0OSwgMTIwLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMTksIDEwOCwgMTYsIDMxLCAKKyAgICAyNDksIDExOCwgMTA4LCAxNiwgMzEsIDI1NCwgMTY5LCAxMDgsIDE2LCAzMSwgMjUyLCAxMTksIDY0LCAyMzEsIDE0OSwgCisgICAgMTA4LCAxNiwgMzEsIDI1MiwgMTE5LCA2NCwgMjE0LCAxNywgMTA4LCAxNiwgMzEsIDIyMywgNTcsIDEwOCwgMTYsIDMxLCAKKyAgICAyNDAsIDIzOCwgMTA4LCAxNiwgMzEsIDIyOCwgMjEyLCAxMDgsIDE2LCAzMSwgMjQ4LCAxNDUsIDEwOCwgMTYsIDMxLCAyMzAsIAorICAgIDEzNCwgMTA4LCAxNiwgMzEsIDE2MywgMjQ2LCA5NCwgMTA4LCAxNiwgMzEsIDE2MywgMjI2LCAxMzIsIDksIDE0LCAyNDAsIAorICAgIDEwMiwgOSwgMTQsIDI0MCwgMTAxLCA5LCAxNCwgMjQwLCAxMDAsIDksIDE0LCAyNDAsIDk5LCA5LCAxNCwgMjQwLCA5OCwgOSwgCisgICAgMTQsIDI0MCwgOTcsIDksIDE0LCAyNDAsIDk2LCA5LCAxNCwgMjQwLCA5NSwgOSwgMTQsIDI0MCwgOTQsIDksIDE0LCAyNDAsIAorICAgIDkzLCA5LCAxNCwgMjQwLCA5MiwgOSwgMTQsIDI0MCwgOTEsIDksIDE0LCAyNDAsIDkwLCA5LCAxNCwgMjQwLCA4OSwgOSwgCisgICAgMTQsIDI0MCwgODgsIDksIDE0LCAyNDAsIDg3LCA5LCAxNCwgMjQwLCA4NiwgOSwgMTQsIDI0MCwgODUsIDksIDE0LCAyNDAsIAorICAgIDg0LCA5LCAxNCwgMjQwLCA4MywgOSwgMTQsIDI0MCwgODIsIDksIDE0LCAyNDAsIDgxLCA5LCAxNCwgMjQwLCA4MCwgOSwgCisgICAgMTQsIDI0MCwgNzksIDksIDE0LCAyNDAsIDc4LCA5LCAxNCwgMjQwLCA3NywgOSwgMTQsIDI0MCwgNzYsIDksIDE0LCAyNDAsIAorICAgIDc1LCA5LCAxNCwgMjQwLCA3NCwgOSwgMTQsIDI0MCwgNzMsIDksIDE0LCAyNDAsIDcyLCA5LCAxNCwgMjQwLCA3MSwgOSwgCisgICAgMTQsIDI0MCwgNzAsIDksIDE0LCAyNDAsIDY5LCA5LCAxNCwgMjQwLCA2OCwgOSwgMTQsIDI0MCwgNjcsIDksIDE0LCAyNDAsIAorICAgIDY2LCA5LCAxNCwgMjQwLCA2NSwgOSwgMTQsIDI0MCwgNjQsIDksIDE0LCAyNDAsIDYzLCA5LCAxNCwgMjQwLCA2MiwgOSwgCisgICAgMTQsIDI0MCwgNjEsIDksIDE0LCAyNDAsIDYwLCA5LCAxNCwgMjQwLCA1OSwgOSwgMTQsIDI0MCwgNTgsIDksIDE0LCAyNDAsIAorICAgIDU3LCA5LCAxNCwgMjQwLCA1NiwgOSwgMTQsIDI0MCwgNTUsIDksIDE0LCAyNDAsIDU0LCA5LCAxNCwgMjQwLCA1MywgOSwgCisgICAgMTQsIDI0MCwgNTIsIDksIDE0LCAyNDAsIDUxLCA5LCAxNCwgMjQwLCA1MCwgOSwgMTQsIDI0MCwgNDksIDksIDE0LCAyNDAsIAorICAgIDQ4LCA5LCAxNCwgMjQwLCA0NywgOSwgMTQsIDI0MCwgNDYsIDksIDE0LCAyNDAsIDQ1LCA5LCAxNCwgMjQwLCA0NCwgOSwgCisgICAgMTQsIDI0MCwgNDMsIDksIDE0LCAyNDAsIDQyLCA5LCAxNCwgMjQwLCA0MSwgOSwgMTQsIDI0MCwgNDAsIDksIDE0LCAyNDAsIAorICAgIDM5LCA5LCAxNCwgMjQwLCAzOCwgOSwgMTQsIDI0MCwgMzcsIDksIDE0LCAyNDAsIDM2LCA5LCAxNCwgMjQwLCAzNSwgOSwgCisgICAgMTQsIDI0MCwgMzQsIDksIDE0LCAyNDAsIDMzLCA5LCAxNCwgMjQwLCAzMiwgOSwgMTQsIDI0MCwgMzEsIDksIDE0LCAyNDAsIAorICAgIDMwLCA5LCAxNCwgMjQwLCAyOSwgOSwgMTQsIDI0MCwgMjgsIDksIDE0LCAyNDAsIDI3LCA5LCAxNCwgMjQwLCAyNiwgOSwgCisgICAgMTQsIDI0MCwgMjUsIDksIDE0LCAyNDAsIDI0LCA5LCAxNCwgMjQwLCAyMywgOSwgMTQsIDI0MCwgMjIsIDksIDE0LCAyNDAsIAorICAgIDIxLCA5LCAxNCwgMjQwLCAyMCwgOSwgMTQsIDI0MCwgMTksIDksIDE0LCAyNDAsIDE4LCA5LCAxNCwgMjQwLCAxNywgOSwgCisgICAgMTQsIDI0MCwgMTYsIDksIDE0LCAyNDAsIDE1LCA5LCAxNCwgMjQwLCAxNCwgOSwgMTQsIDI0MCwgMTMsIDksIDE0LCAyNDAsIAorICAgIDEyLCA5LCAxNCwgMjQwLCAxMSwgOSwgMTQsIDI0MCwgMTAsIDksIDE0LCAyNDAsIDksIDksIDE0LCAyNDAsIDgsIDksIDE0LCAKKyAgICAyNDAsIDcsIDksIDE0LCAyNDAsIDYsIDksIDE0LCAyNDAsIDUsIDksIDE0LCAyNDAsIDQsIDksIDE0LCAyNDAsIDMsIDksIAorICAgIDE0LCAyNDAsIDIsIDksIDE0LCAyNDAsIDEsIDksIDE0LCAyNDAsIDAsIDksIDE0LCAyMzksIDI1NSwgOSwgMTQsIDIzOSwgCisgICAgMjU0LCA5LCAxNCwgMjM5LCAyNTMsIDksIDE0LCAyMzksIDI1MiwgOSwgMTQsIDIzOSwgMjUxLCA5LCAxNCwgMjM5LCAyNTAsIAorICAgIDksIDE0LCAyMzksIDI0OSwgOSwgMTQsIDIzOSwgMjQ4LCA5LCAxNCwgMjM5LCAyNDcsIDksIDE0LCAyMzksIDI0NiwgOSwgCisgICAgMTQsIDIzOSwgMjQ1LCA5LCAxNCwgMjM5LCAyNDQsIDksIDE0LCAyMzksIDI0MywgOSwgMTQsIDIzOSwgMjQyLCA5LCAxNCwgCisgICAgMjM5LCAyNDEsIDksIDE0LCAyMzksIDI0MCwgOSwgMTQsIDIzOSwgMjM5LCA5LCAxNCwgMjM5LCAyMzgsIDksIDE0LCAyMzksIAorICAgIDIzNywgOSwgMTQsIDIzOSwgMjM2LCA5LCAxNCwgMjM5LCAyMzUsIDksIDE0LCAyMzksIDIzNCwgOSwgMTQsIDIzOSwgMjMzLCAKKyAgICA5LCAxNCwgMjM5LCAyMzIsIDksIDE0LCAyMzksIDIzMSwgOSwgMTQsIDIzOSwgMjMwLCA5LCAxNCwgMjM5LCAyMjksIDksIAorICAgIDE0LCAyMzksIDIyOCwgOSwgMTQsIDIzOSwgMjI3LCA5LCAxNCwgMjM5LCAyMjYsIDksIDE0LCAyMzksIDIyNSwgOSwgMTQsIAorICAgIDIzOSwgMjI0LCA5LCAxNCwgMjM5LCAyMjMsIDksIDE0LCAyMzksIDIyMiwgOSwgMTQsIDIzOSwgMjIxLCA5LCAxNCwgMjM5LCAKKyAgICAyMjAsIDksIDE0LCAyMzksIDIxOSwgOSwgMTQsIDIzOSwgMjE4LCA5LCAxNCwgMjM5LCAyMTcsIDksIDE0LCAyMzksIDIxNiwgCisgICAgOSwgMTQsIDIzOSwgMjE1LCA5LCAxNCwgMjM5LCAyMTQsIDksIDE0LCAyMzksIDIxMywgOSwgMTQsIDIzOSwgMjEyLCA5LCAKKyAgICAxNCwgMjM5LCAyMTEsIDksIDE0LCAyMzksIDIxMCwgOSwgMTQsIDIzOSwgMjA5LCA5LCAxNCwgMjM5LCAyMDgsIDksIDE0LCAKKyAgICAyMzksIDIwNywgOSwgMTQsIDIzOSwgMjA2LCA5LCAxNCwgMjM5LCAyMDUsIDksIDE0LCAyMzksIDIwNCwgOSwgMTQsIDIzOSwgCisgICAgMjAzLCA5LCAxNCwgMjM5LCAyMDIsIDksIDE0LCAyMzksIDIwMSwgOSwgMTQsIDIzOSwgMjAwLCA5LCAxNCwgMjM5LCAxOTksIAorICAgIDksIDE0LCAyMzksIDE5OCwgOSwgMTQsIDIzOSwgMTk3LCA5LCAxNCwgMjM5LCAxOTYsIDksIDE0LCAyMzksIDE5NSwgOSwgCisgICAgMTQsIDIzOSwgMTk0LCA5LCAxNCwgMjM5LCAxOTMsIDksIDE0LCAyMzksIDE5MiwgOSwgMTQsIDIzOSwgMTkxLCA5LCAxNCwgCisgICAgMjM5LCAxOTAsIDksIDE0LCAyMzksIDE4OSwgOSwgMTQsIDIzOSwgMTg4LCA5LCAxNCwgMjM5LCAxODcsIDksIDE0LCAyMzksIAorICAgIDE4NiwgOSwgMTQsIDIzOSwgMTg1LCA5LCAxNCwgMjM5LCAxODQsIDksIDE0LCAyMzksIDE4MywgOSwgMTQsIDIzOSwgMTgyLCAKKyAgICA5LCAxNCwgMjM5LCAxODEsIDksIDE0LCAyMzksIDE4MCwgOSwgMTQsIDIzOSwgMTc5LCA5LCAxNCwgMjM5LCAxNzgsIDksIAorICAgIDE0LCAyMzksIDE3NywgOSwgMTQsIDIzOSwgMTc2LCA5LCAxNCwgMjM5LCAxNzUsIDksIDE0LCAyMzksIDE3NCwgOSwgMTQsIAorICAgIDIzOSwgMTczLCA5LCAxNCwgMjM5LCAxNzIsIDksIDE0LCAyMzksIDE3MSwgOSwgMTQsIDIzOSwgMTcwLCA5LCAxNCwgMjM5LCAKKyAgICAxNjksIDksIDE0LCAyMzksIDE2OCwgOSwgMTQsIDIzOSwgMTY3LCA5LCAxNCwgMjM5LCAxNjYsIDksIDE0LCAyMzksIDE2NSwgCisgICAgOSwgMTQsIDIzOSwgMTY0LCA5LCAxNCwgMjM5LCAxNjMsIDksIDE0LCAyMzksIDE2MiwgOSwgMTQsIDIzOSwgMTYxLCA5LCAKKyAgICAxNCwgMjM5LCAxNjAsIDksIDE0LCAyMzksIDE1OSwgOSwgMTQsIDIzOSwgMTU4LCA5LCAxNCwgMjM5LCAxNTcsIDksIDE0LCAKKyAgICAyMzksIDE1NiwgOSwgMTQsIDIzOSwgMTU1LCA5LCAxNCwgMjM5LCAxNTQsIDksIDE0LCAyMzksIDE1MywgOSwgMTQsIDIzOSwgCisgICAgMTUyLCA5LCAxNCwgMjM5LCAxNTEsIDksIDE0LCAyMzksIDE1MCwgOSwgMTQsIDIzOSwgMTQ5LCA5LCAxNCwgMjM5LCAxNDgsIAorICAgIDksIDE0LCAyMzksIDE0NywgOSwgMTQsIDIzOSwgMTQ2LCA5LCAxNCwgMjM5LCAxNDUsIDksIDE0LCAyMzksIDE0NCwgOSwgCisgICAgMTQsIDIzOSwgMTQzLCA5LCAxNCwgMjM5LCAxNDIsIDksIDE0LCAyMzksIDE0MSwgOSwgMTQsIDIzOSwgMTQwLCA5LCAxNCwgCisgICAgMjM5LCAxMzksIDksIDE0LCAyMzksIDEzOCwgOSwgMTQsIDIzOSwgMTM3LCA5LCAxNCwgMjM5LCAxMzYsIDksIDE0LCAyMzksIAorICAgIDEzNSwgOSwgMTQsIDIzOSwgMTM0LCA5LCAxNCwgMjM5LCAxMzMsIDksIDE0LCAyMzksIDEzMiwgOSwgMTQsIDIzOSwgMTMxLCAKKyAgICA5LCAxNCwgMjM5LCAxMzAsIDksIDE0LCAyMzksIDEyOSwgOSwgMTQsIDIzOSwgMTI4LCA5LCAxNCwgMjM5LCAxMjcsIDksIAorICAgIDE0LCAyMzksIDEyNiwgOSwgMTQsIDIzOSwgMTI1LCA5LCAxNCwgMjM5LCAxMjQsIDksIDE0LCAyMzksIDEyMywgOSwgMTQsIAorICAgIDIzOSwgMTIyLCA5LCAxNCwgMjM5LCAxMjEsIDksIDE0LCAyMzksIDEyMCwgOSwgMTQsIDIzOSwgMTE5LCA5LCAxNCwgMjM5LCAKKyAgICAxMTgsIDksIDE0LCAyMzksIDExNywgOSwgMTQsIDIzOSwgMTE2LCA5LCAxNCwgMjM5LCAxMTUsIDksIDE0LCAyMzksIDExNCwgCisgICAgOSwgMTQsIDIzOSwgMTEzLCA5LCAxNCwgMjM5LCAxMTIsIDksIDE0LCAyMzksIDExMSwgOSwgMTQsIDIzOSwgMTEwLCA5LCAKKyAgICAxNCwgMjM5LCAxMDksIDksIDE0LCAyMzksIDEwOCwgOSwgMTQsIDIzOSwgMTA3LCA5LCAxNCwgMjM5LCAxMDYsIDksIDE0LCAKKyAgICAyMzksIDEwNSwgOSwgMTQsIDIzOSwgMTA0LCA5LCAxNCwgMjM5LCAxMDMsIDksIDE0LCAyMzksIDEwMiwgOSwgMTQsIDIzOSwgCisgICAgMTAxLCA5LCAxNCwgMjM5LCAxMDAsIDksIDE0LCAyMzksIDk5LCA5LCAxNCwgMjM5LCA5OCwgOSwgMTQsIDIzOSwgOTcsIDksIAorICAgIDE0LCAyMzksIDk2LCA5LCAxNCwgMjM5LCA5NSwgOSwgMTQsIDIzOSwgOTQsIDksIDE0LCAyMzksIDkzLCA5LCAxNCwgMjM5LCAKKyAgICA5MiwgOSwgMTQsIDIzOSwgOTEsIDksIDE0LCAyMzksIDkwLCA5LCAxNCwgMjM5LCA4OSwgOSwgMTQsIDIzOSwgODgsIDksIAorICAgIDE0LCAyMzksIDg3LCA5LCAxNCwgMjM5LCA4NiwgOSwgMTQsIDIzOSwgODUsIDksIDE0LCAyMzksIDg0LCA5LCAxNCwgMjM5LCAKKyAgICA4MywgOSwgMTQsIDIzOSwgODIsIDksIDE0LCAyMzksIDgxLCA5LCAxNCwgMjM5LCA4MCwgOSwgMTQsIDIzOSwgNzksIDksIAorICAgIDE0LCAyMzksIDc4LCA5LCAxNCwgMjM5LCA3NywgOSwgMTQsIDIzOSwgNzYsIDksIDE0LCAyMzksIDc1LCA5LCAxNCwgMjM5LCAKKyAgICA3NCwgOSwgMTQsIDIzOSwgNzMsIDksIDE0LCAyMzksIDcyLCA5LCAxNCwgMjM5LCA3MSwgOSwgMTQsIDIzOSwgNzAsIDksIAorICAgIDE0LCAyMzksIDY5LCA5LCAxNCwgMjM5LCA2OCwgOSwgMTQsIDIzOSwgNjcsIDksIDE0LCAyMzksIDY2LCA5LCAxNCwgMjM5LCAKKyAgICA2NSwgOSwgMTQsIDIzOSwgNjQsIDksIDE0LCAyMzksIDYzLCA5LCAxNCwgMjM5LCA2MiwgOSwgMTQsIDIzOSwgNjEsIDksIAorICAgIDE0LCAyMzksIDYwLCA5LCAxNCwgMjM5LCA1OSwgOSwgMTQsIDIzOSwgNTgsIDksIDE0LCAyMzksIDU3LCA5LCAxNCwgMjM5LCAKKyAgICA1NiwgOSwgMTQsIDIzOSwgNTUsIDksIDE0LCAyMzksIDU0LCA5LCAxNCwgMjM5LCA1MywgOSwgMTQsIDIzOSwgNTIsIDksIAorICAgIDE0LCAyMzksIDUxLCA5LCAxNCwgMjM5LCA1MCwgOSwgMTQsIDIzOSwgNDksIDksIDE0LCAyMzksIDQ4LCA5LCAxNCwgMjM5LCAKKyAgICA0NywgOSwgMTQsIDIzOSwgNDYsIDksIDE0LCAyMzksIDQ1LCA5LCAxNCwgMjM5LCA0NCwgOSwgMTQsIDIzOSwgNDMsIDksIAorICAgIDE0LCAyMzksIDQyLCA5LCAxNCwgMjM5LCA0MSwgOSwgMTQsIDIzOSwgNDAsIDksIDE0LCAyMzksIDM5LCA5LCAxNCwgMjM5LCAKKyAgICAzOCwgOSwgMTQsIDIzOSwgMzcsIDksIDE0LCAyMzksIDM2LCA5LCAxNCwgMjM5LCAzNSwgOSwgMTQsIDIzOSwgMzQsIDksIAorICAgIDE0LCAyMzksIDMzLCA5LCAxNCwgMjM5LCAzMiwgOSwgMTQsIDIzOSwgMzEsIDksIDE0LCAyMzksIDMwLCA5LCAxNCwgMjM5LCAKKyAgICAyOSwgOSwgMTQsIDIzOSwgMjgsIDksIDE0LCAyMzksIDI3LCA5LCAxNCwgMjM5LCAyNiwgOSwgMTQsIDIzOSwgMjUsIDksIAorICAgIDE0LCAyMzksIDI0LCA5LCAxNCwgMjM5LCAyMywgOSwgMTQsIDIzOSwgMjIsIDksIDE0LCAyMzksIDIxLCA5LCAxNCwgMjM5LCAKKyAgICAyMCwgOSwgMTQsIDIzOSwgMTksIDksIDE0LCAyMzksIDE4LCA5LCAxNCwgMjM5LCAxNywgOSwgMTQsIDIzOSwgMTYsIDksIAorICAgIDE0LCAyMzksIDE1LCA5LCAxNCwgMjM5LCAxNCwgOSwgMTQsIDIzOSwgMTMsIDksIDE0LCAyMzksIDEyLCA5LCAxNCwgMjM5LCAKKyAgICAxMSwgOSwgMTQsIDIzOSwgMTAsIDksIDE0LCAyMzksIDksIDksIDE0LCAyMzksIDgsIDksIDE0LCAyMzksIDcsIDksIDE0LCAKKyAgICAyMzksIDYsIDksIDE0LCAyMzksIDUsIDksIDE0LCAyMzksIDQsIDksIDE0LCAyMzksIDMsIDksIDE0LCAyMzksIDIsIDksIAorICAgIDE0LCAyMzksIDEsIDksIDE0LCAyMzksIDAsIDksIDE0LCAyMzgsIDI1NSwgOSwgMTQsIDIzOCwgMjU0LCA5LCAxNCwgMjM4LCAKKyAgICAyNTMsIDksIDE0LCAyMzgsIDI1MiwgOSwgMTQsIDIzOCwgMjUxLCA5LCAxNCwgMjM4LCAyNTAsIDksIDE0LCAyMzgsIDI0OSwgCisgICAgOSwgMTQsIDIzOCwgMjQ4LCA5LCAxNCwgMjM4LCAyNDcsIDksIDE0LCAyMzgsIDI0NiwgOSwgMTQsIDIzOCwgMjQ1LCA5LCAKKyAgICAxNCwgMjM4LCAyNDQsIDksIDE0LCAyMzgsIDI0MywgOSwgMTQsIDIzOCwgMjQyLCA5LCAxNCwgMjM4LCAyNDEsIDksIDE0LCAKKyAgICAyMzgsIDI0MCwgOSwgMTQsIDIzOCwgMjM5LCA5LCAxNCwgMjM4LCAyMzgsIDksIDE0LCAyMzgsIDIzNywgOSwgMTQsIDIzOCwgCisgICAgMjM2LCA5LCAxNCwgMjM4LCAyMzUsIDksIDE0LCAyMzgsIDIzNCwgOSwgMTQsIDIzOCwgMjMzLCA5LCAxNCwgMjM4LCAyMzIsIAorICAgIDksIDE0LCAyMzgsIDIzMSwgOSwgMTQsIDIzOCwgMjMwLCA5LCAxNCwgMjM4LCAyMjksIDksIDE0LCAyMzgsIDIyOCwgOSwgCisgICAgMTQsIDIzOCwgMjI3LCA5LCAxNCwgMjM4LCAyMjYsIDksIDE0LCAyMzgsIDIyNSwgOSwgMTQsIDIzOCwgMjI0LCA5LCAxNCwgCisgICAgMjM4LCAyMjMsIDksIDE0LCAyMzgsIDIyMiwgOSwgMTQsIDIzOCwgMjIxLCA5LCAxNCwgMjM4LCAyMjAsIDksIDE0LCAyMzgsIAorICAgIDIxOSwgOSwgMTQsIDIzOCwgMjE4LCA5LCAxNCwgMjM4LCAyMTcsIDksIDE0LCAyMzgsIDIxNiwgOSwgMTQsIDIzOCwgMjE1LCAKKyAgICA5LCAxNCwgMjM4LCAyMTQsIDksIDE0LCAyMzgsIDIxMywgOSwgMTQsIDIzOCwgMjEyLCA5LCAxNCwgMjM4LCAyMTEsIDksIAorICAgIDE0LCAyMzgsIDIxMCwgOSwgMTQsIDIzOCwgMjA5LCA5LCAxNCwgMjM4LCAyMDgsIDksIDE0LCAyMzgsIDIwNywgOSwgMTQsIAorICAgIDIzOCwgMjA2LCA5LCAxNCwgMjM4LCAyMDUsIDksIDE0LCAyMzgsIDIwNCwgOSwgMTQsIDIzOCwgMjAzLCA5LCAxNCwgMjM4LCAKKyAgICAyMDIsIDksIDE0LCAyMzgsIDIwMSwgOSwgMTQsIDIzOCwgMjAwLCA5LCAxNCwgMjM4LCAxOTksIDksIDE0LCAyMzgsIDE5OCwgCisgICAgOSwgMTQsIDIzOCwgMTk3LCA5LCAxNCwgMjM4LCAxOTYsIDksIDE0LCAyMzgsIDE5NSwgOSwgMTQsIDIzOCwgMTk0LCA5LCAKKyAgICAxNCwgMjM4LCAxOTMsIDksIDE0LCAyMzgsIDE5MiwgOSwgMTQsIDIzOCwgMTkxLCA5LCAxNCwgMjM4LCAxOTAsIDksIDE0LCAKKyAgICAyMzgsIDE4OSwgOSwgMTQsIDIzOCwgMTg4LCA5LCAxNCwgMjM4LCAxODcsIDksIDE0LCAyMzgsIDE4NiwgOSwgMTQsIDIzOCwgCisgICAgMTg1LCA5LCAxNCwgMjM4LCAxODQsIDksIDE0LCAyMzgsIDE4MywgOSwgMTQsIDIzOCwgMTgyLCA5LCAxNCwgMjM4LCAxODEsIAorICAgIDksIDE0LCAyMzgsIDE4MCwgOSwgMTQsIDIzOCwgMTc5LCA5LCAxNCwgMjM4LCAxNzgsIDksIDE0LCAyMzgsIDE3NywgOSwgCisgICAgMTQsIDIzOCwgMTc2LCA5LCAxNCwgMjM4LCAxNzUsIDksIDE0LCAyMzgsIDE3NCwgOSwgMTQsIDIzOCwgMTczLCA5LCAxNCwgCisgICAgMjM4LCAxNzIsIDksIDE0LCAyMzgsIDE3MSwgOSwgMTQsIDIzOCwgMTcwLCA5LCAxNCwgMjM4LCAxNjksIDksIDE0LCAyMzgsIAorICAgIDE2OCwgOSwgMTQsIDIzOCwgMTY3LCA5LCAxNCwgMjM4LCAxNjYsIDksIDE0LCAyMzgsIDE2NSwgOSwgMTQsIDIzOCwgMTY0LCAKKyAgICA5LCAxNCwgMjM4LCAxNjMsIDksIDE0LCAyMzgsIDE2MiwgOSwgMTQsIDIzOCwgMTYxLCA5LCAxNCwgMjM4LCAxNjAsIDksIAorICAgIDE0LCAyMzgsIDE1OSwgOSwgMTQsIDIzOCwgMTU4LCA5LCAxNCwgMjM4LCAxNTcsIDksIDE0LCAyMzgsIDE1NiwgOSwgMTQsIAorICAgIDIzOCwgMTU1LCA5LCAxNCwgMjM4LCAxNTQsIDksIDE0LCAyMzgsIDE1MywgOSwgMTQsIDIzOCwgMTUyLCA5LCAxNCwgMjM4LCAKKyAgICAxNTEsIDksIDE0LCAyMzgsIDE1MCwgOSwgMTQsIDIzOCwgMTQ5LCA5LCAxNCwgMjM4LCAxNDgsIDksIDE0LCAyMzgsIDE0NywgCisgICAgOSwgMTQsIDIzOCwgMTQ2LCA5LCAxNCwgMjM4LCAxNDUsIDksIDE0LCAyMzgsIDE0NCwgOSwgMTQsIDIzOCwgMTQzLCA5LCAKKyAgICAxNCwgMjM4LCAxNDIsIDksIDE0LCAyMzgsIDE0MSwgOSwgMTQsIDIzOCwgMTQwLCA5LCAxNCwgMjM4LCAxMzksIDksIDE0LCAKKyAgICAyMzgsIDEzOCwgOSwgMTQsIDIzOCwgMTM3LCA5LCAxNCwgMjM4LCAxMzYsIDksIDE0LCAyMzgsIDEzNSwgOSwgMTQsIDIzOCwgCisgICAgMTM0LCA5LCAxNCwgMjM4LCAxMzMsIDksIDE0LCAyMzgsIDEzMiwgOSwgMTQsIDIzOCwgMTMxLCA5LCAxNCwgMjM4LCAxMzAsIAorICAgIDksIDE0LCAyMzgsIDEyOSwgOSwgMTQsIDIzOCwgMTI4LCA5LCAxNCwgMjM4LCAxMjcsIDksIDE0LCAyMzgsIDEyNiwgOSwgCisgICAgMTQsIDIzOCwgMTI1LCA5LCAxNCwgMjM4LCAxMjQsIDksIDE0LCAyMzgsIDEyMywgOSwgMTQsIDIzOCwgMTIyLCA5LCAxNCwgCisgICAgMjM4LCAxMjEsIDksIDE0LCAyMzgsIDEyMCwgOSwgMTQsIDIzOCwgMTE5LCA5LCAxNCwgMjM4LCAxMTgsIDksIDE0LCAyMzgsIAorICAgIDExNywgOSwgMTQsIDIzOCwgMTE2LCA5LCAxNCwgMjM4LCAxMTUsIDksIDE0LCAyMzgsIDExNCwgOSwgMTQsIDIzOCwgMTEzLCAKKyAgICA5LCAxNCwgMjM4LCAxMTIsIDksIDE0LCAyMzgsIDExMSwgOSwgMTQsIDIzOCwgMTEwLCA5LCAxNCwgMjM4LCAxMDksIDksIAorICAgIDE0LCAyMzgsIDEwOCwgOSwgMTQsIDIzOCwgMTA3LCA5LCAxNCwgMjM4LCAxMDYsIDksIDE0LCAyMzgsIDEwNSwgOSwgMTQsIAorICAgIDIzOCwgMTA0LCA5LCAxNCwgMjM4LCAxMDMsIDksIDE0LCAyMzgsIDEwMiwgOSwgMTQsIDIzOCwgMTAxLCA5LCAxNCwgMjM4LCAKKyAgICAxMDAsIDksIDE0LCAyMzgsIDk5LCA5LCAxNCwgMjM4LCA5OCwgOSwgMTQsIDIzOCwgOTcsIDksIDE0LCAyMzgsIDk2LCA5LCAKKyAgICAxNCwgMjM4LCA5NSwgOSwgMTQsIDIzOCwgOTQsIDksIDE0LCAyMzgsIDkzLCA5LCAxNCwgMjM4LCA5MiwgOSwgMTQsIDIzOCwgCisgICAgOTEsIDksIDE0LCAyMzgsIDkwLCA5LCAxNCwgMjM4LCA4OSwgOSwgMTQsIDIzOCwgODgsIDksIDE0LCAyMzgsIDg3LCA5LCAKKyAgICAxNCwgMjM4LCA4NiwgOSwgMTQsIDIzOCwgODUsIDksIDE0LCAyMzgsIDg0LCA5LCAxNCwgMjM4LCA4MywgOSwgMTQsIDIzOCwgCisgICAgODIsIDksIDE0LCAyMzgsIDgxLCA5LCAxNCwgMjM4LCA4MCwgOSwgMTQsIDIzOCwgNzksIDksIDE0LCAyMzgsIDc4LCA5LCAKKyAgICAxNCwgMjM4LCA3NywgOSwgMTQsIDIzOCwgNzYsIDksIDE0LCAyMzgsIDc1LCA5LCAxNCwgMjM4LCA3NCwgOSwgMTQsIDIzOCwgCisgICAgNzMsIDIzMywgOTAsIDIxNywgODQsIDEyOSwgMjE5LCAxOCwgMTI5LCAyNDUsIDMxLCA3OCwgMTI5LCAyMjMsIDI1NCwgNzgsIAorICAgIDEyOSwgNTQsIDUwLCAxMjksIDI0NywgMTMyLCA1MCwgMTI5LCAyMjUsIDE4MiwgNTAsIDEyOSwgMjU0LCAxMjYsIDEyOSwgCisgICAgMjU0LCA1NywgMTI5LCA0MywgMjI2LCAzLCAxMjksIDQ0LCAyMjYsIDMsIDEyOSwgMjUzLCAyMTYsIDEyOSwgOTYsIDUwLCAKKyAgICAxMjksIDI0OSwgMjE5LCAxMjksIDI0MCwgMTY3LCAxMjksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTI5LCAyMTksIDQ2LCAxMjksIAorICAgIDIxLCAyMTAsIDg2LCAxMjksIDIxLCAxMTAsIDEyOSwgMjEsIDEwNSwgMTI5LCAyMSwgMTU4LCAxMjksIDIxLCAxNjEsIDEyOSwgCisgICAgMjEsIDE4OSwgMTI5LCAyMSwgMTk0LCAxMjksIDIxLCAxOTgsIDEyOSwgMjEsIDE5NSwgMTI5LCAyMSwgMjAwLCAxMjksIAorICAgIDI0OSwgMjI2LCAxMjksIDIyMCwgMTUwLCAxMjksIDIzMywgMTUsIDUwLCAxMjksIDI0NSwgOTgsIDUwLCAxMjksIDI0MiwgCisgICAgMTMwLCA1MCwgMTI5LCAyMjQsIDEzLCA3OCwgMTI5LCAyNDksIDIxNywgMjUzLCAyMDYsIDEyOSwgNywgNiwgMSwgNjEsIAorICAgIDEyOSwgNywgNiwgMSwgMjUzLCAxNTgsIDEyOSwgNywgNiwgMSwgMjUxLCA2NiwgMTI5LCA3LCA2LCAxLCAyNDksIDYwLCAKKyAgICAxMjksIDcsIDYsIDEsIDc1LCAxMjksIDcsIDYsIDEsIDI0NSwgNiwgMTI5LCA3LCA2LCAxLCAyNDMsIDIwMiwgMTI5LCA3LCAKKyAgICA2LCAxLCAyNDIsIDYwLCAxMjksIDcsIDYsIDEsIDczLCAxMjksIDcsIDYsIDEsIDIzNSwgMTQ0LCAxMjksIDcsIDYsIDEsIAorICAgIDIzNSwgMjMsIDEyOSwgNywgNiwgMSwgMTU2LCAxMjksIDcsIDYsIDEsIDE5MywgMTI5LCA3LCA2LCAxLCAyMzAsIDI1LCAKKyAgICAxMjksIDcsIDYsIDEsIDc2LCAxMjksIDcsIDYsIDEsIDIyNiwgMTA1LCAxMjksIDcsIDYsIDEsIDIyNCwgOTYsIDEyOSwgNywgCisgICAgNiwgMSwgMTUzLCAxMjksIDcsIDYsIDEsIDIyMiwgOTEsIDEyOSwgNywgNiwgMSwgMjE3LCAxNTIsIDEyOSwgNywgNiwgMSwgCisgICAgNzAsIDEyOSwgNywgNiwgMSwgMjE0LCAxMDUsIDEyOSwgNywgNiwgMSwgMjEyLCA5OCwgMTI5LCA3LCA2LCAxLCAyMTEsIAorICAgIDE3OCwgMTI5LCA3LCA2LCAxLCAyMTEsIDExNywgMTI5LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgNDIsIDEyNywgCisgICAgMTI5LCAyMjMsIDUwLCAyMTksIDQ2LCAxMjksIDQ0LCA0MiwgMTI3LCAxMjksIDI1MCwgMzEsIDI1NSwgMTQsIDEyOSwgMTIxLCAKKyAgICAyMzIsIDIxMywgMTI5LCAyNDIsIDEzNywgMjU1LCAxNCwgMTI5LCA3LCA0LCAxLCA2MSwgMTI5LCA3LCA0LCAxLCAyNTMsIAorICAgIDE1OCwgMTI5LCA3LCA0LCAxLCAyNTEsIDY2LCAxMjksIDcsIDQsIDEsIDI0OSwgNjAsIDEyOSwgNywgNCwgMSwgNzUsIDEyOSwgCisgICAgNywgNCwgMSwgMjQ1LCA2LCAxMjksIDcsIDQsIDEsIDI0MywgMjAyLCAxMjksIDcsIDQsIDEsIDI0MiwgNjAsIDEyOSwgNywgCisgICAgNCwgMSwgNzMsIDEyOSwgNywgNCwgMSwgMjM1LCAxNDQsIDEyOSwgNywgNCwgMSwgMjM1LCAyMywgMTI5LCA3LCA0LCAxLCAKKyAgICAxNTYsIDEyOSwgNywgNCwgMSwgMTkzLCAxMjksIDcsIDQsIDEsIDIzMCwgMjUsIDEyOSwgNywgNCwgMSwgNzYsIDEyOSwgNywgCisgICAgNCwgMSwgMjI2LCAxMDUsIDEyOSwgNywgNCwgMSwgMjI0LCA5NiwgMTI5LCA3LCA0LCAxLCAxNTMsIDEyOSwgNywgNCwgMSwgCisgICAgMjIyLCA5MSwgMTI5LCA3LCA0LCAxLCAyMTcsIDE1MiwgMTI5LCA3LCA0LCAxLCA3MCwgMTI5LCA3LCA0LCAxLCAyMTQsIAorICAgIDEwNSwgMTI5LCA3LCA0LCAxLCAyMTIsIDk4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDQsIDEsIDIxMSwgCisgICAgMTE3LCAxMjksIDcsIDQsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCAyNDksIDk5LCAxMjcsIDEyOSwgNjcsIDIzMiwgMjEzLCAKKyAgICAxMjksIDQ0LCAyNDksIDk5LCAxMjcsIDEyOSwgMTgyLCAyNTEsIDYsIDIxNywgODQsIDQ1LCAyMjEsIDc4LCA0NSwgMjIxLCAKKyAgICA2NywgNDUsIDIyMSwgNTYsIDQ1LCAyMjEsIDQ0LCA0NSwgMjIxLCAzMywgNDUsIDIyMSwgMjIsIDQ1LCAyMjEsIDExLCA0NSwgCisgICAgMjIxLCAwLCA0NSwgMjIwLCAyNDUsIDQ1LCAyMjAsIDIzNywgNDUsIDIyMCwgMjM2LCA0NSwgMjIwLCAyMzUsIDQ1LCAyMjAsIAorICAgIDIzNCwgNDUsIDIyMCwgMjMyLCA0NSwgMjIwLCAyMzEsIDQ1LCAyMjAsIDIzMCwgNDUsIDIyMCwgMjI5LCA0NSwgMjIwLCAKKyAgICAyMjgsIDQ1LCAyMjAsIDIyNywgNDUsIDIyMCwgMjI2LCA0NSwgMjIwLCAyMjUsIDQ1LCAyMjAsIDIyNCwgNDUsIDIyMCwgCisgICAgMjIzLCA0NSwgMjIwLCAyMjEsIDQ1LCAyMjAsIDIyMCwgNDUsIDIyMCwgMjE5LCA0NSwgMjIwLCAyMTgsIDQ1LCAyMjAsIAorICAgIDIxNywgNDUsIDIyMCwgMjE2LCA0NSwgMjIwLCAyMTUsIDQ1LCAyMjAsIDIxNCwgNDUsIDIyMCwgMjEzLCA0NSwgMjIwLCAKKyAgICAyMTIsIDQ1LCAyMjAsIDIxMCwgNDUsIDIyMCwgMjA5LCA0NSwgMjIwLCAyMDgsIDQ1LCAyMjAsIDIwNywgNDUsIDIyMCwgCisgICAgMjA2LCA0NSwgMjIwLCAyMDUsIDQ1LCAyMjAsIDIwNCwgNDUsIDIyMCwgMjAzLCA0NSwgMjIwLCAyMDIsIDQ1LCAyMjAsIAorICAgIDIwMSwgNDUsIDIyMCwgMTk5LCA0NSwgMjIwLCAxOTgsIDQ1LCAyMjAsIDE5NywgNDUsIDIyMCwgMTk2LCA0NSwgMjIwLCAKKyAgICAxOTUsIDQ1LCAyMjAsIDE5NCwgNDUsIDIyMCwgMTkzLCA0NSwgMjIwLCAxOTIsIDQ1LCAyMjAsIDE5MSwgNDUsIDIyMCwgCisgICAgMTkwLCA0NSwgMjIwLCAxODgsIDQ1LCAyMjAsIDE4NywgNDUsIDIyMCwgMTg2LCA0NSwgMjIwLCAxODUsIDQ1LCAyMjAsIAorICAgIDE4NCwgNDUsIDIyMCwgMTgzLCA0NSwgMjIwLCAxODIsIDQ1LCAyMjAsIDE4MSwgNDUsIDIyMCwgMTgwLCA0NSwgMjIwLCAKKyAgICAxNzksIDQ1LCAyMjAsIDE3NywgNDUsIDIyMCwgMTc2LCA0NSwgMjIwLCAxNzUsIDQ1LCAyMjAsIDE3NCwgNDUsIDIyMCwgCisgICAgMTczLCA0NSwgMjIwLCAxNzIsIDQ1LCAyMjAsIDE3MSwgNDUsIDIyMCwgMTcwLCA0NSwgMjIwLCAxNjksIDQ1LCAyMjAsIAorICAgIDE2OCwgNDUsIDIyMCwgMTY2LCA0NSwgMjIwLCAxNjUsIDQ1LCAyMjAsIDE2NCwgNDUsIDIyMCwgMTYzLCA0NSwgMjIwLCAKKyAgICAxNjIsIDQ1LCAyMjAsIDE2MSwgNDUsIDIyMCwgMTYwLCA0NSwgMjIwLCAxNTksIDQ1LCAyMjAsIDE1OCwgNDUsIDIyMCwgCisgICAgMTU3LCA0NSwgMjIxLCAxNTQsIDQ1LCAyMjEsIDE1MywgNDUsIDIyMSwgMTUyLCA0NSwgMjIxLCAxNTEsIDQ1LCAyMjEsIAorICAgIDE1MCwgNDUsIDIyMSwgMTQ5LCA0NSwgMjIxLCAxNDgsIDQ1LCAyMjEsIDE0NywgNDUsIDIyMSwgMTQ2LCA0NSwgMjIxLCAKKyAgICAxNDUsIDQ1LCAyMjEsIDE0MywgNDUsIDIyMSwgMTQyLCA0NSwgMjIxLCAxNDEsIDQ1LCAyMjEsIDE0MCwgNDUsIDIyMSwgCisgICAgMTM5LCA0NSwgMjIxLCAxMzgsIDQ1LCAyMjEsIDEzNywgNDUsIDIyMSwgMTM2LCA0NSwgMjIxLCAxMzUsIDQ1LCAyMjEsIAorICAgIDEzNCwgNDUsIDIyMSwgMTMyLCA0NSwgMjIxLCAxMzEsIDQ1LCAyMjEsIDEzMCwgNDUsIDIyMSwgMTI5LCA0NSwgMjIxLCAKKyAgICAxMjgsIDQ1LCAyMjEsIDEyNywgNDUsIDIyMSwgMTI2LCA0NSwgMjIxLCAxMjUsIDQ1LCAyMjEsIDEyNCwgNDUsIDIyMSwgCisgICAgMTIzLCA0NSwgMjIxLCAxMjEsIDQ1LCAyMjEsIDEyMCwgNDUsIDIyMSwgMTE5LCA0NSwgMjIxLCAxMTgsIDQ1LCAyMjEsIAorICAgIDExNywgNDUsIDIyMSwgMTE2LCA0NSwgMjIxLCAxMTUsIDQ1LCAyMjEsIDExNCwgNDUsIDIyMSwgMTEzLCA0NSwgMjIxLCAKKyAgICAxMTIsIDQ1LCAyMjEsIDExMCwgNDUsIDIyMSwgMTA5LCA0NSwgMjIxLCAxMDgsIDQ1LCAyMjEsIDEwNywgNDUsIDIyMSwgCisgICAgMTA2LCA0NSwgMjIxLCAxMDUsIDQ1LCAyMjEsIDEwNCwgNDUsIDIyMSwgMTAzLCA0NSwgMjIxLCAxMDIsIDQ1LCAyMjEsIAorICAgIDEwMSwgNDUsIDIyMSwgOTksIDQ1LCAyMjEsIDk4LCA0NSwgMjIxLCA5NywgNDUsIDIyMSwgOTYsIDQ1LCAyMjEsIDk1LCA0NSwgCisgICAgMjIxLCA5NCwgNDUsIDIyMSwgOTMsIDQ1LCAyMjEsIDkyLCA0NSwgMjIxLCA5MSwgNDUsIDIyMSwgOTAsIDQ1LCAyMjEsIDg4LCAKKyAgICA0NSwgMjIxLCA4NywgNDUsIDIyMSwgODYsIDQ1LCAyMjEsIDg1LCA0NSwgMjIxLCA4NCwgNDUsIDIyMSwgODMsIDQ1LCAyMjEsIAorICAgIDgyLCA0NSwgMjIxLCA4MSwgNDUsIDIyMSwgODAsIDQ1LCAyMjEsIDc5LCA0NSwgMjIxLCA3NywgNDUsIDIyMSwgNzYsIDQ1LCAKKyAgICAyMjEsIDc1LCA0NSwgMjIxLCA3NCwgNDUsIDIyMSwgNzMsIDQ1LCAyMjEsIDcyLCA0NSwgMjIxLCA3MSwgNDUsIDIyMSwgNzAsIAorICAgIDQ1LCAyMjEsIDY5LCA0NSwgMjIxLCA2OCwgNDUsIDIyMSwgNjYsIDQ1LCAyMjEsIDY1LCA0NSwgMjIxLCA2NCwgNDUsIDIyMSwgCisgICAgNjMsIDQ1LCAyMjEsIDYyLCA0NSwgMjIxLCA2MSwgNDUsIDIyMSwgNjAsIDQ1LCAyMjEsIDU5LCA0NSwgMjIxLCA1OCwgNDUsIAorICAgIDIyMSwgNTcsIDQ1LCAyMjEsIDU1LCA0NSwgMjIxLCA1NCwgNDUsIDIyMSwgNTMsIDQ1LCAyMjEsIDUyLCA0NSwgMjIxLCA1MSwgCisgICAgNDUsIDIyMSwgNTAsIDQ1LCAyMjEsIDQ5LCA0NSwgMjIxLCA0OCwgNDUsIDIyMSwgNDcsIDQ1LCAyMjEsIDQ2LCA0NSwgMjIxLCAKKyAgICA0MywgNDUsIDIyMSwgNDIsIDQ1LCAyMjEsIDQxLCA0NSwgMjIxLCA0MCwgNDUsIDIyMSwgMzksIDQ1LCAyMjEsIDM4LCA0NSwgCisgICAgMjIxLCAzNywgNDUsIDIyMSwgMzYsIDQ1LCAyMjEsIDM1LCA0NSwgMjIxLCAzNCwgNDUsIDIyMSwgMzIsIDQ1LCAyMjEsIDMxLCAKKyAgICA0NSwgMjIxLCAzMCwgNDUsIDIyMSwgMjksIDQ1LCAyMjEsIDI4LCA0NSwgMjIxLCAyNywgNDUsIDIyMSwgMjYsIDQ1LCAyMjEsIAorICAgIDI1LCA0NSwgMjIxLCAyNCwgNDUsIDIyMSwgMjMsIDQ1LCAyMjEsIDIxLCA0NSwgMjIxLCAyMCwgNDUsIDIyMSwgMTksIDQ1LCAKKyAgICAyMjEsIDE4LCA0NSwgMjIxLCAxNywgNDUsIDIyMSwgMTYsIDQ1LCAyMjEsIDE1LCA0NSwgMjIxLCAxNCwgNDUsIDIyMSwgMTMsIAorICAgIDQ1LCAyMjEsIDEyLCA0NSwgMjIxLCAxMCwgNDUsIDIyMSwgOSwgNDUsIDIyMSwgOCwgNDUsIDIyMSwgNywgNDUsIDIyMSwgNiwgCisgICAgNDUsIDIyMSwgNSwgNDUsIDIyMSwgNCwgNDUsIDIyMSwgMywgNDUsIDIyMSwgMiwgNDUsIDIyMSwgMSwgNDUsIDIyMCwgMjU1LCAKKyAgICA0NSwgMjIwLCAyNTQsIDQ1LCAyMjAsIDI1MywgNDUsIDIyMCwgMjUyLCA0NSwgMjIwLCAyNTEsIDQ1LCAyMjAsIDI1MCwgNDUsIAorICAgIDIyMCwgMjQ5LCA0NSwgMjIwLCAyNDgsIDQ1LCAyMjAsIDI0NywgNDUsIDIyMCwgMjQ2LCA0NSwgMjIwLCAyNDQsIDQ1LCAKKyAgICAyMjAsIDI0MywgNDUsIDIyMCwgMjQyLCA0NSwgMjIwLCAyNDEsIDQ1LCAyMjAsIDI0MCwgNDUsIDIyMCwgMjM5LCA0NSwgCisgICAgMjIwLCAyMzgsIDIyNywgMjAyLCAyMjcsIDIwNCwgMjE4LCAxNTIsIDY0LCAyNDEsIDIzMywgMjE5LCA0OCwgMjE4LCAxNTIsIAorICAgIDY0LCAyMTYsIDIxMiwgMjE4LCA4NSwgMjQ1LCAxNDMsIDY0LCAyMTYsIDIxMiwgMjQ1LCA1NiwgMjQ1LCAxNDMsIDY0LCAKKyAgICAyMTUsIDI0MywgMjQ1LCAxMDksIDI0NSwgMTMyLCAyNDUsIDEzMywgMjU1LCA3LCAyNTUsIDgsIDI1NCwgMTY3LCAyNTIsIAorICAgIDQ3LCAyNTIsIDE3OSwgMjUxLCAxMzEsIDEzNSwgMjE3LCA4OSwgMjAzLCAyMTcsIDg5LCAyNDAsIDIyNywgMjE3LCA5MywgCisgICAgMjMyLCAyMTQsIDI0NCwgMTQ1LCAxNjYsIDIzMiwgMjEzLCAyNDUsIDE0MywgNjQsIDIzMiwgMjEzLCAyMzMsIDAsIDIyOCwgCisgICAgMTM1LCAyNDUsIDExMiwgMjMyLCAyMTQsIDIxNywgODksIDY3LCAyMTcsIDg5LCAyMTIsIDExOCwgMjQ0LCAyMCwgMjQ0LCAKKyAgICAxNDUsIDI0NCwgMTI1LCAyNTAsIDIzMCwgMjIzLCA1MywgMjQ5LCAxNDMsIDIyMCwgMjgsIDIyNiwgMTMwLCAyMzIsIDE1MCwgCisgICAgMTEwLCAyMTksIDU4LCAyMjAsIDI4LCAyMzUsIDI1NSwgMjMyLCAxNTAsIDIxMCwgODYsIDIxOSwgMTkxLCAyNDgsIDE1MSwgCisgICAgMjMyLCAyMDQsIDI0NSwgNzcsIDI0NywgMTU1LCAyNDgsIDMxLCAyNDksIDE3OCwgMTEwLCAyNDgsIDE0MSwgMjQ4LCAzMSwgCisgICAgMjQ5LCAxNzgsIDEwNSwgMjQ4LCAxNDAsIDI0OCwgMzEsIDI0OSwgMTc4LCAxNTgsIDI0OCwgMTM5LCAyNDgsIDMxLCAyNDksIAorICAgIDE3OCwgMTYxLCAyNDgsIDEzOCwgMTUyLCAyNTUsIDcsIDIyOSwgMjA5LCAyMTcsIDE3NywgMjM2LCA2MiwgMjE3LCAxODAsIAorICAgIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDQsIDI1MSwgMjEzLCAyNDUsIDYyLCAyNTEsIDUsIDI1MSwgNywgMjQ1LCAxNDMsIDY0LCAKKyAgICAyMzEsIDgxLCAyNDUsIDExMCwgMjE4LCA2MSwgMjE4LCA3OCwgMjQ1LCA3NywgMjQ1LCA3OCwgMjM1LCAyMzIsIDIyMCwgCisgICAgMTM4LCAxNjEsIDI0NCwgMTA3LCAyMjAsIDEzNywgMjQzLCAyMzcsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTU4LCAyNDIsIAorICAgIDEyMSwgMjIwLCAxMzcsIDI0MiwgMTE4LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDEwNSwgMjIzLCAxMjEsIDIyMCwgMTM3LCAKKyAgICAyMjIsIDE0NSwgMjM1LCAyMzIsIDIyMCwgMTM4LCAxMTAsIDIxNCwgMTc0LCAyMjAsIDEzNywgMjE0LCAxMzMsIDIxOSwgMjEsIAorICAgIDI0OCwgNjMsIDI0OCwgNjUsIDIyNiwgNzgsIDI1MCwgMTQyLCAyMjYsIDgwLCAxMjUsIDIyNiwgMjQwLCAyMjQsIDE5MywgCisgICAgMjQxLCA0NywgMjUxLCAxNTAsIDIyNSwgMTczLCAyNDEsIDIwMywgMjUxLCAxNjEsIDIyOCwgNzUsIDI1MSwgMTUwLCAyNDEsIAorICAgIDIwMywgMjI5LCAxNzUsIDIzNSwgMjQyLCAyMzUsIDI0NCwgMjI5LCA4MiwgMjMyLCAyMTMsIDIyOSwgOTksIDIxOCwgMTUyLCAKKyAgICA2NCwgMjIxLCAxNTgsIDI1NCwgMTgsIDIxOCwgMjIzLCAyNDUsIDE0MywgNjQsIDIyMSwgMTU4LCAyNTQsIDE4LCAyNDUsIAorICAgIDgwLCAxMzUsIDIxNywgOTAsIDIyMCwgMTI3LCAyMDMsIDIxNywgOTAsIDIyMCwgMTI3LCAyNDAsIDIyNCwgMTM1LCAyMTcsIAorICAgIDkwLCAyLCAyMzUsIDM1LCAyMDMsIDIxNywgOTAsIDIsIDIzNSwgMzUsIDI0MCwgMjI1LCAyMzIsIDIxNCwgMjE3LCA5MCwgCisgICAgMjIwLCAxMjcsIDY3LCAyMTcsIDkwLCAyMjAsIDEyNywgMjEyLCAxMTcsIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjQ0LCAxNCwgCisgICAgMjI1LCAyNTMsIDIzMiwgMjE0LCAyNDYsIDEwNiwgMjI1LCAzMiwgMjI1LCAyNTMsIDIzMiwgMjE0LCAyNTIsIDE3OCwgMjI1LCAKKyAgICAyNTMsIDIzMiwgMjE0LCAyMTQsIDE2MywgMjI1LCAyOCwgMjIzLCA1MCwgMjMyLCAyMTQsIDI0NCwgMTQ1LCAyMjMsIDUwLCAKKyAgICAyMzUsIDI0MiwgMjIzLCAzNSwgMjE5LCAxNTUsIDIyMCwgMjgsIDEwNSwgMjE5LCAxNTIsIDIxOCwgMjI1LCAyMTksIDE1NSwgCisgICAgMjIwLCAyOCwgMTU4LCAyMTksIDE1MSwgMjE4LCAyMjQsIDI0OCwgMzEsIDI0OSwgMTc4LCAyMTgsIDEwNSwgMjQ4LCAxMzcsIAorICAgIDIyNCwgMTgzLCAyMTQsIDEzMiwgMTEwLCAyMjQsIDE4MywgMjE0LCAxMzAsIDIyNCwgMTQ5LCAyMjQsIDE4MywgMjE0LCAKKyAgICAxMzIsIDEwNSwgMjI0LCAxODMsIDIxNCwgMTI5LCAyMjQsIDE0OCwgMjIwLCAxMjgsIDIxNSwgMjQyLCAyMTgsIDE1MSwgCisgICAgMjE4LCA4OSwgMjUxLCA2LCAyNTAsIDE0MiwgMjUwLCAyMDksIDIzMSwgNDMsIDIxMiwgNTksIDIzMCwgNDMsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjQyLCAxMDcsIDI1NCwgMTgsIDIxOCwgMTUyLCA2NCwgMjI0LCAxNjYsIDI1NCwgMTgsIDIxOSwgMjAsIDI0NSwgCisgICAgMTQzLCA2NCwgMjQyLCAxMDcsIDI1NCwgMTgsIDI0NSwgMTQzLCA2NCwgMjI0LCAxNjYsIDI1NCwgMTgsIDI0NSwgMTA3LCAKKyAgICAyMTgsIDE1MiwgNjQsIDIxOCwgMTA1LCAyMTksIDM1LCAyMTksIDE1NSwgMjQyLCAxNDEsIDEzNSwgMjM1LCAxOTUsIDIyMCwgCisgICAgMTA3LCAyMTksIDE1NSwgMTM1LCAyMzUsIDE5NSwgMjIxLCAxOTQsIDI0OSwgMTc4LCAyMjAsIDEzNSwgMjM1LCAxOTUsIAorICAgIDI0OSwgMTEzLCAyMTgsIDEwNiwgMjE2LCAyMzYsIDIxOCwgMTY4LCAyMjYsIDE2OSwgMjE3LCAxNjcsIDI0OSwgMjE4LCAKKyAgICAyMjYsIDE0MiwgMjI0LCAxODQsIDIzMSwgNDIsIDIyNSwgMTksIDI1NCwgNTMsIDIyNCwgMTc4LCAyNDksIDIxOCwgMjU0LCAKKyAgICA2OSwgMjI5LCAxNjMsIDIxOSwgMjAwLCA3LCA2LCAxLCAyNDIsIDI0OSwgNywgNCwgMSwgMjQyLCAyNDksIDI1MCwgMTU5LCAKKyAgICAxNjUsIDEsIDIzMiwgMTc1LCAyMDksIDIwOSwgMSwgMjQ0LCA0NCwgMjQ0LCAzNiwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIAorICAgIDI0NCwgMTU3LCAyMDksIDIwOSwgMSwgMjIyLCAyMTEsIDIwOSwgMjA5LCAxLCAyMzIsIDE1NiwgNjMsIDE2NCwgMjUxLCAKKyAgICAyMjMsIDIyMCwgMywgMjQyLCAyMTUsIDIzMCwgMjQ4LCAyMjMsIDQxLCAyNDMsIDIxNiwgMjQzLCAyMTUsIDI0MywgMjE0LCAKKyAgICAyMzAsIDQ1LCAyMDksIDI1MSwgMjA5LCAyNTIsIDIwOSwgMjU0LCAyMzIsIDEwMiwgMjIyLCAyMTksIDIzMiwgMTAzLCAyMjIsIAorICAgIDIyMCwgMjI1LCAyMjMsIDIzMiwgMTAxLCAyMjIsIDIxOCwgMjI4LCAxMDYsIDIzMCwgMTY1LCAyMTEsIDIyOSwgMjEyLCAxNSwgCisgICAgMjQ1LCAxNjIsIDI0MywgMjI2LCAyMzAsIDIyOSwgMjI2LCAxOTcsIDIxNCwgMTM0LCA4NywgMjMwLCAyMjksIDI0OCwgMTU3LCAKKyAgICA4NywgOCwgMywgMjM1LCAxNTgsIDc4LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0NCwgNzEsIDIzMywgMjAsIDEyNywgCisgICAgMjEzLCAxMTgsIDIxMywgNywgMjEyLCAxOTUsIDIxMiwgMTg0LCAyMTIsIDE3MywgMjEyLCAxNjIsIDIxMiwgMTUxLCAyMTIsIAorICAgIDE0MCwgMjEyLCAxMjksIDIxMywgMTE3LCAyMTMsIDEwNiwgMjEzLCA5NSwgMjEzLCA4NCwgMjEzLCA3MywgMjEzLCA2MiwgCisgICAgMjEzLCA1MSwgMjUxLCA3MSwgMjI2LCAxNTUsIDc4LCAyNTEsIDE5NiwgMjA5LCAyNTMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAKKyAgICAyMTksIDEwMiwgMjUwLCA3MywgMjE0LCA5LCAyMTMsIDQwLCAyMTMsIDI5LCAyMTMsIDE4LCAyMTMsIDYsIDIxMiwgMjUxLCAKKyAgICAyMTIsIDI0MCwgMjEyLCAyMjksIDIxMiwgMjE4LCAyMTIsIDIwNywgMjEyLCAxOTksIDIxMiwgMTk4LCAyMTIsIDE5NywgCisgICAgMjEyLCAxOTYsIDIxMiwgMTk0LCAyMTIsIDE5MywgMjEyLCAxOTIsIDIxMiwgMTkxLCAyMTIsIDE5MCwgMjEyLCAxODksIAorICAgIDIxMiwgMTg4LCAyMTIsIDE4NywgMjEyLCAxODYsIDIxMiwgMTg1LCAyMTIsIDE4MywgMjEyLCAxODIsIDIxMiwgMTgxLCAKKyAgICAyMTIsIDE4MCwgMjEyLCAxNzksIDIxMiwgMTc4LCAyMTIsIDE3NywgMjEyLCAxNzYsIDIxMiwgMTc1LCAyMTIsIDE3NCwgCisgICAgMjEyLCAxNzIsIDIxMiwgMTcxLCAyMTIsIDE3MCwgMjEyLCAxNjksIDIxMiwgMTY4LCAyMTIsIDE2NywgMjEyLCAxNjYsIAorICAgIDIxMiwgMTY1LCAyMTIsIDE2NCwgMjEyLCAxNjMsIDIxMiwgMTYxLCAyMTIsIDE2MCwgMjEyLCAxNTksIDIxMiwgMTU4LCAKKyAgICAyMTIsIDE1NywgMjEyLCAxNTYsIDIxMiwgMTU1LCAyMTIsIDE1NCwgMjEyLCAxNTMsIDIxMiwgMTUyLCAyMTIsIDE1MCwgCisgICAgMjEyLCAxNDksIDIxMiwgMTQ4LCAyMTIsIDE0NywgMjEyLCAxNDYsIDIxMiwgMTQ1LCAyMTIsIDE0NCwgMjEyLCAxNDMsIAorICAgIDIxMiwgMTQyLCAyMTIsIDE0MSwgMjEyLCAxMzksIDIxMiwgMTM4LCAyMTIsIDEzNywgMjEyLCAxMzYsIDIxMiwgMTM1LCAKKyAgICAyMTIsIDEzNCwgMjEyLCAxMzMsIDIxMiwgMTMyLCAyMTIsIDEzMSwgMjEyLCAxMzAsIDIxMiwgMTI4LCAyMTIsIDEyNywgCisgICAgMjEyLCAxMjYsIDIxMiwgMTI1LCAyMTIsIDEyNCwgMjEyLCAxMjMsIDIxMiwgMTIyLCAyMTIsIDEyMSwgMjEyLCAxMjAsIAorICAgIDIxMiwgMTE5LCAyMTMsIDExNiwgMjEzLCAxMTUsIDIxMywgMTE0LCAyMTMsIDExMywgMjEzLCAxMTIsIDIxMywgMTExLCAKKyAgICAyMTMsIDExMCwgMjEzLCAxMDksIDIxMywgMTA4LCAyMTMsIDEwNywgMjEzLCAxMDUsIDIxMywgMTA0LCAyMTMsIDEwMywgCisgICAgMjEzLCAxMDIsIDIxMywgMTAxLCAyMTMsIDEwMCwgMjEzLCA5OSwgMjEzLCA5OCwgMjEzLCA5NywgMjEzLCA5NiwgMjEzLCAKKyAgICA5NCwgMjEzLCA5MywgMjEzLCA5MiwgMjEzLCA5MSwgMjEzLCA5MCwgMjEzLCA4OSwgMjEzLCA4OCwgMjEzLCA4NywgMjEzLCAKKyAgICA4NiwgMjEzLCA4NSwgMjEzLCA4MywgMjEzLCA4MiwgMjEzLCA4MSwgMjEzLCA4MCwgMjEzLCA3OSwgMjEzLCA3OCwgMjEzLCAKKyAgICA3NywgMjEzLCA3NiwgMjEzLCA3NSwgMjEzLCA3NCwgMjEzLCA3MiwgMjEzLCA3MSwgMjEzLCA3MCwgMjEzLCA2OSwgMjEzLCAKKyAgICA2OCwgMjEzLCA2NywgMjEzLCA2NiwgMjEzLCA2NSwgMjEzLCA2NCwgMjEzLCA2MywgMjEzLCA2MSwgMjEzLCA2MCwgMjEzLCAKKyAgICA1OSwgMjEzLCA1OCwgMjEzLCA1NywgMjEzLCA1NiwgMjEzLCA1NSwgMjEzLCA1NCwgMjEzLCA1MywgMjEzLCA1MiwgMjEzLCAKKyAgICA1MCwgMjEzLCA0OSwgMjEzLCA0OCwgMjEzLCA0NywgMjEzLCA0NiwgMjEzLCA0NSwgMjEzLCA0NCwgMjEzLCA0MywgMjEzLCAKKyAgICA0MiwgMjEzLCA0MSwgMjEzLCAzOSwgMjEzLCAzOCwgMjEzLCAzNywgMjEzLCAzNiwgMjEzLCAzNSwgMjEzLCAzNCwgMjEzLCAKKyAgICAzMywgMjEzLCAzMiwgMjEzLCAzMSwgMjEzLCAzMCwgMjEzLCAyOCwgMjEzLCAyNywgMjEzLCAyNiwgMjEzLCAyNSwgMjEzLCAKKyAgICAyNCwgMjEzLCAyMywgMjEzLCAyMiwgMjEzLCAyMSwgMjEzLCAyMCwgMjEzLCAxOSwgMjEzLCAxNywgMjEzLCAxNiwgMjEzLCAKKyAgICAxNSwgMjEzLCAxNCwgMjEzLCAxMywgMjEzLCAxMiwgMjEzLCAxMSwgMjEzLCAxMCwgMjEzLCA5LCAyMTMsIDgsIDIxMywgNSwgCisgICAgMjEzLCA0LCAyMTMsIDMsIDIxMywgMiwgMjEzLCAxLCAyMTMsIDAsIDIxMiwgMjU1LCAyMTIsIDI1NCwgMjEyLCAyNTMsIAorICAgIDIxMiwgMjUyLCAyMTIsIDI1MCwgMjEyLCAyNDksIDIxMiwgMjQ4LCAyMTIsIDI0NywgMjEyLCAyNDYsIDIxMiwgMjQ1LCAKKyAgICAyMTIsIDI0NCwgMjEyLCAyNDMsIDIxMiwgMjQyLCAyMTIsIDI0MSwgMjEyLCAyMzksIDIxMiwgMjM4LCAyMTIsIDIzNywgCisgICAgMjEyLCAyMzYsIDIxMiwgMjM1LCAyMTIsIDIzNCwgMjEyLCAyMzMsIDIxMiwgMjMyLCAyMTIsIDIzMSwgMjEyLCAyMzAsIAorICAgIDIxMiwgMjI4LCAyMTIsIDIyNywgMjEyLCAyMjYsIDIxMiwgMjI1LCAyMTIsIDIyNCwgMjEyLCAyMjMsIDIxMiwgMjIyLCAKKyAgICAyMTIsIDIyMSwgMjEyLCAyMjAsIDIxMiwgMjE5LCAyMTIsIDIxNywgMjEyLCAyMTYsIDIxMiwgMjE1LCAyMTIsIDIxNCwgCisgICAgMjEyLCAyMTMsIDIxMiwgMjEyLCAyMTIsIDIxMSwgMjEyLCAyMTAsIDIxMiwgMjA5LCAyMTIsIDIwOCwgMjEyLCAyMDYsIAorICAgIDIxMiwgMjA1LCAyMTIsIDIwNCwgMjEyLCAyMDMsIDIxMiwgMjAyLCAyMTIsIDIwMSwgMjEyLCAyMDAsIDcsIDYsIDEsIDExNSwgCisgICAgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAKKyAgICAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgCisgICAgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAKKyAgICAyMTQsIDI1MiwgNDMsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIDIyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNTAsIDIzNCwgNywgCisgICAgNiwgMSwgMjQwLCAxNTQsIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIAorICAgIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA0LCAxLCAyMjksIAorICAgIDgwLCAyLCAyMTYsIDg5LCA0OCwgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAxNDQsIDIsIAorICAgIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIAorICAgIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgCisgICAgMjIsIDE0MiwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjIyLCA5MiwgMiwgNjcsIAorICAgIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIAorICAgIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDE2MCwgCisgICAgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIAorICAgIDU5LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDQsIDEsIDE2MCwgMiwgNTksIAorICAgIDc3LCAyMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgNTksIDc3LCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDE0MiwgNywgNCwgCisgICAgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI1LCAyMiwgNTksIDc3LCAyMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAKKyAgICAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDU5LCA3NywgMjIsIDE4MiwgNywgNiwgCisgICAgMSwgMjM1LCAxNDUsIDIsIDE4MiwgNywgNCwgMSwgMjM1LCAxNDUsIDIsIDU5LCA3NywgMjIsIDE4MiwgNywgNiwgMSwgMjMzLCAKKyAgICAxNDksIDIsIDE4MiwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDE4MiwgNywgNiwgMSwgMjMyLCA1MCwgMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUwLCAyLCAxODIsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAxODIsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAxODIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIDcsIDQsIDEsIDEwNCwgMiwgMjI2LCAyMjUsIDIyLCAxODIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxNDIsIAorICAgIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxODIsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAxODIsIAorICAgIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjA0LCAxNDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAKKyAgICAyMDQsIDE0NCwgMiwgMTQyLCA3LCA0LCAxLCAyMTUsIDk0LCAyMTQsIDEwNiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxNSwgCisgICAgOTQsIDIxNCwgMTA2LCAyLCAxNDIsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjIxLCAxOTYsIAorICAgIDIsIDE0MiwgNywgNCwgMSwgMjQxLCA1MSwgMjIxLCAxOTYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDEsIDUxLCAyMjEsIAorICAgIDE5NiwgMiwgMTQyLCAxNDYsIDEsIDIzNCwgMTA5LCAzNiwgMTE2LCAyMzUsIDIzLCAzNiwgMTE2LCAyMjksIDc5LCAzNiwgCisgICAgMTE2LCAyNTEsIDY2LCAzNiwgMTE2LCAyMjcsIDE2NywgMzYsIDExNiwgMjE1LCAxNTksIDM2LCAxMTYsIDIyOCwgMTExLCAKKyAgICAzNiwgMTE2LCAyMTcsIDE1MiwgMzYsIDExNiwgMjMwLCAyNSwgMzYsIDExNiwgMjI2LCAxMDUsIDM2LCAxMTYsIDE5MywgMzYsIAorICAgIDExNiwgMjExLCAxMTcsIDM2LCAxMTYsIDE1MywgMzYsIDExNiwgMTU2LCAzNiwgMTE2LCAyMTQsIDEwNSwgMzYsIDExNiwgCisgICAgMjMyLCAxNzYsIDM2LCAxMTYsIDIzMiwgMTg1LCAzNiwgMTE2LCAyMjIsIDE4MCwgMzYsIDExNiwgMjI4LCA5MywgMzYsIAorICAgIDExNiwgMjM1LCAxNDQsIDM2LCAxMTYsIDIyMCwgMTA0LCAzNiwgMTE2LCAyMTgsIDIyNiwgMzYsIDExNiwgMjIyLCA5MSwgCisgICAgMzYsIDExNiwgMjQyLCA2MCwgMzYsIDExNiwgMjMzLCAyMzIsIDM2LCAzLCAyMzUsIDEwLCAzNiwgMywgMjM0LCA5MiwgMzYsIAorICAgIDMsIDIzNCwgODMsIDM2LCAzLCAyMzMsIDIxNywgMzYsIDMsIDIzMywgMTg4LCAzNiwgMywgMjM0LCAxODIsIDM2LCAzLCAKKyAgICAyMzQsIDE4MSwgMzYsIDMsIDIzNCwgMjQ2LCAzNiwgMywgMjM0LCAyOCwgMzYsIDMsIDIzNCwgMTAsIDM2LCAzLCAyMzQsIAorICAgIDE5NSwgMzYsIDMsIDIyOSwgNzYsIDM2LCAzLCAyMjksIDI3LCAzNiwgMywgMjI5LCAyMywgMzYsIDMsIDIyOCwgMjQ4LCAzNiwgCisgICAgMywgMjI4LCAyNDEsIDM2LCAzLCAyMjksIDY0LCAzNiwgMywgMjI5LCA2MiwgMzYsIDMsIDIyOSwgNzMsIDM2LCAzLCAyMjksIAorICAgIDQsIDM2LCAzLCAyMjgsIDI1NSwgMzYsIDMsIDIyOSwgNjYsIDM2LCAzLCAyNTEsIDMyLCAzNiwgMywgMjUwLCA1MSwgMzYsIAorICAgIDMsIDI1MCwgNDEsIDM2LCAzLCAyNDksIDExMiwgMzYsIDMsIDI0OSwgODMsIDM2LCAzLCAyNTAsIDE5MCwgMzYsIDMsIDI1MCwgCisgICAgMTgyLCAzNiwgMywgMjUxLCAyMiwgMzYsIDMsIDI0OSwgMjM4LCAzNiwgMywgMjQ5LCAxNzQsIDM2LCAzLCAyNTAsIDIyMiwgCisgICAgMzYsIDMsIDIyNywgMTY0LCAzNiwgMywgMjI3LCAxNDgsIDM2LCAzLCAyMjcsIDE0MywgMzYsIDMsIDIyNywgMTI4LCAzNiwgCisgICAgMywgMjI3LCAxMjEsIDM2LCAzLCAyMjcsIDE1NiwgMzYsIDMsIDIyNywgMTU1LCAzNiwgMywgMjI3LCAxNjEsIDM2LCAzLCAKKyAgICAyMjcsIDEzNCwgMzYsIDMsIDIyNywgMTMyLCAzNiwgMywgMjI3LCAxNTksIDM2LCAzLCAyMTUsIDE1NSwgMzYsIDMsIDIxNSwgCisgICAgMTM1LCAzNiwgMywgMjE1LCAxMzQsIDM2LCAzLCAyMTUsIDEyMywgMzYsIDMsIDIxNSwgMTIwLCAzNiwgMywgMjE1LCAxNTEsIAorICAgIDM2LCAzLCAyMTUsIDE1MCwgMzYsIDMsIDIxNSwgMTU0LCAzNiwgMywgMjE1LCAxMzMsIDM2LCAzLCAyMTUsIDEzMiwgMzYsIAorICAgIDMsIDIxNSwgMTUzLCAzNiwgMywgMjI4LCAxMDksIDM2LCAzLCAyMjgsIDk1LCAzNiwgMywgMjI4LCA5NCwgMzYsIDMsIDIyOCwgCisgICAgNzgsIDM2LCAzLCAyMjgsIDc3LCAzNiwgMywgMjI4LCAxMDUsIDM2LCAzLCAyMjgsIDEwNCwgMzYsIDMsIDIyOCwgMTA4LCAKKyAgICAzNiwgMywgMjI4LCA4MCwgMzYsIDMsIDIyOCwgNzksIDM2LCAzLCAyMjgsIDEwNywgMzYsIDMsIDIxNywgMTAxLCAzNiwgMywgCisgICAgMjE2LCAxMTcsIDM2LCAzLCAyMTYsIDEwMywgMzYsIDMsIDIxNSwgMTE4LCAzNiwgMywgMjE1LCA4NSwgMzYsIDMsIDIxNywgCisgICAgMjIsIDM2LCAzLCAyMTcsIDExLCAzNiwgMywgMjE3LCA3OSwgMzYsIDMsIDExMSwgMzYsIDMsIDIxNiwgMTcsIDM2LCAzLCAKKyAgICAyMTcsIDQxLCAzNiwgMywgMjI5LCAyMjUsIDM2LCAzLCAyMjgsIDIzMywgMzYsIDMsIDIyOCwgMjA4LCAzNiwgMywgMjI3LCAKKyAgICAyMzcsIDM2LCAzLCAyMjcsIDE3OSwgMzYsIDMsIDIyOSwgMTA3LCAzNiwgMywgMjI5LCAxMDMsIDM2LCAzLCAyMjksIDIxMiwgCisgICAgMzYsIDMsIDIyOCwgNzQsIDM2LCAzLCAyMjgsIDY0LCAzNiwgMywgMjI5LCAxODcsIDM2LCAzLCAyMjYsIDg5LCAzNiwgMywgCisgICAgMjI1LCAxMDgsIDM2LCAzLCAyMjUsIDcxLCAzNiwgMywgMjI0LCAxNTAsIDM2LCAzLCAyMjQsIDExOSwgMzYsIDMsIDIyNSwgCisgICAgMjIxLCAzNiwgMywgMjI1LCAyMTEsIDM2LCAzLCAyMjYsIDcxLCAzNiwgMywgMjI1LCAxNiwgMzYsIDMsIDIyNCwgMjQ5LCAKKyAgICAzNiwgMywgMjI1LCAyMzQsIDM2LCAzLCAyMzEsIDIzNywgMzYsIDMsIDIzMCwgMjMwLCAzNiwgMywgMjMwLCAyMDEsIDM2LCAKKyAgICAzLCAyMzAsIDEwMiwgMzYsIDMsIDIzMCwgNTQsIDM2LCAzLCAyMzEsIDkxLCAzNiwgMywgMjMxLCA4MCwgMzYsIDMsIDIzMSwgCisgICAgMjAzLCAzNiwgMywgMjMwLCAxNjEsIDM2LCAzLCAyMzAsIDEzMiwgMzYsIDMsIDIzMSwgMTM1LCAzNiwgMywgMjExLCAxMDMsIAorICAgIDM2LCAzLCAyMTEsIDgsIDM2LCAzLCAyMTAsIDI1NSwgMzYsIDMsIDIxMCwgMjEyLCAzNiwgMywgMjEwLCAxODEsIDM2LCAzLCAKKyAgICAyMTEsIDQ3LCAzNiwgMywgMjExLCA0NCwgMzYsIDMsIDIxMSwgODIsIDM2LCAzLCAyMTAsIDI0NCwgMzYsIDMsIDIxMCwgCisgICAgMjI5LCAzNiwgMywgMjExLCA1NSwgMzYsIDMsIDIyMywgMTg0LCAzNiwgMywgMjIzLCAzNSwgMzYsIDMsIDIyMiwgMjM5LCAKKyAgICAzNiwgMywgMjIyLCAxNDAsIDM2LCAzLCAyMjIsIDExMiwgMzYsIDMsIDIyMywgMTI4LCAzNiwgMywgMjIzLCAxMDgsIDM2LCAKKyAgICAzLCAyMjMsIDE2NiwgMzYsIDMsIDIyMiwgMjExLCAzNiwgMywgMjIyLCAxOTcsIDM2LCAzLCAyMjMsIDEzNiwgMzYsIDMsIAorICAgIDIzMywgMTM0LCAzNiwgMywgMjMyLCAyNDEsIDM2LCAzLCAyMzIsIDIyNywgMzYsIDMsIDIzMiwgOTgsIDM2LCAzLCAyMzIsIAorICAgIDczLCAzNiwgMywgMjMzLCA1OCwgMzYsIDMsIDIzMywgNTAsIDM2LCAzLCAyMzMsIDEwOSwgMzYsIDMsIDIzMiwgMTU2LCAzNiwgCisgICAgMywgMjMyLCAxMjcsIDM2LCAzLCAyMzMsIDc0LCAzNiwgMywgMjE0LCAyNiwgMzYsIDMsIDIxMywgMTc2LCAzNiwgMywgMjEzLCAKKyAgICAxNjIsIDM2LCAzLCAyMTIsIDExNiwgMzYsIDMsIDIxMiwgMTA5LCAzNiwgMywgMjEzLCAyNTUsIDM2LCAzLCAyMTMsIDI1MCwgCisgICAgMzYsIDMsIDIxNCwgMjMsIDM2LCAzLCAyMTMsIDEzOCwgMzYsIDMsIDIxMywgMTI3LCAzNiwgMywgMjE0LCA1LCAzNiwgMywgCisgICAgMjMyLCAxNzQsIDM2LCAzLCAyMzIsIDE2OSwgMzYsIDMsIDIzMiwgMTY4LCAzNiwgMywgMjMyLCAxNjUsIDM2LCAzLCAyMzIsIAorICAgIDE2NCwgMzYsIDMsIDIzMiwgMTcxLCAzNiwgMywgMjMyLCAxNzAsIDM2LCAzLCAyMzIsIDE3MywgMzYsIDMsIDIzMiwgMTY3LCAKKyAgICAzNiwgMywgMjMyLCAxNjYsIDM2LCAzLCAyMzIsIDE3MiwgMzYsIDMsIDIzMiwgMTgzLCAzNiwgMywgMjMyLCAxNzgsIDM2LCAKKyAgICAzLCAyMzIsIDE3NywgMzYsIDMsIDIzMiwgMTYxLCAzNiwgMywgMjMyLCAxNjAsIDM2LCAzLCAyMzIsIDE4MCwgMzYsIDMsIAorICAgIDIzMiwgMTc5LCAzNiwgMywgMjMyLCAxODIsIDM2LCAzLCAyMzIsIDE2MywgMzYsIDMsIDIzMiwgMTYyLCAzNiwgMywgMjMyLCAKKyAgICAxODEsIDM2LCAzLCAyMjIsIDE3OCwgMzYsIDMsIDIyMiwgMTY3LCAzNiwgMywgMjIyLCAxNjYsIDM2LCAzLCAyMjIsIDE2MCwgCisgICAgMzYsIDMsIDIyMiwgMTUzLCAzNiwgMywgMjIyLCAxNzQsIDM2LCAzLCAyMjIsIDE3MywgMzYsIDMsIDIyMiwgMTc3LCAzNiwgCisgICAgMywgMjIyLCAxNjUsIDM2LCAzLCAyMjIsIDE2NCwgMzYsIDMsIDIyMiwgMTc2LCAzNiwgMywgMjI4LCA5MSwgMzYsIDMsIAorICAgIDIyOCwgODYsIDM2LCAzLCAyMjgsIDg1LCAzNiwgMywgMjI4LCA4MiwgMzYsIDMsIDIyOCwgODEsIDM2LCAzLCAyMjgsIDg4LCAKKyAgICAzNiwgMywgMjI4LCA4NywgMzYsIDMsIDIyOCwgOTAsIDM2LCAzLCAyMjgsIDg0LCAzNiwgMywgMjI4LCA4MywgMzYsIDMsIAorICAgIDIyOCwgODksIDM2LCAzLCAyMzUsIDE0MCwgMzYsIDMsIDIzNSwgMTA4LCAzNiwgMywgMjM1LCAxMDEsIDM2LCAzLCAyMzUsIAorICAgIDUxLCAzNiwgMywgMjM1LCAzMywgMzYsIDMsIDIzNSwgMTI2LCAzNiwgMywgMjM1LCAxMjQsIDM2LCAzLCAyMzUsIDEzNSwgCisgICAgMzYsIDMsIDIzNSwgNjgsIDM2LCAzLCAyMzUsIDU5LCAzNiwgMywgMjM1LCAxMjksIDM2LCAzLCAyMjAsIDk4LCAzNiwgMywgCisgICAgMjIwLCAzMiwgMzYsIDMsIDIyMCwgMjcsIDM2LCAzLCAyMTksIDIyNSwgMzYsIDMsIDIxOSwgMjEwLCAzNiwgMywgMjIwLCAKKyAgICA2MywgMzYsIDMsIDIyMCwgNjEsIDM2LCAzLCAyMjAsIDkwLCAzNiwgMywgMjIwLCA3LCAzNiwgMywgMjIwLCAxLCAzNiwgMywgCisgICAgMjIwLCA3MSwgMzYsIDMsIDIxOCwgMjIyLCAzNiwgMywgMjE4LCAxOTIsIDM2LCAzLCAyMTgsIDE4OCwgMzYsIDMsIDIxOCwgCisgICAgMTc5LCAzNiwgMywgMjE4LCAxNzYsIDM2LCAzLCAyMTgsIDE5NywgMzYsIDMsIDIxOCwgMTk2LCAzNiwgMywgMjE4LCAyMjEsIAorICAgIDM2LCAzLCAyMTgsIDE4NCwgMzYsIDMsIDIxOCwgMTgzLCAzNiwgMywgMjE4LCAxOTksIDM2LCAzLCAyMjIsIDMxLCAzNiwgMywgCisgICAgMjE5LCAxOTEsIDM2LCAzLCAyMTksIDE3NSwgMzYsIDMsIDIxOCwgODMsIDM2LCAzLCAyMTgsIDQsIDM2LCAzLCAyMjEsIAorICAgIDE4MSwgMzYsIDMsIDIyMSwgMTcwLCAzNiwgMywgMjIyLCAxNywgMzYsIDMsIDIxOSwgNTgsIDM2LCAzLCAyMTksIDQwLCAzNiwgCisgICAgMywgMjIxLCAyMTksIDM2LCAzLCAyNDIsIDQ2LCAzNiwgMywgMjQxLCAxODAsIDM2LCAzLCAyNDEsIDE2MSwgMzYsIDMsIAorICAgIDI0MCwgMjIyLCAzNiwgMywgMjQwLCAyMDIsIDM2LCAzLCAyNDEsIDIzOCwgMzYsIDMsIDI0MSwgMjIwLCAzNiwgMywgMjQyLCAKKyAgICAzNiwgMzYsIDMsIDI0MSwgNjgsIDM2LCAzLCAyNDEsIDUzLCAzNiwgMywgMjQxLCAyNDYsIDM2LCAzLCAyMzMsIDIzMSwgMzYsIAorICAgIDMsIDIzMywgMjMwLCAzNiwgMywgMjMzLCAyMjUsIDM2LCAzLCAyMzMsIDIyNCwgMzYsIDMsIDIzMywgMjIxLCAzNiwgMywgCisgICAgMjMzLCAyMjAsIDM2LCAzLCAyMzMsIDIyNywgMzYsIDMsIDIzMywgMjI2LCAzNiwgMywgMjMzLCAyMjksIDM2LCAzLCAyMzMsIAorICAgIDIyMywgMzYsIDMsIDIzMywgMjIyLCAzNiwgMywgMjMzLCAyMjgsIDM2LCAzLCAyMTksIDIzMSwgMTc1LCAxMTYsIDUsIDIxMSwgCisgICAgNjgsIDE3NSwgMTE2LCA1LCAyMjMsIDE1NSwgMTc1LCAxMTYsIDUsIDIyMywgNzgsIDk4LCAxLCAyMTUsIDI4LCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMTc2LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjM0LCAxMzIsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAKKyAgICAyMzQsIDI4LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjM0LCAxMDUsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjksIDQsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTEsIDMzLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUwLCAxNTcsIDY5LCAxMTYsIAorICAgIDUsIDI0OSwgMjMzLCAyNDksIDIzOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MCwgODYsIDY5LCAxMTYsIDUsIDI0OSwgCisgICAgMjMzLCAyMjcsIDEzNCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI0OCwgMjIxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjE1LCAKKyAgICAxNDQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNDcsIDE0NSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNSwgMTM5LCA2OSwgCisgICAgMTE2LCA1LCAyNDksIDIzMywgMTk3LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjE3LCAxMDUsIDY5LCAxMTYsIDUsIDI0OSwgCisgICAgMjMzLCAyMTYsIDIwOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDExMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNiwgMTU2LCAKKyAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI4LCA3NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MiwgMTkxLCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMjI1LCAxNDcsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMjUsIDE2LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjI1LCAxMjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzAsIDE2MSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxMCwgCisgICAgMjQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjIyLCAyMTEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzIsIDE1NiwgNjksIAorICAgIDExNiwgNSwgMjQ5LCAyMzMsIDIxMywgMTM4LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjIwLCAxMDIsIDY5LCAxMTYsIDUsIAorICAgIDI0OSwgMjMzLCAyMTgsIDIyMywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIwNiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDE2MiwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzMywgMTM1LCA2OSwgMjUsIDUsIDI0OSwgMjMzLCAyMjQsIDg4LCA2OSwgMjM1LCAKKyAgICAyNDMsIDI1LCA1LCAyNDksIDIzMywgMjI0LCAzMCwgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyMiwgMTAwLCAKKyAgICA2OSwgMjM1LCAyNDMsIDI1LCA1LCAyNDksIDIzMywgMjIyLCA5MywgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIAorICAgIDIyNCwgNjksIDY5LCAyNSwgNSwgMjI2LCAyMDQsIDY5LCAyNSwgNSwgMjU1LCAzNCwgMTQxLCAxLCAyNTEsIDI1NSwgMjI5LCAKKyAgICA3NywgMTQxLCAxLCAyNTEsIDI1NSwgMjI5LCAyNywgMTQxLCAxLCAyNTEsIDI1NSwgMjI4LCAyNDgsIDE0MSwgMSwgMjUxLCAKKyAgICAyNTUsIDIyOSwgNjQsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgNCwgNTYsIDEsIDI1MSwgMjU1LCAyMjksIDc3LCA1NiwgMSwgCisgICAgMjUxLCAyNTUsIDIyOSwgMjcsIDU2LCAxLCAyNTEsIDI1NSwgMjI4LCAyNDgsIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA2NCwgCisgICAgNTYsIDEsIDI1MSwgMjU1LCAyMjksIDQsIDU2LCAxLCAyNTQsIDE5NCwgMjUwLCAxOTAsIDU2LCAxLCAyNTQsIDE5NCwgMjE1LCAKKyAgICAxMTgsIDU2LCAxLCAyNTQsIDE5NCwgMTExLCA1NiwgMSwgMjU0LCAxOTQsIDIyNiwgMTA1LCA1OCwgMSwgMjQ1LCAyMCwgCisgICAgMjQ1LCAxOSwgMjQ5LCAxODIsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ1LCAyMCwgMjQ5LCAxODIsIDEzOCwgMTMwLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tfb2Zmc2V0MVtdID0gewpAQCAtMTMxMjcsNDg3ICsxMzgyNCw0ODggQEAKICAgICAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAKICAgICAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAKICAgICA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCAKLSAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCAxNywgODcsIDg4LCA4OSwgOTAsIDkxLCAKLSAgICA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEwMywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgCi0gICAgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIAotICAgIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxMjgsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyOSwgMTMwLCAKLSAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCi0gICAgMTQ1LCAxNDYsIDE3LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTUyLCAxNywgCi0gICAgMTUzLCAxNywgMTU0LCAxNywgMTU1LCAxNywgMTU2LCAxNywgMTcsIDE3LCAxNTcsIDE3LCAxNywgMTcsIDE1OCwgMTU5LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgCi0gICAgMTY1LCAxNjYsIDE3LCAxNjcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgCi0gICAgMTc0LCAxNzUsIDE3NiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3NywgCi0gICAgMTc4LCAxNzksIDE4MCwgMTgxLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTgyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTcsIDE4OCwgCi0gICAgMTcsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMTcsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAKLSAgICAyMDcsIDIwOCwgMjA5LCAyMTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDIxMSwgMjEyLCAyMTMsIAotICAgIDIxNCwgMjE1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyMTYsIDE3LCAyMTcsIDIxOCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCAKKyAgICA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMDQsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIAorICAgIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAKKyAgICAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgMTI5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxMzAsIDEzMSwgCisgICAgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIAorICAgIDE0NiwgMTQ3LCA4NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNTIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE1MywgODcsIAorICAgIDE1NCwgMTU1LCAxNTYsIDg3LCAxNTcsIDg3LCAxNTgsIDg3LCA4NywgODcsIDE1OSwgODcsIDg3LCA4NywgMTYwLCAxNjEsIAorICAgIDE2MiwgMTYzLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjQsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCisgICAgMTY5LCAxNzAsIDE3MSwgODcsIDE3MiwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAKKyAgICAxNzksIDE4MCwgMTgxLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTgyLCAKKyAgICAxODMsIDE4NCwgMTg1LCAxODYsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4NywgMTg4LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDE4OSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDg3LCAxOTUsIAorICAgIDg3LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCAyMDQsIDIwNSwgODcsIDg3LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgODcsIDIxMSwgMjEyLCAyMTMsIDIxNCwgCisgICAgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDIyMCwgMjIxLCAKKyAgICAyMjIsIDIyMywgMjI0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjUsIDg3LCAyMjYsIDIyNywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMjM1LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBwaHJhc2Vib29rX29mZnNldDJbXSA9IHsKQEAgLTEzNjE1LDI4MDMgKzE0MzEzLDMwMTUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKICAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU4LCA2MCwgNjIsIDY0LCA2NiwgNjksIDcyLCAKICAgICA3NSwgNzgsIDgyLCA4NiwgOTEsIDk2LCAxMDEsIDEwNSwgMTEwLCAxMTUsIDEyMCwgMTI0LCAxMjksIDEzNCwgMTM4LCAxNDIsIAotICAgIDE0NiwgMTUwLCAxNTUsIDE2MCwgMTY0LCAxNjgsIDE3MywgMTc3LCAxODIsIDE4NywgMTkyLCAxOTcsIDIwMiwgMjA1LCAKLSAgICAyMDksIDIxMiwgMjE2LCAyMTksIDIyMywgMjI3LCAyMzIsIDIzNywgMjQyLCAyNDYsIDI1MSwgMjU2LCAyNjEsIDI2NSwgCi0gICAgMjcwLCAyNzUsIDI3OSwgMjgzLCAyODcsIDI5MSwgMjk2LCAzMDEsIDMwNSwgMzA5LCAzMTQsIDMxOCwgMzIzLCAzMjgsIAotICAgIDMzMywgMzM4LCAzNDMsIDM0NywgMzUwLCAzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NiwgMzYwLCAzNjUsIAotICAgIDM2OCwgMzcxLCAzNzQsIDM3NywgMzgwLCAzODMsIDM4NSwgMzg4LCAzOTQsIDQwMiwgNDA1LCA0MDksIDQxMiwgNDE0LCAKLSAgICA0MTcsIDQyMCwgNDIzLCA0MjYsIDQzMCwgNDMzLCA0MzYsIDQ0MCwgNDQyLCA0NDUsIDQ1MSwgNDU5LCA0NjYsIDQ3MywgCi0gICAgNDgwLCA0ODUsIDQ5MiwgNDk4LCA1MDUsIDUxMiwgNTE5LCA1MjcsIDUzMiwgNTQwLCA1NDcsIDU1MywgNTYwLCA1NjcsIAotICAgIDU3NSwgNTgyLCA1OTAsIDU5OCwgNjAzLCA2MTEsIDYxOCwgNjI0LCA2MzEsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKLSAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNjk5LCA3MDYsIDcxMiwgNzE5LCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCi0gICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI1LCA4MzIsIDgzOCwgODQ1LCA4NTIsIAotICAgIDg1OSwgODYyLCA4NjgsIDg3NSwgODgxLCA4ODgsIDg5NSwgOTAyLCA5MDcsIDkxNSwgOTIyLCA5MjksIDkzNiwgOTQzLCAKLSAgICA5NTAsIDk1NywgOTY0LCA5NzEsIDk3OSwgOTg3LCA5OTUsIDEwMDMsIDEwMTEsIDEwMTksIDEwMjcsIDEwMzUsIDEwNDIsIAotICAgIDEwNDksIDEwNTYsIDEwNjMsIDEwNzAsIDEwNzcsIDEwODQsIDEwOTEsIDEwOTgsIDExMDUsIDExMTIsIDExMTksIDExMjcsIAotICAgIDExMzUsIDExNDMsIDExNTEsIDExNTksIDExNjcsIDExNzUsIDExODMsIDExOTEsIDExOTksIDEyMDYsIDEyMTMsIDEyMjEsIAotICAgIDEyMjksIDEyMzcsIDEyNDUsIDEyNTMsIDEyNjEsIDEyNjksIDEyNzcsIDEyODUsIDEyOTEsIDEyOTYsIDEzMDEsIDEzMDksIAotICAgIDEzMTcsIDEzMjUsIDEzMzMsIDEzMzgsIDEzNDUsIDEzNTIsIDEzNjAsIDEzNjgsIDEzNzYsIDEzODQsIDEzOTQsIDE0MDQsIAotICAgIDE0MTEsIDE0MTgsIDE0MjUsIDE0MzIsIDE0NDAsIDE0NDgsIDE0NTYsIDE0NjQsIDE0NzUsIDE0ODAsIDE0ODUsIDE0OTIsIAotICAgIDE0OTksIDE1MDYsIDE1MTMsIDE1MjAsIDE1MjcsIDE1MzIsIDE1MzcsIDE1NDQsIDE1NTEsIDE1NTksIDE1NjcsIDE1NzUsIAotICAgIDE1ODMsIDE1OTAsIDE1OTcsIDE2MDUsIDE2MTMsIDE2MjEsIDE2MjksIDE2MzcsIDE2NDUsIDE2NTMsIDE2NjEsIDE2NjksIAotICAgIDE2NzcsIDE2ODQsIDE2OTEsIDE2OTgsIDE3MDUsIDE3MTIsIDE3MTksIDE3MjYsIDE3MzMsIDE3NDEsIDE3NDksIDE3NTYsIAotICAgIDE3NjMsIDE3NzAsIDE3NzcsIDE3ODUsIDE3OTMsIDE4MDEsIDE4MDksIDE4MTcsIDE4MjQsIDE4MzEsIDE4MzksIDE4NDcsIAotICAgIDE4NTUsIDE4NjMsIDE4NjgsIDE4NzQsIDE4ODAsIDE4ODcsIDE4OTQsIDE4OTksIDE5MDQsIDE5MTAsIDE5MTcsIDE5MjQsIAotICAgIDE5MzEsIDE5MzgsIDE5NDYsIDE5NTQsIDE5NjEsIDE5NjcsIDE5NzIsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTksIDIwMDQsIAotICAgIDIwMDksIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDksIDIwNTUsIDIwNjMsIDIwNzMsIDIwODIsIDIwODksIAotICAgIDIwOTYsIDIxMDEsIDIxMDYsIDIxMTMsIDIxMjAsIDIxMjQsIDIxMjksIDIxMzQsIDIxMzksIDIxNDcsIDIxNTYsIDIxNjMsIAotICAgIDIxNzAsIDIxNzksIDIxODYsIDIxOTMsIDIxOTgsIDIyMDUsIDIyMTIsIDIyMTksIDIyMjYsIDIyMzMsIDIyMzgsIDIyNDUsIAotICAgIDIyNTIsIDIyNjAsIDIyNjUsIDIyNzAsIDIyNzUsIDIyODUsIDIyODksIDIyOTUsIDIzMDEsIDIzMDcsIDIzMTMsIDIzMjEsIAotICAgIDIzMzQsIDIzNDIsIDIzNDcsIDIzNTcsIDIzNjIsIDIzNjcsIDIzNzcsIDIzODIsIDIzODksIDIzOTYsIDI0MDQsIDI0MTIsIAotICAgIDI0MTksIDI0MjYsIDI0MzMsIDI0NDAsIDI0NTAsIDI0NjAsIDI0NjksIDI0NzgsIDI0ODgsIDI0OTgsIDI1MDgsIDI1MTgsIAotICAgIDI1MjQsIDI1MzQsIDI1NDQsIDI1NTQsIDI1NjQsIDI1NzIsIDI1ODAsIDI1ODcsIDI1OTQsIDI2MDIsIDI2MTAsIDI2MTgsIAotICAgIDI2MjYsIDI2MzMsIDI2NDAsIDI2NTAsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODQsIDI2ODksIDI2OTksIDI3MDQsIDI3MTEsIAotICAgIDI3MTgsIDI3MjMsIDI3MjgsIDI3MzYsIDI3NDQsIDI3NTQsIDI3NjQsIDI3NzEsIDI3NzgsIDI3ODcsIDI3OTYsIDI4MDQsIAotICAgIDI4MTIsIDI4MjEsIDI4MzAsIDI4MzgsIDI4NDYsIDI4NTUsIDI4NjQsIDI4NzMsIDI4ODIsIDI4OTIsIDI5MDIsIDI5MTAsIAotICAgIDI5MTgsIDI5MjcsIDI5MzYsIDI5NDUsIDI5NTQsIDI5NjQsIDI5NzQsIDI5ODIsIDI5OTAsIDI5OTksIDMwMDgsIDMwMTcsIAotICAgIDMwMjYsIDMwMzUsIDMwNDQsIDMwNDksIDMwNTQsIDMwNjIsIDMwNzAsIDMwODAsIDMwODgsIDMwOTMsIDMwOTgsIDMxMDUsIAotICAgIDMxMTIsIDMxMTksIDMxMjYsIDMxMzMsIDMxNDAsIDMxNTAsIDMxNjAsIDMxNzAsIDMxODAsIDMxODcsIDMxOTQsIDMyMDQsIAotICAgIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTQsIDMyNjEsIDMyNjgsIDMyNzUsIDMyODEsIDMyODgsIDMyOTUsIAotICAgIDMzMDIsIDMzMTEsIDMzMjEsIDMzMzEsIDMzMzgsIDMzNDUsIDMzNTEsIDMzNTYsIDMzNjMsIDMzNjksIDMzNzUsIDMzODIsIAotICAgIDMzODksIDM0MDAsIDM0MTAsIDM0MTcsIDM0MjQsIDM0MzEsIDM0MzgsIDM0NDQsIDM0NDksIDM0NTYsIDM0NjIsIDM0NjgsIAotICAgIDM0NzYsIDM0ODQsIDM0OTEsIDM0OTcsIDM1MDIsIDM1MDksIDM1MTUsIDM1MjMsIDM1MzMsIDM1NDMsIDM1NTIsIDM1NTksIAotICAgIDM1NjUsIDM1NzEsIDM1NzYsIDM1ODMsIDM1OTAsIDM1OTcsIDM2MDQsIDM2MTEsIDM2MTYsIDM2MjEsIDM2MzEsIDM2MzksIAotICAgIDM2NDgsIDM2NTMsIDM2NTksIDM2NzAsIDM2NzcsIDM2ODUsIDM2OTQsIDM2OTksIDM3MDUsIDM3MTEsIDM3MTgsIDM3MjMsIAotICAgIDM3MjksIDM3NDAsIDM3NDksIDM3NTgsIDM3NjYsIDM3NzQsIDM3ODQsIDM3ODksIDM3OTYsIDM4MDMsIDM4MDgsIDM4MjAsIAotICAgIDM4MjksIDM4MzcsIDM4NDQsIDM4NTMsIDM4NTgsIDM4NjMsIDM4NzAsIDM4NzcsIDM4ODQsIDM4OTEsIDM4OTcsIDM5MDYsIAotICAgIDM5MTQsIDM5MTksIDM5MjcsIDM5MzMsIDM5NDEsIDM5NDksIDM5NTUsIDM5NjEsIDM5NjcsIDM5NzUsIDM5ODMsIDM5ODksIAotICAgIDM5OTcsIDQwMDQsIDQwMDksIDQwMTYsIDQwMjQsIDQwMzQsIDQwNDEsIDQwNDgsIDQwNTgsIDQwNjUsIDQwNzIsIDQwODIsIAotICAgIDQwODksIDQwOTYsIDQxMDMsIDQxMDksIDQxMTUsIDQxMjUsIDQxMzgsIDQxNDMsIDQxNTAsIDQxNTUsIDQxNTksIDQxNjUsIAotICAgIDQxNzQsIDQxODEsIDQxODYsIDQxOTEsIDQxOTUsIDQyMDAsIDQyMDYsIDQyMTAsIDQyMTYsIDQyMjIsIDQyMjgsIDQyMzQsIAotICAgIDQyNDIsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjgsIDQyNzAsIDQyNzUsIDQyNzksIDQyODUsIDQyOTEsIDQyOTcsIAotICAgIDQzMDIsIDQzMDksIDQzMTYsIDQzMjIsIDQzMjksIDQzMzcsIDQzNDUsIDQzNTAsIDQzNTUsIDQzNTksIDQzNjQsIDQzNjYsIAotICAgIDQzNjgsIDQzNzEsIDQzNzMsIDQzNzYsIDQzODEsIDQzODYsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDUsIDQ0MTAsIDQ0MTksIAotICAgIDQ0MjUsIDQ0MzAsIDQ0MzYsIDQ0NDEsIDQ0NDcsIDQ0NTUsIDQ0NjMsIDQ0NjcsIDQ0NzEsIDQ0NzYsIDQ0ODIsIDQ0ODgsIAotICAgIDQ0OTQsIDQ1MDAsIDQ1MDUsIDQ1MTMsIDQ1MjIsIDQ1MzEsIDQ1MzYsIDQ1NDIsIDQ1NDksIDQ1NTYsIDQ1NjMsIDQ1NzAsIAotICAgIDQ1NzQsIDQ1ODAsIDQ1ODUsIDQ1OTAsIDQ1OTUsIDQ2MDAsIDQ2MDMsIDQ2MDYsIDQ2MDksIDQ2MTIsIDQ2MTUsIDQ2MTgsIAotICAgIDQ2MjIsIDQ2MjYsIDQ2MzIsIDQ2MzUsIDQ2NDAsIDQ2NDYsIDQ2NTIsIDQ2NTUsIDQ2NjAsIDQ2NjYsIDQ2NzAsIDQ2NzYsIAotICAgIDQ2ODIsIDQ2ODgsIDQ2OTQsIDQ2OTksIDQ3MDQsIDQ3MDksIDQ3MTIsIDQ3MTgsIDQ3MjMsIDQ3MjgsIDQ3MzIsIDQ3MzcsIAotICAgIDQ3NDMsIDQ3NDksIDQ3NTIsIDQ3NTYsIDQ3NjAsIDQ3NjQsIDQ3NjcsIDQ3NzAsIDQ3NzUsIDQ3NzksIDQ3ODYsIDQ3OTAsIAotICAgIDQ3OTYsIDQ4MDAsIDQ4MDYsIDQ4MTAsIDQ4MTQsIDQ4MTgsIDQ4MjMsIDQ4MjgsIDQ4MzUsIDQ4NDEsIDQ4NDgsIDQ4NTQsIAotICAgIDQ4NjAsIDQ4NjYsIDQ4NjksIDQ4NzMsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTAsIDQ4OTUsIDQ4OTksIDQ5MDMsIDQ5MDksIAotICAgIDQ5MTMsIDQ5MTcsIDQ5MjIsIDQ5MjgsIDQ5MzMsIDQ5MzksIDQ5NDMsIDQ5NTAsIDQ5NTUsIDQ5NjAsIDQ5NjUsIDQ5NzAsIAotICAgIDQ5NzYsIDQ5NzksIDQ5ODMsIDQ5ODgsIDQ5OTMsIDUwMDIsIDUwMDgsIDUwMTMsIDUwMTcsIDUwMjIsIDUwMjYsIDUwMzEsIAotICAgIDUwMzUsIDUwMzksIDUwNDQsIDUwNDgsIDUwNTQsIDUwNTksIDUwNjQsIDUwNjksIDUwNzQsIDUwNzksIDUwODQsIDUwOTAsIAotICAgIDUwOTYsIDUxMDIsIDUxMDcsIDUxMTIsIDUxMTgsIDUxMjQsIDUxMzAsIDUxMzUsIDUxNDAsIDUxNDcsIDUxNTQsIDUxNTgsIAotICAgIDUxNjQsIDUxNzEsIDAsIDAsIDUxNzgsIDUxODEsIDUxOTAsIDUxOTksIDUyMTAsIDAsIDAsIDAsIDAsIDAsIDUyMTQsIAotICAgIDUyMTcsIDUyMjIsIDUyMzAsIDUyMzUsIDUyNDMsIDUyNTEsIDAsIDUyNTksIDAsIDUyNjcsIDUyNzUsIDUyODMsIDUyOTQsIAotICAgIDUyOTksIDUzMDQsIDUzMDksIDUzMTQsIDUzMTksIDUzMjQsIDUzMjksIDUzMzQsIDUzMzksIDUzNDQsIDUzNDksIDUzNTQsIAotICAgIDUzNTksIDUzNjQsIDUzNjksIDUzNzQsIDAsIDUzNzksIDUzODQsIDUzODksIDUzOTQsIDUzOTksIDU0MDQsIDU0MDksIAotICAgIDU0MTQsIDU0MjIsIDU0MzAsIDU0MzgsIDU0NDYsIDU0NTQsIDU0NjIsIDU0NzMsIDU0NzgsIDU0ODMsIDU0ODgsIDU0OTMsIAotICAgIDU0OTgsIDU1MDMsIDU1MDgsIDU1MTMsIDU1MTgsIDU1MjMsIDU1MjgsIDU1MzMsIDU1MzgsIDU1NDMsIDU1NDgsIDU1NTMsIAotICAgIDU1NTgsIDU1NjQsIDU1NjksIDU1NzQsIDU1NzksIDU1ODQsIDU1ODksIDU1OTQsIDU1OTksIDU2MDcsIDU2MTUsIDU2MjMsIAotICAgIDU2MzEsIDU2MzksIDU2NDQsIDU2NDgsIDU2NTIsIDU2NTksIDU2NjksIDU2NzksIDU2ODMsIDU2ODcsIDU2OTEsIDU2OTcsIAotICAgIDU3MDQsIDU3MDgsIDU3MTMsIDU3MTcsIDU3MjIsIDU3MjYsIDU3MzEsIDU3MzUsIDU3NDAsIDU3NDUsIDU3NTAsIDU3NTUsIAotICAgIDU3NjAsIDU3NjUsIDU3NzAsIDU3NzUsIDU3ODAsIDU3ODUsIDU3OTAsIDU3OTUsIDU4MDAsIDU4MDUsIDU4MTAsIDU4MTQsIAotICAgIDU4MTgsIDU4MjQsIDU4MjgsIDU4MzMsIDU4MzksIDU4NDcsIDU4NTIsIDU4NTcsIDU4NjQsIDU4NjksIDU4NzQsIDU4ODEsIAotICAgIDU4OTAsIDU4OTksIDU5MTAsIDU5MTgsIDU5MjMsIDU5MjgsIDU5MzMsIDU5NDAsIDU5NDUsIDU5NTEsIDU5NTYsIDU5NjEsIAotICAgIDU5NjYsIDU5NzEsIDU5NzYsIDU5ODEsIDU5ODksIDU5OTUsIDYwMDAsIDYwMDQsIDYwMDksIDYwMTQsIDYwMTksIDYwMjQsIAotICAgIDYwMjksIDYwMzQsIDYwMzksIDYwNDMsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIDYwNjgsIDYwNzIsIDYwNzcsIDYwODIsIAotICAgIDYwODcsIDYwOTIsIDYwOTYsIDYxMDEsIDYxMDUsIDYxMTAsIDYxMTUsIDYxMjAsIDYxMjUsIDYxMzEsIDYxMzYsIDYxNDIsIAotICAgIDYxNDYsIDYxNTEsIDYxNTUsIDYxNTksIDYxNjQsIDYxNjksIDYxNzQsIDYxNzksIDYxODQsIDYxODksIDYxOTQsIDYxOTgsIAotICAgIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjcsIDYyMzIsIDYyMzcsIDYyNDIsIDYyNDcsIDYyNTEsIDYyNTYsIAotICAgIDYyNjAsIDYyNjUsIDYyNzAsIDYyNzUsIDYyODAsIDYyODYsIDYyOTEsIDYyOTcsIDYzMDEsIDYzMDYsIDYzMTAsIDYzMTgsIAotICAgIDYzMjMsIDYzMjgsIDYzMzMsIDYzNDAsIDYzNDUsIDYzNTEsIDYzNTYsIDYzNjEsIDYzNjYsIDYzNzEsIDYzNzYsIDYzODEsIAotICAgIDYzODksIDYzOTUsIDY0MDAsIDY0MDUsIDY0MTAsIDY0MTUsIDY0MjAsIDY0MjYsIDY0MzIsIDY0MzksIDY0NDYsIDY0NTUsIAotICAgIDY0NjQsIDY0NzEsIDY0NzgsIDY0ODcsIDY0OTYsIDY1MDEsIDY1MDYsIDY1MTEsIDY1MTYsIDY1MjEsIDY1MjYsIDY1MzEsIAotICAgIDY1MzYsIDY1NDcsIDY1NTgsIDY1NjMsIDY1NjgsIDY1NzUsIDY1ODIsIDY1OTAsIDY1OTgsIDY2MDMsIDY2MDgsIDY2MTMsIAotICAgIDY2MTgsIDY2MjIsIDY2MjYsIDY2MzAsIDY2MzUsIDY2NDEsIDY2NDUsIDY2NTIsIDY2NTcsIDY2NjcsIDY2NzcsIDY2ODMsIAotICAgIDY2ODksIDY2OTcsIDY3MDUsIDY3MTMsIDY3MjEsIDY3MjgsIDY3MzUsIDY3NDQsIDY3NTMsIDY3NjEsIDY3NjksIDY3NzcsIAotICAgIDY3ODUsIDY3OTMsIDY4MDEsIDY4MDksIDY4MTcsIDY4MjQsIDY4MzEsIDY4MzcsIDY4NDMsIDY4NTEsIDY4NTksIDY4NjYsIAotICAgIDY4NzMsIDY4ODIsIDY4OTEsIDY4OTcsIDY5MDMsIDY5MTEsIDY5MTksIDY5MjcsIDY5MzUsIDY5NDEsIDY5NDcsIDY5NTUsIAotICAgIDY5NjMsIDY5NzEsIDY5NzksIDY5ODYsIDY5OTMsIDcwMDEsIDcwMDksIDcwMTcsIDcwMjUsIDcwMzAsIDcwMzUsIDcwNDIsIAotICAgIDcwNDksIDcwNTksIDcwNjksIDcwNzMsIDcwODEsIDcwODksIDcwOTYsIDcxMDMsIDcxMTEsIDcxMTksIDcxMjYsIDcxMzMsIAotICAgIDcxNDEsIDcxNDksIDcxNTYsIDcxNjMsIDcxNzEsIDcxNzksIDcxODQsIDcxOTEsIDcxOTgsIDcyMDUsIDcyMTIsIDcyMTgsIAotICAgIDcyMjQsIDcyMzIsIDcyNDAsIDcyNDUsIDcyNTAsIDcyNTgsIDcyNjYsIDcyNzQsIDcyODIsIDcyOTAsIDcyOTgsIDczMDUsIAotICAgIDczMTIsIDczMjAsIDczMjgsIDczMzYsIDczNDQsIDczNTEsIDczNTgsIDczNjQsIDczNzAsIDczNzksIDczODgsIDczOTUsIAotICAgIDc0MDIsIDc0MDksIDc0MTYsIDc0MjMsIDc0MzAsIDc0MzcsIDc0NDQsIDc0NTIsIDc0NjAsIDc0NjgsIDc0NzYsIDc0ODQsIAotICAgIDc0OTIsIDc1MDIsIDc1MTIsIDc1MTksIDc1MjYsIDc1MzMsIDc1NDAsIDc1NDcsIDc1NTQsIDc1NjEsIDc1NjgsIDc1NzUsIAotICAgIDc1ODIsIDc1ODksIDc1OTYsIDc2MDMsIDc2MTAsIDc2MTcsIDc2MjQsIDc2MzEsIDc2MzgsIDc2NDUsIDc2NTIsIDc2NTksIAotICAgIDc2NjYsIDc2NzMsIDc2ODAsIDc2ODUsIDc2OTAsIDc2OTUsIDc3MDAsIDc3MDUsIDc3MTAsIDc3MTUsIDc3MjAsIDc3MjUsIAotICAgIDc3MzAsIDc3MzYsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjksIDc3NzgsIDc3ODYsIDc3OTQsIDc4MDIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc4MTAsIDc4MTUsIDc4MjAsIDc4MjUsIDc4MzAsIDc4MzUsIDc4NDAsIDc4NDUsIDc4NTAsIAotICAgIDc4NTQsIDc4NTksIDc4NjQsIDc4NjksIDc4NzQsIDc4NzksIDc4ODQsIDc4ODksIDc4OTQsIDc4OTksIDc5MDQsIDc5MDksIAotICAgIDc5MTQsIDc5MTksIDc5MjQsIDc5MjksIDc5MzQsIDc5MzksIDc5NDQsIDc5NDgsIDc5NTMsIDc5NTgsIDc5NjMsIDc5NjgsIAotICAgIDc5NzMsIDc5NzgsIDc5ODMsIDc5ODgsIDc5OTMsIDAsIDAsIDc5OTgsIDgwMDUsIDgwMDgsIDgwMTIsIDgwMTYsIDgwMTksIAotICAgIDgwMjMsIDAsIDgwMjcsIDgwMzIsIDgwMzcsIDgwNDIsIDgwNDcsIDgwNTIsIDgwNTcsIDgwNjIsIDgwNjcsIDgwNzEsIAotICAgIDgwNzYsIDgwODEsIDgwODYsIDgwOTEsIDgwOTYsIDgxMDEsIDgxMDYsIDgxMTEsIDgxMTYsIDgxMjEsIDgxMjYsIDgxMzEsIAotICAgIDgxMzYsIDgxNDEsIDgxNDYsIDgxNTEsIDgxNTYsIDgxNjEsIDgxNjUsIDgxNzAsIDgxNzUsIDgxODAsIDgxODUsIDgxOTAsIAotICAgIDgxOTUsIDgyMDAsIDgyMDUsIDgyMTAsIDgyMTUsIDAsIDgyMjIsIDgyMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDgyMzAsIAotICAgIDgyMzUsIDgyNDAsIDgyNDUsIDgyNTIsIDgyNTksIDgyNjQsIDgyNjksIDgyNzQsIDgyNzksIDgyODQsIDgyODksIDgyOTQsIAotICAgIDgzMDEsIDgzMDYsIDgzMTMsIDgzMjAsIDgzMjUsIDgzMzIsIDgzMzcsIDgzNDIsIDgzNDcsIDgzNTQsIDgzNTksIDgzNjQsIAotICAgIDgzNzEsIDgzODAsIDgzODUsIDgzOTAsIDgzOTUsIDg0MDAsIDg0MDYsIDg0MTEsIDg0MTgsIDg0MjUsIDg0MzIsIDg0MzcsIAotICAgIDg0NDIsIDg0NDcsIDg0NTIsIDg0NTcsIDg0NjIsIDg0NzIsIDg0NzcsIDg0ODUsIDg0OTAsIDg0OTUsIDg1MDAsIDg1MDUsIAotICAgIDg1MTIsIDg1MTksIDg1MjYsIDg1MzIsIDg1MzgsIDg1NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1NTIsIDg1NTYsIAotICAgIDg1NjAsIDg1NjQsIDg1NjgsIDg1NzIsIDg1NzYsIDg1ODAsIDg1ODQsIDg1ODgsIDg1OTIsIDg1OTcsIDg2MDEsIDg2MDUsIAotICAgIDg2MTAsIDg2MTQsIDg2MTksIDg2MjMsIDg2MjcsIDg2MzEsIDg2MzYsIDg2NDAsIDg2NDUsIDg2NDksIDg2NTMsIDg2NTcsIAotICAgIDg2NjEsIDAsIDAsIDAsIDAsIDAsIDg2NjUsIDg2NzIsIDg2ODAsIDg2ODcsIDg2OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg2OTcsIDg3MDAsIDg3MDQsIDg3MDksIDAsIDAsIDg3MTMsIDg3MTksIDg3MjUsIDg3MjgsIDg3MzUsIAotICAgIDg3NDQsIDg3NDcsIDg3NTAsIDg3NTUsIDg3NjEsIDg3NjUsIDg3NzMsIDg3NzksIDg3ODUsIDg3OTMsIDg3OTcsIDg4MDIsIAotICAgIDg4MTMsIDg4MTgsIDg4MjIsIDg4MjYsIDg4MzAsIDAsIDAsIDg4MzMsIDg4NDAsIDg4NDQsIDg4NTAsIDg4NTQsIDg4NjEsIAotICAgIDg4NjcsIDg4NzQsIDg4ODAsIDg4ODYsIDg4OTAsIDg4OTQsIDg5MDAsIDg5MDQsIDg5MDgsIDg5MTIsIDg5MTYsIDg5MjAsIAotICAgIDg5MjQsIDg5MjgsIDg5MzIsIDg5MzYsIDg5NDAsIDg5NDQsIDg5NDgsIDg5NTIsIDg5NTYsIDg5NjAsIDg5NjQsIDg5NjgsIAotICAgIDg5NzYsIDg5ODQsIDg5OTQsIDkwMDMsIDkwMTIsIDkwMTUsIDkwMTksIDkwMjMsIDkwMjcsIDkwMzEsIDkwMzUsIDkwMzksIAotICAgIDkwNDMsIDkwNDcsIDkwNTIsIDkwNTYsIDkwNTksIDkwNjIsIDkwNjUsIDkwNjgsIDkwNzEsIDkwNzQsIDkwNzcsIDkwODAsIAotICAgIDkwODQsIDkwODcsIDkwOTAsIDkwOTUsIDkxMDAsIDkxMDYsIDkxMDksIDkxMTYsIDkxMjUsIDkxMzAsIDkxMzUsIDkxNDIsIAotICAgIDkxNDcsIDkxNTIsIDkxNTYsIDkxNjAsIDkxNjQsIDkxNjgsIDkxNzIsIDkxNzYsIDkxODAsIDkxODQsIDkxODgsIDkxOTIsIAotICAgIDkxOTcsIDkyMDIsIDkyMDksIDkyMTUsIDkyMjEsIDkyMjcsIDkyMzIsIDkyNDAsIDkyNDgsIDkyNTMsIDkyNTksIDkyNjUsIAotICAgIDkyNzEsIDkyNzcsIDkyODEsIDkyODUsIDkyODksIDkyOTYsIDkzMDYsIDkzMTAsIDkzMTQsIDkzMTgsIDkzMjQsIDkzMzIsIAotICAgIDkzMzYsIDkzNDAsIDkzNDcsIDkzNTEsIDkzNTUsIDkzNTksIDkzNjYsIDkzNzMsIDkzODUsIDkzODksIDkzOTMsIDkzOTcsIAotICAgIDk0MDcsIDk0MTYsIDk0MjAsIDk0MjgsIDk0MzUsIDk0NDIsIDk0NTEsIDk0NjIsIDk0NzAsIDk0NzQsIDk0ODMsIDk0OTQsIAotICAgIDk1MDIsIDk1MTUsIDk1MjMsIDk1MzEsIDk1MzksIDk1NDcsIDk1NTMsIDk1NjIsIDk1NjksIDk1NzMsIDk1ODEsIDk1ODUsIAotICAgIDk1OTIsIDk2MDAsIDk2MDQsIDk2MTAsIDk2MTcsIDk2MjQsIDk2MjgsIDk2MzYsIDk2NDAsIDk2NDcsIDk2NTEsIDk2NTksIAotICAgIDk2NjMsIDk2NzEsIDk2NzksIDk2ODYsIDk2OTQsIDk3MDIsIDk3MDksIDk3MTUsIDk3MTksIDk3MjYsIDk3MzQsIDk3NDAsIAotICAgIDk3NDcsIDk3NTQsIDk3NjAsIDk3NjksIDk3NzcsIDk3ODQsIDk3OTAsIDk3OTQsIDk3OTcsIDk4MDEsIDk4MDcsIDk4MTUsIAotICAgIDk4MTksIDk4MjUsIDk4MzEsIDk4MzgsIDk4NDUsIDk4NDgsIDk4NTUsIDk4NjAsIDk4NjgsIDk4NzMsIDk4NzcsIDk4OTAsIAotICAgIDk5MDMsIDk5MDksIDk5MTYsIDk5MjEsIDk5MjcsIDk5MzIsIDk5MzgsIDk5NDgsIDk5NTUsIDk5NjQsIDk5NzQsIDk5ODAsIAotICAgIDk5ODUsIDk5OTAsIDk5OTQsIDk5OTgsIDEwMDAzLCAxMDAwOCwgMTAwMTQsIDEwMDIyLCAxMDAzMCwgMTAwNDEsIDEwMDQ2LCAKLSAgICAxMDA1NSwgMTAwNjQsIDEwMDcxLCAxMDA3NywgMTAwODMsIDEwMDg5LCAxMDA5NSwgMTAxMDEsIDEwMTA3LCAxMDExMywgCi0gICAgMTAxMTksIDEwMTI1LCAxMDEzMiwgMTAxMzksIDEwMTQ2LCAxMDE1MiwgMTAxNjAsIDEwMTY5LCAxMDE3NSwgMTAxODIsIAotICAgIDEwMTg5LCAxMDE5NCwgMTAxOTksIDEwMjAzLCAxMDIxMCwgMTAyMTcsIDEwMjI2LCAxMDIzNSwgMTAyMzgsIDEwMjQzLCAKLSAgICAxMDI0OCwgMCwgMTAyNTMsIDEwMjU3LCAxMDI2MSwgMTAyNjcsIDEwMjcxLCAxMDI3NSwgMTAyODEsIDEwMjg1LCAxMDI5MywgCi0gICAgMTAyOTcsIDEwMzAxLCAxMDMwNSwgMTAzMDksIDEwMzEzLCAxMDMxOSwgMTAzMjMsIDEwMzI5LCAxMDMzMywgMTAzMzcsIAotICAgIDEwMzQxLCAxMDM0NSwgMTAzNDksIDEwMzU0LCAxMDM1NywgMTAzNjEsIDEwMzY3LCAxMDM3MSwgMTAzNzUsIDEwMzc5LCAKLSAgICAxMDM4MywgMTAzODcsIDEwMzkzLCAxMDM5OSwgMTA0MDUsIDEwNDA5LCAxMDQxMywgMTA0MTgsIDEwNDIyLCAxMDQyNiwgCi0gICAgMTA0MzEsIDEwNDM1LCAxMDQzOSwgMTA0NDYsIDEwNDUzLCAxMDQ1NywgMTA0NjEsIDEwNDY2LCAxMDQ3MCwgMTA0NzQsIAotICAgIDEwNDc3LCAxMDQ4MiwgMTA0ODUsIDEwNDg4LCAxMDQ5MywgMTA0OTgsIDEwNTAyLCAxMDUwNiwgMTA1MTIsIDEwNTE4LCAKLSAgICAxMDUyMSwgMCwgMCwgMTA1MjQsIDEwNTMwLCAxMDUzNiwgMTA1NDIsIDEwNTUyLCAxMDU2NCwgMTA1NzYsIDEwNTkzLCAKLSAgICAxMDYwNSwgMTA2MTYsIDEwNjI0LCAxMDYzMSwgMTA2NDIsIDEwNjU3LCAxMDY2OCwgMTA2NzQsIDEwNjgzLCAxMDY5MSwgCi0gICAgMTA3MDMsIDEwNzEzLCAxMDcyMSwgMTA3MzMsIDEwNzQwLCAxMDc0OCwgMTA3NjAsIDEwNzY2LCAxMDc3MiwgMTA3ODAsIAotICAgIDEwNzg4LCAxMDc5NiwgMTA4MDIsIDEwODEyLCAxMDgxOSwgMTA4MjksIDEwODM5LCAxMDg1MiwgMTA4NjYsIDEwODgwLCAKLSAgICAxMDg5MCwgMTA5MDEsIDEwOTEyLCAxMDkyNSwgMTA5MzgsIDEwOTUyLCAxMDk2NCwgMTA5NzYsIDEwOTg5LCAxMTAwMiwgCi0gICAgMTEwMTQsIDExMDI3LCAxMTAzNiwgMTEwNDQsIDExMDQ5LCAxMTA1NCwgMTEwNTksIDExMDY0LCAxMTA2OSwgMTEwNzQsIAotICAgIDExMDc5LCAxMTA4NCwgMTEwODksIDExMDk0LCAxMTA5OSwgMTExMDQsIDExMTA5LCAxMTExNCwgMTExMTksIDExMTI0LCAKLSAgICAxMTEyOSwgMTExMzQsIDExMTM5LCAxMTE0NCwgMTExNDksIDExMTU0LCAxMTE1OSwgMTExNjQsIDExMTY5LCAxMTE3NCwgCi0gICAgMTExNzksIDExMTg0LCAxMTE4OSwgMTExOTQsIDExMTk5LCAxMTIwNCwgMTEyMDgsIDExMjEzLCAxMTIxOCwgMTEyMjMsIAotICAgIDExMjI4LCAxMTIzMywgMTEyMzcsIDExMjQxLCAxMTI0NSwgMTEyNDksIDExMjUzLCAxMTI1NywgMTEyNjEsIDExMjY1LCAKLSAgICAxMTI2OSwgMTEyNzMsIDExMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTI4MiwgCi0gICAgMTEyODcsIDExMjkxLCAxMTI5NSwgMTEyOTksIDExMzAzLCAxMTMwNywgMTEzMTEsIDExMzE1LCAxMTMxOSwgMTEzMjMsIAotICAgIDExMzI3LCAxMTMzMiwgMTEzMzYsIDExMzQwLCAxMTM0NCwgMTEzNDksIDExMzUzLCAxMTM1OCwgMTEzNjIsIDExMzY3LCAKLSAgICAxMTM3MSwgMTEzNzYsIDExMzgxLCAxMTM4NiwgMTEzOTEsIDExMzk1LCAxMTQwMCwgMTE0MDUsIDExNDEwLCAxMTQxNSwgCi0gICAgMTE0MTksIDExNDI0LCAxMTQzMSwgMTE0MzUsIDExNDQwLCAxMTQ0NCwgMTE0NDgsIDExNDUzLCAxMTQ1NywgMTE0NjQsIAotICAgIDExNDcxLCAxMTQ3OCwgMTE0ODQsIDExNDkyLCAxMTUwMCwgMTE1MDksIDExNTE3LCAxMTUyNCwgMTE1MzEsIDExNTM5LCAKLSAgICAxMTU0NSwgMTE1NTEsIDExNTU3LCAxMTU2MywgMTE1NzAsIDExNTc1LCAxMTU3OSwgMTE1ODQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExNTg4LCAxMTU5MywgMTE1OTgsIDExNjAzLCAxMTYwOCwgMTE2MTMsIDExNjE4LCAxMTYyMywgMTE2MjgsIDExNjMzLCAKLSAgICAxMTYzOCwgMTE2NDMsIDExNjQ4LCAxMTY1MywgMTE2NTgsIDExNjYzLCAxMTY2OCwgMTE2NzMsIDExNjc4LCAxMTY4MywgCi0gICAgMTE2ODgsIDExNjkzLCAxMTY5OCwgMTE3MDMsIDExNzA4LCAxMTcxMywgMTE3MTgsIDExNzI2LCAxMTczMywgMTE3MzksIAotICAgIDExNzQ0LCAxMTc1MiwgMTE3NTksIDExNzY1LCAxMTc3MiwgMTE3NzgsIDExNzgzLCAxMTc5MCwgMTE3OTcsIDExODAzLCAKLSAgICAxMTgwOCwgMTE4MTMsIDExODE5LCAxMTgyNCwgMTE4MjksIDExODM1LCAwLCAwLCAxMTg0MCwgMTE4NDYsIDExODUyLCAKLSAgICAxMTg1OCwgMTE4NjQsIDExODcwLCAxMTg3NiwgMTE4ODEsIDExODg5LCAxMTg5NSwgMTE5MDEsIDExOTA3LCAxMTkxMywgCi0gICAgMTE5MTksIDExOTI3LCAwLCAxMTkzMywgMTE5MzgsIDExOTQzLCAxMTk0OCwgMTE5NTMsIDExOTU4LCAxMTk2MywgMTE5NjgsIAotICAgIDExOTczLCAxMTk3OCwgMTE5ODMsIDExOTg4LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAxMjAwOCwgMTIwMTMsIDEyMDE4LCAKLSAgICAxMjAyMywgMTIwMjgsIDEyMDMzLCAxMjAzOCwgMTIwNDMsIDEyMDQ4LCAxMjA1MywgMTIwNTgsIDEyMDYzLCAxMjA2OCwgMCwgCi0gICAgMCwgMTIwNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDc3LCAxMjA4MywgCi0gICAgMTIwODcsIDEyMDkxLCAxMjA5NSwgMTIxMDAsIDEyMTAzLCAxMjEwNywgMTIxMTAsIDEyMTE0LCAxMjExNywgMTIxMjEsIAotICAgIDEyMTI1LCAxMjEyOSwgMTIxMzQsIDEyMTM5LCAxMjE0MiwgMTIxNDYsIDEyMTUxLCAxMjE1NiwgMTIxNTksIDEyMTYzLCAKLSAgICAxMjE2NiwgMTIxNzAsIDEyMTc0LCAxMjE3OCwgMTIxODIsIDEyMTg2LCAxMjE5MCwgMTIxOTQsIDEyMTk4LCAxMjIwMiwgCi0gICAgMTIyMDYsIDEyMjEwLCAxMjIxNCwgMTIyMTgsIDEyMjIyLCAxMjIyNiwgMTIyMzAsIDEyMjM0LCAxMjIzOCwgMTIyNDEsIAotICAgIDEyMjQ1LCAxMjI0OCwgMTIyNTIsIDEyMjU2LCAxMjI2MCwgMTIyNjMsIDEyMjY2LCAxMjI2OSwgMTIyNzMsIDEyMjc3LCAKLSAgICAxMjI4MSwgMTIyODUsIDEyMjg5LCAxMjI5MywgMTIyOTcsIDEyMzAxLCAxMjMwNCwgMTIzMDksIDEyMzE0LCAxMjMxOCwgCi0gICAgMTIzMjIsIDEyMzI3LCAxMjMzMSwgMTIzMzYsIDEyMzQwLCAxMjM0NSwgMTIzNTAsIDEyMzU2LCAxMjM2MiwgMTIzNjgsIAotICAgIDEyMzcyLCAxMjM3NywgMTIzODMsIDEyMzg5LCAxMjM5MywgMTIzOTgsIDEyNDAyLCAxMjQwOCwgMTI0MTMsIDEyNDE2LCAKLSAgICAxMjQyMiwgMTI0MjgsIDEyNDMzLCAxMjQzOCwgMTI0NDUsIDEyNDUwLCAxMjQ1NSwgMTI0NTksIDEyNDYzLCAxMjQ2NywgCi0gICAgMTI0NzEsIDEyNDc1LCAxMjQ3OSwgMTI0ODMsIDEyNDg3LCAxMjQ5MiwgMTI0OTcsIDEyNTAyLCAxMjUwOCwgMTI1MTEsIAotICAgIDEyNTE1LCAxMjUxOSwgMTI1MjIsIDEyNTI1LCAxMjUyOCwgMTI1MzEsIDEyNTM0LCAxMjUzNywgMTI1NDAsIDEyNTQzLCAKLSAgICAxMjU0NiwgMTI1NTAsIDEyNTU3LCAxMjU2MiwgMTI1NjYsIDEyNTcwLCAxMjU3NCwgMTI1NzgsIDAsIDEyNTgyLCAxMjU4NiwgCi0gICAgMTI1OTAsIDEyNTk0LCAxMjU5OCwgMTI2MDQsIDEyNjA4LCAwLCAxMjYxMiwgMTI2MTYsIDEyNjIwLCAwLCAxMjYyNCwgCi0gICAgMTI2MjcsIDEyNjMxLCAxMjYzNCwgMTI2MzgsIDEyNjQxLCAxMjY0NSwgMTI2NDksIDAsIDAsIDEyNjUzLCAxMjY1NiwgMCwgCi0gICAgMCwgMTI2NjAsIDEyNjYzLCAxMjY2NywgMTI2NzAsIDEyNjc0LCAxMjY3OCwgMTI2ODIsIDEyNjg2LCAxMjY5MCwgMTI2OTQsIAotICAgIDEyNjk4LCAxMjcwMiwgMTI3MDYsIDEyNzEwLCAxMjcxNCwgMTI3MTgsIDEyNzIyLCAxMjcyNiwgMTI3MzAsIDEyNzM0LCAKLSAgICAxMjczOCwgMTI3NDIsIDAsIDEyNzQ1LCAxMjc0OCwgMTI3NTIsIDEyNzU2LCAxMjc2MCwgMTI3NjMsIDEyNzY2LCAwLCAKLSAgICAxMjc2OSwgMCwgMCwgMCwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIDAsIDAsIDEyNzg4LCAxMjc5MiwgMTI3OTYsIAotICAgIDEyODAxLCAxMjgwNSwgMTI4MTAsIDEyODE0LCAxMjgxOSwgMTI4MjQsIDAsIDAsIDEyODMwLCAxMjgzNCwgMCwgMCwgCi0gICAgMTI4MzksIDEyODQzLCAxMjg0OCwgMTI4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODU4LCAwLCAwLCAwLCAwLCAKLSAgICAxMjg2NCwgMTI4NjgsIDAsIDEyODcyLCAxMjg3NiwgMTI4ODEsIDEyODg2LCAxMjg5MSwgMCwgMCwgMTI4OTcsIDEyOTAxLCAKLSAgICAxMjkwNCwgMTI5MDcsIDEyOTEwLCAxMjkxMywgMTI5MTYsIDEyOTE5LCAxMjkyMiwgMTI5MjUsIDEyOTI4LCAxMjkzNywgCi0gICAgMTI5NDYsIDEyOTUwLCAxMjk1NCwgMTI5NjAsIDEyOTY2LCAxMjk3MiwgMTI5NzgsIDEyOTkyLCAxMjk5OSwgMTMwMDIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzMDA2LCAxMzAxMiwgMTMwMTYsIDAsIDEzMDIwLCAxMzAyMywgMTMwMjcsIDEzMDMwLCAxMzAzNCwgCi0gICAgMTMwMzcsIDAsIDAsIDAsIDAsIDEzMDQxLCAxMzA0NSwgMCwgMCwgMTMwNDksIDEzMDUzLCAxMzA1NywgMTMwNjAsIDEzMDY0LCAKLSAgICAxMzA2OCwgMTMwNzIsIDEzMDc2LCAxMzA4MCwgMTMwODQsIDEzMDg4LCAxMzA5MiwgMTMwOTYsIDEzMTAwLCAxMzEwNCwgCi0gICAgMTMxMDgsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTI0LCAxMzEyOCwgMTMxMzIsIDAsIDEzMTM1LCAxMzEzOCwgMTMxNDIsIAotICAgIDEzMTQ2LCAxMzE1MCwgMTMxNTMsIDEzMTU2LCAwLCAxMzE1OSwgMTMxNjMsIDAsIDEzMTY3LCAxMzE3MSwgMCwgMTMxNzUsIAotICAgIDEzMTc5LCAwLCAwLCAxMzE4MiwgMCwgMTMxODYsIDEzMTkxLCAxMzE5NSwgMTMyMDAsIDEzMjA0LCAwLCAwLCAwLCAwLCAKLSAgICAxMzIwOSwgMTMyMTQsIDAsIDAsIDEzMjE5LCAxMzIyNCwgMTMyMjksIDAsIDAsIDAsIDEzMjMzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzIzNywgMTMyNDEsIDEzMjQ1LCAxMzI0OSwgMCwgMTMyNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjU3LCAKLSAgICAxMzI2MSwgMTMyNjQsIDEzMjY3LCAxMzI3MCwgMTMyNzMsIDEzMjc2LCAxMzI3OSwgMTMyODIsIDEzMjg1LCAxMzI4OCwgCi0gICAgMTMyOTEsIDEzMjk0LCAxMzI5NywgMTMzMDAsIDEzMzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzMwOSwgMTMzMTMsIDEzMzE3LCAwLCAxMzMyMSwgMTMzMjQsIDEzMzI4LCAxMzMzMSwgMTMzMzUsIDEzMzM4LCAxMzM0MiwgCi0gICAgMTMzNDYsIDEzMzUwLCAwLCAxMzM1NSwgMTMzNTgsIDEzMzYyLCAwLCAxMzM2NywgMTMzNzAsIDEzMzc0LCAxMzM3NywgCi0gICAgMTMzODEsIDEzMzg1LCAxMzM4OSwgMTMzOTMsIDEzMzk3LCAxMzQwMSwgMTM0MDUsIDEzNDA5LCAxMzQxMywgMTM0MTcsIAotICAgIDEzNDIxLCAxMzQyNSwgMTM0MjksIDEzNDMzLCAxMzQzNywgMTM0NDEsIDEzNDQ1LCAxMzQ0OSwgMCwgMTM0NTIsIDEzNDU1LCAKLSAgICAxMzQ1OSwgMTM0NjMsIDEzNDY3LCAxMzQ3MCwgMTM0NzMsIDAsIDEzNDc2LCAxMzQ4MCwgMCwgMTM0ODQsIDEzNDg4LCAKLSAgICAxMzQ5MiwgMTM0OTYsIDEzNTAwLCAwLCAwLCAxMzUwMywgMTM1MDcsIDEzNTExLCAxMzUxNiwgMTM1MjAsIDEzNTI1LCAKLSAgICAxMzUyOSwgMTM1MzQsIDEzNTM5LCAxMzU0NSwgMCwgMTM1NTEsIDEzNTU1LCAxMzU2MCwgMCwgMTM1NjYsIDEzNTcwLCAKLSAgICAxMzU3NSwgMCwgMCwgMTM1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTgyLCAKLSAgICAxMzU4NywgMTM1OTIsIDEzNTk3LCAwLCAwLCAxMzYwMywgMTM2MDcsIDEzNjEwLCAxMzYxMywgMTM2MTYsIDEzNjE5LCAKLSAgICAxMzYyMiwgMTM2MjUsIDEzNjI4LCAxMzYzMSwgMCwgMTM2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzNjM4LCAxMzY0MiwgMTM2NDYsIDAsIDEzNjUwLCAxMzY1MywgMTM2NTcsIDEzNjYwLCAxMzY2NCwgCi0gICAgMTM2NjcsIDEzNjcxLCAxMzY3NSwgMCwgMCwgMTM2NzksIDEzNjgyLCAwLCAwLCAxMzY4NiwgMTM2ODksIDEzNjkzLCAKLSAgICAxMzY5NiwgMTM3MDAsIDEzNzA0LCAxMzcwOCwgMTM3MTIsIDEzNzE2LCAxMzcyMCwgMTM3MjQsIDEzNzI4LCAxMzczMiwgCi0gICAgMTM3MzYsIDEzNzQwLCAxMzc0NCwgMTM3NDgsIDEzNzUyLCAxMzc1NiwgMTM3NjAsIDEzNzY0LCAxMzc2OCwgMCwgMTM3NzEsIAotICAgIDEzNzc0LCAxMzc3OCwgMTM3ODIsIDEzNzg2LCAxMzc4OSwgMTM3OTIsIDAsIDEzNzk1LCAxMzc5OSwgMCwgMTM4MDMsIAotICAgIDEzODA3LCAxMzgxMSwgMTM4MTUsIDEzODE5LCAwLCAwLCAxMzgyMiwgMTM4MjYsIDEzODMwLCAxMzgzNSwgMTM4MzksIAotICAgIDEzODQ0LCAxMzg0OCwgMTM4NTMsIDEzODU4LCAwLCAwLCAxMzg2NCwgMTM4NjgsIDAsIDAsIDEzODczLCAxMzg3NywgCi0gICAgMTM4ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODg2LCAxMzg5MiwgMCwgMCwgMCwgMCwgMTM4OTgsIDEzOTAyLCAwLCAKLSAgICAxMzkwNiwgMTM5MTAsIDEzOTE1LCAxMzkyMCwgMTM5MjUsIDAsIDAsIDEzOTMxLCAxMzkzNSwgMTM5MzgsIDEzOTQxLCAKLSAgICAxMzk0NCwgMTM5NDcsIDEzOTUwLCAxMzk1MywgMTM5NTYsIDEzOTU5LCAxMzk2MiwgMTM5NjUsIDEzOTY5LCAxMzk3NSwgCi0gICAgMTM5ODEsIDEzOTg3LCAxMzk5MywgMTM5OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDA1LCAxNDAwOSwgCi0gICAgMCwgMTQwMTMsIDE0MDE2LCAxNDAyMCwgMTQwMjMsIDE0MDI3LCAxNDAzMCwgMCwgMCwgMCwgMTQwMzQsIDE0MDM3LCAKLSAgICAxNDA0MSwgMCwgMTQwNDUsIDE0MDQ4LCAxNDA1MiwgMTQwNTYsIDAsIDAsIDAsIDE0MDU5LCAxNDA2MywgMCwgMTQwNjcsIDAsIAotICAgIDE0MDcxLCAxNDA3NSwgMCwgMCwgMCwgMTQwNzksIDE0MDgzLCAwLCAwLCAwLCAxNDA4NywgMTQwOTAsIDE0MDk0LCAwLCAwLCAKLSAgICAwLCAxNDA5NywgMTQxMDAsIDE0MTAzLCAxNDEwNiwgMTQxMTAsIDE0MTE0LCAxNDExOCwgMTQxMjIsIDE0MTI2LCAxNDEzMCwgCi0gICAgMTQxMzQsIDE0MTM4LCAwLCAwLCAwLCAwLCAxNDE0MSwgMTQxNDYsIDE0MTUwLCAxNDE1NSwgMTQxNTksIDAsIDAsIDAsIAotICAgIDE0MTY0LCAxNDE2OCwgMTQxNzMsIDAsIDE0MTc4LCAxNDE4MiwgMTQxODcsIDE0MTkyLCAwLCAwLCAxNDE5NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjA1LCAxNDIwOSwgCi0gICAgMTQyMTIsIDE0MjE1LCAxNDIxOCwgMTQyMjEsIDE0MjI0LCAxNDIyNywgMTQyMzAsIDE0MjMzLCAxNDIzNiwgMTQyNDAsIAotICAgIDE0MjQ1LCAxNDI1MCwgMTQyNTQsIDE0MjU4LCAxNDI2MiwgMTQyNjYsIDE0MjcwLCAxNDI3NSwgMTQyNzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MjgyLCAxNDI4NiwgMTQyOTAsIDAsIDE0Mjk0LCAxNDI5NywgMTQzMDEsIDE0MzA0LCAxNDMwOCwgCi0gICAgMTQzMTEsIDE0MzE1LCAxNDMxOSwgMCwgMTQzMjMsIDE0MzI2LCAxNDMzMCwgMCwgMTQzMzQsIDE0MzM3LCAxNDM0MSwgCi0gICAgMTQzNDUsIDE0MzQ4LCAxNDM1MiwgMTQzNTYsIDE0MzYwLCAxNDM2NCwgMTQzNjgsIDE0MzcyLCAxNDM3NiwgMTQzODAsIAotICAgIDE0Mzg0LCAxNDM4OCwgMTQzOTIsIDE0Mzk2LCAxNDQwMCwgMTQ0MDQsIDE0NDA4LCAxNDQxMiwgMTQ0MTYsIDE0NDIwLCAwLCAKLSAgICAxNDQyMywgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQxLCAxNDQ0NCwgMTQ0NDcsIDE0NDUxLCAxNDQ1NSwgMCwgCi0gICAgMTQ0NTksIDE0NDYzLCAxNDQ2NywgMTQ0NzEsIDE0NDc1LCAwLCAwLCAwLCAxNDQ3OCwgMTQ0ODIsIDE0NDg3LCAxNDQ5MSwgCi0gICAgMTQ0OTYsIDE0NTAwLCAxNDUwNSwgMTQ1MTAsIDAsIDE0NTE2LCAxNDUyMCwgMTQ1MjUsIDAsIDE0NTMwLCAxNDUzNCwgCi0gICAgMTQ1MzksIDE0NTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU0OCwgMTQ1NTIsIDAsIDE0NTU4LCAxNDU2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ1NjYsIDE0NTcxLCAxNDU3NiwgMTQ1ODEsIDAsIDAsIDE0NTg3LCAxNDU5MSwgMTQ1OTQsIDE0NTk3LCAKLSAgICAxNDYwMCwgMTQ2MDMsIDE0NjA2LCAxNDYwOSwgMTQ2MTIsIDE0NjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYxOCwgCi0gICAgMTQ2MzEsIDE0NjQzLCAxNDY1NSwgMTQ2NjcsIDE0Njc5LCAxNDY5MSwgMTQ3MDMsIDAsIDAsIDE0NzA3LCAxNDcxMSwgMCwgCi0gICAgMTQ3MTUsIDE0NzE4LCAxNDcyMiwgMTQ3MjUsIDE0NzI5LCAxNDczMiwgMTQ3MzYsIDE0NzQwLCAwLCAxNDc0NCwgMTQ3NDcsIAotICAgIDE0NzUxLCAwLCAxNDc1NSwgMTQ3NTgsIDE0NzYyLCAxNDc2NiwgMTQ3NjksIDE0NzczLCAxNDc3NywgMTQ3ODEsIDE0Nzg1LCAKLSAgICAxNDc4OSwgMTQ3OTMsIDE0Nzk3LCAxNDgwMSwgMTQ4MDUsIDE0ODA5LCAxNDgxMywgMTQ4MTcsIDE0ODIxLCAxNDgyNSwgCi0gICAgMTQ4MjksIDE0ODMzLCAxNDgzNywgMTQ4NDEsIDAsIDE0ODQ0LCAxNDg0NywgMTQ4NTEsIDE0ODU1LCAxNDg1OSwgMTQ4NjIsIAotICAgIDE0ODY1LCAxNDg2OCwgMTQ4NzIsIDE0ODc2LCAwLCAxNDg4MCwgMTQ4ODQsIDE0ODg4LCAxNDg5MiwgMTQ4OTYsIDAsIDAsIAotICAgIDE0ODk5LCAxNDkwMywgMTQ5MDcsIDE0OTEyLCAxNDkxNiwgMTQ5MjEsIDE0OTI1LCAxNDkzMCwgMTQ5MzUsIDAsIDE0OTQxLCAKLSAgICAxNDk0NSwgMTQ5NTAsIDAsIDE0OTU1LCAxNDk1OSwgMTQ5NjQsIDE0OTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDk3MywgCi0gICAgMTQ5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTgzLCAwLCAxNDk4NywgMTQ5OTIsIDE0OTk3LCAxNTAwMiwgMCwgMCwgCi0gICAgMTUwMDgsIDE1MDEyLCAxNTAxNSwgMTUwMTgsIDE1MDIxLCAxNTAyNCwgMTUwMjcsIDE1MDMwLCAxNTAzMywgMTUwMzYsIDAsIAotICAgIDE1MDM5LCAxNTA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNDcsIDE1MDUxLCAKLSAgICAwLCAxNTA1NSwgMTUwNTgsIDE1MDYyLCAxNTA2NSwgMTUwNjksIDE1MDcyLCAxNTA3NiwgMTUwODAsIDAsIDE1MDg0LCAKLSAgICAxNTA4NywgMTUwOTEsIDAsIDE1MDk1LCAxNTA5OCwgMTUxMDIsIDE1MTA2LCAxNTEwOSwgMTUxMTMsIDE1MTE3LCAxNTEyMSwgCi0gICAgMTUxMjUsIDE1MTI5LCAxNTEzMywgMTUxMzcsIDE1MTQxLCAxNTE0NSwgMTUxNDksIDE1MTUzLCAxNTE1NywgMTUxNjEsIAotICAgIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODQsIDE1MTg4LCAxNTE5MSwgMTUxOTUsIDE1MTk5LCAKLSAgICAxNTIwMywgMTUyMDYsIDE1MjA5LCAxNTIxMiwgMTUyMTYsIDE1MjIwLCAxNTIyNCwgMTUyMjgsIDE1MjMyLCAxNTIzNiwgCi0gICAgMTUyNDAsIDE1MjQ0LCAxNTI0NywgMCwgMCwgMTUyNTEsIDE1MjU1LCAxNTI2MCwgMTUyNjQsIDE1MjY5LCAxNTI3MywgCi0gICAgMTUyNzgsIDE1MjgzLCAwLCAxNTI4OSwgMTUyOTMsIDE1Mjk4LCAwLCAxNTMwMywgMTUzMDcsIDE1MzEyLCAxNTMxNywgCi0gICAgMTUzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMiwgCi0gICAgMTUzMzcsIDE1MzQyLCAxNTM0NywgMCwgMCwgMTUzNTMsIDE1MzU3LCAxNTM2MCwgMTUzNjMsIDE1MzY2LCAxNTM2OSwgCi0gICAgMTUzNzIsIDE1Mzc1LCAxNTM3OCwgMTUzODEsIDE1Mzg0LCAxNTM4OCwgMTUzOTMsIDE1Mzk4LCAxNTQwNCwgMTU0MTAsIDAsIAotICAgIDAsIDAsIDE1NDE2LCAxNTQyMCwgMTU0MjYsIDE1NDMxLCAxNTQzNywgMTU0NDIsIDE1NDQ4LCAwLCAwLCAxNTQ1NCwgCi0gICAgMTU0NTgsIDAsIDE1NDYyLCAxNTQ2NiwgMTU0NzAsIDE1NDc0LCAxNTQ3OCwgMTU0ODIsIDE1NDg2LCAxNTQ5MCwgMTU0OTQsIAotICAgIDE1NDk4LCAxNTUwMiwgMTU1MDYsIDE1NTEwLCAxNTUxNCwgMTU1MTgsIDE1NTIyLCAxNTUyNiwgMTU1MzAsIDAsIDAsIDAsIAotICAgIDE1NTM0LCAxNTU0MCwgMTU1NDYsIDE1NTUyLCAxNTU1OCwgMTU1NjQsIDE1NTcwLCAxNTU3NiwgMTU1ODIsIDE1NTg4LCAKLSAgICAxNTU5NCwgMTU2MDAsIDE1NjA4LCAxNTYxNCwgMTU2MjAsIDE1NjI2LCAxNTYzMiwgMTU2MzgsIDE1NjQ0LCAxNTY1MCwgCi0gICAgMTU2NTYsIDE1NjYyLCAxNTY2OCwgMTU2NzQsIDAsIDE1NjgwLCAxNTY4NiwgMTU2OTIsIDE1Njk4LCAxNTcwNCwgMTU3MTAsIAotICAgIDE1NzE0LCAxNTcyMCwgMTU3MjQsIDAsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQ0LCAxNTc1MCwgMTU3NTYsIAotICAgIDE1NzYwLCAxNTc2NiwgMCwgMCwgMCwgMTU3NzAsIDAsIDAsIDAsIDAsIDE1Nzc0LCAxNTc3OSwgMTU3ODYsIDE1NzkzLCAKLSAgICAxNTgwMCwgMTU4MDcsIDAsIDE1ODE0LCAwLCAxNTgyMSwgMTU4MjYsIDE1ODMxLCAxNTgzOCwgMTU4NDUsIDE1ODU0LCAKLSAgICAxNTg2NSwgMTU4NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1ODc5LCAxNTg4NiwgMTU4OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1ODk4LCAxNTkwNCwgCi0gICAgMTU5MTAsIDE1OTE2LCAxNTkyMiwgMTU5MjgsIDE1OTM0LCAxNTk0MCwgMTU5NDYsIDE1OTUyLCAxNTk1OCwgMTU5NjQsIAotICAgIDE1OTcwLCAxNTk3NiwgMTU5ODIsIDE1OTg4LCAxNTk5NCwgMTYwMDAsIDE2MDA2LCAxNjAxMiwgMTYwMTgsIDE2MDI0LCAKLSAgICAxNjAzMCwgMTYwMzYsIDE2MDQyLCAxNjA0OCwgMTYwNTQsIDE2MDYwLCAxNjA2NiwgMTYwNzIsIDE2MDc4LCAxNjA4NCwgCi0gICAgMTYwOTAsIDE2MDk1LCAxNjEwMSwgMTYxMDcsIDE2MTExLCAxNjExNywgMTYxMjEsIDE2MTI3LCAxNjEzMywgMTYxMzksIAotICAgIDE2MTQ1LCAxNjE1MSwgMTYxNTcsIDE2MTYyLCAxNjE2OCwgMTYxNzIsIDE2MTc3LCAxNjE4MywgMTYxODksIDE2MTk1LCAKLSAgICAxNjIwMCwgMTYyMDYsIDE2MjEyLCAxNjIxOCwgMTYyMjMsIDE2MjI5LCAwLCAwLCAwLCAwLCAxNjIzMywgMTYyMzksIAotICAgIDE2MjQ0LCAxNjI1MCwgMTYyNTUsIDE2MjYzLCAxNjI3MSwgMTYyNzUsIDE2Mjc5LCAxNjI4MywgMTYyODksIDE2Mjk1LCAKLSAgICAxNjMwMSwgMTYzMDcsIDE2MzExLCAxNjMxNSwgMTYzMTksIDE2MzIzLCAxNjMyNywgMTYzMzAsIDE2MzMzLCAxNjMzNiwgCi0gICAgMTYzMzksIDE2MzQyLCAxNjM0NSwgMTYzNDgsIDE2MzUxLCAxNjM1NCwgMTYzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE2MzYyLCAxNjM2NywgMCwgMTYzNzQsIDAsIDAsIDE2MzgxLCAxNjM4NiwgMCwgMTYzOTEsIDAsIAotICAgIDAsIDE2Mzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQwMywgMTY0MDgsIDE2NDEyLCAxNjQxOSwgMCwgMTY0MjYsIDE2NDMxLCAKLSAgICAxNjQzNiwgMTY0NDEsIDE2NDQ4LCAxNjQ1NSwgMTY0NjIsIDAsIDE2NDY5LCAxNjQ3NCwgMTY0NzksIDAsIDE2NDg2LCAwLCAKLSAgICAxNjQ5MywgMCwgMCwgMTY0OTgsIDE2NTA1LCAwLCAxNjUxMiwgMTY1MTYsIDE2NTIzLCAxNjUyNywgMTY1MzIsIDE2NTQwLCAKLSAgICAxNjU0NiwgMTY1NTIsIDE2NTU3LCAxNjU2MywgMTY1NjksIDE2NTc1LCAxNjU4MCwgMCwgMTY1ODYsIDE2NTk0LCAxNjYwMSwgCi0gICAgMCwgMCwgMTY2MDgsIDE2NjEzLCAxNjYxOSwgMTY2MjQsIDE2NjMwLCAwLCAxNjYzNiwgMCwgMTY2NDIsIDE2NjQ5LCAKLSAgICAxNjY1NiwgMTY2NjMsIDE2NjcwLCAxNjY3NSwgMCwgMCwgMTY2NzksIDE2Njg0LCAxNjY4OCwgMTY2OTIsIDE2Njk2LCAKLSAgICAxNjcwMCwgMTY3MDQsIDE2NzA4LCAxNjcxMiwgMTY3MTYsIDAsIDAsIDE2NzIwLCAxNjcyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTY3MzIsIDE2NzM2LCAxNjc0NywgMTY3NjIsIDE2Nzc3LCAxNjc4NywgMTY3OTgsIDE2ODExLCAKLSAgICAxNjgyMiwgMTY4MjgsIDE2ODM2LCAxNjg0NiwgMTY4NTIsIDE2ODYwLCAxNjg2NCwgMTY4NzAsIDE2ODc2LCAxNjg4NCwgCi0gICAgMTY4OTQsIDE2OTAyLCAxNjkxNSwgMTY5MjEsIDE2OTI5LCAxNjkzNywgMTY5NDksIDE2OTU2LCAxNjk2NCwgMTY5NzIsIAotICAgIDE2OTgwLCAxNjk4OCwgMTY5OTYsIDE3MDA0LCAxNzAxNCwgMTcwMTgsIDE3MDIxLCAxNzAyNCwgMTcwMjcsIDE3MDMwLCAKLSAgICAxNzAzMywgMTcwMzYsIDE3MDM5LCAxNzA0MiwgMTcwNDUsIDE3MDQ5LCAxNzA1MywgMTcwNTcsIDE3MDYxLCAxNzA2NSwgCi0gICAgMTcwNjksIDE3MDczLCAxNzA3NywgMTcwODEsIDE3MDg2LCAxNzA5MiwgMTcxMDIsIDE3MTE2LCAxNzEyNiwgMTcxMzIsIAotICAgIDE3MTM4LCAxNzE0NiwgMTcxNTQsIDE3MTYyLCAxNzE3MCwgMTcxNzYsIDE3MTgyLCAxNzE4NSwgMTcxODksIDE3MTkzLCAKLSAgICAxNzE5NywgMTcyMDEsIDE3MjA1LCAxNzIwOSwgMCwgMTcyMTMsIDE3MjE3LCAxNzIyMSwgMTcyMjUsIDE3MjI5LCAxNzIzMywgCi0gICAgMTcyMzcsIDE3MjQxLCAxNzI0NSwgMTcyNDksIDE3MjUzLCAxNzI1NiwgMTcyNTksIDE3MjYzLCAxNzI2NywgMTcyNzEsIAotICAgIDE3Mjc0LCAxNzI3OCwgMTcyODIsIDE3Mjg2LCAxNzI5MCwgMTcyOTQsIDE3Mjk4LCAxNzMwMiwgMTczMDYsIDE3MzA5LCAKLSAgICAxNzMxMiwgMTczMTYsIDE3MzIwLCAxNzMyNCwgMTczMjgsIDE3MzMxLCAxNzMzNCwgMTczMzgsIDE3MzQzLCAxNzM0NywgMCwgCi0gICAgMCwgMCwgMCwgMTczNTEsIDE3MzU2LCAxNzM2MCwgMTczNjUsIDE3MzY5LCAxNzM3NCwgMTczNzksIDE3Mzg1LCAxNzM5MCwgCi0gICAgMTczOTYsIDE3NDAwLCAxNzQwNSwgMTc0MDksIDE3NDE0LCAxNzQyNCwgMTc0MzAsIDE3NDM2LCAxNzQ0MywgMTc0NTMsIAotICAgIDE3NDU5LCAxNzQ2MywgMTc0NjcsIDE3NDczLCAxNzQ3OSwgMTc0ODcsIDE3NDkzLCAxNzUwMSwgMTc1MDksIDE3NTE3LCAKLSAgICAxNzUyNywgMTc1MzUsIDE3NTQ1LCAxNzU1MCwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzQsIDE3NTgwLCAxNzU4NiwgMCwgCi0gICAgMTc1OTIsIDE3NTk4LCAxNzYwNCwgMTc2MTAsIDE3NjE2LCAxNzYyMiwgMTc2MjgsIDE3NjM0LCAxNzY0MCwgMTc2NDYsIAotICAgIDE3NjUyLCAxNzY1NywgMTc2NjIsIDE3NjY4LCAxNzY3NCwgMTc2ODAsIDE3Njg1LCAxNzY5MSwgMTc2OTcsIDE3NzAzLCAKLSAgICAxNzcwOSwgMTc3MTUsIDE3NzIxLCAxNzcyNywgMTc3MzMsIDE3NzM4LCAxNzc0MywgMTc3NDksIDE3NzU1LCAxNzc2MSwgCi0gICAgMTc3NjcsIDE3NzcyLCAxNzc3NywgMTc3ODMsIDE3NzkxLCAxNzc5OCwgMCwgMTc4MDUsIDE3ODEyLCAxNzgyNSwgMTc4MzIsIAotICAgIDE3ODM5LCAxNzg0NywgMTc4NTUsIDE3ODYxLCAxNzg2NywgMTc4NzMsIDE3ODgzLCAxNzg4OCwgMTc4OTQsIDE3OTA0LCAKLSAgICAxNzkxNCwgMCwgMTc5MjQsIDE3OTM0LCAxNzk0MiwgMTc5NTQsIDE3OTY2LCAxNzk3MiwgMTc5ODYsIDE4MDAxLCAxODAwNiwgCi0gICAgMTgwMTEsIDE4MDE5LCAxODAyNywgMTgwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MDQzLCAKLSAgICAxODA0NiwgMTgwNTAsIDE4MDU0LCAxODA1OCwgMTgwNjIsIDE4MDY2LCAxODA3MCwgMTgwNzQsIDE4MDc4LCAxODA4MiwgCi0gICAgMTgwODYsIDE4MDkwLCAxODA5NCwgMTgwOTgsIDE4MTAyLCAxODEwNiwgMTgxMTAsIDE4MTE0LCAxODExOCwgMTgxMjIsIAotICAgIDE4MTI1LCAxODEyOCwgMTgxMzIsIDE4MTM2LCAxODE0MCwgMTgxNDMsIDE4MTQ2LCAxODE0OSwgMTgxNTMsIDE4MTU3LCAKLSAgICAxODE2MSwgMTgxNjQsIDE4MTY4LCAxODE3MSwgMTgxNzYsIDE4MTc5LCAxODE4MywgMTgxODYsIDE4MTkwLCAxODE5MywgCi0gICAgMTgxOTgsIDE4MjAxLCAxODIwNSwgMTgyMTIsIDE4MjE3LCAxODIyMSwgMTgyMjYsIDE4MjMwLCAxODIzNSwgMTgyMzksIAotICAgIDE4MjQ0LCAxODI1MSwgMTgyNTcsIDE4MjYyLCAxODI2NiwgMTgyNzAsIDE4Mjc0LCAxODI3OCwgMTgyODIsIDE4Mjg4LCAKLSAgICAxODI5NCwgMTgzMDEsIDE4MzA3LCAxODMxMywgMTgzMTcsIDE4MzIwLCAxODMyMywgMTgzMjYsIDE4MzI5LCAxODMzMiwgCi0gICAgMTgzMzUsIDE4MzM4LCAxODM0MSwgMTgzNDQsIDE4MzUwLCAxODM1NCwgMTgzNTgsIDE4MzYyLCAxODM2NiwgMTgzNzAsIAotICAgIDE4Mzc0LCAxODM3OCwgMTgzODIsIDE4Mzg3LCAxODM5MSwgMTgzOTYsIDE4NDAxLCAxODQwNywgMTg0MTIsIDE4NDE4LCAKLSAgICAxODQyNCwgMTg0MzAsIDE4NDM2LCAxODQ0MiwgMTg0NTAsIDE4NDU4LCAxODQ2NywgMTg0NzUsIDE4NDg0LCAxODQ5MywgCi0gICAgMTg1MDQsIDE4NTE0LCAxODUyNCwgMTg1MzUsIDE4NTQ2LCAxODU1NiwgMTg1NjYsIDE4NTc2LCAxODU4NiwgMTg1OTYsIAotICAgIDE4NjA2LCAxODYxNiwgMTg2MjYsIDE4NjM0LCAxODY0MSwgMTg2NDcsIDE4NjU0LCAxODY1OSwgMTg2NjUsIDE4NjcxLCAKLSAgICAxODY3NywgMTg2ODMsIDE4Njg5LCAxODY5NSwgMTg3MDAsIDE4NzA2LCAxODcxMiwgMTg3MTgsIDE4NzI0LCAxODcyOSwgCi0gICAgMTg3MzgsIDE4NzQ1LCAxODc1MSwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5MCwgMTg3OTgsIAotICAgIDE4ODA2LCAxODgxNiwgMTg4MjQsIDE4ODMyLCAxODgzOCwgMTg4NDMsIDE4ODQ4LCAxODg1MywgMTg4NTgsIDE4ODYzLCAKLSAgICAxODg2OCwgMTg4NzMsIDE4ODc4LCAxODg4MywgMTg4ODksIDE4ODk1LCAxODkwMSwgMTg5MDgsIDE4OTEzLCAxODkxOSwgCi0gICAgMTg5MjQsIDE4OTI5LCAxODkzNCwgMTg5MzksIDE4OTQ0LCAxODk0OSwgMTg5NTQsIDE4OTU5LCAxODk2NCwgMTg5NjksIAotICAgIDE4OTc0LCAxODk3OSwgMTg5ODQsIDE4OTg5LCAxODk5NCwgMTg5OTksIDE5MDA0LCAxOTAwOSwgMTkwMTQsIDE5MDE5LCAKLSAgICAxOTAyNCwgMTkwMjksIDE5MDM0LCAxOTAzOSwgMTkwNDQsIDE5MDQ5LCAxOTA1NCwgMTkwNTksIDE5MDY0LCAxOTA2OSwgCi0gICAgMTkwNzQsIDE5MDc5LCAxOTA4NCwgMTkwODksIDE5MDk0LCAxOTA5OSwgMTkxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE5MTA5LCAxOTExMywgMTkxMTcsIDE5MTIxLCAxOTEyNSwgMTkxMjksIDE5MTMzLCAxOTEzNywgMTkxNDEsIAotICAgIDE5MTQ1LCAxOTE0OSwgMTkxNTMsIDE5MTU3LCAxOTE2MSwgMTkxNjUsIDE5MTY5LCAxOTE3MywgMTkxNzcsIDE5MTgxLCAKLSAgICAxOTE4NSwgMTkxODksIDE5MTkzLCAxOTE5NywgMTkyMDEsIDE5MjA1LCAxOTIwOSwgMTkyMTMsIDE5MjE3LCAxOTIyMSwgCi0gICAgMTkyMjUsIDE5MjI5LCAxOTIzMywgMTkyMzcsIDE5MjQxLCAxOTI0NSwgMTkyNDksIDE5MjUzLCAxOTI1NywgMTkyNjEsIAotICAgIDE5MjY1LCAxOTI2OSwgMTkyNzMsIDE5Mjc5LCAxOTI4MywgMTkyODgsIDAsIDAsIDAsIDE5MjkzLCAxOTI5NywgMTkzMDEsIAotICAgIDE5MzA1LCAxOTMwOSwgMTkzMTMsIDE5MzE3LCAxOTMyMSwgMTkzMjUsIDE5MzI5LCAxOTMzMywgMTkzMzcsIDE5MzQxLCAKLSAgICAxOTM0NSwgMTkzNDksIDE5MzUzLCAxOTM1NywgMTkzNjEsIDE5MzY1LCAxOTM2OSwgMTkzNzMsIDE5Mzc3LCAxOTM4MSwgCi0gICAgMTkzODUsIDE5Mzg5LCAxOTM5MywgMTkzOTcsIDE5NDAxLCAxOTQwNSwgMTk0MDksIDE5NDEzLCAxOTQxNywgMTk0MjEsIAotICAgIDE5NDI1LCAxOTQyOSwgMTk0MzMsIDE5NDM3LCAxOTQ0MSwgMTk0NDUsIDE5NDQ5LCAxOTQ1MywgMTk0NTcsIDE5NDYxLCAKLSAgICAxOTQ2NSwgMTk0NjksIDE5NDczLCAxOTQ3NywgMTk0ODEsIDE5NDg1LCAxOTQ4OSwgMTk0OTMsIDE5NDk3LCAxOTUwMSwgCi0gICAgMTk1MDUsIDE5NTA5LCAxOTUxMywgMTk1MTcsIDE5NTIxLCAxOTUyNSwgMTk1MjksIDE5NTMzLCAxOTUzNywgMTk1NDEsIAotICAgIDE5NTQ1LCAxOTU0OSwgMTk1NTMsIDE5NTU3LCAxOTU2MSwgMTk1NjUsIDE5NTY5LCAxOTU3MywgMTk1NzcsIDE5NTgxLCAKLSAgICAxOTU4NSwgMTk1ODksIDE5NTkzLCAxOTU5NywgMTk2MDEsIDE5NjA1LCAxOTYwOSwgMTk2MTMsIDE5NjE3LCAxOTYyMSwgCi0gICAgMTk2MjUsIDE5NjI5LCAxOTYzMywgMTk2MzcsIDE5NjQxLCAxOTY0NSwgMTk2NDksIDE5NjUzLCAxOTY1NywgMTk2NjEsIAotICAgIDE5NjY1LCAxOTY2OSwgMTk2NzMsIDE5Njc3LCAxOTY4MSwgMTk2ODQsIDE5Njg4LCAxOTY5MSwgMTk2OTUsIDE5Njk5LCAKLSAgICAxOTcwMiwgMTk3MDYsIDE5NzEwLCAxOTcxMywgMTk3MTcsIDE5NzIxLCAxOTcyNSwgMTk3MjksIDE5NzMyLCAxOTczNiwgCi0gICAgMTk3NDAsIDE5NzQ0LCAxOTc0OCwgMTk3NTIsIDE5NzU2LCAxOTc1OSwgMTk3NjMsIDE5NzY3LCAxOTc3MSwgMTk3NzUsIAotICAgIDE5Nzc5LCAxOTc4MywgMTk3ODcsIDE5NzkxLCAxOTc5NSwgMTk3OTksIDE5ODAzLCAxOTgwNywgMTk4MTEsIDE5ODE1LCAKLSAgICAxOTgxOSwgMTk4MjMsIDE5ODI3LCAxOTgzMSwgMTk4MzUsIDE5ODM5LCAxOTg0MywgMTk4NDcsIDE5ODUxLCAxOTg1NSwgCi0gICAgMTk4NTksIDE5ODYzLCAxOTg2NywgMTk4NzEsIDE5ODc1LCAxOTg3OSwgMTk4ODMsIDE5ODg3LCAxOTg5MSwgMTk4OTUsIAotICAgIDE5ODk5LCAxOTkwMywgMTk5MDcsIDE5OTExLCAxOTkxNSwgMTk5MTksIDE5OTIzLCAxOTkyNywgMTk5MzEsIDE5OTM1LCAKLSAgICAxOTkzOSwgMTk5NDMsIDE5OTQ3LCAxOTk1MSwgMTk5NTUsIDE5OTU5LCAxOTk2MywgMTk5NjcsIDE5OTcxLCAxOTk3NSwgCi0gICAgMTk5NzksIDE5OTgzLCAxOTk4NywgMTk5OTEsIDE5OTk1LCAxOTk5OSwgMjAwMDMsIDIwMDA3LCAyMDAxMSwgMjAwMTUsIAotICAgIDIwMDE5LCAyMDAyMywgMjAwMjcsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIDIwMDU1LCAKLSAgICAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAyMDA5NSwgCi0gICAgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgMjAxMzUsIAotICAgIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIDIwMTc1LCAKLSAgICAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMTk5LCAyMDIwMywgMjAyMDcsIDIwMjExLCAyMDIxNSwgCi0gICAgMjAyMTksIDIwMjIzLCAyMDIyNywgMjAyMzEsIDIwMjM1LCAyMDIzOSwgMjAyNDMsIDIwMjQ3LCAyMDI1MSwgMjAyNTUsIAotICAgIDIwMjU5LCAyMDI2MywgMjAyNjcsIDIwMjcxLCAyMDI3NSwgMjAyNzksIDIwMjgzLCAyMDI4NywgMjAyOTEsIDIwMjk1LCAKLSAgICAyMDI5OSwgMjAzMDMsIDIwMzA3LCAyMDMxMSwgMjAzMTQsIDIwMzE4LCAyMDMyMiwgMjAzMjYsIDIwMzMwLCAyMDMzNCwgCi0gICAgMjAzMzgsIDIwMzQyLCAyMDM0NiwgMjAzNTAsIDIwMzU0LCAyMDM1OCwgMjAzNjIsIDIwMzY2LCAyMDM3MCwgMjAzNzQsIAotICAgIDIwMzc4LCAyMDM4MiwgMjAzODYsIDIwMzkwLCAyMDM5NCwgMjAzOTgsIDIwNDAyLCAyMDQwNiwgMjA0MDksIDIwNDEzLCAKLSAgICAyMDQxNywgMjA0MjEsIDIwNDI1LCAyMDQyOSwgMjA0MzMsIDIwNDM3LCAyMDQ0MSwgMjA0NDUsIDIwNDQ5LCAyMDQ1MywgCi0gICAgMjA0NTcsIDIwNDYxLCAyMDQ2NSwgMjA0NjksIDIwNDcyLCAyMDQ3NiwgMjA0ODAsIDIwNDg0LCAyMDQ4OCwgMjA0OTIsIAotICAgIDIwNDk2LCAyMDUwMCwgMjA1MDQsIDIwNTA4LCAyMDUxMiwgMjA1MTYsIDIwNTIwLCAyMDUyNCwgMjA1MjgsIDIwNTMyLCAKLSAgICAyMDUzNiwgMjA1NDAsIDIwNTQ0LCAyMDU0OCwgMjA1NTIsIDIwNTU2LCAyMDU2MCwgMjA1NjQsIDIwNTY4LCAyMDU3MiwgCi0gICAgMjA1NzYsIDIwNTgwLCAyMDU4NCwgMjA1ODgsIDIwNTkyLCAyMDU5NiwgMCwgMjA2MDAsIDIwNjA0LCAyMDYwOCwgMjA2MTIsIAotICAgIDAsIDAsIDIwNjE2LCAyMDYyMCwgMjA2MjQsIDIwNjI4LCAyMDYzMiwgMjA2MzYsIDIwNjQwLCAwLCAyMDY0NCwgMCwgCi0gICAgMjA2NDgsIDIwNjUyLCAyMDY1NiwgMjA2NjAsIDAsIDAsIDIwNjY0LCAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgCi0gICAgMjA2ODQsIDIwNjg4LCAyMDY5MiwgMjA2OTYsIDIwNzAwLCAyMDcwNCwgMjA3MDgsIDIwNzEyLCAyMDcxNiwgMjA3MjAsIAotICAgIDIwNzI0LCAyMDcyOCwgMjA3MzIsIDIwNzM2LCAyMDc0MCwgMjA3NDQsIDIwNzQ4LCAyMDc1MiwgMjA3NTUsIDIwNzU5LCAKLSAgICAyMDc2MywgMjA3NjcsIDIwNzcxLCAyMDc3NSwgMjA3NzksIDIwNzgzLCAyMDc4NywgMjA3OTEsIDIwNzk1LCAyMDc5OSwgCi0gICAgMjA4MDMsIDIwODA3LCAyMDgxMSwgMjA4MTUsIDIwODE5LCAyMDgyMywgMCwgMjA4MjcsIDIwODMxLCAyMDgzNSwgMjA4MzksIAotICAgIDAsIDAsIDIwODQzLCAyMDg0NiwgMjA4NTAsIDIwODU0LCAyMDg1OCwgMjA4NjIsIDIwODY2LCAyMDg3MCwgMjA4NzQsIAotICAgIDIwODc4LCAyMDg4MiwgMjA4ODYsIDIwODkwLCAyMDg5NCwgMjA4OTgsIDIwOTAyLCAyMDkwNiwgMjA5MTEsIDIwOTE2LCAKLSAgICAyMDkyMSwgMjA5MjcsIDIwOTMzLCAyMDkzOCwgMjA5NDMsIDIwOTQ5LCAyMDk1MiwgMjA5NTYsIDIwOTYwLCAyMDk2NCwgCi0gICAgMjA5NjgsIDIwOTcyLCAyMDk3NiwgMjA5ODAsIDAsIDIwOTg0LCAyMDk4OCwgMjA5OTIsIDIwOTk2LCAwLCAwLCAyMTAwMCwgCi0gICAgMjEwMDQsIDIxMDA4LCAyMTAxMiwgMjEwMTYsIDIxMDIwLCAyMTAyNCwgMCwgMjEwMjgsIDAsIDIxMDMyLCAyMTAzNiwgCi0gICAgMjEwNDAsIDIxMDQ0LCAwLCAwLCAyMTA0OCwgMjEwNTIsIDIxMDU2LCAyMTA2MCwgMjEwNjQsIDIxMDY4LCAyMTA3MiwgCi0gICAgMjEwNzYsIDIxMDgwLCAyMTA4NSwgMjEwOTAsIDIxMDk1LCAyMTEwMSwgMjExMDcsIDIxMTEyLCAwLCAyMTExNywgMjExMjEsIAotICAgIDIxMTI1LCAyMTEyOSwgMjExMzMsIDIxMTM3LCAyMTE0MSwgMjExNDUsIDIxMTQ5LCAyMTE1MywgMjExNTcsIDIxMTYxLCAKLSAgICAyMTE2NSwgMjExNjksIDIxMTczLCAyMTE3NywgMjExODEsIDIxMTg0LCAyMTE4OCwgMjExOTIsIDIxMTk2LCAyMTIwMCwgCi0gICAgMjEyMDQsIDIxMjA4LCAyMTIxMiwgMjEyMTYsIDIxMjIwLCAyMTIyNCwgMjEyMjgsIDIxMjMyLCAyMTIzNiwgMjEyNDAsIAotICAgIDIxMjQ0LCAyMTI0OCwgMjEyNTIsIDIxMjU2LCAyMTI2MCwgMjEyNjQsIDIxMjY4LCAyMTI3MiwgMjEyNzYsIDIxMjgwLCAKLSAgICAyMTI4NCwgMjEyODgsIDIxMjkyLCAyMTI5NiwgMjEzMDAsIDIxMzA0LCAyMTMwOCwgMjEzMTIsIDIxMzE2LCAyMTMyMCwgCi0gICAgMjEzMjQsIDIxMzI4LCAyMTMzMiwgMjEzMzYsIDIxMzQwLCAwLCAyMTM0NCwgMjEzNDgsIDIxMzUyLCAyMTM1NiwgMCwgMCwgCi0gICAgMjEzNjAsIDIxMzY0LCAyMTM2OCwgMjEzNzIsIDIxMzc2LCAyMTM4MCwgMjEzODQsIDIxMzg4LCAyMTM5MiwgMjEzOTYsIAotICAgIDIxNDAwLCAyMTQwNCwgMjE0MDgsIDIxNDEyLCAyMTQxNiwgMjE0MjAsIDIxNDI0LCAyMTQyOCwgMjE0MzIsIDIxNDM2LCAKLSAgICAyMTQ0MCwgMjE0NDQsIDIxNDQ4LCAyMTQ1MiwgMjE0NTYsIDIxNDYwLCAyMTQ2NCwgMjE0NjgsIDIxNDcyLCAyMTQ3NiwgCi0gICAgMjE0ODAsIDIxNDg0LCAyMTQ4OCwgMjE0OTIsIDIxNDk2LCAyMTUwMCwgMjE1MDQsIDIxNTA4LCAyMTUxMiwgMjE1MTYsIAotICAgIDIxNTIwLCAyMTUyNCwgMjE1MjgsIDIxNTMyLCAyMTUzNiwgMjE1NDAsIDIxNTQ0LCAyMTU0OCwgMjE1NTIsIDIxNTU2LCAKLSAgICAyMTU2MCwgMjE1NjQsIDIxNTY4LCAyMTU3MiwgMjE1NzYsIDIxNTgwLCAyMTU4NCwgMjE1ODcsIDIxNTkxLCAyMTU5NSwgCi0gICAgMjE1OTksIDIxNjAzLCAyMTYwNywgMjE2MTEsIDIxNjE1LCAyMTYxOSwgMjE2MjMsIDAsIDAsIDIxNjI3LCAyMTYzNiwgCi0gICAgMjE2NDIsIDIxNjQ3LCAyMTY1MSwgMjE2NTQsIDIxNjU5LCAyMTY2MiwgMjE2NjUsIDIxNjY4LCAyMTY3MywgMjE2NzcsIAotICAgIDIxNjgyLCAyMTY4NSwgMjE2ODgsIDIxNjkxLCAyMTY5NCwgMjE2OTcsIDIxNzAwLCAyMTcwMywgMjE3MDYsIDIxNzA5LCAKLSAgICAyMTcxMywgMjE3MTcsIDIxNzIxLCAyMTcyNSwgMjE3MjksIDIxNzMzLCAyMTczNywgMjE3NDEsIDIxNzQ1LCAyMTc0OSwgMCwgCi0gICAgMCwgMCwgMjE3NTUsIDIxNzYxLCAyMTc2NSwgMjE3NjksIDIxNzczLCAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgCi0gICAgMjE3OTcsIDIxODAxLCAyMTgwNSwgMjE4MDksIDIxODE1LCAyMTgxOSwgMjE4MjMsIDIxODI3LCAyMTgzMywgMjE4MzksIAotICAgIDIxODQ1LCAyMTg1MywgMjE4NTksIDIxODY1LCAyMTg3MSwgMjE4NzcsIDIxODgzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTg4OSwgCi0gICAgMjE4OTIsIDIxODk1LCAyMTg5OCwgMjE5MDEsIDIxOTA0LCAyMTkwOCwgMjE5MTIsIDIxOTE1LCAyMTkxOSwgMjE5MjMsIAotICAgIDIxOTI3LCAyMTkzMSwgMjE5MzUsIDIxOTM4LCAyMTk0MiwgMjE5NDYsIDIxOTUwLCAyMTk1NCwgMjE5NTgsIDIxOTYyLCAKLSAgICAyMTk2NiwgMjE5NzAsIDIxOTc0LCAyMTk3OCwgMjE5ODIsIDIxOTg1LCAyMTk4OSwgMjE5OTMsIDIxOTk3LCAyMjAwMSwgCi0gICAgMjIwMDQsIDIyMDA4LCAyMjAxMiwgMjIwMTYsIDIyMDIwLCAyMjAyNCwgMjIwMjgsIDIyMDMyLCAyMjAzNiwgMjIwNDAsIAotICAgIDIyMDQ0LCAyMjA0OCwgMjIwNTIsIDIyMDU2LCAyMjA2MCwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAKLSAgICAyMjA4MywgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTksIDIyMTAzLCAyMjEwNywgMjIxMTEsIDIyMTE1LCAyMjExOSwgCi0gICAgMjIxMjMsIDIyMTI3LCAyMjEzMSwgMjIxMzUsIDIyMTM5LCAyMjE0MywgMjIxNDcsIDIyMTUxLCAyMjE1NSwgMjIxNTksIAotICAgIDIyMTYzLCAyMjE2NywgMjIxNzEsIDIyMTc1LCAyMjE3OSwgMjIxODMsIDIyMTg3LCAyMjE5MSwgMjIxOTUsIDIyMTk4LCAKLSAgICAyMjIwMiwgMjIyMDYsIDIyMjEwLCAyMjIxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyMTgsIAotICAgIDIyMjIyLCAyMjIyNSwgMjIyMjksIDIyMjMyLCAyMjIzNiwgMjIyMzksIDIyMjQzLCAyMjI0OSwgMjIyNTQsIDIyMjU4LCAKLSAgICAyMjI2MSwgMjIyNjUsIDIyMjY5LCAyMjI3NCwgMjIyNzgsIDIyMjgzLCAyMjI4NywgMjIyOTIsIDIyMjk2LCAyMjMwMSwgCi0gICAgMjIzMDUsIDIyMzEwLCAyMjMxNiwgMjIzMjAsIDIyMzI1LCAyMjMyOSwgMjIzMzQsIDIyMzQwLCAyMjM0NCwgMjIzNTAsIAotICAgIDIyMzU2LCAyMjM2MCwgMjIzNjUsIDIyMzczLCAyMjM4MSwgMjIzODgsIDIyMzkzLCAyMjM5OCwgMjI0MDcsIDIyNDE0LCAKLSAgICAyMjQyMSwgMjI0MjYsIDIyNDMyLCAyMjQzNiwgMjI0NDAsIDIyNDQ0LCAyMjQ0OCwgMjI0NTIsIDIyNDU2LCAyMjQ2MCwgCi0gICAgMjI0NjQsIDIyNDY4LCAyMjQ3MiwgMjI0NzgsIDIyNDgzLCAyMjQ4OCwgMjI0OTEsIDIyNDk1LCAyMjQ5OSwgMjI1MDQsIAotICAgIDIyNTA4LCAyMjUxMywgMjI1MTcsIDIyNTIyLCAyMjUyNiwgMjI1MzEsIDIyNTM1LCAyMjU0MCwgMjI1NDQsIDIyNTQ5LCAKLSAgICAyMjU1MywgMjI1NTgsIDIyNTY0LCAyMjU2OCwgMjI1NzMsIDIyNTc4LCAyMjU4MiwgMjI1ODYsIDIyNTkwLCAyMjU5NCwgCi0gICAgMjI1OTcsIDIyNjAxLCAyMjYwNywgMjI2MTIsIDIyNjE3LCAyMjYyMSwgMjI2MjUsIDIyNjI5LCAyMjYzNCwgMjI2MzgsIAotICAgIDIyNjQzLCAyMjY0NywgMjI2NTIsIDIyNjU1LCAyMjY1OSwgMjI2NjMsIDIyNjY4LCAyMjY3MiwgMjI2NzcsIDIyNjgxLCAKLSAgICAyMjY4NiwgMjI2OTIsIDIyNjk2LCAyMjcwMCwgMjI3MDQsIDIyNzA4LCAyMjcxMiwgMjI3MTYsIDIyNzIwLCAyMjcyNCwgCi0gICAgMjI3MjgsIDIyNzMyLCAyMjczNiwgMjI3NDIsIDIyNzQ1LCAyMjc0OSwgMjI3NTMsIDIyNzU4LCAyMjc2MiwgMjI3NjcsIAotICAgIDIyNzcxLCAyMjc3NiwgMjI3ODAsIDIyNzg1LCAyMjc4OSwgMjI3OTQsIDIyNzk4LCAyMjgwMywgMjI4MDcsIDIyODEyLCAKLSAgICAyMjgxOCwgMjI4MjIsIDIyODI2LCAyMjgzMiwgMjI4MzgsIDIyODQ0LCAyMjg1MCwgMjI4NTQsIDIyODU4LCAyMjg2MiwgCi0gICAgMjI4NjYsIDIyODcwLCAyMjg3NCwgMjI4ODAsIDIyODg0LCAyMjg4OCwgMjI4OTIsIDIyODk3LCAyMjkwMSwgMjI5MDYsIAotICAgIDIyOTEwLCAyMjkxNSwgMjI5MTksIDIyOTI0LCAyMjkyOCwgMjI5MzMsIDIyOTM3LCAyMjk0MiwgMjI5NDYsIDIyOTUxLCAKLSAgICAyMjk1NywgMjI5NjEsIDIyOTY3LCAyMjk3MSwgMjI5NzUsIDIyOTc5LCAyMjk4MywgMjI5ODcsIDIyOTkxLCAyMjk5NywgCi0gICAgMjMwMDAsIDIzMDA0LCAyMzAwOCwgMjMwMTMsIDIzMDE3LCAyMzAyMiwgMjMwMjYsIDIzMDMxLCAyMzAzNSwgMjMwNDAsIAotICAgIDIzMDQ0LCAyMzA0OSwgMjMwNTMsIDIzMDU4LCAyMzA2MiwgMjMwNjcsIDIzMDczLCAyMzA3NiwgMjMwODAsIDIzMDg0LCAKLSAgICAyMzA4OSwgMjMwOTQsIDIzMDk4LCAyMzEwMiwgMjMxMDYsIDIzMTEwLCAyMzExNCwgMjMxMTgsIDIzMTI0LCAyMzEyNywgCi0gICAgMjMxMzEsIDIzMTM1LCAyMzE0MCwgMjMxNDQsIDIzMTQ5LCAyMzE1MywgMjMxNTgsIDIzMTY0LCAyMzE2NywgMjMxNzIsIAotICAgIDIzMTc2LCAyMzE4MCwgMjMxODQsIDIzMTg4LCAyMzE5MiwgMjMxOTYsIDIzMjAwLCAyMzIwNiwgMjMyMTAsIDIzMjE0LCAKLSAgICAyMzIxOCwgMjMyMjMsIDIzMjI3LCAyMzIzMiwgMjMyMzYsIDIzMjQxLCAyMzI0NSwgMjMyNTAsIDIzMjU0LCAyMzI1OSwgCi0gICAgMjMyNjMsIDIzMjY4LCAyMzI3MiwgMjMyNzcsIDIzMjgwLCAyMzI4NCwgMjMyODgsIDIzMjkyLCAyMzI5NiwgMjMzMDAsIAotICAgIDIzMzA0LCAyMzMwOCwgMjMzMTIsIDIzMzE4LCAyMzMyMiwgMjMzMjYsIDIzMzMwLCAyMzMzNSwgMjMzMzksIDIzMzQ0LCAKLSAgICAyMzM0OCwgMjMzNTMsIDIzMzU3LCAyMzM2MiwgMjMzNjYsIDIzMzcxLCAyMzM3NSwgMjMzODAsIDIzMzg0LCAyMzM4OSwgCi0gICAgMjMzOTUsIDIzMzk4LCAyMzQwMywgMjM0MDcsIDIzNDEyLCAyMzQxOCwgMjM0MjQsIDIzNDMwLCAyMzQzNiwgMjM0NDIsIAotICAgIDIzNDQ4LCAyMzQ1NCwgMjM0NTgsIDIzNDYyLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAyMzQ3OCwgMjM0ODIsIDIzNDg2LCAKLSAgICAyMzQ5MSwgMjM0OTUsIDIzNTAwLCAyMzUwNCwgMjM1MDksIDIzNTEzLCAyMzUxOCwgMjM1MjIsIDIzNTI3LCAyMzUzMSwgCi0gICAgMjM1MzYsIDIzNTQwLCAyMzU0NSwgMjM1NDksIDIzNTUzLCAyMzU1NywgMjM1NjEsIDIzNTY1LCAyMzU2OSwgMjM1NzMsIAotICAgIDIzNTc5LCAyMzU4MiwgMjM1ODYsIDIzNTkwLCAyMzU5NSwgMjM1OTksIDIzNjA0LCAyMzYwOCwgMjM2MTMsIDIzNjE3LCAKLSAgICAyMzYyMiwgMjM2MjYsIDIzNjMxLCAyMzYzNSwgMjM2NDAsIDIzNjQ0LCAyMzY0OSwgMjM2NTUsIDIzNjU5LCAyMzY2NSwgCi0gICAgMjM2NzAsIDIzNjc2LCAyMzY4MCwgMjM2ODYsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgMjM3MTEsIAotICAgIDIzNzE2LCAyMzcxOSwgMjM3MjMsIDIzNzI4LCAyMzczMiwgMjM3MzcsIDIzNzQwLCAyMzc0NCwgMjM3NDgsIDIzNzUyLCAKLSAgICAyMzc1NiwgMjM3NjAsIDIzNzY0LCAyMzc2OCwgMjM3NzIsIDIzNzc2LCAyMzc4MCwgMjM3ODQsIDIzNzg5LCAyMzc5MywgCi0gICAgMjM3OTcsIDIzODAzLCAyMzgwNywgMjM4MTMsIDIzODE3LCAyMzgyMywgMjM4MjcsIDIzODMxLCAyMzgzNSwgMjM4MzksIAotICAgIDIzODQzLCAyMzg0OCwgMjM4NTIsIDIzODU2LCAyMzg2MCwgMjM4NjQsIDIzODY4LCAyMzg3MiwgMjM4NzYsIDIzODgwLCAKLSAgICAyMzg4NCwgMjM4ODgsIDIzODk0LCAyMzkwMCwgMjM5MDYsIDIzOTEyLCAyMzkxOCwgMjM5MjMsIDIzOTI5LCAyMzkzNSwgCi0gICAgMjM5NDEsIDIzOTQ1LCAyMzk0OSwgMjM5NTMsIDIzOTU3LCAyMzk2MSwgMjM5NjUsIDIzOTY5LCAyMzk3MywgMjM5NzcsIAotICAgIDIzOTgxLCAyMzk4NSwgMjM5ODksIDIzOTkzLCAyMzk5OCwgMjQwMDMsIDI0MDA4LCAyNDAxMiwgMjQwMTYsIDI0MDIwLCAKLSAgICAyNDAyNCwgMjQwMjgsIDI0MDMyLCAyNDAzNiwgMjQwNDAsIDI0MDQ0LCAyNDA0OCwgMjQwNTQsIDI0MDYwLCAyNDA2NiwgCi0gICAgMjQwNzIsIDI0MDc4LCAyNDA4NCwgMjQwOTAsIDI0MDk2LCAyNDEwMiwgMjQxMDYsIDI0MTEwLCAyNDExNCwgMjQxMTgsIAotICAgIDI0MTIyLCAyNDEyNiwgMjQxMzAsIDI0MTM2LCAyNDE0MiwgMjQxNDgsIDI0MTU0LCAyNDE2MCwgMjQxNjYsIDI0MTcyLCAKLSAgICAyNDE3OCwgMjQxODQsIDI0MTg5LCAyNDE5NCwgMjQxOTksIDI0MjA0LCAyNDIxMCwgMjQyMTYsIDI0MjIyLCAyNDIyOCwgCi0gICAgMjQyMzQsIDI0MjQwLCAyNDI0NiwgMjQyNTEsIDI0MjU3LCAyNDI2MywgMjQyNjksIDI0Mjc0LCAyNDI4MCwgMjQyODYsIAotICAgIDI0MjkyLCAyNDI5NywgMjQzMDIsIDI0MzA3LCAyNDMxMiwgMjQzMTcsIDI0MzIyLCAyNDMyNywgMjQzMzIsIDI0MzM3LCAKLSAgICAyNDM0MiwgMjQzNDcsIDI0MzUyLCAyNDM1NiwgMjQzNjEsIDI0MzY2LCAyNDM3MSwgMjQzNzYsIDI0MzgxLCAyNDM4NiwgCi0gICAgMjQzOTEsIDI0Mzk2LCAyNDQwMSwgMjQ0MDYsIDI0NDExLCAyNDQxNiwgMjQ0MjEsIDI0NDI2LCAyNDQzMSwgMjQ0MzYsIAotICAgIDI0NDQxLCAyNDQ0NiwgMjQ0NTEsIDI0NDU2LCAyNDQ2MSwgMjQ0NjYsIDI0NDcxLCAyNDQ3NiwgMjQ0ODEsIDI0NDg2LCAKLSAgICAyNDQ5MSwgMjQ0OTYsIDI0NTAxLCAyNDUwNSwgMjQ1MTAsIDI0NTE1LCAyNDUyMCwgMjQ1MjUsIDI0NTMwLCAyNDUzNSwgCi0gICAgMjQ1NDAsIDI0NTQ1LCAyNDU1MCwgMjQ1NTUsIDI0NTYwLCAyNDU2NSwgMjQ1NzAsIDI0NTc1LCAyNDU4MCwgMjQ1ODUsIAotICAgIDI0NTkwLCAyNDU5NSwgMjQ2MDAsIDI0NjA1LCAyNDYxMCwgMjQ2MTUsIDI0NjIwLCAyNDYyNSwgMjQ2MzAsIDI0NjM0LCAKLSAgICAyNDYzOSwgMjQ2NDQsIDI0NjQ5LCAyNDY1NCwgMjQ2NTksIDI0NjYzLCAyNDY2OCwgMjQ2NzMsIDI0Njc4LCAyNDY4MywgCi0gICAgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDMsIDI0NzA4LCAyNDcxMywgMjQ3MTgsIDI0NzIzLCAyNDcyOSwgMjQ3MzQsIAotICAgIDI0NzM5LCAyNDc0NCwgMjQ3NDksIDI0NzU0LCAyNDc1OSwgMjQ3NjQsIDI0NzY5LCAyNDc3NCwgMjQ3NzksIDI0Nzg0LCAKLSAgICAyNDc4OSwgMjQ3OTQsIDI0Nzk5LCAyNDgwNCwgMjQ4MDksIDI0ODE0LCAyNDgxOSwgMjQ4MjQsIDI0ODI5LCAyNDgzNCwgCi0gICAgMjQ4MzksIDI0ODQ0LCAyNDg0OSwgMjQ4NTQsIDI0ODU5LCAyNDg2NCwgMjQ4NjksIDI0ODc0LCAyNDg3OSwgMjQ4ODQsIAotICAgIDI0ODg5LCAyNDg5NCwgMjQ4OTksIDI0OTA0LCAyNDkwOSwgMjQ5MTQsIDI0OTE5LCAyNDkyNCwgMjQ5MjksIDI0OTM0LCAKLSAgICAyNDkzOSwgMjQ5NDQsIDI0OTQ5LCAyNDk1NSwgMjQ5NjAsIDI0OTY1LCAyNDk3MCwgMjQ5NzUsIDI0OTgwLCAyNDk4NSwgCi0gICAgMjQ5OTAsIDI0OTk1LCAyNTAwMCwgMjUwMDUsIDI1MDEwLCAyNTAxNSwgMjUwMjAsIDI1MDI1LCAyNTAzMCwgMjUwMzUsIAotICAgIDI1MDQwLCAyNTA0NSwgMjUwNTAsIDI1MDU1LCAyNTA2MCwgMjUwNjUsIDI1MDcwLCAyNTA3NSwgMjUwODAsIDI1MDg1LCAKLSAgICAyNTA5MCwgMjUwOTUsIDI1MTAwLCAyNTEwNSwgMjUxMTAsIDI1MTE1LCAyNTEyMCwgMjUxMjUsIDI1MTMwLCAyNTEzNSwgCi0gICAgMjUxNDAsIDI1MTQ1LCAyNTE1MSwgMjUxNTUsIDI1MTU5LCAyNTE2MywgMjUxNjcsIDI1MTcxLCAyNTE3NSwgMjUxNzksIAotICAgIDI1MTgzLCAyNTE4OSwgMjUxOTUsIDI1MjAxLCAyNTIwNywgMjUyMTMsIDI1MjE5LCAyNTIyNSwgMjUyMzIsIDI1MjM4LCAKLSAgICAyNTI0MywgMjUyNDgsIDI1MjUzLCAyNTI1OCwgMjUyNjMsIDI1MjY4LCAyNTI3MywgMjUyNzgsIDI1MjgzLCAyNTI4OCwgCi0gICAgMjUyOTMsIDI1Mjk4LCAyNTMwMywgMjUzMDgsIDI1MzEzLCAyNTMxOCwgMjUzMjMsIDI1MzI4LCAyNTMzMywgMjUzMzgsIAotICAgIDI1MzQzLCAyNTM0OCwgMjUzNTMsIDI1MzU4LCAyNTM2MywgMjUzNjgsIDI1MzczLCAyNTM3OCwgMCwgMCwgMCwgMjUzODUsIAotICAgIDI1Mzk1LCAyNTM5OSwgMjU0MDYsIDI1NDEwLCAyNTQxNCwgMjU0MTgsIDI1NDI2LCAyNTQzMCwgMjU0MzUsIDI1NDQwLCAKLSAgICAyNTQ0NSwgMjU0NDksIDI1NDU0LCAyNTQ1OSwgMjU0NjIsIDI1NDY2LCAyNTQ3MCwgMjU0NzksIDI1NDgzLCAyNTQ4NywgCi0gICAgMjU0OTMsIDI1NDk3LCAyNTUwMSwgMjU1MDksIDI1NTEzLCAyNTUyMSwgMjU1MjcsIDI1NTMzLCAyNTUzOSwgMjU1NDUsIAotICAgIDI1NTU0LCAyNTU1OSwgMjU1NjMsIDI1NTcyLCAyNTU3NSwgMjU1ODEsIDI1NTg1LCAyNTU5MSwgMjU1OTYsIDI1NjAyLCAKLSAgICAyNTYxMCwgMjU2MTYsIDI1NjIxLCAyNTYyOCwgMjU2MzMsIDI1NjM3LCAyNTY0MSwgMjU2NTEsIDI1NjU3LCAyNTY2MSwgCi0gICAgMjU2NzEsIDI1Njc3LCAyNTY4MSwgMjU2ODUsIDI1NjkyLCAyNTY5OSwgMjU3MDQsIDI1NzA5LCAyNTcxOCwgMjU3MjIsIAotICAgIDI1NzI2LCAyNTczMCwgMjU3MzgsIDI1NzQ1LCAyNTc0OSwgMjU3NTMsIDI1NzU3LCAyNTc2MSwgMjU3NjUsIDI1NzY5LCAKLSAgICAyNTc3MywgMjU3NzcsIDI1NzgxLCAyNTc4NSwgMjU3ODksIDI1Nzk0LCAyNTc5OSwgMjU4MDQsIDI1ODA4LCAyNTgxMiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU4MTYsIDI1ODIwLCAyNTgyNCwgMjU4MjgsIAotICAgIDI1ODMyLCAyNTgzNywgMjU4NDIsIDI1ODQ3LCAyNTg1MiwgMjU4NTYsIDI1ODYwLCAyNTg2NSwgMjU4NjksIDAsIDI1ODczLCAKLSAgICAyNTg3OCwgMjU4ODMsIDI1ODg4LCAyNTg5MiwgMjU4OTcsIDI1OTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNTkwNywgMjU5MTEsIDI1OTE1LCAyNTkxOSwgMjU5MjMsIDI1OTI4LCAyNTkzMywgMjU5MzgsIDI1OTQzLCAyNTk0NywgCi0gICAgMjU5NTEsIDI1OTU2LCAyNTk2MCwgMjU5NjQsIDI1OTY4LCAyNTk3MywgMjU5NzgsIDI1OTgzLCAyNTk4NywgMjU5OTIsIAotICAgIDI1OTk3LCAyNjAwMiwgMjYwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MDEzLCAyNjAxNywgMjYwMjEsIAotICAgIDI2MDI1LCAyNjAyOSwgMjYwMzQsIDI2MDM5LCAyNjA0NCwgMjYwNDksIDI2MDUzLCAyNjA1NywgMjYwNjIsIDI2MDY2LCAKLSAgICAyNjA3MCwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDkzLCAyNjA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYxMDMsIDI2MTA3LCAyNjExMSwgMjYxMTUsIDI2MTE5LCAyNjEyNCwgMjYxMjksIDI2MTM0LCAKLSAgICAyNjEzOSwgMjYxNDMsIDI2MTQ3LCAyNjE1MiwgMjYxNTYsIDAsIDI2MTYwLCAyNjE2NSwgMjYxNzAsIDAsIDI2MTc1LCAKLSAgICAyNjE4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYxODUsIDI2MTg4LCAyNjE5MiwgMjYxOTYsIAotICAgIDI2MjAwLCAyNjIwNCwgMjYyMDgsIDI2MjEyLCAyNjIxNiwgMjYyMjAsIDI2MjI0LCAyNjIyOCwgMjYyMzIsIDI2MjM2LCAKLSAgICAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAyNjI1MiwgMjYyNTUsIDI2MjU5LCAyNjI2MywgMjYyNjcsIDI2MjcxLCAyNjI3NSwgCi0gICAgMjYyNzksIDI2MjgzLCAyNjI4NywgMjYyOTEsIDI2Mjk1LCAyNjI5OSwgMjYzMDMsIDI2MzA3LCAyNjMxMSwgMjYzMTQsIAotICAgIDI2MzE4LCAyNjMyMiwgMjYzMjgsIDI2MzM0LCAyNjM0MCwgMjYzNDYsIDI2MzUyLCAyNjM1OCwgMjYzNjQsIDI2MzcwLCAKLSAgICAyNjM3NiwgMjYzODIsIDI2Mzg4LCAyNjM5NCwgMjY0MDAsIDI2NDA2LCAyNjQxNSwgMjY0MjQsIDI2NDMwLCAyNjQzNiwgCi0gICAgMjY0NDIsIDI2NDQ3LCAyNjQ1MSwgMjY0NTYsIDI2NDYxLCAyNjQ2NiwgMjY0NzAsIDI2NDc1LCAyNjQ4MCwgMjY0ODUsIAotICAgIDI2NDg5LCAyNjQ5NCwgMjY0OTgsIDI2NTAzLCAyNjUwOCwgMjY1MTMsIDI2NTE4LCAyNjUyMiwgMjY1MjYsIDI2NTMwLCAKLSAgICAyNjUzNCwgMjY1MzgsIDI2NTQyLCAyNjU0NiwgMjY1NTAsIDI2NTU0LCAyNjU1OCwgMjY1NjQsIDI2NTY4LCAyNjU3MiwgCi0gICAgMjY1NzYsIDI2NTgwLCAyNjU4NCwgMjY1OTIsIDI2NTk4LCAyNjYwMiwgMjY2MDgsIDI2NjEyLCAyNjYxOCwgMjY2MjIsIDAsIAotICAgIDAsIDI2NjI2LCAyNjYzMCwgMjY2MzMsIDI2NjM2LCAyNjYzOSwgMjY2NDIsIDI2NjQ1LCAyNjY0OCwgMjY2NTEsIDI2NjU0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjY1NywgMjY2NjUsIDI2NjczLCAyNjY4MSwgMjY2ODksIDI2Njk3LCAyNjcwNSwgMjY3MTMsIAotICAgIDI2NzIxLCAyNjcyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMjY3MzcsIDI2NzQwLCAyNjc0MywgMjY3NDYsIDI2NzUxLCAyNjc1NCwgCi0gICAgMjY3NTksIDI2NzY2LCAyNjc3NCwgMjY3NzksIDI2Nzg2LCAyNjc4OSwgMjY3OTYsIDI2ODAzLCAyNjgxMCwgMCwgMjY4MTQsIAotICAgIDI2ODE4LCAyNjgyMSwgMjY4MjQsIDI2ODI3LCAyNjgzMCwgMjY4MzMsIDI2ODM2LCAyNjgzOSwgMjY4NDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI2ODQ1LCAyNjg0OCwgMjY4NTEsIDI2ODU0LCAyNjg1NywgMjY4NjAsIDI2ODY0LCAyNjg2OCwgMjY4NzIsIAotICAgIDI2ODc1LCAyNjg3OSwgMjY4ODMsIDI2ODg2LCAyNjg5MCwgMjY4OTQsIDI2ODk3LCAyNjkwMSwgMjY5MDUsIDI2OTA5LCAKLSAgICAyNjkxMywgMjY5MTcsIDI2OTIxLCAyNjkyNSwgMjY5MjgsIDI2OTMxLCAyNjkzNSwgMjY5MzksIDI2OTQyLCAyNjk0NiwgCi0gICAgMjY5NTAsIDI2OTU0LCAyNjk1OCwgMjY5NjIsIDI2OTY2LCAyNjk3MCwgMjY5NzQsIDI2OTgxLCAyNjk4NiwgMjY5OTEsIAotICAgIDI2OTk2LCAyNzAwMSwgMjcwMDcsIDI3MDEzLCAyNzAxOSwgMjcwMjUsIDI3MDMwLCAyNzAzNiwgMjcwNDIsIDI3MDQ3LCAKLSAgICAyNzA1MywgMjcwNTksIDI3MDY1LCAyNzA3MSwgMjcwNzcsIDI3MDgyLCAyNzA4OCwgMjcwOTMsIDI3MDk5LCAyNzEwNSwgCi0gICAgMjcxMTEsIDI3MTE3LCAyNzEyMywgMjcxMjgsIDI3MTMzLCAyNzEzOSwgMjcxNDUsIDI3MTUwLCAyNzE1NiwgMjcxNjEsIAotICAgIDI3MTY3LCAyNzE3MiwgMjcxNzcsIDI3MTgzLCAyNzE4OSwgMjcxOTUsIDI3MjAxLCAyNzIwNywgMjcyMTMsIDI3MjE5LCAKLSAgICAyNzIyNSwgMjcyMzEsIDI3MjM3LCAyNzI0MywgMjcyNDksIDI3MjU0LCAyNzI1OSwgMjcyNjQsIDI3MjcwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNzI3NiwgMjcyODUsIDI3Mjk0LCAyNzMwMiwgMjczMTAsIDI3MzIwLCAyNzMyOCwgMjczMzcsIAotICAgIDI3MzQ0LCAyNzM1MSwgMjczNTgsIDI3MzY2LCAyNzM3NCwgMjczODIsIDI3MzkwLCAyNzM5OCwgMjc0MDYsIDI3NDE0LCAKLSAgICAyNzQyMiwgMjc0MjksIDI3NDM3LCAyNzQ0NSwgMjc0NTMsIDI3NDYxLCAyNzQ2OSwgMjc0NzksIDI3NDg5LCAyNzQ5OSwgCi0gICAgMjc1MDksIDI3NTE5LCAyNzUyOSwgMjc1MzksIDI3NTQ5LCAyNzU1OSwgMjc1NjksIDI3NTc5LCAyNzU4OSwgMjc1OTksIAotICAgIDI3NjA5LCAyNzYxNywgMjc2MjUsIDI3NjM1LCAyNzY0MywgMCwgMCwgMCwgMCwgMCwgMjc2NTMsIDI3NjU3LCAyNzY2MSwgCi0gICAgMjc2NjUsIDI3NjY5LCAyNzY3MywgMjc2NzcsIDI3NjgxLCAyNzY4NSwgMjc2ODksIDI3NjkzLCAyNzY5NywgMjc3MDEsIAotICAgIDI3NzA1LCAyNzcwOSwgMjc3MTMsIDI3NzE3LCAyNzcyMSwgMjc3MjUsIDI3NzI5LCAyNzczMywgMjc3MzcsIDI3NzQxLCAKLSAgICAyNzc0NSwgMjc3NTEsIDI3NzU1LCAyNzc2MSwgMjc3NjUsIDI3NzcxLCAyNzc3NSwgMjc3ODEsIDI3Nzg1LCAyNzc4OSwgCi0gICAgMjc3OTMsIDI3Nzk3LCAyNzgwMSwgMjc4MDUsIDI3ODExLCAyNzgxNywgMjc4MjMsIDI3ODI5LCAyNzgzNCwgMjc4MzksIAotICAgIDI3ODQ0LCAyNzg1MCwgMjc4NTYsIDI3ODYyLCAyNzg2OCwgMjc4NzUsIDI3ODgxLCAyNzg4NiwgMjc4OTEsIDI3ODk1LCAKLSAgICAyNzg5OSwgMjc5MDMsIDI3OTA3LCAyNzkxMSwgMjc5MTUsIDI3OTE5LCAyNzkyNSwgMjc5MzEsIDI3OTM3LCAyNzk0MiwgCi0gICAgMjc5NDksIDI3OTU0LCAyNzk1OSwgMjc5NjUsIDI3OTcwLCAyNzk3NywgMjc5ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI3OTkwLCAyNzk5NSwgMjc5OTgsIDI4MDAyLCAyODAwNiwgMjgwMTAsIDI4MDE0LCAyODAxOCwgMjgwMjIsIAotICAgIDI4MDI2LCAyODAzMCwgMjgwMzQsIDI4MDM4LCAyODA0MiwgMjgwNDYsIDI4MDUwLCAyODA1MywgMjgwNTYsIDI4MDYwLCAKLSAgICAyODA2NCwgMjgwNjgsIDI4MDcxLCAyODA3NCwgMjgwNzcsIDI4MDgxLCAyODA4NSwgMjgwODksIDI4MDkzLCAyODA5NywgMCwgCi0gICAgMCwgMCwgMjgxMDAsIDI4MTA0LCAyODEwOCwgMjgxMTIsIDI4MTE3LCAyODEyMiwgMjgxMjcsIDI4MTMyLCAyODEzNiwgCi0gICAgMjgxNDAsIDI4MTQ1LCAyODE1MCwgMCwgMCwgMCwgMCwgMjgxNTYsIDI4MTYwLCAyODE2NSwgMjgxNzAsIDI4MTc1LCAKLSAgICAyODE3OSwgMjgxODMsIDI4MTg3LCAyODE5MSwgMjgxOTYsIDI4MjAwLCAyODIwNCwgMCwgMCwgMCwgMCwgMjgyMDgsIDAsIDAsIAotICAgIDAsIDI4MjEyLCAyODIxNiwgMjgyMjAsIDI4MjI0LCAyODIyNywgMjgyMzAsIDI4MjMzLCAyODIzNiwgMjgyMzksIDI4MjQyLCAKLSAgICAyODI0NSwgMjgyNDgsIDI4MjUxLCAyODI1NiwgMjgyNjIsIDI4MjY4LCAyODI3NCwgMjgyODAsIDI4Mjg1LCAyODI5MSwgCi0gICAgMjgyOTcsIDI4MzAzLCAyODMwOCwgMjgzMTQsIDI4MzE5LCAyODMyNSwgMjgzMzEsIDI4MzM2LCAyODM0MiwgMjgzNDgsIAotICAgIDI4MzU0LCAyODM1OSwgMjgzNjQsIDI4MzY5LCAyODM3NSwgMjgzODEsIDI4Mzg2LCAyODM5MiwgMjgzOTcsIDI4NDAzLCAKLSAgICAyODQwOCwgMjg0MTQsIDAsIDAsIDI4NDIwLCAyODQyNiwgMjg0MzIsIDI4NDM4LCAyODQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjg0NTAsIDI4NDU3LCAyODQ2NCwgMjg0NzAsIDI4NDc3LCAyODQ4NCwgMjg0OTAsIDI4NDk3LCAKLSAgICAyODUwNCwgMjg1MTEsIDI4NTE4LCAyODUyNCwgMjg1MzEsIDI4NTM4LCAyODU0NCwgMjg1NTEsIDI4NTU4LCAyODU2NCwgCi0gICAgMjg1NzEsIDI4NTc4LCAyODU4NCwgMjg1OTAsIDI4NTk3LCAyODYwMywgMjg2MDksIDI4NjE2LCAyODYyMiwgMjg2MjksIAotICAgIDI4NjM2LCAyODY0MywgMjg2NTAsIDI4NjU3LCAyODY2NCwgMjg2NzAsIDI4Njc3LCAyODY4NCwgMjg2OTAsIDI4Njk3LCAKLSAgICAyODcwNCwgMjg3MTEsIDI4NzE4LCAyODcyNSwgMjg3MzIsIDI4NzM5LCAwLCAwLCAwLCAwLCAyODc0NiwgMjg3NTQsIAotICAgIDI4NzYxLCAyODc2OCwgMjg3NzQsIDI4NzgxLCAyODc4NywgMjg3OTQsIDI4ODAwLCAyODgwNywgMjg4MTQsIDI4ODIxLCAKLSAgICAyODgyOCwgMjg4MzUsIDI4ODQyLCAyODg0OSwgMjg4NTYsIDI4ODYzLCAyODg3MCwgMjg4NzcsIDI4ODgzLCAyODg4OSwgCi0gICAgMjg4OTYsIDI4OTAzLCAyODkxMCwgMjg5MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OTIyLCAyODkyOCwgMjg5MzMsIDI4OTM4LCAKLSAgICAyODk0MywgMjg5NDgsIDI4OTUzLCAyODk1OCwgMjg5NjMsIDI4OTY4LCAyODk3MywgMCwgMCwgMCwgMjg5NzksIDI4OTg1LCAKLSAgICAyODk5MSwgMjg5OTUsIDI5MDAxLCAyOTAwNywgMjkwMTMsIDI5MDE5LCAyOTAyNSwgMjkwMzEsIDI5MDM3LCAyOTA0MywgCi0gICAgMjkwNDksIDI5MDU1LCAyOTA2MSwgMjkwNjcsIDI5MDczLCAyOTA3OSwgMjkwODUsIDI5MDg5LCAyOTA5NSwgMjkxMDEsIAotICAgIDI5MTA3LCAyOTExMywgMjkxMTksIDI5MTI1LCAyOTEzMSwgMjkxMzcsIDI5MTQzLCAyOTE0OSwgMjkxNTUsIDI5MTYxLCAKLSAgICAyOTE2NywgMjkxNzMsIDI5MTc5LCAyOTE4MywgMjkxODgsIDI5MTkzLCAyOTE5OCwgMjkyMDIsIDI5MjA3LCAyOTIxMSwgCi0gICAgMjkyMTYsIDI5MjIxLCAyOTIyNiwgMjkyMzAsIDI5MjM1LCAyOTI0MCwgMjkyNDUsIDI5MjUwLCAyOTI1NSwgMjkyNTksIAotICAgIDI5MjYzLCAyOTI2OCwgMjkyNzMsIDI5Mjc4LCAyOTI4MiwgMjkyODYsIDI5MjkxLCAyOTI5NiwgMjkzMDEsIDI5MzA2LCAwLCAKLSAgICAwLCAyOTMxMiwgMjkzMTYsIDI5MzIzLCAyOTMyOCwgMjkzMzQsIDI5MzQwLCAyOTM0NSwgMjkzNTEsIDI5MzU3LCAyOTM2MiwgCi0gICAgMjkzNjgsIDI5Mzc0LCAyOTM4MCwgMjkzODYsIDI5MzkyLCAyOTM5NywgMjk0MDIsIDI5NDA4LCAyOTQxMywgMjk0MTksIAotICAgIDI5NDI0LCAyOTQzMCwgMjk0MzYsIDI5NDQyLCAyOTQ0OCwgMjk0NTIsIDI5NDU3LCAyOTQ2MiwgMjk0NjgsIDI5NDc0LCAKLSAgICAyOTQ3OSwgMjk0ODUsIDI5NDkxLCAyOTQ5NSwgMjk1MDAsIDI5NTA1LCAyOTUwOSwgMjk1MTQsIDI5NTE5LCAyOTUyNCwgCi0gICAgMjk1MjksIDI5NTM1LCAyOTU0MSwgMjk1NDcsIDI5NTUyLCAyOTU1NywgMjk1NjEsIDI5NTY2LCAyOTU3MCwgMjk1NzUsIAotICAgIDI5NTc5LCAyOTU4NCwgMjk1ODksIDI5NTk0LCAyOTU5OSwgMjk2MDYsIDI5NjEzLCAyOTYyMSwgMjk2MzIsIDI5NjQxLCAKLSAgICAyOTY0OSwgMjk2NTYsIDI5NjY3LCAyOTY3MywgMjk2ODAsIDAsIDI5Njg3LCAyOTY5MiwgMjk2OTcsIDI5NzA1LCAyOTcxMSwgCi0gICAgMjk3MTksIDI5NzI0LCAyOTczMCwgMjk3MzYsIDI5NzQyLCAyOTc0NywgMjk3NTMsIDI5NzU4LCAyOTc2NSwgMjk3NzEsIAotICAgIDI5Nzc2LCAyOTc4MiwgMjk3ODgsIDI5Nzk0LCAyOTgwMSwgMjk4MDgsIDI5ODE1LCAyOTgyMCwgMjk4MjUsIDI5ODMyLCAKLSAgICAyOTgzOSwgMjk4NDYsIDI5ODUzLCAyOTg2MCwgMCwgMCwgMjk4NjcsIDI5ODc0LCAyOTg4MSwgMjk4ODcsIDI5ODkzLCAKLSAgICAyOTg5OSwgMjk5MDUsIDI5OTExLCAyOTkxNywgMjk5MjMsIDI5OTI5LCAwLCAwLCAwLCAwLCAwLCAwLCAyOTkzNSwgMjk5NDEsIAotICAgIDI5OTQ2LCAyOTk1MSwgMjk5NTYsIDI5OTYxLCAyOTk2NiwgMjk5NzEsIDI5OTc2LCAyOTk4MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjk5ODYsIDI5OTkxLCAyOTk5NiwgMzAwMDEsIDMwMDA2LCAzMDAxMSwgMzAwMTYsIDMwMDI1LCAzMDAzMiwgMzAwMzcsIAotICAgIDMwMDQyLCAzMDA0NywgMzAwNTIsIDMwMDU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDA2MiwgMzAwNjgsIAotICAgIDMwMDc0LCAzMDA3OCwgMzAwODIsIDMwMDg2LCAzMDA5MCwgMzAwOTYsIDMwMTAwLCAzMDEwNiwgMzAxMTAsIDMwMTE2LCAKLSAgICAzMDEyMiwgMzAxMzAsIDMwMTM2LCAzMDE0NCwgMzAxNDgsIDMwMTUyLCAzMDE1NiwgMzAxNjIsIDMwMTY1LCAzMDE3MSwgCi0gICAgMzAxNzUsIDMwMTgxLCAzMDE4NSwgMzAxODksIDMwMTk1LCAzMDE5OSwgMzAyMDUsIDMwMjA5LCAzMDIxNSwgMzAyMjMsIAotICAgIDMwMjMxLCAzMDIzOSwgMzAyNDUsIDMwMjQ5LCAzMDI1NSwgMzAyNTksIDMwMjY1LCAzMDI2OCwgMzAyNzEsIDMwMjc3LCAKLSAgICAzMDI4MSwgMzAyODcsIDMwMjkwLCAzMDI5MywgMzAyOTYsIDMwMzAwLCAzMDMwNCwgMzAzMTAsIDMwMzE2LCAzMDMyMCwgCi0gICAgMzAzMjMsIDMwMzI3LCAzMDMzMiwgMzAzMzcsIDMwMzQ0LCAzMDM0OSwgMzAzNTYsIDMwMzYzLCAzMDM3MiwgMzAzNzksIAotICAgIDMwMzg4LCAzMDM5MywgMzA0MDAsIDMwNDA3LCAzMDQxNiwgMzA0MjEsIDMwNDI4LCAzMDQzMywgMzA0MzksIDMwNDQ1LCAKLSAgICAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMCwgMCwgMCwgMCwgMzA0NzUsIDMwNDc5LCAzMDQ4MiwgMzA0ODUsIAotICAgIDMwNDg4LCAzMDQ5MSwgMzA0OTQsIDMwNDk3LCAzMDUwMCwgMzA1MDMsIDMwNTA2LCAzMDUwOSwgMzA1MTIsIDMwNTE1LCAKLSAgICAzMDUyMCwgMzA1MjUsIDMwNTMwLCAzMDUzMywgMzA1MzgsIDMwNTQzLCAzMDU0OCwgMzA1NTMsIDMwNTYwLCAzMDU2NSwgCi0gICAgMzA1NzAsIDMwNTc1LCAzMDU4MCwgMzA1ODcsIDMwNTkzLCAzMDU5OSwgMzA2MDUsIDMwNjExLCAzMDYxNywgMzA2MjYsIAotICAgIDMwNjM1LCAzMDY0MSwgMzA2NDcsIDMwNjU2LCAzMDY2NSwgMzA2NzQsIDMwNjgzLCAzMDY5MiwgMzA3MDEsIDMwNzEwLCAKLSAgICAzMDcxOSwgMCwgMCwgMCwgMzA3MjgsIDMwNzMzLCAzMDczOCwgMzA3NDMsIDMwNzQ3LCAzMDc1MSwgMzA3NTUsIDMwNzYwLCAKLSAgICAzMDc2NCwgMzA3NjgsIDMwNzczLCAzMDc3NywgMzA3ODIsIDMwNzg3LCAzMDc5MiwgMzA3OTcsIDMwODAyLCAzMDgwNywgCi0gICAgMzA4MTIsIDMwODE3LCAzMDgyMiwgMzA4MjYsIDMwODMwLCAzMDgzNSwgMzA4NDAsIDMwODQ1LCAzMDg0OSwgMzA4NTMsIAotICAgIDMwODU3LCAzMDg2MiwgMzA4NjcsIDMwODcyLCAzMDg3NywgMzA4ODEsIDMwODg4LCAzMDg5NSwgMzA5MDIsIDMwOTA4LCAKLSAgICAzMDkxNCwgMzA5MjAsIDMwOTI2LCAzMDkzMiwgMzA5MzgsIDAsIDAsIDAsIDMwOTQzLCAzMDk0OCwgMzA5NTMsIDMwOTU4LCAKLSAgICAzMDk2MiwgMzA5NjYsIDMwOTcwLCAzMDk3NCwgMzA5NzgsIDMwOTgyLCAzMDk4NiwgMzA5OTAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwOTk0LCAzMDk5OCwgMzEwMDQsIDMxMDA4LCAzMTAxNCwgMzEwMjAsIDMxMDI1LCAzMTAzMiwgMzEwMzYsIDMxMDQyLCAKLSAgICAzMTA0NiwgMzEwNTIsIDMxMDU3LCAzMTA2NCwgMzEwNzEsIDMxMDc2LCAzMTA4MywgMzEwODgsIDMxMDkzLCAzMTA5NywgCi0gICAgMzExMDMsIDMxMTA3LCAzMTExMywgMzExMjAsIDMxMTI3LCAzMTEzMiwgMzExMzksIDMxMTQ2LCAzMTE1MCwgMzExNTYsIAotICAgIDMxMTYxLCAzMTE2NiwgMzExNzMsIDMxMTc4LCAzMTE4MywgMzExODgsIDMxMTkzLCAzMTE5NywgMzEyMDEsIDMxMjA2LCAKLSAgICAzMTIxMSwgMzEyMTgsIDMxMjI0LCAzMTIyOSwgMzEyMzYsIDMxMjQxLCAzMTI0OCwgMzEyNTMsIDMxMjYzLCAzMTI3MCwgCi0gICAgMzEyNzcsIDMxMjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI4NSwgMzEyOTQsIDMxMzAxLCAzMTMwOCwgMzEzMTUsIAotICAgIDMxMzE4LCAzMTMyMiwgMzEzMjYsIDMxMzMwLCAzMTMzNCwgMzEzMzgsIDMxMzQyLCAzMTM0NiwgMzEzNTAsIDMxMzU0LCAKLSAgICAzMTM1OCwgMzEzNjIsIDMxMzY2LCAzMTM2OSwgMzEzNzIsIDMxMzc2LCAzMTM4MCwgMzEzODQsIDMxMzg4LCAzMTM5MiwgCi0gICAgMzEzOTYsIDMxMzk5LCAzMTQwMywgMzE0MDcsIDMxNDExLCAzMTQxNSwgMzE0MTgsIDMxNDIxLCAzMTQyNSwgMzE0MjgsIAotICAgIDMxNDMyLCAzMTQzNiwgMzE0NDAsIDMxNDQ0LCAzMTQ0OCwgMzE0NTEsIDMxNDU2LCAzMTQ2MSwgMzE0NjYsIDMxNDcwLCAKLSAgICAzMTQ3NCwgMzE0NzksIDMxNDgzLCAzMTQ4OCwgMzE0OTIsIDMxNDk4LCAzMTUwMywgMzE1MDgsIDMxNTEzLCAzMTUxOSwgCi0gICAgMzE1MjQsIDMxNTMwLCAzMTUzNiwgMzE1NDIsIDMxNTQ2LCAwLCAwLCAwLCAzMTU1MCwgMzE1NTUsIDMxNTY0LCAzMTU2OSwgCi0gICAgMzE1NzYsIDMxNTgxLCAzMTU4NSwgMzE1ODgsIDMxNTkxLCAzMTU5NCwgMzE1OTcsIDMxNjAwLCAzMTYwMywgMzE2MDYsIAotICAgIDMxNjA5LCAwLCAwLCAwLCAzMTYxMiwgMzE2MTYsIDMxNjIwLCAzMTYyNCwgMzE2MzEsIDMxNjM3LCAzMTY0MywgMzE2NDksIAotICAgIDMxNjU1LCAzMTY2MSwgMzE2NjcsIDMxNjczLCAzMTY3OSwgMzE2ODUsIDMxNjkyLCAzMTY5OSwgMzE3MDYsIDMxNzEzLCAKLSAgICAzMTcyMCwgMzE3MjcsIDMxNzM0LCAzMTc0MSwgMzE3NDgsIDMxNzU1LCAzMTc2MiwgMzE3NjksIDMxNzc2LCAzMTc4MywgCi0gICAgMzE3OTAsIDMxNzk3LCAzMTgwNCwgMzE4MTEsIDMxODE4LCAzMTgyNSwgMzE4MzIsIDMxODM5LCAzMTg0NiwgMzE4NTMsIAotICAgIDMxODYwLCAzMTg2NywgMzE4NzQsIDMxODgxLCAzMTg4OCwgMzE4OTUsIDMxOTAzLCAzMTkxMSwgMzE5MTksIDMxOTI1LCAKLSAgICAzMTkzMSwgMzE5MzcsIDMxOTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTk1NCwgMzE5NTksIDMxOTY0LCAzMTk2OSwgCi0gICAgMzE5NzQsIDMxOTgzLCAzMTk5NCwgMzIwMDMsIDMyMDE0LCAzMjAyMCwgMzIwMzMsIDMyMDM5LCAzMjA0NiwgMzIwNTMsIAotICAgIDMyMDU4LCAzMjA2NCwgMzIwNzAsIDMyMDgxLCAzMjA5MCwgMzIwOTcsIDMyMTA0LCAzMjExMywgMzIxMjAsIDMyMTI5LCAKLSAgICAzMjEzOSwgMzIxNDksIDMyMTU2LCAzMjE2MywgMzIxNzAsIDMyMTgwLCAzMjE4NSwgMzIxOTMsIDMyMTk5LCAzMjIwNywgCi0gICAgMzIyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjIxLCAzMjIyNiwgMzIyMzIsIDMyMjM5LCAKLSAgICAzMjI0NywgMzIyNTMsIDMyMjU5LCAzMjI2NSwgMzIyNzAsIDMyMjc4LCAzMjI4NCwgMzIyOTAsIDMyMjk2LCAzMjMwNCwgCi0gICAgMzIzMDksIDMyMzE2LCAzMjMyMSwgMzIzMjgsIDMyMzM0LCAzMjM0MiwgMzIzNTAsIDMyMzU3LCAzMjM2MywgMzIzNzAsIAotICAgIDMyMzc3LCAzMjM4MywgMzIzOTAsIDMyMzk3LCAzMjQwMywgMzI0MDgsIDMyNDE0LCAzMjQyMiwgMzI0MzAsIDMyNDM2LCAKLSAgICAzMjQ0MiwgMzI0NDgsIDMyNDU0LCAzMjQ2MiwgMzI0NjYsIDMyNDcyLCAzMjQ3OCwgMzI0ODQsIDMyNDkwLCAzMjQ5NiwgCi0gICAgMzI1MDIsIDMyNTA2LCAzMjUxMSwgMzI1MTYsIDMyNTIzLCAzMjUyOCwgMzI1MzIsIDMyNTM4LCAzMjU0MywgMzI1NDgsIAotICAgIDMyNTUyLCAzMjU1NywgMzI1NjIsIDMyNTY2LCAzMjU3MCwgMzI1NzQsIDMyNTgwLCAzMjU4NCwgMzI1ODksIDMyNTk0LCAKLSAgICAzMjU5OCwgMzI2MDMsIDMyNjA3LCAzMjYxMiwgMzI2MTYsIDMyNjIyLCAzMjYyNywgMzI2MzQsIDMyNjM5LCAzMjY0NCwgCi0gICAgMzI2NDgsIDMyNjUzLCAzMjY1OSwgMzI2NjcsIDMyNjcyLCAzMjY3OCwgMzI2ODMsIDMyNjg3LCAzMjY5MiwgMzI2OTYsIAotICAgIDMyNzAyLCAzMjcwOSwgMzI3MTYsIDMyNzIxLCAzMjcyNiwgMzI3MzAsIDMyNzM2LCAzMjc0MiwgMzI3NDcsIDMyNzUyLCAKLSAgICAzMjc1NywgMzI3NjMsIDMyNzY4LCAzMjc3NCwgMzI3NzksIDMyNzg1LCAzMjc5MSwgMzI3OTcsIDMyODA0LCAzMjgxMSwgCi0gICAgMzI4MTgsIDMyODI1LCAzMjgzMiwgMzI4MzksIDMyODQ0LCAzMjg1MywgMzI4NjMsIDMyODczLCAzMjg4MywgMzI4OTMsIAotICAgIDMyOTAzLCAzMjkxMywgMzI5MjYsIDMyOTM2LCAzMjk0NiwgMzI5NTYsIDMyOTYzLCAzMjk2OCwgMzI5NzUsIDMyOTgzLCAKLSAgICAzMjk5MSwgMzI5OTgsIDMzMDA1LCAzMzAxMiwgMzMwMTksIDMzMDI3LCAzMzAzNiwgMzMwNDUsIDMzMDU0LCAzMzA2MywgCi0gICAgMzMwNzIsIDMzMDgxLCAzMzA5MCwgMzMwOTksIDMzMTA4LCAzMzExNywgMzMxMjYsIDMzMTM1LCAzMzE0NCwgMzMxNTMsIAotICAgIDMzMTYxLCAzMzE3MCwgMzMxODEsIDMzMTg5LCAzMzE5OSwgMzMyMTEsIDMzMjIwLCAzMzIyOSwgMzMyMzksIDMzMjQ4LCAKLSAgICAzMzI1NiwgMzMyNjUsIDMzMjcyLCAzMzI3NywgMzMyODUsIDMzMjkwLCAzMzI5OCwgMzMzMDMsIDMzMzEyLCAzMzMxOCwgCi0gICAgMzMzMjUsIDMzMzMyLCAzMzMzNywgMzMzNDIsIDMzMzUwLCAzMzM1OCwgMzMzNjcsIDMzMzc2LCAzMzM4MSwgMzMzODgsIAotICAgIDMzMzk5LCAzMzQwNywgMzM0MTYsIDMzNDIxLCAzMzQyNywgMzM0MzIsIDMzNDM5LCAzMzQ0NCwgMzM0NTMsIDMzNDU4LCAKLSAgICAzMzQ2MywgMzM0NjgsIDMzNDc1LCAzMzQ4MiwgMzM0ODcsIDMzNDk2LCAzMzUwNCwgMzM1MDksIDMzNTE0LCAzMzUyMSwgCi0gICAgMzM1MjgsIDMzNTMyLCAzMzUzNiwgMzM1MzksIDMzNTQyLCAzMzU0NSwgMzM1NDgsIDMzNTUxLCAzMzU1NCwgMzM1NjEsIAotICAgIDMzNTY0LCAzMzU2NywgMzM1NzIsIDMzNTc2LCAzMzU4MCwgMzM1ODQsIDMzNTg4LCAzMzU5MiwgMzM2MDIsIDMzNjA4LCAKLSAgICAzMzYxNCwgMzM2MjAsIDMzNjI4LCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAzMzY1NSwgMzM2NjEsIDMzNjY2LCAzMzY3MiwgCi0gICAgMzM2NzgsIDMzNjgzLCAzMzY4OSwgMzM2OTUsIDMzNzAzLCAzMzcwOCwgMzM3MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNzIwLCAzMzcyNywgMzM3MzQsIDMzNzM5LCAzMzc0OCwgCi0gICAgMzM3NTYsIDMzNzY0LCAzMzc3MSwgMzM3NzgsIDMzNzg1LCAzMzc5MiwgMzM4MDAsIDMzODA4LCAzMzgxOCwgMzM4MjgsIAotICAgIDMzODM2LCAzMzg0NCwgMzM4NTIsIDMzODYwLCAzMzg2OSwgMzM4NzgsIDMzODg2LCAzMzg5NCwgMzM5MDMsIDMzOTEyLCAKLSAgICAzMzkyMiwgMzM5MzIsIDMzOTQxLCAzMzk1MCwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODIsIDMzOTkyLCAzNDAwMiwgCi0gICAgMzQwMTAsIDM0MDE4LCAzNDAyNiwgMzQwMzQsIDM0MDQyLCAzNDA1MCwgMzQwNTgsIDM0MDY2LCAzNDA3NCwgMzQwODIsIAotICAgIDM0MDkwLCAzNDA5OCwgMzQxMDcsIDM0MTE2LCAzNDEyNSwgMzQxMzQsIDM0MTQ0LCAzNDE1NCwgMzQxNjEsIDM0MTY4LCAKLSAgICAzNDE3NiwgMzQxODQsIDM0MTkzLCAzNDIwMiwgMzQyMTAsIDM0MjE4LCAzNDIzMCwgMzQyNDIsIDM0MjUxLCAzNDI2MCwgCi0gICAgMzQyNjksIDM0Mjc4LCAzNDI4NSwgMzQyOTIsIDM0MzAwLCAzNDMwOCwgMzQzMTYsIDM0MzI0LCAzNDMzMiwgMzQzNDAsIAotICAgIDM0MzQ4LCAzNDM1NiwgMzQzNjUsIDM0Mzc0LCAzNDM4MywgMzQzOTIsIDM0NDAxLCAzNDQxMCwgMzQ0MjAsIDM0NDMwLCAKLSAgICAzNDQ0MCwgMzQ0NTAsIDM0NDU5LCAzNDQ2OCwgMzQ0NzUsIDM0NDgyLCAzNDQ5MCwgMzQ0OTgsIDM0NTA2LCAzNDUxNCwgCi0gICAgMzQ1MjIsIDM0NTMwLCAzNDU0MiwgMzQ1NTQsIDM0NTYzLCAzNDU3MiwgMzQ1ODAsIDM0NTg4LCAzNDU5NiwgMzQ2MDQsIAotICAgIDM0NjE1LCAzNDYyNiwgMzQ2MzcsIDM0NjQ4LCAzNDY2MCwgMzQ2NzIsIDM0NjgwLCAzNDY4OCwgMzQ2OTYsIDM0NzA0LCAKLSAgICAzNDcxMywgMzQ3MjIsIDM0NzMxLCAzNDc0MCwgMzQ3NDgsIDM0NzU2LCAzNDc2NCwgMzQ3NzIsIDM0NzgwLCAzNDc4OCwgCi0gICAgMzQ3OTcsIDM0ODA2LCAzNDgxNiwgMzQ4MjYsIDM0ODM0LCAzNDg0MiwgMzQ4NTAsIDM0ODU4LCAzNDg2NiwgMzQ4NzQsIAotICAgIDM0ODgxLCAzNDg4OCwgMzQ4OTYsIDM0OTA0LCAzNDkxMiwgMzQ5MjAsIDM0OTI4LCAzNDkzNiwgMzQ5NDQsIDM0OTUyLCAKLSAgICAzNDk2MCwgMzQ5NjgsIDM0OTc2LCAzNDk4NCwgMzQ5OTIsIDM1MDAwLCAzNTAwOCwgMzUwMTYsIDM1MDI1LCAzNTAzNCwgCi0gICAgMzUwNDMsIDM1MDUxLCAzNTA2MCwgMzUwNjksIDM1MDc4LCAzNTA4NywgMzUwOTcsIDM1MTA2LCAzNTExMiwgMzUxMTcsIAotICAgIDM1MTI0LCAzNTEzMSwgMzUxMzksIDM1MTQ3LCAzNTE1NiwgMzUxNjUsIDM1MTc1LCAzNTE4NSwgMzUxOTYsIDM1MjA3LCAKLSAgICAzNTIxNywgMzUyMjcsIDM1MjM3LCAzNTI0NywgMzUyNTYsIDM1MjY1LCAzNTI3NSwgMzUyODUsIDM1Mjk2LCAzNTMwNywgCi0gICAgMzUzMTcsIDM1MzI3LCAzNTMzNywgMzUzNDcsIDM1MzU0LCAzNTM2MSwgMzUzNjksIDM1Mzc3LCAzNTM4NCwgMzUzOTEsIAotICAgIDM1NDAwLCAzNTQwOSwgMzU0MTksIDM1NDI5LCAzNTQ0MCwgMzU0NTEsIDM1NDYxLCAzNTQ3MSwgMzU0ODEsIDM1NDkxLCAKLSAgICAzNTUwMCwgMzU1MDksIDM1NTE3LCAzNTUyNSwgMzU1MzIsIDM1NTM5LCAzNTU0NywgMzU1NTUsIDM1NTY0LCAzNTU3MywgCi0gICAgMzU1ODMsIDM1NTkzLCAzNTYwNCwgMzU2MTUsIDM1NjI1LCAzNTYzNSwgMzU2NDUsIDM1NjU1LCAzNTY2NCwgMzU2NzMsIAotICAgIDM1NjgzLCAzNTY5MywgMzU3MDQsIDM1NzE1LCAzNTcyNSwgMzU3MzUsIDM1NzQ1LCAzNTc1NSwgMzU3NjIsIDM1NzY5LCAKLSAgICAzNTc3NywgMzU3ODUsIDM1Nzk0LCAzNTgwMywgMzU4MTMsIDM1ODIzLCAzNTgzNCwgMzU4NDUsIDM1ODU1LCAzNTg2NSwgCi0gICAgMzU4NzUsIDM1ODg1LCAzNTg5MywgMzU5MDEsIDM1OTA5LCAzNTkxNywgMzU5MjYsIDM1OTM1LCAzNTk0MywgMzU5NTEsIAotICAgIDM1OTU4LCAzNTk2NSwgMzU5NzIsIDM1OTc5LCAzNTk4NywgMzU5OTUsIDM2MDAzLCAzNjAxMSwgMzYwMjIsIDM2MDMyLCAKLSAgICAzNjA0MywgMzYwNTMsIDM2MDY0LCAzNjA3NCwgMzYwODIsIDM2MDkwLCAzNjEwMSwgMzYxMTEsIDM2MTIyLCAzNjEzMiwgCi0gICAgMzYxNDMsIDM2MTUzLCAzNjE2MSwgMzYxNjksIDM2MTgwLCAzNjE5MCwgMzYyMDEsIDAsIDAsIDM2MjExLCAzNjIxOSwgCi0gICAgMzYyMjcsIDM2MjM4LCAzNjI0OCwgMzYyNTksIDAsIDAsIDM2MjY5LCAzNjI3NywgMzYyODUsIDM2Mjk2LCAzNjMwNiwgCi0gICAgMzYzMTcsIDM2MzI3LCAzNjMzOCwgMzYzNDgsIDM2MzU2LCAzNjM2NCwgMzYzNzUsIDM2Mzg1LCAzNjM5NiwgMzY0MDYsIAotICAgIDM2NDE3LCAzNjQyNywgMzY0MzUsIDM2NDQzLCAzNjQ1NCwgMzY0NjQsIDM2NDc1LCAzNjQ4NSwgMzY0OTYsIDM2NTA2LCAKLSAgICAzNjUxNCwgMzY1MjIsIDM2NTMzLCAzNjU0MywgMzY1NTQsIDM2NTY0LCAzNjU3NSwgMzY1ODUsIDM2NTkzLCAzNjYwMSwgCi0gICAgMzY2MTIsIDM2NjIyLCAzNjYzMywgMCwgMCwgMzY2NDMsIDM2NjUxLCAzNjY1OSwgMzY2NzAsIDM2NjgwLCAzNjY5MSwgMCwgCi0gICAgMCwgMzY3MDEsIDM2NzA5LCAzNjcxNywgMzY3MjgsIDM2NzM4LCAzNjc0OSwgMzY3NTksIDM2NzcwLCAwLCAzNjc4MCwgMCwgCi0gICAgMzY3ODgsIDAsIDM2Nzk4LCAwLCAzNjgwOCwgMzY4MTgsIDM2ODI2LCAzNjgzNCwgMzY4NDUsIDM2ODU1LCAzNjg2NiwgCi0gICAgMzY4NzYsIDM2ODg3LCAzNjg5NywgMzY5MDUsIDM2OTEzLCAzNjkyNCwgMzY5MzQsIDM2OTQ1LCAzNjk1NSwgMzY5NjYsIAotICAgIDM2OTc2LCAzNjk4NCwgMzY5OTIsIDM3MDAwLCAzNzAwOCwgMzcwMTYsIDM3MDI0LCAzNzAzMiwgMzcwNDAsIDM3MDQ4LCAKLSAgICAzNzA1NiwgMzcwNjQsIDM3MDcyLCAzNzA4MCwgMCwgMCwgMzcwODgsIDM3MDk5LCAzNzEwOSwgMzcxMjMsIDM3MTM2LCAKLSAgICAzNzE1MCwgMzcxNjMsIDM3MTc3LCAzNzE5MCwgMzcyMDEsIDM3MjExLCAzNzIyNSwgMzcyMzgsIDM3MjUyLCAzNzI2NSwgCi0gICAgMzcyNzksIDM3MjkyLCAzNzMwMywgMzczMTMsIDM3MzI3LCAzNzM0MCwgMzczNTQsIDM3MzY3LCAzNzM4MSwgMzczOTQsIAotICAgIDM3NDA1LCAzNzQxNSwgMzc0MjksIDM3NDQyLCAzNzQ1NiwgMzc0NjksIDM3NDgzLCAzNzQ5NiwgMzc1MDcsIDM3NTE3LCAKLSAgICAzNzUzMSwgMzc1NDQsIDM3NTU4LCAzNzU3MSwgMzc1ODUsIDM3NTk4LCAzNzYwOSwgMzc2MTksIDM3NjMzLCAzNzY0NiwgCi0gICAgMzc2NjAsIDM3NjczLCAzNzY4NywgMzc3MDAsIDM3NzA4LCAzNzcxNiwgMzc3MjcsIDM3NzM1LCAwLCAzNzc0NiwgMzc3NTQsIAotICAgIDM3NzY1LCAzNzc3MywgMzc3ODEsIDM3Nzg5LCAzNzc5NywgMzc4MDUsIDM3ODA4LCAzNzgxMSwgMzc4MTQsIDM3ODE3LCAKLSAgICAzNzgyMywgMzc4MzQsIDM3ODQyLCAwLCAzNzg1MywgMzc4NjEsIDM3ODcyLCAzNzg4MCwgMzc4ODgsIDM3ODk2LCAzNzkwNCwgCi0gICAgMzc5MTIsIDM3OTE4LCAzNzkyNCwgMzc5MzAsIDM3OTM4LCAzNzk0NiwgMzc5NTcsIDAsIDAsIDM3OTY4LCAzNzk3NiwgCi0gICAgMzc5ODcsIDM3OTk1LCAzODAwMywgMzgwMTEsIDAsIDM4MDE5LCAzODAyNCwgMzgwMjksIDM4MDM0LCAzODA0MiwgMzgwNTAsIAotICAgIDM4MDYxLCAzODA3MiwgMzgwODAsIDM4MDg4LCAzODA5NiwgMzgxMDcsIDM4MTE1LCAzODEyMywgMzgxMzEsIDM4MTM5LCAKLSAgICAzODE0NywgMzgxNTMsIDM4MTU5LCAwLCAwLCAzODE2MiwgMzgxNzMsIDM4MTgxLCAwLCAzODE5MiwgMzgyMDAsIDM4MjExLCAKLSAgICAzODIxOSwgMzgyMjcsIDM4MjM1LCAzODI0MywgMzgyNTEsIDM4MjU0LCAwLCAzODI1NywgMzgyNjEsIDM4MjY1LCAzODI2OSwgCi0gICAgMzgyNzMsIDM4Mjc3LCAzODI4MSwgMzgyODUsIDM4Mjg5LCAzODI5MywgMzgyOTcsIDM4MzAxLCAzODMwNywgMzgzMTMsIAotICAgIDM4MzE5LCAzODMyMiwgMzgzMjUsIDM4MzI3LCAzODMzMSwgMzgzMzUsIDM4MzM5LCAzODM0MywgMzgzNDUsIDM4MzQ5LCAKLSAgICAzODM1MywgMzgzNTksIDM4MzY1LCAzODM3MiwgMzgzNzksIDM4Mzg0LCAzODM4OSwgMzgzOTUsIDM4NDAxLCAzODQwMywgCi0gICAgMzg0MDYsIDM4NDA4LCAzODQxMiwgMzg0MTYsIDM4NDIwLCAzODQyMywgMzg0MjcsIDM4NDMxLCAzODQzNSwgMzg0MzksIAotICAgIDM4NDQzLCAzODQ0OSwgMzg0NTMsIDM4NDU3LCAzODQ2MywgMzg0NjgsIDM4NDc1LCAzODQ3NywgMzg0ODAsIDM4NDg0LCAKLSAgICAzODQ4OCwgMzg0OTMsIDM4NDk5LCAzODUwMSwgMzg1MTAsIDM4NTE5LCAzODUyMiwgMzg1MjYsIDM4NTI4LCAzODUzMCwgCi0gICAgMzg1MzIsIDM4NTM1LCAzODU0MSwgMzg1NDMsIDM4NTQ3LCAzODU1MSwgMzg1NTgsIDM4NTY1LCAzODU2OSwgMzg1NzQsIAotICAgIDM4NTc5LCAzODU4NCwgMzg1ODksIDM4NTkzLCAzODU5NywgMzg2MDAsIDM4NjA0LCAzODYwOCwgMzg2MTUsIDM4NjIwLCAKLSAgICAzODYyNCwgMzg2MjgsIDM4NjMzLCAzODYzNywgMzg2NDEsIDM4NjQ2LCAzODY1MSwgMzg2NTUsIDM4NjU5LCAzODY2MywgCi0gICAgMzg2NjUsIDM4NjcwLCAzODY3NSwgMzg2NzksIDM4NjgzLCAzODY4NywgMzg2OTEsIDAsIDAsIDAsIDAsIDAsIDM4Njk1LCAKLSAgICAzODcwMSwgMzg3MDcsIDM4NzE0LCAzODcyMSwgMzg3MjYsIDM4NzMxLCAzODczNSwgMCwgMCwgMzg3NDEsIDM4NzQ0LCAKLSAgICAzODc0NywgMzg3NTAsIDM4NzUzLCAzODc1NiwgMzg3NTksIDM4NzYzLCAzODc2NywgMzg3NzIsIDM4Nzc3LCAzODc4MiwgCi0gICAgMzg3ODgsIDM4NzkyLCAzODc5NSwgMzg3OTgsIDM4ODAxLCAzODgwNCwgMzg4MDcsIDM4ODEwLCAzODgxMywgMzg4MTYsIAotICAgIDM4ODE5LCAzODgyMywgMzg4MjcsIDM4ODMyLCAzODgzNywgMCwgMzg4NDIsIDM4ODQ4LCAzODg1NCwgMzg4NjAsIDM4ODY3LCAKLSAgICAzODg3NCwgMzg4ODEsIDM4ODg4LCAzODg5NCwgMzg5MDAsIDM4OTA2LCAzODkxMywgMzg5MTksIDAsIDAsIDAsIDM4OTI2LCAKLSAgICAzODkyOSwgMzg5MzIsIDM4OTM1LCAzODk0MCwgMzg5NDMsIDM4OTQ2LCAzODk0OSwgMzg5NTIsIDM4OTU1LCAzODk1OCwgCi0gICAgMzg5NjIsIDM4OTY1LCAzODk2OCwgMzg5NzEsIDM4OTc0LCAzODk3NywgMzg5ODIsIDM4OTg1LCAzODk4OCwgMzg5OTEsIAotICAgIDM4OTk0LCAzODk5NywgMzkwMDIsIDM5MDA1LCAzOTAwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkwMTMsIDM5MDE4LCAzOTAyMywgMzkwMzAsIDM5MDM4LCAzOTA0MywgCi0gICAgMzkwNDgsIDM5MDUyLCAzOTA1NiwgMzkwNjEsIDM5MDY4LCAzOTA3NSwgMzkwNzksIDM5MDg0LCAzOTA4OSwgMzkwOTQsIAotICAgIDM5MDk5LCAzOTEwNiwgMzkxMTEsIDM5MTE2LCAzOTEyMSwgMzkxMzAsIDM5MTM3LCAzOTE0NCwgMzkxNDgsIDM5MTUzLCAKLSAgICAzOTE1OSwgMzkxNjQsIDM5MTcxLCAzOTE3OSwgMzkxODcsIDM5MTkxLCAzOTE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxOTksIDM5MjAzLCAzOTIxMSwgMzkyMTUsIDM5MjE5LCAzOTIyNCwgMzkyMjgsIAotICAgIDM5MjMyLCAzOTIzNiwgMzkyMzgsIDM5MjQyLCAzOTI0NiwgMzkyNTAsIDM5MjU1LCAzOTI1OSwgMzkyNjMsIDM5MjcxLCAKLSAgICAzOTI3NCwgMzkyNzgsIDM5MjgxLCAzOTI4NCwgMzkyOTAsIDM5MjkzLCAzOTI5NiwgMzkzMDIsIDM5MzA2LCAzOTMxMCwgCi0gICAgMzkzMTQsIDM5MzE3LCAzOTMyMSwgMzkzMjQsIDM5MzI4LCAzOTMzMCwgMzkzMzMsIDM5MzM2LCAzOTM0MCwgMzkzNDIsIAotICAgIDM5MzQ2LCAzOTM0OSwgMzkzNTIsIDM5MzU3LCAzOTM2MiwgMzkzNjksIDM5MzcyLCAzOTM3NSwgMzkzNzksIDM5Mzg0LCAKLSAgICAzOTM4NywgMzkzOTAsIDM5MzkzLCAzOTM5NywgMzk0MDIsIDM5NDA1LCAzOTQwOCwgMzk0MTAsIDM5NDEzLCAzOTQxNiwgCi0gICAgMzk0MTksIDM5NDIzLCAzOTQyOCwgMzk0MzEsIDM5NDM1LCAzOTQzOSwgMzk0NDMsIDM5NDQ3LCAzOTQ1MiwgMzk0NTgsIAotICAgIDM5NDYzLCAzOTQ2OCwgMzk0NzQsIDM5NDc5LCAzOTQ4NCwgMzk0ODgsIDM5NDkyLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAKLSAgICAzOTUwOCwgMzk1MTAsIDM5NTE1LCAzOTUyMSwgMzk1MjgsIDM5NTM1LCAzOTU0MiwgMzk1NDksIDM5NTU2LCAzOTU2MywgCi0gICAgMzk1NzAsIDM5NTc3LCAzOTU4NSwgMzk1OTIsIDM5NjAwLCAzOTYwNywgMzk2MTQsIDM5NjIyLCAzOTYzMCwgMzk2MzUsIAotICAgIDM5NjQwLCAzOTY0NSwgMzk2NTAsIDM5NjU1LCAzOTY2MCwgMzk2NjUsIDM5NjcwLCAzOTY3NSwgMzk2ODAsIDM5Njg2LCAKLSAgICAzOTY5MiwgMzk2OTgsIDM5NzA0LCAzOTcxMSwgMzk3MTksIDM5NzI2LCAzOTczMiwgMzk3MzgsIDM5NzQ0LCAzOTc1MCwgCi0gICAgMzk3NTYsIDM5NzYyLCAzOTc2OCwgMzk3NzQsIDM5NzgwLCAzOTc4NywgMzk3OTQsIDM5ODAxLCAzOTgwOCwgMzk4MTYsIAotICAgIDM5ODI1LCAzOTgzMywgMzk4NDQsIDM5ODUyLCAzOTg2MCwgMzk4NjksIDM5ODc2LCAzOTg4NSwgMzk4OTQsIDM5OTAyLCAKLSAgICAzOTkxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzk5MTksIDM5OTIxLCAzOTkyNCwgMzk5MjYsIDM5OTI5LCAzOTkzMiwgMzk5MzUsIAotICAgIDM5OTQwLCAzOTk0NSwgMzk5NTAsIDM5OTU1LCAzOTk1OSwgMzk5NjMsIDM5OTY3LCAzOTk3MSwgMzk5NzYsIDM5OTgyLCAKLSAgICAzOTk4NywgMzk5OTMsIDM5OTk4LCA0MDAwMywgNDAwMDgsIDQwMDE0LCA0MDAxOSwgNDAwMjUsIDQwMDMxLCA0MDAzNSwgCi0gICAgNDAwMzksIDQwMDQ0LCA0MDA0OSwgNDAwNTQsIDQwMDU5LCA0MDA2NCwgNDAwNzIsIDQwMDgwLCA0MDA4OCwgNDAwOTYsIAotICAgIDQwMTAzLCA0MDExMSwgNDAxMTgsIDQwMTI1LCA0MDEzNCwgNDAxNDYsIDQwMTUzLCA0MDE2MCwgNDAxNjcsIDQwMTc0LCAKLSAgICA0MDE4MiwgNDAxOTAsIDQwMTk3LCA0MDIwNCwgNDAyMTIsIDQwMjIwLCA0MDIyNSwgNDAyMzMsIDQwMjM4LCA0MDI0MywgCi0gICAgNDAyNDksIDQwMjU0LCA0MDI2MCwgNDAyNjcsIDQwMjc0LCA0MDI3OSwgNDAyODUsIDQwMjkwLCA0MDI5MywgNDAyOTcsIAotICAgIDQwMzAwLCA0MDMwNCwgNDAzMDgsIDQwMzEyLCA0MDMxOCwgNDAzMjQsIDQwMzMwLCA0MDMzNiwgNDAzNDAsIDQwMzQ0LCAKLSAgICA0MDM0OCwgNDAzNTIsIDQwMzU4LCA0MDM2NCwgNDAzNjgsIDQwMzczLCA0MDM3NywgNDAzODIsIDQwMzg3LCA0MDM5MiwgCi0gICAgNDAzOTUsIDQwMzk5LCA0MDQwMiwgNDA0MDYsIDQwNDEzLCA0MDQyMSwgNDA0MzIsIDQwNDQzLCA0MDQ0OCwgNDA0NTcsIAotICAgIDQwNDY0LCA0MDQ3MywgNDA0ODIsIDQwNDg2LCA0MDQ5MiwgNDA1MDAsIDQwNTA0LCA0MDUwOSwgNDA1MTQsIDQwNTIwLCAKLSAgICA0MDUyNiwgNDA1MzIsIDQwNTM5LCA0MDU0MywgNDA1NDcsIDQwNTUyLCA0MDU1NSwgNDA1NTcsIDQwNTYxLCA0MDU2NSwgCi0gICAgNDA1NzMsIDQwNTc3LCA0MDU3OSwgNDA1ODEsIDQwNTg1LCA0MDU5MywgNDA1OTgsIDQwNjA0LCA0MDYxNCwgNDA2MjEsIAotICAgIDQwNjI2LCA0MDYzMCwgNDA2MzQsIDQwNjM4LCA0MDY0MSwgNDA2NDQsIDQwNjQ3LCA0MDY1MSwgNDA2NTUsIDQwNjU5LCAKLSAgICA0MDY2MywgNDA2NjcsIDQwNjcwLCA0MDY3NCwgNDA2NzgsIDQwNjgxLCA0MDY4MywgNDA2ODYsIDQwNjg4LCA0MDY5MiwgCi0gICAgNDA2OTYsIDQwNjk4LCA0MDcwNCwgNDA3MDcsIDQwNzEyLCA0MDcxNiwgNDA3MjAsIDQwNzIyLCA0MDcyNCwgNDA3MjYsIAotICAgIDQwNzI5LCA0MDczMywgNDA3MzcsIDQwNzQxLCA0MDc0NSwgNDA3NDksIDQwNzU1LCA0MDc2MSwgNDA3NjMsIDQwNzY1LCAKLSAgICA0MDc2NywgNDA3NjksIDQwNzcyLCA0MDc3NCwgNDA3NzgsIDQwNzgwLCA0MDc4NCwgNDA3ODgsIDQwNzkzLCA0MDc5NywgCi0gICAgNDA4MDEsIDQwODA1LCA0MDgwOSwgNDA4MTMsIDQwODE5LCA0MDgyMywgNDA4MzMsIDQwODQzLCA0MDg0NywgNDA4NTMsIAotICAgIDQwODU5LCA0MDg2MywgNDA4NjcsIDQwODcwLCA0MDg3NSwgNDA4NzksIDQwODg1LCA0MDg4OSwgNDA5MDEsIDQwOTA5LCAKLSAgICA0MDkxMywgNDA5MTcsIDQwOTIzLCA0MDkyNywgNDA5MzAsIDQwOTMyLCA0MDkzNSwgNDA5MzksIDQwOTQzLCA0MDk1MCwgCi0gICAgNDA5NTQsIDQwOTU4LCA0MDk2MiwgNDA5NjUsIDQwOTcwLCA0MDk3NSwgNDA5ODAsIDQwOTg1LCA0MDk5MCwgNDA5OTUsIAotICAgIDQxMDAzLCA0MTAxMSwgNDEwMTUsIDQxMDE5LCA0MTAyMSwgNDEwMjYsIDQxMDMwLCA0MTAzNCwgNDEwNDIsIDQxMDUwLCAKLSAgICA0MTA1NiwgNDEwNjIsIDQxMDcxLCA0MTA4MCwgNDEwODUsIDQxMDkwLCA0MTA5OCwgNDExMDYsIDQxMTA4LCA0MTExMCwgCi0gICAgNDExMTUsIDQxMTIwLCA0MTEyNiwgNDExMzIsIDQxMTM4LCA0MTE0NCwgNDExNDgsIDQxMTUyLCA0MTE1OSwgNDExNjYsIAotICAgIDQxMTcyLCA0MTE3OCwgNDExODgsIDQxMTk4LCA0MTIwNiwgNDEyMTQsIDQxMjE2LCA0MTIyMCwgNDEyMjQsIDQxMjI5LCAKLSAgICA0MTIzNCwgNDEyNDEsIDQxMjQ4LCA0MTI1MSwgNDEyNTQsIDQxMjU3LCA0MTI2MCwgNDEyNjMsIDQxMjY4LCA0MTI3MiwgCi0gICAgNDEyNzcsIDQxMjgyLCA0MTI4NSwgNDEyODgsIDQxMjkxLCA0MTI5NCwgNDEyOTcsIDQxMzAxLCA0MTMwNCwgNDEzMDcsIAotICAgIDQxMzEwLCA0MTMxMywgNDEzMTUsIDQxMzE3LCA0MTMxOSwgNDEzMjEsIDQxMzI5LCA0MTMzNywgNDEzNDMsIDQxMzQ3LCAKLSAgICA0MTM1MywgNDEzNjMsIDQxMzY5LCA0MTM3NSwgNDEzODEsIDQxMzg5LCA0MTM5NywgNDE0MDgsIDQxNDEyLCA0MTQxNiwgCi0gICAgNDE0MTgsIDQxNDI0LCA0MTQyNiwgNDE0MjgsIDQxNDMwLCA0MTQzMiwgNDE0MzgsIDQxNDQxLCA0MTQ0NywgNDE0NTMsIAotICAgIDQxNDU3LCA0MTQ2MSwgNDE0NjUsIDQxNDY4LCA0MTQ3MiwgNDE0NzYsIDQxNDc4LCA0MTQ4NywgNDE0OTYsIDQxNTAxLCAKLSAgICA0MTUwNiwgNDE1MTIsIDQxNTE4LCA0MTUyNCwgNDE1MjcsIDQxNTMwLCA0MTUzMywgNDE1MzYsIDQxNTM4LCA0MTU0MywgCi0gICAgNDE1NDgsIDQxNTUzLCA0MTU1OSwgNDE1NjUsIDQxNTczLCA0MTU4MSwgNDE1ODcsIDQxNTkzLCA0MTU5OSwgNDE2MDUsIAotICAgIDQxNjE0LCA0MTYyMywgNDE2MzIsIDQxNjQxLCA0MTY1MCwgNDE2NTksIDQxNjY4LCA0MTY3NywgNDE2ODYsIDQxNjk1LCAKLSAgICA0MTcwMywgNDE3MTUsIDQxNzI1LCA0MTc0MCwgNDE3NDMsIDQxNzQ4LCA0MTc1NCwgNDE3NjAsIDQxNzY3LCA0MTc4MSwgCi0gICAgNDE3OTYsIDQxODAyLCA0MTgwOCwgNDE4MTUsIDQxODIxLCA0MTgyOSwgNDE4MzUsIDQxODQ4LCA0MTg2MiwgNDE4NjcsIAotICAgIDQxODczLCA0MTg4MCwgNDE4ODMsIDQxODg2LCA0MTg4OCwgNDE4OTEsIDQxODk0LCA0MTg5NiwgNDE4OTgsIDQxOTAyLCAKLSAgICA0MTkwNSwgNDE5MDgsIDQxOTExLCA0MTkxNCwgNDE5MTksIDQxOTI0LCA0MTkyOSwgNDE5MzQsIDQxOTM5LCA0MTk0MiwgCi0gICAgNDE5NDQsIDQxOTQ2LCA0MTk0OCwgNDE5NTIsIDQxOTU2LCA0MTk2MCwgNDE5NjYsIDQxOTcxLCA0MTk3MywgNDE5NzUsIAotICAgIDQxOTgwLCA0MTk4NSwgNDE5OTAsIDQxOTk1LCA0MjAwMCwgNDIwMDUsIDQyMDA3LCA0MjAwOSwgNDIwMTgsIDQyMDIyLCAKLSAgICA0MjAzMCwgNDIwMzksIDQyMDQxLCA0MjA0NiwgNDIwNTEsIDQyMDU5LCA0MjA2MywgNDIwNjUsIDQyMDY5LCA0MjA3MSwgCi0gICAgNDIwNzUsIDQyMDc5LCA0MjA4MywgNDIwODUsIDQyMDg3LCA0MjA4OSwgNDIwOTQsIDQyMTAxLCA0MjEwOCwgNDIxMTUsIAotICAgIDQyMTIyLCA0MjEyOSwgNDIxMzYsIDQyMTQzLCA0MjE1MCwgNDIxNTYsIDQyMTYyLCA0MjE2OSwgNDIxNzYsIDQyMTgzLCAKLSAgICA0MjE5MCwgNDIxOTYsIDQyMjAyLCA0MjIwOSwgNDIyMTYsIDQyMjIzLCA0MjIzMSwgNDIyMzgsIDQyMjQ2LCA0MjI1MywgCi0gICAgNDIyNjEsIDQyMjY4LCA0MjI3NiwgNDIyODQsIDQyMjkxLCA0MjI5OSwgNDIzMDYsIDQyMzE0LCA0MjMyMSwgNDIzMjksIAotICAgIDQyMzM2LCA0MjM0MywgNDIzNTAsIDQyMzU3LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCA0MjM4NiwgNDIzOTMsIDQyNDAxLCAKLSAgICA0MjQwOCwgNDI0MTUsIDQyNDIyLCA0MjQyOSwgNDI0MzcsIDQyNDQ1LCA0MjQ1MiwgNDI0NTksIDQyNDY1LCA0MjQ3MiwgCi0gICAgNDI0NzcsIDQyNDg0LCA0MjQ5MSwgNDI1MDAsIDQyNTA3LCA0MjUxNSwgNDI1MjMsIDQyNTI4LCA0MjUzMywgNDI1MzgsIAotICAgIDQyNTQ1LCA0MjU1MiwgNDI1NTksIDQyNTY2LCA0MjU3MSwgNDI1NzYsIDQyNTg1LCA0MjU5MSwgNDI1OTQsIDQyNjAyLCAKLSAgICA0MjYwNSwgNDI2MTAsIDQyNjE1LCA0MjYxOCwgNDI2MjEsIDQyNjI5LCA0MjYzMiwgNDI2MzcsIDQyNjQwLCA0MjY0NywgCi0gICAgNDI2NTIsIDQyNjYwLCA0MjY2MywgNDI2NjYsIDQyNjY5LCA0MjY3NCwgNDI2NzksIDQyNjgyLCA0MjY4NSwgNDI2OTMsIAotICAgIDQyNjk2LCA0MjcwMSwgNDI3MDgsIDQyNzEyLCA0MjcxNiwgNDI3MjEsIDQyNzI2LCA0MjczMiwgNDI3MzcsIDQyNzQzLCAKLSAgICA0Mjc0OSwgNDI3NTQsIDQyNzYwLCA0Mjc2OCwgNDI3NzQsIDQyNzgyLCA0Mjc5MCwgNDI3OTYsIDQyODA0LCA0MjgxMiwgCi0gICAgNDI4MjEsIDQyODI5LCA0MjgzNSwgNDI4NDMsIDQyODUyLCA0Mjg2MCwgNDI4NjQsIDQyODY5LCA0Mjg4MiwgNDI4OTUsIAotICAgIDQyODk5LCA0MjkwMywgNDI5MDcsIDQyOTExLCA0MjkyMSwgNDI5MjUsIDQyOTMwLCA0MjkzNSwgNDI5NDAsIDQyOTQ1LCAKLSAgICA0Mjk1MCwgNDI5NTUsIDQyOTY1LCA0Mjk3NSwgNDI5ODMsIDQyOTkzLCA0MzAwMywgNDMwMTEsIDQzMDIxLCA0MzAzMSwgCi0gICAgNDMwMzksIDQzMDQ5LCA0MzA1OSwgNDMwNjcsIDQzMDc1LCA0MzA4NSwgNDMwOTUsIDQzMDk4LCA0MzEwMSwgNDMxMDQsIAotICAgIDQzMTA5LCA0MzExMywgNDMxMTksIDQzMTI2LCA0MzEzMywgNDMxNDEsIDQzMTQ4LCA0MzE1MiwgNDMxNTYsIDQzMTYwLCAKLSAgICA0MzE2NCwgNDMxNjYsIDQzMTcwLCA0MzE3NCwgNDMxNzksIDQzMTg0LCA0MzE5MSwgNDMxOTgsIDQzMjAxLCA0MzIwOCwgCi0gICAgNDMyMTAsIDQzMjEyLCA0MzIxNiwgNDMyMjAsIDQzMjI1LCA0MzIzMSwgNDMyMzcsIDQzMjQzLCA0MzI0OSwgNDMyNTgsIAotICAgIDQzMjY3LCA0MzI3NiwgNDMyODAsIDQzMjgyLCA0MzI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDMyOTMsIDQzMjk3LCA0MzMwNCwgNDMzMTEsIDQzMzE4LCA0MzMyNSwgNDMzMjksIDQzMzMzLCA0MzMzNywgNDMzNDEsIAotICAgIDQzMzQ2LCA0MzM1MiwgNDMzNTcsIDQzMzYzLCA0MzM2OSwgNDMzNzUsIDQzMzgxLCA0MzM4OSwgNDMzOTYsIDQzNDAzLCAKLSAgICA0MzQxMCwgNDM0MTcsIDQzNDIyLCA0MzQyOCwgNDM0MzcsIDQzNDQxLCA0MzQ0OCwgNDM0NTIsIDQzNDU2LCA0MzQ2MiwgCi0gICAgNDM0NjgsIDQzNDc0LCA0MzQ4MCwgNDM0ODQsIDQzNDg4LCA0MzQ5MSwgNDM0OTUsIDQzNDk5LCA0MzUwNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1MTMsIAotICAgIDQzNTE2LCA0MzUyMCwgNDM1MjQsIDQzNTMwLCA0MzUzNiwgNDM1NDIsIDQzNTUwLCA0MzU1NywgNDM1NjEsIDQzNTY5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzU3NCwgNDM1NzcsIAotICAgIDQzNTgwLCA0MzU4MywgNDM1ODYsIDQzNTg5LCA0MzU5MiwgNDM1OTUsIDQzNTk4LCA0MzYwMSwgNDM2MDUsIDQzNjA5LCAKLSAgICA0MzYxMywgNDM2MTcsIDQzNjIxLCA0MzYyNSwgNDM2MjksIDQzNjMzLCA0MzYzNywgNDM2NDEsIDQzNjQ1LCA0MzY0OCwgCi0gICAgNDM2NTEsIDQzNjU0LCA0MzY1NywgNDM2NjAsIDQzNjYzLCA0MzY2NiwgNDM2NjksIDQzNjcyLCA0MzY3NiwgNDM2ODAsIAotICAgIDQzNjg0LCA0MzY4OCwgNDM2OTIsIDQzNjk2LCA0MzcwMCwgNDM3MDQsIDQzNzA4LCA0MzcxMiwgNDM3MTYsIDQzNzIyLCAKLSAgICA0MzcyOCwgNDM3MzQsIDQzNzQxLCA0Mzc0OCwgNDM3NTUsIDQzNzYyLCA0Mzc2OSwgNDM3NzYsIDQzNzgzLCA0Mzc5MCwgCi0gICAgNDM3OTcsIDQzODA0LCA0MzgxMSwgNDM4MTgsIDQzODI1LCA0MzgzMiwgNDM4MzksIDQzODQ2LCA0Mzg1MywgNDM4NTgsIAotICAgIDQzODY0LCA0Mzg3MCwgNDM4NzYsIDQzODgxLCA0Mzg4NywgNDM4OTMsIDQzODk5LCA0MzkwNCwgNDM5MTAsIDQzOTE2LCAKLSAgICA0MzkyMSwgNDM5MjYsIDQzOTMxLCA0MzkzNiwgNDM5NDIsIDQzOTQ4LCA0Mzk1MywgNDM5NTgsIDQzOTY0LCA0Mzk2OSwgCi0gICAgNDM5NzUsIDQzOTgxLCA0Mzk4NywgNDM5OTMsIDQzOTk5LCA0NDAwNCwgNDQwMTAsIDQ0MDE2LCA0NDAyMiwgNDQwMjcsIAotICAgIDQ0MDMzLCA0NDAzOSwgNDQwNDUsIDQ0MDUwLCA0NDA1NiwgNDQwNjIsIDQ0MDY3LCA0NDA3MiwgNDQwNzcsIDQ0MDgyLCAKLSAgICA0NDA4OCwgNDQwOTQsIDQ0MDk5LCA0NDEwNCwgNDQxMTAsIDQ0MTE1LCA0NDEyMSwgNDQxMjcsIDQ0MTMzLCA0NDEzOSwgCi0gICAgNDQxNDUsIDQ0MTUwLCA0NDE1NiwgNDQxNjIsIDQ0MTY4LCA0NDE3MywgNDQxNzksIDQ0MTg1LCA0NDE5MSwgNDQxOTYsIAotICAgIDQ0MjAyLCA0NDIwOCwgNDQyMTMsIDQ0MjE4LCA0NDIyMywgNDQyMjgsIDQ0MjM0LCA0NDI0MCwgNDQyNDUsIDQ0MjUwLCAKLSAgICA0NDI1NiwgNDQyNjEsIDQ0MjY3LCA0NDI3MywgNDQyNzksIDQ0Mjg1LCA0NDI5MSwgNDQyOTUsIDQ0MzAwLCA0NDMwNSwgCi0gICAgNDQzMTAsIDQ0MzE1LCA0NDMyMCwgNDQzMjUsIDQ0MzMwLCA0NDMzNSwgNDQzNDAsIDQ0MzQ1LCA0NDM0OSwgNDQzNTMsIAotICAgIDQ0MzU3LCA0NDM2MSwgNDQzNjUsIDQ0MzY5LCA0NDM3MywgNDQzNzcsIDQ0MzgxLCA0NDM4NiwgNDQzOTEsIDQ0Mzk2LCAKLSAgICA0NDQwMSwgNDQ0MDYsIDQ0NDExLCA0NDQyMCwgNDQ0MjksIDQ0NDM4LCA0NDQ0NywgNDQ0NTYsIDQ0NDY1LCA0NDQ3NCwgCi0gICAgNDQ0ODMsIDQ0NDkwLCA0NDQ5OCwgNDQ1MDYsIDQ0NTEzLCA0NDUyMCwgNDQ1MjgsIDQ0NTM2LCA0NDU0MywgNDQ1NTAsIAotICAgIDQ0NTU4LCA0NDU2NiwgNDQ1NzMsIDQ0NTgwLCA0NDU4OCwgNDQ1OTYsIDQ0NjAzLCA0NDYxMCwgNDQ2MTgsIDQ0NjI3LCAKLSAgICA0NDYzNiwgNDQ2NDQsIDQ0NjUzLCA0NDY2MiwgNDQ2NjksIDQ0Njc2LCA0NDY4NCwgNDQ2OTMsIDQ0NzAyLCA0NDcxMCwgCi0gICAgNDQ3MTksIDQ0NzI4LCA0NDczNSwgNDQ3NDIsIDQ0NzUxLCA0NDc2MCwgNDQ3NjgsIDQ0Nzc2LCA0NDc4NSwgNDQ3OTQsIAotICAgIDQ0ODAxLCA0NDgwOCwgNDQ4MTcsIDQ0ODI2LCA0NDgzNCwgNDQ4NDIsIDQ0ODUxLCA0NDg2MCwgNDQ4NjcsIDQ0ODc0LCAKLSAgICA0NDg4MywgNDQ4OTIsIDQ0OTAwLCA0NDkwOSwgNDQ5MTgsIDQ0OTI2LCA0NDkzNiwgNDQ5NDYsIDQ0OTU2LCA0NDk2NiwgCi0gICAgNDQ5NzUsIDQ0OTg0LCA0NDk5MywgNDUwMDIsIDQ1MDA5LCA0NTAxNywgNDUwMjUsIDQ1MDMzLCA0NTA0MSwgNDUwNDYsIAotICAgIDQ1MDUxLCA0NTA2MCwgNDUwNjgsIDQ1MDc1LCA0NTA4NCwgNDUwOTIsIDQ1MDk5LCA0NTEwOCwgNDUxMTYsIDQ1MTIzLCAKLSAgICA0NTEzMiwgNDUxNDAsIDQ1MTQ3LCA0NTE1NiwgNDUxNjQsIDQ1MTcxLCA0NTE4MCwgNDUxODgsIDQ1MTk1LCA0NTIwNCwgCi0gICAgNDUyMTIsIDQ1MjE5LCA0NTIyOCwgNDUyMzYsIDQ1MjQzLCA0NTI1MiwgNDUyNjAsIDQ1MjY3LCA0NTI3NiwgNDUyODUsIAotICAgIDQ1Mjk0LCA0NTMwMywgNDUzMTcsIDQ1MzMxLCA0NTMzOCwgNDUzNDMsIDQ1MzQ4LCA0NTM1MywgNDUzNTgsIDQ1MzYzLCAKLSAgICA0NTM2OCwgNDUzNzMsIDQ1Mzc4LCA0NTM4NiwgNDUzOTQsIDQ1NDAyLCA0NTQxMCwgNDU0MTUsIDQ1NDIyLCA0NTQyOSwgCi0gICAgNDU0MzYsIDQ1NDQxLCA0NTQ0OSwgNDU0NTYsIDQ1NDY0LCA0NTQ2OCwgNDU0NzUsIDQ1NDgxLCA0NTQ4OCwgNDU0OTIsIAotICAgIDQ1NDk4LCA0NTUwNCwgNDU1MTAsIDQ1NTE0LCA0NTUxNywgNDU1MjEsIDQ1NTI1LCA0NTUzMiwgNDU1MzgsIDQ1NTQ0LCAKLSAgICA0NTU1MCwgNDU1NTYsIDQ1NTcwLCA0NTU4MCwgNDU1OTQsIDQ1NjA4LCA0NTYxNCwgNDU2MjQsIDQ1NjM4LCA0NTY0MSwgCi0gICAgNDU2NDQsIDQ1NjUxLCA0NTY1OSwgNDU2NjQsIDQ1NjY5LCA0NTY3NywgNDU2ODksIDQ1NzAxLCA0NTcwOSwgNDU3MTMsIAotICAgIDQ1NzE3LCA0NTcyMCwgNDU3MjMsIDQ1NzI3LCA0NTczMSwgNDU3MzQsIDQ1NzM3LCA0NTc0MiwgNDU3NDcsIDQ1NzUzLCAKLSAgICA0NTc1OSwgNDU3NjQsIDQ1NzY5LCA0NTc3NSwgNDU3ODEsIDQ1Nzg2LCA0NTc5MSwgNDU3OTYsIDQ1ODAxLCA0NTgwNywgCi0gICAgNDU4MTMsIDQ1ODE4LCA0NTgyMywgNDU4MjksIDQ1ODM1LCA0NTg0MCwgNDU4NDUsIDQ1ODQ4LCA0NTg1MSwgNDU4NjAsIAotICAgIDQ1ODYyLCA0NTg2NCwgNDU4NjcsIDQ1ODcxLCA0NTg3NywgNDU4NzksIDQ1ODgyLCA0NTg4OSwgNDU4OTYsIDQ1OTA0LCAKLSAgICA0NTkxMiwgNDU5MjIsIDQ1OTM2LCA0NTk0MSwgNDU5NDYsIDQ1OTUwLCA0NTk1NSwgNDU5NjMsIDQ1OTcxLCA0NTk4MCwgCi0gICAgNDU5ODksIDQ1OTk4LCA0NjAwNywgNDYwMTIsIDQ2MDE3LCA0NjAyMywgNDYwMjksIDQ2MDM1LCA0NjA0MSwgNDYwNDQsIAotICAgIDQ2MDUwLCA0NjA1NiwgNDYwNjYsIDQ2MDc2LCA0NjA4NCwgNDYwOTIsIDQ2MTAxLCA0NjExMCwgNDYxMTQsIDQ2MTIyLCAKLSAgICA0NjEzMCwgNDYxMzgsIDQ2MTQ2LCA0NjE1NSwgNDYxNjQsIDQ2MTczLCA0NjE4MiwgNDYxODcsIDQ2MTkyLCA0NjE5NywgCi0gICAgNDYyMDIsIDQ2MjA3LCA0NjIxMywgNDYyMTksIDQ2MjI0LCA0NjIzMCwgNDYyMzIsIDQ2MjM0LCA0NjIzNiwgNDYyMzgsIAotICAgIDQ2MjQxLCA0NjI0NCwgNDYyNDYsIDQ2MjQ4LCA0NjI1MCwgNDYyNTQsIDQ2MjU4LCA0NjI2MCwgNDYyNjIsIDQ2MjY1LCAKLSAgICA0NjI2OCwgNDYyNzIsIDQ2Mjc4LCA0NjI4NCwgNDYyODYsIDQ2MjkzLCA0NjI5NywgNDYzMDIsIDQ2MzA3LCA0NjMwOSwgCi0gICAgNDYzMTksIDQ2MzI1LCA0NjMzMSwgNDYzMzcsIDQ2MzQzLCA0NjM0OSwgNDYzNTUsIDQ2MzYwLCA0NjM2MywgNDYzNjYsIAotICAgIDQ2MzY5LCA0NjM3MSwgNDYzNzMsIDQ2Mzc3LCA0NjM4MSwgNDYzODYsIDQ2MzkxLCA0NjM5NiwgNDYzOTksIDQ2NDAzLCAKLSAgICA0NjQwOCwgNDY0MTEsIDQ2NDE1LCA0NjQyMCwgNDY0MjUsIDQ2NDMwLCA0NjQzNSwgNDY0NDAsIDQ2NDQ1LCA0NjQ1MCwgCi0gICAgNDY0NTUsIDQ2NDYwLCA0NjQ2NSwgNDY0NzAsIDQ2NDc1LCA0NjQ4MSwgNDY0ODcsIDQ2NDkzLCA0NjQ5NSwgNDY0OTgsIAotICAgIDQ2NTAwLCA0NjUwMywgNDY1MDUsIDQ2NTA3LCA0NjUwOSwgNDY1MTEsIDQ2NTEzLCA0NjUxNSwgNDY1MTcsIDQ2NTE5LCAKLSAgICA0NjUyMSwgNDY1MjMsIDQ2NTI1LCA0NjUyNywgNDY1MjksIDQ2NTMxLCA0NjUzMywgNDY1MzUsIDQ2NTM3LCA0NjU0MiwgCi0gICAgNDY1NDcsIDQ2NTUyLCA0NjU1NywgNDY1NjIsIDQ2NTY3LCA0NjU3MiwgNDY1NzcsIDQ2NTgyLCA0NjU4NywgNDY1OTIsIAotICAgIDQ2NTk3LCA0NjYwMiwgNDY2MDcsIDQ2NjEyLCA0NjYxNywgNDY2MjIsIDQ2NjI3LCA0NjYzMiwgNDY2MzcsIDQ2NjQxLCAKLSAgICA0NjY0NSwgNDY2NDksIDQ2NjU1LCA0NjY2MSwgNDY2NjYsIDQ2NjcxLCA0NjY3NiwgNDY2ODEsIDQ2Njg2LCA0NjY5MSwgCi0gICAgNDY2OTksIDQ2NzA3LCA0NjcxNSwgNDY3MjMsIDQ2NzMxLCA0NjczOSwgNDY3NDcsIDQ2NzU1LCA0Njc2MSwgNDY3NjYsIAotICAgIDQ2NzcxLCA0Njc3NiwgNDY3NzksIDQ2NzgzLCA0Njc4NywgNDY3OTEsIDQ2Nzk1LCA0Njc5OSwgNDY4MDMsIDQ2ODEwLCAKLSAgICA0NjgxNywgNDY4MjUsIDQ2ODMzLCA0NjgzOCwgNDY4NDMsIDQ2ODUwLCA0Njg1NywgNDY4NjQsIDQ2ODcxLCA0Njg3NCwgCi0gICAgNDY4NzcsIDQ2ODgyLCA0Njg4NCwgNDY4ODgsIDQ2ODkzLCA0Njg5NSwgNDY4OTcsIDQ2ODk5LCA0NjkwMSwgNDY5MDYsIAotICAgIDQ2OTA5LCA0NjkxMSwgNDY5MTYsIDQ2OTIzLCA0NjkzMCwgNDY5MzMsIDQ2OTM3LCA0Njk0MiwgNDY5NDcsIDQ2OTU1LCAKLSAgICA0Njk2MSwgNDY5NjcsIDQ2OTc5LCA0Njk4NiwgNDY5OTMsIDQ2OTk4LCA0NzAwMywgNDcwMDksIDQ3MDEyLCA0NzAxNSwgCi0gICAgNDcwMjAsIDQ3MDIyLCA0NzAyNiwgNDcwMjgsIDQ3MDMwLCA0NzAzMiwgNDcwMzQsIDQ3MDM2LCA0NzAzOCwgNDcwNDMsIAotICAgIDQ3MDQ1LCA0NzA0NywgNDcwNDksIDQ3MDUxLCA0NzA1NSwgNDcwNTcsIDQ3MDYwLCA0NzA2NSwgNDcwNzAsIDQ3MDc1LCAKLSAgICA0NzA4MCwgNDcwODYsIDQ3MDkyLCA0NzA5NCwgNDcwOTcsIDQ3MTA0LCA0NzExMSwgNDcxMTgsIDQ3MTI1LCA0NzEyOSwgCi0gICAgNDcxMzMsIDQ3MTM1LCA0NzEzNywgNDcxNDEsIDQ3MTQ3LCA0NzE1MiwgNDcxNTQsIDQ3MTU4LCA0NzE2NywgNDcxNzUsIAotICAgIDQ3MTgzLCA0NzE4OSwgNDcxOTUsIDQ3MjAwLCA0NzIwNiwgNDcyMTEsIDQ3MjE0LCA0NzIyOCwgNDcyMzEsIDQ3MjM2LCAKLSAgICA0NzI0MSwgNDcyNDcsIDQ3MjU3LCA0NzI1OSwgNDcyNjUsIDQ3MjcxLCA0NzI3NSwgNDcyODIsIDQ3Mjg2LCA0NzI4OCwgCi0gICAgNDcyOTAsIDQ3Mjk0LCA0NzMwMCwgNDczMDUsIDQ3MzExLCA0NzMxMywgNDczMTksIDQ3MzIxLCA0NzMyNywgNDczMjksIAotICAgIDQ3MzMxLCA0NzMzNiwgNDczMzgsIDQ3MzQyLCA0NzM0NywgNDczNDksIDQ3MzU0LCA0NzM1OSwgNDczNjMsIDQ3MzcwLCAwLCAKLSAgICA0NzM4MCwgNDczODYsIDQ3Mzg5LCA0NzM5NSwgNDczOTgsIDQ3NDAzLCA0NzQwOCwgNDc0MTIsIDQ3NDE0LCA0NzQxNiwgCi0gICAgNDc0MjAsIDQ3NDI0LCA0NzQyOCwgNDc0MzIsIDQ3NDM3LCA0NzQzOSwgNDc0NDQsIDQ3NDQ3LCA0NzQ1MCwgNDc0NTMsIAotICAgIDQ3NDU3LCA0NzQ2MSwgNDc0NjYsIDQ3NDcwLCA0NzQ3NSwgNDc0ODAsIDQ3NDg0LCA0NzQ5MCwgNDc0OTcsIDQ3NTAwLCAKLSAgICA0NzUwNiwgNDc1MTEsIDQ3NTE1LCA0NzUyMCwgNDc1MjYsIDQ3NTMyLCA0NzUzOSwgNDc1NDUsIDQ3NTUyLCA0NzU1OSwgCi0gICAgNDc1NjEsIDQ3NTY4LCA0NzU3MiwgNDc1NzksIDQ3NTg1LCA0NzU5MCwgNDc1OTYsIDQ3NjAwLCA0NzYwNSwgNDc2MDgsIAotICAgIDQ3NjE0LCA0NzYyMCwgNDc2MjcsIDQ3NjM1LCA0NzY0MiwgNDc2NTEsIDQ3NjYxLCA0NzY2OCwgNDc2NzQsIDQ3Njc4LCAKLSAgICA0NzY4NiwgNDc2OTEsIDQ3NzAwLCA0NzcwMywgNDc3MDYsIDQ3NzE1LCA0NzcyNiwgNDc3MzMsIDQ3NzM1LCA0Nzc0MSwgCi0gICAgNDc3NDYsIDQ3NzQ4LCA0Nzc1MSwgNDc3NTUsIDQ3NzYzLCA0Nzc3MiwgNDc3NzUsIDQ3NzgwLCA0Nzc4NSwgNDc3OTMsIAotICAgIDQ3ODAxLCA0NzgwOSwgNDc4MTcsIDQ3ODIzLCA0NzgyOSwgNDc4MzUsIDQ3ODQzLCA0Nzg0OCwgNDc4NTEsIDQ3ODU1LCAKLSAgICA0Nzg1OCwgNDc4NzAsIDQ3ODgwLCA0Nzg5MSwgNDc5MDAsIDQ3OTExLCA0NzkyMSwgNDc5MzAsIDQ3OTM2LCA0Nzk0NCwgCi0gICAgNDc5NDgsIDQ3OTU2LCA0Nzk2MCwgNDc5NjgsIDQ3OTc1LCA0Nzk4MiwgNDc5OTEsIDQ4MDAwLCA0ODAxMCwgNDgwMjAsIAotICAgIDQ4MDMwLCA0ODA0MCwgNDgwNDksIDQ4MDU4LCA0ODA2OCwgNDgwNzgsIDQ4MDg3LCA0ODA5NiwgNDgxMDIsIDQ4MTA4LCAKLSAgICA0ODExNCwgNDgxMjAsIDQ4MTI2LCA0ODEzMiwgNDgxMzgsIDQ4MTQ0LCA0ODE1MCwgNDgxNTcsIDQ4MTYzLCA0ODE2OSwgCi0gICAgNDgxNzUsIDQ4MTgxLCA0ODE4NywgNDgxOTMsIDQ4MTk5LCA0ODIwNSwgNDgyMTEsIDQ4MjE4LCA0ODIyNSwgNDgyMzIsIAotICAgIDQ4MjM5LCA0ODI0NiwgNDgyNTMsIDQ4MjYwLCA0ODI2NywgNDgyNzQsIDQ4MjgxLCA0ODI4OSwgNDgyOTQsIDQ4Mjk3LCAKLSAgICA0ODMwMSwgNDgzMDUsIDQ4MzExLCA0ODMxNCwgNDgzMjAsIDQ4MzI2LCA0ODMzMSwgNDgzMzUsIDQ4MzQwLCA0ODM0NiwgCi0gICAgNDgzNTMsIDQ4MzU2LCA0ODM2MywgNDgzNzAsIDQ4Mzc0LCA0ODM4MywgNDgzOTIsIDQ4Mzk3LCA0ODQwMywgNDg0MDgsIAotICAgIDQ4NDEzLCA0ODQyMCwgNDg0MjcsIDQ4NDM1LCA0ODQ0MywgNDg0NTIsIDQ4NDU2LCA0ODQ2NSwgNDg0NzAsIDQ4NDc0LCAKLSAgICA0ODQ4MSwgNDg0ODUsIDQ4NDkyLCA0ODUwMCwgNDg1MDUsIDQ4NTEzLCA0ODUxNywgNDg1MjIsIDQ4NTI2LCA0ODUzMSwgCi0gICAgNDg1MzUsIDQ4NTQwLCA0ODU0NSwgNDg1NTQsIDQ4NTU2LCA0ODU2MCwgNDg1NjQsIDQ4NTcxLCA0ODU3OCwgNDg1ODMsIAotICAgIDQ4NTkxLCA0ODU5NywgMCwgNDg2MDMsIDAsIDQ4NjA2LCA0ODYxMSwgNDg2MTYsIDQ4NjI0LCA0ODYyOCwgNDg2MzUsIAotICAgIDQ4NjQzLCA0ODY1MSwgNDg2NTYsIDQ4NjYxLCA0ODY2NywgNDg2NzIsIDQ4Njc3LCA0ODY4MywgNDg2ODgsIDQ4NjkxLCAKLSAgICA0ODY5NSwgNDg2OTksIDQ4NzA2LCA0ODcxNSwgNDg3MjAsIDQ4NzI5LCA0ODczOCwgNDg3NDQsIDQ4NzUwLCA0ODc1NSwgCi0gICAgNDg3NjAsIDQ4NzY1LCA0ODc3MCwgNDg3NzYsIDQ4NzgyLCA0ODc5MCwgNDg3OTgsIDQ4ODA0LCA0ODgxMCwgNDg4MTUsIAotICAgIDQ4ODIwLCA0ODgyNywgNDg4MzQsIDQ4ODQwLCA0ODg0MywgNDg4NDYsIDQ4ODUwLCA0ODg1NCwgNDg4NTgsIDQ4ODYzLCAKLSAgICA0ODg2OSwgNDg4NzUsIDQ4ODgyLCA0ODg4OSwgNDg4OTQsIDQ4ODk4LCA0ODkwMiwgNDg5MDYsIDQ4OTEwLCA0ODkxNCwgCi0gICAgNDg5MTgsIDQ4OTIyLCA0ODkyNiwgNDg5MzAsIDQ4OTM0LCA0ODkzOCwgNDg5NDIsIDQ4OTQ2LCA0ODk1MCwgNDg5NTQsIAotICAgIDQ4OTU4LCA0ODk2MiwgNDg5NjYsIDQ4OTcwLCA0ODk3NCwgNDg5NzgsIDQ4OTgyLCA0ODk4NiwgNDg5OTAsIDQ4OTk0LCAKLSAgICA0ODk5OCwgNDkwMDIsIDQ5MDA2LCA0OTAxMCwgNDkwMTQsIDQ5MDE4LCA0OTAyMiwgNDkwMjYsIDQ5MDMwLCA0OTAzNCwgCi0gICAgNDkwMzgsIDQ5MDQyLCA0OTA0NiwgNDkwNTAsIDQ5MDU0LCA0OTA1OCwgNDkwNjIsIDQ5MDY2LCA0OTA3MCwgNDkwNzQsIAotICAgIDQ5MDc4LCA0OTA4MiwgNDkwODYsIDQ5MDkwLCA0OTA5NCwgNDkwOTgsIDQ5MTAyLCA0OTEwNiwgNDkxMTAsIDQ5MTE0LCAKLSAgICA0OTExOCwgNDkxMjIsIDQ5MTI2LCA0OTEzMCwgNDkxMzQsIDQ5MTM4LCA0OTE0MiwgNDkxNDYsIDQ5MTUwLCA0OTE1NCwgCi0gICAgNDkxNTgsIDQ5MTYyLCA0OTE2NiwgNDkxNzAsIDQ5MTc0LCA0OTE3OCwgNDkxODIsIDQ5MTg2LCA0OTE5MCwgNDkxOTQsIAotICAgIDQ5MTk4LCA0OTIwMiwgNDkyMDYsIDQ5MjEwLCA0OTIxNCwgNDkyMTgsIDQ5MjIyLCA0OTIyNiwgNDkyMzAsIDQ5MjM0LCAKLSAgICA0OTIzOCwgNDkyNDIsIDQ5MjQ2LCA0OTI1MCwgNDkyNTQsIDQ5MjU4LCA0OTI2MiwgNDkyNjYsIDQ5MjcwLCA0OTI3NCwgCi0gICAgNDkyNzgsIDQ5MjgyLCA0OTI4NiwgNDkyOTAsIDQ5Mjk0LCA0OTI5OCwgNDkzMDIsIDQ5MzA2LCA0OTMxMCwgNDkzMTQsIAotICAgIDQ5MzE4LCA0OTMyMiwgNDkzMjYsIDQ5MzMwLCA0OTMzNCwgNDkzMzgsIDQ5MzQyLCA0OTM0NiwgNDkzNTAsIDQ5MzU0LCAKLSAgICA0OTM1OCwgNDkzNjIsIDQ5MzY2LCA0OTM3MCwgNDkzNzQsIDQ5Mzc4LCA0OTM4MiwgNDkzODYsIDQ5MzkwLCA0OTM5NCwgCi0gICAgNDkzOTgsIDQ5NDAyLCA0OTQwNiwgNDk0MTAsIDQ5NDE0LCA0OTQxOCwgNDk0MjIsIDQ5NDI2LCA0OTQzMCwgNDk0MzQsIAotICAgIDQ5NDM4LCA0OTQ0MiwgNDk0NDYsIDQ5NDUwLCA0OTQ1NCwgNDk0NTgsIDQ5NDYyLCA0OTQ2NiwgNDk0NzAsIDQ5NDc0LCAKLSAgICA0OTQ3OCwgNDk0ODIsIDQ5NDg2LCA0OTQ5MCwgNDk0OTQsIDQ5NDk4LCA0OTUwMiwgNDk1MDYsIDQ5NTEwLCA0OTUxNCwgCi0gICAgNDk1MTgsIDQ5NTIyLCA0OTUyNiwgNDk1MzAsIDQ5NTM0LCA0OTUzOCwgNDk1NDIsIDQ5NTQ2LCA0OTU1MCwgNDk1NTQsIAotICAgIDQ5NTU4LCA0OTU2MiwgNDk1NjYsIDQ5NTcwLCA0OTU3NCwgNDk1NzgsIDQ5NTgyLCA0OTU4NiwgNDk1OTAsIDQ5NTk0LCAKLSAgICA0OTU5OCwgNDk2MDIsIDQ5NjA2LCA0OTYxMCwgNDk2MTQsIDQ5NjE4LCA0OTYyMiwgNDk2MjYsIDQ5NjMwLCA0OTYzNCwgCi0gICAgNDk2MzgsIDQ5NjQyLCA0OTY0NiwgNDk2NTAsIDQ5NjU0LCA0OTY1OCwgNDk2NjIsIDQ5NjY2LCA0OTY3MCwgNDk2NzQsIAotICAgIDQ5Njc4LCA0OTY4MiwgNDk2ODYsIDQ5NjkwLCA0OTY5NCwgNDk2OTgsIDQ5NzAyLCA0OTcwNiwgNDk3MTAsIDQ5NzE0LCAKLSAgICA0OTcxOCwgNDk3MjIsIDQ5NzI2LCA0OTczMCwgNDk3MzQsIDQ5NzM4LCA0OTc0MiwgNDk3NDYsIDQ5NzUwLCA0OTc1NCwgCi0gICAgNDk3NTgsIDQ5NzYyLCA0OTc2NiwgNDk3NzAsIDQ5Nzc0LCA0OTc3OCwgNDk3ODIsIDQ5Nzg2LCA0OTc5MCwgNDk3OTQsIAotICAgIDQ5Nzk4LCA0OTgwMiwgNDk4MDYsIDQ5ODEwLCA0OTgxNCwgNDk4MTgsIDQ5ODIyLCA0OTgyNiwgNDk4MzAsIDQ5ODM0LCAKLSAgICA0OTgzOCwgNDk4NDIsIDQ5ODQ2LCA0OTg1MCwgNDk4NTQsIDQ5ODU4LCA0OTg2MiwgNDk4NjYsIDQ5ODcwLCA0OTg3NCwgCi0gICAgNDk4NzgsIDQ5ODgyLCA0OTg4NiwgNDk4OTAsIDQ5ODk0LCA0OTg5OCwgNDk5MDIsIDQ5OTA2LCA0OTkxMCwgNDk5MTQsIAotICAgIDQ5OTE4LCA0OTkyNSwgNDk5MzMsIDQ5OTM5LCA0OTk0NSwgNDk5NTIsIDQ5OTU5LCA0OTk2NSwgNDk5NzEsIDQ5OTc3LCAKLSAgICA0OTk4MywgNDk5ODgsIDQ5OTkzLCA0OTk5OCwgNTAwMDMsIDUwMDA5LCA1MDAxNSwgNTAwMjMsIDUwMDMwLCA1MDAzNiwgCi0gICAgNTAwNDIsIDUwMDUwLCA1MDA1OSwgNTAwNjYsIDUwMDc2LCA1MDA4NywgNTAwOTAsIDUwMDkzLCA1MDA5NywgNTAxMDEsIAotICAgIDUwMTA4LCA1MDExNSwgNTAxMjYsIDUwMTM3LCA1MDE0NywgNTAxNTcsIDUwMTY0LCA1MDE3MSwgNTAxNzgsIDUwMTg1LCAKLSAgICA1MDE5NiwgNTAyMDcsIDUwMjE4LCA1MDIyOSwgNTAyMzksIDUwMjQ5LCA1MDI2MSwgNTAyNzMsIDUwMjg0LCA1MDI5NSwgCi0gICAgNTAzMDcsIDUwMzE5LCA1MDMyOCwgNTAzMzgsIDUwMzQ4LCA1MDM1OSwgNTAzNzAsIDUwMzc3LCA1MDM4NCwgNTAzOTEsIAotICAgIDUwMzk4LCA1MDQwOCwgNTA0MTgsIDUwNDI2LCA1MDQzNCwgNTA0NDEsIDUwNDQ4LCA1MDQ1NSwgNTA0NjIsIDUwNDY5LCAKLSAgICA1MDQ3NCwgNTA0NzksIDUwNDg1LCA1MDQ5MywgNTA1MDMsIDUwNTExLCA1MDUxOSwgNTA1MjcsIDUwNTM1LCA1MDU0MywgCi0gICAgNTA1NTEsIDUwNTU5LCA1MDU2NywgNTA1NzYsIDUwNTg1LCA1MDU5NSwgNTA2MDUsIDUwNjE0LCA1MDYyMywgNTA2MzMsIAotICAgIDUwNjQzLCA1MDY1MiwgNTA2NjEsIDUwNjcxLCA1MDY4MSwgNTA2OTAsIDUwNjk5LCA1MDcwOSwgNTA3MTksIDUwNzMzLCAKLSAgICA1MDc1MCwgNTA3NjQsIDUwNzgxLCA1MDc5NSwgNTA4MDksIDUwODIzLCA1MDgzNywgNTA4NDcsIDUwODU4LCA1MDg2OCwgCi0gICAgNTA4NzksIDUwODk2LCA1MDkxMywgNTA5MjEsIDUwOTI3LCA1MDkzNCwgNTA5NDEsIDUwOTQ4LCA1MDk1NSwgNTA5NjAsIAotICAgIDUwOTY2LCA1MDk3MSwgNTA5NzYsIDUwOTgyLCA1MDk4NywgNTA5OTIsIDUwOTk3LCA1MTAwMiwgNTEwMDcsIDUxMDE0LCAKLSAgICA1MTAxOSwgNTEwMjYsIDUxMDMxLCA1MTAzNiwgNTEwNDAsIDUxMDQ0LCA1MTA1MSwgNTEwNTgsIDUxMDY1LCA1MTA3MiwgCi0gICAgNTEwNzksIDUxMDg2LCA1MTA5OSwgNTExMTIsIDUxMTI1LCA1MTEzOCwgNTExNDYsIDUxMTU0LCA1MTE2MCwgNTExNjYsIAotICAgIDUxMTczLCA1MTE4MCwgNTExODcsIDUxMTk0LCA1MTE5OCwgNTEyMDMsIDUxMjExLCA1MTIxOSwgNTEyMjcsIDUxMjM0LCAKLSAgICA1MTIzOCwgNTEyNDYsIDUxMjU0LCA1MTI1OCwgNTEyNjIsIDUxMjY3LCA1MTI3NCwgNTEyODIsIDUxMjkwLCA1MTMxMCwgCi0gICAgNTEzMzAsIDUxMzUwLCA1MTM3MCwgNTEzOTAsIDUxNDEwLCA1MTQzMCwgNTE0NTAsIDUxNDU2LCA1MTQ2MywgNTE0NzIsIAotICAgIDUxNDgwLCA1MTQ4OCwgNTE0OTMsIDUxNDk2LCA1MTQ5OSwgNTE1MDQsIDUxNTA3LCA1MTUyNiwgNTE1MzMsIDUxNTM5LCAKLSAgICA1MTU0NSwgNTE1NDksIDUxNTUyLCA1MTU1NSwgNTE1NTgsIDUxNTcwLCA1MTU4MywgNTE1OTAsIDUxNTk3LCA1MTYwMCwgCi0gICAgNTE2MDQsIDUxNjA3LCA1MTYxMiwgNTE2MTcsIDUxNjIyLCA1MTYyOCwgNTE2MzcsIDUxNjQ0LCA1MTY1MSwgNTE2NTksIAotICAgIDUxNjY2LCA1MTY3MywgNTE2NzYsIDUxNjgyLCA1MTY4OCwgNTE2OTEsIDUxNjk0LCA1MTY5OSwgNTE3MDQsIDUxNzEwLCAKLSAgICA1MTcxNiwgNTE3MjAsIDUxNzI1LCA1MTczMiwgNTE3MzYsIDUxNzQyLCA1MTc0NiwgNTE3NTAsIDUxNzU4LCA1MTc3MCwgCi0gICAgNTE3NzksIDUxNzgzLCA1MTc4NSwgNTE3OTQsIDUxODAzLCA1MTgwOSwgNTE4MTIsIDUxODE4LCA1MTgyNCwgNTE4MjksIAotICAgIDUxODM0LCA1MTgzOSwgNTE4NDQsIDUxODQ5LCA1MTg1NCwgNTE4NTYsIDUxODYyLCA1MTg2NywgNTE4NzQsIDUxODc4LCAKLSAgICA1MTg4NCwgNTE4ODcsIDUxODkxLCA1MTg5OCwgNTE5MDUsIDUxOTA3LCA1MTkwOSwgNTE5MTUsIDUxOTIxLCA1MTkyNywgCi0gICAgNTE5MzYsIDUxOTQ1LCA1MTk1MiwgNTE5NTksIDUxOTY1LCA1MTk3MSwgNTE5NzYsIDUxOTgxLCA1MTk4NiwgNTE5OTIsIAotICAgIDUxOTk4LCA1MjAwMywgNTIwMTAsIDUyMDE0LCA1MjAxOCwgNTIwMzEsIDUyMDQ0LCA1MjA1NiwgNTIwNjUsIDUyMDcxLCAKLSAgICA1MjA3OCwgNTIwODMsIDUyMDg4LCA1MjA5MywgNTIwOTgsIDUyMTAzLCA1MjEwNSwgNTIxMTIsIDUyMTE5LCA1MjEyNiwgCi0gICAgNTIxMzMsIDUyMTQwLCA1MjE0OCwgNTIxNTQsIDUyMTU5LCA1MjE2NSwgNTIxNzEsIDUyMTc3LCA1MjE4NCwgNTIxOTAsIAotICAgIDUyMTk4LCA1MjIwNiwgNTIyMTQsIDUyMjIyLCA1MjIyOSwgNTIyMzUsIDUyMjQxLCA1MjI1MCwgNTIyNTQsIDUyMjYzLCAKLSAgICA1MjI3MiwgNTIyODEsIDUyMjg5LCA1MjI5MywgNTIyOTksIDUyMzA2LCA1MjMxMywgNTIzMTcsIDUyMzIzLCA1MjMzMCwgCi0gICAgNTIzMzUsIDUyMzQwLCA1MjM0NiwgNTIzNTEsIDUyMzU2LCA1MjM2MywgNTIzNzAsIDUyMzc1LCA1MjM4MCwgNTIzODgsIAotICAgIDUyMzk2LCA1MjQwNiwgNTI0MTYsIDUyNDIzLCA1MjQzMCwgNTI0MzQsIDUyNDM4LCA1MjQ1MCwgNTI0NTYsIDUyNDYyLCAKLSAgICA1MjQ2NywgNTI0NzIsIDUyNDc5LCA1MjQ4NiwgNTI0OTIsIDUyNDk4LCA1MjUwNywgNTI1MTUsIDUyNTIzLCA1MjUzMCwgCi0gICAgNTI1MzcsIDUyNTQ0LCA1MjU1MCwgNTI1NTcsIDUyNTYzLCA1MjU3MCwgNTI1NzcsIDUyNTg0LCA1MjU5MSwgNTI1OTcsIAotICAgIDUyNjAyLCA1MjYxMSwgNTI2MjEsIDUyNjI4LCA1MjYzNywgNTI2NDMsIDUyNjQ4LCA1MjY1MywgNTI2NjMsIDUyNjY5LCAKLSAgICA1MjY3NSwgNTI2ODEsIDUyNjg5LCA1MjY5NCwgNTI3MDEsIDUyNzA4LCA1MjcxOSwgNTI3MjYsIDUyNzMzLCA1Mjc0MCwgCi0gICAgNTI3NDcsIDUyNzU0LCA1Mjc2MSwgNTI3NjgsIDUyNzgwLCA1Mjc5MiwgNTI4MDMsIDUyODE0LCA1MjgyNywgNTI4NDAsIAotICAgIDUyODQ1LCA1Mjg1MCwgNTI4NTksIDUyODY4LCA1Mjg3NSwgNTI4ODIsIDUyODkxLCA1MjkwMCwgNTI5MDgsIDUyOTE2LCAKLSAgICA1MjkyNCwgNTI5MzIsIDUyOTQyLCA1Mjk1MiwgNTI5NjYsIDUyOTgwLCA1Mjk4OCwgNTI5OTYsIDUzMDA4LCA1MzAyMCwgCi0gICAgNTMwMjgsIDUzMDM2LCA1MzA0NiwgNTMwNTYsIDUzMDYxLCA1MzA2NiwgNTMwNzUsIDUzMDg0LCA1MzA4OSwgNTMwOTQsIAotICAgIDUzMTAyLCA1MzEwOCwgNTMxMTQsIDUzMTIyLCA1MzEzMCwgNTMxNDMsIDUzMTU2LCA1MzE2MCwgNTMxNjQsIDUzMTcxLCAKLSAgICA1MzE3OCwgNTMxODUsIDUzMTkzLCA1MzIwMSwgNTMyMTAsIDUzMjE5LCA1MzIyNSwgNTMyMzEsIDUzMjM4LCA1MzI0NSwgCi0gICAgNTMyNTIsIDUzMjU5LCA1MzI2OCwgNTMyNzcsIDUzMjgwLCA1MzI4MywgNTMyODgsIDUzMjkzLCA1MzI5OSwgNTMzMDUsIAotICAgIDUzMzEyLCA1MzMxOSwgNTMzMjksIDUzMzM5LCA1MzM0NiwgNTMzNTMsIDUzMzYxLCA1MzM2OSwgNTMzNzcsIDUzMzg1LCAKLSAgICA1MzM5MywgNTM0MDEsIDUzNDA4LCA1MzQxNSwgNTM0MTksIDUzNDIzLCA1MzQzMCwgNTM0MzcsIDUzNDQyLCA1MzQ0NywgCi0gICAgNTM0NTIsIDUzNDU3LCA1MzQ2MywgNTM0NzcsIDUzNDg0LCA1MzQ5MSwgNTM0OTUsIDUzNDk3LCA1MzQ5OSwgNTM1MDQsIAotICAgIDUzNTA5LCA1MzUxNCwgNTM1MTgsIDUzNTI2LCA1MzUzMywgNTM1NDAsIDUzNTQ4LCA1MzU2MCwgNTM1NjgsIDUzNTc2LCAKLSAgICA1MzU4NywgNTM1OTEsIDUzNTk1LCA1MzYwMSwgNTM2MDksIDUzNjIyLCA1MzYyOSwgNTM2MzYsIDUzNjQzLCA1MzY0OCwgCi0gICAgNTM2NTUsIDUzNjY0LCA1MzY3MiwgNTM2NzgsIDUzNjg0LCA1MzY5MCwgNTM2OTksIDUzNzA4LCA1MzcxNiwgNTM3MjUsIAotICAgIDUzNzMwLCA1MzczMywgNTM3MzgsIDUzNzQ0LCA1Mzc1MCwgNTM3NTYsIDUzNzYyLCA1Mzc2NiwgNTM3NjksIDUzNzczLCAKLSAgICA1Mzc3NywgNTM3ODMsIDUzNzg5LCA1Mzc5NSwgNTM4MDEsIDUzODA1LCA1MzgwOSwgNTM4MTYsIDUzODIzLCA1MzgzMCwgCi0gICAgNTM4MzcsIDUzODQ0LCA1Mzg1MSwgNTM4NjEsIDUzODcxLCA1Mzg3OCwgNTM4ODUsIDUzODkzLCA1MzkwMSwgNTM5MDUsIAotICAgIDUzOTEwLCA1MzkxNSwgNTM5MjEsIDUzOTI3LCA1MzkzMCwgNTM5MzMsIDUzOTM2LCA1MzkzOSwgNTM5NDMsIDUzOTQ4LCAKLSAgICA1Mzk1MywgNTM5NTgsIDUzOTYzLCA1Mzk2OCwgNTM5NzIsIDUzOTc2LCA1Mzk4MCwgNTM5ODQsIDUzOTg4LCA1Mzk5MiwgCi0gICAgNTM5OTYsIDU0MDAyLCA1NDAwNiwgNTQwMTIsIDU0MDE3LCA1NDAyNCwgNTQwMzIsIDU0MDM5LCA1NDA0NywgNTQwNTQsIAotICAgIDU0MDYyLCA1NDA3MSwgNTQwNzgsIDU0MDg4LCA1NDA5OSwgNTQxMDUsIDU0MTE0LCA1NDEyMCwgNTQxMjksIDU0MTM4LCAKLSAgICA1NDE0NCwgNTQxNTAsIDU0MTU0LCA1NDE1OCwgNTQxNjcsIDU0MTc2LCA1NDE4MywgNTQxOTAsIDU0MTk5LCAwLCAwLCAwLCAKLSAgICA1NDIwOCwgNTQyMTMsIDU0MjE3LCA1NDIyMSwgNTQyMjYsIDU0MjMxLCA1NDIzNiwgNTQyNDQsIDU0MjUyLCA1NDI1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQyNTksIDU0MjY0LCA1NDI2OSwgNTQyNzQsIDU0Mjc5LCAKLSAgICA1NDI4NCwgNTQyODksIDU0Mjk0LCA1NDI5OSwgNTQzMDQsIDU0MzA5LCA1NDMxNSwgNTQzMTksIDU0MzI0LCA1NDMyOSwgCi0gICAgNTQzMzQsIDU0MzM5LCA1NDM0NCwgNTQzNDksIDU0MzU0LCA1NDM1OSwgNTQzNjQsIDU0MzY5LCA1NDM3NCwgNTQzNzksIAotICAgIDU0Mzg0LCA1NDM4OSwgNTQzOTQsIDU0Mzk5LCA1NDQwNCwgNTQ0MDksIDU0NDE0LCA1NDQxOSwgNTQ0MjQsIDU0NDI5LCAKLSAgICA1NDQzNSwgNTQ0NDAsIDU0NDQ2LCA1NDQ1NSwgNTQ0NjAsIDU0NDY4LCA1NDQ3NSwgNTQ0ODQsIDU0NDg5LCA1NDQ5NCwgCi0gICAgNTQ0OTksIDU0NTA1LCAwLCA1NDUxMiwgNTQ1MTcsIDU0NTIyLCA1NDUyNywgNTQ1MzIsIDU0NTM3LCA1NDU0MiwgNTQ1NDcsIAotICAgIDU0NTUyLCA1NDU1NywgNTQ1NjIsIDU0NTY4LCA1NDU3MiwgNTQ1NzcsIDU0NTgyLCA1NDU4NywgNTQ1OTIsIDU0NTk3LCAKLSAgICA1NDYwMiwgNTQ2MDcsIDU0NjEyLCA1NDYxNywgNTQ2MjIsIDU0NjI3LCA1NDYzMiwgNTQ2MzcsIDU0NjQyLCA1NDY0NywgCi0gICAgNTQ2NTIsIDU0NjU3LCA1NDY2MiwgNTQ2NjcsIDU0NjcyLCA1NDY3NywgNTQ2ODIsIDU0Njg4LCA1NDY5MywgNTQ2OTksIAotICAgIDU0NzA4LCA1NDcxMywgNTQ3MjEsIDU0NzI4LCA1NDczNywgNTQ3NDIsIDU0NzQ3LCA1NDc1MiwgNTQ3NTgsIDAsIDU0NzY1LCAKLSAgICA1NDc3MywgNTQ3ODEsIDU0NzkxLCA1NDc5OCwgNTQ4MDYsIDU0ODEyLCA1NDgyMSwgNTQ4MjksIDU0ODM3LCA1NDg0NSwgCi0gICAgNTQ4NTMsIDU0ODYxLCA1NDg2OSwgNTQ4NzQsIDU0ODgxLCA1NDg4NywgNTQ4OTQsIDU0OTAyLCA1NDkwOSwgNTQ5MTYsIAotICAgIDU0OTI0LCA1NDkzMCwgNTQ5MzYsIDU0OTQzLCA1NDk1MCwgNTQ5NjAsIDU0OTcwLCA1NDk3NywgNTQ5ODQsIDU0OTg5LCAKLSAgICA1NDk5OSwgNTUwMDksIDU1MDE0LCA1NTAxOSwgNTUwMjQsIDU1MDI5LCA1NTAzNCwgNTUwMzksIDU1MDQ0LCA1NTA0OSwgCi0gICAgNTUwNTQsIDU1MDU5LCA1NTA2NCwgNTUwNjksIDU1MDc0LCA1NTA3OSwgNTUwODQsIDU1MDg5LCA1NTA5NCwgNTUwOTksIAotICAgIDU1MTA0LCA1NTEwOSwgNTUxMTQsIDU1MTE5LCA1NTEyNCwgNTUxMjksIDU1MTM0LCA1NTEzOSwgNTUxNDQsIDU1MTQ5LCAKLSAgICA1NTE1NCwgNTUxNTksIDU1MTYzLCA1NTE2NywgNTUxNzIsIDU1MTc3LCA1NTE4MiwgNTUxODcsIDU1MTkyLCA1NTE5NywgCi0gICAgNTUyMDIsIDU1MjA3LCA1NTIxMiwgNTUyMTcsIDU1MjIyLCA1NTIyNywgNTUyMzIsIDU1MjM3LCA1NTI0MiwgNTUyNDcsIAotICAgIDU1MjUyLCA1NTI1NywgNTUyNjQsIDU1MjcxLCA1NTI3OCwgNTUyODUsIDU1MjkyLCA1NTI5OSwgNTUzMDYsIDU1MzEzLCAKLSAgICA1NTMyMCwgNTUzMjcsIDU1MzM0LCA1NTM0MSwgNTUzNDgsIDU1MzU1LCA1NTM2MCwgNTUzNjUsIDU1MzcyLCA1NTM3OSwgCi0gICAgNTUzODYsIDU1MzkzLCA1NTQwMCwgNTU0MDcsIDU1NDE0LCA1NTQyMSwgNTU0MjgsIDU1NDM1LCA1NTQ0MiwgNTU0NDksIAotICAgIDU1NDU1LCA1NTQ2MSwgNTU0NjcsIDU1NDczLCA1NTQ4MCwgNTU0ODcsIDU1NDk0LCA1NTUwMSwgNTU1MDgsIDU1NTE1LCAKLSAgICA1NTUyMiwgNTU1MjksIDU1NTM2LCA1NTU0MywgNTU1NTEsIDU1NTU5LCA1NTU2NywgNTU1NzUsIDU1NTgzLCA1NTU5MSwgCi0gICAgNTU1OTksIDU1NjA3LCA1NTYxMSwgNTU2MTcsIDU1NjIzLCA1NTYyNywgNTU2MzMsIDU1NjM5LCA1NTY0NSwgNTU2NTIsIAotICAgIDU1NjU5LCA1NTY2NiwgNTU2NzMsIDU1Njc4LCA1NTY4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2OTAsIDU1Njk4LCAKLSAgICA1NTcwNywgNTU3MTYsIDU1NzI0LCA1NTczMCwgNTU3MzUsIDU1NzQwLCA1NTc0NSwgNTU3NTAsIDU1NzU1LCA1NTc2MCwgCi0gICAgNTU3NjUsIDU1NzcwLCA1NTc3NSwgNTU3ODAsIDU1Nzg1LCA1NTc5MCwgNTU3OTUsIDU1ODAwLCA1NTgwNSwgNTU4MTAsIAotICAgIDU1ODE1LCA1NTgyMCwgNTU4MjUsIDU1ODMwLCA1NTgzNSwgNTU4NDAsIDU1ODQ1LCA1NTg1MCwgNTU4NTUsIDU1ODYwLCAKLSAgICA1NTg2NSwgNTU4NzAsIDU1ODc1LCA1NTg4MCwgNTU4ODUsIDU1ODkwLCA1NTg5NSwgNTU5MDAsIDU1OTA1LCA1NTkxMCwgCi0gICAgNTU5MTUsIDU1OTIwLCA1NTkyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU5MzAsIDU1OTM0LCA1NTkzOSwgCi0gICAgNTU5NDQsIDU1OTQ5LCA1NTk1NCwgNTU5NjMsIDU1OTY4LCA1NTk3MywgNTU5NzgsIDU1OTgzLCA1NTk4OCwgNTU5OTMsIAotICAgIDU1OTk4LCA1NjAwMywgNTYwMTAsIDU2MDE1LCA1NjAyMCwgNTYwMjksIDU2MDM2LCA1NjA0MSwgNTYwNDYsIDU2MDUxLCAKLSAgICA1NjA1OCwgNTYwNjMsIDU2MDcwLCA1NjA3NSwgNTYwODAsIDU2MDg3LCA1NjA5NCwgNTYwOTksIDU2MTA0LCA1NjEwOSwgCi0gICAgNTYxMTYsIDU2MTIzLCA1NjEyOCwgNTYxMzMsIDU2MTM4LCA1NjE0MywgNTYxNDgsIDU2MTU1LCA1NjE2MiwgNTYxNjcsIAotICAgIDU2MTcyLCA1NjE3NywgNTYxODIsIDU2MTg3LCA1NjE5MiwgNTYxOTcsIDU2MjAyLCA1NjIwNywgNTYyMTIsIDU2MjE3LCAKLSAgICA1NjIyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYyMjksIDU2MjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NjI0MSwgNTYyNDcsIDU2MjUxLCA1NjI1NSwgNTYyNTksIDU2MjYzLCA1NjI2NywgNTYyNzEsIAotICAgIDU2Mjc1LCA1NjI3OSwgNTYyODMsIDU2Mjg3LCA1NjI5MywgNTYyOTcsIDU2MzAxLCA1NjMwNSwgNTYzMDksIDU2MzEzLCAKLSAgICA1NjMxNywgNTYzMjEsIDU2MzI1LCA1NjMyOSwgNTYzMzMsIDU2MzM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NjM0MSwgNTYzNDUsIDU2MzQ5LCA1NjM1MywgNTYzNTcsIDU2MzYxLCA1NjM2NSwgMCwgNTYzNjksIDU2MzczLCA1NjM3NywgCi0gICAgNTYzODEsIDU2Mzg1LCA1NjM4OSwgNTYzOTMsIDAsIDU2Mzk3LCA1NjQwMSwgNTY0MDUsIDU2NDA5LCA1NjQxMywgNTY0MTcsIAotICAgIDU2NDIxLCAwLCA1NjQyNSwgNTY0MjksIDU2NDMzLCA1NjQzNywgNTY0NDEsIDU2NDQ1LCA1NjQ0OSwgMCwgNTY0NTMsIAotICAgIDU2NDU3LCA1NjQ2MSwgNTY0NjUsIDU2NDY5LCA1NjQ3MywgNTY0NzcsIDAsIDU2NDgxLCA1NjQ4NSwgNTY0ODksIDU2NDkzLCAKLSAgICA1NjQ5NywgNTY1MDEsIDU2NTA1LCAwLCA1NjUwOSwgNTY1MTMsIDU2NTE3LCA1NjUyMSwgNTY1MjUsIDU2NTI5LCA1NjUzMywgCi0gICAgMCwgNTY1MzcsIDU2NTQxLCA1NjU0NSwgNTY1NDksIDU2NTUzLCA1NjU1NywgNTY1NjEsIDAsIDU2NTY1LCA1NjU3MCwgCi0gICAgNTY1NzUsIDU2NTgwLCA1NjU4NSwgNTY1OTAsIDU2NTk1LCA1NjU5OSwgNTY2MDQsIDU2NjA5LCA1NjYxNCwgNTY2MTgsIAotICAgIDU2NjIzLCA1NjYyOCwgNTY2MzMsIDU2NjM4LCA1NjY0MiwgNTY2NDcsIDU2NjUyLCA1NjY1NywgNTY2NjIsIDU2NjY3LCAKLSAgICA1NjY3MiwgNTY2NzYsIDU2NjgxLCA1NjY4NiwgNTY2OTMsIDU2Njk4LCA1NjcwMywgNTY3MDksIDU2NzE2LCA1NjcyMywgCi0gICAgNTY3MzIsIDU2NzM5LCA1Njc0OCwgNTY3NTIsIDU2NzU2LCA1Njc2MiwgNTY3NjgsIDU2Nzc0LCA1Njc4MiwgNTY3ODgsIAotICAgIDU2NzkyLCA1Njc5NiwgNTY4MDAsIDU2ODA2LCA1NjgxMiwgNTY4MTYsIDU2ODE4LCA1NjgyMiwgNTY4MjgsIDU2ODMwLCAKLSAgICA1NjgzNCwgNTY4MzgsIDU2ODQyLCA1Njg0OCwgNTY4NTMsIDU2ODU3LCA1Njg2MSwgNTY4NjYsIDU2ODcyLCA1Njg3NywgCi0gICAgNTY4ODIsIDU2ODg3LCA1Njg5MiwgNTY4OTksIDU2OTA2LCA1NjkxMSwgNTY5MTYsIDU2OTIxLCA1NjkyNiwgNTY5MzEsIAotICAgIDU2OTM2LCA1Njk0MCwgNTY5NDQsIDU2OTUxLCA1Njk1OCwgNTY5NjQsIDU2OTY4LCA1Njk3MywgNTY5NzYsIDU2OTgwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1Njk4OCwgNTY5OTIsIDU2OTk2LCA1NzAwMSwgNTcwMDYsIDU3MDExLCA1NzAxNSwgNTcwMTksIAotICAgIDU3MDIzLCA1NzAyOCwgNTcwMzMsIDU3MDM3LCA1NzA0MSwgNTcwNDUsIDU3MDQ5LCA1NzA1NCwgNTcwNTksIDU3MDY0LCAKLSAgICA1NzA2OSwgNTcwNzMsIDU3MDc3LCA1NzA4MiwgNTcwODcsIDU3MDkyLCA1NzA5NywgNTcxMDEsIDAsIDU3MTA1LCA1NzEwOSwgCi0gICAgNTcxMTMsIDU3MTE3LCA1NzEyMSwgNTcxMjUsIDU3MTI5LCA1NzEzNCwgNTcxMzksIDU3MTQzLCA1NzE0OCwgNTcxNTMsIAotICAgIDU3MTYyLCA1NzE2NiwgNTcxNzAsIDU3MTc0LCA1NzE4MSwgNTcxODUsIDU3MTkwLCA1NzE5NSwgNTcxOTksIDU3MjAzLCAKLSAgICA1NzIwOSwgNTcyMTQsIDU3MjE5LCA1NzIyNCwgNTcyMjksIDU3MjMzLCA1NzIzNywgNTcyNDEsIDU3MjQ1LCA1NzI0OSwgCi0gICAgNTcyNTQsIDU3MjU5LCA1NzI2MywgNTcyNjcsIDU3MjcyLCA1NzI3NywgNTcyODIsIDU3Mjg2LCA1NzI5MCwgNTcyOTUsIAotICAgIDU3MzAwLCA1NzMwNiwgNTczMTIsIDU3MzE2LCA1NzMyMiwgNTczMjgsIDU3MzMyLCA1NzMzOCwgNTczNDQsIDU3MzQ5LCAKLSAgICA1NzM1NCwgNTczNTgsIDU3MzY0LCA1NzM2OCwgNTczNzIsIDU3Mzc4LCA1NzM4NCwgNTczODksIDU3Mzk0LCA1NzM5OCwgCi0gICAgNTc0MDIsIDU3NDEwLCA1NzQxNiwgNTc0MjIsIDU3NDI4LCA1NzQzMywgNTc0MzgsIDU3NDQzLCA1NzQ0OSwgNTc0NTMsIAotICAgIDU3NDU5LCA1NzQ2MywgNTc0NjcsIDU3NDczLCA1NzQ3OSwgNTc0ODUsIDU3NDkxLCA1NzQ5NywgNTc1MDMsIDU3NTA5LCAKLSAgICA1NzUxNSwgNTc1MjEsIDU3NTI3LCA1NzUzMywgNTc1MzksIDU3NTQzLCA1NzU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTc1NTUsIDU3NTU4LCA1NzU2MiwgNTc1NjYsIDU3NTcwLCA1NzU3NCwgNTc1NzcsIDU3NTgwLCAKLSAgICA1NzU4NCwgNTc1ODgsIDU3NTkyLCA1NzU5NiwgNTc1OTksIDU3NjA0LCA1NzYwOCwgNTc2MTIsIDU3NjE2LCA1NzYyMiwgCi0gICAgNTc2MjYsIDU3NjMwLCA1NzYzNCwgNTc2MzgsIDU3NjQ1LCA1NzY1MSwgNTc2NTUsIDU3NjU5LCA1NzY2MywgNTc2NjcsIAotICAgIDU3NjcxLCA1NzY3NSwgNTc2NzksIDU3NjgzLCA1NzY4NywgNTc2OTEsIDU3Njk1LCA1NzcwMSwgNTc3MDUsIDU3NzA5LCAKLSAgICA1NzcxMywgNTc3MTcsIDU3NzIxLCA1NzcyNSwgNTc3MjksIDU3NzMzLCA1NzczNywgNTc3NDEsIDU3NzQ1LCA1Nzc0OSwgCi0gICAgNTc3NTMsIDU3NzU3LCA1Nzc2MSwgNTc3NjUsIDU3NzcxLCA1Nzc3NywgNTc3ODIsIDU3Nzg3LCA1Nzc5MSwgNTc3OTUsIAotICAgIDU3Nzk5LCA1NzgwMywgNTc4MDcsIDU3ODExLCA1NzgxNSwgNTc4MTksIDU3ODIzLCA1NzgyNywgNTc4MzEsIDU3ODM1LCAKLSAgICA1NzgzOSwgNTc4NDMsIDU3ODQ3LCA1Nzg1MSwgNTc4NTUsIDU3ODU5LCA1Nzg2MywgNTc4NjcsIDU3ODcxLCA1Nzg3NSwgCi0gICAgNTc4NzksIDU3ODgzLCA1Nzg4OSwgNTc4OTMsIDU3ODk3LCA1NzkwMSwgNTc5MDUsIDU3OTA5LCA1NzkxMywgNTc5MTcsIAotICAgIDU3OTIxLCA1NzkyNiwgNTc5MzMsIDU3OTM3LCA1Nzk0MSwgNTc5NDUsIDU3OTQ5LCA1Nzk1MywgNTc5NTcsIDU3OTYxLCAKLSAgICA1Nzk2NSwgNTc5NjksIDU3OTczLCA1Nzk3NywgNTc5ODEsIDU3OTg4LCA1Nzk5MiwgNTc5OTgsIDU4MDAyLCA1ODAwNiwgCi0gICAgNTgwMTAsIDU4MDE0LCA1ODAxOCwgNTgwMjEsIDU4MDI1LCA1ODAyOSwgNTgwMzMsIDU4MDM3LCA1ODA0MSwgNTgwNDUsIAotICAgIDU4MDQ5LCA1ODA1MywgNTgwNTcsIDU4MDYxLCA1ODA2NSwgNTgwNjksIDU4MDczLCA1ODA3NywgNTgwODEsIDU4MDg1LCAKLSAgICA1ODA4OSwgNTgwOTMsIDU4MDk3LCA1ODEwMSwgNTgxMDUsIDU4MTA5LCA1ODExMywgNTgxMTcsIDU4MTIxLCA1ODEyNSwgCi0gICAgNTgxMjksIDU4MTMzLCA1ODEzNywgNTgxNDEsIDU4MTQ1LCA1ODE0OSwgNTgxNTUsIDU4MTU5LCA1ODE2MywgNTgxNjcsIAotICAgIDU4MTcxLCA1ODE3NSwgNTgxNzksIDU4MTgzLCA1ODE4NywgNTgxOTEsIDU4MTk1LCA1ODE5OSwgNTgyMDMsIDU4MjA3LCAKLSAgICA1ODIxMSwgNTgyMTUsIDU4MjE5LCA1ODIyMywgNTgyMjcsIDU4MjMxLCA1ODIzNSwgNTgyMzksIDU4MjQzLCA1ODI0NywgCi0gICAgNTgyNTEsIDU4MjU1LCA1ODI1OSwgNTgyNjMsIDU4MjcxLCA1ODI3NSwgNTgyNzksIDU4MjgzLCA1ODI4NywgNTgyOTEsIAotICAgIDU4Mjk3LCA1ODMwMSwgNTgzMDUsIDU4MzA5LCA1ODMxMywgNTgzMTcsIDU4MzIxLCA1ODMyNSwgNTgzMjksIDU4MzMzLCAKLSAgICA1ODMzNywgNTgzNDEsIDU4MzQ1LCA1ODM0OSwgNTgzNTUsIDU4MzU5LCA1ODM2MywgNTgzNjcsIDU4MzcxLCA1ODM3NSwgCi0gICAgNTgzNzksIDU4MzgzLCA1ODM4NywgNTgzOTEsIDU4Mzk1LCA1ODM5OSwgNTg0MDMsIDU4NDA3LCA1ODQxMSwgNTg0MTUsIAotICAgIDU4NDE5LCA1ODQyMywgNTg0MjcsIDU4NDMxLCA1ODQzNSwgNTg0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NDQzLCA1ODQ1MiwgNTg0NjAsIAotICAgIDU4NDcyLCA1ODQ4MywgNTg0OTEsIDU4NTAwLCA1ODUwOSwgNTg1MTksIDU4NTMxLCA1ODU0MywgNTg1NTUsIDAsIDAsIDAsIAotICAgIDAsIDU4NTYxLCA1ODU2NCwgNTg1NjcsIDU4NTcyLCA1ODU3NSwgNTg1ODIsIDU4NTg2LCA1ODU5MCwgNTg1OTQsIDU4NTk4LCAKLSAgICA1ODYwMiwgNTg2MDcsIDU4NjEyLCA1ODYxNiwgNTg2MjAsIDU4NjI1LCA1ODYzMCwgNTg2MzUsIDU4NjQwLCA1ODY0MywgCi0gICAgNTg2NDYsIDU4NjUyLCA1ODY1OCwgNTg2NjMsIDU4NjY4LCA1ODY3NSwgNTg2ODIsIDU4Njg2LCA1ODY5MCwgNTg2OTQsIAotICAgIDU4NzAyLCA1ODcwOCwgNTg3MTUsIDU4NzIwLCA1ODcyNSwgNTg3MzAsIDU4NzM1LCA1ODc0MCwgNTg3NDUsIDU4NzUwLCAKLSAgICA1ODc1NSwgNTg3NjAsIDU4NzY1LCA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTEsIDU4Nzk2LCA1ODgwMCwgCi0gICAgNTg4MDYsIDU4ODE3LCA1ODgyNywgNTg4NDIsIDU4ODUyLCA1ODg1NiwgNTg4NjUsIDU4ODcxLCA1ODg3NywgNTg4ODMsIAotICAgIDU4ODg4LCA1ODg5MSwgNTg4OTYsIDU4OTAwLCAwLCA1ODkwNiwgNTg5MTAsIDU4OTEzLCA1ODkxNywgNTg5MjAsIDU4OTI0LCAKLSAgICA1ODkyNywgNTg5MzEsIDU4OTM0LCA1ODkzOCwgNTg5NDEsIDU4OTQ0LCA1ODk0OCwgNTg5NTIsIDU4OTU2LCA1ODk2MCwgCi0gICAgNTg5NjQsIDU4OTY4LCA1ODk3MiwgNTg5NzYsIDU4OTgwLCA1ODk4NCwgNTg5ODgsIDU4OTkyLCA1ODk5NiwgNTkwMDAsIAotICAgIDU5MDA0LCA1OTAwOCwgNTkwMTIsIDU5MDE2LCA1OTAyMCwgNTkwMjQsIDU5MDI4LCA1OTAzMiwgNTkwMzYsIDU5MDQxLCAKLSAgICA1OTA0NSwgNTkwNDksIDU5MDUzLCA1OTA1NywgNTkwNjAsIDU5MDY0LCA1OTA2NywgNTkwNzEsIDU5MDc1LCA1OTA3OSwgCi0gICAgNTkwODMsIDU5MDg2LCA1OTA5MCwgNTkwOTMsIDU5MDk3LCA1OTEwMSwgNTkxMDUsIDU5MTA5LCA1OTExMywgNTkxMTcsIAotICAgIDU5MTIxLCA1OTEyNSwgNTkxMjksIDU5MTMzLCA1OTEzNywgNTkxNDEsIDU5MTQ0LCA1OTE0OCwgNTkxNTIsIDU5MTU2LCAKLSAgICA1OTE2MCwgNTkxNjQsIDU5MTY3LCA1OTE3MiwgNTkxNzYsIDU5MTgxLCA1OTE4NSwgNTkxODgsIDU5MTkyLCA1OTE5NiwgCi0gICAgNTkyMDAsIDU5MjA0LCA1OTIwOSwgNTkyMTMsIDU5MjE3LCA1OTIyMSwgNTkyMjUsIDU5MjI4LCA1OTIzMiwgNTkyMzYsIDAsIAotICAgIDAsIDU5MjQxLCA1OTI0OSwgNTkyNTcsIDU5MjY0LCA1OTI3MSwgNTkyNzUsIDU5MjgxLCA1OTI4NiwgNTkyOTEsIDU5Mjk1LCAKLSAgICA1OTI5OCwgNTkzMDIsIDU5MzA1LCA1OTMwOSwgNTkzMTIsIDU5MzE2LCA1OTMxOSwgNTkzMjMsIDU5MzI2LCA1OTMyOSwgCi0gICAgNTkzMzMsIDU5MzM3LCA1OTM0MSwgNTkzNDUsIDU5MzQ5LCA1OTM1MywgNTkzNTcsIDU5MzYxLCA1OTM2NSwgNTkzNjksIAotICAgIDU5MzczLCA1OTM3NywgNTkzODEsIDU5Mzg1LCA1OTM4OSwgNTkzOTMsIDU5Mzk3LCA1OTQwMSwgNTk0MDUsIDU5NDA5LCAKLSAgICA1OTQxMywgNTk0MTcsIDU5NDIxLCA1OTQyNiwgNTk0MzAsIDU5NDM0LCA1OTQzOCwgNTk0NDIsIDU5NDQ1LCA1OTQ0OSwgCi0gICAgNTk0NTIsIDU5NDU2LCA1OTQ2MCwgNTk0NjQsIDU5NDY4LCA1OTQ3MSwgNTk0NzUsIDU5NDc4LCA1OTQ4MiwgNTk0ODYsIAotICAgIDU5NDkwLCA1OTQ5NCwgNTk0OTgsIDU5NTAyLCA1OTUwNiwgNTk1MTAsIDU5NTE0LCA1OTUxOCwgNTk1MjIsIDU5NTI2LCAKLSAgICA1OTUyOSwgNTk1MzMsIDU5NTM3LCA1OTU0MSwgNTk1NDUsIDU5NTQ5LCA1OTU1MiwgNTk1NTcsIDU5NTYxLCA1OTU2NiwgCi0gICAgNTk1NzAsIDU5NTczLCA1OTU3NywgNTk1ODEsIDU5NTg1LCA1OTU4OSwgNTk1OTQsIDU5NTk4LCA1OTYwMiwgNTk2MDYsIAotICAgIDU5NjEwLCA1OTYxMywgNTk2MTcsIDU5NjIxLCA1OTYyNiwgNTk2MzAsIDU5NjM0LCA1OTYzOCwgNTk2NDIsIDU5NjQ3LCAKLSAgICA1OTY1NCwgNTk2NTgsIDU5NjY0LCAwLCAwLCAwLCAwLCAwLCA1OTY2OSwgNTk2NzMsIDU5Njc3LCA1OTY4MCwgNTk2ODQsIAotICAgIDU5Njg4LCA1OTY5MiwgNTk2OTUsIDU5Njk4LCA1OTcwMiwgNTk3MDYsIDU5NzEwLCA1OTcxNCwgNTk3MTgsIDU5NzIyLCAKLSAgICA1OTcyNiwgNTk3MzAsIDU5NzM0LCA1OTczNywgNTk3NDEsIDU5NzQ1LCA1OTc0OCwgNTk3NTEsIDU5NzU0LCA1OTc1NywgCi0gICAgNTk3NjEsIDU5NzY1LCA1OTc2OSwgNTk3NzMsIDU5Nzc3LCA1OTc4MSwgNTk3ODUsIDU5Nzg5LCA1OTc5MywgNTk3OTcsIAotICAgIDU5ODAwLCA1OTgwMywgNTk4MDcsIDU5ODExLCA1OTgxNSwgNTk4MTksIDAsIDAsIDAsIDU5ODIzLCA1OTgyNywgNTk4MzEsIAotICAgIDU5ODM1LCA1OTgzOSwgNTk4NDMsIDU5ODQ3LCA1OTg1MSwgNTk4NTUsIDU5ODU5LCA1OTg2MywgNTk4NjcsIDU5ODcxLCAKLSAgICA1OTg3NSwgNTk4NzksIDU5ODgzLCA1OTg4NywgNTk4OTEsIDU5ODk1LCA1OTg5OSwgNTk5MDMsIDU5OTA3LCA1OTkxMSwgCi0gICAgNTk5MTUsIDU5OTE5LCA1OTkyMywgNTk5MjcsIDU5OTMxLCA1OTkzNSwgNTk5MzksIDU5OTQzLCA1OTk0NiwgNTk5NTAsIAotICAgIDU5OTUzLCA1OTk1NywgNTk5NjEsIDU5OTY0LCA1OTk2OCwgNTk5NzIsIDU5OTc1LCA1OTk3OSwgNTk5ODMsIDU5OTg3LCAKLSAgICA1OTk5MSwgNTk5OTQsIDU5OTk4LCA2MDAwMiwgNjAwMDYsIDYwMDEwLCA2MDAxNCwgNjAwMTgsIDYwMDIxLCA2MDAyNCwgCi0gICAgNjAwMjgsIDYwMDMyLCA2MDAzNiwgNjAwNDAsIDYwMDQ0LCA2MDA0OCwgNjAwNTIsIDYwMDU2LCA2MDA2MCwgNjAwNjQsIAotICAgIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgwLCA2MDA4NCwgNjAwODgsIDYwMDkyLCA2MDA5NiwgNjAxMDAsIDYwMTA0LCAKLSAgICA2MDEwOCwgNjAxMTIsIDYwMTE2LCA2MDEyMCwgNjAxMjQsIDYwMTI4LCA2MDEzMiwgNjAxMzYsIDYwMTQwLCA2MDE0NCwgCi0gICAgNjAxNDgsIDYwMTUyLCA2MDE1NiwgNjAxNjAsIDYwMTY0LCA2MDE2OCwgNjAxNzIsIDYwMTc2LCA2MDE4MCwgNjAxODQsIAotICAgIDYwMTg4LCAwLCA2MDE5MiwgNjAxOTgsIDYwMjA0LCA2MDIwOSwgNjAyMTQsIDYwMjE5LCA2MDIyNSwgNjAyMzEsIDYwMjM3LCAKLSAgICA2MDI0MywgNjAyNDksIDYwMjU1LCA2MDI2MSwgNjAyNjcsIDYwMjczLCA2MDI3OSwgNjAyODUsIDYwMjg5LCA2MDI5MywgCi0gICAgNjAyOTcsIDYwMzAxLCA2MDMwNSwgNjAzMDksIDYwMzEzLCA2MDMxNywgNjAzMjEsIDYwMzI1LCA2MDMyOSwgNjAzMzMsIAotICAgIDYwMzM3LCA2MDM0MSwgNjAzNDUsIDYwMzQ5LCA2MDM1MywgNjAzNTcsIDYwMzYxLCA2MDM2NSwgNjAzNzAsIDYwMzc1LCAKLSAgICA2MDM4MCwgNjAzODUsIDYwMzg5LCA2MDM5MywgMCwgMCwgMCwgMCwgMCwgNjAzOTcsIDYwNDAyLCA2MDQwNywgNjA0MTIsIAotICAgIDYwNDE3LCA2MDQyMiwgNjA0MjcsIDYwNDMyLCA2MDQzNywgNjA0NDIsIDYwNDQ3LCA2MDQ1MiwgNjA0NTcsIDYwNDYyLCAKLSAgICA2MDQ2NywgNjA0NzIsIDYwNDc2LCA2MDQ4MSwgNjA0ODUsIDYwNDkwLCA2MDQ5NSwgNjA1MDAsIDYwNTA1LCA2MDUxMCwgCi0gICAgNjA1MTUsIDYwNTIwLCA2MDUyNSwgNjA1MzAsIDYwNTM1LCA2MDU0MCwgNjA1NDUsIDYwNTUwLCA2MDU1NSwgNjA1NjAsIAotICAgIDYwNTY1LCA2MDU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA1NzUsIDYwNTgwLCA2MDU4NSwgCi0gICAgNjA1OTAsIDYwNTk0LCA2MDU5OSwgNjA2MDMsIDYwNjA4LCA2MDYxMywgNjA2MTgsIDYwNjIzLCA2MDYyOCwgNjA2MzIsIAotICAgIDYwNjM3LCA2MDY0MiwgNjA2NDcsIDYwNjUyLCA2MDY1NiwgNjA2NjAsIDYwNjY0LCA2MDY2OCwgNjA2NzIsIDYwNjc2LCAKLSAgICA2MDY4MCwgNjA2ODQsIDYwNjg4LCA2MDY5MiwgNjA2OTYsIDYwNzAwLCA2MDcwNCwgNjA3MDgsIDYwNzEzLCA2MDcxOCwgCi0gICAgNjA3MjMsIDYwNzI4LCA2MDczMywgNjA3MzgsIDYwNzQzLCA2MDc0OCwgNjA3NTMsIDYwNzU4LCA2MDc2MywgNjA3NjgsIAotICAgIDYwNzczLCA2MDc3OCwgNjA3ODMsIDYwNzg5LCAwLCA2MDc5NiwgNjA3OTksIDYwODAyLCA2MDgwNSwgNjA4MDgsIDYwODExLCAKLSAgICA2MDgxNCwgNjA4MTcsIDYwODIwLCA2MDgyMywgNjA4MjcsIDYwODMxLCA2MDgzNSwgNjA4MzksIDYwODQzLCA2MDg0NywgCi0gICAgNjA4NTEsIDYwODU1LCA2MDg1OSwgNjA4NjMsIDYwODY3LCA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4MywgNjA4ODcsIAotICAgIDYwODkxLCA2MDg5NSwgNjA4OTksIDYwOTAzLCA2MDkwNywgNjA5MTEsIDYwOTE1LCA2MDkxOSwgNjA5MjMsIDYwOTI3LCAKLSAgICA2MDkzMSwgNjA5MzUsIDYwOTM5LCA2MDk0MywgNjA5NDcsIDYwOTU2LCA2MDk2NSwgNjA5NzQsIDYwOTgzLCA2MDk5MiwgCi0gICAgNjEwMDEsIDYxMDEwLCA2MTAxOSwgNjEwMjIsIDYxMDI3LCA2MTAzMiwgNjEwMzcsIDYxMDQyLCA2MTA0NywgNjEwNTIsIAotICAgIDYxMDU3LCA2MTA2MiwgNjEwNjcsIDYxMDcxLCA2MTA3NiwgNjEwODEsIDYxMDg2LCA2MTA5MSwgNjEwOTYsIDYxMTAwLCAKLSAgICA2MTEwNCwgNjExMDgsIDYxMTEyLCA2MTExNiwgNjExMjAsIDYxMTI0LCA2MTEyOCwgNjExMzIsIDYxMTM2LCA2MTE0MCwgCi0gICAgNjExNDQsIDYxMTQ4LCA2MTE1MiwgNjExNTcsIDYxMTYyLCA2MTE2NywgNjExNzIsIDYxMTc3LCA2MTE4MiwgNjExODcsIAotICAgIDYxMTkyLCA2MTE5NywgNjEyMDIsIDYxMjA3LCA2MTIxMiwgNjEyMTcsIDYxMjIyLCA2MTIyOCwgNjEyMzQsIDYxMjM5LCAKLSAgICA2MTI0NCwgNjEyNDcsIDYxMjUwLCA2MTI1MywgNjEyNTYsIDYxMjU5LCA2MTI2MiwgNjEyNjUsIDYxMjY4LCA2MTI3MSwgCi0gICAgNjEyNzUsIDYxMjc5LCA2MTI4MywgNjEyODcsIDYxMjkxLCA2MTI5NSwgNjEyOTksIDYxMzAzLCA2MTMwNywgNjEzMTEsIAotICAgIDYxMzE1LCA2MTMxOSwgNjEzMjMsIDYxMzI3LCA2MTMzMSwgNjEzMzUsIDYxMzM5LCA2MTM0MywgNjEzNDcsIDYxMzUxLCAKLSAgICA2MTM1NSwgNjEzNTksIDYxMzYzLCA2MTM2NywgNjEzNzEsIDYxMzc1LCA2MTM3OSwgNjEzODMsIDYxMzg3LCA2MTM5MSwgCi0gICAgNjEzOTUsIDYxMzk5LCA2MTQwMywgNjE0MDcsIDYxNDExLCA2MTQxNSwgNjE0MTksIDYxNDIzLCA2MTQyNywgNjE0MzEsIAotICAgIDYxNDM2LCA2MTQ0MSwgNjE0NDYsIDYxNDUxLCA2MTQ1NSwgNjE0NjAsIDYxNDY1LCA2MTQ3MCwgNjE0NzUsIDYxNDgwLCAKLSAgICA2MTQ4NSwgNjE0OTAsIDYxNDk1LCA2MTUwMCwgNjE1MDQsIDYxNTEwLCA2MTUxNiwgNjE1MjIsIDYxNTI4LCA2MTUzNCwgCi0gICAgNjE1NDAsIDYxNTQ2LCA2MTU1MiwgNjE1NTgsIDYxNTY0LCA2MTU3MCwgNjE1NzYsIDYxNTc5LCA2MTU4MiwgNjE1ODUsIAotICAgIDYxNTkwLCA2MTU5MywgNjE1OTYsIDYxNTk5LCA2MTYwMiwgNjE2MDUsIDYxNjA4LCA2MTYxMiwgNjE2MTYsIDYxNjIwLCAKLSAgICA2MTYyNCwgNjE2MjgsIDYxNjMyLCA2MTYzNiwgNjE2NDAsIDYxNjQ0LCA2MTY0OCwgNjE2NTIsIDYxNjU2LCA2MTY2MCwgCi0gICAgNjE2NjMsIDYxNjY2LCA2MTY3MCwgNjE2NzQsIDYxNjc4LCA2MTY4MiwgNjE2ODUsIDYxNjg5LCA2MTY5MywgNjE2OTcsIAotICAgIDYxNzAxLCA2MTcwNCwgNjE3MDgsIDYxNzEyLCA2MTcxNiwgNjE3MjAsIDYxNzIzLCA2MTcyNywgNjE3MzEsIDYxNzM0LCAKLSAgICA2MTczOCwgNjE3NDIsIDYxNzQ2LCA2MTc1MCwgNjE3NTQsIDYxNzU4LCA2MTc2MiwgMCwgNjE3NjYsIDYxNzY5LCA2MTc3MiwgCi0gICAgNjE3NzUsIDYxNzc4LCA2MTc4MSwgNjE3ODQsIDYxNzg3LCA2MTc5MCwgNjE3OTMsIDYxNzk2LCA2MTc5OSwgNjE4MDIsIAotICAgIDYxODA1LCA2MTgwOCwgNjE4MTEsIDYxODE0LCA2MTgxNywgNjE4MjAsIDYxODIzLCA2MTgyNiwgNjE4MjksIDYxODMyLCAKLSAgICA2MTgzNSwgNjE4MzgsIDYxODQxLCA2MTg0NCwgNjE4NDcsIDYxODUwLCA2MTg1MywgNjE4NTYsIDYxODU5LCA2MTg2MiwgCi0gICAgNjE4NjUsIDYxODY4LCA2MTg3MSwgNjE4NzQsIDYxODc3LCA2MTg4MCwgNjE4ODMsIDYxODg2LCA2MTg4OSwgNjE4OTIsIAotICAgIDYxODk1LCA2MTg5OCwgNjE5MDEsIDYxOTA0LCA2MTkwNywgNjE5MTAsIDYxOTEzLCA2MTkxNiwgNjE5MTksIDYxOTIyLCAKLSAgICA2MTkyNSwgNjE5MjgsIDYxOTMxLCA2MTkzNCwgNjE5MzcsIDYxOTQwLCA2MTk0MywgNjE5NDYsIDYxOTQ5LCA2MTk1MiwgCi0gICAgNjE5NTUsIDYxOTU4LCA2MTk2MSwgNjE5NjQsIDYxOTY3LCA2MTk3MCwgNjE5NzMsIDYxOTc2LCA2MTk3OSwgNjE5ODIsIAotICAgIDYxOTg1LCA2MTk4OCwgNjE5OTEsIDYxOTk0LCA2MTk5NywgNjIwMDAsIDYyMDAzLCA2MjAwNiwgNjIwMDksIDYyMDEyLCAKLSAgICA2MjAxNSwgNjIwMTgsIDYyMDIxLCA2MjAyNCwgNjIwMjcsIDYyMDMwLCA2MjAzOCwgNjIwNDUsIDYyMDUyLCA2MjA1OSwgCi0gICAgNjIwNjYsIDYyMDczLCA2MjA4MCwgNjIwODcsIDYyMDk0LCA2MjEwMSwgNjIxMDksIDYyMTE3LCA2MjEyNSwgNjIxMzMsIAotICAgIDYyMTQxLCA2MjE0OSwgNjIxNTcsIDYyMTY1LCA2MjE3MywgNjIxODEsIDYyMTg5LCA2MjE5NywgNjIyMDUsIDYyMjEzLCAKLSAgICA2MjIyMSwgNjIyMjQsIDYyMjI3LCA2MjIzMCwgNjIyMzIsIDYyMjM1LCA2MjIzOCwgNjIyNDEsIDYyMjQ2LCA2MjI1MSwgCi0gICAgNjIyNTQsIDYyMjYxLCA2MjI2OCwgNjIyNzUsIDYyMjgyLCA2MjI4NSwgNjIyOTAsIDYyMjkyLCA2MjI5NiwgNjIyOTgsIAotICAgIDYyMzAwLCA2MjMwMywgNjIzMDYsIDYyMzA5LCA2MjMxMiwgNjIzMTUsIDYyMzE4LCA2MjMyMSwgNjIzMjYsIDYyMzMxLCAKLSAgICA2MjMzNCwgNjIzMzcsIDYyMzQwLCA2MjM0MywgNjIzNDYsIDYyMzQ5LCA2MjM1MiwgNjIzNTYsIDYyMzU5LCA2MjM2MiwgCi0gICAgNjIzNjUsIDYyMzY4LCA2MjM3MSwgNjIzNzUsIDYyMzc4LCA2MjM4MSwgNjIzODQsIDYyMzg5LCA2MjM5NCwgNjIzOTksIAotICAgIDYyNDA0LCA2MjQwOSwgNjI0MTQsIDYyNDE5LCA2MjQyNCwgNjI0MjksIDYyNDM3LCA2MjQzOSwgNjI0NDIsIDYyNDQ1LCAKLSAgICA2MjQ0OCwgNjI0NTEsIDYyNDU2LCA2MjQ2NCwgNjI0NjcsIDYyNDcwLCA2MjQ3NCwgNjI0NzcsIDYyNDgwLCA2MjQ4MywgCi0gICAgNjI0ODgsIDYyNDkxLCA2MjQ5NCwgNjI0OTksIDYyNTAyLCA2MjUwNSwgNjI1MTAsIDYyNTEzLCA2MjUxNiwgNjI1MjEsIAotICAgIDYyNTI2LCA2MjUzMSwgNjI1MzQsIDYyNTM3LCA2MjU0MCwgNjI1NDMsIDYyNTQ5LCA2MjU1MiwgNjI1NTUsIDYyNTU4LCAKLSAgICA2MjU2MCwgNjI1NjMsIDYyNTY2LCA2MjU2OSwgNjI1NzQsIDYyNTc3LCA2MjU4MCwgNjI1ODMsIDYyNTg2LCA2MjU4OSwgCi0gICAgNjI1OTQsIDYyNTk3LCA2MjYwMCwgNjI2MDMsIDYyNjA2LCA2MjYwOSwgNjI2MTIsIDYyNjE1LCA2MjYxOCwgNjI2MjEsIAotICAgIDYyNjI2LCA2MjYzMCwgNjI2MzcsIDYyNjQ0LCA2MjY1MSwgNjI2NTgsIDYyNjY1LCA2MjY3MiwgNjI2NzksIDYyNjg2LCAKLSAgICA2MjY5MywgNjI3MDEsIDYyNzA5LCA2MjcxNywgNjI3MjUsIDYyNzMzLCA2Mjc0MSwgNjI3NDksIDYyNzU3LCA2Mjc2NSwgCi0gICAgNjI3NzMsIDYyNzgxLCA2Mjc4OSwgNjI3OTcsIDYyODA1LCA2MjgxMywgNjI4MjEsIDYyODI5LCA2MjgzNywgNjI4NDUsIAotICAgIDYyODUzLCA2Mjg2MSwgNjI4NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NywgMTUxLCAxNTYsIDE2MSwgMTY1LCAxNzAsIDE3NSwgMTc5LCAxODQsIDE4OSwgMTk0LCAxOTksIDIwNCwgMjA3LCAKKyAgICAyMTEsIDIxNCwgMjE4LCAyMjEsIDIyNSwgMjI5LCAyMzQsIDIzOSwgMjQ0LCAyNDgsIDI1MywgMjU4LCAyNjMsIDI2NywgCisgICAgMjcyLCAyNzcsIDI4MSwgMjg1LCAyOTAsIDI5NCwgMjk5LCAzMDQsIDMwOCwgMzEzLCAzMTgsIDMyMiwgMzI3LCAzMzIsIAorICAgIDMzNywgMzQyLCAzNDcsIDM1MSwgMzU0LCAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMzYzLCAzNjgsIAorICAgIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OCwgMzkxLCAzOTcsIDQwNSwgNDA4LCA0MTIsIDQxNSwgNDE3LCAKKyAgICA0MjAsIDQyMywgNDI2LCA0MjksIDQzMywgNDM2LCA0MzksIDQ0MywgNDQ1LCA0NDgsIDQ1NCwgNDYyLCA0NjksIDQ3NiwgCisgICAgNDgzLCA0ODgsIDQ5NSwgNTAxLCA1MDgsIDUxNCwgNTIxLCA1MjksIDUzNCwgNTQyLCA1NDksIDU1NSwgNTYyLCA1NjksIAorICAgIDU3NywgNTg0LCA1OTIsIDYwMCwgNjA1LCA2MTIsIDYxOSwgNjI1LCA2MzIsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKKyAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNzAwLCA3MDcsIDcxMywgNzIwLCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCisgICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI0LCA4MzEsIDgzNywgODQ0LCA4NTAsIAorICAgIDg1NywgODYwLCA4NjYsIDg3MywgODc5LCA4ODYsIDg5MywgOTAwLCA5MDUsIDkxMywgOTIwLCA5MjcsIDkzNCwgOTQxLCAKKyAgICA5NDgsIDk1NSwgOTYyLCA5NjksIDk3NywgOTg1LCA5OTMsIDEwMDEsIDEwMDksIDEwMTcsIDEwMjUsIDEwMzMsIDEwNDAsIAorICAgIDEwNDcsIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjUsIAorICAgIDExMzMsIDExNDEsIDExNDksIDExNTcsIDExNjUsIDExNzMsIDExODEsIDExODksIDExOTcsIDEyMDQsIDEyMTEsIDEyMTgsIAorICAgIDEyMjUsIDEyMzMsIDEyNDEsIDEyNDksIDEyNTcsIDEyNjUsIDEyNzMsIDEyODEsIDEyODcsIDEyOTIsIDEyOTcsIDEzMDUsIAorICAgIDEzMTMsIDEzMjEsIDEzMjksIDEzMzQsIDEzNDEsIDEzNDgsIDEzNTYsIDEzNjQsIDEzNzIsIDEzODAsIDEzOTAsIDE0MDAsIAorICAgIDE0MDcsIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzYsIDE0NDQsIDE0NTIsIDE0NjAsIDE0NzEsIDE0NzYsIDE0ODEsIDE0ODgsIAorICAgIDE0OTUsIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MjgsIDE1MzMsIDE1NDAsIDE1NDcsIDE1NTUsIDE1NjMsIDE1NzEsIAorICAgIDE1NzksIDE1ODYsIDE1OTMsIDE2MDEsIDE2MDksIDE2MTcsIDE2MjUsIDE2MzMsIDE2NDEsIDE2NDksIDE2NTcsIDE2NjUsIAorICAgIDE2NzMsIDE2ODAsIDE2ODcsIDE2OTMsIDE2OTksIDE3MDYsIDE3MTMsIDE3MjAsIDE3MjcsIDE3MzUsIDE3NDMsIDE3NTAsIAorICAgIDE3NTcsIDE3NjQsIDE3NzEsIDE3NzksIDE3ODcsIDE3OTUsIDE4MDMsIDE4MTEsIDE4MTgsIDE4MjUsIDE4MzMsIDE4NDEsIAorICAgIDE4NDksIDE4NTcsIDE4NjMsIDE4NjksIDE4NzUsIDE4ODIsIDE4ODksIDE4OTQsIDE4OTksIDE5MDQsIDE5MTEsIDE5MTgsIAorICAgIDE5MjUsIDE5MzIsIDE5NDAsIDE5NDgsIDE5NTUsIDE5NjEsIDE5NjYsIDE5NzEsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTcsIAorICAgIDIwMDIsIDIwMDcsIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDgsIDIwNTYsIDIwNjYsIDIwNzQsIDIwODEsIAorICAgIDIwODgsIDIwOTMsIDIwOTgsIDIxMDUsIDIxMTIsIDIxMTYsIDIxMjEsIDIxMjYsIDIxMzEsIDIxMzksIDIxNDgsIDIxNTUsIAorICAgIDIxNjIsIDIxNzEsIDIxNzgsIDIxODUsIDIxOTAsIDIxOTcsIDIyMDQsIDIyMTEsIDIyMTgsIDIyMjUsIDIyMzAsIDIyMzcsIAorICAgIDIyNDQsIDIyNTIsIDIyNTcsIDIyNjIsIDIyNjcsIDIyNzcsIDIyODEsIDIyODcsIDIyOTMsIDIyOTksIDIzMDUsIDIzMTMsIAorICAgIDIzMjYsIDIzMzQsIDIzMzksIDIzNDksIDIzNTQsIDIzNTksIDIzNjksIDIzNzQsIDIzODEsIDIzODgsIDIzOTYsIDI0MDQsIAorICAgIDI0MTEsIDI0MTgsIDI0MjUsIDI0MzIsIDI0NDIsIDI0NTIsIDI0NjEsIDI0NzAsIDI0ODAsIDI0OTAsIDI1MDAsIDI1MTAsIAorICAgIDI1MTYsIDI1MjYsIDI1MzYsIDI1NDYsIDI1NTYsIDI1NjQsIDI1NzIsIDI1NzksIDI1ODYsIDI1OTQsIDI2MDIsIDI2MTAsIAorICAgIDI2MTgsIDI2MjUsIDI2MzIsIDI2NDIsIDI2NTIsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODEsIDI2OTEsIDI2OTYsIDI3MDMsIAorICAgIDI3MTAsIDI3MTUsIDI3MjAsIDI3MjgsIDI3MzYsIDI3NDYsIDI3NTYsIDI3NjMsIDI3NzAsIDI3NzksIDI3ODgsIDI3OTYsIAorICAgIDI4MDQsIDI4MTMsIDI4MjIsIDI4MzAsIDI4MzgsIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODQsIDI4OTQsIDI5MDIsIAorICAgIDI5MTAsIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTYsIDI5NjYsIDI5NzQsIDI5ODIsIDI5OTEsIDMwMDAsIDMwMDksIAorICAgIDMwMTgsIDMwMjcsIDMwMzYsIDMwNDEsIDMwNDYsIDMwNTQsIDMwNjIsIDMwNzIsIDMwODAsIDMwODUsIDMwOTAsIDMwOTcsIAorICAgIDMxMDQsIDMxMTEsIDMxMTgsIDMxMjUsIDMxMzIsIDMxNDIsIDMxNTIsIDMxNjIsIDMxNzIsIDMxNzksIDMxODYsIDMxOTYsIAorICAgIDMyMDYsIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTMsIDMyNjAsIDMyNjcsIDMyNzMsIDMyODAsIDMyODcsIAorICAgIDMyOTQsIDMzMDMsIDMzMTMsIDMzMjMsIDMzMzAsIDMzMzcsIDMzNDMsIDMzNDgsIDMzNTUsIDMzNjEsIDMzNjcsIDMzNzQsIAorICAgIDMzODEsIDMzOTIsIDM0MDIsIDM0MDksIDM0MTYsIDM0MjMsIDM0MzAsIDM0MzYsIDM0NDEsIDM0NDgsIDM0NTQsIDM0NTksIAorICAgIDM0NjcsIDM0NzUsIDM0ODIsIDM0ODgsIDM0OTMsIDM1MDAsIDM1MDUsIDM1MTIsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDYsIAorICAgIDM1NTIsIDM1NTgsIDM1NjMsIDM1NzAsIDM1NzcsIDM1ODQsIDM1OTEsIDM1OTgsIDM2MDMsIDM2MDgsIDM2MTcsIDM2MjUsIAorICAgIDM2MzQsIDM2MzksIDM2NDUsIDM2NTYsIDM2NjMsIDM2NzEsIDM2ODAsIDM2ODYsIDM2OTIsIDM2OTgsIDM3MDUsIDM3MTAsIAorICAgIDM3MTYsIDM3MjcsIDM3MzYsIDM3NDUsIDM3NTMsIDM3NjEsIDM3NzEsIDM3NzYsIDM3ODMsIDM3OTAsIDM3OTUsIDM4MDcsIAorICAgIDM4MTYsIDM4MjQsIDM4MzEsIDM4NDAsIDM4NDUsIDM4NTAsIDM4NTcsIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODQsIDM4OTMsIAorICAgIDM5MDEsIDM5MDYsIDM5MTQsIDM5MjAsIDM5MjgsIDM5MzYsIDM5NDIsIDM5NDgsIDM5NTQsIDM5NjEsIDM5NjksIDM5NzUsIAorICAgIDM5ODMsIDM5OTAsIDM5OTUsIDQwMDIsIDQwMTAsIDQwMjAsIDQwMjcsIDQwMzQsIDQwNDQsIDQwNTEsIDQwNTgsIDQwNjgsIAorICAgIDQwNzUsIDQwODIsIDQwODksIDQwOTUsIDQxMDEsIDQxMTEsIDQxMjQsIDQxMjksIDQxMzYsIDQxNDEsIDQxNDUsIDQxNTEsIAorICAgIDQxNjAsIDQxNjcsIDQxNzIsIDQxNzcsIDQxODEsIDQxODYsIDQxOTIsIDQxOTYsIDQyMDIsIDQyMDgsIDQyMTQsIDQyMjAsIAorICAgIDQyMjgsIDQyMzMsIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTQsIDQyNTYsIDQyNjEsIDQyNjUsIDQyNzEsIDQyNzcsIDQyODMsIAorICAgIDQyODgsIDQyOTUsIDQzMDIsIDQzMDgsIDQzMTUsIDQzMjMsIDQzMzEsIDQzMzYsIDQzNDEsIDQzNDUsIDQzNTAsIDQzNTIsIAorICAgIDQzNTQsIDQzNTcsIDQzNTksIDQzNjEsIDQzNjYsIDQzNzEsIDQzNzcsIDQzODIsIDQzODYsIDQzOTEsIDQzOTYsIDQ0MDUsIAorICAgIDQ0MTEsIDQ0MTYsIDQ0MjIsIDQ0MjcsIDQ0MzMsIDQ0NDEsIDQ0NDksIDQ0NTMsIDQ0NTcsIDQ0NjIsIDQ0NjgsIDQ0NzQsIAorICAgIDQ0ODAsIDQ0ODYsIDQ0OTEsIDQ0OTksIDQ1MDgsIDQ1MTcsIDQ1MjEsIDQ1MjcsIDQ1MzQsIDQ1NDEsIDQ1NDgsIDQ1NTUsIAorICAgIDQ1NTksIDQ1NjQsIDQ1NjksIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODYsIDQ1ODksIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIAorICAgIDQ2MDUsIDQ2MDksIDQ2MTUsIDQ2MTgsIDQ2MjMsIDQ2MjksIDQ2MzUsIDQ2MzgsIDQ2NDMsIDQ2NDksIDQ2NTMsIDQ2NTksIAorICAgIDQ2NjUsIDQ2NzEsIDQ2NzcsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTUsIDQ3MDEsIDQ3MDYsIDQ3MTEsIDQ3MTUsIDQ3MjAsIAorICAgIDQ3MjYsIDQ3MzIsIDQ3MzUsIDQ3MzksIDQ3NDMsIDQ3NDcsIDQ3NTAsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjksIDQ3NzMsIAorICAgIDQ3NzksIDQ3ODMsIDQ3ODksIDQ3OTMsIDQ3OTcsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTgsIDQ4MjQsIDQ4MzEsIDQ4MzcsIAorICAgIDQ4NDMsIDQ4NDksIDQ4NTIsIDQ4NTYsIDQ4NjAsIDQ4NjMsIDQ4NjcsIDQ4NzIsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTEsIAorICAgIDQ4OTUsIDQ4OTksIDQ5MDQsIDQ5MTAsIDQ5MTUsIDQ5MjEsIDQ5MjUsIDQ5MzIsIDQ5MzcsIDQ5NDIsIDQ5NDcsIDQ5NTIsIAorICAgIDQ5NTgsIDQ5NjEsIDQ5NjUsIDQ5NzAsIDQ5NzUsIDQ5ODQsIDQ5OTAsIDQ5OTUsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIAorICAgIDUwMTcsIDUwMjEsIDUwMjYsIDUwMjksIDUwMzUsIDUwNDAsIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzEsIAorICAgIDUwNzcsIDUwODMsIDUwODgsIDUwOTMsIDUwOTksIDUxMDUsIDUxMTEsIDUxMTYsIDUxMjEsIDUxMjgsIDUxMzUsIDUxMzksIAorICAgIDUxNDUsIDUxNTIsIDAsIDAsIDUxNTksIDUxNjIsIDUxNzEsIDUxODAsIDUxOTEsIDAsIDAsIDAsIDAsIDAsIDUxOTUsIAorICAgIDUxOTgsIDUyMDMsIDUyMTEsIDUyMTYsIDUyMjQsIDUyMzIsIDAsIDUyNDAsIDAsIDUyNDgsIDUyNTYsIDUyNjQsIDUyNzUsIAorICAgIDUyODAsIDUyODUsIDUyOTAsIDUyOTUsIDUzMDAsIDUzMDUsIDUzMTAsIDUzMTUsIDUzMjAsIDUzMjUsIDUzMzAsIDUzMzUsIAorICAgIDUzNDAsIDUzNDUsIDUzNTAsIDUzNTUsIDAsIDUzNjAsIDUzNjUsIDUzNzAsIDUzNzUsIDUzODAsIDUzODUsIDUzOTAsIAorICAgIDUzOTUsIDU0MDMsIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTQsIDU0NTksIDU0NjQsIDU0NjksIDU0NzQsIAorICAgIDU0NzksIDU0ODQsIDU0ODksIDU0OTQsIDU0OTksIDU1MDQsIDU1MDksIDU1MTQsIDU1MTksIDU1MjQsIDU1MjksIDU1MzQsIAorICAgIDU1MzksIDU1NDUsIDU1NTAsIDU1NTUsIDU1NjAsIDU1NjUsIDU1NzAsIDU1NzUsIDU1ODAsIDU1ODgsIDU1OTYsIDU2MDQsIAorICAgIDU2MTIsIDU2MjAsIDU2MjUsIDU2MjksIDU2MzMsIDU2NDAsIDU2NTAsIDU2NjAsIDU2NjQsIDU2NjgsIDU2NzIsIDU2NzgsIAorICAgIDU2ODUsIDU2ODksIDU2OTQsIDU2OTgsIDU3MDMsIDU3MDcsIDU3MTIsIDU3MTYsIDU3MjEsIDU3MjYsIDU3MzEsIDU3MzYsIAorICAgIDU3NDEsIDU3NDYsIDU3NTEsIDU3NTYsIDU3NjEsIDU3NjYsIDU3NzEsIDU3NzYsIDU3ODEsIDU3ODYsIDU3OTEsIDU3OTUsIAorICAgIDU3OTksIDU4MDUsIDU4MDksIDU4MTQsIDU4MjAsIDU4MjgsIDU4MzMsIDU4MzgsIDU4NDUsIDU4NTAsIDU4NTUsIDU4NjIsIAorICAgIDU4NzEsIDU4ODAsIDU4OTEsIDU4OTksIDU5MDQsIDU5MDksIDU5MTQsIDU5MjEsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDIsIAorICAgIDU5NDcsIDU5NTIsIDU5NTcsIDU5NjIsIDU5NzAsIDU5NzYsIDU5ODEsIDU5ODUsIDU5OTAsIDU5OTUsIDYwMDAsIDYwMDUsIAorICAgIDYwMTAsIDYwMTUsIDYwMjAsIDYwMjQsIDYwMzAsIDYwMzQsIDYwMzksIDYwNDQsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIAorICAgIDYwNjgsIDYwNzMsIDYwNzcsIDYwODIsIDYwODYsIDYwOTEsIDYwOTYsIDYxMDEsIDYxMDYsIDYxMTIsIDYxMTcsIDYxMjMsIAorICAgIDYxMjcsIDYxMzIsIDYxMzYsIDYxNDAsIDYxNDUsIDYxNTAsIDYxNTUsIDYxNjAsIDYxNjUsIDYxNzAsIDYxNzUsIDYxNzksIAorICAgIDYxODUsIDYxODksIDYxOTQsIDYxOTksIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjgsIDYyMzIsIDYyMzcsIAorICAgIDYyNDEsIDYyNDYsIDYyNTEsIDYyNTYsIDYyNjEsIDYyNjcsIDYyNzIsIDYyNzgsIDYyODIsIDYyODcsIDYyOTEsIDYyOTksIAorICAgIDYzMDQsIDYzMDksIDYzMTQsIDYzMjEsIDYzMjYsIDYzMzIsIDYzMzcsIDYzNDIsIDYzNDcsIDYzNTIsIDYzNTcsIDYzNjIsIAorICAgIDYzNzAsIDYzNzYsIDYzODEsIDYzODYsIDYzOTEsIDYzOTYsIDY0MDEsIDY0MDcsIDY0MTMsIDY0MjAsIDY0MjcsIDY0MzYsIAorICAgIDY0NDUsIDY0NTIsIDY0NTksIDY0NjgsIDY0NzcsIDY0ODIsIDY0ODcsIDY0OTIsIDY0OTcsIDY1MDIsIDY1MDcsIDY1MTIsIAorICAgIDY1MTcsIDY1MjgsIDY1MzksIDY1NDQsIDY1NDksIDY1NTYsIDY1NjMsIDY1NzEsIDY1NzksIDY1ODQsIDY1ODksIDY1OTQsIAorICAgIDY1OTksIDY2MDMsIDY2MDcsIDY2MTEsIDY2MTcsIDY2MjMsIDY2MjcsIDY2MzQsIDY2MzksIDY2NDksIDY2NTksIDY2NjUsIAorICAgIDY2NzEsIDY2NzksIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTAsIDY3MTcsIDY3MjYsIDY3MzUsIDY3NDMsIDY3NTEsIDY3NTksIAorICAgIDY3NjcsIDY3NzUsIDY3ODMsIDY3OTEsIDY3OTksIDY4MDYsIDY4MTMsIDY4MTksIDY4MjUsIDY4MzMsIDY4NDEsIDY4NDgsIAorICAgIDY4NTUsIDY4NjQsIDY4NzMsIDY4NzksIDY4ODUsIDY4OTMsIDY5MDEsIDY5MDksIDY5MTcsIDY5MjMsIDY5MjksIDY5MzcsIAorICAgIDY5NDUsIDY5NTMsIDY5NjEsIDY5NjgsIDY5NzUsIDY5ODMsIDY5OTEsIDY5OTksIDcwMDcsIDcwMTIsIDcwMTcsIDcwMjQsIAorICAgIDcwMzEsIDcwNDEsIDcwNTEsIDcwNTUsIDcwNjMsIDcwNzEsIDcwNzgsIDcwODUsIDcwOTMsIDcxMDEsIDcxMDgsIDcxMTUsIAorICAgIDcxMjMsIDcxMzEsIDcxMzgsIDcxNDUsIDcxNTMsIDcxNjEsIDcxNjYsIDcxNzMsIDcxODAsIDcxODcsIDcxOTQsIDcyMDAsIAorICAgIDcyMDYsIDcyMTQsIDcyMjIsIDcyMjcsIDcyMzIsIDcyNDAsIDcyNDgsIDcyNTYsIDcyNjQsIDcyNzIsIDcyODAsIDcyODcsIAorICAgIDcyOTQsIDczMDIsIDczMTAsIDczMTgsIDczMjYsIDczMzMsIDczNDAsIDczNDYsIDczNTIsIDczNjEsIDczNzAsIDczNzcsIAorICAgIDczODQsIDczOTEsIDczOTgsIDc0MDUsIDc0MTIsIDc0MTksIDc0MjYsIDc0MzQsIDc0NDIsIDc0NTAsIDc0NTgsIDc0NjYsIAorICAgIDc0NzQsIDc0ODQsIDc0OTQsIDc1MDEsIDc1MDgsIDc1MTUsIDc1MjIsIDc1MjksIDc1MzYsIDc1NDMsIDc1NTAsIDc1NTcsIAorICAgIDc1NjQsIDc1NzEsIDc1NzgsIDc1ODUsIDc1OTIsIDc1OTksIDc2MDYsIDc2MTMsIDc2MjAsIDc2MjcsIDc2MzQsIDc2NDEsIAorICAgIDc2NDgsIDc2NTUsIDc2NjIsIDc2NjcsIDc2NzIsIDc2NzcsIDc2ODIsIDc2ODcsIDc2OTIsIDc2OTcsIDc3MDIsIDc3MDcsIAorICAgIDc3MTIsIDc3MTgsIDc3MjQsIDc3MzMsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc3OTIsIDc3OTcsIDc4MDIsIDc4MDcsIDc4MTIsIDc4MTcsIDc4MjIsIDc4MjcsIDc4MzIsIAorICAgIDc4MzYsIDc4NDEsIDc4NDYsIDc4NTEsIDc4NTYsIDc4NjEsIDc4NjYsIDc4NzEsIDc4NzYsIDc4ODEsIDc4ODYsIDc4OTEsIAorICAgIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzAsIDc5MzUsIDc5NDAsIDc5NDUsIDc5NTAsIAorICAgIDc5NTUsIDc5NjAsIDc5NjUsIDc5NzAsIDc5NzUsIDAsIDAsIDc5ODAsIDc5ODcsIDc5OTAsIDc5OTQsIDc5OTgsIDgwMDEsIAorICAgIDgwMDUsIDAsIDgwMDksIDgwMTQsIDgwMTksIDgwMjQsIDgwMjksIDgwMzQsIDgwMzksIDgwNDQsIDgwNDksIDgwNTMsIAorICAgIDgwNTgsIDgwNjMsIDgwNjgsIDgwNzMsIDgwNzgsIDgwODMsIDgwODgsIDgwOTMsIDgwOTgsIDgxMDMsIDgxMDgsIDgxMTMsIAorICAgIDgxMTgsIDgxMjMsIDgxMjgsIDgxMzMsIDgxMzgsIDgxNDMsIDgxNDcsIDgxNTIsIDgxNTcsIDgxNjIsIDgxNjcsIDgxNzIsIAorICAgIDgxNzcsIDgxODIsIDgxODcsIDgxOTIsIDgxOTcsIDAsIDgyMDQsIDgyMDksIDAsIDAsIDAsIDAsIDgyMTIsIDAsIDgyMTYsIAorICAgIDgyMjEsIDgyMjYsIDgyMzEsIDgyMzgsIDgyNDUsIDgyNTAsIDgyNTUsIDgyNjAsIDgyNjUsIDgyNzAsIDgyNzUsIDgyODAsIAorICAgIDgyODcsIDgyOTIsIDgyOTksIDgzMDYsIDgzMTEsIDgzMTgsIDgzMjMsIDgzMjgsIDgzMzMsIDgzNDAsIDgzNDUsIDgzNTAsIAorICAgIDgzNTcsIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTIsIDgzOTcsIDg0MDQsIDg0MTEsIDg0MTgsIDg0MjMsIAorICAgIDg0MjgsIDg0MzMsIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTgsIDg0NjMsIDg0NzEsIDg0NzYsIDg0ODEsIDg0ODYsIDg0OTEsIAorICAgIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTgsIDg1MjQsIDg1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1MzgsIDg1NDIsIAorICAgIDg1NDYsIDg1NTAsIDg1NTQsIDg1NTgsIDg1NjIsIDg1NjYsIDg1NzAsIDg1NzQsIDg1NzgsIDg1ODMsIDg1ODcsIDg1OTEsIAorICAgIDg1OTYsIDg2MDAsIDg2MDUsIDg2MDksIDg2MTMsIDg2MTcsIDg2MjIsIDg2MjYsIDg2MzEsIDg2MzUsIDg2MzksIDg2NDMsIAorICAgIDg2NDcsIDAsIDAsIDAsIDAsIDAsIDg2NTEsIDg2NTgsIDg2NjYsIDg2NzMsIDg2NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDg2ODMsIDg2ODYsIDg2OTAsIDg2OTUsIDg2OTksIDAsIDg3MDMsIDg3MDksIDg3MTUsIDg3MTgsIAorICAgIDg3MjUsIDg3MzQsIDg3MzcsIDg3NDAsIDg3NDUsIDg3NTEsIDg3NTUsIDg3NjMsIDg3NjksIDg3NzUsIDg3ODMsIDg3ODcsIAorICAgIDg3OTIsIDg4MDMsIDg4MDgsIDg4MTIsIDg4MTYsIDg4MjAsIDAsIDAsIDg4MjMsIDg4MzAsIDg4MzQsIDg4NDAsIDg4NDQsIAorICAgIDg4NTEsIDg4NTcsIDg4NjQsIDg4NzAsIDg4NzYsIDg4ODAsIDg4ODQsIDg4OTAsIDg4OTQsIDg4OTgsIDg5MDIsIDg5MDYsIAorICAgIDg5MTAsIDg5MTQsIDg5MTgsIDg5MjIsIDg5MjYsIDg5MzAsIDg5MzQsIDg5MzgsIDg5NDIsIDg5NDYsIDg5NTAsIDg5NTQsIAorICAgIDg5NTgsIDg5NjYsIDg5NzQsIDg5ODQsIDg5OTMsIDkwMDIsIDkwMDUsIDkwMDksIDkwMTMsIDkwMTcsIDkwMjEsIDkwMjUsIAorICAgIDkwMjksIDkwMzMsIDkwMzcsIDkwNDIsIDkwNDYsIDkwNDksIDkwNTIsIDkwNTUsIDkwNTgsIDkwNjEsIDkwNjQsIDkwNjcsIAorICAgIDkwNzAsIDkwNzQsIDkwNzcsIDkwODAsIDkwODUsIDkwOTAsIDkwOTYsIDkwOTksIDkxMDYsIDkxMTUsIDkxMjAsIDkxMjUsIAorICAgIDkxMzIsIDkxMzcsIDkxNDIsIDkxNDYsIDkxNTAsIDkxNTQsIDkxNTgsIDkxNjIsIDkxNjYsIDkxNzAsIDkxNzQsIDkxNzgsIAorICAgIDkxODIsIDkxODcsIDkxOTIsIDkxOTksIDkyMDUsIDkyMTEsIDkyMTcsIDkyMjIsIDkyMzAsIDkyMzgsIDkyNDMsIDkyNDksIAorICAgIDkyNTUsIDkyNjEsIDkyNjcsIDkyNzEsIDkyNzUsIDkyNzksIDkyODYsIDkyOTYsIDkzMDAsIDkzMDQsIDkzMDgsIDkzMTQsIAorICAgIDkzMjIsIDkzMjYsIDkzMzAsIDkzMzcsIDkzNDEsIDkzNDUsIDkzNDksIDkzNTYsIDkzNjMsIDkzNzUsIDkzNzksIDkzODMsIAorICAgIDkzODcsIDkzOTcsIDk0MDYsIDk0MTAsIDk0MTgsIDk0MjUsIDk0MzIsIDk0NDEsIDk0NTIsIDk0NjAsIDk0NjQsIDk0NzMsIAorICAgIDk0ODQsIDk0OTIsIDk1MDUsIDk1MTMsIDk1MjEsIDk1MjksIDk1MzcsIDk1NDMsIDk1NTIsIDk1NTksIDk1NjMsIDk1NzEsIAorICAgIDk1NzUsIDk1ODIsIDk1OTAsIDk1OTQsIDk2MDAsIDk2MDcsIDk2MTQsIDk2MTgsIDk2MjYsIDk2MzAsIDk2MzcsIDk2NDEsIAorICAgIDk2NDksIDk2NTMsIDk2NjEsIDk2NjksIDk2NzYsIDk2ODQsIDk2OTIsIDk2OTksIDk3MDUsIDk3MDksIDk3MTYsIDk3MjQsIAorICAgIDk3MzAsIDk3MzcsIDk3NDQsIDk3NTAsIDk3NTksIDk3NjcsIDk3NzQsIDk3ODAsIDk3ODQsIDk3ODcsIDk3OTEsIDk3OTcsIAorICAgIDk4MDUsIDk4MDksIDk4MTUsIDk4MjEsIDk4MjgsIDk4MzUsIDk4MzgsIDk4NDUsIDk4NTAsIDk4NTgsIDk4NjMsIDk4NjcsIAorICAgIDk4ODAsIDk4OTMsIDk4OTksIDk5MDYsIDk5MTEsIDk5MTcsIDk5MjIsIDk5MjgsIDk5MzgsIDk5NDUsIDk5NTQsIDk5NjQsIAorICAgIDk5NzAsIDk5NzUsIDk5ODAsIDk5ODQsIDk5ODgsIDk5OTMsIDk5OTgsIDEwMDA0LCAxMDAxMiwgMTAwMjAsIDEwMDMxLCAKKyAgICAxMDAzNiwgMTAwNDUsIDEwMDU0LCAxMDA2MSwgMTAwNjcsIDEwMDczLCAxMDA3OSwgMTAwODUsIDEwMDkxLCAxMDA5NywgCisgICAgMTAxMDMsIDEwMTA5LCAxMDExNSwgMTAxMjIsIDEwMTI5LCAxMDEzNiwgMTAxNDIsIDEwMTUwLCAxMDE1OSwgMTAxNjUsIAorICAgIDEwMTcyLCAxMDE3OSwgMTAxODQsIDEwMTg5LCAxMDE5MywgMTAyMDAsIDEwMjA3LCAxMDIxNiwgMTAyMjUsIDEwMjI4LCAKKyAgICAxMDIzMywgMTAyMzgsIDAsIDEwMjQzLCAxMDI0NywgMTAyNTEsIDEwMjU3LCAxMDI2MSwgMTAyNjUsIDEwMjcxLCAxMDI3NSwgCisgICAgMTAyODMsIDEwMjg3LCAxMDI5MSwgMTAyOTUsIDEwMjk5LCAxMDMwMywgMTAzMDksIDEwMzEzLCAxMDMxOSwgMTAzMjMsIAorICAgIDEwMzI3LCAxMDMzMSwgMTAzMzUsIDEwMzM5LCAxMDM0NCwgMTAzNDcsIDEwMzUxLCAxMDM1NywgMTAzNjEsIDEwMzY1LCAKKyAgICAxMDM2OSwgMTAzNzMsIDEwMzc3LCAxMDM4MywgMTAzODksIDEwMzk1LCAxMDM5OSwgMTA0MDMsIDEwNDA4LCAxMDQxMiwgCisgICAgMTA0MTYsIDEwNDIxLCAxMDQyNSwgMTA0MjksIDEwNDM2LCAxMDQ0MywgMTA0NDcsIDEwNDUxLCAxMDQ1NiwgMTA0NjAsIAorICAgIDEwNDY0LCAxMDQ2NywgMTA0NzIsIDEwNDc1LCAxMDQ3OCwgMTA0ODMsIDEwNDg4LCAxMDQ5MiwgMTA0OTYsIDEwNTAyLCAKKyAgICAxMDUwOCwgMTA1MTEsIDAsIDAsIDEwNTE0LCAxMDUyMCwgMTA1MjYsIDEwNTMyLCAxMDU0MiwgMTA1NTQsIDEwNTY2LCAKKyAgICAxMDU4MywgMTA1OTUsIDEwNjA2LCAxMDYxNCwgMTA2MjEsIDEwNjMyLCAxMDY0NywgMTA2NTgsIDEwNjY0LCAxMDY3MywgCisgICAgMTA2ODEsIDEwNjkzLCAxMDcwMywgMTA3MTEsIDEwNzIzLCAxMDczMCwgMTA3MzgsIDEwNzUwLCAxMDc1NiwgMTA3NjIsIAorICAgIDEwNzcwLCAxMDc3OCwgMTA3ODYsIDEwNzkyLCAxMDgwMiwgMTA4MDksIDEwODE5LCAxMDgyOSwgMTA4NDIsIDEwODU2LCAKKyAgICAxMDg3MCwgMTA4ODAsIDEwODkxLCAxMDkwMiwgMTA5MTUsIDEwOTI4LCAxMDk0MiwgMTA5NTQsIDEwOTY2LCAxMDk3OSwgCisgICAgMTA5OTIsIDExMDA0LCAxMTAxNywgMTEwMjYsIDExMDM0LCAxMTAzOSwgMTEwNDQsIDExMDQ5LCAxMTA1NCwgMTEwNTksIAorICAgIDExMDY0LCAxMTA2OSwgMTEwNzQsIDExMDc5LCAxMTA4NCwgMTEwODksIDExMDk0LCAxMTA5OSwgMTExMDQsIDExMTA5LCAKKyAgICAxMTExNCwgMTExMTksIDExMTI0LCAxMTEyOSwgMTExMzQsIDExMTM5LCAxMTE0NCwgMTExNDksIDExMTU0LCAxMTE1OSwgCisgICAgMTExNjQsIDExMTY5LCAxMTE3NCwgMTExNzksIDExMTg0LCAxMTE4OSwgMTExOTQsIDExMTk4LCAxMTIwMywgMTEyMDgsIAorICAgIDExMjEzLCAxMTIxOCwgMTEyMjMsIDExMjI3LCAxMTIzMSwgMTEyMzUsIDExMjM5LCAxMTI0MywgMTEyNDcsIDExMjUxLCAKKyAgICAxMTI1NSwgMTEyNTksIDExMjYzLCAxMTI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTEyNzIsIDExMjc3LCAxMTI4MSwgMTEyODUsIDExMjg5LCAxMTI5MywgMTEyOTcsIDExMzAxLCAxMTMwNSwgMTEzMDksIAorICAgIDExMzEzLCAxMTMxNywgMTEzMjIsIDExMzI2LCAxMTMzMCwgMTEzMzQsIDExMzM5LCAxMTM0MywgMTEzNDgsIDExMzUzLCAKKyAgICAxMTM1OCwgMTEzNjIsIDExMzY3LCAxMTM3MiwgMTEzNzcsIDExMzgyLCAxMTM4NiwgMTEzOTEsIDExMzk1LCAxMTQwMCwgCisgICAgMTE0MDUsIDExNDA5LCAxMTQxNCwgMTE0MjEsIDExNDI1LCAxMTQzMCwgMTE0MzQsIDExNDM4LCAxMTQ0MywgMTE0NDcsIAorICAgIDExNDU0LCAxMTQ2MSwgMTE0NjgsIDExNDc0LCAxMTQ4MiwgMTE0OTAsIDExNDk5LCAxMTUwNywgMTE1MTQsIDExNTIxLCAKKyAgICAxMTUyOSwgMTE1MzUsIDExNTQxLCAxMTU0NywgMTE1NTMsIDExNTYwLCAxMTU2NSwgMTE1NjksIDExNTc0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTU3OCwgMTE1ODMsIDExNTg4LCAxMTU5MywgMTE1OTgsIDExNjAzLCAxMTYwOCwgMTE2MTMsIDExNjE4LCAKKyAgICAxMTYyMywgMTE2MjgsIDExNjMzLCAxMTYzOCwgMTE2NDMsIDExNjQ4LCAxMTY1MywgMTE2NTgsIDExNjYzLCAxMTY2OCwgCisgICAgMTE2NzMsIDExNjc4LCAxMTY4MywgMTE2ODgsIDExNjkzLCAxMTY5OCwgMTE3MDMsIDExNzA4LCAxMTcxNiwgMTE3MjMsIAorICAgIDExNzI5LCAxMTczNCwgMTE3NDIsIDExNzQ5LCAxMTc1NSwgMTE3NjIsIDExNzY4LCAxMTc3MywgMTE3ODAsIDExNzg3LCAKKyAgICAxMTc5MywgMTE3OTgsIDExODAzLCAxMTgwOSwgMTE4MTQsIDExODE5LCAxMTgyNSwgMCwgMCwgMTE4MzAsIDExODM2LCAKKyAgICAxMTg0MiwgMTE4NDgsIDExODU0LCAxMTg2MCwgMTE4NjYsIDExODcxLCAxMTg3OSwgMTE4ODUsIDExODkxLCAxMTg5NywgCisgICAgMTE5MDMsIDExOTA5LCAxMTkxNywgMCwgMTE5MjMsIDExOTI4LCAxMTkzMywgMTE5MzgsIDExOTQzLCAxMTk0OCwgMTE5NTMsIAorICAgIDExOTU4LCAxMTk2MywgMTE5NjgsIDExOTczLCAxMTk3OCwgMTE5ODMsIDExOTg4LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAKKyAgICAxMjAwOCwgMTIwMTMsIDEyMDE4LCAxMjAyMywgMTIwMjgsIDEyMDMzLCAxMjAzOCwgMTIwNDMsIDEyMDQ4LCAxMjA1MywgCisgICAgMTIwNTgsIDAsIDAsIDEyMDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2Mjg3MiwgNjI4ODEsIDYyODkwLCA2MjkwMSwgNjI5MDgsIDYyOTEzLCA2MjkxOCwgNjI5MjUsIDYyOTMyLCA2MjkzOCwgCi0gICAgNjI5NDMsIDYyOTQ4LCA2Mjk1MywgNjI5NTgsIDYyOTY1LCA2Mjk3MCwgNjI5NzUsIDYyOTgwLCA2Mjk5MSwgNjI5OTYsIAotICAgIDYzMDAxLCA2MzAwOCwgNjMwMTMsIDYzMDIwLCA2MzAyNSwgNjMwMzAsIDYzMDM3LCA2MzA0NCwgNjMwNTEsIDYzMDYwLCAKLSAgICA2MzA2OSwgNjMwNzQsIDYzMDc5LCA2MzA4NCwgNjMwOTEsIDYzMDk2LCA2MzEwNiwgNjMxMTMsIDYzMTE4LCA2MzEyMywgCi0gICAgNjMxMjgsIDYzMTMzLCA2MzEzOCwgNjMxNDMsIDYzMTUyLCA2MzE1OSwgNjMxNjYsIDYzMTcxLCA2MzE3OCwgNjMxODMsIAotICAgIDYzMTkwLCA2MzE5OSwgNjMyMTAsIDYzMjE1LCA2MzIyNCwgNjMyMjksIDYzMjM2LCA2MzI0NSwgNjMyNTQsIDYzMjU5LCAKLSAgICA2MzI2NCwgNjMyNzEsIDYzMjc3LCA2MzI4NCwgNjMyOTEsIDYzMjk1LCA2MzI5OSwgNjMzMDIsIDYzMzA2LCA2MzMxMCwgCi0gICAgNjMzMTQsIDYzMzE4LCA2MzMyMiwgNjMzMjYsIDYzMzMwLCA2MzMzMywgNjMzMzcsIDYzMzQxLCA2MzM0NSwgNjMzNDksIAotICAgIDYzMzUzLCA2MzM1NywgNjMzNjAsIDYzMzY0LCA2MzM2OCwgNjMzNzEsIDYzMzc1LCA2MzM3OSwgNjMzODMsIDYzMzg3LCAKLSAgICA2MzM5MSwgNjMzOTUsIDYzMzk5LCA2MzQwMywgNjM0MDcsIDYzNDExLCA2MzQxNSwgNjM0MTksIDYzNDIzLCA2MzQyNywgCi0gICAgNjM0MzEsIDYzNDM1LCA2MzQzOSwgNjM0NDMsIDYzNDQ3LCA2MzQ1MSwgNjM0NTUsIDYzNDU5LCA2MzQ2MywgNjM0NjcsIAotICAgIDYzNDcxLCA2MzQ3NSwgNjM0NzksIDYzNDgzLCA2MzQ4NywgNjM0OTEsIDYzNDk1LCA2MzQ5OSwgNjM1MDMsIDYzNTA3LCAKLSAgICA2MzUxMSwgNjM1MTUsIDYzNTE5LCA2MzUyMywgNjM1MjcsIDYzNTMxLCA2MzUzNSwgNjM1MzksIDYzNTQzLCA2MzU0NywgCi0gICAgNjM1NTAsIDYzNTU0LCA2MzU1OCwgNjM1NjIsIDYzNTY2LCA2MzU3MCwgNjM1NzQsIDYzNTc4LCA2MzU4MiwgNjM1ODYsIAotICAgIDYzNTkwLCA2MzU5NCwgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MTAsIDYzNjE0LCA2MzYxOCwgNjM2MjIsIDYzNjI2LCAKLSAgICA2MzYzMCwgNjM2MzQsIDYzNjM4LCA2MzY0MiwgNjM2NDYsIDYzNjUwLCA2MzY1NCwgNjM2NTgsIDYzNjYyLCA2MzY2NiwgCi0gICAgNjM2NzAsIDYzNjc0LCA2MzY3OCwgNjM2ODIsIDYzNjg2LCA2MzY5MCwgNjM2OTQsIDYzNjk4LCA2MzcwMiwgNjM3MDYsIAotICAgIDYzNzEwLCA2MzcxNCwgNjM3MTgsIDYzNzIyLCA2MzcyNiwgNjM3MzAsIDYzNzM0LCA2MzczOCwgNjM3NDIsIDYzNzQ2LCAKLSAgICA2Mzc1MCwgNjM3NTQsIDYzNzU4LCA2Mzc2MiwgNjM3NjYsIDYzNzcwLCA2Mzc3NCwgNjM3NzgsIDYzNzgyLCA2Mzc4NiwgCi0gICAgNjM3OTAsIDYzNzk0LCA2Mzc5OCwgNjM4MDIsIDYzODA2LCA2MzgxMCwgNjM4MTQsIDYzODE4LCA2MzgyMiwgNjM4MjYsIAotICAgIDYzODMwLCA2MzgzNCwgNjM4MzgsIDYzODQyLCA2Mzg0NiwgNjM4NTAsIDYzODU0LCA2Mzg1OCwgNjM4NjIsIDYzODY2LCAKLSAgICA2Mzg3MCwgNjM4NzQsIDYzODc4LCA2Mzg4MiwgNjM4ODYsIDYzODkwLCA2Mzg5NCwgNjM4OTgsIDYzOTAyLCA2MzkwNiwgCi0gICAgNjM5MTAsIDYzOTE0LCA2MzkxOCwgNjM5MjIsIDYzOTI2LCA2MzkzMCwgNjM5MzQsIDYzOTM4LCA2Mzk0MiwgNjM5NDYsIAotICAgIDYzOTUwLCA2Mzk1NCwgNjM5NTgsIDYzOTYyLCA2Mzk2NiwgNjM5NzAsIDYzOTc0LCA2Mzk3OCwgNjM5ODIsIDYzOTg2LCAKLSAgICA2Mzk5MCwgNjM5OTQsIDYzOTk4LCA2NDAwMiwgNjQwMDYsIDY0MDEwLCA2NDAxNCwgNjQwMTgsIDY0MDIxLCA2NDAyNSwgCi0gICAgNjQwMjksIDY0MDMzLCA2NDAzNywgNjQwNDEsIDY0MDQ1LCA2NDA0OSwgNjQwNTMsIDY0MDU3LCA2NDA2MSwgNjQwNjUsIAotICAgIDY0MDY5LCA2NDA3MywgNjQwNzcsIDY0MDgxLCA2NDA4NSwgNjQwODksIDY0MDkzLCA2NDA5NywgNjQxMDEsIDY0MTA1LCAKLSAgICA2NDEwOSwgNjQxMTMsIDY0MTE3LCA2NDEyMSwgNjQxMjUsIDY0MTI5LCA2NDEzMywgNjQxMzcsIDY0MTQxLCA2NDE0NSwgCi0gICAgNjQxNDksIDY0MTUzLCA2NDE1NywgNjQxNjEsIDY0MTY1LCA2NDE2OSwgNjQxNzMsIDY0MTc3LCA2NDE4MSwgNjQxODUsIAotICAgIDY0MTg5LCA2NDE5MywgNjQxOTcsIDY0MjAxLCA2NDIwNSwgNjQyMDksIDY0MjEzLCA2NDIxNywgNjQyMjEsIDY0MjI1LCAKLSAgICA2NDIyOSwgNjQyMzMsIDY0MjM3LCA2NDI0MSwgNjQyNDUsIDY0MjQ5LCA2NDI1MywgNjQyNTcsIDY0MjYxLCA2NDI2NSwgCi0gICAgNjQyNjksIDY0MjczLCA2NDI3NywgNjQyODEsIDY0Mjg1LCA2NDI4OSwgNjQyOTMsIDY0Mjk3LCA2NDMwMSwgNjQzMDUsIAotICAgIDY0MzA5LCA2NDMxMywgNjQzMTcsIDY0MzIxLCA2NDMyNSwgNjQzMjksIDY0MzMzLCA2NDMzNywgNjQzNDEsIDY0MzQ1LCAKLSAgICA2NDM0OSwgNjQzNTMsIDY0MzU3LCA2NDM2MSwgNjQzNjUsIDY0MzY5LCA2NDM3MywgNjQzNzcsIDY0MzgxLCA2NDM4NSwgCi0gICAgNjQzODksIDY0MzkzLCA2NDM5NywgNjQ0MDEsIDY0NDA1LCA2NDQwOSwgNjQ0MTMsIDY0NDE3LCA2NDQyMSwgNjQ0MjUsIAotICAgIDY0NDI5LCA2NDQzMywgNjQ0MzcsIDY0NDQxLCA2NDQ0NSwgNjQ0NDksIDY0NDUzLCA2NDQ1NywgNjQ0NjEsIDY0NDY1LCAKLSAgICA2NDQ2OSwgNjQ0NzMsIDY0NDc3LCA2NDQ4MSwgNjQ0ODQsIDY0NDg4LCA2NDQ5MiwgNjQ0OTYsIDY0NTAwLCA2NDUwNCwgCi0gICAgNjQ1MDgsIDY0NTEyLCA2NDUxNiwgNjQ1MjAsIDY0NTI0LCA2NDUyOCwgNjQ1MzIsIDY0NTM2LCA2NDU0MCwgNjQ1NDQsIAotICAgIDY0NTQ4LCA2NDU1MiwgNjQ1NTYsIDY0NTYwLCA2NDU2NCwgNjQ1NjgsIDY0NTcyLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCAKLSAgICA2NDU4OCwgNjQ1OTIsIDY0NTk2LCA2NDYwMCwgNjQ2MDQsIDY0NjA4LCA2NDYxMiwgNjQ2MTYsIDY0NjIwLCA2NDYyNCwgCi0gICAgNjQ2MjgsIDY0NjMyLCA2NDYzNiwgNjQ2NDAsIDY0NjQ0LCA2NDY0OCwgNjQ2NTIsIDY0NjU2LCA2NDY2MCwgNjQ2NjQsIAotICAgIDY0NjY4LCA2NDY3MiwgNjQ2NzYsIDY0NjgwLCA2NDY4NCwgNjQ2ODgsIDY0NjkyLCA2NDY5NiwgNjQ3MDAsIDY0NzA0LCAKLSAgICA2NDcwOCwgNjQ3MTIsIDY0NzE2LCA2NDcyMCwgNjQ3MjQsIDY0NzI4LCA2NDczMiwgNjQ3MzYsIDY0NzQwLCA2NDc0NCwgCi0gICAgNjQ3NDgsIDY0NzUyLCA2NDc1NiwgNjQ3NjAsIDY0NzY0LCA2NDc2OCwgNjQ3NzIsIDY0Nzc2LCA2NDc4MCwgNjQ3ODQsIAotICAgIDY0Nzg4LCA2NDc5MiwgNjQ3OTYsIDY0ODAwLCA2NDgwNCwgNjQ4MDgsIDY0ODEyLCA2NDgxNiwgNjQ4MjAsIDY0ODI0LCAKLSAgICA2NDgyOCwgNjQ4MzIsIDY0ODM2LCA2NDg0MCwgNjQ4NDMsIDY0ODQ3LCA2NDg1MSwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgCi0gICAgNjQ4NjcsIDY0ODcxLCA2NDg3NSwgNjQ4NzksIDY0ODgzLCA2NDg4NywgNjQ4OTEsIDY0ODk1LCA2NDg5OSwgNjQ5MDMsIAotICAgIDY0OTA3LCA2NDkxMSwgNjQ5MTUsIDY0OTE5LCA2NDkyMywgNjQ5MjcsIDY0OTMxLCA2NDkzNSwgNjQ5MzksIDY0OTQzLCAKLSAgICA2NDk0NywgNjQ5NTEsIDY0OTU1LCA2NDk1OSwgNjQ5NjMsIDY0OTY3LCA2NDk3MSwgNjQ5NzUsIDY0OTc5LCA2NDk4MywgCi0gICAgNjQ5ODcsIDY0OTkxLCA2NDk5NSwgNjQ5OTksIDY1MDAzLCA2NTAwNywgNjUwMTEsIDY1MDE1LCA2NTAxOSwgNjUwMjMsIAotICAgIDY1MDI3LCA2NTAzMSwgNjUwMzUsIDY1MDM5LCA2NTA0MywgNjUwNDcsIDY1MDUxLCA2NTA1NSwgNjUwNTksIDY1MDYzLCAKLSAgICA2NTA2NywgNjUwNzEsIDY1MDc1LCA2NTA3OSwgNjUwODMsIDY1MDg3LCA2NTA5MSwgNjUwOTUsIDY1MDk5LCA2NTEwMywgCi0gICAgNjUxMDcsIDY1MTExLCA2NTExNSwgNjUxMTksIDY1MTIzLCA2NTEyNywgNjUxMzEsIDY1MTM1LCA2NTEzOSwgNjUxNDMsIAotICAgIDY1MTQ3LCA2NTE1MSwgNjUxNTUsIDY1MTU5LCA2NTE2MywgNjUxNjcsIDY1MTcxLCA2NTE3NSwgNjUxNzksIDY1MTgzLCAKLSAgICA2NTE4NywgNjUxOTEsIDY1MTk1LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCA2NTIxMSwgNjUyMTUsIDY1MjE5LCA2NTIyMywgCi0gICAgNjUyMjcsIDY1MjMxLCA2NTIzNSwgNjUyMzksIDY1MjQzLCA2NTI0NywgNjUyNTEsIDY1MjU1LCA2NTI1OSwgNjUyNjMsIAotICAgIDY1MjY3LCA2NTI3MSwgNjUyNzUsIDY1Mjc5LCA2NTI4MywgNjUyODcsIDY1MjkxLCA2NTI5NSwgNjUyOTksIDY1MzAzLCAKLSAgICA2NTMwNywgNjUzMTEsIDY1MzE1LCA2NTMxOSwgNjUzMjMsIDY1MzI3LCA2NTMzMSwgNjUzMzUsIDY1MzM4LCA2NTM0MiwgCi0gICAgNjUzNDYsIDY1MzUwLCA2NTM1NCwgNjUzNTgsIDY1MzYyLCA2NTM2NiwgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIAotICAgIDY1Mzg2LCA2NTM5MCwgNjUzOTQsIDY1Mzk4LCA2NTQwMiwgNjU0MDYsIDY1NDEwLCA2NTQxNCwgNjU0MTgsIDY1NDIyLCAKLSAgICA2NTQyNiwgNjU0MzAsIDY1NDM0LCA2NTQzOCwgNjU0NDIsIDY1NDQ2LCA2NTQ1MCwgNjU0NTQsIDY1NDU4LCA2NTQ2MiwgCi0gICAgNjU0NjYsIDY1NDcwLCA2NTQ3NCwgNjU0NzgsIDY1NDgyLCA2NTQ4NiwgNjU0OTAsIDY1NDk0LCA2NTQ5OCwgNjU1MDIsIAotICAgIDY1NTA2LCA2NTUxMCwgNjU1MTQsIDY1NTE4LCA2NTUyMiwgNjU1MjYsIDY1NTMwLCA2NTUzNCwgNjU1MzgsIDY1NTQyLCAKLSAgICA2NTU0NiwgNjU1NTAsIDY1NTU0LCA2NTU1OCwgNjU1NjIsIDY1NTY2LCA2NTU3MCwgNjU1NzQsIDY1NTc4LCA2NTU4MiwgCi0gICAgNjU1ODYsIDY1NTkwLCA2NTU5NCwgNjU1OTgsIDY1NjAyLCA2NTYwNiwgNjU2MTAsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIAotICAgIDY1NjI2LCA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgNjU2NTgsIDY1NjYyLCAKLSAgICA2NTY2NiwgNjU2NzAsIDY1Njc0LCA2NTY3OCwgNjU2ODIsIDY1Njg2LCA2NTY5MCwgNjU2OTQsIDY1Njk4LCA2NTcwMiwgCi0gICAgNjU3MDYsIDY1NzEwLCA2NTcxNCwgNjU3MTgsIDY1NzIyLCA2NTcyNiwgNjU3MzAsIDY1NzM0LCA2NTczOCwgNjU3NDIsIAotICAgIDY1NzQ2LCA2NTc1MCwgNjU3NTQsIDY1NzU4LCA2NTc2MiwgNjU3NjYsIDY1NzcwLCA2NTc3NCwgNjU3NzgsIDY1NzgyLCAKLSAgICA2NTc4NiwgNjU3OTAsIDY1NzkzLCA2NTc5NywgNjU4MDEsIDY1ODA1LCA2NTgwOSwgNjU4MTMsIDY1ODE3LCA2NTgyMSwgCi0gICAgNjU4MjUsIDY1ODI5LCA2NTgzMywgNjU4MzcsIDY1ODQxLCA2NTg0NSwgNjU4NDksIDY1ODUzLCA2NTg1NywgNjU4NjEsIAotICAgIDY1ODY1LCA2NTg2OSwgNjU4NzMsIDY1ODc3LCA2NTg4MSwgNjU4ODUsIDY1ODg5LCA2NTg5MywgNjU4OTcsIDY1OTAxLCAKLSAgICA2NTkwNSwgNjU5MDksIDY1OTEzLCA2NTkxNywgNjU5MjEsIDY1OTI1LCA2NTkyOSwgNjU5MzMsIDY1OTM3LCA2NTk0MSwgCi0gICAgNjU5NDUsIDY1OTQ5LCA2NTk1MywgNjU5NTcsIDY1OTYxLCA2NTk2NSwgNjU5NjksIDY1OTczLCA2NTk3NywgNjU5ODEsIAotICAgIDY1OTg1LCA2NTk4OSwgNjU5OTMsIDY1OTk3LCA2NjAwMSwgNjYwMDUsIDY2MDA5LCA2NjAxMywgNjYwMTcsIDY2MDIxLCAKLSAgICA2NjAyNSwgNjYwMjksIDY2MDMzLCA2NjAzNywgNjYwNDEsIDY2MDQ1LCA2NjA0OSwgNjYwNTMsIDY2MDU3LCA2NjA2MSwgCi0gICAgNjYwNjUsIDY2MDY5LCA2NjA3MywgNjYwNzcsIDY2MDgxLCA2NjA4NSwgNjYwODksIDY2MDkzLCA2NjA5NywgNjYxMDEsIAotICAgIDY2MTA1LCA2NjEwOSwgNjYxMTMsIDY2MTE3LCA2NjEyMSwgNjYxMjUsIDY2MTI5LCA2NjEzMywgNjYxMzcsIDY2MTQxLCAKLSAgICA2NjE0NSwgNjYxNDksIDY2MTUzLCA2NjE1NywgNjYxNjEsIDY2MTY1LCA2NjE2OSwgNjYxNzMsIDY2MTc3LCA2NjE4MSwgCi0gICAgNjYxODUsIDY2MTg5LCA2NjE5MywgNjYxOTcsIDY2MjAxLCA2NjIwNSwgNjYyMDksIDY2MjEzLCA2NjIxNywgNjYyMjEsIAotICAgIDY2MjI1LCA2NjIyOSwgNjYyMzMsIDY2MjM3LCA2NjI0MSwgNjYyNDUsIDY2MjQ5LCA2NjI1MywgNjYyNTcsIDY2MjYxLCAKLSAgICA2NjI2NSwgNjYyNjksIDY2MjczLCA2NjI3NywgNjYyODEsIDY2Mjg1LCA2NjI4OSwgNjYyOTMsIDY2Mjk3LCA2NjMwMSwgCi0gICAgNjYzMDUsIDY2MzA5LCA2NjMxMywgNjYzMTcsIDY2MzIxLCA2NjMyNSwgNjYzMjksIDY2MzMzLCA2NjMzNywgNjYzNDEsIAotICAgIDY2MzQ1LCA2NjM0OSwgNjYzNTMsIDY2MzU3LCA2NjM2MSwgNjYzNjUsIDY2MzY5LCA2NjM3MywgNjYzNzcsIDY2MzgxLCAKLSAgICA2NjM4NSwgNjYzODksIDY2MzkzLCA2NjM5NiwgNjY0MDAsIDY2NDA0LCA2NjQwOCwgNjY0MTIsIDY2NDE2LCA2NjQyMCwgCi0gICAgNjY0MjQsIDY2NDI4LCA2NjQzMiwgNjY0MzYsIDY2NDQwLCA2NjQ0NCwgNjY0NDgsIDY2NDUyLCA2NjQ1NiwgNjY0NjAsIAotICAgIDY2NDY0LCA2NjQ2OCwgNjY0NzIsIDY2NDc2LCA2NjQ4MCwgNjY0ODQsIDY2NDg4LCA2NjQ5MiwgNjY0OTYsIDY2NTAwLCAKLSAgICA2NjUwNCwgNjY1MDgsIDY2NTEyLCA2NjUxNiwgNjY1MjAsIDY2NTI0LCA2NjUyOCwgNjY1MzIsIDY2NTM2LCA2NjU0MCwgCi0gICAgNjY1NDQsIDY2NTQ4LCA2NjU1MiwgNjY1NTYsIDY2NTYwLCA2NjU2NCwgNjY1NjgsIDY2NTcyLCA2NjU3NiwgNjY1ODAsIAotICAgIDY2NTg0LCA2NjU4OCwgNjY1OTIsIDY2NTk2LCA2NjYwMCwgNjY2MDQsIDY2NjA4LCA2NjYxMiwgNjY2MTYsIDY2NjIwLCAKLSAgICA2NjYyNCwgNjY2MjgsIDY2NjMyLCA2NjYzNiwgNjY2NDAsIDY2NjQ0LCA2NjY0OCwgNjY2NTIsIDY2NjU2LCA2NjY2MCwgCi0gICAgNjY2NjQsIDY2NjY4LCA2NjY3MiwgNjY2NzYsIDY2NjgwLCA2NjY4NCwgNjY2ODgsIDY2NjkyLCA2NjY5NiwgNjY3MDAsIAotICAgIDY2NzA0LCA2NjcwOCwgNjY3MTIsIDY2NzE2LCA2NjcyMCwgNjY3MjQsIDY2NzI4LCA2NjczMiwgNjY3MzYsIDY2NzQwLCAKLSAgICA2Njc0NCwgNjY3NDgsIDY2NzUyLCA2Njc1NiwgNjY3NjAsIDY2NzY0LCA2Njc2OCwgNjY3NzIsIDY2Nzc2LCA2Njc4MCwgCi0gICAgNjY3ODQsIDY2Nzg4LCA2Njc5MiwgNjY3OTYsIDY2ODAwLCA2NjgwNCwgNjY4MDgsIDY2ODEyLCA2NjgxNiwgNjY4MjAsIAotICAgIDY2ODI0LCA2NjgyOCwgNjY4MzIsIDY2ODM2LCA2Njg0MCwgNjY4NDQsIDY2ODQ4LCA2Njg1MiwgNjY4NTYsIDY2ODYwLCAKLSAgICA2Njg2NCwgNjY4NjgsIDY2ODcyLCA2Njg3NiwgNjY4ODAsIDY2ODg0LCA2Njg4OCwgNjY4OTIsIDY2ODk2LCA2NjkwMCwgCi0gICAgNjY5MDQsIDY2OTA4LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIDY2OTMyLCA2NjkzNiwgNjY5NDAsIAotICAgIDY2OTQ0LCA2Njk0OCwgNjY5NTIsIDY2OTU2LCA2Njk2MCwgNjY5NjQsIDY2OTY4LCA2Njk3MiwgNjY5NzYsIDY2OTgwLCAKLSAgICA2Njk4NCwgNjY5ODgsIDY2OTkyLCA2Njk5NiwgNjcwMDAsIDY3MDA0LCA2NzAwOCwgNjcwMTIsIDY3MDE2LCA2NzAyMCwgCi0gICAgNjcwMjQsIDY3MDI4LCA2NzAzMiwgNjcwMzYsIDY3MDQwLCA2NzA0NCwgNjcwNDgsIDY3MDUyLCA2NzA1NiwgNjcwNjAsIAotICAgIDY3MDY0LCA2NzA2OCwgNjcwNzIsIDY3MDc2LCA2NzA4MCwgNjcwODQsIDY3MDg4LCA2NzA5MiwgNjcwOTYsIDY3MTAwLCAKLSAgICA2NzEwNCwgNjcxMDgsIDY3MTEyLCA2NzExNiwgNjcxMjAsIDY3MTI0LCA2NzEyOCwgNjcxMzIsIDY3MTM2LCA2NzE0MCwgCi0gICAgNjcxNDQsIDY3MTQ4LCA2NzE1MiwgNjcxNTUsIDY3MTU5LCA2NzE2MywgNjcxNjcsIDY3MTcxLCA2NzE3NSwgNjcxNzksIAotICAgIDY3MTgzLCA2NzE4NywgNjcxOTEsIDY3MTk1LCA2NzE5OSwgNjcyMDMsIDY3MjA3LCA2NzIxMSwgNjcyMTUsIDY3MjE5LCAKLSAgICA2NzIyMywgNjcyMjcsIDY3MjMxLCA2NzIzNSwgNjcyMzksIDY3MjQzLCA2NzI0NywgNjcyNTEsIDY3MjU1LCA2NzI1OSwgCi0gICAgNjcyNjMsIDY3MjY3LCA2NzI3MSwgNjcyNzUsIDY3Mjc5LCA2NzI4MywgNjcyODcsIDY3MjkxLCA2NzI5NSwgNjcyOTksIAotICAgIDY3MzAzLCA2NzMwNywgNjczMTEsIDY3MzE1LCA2NzMxOSwgNjczMjMsIDY3MzI3LCA2NzMzMSwgNjczMzUsIDY3MzM5LCAKLSAgICA2NzM0MywgNjczNDcsIDY3MzUxLCA2NzM1NSwgNjczNTksIDY3MzYzLCA2NzM2NywgNjczNzEsIDY3Mzc1LCA2NzM3OSwgCi0gICAgNjczODMsIDY3Mzg3LCA2NzM5MSwgNjczOTUsIDY3Mzk5LCA2NzQwMywgNjc0MDcsIDY3NDExLCA2NzQxNSwgNjc0MTksIAotICAgIDY3NDIzLCA2NzQyNywgNjc0MzEsIDY3NDM1LCA2NzQzOSwgNjc0NDMsIDY3NDQ3LCA2NzQ1MSwgNjc0NTUsIDY3NDU5LCAKLSAgICA2NzQ2MywgNjc0NjcsIDY3NDcxLCA2NzQ3NSwgNjc0NzksIDY3NDgzLCA2NzQ4NywgNjc0OTEsIDY3NDk1LCA2NzQ5OSwgCi0gICAgNjc1MDMsIDY3NTA3LCA2NzUxMSwgNjc1MTUsIDY3NTE5LCA2NzUyMywgNjc1MjcsIDY3NTMxLCA2NzUzNSwgNjc1MzksIAotICAgIDY3NTQzLCA2NzU0NywgNjc1NTEsIDY3NTU1LCA2NzU1OSwgNjc1NjMsIDY3NTY3LCA2NzU3MSwgNjc1NzUsIDY3NTc5LCAKLSAgICA2NzU4MywgNjc1ODcsIDY3NTkxLCA2NzU5NSwgNjc1OTksIDY3NjAzLCA2NzYwNywgNjc2MTEsIDY3NjE1LCA2NzYxOSwgCi0gICAgNjc2MjMsIDY3NjI3LCA2NzYzMSwgNjc2MzUsIDY3NjM5LCA2NzY0MywgNjc2NDcsIDY3NjUxLCA2NzY1NSwgNjc2NTksIAotICAgIDY3NjYzLCA2NzY2NywgNjc2NzEsIDY3Njc1LCA2NzY3OSwgNjc2ODMsIDY3Njg3LCA2NzY5MSwgNjc2OTUsIDY3Njk5LCAKLSAgICA2NzcwMywgNjc3MDcsIDY3NzExLCA2NzcxNSwgNjc3MTksIDY3NzIzLCA2NzcyNywgNjc3MzEsIDY3NzM1LCA2NzczOSwgCi0gICAgNjc3NDMsIDY3NzQ3LCA2Nzc1MSwgNjc3NTUsIDY3NzU5LCA2Nzc2MywgNjc3NjcsIDY3NzcxLCA2Nzc3NSwgNjc3NzksIAotICAgIDY3NzgzLCA2Nzc4NywgNjc3OTEsIDY3Nzk1LCA2Nzc5OSwgNjc4MDMsIDY3ODA3LCA2NzgxMSwgNjc4MTUsIDY3ODE5LCAKLSAgICA2NzgyMywgNjc4MjcsIDY3ODMxLCA2NzgzNSwgNjc4MzksIDY3ODQzLCA2Nzg0NywgNjc4NTEsIDY3ODU1LCA2Nzg1OSwgCi0gICAgNjc4NjMsIDY3ODY3LCA2Nzg3MSwgNjc4NzUsIDY3ODc5LCA2Nzg4MywgNjc4ODcsIDY3ODkxLCA2Nzg5NSwgNjc4OTksIAotICAgIDY3OTAzLCA2NzkwNywgNjc5MTEsIDY3OTE1LCA2NzkxOSwgNjc5MjMsIDY3OTI3LCA2NzkzMSwgNjc5MzUsIDAsIDAsIDAsIAotICAgIDY3OTM5LCA2Nzk0MywgNjc5NDcsIDY3OTUxLCA2Nzk1NSwgNjc5NTksIDY3OTYzLCA2Nzk2NywgNjc5NzEsIDY3OTc1LCAKLSAgICA2Nzk3OSwgNjc5ODMsIDY3OTg3LCA2Nzk5MSwgNjc5OTUsIDY3OTk5LCA2ODAwMywgNjgwMDcsIDY4MDExLCA2ODAxNSwgCi0gICAgNjgwMTksIDY4MDIzLCA2ODAyNywgNjgwMzEsIDY4MDM1LCA2ODAzOSwgNjgwNDMsIDY4MDQ3LCA2ODA1MSwgNjgwNTUsIAotICAgIDY4MDU5LCA2ODA2MywgNjgwNjcsIDY4MDcxLCA2ODA3NSwgNjgwNzksIDY4MDgzLCA2ODA4NywgNjgwOTEsIDY4MDk1LCAKLSAgICA2ODA5OSwgNjgxMDMsIDY4MTA3LCA2ODExMSwgNjgxMTUsIDY4MTE5LCA2ODEyMywgNjgxMjcsIDY4MTMxLCA2ODEzNSwgCi0gICAgNjgxMzksIDY4MTQzLCA2ODE0NywgNjgxNTEsIDY4MTU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2ODE1OSwgCi0gICAgNjgxNjQsIDY4MTY4LCA2ODE3MywgNjgxNzgsIDY4MTgzLCA2ODE4OCwgNjgxOTMsIDY4MTk3LCA2ODIwMiwgNjgyMDcsIAotICAgIDY4MjEyLCA2ODIxNywgNjgyMjIsIDY4MjI3LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCA2ODI0NSwgNjgyNTAsIDY4MjU1LCAKLSAgICA2ODI2MCwgNjgyNjUsIDY4MjY5LCA2ODI3NCwgNjgyNzksIDY4Mjg0LCA2ODI4OSwgNjgyOTQsIDY4Mjk4LCA2ODMwMywgCi0gICAgNjgzMDcsIDY4MzEyLCA2ODMxNiwgNjgzMjEsIDY4MzI1LCA2ODMyOSwgNjgzMzMsIDY4MzM4LCA2ODM0MywgNjgzNDgsIAotICAgIDY4MzU2LCA2ODM2NCwgNjgzNzIsIDY4MzgwLCA2ODM4NywgNjgzOTUsIDY4NDAxLCA2ODQwOSwgNjg0MTMsIDY4NDE3LCAKLSAgICA2ODQyMSwgNjg0MjUsIDY4NDI5LCA2ODQzMywgNjg0MzcsIDY4NDQxLCA2ODQ0NSwgNjg0NDksIDY4NDUzLCA2ODQ1NywgCi0gICAgNjg0NjEsIDY4NDY1LCA2ODQ2OSwgNjg0NzMsIDY4NDc3LCA2ODQ4MSwgNjg0ODUsIDY4NDg5LCA2ODQ5MywgNjg0OTcsIAotICAgIDY4NTAxLCA2ODUwNSwgNjg1MDksIDY4NTEzLCA2ODUxNywgNjg1MjEsIDY4NTI1LCA2ODUyOSwgNjg1MzMsIDY4NTM3LCAKLSAgICA2ODU0MSwgNjg1NDUsIDY4NTQ5LCA2ODU1MywgNjg1NTYsIDY4NTYwLCA2ODU2NCwgNjg1NjgsIDY4NTcyLCA2ODU3NiwgCi0gICAgNjg1ODAsIDY4NTg0LCA2ODU4OCwgNjg1OTIsIDY4NTk2LCA2ODYwMCwgNjg2MDQsIDY4NjA4LCA2ODYxMiwgNjg2MTYsIAotICAgIDY4NjIwLCA2ODYyNCwgNjg2MjgsIDY4NjMyLCA2ODYzNiwgNjg2NDAsIDY4NjQ0LCA2ODY0OCwgNjg2NTIsIDY4NjU2LCAKLSAgICA2ODY2MCwgNjg2NjQsIDY4NjY4LCA2ODY3MiwgNjg2NzYsIDY4NjgwLCA2ODY4NCwgNjg2ODgsIDY4NjkyLCA2ODY5NiwgCi0gICAgNjg3MDAsIDY4NzAzLCA2ODcwNywgNjg3MTEsIDY4NzE0LCA2ODcxOCwgNjg3MjIsIDY4NzI2LCA2ODcyOSwgNjg3MzMsIAotICAgIDY4NzM3LCA2ODc0MSwgNjg3NDUsIDY4NzQ5LCA2ODc1MywgNjg3NTcsIDY4NzYxLCA2ODc2NSwgNjg3NjksIDY4NzczLCAKLSAgICA2ODc3NywgNjg3ODEsIDY4Nzg1LCA2ODc4OCwgNjg3OTIsIDY4Nzk2LCA2ODgwMCwgNjg4MDQsIDY4ODA4LCA2ODgxMiwgCi0gICAgNjg4MTYsIDY4ODIwLCA2ODgyNCwgNjg4MjcsIDY4ODMwLCA2ODgzNCwgNjg4MzgsIDY4ODQyLCA2ODg0NSwgNjg4NDgsIAotICAgIDY4ODUyLCA2ODg1NiwgNjg4NjAsIDY4ODY0LCA2ODg2OCwgNjg4NzIsIDY4ODc2LCA2ODg4MCwgNjg4ODQsIDY4ODg4LCAKLSAgICA2ODg5MiwgNjg4OTYsIDY4OTAwLCA2ODkwNCwgNjg5MDgsIDY4OTEyLCA2ODkxNiwgNjg5MjAsIDY4OTI0LCA2ODkyOCwgCi0gICAgNjg5MzIsIDY4OTM2LCA2ODk0MCwgNjg5NDQsIDY4OTQ4LCA2ODk1MiwgNjg5NTYsIDY4OTYwLCA2ODk2NCwgNjg5NjgsIAotICAgIDY4OTcyLCA2ODk3NiwgNjg5ODAsIDY4OTg0LCA2ODk4OCwgNjg5OTIsIDY4OTk2LCA2ODk5OSwgNjkwMDMsIDY5MDA3LCAKLSAgICA2OTAxMSwgNjkwMTUsIDY5MDE5LCA2OTAyMywgNjkwMjcsIDY5MDMxLCA2OTAzNSwgNjkwMzksIDY5MDQzLCA2OTA0NywgCi0gICAgNjkwNTEsIDY5MDU1LCA2OTA1OSwgNjkwNjMsIDY5MDY3LCA2OTA3MSwgNjkwNzUsIDY5MDc5LCA2OTA4MywgNjkwODcsIAotICAgIDY5MDkxLCA2OTA5NSwgNjkwOTksIDY5MTAzLCA2OTEwNywgNjkxMTEsIDY5MTE1LCA2OTExOSwgNjkxMjMsIDY5MTI3LCAKLSAgICA2OTEzMSwgNjkxMzUsIDY5MTM5LCA2OTE0MywgNjkxNDYsIDY5MTUwLCA2OTE1NCwgNjkxNTgsIDY5MTYyLCA2OTE2NiwgCi0gICAgNjkxNzAsIDY5MTc0LCA2OTE3OCwgNjkxODIsIDY5MTg2LCA2OTE5MCwgNjkxOTQsIDY5MTk4LCA2OTIwMiwgNjkyMDYsIAotICAgIDY5MjEwLCA2OTIxMywgNjkyMTcsIDY5MjIxLCA2OTIyNSwgNjkyMjksIDY5MjMzLCA2OTIzNywgNjkyNDEsIDY5MjQ1LCAKLSAgICA2OTI0OSwgNjkyNTMsIDY5MjU3LCA2OTI2MSwgNjkyNjUsIDY5MjY5LCA2OTI3MywgNjkyNzcsIDY5MjgxLCA2OTI4NSwgCi0gICAgNjkyODksIDY5MjkzLCA2OTI5NywgNjkzMDAsIDY5MzA0LCA2OTMwOCwgNjkzMTIsIDY5MzE2LCA2OTMyMCwgNjkzMjQsIAotICAgIDY5MzI4LCA2OTMzMiwgNjkzMzYsIDY5MzQwLCA2OTM0NCwgNjkzNDgsIDY5MzUyLCA2OTM1NiwgNjkzNjAsIDY5MzY0LCAKLSAgICA2OTM2OCwgNjkzNzIsIDY5Mzc2LCA2OTM4MCwgNjkzODQsIDY5Mzg4LCA2OTM5MiwgNjkzOTYsIDY5NDAwLCA2OTQwNCwgCi0gICAgNjk0MDgsIDY5NDEyLCA2OTQxNiwgNjk0MjAsIDY5NDI0LCA2OTQyOCwgNjk0MzIsIDY5NDM2LCA2OTQ0MCwgNjk0NDQsIAotICAgIDY5NDQ4LCA2OTQ1MiwgNjk0NTYsIDY5NDYwLCA2OTQ2NCwgNjk0NjgsIDY5NDcyLCA2OTQ3NSwgNjk0ODAsIDY5NDg0LCAKLSAgICA2OTQ5MCwgNjk0OTUsIDY5NTAxLCA2OTUwNSwgNjk1MDksIDY5NTEzLCA2OTUxNywgNjk1MjEsIDY5NTI1LCA2OTUyOSwgCi0gICAgNjk1MzMsIDY5NTM3LCA2OTU0MSwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgNjk1NTcsIDY5NTYwLCA2OTU2MywgNjk1NjYsIAotICAgIDY5NTY5LCA2OTU3MiwgNjk1NzUsIDY5NTc4LCA2OTU4MSwgNjk1ODQsIDY5NTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2OTU5NSwgNjk2MDAsIDY5NjA1LCA2OTYxMCwgNjk2MTUsIAotICAgIDY5NjIyLCA2OTYyOSwgNjk2MzQsIDY5NjM5LCA2OTY0NCwgNjk2NDksIDY5NjU2LCA2OTY2MywgNjk2NzAsIDY5Njc3LCAKLSAgICA2OTY4NCwgNjk2OTEsIDY5NzAxLCA2OTcxMSwgNjk3MTgsIDY5NzI1LCA2OTczMiwgNjk3MzksIDY5NzQ1LCA2OTc1MSwgCi0gICAgNjk3NjAsIDY5NzY5LCA2OTc3NiwgNjk3ODMsIDY5Nzk0LCA2OTgwNSwgNjk4MTAsIDY5ODE1LCA2OTgyMiwgNjk4MjksIAotICAgIDY5ODM2LCA2OTg0MywgNjk4NTAsIDY5ODU3LCA2OTg2NCwgNjk4NzEsIDY5ODc3LCA2OTg4MywgNjk4ODksIDY5ODk1LCAKLSAgICA2OTkwMiwgNjk5MDksIDY5OTE0LCA2OTkxOCwgNjk5MjUsIDY5OTMyLCA2OTkzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjk5NDMsIDY5OTQ3LCA2OTk1MSwgNjk5NTQsIDY5OTU3LCA2OTk2MiwgNjk5NjcsIDY5OTcyLCA2OTk3NywgNjk5ODIsIAotICAgIDY5OTg3LCA2OTk5MiwgNjk5OTcsIDcwMDAyLCA3MDAwNywgNzAwMTYsIDcwMDI1LCA3MDAzMCwgNzAwMzUsIDcwMDQwLCAKLSAgICA3MDA0NSwgNzAwNTAsIDcwMDU1LCA3MDA2MCwgNzAwNjUsIDcwMDcwLCA3MDA3NSwgNzAwODAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcwMDg1LCA3MDA4OCwgNzAwOTEsIDcwMDk0LCA3MDA5OCwgNzAxMDIsIDcwMTA2LCA3MDExMCwgNzAxMTMsIAotICAgIDcwMTE3LCA3MDEyMCwgNzAxMjQsIDcwMTI3LCA3MDEzMSwgNzAxMzUsIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUxLCAKLSAgICA3MDE1NSwgNzAxNTgsIDcwMTYyLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE3OCwgNzAxODIsIDcwMTg2LCA3MDE5MCwgCi0gICAgNzAxOTQsIDcwMTk4LCA3MDIwMiwgNzAyMDYsIDcwMjEwLCA3MDIxNCwgNzAyMTcsIDcwMjIxLCA3MDIyNSwgNzAyMjksIAotICAgIDcwMjMzLCA3MDIzNywgNzAyNDEsIDcwMjQ1LCA3MDI0OSwgNzAyNTMsIDcwMjU3LCA3MDI2MSwgNzAyNjUsIDcwMjY5LCAKLSAgICA3MDI3MywgNzAyNzcsIDcwMjgxLCA3MDI4NSwgNzAyODksIDcwMjkzLCA3MDI5NywgNzAzMDEsIDcwMzA1LCA3MDMwOSwgCi0gICAgNzAzMTMsIDcwMzE2LCA3MDMyMCwgNzAzMjQsIDcwMzI4LCA3MDMzMiwgNzAzMzYsIDcwMzQwLCA3MDM0NCwgNzAzNDcsIAotICAgIDcwMzUxLCA3MDM1NSwgNzAzNTksIDcwMzYzLCA3MDM2NywgNzAzNzEsIDcwMzc1LCA3MDM3OSwgNzAzODMsIDcwMzg3LCAKLSAgICA3MDM5MSwgNzAzOTUsIDcwNDAwLCA3MDQwNSwgNzA0MDgsIDcwNDEzLCA3MDQxNiwgNzA0MTksIDcwNDIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3MDQyNiwgNzA0MzUsIDcwNDQ0LCA3MDQ1MywgNzA0NjIsIDcwNDcxLCA3MDQ4MCwgNzA0ODksIAotICAgIDcwNDk4LCA3MDUwNiwgNzA1MTMsIDcwNTIxLCA3MDUyOCwgNzA1MzYsIDcwNTQ2LCA3MDU1NSwgNzA1NjUsIDcwNTc0LCAKLSAgICA3MDU4NCwgNzA1OTIsIDcwNTk5LCA3MDYwNywgNzA2MTQsIDcwNjIyLCA3MDYyNywgNzA2MzIsIDcwNjM3LCA3MDY0NiwgCi0gICAgNzA2NTIsIDcwNjU4LCA3MDY2NSwgNzA2NzQsIDcwNjgyLCA3MDY5MCwgNzA2OTgsIDcwNzA1LCA3MDcxMiwgNzA3MTksIAotICAgIDcwNzI2LCA3MDczMSwgNzA3MzYsIDcwNzQxLCA3MDc0NiwgNzA3NTEsIDcwNzU2LCA3MDc2MSwgNzA3NjYsIDcwNzc0LCAKLSAgICA3MDc4MiwgNzA3ODgsIDcwNzkzLCA3MDc5OCwgNzA4MDMsIDcwODA4LCA3MDgxMywgNzA4MTgsIDcwODIzLCA3MDgyOCwgCi0gICAgNzA4MzMsIDcwODQxLCA3MDg0OSwgNzA4NTQsIDcwODU5LCA3MDg2OSwgNzA4NzksIDcwODg2LCA3MDg5MywgNzA5MDIsIAotICAgIDcwOTExLCA3MDkyMywgNzA5MzUsIDcwOTQxLCA3MDk0NywgNzA5NTUsIDcwOTYzLCA3MDk3MywgNzA5ODMsIDcwOTkwLCAKLSAgICA3MDk5NywgNzEwMDIsIDcxMDA3LCA3MTAxOSwgNzEwMzEsIDcxMDM5LCA3MTA0NywgNzEwNTcsIDcxMDY3LCA3MTA3OSwgCi0gICAgNzEwOTEsIDcxMTAwLCA3MTEwOSwgNzExMTYsIDcxMTIzLCA3MTEzMCwgNzExMzcsIDcxMTQ2LCA3MTE1NSwgNzExNjAsIAotICAgIDcxMTY1LCA3MTE3MiwgNzExNzksIDcxMTg2LCA3MTE5MywgNzEyMDUsIDcxMjE3LCA3MTIyMiwgNzEyMjcsIDcxMjMyLCAKLSAgICA3MTIzNywgNzEyNDIsIDcxMjQ3LCA3MTI1MiwgNzEyNTcsIDcxMjYxLCA3MTI2NiwgNzEyNzEsIDcxMjc2LCA3MTI4MSwgCi0gICAgNzEyODYsIDcxMjkyLCA3MTI5NywgNzEzMDIsIDcxMzA5LCA3MTMxNiwgNzEzMjMsIDcxMzMwLCA3MTMzNywgNzEzNDYsIAotICAgIDcxMzU1LCA3MTM2MSwgNzEzNjcsIDcxMzczLCA3MTM3OSwgNzEzODUsIDcxMzkxLCA3MTM5OCwgNzE0MDUsIDcxNDEyLCAKLSAgICA3MTQxNiwgNzE0MjMsIDcxNDI4LCA3MTQzMywgNzE0NDAsIDAsIDcxNDUzLCA3MTQ2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzE0NjksIDcxNDc4LCA3MTQ4NywgNzE0OTYsIDcxNTA1LCA3MTUxNCwgNzE1MjMsIAotICAgIDcxNTMyLCA3MTU0MSwgNzE1NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyMDY3LCAwLCAxMjA3NiwgMTIwODMsIDEyMDkxLCAxMjEwMywgMTIxMTAsIDEyMTE3LCAxMjEyNCwgMTIxMzUsIDEyMTQ2LCAKKyAgICAxMjE1MywgMTIxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTY3LCAxMjE3MiwgMTIxNzcsIDEyMTgyLCAxMjE4NywgCisgICAgMTIxOTIsIDEyMTk3LCAxMjIwMiwgMTIyMDcsIDEyMjEyLCAxMjIxNywgMTIyMjIsIDEyMjI3LCAxMjIzMSwgMTIyMzUsIAorICAgIDEyMjM5LCAxMjI0NCwgMTIyNTAsIDEyMjU2LCAxMjI2MiwgMTIyNjcsIDEyMjcyLCAxMjI3NywgMTIyODIsIDEyMjg4LCAKKyAgICAxMjI5NywgMTIzMDUsIDAsIDEyMzExLCAxMjMxNywgMTIzMjEsIDEyMzI1LCAxMjMyOSwgMTIzMzQsIDEyMzM3LCAxMjM0MSwgCisgICAgMTIzNDQsIDEyMzQ4LCAxMjM1MSwgMTIzNTUsIDEyMzU5LCAxMjM2MywgMTIzNjgsIDEyMzczLCAxMjM3NiwgMTIzODAsIAorICAgIDEyMzg1LCAxMjM5MCwgMTIzOTMsIDEyMzk3LCAxMjQwMCwgMTI0MDQsIDEyNDA4LCAxMjQxMiwgMTI0MTYsIDEyNDIwLCAKKyAgICAxMjQyNCwgMTI0MjgsIDEyNDMyLCAxMjQzNiwgMTI0NDAsIDEyNDQ0LCAxMjQ0OCwgMTI0NTIsIDEyNDU2LCAxMjQ2MCwgCisgICAgMTI0NjQsIDEyNDY4LCAxMjQ3MiwgMTI0NzUsIDEyNDc5LCAxMjQ4MiwgMTI0ODYsIDEyNDkwLCAxMjQ5NCwgMTI0OTcsIAorICAgIDEyNTAwLCAxMjUwMywgMTI1MDcsIDEyNTExLCAxMjUxNSwgMTI1MTksIDEyNTIzLCAxMjUyNywgMTI1MzEsIDEyNTM0LCAKKyAgICAxMjUzNywgMTI1NDIsIDEyNTQ3LCAxMjU1MSwgMTI1NTUsIDEyNTYwLCAxMjU2NCwgMTI1NjksIDEyNTczLCAxMjU3OCwgCisgICAgMTI1ODMsIDEyNTg5LCAxMjU5NSwgMTI2MDEsIDEyNjA1LCAxMjYxMCwgMTI2MTYsIDEyNjIyLCAxMjYyNiwgMTI2MzEsIAorICAgIDEyNjM1LCAxMjY0MSwgMTI2NDYsIDEyNjQ5LCAxMjY1NSwgMTI2NjEsIDEyNjY2LCAxMjY3MSwgMTI2NzgsIDEyNjgzLCAKKyAgICAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNSwgCisgICAgMTI3MzAsIDEyNzM1LCAxMjc0MSwgMTI3NDQsIDEyNzQ4LCAxMjc1MiwgMTI3NTUsIDEyNzU4LCAxMjc2MSwgMTI3NjQsIAorICAgIDEyNzY3LCAxMjc3MCwgMTI3NzMsIDEyNzc2LCAxMjc3OSwgMTI3ODMsIDEyNzkwLCAxMjc5NSwgMTI3OTksIDEyODAzLCAKKyAgICAxMjgwNywgMTI4MTEsIDAsIDEyODE1LCAxMjgxOSwgMTI4MjMsIDEyODI3LCAxMjgzMSwgMTI4MzcsIDEyODQxLCAwLCAKKyAgICAxMjg0NSwgMTI4NDksIDEyODUzLCAwLCAxMjg1NywgMTI4NjAsIDEyODY0LCAxMjg2NywgMTI4NzEsIDEyODc0LCAxMjg3OCwgCisgICAgMTI4ODIsIDAsIDAsIDEyODg2LCAxMjg4OSwgMCwgMCwgMTI4OTMsIDEyODk2LCAxMjkwMCwgMTI5MDMsIDEyOTA3LCAKKyAgICAxMjkxMSwgMTI5MTUsIDEyOTE5LCAxMjkyMywgMTI5MjcsIDEyOTMxLCAxMjkzNSwgMTI5MzksIDEyOTQzLCAxMjk0NywgCisgICAgMTI5NTEsIDEyOTU1LCAxMjk1OSwgMTI5NjMsIDEyOTY3LCAxMjk3MSwgMTI5NzUsIDAsIDEyOTc4LCAxMjk4MSwgMTI5ODUsIAorICAgIDEyOTg5LCAxMjk5MywgMTI5OTYsIDEyOTk5LCAwLCAxMzAwMiwgMCwgMCwgMCwgMTMwMDYsIDEzMDEwLCAxMzAxNCwgCisgICAgMTMwMTcsIDAsIDAsIDEzMDIwLCAxMzAyNCwgMTMwMjgsIDEzMDMzLCAxMzAzNywgMTMwNDIsIDEzMDQ2LCAxMzA1MSwgCisgICAgMTMwNTYsIDAsIDAsIDEzMDYyLCAxMzA2NiwgMCwgMCwgMTMwNzEsIDEzMDc1LCAxMzA4MCwgMTMwODQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEzMDkwLCAwLCAwLCAwLCAwLCAxMzA5NiwgMTMxMDAsIDAsIDEzMTA0LCAxMzEwOCwgMTMxMTMsIAorICAgIDEzMTE4LCAxMzEyMywgMCwgMCwgMTMxMjksIDEzMTMzLCAxMzEzNiwgMTMxMzksIDEzMTQyLCAxMzE0NSwgMTMxNDgsIAorICAgIDEzMTUxLCAxMzE1NCwgMTMxNTcsIDEzMTYwLCAxMzE2OSwgMTMxNzgsIDEzMTgyLCAxMzE4NiwgMTMxOTIsIDEzMTk4LCAKKyAgICAxMzIwNCwgMTMyMTAsIDEzMjI0LCAxMzIzMSwgMTMyMzQsIDAsIDAsIDAsIDAsIDAsIDEzMjM4LCAxMzI0NCwgMTMyNDgsIDAsIAorICAgIDEzMjUyLCAxMzI1NSwgMTMyNTksIDEzMjYyLCAxMzI2NiwgMTMyNjksIDAsIDAsIDAsIDAsIDEzMjczLCAxMzI3NywgMCwgMCwgCisgICAgMTMyODEsIDEzMjg1LCAxMzI4OSwgMTMyOTIsIDEzMjk2LCAxMzMwMCwgMTMzMDQsIDEzMzA4LCAxMzMxMiwgMTMzMTYsIAorICAgIDEzMzIwLCAxMzMyNCwgMTMzMjgsIDEzMzMyLCAxMzMzNiwgMTMzNDAsIDEzMzQ0LCAxMzM0OCwgMTMzNTIsIDEzMzU2LCAKKyAgICAxMzM2MCwgMTMzNjQsIDAsIDEzMzY3LCAxMzM3MCwgMTMzNzQsIDEzMzc4LCAxMzM4MiwgMTMzODUsIDEzMzg4LCAwLCAKKyAgICAxMzM5MSwgMTMzOTUsIDAsIDEzMzk5LCAxMzQwMywgMCwgMTM0MDcsIDEzNDEwLCAwLCAwLCAxMzQxMywgMCwgMTM0MTcsIAorICAgIDEzNDIyLCAxMzQyNiwgMTM0MzEsIDEzNDM1LCAwLCAwLCAwLCAwLCAxMzQ0MCwgMTM0NDUsIDAsIDAsIDEzNDUwLCAxMzQ1NSwgCisgICAgMTM0NjAsIDAsIDAsIDAsIDEzNDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ2OCwgMTM0NzIsIDEzNDc2LCAxMzQ4MCwgCisgICAgMCwgMTM0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDg4LCAxMzQ5MiwgMTM0OTUsIDEzNDk4LCAxMzUwMSwgMTM1MDQsIAorICAgIDEzNTA3LCAxMzUxMCwgMTM1MTMsIDEzNTE2LCAxMzUxOSwgMTM1MjIsIDEzNTI1LCAxMzUyOCwgMTM1MzEsIDEzNTM2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU0MCwgMTM1NDQsIDEzNTQ4LCAwLCAxMzU1MiwgMTM1NTUsIAorICAgIDEzNTU5LCAxMzU2MiwgMTM1NjYsIDEzNTY5LCAxMzU3MywgMTM1NzcsIDEzNTgxLCAwLCAxMzU4NiwgMTM1ODksIDEzNTkzLCAKKyAgICAwLCAxMzU5OCwgMTM2MDEsIDEzNjA1LCAxMzYwOCwgMTM2MTIsIDEzNjE2LCAxMzYyMCwgMTM2MjQsIDEzNjI4LCAxMzYzMiwgCisgICAgMTM2MzYsIDEzNjQwLCAxMzY0NCwgMTM2NDgsIDEzNjUyLCAxMzY1NiwgMTM2NjAsIDEzNjY0LCAxMzY2OCwgMTM2NzIsIAorICAgIDEzNjc2LCAxMzY4MCwgMCwgMTM2ODMsIDEzNjg2LCAxMzY5MCwgMTM2OTQsIDEzNjk4LCAxMzcwMSwgMTM3MDQsIDAsIAorICAgIDEzNzA3LCAxMzcxMSwgMCwgMTM3MTUsIDEzNzE5LCAxMzcyMywgMTM3MjcsIDEzNzMwLCAwLCAwLCAxMzczMywgMTM3MzcsIAorICAgIDEzNzQxLCAxMzc0NiwgMTM3NTAsIDEzNzU1LCAxMzc1OSwgMTM3NjQsIDEzNzY5LCAxMzc3NSwgMCwgMTM3ODEsIDEzNzg1LCAKKyAgICAxMzc5MCwgMCwgMTM3OTYsIDEzODAwLCAxMzgwNSwgMCwgMCwgMTM4MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzODEyLCAxMzgxNywgMTM4MjIsIDEzODI3LCAwLCAwLCAxMzgzMywgMTM4MzcsIDEzODQwLCAKKyAgICAxMzg0MywgMTM4NDYsIDEzODQ5LCAxMzg1MiwgMTM4NTUsIDEzODU4LCAxMzg2MSwgMTM4NjQsIDEzODY4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg3MiwgMTM4NzYsIDEzODgwLCAwLCAxMzg4NCwgMTM4ODcsIAorICAgIDEzODkxLCAxMzg5NCwgMTM4OTgsIDEzOTAxLCAxMzkwNSwgMTM5MDksIDAsIDAsIDEzOTEzLCAxMzkxNiwgMCwgMCwgCisgICAgMTM5MjAsIDEzOTIzLCAxMzkyNywgMTM5MzAsIDEzOTM0LCAxMzkzOCwgMTM5NDIsIDEzOTQ2LCAxMzk1MCwgMTM5NTQsIAorICAgIDEzOTU4LCAxMzk2MiwgMTM5NjYsIDEzOTcwLCAxMzk3NCwgMTM5NzgsIDEzOTgyLCAxMzk4NiwgMTM5OTAsIDEzOTk0LCAKKyAgICAxMzk5OCwgMTQwMDIsIDAsIDE0MDA1LCAxNDAwOCwgMTQwMTIsIDE0MDE2LCAxNDAyMCwgMTQwMjMsIDE0MDI2LCAwLCAKKyAgICAxNDAyOSwgMTQwMzMsIDAsIDE0MDM3LCAxNDA0MSwgMTQwNDUsIDE0MDQ5LCAxNDA1MiwgMCwgMCwgMTQwNTUsIDE0MDU5LCAKKyAgICAxNDA2MywgMTQwNjgsIDE0MDcyLCAxNDA3NywgMTQwODEsIDE0MDg2LCAxNDA5MSwgMCwgMCwgMTQwOTcsIDE0MTAxLCAwLCAKKyAgICAwLCAxNDEwNiwgMTQxMTAsIDE0MTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDExOSwgMTQxMjUsIDAsIDAsIDAsIDAsIAorICAgIDE0MTMxLCAxNDEzNSwgMCwgMTQxMzksIDE0MTQzLCAxNDE0OCwgMTQxNTMsIDE0MTU4LCAwLCAwLCAxNDE2NCwgMTQxNjgsIAorICAgIDE0MTcxLCAxNDE3NCwgMTQxNzcsIDE0MTgwLCAxNDE4MywgMTQxODYsIDE0MTg5LCAxNDE5MiwgMTQxOTUsIDE0MTk4LCAKKyAgICAxNDIwMiwgMTQyMDgsIDE0MjE0LCAxNDIyMCwgMTQyMjYsIDE0MjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDIzOCwgMTQyNDIsIDAsIDE0MjQ2LCAxNDI0OSwgMTQyNTMsIDE0MjU2LCAxNDI2MCwgMTQyNjMsIDAsIDAsIDAsIAorICAgIDE0MjY3LCAxNDI3MCwgMTQyNzQsIDAsIDE0Mjc4LCAxNDI4MSwgMTQyODUsIDE0Mjg5LCAwLCAwLCAwLCAxNDI5MiwgCisgICAgMTQyOTYsIDAsIDE0MzAwLCAwLCAxNDMwNCwgMTQzMDgsIDAsIDAsIDAsIDE0MzEyLCAxNDMxNiwgMCwgMCwgMCwgMTQzMjAsIAorICAgIDE0MzIzLCAxNDMyNywgMCwgMCwgMCwgMTQzMzAsIDE0MzMzLCAxNDMzNiwgMTQzMzksIDE0MzQzLCAxNDM0NywgMTQzNTEsIAorICAgIDE0MzU1LCAxNDM1OSwgMTQzNjMsIDE0MzY3LCAxNDM3MCwgMCwgMCwgMCwgMCwgMTQzNzMsIDE0Mzc4LCAxNDM4MiwgCisgICAgMTQzODcsIDE0MzkxLCAwLCAwLCAwLCAxNDM5NiwgMTQ0MDAsIDE0NDA1LCAwLCAxNDQxMCwgMTQ0MTQsIDE0NDE5LCAKKyAgICAxNDQyNCwgMCwgMCwgMTQ0MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDQzNywgMTQ0NDEsIDE0NDQ0LCAxNDQ0NywgMTQ0NTAsIDE0NDUzLCAxNDQ1NiwgMTQ0NTksIAorICAgIDE0NDYyLCAxNDQ2NSwgMTQ0NjgsIDE0NDcyLCAxNDQ3NywgMTQ0ODIsIDE0NDg2LCAxNDQ5MCwgMTQ0OTQsIDE0NDk4LCAKKyAgICAxNDUwMiwgMTQ1MDcsIDE0NTExLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDUxNCwgMTQ1MTgsIDE0NTIyLCAwLCAxNDUyNiwgCisgICAgMTQ1MjksIDE0NTMzLCAxNDUzNiwgMTQ1NDAsIDE0NTQzLCAxNDU0NywgMTQ1NTEsIDAsIDE0NTU1LCAxNDU1OCwgMTQ1NjIsIAorICAgIDAsIDE0NTY2LCAxNDU2OSwgMTQ1NzMsIDE0NTc3LCAxNDU4MCwgMTQ1ODQsIDE0NTg4LCAxNDU5MiwgMTQ1OTYsIDE0NjAwLCAKKyAgICAxNDYwNCwgMTQ2MDgsIDE0NjEyLCAxNDYxNiwgMTQ2MjAsIDE0NjI0LCAxNDYyOCwgMTQ2MzIsIDE0NjM2LCAxNDY0MCwgCisgICAgMTQ2NDQsIDE0NjQ4LCAxNDY1MiwgMCwgMTQ2NTUsIDE0NjU4LCAxNDY2MiwgMTQ2NjYsIDE0NjcwLCAxNDY3MywgMTQ2NzYsIAorICAgIDE0Njc5LCAxNDY4MywgMTQ2ODcsIDAsIDE0NjkxLCAxNDY5NSwgMTQ2OTksIDE0NzAzLCAxNDcwNiwgMCwgMCwgMCwgCisgICAgMTQ3MDksIDE0NzEzLCAxNDcxOCwgMTQ3MjIsIDE0NzI3LCAxNDczMSwgMTQ3MzYsIDE0NzQxLCAwLCAxNDc0NywgMTQ3NTEsIAorICAgIDE0NzU2LCAwLCAxNDc2MSwgMTQ3NjUsIDE0NzcwLCAxNDc3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3NzksIDE0NzgzLCAKKyAgICAwLCAxNDc4OSwgMTQ3OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDE0Nzk3LCAxNDgwMiwgMTQ4MDcsIDE0ODEyLCAwLCAwLCAKKyAgICAxNDgxOCwgMTQ4MjIsIDE0ODI1LCAxNDgyOCwgMTQ4MzEsIDE0ODM0LCAxNDgzNywgMTQ4NDAsIDE0ODQzLCAxNDg0NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4NDksIDE0ODYyLCAxNDg3NCwgMTQ4ODYsIDE0ODk4LCAxNDkxMCwgMTQ5MjIsIAorICAgIDE0OTM0LCAwLCAwLCAxNDkzOCwgMTQ5NDIsIDAsIDE0OTQ2LCAxNDk0OSwgMTQ5NTMsIDE0OTU2LCAxNDk2MCwgMTQ5NjMsIAorICAgIDE0OTY3LCAxNDk3MSwgMCwgMTQ5NzUsIDE0OTc4LCAxNDk4MiwgMCwgMTQ5ODYsIDE0OTg5LCAxNDk5MywgMTQ5OTcsIAorICAgIDE1MDAwLCAxNTAwNCwgMTUwMDgsIDE1MDEyLCAxNTAxNiwgMTUwMjAsIDE1MDI0LCAxNTAyOCwgMTUwMzIsIDE1MDM2LCAKKyAgICAxNTA0MCwgMTUwNDQsIDE1MDQ4LCAxNTA1MiwgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAwLCAxNTA3NSwgCisgICAgMTUwNzgsIDE1MDgyLCAxNTA4NiwgMTUwOTAsIDE1MDkzLCAxNTA5NiwgMTUwOTksIDE1MTAzLCAxNTEwNywgMCwgMTUxMTEsIAorICAgIDE1MTE1LCAxNTExOSwgMTUxMjMsIDE1MTI2LCAwLCAwLCAxNTEyOSwgMTUxMzMsIDE1MTM3LCAxNTE0MiwgMTUxNDYsIAorICAgIDE1MTUxLCAxNTE1NSwgMTUxNjAsIDE1MTY1LCAwLCAxNTE3MSwgMTUxNzUsIDE1MTgwLCAwLCAxNTE4NSwgMTUxODksIAorICAgIDE1MTk0LCAxNTE5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyMDMsIDE1MjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTIxMywgMCwgMTUyMTcsIDE1MjIyLCAxNTIyNywgMTUyMzIsIDAsIDAsIDE1MjM4LCAxNTI0MiwgMTUyNDUsIDE1MjQ4LCAKKyAgICAxNTI1MSwgMTUyNTQsIDE1MjU3LCAxNTI2MCwgMTUyNjMsIDE1MjY2LCAwLCAxNTI2OSwgMTUyNzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Mjc3LCAxNTI4MSwgMCwgMTUyODUsIDE1Mjg4LCAxNTI5MiwgCisgICAgMTUyOTUsIDE1Mjk5LCAxNTMwMiwgMTUzMDYsIDE1MzEwLCAwLCAxNTMxNCwgMTUzMTcsIDE1MzIxLCAwLCAxNTMyNSwgCisgICAgMTUzMjgsIDE1MzMyLCAxNTMzNiwgMTUzMzksIDE1MzQzLCAxNTM0NywgMTUzNTEsIDE1MzU1LCAxNTM1OSwgMTUzNjMsIAorICAgIDE1MzY3LCAxNTM3MSwgMTUzNzUsIDE1Mzc5LCAxNTM4MywgMTUzODcsIDE1MzkxLCAxNTM5NSwgMTUzOTksIDE1NDAzLCAKKyAgICAxNTQwNywgMTU0MTEsIDE1NDE0LCAxNTQxOCwgMTU0MjEsIDE1NDI1LCAxNTQyOSwgMTU0MzMsIDE1NDM2LCAxNTQzOSwgCisgICAgMTU0NDIsIDE1NDQ2LCAxNTQ1MCwgMTU0NTQsIDE1NDU4LCAxNTQ2MiwgMTU0NjYsIDE1NDcwLCAxNTQ3MywgMTU0NzYsIDAsIAorICAgIDAsIDE1NDgwLCAxNTQ4NCwgMTU0ODksIDE1NDkzLCAxNTQ5OCwgMTU1MDIsIDE1NTA3LCAxNTUxMiwgMCwgMTU1MTgsIAorICAgIDE1NTIyLCAxNTUyNywgMCwgMTU1MzIsIDE1NTM2LCAxNTU0MSwgMTU1NDYsIDE1NTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNTU1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1NjEsIDE1NTY2LCAxNTU3MSwgMTU1NzYsIDAsIDAsIAorICAgIDE1NTgyLCAxNTU4NiwgMTU1ODksIDE1NTkyLCAxNTU5NSwgMTU1OTgsIDE1NjAxLCAxNTYwNCwgMTU2MDcsIDE1NjEwLCAKKyAgICAxNTYxMywgMTU2MTcsIDE1NjIyLCAxNTYyNywgMTU2MzMsIDE1NjM5LCAwLCAwLCAwLCAxNTY0NSwgMTU2NDksIDE1NjU1LCAKKyAgICAxNTY2MSwgMTU2NjcsIDE1NjcyLCAxNTY3OCwgMCwgMCwgMTU2ODQsIDE1Njg4LCAwLCAxNTY5MiwgMTU2OTYsIDE1NzAwLCAKKyAgICAxNTcwNCwgMTU3MDgsIDE1NzEyLCAxNTcxNiwgMTU3MjAsIDE1NzI0LCAxNTcyOCwgMTU3MzIsIDE1NzM2LCAxNTc0MCwgCisgICAgMTU3NDQsIDE1NzQ4LCAxNTc1MiwgMTU3NTYsIDE1NzYwLCAwLCAwLCAwLCAxNTc2NCwgMTU3NzAsIDE1Nzc2LCAxNTc4MiwgCisgICAgMTU3ODgsIDE1Nzk0LCAxNTgwMCwgMTU4MDYsIDE1ODEyLCAxNTgxOCwgMTU4MjQsIDE1ODMwLCAxNTgzOCwgMTU4NDQsIAorICAgIDE1ODUwLCAxNTg1NiwgMTU4NjIsIDE1ODY4LCAxNTg3NCwgMTU4ODAsIDE1ODg2LCAxNTg5MiwgMTU4OTgsIDE1OTA0LCAwLCAKKyAgICAxNTkxMCwgMTU5MTYsIDE1OTIyLCAxNTkyOCwgMTU5MzQsIDE1OTQwLCAxNTk0NCwgMTU5NTAsIDE1OTU0LCAwLCAxNTk1OCwgCisgICAgMCwgMCwgMTU5NjQsIDE1OTY4LCAxNTk3NCwgMTU5ODAsIDE1OTg2LCAxNTk5MCwgMTU5OTYsIDAsIDAsIDAsIDE2MDAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjAwNCwgMTYwMDksIDE2MDE2LCAxNjAyMywgMTYwMzAsIDE2MDM3LCAwLCAxNjA0NCwgMCwgMTYwNTEsIAorICAgIDE2MDU2LCAxNjA2MSwgMTYwNjgsIDE2MDc1LCAxNjA4NCwgMTYwOTUsIDE2MTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjEwOSwgMTYxMTYsIDE2MTIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNjEyOCwgMTYxMzQsIDE2MTQwLCAxNjE0NiwgMTYxNTIsIDE2MTU4LCAxNjE2NCwgMTYxNzAsIAorICAgIDE2MTc2LCAxNjE4MiwgMTYxODgsIDE2MTk0LCAxNjIwMCwgMTYyMDYsIDE2MjEyLCAxNjIxOCwgMTYyMjQsIDE2MjMwLCAKKyAgICAxNjIzNiwgMTYyNDIsIDE2MjQ4LCAxNjI1NCwgMTYyNjAsIDE2MjY2LCAxNjI3MiwgMTYyNzgsIDE2Mjg0LCAxNjI5MCwgCisgICAgMTYyOTYsIDE2MzAyLCAxNjMwOCwgMTYzMTQsIDE2MzIwLCAxNjMyNSwgMTYzMzEsIDE2MzM3LCAxNjM0MSwgMTYzNDcsIAorICAgIDE2MzUxLCAxNjM1NywgMTYzNjMsIDE2MzY5LCAxNjM3NSwgMTYzODEsIDE2Mzg3LCAxNjM5MiwgMTYzOTgsIDE2NDAyLCAKKyAgICAxNjQwNywgMTY0MTMsIDE2NDE5LCAxNjQyNSwgMTY0MzAsIDE2NDM2LCAxNjQ0MiwgMTY0NDgsIDE2NDUzLCAxNjQ1OSwgMCwgCisgICAgMCwgMCwgMCwgMTY0NjMsIDE2NDY5LCAxNjQ3NCwgMTY0ODAsIDE2NDg1LCAxNjQ5MywgMTY1MDEsIDE2NTA1LCAxNjUwOSwgCisgICAgMTY1MTMsIDE2NTE5LCAxNjUyNSwgMTY1MzEsIDE2NTM3LCAxNjU0MSwgMTY1NDUsIDE2NTQ5LCAxNjU1MywgMTY1NTcsIAorICAgIDE2NTYwLCAxNjU2MywgMTY1NjYsIDE2NTY5LCAxNjU3MiwgMTY1NzUsIDE2NTc4LCAxNjU4MSwgMTY1ODQsIDE2NTg4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjU5MiwgMTY1OTcsIDAsIDE2NjA0LCAwLCAwLCAxNjYxMSwgCisgICAgMTY2MTYsIDAsIDE2NjIxLCAwLCAwLCAxNjYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2MzMsIDE2NjM4LCAxNjY0MiwgCisgICAgMTY2NDksIDAsIDE2NjU2LCAxNjY2MSwgMTY2NjYsIDE2NjcxLCAxNjY3OCwgMTY2ODUsIDE2NjkyLCAwLCAxNjY5OSwgCisgICAgMTY3MDQsIDE2NzA5LCAwLCAxNjcxNiwgMCwgMTY3MjMsIDAsIDAsIDE2NzI4LCAxNjczNSwgMCwgMTY3NDIsIDE2NzQ2LCAKKyAgICAxNjc1MywgMTY3NTcsIDE2NzYyLCAxNjc3MCwgMTY3NzYsIDE2NzgyLCAxNjc4NywgMTY3OTMsIDE2Nzk5LCAxNjgwNSwgCisgICAgMTY4MTAsIDAsIDE2ODE2LCAxNjgyNCwgMTY4MzEsIDAsIDAsIDE2ODM4LCAxNjg0MywgMTY4NDksIDE2ODU0LCAxNjg2MCwgCisgICAgMCwgMTY4NjYsIDAsIDE2ODcyLCAxNjg3OSwgMTY4ODYsIDE2ODkzLCAxNjkwMCwgMTY5MDUsIDAsIDAsIDE2OTA5LCAKKyAgICAxNjkxNCwgMTY5MTgsIDE2OTIyLCAxNjkyNiwgMTY5MzAsIDE2OTM0LCAxNjkzOCwgMTY5NDIsIDE2OTQ2LCAwLCAwLCAKKyAgICAxNjk1MCwgMTY5NTYsIDE2OTYyLCAxNjk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY5NzYsIDE2OTgwLCAxNjk5MSwgCisgICAgMTcwMDYsIDE3MDIxLCAxNzAzMSwgMTcwNDIsIDE3MDU1LCAxNzA2NiwgMTcwNzIsIDE3MDgwLCAxNzA5MCwgMTcwOTYsIAorICAgIDE3MTA0LCAxNzEwOCwgMTcxMTQsIDE3MTIwLCAxNzEyOCwgMTcxMzgsIDE3MTQ2LCAxNzE1OSwgMTcxNjUsIDE3MTczLCAKKyAgICAxNzE4MSwgMTcxOTMsIDE3MjAwLCAxNzIwOCwgMTcyMTYsIDE3MjI0LCAxNzIzMiwgMTcyNDAsIDE3MjQ4LCAxNzI1OCwgCisgICAgMTcyNjIsIDE3MjY1LCAxNzI2OCwgMTcyNzEsIDE3Mjc0LCAxNzI3NywgMTcyODAsIDE3MjgzLCAxNzI4NiwgMTcyODksIAorICAgIDE3MjkzLCAxNzI5NywgMTczMDEsIDE3MzA1LCAxNzMwOSwgMTczMTMsIDE3MzE3LCAxNzMyMSwgMTczMjUsIDE3MzMwLCAKKyAgICAxNzMzNiwgMTczNDYsIDE3MzYwLCAxNzM3MCwgMTczNzYsIDE3MzgyLCAxNzM5MCwgMTczOTgsIDE3NDA2LCAxNzQxNCwgCisgICAgMTc0MjAsIDE3NDI2LCAxNzQyOSwgMTc0MzMsIDE3NDM3LCAxNzQ0MSwgMTc0NDUsIDE3NDQ5LCAxNzQ1MywgMCwgMTc0NTcsIAorICAgIDE3NDYxLCAxNzQ2NSwgMTc0NjksIDE3NDczLCAxNzQ3NywgMTc0ODEsIDE3NDg1LCAxNzQ4OSwgMTc0OTMsIDE3NDk3LCAKKyAgICAxNzUwMCwgMTc1MDMsIDE3NTA3LCAxNzUxMSwgMTc1MTUsIDE3NTE4LCAxNzUyMiwgMTc1MjYsIDE3NTMwLCAxNzUzNCwgCisgICAgMTc1MzgsIDE3NTQyLCAxNzU0NiwgMTc1NTAsIDE3NTUzLCAxNzU1NiwgMTc1NjAsIDE3NTY0LCAxNzU2OCwgMTc1NzEsIAorICAgIDE3NTc0LCAxNzU3NywgMTc1ODEsIDE3NTg2LCAxNzU5MCwgMCwgMCwgMCwgMCwgMTc1OTQsIDE3NTk5LCAxNzYwMywgCisgICAgMTc2MDgsIDE3NjEyLCAxNzYxNywgMTc2MjIsIDE3NjI4LCAxNzYzMywgMTc2MzksIDE3NjQzLCAxNzY0OCwgMTc2NTIsIAorICAgIDE3NjU3LCAxNzY2NywgMTc2NzMsIDE3Njc5LCAxNzY4NiwgMTc2OTYsIDE3NzAyLCAxNzcwNiwgMTc3MTAsIDE3NzE2LCAKKyAgICAxNzcyMiwgMTc3MzAsIDE3NzM2LCAxNzc0NCwgMTc3NTIsIDE3NzYwLCAxNzc3MCwgMTc3NzgsIDE3Nzg4LCAxNzc5MywgCisgICAgMTc3OTksIDE3ODA1LCAxNzgxMSwgMTc4MTcsIDE3ODIzLCAxNzgyOSwgMCwgMTc4MzUsIDE3ODQxLCAxNzg0NywgMTc4NTMsIAorICAgIDE3ODU5LCAxNzg2NSwgMTc4NzEsIDE3ODc3LCAxNzg4MywgMTc4ODksIDE3ODk1LCAxNzkwMCwgMTc5MDUsIDE3OTExLCAKKyAgICAxNzkxNywgMTc5MjMsIDE3OTI4LCAxNzkzNCwgMTc5NDAsIDE3OTQ2LCAxNzk1MiwgMTc5NTgsIDE3OTY0LCAxNzk3MCwgCisgICAgMTc5NzYsIDE3OTgxLCAxNzk4NiwgMTc5OTIsIDE3OTk4LCAxODAwNCwgMTgwMDksIDE4MDE0LCAxODAxOSwgMTgwMjUsIAorICAgIDE4MDMzLCAxODA0MCwgMCwgMTgwNDcsIDE4MDU0LCAxODA2NywgMTgwNzQsIDE4MDgxLCAxODA4OSwgMTgwOTcsIDE4MTAzLCAKKyAgICAxODEwOSwgMTgxMTUsIDE4MTI1LCAxODEzMCwgMTgxMzYsIDE4MTQ2LCAxODE1NiwgMCwgMTgxNjYsIDE4MTc2LCAxODE4NCwgCisgICAgMTgxOTYsIDE4MjA4LCAxODIxNCwgMTgyMjgsIDE4MjQzLCAxODI0OCwgMTgyNTMsIDE4MjYxLCAxODI2OSwgMTgyNzcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4Mjg1LCAxODI4OCwgMTgyOTIsIDE4Mjk2LCAxODMwMCwgCisgICAgMTgzMDQsIDE4MzA4LCAxODMxMiwgMTgzMTYsIDE4MzIwLCAxODMyNCwgMTgzMjgsIDE4MzMyLCAxODMzNiwgMTgzNDAsIAorICAgIDE4MzQ0LCAxODM0OCwgMTgzNTIsIDE4MzU2LCAxODM2MCwgMTgzNjQsIDE4MzY3LCAxODM3MCwgMTgzNzQsIDE4Mzc4LCAKKyAgICAxODM4MiwgMTgzODUsIDE4Mzg4LCAxODM5MSwgMTgzOTUsIDE4Mzk5LCAxODQwMiwgMTg0MDUsIDE4NDA5LCAxODQxMiwgCisgICAgMTg0MTcsIDE4NDIwLCAxODQyNCwgMTg0MjcsIDE4NDMxLCAxODQzNCwgMTg0MzksIDE4NDQyLCAxODQ0NiwgMTg0NTMsIAorICAgIDE4NDU4LCAxODQ2MiwgMTg0NjcsIDE4NDcxLCAxODQ3NiwgMTg0ODAsIDE4NDg1LCAxODQ5MiwgMTg0OTgsIDE4NTAzLCAKKyAgICAxODUwNywgMTg1MTEsIDE4NTE1LCAxODUxOSwgMTg1MjMsIDE4NTI4LCAxODUzMywgMTg1MzksIDE4NTQ0LCAxODU0OSwgCisgICAgMTg1NTMsIDE4NTU2LCAxODU1OSwgMTg1NjIsIDE4NTY1LCAxODU2OCwgMTg1NzEsIDE4NTc0LCAxODU3NywgMTg1ODAsIAorICAgIDE4NTg2LCAxODU5MCwgMTg1OTQsIDE4NTk4LCAxODYwMiwgMTg2MDYsIDE4NjEwLCAxODYxNCwgMTg2MTgsIDE4NjIzLCAKKyAgICAxODYyNywgMTg2MzIsIDE4NjM3LCAxODY0MywgMTg2NDgsIDE4NjU0LCAxODY2MCwgMTg2NjYsIDE4NjcyLCAxODY3OCwgCisgICAgMTg2ODUsIDE4NjkyLCAxODcwMCwgMTg3MDgsIDE4NzE3LCAxODcyNiwgMTg3MzcsIDE4NzQ3LCAxODc1NywgMTg3NjgsIAorICAgIDE4Nzc5LCAxODc4OSwgMTg3OTksIDE4ODA5LCAxODgxOSwgMTg4MjksIDE4ODM5LCAxODg0OSwgMTg4NTksIDE4ODY3LCAKKyAgICAxODg3NCwgMTg4ODAsIDE4ODg3LCAxODg5MiwgMTg4OTgsIDE4OTA0LCAxODkxMCwgMTg5MTYsIDE4OTIyLCAxODkyOCwgCisgICAgMTg5MzMsIDE4OTM5LCAxODk0NSwgMTg5NTEsIDE4OTU3LCAxODk2MiwgMTg5NzAsIDE4OTc3LCAxODk4MywgMTg5OTAsIAorICAgIDE4OTk4LCAxOTAwNCwgMTkwMTAsIDE5MDE2LCAxOTAyMiwgMTkwMzAsIDE5MDM4LCAxOTA0OCwgMTkwNTYsIDE5MDY0LCAKKyAgICAxOTA3MCwgMTkwNzUsIDE5MDgwLCAxOTA4NSwgMTkwOTAsIDE5MDk1LCAxOTEwMCwgMTkxMDUsIDE5MTEwLCAxOTExNSwgCisgICAgMTkxMjEsIDE5MTI3LCAxOTEzMywgMTkxNDAsIDE5MTQ1LCAxOTE1MSwgMTkxNTYsIDE5MTYxLCAxOTE2NiwgMTkxNzEsIAorICAgIDE5MTc2LCAxOTE4MSwgMTkxODYsIDE5MTkxLCAxOTE5NiwgMTkyMDEsIDE5MjA2LCAxOTIxMSwgMTkyMTYsIDE5MjIxLCAKKyAgICAxOTIyNiwgMTkyMzEsIDE5MjM2LCAxOTI0MSwgMTkyNDYsIDE5MjUxLCAxOTI1NiwgMTkyNjEsIDE5MjY2LCAxOTI3MSwgCisgICAgMTkyNzYsIDE5MjgxLCAxOTI4NiwgMTkyOTEsIDE5Mjk2LCAxOTMwMSwgMTkzMDYsIDE5MzExLCAxOTMxNiwgMTkzMjEsIAorICAgIDE5MzI2LCAxOTMzMSwgMTkzMzYsIDAsIDE5MzQxLCAwLCAwLCAwLCAwLCAwLCAxOTM0NiwgMCwgMCwgMTkzNTEsIDE5MzU1LCAKKyAgICAxOTM1OSwgMTkzNjMsIDE5MzY3LCAxOTM3MSwgMTkzNzUsIDE5Mzc5LCAxOTM4MywgMTkzODcsIDE5MzkxLCAxOTM5NSwgCisgICAgMTkzOTksIDE5NDAzLCAxOTQwNywgMTk0MTEsIDE5NDE1LCAxOTQxOSwgMTk0MjMsIDE5NDI3LCAxOTQzMSwgMTk0MzUsIAorICAgIDE5NDM5LCAxOTQ0MywgMTk0NDcsIDE5NDUxLCAxOTQ1NSwgMTk0NTksIDE5NDYzLCAxOTQ2NywgMTk0NzEsIDE5NDc1LCAKKyAgICAxOTQ3OSwgMTk0ODMsIDE5NDg3LCAxOTQ5MSwgMTk0OTUsIDE5NDk5LCAxOTUwMywgMTk1MDcsIDE5NTExLCAxOTUxNSwgCisgICAgMTk1MjEsIDE5NTI1LCAxOTUzMCwgMTk1MzUsIDE5NTM5LCAxOTU0NCwgMTk1NDksIDE5NTUzLCAxOTU1NywgMTk1NjEsIAorICAgIDE5NTY1LCAxOTU2OSwgMTk1NzMsIDE5NTc3LCAxOTU4MSwgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAKKyAgICAxOTYwNSwgMTk2MDksIDE5NjEzLCAxOTYxNywgMTk2MjEsIDE5NjI1LCAxOTYyOSwgMTk2MzMsIDE5NjM3LCAxOTY0MSwgCisgICAgMTk2NDUsIDE5NjQ5LCAxOTY1MywgMTk2NTcsIDE5NjYxLCAxOTY2NSwgMTk2NjksIDE5NjczLCAxOTY3NywgMTk2ODEsIAorICAgIDE5Njg1LCAxOTY4OSwgMTk2OTMsIDE5Njk3LCAxOTcwMSwgMTk3MDUsIDE5NzA5LCAxOTcxMywgMTk3MTcsIDE5NzIxLCAKKyAgICAxOTcyNSwgMTk3MjksIDE5NzMzLCAxOTczNywgMTk3NDEsIDE5NzQ1LCAxOTc0OSwgMTk3NTMsIDE5NzU3LCAxOTc2MSwgCisgICAgMTk3NjUsIDE5NzY5LCAxOTc3MywgMTk3NzcsIDE5NzgxLCAxOTc4NSwgMTk3ODksIDE5NzkzLCAxOTc5NywgMTk4MDEsIAorICAgIDE5ODA1LCAxOTgwOSwgMTk4MTMsIDE5ODE3LCAxOTgyMSwgMTk4MjUsIDE5ODI5LCAxOTgzMywgMTk4MzcsIDE5ODQxLCAKKyAgICAxOTg0NSwgMTk4NDksIDE5ODUzLCAxOTg1NywgMTk4NjEsIDE5ODY1LCAxOTg2OSwgMTk4NzMsIDE5ODc3LCAxOTg4MSwgCisgICAgMTk4ODUsIDE5ODg5LCAxOTg5MywgMTk4OTcsIDE5OTAxLCAxOTkwNSwgMTk5MDksIDE5OTEzLCAxOTkxNywgMTk5MjEsIAorICAgIDE5OTI1LCAxOTkyOSwgMTk5MzMsIDE5OTM3LCAxOTk0MCwgMTk5NDQsIDE5OTQ3LCAxOTk1MSwgMTk5NTUsIDE5OTU4LCAKKyAgICAxOTk2MiwgMTk5NjYsIDE5OTY5LCAxOTk3MywgMTk5NzcsIDE5OTgxLCAxOTk4NSwgMTk5ODgsIDE5OTkyLCAxOTk5NiwgCisgICAgMjAwMDAsIDIwMDA0LCAyMDAwOCwgMjAwMTIsIDIwMDE1LCAyMDAxOSwgMjAwMjMsIDIwMDI3LCAyMDAzMSwgMjAwMzUsIAorICAgIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAyMDA1NSwgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAKKyAgICAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgMjAwOTUsIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgCisgICAgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIDIwMTM1LCAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIAorICAgIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAyMDE3NSwgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAKKyAgICAyMDE5OSwgMjAyMDMsIDIwMjA3LCAyMDIxMSwgMjAyMTUsIDIwMjE5LCAyMDIyMywgMjAyMjcsIDIwMjMxLCAyMDIzNSwgCisgICAgMjAyMzksIDIwMjQzLCAyMDI0NywgMjAyNTEsIDIwMjU1LCAyMDI1OSwgMjAyNjMsIDIwMjY3LCAyMDI3MSwgMjAyNzUsIAorICAgIDIwMjc5LCAyMDI4MywgMjAyODcsIDIwMjkxLCAyMDI5NSwgMjAyOTksIDIwMzAzLCAyMDMwNywgMjAzMTEsIDIwMzE1LCAKKyAgICAyMDMxOSwgMjAzMjMsIDIwMzI3LCAyMDMzMSwgMjAzMzUsIDIwMzM5LCAyMDM0MywgMjAzNDcsIDIwMzUxLCAyMDM1NSwgCisgICAgMjAzNTksIDIwMzYzLCAyMDM2NywgMjAzNzEsIDIwMzc1LCAyMDM3OSwgMjAzODMsIDIwMzg3LCAyMDM5MSwgMjAzOTUsIAorICAgIDIwMzk5LCAyMDQwMywgMjA0MDcsIDIwNDExLCAyMDQxNSwgMjA0MTksIDIwNDIzLCAyMDQyNywgMjA0MzEsIDIwNDM1LCAKKyAgICAyMDQzOSwgMjA0NDMsIDIwNDQ3LCAyMDQ1MSwgMjA0NTUsIDIwNDU5LCAyMDQ2MywgMjA0NjcsIDIwNDcxLCAyMDQ3NSwgCisgICAgMjA0NzksIDIwNDgzLCAyMDQ4NywgMjA0OTEsIDIwNDk1LCAyMDQ5OSwgMjA1MDMsIDIwNTA3LCAyMDUxMSwgMjA1MTUsIAorICAgIDIwNTE5LCAyMDUyMywgMjA1MjcsIDIwNTMxLCAyMDUzNSwgMjA1MzksIDIwNTQzLCAyMDU0NywgMjA1NTEsIDIwNTU1LCAKKyAgICAyMDU1OSwgMjA1NjMsIDIwNTY3LCAyMDU3MCwgMjA1NzQsIDIwNTc4LCAyMDU4MiwgMjA1ODYsIDIwNTkwLCAyMDU5NCwgCisgICAgMjA1OTgsIDIwNjAyLCAyMDYwNiwgMjA2MTAsIDIwNjE0LCAyMDYxOCwgMjA2MjIsIDIwNjI2LCAyMDYzMCwgMjA2MzQsIAorICAgIDIwNjM4LCAyMDY0MiwgMjA2NDYsIDIwNjUwLCAyMDY1NCwgMjA2NTgsIDIwNjYyLCAyMDY2NSwgMjA2NjksIDIwNjczLCAKKyAgICAyMDY3NywgMjA2ODEsIDIwNjg1LCAyMDY4OSwgMjA2OTMsIDIwNjk3LCAyMDcwMSwgMjA3MDUsIDIwNzA5LCAyMDcxMywgCisgICAgMjA3MTcsIDIwNzIxLCAyMDcyNSwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAyMDc0OCwgMjA3NTIsIAorICAgIDIwNzU2LCAyMDc1OSwgMjA3NjMsIDIwNzY3LCAyMDc3MSwgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAKKyAgICAyMDc5NSwgMjA3OTksIDIwODAzLCAyMDgwNywgMjA4MTEsIDIwODE1LCAyMDgxOSwgMjA4MjMsIDIwODI3LCAyMDgzMSwgCisgICAgMjA4MzUsIDIwODM5LCAyMDg0MywgMjA4NDcsIDIwODUxLCAwLCAyMDg1NSwgMjA4NTksIDIwODYzLCAyMDg2NywgMCwgMCwgCisgICAgMjA4NzEsIDIwODc1LCAyMDg3OSwgMjA4ODMsIDIwODg3LCAyMDg5MSwgMjA4OTUsIDAsIDIwODk5LCAwLCAyMDkwMywgCisgICAgMjA5MDcsIDIwOTExLCAyMDkxNSwgMCwgMCwgMjA5MTksIDIwOTIzLCAyMDkyNywgMjA5MzEsIDIwOTM1LCAyMDkzOSwgCisgICAgMjA5NDMsIDIwOTQ3LCAyMDk1MSwgMjA5NTUsIDIwOTU5LCAyMDk2MywgMjA5NjcsIDIwOTcxLCAyMDk3NSwgMjA5NzksIAorICAgIDIwOTgzLCAyMDk4NywgMjA5OTEsIDIwOTk1LCAyMDk5OSwgMjEwMDMsIDIxMDA3LCAyMTAxMCwgMjEwMTQsIDIxMDE4LCAKKyAgICAyMTAyMiwgMjEwMjYsIDIxMDMwLCAyMTAzNCwgMjEwMzgsIDIxMDQyLCAyMTA0NiwgMjEwNTAsIDIxMDU0LCAyMTA1OCwgCisgICAgMjEwNjIsIDIxMDY2LCAyMTA3MCwgMjEwNzQsIDIxMDc4LCAwLCAyMTA4MiwgMjEwODYsIDIxMDkwLCAyMTA5NCwgMCwgMCwgCisgICAgMjEwOTgsIDIxMTAxLCAyMTEwNSwgMjExMDksIDIxMTEzLCAyMTExNywgMjExMjEsIDIxMTI1LCAyMTEyOSwgMjExMzMsIAorICAgIDIxMTM3LCAyMTE0MSwgMjExNDUsIDIxMTQ5LCAyMTE1MywgMjExNTcsIDIxMTYxLCAyMTE2NiwgMjExNzEsIDIxMTc2LCAKKyAgICAyMTE4MiwgMjExODgsIDIxMTkzLCAyMTE5OCwgMjEyMDQsIDIxMjA3LCAyMTIxMSwgMjEyMTUsIDIxMjE5LCAyMTIyMywgCisgICAgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMCwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTEsIDAsIDAsIDIxMjU1LCAyMTI1OSwgCisgICAgMjEyNjMsIDIxMjY3LCAyMTI3MSwgMjEyNzUsIDIxMjc5LCAwLCAyMTI4MywgMCwgMjEyODcsIDIxMjkxLCAyMTI5NSwgCisgICAgMjEyOTksIDAsIDAsIDIxMzAzLCAyMTMwNywgMjEzMTEsIDIxMzE1LCAyMTMxOSwgMjEzMjMsIDIxMzI3LCAyMTMzMSwgCisgICAgMjEzMzUsIDIxMzQwLCAyMTM0NSwgMjEzNTAsIDIxMzU2LCAyMTM2MiwgMjEzNjcsIDAsIDIxMzcyLCAyMTM3NiwgMjEzODAsIAorICAgIDIxMzg0LCAyMTM4OCwgMjEzOTIsIDIxMzk2LCAyMTQwMCwgMjE0MDQsIDIxNDA4LCAyMTQxMiwgMjE0MTYsIDIxNDIwLCAKKyAgICAyMTQyNCwgMjE0MjgsIDIxNDMyLCAyMTQzNiwgMjE0MzksIDIxNDQzLCAyMTQ0NywgMjE0NTEsIDIxNDU1LCAyMTQ1OSwgCisgICAgMjE0NjMsIDIxNDY3LCAyMTQ3MSwgMjE0NzUsIDIxNDc5LCAyMTQ4MywgMjE0ODcsIDIxNDkxLCAyMTQ5NSwgMjE0OTksIAorICAgIDIxNTAzLCAyMTUwNywgMjE1MTEsIDIxNTE1LCAyMTUxOSwgMjE1MjMsIDIxNTI3LCAyMTUzMSwgMjE1MzUsIDIxNTM5LCAKKyAgICAyMTU0MywgMjE1NDcsIDIxNTUxLCAyMTU1NSwgMjE1NTksIDIxNTYzLCAyMTU2NywgMjE1NzEsIDIxNTc1LCAyMTU3OSwgCisgICAgMjE1ODMsIDIxNTg3LCAyMTU5MSwgMjE1OTUsIDAsIDIxNTk5LCAyMTYwMywgMjE2MDcsIDIxNjExLCAwLCAwLCAyMTYxNSwgCisgICAgMjE2MTksIDIxNjIzLCAyMTYyNywgMjE2MzEsIDIxNjM1LCAyMTYzOSwgMjE2NDMsIDIxNjQ3LCAyMTY1MSwgMjE2NTUsIAorICAgIDIxNjU5LCAyMTY2MywgMjE2NjcsIDIxNjcxLCAyMTY3NSwgMjE2NzksIDIxNjgzLCAyMTY4NywgMjE2OTEsIDIxNjk1LCAKKyAgICAyMTY5OSwgMjE3MDMsIDIxNzA3LCAyMTcxMSwgMjE3MTUsIDIxNzE5LCAyMTcyMywgMjE3MjcsIDIxNzMxLCAyMTczNSwgCisgICAgMjE3MzksIDIxNzQzLCAyMTc0NywgMjE3NTEsIDIxNzU1LCAyMTc1OSwgMjE3NjMsIDIxNzY3LCAyMTc3MSwgMjE3NzUsIAorICAgIDIxNzc5LCAyMTc4MywgMjE3ODcsIDIxNzkxLCAyMTc5NSwgMjE3OTksIDIxODAzLCAyMTgwNywgMjE4MTEsIDIxODE1LCAKKyAgICAyMTgxOSwgMjE4MjMsIDIxODI3LCAyMTgzMSwgMjE4MzUsIDIxODM5LCAyMTg0MiwgMjE4NDYsIDIxODUwLCAyMTg1NCwgCisgICAgMjE4NTgsIDIxODYyLCAyMTg2NiwgMjE4NzAsIDIxODc0LCAyMTg3OCwgMCwgMCwgMjE4ODIsIDIxODkxLCAyMTg5NywgCisgICAgMjE5MDIsIDIxOTA2LCAyMTkwOSwgMjE5MTQsIDIxOTE3LCAyMTkyMCwgMjE5MjMsIDIxOTI4LCAyMTkzMiwgMjE5MzcsIAorICAgIDIxOTQwLCAyMTk0MywgMjE5NDYsIDIxOTQ5LCAyMTk1MiwgMjE5NTUsIDIxOTU4LCAyMTk2MSwgMjE5NjQsIDIxOTY4LCAKKyAgICAyMTk3MiwgMjE5NzYsIDIxOTgwLCAyMTk4NCwgMjE5ODgsIDIxOTkyLCAyMTk5NiwgMjIwMDAsIDIyMDA0LCAwLCAwLCAwLCAKKyAgICAyMjAxMCwgMjIwMTYsIDIyMDIwLCAyMjAyNCwgMjIwMjgsIDIyMDM0LCAyMjAzOCwgMjIwNDIsIDIyMDQ2LCAyMjA1MiwgCisgICAgMjIwNTYsIDIyMDYwLCAyMjA2NCwgMjIwNzAsIDIyMDc0LCAyMjA3OCwgMjIwODIsIDIyMDg4LCAyMjA5NCwgMjIxMDAsIAorICAgIDIyMTA4LCAyMjExNCwgMjIxMjAsIDIyMTI2LCAyMjEzMiwgMjIxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMTQ0LCAyMjE0NywgCisgICAgMjIxNTAsIDIyMTUzLCAyMjE1NiwgMjIxNTksIDIyMTYzLCAyMjE2NywgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIAorICAgIDIyMTg2LCAyMjE5MCwgMjIxOTMsIDIyMTk3LCAyMjIwMSwgMjIyMDUsIDIyMjA5LCAyMjIxMywgMjIyMTcsIDIyMjIxLCAKKyAgICAyMjIyNSwgMjIyMjksIDIyMjMzLCAyMjIzNywgMjIyNDAsIDIyMjQ0LCAyMjI0OCwgMjIyNTIsIDIyMjU2LCAyMjI1OSwgCisgICAgMjIyNjMsIDIyMjY3LCAyMjI3MSwgMjIyNzUsIDIyMjc5LCAyMjI4MywgMjIyODcsIDIyMjkxLCAyMjI5NSwgMjIyOTksIAorICAgIDIyMzAzLCAyMjMwNywgMjIzMTEsIDIyMzE0LCAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAKKyAgICAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgCisgICAgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIAorICAgIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTMsIDIyNDU3LCAKKyAgICAyMjQ2MSwgMjI0NjUsIDIyNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjQ3MywgMjI0NzcsIAorICAgIDIyNDgwLCAyMjQ4NCwgMjI0ODcsIDIyNDkxLCAyMjQ5NCwgMjI0OTgsIDIyNTA0LCAyMjUwOSwgMjI1MTMsIDIyNTE2LCAKKyAgICAyMjUyMCwgMjI1MjQsIDIyNTI5LCAyMjUzMywgMjI1MzgsIDIyNTQyLCAyMjU0NywgMjI1NTEsIDIyNTU2LCAyMjU2MCwgCisgICAgMjI1NjUsIDIyNTcxLCAyMjU3NSwgMjI1ODAsIDIyNTg0LCAyMjU4OSwgMjI1OTUsIDIyNTk5LCAyMjYwNSwgMjI2MTEsIAorICAgIDIyNjE1LCAyMjYyMCwgMjI2MjgsIDIyNjM2LCAyMjY0MywgMjI2NDgsIDIyNjUzLCAyMjY2MiwgMjI2NjksIDIyNjc2LCAKKyAgICAyMjY4MSwgMjI2ODcsIDIyNjkxLCAyMjY5NSwgMjI2OTksIDIyNzAzLCAyMjcwNywgMjI3MTEsIDIyNzE1LCAyMjcxOSwgCisgICAgMjI3MjMsIDIyNzI3LCAyMjczMywgMjI3MzgsIDIyNzQzLCAyMjc0NiwgMjI3NTAsIDIyNzU0LCAyMjc1OSwgMjI3NjMsIAorICAgIDIyNzY4LCAyMjc3MiwgMjI3NzcsIDIyNzgxLCAyMjc4NiwgMjI3OTAsIDIyNzk1LCAyMjc5OSwgMjI4MDQsIDIyODA4LCAKKyAgICAyMjgxMywgMjI4MTksIDIyODIzLCAyMjgyOCwgMjI4MzMsIDIyODM3LCAyMjg0MSwgMjI4NDUsIDIyODQ5LCAyMjg1MiwgCisgICAgMjI4NTYsIDIyODYyLCAyMjg2NywgMjI4NzIsIDIyODc2LCAyMjg4MCwgMjI4ODQsIDIyODg5LCAyMjg5MywgMjI4OTgsIAorICAgIDIyOTAyLCAyMjkwNywgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjMsIDIyOTI3LCAyMjkzMiwgMjI5MzYsIDIyOTQxLCAKKyAgICAyMjk0NywgMjI5NTEsIDIyOTU1LCAyMjk1OSwgMjI5NjMsIDIyOTY3LCAyMjk3MSwgMjI5NzUsIDIyOTc5LCAyMjk4MywgCisgICAgMjI5ODcsIDIyOTkxLCAyMjk5NywgMjMwMDAsIDIzMDA0LCAyMzAwOCwgMjMwMTMsIDIzMDE3LCAyMzAyMiwgMjMwMjYsIAorICAgIDIzMDMxLCAyMzAzNSwgMjMwNDAsIDIzMDQ0LCAyMzA0OSwgMjMwNTMsIDIzMDU4LCAyMzA2MiwgMjMwNjcsIDIzMDczLCAKKyAgICAyMzA3NywgMjMwODEsIDIzMDg3LCAyMzA5MywgMjMwOTksIDIzMTA1LCAyMzEwOSwgMjMxMTMsIDIzMTE3LCAyMzEyMSwgCisgICAgMjMxMjUsIDIzMTI5LCAyMzEzNSwgMjMxMzksIDIzMTQzLCAyMzE0NywgMjMxNTIsIDIzMTU2LCAyMzE2MSwgMjMxNjUsIAorICAgIDIzMTcwLCAyMzE3NCwgMjMxNzksIDIzMTgzLCAyMzE4OCwgMjMxOTIsIDIzMTk3LCAyMzIwMSwgMjMyMDYsIDIzMjEyLCAKKyAgICAyMzIxNiwgMjMyMjIsIDIzMjI2LCAyMzIzMCwgMjMyMzQsIDIzMjM4LCAyMzI0MiwgMjMyNDYsIDIzMjUyLCAyMzI1NSwgCisgICAgMjMyNTksIDIzMjYzLCAyMzI2OCwgMjMyNzIsIDIzMjc3LCAyMzI4MSwgMjMyODYsIDIzMjkwLCAyMzI5NSwgMjMyOTksIAorICAgIDIzMzA0LCAyMzMwOCwgMjMzMTMsIDIzMzE3LCAyMzMyMiwgMjMzMjgsIDIzMzMxLCAyMzMzNSwgMjMzMzksIDIzMzQ0LCAKKyAgICAyMzM0OSwgMjMzNTMsIDIzMzU3LCAyMzM2MSwgMjMzNjUsIDIzMzY5LCAyMzM3MywgMjMzNzksIDIzMzgyLCAyMzM4NiwgCisgICAgMjMzOTAsIDIzMzk1LCAyMzM5OSwgMjM0MDQsIDIzNDA4LCAyMzQxMywgMjM0MTksIDIzNDIzLCAyMzQyOCwgMjM0MzIsIAorICAgIDIzNDM2LCAyMzQ0MCwgMjM0NDQsIDIzNDQ4LCAyMzQ1MiwgMjM0NTYsIDIzNDYyLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAKKyAgICAyMzQ3OSwgMjM0ODMsIDIzNDg4LCAyMzQ5MiwgMjM0OTcsIDIzNTAxLCAyMzUwNiwgMjM1MTAsIDIzNTE1LCAyMzUxOSwgCisgICAgMjM1MjQsIDIzNTI4LCAyMzUzMywgMjM1MzYsIDIzNTQwLCAyMzU0NCwgMjM1NDgsIDIzNTUyLCAyMzU1NiwgMjM1NjAsIAorICAgIDIzNTY0LCAyMzU2OCwgMjM1NzQsIDIzNTc3LCAyMzU4MSwgMjM1ODUsIDIzNTkwLCAyMzU5NCwgMjM1OTksIDIzNjAzLCAKKyAgICAyMzYwOCwgMjM2MTIsIDIzNjE3LCAyMzYyMSwgMjM2MjYsIDIzNjMwLCAyMzYzNSwgMjM2MzksIDIzNjQ0LCAyMzY1MCwgCisgICAgMjM2NTQsIDIzNjYwLCAyMzY2NCwgMjM2NzAsIDIzNjc2LCAyMzY4MiwgMjM2ODgsIDIzNjk0LCAyMzcwMCwgMjM3MDYsIAorICAgIDIzNzEyLCAyMzcxNiwgMjM3MjAsIDIzNzI0LCAyMzcyOCwgMjM3MzIsIDIzNzM2LCAyMzc0MCwgMjM3NDQsIDIzNzQ5LCAKKyAgICAyMzc1MywgMjM3NTgsIDIzNzYyLCAyMzc2NywgMjM3NzEsIDIzNzc2LCAyMzc4MCwgMjM3ODUsIDIzNzg5LCAyMzc5NCwgCisgICAgMjM3OTgsIDIzODAzLCAyMzgwNywgMjM4MTEsIDIzODE1LCAyMzgxOSwgMjM4MjMsIDIzODI3LCAyMzgzMSwgMjM4MzcsIAorICAgIDIzODQwLCAyMzg0NCwgMjM4NDgsIDIzODUzLCAyMzg1NywgMjM4NjIsIDIzODY2LCAyMzg3MSwgMjM4NzUsIDIzODgwLCAKKyAgICAyMzg4NCwgMjM4ODksIDIzODkzLCAyMzg5OCwgMjM5MDIsIDIzOTA3LCAyMzkxMywgMjM5MTcsIDIzOTIzLCAyMzkyOCwgCisgICAgMjM5MzQsIDIzOTM4LCAyMzk0NCwgMjM5NDksIDIzOTUzLCAyMzk1NywgMjM5NjEsIDIzOTY1LCAyMzk2OSwgMjM5NzQsIAorICAgIDIzOTc3LCAyMzk4MSwgMjM5ODYsIDIzOTkwLCAyMzk5NSwgMjM5OTgsIDI0MDAyLCAyNDAwNiwgMjQwMTAsIDI0MDE0LCAKKyAgICAyNDAxOCwgMjQwMjIsIDI0MDI2LCAyNDAzMCwgMjQwMzQsIDI0MDM4LCAyNDA0MiwgMjQwNDcsIDI0MDUxLCAyNDA1NSwgCisgICAgMjQwNjEsIDI0MDY1LCAyNDA3MSwgMjQwNzUsIDI0MDgxLCAyNDA4NSwgMjQwODksIDI0MDkzLCAyNDA5NywgMjQxMDEsIAorICAgIDI0MTA2LCAyNDExMCwgMjQxMTQsIDI0MTE4LCAyNDEyMiwgMjQxMjYsIDI0MTMwLCAyNDEzNCwgMjQxMzgsIDI0MTQyLCAKKyAgICAyNDE0NiwgMjQxNTIsIDI0MTU4LCAyNDE2NCwgMjQxNzAsIDI0MTc2LCAyNDE4MSwgMjQxODcsIDI0MTkzLCAyNDE5OSwgCisgICAgMjQyMDMsIDI0MjA3LCAyNDIxMSwgMjQyMTUsIDI0MjE5LCAyNDIyMywgMjQyMjcsIDI0MjMxLCAyNDIzNSwgMjQyMzksIAorICAgIDI0MjQzLCAyNDI0NywgMjQyNTEsIDI0MjU2LCAyNDI2MSwgMjQyNjYsIDI0MjcwLCAyNDI3NCwgMjQyNzgsIDI0MjgyLCAKKyAgICAyNDI4NiwgMjQyOTAsIDI0Mjk0LCAyNDI5OCwgMjQzMDIsIDI0MzA2LCAyNDMxMiwgMjQzMTgsIDI0MzI0LCAyNDMzMCwgCisgICAgMjQzMzYsIDI0MzQyLCAyNDM0OCwgMjQzNTQsIDI0MzYwLCAyNDM2NCwgMjQzNjgsIDI0MzcyLCAyNDM3NiwgMjQzODAsIAorICAgIDI0Mzg0LCAyNDM4OCwgMjQzOTQsIDI0NDAwLCAyNDQwNiwgMjQ0MTIsIDI0NDE4LCAyNDQyNCwgMjQ0MzAsIDI0NDM2LCAKKyAgICAyNDQ0MiwgMjQ0NDcsIDI0NDUyLCAyNDQ1NywgMjQ0NjIsIDI0NDY4LCAyNDQ3NCwgMjQ0ODAsIDI0NDg2LCAyNDQ5MiwgCisgICAgMjQ0OTgsIDI0NTA0LCAyNDUwOSwgMjQ1MTUsIDI0NTIxLCAyNDUyNywgMjQ1MzIsIDI0NTM4LCAyNDU0NCwgMjQ1NTAsIAorICAgIDI0NTU1LCAyNDU2MCwgMjQ1NjUsIDI0NTcwLCAyNDU3NSwgMjQ1ODAsIDI0NTg1LCAyNDU5MCwgMjQ1OTUsIDI0NjAwLCAKKyAgICAyNDYwNSwgMjQ2MTAsIDI0NjE0LCAyNDYxOSwgMjQ2MjQsIDI0NjI5LCAyNDYzNCwgMjQ2MzksIDI0NjQ0LCAyNDY0OSwgCisgICAgMjQ2NTQsIDI0NjU5LCAyNDY2NCwgMjQ2NjksIDI0Njc0LCAyNDY3OSwgMjQ2ODQsIDI0Njg5LCAyNDY5NCwgMjQ2OTksIAorICAgIDI0NzA0LCAyNDcwOSwgMjQ3MTQsIDI0NzE5LCAyNDcyNCwgMjQ3MjksIDI0NzM0LCAyNDczOSwgMjQ3NDQsIDI0NzQ5LCAKKyAgICAyNDc1NCwgMjQ3NTksIDI0NzYzLCAyNDc2OCwgMjQ3NzMsIDI0Nzc4LCAyNDc4MywgMjQ3ODgsIDI0NzkzLCAyNDc5OCwgCisgICAgMjQ4MDMsIDI0ODA4LCAyNDgxMywgMjQ4MTgsIDI0ODIzLCAyNDgyOCwgMjQ4MzMsIDI0ODM4LCAyNDg0MywgMjQ4NDgsIAorICAgIDI0ODUzLCAyNDg1OCwgMjQ4NjMsIDI0ODY4LCAyNDg3MywgMjQ4NzgsIDI0ODgzLCAyNDg4OCwgMjQ4OTIsIDI0ODk3LCAKKyAgICAyNDkwMiwgMjQ5MDcsIDI0OTEyLCAyNDkxNywgMjQ5MjEsIDI0OTI2LCAyNDkzMSwgMjQ5MzYsIDI0OTQxLCAyNDk0NiwgCisgICAgMjQ5NTAsIDI0OTU1LCAyNDk2MSwgMjQ5NjYsIDI0OTcxLCAyNDk3NiwgMjQ5ODEsIDI0OTg3LCAyNDk5MiwgMjQ5OTcsIAorICAgIDI1MDAyLCAyNTAwNywgMjUwMTIsIDI1MDE3LCAyNTAyMiwgMjUwMjcsIDI1MDMyLCAyNTAzNywgMjUwNDIsIDI1MDQ3LCAKKyAgICAyNTA1MiwgMjUwNTcsIDI1MDYyLCAyNTA2NywgMjUwNzIsIDI1MDc3LCAyNTA4MiwgMjUwODcsIDI1MDkyLCAyNTA5NywgCisgICAgMjUxMDIsIDI1MTA3LCAyNTExMiwgMjUxMTcsIDI1MTIyLCAyNTEyNywgMjUxMzIsIDI1MTM3LCAyNTE0MiwgMjUxNDcsIAorICAgIDI1MTUyLCAyNTE1NywgMjUxNjIsIDI1MTY3LCAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTIsIDI1MTk3LCAKKyAgICAyNTIwMiwgMjUyMDcsIDI1MjEzLCAyNTIxOCwgMjUyMjMsIDI1MjI4LCAyNTIzMywgMjUyMzgsIDI1MjQzLCAyNTI0OCwgCisgICAgMjUyNTMsIDI1MjU4LCAyNTI2MywgMjUyNjgsIDI1MjcyLCAyNTI3NywgMjUyODIsIDI1Mjg3LCAyNTI5MiwgMjUyOTcsIAorICAgIDI1MzAyLCAyNTMwNywgMjUzMTIsIDI1MzE3LCAyNTMyMiwgMjUzMjcsIDI1MzMyLCAyNTMzNywgMjUzNDIsIDI1MzQ3LCAKKyAgICAyNTM1MiwgMjUzNTcsIDI1MzYyLCAyNTM2NywgMjUzNzIsIDI1Mzc3LCAyNTM4MiwgMjUzODcsIDI1MzkyLCAyNTM5NywgCisgICAgMjU0MDIsIDI1NDA4LCAyNTQxMiwgMjU0MTYsIDI1NDIwLCAyNTQyNCwgMjU0MjgsIDI1NDMyLCAyNTQzNiwgMjU0NDAsIAorICAgIDI1NDQ2LCAyNTQ1MiwgMjU0NTgsIDI1NDY0LCAyNTQ3MCwgMjU0NzYsIDI1NDgyLCAyNTQ4OSwgMjU0OTUsIDI1NTAwLCAKKyAgICAyNTUwNSwgMjU1MTAsIDI1NTE1LCAyNTUyMCwgMjU1MjUsIDI1NTMwLCAyNTUzNSwgMjU1NDAsIDI1NTQ1LCAyNTU1MCwgCisgICAgMjU1NTUsIDI1NTYwLCAyNTU2NSwgMjU1NzAsIDI1NTc1LCAyNTU4MCwgMjU1ODUsIDI1NTkwLCAyNTU5NSwgMjU2MDAsIAorICAgIDI1NjA1LCAyNTYxMCwgMjU2MTUsIDI1NjIwLCAyNTYyNSwgMjU2MzAsIDI1NjM1LCAwLCAwLCAwLCAyNTY0MiwgMjU2NTIsIAorICAgIDI1NjU2LCAyNTY2MywgMjU2NjcsIDI1NjcxLCAyNTY3NSwgMjU2ODMsIDI1Njg3LCAyNTY5MiwgMjU2OTcsIDI1NzAyLCAKKyAgICAyNTcwNiwgMjU3MTEsIDI1NzE2LCAyNTcxOSwgMjU3MjMsIDI1NzI3LCAyNTczNiwgMjU3NDAsIDI1NzQ0LCAyNTc1MCwgCisgICAgMjU3NTQsIDI1NzU4LCAyNTc2NiwgMjU3NzAsIDI1Nzc4LCAyNTc4NCwgMjU3OTAsIDI1Nzk2LCAyNTgwMiwgMjU4MTIsIAorICAgIDI1ODE4LCAyNTgyMiwgMjU4MzEsIDI1ODM0LCAyNTg0MCwgMjU4NDQsIDI1ODUwLCAyNTg1NSwgMjU4NjEsIDI1ODY5LCAKKyAgICAyNTg3NSwgMjU4ODEsIDI1ODg5LCAyNTg5NSwgMjU4OTksIDI1OTAzLCAyNTkxMywgMjU5MTksIDI1OTIzLCAyNTkzMywgCisgICAgMjU5MzksIDI1OTQzLCAyNTk0NywgMjU5NTQsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTgwLCAyNTk4NCwgMjU5ODgsIAorICAgIDI1OTkyLCAyNjAwMCwgMjYwMDcsIDI2MDExLCAyNjAxNSwgMjYwMTksIDI2MDIzLCAyNjAyNywgMjYwMzEsIDI2MDM1LCAKKyAgICAyNjAzOSwgMjYwNDMsIDI2MDQ3LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzAsIDI2MDc0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjA3OCwgMjYwODIsIDI2MDg2LCAyNjA5MCwgMjYwOTQsIAorICAgIDI2MDk5LCAyNjEwNCwgMjYxMDksIDI2MTE0LCAyNjExOCwgMjYxMjIsIDI2MTI3LCAyNjEzMSwgMCwgMjYxMzUsIDI2MTQwLCAKKyAgICAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1OCwgMjYxNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2MTY4LCAyNjE3MiwgMjYxNzYsIDI2MTgwLCAyNjE4NCwgMjYxODksIDI2MTk0LCAyNjE5OSwgMjYyMDQsIDI2MjA4LCAKKyAgICAyNjIxMiwgMjYyMTcsIDI2MjIxLCAyNjIyNSwgMjYyMjksIDI2MjM0LCAyNjIzOSwgMjYyNDMsIDI2MjQ3LCAyNjI1MiwgCisgICAgMjYyNTcsIDI2MjYyLCAyNjI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyNzMsIDI2Mjc3LCAyNjI4MSwgCisgICAgMjYyODUsIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTMsIDI2MzE3LCAyNjMyMiwgMjYzMjYsIAorICAgIDI2MzMwLCAyNjMzNCwgMjYzMzksIDI2MzQ0LCAyNjM0OCwgMjYzNTIsIDI2MzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNjM2MiwgMjYzNjYsIDI2MzcwLCAyNjM3NCwgMjYzNzgsIDI2MzgzLCAyNjM4OCwgMjYzOTMsIAorICAgIDI2Mzk4LCAyNjQwMiwgMjY0MDYsIDI2NDExLCAyNjQxNSwgMCwgMjY0MTksIDI2NDI0LCAyNjQyOSwgMCwgMjY0MzMsIAorICAgIDI2NDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQ0MywgMjY0NDYsIDI2NDUwLCAyNjQ1NCwgCisgICAgMjY0NTgsIDI2NDYyLCAyNjQ2NiwgMjY0NzAsIDI2NDc0LCAyNjQ3OCwgMjY0ODIsIDI2NDg2LCAyNjQ5MCwgMjY0OTQsIAorICAgIDI2NDk4LCAyNjUwMiwgMjY1MDYsIDI2NTEwLCAyNjUxMywgMjY1MTcsIDI2NTIxLCAyNjUyNSwgMjY1MjksIDI2NTMzLCAKKyAgICAyNjUzNywgMjY1NDEsIDI2NTQ1LCAyNjU0OSwgMjY1NTMsIDI2NTU3LCAyNjU2MSwgMjY1NjUsIDI2NTY4LCAyNjU3MSwgCisgICAgMjY1NzUsIDI2NTc5LCAyNjU4NSwgMjY1OTEsIDI2NTk3LCAyNjYwMywgMjY2MDksIDI2NjE1LCAyNjYyMSwgMjY2MjcsIAorICAgIDI2NjMzLCAyNjYzOSwgMjY2NDUsIDI2NjUxLCAyNjY1NywgMjY2NjMsIDI2NjcyLCAyNjY4MSwgMjY2ODcsIDI2NjkzLCAKKyAgICAyNjY5OSwgMjY3MDQsIDI2NzA4LCAyNjcxMywgMjY3MTgsIDI2NzIzLCAyNjcyNywgMjY3MzIsIDI2NzM3LCAyNjc0MiwgCisgICAgMjY3NDYsIDI2NzUxLCAyNjc1NSwgMjY3NjAsIDI2NzY1LCAyNjc3MCwgMjY3NzUsIDI2Nzc5LCAyNjc4MywgMjY3ODcsIAorICAgIDI2NzkxLCAyNjc5NSwgMjY3OTksIDI2ODAzLCAyNjgwNywgMjY4MTEsIDI2ODE1LCAyNjgyMSwgMjY4MjUsIDI2ODI5LCAKKyAgICAyNjgzMywgMjY4MzcsIDI2ODQxLCAyNjg0OSwgMjY4NTUsIDI2ODU5LCAyNjg2NSwgMjY4NjksIDI2ODc1LCAyNjg3OSwgMCwgCisgICAgMCwgMjY4ODMsIDI2ODg3LCAyNjg5MCwgMjY4OTMsIDI2ODk2LCAyNjg5OSwgMjY5MDIsIDI2OTA1LCAyNjkwOCwgMjY5MTEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTE0LCAyNjkyMiwgMjY5MzAsIDI2OTM4LCAyNjk0NiwgMjY5NTQsIDI2OTYyLCAyNjk3MCwgCisgICAgMjY5NzgsIDI2OTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk5NCwgMjY5OTcsIDI3MDAwLCAyNzAwMywgMjcwMDgsIDI3MDExLCAKKyAgICAyNzAxNiwgMjcwMjMsIDI3MDMxLCAyNzAzNiwgMjcwNDMsIDI3MDQ2LCAyNzA1MywgMjcwNjAsIDI3MDY3LCAwLCAyNzA3MSwgCisgICAgMjcwNzUsIDI3MDc4LCAyNzA4MSwgMjcwODQsIDI3MDg3LCAyNzA5MCwgMjcwOTMsIDI3MDk2LCAyNzA5OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjcxMDIsIDI3MTA1LCAyNzEwOCwgMjcxMTEsIDI3MTE0LCAyNzExNywgMjcxMjEsIDI3MTI1LCAyNzEyOSwgCisgICAgMjcxMzIsIDI3MTM2LCAyNzE0MCwgMjcxNDMsIDI3MTQ3LCAyNzE1MSwgMjcxNTQsIDI3MTU4LCAyNzE2MSwgMjcxNjUsIAorICAgIDI3MTY5LCAyNzE3MywgMjcxNzcsIDI3MTgxLCAyNzE4NCwgMjcxODcsIDI3MTkxLCAyNzE5NSwgMjcxOTgsIDI3MjAyLCAKKyAgICAyNzIwNiwgMjcyMTAsIDI3MjE0LCAyNzIxOCwgMjcyMjIsIDI3MjI2LCAyNzIzMCwgMjcyMzcsIDI3MjQyLCAyNzI0NywgCisgICAgMjcyNTIsIDI3MjU3LCAyNzI2MywgMjcyNjksIDI3Mjc1LCAyNzI4MSwgMjcyODYsIDI3MjkyLCAyNzI5OCwgMjczMDMsIAorICAgIDI3MzA5LCAyNzMxNSwgMjczMjEsIDI3MzI3LCAyNzMzMywgMjczMzgsIDI3MzQ0LCAyNzM0OSwgMjczNTUsIDI3MzYxLCAKKyAgICAyNzM2NywgMjczNzMsIDI3Mzc5LCAyNzM4NCwgMjczODksIDI3Mzk1LCAyNzQwMSwgMjc0MDYsIDI3NDEyLCAyNzQxNywgCisgICAgMjc0MjMsIDI3NDI4LCAyNzQzMywgMjc0MzksIDI3NDQ1LCAyNzQ1MSwgMjc0NTcsIDI3NDYzLCAyNzQ2OSwgMjc0NzUsIAorICAgIDI3NDgxLCAyNzQ4NywgMjc0OTMsIDI3NDk5LCAyNzUwNSwgMjc1MTAsIDI3NTE1LCAyNzUyMCwgMjc1MjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI3NTMyLCAyNzU0MSwgMjc1NTAsIDI3NTU4LCAyNzU2NiwgMjc1NzYsIDI3NTg0LCAyNzU5MywgCisgICAgMjc2MDAsIDI3NjA3LCAyNzYxNCwgMjc2MjIsIDI3NjMwLCAyNzYzOCwgMjc2NDYsIDI3NjU0LCAyNzY2MiwgMjc2NzAsIAorICAgIDI3Njc4LCAyNzY4NSwgMjc2OTMsIDI3NzAxLCAyNzcwOSwgMjc3MTcsIDI3NzI1LCAyNzczNSwgMjc3NDUsIDI3NzU1LCAKKyAgICAyNzc2NSwgMjc3NzUsIDI3Nzg1LCAyNzc5NSwgMjc4MDUsIDI3ODE1LCAyNzgyNSwgMjc4MzUsIDI3ODQ1LCAyNzg1NSwgCisgICAgMjc4NjUsIDI3ODczLCAyNzg4MSwgMjc4OTEsIDI3ODk5LCAwLCAwLCAwLCAwLCAwLCAyNzkwOSwgMjc5MTMsIDI3OTE3LCAKKyAgICAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQxLCAyNzk0NSwgMjc5NDksIDI3OTUzLCAyNzk1NywgCisgICAgMjc5NjEsIDI3OTY1LCAyNzk2OSwgMjc5NzMsIDI3OTc3LCAyNzk4MSwgMjc5ODUsIDI3OTg5LCAyNzk5MywgMjc5OTcsIAorICAgIDI4MDAxLCAyODAwNywgMjgwMTEsIDI4MDE3LCAyODAyMSwgMjgwMjcsIDI4MDMxLCAyODAzNywgMjgwNDEsIDI4MDQ1LCAKKyAgICAyODA0OSwgMjgwNTMsIDI4MDU3LCAyODA2MSwgMjgwNjcsIDI4MDczLCAyODA3OSwgMjgwODUsIDI4MDkwLCAyODA5NiwgCisgICAgMjgxMDIsIDI4MTA4LCAyODExNCwgMjgxMjAsIDI4MTI2LCAyODEzMywgMjgxMzksIDI4MTQ0LCAyODE0OSwgMjgxNTMsIAorICAgIDI4MTU3LCAyODE2MSwgMjgxNjUsIDI4MTY5LCAyODE3MywgMjgxNzcsIDI4MTgzLCAyODE4OSwgMjgxOTUsIDI4MjAwLCAKKyAgICAyODIwNywgMjgyMTIsIDI4MjE3LCAyODIyMywgMjgyMjgsIDI4MjM1LCAyODI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjgyNDksIDI4MjU1LCAyODI1OSwgMjgyNjQsIDI4MjY5LCAyODI3NCwgMjgyNzksIDI4Mjg0LCAyODI4OSwgCisgICAgMjgyOTQsIDI4Mjk5LCAyODMwNCwgMjgzMDksIDI4MzE0LCAyODMxOSwgMjgzMjQsIDI4MzI4LCAyODMzMiwgMjgzMzcsIAorICAgIDI4MzQyLCAyODM0NywgMjgzNTEsIDI4MzU1LCAyODM1OSwgMjgzNjQsIDI4MzY5LCAyODM3NCwgMjgzNzksIDI4MzgzLCAwLCAKKyAgICAwLCAwLCAyODM4NywgMjgzOTIsIDI4Mzk3LCAyODQwMiwgMjg0MDgsIDI4NDE0LCAyODQyMCwgMjg0MjYsIDI4NDMxLCAKKyAgICAyODQzNiwgMjg0NDIsIDI4NDQ4LCAwLCAwLCAwLCAwLCAyODQ1NSwgMjg0NjAsIDI4NDY2LCAyODQ3MiwgMjg0NzgsIAorICAgIDI4NDgzLCAyODQ4OCwgMjg0OTMsIDI4NDk4LCAyODUwNCwgMjg1MDksIDI4NTE0LCAwLCAwLCAwLCAwLCAyODUxOSwgMCwgMCwgCisgICAgMCwgMjg1MjQsIDI4NTI5LCAyODUzNCwgMjg1MzksIDI4NTQzLCAyODU0NywgMjg1NTEsIDI4NTU1LCAyODU1OSwgMjg1NjMsIAorICAgIDI4NTY3LCAyODU3MSwgMjg1NzUsIDI4NTgwLCAyODU4NiwgMjg1OTIsIDI4NTk4LCAyODYwMywgMjg2MDgsIDI4NjE0LCAKKyAgICAyODYyMCwgMjg2MjYsIDI4NjMxLCAyODYzNywgMjg2NDIsIDI4NjQ4LCAyODY1NCwgMjg2NTksIDI4NjY1LCAyODY3MSwgCisgICAgMjg2NzcsIDI4NjgyLCAyODY4NywgMjg2OTIsIDI4Njk4LCAyODcwNCwgMjg3MDksIDI4NzE1LCAyODcyMCwgMjg3MjYsIAorICAgIDI4NzMxLCAyODczNywgMCwgMCwgMjg3NDMsIDI4NzQ5LCAyODc1NSwgMjg3NjEsIDI4NzY3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyODc3MywgMjg3ODAsIDI4Nzg3LCAyODc5MywgMjg4MDAsIDI4ODA3LCAyODgxMywgMjg4MjAsIAorICAgIDI4ODI3LCAyODgzNCwgMjg4NDAsIDI4ODQ2LCAyODg1MywgMjg4NTksIDI4ODY1LCAyODg3MiwgMjg4NzksIDI4ODg1LCAKKyAgICAyODg5MiwgMjg4OTksIDI4OTA1LCAyODkxMSwgMjg5MTgsIDI4OTI0LCAyODkzMCwgMjg5MzcsIDI4OTQzLCAyODk1MCwgCisgICAgMjg5NTcsIDI4OTY0LCAyODk3MSwgMjg5NzgsIDI4OTg1LCAyODk5MSwgMjg5OTgsIDI5MDA1LCAyOTAxMSwgMjkwMTgsIAorICAgIDI5MDI1LCAyOTAzMiwgMjkwMzksIDI5MDQ2LCAyOTA1MywgMjkwNjAsIDAsIDAsIDAsIDAsIDI5MDY3LCAyOTA3NSwgCisgICAgMjkwODIsIDI5MDg5LCAyOTA5NSwgMjkxMDIsIDI5MTA4LCAyOTExNSwgMjkxMjEsIDI5MTI4LCAyOTEzNSwgMjkxNDIsIAorICAgIDI5MTQ5LCAyOTE1NiwgMjkxNjMsIDI5MTcwLCAyOTE3NywgMjkxODQsIDI5MTkxLCAyOTE5OCwgMjkyMDUsIDI5MjExLCAKKyAgICAyOTIxOCwgMjkyMjUsIDI5MjMyLCAyOTIzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkyNDQsIDI5MjUwLCAyOTI1NSwgMjkyNjAsIAorICAgIDI5MjY1LCAyOTI3MCwgMjkyNzUsIDI5MjgwLCAyOTI4NSwgMjkyOTAsIDI5Mjk1LCAwLCAwLCAwLCAyOTMwMSwgMjkzMDcsIAorICAgIDI5MzEzLCAyOTMxNywgMjkzMjMsIDI5MzI5LCAyOTMzNSwgMjkzNDEsIDI5MzQ3LCAyOTM1MywgMjkzNTksIDI5MzY1LCAKKyAgICAyOTM3MSwgMjkzNzcsIDI5MzgzLCAyOTM4OSwgMjkzOTUsIDI5NDAxLCAyOTQwNywgMjk0MTEsIDI5NDE3LCAyOTQyMywgCisgICAgMjk0MjksIDI5NDM1LCAyOTQ0MSwgMjk0NDcsIDI5NDUzLCAyOTQ1OSwgMjk0NjUsIDI5NDcxLCAyOTQ3NywgMjk0ODMsIAorICAgIDI5NDg5LCAyOTQ5NSwgMjk1MDEsIDI5NTA1LCAyOTUxMCwgMjk1MTUsIDI5NTIwLCAyOTUyNCwgMjk1MjksIDI5NTMzLCAKKyAgICAyOTUzOCwgMjk1NDMsIDI5NTQ4LCAyOTU1MiwgMjk1NTcsIDI5NTYyLCAyOTU2NywgMjk1NzIsIDI5NTc3LCAyOTU4MSwgCisgICAgMjk1ODUsIDI5NTkwLCAyOTU5NSwgMjk1OTksIDI5NjAzLCAyOTYwNywgMjk2MTIsIDI5NjE3LCAyOTYyMiwgMjk2MjcsIDAsIAorICAgIDAsIDI5NjMzLCAyOTYzNywgMjk2NDQsIDI5NjQ5LCAyOTY1NSwgMjk2NjEsIDI5NjY2LCAyOTY3MiwgMjk2NzgsIDI5NjgzLCAKKyAgICAyOTY4OSwgMjk2OTUsIDI5NzAxLCAyOTcwNiwgMjk3MTIsIDI5NzE3LCAyOTcyMiwgMjk3MjgsIDI5NzMzLCAyOTczOSwgCisgICAgMjk3NDQsIDI5NzUwLCAyOTc1NiwgMjk3NjIsIDI5NzY4LCAyOTc3MiwgMjk3NzcsIDI5NzgyLCAyOTc4OCwgMjk3OTQsIAorICAgIDI5Nzk5LCAyOTgwNSwgMjk4MTEsIDI5ODE1LCAyOTgyMCwgMjk4MjUsIDI5ODI5LCAyOTgzNCwgMjk4MzksIDI5ODQ0LCAKKyAgICAyOTg0OSwgMjk4NTUsIDI5ODYxLCAyOTg2NiwgMjk4NzEsIDI5ODc2LCAyOTg4MCwgMjk4ODUsIDI5ODg5LCAyOTg5NCwgCisgICAgMjk4OTgsIDI5OTAzLCAyOTkwOCwgMjk5MTMsIDI5OTE4LCAyOTkyNCwgMjk5MzAsIDI5OTM3LCAyOTk0NywgMjk5NTYsIAorICAgIDI5OTYzLCAyOTk2OSwgMjk5NzksIDI5OTg0LCAyOTk5MCwgMCwgMjk5OTUsIDMwMDAwLCAzMDAwNSwgMzAwMTMsIDMwMDE5LCAKKyAgICAzMDAyNywgMzAwMzIsIDMwMDM4LCAzMDA0NCwgMzAwNTAsIDMwMDU1LCAzMDA2MSwgMzAwNjYsIDMwMDczLCAzMDA3OSwgCisgICAgMzAwODQsIDMwMDkwLCAzMDA5NiwgMzAxMDIsIDMwMTA5LCAzMDExNiwgMzAxMjMsIDMwMTI4LCAzMDEzMywgMzAxNDAsIAorICAgIDMwMTQ3LCAzMDE1NCwgMzAxNjEsIDMwMTY4LCAwLCAwLCAzMDE3NSwgMzAxODIsIDMwMTg5LCAzMDE5NSwgMzAyMDEsIAorICAgIDMwMjA3LCAzMDIxMywgMzAyMTksIDMwMjI1LCAzMDIzMSwgMzAyMzcsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMjQzLCAzMDI0OSwgCisgICAgMzAyNTQsIDMwMjU5LCAzMDI2NCwgMzAyNjksIDMwMjc0LCAzMDI3OSwgMzAyODQsIDMwMjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDI5NCwgMzAyOTksIDMwMzA0LCAzMDMwOSwgMzAzMTQsIDMwMzE5LCAzMDMyNCwgMzAzMzMsIDMwMzQwLCAzMDM0NSwgCisgICAgMzAzNTAsIDMwMzU1LCAzMDM2MCwgMzAzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxNTU5LCA3MTU2NiwgNzE1NzQsIDcxNTgyLCAKLSAgICA3MTU4OSwgNzE1OTcsIDcxNjA0LCA3MTYxMCwgNzE2MTYsIDcxNjIzLCA3MTYyOSwgNzE2MzUsIDcxNjQxLCA3MTY0OCwgCi0gICAgNzE2NTUsIDcxNjYyLCA3MTY2OSwgNzE2NzYsIDcxNjgzLCA3MTY5MCwgNzE2OTcsIDcxNzA0LCA3MTcxMSwgNzE3MTgsIAotICAgIDcxNzI1LCA3MTczMiwgNzE3MzksIDcxNzQ1LCA3MTc1MiwgNzE3NTksIDcxNzY2LCA3MTc3MywgNzE3ODAsIDcxNzg3LCAKLSAgICA3MTc5NCwgNzE4MDEsIDcxODA4LCA3MTgxNSwgNzE4MjIsIDcxODI5LCA3MTgzNiwgNzE4NDMsIDcxODUwLCA3MTg1NywgCi0gICAgNzE4NjQsIDcxODcxLCA3MTg3OSwgNzE4ODcsIDcxODk1LCA3MTkwMywgMCwgMCwgMCwgMCwgNzE5MTEsIDcxOTIwLCAKLSAgICA3MTkyOSwgNzE5MzgsIDcxOTQ3LCA3MTk1NiwgNzE5NjUsIDcxOTcyLCA3MTk3OSwgNzE5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcxOTkzLCA3MTk5NywgNzIwMDIsIDcyMDA3LCA3MjAxMiwgNzIwMTcsIDcyMDIyLCA3MjAyNywgNzIwMzIsIDcyMDM3LCAKLSAgICA3MjA0MiwgNzIwNDcsIDcyMDUxLCA3MjA1NSwgNzIwNjAsIDcyMDY1LCA3MjA2OSwgNzIwNzQsIDcyMDc5LCA3MjA4NCwgCi0gICAgNzIwODksIDcyMDk0LCA3MjA5OSwgNzIxMDQsIDcyMTA4LCA3MjExMiwgNzIxMTcsIDcyMTIyLCA3MjEyNywgNzIxMzEsIAotICAgIDcyMTM1LCA3MjEzOSwgNzIxNDMsIDcyMTQ3LCA3MjE1MSwgNzIxNTYsIDcyMTYxLCA3MjE2NiwgNzIxNzEsIDcyMTc2LCAKLSAgICA3MjE4MywgNzIxODksIDcyMTk0LCA3MjE5OSwgNzIyMDQsIDcyMjA5LCA3MjIxNSwgNzIyMjIsIDcyMjI4LCA3MjIzNSwgCi0gICAgNzIyNDEsIDcyMjQ3LCA3MjI1MiwgNzIyNTksIDcyMjY1LCA3MjI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIyNzYsIAotICAgIDcyMjgwLCA3MjI4NCwgNzIyODcsIDcyMjkxLCA3MjI5NCwgNzIyOTgsIDcyMzAxLCA3MjMwNSwgNzIzMDksIDcyMzE0LCAKLSAgICA3MjMxOCwgNzIzMjMsIDcyMzI2LCA3MjMzMCwgNzIzMzQsIDcyMzM3LCA3MjM0MSwgNzIzNDUsIDcyMzQ4LCA3MjM1MiwgCi0gICAgNzIzNTYsIDcyMzYwLCA3MjM2NCwgNzIzNjgsIDcyMzcyLCA3MjM3NiwgNzIzODAsIDcyMzg0LCA3MjM4OCwgNzIzOTIsIAotICAgIDcyMzk2LCA3MjQwMCwgNzI0MDQsIDcyNDA4LCA3MjQxMiwgNzI0MTYsIDcyNDIwLCA3MjQyMywgNzI0MjYsIDcyNDMwLCAKLSAgICA3MjQzNCwgNzI0MzgsIDcyNDQxLCA3MjQ0NCwgNzI0NDcsIDcyNDUxLCA3MjQ1NSwgNzI0NTksIDcyNDYzLCA3MjQ2NywgCi0gICAgNzI0NzAsIDcyNDc0LCA3MjQ4MCwgNzI0ODUsIDcyNDg5LCA3MjQ5NCwgNzI0OTgsIDcyNTAzLCA3MjUwOCwgNzI1MTQsIAotICAgIDcyNTE5LCA3MjUyNSwgNzI1MjksIDcyNTM0LCA3MjUzOSwgNzI1NDMsIDcyNTQ4LCA3MjU1MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzI1NTcsIDcyNTYwLCA3MjU2NCwgNzI1NjgsIDcyNTcxLCA3MjU3NCwgNzI1NzcsIDcyNTgwLCA3MjU4MywgCi0gICAgNzI1ODYsIDcyNTg5LCA3MjU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgNzI1OTUsIDcyNjAwLCA3MjYwNCwgNzI2MDgsIDcyNjEyLCAKLSAgICA3MjYxNiwgNzI2MjAsIDcyNjI0LCA3MjYyOCwgNzI2MzIsIDcyNjM2LCA3MjY0MCwgNzI2NDQsIDcyNjQ4LCA3MjY1MiwgCi0gICAgNzI2NTYsIDcyNjYwLCA3MjY2NSwgNzI2NzAsIDcyNjc2LCA3MjY4MiwgNzI2ODksIDcyNjk0LCA3MjY5OSwgNzI3MDUsIAotICAgIDcyNzA5LCA3MjcxNCwgNzI3MTcsIDAsIDAsIDAsIDAsIDcyNzIwLCA3MjcyNywgNzI3MzMsIDcyNzM5LCA3Mjc0NSwgCi0gICAgNzI3NTEsIDcyNzU3LCA3Mjc2MywgNzI3NjksIDcyNzc1LCA3Mjc4MSwgNzI3ODcsIDcyNzk0LCA3MjgwMSwgNzI4MDgsIAotICAgIDcyODE1LCA3MjgyMiwgNzI4MjksIDcyODM2LCA3Mjg0MywgNzI4NTAsIDcyODU2LCA3Mjg2MiwgNzI4NjksIDcyODc1LCAKLSAgICA3Mjg4MiwgNzI4ODksIDcyODk1LCA3MjkwMSwgNzI5MDgsIDcyOTE1LCA3MjkyMiwgNzI5MjgsIDcyOTM1LCA3Mjk0MiwgCi0gICAgNzI5NDgsIDcyOTU1LCA3Mjk2MSwgNzI5NjgsIDcyOTc1LCA3Mjk4MSwgNzI5ODcsIDcyOTk0LCA3MzAwMCwgNzMwMDcsIAotICAgIDczMDE0LCA3MzAyMywgNzMwMzAsIDczMDM3LCA3MzA0MSwgNzMwNDYsIDczMDUxLCA3MzA1NiwgNzMwNjEsIDczMDY1LCAKLSAgICA3MzA2OSwgNzMwNzQsIDczMDc4LCA3MzA4MywgNzMwODgsIDczMDkzLCA3MzA5OCwgNzMxMDIsIDczMTA3LCA3MzExMSwgCi0gICAgNzMxMTYsIDczMTIwLCA3MzEyNSwgNzMxMzAsIDczMTM1LCA3MzE0MCwgNzMxNDQsIDczMTQ5LCA3MzE1NCwgNzMxNTksIAotICAgIDczMTY1LCA3MzE3MCwgNzMxNzYsIDczMTgyLCA3MzE4OCwgNzMxOTUsIDczMjAxLCA3MzIwNywgNzMyMTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczMjE4LCA3MzIyMywgNzMyMjcsIDczMjMxLCA3MzIzNSwgNzMyMzksIDczMjQzLCAKLSAgICA3MzI0NywgNzMyNTEsIDczMjU1LCA3MzI1OSwgNzMyNjMsIDczMjY3LCA3MzI3MSwgNzMyNzUsIDczMjc5LCA3MzI4MywgCi0gICAgNzMyODcsIDczMjkxLCA3MzI5NSwgNzMyOTksIDczMzAzLCA3MzMwNywgNzMzMTEsIDczMzE1LCA3MzMxOSwgNzMzMjMsIAotICAgIDczMzI3LCA3MzMzMSwgNzMzMzUsIDAsIDAsIDAsIDczMzM5LCA3MzM0MywgNzMzNDcsIDczMzUxLCA3MzM1NSwgNzMzNTgsIAotICAgIDczMzY0LCA3MzM2NywgNzMzNzEsIDczMzc0LCA3MzM4MCwgNzMzODYsIDczMzk0LCA3MzM5NywgNzM0MDEsIDczNDA0LCAKLSAgICA3MzQwNywgNzM0MTMsIDczNDE5LCA3MzQyMywgNzM0MjksIDczNDMzLCA3MzQzNywgNzM0NDMsIDczNDQ3LCA3MzQ1MywgCi0gICAgNzM0NTksIDczNDYzLCA3MzQ2NywgNzM0NzMsIDczNDc3LCA3MzQ4MywgNzM0ODksIDczNDkzLCA3MzQ5OSwgNzM1MDMsIAotICAgIDczNTA5LCA3MzUxMiwgNzM1MTUsIDczNTIxLCA3MzUyNSwgNzM1MzEsIDczNTM0LCA3MzUzNywgNzM1NDAsIDczNTQ2LCAKLSAgICA3MzU1MCwgNzM1NTQsIDczNTYwLCA3MzU2NiwgNzM1NzAsIDczNTczLCA3MzU3OSwgNzM1ODQsIDczNTg5LCA3MzU5NCwgCi0gICAgNzM2MDEsIDczNjA2LCA3MzYxMywgNzM2MTgsIDczNjI1LCA3MzYzMCwgNzM2MzYsIDczNjQyLCA3MzY0OCwgNzM2NTEsIAotICAgIDczNjU1LCA3MzY1OSwgNzM2NjQsIDczNjY5LCA3MzY3NCwgNzM2NzksIDczNjg0LCA3MzY4OSwgNzM2OTQsIDczNjk5LCAKLSAgICA3MzcwNiwgNzM3MTEsIDAsIDczNzE4LCA3MzcyMSwgNzM3MjUsIDczNzI4LCA3MzczMSwgNzM3MzQsIDczNzM3LCA3Mzc0MCwgCi0gICAgNzM3NDMsIDczNzQ2LCA3Mzc0OSwgMCwgMCwgMCwgMCwgNzM3NTIsIDczNzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDM3MCwgMzAzNzYsIAorICAgIDMwMzgyLCAzMDM4NiwgMzAzOTAsIDMwMzk0LCAzMDM5OCwgMzA0MDQsIDMwNDA4LCAzMDQxNCwgMzA0MTgsIDMwNDI0LCAKKyAgICAzMDQzMCwgMzA0MzgsIDMwNDQ0LCAzMDQ1MiwgMzA0NTYsIDMwNDYwLCAzMDQ2NCwgMzA0NzAsIDMwNDczLCAzMDQ3OSwgCisgICAgMzA0ODMsIDMwNDg5LCAzMDQ5MywgMzA0OTcsIDMwNTAzLCAzMDUwNywgMzA1MTMsIDMwNTE3LCAzMDUyMywgMzA1MzEsIAorICAgIDMwNTM5LCAzMDU0NywgMzA1NTMsIDMwNTU3LCAzMDU2MywgMzA1NjcsIDMwNTczLCAzMDU3NiwgMzA1NzksIDMwNTg1LCAKKyAgICAzMDU4OSwgMzA1OTUsIDMwNTk4LCAzMDYwMSwgMzA2MDQsIDMwNjA4LCAzMDYxMiwgMzA2MTgsIDMwNjI0LCAzMDYyNywgCisgICAgMzA2MzAsIDMwNjM0LCAzMDYzOSwgMzA2NDQsIDMwNjUxLCAzMDY1NiwgMzA2NjMsIDMwNjcwLCAzMDY3OSwgMzA2ODYsIAorICAgIDMwNjk1LCAzMDcwMCwgMzA3MDcsIDMwNzE0LCAzMDcyMywgMzA3MjgsIDMwNzM1LCAzMDc0MCwgMzA3NDYsIDMwNzUyLCAKKyAgICAzMDc1OCwgMzA3NjQsIDMwNzcwLCAzMDc3NiwgMCwgMCwgMCwgMCwgMzA3ODIsIDMwNzg2LCAzMDc4OSwgMzA3OTIsIAorICAgIDMwNzk1LCAzMDc5OCwgMzA4MDEsIDMwODA0LCAzMDgwNywgMzA4MTAsIDMwODEzLCAzMDgxNiwgMzA4MTksIDMwODIyLCAKKyAgICAzMDgyNywgMzA4MzIsIDMwODM3LCAzMDg0MCwgMzA4NDUsIDMwODUwLCAzMDg1NSwgMzA4NjAsIDMwODY3LCAzMDg3MiwgCisgICAgMzA4NzcsIDMwODgyLCAzMDg4NywgMzA4OTQsIDMwOTAwLCAzMDkwNiwgMzA5MTIsIDMwOTE4LCAzMDkyNCwgMzA5MzMsIAorICAgIDMwOTQyLCAzMDk0OCwgMzA5NTQsIDMwOTYyLCAzMDk3MCwgMzA5NzksIDMwOTg4LCAzMDk5NiwgMzEwMDQsIDMxMDEzLCAKKyAgICAzMTAyMiwgMCwgMCwgMCwgMzEwMzAsIDMxMDM0LCAzMTAzOCwgMzEwNDIsIDMxMDQ1LCAzMTA0OCwgMzEwNTEsIDMxMDU1LCAKKyAgICAzMTA1OCwgMzEwNjEsIDMxMDY1LCAzMTA2OCwgMzEwNzIsIDMxMDc2LCAzMTA4MCwgMzEwODQsIDMxMDg4LCAzMTA5MiwgCisgICAgMzEwOTYsIDMxMTAwLCAzMTEwNCwgMzExMDcsIDMxMTEwLCAzMTExNCwgMzExMTgsIDMxMTIyLCAzMTEyNSwgMzExMjgsIAorICAgIDMxMTMxLCAzMTEzNSwgMzExMzksIDMxMTQyLCAzMTE0NiwgMzExNDksIDMxMTU0LCAzMTE1OSwgMzExNjQsIDMxMTY5LCAKKyAgICAzMTE3NCwgMzExNzksIDMxMTg0LCAzMTE4OSwgMzExOTQsIDMxMTk4LCAzMTIwMiwgMzEyMDgsIDMxMjE1LCAzMTIxOSwgCisgICAgMzEyMjMsIDMxMjI3LCAzMTIzMCwgMzEyMzMsIDMxMjM2LCAzMTIzOSwgMzEyNDIsIDMxMjQ1LCAzMTI0OCwgMzEyNTEsIAorICAgIDMxMjU0LCAzMTI1NywgMzEyNjEsIDMxMjY1LCAzMTI2OSwgMzEyNzQsIDMxMjc4LCAzMTI4MiwgMzEyODgsIDMxMjkyLCAKKyAgICAzMTI5OCwgMzEzMDQsIDMxMzA5LCAzMTMxNiwgMzEzMjAsIDMxMzI2LCAzMTMzMCwgMzEzMzYsIDMxMzQxLCAzMTM0OCwgCisgICAgMzEzNTUsIDMxMzYwLCAzMTM2NywgMzEzNzIsIDMxMzc3LCAzMTM4MSwgMzEzODcsIDMxMzkxLCAzMTM5NywgMzE0MDQsIAorICAgIDMxNDExLCAzMTQxNSwgMzE0MjEsIDMxNDI3LCAzMTQzMSwgMzE0MzcsIDMxNDQyLCAzMTQ0NywgMzE0NTQsIDMxNDU5LCAKKyAgICAzMTQ2NCwgMzE0NjksIDMxNDc0LCAzMTQ3OCwgMzE0ODIsIDMxNDg3LCAzMTQ5MiwgMzE0OTksIDMxNTA1LCAzMTUxMCwgCisgICAgMzE1MTcsIDMxNTIyLCAzMTUyOSwgMzE1MzQsIDMxNTQzLCAzMTU0OSwgMzE1NTUsIDMxNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMTU2MywgMzE1NzIsIDMxNTc5LCAzMTU4NiwgMzE1OTMsIDMxNTk2LCAzMTYwMCwgMzE2MDQsIDMxNjA4LCAKKyAgICAzMTYxMiwgMzE2MTYsIDMxNjIwLCAzMTYyNCwgMzE2MjgsIDMxNjMyLCAzMTYzNiwgMzE2NDAsIDMxNjQ0LCAzMTY0NywgCisgICAgMzE2NTAsIDMxNjU0LCAzMTY1OCwgMzE2NjIsIDMxNjY2LCAzMTY3MCwgMzE2NzQsIDMxNjc3LCAzMTY4MSwgMzE2ODUsIAorICAgIDMxNjg5LCAzMTY5MywgMzE2OTYsIDMxNjk5LCAzMTcwMywgMzE3MDYsIDMxNzEwLCAzMTcxNCwgMzE3MTcsIDMxNzIxLCAKKyAgICAzMTcyNSwgMzE3MjgsIDMxNzMzLCAzMTczOCwgMzE3NDMsIDMxNzQ3LCAzMTc1MSwgMzE3NTYsIDMxNzYwLCAzMTc2NSwgCisgICAgMzE3NjksIDMxNzc0LCAzMTc3OCwgMzE3ODIsIDMxNzg3LCAzMTc5MiwgMzE3OTYsIDMxODAxLCAzMTgwNiwgMzE4MTEsIAorICAgIDMxODE1LCAwLCAwLCAwLCAzMTgxOSwgMzE4MjQsIDMxODMzLCAzMTgzOCwgMzE4NDUsIDMxODUwLCAzMTg1NCwgMzE4NTcsIAorICAgIDMxODYwLCAzMTg2MywgMzE4NjYsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAwLCAwLCAwLCAzMTg4MSwgMzE4ODUsIAorICAgIDMxODg5LCAzMTg5MywgMzE5MDAsIDMxOTA2LCAzMTkxMiwgMzE5MTgsIDMxOTI0LCAzMTkzMCwgMzE5MzYsIDMxOTQyLCAKKyAgICAzMTk0OCwgMzE5NTQsIDMxOTYxLCAzMTk2OCwgMzE5NzUsIDMxOTgyLCAzMTk4OSwgMzE5OTYsIDMyMDAzLCAzMjAxMCwgCisgICAgMzIwMTcsIDMyMDI0LCAzMjAzMSwgMzIwMzgsIDMyMDQ1LCAzMjA1MiwgMzIwNTksIDMyMDY2LCAzMjA3MywgMzIwODAsIAorICAgIDMyMDg3LCAzMjA5NCwgMzIxMDEsIDMyMTA4LCAzMjExNSwgMzIxMjIsIDMyMTI5LCAzMjEzNiwgMzIxNDMsIDMyMTUwLCAKKyAgICAzMjE1NywgMzIxNjQsIDMyMTcyLCAzMjE4MCwgMzIxODgsIDMyMTk0LCAzMjIwMCwgMzIyMDYsIDMyMjE0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyMywgMzIyMzAsIDMyMjM3LCAzMjI0NCwgMzIyNTEsIAorICAgIDMyMjYwLCAzMjI2OSwgMzIyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMjg3LCAzMjI5MiwgMzIyOTcsIDMyMzAyLCAKKyAgICAzMjMwNywgMzIzMTYsIDMyMzI3LCAzMjMzNiwgMzIzNDcsIDMyMzUzLCAzMjM2NiwgMzIzNzIsIDMyMzc5LCAzMjM4NiwgCisgICAgMzIzOTEsIDMyMzk3LCAzMjQwMywgMzI0MTQsIDMyNDIzLCAzMjQzMCwgMzI0MzcsIDMyNDQ2LCAzMjQ1MywgMzI0NjIsIAorICAgIDMyNDcyLCAzMjQ4MiwgMzI0ODksIDMyNDk2LCAzMjUwMywgMzI1MTMsIDMyNTE4LCAzMjUyNiwgMzI1MzIsIDMyNTQwLCAKKyAgICAzMjU0OSwgMzI1NTQsIDMyNTYxLCAzMjU2NywgMzI1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNTc3LCAKKyAgICAzMjU4MiwgMzI1ODgsIDMyNTk1LCAzMjYwMywgMzI2MDksIDMyNjE1LCAzMjYyMSwgMzI2MjYsIDMyNjMzLCAzMjYzOSwgCisgICAgMzI2NDUsIDMyNjUxLCAzMjY1OSwgMzI2NjQsIDMyNjcyLCAzMjY3NywgMzI2ODMsIDMyNjg5LCAzMjY5NiwgMzI3MDQsIAorICAgIDMyNzExLCAzMjcxNywgMzI3MjQsIDMyNzMxLCAzMjczNywgMzI3NDQsIDMyNzUxLCAzMjc1NywgMzI3NjIsIDMyNzY4LCAKKyAgICAzMjc3NiwgMzI3ODQsIDMyNzkwLCAzMjc5NiwgMzI4MDIsIDMyODA4LCAzMjgxNiwgMzI4MjAsIDMyODI2LCAzMjgzMiwgCisgICAgMzI4MzgsIDMyODQ0LCAzMjg1MCwgMzI4NTYsIDMyODYwLCAzMjg2NSwgMzI4NzAsIDMyODc3LCAzMjg4MiwgMzI4ODYsIAorICAgIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA2LCAzMjkxMSwgMzI5MTYsIDMyOTIwLCAzMjkyNCwgMzI5MjksIDMyOTM2LCAKKyAgICAzMjk0MCwgMzI5NDUsIDMyOTUwLCAzMjk1NCwgMzI5NTksIDMyOTYzLCAzMjk2OCwgMzI5NzIsIDMyOTc4LCAzMjk4MywgCisgICAgMzI5OTAsIDMyOTk1LCAzMzAwMCwgMzMwMDQsIDMzMDA5LCAzMzAxNCwgMzMwMjEsIDMzMDI2LCAzMzAzMiwgMzMwMzcsIAorICAgIDMzMDQxLCAzMzA0NiwgMzMwNTAsIDMzMDU1LCAzMzA2MiwgMzMwNjksIDMzMDc0LCAzMzA3OSwgMzMwODMsIDMzMDg5LCAKKyAgICAzMzA5NSwgMzMxMDAsIDMzMTA1LCAzMzExMCwgMzMxMTYsIDMzMTIxLCAzMzEyNywgMzMxMzIsIDMzMTM4LCAzMzE0NCwgCisgICAgMzMxNTAsIDMzMTU3LCAzMzE2NCwgMzMxNzEsIDMzMTc4LCAzMzE4NSwgMzMxOTIsIDMzMTk3LCAzMzIwNSwgMzMyMTQsIAorICAgIDMzMjIzLCAzMzIzMiwgMzMyNDEsIDMzMjUwLCAzMzI1OSwgMzMyNzEsIDMzMjgwLCAzMzI4OSwgMzMyOTgsIDMzMzA1LCAKKyAgICAzMzMxMCwgMzMzMTcsIDMzMzI1LCAzMzMzMywgMzMzNDAsIDMzMzQ3LCAzMzM1NCwgMzMzNjEsIDMzMzY5LCAzMzM3OCwgCisgICAgMzMzODcsIDMzMzk2LCAzMzQwNSwgMzM0MTQsIDMzNDIzLCAzMzQzMiwgMzM0NDEsIDMzNDUwLCAzMzQ1OSwgMzM0NjgsIAorICAgIDMzNDc3LCAzMzQ4NiwgMzM0OTUsIDMzNTAzLCAzMzUxMiwgMzM1MjMsIDMzNTMxLCAzMzU0MCwgMzM1NTEsIDMzNTYwLCAKKyAgICAzMzU2OSwgMzM1NzgsIDMzNTg3LCAzMzU5NSwgMzM2MDQsIDMzNjExLCAzMzYxNiwgMzM2MjQsIDMzNjI5LCAzMzYzNiwgCisgICAgMzM2NDEsIDMzNjUwLCAzMzY1NiwgMzM2NjMsIDMzNjcwLCAzMzY3NSwgMzM2ODAsIDMzNjg4LCAzMzY5NiwgMzM3MDUsIAorICAgIDMzNzE0LCAzMzcxOSwgMzM3MjYsIDMzNzM3LCAzMzc0NSwgMzM3NTQsIDMzNzYwLCAzMzc2NiwgMzM3NzEsIDMzNzc4LCAKKyAgICAzMzc4MywgMzM3OTIsIDMzNzk3LCAzMzgwMiwgMzM4MDcsIDMzODE0LCAzMzgyMSwgMzM4MjYsIDMzODM1LCAzMzg0MywgCisgICAgMzM4NDgsIDMzODUzLCAzMzg2MCwgMzM4NjcsIDMzODcxLCAzMzg3NSwgMzM4NzgsIDMzODgxLCAzMzg4NCwgMzM4ODcsIAorICAgIDMzODkwLCAzMzg5MywgMzM5MDAsIDMzOTAzLCAzMzkwNiwgMzM5MTEsIDMzOTE1LCAzMzkxOSwgMzM5MjMsIDMzOTI3LCAKKyAgICAzMzkzMSwgMzM5NDAsIDMzOTQ2LCAzMzk1MiwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODAsIDMzOTg2LCAzMzk5MywgCisgICAgMzM5OTksIDM0MDA0LCAzNDAxMCwgMzQwMTYsIDM0MDIyLCAzNDAyOSwgMzQwMzUsIDM0MDQzLCAzNDA0OSwgMzQwNTYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDYyLCAzNDA2OSwgCisgICAgMzQwNzYsIDM0MDgxLCAzNDA5MCwgMzQwOTgsIDM0MTA2LCAzNDExMywgMzQxMjAsIDM0MTI3LCAzNDEzNCwgMzQxNDIsIAorICAgIDM0MTUwLCAzNDE2MCwgMzQxNzAsIDM0MTc4LCAzNDE4NiwgMzQxOTQsIDM0MjAyLCAzNDIxMSwgMzQyMjAsIDM0MjI4LCAKKyAgICAzNDIzNiwgMzQyNDUsIDM0MjU0LCAzNDI2NCwgMzQyNzQsIDM0MjgzLCAzNDI5MiwgMzQzMDAsIDM0MzA4LCAzNDMxNiwgCisgICAgMzQzMjQsIDM0MzM0LCAzNDM0NCwgMzQzNTIsIDM0MzYwLCAzNDM2OCwgMzQzNzYsIDM0Mzg0LCAzNDM5MiwgMzQ0MDAsIAorICAgIDM0NDA4LCAzNDQxNiwgMzQ0MjQsIDM0NDMyLCAzNDQ0MCwgMzQ0NDksIDM0NDU4LCAzNDQ2NywgMzQ0NzYsIDM0NDg2LCAKKyAgICAzNDQ5NiwgMzQ1MDMsIDM0NTEwLCAzNDUxOCwgMzQ1MjYsIDM0NTM1LCAzNDU0NCwgMzQ1NTIsIDM0NTYwLCAzNDU3MiwgCisgICAgMzQ1ODQsIDM0NTkzLCAzNDYwMiwgMzQ2MTEsIDM0NjIwLCAzNDYyNywgMzQ2MzQsIDM0NjQyLCAzNDY1MCwgMzQ2NTgsIAorICAgIDM0NjY2LCAzNDY3NCwgMzQ2ODIsIDM0NjkwLCAzNDY5OCwgMzQ3MDcsIDM0NzE2LCAzNDcyNSwgMzQ3MzQsIDM0NzQzLCAKKyAgICAzNDc1MiwgMzQ3NjIsIDM0NzcyLCAzNDc4MiwgMzQ3OTIsIDM0ODAxLCAzNDgxMCwgMzQ4MTcsIDM0ODI0LCAzNDgzMiwgCisgICAgMzQ4NDAsIDM0ODQ4LCAzNDg1NiwgMzQ4NjQsIDM0ODcyLCAzNDg4NCwgMzQ4OTYsIDM0OTA1LCAzNDkxNCwgMzQ5MjIsIAorICAgIDM0OTMwLCAzNDkzOCwgMzQ5NDYsIDM0OTU3LCAzNDk2OCwgMzQ5NzksIDM0OTkwLCAzNTAwMiwgMzUwMTQsIDM1MDIyLCAKKyAgICAzNTAzMCwgMzUwMzgsIDM1MDQ2LCAzNTA1NSwgMzUwNjQsIDM1MDczLCAzNTA4MiwgMzUwOTAsIDM1MDk4LCAzNTEwNiwgCisgICAgMzUxMTQsIDM1MTIyLCAzNTEzMCwgMzUxMzksIDM1MTQ4LCAzNTE1OCwgMzUxNjgsIDM1MTc1LCAzNTE4MiwgMzUxOTAsIAorICAgIDM1MTk4LCAzNTIwNiwgMzUyMTQsIDM1MjIxLCAzNTIyOCwgMzUyMzYsIDM1MjQ0LCAzNTI1MiwgMzUyNjAsIDM1MjY4LCAKKyAgICAzNTI3NiwgMzUyODQsIDM1MjkyLCAzNTMwMCwgMzUzMDgsIDM1MzE2LCAzNTMyNCwgMzUzMzIsIDM1MzQwLCAzNTM0OCwgCisgICAgMzUzNTYsIDM1MzY1LCAzNTM3NCwgMzUzODMsIDM1MzkxLCAzNTQwMCwgMzU0MDksIDM1NDE4LCAzNTQyNywgMzU0MzcsIAorICAgIDM1NDQ2LCAzNTQ1MywgMzU0NTgsIDM1NDY1LCAzNTQ3MiwgMzU0ODAsIDM1NDg4LCAzNTQ5NywgMzU1MDYsIDM1NTE2LCAKKyAgICAzNTUyNiwgMzU1MzcsIDM1NTQ4LCAzNTU1NywgMzU1NjYsIDM1NTc2LCAzNTU4NiwgMzU1OTUsIDM1NjA0LCAzNTYxNCwgCisgICAgMzU2MjQsIDM1NjM1LCAzNTY0NiwgMzU2NTUsIDM1NjY0LCAzNTY3NCwgMzU2ODQsIDM1NjkxLCAzNTY5OCwgMzU3MDYsIAorICAgIDM1NzE0LCAzNTcyMCwgMzU3MjYsIDM1NzM1LCAzNTc0NCwgMzU3NTQsIDM1NzY0LCAzNTc3NSwgMzU3ODYsIDM1Nzk1LCAKKyAgICAzNTgwNCwgMzU4MTQsIDM1ODI0LCAzNTgzMywgMzU4NDIsIDM1ODUwLCAzNTg1OCwgMzU4NjUsIDM1ODcyLCAzNTg4MCwgCisgICAgMzU4ODgsIDM1ODk3LCAzNTkwNiwgMzU5MTYsIDM1OTI2LCAzNTkzNywgMzU5NDgsIDM1OTU3LCAzNTk2NiwgMzU5NzYsIAorICAgIDM1OTg2LCAzNTk5NSwgMzYwMDQsIDM2MDE0LCAzNjAyNCwgMzYwMzUsIDM2MDQ2LCAzNjA1NSwgMzYwNjQsIDM2MDc0LCAKKyAgICAzNjA4NCwgMzYwOTEsIDM2MDk4LCAzNjEwNiwgMzYxMTQsIDM2MTIzLCAzNjEzMiwgMzYxNDIsIDM2MTUyLCAzNjE2MywgCisgICAgMzYxNzQsIDM2MTgzLCAzNjE5MiwgMzYyMDIsIDM2MjEyLCAzNjIyMCwgMzYyMjgsIDM2MjM2LCAzNjI0NCwgMzYyNTMsIAorICAgIDM2MjYyLCAzNjI2OSwgMzYyNzYsIDM2MjgzLCAzNjI5MCwgMzYyOTcsIDM2MzA0LCAzNjMxMiwgMzYzMjAsIDM2MzI4LCAKKyAgICAzNjMzNiwgMzYzNDcsIDM2MzU4LCAzNjM2OSwgMzYzODAsIDM2MzkxLCAzNjQwMiwgMzY0MTAsIDM2NDE4LCAzNjQyOSwgCisgICAgMzY0NDAsIDM2NDUxLCAzNjQ2MiwgMzY0NzMsIDM2NDg0LCAzNjQ5MiwgMzY1MDAsIDM2NTExLCAzNjUyMiwgMzY1MzMsIDAsIAorICAgIDAsIDM2NTQ0LCAzNjU1MiwgMzY1NjAsIDM2NTcxLCAzNjU4MiwgMzY1OTMsIDAsIDAsIDM2NjA0LCAzNjYxMiwgMzY2MjAsIAorICAgIDM2NjMxLCAzNjY0MiwgMzY2NTMsIDM2NjY0LCAzNjY3NSwgMzY2ODYsIDM2Njk0LCAzNjcwMiwgMzY3MTMsIDM2NzI0LCAKKyAgICAzNjczNSwgMzY3NDYsIDM2NzU3LCAzNjc2OCwgMzY3NzYsIDM2Nzg0LCAzNjc5NSwgMzY4MDYsIDM2ODE3LCAzNjgyOCwgCisgICAgMzY4MzksIDM2ODUwLCAzNjg1OCwgMzY4NjYsIDM2ODc3LCAzNjg4OCwgMzY4OTksIDM2OTEwLCAzNjkyMSwgMzY5MzIsIAorICAgIDM2OTQwLCAzNjk0OCwgMzY5NTksIDM2OTcwLCAzNjk4MSwgMCwgMCwgMzY5OTIsIDM3MDAwLCAzNzAwOCwgMzcwMTksIAorICAgIDM3MDMwLCAzNzA0MSwgMCwgMCwgMzcwNTIsIDM3MDYwLCAzNzA2OCwgMzcwNzksIDM3MDkwLCAzNzEwMSwgMzcxMTIsIAorICAgIDM3MTIzLCAwLCAzNzEzNCwgMCwgMzcxNDIsIDAsIDM3MTUzLCAwLCAzNzE2NCwgMzcxNzUsIDM3MTgzLCAzNzE5MSwgCisgICAgMzcyMDIsIDM3MjEzLCAzNzIyNCwgMzcyMzUsIDM3MjQ2LCAzNzI1NywgMzcyNjUsIDM3MjczLCAzNzI4NCwgMzcyOTUsIAorICAgIDM3MzA2LCAzNzMxNywgMzczMjgsIDM3MzM5LCAzNzM0NywgMzczNTUsIDM3MzYzLCAzNzM3MSwgMzczNzksIDM3Mzg3LCAKKyAgICAzNzM5NSwgMzc0MDMsIDM3NDExLCAzNzQxOSwgMzc0MjcsIDM3NDM1LCAzNzQ0MywgMCwgMCwgMzc0NTEsIDM3NDYyLCAKKyAgICAzNzQ3MywgMzc0ODcsIDM3NTAxLCAzNzUxNSwgMzc1MjksIDM3NTQzLCAzNzU1NywgMzc1NjgsIDM3NTc5LCAzNzU5MywgCisgICAgMzc2MDcsIDM3NjIxLCAzNzYzNSwgMzc2NDksIDM3NjYzLCAzNzY3NCwgMzc2ODUsIDM3Njk5LCAzNzcxMywgMzc3MjcsIAorICAgIDM3NzQxLCAzNzc1NSwgMzc3NjksIDM3NzgwLCAzNzc5MSwgMzc4MDUsIDM3ODE5LCAzNzgzMywgMzc4NDcsIDM3ODYxLCAKKyAgICAzNzg3NSwgMzc4ODYsIDM3ODk3LCAzNzkxMSwgMzc5MjUsIDM3OTM5LCAzNzk1MywgMzc5NjcsIDM3OTgxLCAzNzk5MiwgCisgICAgMzgwMDMsIDM4MDE3LCAzODAzMSwgMzgwNDUsIDM4MDU5LCAzODA3MywgMzgwODcsIDM4MDk1LCAzODEwMywgMzgxMTQsIAorICAgIDM4MTIyLCAwLCAzODEzMywgMzgxNDEsIDM4MTUyLCAzODE2MCwgMzgxNjgsIDM4MTc2LCAzODE4NCwgMzgxOTIsIDM4MTk1LCAKKyAgICAzODE5OCwgMzgyMDEsIDM4MjA0LCAzODIxMCwgMzgyMjEsIDM4MjI5LCAwLCAzODI0MCwgMzgyNDgsIDM4MjU5LCAzODI2NywgCisgICAgMzgyNzUsIDM4MjgzLCAzODI5MSwgMzgyOTksIDM4MzA1LCAzODMxMSwgMzgzMTcsIDM4MzI1LCAzODMzMywgMzgzNDQsIDAsIAorICAgIDAsIDM4MzU1LCAzODM2MywgMzgzNzQsIDM4MzgyLCAzODM5MCwgMzgzOTgsIDAsIDM4NDA2LCAzODQxMiwgMzg0MTgsIAorICAgIDM4NDI0LCAzODQzMiwgMzg0NDAsIDM4NDUxLCAzODQ2MiwgMzg0NzAsIDM4NDc4LCAzODQ4NiwgMzg0OTcsIDM4NTA1LCAKKyAgICAzODUxMywgMzg1MjEsIDM4NTI5LCAzODUzNywgMzg1NDMsIDM4NTQ5LCAwLCAwLCAzODU1MiwgMzg1NjMsIDM4NTcxLCAwLCAKKyAgICAzODU4MiwgMzg1OTAsIDM4NjAxLCAzODYwOSwgMzg2MTcsIDM4NjI1LCAzODYzMywgMzg2NDEsIDM4NjQ0LCAwLCAzODY0NywgCisgICAgMzg2NTEsIDM4NjU1LCAzODY1OSwgMzg2NjMsIDM4NjY3LCAzODY3MSwgMzg2NzUsIDM4Njc5LCAzODY4MywgMzg2ODcsIAorICAgIDM4NjkxLCAzODY5NywgMzg3MDMsIDM4NzA5LCAzODcxMiwgMzg3MTUsIDM4NzE3LCAzODcyMSwgMzg3MjUsIDM4NzI5LCAKKyAgICAzODczMywgMzg3MzUsIDM4NzM5LCAzODc0MywgMzg3NDksIDM4NzU1LCAzODc2MiwgMzg3NjksIDM4Nzc0LCAzODc3OSwgCisgICAgMzg3ODUsIDM4NzkxLCAzODc5MywgMzg3OTYsIDM4Nzk4LCAzODgwMiwgMzg4MDYsIDM4ODEwLCAzODgxMywgMzg4MTcsIAorICAgIDM4ODIxLCAzODgyNSwgMzg4MjksIDM4ODMzLCAzODgzOSwgMzg4NDMsIDM4ODQ3LCAzODg1MywgMzg4NTgsIDM4ODY1LCAKKyAgICAzODg2NywgMzg4NzAsIDM4ODc0LCAzODg3OCwgMzg4ODMsIDM4ODg5LCAzODg5MSwgMzg5MDAsIDM4OTA5LCAzODkxMiwgCisgICAgMzg5MTYsIDM4OTE4LCAzODkyMCwgMzg5MjIsIDM4OTI1LCAzODkzMSwgMzg5MzMsIDM4OTM3LCAzODk0MSwgMzg5NDgsIAorICAgIDM4OTU1LCAzODk1OSwgMzg5NjQsIDM4OTY5LCAzODk3NCwgMzg5NzksIDM4OTgzLCAzODk4NywgMzg5OTAsIDM4OTk0LCAKKyAgICAzODk5OCwgMzkwMDUsIDM5MDEwLCAzOTAxNCwgMzkwMTgsIDM5MDIzLCAzOTAyNywgMzkwMzEsIDM5MDM2LCAzOTA0MSwgCisgICAgMzkwNDUsIDM5MDQ5LCAzOTA1MywgMzkwNTUsIDM5MDYwLCAzOTA2NSwgMzkwNjksIDM5MDczLCAzOTA3NywgMzkwODEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM5MDg1LCAzOTA5MSwgMzkwOTcsIDM5MTA0LCAzOTExMSwgMzkxMTYsIDM5MTIxLCAzOTEyNSwgMCwgMCwgCisgICAgMzkxMzEsIDM5MTM0LCAzOTEzNywgMzkxNDAsIDM5MTQzLCAzOTE0NiwgMzkxNDksIDM5MTUzLCAzOTE1NywgMzkxNjIsIAorICAgIDM5MTY3LCAzOTE3MiwgMzkxNzksIDM5MTgzLCAzOTE4NiwgMzkxODksIDM5MTkyLCAzOTE5NSwgMzkxOTgsIDM5MjAxLCAKKyAgICAzOTIwNCwgMzkyMDcsIDM5MjEwLCAzOTIxNCwgMzkyMTgsIDM5MjIzLCAzOTIyOCwgMCwgMzkyMzMsIDM5MjM5LCAzOTI0NSwgCisgICAgMzkyNTEsIDM5MjU4LCAzOTI2NSwgMzkyNzIsIDM5Mjc5LCAzOTI4NSwgMzkyOTEsIDM5Mjk4LCAzOTMwNSwgMzkzMTIsIDAsIAorICAgIDAsIDAsIDM5MzE5LCAzOTMyMiwgMzkzMjUsIDM5MzI4LCAzOTMzMywgMzkzMzYsIDM5MzM5LCAzOTM0MiwgMzkzNDUsIAorICAgIDM5MzQ4LCAzOTM1MSwgMzkzNTUsIDM5MzU4LCAzOTM2MSwgMzkzNjQsIDM5MzY3LCAzOTM3MCwgMzkzNzUsIDM5Mzc4LCAKKyAgICAzOTM4MSwgMzkzODQsIDM5Mzg3LCAzOTM5MCwgMzkzOTUsIDM5Mzk4LCAzOTQwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk0MDYsIDM5NDExLCAzOTQxNiwgMzk0MjMsIAorICAgIDM5NDMxLCAzOTQzNiwgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTQsIDM5NDYxLCAzOTQ2OCwgMzk0NzIsIDM5NDc3LCAKKyAgICAzOTQ4MiwgMzk0ODcsIDM5NDkyLCAzOTQ5OSwgMzk1MDQsIDM5NTA5LCAzOTUxNCwgMzk1MjMsIDM5NTMwLCAzOTUzNywgCisgICAgMzk1NDEsIDM5NTQ2LCAzOTU1MiwgMzk1NTcsIDM5NTY0LCAzOTU3MywgMzk1ODIsIDM5NTg2LCAzOTU5MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1OTQsIDM5NTk4LCAzOTYwNiwgMzk2MTAsIDM5NjE0LCAKKyAgICAzOTYxOSwgMzk2MjMsIDM5NjI3LCAzOTYzMSwgMzk2MzMsIDM5NjM3LCAzOTY0MSwgMzk2NDUsIDM5NjUwLCAzOTY1NCwgCisgICAgMzk2NTgsIDM5NjY2LCAzOTY2OSwgMzk2NzMsIDM5Njc2LCAzOTY3OSwgMzk2ODUsIDM5Njg5LCAzOTY5MiwgMzk2OTgsIAorICAgIDM5NzAyLCAzOTcwNiwgMzk3MTAsIDM5NzEzLCAzOTcxNywgMzk3MjAsIDM5NzI0LCAzOTcyNiwgMzk3MjksIDM5NzMyLCAKKyAgICAzOTczNiwgMzk3MzgsIDM5NzQyLCAzOTc0NSwgMzk3NDgsIDM5NzUzLCAzOTc1OCwgMzk3NjUsIDM5NzY4LCAzOTc3MSwgCisgICAgMzk3NzUsIDM5NzgwLCAzOTc4MywgMzk3ODYsIDM5Nzg5LCAzOTc5MywgMzk3OTgsIDM5ODAxLCAzOTgwNCwgMzk4MDYsIAorICAgIDM5ODA5LCAzOTgxMiwgMzk4MTUsIDM5ODE5LCAzOTgyNCwgMzk4MjcsIDM5ODMxLCAzOTgzNSwgMzk4MzksIDM5ODQzLCAKKyAgICAzOTg0OCwgMzk4NTQsIDM5ODU5LCAzOTg2NCwgMzk4NzAsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg4LCAzOTg5MywgCisgICAgMzk4OTcsIDM5OTAxLCAzOTkwNCwgMzk5MDYsIDM5OTExLCAzOTkxNywgMzk5MjQsIDM5OTMxLCAzOTkzOCwgMzk5NDUsIAorICAgIDM5OTUyLCAzOTk1OSwgMzk5NjYsIDM5OTczLCAzOTk4MSwgMzk5ODgsIDM5OTk2LCA0MDAwMywgNDAwMTAsIDQwMDE4LCAKKyAgICA0MDAyNiwgNDAwMzEsIDQwMDM2LCA0MDA0MSwgNDAwNDYsIDQwMDUxLCA0MDA1NiwgNDAwNjEsIDQwMDY2LCA0MDA3MSwgCisgICAgNDAwNzYsIDQwMDgyLCA0MDA4OCwgNDAwOTQsIDQwMTAwLCA0MDEwNywgNDAxMTUsIDQwMTIyLCA0MDEyOCwgNDAxMzQsIAorICAgIDQwMTQwLCA0MDE0NiwgNDAxNTIsIDQwMTU4LCA0MDE2NCwgNDAxNzAsIDQwMTc2LCA0MDE4MywgNDAxOTAsIDQwMTk3LCAKKyAgICA0MDIwNCwgNDAyMTIsIDQwMjIxLCA0MDIyOSwgNDAyNDAsIDQwMjQ4LCA0MDI1NiwgNDAyNjUsIDQwMjcyLCA0MDI4MSwgCisgICAgNDAyOTAsIDQwMjk4LCA0MDMwNywgMCwgMCwgMCwgMCwgMCwgMCwgNDAzMTUsIDQwMzE3LCA0MDMyMCwgNDAzMjIsIDQwMzI1LCAKKyAgICA0MDMyOCwgNDAzMzEsIDQwMzM2LCA0MDM0MSwgNDAzNDYsIDQwMzUxLCA0MDM1NSwgNDAzNTksIDQwMzYzLCA0MDM2NywgCisgICAgNDAzNzIsIDQwMzc4LCA0MDM4MywgNDAzODksIDQwMzk0LCA0MDM5OSwgNDA0MDQsIDQwNDEwLCA0MDQxNSwgNDA0MjEsIAorICAgIDQwNDI3LCA0MDQzMSwgNDA0MzUsIDQwNDQwLCA0MDQ0NSwgNDA0NTAsIDQwNDU1LCA0MDQ2MCwgNDA0NjgsIDQwNDc2LCAKKyAgICA0MDQ4NCwgNDA0OTIsIDQwNDk5LCA0MDUwNywgNDA1MTQsIDQwNTIxLCA0MDUzMCwgNDA1NDIsIDQwNTQ4LCA0MDU1NCwgCisgICAgNDA1NjIsIDQwNTcwLCA0MDU3OSwgNDA1ODgsIDQwNTk2LCA0MDYwNCwgNDA2MTMsIDQwNjIyLCA0MDYyNywgNDA2MzUsIAorICAgIDQwNjQwLCA0MDY0NSwgNDA2NTEsIDQwNjU2LCA0MDY2MiwgNDA2NjksIDQwNjc2LCA0MDY4MSwgNDA2ODcsIDQwNjkyLCAKKyAgICA0MDY5NSwgNDA2OTksIDQwNzAyLCA0MDcwNiwgNDA3MTAsIDQwNzE0LCA0MDcyMCwgNDA3MjYsIDQwNzMyLCA0MDczOCwgCisgICAgNDA3NDIsIDQwNzQ2LCA0MDc1MCwgNDA3NTQsIDQwNzYwLCA0MDc2NiwgNDA3NzAsIDQwNzc1LCA0MDc3OSwgNDA3ODQsIAorICAgIDQwNzg5LCA0MDc5NCwgNDA3OTcsIDQwODAxLCA0MDgwNCwgNDA4MDgsIDQwODE1LCA0MDgyMywgNDA4MzQsIDQwODQ1LCAKKyAgICA0MDg1MCwgNDA4NTksIDQwODY2LCA0MDg3NSwgNDA4ODQsIDQwODg4LCA0MDg5NCwgNDA5MDIsIDQwOTA2LCA0MDkxMSwgCisgICAgNDA5MTYsIDQwOTIyLCA0MDkyOCwgNDA5MzQsIDQwOTQxLCA0MDk0NSwgNDA5NDksIDQwOTU0LCA0MDk1NywgNDA5NTksIAorICAgIDQwOTYzLCA0MDk2NywgNDA5NzUsIDQwOTc5LCA0MDk4MSwgNDA5ODMsIDQwOTg3LCA0MDk5NSwgNDEwMDAsIDQxMDA2LCAKKyAgICA0MTAxNiwgNDEwMjMsIDQxMDI4LCA0MTAzMiwgNDEwMzYsIDQxMDQwLCA0MTA0MywgNDEwNDYsIDQxMDQ5LCA0MTA1MywgCisgICAgNDEwNTcsIDQxMDYxLCA0MTA2NSwgNDEwNjksIDQxMDcyLCA0MTA3NiwgNDEwODAsIDQxMDgzLCA0MTA4NSwgNDEwODgsIAorICAgIDQxMDkwLCA0MTA5NCwgNDEwOTgsIDQxMTAwLCA0MTEwNiwgNDExMDksIDQxMTE0LCA0MTExOCwgNDExMjIsIDQxMTI0LCAKKyAgICA0MTEyNiwgNDExMjgsIDQxMTMxLCA0MTEzNSwgNDExMzksIDQxMTQzLCA0MTE0NywgNDExNTEsIDQxMTU3LCA0MTE2MywgCisgICAgNDExNjUsIDQxMTY3LCA0MTE2OSwgNDExNzEsIDQxMTc0LCA0MTE3NiwgNDExODAsIDQxMTgyLCA0MTE4NiwgNDExODksIAorICAgIDQxMTk1LCA0MTE5OSwgNDEyMDMsIDQxMjA2LCA0MTIwOSwgNDEyMTMsIDQxMjE5LCA0MTIyMywgNDEyMzMsIDQxMjQzLCAKKyAgICA0MTI0NywgNDEyNTMsIDQxMjU5LCA0MTI2MiwgNDEyNjYsIDQxMjY5LCA0MTI3NCwgNDEyNzgsIDQxMjg0LCA0MTI4OCwgCisgICAgNDEzMDAsIDQxMzA4LCA0MTMxMiwgNDEzMTYsIDQxMzIyLCA0MTMyNiwgNDEzMjksIDQxMzMxLCA0MTMzNCwgNDEzMzgsIAorICAgIDQxMzQyLCA0MTM0OSwgNDEzNTMsIDQxMzU3LCA0MTM2MSwgNDEzNjQsIDQxMzY5LCA0MTM3NCwgNDEzNzksIDQxMzg0LCAKKyAgICA0MTM4OSwgNDEzOTQsIDQxNDAyLCA0MTQxMCwgNDE0MTQsIDQxNDE4LCA0MTQyMCwgNDE0MjUsIDQxNDI5LCA0MTQzMywgCisgICAgNDE0NDEsIDQxNDQ5LCA0MTQ1NSwgNDE0NjEsIDQxNDcwLCA0MTQ3OSwgNDE0ODQsIDQxNDg5LCA0MTQ5NywgNDE1MDUsIAorICAgIDQxNTA3LCA0MTUwOSwgNDE1MTQsIDQxNTE5LCA0MTUyNSwgNDE1MzEsIDQxNTM3LCA0MTU0MywgNDE1NDcsIDQxNTUxLCAKKyAgICA0MTU1OCwgNDE1NjUsIDQxNTcxLCA0MTU3NywgNDE1ODcsIDQxNTk3LCA0MTYwNSwgNDE2MTMsIDQxNjE1LCA0MTYxOSwgCisgICAgNDE2MjMsIDQxNjI4LCA0MTYzMywgNDE2NDAsIDQxNjQ3LCA0MTY1MCwgNDE2NTMsIDQxNjU2LCA0MTY1OSwgNDE2NjIsIAorICAgIDQxNjY3LCA0MTY3MSwgNDE2NzYsIDQxNjgxLCA0MTY4NCwgNDE2ODcsIDQxNjkwLCA0MTY5MywgNDE2OTYsIDQxNzAwLCAKKyAgICA0MTcwMywgNDE3MDYsIDQxNzA5LCA0MTcxMiwgNDE3MTQsIDQxNzE2LCA0MTcxOCwgNDE3MjAsIDQxNzI4LCA0MTczNiwgCisgICAgNDE3NDIsIDQxNzQ2LCA0MTc1MiwgNDE3NjIsIDQxNzY4LCA0MTc3NCwgNDE3ODAsIDQxNzg4LCA0MTc5NiwgNDE4MDcsIAorICAgIDQxODExLCA0MTgxNSwgNDE4MTcsIDQxODIzLCA0MTgyNSwgNDE4MjcsIDQxODI5LCA0MTgzMSwgNDE4MzcsIDQxODQwLCAKKyAgICA0MTg0NiwgNDE4NTIsIDQxODU2LCA0MTg2MCwgNDE4NjQsIDQxODY3LCA0MTg3MSwgNDE4NzUsIDQxODc3LCA0MTg4NiwgCisgICAgNDE4OTUsIDQxOTAwLCA0MTkwNSwgNDE5MTEsIDQxOTE3LCA0MTkyMywgNDE5MjYsIDQxOTI5LCA0MTkzMiwgNDE5MzUsIAorICAgIDQxOTM3LCA0MTk0MiwgNDE5NDcsIDQxOTUyLCA0MTk1OCwgNDE5NjQsIDQxOTcyLCA0MTk4MCwgNDE5ODYsIDQxOTkyLCAKKyAgICA0MTk5OCwgNDIwMDQsIDQyMDEzLCA0MjAyMiwgNDIwMzEsIDQyMDQwLCA0MjA0OSwgNDIwNTgsIDQyMDY3LCA0MjA3NiwgCisgICAgNDIwODUsIDQyMDk0LCA0MjEwMiwgNDIxMTQsIDQyMTI0LCA0MjEzOSwgNDIxNDIsIDQyMTQ3LCA0MjE1MywgNDIxNTksIAorICAgIDQyMTY2LCA0MjE4MCwgNDIxOTUsIDQyMjAxLCA0MjIwNywgNDIyMTQsIDQyMjIwLCA0MjIyOCwgNDIyMzQsIDQyMjQ3LCAKKyAgICA0MjI2MSwgNDIyNjYsIDQyMjcyLCA0MjI3OSwgNDIyODIsIDQyMjg1LCA0MjI4NywgNDIyOTAsIDQyMjkzLCA0MjI5NSwgCisgICAgNDIyOTcsIDQyMzAxLCA0MjMwNCwgNDIzMDcsIDQyMzEwLCA0MjMxMywgNDIzMTgsIDQyMzIzLCA0MjMyOCwgNDIzMzMsIAorICAgIDQyMzM4LCA0MjM0MSwgNDIzNDMsIDQyMzQ1LCA0MjM0NywgNDIzNTEsIDQyMzU1LCA0MjM1OSwgNDIzNjUsIDQyMzcwLCAKKyAgICA0MjM3MiwgNDIzNzQsIDQyMzc5LCA0MjM4NCwgNDIzODksIDQyMzk0LCA0MjM5OSwgNDI0MDQsIDQyNDA2LCA0MjQwOCwgCisgICAgNDI0MTcsIDQyNDIxLCA0MjQyOSwgNDI0MzgsIDQyNDQwLCA0MjQ0NSwgNDI0NTAsIDQyNDU4LCA0MjQ2MiwgNDI0NjQsIAorICAgIDQyNDY4LCA0MjQ3MCwgNDI0NzQsIDQyNDc4LCA0MjQ4MiwgNDI0ODQsIDQyNDg2LCA0MjQ4OCwgNDI0OTUsIDQyNTA0LCAKKyAgICA0MjUxMywgNDI1MjIsIDQyNTMxLCA0MjU0MCwgNDI1NDksIDQyNTU4LCA0MjU2NywgNDI1NzUsIDQyNTgzLCA0MjU5MiwgCisgICAgNDI2MDEsIDQyNjEwLCA0MjYxOSwgNDI2MjcsIDQyNjM1LCA0MjY0NCwgNDI2NTMsIDQyNjYyLCA0MjY3MiwgNDI2ODEsIAorICAgIDQyNjkxLCA0MjcwMCwgNDI3MTAsIDQyNzE5LCA0MjcyOSwgNDI3MzksIDQyNzQ4LCA0Mjc1OCwgNDI3NjcsIDQyNzc3LCAKKyAgICA0Mjc4NiwgNDI3OTYsIDQyODA1LCA0MjgxNCwgNDI4MjMsIDQyODMyLCA0Mjg0MSwgNDI4NTEsIDQyODYwLCA0Mjg2OSwgCisgICAgNDI4NzgsIDQyODg4LCA0Mjg5NywgNDI5MDYsIDQyOTE1LCA0MjkyNCwgNDI5MzQsIDQyOTQ0LCA0Mjk1MywgNDI5NjIsIAorICAgIDQyOTcwLCA0Mjk3OCwgNDI5ODUsIDQyOTkzLCA0MzAwMiwgNDMwMTMsIDQzMDIyLCA0MzAzMSwgNDMwNDAsIDQzMDQ3LCAKKyAgICA0MzA1NCwgNDMwNjEsIDQzMDcwLCA0MzA3OSwgNDMwODgsIDQzMDk3LCA0MzEwNCwgNDMxMDksIDQzMTE4LCA0MzEyMywgCisgICAgNDMxMjYsIDQzMTM0LCA0MzEzNywgNDMxNDIsIDQzMTQ3LCA0MzE1MCwgNDMxNTMsIDQzMTYxLCA0MzE2NCwgNDMxNjksIAorICAgIDQzMTcyLCA0MzE3OSwgNDMxODQsIDQzMTkyLCA0MzE5NSwgNDMxOTgsIDQzMjAxLCA0MzIwNiwgNDMyMTEsIDQzMjE0LCAKKyAgICA0MzIxNywgNDMyMjUsIDQzMjI4LCA0MzIzNSwgNDMyNDIsIDQzMjQ2LCA0MzI1MCwgNDMyNTUsIDQzMjYwLCA0MzI2NiwgCisgICAgNDMyNzEsIDQzMjc3LCA0MzI4MywgNDMyODgsIDQzMjk0LCA0MzMwMiwgNDMzMDgsIDQzMzE2LCA0MzMyNCwgNDMzMzAsIAorICAgIDQzMzM4LCA0MzM0NiwgNDMzNTUsIDQzMzYzLCA0MzM2OSwgNDMzNzcsIDQzMzg2LCA0MzM5NCwgNDMzOTgsIDQzNDAzLCAKKyAgICA0MzQxNiwgNDM0MjksIDQzNDMzLCA0MzQzNywgNDM0NDEsIDQzNDQ1LCA0MzQ1NSwgNDM0NTksIDQzNDY0LCA0MzQ2OSwgCisgICAgNDM0NzQsIDQzNDc5LCA0MzQ4NCwgNDM0ODksIDQzNDk5LCA0MzUwOSwgNDM1MTcsIDQzNTI3LCA0MzUzNywgNDM1NDUsIAorICAgIDQzNTU1LCA0MzU2NSwgNDM1NzMsIDQzNTgzLCA0MzU5MywgNDM2MDEsIDQzNjA5LCA0MzYxOSwgNDM2MjksIDQzNjMyLCAKKyAgICA0MzYzNSwgNDM2MzgsIDQzNjQzLCA0MzY0NywgNDM2NTMsIDQzNjYwLCA0MzY2NywgNDM2NzUsIDQzNjgyLCA0MzY4NiwgCisgICAgNDM2OTAsIDQzNjk0LCA0MzY5OCwgNDM3MDAsIDQzNzA0LCA0MzcwOCwgNDM3MTMsIDQzNzE4LCA0MzcyNSwgNDM3MzIsIAorICAgIDQzNzM1LCA0Mzc0MiwgNDM3NDQsIDQzNzQ2LCA0Mzc1MCwgNDM3NTQsIDQzNzU5LCA0Mzc2NSwgNDM3NzEsIDQzNzc3LCAKKyAgICA0Mzc4MywgNDM3OTIsIDQzODAxLCA0MzgxMCwgNDM4MTQsIDQzODE2LCA0MzgyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDM4MjcsIDQzODMxLCA0MzgzOCwgNDM4NDUsIDQzODUyLCA0Mzg1OSwgNDM4NjMsIDQzODY3LCAKKyAgICA0Mzg3MSwgNDM4NzUsIDQzODgwLCA0Mzg4NiwgNDM4OTEsIDQzODk3LCA0MzkwMywgNDM5MDksIDQzOTE1LCA0MzkyMywgCisgICAgNDM5MzAsIDQzOTM3LCA0Mzk0NCwgNDM5NTEsIDQzOTU2LCA0Mzk2MiwgNDM5NzEsIDQzOTc1LCA0Mzk4MiwgNDM5ODYsIAorICAgIDQzOTkwLCA0Mzk5NiwgNDQwMDIsIDQ0MDA4LCA0NDAxNCwgNDQwMTgsIDQ0MDIyLCA0NDAyNSwgNDQwMjgsIDQ0MDMyLCAKKyAgICA0NDAzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDQwNDYsIDQ0MDQ5LCA0NDA1MywgNDQwNTcsIDQ0MDYzLCA0NDA2OSwgNDQwNzUsIDQ0MDgzLCA0NDA5MCwgCisgICAgNDQwOTQsIDQ0MTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NDEwNywgNDQxMTAsIDQ0MTEzLCA0NDExNiwgNDQxMTksIDQ0MTIyLCA0NDEyNSwgNDQxMjgsIDQ0MTMxLCA0NDEzNCwgCisgICAgNDQxMzgsIDQ0MTQyLCA0NDE0NiwgNDQxNTAsIDQ0MTU0LCA0NDE1OCwgNDQxNjIsIDQ0MTY2LCA0NDE3MCwgNDQxNzQsIAorICAgIDQ0MTc4LCA0NDE4MSwgNDQxODQsIDQ0MTg3LCA0NDE5MCwgNDQxOTMsIDQ0MTk2LCA0NDE5OSwgNDQyMDIsIDQ0MjA1LCAKKyAgICA0NDIwOSwgNDQyMTMsIDQ0MjE3LCA0NDIyMSwgNDQyMjUsIDQ0MjI5LCA0NDIzMywgNDQyMzcsIDQ0MjQxLCA0NDI0NSwgCisgICAgNDQyNDksIDQ0MjU1LCA0NDI2MSwgNDQyNjcsIDQ0Mjc0LCA0NDI4MSwgNDQyODgsIDQ0Mjk1LCA0NDMwMiwgNDQzMDksIAorICAgIDQ0MzE2LCA0NDMyMywgNDQzMzAsIDQ0MzM3LCA0NDM0NCwgNDQzNTEsIDQ0MzU4LCA0NDM2NSwgNDQzNzIsIDQ0Mzc5LCAKKyAgICA0NDM4NiwgNDQzOTEsIDQ0Mzk3LCA0NDQwMywgNDQ0MDksIDQ0NDE0LCA0NDQyMCwgNDQ0MjYsIDQ0NDMyLCA0NDQzNywgCisgICAgNDQ0NDMsIDQ0NDQ5LCA0NDQ1NCwgNDQ0NTksIDQ0NDY1LCA0NDQ3MCwgNDQ0NzYsIDQ0NDgyLCA0NDQ4NywgNDQ0OTMsIAorICAgIDQ0NDk5LCA0NDUwNCwgNDQ1MTAsIDQ0NTE2LCA0NDUyMiwgNDQ1MjgsIDQ0NTM0LCA0NDUzOSwgNDQ1NDUsIDQ0NTUxLCAKKyAgICA0NDU1NywgNDQ1NjIsIDQ0NTY4LCA0NDU3NCwgNDQ1ODAsIDQ0NTg1LCA0NDU5MSwgNDQ1OTcsIDQ0NjAyLCA0NDYwNywgCisgICAgNDQ2MTMsIDQ0NjE4LCA0NDYyNCwgNDQ2MzAsIDQ0NjM1LCA0NDY0MSwgNDQ2NDcsIDQ0NjUyLCA0NDY1OCwgNDQ2NjQsIAorICAgIDQ0NjcwLCA0NDY3NiwgNDQ2ODIsIDQ0Njg3LCA0NDY5MywgNDQ2OTksIDQ0NzA1LCA0NDcxMCwgNDQ3MTYsIDQ0NzIyLCAKKyAgICA0NDcyOCwgNDQ3MzMsIDQ0NzM5LCA0NDc0NSwgNDQ3NTAsIDQ0NzU1LCA0NDc2MSwgNDQ3NjYsIDQ0NzcyLCA0NDc3OCwgCisgICAgNDQ3ODMsIDQ0Nzg5LCA0NDc5NSwgNDQ4MDAsIDQ0ODA2LCA0NDgxMiwgNDQ4MTgsIDQ0ODI0LCA0NDgzMCwgNDQ4MzQsIAorICAgIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ0ODU0LCA0NDg1OSwgNDQ4NjQsIDQ0ODY5LCA0NDg3NCwgNDQ4NzksIDQ0ODg0LCAKKyAgICA0NDg4OCwgNDQ4OTIsIDQ0ODk2LCA0NDkwMCwgNDQ5MDQsIDQ0OTA4LCA0NDkxMiwgNDQ5MTYsIDQ0OTIwLCA0NDkyNSwgCisgICAgNDQ5MzAsIDQ0OTM1LCA0NDk0MCwgNDQ5NDUsIDQ0OTUwLCA0NDk1OSwgNDQ5NjgsIDQ0OTc3LCA0NDk4NiwgNDQ5OTUsIAorICAgIDQ1MDA0LCA0NTAxMywgNDUwMjIsIDQ1MDI5LCA0NTAzNywgNDUwNDUsIDQ1MDUyLCA0NTA1OSwgNDUwNjcsIDQ1MDc1LCAKKyAgICA0NTA4MiwgNDUwODksIDQ1MDk3LCA0NTEwNSwgNDUxMTIsIDQ1MTE5LCA0NTEyNywgNDUxMzUsIDQ1MTQyLCA0NTE0OSwgCisgICAgNDUxNTcsIDQ1MTY2LCA0NTE3NSwgNDUxODMsIDQ1MTkyLCA0NTIwMSwgNDUyMDgsIDQ1MjE1LCA0NTIyMywgNDUyMzIsIAorICAgIDQ1MjQxLCA0NTI0OSwgNDUyNTgsIDQ1MjY3LCA0NTI3NCwgNDUyODEsIDQ1MjkwLCA0NTI5OSwgNDUzMDcsIDQ1MzE1LCAKKyAgICA0NTMyNCwgNDUzMzMsIDQ1MzQwLCA0NTM0NywgNDUzNTYsIDQ1MzY1LCA0NTM3MywgNDUzODEsIDQ1MzkwLCA0NTM5OSwgCisgICAgNDU0MDYsIDQ1NDEzLCA0NTQyMiwgNDU0MzEsIDQ1NDM5LCA0NTQ0OCwgNDU0NTcsIDQ1NDY1LCA0NTQ3NSwgNDU0ODUsIAorICAgIDQ1NDk1LCA0NTUwNSwgNDU1MTQsIDQ1NTIzLCA0NTUzMiwgNDU1NDEsIDQ1NTQ4LCA0NTU1NiwgNDU1NjQsIDQ1NTcyLCAKKyAgICA0NTU4MCwgNDU1ODUsIDQ1NTkwLCA0NTU5OSwgNDU2MDcsIDQ1NjE0LCA0NTYyMywgNDU2MzEsIDQ1NjM4LCA0NTY0NywgCisgICAgNDU2NTUsIDQ1NjYyLCA0NTY3MSwgNDU2NzksIDQ1Njg2LCA0NTY5NSwgNDU3MDMsIDQ1NzEwLCA0NTcxOSwgNDU3MjcsIAorICAgIDQ1NzM0LCA0NTc0MywgNDU3NTEsIDQ1NzU4LCA0NTc2NywgNDU3NzUsIDQ1NzgyLCA0NTc5MSwgNDU3OTksIDQ1ODA2LCAKKyAgICA0NTgxNSwgNDU4MjQsIDQ1ODMzLCA0NTg0MiwgNDU4NTYsIDQ1ODcwLCA0NTg3NywgNDU4ODIsIDQ1ODg3LCA0NTg5MiwgCisgICAgNDU4OTcsIDQ1OTAyLCA0NTkwNywgNDU5MTIsIDQ1OTE3LCA0NTkyNSwgNDU5MzMsIDQ1OTQxLCA0NTk0OSwgNDU5NTQsIAorICAgIDQ1OTYxLCA0NTk2OCwgNDU5NzUsIDQ1OTgwLCA0NTk4OCwgNDU5OTUsIDQ2MDAzLCA0NjAwNywgNDYwMTQsIDQ2MDIwLCAKKyAgICA0NjAyNywgNDYwMzEsIDQ2MDM3LCA0NjA0MywgNDYwNDksIDQ2MDUzLCA0NjA1NiwgNDYwNjAsIDQ2MDY0LCA0NjA3MSwgCisgICAgNDYwNzcsIDQ2MDgzLCA0NjA4OSwgNDYwOTUsIDQ2MTA5LCA0NjExOSwgNDYxMzMsIDQ2MTQ3LCA0NjE1MywgNDYxNjMsIAorICAgIDQ2MTc3LCA0NjE4MCwgNDYxODMsIDQ2MTkwLCA0NjE5OCwgNDYyMDMsIDQ2MjA4LCA0NjIxNiwgNDYyMjgsIDQ2MjQwLCAKKyAgICA0NjI0OCwgNDYyNTIsIDQ2MjU2LCA0NjI1OSwgNDYyNjIsIDQ2MjY2LCA0NjI3MCwgNDYyNzMsIDQ2Mjc2LCA0NjI4MSwgCisgICAgNDYyODYsIDQ2MjkyLCA0NjI5OCwgNDYzMDMsIDQ2MzA4LCA0NjMxNCwgNDYzMjAsIDQ2MzI1LCA0NjMzMCwgNDYzMzUsIAorICAgIDQ2MzQwLCA0NjM0NiwgNDYzNTIsIDQ2MzU3LCA0NjM2MiwgNDYzNjgsIDQ2Mzc0LCA0NjM3OSwgNDYzODQsIDQ2Mzg3LCAKKyAgICA0NjM5MCwgNDYzOTksIDQ2NDAxLCA0NjQwMywgNDY0MDYsIDQ2NDEwLCA0NjQxNiwgNDY0MTgsIDQ2NDIxLCA0NjQyOCwgCisgICAgNDY0MzUsIDQ2NDQzLCA0NjQ1MSwgNDY0NjEsIDQ2NDc1LCA0NjQ4MCwgNDY0ODUsIDQ2NDg5LCA0NjQ5NCwgNDY1MDIsIAorICAgIDQ2NTEwLCA0NjUxOSwgNDY1MjgsIDQ2NTM3LCA0NjU0NiwgNDY1NTEsIDQ2NTU2LCA0NjU2MiwgNDY1NjgsIDQ2NTc0LCAKKyAgICA0NjU4MCwgNDY1ODMsIDQ2NTg5LCA0NjU5NSwgNDY2MDUsIDQ2NjE1LCA0NjYyMywgNDY2MzEsIDQ2NjQwLCA0NjY0OSwgCisgICAgNDY2NTMsIDQ2NjYxLCA0NjY2OSwgNDY2NzcsIDQ2Njg1LCA0NjY5NCwgNDY3MDMsIDQ2NzEyLCA0NjcyMSwgNDY3MjYsIAorICAgIDQ2NzMxLCA0NjczNiwgNDY3NDEsIDQ2NzQ2LCA0Njc1MiwgNDY3NTgsIDQ2NzYzLCA0Njc2OSwgNDY3NzEsIDQ2NzczLCAKKyAgICA0Njc3NSwgNDY3NzcsIDQ2NzgwLCA0Njc4MywgNDY3ODUsIDQ2Nzg3LCA0Njc4OSwgNDY3OTMsIDQ2Nzk3LCA0Njc5OSwgCisgICAgNDY4MDEsIDQ2ODA0LCA0NjgwNywgNDY4MTEsIDQ2ODE3LCA0NjgyMywgNDY4MjUsIDQ2ODMyLCA0NjgzNiwgNDY4NDEsIAorICAgIDQ2ODQ2LCA0Njg0OCwgNDY4NTgsIDQ2ODY0LCA0Njg3MCwgNDY4NzYsIDQ2ODgyLCA0Njg4OCwgNDY4OTQsIDQ2ODk5LCAKKyAgICA0NjkwMiwgNDY5MDUsIDQ2OTA4LCA0NjkxMCwgNDY5MTIsIDQ2OTE2LCA0NjkyMCwgNDY5MjUsIDQ2OTMwLCA0NjkzNSwgCisgICAgNDY5MzgsIDQ2OTQyLCA0Njk0NywgNDY5NTAsIDQ2OTU0LCA0Njk1OSwgNDY5NjQsIDQ2OTY5LCA0Njk3NCwgNDY5NzksIAorICAgIDQ2OTg0LCA0Njk4OSwgNDY5OTQsIDQ2OTk5LCA0NzAwNCwgNDcwMDksIDQ3MDE0LCA0NzAyMCwgNDcwMjYsIDQ3MDMyLCAKKyAgICA0NzAzNCwgNDcwMzcsIDQ3MDM5LCA0NzA0MiwgNDcwNDQsIDQ3MDQ2LCA0NzA0OCwgNDcwNTAsIDQ3MDUyLCA0NzA1NCwgCisgICAgNDcwNTYsIDQ3MDU4LCA0NzA2MCwgNDcwNjIsIDQ3MDY0LCA0NzA2NiwgNDcwNjgsIDQ3MDcwLCA0NzA3MiwgNDcwNzQsIAorICAgIDQ3MDc2LCA0NzA4MSwgNDcwODYsIDQ3MDkxLCA0NzA5NiwgNDcxMDEsIDQ3MTA2LCA0NzExMSwgNDcxMTYsIDQ3MTIxLCAKKyAgICA0NzEyNiwgNDcxMzEsIDQ3MTM2LCA0NzE0MSwgNDcxNDYsIDQ3MTUxLCA0NzE1NiwgNDcxNjEsIDQ3MTY2LCA0NzE3MSwgCisgICAgNDcxNzYsIDQ3MTgwLCA0NzE4NCwgNDcxODgsIDQ3MTk0LCA0NzIwMCwgNDcyMDUsIDQ3MjEwLCA0NzIxNSwgNDcyMjAsIAorICAgIDQ3MjI1LCA0NzIzMCwgNDcyMzgsIDQ3MjQ2LCA0NzI1NCwgNDcyNjIsIDQ3MjcwLCA0NzI3OCwgNDcyODYsIDQ3Mjk0LCAKKyAgICA0NzMwMCwgNDczMDUsIDQ3MzEwLCA0NzMxNSwgNDczMTgsIDQ3MzIyLCA0NzMyNiwgNDczMzAsIDQ3MzM0LCA0NzMzOCwgCisgICAgNDczNDIsIDQ3MzQ5LCA0NzM1NiwgNDczNjQsIDQ3MzcyLCA0NzM3NywgNDczODIsIDQ3Mzg5LCA0NzM5NiwgNDc0MDMsIAorICAgIDQ3NDEwLCA0NzQxMywgNDc0MTYsIDQ3NDIxLCA0NzQyMywgNDc0MjcsIDQ3NDMyLCA0NzQzNCwgNDc0MzYsIDQ3NDM4LCAKKyAgICA0NzQ0MCwgNDc0NDUsIDQ3NDQ4LCA0NzQ1MCwgNDc0NTUsIDQ3NDYyLCA0NzQ2OSwgNDc0NzIsIDQ3NDc2LCA0NzQ4MSwgCisgICAgNDc0ODYsIDQ3NDk0LCA0NzUwMCwgNDc1MDYsIDQ3NTE4LCA0NzUyNSwgNDc1MzIsIDQ3NTM3LCA0NzU0MiwgNDc1NDgsIAorICAgIDQ3NTUxLCA0NzU1NCwgNDc1NTksIDQ3NTYxLCA0NzU2NSwgNDc1NjcsIDQ3NTY5LCA0NzU3MSwgNDc1NzMsIDQ3NTc1LCAKKyAgICA0NzU3NywgNDc1ODIsIDQ3NTg0LCA0NzU4NiwgNDc1ODgsIDQ3NTkwLCA0NzU5NCwgNDc1OTYsIDQ3NTk5LCA0NzYwNCwgCisgICAgNDc2MDksIDQ3NjE0LCA0NzYxOSwgNDc2MjUsIDQ3NjMxLCA0NzYzMywgNDc2MzYsIDQ3NjQzLCA0NzY1MCwgNDc2NTcsIAorICAgIDQ3NjY0LCA0NzY2OCwgNDc2NzIsIDQ3Njc0LCA0NzY3NiwgNDc2ODAsIDQ3Njg2LCA0NzY5MSwgNDc2OTMsIDQ3Njk3LCAKKyAgICA0NzcwNiwgNDc3MTQsIDQ3NzIyLCA0NzcyOCwgNDc3MzQsIDQ3NzM5LCA0Nzc0NSwgNDc3NTAsIDQ3NzUzLCA0Nzc2NywgCisgICAgNDc3NzAsIDQ3Nzc1LCA0Nzc4MCwgNDc3ODYsIDQ3Nzk2LCA0Nzc5OCwgNDc4MDQsIDQ3ODEwLCA0NzgxNCwgNDc4MjEsIAorICAgIDQ3ODI1LCA0NzgyNywgNDc4MjksIDQ3ODMzLCA0NzgzOSwgNDc4NDQsIDQ3ODUwLCA0Nzg1MiwgNDc4NTgsIDQ3ODYwLCAKKyAgICA0Nzg2NiwgNDc4NjgsIDQ3ODcwLCA0Nzg3NSwgNDc4NzcsIDQ3ODgxLCA0Nzg4NiwgNDc4ODgsIDQ3ODkzLCA0Nzg5OCwgCisgICAgNDc5MDIsIDQ3OTA5LCAwLCA0NzkxOSwgNDc5MjUsIDQ3OTI4LCA0NzkzNCwgNDc5MzcsIDQ3OTQyLCA0Nzk0NywgNDc5NTEsIAorICAgIDQ3OTUzLCA0Nzk1NSwgNDc5NTksIDQ3OTYzLCA0Nzk2NywgNDc5NzEsIDQ3OTc2LCA0Nzk3OCwgNDc5ODMsIDQ3OTg2LCAKKyAgICA0Nzk4OSwgNDc5OTIsIDQ3OTk2LCA0ODAwMCwgNDgwMDUsIDQ4MDA5LCA0ODAxNCwgNDgwMTksIDQ4MDIzLCA0ODAyOCwgCisgICAgNDgwMzQsIDQ4MDM3LCA0ODA0MywgNDgwNDgsIDQ4MDUyLCA0ODA1NywgNDgwNjMsIDQ4MDY5LCA0ODA3NiwgNDgwODIsIAorICAgIDQ4MDg5LCA0ODA5NiwgNDgwOTgsIDQ4MTA1LCA0ODEwOSwgNDgxMTUsIDQ4MTIxLCA0ODEyNiwgNDgxMzIsIDQ4MTM2LCAKKyAgICA0ODE0MSwgNDgxNDQsIDQ4MTQ5LCA0ODE1NSwgNDgxNjIsIDQ4MTcwLCA0ODE3NywgNDgxODYsIDQ4MTk2LCA0ODIwMywgCisgICAgNDgyMDksIDQ4MjEzLCA0ODIyMCwgNDgyMjUsIDQ4MjM0LCA0ODIzNywgNDgyNDAsIDQ4MjQ5LCA0ODI1OSwgNDgyNjYsIAorICAgIDQ4MjY4LCA0ODI3NCwgNDgyNzksIDQ4MjgxLCA0ODI4NCwgNDgyODgsIDQ4Mjk2LCA0ODMwNSwgNDgzMDgsIDQ4MzEzLCAKKyAgICA0ODMxOCwgNDgzMjYsIDQ4MzM0LCA0ODM0MiwgNDgzNTAsIDQ4MzU2LCA0ODM2MiwgNDgzNjgsIDQ4Mzc2LCA0ODM4MSwgCisgICAgNDgzODQsIDQ4Mzg4LCA0ODM5MSwgNDg0MDMsIDQ4NDEzLCA0ODQyNCwgNDg0MzMsIDQ4NDQ0LCA0ODQ1NCwgNDg0NjMsIAorICAgIDQ4NDY5LCA0ODQ3NywgNDg0ODEsIDQ4NDg5LCA0ODQ5MywgNDg1MDEsIDQ4NTA4LCA0ODUxNSwgNDg1MjQsIDQ4NTMzLCAKKyAgICA0ODU0MywgNDg1NTMsIDQ4NTYzLCA0ODU3MywgNDg1ODIsIDQ4NTkxLCA0ODYwMSwgNDg2MTEsIDQ4NjIwLCA0ODYyOSwgCisgICAgNDg2MzUsIDQ4NjQxLCA0ODY0NywgNDg2NTMsIDQ4NjU5LCA0ODY2NSwgNDg2NzEsIDQ4Njc3LCA0ODY4MywgNDg2OTAsIAorICAgIDQ4Njk2LCA0ODcwMiwgNDg3MDgsIDQ4NzE0LCA0ODcyMCwgNDg3MjYsIDQ4NzMyLCA0ODczOCwgNDg3NDQsIDQ4NzUxLCAKKyAgICA0ODc1OCwgNDg3NjUsIDQ4NzcyLCA0ODc3OSwgNDg3ODYsIDQ4NzkzLCA0ODgwMCwgNDg4MDcsIDQ4ODE0LCA0ODgyMiwgCisgICAgNDg4MjcsIDQ4ODMwLCA0ODgzNCwgNDg4MzgsIDQ4ODQ0LCA0ODg0NywgNDg4NTMsIDQ4ODU5LCA0ODg2NCwgNDg4NjgsIAorICAgIDQ4ODczLCA0ODg3OSwgNDg4ODYsIDQ4ODg5LCA0ODg5NiwgNDg5MDMsIDQ4OTA3LCA0ODkxNiwgNDg5MjUsIDQ4OTMwLCAKKyAgICA0ODkzNiwgNDg5NDEsIDQ4OTQ2LCA0ODk1MywgNDg5NjAsIDQ4OTY4LCA0ODk3NiwgNDg5ODUsIDQ4OTg5LCA0ODk5OCwgCisgICAgNDkwMDMsIDQ5MDA3LCA0OTAxNCwgNDkwMTgsIDQ5MDI1LCA0OTAzMywgNDkwMzgsIDQ5MDQ2LCA0OTA1MCwgNDkwNTUsIAorICAgIDQ5MDU5LCA0OTA2NCwgNDkwNjgsIDQ5MDczLCA0OTA3OCwgNDkwODcsIDQ5MDg5LCA0OTA5MiwgNDkwOTUsIDQ5MTAyLCAKKyAgICA0OTEwOSwgNDkxMTQsIDQ5MTIyLCA0OTEyOCwgNDkxMzQsIDQ5MTM5LCA0OTE0MiwgNDkxNDcsIDQ5MTUyLCA0OTE1NywgCisgICAgNDkxNjUsIDQ5MTY5LCA0OTE3NiwgNDkxODQsIDQ5MTkyLCA0OTE5NywgNDkyMDIsIDQ5MjA4LCA0OTIxMywgNDkyMTgsIAorICAgIDQ5MjI0LCA0OTIyOSwgNDkyMzIsIDQ5MjM2LCA0OTI0MCwgNDkyNDcsIDQ5MjU2LCA0OTI2MSwgNDkyNzAsIDQ5Mjc5LCAKKyAgICA0OTI4NSwgNDkyOTEsIDQ5Mjk2LCA0OTMwMSwgNDkzMDYsIDQ5MzExLCA0OTMxNywgNDkzMjMsIDQ5MzMxLCA0OTMzOSwgCisgICAgNDkzNDUsIDQ5MzUxLCA0OTM1NiwgNDkzNjEsIDQ5MzY4LCA0OTM3NSwgNDkzODEsIDQ5Mzg0LCA0OTM4NywgNDkzOTEsIAorICAgIDQ5Mzk1LCA0OTM5OSwgNDk0MDQsIDQ5NDEwLCA0OTQxNiwgNDk0MjMsIDQ5NDMwLCA0OTQzNSwgNDk0MzksIDQ5NDQzLCAKKyAgICA0OTQ0NywgNDk0NTEsIDQ5NDU1LCA0OTQ1OSwgNDk0NjMsIDQ5NDY3LCA0OTQ3MSwgNDk0NzUsIDQ5NDc5LCA0OTQ4MywgCisgICAgNDk0ODcsIDQ5NDkxLCA0OTQ5NSwgNDk0OTksIDQ5NTAzLCA0OTUwNywgNDk1MTEsIDQ5NTE1LCA0OTUxOSwgNDk1MjMsIAorICAgIDQ5NTI3LCA0OTUzMSwgNDk1MzUsIDQ5NTM5LCA0OTU0MywgNDk1NDcsIDQ5NTUxLCA0OTU1NSwgNDk1NTksIDQ5NTYzLCAKKyAgICA0OTU2NywgNDk1NzEsIDQ5NTc1LCA0OTU3OSwgNDk1ODMsIDQ5NTg3LCA0OTU5MSwgNDk1OTUsIDQ5NTk5LCA0OTYwMywgCisgICAgNDk2MDcsIDQ5NjExLCA0OTYxNSwgNDk2MTksIDQ5NjIzLCA0OTYyNywgNDk2MzEsIDQ5NjM1LCA0OTYzOSwgNDk2NDMsIAorICAgIDQ5NjQ3LCA0OTY1MSwgNDk2NTUsIDQ5NjU5LCA0OTY2MywgNDk2NjcsIDQ5NjcxLCA0OTY3NSwgNDk2NzksIDQ5NjgzLCAKKyAgICA0OTY4NywgNDk2OTEsIDQ5Njk1LCA0OTY5OSwgNDk3MDMsIDQ5NzA3LCA0OTcxMSwgNDk3MTUsIDQ5NzE5LCA0OTcyMywgCisgICAgNDk3MjcsIDQ5NzMxLCA0OTczNSwgNDk3MzksIDQ5NzQzLCA0OTc0NywgNDk3NTEsIDQ5NzU1LCA0OTc1OSwgNDk3NjMsIAorICAgIDQ5NzY3LCA0OTc3MSwgNDk3NzUsIDQ5Nzc5LCA0OTc4MywgNDk3ODcsIDQ5NzkxLCA0OTc5NSwgNDk3OTksIDQ5ODAzLCAKKyAgICA0OTgwNywgNDk4MTEsIDQ5ODE1LCA0OTgxOSwgNDk4MjMsIDQ5ODI3LCA0OTgzMSwgNDk4MzUsIDQ5ODM5LCA0OTg0MywgCisgICAgNDk4NDcsIDQ5ODUxLCA0OTg1NSwgNDk4NTksIDQ5ODYzLCA0OTg2NywgNDk4NzEsIDQ5ODc1LCA0OTg3OSwgNDk4ODMsIAorICAgIDQ5ODg3LCA0OTg5MSwgNDk4OTUsIDQ5ODk5LCA0OTkwMywgNDk5MDcsIDQ5OTExLCA0OTkxNSwgNDk5MTksIDQ5OTIzLCAKKyAgICA0OTkyNywgNDk5MzEsIDQ5OTM1LCA0OTkzOSwgNDk5NDMsIDQ5OTQ3LCA0OTk1MSwgNDk5NTUsIDQ5OTU5LCA0OTk2MywgCisgICAgNDk5NjcsIDQ5OTcxLCA0OTk3NSwgNDk5NzksIDQ5OTgzLCA0OTk4NywgNDk5OTEsIDQ5OTk1LCA0OTk5OSwgNTAwMDMsIAorICAgIDUwMDA3LCA1MDAxMSwgNTAwMTUsIDUwMDE5LCA1MDAyMywgNTAwMjcsIDUwMDMxLCA1MDAzNSwgNTAwMzksIDUwMDQzLCAKKyAgICA1MDA0NywgNTAwNTEsIDUwMDU1LCA1MDA1OSwgNTAwNjMsIDUwMDY3LCA1MDA3MSwgNTAwNzUsIDUwMDc5LCA1MDA4MywgCisgICAgNTAwODcsIDUwMDkxLCA1MDA5NSwgNTAwOTksIDUwMTAzLCA1MDEwNywgNTAxMTEsIDUwMTE1LCA1MDExOSwgNTAxMjMsIAorICAgIDUwMTI3LCA1MDEzMSwgNTAxMzUsIDUwMTM5LCA1MDE0MywgNTAxNDcsIDUwMTUxLCA1MDE1NSwgNTAxNTksIDUwMTYzLCAKKyAgICA1MDE2NywgNTAxNzEsIDUwMTc1LCA1MDE3OSwgNTAxODMsIDUwMTg3LCA1MDE5MSwgNTAxOTUsIDUwMTk5LCA1MDIwMywgCisgICAgNTAyMDcsIDUwMjExLCA1MDIxNSwgNTAyMTksIDUwMjIzLCA1MDIyNywgNTAyMzEsIDUwMjM1LCA1MDIzOSwgNTAyNDMsIAorICAgIDUwMjQ3LCA1MDI1MSwgNTAyNTUsIDUwMjU5LCA1MDI2MywgNTAyNjcsIDUwMjcxLCA1MDI3NSwgNTAyNzksIDUwMjgzLCAKKyAgICA1MDI4NywgNTAyOTEsIDUwMjk1LCA1MDI5OSwgNTAzMDMsIDUwMzA3LCA1MDMxMSwgNTAzMTUsIDUwMzE5LCA1MDMyMywgCisgICAgNTAzMjcsIDUwMzMxLCA1MDMzNSwgNTAzMzksIDUwMzQzLCA1MDM0NywgNTAzNTEsIDUwMzU1LCA1MDM1OSwgNTAzNjMsIAorICAgIDUwMzY3LCA1MDM3MSwgNTAzNzUsIDUwMzc5LCA1MDM4MywgNTAzODcsIDUwMzkxLCA1MDM5NSwgNTAzOTksIDUwNDAzLCAKKyAgICA1MDQwNywgNTA0MTEsIDUwNDE1LCA1MDQxOSwgNTA0MjMsIDUwNDI3LCA1MDQzMSwgNTA0MzUsIDUwNDM5LCA1MDQ0MywgCisgICAgNTA0NDcsIDUwNDUxLCA1MDQ1NSwgNTA0NTksIDUwNDY2LCA1MDQ3NCwgNTA0ODAsIDUwNDg2LCA1MDQ5MywgNTA1MDAsIAorICAgIDUwNTA2LCA1MDUxMiwgNTA1MTgsIDUwNTI0LCA1MDUyOSwgNTA1MzQsIDUwNTM5LCA1MDU0NCwgNTA1NTAsIDUwNTU2LCAKKyAgICA1MDU2NCwgNTA1NzEsIDUwNTc3LCA1MDU4MywgNTA1OTEsIDUwNjAwLCA1MDYwNywgNTA2MTcsIDUwNjI4LCA1MDYzMSwgCisgICAgNTA2MzQsIDUwNjM4LCA1MDY0MiwgNTA2NDksIDUwNjU2LCA1MDY2NywgNTA2NzgsIDUwNjg4LCA1MDY5OCwgNTA3MDUsIAorICAgIDUwNzEyLCA1MDcxOSwgNTA3MjYsIDUwNzM3LCA1MDc0OCwgNTA3NTksIDUwNzcwLCA1MDc4MCwgNTA3OTAsIDUwODAyLCAKKyAgICA1MDgxNCwgNTA4MjUsIDUwODM2LCA1MDg0OCwgNTA4NjAsIDUwODY5LCA1MDg3OSwgNTA4ODksIDUwOTAwLCA1MDkxMSwgCisgICAgNTA5MTgsIDUwOTI1LCA1MDkzMiwgNTA5MzksIDUwOTQ5LCA1MDk1OSwgNTA5NjcsIDUwOTc1LCA1MDk4MiwgNTA5ODksIAorICAgIDUwOTk2LCA1MTAwMywgNTEwMTAsIDUxMDE1LCA1MTAyMCwgNTEwMjYsIDUxMDM0LCA1MTA0NCwgNTEwNTQsIDUxMDY0LCAKKyAgICA1MTA3NCwgNTEwODQsIDUxMDk0LCA1MTEwNCwgNTExMTQsIDUxMTI0LCA1MTEzNCwgNTExNDQsIDUxMTU1LCA1MTE2NiwgCisgICAgNTExNzYsIDUxMTg2LCA1MTE5NywgNTEyMDgsIDUxMjE4LCA1MTIyOCwgNTEyMzksIDUxMjUwLCA1MTI2MCwgNTEyNzAsIAorICAgIDUxMjgxLCA1MTI5MiwgNTEzMDgsIDUxMzI3LCA1MTM0MywgNTEzNjIsIDUxMzc4LCA1MTM5NCwgNTE0MTAsIDUxNDI2LCAKKyAgICA1MTQzNywgNTE0NDksIDUxNDYwLCA1MTQ3MiwgNTE0OTEsIDUxNTEwLCA1MTUxOCwgNTE1MjQsIDUxNTMxLCA1MTUzOCwgCisgICAgNTE1NDUsIDUxNTUyLCA1MTU1NywgNTE1NjMsIDUxNTY4LCA1MTU3MywgNTE1NzksIDUxNTg0LCA1MTU4OSwgNTE1OTQsIAorICAgIDUxNTk5LCA1MTYwNCwgNTE2MTEsIDUxNjE2LCA1MTYyMywgNTE2MjgsIDUxNjMzLCA1MTYzNywgNTE2NDEsIDUxNjQ4LCAKKyAgICA1MTY1NSwgNTE2NjIsIDUxNjY5LCA1MTY3NiwgNTE2ODMsIDUxNjk2LCA1MTcwOSwgNTE3MjIsIDUxNzM1LCA1MTc0MywgCisgICAgNTE3NTEsIDUxNzU3LCA1MTc2MywgNTE3NzAsIDUxNzc3LCA1MTc4NCwgNTE3OTEsIDUxNzk1LCA1MTgwMCwgNTE4MDgsIAorICAgIDUxODE2LCA1MTgyNCwgNTE4MzEsIDUxODM1LCA1MTg0MywgNTE4NTEsIDUxODU1LCA1MTg1OSwgNTE4NjQsIDUxODcxLCAKKyAgICA1MTg3OSwgNTE4ODcsIDUxOTA2LCA1MTkyNSwgNTE5NDQsIDUxOTYzLCA1MTk4MiwgNTIwMDEsIDUyMDIwLCA1MjAzOSwgCisgICAgNTIwNDUsIDUyMDUyLCA1MjA2MSwgNTIwNjksIDUyMDc3LCA1MjA4MiwgNTIwODUsIDUyMDg4LCA1MjA5MywgNTIwOTYsIAorICAgIDUyMTE1LCA1MjEyMiwgNTIxMjgsIDUyMTM0LCA1MjEzOCwgNTIxNDEsIDUyMTQ0LCA1MjE0NywgNTIxNTksIDUyMTcyLCAKKyAgICA1MjE3OSwgNTIxODYsIDUyMTg5LCA1MjE5MywgNTIxOTYsIDUyMjAxLCA1MjIwNiwgNTIyMTEsIDUyMjE3LCA1MjIyNiwgCisgICAgNTIyMzMsIDUyMjQwLCA1MjI0OCwgNTIyNTUsIDUyMjYyLCA1MjI2NSwgNTIyNzEsIDUyMjc3LCA1MjI4MCwgNTIyODMsIAorICAgIDUyMjg4LCA1MjI5MywgNTIyOTksIDUyMzA1LCA1MjMwOSwgNTIzMTQsIDUyMzIxLCA1MjMyNSwgNTIzMzEsIDUyMzM1LCAKKyAgICA1MjMzOSwgNTIzNDcsIDUyMzU5LCA1MjM2OCwgNTIzNzIsIDUyMzc0LCA1MjM4MywgNTIzOTIsIDUyMzk4LCA1MjQwMSwgCisgICAgNTI0MDcsIDUyNDEzLCA1MjQxOCwgNTI0MjMsIDUyNDI4LCA1MjQzMywgNTI0MzgsIDUyNDQzLCA1MjQ0NSwgNTI0NTEsIAorICAgIDUyNDU2LCA1MjQ2MywgNTI0NjcsIDUyNDczLCA1MjQ3NiwgNTI0ODAsIDUyNDg3LCA1MjQ5NCwgNTI0OTYsIDUyNDk4LCAKKyAgICA1MjUwNCwgNTI1MTAsIDUyNTE2LCA1MjUyNSwgNTI1MzQsIDUyNTQxLCA1MjU0OCwgNTI1NTQsIDUyNTYwLCA1MjU2NSwgCisgICAgNTI1NzAsIDUyNTc1LCA1MjU4MSwgNTI1ODcsIDUyNTkyLCA1MjU5OSwgNTI2MDMsIDUyNjA3LCA1MjYyMCwgNTI2MzMsIAorICAgIDUyNjQ1LCA1MjY1NCwgNTI2NjAsIDUyNjY3LCA1MjY3MiwgNTI2NzcsIDUyNjgyLCA1MjY4NywgNTI2OTIsIDUyNjk0LCAKKyAgICA1MjcwMSwgNTI3MDgsIDUyNzE1LCA1MjcyMiwgNTI3MjksIDUyNzM3LCA1Mjc0MywgNTI3NDgsIDUyNzU0LCA1Mjc2MCwgCisgICAgNTI3NjYsIDUyNzczLCA1Mjc3OSwgNTI3ODcsIDUyNzk1LCA1MjgwMywgNTI4MTEsIDUyODE4LCA1MjgyNCwgNTI4MzAsIAorICAgIDUyODM5LCA1Mjg0MywgNTI4NTIsIDUyODYxLCA1Mjg3MCwgNTI4NzgsIDUyODgyLCA1Mjg4OCwgNTI4OTUsIDUyOTAyLCAKKyAgICA1MjkwNiwgNTI5MTIsIDUyOTE5LCA1MjkyNCwgNTI5MjksIDUyOTM1LCA1Mjk0MCwgNTI5NDUsIDUyOTUyLCA1Mjk1OSwgCisgICAgNTI5NjQsIDUyOTY5LCA1Mjk3NywgNTI5ODUsIDUyOTk1LCA1MzAwNSwgNTMwMTIsIDUzMDE5LCA1MzAyMywgNTMwMjcsIAorICAgIDUzMDM5LCA1MzA0NSwgNTMwNTEsIDUzMDU2LCA1MzA2MSwgNTMwNjgsIDUzMDc1LCA1MzA4MSwgNTMwODcsIDUzMDk2LCAKKyAgICA1MzEwNCwgNTMxMTIsIDUzMTE5LCA1MzEyNiwgNTMxMzMsIDUzMTM5LCA1MzE0NiwgNTMxNTIsIDUzMTU5LCA1MzE2NiwgCisgICAgNTMxNzMsIDUzMTgwLCA1MzE4NiwgNTMxOTEsIDUzMjAwLCA1MzIxMCwgNTMyMTcsIDUzMjI2LCA1MzIzMiwgNTMyMzcsIAorICAgIDUzMjQyLCA1MzI1MiwgNTMyNTgsIDUzMjY0LCA1MzI3MCwgNTMyNzgsIDUzMjgzLCA1MzI5MCwgNTMyOTcsIDUzMzA4LCAKKyAgICA1MzMxNSwgNTMzMjIsIDUzMzI5LCA1MzMzNiwgNTMzNDMsIDUzMzUwLCA1MzM1NywgNTMzNjksIDUzMzgxLCA1MzM5MiwgCisgICAgNTM0MDMsIDUzNDE2LCA1MzQyOSwgNTM0MzQsIDUzNDM5LCA1MzQ0OCwgNTM0NTcsIDUzNDY0LCA1MzQ3MSwgNTM0ODAsIAorICAgIDUzNDg5LCA1MzQ5NywgNTM1MDUsIDUzNTEzLCA1MzUyMSwgNTM1MzEsIDUzNTQxLCA1MzU1NSwgNTM1NjksIDUzNTc3LCAKKyAgICA1MzU4NSwgNTM1OTcsIDUzNjA5LCA1MzYxNywgNTM2MjUsIDUzNjM1LCA1MzY0NSwgNTM2NTAsIDUzNjU1LCA1MzY2NCwgCisgICAgNTM2NzMsIDUzNjc4LCA1MzY4MywgNTM2OTEsIDUzNjk3LCA1MzcwMywgNTM3MTEsIDUzNzE5LCA1MzczMiwgNTM3NDUsIAorICAgIDUzNzQ5LCA1Mzc1MywgNTM3NjAsIDUzNzY3LCA1Mzc3NCwgNTM3ODIsIDUzNzkwLCA1Mzc5OSwgNTM4MDgsIDUzODE0LCAKKyAgICA1MzgyMCwgNTM4MjcsIDUzODM0LCA1Mzg0MSwgNTM4NDgsIDUzODU3LCA1Mzg2NiwgNTM4NjksIDUzODcyLCA1Mzg3NywgCisgICAgNTM4ODIsIDUzODg4LCA1Mzg5NCwgNTM5MDEsIDUzOTA4LCA1MzkxOCwgNTM5MjgsIDUzOTM1LCA1Mzk0MiwgNTM5NTAsIAorICAgIDUzOTU4LCA1Mzk2NiwgNTM5NzQsIDUzOTgyLCA1Mzk5MCwgNTM5OTYsIDU0MDAyLCA1NDAwNiwgNTQwMTAsIDU0MDE3LCAKKyAgICA1NDAyNCwgNTQwMjksIDU0MDM0LCA1NDAzOSwgNTQwNDQsIDU0MDUwLCA1NDA2NCwgNTQwNzEsIDU0MDc4LCA1NDA4MiwgCisgICAgNTQwODQsIDU0MDg2LCA1NDA5MSwgNTQwOTYsIDU0MTAxLCA1NDEwNiwgNTQxMTQsIDU0MTIxLCA1NDEyOCwgNTQxMzYsIAorICAgIDU0MTQ4LCA1NDE1NiwgNTQxNjQsIDU0MTc1LCA1NDE3OSwgNTQxODMsIDU0MTg5LCA1NDE5NywgNTQyMTAsIDU0MjE3LCAKKyAgICA1NDIyNCwgNTQyMzEsIDU0MjM2LCA1NDI0MywgNTQyNTIsIDU0MjYwLCA1NDI2NiwgNTQyNzIsIDU0Mjc4LCA1NDI4NywgCisgICAgNTQyOTYsIDU0MzA0LCA1NDMxMywgNTQzMTgsIDU0MzIxLCA1NDMyNiwgNTQzMzIsIDU0MzM4LCA1NDM0NCwgNTQzNTAsIAorICAgIDU0MzU0LCA1NDM1NywgNTQzNjEsIDU0MzY1LCA1NDM3MSwgNTQzNzcsIDU0MzgzLCA1NDM4OSwgNTQzOTMsIDU0Mzk3LCAKKyAgICA1NDQwNCwgNTQ0MTEsIDU0NDE4LCA1NDQyNSwgNTQ0MzIsIDU0NDM5LCA1NDQ0OSwgNTQ0NTksIDU0NDY2LCA1NDQ3MywgCisgICAgNTQ0ODEsIDU0NDg5LCA1NDQ5MywgNTQ0OTgsIDU0NTAzLCA1NDUwOSwgNTQ1MTUsIDU0NTE4LCA1NDUyMSwgNTQ1MjQsIAorICAgIDU0NTI3LCA1NDUzMSwgNTQ1MzYsIDU0NTQxLCA1NDU0NiwgNTQ1NTEsIDU0NTU2LCA1NDU2MCwgNTQ1NjQsIDU0NTY4LCAKKyAgICA1NDU3MiwgNTQ1NzYsIDU0NTgwLCA1NDU4NCwgNTQ1OTAsIDU0NTk0LCA1NDYwMCwgNTQ2MDUsIDU0NjEyLCA1NDYyMCwgCisgICAgNTQ2MjcsIDU0NjM1LCA1NDY0MiwgNTQ2NTAsIDU0NjU5LCA1NDY2NiwgNTQ2NzYsIDU0Njg3LCA1NDY5MywgNTQ3MDIsIAorICAgIDU0NzA4LCA1NDcxNywgNTQ3MjYsIDU0NzMyLCA1NDczOCwgNTQ3NDIsIDU0NzQ2LCA1NDc1NSwgNTQ3NjQsIDU0NzcxLCAKKyAgICA1NDc3OCwgNTQ3ODcsIDAsIDAsIDAsIDU0Nzk2LCA1NDgwMSwgNTQ4MDUsIDU0ODA5LCA1NDgxNCwgNTQ4MTksIDU0ODI0LCAKKyAgICA1NDgzMiwgNTQ4NDAsIDU0ODQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NDg0NywgNTQ4NTIsIDU0ODU3LCA1NDg2MiwgNTQ4NjcsIDU0ODcyLCA1NDg3NywgNTQ4ODIsIAorICAgIDU0ODg3LCA1NDg5MiwgNTQ4OTcsIDU0OTAzLCA1NDkwNywgNTQ5MTIsIDU0OTE3LCA1NDkyMiwgNTQ5MjcsIDU0OTMyLCAKKyAgICA1NDkzNywgNTQ5NDIsIDU0OTQ3LCA1NDk1MiwgNTQ5NTcsIDU0OTYyLCA1NDk2NywgNTQ5NzIsIDU0OTc3LCA1NDk4MiwgCisgICAgNTQ5ODcsIDU0OTkyLCA1NDk5NywgNTUwMDIsIDU1MDA3LCA1NTAxMiwgNTUwMTcsIDU1MDIzLCA1NTAyOCwgNTUwMzQsIAorICAgIDU1MDQzLCA1NTA0OCwgNTUwNTYsIDU1MDYzLCA1NTA3MiwgNTUwNzcsIDU1MDgyLCA1NTA4NywgNTUwOTMsIDAsIDU1MTAwLCAKKyAgICA1NTEwNSwgNTUxMTAsIDU1MTE1LCA1NTEyMCwgNTUxMjUsIDU1MTMwLCA1NTEzNSwgNTUxNDAsIDU1MTQ1LCA1NTE1MCwgCisgICAgNTUxNTYsIDU1MTYwLCA1NTE2NSwgNTUxNzAsIDU1MTc1LCA1NTE4MCwgNTUxODUsIDU1MTkwLCA1NTE5NSwgNTUyMDAsIAorICAgIDU1MjA1LCA1NTIxMCwgNTUyMTUsIDU1MjIwLCA1NTIyNSwgNTUyMzAsIDU1MjM1LCA1NTI0MCwgNTUyNDUsIDU1MjUwLCAKKyAgICA1NTI1NSwgNTUyNjAsIDU1MjY1LCA1NTI3MCwgNTUyNzYsIDU1MjgxLCA1NTI4NywgNTUyOTYsIDU1MzAxLCA1NTMwOSwgCisgICAgNTUzMTYsIDU1MzI1LCA1NTMzMCwgNTUzMzUsIDU1MzQwLCA1NTM0NiwgMCwgNTUzNTMsIDU1MzYxLCA1NTM2OSwgNTUzNzgsIAorICAgIDU1Mzg1LCA1NTM5MywgNTUzOTksIDU1NDA4LCA1NTQxNiwgNTU0MjQsIDU1NDMyLCA1NTQ0MCwgNTU0NDgsIDU1NDU2LCAKKyAgICA1NTQ2MSwgNTU0NjgsIDU1NDc0LCA1NTQ4MSwgNTU0ODksIDU1NDk2LCA1NTUwMywgNTU1MTEsIDU1NTE3LCA1NTUyMywgCisgICAgNTU1MzAsIDU1NTM3LCA1NTU0NywgNTU1NTcsIDU1NTY0LCA1NTU3MSwgNTU1NzYsIDU1NTg2LCA1NTU5NiwgNTU2MDEsIAorICAgIDU1NjA2LCA1NTYxMSwgNTU2MTYsIDU1NjIxLCA1NTYyNiwgNTU2MzEsIDU1NjM2LCA1NTY0MSwgNTU2NDYsIDU1NjUxLCAKKyAgICA1NTY1NiwgNTU2NjEsIDU1NjY2LCA1NTY3MSwgNTU2NzYsIDU1NjgxLCA1NTY4NiwgNTU2OTEsIDU1Njk2LCA1NTcwMSwgCisgICAgNTU3MDYsIDU1NzExLCA1NTcxNiwgNTU3MjEsIDU1NzI2LCA1NTczMSwgNTU3MzYsIDU1NzQxLCA1NTc0NiwgNTU3NTAsIAorICAgIDU1NzU0LCA1NTc1OSwgNTU3NjQsIDU1NzY5LCA1NTc3NCwgNTU3NzksIDU1Nzg0LCA1NTc4OSwgNTU3OTQsIDU1Nzk5LCAKKyAgICA1NTgwNCwgNTU4MDksIDU1ODE0LCA1NTgxOSwgNTU4MjQsIDU1ODI5LCA1NTgzNCwgNTU4MzksIDU1ODQ0LCA1NTg1MSwgCisgICAgNTU4NTgsIDU1ODY1LCA1NTg3MiwgNTU4NzksIDU1ODg2LCA1NTg5MywgNTU5MDAsIDU1OTA3LCA1NTkxNCwgNTU5MjEsIAorICAgIDU1OTI4LCA1NTkzNSwgNTU5NDIsIDU1OTQ3LCA1NTk1MiwgNTU5NTksIDU1OTY2LCA1NTk3MywgNTU5ODAsIDU1OTg3LCAKKyAgICA1NTk5NCwgNTYwMDEsIDU2MDA4LCA1NjAxNSwgNTYwMjIsIDU2MDI5LCA1NjAzNiwgNTYwNDIsIDU2MDQ4LCA1NjA1NCwgCisgICAgNTYwNjAsIDU2MDY3LCA1NjA3NCwgNTYwODEsIDU2MDg4LCA1NjA5NSwgNTYxMDIsIDU2MTA5LCA1NjExNiwgNTYxMjMsIAorICAgIDU2MTMwLCA1NjEzOCwgNTYxNDYsIDU2MTU0LCA1NjE2MiwgNTYxNzAsIDU2MTc4LCA1NjE4NiwgNTYxOTQsIDU2MTk4LCAKKyAgICA1NjIwNCwgNTYyMTAsIDU2MjE0LCA1NjIyMCwgNTYyMjYsIDU2MjMyLCA1NjIzOSwgNTYyNDYsIDU2MjUzLCA1NjI2MCwgCisgICAgNTYyNjUsIDU2MjcxLCA1NjI3NywgNTYyODQsIDAsIDAsIDAsIDAsIDAsIDU2MjkxLCA1NjI5OSwgNTYzMDgsIDU2MzE3LCAKKyAgICA1NjMyNSwgNTYzMzEsIDU2MzM2LCA1NjM0MSwgNTYzNDYsIDU2MzUxLCA1NjM1NiwgNTYzNjEsIDU2MzY2LCA1NjM3MSwgCisgICAgNTYzNzYsIDU2MzgxLCA1NjM4NiwgNTYzOTEsIDU2Mzk2LCA1NjQwMSwgNTY0MDYsIDU2NDExLCA1NjQxNiwgNTY0MjEsIAorICAgIDU2NDI2LCA1NjQzMSwgNTY0MzYsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU2LCA1NjQ2MSwgNTY0NjYsIDU2NDcxLCAKKyAgICA1NjQ3NiwgNTY0ODEsIDU2NDg2LCA1NjQ5MSwgNTY0OTYsIDU2NTAxLCA1NjUwNiwgNTY1MTEsIDU2NTE2LCA1NjUyMSwgCisgICAgNTY1MjYsIDAsIDU2NTMxLCAwLCAwLCAwLCAwLCAwLCA1NjUzNiwgMCwgMCwgNTY1NDEsIDU2NTQ1LCA1NjU1MCwgNTY1NTUsIAorICAgIDU2NTYwLCA1NjU2NSwgNTY1NzQsIDU2NTc5LCA1NjU4NCwgNTY1ODksIDU2NTk0LCA1NjU5OSwgNTY2MDQsIDU2NjA5LCAKKyAgICA1NjYxNCwgNTY2MjEsIDU2NjI2LCA1NjYzMSwgNTY2NDAsIDU2NjQ3LCA1NjY1MiwgNTY2NTcsIDU2NjYyLCA1NjY2OSwgCisgICAgNTY2NzQsIDU2NjgxLCA1NjY4NiwgNTY2OTEsIDU2Njk4LCA1NjcwNSwgNTY3MTAsIDU2NzE1LCA1NjcyMCwgNTY3MjcsIAorICAgIDU2NzM0LCA1NjczOSwgNTY3NDQsIDU2NzQ5LCA1Njc1NCwgNTY3NTksIDU2NzY2LCA1Njc3MywgNTY3NzgsIDU2NzgzLCAKKyAgICA1Njc4OCwgNTY3OTMsIDU2Nzk4LCA1NjgwMywgNTY4MDgsIDU2ODEzLCA1NjgxOCwgNTY4MjMsIDU2ODI4LCA1NjgzNSwgCisgICAgNTY4NDAsIDU2ODQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg1MCwgNTY4NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU2ODYyLCA1Njg2NywgNTY4NzEsIDU2ODc1LCA1Njg3OSwgNTY4ODMsIDU2ODg3LCA1Njg5MSwgCisgICAgNTY4OTUsIDU2ODk5LCA1NjkwMywgNTY5MDcsIDU2OTEzLCA1NjkxNywgNTY5MjEsIDU2OTI1LCA1NjkyOSwgNTY5MzMsIAorICAgIDU2OTM3LCA1Njk0MSwgNTY5NDUsIDU2OTQ5LCA1Njk1MywgNTY5NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU2OTYxLCA1Njk2NSwgNTY5NjksIDU2OTczLCA1Njk3NywgNTY5ODEsIDU2OTg1LCAwLCA1Njk4OSwgNTY5OTMsIDU2OTk3LCAKKyAgICA1NzAwMSwgNTcwMDUsIDU3MDA5LCA1NzAxMywgMCwgNTcwMTcsIDU3MDIxLCA1NzAyNSwgNTcwMjksIDU3MDMzLCA1NzAzNywgCisgICAgNTcwNDEsIDAsIDU3MDQ1LCA1NzA0OSwgNTcwNTMsIDU3MDU3LCA1NzA2MSwgNTcwNjUsIDU3MDY5LCAwLCA1NzA3MywgCisgICAgNTcwNzcsIDU3MDgxLCA1NzA4NSwgNTcwODksIDU3MDkzLCA1NzA5NywgMCwgNTcxMDEsIDU3MTA1LCA1NzEwOSwgNTcxMTMsIAorICAgIDU3MTE3LCA1NzEyMSwgNTcxMjUsIDAsIDU3MTI5LCA1NzEzMywgNTcxMzcsIDU3MTQxLCA1NzE0NSwgNTcxNDksIDU3MTUzLCAKKyAgICAwLCA1NzE1NywgNTcxNjEsIDU3MTY1LCA1NzE2OSwgNTcxNzMsIDU3MTc3LCA1NzE4MSwgMCwgNTcxODUsIDU3MTkwLCAKKyAgICA1NzE5NSwgNTcyMDAsIDU3MjA1LCA1NzIxMCwgNTcyMTUsIDU3MjE5LCA1NzIyNCwgNTcyMjksIDU3MjM0LCA1NzIzOCwgCisgICAgNTcyNDMsIDU3MjQ4LCA1NzI1MywgNTcyNTgsIDU3MjYyLCA1NzI2NywgNTcyNzIsIDU3Mjc3LCA1NzI4MiwgNTcyODcsIAorICAgIDU3MjkyLCA1NzI5NiwgNTczMDEsIDU3MzA2LCA1NzMxMywgNTczMTgsIDU3MzIzLCA1NzMyOSwgNTczMzYsIDU3MzQzLCAKKyAgICA1NzM1MiwgNTczNTksIDU3MzY4LCA1NzM3MiwgNTczNzYsIDU3MzgyLCA1NzM4OCwgNTczOTQsIDU3NDAyLCA1NzQwOCwgCisgICAgNTc0MTIsIDU3NDE2LCA1NzQyMCwgNTc0MjYsIDU3NDMyLCA1NzQzNiwgNTc0MzgsIDU3NDQyLCA1NzQ0OCwgNTc0NTAsIAorICAgIDU3NDU0LCA1NzQ1OCwgNTc0NjIsIDU3NDY4LCA1NzQ3MywgNTc0NzcsIDU3NDgxLCA1NzQ4NiwgNTc0OTIsIDU3NDk3LCAKKyAgICA1NzUwMiwgNTc1MDcsIDU3NTEyLCA1NzUxOSwgNTc1MjYsIDU3NTMxLCA1NzUzNiwgNTc1NDEsIDU3NTQ2LCA1NzU1MSwgCisgICAgNTc1NTYsIDU3NTYwLCA1NzU2NCwgNTc1NzEsIDU3NTc4LCA1NzU4NCwgNTc1ODgsIDU3NTkzLCA1NzU5NSwgNTc1OTksIAorICAgIDU3NjA3LCA1NzYxMSwgNTc2MTUsIDU3NjE5LCA1NzYyMywgNTc2MjksIDU3NjM1LCA1NzYzOSwgNTc2NDUsIDU3NjQ5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzY1MywgNTc2NTcsIAorICAgIDU3NjYxLCA1NzY2NiwgNTc2NzEsIDU3Njc2LCA1NzY4MCwgNTc2ODQsIDU3Njg4LCA1NzY5MywgNTc2OTgsIDU3NzAyLCAKKyAgICA1NzcwNiwgNTc3MTAsIDU3NzE0LCA1NzcxOSwgNTc3MjQsIDU3NzI5LCA1NzczNCwgNTc3MzgsIDU3NzQyLCA1Nzc0NywgCisgICAgNTc3NTIsIDU3NzU3LCA1Nzc2MiwgNTc3NjYsIDAsIDU3NzcwLCA1Nzc3NCwgNTc3NzgsIDU3NzgyLCA1Nzc4NiwgNTc3OTAsIAorICAgIDU3Nzk0LCA1Nzc5OSwgNTc4MDQsIDU3ODA4LCA1NzgxMywgNTc4MTgsIDU3ODI3LCA1NzgzMSwgNTc4MzUsIDU3ODM5LCAKKyAgICA1Nzg0NiwgNTc4NTAsIDU3ODU1LCA1Nzg2MCwgNTc4NjQsIDU3ODY4LCA1Nzg3NCwgNTc4NzksIDU3ODg0LCA1Nzg4OSwgCisgICAgNTc4OTQsIDU3ODk4LCA1NzkwMiwgNTc5MDYsIDU3OTEwLCA1NzkxNCwgNTc5MTksIDU3OTI0LCA1NzkyOCwgNTc5MzIsIAorICAgIDU3OTM3LCA1Nzk0MiwgNTc5NDcsIDU3OTUxLCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MSwgNTc5NzcsIDU3OTgxLCAKKyAgICA1Nzk4NywgNTc5OTMsIDU3OTk3LCA1ODAwMywgNTgwMDksIDU4MDE0LCA1ODAxOSwgNTgwMjMsIDU4MDI5LCA1ODAzMywgCisgICAgNTgwMzcsIDU4MDQzLCA1ODA0OSwgNTgwNTQsIDU4MDU5LCA1ODA2MywgNTgwNjcsIDU4MDc1LCA1ODA4MSwgNTgwODcsIAorICAgIDU4MDkzLCA1ODA5OCwgNTgxMDMsIDU4MTA4LCA1ODExNCwgNTgxMTgsIDU4MTI0LCA1ODEyOCwgNTgxMzIsIDU4MTM4LCAKKyAgICA1ODE0NCwgNTgxNTAsIDU4MTU2LCA1ODE2MiwgNTgxNjgsIDU4MTc0LCA1ODE4MCwgNTgxODYsIDU4MTkyLCA1ODE5OCwgCisgICAgNTgyMDQsIDU4MjA4LCA1ODIxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyMjAsIDU4MjIzLCAKKyAgICA1ODIyNywgNTgyMzEsIDU4MjM1LCA1ODIzOSwgNTgyNDIsIDU4MjQ1LCA1ODI0OSwgNTgyNTMsIDU4MjU3LCA1ODI2MSwgCisgICAgNTgyNjQsIDU4MjY5LCA1ODI3MywgNTgyNzcsIDU4MjgxLCA1ODI4NiwgNTgyOTAsIDU4Mjk0LCA1ODI5OCwgNTgzMDIsIAorICAgIDU4MzA4LCA1ODMxNCwgNTgzMTgsIDU4MzIyLCA1ODMyNiwgNTgzMzAsIDU4MzM0LCA1ODMzOCwgNTgzNDIsIDU4MzQ2LCAKKyAgICA1ODM1MCwgNTgzNTQsIDU4MzU4LCA1ODM2NCwgNTgzNjgsIDU4MzcyLCA1ODM3NiwgNTgzODAsIDU4Mzg0LCA1ODM4OCwgCisgICAgNTgzOTIsIDU4Mzk2LCA1ODQwMCwgNTg0MDQsIDU4NDA4LCA1ODQxMiwgNTg0MTYsIDU4NDIwLCA1ODQyNCwgNTg0MjgsIAorICAgIDU4NDM0LCA1ODQ0MCwgNTg0NDUsIDU4NDUwLCA1ODQ1NCwgNTg0NTgsIDU4NDYyLCA1ODQ2NiwgNTg0NzAsIDU4NDc0LCAKKyAgICA1ODQ3OCwgNTg0ODIsIDU4NDg2LCA1ODQ5MCwgNTg0OTQsIDU4NDk4LCA1ODUwMiwgNTg1MDYsIDU4NTEwLCA1ODUxNCwgCisgICAgNTg1MTgsIDU4NTIyLCA1ODUyNiwgNTg1MzAsIDU4NTM0LCA1ODUzOCwgNTg1NDIsIDU4NTQ2LCA1ODU1MiwgNTg1NTYsIAorICAgIDU4NTYwLCA1ODU2NCwgNTg1NjgsIDU4NTcyLCA1ODU3NiwgNTg1ODAsIDU4NTg0LCA1ODU4OSwgNTg1OTYsIDU4NjAwLCAKKyAgICA1ODYwNCwgNTg2MDgsIDU4NjEyLCA1ODYxNiwgNTg2MjAsIDU4NjI0LCA1ODYyOCwgNTg2MzIsIDU4NjM2LCA1ODY0MCwgCisgICAgNTg2NDQsIDU4NjUxLCA1ODY1NSwgNTg2NjEsIDU4NjY1LCA1ODY2OSwgNTg2NzMsIDU4Njc3LCA1ODY4MSwgNTg2ODQsIAorICAgIDU4Njg4LCA1ODY5MiwgNTg2OTYsIDU4NzAwLCA1ODcwNCwgNTg3MDgsIDU4NzEyLCA1ODcxNiwgNTg3MjAsIDU4NzI0LCAKKyAgICA1ODcyOCwgNTg3MzIsIDU4NzM2LCA1ODc0MCwgNTg3NDQsIDU4NzQ4LCA1ODc1MiwgNTg3NTYsIDU4NzYwLCA1ODc2NCwgCisgICAgNTg3NjgsIDU4NzcyLCA1ODc3NiwgNTg3ODAsIDU4Nzg0LCA1ODc4OCwgNTg3OTIsIDU4Nzk2LCA1ODgwMCwgNTg4MDQsIAorICAgIDU4ODA4LCA1ODgxMiwgNTg4MTgsIDU4ODIyLCA1ODgyNiwgNTg4MzAsIDU4ODM0LCA1ODgzOCwgNTg4NDIsIDU4ODQ2LCAKKyAgICA1ODg1MCwgNTg4NTQsIDU4ODU4LCA1ODg2MiwgNTg4NjYsIDU4ODcwLCA1ODg3NCwgNTg4NzgsIDU4ODgyLCA1ODg4NiwgCisgICAgNTg4OTAsIDU4ODk0LCA1ODg5OCwgNTg5MDIsIDU4OTA2LCA1ODkxMCwgNTg5MTQsIDU4OTE4LCA1ODkyMiwgNTg5MjYsIAorICAgIDU4OTM0LCA1ODkzOCwgNTg5NDIsIDU4OTQ2LCA1ODk1MCwgNTg5NTQsIDU4OTYwLCA1ODk2NCwgNTg5NjgsIDU4OTcyLCAKKyAgICA1ODk3NiwgNTg5ODAsIDU4OTg0LCA1ODk4OCwgNTg5OTIsIDU4OTk2LCA1OTAwMCwgNTkwMDQsIDU5MDA4LCA1OTAxMiwgCisgICAgNTkwMTgsIDU5MDIyLCA1OTAyNiwgNTkwMzAsIDU5MDM0LCA1OTAzOCwgNTkwNDIsIDU5MDQ2LCA1OTA1MCwgNTkwNTQsIAorICAgIDU5MDU4LCA1OTA2MiwgNTkwNjYsIDU5MDcwLCA1OTA3NCwgNTkwNzgsIDU5MDgyLCA1OTA4NiwgNTkwOTAsIDU5MDk0LCAKKyAgICA1OTA5OCwgNTkxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU5MTA2LCA1OTExNSwgNTkxMjMsIDU5MTM1LCA1OTE0NiwgNTkxNTQsIDU5MTYzLCA1OTE3MiwgCisgICAgNTkxODIsIDU5MTk0LCA1OTIwNiwgNTkyMTgsIDAsIDAsIDAsIDAsIDU5MjI0LCA1OTIyNywgNTkyMzAsIDU5MjM1LCAKKyAgICA1OTIzOCwgNTkyNDUsIDU5MjQ5LCA1OTI1MywgNTkyNTcsIDU5MjYxLCA1OTI2NSwgNTkyNzAsIDU5Mjc1LCA1OTI3OSwgCisgICAgNTkyODMsIDU5Mjg4LCA1OTI5MywgNTkyOTgsIDU5MzAzLCA1OTMwNiwgNTkzMDksIDU5MzE1LCA1OTMyMSwgNTkzMjYsIAorICAgIDU5MzMxLCA1OTMzOCwgNTkzNDUsIDU5MzQ5LCA1OTM1MywgNTkzNTcsIDU5MzY1LCA1OTM3MSwgNTkzNzgsIDU5MzgzLCAKKyAgICA1OTM4OCwgNTkzOTMsIDU5Mzk4LCA1OTQwMywgNTk0MDgsIDU5NDEzLCA1OTQxOCwgNTk0MjMsIDU5NDI4LCA1OTQzMywgCisgICAgNTk0MzgsIDU5NDQzLCA1OTQ0OCwgNTk0NTQsIDU5NDU5LCA1OTQ2MywgNTk0NjksIDU5NDgwLCA1OTQ5MCwgNTk1MDUsIAorICAgIDU5NTE1LCA1OTUxOSwgNTk1MjksIDU5NTM1LCA1OTU0MSwgNTk1NDcsIDU5NTUyLCA1OTU1NSwgNTk1NjAsIDU5NTY0LCAwLCAKKyAgICA1OTU3MCwgNTk1NzQsIDU5NTc3LCA1OTU4MSwgNTk1ODQsIDU5NTg4LCA1OTU5MSwgNTk1OTUsIDU5NTk4LCA1OTYwMiwgCisgICAgNTk2MDUsIDU5NjA4LCA1OTYxMiwgNTk2MTYsIDU5NjIwLCA1OTYyNCwgNTk2MjgsIDU5NjMyLCA1OTYzNiwgNTk2NDAsIAorICAgIDU5NjQ0LCA1OTY0NywgNTk2NTEsIDU5NjU1LCA1OTY1OSwgNTk2NjMsIDU5NjY3LCA1OTY3MSwgNTk2NzUsIDU5Njc5LCAKKyAgICA1OTY4MywgNTk2ODcsIDU5NjkxLCA1OTY5NSwgNTk2OTksIDU5NzA0LCA1OTcwOCwgNTk3MTIsIDU5NzE2LCA1OTcyMCwgCisgICAgNTk3MjMsIDU5NzI3LCA1OTczMCwgNTk3MzQsIDU5NzM4LCA1OTc0MiwgNTk3NDYsIDU5NzQ5LCA1OTc1MywgNTk3NTYsIAorICAgIDU5NzYwLCA1OTc2NCwgNTk3NjgsIDU5NzcyLCA1OTc3NiwgNTk3ODAsIDU5Nzg0LCA1OTc4OCwgNTk3OTIsIDU5Nzk2LCAKKyAgICA1OTgwMCwgNTk4MDQsIDU5ODA3LCA1OTgxMSwgNTk4MTUsIDU5ODE5LCA1OTgyMywgNTk4MjcsIDU5ODMwLCA1OTgzNSwgCisgICAgNTk4MzksIDU5ODQ0LCA1OTg0OCwgNTk4NTEsIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY3LCA1OTg3MiwgNTk4NzYsIAorICAgIDU5ODgwLCA1OTg4NCwgNTk4ODgsIDU5ODkyLCA1OTg5NiwgNTk5MDAsIDAsIDAsIDU5OTA1LCA1OTkxMywgNTk5MjEsIAorICAgIDU5OTI4LCA1OTkzNSwgNTk5MzksIDU5OTQ1LCA1OTk1MCwgNTk5NTUsIDU5OTU5LCA1OTk2MiwgNTk5NjYsIDU5OTY5LCAKKyAgICA1OTk3MywgNTk5NzYsIDU5OTgwLCA1OTk4MywgNTk5ODcsIDU5OTkwLCA1OTk5MywgNTk5OTcsIDYwMDAxLCA2MDAwNSwgCisgICAgNjAwMDksIDYwMDEzLCA2MDAxNywgNjAwMjEsIDYwMDI1LCA2MDAyOSwgNjAwMzIsIDYwMDM2LCA2MDA0MCwgNjAwNDQsIAorICAgIDYwMDQ4LCA2MDA1MiwgNjAwNTYsIDYwMDYwLCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODAsIDYwMDg0LCAKKyAgICA2MDA4OSwgNjAwOTMsIDYwMDk3LCA2MDEwMSwgNjAxMDUsIDYwMTA4LCA2MDExMiwgNjAxMTUsIDYwMTE5LCA2MDEyMywgCisgICAgNjAxMjcsIDYwMTMxLCA2MDEzNCwgNjAxMzgsIDYwMTQxLCA2MDE0NSwgNjAxNDksIDYwMTUzLCA2MDE1NywgNjAxNjEsIAorICAgIDYwMTY1LCA2MDE2OSwgNjAxNzMsIDYwMTc3LCA2MDE4MSwgNjAxODUsIDYwMTg5LCA2MDE5MiwgNjAxOTYsIDYwMjAwLCAKKyAgICA2MDIwNCwgNjAyMDgsIDYwMjEyLCA2MDIxNSwgNjAyMjAsIDYwMjI0LCA2MDIyOSwgNjAyMzMsIDYwMjM2LCA2MDI0MCwgCisgICAgNjAyNDQsIDYwMjQ4LCA2MDI1MiwgNjAyNTcsIDYwMjYxLCA2MDI2NSwgNjAyNjksIDYwMjczLCA2MDI3NywgNjAyODEsIAorICAgIDYwMjg1LCA2MDI5MCwgNjAyOTQsIDYwMjk4LCA2MDMwMiwgNjAzMDYsIDYwMzExLCA2MDMxOCwgNjAzMjIsIDYwMzI4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA2MDMzMywgNjAzMzgsIDYwMzQzLCA2MDM0NywgNjAzNTIsIDYwMzU3LCA2MDM2MiwgNjAzNjcsIAorICAgIDYwMzcxLCA2MDM3NiwgNjAzODEsIDYwMzg2LCA2MDM5MSwgNjAzOTYsIDYwNDAxLCA2MDQwNiwgNjA0MTEsIDYwNDE2LCAKKyAgICA2MDQyMCwgNjA0MjUsIDYwNDMwLCA2MDQzNSwgNjA0MzksIDYwNDQzLCA2MDQ0NywgNjA0NTIsIDYwNDU3LCA2MDQ2MiwgCisgICAgNjA0NjcsIDYwNDcyLCA2MDQ3NywgNjA0ODIsIDYwNDg3LCA2MDQ5MiwgNjA0OTcsIDYwNTAxLCA2MDUwNSwgNjA1MTAsIAorICAgIDYwNTE1LCA2MDUyMCwgNjA1MjUsIDAsIDAsIDAsIDYwNTMwLCA2MDUzNCwgNjA1MzgsIDYwNTQyLCA2MDU0NiwgNjA1NTAsIAorICAgIDYwNTU0LCA2MDU1OCwgNjA1NjIsIDYwNTY2LCA2MDU3MCwgNjA1NzQsIDYwNTc4LCA2MDU4MiwgNjA1ODYsIDYwNTkwLCAKKyAgICA2MDU5NCwgNjA1OTgsIDYwNjAyLCA2MDYwNiwgNjA2MTAsIDYwNjE0LCA2MDYxOCwgNjA2MjIsIDYwNjI2LCA2MDYzMCwgCisgICAgNjA2MzQsIDYwNjM4LCA2MDY0MiwgNjA2NDYsIDYwNjUwLCA2MDY1MywgNjA2NTcsIDYwNjYwLCA2MDY2NCwgNjA2NjgsIAorICAgIDYwNjcxLCA2MDY3NSwgNjA2NzksIDYwNjgyLCA2MDY4NiwgNjA2OTAsIDYwNjk0LCA2MDY5OCwgNjA3MDEsIDYwNzA1LCAKKyAgICA2MDcwOSwgNjA3MTMsIDYwNzE3LCA2MDcyMSwgNjA3MjUsIDYwNzI4LCA2MDczMSwgNjA3MzUsIDYwNzM5LCA2MDc0MywgCisgICAgNjA3NDcsIDYwNzUxLCA2MDc1NSwgNjA3NTksIDYwNzYzLCA2MDc2NywgNjA3NzEsIDYwNzc1LCA2MDc3OSwgNjA3ODMsIAorICAgIDYwNzg3LCA2MDc5MSwgNjA3OTUsIDYwNzk5LCA2MDgwMywgNjA4MDcsIDYwODExLCA2MDgxNSwgNjA4MTksIDYwODIzLCAKKyAgICA2MDgyNywgNjA4MzEsIDYwODM1LCA2MDgzOSwgNjA4NDMsIDYwODQ3LCA2MDg1MSwgNjA4NTUsIDYwODU5LCA2MDg2MywgCisgICAgNjA4NjcsIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODgzLCA2MDg4NywgNjA4OTEsIDYwODk1LCAwLCA2MDg5OSwgNjA5MDUsIAorICAgIDYwOTExLCA2MDkxNiwgNjA5MjEsIDYwOTI2LCA2MDkzMiwgNjA5MzgsIDYwOTQ0LCA2MDk1MCwgNjA5NTYsIDYwOTYyLCAKKyAgICA2MDk2OCwgNjA5NzQsIDYwOTgwLCA2MDk4NiwgNjA5OTIsIDYwOTk3LCA2MTAwMiwgNjEwMDcsIDYxMDEyLCA2MTAxNywgCisgICAgNjEwMjIsIDYxMDI3LCA2MTAzMiwgNjEwMzcsIDYxMDQyLCA2MTA0NywgNjEwNTIsIDYxMDU3LCA2MTA2MiwgNjEwNjcsIAorICAgIDYxMDcyLCA2MTA3NywgNjEwODIsIDYxMDg3LCA2MTA5MiwgNjEwOTgsIDYxMTA0LCA2MTExMCwgNjExMTYsIDYxMTIxLCAKKyAgICA2MTEyNiwgMCwgMCwgMCwgMCwgMCwgNjExMzEsIDYxMTM2LCA2MTE0MSwgNjExNDYsIDYxMTUxLCA2MTE1NiwgNjExNjEsIAorICAgIDYxMTY2LCA2MTE3MSwgNjExNzYsIDYxMTgxLCA2MTE4NiwgNjExOTEsIDYxMTk2LCA2MTIwMSwgNjEyMDYsIDYxMjExLCAKKyAgICA2MTIxNiwgNjEyMjEsIDYxMjI2LCA2MTIzMSwgNjEyMzYsIDYxMjQxLCA2MTI0NiwgNjEyNTEsIDYxMjU2LCA2MTI2MSwgCisgICAgNjEyNjYsIDYxMjcxLCA2MTI3NiwgNjEyODEsIDYxMjg2LCA2MTI5MSwgNjEyOTYsIDYxMzAxLCA2MTMwNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzMTEsIDYxMzE2LCA2MTMyMSwgNjEzMjYsIDYxMzMwLCA2MTMzNSwgCisgICAgNjEzMzksIDYxMzQ0LCA2MTM0OSwgNjEzNTQsIDYxMzU5LCA2MTM2NCwgNjEzNjgsIDYxMzczLCA2MTM3OCwgNjEzODMsIAorICAgIDYxMzg4LCA2MTM5MiwgNjEzOTYsIDYxNDAwLCA2MTQwNCwgNjE0MDgsIDYxNDEyLCA2MTQxNiwgNjE0MjAsIDYxNDI0LCAKKyAgICA2MTQyOCwgNjE0MzIsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ5LCA2MTQ1NCwgNjE0NTksIDYxNDY0LCA2MTQ2OSwgCisgICAgNjE0NzQsIDYxNDc5LCA2MTQ4NCwgNjE0ODksIDYxNDk0LCA2MTQ5OSwgNjE1MDQsIDYxNTA5LCA2MTUxNCwgNjE1MTksIAorICAgIDYxNTI1LCAwLCA2MTUzMiwgNjE1MzUsIDYxNTM4LCA2MTU0MSwgNjE1NDQsIDYxNTQ3LCA2MTU1MCwgNjE1NTMsIDYxNTU2LCAKKyAgICA2MTU1OSwgNjE1NjMsIDYxNTY3LCA2MTU3MSwgNjE1NzUsIDYxNTc5LCA2MTU4MywgNjE1ODcsIDYxNTkxLCA2MTU5NSwgCisgICAgNjE1OTksIDYxNjAzLCA2MTYwNywgNjE2MTEsIDYxNjE1LCA2MTYxOSwgNjE2MjMsIDYxNjI3LCA2MTYzMSwgNjE2MzUsIAorICAgIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCA2MTY1NSwgNjE2NTksIDYxNjYzLCA2MTY2NywgNjE2NzEsIDYxNjc1LCAKKyAgICA2MTY3OSwgNjE2ODMsIDYxNjkyLCA2MTcwMSwgNjE3MTAsIDYxNzE5LCA2MTcyOCwgNjE3MzcsIDYxNzQ2LCA2MTc1NSwgCisgICAgNjE3NTgsIDYxNzYzLCA2MTc2OCwgNjE3NzMsIDYxNzc4LCA2MTc4MywgNjE3ODgsIDYxNzkzLCA2MTc5OCwgNjE4MDMsIAorICAgIDYxODA3LCA2MTgxMiwgNjE4MTcsIDYxODIyLCA2MTgyNywgNjE4MzIsIDYxODM2LCA2MTg0MCwgNjE4NDQsIDYxODQ4LCAKKyAgICA2MTg1MiwgNjE4NTYsIDYxODYwLCA2MTg2NCwgNjE4NjgsIDYxODcyLCA2MTg3NiwgNjE4ODAsIDYxODg0LCA2MTg4OCwgCisgICAgNjE4OTMsIDYxODk4LCA2MTkwMywgNjE5MDgsIDYxOTEzLCA2MTkxOCwgNjE5MjMsIDYxOTI4LCA2MTkzMywgNjE5MzgsIAorICAgIDYxOTQzLCA2MTk0OCwgNjE5NTMsIDYxOTU4LCA2MTk2NCwgNjE5NzAsIDYxOTc1LCA2MTk4MCwgNjE5ODMsIDYxOTg2LCAKKyAgICA2MTk4OSwgNjE5OTIsIDYxOTk1LCA2MTk5OCwgNjIwMDEsIDYyMDA0LCA2MjAwNywgNjIwMTEsIDYyMDE1LCA2MjAxOSwgCisgICAgNjIwMjMsIDYyMDI3LCA2MjAzMSwgNjIwMzUsIDYyMDM5LCA2MjA0MywgNjIwNDcsIDYyMDUxLCA2MjA1NSwgNjIwNTksIAorICAgIDYyMDYzLCA2MjA2NywgNjIwNzEsIDYyMDc1LCA2MjA3OSwgNjIwODMsIDYyMDg3LCA2MjA5MSwgNjIwOTUsIDYyMDk5LCAKKyAgICA2MjEwMywgNjIxMDcsIDYyMTExLCA2MjExNSwgNjIxMTksIDYyMTIzLCA2MjEyNywgNjIxMzEsIDYyMTM1LCA2MjEzOSwgCisgICAgNjIxNDMsIDYyMTQ3LCA2MjE1MSwgNjIxNTUsIDYyMTU5LCA2MjE2MywgNjIxNjcsIDYyMTcyLCA2MjE3NywgNjIxODIsIAorICAgIDYyMTg3LCA2MjE5MSwgNjIxOTYsIDYyMjAxLCA2MjIwNiwgNjIyMTEsIDYyMjE2LCA2MjIyMSwgNjIyMjYsIDYyMjMxLCAKKyAgICA2MjIzNiwgNjIyNDAsIDYyMjQ3LCA2MjI1NCwgNjIyNjEsIDYyMjY4LCA2MjI3NSwgNjIyODIsIDYyMjg5LCA2MjI5NiwgCisgICAgNjIzMDMsIDYyMzEwLCA2MjMxNywgNjIzMjQsIDYyMzI3LCA2MjMzMCwgNjIzMzMsIDYyMzM4LCA2MjM0MSwgNjIzNDQsIAorICAgIDYyMzQ3LCA2MjM1MCwgNjIzNTMsIDYyMzU2LCA2MjM2MCwgNjIzNjQsIDYyMzY4LCA2MjM3MiwgNjIzNzUsIDYyMzc5LCAKKyAgICA2MjM4MywgNjIzODcsIDYyMzkxLCA2MjM5NSwgNjIzOTksIDYyNDAzLCA2MjQwNywgNjI0MTAsIDYyNDEzLCA2MjQxNywgCisgICAgNjI0MjEsIDYyNDI1LCA2MjQyOSwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MSwgNjI0NTUsIAorICAgIDYyNDU5LCA2MjQ2MywgNjI0NjcsIDYyNDcwLCA2MjQ3NCwgNjI0NzgsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCAKKyAgICA2MjQ5NywgNjI1MDEsIDYyNTA1LCA2MjUwOSwgMCwgNjI1MTMsIDYyNTE2LCA2MjUxOSwgNjI1MjIsIDYyNTI1LCA2MjUyOCwgCisgICAgNjI1MzEsIDYyNTM0LCA2MjUzNywgNjI1NDAsIDYyNTQzLCA2MjU0NiwgNjI1NDksIDYyNTUyLCA2MjU1NSwgNjI1NTgsIAorICAgIDYyNTYxLCA2MjU2NCwgNjI1NjcsIDYyNTcwLCA2MjU3MywgNjI1NzYsIDYyNTc5LCA2MjU4MiwgNjI1ODUsIDYyNTg4LCAKKyAgICA2MjU5MSwgNjI1OTQsIDYyNTk3LCA2MjYwMCwgNjI2MDMsIDYyNjA2LCA2MjYwOSwgNjI2MTIsIDYyNjE1LCA2MjYxOCwgCisgICAgNjI2MjEsIDYyNjI0LCA2MjYyNywgNjI2MzAsIDYyNjMzLCA2MjYzNiwgNjI2MzksIDYyNjQyLCA2MjY0NSwgNjI2NDgsIAorICAgIDYyNjUxLCA2MjY1NCwgNjI2NTcsIDYyNjYwLCA2MjY2MywgNjI2NjYsIDYyNjY5LCA2MjY3MiwgNjI2NzUsIDYyNjc4LCAKKyAgICA2MjY4MSwgNjI2ODQsIDYyNjg3LCA2MjY5MCwgNjI2OTMsIDYyNjk2LCA2MjY5OSwgNjI3MDIsIDYyNzA1LCA2MjcwOCwgCisgICAgNjI3MTEsIDYyNzE0LCA2MjcxNywgNjI3MjAsIDYyNzIzLCA2MjcyNiwgNjI3MjksIDYyNzMyLCA2MjczNSwgNjI3MzgsIAorICAgIDYyNzQxLCA2Mjc0NCwgNjI3NDcsIDYyNzUwLCA2Mjc1MywgNjI3NTYsIDYyNzU5LCA2Mjc2MiwgNjI3NjUsIDYyNzY4LCAKKyAgICA2Mjc3MSwgNjI3NzQsIDYyNzc3LCA2Mjc4NiwgNjI3OTQsIDYyODAyLCA2MjgxMCwgNjI4MTgsIDYyODI2LCA2MjgzNCwgCisgICAgNjI4NDIsIDYyODUwLCA2Mjg1OCwgNjI4NjcsIDYyODc2LCA2Mjg4NSwgNjI4OTQsIDYyOTAzLCA2MjkxMiwgNjI5MjEsIAorICAgIDYyOTMwLCA2MjkzOSwgNjI5NDgsIDYyOTU3LCA2Mjk2NiwgNjI5NzUsIDYyOTg0LCA2Mjk5MywgNjI5OTYsIDYyOTk5LCAKKyAgICA2MzAwMiwgNjMwMDQsIDYzMDA3LCA2MzAxMCwgNjMwMTMsIDYzMDE4LCA2MzAyMywgNjMwMjYsIDYzMDMzLCA2MzA0MCwgCisgICAgNjMwNDcsIDYzMDU0LCA2MzA1NywgNjMwNjIsIDYzMDY0LCA2MzA2OCwgNjMwNzAsIDYzMDcyLCA2MzA3NSwgNjMwNzgsIAorICAgIDYzMDgxLCA2MzA4NCwgNjMwODcsIDYzMDkwLCA2MzA5MywgNjMwOTgsIDYzMTAzLCA2MzEwNiwgNjMxMDksIDYzMTEyLCAKKyAgICA2MzExNSwgNjMxMTgsIDYzMTIxLCA2MzEyNCwgNjMxMjgsIDYzMTMxLCA2MzEzNCwgNjMxMzcsIDYzMTQwLCA2MzE0MywgCisgICAgNjMxNDcsIDYzMTUwLCA2MzE1MywgNjMxNTYsIDYzMTYxLCA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIAorICAgIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjEwLCA2MzIxMiwgNjMyMTUsIDYzMjE4LCA2MzIyMSwgNjMyMjQsIDYzMjMwLCAKKyAgICA2MzIzOCwgNjMyNDEsIDYzMjQ0LCA2MzI0OSwgNjMyNTIsIDYzMjU1LCA2MzI1OCwgNjMyNjMsIDYzMjY2LCA2MzI2OSwgCisgICAgNjMyNzQsIDYzMjc3LCA2MzI4MCwgNjMyODUsIDYzMjg4LCA2MzI5MSwgNjMyOTYsIDYzMzAxLCA2MzMwNiwgNjMzMDksIAorICAgIDYzMzEyLCA2MzMxNSwgNjMzMTgsIDYzMzI0LCA2MzMyNywgNjMzMzAsIDYzMzMzLCA2MzMzNSwgNjMzMzgsIDYzMzQxLCAKKyAgICA2MzM0NCwgNjMzNDksIDYzMzUyLCA2MzM1NSwgNjMzNTgsIDYzMzYxLCA2MzM2NCwgNjMzNjksIDYzMzcyLCA2MzM3NSwgCisgICAgNjMzNzgsIDYzMzgxLCA2MzM4NCwgNjMzODcsIDYzMzkwLCA2MzM5MywgNjMzOTYsIDYzNDAxLCA2MzQwNSwgNjM0MTMsIAorICAgIDYzNDIxLCA2MzQyOSwgNjM0MzcsIDYzNDQ1LCA2MzQ1MywgNjM0NjEsIDYzNDY5LCA2MzQ3NywgNjM0ODYsIDYzNDk1LCAKKyAgICA2MzUwNCwgNjM1MTMsIDYzNTIyLCA2MzUzMSwgNjM1NDAsIDYzNTQ5LCA2MzU1OCwgNjM1NjcsIDYzNTc2LCA2MzU4NSwgCisgICAgNjM1OTQsIDYzNjAzLCA2MzYxMiwgNjM2MjEsIDYzNjMwLCA2MzYzOSwgNjM2NDgsIDYzNjU3LCA2MzY2NiwgNjM2NzUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNjc4LCA2MzY4NywgNjM2OTYsIDYzNzA3LCAKKyAgICA2MzcxNCwgNjM3MTksIDYzNzI0LCA2MzczMSwgNjM3MzgsIDYzNzQ0LCA2Mzc0OSwgNjM3NTQsIDYzNzU5LCA2Mzc2NCwgCisgICAgNjM3NzEsIDYzNzc2LCA2Mzc4MSwgNjM3ODYsIDYzNzk3LCA2MzgwMiwgNjM4MDcsIDYzODE0LCA2MzgxOSwgNjM4MjYsIAorICAgIDYzODMxLCA2MzgzNiwgNjM4NDMsIDYzODUwLCA2Mzg1NywgNjM4NjYsIDYzODc1LCA2Mzg4MCwgNjM4ODUsIDYzODkwLCAKKyAgICA2Mzg5NywgNjM5MDIsIDYzOTEyLCA2MzkxOSwgNjM5MjQsIDYzOTI5LCA2MzkzNCwgNjM5MzksIDYzOTQ0LCA2Mzk0OSwgCisgICAgNjM5NTgsIDYzOTY1LCA2Mzk3MiwgNjM5NzcsIDYzOTg0LCA2Mzk4OSwgNjM5OTYsIDY0MDA1LCA2NDAxNiwgNjQwMjEsIAorICAgIDY0MDMwLCA2NDAzNSwgNjQwNDIsIDY0MDUxLCA2NDA2MCwgNjQwNjUsIDY0MDcwLCA2NDA3NywgNjQwODMsIDY0MDkwLCAKKyAgICA2NDA5NywgNjQxMDEsIDY0MTA1LCA2NDEwOCwgNjQxMTIsIDY0MTE2LCA2NDEyMCwgNjQxMjQsIDY0MTI4LCA2NDEzMiwgCisgICAgNjQxMzYsIDY0MTM5LCA2NDE0MywgNjQxNDcsIDY0MTUxLCA2NDE1NSwgNjQxNTksIDY0MTYzLCA2NDE2NiwgNjQxNzAsIAorICAgIDY0MTc0LCA2NDE3NywgNjQxODEsIDY0MTg1LCA2NDE4OSwgNjQxOTMsIDY0MTk3LCA2NDIwMSwgNjQyMDUsIDY0MjA5LCAKKyAgICA2NDIxMywgNjQyMTcsIDY0MjIxLCA2NDIyNSwgNjQyMjksIDY0MjMzLCA2NDIzNywgNjQyNDEsIDY0MjQ1LCA2NDI0OSwgCisgICAgNjQyNTMsIDY0MjU3LCA2NDI2MSwgNjQyNjUsIDY0MjY5LCA2NDI3MywgNjQyNzcsIDY0MjgxLCA2NDI4NSwgNjQyODksIAorICAgIDY0MjkzLCA2NDI5NywgNjQzMDEsIDY0MzA1LCA2NDMwOSwgNjQzMTMsIDY0MzE3LCA2NDMyMSwgNjQzMjUsIDY0MzI5LCAKKyAgICA2NDMzMywgNjQzMzcsIDY0MzQxLCA2NDM0NSwgNjQzNDksIDY0MzUzLCA2NDM1NiwgNjQzNjAsIDY0MzY0LCA2NDM2OCwgCisgICAgNjQzNzIsIDY0Mzc2LCA2NDM4MCwgNjQzODQsIDY0Mzg4LCA2NDM5MiwgNjQzOTYsIDY0NDAwLCA2NDQwNCwgNjQ0MDgsIAorICAgIDY0NDEyLCA2NDQxNiwgNjQ0MjAsIDY0NDI0LCA2NDQyOCwgNjQ0MzIsIDY0NDM2LCA2NDQ0MCwgNjQ0NDQsIDY0NDQ4LCAKKyAgICA2NDQ1MiwgNjQ0NTYsIDY0NDYwLCA2NDQ2NCwgNjQ0NjgsIDY0NDcyLCA2NDQ3NiwgNjQ0ODAsIDY0NDg0LCA2NDQ4OCwgCisgICAgNjQ0OTIsIDY0NDk2LCA2NDUwMCwgNjQ1MDQsIDY0NTA4LCA2NDUxMiwgNjQ1MTYsIDY0NTIwLCA2NDUyNCwgNjQ1MjgsIAorICAgIDY0NTMyLCA2NDUzNiwgNjQ1NDAsIDY0NTQ0LCA2NDU0OCwgNjQ1NTIsIDY0NTU2LCA2NDU2MCwgNjQ1NjQsIDY0NTY4LCAKKyAgICA2NDU3MiwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgNjQ2MDAsIDY0NjA0LCA2NDYwOCwgCisgICAgNjQ2MTIsIDY0NjE2LCA2NDYyMCwgNjQ2MjQsIDY0NjI4LCA2NDYzMiwgNjQ2MzYsIDY0NjQwLCA2NDY0NCwgNjQ2NDgsIAorICAgIDY0NjUyLCA2NDY1NiwgNjQ2NjAsIDY0NjY0LCA2NDY2OCwgNjQ2NzIsIDY0Njc2LCA2NDY4MCwgNjQ2ODQsIDY0Njg4LCAKKyAgICA2NDY5MiwgNjQ2OTYsIDY0NzAwLCA2NDcwNCwgNjQ3MDgsIDY0NzEyLCA2NDcxNiwgNjQ3MjAsIDY0NzI0LCA2NDcyOCwgCisgICAgNjQ3MzIsIDY0NzM2LCA2NDc0MCwgNjQ3NDQsIDY0NzQ4LCA2NDc1MiwgNjQ3NTYsIDY0NzYwLCA2NDc2NCwgNjQ3NjgsIAorICAgIDY0NzcyLCA2NDc3NiwgNjQ3ODAsIDY0Nzg0LCA2NDc4OCwgNjQ3OTIsIDY0Nzk2LCA2NDgwMCwgNjQ4MDQsIDY0ODA4LCAKKyAgICA2NDgxMiwgNjQ4MTYsIDY0ODIwLCA2NDgyNCwgNjQ4MjcsIDY0ODMxLCA2NDgzNSwgNjQ4MzksIDY0ODQzLCA2NDg0NywgCisgICAgNjQ4NTEsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzUsIDY0ODc5LCA2NDg4MywgNjQ4ODcsIAorICAgIDY0ODkxLCA2NDg5NSwgNjQ4OTksIDY0OTAzLCA2NDkwNywgNjQ5MTEsIDY0OTE1LCA2NDkxOSwgNjQ5MjMsIDY0OTI3LCAKKyAgICA2NDkzMSwgNjQ5MzUsIDY0OTM5LCA2NDk0MywgNjQ5NDcsIDY0OTUxLCA2NDk1NSwgNjQ5NTksIDY0OTYzLCA2NDk2NywgCisgICAgNjQ5NzEsIDY0OTc1LCA2NDk3OSwgNjQ5ODMsIDY0OTg3LCA2NDk5MSwgNjQ5OTUsIDY0OTk5LCA2NTAwMywgNjUwMDcsIAorICAgIDY1MDExLCA2NTAxNSwgNjUwMTksIDY1MDIzLCA2NTAyNywgNjUwMzEsIDY1MDM1LCA2NTAzOSwgNjUwNDMsIDY1MDQ3LCAKKyAgICA2NTA1MSwgNjUwNTUsIDY1MDU5LCA2NTA2MywgNjUwNjcsIDY1MDcxLCA2NTA3NSwgNjUwNzksIDY1MDgzLCA2NTA4NywgCisgICAgNjUwOTEsIDY1MDk1LCA2NTA5OSwgNjUxMDMsIDY1MTA3LCA2NTExMSwgNjUxMTUsIDY1MTE5LCA2NTEyMywgNjUxMjcsIAorICAgIDY1MTMxLCA2NTEzNSwgNjUxMzksIDY1MTQzLCA2NTE0NywgNjUxNTEsIDY1MTU1LCA2NTE1OSwgNjUxNjMsIDY1MTY3LCAKKyAgICA2NTE3MSwgNjUxNzUsIDY1MTc5LCA2NTE4MywgNjUxODcsIDY1MTkxLCA2NTE5NSwgNjUxOTksIDY1MjAzLCA2NTIwNywgCisgICAgNjUyMTEsIDY1MjE1LCA2NTIxOSwgNjUyMjMsIDY1MjI3LCA2NTIzMSwgNjUyMzUsIDY1MjM5LCA2NTI0MywgNjUyNDcsIAorICAgIDY1MjUxLCA2NTI1NSwgNjUyNTksIDY1MjYzLCA2NTI2NywgNjUyNzEsIDY1Mjc1LCA2NTI3OSwgNjUyODMsIDY1Mjg3LCAKKyAgICA2NTI5MCwgNjUyOTQsIDY1Mjk4LCA2NTMwMiwgNjUzMDYsIDY1MzEwLCA2NTMxNCwgNjUzMTgsIDY1MzIyLCA2NTMyNiwgCisgICAgNjUzMzAsIDY1MzM0LCA2NTMzOCwgNjUzNDIsIDY1MzQ2LCA2NTM1MCwgNjUzNTQsIDY1MzU4LCA2NTM2MiwgNjUzNjYsIAorICAgIDY1MzcwLCA2NTM3NCwgNjUzNzgsIDY1MzgyLCA2NTM4NiwgNjUzOTAsIDY1Mzk0LCA2NTM5OCwgNjU0MDIsIDY1NDA2LCAKKyAgICA2NTQxMCwgNjU0MTQsIDY1NDE4LCA2NTQyMiwgNjU0MjYsIDY1NDMwLCA2NTQzNCwgNjU0MzgsIDY1NDQyLCA2NTQ0NiwgCisgICAgNjU0NTAsIDY1NDU0LCA2NTQ1OCwgNjU0NjIsIDY1NDY2LCA2NTQ3MCwgNjU0NzQsIDY1NDc4LCA2NTQ4MiwgNjU0ODYsIAorICAgIDY1NDkwLCA2NTQ5NCwgNjU0OTgsIDY1NTAyLCA2NTUwNiwgNjU1MTAsIDY1NTE0LCA2NTUxOCwgNjU1MjIsIDY1NTI2LCAKKyAgICA2NTUzMCwgNjU1MzQsIDY1NTM4LCA2NTU0MiwgNjU1NDYsIDY1NTUwLCA2NTU1NCwgNjU1NTgsIDY1NTYyLCA2NTU2NiwgCisgICAgNjU1NzAsIDY1NTc0LCA2NTU3OCwgNjU1ODIsIDY1NTg2LCA2NTU5MCwgNjU1OTQsIDY1NTk4LCA2NTYwMiwgNjU2MDYsIAorICAgIDY1NjEwLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCA2NTYyNiwgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCAKKyAgICA2NTY0OSwgNjU2NTMsIDY1NjU3LCA2NTY2MSwgNjU2NjUsIDY1NjY5LCA2NTY3MywgNjU2NzcsIDY1NjgxLCA2NTY4NSwgCisgICAgNjU2ODksIDY1NjkzLCA2NTY5NywgNjU3MDEsIDY1NzA1LCA2NTcwOSwgNjU3MTMsIDY1NzE3LCA2NTcyMSwgNjU3MjUsIAorICAgIDY1NzI5LCA2NTczMywgNjU3MzcsIDY1NzQxLCA2NTc0NSwgNjU3NDksIDY1NzUzLCA2NTc1NywgNjU3NjEsIDY1NzY1LCAKKyAgICA2NTc2OSwgNjU3NzMsIDY1Nzc3LCA2NTc4MSwgNjU3ODUsIDY1Nzg5LCA2NTc5MywgNjU3OTcsIDY1ODAxLCA2NTgwNSwgCisgICAgNjU4MDksIDY1ODEzLCA2NTgxNywgNjU4MjEsIDY1ODI1LCA2NTgyOSwgNjU4MzMsIDY1ODM3LCA2NTg0MSwgNjU4NDUsIAorICAgIDY1ODQ5LCA2NTg1MywgNjU4NTcsIDY1ODYxLCA2NTg2NSwgNjU4NjksIDY1ODczLCA2NTg3NywgNjU4ODEsIDY1ODg1LCAKKyAgICA2NTg4OSwgNjU4OTMsIDY1ODk3LCA2NTkwMSwgNjU5MDUsIDY1OTA5LCA2NTkxMywgNjU5MTcsIDY1OTIxLCA2NTkyNSwgCisgICAgNjU5MjksIDY1OTMzLCA2NTkzNywgNjU5NDEsIDY1OTQ1LCA2NTk0OSwgNjU5NTMsIDY1OTU3LCA2NTk2MSwgNjU5NjUsIAorICAgIDY1OTY5LCA2NTk3MywgNjU5NzcsIDY1OTgxLCA2NTk4NSwgNjU5ODksIDY1OTkzLCA2NTk5NywgNjYwMDEsIDY2MDA1LCAKKyAgICA2NjAwOSwgNjYwMTMsIDY2MDE3LCA2NjAyMSwgNjYwMjUsIDY2MDI5LCA2NjAzMywgNjYwMzcsIDY2MDQxLCA2NjA0NSwgCisgICAgNjYwNDksIDY2MDUzLCA2NjA1NywgNjYwNjEsIDY2MDY1LCA2NjA2OSwgNjYwNzMsIDY2MDc3LCA2NjA4MSwgNjYwODUsIAorICAgIDY2MDg5LCA2NjA5MywgNjYwOTcsIDY2MTAxLCA2NjEwNSwgNjYxMDksIDY2MTEzLCA2NjExNywgNjYxMjEsIDY2MTI1LCAKKyAgICA2NjEyOSwgNjYxMzMsIDY2MTM3LCA2NjE0MSwgNjYxNDQsIDY2MTQ4LCA2NjE1MiwgNjYxNTYsIDY2MTYwLCA2NjE2NCwgCisgICAgNjYxNjgsIDY2MTcyLCA2NjE3NiwgNjYxODAsIDY2MTg0LCA2NjE4OCwgNjYxOTIsIDY2MTk2LCA2NjIwMCwgNjYyMDQsIAorICAgIDY2MjA4LCA2NjIxMiwgNjYyMTYsIDY2MjIwLCA2NjIyNCwgNjYyMjgsIDY2MjMyLCA2NjIzNiwgNjYyNDAsIDY2MjQ0LCAKKyAgICA2NjI0OCwgNjYyNTIsIDY2MjU2LCA2NjI2MCwgNjYyNjQsIDY2MjY4LCA2NjI3MiwgNjYyNzYsIDY2MjgwLCA2NjI4NCwgCisgICAgNjYyODgsIDY2MjkyLCA2NjI5NiwgNjYzMDAsIDY2MzA0LCA2NjMwOCwgNjYzMTIsIDY2MzE2LCA2NjMyMCwgNjYzMjQsIAorICAgIDY2MzI4LCA2NjMzMiwgNjYzMzYsIDY2MzQwLCA2NjM0NCwgNjYzNDgsIDY2MzUyLCA2NjM1NiwgNjYzNjAsIDY2MzY0LCAKKyAgICA2NjM2OCwgNjYzNzIsIDY2Mzc2LCA2NjM4MCwgNjYzODQsIDY2Mzg4LCA2NjM5MiwgNjYzOTYsIDY2NDAwLCA2NjQwNCwgCisgICAgNjY0MDgsIDY2NDEyLCA2NjQxNiwgNjY0MjAsIDY2NDI0LCA2NjQyOCwgNjY0MzIsIDY2NDM2LCA2NjQ0MCwgNjY0NDQsIAorICAgIDY2NDQ4LCA2NjQ1MiwgNjY0NTYsIDY2NDYwLCA2NjQ2NCwgNjY0NjgsIDY2NDcyLCA2NjQ3NiwgNjY0ODAsIDY2NDg0LCAKKyAgICA2NjQ4OCwgNjY0OTIsIDY2NDk2LCA2NjUwMCwgNjY1MDQsIDY2NTA4LCA2NjUxMiwgNjY1MTYsIDY2NTIwLCA2NjUyNCwgCisgICAgNjY1MjgsIDY2NTMyLCA2NjUzNiwgNjY1NDAsIDY2NTQ0LCA2NjU0OCwgNjY1NTIsIDY2NTU2LCA2NjU2MCwgNjY1NjQsIAorICAgIDY2NTY4LCA2NjU3MiwgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODgsIDY2NTkyLCA2NjU5NiwgNjY1OTksIDY2NjAzLCAKKyAgICA2NjYwNywgNjY2MTEsIDY2NjE1LCA2NjYxOSwgNjY2MjMsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgCisgICAgNjY2NDcsIDY2NjUxLCA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIAorICAgIDY2Njg3LCA2NjY5MSwgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCAKKyAgICA2NjcyNywgNjY3MzEsIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgCisgICAgNjY3NjcsIDY2NzcxLCA2Njc3NSwgNjY3NzksIDY2NzgzLCA2Njc4NywgNjY3OTEsIDY2Nzk1LCA2Njc5OSwgNjY4MDMsIAorICAgIDY2ODA3LCA2NjgxMSwgNjY4MTUsIDY2ODE5LCA2NjgyMywgNjY4MjcsIDY2ODMxLCA2NjgzNSwgNjY4MzksIDY2ODQzLCAKKyAgICA2Njg0NywgNjY4NTEsIDY2ODU1LCA2Njg1OSwgNjY4NjMsIDY2ODY3LCA2Njg3MSwgNjY4NzUsIDY2ODc5LCA2Njg4MywgCisgICAgNjY4ODcsIDY2ODkxLCA2Njg5NSwgNjY4OTksIDY2OTAzLCA2NjkwNywgNjY5MTEsIDY2OTE1LCA2NjkxOSwgNjY5MjMsIAorICAgIDY2OTI3LCA2NjkzMSwgNjY5MzUsIDY2OTM5LCA2Njk0MywgNjY5NDcsIDY2OTUxLCA2Njk1NSwgNjY5NTksIDY2OTYzLCAKKyAgICA2Njk2NywgNjY5NzEsIDY2OTc1LCA2Njk3OSwgNjY5ODMsIDY2OTg3LCA2Njk5MSwgNjY5OTUsIDY2OTk5LCA2NzAwMywgCisgICAgNjcwMDcsIDY3MDExLCA2NzAxNSwgNjcwMTksIDY3MDIzLCA2NzAyNywgNjcwMzEsIDY3MDM1LCA2NzAzOSwgNjcwNDMsIAorICAgIDY3MDQ3LCA2NzA1MSwgNjcwNTUsIDY3MDU5LCA2NzA2MywgNjcwNjcsIDY3MDcxLCA2NzA3NSwgNjcwNzksIDY3MDgzLCAKKyAgICA2NzA4NywgNjcwOTEsIDY3MDk1LCA2NzA5OSwgNjcxMDMsIDY3MTA3LCA2NzExMSwgNjcxMTUsIDY3MTE5LCA2NzEyMywgCisgICAgNjcxMjcsIDY3MTMxLCA2NzEzNSwgNjcxMzksIDY3MTQzLCA2NzE0NywgNjcxNTEsIDY3MTU1LCA2NzE1OSwgNjcxNjMsIAorICAgIDY3MTY3LCA2NzE3MSwgNjcxNzUsIDY3MTc5LCA2NzE4MywgNjcxODcsIDY3MTkxLCA2NzE5NSwgNjcxOTksIDY3MjAyLCAKKyAgICA2NzIwNiwgNjcyMTAsIDY3MjE0LCA2NzIxOCwgNjcyMjIsIDY3MjI2LCA2NzIzMCwgNjcyMzMsIDY3MjM3LCA2NzI0MSwgCisgICAgNjcyNDUsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIAorICAgIDY3Mjg1LCA2NzI4OSwgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCAKKyAgICA2NzMyNSwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgCisgICAgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIAorICAgIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCAKKyAgICA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgCisgICAgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIAorICAgIDY3NTI1LCA2NzUyOSwgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCAKKyAgICA2NzU2NSwgNjc1NjksIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgCisgICAgNjc2MDUsIDY3NjA5LCA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIAorICAgIDY3NjQ1LCA2NzY0OSwgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCAKKyAgICA2NzY4NSwgNjc2ODksIDY3NjkzLCA2NzY5NywgNjc3MDEsIDY3NzA1LCA2NzcwOSwgNjc3MTMsIDY3NzE3LCA2NzcyMSwgCisgICAgNjc3MjUsIDY3NzI5LCA2NzczMywgNjc3MzcsIDY3NzQxLCA2Nzc0NSwgNjc3NDksIDY3NzUzLCA2Nzc1NywgNjc3NjEsIAorICAgIDY3NzY1LCA2Nzc2OSwgNjc3NzMsIDY3Nzc3LCA2Nzc4MSwgNjc3ODUsIDY3Nzg5LCA2Nzc5MywgNjc3OTcsIDY3ODAxLCAKKyAgICA2NzgwNSwgNjc4MDksIDY3ODEzLCA2NzgxNywgNjc4MjEsIDY3ODI1LCA2NzgyOSwgNjc4MzMsIDY3ODM3LCA2Nzg0MSwgCisgICAgNjc4NDUsIDY3ODQ5LCA2Nzg1MywgNjc4NTcsIDY3ODYxLCA2Nzg2NSwgNjc4NjksIDY3ODczLCA2Nzg3NywgNjc4ODEsIAorICAgIDY3ODg1LCA2Nzg4OSwgNjc4OTMsIDY3ODk3LCA2NzkwMSwgNjc5MDUsIDY3OTA5LCA2NzkxMywgNjc5MTcsIDY3OTIxLCAKKyAgICA2NzkyNSwgNjc5MjksIDY3OTMzLCA2NzkzNywgNjc5NDEsIDY3OTQ1LCA2Nzk0OSwgNjc5NTMsIDY3OTU3LCA2Nzk2MCwgCisgICAgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTgwLCA2Nzk4NCwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIAorICAgIDY4MDA0LCA2ODAwOCwgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCAKKyAgICA2ODA0NCwgNjgwNDgsIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgCisgICAgNjgwODQsIDY4MDg4LCA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIAorICAgIDY4MTI0LCA2ODEyOCwgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCAKKyAgICA2ODE2NCwgNjgxNjgsIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgCisgICAgNjgyMDQsIDY4MjA4LCA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIAorICAgIDY4MjQ0LCA2ODI0OCwgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCAKKyAgICA2ODI4NCwgNjgyODgsIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgCisgICAgNjgzMjQsIDY4MzI4LCA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIAorICAgIDY4MzY0LCA2ODM2OCwgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCAKKyAgICA2ODQwNCwgNjg0MDgsIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgCisgICAgNjg0NDQsIDY4NDQ4LCA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIAorICAgIDY4NDg0LCA2ODQ4OCwgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCAKKyAgICA2ODUyNCwgNjg1MjgsIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU2LCA2ODU2MCwgCisgICAgNjg1NjQsIDY4NTY4LCA2ODU3MiwgNjg1NzYsIDY4NTgwLCA2ODU4NCwgNjg1ODgsIDY4NTkyLCA2ODU5NiwgNjg2MDAsIAorICAgIDY4NjA0LCA2ODYwOCwgNjg2MTIsIDY4NjE2LCA2ODYyMCwgNjg2MjQsIDY4NjI4LCA2ODYzMiwgNjg2MzYsIDY4NjQwLCAKKyAgICA2ODY0NCwgNjg2NDgsIDY4NjUyLCA2ODY1NiwgNjg2NjAsIDY4NjY0LCA2ODY2OCwgNjg2NzIsIDY4Njc2LCA2ODY4MCwgCisgICAgNjg2ODQsIDY4Njg4LCA2ODY5MiwgNjg2OTYsIDY4NzAwLCA2ODcwNCwgNjg3MDgsIDY4NzEyLCA2ODcxNiwgNjg3MjAsIAorICAgIDY4NzI0LCA2ODcyOCwgNjg3MzIsIDY4NzM2LCA2ODc0MCwgMCwgMCwgMCwgNjg3NDQsIDY4NzQ4LCA2ODc1MiwgNjg3NTYsIAorICAgIDY4NzYwLCA2ODc2NCwgNjg3NjgsIDY4NzcyLCA2ODc3NiwgNjg3ODAsIDY4Nzg0LCA2ODc4OCwgNjg3OTIsIDY4Nzk2LCAKKyAgICA2ODgwMCwgNjg4MDQsIDY4ODA4LCA2ODgxMiwgNjg4MTYsIDY4ODIwLCA2ODgyNCwgNjg4MjgsIDY4ODMyLCA2ODgzNiwgCisgICAgNjg4NDAsIDY4ODQ0LCA2ODg0OCwgNjg4NTIsIDY4ODU2LCA2ODg2MCwgNjg4NjQsIDY4ODY4LCA2ODg3MiwgNjg4NzYsIAorICAgIDY4ODgwLCA2ODg4NCwgNjg4ODgsIDY4ODkyLCA2ODg5NiwgNjg5MDAsIDY4OTA0LCA2ODkwOCwgNjg5MTIsIDY4OTE2LCAKKyAgICA2ODkyMCwgNjg5MjQsIDY4OTI4LCA2ODkzMiwgNjg5MzYsIDY4OTQwLCA2ODk0NCwgNjg5NDgsIDY4OTUyLCA2ODk1NiwgCisgICAgNjg5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY4OTY0LCA2ODk2OSwgNjg5NzMsIDY4OTc4LCA2ODk4MywgCisgICAgNjg5ODgsIDY4OTkzLCA2ODk5OCwgNjkwMDIsIDY5MDA3LCA2OTAxMiwgNjkwMTcsIDY5MDIyLCA2OTAyNywgNjkwMzIsIAorICAgIDY5MDM3LCA2OTA0MSwgNjkwNDUsIDY5MDUwLCA2OTA1NCwgNjkwNTksIDY5MDY0LCA2OTA2OSwgNjkwNzMsIDY5MDc4LCAKKyAgICA2OTA4MywgNjkwODgsIDY5MDkzLCA2OTA5OCwgNjkxMDIsIDY5MTA3LCA2OTExMSwgNjkxMTYsIDY5MTIwLCA2OTEyNSwgCisgICAgNjkxMjksIDY5MTMzLCA2OTEzNywgNjkxNDIsIDY5MTQ3LCA2OTE1MiwgNjkxNjAsIDY5MTY4LCA2OTE3NiwgNjkxODQsIAorICAgIDY5MTkxLCA2OTE5OSwgNjkyMDUsIDY5MjEzLCA2OTIxNywgNjkyMjEsIDY5MjI1LCA2OTIyOSwgNjkyMzMsIDY5MjM3LCAKKyAgICA2OTI0MSwgNjkyNDUsIDY5MjQ5LCA2OTI1MywgNjkyNTcsIDY5MjYxLCA2OTI2NSwgNjkyNjksIDY5MjczLCA2OTI3NywgCisgICAgNjkyODEsIDY5Mjg1LCA2OTI4OSwgNjkyOTMsIDY5Mjk3LCA2OTMwMSwgNjkzMDUsIDY5MzA5LCA2OTMxMywgNjkzMTcsIAorICAgIDY5MzIxLCA2OTMyNSwgNjkzMjksIDY5MzMzLCA2OTMzNywgNjkzNDEsIDY5MzQ1LCA2OTM0OSwgNjkzNTMsIDY5MzU3LCAKKyAgICA2OTM2MCwgNjkzNjQsIDY5MzY4LCA2OTM3MiwgNjkzNzYsIDY5MzgwLCA2OTM4NCwgNjkzODgsIDY5MzkyLCA2OTM5NiwgCisgICAgNjk0MDAsIDY5NDA0LCA2OTQwOCwgNjk0MTIsIDY5NDE2LCA2OTQyMCwgNjk0MjQsIDY5NDI4LCA2OTQzMiwgNjk0MzYsIAorICAgIDY5NDQwLCA2OTQ0NCwgNjk0NDgsIDY5NDUyLCA2OTQ1NiwgNjk0NjAsIDY5NDY0LCA2OTQ2OCwgNjk0NzIsIDY5NDc2LCAKKyAgICA2OTQ4MCwgNjk0ODQsIDY5NDg4LCA2OTQ5MiwgNjk0OTYsIDY5NTAwLCA2OTUwNCwgNjk1MDcsIDY5NTExLCA2OTUxNSwgCisgICAgNjk1MTgsIDY5NTIyLCA2OTUyNiwgNjk1MzAsIDY5NTMzLCA2OTUzNywgNjk1NDEsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIAorICAgIDY5NTU3LCA2OTU2MSwgNjk1NjUsIDY5NTY5LCA2OTU3MywgNjk1NzcsIDY5NTgxLCA2OTU4NSwgNjk1ODksIDY5NTkyLCAKKyAgICA2OTU5NiwgNjk2MDAsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE1LCA2OTYxOSwgNjk2MjMsIDY5NjI3LCA2OTYzMCwgCisgICAgNjk2MzMsIDY5NjM3LCA2OTY0MSwgNjk2NDUsIDY5NjQ4LCA2OTY1MSwgNjk2NTUsIDY5NjU5LCA2OTY2MywgNjk2NjcsIAorICAgIDY5NjcxLCA2OTY3NSwgNjk2NzksIDY5NjgzLCA2OTY4NywgNjk2OTEsIDY5Njk1LCA2OTY5OSwgNjk3MDMsIDY5NzA3LCAKKyAgICA2OTcxMSwgNjk3MTUsIDY5NzE5LCA2OTcyMywgNjk3MjcsIDY5NzMxLCA2OTczNSwgNjk3MzksIDY5NzQzLCA2OTc0NywgCisgICAgNjk3NTEsIDY5NzU1LCA2OTc1OSwgNjk3NjMsIDY5NzY3LCA2OTc3MSwgNjk3NzUsIDY5Nzc5LCA2OTc4MywgNjk3ODcsIAorICAgIDY5NzkxLCA2OTc5NSwgNjk3OTksIDY5ODAyLCA2OTgwNiwgNjk4MTAsIDY5ODE0LCA2OTgxOCwgNjk4MjIsIDY5ODI2LCAKKyAgICA2OTgzMCwgNjk4MzQsIDY5ODM4LCA2OTg0MiwgNjk4NDYsIDY5ODUwLCA2OTg1NCwgNjk4NTgsIDY5ODYyLCA2OTg2NiwgCisgICAgNjk4NzAsIDY5ODc0LCA2OTg3OCwgNjk4ODIsIDY5ODg2LCA2OTg5MCwgNjk4OTQsIDY5ODk4LCA2OTkwMiwgNjk5MDYsIAorICAgIDY5OTEwLCA2OTkxNCwgNjk5MTgsIDY5OTIyLCA2OTkyNiwgNjk5MzAsIDY5OTM0LCA2OTkzOCwgNjk5NDIsIDY5OTQ2LCAKKyAgICA2OTk0OSwgNjk5NTMsIDY5OTU3LCA2OTk2MSwgNjk5NjUsIDY5OTY5LCA2OTk3MywgNjk5NzcsIDY5OTgxLCA2OTk4NSwgCisgICAgNjk5ODksIDY5OTkzLCA2OTk5NywgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE2LCA3MDAyMCwgNzAwMjQsIAorICAgIDcwMDI4LCA3MDAzMiwgNzAwMzYsIDcwMDQwLCA3MDA0NCwgNzAwNDgsIDcwMDUyLCA3MDA1NiwgNzAwNjAsIDcwMDY0LCAKKyAgICA3MDA2OCwgNzAwNzIsIDcwMDc2LCA3MDA4MCwgNzAwODQsIDcwMDg4LCA3MDA5MiwgNzAwOTYsIDcwMTAwLCA3MDEwMywgCisgICAgNzAxMDcsIDcwMTExLCA3MDExNSwgNzAxMTksIDcwMTIzLCA3MDEyNywgNzAxMzEsIDcwMTM1LCA3MDEzOSwgNzAxNDMsIAorICAgIDcwMTQ3LCA3MDE1MSwgNzAxNTUsIDcwMTU5LCA3MDE2MywgNzAxNjcsIDcwMTcxLCA3MDE3NSwgNzAxNzksIDcwMTgzLCAKKyAgICA3MDE4NywgNzAxOTEsIDcwMTk1LCA3MDE5OSwgNzAyMDMsIDcwMjA3LCA3MDIxMSwgNzAyMTUsIDcwMjE5LCA3MDIyMywgCisgICAgNzAyMjcsIDcwMjMxLCA3MDIzNSwgNzAyMzksIDcwMjQzLCA3MDI0NywgNzAyNTEsIDcwMjU1LCA3MDI1OSwgNzAyNjMsIAorICAgIDcwMjY3LCA3MDI3MSwgNzAyNzUsIDcwMjc4LCA3MDI4MywgNzAyODcsIDcwMjkzLCA3MDI5OCwgNzAzMDQsIDcwMzA4LCAKKyAgICA3MDMxMiwgNzAzMTYsIDcwMzIwLCA3MDMyNCwgNzAzMjgsIDcwMzMyLCA3MDMzNiwgNzAzNDAsIDcwMzQ0LCA3MDM0OCwgCisgICAgNzAzNTIsIDcwMzU2LCA3MDM2MCwgNzAzNjMsIDcwMzY2LCA3MDM2OSwgNzAzNzIsIDcwMzc1LCA3MDM3OCwgNzAzODEsIAorICAgIDcwMzg0LCA3MDM4NywgNzAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDcwMzk4LCA3MDQwMywgNzA0MDgsIDcwNDEzLCA3MDQxOCwgNzA0MjUsIDcwNDMyLCA3MDQzNywgNzA0NDIsIAorICAgIDcwNDQ3LCA3MDQ1MiwgNzA0NTksIDcwNDY2LCA3MDQ3MywgNzA0ODAsIDcwNDg3LCA3MDQ5NCwgNzA1MDQsIDcwNTE0LCAKKyAgICA3MDUyMSwgNzA1MjgsIDcwNTM1LCA3MDU0MiwgNzA1NDgsIDcwNTU0LCA3MDU2MywgNzA1NzIsIDcwNTc5LCA3MDU4NiwgCisgICAgNzA1OTcsIDcwNjA4LCA3MDYxMywgNzA2MTgsIDcwNjI1LCA3MDYzMiwgNzA2MzksIDcwNjQ2LCA3MDY1MywgNzA2NjAsIAorICAgIDcwNjY3LCA3MDY3NCwgNzA2ODAsIDcwNjg2LCA3MDY5MiwgNzA2OTgsIDcwNzA1LCA3MDcxMiwgNzA3MTcsIDcwNzIxLCAKKyAgICA3MDcyOCwgNzA3MzUsIDcwNzQyLCA3MDc0NiwgNzA3NTMsIDcwNzU3LCA3MDc2MiwgNzA3NjYsIDcwNzcyLCA3MDc3NywgCisgICAgNzA3ODMsIDcwNzg4LCA3MDc5MiwgNzA3OTYsIDcwNzk5LCA3MDgwMiwgNzA4MDcsIDcwODEyLCA3MDgxNywgNzA4MjIsIAorICAgIDcwODI3LCA3MDgzMiwgNzA4MzcsIDcwODQyLCA3MDg0NywgNzA4NTIsIDcwODYxLCA3MDg3MCwgNzA4NzUsIDcwODgwLCAKKyAgICA3MDg4NSwgNzA4OTAsIDcwODk1LCA3MDkwMCwgNzA5MDUsIDcwOTEwLCA3MDkxNSwgNzA5MjAsIDcwOTI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3MDkzMCwgNzA5MzYsIDcwOTM5LCA3MDk0MiwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIAorICAgIDcwOTYxLCA3MDk2NCwgNzA5NjgsIDcwOTcxLCA3MDk3NSwgNzA5NzgsIDcwOTgyLCA3MDk4NiwgNzA5OTAsIDcwOTk0LCAKKyAgICA3MDk5OCwgNzEwMDIsIDcxMDA2LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgCisgICAgNzEwMzcsIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgNzEwNjEsIDcxMDY1LCA3MTA2OCwgNzEwNzIsIAorICAgIDcxMDc2LCA3MTA4MCwgNzEwODQsIDcxMDg4LCA3MTA5MiwgNzEwOTYsIDcxMTAwLCA3MTEwNCwgNzExMDgsIDcxMTEyLCAKKyAgICA3MTExNiwgNzExMjAsIDcxMTI0LCA3MTEyOCwgNzExMzIsIDcxMTM2LCA3MTE0MCwgNzExNDQsIDcxMTQ4LCA3MTE1MiwgCisgICAgNzExNTYsIDcxMTYwLCA3MTE2NCwgNzExNjcsIDcxMTcxLCA3MTE3NSwgNzExNzksIDcxMTgzLCA3MTE4NywgNzExOTEsIAorICAgIDcxMTk1LCA3MTE5OCwgNzEyMDIsIDcxMjA2LCA3MTIxMCwgNzEyMTQsIDcxMjE4LCA3MTIyMiwgNzEyMjYsIDcxMjMwLCAKKyAgICA3MTIzNCwgNzEyMzgsIDcxMjQyLCA3MTI0NiwgNzEyNTEsIDcxMjU2LCA3MTI1OSwgNzEyNjQsIDcxMjY3LCA3MTI3MCwgCisgICAgNzEyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMjc3LCA3MTI4NiwgNzEyOTUsIDcxMzA0LCA3MTMxMywgNzEzMjIsIAorICAgIDcxMzMxLCA3MTM0MCwgNzEzNDksIDcxMzU3LCA3MTM2NCwgNzEzNzIsIDcxMzc5LCA3MTM4NywgNzEzOTcsIDcxNDA2LCAKKyAgICA3MTQxNiwgNzE0MjUsIDcxNDM1LCA3MTQ0MywgNzE0NTAsIDcxNDU4LCA3MTQ2NSwgNzE0NzMsIDcxNDc4LCA3MTQ4MywgCisgICAgNzE0ODgsIDcxNDk3LCA3MTUwMywgNzE1MDksIDcxNTE2LCA3MTUyNSwgNzE1MzMsIDcxNTQxLCA3MTU0OSwgNzE1NTYsIAorICAgIDcxNTYzLCA3MTU3MCwgNzE1NzcsIDcxNTgyLCA3MTU4NywgNzE1OTIsIDcxNTk3LCA3MTYwMiwgNzE2MDcsIDcxNjEyLCAKKyAgICA3MTYxNywgNzE2MjUsIDcxNjMzLCA3MTYzOSwgNzE2NDUsIDcxNjUwLCA3MTY1NSwgNzE2NjAsIDcxNjY1LCA3MTY3MCwgCisgICAgNzE2NzUsIDcxNjgwLCA3MTY4NSwgNzE2OTMsIDcxNzAxLCA3MTcwNiwgNzE3MTEsIDcxNzIxLCA3MTczMSwgNzE3MzgsIAorICAgIDcxNzQ1LCA3MTc1NCwgNzE3NjMsIDcxNzc1LCA3MTc4NywgNzE3OTMsIDcxNzk5LCA3MTgwNywgNzE4MTUsIDcxODI1LCAKKyAgICA3MTgzNSwgNzE4NDIsIDcxODQ5LCA3MTg1NCwgNzE4NTksIDcxODcxLCA3MTg4MywgNzE4OTEsIDcxODk5LCA3MTkwOSwgCisgICAgNzE5MTksIDcxOTMxLCA3MTk0MywgNzE5NTIsIDcxOTYxLCA3MTk2OCwgNzE5NzUsIDcxOTgyLCA3MTk4OSwgNzE5OTgsIAorICAgIDcyMDA3LCA3MjAxMiwgNzIwMTcsIDcyMDI0LCA3MjAzMSwgNzIwMzgsIDcyMDQ1LCA3MjA1NywgNzIwNjksIDcyMDc0LCAKKyAgICA3MjA3OSwgNzIwODQsIDcyMDg5LCA3MjA5NCwgNzIwOTksIDcyMTA0LCA3MjEwOSwgNzIxMTMsIDcyMTE4LCA3MjEyMywgCisgICAgNzIxMjgsIDcyMTMzLCA3MjEzOCwgNzIxNDQsIDcyMTQ5LCA3MjE1NCwgNzIxNjEsIDcyMTY4LCA3MjE3NSwgNzIxODIsIAorICAgIDcyMTg5LCA3MjE5OCwgNzIyMDcsIDcyMjEzLCA3MjIxOSwgNzIyMjUsIDcyMjMxLCA3MjIzOCwgNzIyNDUsIDcyMjUyLCAKKyAgICA3MjI1OSwgNzIyNjYsIDcyMjcwLCA3MjI3NywgNzIyODIsIDcyMjg3LCA3MjI5NCwgMCwgNzIzMDcsIDcyMzE1LCA3MjMyMywgCisgICAgNzIzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMzM3LCA3MjM0NiwgNzIzNTUsIDcyMzY0LCAKKyAgICA3MjM3MywgNzIzODIsIDcyMzkxLCA3MjQwMCwgNzI0MDksIDcyNDE4LCA3MjQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI0MzQsIAorICAgIDcyNDQxLCA3MjQ0NywgNzI0NTQsIDcyNDYyLCA3MjQ3MCwgNzI0NzcsIDcyNDg1LCA3MjQ5MiwgNzI0OTgsIDcyNTA0LCAKKyAgICA3MjUxMSwgNzI1MTcsIDcyNTIzLCA3MjUyOSwgNzI1MzYsIDcyNTQzLCA3MjU1MCwgNzI1NTcsIDcyNTY0LCA3MjU3MSwgCisgICAgNzI1NzgsIDcyNTg1LCA3MjU5MiwgNzI1OTksIDcyNjA2LCA3MjYxMywgNzI2MjAsIDcyNjI3LCA3MjYzMywgNzI2NDAsIAorICAgIDcyNjQ3LCA3MjY1NCwgNzI2NjEsIDcyNjY4LCA3MjY3NSwgNzI2ODIsIDcyNjg5LCA3MjY5NiwgNzI3MDMsIDcyNzEwLCAKKyAgICA3MjcxNywgNzI3MjQsIDcyNzMxLCA3MjczOCwgNzI3NDUsIDcyNzUyLCA3Mjc1OSwgNzI3NjcsIDcyNzc1LCA3Mjc4MywgCisgICAgNzI3OTEsIDAsIDAsIDAsIDAsIDcyNzk5LCA3MjgwOCwgNzI4MTcsIDcyODI2LCA3MjgzNSwgNzI4NDQsIDcyODUzLCAKKyAgICA3Mjg2MCwgNzI4NjcsIDcyODc0LCAwLCAwLCAwLCAwLCAwLCAwLCA3Mjg4MSwgNzI4ODUsIDcyODkwLCA3Mjg5NSwgNzI5MDAsIAorICAgIDcyOTA1LCA3MjkxMCwgNzI5MTUsIDcyOTIwLCA3MjkyNSwgNzI5MzAsIDcyOTM1LCA3MjkzOSwgNzI5NDMsIDcyOTQ4LCAKKyAgICA3Mjk1MywgNzI5NTcsIDcyOTYyLCA3Mjk2NywgNzI5NzIsIDcyOTc3LCA3Mjk4MiwgNzI5ODcsIDcyOTkyLCA3Mjk5NiwgCisgICAgNzMwMDAsIDczMDA1LCA3MzAxMCwgNzMwMTQsIDczMDE4LCA3MzAyMiwgNzMwMjYsIDczMDMwLCA3MzAzNCwgNzMwMzgsIAorICAgIDczMDQzLCA3MzA0OCwgNzMwNTMsIDczMDU4LCA3MzA2MywgNzMwNzAsIDczMDc2LCA3MzA4MSwgNzMwODYsIDczMDkxLCAKKyAgICA3MzA5NiwgNzMxMDIsIDczMTA5LCA3MzExNSwgNzMxMjIsIDczMTI4LCA3MzEzNCwgNzMxMzksIDczMTQ2LCA3MzE1MiwgCisgICAgNzMxNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczMTYzLCA3MzE2NywgNzMxNzEsIDczMTc0LCA3MzE3OCwgNzMxODEsIAorICAgIDczMTg1LCA3MzE4OCwgNzMxOTIsIDczMTk2LCA3MzIwMSwgNzMyMDUsIDczMjEwLCA3MzIxMywgNzMyMTcsIDczMjIxLCAKKyAgICA3MzIyNCwgNzMyMjgsIDczMjMyLCA3MzIzNSwgNzMyMzksIDczMjQzLCA3MzI0NywgNzMyNTEsIDczMjU1LCA3MzI1OSwgCisgICAgNzMyNjMsIDczMjY3LCA3MzI3MSwgNzMyNzUsIDczMjc5LCA3MzI4MywgNzMyODcsIDczMjkxLCA3MzI5NSwgNzMyOTksIAorICAgIDczMzAzLCA3MzMwNywgNzMzMTAsIDczMzEzLCA3MzMxNywgNzMzMjEsIDczMzI1LCA3MzMyOCwgNzMzMzEsIDczMzM0LCAKKyAgICA3MzMzOCwgNzMzNDIsIDczMzQ2LCA3MzM1MCwgNzMzNTMsIDczMzU2LCA3MzM2MCwgNzMzNjUsIDczMzcwLCA3MzM3NCwgCisgICAgNzMzNzksIDczMzgzLCA3MzM4OCwgNzMzOTMsIDczMzk5LCA3MzQwNCwgNzM0MTAsIDczNDE0LCA3MzQxOSwgNzM0MjQsIAorICAgIDczNDI4LCA3MzQzMywgNzM0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczNDQyLCA3MzQ0NSwgNzM0NDksIAorICAgIDczNDUzLCA3MzQ1NiwgNzM0NTksIDczNDYyLCA3MzQ2NSwgNzM0NjgsIDczNDcxLCA3MzQ3NCwgNzM0NzcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDczNDgwLCA3MzQ4NSwgNzM0ODksIDczNDkzLCA3MzQ5NywgNzM1MDEsIDczNTA1LCA3MzUwOSwgNzM1MTMsIAorICAgIDczNTE3LCA3MzUyMSwgNzM1MjUsIDczNTI5LCA3MzUzMywgNzM1MzcsIDczNTQxLCA3MzU0NSwgNzM1NTAsIDczNTU1LCAKKyAgICA3MzU2MSwgNzM1NjcsIDczNTc0LCA3MzU3OSwgNzM1ODQsIDczNTkwLCA3MzU5NCwgNzM1OTksIDczNjAyLCAwLCAwLCAwLCAKKyAgICAwLCA3MzYwNSwgNzM2MTIsIDczNjE4LCA3MzYyNCwgNzM2MzAsIDczNjM2LCA3MzY0MiwgNzM2NDgsIDczNjU0LCA3MzY2MCwgCisgICAgNzM2NjYsIDczNjcyLCA3MzY3OSwgNzM2ODYsIDczNjkzLCA3MzY5OSwgNzM3MDYsIDczNzEzLCA3MzcyMCwgNzM3MjcsIAorICAgIDczNzM0LCA3Mzc0MCwgNzM3NDYsIDczNzUzLCA3Mzc1OSwgNzM3NjYsIDczNzczLCA3Mzc3OSwgNzM3ODUsIDczNzkyLCAKKyAgICA3Mzc5OSwgNzM4MDYsIDczODEyLCA3MzgxOSwgNzM4MjYsIDczODMyLCA3MzgzOSwgNzM4NDUsIDczODUyLCA3Mzg1OSwgCisgICAgNzM4NjUsIDczODcxLCA3Mzg3OCwgNzM4ODQsIDczODkxLCA3Mzg5OCwgNzM5MDcsIDczOTE0LCA3MzkyMSwgNzM5MjUsIAorICAgIDczOTMwLCA3MzkzNSwgNzM5NDAsIDczOTQ1LCA3Mzk0OSwgNzM5NTMsIDczOTU4LCA3Mzk2MiwgNzM5NjcsIDczOTcyLCAKKyAgICA3Mzk3NywgNzM5ODEsIDczOTg1LCA3Mzk5MCwgNzM5OTQsIDczOTk5LCA3NDAwMywgNzQwMDgsIDc0MDEzLCA3NDAxOCwgCisgICAgNzQwMjMsIDc0MDI3LCA3NDAzMiwgNzQwMzcsIDc0MDQyLCA3NDA0OCwgNzQwNTMsIDc0MDU5LCA3NDA2NSwgNzQwNzEsIAorICAgIDc0MDc3LCA3NDA4MywgNzQwODgsIDc0MDk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDA5OCwgCisgICAgNzQxMDMsIDc0MTA3LCA3NDExMSwgNzQxMTUsIDc0MTE5LCA3NDEyMywgNzQxMjcsIDc0MTMxLCA3NDEzNSwgNzQxMzksIAorICAgIDc0MTQzLCA3NDE0NywgNzQxNTEsIDc0MTU1LCA3NDE1OSwgNzQxNjMsIDc0MTY3LCA3NDE3MSwgNzQxNzUsIDc0MTc5LCAKKyAgICA3NDE4MywgNzQxODcsIDc0MTkxLCA3NDE5NSwgNzQxOTksIDc0MjAzLCA3NDIwNywgNzQyMTEsIDc0MjE1LCAwLCAwLCAwLCAKKyAgICA3NDIxOSwgNzQyMjMsIDc0MjI3LCA3NDIzMSwgNzQyMzUsIDc0MjM4LCA3NDI0NCwgNzQyNDcsIDc0MjUxLCA3NDI1NCwgCisgICAgNzQyNjAsIDc0MjY2LCA3NDI3NCwgNzQyNzcsIDc0MjgxLCA3NDI4NCwgNzQyODcsIDc0MjkzLCA3NDI5OSwgNzQzMDMsIAorICAgIDc0MzA5LCA3NDMxMywgNzQzMTcsIDc0MzIzLCA3NDMyNywgNzQzMzMsIDc0MzM5LCA3NDM0MywgNzQzNDcsIDc0MzUzLCAKKyAgICA3NDM1NywgNzQzNjMsIDc0MzY5LCA3NDM3MywgNzQzNzksIDc0MzgzLCA3NDM4OSwgNzQzOTIsIDc0Mzk1LCA3NDQwMSwgCisgICAgNzQ0MDUsIDc0NDExLCA3NDQxNCwgNzQ0MTcsIDc0NDIwLCA3NDQyNiwgNzQ0MzAsIDc0NDM0LCA3NDQ0MCwgNzQ0NDYsIAorICAgIDc0NDQ5LCA3NDQ1MiwgNzQ0NTgsIDc0NDYzLCA3NDQ2OCwgNzQ0NzMsIDc0NDgwLCA3NDQ4NSwgNzQ0OTIsIDc0NDk3LCAKKyAgICA3NDUwNCwgNzQ1MDksIDc0NTE0LCA3NDUxOSwgNzQ1MjQsIDc0NTI3LCA3NDUzMSwgNzQ1MzUsIDc0NTQwLCA3NDU0NSwgCisgICAgNzQ1NTAsIDc0NTU1LCA3NDU2MCwgNzQ1NjUsIDc0NTcwLCA3NDU3NSwgNzQ1ODIsIDc0NTg3LCAwLCA3NDU5NCwgNzQ1OTcsIAorICAgIDc0NjAxLCA3NDYwNCwgNzQ2MDcsIDc0NjEwLCA3NDYxMywgNzQ2MTYsIDc0NjE5LCA3NDYyMiwgNzQ2MjUsIDAsIDAsIDAsIAorICAgIDAsIDc0NjI4LCA3NDYzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ2NDAsIDc0NjQzLCA3NDY0NiwgNzQ2NDksIDc0NjUyLCAKKyAgICA3NDY1NiwgNzQ2NTksIDc0NjYyLCA3NDY2NiwgNzQ2NzAsIDc0Njc0LCA3NDY3OCwgNzQ2ODIsIDc0Njg2LCA3NDY5MCwgCisgICAgNzQ2OTQsIDc0Njk4LCA3NDcwMiwgNzQ3MDYsIDc0NzEwLCA3NDcxNCwgNzQ3MTgsIDc0NzIyLCA3NDcyNiwgNzQ3MzAsIAorICAgIDc0NzMzLCA3NDczNywgNzQ3NDAsIDc0NzQ0LCA3NDc0OCwgNzQ3NTIsIDc0NzU2LCA3NDc2MCwgNzQ3NjMsIDc0NzY3LCAKKyAgICA3NDc3MCwgNzQ3NzMsIDc0Nzc3LCA3NDc4MSwgNzQ3ODUsIDc0Nzg4LCA3NDc5MSwgNzQ3OTYsIDc0ODAwLCA3NDgwNSwgCisgICAgNzQ4MTAsIDc0ODE0LCA3NDgxOSwgNzQ4MjMsIDc0ODI4LCA3NDgzMywgNzQ4MzgsIDc0ODQyLCA3NDg0NiwgNzQ4NTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODU2LCA3NDg2MSwgNzQ4NjYsIDc0ODcxLCA3NDg3NywgNzQ4ODIsIDc0ODg3LCAKKyAgICA3NDg5MiwgNzQ4OTcsIDc0OTAyLCA3NDkwNiwgNzQ5MTAsIDc0OTE1LCA3NDkyMCwgMCwgMCwgNzQ5MjYsIDc0OTMwLCAKKyAgICA3NDkzMywgNzQ5MzYsIDc0OTM5LCA3NDk0MiwgNzQ5NDUsIDc0OTQ4LCA3NDk1MSwgNzQ5NTQsIDAsIDAsIDc0OTU3LCAKKyAgICA3NDk2MiwgNzQ5NjcsIDc0OTczLCA3NDk4MCwgNzQ5ODYsIDc0OTkyLCA3NDk5OCwgNzUwMDQsIDc1MDEwLCA3NTAxNiwgCisgICAgNzUwMjIsIDc1MDI4LCA3NTAzNCwgNzUwNDAsIDc1MDQ2LCA3NTA1MSwgNzUwNTYsIDc1MDYxLCA3NTA2NywgNzUwNzMsIAorICAgIDc1MDgwLCA3NTA4NiwgNzUwOTIsIDc1MDk3LCA3NTEwNCwgNzUxMTEsIDc1MTE4LCA3NTEyNCwgNzUxMjksIDc1MTM0LCAKKyAgICA3NTEzOSwgMCwgMCwgMCwgMCwgNzUxNDcsIDc1MTUzLCA3NTE1OSwgNzUxNjUsIDc1MTcxLCA3NTE3NywgNzUxODMsIAorICAgIDc1MTg5LCA3NTE5NSwgNzUyMDEsIDc1MjA3LCA3NTIxMywgNzUyMTksIDc1MjI1LCA3NTIzMSwgNzUyMzcsIDc1MjQzLCAKKyAgICA3NTI0OSwgNzUyNTUsIDc1MjYxLCA3NTI2NywgNzUyNzIsIDc1Mjc3LCA3NTI4MywgNzUyODksIDc1Mjk1LCA3NTMwMSwgCisgICAgNzUzMDcsIDc1MzEzLCA3NTMxOSwgNzUzMjUsIDc1MzMxLCA3NTMzNywgNzUzNDMsIDc1MzQ5LCA3NTM1NSwgNzUzNjEsIAorICAgIDc1MzY3LCA3NTM3MywgNzUzNzksIDc1Mzg1LCA3NTM5MSwgNzUzOTcsIDc1NDAzLCA3NTQwOSwgNzU0MTUsIDc1NDIxLCAKKyAgICA3NTQyNiwgNzU0MzEsIDc1NDM3LCA3NTQ0MiwgNzU0NDYsIDc1NDUxLCA3NTQ1NSwgNzU0NTksIDc1NDYzLCA3NTQ2OSwgCisgICAgNzU0NzQsIDc1NDc5LCA3NTQ4NCwgNzU0ODksIDc1NDk0LCA3NTQ5OSwgNzU1MDQsIDc1NTExLCA3NTUxOCwgNzU1MjUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDczNzY0LCA3Mzc2NywgNzM3NzAsIDczNzczLCA3Mzc3NiwgNzM3ODAsIDczNzgzLCA3Mzc4NiwgNzM3OTAsIDczNzk0LCAKLSAgICA3Mzc5OCwgNzM4MDIsIDczODA2LCA3MzgxMCwgNzM4MTQsIDczODE4LCA3MzgyMiwgNzM4MjYsIDczODMwLCA3MzgzNCwgCi0gICAgNzM4MzgsIDczODQyLCA3Mzg0NiwgNzM4NTAsIDczODU0LCA3Mzg1NywgNzM4NjEsIDczODY0LCA3Mzg2OCwgNzM4NzIsIAotICAgIDczODc2LCA3Mzg4MCwgNzM4ODQsIDczODg3LCA3Mzg5MSwgNzM4OTQsIDczODk3LCA3MzkwMSwgNzM5MDUsIDczOTA5LCAKLSAgICA3MzkxMywgNzM5MTYsIDczOTIxLCA3MzkyNSwgNzM5MzAsIDczOTM1LCA3MzkzOSwgNzM5NDQsIDczOTQ4LCA3Mzk1MywgCi0gICAgNzM5NTgsIDczOTYzLCA3Mzk2OCwgNzM5NzMsIDczOTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3Mzk4NSwgCi0gICAgNzM5OTAsIDczOTk1LCA3NDAwMCwgNzQwMDcsIDc0MDEyLCA3NDAxNywgNzQwMjEsIDc0MDI2LCA3NDAzMSwgNzQwMzUsIAotICAgIDc0MDM5LCA3NDA0NCwgNzQwNTAsIDAsIDAsIDc0MDU3LCA3NDA2MSwgNzQwNjQsIDc0MDY3LCA3NDA3MCwgNzQwNzMsIAotICAgIDc0MDc2LCA3NDA3OSwgNzQwODIsIDc0MDg1LCAwLCAwLCA3NDA4OCwgNzQwOTMsIDc0MDk4LCA3NDEwNCwgNzQxMTEsIAotICAgIDc0MTE3LCA3NDEyMywgNzQxMjksIDc0MTM1LCA3NDE0MSwgNzQxNDcsIDc0MTUzLCA3NDE1OSwgNzQxNjUsIDc0MTcxLCAKLSAgICA3NDE3NywgNzQxODIsIDc0MTg4LCA3NDE5MywgNzQxOTksIDc0MjA1LCA3NDIxMiwgNzQyMTgsIDc0MjI0LCA3NDIyOSwgCi0gICAgNzQyMzYsIDc0MjQzLCA3NDI1MCwgNzQyNTYsIDc0MjYxLCA3NDI2NiwgNzQyNzEsIDAsIDAsIDAsIDAsIDc0Mjc5LCAKLSAgICA3NDI4NSwgNzQyOTEsIDc0Mjk3LCA3NDMwMywgNzQzMDksIDc0MzE1LCA3NDMyMSwgNzQzMjcsIDc0MzMzLCA3NDMzOSwgCi0gICAgNzQzNDUsIDc0MzUxLCA3NDM1NywgNzQzNjMsIDc0MzY5LCA3NDM3NSwgNzQzODEsIDc0Mzg3LCA3NDM5MywgNzQzOTksIAotICAgIDc0NDA0LCA3NDQwOSwgNzQ0MTUsIDc0NDIxLCA3NDQyNywgNzQ0MzMsIDc0NDM5LCA3NDQ0NSwgNzQ0NTEsIDc0NDU3LCAKLSAgICA3NDQ2MywgNzQ0NjksIDc0NDc1LCA3NDQ4MSwgNzQ0ODcsIDc0NDkzLCA3NDQ5OSwgNzQ1MDUsIDc0NTExLCA3NDUxNywgCi0gICAgNzQ1MjMsIDc0NTI5LCA3NDUzNSwgNzQ1NDEsIDc0NTQ3LCA3NDU1MywgNzQ1NTgsIDc0NTYzLCA3NDU2OSwgNzQ1NzQsIAotICAgIDc0NTc4LCA3NDU4MywgNzQ1ODcsIDc0NTkxLCA3NDU5NSwgNzQ2MDEsIDc0NjA2LCA3NDYxMSwgNzQ2MTYsIDc0NjIxLCAKLSAgICA3NDYyNiwgNzQ2MzEsIDc0NjM2LCA3NDY0MywgNzQ2NTAsIDc0NjU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY2NCwgNzQ2NjksIDc0Njc0LCA3NDY3OSwgCi0gICAgNzQ2ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjkzLCA3NDY5NywgNzQ3MDEsIDc0NzA1LCA3NDcwOSwgCi0gICAgNzQ3MTMsIDAsIDAsIDc0NzE3LCA3NDcyMSwgNzQ3MjUsIDc0NzI5LCA3NDczMywgNzQ3MzcsIDAsIDAsIDc0NzQxLCAKLSAgICA3NDc0NSwgNzQ3NDksIDc0NzUzLCA3NDc1NywgNzQ3NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NzY1LCAKLSAgICA3NDc2OSwgNzQ3NzMsIDc0Nzc3LCA3NDc4MSwgNzQ3ODUsIDc0Nzg5LCAwLCA3NDc5MywgNzQ3OTcsIDc0ODAxLCA3NDgwNSwgCi0gICAgNzQ4MDksIDc0ODEzLCA3NDgxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU1MzIsIDc1NTM3LCA3NTU0MiwgNzU1NDcsIDc1NTU0LCA3NTU2MSwgNzU1NjUsIDc1NTY5LCA3NTU3NCwgNzU1NzksIAorICAgIDc1NTg0LCA3NTU4OSwgNzU1OTQsIDc1NTk5LCA3NTYwNCwgNzU2MDksIDc1NjE0LCA3NTYyMCwgNzU2MjYsIDc1NjMyLCAKKyAgICA3NTYzOCwgNzU2NDQsIDc1NjQ4LCA3NTY1NCwgNzU2NTgsIDc1NjY0LCA3NTY3MSwgNzU2NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc1NjgxLCA3NTY4NSwgNzU2ODksIDc1NjkzLCA3NTY5NywgNzU3MDEsIDAsIDAsIDc1NzA1LCA3NTcwOSwgCisgICAgNzU3MTMsIDc1NzE3LCA3NTcyMSwgNzU3MjUsIDAsIDAsIDc1NzI5LCA3NTczMywgNzU3MzcsIDc1NzQxLCA3NTc0NSwgCisgICAgNzU3NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzUzLCA3NTc1NywgNzU3NjEsIDc1NzY1LCA3NTc2OSwgCisgICAgNzU3NzMsIDc1Nzc3LCAwLCA3NTc4MSwgNzU3ODUsIDc1Nzg5LCA3NTc5MywgNzU3OTcsIDc1ODAxLCA3NTgwNSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ4MjEsIDc0ODI4LCA3NDgzNSwgNzQ4NDIsIDc0ODQ5LCA3NDg1NSwgNzQ4NjEsIAotICAgIDc0ODY4LCA3NDg3NSwgNzQ4ODIsIDc0ODg5LCA3NDg5NiwgNzQ5MDMsIDc0OTEwLCA3NDkxNywgNzQ5MjQsIDc0OTMwLCAKLSAgICA3NDkzNywgNzQ5NDQsIDc0OTUxLCA3NDk1OCwgNzQ5NjUsIDc0OTcyLCA3NDk3OSwgNzQ5ODYsIDc0OTkzLCA3NTAwMCwgCi0gICAgNzUwMDcsIDc1MDE2LCA3NTAyNSwgNzUwMzQsIDc1MDQzLCA3NTA1MiwgNzUwNjEsIDc1MDcwLCA3NTA3OSwgNzUwODcsIAotICAgIDc1MDk1LCA3NTEwMywgNzUxMTEsIDc1MTE5LCA3NTEyNywgNzUxMzUsIDc1MTQzLCA3NTE0OSwgNzUxNTcsIDAsIDAsIAotICAgIDc1MTY1LCA3NTE3MiwgNzUxNzgsIDc1MTg0LCA3NTE5MCwgNzUxOTYsIDc1MjAyLCA3NTIwOCwgNzUyMTQsIDc1MjIwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3NTgwOSwgNzU4MTQsIDc1ODE5LCA3NTgyNCwgNzU4MjksIDc1ODMzLCA3NTgzNywgNzU4NDIsIDc1ODQ3LCA3NTg1MiwgCisgICAgNzU4NTcsIDc1ODYyLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MiwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgNzU5MDEsIAorICAgIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDgsIDc1OTU1LCAKKyAgICA3NTk2MiwgNzU5NjksIDc1OTc2LCA3NTk4MywgNzU5OTAsIDc1OTk3LCA3NjAwMywgNzYwMDksIDc2MDE1LCA3NjAyMSwgCisgICAgNzYwMjcsIDc2MDMzLCA3NjAzOSwgNzYwNDUsIDc2MDQ5LCA3NjA1NSwgMCwgMCwgNzYwNjEsIDc2MDY2LCA3NjA3MCwgCisgICAgNzYwNzQsIDc2MDc4LCA3NjA4MiwgNzYwODYsIDc2MDkwLCA3NjA5NCwgNzYwOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTAyLCAKKyAgICA3NjEwNiwgNzYxMTAsIDc2MTE0LCA3NjExOCwgNzYxMjIsIDc2MTI2LCA3NjEzMCwgNzYxMzQsIDc2MTM4LCA3NjE0MiwgCisgICAgNzYxNDYsIDc2MTUwLCA3NjE1NCwgNzYxNTgsIDc2MTYyLCA3NjE2NiwgNzYxNzAsIDc2MTc0LCA3NjE3OCwgNzYxODIsIAorICAgIDc2MTg2LCA3NjE5MCwgMCwgMCwgMCwgMCwgNzYxOTQsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgCisgICAgNzYyMTgsIDc2MjIyLCA3NjIyNiwgNzYyMzAsIDc2MjM0LCA3NjIzOCwgNzYyNDIsIDc2MjQ2LCA3NjI1MCwgNzYyNTQsIAorICAgIDc2MjU4LCA3NjI2MiwgNzYyNjYsIDc2MjcwLCA3NjI3NCwgNzYyNzgsIDc2MjgyLCA3NjI4NiwgNzYyOTAsIDc2Mjk0LCAKKyAgICA3NjI5OCwgNzYzMDIsIDc2MzA2LCA3NjMxMCwgNzYzMTQsIDc2MzE4LCA3NjMyMiwgNzYzMjYsIDc2MzMwLCA3NjMzNCwgCisgICAgNzYzMzgsIDc2MzQyLCA3NjM0NiwgNzYzNTAsIDc2MzU0LCA3NjM1OCwgNzYzNjIsIDc2MzY2LCA3NjM3MCwgNzYzNzQsIAorICAgIDc2Mzc4LCA3NjM4MiwgNzYzODYsIDAsIDAsIDAsIDAsIDc2MzkwLCA3NjM5NCwgNzYzOTgsIDc2NDAyLCA3NjQwNiwgCisgICAgNzY0MTAsIDc2NDE0LCA3NjQxOCwgNzY0MjIsIDc2NDI2LCA3NjQzMCwgNzY0MzQsIDc2NDM4LCA3NjQ0MiwgNzY0NDYsIAorICAgIDc2NDUwLCA3NjQ1NCwgNzY0NTgsIDc2NDYyLCA3NjQ2NiwgNzY0NzAsIDc2NDc0LCA3NjQ3OCwgNzY0ODIsIDc2NDg2LCAKKyAgICA3NjQ5MCwgNzY0OTQsIDc2NDk4LCA3NjUwMiwgNzY1MDYsIDc2NTEwLCA3NjUxNCwgNzY1MTgsIDc2NTIyLCA3NjUyNiwgCisgICAgNzY1MzAsIDc2NTM0LCA3NjUzOCwgNzY1NDIsIDc2NTQ2LCA3NjU1MCwgNzY1NTQsIDc2NTU4LCA3NjU2MiwgNzY1NjYsIAorICAgIDc2NTcwLCA3NjU3NCwgNzY1NzgsIDc2NTgyLCA3NjU4NiwgNzY1OTAsIDc2NTk0LCA3NjU5OCwgNzY2MDIsIDc2NjA2LCAKKyAgICA3NjYxMCwgNzY2MTQsIDc2NjE4LCA3NjYyMiwgNzY2MjYsIDc2NjMwLCA3NjYzNCwgNzY2MzgsIDc2NjQyLCA3NjY0NiwgCisgICAgNzY2NTAsIDc2NjU0LCA3NjY1OCwgNzY2NjIsIDc2NjY2LCA3NjY3MCwgNzY2NzQsIDc2Njc4LCA3NjY4MiwgNzY2ODYsIAorICAgIDc2NjkwLCA3NjY5NCwgNzY2OTgsIDc2NzAyLCA3NjcwNiwgNzY3MTAsIDc2NzE0LCA3NjcxOCwgNzY3MjIsIDc2NzI2LCAKKyAgICA3NjczMCwgNzY3MzQsIDc2NzM4LCA3Njc0MiwgNzY3NDYsIDc2NzUwLCA3Njc1NCwgNzY3NTgsIDc2NzYyLCA3Njc2NiwgCisgICAgNzY3NzAsIDc2Nzc0LCA3Njc3OCwgNzY3ODIsIDc2Nzg2LCA3Njc5MCwgNzY3OTQsIDc2Nzk4LCA3NjgwMiwgNzY4MDYsIAorICAgIDc2ODEwLCA3NjgxNCwgNzY4MTgsIDc2ODIyLCA3NjgyNiwgNzY4MzAsIDc2ODM0LCA3NjgzOCwgNzY4NDIsIDc2ODQ2LCAKKyAgICA3Njg1MCwgNzY4NTQsIDc2ODU4LCA3Njg2MiwgNzY4NjYsIDc2ODcwLCA3Njg3NCwgNzY4NzgsIDc2ODgyLCA3Njg4NiwgCisgICAgNzY4OTAsIDc2ODk0LCA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgNzY5MjYsIAorICAgIDc2OTMwLCA3NjkzNCwgNzY5MzgsIDc2OTQyLCA3Njk0NiwgNzY5NTAsIDc2OTU0LCA3Njk1OCwgNzY5NjIsIDc2OTY2LCAKKyAgICA3Njk3MCwgNzY5NzQsIDc2OTc4LCA3Njk4MiwgNzY5ODYsIDc2OTkwLCA3Njk5NCwgNzY5OTgsIDc3MDAyLCA3NzAwNiwgCisgICAgNzcwMTAsIDc3MDE0LCA3NzAxOCwgNzcwMjIsIDc3MDI2LCA3NzAzMCwgNzcwMzQsIDc3MDM4LCA3NzA0MiwgNzcwNDYsIAorICAgIDc3MDUwLCA3NzA1NCwgNzcwNTgsIDc3MDYyLCA3NzA2NiwgNzcwNzAsIDc3MDc0LCA3NzA3OCwgNzcwODIsIDc3MDg2LCAKKyAgICA3NzA5MCwgNzcwOTQsIDc3MDk4LCA3NzEwMiwgNzcxMDYsIDc3MTEwLCA3NzExNCwgNzcxMTgsIDc3MTIyLCA3NzEyNiwgCisgICAgNzcxMzAsIDc3MTM0LCA3NzEzOCwgNzcxNDIsIDc3MTQ2LCA3NzE1MCwgNzcxNTQsIDc3MTU4LCA3NzE2MiwgNzcxNjYsIAorICAgIDc3MTcwLCA3NzE3NCwgNzcxNzgsIDc3MTgyLCA3NzE4NiwgNzcxOTAsIDc3MTk0LCA3NzE5OCwgNzcyMDIsIDc3MjA2LCAKKyAgICA3NzIxMCwgNzcyMTQsIDc3MjE4LCA3NzIyMiwgNzcyMjYsIDc3MjMwLCA3NzIzNCwgNzcyMzgsIDc3MjQyLCA3NzI0NiwgCisgICAgNzcyNTAsIDc3MjU0LCA3NzI1OCwgNzcyNjIsIDc3MjY2LCA3NzI3MCwgNzcyNzQsIDc3Mjc4LCA3NzI4MiwgNzcyODYsIAorICAgIDc3MjkwLCA3NzI5NCwgNzcyOTgsIDc3MzAyLCA3NzMwNiwgNzczMTAsIDc3MzE0LCA3NzMxOCwgNzczMjIsIDc3MzI2LCAKKyAgICA3NzMzMCwgNzczMzQsIDc3MzM4LCA3NzM0MiwgNzczNDYsIDc3MzUwLCA3NzM1NCwgNzczNTgsIDc3MzYyLCA3NzM2NiwgCisgICAgNzczNzAsIDc3Mzc0LCA3NzM3OCwgNzczODIsIDc3Mzg2LCA3NzM5MCwgNzczOTQsIDc3Mzk4LCA3NzQwMiwgNzc0MDYsIAorICAgIDc3NDEwLCA3NzQxNCwgNzc0MTgsIDc3NDIyLCA3NzQyNiwgNzc0MzAsIDc3NDM0LCA3NzQzOCwgNzc0NDIsIDc3NDQ2LCAKKyAgICA3NzQ1MCwgNzc0NTQsIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIDc3NDcwLCA3NzQ3NCwgNzc0NzgsIDc3NDgyLCA3NzQ4NiwgCisgICAgNzc0OTAsIDc3NDk0LCA3NzQ5OCwgNzc1MDIsIDc3NTA2LCA3NzUxMCwgNzc1MTQsIDc3NTE4LCA3NzUyMiwgNzc1MjYsIAorICAgIDc3NTMwLCA3NzUzNCwgNzc1MzgsIDc3NTQyLCA3NzU0NiwgNzc1NTAsIDc3NTU0LCA3NzU1OCwgNzc1NjIsIDc3NTY2LCAKKyAgICA3NzU3MCwgNzc1NzQsIDc3NTc4LCA3NzU4MiwgNzc1ODYsIDc3NTkwLCA3NzU5NCwgNzc1OTgsIDc3NjAyLCA3NzYwNiwgCisgICAgNzc2MTAsIDc3NjE0LCA3NzYxOCwgNzc2MjIsIDc3NjI2LCA3NzYzMCwgNzc2MzQsIDc3NjM4LCA3NzY0MiwgNzc2NDYsIAorICAgIDc3NjUwLCA3NzY1NCwgNzc2NTgsIDc3NjYyLCA3NzY2NiwgNzc2NzAsIDc3Njc0LCA3NzY3OCwgNzc2ODIsIDc3Njg2LCAKKyAgICA3NzY5MCwgNzc2OTQsIDc3Njk4LCA3NzcwMiwgNzc3MDYsIDc3NzEwLCA3NzcxNCwgNzc3MTgsIDc3NzIyLCA3NzcyNiwgCisgICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTQsIDc3NzU4LCA3Nzc2MiwgNzc3NjYsIAorICAgIDc3NzcwLCA3Nzc3NCwgNzc3NzgsIDc3NzgyLCA3Nzc4NiwgNzc3OTAsIDc3Nzk0LCA3Nzc5OCwgNzc4MDIsIDc3ODA2LCAKKyAgICA3NzgxMCwgNzc4MTQsIDc3ODE4LCA3NzgyMiwgNzc4MjYsIDc3ODMwLCA3NzgzNCwgNzc4MzgsIDc3ODQyLCA3Nzg0NiwgCisgICAgNzc4NTAsIDAsIDAsIDc3ODU0LCA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCA3Nzg4MiwgCisgICAgNzc4ODYsIDc3ODkwLCA3Nzg5NCwgNzc4OTgsIDc3OTAyLCA3NzkwNiwgNzc5MTAsIDc3OTE0LCA3NzkxOCwgNzc5MjIsIAorICAgIDc3OTI2LCA3NzkzMCwgNzc5MzQsIDc3OTM4LCA3Nzk0MiwgNzc5NDYsIDc3OTUwLCA3Nzk1NCwgNzc5NTgsIDc3OTYyLCAKKyAgICA3Nzk2NiwgNzc5NzAsIDc3OTc0LCA3Nzk3OCwgNzc5ODIsIDc3OTg2LCA3Nzk5MCwgNzc5OTQsIDc3OTk4LCA3ODAwMiwgCisgICAgNzgwMDYsIDc4MDEwLCA3ODAxNCwgNzgwMTgsIDc4MDIyLCA3ODAyNiwgNzgwMzAsIDc4MDM0LCA3ODAzOCwgNzgwNDIsIAorICAgIDc4MDQ2LCA3ODA1MCwgNzgwNTQsIDc4MDU4LCA3ODA2MiwgNzgwNjYsIDc4MDcwLCA3ODA3NCwgNzgwNzgsIDc4MDgyLCAKKyAgICA3ODA4NiwgNzgwOTAsIDc4MDk0LCA3ODA5OCwgNzgxMDIsIDc4MTA2LCA3ODExMCwgNzgxMTQsIDc4MTE4LCA3ODEyMiwgCisgICAgNzgxMjYsIDc4MTMwLCA3ODEzNCwgNzgxMzgsIDc4MTQyLCA3ODE0NiwgNzgxNTAsIDc4MTU0LCA3ODE1OCwgNzgxNjIsIAorICAgIDc4MTY2LCA3ODE3MCwgNzgxNzQsIDc4MTc4LCA3ODE4MiwgNzgxODYsIDc4MTkwLCA3ODE5NCwgNzgxOTgsIDc4MjAyLCAKKyAgICA3ODIwNiwgNzgyMTAsIDc4MjE0LCA3ODIxOCwgNzgyMjIsIDc4MjI2LCA3ODIzMCwgNzgyMzQsIDc4MjM4LCA3ODI0MiwgCisgICAgNzgyNDYsIDc4MjUwLCA3ODI1NCwgNzgyNTgsIDc4MjYyLCA3ODI2NiwgNzgyNzAsIDc4Mjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NTIyNiwgNzUyMzAsIDc1MjM0LCA3NTIzOCwgNzUyNDIsIDc1MjQ2LCA3NTI1MCwgNzUyNTQsIAotICAgIDc1MjU4LCA3NTI2MiwgNzUyNjYsIDc1MjcwLCA3NTI3NCwgNzUyNzgsIDc1MjgyLCA3NTI4NiwgNzUyOTAsIDc1Mjk0LCAKLSAgICA3NTI5OCwgNzUzMDIsIDc1MzA2LCA3NTMxMCwgNzUzMTQsIDAsIDAsIDAsIDAsIDc1MzE4LCA3NTMyMiwgNzUzMjYsIAotICAgIDc1MzMwLCA3NTMzNCwgNzUzMzgsIDc1MzQyLCA3NTM0NiwgNzUzNTAsIDc1MzU0LCA3NTM1OCwgNzUzNjIsIDc1MzY2LCAKLSAgICA3NTM3MCwgNzUzNzQsIDc1Mzc4LCA3NTM4MiwgNzUzODYsIDc1MzkwLCA3NTM5NCwgNzUzOTgsIDc1NDAyLCA3NTQwNiwgCi0gICAgNzU0MTAsIDc1NDE0LCA3NTQxOCwgNzU0MjIsIDc1NDI2LCA3NTQzMCwgNzU0MzQsIDc1NDM4LCA3NTQ0MiwgNzU0NDYsIAotICAgIDc1NDUwLCA3NTQ1NCwgNzU0NTgsIDc1NDYyLCA3NTQ2NiwgNzU0NzAsIDc1NDc0LCA3NTQ3OCwgNzU0ODIsIDc1NDg2LCAKLSAgICA3NTQ5MCwgNzU0OTQsIDc1NDk4LCA3NTUwMiwgNzU1MDYsIDc1NTEwLCAwLCAwLCAwLCAwLCA3NTUxNCwgNzU1MTgsIAotICAgIDc1NTIyLCA3NTUyNiwgNzU1MzAsIDc1NTM0LCA3NTUzOCwgNzU1NDIsIDc1NTQ2LCA3NTU1MCwgNzU1NTQsIDc1NTU4LCAKLSAgICA3NTU2MiwgNzU1NjYsIDc1NTcwLCA3NTU3NCwgNzU1NzgsIDc1NTgyLCA3NTU4NiwgNzU1OTAsIDc1NTk0LCA3NTU5OCwgCi0gICAgNzU2MDIsIDc1NjA2LCA3NTYxMCwgNzU2MTQsIDc1NjE4LCA3NTYyMiwgNzU2MjYsIDc1NjMwLCA3NTYzNCwgNzU2MzgsIAotICAgIDc1NjQyLCA3NTY0NiwgNzU2NTAsIDc1NjU0LCA3NTY1OCwgNzU2NjIsIDc1NjY2LCA3NTY3MCwgNzU2NzQsIDc1Njc4LCAKLSAgICA3NTY4MiwgNzU2ODYsIDc1NjkwLCA3NTY5NCwgNzU2OTgsIDc1NzAyLCA3NTcwNiwgNzU3MTAsIDc1NzE0LCA3NTcxOCwgCi0gICAgNzU3MjIsIDc1NzI2LCA3NTczMCwgNzU3MzQsIDc1NzM4LCA3NTc0MiwgNzU3NDYsIDc1NzUwLCA3NTc1NCwgNzU3NTgsIAotICAgIDc1NzYyLCA3NTc2NiwgNzU3NzAsIDc1Nzc0LCA3NTc3OCwgNzU3ODIsIDc1Nzg2LCA3NTc5MCwgNzU3OTQsIDc1Nzk4LCAKLSAgICA3NTgwMiwgNzU4MDYsIDc1ODEwLCA3NTgxNCwgNzU4MTgsIDc1ODIyLCA3NTgyNiwgNzU4MzAsIDc1ODM0LCA3NTgzOCwgCi0gICAgNzU4NDIsIDc1ODQ2LCA3NTg1MCwgNzU4NTQsIDc1ODU4LCA3NTg2MiwgNzU4NjYsIDc1ODcwLCA3NTg3NCwgNzU4NzgsIAotICAgIDc1ODgyLCA3NTg4NiwgNzU4OTAsIDc1ODk0LCA3NTg5OCwgNzU5MDIsIDc1OTA2LCA3NTkxMCwgNzU5MTQsIDc1OTE4LCAKLSAgICA3NTkyMiwgNzU5MjYsIDc1OTMwLCA3NTkzNCwgNzU5MzgsIDc1OTQyLCA3NTk0NiwgNzU5NTAsIDc1OTU0LCA3NTk1OCwgCi0gICAgNzU5NjIsIDc1OTY2LCA3NTk3MCwgNzU5NzQsIDc1OTc4LCA3NTk4MiwgNzU5ODYsIDc1OTkwLCA3NTk5NCwgNzU5OTgsIAotICAgIDc2MDAyLCA3NjAwNiwgNzYwMTAsIDc2MDE0LCA3NjAxOCwgNzYwMjIsIDc2MDI2LCA3NjAzMCwgNzYwMzQsIDc2MDM4LCAKLSAgICA3NjA0MiwgNzYwNDYsIDc2MDUwLCA3NjA1NCwgNzYwNTgsIDc2MDYyLCA3NjA2NiwgNzYwNzAsIDc2MDc0LCA3NjA3OCwgCi0gICAgNzYwODIsIDc2MDg2LCA3NjA5MCwgNzYwOTQsIDc2MDk4LCA3NjEwMiwgNzYxMDYsIDc2MTEwLCA3NjExNCwgNzYxMTgsIAotICAgIDc2MTIyLCA3NjEyNiwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIDc2MTQ2LCA3NjE1MCwgNzYxNTQsIDc2MTU4LCAKLSAgICA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCA3NjE4NiwgNzYxOTAsIDc2MTk0LCA3NjE5OCwgCi0gICAgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIDc2MjE4LCA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIAotICAgIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCA3NjI1OCwgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCAKLSAgICA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgNzYyOTgsIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgCi0gICAgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIDc2MzM4LCA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIAotICAgIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCA3NjM3OCwgNzYzODIsIDc2Mzg2LCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCAKLSAgICA3NjQwMiwgNzY0MDYsIDc2NDEwLCA3NjQxNCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgCi0gICAgNzY0NDIsIDc2NDQ2LCA3NjQ1MCwgNzY0NTQsIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIAotICAgIDc2NDgyLCA3NjQ4NiwgNzY0OTAsIDc2NDk0LCA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCAKLSAgICA3NjUyMiwgNzY1MjYsIDc2NTMwLCA3NjUzNCwgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgCi0gICAgNzY1NjIsIDc2NTY2LCA3NjU3MCwgNzY1NzQsIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIAotICAgIDc2NjAyLCA3NjYwNiwgNzY2MTAsIDc2NjE0LCA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCAKLSAgICA3NjY0MiwgNzY2NDYsIDc2NjUwLCA3NjY1NCwgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgCi0gICAgNzY2ODIsIDc2Njg2LCA3NjY5MCwgNzY2OTQsIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDAsIAotICAgIDAsIDc2NzIyLCA3NjcyNiwgNzY3MzAsIDc2NzM0LCA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCAKLSAgICA3Njc2MiwgNzY3NjYsIDc2NzcwLCA3Njc3NCwgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgCi0gICAgNzY4MDIsIDc2ODA2LCA3NjgxMCwgNzY4MTQsIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIAotICAgIDc2ODQyLCA3Njg0NiwgNzY4NTAsIDc2ODU0LCA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCAKLSAgICA3Njg4MiwgNzY4ODYsIDc2ODkwLCA3Njg5NCwgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgCi0gICAgNzY5MjIsIDc2OTI2LCA3NjkzMCwgNzY5MzQsIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIAotICAgIDc2OTYyLCA3Njk2NiwgMCwgMCwgNzY5NzAsIDc2OTc0LCA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIAotICAgIDc2OTk4LCA3NzAwMiwgNzcwMDYsIDc3MDEwLCA3NzAxNCwgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCAKLSAgICA3NzAzOCwgNzcwNDIsIDc3MDQ2LCA3NzA1MCwgNzcwNTQsIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgCi0gICAgNzcwNzgsIDc3MDgyLCA3NzA4NiwgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIAotICAgIDc3MTE4LCA3NzEyMiwgNzcxMjYsIDc3MTMwLCA3NzEzNCwgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCAKLSAgICA3NzE1OCwgNzcxNjIsIDc3MTY2LCA3NzE3MCwgNzcxNzQsIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgCi0gICAgNzcxOTgsIDc3MjAyLCA3NzIwNiwgNzcyMTAsIDc3MjE0LCA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIAotICAgIDc3MjM4LCA3NzI0MiwgNzcyNDYsIDc3MjUwLCA3NzI1NCwgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCAKLSAgICA3NzI3OCwgNzcyODIsIDc3Mjg2LCA3NzI5MCwgNzcyOTQsIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgCi0gICAgNzczMTgsIDc3MzIyLCA3NzMyNiwgNzczMzAsIDc3MzM0LCA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIAotICAgIDc3MzU4LCA3NzM2MiwgNzczNjYsIDc3MzcwLCA3NzM3NCwgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4Mjc4LCA3ODI4MywgNzgyODgsIDc4MjkzLCA3ODI5OCwgNzgzMDMsIDc4MzExLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODMxNiwgNzgzMjMsIDc4MzMwLCA3ODMzNywgNzgzNDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc4MzUxLCA3ODM1OCwgNzgzNjUsIDc4Mzc1LCA3ODM4MSwgNzgzODcsIDc4MzkzLCA3ODM5OSwgCisgICAgNzg0MDUsIDc4NDExLCA3ODQxOCwgNzg0MjQsIDc4NDMwLCA3ODQzNiwgNzg0NDUsIDc4NDU0LCA3ODQ2NiwgNzg0NzgsIAorICAgIDc4NDg0LCA3ODQ5MCwgNzg0OTYsIDc4NTAzLCA3ODUxMCwgNzg1MTcsIDc4NTI0LCA3ODUzMSwgMCwgNzg1MzgsIDc4NTQ1LCAKKyAgICA3ODU1MiwgNzg1NjAsIDc4NTY3LCAwLCA3ODU3NCwgMCwgNzg1ODEsIDc4NTg4LCAwLCA3ODU5NSwgNzg2MDMsIDAsIAorICAgIDc4NjEwLCA3ODYxNywgNzg2MjQsIDc4NjMxLCA3ODYzOCwgNzg2NDUsIDc4NjUyLCA3ODY1OSwgNzg2NjYsIDc4NjczLCAKKyAgICA3ODY3OCwgNzg2ODUsIDc4NjkyLCA3ODY5OCwgNzg3MDQsIDc4NzEwLCA3ODcxNiwgNzg3MjIsIDc4NzI4LCA3ODczNCwgCisgICAgNzg3NDAsIDc4NzQ2LCA3ODc1MiwgNzg3NTgsIDc4NzY0LCA3ODc3MCwgNzg3NzYsIDc4NzgyLCA3ODc4OCwgNzg3OTQsIAorICAgIDc4ODAwLCA3ODgwNiwgNzg4MTIsIDc4ODE4LCA3ODgyNCwgNzg4MzAsIDc4ODM2LCA3ODg0MiwgNzg4NDgsIDc4ODU0LCAKKyAgICA3ODg2MCwgNzg4NjYsIDc4ODcyLCA3ODg3OCwgNzg4ODQsIDc4ODkwLCA3ODg5NiwgNzg5MDIsIDc4OTA4LCA3ODkxNCwgCisgICAgNzg5MjAsIDc4OTI2LCA3ODkzMiwgNzg5MzgsIDc4OTQ0LCA3ODk1MCwgNzg5NTYsIDc4OTYyLCA3ODk2OCwgNzg5NzQsIAorICAgIDc4OTgwLCA3ODk4NiwgNzg5OTIsIDc4OTk4LCA3OTAwNCwgNzkwMTAsIDc5MDE2LCA3OTAyMiwgNzkwMjgsIDc5MDM0LCAKKyAgICA3OTA0MCwgNzkwNDYsIDc5MDUyLCA3OTA1OCwgNzkwNjQsIDc5MDcwLCA3OTA3NiwgNzkwODIsIDc5MDg4LCA3OTA5NCwgCisgICAgNzkxMDAsIDc5MTA2LCA3OTExMiwgNzkxMTgsIDc5MTI0LCA3OTEzMCwgNzkxMzYsIDc5MTQyLCA3OTE0OCwgNzkxNTYsIAorICAgIDc5MTY0LCA3OTE3MCwgNzkxNzYsIDc5MTgyLCA3OTE4OCwgNzkxOTcsIDc5MjA2LCA3OTIxNCwgNzkyMjIsIDc5MjMwLCAKKyAgICA3OTIzOCwgNzkyNDYsIDc5MjU0LCA3OTI2MiwgNzkyNzAsIDc5Mjc3LCA3OTI4NCwgNzkyOTQsIDc5MzA0LCA3OTMwOCwgCisgICAgNzkzMTIsIDc5MzE3LCA3OTMyMiwgNzkzMjcsIDc5MzMyLCA3OTM0MSwgNzkzNTAsIDc5MzU2LCA3OTM2MiwgNzkzNjksIAorICAgIDc5Mzc2LCA3OTM4MywgNzkzODcsIDc5MzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3OTM5OSwgNzk0MDUsIDc5NDExLCA3OTQxNywgNzk0MjMsIDc5NDI4LCA3OTQzMywgNzk0MzksIDc5NDQ1LCAKKyAgICA3OTQ1MSwgNzk0NTcsIDc5NDY1LCA3OTQ3MSwgNzk0NzcsIDc5NDg1LCA3OTQ5MywgNzk1MDEsIDc5NTA5LCA3OTUxNCwgCisgICAgNzk1MTksIDc5NTI0LCA3OTUyOSwgNzk1NDIsIDc5NTU1LCA3OTU2NSwgNzk1NzUsIDc5NTg2LCA3OTU5NywgNzk2MDgsIAorICAgIDc5NjE5LCA3OTYyOSwgNzk2MzksIDc5NjUwLCA3OTY2MSwgNzk2NzIsIDc5NjgzLCA3OTY5MywgNzk3MDMsIDc5NzEzLCAKKyAgICA3OTcyOSwgNzk3NDUsIDc5NzYxLCA3OTc2OCwgNzk3NzUsIDc5NzgyLCA3OTc4OSwgNzk3OTksIDc5ODA5LCA3OTgxOSwgCisgICAgNzk4MzEsIDc5ODQxLCA3OTg0OSwgNzk4NTcsIDc5ODY2LCA3OTg3NCwgNzk4ODQsIDc5ODkyLCA3OTkwMCwgNzk5MDgsIAorICAgIDc5OTE3LCA3OTkyNSwgNzk5MzUsIDc5OTQzLCA3OTk1MSwgNzk5NTksIDc5OTY5LCA3OTk3NywgNzk5ODQsIDc5OTkxLCAKKyAgICA3OTk5OCwgODAwMDUsIDgwMDEzLCA4MDAyMSwgODAwMjksIDgwMDM3LCA4MDA0NSwgODAwNTQsIDgwMDYyLCA4MDA3MCwgCisgICAgODAwNzgsIDgwMDg2LCA4MDA5NCwgODAxMDMsIDgwMTExLCA4MDExOSwgODAxMjcsIDgwMTM1LCA4MDE0MywgODAxNTEsIAorICAgIDgwMTU5LCA4MDE2NywgODAxNzUsIDgwMTgzLCA4MDE5MiwgODAyMDAsIDgwMjEwLCA4MDIxOCwgODAyMjYsIDgwMjM0LCAKKyAgICA4MDI0NCwgODAyNTIsIDgwMjYwLCA4MDI2OCwgODAyNzYsIDgwMjg1LCA4MDI5NCwgODAzMDIsIDgwMzEyLCA4MDMyMCwgCisgICAgODAzMjgsIDgwMzM2LCA4MDM0NSwgODAzNTMsIDgwMzYzLCA4MDM3MSwgODAzNzgsIDgwMzg1LCA4MDM5MywgODA0MDAsIAorICAgIDgwNDA5LCA4MDQxNiwgODA0MjQsIDgwNDMyLCA4MDQ0MSwgODA0NDksIDgwNDU5LCA4MDQ2NywgODA0NzUsIDgwNDgzLCAKKyAgICA4MDQ5MywgODA1MDEsIDgwNTA4LCA4MDUxNSwgODA1MjMsIDgwNTMwLCA4MDUzOSwgODA1NDYsIDgwNTU2LCA4MDU2NiwgCisgICAgODA1NzcsIDgwNTg2LCA4MDU5NSwgODA2MDQsIDgwNjEzLCA4MDYyMiwgODA2MzIsIDgwNjQzLCA4MDY1NCwgODA2NjQsIAorICAgIDgwNjc1LCA4MDY4NywgODA2OTcsIDgwNzA2LCA4MDcxNSwgODA3MjMsIDgwNzMyLCA4MDc0MiwgODA3NTAsIDgwNzU5LCAKKyAgICA4MDc2OCwgODA3NzYsIDgwNzg1LCA4MDc5NSwgODA4MDMsIDgwODEyLCA4MDgyMSwgODA4MjksIDgwODM4LCA4MDg0OCwgCisgICAgODA4NTYsIDgwODY2LCA4MDg3NCwgODA4ODQsIDgwODkyLCA4MDkwMCwgODA5MDksIDgwOTE3LCA4MDkyNywgODA5MzUsIAorICAgIDgwOTQzLCA4MDk1MywgODA5NjEsIDgwOTY4LCA4MDk3NSwgODA5ODQsIDgwOTkzLCA4MTAwMSwgODEwMTAsIDgxMDIwLCAKKyAgICA4MTAyOCwgODEwMzksIDgxMDQ3LCA4MTA1NSwgODEwNjIsIDgxMDcwLCA4MTA3OSwgODEwODYsIDgxMDk2LCA4MTEwNiwgCisgICAgODExMTcsIDgxMTI3LCA4MTEzOCwgODExNDYsIDgxMTU0LCA4MTE2MywgODExNzEsIDgxMTgwLCA4MTE4OCwgODExOTYsIAorICAgIDgxMjA1LCA4MTIxMywgODEyMjIsIDgxMjMwLCA4MTIzNywgODEyNDQsIDgxMjUxLCA4MTI1OCwgODEyNjYsIDgxMjc0LCAKKyAgICA4MTI4MiwgODEyOTAsIDgxMjk5LCA4MTMwNywgODEzMTUsIDgxMzI0LCA4MTMzMiwgODEzNDAsIDgxMzQ4LCA4MTM1NywgCisgICAgODEzNjUsIDgxMzczLCA4MTM4MSwgODEzODksIDgxMzk3LCA4MTQwNSwgODE0MTMsIDgxNDIxLCA4MTQyOSwgODE0MzgsIAorICAgIDgxNDQ2LCA4MTQ1NCwgODE0NjIsIDgxNDcwLCA4MTQ3OCwgODE0ODcsIDgxNDk2LCA4MTUwNCwgODE1MTIsIDgxNTIwLCAKKyAgICA4MTUyOSwgODE1MzcsIDgxNTQ2LCA4MTU1MywgODE1NjAsIDgxNTY4LCA4MTU3NSwgODE1ODMsIDgxNTkxLCA4MTYwMCwgCisgICAgODE2MDgsIDgxNjE3LCA4MTYyNSwgODE2MzMsIDgxNjQzLCA4MTY1MCwgODE2NTcsIDgxNjY1LCA4MTY3MiwgODE2ODAsIAorICAgIDgxNjkwLCA4MTcwMSwgODE3MDksIDgxNzE4LCA4MTcyNiwgODE3MzUsIDgxNzQzLCA4MTc1MiwgODE3NjAsIDgxNzY5LCAKKyAgICA4MTc3NywgODE3ODYsIDgxNzk1LCA4MTgwMywgODE4MTEsIDgxODE5LCA4MTgyOCwgODE4MzUsIDgxODQzLCA4MTg1MiwgCisgICAgODE4NjEsIDgxODcwLCA4MTg4MCwgODE4ODgsIDgxODk4LCA4MTkwNiwgODE5MTYsIDgxOTI0LCA4MTkzNCwgODE5NDIsIAorICAgIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4NSwgODE5OTIsIDgyMDAyLCA4MjAxMCwgODIwMjAsIDgyMDI4LCAKKyAgICA4MjAzOCwgODIwNDYsIDgyMDU0LCA4MjA2MiwgODIwNzEsIDgyMDc5LCA4MjA4OCwgODIwOTcsIDgyMTA2LCA4MjExNSwgCisgICAgODIxMjUsIDgyMTMzLCA4MjE0MywgODIxNTEsIDgyMTYxLCA4MjE2OSwgODIxNzksIDgyMTg3LCA4MjE5NywgODIyMDUsIAorICAgIDgyMjE0LCA4MjIyMSwgODIyMzAsIDgyMjM3LCA4MjI0NywgODIyNTUsIDgyMjY1LCA4MjI3MywgODIyODMsIDgyMjkxLCAKKyAgICA4MjI5OSwgODIzMDcsIDgyMzE2LCA4MjMyNCwgODIzMzMsIDgyMzQyLCA4MjM1MSwgODIzNjAsIDgyMzY4LCA4MjM3NiwgCisgICAgODIzODUsIDgyMzkzLCA4MjQwMiwgODI0MTEsIDgyNDE5LCA4MjQyNywgODI0MzUsIDgyNDQ0LCA4MjQ1MiwgODI0NjAsIAorICAgIDgyNDY5LCA4MjQ3NywgODI0ODUsIDgyNDkzLCA4MjUwMSwgODI1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgyNTExLCA4MjUyMSwgODI1MzEsIDgyNTQxLCA4MjU1MSwgODI1NjIsIDgyNTcyLCA4MjU4MiwgCisgICAgODI1OTMsIDgyNjAyLCA4MjYxMSwgODI2MjAsIDgyNjMxLCA4MjY0MSwgODI2NTEsIDgyNjYzLCA4MjY3MywgODI2ODMsIAorICAgIDgyNjkzLCA4MjcwMywgODI3MTMsIDgyNzIzLCA4MjczMywgODI3NDMsIDgyNzUzLCA4Mjc2MywgODI3NzMsIDgyNzg0LCAKKyAgICA4Mjc5NSwgODI4MDUsIDgyODE1LCA4MjgyNywgODI4MzgsIDgyODQ5LCA4Mjg1OSwgODI4NjksIDgyODc5LCA4Mjg4OSwgCisgICAgODI4OTksIDgyOTA5LCA4MjkxOSwgODI5MzEsIDgyOTQxLCA4Mjk1MSwgODI5NjMsIDgyOTc0LCA4Mjk4NSwgODI5OTUsIAorICAgIDgzMDA1LCA4MzAxNSwgODMwMjUsIDgzMDM3LCA4MzA0NywgODMwNTcsIDgzMDY4LCA4MzA3OSwgODMwODksIDgzMDk5LCAKKyAgICA4MzEwOCwgODMxMTcsIDgzMTI2LCA4MzEzNSwgODMxNDQsIDgzMTU0LCAwLCAwLCA4MzE2NCwgODMxNzQsIDgzMTg0LCAKKyAgICA4MzE5NCwgODMyMDQsIDgzMjE2LCA4MzIyNiwgODMyMzYsIDgzMjQ4LCA4MzI1OCwgODMyNzAsIDgzMjc5LCA4MzI4OCwgCisgICAgODMyOTksIDgzMzA5LCA4MzMyMSwgODMzMzIsIDgzMzQ1LCA4MzM1NSwgODMzNjcsIDgzMzc2LCA4MzM4NywgODMzOTgsIAorICAgIDgzNDExLCA4MzQyMSwgODM0MzEsIDgzNDQxLCA4MzQ1MSwgODM0NjEsIDgzNDcwLCA4MzQ3OSwgODM0ODgsIDgzNDk3LCAKKyAgICA4MzUwNywgODM1MTcsIDgzNTI3LCA4MzUzNywgODM1NDcsIDgzNTU3LCA4MzU2NywgODM1NzcsIDgzNTg3LCA4MzU5NywgCisgICAgODM2MDcsIDgzNjE3LCA4MzYyNiwgODM2MzUsIDgzNjQ0LCA4MzY1NCwgODM2NjQsIDgzNjc0LCA4MzY4NCwgODM2OTQsIAorICAgIDgzNzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzcxNSwgODM3MzAsIAorICAgIDgzNzQ1LCA4Mzc1MSwgODM3NTcsIDgzNzYzLCA4Mzc2OSwgODM3NzUsIDgzNzgxLCA4Mzc4NywgODM3OTMsIDgzODAxLCAKKyAgICA4MzgwNSwgODM4MDgsIDAsIDAsIDgzODE2LCA4MzgxOSwgODM4MjIsIDgzODI1LCA4MzgyOCwgODM4MzEsIDgzODM0LCAKKyAgICA4MzgzNywgODM4NDAsIDgzODQzLCA4Mzg0NiwgODM4NDksIDgzODUyLCA4Mzg1NSwgODM4NTgsIDgzODYxLCA4Mzg2NCwgCisgICAgODM4NzIsIDgzODgxLCA4Mzg5MiwgODM5MDAsIDgzOTA4LCA4MzkxNywgODM5MjYsIDgzOTM3LCA4Mzk0OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODM5NTgsIDgzOTYzLCA4Mzk2OCwgODM5NzUsIDgzOTgyLCA4Mzk4OCwgODM5OTQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgzOTk5LCA4NDAwOSwgODQwMTksIDg0MDI5LCA4NDAzOCwgODQwNDksIDg0MDU4LCA4NDA2NywgCisgICAgODQwNzcsIDg0MDg3LCA4NDA5OSwgODQxMTEsIDg0MTIyLCA4NDEzMywgODQxNDQsIDg0MTU1LCA4NDE2NSwgODQxNzUsIAorICAgIDg0MTg1LCA4NDE5NSwgODQyMDYsIDg0MjE3LCA4NDIyMSwgODQyMjYsIDg0MjM1LCA4NDI0NCwgODQyNDgsIDg0MjUyLCAKKyAgICA4NDI1NiwgODQyNjEsIDg0MjY2LCA4NDI3MSwgODQyNzYsIDg0Mjc5LCA4NDI4MywgMCwgODQyODgsIDg0MjkxLCA4NDI5NCwgCisgICAgODQyOTgsIDg0MzAyLCA4NDMwNywgODQzMTEsIDg0MzE1LCA4NDMyMCwgODQzMjUsIDg0MzMyLCA4NDMzOSwgODQzNDIsIAorICAgIDg0MzQ1LCA4NDM0OCwgODQzNTEsIDg0MzU0LCA4NDM1OCwgODQzNjIsIDAsIDg0MzY2LCA4NDM3MSwgODQzNzUsIDg0Mzc5LCAKKyAgICAwLCAwLCAwLCAwLCA4NDM4NCwgODQzODksIDg0Mzk2LCA4NDQwMSwgODQ0MDYsIDAsIDg0NDExLCA4NDQxNiwgODQ0MjEsIAorICAgIDg0NDI2LCA4NDQzMSwgODQ0MzYsIDg0NDQxLCA4NDQ0NiwgODQ0NTEsIDg0NDU2LCA4NDQ2MSwgODQ0NjYsIDg0NDc1LCAKKyAgICA4NDQ4NCwgODQ0OTIsIDg0NTAwLCA4NDUwOSwgODQ1MTgsIDg0NTI3LCA4NDUzNiwgODQ1NDQsIDg0NTUyLCA4NDU2MCwgCisgICAgODQ1NjgsIDg0NTczLCA4NDU3OCwgODQ1ODQsIDg0NTkwLCA4NDU5NiwgODQ2MDIsIDg0NjEwLCA4NDYxOCwgODQ2MjQsIAorICAgIDg0NjMwLCA4NDYzNiwgODQ2NDIsIDg0NjQ4LCA4NDY1NCwgODQ2NjAsIDg0NjY2LCA4NDY3MSwgODQ2NzYsIDg0NjgxLCAKKyAgICA4NDY4NiwgODQ2OTEsIDg0Njk2LCA4NDcwMSwgODQ3MDYsIDg0NzEyLCA4NDcxOCwgODQ3MjQsIDg0NzMwLCA4NDczNiwgCisgICAgODQ3NDIsIDg0NzQ4LCA4NDc1NCwgODQ3NjAsIDg0NzY2LCA4NDc3MiwgODQ3NzgsIDg0Nzg0LCA4NDc5MCwgODQ3OTYsIAorICAgIDg0ODAyLCA4NDgwOCwgODQ4MTQsIDg0ODIwLCA4NDgyNiwgODQ4MzIsIDg0ODM4LCA4NDg0NCwgODQ4NTAsIDg0ODU2LCAKKyAgICA4NDg2MiwgODQ4NjgsIDg0ODc0LCA4NDg4MCwgODQ4ODYsIDg0ODkyLCA4NDg5OCwgODQ5MDQsIDg0OTEwLCA4NDkxNiwgCisgICAgODQ5MjIsIDg0OTI4LCA4NDkzNCwgODQ5NDAsIDg0OTQ2LCA4NDk1MiwgODQ5NTgsIDg0OTY0LCA4NDk3MCwgODQ5NzYsIAorICAgIDg0OTgyLCA4NDk4OCwgODQ5OTQsIDg1MDAwLCA4NTAwNiwgODUwMTIsIDg1MDE4LCA4NTAyNCwgODUwMzAsIDg1MDM2LCAKKyAgICA4NTA0MiwgODUwNDgsIDg1MDU0LCA4NTA2MCwgODUwNjYsIDg1MDcxLCA4NTA3NiwgODUwODEsIDg1MDg2LCA4NTA5MiwgCisgICAgODUwOTgsIDg1MTA0LCA4NTExMCwgODUxMTYsIDg1MTIyLCA4NTEyOCwgODUxMzQsIDg1MTQwLCA4NTE0NiwgODUxNTMsIAorICAgIDg1MTYwLCA4NTE2NSwgODUxNzAsIDg1MTc1LCA4NTE4MCwgODUxOTIsIDg1MjA0LCA4NTIxNSwgODUyMjYsIDg1MjM4LCAKKyAgICA4NTI1MCwgODUyNTgsIDAsIDAsIDg1MjY2LCAwLCA4NTI3NCwgODUyNzgsIDg1MjgyLCA4NTI4NSwgODUyODksIDg1MjkzLCAKKyAgICA4NTI5NiwgODUyOTksIDg1MzAzLCA4NTMwNywgODUzMTAsIDg1MzEzLCA4NTMxNiwgODUzMTksIDg1MzI0LCA4NTMyNywgCisgICAgODUzMzEsIDg1MzM0LCA4NTMzNywgODUzNDAsIDg1MzQzLCA4NTM0NiwgODUzNDksIDg1MzUyLCA4NTM1NSwgODUzNTgsIAorICAgIDg1MzYxLCA4NTM2NCwgODUzNjgsIDg1MzcyLCA4NTM3NiwgODUzODAsIDg1Mzg1LCA4NTM5MCwgODUzOTYsIDg1NDAyLCAKKyAgICA4NTQwOCwgODU0MTMsIDg1NDE5LCA4NTQyNSwgODU0MzEsIDg1NDM2LCA4NTQ0MiwgODU0NDgsIDg1NDUzLCA4NTQ1OCwgCisgICAgODU0NjQsIDg1NDY5LCA4NTQ3NSwgODU0ODEsIDg1NDg2LCA4NTQ5MiwgODU0OTgsIDg1NTAzLCA4NTUwOSwgODU1MTUsIAorICAgIDg1NTIxLCA4NTUyNywgODU1MzMsIDg1NTM3LCA4NTU0MiwgODU1NDYsIDg1NTUxLCA4NTU1NSwgODU1NjAsIDg1NTY1LCAKKyAgICA4NTU3MSwgODU1NzcsIDg1NTgzLCA4NTU4OCwgODU1OTQsIDg1NjAwLCA4NTYwNiwgODU2MTEsIDg1NjE3LCA4NTYyMywgCisgICAgODU2MjgsIDg1NjMzLCA4NTYzOSwgODU2NDQsIDg1NjUwLCA4NTY1NiwgODU2NjEsIDg1NjY3LCA4NTY3MywgODU2NzgsIAorICAgIDg1Njg0LCA4NTY5MCwgODU2OTYsIDg1NzAyLCA4NTcwOCwgODU3MTMsIDg1NzE3LCA4NTcyMiwgODU3MjQsIDg1NzI5LCAKKyAgICA4NTczNCwgODU3NDAsIDg1NzQ1LCA4NTc1MCwgODU3NTQsIDg1NzYwLCA4NTc2NSwgODU3NzAsIDg1Nzc1LCA4NTc4MCwgCisgICAgODU3ODUsIDg1NzkwLCA4NTc5NSwgODU4MDEsIDg1ODA3LCA4NTgxMywgODU4MjEsIDg1ODI1LCA4NTgyOSwgODU4MzMsIAorICAgIDg1ODM3LCA4NTg0MSwgODU4NDUsIDg1ODUwLCA4NTg1NSwgODU4NjAsIDg1ODY1LCA4NTg2OSwgODU4NzQsIDg1ODc5LCAKKyAgICA4NTg4NCwgODU4ODksIDg1ODk0LCA4NTg5OSwgODU5MDQsIDg1OTA5LCA4NTkxMywgODU5MTcsIDg1OTIyLCA4NTkyNywgCisgICAgODU5MzIsIDg1OTM3LCA4NTk0MSwgODU5NDYsIDg1OTUxLCA4NTk1NiwgODU5NjEsIDg1OTY1LCA4NTk3MCwgODU5NzUsIAorICAgIDg1OTgwLCA4NTk4NSwgODU5ODksIDg1OTk0LCA4NTk5OSwgODYwMDMsIDg2MDA4LCA4NjAxMywgODYwMTgsIDg2MDIzLCAKKyAgICA4NjAyOCwgODYwMzMsIDg2MDQwLCA4NjA0NywgODYwNTEsIDg2MDU2LCA4NjA2MSwgODYwNjYsIDg2MDcxLCA4NjA3NiwgCisgICAgODYwODEsIDg2MDg2LCA4NjA5MSwgODYwOTYsIDg2MTAxLCA4NjEwNiwgODYxMTEsIDg2MTE2LCA4NjEyMSwgODYxMjYsIAorICAgIDg2MTMxLCA4NjEzNiwgODYxNDEsIDg2MTQ2LCA4NjE1MSwgODYxNTYsIDg2MTYxLCA4NjE2NiwgODYxNzEsIDg2MTc2LCAKKyAgICA4NjE4MSwgODYxODYsIDg2MTkxLCA4NjE5NiwgMCwgMCwgMCwgODYyMDEsIDg2MjA1LCA4NjIxMCwgODYyMTQsIDg2MjE5LCAKKyAgICA4NjIyNCwgMCwgMCwgODYyMjgsIDg2MjMzLCA4NjIzOCwgODYyNDIsIDg2MjQ3LCA4NjI1MiwgMCwgMCwgODYyNTcsIAorICAgIDg2MjYyLCA4NjI2NiwgODYyNzEsIDg2Mjc2LCA4NjI4MSwgMCwgMCwgODYyODYsIDg2MjkxLCA4NjI5NiwgMCwgMCwgMCwgCisgICAgODYzMDAsIDg2MzA0LCA4NjMwOCwgODYzMTIsIDg2MzE1LCA4NjMxOSwgODYzMjMsIDAsIDg2MzI3LCA4NjMzMywgODYzMzYsIAorICAgIDg2MzQwLCA4NjM0MywgODYzNDcsIDg2MzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjM1NSwgODYzNjEsIAorICAgIDg2MzY3LCA4NjM3MywgODYzNzksIDAsIDAsIDg2MzgzLCA4NjM4OSwgODYzOTUsIDg2NDAxLCA4NjQwNywgODY0MTMsIAorICAgIDg2NDIwLCA4NjQyNywgODY0MzQsIDg2NDQxLCA4NjQ0OCwgODY0NTUsIDAsIDg2NDYyLCA4NjQ2OSwgODY0NzYsIDg2NDgyLCAKKyAgICA4NjQ4OSwgODY0OTYsIDg2NTAzLCA4NjUxMCwgODY1MTYsIDg2NTIzLCA4NjUzMCwgODY1MzcsIDg2NTQ0LCA4NjU1MCwgCisgICAgODY1NTcsIDg2NTY0LCA4NjU3MSwgODY1NzgsIDg2NTg0LCA4NjU5MSwgODY1OTgsIDg2NjA1LCA4NjYxMiwgODY2MTksIAorICAgIDg2NjI2LCA4NjYzMywgMCwgODY2NDAsIDg2NjQ2LCA4NjY1MywgODY2NjAsIDg2NjY3LCA4NjY3NCwgODY2ODAsIDg2Njg3LCAKKyAgICA4NjY5NCwgODY3MDEsIDg2NzA4LCA4NjcxNSwgODY3MjIsIDg2NzI5LCA4NjczNSwgODY3NDIsIDg2NzQ5LCA4Njc1NiwgCisgICAgODY3NjMsIDAsIDg2NzcwLCA4Njc3NywgMCwgODY3ODQsIDg2NzkxLCA4Njc5OCwgODY4MDUsIDg2ODEyLCA4NjgxOSwgCisgICAgODY4MjYsIDg2ODMzLCA4Njg0MCwgODY4NDcsIDg2ODU0LCA4Njg2MSwgODY4NjgsIDg2ODc1LCA4Njg4MiwgMCwgMCwgCisgICAgODY4ODgsIDg2ODkzLCA4Njg5OCwgODY5MDMsIDg2OTA4LCA4NjkxMywgODY5MTgsIDg2OTIzLCA4NjkyOCwgODY5MzMsIAorICAgIDg2OTM4LCA4Njk0MywgODY5NDgsIDg2OTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Njk1OCwgODY5NjUsIAorICAgIDg2OTcyLCA4Njk3OSwgODY5ODYsIDg2OTkzLCA4NzAwMCwgODcwMDcsIDg3MDE0LCA4NzAyMSwgODcwMjgsIDg3MDM1LCAKKyAgICA4NzA0MiwgODcwNDksIDg3MDU2LCA4NzA2MywgODcwNzAsIDg3MDc3LCA4NzA4NCwgODcwOTEsIDg3MDk5LCA4NzEwNywgCisgICAgODcxMTQsIDg3MTIxLCA4NzEyNiwgODcxMzQsIDg3MTQyLCA4NzE0OSwgODcxNTYsIDg3MTYxLCA4NzE2OCwgODcxNzMsIAorICAgIDg3MTc4LCA4NzE4NSwgODcxOTAsIDg3MTk1LCA4NzIwMCwgODcyMDgsIDg3MjEzLCA4NzIxOCwgODcyMjUsIDg3MjMwLCAKKyAgICA4NzIzNSwgODcyNDIsIDg3MjQ5LCA4NzI1NCwgODcyNTksIDg3MjY0LCA4NzI2OSwgODcyNzQsIDg3Mjc5LCA4NzI4NCwgCisgICAgODcyODksIDg3Mjk0LCA4NzMwMSwgODczMDYsIDg3MzEzLCA4NzMxOCwgODczMjMsIDg3MzI4LCA4NzMzMywgODczMzgsIAorICAgIDg3MzQzLCA4NzM0OCwgODczNTMsIDg3MzU4LCA4NzM2MywgODczNjgsIDg3Mzc1LCA4NzM4MiwgODczODksIDg3Mzk2LCAKKyAgICA4NzQwMiwgODc0MDcsIDg3NDE0LCA4NzQxOSwgODc0MjQsIDg3NDMzLCA4NzQ0MCwgODc0NDksIDg3NDU2LCA4NzQ2MSwgCisgICAgODc0NjYsIDg3NDc0LCA4NzQ3OSwgODc0ODQsIDg3NDg5LCA4NzQ5NCwgODc0OTksIDg3NTA2LCA4NzUxMSwgODc1MTYsIAorICAgIDg3NTIxLCA4NzUyNiwgODc1MzEsIDg3NTM4LCA4NzU0NSwgODc1NTIsIDg3NTU5LCA4NzU2NiwgODc1NzMsIDg3NTgwLCAKKyAgICA4NzU4NywgODc1OTQsIDg3NjAxLCA4NzYwOCwgODc2MTUsIDg3NjIyLCA4NzYyOSwgODc2MzYsIDg3NjQzLCA4NzY1MCwgCisgICAgODc2NTcsIDg3NjY0LCA4NzY3MSwgODc2NzgsIDg3Njg1LCA4NzY5MiwgODc2OTksIDg3NzA2LCA4NzcxMywgODc3MjAsIAorICAgIDg3NzI3LCAwLCAwLCAwLCAwLCAwLCA4NzczNCwgODc3NDIsIDg3NzUwLCAwLCAwLCAwLCAwLCA4Nzc1NSwgODc3NTksIAorICAgIDg3NzYzLCA4Nzc2NywgODc3NzEsIDg3Nzc1LCA4Nzc3OSwgODc3ODMsIDg3Nzg3LCA4Nzc5MSwgODc3OTYsIDg3ODAxLCAKKyAgICA4NzgwNiwgODc4MTEsIDg3ODE2LCA4NzgyMSwgODc4MjYsIDg3ODMxLCA4NzgzNiwgODc4NDIsIDg3ODQ4LCA4Nzg1NCwgCisgICAgODc4NjEsIDg3ODY4LCA4Nzg3NSwgODc4ODIsIDg3ODg5LCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjEsIAorICAgIDg3OTI4LCA4NzkzNSwgODc5NDIsIDg3OTQ5LCA4Nzk1NiwgODc5NjMsIDg3OTcwLCA4Nzk3NywgODc5ODQsIDg3OTkxLCAKKyAgICA4Nzk5OCwgODgwMDUsIDg4MDEyLCAwLCAwLCAwLCA4ODAxOSwgODgwMjcsIDg4MDM1LCA4ODA0MywgODgwNTEsIDg4MDU5LCAKKyAgICA4ODA2OSwgODgwNzksIDg4MDg3LCA4ODA5NSwgODgxMDMsIDg4MTExLCA4ODExOSwgODgxMjUsIDg4MTMyLCA4ODE0MSwgCisgICAgODgxNTAsIDg4MTU5LCA4ODE2OCwgODgxNzcsIDg4MTg2LCA4ODE5NiwgODgyMDcsIDg4MjE3LCA4ODIyOCwgODgyMzcsIAorICAgIDg4MjQ2LCA4ODI1NSwgODgyNjUsIDg4Mjc2LCA4ODI4NiwgODgyOTcsIDg4MzA4LCA4ODMxNywgODgzMjUsIDg4MzMxLCAKKyAgICA4ODMzNywgODgzNDMsIDg4MzQ5LCA4ODM1NywgODgzNjUsIDg4MzcxLCA4ODM3OCwgODgzODgsIDg4Mzk1LCA4ODQwMiwgCisgICAgODg0MDksIDg4NDE2LCA4ODQyMywgODg0MzMsIDg4NDQwLCA4ODQ0NywgODg0NTUsIDg4NDYzLCA4ODQ3MiwgODg0ODEsIAorICAgIDg4NDkwLCA4ODQ5OSwgODg1MDgsIDg4NTE2LCA4ODUyNSwgODg1MzQsIDg4NTQzLCA4ODU0NywgODg1NTQsIDg4NTU5LCAKKyAgICA4ODU2NCwgODg1NjgsIDg4NTcyLCA4ODU3NiwgODg1ODAsIDg4NTg1LCA4ODU5MCwgODg1OTYsIDg4NjAyLCA4ODYwNiwgCisgICAgODg2MTIsIDg4NjE2LCA4ODYyMCwgODg2MjQsIDg4NjI4LCA4ODYzMiwgODg2MzYsIDg4NjQyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjczLCA4ODY3OCwgODg2ODMsIDg4Njg4LCA4ODY5MywgCisgICAgODg2OTgsIDg4NzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzM5NCwgNzczOTksIDc3NDA0LCA3NzQwOSwgNzc0MTQsIAotICAgIDc3NDE5LCA3NzQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc0MzIsIDc3NDM5LCA3NzQ0NiwgCi0gICAgNzc0NTMsIDc3NDYwLCAwLCAwLCAwLCAwLCAwLCA3NzQ2NywgNzc0NzQsIDc3NDgxLCA3NzQ5MSwgNzc0OTcsIDc3NTAzLCAKLSAgICA3NzUwOSwgNzc1MTUsIDc3NTIxLCA3NzUyNywgNzc1MzQsIDc3NTQwLCA3NzU0NiwgNzc1NTIsIDc3NTYxLCA3NzU3MCwgCi0gICAgNzc1ODIsIDc3NTk0LCA3NzYwMCwgNzc2MDYsIDc3NjEyLCA3NzYxOSwgNzc2MjYsIDc3NjMzLCA3NzY0MCwgNzc2NDcsIDAsIAotICAgIDc3NjU0LCA3NzY2MSwgNzc2NjgsIDc3Njc2LCA3NzY4MywgMCwgNzc2OTAsIDAsIDc3Njk3LCA3NzcwNCwgMCwgNzc3MTEsIAotICAgIDc3NzE5LCAwLCA3NzcyNiwgNzc3MzMsIDc3NzQwLCA3Nzc0NywgNzc3NTQsIDc3NzYxLCA3Nzc2OCwgNzc3NzUsIDc3NzgyLCAKLSAgICA3Nzc4OSwgNzc3OTQsIDc3ODAxLCA3NzgwOCwgNzc4MTQsIDc3ODIwLCA3NzgyNiwgNzc4MzIsIDc3ODM4LCA3Nzg0NCwgCi0gICAgNzc4NTAsIDc3ODU2LCA3Nzg2MiwgNzc4NjgsIDc3ODc0LCA3Nzg4MCwgNzc4ODYsIDc3ODkyLCA3Nzg5OCwgNzc5MDQsIAotICAgIDc3OTEwLCA3NzkxNiwgNzc5MjIsIDc3OTI4LCA3NzkzNCwgNzc5NDAsIDc3OTQ2LCA3Nzk1MiwgNzc5NTgsIDc3OTY0LCAKLSAgICA3Nzk3MCwgNzc5NzYsIDc3OTgyLCA3Nzk4OCwgNzc5OTQsIDc4MDAwLCA3ODAwNiwgNzgwMTIsIDc4MDE4LCA3ODAyNCwgCi0gICAgNzgwMzAsIDc4MDM2LCA3ODA0MiwgNzgwNDgsIDc4MDU0LCA3ODA2MCwgNzgwNjYsIDc4MDcyLCA3ODA3OCwgNzgwODQsIAotICAgIDc4MDkwLCA3ODA5NiwgNzgxMDIsIDc4MTA4LCA3ODExNCwgNzgxMjAsIDc4MTI2LCA3ODEzMiwgNzgxMzgsIDc4MTQ0LCAKLSAgICA3ODE1MCwgNzgxNTYsIDc4MTYyLCA3ODE2OCwgNzgxNzQsIDc4MTgwLCA3ODE4NiwgNzgxOTIsIDc4MTk4LCA3ODIwNCwgCi0gICAgNzgyMTAsIDc4MjE2LCA3ODIyMiwgNzgyMjgsIDc4MjM0LCA3ODI0MCwgNzgyNDYsIDc4MjUyLCA3ODI1OCwgNzgyNjQsIAotICAgIDc4MjcyLCA3ODI4MCwgNzgyODYsIDc4MjkyLCA3ODI5OCwgNzgzMDQsIDc4MzEzLCA3ODMyMiwgNzgzMzAsIDc4MzM4LCAKLSAgICA3ODM0NiwgNzgzNTQsIDc4MzYyLCA3ODM3MCwgNzgzNzgsIDc4Mzg2LCA3ODM5MywgNzg0MDAsIDc4NDEwLCA3ODQyMCwgCi0gICAgNzg0MjQsIDc4NDI4LCA3ODQzMywgNzg0MzgsIDc4NDQzLCA3ODQ0OCwgNzg0NTcsIDc4NDY2LCA3ODQ3MiwgNzg0NzgsIAotICAgIDc4NDg1LCA3ODQ5MiwgNzg0OTksIDc4NTAzLCA3ODUwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNzg1MTUsIDc4NTIxLCA3ODUyNywgNzg1MzMsIDc4NTM5LCA3ODU0NCwgNzg1NDksIDc4NTU1LCAKLSAgICA3ODU2MSwgNzg1NjcsIDc4NTczLCA3ODU4MSwgNzg1ODcsIDc4NTkzLCA3ODYwMSwgNzg2MDksIDc4NjE3LCA3ODYyNSwgCi0gICAgNzg2MzAsIDc4NjM1LCA3ODY0MCwgNzg2NDUsIDc4NjU3LCA3ODY2OSwgNzg2NzksIDc4Njg5LCA3ODcwMCwgNzg3MTEsIAotICAgIDc4NzIyLCA3ODczMywgNzg3NDMsIDc4NzUzLCA3ODc2NCwgNzg3NzUsIDc4Nzg2LCA3ODc5NywgNzg4MDcsIDc4ODE3LCAKLSAgICA3ODgyNywgNzg4NDIsIDc4ODU3LCA3ODg3MiwgNzg4NzksIDc4ODg2LCA3ODg5MywgNzg5MDAsIDc4OTEwLCA3ODkyMCwgCi0gICAgNzg5MzAsIDc4OTQxLCA3ODk1MSwgNzg5NTksIDc4OTY3LCA3ODk3NiwgNzg5ODQsIDc4OTkzLCA3OTAwMSwgNzkwMDksIAotICAgIDc5MDE3LCA3OTAyNiwgNzkwMzQsIDc5MDQzLCA3OTA1MSwgNzkwNTksIDc5MDY3LCA3OTA3NiwgNzkwODQsIDc5MDkxLCAKLSAgICA3OTA5OCwgNzkxMDUsIDc5MTEyLCA3OTEyMCwgNzkxMjgsIDc5MTM2LCA3OTE0NCwgNzkxNTIsIDc5MTYxLCA3OTE2OSwgCi0gICAgNzkxNzcsIDc5MTg1LCA3OTE5MywgNzkyMDEsIDc5MjEwLCA3OTIxOCwgNzkyMjYsIDc5MjM0LCA3OTI0MiwgNzkyNTAsIAotICAgIDc5MjU4LCA3OTI2NiwgNzkyNzQsIDc5MjgyLCA3OTI5MCwgNzkyOTksIDc5MzA3LCA3OTMxNiwgNzkzMjQsIDc5MzMyLCAKLSAgICA3OTM0MCwgNzkzNDksIDc5MzU3LCA3OTM2NSwgNzkzNzMsIDc5MzgxLCA3OTM5MCwgNzkzOTksIDc5NDA3LCA3OTQxNiwgCi0gICAgNzk0MjQsIDc5NDMyLCA3OTQ0MCwgNzk0NDksIDc5NDU3LCA3OTQ2NiwgNzk0NzQsIDc5NDgxLCA3OTQ4OCwgNzk0OTYsIAotICAgIDc5NTAzLCA3OTUxMSwgNzk1MTgsIDc5NTI2LCA3OTUzNCwgNzk1NDMsIDc5NTUxLCA3OTU2MCwgNzk1NjgsIDc5NTc2LCAKLSAgICA3OTU4NCwgNzk1OTMsIDc5NjAxLCA3OTYwOCwgNzk2MTUsIDc5NjIzLCA3OTYzMCwgNzk2MzgsIDc5NjQ1LCA3OTY1NSwgCi0gICAgNzk2NjUsIDc5Njc1LCA3OTY4NCwgNzk2OTMsIDc5NzAyLCA3OTcxMSwgNzk3MjAsIDc5NzMwLCA3OTc0MSwgNzk3NTIsIAotICAgIDc5NzYyLCA3OTc3MywgNzk3ODQsIDc5Nzk0LCA3OTgwMywgNzk4MTIsIDc5ODIwLCA3OTgyOSwgNzk4MzgsIDc5ODQ2LCAKLSAgICA3OTg1NSwgNzk4NjQsIDc5ODcyLCA3OTg4MSwgNzk4OTAsIDc5ODk4LCA3OTkwNywgNzk5MTYsIDc5OTI0LCA3OTkzMywgCi0gICAgNzk5NDIsIDc5OTUwLCA3OTk1OSwgNzk5NjcsIDc5OTc2LCA3OTk4NCwgNzk5OTIsIDgwMDAxLCA4MDAwOSwgODAwMTgsIAotICAgIDgwMDI2LCA4MDAzNCwgODAwNDMsIDgwMDUxLCA4MDA1OCwgODAwNjUsIDgwMDc0LCA4MDA4MywgODAwOTEsIDgwMTAwLCAKLSAgICA4MDEwOSwgODAxMTcsIDgwMTI3LCA4MDEzNSwgODAxNDMsIDgwMTUwLCA4MDE1OCwgODAxNjYsIDgwMTczLCA4MDE4MywgCi0gICAgODAxOTMsIDgwMjA0LCA4MDIxNCwgODAyMjUsIDgwMjMzLCA4MDI0MSwgODAyNTAsIDgwMjU4LCA4MDI2NywgODAyNzUsIAotICAgIDgwMjgzLCA4MDI5MiwgODAzMDAsIDgwMzA5LCA4MDMxNywgODAzMjQsIDgwMzMxLCA4MDMzOCwgODAzNDUsIDgwMzUzLCAKLSAgICA4MDM2MSwgODAzNjksIDgwMzc3LCA4MDM4NiwgODAzOTQsIDgwNDAyLCA4MDQxMSwgODA0MTksIDgwNDI3LCA4MDQzNSwgCi0gICAgODA0NDQsIDgwNDUyLCA4MDQ2MCwgODA0NjgsIDgwNDc2LCA4MDQ4NCwgODA0OTIsIDgwNTAwLCA4MDUwOCwgODA1MTYsIAotICAgIDgwNTI1LCA4MDUzMywgODA1NDEsIDgwNTQ5LCA4MDU1NywgODA1NjUsIDgwNTc0LCA4MDU4MywgODA1OTEsIDgwNTk5LCAKLSAgICA4MDYwNywgODA2MTYsIDgwNjI0LCA4MDYzMywgODA2NDAsIDgwNjQ3LCA4MDY1NSwgODA2NjIsIDgwNjcwLCA4MDY3OCwgCi0gICAgODA2ODcsIDgwNjk1LCA4MDcwNCwgODA3MTIsIDgwNzIwLCA4MDczMCwgODA3MzcsIDgwNzQ0LCA4MDc1MiwgODA3NTksIAotICAgIDgwNzY3LCA4MDc3NywgODA3ODgsIDgwNzk2LCA4MDgwNSwgODA4MTMsIDgwODIyLCA4MDgzMCwgODA4MzksIDgwODQ3LCAKLSAgICA4MDg1NiwgODA4NjQsIDgwODczLCA4MDg4MiwgODA4OTAsIDgwODk4LCA4MDkwNiwgODA5MTUsIDgwOTIyLCA4MDkzMCwgCi0gICAgODA5MzksIDgwOTQ4LCA4MDk1NywgODA5NjYsIDgwOTc0LCA4MDk4MywgODA5OTEsIDgxMDAwLCA4MTAwOCwgODEwMTcsIAotICAgIDgxMDI1LCA4MTAzNCwgODEwNDIsIDgxMDUwLCA4MTA1NywgODEwNjUsIDgxMDcyLCA4MTA4MSwgODEwODksIDgxMDk4LCAKLSAgICA4MTEwNiwgODExMTUsIDgxMTIzLCA4MTEzMSwgODExMzksIDgxMTQ4LCA4MTE1NiwgODExNjUsIDgxMTc0LCA4MTE4MywgCi0gICAgODExOTIsIDgxMjAxLCA4MTIwOSwgODEyMTgsIDgxMjI2LCA4MTIzNSwgODEyNDMsIDgxMjUyLCA4MTI2MCwgODEyNjksIAotICAgIDgxMjc3LCA4MTI4NSwgODEyOTIsIDgxMzAwLCA4MTMwNywgODEzMTYsIDgxMzI0LCA4MTMzMywgODEzNDEsIDgxMzUwLCAKLSAgICA4MTM1OCwgODEzNjYsIDgxMzc0LCA4MTM4MywgODEzOTEsIDgxNDAwLCA4MTQwOSwgODE0MTgsIDgxNDI3LCA4MTQzNSwgCi0gICAgODE0NDMsIDgxNDUyLCA4MTQ2MCwgODE0NjksIDgxNDc4LCA4MTQ4NiwgODE0OTQsIDgxNTAyLCA4MTUxMSwgODE1MTksIAotICAgIDgxNTI3LCA4MTUzNiwgODE1NDQsIDgxNTUyLCA4MTU2MCwgODE1NjgsIDgxNTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTU3OCwgODE1ODgsIDgxNTk4LCA4MTYwOCwgODE2MTgsIDgxNjI5LCA4MTYzOSwgCi0gICAgODE2NDksIDgxNjYwLCA4MTY2OSwgODE2NzgsIDgxNjg3LCA4MTY5NywgODE3MDcsIDgxNzE3LCA4MTcyOCwgODE3MzgsIAotICAgIDgxNzQ4LCA4MTc1OCwgODE3NjgsIDgxNzc4LCA4MTc4OCwgODE3OTgsIDgxODA4LCA4MTgxOCwgODE4MjgsIDgxODM4LCAKLSAgICA4MTg0OSwgODE4NjAsIDgxODcwLCA4MTg4MCwgODE4OTEsIDgxOTAyLCA4MTkxMywgODE5MjMsIDgxOTMzLCA4MTk0MywgCi0gICAgODE5NTMsIDgxOTYzLCA4MTk3MywgODE5ODMsIDgxOTk0LCA4MjAwNCwgODIwMTQsIDgyMDI1LCA4MjAzNiwgODIwNDcsIAotICAgIDgyMDU3LCA4MjA2NywgODIwNzcsIDgyMDg3LCA4MjA5OCwgODIxMDgsIDgyMTE4LCA4MjEyOSwgODIxNDAsIDgyMTUwLCAKLSAgICA4MjE2MCwgODIxNjksIDgyMTc4LCA4MjE4NywgODIxOTYsIDgyMjA1LCA4MjIxNSwgMCwgMCwgODIyMjUsIDgyMjM1LCAKLSAgICA4MjI0NSwgODIyNTUsIDgyMjY1LCA4MjI3NiwgODIyODYsIDgyMjk2LCA4MjMwNywgODIzMTcsIDgyMzI4LCA4MjMzNywgCi0gICAgODIzNDYsIDgyMzU3LCA4MjM2NywgODIzNzgsIDgyMzg5LCA4MjQwMSwgODI0MTEsIDgyNDIyLCA4MjQzMSwgODI0NDEsIAotICAgIDgyNDUxLCA4MjQ2MywgODI0NzMsIDgyNDgzLCA4MjQ5MywgODI1MDMsIDgyNTEzLCA4MjUyMiwgODI1MzEsIDgyNTQwLCAKLSAgICA4MjU0OSwgODI1NTksIDgyNTY5LCA4MjU3OSwgODI1ODksIDgyNTk5LCA4MjYwOSwgODI2MTksIDgyNjI5LCA4MjYzOSwgCi0gICAgODI2NDksIDgyNjU5LCA4MjY2OSwgODI2NzgsIDgyNjg3LCA4MjY5NiwgODI3MDYsIDgyNzE2LCA4MjcyNiwgODI3MzYsIAotICAgIDgyNzQ2LCA4Mjc1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI3NjcsIDgyNzgyLCAKLSAgICA4Mjc5NywgODI4MDMsIDgyODA5LCA4MjgxNSwgODI4MjEsIDgyODI3LCA4MjgzMywgODI4MzksIDgyODQ1LCA4Mjg1MywgCi0gICAgODI4NTcsIDgyODYwLCAwLCAwLCA4Mjg2OCwgODI4NzEsIDgyODc0LCA4Mjg3NywgODI4ODAsIDgyODgzLCA4Mjg4NiwgCi0gICAgODI4ODksIDgyODkyLCA4Mjg5NSwgODI4OTgsIDgyOTAxLCA4MjkwNCwgODI5MDcsIDgyOTEwLCA4MjkxMywgODI5MTYsIAotICAgIDgyOTI0LCA4MjkzMywgODI5NDQsIDgyOTUyLCA4Mjk2MCwgODI5NjksIDgyOTc4LCA4Mjk4OSwgODMwMDEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDgzMDEwLCA4MzAxNSwgODMwMjAsIDgzMDI3LCA4MzAzNCwgODMwNDAsIDgzMDQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4MzA1MSwgODMwNjEsIDgzMDcxLCA4MzA4MSwgODMwOTAsIDgzMTAxLCA4MzExMCwgODMxMTksIAotICAgIDgzMTI5LCA4MzEzOSwgODMxNTEsIDgzMTYzLCA4MzE3NCwgODMxODUsIDgzMTk2LCA4MzIwNywgODMyMTcsIDgzMjI3LCAKLSAgICA4MzIzNywgODMyNDcsIDgzMjU4LCA4MzI2OSwgODMyNzMsIDgzMjc4LCA4MzI4NywgODMyOTYsIDgzMzAwLCA4MzMwNCwgCi0gICAgODMzMDgsIDgzMzEzLCA4MzMxOCwgODMzMjMsIDgzMzI4LCA4MzMzMSwgODMzMzUsIDAsIDgzMzQwLCA4MzM0MywgODMzNDYsIAotICAgIDgzMzUwLCA4MzM1NCwgODMzNTksIDgzMzYzLCA4MzM2NywgODMzNzIsIDgzMzc3LCA4MzM4NCwgODMzOTEsIDgzMzk0LCAKLSAgICA4MzM5NywgODM0MDAsIDgzNDAzLCA4MzQwNiwgODM0MTAsIDgzNDE0LCAwLCA4MzQxOCwgODM0MjMsIDgzNDI3LCA4MzQzMSwgCi0gICAgMCwgMCwgMCwgMCwgODM0MzYsIDgzNDQxLCA4MzQ0OCwgODM0NTMsIDgzNDU4LCAwLCA4MzQ2MywgODM0NjgsIDgzNDczLCAKLSAgICA4MzQ3OCwgODM0ODMsIDgzNDg4LCA4MzQ5MywgODM0OTgsIDgzNTAzLCA4MzUwOCwgODM1MTMsIDgzNTE4LCA4MzUyNywgCi0gICAgODM1MzYsIDgzNTQ0LCA4MzU1MiwgODM1NjEsIDgzNTcwLCA4MzU3OSwgODM1ODgsIDgzNTk2LCA4MzYwNCwgODM2MTIsIAotICAgIDgzNjIwLCA4MzYyNSwgODM2MzAsIDgzNjM2LCA4MzY0MiwgODM2NDgsIDgzNjU0LCA4MzY2MiwgODM2NzAsIDgzNjc2LCAKLSAgICA4MzY4MiwgODM2ODgsIDgzNjk0LCA4MzcwMCwgODM3MDYsIDgzNzEyLCA4MzcxOCwgODM3MjMsIDgzNzI4LCA4MzczMywgCi0gICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTMsIDgzNzU4LCA4Mzc2NCwgODM3NzAsIDgzNzc2LCA4Mzc4MiwgODM3ODgsIAotICAgIDgzNzk0LCA4MzgwMCwgODM4MDYsIDgzODEyLCA4MzgxOCwgODM4MjQsIDgzODMwLCA4MzgzNiwgODM4NDIsIDgzODQ4LCAKLSAgICA4Mzg1NCwgODM4NjAsIDgzODY2LCA4Mzg3MiwgODM4NzgsIDgzODg0LCA4Mzg5MCwgODM4OTYsIDgzOTAyLCA4MzkwOCwgCi0gICAgODM5MTQsIDgzOTIwLCA4MzkyNiwgODM5MzIsIDgzOTM4LCA4Mzk0NCwgODM5NTAsIDgzOTU2LCA4Mzk2MiwgODM5NjgsIAotICAgIDgzOTc0LCA4Mzk4MCwgODM5ODYsIDgzOTkyLCA4Mzk5OCwgODQwMDQsIDg0MDEwLCA4NDAxNiwgODQwMjIsIDg0MDI4LCAKLSAgICA4NDAzNCwgODQwNDAsIDg0MDQ2LCA4NDA1MiwgODQwNTgsIDg0MDY0LCA4NDA3MCwgODQwNzYsIDg0MDgyLCA4NDA4OCwgCi0gICAgODQwOTQsIDg0MTAwLCA4NDEwNiwgODQxMTIsIDg0MTE4LCA4NDEyMywgODQxMjgsIDg0MTMzLCA4NDEzOCwgODQxNDQsIAotICAgIDg0MTUwLCA4NDE1NiwgODQxNjIsIDg0MTY4LCA4NDE3NCwgODQxODAsIDg0MTg2LCA4NDE5MiwgODQxOTgsIDg0MjA0LCAKLSAgICA4NDIxMCwgODQyMTUsIDg0MjIwLCA4NDIyNSwgODQyMzAsIDg0MjQyLCA4NDI1NCwgODQyNjUsIDg0Mjc2LCA4NDI4OCwgCi0gICAgODQzMDAsIDg0MzA4LCAwLCAwLCA4NDMxNiwgMCwgODQzMjQsIDg0MzI4LCA4NDMzMiwgODQzMzUsIDg0MzM5LCA4NDM0MywgCi0gICAgODQzNDYsIDg0MzQ5LCA4NDM1MywgODQzNTcsIDg0MzYwLCA4NDM2MywgODQzNjYsIDg0MzY5LCA4NDM3NCwgODQzNzcsIAotICAgIDg0MzgxLCA4NDM4NCwgODQzODcsIDg0MzkwLCA4NDM5MywgODQzOTYsIDg0Mzk5LCA4NDQwMiwgODQ0MDUsIDg0NDA4LCAKLSAgICA4NDQxMSwgODQ0MTQsIDg0NDE4LCA4NDQyMiwgODQ0MjYsIDg0NDMwLCA4NDQzNSwgODQ0NDAsIDg0NDQ2LCA4NDQ1MiwgCi0gICAgODQ0NTgsIDg0NDYzLCA4NDQ2OSwgODQ0NzUsIDg0NDgxLCA4NDQ4NiwgODQ0OTIsIDg0NDk4LCA4NDUwMywgODQ1MDgsIAotICAgIDg0NTEzLCA4NDUxOCwgODQ1MjQsIDg0NTMwLCA4NDUzNSwgODQ1NDAsIDg0NTQ2LCA4NDU1MSwgODQ1NTcsIDg0NTYzLCAKLSAgICA4NDU2OSwgODQ1NzUsIDg0NTgxLCA4NDU4NSwgODQ1OTAsIDg0NTk0LCA4NDU5OSwgODQ2MDMsIDg0NjA4LCA4NDYxMywgCi0gICAgODQ2MTksIDg0NjI1LCA4NDYzMSwgODQ2MzYsIDg0NjQyLCA4NDY0OCwgODQ2NTQsIDg0NjU5LCA4NDY2NSwgODQ2NzEsIAotICAgIDg0Njc2LCA4NDY4MSwgODQ2ODYsIDg0NjkxLCA4NDY5NywgODQ3MDMsIDg0NzA4LCA4NDcxMywgODQ3MTksIDg0NzI0LCAKLSAgICA4NDczMCwgODQ3MzYsIDg0NzQyLCA4NDc0OCwgODQ3NTQsIDg0NzU5LCA4NDc2MywgODQ3NjgsIDg0NzcxLCA4NDc3NiwgCi0gICAgODQ3ODEsIDg0Nzg3LCA4NDc5MiwgODQ3OTcsIDg0ODAxLCA4NDgwNywgODQ4MTIsIDg0ODE3LCA4NDgyMiwgODQ4MjcsIAotICAgIDg0ODMyLCA4NDgzNywgODQ4NDIsIDg0ODQ4LCA4NDg1NCwgODQ4NjAsIDg0ODY4LCA4NDg3MiwgODQ4NzYsIDg0ODgwLCAKLSAgICA4NDg4NCwgODQ4ODgsIDg0ODkyLCA4NDg5NywgODQ5MDIsIDg0OTA3LCA4NDkxMiwgODQ5MTcsIDg0OTIyLCA4NDkyNywgCi0gICAgODQ5MzIsIDg0OTM3LCA4NDk0MiwgODQ5NDcsIDg0OTUyLCA4NDk1NywgODQ5NjEsIDg0OTY1LCA4NDk3MCwgODQ5NzUsIAotICAgIDg0OTgwLCA4NDk4NSwgODQ5ODksIDg0OTk0LCA4NDk5OSwgODUwMDQsIDg1MDA5LCA4NTAxMywgODUwMTgsIDg1MDIzLCAKLSAgICA4NTAyOCwgODUwMzMsIDg1MDM3LCA4NTA0MiwgODUwNDcsIDg1MDUxLCA4NTA1NiwgODUwNjEsIDg1MDY2LCA4NTA3MSwgCi0gICAgODUwNzYsIDg1MDgwLCA4NTA4NywgODUwOTQsIDg1MDk4LCA4NTEwMywgODUxMDgsIDg1MTEzLCA4NTExOCwgODUxMjMsIAotICAgIDg1MTI4LCA4NTEzMywgODUxMzgsIDg1MTQzLCA4NTE0OCwgODUxNTMsIDg1MTU4LCA4NTE2MywgODUxNjgsIDg1MTczLCAKLSAgICA4NTE3OCwgODUxODMsIDg1MTg4LCA4NTE5MywgODUxOTgsIDg1MjAzLCA4NTIwOCwgODUyMTMsIDg1MjE4LCA4NTIyMywgCi0gICAgODUyMjgsIDg1MjMzLCA4NTIzOCwgODUyNDMsIDAsIDAsIDAsIDg1MjQ4LCA4NTI1MiwgODUyNTcsIDg1MjYxLCA4NTI2NiwgCi0gICAgODUyNzEsIDAsIDAsIDg1Mjc1LCA4NTI4MCwgODUyODUsIDg1Mjg5LCA4NTI5NCwgODUyOTksIDAsIDAsIDg1MzA0LCAKLSAgICA4NTMwOSwgODUzMTMsIDg1MzE4LCA4NTMyMywgODUzMjgsIDAsIDAsIDg1MzMzLCA4NTMzOCwgODUzNDMsIDAsIDAsIDAsIAotICAgIDg1MzQ3LCA4NTM1MSwgODUzNTUsIDg1MzU5LCA4NTM2MiwgODUzNjYsIDg1MzcwLCAwLCA4NTM3NCwgODUzODAsIDg1MzgzLCAKLSAgICA4NTM4NywgODUzOTAsIDg1Mzk0LCA4NTM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODU0MDIsIDg1NDA4LCAKLSAgICA4NTQxNCwgODU0MjAsIDg1NDI2LCAwLCAwLCA4NTQzMCwgODU0MzYsIDg1NDQyLCA4NTQ0OCwgODU0NTQsIDg1NDYwLCAKLSAgICA4NTQ2NywgODU0NzQsIDg1NDgxLCA4NTQ4OCwgODU0OTUsIDg1NTAyLCAwLCA4NTUwOSwgODU1MTYsIDg1NTIzLCA4NTUyOSwgCi0gICAgODU1MzYsIDg1NTQzLCA4NTU1MCwgODU1NTcsIDg1NTYzLCA4NTU3MCwgODU1NzcsIDg1NTg0LCA4NTU5MSwgODU1OTcsIAotICAgIDg1NjA0LCA4NTYxMSwgODU2MTgsIDg1NjI1LCA4NTYzMSwgODU2MzgsIDg1NjQ1LCA4NTY1MiwgODU2NTksIDg1NjY2LCAKLSAgICA4NTY3MywgODU2ODAsIDAsIDg1Njg3LCA4NTY5MywgODU3MDAsIDg1NzA3LCA4NTcxNCwgODU3MjEsIDg1NzI4LCA4NTczNSwgCi0gICAgODU3NDIsIDg1NzQ5LCA4NTc1NiwgODU3NjMsIDg1NzcwLCA4NTc3NywgODU3ODMsIDg1NzkwLCA4NTc5NywgODU4MDQsIAotICAgIDg1ODExLCAwLCA4NTgxOCwgODU4MjUsIDAsIDg1ODMyLCA4NTgzOSwgODU4NDYsIDg1ODUzLCA4NTg2MCwgODU4NjcsIAotICAgIDg1ODc0LCA4NTg4MSwgODU4ODgsIDg1ODk1LCA4NTkwMiwgODU5MDksIDg1OTE2LCA4NTkyMywgODU5MzAsIDAsIDAsIAotICAgIDg1OTM2LCA4NTk0MSwgODU5NDYsIDg1OTUxLCA4NTk1NiwgODU5NjEsIDg1OTY2LCA4NTk3MSwgODU5NzYsIDg1OTgxLCAKLSAgICA4NTk4NiwgODU5OTEsIDg1OTk2LCA4NjAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYwMDYsIDg2MDEzLCAKLSAgICA4NjAyMCwgODYwMjcsIDg2MDM0LCA4NjA0MSwgODYwNDgsIDg2MDU1LCA4NjA2MiwgODYwNjksIDg2MDc2LCA4NjA4MywgCi0gICAgODYwOTAsIDg2MDk3LCA4NjEwNCwgODYxMTEsIDg2MTE4LCA4NjEyNSwgODYxMzIsIDg2MTM5LCA4NjE0NywgODYxNTUsIAotICAgIDg2MTYyLCA4NjE2OSwgODYxNzQsIDg2MTgyLCA4NjE5MCwgODYxOTcsIDg2MjA0LCA4NjIwOSwgODYyMTYsIDg2MjIxLCAKLSAgICA4NjIyNiwgODYyMzMsIDg2MjM4LCA4NjI0MywgODYyNDgsIDg2MjU2LCA4NjI2MSwgODYyNjYsIDg2MjczLCA4NjI3OCwgCi0gICAgODYyODMsIDg2MjkwLCA4NjI5NywgODYzMDIsIDg2MzA3LCA4NjMxMiwgODYzMTcsIDg2MzIyLCA4NjMyNywgODYzMzIsIAotICAgIDg2MzM3LCA4NjM0MiwgODYzNDksIDg2MzU0LCA4NjM2MSwgODYzNjYsIDg2MzcxLCA4NjM3NiwgODYzODEsIDg2Mzg2LCAKLSAgICA4NjM5MSwgODYzOTYsIDg2NDAxLCA4NjQwNiwgODY0MTEsIDg2NDE2LCA4NjQyMywgODY0MzAsIDg2NDM3LCA4NjQ0NCwgCi0gICAgODY0NTAsIDg2NDU1LCA4NjQ2MiwgODY0NjcsIDg2NDcyLCA4NjQ4MSwgODY0ODgsIDg2NDk3LCA4NjUwNCwgODY1MDksIAotICAgIDg2NTE0LCA4NjUyMiwgODY1MjcsIDg2NTMyLCA4NjUzNywgODY1NDIsIDg2NTQ3LCA4NjU1NCwgODY1NTksIDg2NTY0LCAKLSAgICA4NjU2OSwgODY1NzQsIDg2NTc5LCA4NjU4NiwgODY1OTMsIDg2NjAwLCA4NjYwNywgODY2MTQsIDg2NjIxLCA4NjYyOCwgCi0gICAgODY2MzUsIDg2NjQyLCA4NjY0OSwgODY2NTYsIDg2NjYzLCA4NjY3MCwgODY2NzcsIDg2Njg0LCA4NjY5MSwgODY2OTgsIAotICAgIDg2NzA1LCA4NjcxMiwgODY3MTksIDg2NzI2LCA4NjczMywgODY3NDAsIDg2NzQ3LCA4Njc1NCwgODY3NjEsIDg2NzY4LCAKLSAgICA4Njc3NSwgMCwgMCwgMCwgMCwgMCwgODY3ODIsIDg2NzkwLCA4Njc5OCwgMCwgMCwgMCwgMCwgODY4MDMsIDg2ODA3LCAKLSAgICA4NjgxMSwgODY4MTUsIDg2ODE5LCA4NjgyMywgODY4MjcsIDg2ODMxLCA4NjgzNSwgODY4MzksIDg2ODQ0LCA4Njg0OSwgCi0gICAgODY4NTQsIDg2ODU5LCA4Njg2NCwgODY4NjksIDg2ODc0LCA4Njg3OSwgODY4ODQsIDg2ODkwLCA4Njg5NiwgODY5MDIsIAotICAgIDg2OTA5LCA4NjkxNiwgODY5MjMsIDg2OTMwLCA4NjkzNywgODY5NDQsIDg2OTUwLCA4Njk1NiwgODY5NjIsIDg2OTY5LCAKLSAgICA4Njk3NiwgODY5ODMsIDg2OTkwLCA4Njk5NywgODcwMDQsIDg3MDExLCA4NzAxOCwgODcwMjUsIDg3MDMyLCA4NzAzOSwgCi0gICAgODcwNDYsIDg3MDUzLCA4NzA2MCwgMCwgMCwgMCwgODcwNjcsIDg3MDc1LCA4NzA4MywgODcwOTEsIDg3MDk5LCA4NzEwNywgCi0gICAgODcxMTcsIDg3MTI3LCA4NzEzNSwgODcxNDMsIDg3MTUxLCA4NzE1OSwgODcxNjcsIDg3MTczLCA4NzE4MCwgODcxODksIAotICAgIDg3MTk4LCA4NzIwNywgODcyMTYsIDg3MjI1LCA4NzIzNCwgODcyNDQsIDg3MjU1LCA4NzI2NSwgODcyNzYsIDg3Mjg1LCAKLSAgICA4NzI5NCwgODczMDMsIDg3MzEzLCA4NzMyNCwgODczMzQsIDg3MzQ1LCA4NzM1NiwgODczNjUsIDg3MzczLCA4NzM3OSwgCi0gICAgODczODUsIDg3MzkxLCA4NzM5NywgODc0MDUsIDg3NDEzLCA4NzQxOSwgODc0MjYsIDg3NDM2LCA4NzQ0MywgODc0NTAsIAotICAgIDg3NDU3LCA4NzQ2NCwgODc0NzEsIDg3NDgxLCA4NzQ4OCwgODc0OTUsIDg3NTAzLCA4NzUxMSwgODc1MjAsIDg3NTI5LCAKLSAgICA4NzUzOCwgODc1NDcsIDg3NTU2LCA4NzU2NCwgODc1NzMsIDg3NTgyLCA4NzU5MSwgODc1OTUsIDg3NjAyLCA4NzYwNywgCi0gICAgODc2MTIsIDg3NjE2LCA4NzYyMCwgODc2MjQsIDg3NjI4LCA4NzYzMywgODc2MzgsIDg3NjQ0LCA4NzY1MCwgODc2NTQsIAotICAgIDg3NjYwLCA4NzY2NCwgODc2NjgsIDg3NjcyLCA4NzY3NiwgODc2ODAsIDg3Njg0LCA4NzY5MCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODc2OTQsIDg3Njk5LCA4NzcwNCwgODc3MDksIDg3NzE0LCA4NzcyMSwgODc3MjYsIDg3NzMxLCA4NzczNiwgODc3NDEsIAotICAgIDg3NzQ2LCA4Nzc1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3MDgsIDg4NzE1LCA4ODcyNCwgODg3MzMsIDg4NzQwLCA4ODc0NywgODg3NTQsIAorICAgIDg4NzYxLCA4ODc2OCwgODg3NzUsIDg4NzgxLCA4ODc4OCwgODg3OTUsIDg4ODAyLCA4ODgwOSwgODg4MTYsIDg4ODIzLCAKKyAgICA4ODgzMCwgODg4MzcsIDg4ODQ2LCA4ODg1MywgODg4NjAsIDg4ODY3LCA4ODg3NCwgODg4ODEsIDg4ODg4LCA4ODg5NSwgCisgICAgODg5MDIsIDg4OTExLCA4ODkxOCwgODg5MjUsIDg4OTMyLCA4ODkzOSwgODg5NDYsIDg4OTUzLCA4ODk2MiwgODg5NjksIAorICAgIDg4OTc2LCA4ODk4MywgODg5OTAsIDg4OTk5LCA4OTAwNiwgODkwMTMsIDg5MDIwLCA4OTAyOCwgODkwMzcsIDAsIDAsIAorICAgIDg5MDQ2LCA4OTA1MCwgODkwNTQsIDg5MDU5LCA4OTA2NCwgODkwNjksIDg5MDc0LCA4OTA3OCwgODkwODMsIDg5MDg4LCAKKyAgICA4OTA5MywgODkwOTgsIDg5MTAzLCA4OTEwOCwgODkxMTIsIDg5MTE2LCA4OTEyMSwgODkxMjYsIDg5MTMxLCA4OTEzNSwgCisgICAgODkxNDAsIDg5MTQ1LCA4OTE0OSwgODkxNTQsIDg5MTU5LCA4OTE2NCwgODkxNjksIDg5MTc0LCA4OTE3OSwgMCwgMCwgMCwgCisgICAgODkxODQsIDg5MTg4LCA4OTE5MywgODkxOTgsIDg5MjAyLCA4OTIwNywgODkyMTEsIDg5MjE2LCA4OTIyMSwgODkyMjYsIAorICAgIDg5MjMxLCA4OTIzNSwgODkyMzksIDg5MjQ0LCA4OTI0OSwgODkyNTQsIDg5MjU5LCA4OTI2NCwgODkyNjksIDg5MjczLCAKKyAgICA4OTI3OCwgODkyODMsIDg5Mjg4LCA4OTI5MywgODkyOTgsIDg5MzAzLCA4OTMwNywgODkzMTEsIDg5MzE2LCA4OTMyMSwgCisgICAgODkzMjYsIDg5MzMxLCA4OTMzNiwgODkzNDEsIDg5MzQ2LCA4OTM1MSwgODkzNTYsIDg5MzYxLCA4OTM2NiwgODkzNzEsIAorICAgIDg5Mzc2LCA4OTM4MSwgODkzODYsIDg5MzkxLCA4OTM5NiwgODk0MDEsIDg5NDA2LCA4OTQxMSwgODk0MTYsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NzU2LCA4Nzc2MywgODc3NzIsIDg3NzgxLCA4Nzc4OCwgODc3OTUsIDg3ODAyLCAKLSAgICA4NzgwOSwgODc4MTYsIDg3ODIzLCA4NzgyOSwgODc4MzYsIDg3ODQzLCA4Nzg1MCwgODc4NTcsIDg3ODY0LCA4Nzg3MSwgCi0gICAgODc4NzgsIDg3ODg1LCA4Nzg5NCwgODc5MDEsIDg3OTA4LCA4NzkxNSwgODc5MjIsIDg3OTI5LCA4NzkzNiwgODc5NDMsIAotICAgIDg3OTUwLCA4Nzk1OSwgODc5NjYsIDg3OTczLCA4Nzk4MCwgODc5ODcsIDg3OTk0LCA4ODAwMSwgODgwMTAsIDg4MDE3LCAKLSAgICA4ODAyNCwgODgwMzEsIDg4MDM4LCA4ODA0NywgODgwNTQsIDg4MDYxLCA4ODA2OCwgODgwNzYsIDg4MDg1LCAwLCAwLCAKLSAgICA4ODA5NCwgODgwOTgsIDg4MTAyLCA4ODEwNywgODgxMTIsIDg4MTE3LCA4ODEyMiwgODgxMjYsIDg4MTMxLCA4ODEzNiwgCi0gICAgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYwLCA4ODE2NCwgODgxNjgsIDg4MTczLCA4ODE3OCwgODgxODIsIAotICAgIDg4MTg3LCA4ODE5MiwgODgxOTYsIDg4MjAwLCA4ODIwNSwgODgyMTAsIDg4MjE1LCA4ODIyMCwgODgyMjUsIDAsIDAsIDAsIAotICAgIDg4MjMwLCA4ODIzNCwgODgyMzksIDg4MjQ0LCA4ODI0OCwgODgyNTMsIDg4MjU3LCA4ODI2MiwgODgyNjcsIDg4MjcyLCAKLSAgICA4ODI3NywgODgyODEsIDg4Mjg1LCA4ODI5MCwgODgyOTUsIDg4MzAwLCA4ODMwNSwgODgzMDksIDg4MzE0LCA4ODMxOCwgCi0gICAgODgzMjMsIDg4MzI4LCA4ODMzMiwgODgzMzcsIDg4MzQyLCA4ODM0NywgODgzNTEsIDg4MzU1LCA4ODM2MCwgODgzNjUsIAotICAgIDg4MzcwLCA4ODM3NSwgODgzODAsIDg4Mzg1LCA4ODM5MCwgODgzOTUsIDg4NDAwLCA4ODQwNSwgODg0MTAsIDg4NDE1LCAKLSAgICA4ODQyMCwgODg0MjUsIDg4NDMwLCA4ODQzNSwgODg0NDAsIDg4NDQ1LCA4ODQ1MCwgODg0NTUsIDg4NDYwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTQyMSwgODk0MjUsIAorICAgIDg5NDMwLCA4OTQzNSwgODk0NDAsIDg5NDQ0LCA4OTQ0OSwgODk0NTQsIDg5NDU5LCA4OTQ2NCwgODk0NjgsIDg5NDcyLCAKKyAgICA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgODk0OTYsIDg5NTAxLCA4OTUwNiwgODk1MTEsIDg5NTE2LCA4OTUyMSwgCisgICAgODk1MjYsIDg5NTMwLCA4OTUzNSwgODk1NDAsIDg5NTQ1LCA4OTU1MCwgODk1NTUsIDg5NTYwLCA4OTU2NSwgMCwgODk1NzAsIAorICAgIDg5NTc1LCA4OTU4MCwgODk1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NTkyLCA4OTU5NywgCisgICAgODk2MDIsIDg5NjA3LCA4OTYxMiwgODk2MTcsIDg5NjIyLCA4OTYyNywgODk2MzIsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAorICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY3LCA4OTY3MiwgODk2NzcsIDg5NjgyLCA4OTY4NywgODk2OTIsIDg5Njk3LCAKKyAgICA4OTcwMiwgODk3MDcsIDg5NzEyLCA4OTcxNywgODk3MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NDY1LCA4ODQ2OSwgCi0gICAgODg0NzQsIDg4NDc5LCA4ODQ4NCwgODg0ODgsIDg4NDkzLCA4ODQ5OCwgODg1MDMsIDg4NTA4LCA4ODUxMiwgODg1MTYsIAotICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MCwgODg1NDUsIDg4NTUwLCA4ODU1NSwgODg1NjAsIDg4NTY1LCAKLSAgICA4ODU3MCwgODg1NzQsIDg4NTc5LCA4ODU4NCwgODg1ODksIDg4NTk0LCA4ODU5OSwgODg2MDQsIDg4NjA5LCAwLCA4ODYxNCwgCi0gICAgODg2MTksIDg4NjI0LCA4ODYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg2MzYsIDg4NjQxLCAKLSAgICA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgCi0gICAgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIAotICAgIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk3MjksIDg5NzM0LCA4OTczOSwgCisgICAgODk3NDQsIDg5NzQ5LCA4OTc1NCwgODk3NTksIDg5NzY0LCA4OTc2OSwgODk3NzQsIDg5Nzc5LCA4OTc4NCwgODk3ODksIAorICAgIDg5Nzk0LCA4OTc5OSwgODk4MDQsIDg5ODA5LCA4OTgxNCwgODk4MTksIDg5ODI0LCA4OTgyOSwgODk4MzQsIDg5ODM5LCAKKyAgICA4OTg0NCwgODk4NDksIDg5ODU0LCA4OTg1OSwgODk4NjMsIDg5ODY3LCA4OTg3MSwgMCwgODk4NzYsIDg5ODgyLCA4OTg4NywgCisgICAgODk4OTIsIDg5ODk3LCA4OTkwMiwgODk5MDgsIDg5OTE0LCA4OTkyMCwgODk5MjYsIDg5OTMyLCA4OTkzOCwgODk5NDQsIAorICAgIDg5OTUwLCA4OTk1NiwgODk5NjIsIDg5OTY4LCA4OTk3NCwgODk5ODAsIDg5OTg1LCA4OTk5MSwgODk5OTcsIDkwMDAyLCAKKyAgICA5MDAwOCwgOTAwMTMsIDkwMDE5LCA5MDAyNSwgOTAwMzAsIDkwMDM2LCA5MDA0MiwgOTAwNDcsIDkwMDUzLCA5MDA1OSwgCisgICAgOTAwNjQsIDkwMDcwLCA5MDA3NiwgOTAwODIsIDAsIDAsIDAsIDAsIDkwMDg3LCA5MDA5MywgOTAwOTksIDkwMTA1LCAKKyAgICA5MDExMSwgOTAxMTcsIDkwMTIzLCA5MDEyOSwgOTAxMzUsIDkwMTQyLCA5MDE0NywgOTAxNTIsIDkwMTU4LCA5MDE2NCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3NzMsIDg4Nzc4LCA4ODc4MywgCi0gICAgODg3ODgsIDg4NzkzLCA4ODc5OCwgODg4MDMsIDg4ODA4LCA4ODgxMywgODg4MTgsIDg4ODIzLCA4ODgyOCwgODg4MzMsIAotICAgIDg4ODM4LCA4ODg0MywgODg4NDgsIDg4ODUzLCA4ODg1OCwgODg4NjMsIDg4ODY4LCA4ODg3MywgODg4NzgsIDg4ODgzLCAKLSAgICA4ODg4OCwgODg4OTMsIDg4ODk4LCA4ODkwMywgODg5MDcsIDg4OTExLCA4ODkxNSwgMCwgODg5MjAsIDg4OTI2LCA4ODkzMSwgCi0gICAgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTIsIDg4OTU4LCA4ODk2NCwgODg5NzAsIDg4OTc2LCA4ODk4MiwgODg5ODgsIAotICAgIDg4OTk0LCA4OTAwMCwgODkwMDYsIDg5MDEyLCA4OTAxOCwgODkwMjQsIDg5MDI5LCA4OTAzNSwgODkwNDEsIDg5MDQ2LCAKLSAgICA4OTA1MiwgODkwNTcsIDg5MDYzLCA4OTA2OSwgODkwNzQsIDg5MDgwLCA4OTA4NiwgODkwOTEsIDg5MDk3LCA4OTEwMywgCi0gICAgODkxMDksIDg5MTE1LCA4OTEyMSwgODkxMjcsIDAsIDAsIDAsIDAsIDg5MTMyLCA4OTEzOCwgODkxNDQsIDg5MTUwLCAKLSAgICA4OTE1NiwgODkxNjIsIDg5MTY4LCA4OTE3NCwgODkxODAsIDg5MTg3LCA4OTE5MiwgODkxOTcsIDg5MjAzLCA4OTIwOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODkyMTUsIDg5MjIwLCA4OTIyNSwgCi0gICAgODkyMzAsIDg5MjM2LCA4OTI0MSwgODkyNDcsIDg5MjUzLCA4OTI1OSwgODkyNjUsIDg5MjcyLCA4OTI3OCwgODkyODUsIAotICAgIDg5MjkwLCA4OTI5NSwgODkzMDAsIDg5MzA1LCA4OTMxMCwgODkzMTUsIDg5MzIwLCA4OTMyNSwgODkzMzAsIDg5MzM1LCAKLSAgICA4OTM0MCwgODkzNDUsIDg5MzUwLCA4OTM1NSwgODkzNjAsIDg5MzY1LCA4OTM3MCwgODkzNzUsIDg5MzgwLCA4OTM4NSwgCi0gICAgODkzOTAsIDg5Mzk1LCA4OTQwMCwgODk0MDUsIDg5NDEwLCA4OTQxNSwgODk0MjAsIDg5NDI1LCA4OTQzMCwgODk0MzUsIAotICAgIDg5NDQwLCA4OTQ0NiwgODk0NTEsIDg5NDU3LCA4OTQ2MywgODk0NjksIDg5NDc1LCA4OTQ4MiwgODk0ODgsIDg5NDk1LCAKLSAgICA4OTUwMCwgODk1MDUsIDg5NTEwLCA4OTUxNSwgODk1MjAsIDg5NTI1LCA4OTUzMCwgODk1MzUsIDg5NTQwLCA4OTU0NSwgCi0gICAgODk1NTAsIDg5NTU1LCA4OTU2MCwgODk1NjUsIDg5NTcwLCA4OTU3NSwgODk1ODAsIDg5NTg1LCA4OTU5MCwgODk1OTUsIAotICAgIDg5NjAwLCA4OTYwNSwgODk2MTAsIDg5NjE1LCA4OTYyMCwgODk2MjUsIDg5NjMwLCA4OTYzNSwgODk2NDAsIDg5NjQ1LCAKLSAgICA4OTY1MCwgODk2NTUsIDg5NjYwLCA4OTY2NSwgODk2NzAsIDg5Njc1LCA4OTY4MCwgODk2ODUsIDg5NjkwLCA4OTY5NSwgCi0gICAgODk3MDAsIDg5NzA1LCA4OTcxMCwgODk3MTUsIDg5NzIwLCA4OTcyNSwgODk3MzAsIDg5NzM1LCA4OTc0MCwgODk3NDUsIAotICAgIDg5NzUwLCA4OTc1NSwgODk3NjAsIDg5NzY1LCA4OTc3MCwgODk3NzUsIDg5NzgwLCA4OTc4NSwgODk3OTAsIDg5Nzk1LCAKLSAgICA4OTgwMCwgODk4MDUsIDg5ODEwLCA4OTgxNSwgODk4MjAsIDg5ODI1LCA4OTgzMCwgODk4MzUsIDg5ODQwLCA4OTg0NSwgCi0gICAgODk4NTAsIDg5ODU1LCA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIAotICAgIDg5OTAwLCA4OTkwNSwgODk5MTAsIDg5OTE0LCA4OTkxOSwgODk5MjQsIDg5OTI5LCA4OTkzNCwgODk5MzksIDg5OTQ0LCAKLSAgICA4OTk0OSwgODk5NTQsIDg5OTU5LCA4OTk2NCwgODk5NjksIDg5OTc0LCA4OTk3OCwgODk5ODIsIDg5OTg2LCA4OTk5MCwgCi0gICAgODk5OTQsIDg5OTk4LCA5MDAwMiwgOTAwMDcsIDkwMDEyLCAwLCAwLCA5MDAxNywgOTAwMjIsIDkwMDI2LCA5MDAzMCwgCi0gICAgOTAwMzQsIDkwMDM4LCA5MDA0MiwgOTAwNDYsIDkwMDUwLCA5MDA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAxNzAsIDkwMTc1LCA5MDE4MCwgCisgICAgOTAxODUsIDkwMTkxLCA5MDE5NiwgOTAyMDIsIDkwMjA4LCA5MDIxNCwgOTAyMjAsIDkwMjI3LCA5MDIzMywgOTAyNDAsIAorICAgIDkwMjQ1LCA5MDI1MCwgOTAyNTUsIDkwMjYwLCA5MDI2NSwgOTAyNzAsIDkwMjc1LCA5MDI4MCwgOTAyODUsIDkwMjkwLCAKKyAgICA5MDI5NSwgOTAzMDAsIDkwMzA1LCA5MDMxMCwgOTAzMTUsIDkwMzIwLCA5MDMyNSwgOTAzMzAsIDkwMzM1LCA5MDM0MCwgCisgICAgOTAzNDUsIDkwMzUwLCA5MDM1NSwgOTAzNjAsIDkwMzY1LCA5MDM3MCwgOTAzNzUsIDkwMzgwLCA5MDM4NSwgOTAzOTAsIAorICAgIDkwMzk1LCA5MDQwMSwgOTA0MDYsIDkwNDEyLCA5MDQxOCwgOTA0MjQsIDkwNDMwLCA5MDQzNywgOTA0NDMsIDkwNDUwLCAKKyAgICA5MDQ1NSwgOTA0NjAsIDkwNDY1LCA5MDQ3MCwgOTA0NzUsIDkwNDgwLCA5MDQ4NSwgOTA0OTAsIDkwNDk1LCA5MDUwMCwgCisgICAgOTA1MDUsIDkwNTEwLCA5MDUxNSwgOTA1MjAsIDkwNTI1LCA5MDUzMCwgOTA1MzUsIDkwNTQwLCA5MDU0NSwgOTA1NTAsIAorICAgIDkwNTU1LCA5MDU2MCwgOTA1NjUsIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MCwgOTA1OTUsIDkwNjAwLCAKKyAgICA5MDYwNSwgOTA2MTAsIDkwNjE1LCA5MDYyMCwgOTA2MjUsIDkwNjMwLCA5MDYzNSwgOTA2NDAsIDkwNjQ1LCA5MDY1MCwgCisgICAgOTA2NTUsIDkwNjYwLCA5MDY2NSwgOTA2NzAsIDkwNjc1LCA5MDY4MCwgOTA2ODUsIDkwNjkwLCA5MDY5NSwgOTA3MDAsIAorICAgIDkwNzA1LCA5MDcxMCwgOTA3MTUsIDkwNzIwLCA5MDcyNSwgOTA3MzAsIDkwNzM1LCA5MDc0MCwgOTA3NDUsIDkwNzUwLCAKKyAgICA5MDc1NSwgOTA3NjAsIDkwNzY1LCA5MDc3MCwgOTA3NzUsIDkwNzgwLCA5MDc4NSwgOTA3OTAsIDkwNzk1LCA5MDgwMCwgCisgICAgOTA4MDUsIDkwODEwLCA5MDgxNSwgOTA4MjAsIDkwODI1LCA5MDgzMCwgOTA4MzUsIDkwODQwLCA5MDg0NSwgOTA4NTAsIAorICAgIDkwODU1LCA5MDg2MCwgOTA4NjUsIDkwODY5LCA5MDg3MywgOTA4NzgsIDkwODgzLCA5MDg4OCwgOTA4OTMsIDkwODk4LCAKKyAgICA5MDkwMywgOTA5MDgsIDkwOTEzLCA5MDkxOCwgOTA5MjMsIDkwOTI4LCA5MDkzMiwgOTA5MzYsIDkwOTQwLCA5MDk0NCwgCisgICAgOTA5NDgsIDkwOTUyLCA5MDk1NiwgOTA5NjEsIDkwOTY2LCAwLCAwLCA5MDk3MSwgOTA5NzYsIDkwOTgwLCA5MDk4NCwgCisgICAgOTA5ODgsIDkwOTkyLCA5MDk5NiwgOTEwMDAsIDkxMDA0LCA5MTAwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTAwNTgsIDkwMDYyLCA5MDA2NiwgOTAwNzAsIDkwMDc0LCA5MDA3OCwgMCwgMCwgOTAwODMsIDAsIAotICAgIDkwMDg4LCA5MDA5MiwgOTAwOTcsIDkwMTAyLCA5MDEwNywgOTAxMTIsIDkwMTE3LCA5MDEyMiwgOTAxMjcsIDkwMTMyLCAKLSAgICA5MDEzNywgOTAxNDEsIDkwMTQ2LCA5MDE1MSwgOTAxNTYsIDkwMTYxLCA5MDE2NSwgOTAxNzAsIDkwMTc1LCA5MDE4MCwgCi0gICAgOTAxODUsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgOTAyMTMsIDkwMjE4LCA5MDIyMywgOTAyMjgsIAotICAgIDkwMjMzLCA5MDIzOCwgOTAyNDMsIDkwMjQ4LCA5MDI1MywgOTAyNTgsIDkwMjYzLCA5MDI2OCwgOTAyNzMsIDkwMjc3LCAKLSAgICA5MDI4MiwgOTAyODcsIDkwMjkyLCA5MDI5NywgMCwgOTAzMDIsIDkwMzA3LCAwLCAwLCAwLCA5MDMxMiwgMCwgMCwgOTAzMTcsIAotICAgIDkwMzIyLCA5MDMyOSwgOTAzMzYsIDkwMzQzLCA5MDM1MCwgOTAzNTcsIDkwMzY0LCA5MDM3MSwgOTAzNzgsIDkwMzg1LCAKLSAgICA5MDM5MiwgOTAzOTksIDkwNDA2LCA5MDQxMywgOTA0MjAsIDkwNDI3LCA5MDQzNCwgOTA0NDEsIDkwNDQ4LCA5MDQ1NSwgCi0gICAgOTA0NjIsIDkwNDY5LCAwLCA5MDQ3NiwgOTA0ODMsIDkwNDg5LCA5MDQ5NSwgOTA1MDEsIDkwNTA4LCA5MDUxNSwgOTA1MjMsIAotICAgIDkwNTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDU0MCwgOTA1NDUsIDkwNTUwLCA5MDU1NSwgOTA1NjAsIDkwNTY1LCAKLSAgICA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTAsIDkwNTk1LCA5MDYwMCwgOTA2MDUsIDkwNjEwLCA5MDYxNSwgCi0gICAgOTA2MjAsIDkwNjI1LCA5MDYzMCwgOTA2MzUsIDkwNjQwLCA5MDY0NSwgOTA2NTAsIDkwNjU0LCA5MDY1OSwgOTA2NjQsIAotICAgIDkwNjcwLCA5MDY3NCwgMCwgMCwgMCwgOTA2NzgsIDkwNjg0LCA5MDY4OCwgOTA2OTMsIDkwNjk4LCA5MDcwMywgOTA3MDcsIAotICAgIDkwNzEyLCA5MDcxNiwgOTA3MjEsIDkwNzI2LCA5MDczMCwgOTA3MzQsIDkwNzM4LCA5MDc0MiwgOTA3NDYsIDkwNzUxLCAKLSAgICA5MDc1NiwgOTA3NjAsIDkwNzY1LCA5MDc3MCwgOTA3NzQsIDkwNzc5LCA5MDc4NCwgOTA3ODksIDkwNzk0LCA5MDc5OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTA4MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkxMDEyLCA5MTAxNiwgOTEwMjAsIDkxMDI0LCA5MTAyOCwgOTEwMzIsIDAsIDAsIDkxMDM3LCAwLCAKKyAgICA5MTA0MiwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjEsIDkxMDY2LCA5MTA3MSwgOTEwNzYsIDkxMDgxLCA5MTA4NiwgCisgICAgOTEwOTEsIDkxMDk1LCA5MTEwMCwgOTExMDUsIDkxMTEwLCA5MTExNSwgOTExMTksIDkxMTI0LCA5MTEyOSwgOTExMzQsIAorICAgIDkxMTM5LCA5MTE0MywgOTExNDgsIDkxMTUzLCA5MTE1OCwgOTExNjMsIDkxMTY3LCA5MTE3MiwgOTExNzcsIDkxMTgyLCAKKyAgICA5MTE4NywgOTExOTEsIDkxMTk2LCA5MTIwMSwgOTEyMDYsIDkxMjExLCA5MTIxNiwgOTEyMjEsIDkxMjI2LCA5MTIzMCwgCisgICAgOTEyMzUsIDkxMjQwLCA5MTI0NSwgOTEyNTAsIDAsIDkxMjU1LCA5MTI2MCwgMCwgMCwgMCwgOTEyNjUsIDAsIDAsIDkxMjcwLCAKKyAgICA5MTI3NSwgOTEyODIsIDkxMjg5LCA5MTI5NiwgOTEzMDMsIDkxMzEwLCA5MTMxNywgOTEzMjQsIDkxMzMxLCA5MTMzOCwgCisgICAgOTEzNDUsIDkxMzUyLCA5MTM1OSwgOTEzNjYsIDkxMzczLCA5MTM4MCwgOTEzODcsIDkxMzk0LCA5MTQwMSwgOTE0MDgsIAorICAgIDkxNDE1LCA5MTQyMiwgMCwgOTE0MjksIDkxNDM2LCA5MTQ0MiwgOTE0NDgsIDkxNDU0LCA5MTQ2MSwgOTE0NjgsIDkxNDc2LCAKKyAgICA5MTQ4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE0OTMsIDkxNDk4LCA5MTUwMywgOTE1MDgsIDkxNTEzLCA5MTUxOCwgCisgICAgOTE1MjMsIDkxNTI4LCA5MTUzMywgOTE1MzgsIDkxNTQzLCA5MTU0OCwgOTE1NTMsIDkxNTU4LCA5MTU2MywgOTE1NjgsIAorICAgIDkxNTczLCA5MTU3OCwgOTE1ODMsIDkxNTg4LCA5MTU5MywgOTE1OTgsIDkxNjAzLCA5MTYwNywgOTE2MTIsIDkxNjE3LCAKKyAgICA5MTYyMywgOTE2MjcsIDAsIDAsIDAsIDkxNjMxLCA5MTYzNywgOTE2NDEsIDkxNjQ2LCA5MTY1MSwgOTE2NTYsIDkxNjYwLCAKKyAgICA5MTY2NSwgOTE2NjksIDkxNjc0LCA5MTY3OSwgOTE2ODMsIDkxNjg3LCA5MTY5MiwgOTE2OTYsIDkxNzAwLCA5MTcwNSwgCisgICAgOTE3MTAsIDkxNzE0LCA5MTcxOSwgOTE3MjQsIDkxNzI5LCA5MTczNCwgOTE3MzksIDkxNzQ0LCA5MTc0OSwgOTE3NTQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkxNzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDgwOSwgCi0gICAgOTA4MTMsIDkwODE4LCA5MDgyMywgMCwgOTA4MjksIDkwODM0LCAwLCAwLCAwLCAwLCAwLCA5MDgzOSwgOTA4NDUsIDkwODUyLCAKLSAgICA5MDg1NywgOTA4NjIsIDkwODY2LCA5MDg3MSwgOTA4NzYsIDAsIDkwODgxLCA5MDg4NiwgOTA4OTEsIDAsIDkwODk2LCAKLSAgICA5MDkwMSwgOTA5MDYsIDkwOTExLCA5MDkxNiwgOTA5MjEsIDkwOTI2LCA5MDkzMSwgOTA5MzYsIDkwOTQxLCA5MDk0NiwgCi0gICAgOTA5NTAsIDkwOTU0LCA5MDk1OSwgOTA5NjQsIDkwOTY5LCA5MDk3MywgOTA5NzcsIDkwOTgxLCA5MDk4NiwgOTA5OTEsIAotICAgIDkwOTk2LCA5MTAwMSwgOTEwMDYsIDkxMDExLCA5MTAxNSwgOTEwMjAsIDAsIDAsIDAsIDAsIDkxMDI1LCA5MTAzMSwgCi0gICAgOTEwMzYsIDAsIDAsIDAsIDAsIDkxMDQxLCA5MTA0NSwgOTEwNDksIDkxMDUzLCA5MTA1NywgOTEwNjEsIDkxMDY2LCAKLSAgICA5MTA3MSwgOTEwNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMDgzLCA5MTA4OSwgOTEwOTYsIDkxMTAyLCA5MTEwOSwgCi0gICAgOTExMTUsIDkxMTIxLCA5MTEyNywgOTExMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTQwLCA5MTE0OCwgOTExNTYsIAotICAgIDkxMTY0LCA5MTE3MiwgOTExODAsIDkxMTg4LCA5MTE5NiwgOTEyMDQsIDkxMjEyLCA5MTIyMCwgOTEyMjgsIDkxMjM2LCAKLSAgICA5MTI0NCwgOTEyNTIsIDkxMjYwLCA5MTI2OCwgOTEyNzYsIDkxMjg0LCA5MTI5MiwgOTEzMDAsIDkxMzA4LCA5MTMxNiwgCi0gICAgOTEzMjQsIDkxMzMyLCA5MTM0MCwgOTEzNDgsIDkxMzU2LCA5MTM2NCwgOTEzNzIsIDkxMzc5LCA5MTM4NywgOTEzOTUsIAotICAgIDkxMzk5LCA5MTQwNCwgOTE0MDksIDkxNDE0LCA5MTQxOSwgOTE0MjQsIDkxNDI5LCA5MTQzNCwgOTE0MzgsIDkxNDQzLCAKLSAgICA5MTQ0NywgOTE0NTIsIDkxNDU2LCA5MTQ2MSwgOTE0NjUsIDkxNDcwLCA5MTQ3NSwgOTE0ODAsIDkxNDg1LCA5MTQ5MCwgCi0gICAgOTE0OTUsIDkxNTAwLCA5MTUwNSwgOTE1MTAsIDkxNTE1LCA5MTUyMCwgOTE1MjUsIDkxNTMwLCA5MTUzNSwgOTE1NDAsIAotICAgIDkxNTQ1LCA5MTU1MCwgOTE1NTUsIDkxNTYwLCA5MTU2NSwgOTE1NzAsIDkxNTc1LCA5MTU4MCwgOTE1ODUsIDkxNTkwLCAKLSAgICA5MTU5NSwgOTE2MDAsIDkxNjA1LCA5MTYxMCwgOTE2MTUsIDkxNjIwLCA5MTYyNSwgOTE2MzAsIDkxNjM1LCA5MTY0MCwgCi0gICAgOTE2NDUsIDkxNjUwLCA5MTY1NSwgMCwgMCwgMCwgOTE2NjAsIDkxNjY1LCA5MTY3NCwgOTE2ODIsIDkxNjkxLCA5MTcwMCwgCi0gICAgOTE3MTEsIDkxNzIyLCA5MTcyOSwgOTE3MzYsIDkxNzQzLCA5MTc1MCwgOTE3NTcsIDkxNzY0LCA5MTc3MSwgOTE3NzgsIAotICAgIDkxNzg1LCA5MTc5MiwgOTE3OTksIDkxODA2LCA5MTgxMywgOTE4MjAsIDkxODI3LCA5MTgzNCwgOTE4NDEsIDkxODQ4LCAKLSAgICA5MTg1NSwgOTE4NjIsIDkxODY5LCAwLCAwLCA5MTg3NiwgOTE4ODIsIDkxODg4LCA5MTg5NCwgOTE5MDAsIDkxOTA3LCAKLSAgICA5MTkxNCwgOTE5MjIsIDkxOTMwLCA5MTkzNywgOTE5NDQsIDkxOTUxLCA5MTk1OCwgOTE5NjUsIDkxOTcyLCA5MTk3OSwgCi0gICAgOTE5ODYsIDkxOTkzLCA5MjAwMCwgOTIwMDcsIDkyMDE0LCA5MjAyMSwgOTIwMjgsIDkyMDM1LCA5MjA0MiwgOTIwNDksIAotICAgIDkyMDU2LCAwLCAwLCAwLCAwLCAwLCA5MjA2MywgOTIwNjksIDkyMDc1LCA5MjA4MSwgOTIwODcsIDkyMDk0LCA5MjEwMSwgCi0gICAgOTIxMDksIDkyMTE3LCA5MjEyMywgOTIxMjksIDkyMTM2LCA5MjE0MiwgOTIxNDgsIDkyMTU0LCA5MjE2MCwgOTIxNjcsIAotICAgIDkyMTc0LCA5MjE4MSwgOTIxODgsIDkyMTk1LCA5MjIwMiwgOTIyMDksIDkyMjE2LCA5MjIyMywgOTIyMzAsIDkyMjM3LCAKLSAgICA5MjI0NCwgOTIyNTEsIDkyMjU4LCA5MjI2NSwgOTIyNzIsIDkyMjc5LCA5MjI4NiwgOTIyOTMsIDkyMzAwLCA5MjMwNywgCi0gICAgOTIzMTQsIDkyMzIxLCA5MjMyOCwgOTIzMzUsIDkyMzQyLCA5MjM0OSwgOTIzNTYsIDkyMzYzLCA5MjM3MCwgOTIzNzcsIAotICAgIDkyMzg0LCA5MjM5MSwgOTIzOTgsIDkyNDA1LCA5MjQxMiwgOTI0MTksIDkyNDI2LCA5MjQzMywgOTI0NDAsIDkyNDQ3LCAKLSAgICA5MjQ1NCwgOTI0NjEsIDkyNDY4LCA5MjQ3NSwgOTI0ODIsIDkyNDg5LCA5MjQ5NiwgOTI1MDMsIDkyNTEwLCA5MjUxNywgCi0gICAgOTI1MjQsIDkyNTMxLCA5MjUzOCwgOTI1NDUsIDkyNTUyLCA5MjU1OSwgOTI1NjYsIDkyNTczLCA5MjU4MCwgOTI1ODcsIAotICAgIDkyNTk0LCA5MjYwMSwgOTI2MDgsIDkyNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc2NCwgCisgICAgOTE3NzAsIDkxNzc2LCA5MTc4MiwgOTE3ODgsIDkxNzk0LCA5MTgwMSwgOTE4MDgsIDkxODE1LCA5MTgyMSwgOTE4MjcsIAorICAgIDkxODMzLCA5MTg0MCwgOTE4NDcsIDkxODU0LCA5MTg2MCwgOTE4NjcsIDkxODc0LCA5MTg4MSwgOTE4ODgsIDkxODk0LCAKKyAgICA5MTkwMSwgOTE5MDgsIDkxOTE0LCA5MTkyMSwgOTE5MjgsIDkxOTM1LCA5MTk0MiwgOTE5NDksIDkxOTU1LCA5MTk2MiwgCisgICAgOTE5NjksIDkxOTc2LCA5MTk4MiwgOTE5ODgsIDkxOTk0LCA5MjAwMCwgOTIwMDYsIDkyMDEzLCA5MjAyMCwgOTIwMjYsIAorICAgIDkyMDMyLCA5MjAzOCwgOTIwNDUsIDkyMDUxLCA5MjA1OCwgOTIwNjUsIDkyMDcyLCA5MjA3OCwgOTIwODYsIDkyMDkzLCAKKyAgICA5MjA5OSwgOTIxMDYsIDkyMTEzLCA5MjEyMCwgOTIxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMTMzLCA5MjE0MSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIxNDksIDkyMTUzLCA5MjE1OCwgOTIxNjMsIDAsIAorICAgIDkyMTY5LCA5MjE3NCwgMCwgMCwgMCwgMCwgMCwgOTIxNzksIDkyMTg1LCA5MjE5MiwgOTIxOTcsIDkyMjAyLCA5MjIwNiwgCisgICAgOTIyMTEsIDkyMjE2LCAwLCA5MjIyMSwgOTIyMjYsIDkyMjMxLCAwLCA5MjIzNiwgOTIyNDEsIDkyMjQ2LCA5MjI1MSwgCisgICAgOTIyNTYsIDkyMjYxLCA5MjI2NiwgOTIyNzEsIDkyMjc2LCA5MjI4MSwgOTIyODYsIDkyMjkwLCA5MjI5NCwgOTIyOTksIAorICAgIDkyMzA0LCA5MjMwOSwgOTIzMTMsIDkyMzE3LCA5MjMyMSwgOTIzMjYsIDkyMzMxLCA5MjMzNiwgOTIzNDEsIDkyMzQ1LCAKKyAgICA5MjM1MCwgOTIzNTQsIDkyMzU5LCAwLCAwLCAwLCAwLCA5MjM2NCwgOTIzNzAsIDkyMzc1LCAwLCAwLCAwLCAwLCA5MjM4MCwgCisgICAgOTIzODQsIDkyMzg4LCA5MjM5MiwgOTIzOTYsIDkyNDAwLCA5MjQwNSwgOTI0MTAsIDkyNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5MjQyMiwgOTI0MjgsIDkyNDM1LCA5MjQ0MSwgOTI0NDgsIDkyNDU0LCA5MjQ2MCwgOTI0NjYsIDkyNDczLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5MjQ3OSwgOTI0ODcsIDkyNDk1LCA5MjUwMywgOTI1MTEsIDkyNTE5LCA5MjUyNywgOTI1MzUsIAorICAgIDkyNTQzLCA5MjU1MSwgOTI1NTksIDkyNTY3LCA5MjU3NSwgOTI1ODMsIDkyNTkxLCA5MjU5OSwgOTI2MDcsIDkyNjE1LCAKKyAgICA5MjYyMywgOTI2MzEsIDkyNjM5LCA5MjY0NywgOTI2NTUsIDkyNjYzLCA5MjY3MSwgOTI2NzksIDkyNjg3LCA5MjY5NSwgCisgICAgOTI3MDMsIDkyNzExLCA5MjcxOCwgOTI3MjYsIDkyNzM0LCA5MjczOCwgOTI3NDMsIDkyNzQ4LCA5Mjc1MywgOTI3NTgsIAorICAgIDkyNzYzLCA5Mjc2OCwgOTI3NzMsIDkyNzc3LCA5Mjc4MiwgOTI3ODYsIDkyNzkxLCA5Mjc5NSwgOTI4MDAsIDkyODA0LCAKKyAgICA5MjgwOSwgOTI4MTQsIDkyODE5LCA5MjgyNCwgOTI4MjksIDkyODM0LCA5MjgzOSwgOTI4NDQsIDkyODQ5LCA5Mjg1NCwgCisgICAgOTI4NTksIDkyODY0LCA5Mjg2OSwgOTI4NzQsIDkyODc5LCA5Mjg4NCwgOTI4ODksIDkyODk0LCA5Mjg5OSwgOTI5MDQsIAorICAgIDkyOTA5LCA5MjkxNCwgOTI5MTksIDkyOTI0LCA5MjkyOSwgOTI5MzQsIDkyOTM5LCA5Mjk0NCwgOTI5NDksIDkyOTU0LCAKKyAgICA5Mjk1OSwgOTI5NjQsIDkyOTY5LCA5Mjk3NCwgOTI5NzksIDkyOTg0LCA5Mjk4OSwgOTI5OTQsIDAsIDAsIDAsIDkyOTk5LCAKKyAgICA5MzAwNCwgOTMwMTMsIDkzMDIxLCA5MzAzMCwgOTMwMzksIDkzMDUwLCA5MzA2MSwgOTMwNjgsIDkzMDc1LCA5MzA4MiwgCisgICAgOTMwODksIDkzMDk2LCA5MzEwMywgOTMxMTAsIDkzMTE3LCA5MzEyNCwgOTMxMzEsIDkzMTM4LCA5MzE0NSwgOTMxNTIsIAorICAgIDkzMTU5LCA5MzE2NiwgOTMxNzMsIDkzMTgwLCA5MzE4NywgOTMxOTQsIDkzMjAxLCA5MzIwOCwgMCwgMCwgOTMyMTUsIAorICAgIDkzMjIxLCA5MzIyNywgOTMyMzMsIDkzMjM5LCA5MzI0NiwgOTMyNTMsIDkzMjYxLCA5MzI2OSwgOTMyNzYsIDkzMjgzLCAKKyAgICA5MzI5MCwgOTMyOTcsIDkzMzA0LCA5MzMxMSwgOTMzMTgsIDkzMzI1LCA5MzMzMiwgOTMzMzksIDkzMzQ2LCA5MzM1MywgCisgICAgOTMzNjAsIDkzMzY3LCA5MzM3NCwgOTMzODEsIDkzMzg4LCA5MzM5NSwgMCwgMCwgMCwgMCwgMCwgOTM0MDIsIDkzNDA4LCAKKyAgICA5MzQxNCwgOTM0MjAsIDkzNDI2LCA5MzQzMywgOTM0NDAsIDkzNDQ4LCA5MzQ1NiwgOTM0NjIsIDkzNDY4LCA5MzQ3NSwgCisgICAgOTM0ODEsIDkzNDg3LCA5MzQ5MywgOTM0OTksIDkzNTA2LCA5MzUxMywgOTM1MjAsIDkzNTI3LCA5MzUzNCwgOTM1NDEsIAorICAgIDkzNTQ4LCA5MzU1NSwgOTM1NjIsIDkzNTY5LCA5MzU3NiwgOTM1ODMsIDkzNTkwLCA5MzU5NywgOTM2MDQsIDkzNjExLCAKKyAgICA5MzYxOCwgOTM2MjUsIDkzNjMyLCA5MzYzOSwgOTM2NDYsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIDkzNjc0LCA5MzY4MSwgCisgICAgOTM2ODgsIDkzNjk1LCA5MzcwMiwgOTM3MDksIDkzNzE2LCA5MzcyMywgOTM3MzAsIDkzNzM3LCA5Mzc0NCwgOTM3NTEsIAorICAgIDkzNzU4LCA5Mzc2NSwgOTM3NzIsIDkzNzc5LCA5Mzc4NiwgOTM3OTMsIDkzODAwLCA5MzgwNywgOTM4MTQsIDkzODIxLCAKKyAgICA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg3MCwgOTM4NzcsIDkzODg0LCA5Mzg5MSwgCisgICAgOTM4OTgsIDkzOTA1LCA5MzkxMiwgOTM5MTksIDkzOTI2LCA5MzkzMywgOTM5NDAsIDkzOTQ3LCA5Mzk1NCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI2MjIsIDkyNjI2LCA5MjYzMCwgCi0gICAgOTI2MzQsIDkyNjM4LCA5MjY0MiwgOTI2NDYsIDkyNjUwLCA5MjY1NCwgOTI2NTgsIDkyNjYzLCA5MjY2OCwgOTI2NzMsIAotICAgIDkyNjc4LCA5MjY4MywgOTI2ODgsIDkyNjkzLCA5MjY5OCwgOTI3MDMsIDkyNzA5LCA5MjcxNSwgOTI3MjEsIDkyNzI4LCAKLSAgICA5MjczNSwgOTI3NDIsIDkyNzQ5LCA5Mjc1NiwgOTI3NjMsIDkyNzcwLCA5Mjc3NywgOTI3ODQsIDAsIDkyNzkxLCA5Mjc5NSwgCi0gICAgOTI3OTksIDkyODAzLCA5MjgwNywgOTI4MTEsIDkyODE0LCA5MjgxOCwgOTI4MjEsIDkyODI1LCA5MjgyOCwgOTI4MzIsIAotICAgIDkyODM2LCA5Mjg0MSwgOTI4NDUsIDkyODUwLCA5Mjg1MywgOTI4NTcsIDkyODYwLCA5Mjg2NCwgOTI4NjcsIDkyODcxLCAKLSAgICA5Mjg3NSwgOTI4NzksIDkyODgzLCA5Mjg4NywgOTI4OTEsIDkyODk1LCA5Mjg5OSwgOTI5MDMsIDkyOTA3LCA5MjkxMSwgCi0gICAgOTI5MTUsIDkyOTE5LCA5MjkyMywgOTI5MjcsIDkyOTMxLCA5MjkzNSwgOTI5MzksIDkyOTQyLCA5Mjk0NSwgOTI5NDksIAotICAgIDkyOTUzLCA5Mjk1NywgOTI5NjAsIDkyOTYzLCA5Mjk2NiwgOTI5NzAsIDkyOTc0LCA5Mjk3OCwgOTI5ODIsIDkyOTg2LCAKLSAgICA5Mjk4OSwgOTI5OTMsIDkyOTk5LCA5MzAwNSwgOTMwMTEsIDkzMDE2LCA5MzAyMywgOTMwMjcsIDkzMDMyLCA5MzAzNiwgCi0gICAgOTMwNDEsIDkzMDQ2LCA5MzA1MiwgOTMwNTcsIDkzMDYzLCA5MzA2NywgOTMwNzIsIDkzMDc2LCA5MzA4MSwgOTMwODQsIAotICAgIDkzMDg3LCA5MzA5MSwgOTMwOTYsIDkzMTAyLCA5MzEwNywgOTMxMTMsIDAsIDAsIDAsIDAsIDkzMTE4LCA5MzEyMSwgCi0gICAgOTMxMjQsIDkzMTI3LCA5MzEzMCwgOTMxMzMsIDkzMTM2LCA5MzEzOSwgOTMxNDIsIDkzMTQ1LCA5MzE0OSwgOTMxNTMsIAotICAgIDkzMTU3LCA5MzE2MSwgOTMxNjUsIDkzMTY5LCA5MzE3MywgOTMxNzcsIDkzMTgxLCA5MzE4NiwgOTMxOTEsIDkzMTk1LCAKLSAgICA5MzE5OCwgOTMyMDEsIDkzMjA0LCA5MzIwNywgOTMyMTAsIDkzMjEzLCA5MzIxNiwgOTMyMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzMjIyLCA5MzIyNiwgOTMyMzAsIDkzMjM0LCA5MzIzNywgOTMyNDEsIAotICAgIDkzMjQ0LCA5MzI0OCwgOTMyNTEsIDkzMjU1LCA5MzI1OCwgOTMyNjIsIDkzMjY1LCA5MzI2OSwgOTMyNzIsIDkzMjc2LCAKLSAgICA5MzI4MCwgOTMyODQsIDkzMjg4LCA5MzI5MiwgOTMyOTYsIDkzMzAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNiwgCi0gICAgOTMzMjAsIDkzMzI0LCA5MzMyOCwgOTMzMzIsIDkzMzM2LCA5MzM0MCwgOTMzNDQsIDkzMzQ4LCA5MzM1MiwgOTMzNTUsIAotICAgIDkzMzU4LCA5MzM2MiwgOTMzNjYsIDkzMzcwLCA5MzM3MywgOTMzNzYsIDkzMzc5LCA5MzM4MywgOTMzODcsIDkzMzkxLCAKLSAgICA5MzM5NSwgOTMzOTksIDkzNDAyLCA5MzQwNywgOTM0MTEsIDkzNDE2LCA5MzQyMCwgOTM0MjUsIDkzNDI5LCA5MzQzNCwgCi0gICAgOTM0MzgsIDkzNDQzLCA5MzQ0NywgOTM0NTEsIDkzNDU1LCA5MzQ1OSwgOTM0NjIsIDkzNDY2LCA5MzQ3MSwgOTM0NzQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkzOTYxLCA5Mzk2NSwgOTM5NjksIDkzOTczLCA5Mzk3NywgOTM5ODEsIDkzOTg1LCA5Mzk4OSwgCisgICAgOTM5OTMsIDkzOTk3LCA5NDAwMiwgOTQwMDcsIDk0MDEyLCA5NDAxNywgOTQwMjIsIDk0MDI3LCA5NDAzMiwgOTQwMzcsIAorICAgIDk0MDQyLCA5NDA0OCwgOTQwNTQsIDk0MDYwLCA5NDA2NywgOTQwNzQsIDk0MDgxLCA5NDA4OCwgOTQwOTUsIDk0MTAyLCAKKyAgICA5NDEwOSwgOTQxMTYsIDk0MTIzLCAwLCA5NDEzMCwgOTQxMzQsIDk0MTM4LCA5NDE0MiwgOTQxNDYsIDk0MTUwLCA5NDE1MywgCisgICAgOTQxNTcsIDk0MTYwLCA5NDE2NCwgOTQxNjcsIDk0MTcxLCA5NDE3NSwgOTQxODAsIDk0MTg0LCA5NDE4OSwgOTQxOTIsIAorICAgIDk0MTk2LCA5NDE5OSwgOTQyMDMsIDk0MjA2LCA5NDIxMCwgOTQyMTQsIDk0MjE4LCA5NDIyMiwgOTQyMjYsIDk0MjMwLCAKKyAgICA5NDIzNCwgOTQyMzgsIDk0MjQyLCA5NDI0NiwgOTQyNTAsIDk0MjU0LCA5NDI1OCwgOTQyNjIsIDk0MjY2LCA5NDI3MCwgCisgICAgOTQyNzQsIDk0Mjc4LCA5NDI4MSwgOTQyODQsIDk0Mjg4LCA5NDI5MiwgOTQyOTYsIDk0Mjk5LCA5NDMwMiwgOTQzMDUsIAorICAgIDk0MzA5LCA5NDMxMywgOTQzMTcsIDk0MzIxLCA5NDMyNCwgOTQzMjcsIDk0MzMxLCA5NDMzNywgOTQzNDMsIDk0MzQ5LCAKKyAgICA5NDM1NCwgOTQzNjEsIDk0MzY1LCA5NDM3MCwgOTQzNzQsIDk0Mzc5LCA5NDM4NCwgOTQzOTAsIDk0Mzk1LCA5NDQwMSwgCisgICAgOTQ0MDUsIDk0NDEwLCA5NDQxNCwgOTQ0MTksIDk0NDIyLCA5NDQyNSwgOTQ0MjksIDk0NDM0LCA5NDQ0MCwgOTQ0NDUsIAorICAgIDk0NDUxLCAwLCAwLCAwLCAwLCA5NDQ1NiwgOTQ0NTksIDk0NDYyLCA5NDQ2NSwgOTQ0NjgsIDk0NDcxLCA5NDQ3NCwgCisgICAgOTQ0NzcsIDk0NDgwLCA5NDQ4MywgOTQ0ODcsIDk0NDkxLCA5NDQ5NSwgOTQ0OTksIDk0NTAzLCA5NDUwNywgOTQ1MTEsIAorICAgIDk0NTE1LCA5NDUxOSwgOTQ1MjQsIDk0NTI5LCA5NDUzMywgOTQ1MzYsIDk0NTM5LCA5NDU0MiwgOTQ1NDUsIDk0NTQ4LCAKKyAgICA5NDU1MSwgOTQ1NTQsIDk0NTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NDU2MCwgOTQ1NjUsIDk0NTcwLCA5NDU3NSwgOTQ1NzksIDk0NTg0LCA5NDU4OCwgOTQ1OTMsIDk0NTk3LCA5NDYwMiwgCisgICAgOTQ2MDYsIDk0NjExLCA5NDYxNSwgOTQ2MjAsIDk0NjI0LCA5NDYyOSwgOTQ2MzQsIDk0NjM5LCA5NDY0NCwgOTQ2NDksIAorICAgIDk0NjU0LCA5NDY1OSwgOTQ2NjQsIDk0NjY5LCA5NDY3NCwgOTQ2NzksIDk0Njg0LCA5NDY4OSwgOTQ2OTQsIDk0Njk5LCAKKyAgICA5NDcwNCwgOTQ3MDksIDk0NzE0LCA5NDcxOSwgOTQ3MjQsIDk0NzI4LCA5NDczMiwgOTQ3MzcsIDk0NzQyLCA5NDc0NywgCisgICAgOTQ3NTEsIDk0NzU1LCA5NDc1OSwgOTQ3NjQsIDk0NzY5LCA5NDc3NCwgOTQ3NzksIDk0NzgzLCA5NDc4NywgOTQ3OTMsIAorICAgIDk0Nzk4LCA5NDgwNCwgOTQ4MDksIDk0ODE1LCA5NDgyMCwgOTQ4MjYsIDk0ODMxLCA5NDgzNywgOTQ4NDIsIDk0ODQ3LCAKKyAgICA5NDg1MiwgOTQ4NTcsIDk0ODYxLCA5NDg2NiwgOTQ4NzIsIDk0ODc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5NDg4MSwgOTQ4ODgsIDk0ODk1LCA5NDkwMiwgOTQ5MDksIDk0OTE2LCA5NDkyMywgOTQ5MzAsIAorICAgIDk0OTM3LCA5NDk0NCwgOTQ5NTEsIDk0OTU4LCA5NDk2NSwgOTQ5NzIsIDk0OTc5LCA5NDk4NiwgOTQ5OTMsIDk1MDAwLCAKKyAgICA5NTAwNywgOTUwMTQsIDk1MDIxLCA5NTAyOCwgOTUwMzUsIDk1MDQyLCA5NTA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTUwNTYsIDk1MDYzLCA5NTA2OSwgOTUwNzUsIDk1MDgxLCA5NTA4NywgOTUwOTMsIDk1MDk5LCA5NTEwNSwgOTUxMTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDk1MTE3LCA5NTEyMiwgOTUxMjcsIDk1MTMyLCA5NTEzNywgOTUxNDEsIDk1MTQ1LCA5NTE0OSwgCisgICAgOTUxNTQsIDk1MTU5LCA5NTE2NCwgOTUxNjksIDk1MTc0LCA5NTE3OSwgOTUxODQsIDk1MTg5LCA5NTE5NCwgOTUxOTksIAorICAgIDk1MjA0LCA5NTIwOSwgOTUyMTQsIDk1MjE5LCA5NTIyNCwgOTUyMjksIDk1MjM0LCA5NTIzOSwgOTUyNDQsIDk1MjQ5LCAKKyAgICA5NTI1NCwgOTUyNTksIDk1MjY0LCA5NTI2OSwgOTUyNzQsIDk1Mjc5LCA5NTI4NCwgOTUyODksIDk1Mjk0LCA5NTI5OSwgCisgICAgOTUzMDQsIDk1MzA5LCA5NTMxNCwgOTUzMTksIDk1MzI1LCA5NTMzMCwgOTUzMzYsIDk1MzQxLCA5NTM0NywgOTUzNTIsIAorICAgIDk1MzU4LCA5NTM2NCwgOTUzNjgsIDk1MzczLCA5NTM3NywgMCwgOTUzODEsIDk1Mzg2LCA5NTM5MCwgOTUzOTQsIDk1Mzk4LCAKKyAgICA5NTQwMiwgOTU0MDYsIDk1NDEwLCA5NTQxNCwgOTU0MTgsIDk1NDIyLCA5NTQyNywgOTU0MzEsIDk1NDM2LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzQ3OCwgOTM0ODEsIDkzNDg2LCA5MzQ5MiwgOTM1MDAsIAotICAgIDkzNTA1LCA5MzUxMSwgOTM1MTksIDkzNTI1LCA5MzUzMSwgOTM1MzUsIDkzNTM5LCA5MzU0NiwgOTM1NTUsIDkzNTYyLCAKLSAgICA5MzU3MSwgOTM1NzcsIDkzNTg2LCA5MzU5MywgOTM2MDAsIDkzNjA3LCA5MzYxNywgOTM2MjMsIDkzNjI3LCA5MzYzNCwgCi0gICAgOTM2NDMsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIDkzNjcxLCA5MzY3NSwgOTM2ODIsIDkzNjkyLCA5MzY5NiwgOTM3MDMsIAotICAgIDkzNzEwLCA5MzcxNywgOTM3MjMsIDkzNzMwLCA5MzczNywgOTM3NDQsIDkzNzUxLCA5Mzc1NSwgOTM3NTksIDkzNzYzLCAKLSAgICA5Mzc3MCwgOTM3NzQsIDkzNzgxLCA5Mzc4OCwgOTM4MDIsIDkzODExLCA5MzgxNSwgOTM4MTksIDkzODIzLCA5MzgzMCwgCi0gICAgOTM4MzQsIDkzODM4LCA5Mzg0MiwgOTM4NTAsIDkzODU4LCA5Mzg3NywgOTM4ODcsIDkzOTA3LCA5MzkxMSwgOTM5MTUsIAotICAgIDkzOTE5LCA5MzkyMywgOTM5MjcsIDkzOTMxLCA5MzkzNSwgOTM5NDIsIDkzOTQ2LCA5Mzk0OSwgOTM5NTMsIDkzOTU3LCAKLSAgICA5Mzk2MywgOTM5NzAsIDkzOTc5LCA5Mzk4MywgOTM5OTIsIDk0MDAxLCA5NDAwOSwgOTQwMTMsIDk0MDIwLCA5NDAyNCwgCi0gICAgOTQwMjgsIDk0MDMyLCA5NDAzNiwgOTQwNDcsIDk0MDU2LCA5NDA2NSwgOTQwNzQsIDk0MDgzLCA5NDA5NSwgOTQxMDQsIAotICAgIDk0MTEzLCA5NDEyMiwgOTQxMzAsIDk0MTM5LCA5NDE1MSwgOTQxNjAsIDk0MTY5LCA5NDE3OCwgOTQxOTAsIDk0MTk5LCAKLSAgICA5NDIwOCwgOTQyMjAsIDk0MjI5LCA5NDIzOCwgOTQyNTAsIDk0MjU5LCA5NDI2MywgOTQyNjcsIDk0MjcxLCA5NDI3NSwgCi0gICAgOTQyNzksIDk0MjgzLCA5NDI4NywgOTQyOTQsIDk0Mjk4LCA5NDMwMiwgOTQzMTMsIDk0MzE3LCA5NDMyMSwgOTQzMjgsIAotICAgIDk0MzM0LCA5NDM0MCwgOTQzNDQsIDk0MzUxLCA5NDM1NSwgOTQzNTksIDk0MzYzLCA5NDM2NywgOTQzNzEsIDk0Mzc1LCAKLSAgICA5NDM4MSwgOTQzODksIDk0MzkzLCA5NDM5NywgOTQ0MDAsIDk0NDA2LCA5NDQxNiwgOTQ0MjAsIDk0NDMyLCA5NDQzOSwgCi0gICAgOTQ0NDYsIDk0NDUzLCA5NDQ2MCwgOTQ0NjYsIDk0NDcwLCA5NDQ3NCwgOTQ0NzgsIDk0NDgyLCA5NDQ4OSwgOTQ0OTgsIAotICAgIDk0NTA1LCA5NDUxMywgOTQ1MjEsIDk0NTI3LCA5NDUzMSwgOTQ1MzUsIDk0NTM5LCA5NDU0MywgOTQ1NDksIDk0NTU4LCAKLSAgICA5NDU3MCwgOTQ1NzcsIDk0NTg0LCA5NDU5MywgOTQ2MDQsIDk0NjEwLCA5NDYxOSwgOTQ2MjgsIDk0NjM1LCA5NDY0NCwgCi0gICAgOTQ2NTEsIDk0NjU4LCA5NDY2OCwgOTQ2NzUsIDk0NjgyLCA5NDY4OSwgOTQ2OTYsIDk0NzAwLCA5NDcwNiwgOTQ3MTAsIAotICAgIDk0NzIxLCA5NDcyOSwgOTQ3MzgsIDk0NzUwLCA5NDc1NywgOTQ3NjQsIDk0Nzc0LCA5NDc4MSwgOTQ3OTAsIDk0Nzk3LCAKLSAgICA5NDgwNiwgOTQ4MTMsIDk0ODIwLCA5NDgzMCwgOTQ4MzcsIDk0ODQ0LCA5NDg1NCwgOTQ4NjEsIDk0ODczLCA5NDg4MiwgCi0gICAgOTQ4ODksIDk0ODk2LCA5NDkwMywgOTQ5MTIsIDk0OTIyLCA5NDkzNSwgOTQ5NDIsIDk0OTUyLCA5NDk2MiwgOTQ5NjksIAotICAgIDk0OTc4LCA5NDk5MSwgOTQ5OTgsIDk1MDA1LCA5NTAxMiwgOTUwMjIsIDk1MDMyLCA5NTAzOSwgOTUwNDksIDk1MDU2LCAKLSAgICA5NTA2MywgOTUwNzMsIDk1MDc5LCA5NTA4NiwgOTUwOTMsIDk1MTAwLCA5NTExMCwgOTUxMTcsIDk1MTI0LCA5NTEzMSwgCi0gICAgOTUxMzcsIDk1MTQ0LCA5NTE1NCwgOTUxNjEsIDk1MTY1LCA5NTE3MywgOTUxNzcsIDk1MTg5LCA5NTE5MywgOTUyMDcsIAotICAgIDk1MjExLCA5NTIxNSwgOTUyMTksIDk1MjIzLCA5NTIyOSwgOTUyMzYsIDk1MjQ0LCA5NTI0OCwgOTUyNTIsIDk1MjU2LCAKLSAgICA5NTI2MCwgOTUyNjcsIDk1MjcxLCA5NTI3NywgOTUyODMsIDk1MjkxLCA5NTI5NSwgOTUzMDIsIDk1MzEwLCA5NTMxNCwgCi0gICAgOTUzMTgsIDk1MzI0LCA5NTMyOCwgOTUzMzcsIDk1MzQ2LCA5NTM1MywgOTUzNjMsIDk1MzY5LCA5NTM3MywgOTUzNzcsIAotICAgIDk1Mzg1LCA5NTM5MiwgOTUzOTksIDk1NDA1LCA5NTQwOSwgOTU0MTcsIDk1NDIxLCA5NTQyOCwgOTU0NDAsIDk1NDQ3LCAKLSAgICA5NTQ1NywgOTU0NjMsIDk1NDY3LCA5NTQ3NiwgOTU0ODMsIDk1NDkyLCA5NTQ5NiwgOTU1MDAsIDk1NTA3LCA5NTUxMSwgCi0gICAgOTU1MTUsIDk1NTE5LCA5NTUyMywgOTU1MjYsIDk1NTMyLCA5NTUzOCwgOTU1NDIsIDk1NTQ2LCA5NTU1MywgOTU1NjAsIAotICAgIDk1NTY3LCA5NTU3NCwgOTU1ODEsIDk1NTg4LCA5NTU5NSwgOTU2MDIsIDk1NjA4LCA5NTYxMiwgOTU2MTYsIDk1NjIzLCAKLSAgICA5NTYzMCwgOTU2MzcsIDk1NjQ0LCA5NTY1MSwgOTU2NTUsIDk1NjU4LCA5NTY2MywgOTU2NjcsIDk1NjcxLCA5NTY4MCwgCi0gICAgOTU2ODksIDk1NjkzLCA5NTY5NywgOTU3MDMsIDk1NzA5LCA5NTcyNiwgOTU3MzIsIDk1NzM2LCA5NTc0NSwgOTU3NDksIAotICAgIDk1NzUzLCA5NTc2MCwgOTU3NjgsIDk1Nzc2LCA5NTc4MiwgOTU3ODYsIDk1NzkwLCA5NTc5NCwgOTU3OTgsIDk1ODAxLCAKLSAgICA5NTgwNywgOTU4MTQsIDk1ODI0LCA5NTgzMSwgOTU4MzgsIDk1ODQ1LCA5NTg1MSwgOTU4NTgsIDk1ODY1LCA5NTg3MiwgCi0gICAgOTU4NzksIDk1ODg2LCA5NTg5NSwgOTU5MDIsIDk1OTE0LCA5NTkyMSwgOTU5MjgsIDk1OTM4LCA5NTk0OSwgOTU5NTYsIAotICAgIDk1OTYzLCA5NTk3MCwgOTU5NzcsIDk1OTg0LCA5NTk5MSwgOTU5OTgsIDk2MDA1LCA5NjAxMiwgOTYwMTksIDk2MDI5LCAKLSAgICA5NjAzOSwgOTYwNDksIDk2MDU2LCA5NjA2NiwgOTYwNzMsIDk2MDgwLCA5NjA4NywgOTYwOTQsIDk2MTAxLCA5NjEwOCwgCi0gICAgOTYxMTUsIDk2MTIyLCA5NjEyOSwgOTYxMzYsIDk2MTQzLCA5NjE1MCwgOTYxNTcsIDk2MTYzLCA5NjE3MCwgOTYxNzcsIAotICAgIDk2MTg2LCA5NjE5MywgOTYyMDAsIDk2MjA0LCA5NjIxMiwgOTYyMTYsIDk2MjIwLCA5NjIyNCwgOTYyMjgsIDk2MjMyLCAKLSAgICA5NjIzOSwgOTYyNDMsIDk2MjUyLCA5NjI1NiwgOTYyNjMsIDk2MjcxLCA5NjI3NSwgOTYyNzksIDk2MjgzLCA5NjI5NiwgCi0gICAgOTYzMTIsIDk2MzE2LCA5NjMyMCwgOTYzMjcsIDk2MzMzLCA5NjM0MCwgOTYzNDQsIDk2MzQ4LCA5NjM1MiwgOTYzNTYsIAotICAgIDk2MzYwLCA5NjM2NywgOTYzNzEsIDk2Mzg5LCA5NjM5MywgOTYzOTcsIDk2NDA0LCA5NjQwOCwgOTY0MTIsIDk2NDE4LCAKLSAgICA5NjQyMiwgOTY0MjYsIDk2NDM0LCA5NjQzOCwgOTY0NDIsIDk2NDQ2LCA5NjQ1MCwgOTY0NTYsIDk2NDY3LCA5NjQ3NiwgCi0gICAgOTY0ODUsIDk2NDkyLCA5NjQ5OSwgOTY1MTAsIDk2NTE3LCA5NjUyNCwgOTY1MzEsIDk2NTM4LCA5NjU0NSwgOTY1NTIsIAotICAgIDk2NTU5LCA5NjU2OSwgOTY1NzUsIDk2NTgyLCA5NjU5MiwgOTY2MDEsIDk2NjA4LCA5NjYxNywgOTY2MjcsIDk2NjM0LCAKLSAgICA5NjY0MSwgOTY2NDgsIDk2NjU1LCA5NjY2NywgOTY2NzQsIDk2NjgxLCA5NjY4OCwgOTY2OTUsIDk2NzAyLCA5NjcxMiwgCi0gICAgOTY3MTksIDk2NzI2LCA5NjczNiwgOTY3NDksIDk2NzYxLCA5Njc2OCwgOTY3NzgsIDk2Nzg1LCA5Njc5MiwgOTY3OTksIAotICAgIDk2ODEzLCA5NjgxOSwgOTY4MjcsIDk2ODM3LCA5Njg0NywgOTY4NTQsIDk2ODYxLCA5Njg2NywgOTY4NzEsIDk2ODc4LCAKLSAgICA5Njg4OCwgOTY4OTQsIDk2OTA3LCA5NjkxMSwgOTY5MTUsIDk2OTIyLCA5NjkyNiwgOTY5MzMsIDk2OTQzLCA5Njk0NywgCi0gICAgOTY5NTEsIDk2OTU1LCA5Njk1OSwgOTY5NjMsIDk2OTcwLCA5Njk3NCwgOTY5ODEsIDk2OTg4LCA5Njk5NSwgOTcwMDQsIAotICAgIDk3MDEzLCA5NzAyMywgOTcwMzAsIDk3MDM3LCA5NzA0NCwgOTcwNTQsIDk3MDYxLCA5NzA3MSwgOTcwNzgsIDk3MDg4LCAKLSAgICA5NzA5NSwgOTcxMDIsIDk3MTEyLCA5NzEyMiwgOTcxMjksIDk3MTM1LCA5NzE0MywgOTcxNTEsIDk3MTU3LCA5NzE2MywgCi0gICAgOTcxNjcsIDk3MTcxLCA5NzE3OCwgOTcxODYsIDk3MTkyLCA5NzE5NiwgOTcyMDAsIDk3MjA0LCA5NzIxMSwgOTcyMjMsIAotICAgIDk3MjI2LCA5NzIzMywgOTcyMzksIDk3MjQzLCA5NzI0NywgOTcyNTEsIDk3MjU1LCA5NzI1OSwgOTcyNjMsIDk3MjY3LCAKLSAgICA5NzI3MSwgOTcyNzUsIDk3Mjc5LCA5NzI4NiwgOTcyOTAsIDk3Mjk2LCA5NzMwMCwgOTczMDQsIDk3MzA4LCA5NzMxNCwgCi0gICAgOTczMjEsIDk3MzI4LCA5NzMzNSwgOTczNDYsIDk3MzU0LCA5NzM1OCwgOTczNjQsIDk3MzczLCA5NzM4MCwgOTczODYsIAotICAgIDk3Mzg5LCA5NzM5MywgOTczOTcsIDk3NDAzLCA5NzQxMiwgOTc0MjAsIDk3NDI0LCA5NzQzMCwgOTc0MzQsIDk3NDM4LCAKLSAgICA5NzQ0MiwgOTc0NDgsIDk3NDU1LCA5NzQ2MSwgOTc0NjUsIDk3NDcxLCA5NzQ3NSwgOTc0NzksIDk3NDg4LCA5NzUwMCwgCi0gICAgOTc1MDQsIDk3NTExLCA5NzUxOCwgOTc1MjgsIDk3NTM1LCA5NzU0NywgOTc1NTQsIDk3NTYxLCA5NzU2OCwgOTc1NzksIAotICAgIDk3NTg5LCA5NzYwMiwgOTc2MTIsIDk3NjE5LCA5NzYyMywgOTc2MjcsIDk3NjMxLCA5NzYzNSwgOTc2NDQsIDk3NjUzLCAKLSAgICA5NzY2MiwgOTc2NzksIDk3Njg4LCA5NzY5NCwgOTc3MDEsIDk3NzA5LCA5NzcyMiwgOTc3MjYsIDk3NzM1LCA5Nzc0NCwgCi0gICAgOTc3NTMsIDk3NzYyLCA5Nzc3MywgOTc3ODIsIDk3NzkxLCA5NzgwMCwgOTc4MDksIDk3ODE4LCA5NzgyNywgOTc4MzcsIAotICAgIDk3ODQwLCA5Nzg0NCwgOTc4NDgsIDk3ODUyLCA5Nzg1NiwgOTc4NjAsIDk3ODY2LCA5Nzg3MywgOTc4ODAsIDk3ODg3LCAKLSAgICA5Nzg5MywgOTc4OTksIDk3OTA2LCA5NzkxMiwgOTc5MTksIDk3OTI3LCA5NzkzMSwgOTc5MzgsIDk3OTQ1LCA5Nzk1MiwgCi0gICAgOTc5NjAsIDk3OTYzLCA5Nzk2NywgOTc5NzEsIDk3OTc1LCA5Nzk3OSwgOTc5ODUsIDk3OTg5LCA5Nzk5NSwgOTgwMDIsIAotICAgIDk4MDA5LCA5ODAxNSwgOTgwMjIsIDk4MDI5LCA5ODAzNiwgOTgwNDMsIDk4MDUwLCA5ODA1NywgOTgwNjQsIDk4MDcxLCAKLSAgICA5ODA3OCwgOTgwODUsIDk4MDkyLCA5ODA5OSwgOTgxMDYsIDk4MTEzLCA5ODExOSwgOTgxMjMsIDk4MTMyLCA5ODEzNiwgCi0gICAgOTgxNDAsIDk4MTQ0LCA5ODE0OCwgOTgxNTQsIDk4MTYxLCA5ODE2OCwgOTgxNzUsIDk4MTgyLCA5ODE4OSwgOTgxOTUsIAotICAgIDk4MjAzLCA5ODIwNywgOTgyMTEsIDk4MjE1LCA5ODIxOSwgOTgyMjUsIDk4MjQyLCA5ODI1OSwgOTgyNjMsIDk4MjY3LCAKLSAgICA5ODI3MSwgOTgyNzUsIDk4Mjc5LCA5ODI4MywgOTgyODksIDk4Mjk2LCA5ODMwMCwgOTgzMDYsIDk4MzEzLCA5ODMyMCwgCi0gICAgOTgzMjcsIDk4MzM0LCA5ODM0MSwgOTgzNTAsIDk4MzU3LCA5ODM2NCwgOTgzNzEsIDk4Mzc4LCA5ODM4MiwgOTgzODYsIAotICAgIDk4MzkyLCA5ODQwNCwgOTg0MDgsIDk4NDEyLCA5ODQyMSwgOTg0MjUsIDk4NDI5LCA5ODQzMywgOTg0MzksIDk4NDQzLCAKLSAgICA5ODQ0NywgOTg0NTYsIDk4NDYwLCA5ODQ2NCwgOTg0NjgsIDk4NDc1LCA5ODQ3OSwgOTg0ODMsIDk4NDg3LCA5ODQ5MSwgCi0gICAgOTg0OTUsIDk4NDk5LCA5ODUwMywgOTg1MDcsIDk4NTEzLCA5ODUyMCwgOTg1MjcsIDk4NTMzLCA5ODUzNywgOTg1NTQsIAotICAgIDk4NTYwLCA5ODU2NCwgOTg1NzAsIDk4NTc2LCA5ODU4MiwgOTg1ODgsIDk4NTk0LCA5ODYwMCwgOTg2MDQsIDk4NjA4LCAKLSAgICA5ODYxMiwgOTg2MTgsIDk4NjIyLCA5ODYyOCwgOTg2MzIsIDk4NjM2LCA5ODY0MywgOTg2NTAsIDk4NjY3LCA5ODY3MSwgCi0gICAgOTg2NzUsIDk4Njc5LCA5ODY4MywgOTg2ODcsIDk4Njk5LCA5ODcwMiwgOTg3MDcsIDk4NzEyLCA5ODcyNywgOTg3MzcsIAotICAgIDk4NzQ5LCA5ODc1MywgOTg3NTcsIDk4NzYxLCA5ODc2NywgOTg3NzQsIDk4NzgxLCA5ODc5MSwgOTg4MDMsIDk4ODA5LCAKLSAgICA5ODgxNSwgOTg4MjQsIDk4ODI4LCA5ODgzMiwgOTg4MzksIDk4ODQ5LCA5ODg1NiwgOTg4NjIsIDk4ODY2LCA5ODg3MCwgCi0gICAgOTg4NzcsIDk4ODgzLCA5ODg4NywgOTg4OTMsIDk4ODk3LCA5ODkwNSwgOTg5MTEsIDk4OTE1LCA5ODkyMywgOTg5MzEsIAotICAgIDk4OTM4LCA5ODk0NCwgOTg5NTEsIDk4OTU4LCA5ODk2OCwgOTg5NzgsIDk4OTgyLCA5ODk4NiwgOTg5OTAsIDk4OTk0LCAKLSAgICA5OTAwMCwgOTkwMDcsIDk5MDEzLCA5OTAyMCwgOTkwMjcsIDk5MDM0LCA5OTA0MywgOTkwNTAsIDk5MDU3LCA5OTA2MywgCi0gICAgOTkwNzAsIDk5MDc3LCA5OTA4NCwgOTkwOTEsIDk5MDk4LCA5OTEwNSwgOTkxMTEsIDk5MTE4LCA5OTEyNSwgOTkxMzIsIAotICAgIDk5MTQxLCA5OTE0OCwgOTkxNTUsIDk5MTU5LCA5OTE2NSwgOTkxNjksIDk5MTc1LCA5OTE4MiwgOTkxODksIDk5MTk2LCAKLSAgICA5OTIwMCwgOTkyMDQsIDk5MjA4LCA5OTIxMiwgOTkyMTYsIDk5MjIzLCA5OTIyNywgOTkyMzEsIDk5MjM3LCA5OTI0NSwgCi0gICAgOTkyNDksIDk5MjUzLCA5OTI1NywgOTkyNjEsIDk5MjY4LCA5OTI3MiwgOTkyNzYsIDk5Mjg0LCA5OTI4OCwgOTkyOTIsIAotICAgIDk5Mjk2LCA5OTMwMCwgOTkzMDYsIDk5MzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5OTMxNCwgOTkzMjAsIDk5MzI2LCA5OTMzMywgOTkzNDAsIDk5MzQ3LCA5OTM1NCwgOTkzNjEsIDk5MzY4LCAKLSAgICA5OTM3NCwgOTkzODEsIDk5Mzg4LCA5OTM5NSwgOTk0MDIsIDk5NDA5LCA5OTQxNiwgOTk0MjIsIDk5NDI4LCA5OTQzNCwgCi0gICAgOTk0NDAsIDk5NDQ2LCA5OTQ1MiwgOTk0NTgsIDk5NDY0LCA5OTQ3MCwgOTk0NzcsIDk5NDg0LCA5OTQ5MSwgOTk0OTgsIAotICAgIDk5NTA1LCA5OTUxMiwgOTk1MTgsIDk5NTI0LCA5OTUzMCwgOTk1MzcsIDk5NTQ0LCA5OTU1MCwgOTk1NTYsIDk5NTY1LCAKLSAgICA5OTU3MiwgOTk1NzksIDk5NTg2LCA5OTU5MywgOTk2MDAsIDk5NjA3LCA5OTYxMywgOTk2MTksIDk5NjI1LCA5OTYzNCwgCi0gICAgOTk2NDEsIDk5NjQ4LCA5OTY1OSwgOTk2NzAsIDk5Njc2LCA5OTY4MiwgOTk2ODgsIDk5Njk3LCA5OTcwNCwgOTk3MTEsIAotICAgIDk5NzIxLCA5OTczMSwgOTk3NDIsIDk5NzUzLCA5OTc2NSwgOTk3NzgsIDk5Nzg5LCA5OTgwMCwgOTk4MTIsIDk5ODI1LCAKLSAgICA5OTgzNiwgOTk4NDcsIDk5ODU4LCA5OTg2OSwgOTk4ODAsIDk5ODkyLCA5OTkwMCwgOTk5MDgsIDk5OTE3LCA5OTkyNiwgCi0gICAgOTk5MzUsIDk5OTQxLCA5OTk0NywgOTk5NTMsIDk5OTYwLCA5OTk3MCwgOTk5NzcsIDk5OTg3LCA5OTk5MiwgOTk5OTcsIAotICAgIDEwMDAwMywgMTAwMDA5LCAxMDAwMTcsIDEwMDAyNSwgMTAwMDM0LCAxMDAwNDUsIDEwMDA1NiwgMTAwMDY0LCAxMDAwNzIsIAotICAgIDEwMDA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMDkwLCAxMDAxMDEsIDEwMDEwOCwgCi0gICAgMTAwMTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAxMjQsIDEwMDEyOCwgMTAwMTMyLCAKLSAgICAxMDAxMzYsIDEwMDE0MCwgMTAwMTQ0LCAxMDAxNDgsIDEwMDE1MiwgMTAwMTU2LCAxMDAxNjAsIDEwMDE2NCwgMTAwMTY4LCAKLSAgICAxMDAxNzIsIDEwMDE3NiwgMTAwMTgwLCAxMDAxODQsIDEwMDE4OCwgMTAwMTkyLCAxMDAxOTYsIDEwMDIwMCwgMTAwMjA0LCAKLSAgICAxMDAyMDgsIDEwMDIxMiwgMTAwMjE2LCAxMDAyMjAsIDEwMDIyNCwgMTAwMjI4LCAxMDAyMzIsIDEwMDIzNiwgMTAwMjQwLCAKLSAgICAxMDAyNDQsIDEwMDI0OCwgMTAwMjUyLCAxMDAyNTYsIDEwMDI2MCwgMTAwMjY0LCAxMDAyNjgsIDEwMDI3MiwgMTAwMjc2LCAKLSAgICAxMDAyODAsIDEwMDI4NCwgMTAwMjg4LCAxMDAyOTIsIDEwMDI5NiwgMTAwMzAwLCAxMDAzMDQsIDEwMDMwOCwgMTAwMzEyLCAKLSAgICAxMDAzMTYsIDEwMDMyMCwgMTAwMzI0LCAxMDAzMjgsIDEwMDMzMiwgMTAwMzM2LCAxMDAzNDAsIDEwMDM0NCwgMTAwMzQ4LCAKLSAgICAxMDAzNTIsIDEwMDM1NiwgMTAwMzYwLCAxMDAzNjQsIDEwMDM2OCwgMTAwMzcyLCAxMDAzNzYsIDEwMDM4MCwgMTAwMzg0LCAKLSAgICAxMDAzODgsIDEwMDM5MiwgMTAwMzk2LCAxMDA0MDAsIDEwMDQwNCwgMTAwNDA4LCAxMDA0MTIsIDEwMDQxNiwgMTAwNDIwLCAKLSAgICAxMDA0MjQsIDEwMDQyOCwgMTAwNDMyLCAxMDA0MzYsIDEwMDQ0MCwgMTAwNDQ0LCAxMDA0NDgsIDEwMDQ1MiwgMTAwNDU2LCAKLSAgICAxMDA0NjAsIDEwMDQ2NCwgMTAwNDY4LCAxMDA0NzIsIDEwMDQ3NiwgMTAwNDgwLCAxMDA0ODQsIDEwMDQ4OCwgMTAwNDkyLCAKLSAgICAxMDA0OTYsIDEwMDUwMCwgMTAwNTA0LCAxMDA1MDgsIDEwMDUxMiwgMTAwNTE2LCAxMDA1MjAsIDEwMDUyNCwgMTAwNTI4LCAKLSAgICAxMDA1MzIsIDEwMDUzNiwgMTAwNTQwLCAxMDA1NDQsIDEwMDU0OCwgMTAwNTUyLCAxMDA1NTYsIDEwMDU2MCwgMTAwNTY0LCAKLSAgICAxMDA1NjgsIDEwMDU3MiwgMTAwNTc2LCAxMDA1ODAsIDEwMDU4NCwgMTAwNTg4LCAxMDA1OTIsIDEwMDU5NiwgMTAwNjAwLCAKLSAgICAxMDA2MDQsIDEwMDYwOCwgMTAwNjEyLCAxMDA2MTYsIDEwMDYyMCwgMTAwNjI0LCAxMDA2MjgsIDEwMDYzMiwgMTAwNjM2LCAKLSAgICAxMDA2NDAsIDEwMDY0NCwgMTAwNjQ4LCAxMDA2NTIsIDEwMDY1NiwgMTAwNjYwLCAxMDA2NjQsIDEwMDY2OCwgMTAwNjcyLCAKLSAgICAxMDA2NzYsIDEwMDY4MCwgMTAwNjg0LCAxMDA2ODgsIDEwMDY5MiwgMTAwNjk2LCAxMDA3MDAsIDEwMDcwNCwgMTAwNzA4LCAKLSAgICAxMDA3MTIsIDEwMDcxNiwgMTAwNzIwLCAxMDA3MjQsIDEwMDcyOCwgMTAwNzMyLCAxMDA3MzYsIDEwMDc0MCwgMTAwNzQ0LCAKLSAgICAxMDA3NDgsIDEwMDc1MiwgMTAwNzU2LCAxMDA3NjAsIDEwMDc2NCwgMTAwNzY4LCAxMDA3NzIsIDEwMDc3NiwgMTAwNzgwLCAKLSAgICAxMDA3ODQsIDEwMDc4OCwgMTAwNzkyLCAxMDA3OTYsIDEwMDgwMCwgMTAwODA0LCAxMDA4MDgsIDEwMDgxMiwgMTAwODE2LCAKLSAgICAxMDA4MjAsIDEwMDgyNCwgMTAwODI4LCAxMDA4MzIsIDEwMDgzNiwgMTAwODQwLCAxMDA4NDQsIDEwMDg0OCwgMTAwODUyLCAKLSAgICAxMDA4NTYsIDEwMDg2MCwgMTAwODY0LCAxMDA4NjgsIDEwMDg3MiwgMTAwODc2LCAxMDA4ODAsIDEwMDg4NCwgMTAwODg4LCAKLSAgICAxMDA4OTIsIDEwMDg5NiwgMTAwOTAwLCAxMDA5MDQsIDEwMDkwOCwgMTAwOTEyLCAxMDA5MTYsIDEwMDkyMCwgMTAwOTI0LCAKLSAgICAxMDA5MjgsIDEwMDkzMiwgMTAwOTM2LCAxMDA5NDAsIDEwMDk0NCwgMTAwOTQ4LCAxMDA5NTIsIDEwMDk1NiwgMTAwOTYwLCAKLSAgICAxMDA5NjQsIDEwMDk2OCwgMTAwOTcyLCAxMDA5NzYsIDEwMDk4MCwgMTAwOTg0LCAxMDA5ODgsIDEwMDk5MiwgMTAwOTk2LCAKLSAgICAxMDEwMDAsIDEwMTAwNCwgMTAxMDA4LCAxMDEwMTIsIDEwMTAxNiwgMTAxMDIwLCAxMDEwMjQsIDEwMTAyOCwgMTAxMDMyLCAKLSAgICAxMDEwMzYsIDEwMTA0MCwgMTAxMDQ0LCAxMDEwNDgsIDEwMTA1MiwgMTAxMDU2LCAxMDEwNjAsIDEwMTA2NCwgMTAxMDY4LCAKLSAgICAxMDEwNzIsIDEwMTA3NiwgMTAxMDgwLCAxMDEwODQsIDEwMTA4OCwgMTAxMDkyLCAxMDEwOTYsIDEwMTEwMCwgMTAxMTA0LCAKLSAgICAxMDExMDgsIDEwMTExMiwgMTAxMTE2LCAxMDExMjAsIDEwMTEyNCwgMTAxMTI4LCAxMDExMzIsIDEwMTEzNiwgMTAxMTQwLCAKLSAgICAxMDExNDQsIDEwMTE0OCwgMTAxMTUyLCAxMDExNTYsIDEwMTE2MCwgMTAxMTY0LCAxMDExNjgsIDEwMTE3MiwgMTAxMTc2LCAKLSAgICAxMDExODAsIDEwMTE4NCwgMTAxMTg4LCAxMDExOTIsIDEwMTE5NiwgMTAxMjAwLCAxMDEyMDQsIDEwMTIwOCwgMTAxMjEyLCAKLSAgICAxMDEyMTYsIDEwMTIyMCwgMTAxMjI0LCAxMDEyMjgsIDEwMTIzMiwgMTAxMjM2LCAxMDEyNDAsIDEwMTI0NCwgMTAxMjQ4LCAKLSAgICAxMDEyNTIsIDEwMTI1NiwgMTAxMjYwLCAxMDEyNjQsIDEwMTI2OCwgMTAxMjcyLCAxMDEyNzYsIDEwMTI4MCwgMTAxMjg0LCAKLSAgICAxMDEyODgsIDEwMTI5MiwgMTAxMjk2LCAxMDEzMDAsIDEwMTMwNCwgMTAxMzA4LCAxMDEzMTIsIDEwMTMxNiwgMTAxMzIwLCAKLSAgICAxMDEzMjQsIDEwMTMyOCwgMTAxMzMyLCAxMDEzMzYsIDEwMTM0MCwgMTAxMzQ0LCAxMDEzNDgsIDEwMTM1MiwgMTAxMzU2LCAKLSAgICAxMDEzNjAsIDEwMTM2NCwgMTAxMzY4LCAxMDEzNzIsIDEwMTM3NiwgMTAxMzgwLCAxMDEzODQsIDEwMTM4OCwgMTAxMzkyLCAKLSAgICAxMDEzOTYsIDEwMTQwMCwgMTAxNDA0LCAxMDE0MDgsIDEwMTQxMiwgMTAxNDE2LCAxMDE0MjAsIDEwMTQyNCwgMTAxNDI4LCAKLSAgICAxMDE0MzIsIDEwMTQzNiwgMTAxNDQwLCAxMDE0NDQsIDEwMTQ0OCwgMTAxNDUyLCAxMDE0NTYsIDEwMTQ2MCwgMTAxNDY0LCAKLSAgICAxMDE0NjgsIDEwMTQ3MiwgMTAxNDc2LCAxMDE0ODAsIDEwMTQ4NCwgMTAxNDg4LCAxMDE0OTIsIDEwMTQ5NiwgMTAxNTAwLCAKLSAgICAxMDE1MDQsIDEwMTUwOCwgMTAxNTEyLCAxMDE1MTYsIDEwMTUyMCwgMTAxNTI0LCAxMDE1MjgsIDEwMTUzMiwgMTAxNTM2LCAKLSAgICAxMDE1NDAsIDEwMTU0NCwgMTAxNTQ4LCAxMDE1NTIsIDEwMTU1NiwgMTAxNTYwLCAxMDE1NjQsIDEwMTU2OCwgMTAxNTcyLCAKLSAgICAxMDE1NzYsIDEwMTU4MCwgMTAxNTg0LCAxMDE1ODgsIDEwMTU5MiwgMTAxNTk2LCAxMDE2MDAsIDEwMTYwNCwgMTAxNjA4LCAKLSAgICAxMDE2MTIsIDEwMTYxNiwgMTAxNjIwLCAxMDE2MjQsIDEwMTYyOCwgMTAxNjMyLCAxMDE2MzYsIDEwMTY0MCwgMTAxNjQ0LCAKLSAgICAxMDE2NDgsIDEwMTY1MiwgMTAxNjU2LCAxMDE2NjAsIDEwMTY2NCwgMTAxNjY4LCAxMDE2NzIsIDEwMTY3NiwgMTAxNjgwLCAKLSAgICAxMDE2ODQsIDEwMTY4OCwgMTAxNjkyLCAxMDE2OTYsIDEwMTcwMCwgMTAxNzA0LCAxMDE3MDgsIDEwMTcxMiwgMTAxNzE2LCAKLSAgICAxMDE3MjAsIDEwMTcyNCwgMTAxNzI4LCAxMDE3MzIsIDEwMTczNiwgMTAxNzQwLCAxMDE3NDQsIDEwMTc0OCwgMTAxNzUyLCAKLSAgICAxMDE3NTYsIDEwMTc2MCwgMTAxNzY0LCAxMDE3NjgsIDEwMTc3MiwgMTAxNzc2LCAxMDE3ODAsIDEwMTc4NCwgMTAxNzg4LCAKLSAgICAxMDE3OTIsIDEwMTc5NiwgMTAxODAwLCAxMDE4MDQsIDEwMTgwOCwgMTAxODEyLCAxMDE4MTYsIDEwMTgyMCwgMTAxODI0LCAKLSAgICAxMDE4MjgsIDEwMTgzMiwgMTAxODM2LCAxMDE4NDAsIDEwMTg0NCwgMTAxODQ4LCAxMDE4NTIsIDEwMTg1NiwgMTAxODYwLCAKLSAgICAxMDE4NjQsIDEwMTg2OCwgMTAxODcyLCAxMDE4NzYsIDEwMTg4MCwgMTAxODg0LCAxMDE4ODgsIDEwMTg5MiwgMTAxODk2LCAKLSAgICAxMDE5MDAsIDEwMTkwNCwgMTAxOTA4LCAxMDE5MTIsIDEwMTkxNiwgMTAxOTIwLCAxMDE5MjQsIDEwMTkyOCwgMTAxOTMyLCAKLSAgICAxMDE5MzYsIDEwMTk0MCwgMTAxOTQ0LCAxMDE5NDgsIDEwMTk1MiwgMTAxOTU2LCAxMDE5NjAsIDEwMTk2NCwgMTAxOTY4LCAKLSAgICAxMDE5NzIsIDEwMTk3NiwgMTAxOTgwLCAxMDE5ODQsIDEwMTk4OCwgMTAxOTkyLCAxMDE5OTYsIDEwMjAwMCwgMTAyMDA0LCAKLSAgICAxMDIwMDgsIDEwMjAxMiwgMTAyMDE2LCAxMDIwMjAsIDEwMjAyNCwgMTAyMDI4LCAxMDIwMzIsIDEwMjAzNiwgMTAyMDQwLCAKLSAgICAxMDIwNDQsIDEwMjA0OCwgMTAyMDUyLCAxMDIwNTYsIDEwMjA2MCwgMTAyMDY0LCAxMDIwNjgsIDEwMjA3MiwgMTAyMDc2LCAKLSAgICAxMDIwODAsIDEwMjA4NCwgMTAyMDg4LCAxMDIwOTIsIDEwMjA5NiwgMTAyMTAwLCAxMDIxMDQsIDEwMjEwOCwgMTAyMTEyLCAKLSAgICAxMDIxMTYsIDEwMjEyMCwgMTAyMTI0LCAxMDIxMjgsIDEwMjEzMiwgMTAyMTM2LCAxMDIxNDAsIDEwMjE0NCwgMTAyMTQ4LCAKLSAgICAxMDIxNTIsIDEwMjE1NiwgMTAyMTYwLCAxMDIxNjQsIDEwMjE2OCwgMTAyMTcyLCAxMDIxNzYsIDEwMjE4MCwgMTAyMTg0LCAKLSAgICAxMDIxODgsIDEwMjE5MiwgMTAyMTk2LCAxMDIyMDAsIDEwMjIwNCwgMTAyMjA4LCAxMDIyMTIsIDEwMjIxNiwgMTAyMjIwLCAKLSAgICAxMDIyMjQsIDEwMjIyOCwgMTAyMjMyLCAxMDIyMzYsIDEwMjI0MCwgMTAyMjQ0LCAxMDIyNDgsIDEwMjI1MiwgMTAyMjU2LCAKLSAgICAxMDIyNjAsIDEwMjI2NCwgMTAyMjY4LCAxMDIyNzIsIDEwMjI3NiwgMTAyMjgwLCAxMDIyODQsIDEwMjI4OCwgMTAyMjkyLCAKLSAgICAxMDIyOTYsIDEwMjMwMCwgMTAyMzA0LCAxMDIzMDgsIDEwMjMxMiwgMTAyMzE2LCAxMDIzMjAsIDEwMjMyNCwgMTAyMzI4LCAKLSAgICAxMDIzMzIsIDEwMjMzNiwgMTAyMzQwLCAxMDIzNDQsIDEwMjM0OCwgMTAyMzUyLCAxMDIzNTYsIDEwMjM2MCwgMTAyMzY0LCAKLSAgICAxMDIzNjgsIDEwMjM3MiwgMTAyMzc2LCAxMDIzODAsIDEwMjM4NCwgMTAyMzg4LCAxMDIzOTIsIDEwMjM5NiwgMTAyNDAwLCAKLSAgICAxMDI0MDQsIDEwMjQwOCwgMTAyNDEyLCAxMDI0MTYsIDEwMjQyMCwgMTAyNDI0LCAxMDI0MjgsIDEwMjQzMiwgMTAyNDM2LCAKLSAgICAxMDI0NDAsIDEwMjQ0NCwgMTAyNDQ4LCAxMDI0NTIsIDEwMjQ1NiwgMTAyNDYwLCAxMDI0NjQsIDEwMjQ2OCwgMTAyNDcyLCAKLSAgICAxMDI0NzYsIDEwMjQ4MCwgMTAyNDg0LCAxMDI0ODgsIDEwMjQ5MiwgMTAyNDk2LCAxMDI1MDAsIDEwMjUwNCwgMTAyNTA4LCAKLSAgICAxMDI1MTIsIDEwMjUxNiwgMTAyNTIwLCAxMDI1MjQsIDEwMjUyOCwgMTAyNTMyLCAxMDI1MzYsIDEwMjU0MCwgMTAyNTQ0LCAKLSAgICAxMDI1NDgsIDEwMjU1MiwgMTAyNTU2LCAxMDI1NjAsIDEwMjU2NCwgMTAyNTY4LCAxMDI1NzIsIDEwMjU3NiwgMTAyNTgwLCAKLSAgICAxMDI1ODQsIDEwMjU4OCwgMTAyNTkyLCAxMDI1OTYsIDEwMjYwMCwgMTAyNjA0LCAxMDI2MDgsIDEwMjYxMiwgMTAyNjE2LCAKLSAgICAxMDI2MjAsIDEwMjYyNCwgMTAyNjI4LCAxMDI2MzIsIDEwMjYzNiwgMTAyNjQwLCAxMDI2NDQsIDEwMjY0OCwgMTAyNjUyLCAKLSAgICAxMDI2NTYsIDEwMjY2MCwgMTAyNjY0LCAxMDI2NjgsIDEwMjY3MiwgMTAyNjc2LCAxMDI2ODAsIDEwMjY4NCwgMTAyNjg4LCAKLSAgICAxMDI2OTIsIDEwMjY5NiwgMTAyNzAwLCAxMDI3MDQsIDEwMjcwOCwgMTAyNzEyLCAxMDI3MTYsIDEwMjcyMCwgMTAyNzI0LCAKLSAgICAxMDI3MjgsIDEwMjczMiwgMTAyNzM2LCAxMDI3NDAsIDEwMjc0NCwgMTAyNzQ4LCAxMDI3NTIsIDEwMjc1NiwgMTAyNzYwLCAKLSAgICAxMDI3NjQsIDEwMjc2OCwgMTAyNzcyLCAxMDI3NzYsIDEwMjc4MCwgMTAyNzg0LCAxMDI3ODgsIDEwMjc5MiwgMTAyNzk2LCAKLSAgICAxMDI4MDAsIDEwMjgwNCwgMTAyODA4LCAxMDI4MTIsIDEwMjgxNiwgMTAyODIwLCAxMDI4MjQsIDEwMjgyOCwgMTAyODMyLCAKLSAgICAxMDI4MzYsIDEwMjg0MCwgMTAyODQ0LCAxMDI4NDgsIDEwMjg1MiwgMTAyODU2LCAxMDI4NjAsIDEwMjg2NCwgMTAyODY4LCAKLSAgICAxMDI4NzIsIDEwMjg3NiwgMTAyODgwLCAxMDI4ODQsIDEwMjg4OCwgMTAyODkyLCAxMDI4OTYsIDEwMjkwMCwgMTAyOTA0LCAKLSAgICAxMDI5MDgsIDEwMjkxMiwgMTAyOTE2LCAxMDI5MjAsIDEwMjkyNCwgMTAyOTI4LCAxMDI5MzIsIDEwMjkzNiwgMTAyOTQwLCAKLSAgICAxMDI5NDQsIDEwMjk0OCwgMTAyOTUyLCAxMDI5NTYsIDEwMjk2MCwgMTAyOTY0LCAxMDI5NjgsIDEwMjk3MiwgMTAyOTc2LCAKLSAgICAxMDI5ODAsIDEwMjk4NCwgMTAyOTg4LCAxMDI5OTIsIDEwMjk5NiwgMTAzMDAwLCAxMDMwMDQsIDEwMzAwOCwgMTAzMDEyLCAKLSAgICAxMDMwMTYsIDEwMzAyMCwgMTAzMDI0LCAxMDMwMjgsIDEwMzAzMiwgMTAzMDM2LCAxMDMwNDAsIDEwMzA0NCwgMTAzMDQ4LCAKLSAgICAxMDMwNTIsIDEwMzA1NiwgMTAzMDYwLCAxMDMwNjQsIDEwMzA2OCwgMTAzMDcyLCAxMDMwNzYsIDEwMzA4MCwgMTAzMDg0LCAKLSAgICAxMDMwODgsIDEwMzA5MiwgMTAzMDk2LCAxMDMxMDAsIDEwMzEwNCwgMTAzMTA4LCAxMDMxMTIsIDEwMzExNiwgMTAzMTIwLCAKLSAgICAxMDMxMjQsIDEwMzEyOCwgMTAzMTMyLCAxMDMxMzYsIDEwMzE0MCwgMTAzMTQ0LCAxMDMxNDgsIDEwMzE1MiwgMTAzMTU2LCAKLSAgICAxMDMxNjAsIDEwMzE2NCwgMTAzMTY4LCAxMDMxNzIsIDEwMzE3NiwgMTAzMTgwLCAxMDMxODQsIDEwMzE4OCwgMTAzMTkyLCAKLSAgICAxMDMxOTYsIDEwMzIwMCwgMTAzMjA0LCAxMDMyMDgsIDEwMzIxMiwgMTAzMjE2LCAxMDMyMjAsIDEwMzIyNCwgMTAzMjI4LCAKLSAgICAxMDMyMzIsIDEwMzIzNiwgMTAzMjQwLCAxMDMyNDQsIDEwMzI0OCwgMTAzMjUyLCAxMDMyNTYsIDEwMzI2MCwgMTAzMjY0LCAKLSAgICAxMDMyNjgsIDEwMzI3MiwgMTAzMjc2LCAxMDMyODAsIDEwMzI4NCwgMTAzMjg4LCAxMDMyOTIsIDEwMzI5NiwgMTAzMzAwLCAKLSAgICAxMDMzMDQsIDEwMzMwOCwgMTAzMzEyLCAxMDMzMTYsIDEwMzMyMCwgMTAzMzI0LCAxMDMzMjgsIDEwMzMzMiwgMTAzMzM2LCAKLSAgICAxMDMzNDAsIDEwMzM0NCwgMTAzMzQ4LCAxMDMzNTIsIDEwMzM1NiwgMTAzMzYwLCAxMDMzNjQsIDEwMzM2OCwgMTAzMzcyLCAKLSAgICAxMDMzNzYsIDEwMzM4MCwgMTAzMzg0LCAxMDMzODgsIDEwMzM5MiwgMTAzMzk2LCAxMDM0MDAsIDEwMzQwNCwgMTAzNDA4LCAKLSAgICAxMDM0MTIsIDEwMzQxNiwgMTAzNDIwLCAxMDM0MjQsIDEwMzQyOCwgMTAzNDMyLCAxMDM0MzYsIDEwMzQ0MCwgMTAzNDQ0LCAKLSAgICAxMDM0NDgsIDEwMzQ1MiwgMTAzNDU2LCAxMDM0NjAsIDEwMzQ2NCwgMTAzNDY4LCAxMDM0NzIsIDEwMzQ3NiwgMTAzNDgwLCAKLSAgICAxMDM0ODQsIDEwMzQ4OCwgMTAzNDkyLCAxMDM0OTYsIDEwMzUwMCwgMTAzNTA0LCAxMDM1MDgsIDEwMzUxMiwgMTAzNTE2LCAKLSAgICAxMDM1MjAsIDEwMzUyNCwgMTAzNTI4LCAxMDM1MzIsIDEwMzUzNiwgMTAzNTQwLCAxMDM1NDQsIDEwMzU0OCwgMTAzNTUyLCAKLSAgICAxMDM1NTYsIDEwMzU2MCwgMTAzNTY0LCAxMDM1NjgsIDEwMzU3MiwgMTAzNTc2LCAxMDM1ODAsIDEwMzU4NCwgMTAzNTg4LCAKLSAgICAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAKLSAgICAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAKLSAgICAxMDM2NjQsIDEwMzY2OCwgMTAzNjcyLCAxMDM2NzYsIDEwMzY4MCwgMTAzNjg0LCAxMDM2ODgsIDEwMzY5MiwgMTAzNjk2LCAKLSAgICAxMDM3MDAsIDEwMzcwNCwgMTAzNzA4LCAxMDM3MTIsIDEwMzcxNiwgMTAzNzIwLCAxMDM3MjQsIDEwMzcyOCwgMTAzNzMyLCAKLSAgICAxMDM3MzYsIDEwMzc0MCwgMTAzNzQ0LCAxMDM3NDgsIDEwMzc1MiwgMTAzNzU2LCAxMDM3NjAsIDEwMzc2NCwgMTAzNzY4LCAKLSAgICAxMDM3NzIsIDEwMzc3NiwgMTAzNzgwLCAxMDM3ODQsIDEwMzc4OCwgMTAzNzkyLCAxMDM3OTYsIDEwMzgwMCwgMTAzODA0LCAKLSAgICAxMDM4MDgsIDEwMzgxMiwgMTAzODE2LCAxMDM4MjAsIDEwMzgyNCwgMTAzODI4LCAxMDM4MzIsIDEwMzgzNiwgMTAzODQwLCAKLSAgICAxMDM4NDQsIDEwMzg0OCwgMTAzODUyLCAxMDM4NTYsIDEwMzg2MCwgMTAzODY0LCAxMDM4NjgsIDEwMzg3MiwgMTAzODc2LCAKLSAgICAxMDM4ODAsIDEwMzg4NCwgMTAzODg4LCAxMDM4OTIsIDEwMzg5NiwgMTAzOTAwLCAxMDM5MDQsIDEwMzkwOCwgMTAzOTEyLCAKLSAgICAxMDM5MTYsIDEwMzkyMCwgMTAzOTI0LCAxMDM5MjgsIDEwMzkzMiwgMTAzOTM2LCAxMDM5NDAsIDEwMzk0NCwgMTAzOTQ4LCAKLSAgICAxMDM5NTIsIDEwMzk1NiwgMTAzOTYwLCAxMDM5NjQsIDEwMzk2OCwgMTAzOTcyLCAxMDM5NzYsIDEwMzk4MCwgMTAzOTg0LCAKLSAgICAxMDM5ODgsIDEwMzk5MiwgMTAzOTk2LCAxMDQwMDAsIDEwNDAwNCwgMTA0MDA4LCAxMDQwMTIsIDEwNDAxNiwgMTA0MDIwLCAKLSAgICAxMDQwMjQsIDEwNDAyOCwgMTA0MDMyLCAxMDQwMzYsIDEwNDA0MCwgMTA0MDQ0LCAxMDQwNDgsIDEwNDA1MiwgMTA0MDU2LCAKLSAgICAxMDQwNjAsIDEwNDA2NCwgMTA0MDY4LCAxMDQwNzIsIDEwNDA3NiwgMTA0MDgwLCAxMDQwODQsIDEwNDA4OCwgMTA0MDkyLCAKLSAgICAxMDQwOTYsIDEwNDEwMCwgMTA0MTA0LCAxMDQxMDgsIDEwNDExMiwgMTA0MTE2LCAxMDQxMjAsIDEwNDEyNCwgMTA0MTI4LCAKLSAgICAxMDQxMzIsIDEwNDEzNiwgMTA0MTQwLCAxMDQxNDQsIDEwNDE0OCwgMTA0MTUyLCAxMDQxNTYsIDEwNDE2MCwgMTA0MTY0LCAKLSAgICAxMDQxNjgsIDEwNDE3MiwgMTA0MTc2LCAxMDQxODAsIDEwNDE4NCwgMTA0MTg4LCAxMDQxOTIsIDEwNDE5NiwgMTA0MjAwLCAKLSAgICAxMDQyMDQsIDEwNDIwOCwgMTA0MjEyLCAxMDQyMTYsIDEwNDIyMCwgMTA0MjI0LCAxMDQyMjgsIDEwNDIzMiwgMTA0MjM2LCAKLSAgICAxMDQyNDAsIDEwNDI0NCwgMTA0MjQ4LCAxMDQyNTIsIDEwNDI1NiwgMTA0MjYwLCAxMDQyNjQsIDEwNDI2OCwgMTA0MjcyLCAKLSAgICAxMDQyNzYsIDEwNDI4MCwgMTA0Mjg0LCAxMDQyODgsIDEwNDI5MiwgMTA0Mjk2LCAxMDQzMDAsIDEwNDMwNCwgMTA0MzA4LCAKLSAgICAxMDQzMTIsIDEwNDMxNiwgMTA0MzIwLCAxMDQzMjQsIDEwNDMyOCwgMTA0MzMyLCAxMDQzMzYsIDEwNDM0MCwgMTA0MzQ0LCAKLSAgICAxMDQzNDgsIDEwNDM1MiwgMTA0MzU2LCAxMDQzNjAsIDEwNDM2NCwgMTA0MzY4LCAxMDQzNzIsIDEwNDM3NiwgMTA0MzgwLCAKLSAgICAxMDQzODQsIDEwNDM4OCwgMTA0MzkyLCAxMDQzOTYsIDEwNDQwMCwgMTA0NDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ0MSwgOTU0NDUsIDk1NDQ5LCA5NTQ1MywgOTU0NTYsIDk1NDYwLCAKKyAgICA5NTQ2MywgOTU0NjcsIDk1NDcwLCA5NTQ3NCwgOTU0NzgsIDk1NDgzLCA5NTQ4NywgOTU0OTIsIDk1NDk1LCA5NTQ5OSwgCisgICAgOTU1MDIsIDk1NTA2LCA5NTUwOSwgOTU1MTMsIDk1NTE3LCA5NTUyMSwgOTU1MjUsIDk1NTI5LCA5NTUzMywgOTU1MzcsIAorICAgIDk1NTQxLCA5NTU0NSwgOTU1NDksIDk1NTUzLCA5NTU1NywgOTU1NjEsIDk1NTY1LCA5NTU2OSwgOTU1NzMsIDk1NTc3LCAKKyAgICA5NTU4MSwgOTU1ODQsIDk1NTg3LCA5NTU5MSwgOTU1OTUsIDk1NTk5LCA5NTYwMiwgOTU2MDUsIDk1NjA4LCA5NTYxMiwgCisgICAgOTU2MTYsIDk1NjIwLCA5NTYyNCwgOTU2MjgsIDk1NjMxLCA5NTYzNCwgOTU2MzksIDk1NjQzLCA5NTY0OCwgOTU2NTIsIAorICAgIDk1NjU3LCA5NTY2MiwgOTU2NjgsIDk1NjczLCA5NTY3OSwgOTU2ODMsIDk1Njg4LCA5NTY5MiwgOTU2OTcsIDk1NzAxLCAKKyAgICA5NTcwNSwgOTU3MDksIDk1NzEzLCA5NTcxNiwgOTU3MTksIDk1NzIzLCA5NTcyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTU3MzAsIDk1NzM0LCA5NTczNywgOTU3NDAsIDk1NzQzLCA5NTc0NiwgOTU3NDksIDk1NzUyLCA5NTc1NSwgOTU3NTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NzYxLCA5NTc2NSwgOTU3NzAsIDk1Nzc0LCA5NTc3OSwgCisgICAgOTU3ODMsIDk1Nzg4LCA5NTc5MiwgOTU3OTcsIDk1ODAxLCA5NTgwNiwgOTU4MTAsIDk1ODE1LCA5NTgyMCwgOTU4MjUsIAorICAgIDk1ODMwLCA5NTgzNSwgOTU4NDAsIDk1ODQ1LCA5NTg1MCwgOTU4NTUsIDk1ODYwLCA5NTg2NSwgOTU4NzAsIDk1ODc1LCAKKyAgICA5NTg4MCwgOTU4ODUsIDk1ODkwLCA5NTg5NSwgOTU5MDAsIDk1OTA0LCA5NTkwOCwgOTU5MTMsIDk1OTE4LCA5NTkyMywgCisgICAgOTU5MjcsIDk1OTMxLCA5NTkzNSwgOTU5NDAsIDk1OTQ1LCA5NTk1MCwgOTU5NTQsIDk1OTU4LCA5NTk2MywgOTU5NjgsIAorICAgIDk1OTczLCA5NTk3OSwgOTU5ODQsIDk1OTkwLCA5NTk5NSwgOTYwMDEsIDk2MDA2LCA5NjAxMiwgOTYwMTcsIDk2MDIzLCAKKyAgICA5NjAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTYwMzMsIDk2MDM4LCA5NjA0MiwgOTYwNDYsIDk2MDUwLCA5NjA1NCwgCisgICAgOTYwNTgsIDk2MDYyLCA5NjA2NiwgOTYwNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2MDc0LCA5NjA3NywgOTYwODIsIDk2MDg4LCAKKyAgICA5NjA5NiwgOTYxMDEsIDk2MTA3LCA5NjExNSwgOTYxMjEsIDk2MTI3LCA5NjEzMSwgOTYxMzUsIDk2MTQyLCA5NjE1MSwgCisgICAgOTYxNTgsIDk2MTY3LCA5NjE3MywgOTYxODIsIDk2MTg5LCA5NjE5NiwgOTYyMDMsIDk2MjEzLCA5NjIxOSwgOTYyMjMsIAorICAgIDk2MjMwLCA5NjIzOSwgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNjcsIDk2MjcxLCA5NjI3OCwgOTYyODgsIDk2MjkyLCAKKyAgICA5NjI5OSwgOTYzMDYsIDk2MzEzLCA5NjMxOSwgOTYzMjYsIDk2MzMzLCA5NjM0MCwgOTYzNDcsIDk2MzUxLCA5NjM1NSwgCisgICAgOTYzNTksIDk2MzY2LCA5NjM3MCwgOTYzNzcsIDk2Mzg0LCA5NjM5OCwgOTY0MDcsIDk2NDExLCA5NjQxNSwgOTY0MTksIAorICAgIDk2NDI2LCA5NjQzMCwgOTY0MzQsIDk2NDM4LCA5NjQ0NiwgOTY0NTQsIDk2NDczLCA5NjQ4MywgOTY1MDMsIDk2NTA3LCAKKyAgICA5NjUxMSwgOTY1MTUsIDk2NTE5LCA5NjUyMywgOTY1MjcsIDk2NTMxLCA5NjUzOCwgOTY1NDIsIDk2NTQ1LCA5NjU0OSwgCisgICAgOTY1NTMsIDk2NTU5LCA5NjU2NiwgOTY1NzUsIDk2NTc5LCA5NjU4OCwgOTY1OTcsIDk2NjA1LCA5NjYwOSwgOTY2MTYsIAorICAgIDk2NjIwLCA5NjYyNCwgOTY2MjgsIDk2NjMyLCA5NjY0MywgOTY2NTIsIDk2NjYxLCA5NjY3MCwgOTY2NzksIDk2NjkxLCAKKyAgICA5NjcwMCwgOTY3MDksIDk2NzE4LCA5NjcyNiwgOTY3MzUsIDk2NzQ3LCA5Njc1NiwgOTY3NjUsIDk2Nzc0LCA5Njc4NiwgCisgICAgOTY3OTUsIDk2ODA0LCA5NjgxNiwgOTY4MjUsIDk2ODM0LCA5Njg0NiwgOTY4NTUsIDk2ODU5LCA5Njg2MywgOTY4NjcsIAorICAgIDk2ODcxLCA5Njg3NSwgOTY4NzksIDk2ODgzLCA5Njg5MCwgOTY4OTQsIDk2ODk4LCA5NjkwOSwgOTY5MTMsIDk2OTE3LCAKKyAgICA5NjkyNCwgOTY5MzAsIDk2OTM2LCA5Njk0MCwgOTY5NDcsIDk2OTUxLCA5Njk1NSwgOTY5NTksIDk2OTYzLCA5Njk2NywgCisgICAgOTY5NzEsIDk2OTc3LCA5Njk4NSwgOTY5ODksIDk2OTkzLCA5Njk5NiwgOTcwMDIsIDk3MDEyLCA5NzAxNiwgOTcwMjgsIAorICAgIDk3MDM1LCA5NzA0MiwgOTcwNDksIDk3MDU2LCA5NzA2MiwgOTcwNjYsIDk3MDcwLCA5NzA3NCwgOTcwNzgsIDk3MDg1LCAKKyAgICA5NzA5NCwgOTcxMDEsIDk3MTA5LCA5NzExNywgOTcxMjMsIDk3MTI3LCA5NzEzMSwgOTcxMzUsIDk3MTM5LCA5NzE0NSwgCisgICAgOTcxNTQsIDk3MTY2LCA5NzE3MywgOTcxODAsIDk3MTg5LCA5NzIwMCwgOTcyMDYsIDk3MjE1LCA5NzIyNCwgOTcyMzEsIAorICAgIDk3MjQwLCA5NzI0NywgOTcyNTQsIDk3MjY0LCA5NzI3MSwgOTcyNzgsIDk3Mjg1LCA5NzI5MiwgOTcyOTYsIDk3MzAyLCAKKyAgICA5NzMwNiwgOTczMTcsIDk3MzI1LCA5NzMzNCwgOTczNDYsIDk3MzUzLCA5NzM2MCwgOTczNzAsIDk3Mzc3LCA5NzM4NiwgCisgICAgOTczOTMsIDk3NDAyLCA5NzQwOSwgOTc0MTYsIDk3NDI2LCA5NzQzMywgOTc0NDAsIDk3NDUwLCA5NzQ1NywgOTc0NjksIAorICAgIDk3NDc4LCA5NzQ4NSwgOTc0OTIsIDk3NDk5LCA5NzUwOCwgOTc1MTgsIDk3NTMxLCA5NzUzOCwgOTc1NDgsIDk3NTU4LCAKKyAgICA5NzU2NSwgOTc1NzQsIDk3NTg3LCA5NzU5NCwgOTc2MDEsIDk3NjA4LCA5NzYxOCwgOTc2MjgsIDk3NjM1LCA5NzY0NSwgCisgICAgOTc2NTIsIDk3NjU5LCA5NzY2OSwgOTc2NzUsIDk3NjgyLCA5NzY4OSwgOTc2OTYsIDk3NzA2LCA5NzcxMywgOTc3MjAsIAorICAgIDk3NzI3LCA5NzczMywgOTc3NDAsIDk3NzUwLCA5Nzc1NywgOTc3NjEsIDk3NzY5LCA5Nzc3MywgOTc3ODUsIDk3Nzg5LCAKKyAgICA5NzgwMywgOTc4MDcsIDk3ODExLCA5NzgxNSwgOTc4MTksIDk3ODI1LCA5NzgzMiwgOTc4NDAsIDk3ODQ0LCA5Nzg0OCwgCisgICAgOTc4NTIsIDk3ODU2LCA5Nzg2MywgOTc4NjcsIDk3ODczLCA5Nzg3OSwgOTc4ODcsIDk3ODkxLCA5Nzg5OCwgOTc5MDYsIAorICAgIDk3OTEwLCA5NzkxNCwgOTc5MjAsIDk3OTI0LCA5NzkzMywgOTc5NDIsIDk3OTQ5LCA5Nzk1OSwgOTc5NjUsIDk3OTY5LCAKKyAgICA5Nzk3MywgOTc5ODEsIDk3OTg4LCA5Nzk5NSwgOTgwMDEsIDk4MDA1LCA5ODAxMywgOTgwMTcsIDk4MDI0LCA5ODAzNiwgCisgICAgOTgwNDMsIDk4MDUzLCA5ODA1OSwgOTgwNjMsIDk4MDcyLCA5ODA3OSwgOTgwODgsIDk4MDkyLCA5ODA5NiwgOTgxMDMsIAorICAgIDk4MTA3LCA5ODExMSwgOTgxMTUsIDk4MTE5LCA5ODEyMiwgOTgxMjgsIDk4MTM0LCA5ODEzOCwgOTgxNDIsIDk4MTQ5LCAKKyAgICA5ODE1NiwgOTgxNjMsIDk4MTcwLCA5ODE3NywgOTgxODQsIDk4MTkxLCA5ODE5OCwgOTgyMDQsIDk4MjA4LCA5ODIxMiwgCisgICAgOTgyMTksIDk4MjI2LCA5ODIzMywgOTgyNDAsIDk4MjQ3LCA5ODI1MSwgOTgyNTQsIDk4MjU5LCA5ODI2MywgOTgyNjcsIAorICAgIDk4Mjc2LCA5ODI4NSwgOTgyODksIDk4MjkzLCA5ODI5OSwgOTgzMDUsIDk4MzIyLCA5ODMyOCwgOTgzMzIsIDk4MzQxLCAKKyAgICA5ODM0NSwgOTgzNDksIDk4MzU2LCA5ODM2NCwgOTgzNzIsIDk4Mzc4LCA5ODM4MiwgOTgzODYsIDk4MzkwLCA5ODM5NCwgCisgICAgOTgzOTcsIDk4NDAzLCA5ODQxMCwgOTg0MjAsIDk4NDI3LCA5ODQzNCwgOTg0NDEsIDk4NDQ3LCA5ODQ1NCwgOTg0NjEsIAorICAgIDk4NDY4LCA5ODQ3NSwgOTg0ODIsIDk4NDkxLCA5ODQ5OCwgOTg1MTAsIDk4NTE3LCA5ODUyNCwgOTg1MzQsIDk4NTQ1LCAKKyAgICA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3MywgOTg1ODAsIDk4NTg3LCA5ODU5NCwgOTg2MDEsIDk4NjA4LCA5ODYxNSwgCisgICAgOTg2MjUsIDk4NjM1LCA5ODY0NSwgOTg2NTIsIDk4NjYyLCA5ODY2OSwgOTg2NzYsIDk4NjgzLCA5ODY5MCwgOTg2OTYsIAorICAgIDk4NzAzLCA5ODcxMCwgOTg3MTcsIDk4NzI0LCA5ODczMSwgOTg3MzgsIDk4NzQ1LCA5ODc1MiwgOTg3NTgsIDk4NzY1LCAKKyAgICA5ODc3MiwgOTg3ODEsIDk4Nzg4LCA5ODc5NSwgOTg3OTksIDk4ODA3LCA5ODgxMSwgOTg4MTUsIDk4ODE5LCA5ODgyMywgCisgICAgOTg4MjcsIDk4ODM0LCA5ODgzOCwgOTg4NDcsIDk4ODUxLCA5ODg1OCwgOTg4NjYsIDk4ODcwLCA5ODg3NCwgOTg4NzgsIAorICAgIDk4ODkxLCA5ODkwNywgOTg5MTEsIDk4OTE1LCA5ODkyMiwgOTg5MjgsIDk4OTM1LCA5ODkzOSwgOTg5NDMsIDk4OTQ3LCAKKyAgICA5ODk1MSwgOTg5NTUsIDk4OTYyLCA5ODk2NiwgOTg5ODQsIDk4OTg4LCA5ODk5MiwgOTg5OTksIDk5MDAzLCA5OTAwNywgCisgICAgOTkwMTMsIDk5MDE3LCA5OTAyMSwgOTkwMjksIDk5MDMzLCA5OTAzNywgOTkwNDEsIDk5MDQ1LCA5OTA1MSwgOTkwNjIsIAorICAgIDk5MDcxLCA5OTA4MCwgOTkwODcsIDk5MDk0LCA5OTEwNSwgOTkxMTIsIDk5MTE5LCA5OTEyNiwgOTkxMzMsIDk5MTQwLCAKKyAgICA5OTE0NywgOTkxNTQsIDk5MTY0LCA5OTE3MCwgOTkxNzcsIDk5MTg3LCA5OTE5NiwgOTkyMDMsIDk5MjEyLCA5OTIyMiwgCisgICAgOTkyMjksIDk5MjM2LCA5OTI0MywgOTkyNTAsIDk5MjYyLCA5OTI2OSwgOTkyNzYsIDk5MjgzLCA5OTI5MCwgOTkyOTcsIAorICAgIDk5MzA3LCA5OTMxNCwgOTkzMjEsIDk5MzMxLCA5OTM0NCwgOTkzNTYsIDk5MzYzLCA5OTM3MywgOTkzODAsIDk5Mzg3LCAKKyAgICA5OTM5NCwgOTk0MDgsIDk5NDE0LCA5OTQyMiwgOTk0MzIsIDk5NDQyLCA5OTQ0OSwgOTk0NTYsIDk5NDYyLCA5OTQ2NiwgCisgICAgOTk0NzMsIDk5NDgzLCA5OTQ4OSwgOTk1MDIsIDk5NTA2LCA5OTUxMCwgOTk1MTcsIDk5NTIxLCA5OTUyOCwgOTk1MzgsIAorICAgIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjUsIDk5NTY5LCA5OTU3NiwgOTk1ODMsIDk5NTkwLCAKKyAgICA5OTU5OSwgOTk2MDgsIDk5NjE4LCA5OTYyNSwgOTk2MzIsIDk5NjM5LCA5OTY0OSwgOTk2NTYsIDk5NjY2LCA5OTY3MywgCisgICAgOTk2ODMsIDk5NjkwLCA5OTY5NywgOTk3MDcsIDk5NzE3LCA5OTcyNCwgOTk3MzAsIDk5NzM4LCA5OTc0NiwgOTk3NTIsIAorICAgIDk5NzU4LCA5OTc2MiwgOTk3NjYsIDk5NzczLCA5OTc4MSwgOTk3ODcsIDk5NzkxLCA5OTc5NSwgOTk3OTksIDk5ODA2LCAKKyAgICA5OTgxOCwgOTk4MjEsIDk5ODI4LCA5OTgzNCwgOTk4MzgsIDk5ODQyLCA5OTg0NiwgOTk4NTAsIDk5ODU0LCA5OTg1OCwgCisgICAgOTk4NjIsIDk5ODY2LCA5OTg3MCwgOTk4NzQsIDk5ODgxLCA5OTg4NSwgOTk4OTEsIDk5ODk1LCA5OTg5OSwgOTk5MDMsIAorICAgIDk5OTA5LCA5OTkxNiwgOTk5MjMsIDk5OTMwLCA5OTk0MSwgOTk5NDksIDk5OTUzLCA5OTk1OSwgOTk5NjgsIDk5OTc1LCAKKyAgICA5OTk4MSwgOTk5ODQsIDk5OTg4LCA5OTk5MiwgOTk5OTgsIDEwMDAwNywgMTAwMDE1LCAxMDAwMTksIDEwMDAyNSwgCisgICAgMTAwMDI5LCAxMDAwMzMsIDEwMDAzNywgMTAwMDQzLCAxMDAwNTAsIDEwMDA1NiwgMTAwMDYwLCAxMDAwNjYsIDEwMDA3MCwgCisgICAgMTAwMDc0LCAxMDAwODMsIDEwMDA5NSwgMTAwMDk5LCAxMDAxMDYsIDEwMDExMywgMTAwMTIzLCAxMDAxMzAsIDEwMDE0MiwgCisgICAgMTAwMTQ5LCAxMDAxNTYsIDEwMDE2MywgMTAwMTc0LCAxMDAxODQsIDEwMDE5NywgMTAwMjA3LCAxMDAyMTQsIDEwMDIxOCwgCisgICAgMTAwMjIyLCAxMDAyMjYsIDEwMDIzMCwgMTAwMjM5LCAxMDAyNDgsIDEwMDI1NywgMTAwMjc0LCAxMDAyODMsIDEwMDI4OSwgCisgICAgMTAwMjk2LCAxMDAzMDQsIDEwMDMxNywgMTAwMzIxLCAxMDAzMzAsIDEwMDMzOSwgMTAwMzQ4LCAxMDAzNTcsIDEwMDM2OCwgCisgICAgMTAwMzc3LCAxMDAzODYsIDEwMDM5NSwgMTAwNDA0LCAxMDA0MTMsIDEwMDQyMiwgMTAwNDMyLCAxMDA0MzUsIDEwMDQzOSwgCisgICAgMTAwNDQzLCAxMDA0NDcsIDEwMDQ1MSwgMTAwNDU1LCAxMDA0NjEsIDEwMDQ2OCwgMTAwNDc1LCAxMDA0ODIsIDEwMDQ4OCwgCisgICAgMTAwNDk0LCAxMDA1MDEsIDEwMDUwNywgMTAwNTE0LCAxMDA1MjIsIDEwMDUyNiwgMTAwNTMzLCAxMDA1NDAsIDEwMDU0NywgCisgICAgMTAwNTU1LCAxMDA1NTgsIDEwMDU2MiwgMTAwNTY2LCAxMDA1NzAsIDEwMDU3MywgMTAwNTc5LCAxMDA1ODMsIDEwMDU4OSwgCisgICAgMTAwNTk2LCAxMDA2MDMsIDEwMDYwOSwgMTAwNjE2LCAxMDA2MjMsIDEwMDYzMCwgMTAwNjM3LCAxMDA2NDQsIDEwMDY1MSwgCisgICAgMTAwNjU4LCAxMDA2NjUsIDEwMDY3MiwgMTAwNjc5LCAxMDA2ODYsIDEwMDY5MywgMTAwNzAwLCAxMDA3MDcsIDEwMDcxMywgCisgICAgMTAwNzE3LCAxMDA3MjYsIDEwMDczMCwgMTAwNzM0LCAxMDA3MzgsIDEwMDc0MiwgMTAwNzQ4LCAxMDA3NTUsIDEwMDc2MiwgCisgICAgMTAwNzY5LCAxMDA3NzYsIDEwMDc4MywgMTAwNzg5LCAxMDA3OTcsIDEwMDgwMSwgMTAwODA1LCAxMDA4MDksIDEwMDgxMywgCisgICAgMTAwODE5LCAxMDA4MzYsIDEwMDg1MywgMTAwODU3LCAxMDA4NjEsIDEwMDg2NSwgMTAwODY5LCAxMDA4NzMsIDEwMDg3NywgCisgICAgMTAwODgzLCAxMDA4OTAsIDEwMDg5NCwgMTAwOTAwLCAxMDA5MDcsIDEwMDkxNCwgMTAwOTIxLCAxMDA5MjgsIDEwMDkzNSwgCisgICAgMTAwOTQ0LCAxMDA5NTEsIDEwMDk1OCwgMTAwOTY1LCAxMDA5NzIsIDEwMDk3NiwgMTAwOTgwLCAxMDA5ODYsIDEwMDk5OCwgCisgICAgMTAxMDAyLCAxMDEwMDYsIDEwMTAxNSwgMTAxMDE5LCAxMDEwMjMsIDEwMTAyNywgMTAxMDMzLCAxMDEwMzcsIDEwMTA0MSwgCisgICAgMTAxMDUwLCAxMDEwNTQsIDEwMTA1OCwgMTAxMDYyLCAxMDEwNjksIDEwMTA3MywgMTAxMDc3LCAxMDEwODEsIDEwMTA4NSwgCisgICAgMTAxMDg5LCAxMDEwOTMsIDEwMTA5NywgMTAxMTAxLCAxMDExMDcsIDEwMTExNCwgMTAxMTIxLCAxMDExMjcsIDEwMTEzMSwgCisgICAgMTAxMTQ4LCAxMDExNTQsIDEwMTE1OCwgMTAxMTY0LCAxMDExNzAsIDEwMTE3NiwgMTAxMTgyLCAxMDExODgsIDEwMTE5NCwgCisgICAgMTAxMTk4LCAxMDEyMDIsIDEwMTIwNiwgMTAxMjEyLCAxMDEyMTYsIDEwMTIyMiwgMTAxMjI2LCAxMDEyMzAsIDEwMTIzNywgCisgICAgMTAxMjQ0LCAxMDEyNjEsIDEwMTI2NSwgMTAxMjY5LCAxMDEyNzMsIDEwMTI3NywgMTAxMjgxLCAxMDEyOTMsIDEwMTI5NiwgCisgICAgMTAxMzAxLCAxMDEzMDYsIDEwMTMyMSwgMTAxMzMxLCAxMDEzNDMsIDEwMTM0NywgMTAxMzUxLCAxMDEzNTUsIDEwMTM2MSwgCisgICAgMTAxMzY4LCAxMDEzNzUsIDEwMTM4NSwgMTAxMzk3LCAxMDE0MDMsIDEwMTQwOSwgMTAxNDE4LCAxMDE0MjIsIDEwMTQyNiwgCisgICAgMTAxNDMzLCAxMDE0NDMsIDEwMTQ1MCwgMTAxNDU2LCAxMDE0NjAsIDEwMTQ2NCwgMTAxNDcxLCAxMDE0NzcsIDEwMTQ4MSwgCisgICAgMTAxNDg3LCAxMDE0OTEsIDEwMTQ5OSwgMTAxNTA1LCAxMDE1MDksIDEwMTUxNywgMTAxNTI1LCAxMDE1MzIsIDEwMTUzOCwgCisgICAgMTAxNTQ1LCAxMDE1NTIsIDEwMTU2MiwgMTAxNTcyLCAxMDE1NzYsIDEwMTU4MCwgMTAxNTg0LCAxMDE1ODgsIDEwMTU5NCwgCisgICAgMTAxNjAxLCAxMDE2MDcsIDEwMTYxNCwgMTAxNjIxLCAxMDE2MjgsIDEwMTYzNywgMTAxNjQ0LCAxMDE2NTEsIDEwMTY1NywgCisgICAgMTAxNjY0LCAxMDE2NzEsIDEwMTY3OCwgMTAxNjg1LCAxMDE2OTIsIDEwMTY5OSwgMTAxNzA1LCAxMDE3MTIsIDEwMTcxOSwgCisgICAgMTAxNzI2LCAxMDE3MzUsIDEwMTc0MiwgMTAxNzQ5LCAxMDE3NTMsIDEwMTc1OSwgMTAxNzYzLCAxMDE3NjksIDEwMTc3NiwgCisgICAgMTAxNzgzLCAxMDE3OTAsIDEwMTc5NCwgMTAxNzk4LCAxMDE4MDIsIDEwMTgwNiwgMTAxODEwLCAxMDE4MTcsIDEwMTgyMSwgCisgICAgMTAxODI1LCAxMDE4MzEsIDEwMTgzOSwgMTAxODQzLCAxMDE4NDcsIDEwMTg1MSwgMTAxODU1LCAxMDE4NjIsIDEwMTg2NiwgCisgICAgMTAxODcwLCAxMDE4NzgsIDEwMTg4MiwgMTAxODg2LCAxMDE4OTAsIDEwMTg5NCwgMTAxOTAwLCAxMDE5MDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMTkwOCwgMTAxOTE0LCAxMDE5MjAsIDEwMTkyNywgCisgICAgMTAxOTM0LCAxMDE5NDEsIDEwMTk0OCwgMTAxOTU1LCAxMDE5NjIsIDEwMTk2OCwgMTAxOTc1LCAxMDE5ODIsIDEwMTk4OSwgCisgICAgMTAxOTk2LCAxMDIwMDMsIDEwMjAxMCwgMTAyMDE2LCAxMDIwMjIsIDEwMjAyOCwgMTAyMDM0LCAxMDIwNDAsIDEwMjA0NiwgCisgICAgMTAyMDUyLCAxMDIwNTgsIDEwMjA2NCwgMTAyMDcxLCAxMDIwNzgsIDEwMjA4NSwgMTAyMDkyLCAxMDIwOTksIDEwMjEwNiwgCisgICAgMTAyMTEyLCAxMDIxMTgsIDEwMjEyNCwgMTAyMTMxLCAxMDIxMzgsIDEwMjE0NCwgMTAyMTUwLCAxMDIxNTksIDEwMjE2NiwgCisgICAgMTAyMTczLCAxMDIxODAsIDEwMjE4NywgMTAyMTk0LCAxMDIyMDEsIDEwMjIwNywgMTAyMjEzLCAxMDIyMTksIDEwMjIyOCwgCisgICAgMTAyMjM1LCAxMDIyNDIsIDEwMjI1MywgMTAyMjY0LCAxMDIyNzAsIDEwMjI3NiwgMTAyMjgyLCAxMDIyOTEsIDEwMjI5OCwgCisgICAgMTAyMzA1LCAxMDIzMTUsIDEwMjMyNSwgMTAyMzM2LCAxMDIzNDcsIDEwMjM1OSwgMTAyMzcyLCAxMDIzODMsIDEwMjM5NCwgCisgICAgMTAyNDA2LCAxMDI0MTksIDEwMjQzMCwgMTAyNDQxLCAxMDI0NTIsIDEwMjQ2MywgMTAyNDc0LCAxMDI0ODYsIDEwMjQ5NCwgCisgICAgMTAyNTAyLCAxMDI1MTEsIDEwMjUyMCwgMTAyNTI5LCAxMDI1MzUsIDEwMjU0MSwgMTAyNTQ3LCAxMDI1NTQsIDEwMjU2NCwgCisgICAgMTAyNTcxLCAxMDI1ODEsIDEwMjU4NiwgMTAyNTkxLCAxMDI1OTcsIDEwMjYwMywgMTAyNjExLCAxMDI2MTksIDEwMjYyOCwgCisgICAgMTAyNjM5LCAxMDI2NTAsIDEwMjY1OCwgMTAyNjY2LCAxMDI2NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwMjY4NCwgMTAyNjk1LCAxMDI3MDIsIDEwMjcxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAyNzE4LCAxMDI3MjIsIDEwMjcyNiwgMTAyNzMwLCAxMDI3MzQsIDEwMjczOCwgMTAyNzQyLCAxMDI3NDYsIDEwMjc1MCwgCisgICAgMTAyNzU0LCAxMDI3NTgsIDEwMjc2MiwgMTAyNzY2LCAxMDI3NzAsIDEwMjc3NCwgMTAyNzc4LCAxMDI3ODIsIDEwMjc4NiwgCisgICAgMTAyNzkwLCAxMDI3OTQsIDEwMjc5OCwgMTAyODAyLCAxMDI4MDYsIDEwMjgxMCwgMTAyODE0LCAxMDI4MTgsIDEwMjgyMiwgCisgICAgMTAyODI2LCAxMDI4MzAsIDEwMjgzNCwgMTAyODM4LCAxMDI4NDIsIDEwMjg0NiwgMTAyODUwLCAxMDI4NTQsIDEwMjg1OCwgCisgICAgMTAyODYyLCAxMDI4NjYsIDEwMjg3MCwgMTAyODc0LCAxMDI4NzgsIDEwMjg4MiwgMTAyODg2LCAxMDI4OTAsIDEwMjg5NCwgCisgICAgMTAyODk4LCAxMDI5MDIsIDEwMjkwNiwgMTAyOTEwLCAxMDI5MTQsIDEwMjkxOCwgMTAyOTIyLCAxMDI5MjYsIDEwMjkzMCwgCisgICAgMTAyOTM0LCAxMDI5MzgsIDEwMjk0MiwgMTAyOTQ2LCAxMDI5NTAsIDEwMjk1NCwgMTAyOTU4LCAxMDI5NjIsIDEwMjk2NiwgCisgICAgMTAyOTcwLCAxMDI5NzQsIDEwMjk3OCwgMTAyOTgyLCAxMDI5ODYsIDEwMjk5MCwgMTAyOTk0LCAxMDI5OTgsIDEwMzAwMiwgCisgICAgMTAzMDA2LCAxMDMwMTAsIDEwMzAxNCwgMTAzMDE4LCAxMDMwMjIsIDEwMzAyNiwgMTAzMDMwLCAxMDMwMzQsIDEwMzAzOCwgCisgICAgMTAzMDQyLCAxMDMwNDYsIDEwMzA1MCwgMTAzMDU0LCAxMDMwNTgsIDEwMzA2MiwgMTAzMDY2LCAxMDMwNzAsIDEwMzA3NCwgCisgICAgMTAzMDc4LCAxMDMwODIsIDEwMzA4NiwgMTAzMDkwLCAxMDMwOTQsIDEwMzA5OCwgMTAzMTAyLCAxMDMxMDYsIDEwMzExMCwgCisgICAgMTAzMTE0LCAxMDMxMTgsIDEwMzEyMiwgMTAzMTI2LCAxMDMxMzAsIDEwMzEzNCwgMTAzMTM4LCAxMDMxNDIsIDEwMzE0NiwgCisgICAgMTAzMTUwLCAxMDMxNTQsIDEwMzE1OCwgMTAzMTYyLCAxMDMxNjYsIDEwMzE3MCwgMTAzMTc0LCAxMDMxNzgsIDEwMzE4MiwgCisgICAgMTAzMTg2LCAxMDMxOTAsIDEwMzE5NCwgMTAzMTk4LCAxMDMyMDIsIDEwMzIwNiwgMTAzMjEwLCAxMDMyMTQsIDEwMzIxOCwgCisgICAgMTAzMjIyLCAxMDMyMjYsIDEwMzIzMCwgMTAzMjM0LCAxMDMyMzgsIDEwMzI0MiwgMTAzMjQ2LCAxMDMyNTAsIDEwMzI1NCwgCisgICAgMTAzMjU4LCAxMDMyNjIsIDEwMzI2NiwgMTAzMjcwLCAxMDMyNzQsIDEwMzI3OCwgMTAzMjgyLCAxMDMyODYsIDEwMzI5MCwgCisgICAgMTAzMjk0LCAxMDMyOTgsIDEwMzMwMiwgMTAzMzA2LCAxMDMzMTAsIDEwMzMxNCwgMTAzMzE4LCAxMDMzMjIsIDEwMzMyNiwgCisgICAgMTAzMzMwLCAxMDMzMzQsIDEwMzMzOCwgMTAzMzQyLCAxMDMzNDYsIDEwMzM1MCwgMTAzMzU0LCAxMDMzNTgsIDEwMzM2MiwgCisgICAgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NCwgMTAzMzc4LCAxMDMzODIsIDEwMzM4NiwgMTAzMzkwLCAxMDMzOTQsIDEwMzM5OCwgCisgICAgMTAzNDAyLCAxMDM0MDYsIDEwMzQxMCwgMTAzNDE0LCAxMDM0MTgsIDEwMzQyMiwgMTAzNDI2LCAxMDM0MzAsIDEwMzQzNCwgCisgICAgMTAzNDM4LCAxMDM0NDIsIDEwMzQ0NiwgMTAzNDUwLCAxMDM0NTQsIDEwMzQ1OCwgMTAzNDYyLCAxMDM0NjYsIDEwMzQ3MCwgCisgICAgMTAzNDc0LCAxMDM0NzgsIDEwMzQ4MiwgMTAzNDg2LCAxMDM0OTAsIDEwMzQ5NCwgMTAzNDk4LCAxMDM1MDIsIDEwMzUwNiwgCisgICAgMTAzNTEwLCAxMDM1MTQsIDEwMzUxOCwgMTAzNTIyLCAxMDM1MjYsIDEwMzUzMCwgMTAzNTM0LCAxMDM1MzgsIDEwMzU0MiwgCisgICAgMTAzNTQ2LCAxMDM1NTAsIDEwMzU1NCwgMTAzNTU4LCAxMDM1NjIsIDEwMzU2NiwgMTAzNTcwLCAxMDM1NzQsIDEwMzU3OCwgCisgICAgMTAzNTgyLCAxMDM1ODYsIDEwMzU5MCwgMTAzNTk0LCAxMDM1OTgsIDEwMzYwMiwgMTAzNjA2LCAxMDM2MTAsIDEwMzYxNCwgCisgICAgMTAzNjE4LCAxMDM2MjIsIDEwMzYyNiwgMTAzNjMwLCAxMDM2MzQsIDEwMzYzOCwgMTAzNjQyLCAxMDM2NDYsIDEwMzY1MCwgCisgICAgMTAzNjU0LCAxMDM2NTgsIDEwMzY2MiwgMTAzNjY2LCAxMDM2NzAsIDEwMzY3NCwgMTAzNjc4LCAxMDM2ODIsIDEwMzY4NiwgCisgICAgMTAzNjkwLCAxMDM2OTQsIDEwMzY5OCwgMTAzNzAyLCAxMDM3MDYsIDEwMzcxMCwgMTAzNzE0LCAxMDM3MTgsIDEwMzcyMiwgCisgICAgMTAzNzI2LCAxMDM3MzAsIDEwMzczNCwgMTAzNzM4LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUwLCAxMDM3NTQsIDEwMzc1OCwgCisgICAgMTAzNzYyLCAxMDM3NjYsIDEwMzc3MCwgMTAzNzc0LCAxMDM3NzgsIDEwMzc4MiwgMTAzNzg2LCAxMDM3OTAsIDEwMzc5NCwgCisgICAgMTAzNzk4LCAxMDM4MDIsIDEwMzgwNiwgMTAzODEwLCAxMDM4MTQsIDEwMzgxOCwgMTAzODIyLCAxMDM4MjYsIDEwMzgzMCwgCisgICAgMTAzODM0LCAxMDM4MzgsIDEwMzg0MiwgMTAzODQ2LCAxMDM4NTAsIDEwMzg1NCwgMTAzODU4LCAxMDM4NjIsIDEwMzg2NiwgCisgICAgMTAzODcwLCAxMDM4NzQsIDEwMzg3OCwgMTAzODgyLCAxMDM4ODYsIDEwMzg5MCwgMTAzODk0LCAxMDM4OTgsIDEwMzkwMiwgCisgICAgMTAzOTA2LCAxMDM5MTAsIDEwMzkxNCwgMTAzOTE4LCAxMDM5MjIsIDEwMzkyNiwgMTAzOTMwLCAxMDM5MzQsIDEwMzkzOCwgCisgICAgMTAzOTQyLCAxMDM5NDYsIDEwMzk1MCwgMTAzOTU0LCAxMDM5NTgsIDEwMzk2MiwgMTAzOTY2LCAxMDM5NzAsIDEwMzk3NCwgCisgICAgMTAzOTc4LCAxMDM5ODIsIDEwMzk4NiwgMTAzOTkwLCAxMDM5OTQsIDEwMzk5OCwgMTA0MDAyLCAxMDQwMDYsIDEwNDAxMCwgCisgICAgMTA0MDE0LCAxMDQwMTgsIDEwNDAyMiwgMTA0MDI2LCAxMDQwMzAsIDEwNDAzNCwgMTA0MDM4LCAxMDQwNDIsIDEwNDA0NiwgCisgICAgMTA0MDUwLCAxMDQwNTQsIDEwNDA1OCwgMTA0MDYyLCAxMDQwNjYsIDEwNDA3MCwgMTA0MDc0LCAxMDQwNzgsIDEwNDA4MiwgCisgICAgMTA0MDg2LCAxMDQwOTAsIDEwNDA5NCwgMTA0MDk4LCAxMDQxMDIsIDEwNDEwNiwgMTA0MTEwLCAxMDQxMTQsIDEwNDExOCwgCisgICAgMTA0MTIyLCAxMDQxMjYsIDEwNDEzMCwgMTA0MTM0LCAxMDQxMzgsIDEwNDE0MiwgMTA0MTQ2LCAxMDQxNTAsIDEwNDE1NCwgCisgICAgMTA0MTU4LCAxMDQxNjIsIDEwNDE2NiwgMTA0MTcwLCAxMDQxNzQsIDEwNDE3OCwgMTA0MTgyLCAxMDQxODYsIDEwNDE5MCwgCisgICAgMTA0MTk0LCAxMDQxOTgsIDEwNDIwMiwgMTA0MjA2LCAxMDQyMTAsIDEwNDIxNCwgMTA0MjE4LCAxMDQyMjIsIDEwNDIyNiwgCisgICAgMTA0MjMwLCAxMDQyMzQsIDEwNDIzOCwgMTA0MjQyLCAxMDQyNDYsIDEwNDI1MCwgMTA0MjU0LCAxMDQyNTgsIDEwNDI2MiwgCisgICAgMTA0MjY2LCAxMDQyNzAsIDEwNDI3NCwgMTA0Mjc4LCAxMDQyODIsIDEwNDI4NiwgMTA0MjkwLCAxMDQyOTQsIDEwNDI5OCwgCisgICAgMTA0MzAyLCAxMDQzMDYsIDEwNDMxMCwgMTA0MzE0LCAxMDQzMTgsIDEwNDMyMiwgMTA0MzI2LCAxMDQzMzAsIDEwNDMzNCwgCisgICAgMTA0MzM4LCAxMDQzNDIsIDEwNDM0NiwgMTA0MzUwLCAxMDQzNTQsIDEwNDM1OCwgMTA0MzYyLCAxMDQzNjYsIDEwNDM3MCwgCisgICAgMTA0Mzc0LCAxMDQzNzgsIDEwNDM4MiwgMTA0Mzg2LCAxMDQzOTAsIDEwNDM5NCwgMTA0Mzk4LCAxMDQ0MDIsIDEwNDQwNiwgCisgICAgMTA0NDEwLCAxMDQ0MTQsIDEwNDQxOCwgMTA0NDIyLCAxMDQ0MjYsIDEwNDQzMCwgMTA0NDM0LCAxMDQ0MzgsIDEwNDQ0MiwgCisgICAgMTA0NDQ2LCAxMDQ0NTAsIDEwNDQ1NCwgMTA0NDU4LCAxMDQ0NjIsIDEwNDQ2NiwgMTA0NDcwLCAxMDQ0NzQsIDEwNDQ3OCwgCisgICAgMTA0NDgyLCAxMDQ0ODYsIDEwNDQ5MCwgMTA0NDk0LCAxMDQ0OTgsIDEwNDUwMiwgMTA0NTA2LCAxMDQ1MTAsIDEwNDUxNCwgCisgICAgMTA0NTE4LCAxMDQ1MjIsIDEwNDUyNiwgMTA0NTMwLCAxMDQ1MzQsIDEwNDUzOCwgMTA0NTQyLCAxMDQ1NDYsIDEwNDU1MCwgCisgICAgMTA0NTU0LCAxMDQ1NTgsIDEwNDU2MiwgMTA0NTY2LCAxMDQ1NzAsIDEwNDU3NCwgMTA0NTc4LCAxMDQ1ODIsIDEwNDU4NiwgCisgICAgMTA0NTkwLCAxMDQ1OTQsIDEwNDU5OCwgMTA0NjAyLCAxMDQ2MDYsIDEwNDYxMCwgMTA0NjE0LCAxMDQ2MTgsIDEwNDYyMiwgCisgICAgMTA0NjI2LCAxMDQ2MzAsIDEwNDYzNCwgMTA0NjM4LCAxMDQ2NDIsIDEwNDY0NiwgMTA0NjUwLCAxMDQ2NTQsIDEwNDY1OCwgCisgICAgMTA0NjYyLCAxMDQ2NjYsIDEwNDY3MCwgMTA0Njc0LCAxMDQ2NzgsIDEwNDY4MiwgMTA0Njg2LCAxMDQ2OTAsIDEwNDY5NCwgCisgICAgMTA0Njk4LCAxMDQ3MDIsIDEwNDcwNiwgMTA0NzEwLCAxMDQ3MTQsIDEwNDcxOCwgMTA0NzIyLCAxMDQ3MjYsIDEwNDczMCwgCisgICAgMTA0NzM0LCAxMDQ3MzgsIDEwNDc0MiwgMTA0NzQ2LCAxMDQ3NTAsIDEwNDc1NCwgMTA0NzU4LCAxMDQ3NjIsIDEwNDc2NiwgCisgICAgMTA0NzcwLCAxMDQ3NzQsIDEwNDc3OCwgMTA0NzgyLCAxMDQ3ODYsIDEwNDc5MCwgMTA0Nzk0LCAxMDQ3OTgsIDEwNDgwMiwgCisgICAgMTA0ODA2LCAxMDQ4MTAsIDEwNDgxNCwgMTA0ODE4LCAxMDQ4MjIsIDEwNDgyNiwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgCisgICAgMTA0ODQyLCAxMDQ4NDYsIDEwNDg1MCwgMTA0ODU0LCAxMDQ4NTgsIDEwNDg2MiwgMTA0ODY2LCAxMDQ4NzAsIDEwNDg3NCwgCisgICAgMTA0ODc4LCAxMDQ4ODIsIDEwNDg4NiwgMTA0ODkwLCAxMDQ4OTQsIDEwNDg5OCwgMTA0OTAyLCAxMDQ5MDYsIDEwNDkxMCwgCisgICAgMTA0OTE0LCAxMDQ5MTgsIDEwNDkyMiwgMTA0OTI2LCAxMDQ5MzAsIDEwNDkzNCwgMTA0OTM4LCAxMDQ5NDIsIDEwNDk0NiwgCisgICAgMTA0OTUwLCAxMDQ5NTQsIDEwNDk1OCwgMTA0OTYyLCAxMDQ5NjYsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzgsIDEwNDk4MiwgCisgICAgMTA0OTg2LCAxMDQ5OTAsIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDEwLCAxMDUwMTQsIDEwNTAxOCwgCisgICAgMTA1MDIyLCAxMDUwMjYsIDEwNTAzMCwgMTA1MDM0LCAxMDUwMzgsIDEwNTA0MiwgMTA1MDQ2LCAxMDUwNTAsIDEwNTA1NCwgCisgICAgMTA1MDU4LCAxMDUwNjIsIDEwNTA2NiwgMTA1MDcwLCAxMDUwNzQsIDEwNTA3OCwgMTA1MDgyLCAxMDUwODYsIDEwNTA5MCwgCisgICAgMTA1MDk0LCAxMDUwOTgsIDEwNTEwMiwgMTA1MTA2LCAxMDUxMTAsIDEwNTExNCwgMTA1MTE4LCAxMDUxMjIsIDEwNTEyNiwgCisgICAgMTA1MTMwLCAxMDUxMzQsIDEwNTEzOCwgMTA1MTQyLCAxMDUxNDYsIDEwNTE1MCwgMTA1MTU0LCAxMDUxNTgsIDEwNTE2MiwgCisgICAgMTA1MTY2LCAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NiwgMTA1MTkwLCAxMDUxOTQsIDEwNTE5OCwgCisgICAgMTA1MjAyLCAxMDUyMDYsIDEwNTIxMCwgMTA1MjE0LCAxMDUyMTgsIDEwNTIyMiwgMTA1MjI2LCAxMDUyMzAsIDEwNTIzNCwgCisgICAgMTA1MjM4LCAxMDUyNDIsIDEwNTI0NiwgMTA1MjUwLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYyLCAxMDUyNjYsIDEwNTI3MCwgCisgICAgMTA1Mjc0LCAxMDUyNzgsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDIsIDEwNTMwNiwgCisgICAgMTA1MzEwLCAxMDUzMTQsIDEwNTMxOCwgMTA1MzIyLCAxMDUzMjYsIDEwNTMzMCwgMTA1MzM0LCAxMDUzMzgsIDEwNTM0MiwgCisgICAgMTA1MzQ2LCAxMDUzNTAsIDEwNTM1NCwgMTA1MzU4LCAxMDUzNjIsIDEwNTM2NiwgMTA1MzcwLCAxMDUzNzQsIDEwNTM3OCwgCisgICAgMTA1MzgyLCAxMDUzODYsIDEwNTM5MCwgMTA1Mzk0LCAxMDUzOTgsIDEwNTQwMiwgMTA1NDA2LCAxMDU0MTAsIDEwNTQxNCwgCisgICAgMTA1NDE4LCAxMDU0MjIsIDEwNTQyNiwgMTA1NDMwLCAxMDU0MzQsIDEwNTQzOCwgMTA1NDQyLCAxMDU0NDYsIDEwNTQ1MCwgCisgICAgMTA1NDU0LCAxMDU0NTgsIDEwNTQ2MiwgMTA1NDY2LCAxMDU0NzAsIDEwNTQ3NCwgMTA1NDc4LCAxMDU0ODIsIDEwNTQ4NiwgCisgICAgMTA1NDkwLCAxMDU0OTQsIDEwNTQ5OCwgMTA1NTAyLCAxMDU1MDYsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTgsIDEwNTUyMiwgCisgICAgMTA1NTI2LCAxMDU1MzAsIDEwNTUzNCwgMTA1NTM4LCAxMDU1NDIsIDEwNTU0NiwgMTA1NTUwLCAxMDU1NTQsIDEwNTU1OCwgCisgICAgMTA1NTYyLCAxMDU1NjYsIDEwNTU3MCwgMTA1NTc0LCAxMDU1NzgsIDEwNTU4MiwgMTA1NTg2LCAxMDU1OTAsIDEwNTU5NCwgCisgICAgMTA1NTk4LCAxMDU2MDIsIDEwNTYwNiwgMTA1NjEwLCAxMDU2MTQsIDEwNTYxOCwgMTA1NjIyLCAxMDU2MjYsIDEwNTYzMCwgCisgICAgMTA1NjM0LCAxMDU2MzgsIDEwNTY0MiwgMTA1NjQ2LCAxMDU2NTAsIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjIsIDEwNTY2NiwgCisgICAgMTA1NjcwLCAxMDU2NzQsIDEwNTY3OCwgMTA1NjgyLCAxMDU2ODYsIDEwNTY5MCwgMTA1Njk0LCAxMDU2OTgsIDEwNTcwMiwgCisgICAgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNCwgMTA1NzE4LCAxMDU3MjIsIDEwNTcyNiwgMTA1NzMwLCAxMDU3MzQsIDEwNTczOCwgCisgICAgMTA1NzQyLCAxMDU3NDYsIDEwNTc1MCwgMTA1NzU0LCAxMDU3NTgsIDEwNTc2MiwgMTA1NzY2LCAxMDU3NzAsIDEwNTc3NCwgCisgICAgMTA1Nzc4LCAxMDU3ODIsIDEwNTc4NiwgMTA1NzkwLCAxMDU3OTQsIDEwNTc5OCwgMTA1ODAyLCAxMDU4MDYsIDEwNTgxMCwgCisgICAgMTA1ODE0LCAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNCwgMTA1ODM4LCAxMDU4NDIsIDEwNTg0NiwgCisgICAgMTA1ODUwLCAxMDU4NTQsIDEwNTg1OCwgMTA1ODYyLCAxMDU4NjYsIDEwNTg3MCwgMTA1ODc0LCAxMDU4NzgsIDEwNTg4MiwgCisgICAgMTA1ODg2LCAxMDU4OTAsIDEwNTg5NCwgMTA1ODk4LCAxMDU5MDIsIDEwNTkwNiwgMTA1OTEwLCAxMDU5MTQsIDEwNTkxOCwgCisgICAgMTA1OTIyLCAxMDU5MjYsIDEwNTkzMCwgMTA1OTM0LCAxMDU5MzgsIDEwNTk0MiwgMTA1OTQ2LCAxMDU5NTAsIDEwNTk1NCwgCisgICAgMTA1OTU4LCAxMDU5NjIsIDEwNTk2NiwgMTA1OTcwLCAxMDU5NzQsIDEwNTk3OCwgMTA1OTgyLCAxMDU5ODYsIDEwNTk5MCwgCisgICAgMTA1OTk0LCAxMDU5OTgsIDEwNjAwMiwgMTA2MDA2LCAxMDYwMTAsIDEwNjAxNCwgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNiwgCisgICAgMTA2MDMwLCAxMDYwMzQsIDEwNjAzOCwgMTA2MDQyLCAxMDYwNDYsIDEwNjA1MCwgMTA2MDU0LCAxMDYwNTgsIDEwNjA2MiwgCisgICAgMTA2MDY2LCAxMDYwNzAsIDEwNjA3NCwgMTA2MDc4LCAxMDYwODIsIDEwNjA4NiwgMTA2MDkwLCAxMDYwOTQsIDEwNjA5OCwgCisgICAgMTA2MTAyLCAxMDYxMDYsIDEwNjExMCwgMTA2MTE0LCAxMDYxMTgsIDEwNjEyMiwgMTA2MTI2LCAxMDYxMzAsIDEwNjEzNCwgCisgICAgMTA2MTM4LCAxMDYxNDIsIDEwNjE0NiwgMTA2MTUwLCAxMDYxNTQsIDEwNjE1OCwgMTA2MTYyLCAxMDYxNjYsIDEwNjE3MCwgCisgICAgMTA2MTc0LCAxMDYxNzgsIDEwNjE4MiwgMTA2MTg2LCAxMDYxOTAsIDEwNjE5NCwgMTA2MTk4LCAxMDYyMDIsIDEwNjIwNiwgCisgICAgMTA2MjEwLCAxMDYyMTQsIDEwNjIxOCwgMTA2MjIyLCAxMDYyMjYsIDEwNjIzMCwgMTA2MjM0LCAxMDYyMzgsIDEwNjI0MiwgCisgICAgMTA2MjQ2LCAxMDYyNTAsIDEwNjI1NCwgMTA2MjU4LCAxMDYyNjIsIDEwNjI2NiwgMTA2MjcwLCAxMDYyNzQsIDEwNjI3OCwgCisgICAgMTA2MjgyLCAxMDYyODYsIDEwNjI5MCwgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNCwgCisgICAgMTA2MzE4LCAxMDYzMjIsIDEwNjMyNiwgMTA2MzMwLCAxMDYzMzQsIDEwNjMzOCwgMTA2MzQyLCAxMDYzNDYsIDEwNjM1MCwgCisgICAgMTA2MzU0LCAxMDYzNTgsIDEwNjM2MiwgMTA2MzY2LCAxMDYzNzAsIDEwNjM3NCwgMTA2Mzc4LCAxMDYzODIsIDEwNjM4NiwgCisgICAgMTA2MzkwLCAxMDYzOTQsIDEwNjM5OCwgMTA2NDAyLCAxMDY0MDYsIDEwNjQxMCwgMTA2NDE0LCAxMDY0MTgsIDEwNjQyMiwgCisgICAgMTA2NDI2LCAxMDY0MzAsIDEwNjQzNCwgMTA2NDM4LCAxMDY0NDIsIDEwNjQ0NiwgMTA2NDUwLCAxMDY0NTQsIDEwNjQ1OCwgCisgICAgMTA2NDYyLCAxMDY0NjYsIDEwNjQ3MCwgMTA2NDc0LCAxMDY0NzgsIDEwNjQ4MiwgMTA2NDg2LCAxMDY0OTAsIDEwNjQ5NCwgCisgICAgMTA2NDk4LCAxMDY1MDIsIDEwNjUwNiwgMTA2NTEwLCAxMDY1MTQsIDEwNjUxOCwgMTA2NTIyLCAxMDY1MjYsIDEwNjUzMCwgCisgICAgMTA2NTM0LCAxMDY1MzgsIDEwNjU0MiwgMTA2NTQ2LCAxMDY1NTAsIDEwNjU1NCwgMTA2NTU4LCAxMDY1NjIsIDEwNjU2NiwgCisgICAgMTA2NTcwLCAxMDY1NzQsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODYsIDEwNjU5MCwgMTA2NTk0LCAxMDY1OTgsIDEwNjYwMiwgCisgICAgMTA2NjA2LCAxMDY2MTAsIDEwNjYxNCwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjMwLCAxMDY2MzQsIDEwNjYzOCwgCisgICAgMTA2NjQyLCAxMDY2NDYsIDEwNjY1MCwgMTA2NjU0LCAxMDY2NTgsIDEwNjY2MiwgMTA2NjY2LCAxMDY2NzAsIDEwNjY3NCwgCisgICAgMTA2Njc4LCAxMDY2ODIsIDEwNjY4NiwgMTA2NjkwLCAxMDY2OTQsIDEwNjY5OCwgMTA2NzAyLCAxMDY3MDYsIDEwNjcxMCwgCisgICAgMTA2NzE0LCAxMDY3MTgsIDEwNjcyMiwgMTA2NzI2LCAxMDY3MzAsIDEwNjczNCwgMTA2NzM4LCAxMDY3NDIsIDEwNjc0NiwgCisgICAgMTA2NzUwLCAxMDY3NTQsIDEwNjc1OCwgMTA2NzYyLCAxMDY3NjYsIDEwNjc3MCwgMTA2Nzc0LCAxMDY3NzgsIDEwNjc4MiwgCisgICAgMTA2Nzg2LCAxMDY3OTAsIDEwNjc5NCwgMTA2Nzk4LCAxMDY4MDIsIDEwNjgwNiwgMTA2ODEwLCAxMDY4MTQsIDEwNjgxOCwgCisgICAgMTA2ODIyLCAxMDY4MjYsIDEwNjgzMCwgMTA2ODM0LCAxMDY4MzgsIDEwNjg0MiwgMTA2ODQ2LCAxMDY4NTAsIDEwNjg1NCwgCisgICAgMTA2ODU4LCAxMDY4NjIsIDEwNjg2NiwgMTA2ODcwLCAxMDY4NzQsIDEwNjg3OCwgMTA2ODgyLCAxMDY4ODYsIDEwNjg5MCwgCisgICAgMTA2ODk0LCAxMDY4OTgsIDEwNjkwMiwgMTA2OTA2LCAxMDY5MTAsIDEwNjkxNCwgMTA2OTE4LCAxMDY5MjIsIDEwNjkyNiwgCisgICAgMTA2OTMwLCAxMDY5MzQsIDEwNjkzOCwgMTA2OTQyLCAxMDY5NDYsIDEwNjk1MCwgMTA2OTU0LCAxMDY5NTgsIDEwNjk2MiwgCisgICAgMTA2OTY2LCAxMDY5NzAsIDEwNjk3NCwgMTA2OTc4LCAxMDY5ODIsIDEwNjk4NiwgMTA2OTkwLCAxMDY5OTQsIDEwNjk5OCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA0NDA4LCAxMDQ0MTUsIDEwNDQyMiwgMTA0NDMxLCAxMDQ0NDAsIDEwNDQ0NywgMTA0NDUyLCAxMDQ0NTksIAotICAgIDEwNDQ2NiwgMTA0NDc1LCAxMDQ0ODYsIDEwNDQ5NywgMTA0NTAyLCAxMDQ1MDksIDEwNDUxNCwgMTA0NTE5LCAxMDQ1MjQsIAotICAgIDEwNDUyOSwgMTA0NTM0LCAxMDQ1MzksIDEwNDU0NCwgMTA0NTQ5LCAxMDQ1NTQsIDEwNDU1OSwgMTA0NTY0LCAxMDQ1NzEsIAotICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDUsIDEwNDYxMiwgMTA0NjIwLCAxMDQ2MjUsIAotICAgIDEwNDYzMiwgMTA0NjM3LCAxMDQ2NDIsIDEwNDY0NywgMTA0NjUyLCAxMDQ2NTcsIDEwNDY2NCwgMTA0NjcxLCAxMDQ2NzYsIAotICAgIDEwNDY4MSwgMTA0Njg2LCAxMDQ2OTEsIDEwNDY5NiwgMTA0NzAxLCAxMDQ3MDYsIDEwNDcxMSwgMTA0NzE2LCAxMDQ3MjEsIAotICAgIDEwNDcyNiwgMTA0NzMxLCAxMDQ3MzYsIDEwNDc0MSwgMTA0NzQ2LCAxMDQ3NTEsIDEwNDc1NiwgMTA0NzYxLCAxMDQ3NjYsIAotICAgIDEwNDc3MywgMTA0Nzc4LCAxMDQ3ODMsIDEwNDc5MiwgMTA0Nzk5LCAxMDQ4MDQsIDEwNDgwOSwgMTA0ODE0LCAxMDQ4MTksIAotICAgIDEwNDgyNCwgMTA0ODI5LCAxMDQ4MzQsIDEwNDgzOSwgMTA0ODQ0LCAxMDQ4NDksIDEwNDg1NCwgMTA0ODU5LCAxMDQ4NjQsIAotICAgIDEwNDg2OSwgMTA0ODc0LCAxMDQ4NzksIDEwNDg4NCwgMTA0ODg5LCAxMDQ4OTQsIDEwNDg5OSwgMTA0OTA0LCAxMDQ5MTAsIAotICAgIDEwNDkxOCwgMTA0OTI0LCAxMDQ5MzIsIDEwNDk0MCwgMTA0OTQ4LCAxMDQ5NTQsIDEwNDk2MCwgMTA0OTY2LCAxMDQ5NzIsIAotICAgIDEwNDk3OCwgMTA0OTg2LCAxMDQ5OTYsIDEwNTAwNCwgMTA1MDEyLCAxMDUwMTgsIDEwNTAyNCwgMTA1MDMyLCAxMDUwNDAsIAotICAgIDEwNTA0NiwgMTA1MDU0LCAxMDUwNjIsIDEwNTA3MCwgMTA1MDc2LCAxMDUwODIsIDEwNTA4OCwgMTA1MDk0LCAxMDUxMDAsIAotICAgIDEwNTEwNiwgMTA1MTE0LCAxMDUxMjIsIDEwNTEyOCwgMTA1MTM0LCAxMDUxNDAsIDEwNTE0NiwgMTA1MTUyLCAxMDUxNjAsIAotICAgIDEwNTE2NiwgMTA1MTcyLCAxMDUxNzgsIDEwNTE4NCwgMTA1MTkwLCAxMDUxOTYsIDEwNTIwNCwgMTA1MjEwLCAxMDUyMTYsIAotICAgIDEwNTIyMiwgMTA1MjI4LCAxMDUyMzYsIDEwNTI0NCwgMTA1MjUwLCAxMDUyNTYsIDEwNTI2MiwgMTA1MjY3LCAxMDUyNzMsIAotICAgIDEwNTI3OSwgMTA1Mjg2LCAxMDUyOTEsIDEwNTI5NiwgMTA1MzAxLCAxMDUzMDYsIDEwNTMxMSwgMTA1MzE2LCAxMDUzMjEsIAotICAgIDEwNTMyNiwgMTA1MzMxLCAxMDUzNDAsIDEwNTM0NywgMTA1MzUyLCAxMDUzNTcsIDEwNTM2MiwgMTA1MzY5LCAxMDUzNzQsIAotICAgIDEwNTM3OSwgMTA1Mzg0LCAxMDUzOTEsIDEwNTM5NiwgMTA1NDAxLCAxMDU0MDYsIDEwNTQxMSwgMTA1NDE2LCAxMDU0MjEsIAotICAgIDEwNTQyNiwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MSwgMTA1NDQ2LCAxMDU0NTMsIDEwNTQ1OCwgMTA1NDY1LCAxMDU0NzAsIAotICAgIDEwNTQ3NSwgMTA1NDgyLCAxMDU0ODcsIDEwNTQ5MiwgMTA1NDk3LCAxMDU1MDIsIDEwNTUwNywgMTA1NTEyLCAxMDU1MTcsIAotICAgIDEwNTUyMiwgMTA1NTI3LCAxMDU1MzIsIDEwNTUzNywgMTA1NTQyLCAxMDU1NDcsIDEwNTU1MiwgMTA1NTU3LCAxMDU1NjIsIAotICAgIDEwNTU2NywgMTA1NTcyLCAxMDU1NzcsIDEwNTU4NCwgMTA1NTg5LCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAxMDU2MDksIAotICAgIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAxMDU2NTYsIAotICAgIDEwNTY2MSwgMTA1NjY2LCAxMDU2NzMsIDEwNTY3OCwgMTA1NjgzLCAxMDU2ODgsIDEwNTY5MywgMTA1Njk4LCAxMDU3MDMsIAotICAgIDEwNTcwOCwgMTA1NzEzLCAxMDU3MTgsIDEwNTcyMywgMTA1NzMwLCAxMDU3MzUsIDEwNTc0MCwgMTA1NzQ1LCAxMDU3NTAsIAotICAgIDEwNTc1NSwgMTA1NzYyLCAxMDU3NjksIDEwNTc3NCwgMTA1Nzc5LCAxMDU3ODQsIDEwNTc4OSwgMTA1Nzk0LCAxMDU3OTksIAotICAgIDEwNTgwNCwgMTA1ODA5LCAxMDU4MTQsIDEwNTgxOSwgMTA1ODI0LCAxMDU4MjksIDEwNTgzNCwgMTA1ODM5LCAxMDU4NDQsIAotICAgIDEwNTg0OSwgMTA1ODU0LCAxMDU4NTksIDEwNTg2NCwgMTA1ODY5LCAxMDU4NzQsIDEwNTg3OSwgMTA1ODg0LCAxMDU4ODksIAotICAgIDEwNTg5NCwgMTA1ODk5LCAxMDU5MDQsIDEwNTkwOSwgMTA1OTE0LCAxMDU5MTksIDEwNTkyNCwgMTA1OTI5LCAxMDU5MzQsIAotICAgIDEwNTkzOSwgMTA1OTQ0LCAxMDU5NDksIDEwNTk1NiwgMTA1OTYxLCAxMDU5NjYsIDEwNTk3MSwgMTA1OTc2LCAxMDU5ODEsIAotICAgIDEwNTk4NiwgMTA1OTkxLCAxMDU5OTYsIDEwNjAwMSwgMTA2MDA2LCAxMDYwMTEsIDEwNjAxNiwgMTA2MDIxLCAxMDYwMjYsIAotICAgIDEwNjAzMSwgMTA2MDM2LCAxMDYwNDEsIDEwNjA0NiwgMTA2MDUxLCAxMDYwNTYsIDEwNjA2MSwgMTA2MDY2LCAxMDYwNzEsIAotICAgIDEwNjA3NiwgMTA2MDgxLCAxMDYwODYsIDEwNjA5MSwgMTA2MDk2LCAxMDYxMDEsIDEwNjEwNiwgMTA2MTExLCAxMDYxMTYsIAotICAgIDEwNjEyMSwgMTA2MTI2LCAxMDYxMzEsIDEwNjEzNiwgMTA2MTQxLCAxMDYxNDYsIDEwNjE1MSwgMTA2MTU2LCAxMDYxNjEsIAotICAgIDEwNjE2NiwgMTA2MTcxLCAxMDYxNzYsIDEwNjE4MSwgMTA2MTg2LCAxMDYxOTEsIDEwNjE5NiwgMTA2MjAxLCAxMDYyMDYsIAotICAgIDEwNjIxMSwgMTA2MjE2LCAxMDYyMjEsIDEwNjIyNiwgMTA2MjMxLCAxMDYyMzYsIDEwNjI0MSwgMTA2MjQ2LCAxMDYyNTMsIAotICAgIDEwNjI1OCwgMTA2MjYzLCAxMDYyNjgsIDEwNjI3MywgMTA2Mjc4LCAxMDYyODMsIDEwNjI4NywgMTA2MjkyLCAxMDYyOTcsIAotICAgIDEwNjMwMiwgMTA2MzA3LCAxMDYzMTIsIDEwNjMxNywgMTA2MzIyLCAxMDYzMjcsIDEwNjMzMiwgMTA2MzM3LCAxMDYzNDIsIAotICAgIDEwNjM0NywgMTA2MzUyLCAxMDYzNTcsIDEwNjM2NCwgMTA2MzY5LCAxMDYzNzQsIDEwNjM4MCwgMTA2Mzg1LCAxMDYzOTAsIAotICAgIDEwNjM5NSwgMTA2NDAwLCAxMDY0MDUsIDEwNjQxMCwgMTA2NDE1LCAxMDY0MjAsIDEwNjQyNSwgMTA2NDMwLCAxMDY0MzUsIAotICAgIDEwNjQ0MCwgMTA2NDQ1LCAxMDY0NTAsIDEwNjQ1NSwgMTA2NDYwLCAxMDY0NjUsIDEwNjQ3MCwgMTA2NDc1LCAxMDY0ODAsIAotICAgIDEwNjQ4NSwgMTA2NDkwLCAxMDY0OTUsIDEwNjUwMCwgMTA2NTA1LCAxMDY1MTAsIDEwNjUxNSwgMTA2NTIwLCAxMDY1MjUsIAotICAgIDEwNjUzMCwgMTA2NTM1LCAxMDY1NDAsIDEwNjU0NSwgMTA2NTUwLCAxMDY1NTUsIDEwNjU2MCwgMTA2NTY1LCAxMDY1NzAsIAotICAgIDEwNjU3NSwgMTA2NTgwLCAxMDY1ODUsIDEwNjU5MCwgMTA2NTk1LCAxMDY2MDIsIDEwNjYwNywgMTA2NjEyLCAxMDY2MTksIAotICAgIDEwNjYyNiwgMTA2NjMxLCAxMDY2MzYsIDEwNjY0MSwgMTA2NjQ2LCAxMDY2NTEsIDEwNjY1NiwgMTA2NjYxLCAxMDY2NjYsIAotICAgIDEwNjY3MSwgMTA2Njc2LCAxMDY2ODEsIDEwNjY4NiwgMTA2NjkxLCAxMDY2OTYsIDEwNjcwMSwgMTA2NzA2LCAxMDY3MTEsIAotICAgIDEwNjcxNiwgMTA2NzIxLCAxMDY3MjYsIDEwNjczMSwgMTA2NzM2LCAxMDY3NDEsIDEwNjc0NiwgMTA2NzUxLCAxMDY3NTgsIAotICAgIDEwNjc2MywgMTA2NzY4LCAxMDY3NzMsIDEwNjc3OCwgMTA2NzgzLCAxMDY3ODgsIDEwNjc5MywgMTA2Nzk4LCAxMDY4MDMsIAotICAgIDEwNjgwOCwgMTA2ODEzLCAxMDY4MTgsIDEwNjgyMywgMTA2ODI4LCAxMDY4MzMsIDEwNjgzOCwgMTA2ODQzLCAxMDY4NDgsIAotICAgIDEwNjg1NSwgMTA2ODYwLCAxMDY4NjUsIDEwNjg3MCwgMTA2ODc1LCAxMDY4ODAsIDEwNjg4NSwgMTA2ODkwLCAxMDY4OTYsIAotICAgIDEwNjkwMSwgMTA2OTA2LCAxMDY5MTEsIDEwNjkxNiwgMTA2OTIxLCAxMDY5MjYsIDEwNjkzMSwgMTA2OTM2LCAxMDY5NDMsIAotICAgIDEwNjk1MCwgMTA2OTU1LCAxMDY5NjAsIDEwNjk2NCwgMTA2OTY5LCAxMDY5NzMsIDEwNjk3NywgMTA2OTgyLCAxMDY5ODksIAotICAgIDEwNjk5NCwgMTA2OTk5LCAxMDcwMDgsIDEwNzAxMywgMTA3MDE4LCAxMDcwMjMsIDEwNzAyOCwgMTA3MDM1LCAxMDcwNDIsIAotICAgIDEwNzA0NywgMTA3MDUyLCAxMDcwNTcsIDEwNzA2MiwgMTA3MDY5LCAxMDcwNzQsIDEwNzA3OSwgMTA3MDg0LCAxMDcwODksIAotICAgIDEwNzA5NCwgMTA3MDk5LCAxMDcxMDQsIDEwNzEwOSwgMTA3MTE0LCAxMDcxMTksIDEwNzEyNCwgMTA3MTI5LCAxMDcxMzYsIAotICAgIDEwNzE0MCwgMTA3MTQ1LCAxMDcxNTAsIDEwNzE1NSwgMTA3MTYwLCAxMDcxNjQsIDEwNzE2OSwgMTA3MTc0LCAxMDcxNzksIAotICAgIDEwNzE4NCwgMTA3MTg5LCAxMDcxOTQsIDEwNzE5OSwgMTA3MjA0LCAxMDcyMDksIDEwNzIxNSwgMTA3MjIxLCAxMDcyMjcsIAotICAgIDEwNzIzMywgMTA3MjM5LCAxMDcyNDUsIDEwNzI1MSwgMTA3MjU3LCAxMDcyNjMsIDEwNzI2OSwgMTA3Mjc1LCAxMDcyODEsIAotICAgIDEwNzI4NiwgMTA3MjkyLCAxMDcyOTgsIDEwNzMwNCwgMTA3MzEwLCAxMDczMTYsIDEwNzMyMiwgMTA3MzI4LCAxMDczMzQsIAotICAgIDEwNzM0MCwgMTA3MzQ2LCAxMDczNTIsIDEwNzM1NywgMTA3MzYzLCAxMDczNjksIDEwNzM3NSwgMTA3MzgxLCAxMDczODcsIAotICAgIDEwNzM5MywgMTA3Mzk5LCAxMDc0MDUsIDEwNzQxMSwgMTA3NDE3LCAxMDc0MjMsIDEwNzQyOSwgMTA3NDM1LCAxMDc0NDEsIAotICAgIDEwNzQ0NywgMTA3NDUzLCAxMDc0NTksIDEwNzQ2NSwgMTA3NDcxLCAxMDc0NzcsIDEwNzQ4MiwgMTA3NDg4LCAxMDc0OTQsIAotICAgIDEwNzUwMCwgMTA3NTA2LCAxMDc1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzAwMiwgMTA3MDA5LCAxMDcwMTYsIDEwNzAyNSwgMTA3MDM0LCAKKyAgICAxMDcwNDEsIDEwNzA0NiwgMTA3MDUzLCAxMDcwNjAsIDEwNzA2OSwgMTA3MDgwLCAxMDcwOTEsIDEwNzA5NiwgMTA3MTAzLCAKKyAgICAxMDcxMDgsIDEwNzExMywgMTA3MTE4LCAxMDcxMjMsIDEwNzEyOCwgMTA3MTMzLCAxMDcxMzgsIDEwNzE0MywgMTA3MTQ4LCAKKyAgICAxMDcxNTMsIDEwNzE1OCwgMTA3MTY1LCAxMDcxNzIsIDEwNzE3NywgMTA3MTgyLCAxMDcxODcsIDEwNzE5MiwgMTA3MTk5LCAKKyAgICAxMDcyMDYsIDEwNzIxNCwgMTA3MjE5LCAxMDcyMjYsIDEwNzIzMSwgMTA3MjM2LCAxMDcyNDEsIDEwNzI0NiwgMTA3MjUxLCAKKyAgICAxMDcyNTgsIDEwNzI2NSwgMTA3MjcwLCAxMDcyNzUsIDEwNzI4MCwgMTA3Mjg1LCAxMDcyOTAsIDEwNzI5NSwgMTA3MzAwLCAKKyAgICAxMDczMDUsIDEwNzMxMCwgMTA3MzE1LCAxMDczMjAsIDEwNzMyNSwgMTA3MzMwLCAxMDczMzUsIDEwNzM0MCwgMTA3MzQ1LCAKKyAgICAxMDczNTAsIDEwNzM1NSwgMTA3MzYwLCAxMDczNjcsIDEwNzM3MiwgMTA3Mzc3LCAxMDczODYsIDEwNzM5MywgMTA3Mzk4LCAKKyAgICAxMDc0MDMsIDEwNzQwOCwgMTA3NDEzLCAxMDc0MTgsIDEwNzQyMywgMTA3NDI4LCAxMDc0MzMsIDEwNzQzOCwgMTA3NDQzLCAKKyAgICAxMDc0NDgsIDEwNzQ1MywgMTA3NDU4LCAxMDc0NjMsIDEwNzQ2OCwgMTA3NDczLCAxMDc0NzgsIDEwNzQ4MywgMTA3NDg4LCAKKyAgICAxMDc0OTMsIDEwNzQ5OCwgMTA3NTA0LCAxMDc1MTIsIDEwNzUxOCwgMTA3NTI2LCAxMDc1MzQsIDEwNzU0MiwgMTA3NTQ4LCAKKyAgICAxMDc1NTQsIDEwNzU2MCwgMTA3NTY2LCAxMDc1NzIsIDEwNzU4MCwgMTA3NTkwLCAxMDc1OTgsIDEwNzYwNiwgMTA3NjEyLCAKKyAgICAxMDc2MTgsIDEwNzYyNiwgMTA3NjM0LCAxMDc2NDAsIDEwNzY0OCwgMTA3NjU2LCAxMDc2NjQsIDEwNzY3MCwgMTA3Njc2LCAKKyAgICAxMDc2ODIsIDEwNzY4OCwgMTA3Njk0LCAxMDc3MDAsIDEwNzcwOCwgMTA3NzE2LCAxMDc3MjIsIDEwNzcyOCwgMTA3NzM0LCAKKyAgICAxMDc3NDAsIDEwNzc0NiwgMTA3NzU0LCAxMDc3NjAsIDEwNzc2NiwgMTA3NzcyLCAxMDc3NzgsIDEwNzc4NCwgMTA3NzkwLCAKKyAgICAxMDc3OTgsIDEwNzgwNCwgMTA3ODEwLCAxMDc4MTYsIDEwNzgyMiwgMTA3ODMwLCAxMDc4MzgsIDEwNzg0NCwgMTA3ODUwLCAKKyAgICAxMDc4NTYsIDEwNzg2MSwgMTA3ODY3LCAxMDc4NzMsIDEwNzg4MCwgMTA3ODg1LCAxMDc4OTAsIDEwNzg5NSwgMTA3OTAwLCAKKyAgICAxMDc5MDUsIDEwNzkxMCwgMTA3OTE1LCAxMDc5MjAsIDEwNzkyNSwgMTA3OTM0LCAxMDc5NDEsIDEwNzk0NiwgMTA3OTUxLCAKKyAgICAxMDc5NTYsIDEwNzk2MywgMTA3OTY4LCAxMDc5NzMsIDEwNzk3OCwgMTA3OTg1LCAxMDc5OTAsIDEwNzk5NSwgMTA4MDAwLCAKKyAgICAxMDgwMDUsIDEwODAxMCwgMTA4MDE1LCAxMDgwMjAsIDEwODAyNSwgMTA4MDMwLCAxMDgwMzUsIDEwODA0MCwgMTA4MDQ3LCAKKyAgICAxMDgwNTIsIDEwODA1OSwgMTA4MDY0LCAxMDgwNjksIDEwODA3NiwgMTA4MDgxLCAxMDgwODYsIDEwODA5MSwgMTA4MDk2LCAKKyAgICAxMDgxMDEsIDEwODEwNiwgMTA4MTExLCAxMDgxMTYsIDEwODEyMSwgMTA4MTI2LCAxMDgxMzEsIDEwODEzNiwgMTA4MTQxLCAKKyAgICAxMDgxNDYsIDEwODE1MSwgMTA4MTU2LCAxMDgxNjEsIDEwODE2NiwgMTA4MTcxLCAxMDgxNzgsIDEwODE4MywgMTA4MTg4LCAKKyAgICAxMDgxOTMsIDEwODE5OCwgMTA4MjAzLCAxMDgyMDgsIDEwODIxMywgMTA4MjE4LCAxMDgyMjMsIDEwODIyOCwgMTA4MjMzLCAKKyAgICAxMDgyMzgsIDEwODI0MywgMTA4MjUwLCAxMDgyNTUsIDEwODI2MCwgMTA4MjY3LCAxMDgyNzIsIDEwODI3NywgMTA4MjgyLCAKKyAgICAxMDgyODcsIDEwODI5MiwgMTA4Mjk3LCAxMDgzMDIsIDEwODMwNywgMTA4MzEyLCAxMDgzMTcsIDEwODMyNCwgMTA4MzI5LCAKKyAgICAxMDgzMzQsIDEwODMzOSwgMTA4MzQ0LCAxMDgzNDksIDEwODM1NiwgMTA4MzYzLCAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAKKyAgICAxMDgzODMsIDEwODM4OCwgMTA4MzkzLCAxMDgzOTgsIDEwODQwMywgMTA4NDA4LCAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAKKyAgICAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUzLCAxMDg0NTgsIDEwODQ2MywgMTA4NDY4LCAKKyAgICAxMDg0NzMsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDEwODQ5MywgMTA4NDk4LCAxMDg1MDMsIDEwODUwOCwgMTA4NTEzLCAKKyAgICAxMDg1MTgsIDEwODUyMywgMTA4NTI4LCAxMDg1MzMsIDEwODUzOCwgMTA4NTQzLCAxMDg1NTAsIDEwODU1NSwgMTA4NTYwLCAKKyAgICAxMDg1NjUsIDEwODU3MCwgMTA4NTc1LCAxMDg1ODAsIDEwODU4NSwgMTA4NTkwLCAxMDg1OTUsIDEwODYwMCwgMTA4NjA1LCAKKyAgICAxMDg2MTAsIDEwODYxNSwgMTA4NjIwLCAxMDg2MjUsIDEwODYzMCwgMTA4NjM1LCAxMDg2NDAsIDEwODY0NSwgMTA4NjUwLCAKKyAgICAxMDg2NTUsIDEwODY2MCwgMTA4NjY1LCAxMDg2NzAsIDEwODY3NSwgMTA4NjgwLCAxMDg2ODUsIDEwODY5MCwgMTA4Njk1LCAKKyAgICAxMDg3MDAsIDEwODcwNSwgMTA4NzEwLCAxMDg3MTUsIDEwODcyMCwgMTA4NzI1LCAxMDg3MzAsIDEwODczNSwgMTA4NzQwLCAKKyAgICAxMDg3NDUsIDEwODc1MCwgMTA4NzU1LCAxMDg3NjAsIDEwODc2NSwgMTA4NzcwLCAxMDg3NzUsIDEwODc4MCwgMTA4Nzg1LCAKKyAgICAxMDg3OTAsIDEwODc5NSwgMTA4ODAwLCAxMDg4MDUsIDEwODgxMCwgMTA4ODE1LCAxMDg4MjAsIDEwODgyNSwgMTA4ODMwLCAKKyAgICAxMDg4MzUsIDEwODg0MCwgMTA4ODQ3LCAxMDg4NTIsIDEwODg1NywgMTA4ODYyLCAxMDg4NjcsIDEwODg3MiwgMTA4ODc3LCAKKyAgICAxMDg4ODEsIDEwODg4NiwgMTA4ODkxLCAxMDg4OTYsIDEwODkwMSwgMTA4OTA2LCAxMDg5MTEsIDEwODkxNiwgMTA4OTIxLCAKKyAgICAxMDg5MjYsIDEwODkzMSwgMTA4OTM2LCAxMDg5NDEsIDEwODk0NiwgMTA4OTUxLCAxMDg5NTgsIDEwODk2MywgMTA4OTY4LCAKKyAgICAxMDg5NzQsIDEwODk3OSwgMTA4OTg0LCAxMDg5ODksIDEwODk5NCwgMTA4OTk5LCAxMDkwMDQsIDEwOTAwOSwgMTA5MDE0LCAKKyAgICAxMDkwMTksIDEwOTAyNCwgMTA5MDI5LCAxMDkwMzQsIDEwOTAzOSwgMTA5MDQ0LCAxMDkwNDksIDEwOTA1NCwgMTA5MDU5LCAKKyAgICAxMDkwNjQsIDEwOTA2OSwgMTA5MDc0LCAxMDkwNzksIDEwOTA4NCwgMTA5MDg5LCAxMDkwOTQsIDEwOTA5OSwgMTA5MTA0LCAKKyAgICAxMDkxMDksIDEwOTExNCwgMTA5MTE5LCAxMDkxMjQsIDEwOTEyOSwgMTA5MTM0LCAxMDkxMzksIDEwOTE0NCwgMTA5MTQ5LCAKKyAgICAxMDkxNTQsIDEwOTE1OSwgMTA5MTY0LCAxMDkxNjksIDEwOTE3NCwgMTA5MTc5LCAxMDkxODQsIDEwOTE4OSwgMTA5MTk2LCAKKyAgICAxMDkyMDEsIDEwOTIwNiwgMTA5MjEzLCAxMDkyMjAsIDEwOTIyNSwgMTA5MjMwLCAxMDkyMzUsIDEwOTI0MCwgMTA5MjQ1LCAKKyAgICAxMDkyNTAsIDEwOTI1NSwgMTA5MjYwLCAxMDkyNjUsIDEwOTI3MCwgMTA5Mjc1LCAxMDkyODAsIDEwOTI4NSwgMTA5MjkwLCAKKyAgICAxMDkyOTUsIDEwOTMwMCwgMTA5MzA1LCAxMDkzMTAsIDEwOTMxNSwgMTA5MzIwLCAxMDkzMjUsIDEwOTMzMCwgMTA5MzM1LCAKKyAgICAxMDkzNDAsIDEwOTM0NSwgMTA5MzUyLCAxMDkzNTcsIDEwOTM2MiwgMTA5MzY3LCAxMDkzNzIsIDEwOTM3NywgMTA5MzgyLCAKKyAgICAxMDkzODcsIDEwOTM5MiwgMTA5Mzk3LCAxMDk0MDIsIDEwOTQwNywgMTA5NDEyLCAxMDk0MTcsIDEwOTQyMiwgMTA5NDI3LCAKKyAgICAxMDk0MzIsIDEwOTQzNywgMTA5NDQyLCAxMDk0NDksIDEwOTQ1NCwgMTA5NDU5LCAxMDk0NjQsIDEwOTQ2OSwgMTA5NDc0LCAKKyAgICAxMDk0NzksIDEwOTQ4NCwgMTA5NDkwLCAxMDk0OTUsIDEwOTUwMCwgMTA5NTA1LCAxMDk1MTAsIDEwOTUxNSwgMTA5NTIwLCAKKyAgICAxMDk1MjUsIDEwOTUzMCwgMTA5NTM3LCAxMDk1NDQsIDEwOTU0OSwgMTA5NTU0LCAxMDk1NTgsIDEwOTU2MywgMTA5NTY3LCAKKyAgICAxMDk1NzEsIDEwOTU3NiwgMTA5NTgzLCAxMDk1ODgsIDEwOTU5MywgMTA5NjAyLCAxMDk2MDcsIDEwOTYxMiwgMTA5NjE3LCAKKyAgICAxMDk2MjIsIDEwOTYyOSwgMTA5NjM2LCAxMDk2NDEsIDEwOTY0NiwgMTA5NjUxLCAxMDk2NTYsIDEwOTY2MywgMTA5NjY4LCAKKyAgICAxMDk2NzMsIDEwOTY3OCwgMTA5NjgzLCAxMDk2ODgsIDEwOTY5MywgMTA5Njk4LCAxMDk3MDMsIDEwOTcwOCwgMTA5NzEzLCAKKyAgICAxMDk3MTgsIDEwOTcyMywgMTA5NzMwLCAxMDk3MzQsIDEwOTczOSwgMTA5NzQ0LCAxMDk3NDksIDEwOTc1NCwgMTA5NzU4LCAKKyAgICAxMDk3NjMsIDEwOTc2OCwgMTA5NzczLCAxMDk3NzgsIDEwOTc4MywgMTA5Nzg4LCAxMDk3OTMsIDEwOTc5OCwgMTA5ODAzLCAKKyAgICAxMDk4MDksIDEwOTgxNSwgMTA5ODIxLCAxMDk4MjcsIDEwOTgzMywgMTA5ODM5LCAxMDk4NDUsIDEwOTg1MSwgMTA5ODU3LCAKKyAgICAxMDk4NjMsIDEwOTg2OSwgMTA5ODc1LCAxMDk4ODAsIDEwOTg4NiwgMTA5ODkyLCAxMDk4OTgsIDEwOTkwNCwgMTA5OTEwLCAKKyAgICAxMDk5MTYsIDEwOTkyMiwgMTA5OTI4LCAxMDk5MzQsIDEwOTk0MCwgMTA5OTQ2LCAxMDk5NTEsIDEwOTk1NywgMTA5OTYzLCAKKyAgICAxMDk5NjksIDEwOTk3NSwgMTA5OTgxLCAxMDk5ODcsIDEwOTk5MywgMTA5OTk5LCAxMTAwMDUsIDExMDAxMSwgMTEwMDE3LCAKKyAgICAxMTAwMjMsIDExMDAyOSwgMTEwMDM1LCAxMTAwNDEsIDExMDA0NywgMTEwMDUzLCAxMTAwNTksIDExMDA2NSwgMTEwMDcxLCAKKyAgICAxMTAwNzYsIDExMDA4MiwgMTEwMDg4LCAxMTAwOTQsIDExMDEwMCwgMTEwMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDc1MTgsIDEwNzUyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTEyLCAxMTAxMTUsIDExMDExOSwgCisgICAgMTEwMTIzLCAxMTAxMjcsIDExMDEzMCwgMTEwMTM0LCAxMTAxMzksIDExMDE0MywgMTEwMTQ3LCAxMTAxNTEsIDExMDE1NSwgCisgICAgMTEwMTU5LCAxMTAxNjQsIDExMDE2OSwgMTEwMTczLCAxMTAxNzcsIDExMDE4MCwgMTEwMTg0LCAxMTAxODksIDExMDE5NCwgCisgICAgMTEwMTk4LCAxMTAyMDIsIDExMDIwNiwgMTEwMjEwLCAxMTAyMTQsIDExMDIxOCwgMTEwMjIyLCAxMTAyMjYsIDExMDIzMCwgCisgICAgMTEwMjM0LCAxMTAyMzcsIDExMDI0MSwgMTEwMjQ1LCAxMTAyNDksIDExMDI1MywgMTEwMjU3LCAxMTAyNjEsIDExMDI2NywgCisgICAgMTEwMjcwLCAxMTAyNzQsIDExMDI3OCwgMTEwMjgyLCAxMTAyODYsIDExMDI5MCwgMTEwMjk0LCAxMTAyOTgsIDExMDMwMiwgCisgICAgMTEwMzA2LCAxMTAzMTEsIDExMDMxNiwgMTEwMzIyLCAxMTAzMjYsIDExMDMzMCwgMTEwMzM0LCAxMTAzMzgsIDExMDM0MiwgCisgICAgMTEwMzQ2LCAxMTAzNTEsIDExMDM1NCwgMTEwMzU4LCAxMTAzNjIsIDExMDM2NiwgMTEwMzcwLCAxMTAzNzYsIDExMDM4MCwgCisgICAgMTEwMzg0LCAxMTAzODgsIDExMDM5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMzk2LCAxMTA0MDAsIAorICAgIDExMDQwNCwgMTEwNDEwLCAxMTA0MTYsIDExMDQyMCwgMTEwNDI1LCAxMTA0MzAsIDExMDQzNSwgMTEwNDQwLCAxMTA0NDQsIAorICAgIDExMDQ0OSwgMTEwNDU0LCAxMTA0NTksIDExMDQ2MywgMTEwNDY4LCAxMTA0NzMsIDExMDQ3OCwgMTEwNDgyLCAxMTA0ODcsIAorICAgIDExMDQ5MiwgMTEwNDk3LCAxMTA1MDIsIDExMDUwNywgMTEwNTEyLCAxMTA1MTcsIDExMDUyMiwgMTEwNTI2LCAxMTA1MzEsIAorICAgIDExMDUzNiwgMTEwNTQxLCAxMTA1NDYsIDExMDU1MSwgMTEwNTU2LCAxMTA1NjEsIDExMDU2NiwgMTEwNTcxLCAxMTA1NzYsIAorICAgIDExMDU4MSwgMTEwNTg4LCAxMTA1OTMsIDExMDYwMCwgMTEwNjA1LCAxMTA2MTAsIDExMDYxNSwgMTEwNjIwLCAxMTA2MjUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDYzMCwgMTEwNjM0LCAxMTA2NDAsIAorICAgIDExMDY0MywgMTEwNjQ2LCAxMTA2NTAsIDExMDY1NCwgMTEwNjU4LCAxMTA2NjIsIDExMDY2NiwgMTEwNjcwLCAxMTA2NzQsIAorICAgIDExMDY4MCwgMTEwNjg2LCAxMTA2OTIsIDExMDY5OCwgMTEwNzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDc1MjksIDEwNzUzNCwgCi0gICAgMTA3NTM5LCAxMDc1NDQsIDEwNzU1MSwgMTA3NTU4LCAxMDc1NjUsIDEwNzU3MiwgMTA3NTc3LCAxMDc1ODIsIDEwNzU4NywgCi0gICAgMTA3NTkyLCAxMDc1OTksIDEwNzYwNCwgMTA3NjExLCAxMDc2MTgsIDEwNzYyMywgMTA3NjI4LCAxMDc2MzMsIDEwNzY0MCwgCi0gICAgMTA3NjQ1LCAxMDc2NTAsIDEwNzY1NywgMTA3NjY0LCAxMDc2NjksIDEwNzY3NCwgMTA3Njc5LCAxMDc2ODYsIDEwNzY5MywgCi0gICAgMTA3NzAwLCAxMDc3MDUsIDEwNzcxMCwgMTA3NzE3LCAxMDc3MjQsIDEwNzczMSwgMTA3NzM4LCAxMDc3NDMsIDEwNzc0OCwgCi0gICAgMTA3NzUzLCAxMDc3NjAsIDEwNzc2NSwgMTA3NzcwLCAxMDc3NzUsIDEwNzc4MiwgMTA3NzkxLCAxMDc3OTgsIDEwNzgwMywgCi0gICAgMTA3ODA4LCAxMDc4MTMsIDEwNzgxOCwgMTA3ODIzLCAxMDc4MjgsIDEwNzgzNywgMTA3ODQ0LCAxMDc4NDksIDEwNzg1NiwgCi0gICAgMTA3ODYzLCAxMDc4NjgsIDEwNzg3MywgMTA3ODc4LCAxMDc4ODUsIDEwNzg5MCwgMTA3ODk3LCAxMDc5MDQsIDEwNzkwOSwgCi0gICAgMTA3OTE0LCAxMDc5MTksIDEwNzkyNiwgMTA3OTMzLCAxMDc5MzgsIDEwNzk0MywgMTA3OTUwLCAxMDc5NTcsIDEwNzk2NCwgCi0gICAgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5OTEsIDEwODAwMCwgMTA4MDA5LCAxMDgwMTQsIDEwODAyMSwgCi0gICAgMTA4MDMwLCAxMDgwMzUsIDEwODA0MCwgMTA4MDQ1LCAxMDgwNTAsIDEwODA1NywgMTA4MDY0LCAxMDgwNzEsIDEwODA3OCwgCi0gICAgMTA4MDgzLCAxMDgwODgsIDEwODA5MywgMTA4MTAwLCAxMDgxMDcsIDEwODExNCwgMTA4MTE5LCAxMDgxMjQsIDEwODEzMSwgCi0gICAgMTA4MTM2LCAxMDgxNDMsIDEwODE0OCwgMTA4MTU1LCAxMDgxNjAsIDEwODE2NywgMTA4MTc0LCAxMDgxNzksIDEwODE4NCwgCi0gICAgMTA4MTg5LCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxNCwgMTA4MjE5LCAxMDgyMjYsIDEwODIzMywgCi0gICAgMTA4MjQwLCAxMDgyNDcsIDEwODI1NCwgMTA4MjYzLCAxMDgyNjgsIDEwODI3MywgMTA4MjgwLCAxMDgyODcsIDEwODI5MiwgCi0gICAgMTA4Mjk5LCAxMDgzMDYsIDEwODMxMywgMTA4MzIwLCAxMDgzMjcsIDEwODMzNCwgMTA4MzM5LCAxMDgzNDQsIDEwODM0OSwgCi0gICAgMTA4MzU0LCAxMDgzNTksIDEwODM2OCwgMTA4Mzc3LCAxMDgzODYsIDEwODM5NSwgMTA4NDA0LCAxMDg0MTMsIDEwODQyMiwgCi0gICAgMTA4NDMxLCAxMDg0MzYsIDEwODQ0NywgMTA4NDU4LCAxMDg0NjcsIDEwODQ3MiwgMTA4NDc3LCAxMDg0ODIsIDEwODQ4NywgCi0gICAgMTA4NDk2LCAxMDg1MDMsIDEwODUxMCwgMTA4NTE3LCAxMDg1MjQsIDEwODUzMSwgMTA4NTM4LCAxMDg1NDcsIDEwODU1NiwgCi0gICAgMTA4NTY3LCAxMDg1NzYsIDEwODU4NywgMTA4NTk2LCAxMDg2MDMsIDEwODYxMiwgMTA4NjIzLCAxMDg2MzIsIDEwODY0MSwgCi0gICAgMTA4NjUwLCAxMDg2NTksIDEwODY2NiwgMTA4NjczLCAxMDg2ODAsIDEwODY4OSwgMTA4Njk4LCAxMDg3MDksIDEwODcxOCwgCi0gICAgMTA4NzI3LCAxMDg3MzgsIDEwODc0MywgMTA4NzQ4LCAxMDg3NTksIDEwODc2NywgMTA4Nzc2LCAxMDg3ODUsIDEwODc5NCwgCi0gICAgMTA4ODA1LCAxMDg4MTQsIDEwODgyMywgMTA4ODM0LCAxMDg4NDUsIDEwODg1NiwgMTA4ODY3LCAxMDg4NzgsIDEwODg4OSwgCi0gICAgMTA4ODk2LCAxMDg5MDMsIDEwODkxMCwgMTA4OTE3LCAxMDg5MjgsIDEwODkzNywgMTA4OTQ0LCAxMDg5NTEsIDEwODk1OCwgCi0gICAgMTA4OTY5LCAxMDg5ODAsIDEwODk5MSwgMTA5MDAyLCAxMDkwMTMsIDEwOTAyNCwgMTA5MDM1LCAxMDkwNDYsIDEwOTA1MywgCi0gICAgMTA5MDYwLCAxMDkwNjksIDEwOTA3OCwgMTA5MDg1LCAxMDkwOTIsIDEwOTA5OSwgMTA5MTA4LCAxMDkxMTcsIDEwOTEyNiwgCi0gICAgMTA5MTMzLCAxMDkxNDIsIDEwOTE1MSwgMTA5MTYwLCAxMDkxNjcsIDEwOTE3NCwgMTA5MTc5LCAxMDkxODUsIDEwOTE5MiwgCi0gICAgMTA5MTk5LCAxMDkyMDYsIDEwOTIxMywgMTA5MjIwLCAxMDkyMjcsIDEwOTIzNiwgMTA5MjQ1LCAxMDkyNTQsIDEwOTI2MywgCi0gICAgMTA5MjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDkyNzksIDEwOTI4NSwgMTA5MjkwLCAxMDkyOTUsIAotICAgIDEwOTMwMiwgMTA5MzA4LCAxMDkzMTQsIDEwOTMyMCwgMTA5MzI2LCAxMDkzMzIsIDEwOTMzOCwgMTA5MzQ0LCAxMDkzNDgsIAotICAgIDEwOTM1MiwgMTA5MzU4LCAxMDkzNjQsIDEwOTM3MCwgMTA5Mzc0LCAxMDkzNzksIDEwOTM4NCwgMTA5Mzg4LCAxMDkzOTIsIAotICAgIDEwOTM5NSwgMTA5NDAxLCAxMDk0MDcsIDEwOTQxMywgMTA5NDE5LCAxMDk0MjUsIDEwOTQzMSwgMTA5NDM3LCAxMDk0NDMsIAotICAgIDEwOTQ0OSwgMTA5NDU5LCAxMDk0NjksIDEwOTQ3NSwgMTA5NDgxLCAxMDk0OTEsIDEwOTUwMSwgMTA5NTA3LCAwLCAwLCAKLSAgICAxMDk1MTMsIDEwOTUyMSwgMTA5NTI2LCAxMDk1MzEsIDEwOTUzNywgMTA5NTQzLCAxMDk1NDksIDEwOTU1NSwgMTA5NTYxLCAKLSAgICAxMDk1NjcsIDEwOTU3NCwgMTA5NTgxLCAxMDk1ODcsIDEwOTU5MywgMTA5NTk5LCAxMDk2MDUsIDEwOTYxMSwgMTA5NjE3LCAKLSAgICAxMDk2MjMsIDEwOTYyOSwgMTA5NjM0LCAxMDk2NDAsIDEwOTY0NiwgMTA5NjUyLCAxMDk2NTgsIDEwOTY2NCwgMTA5NjczLCAKLSAgICAxMDk2NzksIDEwOTY4NCwgMTA5NjkyLCAxMDk2OTksIDEwOTcwNiwgMTA5NzE1LCAxMDk3MjQsIDEwOTczMywgMTA5NzQyLCAKLSAgICAxMDk3NTEsIDEwOTc2MCwgMTA5NzY5LCAxMDk3NzgsIDEwOTc4OCwgMTA5Nzk4LCAxMDk4MDYsIDEwOTgxNCwgMTA5ODIzLCAKLSAgICAxMDk4MzIsIDEwOTgzOCwgMTA5ODQ0LCAxMDk4NTAsIDEwOTg1NiwgMTA5ODY0LCAxMDk4NzIsIDEwOTg3NiwgMTA5ODgyLCAKLSAgICAxMDk4ODcsIDEwOTg5MywgMTA5ODk5LCAxMDk5MDUsIDEwOTkxMSwgMTA5OTE3LCAxMDk5MjYsIDEwOTkzMSwgMTA5OTM4LCAKLSAgICAxMDk5NDMsIDEwOTk0OCwgMTA5OTUzLCAxMDk5NTksIDEwOTk2NSwgMTA5OTcxLCAxMDk5NzgsIDEwOTk4MywgMTA5OTg4LCAKLSAgICAxMDk5OTMsIDEwOTk5OCwgMTEwMDAzLCAxMTAwMDksIDExMDAxNSwgMTEwMDIxLCAxMTAwMjcsIDExMDAzMywgMTEwMDM5LCAKLSAgICAxMTAwNDUsIDExMDA1MSwgMTEwMDU2LCAxMTAwNjEsIDExMDA2NiwgMTEwMDcxLCAxMTAwNzYsIDExMDA4MSwgMTEwMDg2LCAKLSAgICAxMTAwOTEsIDExMDA5NywgMTEwMTAzLCAxMTAxMDgsIDExMDExMywgMTEwMTE4LCAxMTAxMjMsIDExMDEyOCwgMTEwMTM0LCAKLSAgICAxMTAxNDEsIDExMDE0NSwgMTEwMTQ5LCAxMTAxNTMsIDExMDE1NywgMTEwMTYxLCAxMTAxNjUsIDExMDE2OSwgMTEwMTczLCAKLSAgICAxMTAxODEsIDExMDE5MSwgMTEwMTk1LCAxMTAxOTksIDExMDIwNSwgMTEwMjExLCAxMTAyMTcsIDExMDIyMywgMTEwMjI5LCAKLSAgICAxMTAyMzUsIDExMDI0MSwgMTEwMjQ3LCAxMTAyNTMsIDExMDI1OSwgMTEwMjY1LCAxMTAyNzEsIDExMDI3NywgMTEwMjgzLCAKLSAgICAxMTAyODcsIDExMDI5MSwgMTEwMjk4LCAxMTAzMDQsIDExMDMxMCwgMTEwMzE2LCAxMTAzMjEsIDExMDMyOCwgMTEwMzMzLCAKLSAgICAxMTAzMzksIDExMDM0NSwgMTEwMzUxLCAxMTAzNTcsIDExMDM2MiwgMTEwMzY2LCAxMTAzNzIsIDExMDM3NiwgMTEwMzgwLCAKLSAgICAxMTAzODQsIDExMDM5MCwgMTEwMzk2LCAxMTA0MDAsIDExMDQwNiwgMTEwNDEyLCAxMTA0MTgsIDExMDQyNCwgMTEwNDMwLCAKLSAgICAxMTA0MzgsIDExMDQ0NiwgMTEwNDUyLCAxMTA0NTgsIDExMDQ2NCwgMTEwNDcwLCAxMTA0ODIsIDExMDQ5NCwgMTEwNTA4LCAKLSAgICAxMTA1MjAsIDExMDUzMiwgMTEwNTQ2LCAxMTA1NjAsIDExMDU3NCwgMTEwNTc4LCAxMTA1ODYsIDExMDU5NCwgMTEwNTk5LCAKLSAgICAxMTA2MDMsIDExMDYwNywgMTEwNjExLCAxMTA2MTUsIDExMDYxOSwgMTEwNjIzLCAxMTA2MjcsIDExMDYzMywgMTEwNjM5LCAKLSAgICAxMTA2NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDY1MSwgMTEwNjU3LCAxMTA2NjMsIDExMDY2OSwgCi0gICAgMTEwNjc1LCAxMTA2ODEsIDExMDY4NywgMTEwNjkzLCAxMTA2OTksIDExMDcwNSwgMTEwNzExLCAxMTA3MTcsIDExMDcyMywgCi0gICAgMTEwNzI5LCAxMTA3MzUsIDExMDc0MSwgMTEwNzQ3LCAxMTA3NTMsIDExMDc1OSwgMTEwNzY1LCAxMTA3NzEsIDExMDc3NywgCi0gICAgMTEwNzgzLCAxMTA3ODksIDExMDc5NSwgMTEwODAxLCAxMTA4MDcsIDExMDgxMywgMTEwODE5LCAxMTA4MjUsIDExMDgzMSwgCi0gICAgMTEwODM3LCAxMTA4NDMsIDExMDg0OSwgMTEwODU1LCAxMTA4NjEsIDExMDg2NywgMTEwODczLCAxMTA4NzksIDExMDg4NSwgCi0gICAgMTEwODkxLCAxMTA4OTcsIDExMDkwMywgMTEwOTA5LCAxMTA5MTUsIDExMDkyMSwgMTEwOTI3LCAxMTA5MzMsIDExMDkzOSwgCi0gICAgMTEwOTQ1LCAxMTA5NTEsIDExMDk1NywgMTEwOTYzLCAxMTA5NjksIDExMDk3NSwgMTEwOTgxLCAxMTA5ODcsIDExMDk5MywgCi0gICAgMTEwOTk5LCAxMTEwMDUsIDExMTAxMSwgMTExMDE3LCAxMTEwMjMsIDExMTAyOSwgMTExMDM1LCAxMTEwNDEsIDExMTA0NywgCi0gICAgMTExMDUyLCAxMTEwNTcsIDExMTA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExMDY2LCAxMTEwNzEsIAotICAgIDExMTA3OCwgMTExMDg1LCAxMTEwOTIsIDExMTA5OSwgMTExMTA0LCAxMTExMDgsIDExMTExNCwgMTExMTE4LCAxMTExMjIsIAotICAgIDExMTEyOCwgMTExMTMyLCAxMTExMzYsIDExMTE0MCwgMTExMTQ2LCAxMTExNTMsIDExMTE1NywgMTExMTYxLCAxMTExNjUsIAotICAgIDExMTE2OSwgMTExMTczLCAxMTExNzcsIDExMTE4MywgMTExMTg3LCAxMTExOTEsIDExMTE5NSwgMTExMTk5LCAxMTEyMDMsIAotICAgIDExMTIwNywgMTExMjExLCAxMTEyMTUsIDExMTIxOSwgMTExMjIzLCAxMTEyMjcsIDExMTIzMSwgMTExMjM2LCAxMTEyNDAsIAotICAgIDExMTI0NCwgMTExMjQ4LCAxMTEyNTIsIDExMTI1NiwgMTExMjYwLCAxMTEyNjQsIDExMTI2OCwgMTExMjcyLCAxMTEyNzksIAotICAgIDExMTI4MywgMTExMjkxLCAxMTEyOTUsIDExMTI5OSwgMTExMzAzLCAxMTEzMDcsIDExMTMxMSwgMTExMzE1LCAxMTEzMTksIAotICAgIDExMTMyNiwgMTExMzMwLCAxMTEzMzQsIDExMTMzOCwgMTExMzQyLCAxMTEzNDYsIDExMTM1MiwgMTExMzU2LCAxMTEzNjIsIAotICAgIDExMTM2NiwgMTExMzcwLCAxMTEzNzQsIDExMTM3OCwgMTExMzgyLCAxMTEzODYsIDExMTM5MCwgMTExMzk0LCAxMTEzOTgsIAotICAgIDExMTQwMiwgMTExNDA2LCAxMTE0MTAsIDExMTQxNCwgMTExNDE4LCAxMTE0MjIsIDExMTQyNiwgMTExNDMwLCAxMTE0MzQsIAotICAgIDExMTQzOCwgMTExNDQ2LCAxMTE0NTAsIDExMTQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExNDU4LCAKLSAgICAxMTE0NjYsIDExMTQ3NCwgMTExNDgyLCAxMTE0OTAsIDExMTQ5OCwgMTExNTA2LCAxMTE1MTQsIDExMTUyMiwgMTExNTMwLCAKLSAgICAxMTE1MzgsIDExMTU0NiwgMTExNTU0LCAxMTE1NjIsIDExMTU3MCwgMTExNTc4LCAxMTE1ODYsIDExMTU5NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExNjAyLCAxMTE2MDYsIDExMTYxMSwgMTExNjE2LCAxMTE2MjEsIAotICAgIDExMTYyNSwgMTExNjMwLCAxMTE2MzUsIDExMTY0MCwgMTExNjQ0LCAxMTE2NDksIDExMTY1NCwgMTExNjU4LCAxMTE2NjIsIAotICAgIDExMTY2NiwgMTExNjcwLCAxMTE2NzUsIDExMTY4MCwgMTExNjg0LCAxMTE2ODgsIDExMTY5MywgMTExNjk3LCAxMTE3MDIsIAotICAgIDExMTcwNywgMTExNzEyLCAxMTE3MTcsIDExMTcyMiwgMTExNzI2LCAxMTE3MzEsIDExMTczNiwgMTExNzQxLCAxMTE3NDUsIAotICAgIDExMTc1MCwgMTExNzU1LCAxMTE3NjAsIDExMTc2NCwgMTExNzY5LCAxMTE3NzQsIDExMTc3OCwgMTExNzgyLCAxMTE3ODYsIAotICAgIDExMTc5MCwgMTExNzk1LCAxMTE4MDAsIDExMTgwNCwgMTExODA4LCAxMTE4MTMsIDExMTgxNywgMTExODIyLCAxMTE4MjcsIAotICAgIDExMTgzMiwgMTExODM3LCAxMTE4NDIsIDExMTg0NiwgMTExODUxLCAxMTE4NTYsIDExMTg2MSwgMTExODY1LCAxMTE4NzAsIAotICAgIDExMTg3NSwgMTExODgwLCAxMTE4ODQsIDExMTg4OSwgMTExODk0LCAxMTE4OTgsIDExMTkwMiwgMTExOTA2LCAxMTE5MTAsIAotICAgIDExMTkxNSwgMTExOTIwLCAxMTE5MjQsIDExMTkyOCwgMTExOTMzLCAxMTE5MzcsIDExMTk0MiwgMTExOTQ3LCAxMTE5NTIsIAotICAgIDExMTk1NywgMTExOTYyLCAxMTE5NjYsIDExMTk3MSwgMTExOTc2LCAxMTE5ODEsIDExMTk4NSwgMTExOTkwLCAwLCAKLSAgICAxMTE5OTUsIDExMTk5OSwgMTEyMDA0LCAxMTIwMDksIDExMjAxMywgMTEyMDE3LCAxMTIwMjEsIDExMjAyNSwgMTEyMDMwLCAKLSAgICAxMTIwMzUsIDExMjAzOSwgMTEyMDQzLCAxMTIwNDgsIDExMjA1MiwgMTEyMDU3LCAxMTIwNjIsIDExMjA2NywgMTEyMDcyLCAKLSAgICAxMTIwNzcsIDExMjA4MiwgMTEyMDg4LCAxMTIwOTQsIDExMjEwMCwgMTEyMTA1LCAxMTIxMTEsIDExMjExNywgMTEyMTIzLCAKLSAgICAxMTIxMjgsIDExMjEzNCwgMTEyMTQwLCAxMTIxNDUsIDExMjE1MCwgMTEyMTU1LCAxMTIxNjAsIDExMjE2NiwgMTEyMTcyLCAKLSAgICAxMTIxNzcsIDExMjE4MiwgMTEyMTg4LCAxMTIxOTMsIDExMjE5OSwgMTEyMjA1LCAxMTIyMTEsIDExMjIxNywgMTEyMjIzLCAKLSAgICAxMTIyMjgsIDExMjIzNCwgMTEyMjQwLCAxMTIyNDYsIDExMjI1MSwgMTEyMjU3LCAxMTIyNjMsIDExMjI2OSwgMTEyMjc0LCAKLSAgICAxMTIyODAsIDExMjI4NiwgMTEyMjkxLCAxMTIyOTYsIDExMjMwMSwgMTEyMzA2LCAxMTIzMTIsIDExMjMxOCwgMTEyMzIzLCAKLSAgICAxMTIzMjgsIDExMjMzNCwgMTEyMzM5LCAxMTIzNDUsIDExMjM1MSwgMTEyMzU3LCAxMTIzNjMsIDExMjM2OSwgMCwgCi0gICAgMTEyMzczLCAxMTIzNzgsIDAsIDAsIDExMjM4MywgMCwgMCwgMTEyMzg4LCAxMTIzOTMsIDAsIDAsIDExMjM5OCwgMTEyNDAyLCAKLSAgICAxMTI0MDYsIDExMjQxMSwgMCwgMTEyNDE2LCAxMTI0MjAsIDExMjQyNSwgMTEyNDI5LCAxMTI0MzQsIDExMjQzOSwgCi0gICAgMTEyNDQ0LCAxMTI0NDksIDExMjQ1NCwgMTEyNDU4LCAxMTI0NjMsIDExMjQ2OCwgMCwgMTEyNDczLCAwLCAxMTI0NzgsIAotICAgIDExMjQ4MywgMTEyNDg3LCAxMTI0OTIsIDExMjQ5NywgMTEyNTAxLCAxMTI1MDUsIDAsIDExMjUwOSwgMTEyNTE0LCAKLSAgICAxMTI1MTksIDExMjUyMywgMTEyNTI3LCAxMTI1MzIsIDExMjUzNiwgMTEyNTQxLCAxMTI1NDYsIDExMjU1MSwgMTEyNTU2LCAKLSAgICAxMTI1NjEsIDExMjU2NiwgMTEyNTcyLCAxMTI1NzgsIDExMjU4NCwgMTEyNTg5LCAxMTI1OTUsIDExMjYwMSwgMTEyNjA3LCAKLSAgICAxMTI2MTIsIDExMjYxOCwgMTEyNjI0LCAxMTI2MjksIDExMjYzNCwgMTEyNjM5LCAxMTI2NDQsIDExMjY1MCwgMTEyNjU2LCAKLSAgICAxMTI2NjEsIDExMjY2NiwgMTEyNjcyLCAxMTI2NzcsIDExMjY4MywgMTEyNjg5LCAxMTI2OTUsIDExMjcwMSwgMTEyNzA3LCAKLSAgICAxMTI3MTIsIDExMjcxOCwgMTEyNzI0LCAxMTI3MzAsIDExMjczNSwgMTEyNzQxLCAxMTI3NDcsIDExMjc1MywgMTEyNzU4LCAKLSAgICAxMTI3NjQsIDExMjc3MCwgMTEyNzc1LCAxMTI3ODAsIDExMjc4NSwgMTEyNzkwLCAxMTI3OTYsIDExMjgwMiwgMTEyODA3LCAKLSAgICAxMTI4MTIsIDExMjgxOCwgMTEyODIzLCAxMTI4MjksIDExMjgzNSwgMTEyODQxLCAxMTI4NDcsIDExMjg1MywgMTEyODU3LCAKLSAgICAwLCAxMTI4NjIsIDExMjg2NywgMTEyODcxLCAxMTI4NzYsIDAsIDAsIDExMjg4MSwgMTEyODg2LCAxMTI4OTEsIDExMjg5NSwgCi0gICAgMTEyODk5LCAxMTI5MDMsIDExMjkwNywgMTEyOTEyLCAwLCAxMTI5MTcsIDExMjkyMSwgMTEyOTI2LCAxMTI5MzAsIAotICAgIDExMjkzNSwgMTEyOTQwLCAxMTI5NDUsIDAsIDExMjk1MCwgMTEyOTU0LCAxMTI5NTksIDExMjk2NCwgMTEyOTY5LCAKLSAgICAxMTI5NzMsIDExMjk3OCwgMTEyOTgzLCAxMTI5ODgsIDExMjk5MiwgMTEyOTk3LCAxMTMwMDIsIDExMzAwNiwgMTEzMDEwLCAKLSAgICAxMTMwMTQsIDExMzAxOCwgMTEzMDIzLCAxMTMwMjgsIDExMzAzMiwgMTEzMDM2LCAxMTMwNDEsIDExMzA0NSwgMTEzMDUwLCAKLSAgICAxMTMwNTUsIDExMzA2MCwgMTEzMDY1LCAxMTMwNzAsIDExMzA3NCwgMCwgMTEzMDc5LCAxMTMwODQsIDExMzA4OCwgCi0gICAgMTEzMDkzLCAwLCAxMTMwOTgsIDExMzEwMiwgMTEzMTA3LCAxMTMxMTIsIDExMzExNiwgMCwgMTEzMTIwLCAwLCAwLCAwLCAKLSAgICAxMTMxMjQsIDExMzEyOCwgMTEzMTMzLCAxMTMxMzcsIDExMzE0MiwgMTEzMTQ3LCAxMTMxNTIsIDAsIDExMzE1NywgCi0gICAgMTEzMTYxLCAxMTMxNjYsIDExMzE3MSwgMTEzMTc2LCAxMTMxODAsIDExMzE4NSwgMTEzMTkwLCAxMTMxOTUsIDExMzE5OSwgCi0gICAgMTEzMjA0LCAxMTMyMDksIDExMzIxMywgMTEzMjE3LCAxMTMyMjEsIDExMzIyNSwgMTEzMjMwLCAxMTMyMzUsIDExMzIzOSwgCi0gICAgMTEzMjQzLCAxMTMyNDgsIDExMzI1MiwgMTEzMjU3LCAxMTMyNjIsIDExMzI2NywgMTEzMjcyLCAxMTMyNzcsIDExMzI4MiwgCi0gICAgMTEzMjg4LCAxMTMyOTQsIDExMzMwMCwgMTEzMzA1LCAxMTMzMTEsIDExMzMxNywgMTEzMzIzLCAxMTMzMjgsIDExMzMzNCwgCi0gICAgMTEzMzQwLCAxMTMzNDUsIDExMzM1MCwgMTEzMzU1LCAxMTMzNjAsIDExMzM2NiwgMTEzMzcyLCAxMTMzNzcsIDExMzM4MiwgCi0gICAgMTEzMzg4LCAxMTMzOTMsIDExMzM5OSwgMTEzNDA1LCAxMTM0MTEsIDExMzQxNywgMTEzNDIzLCAxMTM0MjgsIDExMzQzNCwgCi0gICAgMTEzNDQwLCAxMTM0NDYsIDExMzQ1MSwgMTEzNDU3LCAxMTM0NjMsIDExMzQ2OSwgMTEzNDc0LCAxMTM0ODAsIDExMzQ4NiwgCi0gICAgMTEzNDkxLCAxMTM0OTYsIDExMzUwMSwgMTEzNTA2LCAxMTM1MTIsIDExMzUxOCwgMTEzNTIzLCAxMTM1MjgsIDExMzUzNCwgCi0gICAgMTEzNTM5LCAxMTM1NDUsIDExMzU1MSwgMTEzNTU3LCAxMTM1NjMsIDExMzU2OSwgMTEzNTczLCAxMTM1NzgsIDExMzU4MywgCi0gICAgMTEzNTg4LCAxMTM1OTIsIDExMzU5NywgMTEzNjAyLCAxMTM2MDcsIDExMzYxMSwgMTEzNjE2LCAxMTM2MjEsIDExMzYyNSwgCi0gICAgMTEzNjI5LCAxMTM2MzMsIDExMzYzNywgMTEzNjQyLCAxMTM2NDcsIDExMzY1MSwgMTEzNjU1LCAxMTM2NjAsIDExMzY2NCwgCi0gICAgMTEzNjY5LCAxMTM2NzQsIDExMzY3OSwgMTEzNjg0LCAxMTM2ODksIDExMzY5MywgMTEzNjk4LCAxMTM3MDMsIDExMzcwOCwgCi0gICAgMTEzNzEyLCAxMTM3MTcsIDExMzcyMiwgMTEzNzI3LCAxMTM3MzEsIDExMzczNiwgMTEzNzQxLCAxMTM3NDUsIDExMzc0OSwgCi0gICAgMTEzNzUzLCAxMTM3NTcsIDExMzc2MiwgMTEzNzY3LCAxMTM3NzEsIDExMzc3NSwgMTEzNzgwLCAxMTM3ODQsIDExMzc4OSwgCi0gICAgMTEzNzk0LCAxMTM3OTksIDExMzgwNCwgMTEzODA5LCAxMTM4MTQsIDExMzgyMCwgMTEzODI2LCAxMTM4MzIsIDExMzgzNywgCi0gICAgMTEzODQzLCAxMTM4NDksIDExMzg1NSwgMTEzODYwLCAxMTM4NjYsIDExMzg3MiwgMTEzODc3LCAxMTM4ODIsIDExMzg4NywgCi0gICAgMTEzODkyLCAxMTM4OTgsIDExMzkwNCwgMTEzOTA5LCAxMTM5MTQsIDExMzkyMCwgMTEzOTI1LCAxMTM5MzEsIDExMzkzNywgCi0gICAgMTEzOTQzLCAxMTM5NDksIDExMzk1NSwgMTEzOTYwLCAxMTM5NjYsIDExMzk3MiwgMTEzOTc4LCAxMTM5ODMsIDExMzk4OSwgCi0gICAgMTEzOTk1LCAxMTQwMDEsIDExNDAwNiwgMTE0MDEyLCAxMTQwMTgsIDExNDAyMywgMTE0MDI4LCAxMTQwMzMsIDExNDAzOCwgCi0gICAgMTE0MDQ0LCAxMTQwNTAsIDExNDA1NSwgMTE0MDYwLCAxMTQwNjYsIDExNDA3MSwgMTE0MDc3LCAxMTQwODMsIDExNDA4OSwgCi0gICAgMTE0MDk1LCAxMTQxMDEsIDExNDEwNiwgMTE0MTEyLCAxMTQxMTgsIDExNDEyNCwgMTE0MTI5LCAxMTQxMzUsIDExNDE0MSwgCi0gICAgMTE0MTQ3LCAxMTQxNTIsIDExNDE1OCwgMTE0MTY0LCAxMTQxNjksIDExNDE3NCwgMTE0MTc5LCAxMTQxODQsIDExNDE5MCwgCi0gICAgMTE0MTk2LCAxMTQyMDEsIDExNDIwNiwgMTE0MjEyLCAxMTQyMTcsIDExNDIyMywgMTE0MjI5LCAxMTQyMzUsIDExNDI0MSwgCi0gICAgMTE0MjQ3LCAxMTQyNTIsIDExNDI1OCwgMTE0MjY0LCAxMTQyNzAsIDExNDI3NSwgMTE0MjgxLCAxMTQyODcsIDExNDI5MywgCi0gICAgMTE0Mjk4LCAxMTQzMDQsIDExNDMxMCwgMTE0MzE1LCAxMTQzMjAsIDExNDMyNSwgMTE0MzMwLCAxMTQzMzYsIDExNDM0MiwgCi0gICAgMTE0MzQ3LCAxMTQzNTIsIDExNDM1OCwgMTE0MzYzLCAxMTQzNjksIDExNDM3NSwgMTE0MzgxLCAxMTQzODcsIDExNDM5MywgCi0gICAgMTE0Mzk5LCAxMTQ0MDYsIDExNDQxMywgMTE0NDIwLCAxMTQ0MjYsIDExNDQzMywgMTE0NDQwLCAxMTQ0NDcsIDExNDQ1MywgCi0gICAgMTE0NDYwLCAxMTQ0NjcsIDExNDQ3MywgMTE0NDc5LCAxMTQ0ODUsIDExNDQ5MSwgMTE0NDk4LCAxMTQ1MDUsIDExNDUxMSwgCi0gICAgMTE0NTE3LCAxMTQ1MjQsIDExNDUzMCwgMTE0NTM3LCAxMTQ1NDQsIDExNDU1MSwgMTE0NTU4LCAxMTQ1NjUsIDExNDU3MSwgCi0gICAgMTE0NTc4LCAxMTQ1ODUsIDExNDU5MiwgMTE0NTk4LCAxMTQ2MDUsIDExNDYxMiwgMTE0NjE5LCAxMTQ2MjUsIDExNDYzMiwgCi0gICAgMTE0NjM5LCAxMTQ2NDUsIDExNDY1MSwgMTE0NjU3LCAxMTQ2NjMsIDExNDY3MCwgMTE0Njc3LCAxMTQ2ODMsIDExNDY4OSwgCi0gICAgMTE0Njk2LCAxMTQ3MDIsIDExNDcwOSwgMTE0NzE2LCAxMTQ3MjMsIDExNDczMCwgMTE0NzM3LCAxMTQ3NDIsIDExNDc0OCwgCi0gICAgMTE0NzU0LCAxMTQ3NjAsIDExNDc2NSwgMTE0NzcxLCAxMTQ3NzcsIDExNDc4MywgMTE0Nzg4LCAxMTQ3OTQsIDExNDgwMCwgCi0gICAgMTE0ODA1LCAxMTQ4MTAsIDExNDgxNSwgMTE0ODIwLCAxMTQ4MjYsIDExNDgzMiwgMTE0ODM3LCAxMTQ4NDIsIDExNDg0OCwgCi0gICAgMTE0ODUzLCAxMTQ4NTksIDExNDg2NSwgMTE0ODcxLCAxMTQ4NzcsIDExNDg4MywgMTE0ODg4LCAxMTQ4OTQsIDExNDkwMCwgCi0gICAgMTE0OTA2LCAxMTQ5MTEsIDExNDkxNywgMTE0OTIzLCAxMTQ5MjksIDExNDkzNCwgMTE0OTQwLCAxMTQ5NDYsIDExNDk1MSwgCi0gICAgMTE0OTU2LCAxMTQ5NjEsIDExNDk2NiwgMTE0OTcyLCAxMTQ5NzgsIDExNDk4MywgMTE0OTg4LCAxMTQ5OTQsIDExNDk5OSwgCi0gICAgMTE1MDA1LCAxMTUwMTEsIDExNTAxNywgMTE1MDIzLCAxMTUwMjksIDExNTAzNSwgMCwgMCwgMTE1MDQyLCAxMTUwNDcsIAotICAgIDExNTA1MiwgMTE1MDU3LCAxMTUwNjIsIDExNTA2NywgMTE1MDcyLCAxMTUwNzcsIDExNTA4MiwgMTE1MDg3LCAxMTUwOTIsIAotICAgIDExNTA5NywgMTE1MTAyLCAxMTUxMDcsIDExNTExMiwgMTE1MTE3LCAxMTUxMjIsIDExNTEyNywgMTE1MTMzLCAxMTUxMzgsIAotICAgIDExNTE0MywgMTE1MTQ4LCAxMTUxNTMsIDExNTE1OCwgMTE1MTYzLCAxMTUxNjgsIDExNTE3MiwgMTE1MTc3LCAxMTUxODIsIAotICAgIDExNTE4NywgMTE1MTkyLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTIsIDExNTIxNywgMTE1MjIyLCAxMTUyMjcsIAotICAgIDExNTIzMiwgMTE1MjM3LCAxMTUyNDIsIDExNTI0NywgMTE1MjUyLCAxMTUyNTcsIDExNTI2MywgMTE1MjY4LCAxMTUyNzMsIAotICAgIDExNTI3OCwgMTE1MjgzLCAxMTUyODgsIDExNTI5MywgMTE1Mjk4LCAxMTUzMDQsIDExNTMwOSwgMTE1MzE0LCAxMTUzMTksIAotICAgIDExNTMyNCwgMTE1MzI5LCAxMTUzMzQsIDExNTMzOSwgMTE1MzQ0LCAxMTUzNDksIDExNTM1NCwgMTE1MzU5LCAxMTUzNjQsIAotICAgIDExNTM2OSwgMTE1Mzc0LCAxMTUzNzksIDExNTM4NCwgMTE1Mzg5LCAxMTUzOTQsIDExNTM5OSwgMTE1NDA0LCAxMTU0MDksIAotICAgIDExNTQxNCwgMTE1NDE5LCAxMTU0MjUsIDExNTQzMCwgMTE1NDM1LCAxMTU0NDAsIDExNTQ0NSwgMTE1NDUwLCAxMTU0NTUsIAotICAgIDExNTQ2MCwgMTE1NDY0LCAxMTU0NjksIDExNTQ3NCwgMTE1NDc5LCAxMTU0ODQsIDExNTQ4OSwgMTE1NDk0LCAxMTU0OTksIAotICAgIDExNTUwNCwgMTE1NTA5LCAxMTU1MTQsIDExNTUxOSwgMTE1NTI0LCAxMTU1MjksIDExNTUzNCwgMTE1NTM5LCAxMTU1NDQsIAotICAgIDExNTU0OSwgMTE1NTU1LCAxMTU1NjAsIDExNTU2NSwgMTE1NTcwLCAxMTU1NzUsIDExNTU4MCwgMTE1NTg1LCAxMTU1OTAsIAotICAgIDExNTU5NiwgMTE1NjAxLCAxMTU2MDYsIDExNTYxMSwgMTE1NjE2LCAxMTU2MjEsIDExNTYyNiwgMTE1NjMyLCAxMTU2MzgsIAotICAgIDExNTY0NCwgMTE1NjUwLCAxMTU2NTYsIDExNTY2MiwgMTE1NjY4LCAxMTU2NzQsIDExNTY4MCwgMTE1Njg2LCAxMTU2OTIsIAotICAgIDExNTY5OCwgMTE1NzA0LCAxMTU3MTAsIDExNTcxNiwgMTE1NzIyLCAxMTU3MjgsIDExNTczNSwgMTE1NzQxLCAxMTU3NDcsIAotICAgIDExNTc1MywgMTE1NzU5LCAxMTU3NjUsIDExNTc3MSwgMTE1Nzc3LCAxMTU3ODIsIDExNTc4OCwgMTE1Nzk0LCAxMTU4MDAsIAotICAgIDExNTgwNiwgMTE1ODEyLCAxMTU4MTgsIDExNTgyNCwgMTE1ODMwLCAxMTU4MzYsIDExNTg0MiwgMTE1ODQ4LCAxMTU4NTQsIAotICAgIDExNTg2MCwgMTE1ODY2LCAxMTU4NzIsIDExNTg3OCwgMTE1ODg0LCAxMTU4OTEsIDExNTg5NywgMTE1OTAzLCAxMTU5MDksIAotICAgIDExNTkxNSwgMTE1OTIxLCAxMTU5MjcsIDExNTkzMywgMTE1OTQwLCAxMTU5NDYsIDExNTk1MiwgMTE1OTU4LCAxMTU5NjQsIAotICAgIDExNTk3MCwgMTE1OTc2LCAxMTU5ODIsIDExNTk4OCwgMTE1OTk0LCAxMTYwMDAsIDExNjAwNiwgMTE2MDEyLCAxMTYwMTgsIAotICAgIDExNjAyNCwgMTE2MDMwLCAxMTYwMzYsIDExNjA0MiwgMTE2MDQ4LCAxMTYwNTQsIDExNjA2MCwgMTE2MDY2LCAxMTYwNzIsIAotICAgIDExNjA3OCwgMTE2MDg1LCAxMTYwOTEsIDExNjA5NywgMTE2MTAzLCAxMTYxMDksIDExNjExNSwgMTE2MTIxLCAxMTYxMjcsIAotICAgIDExNjEzMiwgMTE2MTM4LCAxMTYxNDQsIDExNjE1MCwgMTE2MTU2LCAxMTYxNjIsIDExNjE2OCwgMTE2MTc0LCAxMTYxODAsIAotICAgIDExNjE4NiwgMTE2MTkyLCAxMTYxOTgsIDExNjIwNCwgMTE2MjEwLCAxMTYyMTYsIDExNjIyMiwgMTE2MjI4LCAxMTYyMzQsIAotICAgIDExNjI0MSwgMTE2MjQ3LCAxMTYyNTMsIDExNjI1OSwgMTE2MjY1LCAxMTYyNzEsIDExNjI3NywgMTE2MjgzLCAxMTYyOTAsIAotICAgIDExNjI5NiwgMTE2MzAyLCAxMTYzMDgsIDExNjMxNCwgMTE2MzIwLCAxMTYzMjYsIDExNjMzMywgMTE2MzQwLCAxMTYzNDcsIAotICAgIDExNjM1NCwgMTE2MzYxLCAxMTYzNjgsIDExNjM3NSwgMTE2MzgyLCAxMTYzODksIDExNjM5NiwgMTE2NDAzLCAxMTY0MTAsIAotICAgIDExNjQxNywgMTE2NDI0LCAxMTY0MzEsIDExNjQzOCwgMTE2NDQ1LCAxMTY0NTMsIDExNjQ2MCwgMTE2NDY3LCAxMTY0NzQsIAotICAgIDExNjQ4MSwgMTE2NDg4LCAxMTY0OTUsIDExNjUwMiwgMTE2NTA4LCAxMTY1MTUsIDExNjUyMiwgMTE2NTI5LCAxMTY1MzYsIAotICAgIDExNjU0MywgMTE2NTUwLCAxMTY1NTcsIDExNjU2NCwgMTE2NTcxLCAxMTY1NzgsIDExNjU4NSwgMTE2NTkyLCAxMTY1OTksIAotICAgIDExNjYwNiwgMTE2NjEzLCAxMTY2MjAsIDExNjYyNywgMTE2NjM1LCAxMTY2NDIsIDExNjY0OSwgMTE2NjU2LCAxMTY2NjMsIAotICAgIDExNjY3MCwgMTE2Njc3LCAxMTY2ODQsIDExNjY5MiwgMTE2Njk5LCAxMTY3MDYsIDExNjcxMywgMTE2NzIwLCAxMTY3MjcsIAotICAgIDExNjczNCwgMTE2NzM5LCAwLCAwLCAxMTY3NDQsIDExNjc0OSwgMTE2NzUzLCAxMTY3NTcsIDExNjc2MSwgMTE2NzY1LCAKLSAgICAxMTY3NjksIDExNjc3MywgMTE2Nzc3LCAxMTY3ODEsIDExNjc4NSwgMTE2NzkwLCAxMTY3OTQsIDExNjc5OCwgMTE2ODAyLCAKLSAgICAxMTY4MDYsIDExNjgxMCwgMTE2ODE0LCAxMTY4MTgsIDExNjgyMiwgMTE2ODI2LCAxMTY4MzEsIDExNjgzNSwgMTE2ODM5LCAKLSAgICAxMTY4NDMsIDExNjg0NywgMTE2ODUxLCAxMTY4NTUsIDExNjg1OSwgMTE2ODYzLCAxMTY4NjcsIDExNjg3MywgMTE2ODc4LCAKLSAgICAxMTY4ODMsIDExNjg4OCwgMTE2ODkzLCAxMTY4OTgsIDExNjkwMywgMTE2OTA4LCAxMTY5MTMsIDExNjkxOCwgMTE2OTI0LCAKLSAgICAxMTY5MjksIDExNjkzNCwgMTE2OTM5LCAxMTY5NDQsIDExNjk0OSwgMTE2OTU0LCAxMTY5NTksIDExNjk2NCwgMTE2OTY5LCAKLSAgICAxMTY5NzYsIDExNjk4MywgMTE2OTkwLCAxMTY5OTcsIDExNzAwNCwgMTE3MDExLCAxMTcwMTcsIDExNzAyNCwgMTE3MDMxLCAKLSAgICAxMTcwMzgsIDExNzA0NiwgMTE3MDU0LCAxMTcwNjIsIDExNzA3MCwgMTE3MDc4LCAxMTcwODYsIDExNzA5MywgMTE3MTAwLCAKLSAgICAxMTcxMDcsIDExNzExNSwgMTE3MTIzLCAxMTcxMzEsIDExNzEzOSwgMTE3MTQ3LCAxMTcxNTUsIDExNzE2MiwgMTE3MTY5LCAKLSAgICAxMTcxNzYsIDExNzE4NCwgMTE3MTkyLCAxMTcyMDAsIDExNzIwOCwgMTE3MjE2LCAxMTcyMjQsIDExNzIyOSwgMTE3MjM0LCAKLSAgICAxMTcyMzksIDExNzI0NCwgMTE3MjQ5LCAxMTcyNTQsIDExNzI1OSwgMTE3MjY0LCAxMTcyNjksIDAsIDAsIDAsIDAsIAotICAgIDExNzI3NCwgMTE3Mjc5LCAxMTcyODMsIDExNzI4NywgMTE3MjkxLCAxMTcyOTUsIDExNzI5OSwgMTE3MzAzLCAxMTczMDcsIAotICAgIDExNzMxMSwgMTE3MzE1LCAxMTczMTksIDExNzMyMywgMTE3MzI3LCAxMTczMzEsIDExNzMzNSwgMTE3MzM5LCAxMTczNDMsIAotICAgIDExNzM0NywgMTE3MzUxLCAxMTczNTUsIDExNzM1OSwgMTE3MzYzLCAxMTczNjcsIDExNzM3MSwgMTE3Mzc1LCAxMTczNzksIAotICAgIDExNzM4MywgMTE3Mzg3LCAxMTczOTEsIDExNzM5NSwgMTE3Mzk5LCAxMTc0MDMsIDExNzQwNywgMTE3NDExLCAxMTc0MTUsIAotICAgIDExNzQxOSwgMTE3NDIzLCAxMTc0MjcsIDExNzQzMSwgMTE3NDM1LCAxMTc0MzksIDExNzQ0MywgMTE3NDQ3LCAxMTc0NTEsIAotICAgIDExNzQ1NSwgMTE3NDU5LCAxMTc0NjMsIDExNzQ2NywgMTE3NDcxLCAxMTc0NzUsIDExNzQ4MCwgMTE3NDg0LCAxMTc0ODgsIAotICAgIDExNzQ5MiwgMTE3NDk2LCAxMTc1MDAsIDExNzUwNCwgMTE3NTA4LCAxMTc1MTIsIDExNzUxNiwgMTE3NTIwLCAxMTc1MjQsIAotICAgIDExNzUyOCwgMTE3NTMyLCAxMTc1MzYsIDExNzU0MCwgMTE3NTQ0LCAxMTc1NDgsIDExNzU1MiwgMTE3NTU2LCAxMTc1NjAsIAotICAgIDExNzU2NCwgMTE3NTY4LCAxMTc1NzIsIDExNzU3NiwgMTE3NTgwLCAxMTc1ODQsIDExNzU4OCwgMTE3NTkyLCAxMTc1OTYsIAotICAgIDExNzYwMCwgMTE3NjA0LCAxMTc2MDgsIDExNzYxMiwgMTE3NjE2LCAxMTc2MjAsIDExNzYyNCwgMTE3NjI4LCAxMTc2MzIsIAotICAgIDExNzYzNiwgMTE3NjQwLCAxMTc2NDQsIDExNzY0OCwgMTE3NjUyLCAxMTc2NTYsIDExNzY2MCwgMTE3NjY0LCAxMTc2NjgsIAotICAgIDExNzY3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE3Njc2LCAxMTc2ODIsIDExNzY5MSwgCi0gICAgMTE3Njk5LCAxMTc3MDcsIDExNzcxNiwgMTE3NzI1LCAxMTc3MzQsIDExNzc0MywgMTE3NzUyLCAxMTc3NjEsIDExNzc3MCwgCi0gICAgMTE3Nzc5LCAxMTc3ODgsIDExNzc5NywgMCwgMCwgMTE3ODA2LCAxMTc4MTUsIDExNzgyMywgMTE3ODMxLCAxMTc4NDAsIAotICAgIDExNzg0OSwgMTE3ODU4LCAxMTc4NjcsIDExNzg3NiwgMTE3ODg1LCAxMTc4OTQsIDExNzkwMywgMTE3OTEyLCAxMTc5MjEsIAotICAgIDAsIDAsIDExNzkzMCwgMTE3OTM5LCAxMTc5NDcsIDExNzk1NSwgMTE3OTY0LCAxMTc5NzMsIDExNzk4MiwgMTE3OTkxLCAKLSAgICAxMTgwMDAsIDExODAwOSwgMTE4MDE4LCAxMTgwMjcsIDExODAzNiwgMTE4MDQ1LCAxMTgwNTQsIDAsIDExODA2MSwgCi0gICAgMTE4MDcwLCAxMTgwNzgsIDExODA4NiwgMTE4MDk1LCAxMTgxMDQsIDExODExMywgMTE4MTIyLCAxMTgxMzEsIDExODE0MCwgCi0gICAgMTE4MTQ5LCAxMTgxNTgsIDExODE2NywgMTE4MTc2LCAxMTgxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODE5MiwgCi0gICAgMTE4MTk5LCAxMTgyMDQsIDExODIwOCwgMTE4MjEyLCAxMTgyMTYsIDExODIyMSwgMTE4MjI2LCAxMTgyMzEsIDExODIzNiwgCi0gICAgMTE4MjQxLCAwLCAwLCAwLCAwLCAwLCAxMTgyNDYsIDExODI1MSwgMTE4MjU3LCAxMTgyNjMsIDExODI2OSwgMTE4Mjc0LCAKLSAgICAxMTgyODAsIDExODI4NiwgMTE4MjkyLCAxMTgyOTcsIDExODMwMywgMTE4MzA5LCAxMTgzMTQsIDExODMxOSwgMTE4MzI0LCAKLSAgICAxMTgzMjksIDExODMzNSwgMTE4MzQxLCAxMTgzNDYsIDExODM1MSwgMTE4MzU3LCAxMTgzNjIsIDExODM2OCwgMTE4Mzc0LCAKLSAgICAxMTgzODAsIDExODM4NiwgMTE4MzkyLCAxMTg0MDIsIDExODQwOSwgMTE4NDE1LCAxMTg0MTgsIDAsIDExODQyMSwgCi0gICAgMTE4NDI2LCAxMTg0MzIsIDExODQzOCwgMTE4NDQ0LCAxMTg0NDksIDExODQ1NSwgMTE4NDYxLCAxMTg0NjcsIDExODQ3MiwgCi0gICAgMTE4NDc4LCAxMTg0ODQsIDExODQ4OSwgMTE4NDk0LCAxMTg0OTksIDExODUwNCwgMTE4NTEwLCAxMTg1MTYsIDExODUyMSwgCi0gICAgMTE4NTI2LCAxMTg1MzIsIDExODUzNywgMTE4NTQzLCAxMTg1NDksIDExODU1NSwgMTE4NTYxLCAxMTg1NjcsIDExODU3MCwgCi0gICAgMTE4NTczLCAxMTg1NzYsIDExODU3OSwgMTE4NTgyLCAxMTg1ODUsIDExODU5MSwgMTE4NTk4LCAxMTg2MDUsIDExODYxMiwgCi0gICAgMTE4NjE4LCAxMTg2MjUsIDExODYzMiwgMTE4NjM5LCAxMTg2NDUsIDExODY1MiwgMTE4NjU5LCAxMTg2NjUsIDExODY3MSwgCi0gICAgMTE4Njc3LCAxMTg2ODMsIDExODY5MCwgMTE4Njk3LCAxMTg3MDMsIDExODcwOSwgMTE4NzE2LCAxMTg3MjIsIDExODcyOSwgCi0gICAgMTE4NzM2LCAxMTg3NDMsIDExODc1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4NzU3LCAxMTg3NjMsIDExODc3MCwgMTE4Nzc3LCAKLSAgICAxMTg3ODQsIDExODc5MCwgMTE4Nzk3LCAxMTg4MDQsIDExODgxMSwgMTE4ODE3LCAxMTg4MjQsIDExODgzMSwgMTE4ODM3LCAKLSAgICAxMTg4NDMsIDExODg0OSwgMTE4ODU1LCAxMTg4NjIsIDExODg2OSwgMTE4ODc1LCAxMTg4ODEsIDExODg4OCwgMTE4ODk0LCAKLSAgICAxMTg5MDEsIDExODkwOCwgMTE4OTE1LCAxMTg5MjIsIDExODkyOSwgMTE4OTM4LCAxMTg5NDIsIDExODk0NSwgMTE4OTQ5LCAKLSAgICAxMTg5NTMsIDExODk1NywgMTE4OTYwLCAxMTg5NjMsIDExODk2NiwgMTE4OTY5LCAxMTg5NzIsIDExODk3NSwgMTE4OTc4LCAKLSAgICAxMTg5ODEsIDExODk4NCwgMTE4OTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTg5OTMsIDExOTAwMCwgMTE5MDA4LCAxMTkwMTYsIDExOTAyNCwgCi0gICAgMTE5MDMxLCAxMTkwMzksIDExOTA0NywgMTE5MDU1LCAxMTkwNjIsIDExOTA3MCwgMTE5MDc4LCAxMTkwODUsIDExOTA5MiwgCi0gICAgMTE5MDk5LCAxMTkxMDYsIDExOTExNCwgMTE5MTIyLCAxMTkxMjksIDExOTEzNiwgMTE5MTQ0LCAxMTkxNTEsIDExOTE1OSwgCi0gICAgMTE5MTY3LCAxMTkxNzUsIDExOTE4MywgMTE5MTkxLCAxMTkxOTUsIDExOTE5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTE5MjAzLCAxMTkyMDksIDExOTIxNSwgMTE5MjIxLCAxMTkyMjUsIDExOTIzMSwgMTE5MjM3LCAKLSAgICAxMTkyNDMsIDExOTI0OSwgMTE5MjU1LCAxMTkyNjEsIDExOTI2NywgMTE5MjczLCAxMTkyNzksIDExOTI4NSwgMTE5MjkxLCAKLSAgICAxMTkyOTcsIDExOTMwMywgMTE5MzA5LCAxMTkzMTUsIDExOTMyMSwgMTE5MzI3LCAxMTkzMzMsIDExOTMzOSwgMTE5MzQ1LCAKLSAgICAxMTkzNTEsIDExOTM1NywgMTE5MzYzLCAxMTkzNjksIDExOTM3NSwgMTE5MzgxLCAxMTkzODcsIDExOTM5MywgMTE5Mzk5LCAKLSAgICAxMTk0MDUsIDExOTQxMSwgMTE5NDE3LCAxMTk0MjMsIDExOTQyOSwgMTE5NDM1LCAxMTk0NDEsIDExOTQ0NywgMTE5NDUzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMTk0NTksIDExOTQ3MCwgMTE5NDgxLCAxMTk0OTIsIDExOTUwMywgMTE5NTE0LCAxMTk1MjUsIAotICAgIDExOTUzNiwgMTE5NTQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTk1NTgsIDExOTU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5NTY2LCAxMTk1NjgsIDExOTU3MCwgCi0gICAgMTE5NTc0LCAxMTk1NzksIDExOTU4NCwgMTE5NTg2LCAxMTk1OTIsIDExOTU5NywgMTE5NTk5LCAxMTk2MDUsIDExOTYwOSwgCi0gICAgMTE5NjExLCAxMTk2MTUsIDExOTYyMSwgMTE5NjI3LCAxMTk2MzMsIDExOTYzOCwgMTE5NjQyLCAxMTk2NDksIDExOTY1NiwgCi0gICAgMTE5NjYzLCAxMTk2NjgsIDExOTY3NSwgMTE5NjgyLCAxMTk2ODksIDExOTY5MywgMTE5Njk5LCAxMTk3MDgsIDExOTcxNywgCi0gICAgMTE5NzI0LCAxMTk3MjksIDExOTczMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE5NzM3LCAxMTk3MzksIDExOTc0MSwgMTE5NzQ1LCAxMTk3NDksIDExOTc1MywgMCwgMTE5NzU1LCAxMTk3NTcsIAotICAgIDExOTc2MSwgMTE5NzYzLCAxMTk3NjUsIDExOTc2NywgMTE5NzY5LCAxMTk3NzQsIDExOTc3OSwgMTE5NzgxLCAxMTk3ODcsIAotICAgIDExOTc5MSwgMTE5Nzk1LCAxMTk4MDMsIDExOTgwNSwgMTE5ODA3LCAxMTk4MDksIDExOTgxMSwgMTE5ODEzLCAxMTk4MTUsIAotICAgIDExOTgxNywgMTE5ODE5LCAxMTk4MjEsIDExOTgyMywgMTE5ODI3LCAxMTk4MzEsIDExOTgzMywgMTE5ODM1LCAxMTk4MzcsIAotICAgIDExOTgzOSwgMTE5ODQxLCAxMTk4NDYsIDExOTg1MiwgMTE5ODU2LCAxMTk4NjAsIDExOTg2NCwgMTE5ODY4LCAxMTk4NzMsIAotICAgIDExOTg3NywgMTE5ODc5LCAxMTk4ODEsIDExOTg4NSwgMTE5ODkxLCAxMTk4OTMsIDExOTg5NSwgMTE5ODk3LCAxMTk5MDEsIAotICAgIDExOTkxMCwgMTE5OTE2LCAxMTk5MjAsIDExOTkyNCwgMTE5OTI2LCAxMTk5MjgsIDExOTkzMSwgMTE5OTMzLCAxMTk5MzUsIAotICAgIDExOTkzNywgMTE5OTQxLCAxMTk5NDMsIDExOTk0NywgMTE5OTUyLCAxMTk5NTQsIDExOTk1OSwgMTE5OTY1LCAxMTk5NzIsIAotICAgIDExOTk3NiwgMTE5OTgwLCAxMTk5ODQsIDExOTk4OCwgMTE5OTk0LCAwLCAwLCAwLCAxMTk5OTgsIDEyMDAwMCwgMTIwMDA0LCAKLSAgICAxMjAwMDgsIDEyMDAxMCwgMTIwMDE0LCAxMjAwMTgsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjYsIDEyMDAzMCwgMTIwMDM0LCAKLSAgICAxMjAwMzgsIDEyMDA0MiwgMTIwMDQ2LCAxMjAwNTAsIDEyMDA1NCwgMTIwMDU4LCAxMjAwNjQsIDEyMDA2OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwMDcyLCAxMjAwNzYsIDEyMDA4MCwgMTIwMDg0LCAxMjAwOTEsIAotICAgIDEyMDA5MywgMTIwMDk3LCAxMjAwOTksIDEyMDEwMSwgMTIwMTA1LCAxMjAxMDksIDEyMDExMywgMTIwMTE1LCAxMjAxMTksIAotICAgIDEyMDEyMywgMTIwMTI3LCAxMjAxMzEsIDEyMDEzNSwgMTIwMTM3LCAxMjAxNDEsIDEyMDE0MywgMTIwMTQ5LCAxMjAxNTIsIAotICAgIDEyMDE1NywgMTIwMTU5LCAxMjAxNjEsIDEyMDE2NCwgMTIwMTY2LCAxMjAxNjgsIDEyMDE3MSwgMTIwMTc4LCAxMjAxODUsIAotICAgIDEyMDE5MiwgMTIwMTk3LCAxMjAyMDEsIDEyMDIwMywgMTIwMjA1LCAwLCAxMjAyMDcsIDEyMDIwOSwgMTIwMjEzLCAKLSAgICAxMjAyMTcsIDEyMDIyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTIwMjIzLCAxMjAyMjcsIDEyMDIzMiwgMTIwMjM2LCAxMjAyNDIsIDEyMDI0OCwgMTIwMjUwLCAxMjAyNTIsIAotICAgIDEyMDI1OCwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcwLCAxMjAyNzQsIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDI4OCwgMTIwMjkwLCAxMjAyOTIsIAotICAgIDEyMDI5NCwgMTIwMjk4LCAxMjAzMDAsIDEyMDMwMiwgMTIwMzA0LCAxMjAzMDYsIDEyMDMwOCwgMTIwMzEwLCAxMjAzMTIsIAotICAgIDEyMDMxNCwgMTIwMzE2LCAxMjAzMTgsIDEyMDMyMCwgMTIwMzIyLCAxMjAzMjQsIDEyMDMyNiwgMTIwMzI4LCAxMjAzMzAsIAotICAgIDEyMDMzMiwgMTIwMzM0LCAxMjAzMzYsIDEyMDMzOCwgMTIwMzQwLCAxMjAzNDIsIDEyMDM0NiwgMTIwMzQ4LCAxMjAzNTAsIAotICAgIDEyMDM1MiwgMTIwMzU2LCAxMjAzNTgsIDEyMDM2MiwgMTIwMzY0LCAxMjAzNjYsIDEyMDM3MCwgMTIwMzc0LCAxMjAzODAsIAotICAgIDEyMDM4MiwgMTIwMzg0LCAxMjAzODYsIDEyMDM4OCwgMTIwMzkyLCAxMjAzOTYsIDEyMDM5OCwgMTIwNDAyLCAxMjA0MDYsIAotICAgIDEyMDQxMCwgMTIwNDE0LCAxMjA0MTgsIDEyMDQyMiwgMTIwNDI2LCAxMjA0MzAsIDEyMDQzNCwgMTIwNDM4LCAxMjA0NDIsIAotICAgIDEyMDQ0NiwgMTIwNDUwLCAxMjA0NTQsIDEyMDQ1OCwgMTIwNDYyLCAxMjA0NjYsIDAsIDEyMDQ3MCwgMCwgMTIwNDcyLCAKLSAgICAxMjA0NzQsIDEyMDQ3NiwgMTIwNDc4LCAxMjA0ODAsIDEyMDQ4OCwgMTIwNDk2LCAxMjA1MDQsIDEyMDUxMiwgMTIwNTE3LCAKLSAgICAxMjA1MjIsIDEyMDUyNywgMTIwNTMxLCAxMjA1MzUsIDEyMDU0MCwgMTIwNTQ1LCAxMjA1NDcsIDEyMDU1MSwgMTIwNTUzLCAKLSAgICAxMjA1NTUsIDEyMDU1NywgMTIwNTU5LCAxMjA1NjEsIDEyMDU2MywgMTIwNTY1LCAxMjA1NjksIDEyMDU3MSwgMTIwNTczLCAKLSAgICAxMjA1NzUsIDEyMDU3OSwgMTIwNTgzLCAxMjA1ODcsIDEyMDU5MSwgMTIwNTk1LCAxMjA1OTcsIDEyMDYwMywgMTIwNjA5LCAKLSAgICAxMjA2MTEsIDEyMDYxMywgMTIwNjE1LCAxMjA2MTcsIDEyMDYxOSwgMTIwNjI4LCAxMjA2MzUsIDEyMDY0MiwgMTIwNjQ2LCAKLSAgICAxMjA2NTMsIDEyMDY1OCwgMTIwNjY1LCAxMjA2NzQsIDEyMDY3OSwgMTIwNjgzLCAxMjA2ODcsIDEyMDY4OSwgMTIwNjkzLCAKLSAgICAxMjA2OTUsIDEyMDY5OSwgMTIwNzAzLCAxMjA3MDUsIDEyMDcwOSwgMTIwNzEzLCAxMjA3MTcsIDEyMDcxOSwgMTIwNzIxLCAKLSAgICAxMjA3MjcsIDEyMDcyOSwgMTIwNzMxLCAxMjA3MzMsIDEyMDczNywgMTIwNzQxLCAxMjA3NDMsIDEyMDc0NywgMTIwNzQ5LCAKLSAgICAxMjA3NTEsIDEyMDc1NCwgMTIwNzU4LCAxMjA3NjAsIDEyMDc2NCwgMTIwNzY2LCAxMjA3NjgsIDEyMDc3MywgMTIwNzc1LCAKLSAgICAxMjA3NzksIDEyMDc4MywgMTIwNzg2LCAxMjA3OTAsIDEyMDc5NCwgMTIwNzk4LCAxMjA4MDIsIDEyMDgwNiwgMTIwODEwLCAKLSAgICAxMjA4MTQsIDEyMDgxOSwgMTIwODIzLCAxMjA4MjcsIDEyMDgzNiwgMTIwODQxLCAxMjA4NDQsIDEyMDg0NiwgMTIwODQ5LCAKLSAgICAxMjA4NTIsIDEyMDg1NywgMTIwODU5LCAxMjA4NjIsIDEyMDg2NywgMTIwODcxLCAxMjA4NzQsIDEyMDg3OCwgMTIwODgyLCAKLSAgICAxMjA4ODUsIDEyMDg5MCwgMTIwODk0LCAxMjA4OTgsIDEyMDkwMiwgMTIwOTA2LCAxMjA5MTIsIDEyMDkxOCwgMTIwOTI0LCAKLSAgICAxMjA5MzAsIDEyMDkzNSwgMTIwOTQ2LCAxMjA5NDgsIDEyMDk1MiwgMTIwOTU0LCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAKLSAgICAxMjA5NjYsIDEyMDk3MCwgMTIwOTc2LCAxMjA5ODEsIDEyMDk4NywgMTIwOTg5LCAxMjA5OTMsIDEyMDk5NywgMTIxMDA0LCAKLSAgICAxMjEwMTEsIDEyMTAxNSwgMTIxMDE3LCAxMjEwMTksIDEyMTAyMywgMTIxMDI1LCAxMjEwMjksIDEyMTAzMywgMTIxMDM3LCAKLSAgICAxMjEwMzksIDEyMTA0MSwgMTIxMDQ4LCAxMjEwNTIsIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcwLCAKLSAgICAxMjEwNzQsIDEyMTA3NiwgMTIxMDc4LCAxMjEwODIsIDEyMTA4NCwgMTIxMDg4LCAxMjEwOTIsIDEyMTA5OCwgMTIxMTAyLCAKLSAgICAxMjExMDYsIDEyMTExMCwgMTIxMTEyLCAxMjExMTUsIDEyMTExOSwgMTIxMTI2LCAxMjExMzUsIDEyMTE0NCwgMTIxMTUzLCAKLSAgICAxMjExNjIsIDEyMTE2NCwgMTIxMTY4LCAxMjExNzAsIDEyMTE3NCwgMTIxMTg1LCAxMjExODksIDEyMTE5NSwgMTIxMjAxLCAKLSAgICAxMjEyMDYsIDAsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTQsIDEyMTIxNiwgMCwgMCwgMCwgMTIxMjE4LCAxMjEyMjMsIAotICAgIDEyMTIzNCwgMTIxMjUwLCAxMjEyNjMsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI5MCwgMTIxMjkyLCAxMjEzMDAsIAotICAgIDEyMTMwOCwgMTIxMzEwLCAxMjEzMTQsIDEyMTMyMCwgMTIxMzI2LCAxMjEzMzMsIDEyMTM0MCwgMTIxMzQyLCAxMjEzNDQsIAotICAgIDEyMTM0OCwgMTIxMzUwLCAxMjEzNTYsIDEyMTM1OCwgMTIxMzYxLCAxMjEzNjUsIDEyMTM3MSwgMTIxMzc3LCAxMjEzODgsIAotICAgIDEyMTM5NCwgMTIxNDAxLCAxMjE0MDksIDEyMTQxMywgMTIxNDIxLCAxMjE0MjksIDEyMTQzNSwgMTIxNDQxLCAxMjE0NDgsIAotICAgIDEyMTQ1MCwgMTIxNDU0LCAxMjE0NTYsIDEyMTQ1OCwgMTIxNDYzLCAxMjE0NjUsIDEyMTQ2NywgMTIxNDY5LCAxMjE0NzEsIAotICAgIDEyMTQ3NSwgMTIxNDg2LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUxMCwgMTIxNTE2LCAxMjE1MjIsIAotICAgIDEyMTUyOCwgMTIxNTMzLCAxMjE1MzgsIDEyMTU0NCwgMTIxNTUwLCAxMjE1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMTU2NCwgMTIxNTcxLCAxMjE1NzgsIDEyMTU4NSwgMTIxNTkzLCAKLSAgICAxMjE2MDEsIDEyMTYwOSwgMTIxNjE3LCAxMjE2MjUsIDEyMTYzMywgMTIxNjQxLCAxMjE2NDksIDEyMTY1NywgMTIxNjYzLCAKLSAgICAxMjE2NjksIDEyMTY3NSwgMTIxNjgxLCAxMjE2ODcsIDEyMTY5MywgMTIxNjk5LCAxMjE3MDUsIDEyMTcxMSwgMTIxNzE3LCAKLSAgICAxMjE3MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDcxMCwgMTEwNzE1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjE3MjksIDEyMTczMywgMTIxNzM3LCAxMjE3NDIsIDEyMTc0NywgMCwgMTIxNzQ5LCAxMjE3NTgsIAotICAgIDEyMTc2NiwgMTIxNzc1LCAxMjE3ODksIDEyMTgwMywgMTIxODE3LCAxMjE4MjQsIDEyMTgzMSwgMTIxODM1LCAxMjE4NDQsIAotICAgIDEyMTg1MiwgMTIxODU2LCAxMjE4NjUsIDEyMTg3MiwgMTIxODc2LCAwLCAxMjE4ODAsIDEyMTg4NCwgMTIxODkxLCAwLCAKLSAgICAxMjE4OTUsIDAsIDEyMTg5OSwgMCwgMTIxOTA2LCAwLCAxMjE5MTUsIDEyMTkyNywgMTIxOTM5LCAwLCAxMjE5NDMsIAotICAgIDEyMTk0NywgMTIxOTUxLCAxMjE5NTUsIDEyMTk1OSwgMTIxOTY3LCAwLCAwLCAxMjE5NzUsIDEyMTk3OSwgMTIxOTgzLCAKLSAgICAxMjE5ODcsIDAsIDEyMTk5MSwgMCwgMCwgMTIxOTk3LCAxMjIwMDksIDEyMjAxNywgMTIyMDIxLCAwLCAxMjIwMjUsIAotICAgIDEyMjAyOSwgMTIyMDM1LCAxMjIwNDIsIDEyMjA1MywgMTIyMDYzLCAxMjIwNzQsIDEyMjA4NSwgMTIyMDk0LCAxMjIxMDUsIAotICAgIDEyMjExMSwgMTIyMTE3LCAwLCAwLCAwLCAwLCAxMjIxMjMsIDEyMjEzMiwgMTIyMTM5LCAxMjIxNDUsIDEyMjE0OSwgCi0gICAgMTIyMTUzLCAxMjIxNTcsIDEyMjE2NiwgMTIyMTc4LCAxMjIxODIsIDEyMjE4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTEwNzIxLCAxMTA3MjYsIDExMDczMSwgMTEwNzM2LCAxMTA3NDMsIDExMDc1MCwgMTEwNzU3LCAxMTA3NjQsIDExMDc2OSwgCisgICAgMTEwNzc0LCAxMTA3NzksIDExMDc4NCwgMTEwNzkxLCAxMTA3OTYsIDExMDgwMywgMTEwODEwLCAxMTA4MTUsIDExMDgyMCwgCisgICAgMTEwODI1LCAxMTA4MzIsIDExMDgzNywgMTEwODQyLCAxMTA4NDksIDExMDg1NiwgMTEwODYxLCAxMTA4NjYsIDExMDg3MSwgCisgICAgMTEwODc4LCAxMTA4ODUsIDExMDg5MiwgMTEwODk3LCAxMTA5MDIsIDExMDkwOSwgMTEwOTE2LCAxMTA5MjMsIDExMDkzMCwgCisgICAgMTEwOTM1LCAxMTA5NDAsIDExMDk0NSwgMTEwOTUyLCAxMTA5NTcsIDExMDk2MiwgMTEwOTY3LCAxMTA5NzQsIDExMDk4MywgCisgICAgMTEwOTkwLCAxMTA5OTUsIDExMTAwMCwgMTExMDA1LCAxMTEwMTAsIDExMTAxNSwgMTExMDIwLCAxMTEwMjksIDExMTAzNiwgCisgICAgMTExMDQxLCAxMTEwNDgsIDExMTA1NSwgMTExMDYwLCAxMTEwNjUsIDExMTA3MCwgMTExMDc3LCAxMTEwODIsIDExMTA4OSwgCisgICAgMTExMDk2LCAxMTExMDEsIDExMTEwNiwgMTExMTExLCAxMTExMTgsIDExMTEyNSwgMTExMTMwLCAxMTExMzUsIDExMTE0MiwgCisgICAgMTExMTQ5LCAxMTExNTYsIDExMTE2MSwgMTExMTY2LCAxMTExNzEsIDExMTE3NiwgMTExMTgzLCAxMTExOTIsIDExMTIwMSwgCisgICAgMTExMjA2LCAxMTEyMTMsIDExMTIyMiwgMTExMjI3LCAxMTEyMzIsIDExMTIzNywgMTExMjQyLCAxMTEyNDksIDExMTI1NiwgCisgICAgMTExMjYzLCAxMTEyNzAsIDExMTI3NSwgMTExMjgwLCAxMTEyODUsIDExMTI5MiwgMTExMjk5LCAxMTEzMDYsIDExMTMxMSwgCisgICAgMTExMzE2LCAxMTEzMjMsIDExMTMyOCwgMTExMzM1LCAxMTEzNDAsIDExMTM0NywgMTExMzUyLCAxMTEzNTksIDExMTM2NiwgCisgICAgMTExMzcxLCAxMTEzNzYsIDExMTM4MSwgMTExMzg2LCAxMTEzOTEsIDExMTM5NiwgMTExNDAxLCAxMTE0MDYsIDExMTQxMSwgCisgICAgMTExNDE4LCAxMTE0MjUsIDExMTQzMiwgMTExNDM5LCAxMTE0NDYsIDExMTQ1NSwgMTExNDYwLCAxMTE0NjUsIDExMTQ3MiwgCisgICAgMTExNDc5LCAxMTE0ODQsIDExMTQ5MSwgMTExNDk4LCAxMTE1MDUsIDExMTUxMiwgMTExNTE5LCAxMTE1MjYsIDExMTUzMSwgCisgICAgMTExNTM2LCAxMTE1NDEsIDExMTU0NiwgMTExNTUxLCAxMTE1NjAsIDExMTU2OSwgMTExNTc4LCAxMTE1ODcsIDExMTU5NiwgCisgICAgMTExNjA1LCAxMTE2MTQsIDExMTYyMywgMTExNjI4LCAxMTE2MzksIDExMTY1MCwgMTExNjU5LCAxMTE2NjQsIDExMTY2OSwgCisgICAgMTExNjc0LCAxMTE2NzksIDExMTY4OCwgMTExNjk1LCAxMTE3MDIsIDExMTcwOSwgMTExNzE2LCAxMTE3MjMsIDExMTczMCwgCisgICAgMTExNzM5LCAxMTE3NDgsIDExMTc1OSwgMTExNzY4LCAxMTE3NzksIDExMTc4OCwgMTExNzk1LCAxMTE4MDQsIDExMTgxNSwgCisgICAgMTExODI0LCAxMTE4MzMsIDExMTg0MiwgMTExODUxLCAxMTE4NTgsIDExMTg2NSwgMTExODcyLCAxMTE4ODEsIDExMTg5MCwgCisgICAgMTExOTAxLCAxMTE5MTAsIDExMTkxOSwgMTExOTMwLCAxMTE5MzUsIDExMTk0MCwgMTExOTUxLCAxMTE5NTksIDExMTk2OCwgCisgICAgMTExOTc3LCAxMTE5ODYsIDExMTk5NywgMTEyMDA2LCAxMTIwMTUsIDExMjAyNiwgMTEyMDM3LCAxMTIwNDgsIDExMjA1OSwgCisgICAgMTEyMDcwLCAxMTIwODEsIDExMjA4OCwgMTEyMDk1LCAxMTIxMDIsIDExMjEwOSwgMTEyMTIwLCAxMTIxMjksIDExMjEzNiwgCisgICAgMTEyMTQzLCAxMTIxNTAsIDExMjE2MSwgMTEyMTcyLCAxMTIxODMsIDExMjE5NCwgMTEyMjA1LCAxMTIyMTYsIDExMjIyNywgCisgICAgMTEyMjM4LCAxMTIyNDUsIDExMjI1MiwgMTEyMjYxLCAxMTIyNzAsIDExMjI3NywgMTEyMjg0LCAxMTIyOTEsIDExMjMwMCwgCisgICAgMTEyMzA5LCAxMTIzMTgsIDExMjMyNSwgMTEyMzM0LCAxMTIzNDMsIDExMjM1MiwgMTEyMzU5LCAxMTIzNjYsIDExMjM3MSwgCisgICAgMTEyMzc3LCAxMTIzODQsIDExMjM5MSwgMTEyMzk4LCAxMTI0MDUsIDExMjQxMiwgMTEyNDE5LCAxMTI0MjgsIDExMjQzNywgCisgICAgMTEyNDQ2LCAxMTI0NTUsIDExMjQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyNDcxLCAxMTI0NzcsIAorICAgIDExMjQ4MiwgMTEyNDg3LCAxMTI0OTQsIDExMjUwMCwgMTEyNTA2LCAxMTI1MTIsIDExMjUxOCwgMTEyNTI0LCAxMTI1MzAsIAorICAgIDExMjUzNiwgMTEyNTQwLCAxMTI1NDQsIDExMjU1MCwgMTEyNTU2LCAxMTI1NjIsIDExMjU2NiwgMTEyNTcxLCAxMTI1NzYsIAorICAgIDExMjU4MCwgMTEyNTg0LCAxMTI1ODcsIDExMjU5MywgMTEyNTk5LCAxMTI2MDUsIDExMjYxMSwgMTEyNjE3LCAxMTI2MjMsIAorICAgIDExMjYyOSwgMTEyNjM1LCAxMTI2NDEsIDExMjY1MSwgMTEyNjYxLCAxMTI2NjcsIDExMjY3MywgMTEyNjgzLCAxMTI2OTMsIAorICAgIDExMjY5OSwgMCwgMCwgMTEyNzA1LCAxMTI3MTMsIDExMjcxOCwgMTEyNzIzLCAxMTI3MjksIDExMjczNSwgMTEyNzQxLCAKKyAgICAxMTI3NDcsIDExMjc1MywgMTEyNzU5LCAxMTI3NjYsIDExMjc3MywgMTEyNzc5LCAxMTI3ODUsIDExMjc5MSwgMTEyNzk3LCAKKyAgICAxMTI4MDMsIDExMjgwOSwgMTEyODE1LCAxMTI4MjEsIDExMjgyNiwgMTEyODMyLCAxMTI4MzgsIDExMjg0NCwgMTEyODUwLCAKKyAgICAxMTI4NTYsIDExMjg2NSwgMTEyODcxLCAxMTI4NzYsIDExMjg4NCwgMTEyODkxLCAxMTI4OTgsIDExMjkwNywgMTEyOTE2LCAKKyAgICAxMTI5MjUsIDExMjkzNCwgMTEyOTQzLCAxMTI5NTIsIDExMjk2MSwgMTEyOTcwLCAxMTI5ODAsIDExMjk5MCwgMTEyOTk4LCAKKyAgICAxMTMwMDYsIDExMzAxNSwgMTEzMDI0LCAxMTMwMzAsIDExMzAzNiwgMTEzMDQyLCAxMTMwNDgsIDExMzA1NiwgMTEzMDY0LCAKKyAgICAxMTMwNjgsIDExMzA3NCwgMTEzMDc5LCAxMTMwODUsIDExMzA5MSwgMTEzMDk3LCAxMTMxMDMsIDExMzEwOSwgMTEzMTE4LCAKKyAgICAxMTMxMjMsIDExMzEzMCwgMTEzMTM1LCAxMTMxNDAsIDExMzE0NSwgMTEzMTUxLCAxMTMxNTcsIDExMzE2MywgMTEzMTcwLCAKKyAgICAxMTMxNzUsIDExMzE4MCwgMTEzMTg1LCAxMTMxOTAsIDExMzE5NSwgMTEzMjAxLCAxMTMyMDcsIDExMzIxMywgMTEzMjE5LCAKKyAgICAxMTMyMjUsIDExMzIzMSwgMTEzMjM3LCAxMTMyNDMsIDExMzI0OCwgMTEzMjUzLCAxMTMyNTgsIDExMzI2MywgMTEzMjY4LCAKKyAgICAxMTMyNzMsIDExMzI3OCwgMTEzMjgzLCAxMTMyODksIDExMzI5NSwgMTEzMzAwLCAxMTMzMDUsIDExMzMxMCwgMTEzMzE1LCAKKyAgICAxMTMzMjAsIDExMzMyNiwgMTEzMzMzLCAxMTMzMzcsIDExMzM0MSwgMTEzMzQ1LCAxMTMzNDksIDExMzM1MywgMTEzMzU3LCAKKyAgICAxMTMzNjEsIDExMzM2NSwgMTEzMzczLCAxMTMzODMsIDExMzM4NywgMTEzMzkxLCAxMTMzOTcsIDExMzQwMywgMTEzNDA5LCAKKyAgICAxMTM0MTUsIDExMzQyMSwgMTEzNDI3LCAxMTM0MzMsIDExMzQzOSwgMTEzNDQ1LCAxMTM0NTEsIDExMzQ1NywgMTEzNDYzLCAKKyAgICAxMTM0NjksIDExMzQ3NSwgMTEzNDc5LCAxMTM0ODMsIDExMzQ5MCwgMTEzNDk2LCAxMTM1MDIsIDExMzUwOCwgMTEzNTEzLCAKKyAgICAxMTM1MjAsIDExMzUyNSwgMTEzNTMxLCAxMTM1MzcsIDExMzU0MywgMTEzNTQ5LCAxMTM1NTQsIDExMzU1OCwgMTEzNTY0LCAKKyAgICAxMTM1NjgsIDExMzU3MiwgMTEzNTc2LCAxMTM1ODIsIDExMzU4OCwgMTEzNTkyLCAxMTM1OTgsIDExMzYwNCwgMTEzNjEwLCAKKyAgICAxMTM2MTYsIDExMzYyMiwgMTEzNjMwLCAxMTM2MzgsIDExMzY0NCwgMTEzNjUwLCAxMTM2NTYsIDExMzY2MiwgMTEzNjc0LCAKKyAgICAxMTM2ODYsIDExMzcwMCwgMTEzNzEyLCAxMTM3MjQsIDExMzczOCwgMTEzNzUyLCAxMTM3NjYsIDExMzc3MCwgMTEzNzc4LCAKKyAgICAxMTM3ODYsIDExMzc5MSwgMTEzNzk1LCAxMTM3OTksIDExMzgwMywgMTEzODA3LCAxMTM4MTEsIDExMzgxNSwgMTEzODE5LCAKKyAgICAxMTM4MjUsIDExMzgzMSwgMTEzODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTM4NDMsIDExMzg0OSwgCisgICAgMTEzODU1LCAxMTM4NjEsIDExMzg2NywgMTEzODczLCAxMTM4NzksIDExMzg4NSwgMTEzODkxLCAxMTM4OTcsIDExMzkwMywgCisgICAgMTEzOTA5LCAxMTM5MTUsIDExMzkyMSwgMTEzOTI3LCAxMTM5MzMsIDExMzkzOSwgMTEzOTQ1LCAxMTM5NTEsIDExMzk1NywgCisgICAgMTEzOTYzLCAxMTM5NjksIDExMzk3NSwgMTEzOTgxLCAxMTM5ODcsIDExMzk5MywgMTEzOTk5LCAxMTQwMDUsIDExNDAxMSwgCisgICAgMTE0MDE3LCAxMTQwMjMsIDExNDAyOSwgMTE0MDM1LCAxMTQwNDEsIDExNDA0NywgMTE0MDUzLCAxMTQwNTksIDExNDA2NSwgCisgICAgMTE0MDcxLCAxMTQwNzcsIDExNDA4MywgMTE0MDg5LCAxMTQwOTUsIDExNDEwMSwgMTE0MTA3LCAxMTQxMTMsIDExNDExOSwgCisgICAgMTE0MTI1LCAxMTQxMzEsIDExNDEzNywgMTE0MTQzLCAxMTQxNDksIDExNDE1NSwgMTE0MTYxLCAxMTQxNjcsIDExNDE3MywgCisgICAgMTE0MTc5LCAxMTQxODUsIDExNDE5MSwgMTE0MTk3LCAxMTQyMDMsIDExNDIwOSwgMTE0MjE1LCAxMTQyMjEsIDExNDIyNywgCisgICAgMTE0MjMzLCAxMTQyMzksIDExNDI0NCwgMTE0MjQ5LCAxMTQyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjE5NiwgMTIyMTk4LCAxMjIyMDAsIAotICAgIDEyMjIwNCwgMTIyMjA4LCAxMjIyMTIsIDEyMjIyMSwgMTIyMjIzLCAxMjIyMjUsIDEyMjIyOCwgMTIyMjMwLCAxMjIyMzIsIAotICAgIDEyMjIzNiwgMTIyMjM4LCAxMjIyNDIsIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTAsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIAotICAgIDEyMjI2NiwgMTIyMjY4LCAxMjIyNzIsIDEyMjI3NCwgMTIyMjc4LCAxMjIyODIsIDEyMjI4NiwgMTIyMjkwLCAxMjIyOTIsIAotICAgIDEyMjI5NCwgMTIyMjk4LCAxMjIzMDIsIDEyMjMwNiwgMTIyMzEwLCAxMjIzMTIsIDEyMjMxNCwgMTIyMzE2LCAxMjIzMjEsIAotICAgIDEyMjMyNiwgMTIyMzI5LCAxMjIzMzcsIDEyMjM0NSwgMTIyMzQ3LCAxMjIzNTIsIDEyMjM1NSwgMTIyMzYwLCAxMjIzNzEsIAotICAgIDEyMjM3OCwgMTIyMzgzLCAxMjIzODgsIDEyMjM5MCwgMTIyMzk0LCAxMjIzOTYsIDEyMjQwMCwgMTIyNDAyLCAxMjI0MDYsIAotICAgIDEyMjQxMCwgMTIyNDEzLCAxMjI0MTYsIDEyMjQxOCwgMTIyNDIxLCAxMjI0MjMsIDEyMjQyNywgMTIyNDI5LCAxMjI0MzEsIAotICAgIDEyMjQzMywgMTIyNDM3LCAxMjI0MzksIDEyMjQ0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE0MjU4LCAxMTQyNjMsIDExNDI3MCwgMTE0Mjc3LCAxMTQyODQsIDExNDI5MSwgMTE0Mjk2LCAxMTQzMDAsIDExNDMwNiwgCisgICAgMTE0MzEwLCAxMTQzMTQsIDExNDMyMCwgMTE0MzI0LCAxMTQzMjgsIDExNDMzMiwgMTE0MzM4LCAxMTQzNDUsIDExNDM0OSwgCisgICAgMTE0MzUzLCAxMTQzNTcsIDExNDM2MSwgMTE0MzY1LCAxMTQzNjksIDExNDM3NSwgMTE0Mzc5LCAxMTQzODMsIDExNDM4NywgCisgICAgMTE0MzkxLCAxMTQzOTUsIDExNDM5OSwgMTE0NDAzLCAxMTQ0MDcsIDExNDQxMSwgMTE0NDE1LCAxMTQ0MTksIDExNDQyMywgCisgICAgMTE0NDI4LCAxMTQ0MzIsIDExNDQzNiwgMTE0NDQwLCAxMTQ0NDQsIDExNDQ0OCwgMTE0NDUyLCAxMTQ0NTYsIDExNDQ2MCwgCisgICAgMTE0NDY0LCAxMTQ0NzEsIDExNDQ3NSwgMTE0NDgzLCAxMTQ0ODcsIDExNDQ5MSwgMTE0NDk1LCAxMTQ0OTksIDExNDUwMywgCisgICAgMTE0NTA3LCAxMTQ1MTEsIDExNDUxOCwgMTE0NTIyLCAxMTQ1MjYsIDExNDUzMCwgMTE0NTM0LCAxMTQ1MzgsIDExNDU0NCwgCisgICAgMTE0NTQ4LCAxMTQ1NTQsIDExNDU1OCwgMTE0NTYyLCAxMTQ1NjYsIDExNDU3MCwgMTE0NTc0LCAxMTQ1NzgsIDExNDU4MiwgCisgICAgMTE0NTg2LCAxMTQ1OTAsIDExNDU5NCwgMTE0NTk4LCAxMTQ2MDIsIDExNDYwNiwgMTE0NjEwLCAxMTQ2MTQsIDExNDYxOCwgCisgICAgMTE0NjIyLCAxMTQ2MjYsIDExNDYzMCwgMTE0NjM4LCAxMTQ2NDIsIDExNDY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTE0NjUwLCAxMTQ2NTgsIDExNDY2NiwgMTE0Njc0LCAxMTQ2ODIsIDExNDY5MCwgMTE0Njk4LCAxMTQ3MDYsIAorICAgIDExNDcxNCwgMTE0NzIyLCAxMTQ3MzAsIDExNDczOCwgMTE0NzQ2LCAxMTQ3NTQsIDExNDc2MiwgMTE0NzcwLCAxMTQ3NzgsIAorICAgIDExNDc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0Nzk0LCAxMTQ3OTgsIDExNDgwMywgCisgICAgMTE0ODA4LCAxMTQ4MTMsIDExNDgxNywgMTE0ODIyLCAxMTQ4MjcsIDExNDgzMiwgMTE0ODM2LCAxMTQ4NDEsIDExNDg0NiwgCisgICAgMTE0ODUwLCAxMTQ4NTQsIDExNDg1OSwgMTE0ODYzLCAxMTQ4NjgsIDExNDg3MywgMTE0ODc3LCAxMTQ4ODIsIDExNDg4NywgCisgICAgMTE0ODkxLCAxMTQ4OTYsIDExNDkwMSwgMTE0OTA2LCAxMTQ5MTEsIDExNDkxNiwgMTE0OTIwLCAxMTQ5MjUsIDExNDkzMCwgCisgICAgMTE0OTM1LCAxMTQ5MzksIDExNDk0NCwgMTE0OTQ5LCAxMTQ5NTQsIDExNDk1OCwgMTE0OTYzLCAxMTQ5NjgsIDExNDk3MiwgCisgICAgMTE0OTc2LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTkwLCAxMTQ5OTUsIDExNDk5OSwgMTE1MDA0LCAxMTUwMDksIDExNTAxMywgCisgICAgMTE1MDE4LCAxMTUwMjMsIDExNTAyOCwgMTE1MDMzLCAxMTUwMzgsIDExNTA0MiwgMTE1MDQ3LCAxMTUwNTIsIDExNTA1NywgCisgICAgMTE1MDYxLCAxMTUwNjYsIDExNTA3MSwgMTE1MDc2LCAxMTUwODAsIDExNTA4NSwgMTE1MDkwLCAxMTUwOTQsIDExNTA5OCwgCisgICAgMTE1MTAzLCAxMTUxMDcsIDExNTExMiwgMTE1MTE3LCAxMTUxMjEsIDExNTEyNiwgMTE1MTMxLCAxMTUxMzUsIDExNTE0MCwgCisgICAgMTE1MTQ1LCAxMTUxNTAsIDExNTE1NSwgMTE1MTYwLCAxMTUxNjQsIDExNTE2OSwgMTE1MTc0LCAxMTUxNzksIDExNTE4MywgCisgICAgMTE1MTg4LCAwLCAxMTUxOTMsIDExNTE5NywgMTE1MjAyLCAxMTUyMDcsIDExNTIxMSwgMTE1MjE1LCAxMTUyMjAsIAorICAgIDExNTIyNCwgMTE1MjI5LCAxMTUyMzQsIDExNTIzOCwgMTE1MjQzLCAxMTUyNDgsIDExNTI1MiwgMTE1MjU3LCAxMTUyNjIsIAorICAgIDExNTI2NywgMTE1MjcyLCAxMTUyNzcsIDExNTI4MiwgMTE1Mjg4LCAxMTUyOTQsIDExNTMwMCwgMTE1MzA1LCAxMTUzMTEsIAorICAgIDExNTMxNywgMTE1MzIzLCAxMTUzMjgsIDExNTMzNCwgMTE1MzQwLCAxMTUzNDUsIDExNTM1MCwgMTE1MzU2LCAxMTUzNjEsIAorICAgIDExNTM2NywgMTE1MzczLCAxMTUzNzgsIDExNTM4NCwgMTE1MzkwLCAxMTUzOTUsIDExNTQwMSwgMTE1NDA3LCAxMTU0MTMsIAorICAgIDExNTQxOSwgMTE1NDI1LCAxMTU0MzAsIDExNTQzNiwgMTE1NDQyLCAxMTU0NDgsIDExNTQ1MywgMTE1NDU5LCAxMTU0NjUsIAorICAgIDExNTQ3MSwgMTE1NDc2LCAxMTU0ODIsIDExNTQ4OCwgMTE1NDkzLCAxMTU0OTgsIDExNTUwNCwgMTE1NTA5LCAxMTU1MTUsIAorICAgIDExNTUyMSwgMTE1NTI2LCAxMTU1MzIsIDExNTUzOCwgMTE1NTQzLCAxMTU1NDksIDExNTU1NSwgMTE1NTYxLCAxMTU1NjcsIAorICAgIDExNTU3MywgMCwgMTE1NTc3LCAxMTU1ODIsIDAsIDAsIDExNTU4NywgMCwgMCwgMTE1NTkyLCAxMTU1OTcsIDAsIDAsIAorICAgIDExNTYwMiwgMTE1NjA3LCAxMTU2MTEsIDExNTYxNiwgMCwgMTE1NjIxLCAxMTU2MjYsIDExNTYzMSwgMTE1NjM1LCAKKyAgICAxMTU2NDAsIDExNTY0NSwgMTE1NjUwLCAxMTU2NTUsIDExNTY2MCwgMTE1NjY0LCAxMTU2NjksIDExNTY3NCwgMCwgCisgICAgMTE1Njc5LCAwLCAxMTU2ODQsIDExNTY4OSwgMTE1NjkzLCAxMTU2OTgsIDExNTcwMywgMTE1NzA3LCAxMTU3MTEsIDAsIAorICAgIDExNTcxNiwgMTE1NzIxLCAxMTU3MjYsIDExNTczMCwgMTE1NzM1LCAxMTU3NDAsIDExNTc0NCwgMTE1NzQ5LCAxMTU3NTQsIAorICAgIDExNTc1OSwgMTE1NzY0LCAxMTU3NjksIDExNTc3NCwgMTE1NzgwLCAxMTU3ODYsIDExNTc5MiwgMTE1Nzk3LCAxMTU4MDMsIAorICAgIDExNTgwOSwgMTE1ODE1LCAxMTU4MjAsIDExNTgyNiwgMTE1ODMyLCAxMTU4MzcsIDExNTg0MiwgMTE1ODQ4LCAxMTU4NTMsIAorICAgIDExNTg1OSwgMTE1ODY1LCAxMTU4NzAsIDExNTg3NiwgMTE1ODgyLCAxMTU4ODcsIDExNTg5MywgMTE1ODk5LCAxMTU5MDUsIAorICAgIDExNTkxMSwgMTE1OTE3LCAxMTU5MjIsIDExNTkyOCwgMTE1OTM0LCAxMTU5NDAsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTcsIAorICAgIDExNTk2MywgMTE1OTY4LCAxMTU5NzQsIDExNTk4MCwgMTE1OTg1LCAxMTU5OTAsIDExNTk5NiwgMTE2MDAxLCAxMTYwMDcsIAorICAgIDExNjAxMywgMTE2MDE4LCAxMTYwMjQsIDExNjAzMCwgMTE2MDM1LCAxMTYwNDEsIDExNjA0NywgMTE2MDUzLCAxMTYwNTksIAorICAgIDExNjA2NSwgMTE2MDY5LCAwLCAxMTYwNzQsIDExNjA3OSwgMTE2MDgzLCAxMTYwODgsIDAsIDAsIDExNjA5MywgMTE2MDk4LCAKKyAgICAxMTYxMDMsIDExNjEwNywgMTE2MTExLCAxMTYxMTYsIDExNjEyMCwgMTE2MTI1LCAwLCAxMTYxMzAsIDExNjEzNSwgCisgICAgMTE2MTQwLCAxMTYxNDQsIDExNjE0OSwgMTE2MTU0LCAxMTYxNTksIDAsIDExNjE2NCwgMTE2MTY4LCAxMTYxNzMsIAorICAgIDExNjE3OCwgMTE2MTgzLCAxMTYxODcsIDExNjE5MiwgMTE2MTk3LCAxMTYyMDIsIDExNjIwNiwgMTE2MjExLCAxMTYyMTYsIAorICAgIDExNjIyMCwgMTE2MjI0LCAxMTYyMjksIDExNjIzMywgMTE2MjM4LCAxMTYyNDMsIDExNjI0NywgMTE2MjUyLCAxMTYyNTcsIAorICAgIDExNjI2MSwgMTE2MjY2LCAxMTYyNzEsIDExNjI3NiwgMTE2MjgxLCAxMTYyODYsIDExNjI5MCwgMCwgMTE2Mjk1LCAKKyAgICAxMTYzMDAsIDExNjMwNCwgMTE2MzA5LCAwLCAxMTYzMTQsIDExNjMxOCwgMTE2MzIzLCAxMTYzMjgsIDExNjMzMiwgMCwgCisgICAgMTE2MzM2LCAwLCAwLCAwLCAxMTYzNDAsIDExNjM0NSwgMTE2MzUwLCAxMTYzNTQsIDExNjM1OSwgMTE2MzY0LCAxMTYzNjksIAorICAgIDAsIDExNjM3NCwgMTE2Mzc4LCAxMTYzODMsIDExNjM4OCwgMTE2MzkzLCAxMTYzOTcsIDExNjQwMiwgMTE2NDA3LCAKKyAgICAxMTY0MTIsIDExNjQxNiwgMTE2NDIxLCAxMTY0MjYsIDExNjQzMCwgMTE2NDM0LCAxMTY0MzksIDExNjQ0MywgMTE2NDQ4LCAKKyAgICAxMTY0NTMsIDExNjQ1NywgMTE2NDYyLCAxMTY0NjcsIDExNjQ3MSwgMTE2NDc2LCAxMTY0ODEsIDExNjQ4NiwgMTE2NDkxLCAKKyAgICAxMTY0OTYsIDExNjUwMSwgMTE2NTA3LCAxMTY1MTMsIDExNjUxOSwgMTE2NTI0LCAxMTY1MzAsIDExNjUzNiwgMTE2NTQyLCAKKyAgICAxMTY1NDcsIDExNjU1MywgMTE2NTU5LCAxMTY1NjQsIDExNjU2OSwgMTE2NTc1LCAxMTY1ODAsIDExNjU4NiwgMTE2NTkyLCAKKyAgICAxMTY1OTcsIDExNjYwMywgMTE2NjA5LCAxMTY2MTQsIDExNjYyMCwgMTE2NjI2LCAxMTY2MzIsIDExNjYzOCwgMTE2NjQ0LCAKKyAgICAxMTY2NDksIDExNjY1NSwgMTE2NjYxLCAxMTY2NjcsIDExNjY3MiwgMTE2Njc4LCAxMTY2ODQsIDExNjY5MCwgMTE2Njk1LCAKKyAgICAxMTY3MDEsIDExNjcwNywgMTE2NzEyLCAxMTY3MTcsIDExNjcyMywgMTE2NzI4LCAxMTY3MzQsIDExNjc0MCwgMTE2NzQ1LCAKKyAgICAxMTY3NTEsIDExNjc1NywgMTE2NzYyLCAxMTY3NjgsIDExNjc3NCwgMTE2NzgwLCAxMTY3ODYsIDExNjc5MiwgMTE2Nzk2LCAKKyAgICAxMTY4MDEsIDExNjgwNiwgMTE2ODExLCAxMTY4MTUsIDExNjgyMCwgMTE2ODI1LCAxMTY4MzAsIDExNjgzNCwgMTE2ODM5LCAKKyAgICAxMTY4NDQsIDExNjg0OCwgMTE2ODUyLCAxMTY4NTcsIDExNjg2MSwgMTE2ODY2LCAxMTY4NzEsIDExNjg3NSwgMTE2ODgwLCAKKyAgICAxMTY4ODUsIDExNjg4OSwgMTE2ODk0LCAxMTY4OTksIDExNjkwNCwgMTE2OTA5LCAxMTY5MTQsIDExNjkxOCwgMTE2OTIzLCAKKyAgICAxMTY5MjgsIDExNjkzMywgMTE2OTM3LCAxMTY5NDIsIDExNjk0NywgMTE2OTUyLCAxMTY5NTYsIDExNjk2MSwgMTE2OTY2LCAKKyAgICAxMTY5NzAsIDExNjk3NCwgMTE2OTc5LCAxMTY5ODMsIDExNjk4OCwgMTE2OTkzLCAxMTY5OTcsIDExNzAwMiwgMTE3MDA3LCAKKyAgICAxMTcwMTEsIDExNzAxNiwgMTE3MDIxLCAxMTcwMjYsIDExNzAzMSwgMTE3MDM2LCAxMTcwNDEsIDExNzA0NywgMTE3MDUzLCAKKyAgICAxMTcwNTksIDExNzA2NCwgMTE3MDcwLCAxMTcwNzYsIDExNzA4MiwgMTE3MDg3LCAxMTcwOTMsIDExNzA5OSwgMTE3MTA0LCAKKyAgICAxMTcxMDksIDExNzExNSwgMTE3MTIwLCAxMTcxMjYsIDExNzEzMiwgMTE3MTM3LCAxMTcxNDMsIDExNzE0OSwgMTE3MTU0LCAKKyAgICAxMTcxNjAsIDExNzE2NiwgMTE3MTcyLCAxMTcxNzgsIDExNzE4NCwgMTE3MTg5LCAxMTcxOTUsIDExNzIwMSwgMTE3MjA3LCAKKyAgICAxMTcyMTIsIDExNzIxOCwgMTE3MjI0LCAxMTcyMzAsIDExNzIzNSwgMTE3MjQxLCAxMTcyNDcsIDExNzI1MiwgMTE3MjU3LCAKKyAgICAxMTcyNjMsIDExNzI2OCwgMTE3Mjc0LCAxMTcyODAsIDExNzI4NSwgMTE3MjkxLCAxMTcyOTcsIDExNzMwMiwgMTE3MzA4LCAKKyAgICAxMTczMTQsIDExNzMyMCwgMTE3MzI2LCAxMTczMzIsIDExNzMzNywgMTE3MzQzLCAxMTczNDksIDExNzM1NSwgMTE3MzYwLCAKKyAgICAxMTczNjYsIDExNzM3MiwgMTE3Mzc4LCAxMTczODMsIDExNzM4OSwgMTE3Mzk1LCAxMTc0MDAsIDExNzQwNSwgMTE3NDExLCAKKyAgICAxMTc0MTYsIDExNzQyMiwgMTE3NDI4LCAxMTc0MzMsIDExNzQzOSwgMTE3NDQ1LCAxMTc0NTAsIDExNzQ1NiwgMTE3NDYyLCAKKyAgICAxMTc0NjgsIDExNzQ3NCwgMTE3NDgwLCAxMTc0ODUsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDMsIDExNzUwOCwgMTE3NTE0LCAKKyAgICAxMTc1MjAsIDExNzUyNiwgMTE3NTMxLCAxMTc1MzcsIDExNzU0MywgMTE3NTQ4LCAxMTc1NTMsIDExNzU1OSwgMTE3NTY0LCAKKyAgICAxMTc1NzAsIDExNzU3NiwgMTE3NTgxLCAxMTc1ODcsIDExNzU5MywgMTE3NTk4LCAxMTc2MDQsIDExNzYxMCwgMTE3NjE2LCAKKyAgICAxMTc2MjIsIDExNzYyOCwgMTE3NjM0LCAxMTc2NDEsIDExNzY0OCwgMTE3NjU1LCAxMTc2NjEsIDExNzY2OCwgMTE3Njc1LCAKKyAgICAxMTc2ODIsIDExNzY4OCwgMTE3Njk1LCAxMTc3MDIsIDExNzcwOCwgMTE3NzE0LCAxMTc3MjEsIDExNzcyNywgMTE3NzM0LCAKKyAgICAxMTc3NDEsIDExNzc0NywgMTE3NzU0LCAxMTc3NjEsIDExNzc2NywgMTE3Nzc0LCAxMTc3ODEsIDExNzc4OCwgMTE3Nzk1LCAKKyAgICAxMTc4MDIsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjIsIDExNzgyOSwgMTE3ODM1LCAxMTc4NDIsIDExNzg0OSwgMTE3ODU2LCAKKyAgICAxMTc4NjIsIDExNzg2OSwgMTE3ODc2LCAxMTc4ODIsIDExNzg4OCwgMTE3ODk1LCAxMTc5MDEsIDExNzkwOCwgMTE3OTE1LCAKKyAgICAxMTc5MjEsIDExNzkyOCwgMTE3OTM1LCAxMTc5NDEsIDExNzk0OCwgMTE3OTU1LCAxMTc5NjIsIDExNzk2OSwgMTE3OTc2LCAKKyAgICAxMTc5ODEsIDExNzk4NywgMTE3OTkzLCAxMTc5OTksIDExODAwNCwgMTE4MDEwLCAxMTgwMTYsIDExODAyMiwgMTE4MDI3LCAKKyAgICAxMTgwMzMsIDExODAzOSwgMTE4MDQ0LCAxMTgwNDksIDExODA1NSwgMTE4MDYwLCAxMTgwNjYsIDExODA3MiwgMTE4MDc3LCAKKyAgICAxMTgwODMsIDExODA4OSwgMTE4MDk0LCAxMTgxMDAsIDExODEwNiwgMTE4MTEyLCAxMTgxMTgsIDExODEyNCwgMTE4MTI5LCAKKyAgICAxMTgxMzUsIDExODE0MSwgMTE4MTQ3LCAxMTgxNTIsIDExODE1OCwgMTE4MTY0LCAxMTgxNzAsIDExODE3NSwgMTE4MTgxLCAKKyAgICAxMTgxODcsIDExODE5MiwgMTE4MTk3LCAxMTgyMDMsIDExODIwOCwgMTE4MjE0LCAxMTgyMjAsIDExODIyNSwgMTE4MjMxLCAKKyAgICAxMTgyMzcsIDExODI0MiwgMTE4MjQ4LCAxMTgyNTQsIDExODI2MCwgMTE4MjY2LCAxMTgyNzIsIDExODI3OCwgMCwgMCwgCisgICAgMTE4Mjg1LCAxMTgyOTAsIDExODI5NSwgMTE4MzAwLCAxMTgzMDUsIDExODMxMCwgMTE4MzE1LCAxMTgzMjAsIDExODMyNSwgCisgICAgMTE4MzMwLCAxMTgzMzUsIDExODM0MCwgMTE4MzQ1LCAxMTgzNTAsIDExODM1NSwgMTE4MzYwLCAxMTgzNjUsIDExODM3MCwgCisgICAgMTE4Mzc2LCAxMTgzODEsIDExODM4NiwgMTE4MzkxLCAxMTgzOTYsIDExODQwMSwgMTE4NDA2LCAxMTg0MTEsIDExODQxNSwgCisgICAgMTE4NDIwLCAxMTg0MjUsIDExODQzMCwgMTE4NDM1LCAxMTg0NDAsIDExODQ0NSwgMTE4NDUwLCAxMTg0NTUsIDExODQ2MCwgCisgICAgMTE4NDY1LCAxMTg0NzAsIDExODQ3NSwgMTE4NDgwLCAxMTg0ODUsIDExODQ5MCwgMTE4NDk1LCAxMTg1MDAsIDExODUwNiwgCisgICAgMTE4NTExLCAxMTg1MTYsIDExODUyMSwgMTE4NTI2LCAxMTg1MzEsIDExODUzNiwgMTE4NTQxLCAxMTg1NDcsIDExODU1MiwgCisgICAgMTE4NTU3LCAxMTg1NjIsIDExODU2NywgMTE4NTcyLCAxMTg1NzcsIDExODU4MiwgMTE4NTg3LCAxMTg1OTIsIDExODU5NywgCisgICAgMTE4NjAyLCAxMTg2MDcsIDExODYxMiwgMTE4NjE3LCAxMTg2MjIsIDExODYyNywgMTE4NjMyLCAxMTg2MzcsIDExODY0MiwgCisgICAgMTE4NjQ3LCAxMTg2NTIsIDExODY1NywgMTE4NjYyLCAxMTg2NjgsIDExODY3MywgMTE4Njc4LCAxMTg2ODMsIDExODY4OCwgCisgICAgMTE4NjkzLCAxMTg2OTgsIDExODcwMywgMTE4NzA3LCAxMTg3MTIsIDExODcxNywgMTE4NzIyLCAxMTg3MjcsIDExODczMiwgCisgICAgMTE4NzM3LCAxMTg3NDIsIDExODc0NywgMTE4NzUyLCAxMTg3NTcsIDExODc2MiwgMTE4NzY3LCAxMTg3NzIsIDExODc3NywgCisgICAgMTE4NzgyLCAxMTg3ODcsIDExODc5MiwgMTE4Nzk4LCAxMTg4MDMsIDExODgwOCwgMTE4ODEzLCAxMTg4MTgsIDExODgyMywgCisgICAgMTE4ODI4LCAxMTg4MzMsIDExODgzOSwgMTE4ODQ0LCAxMTg4NDksIDExODg1NCwgMTE4ODU5LCAxMTg4NjQsIDExODg2OSwgCisgICAgMTE4ODc1LCAxMTg4ODEsIDExODg4NywgMTE4ODkzLCAxMTg4OTksIDExODkwNSwgMTE4OTExLCAxMTg5MTcsIDExODkyMywgCisgICAgMTE4OTI5LCAxMTg5MzUsIDExODk0MSwgMTE4OTQ3LCAxMTg5NTMsIDExODk1OSwgMTE4OTY1LCAxMTg5NzEsIDExODk3OCwgCisgICAgMTE4OTg0LCAxMTg5OTAsIDExODk5NiwgMTE5MDAyLCAxMTkwMDgsIDExOTAxNCwgMTE5MDIwLCAxMTkwMjUsIDExOTAzMSwgCisgICAgMTE5MDM3LCAxMTkwNDMsIDExOTA0OSwgMTE5MDU1LCAxMTkwNjEsIDExOTA2NywgMTE5MDczLCAxMTkwNzksIDExOTA4NSwgCisgICAgMTE5MDkxLCAxMTkwOTcsIDExOTEwMywgMTE5MTA5LCAxMTkxMTUsIDExOTEyMSwgMTE5MTI3LCAxMTkxMzQsIDExOTE0MCwgCisgICAgMTE5MTQ2LCAxMTkxNTIsIDExOTE1OCwgMTE5MTY0LCAxMTkxNzAsIDExOTE3NiwgMTE5MTgzLCAxMTkxODksIDExOTE5NSwgCisgICAgMTE5MjAxLCAxMTkyMDcsIDExOTIxMywgMTE5MjE5LCAxMTkyMjUsIDExOTIzMSwgMTE5MjM3LCAxMTkyNDMsIDExOTI0OSwgCisgICAgMTE5MjU1LCAxMTkyNjEsIDExOTI2NywgMTE5MjczLCAxMTkyNzksIDExOTI4NSwgMTE5MjkxLCAxMTkyOTcsIDExOTMwMywgCisgICAgMTE5MzA5LCAxMTkzMTUsIDExOTMyMSwgMTE5MzI4LCAxMTkzMzQsIDExOTM0MCwgMTE5MzQ2LCAxMTkzNTIsIDExOTM1OCwgCisgICAgMTE5MzY0LCAxMTkzNzAsIDExOTM3NSwgMTE5MzgxLCAxMTkzODcsIDExOTM5MywgMTE5Mzk5LCAxMTk0MDUsIDExOTQxMSwgCisgICAgMTE5NDE3LCAxMTk0MjMsIDExOTQyOSwgMTE5NDM1LCAxMTk0NDEsIDExOTQ0NywgMTE5NDUzLCAxMTk0NTksIDExOTQ2NSwgCisgICAgMTE5NDcxLCAxMTk0NzcsIDExOTQ4NCwgMTE5NDkwLCAxMTk0OTYsIDExOTUwMiwgMTE5NTA4LCAxMTk1MTQsIDExOTUyMCwgCisgICAgMTE5NTI2LCAxMTk1MzMsIDExOTUzOSwgMTE5NTQ1LCAxMTk1NTEsIDExOTU1NywgMTE5NTYzLCAxMTk1NjksIDExOTU3NiwgCisgICAgMTE5NTgzLCAxMTk1OTAsIDExOTU5NywgMTE5NjA0LCAxMTk2MTEsIDExOTYxOCwgMTE5NjI1LCAxMTk2MzIsIDExOTYzOSwgCisgICAgMTE5NjQ2LCAxMTk2NTMsIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgMTE5Njg4LCAxMTk2OTYsIDExOTcwMywgCisgICAgMTE5NzEwLCAxMTk3MTcsIDExOTcyNCwgMTE5NzMxLCAxMTk3MzgsIDExOTc0NSwgMTE5NzUxLCAxMTk3NTgsIDExOTc2NSwgCisgICAgMTE5NzcyLCAxMTk3NzksIDExOTc4NiwgMTE5NzkzLCAxMTk4MDAsIDExOTgwNywgMTE5ODE0LCAxMTk4MjEsIDExOTgyOCwgCisgICAgMTE5ODM1LCAxMTk4NDIsIDExOTg0OSwgMTE5ODU2LCAxMTk4NjMsIDExOTg3MCwgMTE5ODc4LCAxMTk4ODUsIDExOTg5MiwgCisgICAgMTE5ODk5LCAxMTk5MDYsIDExOTkxMywgMTE5OTIwLCAxMTk5MjcsIDExOTkzNSwgMTE5OTQyLCAxMTk5NDksIDExOTk1NiwgCisgICAgMTE5OTYzLCAxMTk5NzAsIDExOTk3NywgMTE5OTgyLCAwLCAwLCAxMTk5ODcsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIAorICAgIDEyMDAwNCwgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMzLCAxMjAwMzcsIAorICAgIDEyMDA0MSwgMTIwMDQ1LCAxMjAwNDksIDEyMDA1MywgMTIwMDU3LCAxMjAwNjEsIDEyMDA2NSwgMTIwMDY5LCAxMjAwNzQsIAorICAgIDEyMDA3OCwgMTIwMDgyLCAxMjAwODYsIDEyMDA5MCwgMTIwMDk0LCAxMjAwOTgsIDEyMDEwMiwgMTIwMTA2LCAxMjAxMTAsIAorICAgIDEyMDExNiwgMTIwMTIxLCAxMjAxMjYsIDEyMDEzMSwgMTIwMTM2LCAxMjAxNDEsIDEyMDE0NiwgMTIwMTUxLCAxMjAxNTYsIAorICAgIDEyMDE2MSwgMTIwMTY3LCAxMjAxNzIsIDEyMDE3NywgMTIwMTgyLCAxMjAxODcsIDEyMDE5MiwgMTIwMTk3LCAxMjAyMDIsIAorICAgIDEyMDIwNywgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgMTIwMjI0LCAwLCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAKKyAgICAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAKKyAgICAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAKKyAgICAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjYsIDEyMDMzMiwgMTIwMzM4LCAwLCAxMjAzNDQsIDEyMDM0OSwgMCwgCisgICAgMTIwMzU0LCAwLCAwLCAxMjAzNTksIDAsIDEyMDM2NCwgMTIwMzY5LCAxMjAzNzQsIDEyMDM3OSwgMTIwMzg0LCAxMjAzODksIAorICAgIDEyMDM5NCwgMTIwMzk5LCAxMjA0MDQsIDEyMDQwOSwgMCwgMTIwNDE0LCAxMjA0MTksIDEyMDQyNCwgMTIwNDI5LCAwLCAKKyAgICAxMjA0MzQsIDAsIDEyMDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwNDQ0LCAwLCAwLCAwLCAwLCAxMjA0NTAsIDAsIAorICAgIDEyMDQ1NiwgMCwgMTIwNDYyLCAwLCAxMjA0NjgsIDEyMDQ3NCwgMTIwNDgwLCAwLCAxMjA0ODYsIDEyMDQ5MiwgMCwgCisgICAgMTIwNDk4LCAwLCAwLCAxMjA1MDQsIDAsIDEyMDUxMCwgMCwgMTIwNTE2LCAwLCAxMjA1MjIsIDAsIDEyMDUzMCwgMCwgCisgICAgMTIwNTM4LCAxMjA1NDQsIDAsIDEyMDU1MCwgMCwgMCwgMTIwNTU2LCAxMjA1NjIsIDEyMDU2OCwgMTIwNTc0LCAwLCAKKyAgICAxMjA1ODAsIDEyMDU4NiwgMTIwNTkyLCAxMjA1OTgsIDEyMDYwNCwgMTIwNjEwLCAxMjA2MTYsIDAsIDEyMDYyMiwgCisgICAgMTIwNjI4LCAxMjA2MzQsIDEyMDY0MCwgMCwgMTIwNjQ2LCAxMjA2NTIsIDEyMDY1OCwgMTIwNjY0LCAwLCAxMjA2NzIsIDAsIAorICAgIDEyMDY4MCwgMTIwNjg2LCAxMjA2OTIsIDEyMDY5OCwgMTIwNzA0LCAxMjA3MTAsIDEyMDcxNiwgMTIwNzIyLCAxMjA3MjgsIAorICAgIDEyMDczNCwgMCwgMTIwNzQwLCAxMjA3NDYsIDEyMDc1MiwgMTIwNzU4LCAxMjA3NjQsIDEyMDc3MCwgMTIwNzc2LCAKKyAgICAxMjA3ODIsIDEyMDc4OCwgMTIwNzk0LCAxMjA4MDAsIDEyMDgwNiwgMTIwODEyLCAxMjA4MTgsIDEyMDgyNCwgMTIwODMwLCAKKyAgICAxMjA4MzYsIDAsIDAsIDAsIDAsIDAsIDEyMDg0MiwgMTIwODQ3LCAxMjA4NTIsIDAsIDEyMDg1NywgMTIwODYyLCAxMjA4NjcsIAorICAgIDEyMDg3MiwgMTIwODc3LCAwLCAxMjA4ODIsIDEyMDg4NywgMTIwODkyLCAxMjA4OTcsIDEyMDkwMiwgMTIwOTA3LCAKKyAgICAxMjA5MTIsIDEyMDkxNywgMTIwOTIyLCAxMjA5MjcsIDEyMDkzMiwgMTIwOTM3LCAxMjA5NDIsIDEyMDk0NywgMTIwOTUyLCAKKyAgICAxMjA5NTcsIDEyMDk2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNDQ2LCAKLSAgICAxMjI0NTEsIDEyMjQ1NiwgMTIyNDYxLCAxMjI0NjYsIDEyMjQ3MSwgMTIyNDc2LCAxMjI0ODMsIDEyMjQ5MCwgMTIyNDk3LCAKLSAgICAxMjI1MDQsIDEyMjUwOSwgMTIyNTE0LCAxMjI1MTksIDEyMjUyNCwgMTIyNTMxLCAxMjI1MzcsIDEyMjU0NCwgMTIyNTUxLCAKLSAgICAxMjI1NTgsIDEyMjU2MywgMTIyNTY4LCAxMjI1NzMsIDEyMjU3OCwgMTIyNTgzLCAxMjI1OTAsIDEyMjU5NywgMTIyNjAyLCAKLSAgICAxMjI2MDcsIDEyMjYxNCwgMTIyNjIxLCAxMjI2MjksIDEyMjYzNywgMTIyNjQ0LCAxMjI2NTEsIDEyMjY1OSwgMTIyNjY3LCAKLSAgICAxMjI2NzUsIDEyMjY4MiwgMTIyNjkyLCAxMjI3MDMsIDEyMjcwOCwgMTIyNzE1LCAxMjI3MjIsIDEyMjcyOSwgMTIyNzM3LCAKLSAgICAxMjI3NDUsIDEyMjc1NiwgMTIyNzY0LCAxMjI3NzIsIDEyMjc4MCwgMTIyNzg1LCAxMjI3OTAsIDEyMjc5NSwgMTIyODAwLCAKLSAgICAxMjI4MDUsIDEyMjgxMCwgMTIyODE1LCAxMjI4MjAsIDEyMjgyNSwgMTIyODMwLCAxMjI4MzUsIDEyMjg0MCwgMTIyODQ3LCAKLSAgICAxMjI4NTIsIDEyMjg1NywgMTIyODY0LCAxMjI4NjksIDEyMjg3NCwgMTIyODc5LCAxMjI4ODQsIDEyMjg4OSwgMTIyODk0LCAKLSAgICAxMjI4OTksIDEyMjkwNCwgMTIyOTA5LCAxMjI5MTQsIDEyMjkxOSwgMTIyOTI0LCAxMjI5MzEsIDEyMjkzOSwgMTIyOTQ0LCAKLSAgICAxMjI5NDksIDEyMjk1NiwgMTIyOTYxLCAxMjI5NjYsIDEyMjk3MSwgMTIyOTc4LCAxMjI5ODMsIDEyMjk5MCwgMTIyOTk1LCAKLSAgICAxMjMwMDIsIDEyMzAwNywgMTIzMDE2LCAxMjMwMjUsIDEyMzAzMCwgMTIzMDM1LCAxMjMwNDAsIDEyMzA0NSwgMTIzMDUwLCAKLSAgICAxMjMwNTUsIDEyMzA2MCwgMTIzMDY1LCAxMjMwNzAsIDEyMzA3NSwgMTIzMDgwLCAxMjMwODUsIDEyMzA5MCwgMTIzMDk4LCAKLSAgICAxMjMxMDYsIDEyMzExMSwgMTIzMTE2LCAxMjMxMjEsIDEyMzEyNiwgMTIzMTMxLCAxMjMxMzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzE0MywgMTIzMTQ3LCAxMjMxNTEsIDEyMzE1NSwgMTIzMTU5LCAxMjMxNjMsIDEyMzE2NywgCi0gICAgMTIzMTcxLCAxMjMxNzUsIDEyMzE3OSwgMTIzMTgzLCAxMjMxODcsIDEyMzE5MSwgMTIzMTk1LCAxMjMxOTksIDEyMzIwMywgCi0gICAgMTIzMjA3LCAxMjMyMTEsIDEyMzIxNSwgMTIzMjE5LCAxMjMyMjMsIDEyMzIyNywgMTIzMjMxLCAxMjMyMzUsIDEyMzIzOSwgCi0gICAgMTIzMjQzLCAxMjMyNDcsIDEyMzI1MSwgMTIzMjU1LCAxMjMyNTksIDEyMzI2MywgMTIzMjY3LCAxMjMyNzEsIDEyMzI3NSwgCi0gICAgMTIzMjc5LCAxMjMyODMsIDEyMzI4NywgMTIzMjkxLCAxMjMyOTUsIDEyMzI5OSwgMTIzMzAzLCAxMjMzMDcsIDEyMzMxMSwgCi0gICAgMTIzMzE1LCAxMjMzMTksIDEyMzMyMywgMTIzMzI3LCAxMjMzMzEsIDEyMzMzNSwgMTIzMzM5LCAxMjMzNDMsIDEyMzM0NywgCi0gICAgMTIzMzUxLCAxMjMzNTUsIDEyMzM1OSwgMTIzMzYzLCAxMjMzNjcsIDEyMzM3MSwgMTIzMzc1LCAxMjMzNzksIDEyMzM4MywgCi0gICAgMTIzMzg3LCAxMjMzOTEsIDEyMzM5NSwgMTIzMzk5LCAxMjM0MDMsIDEyMzQwNywgMTIzNDExLCAxMjM0MTUsIDEyMzQxOSwgCi0gICAgMTIzNDIzLCAxMjM0MjcsIDEyMzQzMSwgMTIzNDM1LCAxMjM0MzksIDEyMzQ0MywgMTIzNDQ3LCAxMjM0NTEsIDEyMzQ1NSwgCi0gICAgMTIzNDU5LCAxMjM0NjMsIDEyMzQ2NywgMTIzNDcxLCAxMjM0NzUsIDEyMzQ3OSwgMTIzNDgzLCAxMjM0ODcsIDEyMzQ5MSwgCi0gICAgMTIzNDk1LCAxMjM0OTksIDEyMzUwMywgMTIzNTA3LCAxMjM1MTEsIDEyMzUxNSwgMTIzNTE5LCAxMjM1MjMsIDEyMzUyNywgCi0gICAgMTIzNTMxLCAxMjM1MzUsIDEyMzUzOSwgMTIzNTQzLCAxMjM1NDcsIDEyMzU1MSwgMTIzNTU1LCAxMjM1NTksIDEyMzU2MywgCi0gICAgMTIzNTY3LCAxMjM1NzEsIDEyMzU3NSwgMTIzNTc5LCAxMjM1ODMsIDEyMzU4NywgMTIzNTkxLCAxMjM1OTUsIDEyMzU5OSwgCi0gICAgMTIzNjAzLCAxMjM2MDcsIDEyMzYxMSwgMTIzNjE1LCAxMjM2MTksIDEyMzYyMywgMTIzNjI3LCAxMjM2MzEsIDEyMzYzNSwgCi0gICAgMTIzNjM5LCAxMjM2NDMsIDEyMzY0NywgMTIzNjUxLCAxMjM2NTUsIDEyMzY1OSwgMTIzNjYzLCAxMjM2NjcsIDEyMzY3MSwgCi0gICAgMTIzNjc1LCAxMjM2NzksIDEyMzY4MywgMTIzNjg3LCAxMjM2OTEsIDEyMzY5NSwgMTIzNjk5LCAxMjM3MDMsIDEyMzcwNywgCi0gICAgMTIzNzExLCAxMjM3MTUsIDEyMzcxOSwgMTIzNzIzLCAxMjM3MjcsIDEyMzczMSwgMTIzNzM1LCAxMjM3MzksIDEyMzc0MywgCi0gICAgMTIzNzQ3LCAxMjM3NTEsIDEyMzc1NSwgMTIzNzU5LCAxMjM3NjMsIDEyMzc2NywgMTIzNzcxLCAxMjM3NzUsIDEyMzc3OSwgCi0gICAgMTIzNzgzLCAxMjM3ODcsIDEyMzc5MSwgMTIzNzk1LCAxMjM3OTksIDEyMzgwMywgMTIzODA3LCAxMjM4MTEsIDEyMzgxNSwgCi0gICAgMTIzODE5LCAxMjM4MjMsIDEyMzgyNywgMTIzODMxLCAxMjM4MzUsIDEyMzgzOSwgMTIzODQzLCAxMjM4NDcsIDEyMzg1MSwgCi0gICAgMTIzODU1LCAxMjM4NTksIDEyMzg2MywgMTIzODY3LCAxMjM4NzEsIDEyMzg3NSwgMTIzODc5LCAxMjM4ODMsIDEyMzg4NywgCi0gICAgMTIzODkxLCAxMjM4OTUsIDEyMzg5OSwgMTIzOTAzLCAxMjM5MDcsIDEyMzkxMSwgMTIzOTE1LCAxMjM5MTksIDEyMzkyMywgCi0gICAgMTIzOTI3LCAxMjM5MzEsIDEyMzkzNSwgMTIzOTM5LCAxMjM5NDMsIDEyMzk0NywgMTIzOTUxLCAxMjM5NTUsIDEyMzk1OSwgCi0gICAgMTIzOTYzLCAxMjM5NjcsIDEyMzk3MSwgMTIzOTc1LCAxMjM5NzksIDEyMzk4MywgMTIzOTg3LCAxMjM5OTEsIDEyMzk5NSwgCi0gICAgMTIzOTk5LCAxMjQwMDMsIDEyNDAwNywgMTI0MDExLCAxMjQwMTUsIDEyNDAxOSwgMTI0MDIzLCAxMjQwMjcsIDEyNDAzMSwgCi0gICAgMTI0MDM1LCAxMjQwMzksIDEyNDA0MywgMTI0MDQ3LCAxMjQwNTEsIDEyNDA1NSwgMTI0MDU5LCAxMjQwNjMsIDEyNDA2NywgCi0gICAgMTI0MDcxLCAxMjQwNzUsIDEyNDA3OSwgMTI0MDgzLCAxMjQwODcsIDEyNDA5MSwgMTI0MDk1LCAxMjQwOTksIDEyNDEwMywgCi0gICAgMTI0MTA3LCAxMjQxMTEsIDEyNDExNSwgMTI0MTE5LCAxMjQxMjMsIDEyNDEyNywgMTI0MTMxLCAxMjQxMzUsIDEyNDEzOSwgCi0gICAgMTI0MTQzLCAxMjQxNDcsIDEyNDE1MSwgMTI0MTU1LCAxMjQxNTksIDEyNDE2MywgMTI0MTY3LCAxMjQxNzEsIDEyNDE3NSwgCi0gICAgMTI0MTc5LCAxMjQxODMsIDEyNDE4NywgMTI0MTkxLCAxMjQxOTUsIDEyNDE5OSwgMTI0MjAzLCAxMjQyMDcsIDEyNDIxMSwgCi0gICAgMTI0MjE1LCAxMjQyMTksIDEyNDIyMywgMTI0MjI3LCAxMjQyMzEsIDEyNDIzNSwgMTI0MjM5LCAxMjQyNDMsIDEyNDI0NywgCi0gICAgMTI0MjUxLCAxMjQyNTUsIDEyNDI1OSwgMTI0MjYzLCAxMjQyNjcsIDEyNDI3MSwgMTI0Mjc1LCAxMjQyNzksIDEyNDI4MywgCi0gICAgMTI0Mjg3LCAxMjQyOTEsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDMsIDEyNDMwNywgMTI0MzExLCAxMjQzMTUsIDEyNDMxOSwgCi0gICAgMTI0MzIzLCAxMjQzMjcsIDEyNDMzMSwgMTI0MzM1LCAxMjQzMzksIDEyNDM0MywgMTI0MzQ3LCAxMjQzNTEsIDEyNDM1NSwgCi0gICAgMTI0MzU5LCAxMjQzNjMsIDEyNDM2NywgMTI0MzcxLCAxMjQzNzUsIDEyNDM3OSwgMTI0MzgzLCAxMjQzODcsIDEyNDM5MSwgCi0gICAgMTI0Mzk1LCAxMjQzOTksIDEyNDQwMywgMTI0NDA3LCAxMjQ0MTEsIDEyNDQxNSwgMTI0NDE5LCAxMjQ0MjMsIDEyNDQyNywgCi0gICAgMTI0NDMxLCAxMjQ0MzUsIDEyNDQzOSwgMTI0NDQzLCAxMjQ0NDcsIDEyNDQ1MSwgMTI0NDU1LCAxMjQ0NTksIDEyNDQ2MywgCi0gICAgMTI0NDY3LCAxMjQ0NzEsIDEyNDQ3NSwgMTI0NDc5LCAxMjQ0ODMsIDEyNDQ4NywgMTI0NDkxLCAxMjQ0OTUsIDEyNDQ5OSwgCi0gICAgMTI0NTAzLCAxMjQ1MDcsIDEyNDUxMSwgMTI0NTE1LCAxMjQ1MTksIDEyNDUyMywgMTI0NTI3LCAxMjQ1MzEsIDEyNDUzNSwgCi0gICAgMTI0NTM5LCAxMjQ1NDMsIDEyNDU0NywgMTI0NTUxLCAxMjQ1NTUsIDEyNDU1OSwgMTI0NTYzLCAxMjQ1NjcsIDEyNDU3MSwgCi0gICAgMTI0NTc1LCAxMjQ1NzksIDEyNDU4MywgMTI0NTg3LCAxMjQ1OTEsIDEyNDU5NSwgMTI0NTk5LCAxMjQ2MDMsIDEyNDYwNywgCi0gICAgMTI0NjExLCAxMjQ2MTUsIDEyNDYxOSwgMTI0NjIzLCAxMjQ2MjcsIDEyNDYzMSwgMTI0NjM1LCAxMjQ2MzksIDEyNDY0MywgCi0gICAgMTI0NjQ3LCAxMjQ2NTEsIDEyNDY1NSwgMTI0NjU5LCAxMjQ2NjMsIDEyNDY2NywgMTI0NjcxLCAxMjQ2NzUsIDEyNDY3OSwgCi0gICAgMTI0NjgzLCAxMjQ2ODcsIDEyNDY5MSwgMTI0Njk1LCAxMjQ2OTksIDEyNDcwMywgMTI0NzA3LCAxMjQ3MTEsIDEyNDcxNSwgCi0gICAgMTI0NzE5LCAxMjQ3MjMsIDEyNDcyNywgMTI0NzMxLCAxMjQ3MzUsIDEyNDczOSwgMTI0NzQzLCAxMjQ3NDcsIDEyNDc1MSwgCi0gICAgMTI0NzU1LCAxMjQ3NTksIDEyNDc2MywgMTI0NzY3LCAxMjQ3NzEsIDEyNDc3NSwgMTI0Nzc5LCAxMjQ3ODMsIDEyNDc4NywgCi0gICAgMTI0NzkxLCAxMjQ3OTUsIDEyNDc5OSwgMTI0ODAzLCAxMjQ4MDcsIDEyNDgxMSwgMTI0ODE1LCAxMjQ4MTksIDEyNDgyMywgCi0gICAgMTI0ODI3LCAxMjQ4MzEsIDEyNDgzNSwgMTI0ODM5LCAxMjQ4NDMsIDEyNDg0NywgMTI0ODUxLCAxMjQ4NTUsIDEyNDg1OSwgCi0gICAgMTI0ODYzLCAxMjQ4NjcsIDEyNDg3MSwgMTI0ODc1LCAxMjQ4NzksIDEyNDg4MywgMTI0ODg3LCAxMjQ4OTEsIDEyNDg5NSwgCi0gICAgMTI0ODk5LCAxMjQ5MDMsIDEyNDkwNywgMTI0OTExLCAxMjQ5MTUsIDEyNDkxOSwgMTI0OTIzLCAxMjQ5MjcsIDEyNDkzMSwgCi0gICAgMTI0OTM1LCAxMjQ5MzksIDEyNDk0MywgMTI0OTQ3LCAxMjQ5NTEsIDEyNDk1NSwgMTI0OTU5LCAxMjQ5NjMsIDEyNDk2NywgCi0gICAgMTI0OTcxLCAxMjQ5NzUsIDEyNDk3OSwgMTI0OTgzLCAxMjQ5ODcsIDEyNDk5MSwgMTI0OTk1LCAxMjQ5OTksIDEyNTAwMywgCi0gICAgMTI1MDA3LCAxMjUwMTEsIDEyNTAxNSwgMTI1MDE5LCAxMjUwMjMsIDEyNTAyNywgMTI1MDMxLCAxMjUwMzUsIDEyNTAzOSwgCi0gICAgMTI1MDQzLCAxMjUwNDcsIDEyNTA1MSwgMTI1MDU1LCAxMjUwNTksIDEyNTA2MywgMTI1MDY3LCAxMjUwNzEsIDEyNTA3NSwgCi0gICAgMTI1MDc5LCAxMjUwODMsIDEyNTA4NywgMTI1MDkxLCAxMjUwOTUsIDEyNTA5OSwgMTI1MTAzLCAxMjUxMDcsIDEyNTExMSwgCi0gICAgMTI1MTE1LCAxMjUxMTksIDEyNTEyMywgMTI1MTI3LCAxMjUxMzEsIDEyNTEzNSwgMTI1MTM5LCAxMjUxNDMsIDEyNTE0NywgCi0gICAgMTI1MTUxLCAxMjUxNTUsIDEyNTE1OSwgMTI1MTYzLCAxMjUxNjcsIDEyNTE3MSwgMTI1MTc1LCAxMjUxNzksIDEyNTE4MywgCi0gICAgMTI1MTg3LCAxMjUxOTEsIDEyNTE5NSwgMTI1MTk5LCAxMjUyMDMsIDEyNTIwNywgMTI1MjExLCAxMjUyMTUsIDEyNTIxOSwgCi0gICAgMTI1MjIzLCAxMjUyMjcsIDEyNTIzMSwgMTI1MjM1LCAxMjUyMzksIDEyNTI0MywgMTI1MjQ3LCAxMjUyNTEsIDEyNTI1NSwgCi0gICAgMTI1MjU5LCAxMjUyNjMsIDEyNTI2NywgMTI1MjcxLCAxMjUyNzUsIDEyNTI3OSwgMTI1MjgzLCAxMjUyODcsIDEyNTI5MSwgCi0gICAgMTI1Mjk1LCAxMjUyOTksIDEyNTMwMywgMTI1MzA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA5NjcsIDEyMDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTIwOTg1LCAxMjA5OTIsIDEyMDk5OSwgMTIxMDA2LCAxMjEwMTMsIDEyMTAyMCwgMTIxMDI3LCAKKyAgICAxMjEwMzMsIDEyMTA0MCwgMTIxMDQ3LCAxMjEwNTQsIDEyMTA2MiwgMTIxMDcwLCAxMjEwNzgsIDEyMTA4NiwgMTIxMDk0LCAKKyAgICAxMjExMDIsIDEyMTEwOSwgMTIxMTE2LCAxMjExMjMsIDEyMTEzMSwgMTIxMTM5LCAxMjExNDcsIDEyMTE1NSwgMTIxMTYzLCAKKyAgICAxMjExNzEsIDEyMTE3OCwgMTIxMTg1LCAxMjExOTIsIDEyMTIwMCwgMTIxMjA4LCAxMjEyMTYsIDEyMTIyNCwgMTIxMjMyLCAKKyAgICAxMjEyNDAsIDEyMTI0NSwgMTIxMjUwLCAxMjEyNTUsIDEyMTI2MCwgMTIxMjY1LCAxMjEyNzAsIDEyMTI3NSwgMTIxMjgwLCAKKyAgICAxMjEyODUsIDAsIDAsIDAsIDAsIDEyMTI5MCwgMTIxMjk1LCAxMjEyOTksIDEyMTMwMywgMTIxMzA3LCAxMjEzMTEsIAorICAgIDEyMTMxNSwgMTIxMzE5LCAxMjEzMjMsIDEyMTMyNywgMTIxMzMxLCAxMjEzMzUsIDEyMTMzOSwgMTIxMzQzLCAxMjEzNDcsIAorICAgIDEyMTM1MSwgMTIxMzU1LCAxMjEzNTksIDEyMTM2MywgMTIxMzY3LCAxMjEzNzEsIDEyMTM3NSwgMTIxMzc5LCAxMjEzODMsIAorICAgIDEyMTM4NywgMTIxMzkxLCAxMjEzOTUsIDEyMTM5OSwgMTIxNDAzLCAxMjE0MDcsIDEyMTQxMSwgMTIxNDE1LCAxMjE0MTksIAorICAgIDEyMTQyMywgMTIxNDI3LCAxMjE0MzEsIDEyMTQzNSwgMTIxNDM5LCAxMjE0NDMsIDEyMTQ0NywgMTIxNDUxLCAxMjE0NTUsIAorICAgIDEyMTQ1OSwgMTIxNDYzLCAxMjE0NjcsIDEyMTQ3MSwgMTIxNDc1LCAxMjE0NzksIDEyMTQ4MywgMTIxNDg3LCAxMjE0OTEsIAorICAgIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIDEyMTUyMCwgMTIxNTI0LCAxMjE1MjgsIAorICAgIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIAorICAgIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIAorICAgIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIAorICAgIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIAorICAgIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIxNjkyLCAxMjE2OTgsIDEyMTcwNywgMTIxNzE1LCAxMjE3MjMsIDEyMTczMiwgMTIxNzQxLCAxMjE3NTAsIDEyMTc1OSwgCisgICAgMTIxNzY4LCAxMjE3NzcsIDEyMTc4NiwgMTIxNzk1LCAxMjE4MDQsIDEyMTgxMywgMCwgMCwgMTIxODIyLCAxMjE4MzEsIAorICAgIDEyMTgzOSwgMTIxODQ3LCAxMjE4NTYsIDEyMTg2NSwgMTIxODc0LCAxMjE4ODMsIDEyMTg5MiwgMTIxOTAxLCAxMjE5MTAsIAorICAgIDEyMTkxOSwgMTIxOTI4LCAxMjE5MzcsIDAsIDAsIDEyMTk0NiwgMTIxOTU1LCAxMjE5NjMsIDEyMTk3MSwgMTIxOTgwLCAKKyAgICAxMjE5ODksIDEyMTk5OCwgMTIyMDA3LCAxMjIwMTYsIDEyMjAyNSwgMTIyMDM0LCAxMjIwNDMsIDEyMjA1MiwgMTIyMDYxLCAKKyAgICAxMjIwNzAsIDAsIDEyMjA3NywgMTIyMDg2LCAxMjIwOTQsIDEyMjEwMiwgMTIyMTExLCAxMjIxMjAsIDEyMjEyOSwgCisgICAgMTIyMTM4LCAxMjIxNDcsIDEyMjE1NiwgMTIyMTY1LCAxMjIxNzQsIDEyMjE4MywgMTIyMTkyLCAxMjIyMDEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMjIwOCwgMTIyMjE1LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNywgCisgICAgMTIyMjQyLCAxMjIyNDcsIDEyMjI1MiwgMTIyMjU3LCAwLCAwLCAwLCAwLCAwLCAxMjIyNjIsIDEyMjI2NywgMTIyMjczLCAKKyAgICAxMjIyNzksIDEyMjI4NSwgMTIyMjkwLCAxMjIyOTYsIDEyMjMwMiwgMTIyMzA4LCAxMjIzMTMsIDEyMjMxOSwgMTIyMzI1LCAKKyAgICAxMjIzMzAsIDEyMjMzNSwgMTIyMzQxLCAxMjIzNDYsIDEyMjM1MiwgMTIyMzU4LCAxMjIzNjMsIDEyMjM2OSwgMTIyMzc1LCAKKyAgICAxMjIzODAsIDEyMjM4NiwgMTIyMzkyLCAxMjIzOTgsIDEyMjQwNCwgMTIyNDEwLCAxMjI0MjEsIDEyMjQyOCwgMTIyNDM0LCAKKyAgICAxMjI0MzcsIDAsIDEyMjQ0MCwgMTIyNDQ1LCAxMjI0NTEsIDEyMjQ1NywgMTIyNDYzLCAxMjI0NjgsIDEyMjQ3NCwgCisgICAgMTIyNDgwLCAxMjI0ODYsIDEyMjQ5MSwgMTIyNDk3LCAxMjI1MDMsIDEyMjUwOCwgMTIyNTEzLCAxMjI1MTksIDEyMjUyNCwgCisgICAgMTIyNTMwLCAxMjI1MzYsIDEyMjU0MSwgMTIyNTQ3LCAxMjI1NTMsIDEyMjU1OCwgMTIyNTY0LCAxMjI1NzAsIDEyMjU3NiwgCisgICAgMTIyNTgyLCAxMjI1ODgsIDEyMjU5MSwgMTIyNTk0LCAxMjI1OTcsIDEyMjYwMCwgMTIyNjAzLCAxMjI2MDYsIDEyMjYxMiwgCisgICAgMTIyNjE5LCAxMjI2MjYsIDEyMjYzMywgMTIyNjM5LCAxMjI2NDYsIDEyMjY1MywgMTIyNjYwLCAxMjI2NjYsIDEyMjY3MywgCisgICAgMTIyNjgwLCAxMjI2ODYsIDEyMjY5MiwgMTIyNjk5LCAxMjI3MDUsIDEyMjcxMiwgMTIyNzE5LCAxMjI3MjUsIDEyMjczMiwgCisgICAgMTIyNzM5LCAxMjI3NDUsIDEyMjc1MiwgMTIyNzU5LCAxMjI3NjYsIDEyMjc3MywgMTIyNzgwLCAxMjI3ODUsIDAsIDAsIDAsIAorICAgIDAsIDEyMjc5MCwgMTIyNzk2LCAxMjI4MDMsIDEyMjgxMCwgMTIyODE3LCAxMjI4MjMsIDEyMjgzMCwgMTIyODM3LCAKKyAgICAxMjI4NDQsIDEyMjg1MCwgMTIyODU3LCAxMjI4NjQsIDEyMjg3MCwgMTIyODc2LCAxMjI4ODMsIDEyMjg4OSwgMTIyODk2LCAKKyAgICAxMjI5MDMsIDEyMjkwOSwgMTIyOTE2LCAxMjI5MjMsIDEyMjkyOSwgMTIyOTM2LCAxMjI5NDMsIDEyMjk1MCwgMTIyOTU3LCAKKyAgICAxMjI5NjQsIDEyMjk3MywgMTIyOTc3LCAxMjI5ODAsIDEyMjk4MywgMTIyOTg3LCAxMjI5OTEsIDEyMjk5NCwgMTIyOTk3LCAKKyAgICAxMjMwMDAsIDEyMzAwMywgMTIzMDA2LCAxMjMwMDksIDEyMzAxMiwgMTIzMDE1LCAxMjMwMTgsIDEyMzAyNCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MzExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUzMTUsIAotICAgIDEyNTMxOCwgMTI1MzIyLCAxMjUzMjYsIDEyNTMyOSwgMTI1MzMzLCAxMjUzMzcsIDEyNTM0MCwgMTI1MzQzLCAxMjUzNDcsIAotICAgIDEyNTM1MSwgMTI1MzU0LCAxMjUzNTcsIDEyNTM2MCwgMTI1MzYzLCAxMjUzNjgsIDEyNTM3MSwgMTI1Mzc1LCAxMjUzNzgsIAotICAgIDEyNTM4MSwgMTI1Mzg0LCAxMjUzODcsIDEyNTM5MCwgMTI1MzkzLCAxMjUzOTYsIDEyNTM5OSwgMTI1NDAyLCAxMjU0MDUsIAotICAgIDEyNTQwOCwgMTI1NDEyLCAxMjU0MTYsIDEyNTQyMCwgMTI1NDI0LCAxMjU0MjksIDEyNTQzNCwgMTI1NDQwLCAxMjU0NDYsIAotICAgIDEyNTQ1MiwgMTI1NDU3LCAxMjU0NjMsIDEyNTQ2OSwgMTI1NDc1LCAxMjU0ODAsIDEyNTQ4NiwgMTI1NDkyLCAxMjU0OTcsIAotICAgIDEyNTUwMiwgMTI1NTA3LCAxMjU1MTIsIDEyNTUxOCwgMTI1NTI0LCAxMjU1MjksIDEyNTUzNCwgMTI1NTQwLCAxMjU1NDUsIAotICAgIDEyNTU1MSwgMTI1NTU3LCAxMjU1NjMsIDEyNTU2OSwgMTI1NTc1LCAxMjU1NzksIDEyNTU4NCwgMTI1NTg4LCAxMjU1OTMsIAotICAgIDEyNTU5NywgMTI1NjAyLCAxMjU2MDcsIDEyNTYxMywgMTI1NjE5LCAxMjU2MjUsIDEyNTYzMCwgMTI1NjM2LCAxMjU2NDIsIAotICAgIDEyNTY0OCwgMTI1NjUzLCAxMjU2NTksIDEyNTY2NSwgMTI1NjcwLCAxMjU2NzUsIDEyNTY4MCwgMTI1Njg1LCAxMjU2OTEsIAotICAgIDEyNTY5NywgMTI1NzAyLCAxMjU3MDcsIDEyNTcxMywgMTI1NzE4LCAxMjU3MjQsIDEyNTczMCwgMTI1NzM2LCAxMjU3NDIsIAotICAgIDEyNTc0OCwgMTI1NzUzLCAxMjU3NTcsIDEyNTc2MiwgMTI1NzY1LCAxMjU3NjksIDEyNTc3MiwgMTI1Nzc1LCAxMjU3NzgsIAotICAgIDEyNTc4MSwgMTI1Nzg0LCAxMjU3ODcsIDEyNTc5MCwgMTI1NzkzLCAxMjU3OTYsIDEyNTc5OSwgMTI1ODAyLCAxMjU4MDUsIAotICAgIDEyNTgwOCwgMTI1ODExLCAxMjU4MTQsIDEyNTgxNywgMTI1ODIwLCAxMjU4MjMsIDEyNTgyNiwgMTI1ODI5LCAxMjU4MzIsIAotICAgIDEyNTgzNSwgMTI1ODM4LCAxMjU4NDEsIDEyNTg0NCwgMTI1ODQ3LCAxMjU4NTAsIDEyNTg1MywgMTI1ODU2LCAxMjU4NTksIAotICAgIDEyNTg2MiwgMTI1ODY1LCAxMjU4NjgsIDEyNTg3MSwgMTI1ODc0LCAxMjU4NzcsIDEyNTg4MCwgMTI1ODgzLCAxMjU4ODYsIAotICAgIDEyNTg4OSwgMTI1ODkyLCAxMjU4OTUsIDEyNTg5OCwgMTI1OTAxLCAxMjU5MDQsIDEyNTkwNywgMTI1OTEwLCAxMjU5MTMsIAotICAgIDEyNTkxNiwgMTI1OTE5LCAxMjU5MjIsIDEyNTkyNSwgMTI1OTI4LCAxMjU5MzEsIDEyNTkzNCwgMTI1OTM3LCAxMjU5NDAsIAotICAgIDEyNTk0MywgMTI1OTQ2LCAxMjU5NDksIDEyNTk1MiwgMTI1OTU1LCAxMjU5NTgsIDEyNTk2MSwgMTI1OTY0LCAxMjU5NjcsIAotICAgIDEyNTk3MCwgMTI1OTczLCAxMjU5NzYsIDEyNTk3OSwgMTI1OTgyLCAxMjU5ODUsIDEyNTk4OCwgMTI1OTkxLCAxMjU5OTQsIAotICAgIDEyNTk5NywgMTI2MDAwLCAxMjYwMDMsIDEyNjAwNiwgMTI2MDA5LCAxMjYwMTIsIDEyNjAxNSwgMTI2MDE4LCAxMjYwMjEsIAotICAgIDEyNjAyNCwgMTI2MDI3LCAxMjYwMzAsIDEyNjAzMywgMTI2MDM2LCAxMjYwMzksIDEyNjA0MiwgMTI2MDQ1LCAxMjYwNDgsIAotICAgIDEyNjA1MSwgMTI2MDU0LCAxMjYwNTcsIDEyNjA2MCwgMTI2MDYzLCAxMjYwNjYsIDEyNjA2OSwgMTI2MDcyLCAxMjYwNzUsIAotICAgIDEyNjA3OCwgMTI2MDgxLCAxMjYwODQsIDEyNjA4NywgMTI2MDkwLCAxMjYwOTMsIDEyNjA5NiwgMTI2MDk5LCAxMjYxMDIsIAotICAgIDEyNjEwNSwgMTI2MTA4LCAxMjYxMTEsIDEyNjExNCwgMTI2MTE3LCAxMjYxMjAsIDEyNjEyMywgMTI2MTI2LCAxMjYxMjksIAotICAgIDEyNjEzMiwgMTI2MTM1LCAxMjYxMzgsIDEyNjE0MSwgMTI2MTQ0LCAxMjYxNDcsIDEyNjE1MCwgMTI2MTUzLCAxMjYxNTYsIAotICAgIDEyNjE1OSwgMTI2MTYyLCAxMjYxNjUsIDEyNjE2OCwgMTI2MTcxLCAxMjYxNzQsIDEyNjE3NywgMTI2MTgwLCAxMjYxODMsIAotICAgIDEyNjE4NiwgMTI2MTg5LCAxMjYxOTIsIDEyNjE5NSwgMTI2MTk4LCAxMjYyMDEsIDEyNjIwNCwgMTI2MjA3LCAxMjYyMTAsIAotICAgIDEyNjIxMywgMTI2MjE2LCAxMjYyMTksIDEyNjIyMiwgMTI2MjI1LCAxMjYyMjgsIDEyNjIzMSwgMTI2MjM0LCAxMjYyMzcsIAotICAgIDEyNjI0MCwgMTI2MjQzLCAxMjYyNDYsIDEyNjI0OSwgMTI2MjUyLCAxMjYyNTUsIDEyNjI1OCwgMTI2MjYxLCAxMjYyNjQsIAotICAgIDEyNjI2NywgMTI2MjcwLCAxMjYyNzMsIDEyNjI3NiwgMTI2Mjc5LCAxMjYyODIsIDEyNjI4NSwgMTI2Mjg4LCAxMjYyOTEsIAotICAgIDEyNjI5NCwgMTI2Mjk3LCAxMjYzMDAsIDEyNjMwMywgMTI2MzA2LCAxMjYzMDksIDEyNjMxMiwgMTI2MzE1LCAxMjYzMTgsIAotICAgIDEyNjMyMSwgMTI2MzI0LCAxMjYzMjcsIDEyNjMzMCwgMTI2MzMzLCAxMjYzMzYsIDEyNjMzOSwgMTI2MzQyLCAxMjYzNDUsIAotICAgIDEyNjM0OCwgMTI2MzUxLCAxMjYzNTQsIDEyNjM1NywgMTI2MzYwLCAxMjYzNjMsIDEyNjM2NiwgMTI2MzY5LCAxMjYzNzIsIAotICAgIDEyNjM3NSwgMTI2Mzc4LCAxMjYzODEsIDEyNjM4NCwgMTI2Mzg3LCAxMjYzOTAsIDEyNjM5MywgMTI2Mzk2LCAxMjYzOTksIAotICAgIDEyNjQwMiwgMTI2NDA1LCAxMjY0MDgsIDEyNjQxMSwgMTI2NDE0LCAxMjY0MTcsIDEyNjQyMCwgMTI2NDIzLCAxMjY0MjYsIAotICAgIDEyNjQyOSwgMTI2NDMyLCAxMjY0MzUsIDEyNjQzOCwgMTI2NDQxLCAxMjY0NDQsIDEyNjQ0NywgMTI2NDUwLCAxMjY0NTMsIAotICAgIDEyNjQ1NiwgMTI2NDU5LCAxMjY0NjIsIDEyNjQ2NSwgMTI2NDY4LCAxMjY0NzEsIDEyNjQ3NCwgMTI2NDc3LCAxMjY0ODAsIAotICAgIDEyNjQ4MywgMTI2NDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjMwMjcsIDEyMzAzNCwgMTIzMDQyLCAxMjMwNTAsIDEyMzA1OCwgMTIzMDY1LCAxMjMwNzMsIDEyMzA4MSwgMTIzMDg5LCAKKyAgICAxMjMwOTYsIDEyMzEwNCwgMTIzMTEyLCAxMjMxMTksIDEyMzEyNiwgMTIzMTM0LCAxMjMxNDEsIDEyMzE0OSwgMTIzMTU3LCAKKyAgICAxMjMxNjQsIDEyMzE3MiwgMTIzMTgwLCAxMjMxODcsIDEyMzE5NSwgMTIzMjAzLCAxMjMyMTEsIDEyMzIxOSwgMTIzMjI3LCAKKyAgICAxMjMyMzEsIDEyMzIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMjM4LCAxMjMyNDQsIAorICAgIDEyMzI1MCwgMTIzMjU2LCAxMjMyNjAsIDEyMzI2NiwgMTIzMjcyLCAxMjMyNzgsIDEyMzI4NCwgMTIzMjkwLCAxMjMyOTYsIAorICAgIDEyMzMwMiwgMTIzMzA4LCAxMjMzMTQsIDEyMzMyMCwgMTIzMzI2LCAxMjMzMzIsIDEyMzMzOCwgMTIzMzQ0LCAxMjMzNTAsIAorICAgIDEyMzM1NiwgMTIzMzYyLCAxMjMzNjgsIDEyMzM3NCwgMTIzMzgwLCAxMjMzODYsIDEyMzM5MiwgMTIzMzk4LCAxMjM0MDQsIAorICAgIDEyMzQxMCwgMTIzNDE2LCAxMjM0MjIsIDEyMzQyOCwgMTIzNDM0LCAxMjM0NDAsIDEyMzQ0NiwgMTIzNDUyLCAxMjM0NTgsIAorICAgIDEyMzQ2NCwgMTIzNDcwLCAxMjM0NzYsIDEyMzQ4MiwgMTIzNDg4LCAwLCAwLCAwLCAwLCAwLCAxMjM0OTQsIDEyMzUwNSwgCisgICAgMTIzNTE2LCAxMjM1MjcsIDEyMzUzOCwgMTIzNTQ5LCAxMjM1NjAsIDEyMzU3MSwgMTIzNTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjM1OTMsIDEyMzU5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTIzNjAxLCAxMjM2MDMsIDEyMzYwNSwgMTIzNjA5LCAxMjM2MTQsIDEyMzYxOSwgMTIzNjIxLCAKKyAgICAxMjM2MjcsIDEyMzYzMiwgMTIzNjM0LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ2LCAxMjM2NTAsIDEyMzY1NiwgMTIzNjYyLCAKKyAgICAxMjM2NjgsIDEyMzY3MywgMTIzNjc3LCAxMjM2ODQsIDEyMzY5MSwgMTIzNjk4LCAxMjM3MDMsIDEyMzcxMCwgMTIzNzE3LCAKKyAgICAxMjM3MjQsIDEyMzcyOCwgMTIzNzM0LCAxMjM3NDMsIDEyMzc1MiwgMTIzNzU5LCAxMjM3NjQsIDEyMzc2OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNzcyLCAxMjM3NzQsIDEyMzc3NiwgMTIzNzgwLCAKKyAgICAxMjM3ODQsIDEyMzc4OCwgMCwgMTIzNzkwLCAxMjM3OTIsIDEyMzc5NiwgMTIzNzk4LCAxMjM4MDAsIDEyMzgwMiwgCisgICAgMTIzODA0LCAxMjM4MDksIDEyMzgxNCwgMTIzODE2LCAxMjM4MjIsIDEyMzgyNiwgMTIzODMwLCAxMjM4MzgsIDEyMzg0MCwgCisgICAgMTIzODQyLCAxMjM4NDQsIDEyMzg0NiwgMTIzODQ4LCAxMjM4NTAsIDEyMzg1MiwgMTIzODU0LCAxMjM4NTYsIDEyMzg1OCwgCisgICAgMTIzODYyLCAxMjM4NjYsIDEyMzg2OCwgMTIzODcwLCAxMjM4NzIsIDEyMzg3NCwgMTIzODc2LCAxMjM4ODEsIDEyMzg4NywgCisgICAgMTIzODkxLCAxMjM4OTUsIDEyMzg5OSwgMTIzOTAzLCAxMjM5MDgsIDEyMzkxMiwgMTIzOTE0LCAxMjM5MTYsIDEyMzkyMCwgCisgICAgMTIzOTI2LCAxMjM5MjgsIDEyMzkzMCwgMTIzOTMyLCAxMjM5MzYsIDEyMzk0NSwgMTIzOTUxLCAxMjM5NTUsIDEyMzk1OSwgCisgICAgMTIzOTYxLCAxMjM5NjMsIDEyMzk2NiwgMTIzOTY4LCAxMjM5NzAsIDEyMzk3MiwgMTIzOTc2LCAxMjM5NzgsIDEyMzk4MiwgCisgICAgMTIzOTg3LCAxMjM5ODksIDEyMzk5NCwgMTI0MDAwLCAxMjQwMDcsIDEyNDAxMSwgMTI0MDE1LCAxMjQwMTksIDEyNDAyMywgCisgICAgMTI0MDI5LCAwLCAwLCAwLCAxMjQwMzMsIDEyNDAzNSwgMTI0MDM5LCAxMjQwNDMsIDEyNDA0NSwgMTI0MDQ5LCAxMjQwNTMsIAorICAgIDEyNDA1NSwgMTI0MDU5LCAxMjQwNjEsIDEyNDA2NSwgMTI0MDY5LCAxMjQwNzMsIDEyNDA3NywgMTI0MDgxLCAxMjQwODUsIAorICAgIDEyNDA4OSwgMTI0MDkzLCAxMjQwOTksIDEyNDEwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI0MTA3LCAxMjQxMTEsIDEyNDExNSwgMTI0MTE5LCAxMjQxMjYsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzQsIDEyNDEzNiwgCisgICAgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUwLCAxMjQxNTQsIDEyNDE1OCwgMTI0MTYyLCAxMjQxNjYsIDEyNDE3MCwgCisgICAgMTI0MTcyLCAxMjQxNzYsIDEyNDE3OCwgMTI0MTg0LCAxMjQxODcsIDEyNDE5MiwgMTI0MTk0LCAxMjQxOTYsIDEyNDE5OSwgCisgICAgMTI0MjAxLCAxMjQyMDMsIDEyNDIwNiwgMTI0MjEzLCAxMjQyMjAsIDEyNDIyNywgMTI0MjMyLCAxMjQyMzYsIDEyNDIzOCwgCisgICAgMTI0MjQwLCAwLCAxMjQyNDIsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MjU4LCAxMjQyNjIsIDEyNDI2NywgMTI0MjcxLCAKKyAgICAxMjQyNzcsIDEyNDI4MywgMTI0Mjg1LCAxMjQyODcsIDEyNDI5MywgMTI0Mjk1LCAxMjQyOTksIDEyNDMwMywgMTI0MzA1LCAKKyAgICAxMjQzMDksIDEyNDMxMSwgMTI0MzE1LCAxMjQzMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNDMyMywgMTI0MzI1LCAxMjQzMjcsIDEyNDMyOSwgMTI0MzMzLCAxMjQzMzUsIDEyNDMzNywgMTI0MzM5LCAKKyAgICAxMjQzNDEsIDEyNDM0MywgMTI0MzQ1LCAxMjQzNDcsIDEyNDM0OSwgMTI0MzUxLCAxMjQzNTMsIDEyNDM1NSwgMTI0MzU3LCAKKyAgICAxMjQzNTksIDEyNDM2MSwgMTI0MzYzLCAxMjQzNjUsIDEyNDM2NywgMTI0MzY5LCAxMjQzNzEsIDEyNDM3MywgMTI0Mzc1LCAKKyAgICAxMjQzNzcsIDEyNDM4MSwgMTI0MzgzLCAxMjQzODUsIDEyNDM4NywgMTI0MzkxLCAxMjQzOTMsIDEyNDM5NywgMTI0Mzk5LCAKKyAgICAxMjQ0MDEsIDEyNDQwNSwgMTI0NDA5LCAxMjQ0MTUsIDEyNDQxNywgMTI0NDE5LCAxMjQ0MjEsIDEyNDQyMywgMTI0NDI3LCAKKyAgICAxMjQ0MzEsIDEyNDQzMywgMTI0NDM3LCAxMjQ0NDEsIDEyNDQ0NSwgMTI0NDQ5LCAxMjQ0NTMsIDEyNDQ1NywgMTI0NDYxLCAKKyAgICAxMjQ0NjUsIDEyNDQ2OSwgMTI0NDczLCAxMjQ0NzcsIDEyNDQ4MSwgMTI0NDg1LCAxMjQ0ODksIDEyNDQ5MywgMTI0NDk3LCAKKyAgICAxMjQ1MDEsIDAsIDEyNDUwNSwgMCwgMTI0NTA3LCAxMjQ1MDksIDEyNDUxMSwgMTI0NTEzLCAxMjQ1MTUsIDEyNDUyMywgCisgICAgMTI0NTMxLCAxMjQ1MzksIDEyNDU0NywgMTI0NTUyLCAxMjQ1NTcsIDEyNDU2MiwgMTI0NTY2LCAxMjQ1NzAsIDEyNDU3NSwgCisgICAgMTI0NTc5LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg3LCAxMjQ1ODksIDEyNDU5MSwgMTI0NTkzLCAxMjQ1OTUsIDEyNDU5NywgCisgICAgMTI0NTk5LCAxMjQ2MDMsIDEyNDYwNSwgMTI0NjA3LCAxMjQ2MDksIDEyNDYxMywgMTI0NjE3LCAxMjQ2MjEsIDEyNDYyNSwgCisgICAgMTI0NjI5LCAxMjQ2MzEsIDEyNDYzNywgMTI0NjQzLCAxMjQ2NDUsIDEyNDY0NywgMTI0NjQ5LCAxMjQ2NTEsIDEyNDY1MywgCisgICAgMTI0NjYyLCAxMjQ2NjksIDEyNDY3NiwgMTI0NjgwLCAxMjQ2ODcsIDEyNDY5MiwgMTI0Njk5LCAxMjQ3MDgsIDEyNDcxMywgCisgICAgMTI0NzE3LCAxMjQ3MjEsIDEyNDcyMywgMTI0NzI3LCAxMjQ3MjksIDEyNDczMywgMTI0NzM3LCAxMjQ3MzksIDEyNDc0MywgCisgICAgMTI0NzQ3LCAxMjQ3NTEsIDEyNDc1MywgMTI0NzU1LCAxMjQ3NjEsIDEyNDc2MywgMTI0NzY1LCAxMjQ3NjcsIDEyNDc3MSwgCisgICAgMTI0Nzc1LCAxMjQ3NzcsIDEyNDc4MSwgMTI0NzgzLCAxMjQ3ODUsIDEyNDc4OCwgMTI0NzkyLCAxMjQ3OTQsIDEyNDc5OCwgCisgICAgMTI0ODAwLCAxMjQ4MDIsIDEyNDgwNywgMTI0ODA5LCAxMjQ4MTMsIDEyNDgxNywgMTI0ODIwLCAxMjQ4MjQsIDEyNDgyOCwgCisgICAgMTI0ODMyLCAxMjQ4MzYsIDEyNDg0MCwgMTI0ODQ0LCAxMjQ4NDgsIDEyNDg1MywgMTI0ODU3LCAxMjQ4NjEsIDEyNDg3MCwgCisgICAgMTI0ODc1LCAxMjQ4NzgsIDEyNDg4MCwgMTI0ODgzLCAxMjQ4ODYsIDEyNDg5MSwgMTI0ODkzLCAxMjQ4OTYsIDEyNDkwMSwgCisgICAgMTI0OTA1LCAxMjQ5MDgsIDEyNDkxMiwgMTI0OTE2LCAxMjQ5MTksIDEyNDkyNCwgMTI0OTI4LCAxMjQ5MzIsIDEyNDkzNiwgCisgICAgMTI0OTQwLCAxMjQ5NDYsIDEyNDk1MiwgMTI0OTU4LCAxMjQ5NjQsIDEyNDk2OSwgMTI0OTgwLCAxMjQ5ODIsIDEyNDk4NiwgCisgICAgMTI0OTg4LCAxMjQ5OTAsIDEyNDk5NCwgMTI0OTk4LCAxMjUwMDAsIDEyNTAwNCwgMTI1MDA5LCAxMjUwMTQsIDEyNTAyMCwgCisgICAgMTI1MDIyLCAxMjUwMjYsIDEyNTAzMCwgMTI1MDM3LCAxMjUwNDQsIDEyNTA0OCwgMTI1MDUwLCAxMjUwNTIsIDEyNTA1NiwgCisgICAgMTI1MDU4LCAxMjUwNjIsIDEyNTA2NiwgMTI1MDcwLCAxMjUwNzIsIDEyNTA3NCwgMTI1MDgxLCAxMjUwODUsIDEyNTA4OCwgCisgICAgMTI1MDkyLCAxMjUwOTYsIDEyNTEwMCwgMTI1MTAyLCAxMjUxMDYsIDEyNTEwOCwgMTI1MTEwLCAxMjUxMTQsIDEyNTExNiwgCisgICAgMTI1MTIwLCAxMjUxMjQsIDEyNTEzMCwgMTI1MTM0LCAxMjUxMzgsIDEyNTE0MiwgMTI1MTQ0LCAxMjUxNDcsIDEyNTE1MSwgCisgICAgMTI1MTU4LCAxMjUxNjcsIDEyNTE3NiwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5NCwgMTI1MTk4LCAxMjUyMDAsIDEyNTIwNCwgCisgICAgMTI1MjE1LCAxMjUyMTksIDEyNTIyNSwgMTI1MjMxLCAxMjUyMzYsIDAsIDEyNTIzOCwgMTI1MjQyLCAxMjUyNDQsIAorICAgIDEyNTI0NiwgMCwgMCwgMCwgMTI1MjQ4LCAxMjUyNTMsIDEyNTI2MywgMTI1Mjc4LCAxMjUyOTAsIDEyNTMwMiwgMTI1MzA2LCAKKyAgICAxMjUzMTAsIDEyNTMxNiwgMTI1MzE4LCAxMjUzMjYsIDEyNTMzNCwgMTI1MzM2LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAKKyAgICAxMjUzNTksIDEyNTM2NiwgMTI1MzY4LCAxMjUzNzAsIDEyNTM3MywgMTI1Mzc1LCAxMjUzODEsIDEyNTM4MywgMTI1Mzg2LCAKKyAgICAxMjUzOTAsIDEyNTM5NiwgMTI1NDAyLCAxMjU0MTMsIDEyNTQxOSwgMTI1NDI2LCAxMjU0MzQsIDEyNTQzOCwgMTI1NDQ2LCAKKyAgICAxMjU0NTQsIDEyNTQ2MCwgMTI1NDY2LCAxMjU0NzMsIDEyNTQ3NSwgMTI1NDc5LCAxMjU0ODEsIDEyNTQ4MywgMTI1NDg4LCAKKyAgICAxMjU0OTAsIDEyNTQ5MiwgMTI1NDk0LCAxMjU0OTYsIDEyNTUwMCwgMTI1NTExLCAxMjU1MTcsIDEyNTUyMSwgMTI1NTI1LCAKKyAgICAxMjU1MjksIDEyNTUzNSwgMTI1NTQxLCAxMjU1NDcsIDEyNTU1MywgMTI1NTU4LCAxMjU1NjMsIDEyNTU2OSwgMTI1NTc1LCAKKyAgICAxMjU1ODIsIDAsIDAsIDEyNTU4OSwgMTI1NTk0LCAxMjU2MDIsIDEyNTYwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTI1NjE1LCAxMjU2MjIsIDEyNTYyOSwgMTI1NjM2LCAxMjU2NDQsIDEyNTY1MiwgMTI1NjYwLCAxMjU2NjgsIAorICAgIDEyNTY3NiwgMTI1Njg0LCAxMjU2OTIsIDEyNTcwMCwgMTI1NzA4LCAxMjU3MTQsIDEyNTcyMCwgMTI1NzI2LCAxMjU3MzIsIAorICAgIDEyNTczOCwgMTI1NzQ0LCAxMjU3NTAsIDEyNTc1NiwgMTI1NzYyLCAxMjU3NjgsIDEyNTc3NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1NzgwLCAKKyAgICAxMjU3ODQsIDEyNTc4OCwgMTI1NzkzLCAxMjU3OTgsIDEyNTgwMCwgMTI1ODA0LCAxMjU4MTMsIDEyNTgyMSwgMTI1ODI5LCAKKyAgICAxMjU4NDIsIDEyNTg1NSwgMTI1ODY4LCAxMjU4NzUsIDEyNTg4MiwgMTI1ODg2LCAxMjU4OTUsIDEyNTkwMywgMTI1OTA3LCAKKyAgICAxMjU5MTYsIDEyNTkyMywgMTI1OTI3LCAxMjU5MzEsIDEyNTkzNSwgMTI1OTM5LCAxMjU5NDYsIDEyNTk1MCwgMTI1OTU0LCAKKyAgICAxMjU5NTgsIDEyNTk2MiwgMTI1OTY5LCAxMjU5NzgsIDEyNTk4NywgMTI1OTk0LCAxMjYwMDYsIDEyNjAxOCwgMTI2MDIyLCAKKyAgICAxMjYwMjYsIDEyNjAzMCwgMTI2MDM0LCAxMjYwMzgsIDEyNjA0MiwgMTI2MDUwLCAxMjYwNTgsIDEyNjA2NiwgMTI2MDcwLCAKKyAgICAxMjYwNzQsIDEyNjA3OCwgMTI2MDgyLCAxMjYwODYsIDEyNjA5MCwgMTI2MDk2LCAxMjYxMDIsIDEyNjEwNiwgMTI2MTE3LCAKKyAgICAxMjYxMjUsIDEyNjEyOSwgMTI2MTMzLCAxMjYxMzcsIDEyNjE0MSwgMTI2MTQ3LCAxMjYxNTQsIDEyNjE2NSwgMTI2MTc1LCAKKyAgICAxMjYxODUsIDEyNjE5NiwgMTI2MjA1LCAxMjYyMTYsIDEyNjIyMiwgMTI2MjI4LCAwLCAwLCAwLCAwLCAxMjYyMzQsIAorICAgIDEyNjI0MywgMTI2MjUwLCAxMjYyNTYsIDEyNjI2MCwgMTI2MjY0LCAxMjYyNjgsIDEyNjI3NywgMTI2Mjg5LCAxMjYyOTMsIAorICAgIDEyNjMwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTI2MzA3LCAxMjYzMDksIDEyNjMxMSwgMTI2MzE1LCAxMjYzMTksIDEyNjMyMywgMTI2MzMyLCAxMjYzMzQsIAorICAgIDEyNjMzNiwgMTI2MzM5LCAxMjYzNDEsIDEyNjM0MywgMTI2MzQ3LCAxMjYzNDksIDEyNjM1MywgMTI2MzU1LCAxMjYzNTksIAorICAgIDEyNjM2MSwgMTI2MzYzLCAxMjYzNjcsIDEyNjM3MSwgMTI2Mzc3LCAxMjYzNzksIDEyNjM4MywgMTI2Mzg1LCAxMjYzODksIAorICAgIDEyNjM5MywgMTI2Mzk3LCAxMjY0MDEsIDEyNjQwMywgMTI2NDA1LCAxMjY0MDksIDEyNjQxMywgMTI2NDE3LCAxMjY0MjEsIAorICAgIDEyNjQyMywgMTI2NDI1LCAxMjY0MjcsIDEyNjQzMiwgMTI2NDM3LCAxMjY0NDAsIDEyNjQ0OCwgMTI2NDU2LCAxMjY0NTgsIAorICAgIDEyNjQ2MywgMTI2NDY2LCAxMjY0NzEsIDEyNjQ4MiwgMTI2NDg5LCAxMjY0OTQsIDEyNjQ5OSwgMTI2NTAxLCAxMjY1MDUsIAorICAgIDEyNjUwNywgMTI2NTExLCAxMjY1MTMsIDEyNjUxNywgMTI2NTIxLCAxMjY1MjQsIDEyNjUyNywgMTI2NTI5LCAxMjY1MzIsIAorICAgIDEyNjUzNCwgMTI2NTM4LCAxMjY1NDAsIDEyNjU0MiwgMTI2NTQ0LCAxMjY1NDgsIDEyNjU1MCwgMTI2NTU0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjY1NTcsIDEyNjU2MiwgMTI2NTY3LCAxMjY1NzIsIDEyNjU3NywgMTI2NTgyLCAKKyAgICAxMjY1ODcsIDEyNjU5NCwgMTI2NjAxLCAxMjY2MDgsIDEyNjYxNSwgMTI2NjIwLCAxMjY2MjUsIDEyNjYzMCwgMTI2NjM1LCAKKyAgICAxMjY2NDIsIDEyNjY0OCwgMTI2NjU1LCAxMjY2NjIsIDEyNjY2OSwgMTI2Njc0LCAxMjY2NzksIDEyNjY4NCwgMTI2Njg5LCAKKyAgICAxMjY2OTQsIDEyNjcwMSwgMTI2NzA4LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzI1LCAxMjY3MzIsIDEyNjc0MCwgMTI2NzQ4LCAKKyAgICAxMjY3NTUsIDEyNjc2MiwgMTI2NzcwLCAxMjY3NzgsIDEyNjc4NiwgMTI2NzkzLCAxMjY4MDMsIDEyNjgxNCwgMTI2ODE5LCAKKyAgICAxMjY4MjYsIDEyNjgzMywgMTI2ODQwLCAxMjY4NDgsIDEyNjg1NiwgMTI2ODY3LCAxMjY4NzUsIDEyNjg4MywgMTI2ODkxLCAKKyAgICAxMjY4OTYsIDEyNjkwMSwgMTI2OTA2LCAxMjY5MTEsIDEyNjkxNiwgMTI2OTIxLCAxMjY5MjYsIDEyNjkzMSwgMTI2OTM2LCAKKyAgICAxMjY5NDEsIDEyNjk0NiwgMTI2OTUxLCAxMjY5NTgsIDEyNjk2MywgMTI2OTY4LCAxMjY5NzUsIDEyNjk4MCwgMTI2OTg1LCAKKyAgICAxMjY5OTAsIDEyNjk5NSwgMTI3MDAwLCAxMjcwMDUsIDEyNzAxMCwgMTI3MDE1LCAxMjcwMjAsIDEyNzAyNSwgMTI3MDMwLCAKKyAgICAxMjcwMzUsIDEyNzA0MiwgMTI3MDUwLCAxMjcwNTUsIDEyNzA2MCwgMTI3MDY3LCAxMjcwNzIsIDEyNzA3NywgMTI3MDgyLCAKKyAgICAxMjcwODksIDEyNzA5NCwgMTI3MTAxLCAxMjcxMDYsIDEyNzExMywgMTI3MTE4LCAxMjcxMjcsIDEyNzEzNiwgMTI3MTQxLCAKKyAgICAxMjcxNDYsIDEyNzE1MSwgMTI3MTU2LCAxMjcxNjEsIDEyNzE2NiwgMTI3MTcxLCAxMjcxNzYsIDEyNzE4MSwgMTI3MTg2LCAKKyAgICAxMjcxOTEsIDEyNzE5NiwgMTI3MjAxLCAxMjcyMDksIDEyNzIxNywgMTI3MjIyLCAxMjcyMjcsIDEyNzIzMiwgMTI3MjM3LCAKKyAgICAxMjcyNDIsIDEyNzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjU0LCAxMjcyNTgsIAorICAgIDEyNzI2MiwgMTI3MjY2LCAxMjcyNzAsIDEyNzI3NCwgMTI3Mjc4LCAxMjcyODIsIDEyNzI4NiwgMTI3MjkwLCAxMjcyOTQsIAorICAgIDEyNzI5OCwgMTI3MzAyLCAxMjczMDYsIDEyNzMxMCwgMTI3MzE0LCAxMjczMTgsIDEyNzMyMiwgMTI3MzI2LCAxMjczMzAsIAorICAgIDEyNzMzNCwgMTI3MzM4LCAxMjczNDIsIDEyNzM0NiwgMTI3MzUwLCAxMjczNTQsIDEyNzM1OCwgMTI3MzYyLCAxMjczNjYsIAorICAgIDEyNzM3MCwgMTI3Mzc0LCAxMjczNzgsIDEyNzM4MiwgMTI3Mzg2LCAxMjczOTAsIDEyNzM5NCwgMTI3Mzk4LCAxMjc0MDIsIAorICAgIDEyNzQwNiwgMTI3NDEwLCAxMjc0MTQsIDEyNzQxOCwgMTI3NDIyLCAxMjc0MjYsIDEyNzQzMCwgMTI3NDM0LCAxMjc0MzgsIAorICAgIDEyNzQ0MiwgMTI3NDQ2LCAxMjc0NTAsIDEyNzQ1NCwgMTI3NDU4LCAxMjc0NjIsIDEyNzQ2NiwgMTI3NDcwLCAxMjc0NzQsIAorICAgIDEyNzQ3OCwgMTI3NDgyLCAxMjc0ODYsIDEyNzQ5MCwgMTI3NDk0LCAxMjc0OTgsIDEyNzUwMiwgMTI3NTA2LCAxMjc1MTAsIAorICAgIDEyNzUxNCwgMTI3NTE4LCAxMjc1MjIsIDEyNzUyNiwgMTI3NTMwLCAxMjc1MzQsIDEyNzUzOCwgMTI3NTQyLCAxMjc1NDYsIAorICAgIDEyNzU1MCwgMTI3NTU0LCAxMjc1NTgsIDEyNzU2MiwgMTI3NTY2LCAxMjc1NzAsIDEyNzU3NCwgMTI3NTc4LCAxMjc1ODIsIAorICAgIDEyNzU4NiwgMTI3NTkwLCAxMjc1OTQsIDEyNzU5OCwgMTI3NjAyLCAxMjc2MDYsIDEyNzYxMCwgMTI3NjE0LCAxMjc2MTgsIAorICAgIDEyNzYyMiwgMTI3NjI2LCAxMjc2MzAsIDEyNzYzNCwgMTI3NjM4LCAxMjc2NDIsIDEyNzY0NiwgMTI3NjUwLCAxMjc2NTQsIAorICAgIDEyNzY1OCwgMTI3NjYyLCAxMjc2NjYsIDEyNzY3MCwgMTI3Njc0LCAxMjc2NzgsIDEyNzY4MiwgMTI3Njg2LCAxMjc2OTAsIAorICAgIDEyNzY5NCwgMTI3Njk4LCAxMjc3MDIsIDEyNzcwNiwgMTI3NzEwLCAxMjc3MTQsIDEyNzcxOCwgMTI3NzIyLCAxMjc3MjYsIAorICAgIDEyNzczMCwgMTI3NzM0LCAxMjc3MzgsIDEyNzc0MiwgMTI3NzQ2LCAxMjc3NTAsIDEyNzc1NCwgMTI3NzU4LCAxMjc3NjIsIAorICAgIDEyNzc2NiwgMTI3NzcwLCAxMjc3NzQsIDEyNzc3OCwgMTI3NzgyLCAxMjc3ODYsIDEyNzc5MCwgMTI3Nzk0LCAxMjc3OTgsIAorICAgIDEyNzgwMiwgMTI3ODA2LCAxMjc4MTAsIDEyNzgxNCwgMTI3ODE4LCAxMjc4MjIsIDEyNzgyNiwgMTI3ODMwLCAxMjc4MzQsIAorICAgIDEyNzgzOCwgMTI3ODQyLCAxMjc4NDYsIDEyNzg1MCwgMTI3ODU0LCAxMjc4NTgsIDEyNzg2MiwgMTI3ODY2LCAxMjc4NzAsIAorICAgIDEyNzg3NCwgMTI3ODc4LCAxMjc4ODIsIDEyNzg4NiwgMTI3ODkwLCAxMjc4OTQsIDEyNzg5OCwgMTI3OTAyLCAxMjc5MDYsIAorICAgIDEyNzkxMCwgMTI3OTE0LCAxMjc5MTgsIDEyNzkyMiwgMTI3OTI2LCAxMjc5MzAsIDEyNzkzNCwgMTI3OTM4LCAxMjc5NDIsIAorICAgIDEyNzk0NiwgMTI3OTUwLCAxMjc5NTQsIDEyNzk1OCwgMTI3OTYyLCAxMjc5NjYsIDEyNzk3MCwgMTI3OTc0LCAxMjc5NzgsIAorICAgIDEyNzk4MiwgMTI3OTg2LCAxMjc5OTAsIDEyNzk5NCwgMTI3OTk4LCAxMjgwMDIsIDEyODAwNiwgMTI4MDEwLCAxMjgwMTQsIAorICAgIDEyODAxOCwgMTI4MDIyLCAxMjgwMjYsIDEyODAzMCwgMTI4MDM0LCAxMjgwMzgsIDEyODA0MiwgMTI4MDQ2LCAxMjgwNTAsIAorICAgIDEyODA1NCwgMTI4MDU4LCAxMjgwNjIsIDEyODA2NiwgMTI4MDcwLCAxMjgwNzQsIDEyODA3OCwgMTI4MDgyLCAxMjgwODYsIAorICAgIDEyODA5MCwgMTI4MDk0LCAxMjgwOTgsIDEyODEwMiwgMTI4MTA2LCAxMjgxMTAsIDEyODExNCwgMTI4MTE4LCAxMjgxMjIsIAorICAgIDEyODEyNiwgMTI4MTMwLCAxMjgxMzQsIDEyODEzOCwgMTI4MTQyLCAxMjgxNDYsIDEyODE1MCwgMTI4MTU0LCAxMjgxNTgsIAorICAgIDEyODE2MiwgMTI4MTY2LCAxMjgxNzAsIDEyODE3NCwgMTI4MTc4LCAxMjgxODIsIDEyODE4NiwgMTI4MTkwLCAxMjgxOTQsIAorICAgIDEyODE5OCwgMTI4MjAyLCAxMjgyMDYsIDEyODIxMCwgMTI4MjE0LCAxMjgyMTgsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzAsIAorICAgIDEyODIzNCwgMTI4MjM4LCAxMjgyNDIsIDEyODI0NiwgMTI4MjUwLCAxMjgyNTQsIDEyODI1OCwgMTI4MjYyLCAxMjgyNjYsIAorICAgIDEyODI3MCwgMTI4Mjc0LCAxMjgyNzgsIDEyODI4MiwgMTI4Mjg2LCAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIAorICAgIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOCwgMTI4MzIyLCAxMjgzMjYsIDEyODMzMCwgMTI4MzM0LCAxMjgzMzgsIAorICAgIDEyODM0MiwgMTI4MzQ2LCAxMjgzNTAsIDEyODM1NCwgMTI4MzU4LCAxMjgzNjIsIDEyODM2NiwgMTI4MzcwLCAxMjgzNzQsIAorICAgIDEyODM3OCwgMTI4MzgyLCAxMjgzODYsIDEyODM5MCwgMTI4Mzk0LCAxMjgzOTgsIDEyODQwMiwgMTI4NDA2LCAxMjg0MTAsIAorICAgIDEyODQxNCwgMTI4NDE4LCAxMjg0MjIsIDEyODQyNiwgMTI4NDMwLCAxMjg0MzQsIDEyODQzOCwgMTI4NDQyLCAxMjg0NDYsIAorICAgIDEyODQ1MCwgMTI4NDU0LCAxMjg0NTgsIDEyODQ2MiwgMTI4NDY2LCAxMjg0NzAsIDEyODQ3NCwgMTI4NDc4LCAxMjg0ODIsIAorICAgIDEyODQ4NiwgMTI4NDkwLCAxMjg0OTQsIDEyODQ5OCwgMTI4NTAyLCAxMjg1MDYsIDEyODUxMCwgMTI4NTE0LCAxMjg1MTgsIAorICAgIDEyODUyMiwgMTI4NTI2LCAxMjg1MzAsIDEyODUzNCwgMTI4NTM4LCAxMjg1NDIsIDEyODU0NiwgMTI4NTUwLCAxMjg1NTQsIAorICAgIDEyODU1OCwgMTI4NTYyLCAxMjg1NjYsIDEyODU3MCwgMTI4NTc0LCAxMjg1NzgsIDEyODU4MiwgMTI4NTg2LCAxMjg1OTAsIAorICAgIDEyODU5NCwgMTI4NTk4LCAxMjg2MDIsIDEyODYwNiwgMTI4NjEwLCAxMjg2MTQsIDEyODYxOCwgMTI4NjIyLCAxMjg2MjYsIAorICAgIDEyODYzMCwgMTI4NjM0LCAxMjg2MzgsIDEyODY0MiwgMTI4NjQ2LCAxMjg2NTAsIDEyODY1NCwgMTI4NjU4LCAxMjg2NjIsIAorICAgIDEyODY2NiwgMTI4NjcwLCAxMjg2NzQsIDEyODY3OCwgMTI4NjgyLCAxMjg2ODYsIDEyODY5MCwgMTI4Njk0LCAxMjg2OTgsIAorICAgIDEyODcwMiwgMTI4NzA2LCAxMjg3MTAsIDEyODcxNCwgMTI4NzE4LCAxMjg3MjIsIDEyODcyNiwgMTI4NzMwLCAxMjg3MzQsIAorICAgIDEyODczOCwgMTI4NzQyLCAxMjg3NDYsIDEyODc1MCwgMTI4NzU0LCAxMjg3NTgsIDEyODc2MiwgMTI4NzY2LCAxMjg3NzAsIAorICAgIDEyODc3NCwgMTI4Nzc4LCAxMjg3ODIsIDEyODc4NiwgMTI4NzkwLCAxMjg3OTQsIDEyODc5OCwgMTI4ODAyLCAxMjg4MDYsIAorICAgIDEyODgxMCwgMTI4ODE0LCAxMjg4MTgsIDEyODgyMiwgMTI4ODI2LCAxMjg4MzAsIDEyODgzNCwgMTI4ODM4LCAxMjg4NDIsIAorICAgIDEyODg0NiwgMTI4ODUwLCAxMjg4NTQsIDEyODg1OCwgMTI4ODYyLCAxMjg4NjYsIDEyODg3MCwgMTI4ODc0LCAxMjg4NzgsIAorICAgIDEyODg4MiwgMTI4ODg2LCAxMjg4OTAsIDEyODg5NCwgMTI4ODk4LCAxMjg5MDIsIDEyODkwNiwgMTI4OTEwLCAxMjg5MTQsIAorICAgIDEyODkxOCwgMTI4OTIyLCAxMjg5MjYsIDEyODkzMCwgMTI4OTM0LCAxMjg5MzgsIDEyODk0MiwgMTI4OTQ2LCAxMjg5NTAsIAorICAgIDEyODk1NCwgMTI4OTU4LCAxMjg5NjIsIDEyODk2NiwgMTI4OTcwLCAxMjg5NzQsIDEyODk3OCwgMTI4OTgyLCAxMjg5ODYsIAorICAgIDEyODk5MCwgMTI4OTk0LCAxMjg5OTgsIDEyOTAwMiwgMTI5MDA2LCAxMjkwMTAsIDEyOTAxNCwgMTI5MDE4LCAxMjkwMjIsIAorICAgIDEyOTAyNiwgMTI5MDMwLCAxMjkwMzQsIDEyOTAzOCwgMTI5MDQyLCAxMjkwNDYsIDEyOTA1MCwgMTI5MDU0LCAxMjkwNTgsIAorICAgIDEyOTA2MiwgMTI5MDY2LCAxMjkwNzAsIDEyOTA3NCwgMTI5MDc4LCAxMjkwODIsIDEyOTA4NiwgMTI5MDkwLCAxMjkwOTQsIAorICAgIDEyOTA5OCwgMTI5MTAyLCAxMjkxMDYsIDEyOTExMCwgMTI5MTE0LCAxMjkxMTgsIDEyOTEyMiwgMTI5MTI2LCAxMjkxMzAsIAorICAgIDEyOTEzNCwgMTI5MTM4LCAxMjkxNDIsIDEyOTE0NiwgMTI5MTUwLCAxMjkxNTQsIDEyOTE1OCwgMTI5MTYyLCAxMjkxNjYsIAorICAgIDEyOTE3MCwgMTI5MTc0LCAxMjkxNzgsIDEyOTE4MiwgMTI5MTg2LCAxMjkxOTAsIDEyOTE5NCwgMTI5MTk4LCAxMjkyMDIsIAorICAgIDEyOTIwNiwgMTI5MjEwLCAxMjkyMTQsIDEyOTIxOCwgMTI5MjIyLCAxMjkyMjYsIDEyOTIzMCwgMTI5MjM0LCAxMjkyMzgsIAorICAgIDEyOTI0MiwgMTI5MjQ2LCAxMjkyNTAsIDEyOTI1NCwgMTI5MjU4LCAxMjkyNjIsIDEyOTI2NiwgMTI5MjcwLCAxMjkyNzQsIAorICAgIDEyOTI3OCwgMTI5MjgyLCAxMjkyODYsIDEyOTI5MCwgMTI5Mjk0LCAxMjkyOTgsIDEyOTMwMiwgMTI5MzA2LCAxMjkzMTAsIAorICAgIDEyOTMxNCwgMTI5MzE4LCAxMjkzMjIsIDEyOTMyNiwgMTI5MzMwLCAxMjkzMzQsIDEyOTMzOCwgMTI5MzQyLCAxMjkzNDYsIAorICAgIDEyOTM1MCwgMTI5MzU0LCAxMjkzNTgsIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzAsIDEyOTM3NCwgMTI5Mzc4LCAxMjkzODIsIAorICAgIDEyOTM4NiwgMTI5MzkwLCAxMjkzOTQsIDEyOTM5OCwgMTI5NDAyLCAxMjk0MDYsIDEyOTQxMCwgMTI5NDE0LCAxMjk0MTgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyOTQyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NDI2LCAxMjk0MjksIDEyOTQzMywgMTI5NDM3LCAxMjk0NDAsIAorICAgIDEyOTQ0NCwgMTI5NDQ4LCAxMjk0NTEsIDEyOTQ1NCwgMTI5NDU4LCAxMjk0NjIsIDEyOTQ2NSwgMTI5NDY4LCAxMjk0NzEsIAorICAgIDEyOTQ3NCwgMTI5NDc5LCAxMjk0ODIsIDEyOTQ4NiwgMTI5NDg5LCAxMjk0OTIsIDEyOTQ5NSwgMTI5NDk4LCAxMjk1MDEsIAorICAgIDEyOTUwNCwgMTI5NTA3LCAxMjk1MTAsIDEyOTUxMywgMTI5NTE2LCAxMjk1MTksIDEyOTUyMywgMTI5NTI3LCAxMjk1MzEsIAorICAgIDEyOTUzNSwgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MSwgMTI5NTU3LCAxMjk1NjMsIDEyOTU2OCwgMTI5NTc0LCAxMjk1ODAsIAorICAgIDEyOTU4NiwgMTI5NTkxLCAxMjk1OTcsIDEyOTYwMywgMTI5NjA4LCAxMjk2MTMsIDEyOTYxOSwgMTI5NjI0LCAxMjk2MzAsIAorICAgIDEyOTYzNiwgMTI5NjQxLCAxMjk2NDcsIDEyOTY1MywgMTI5NjU4LCAxMjk2NjQsIDEyOTY3MCwgMTI5Njc2LCAxMjk2ODIsIAorICAgIDEyOTY4OCwgMTI5NjkyLCAxMjk2OTcsIDEyOTcwMSwgMTI5NzA2LCAxMjk3MTAsIDEyOTcxNSwgMTI5NzIwLCAxMjk3MjYsIAorICAgIDEyOTczMiwgMTI5NzM4LCAxMjk3NDMsIDEyOTc0OSwgMTI5NzU1LCAxMjk3NjEsIDEyOTc2NiwgMTI5NzcyLCAxMjk3NzgsIAorICAgIDEyOTc4MywgMTI5Nzg4LCAxMjk3OTQsIDEyOTc5OSwgMTI5ODA1LCAxMjk4MTEsIDEyOTgxNiwgMTI5ODIyLCAxMjk4MjgsIAorICAgIDEyOTgzMywgMTI5ODM5LCAxMjk4NDUsIDEyOTg1MSwgMTI5ODU3LCAxMjk4NjMsIDEyOTg2OCwgMTI5ODcyLCAxMjk4NzcsIAorICAgIDEyOTg3OSwgMTI5ODgzLCAxMjk4ODYsIDEyOTg4OSwgMTI5ODkyLCAxMjk4OTUsIDEyOTg5OCwgMTI5OTAxLCAxMjk5MDQsIAorICAgIDEyOTkwNywgMTI5OTEwLCAxMjk5MTMsIDEyOTkxNiwgMTI5OTE5LCAxMjk5MjIsIDEyOTkyNSwgMTI5OTI4LCAxMjk5MzEsIAorICAgIDEyOTkzNCwgMTI5OTM3LCAxMjk5NDAsIDEyOTk0MywgMTI5OTQ2LCAxMjk5NDksIDEyOTk1MiwgMTI5OTU1LCAxMjk5NTgsIAorICAgIDEyOTk2MSwgMTI5OTY0LCAxMjk5NjcsIDEyOTk3MCwgMTI5OTczLCAxMjk5NzYsIDEyOTk3OSwgMTI5OTgyLCAxMjk5ODUsIAorICAgIDEyOTk4OCwgMTI5OTkxLCAxMjk5OTQsIDEyOTk5NywgMTMwMDAwLCAxMzAwMDMsIDEzMDAwNiwgMTMwMDA5LCAxMzAwMTIsIAorICAgIDEzMDAxNSwgMTMwMDE4LCAxMzAwMjEsIDEzMDAyNCwgMTMwMDI3LCAxMzAwMzAsIDEzMDAzMywgMTMwMDM2LCAxMzAwMzksIAorICAgIDEzMDA0MiwgMTMwMDQ1LCAxMzAwNDgsIDEzMDA1MSwgMTMwMDU0LCAxMzAwNTcsIDEzMDA2MCwgMTMwMDYzLCAxMzAwNjYsIAorICAgIDEzMDA2OSwgMTMwMDcyLCAxMzAwNzUsIDEzMDA3OCwgMTMwMDgxLCAxMzAwODQsIDEzMDA4NywgMTMwMDkwLCAxMzAwOTMsIAorICAgIDEzMDA5NiwgMTMwMDk5LCAxMzAxMDIsIDEzMDEwNSwgMTMwMTA4LCAxMzAxMTEsIDEzMDExNCwgMTMwMTE3LCAxMzAxMjAsIAorICAgIDEzMDEyMywgMTMwMTI2LCAxMzAxMjksIDEzMDEzMiwgMTMwMTM1LCAxMzAxMzgsIDEzMDE0MSwgMTMwMTQ0LCAxMzAxNDcsIAorICAgIDEzMDE1MCwgMTMwMTUzLCAxMzAxNTYsIDEzMDE1OSwgMTMwMTYyLCAxMzAxNjUsIDEzMDE2OCwgMTMwMTcxLCAxMzAxNzQsIAorICAgIDEzMDE3NywgMTMwMTgwLCAxMzAxODMsIDEzMDE4NiwgMTMwMTg5LCAxMzAxOTIsIDEzMDE5NSwgMTMwMTk4LCAxMzAyMDEsIAorICAgIDEzMDIwNCwgMTMwMjA3LCAxMzAyMTAsIDEzMDIxMywgMTMwMjE2LCAxMzAyMTksIDEzMDIyMiwgMTMwMjI1LCAxMzAyMjgsIAorICAgIDEzMDIzMSwgMTMwMjM0LCAxMzAyMzcsIDEzMDI0MCwgMTMwMjQzLCAxMzAyNDYsIDEzMDI0OSwgMTMwMjUyLCAxMzAyNTUsIAorICAgIDEzMDI1OCwgMTMwMjYxLCAxMzAyNjQsIDEzMDI2NywgMTMwMjcwLCAxMzAyNzMsIDEzMDI3NiwgMTMwMjc5LCAxMzAyODIsIAorICAgIDEzMDI4NSwgMTMwMjg4LCAxMzAyOTEsIDEzMDI5NCwgMTMwMjk3LCAxMzAzMDAsIDEzMDMwMywgMTMwMzA2LCAxMzAzMDksIAorICAgIDEzMDMxMiwgMTMwMzE1LCAxMzAzMTgsIDEzMDMyMSwgMTMwMzI0LCAxMzAzMjcsIDEzMDMzMCwgMTMwMzMzLCAxMzAzMzYsIAorICAgIDEzMDMzOSwgMTMwMzQyLCAxMzAzNDUsIDEzMDM0OCwgMTMwMzUxLCAxMzAzNTQsIDEzMDM1NywgMTMwMzYwLCAxMzAzNjMsIAorICAgIDEzMDM2NiwgMTMwMzY5LCAxMzAzNzIsIDEzMDM3NSwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NCwgMTMwMzg3LCAxMzAzOTAsIAorICAgIDEzMDM5MywgMTMwMzk2LCAxMzAzOTksIDEzMDQwMiwgMTMwNDA1LCAxMzA0MDgsIDEzMDQxMSwgMTMwNDE0LCAxMzA0MTcsIAorICAgIDEzMDQyMCwgMTMwNDIzLCAxMzA0MjYsIDEzMDQyOSwgMTMwNDMyLCAxMzA0MzUsIDEzMDQzOCwgMTMwNDQxLCAxMzA0NDQsIAorICAgIDEzMDQ0NywgMTMwNDUwLCAxMzA0NTMsIDEzMDQ1NiwgMTMwNDU5LCAxMzA0NjIsIDEzMDQ2NSwgMTMwNDY4LCAxMzA0NzEsIAorICAgIDEzMDQ3NCwgMTMwNDc3LCAxMzA0ODAsIDEzMDQ4MywgMTMwNDg2LCAxMzA0ODksIDEzMDQ5MiwgMTMwNDk1LCAxMzA0OTgsIAorICAgIDEzMDUwMSwgMTMwNTA0LCAxMzA1MDcsIDEzMDUxMCwgMTMwNTEzLCAxMzA1MTYsIDEzMDUxOSwgMTMwNTIyLCAxMzA1MjUsIAorICAgIDEzMDUyOCwgMTMwNTMxLCAxMzA1MzQsIDEzMDUzNywgMTMwNTQwLCAxMzA1NDMsIDEzMDU0NiwgMTMwNTQ5LCAxMzA1NTIsIAorICAgIDEzMDU1NSwgMTMwNTU4LCAxMzA1NjEsIDEzMDU2NCwgMTMwNTY3LCAxMzA1NzAsIDEzMDU3MywgMTMwNTc2LCAxMzA1NzksIAorICAgIDEzMDU4MiwgMTMwNTg1LCAxMzA1ODgsIDEzMDU5MSwgMTMwNTk0LCAxMzA1OTcsIDEzMDYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjAzLCAxMzA2MDUsIDEzMDYwNywgMTMwNjEyLCAxMzA2MTQsIAorICAgIDEzMDYxOSwgMTMwNjIxLCAxMzA2MjYsIDEzMDYyOCwgMTMwNjMzLCAxMzA2MzUsIDEzMDYzNywgMTMwNjM5LCAxMzA2NDEsIAorICAgIDEzMDY0MywgMTMwNjQ1LCAxMzA2NDcsIDEzMDY0OSwgMTMwNjUxLCAxMzA2NTQsIDEzMDY1NywgMTMwNjU5LCAxMzA2NjEsIAorICAgIDEzMDY2NSwgMTMwNjY4LCAxMzA2NzMsIDEzMDY3NSwgMTMwNjc3LCAxMzA2NzksIDEzMDY4MywgMTMwNjg2LCAxMzA2ODgsIAorICAgIDEzMDY5MiwgMTMwNjk0LCAxMzA2OTgsIDEzMDcwMCwgMTMwNzA0LCAxMzA3MDcsIDEzMDcwOSwgMTMwNzEzLCAxMzA3MTcsIAorICAgIDEzMDcxOSwgMTMwNzI1LCAxMzA3MjcsIDEzMDczMiwgMTMwNzM0LCAxMzA3MzksIDEzMDc0MSwgMTMwNzQ2LCAxMzA3NDgsIAorICAgIDEzMDc1MywgMTMwNzU1LCAxMzA3NTgsIDEzMDc2MCwgMTMwNzY0LCAxMzA3NjYsIDEzMDc3MywgMTMwNzc1LCAxMzA3NzcsIAorICAgIDEzMDc3OSwgMTMwNzg0LCAxMzA3ODYsIDEzMDc4OCwgMTMwNzkwLCAxMzA3OTIsIDEzMDc5NCwgMTMwNzk5LCAxMzA4MDMsIAorICAgIDEzMDgwNSwgMTMwODEwLCAxMzA4MTQsIDEzMDgxNiwgMTMwODIxLCAxMzA4MjUsIDEzMDgyNywgMTMwODMyLCAxMzA4MzYsIAorICAgIDEzMDgzOCwgMTMwODQwLCAxMzA4NDIsIDEzMDg0NCwgMTMwODQ4LCAxMzA4NTAsIDEzMDg1NSwgMTMwODU3LCAxMzA4NjMsIAorICAgIDEzMDg2NSwgMTMwODcxLCAxMzA4NzMsIDEzMDg3NSwgMTMwODc3LCAxMzA4ODEsIDEzMDg4MywgMTMwODkwLCAxMzA4OTIsIAorICAgIDEzMDg5OSwgMTMwOTAxLCAxMzA5MDYsIDEzMDkxMSwgMTMwOTEzLCAxMzA5MTksIDEzMDkyNSwgMTMwOTI3LCAxMzA5MzMsIAorICAgIDEzMDkzOCwgMTMwOTQwLCAxMzA5NDYsIDEzMDk1MiwgMTMwOTU0LCAxMzA5NjAsIDEzMDk2NiwgMTMwOTY4LCAxMzA5NzQsIAorICAgIDEzMDk3OCwgMTMwOTgwLCAxMzA5ODUsIDEzMDk4NywgMTMwOTg5LCAxMzA5OTQsIDEzMDk5NiwgMTMwOTk4LCAxMzEwMDQsIAorICAgIDEzMTAwNiwgMTMxMDExLCAxMzEwMTUsIDEzMTAxNywgMTMxMDIyLCAxMzEwMjYsIDEzMTAyOCwgMTMxMDM0LCAxMzEwMzYsIAorICAgIDEzMTA0MCwgMTMxMDQyLCAxMzEwNDYsIDEzMTA0OCwgMTMxMDU1LCAxMzEwNjIsIDEzMTA2NCwgMTMxMDcxLCAxMzEwNzgsIAorICAgIDEzMTA4MCwgMTMxMDg1LCAxMzEwODcsIDEzMTA5NCwgMTMxMDk2LCAxMzExMDEsIDEzMTEwMywgMTMxMTA5LCAxMzExMTEsIAorICAgIDEzMTExNSwgMTMxMTE3LCAxMzExMjMsIDEzMTEyNSwgMTMxMTI5LCAxMzExMzEsIDEzMTEzNywgMTMxMTM5LCAxMzExNDEsIAorICAgIDEzMTE0MywgMTMxMTQ4LCAxMzExNTMsIDEzMTE1NSwgMTMxMTU5LCAxMzExNjYsIDEzMTE3MywgMTMxMTc4LCAxMzExODMsIAorICAgIDEzMTE5NSwgMTMxMTk3LCAxMzExOTksIDEzMTIwMSwgMTMxMjAzLCAxMzEyMDUsIDEzMTIwNywgMTMxMjA5LCAxMzEyMTEsIAorICAgIDEzMTIxMywgMTMxMjE1LCAxMzEyMTcsIDEzMTIxOSwgMTMxMjIxLCAxMzEyMjMsIDEzMTIyNSwgMTMxMjI3LCAxMzEyMjksIAorICAgIDEzMTIzNSwgMTMxMjQyLCAxMzEyNDcsIDEzMTI1MiwgMTMxMjYzLCAxMzEyNjUsIDEzMTI2NywgMTMxMjY5LCAxMzEyNzEsIAorICAgIDEzMTI3MywgMTMxMjc1LCAxMzEyNzcsIDEzMTI3OSwgMTMxMjgxLCAxMzEyODMsIDEzMTI4NSwgMTMxMjg3LCAxMzEyODksIAorICAgIDEzMTI5MSwgMTMxMjkzLCAxMzEyOTUsIDEzMTMwMCwgMTMxMzAyLCAxMzEzMDQsIDEzMTMxNSwgMTMxMzE3LCAxMzEzMTksIAorICAgIDEzMTMyMSwgMTMxMzIzLCAxMzEzMjUsIDEzMTMyNywgMTMxMzI5LCAxMzEzMzEsIDEzMTMzMywgMTMxMzM1LCAxMzEzMzcsIAorICAgIDEzMTMzOSwgMTMxMzQxLCAxMzEzNDMsIDEzMTM0NSwgMTMxMzQ3LCAxMzEzNDksIDEzMTM1MSwgMTMxMzUzLCAxMzEzNTUsIAorICAgIDEzMTM1NywgMTMxMzU5LCAxMzEzNjEsIDEzMTM2MywgMTMxMzY1LCAxMzEzNjcsIDEzMTM2OSwgMTMxMzcxLCAxMzEzNzMsIAorICAgIDEzMTM3NSwgMTMxMzc3LCAxMzEzNzksIDEzMTM4MSwgMTMxMzgzLCAxMzEzODUsIDEzMTM4NywgMTMxMzg5LCAxMzEzOTEsIAorICAgIDEzMTM5MywgMTMxMzk1LCAxMzEzOTcsIDEzMTM5OSwgMTMxNDAxLCAxMzE0MDMsIDEzMTQwNSwgMTMxNDA3LCAxMzE0MDksIAorICAgIDEzMTQxMSwgMTMxNDEzLCAxMzE0MTUsIDEzMTQxNywgMTMxNDE5LCAxMzE0MjEsIDEzMTQyMywgMTMxNDI1LCAxMzE0MjcsIAorICAgIDEzMTQyOSwgMTMxNDMxLCAxMzE0MzMsIDEzMTQzNSwgMTMxNDM3LCAxMzE0MzksIDEzMTQ0MSwgMTMxNDQzLCAxMzE0NDUsIAorICAgIDEzMTQ0NywgMTMxNDQ5LCAxMzE0NTEsIDEzMTQ1MywgMTMxNDU1LCAxMzE0NTcsIDEzMTQ1OSwgMTMxNDYxLCAxMzE0NjMsIAorICAgIDEzMTQ2NSwgMTMxNDY3LCAxMzE0NjksIDEzMTQ3MSwgMTMxNDczLCAxMzE0NzUsIDEzMTQ3NywgMTMxNDc5LCAxMzE0ODEsIAorICAgIDEzMTQ4MywgMTMxNDg1LCAxMzE0ODcsIDEzMTQ4OSwgMTMxNDkxLCAxMzE0OTMsIDEzMTQ5NSwgMTMxNDk3LCAxMzE0OTksIAorICAgIDEzMTUwMSwgMTMxNTAzLCAxMzE1MDUsIDEzMTUwNywgMTMxNTA5LCAxMzE1MTEsIDEzMTUxMywgMTMxNTE1LCAxMzE1MTcsIAorICAgIDEzMTUxOSwgMTMxNTIxLCAxMzE1MjMsIDEzMTUyNSwgMTMxNTI3LCAxMzE1MjksIDEzMTUzMSwgMTMxNTMzLCAxMzE1MzUsIAorICAgIDEzMTUzNywgMTMxNTM5LCAxMzE1NDEsIDEzMTU0MywgMTMxNTQ1LCAxMzE1NDcsIDEzMTU0OSwgMTMxNTUxLCAxMzE1NTMsIAorICAgIDEzMTU1NSwgMTMxNTU3LCAxMzE1NTksIDEzMTU2MSwgMTMxNTYzLCAxMzE1NjUsIDEzMTU2NywgMTMxNTY5LCAxMzE1NzEsIAorICAgIDEzMTU3MywgMTMxNTc1LCAxMzE1NzcsIDEzMTU3OSwgMTMxNTgxLCAxMzE1ODMsIDEzMTU4NSwgMTMxNTg3LCAxMzE1ODksIAorICAgIDEzMTU5MSwgMTMxNTkzLCAxMzE1OTUsIDEzMTU5NywgMTMxNTk5LCAxMzE2MDEsIDEzMTYwMywgMTMxNjA1LCAxMzE2MDcsIAorICAgIDEzMTYwOSwgMTMxNjExLCAxMzE2MTMsIDEzMTYxNSwgMTMxNjE3LCAxMzE2MTksIDEzMTYyMSwgMTMxNjIzLCAxMzE2MjUsIAorICAgIDEzMTYyNywgMTMxNjI5LCAxMzE2MzEsIDEzMTYzMywgMTMxNjM1LCAxMzE2MzcsIDEzMTYzOSwgMTMxNjQxLCAxMzE2NDMsIAorICAgIDEzMTY0NSwgMTMxNjQ3LCAxMzE2NDksIDEzMTY1MSwgMTMxNjUzLCAxMzE2NTUsIDEzMTY1NywgMTMxNjU5LCAxMzE2NjEsIAorICAgIDEzMTY2MywgMTMxNjY1LCAxMzE2NjcsIDEzMTY2OSwgMTMxNjcxLCAxMzE2NzMsIDEzMTY3NSwgMTMxNjc3LCAxMzE2NzksIAorICAgIDEzMTY4MSwgMTMxNjgzLCAxMzE2ODUsIDEzMTY4NywgMTMxNjg5LCAxMzE2OTEsIDEzMTY5MywgMTMxNjk1LCAxMzE2OTcsIAorICAgIDEzMTY5OSwgMTMxNzAxLCAxMzE3MDMsIDEzMTcwNSwgMTMxNzA3LCAxMzE3MDksIDEzMTcxMSwgMTMxNzEzLCAxMzE3MTUsIAorICAgIDEzMTcxNywgMTMxNzE5LCAxMzE3MjEsIDEzMTcyMywgMTMxNzI1LCAxMzE3MjcsIDEzMTcyOSwgMTMxNzMxLCAxMzE3MzMsIAorICAgIDEzMTczNSwgMTMxNzM3LCAxMzE3MzksIDEzMTc0MSwgMTMxNzQzLCAxMzE3NDUsIDEzMTc0NywgMTMxNzQ5LCAxMzE3NTEsIAorICAgIDEzMTc1MywgMTMxNzU1LCAxMzE3NTcsIDEzMTc1OSwgMTMxNzYxLCAxMzE3NjMsIDEzMTc2NSwgMTMxNzY3LCAxMzE3NjksIAorICAgIDEzMTc3MSwgMTMxNzczLCAxMzE3NzUsIDEzMTc3NywgMTMxNzc5LCAxMzE3ODEsIDEzMTc4MywgMTMxNzg1LCAxMzE3ODcsIAorICAgIDEzMTc4OSwgMTMxNzkxLCAxMzE3OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMTc5NSwgMTMxODA1LCAxMzE4MTUsIDEzMTgyNCwgMTMxODMzLCAxMzE4NDYsIDEzMTg1OSwgMTMxODcxLCAxMzE4ODMsIAorICAgIDEzMTg5MywgMTMxOTAzLCAxMzE5MTMsIDEzMTkyMywgMTMxOTM0LCAxMzE5NDUsIDEzMTk1NSwgMTMxOTY0LCAxMzE5NzMsIAorICAgIDEzMTk4MiwgMTMxOTk1LCAxMzIwMDgsIDEzMjAyMCwgMTMyMDMyLCAxMzIwNDIsIDEzMjA1MiwgMTMyMDYyLCAxMzIwNzIsIAorICAgIDEzMjA4MSwgMTMyMDkwLCAxMzIwOTksIDEzMjEwOCwgMTMyMTE3LCAxMzIxMjYsIDEzMjEzNSwgMTMyMTQ0LCAxMzIxNTMsIAorICAgIDEzMjE2MiwgMTMyMTcxLCAxMzIxODAsIDEzMjE5MSwgMTMyMjAxLCAxMzIyMTEsIDEzMjIyNCwgMTMyMjM0LCAxMzIyNDcsIAorICAgIDEzMjI1NCwgMTMyMjY0LCAxMzIyNzEsIDEzMjI3OCwgMTMyMjg1LCAxMzIyOTIsIDEzMjI5OSwgMTMyMzA2LCAxMzIzMTUsIAorICAgIDEzMjMyNCwgMTMyMzMzLCAxMzIzNDIsIDEzMjM1MSwgMTMyMzYwLCAxMzIzNjksIDEzMjM3OCwgMTMyMzg2LCAxMzIzOTQsIAorICAgIDEzMjQwMSwgMTMyNDExLCAxMzI0MjAsIDEzMjQyOCwgMTMyNDM1LCAxMzI0NDUsIDEzMjQ1NCwgMTMyNDU4LCAxMzI0NjIsIAorICAgIDEzMjQ2NiwgMTMyNDcwLCAxMzI0NzQsIDEzMjQ3OCwgMTMyNDgyLCAxMzI0ODYsIDEzMjQ5MCwgMTMyNDk0LCAxMzI0OTcsIAorICAgIDEzMjUwMSwgMTMyNTA0LCAxMzI1MDcsIDEzMjUxMSwgMTMyNTE1LCAxMzI1MTksIDEzMjUyMywgMTMyNTI3LCAxMzI1MzEsIAorICAgIDEzMjUzNSwgMTMyNTM5LCAxMzI1NDMsIDEzMjU0NywgMTMyNTUxLCAxMzI1NTUsIDEzMjU1OSwgMTMyNTYzLCAxMzI1NjcsIAorICAgIDEzMjU3MSwgMTMyNTc1LCAxMzI1NzksIDEzMjU4MywgMTMyNTg3LCAxMzI1OTEsIDEzMjU5NSwgMTMyNTk5LCAxMzI2MDMsIAorICAgIDEzMjYwNywgMTMyNjExLCAxMzI2MTUsIDEzMjYxOSwgMTMyNjIzLCAxMzI2MjcsIDEzMjYzMSwgMTMyNjM1LCAxMzI2MzksIAorICAgIDEzMjY0MywgMTMyNjQ3LCAxMzI2NTEsIDEzMjY1NSwgMTMyNjU5LCAxMzI2NjMsIDEzMjY2NywgMTMyNjcxLCAxMzI2NzUsIAorICAgIDEzMjY3OSwgMTMyNjgzLCAxMzI2ODcsIDEzMjY5MSwgMTMyNjk1LCAxMzI2OTksIDEzMjcwMywgMTMyNzA3LCAxMzI3MTEsIAorICAgIDEzMjcxNSwgMTMyNzE5LCAxMzI3MjMsIDEzMjcyNywgMTMyNzMxLCAxMzI3MzUsIDEzMjczOSwgMTMyNzQzLCAxMzI3NDcsIAorICAgIDEzMjc1MSwgMTMyNzU1LCAxMzI3NTksIDEzMjc2MywgMTMyNzY3LCAxMzI3NzEsIDEzMjc3NSwgMTMyNzc5LCAxMzI3ODMsIAorICAgIDEzMjc4NywgMTMyNzkxLCAxMzI3OTUsIDEzMjc5OSwgMTMyODAzLCAxMzI4MDcsIDEzMjgxMSwgMTMyODE1LCAxMzI4MTksIAorICAgIDEzMjgyMywgMTMyODI3LCAxMzI4MzEsIDEzMjgzNSwgMTMyODM5LCAxMzI4NDMsIDEzMjg0NywgMTMyODUwLCAxMzI4NTQsIAorICAgIDEzMjg1OCwgMTMyODYyLCAxMzI4NjYsIDEzMjg3MCwgMTMyODc0LCAxMzI4NzgsIDEzMjg4MiwgMTMyODg2LCAxMzI4OTAsIAorICAgIDEzMjg5NCwgMTMyODk4LCAxMzI5MDIsIDEzMjkwNiwgMTMyOTEwLCAxMzI5MTQsIDEzMjkxOCwgMTMyOTIyLCAxMzI5MjYsIAorICAgIDEzMjkzMCwgMTMyOTM0LCAxMzI5MzgsIDEzMjk0MiwgMTMyOTQ2LCAxMzI5NTAsIDEzMjk1NCwgMTMyOTU4LCAxMzI5NjIsIAorICAgIDEzMjk2NiwgMTMyOTcwLCAxMzI5NzQsIDEzMjk3OCwgMTMyOTgyLCAxMzI5ODYsIDEzMjk5MCwgMTMyOTk0LCAxMzI5OTgsIAorICAgIDEzMzAwMiwgMTMzMDA2LCAxMzMwMTAsIDEzMzAxNCwgMTMzMDE4LCAxMzMwMjIsIDEzMzAyNiwgMTMzMDMwLCAxMzMwMzQsIAorICAgIDEzMzAzOCwgMTMzMDQyLCAxMzMwNDYsIDEzMzA1MCwgMTMzMDU0LCAxMzMwNTgsIDEzMzA2MiwgMTMzMDY2LCAxMzMwNzAsIAorICAgIDEzMzA3NCwgMTMzMDc4LCAxMzMwODIsIDEzMzA4NiwgMTMzMDkwLCAxMzMwOTQsIDEzMzA5OCwgMTMzMTAyLCAxMzMxMDYsIAorICAgIDEzMzExMCwgMTMzMTE0LCAxMzMxMTgsIDEzMzEyMiwgMTMzMTI2LCAxMzMxMzAsIDEzMzEzNCwgMTMzMTM4LCAxMzMxNDIsIAorICAgIDEzMzE0NiwgMTMzMTUwLCAxMzMxNTQsIDEzMzE1OCwgMTMzMTYyLCAxMzMxNjYsIDEzMzE3MCwgMTMzMTc0LCAxMzMxNzgsIAorICAgIDEzMzE4MiwgMTMzMTg2LCAxMzMxOTAsIDEzMzE5NCwgMTMzMTk4LCAxMzMyMDIsIDEzMzIwNiwgMTMzMjEwLCAxMzMyMTQsIAorICAgIDEzMzIxOCwgMTMzMjIyLCAxMzMyMjYsIDEzMzIzMCwgMTMzMjM0LCAxMzMyMzgsIDEzMzI0MiwgMTMzMjQ2LCAxMzMyNTAsIAorICAgIDEzMzI1NCwgMTMzMjU4LCAxMzMyNjIsIDEzMzI2NiwgMTMzMjcwLCAxMzMyNzQsIDEzMzI3OCwgMTMzMjgyLCAxMzMyODYsIAorICAgIDEzMzI5MCwgMTMzMjk0LCAxMzMyOTgsIDEzMzMwMiwgMTMzMzA2LCAxMzMzMTAsIDEzMzMxNCwgMTMzMzE4LCAxMzMzMjIsIAorICAgIDEzMzMyNiwgMTMzMzMwLCAxMzMzMzQsIDEzMzMzOCwgMTMzMzQyLCAxMzMzNDYsIDEzMzM1MCwgMTMzMzU0LCAxMzMzNTgsIAorICAgIDEzMzM2MiwgMTMzMzY2LCAxMzMzNzAsIDEzMzM3NCwgMTMzMzc4LCAxMzMzODIsIDEzMzM4NiwgMTMzMzkwLCAxMzMzOTQsIAorICAgIDEzMzM5OCwgMTMzNDAyLCAxMzM0MDYsIDEzMzQxMCwgMTMzNDE0LCAxMzM0MTgsIDEzMzQyMiwgMTMzNDI2LCAxMzM0MzAsIAorICAgIDEzMzQzNCwgMTMzNDM4LCAxMzM0NDIsIDEzMzQ0NiwgMTMzNDUwLCAxMzM0NTQsIDEzMzQ1OCwgMTMzNDYyLCAxMzM0NjYsIAorICAgIDEzMzQ3MCwgMTMzNDc0LCAxMzM0NzgsIDEzMzQ4MiwgMTMzNDg2LCAxMzM0OTAsIDEzMzQ5NCwgMTMzNDk4LCAxMzM1MDIsIAorICAgIDEzMzUwNiwgMTMzNTEwLCAxMzM1MTQsIDEzMzUxOCwgMTMzNTIyLCAxMzM1MjYsIDEzMzUzMCwgMTMzNTM0LCAxMzM1MzgsIAorICAgIDEzMzU0MiwgMTMzNTQ2LCAxMzM1NTAsIDEzMzU1NCwgMTMzNTU4LCAxMzM1NjIsIDEzMzU2NiwgMTMzNTcwLCAxMzM1NzQsIAorICAgIDEzMzU3OCwgMTMzNTgyLCAxMzM1ODYsIDEzMzU5MCwgMTMzNTk0LCAxMzM1OTgsIDEzMzYwMiwgMTMzNjA2LCAxMzM2MTAsIAorICAgIDEzMzYxNCwgMTMzNjE5LCAxMzM2MjQsIDEzMzYyOSwgMTMzNjMzLCAxMzM2MzksIDEzMzY0NiwgMTMzNjUzLCAxMzM2NjAsIAorICAgIDEzMzY2NywgMTMzNjc0LCAxMzM2ODEsIDEzMzY4OCwgMTMzNjk1LCAxMzM3MDIsIDEzMzcwOSwgMTMzNzE2LCAxMzM3MjMsIAorICAgIDEzMzczMCwgMTMzNzM2LCAxMzM3NDMsIDEzMzc1MCwgMTMzNzU2LCAxMzM3NjMsIDEzMzc3MCwgMTMzNzc3LCAxMzM3ODQsIAorICAgIDEzMzc5MSwgMTMzNzk4LCAxMzM4MDUsIDEzMzgxMiwgMTMzODE5LCAxMzM4MjYsIDEzMzgzMywgMTMzODQwLCAxMzM4NDcsIAorICAgIDEzMzg1MywgMTMzODU5LCAxMzM4NjYsIDEzMzg3MywgMTMzODgyLCAxMzM4OTEsIDEzMzkwMCwgMTMzOTA5LCAxMzM5MTQsIAorICAgIDEzMzkxOSwgMTMzOTI1LCAxMzM5MzEsIDEzMzkzNywgMTMzOTQzLCAxMzM5NDksIDEzMzk1NSwgMTMzOTYxLCAxMzM5NjcsIAorICAgIDEzMzk3MywgMTMzOTc5LCAxMzM5ODUsIDEzMzk5MSwgMTMzOTk2LCAxMzQwMDIsIDEzNDAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29kZV9oYXNoW10gPSB7CiAgICAgNzQyMjQsIDQ4NTEsIDAsIDc4MTU2LCA3ODQ5OSwgMTI4Njg1LCA3OTI5LCAwLCAxOTQ2ODIsIDEyNzc2NiwgNzg1MDAsIAotICAgIDY2NDgwLCAwLCA0MjgzMywgNzQ1MjksIDEyMDY0LCAwLCA1OTYsIDAsIDEyODEwMywgMTMxOTIsIDg2NTEsIDAsIDAsIAorICAgIDY2NDgwLCAwLCA0MjgzMywgNzQ1MjksIDEyMDY0LCAwLCA1OTYsIDk4MzgxMiwgNjk4NTAsIDEzMTkyLCA4NjUxLCAwLCAwLCAKICAgICAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMCwgMCwgNTgxNiwgMTE5MDY3LCA2NDgxMCwgNDIzMSwgNjgyNSwgNDI4OTcsIAogICAgIDQyMzMsIDQyMzQsIDQyMzIsIDkxNzgzNiwgNzQ0MTUsIDEyMDIxMCwgNjM4NCwgOTE3ODQwLCA3ODEwOCwgODg1MSwgMCwgCi0gICAgMTI4NTUzLCAwLCA0MTYwMSwgODg3NCwgMCwgNzc0OCwgMCwgMCwgMCwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgCi0gICAgNDE2MDAsIDAsIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAwLCAwLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIDM0MDQsIAotICAgIDAsIDAsIDAsIDE3NTksIDAsIDQxMDc2LCA2ODM4MywgMTIwNTcyLCAxMTkyMDUsIDY2NTc3LCAwLCAxMjc3NjQsIDY1ODU5LCAKLSAgICAwLCA3NDA0LCAwLCAwLCAwLCAwLCA2NTkwOCwgOTgzNCwgMzA1NSwgOTg1MiwgMCwgNjUyODgsIDAsIDExMzk4LCAwLCAKLSAgICA5MjQxNywgMTE5MjU1LCAwLCAwLCA2MDMsIDc0Mzk4LCA0MzU0OCwgMCwgMCwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIAotICAgIDY0MzE4LCA5MTc4MjgsIDEyNzA4OSwgMzM5MCwgNzQ0ODMsIDQzMjY1LCAxMjA1OTksIDkxNzgzMCwgNzg1NzMsIDAsIAotICAgIDE5MTksIDM0MDAsIDEyMDY1MSwgMTI3OTQ0LCAxMTY0NywgOTE3NTQwLCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIAotICAgIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCAwLCAwLCAxMTk2NiwgNjQxMjgsIDEyODU4NywgMCwgMCwgCi0gICAgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDAsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDAsIAotICAgIDY2MDIxLCAwLCAwLCA1NDU3LCA1NDQwLCA4ODU3LCAxMjg3NzEsIDY1MjgyLCAyODQzLCA1MzU1LCAxMjc5MjgsIDAsIDAsIAotICAgIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAwLCAwLCAwLCAwLCAxMjcwMjcsIDEwNzE3LCA2NDU3MCwgNTYzMCwgCi0gICAgNzQzNTAsIDY0MTQzLCAxMDY4MiwgMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAwLCAwLCA2NDkzMCwgMTE2MzEsIAotICAgIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDExODg1OSwgMTk0NjYxLCA2NDQ2OCwgMTA5MDYsIDEzNTMsIAotICAgIDY5NjAsIDAsIDAsIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIAotICAgIDY0MTA4LCA4MDkwLCAwLCA3NDQwMSwgOTE3ODExLCA1ODcsIDAsIDEyODEzMSwgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIAotICAgIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgMCwgMTIyMTMsIDE5NDY3OCwgMjc2MCwgMCwgMCwgMCwgMTk0Nzk0LCA2NDE1NiwgCi0gICAgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIAotICAgIDAsIDAsIDQ4MzksIDAsIDAsIDE4NzQsIDExOTAxNiwgMCwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCAKLSAgICA5MjUzNCwgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIDkyNTUwLCA2NDEyMiwgNzQ0MjIsIDY2NjA5LCAwLCA2NDExNywgCi0gICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKLSAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgMTI3MzA2LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCAKLSAgICA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgMCwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODY3MSwgCi0gICAgNDQwMTcsIDExNDI5LCAwLCAwLCAwLCA5MTc5OTAsIDczODQxLCAwLCAwLCA5MDU2LCA2NDMxMywgNjE4OCwgMTIwMDE5LCAKLSAgICA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCA5MjIxMiwgMCwgNDE5MDQsIAotICAgIDY2MzksIDY0MDY0LCAwLCAxMjgzNDQsIDAsIDExNzYsIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjg2NjcsIDAsIDAsIAotICAgIDEyMDUxOSwgNjYzNzYsIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCAKLSAgICA3NzE0LCA2NjIyMiwgMCwgNzc2OCwgMCwgNDE5OSwgNjQ3MDgsIDAsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCi0gICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDAsIDAsIDY0NjE1LCA0MTkxNSwgMCwgCi0gICAgMTIwNzUsIDkyMjExLCAwLCA1MTc0LCAwLCAwLCAxMjc1NTcsIDMxMjMsIDAsIDEyNjg1LCAxMjc5MDQsIDg0MDgsIDY0NzA0LCAKLSAgICAwLCAwLCA5MjIzLCAwLCA0MTYxNiwgMCwgNzM3OTcsIDAsIDExMTYsIDEyODIwNCwgNDMwNDksIDcxMzYsIDQzMDUwLCAKLSAgICA4NTQ4LCAxMjA0ODUsIDAsIDExOTA2MSwgOTE3OTk5LCAwLCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCAwLCAxMjA1OTUsIAotICAgIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDAsIDAsIDExNDM0LCA2NDA4MywgCi0gICAgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgMTk0ODE3LCA5OTI3LCA0MTMzNSwgCi0gICAgNDExOCwgMTc5NywgMCwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgMTI3ODgxLCAyOTgsIDAsIDEyODExNCwgMCwgNDI2MjcsIDAsIAotICAgIDMyLCA2MTg3LCAxMTkwNTIsIDExNDk1LCAxMTQ1OSwgMzY2NSwgMCwgNDI4NzEsIDAsIDE5OTIzLCA3NDMzNSwgMCwgCi0gICAgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA5MjQ5NSwgMCwgMCwgNjU3NTgsIDEyNzUwLCA0MTgxLCAKLSAgICA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgNjUwMTQsIDAsIDAsIDAsIDM2MzksIAotICAgIDExOTU4OCwgMCwgMCwgMTE4OTA0LCAxMDA3MywgMTIwMjA2LCAxMjg4NjIsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAKLSAgICAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCAwLCAxMDIwNywgODc4OSwgMCwgMCwgMCwgMCwgOTIzNCwgMCwgNjE4MiwgMCwgCi0gICAgNjUwNTgsIDAsIDAsIDAsIDAsIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCAxMTg5MDcsIAotICAgIDAsIDY2MjM4LCAxMjg0NCwgMCwgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCAKLSAgICA2NDQwNSwgNDEzMzcsIDAsIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIAotICAgIDY1NzksIDAsIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDEyNzAxMCwgMTIwNTA0LCAxOTQ4MjgsIDAsIAotICAgIDUwNTgsIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDAsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgCi0gICAgNzg2MDYsIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMCwgMCwgCi0gICAgMCwgMTIxMTMsIDQyMzYsIDQ3MjcsIDAsIDAsIDc2OTMsIDEwNzQ5LCAwLCA3NDg4LCA1NzczLCA5NzgsIDEyODEzNCwgMCwgCi0gICAgNDE2MTksIDEwMjM5LCA2ODYxMSwgMCwgNjYyMDksIDAsIDEyODcwMCwgOTc0OCwgMCwgMTI3NTI0LCAwLCAwLCAwLCAwLCAKLSAgICAxOTUwODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzNDEsIDExOTU5NiwgMjM3OSwgMTEzMjUsIDAsIDY0NjY4LCA2Nzg1NCwgCi0gICAgODEyNSwgMTIwNTQ1LCA2NzQzLCAxMTkxNzUsIDkxNzk0MCwgMjM2OSwgMCwgMCwgMCwgMTE5MjM1LCA3NDA5MiwgNzM5MzYsIAotICAgIDcwMDgsIDQzNjYwLCAwLCAwLCAwLCAyMzY3LCAxMjc4MjcsIDAsIDI2NCwgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAKLSAgICAxODQ0LCAxMTkwODQsIDAsIDYwMTksIDAsIDAsIDY5NjEsIDAsIDExODgzOSwgMCwgODgwMCwgMCwgNDI4NjIsIDQ0NjMsIAotICAgIDY1NTgxLCA2MTkyLCAxOTQ2NzYsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCA2NTA0MiwgMTE4Nzk3LCAxMjA4MDAsIDAsIAotICAgIDEyODkyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyNjEsIDEyMDcwNywgMCwgMCwgNTA3NCwgNTA3MywgMTI4NzkwLCA4OTgzLCAKLSAgICAxMTg5ODEsIDc0NDkzLCAwLCA1MDcyLCAxMjgwNzEsIDYxOTgsIDExNjE0LCAwLCAxOTYsIDAsIDAsIDAsIDQ5MjksIAotICAgIDEyMDM0MiwgMCwgMCwgMCwgMCwgNDI4NDcsIDAsIDAsIDAsIDQ5MzQsIDAsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgCi0gICAgMTI3OTE3LCA0MjU4NCwgMCwgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCAwLCA3NDQxOCwgMTI4MTksIAotICAgIDAsIDUwNzEsIDAsIDM2NDIsIDAsIDUwNzAsIDEwMDQyLCAxMTg4MzUsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCAKLSAgICA3ODY0OSwgMCwgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAKLSAgICAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTk0NjE5LCAwLCAwLCA2NDcwOSwgMCwgMTk0NjIwLCA3ODg4MCwgNDkyMiwgCi0gICAgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMCwgMCwgOTUyNiwgNDkyMCwgMCwgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDAsIAotICAgIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDAsIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMCwgNzIyLCAKLSAgICAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgMTI3NDg1LCAxMTk4NTUsIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDEyNzQ3NCwgCi0gICAgMTI3NDc3LCAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgOTIzMTAsIDEyNzQ2NiwgNzg1NTUsIDEyNzQ2OCwgCi0gICAgNzM4NjMsIDEyNzQ3MCwgMTI3NDczLCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgMTIwMTEzLCAKLSAgICAxMjc0NjIsIDcwMDUsIDQxNjA5LCA5NTgwLCAwLCA0MDEsIDAsIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIAotICAgIDgxNDMsIDEyNzExNSwgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAKLSAgICAwLCA1MDc2LCAwLCAxOTQ2MDksIDAsIDEyMDA5NywgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMCwgOTI1MjMsIAotICAgIDEyMDEwMiwgNzEzOCwgMTIwNTUyLCAwLCAxOTQ2MTEsIDc4NzUyLCAwLCAxMjUyMCwgODA1OCwgOTczMiwgMCwgNTA4MCwgCi0gICAgNjQ3NzUsIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDAsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCAKKyAgICAxMjg1NTMsIDAsIDQxNjAxLCA4ODc0LCA5ODM3NzQsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIAorICAgIDkxODgsIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAKKyAgICAzNDA0LCAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgOTQwMTQsIAorICAgIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDAsIDAsIDY1OTA4LCA5ODM0LCAzMDU1LCA5ODUyLCA5ODM4NTEsIAorICAgIDY1Mjg4LCAwLCAxMTM5OCwgMCwgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgCisgICAgMzM1MCwgMTIwODE3LCA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIAorICAgIDc4NTczLCAwLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAKKyAgICAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjc5LCA5ODMxNTIsIDExOTY2LCAKKyAgICA2NDEyOCwgMTI4NTg3LCAwLCAwLCA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgOTgzODM1LCA0MzM3NCwgOTc3OSwgCisgICAgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAKKyAgICAyODQzLCA1MzU1LCAxMjc5MjgsIDk4Mzk1NiwgMCwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDAsIDk4MzYyMCwgMCwgCisgICAgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgMCwgMTA2MDIsIDgwMCwgNDI0OTksIAorICAgIDY2MTg2LCAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDExODg1OSwgCisgICAgMTk0NjYxLCA2NDQ2OCwgMTA5MDYsIDEzNTMsIDY5NjAsIDAsIDAsIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgCisgICAgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAwLCA3NDQwMSwgOTE3ODExLCA1ODcsIDAsIDEyODEzMSwgCisgICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgOTgzOTQwLCAxMjIxMywgMTk0Njc4LCAKKyAgICAyNzYwLCAwLCAwLCAwLCAxOTQ3OTQsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDAsIDY0MTUxLCA2NDE1MCwgMTI2NzksIAorICAgIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMCwgMCwgNDgzOSwgMCwgMCwgMTg3NCwgMTE5MDE2LCAwLCAKKyAgICA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgCisgICAgOTI1NTAsIDY0MTIyLCA3NDQyMiwgNjY2MDksIDAsIDY0MTE3LCA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCAKKyAgICA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCAxMjczMDYsIAorICAgIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIAorICAgIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgCisgICAgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCAKKyAgICA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzY2LCAKKyAgICAxMjgzNDQsIDAsIDExNzYsIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjg2NjcsIDk4MzgyMiwgMCwgMTIwNTE5LCA2NjM3NiwgCisgICAgNjYyNDIsIDExNDE1LCA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDAsIDAsIDc3MTQsIDY2MjIyLCAKKyAgICA2OTkwMiwgNzc2OCwgMCwgNDE5OSwgNjQ3MDgsIDk4MzQxMywgMCwgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKKyAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgMCwgMTI2NTcwLCAwLCA2NDYxNSwgNDE5MTUsIAorICAgIDAsIDEyMDc1LCA3MDA2MiwgMCwgNTE3NCwgOTgzMjE1LCAwLCAxMjc1NTcsIDMxMjMsIDAsIDEyNjg1LCAxMjc5MDQsIAorICAgIDg0MDgsIDY0NzA0LCAwLCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCAKKyAgICA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgCisgICAgOTMyMiwgMCwgMTIwNTk1LCA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAKKyAgICAwLCAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgCisgICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIAorICAgIDAsIDQyNjI3LCAwLCAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDk4MzYwMCwgNDI4NzEsIDAsIAorICAgIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA5MjQ5NSwgMCwgCisgICAgOTgzNDU4LCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDAsIDEyMDE5OSwgOTE3ODk3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKKyAgICA2NTAxNCwgMCwgMCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAKKyAgICAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgOTgzMTE4LCAxMDIwNywgODc4OSwgCisgICAgOTgzMjIzLCAwLCAwLCA5ODM0NjQsIDkyMzQsIDAsIDYxODIsIDk4MzQ2NiwgNjUwNTgsIDAsIDk4MzQ3MCwgOTgzNDY3LCAwLCAKKyAgICA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgMCwgCisgICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCA2NDQwNSwgNDEzMzcsIDAsIAorICAgIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDAsIDY0NjE4LCAKKyAgICAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDEyNzAxMCwgMTIwNTA0LCAxOTQ4MjgsIDAsIDUwNTgsIDQxMDEwLCAKKyAgICA5OTkyLCAxMjgyOTksIDUwNTcsIDAsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIDAsIDE0MzcsIAorICAgIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAwLCAxMjg1MjksIAorICAgIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAorICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDk4Mzk0NywgMTI3NTI0LCAwLCAwLCAwLCAKKyAgICAwLCAxOTUwODMsIDAsIDk4MzgzNCwgMCwgMCwgMCwgMCwgMCwgOTM0MSwgMTE5NTk2LCAyMzc5LCAxMTMyNSwgMCwgNjQ2NjgsIAorICAgIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDExOTE3NSwgOTE3OTQwLCAyMzY5LCAwLCA5ODM5NjMsIDk4Mzk2NCwgCisgICAgMTE5MjM1LCA3NDA5MiwgNzM5MzYsIDcwMDgsIDQzNjYwLCAwLCAwLCAwLCAyMzY3LCAxMjc4MjcsIDk4Mzg0OCwgMjY0LCAKKyAgICAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMCwgNjAxOSwgMCwgMCwgNjk2MSwgMCwgMTE4ODM5LCAKKyAgICAwLCA4ODAwLCAwLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDE5NDY3NiwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIAorICAgIDY1MDQyLCAxMTg3OTcsIDEyMDgwMCwgOTgzMDQwLCAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIAorICAgIDk4MzEyOCwgMCwgNTA3NCwgNTA3MywgMTI4NzkwLCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA5ODM1NjEsIDUwNzIsIDkzOTc3LCAKKyAgICA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCAKKyAgICA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAKKyAgICAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA3NDQxOCwgMTI4MTksIDAsIDUwNzEsIDAsIDM2NDIsIDAsIDUwNzAsIAorICAgIDEwMDQyLCAxMTg4MzUsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgCisgICAgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIAorICAgIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIAorICAgIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMjAyMTEsIAorICAgIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAKKyAgICAxMjc0ODUsIDExOTg1NSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgMTI3NDc0LCAxMjc0NzcsIDE2NzIsIDYyMDUsIAorICAgIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgMTI3NDY2LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCAKKyAgICAxMjY1MDMsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCAxMjAxMTMsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIAorICAgIDk1ODAsIDAsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIDgxNDMsIDEyNzExNSwgCisgICAgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAwLCA1MDc2LCAwLCAKKyAgICAxOTQ2MDksIDAsIDEyMDA5NywgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMCwgOTI1MjMsIDEyMDEwMiwgCisgICAgNzEzOCwgMTIwNTUyLCAwLCAxOTQ2MTEsIDc4NzUyLCAwLCAxMjUyMCwgODA1OCwgOTczMiwgMCwgNTA4MCwgNjQ3NzUsIAorICAgIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY0NywgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIAogICAgIDQ0MzIsIDEyNzI3MSwgNTAzMywgMTI3MjczLCAxMjcyNzIsIDQ4MzYsIDM4ODgsIDczNzkyLCAxMDcyOSwgNjQ1NDYsIAogICAgIDEyNzI2MiwgNDM3MDQsIDEyNzI2NCwgMTI3MjUxLCA2NzU4OCwgMTE5MDAwLCAxMjcyNTIsIDEyNzI1NSwgODg1OCwgNjQwOSwgCiAgICAgMTI3MjU2LCAxMjAyNTIsIDEyODEwMCwgMCwgMCwgNjYzMjEsIDAsIDEyODE0LCAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCAKLSAgICA2MDk0LCA3NjQxLCA0MjQ0NSwgMCwgOTI0ODcsIDQyNDA2LCAxNjc2LCA3NDMyMCwgMTk0NjA3LCAwLCA1MDMwLCAwLCAwLCAKLSAgICAwLCA3Mzg2OSwgOTYyMiwgMCwgMCwgNjc4NywgMCwgMCwgMCwgMCwgMTA1NDQsIDEyOTE5LCAwLCA5MjIxOCwgMCwgMCwgMCwgCi0gICAgMTIwNzg5LCAwLCA5NDcsIDExOTgzNSwgMTk0NTg2LCAxOTQ1ODUsIDEwOTY5LCAxMTk5MzUsIDc2MTMsIDkyNTYyLCAKLSAgICAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMCwgNDM1NjcsIAotICAgIDc0MDU2LCA5MTc5MTAsIDExODk2MywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCA0Mzk1LCAKLSAgICA0MzUzOCwgMTE5OTI2LCAxMTk5MjksIDExOTkyOCwgNzIxMywgMTE5OTIyLCA3MjE0LCA3MjE1LCAwLCA3NDE0MSwgODg4MCwgCi0gICAgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDExOTYxOCwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgNzIzNiwgNzkxNSwgCi0gICAgMzYzMCwgMTIwMTc2LCA4MTc5LCA3NDI2NCwgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgODE1MCwgMTM1OSwgCi0gICAgNjc2NTIsIDEyNzMyOSwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAxMjczMjQsIDEyNzMyMSwgCi0gICAgOTIyNzksIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyNzMxOCwgMTI3MzE1LCAxMjI4MywgMTYxNiwgMzc5NSwgMCwgCi0gICAgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgMCwgMzIzOSwgMTI3MzExLCAwLCAwLCA4NDMxLCAKLSAgICAwLCA0MjE2NCwgMCwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgMTE5MDczLCA1MDQwLCAwLCAwLCAwLCA3ODQyMCwgMCwgCi0gICAgNTAzOSwgMCwgNzg0MTgsIDAsIDUwMzgsIDAsIDAsIDEzMTg0LCA3NDI5MywgMCwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCAwLCAKLSAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCAwLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIDQzMDksIAotICAgIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAwLCA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAKLSAgICAwLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAxOTQ1NzAsIDQxMzMxLCAxMDA2LCA3NDI0MCwgMCwgMTU1MCwgODIwMSwgCi0gICAgNzM3MzcsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDc3OTA3LCA2NTI2NywgMzc1OCwgMCwgCi0gICAgNjU3ODEsIDY0NzM0LCAwLCAyNDQwLCA2NTc4MCwgNzc5MTMsIDg0NDksIDAsIDUwMDgsIDAsIDIxMTgsIDAsIDEyMTIxLCAKLSAgICA4MjU1LCA1NTEyLCA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTI3MDY4LCAyMTE0LCAKLSAgICAyMTE2LCAyNDU1LCAwLCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAwLCA4NzE0LCAwLCAyMTEzLCAwLCAyMTE1LCAxMjgxNzcsIAotICAgIDEyNzkwNywgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCAKLSAgICA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIAotICAgIDkxMTcsIDAsIDEyMDAzLCA1NTEzLCA2NjY2LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCAKKyAgICA2MDk0LCA3NjQxLCA0MjQ0NSwgMCwgOTI0ODcsIDQyNDA2LCAxNjc2LCA3NDMyMCwgMTk0NjA3LCA5ODMxNzcsIDUwMzAsIDAsIAorICAgIDAsIDAsIDczODY5LCA5NjIyLCAwLCA2OTk0NCwgNjc4NywgMCwgMCwgMCwgOTgzNTgzLCAxMDU0NCwgMTI5MTksIDAsIAorICAgIDkyMjE4LCAwLCAwLCA2OTkwNiwgMTIwNzg5LCAwLCA5NDcsIDExOTgzNSwgMTk0NTg2LCAxOTQ1ODUsIDEwOTY5LCAKKyAgICAxMTk5MzUsIDc2MTMsIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIAorICAgIDEyMDI2OCwgMCwgNDM1NjcsIDc0MDU2LCA5MTc5MTAsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIAorICAgIDcyMTgsIDc4OTUsIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTkyOSwgMTE5OTI4LCA3MjEzLCAxMTk5MjIsIDcyMTQsIAorICAgIDcyMTUsIDk4MzgyNywgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCAxMTk2MTgsIDYyNSwgODE4NywgCisgICAgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIDM2MzAsIDEyMDE3NiwgODE3OSwgNzQyNjQsIDY3ODg2LCA5MzE2LCAxMDk4MCwgCisgICAgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIDY3NjUyLCAxMjczMjksIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAKKyAgICAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIDkyMjc5LCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjczMTgsIDEyNzMxNSwgCisgICAgMTIyODMsIDE2MTYsIDM3OTUsIDAsIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDAsIDAsIAorICAgIDMyMzksIDEyNzMxMSwgMCwgMCwgODQzMSwgMCwgNDIxNjQsIDAsIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDExOTA3MywgCisgICAgNTA0MCwgMCwgMCwgOTgzNDM1LCA3ODQyMCwgMCwgNTAzOSwgMCwgNzg0MTgsIDAsIDUwMzgsIDAsIDAsIDEzMTg0LCAKKyAgICA3NDI5MywgMCwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCAwLCAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCAwLCAzODYzLCAKKyAgICA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAKKyAgICAwLCA0MjU4OSwgNTY5LCAwLCA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAwLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAKKyAgICAxOTQ1NzAsIDQxMzMxLCAxMDA2LCA3NDI0MCwgMCwgMTU1MCwgODIwMSwgNzM3MzcsIDc2MjcsIDU0OTksIDUwMzEsIAorICAgIDc3OTA4LCA0MjczOCwgNjU3ODQsIDc3OTA3LCA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA3MDA3MywgMjQ0MCwgCisgICAgNjU3ODAsIDc3OTEzLCA4NDQ5LCAwLCA1MDA4LCA5ODM1NzIsIDIxMTgsIDAsIDEyMTIxLCA4MjU1LCA1NTEyLCA3Mzg3NSwgCisgICAgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTI3MDY4LCAyMTE0LCAyMTE2LCAyNDU1LCAwLCAyMTIyLCAKKyAgICAyMTIzLCAyMTI0LCAyMTI1LCAxMjc0ODYsIDg3MTQsIDk4MzgxMSwgMjExMywgMCwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIAorICAgIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIAorICAgIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCAKKyAgICA5ODMxODEsIDEyMDAzLCA1NTEzLCA2NjY2LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCAKICAgICA3ODQzNywgMCwgMTkyNSwgMCwgOTIyMzcsIDc0ODA3LCAwLCA1MDQ4LCA1MDQ3LCAwLCAwLCAwLCA5MjMxMywgMCwgNzQ0OTcsIAotICAgIDkyMzk1LCA4MDg5LCA2OTI5LCA2MzksIDAsIDY4MTc5LCA2NDQ0MiwgMCwgOTIzNDgsIDQ1OTksIDQxNDAyLCA2Njc0LCAKLSAgICA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCAwLCAwLCAzNTMwLCAKLSAgICA5NzUwLCAxMjgzMTcsIDAsIDY2NTYsIDkyMzY3LCAwLCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIAotICAgIDAsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDAsIDc4NTMsIDc0MDY4LCA3NDAwNCwgCi0gICAgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAwLCAxMTkwNzAsIDkxNzYwMCwgNDE3NTAsIDM1ODYsIDY0NTA4LCA0MzE0OCwgCi0gICAgMCwgMCwgMTE5NjA2LCAwLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgCi0gICAgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIDAsIAotICAgIDE5NDg1MSwgNjYyMDAsIDAsIDAsIDAsIDc4NDIzLCAwLCAwLCA4NzExLCA2MTgzLCAwLCAwLCAwLCAxMjA0NDgsIDc2MjMsIAotICAgIDExODkyNSwgMTk0ODUzLCA5MjM1LCAxMjc2MCwgNzQxNzYsIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAKLSAgICAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAwLCAwLCAxMjA0MzUsIDAsIDc3MjYsIDAsIDE5OTIyLCAyNjcsIDMzOTMsIAotICAgIDQyMTk4LCAxMzcxLCAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCAKLSAgICA0MTA3NywgMzQwMiwgOTA1MCwgMzM5OCwgMCwgMCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAotICAgIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgMTI3NTM3LCAxMzAxNCwgMTMwMTMsIDAsIDY2NzMsIDAsIAotICAgIDAsIDAsIDEyNDM4LCAwLCAwLCAwLCAwLCAwLCA5MDUzLCAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDAsIAotICAgIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDkxNzc5MywgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCAwLCAKLSAgICAxMjc5NDAsIDAsIDc0NTQ3LCAwLCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIAotICAgIDc4MDk5LCAxMjcwODUsIDAsIDAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDAsIDc4NDU4LCA2NjcyOCwgMTgxNiwgMCwgCi0gICAgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCAwLCAwLCA0OTAxLCAxODIxLCAwLCA1NzgsIDM2NTMsIDAsIDc5MSwgCi0gICAgOTE2MiwgNjk3NywgMCwgMTE5Mjk4LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIDAsIDc1NTcsIAotICAgIDExOTMzOSwgMTE5MzAxLCA4MjM0LCA3MjQxLCAwLCAxOTQ5OTQsIDExOTE2NywgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIAotICAgIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIAotICAgIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIDI0NTIsIDc4MDgzLCAxOTQ4NjQsIAotICAgIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCA5MTc5MTcsIDc4NjkyLCA0NDA4LCA0MTIyLCA2NzcyLCAxMTAzOSwgODcyMywgCi0gICAgMTk0OTkwLCAxMjc4MzMsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDkyMjg2LCAyNDM4LCA2NDg1NSwgMTE5MzAwLCAxMTkyOTksIAotICAgIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAwLCAwLCAwLCA0MTk1MiwgMCwgCi0gICAgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgCi0gICAgMTI5NjMsIDEyNzg2NCwgNjE4OSwgNDEyNSwgMTMxNCwgMTIxMzMsIDAsIDExODg3MywgMTI3MSwgMCwgMCwgNjYwMjQsIAotICAgIDQxNDgyLCAzODY0LCA3NDUzOSwgMCwgMzg3OSwgMCwgMTI5NzgsIDQxNjYsIDQ1NzQsIDAsIDc1NjcsIDc0NTksIDAsIAotICAgIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDkyNTQ4LCA1NzU5LCAwLCAwLCA0MTM4OCwgOTIzNjIsIDQxMzkyLCA2NDI4OCwgCi0gICAgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDAsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNzgxMTAsIDY2NTk2LCAKLSAgICAwLCAwLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMCwgMCwgNzYxOCwgODUxNywgMTE0NTUsIAotICAgIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIDQyODAzLCA2NTAzMywgOTE0MywgCi0gICAgNjY2OCwgMTk1MDY3LCAxOTUwNjYsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgCi0gICAgMCwgNDI2OSwgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIDkyMjczLCA2NjU4MCwgMTE4ODk1LCAKLSAgICA2NjY4MywgMTA1NTQsIDkxNzc3OCwgMTE5MTIxLCAwLCA1MDk4LCA5MTc3NzAsIDAsIDExOTA5OSwgNTA5NywgNDkzNSwgCi0gICAgOTg0OCwgMTAzODEsIDAsIDEyODg3MCwgMCwgMzY1MSwgMCwgMTk0NjEwLCAxMjc1NTYsIDUxMDIsIDUxMDEsIDEwMjY5LCAKLSAgICAxMjk4MywgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIDEyNDcsIDEwMDM0LCAxOTUwNjQsIDUwOTksIAotICAgIDc4MzczLCAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAwLCA3ODM4LCAwLCAxOTUwNDEsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCAKLSAgICAxMjA3OTAsIDEyODU4MiwgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgMCwgOTE1NCwgOTExOCwgMCwgMCwgMjY3NiwgCi0gICAgNzc1MCwgMCwgNzM4MTIsIDYxOTAsIDg1OTksIDE5NTA1MywgMCwgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgCisgICAgOTIzOTUsIDgwODksIDY5MjksIDYzOSwgOTgzNTYzLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgCisgICAgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgOTQwMTcsIAorICAgIDk4Mzk2NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAwLCA2NjU2LCA0MjYxOCwgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCAKKyAgICA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgCisgICAgNzg1MywgNzQwNjgsIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgOTE3NjAwLCA0MTc1MCwgCisgICAgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAwLCAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgCisgICAgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgCisgICAgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAKKyAgICAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgMTk0ODUxLCA2NjIwMCwgMCwgMCwgMCwgNzg0MjMsIDAsIDAsIDg3MTEsIAorICAgIDYxODMsIDAsIDAsIDAsIDEyMDQ0OCwgNzYyMywgMTE4OTI1LCAxMTg4ODksIDkyMzUsIDEyNzYwLCA3NDE3NiwgNjk2NjIsIAorICAgIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDAsIDEyNjU5NywgMTIwNDM1LCAwLCAKKyAgICA3NzI2LCAwLCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgCisgICAgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDk4MzM0MCwgMCwgMzM5MSwgCisgICAgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgCisgICAgMTI3NTM3LCAxMzAxNCwgMTMwMTMsIDAsIDY2NzMsIDAsIDAsIDAsIDEyNDM4LCAwLCA5ODMzMzQsIDAsIDk4Mzg3MSwgCisgICAgMTI2NjM4LCA5MDUzLCAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDk4MzgxOSwgNjY2MCwgNzg3NTgsIAorICAgIDkxNzc2MCwgOTE3NzkzLCA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIDEyNzk0MCwgOTgzMzMzLCAKKyAgICA3NDU0NywgMTI2NTg1LCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIAorICAgIDc4MDk5LCAxMjcwODUsIDAsIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAKKyAgICAwLCA0MjUzMywgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDk4MzE0MSwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAKKyAgICAwLCA3OTEsIDkxNjIsIDY5NzcsIDAsIDc4ODg5LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIAorICAgIDk4MzQ0MSwgNzU1NywgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIAorICAgIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIAorICAgIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgCisgICAgNzgwODMsIDEyODgyNCwgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzEzMDIsIDQ0MDgsIDQxMjIsIDY3NzIsIAorICAgIDExMDM5LCA4NzIzLCAxOTQ5OTAsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIAorICAgIDExOTMwMCwgMTE5Mjk5LCAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgCisgICAgMCwgMCwgNDE5NTIsIDAsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgCisgICAgMTk5MTUsIDUyNzcsIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgCisgICAgMTI3MSwgOTgzNjMxLCAwLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDc0NTM5LCAwLCAzODc5LCAwLCAxMjk3OCwgNDE2NiwgCisgICAgNDU3NCwgMCwgNzU2NywgNzQ1OSwgOTgzMTYwLCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgCisgICAgOTgzOTAzLCAwLCA0MTM4OCwgNjQ0NDYsIDQxMzkyLCA2NDI4OCwgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDk4MzE4NywgNzAwLCAKKyAgICAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCAwLCAxMDI2MywgNTU1NCwgMCwgCisgICAgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgOTI2MjYsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIAorICAgIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDE5NTA2NywgCisgICAgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgOTgzNjQwLCA0MjY5LCAKKyAgICA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMCwgOTIyNzMsIDY2NTgwLCAxMTg4OTUsIDY2NjgzLCAxMDU1NCwgCisgICAgOTE3Nzc4LCAxMTkxMjEsIDAsIDUwOTgsIDkxNzc3MCwgMCwgMTE5MDk5LCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgCisgICAgMTI4ODcwLCA5ODM2OTIsIDM2NTEsIDAsIDEyMDczMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIAorICAgIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCA3ODM3MywgMTQ0MSwgCisgICAgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgMTIwNzkwLCAKKyAgICAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDEyNjU0MywgMCwgMjY3NiwgMjI3NywgCisgICAgMCwgNzM4MTIsIDYxOTAsIDg1OTksIDE5NTA1MywgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIAogICAgIDkyNjIwLCAxMjEyOSwgMCwgODQ4MSwgMCwgNjIwMiwgMTk1MDM1LCAxMDkyMCwgMTI4MjM3LCA1MjAzLCAxOTUwMzksIAogICAgIDE5NTAzOCwgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAwLCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIAotICAgIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDAsIDUxMDMsIDEyNzg2MSwgCi0gICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgMCwgMTAxNTcsIDAsIDQzMDM0LCAxMTQzOCwgMCwgMCwgCi0gICAgOTI2OTQsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgMTk1MDMwLCAKLSAgICA2OTcyMCwgNjQ3NiwgNTEwNCwgMCwgMzA0LCAzMTc2LCAwLCAwLCA5MzIsIDEyODY2MywgNjU2NywgMjM4LCA2OTY1NiwgCi0gICAgMTk1MDExLCAxOTQ1OTUsIDE5OTA1LCAxMjA1NzcsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgMTk0OTAyLCAKLSAgICA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAxOTUwMTksIDg4MDMsIDMwOSwgCi0gICAgNjYyMiwgODE1MSwgMTA4NTgsIDE5NDU5NiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCAKLSAgICA5NzEyLCA2ODY4MCwgNDM5NzAsIDAsIDY1MTY1LCA5MjcyNSwgMCwgNjY0NjYsIDAsIDAsIDAsIDY2NzI1LCA2MTkxLCAKLSAgICAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgMCwgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIAotICAgIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIAotICAgIDAsIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxOTUwMjAsIDAsIDc3ODEsIDQxMzgzLCA2NDU2OCwgMCwgMTIwNzM4LCAxMjA3NywgCi0gICAgMCwgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCAxMjgwMzUsIDI0NzksIDAsIDM2MzIsIDEyMDcyOCwgCi0gICAgMTA2OTgsIDgzNzYsIDM2NDgsIDE5NDk2MCwgNzQ4NDQsIDY3NjM5LCAzNjM2LCA2Nzg5NCwgMzY1MCwgODgzNywgNjUyMjksIAotICAgIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA5MTc2MzAsIDM2NDAsIDEyNzE5MCwgNDIzMjEsIAotICAgIDcyODQsIDE5NDk3NCwgMTk0OTczLCAxOTQ5NTAsIDE5NDk0OSwgMTk0OTUyLCAxOTQ5NTEsIDAsIDE5NDk1MywgNDIwODAsIAotICAgIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCAKLSAgICA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDAsIDY1MjY0LCAwLCAwLCA5MjU0NSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIAotICAgIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyODgyMSwgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMCwgCi0gICAgNDE5ODQsIDkyMTcsIDAsIDAsIDAsIDkxODYsIDIwNjcsIDQwMTYsIDAsIDAsIDM4MSwgMCwgMCwgNDIwNzcsIDAsIAotICAgIDEyNzQ4MywgNTE4NCwgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAKLSAgICAwLCA4MTIsIDM2MTUsIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIAotICAgIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDAsIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDc4Nzg5LCAKLSAgICA2NzYzMiwgOTE3OTI0LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCAwLCA3MzkzMywgNjc2MjYsIDQyNDAxLCAwLCAwLCAxMjczNzMsIAotICAgIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCAKLSAgICA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCAKLSAgICA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgMCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIAotICAgIDAsIDEyNzU2LCA2NTI1OSwgMCwgMCwgMTI3NTIsIDU4MzMsIDE0MzIsIDAsIDQxODgzLCA3MzkxMiwgOTc5OSwgMCwgCi0gICAgNDE4ODYsIDI0ODAsIDAsIDIwNjIsIDEyNzI5MywgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMCwgMTIxMSwgMCwgCi0gICAgMCwgMCwgMTE4ODMyLCAxMjMxOCwgMCwgMCwgMCwgMTA2MjIsIDAsIDAsIDc4NjU0LCA2NTY2LCA3ODY1OSwgMCwgNzM3ODAsIAotICAgIDAsIDY0ODY0LCAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgCi0gICAgNDI2NSwgNjY0MiwgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIAotICAgIDEyOTI2LCAwLCA3NTI4LCAxMDU1MCwgMCwgOTI3MDYsIDAsIDExNDM5LCAwLCAxMzc0LCA2NDg3OCwgMTE5MDE0LCAwLCAKLSAgICA0MjM4OSwgNDEzNzQsIDAsIDAsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAwLCA0MDAsIDEyNTk3LCAxMjA1ODYsIDAsIDAsIAotICAgIDY2NjEsIDAsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAwLCA3NDc1NSwgMCwgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIAotICAgIDAsIDAsIDAsIDExOTY5LCAwLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDAsIDgwODAsIDcwMDYsIDAsIDAsIDY3NTcsIAotICAgIDY0MzUxLCAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCAwLCA2MTQ2LCAwLCA3NzEsIDAsIDAsIDEyODEyLCAxMzE2OCwgCi0gICAgNDIyNzIsIDEyMjAwLCA5MTc5MjcsIDc5MDQsIDAsIDk1MywgMTI5MTcsIDExOTU2MCwgMTIzMDAsIDAsIDExNDkxLCA5NzI0LCAKLSAgICAxMDM0MSwgMCwgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIDQ3MSwgNzQ4NCwgNzQ4MiwgCi0gICAgNjc1MywgNzQ4MCwgNzQ3OSwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgCi0gICAgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDc4ODg0LCAzNTQ0LCAwLCA2MDE3LCAKLSAgICA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIDEyMDU0NCwgMCwgMCwgCi0gICAgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIAotICAgIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgMTIwMDAwLCAKLSAgICAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAwLCAwLCAwLCAwLCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCAKLSAgICAxMjgzMDgsIDAsIDAsIDgzMzAsIDAsIDAsIDQyNzk3LCAwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIDE3NzAsIDAsIDEyODg2NiwgCi0gICAgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDExODkyOCwgMTExOCwgOTIyMDksIAotICAgIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCA3MjUyLCAwLCA1OTk2LCAwLCA0OTAzLCAwLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKLSAgICAxMzMwLCAwLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCA2NDc3NywgCi0gICAgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgMCwgMTI3MTUsIDEyODM0OSwgMCwgMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCAKLSAgICA2NjY4NSwgMTE5MTU3LCAwLCA5MjQ2NCwgMCwgMTI2OTg0LCAwLCA5MzM0LCA5MjcwNSwgOTIzMTUsIDAsIDc5NzUsIDAsIAotICAgIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgMCwgMCwgMCwgMCwgMjM0NSwgCi0gICAgNDM2OTcsIDQ2MywgMCwgMCwgMTE5NjA3LCAzMTE3LCA1NDYwLCAwLCAwLCAwLCAwLCA0MjI3OSwgMTk0NTc3LCAwLCAKLSAgICA3ODQxNSwgMCwgMTk1MDA4LCAwLCAxMzI0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2MywgMCwgMCwgMCwgMCwgMjQ4MiwgCi0gICAgMTQ3MSwgMCwgMCwgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDAsIDEyMzc0LCAwLCAwLCAwLCAwLCAyNDYwLCAwLCAKLSAgICAxMTk0NCwgMTIzNzYsIDEyNzg2OCwgNjQ2NzksIDAsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDAsIDIwMjQsIAotICAgIDEyNzE4MCwgMCwgMCwgNTM5LCAwLCAxMjc3NjUsIDAsIDM4NTMsIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCAKLSAgICA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDkyNTc5LCA5NTAzLCAxOTQ5NjksIDI0NzgsIDAsIDQxNjIsIDAsIDQyNjAsIAotICAgIDEyOTUzLCA2OTYzMywgMTIwMDg5LCAxMjQ3MCwgMCwgNzQxODksIDI3NDIsIDEyNDc2LCAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgCi0gICAgNTAwMCwgMCwgMCwgMCwgNjk2NzIsIDgyMTMsIDc0MDE3LCA3NzcxLCA2MTYxLCAwLCA2NzA5LCAwLCA3ODg4NSwgMCwgCi0gICAgMTI3OTcxLCAxMjA1ODIsIDc4NTQ3LCAwLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAwLCAwLCA3Mzc5MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAwLCAwLCAxMjIxMCwgNzIyMSwgCi0gICAgNDIxNDcsIDAsIDc0NTUwLCA3NDQ2NSwgNjQ3NDcsIDExODg0MSwgMCwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgCi0gICAgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIDM1OTEsIDQxOTY5LCAwLCAyNDUzLCAxMjg1NDksIAotICAgIDkyNjY2LCA2NDcwNSwgMCwgMCwgMTAzNDksIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAwLCA4MzE2LCAwLCAKLSAgICAwLCAwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAxMTk4MDksIDQ4ODMsIDI4NSwgNDcyMywgNzc5MjcsIAotICAgIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDAsIDk3NDMsIAotICAgIDEyMDIzMiwgMTMxMzQsIDAsIDAsIDAsIDAsIDAsIDQyNjM0LCAwLCA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMCwgCi0gICAgMTA0NDUsIDAsIDAsIDY2NzE3LCAyNjE0LCA5MTI1LCAxMTkwMjMsIDE3MjksIDAsIDEyMDIzNiwgNjUyMjEsIDYzODgzLCAKLSAgICA0MzMzNCwgNjQ4NTIsIDAsIDEyMDIzNSwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIAotICAgIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzQxODIsIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgCi0gICAgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIDAsIDAsIDAsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKLSAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3NCwgMTE5MDk2LCAxOTkyOSwgMCwgMTk0NTc0LCAwLCA0MjQyLCA0MjY0LCAxMjAwNzcsIAotICAgIDEyODEzMiwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgMCwgOTc1NCwgMTE5MTAyLCAKLSAgICA0NDM3LCA3Mzk0OCwgMTI4NjkyLCAwLCA1NTI4MCwgNDIxNzQsIDE5NDkyNSwgNDI0MzAsIDAsIDAsIDQyMzU1LCA2NjAyNiwgCi0gICAgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgMCwgNjY2NjcsIDEyNzMwOSwgMCwgMCwgNDIyMDAsIDQyNTY2LCAwLCAwLCAKLSAgICA1MDg4LCA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgCi0gICAgNjUwMzksIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgCi0gICAgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgCi0gICAgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAwLCAwLCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIAotICAgIDMzMSwgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDAsIDEyMzc5LCAxOTQ4NzcsIDEyMDgxOCwgCi0gICAgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDAsIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgNzg1NDksIDQxMjIwLCAKLSAgICAxMzAzMiwgMCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCAwLCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDAsIAotICAgIDE5MzAsIDAsIDc4MjI5LCAxMjQyNywgNjY1MTQsIDAsIDEzMDMxLCAwLCA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgCisgICAgNjY1NywgMjA3LCAxMjg4MDYsIDQyNzUsIDc0ODE5LCA4NTQsIDY4MTQ3LCA3NDM4MSwgMCwgNzg3ODYsIDUxMDMsIAorICAgIDEyNzg2MSwgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAwLCA0MzAzNCwgCisgICAgMTE0MzgsIDY0Njc0LCAwLCA5MjY5NCwgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIAorICAgIDQxMzY3LCA1MTA1LCAxMjc1MDksIDY5NzIwLCA2NDc2LCA1MTA0LCA5ODM3NDAsIDMwNCwgMzE3NiwgMTE5MDEwLCAwLCAKKyAgICA5MzIsIDEyMDYzMywgNjU2NywgMjM4LCA2OTY1NiwgMTk1MDExLCAxOTQ1OTUsIDE5OTA1LCAxMjA1NzcsIDE5NTAxNSwgCisgICAgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgMTk0OTAyLCA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIAorICAgIDEyNTUyLCAxOTUwMTksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgMCwgMTI1NjgsIDAsIAorICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgOTgzMTk4LCA2NTE2NSwgOTI3MjUsIDAsIAorICAgIDY2NDY2LCAwLCAwLCAwLCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAwLCA0MTc1NCwgCisgICAgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDk3NSwgNjg0NjIsIDgyMzIsIDExODgxNywgMCwgMzIyMiwgMCwgMCwgMCwgNjY2NjMsIAorICAgIDAsIDAsIDEwODM0LCAwLCAwLCA2NTczMiwgOTQwOTUsIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxOTUwMjAsIDAsIDc3ODEsIAorICAgIDQxMzgzLCA2NDU2OCwgMCwgMTIwNzM4LCAxMjA3NywgMCwgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCAKKyAgICAxMjgwMzUsIDI0NzksIDAsIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDE5NDk2MCwgNzQ4NDQsIDY3NjM5LCAKKyAgICAzNjM2LCA2Nzg5NCwgMzY1MCwgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCAKKyAgICA5MTc2MzAsIDM2NDAsIDEyNzE5MCwgNDIzMjEsIDcyODQsIDE5NDk3NCwgMTk0OTczLCAxOTQ5NTAsIDE5NDk0OSwgCisgICAgMTk0OTUyLCAxOTQ5NTEsIDEyNjY0OSwgMTk0OTUzLCA0MjA4MCwgMjUyOSwgMCwgMCwgMCwgNDIwODMsIDEyMDY3OCwgCisgICAgNjgzOTgsIDE5NDk1NywgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgCisgICAgNDI5NSwgNjUyNjQsIDY4MDA2LCAwLCA5MjU0NSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgCisgICAgNjQzODMsIDEyMDI2NSwgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMCwgNDE5ODQsIDkyMTcsIDAsIDAsIAorICAgIDAsIDkxODYsIDIwNjcsIDQwMTYsIDk4Mzc5NCwgMCwgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDAsIDY5ODgwLCA1MTg0LCAKKyAgICA0MjA3OCwgMTk0OTQ3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgNjc2MzMsIDAsIDAsIDgxMiwgMzYxNSwgCisgICAgMCwgNTE3OCwgNDQwMDAsIDEyMDU0OCwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIAorICAgIDY0NDI5LCA0MjYzOSwgOTI0LCAwLCA2NzYzMSwgNDI2MTYsIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDc4Nzg5LCA2NzYzMiwgCisgICAgOTE3OTI0LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMCwgNjk4NzIsIAorICAgIDEyNzM3MywgNDIyODgsIDEyNzUxLCAwLCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIAorICAgIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgMCwgNDExMTcsIDAsIDkyNTgwLCAwLCAwLCA2NzYyNCwgMCwgMTI5MCwgMCwgNjU1ODUsIAorICAgIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCA5MTc4ODMsIDEzMTgsIDY0NzMxLCAxMjY1NzgsIDAsIDAsIDY2MzI1LCAzNDY1LCAKKyAgICAyNDA1LCA5MjQwLCAwLCAxMjc1NiwgNjUyNTksIDAsIDk4Mzc3MiwgMTI3NTIsIDU4MzMsIDE0MzIsIDAsIDQxODgzLCAKKyAgICA3MzkxMiwgOTc5OSwgMCwgNDE4ODYsIDI0ODAsIDAsIDIwNjIsIDEyNzI5MywgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIAorICAgIDE5NDU4NywgMCwgMTIxMSwgMCwgMCwgMCwgMTE4ODMyLCAxMjMxOCwgMCwgMCwgNjgwMDUsIDEwNjIyLCA5ODM3NzAsIDAsIAorICAgIDc4NjU0LCA2NTY2LCA3ODY1OSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCA4Mjg0LCAxMzA4MSwgMCwgCisgICAgMzU4OSwgNDIwNTEsIDQwMzUsIDY0OTIsIDkyMjM2LCA0MjY1LCA2NjQyLCAzOTc3LCA3NDE4NiwgNDE3NzgsIDgzNiwgCisgICAgMTE5MjE2LCAyNDg4LCAwLCA0NTgyLCAwLCAwLCA0MTc3NywgMTI5MjYsIDk4MzM2OSwgNzUyOCwgMTA1NTAsIDAsIDkyNzA2LCAKKyAgICAwLCAxMDk2MSwgMCwgMTM3NCwgNjQ4NzgsIDExOTAxNCwgMCwgNDIzODksIDQxMzc0LCAyMjg2LCAwLCA3ODQ5MiwgNDEzNzcsIAorICAgIDEyNzkwOSwgMCwgNDAwLCAxMjU5NywgMTIwNTg2LCAwLCAwLCA2NjYxLCA5ODMxNDUsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKKyAgICAwLCA3MTMwMSwgOTgzODUzLCAzNDczLCA3NzE4LCAwLCAwLCAwLCA1NTI4NSwgMCwgMCwgMCwgMTE5NjksIDk4MzM4MiwgCisgICAgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCA5ODMzNjIsIDgwODAsIDcwMDYsIDAsIDk4MzM2MywgNjc1NywgNjQzNTEsIAorICAgIDE1NDQsIDAsIDY3NjYsIDY0Njc3LCAxMjA3MTYsIDk4MzM2NCwgNjE0NiwgMCwgNzcxLCA5ODMzNjUsIDAsIDEyODEyLCAKKyAgICAxMzE2OCwgNDIyNzIsIDEyMjAwLCA5MTc5MjcsIDc5MDQsIDAsIDk1MywgMTI5MTcsIDExOTU2MCwgMTIzMDAsIDAsIAorICAgIDExNDkxLCA5NzI0LCAxMDM0MSwgOTgzNzY0LCA5NTI0LCA3NDkwLCAxMTM4OSwgNzQ4OSwgMzM3OSwgMCwgNzQ4NywgMCwgCisgICAgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCAKKyAgICA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIAorICAgIDM1NDQsIDAsIDYwMTcsIDY1MzExLCAxMjc0ODEsIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgMCwgCisgICAgMTIwNTQ0LCAwLCAwLCA5MjY2MCwgMCwgMCwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMCwgMjEzOSwgNDI1NiwgCisgICAgMTIwNzc2LCA3NDM4MCwgMCwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgMCwgMCwgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIAorICAgIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAwLCAwLCAwLCAwLCA3MTg2LCAwLCAxMjA1NTUsIDAsIAorICAgIDQ0NSwgMTIwNTY2LCAxMjgzMDgsIDAsIDAsIDgzMzAsIDAsIDAsIDQyNzk3LCA5ODMxNTAsIDEyMDIxNSwgMCwgMzkwMiwgMCwgCisgICAgMTc3MCwgMCwgMTI4ODY2LCAxNTYwLCAxMjAyMDksIDE5NDk3MiwgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgCisgICAgMTE4OTI4LCAxMTE4LCA3MTMzNCwgMCwgMCwgMTA4MSwgNzQzNiwgNjg0MjAsIDcyNTIsIDAsIDU5OTYsIDY5OTIxLCA0OTAzLCAKKyAgICAwLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAxMzMwLCAwLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIAorICAgIDYzMjQsIDQxOTc1LCA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgOTgzNzMyLCAxMjcxNSwgNjgwMDIsIAorICAgIDk4MzQ3MSwgMTI2NjMwLCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA5MjQ2NCwgMCwgCisgICAgMTI2OTg0LCA2ODAwMSwgOTMzNCwgOTI3MDUsIDkyMzE1LCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDY2NjIxLCA0ODg0LCAKKyAgICA2NjU5NywgNjk3MzIsIDAsIDAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMCwgCisgICAgMTE5NjA3LCAzMTE3LCA1NDYwLCAwLCAwLCA5ODMzNzksIDAsIDQyMjc5LCAxOTQ1NzcsIDAsIDc4NDE1LCAwLCAxOTUwMDgsIAorICAgIDk4MzM3NiwgMTMyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NjMsIDAsIDAsIDAsIDAsIDI0ODIsIDE0NzEsIDAsIDAsIAorICAgIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAxMjM3NCwgMCwgMCwgMCwgOTgzNjg1LCAyNDYwLCAwLCAxMTk0NCwgCisgICAgMTIzNzYsIDEyNzg2OCwgNjQ2NzksIDAsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDAsIDIwMjQsIDEyNzE4MCwgMCwgCisgICAgMCwgNTM5LCAwLCAxMjc3NjUsIDk0MDUyLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgOTIzMjQsIDAsIAorICAgIDg2NTksIDAsIDEyNDc0LCA5MjU3OSwgOTUwMywgMTk0OTY5LCAyNDc4LCAwLCA0MTYyLCAwLCA0MjYwLCAxMjk1MywgCisgICAgNjk2MzMsIDEyMDA4OSwgMTI0NzAsIDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIAorICAgIDAsIDk4MzU3OSwgMCwgNjk2NzIsIDgyMTMsIDc0MDE3LCA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgMCwgNzg4ODUsIAorICAgIDk4MzY5OSwgMTI3OTcxLCAxMjA1ODIsIDc4NTQ3LCAwLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAwLCAwLCA3Mzc5MSwgMCwgMCwgCisgICAgMCwgMCwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIDk4MzI1NiwgMCwgCisgICAgMTIyMTAsIDcyMjEsIDQyMTQ3LCAwLCA3NDU1MCwgNzQ0NjUsIDY0NzQ3LCAxMTg4NDEsIDAsIDEyNTE2LCA0NDQ0LCAwLCAKKyAgICA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAzNTkxLCA0MTk2OSwgMCwgCisgICAgMjQ1MywgMTI4NTQ5LCA5MjY2NiwgNjQ3MDUsIDAsIDAsIDEwMzQ5LCAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCAKKyAgICA3NDM1MywgMCwgODMxNiwgMCwgMCwgOTQwNjAsIDY4NywgMCwgMCwgMCwgMTg0MCwgMCwgNjg2NzEsIDExOTgwOSwgNDg4MywgCisgICAgMjg1LCA0NzIzLCA3MDA5OSwgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCAKKyAgICA0MjMyMywgMCwgOTc0MywgMTIwMjMyLCAxMzEzNCwgMTI2NTM1LCAwLCAwLCAwLCAwLCA0MjYzNCwgOTgzMzM1LCA0MzQzNywgCisgICAgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMCwgMTA0NDUsIDAsIDAsIDY2NzE3LCAyNjE0LCA5MTI1LCAxMTkwMjMsIDE3MjksIAorICAgIDAsIDEyMDIzNiwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDAsIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIAorICAgIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3NDE4MiwgCisgICAgMTI3OTE1LCA2NDMsIDMwODYsIDAsIDQyNDQ4LCA0MjI5OSwgNTgsIDAsIDkxNzk1MiwgMTIwMDgzLCA2Mzg3MywgODQ5MSwgCisgICAgMCwgMCwgMCwgNDUzMCwgNDI0MDksIDcxMjYsIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAxMTkwOTYsIDE5OTI5LCAwLCAKKyAgICAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIAorICAgIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzIzMiwgNTUyODAsIDQyMTc0LCAKKyAgICAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAKKyAgICAxMjczMDksIDAsIDEyNjUyMSwgNDIyMDAsIDQyNTY2LCAwLCAwLCA1MDg4LCA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgCisgICAgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIAorICAgIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAKKyAgICAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIAorICAgIDEyMzc3LCA5ODM4MjMsIDk4MzgyNSwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgCisgICAgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAxMjA4MTgsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIAorICAgIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDc4NTQ5LCA0MTIyMCwgMTMwMzIsIDAsIDU4NCwgCisgICAgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgCisgICAgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgCiAgICAgNjAwMCwgMTE5MjA2LCAxMjQyNiwgMTI3MTgxLCAwLCA0MTc0MCwgMTI0MjgsIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAwLCAwLCAKICAgICAxMjQyOSwgNjcyNywgMCwgNzU2MiwgMCwgNTE3MCwgMCwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCAKICAgICA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIDYxNjIsIDAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAKQEAgLTE2NDIxLDcwNiArMTczMzEsNzMxIEBACiAgICAgMCwgNjM4NjcsIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDAsIDc0NTYwLCA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCAKICAgICA3ODUwNCwgNjcwNCwgNDU5MSwgMTI4MDI5LCAwLCAwLCA5NjgwLCAwLCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgNzg1MDgsIAogICAgIDQxNTAxLCAwLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIDAsIDQxNDk5LCAwLCAwLCA0MjI0MiwgNDE0OTgsIAotICAgIDkxNzc5NCwgNDIwMjUsIDc4NTY3LCA2NTgwNSwgNDI0NjMsIDAsIDI5MjQsIDAsIDEyMDUxMCwgMCwgMCwgMTE5MjEzLCAKKyAgICA5MTc3OTQsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCAwLCAyOTI0LCAwLCAxMjA1MTAsIDAsIDAsIDExOTIxMywgCiAgICAgNzM5NDEsIDAsIDQyMzMwLCA5MTc3ODQsIDM5NjksIDAsIDAsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCAKLSAgICA0MjA4NiwgOTE3NzkwLCA5MTc3ODksIDAsIDAsIDEyODgwMSwgMCwgMCwgMzI3LCAwLCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgCi0gICAgNjUxNDgsIDEyNDMzLCA5MTc3ODEsIDEyNzI3NiwgOTE3Nzc5LCAxMjQzMSwgODY2OCwgMTI0MzQsIDAsIDkxNzc4MiwgCi0gICAgNTk5OSwgMCwgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDAsIDgyMTIsIDAsIDEyODAxNCwgCi0gICAgNDI0MjMsIDExOTA2NiwgMCwgMTI4MTA4LCA2NjcwOSwgMCwgODgxMSwgOTI3LCAwLCAwLCAxMjQzNiwgMCwgNDIwMjEsIDAsIAotICAgIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMCwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgCi0gICAgMCwgMCwgMTk5MTQsIDEyMTc5LCAwLCA5NjQ4LCAxOTQ5MjMsIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIAotICAgIDI1OTQsIDM0NDQsIDYzODE3LCA2NDY1MSwgMCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDAsIDEyMDc1NiwgMTk0OTIyLCAwLCAKLSAgICA1NjY0LCAzOTcyLCAwLCAwLCAwLCAxMjg1MDgsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgCi0gICAgOTE3NzY4LCAxMjQxOCwgNzQxMTEsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgMTI4NjQ4LCAxMTk4NDcsIDQ1OTYsIAotICAgIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxOTQ3ODIsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgCi0gICAgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgMCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDAsIAotICAgIDExNzI0LCAwLCAwLCAxMjcxMDQsIDEyODUyNiwgMCwgMCwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAxMTQwMCwgCi0gICAgNzQxOTcsIDE5NDc5OSwgMCwgMTI4MjM5LCAwLCAxMjg4ODEsIDExOTYwNCwgMTI3NTIzLCAxMjAxOTAsIDE5NDc3MywgCi0gICAgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDAsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIDY4NjUxLCAwLCAwLCAKLSAgICAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIAotICAgIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCAwLCAzMDE0LCA1MDgxLCA2NTg1MywgMTIwNzE1LCAwLCAxMjAxODMsIAotICAgIDc4MjE5LCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCA3ODQ0NCwgMTIwMTg1LCAxMjM3MSwgMCwgODQwNywgMCwgCi0gICAgMTA4MDUsIDg1MTgsIDEwNzc5LCAxMjAxODgsIDAsIDAsIDEyMzY3LCA0MjE3MCwgMCwgOTI1NTcsIDYyOSwgMTkyNCwgMCwgCi0gICAgMTIwMzcsIDc0MzY2LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAKLSAgICAxMDY0OSwgMCwgNTA3NywgMTI3MTA4LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDkxNzg4MSwgMCwgNjUwNzUsIDAsIDExMDA3LCAKLSAgICAwLCA2NjY1OSwgOTI2MDcsIDAsIDY2Njg0LCAwLCAzNDM0LCA0OTU0LCAxOTA0LCAwLCA1MjY2LCAxMjY5ODAsIDUyNzIsIAotICAgIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxOTQ5MjYsIDQ2MSwgOTgwMywgMCwgCi0gICAgNDUwNCwgMTUwNSwgMCwgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDAsIDY2NDYxLCA1MTc3LCAKLSAgICA0MTMyNCwgMTIwNTUsIDg3MjIsIDAsIDQxMzI3LCAwLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCAKLSAgICA0MTMyNSwgMCwgNzIxLCAxMDE4MiwgOTEwOCwgMCwgMCwgMTE5MTg1LCA0MjIyOSwgMTk0OTEyLCAwLCA1OTk4LCAwLCAKLSAgICA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAwLCA3ODU3MSwgMCwgMCwgMTk0NTYyLCA0MTU3NiwgNDIyMTUsIDc4NTcwLCAKLSAgICAxMTkyMDcsIDAsIDg1NzgsIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIAotICAgIDI2NzAsIDQxNjcsIDAsIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgCi0gICAgMCwgMCwgMCwgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAotICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAotICAgIDQyMDAyLCAxMjQwNCwgMCwgMCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAwLCA4NjEsIDAsIDAsIAotICAgIDAsIDAsIDY1NTc3LCA0MzM3MCwgMCwgMCwgMTE5NTYsIDAsIDAsIDAsIDk2MTYsIDY2MzEsIDAsIDEyODE2LCA3NDU4MywgCisgICAgNDIwODYsIDEyNjYxNSwgMjIxOSwgMCwgMCwgMTI4ODAxLCAxOTQ4MzcsIDAsIDMyNywgMCwgOTA0MiwgOTE3Nzc3LCAKKyAgICA5MTc3NzYsIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA5ODM4MjYsIAorICAgIDkxNzc4MiwgNTk5OSwgMCwgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDAsIDgyMTIsIDAsIAorICAgIDEyODAxNCwgNDI0MjMsIDExOTA2NiwgMCwgMTI4MTA4LCA2NjcwOSwgMCwgODgxMSwgOTI3LCAwLCAwLCAxMjQzNiwgCisgICAgOTgzMjM5LCA0MjAyMSwgMCwgMCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAwLCA3ODE5NywgCisgICAgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCA5ODMxODQsIDAsIDE5OTE0LCAxMjE3OSwgOTgzODAzLCAyMjk2LCAxOTQ5MjMsIAorICAgIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIDI1OTQsIDM0NDQsIDYzODE3LCA2NDY1MSwgMCwgNDE1MDMsIAorICAgIDEyNzQ3OCwgMTEyNjUsIDAsIDEyMDc1NiwgMTk0OTIyLCAwLCA1NjY0LCAzOTcyLCAwLCAwLCAwLCAxMjg1MDgsIDEyNDE2LCAKKyAgICA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgOTE3NzY4LCAxMjQxOCwgNzQxMTEsIDM4ODIsIDg1MzIsIDkxNzc3MSwgCisgICAgMTU3MywgMTI4NjQ4LCAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCAKKyAgICA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgMCwgCisgICAgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDAsIDExNzI0LCAwLCAwLCAxMjcxMDQsIDEyNjYxOSwgMCwgMCwgODAyNywgMTA5OTcsIAorICAgIDkxNzEsIDEyNzQxLCAxMTQwMCwgNzEzMDUsIDE5NDc5OSwgMCwgMTI4MjM5LCAwLCAxMjg4ODEsIDExOTYwNCwgMTI3NTIzLCAKKyAgICAxMjAxOTAsIDE5NDc3MywgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDAsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIAorICAgIDY4NjUxLCAwLCA5ODM4ODYsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwOSwgCisgICAgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCAxMjAxODQsIDg1MTksIDk4MzIzNSwgMzAxNCwgNTA4MSwgNjU4NTMsIAorICAgIDEyMDcxNSwgMCwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAKKyAgICAxMjM3MSwgMCwgODQwNywgMCwgMTA4MDUsIDg1MTgsIDEwNzc5LCAxMjAxODgsIDcxMzAzLCA5ODM5MjQsIDEyMzY3LCAKKyAgICA0MjE3MCwgMCwgOTI1NTcsIDYyOSwgMTkyNCwgMCwgMTIwMzcsIDc0MzY2LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgCisgICAgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAxMDY0OSwgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCAKKyAgICA1MDc1LCA5MTc4ODEsIDAsIDY1MDc1LCAwLCAxMTAwNywgOTgzNjk2LCA2NjY1OSwgOTI2MDcsIDAsIDY2Njg0LCAwLCAKKyAgICAzNDM0LCA0OTU0LCAxOTA0LCAwLCA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgCisgICAgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxOTQ5MjYsIDQ2MSwgOTgwMywgMCwgNDUwNCwgMTUwNSwgMCwgNjMyNSwgCisgICAgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDAsIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDAsIAorICAgIDQxMzI3LCAwLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgMCwgNzIxLCAxMDE4MiwgOTEwOCwgCisgICAgNzEzMTEsIDAsIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCisgICAgOTQxMDQsIDc4NTcxLCAwLCA3MTMyOCwgMTk0NTYyLCA0MTU3NiwgNDIyMTUsIDc4NTcwLCAxMTkyMDcsIDAsIDg1NzgsIAorICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCisgICAgMTE3MjMsIDAsIDc0MTIwLCAwLCA2NTA3NiwgOTM4LCA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCAwLCAwLCAwLCAKKyAgICAxMTc0MiwgMjQxOSwgMCwgMTE0OTMsIDEyMzM0LCAxOTQ5MTMsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgMTI0MDcsIAorICAgIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgNDIwMDIsIAorICAgIDEyNDA0LCA5ODM1NTMsIDAsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCA4NjEsIDAsIAorICAgIDAsIDAsIDAsIDQzNzU3LCA0MzM3MCwgMCwgMCwgMTE5NTYsIDAsIDAsIDAsIDk2MTYsIDY2MzEsIDAsIDEyODE2LCA0Mzc1OSwgCiAgICAgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIDY2MTg1LCAwLCA1OTkyLCA3NjE2LCAxOTUwNDQsIDAsIDEyNTc3LCAKLSAgICAwLCAwLCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDAsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIDk0OTEsIDkxNzkxMywgCi0gICAgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgMTIwNzk3LCA5OTAwLCAwLCAwLCAxOTQ5MTksIDAsIAotICAgIDEyNzgzMCwgMCwgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgMCwgMCwgMCwgNzc4MjQsIDAsIDQ5MDAsIAotICAgIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCA3NDc2OCwgODk3MSwgNzg1OTMsIDQzMTEzLCA5NzAyLCA3ODU5NCwgCi0gICAgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDAsIAotICAgIDEzMDU0LCAxMjM5NCwgMCwgMCwgMCwgMTMwNTMsIDAsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgCi0gICAgNzg1OTAsIDc4NTgzLCAwLCAwLCAwLCAxOTQ5MTUsIDcyNjcsIDAsIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIDAsIAotICAgIDEyNzA2LCA3Nzg0MCwgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDAsIDYzOTk3LCA2MzkxMCwgCi0gICAgNjM5OTYsIDMwNzcsIDAsIDAsIDE1MTIsIDAsIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCA0MzMzOSwgMCwgOTgzNiwgCi0gICAgMTIwNzI3LCAwLCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCAKLSAgICAxMjg4NDEsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDEyNzE0MCwgMTIwMDIwLCA0MjMwNywgMTIzODYsIDQyMzA0LCAKLSAgICA5MTc1NTUsIDAsIDEyMzg5LCAwLCA5MjM2NiwgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNjM5OTIsIAotICAgIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgMCwgNDkzOSwgCi0gICAgMTIzODQsIDAsIDAsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAxOTQ2ODgsIDAsIDAsIDEyNjQ5LCAwLCAwLCA4MjQ3LCA1MDcsIAotICAgIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAKLSAgICAxMTk4MzEsIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgMCwgMTE5NjAwLCAwLCAKLSAgICAwLCA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIDk2ODcsIDQxNjgxLCAKLSAgICA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIDAsIDc1MzQsIAotICAgIDEyMjE5LCAwLCAxMjc1MjgsIDQyODEwLCAxMDQ5MiwgMCwgMCwgMCwgNDMxMTksIDAsIDEyMDc1MywgMTI0MDMsIDI1MDAsIAotICAgIDE5NTAxMywgMCwgNDg5OSwgMTI3MjksIDAsIDAsIDc0MTEzLCAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAKLSAgICAxMzExMiwgMCwgMTk1MDEyLCAxMjg1OSwgMCwgMTIwMTQ4LCA2NjM2OSwgNTg2MSwgMTI3NzU4LCAxMTk5OSwgMTI0MDAsIDAsIAotICAgIDAsIDEyNjQ1LCA1MTQ2LCAxMTMyMCwgNjg0MTAsIDY3NDgsIDY1MDQwLCAwLCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgCi0gICAgMTIwNjQ1LCA1MTQ3LCAwLCAwLCA3NDUyNCwgMCwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCAKLSAgICA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIDAsIDc3ODY4LCA0MjA2LCAwLCAwLCAwLCAxMjgyOTgsIDAsIDEwMTM4LCAwLCAwLCAKLSAgICA4ODk3LCAwLCAwLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgCi0gICAgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIAotICAgIDc5NDUsIDAsIDQ0MDIsIDk5NzAsIDEyNDAyLCAwLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDAsIDQ0MDA3LCAwLCAwLCA0MTQ2NCwgCi0gICAgMTI0MTEsIDEyOTY5LCAxMjA4MjQsIDQxNDY1LCAwLCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCi0gICAgMTE5MTYzLCAwLCA5MDkzLCAwLCA5MTQ3LCAwLCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDczNzc2LCA2NzUwLCAKLSAgICAxOTUwMTgsIDAsIDk1OTQsIDAsIDAsIDQzNTI3LCAwLCA3MjcsIDE5NDcwMywgMCwgNTgwNSwgMCwgNjcyNiwgMCwgNDIxNzYsIAotICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMTIzNjQsIDAsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgMCwgOTIzNDMsIAotICAgIDAsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIDE5NDcwMSwgMTA4MDMsIAotICAgIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCAwLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgCisgICAgMCwgOTgzODc1LCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDk4MzYzOCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgCisgICAgOTQ5MSwgOTE3OTEzLCAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCAxMjA3OTcsIDk5MDAsIAorICAgIDc3NTAsIDAsIDE5NDkxOSwgMCwgMTI3ODMwLCAwLCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAwLCAwLCAKKyAgICAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIDc0NzY4LCA4OTcxLCA3ODU5MywgCisgICAgNDMxMTMsIDk3MDIsIDc4NTk0LCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIAorICAgIDEyMzk3LCA3NzgyNywgMCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAwLCAxMzA1MywgMCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIAorICAgIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIDAsIDAsIDAsIDE5NDkxNSwgNzI2NywgMCwgNzQ4MzMsIDEyODE4MSwgCisgICAgNTk5MywgMjgxOSwgMCwgMTI3MDYsIDc3ODQwLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgMCwgCisgICAgNjM5OTcsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCAKKyAgICA0MzMzOSwgMCwgOTgzNiwgMTIwNzI3LCAwLCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAKKyAgICAxNjY0LCAxODUwLCAxMjg4NDEsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDEyNzE0MCwgMTIwMDIwLCA0MjMwNywgCisgICAgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDAsIDEyMzg5LCAwLCA5MjM2NiwgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgCisgICAgMTE0NywgNjM5OTIsIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgCisgICAgMCwgNDkzOSwgMTIzODQsIDAsIDAsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAxOTQ2ODgsIDk4MzE5MCwgMCwgMTI2NDksIDAsIAorICAgIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIDEyMDc3NSwgNDM2NDMsIDE5NDY4OSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgCisgICAgMTE5ODEzLCA3NzQsIDExOTgyOSwgMCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCAKKyAgICA5ODMxMDUsIDExOTYwMCwgMCwgMCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIAorICAgIDQxMDczLCA5Njg3LCA0MTY4MSwgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIAorICAgIDQyMzc5LCAwLCA3NTM0LCAxMjIxOSwgMCwgMTI3NTI4LCA0MjgxMCwgMTA0OTIsIDAsIDk4MzY1MiwgMCwgNDMxMTksIDAsIAorICAgIDEyMDc1MywgMTI0MDMsIDI1MDAsIDE5NTAxMywgMCwgNDg5OSwgMTI3MjksIDAsIDAsIDc0MTEzLCAyMzQzLCA0MTAzLCAKKyAgICAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMCwgMTk1MDEyLCAxMjg1OSwgNzAwODcsIDEyMDE0OCwgNjYzNjksIDU4NjEsIAorICAgIDEyNzc1OCwgMTE5OTksIDEyNDAwLCAwLCA5ODM4MzAsIDEyNjQ1LCA1MTQ2LCAxMTMyMCwgNjg0MTAsIDY3NDgsIDY1MDQwLCAKKyAgICAwLCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCA1MTQ3LCAwLCAwLCA3NDUyNCwgMCwgMTkyOCwgMCwgCisgICAgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIDAsIDc3ODY4LCA0MjA2LCAwLCAKKyAgICAwLCAwLCAxMjgyOTgsIDAsIDEwMTM4LCAwLCAwLCA4ODk3LCAxMjAyMzQsIDAsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCisgICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAwLCAxMTIzLCA5NjMsIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgCisgICAgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgMCwgNDQwMiwgOTk3MCwgMTI0MDIsIAorICAgIDk4MzEzNiwgNDIzOTIsIDEzMDUsIDEyNDA4LCAwLCA0NDAwNywgMCwgMCwgNDE0NjQsIDEyNDExLCAxMjk2OSwgMTIwODI0LCAKKyAgICA0MTQ2NSwgOTgzNTY1LCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgMTE5MTYzLCAwLCA5MDkzLCAKKyAgICAwLCA5MTQ3LCAxMjg3ODcsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgNzM3NzYsIDY3NTAsIDE5NTAxOCwgMCwgCisgICAgOTU5NCwgMCwgMCwgNDM1MjcsIDAsIDcyNywgMTk0NzAzLCAxOTUwMjMsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAKKyAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDAsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgMCwgOTIzNDMsIDAsIAorICAgIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIDE5NDcwMSwgMTA4MDMsIDQxMzIsIAorICAgIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCA5ODMzMDUsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCAKICAgICA2Mzk2NSwgMCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgCiAgICAgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCAwLCA4Nzc0LCAwLCAxMjcwODYsIDk5NDEsIDEyMDE3MiwgMCwgMTkzMywgCiAgICAgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgMCwgMjQ4NywgNjc2MTQsIDMxMjEsIDE4MDQsIDMzMTEsIDY3NjE1LCAKLSAgICAwLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCAxMjA1OTgsIDEyNzQ3NSwgMCwgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIAotICAgIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCA1MTAsIDY0NjYzLCAwLCAwLCA0NTYxLCAyMTAxLCAKLSAgICAxMzk4LCAwLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAwLCA4NDAsIDAsIDAsIDAsIAotICAgIDY5NjcsIDAsIDAsIDk3OTYsIDAsIDMzMywgMCwgMCwgODE0NCwgMjExNywgMCwgMCwgMTI0MDYsIDAsIDE5OTMxLCAKLSAgICAxMTkwODksIDY2NzgsIDc3NjksIDAsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCA0MzEwMSwgOTk4MSwgMCwgCi0gICAgNDA5ODYsIDQxMjcsIDY2NDg3LCAwLCA0MjIwMiwgMTI3NTQsIDE5NTAyMiwgMCwgMCwgMCwgNjc1OTQsIDIwNDgsIDEyOTQ0LCAKLSAgICA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAKLSAgICAxMjAzOCwgMCwgMCwgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIDE5NDgsIDExOTAwNywgMCwgOTUyLCAxMjgyMzUsIAotICAgIDAsIDAsIDEyMDgwMiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIAotICAgIDY0MTcwLCAwLCAwLCAzNDM2LCAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgNjY3NiwgMzkzMCwgNjY3MDgsIDAsIDAsIAotICAgIDY3NTk4LCAwLCAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAwLCAwLCAwLCA4NTAwLCA0MjIyMiwgMTIwMTQyLCAKLSAgICA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAwLCA2NzYwNiwgMTE5MDgzLCAwLCA0MjIxNywgCi0gICAgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCAwLCAwLCA2Mzg0MSwgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCAKLSAgICA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAxMTI4MSwgMCwgNjQyMTMsIDE0NjksIAotICAgIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIAotICAgIDg0NTMsIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAKLSAgICAxMjg0NiwgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCAKLSAgICA4MjMsIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCAKLSAgICA0Mjc4MywgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIAotICAgIDY2NDk4LCA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIAotICAgIDEyMDA2MiwgOTI2NjksIDAsIDEyNzA1MiwgNDI1ODcsIDQyMjE0LCA0MTM5NCwgMCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCAKLSAgICA1MjYwLCA0MzE0MywgMCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAwLCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxOTQ5MjQsIAotICAgIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCA0MjcyMCwgMTIxNDAsIAotICAgIDk1NzIsIDAsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDAsIDE5NDg4NSwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCAKLSAgICA5OTc3LCAwLCAwLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIDk1MjEsIAotICAgIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIDExNTI4LCA2NDAyNCwgCi0gICAgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCAwLCAKLSAgICA2NDAwNSwgNDA1OCwgMTE5MDE5LCAwLCA2NDY2MCwgMCwgMTE5MDUwLCAwLCAwLCAxMTM5LCA0MzI5OCwgNjQwMjcsIAotICAgIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAwLCAxMDc3NCwgMTI4MDIwLCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMCwgMTg1MiwgCi0gICAgMzA1NywgMTI4MTEzLCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCAwLCAwLCAwLCAwLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAKLSAgICAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIAotICAgIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgMTY4MiwgCi0gICAgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIAotICAgIDE5NDgzMCwgMTE5MDEwLCAxMTg4NjMsIDQzMzExLCA2NDk2NiwgMTE1NzcsIDAsIDQzMDQwLCAxODMzLCAxMTU3NiwgMCwgCi0gICAgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTk0ODQ4LCA3NTM1LCA4MDg1LCA0MjUyNSwgMTIwMzg3LCAKKyAgICA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIAorICAgIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCA2NDY2MywgMCwgMCwgNDU2MSwgCisgICAgMjEwMSwgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAKKyAgICAxMjY1MTgsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMCwgMzMzLCA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgCisgICAgOTgzNTk1LCAxMjQwNiwgMCwgMTk5MzEsIDExOTA4OSwgNjY3OCwgNzc2OSwgMCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIAorICAgIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDAsIDQyMjAyLCAxMjc1NCwgMTk1MDIyLCAwLCAwLCAKKyAgICA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCAKKyAgICA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIAorICAgIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMCwgMCwgMTIwODAyLCA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCAKKyAgICA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDAsIDAsIDM0MzYsIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCAKKyAgICA2Njc2LCAzOTMwLCA0MjYxNSwgMCwgMCwgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIAorICAgIDAsIDg1MDAsIDQyMjIyLCAxMjAxNDIsIDczNzQzLCAxMjA0MDAsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDAsIAorICAgIDY3NjA2LCAxMTkwODMsIDAsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDAsIDk4MzczOCwgNjM4NDEsIAorICAgIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCAKKyAgICA2NDk1NywgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCAKKyAgICA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAKKyAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgCisgICAgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgCisgICAgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAKKyAgICAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIAorICAgIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDEyMDA2MiwgOTI2NjksIDcxMzMyLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgCisgICAgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIAorICAgIDAsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIDE5NDkyNCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCAKKyAgICA0NTMsIDQxMzk2LCAxMjA1MjQsIDQyNzIwLCAxMjE0MCwgOTU3MiwgMCwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgCisgICAgMTI2NDkwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCAKKyAgICA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIAorICAgIDEyNjYwNCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCAKKyAgICA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCA5ODM1NjcsIDY0MDA1LCA0MDU4LCAKKyAgICAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDAsIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCAKKyAgICA4OTcwLCAwLCA5OTM0LCA5ODMwOTQsIDEwNzc0LCAxMjgwMjAsIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAKKyAgICAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgMTk0ODk5LCA5MjMyMiwgNzY0NSwgMTI4NTQsIAorICAgIDc0MzM4LCAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgCisgICAgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgCisgICAgMTY4MiwgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgCisgICAgMTA3MjgsIDE5NDgzMCwgNzEzMTYsIDExODg2MywgNDMzMTEsIDY0OTY2LCAxMTU3NywgMCwgNDMwNDAsIDE4MzMsIDExNTc2LCAKKyAgICAwLCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxOTQ4NDgsIDc1MzUsIDgwODUsIDQyNTI1LCAxMjAzODcsIAogICAgIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDE5NDcxMSwgNjQ0ODMsIDY1NjkzLCAwLCAwLCAKLSAgICAwLCA2OTY5NSwgNDIyNDAsIDAsIDAsIDQyODY0LCAwLCA2NDY2NywgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIAotICAgIDEyNzUzNSwgNjc4NDAsIDAsIDAsIDEyODc5MywgMCwgMTA5ODYsIDY0NjgzLCAwLCAwLCAxOTQ3MDksIDAsIDAsIDk4NzksIAotICAgIDAsIDAsIDQxNTgsIDEyODA1MCwgNjgxNjYsIDAsIDAsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgMCwgNTE0MiwgMjQwNywgCi0gICAgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDAsIDU1MjE3LCAwLCA2Mzg3MCwgNDMxNjMsIDAsIDAsIDkyMzkwLCAKLSAgICA0Mjg2NywgMTgzNCwgMCwgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDExOTA0MCwgODY2MiwgMCwgMCwgMjY1MiwgCi0gICAgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgOTIyMzMsIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCAKKyAgICAwLCA2OTY5NSwgNDIyNDAsIDAsIDEyNjY1MSwgNDI4NjQsIDEyNjQ5OCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIAorICAgIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NDIsIDAsIDY2MTk3LCAwLCAxMDk4NiwgNjQ2ODMsIDk4Mzc3NiwgMCwgMzQ1NSwgCisgICAgMCwgMCwgOTg3OSwgMCwgMCwgNDE1OCwgMTI4MDUwLCA2ODE2NiwgMCwgMCwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCAwLCAKKyAgICA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDAsIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDAsIDYzODcwLCA0MzE2MywgMCwgCisgICAgMCwgOTIzOTAsIDQyODY3LCAxODM0LCAwLCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgMTE5MDQwLCA4NjYyLCAwLCAwLCAKKyAgICAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA5MjIzMywgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIAogICAgIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIDEyMDMyNywgNzg2MjAsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgMTE4ODU0LCAKICAgICA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCAwLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAwLCAxNjIwLCAKLSAgICA2NDQzNiwgMzYwMSwgMTk1MDk0LCAxMjgwNzMsIDAsIDYwOSwgMTE1NTUsIDAsIDEyNDk2LCAxMjc4MzksIDc0MTgxLCAKLSAgICA0MzQzLCAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAwLCAKLSAgICA0MzU2NSwgMTI3MDgyLCAwLCAxMjY5NiwgMTI4MjU2LCAwLCAxOTQ3OTYsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDAsIAotICAgIDQyODE4LCAxMjg2ODgsIDAsIDEyMDQ5MCwgMCwgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMCwgMCwgMCwgMTI2NTEsIDAsIAotICAgIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDAsIAotICAgIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAwLCA2OTc2MCwgCi0gICAgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCA5MDgwLCAxMjcwMDAsIAotICAgIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCAKLSAgICAwLCAwLCAwLCAwLCAxMjgyMDgsIDAsIDUyNjUsIDY5MjM1LCAwLCAxMTQ4NywgNjc4NTgsIDEyNDY0LCAwLCA0MzA0NSwgMCwgCi0gICAgMCwgNDMzNDUsIDAsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgMCwgNzQzNDgsIDAsIDQzMzQ2LCA4MTE2LCAKLSAgICA3OTUsIDAsIDAsIDEyNDYyLCAxMDkzMCwgMTA4MzEsIDAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCAwLCAxMjA4MTEsIDAsIAotICAgIDEyNDY4LCA4NjA3LCAxMDA4LCAwLCAxMDA5MiwgMTk1MDc4LCA5MTc4NDIsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIAotICAgIDExMjgyLCAxMTk5NiwgMTgyMCwgNDU0NywgMCwgMCwgMCwgMCwgMTMyMjMsIDEyODY2NSwgNjQ1OTUsIDEyNzI5NCwgMCwgCi0gICAgOTIzMTEsIDQzNDUsIDEyNjE2LCAwLCAwLCAwLCA3NDQ2NywgMCwgMCwgMCwgNTM4MiwgMCwgMCwgMCwgMTE5MDYwLCAKLSAgICA2NDk1MywgNTQwNiwgMTk5MjAsIDkyMjE2LCA2NjUxMCwgMzU5MCwgMCwgMTEzMCwgMCwgMCwgNDIwMTYsIDExODIzLCAKLSAgICA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgMCwgOTMyNiwgNzM4MjYsIDUzMTAsIDc0ODEyLCA3ODU4NCwgCi0gICAgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgMCwgODU2OCwgMCwgMTIwNDk2LCA3MzgxNiwgMTIwODAzLCAwLCAKLSAgICA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgMTI3MTgyLCAwLCAwLCAwLCAKLSAgICA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCA1NDAwLCAxMTU5NCwgMTI4MjQ3LCAwLCAxMTg5OTAsIAotICAgIDEwNDkxLCAwLCA2NDQxMiwgMCwgMCwgNTU4NywgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCA2NTA4NiwgODk4MSwgCi0gICAgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAwLCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCAwLCAKLSAgICA0Mjc2NiwgMCwgNjY1NjYsIDk5ODMsIDAsIDExOTEwNSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAKLSAgICAxNDYxLCA5MTAsIDExOTEzMywgMCwgNjc0OSwgMzY1OCwgMCwgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAwLCAKLSAgICA2NzY2OCwgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAwLCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIAotICAgIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIAotICAgIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgMCwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIAotICAgIDAsIDY0NywgMCwgNjMzLCAxMjA3NDQsIDAsIDAsIDEyNDgwLCA0MzI0MywgMCwgMzksIDEyNDg3LCAwLCAxMjA1MjksIAotICAgIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDAsIDMxOTUsIDU1NTAsIDAsIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCAKLSAgICA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAyODc3LCAwLCAwLCAxNjc1LCAwLCAwLCAwLCAwLCAxMDA3MCwgMTA1OTUsIDAsIAotICAgIDExOTA3NywgMCwgMCwgMCwgMCwgMCwgNDMyNDQsIDAsIDAsIDAsIDExOTU2MSwgMCwgMCwgMTk0OTIxLCAxMjgxNjAsIAotICAgIDk5MzksIDAsIDAsIDc3ODYwLCAwLCAwLCAyNzAsIDAsIDEwNzE0LCAwLCAwLCAwLCAwLCAwLCA2NTM3MiwgMCwgNzQwMzgsIAotICAgIDExOTU1OCwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgMTk0OTA4LCAwLCAwLCA3MDcsIDAsIDAsIDkyODIsIDY2NDg5LCAKLSAgICAyMjQsIDAsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMCwgNjg2NDQsIDAsIDM4NDEsIDY4NjM0LCAwLCAxMDczMiwgCi0gICAgNjg2NDAsIDg1MCwgNDk3MiwgMCwgNjQ2OTksIDI5MDksIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDAsIDExNTQ0LCAxMDIwMywgCi0gICAgOTYwOCwgMCwgMCwgMTE5NjIsIDE5NDY5NCwgMTI1MDcsIDExOTYsIDEyODY4NywgMTI4MzExLCA3NzcsIDEyMDE4NywgCi0gICAgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgMCwgNjQ4MjQsIDExOTM0MywgMCwgOTQ1NCwgNjM3NzgsIDg2NTgsIAotICAgIDQyNTI4LCA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCAwLCAKLSAgICAyNzAxLCAwLCAwLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAwLCA2Mzc0NSwgMTc0OCwgCi0gICAgNjM3NzAsIDAsIDAsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIDAsIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgCi0gICAgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAwLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIAotICAgIDYzODYsIDYzNzgzLCAwLCAwLCAxMjcxNzMsIDAsIDAsIDAsIDc0NTc1LCAwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgCi0gICAgMCwgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAxMDk5NiwgOTIyNDcsIDE5MjIsIDAsIDEyNDk4LCAxMDk4NywgCi0gICAgMCwgMCwgMzg5NCwgNjU1NDMsIDAsIDE5NDg0MiwgMCwgNDkzLCAwLCA0MzE5NywgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgCi0gICAgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAwLCAxMjcwMzksIDEyNDkzLCAKLSAgICA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDAsIDY0OTExLCA5MjYxNSwgMjA5NiwgNjUxMjAsIDAsIDAsIDAsIDExNjExLCAKLSAgICAxMTYzMiwgMTI3MDQxLCA2NjIxMywgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIAotICAgIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCAwLCA3OTA5LCAKLSAgICA2NjIzNCwgMTE2MDUsIDYzNzU5LCAwLCA2NjIwOCwgNzM5OTksIDYzNzk5LCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIAotICAgIDEyNDk0LCA3Mzc2MSwgMTI0OTIsIDEyNjY5LCAwLCAwLCA3NDE1MywgMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAKLSAgICAwLCA4NjEyLCA0ODg1LCA3NDA1MywgMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDAsIDYzNzk3LCAKLSAgICA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIDc4MDQwLCA0NzAsIAotICAgIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDAsIDc4MDM0LCA0NTc5LCAxMjgwOTAsIDAsIDEyNTExLCA3NDQ1MywgMTI1MTQsIDAsIAotICAgIDc0NTc5LCA3MjM5LCA3MDAxLCA4NjIzLCAwLCAxMjgwNTIsIDEyODA0OCwgNzM3OCwgMTI1MTIsIDExNjE1LCA2MTA0LCAwLCAKLSAgICAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCAxMjczMDcsIDEyNzA2NywgODMxMSwgMTI1MTAsIDQxODAzLCAxMzAzOSwgCi0gICAgMTI3MDcyLCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAwLCAwLCAwLCAyMzIzLCAwLCAyMzE5LCA3NzkxNywgCi0gICAgMTI0NzcsIDc3OTE2LCAyMzExLCAwLCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMCwgMCwgMjMwOSwgMTMxMiwgODE3MywgCi0gICAgMTI4ODcxLCAxMjQ2OSwgMCwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgMCwgMTI4MTExLCA5Mzk3LCAxMTUyNCwgOTM5NSwgCi0gICAgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgOTM4NiwgOTM4MywgCi0gICAgOTM4NCwgNjc0MCwgMCwgNjU0NTEsIDgxODUsIDAsIDkxNzgzMiwgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCAKLSAgICA3OTQ4LCA5MjM2LCAwLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCAwLCAwLCAxMTk5OCwgMTIwODIsIAotICAgIDEwOTI0LCAzMTQ3LCAwLCAxMjA2ODQsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKLSAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCAwLCA5MzcyLCAxMjQ0NCwgMCwgMCwgMTMwMTYsIAotICAgIDgyMTAsIDAsIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAwLCA0MTU1LCAwLCAwLCAKLSAgICA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMjc4MDUsIDEyNzI0MCwgMCwgOTkyMiwgNDMzMDksIDAsIAotICAgIDEyNTI1LCAwLCAxMjAxNiwgNjU3NzAsIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIAotICAgIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgMCwgMTI1MDYsIDAsIAotICAgIDEyMjMxLCAwLCAxMjUwMCwgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCA0MTA0NywgCi0gICAgMTIwMzIxLCA3ODM5NSwgNzgzOTQsIDc0MDY5LCA3Nzk5NSwgNzgzOTEsIDM2MDgsIDgyODEsIDEyMDMyMCwgMTEwNywgMCwgCi0gICAgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCAKLSAgICAxMjg4MTcsIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDAsIDQ5OCwgNjQ0NzEsIDEyMDMyNCwgCisgICAgNjQ0MzYsIDM2MDEsIDE5NTA5NCwgMTI4MDczLCA5ODM1NjIsIDYwOSwgMTE1NTUsIDk4MzA5OSwgMTI0OTYsIDEyNzgzOSwgCisgICAgNzQxODEsIDQzNDMsIDEyNTA1LCAwLCAxMjc4NjMsIDAsIDExMzc3LCAyMzksIDAsIDYzNywgMCwgMCwgNDI2NzEsIDAsIDAsIAorICAgIDAsIDQzNTY1LCA3MTMwNiwgMTI2NDkzLCAxMjY5NiwgMTI4MjU2LCAwLCA5NDA2MiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgCisgICAgOTgzMjA0LCA0MjgxOCwgMTI2NjMyLCAwLCAxMjA0OTAsIDAsIDExOTEzNywgMTUwNiwgNDM1NjIsIDAsIDkyNDkxLCAwLCAKKyAgICAxMjY1MSwgMCwgNjQ2MjgsIDc0NTE3LCAxMjA1OCwgNzQwODQsIDkxNzgzOCwgNzQ5NCwgMCwgNDkyNCwgNjU1OTIsIAorICAgIDExODg0NCwgMCwgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAwLCAwLCAxMjAzMywgNDIxNzgsIAorICAgIDAsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDAsIDAsIDAsIDAsIDAsIDEyNzE3NiwgMzE3OCwgMCwgMCwgOTI3MDQsIDAsIAorICAgIDkwODAsIDEyNzAwMCwgMTIwMzUyLCAwLCA2ODIwOSwgMCwgMTEwODIsIDAsIDU2OTksIDE5NTEwMCwgNjYwMDAsIDk0ODgsIAorICAgIDY1MTY2LCAxMTkxMTIsIDAsIDAsIDAsIDAsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgMCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgCisgICAgMCwgNDMwNDUsIDAsIDAsIDQzMzQ1LCAwLCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIDAsIDc0MzQ4LCAwLCAKKyAgICA0MzM0NiwgODExNiwgNzk1LCAwLCAwLCAxMjQ2MiwgMTA5MzAsIDEwODMxLCAwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgCisgICAgOTgzNjAyLCAxMjA4MTEsIDAsIDEyNDY4LCA4NjA3LCAxMDA4LCAwLCAxMDA5MiwgMTk1MDc4LCA5MTc4NDIsIDY3ODU1LCAKKyAgICA1NTI1NywgNzM3NzEsIDE3NjYsIDExMjgyLCAxMTk5NiwgMTgyMCwgNDU0NywgMCwgMCwgMCwgMCwgMTMyMjMsIDEyODY2NSwgCisgICAgNjQ1OTUsIDEyNzI5NCwgMCwgOTIzMTEsIDQzNDUsIDEyNjE2LCAwLCAwLCAwLCA3NDQ2NywgMCwgMCwgMCwgNTM4MiwgMCwgCisgICAgMCwgMCwgMTE5MDYwLCA2NDk1MywgNTQwNiwgMTk5MjAsIDY5ODk3LCA2NjUxMCwgMzU5MCwgMTk0ODY0LCAxMTMwLCAwLCAwLCAKKyAgICA0MjAxNiwgMTE4MjMsIDQzMDIzLCAwLCAxMTg4OTYsIDc3NDIsIDAsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIAorICAgIDc0ODEyLCA3ODU4NCwgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgMCwgODU2OCwgMCwgMTIwNDk2LCA3MzgxNiwgCisgICAgMTIwODAzLCA5ODM4MzksIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDAsIDEyMDYzMSwgMCwgNDMwNjMsIDc0NTE5LCAKKyAgICAxMjcxODIsIDAsIDczOTE3LCA3ODQzLCA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCA1NDAwLCAKKyAgICAxMTU5NCwgMTI4MjQ3LCAwLCAxMTg5OTAsIDEwNDkxLCA2OTg0MiwgNjQ0MTIsIDAsIDAsIDU1ODcsIDQyODY1LCA2NDQwNCwgCisgICAgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgMCwgNjY2MTAsIAorICAgIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgMCwgNDI3NjYsIDk4Mzg1NywgMjIxMCwgOTk4MywgMCwgOTQwMDksIDAsIDAsIDAsIAorICAgIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgMTQ2MSwgOTEwLCAxMTkxMzMsIDAsIDY3NDksIDM2NTgsIDkzOTY0LCAKKyAgICAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDEyNzk4MywgNjc2NjgsIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgCisgICAgNTcwMywgMCwgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgCisgICAgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgCisgICAgNDM0NDksIDAsIDAsIDgyMjUsIDAsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAwLCA2NDcsIDAsIDYzMywgMTIwNzQ0LCAwLCAKKyAgICAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMCwgMzksIDEyNDg3LCAwLCAxMjA1MjksIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDAsIAorICAgIDMxOTUsIDU1NTAsIDk4MzU1NCwgNzg5NywgMCwgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDAsIAorICAgIDI4NzcsIDAsIDAsIDE2NzUsIDY5ODQwLCAwLCAwLCAwLCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgMTk0Nzc3LCAKKyAgICA5ODM2MTEsIDAsIDAsIDAsIDQzMjQ0LCAwLCAwLCA5ODM5MDcsIDExOTU2MSwgOTgzMDc4LCAwLCAxOTQ5MjEsIDEyODE2MCwgCisgICAgOTkzOSwgMCwgOTgzMTUxLCA3Nzg2MCwgMCwgMCwgMjcwLCAwLCAxMDcxNCwgMCwgMCwgMCwgMCwgMCwgNjUzNzIsIDAsIAorICAgIDc0MDM4LCAxMTk1NTgsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDE5NDkwOCwgMCwgMCwgNzA3LCAwLCAwLCA5MjgyLCAKKyAgICA2NjQ4OSwgMjI0LCAwLCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCAwLCAzODQxLCA2ODYzNCwgMCwgCisgICAgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDAsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCA5ODM3MDksIAorICAgIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgMCwgMTE5NjIsIDE5NDY5NCwgMTI1MDcsIDExOTYsIDEyODY4NywgMTI4MzExLCAKKyAgICA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAxMjE5OCwgMCwgNjQ4MjQsIDExOTM0MywgOTgzMjMwLCAKKyAgICA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDc4MDAwLCAyNzA1LCA5MTc5NzUsIDQxNTIwLCAwLCAwLCAxMTk4NiwgNzc2NSwgCisgICAgNDI1MDIsIDgyODAsIDc0NTIwLCAyNzAxLCAwLCAxMjcwMDIsIDU3NjcsIDAsIDAsIDk4MDksIDgzNTMsIDYzNzQ3LCAKKyAgICA2NjcwMSwgNjM3NzIsIDk4MzgwNSwgNjM3NDUsIDE3NDgsIDYzNzcwLCAwLCAwLCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAKKyAgICAzMDYxLCAwLCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgCisgICAgMCwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCA2Mzg2LCA2Mzc4MywgMCwgMCwgOTI1MzUsIDAsIDAsIDAsIAorICAgIDc0NTc1LCAwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMCwgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAKKyAgICAxMDk5NiwgOTIyNDcsIDE5MjIsIDAsIDEyNDk4LCAxMDk4NywgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMCwgCisgICAgMTk0ODQyLCA5ODM1ODgsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIAorICAgIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgMCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIAorICAgIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCA3ODIxOSwgOTgzMDgxLCAxMTYxMSwgMTE2MzIsIAorICAgIDEyNzA0MSwgNjYyMTMsIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCAKKyAgICA2NjIzNiwgNjYyMTEsIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCAKKyAgICA2NjIzNCwgMTE2MDUsIDYzNzU5LCA5ODM2NDUsIDY2MjA4LCA3Mzk5OSwgNjM3OTksIDYzODAzLCAyNDQsIDExNTQyLCAKKyAgICAxMjg5OCwgMTI0OTQsIDczNzYxLCAxMjQ5MiwgMTI2NjksIDAsIDAsIDc0MTUzLCAwLCAxMjgyNzgsIDEyMDY4MCwgNDg4MiwgCisgICAgMTMwNDAsIDAsIDg2MTIsIDQ4ODUsIDc0MDUzLCAwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgMCwgCisgICAgNjM3OTcsIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMCwgNjM3NTYsIDQyNzg2LCA2NjY5MywgMCwgMTg3MCwgNzgwNDAsIAorICAgIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCAxMjgwOTAsIDAsIDEyNTExLCA3NDQ1MywgCisgICAgMTI1MTQsIDAsIDc0NTc5LCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI4MDUyLCAxMjgwNDgsIDczNzgsIDEyNTEyLCAKKyAgICAxMTYxNSwgNjEwNCwgMCwgMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgMTI3MzA3LCAxMjcwNjcsIDgzMTEsIDEyNTEwLCAKKyAgICA0MTgwMywgMTMwMzksIDEyNzA3MiwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgOTgzOTExLCAwLCAwLCAyMzIzLCAKKyAgICAwLCAyMzE5LCA3NzkxNywgMTI0NzcsIDc3OTE2LCAyMzExLCAwLCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMCwgMCwgCisgICAgMjMwOSwgMTMxMiwgODE3MywgMTI4ODcxLCAxMjQ2OSwgMCwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgMCwgMTI4MTExLCA5Mzk3LCAKKyAgICAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgCisgICAgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMCwgNjU0NTEsIDgxODUsIDAsIDkxNzgzMiwgNDMwMjQsIDQzMzM2LCA2NzY1OSwgCisgICAgMjMxMywgMTI4MTY3LCA3OTQ4LCA5MjM2LCA5MjU3MSwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgMCwgMCwgCisgICAgMTE5OTgsIDEyMDgyLCAxMDkyNCwgMzE0NywgMCwgMTIwNjg0LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgCisgICAgOTM4MiwgOTM3OSwgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzY5LCA5MzcyLCAKKyAgICAxMjQ0NCwgMCwgMCwgMTMwMTYsIDgyMTAsIDk4Mzk0OSwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCAKKyAgICA4NzQ0LCA3MjYsIDAsIDk4MzgyOCwgNDE1NSwgMCwgMCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgCisgICAgMTI3ODA1LCAxMjcyNDAsIDAsIDk5MjIsIDQzMzA5LCA5ODM4MzIsIDEyNTI1LCA5ODM0NjMsIDEyMDE2LCA2NTc3MCwgCisgICAgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIDEyNTAzLCAwLCAwLCAxMTAzMCwgMCwgOTI1NjcsIDY1NjkxLCA2Mzk5OCwgCisgICAgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTk0NjY4LCAwLCAxMjUwNiwgMCwgMTIyMzEsIDAsIDEyNTAwLCAKKyAgICA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIDQxMDQ3LCAxMjAzMjEsIDc4Mzk1LCAKKyAgICA3ODM5NCwgNzQwNjksIDc3OTk1LCA3ODM5MSwgMzYwOCwgODI4MSwgMTIwMzIwLCAxMTA3LCAwLCA5MDc2LCA4ODYyLCAKKyAgICA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCA3NDE2NSwgNzQ3ODIsIDEyNjUxNCwgCisgICAgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgOTgzOTM4LCA0OTgsIDY0NDcxLCAxMjAzMjQsIAogICAgIDEyODU2NywgMTI1MjksIDgwNDIsIDAsIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCAwLCA2OTcxOSwgMzIzMSwgMCwgNjQyMiwgCiAgICAgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgCiAgICAgNDE0MzMsIDQ3MTksIDQ2OSwgMCwgNDM2MywgMzMxMywgNDE0MjgsIDc4NDA3LCAyMDIzLCAxNzcyLCA3ODIyNCwgNzgyMjUsIAogICAgIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCAwLCA5OTIwLCAxMjIxNSwgMCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgCiAgICAgOTYwNywgMCwgOTY2MywgMCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgMCwgMTQ5MSwgMCwgMCwgMTI3MzA0LCA0MTA2MSwgMCwgCi0gICAgMCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDc4NjAyLCA2NjQ3NiwgNDExMDgsIDk3MzgsIAotICAgIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgNDE5OTIsIDQxNTA2LCAwLCA0MTY4NywgMCwgMTIwNzE3LCAxMjc3NzYsIAotICAgIDk5NDAsIDEyNzI5OSwgNzY5MiwgMCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDQxMTMzLCA5ODE2LCAKLSAgICAxMjgwNzQsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDAsIDEyNzI5OCwgNjQxMzksIAorICAgIDE5NDgzOCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDc4NjAyLCA2NjQ3NiwgNDExMDgsIAorICAgIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgNDE5OTIsIDQxNTA2LCAwLCA0MTY4NywgMCwgMTIwNzE3LCAKKyAgICAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODI0LCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNDExMzMsIAorICAgIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMCwgMTI3Mjk4LCA2NDEzOSwgCiAgICAgNzgyMzEsIDY0MTEsIDEyOTEwLCA3ODU1NCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAxMjUzNywgMCwgMCwgNjQxMzYsIDEyNTM2LCAKLSAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDAsIDAsIDEzMDMwLCA2NzAyLCA0NTI3LCAwLCAxMjUzOCwgMTI4ODEwLCAwLCA2NTU5OSwgCi0gICAgNjU3MTcsIDk5NjYsIDAsIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjgxNDksIDEyNjIzLCAwLCA2MjA3LCAwLCA2MTE3LCAKLSAgICA2NTkzMCwgODQxMiwgMCwgNzQzOCwgMTI5NiwgMjMyNSwgNDE1MTEsIDAsIDEwMTQ5LCA3NDExOCwgMCwgMTI3Mjg2LCAKLSAgICAxMjQ4MSwgMCwgMTI0ODgsIDAsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCAxMjg1NzEsIDczNzY2LCAwLCAKLSAgICA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCA2NTAzMiwgNDE1MTMsIDAsIDExOTI3LCA2NjU4NCwgNzg1NTksIDc4NTYwLCAKLSAgICA3ODU1NywgNzg1NTgsIDAsIDc4NTU2LCA4NDgsIDk4NjgsIDAsIDY0MjQsIDc4NTY4LCAxMTkzMzgsIDc4NTY1LCA3NDAzMSwgCi0gICAgNzg1NjMsIDc4NTY0LCAyMzUyLCA3ODU3MiwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDAsIDAsIDEzMDI2LCA2NzYyLCAKLSAgICA3ODU3OSwgNzg1ODAsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMCwgMCwgMTM0MywgMCwgMCwgCi0gICAgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDAsIDAsIDExNzQxLCAwLCAwLCA5MjE2LCA4MjYzLCAxMTI3OSwgMTk0NzUyLCAKLSAgICAwLCAxOTQ3NTQsIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCAKLSAgICA5OTU2LCAwLCAwLCA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCAxOTQ3NjcsIAotICAgIDc0MzQwLCA2OTY4MSwgMCwgNjQ5NDUsIDgwMjksIDAsIDAsIDAsIDMzMzUsIDAsIDAsIDk3NzYsIDEyMDUyNiwgMTk0NzQ4LCAKLSAgICA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCA3ODU4MSwgCi0gICAgNDE1NiwgMCwgMCwgNjQyMSwgNzg1OTEsIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgMzMzNywgCi0gICAgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAwLCAxMzA0NiwgODgzOCwgCi0gICAgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCAwLCAwLCA2ODE5LCAxMzA0OSwgNjQ5OSwgCi0gICAgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNzM5NDQsIDEzMDUwLCA5OTI0LCAxOTQ3NDUsIDY1MDcsIDEyNzkxOSwgMCwgMTI4MDY5LCAKLSAgICAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgCi0gICAgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIAotICAgIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgMCwgMCwgMCwgMCwgMCwgOTIyMTAsIDkyNDExLCAwLCAKLSAgICA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgMTE5MTEsIDAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIAotICAgIDQzMTgzLCA2NDAxLCA1ODMxLCAwLCAwLCAxMzA0MywgODA1NiwgOTI0OTQsIDY1NjgxLCAyMDgsIDEyNzM4MiwgNDE1MTQsIAotICAgIDAsIDAsIDAsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgMCwgMTIwNjMwLCAzNjAzLCA0MTEwOSwgMjM5OCwgCi0gICAgMzU0OCwgMCwgMCwgMTE5OTMzLCAwLCAzMTE1LCA5OTE4LCAwLCAxMTMyMSwgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgCi0gICAgNjU4MDQsIDAsIDAsIDQzNDY4LCAwLCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAKLSAgICAxMzA1MSwgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCAKLSAgICA1NjY1LCAwLCAxMTkwNzEsIDcwMjUsIDYzOTc0LCAwLCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgCi0gICAgNTY2MiwgNDIzODIsIDE5NDY4NiwgNzM5MjQsIDExMjEsIDE5NDY2NSwgNjM5NTksIDAsIDk5NDIsIDEzMjMxLCAwLCAKLSAgICA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgMTE5OTMxLCA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCA2NDc3MiwgCi0gICAgNDIwMjQsIDY0MjAsIDQyMDI4LCAwLCAxMDUwOSwgMjc5NSwgNDkxMCwgMTk0NzI4LCA2OTIzMSwgNjQ3NTMsIDYyNzUsIAotICAgIDkxNzgwOCwgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIDY0MjMsIDQyNzc0LCAwLCAwLCAwLCAxMjgyMywgMjMzMSwgCi0gICAgOTE3ODEwLCA0MjAyNiwgNjEzNywgMCwgNzUyNCwgMCwgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCAKLSAgICA4MjIsIDEyNzk4NCwgOTkwMywgNjQ3MjEsIDQyNzIyLCAxOTQ2NTYsIDE5NDY1OSwgNzg2NTUsIDc4NjYxLCAxOTQ2NjAsIAotICAgIDc4NjYyLCA0MTI2NSwgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA3ODA1NSwgMTEyNzgsIDc4NjMyLCAKLSAgICAxOTQ2NDAsIDAsIDEyOTQ2LCAxOTQ2NDEsIDExOTM0MSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxOTQ2NDgsIDE5NDY0NywgCi0gICAgNjUwMTksIDE5NDY0OSwgNzM5OTAsIDAsIDAsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDE5NDY1MiwgCi0gICAgMTk0NjI5LCAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAKLSAgICAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAxOTQ2MzUsIDQ4OTAsIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDAsIDY1NzEsIAotICAgIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzgwNDksIDc4MDQ2LCA3ODA0NywgMCwgMTAxMTksIDY0MTUsIDQyODkzLCAwLCAKLSAgICA2OTcwMiwgMCwgMCwgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNjQ5MzIsIDQyODgwLCA0MzU4NywgCi0gICAgMCwgMCwgMCwgMCwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCA2NTg1NCwgNDg3NSwgNjU4MTEsIAotICAgIDEyMDM4MSwgMTIwMzg5LCAxMTg4ODgsIDkzNDQsIDg4MjYsIDEyMDM4NiwgMTIwMzk1LCAxMzEwNCwgNzQ3ODEsIDExOTk3LCAKLSAgICAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCAwLCA2NTY5NiwgOTIzMzEsIDAsIDY2MjE3LCAwLCA4MzM0LCAxMTkzNDQsIDAsIAotICAgIDM0NDksIDAsIDAsIDc4NDE0LCA3ODQxMywgMTE4OTUwLCA3NDAxMSwgMCwgMCwgMCwgMCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAKLSAgICAxMDczNCwgMTI3MDE0LCAwLCAxMjc5MTQsIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCAKLSAgICAwLCA3ODA1NCwgNDkxNywgNzQ1MTYsIDc0MjA4LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCAxMTg4OTMsIDIzNjEsIAotICAgIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIDc4MDcxLCAwLCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCi0gICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDAsIDQwOTgwLCAwLCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCAwLCAKLSAgICAwLCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgCi0gICAgNzQwNDUsIDEyMDE2NSwgMCwgMCwgNDkxMywgMCwgMCwgMCwgNDIzMjYsIDEyODE5NCwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgCi0gICAgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgMCwgMCwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDE5NDcwOCwgCi0gICAgNjYzMTIsIDY5OCwgMTI4MDA3LCAxOTQ2MDYsIDEwMzU2LCA3NDA3NSwgMTk0NzEzLCA2NTEsIDEyNjQxLCAwLCAwLCAwLCAwLCAKLSAgICA0MTU1MiwgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc4NDY0LCAxMjg4NTEsIDc4NDYxLCAxOTQ2OTcsIDc0MzU2LCAKLSAgICA5MjYyNiwgNDcxNiwgNDMyNzcsIDAsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAwLCAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgCi0gICAgMTIwNjc2LCA4NzAzLCA1NDYyLCA5MTc2MjksIDAsIDEwMTAxLCAwLCAwLCA4NDc5LCA0MTUxLCA0MTkzMywgMCwgMCwgCi0gICAgNjYyNTQsIDEyMDgyMSwgMCwgMCwgMTI4NjU0LCAwLCAxMTkxOTQsIDc0MDUwLCA5MjcwMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIyNzgsIDAsIDAsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgMCwgMCwgMjY5OSwgMCwgNzM4NDUsIDI5ODUsIAotICAgIDkyNTY4LCAwLCA5MTc4NDUsIDEyMTkyLCAxMTkzMTQsIDAsIDExOTMxMiwgOTgyNywgMTE5MzEwLCAxMTkzMTEsIDExOTMwOCwgCi0gICAgMTE5MzA5LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzg0ODEsIDc4NDgyLCA2NjY5NCwgNjg0NzksIAotICAgIDc4NDc3LCA3ODQ3OCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA3ODQ4MywgCi0gICAgNDI3MiwgMCwgNDA5NjcsIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgCi0gICAgNzkzMCwgMCwgNDMzMDMsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIDQxODksIDEyNzA5OCwgNjc1OTYsIDEyNzUwNCwgCi0gICAgNDE4OCwgMTg3OSwgMCwgOTY4LCAwLCA0Mzc0MywgMCwgODg3MywgMCwgMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIDAsIAotICAgIDAsIDc0NDkwLCAxMjcwOTksIDQzNjU3LCAwLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCA0MTIyNywgMCwgCi0gICAgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDAsIDAsIDcyNTEsIDAsIDAsIDExODg1MCwgMTE5MTQxLCAxMjg1NDYsIDY2MDE1LCAwLCAKLSAgICA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIDkyMzIzLCA3NDc2MSwgNjQzMjMsIDAsIDAsIDAsIAotICAgIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCA5MjE5MCwgMCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAKLSAgICAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAwLCAwLCAKLSAgICAwLCA0MTkzNCwgNzQ2NSwgMCwgMTI4MTY4LCAwLCA0NzE1LCA2MTAxLCAwLCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIAotICAgIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAwLCAxMjgwNTksIDAsIDAsIDAsIDAsIDAsIDY1NTY3LCAxMjA2MTQsIDE5MjksIAotICAgIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCA1Mzc4LCA3ODc5MSwgCi0gICAgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMCwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgMCwgCi0gICAgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIAotICAgIDEwNjI4LCA3NDgwOCwgMTk0NTcyLCA3OTk5LCA0Mzk3MSwgMCwgMCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCAKLSAgICA2NDM3NCwgNDM4MCwgMTk0NjA4LCAxMTkwNDQsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NTYyNiwgNzg0NjIsIDE4MTAsIAotICAgIDM2NzMsIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDAsIDc1NjYsIDY0Njg4LCAxOTQ1OTMsIDE5NDU5MiwgCi0gICAgNzgwOTIsIDc0MzU3LCAxOTQ1OTcsIDQ3NDgsIDkyMjI4LCAxOTQ1OTgsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgCi0gICAgMCwgNzQ1NzYsIDQ0MDE5LCAwLCAxMjgxODksIDM5NjcsIDE5NDYwNCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgMCwgODQxMCwgNDQ1NCwgNzIzLCAxMjc4ODIsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCAwLCA3ODE5LCAyMzIwLCAKLSAgICAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIAotICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgMCwgMTU4NCwgNjY2NDUsIDYwNDUsIAotICAgIDY3MjksIDEyMDY0MCwgNjUyMTgsIDc4Nzc3LCAwLCA3ODA2MiwgNzUzNywgMCwgMTEzNzAsIDAsIDEwMzMwLCAwLCAxMDM5NCwgCi0gICAgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgMTE5NjA1LCAxOTQ1NzgsIDcwNzQsIDkyNjQ4LCAKLSAgICAxOTQ1NzksIDE5NDU4MiwgMTE0MTQsIDEyODg2OCwgMjUzMSwgMTMwMzQsIDAsIDAsIDQyMTEsIDEyNTksIDc1MTcsIDAsIDAsIAotICAgIDE5NDU2MSwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDE5NDU2NywgMTk0NTY2LCAxMTA2NCwgNDExMjksIDAsIAotICAgIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDEyODE1MywgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAxOTQ1NzMsIAotICAgIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCAwLCA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIDAsIDY3NTUsIAotICAgIDExODg2NCwgOTA0NiwgMTI3OTM0LCAwLCAwLCAwLCAwLCAwLCA2NzY3NSwgMCwgMCwgMCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAKLSAgICAyNDcsIDExODkxNSwgMCwgMTIzMzgsIDQ2NTEsIDAsIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgMCwgNDE5MDMsIDQzNDQ3LCAKLSAgICAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgNDE5MDUsIDAsIDAsIDEwNzc1LCA5NzkzLCA1MDA5LCAwLCAKLSAgICA0MjI2OSwgNjQ1ODcsIDAsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgMzg3NywgMTIwNzk1LCA0MjY3NCwgCi0gICAgODE0NywgNDM1NjYsIDExOTAyMSwgMCwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgMCwgMCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIAotICAgIDQ3NDcsIDEyODA1OCwgMCwgNDMyMDAsIDU4MzIsIDAsIDAsIDUxNDEsIDQyNjAwLCAwLCA0MzIwMywgMCwgMCwgNDMyODYsIAotICAgIDAsIDEyODIxMSwgNDM3NzgsIDAsIDQxMzA1LCA3ODc3NiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMCwgNzAzMSwgODU5LCAwLCAKLSAgICAwLCAwLCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAwLCA4NTM1LCAwLCA2NTE5NiwgMTk0Nzg3LCA2NjAzMiwgMTE0ODgsIDAsIAotICAgIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCA2Mzg4NSwgMCwgMTE4MjIsIDAsIDQzMTg5LCAwLCAwLCAxNzg4LCAxNTc5LCAKLSAgICAxMjA0ODIsIDkxNzgxNywgMCwgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgMCwgMCwgMTI4NSwgNjQ4ODIsIDQxMjQyLCAKLSAgICAwLCAwLCAxMjY0MCwgMCwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA5MjI1NCwgMzk0MCwgNDE1OTcsIDU1MjYwLCAKLSAgICAzMzk2LCAxMjY0MiwgODY2NSwgMCwgMCwgMTI2MzAsIDE2NTMsIDkxNzgxNSwgMTAxNTMsIDAsIDYxNjYsIDEyMDUxNiwgCi0gICAgMTIwNTIzLCAwLCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExOTMxNywgMTE5MzE4LCAyMTQyLCAKLSAgICA2ODQ1NCwgNDI0ODUsIDExODgzNywgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAwLCA5MjY0MywgMCwgMTk0NjczLCAKKyAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDAsIDk4MzEwMywgMTMwMzAsIDY3MDIsIDQ1MjcsIDAsIDEyNTM4LCAxMjg4MTAsIAorICAgIDk4MzYzNiwgNjU1OTksIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgCisgICAgMCwgNjExNywgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAxMjY2MjUsIDEwMTQ5LCA3NDExOCwgCisgICAgMCwgMTI3Mjg2LCAxMjQ4MSwgMCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIAorICAgIDczNzY2LCAwLCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCA2NTAzMiwgNDE1MTMsIDk4MzE2NiwgMTE5MjcsIDY2NTg0LCAKKyAgICA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3ODU1OCwgMCwgNzg1NTYsIDg0OCwgOTg2OCwgMCwgNjQyNCwgNzg1NjgsIDExOTMzOCwgCisgICAgNjk5MjIsIDc0MDMxLCA3ODU2MywgNzg1NjQsIDIzNTIsIDc4NTcyLCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIAorICAgIDAsIDEzMDI2LCA2NzYyLCA3ODU3OSwgNzg1ODAsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMCwgMCwgCisgICAgMTM0MywgOTgzODE0LCAwLCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgOTgzOTI1LCAwLCAxMTc0MSwgMCwgMCwgCisgICAgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgOTgzODE2LCAxOTQ3NTQsIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAKKyAgICAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAwLCAwLCA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIAorICAgIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIDY5NjgxLCAwLCA0MzAwMSwgODAyOSwgMCwgMCwgOTgzNzcxLCAKKyAgICAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIDE5NDc0OCwgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIAorICAgIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIDQxNTYsIDAsIDAsIDY0MjEsIDc4NTkxLCAxNjExLCA3ODU4OSwgCisgICAgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIAorICAgIDQyMTQsIDczNzkwLCAxMTk0NSwgMCwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAKKyAgICAxMzA0NywgMCwgMCwgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDczOTQ0LCAxMzA1MCwgOTkyNCwgCisgICAgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIAorICAgIDE5NDcyMSwgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDE5NDcyOSwgMzk5NywgCisgICAgMTI4MDYsIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgMTk0NzMwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIAorICAgIDQxMDU3LCAwLCAwLCAwLCAwLCA5ODM3ODIsIDkyMjEwLCA5MjQxMSwgMCwgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAKKyAgICAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgCisgICAgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgCisgICAgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDEyNjU5NiwgMCwgMTE5OTMzLCAKKyAgICAwLCAzMTE1LCA5OTE4LCAwLCAxMTMyMSwgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAKKyAgICA5ODMyNjYsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgCisgICAgMzE0MywgMTk0Njc0LCA2NzAxLCA0MTU1OSwgMTg5NiwgNjYyNTYsIDEzMDUyLCAxOTQ2ODAsIDU2NjUsIDAsIDExOTA3MSwgCisgICAgNzAyNSwgNjM5NzQsIDAsIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgCisgICAgMTk0Njg2LCA3MzkyNCwgMTEyMSwgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgNjQ3NTIsIDQ3MzIsIAorICAgIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCAKKyAgICA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCAKKyAgICA2Mzk3OCwgMTEwNDQsIDMyMjksIDY0MjMsIDQyNzc0LCAwLCAwLCAwLCAxMjgyMywgMjMzMSwgOTE3ODEwLCA3MDg1LCAKKyAgICA2MTM3LCAwLCA3NTI0LCAwLCA5MTc4MDksIDgzNDYsIDAsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDAsIDgyMiwgMTI3OTg0LCAKKyAgICA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCA3ODY2MiwgNDEyNjUsIAorICAgIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgMTk0NjQwLCAwLCAxMjk0NiwgCisgICAgMTk0NjQxLCAxMTkzNDEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAKKyAgICAwLCA5ODM5NTEsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIDEwNTU2LCAKKyAgICAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIDM1OTMsIDAsIDAsIDIzNDIsIDAsIDE5NDYzNCwgNjUyMDYsIDQ4OTQsIAorICAgIDE5NDYzNSwgNDg5MCwgMTk0NjM3LCA5MTc4MDQsIDU4MSwgNDg5MywgOTgzNjE2LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgCisgICAgNzgwNDgsIDc4MDQ5LCA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgNjk3MDIsIDAsIDAsIDExMzc1LCAKKyAgICA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIDAsIDAsIDAsIDAsIDY1MTk3LCAKKyAgICA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAxMjAzODEsIDEyMDM4OSwgCisgICAgMTE4ODg4LCA5MzQ0LCA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgCisgICAgMCwgMzEzNCwgMCwgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAzNDQ5LCAwLCAwLCAKKyAgICA3ODQxNCwgNzg0MTMsIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAorICAgIDEyNzAxNCwgMCwgMTI3OTE0LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgMCwgCisgICAgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCA3OTcxLCAKKyAgICA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAKKyAgICAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCA5ODM2MDgsIDQwOTgwLCA5ODM5NTUsIDEzMjAyLCAwLCAxMjU4MiwgNzgyODIsIAorICAgIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCAKKyAgICA3Njk4LCA1NjU4LCA3NDA0NSwgNzAwMzksIDAsIDAsIDQ5MTMsIDAsIDk4Mzk1MCwgNzEzMzMsIDQyMzI2LCAxMjgxOTQsIAorICAgIDEyNzI4LCA5MjY4NSwgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCAKKyAgICA2MTUzLCAyODY3LCAxOTQ3MDgsIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzAwMTcsIDE5NDcxMywgCisgICAgNjUxLCAxMjY0MSwgMCwgMCwgMCwgMCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCAKKyAgICA3ODQ2MSwgMTk0Njk3LCA3NDM1NiwgNjQ5NDUsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgCisgICAgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCA5ODM0ODcsIDEwMTAxLCAwLCAKKyAgICA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIDAsIDAsIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCAKKyAgICA3NDA1MCwgOTI3MDEsIDAsIDAsIDAsIDAsIDAsIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIAorICAgIDAsIDI2OTksIDAsIDczODQ1LCAyOTg1LCA5MjU2OCwgMTI2NDc1LCA5MTc4NDUsIDEyMTkyLCAxMTkzMTQsIDAsIDExOTMxMiwgCisgICAgOTgyNywgMTE5MzEwLCAxMTkzMTEsIDExOTMwOCwgMTE5MzA5LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAwLCAKKyAgICAzNSwgNzg0ODEsIDc4NDgyLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA3ODQ3OCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAKKyAgICAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgMCwgNDA5NjcsIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCAKKyAgICA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDAsIDkxNzgyNiwgNTI0NCwgCisgICAgNDE4OSwgOTQxMDgsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIAorICAgIDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAwLCAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIAorICAgIDEyNTc4LCAxMjcyMCwgMCwgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAKKyAgICAxMTg4NTAsIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCAKKyAgICA5NjMyLCA5MjMyMywgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDAsIDAsIDAsIDMxMCwgMCwgNDEyODEsIDEwOTc2LCAwLCAKKyAgICA3MTMyNSwgMCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAwLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgCisgICAgMTI3MzAsIDY1MTYzLCA3NDA0NCwgMzc0LCA0MzE5NSwgODE2LCAxMjAxNjEsIDAsIDAsIDQxOTM0LCA3NDY1LCAwLCAKKyAgICAxMjgxNjgsIDk4MzI2MCwgNDcxNSwgNjEwMSwgOTQxMDYsIDQxOTM2LCAwLCA0ODc5LCAwLCA2NTQ0NiwgMCwgMzA3LCAKKyAgICAxMjcxNDcsIDk1ODUsIDUzNzQsIDk4MzI1OSwgMTI4MDU5LCAwLCAwLCAxMjY2MTgsIDEyMDM5MCwgMCwgNjU1NjcsIAorICAgIDEyMDYxNCwgMTkyOSwgMCwgMTIxNDIsIDAsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCAxOTQ2MjMsIAorICAgIDUzNzgsIDc4NzkxLCAxMjg2NzksIDQxNDIxLCAwLCA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCAKKyAgICA1ODAwLCAxMjAxNTcsIDk4MzExNSwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAKKyAgICAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgMTk0NTcyLCA3OTk5LCA0Mzk3MSwgMCwgMCwgMTA2MzQsIAorICAgIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgNDM4MCwgMTk0NjA4LCAxMTkwNDQsIDk5ODIsIDY0MzI0LCA0MTI0MCwgCisgICAgODYyLCA2NTYyNiwgNzg0NjIsIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDAsIDc1NjYsIAorICAgIDY0Njg4LCAxOTQ1OTMsIDE5NDU5MiwgNzgwOTIsIDc0MzU3LCAxOTQ1OTcsIDQ3NDgsIDkyMjI4LCAxOTQ1OTgsIDE5NDYwMSwgCisgICAgNDIyNjAsIDU4NzEsIDExOTA3NSwgMCwgNzQ1NzYsIDQ0MDE5LCAwLCAxMjgxODksIDM5NjcsIDE5NDYwNCwgMTMxMzcsIAorICAgIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgMCwgODQxMCwgNDQ1NCwgNzIzLCAxMjc4ODIsIDk2NiwgNDQ0OSwgOTIzMzAsIAorICAgIDkyMjM4LCAwLCA3ODE5LCAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCAwLCAKKyAgICA4MDQ3LCAwLCA3ODgyNywgMTI2MzQsIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAwLCA3NDQ1MiwgCisgICAgOTgzNzU0LCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDAsIDc4MDYyLCA3NTM3LCAwLCAKKyAgICAxMTM3MCwgMCwgMTAzMzAsIDAsIDEwMzk0LCAwLCA3NDE5NCwgMCwgMTI3OTI5LCA5NzgwLCAwLCAxMzA5MiwgMTk0NTc2LCAKKyAgICA3Nzk1MCwgMTk0NTc4LCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAKKyAgICAwLCAwLCA0MjExLCAxMjU5LCA3NTE3LCAwLCAwLCAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCAKKyAgICA5NDAzNCwgMTk0NTY2LCAxMTA2NCwgNDExMjksIDAsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDEyODE1MywgCisgICAgMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAxOTQ1NzMsIDQyNzEsIDc4NDE3LCAxMjgzNTcsIDY3NjksIDQxNDEwLCA5ODM0NDQsIAorICAgIDY0MjYyLCA2NzY3LCA0MTQwNywgMCwgMCwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjc5MzQsIDEyNjYwOCwgMCwgMCwgMCwgMCwgCisgICAgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCA2OTg5NSwgCisgICAgMTEyNzAsIDAsIDAsIDExOTMzLCAwLCAwLCA0MTkwMywgNDM0NDcsIDExMDAxLCAwLCA0MjI1NSwgMCwgOTI2NjEsIDY5ODIxLCAKKyAgICA0MTkwNSwgMCwgMCwgMTA3NzUsIDk3OTMsIDUwMDksIDAsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIAorICAgIDY0NTI5LCA0MTQwOCwgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDk4Mzc2NywgCisgICAgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgMCwgMCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDEyODA1OCwgNjk4NDQsIAorICAgIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCA0MjYwMCwgMCwgNDMyMDMsIDAsIDk4Mzc5MCwgNDMyODYsIDAsIDEyODIxMSwgCisgICAgNDM3NzgsIDAsIDQxMzA1LCA3ODc3NiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMCwgNzAzMSwgODU5LCAwLCAwLCAwLCA2MDU5LCAKKyAgICAxMjY5ODUsIDU1MjM1LCAwLCA4NTM1LCAwLCA2NTE5NiwgMTk0Nzg3LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCAKKyAgICA0MjIzMywgNjQxNDAsIDk5NDYsIDYzODg1LCAxOTQ3OTIsIDExODIyLCAwLCA0MzE4OSwgOTgzODg5LCAwLCAxNzg4LCAKKyAgICAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAwLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA5NDA1NSwgMCwgMTI4NSwgNjQ4ODIsIAorICAgIDQxMjQyLCA3MDA4NiwgMCwgMTI2NDAsIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCAKKyAgICA0Mzc1NCwgMzM5NiwgMTI2NDIsIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAKKyAgICAxMjA1MTYsIDExODk4OSwgMCwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgCisgICAgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAwLCA5MjY0MywgMCwgMTk0NjczLCAKICAgICAxMjAzMiwgMCwgOTcyNSwgMCwgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIAotICAgIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDAsIDAsIDQzNzAxLCA0MzE5OCwgNzE4NCwgMTIwNjczLCAKKyAgICA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAyMjA4LCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgCiAgICAgMTk0Nzk3LCA5MTc4MTksIDEwMDg1LCAxMTk5OTIsIDAsIDExOTk5MywgNjYzNCwgOTIzNzMsIDAsIDExOTMyMywgODA3MiwgCiAgICAgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgNzc4MywgOTE3OTkyLCAxMjM5OCwgODIzNywgMCwgMCwgMTIzOTUsIDAsIAotICAgIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAxMjcwMTEsIDkxNzg1NCwgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCAwLCA3ODEwNywgCisgICAgMTI2OTc3LCAxMjA1NjUsIDk5MTQsIDIyMTcsIDkxNzg1NCwgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCAwLCA3ODEwNywgCiAgICAgMCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMCwgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAKICAgICAxMjA0MjIsIDAsIDE3MTAsIDAsIDAsIDY1NjA3LCAwLCA0OSwgNjYyNywgMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCAKICAgICA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCA2NDQxOCwgMTY0MywgNjUyMTMsIDg0MDUsIDM0NzAsIDEyODIyNSwgMTMyMTMsIAotICAgIDQyNDUyLCA3ODMzMSwgMCwgNzg0NDUsIDAsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgCi0gICAgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIDEyNjMyLCAKLSAgICAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIAotICAgIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDAsIDAsIDE0OTQsIDAsIDAsIDAsIDExNjkzLCAwLCAxMDQ5NCwgCi0gICAgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCA3Mzc5NCwgMCwgODAyMiwgMCwgCi0gICAgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDE5NDgyOSwgOTE3OTk0LCAwLCA5MTc5OTUsIDU1NzAsIDE4ODEsIDcyMTAsIDAsIAotICAgIDEwMTIsIDY2NjMwLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCA1NTY5LCAwLCA0MjMzOSwgMCwgNjA2MywgMCwgMCwgCi0gICAgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgOTIyMDEsIDY0NzI3LCA5MTYwLCAxOTQ4MjcsIDAsIDAsIDkyMTgwLCAxMDUwMywgCi0gICAgMTE4ODEwLCA2MDU1LCAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCAKLSAgICA5MjIwNCwgMCwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgCi0gICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAKLSAgICAxMjAxMDEsIDU4OSwgNzA1MCwgMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMCwgNzQwOTksIAotICAgIDQyNjQ1LCAwLCAxOTQ4MTUsIDg1ODMsIDAsIDU4NDcsIDY5MjgsIDAsIDAsIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgCi0gICAgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDAsIDAsIDgxMjAsIDEyMDcwMSwgMCwgMCwgMTI4MDEyLCAKLSAgICA0MTA2MywgMCwgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgMCwgMCwgOTY3MywgNjYzMzQsIAotICAgIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgMCwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCAKLSAgICAxOTUwMjUsIDc0MDk0LCAwLCAwLCA3Nzk3MCwgMCwgMCwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIAotICAgIDY3ODkzLCA1NDkyLCA2OTIzLCAxMjgwOTksIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCAKLSAgICA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDkxNzk1OSwgNTg1MywgMTMwNjMsIAotICAgIDEwMzYzLCAwLCAxMjk1NiwgMTI4MTY5LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAwLCA3ODM5MiwgMTI4MjYsIAotICAgIDYzMjksIDAsIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCAKLSAgICA0MzQyMCwgNzgzOTYsIDEyNzA1NywgMjY5NSwgNDIxNzEsIDAsIDAsIDAsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIAotICAgIDEyMTI1LCAxMjc2NiwgMCwgMTE2NCwgMCwgMCwgNDE5MTgsIDAsIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAKLSAgICAxMjgwMDEsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIAotICAgIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCAKLSAgICA0Mjg0MywgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgCi0gICAgODkyMiwgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIAotICAgIDEzMjYyLCA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCAKLSAgICA1Mjk1LCA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgCi0gICAgNDE0MTMsIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCAKLSAgICA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgCi0gICAgMCwgNjc2NDgsIDEyMDQ5OSwgOTE3NTUzLCA0MjU3LCAxMjEwNCwgNzc5NDIsIDYyMjAsIDkwMDQsIDY1NTYxLCAwLCAKLSAgICA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDAsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCAKLSAgICA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgMCwgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAKLSAgICAwLCAwLCA2NDY5LCA3NDIyNywgMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIAotICAgIDAsIDAsIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCAKLSAgICA3NDYwNiwgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCAwLCA2NTg5OCwgMCwgNjUzMTIsIDU0NDcsIDAsIAorICAgIDQyNDUyLCA3ODMzMSwgMTIwNjY0LCA3ODQ0NSwgMCwgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIAorICAgIDQxMTMyLCA2NTY3NSwgMTA4MCwgMTIwMDAyLCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgMCwgCisgICAgMTI2MzIsIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAwLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgCisgICAgMTA5MSwgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAwLCA2NjMwOSwgMCwgMCwgMTQ5NCwgOTgzMTQ2LCAxMjY2MTMsIDAsIAorICAgIDExNjkzLCAxMjY1MTMsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMCwgMCwgMCwgMCwgNjQ1ODIsIDAsIAorICAgIDczNzk0LCAwLCA4MDIyLCAwLCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgOTQwNjksIDkxNzk5NCwgOTE3OTkzLCA5MTc5OTUsIAorICAgIDU1NzAsIDE4ODEsIDcyMTAsIDAsIDEwMTIsIDQzNzUyLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCA1NTY5LCA5ODMyMzYsIAorICAgIDQyMzM5LCAwLCA2MDYzLCAwLCA3ODM4MywgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgOTIyMDEsIDY0NzI3LCA5MTYwLCAKKyAgICAxOTQ4MjcsIDAsIDAsIDkyMTgwLCAxMDUwMywgMTE4ODEwLCA2MDU1LCAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIAorICAgIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgOTgzMTE2LCAwLCAxMjAxMTksIDc4MzMzLCAxMjAxMTcsIAorICAgIDEyMDExOCwgMTIwMDk5LCAxMjAxMDAsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCAxMjAxMDcsIAorICAgIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIDEyMDEwMSwgNTg5LCA3MDUwLCA5ODM3OTEsIDQzMjgxLCAKKyAgICAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAwLCAxOTQ4MTUsIDg1ODMsIAorICAgIDAsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgCisgICAgNDI1NjEsIDEyMDYyNiwgOTgzMjQ1LCAwLCA4MTIwLCAxMjA3MDEsIDAsIDAsIDEyODAxMiwgNDEwNjMsIDAsIDEwNjY0LCAwLCAKKyAgICA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIDAsIDAsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIDExODk2MCwgCisgICAgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDk4MzY2MiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCAxOTUwMjUsIDc0MDk0LCAwLCAKKyAgICAwLCA3Nzk3MCwgOTgzNTYwLCAwLCAxMjgxNzUsIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIAorICAgIDY5MjMsIDkyMjgxLCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgNjY2MzUsIDEyMDE5LCAwLCAKKyAgICAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCA5MTc5NTksIDU4NTMsIDEzMDYzLCAxMDM2MywgMCwgMTI5NTYsIAorICAgIDEyODE2OSwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAxMDUxNCwgCisgICAgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIDc4Mzk2LCAKKyAgICAxMjcwNTcsIDI2OTUsIDQyMTcxLCAwLCAwLCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAxMjEyNSwgMTI3NjYsIDAsIAorICAgIDExNjQsIDEyODgxNywgMCwgNDE5MTgsIDk4MzE2OCwgMTI3NTQyLCA4Njg3LCA2NjAwOSwgMTIxNzgsIDcwNTMsIDEyODAwMSwgCisgICAgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDEyMDUzOCwgNjQyNywgNDI4ODQsIDQxMTIzLCAwLCAwLCA0Mjg3MywgNDExMjYsIAorICAgIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCAwLCA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCAKKyAgICA2NTkxLCA5MzQwLCAwLCAxNTg5LCAwLCAyOTYsIDc0NDM4LCA3ODg1MiwgMCwgNjc4NDEsIDc0MzcwLCAwLCA4OTIyLCAKKyAgICAxMjgwNjgsIDc0NjAwLCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIAorICAgIDY1NTkwLCA1Mjk5LCAwLCAxMTQ3MywgNTQ0OSwgMTI1MiwgMCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIAorICAgIDkxNzU2OSwgNzQxMTQsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgCisgICAgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgMTI3MDI5LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIAorICAgIDYxNTAsIDY2MzYsIDQzNzAsIDAsIDAsIDc0MTc4LCA3NDU4NywgNzQxMTcsIDAsIDAsIDAsIDQ5ODYsIDEyMTg5LCAwLCAKKyAgICA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDc3OTQyLCA2MjIwLCA5MDA0LCA2NTU2MSwgMCwgNzc5NDksIDAsIAorICAgIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCAwLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIDkyNTU2LCAKKyAgICA3Mzg5OCwgMTE5NzksIDcwMDUxLCAxMTg5MDAsIDkxNzg5NCwgMCwgOTYzNSwgMTI2MDAsIDg4NzEsIDAsIDAsIDAsIDY0NjksIAorICAgIDc0MjI3LCAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgMCwgMCwgMCwgMCwgCisgICAgNDI5MTYsIDAsIDAsIDAsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgMTI3MTM4LCAxMjgwODIsIDM0OTQsIDc0NjA2LCAKKyAgICA2NTU1LCAwLCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzIzOCwgNjUzMTIsIDU0NDcsIDAsIAogICAgIDEyODk1LCA2NTU5MywgNDAxMCwgMCwgNDExMDYsIDAsIDY0NDQ4LCAwLCA0MTEwNSwgMCwgNjU4MjAsIDYyMzIsIDAsIAogICAgIDEyODI4MCwgMCwgNDM2MDgsIDExOTA5MSwgMCwgNjUzOCwgNDMzNSwgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgCi0gICAgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgMCwgNDI4NzgsIDExNTAwLCAwLCAwLCA3NDU3OCwgMCwgNjU4MzIsIAotICAgIDAsIDAsIDAsIDc3OTc1LCAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgMCwgMCwgOTIzMDcsIDAsIDAsIAotICAgIDUxMzMsIDAsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCA5MzU0LCAwLCAwLCAwLCAyNDk2LCAxMTUxNiwgOTQ0LCAKLSAgICAxMTg4NTEsIDM4OTAsIDEyMTY4LCAxNDM4LCAwLCAwLCAwLCA0MTk0NywgMTIyMCwgMTIwODI4LCAxMjg1NTUsIDAsIDAsIAotICAgIDE1NzEsIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAwLCAzMTIsIDQxOTgwLCAwLCAwLCA3ODEyMCwgCi0gICAgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgCi0gICAgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgMCwgMCwgMTkwNiwgOTE3OTg2LCAxMTUzMiwgNzQwNzMsIDAsIAotICAgIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIDAsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgMCwgCi0gICAgMTk5MTgsIDEwNDY5LCAwLCAwLCA3NzAzLCA4ODQwLCA4MDM1LCAwLCAwLCA5MjQ5MSwgMCwgNjEyOSwgMCwgMCwgMTI4MjY4LCAKLSAgICAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCA3NDI3OCwgNjM4ODYsIDExODg4MSwgOTYwNSwgNzM4OTIsIAotICAgIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgMCwgMCwgMCwgNTI0MCwgOTgxMSwgMTAwMTIsIDMwOTYsIAotICAgIDAsIDAsIDAsIDY2Njc2LCA2NTg3MywgMCwgMCwgMCwgOTUwMSwgMCwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgCi0gICAgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCAwLCA5MTc4MTIsIDAsIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE5OTM1LCAwLCA5MjE2MiwgNjk2NzYsIDAsIDAsIDAsIDUyNzUsIDAsIDAsIDg2MzcsIDAsIDAsIDM3ODksIDYzODgwLCAKLSAgICAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCAxMjgxMzgsIDI0MjYsIDEyMDQyLCA5MjE5NCwgMCwgCi0gICAgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAKLSAgICAxMTY2NywgNDI2ODYsIDc3OTczLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAwLCAwLCAzMjM3LCAwLCAKLSAgICA2ODIxNSwgMCwgODU0MSwgNzgyOTgsIDAsIDQxODY2LCAwLCAwLCAwLCAwLCAwLCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIAotICAgIDQxOTQwLCA4Mjk5LCA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIAotICAgIDAsIDQxNjk5LCAxMDc2MiwgNDM3ODAsIDEyOTk5LCAwLCAwLCA4MTA2LCA0MTI4LCAwLCAwLCA0NDk0LCAwLCA0MDEyLCAKLSAgICAxMDM5NSwgMCwgNDM2MzMsIDY1NDQ3LCAwLCAwLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgMCwgNDI3NTUsIAotICAgIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA5MjI4MSwgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgCi0gICAgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDkxNzkxMSwgMCwgMCwgMzk4NSwgOTE3OTEyLCAKLSAgICA2NTg2MCwgNjM5MjEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA5MTc4MDUsIDEyODA5LCA2NDA2LCA0Njg1LCA5MjUwNSwgMTA4NzksIAotICAgIDEwMzQ3LCA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgMCwgOTE3OTA3LCAwLCA0MTk1OCwgMTE5MTc2LCAKLSAgICA5MTc5MDgsIDAsIDAsIDQyNjU3LCA5MjQ2OCwgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDAsIDExNzE3LCAKLSAgICA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDAsIDM4OTEsIDAsIAotICAgIDAsIDIzMzcsIDE3MzUsIDc0MzI0LCA2Nzg2MCwgMjM2MywgMCwgMCwgNDM1NjEsIDAsIDAsIDc0MTQ2LCAxODYwLCA3NDk1LCAKLSAgICA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgMCwgMTIwMzQ3LCA3NzI3LCAwLCA4NDk4LCA2OTgxOCwgCi0gICAgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIDAsIDEyNTMzLCAwLCAKLSAgICA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMCwgNzQ4MDAsIDAsIDAsIDExOTgwLCAxMjg2NTAsIDAsIDYzODk0LCAxMjA3NjAsIAotICAgIDEyMjgyLCA2NjE5MiwgMCwgNzQ1OTIsIDg4NTAsIDc0Mjc1LCA5MjM4LCAxMDYxNywgOTE3NTQ1LCAwLCA5MjYyNSwgMCwgCi0gICAgMTI3OTEsIDAsIDAsIDAsIDQ0NDcsIDczNzMyLCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMCwgNzgwODcsIDEyNzkwLCAKLSAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxOTQ5MzgsIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAotICAgIDQxMzEwLCAwLCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgCi0gICAgOTAxMCwgMTEzMTUsIDAsIDI3OCwgMCwgNDE0MDUsIDExOTI1NCwgMCwgMTAwNzcsIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIAotICAgIDAsIDYwMDIsIDAsIDQzNTUzLCAwLCA2NzkwMywgMCwgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMCwgMCwgMCwgODY0NiwgCi0gICAgMCwgNzc4MjksIDAsIDAsIDY0MTMsIDY1NTAsIDAsIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIAotICAgIDEwMDQ0LCAwLCAwLCAwLCA2ODY1OSwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDAsIDAsIAorICAgIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDk4MzY2NSwgNDI4NzgsIDExNTAwLCAwLCAwLCA3NDU3OCwgMCwgCisgICAgNjU4MzIsIDAsIDAsIDAsIDc3OTc1LCAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgMCwgMCwgOTIzMDcsIAorICAgIDAsIDAsIDUxMzMsIDAsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDAsIDAsIDI0OTYsIAorICAgIDExNTE2LCA5NDQsIDExODg1MSwgMzg5MCwgMTIxNjgsIDE0MzgsIDAsIDk4MzExNywgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgCisgICAgMTI4NTU1LCAwLCAwLCAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgCisgICAgOTgzOTM1LCAwLCA3ODEyMCwgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIAorICAgIDY1MTIxLCAxMDg2MiwgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgMCwgMCwgMTkwNiwgOTE3OTg2LCAKKyAgICAxMTUzMiwgNzQwNzMsIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgOTE3ODk1LCA2NDI4NywgMCwgNzgxMTUsIAorICAgIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgCisgICAgOTIyMzAsIDAsIDYxMjksIDAsIDEyODUyOCwgMTI4MjY4LCAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCAKKyAgICA3MDEwMiwgNjM4ODYsIDExODg4MSwgOTYwNSwgNzEzMDgsIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgCisgICAgMCwgMCwgMCwgNTI0MCwgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDk4MzM0MywgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCAKKyAgICA5NTAxLCAwLCAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIAorICAgIDAsIDkxNzgxMiwgMCwgMTE4ODk5LCAxMjE5MywgMCwgMCwgMCwgMCwgOTgzMzQ1LCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAKKyAgICAwLCAwLCAwLCA1Mjc1LCAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIAorICAgIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkwMiwgOTUzNywgMzk2MSwgMTIxMTUsIAorICAgIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAxMTY2NywgNDI2ODYsIDc3OTczLCAKKyAgICA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAwLCAwLCAzMjM3LCAwLCA2ODIxNSwgOTE3OTA0LCA4NTQxLCAKKyAgICA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAwLCAwLCAwLCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgCisgICAgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAwLCAKKyAgICA0MTY5OSwgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgMCwgNDAxMiwgCisgICAgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCAxMjY1MTEsIDAsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAwLCAKKyAgICA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgNzUxNSwgMzg2OCwgCisgICAgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgOTE3OTExLCAwLCAxMjg2ODgsIDM5ODUsIAorICAgIDkxNzkxMiwgNjU4NjAsIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgCisgICAgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgCisgICAgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAwLCAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIAorICAgIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgCisgICAgNzgwODIsIDk2NTEsIDAsIDM4OTEsIDAsIDAsIDIzMzcsIDE3MzUsIDc0MzI0LCA2Nzg2MCwgMjM2MywgOTgzMTM1LCAwLCAKKyAgICA0MzU2MSwgMCwgMCwgNzQxNDYsIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCAKKyAgICAwLCAxMjAzNDcsIDc3MjcsIDAsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIAorICAgIDEyNTM0LCAxMjEyNCwgNzY5MCwgMCwgMTI1MzMsIDk4Mzg3MCwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAKKyAgICAwLCA2Nzk3NCwgMTE5ODAsIDEyODY1MCwgOTgzNzkyLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCAKKyAgICA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIDEyNzkxLCAwLCAwLCAxMjc4NDMsIDQ0NDcsIAorICAgIDczNzMyLCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMCwgNzgwODcsIDEyNzkwLCA0MTQwMCwgMTE5MTI4LCA2NjYwNywgCisgICAgMTI3OTIsIDQyMjMyLCAxOTQ5MzgsIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIDQxMzEwLCA5ODM4NjAsIDQxMzk5LCAwLCAKKyAgICAwLCA1NTI1OCwgMCwgMTI2OTAsIDAsIDAsIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgMCwgCisgICAgMjc4LCAwLCA0MTQwNSwgMTE5MjU0LCAwLCAxMDA3NywgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgMCwgCisgICAgNDM1NTMsIDAsIDY3OTAzLCAwLCAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAwLCAwLCAwLCA4NjQ2LCA5ODMxODYsIAorICAgIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMCwgMTk0MCwgMCwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgCisgICAgMTAwNDQsIDEyODMyMiwgMCwgMCwgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAKICAgICAxMDI5NywgMCwgMzc0MiwgMCwgMzk1OSwgMCwgMCwgMCwgMjQ2NywgMCwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDAsIAotICAgIDYzODQ1LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAKLSAgICAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIDQxMDYwLCAwLCAwLCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIAotICAgIDEyMDI2MCwgMCwgNjUyNTYsIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgCisgICAgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIAorICAgIDExNTQwLCA0MzU0NiwgNjY5MiwgMCwgNDEwNjAsIDAsIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgCisgICAgOTY3NywgMTIwMjYwLCAwLCA2NTI1NiwgMCwgNzQwNzAsIDAsIDAsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAKICAgICAxMjgyMzYsIDAsIDEyMDQ3MiwgNTUxNiwgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDczODI3LCA1NDQsIDEyMDQ1LCAKLSAgICA2Mjc4LCAwLCA1NTE1LCAwLCAwLCAwLCA2NTMzOSwgNDMyMjEsIDY1MTk0LCAwLCA1NTE3LCAwLCAwLCA3NDg0MSwgNjc4ODQsIAotICAgIDAsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDAsIDAsIDY3ODc5LCAxMjcxODgsIDE5MDIsIAotICAgIDY3ODg3LCA5NjM4LCAxMjk3NiwgMCwgMTI0ODMsIDEyMzY4LCA0MTc2OSwgNDI3MjYsIDQxNzY1LCAxMjg4MTksIDY2NjcsIAotICAgIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCA2Nzg4OSwgMCwgMTMxMSwgOTE3OTY2LCAKLSAgICA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMCwgOTQ5LCA3ODE2MiwgMCwgCi0gICAgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCAwLCAwLCA0MjcxNSwgMCwgMCwgMCwgNjM4NzEsIDAsIDQxNzk2LCAxMjY5LCAKLSAgICA2NTMwLCAwLCA2NTA1NywgMCwgNTE0NCwgMTIyMjEsIDQyNzE2LCAwLCA0NDMxLCA0MzMxLCAwLCAxMjg2NzUsIDQxODM0LCAKLSAgICA1Mjc5LCAwLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDEyODgyNSwgMCwgNzgxNjUsIDY2MDM2LCAwLCAwLCA2NDI4LCAKLSAgICA0MjI3MCwgMCwgMCwgNDMwNTksIDQyNjY2LCA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCAwLCA5NDkzLCAwLCA0MTAxNCwgCi0gICAgMTE3OTMsIDAsIDAsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCAwLCAxMTk2MzIsIDAsIDY1NjAsIDcwMTYsIDc0Mjc0LCAKLSAgICAwLCA0MzU1NiwgMzkyOSwgNzM5MDAsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgMTI3OTYsIAotICAgIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKLSAgICAxMjc3NTMsIDc0MzE1LCA3NDM2MSwgODI1MywgODgxNywgMTEzNiwgMCwgNDM1NjMsIDkyMjMyLCAwLCAxOTQ3NTAsIDczOTIsIAotICAgIDgyMzAsIDkzNjUsIDAsIDAsIDAsIDAsIDAsIDQwNDEsIDAsIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCAxMTk4ODUsIAotICAgIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgCi0gICAgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAKLSAgICAxMDQ3MCwgMCwgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMCwgMCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgCi0gICAgMTIzMywgMCwgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgMTE4Nzk5LCAwLCAxMDkyNywgMTcwMSwgMCwgCisgICAgNjI3OCwgMCwgNTUxNSwgMCwgMCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDAsIDAsIDc0ODQxLCAKKyAgICA2Nzg4NCwgMCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMCwgMCwgNjc4NzksIDEyNzE4OCwgCisgICAgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgCisgICAgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIDY3ODg5LCAwLCAxMzExLCAKKyAgICA5MTc5NjYsIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMjg4ODAsIDY5MTcsIDc4MTU1LCAwLCA5NDksIAorICAgIDc4MTYyLCAwLCA2MTQ4LCA4NjA1LCA0MjI1MywgNzgxNzcsIDAsIDAsIDQyNzE1LCAwLCAwLCAwLCA2Mzg3MSwgMCwgCisgICAgNDE3OTYsIDEyNjksIDY1MzAsIDAsIDY1MDU3LCAwLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDAsIDQ0MzEsIDQzMzEsIAorICAgIDk4MzcyMCwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCAKKyAgICA2NjAzNiwgMCwgMCwgNjQyOCwgNDIyNzAsIDAsIDk4MzU5NiwgNDMwNTksIDQyNjY2LCA1MjU2LCAxMDY3LCAyNTUsIAorICAgIDEyMTMxLCA5ODM3MTMsIDk0OTMsIDk4Mzk1OSwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIDAsIDc0Mzk0LCA0MzQ2MCwgCisgICAgMTA2NTMsIDQyNzIzLCA5ODM4NDUsIDExOTYzMiwgMCwgNjU2MCwgNzAxNiwgNzQyNzQsIDk4MzYxNSwgNDM1NTYsIDM5MjksIAorICAgIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIAorICAgIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIAorICAgIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgMTk0NzUwLCA3MzkyLCA4MjMwLCA5MzY1LCAwLCAwLCAKKyAgICA5ODM2MDcsIDAsIDAsIDQwNDEsIDAsIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCAxMTk4ODUsIDExOTg4NCwgNDQwMDQsIAorICAgIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCAKKyAgICA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAxMDQ3MCwgMCwgCisgICAgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAwLCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCAKKyAgICA0NDAwOSwgNzgyODQsIDY2MzM4LCAwLCAwLCAxODM5LCAxMTg3OTksIDk4MzIxNywgMTA5MjcsIDE3MDEsIDk4MzY1NSwgCiAgICAgMjM4OCwgNDE3NDksIDQxNzYxLCA1NDUzLCA4MzYxLCAxMTk4NjUsIDQxNzU4LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAotICAgIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgMCwgMCwgNjU4MTIsIAotICAgIDkxNzgzMSwgMCwgNDE4MjQsIDAsIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgCisgICAgOTI0OTMsIDc4Njc3LCAwLCA5MjQyOSwgNzgxNzQsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIDAsIDY1ODEyLCAKKyAgICA5MTc4MzEsIDAsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCAxOTQ4MDAsIDE5NDgwMywgNDI3MDAsIDE5NDgwNSwgMTI3OTgwLCAKICAgICAxOTQ4MDcsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAwLCAwLCA0NDkzLCA0MzM2LCAwLCAyMzE0LCA0MzYwMiwgNzg4MjYsIAotICAgIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgNDQ4OSwgMTk0NzkxLCAwLCAxOTQ3OTMsIAotICAgIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIAotICAgIDE0MTAsIDkyNjcxLCAwLCAxMTg4NzgsIDAsIDAsIDk5MTksIDAsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTI3OTc1LCA3ODE4OCwgCi0gICAgNDg5MiwgNzQwMTYsIDE5NDc4MSwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMCwgNzU5LCA2NTc0OSwgMjA3OSwgCi0gICAgNjUyNDgsIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDAsIDEwMjIzLCA0MjA2MiwgMCwgMCwgMCwgMzY2OCwgNjU3NTQsIDQzNTYwLCAKLSAgICAxMjIyNiwgMCwgNjUxNDksIDIzNDAsIDQxOTU5LCAxOTQ3ODYsIDE5NDc4NSwgMTk0Nzg4LCA0MzYxOCwgNjU3NDcsIAotICAgIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgOTI0MzYsIDg5MjEsIDk5NTIsIDAsIDAsIDQyNzE0LCA5OTUxLCAKLSAgICA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCA0MTgyMCwgNDMwMzgsIAotICAgIDIzOTUsIDAsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCAxMjAwNTgsIDY4MjIwLCAxMjgxNDMsIDQyODA5LCA0MjgwNywgMCwgCi0gICAgMTIwMDQ2LCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCAwLCA0MTg5OCwgMjM2MCwgNDE3OTQsIDkxNzk0MiwgCi0gICAgMCwgMTI3ODE4LCAwLCAwLCAyNDE4LCAwLCAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgCi0gICAgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCA5MjIwMywgMCwgMTAzODQsIDAsIDAsIAotICAgIDAsIDc3NTMsIDIzNTEsIDY2NTUsIDY0NDg5LCAwLCAwLCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIAotICAgIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgCi0gICAgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgCi0gICAgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIAotICAgIDkyMTc4LCAwLCA5MDY1LCAxMjk2MSwgMCwgMCwgOTIyNTMsIDAsIDI4OSwgMCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIAotICAgIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCAwLCA0MjcyNCwgMCwgNDY4OCwgMTIwNDU0LCAwLCAwLCAxMTk2MjksIDgyMzgsIAotICAgIDMxMTAsIDEyMDE2MiwgMCwgMTIwMTYzLCA2NTI4LCAxMjc1NTMsIDQzMDM1LCAxMjAxNjEsIDIxOCwgMCwgMTUyMCwgMCwgCi0gICAgNDc4NiwgMCwgNDMyMjUsIDQ2MDIsIDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMCwgMTIwMTU2LCA0Mzk3OCwgODk4OCwgCi0gICAgODg4OCwgMCwgMCwgMCwgMCwgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMCwgMCwgOTk3NSwgMCwgMTE5OTAyLCA0Njg5LCAKLSAgICA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCA3NDQ0MSwgNzg4MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDY1LCAKLSAgICA4MjA3LCAwLCA5MjYxMywgMTI4MDExLCAwLCA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCAwLCAwLCAwLCAwLCAKLSAgICA0MTkyOSwgMCwgMCwgNjY2NzQsIDQxOTI2LCAxMjA0MDgsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDAsIDUyLCAKLSAgICAxMzExOCwgNjQ3NSwgMCwgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCAwLCA3NDA4NSwgMCwgMzk3OCwgCi0gICAgMCwgOTE3OTQ1LCAxMjc4MjMsIDExNTgyLCAxMjA3NjEsIDEyMjgxLCAwLCA2NTQ0LCAxMzI0MSwgMCwgNjk3ODIsIAorICAgIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgNDQ4OSwgNzEzMzEsIDAsIDE5NDc5MywgMTkxMiwgCisgICAgNDIzODUsIDEwMzA2LCAxMDM3MCwgMCwgMCwgODg2NywgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3ODgyMSwgMTQxMCwgCisgICAgOTI2NzEsIDk4MzI0NCwgMTE4ODc4LCAwLCAwLCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTI3OTc1LCAKKyAgICA3ODE4OCwgNDg5MiwgNzQwMTYsIDE5NDc4MSwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMCwgNzU5LCA2NTc0OSwgCisgICAgMjA3OSwgNjUyNDgsIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDAsIDEwMjIzLCA0MjA2MiwgMCwgMCwgMTI2NTczLCAzNjY4LCAKKyAgICA2NTc1NCwgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCAxOTQ3ODYsIDE5NDc4NSwgMTk0Nzg4LCAKKyAgICA0MzYxOCwgNjU3NDcsIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgOTI0MzYsIDg5MjEsIDk5NTIsIDAsIDAsIAorICAgIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKKyAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTI4NTYzLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA0MjgwOSwgNDI4MDcsIDAsIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIDQxODk4LCAKKyAgICAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MTMxNCwgMTI3ODE4LCAwLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIDExMzM2LCA3OTksIAorICAgIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgMTAyNjAsIDExODk4MCwgCisgICAgNTUyODQsIDkyMjAzLCAwLCAxMDM4NCwgOTgzMjE4LCAwLCAwLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDAsIAorICAgIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAwLCAwLCA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgCisgICAgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCAwLCAKKyAgICA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCAwLCAwLCAwLCA0MTg4NywgMCwgCisgICAgNDg2MiwgOTczNSwgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgOTIxNzgsIDkzOTc2LCA5MDY1LCAxMjk2MSwgMCwgMCwgCisgICAgOTIyNTMsIDAsIDI4OSwgMCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCA3Mzg5MywgCisgICAgNDI3MjQsIDAsIDQ2ODgsIDEyMDQ1NCwgMCwgMCwgNjc5OTQsIDgyMzgsIDMxMTAsIDEyMDE2MiwgOTgzODk5LCAxMjAxNjMsIAorICAgIDY1MjgsIDEyNzU1MywgNDMwMzUsIDY5ODk4LCAyMTgsIDAsIDE1MjAsIDAsIDQ3ODYsIDAsIDQzMjI1LCA0NjAyLCAwLCAKKyAgICA3ODE2NywgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCAKKyAgICA3MzkwMiwgNjk3NDAsIDAsIDAsIDk5NzUsIDEyODAzOSwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCAKKyAgICA3NDQ0MSwgNzg4MTAsIDAsIDAsIDY3OTg3LCAwLCAwLCAwLCA2Nzk4OSwgMCwgMTAwNjUsIDgyMDcsIDAsIDkyNjEzLCAKKyAgICAxMjgwMTEsIDAsIDY2MiwgMCwgOTI0NCwgMTk0ODYzLCAwLCAxMTkyNjEsIDk4MzQyMCwgMCwgMCwgMCwgNDE5MjksIDAsIDAsIAorICAgIDY2Njc0LCA0MTkyNiwgMTIwNDA4LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCAKKyAgICA2NDc1LCAwLCAxMjAzNDEsIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDAsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMCwgCisgICAgOTE3OTQ1LCAxMjc4MjMsIDExNTgyLCAxMjA3NjEsIDEyMjgxLCAwLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAKICAgICAxMjg1NTcsIDE5NDg2MCwgMTE3NjUsIDY1MjU4LCAxMDM2OSwgMCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgMTUwMCwgCiAgICAgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCA3NDAyMSwgCi0gICAgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDkyMjY2LCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgOTE3OTMzLCAKKyAgICA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgOTIyNjYsIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3NDE5MSwgCiAgICAgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCAKICAgICA2NTUxNCwgMCwgNjM5NDAsIDEyODcwNiwgNjQ1MzMsIDEyMDEyOSwgMCwgNjc4NDIsIDExOTkwLCA5MjQzMCwgNjM5MzksIAotICAgIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCAwLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIDAsIAotICAgIDc0Mjk0LCAwLCA2OTIzOSwgMCwgMTE5MDI3LCAxMjk5MiwgMjc1MywgMTkzNiwgNzQ0OTEsIDkyNTc0LCAyNzUxLCAxMjY2MiwgCi0gICAgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCAwLCAwLCAwLCA2MzkyMCwgNzQxMjgsIAotICAgIDI4NTYsIDExOTkxMCwgNDcsIDExOTkxMSwgMTI2OTg2LCA2NTg1OCwgMCwgMCwgMCwgNzg5OSwgMCwgODQxNywgNDM3OTgsIAotICAgIDcwNzIsIDAsIDAsIDQwMzMsIDEyODE2NCwgNDM5OTIsIDAsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIDEyMzIwLCAwLCAwLCAwLCAKLSAgICAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDAsIDAsIDAsIDAsIDEyOTEsIDc0ODI4LCAwLCAwLCA5NTMxLCAxMzE1NSwgCi0gICAgODUwNSwgNjgzNzksIDEyMDYyLCAwLCAwLCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDEyMDQzMiwgMCwgMCwgMCwgCi0gICAgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgMCwgMTk0OTQ4LCAwLCAwLCAKLSAgICA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCAwLCAxMjYyNCwgMCwgMTY3MywgCi0gICAgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgOTgyMCwgMCwgCi0gICAgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCAwLCAwLCAwLCAwLCAwLCA3NDgyNiwgNjQ3MzMsIDAsIDAsIAotICAgIDM0OTEsIDAsIDAsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDAsIDc0OTIsIDAsIDc0NjA1LCA5MjQ4MywgNzUxNCwgMCwgMCwgCi0gICAgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIDIxOSwgMCwgMCwgNjkyLCA0MzU4OCwgCi0gICAgNzQ0MzMsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgMCwgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgCi0gICAgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgMCwgOTIzMDEsIDAsIDg4OTUsIDUyNTMsIDAsIDU0NTgsIDAsIDI4NjYsIDAsIAotICAgIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIDAsIDAsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgCi0gICAgNzA1OSwgMCwgMCwgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA3ODcwNiwgMTE4OTQxLCA2NDM5MiwgMTk0NzM1LCAwLCAKLSAgICAyODQ0LCAwLCA0MTk3NCwgMCwgMTIxMzksIDAsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIAotICAgIDE5NDc2NSwgMCwgNTMwOCwgMCwgMjkwLCAwLCAwLCAyODYyLCAyNzkyLCAxOTUwODgsIDAsIDAsIDMyNjgsIDY2NTkxLCAwLCAKLSAgICA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAwLCAxMDI0MCwgOTIzMzgsIDc0MzA1LCAwLCA3NDUyOCwgCi0gICAgNjU5MDMsIDAsIDQyNjQ2LCA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA3Nzk1NiwgNjQ0ODIsIDEyNzMzNywgODE2MywgCi0gICAgNjUyNzAsIDAsIDAsIDAsIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDExOTg5OCwgOTE3ODM3LCA0MzMyMywgMTIwNTEzLCAKLSAgICAxMTk4OTcsIDkwNzEsIDEyNzMzMywgMCwgMzY1NCwgNzc4OSwgOTYzNywgMCwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCAKLSAgICAxMTk4OTksIDY2NTg3LCAxOTUwOTgsIDAsIDkyNDAxLCAwLCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDAsIDEwNjI5LCAKLSAgICAwLCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTI3MzI3LCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgCi0gICAgNDMxOTMsIDEwNzM3LCAzNDYzLCAwLCAwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIDEyMzQ1LCA3MDQ5LCAwLCAKLSAgICA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCAwLCAwLCAwLCAxMjgwNDEsIDAsIDkyMzg1LCAxMjYyLCAwLCA2NTYxLCAxOTkzOSwgCi0gICAgMCwgMCwgMCwgMTE5OTA2LCAwLCAwLCAwLCAwLCAwLCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMCwgMCwgMCwgMTUwMiwgMCwgCi0gICAgMCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzQxMzIsIDEyMDc1OCwgMCwgNzQwNTcsIAotICAgIDk2MDMsIDAsIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgMCwgNTkwLCA3NTc5LCAKLSAgICA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgMCwgNDc5OCwgMCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgCi0gICAgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgMCwgNjg2MjYsIDg5NCwgMzAwLCA5MTc4MTMsIDEyMzA2LCAKLSAgICA2NjIzNSwgODAwNCwgMCwgMCwgMjU2MiwgMCwgMCwgNDI1MDMsIDAsIDExNjUyLCAwLCAwLCAxMTkyNDEsIDkyNjQ5LCAwLCAKLSAgICA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAxMTk2MzgsIDAsIDEzMTU2LCAwLCAKLSAgICAxMDgzMiwgNTA5MywgMCwgMCwgMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIAotICAgIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgMCwgMTI3MzcxLCA0Mjg4MSwgMCwgCisgICAgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDk4MzkwMSwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAKKyAgICA5ODMzNTMsIDc0Mjk0LCA5ODM5MDUsIDY5MjM5LCAwLCAxMTkwMjcsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgOTI1NzQsIAorICAgIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDAsIDAsIDAsIAorICAgIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIAorICAgIDg0MTcsIDQzNzk4LCA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKKyAgICAxMjMyMCwgMCwgMCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDAsIDAsIDAsIDAsIDEyOTEsIDc0ODI4LCAKKyAgICAwLCAwLCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAwLCAwLCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIAorICAgIDEyMDQzMiwgMCwgMCwgMCwgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgCisgICAgMCwgMTk0OTQ4LCAwLCAwLCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCAwLCAKKyAgICAxMjYyNCwgMCwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIAorICAgIDExOTU5OCwgOTgyMCwgMCwgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgMCwgMCwgMCwgMCwgCisgICAgNzQ4MjYsIDY0NzMzLCAwLCAwLCAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgCisgICAgOTI0ODMsIDc1MTQsIDk4MzM1OSwgMCwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIAorICAgIDIxOSwgMCwgMCwgNjkyLCA0MzU4OCwgNzQ0MzMsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgOTM5OTEsIAorICAgIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCAKKyAgICA1MjUzLCA3MDAyNSwgNTQ1OCwgMCwgMjg2NiwgMCwgMTI3ODYwLCA2NTExMSwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMCwgCisgICAgMTIwNTgzLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY2OCwgMCwgOTYwNCwgNzg3MDAsIDc0NDEsIAorICAgIDYzODI2LCA2Nzk3MCwgMTE4OTQxLCA2NDM5MiwgMTk0NzM1LCA5ODM2NzgsIDI4NDQsIDk4MzkzMiwgNDE5NzQsIDAsIAorICAgIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDAsIDMxMDQsIDE5NDczNCwgMCwgMTk0NzY1LCA5ODMyMjcsIAorICAgIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCA5ODMwNzAsIDAsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCAKKyAgICA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAwLCAxMDI0MCwgOTIzMzgsIDc0MzA1LCAwLCA3NDUyOCwgNjU5MDMsIAorICAgIDAsIDQyNjQ2LCA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA3Nzk1NiwgNjQ0ODIsIDEyNzMzNywgODE2MywgNjUyNzAsIDAsIAorICAgIDc3OTMyLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCAKKyAgICA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgMTE5ODk5LCAKKyAgICA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgOTgzODg1LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDAsIDEwNjI5LCAwLCAKKyAgICA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTI3MzI3LCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgCisgICAgNDMxOTMsIDEwNzM3LCAzNDYzLCA5ODMwNjUsIDAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgMTIzNDUsIAorICAgIDcwNDksIDExOTkxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgCisgICAgNjU2MSwgMTk5MzksIDAsIDAsIDEyODUzNSwgMTE5OTA2LCAwLCAwLCA5ODMwOTcsIDAsIDk4MzY1OCwgMTE5OTA3LCAKKyAgICA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDkxNzU2OCwgMCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgCisgICAgODQzMCwgMCwgNzQxMzIsIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDAsIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIAorICAgIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgMCwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAKKyAgICAxMTcyMSwgMCwgNDc5OCwgMCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCAKKyAgICA2ODYxMCwgMCwgNjg2MjYsIDg5NCwgMzAwLCA5MTc4MTMsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMCwgMjU2MiwgCisgICAgMTI2NTU1LCAwLCA0MjUwMywgMCwgMTE2NTIsIDAsIDAsIDExOTI0MSwgNjQ2OTksIDEyNjU2OSwgNTA5NiwgNTA5NSwgCisgICAgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgMTA4MzIsIDUwOTMsIAorICAgIDAsIDY5ODUyLCAwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIAorICAgIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCA3MTI5OSwgMTI3MzcxLCA0Mjg4MSwgMCwgCiAgICAgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgMCwgMCwgMTk0Nzg5LCAwLCA5MDc0LCA0MzQ4LCAKLSAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDAsIDU4NiwgCi0gICAgNzQ0MTQsIDY0MzU5LCAxMjY3LCAwLCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCA2NjY2NiwgCi0gICAgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIDc0NDA2LCAKLSAgICAxMjc4MzEsIDAsIDAsIDAsIDY2MjI1LCAwLCAwLCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIDAsIDEwMjkxLCAKLSAgICAxMDMyMywgMjgyNiwgMCwgMCwgMCwgNDIwMDgsIDk3MDgsIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgCi0gICAgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDAsIDAsIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMCwgNjU1ODgsIAotICAgIDAsIDAsIDAsIDg0MDEsIDAsIDQyMDE0LCAwLCA3MDMwLCAxOTQ3MDQsIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDAsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIDEwMTQ3LCAxMjkzNSwgMTI3NTY4LCAwLCAwLCAKLSAgICAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIAotICAgIDQxNjc1LCAwLCAyNzY1LCAwLCAwLCAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgCi0gICAgMTk0Njg1LCA3NDQxNiwgMCwgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODcsIDAsIDc3OTg2LCAKLSAgICAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIDcxNzcsIDEyMDUzMCwgMCwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCi0gICAgMCwgNjgwNiwgNjk5MiwgNDIwMTksIDAsIDQxMjkwLCAwLCA3NTAsIDAsIDAsIDEwMTYzLCA2MzkxMywgNzQwNjYsIDcwMzIsIAotICAgIDU5NTQsIDY0OTMxLCA0MzE0LCAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIDc3OTkzLCA3ODg5MSwgCi0gICAgMTMxNjUsIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI4Nzg0LCA0MTM3OCwgMTEwMDgsIDY5MzgsIAotICAgIDkyMjIyLCA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgMCwgMCwgMCwgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCAKLSAgICA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCAwLCAwLCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAotICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCAwLCAwLCAwLCAxMDY3NywgNjA0LCA0MTA5NywgCi0gICAgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIDM0MjUsIDEyNzQ4OCwgMCwgMjgzNiwgMCwgMCwgOTcwNywgMCwgNDMyMDIsIDAsIDAsIAotICAgIDY1MTk5LCAxNzM4LCA5MTc4MTgsIDEyODE1OCwgMjgzMiwgOTI3MDIsIDk2NzAsIDEyOTM3LCAwLCA2NjM3NCwgOTE3OTU2LCAKLSAgICAwLCAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDAsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIDEzMzEsIDAsIDAsIDAsIAotICAgIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAwLCAwLCAxMTkxMDksIDAsIDEyODY4MSwgMzE5LCAxMTg4NDcsIDQzNDc5LCA5NDc3LCAKLSAgICAwLCAwLCA1MDg3LCA5MjMyNSwgNzY0MCwgOTYsIDUwODYsIDAsIDkyMzc5LCAwLCA1MDg1LCA2NDI4NiwgOTI2NjUsIDAsIAotICAgIDQxNDIyLCAwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAwLCAwLCA1MDExLCAwLCAwLCAwLCAwLCAxMjcxNjUsIDEyNzI0MSwgCi0gICAgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMCwgMTE4OTIzLCA3MzczNCwgMCwgMTA5MzksIAotICAgIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAxMTk5MDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCAKLSAgICAwLCAzNjcxLCA4OTc2LCAwLCAwLCA0MTI3NSwgNjM3MiwgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCAKLSAgICA0MTI3MywgMCwgMCwgNjcyOCwgMCwgOTcxNSwgMCwgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAxMTg5MTksIDQyLCAKLSAgICAwLCA0MzY4OCwgMCwgMCwgNzQ1OCwgMCwgMCwgNjUzODUsIDExOTkwMCwgMCwgMTE5NTgsIDAsIDkxNzgyMiwgMCwgNjI1NCwgCi0gICAgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMCwgMCwgMCwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIAotICAgIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCA1NTU4LCA4ODc4LCAxMjgxMzYsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIAotICAgIDkwODYsIDY0NTY2LCAwLCA2NDU4NCwgNzQzNywgNzQ1NCwgMTI1OTQsIDEyODY5MCwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIAotICAgIDExOTkwOSwgNzQyNDMsIDAsIDM4MDUsIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgMCwgNzU0NCwgCi0gICAgMCwgNDM0NjksIDAsIDAsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDExOTExMywgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAwLCAKLSAgICA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgMCwgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgMCwgOTAxMSwgCi0gICAgOTYzMCwgOTI2MzMsIDAsIDAsIDU1MDYsIDAsIDE5MTEsIDY2NjUyLCAwLCA5OTYxLCA4ODQ1LCA2NjY5OCwgMCwgMTA3OTIsIAotICAgIDg4ODksIDAsIDIwOTgsIDAsIDY0NzUxLCAwLCA2NjYyMiwgMCwgMCwgNzQzNjQsIDAsIDAsIDAsIDc0MzY1LCA3NTUyLCAwLCAKLSAgICAwLCA2NTM4NCwgNzIyMywgNDU1OSwgMCwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA2NDUwMSwgMTIxMCwgMTk1MDc3LCAKLSAgICA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgMCwgMCwgMzgsIDg1MzMsIDY2NjY5LCAxMTkxMjQsIDAsIDAsIDAsIAotICAgIDQzNTcsIDAsIDExOTgzNywgMCwgNzQyMzMsIDk5NjcsIDExOTg1MiwgNDI4NjAsIDExOTgzOCwgMTA5NDEsIDY1NzIxLCAKLSAgICA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgCi0gICAgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyODY3NywgNjYyMTAsIDExODkxNCwgCi0gICAgNjYxMywgOTI0NzYsIDAsIDQzODE5LCAwLCAwLCA2NDcxNCwgMCwgMCwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgMCwgMTEwMjQsIAotICAgIDc0ODExLCA2NjIyOCwgMTA1NjMsIDAsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDAsIDE4MzcsIDAsIDYzOTcyLCA2OTU3LCAwLCAKLSAgICAxMjA1NTksIDQ5NTIsIDY1NzE4LCA2NTgyNywgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDAsIDEyNzAwNSwgCi0gICAgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDAsIDgxMDcsIDExOTIzNCwgMTEyNywgNDU1LCAwLCA2Mzk2OCwgMTI3OTI0LCAKLSAgICAzNDgzLCAxMTk1OTMsIDE5ODksIDAsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgOTI1MDksIDY2OTQsIDQyNjMzLCAKLSAgICAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDAsIDc0MDY0LCAwLCAxMDUyMSwgMCwgNDIxNzMsIDk3MDUsIAotICAgIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgCi0gICAgMTI3ODYyLCAxNDAzLCAxMjg4MzksIDEzNDcsIDk2MzEsIDc0NDQ0LCAwLCAwLCAwLCAwLCA4NjQwLCAwLCAyNTgsIDE2NTQsIAotICAgIDAsIDAsIDAsIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgCi0gICAgMTA4NjEsIDAsIDYzOTc2LCAwLCA2ODYyMywgMCwgNzQ1ODUsIDQxMzkxLCAwLCA5MTc5MDMsIDM3NiwgNjk4NywgOTIyMSwgCi0gICAgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgMCwgMTAxNTQsIDAsIDc0NDM5LCAyMDM5LCAKLSAgICAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIAotICAgIDAsIDY5NjcxLCA0MjExNSwgMCwgMTIyODgsIDc4MDU3LCAwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAKLSAgICAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCAwLCAwLCAwLCA4Nzk0LCA0MTI3OCwgCi0gICAgNDE2MjksIDEyMTU0LCAxMjgxOTIsIDQxMjc3LCA2NDY1OCwgMCwgNjQzODAsIDY2MjUsIDc0MzU0LCAxOTkwNCwgMCwgMCwgCi0gICAgMCwgNjUzNzEsIDcwNzgsIDAsIDgzMywgMCwgNjM2OSwgMCwgMTA5NzksIDQxOTUzLCAwLCA0MTQzNCwgNjA2MiwgMCwgMCwgCi0gICAgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIDAsIDAsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIAotICAgIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAKLSAgICAxOTk1NCwgOTgwNSwgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDAsIDUzODksIDkyNTk3LCAKLSAgICAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDAsIDAsIDY5NTYsIAotICAgIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgMCwgOTE3NTY2LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgCi0gICAgNzU5OCwgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCAwLCAKLSAgICA2Mzk1MiwgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIDExODg5NCwgMCwgNjk3OTYsIDQxMTgzLCAxMjkwNywgMTAyNzEsIAotICAgIDEwMjg3LCA2ODQsIDQzNTI1LCAwLCAyODU0LCAxMTk1ODYsIDQ1OTIsIDY1NzU1LCAwLCA5MjI1NiwgMTE5NjMsIDQzNjIwLCAKLSAgICAwLCA3ODg4OSwgMCwgMCwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDAsIDAsIDg2NDgsIDAsIDY3NDEsIAotICAgIDQzMDQ3LCAwLCAxMzE4MCwgMTI4NTE3LCA0MTgsIDkxNzk3MiwgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIDQxNzUyLCAKLSAgICA3NDMzOSwgODY0MSwgNDE0NDksIDAsIDc0MTAwLCAwLCAxMDkxMSwgNjk0MiwgMCwgMTAyNCwgNDI4NDksIDQxNzUxLCAKLSAgICA2OTc3NiwgODk0MSwgMCwgNDU1NCwgMCwgOTAyMywgMTE2ODUsIDAsIDk5MjgsIDc4NjE3LCAwLCAxMTQzNywgNDM3NDEsIAotICAgIDkyMTYzLCAxMjA3MDAsIDYzOTY3LCAwLCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDAsIDExNjgwLCAKLSAgICA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCA5MjE4MywgNjQ1MjMsIDEwMzQzLCAKLSAgICAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCAwLCAxMjA1MCwgNjgyMDEsIDI4NjAsIDAsIDAsIDAsIAotICAgIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAwLCA5MjM0MiwgMCwgODg3NSwgMCwgMCwgOTE3OTkxLCA3NTMxLCAKLSAgICAxMjg0NywgMjQxMywgMCwgNzg2MzUsIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMCwgMTU4MiwgMCwgNTUwOCwgMCwgCi0gICAgMCwgMCwgMTA4MDEsIDAsIDkyMzU0LCAwLCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIDAsIAotICAgIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIDExNTMsIAotICAgIDkyMTczLCA2NDc4OCwgMCwgODA1NCwgOTE3NCwgMTI4NjUyLCA5MTc5NzYsIDk5NjQsIDAsIDQxNjExLCA0NjQyLCA2NjU3NCwgCi0gICAgMTE1NTYsIDkxNzk4MiwgMCwgNzg4NTcsIDQyMDg5LCA3ODg1NSwgOTAwOCwgMCwgMCwgMTk1MDk2LCA0MjA3OSwgOTE3OTgxLCAKLSAgICA3NzkyNCwgNDI1MTMsIDAsIDQyODQyLCA3Mzk4NSwgNjUyODUsIDExODk3NCwgMTI3MDAzLCAwLCAwLCAwLCAwLCAxMTMzNSwgCi0gICAgNjQwNjksIDQyMDkzLCAzOTIwLCAwLCAwLCAwLCAwLCA0NTgwLCA0MTk2NywgMCwgNjQzODQsIDkyMTY3LCAxMTkxNTgsIAotICAgIDMwMjEsIDQyMDA0LCAwLCAwLCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDAsIDAsIDAsIDEyODE5MywgNjUyMDQsIDAsIAotICAgIDY4MTEzLCA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAxMjc4ODAsIDY4Mzk5LCAKLSAgICA0Mzk5OCwgMTEzNjAsIDAsIDAsIDAsIDExODgyNiwgNDIxNDksIDAsIDAsIDAsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAKLSAgICAxMjgwNzcsIDAsIDU1MjQ3LCA0MTEwLCA2NjAwNSwgNjk1OSwgMTA5MjksIDExOTExMCwgMCwgNjY3MDMsIDc3OTIxLCAKLSAgICA4NjE3LCA0MTk4MiwgNjAyNSwgNjkyNDIsIDAsIDAsIDAsIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgMCwgMTAxMTcsIDAsIAorICAgIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAwLCAwLCAwLCA3NDQyMywgNzEzNDUsIDU4NiwgCisgICAgNzQ0MTQsIDY0MzU5LCAxMjY3LCAxMjgyNjksIDY1NDY4LCAwLCA2NTczMSwgMCwgMTI3MTc5LCAzNjIxLCAxMjA0NzMsIAorICAgIDY2NjY2LCA2NDIxMSwgMCwgNjU2MiwgMTI5MjgsIDAsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMCwgMCwgMTcxNCwgCisgICAgNzQ0MDYsIDEyNzgzMSwgMCwgOTgzOTEyLCAwLCA2NjIyNSwgMCwgMCwgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAKKyAgICAwLCAxMDI5MSwgMTAzMjMsIDI4MjYsIDAsIDAsIDAsIDQyMDA4LCA5NzA4LCA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCAKKyAgICA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAwLCA5ODM5NjAsIDY1ODMzLCA3Nzg0OCwgMCwgCisgICAgMTc2NSwgMCwgMCwgNjU1ODgsIDAsIDAsIDAsIDg0MDEsIDAsIDQyMDE0LCAwLCA3MDMwLCAxOTQ3MDQsIDEwNDc5LCAKKyAgICA2NDk1OSwgMjg1MiwgMCwgMCwgMCwgMCwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDAsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIAorICAgIDEwMTQ3LCAxMjkzNSwgMTI3NTY4LCAxMjY0ODMsIDAsIDAsIDAsIDc4NzU3LCAwLCAwLCAwLCAwLCA5OTk0LCAxMjQ2NywgCisgICAgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIDcwODQsIDI3NjUsIDAsIDQzMzgyLCAwLCAxMjA3MTksIAorICAgIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMCwgMCwgNzc5ODgsIDI2MywgCisgICAgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODcsIDk4MzczMywgNzc5ODYsIDAsIDY5MzEsIDY5NzIyLCA2NDM1NSwgCisgICAgNzE3NywgNzAxMDUsIDAsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIDEyNjU3NSwgNjgwNiwgNjk5MiwgCisgICAgNDIwMTksIDAsIDQxMjkwLCA5ODM3MDcsIDc1MCwgMCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgNzEzMDAsIDcwMzIsIDU5NTQsIAorICAgIDY0OTMxLCA0MzE0LCAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIDc3OTkzLCA3ODg5MSwgMTMxNjUsIAorICAgIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI4Nzg0LCA0MTM3OCwgMTEwMDgsIDY5MzgsIDcwMDI2LCAKKyAgICA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgMCwgMCwgMCwgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgCisgICAgNDE0NzAsIDY0ODA1LCAwLCAwLCAxMjgyMTUsIDY0ODAxLCAwLCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgCisgICAgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIDU5NTIsIDEyODEsIDQzNzQ3LCAwLCAwLCAxMDY3NywgNjA0LCAKKyAgICA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIDM0MjUsIDEyNzQ4OCwgMCwgMjgzNiwgMCwgMCwgOTcwNywgMCwgNDMyMDIsIAorICAgIDAsIDAsIDY1MTk5LCAxNzM4LCA5MTc4MTgsIDEyODE1OCwgMjgzMiwgOTI3MDIsIDk2NzAsIDEyOTM3LCAwLCA2NjM3NCwgCisgICAgOTE3OTU2LCAwLCAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDk4MzcxNCwgNzM3NTIsIDAsIDY0ODcyLCA5MjM0MCwgCisgICAgMTMzMSwgMCwgMCwgMCwgMTI3MDgsIDAsIDUwOTAsIDUwODksIDEyNzk3NywgMCwgMTE5MTA5LCAwLCAxMjg2ODEsIDMxOSwgCisgICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMCwgNTA4NywgOTIzMjUsIDc2NDAsIDk2LCA1MDg2LCAwLCA5MjM3OSwgMCwgCisgICAgNTA4NSwgNjQyODYsIDkyNjY1LCAwLCA0MTQyMiwgMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMCwgMCwgNTAxMSwgMCwgMCwgCisgICAgMTI2NTg3LCAwLCAxMjcxNjUsIDEyNzI0MSwgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMCwgCisgICAgMTE4OTIzLCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCA3MTM0MywgNDUzNCwgNDEyNzAsIAorICAgIDEyODg3NiwgMCwgNjU1NzQsIDAsIDkyMjQsIDY5ODUzLCAzNjcxLCA4OTc2LCAxMjY0NzQsIDAsIDQxMjc1LCA2MzcyLCAKKyAgICAxMjgwODQsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDAsIDQxMjczLCA5ODM3MjEsIDAsIDY3MjgsIDAsIDk3MTUsIDAsIAorICAgIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgMTE4OTE5LCA0MiwgMCwgNDM2ODgsIDAsIDAsIDc0NTgsIDAsIDAsIAorICAgIDY1Mzg1LCAxMTk5MDAsIDAsIDExOTU4LCAwLCA5MTc4MjIsIDAsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIAorICAgIDAsIDAsIDk4MzU5NywgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKKyAgICA1NTU4LCA4ODc4LCAxMjgxMzYsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIDY0NTY2LCAwLCA2NDU4NCwgCisgICAgNzQzNywgNzQ1NCwgMTI1OTQsIDEyODY5MCwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgMCwgMzgwNSwgCisgICAgMCwgMTk0NTY1LCA0NDAwMSwgNDEwMDgsIDAsIDYzMDcsIDE5OTQ5LCA5ODM3ODEsIDc1NDQsIDk4MzA0NSwgNDM0NjksIDAsIAorICAgIDAsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDExOTExMywgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIAorICAgIDQzNTIzLCA0MTQ0NywgNTU1OSwgMCwgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgMCwgOTAxMSwgOTYzMCwgOTI2MzMsIDAsIAorICAgIDkzOTk4LCA1NTA2LCAwLCAxOTExLCA2NjY1MiwgMCwgOTk2MSwgODg0NSwgNjY2OTgsIDAsIDEwNzkyLCA4ODg5LCAwLCAKKyAgICAyMDk4LCAwLCA2NDc1MSwgMCwgNjY2MjIsIDAsIDAsIDc0MzY0LCAwLCAwLCA5ODM3OTYsIDc0MzY1LCA3NTUyLCAwLCAwLCAKKyAgICA2NTM4NCwgNzIyMywgNDU1OSwgMCwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA2NDUwMSwgMTIxMCwgMTk1MDc3LCAKKyAgICA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgMCwgMCwgMzgsIDg1MzMsIDY2NjY5LCAxMTkxMjQsIDk4MzI4NSwgCisgICAgOTgzNzgzLCAwLCA0MzU3LCAwLCAxMTk4MzcsIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCA0Mjg2MCwgMTE5ODM4LCAKKyAgICAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDAsIDExOTMyNCwgMCwgMTEwMTQsIDEyNzk3MiwgODk0MiwgMTIwMDAsIDY5MjI0LCAKKyAgICA5MjI2NywgMTI4NTM2LCAxMTk3NCwgOTIyMTMsIDQyNzcyLCAxMjc1MTgsIDExNjUwLCA1MDEzLCA5MjY2MywgMTI2NTgzLCAKKyAgICA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgNDM4MTksIDk4Mzc2MSwgMCwgNjQ3MTQsIDAsIDAsIDEyMTYyLCAKKyAgICAxMjEyMCwgNDM0NzYsIDk4Mzc1NywgMTEwMjQsIDc0ODExLCA2NjIyOCwgMTA1NjMsIDAsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIAorICAgIDAsIDE4MzcsIDAsIDYzOTcyLCA2OTU3LCAwLCAxMjA1NTksIDQ5NTIsIDY1NzE4LCA2NTgyNywgNTUwNCwgNjU3MjAsIAorICAgIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDAsIDEyNzAwNSwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDAsIDgxMDcsIAorICAgIDExOTIzNCwgMTEyNywgNDU1LCAwLCA2Mzk2OCwgMTI3OTI0LCAzNDgzLCAxMTk1OTMsIDE5ODksIDAsIDY5Njc4LCA5MTA0LCAKKyAgICAzNTAzLCA2NTM3NSwgOTI1MDksIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDAsIAorICAgIDc0MDY0LCAwLCAxMDUyMSwgMCwgNDIxNzMsIDk3MDUsIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIAorICAgIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgMTI3ODYyLCAxNDAzLCAxMjg4MzksIDEzNDcsIDk2MzEsIAorICAgIDc0NDQ0LCAwLCAwLCAwLCAwLCA4NjQwLCAwLCAyNTgsIDE2NTQsIDAsIDAsIDAsIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgCisgICAgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDAsIDYzOTc2LCAwLCA2ODYyMywgMCwgNzQ1ODUsIAorICAgIDQxMzkxLCAwLCA5MTc5MDMsIDM3NiwgNjk4NywgOTIyMSwgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIAorICAgIDQxODY5LCAxMjYxOSwgMCwgMTAxNTQsIDk4MzA0MywgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgCisgICAgNDU4LCAxMjA2MjAsIDAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCA5ODMxMzMsIAorICAgIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCAKKyAgICA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgOTgzNDIzLCAwLCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCAxMjgxOTIsIAorICAgIDQxMjc3LCA2NDY1OCwgMCwgNjQzODAsIDY2MjUsIDc0MzU0LCAxOTkwNCwgMCwgMCwgMCwgNjUzNzEsIDcwNzgsIDAsIDgzMywgCisgICAgMCwgNjM2OSwgMCwgMTA5NzksIDQxOTUzLCAwLCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgCisgICAgOTg0MiwgNjcyMCwgNjU3NDQsIDAsIDk4MzU5MiwgMTI4Mjk1LCAwLCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCAKKyAgICA3NDkzLCA1NTI5MCwgMCwgNDE2MjIsIDAsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCAKKyAgICA1OTkwLCA5MDAsIDAsIDYzOTU3LCAwLCAwLCAzNjEyLCAwLCA2NDM3NiwgOTM5ODcsIDUzODksIDkyNTk3LCAwLCA2NTkzOCwgCisgICAgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDAsIDAsIDY5NTYsIDQ0MDMsIAorICAgIDE5OTYyLCA2NTU1OSwgMzI5OSwgMCwgOTE3NTY2LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgCisgICAgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCAwLCA2Mzk1MiwgCisgICAgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIDExODg5NCwgMCwgNjk3OTYsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCAKKyAgICA2ODQsIDQzNTI1LCAwLCAyODU0LCAxMTk1ODYsIDQ1OTIsIDY1NzU1LCAwLCA5MjI1NiwgMTE5NjMsIDQzNjIwLCAwLCAKKyAgICA3ODI0OSwgMCwgMTI4NTUxLCAxMjg4MDksIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgMTE5MTMxLCAwLCA4NjQ4LCAwLCAKKyAgICA2NzQxLCA0MzA0NywgMCwgMTMxODAsIDEyODUxNywgNDE4LCA5MTc5NzIsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCAKKyAgICA0MTc1MiwgNzQzMzksIDg2NDEsIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCAKKyAgICA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgNDU1NCwgMCwgOTAyMywgMTE2ODUsIDAsIDk5MjgsIDc4NjE3LCAwLCAKKyAgICAxMTQzNywgNDM3NDEsIDkyMTYzLCAxMjA3MDAsIDYzOTY3LCA5ODM0NzUsIDQxMjA2LCAxMjA3MjQsIDkwNDksIDQxMTg1LCAKKyAgICA0MzE2NiwgMCwgMTE2ODAsIDkyNjE5LCAxMTY4NiwgNzg1NDQsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDAsIAorICAgIDkyMTgzLCA2NDUyMywgMTAzNDMsIDEwNDA3LCAwLCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAKKyAgICAxMjA1MCwgNjgyMDEsIDI4NjAsIDAsIDAsIDAsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAwLCA5MjM0MiwgCisgICAgMCwgODg3NSwgMCwgMCwgOTE3OTkxLCA3NTMxLCAxMjg0NywgMjQxMywgMCwgNzg2MzUsIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCAKKyAgICA0MjU2NCwgMCwgMTU4MiwgOTgzNzA2LCA1NTA4LCAwLCAwLCAwLCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAwLCA3MTczLCA0OTYsIAorICAgIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIDAsIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgCisgICAgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIDExNTMsIDkyMTczLCA2NDc4OCwgMCwgODA1NCwgOTE3NCwgMTI4NjUyLCAKKyAgICA5MTc5NzYsIDk5NjQsIDc0NDA5LCA0MTYxMSwgNDY0MiwgNjY1NzQsIDExNTU2LCA5MTc5ODIsIDAsIDc4ODU3LCA0MjA4OSwgCisgICAgNzg4NTUsIDkwMDgsIDAsIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgOTE3OTgxLCA3NzkyNCwgNDI1MTMsIDc3OTI3LCAKKyAgICA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAxMTg5NzQsIDEyNzAwMywgOTgzNjkzLCAwLCAwLCAwLCAxMTMzNSwgNjQwNjksIAorICAgIDQyMDkzLCAzOTIwLCAwLCAwLCAwLCAwLCA0NTgwLCA0MTk2NywgOTgzNzIzLCA2NDM4NCwgOTIxNjcsIDkzOTg0LCAzMDIxLCAKKyAgICA0MjAwNCwgMCwgMCwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAwLCAwLCAwLCAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgCisgICAgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgMTI3ODgwLCA2ODM5OSwgNDM5OTgsIAorICAgIDExMzYwLCAwLCAwLCAwLCAxMTg4MjYsIDQyMTQ5LCAwLCAwLCAwLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCAwLCAKKyAgICA1NTI0NywgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCAxMTkxMTAsIDAsIDY2NzAzLCA3NzkyMSwgODYxNywgNDE5ODIsIAorICAgIDYwMjUsIDY5MjQyLCA5ODMxNzYsIDAsIDAsIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzY4LCAxMDExNywgOTgzMTY5LCAKICAgICA5MjI5NywgNDE2MzYsIDAsIDAsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAwLCA2NTY2OSwgMTI4MzM5LCA0OTYzLCAwLCAKLSAgICAxMjc1MTcsIDAsIDg5NjQsIDY1Njc2LCA2NTc4NSwgMCwgNDE5NDgsIDAsIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgCi0gICAgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIDQxNzY2LCAwLCA2NTg4MiwgNzg4NDksIDQxNzYwLCAKLSAgICAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCAKLSAgICA3ODg4LCAwLCAzOTgwLCAwLCA0MjY1NiwgNDE1MDcsIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgNzg2NywgCi0gICAgNjkyMTgsIDYyMzYsIDAsIDAsIDEwNTA1LCAwLCAxMjg1MSwgMTE4OTQ4LCAzNDgsIDU0NzQsIDEyODg0MywgMzEwMywgMCwgCi0gICAgNDE3NTMsIDEyODU0MCwgMCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIAotICAgIDQzMzQ3LCA0MjU2MCwgNTM5MSwgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA3NDM2MCwgMjY5MSwgMCwgCi0gICAgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDAsIAotICAgIDAsIDM5NzksIDAsIDAsIDc0ODEzLCAwLCAwLCAwLCAwLCA5MjUyNCwgNDEyNjYsIDAsIDAsIDEyODgzNiwgMTA1ODUsIAotICAgIDY1NzQxLCA0MTczNywgOTU3NCwgMjY2NiwgMCwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgMTA3MTYsIDAsIDQyODIyLCAwLCAKLSAgICA2NDM0LCAwLCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDAsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCAKLSAgICA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgMCwgNDQ5NywgMzc1NCwgMTI3MDU2LCAKLSAgICAxMjA0MjQsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAxNTk1LCA0MTYxNSwgMCwgMCwgNzQyNjAsIDAsIDQyODU0LCAKLSAgICA0MzIxOSwgMTI4NzA5LCAwLCAxMjE4NSwgMTI4ODc5LCAwLCA2ODM1NSwgNjgzNTcsIDAsIDQyODU2LCA4NjM0LCAwLCAwLCAKLSAgICA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIAotICAgIDAsIDAsIDU2NzgsIDExODIxLCAwLCA2NzExLCA0NjAsIDAsIDAsIDAsIDAsIDEyMDc0NywgMCwgMCwgNzgwNTAsIDExOTAyMiwgCi0gICAgMCwgMCwgMCwgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIAotICAgIDEyODA3OSwgNTc5MiwgMCwgMCwgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCAwLCA1NjgzLCAwLCAwLCA3ODExOSwgMTU0OSwgMCwgCi0gICAgMCwgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgOTE3NTY4LCAxMDAwMSwgMCwgNjk3NjgsIDE0NDksIAotICAgIDEwMjQxLCA3ODI5MCwgMTI4MjI4LCAwLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCAxMjg1NDgsIDg1ODQsIDAsIDU1NjcsIAotICAgIDI3MTcsIDAsIDAsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDAsIDEyODAyNiwgMCwgNjU3MDgsIDY1NzA5LCAKLSAgICA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCisgICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgMCwgNDE5NDgsIDAsIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgCisgICAgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIDQxNzY2LCAxMTkxMTQsIDY1ODgyLCA3ODg0OSwgCisgICAgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgCisgICAgNzM4MzUsIDc4ODgsIDAsIDM5ODAsIDAsIDQyNjU2LCA0MTUwNywgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCAKKyAgICA3ODY3LCA2OTIxOCwgNjIzNiwgOTgzMTM0LCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIAorICAgIDMxMDMsIDAsIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIAorICAgIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIAorICAgIDI2OTEsIDAsIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIAorICAgIDQxMjUxLCAwLCAwLCAzOTc5LCAwLCAwLCA3NDgxMywgOTgzNzMwLCAwLCAwLCAwLCA5MjUyNCwgNDEyNjYsIDAsIDY2NTY2LCAKKyAgICAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIAorICAgIDEwNzE2LCAwLCA0MjgyMiwgMCwgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIAorICAgIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAKKyAgICAxMjY1MzcsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIAorICAgIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgNDMyMTksIDEyODcwOSwgOTgzNDUyLCAxMjE4NSwgMTI4ODc5LCA3MDA3MiwgCisgICAgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgOTgzMzg5LCA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgCisgICAgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIDAsIDk4MzQ1NiwgNTY3OCwgMTE4MjEsIDAsIAorICAgIDY3MTEsIDQ2MCwgMCwgMCwgOTgzNDUzLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIDAsIDk4MzQ1NCwgMCwgCisgICAgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyODA3OSwgCisgICAgNTc5MiwgMCwgMCwgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCAwLCA1NjgzLCA5ODMzODQsIDAsIDc4MTE5LCAxNTQ5LCAwLCAwLCAKKyAgICAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDEyODUxMiwgNjk3NjgsIDE0NDksIAorICAgIDEwMjQxLCA3ODI5MCwgMTI4MjI4LCAwLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCAxMjg1NDgsIDg1ODQsIDY4MDMwLCA1NTY3LCAKKyAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5ODMyNDgsIDEyODAyNiwgMCwgNjU3MDgsIAorICAgIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCiAgICAgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDAsIDY2NTk4LCAwLCA2NDY2NCwgMTA2NDcsIAotICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMCwgODgwMiwgNzg3MTAsIAorICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMTE5OTAzLCA4ODAyLCA3ODcxMCwgCiAgICAgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCAKICAgICA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgNzg3MjUsIDc4NzIyLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAwLCAKLSAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAwLCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDAsIDcyNTYsIDAsIDAsIDE2NjcsIAotICAgIDQyMTYxLCAwLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgMCwgCi0gICAgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAotICAgIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgMzg3NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjU2MDMsIDAsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIDExOTU3MCwgNDIyMzksIDg1MzYsIAotICAgIDc4NzQwLCAwLCA3ODcyNiwgNzQ0MzIsIDcyNCwgMCwgMTQ1NSwgNzg3NDksIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIAotICAgIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgMCwgNDM1MjAsIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3ODc2MywgCi0gICAgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAxOTAsIDAsIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgCi0gICAgMCwgNDQxNywgMCwgOTIyNjEsIDYzNzAsIDAsIDc4MjcsIDY4NDQxLCA2OTY1LCAwLCAwLCAxMzIwMSwgMTI4MjA1LCAwLCAwLCAKLSAgICA3NDM4MiwgNzM3ODEsIDc5MTgsIDczOTg4LCAwLCAwLCA5MTc4ODQsIDE3MjgsIDAsIDEyMDcxMCwgMTc4LCAxMjk3MiwgCi0gICAgOTI2NzksIDAsIDkxNzg4NywgOTI1NjMsIDAsIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIAotICAgIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDAsIAotICAgIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIDAsIDAsIDgzMzMsIDAsIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgCi0gICAgOTIzMjAsIDc0MDgwLCAwLCAwLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgMCwgNjUzNDQsIAotICAgIDEyMDUxNywgNDE3NDcsIDAsIDAsIDg2NzcsIDAsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgCi0gICAgMTI3NDcsIDgzMDAsIDAsIDAsIDc0OTEsIDg4NTYsIDEyODA2NCwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCA2NTM4OSwgCi0gICAgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDEyMDI0NCwgNjUzNiwgMTIwMjM4LCAKLSAgICAxMjAyMzksIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAxMDAwNywgMTIwMjQ2LCA5NTg4LCAxMjAyNDgsIAotICAgIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMjg4MDgsIDAsIDY2NTcyLCAwLCAwLCAxMDYxMywgNjY5NywgMTI4MDUsIAotICAgIDQxOTI4LCA0MDk4MSwgNzg0MDMsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMCwgOTkzMSwgMCwgODgyNSwgNzQ1NTUsIDY1OTQwLCAKLSAgICA0MzI1OSwgMCwgNjEwNywgMCwgMTE5MTc3LCAwLCA3ODQwMSwgMTI4NjQxLCAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCAKLSAgICA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDEyMDIzMywgMTE5MjI3LCA2MDkyLCAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgCi0gICAgODA5NiwgMTAyODQsIDEyODUxNSwgMCwgMCwgMTAzODAsIDg3MzMsIDAsIDEyODI0MCwgNDE2MDIsIDAsIDkyMzA4LCAKLSAgICA3NDgzMSwgOTE3OTAxLCAwLCA3Mzc0NywgNjUzOTksIDAsIDY0NTkxLCA0MjQwNSwgMCwgMTIwODIwLCA4NDMsIDExNTQxLCAKLSAgICAwLCA5MTc4OTgsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDAsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgCi0gICAgMTk1MywgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCi0gICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgMCwgMCwgMCwgNzM4ODIsIDQ5OSwgMCwgCi0gICAgNDM0NjcsIDAsIDQzODE4LCAwLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDAsIDAsIDExOTY3LCAxNzc1LCAwLCAwLCAwLCAKLSAgICAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIDQyNzgyLCAwLCAwLCAwLCAKLSAgICAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIAotICAgIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgCi0gICAgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgMTYzNiwgMCwgCi0gICAgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgNDA0OSwgNzQxNjMsIAotICAgIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIDY2NTk5LCA2NjcyMiwgCi0gICAgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgNTU5MywgCi0gICAgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgMTI5OTgsIAotICAgIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgMTAxLCAKLSAgICAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCA2NDA5MywgCi0gICAgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgMTMyNjYsIAotICAgIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDAsIDgxMzQsIDEyODAyOCwgMjkxMywgCi0gICAgNzM4NzAsIDEyNzExMywgMTg2NiwgMCwgMTk1MDk1LCAwLCA4OTIzLCAxNjQ1LCAxMjA1OSwgNjY1ODUsIDc4Nzg2LCAzMTk2LCAKLSAgICAwLCAwLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIAotICAgIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMCwgMTI4NzgxLCA0MTE2OSwgODkzOSwgCi0gICAgNDEyNDUsIDAsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDAsIDAsIDAsIDQxMTcyLCA3ODU1LCAwLCAwLCAKLSAgICAxMDQ4MCwgMCwgMCwgNzc5MzYsIDgyNjQsIDEyNjEwLCAwLCA2NDUsIDAsIDc2MDksIDQwOTczLCAwLCA3MzgzMywgNzgyNDksIAotICAgIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCA3Mzk4MiwgMTIwNTE4LCAwLCAxOTUwODYsIDQzMzY5LCAKLSAgICAwLCAxMjgxNDAsIDY4NDE1LCAwLCA0NTM4LCAxMjA0MDYsIDQzMTQxLCAwLCAwLCA3NDIxNCwgNzM4ODYsIDAsIDAsIAotICAgIDExODkwMiwgNDMwMDUsIDc4NDQ4LCA5NTUyLCAwLCAwLCAwLCAxMjk5NywgMCwgMCwgMCwgMCwgMjM4MSwgMTI4ODMsIAotICAgIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDAsIDAsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIDQxNDc4LCAKLSAgICA4NTgyLCAxMDA2NCwgNzM5MzAsIDAsIDAsIDAsIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgCi0gICAgMTE1NzUsIDAsIDExOTU2NiwgMCwgMTI4MDgsIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgMCwgCi0gICAgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCA5MTg3LCAwLCAwLCAxMDE5MSwgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgMCwgCi0gICAgOTE3OTU3LCA2NjY4MCwgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMCwgMCwgMTIwMDgyLCAKLSAgICAxMjAwODEsIDEyMDA4NCwgNDEwMjcsIDEyMDA4NiwgMCwgMTIwMDg4LCAxMjAwODcsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIAotICAgIDEyMDA3OCwgNzgyOTQsIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIAotICAgIDEyMDA3MSwgMCwgMCwgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDAsIDExMjk0LCAwLCA2NjY2NSwgCi0gICAgNzg1MSwgMCwgODM3NSwgODY5OSwgMCwgNDI1MjQsIDAsIDkwODUsIDAsIDc1MDQsIDkzMjcsIDYxNjAsIDEyODA5NSwgMCwgCi0gICAgMCwgODA4OCwgMCwgNzQwMTIsIDkyNTAwLCAwLCA0NDM5LCA2OTI2LCAwLCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgMCwgCi0gICAgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgMCwgMCwgMCwgNjU4MjUsIDk1NzcsIAotICAgIDY4MTk5LCAwLCA2NDY3MCwgMCwgNzgwNTYsIDY3OTMsIDExMjk1LCAwLCA3ODA1MywgNzM4NzIsIDAsIDAsIDEwOTAyLCAwLCAKLSAgICAwLCA3ODA3MCwgNzgwNjgsIDEwNDcyLCAyOTk1LCAwLCAwLCA2NDY4MiwgMjM3MSwgNzgwNjksIDEyMDgwOCwgMjU5LCAKLSAgICAxMDA5LCA5MjE3MSwgMjQwMiwgMjMzMywgNjQ0MCwgMCwgMCwgNjUxMjUsIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgNDExODAsIAotICAgIDAsIDAsIDAsIDAsIDEwMjE5LCAwLCAwLCAwLCAwLCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgCi0gICAgMCwgMTE4OTg5LCA2NzM2LCAxOTUwOTIsIDQxNDkyLCAxMjAwNSwgMTI3ODg5LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIAotICAgIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCA3ODA3NywgMCwgMCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgCi0gICAgNDI2NjgsIDY2MzUsIDAsIDYxNjQsIDY1MTcwLCAwLCAwLCA3Njc2LCAxMTY2NCwgMCwgMCwgNjk3MDcsIDAsIDExODgxMiwgCi0gICAgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAwLCAKLSAgICAxMjc4MzUsIDQ5ODUsIDEzMjg4LCA2NzIsIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDAsIDEyODEyNiwgMCwgNzQwNDMsIAotICAgIDY1MDcyLCAxNTc3LCAxMTc3MiwgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDAsIAotICAgIDEyODU4NCwgMTI2MjIsIDAsIDAsIDAsIDE5NDcxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgCi0gICAgMTI2OTgzLCA0MjczMSwgOTIyMDUsIDAsIDAsIDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCAwLCAxMjA0MTEsIDMyNTAsIAotICAgIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCAwLCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAKLSAgICAzNTA1LCA4NzA3LCA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIAotICAgIDY2ODYsIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDAsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAorICAgIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDAsIDcyNTYsIDAsIDAsIAorICAgIDE2NjcsIDQyMTYxLCAwLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgCisgICAgMzYxMCwgOTgzMTk5LCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAKKyAgICAxMDg3NSwgMTI4NjYyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgOTE3OTU0LCAwLCAKKyAgICAzODc0LCAwLCAwLCA5ODM2MTksIDEyMDMzMSwgMCwgMCwgNjU2MDMsIDAsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIAorICAgIDExOTU3MCwgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDAsIDE0NTUsIDc4NzQ5LCAKKyAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDAsIDQzNTIwLCAKKyAgICA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzg3NjMsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgCisgICAgMTkwLCAwLCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDk4MzIxMSwgOTIyNjEsIDYzNzAsIDAsIDc4MjcsIAorICAgIDY4NDQxLCA2OTY1LCAwLCAwLCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgMCwgNzQzODIsIDczNzgxLCA3OTE4LCA3Mzk4OCwgMCwgCisgICAgMCwgOTE3ODg0LCAxNzI4LCAwLCA0Mzc2NCwgMTc4LCAxMjk3MiwgOTI2NzksIDAsIDkxNzg4NywgOTI1NjMsIDk4MzM3MywgCisgICAgMCwgNzgzMjcsIDEyMDQwNSwgNjU2OTAsIDAsIDAsIDExOTA1NCwgMCwgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgCisgICAgMCwgMCwgMTMwNjUsIDk5MjMsIDEwODA2LCAwLCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAorICAgIDAsIDAsIDgzMzMsIDAsIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMDcsIDY5OTExLCAxMTkxMCwgCisgICAgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgMCwgNjUzNDQsIDEyMDUxNywgNDE3NDcsIDAsIDAsIDg2NzcsIDAsIAorICAgIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgMTI3NDcsIDgzMDAsIDk4Mzc0MSwgMCwgNzQ5MSwgCisgICAgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgCisgICAgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIAorICAgIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAxNTk2LCAxMjAzODMsIDQxOTk0LCAKKyAgICA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDc4NDAzLCAKKyAgICA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgNDMyNTksIDAsIDYxMDcsIDAsIAorICAgIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCAKKyAgICA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAKKyAgICAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCA5ODMwNzIsIDEyODI0MCwgNDE2MDIsIDAsIDkyMzA4LCA3NDgzMSwgCisgICAgOTE3OTAxLCAwLCA3Mzc0NywgNjUzOTksIDAsIDY0NTkxLCA0MjQwNSwgMCwgMTIwODIwLCA4NDMsIDExNTQxLCAwLCAKKyAgICA5MTc4OTgsIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDAsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgCisgICAgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDk4MzEwMCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKKyAgICAxMDcwMCwgODgwNSwgMTc0MiwgMCwgOTMzMywgODIwMiwgMTI3NzUwLCAwLCA5ODMxOTcsIDAsIDAsIDczODgyLCA0OTksIAorICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCAwLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwNCwgMCwgMTE5NjcsIAorICAgIDE3NzUsIDAsIDAsIDAsIDAsIDEyODAwOSwgOTQ1OCwgMCwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMCwgMCwgCisgICAgNDI3ODIsIDAsIDAsIDAsIDEyODMwOSwgNzQ3NzcsIDEyMDY2OSwgOTQxNCwgMTIwMzgyLCA3Mzc4MiwgNzM5NjksIDU2NSwgCisgICAgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIDAsIDgyNTQsIDAsIDEwOTc1LCAwLCAxMjA2MjUsIDc0NzYzLCAxMDIyLCAKKyAgICA0MTA4LCAzODgwLCA3NDI0NywgMCwgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgMCwgNDMxNDksIDAsIDY1MDMxLCA3OTYxLCAKKyAgICAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIDAsIDEyNDczLCA2NTM0LCAwLCA5OSwgOTgsIDk3LCAxMjA1NzEsIDY3NTg0LCAKKyAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCAwLCA3ODkyLCA5MTc5NjksIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgCisgICAgNjY1OTksIDY2NzIyLCAwLCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDAsIDAsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIAorICAgIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDcxMSwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgCisgICAgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgCisgICAgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNzc5MzEsIDE1MzYsIAorICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyNzE1NywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKKyAgICAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDAsIDczOTI2LCAwLCAxMDY0NSwgMTIxMiwgNjU0MywgOTgzMjk5LCA4MTM0LCAKKyAgICAxMjgwMjgsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDAsIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIAorICAgIDY2NTg1LCA3MTI5NywgMzE5NiwgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCAKKyAgICA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIAorICAgIDEyODc4MSwgNDExNjksIDg5MzksIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCAKKyAgICA0MTE3MiwgNzg1NSwgMCwgMCwgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzAwLCA2NDUsIDEyNjYxNiwgCisgICAgNzYwOSwgNDA5NzMsIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCAKKyAgICA3Mzk4MiwgMTIwNTE4LCAwLCAxOTUwODYsIDQzMzY5LCAwLCAxMjgxNDAsIDY4NDE1LCA5ODMwOTMsIDQ1MzgsIDEyMDQwNiwgCisgICAgNDMxNDEsIDAsIDk4MzIwOCwgNzQyMTQsIDczODg2LCAwLCAwLCAxMTg5MDIsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgMCwgCisgICAgOTgzMTU5LCAxMjk5NywgMCwgMCwgMCwgMCwgMjM4MSwgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDAsIDAsIAorICAgIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDAsIDAsIDAsIAorICAgIDY0ODk2LCAxMTkxNjIsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDk4MzQ4MiwgMTE5NTY2LCAwLCAxMjgwOCwgCisgICAgMTIxODMsIDYxNDUsIDExODk1NSwgNjQ5MjksIDkyNDMzLCAwLCA5ODMxOTMsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCisgICAgOTE4NywgOTgzNjE0LCAwLCAxMDE5MSwgMTE5MDU3LCAxMTc1MiwgMzM1MywgOTM1OCwgMCwgNzEzNjYsIDY2NjgwLCAKKyAgICAxMjAwOTAsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCA5ODMyODksIDAsIDEyMDA4MiwgMTIwMDgxLCAxMjAwODQsIAorICAgIDQxMDI3LCAxMjAwODYsIDAsIDEyMDA4OCwgNzM2NiwgNzAxOSwgMTIwMDczLCAwLCAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgCisgICAgNjQ2NTcsIDg2NTcsIDEyMDA0OCwgODU5NCwgMTIwMDY4LCAwLCAwLCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAwLCAKKyAgICA0MzE1NCwgNDEwMjksIDAsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgNzg1MSwgMCwgCisgICAgODM3NSwgODY5OSwgMCwgNDI1MjQsIDAsIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDk4Mzg1NSwgCisgICAgMCwgODA4OCwgMCwgNzQwMTIsIDkyNTAwLCAwLCA0NDM5LCA2OTI2LCA5ODMwNDcsIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCAKKyAgICA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDAsIDExMjk2LCA5ODMyNzUsIDAsIDAsIAorICAgIDY1ODI1LCA5NTc3LCA2ODE5OSwgMCwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCAwLCA3ODA1MywgCisgICAgNzM4NzIsIDAsIDAsIDEwOTAyLCAwLCAwLCA3ODA3MCwgNzgwNjgsIDEwNDcyLCAyOTk1LCAwLCAwLCA2NDY4MiwgMjM3MSwgCisgICAgNzgwNjksIDEyMDgwOCwgMjU5LCAxMDA5LCA5MjE3MSwgMjQwMiwgMjMzMywgNjQ0MCwgMTk0NzQxLCAwLCA2NTEyNSwgCisgICAgNDEyNDQsIDAsIDEzMjcxLCA5MTAzLCAyMjc4LCAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIAorICAgIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCAxOTUwOTIsIDQxNDkyLCAxMjAwNSwgCisgICAgNjk5MjcsIDAsIDE4OTAsIDEyMDA1NiwgMCwgMCwgMCwgNzI5MywgNzk5MSwgMCwgMTA1NzgsIDAsIDc4MDc2LCAxOTQ3MzgsIAorICAgIDc4MDc3LCA2OTkyOCwgMCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgNDI2NjgsIDY2MzUsIDAsIDYxNjQsIDY1MTcwLCAwLCAwLCAKKyAgICA3Njc2LCAxMTY2NCwgMCwgOTgzNjQ5LCA2OTcwNywgMCwgMTE4ODEyLCAwLCAwLCAxMjgwNDUsIDkxNzUsIDExOTI1LCAKKyAgICA3ODA0NSwgOTA4OCwgMCwgNjQ1NDUsIDEzOTYsIDAsIDc1NDYsIDM4NDcsIDEyNzE3NywgMTI3ODM1LCA0OTg1LCAxMzI4OCwgCisgICAgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCA5ODMwOTYsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCisgICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAxMjg1ODQsIDEyNjIyLCAwLCAKKyAgICAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDEyNjk4MywgNDI3MzEsIDY3OTcyLCAKKyAgICAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCAKKyAgICA5NTEwLCA2NjIzNywgOTgzMjk0LCAwLCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTE3OTY0LCAwLCAzNTA1LCA4NzA3LCAKKyAgICA5MTc5NjgsIDY3MjUsIDEyODAxMywgOTE3OTcxLCA5MjMxNCwgMzQ3MSwgOTE3OTcwLCA1NDc5LCA4ODIsIDY2ODYsIAorICAgIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDAsIDk4MzI5OCwgOTI2OTYsIDAsIDAsIDAsIDEyODUyMywgMzIyNSwgCiAgICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCAwLCAxMDkyNiwgMTE3NTYsIDExNzU3LCAKICAgICA2NDg3OSwgOTE3OTQ5LCA5MTc5NTAsIDEyNzg0OCwgMTMyMjcsIDAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MTc5NTMsIAogICAgIDQxNDE4LCAwLCA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgOTE3OTYxLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAKLSAgICAxMTkyNTcsIDQyNzQsIDAsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgMCwgCi0gICAgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKKyAgICAxMTkyNTcsIDQyNzQsIDk4MzI5MiwgNDE0ODMsIDAsIDQxMjUwLCAwLCA0MjE3OSwgMCwgNTkzMSwgMTE3NDQsIDY5MjMyLCAKKyAgICAwLCA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDAsIDAsIDQzOTcsIAogICAgIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyODA0OSwgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAKICAgICAxMDQwMCwgMCwgMTI4ODE4LCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCAwLCA0MjI1NiwgMTE5ODY5LCAxMTk4NjAsIDQxNywgCi0gICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDAsIDY0NDgxLCAKKyAgICA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgMCwgNTkzNCwgMTE5ODY3LCA2NjU4MywgMTE5MjMxLCA2NDg3NywgMjI4NCwgNjQ0ODEsIAogICAgIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCAxMjY5OTUsIDAsIDAsIDAsIDQyMjczLCA1ODE5LCAwLCA5MTc1NTYsIDAsIAotICAgIDAsIDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDAsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDAsIDAsIAotICAgIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDQyMDYzLCAwLCA0MjgxMSwgMTAzMTIsIDc0MTkyLCAxMjA3OTQsIDc4NDAsIAotICAgIDAsIDQzNjMwLCAxMDI1MiwgMCwgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMCwgMTE5ODgwLCAxMDc2OSwgOTY3NiwgCi0gICAgMTE5MDQxLCAwLCA5NzUzLCAwLCA4OTQ0LCAwLCAwLCAxMDQ3MywgMCwgMCwgNjA3MiwgNDMwMjUsIDEwMjk5LCAwLCAwLCAKLSAgICAxMjA2MDgsIDY2MzI2LCAwLCAwLCAwLCA0MzgxMSwgOTMzMCwgMCwgNzIyMiwgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgCi0gICAgMCwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIDAsIDc4MzQ3LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIAotICAgIDY0ODA2LCA0MzE4MCwgNzc5MjgsIDY4MDk2LCA3NzkyOSwgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAKLSAgICAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgNjU0MzUsIDAsIDEyMDcxLCA5NjA5LCAxMjE1NiwgCi0gICAgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAxMTAzNSwgMTA0MTEsIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAKLSAgICAxMDM3NSwgOTE3OTkzLCAwLCA0MzE1LCAxMjY0NCwgMTI3NTE2LCA3NzkzNywgNDM2MzksIDQzMzQzLCAwLCA5MTc5OTgsIAotICAgIDExNTAxLCA0MTE3NywgMTI4Njg5LCAwLCA5MTc3OTIsIDAsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgMCwgNDMzMTMsIDAsIAotICAgIDQxMTc2LCAwLCA5OTQsIDAsIDg0NTIsIDEyNzEwMywgNzM5NjYsIDAsIDAsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIAotICAgIDExODkwMywgNzc5NDMsIDQxODYsIDkyNTMxLCAxMjcxMDYsIDEyNzEwNSwgNjcxOCwgMCwgNDQwNiwgNzQ2MDEsIDg0ODAsIAotICAgIDkxOTIsIDk3NDcsIDEyODY5OSwgNDQxMywgOTIxOTYsIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgCi0gICAgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAxMDE3NiwgMCwgNzQyLCAwLCAyODkzLCAxMDc3MiwgCi0gICAgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCA2NzU2LCAxMjg1OTAsIDEyODY0NiwgODM2MywgMCwgMjk5MywgCi0gICAgNzc3MiwgMzkxNiwgMCwgMTIwNDk0LCAxMTQxLCA0MjQwNywgODE1OSwgNzE4LCA3NTcyLCA5NzMsIDAsIDEyMDcxOCwgCi0gICAgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgCi0gICAgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAwLCA2NTg2MywgMCwgMCwgMCwgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgCi0gICAgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDAsIDAsIDU1MjM3LCAxNDMxLCAKLSAgICAwLCA2NjU2NSwgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIAotICAgIDQ1NDQsIDAsIDAsIDAsIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgCi0gICAgMCwgMTAxNDEsIDAsIDYzNzYxLCA4Nzg1LCA0NDc2LCA3ODEwOSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA3ODEwNSwgNzgxMDYsIAotICAgIDc4MTAzLCA3ODEwNCwgMCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAwLCAxMjcxNjAsIDAsIDQxNTczLCAwLCAKLSAgICAzOTMxLCAxMjAyOTUsIDc0MTQzLCAwLCAwLCAwLCAwLCAxMTk4MiwgMCwgMCwgMCwgMTI4MDE2LCA2NDQ4NCwgMCwgNDExNjcsIAotICAgIDAsIDQxNzM1LCAwLCA3MTcsIDEwNzU0LCAwLCAwLCAxMjc5NzksIDAsIDYzNzY3LCAwLCAxNzgwLCA2OTM2LCAwLCAwLCAKLSAgICA4MTksIDEwNjExLCA5Njk0LCAxMjY5NzgsIDAsIDAsIDAsIDAsIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIAorICAgIDEyNjY0MywgMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAKKyAgICAxMTk1NzYsIDAsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDQyMDYzLCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAKKyAgICAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMCwgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMCwgMTE5ODgwLCAKKyAgICAxMDc2OSwgOTY3NiwgMTE5MDQxLCAwLCA5NzUzLCAwLCA4OTQ0LCAwLCAwLCAxMDQ3MywgMCwgMCwgNjA3MiwgNDMwMjUsIAorICAgIDEwMjk5LCAwLCAwLCAxMjA2MDgsIDY2MzI2LCA5ODM0MzksIDEyNzc5NCwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgOTgzNzczLCAxMzI4MSwgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgMCwgCisgICAgNzgzNDcsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgNjQ4MDYsIDQzMTgwLCA3NzkyOCwgNzQxNCwgNzc5MjksIDQzOTgyLCAKKyAgICA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgMCwgODUyLCAwLCAxMjE2MCwgMCwgMTAyMTIsIAorICAgIDY1NDM1LCAwLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgMTEwMzUsIDEwNDExLCAKKyAgICA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgMTAzNzUsIDczOTAwLCAwLCA0MzE1LCAxMjY0NCwgMTI3NTE2LCAKKyAgICA3NzkzNywgNDM2MzksIDQzMzQzLCA3ODc3NywgOTE3OTk4LCAxMTUwMSwgNDExNzcsIDEyODY4OSwgMCwgOTE3NzkyLCAwLCAKKyAgICA5MjQxMywgODcxNSwgMCwgNDExNzksIDAsIDQzMzEzLCAwLCA0MTE3NiwgMCwgOTk0LCAwLCA4NDUyLCAxMjcxMDMsIAorICAgIDczOTY2LCAwLCAwLCA1OTIxLCAwLCAyNTk3LCAwLCA1OTIyLCAxMTg5MDMsIDc3OTQzLCA0MTg2LCA5MjUzMSwgMTI3MTA2LCAKKyAgICAxMjcxMDUsIDY3MTgsIDAsIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjY1MzAsIDQ0MTMsIDkyMTk2LCAKKyAgICA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCAKKyAgICA0MzE2OSwgMTAxNzYsIDAsIDc0MiwgMCwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgCisgICAgNjc1NiwgMTI4NTkwLCAxMjg2NDYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgCisgICAgNDI0MDcsIDgxNTksIDcxOCwgNzU3MiwgOTczLCAwLCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCAKKyAgICA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgMCwgMTIwMiwgMCwgMCwgCisgICAgNjU4NjMsIDAsIDAsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgNzgwNDIsIAorICAgIDY3MzgsIDAsIDQzNjgxLCA2OTcyOCwgMjA1OSwgMCwgMCwgNTUyMzcsIDE0MzEsIDAsIDY2NTY1LCAxMDgyMSwgMCwgCisgICAgMTI4MDQsIDEyODA3NiwgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgMCwgMCwgMCwgCisgICAgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgMTIwNjgsIDc4MTAyLCAwLCAxMDE0MSwgMCwgCisgICAgNjM3NjEsIDg3ODUsIDQ0NzYsIDc4MTA5LCA2Mzc2MywgMTI2NTUsIDg5MDcsIDc4MTA1LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAKKyAgICAwLCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgNDE1NzIsIDAsIDEyNzE2MCwgMCwgNDE1NzMsIDAsIDM5MzEsIDEyMDI5NSwgCisgICAgNzQxNDMsIDAsIDAsIDAsIDc4NDYwLCAxMTk4MiwgMCwgMCwgMCwgMTI4MDE2LCA2NDQ4NCwgMCwgNDExNjcsIDAsIDQxNzM1LCAKKyAgICA5NDAxOSwgNzE3LCAxMDc1NCwgMCwgMCwgMTI3OTc5LCAwLCA2Mzc2NywgMCwgMTc4MCwgNjkzNiwgMCwgOTIyNTQsIDgxOSwgCisgICAgMTA2MTEsIDk2OTQsIDEyNjk3OCwgMCwgMCwgMCwgMCwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgCiAgICAgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgMzM0NiwgODMzOSwgMTI4MTY1LCAxMjgzMzgsIDU3NSwgMjY4LCAKICAgICA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgNjU1NjUsIDgzMzYsIDU5MzYsIDcyOTAsIDc4MTE3LCA4MzM3LCAKICAgICA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCAxMjA3MjEsIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIDY5NTMsIDAsIDEyMDM0NiwgMCwgCkBAIC0xNzEyOCwxNjg2ICsxODA2MywyNjQyIEBACiAgICAgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgMCwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgCiAgICAgMTI4MzUwLCA4NTk1LCAwLCA5MTc5NDcsIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgMCwgMTIzODEsIAogICAgIDM0ODgsIDU5MzMsIDEwMDMzLCA3MzczOCwgNjYyNDEsIDY1NTcwLCAwLCAxMjI5NywgMTE5MTUzLCAxOTU1LCAwLCA1MzQ5LCAKLSAgICA0MjUzOCwgMCwgMCwgNjUzMDgsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDAsIDc2MzgsIAotICAgIDQxNjQyLCA0Mjc2NCwgMCwgNDMxMDksIDc2MzcsIDU3NTIsIDEyMDYwMCwgMCwgNzM4MzIsIDEyODgyNywgMTIwNjM1LCAKLSAgICAxMjgyMzEsIDc4MzM0LCAwLCA3NjM2LCA2NTE3MSwgOTEyNCwgMCwgNzg4OTIsIDAsIDI5MSwgMCwgMCwgMjAyNywgNjYyMzAsIAotICAgIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKKyAgICA0MjUzOCwgMCwgMCwgNzQxMSwgOTQ2MiwgOTE3NTU0LCAwLCAwLCAwLCA0MjczNiwgMCwgNTc1NiwgOTgzMjE5LCA3NjM4LCAKKyAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCA3NDAzNywgMCwgNzM4MzIsIDEyODgyNywgMTIwNjM1LCAKKyAgICAxMjgyMzEsIDc4MzM0LCAwLCA3NjM2LCA2NTE3MSwgOTEyNCwgMCwgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCAwLCAyMDI3LCAKKyAgICA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgMCwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDQyNTEyLCAxMjA0MzEsIAogICAgIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIDEyNzE0OCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIAogICAgIDAsIDQxMjc0LCA1Nzc4LCA2MzAyLCAwLCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA3Nzg4OSwgMTk0OTE0LCA5NDUyLCAwLCAKLSAgICA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMCwgNjUzOTEsIDAsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCi0gICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKLSAgICA0MTI2NywgNDY0NiwgMTIwNDI1LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCA3ODI3MCwgCi0gICAgMTI3OTgyLCAwLCA2NDcyOCwgMCwgNzg2NzMsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxOTUwODksIDYwNjksIAotICAgIDkyMTksIDE5NTA5MCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgMCwgMCwgCi0gICAgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCAxOTUxMDEsIDkyNTYxLCA0MTQ2MiwgCi0gICAgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgMCwgMCwgMCwgMTAyMjksIDEwNjM1LCA4MjYsIDEyODA4MSwgMTk1MDgyLCAKLSAgICAxOTUwODUsIDE5NTA4NCwgMTk1MDg3LCA2NDgzLCAwLCAxODA4LCA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIAotICAgIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgCi0gICAgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIAotICAgIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIAotICAgIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgCi0gICAgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgMCwgNDMyNTgsIDAsIDEyNzg3MywgMTMxNTcsIDAsIDAsIAotICAgIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAwLCAwLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIAotICAgIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgCi0gICAgNzg4MDIsIDAsIDAsIDQzNDQyLCA3ODc5OSwgNjUyNTQsIDEwMDY2LCAwLCAwLCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIAotICAgIDE5OTMyLCA2NDgzMSwgMCwgMTE5OTIzLCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgMCwgMTEwNTYsIDAsIDExOTkyNSwgCi0gICAgMCwgNDExNjUsIDExMzI4LCAxMjQ1MCwgMCwgNDExNjYsIDAsIDEyNDU2LCAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIAotICAgIDkxNzU0NCwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTI3NTY5LCAxMjA0ODMsIDk5NjksIAotICAgIDAsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIDI5NywgCi0gICAgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgCi0gICAgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCAKLSAgICA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNzg4NzQsIDExODgzOCwgMCwgCi0gICAgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIDg4OTIsIDAsIAotICAgIDkyMzM5LCAwLCAwLCA1NzgyLCA0MjAsIDAsIDAsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDAsIDY0ODE0LCA2Mzc5NiwgCi0gICAgNzc5NjUsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAwLCAwLCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCAwLCA0MzY3NiwgMCwgCi0gICAgNjk2NzMsIDAsIDAsIDAsIDMyOSwgNzc5NjgsIDkyNzA3LCA5MTc1NDgsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgMTIwNDY2LCAKLSAgICA0MjE2NywgNzQzNSwgNzgxOTMsIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCA0MzEyNiwgNzc5NzIsIDAsIAotICAgIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCAwLCAxMTcyLCA2OTc5OSwgNjc4NiwgCi0gICAgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIDAsIDE5NDgyMywgMCwgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgCi0gICAgMCwgMTI3Mzg0LCA1MzQ3LCA2OTgwMiwgMCwgNzM4NjgsIDExODk0NCwgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCAKLSAgICA3ODQyMiwgMCwgNDU1NSwgNTM0MSwgMCwgMCwgMTI4NjcwLCA1MzUxLCAwLCA0MzEwNCwgNjUyNDQsIDkxNzg5MiwgNjQ1NDEsIAotICAgIDQyNTE5LCA3NDQ3MiwgMCwgMCwgNzQ3NjUsIDkxNzg4OCwgMTk0ODkyLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgCi0gICAgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgCi0gICAgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCA2NTM1NSwgNTM0NSwgNjUzNTMsIDY1MzUyLCA2NTM1MSwgNzYxLCAKLSAgICA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgMCwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIAotICAgIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAKLSAgICAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIAotICAgIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIAotICAgIDAsIDg4NDcsIDAsIDY1ODc2LCA1NTM1LCA4MzI5LCA3NDU5MCwgMCwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCAKLSAgICA0MjAxMywgMCwgNTYwNywgNDEwODksIDAsIDAsIDc0MjU2LCAyNjY1LCAxMTMwNCwgMCwgNzQyMDAsIDQ5NzAsIDg3NjQsIAorICAgIDc0MzkzLCAxMTU1MiwgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAwLCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgCisgICAgNzg2NTgsIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIAorICAgIDEyMDQxMiwgNDEyNjcsIDQ2NDYsIDEyMDQyNSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgCisgICAgNzgyNzAsIDEyNzk4MiwgOTgzMTcyLCA2NDcyOCwgMCwgNzg2NzMsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAKKyAgICAxOTUwODksIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIAorICAgIDExOTE0MywgMCwgMCwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgCisgICAgMTk1MTAxLCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDAsIDAsIDAsIDEwMjI5LCAKKyAgICAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgOTIyMTEsIDE4MDgsIAorICAgIDc4NDgsIDAsIDgxMDAsIDc4MjI3LCA3ODY2OSwgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIDc4ODcyLCAwLCAKKyAgICAxMTAwMywgOTkwNCwgMCwgMCwgMTIwNjkwLCA5MTQ0LCAxMDkyMSwgMCwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgCisgICAgNzc4NDEsIDEwMzEzLCAwLCAwLCA2NDMyMCwgMTAyNjUsIDc4Njg2LCAxMDk2MiwgNzg2ODQsIDQzMDA4LCA4OTQ1LCAKKyAgICA3ODY4MywgMCwgNDEsIDE5NTA3MiwgMTc5MiwgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDE5NTA3NSwgOTI1NDQsIDc3OTUxLCAKKyAgICAxMjA2NiwgMCwgMzg1LCA0MTUyLCAyNTg1LCAxMjc4MDQsIDExOTA2OCwgMzEyNiwgMCwgNzQxMzYsIDEwOTU3LCA5ODM2OTQsIAorICAgIDQzMjU4LCAxMTkxMTYsIDEyNzg3MywgMTMxNTcsIDAsIDkxNzU0NCwgMzU3MCwgMCwgNzQ0MywgMCwgNDQwMDYsIDY5OTcsIAorICAgIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCAwLCA2NTIxNiwgMCwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAorICAgIDkxNzg2MiwgNzgzOSwgMTE5OTEzLCA3ODgwNiwgMTE5OTEyLCA5NjkxLCA0NDExLCA3ODgwMiwgMCwgMCwgNDM0NDIsIAorICAgIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDk4Mzg4MCwgMCwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIAorICAgIDAsIDExOTkyMywgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDAsIDExMDU2LCA5ODM1NzQsIDExOTkyNSwgMCwgCisgICAgNDExNjUsIDExMzI4LCAxMjQ1MCwgMCwgNDExNjYsIDAsIDEyNDU2LCAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIAorICAgIDE5NDcwOSwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTI3NTY5LCAxMjA0ODMsIDk5NjksIAorICAgIDEyMDc2NywgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgMCwgMCwgMCwgNTIwOSwgCisgICAgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIAorICAgIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDAsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAKKyAgICAxMjc1MDUsIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc4ODczLCA1ODQ0LCA2ODAzMSwgCisgICAgMTE4ODM4LCAwLCAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgMCwgMCwgMCwgCisgICAgODg5MiwgMCwgOTIzMzksIDAsIDk4MzA3MywgNTc4MiwgNDIwLCAwLCAwLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAwLCAKKyAgICA2NDgxNCwgNjM3OTYsIDc3OTY1LCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMCwgMCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgCisgICAgMCwgNDM2NzYsIDAsIDY5NjczLCAwLCAwLCAwLCAzMjksIDc3OTY4LCA5MjcwNywgOTE3NTQ4LCA3Mzk5LCAwLCA0MTE4OCwgCisgICAgMTMyNDQsIDEyMDQ2NiwgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgCisgICAgNDMxMjYsIDc3OTcyLCAwLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgMTI4NTQzLCAKKyAgICAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIDAsIDE5NDgyMywgMCwgCisgICAgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMCwgMTI3Mzg0LCA1MzQ3LCA2OTgwMiwgOTgzNjIzLCA3Mzg2OCwgMTE4OTQ0LCAKKyAgICAxMDU4OCwgMCwgMCwgNjM3NTUsIDAsIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDAsIDcwMDcxLCAxMjg2NzAsIAorICAgIDUzNTEsIDc4Njc1LCA0MzEwNCwgNjUyNDQsIDkxNzg5MiwgNjQ1NDEsIDQyNTE5LCA3NDQ3MiwgMCwgMCwgNzQ3NjUsIAorICAgIDkxNzg4OCwgMTI3NTEwLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgCisgICAgNjUzNjYsIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIAorICAgIDExODAwLCA2NTM1NSwgNTM0NSwgNjUzNTMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgCisgICAgMTI2NjM1LCAyNDIzLCA3Nzk1OCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMCwgMCwgMCwgMCwgNjQ2MDUsIDAsIDAsIAorICAgIDAsIDQ5MTYsIDAsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIAorICAgIDczOTgwLCA2OTI0NSwgNzgyNTQsIDkxNzg5MywgMTA2ODQsIDAsIDkxNzg5NiwgMCwgNzk0NiwgMTI1NDEsIDgxODIsIAorICAgIDY3NTg2LCA2OTc4MCwgMCwgMCwgMCwgMCwgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMCwgNjgwMTEsIDg4NDcsIDAsIAorICAgIDY1ODc2LCA1NTM1LCA4MzI5LCA3NDU5MCwgOTgzMjA2LCA5MjYwOSwgMCwgMCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAKKyAgICA5ODM4NDksIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgCiAgICAgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDAsIDY1MDExLCA0MTA5MCwgMCwgMCwgMTE4OCwgNzI1NCwgCi0gICAgMTEwMCwgMCwgMTI4MzAxLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY5NzkyLCAwLCAwLCAzNTcyLCAxMDAyMywgNDk1OSwgCi0gICAgMTMwNzksIDAsIDAsIDk3MjksIDAsIDAsIDAsIDQzMzYxLCAwLCAwLCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCAKLSAgICAxMjgyOTAsIDEyNzI2MCwgNDE0NTEsIDAsIDExMDk1LCA4MjczLCAxMjc1MzMsIDM0NTEsIDAsIDk3MiwgNDE0NTMsIDAsIDAsIAotICAgIDczODgzLCA5MjQwOCwgNzM5NDUsIDAsIDM0NTUsIDE5OTU1LCA5NTM4LCAwLCA2OTgwNywgMCwgMCwgMCwgMCwgMTEzOTYsIAotICAgIDAsIDExMDE5LCAwLCAwLCAwLCAxMjA1MDcsIDQxMDc4LCAwLCAyNjEsIDU5MjcsIDc3OTEsIDAsIDY0NDQ2LCAwLCAxMDY5NiwgCi0gICAgMCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAxMjg1NjMsIDI4MiwgMCwgNjQzNywgNzQwNzgsIDEyODAwMCwgCi0gICAgOTgwMSwgMCwgMCwgMCwgMCwgMzQ3NCwgMTE4Nzg3LCAwLCAxMjA2NTUsIDYwODEsIDAsIDEyNzg0MywgNzQwNzYsIDc4ODc5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4NzUxLCAxMTQ5OSwgMTIwMjczLCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIAotICAgIDkyNjA4LCAxMjAyNzIsIDAsIDk2NDIsIDEwOTEyLCA5NTgsIDAsIDExMzg3LCA3ODg3OCwgNDY2NiwgMCwgNDkxNSwgMCwgCi0gICAgNDY2OSwgMCwgNjgwOTksIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCAwLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDAsIAotICAgIDkxNzg3NSwgODY2NCwgOTY5NywgMzYwNiwgOTE3ODczLCAwLCAwLCA2NDgxNSwgMTA2MywgMTIwMjUwLCAxMjAyNTEsIAotICAgIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCAKLSAgICA5MjM4MSwgMTIwMjU1LCAxMjAyNTYsIDEyMzAxLCAxMjAyNjYsIDY5ODIwLCA0MTEwMiwgNjY2MDQsIDEyMDI2MiwgCi0gICAgMTIwMjYzLCAxMjAyNjQsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDAsIDAsIDg2MDgsIDQyNzg5LCAKLSAgICAxMjA2MTMsIDEyODcwNCwgMCwgMTE5MTk2LCAxMTMwNywgNjY3MDcsIDkxNzg3MSwgMTI3NzUxLCAxMTc0NSwgNzkxOSwgMCwgCi0gICAgMTY0MSwgMCwgMCwgODk2NiwgMCwgMCwgNTkwOCwgMCwgMCwgNjc0NCwgMTI4MzU1LCAxNjk5LCA3NDE5MSwgNzQ4NDMsIDAsIAotICAgIDAsIDYzMDYsIDEwMTY5LCAwLCAxMTkyNTEsIDEwMDY4LCAzNzY2LCAyMzg5LCAxMjA0NTYsIDEyMDQ1NSwgNjYxMSwgMjU3LCAKLSAgICA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCAwLCA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIAotICAgIDExNDQ3LCAxMDU0MSwgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgMCwgCi0gICAgNDE0MzUsIDQzNTIsIDAsIDI0MzUsIDEyMDgwOSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCAKLSAgICA0MjA0LCAxMjA0NDcsIDM3NjgsIDY4MTQyLCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIAotICAgIDEyOTQ3LCA0NTY0LCAwLCAwLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDAsIDAsIDY4MjksIDUyMjUsIDEyODgwNywgMTI3Mzg1LCAKLSAgICAwLCAwLCAxMTk2MTUsIDAsIDc0NzkzLCA1NjI2LCA3MzgwNywgMTE3NzEsIDAsIDEyNzIzNiwgMTI4MDE5LCAwLCA1MzUzLCAKLSAgICA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDAsIDY5NTIsIDAsIDEyMDc1MiwgCi0gICAgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAKLSAgICAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgNTYyNywgMTIwMDE3LCAKLSAgICAxMjAwMTgsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgMTA5NjEsIDAsIDIwMywgMCwgMCwgMCwgMCwgNzgzNTAsIDAsIAotICAgIDY0Mzc4LCA0MjA1NCwgMCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCAwLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjc4NzgsIAotICAgIDczODkxLCAwLCAwLCA1Njk0LCA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMCwgMCwgCi0gICAgNjk3NjQsIDAsIDAsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCAwLCA2OTc3MCwgNDM2NTEsIDAsIDY4MTE4LCAxMjgwMjQsIAotICAgIDExMjksIDAsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgOTE3NzcyLCA2NTI1NSwgMCwgMzg0NSwgNDQ5MCwgCi0gICAgMTE4OTY5LCA2NjQ5LCA3NDQwMCwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIDc3NTYsIDEyMzQyLCAKLSAgICAxMjg1NjgsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgOTE3ODYzLCA0NTYsIDcwMjYsIDgxNDUsIDExNjgsIDkyNTEsIAotICAgIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgMCwgNDE0OTQsIAotICAgIDkyMzE2LCA0NjYwLCAwLCAxMDQwNSwgMCwgNzg4MDMsIDAsIDAsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgCi0gICAgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgNzg4NjcsIDgyMTQsIDAsIDAsIDAsIDQxNDU3LCAwLCAKLSAgICAxMTk1ODksIDE5NjksIDIzODQsIDgwOTcsIDkxNzg2NCwgMCwgMTI3MzgwLCA3ODAyOSwgODc2NiwgMCwgNzgwNzksIDU4NTQsIAotICAgIDEyNzk3NCwgMTA1ODMsIDAsIDExOTk4OSwgMCwgMTA0MTYsIDkxNzg2OSwgMzg3MiwgOTE3ODY4LCAwLCA4NDI5LCAwLCAKLSAgICAxMTg4MDYsIDI4MzgsIDEyODgwMiwgMCwgOTE3ODY2LCAwLCAwLCAwLCAwLCAwLCAxMTA5NiwgMTIwODEzLCAxMDU1MywgCi0gICAgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDAsIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCAKLSAgICA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCAKLSAgICA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIDAsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIAotICAgIDQ1MDMsIDExMzUzLCA5NjQ3LCAwLCA3ODE4NSwgMCwgMCwgOTI3MTMsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIAotICAgIDY0MzgsIDkxNzk3OSwgOTEwOSwgNzg4ODIsIDEyODksIDY0NTk5LCAwLCAwLCAwLCA2NTUwNywgMjQ0NywgMCwgMCwgCi0gICAgMTI4MDQyLCAwLCAwLCAwLCA2MzM0LCAwLCAwLCAxOTkzNywgMCwgOTIzNjgsIDAsIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIAotICAgIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCAwLCA0MjQ2NCwgMTIwNTY3LCAwLCAKLSAgICA5MjY0NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMCwgNzc4NjEsIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgMCwgCi0gICAgMTE3ODUsIDAsIDY0NjcxLCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDc3NzUsIAotICAgIDEyODI5MywgMCwgNzQ1ODgsIDEyMDc0OCwgMzE0MCwgMTI4ODU0LCA3OTYwLCA0MzI3MSwgMCwgMTI1MTgsIDEwOTA5LCAKLSAgICAxMjc1MDgsIDE0MjgsIDEyNDcyLCAwLCAxMjg3ODcsIDc2OTksIDEyMzkzLCAwLCAwLCAwLCA3NDUxOCwgODIyMywgMCwgCi0gICAgNDI2MSwgMCwgMCwgMCwgMCwgMCwgMTI4MzAyLCAwLCAxMjgwNDYsIDQzNDE5LCAwLCA2NDU1NCwgMTA1NzQsIDM4NzgsIDAsIAotICAgIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMCwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDAsIDAsIDAsIDY1OTE5LCAwLCA2Njk1LCAKLSAgICA3MjAsIDMyNCwgMCwgMCwgNDM0MDYsIDAsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgMCwgNjQ0ODgsIDAsIDAsIAotICAgIDY0MDQxLCA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMCwgNzg4NjMsIDAsIDEzMDIsIDAsIDc4ODYxLCAwLCAwLCAKLSAgICAwLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDQzMzk2LCAwLCAzOTk1LCA2ODM2MCwgNjU2MDgsIDM3MTQsIDAsIDAsIDAsIAorICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgNjgwMTksIDM1NzIsIDEwMDIzLCA0OTU5LCAKKyAgICAxMzA3OSwgMCwgOTgzMjY4LCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAKKyAgICAxMzMwNCwgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCA5ODMzMDEsIDk3MiwgCisgICAgNDE0NTMsIDk4MzQzNCwgMCwgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgOTgzNzI2LCAyMjg4LCAxOTk1NSwgOTUzOCwgMCwgCisgICAgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCA5ODM0MzIsIDExMDE5LCAwLCAwLCAwLCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAKKyAgICAyNjEsIDU5MjcsIDc3OTEsIDAsIDczNjIsIDAsIDEwNjk2LCAwLCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIAorICAgIDkzOTk1LCAyODIsIDEyNjUxMCwgNjQzNywgNzQwNzgsIDEyODAwMCwgOTgwMSwgMCwgNzQxNzcsIDAsIDAsIDM0NzQsIAorICAgIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCA3ODg3NCwgNzQwNzYsIDc4ODc5LCAwLCAwLCAwLCAwLCAwLCA4NzUxLCAKKyAgICAxMTQ5OSwgMTIwMjczLCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDkyNjA4LCAxMjAyNzIsIDY4MDE3LCAKKyAgICA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIDQ2NjksIDAsIDY4MDk5LCAKKyAgICAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCA5MTc4NzUsIDg2NjQsIAorICAgIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCA5NzcyLCA3MjU1LCA4ODg2LCAKKyAgICAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgOTIzODEsIDEyMDI1NSwgCisgICAgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIDEyMDI2MywgMTIwMjY0LCAxMDE3LCAKKyAgICA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgMTIwNjEzLCAxMjg3MDQsIDAsIAorICAgIDczODU1LCAxMTMwNywgNjY3MDcsIDkxNzg3MSwgMTI3NzUxLCAxMTc0NSwgNzkxOSwgMCwgMTY0MSwgMCwgMCwgODk2NiwgMCwgCisgICAgMCwgNTkwOCwgMCwgMCwgNjc0NCwgMTI4MzU1LCAxNjk5LCA2OTg2MSwgNzQ4NDMsIDkxNzkzMywgMCwgNjMwNiwgMTAxNjksIAorICAgIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAzNzY2LCAyMzg5LCAxMjA0NTYsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgCisgICAgMTMxNTMsIDAsIDQyMzg2LCAwLCA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAKKyAgICAxMDU0MSwgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgMCwgNDE0MzUsIDQzNTIsIAorICAgIDk4MzYxMCwgMjQzNSwgMTIwODA5LCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAorICAgIDEyMDQ0NywgMzc2OCwgNjgxNDIsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAorICAgIDQ1NjQsIDAsIDAsIDc0MjcxLCA3Mzc1MywgODM3NCwgOTgzMTU2LCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgMCwgCisgICAgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCA3NDA3NSwgMTI3MjM2LCAxMjgwMTksIDQyNjE0LCAKKyAgICA1MzUzLCA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDY5OTQyLCA2OTUyLCAKKyAgICA5ODMyNjQsIDEyMDc1MiwgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIAorICAgIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgCisgICAgNTYyNywgMTIwMDE3LCAxMjAwMTgsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMCwgMjAzLCAwLCAwLCAwLCAwLCAKKyAgICA3ODM1MCwgMCwgNjQzNzgsIDQyMDU0LCAwLCAwLCA1NTQsIDExOTY0OSwgMTEzNTgsIDAsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIAorICAgIDEyNjQ2NCwgNzM4OTEsIDAsIDAsIDU2OTQsIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAwLCAKKyAgICAwLCA2OTc2NCwgMCwgMCwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDAsIDY5NzcwLCA0MzY1MSwgMCwgNjgxMTgsIAorICAgIDEyODAyNCwgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIAorICAgIDAsIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCAKKyAgICA3NzU2LCAxMjM0MiwgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIAorICAgIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCisgICAgMCwgNDE0OTQsIDkyMzE2LCA0NjYwLCAwLCAxMDQwNSwgMCwgNzg4MDMsIDAsIDAsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCAKKyAgICA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgNzg4NjcsIDgyMTQsIDAsIDAsIDAsIAorICAgIDQxNDU3LCA5ODM5NjEsIDExOTU4OSwgMTk2OSwgMjM4NCwgODA5NywgOTE3ODY0LCA3NDEzLCA2ODAxMiwgNzgwMjksIAorICAgIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIAorICAgIDkxNzg2OCwgMCwgODQyOSwgMCwgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgOTgzOTU4LCAKKyAgICA5NDAwNSwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCAKKyAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAorICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKKyAgICA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIAorICAgIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgCisgICAgMCwgNjgwMDksIDAsIDY1NTA3LCAyNDQ3LCAwLCAwLCAxMjgwNDIsIDEyNjU0NSwgOTgzMTM3LCAwLCA2MzM0LCAwLCAwLCAKKyAgICAxOTkzNywgMCwgOTIzNjgsIDAsIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgCisgICAgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCAwLCA0MjQ2NCwgMTIwNTY3LCAwLCA5MjY0NSwgNzQ3OTYsIDY0NDAwLCAKKyAgICA2NDY5MywgMCwgNzc4NjEsIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCAKKyAgICA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIAorICAgIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAKKyAgICAxMjQ3MiwgMCwgNjk4NjQsIDc2OTksIDEyMzkzLCAwLCAwLCAwLCA3NDUxOCwgODIyMywgMCwgNDI2MSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTI4MzAyLCAwLCAxMjgwNDYsIDQzNDE5LCAwLCA2NDU1NCwgMTA1NzQsIDM4NzgsIDAsIDQyMzUyLCAxNzUyLCAKKyAgICA3Mzc4NSwgMCwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDAsIDAsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIAorICAgIDAsIDQzNDA2LCA5ODM3MjcsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgMCwgNjQ0ODgsIDAsIDAsIDY0MDQxLCAKKyAgICA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMCwgNzg4NjMsIDAsIDEzMDIsIDAsIDc4ODYxLCAxMTkxMzQsIDAsIDAsIAorICAgIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDAsIDM5OTUsIDY4MzYwLCA2NTYwOCwgMzcxNCwgOTIxOTAsIDAsIDAsIAogICAgIDEwOTk5LCAxMTc1MCwgMCwgNDMyNTEsIDY4NjYwLCA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgCi0gICAgMTE5NjQsIDAsIDAsIDAsIDAsIDY4NDU1LCA0Mjg2MywgNzM4MzksIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OCwgNjEyLCAwLCAKLSAgICA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAwLCAxMjI4MCwgMCwgNTQwLCA3NDU2NCwgMTE5MDE3LCAKLSAgICAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgMCwgNjQ2ODQsIAotICAgIDEyNjk5MiwgMzM1OSwgNzgwMCwgMTI4NjQ0LCA2NTE3NywgNjIyNiwgMzUzLCAxMjM5NiwgMCwgMTE5NjEyLCA2NDc0MiwgCi0gICAgMTI4NjgyLCAxMjAyODIsIDAsIDAsIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3ODg0NywgMTg4NCwgOTQ4MSwgNDI0MTgsIAotICAgIDAsIDQxMTU3LCAwLCAxMTk1LCA2NDg5OCwgNzkyNCwgMCwgNDExNTEsIDIwMTAsIDAsIDQxMzI4LCA0MjM0NCwgMCwgCi0gICAgMTI0MDksIDAsIDQzNjAsIDEyNzAwOSwgOTczOSwgMCwgNzQzOTIsIDczOTIxLCAwLCA0MjUyMSwgODUzOSwgMCwgMCwgCi0gICAgMTE4OTg2LCAwLCA0Nzg4LCAwLCAwLCA2NTczNCwgMCwgNDM3OTAsIDAsIDEzMDc1LCA3NDQyOSwgMCwgNjQ1NjksIDQzNTMyLCAKLSAgICAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgCi0gICAgMTE5NjE3LCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgMCwgCi0gICAgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIDEyNzA5LCA2OTg2LCA5MjM2NCwgMCwgMCwgNDEzNDksIDExOTEyMywgCi0gICAgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNzc5NTAsIDQxMzQ2LCAwLCAKLSAgICA2MDcsIDAsIDExOTg1MywgMTI4ODQ2LCAxMjkyMywgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIAotICAgIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIDQyODM4LCAwLCA0MDk3OCwgMCwgMTE5ODQwLCAwLCAwLCAwLCA2NjQ0NCwgCi0gICAgMTA1MzgsIDAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCAwLCAwLCA1NjE5LCAKLSAgICA2NTgyMiwgMCwgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIAotICAgIDEyMDU1MSwgNDIzODAsIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIAotICAgIDE5NDg4NywgMCwgMTEzNTAsIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgCi0gICAgMTIwNTgxLCAwLCAxMjczOSwgNDYwMywgMzA4NCwgMCwgOTI0ODQsIDk4NTgsIDYwMzcsIDAsIDM5NzQsIDc4MjEzLCAKLSAgICAxMDI5MCwgMCwgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCAKLSAgICA0MjM4OCwgMCwgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTk0ODkzLCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCAKLSAgICA0MDk2MywgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDAsIDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIAotICAgIDE5NDg5NSwgNzgzNjcsIDEyNzM3NywgMCwgMCwgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIDAsIAotICAgIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCAwLCA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAwLCAKLSAgICA5MTc2MjQsIDQzNzQwLCAwLCA0MDk2NiwgOTE3NjIzLCAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDc0MjM3LCAKKyAgICAxMTk2NCwgMCwgOTgzMTg1LCAwLCAwLCA2ODQ1NSwgNDI4NjMsIDczODM5LCAwLCAwLCAwLCAwLCAxMjY2MjksIDAsIDQ2OCwgCisgICAgNjEyLCAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCA5ODMxNjMsIDEyMjgwLCAwLCA1NDAsIAorICAgIDc0NTY0LCAxMTkwMTcsIDAsIDg0MzIsIDAsIDExMDczLCAwLCA2NDMxNiwgMCwgMCwgODIwLCA0MTc0MSwgMCwgMTIwNjY3LCAKKyAgICAwLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIDYyMjYsIDM1MywgMTIzOTYsIDAsIDExOTYxMiwgCisgICAgNjQ3NDIsIDEyODY4MiwgMTIwMjgyLCAwLCA5ODM0NDIsIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3ODg0NywgMTg4NCwgCisgICAgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgMCwgMTE5NSwgNjQ4OTgsIDc5MjQsIDAsIDQxMTUxLCAyMDEwLCAwLCAKKyAgICA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCA0MzYwLCAxMjcwMDksIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCAwLCAKKyAgICA0MjUyMSwgODUzOSwgOTgzNzE2LCAwLCAxMTg5ODYsIDAsIDQ3ODgsIDAsIDY4MDIzLCA2NTczNCwgOTgzNDQ3LCA0Mzc5MCwgCisgICAgMCwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCAKKyAgICA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTE5NjE3LCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIAorICAgIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgOTE3ODM3LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCisgICAgMTI3MDksIDY5ODYsIDkyMzY0LCA2ODAxNSwgMCwgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAKKyAgICAxMDI1NCwgMCwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDAsIDYwNywgMCwgMTE5ODUyLCAxMjg4NDYsIDEyOTIzLCAKKyAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMCwgMTE5ODM0LCA0MDk3NSwgNTg0MCwgCisgICAgNDI4MzgsIDAsIDQwOTc4LCA5ODM4ODgsIDExOTg0MCwgMCwgOTgzMDcxLCAwLCA2NjQ0NCwgMTA1MzgsIDAsIDI1NTAsIAorICAgIDExOTgzNiwgNjc3OSwgMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCAwLCAwLCA1NjE5LCA2NTgyMiwgMTI2NTY3LCAKKyAgICAxOTQ4ODIsIDc0NTUsIDAsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAxMDcyNywgNTYxNSwgMCwgMTIwNTUxLCA0MjM4MCwgCisgICAgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgCisgICAgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIAorICAgIDQ2MDMsIDMwODQsIDk4MzE1NSwgOTI0ODQsIDk4NTgsIDYwMzcsIDAsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNjk1LCAKKyAgICAzMDgzLCAxMDMyMiwgMCwgMCwgMCwgNDEwMzYsIDAsIDAsIDQzMzIxLCA2NTYwNiwgMCwgNDEwMzIsIDQyMzg4LCAwLCAKKyAgICA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAwLCAxOTQ4OTEsIDAsIDQwOTYzLCAKKyAgICA2NDk1MiwgMTA0MDIsIDAsIDAsIDkyMzA0LCAxMDYwMywgMCwgMCwgOTgzMTEzLCAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKKyAgICAxOTQ4OTUsIDc4MzY3LCAxMjczNzcsIDAsIDkzOTYzLCA5MDczLCA0MjU4NSwgNjQzMDIsIDEwNzA0LCA2NTAzMCwgNDc4NywgCisgICAgMCwgNzQ4MjksIDAsIDY1NDIzLCAwLCAxMjgxMTgsIDk1NzAsIDU1MjYwLCA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAwLCAKKyAgICA5MTc2MjQsIDQzNzQwLCAwLCA0MDk2NiwgOTE3NjIyLCAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDc0MjM3LCAKICAgICA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgNDE5NTQsIDkxNzYxNywgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCAKICAgICA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCA0MzMyMCwgMTE5MTU5LCAxMjgxODMsIDE5NDg3NCwgNjQ2OCwgCi0gICAgNDE5NzYsIDk3MjAsIDkxNzYwNiwgMTE3NjcsIDQxOTcwLCAwLCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgMTIxODAsIAotICAgIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgCi0gICAgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgNDE0NjYsIDAsIDkyNTg4LCAxMTQ1MCwgMCwgMzYzOCwgCi0gICAgMTIzNTQsIDAsIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCAwLCAwLCAxMTkxODIsIDY5MjQ0LCAwLCAwLCAxMTc1OSwgCi0gICAgMTk0OTAzLCA2MzY4LCA3NDgyMywgMCwgNDE0MjMsIDgwNzgsIDEwNTA0LCAwLCA0MTY5OCwgNDIyMzcsIDAsIDcwMDIsIDAsIAotICAgIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCAwLCA0MTA1MCwgNDE0NzMsIDEwNDY2LCAxMzA5OSwgMCwgMCwgMCwgCi0gICAgNjQzNSwgMCwgMTEzNjIsIDAsIDAsIDY1MzgyLCAwLCA0MTQyMCwgMCwgMzYyNSwgNzgxNTcsIDQxNDA5LCAwLCA2OTYzOSwgCi0gICAgMjA0MSwgOTE3OCwgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgMCwgMCwgMCwgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAKLSAgICAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgCi0gICAgMCwgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDAsIDAsIDAsIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCAKLSAgICAwLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDAsIAotICAgIDM5MTcsIDAsIDExNzMyLCAwLCAwLCA0MTQ0OCwgNDE0NjEsIDEyODgyMywgMCwgMTI3OTEyLCAwLCA4ODE5LCAxMjY2MywgMCwgCi0gICAgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCAwLCAwLCA5MDk0LCAwLCAxMTc1OCwgCi0gICAgNjg0MjUsIDAsIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDAsIDc4NjIsIDY0NTUxLCAKLSAgICAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDAsIDI5MTEsIDAsIAotICAgIDQxMTc4LCA1NDI3LCA2NDgyMywgMCwgMCwgMzc4NywgNDExNzQsIDAsIDQxNDU4LCAwLCA0MTQ2MywgNDI0MTMsIDExMjkyLCAKLSAgICAyNDA2LCA3NzUsIDAsIDY1NTg0LCAwLCA2MDc0LCA5NjE4LCAxMjg2NjgsIDAsIDQzNDQwLCAwLCAxOTQ5MDEsIDQxNDM2LCAKLSAgICAzNjU2LCAwLCAxOTQ4OTksIDQxNDU2LCAwLCAxNTk5LCAxMTMzMywgMCwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIAotICAgIDEyNTk4LCAwLCAxMjA3MzQsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDAsIAorICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMTk0NTk2LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgCisgICAgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAKKyAgICAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgNDE0NjYsIDAsIDkyNTg4LCAxMTQ1MCwgMCwgCisgICAgMzYzOCwgMTIzNTQsIDAsIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCAwLCA5ODM3MzYsIDExOTE4MiwgNjkyNDQsIDAsIAorICAgIDAsIDExNzU5LCAxOTQ5MDMsIDYzNjgsIDc0ODIzLCAwLCA0MTQyMywgODA3OCwgMTA1MDQsIDEyNzU1OCwgNDE2OTgsIAorICAgIDQyMjM3LCAwLCA3MDAyLCA5ODM2NjksIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCAwLCA0MTA1MCwgNDE0NzMsIAorICAgIDEwNDY2LCAxMzA5OSwgMCwgMCwgMCwgNjQzNSwgMCwgMTEzNjIsIDAsIDAsIDY1MzgyLCAwLCA0MTQyMCwgMCwgMzYyNSwgCisgICAgNzgxNTcsIDQxNDA5LCAwLCA2OTYzOSwgMjA0MSwgOTE3OCwgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgMCwgMCwgMCwgCisgICAgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCAKKyAgICA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgMCwgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDAsIDAsIDAsIAorICAgIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCA5ODMxNDAsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIAorICAgIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMCwgMzkxNywgMCwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIAorICAgIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCisgICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgCisgICAgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgCisgICAgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA5ODMyNjEsIDI5MTEsIDAsIDQxMTc4LCA1NDI3LCA2NDgyMywgMCwgMCwgCisgICAgMzc4NywgNDExNzQsIDAsIDQxNDU4LCAwLCA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCAKKyAgICA2OTkyMywgNjA3NCwgOTYxOCwgMTI4NjY4LCA5ODM5NDMsIDQzNDQwLCAwLCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCAwLCAKKyAgICAxMjA2MDAsIDQxNDU2LCAwLCAxNTk5LCAxMTMzMywgMCwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIDEyNTk4LCAKKyAgICA5ODMxOTEsIDEyMDczNCwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNzAwMjksIAogICAgIDk5MDUsIDAsIDY1NzMwLCAwLCAxMjAzNzQsIDg0MjcsIDEyMDM3NSwgNTUyNDYsIDEyMDM3NiwgMCwgMTE0OTcsIDY0Njg3LCAKICAgICA3NDAwOCwgNDI1OTIsIDM4NzEsIDAsIDEyODMwNSwgOTExMSwgNTc0MSwgMCwgMTk0ODQ2LCAxMjAzNjYsIDExOTExMSwgCiAgICAgMTIwNzQ1LCAwLCAxMjAzNjgsIDAsIDExNjQ4LCAwLCAxOTQ4NzMsIDEyMDM2NCwgNDE1ODcsIDEyMDM2NSwgMCwgNzQzMjIsIAogICAgIDQyMTEzLCAwLCAxMjcxNTUsIDEyMTcyLCAwLCA3NDUzMCwgNjUyOTgsIDY1NzIzLCAxOTQ4NDAsIDczODcxLCA2NTcyNCwgCi0gICAgNzkyOCwgMTIwMzU0LCAwLCA0MTU5NSwgNzM3MzAsIDAsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCAwLCA3ODc1LCAwLCAKLSAgICA0MTU5OCwgMzk5MywgMCwgMTU0NSwgNDA5NzEsIDUzNiwgMTI4NTIxLCA0MzAyOSwgMCwgMCwgNjUxNzMsIDY1Mjg2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MTM3NSwgNTQwMiwgMCwgMCwgMTY4NywgMTIwNTAzLCAwLCAwLCA3ODE5NCwgNjQzMjYsIAotICAgIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIDY1NDYwLCAxMjI0MiwgCi0gICAgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgMTA3MTAsIDAsIAotICAgIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAwLCAwLCAKLSAgICAxMTc1NSwgNjYzMDUsIDAsIDAsIDEwOTE3LCAxMjA3NjcsIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgCi0gICAgMTc0MSwgNDIzNzAsIDEyMjcsIDAsIDAsIDExNDEzLCAwLCAwLCA1MjgzLCAxNTg2LCA0OTc4LCAwLCAxOTg0LCAxOTQ2MjEsIAotICAgIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIDAsIDAsIDkyMzcsIAotICAgIDkzODUsIDQxNjQ4LCAwLCAwLCAwLCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIDQxMjg3LCA5MjYxMCwgMCwgMCwgCi0gICAgNDIyMTksIDEyODI1NywgMCwgNDE5ODcsIDQxNjc2LCAwLCAxMjA4MjMsIDAsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgCi0gICAgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgMCwgMTE0NTEsIDAsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCAKLSAgICA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCA2NDM2OCwgMCwgMTI4Nzk1LCAwLCAzOTcsIDQzNjIyLCA0MjEzOSwgCi0gICAgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAwLCA0MjgsIDk2MjAsIAotICAgIDE0NjYsIDc4MTEyLCAxMDk4MiwgMTE4ODMxLCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDAsIDAsIAotICAgIDAsIDU4MDQsIDExOTc2LCA4NTU0LCA5MjcyMSwgMCwgMCwgOTA1NywgNDIyOTQsIDQxMjE4LCAwLCAwLCA3ODEzNywgMTg4MywgCi0gICAgMTA5NTIsIDgwNDgsIDc4MTQyLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAwLCAxMjg2ODQsIDAsIDQ0MDcsIDAsIDY1ODA5LCAKLSAgICAxMTkwNzQsIDE5NDgyMSwgODQ0OCwgNzE0MSwgNzQxODMsIDAsIDEyNjc1LCAxMjY1OSwgMCwgNDIzNjMsIDEyMDYyNCwgCi0gICAgMTk0ODI0LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgCi0gICAgMTIwNTAwLCAwLCA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgCi0gICAgODcwOSwgMTI4MjgzLCAwLCAxMjA2MzcsIDQyNDE5LCA2NDc5OSwgNDIwNDcsIDAsIDAsIDg0NzAsIDExODA3LCA2NTg5NywgCi0gICAgNTc3LCAwLCAwLCA3NDMwMCwgMCwgMTI3MzA4LCA3NDg0MCwgMCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgCi0gICAgNDI2NDMsIDk2ODMsIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgMCwgNjYzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MzE3LCAKLSAgICA5MTc2MTIsIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgCi0gICAgNjYzMjQsIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIAotICAgIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAKLSAgICAxMjAzNzEsIDAsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgMzU0NywgMCwgMCwgMCwgMCwgNDMyMTYsIDYwODksIAotICAgIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCA3NDQsIDAsIAotICAgIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCAwLCA2NTEzNiwgCi0gICAgMTI3MTM2LCAwLCAwLCAxMDg1MSwgMCwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAxMjA3NzgsIDc4NjQ4LCAKLSAgICAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgMCwgMCwgNjE3NywgCi0gICAgOTAyMCwgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgMTI4MDI3LCA2NzY3MywgNzUxOCwgODc1NCwgMCwgCi0gICAgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMCwgMCwgOTEzNiwgMTIwMjQwLCA0NDAxLCA0MTI4MCwgMCwgODk3NCwgMjMwOCwgMCwgCi0gICAgNzQxNDksIDAsIDIzMTgsIDAsIDY2MzYxLCA4MTk4LCAwLCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA2NTI2NiwgMTIwODI3LCAKLSAgICA3NDMwNywgMCwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDAsIDAsIAotICAgIDExODk0OSwgMTA4NzQsIDY1NTA1LCAxMjgwODMsIDAsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIDQyMDUyLCAwLCAwLCAKLSAgICA2NzY1MSwgMCwgOTY2NSwgOTIzMDAsIDAsIDEzMTgxLCAwLCAwLCAwLCAwLCA3NDE0OCwgMCwgMCwgMTIwMjI1LCAxMjAyMjksIAotICAgIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCAwLCAwLCAwLCA0MTE0OCwgODY4MywgNzU5NCwgMTI3NTE5LCAwLCAxMTkwOTAsIAotICAgIDEwODY5LCA0MzQ1OCwgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMCwgMzUxMiwgMTE5NjMzLCAwLCA4MTAzLCAwLCAwLCA2NTE4NCwgCi0gICAgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMCwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgMCwgMCwgMCwgMCwgMTk5NDIsIDAsIAotICAgIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIDAsIDAsIDAsIDM4MDQsIDEzMDcwLCAKLSAgICAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgCi0gICAgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgMCwgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgMCwgNDIwNDYsIDc4MjQxLCAKLSAgICA0MDM2LCAwLCAwLCAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDAsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgCi0gICAgOTI3MjIsIDAsIDAsIDEyNzc3MiwgMCwgOTE3NTQyLCAwLCAwLCA2NTM5LCAwLCAwLCAwLCAxOTQ4NTYsIDAsIDEyMDQ5MiwgCi0gICAgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgMCwgMTI3MTk0LCAwLCAxOTQ4NTQsIDY1NzkyLCAKLSAgICAwLCAxMTg5NjgsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDE5NDg1MCwgMCwgMCwgNDkxOSwgMTA1OTAsIDAsIDc3NTUsIDAsIAotICAgIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgMCwgMTYxNywgODA1MCwgCi0gICAgMCwgNTAxNSwgMCwgMTE5MTc0LCA0MjU5MCwgMTk0ODcxLCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIDYzNTIsIDQxODkyLCAwLCAKLSAgICA3NTU1LCAxMzEwMywgNTQwOCwgMjgxNywgMTIxNCwgMCwgOTIzMzUsIDAsIDAsIDAsIDAsIDEyNzE5NSwgNzk1NywgODY4OSwgCi0gICAgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMTk0ODEzLCAwLCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAwLCAKLSAgICAxMTkwMjgsIDAsIDAsIDAsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIDAsIDAsIDAsIDg0NjEsIDEyODEwMiwgMTIxNTMsIAotICAgIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCAwLCAwLCA2ODEsIDAsIDcwMywgMCwgMzI3MiwgCi0gICAgODc4MSwgMTI4OTQsIDAsIDExNzA5LCA5MjI4OCwgNzQ0NDYsIDAsIDkyNTMyLCAwLCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAwLCAKLSAgICAwLCA2NTkyOCwgMCwgMCwgNjUwMjEsIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIAotICAgIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgOTg5NSwgMTY1NSwgNzg4MTcsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDAsIDAsIDAsIAotICAgIDAsIDEwMDM5LCAwLCAwLCA1NjIzLCA1NzE3LCA1Nzc2LCAwLCAwLCAwLCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgCi0gICAgMCwgMCwgNjc4NDgsIDAsIDAsIDAsIDg4ODcsIDAsIDcyOTUsIDExMDMxLCAwLCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIAotICAgIDEwNDEyLCA4NzU1LCAwLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDAsIDAsIDg4MTAsIDc0NDk5LCA2ODYsIDAsIAotICAgIDAsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCA2NTExOCwgMCwgCi0gICAgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDAsIDI0MDEsIDY4MTQ0LCA4NzkyLCAwLCAwLCA2NTQ1NSwgMCwgOTIyNDYsIDAsIAotICAgIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3NDEzNSwgMCwgCi0gICAgMTE4OTQ1LCA3ODExOCwgNzM4NTEsIDMwMTAsIDY0NDEsIDc4MTIyLCAxNDU4LCA0MTQ3NSwgMTI4NjcyLCAwLCAwLCAKLSAgICAxMTQ3OSwgMCwgMCwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3ODExNCwgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgCi0gICAgMTI4Njg2LCA0MDUyLCAwLCA3NjI2LCAwLCAwLCAxMDQ1LCAwLCA1NjMxLCA0MTExMywgMCwgMCwgNDM3MDcsIDc0MTI3LCAwLCAKLSAgICAwLCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgMCwgMCwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIAotICAgIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIAotICAgIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIAotICAgIDAsIDQzNDQ2LCAwLCA2NjUxMywgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDAsIDYzNzUsIDI2NzMsIDAsIDExODE0LCAKLSAgICAwLCA0NDg4LCAwLCAxMjczMzYsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIAotICAgIDQ0ODcsIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAwLCA2MTQsIDc4MTkxLCAKLSAgICAxMjczMjUsIDEyMDYxNSwgMCwgNzgyNjIsIDEyODY2OSwgMTI3MzIzLCAwLCA0MzEyMSwgMCwgMCwgOTI1MTMsIDEwNTAsIAotICAgIDc1NDksIDAsIDAsIDkzMTQsIDAsIDAsIDEyMDYxNiwgMCwgMTAwNTcsIDAsIDEyNzMxMywgMCwgNjY1MDQsIDAsIDAsIAotICAgIDIzMDcsIDAsIDY0MzMzLCAxMjczMTIsIDEyODU0NywgNzM4NzMsIDAsIDAsIDAsIDEyNzk3MywgMTI4NzA4LCAwLCAxMDM2MCwgCi0gICAgNjc0NiwgMCwgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAwLCA5OTU3LCAwLCA2NjQ0NywgODA0NiwgCi0gICAgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMCwgMTUyMSwgOTg5NiwgMCwgMTA0ODcsIDAsIAotICAgIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMCwgMCwgNTIzNywgCi0gICAgNjk3MTQsIDAsIDEwMTAzLCA1MjQ3LCA0NzY5LCAwLCAxMTg5NzcsIDEyODczLCA1NzY0LCAwLCAwLCAzMDA4LCA0ODk2LCAwLCAKLSAgICAxMjA4NywgMCwgNTUyMzEsIDQxMTAzLCAwLCA2NDU2NSwgNDc3MywgMCwgOTI3MTcsIDAsIDQ3NzAsIDAsIDkxNzU2NywgCi0gICAgODczMSwgNjUzNzgsIDEyNzM2MiwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDAsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCAKLSAgICA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCAwLCAwLCAwLCA3NDc3NiwgNDI4MSwgNDc2OCwgMCwgNDE1MzUsIDQwOTksIDkwMTcsIAotICAgIDAsIDAsIDc4MDk1LCAwLCA3ODA5NiwgMCwgMCwgMCwgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDAsIDEyODAyMSwgMjEzNCwgCi0gICAgMCwgMTAxMTYsIDk4NzcsIDkyMzI5LCAwLCAwLCA3MDk1LCAwLCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIDI0MjcsIAotICAgIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIDE5NTAwMywgOTk2MiwgMCwgMTIyMjMsIDAsIDAsIDE0MzQsIDEyMDI1NCwgNTYzNywgCi0gICAgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCAwLCA3ODEyMSwgMCwgMCwgNTUyODMsIDAsIDAsIDc0NDM3LCAxMTU2LCA4NzQwLCAKLSAgICA5MjQxNSwgMzc4MiwgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCA4MjYxLCAwLCAwLCAxMDgzNSwgMCwgNjU1MzYsIDAsIAotICAgIDEyMDQ2MywgMCwgNzcwMiwgMTE4ODI0LCAwLCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgCi0gICAgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgMCwgMTI4NTc2LCAwLCA0MjI1NywgNTY5NiwgCi0gICAgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgMCwgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIAotICAgIDQxNDkwLCAwLCAxNDI2LCA2ODIxNywgMCwgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgCi0gICAgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAKLSAgICAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDAsIAotICAgIDM5NDUsIDkyNTg5LCAwLCAwLCAwLCAwLCA3ODIxMiwgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgMCwgNzg3MzEsIDU2NDgsIAotICAgIDY0NzQ4LCAxOTQ5MTAsIDAsIDEwMjA1LCAzNTQ1LCAwLCA2OTg0LCAwLCA3NDA1MSwgMCwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgCi0gICAgMCwgMCwgMCwgOTkxMSwgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgMCwgMTE4ODM2LCAwLCA3ODQyNywgCi0gICAgMTE0MCwgNzg0MjYsIDAsIDEwMTU5LCAwLCAwLCA4MTI4LCAwLCAwLCA5MTc5NjUsIDE4MTUsIDE5OTEwLCA4OTAsIDAsIAotICAgIDMyNjcsIDkyMjkxLCAwLCAxMDEyMywgMCwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCAwLCAKKyAgICA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAwLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgCisgICAgOTgzMTEwLCA3ODc1LCAwLCA0MTU5OCwgMzk5MywgMCwgMTU0NSwgNDA5NzEsIDUzNiwgMTI4NTIxLCA0MzAyOSwgMCwgMCwgCisgICAgNjUxNzMsIDY1Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCA0MTM3NSwgNTQwMiwgMCwgMCwgMTY4NywgMTIwNTAzLCA5MTc4MTcsIAorICAgIDAsIDc4MTk0LCA2NDMyNiwgNDA5NjksIDEwNTI2LCA3ODc1MywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMCwgCisgICAgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgMCwgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAwLCAKKyAgICAxMDcxMCwgMCwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgMTk1MDkxLCAwLCAxMTk2MzYsIDY3ODU3LCAxMjA2ODcsIAorICAgIDAsIDk4MzA2NiwgMTE3NTUsIDY2MzA1LCAwLCAwLCAxMDkxNywgOTM5NzksIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgCisgICAgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDAsIDAsIDExNDEzLCAwLCAwLCA1MjgzLCAxNTg2LCA0OTc4LCAwLCAKKyAgICAxOTg0LCAxMTgzMCwgMCwgOTIyOTMsIDQwOTg0LCAxMjgzMDYsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAwLCA0MTY2MywgMCwgCisgICAgMCwgMCwgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDE5NDU4MCwgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKKyAgICA0MTI4NywgOTI2MTAsIDAsIDAsIDQyMjE5LCAxMjgyNTcsIDAsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAxMjA4MjMsIAorICAgIDk4MzE0NCwgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgMTE0NTEsIAorICAgIDk4MzExMSwgMTI4ODIyLCA0MjYzMSwgMjM1OSwgMCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIAorICAgIDY0MzY4LCA5ODMyMzMsIDEyODc5NSwgMCwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCisgICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMCwgNDI4LCA5NjIwLCAxNDY2LCA3ODExMiwgMTA5ODIsIAorICAgIDExODgzMSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAwLCAwLCAwLCA1ODA0LCAxMTk3NiwgODU1NCwgCisgICAgOTI3MjEsIDAsIDAsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMCwgMCwgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3ODE0MiwgCisgICAgNDEyMjUsIDkyNjIxLCA0MjkxNSwgOTgzNjY3LCAxMjg2ODQsIDAsIDQ0MDcsIDAsIDY1ODA5LCAxMTkwNzQsIDE5NDgyMSwgCisgICAgODQ0OCwgNzE0MSwgNzQxODMsIDAsIDEyNjc1LCAxMjY1OSwgMCwgNDIzNjMsIDEyMDYyNCwgMTk0ODI0LCA1NTI3MywgCisgICAgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTIwNTAwLCAxMTkxNTgsIAorICAgIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIAorICAgIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgNjQ3OTksIDQyMDQ3LCAwLCAwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgCisgICAgOTgzNzUxLCA3NDMwMCwgMCwgMTI3MzA4LCA3NDg0MCwgMCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIAorICAgIDk2ODMsIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgMCwgNjYzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MzE3LCA2OTk0NSwgCisgICAgNjYzMTUsIDIxMDYsIDEyMDIyMiwgMTEyNzMsIDAsIDQzMDA0LCA3NTQxLCAwLCAwLCA5NjEsIDY0MzA3LCA2NjMyNCwgCisgICAgNjQ5MDYsIDEyODU5MSwgMzEwNiwgNjU5MTcsIDQxMjg0LCAxNjk2LCAwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIAorICAgIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDAsIDAsIDAsIDE5NDgyNiwgOTI2ODgsIDAsIDIzMjIsIDEyMDM3MSwgCisgICAgOTgzNTg0LCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDAsIDAsIDEyODc5MywgOTgzMzkwLCA0MzIxNiwgCisgICAgNjA4OSwgNzg2ODIsIDAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIAorICAgIDc0NCwgMCwgMCwgMCwgNjU4MjMsIDEyNzgyNiwgMCwgMzU1MSwgMCwgMCwgNDYyMywgNTUyNjgsIDAsIDQ1OTgsIDk4MzE2MiwgCisgICAgNjUxMzYsIDEyNzEzNiwgMCwgMCwgMTA4NTEsIDAsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgMTIwNzc4LCAKKyAgICA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDAsIDAsIAorICAgIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDIyMTQsIAorICAgIDg3NTQsIDAsIDEyMDIzNywgMjEzNywgNDMwODEsIDAsIDAsIDkxMzYsIDEyMDI0MCwgNDQwMSwgNDEyODAsIDAsIDg5NzQsIAorICAgIDIzMDgsIDAsIDc0MTQ5LCAwLCAyMzE4LCA5ODMxODMsIDY2MzYxLCA4MTk4LCAwLCA2NDM2MCwgMTI2MDEsIDQyNTM2LCAKKyAgICA2NTI2NiwgMTIwODI3LCA3NDMwNywgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgCisgICAgMTI2OTg5LCA2Mzg1LCAwLCAwLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTI4MDgzLCAwLCA0MjA1MywgMjA3NSwgNDIwNTcsIAorICAgIDExMDgzLCA0MjA1MiwgMCwgMCwgNjc2NTEsIDAsIDk2NjUsIDkyMzAwLCA5ODM2NTcsIDEzMTgxLCAwLCAwLCAwLCA3MDA4OCwgCisgICAgNzQxNDgsIDAsIDAsIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgMCwgOTQwOTYsIDk4MzkzNywgCisgICAgNDExNDgsIDg2ODMsIDc1OTQsIDEyNzUxOSwgMCwgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIAorICAgIDAsIDM1MTIsIDExOTYzMywgOTgzNzAwLCA4MTAzLCAwLCAwLCA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMCwgCisgICAgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgMCwgMCwgMCwgMCwgMTk5NDIsIDAsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAKKyAgICAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIDk0MDY0LCAwLCAwLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAKKyAgICAwLCAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIDY2Njk3LCAwLCAxMTY4NCwgMCwgCisgICAgOTI0ODYsIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgMCwgNDIwNDYsIDc4MjQxLCA0MDM2LCAxMjY0ODEsIDAsIAorICAgIDEyODIxMywgMTk0ODYxLCAwLCAxMTk1NCwgOTM5NzgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIDAsIAorICAgIDAsIDEyNzc3MiwgMCwgOTE3NTQyLCAwLCAwLCA2NTM5LCAwLCAwLCAwLCAxOTQ4NTYsIDAsIDEyMDQ5MiwgNDExOTAsIAorICAgIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgMCwgMTI3MTk0LCAwLCAxOTQ4NTQsIDY1NzkyLCAwLCAKKyAgICAxMTg5NjgsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDE5NDg1MCwgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgCisgICAgMCwgMCwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIDY1MTI2LCAwLCAxMjcwMDQsIDAsIDEyMTg4LCA5ODM2NTksIAorICAgIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDE5NDg3MSwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCAKKyAgICA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgOTgzMTI1LCAwLCAKKyAgICAwLCAwLCAxMjcxOTUsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDE5NDgxMywgMCwgNTUyODYsIAorICAgIDcwNzMsIDY1ODUwLCAxMjMyNywgOTgzOTM5LCAxMTkwMjgsIDAsIDAsIDAsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIAorICAgIDk4MzI1MiwgMCwgNzAwNzksIDg0NjEsIDEyODEwMiwgMTIxNTMsIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIAorICAgIDc1NzEsIDEzMDczLCAwLCAwLCA2ODEsIDk4MzI0NiwgNzAzLCAwLCAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCAKKyAgICA5MjI4OCwgNzQ0NDYsIDAsIDkyNTMyLCAwLCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAwLCAwLCA2NTkyOCwgMCwgMCwgNjUwMjEsIAorICAgIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgCisgICAgOTg5NSwgMTY1NSwgNzg4MTcsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDk4MzEyMiwgMCwgMCwgMCwgMTAwMzksIDAsIAorICAgIDk4MzkzNiwgNTYyMywgNTcxNywgNTc3NiwgMCwgMCwgMCwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIDAsIDAsIAorICAgIDY3ODQ4LCAwLCAwLCAwLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCAwLCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIAorICAgIDEwNDEyLCA4NzU1LCAwLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDAsIDk4MzcwMiwgODgxMCwgNzQ0OTksIDY4NiwgCisgICAgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKKyAgICA2NTExOCwgMCwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDAsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2MzksIDAsIDY1NDU1LCAKKyAgICAwLCA5MjI0NiwgMCwgMTE5MTI5LCAwLCAxMjg4NiwgMTI3OTIwLCA2NjYyNCwgMCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgCisgICAgMTAzOTYsIDc0MTM1LCA5ODM0NDUsIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgCisgICAgNDE0NzUsIDEyODY3MiwgOTM5NzUsIDAsIDExNDc5LCAwLCAxMjAzNTYsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIAorICAgIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgCisgICAgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIAorICAgIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgMCwgNDI2MjUsIDkxNzYyNywgNzgwODQsIDQxNDQzLCAwLCAxMjgyMDYsIAorICAgIDAsIDE3NzQsIDE1MjMsIDAsIDAsIDQxNDQ1LCA3ODIzNiwgMCwgODU2NywgNDE0NDIsIDM5ODgsIDAsIDc4MjM3LCAKKyAgICAxMTg5MTAsIDAsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMCwgMCwgNDM0NDYsIDAsIDY2NTEzLCAKKyAgICA2MjU2LCAwLCA1NzksIDU1MjE4LCAxMDIwNiwgOTgzMDc1LCA2Mzc1LCAyNjczLCAwLCAxMTgxNCwgMCwgNDQ4OCwgMCwgCisgICAgMTI3MzM2LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAxMjc4NDksIAorICAgIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMCwgNjE0LCA3ODE5MSwgMTI3MzI1LCAxMjA2MTUsIAorICAgIDAsIDc4MjYyLCAxMjg2NjksIDEyNzMyMywgMCwgNDMxMjEsIDAsIDAsIDkyNTEzLCAxMDUwLCA3NTQ5LCAwLCAwLCA5MzE0LCAKKyAgICAwLCAwLCAxMjA2MTYsIDAsIDEwMDU3LCAwLCAxMjczMTMsIDAsIDY2NTA0LCA5ODMxNzEsIDAsIDIzMDcsIDAsIDY0MzMzLCAKKyAgICAxMjczMTIsIDEyODU0NywgNzM4NzMsIDAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgMCwgMTAzNjAsIDY3NDYsIDAsIAorICAgIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMTI4Mjg1LCA2NjQ0NywgODA0NiwgCisgICAgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMCwgMTUyMSwgOTg5NiwgOTM5NjUsIDEwNDg3LCAKKyAgICA2OTg3OCwgMTI1MjcsIDAsIDc5NzAsIDAsIDEyODY2MCwgMCwgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAKKyAgICA5ODMyMjksIDAsIDUyMzcsIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgMjI4MywgCisgICAgOTgzMjMxLCAwLCAzMDA4LCA0ODk2LCAwLCAxMjA4NywgMCwgNTUyMzEsIDQxMTAzLCAwLCA2NDU2NSwgNDc3MywgMCwgCisgICAgOTI3MTcsIDcwMDc0LCA0NzcwLCAwLCA5MTc1NjcsIDg3MzEsIDY1Mzc4LCAxMjczNjIsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAKKyAgICAxMjY2MDAsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCAwLCAwLCAwLCAKKyAgICA3NDc3NiwgNDI4MSwgNDc2OCwgMCwgNDE1MzUsIDQwOTksIDkwMTcsIDAsIDAsIDc4MDk1LCAwLCA3ODA5NiwgMCwgMCwgMCwgCisgICAgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDAsIDEyODAyMSwgMjEzNCwgMCwgMTAxMTYsIDk4NzcsIDkyMzI5LCAwLCAwLCAKKyAgICA3MDk1LCAwLCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIDI0MjcsIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIAorICAgIDE5NTAwMywgOTk2MiwgMCwgMTIyMjMsIDAsIDAsIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCAKKyAgICAwLCA3ODEyMSwgMCwgMCwgNTUyODMsIDAsIDAsIDc0NDM3LCAxMTU2LCA4NzQwLCA5MjQxNSwgMzc4MiwgNjQzMzEsIDAsIAorICAgIDQxMzcwLCAxMDE0LCA4MjYxLCAwLCAwLCAxMDgzNSwgMCwgNjU1MzYsIDAsIDEyMDQ2MywgMCwgNzcwMiwgMTE4ODI0LCAwLCAKKyAgICA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIAorICAgIDU2OTcsIDExODc4OCwgMCwgMTI4NTc2LCAwLCA0MjI1NywgNTY5NiwgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgMCwgCisgICAgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCA5ODMxNTMsIDE0MjYsIDY4MjE3LCAwLCAKKyAgICA2ODQ0NywgNDIyMDQsIDU1MjcwLCA4NTcxLCAxOTQ5OTEsIDc4MDY3LCAwLCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgCisgICAgMCwgNDIwMjIsIDAsIDEwMjgxLCAwLCA1NjUwLCA0MzE5NCwgNjQ3MTIsIDEwNzQ0LCAwLCA5OTAsIDU2NDcsIDAsIDczODcsIAorICAgIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgOTgzOTIxLCAzOTQ1LCA5MjU4OSwgMCwgMCwgMCwgMCwgCisgICAgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDAsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTk0OTEwLCA3ODczMywgMTAyMDUsIAorICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMCwgNzQwNTEsIDk4MzY0NiwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMCwgMCwgMCwgOTkxMSwgCisgICAgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjUzLCAxMTg4MzYsIDk4MzczOSwgNzg0MjcsIDExNDAsIAorICAgIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMCwgMCwgOTE3OTY1LCAxODE1LCAxOTkxMCwgODkwLCAwLCAzMjY3LCAKKyAgICA5MjI5MSwgMCwgMTAxMjMsIDAsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgMCwgCiAgICAgMTI4MzQ3LCAwLCAwLCAwLCAxOTkzOCwgNjU5MDYsIDEyNzgxOSwgMCwgMCwgMzI5OCwgNTM3NSwgMTAxNDIsIDAsIDgyMTUsIAotICAgIDAsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgMCwgMTI4MjE1LCAwLCAwLCAwLCA0MTM4MiwgMCwgMTI4NjUzLCA1MTczLCA2NTM0OCwgCisgICAgMCwgNjEzNCwgNDEyNDYsIDY0NDAyLCAwLCA2OTg5OSwgMCwgMCwgMCwgNDEzODIsIDAsIDEyODY1MywgNTE3MywgNjUzNDgsIAogICAgIDUyNywgMCwgMCwgOTI2MTIsIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIDIzMjksIAotICAgIDQyMjUwLCAwLCAxMjg4NjQsIDY5NjY3LCAxMjI0NSwgMTU2OCwgMCwgMCwgMCwgMTI4MTIwLCAwLCA3NDMyOCwgOTI3MDgsIAotICAgIDc0NzY5LCAwLCAxMTkwODcsIDkwNjksIDYxNDQsIDAsIDAsIDczODIyLCAwLCAxMjgwMTAsIDY0OTE3LCA0MTUyMSwgCi0gICAgMTE4OTM0LCA0OTQsIDEzMjUwLCAwLCA2NTA5OCwgNjM2NCwgOTU2LCAwLCAxMjgzMCwgMTA0NjIsIDczNzQwLCAwLCAwLCAwLCAKLSAgICAwLCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMCwgMCwgOTIyOTQsIDAsIDEwNDQsIAotICAgIDQxMjc2LCAwLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDAsIDAsIDAsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgOTE3ODQ3LCAKLSAgICA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCAwLCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDAsIDAsIDAsIDAsIDEwNTcsIDU2NiwgCi0gICAgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIDkyNTEwLCAzMDA2LCAKLSAgICA0NjIwLCAxMjcyMzcsIDAsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCAwLCAwLCAKLSAgICA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAKLSAgICAwLCAwLCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIDc0MzQ5LCA2NjQ3OSwgMCwgMCwgMCwgMCwgNDI0OTAsIDY4OSwgNjUwOCwgCi0gICAgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCAwLCAxMjEzMCwgMCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgCi0gICAgNjY0ODEsIDEyNzg1MCwgMCwgMCwgNjM1OSwgMCwgNDM0NzEsIDAsIDAsIDAsIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgCi0gICAgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMCwgNDM2ODUsIDAsIDAsIDAsIAotICAgIDAsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDAsIDEyMDQxMywgMCwgMTI3MjU3LCA2NTg5NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE5MTg3LCAyMTM1LCA3ODg2OCwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgMCwgMCwgMCwgMCwgNTU3OCwgCi0gICAgNDE3NzQsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCAwLCAwLCAwLCAxMjc1MDYsIDY4MjAyLCA1NTgzLCAwLCAKLSAgICAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgNTU4MiwgNDI0NjUsIDQxMzMwLCAxOTQ5ODcsIDU3OTUsIAotICAgIDY1NTEyLCAxMTkwMDYsIDY1NzAyLCAwLCAxMjA4MDEsIDY1MjUxLCAwLCA2NTcxMCwgMCwgMCwgNjc2NzIsIDAsIDUzNzAsIAotICAgIDAsIDI5MzEsIDE2MzgsIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDAsIDEyODgzMCwgODE3MiwgCi0gICAgNDIwMTcsIDAsIDEwODQ0LCAwLCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAwLCAwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAKLSAgICAxMTk5OTksIDAsIDczOTUsIDAsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMCwgMzAxNSwgMTI4MDIzLCAKLSAgICA5MTc3NjMsIDUyMTEsIDAsIDY0MDAsIDAsIDE5NDk4MywgMCwgODE4OSwgMTEyNzYsIDAsIDAsIDM3MiwgMTI4ODI5LCAwLCAKLSAgICAxMTg4NzQsIDQyMTAyLCA0MTU4NSwgMTI4MjAyLCAwLCA0MjEwMSwgMjc2LCA3ODQwMiwgMCwgMzMsIDc0MjI2LCAxMjczMDMsIAotICAgIDkwMDcsIDExODc5NiwgNDE1ODgsIDY2MDMzLCA0MjcsIDEwNzYzLCAxMTg4MTksIDAsIDEyNzg4NCwgMCwgMTAzMSwgNjI1NywgCi0gICAgMCwgNDIxMDQsIDAsIDAsIDIzMjgsIDkyNDA5LCAxMDcxLCAwLCAwLCA3NDg0OCwgMCwgMCwgMCwgMTA0NywgMCwgMCwgCi0gICAgNjQ3OTAsIDAsIDY5NzIzLCAxMDY1MSwgMCwgMCwgMCwgMCwgOTIyMDYsIDExOTE4MSwgNTcxMSwgNDE2MzMsIDEyMDk4LCAKLSAgICA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMCwgNjc5MCwgNjUxNjgsIDEzMjE2LCAwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCAKLSAgICA0MTYyMywgMTk1MDAxLCA1NzE1LCA2OTY1NCwgMCwgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAKLSAgICAwLCA4NjQzLCA3Mzc2OCwgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNzQ0OTgsIDg5MTAsIDEwNjg5LCA2NDc5LCAKLSAgICAwLCAwLCAwLCA3ODYwNywgOTE5NiwgNjk2NzAsIDAsIDAsIDAsIDAsIDExODkxMSwgMCwgMCwgMCwgMCwgMCwgMTIwMDEwLCAKLSAgICAwLCA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAwLCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDAsIDAsIAotICAgIDY0OTQ2LCAxMDk5MiwgMCwgMTIwMDA5LCAwLCAwLCA5MzE4LCAxMjA2NjEsIDEzMjQ5LCA2NTY3OSwgNzM4MDgsIDAsIAotICAgIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgMTk0OTk3LCAxMjAwMDUsIDAsIAotICAgIDAsIDUwODQsIDAsIDAsIDExODg2MSwgMCwgNzMzLCA5MTc4NzYsIDc4MDE0LCA3ODQzNiwgNzg0MzUsIDQxNjc3LCAwLCAKLSAgICA5MjE4LCAxNzMxLCAwLCAwLCAwLCAxOTUwMTAsIDAsIDAsIDAsIDEyMDAwMSwgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMCwgCi0gICAgNTM1OCwgMCwgMCwgOTE3NzY3LCA2NDQyNCwgMCwgMzg0MCwgNjQzMTQsIDQxNDMyLCAwLCAwLCA2ODQzMCwgMTE5MTE2LCAKLSAgICA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAxMTU4MCwgMCwgNjQ2MDEsIAotICAgIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCAwLCA3NDg0MiwgMCwgMCwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIAotICAgIDEwMTU2LCAxMjExOSwgOTI1NzIsIDAsIDI1NDQsIDY1MDc0LCAxMTkyMTEsIDAsIDAsIDc4MDExLCAzNTEsIDExOTE0OSwgMCwgCi0gICAgMCwgNTUyMjksIDAsIDc0MjY4LCAwLCAwLCAwLCA0MjM3NywgMCwgMCwgMCwgMCwgMCwgOTAxMywgNDA1NCwgMCwgMCwgMCwgCi0gICAgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgMCwgMCwgNTU4NCwgODM1OCwgMCwgNzQ0MTEsIDkyMjE5LCAKLSAgICAxMDkxOSwgMCwgNzk4MCwgMCwgMCwgMCwgNDE4MDAsIDU1ODksIDAsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIAotICAgIDExMzU2LCAwLCAwLCA0MzQ1MiwgNzg2MDksIDAsIDQyNTczLCA2Nzg1NiwgMCwgNzgxMjksIDAsIDAsIDkyNTM1LCA4MTM1LCAKLSAgICA2NDUwLCAxMDA1NSwgNzc5OTYsIDAsIDAsIDAsIDU2NTcsIDAsIDk2MjYsIDAsIDc3OTk0LCAxMDE3OSwgNTY1NCwgMTI5MzksIAotICAgIDkyNTczLCAxMjA3OTksIDAsIDAsIDU2NTIsIDEwOTQ1LCAwLCA2NjQ4NiwgMCwgMzY2MSwgNzg2MywgMCwgMCwgMCwgCi0gICAgNzQ1MDksIDAsIDU2NTksIDAsIDEyNzUxMCwgNjY3MjksIDU2NTUsIDAsIDQyMTY4LCAwLCAxMDU1LCA5MTc2MjgsIAotICAgIDEyNzc5MiwgNjYzMTAsIDc0MDMwLCAwLCAxMjE0NiwgNzM5NTUsIDczOTU2LCAxMTYxOCwgMCwgMTI2OTkwLCAwLCAxMDI3MiwgCi0gICAgMTAzMDQsIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDAsIDY0ODcwLCAwLCAzNDY3LCAwLCAwLCAKLSAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCAwLCA2OTY5NiwgCi0gICAgNjk3NjksIDY0NjU2LCAwLCAwLCAxOTQ4MzcsIDAsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgMCwgOTA5MSwgMTA3OTgsIAotICAgIDAsIDEyODE2NiwgMTAxODYsIDAsIDc3MzIsIDAsIDY0NTU2LCAwLCAwLCA1NjY4LCA3NDQ0NSwgMCwgMCwgNTY3MCwgMCwgCi0gICAgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgMCwgMTI3NDksIDc0NTUxLCAwLCAwLCAKLSAgICA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAwLCAwLCAwLCAwLCAzNTcxLCAxMzI0NywgMCwgNzk3MywgCi0gICAgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCAwLCA3ODI2NSwgNTUzLCAxMjA2NTMsIDAsIDEyODU1NCwgCi0gICAgNTgyOSwgMCwgNDU4NywgNzgyODUsIDY1OTEyLCAwLCAxMjc0NiwgMCwgMCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDAsIDAsIAotICAgIDAsIDY0OTA1LCAwLCA5NTEyLCAxMjA2NzEsIDEyNzQyLCA2NDQzLCAwLCAwLCA5MTM1LCAwLCA0MTU2NCwgMCwgNTUyMTksIAotICAgIDEyODgzMiwgMCwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIAotICAgIDEyNzI3MCwgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgMCwgCi0gICAgNjk4MTUsIDU2MzYsIDAsIDUzMjksIDAsIDU2MzgsIDExOTkxOCwgNzk0MCwgNjQ5MzgsIDQzMjIzLCAwLCA1NjM1LCAzMzczLCAKLSAgICAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgMCwgMCwgMTY1NywgCi0gICAgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDAsIDc4MzAwLCA0MjIyNywgMCwgCi0gICAgMCwgNDE2MzcsIDY3ODcyLCAwLCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgNTY0MiwgMCwgCi0gICAgNTQ4NiwgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCAwLCAwLCA1NjQxLCA4MjU5LCAwLCAxMDU4LCAwLCA2NzYzMCwgMCwgCi0gICAgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCA2NTMyMiwgMCwgNTY0NSwgNjQ5NjQsIAotICAgIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMCwgNTYwOCwgNjU4OTAsIDQzODA4LCAwLCA2NzYyMSwgMTE5OTM0LCA5MDAwLCAKLSAgICAwLCAwLCA5MjY3MywgMTg2NSwgMCwgNTYxMywgNzQyNjcsIDAsIDAsIDU2MTAsIDAsIDAsIDY1ODI2LCAyMDY5LCAwLCAKLSAgICAxMDc4NywgNDM5OTksIDI5OTcsIDAsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA2NTM3NiwgMjQxMiwgMCwgCi0gICAgODE4NiwgOTgwNywgNzQyNjksIDAsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgMTAwMzAsIDUzMDYsIDEyOTM2LCAwLCAwLCAKLSAgICAxMTcwNCwgMCwgOTI1ODMsIDEwMjExLCAwLCAwLCAwLCAwLCAxMTcwNiwgOTcxMCwgMCwgMCwgMCwgNDEzLCA2NTYyMywgCi0gICAgNzExOCwgMCwgOTEzMywgNzQyNjIsIDAsIDEwNDIsIDAsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgCi0gICAgNDk4NCwgMCwgNzA4LCAxMTM5MSwgMCwgMTIyNDEsIDkyNzIwLCAwLCAxMzA4LCAwLCAyNTM0LCA4MTAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE5MTcsIDMwMDAsIDAsIDAsIDEyMDczOSwgMjM2NCwgOTI0NDMsIDc0NDcwLCA2NjYxOCwgNjU2ODAsIDAsIDEwMDI3LCAKLSAgICAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgMCwgMjk4MCwgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgxODIsIAotICAgIDYzNjMsIDI3NDgsIDAsIDAsIDY1MDQxLCAwLCA0NDAxMSwgODczMCwgMCwgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCAKLSAgICAwLCA3Mjc1LCA3ODMwNCwgOTM1LCAwLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAKLSAgICAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDAsIAotICAgIDE5NDk5OCwgMCwgMTA2NzMsIDExOTIxNywgNzI0OCwgMCwgMTI4MzQ2LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgMTY0OSwgMCwgCi0gICAgOTY0LCAwLCAxMjc4NzYsIDc4MjI2LCAxMjg3NzUsIDEyNzUxMiwgMCwgMCwgMCwgMCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIAotICAgIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDc0MDM3LCA0MzU0NywgMCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIAotICAgIDAsIDc5NDksIDAsIDAsIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA5MjcyNCwgCi0gICAgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCAwLCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCAKLSAgICA0NDA5LCAwLCAwLCA2NDc5OCwgMCwgNTM0NiwgMCwgMTIwNTI4LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAwLCA2NTIzMSwgCisgICAgNDIyNTAsIDAsIDEyODg2NCwgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgMCwgMCwgMTI4MTIwLCAwLCA3NDMyOCwgCisgICAgOTI3MDgsIDc0NzY5LCAwLCAxMTkwODcsIDkwNjksIDYxNDQsIDAsIDAsIDczODIyLCAwLCAxMjgwMTAsIDY0OTE3LCAKKyAgICA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCAwLCA2NTA5OCwgNjM2NCwgOTU2LCAwLCAxMjgzMCwgMTA0NjIsIDczNzQwLCAKKyAgICA3MzczNCwgMCwgMCwgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAKKyAgICAwLCAxMDQ0LCA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIAorICAgIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCAwLCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDk4MzQ0NiwgNzA5OCwgMCwgCisgICAgMCwgMTA1NywgNTY2LCA0MjY5NiwgMCwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgCisgICAgOTI1MTAsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzNTc4LCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgCisgICAgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCAwLCAKKyAgICA0MzgxMywgMTA1MywgMCwgNzgyNjksIDAsIDEyNjU4NiwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIAorICAgIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIAorICAgIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCA5ODM3NTksIDAsIAorICAgIDAsIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgCisgICAgNTgzMCwgMCwgNDM2ODUsIDAsIDAsIDAsIDAsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDk4Mzc5OSwgMTIwNDEzLCAwLCAKKyAgICAxMjcyNTcsIDY1ODk0LCAwLCAwLCAwLCA5ODM5MTQsIDAsIDAsIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCAKKyAgICA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDk4MzA4MiwgOTQwMDIsIDAsIDU1NzgsIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCAKKyAgICA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIAorICAgIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgCisgICAgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgCisgICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgMTI4ODMwLCA4MTcyLCA0MjAxNywgMCwgMTA4NDQsIDAsIAorICAgIDEyODE5NSwgOTI0MjQsIDYzNzQsIDAsIDAsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIDExOTk5OSwgMCwgNzM5NSwgMCwgMTA3MCwgCisgICAgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAwLCAzMDE1LCAxMjgwMjMsIDEyNjQ2NSwgNTIxMSwgOTgzMDgzLCA2NDAwLCAwLCAKKyAgICAxOTQ5ODMsIDcwMDU0LCA4MTg5LCAxMTI3NiwgMCwgMCwgMzcyLCAxMjg4MjksIDAsIDExODg3NCwgNDIxMDIsIDQxNTg1LCAKKyAgICAxMjgyMDIsIDAsIDQyMTAxLCAyNzYsIDc4NDAyLCAwLCAzMywgNzQyMjYsIDEyNzMwMywgOTAwNywgMTE4Nzk2LCA0MTU4OCwgCisgICAgNjYwMzMsIDQyNywgMTA3NjMsIDExODgxOSwgMCwgMTI3ODg0LCAwLCAxMDMxLCA2MjU3LCAwLCA0MjEwNCwgMCwgOTgzOTcxLCAKKyAgICAyMzI4LCA5MjQwOSwgMTA3MSwgNDI4OTksIDAsIDc0ODQ4LCAwLCA5ODM1ODAsIDAsIDEwNDcsIDAsIDAsIDY0NzkwLCAwLCAKKyAgICA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIAorICAgIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgCisgICAgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNzM3NjgsIAorICAgIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgMCwgNzg2MDcsIAorICAgIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgMCwgODcwMSwgNjgxMzAsIAorICAgIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDAsIDAsIDY0OTQ2LCAKKyAgICAxMDk5MiwgMCwgMTIwMDA5LCAwLCAwLCA5MzE4LCA5Mzk4NiwgMTMyNDksIDY1Njc5LCA3MzgwOCwgMCwgNjU0NTcsIAorICAgIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAxOTQ5OTcsIDEyMDAwNSwgMCwgOTgzOTU3LCAKKyAgICA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgOTIxOCwgCisgICAgMTczMSwgMCwgOTgzNzM3LCAwLCA2Nzk5MCwgMCwgMCwgMCwgMTIwMDAxLCAxMjcwMTgsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIAorICAgIDUzNTgsIDk4MzczNSwgMCwgOTE3NzY3LCA2NDQyNCwgOTgzMjI1LCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDc4MzE1LCAKKyAgICA2ODQzMCwgNjc5ODAsIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIAorICAgIDExNTgwLCAwLCA2NDYwMSwgMTIyMDUsIDAsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjc2LCAKKyAgICA5ODM3MTIsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgCisgICAgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIAorICAgIDAsIDAsIDAsIDk4MzkxNSwgMCwgOTAxMywgNDA1NCwgMCwgOTgzNTcwLCAwLCAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIAorICAgIDI1NDksIDc0NDY5LCAwLCAwLCA1NTg0LCA4MzU4LCAwLCA2NDIxNSwgOTIyMTksIDEwOTE5LCAwLCA3OTgwLCAxMjY2MDEsIAorICAgIDk4Mzc3NSwgMjIxOCwgNDE4MDAsIDU1ODksIDAsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIDExMzU2LCAwLCAwLCAKKyAgICA0MzQ1MiwgNzg2MDksIDAsIDQyNTczLCA2Nzg1NiwgMCwgNzgxMjksIDAsIDAsIDc0MzkyLCA4MTM1LCA2NDUwLCAxMDA1NSwgCisgICAgNzc5OTYsIDAsIDAsIDExOTIyNSwgNTY1NywgMCwgOTYyNiwgMCwgNzc5OTQsIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIAorICAgIDEyMDc5OSwgMCwgMCwgNTY1MiwgMTA5NDUsIDAsIDY2NDg2LCAwLCAzNjYxLCA3ODYzLCAwLCAwLCAwLCA3NDUwOSwgCisgICAgOTgzODQzLCA1NjU5LCAwLCA3ODY5MiwgNjY3MjksIDU2NTUsIDAsIDQyMTY4LCAwLCAxMDU1LCA5MTc2MjgsIDEyNzc5MiwgCisgICAgNjYzMTAsIDc0MDMwLCAwLCAxMjE0NiwgNzM5NTUsIDczOTU2LCAxMTYxOCwgMCwgMTI2OTkwLCAwLCAxMDI3MiwgMTAzMDQsIAorICAgIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDk4Mzg3OCwgNjQ4NzAsIDAsIDM0NjcsIDk4Mzg4MiwgMCwgCisgICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgNzAwMzYsIAorICAgIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDk4MzcxNywgMCwgOTQwMjAsIDcwMDU2LCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIAorICAgIDAsIDkwOTEsIDEwNzk4LCAwLCAxMjgxNjYsIDEwMTg2LCAwLCA3NzMyLCA5ODM3MTUsIDY0NTU2LCAwLCAwLCA1NjY4LCAKKyAgICA3NDQ0NSwgMCwgMTI4NjYzLCA1NjcwLCAxMjY2MTAsIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAKKyAgICAxMjA4MDcsIDAsIDEyNzQ5LCA3NDU1MSwgMCwgMCwgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgCisgICAgMTI4Mjg2LCA5NDAwNCwgMCwgMCwgMzU3MSwgMTMyNDcsIDAsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCAKKyAgICA0MzE5MiwgMCwgNzgyNjUsIDU1MywgMTIwNjUzLCAwLCAxMjg1NTQsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMCwgCisgICAgMTI3NDYsIDAsIDAsIDExOTkyNCwgNTYzMywgMTE5OTI3LCA5NDEwMSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIAorICAgIDk1MTIsIDk0MTAzLCAxMjc0MiwgNjQ0MywgOTgzNzk3LCAwLCA5MTM1LCAwLCA0MTU2NCwgMCwgNTUyMTksIDEyODgzMiwgCisgICAgOTgzODQyLCAwLCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgMCwgMTI3MjcwLCAKKyAgICAwLCAxMTg4ODAsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAwLCA5ODM4MDAsIAorICAgIDY5ODE1LCA1NjM2LCAwLCA1MzI5LCAwLCA1NjM4LCAxMTk5MTgsIDc5NDAsIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIAorICAgIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNzgyOTEsIDYyMDMsIDQyNDcsIDAsIDExOTIwLCA4Mjc0LCAwLCAwLCAKKyAgICAxNjU3LCA0MTU2MSwgNzgyOTksIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgOTgzNjc2LCA3ODMwMCwgCisgICAgNDIyMjcsIDAsIDAsIDQxNjM3LCA2Nzg3MiwgMCwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIAorICAgIDU2NDIsIDAsIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDAsIDEwNTgsIAorICAgIDAsIDY3NjMwLCAwLCAwLCAxMTQ0LCA3ODc1MCwgMCwgNDIyMjgsIDAsIDczODkwLCAxMTg5NzIsIDAsIDI4MDAsIDAsIAorICAgIDU2NDUsIDY0OTY0LCA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgNjc2MjEsIAorICAgIDExOTkzNCwgOTAwMCwgMCwgMCwgOTI2NzMsIDE4NjUsIDAsIDU2MTMsIDY5OTUwLCAwLCAwLCA1NjEwLCAwLCAwLCA2NTgyNiwgCisgICAgMjA2OSwgMCwgMTA3ODcsIDQzOTk5LCAyOTk3LCAwLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNjUzNzYsIAorICAgIDI0MTIsIDAsIDgxODYsIDk4MDcsIDc0MjY5LCA5MjU0NywgMTMxMzAsIDY1ODc0LCAwLCA1ODA3LCAwLCAxMDAzMCwgNTMwNiwgCisgICAgMTIzNjQsIDEyODA2NCwgMCwgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMCwgMCwgMCwgMTE3MDYsIDk3MTAsIDAsIDAsIAorICAgIDAsIDQxMywgNjU2MjMsIDcxMTgsIDAsIDkxMzMsIDc0MjYyLCAwLCAxMDQyLCAwLCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgCisgICAgNjE4NSwgNjQ3NzYsIDQ5ODQsIDAsIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgOTgzODkwLCAxMzA4LCAwLCAyNTM0LCAKKyAgICA4MTAsIDAsIDAsIDAsIDAsIDAsIDE5MTcsIDMwMDAsIDAsIDAsIDEyMDczOSwgMjM2NCwgOTI0NDMsIDc0NDcwLCA2NjYxOCwgCisgICAgNjU2ODAsIDEyMDc3OSwgMTAwMjcsIDAsIDEyODE1NCwgMTIzMzcsIDEyMDcyMiwgMTI3MzY4LCA5ODMxNjcsIDI5ODAsIAorICAgIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MTgyLCA2MzYzLCAyNzQ4LCAwLCAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCAKKyAgICA4NzMwLCA5ODMwNjcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgMCwgNzI3NSwgNzgzMDQsIDkzNSwgMCwgNjU4NDAsIAorICAgIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAKKyAgICAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCAwLCAxOTQ5OTgsIDAsIDEwNjczLCAxMTkyMTcsIDcyNDgsIDAsIAorICAgIDEyODM0NiwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIDE2NDksIDAsIDk2NCwgMCwgMTI3ODc2LCA3ODIyNiwgMTI4Nzc1LCAKKyAgICAxMjc1MTIsIDAsIDAsIDAsIDAsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCAKKyAgICA2OTkwOSwgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgOTgzOTA5LCAKKyAgICAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgOTI3MjQsIDY0NzgsIDk4OTgsIAorICAgIDQzNjczLCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgOTgzNzg2LCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCA0NDA5LCAwLCAKKyAgICAwLCA2NDc5OCwgMCwgNTM0NiwgMCwgOTQwNDcsIDYyMzcsIDQ4NzQsIDAsIDkxNzYsIDAsIDEyNjU1MywgNjUyMzEsIAogICAgIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMCwgMCwgNTY4NSwgCiAgICAgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDAsIDY4MTYzLCA1MzQwLCAwLCAxMjc4MjAsIDQzNjM1LCAKLSAgICA3MzkyOCwgMTI3NTI5LCAwLCAwLCAwLCAxMjg1MTAsIDY1NDgyLCAwLCA5MTQyLCAwLCAwLCAwLCAxMDkzOCwgMCwgCisgICAgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMTI2NDcwLCAwLCAxMDkzOCwgMCwgCiAgICAgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAwLCAxMjgxNzYsIDUyOSwgODU4MCwgMCwgMCwgMTA1ODYsIDEwNzkwLCAKLSAgICAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgMCwgMCwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDAsIDAsIDExMzc2LCAKKyAgICAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgMCwgMCwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDAsIDk4MzkyOSwgMTEzNzYsIAogICAgIDc0Mzc5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIDQyMDk3LCAxMjcyNjcsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgCi0gICAgMCwgNDE4NzMsIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODg0NCwgNDE4NzEsIDQxMzM4LCAKLSAgICAzNzM0LCA3NzM0LCA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCAwLCA0MDk2NSwgMTI3OTM3LCAwLCA1MTYxLCAxMDU3MiwgCi0gICAgMCwgMCwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjc1NTIsIDAsIDAsIDExOTQ4LCA2OTIyMCwgMTIzNTksIDQzNDI5LCAKLSAgICA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIDAsIDk4NzAsIDY4NjQ1LCAKLSAgICA4NjIwLCA2NTgyNCwgMCwgMTE5MzgsIDAsIDcyODUsIDAsIDExOTU3NywgNDI2NzgsIDAsIDQzNjc3LCA0MTU4MywgMCwgCi0gICAgNjU3OTksIDkyNjIzLCAwLCAwLCAwLCA3ODE2OSwgNjYxOTksIDAsIDM2MDksIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgCi0gICAgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgMCwgMCwgNDI3MzIsIDUxODAsIDkyNjk5LCA0MTM5NSwgCi0gICAgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDAsIAotICAgIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgMCwgMCwgNDI4NSwgNjYxOTUsIAotICAgIDAsIDQyMzAsIDAsIDEzMzA3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCAwLCA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAKLSAgICAyMTQsIDAsIDAsIDc4NDY2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDAsIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MDIyLCAwLCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDAsIDY2NDUzLCAxMDE2LCA0MTEwNywgMCwgCi0gICAgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCAwLCAyMDc0LCAwLCA3ODI4MywgMCwgMTI0NTMsIAotICAgIDEyODEyOCwgMCwgNzQyNDEsIDAsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgMCwgMCwgNzgyNzksIDAsIDAsIDkyMzU4LCAKLSAgICA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAxMjQ0OSwgMTI4NTUyLCAwLCAwLCA4NzUyLCAzMTk3LCA0NzIwLCAKLSAgICAxMDE2NSwgMCwgMTE5MjQ5LCAwLCAxMTU5NSwgNjQ4OTMsIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgCi0gICAgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCAwLCAxOTkwLCA2NjU4OSwgNDQ5OCwgNzg2NjQsIDExOTE4MywgMCwgMCwgCi0gICAgNjk3MzQsIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCAxMjcwNTksIDAsIDI5NTAsIDExOTU3OSwgCi0gICAgNjIxMCwgNjU3NTMsIDM3MCwgMCwgMCwgMCwgNDk1MywgMCwgMCwgMCwgMCwgNjkyMzAsIDAsIDAsIDY1Njg4LCAwLCA1MDYzLCAKLSAgICAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCAKLSAgICA2NjAxNiwgNzgyNTMsIDAsIDAsIDY0OTIzLCAxMjgwNDAsIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAKLSAgICAwLCA2NTg4MywgMCwgOTE3Nzc0LCAxMjA2MDIsIDM3NjEsIDAsIDAsIDAsIDAsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIAotICAgIDEyODE5MSwgMCwgMCwgMCwgMCwgOTA4LCAwLCA4NjExLCAwLCAwLCAxMjc1NTUsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgCi0gICAgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAxMDUyNywgMCwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgMTk0OTM3LCAxMjc1MzYsIAotICAgIDY1MjQxLCA1MzM2LCAwLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCAwLCAxMjcxNjMsIDY4MTkzLCAKLSAgICAzNDcsIDAsIDAsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA3ODc2OSwgMTIxNDMsIAorICAgIDEyMDE4MywgNDE4NzMsIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODg0NCwgNDE4NzEsIAorICAgIDQxMzM4LCAzNzM0LCA3NzM0LCA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEyNzkzNywgMCwgCisgICAgNTE2MSwgMTA1NzIsIDAsIDAsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTI3NTUyLCAwLCAxMjY2MDUsIDExOTQ4LCAKKyAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAorICAgIDAsIDk4NzAsIDY4NjQ1LCA4NjIwLCA2NTgyNCwgMCwgMTE5MzgsIDAsIDcyODUsIDAsIDExOTU3NywgNDI2NzgsIDAsIAorICAgIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAwLCA5ODM5MjcsIDc4MTY5LCA2NjE5OSwgMCwgMzYwOSwgCisgICAgNjg2MjQsIDAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCAwLCAwLCA0MjczMiwgCisgICAgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDAsIDAsIDEyODY0NSwgCisgICAgNjM0OCwgMjQzLCAxMzIwMCwgOTgzODA0LCA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgCisgICAgNDM2ODcsIDAsIDAsIDQyODUsIDY2MTk1LCAwLCA0MjMwLCAwLCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCAwLCAKKyAgICA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDAsIDAsIDc4NDY2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDAsIDY2MzExLCAKKyAgICA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCAwLCAwLCA3MDA0NywgMCwgNjAyMiwgMCwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAKKyAgICAwLCA2NjQ1MywgMTAxNiwgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgMCwgCisgICAgMjA3NCwgMCwgNzgyODMsIDAsIDEyNDUzLCAxMjgxMjgsIDk4MzgxNywgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIAorICAgIDc4MjY4LCAwLCAwLCAwLCA3ODI3OSwgMCwgMCwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIAorICAgIDEyNDQ5LCAxMjg1NTIsIDAsIDAsIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAwLCAxMTkyNDksIDAsIDExNTk1LCA2NDg5MywgCisgICAgMCwgNDM0MzUsIDAsIDAsIDQ5OTMsIDAsIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDAsIDU0OTQsIDQ2MzksIDk4MzE0NywgCisgICAgMTk5MCwgNjY1ODksIDQ0OTgsIDc4NjY0LCAxMTkxODMsIDAsIDAsIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgCisgICAgMTI4MTE3LCA0MzQyNCwgMTI3MDU5LCAwLCAyOTUwLCAxMTk1NzksIDYyMTAsIDY1NzUzLCAzNzAsIDAsIDAsIDAsIDQ5NTMsIAorICAgIDk4MzY3MywgMCwgMCwgMCwgNjkyMzAsIDAsIDAsIDY1Njg4LCA5ODMyNDAsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCAKKyAgICA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgCisgICAgNzEzMTcsIDY0OTIzLCAxMjgwNDAsIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgMCwgCisgICAgOTE3Nzc0LCAxMjA2MDIsIDM3NjEsIDAsIDAsIDcwMDY4LCAwLCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDAsIDAsIAorICAgIDAsIDAsIDkwOCwgMCwgODYxMSwgMCwgMCwgMTI3NTU1LCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCAKKyAgICA0MTU4NiwgMTA1MjcsIDAsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDE5NDkzNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgCisgICAgOTgzMjUxLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNDksIDEyNzE2MywgNjgxOTMsIDM0NywgCisgICAgMCwgMCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDc4NzY5LCAxMjE0MywgCiAgICAgNjk2NTcsIDc4NTEyLCAwLCA0MzQ0MSwgNDE4MDQsIDc4NTIzLCAwLCA3ODUyNSwgMCwgMTI4ODU5LCA0MTU4NCwgMTA2ODEsIAotICAgIDAsIDAsIDczOTM4LCAwLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIDc4NTM0LCA5NTE4LCA2NjA5LCAKLSAgICAxMDQzNCwgMCwgMTEzMTksIDEwOTcsIDAsIDkxNzg1MCwgNDE3MzAsIDAsIDAsIDczODQ3LCA3ODc2MSwgNjUxNzIsIAotICAgIDQxNzI4LCA0MTcyMSwgMCwgMCwgMCwgNDEyMDMsIDAsIDEzMTEwLCA0MTcyNiwgMCwgMCwgMTAwMCwgNjk2NTEsIDAsIAotICAgIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMCwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgMCwgNjgyMTMsIDAsIAotICAgIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCA3ODc4NywgNjYzMTQsIAotICAgIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIDAsIDAsIDY0Mzk4LCAwLCAKLSAgICAxMTk5NzAsIDEyMzExLCAwLCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMCwgMCwgCi0gICAgMTIyOTAsIDEyMDE2OSwgMCwgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgMCwgOTYyNywgNzg1MzYsIAotICAgIDc4NTQyLCA3ODUzNSwgMCwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgCi0gICAgMTEzMDgsIDExOTk5NSwgMCwgMTE5OTk3LCAxMTk5OTgsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgCi0gICAgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgCi0gICAgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDAsIDQxODk5LCAwLCA4MDAyLCAwLCA0MzY0LCAwLCAwLCA2NDMzMiwgMCwgNzgxMywgCi0gICAgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNzg0NTUsIDcyNzksIDEyMDQxLCAxNDE4LCAxMDg4NSwgCi0gICAgMTI2NzMsIDAsIDAsIDk2NjAsIDAsIDEzMDEyLCA0NTcxLCAwLCAwLCAwLCAxMjA3OCwgMjk3MCwgMCwgMTA5MzMsIDAsIAotICAgIDc3ODcwLCAwLCAwLCAwLCA0MTU5OSwgMCwgMTI4ODMxLCAwLCAxMjk1MCwgOTIxNjAsIDM0ODYsIDAsIDc4MzExLCA0MjM5LCAKLSAgICAwLCAxMjc3OTksIDY2NTExLCAwLCAyNjM3LCA2NDYyOSwgODQ2MCwgMTI3MDUzLCA4NDc2LCAwLCAwLCAwLCAwLCA2NTY3MywgCi0gICAgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgMCwgNTQxMiwgNjYyNDMsIDk5MzUsIDAsIAotICAgIDczODY0LCAwLCA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCAKLSAgICA0MTczNiwgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIAotICAgIDEyNzI4NCwgMCwgNzM5NjMsIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgCi0gICAgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCA3Mzk0MiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMCwgCi0gICAgMCwgMCwgMCwgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgMCwgNzg1MTEsIDMxNjEsIDI5NSwgMTIwMjA3LCAwLCAKLSAgICA5MjIyMywgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM2NDEsIDAsIDM5NzEsIDAsIAotICAgIDczOTcyLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCAwLCA2NjcsIDEyMzMyLCAKLSAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDAsIDQxNTksIDAsIDAsIDk4MTUsIDYzODg0LCAxOTkzNCwgNjM4ODIsIAotICAgIDQxMTk4LCA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIDYzODcyLCAwLCA0MjQyMSwgMCwgCi0gICAgNDE3MjMsIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgMCwgMCwgNDIzNDgsIDAsIAorICAgIDAsIDk4MzY4NiwgNzM5MzgsIDAsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgNzg1MzQsIDk1MTgsIAorICAgIDY2MDksIDEwNDM0LCAwLCAxMTMxOSwgMTA5NywgMCwgOTE3ODUwLCA0MTczMCwgOTgzMjEyLCAwLCA3Mzg0NywgNzg3NjEsIAorICAgIDY1MTcyLCA0MTcyOCwgNDE3MjEsIDAsIDAsIDAsIDQxMjAzLCA5MTc2MTIsIDEzMTEwLCA0MTcyNiwgOTgzODQ2LCAwLCAKKyAgICAxMDAwLCA2OTY1MSwgMCwgNDExNDAsIDEyMDksIDczOTc4LCAwLCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCAKKyAgICAwLCA2ODIxMywgMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMjcwNjIsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAorICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgMCwgMCwgCisgICAgNjQzOTgsIDAsIDExOTk3MCwgMTIzMTEsIDk4MzcxOCwgNzg3OTYsIDc4Nzk4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCAKKyAgICA3ODc5MywgNjY2NzAsIDAsIDAsIDEyMjkwLCAxMjAxNjksIDAsIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIAorICAgIDAsIDk2MjcsIDc4NTM2LCA3ODU0MiwgNzg1MzUsIDk4MzIxMCwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAKKyAgICAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIDExOTk5NSwgMCwgMTE5OTk3LCAxMTk5OTgsIDY1MzA1LCA2NTEwMCwgCisgICAgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIAorICAgIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDAsIDQxODk5LCAwLCA4MDAyLCAwLCA0MzY0LCAKKyAgICAwLCAwLCA2NDMzMiwgMCwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNzg0NTUsIDcyNzksIAorICAgIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDAsIDAsIDk2NjAsIDk4MzI3MiwgMTMwMTIsIDQ1NzEsIDAsIDAsIDEyMDE2NCwgCisgICAgMTIwNzgsIDI5NzAsIDAsIDEwOTMzLCAwLCA3Nzg3MCwgMCwgMTI3MDE1LCAwLCA0MTU5OSwgMCwgMTI4ODMxLCAwLCAKKyAgICAxMjk1MCwgOTIxNjAsIDM0ODYsIDAsIDc4MzExLCA0MjM5LCAwLCAxMjc3OTksIDY2NTExLCAwLCAyNjM3LCA2NDYyOSwgCisgICAgODQ2MCwgMTI3MDUzLCA4NDc2LCA5ODM5NjYsIDAsIDAsIDAsIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgMTIyODksIAorICAgIDAsIDQzMTYsIDAsIDEzMTE5LCA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgMCwgNzM4NjQsIDk4MzIwMSwgNDE3MzQsIAorICAgIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCAKKyAgICA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDAsIDczOTYzLCAKKyAgICA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCAKKyAgICA3MzkzMiwgNTQ5OCwgNzM5NDIsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDAsIDAsIDAsIDAsIAorICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDk4MzY5MCwgNzg1MTEsIDMxNjEsIDI5NSwgMTIwMjA3LCAwLCA5MjIyMywgCisgICAgMTI3ODU2LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM2NDEsIDAsIDM5NzEsIDAsIDcwMDYzLCAyOTUyLCAKKyAgICA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCA5NDA0MywgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIAorICAgIDQxNzIyLCAwLCA1MTcyLCAwLCAwLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgCisgICAgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIDQxNzIzLCAKKyAgICA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDEyNjYzNiwgMCwgNDIzNDgsIDczODkyLCAKICAgICA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDYsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDAsIDYzODQ2LCAyOTcyLCAxMjkzMiwgCiAgICAgNzI2MiwgMCwgNjM4NDksIDYzODQ4LCA2Mzg0NywgMTI4MDcwLCA2NTcwLCA4MzAyLCA3MjU5LCA2Mzg0MiwgNDE3OCwgCiAgICAgMTA3NDYsIDcyNTAsIDEzMjE0LCAxMDA0MSwgODEwNSwgNjM4OTIsIDAsIDExODk4MywgMTEwNSwgNDE4MCwgMCwgMTIwOTQsIAogICAgIDk0OTcsIDAsIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCA5OTg3LCAwLCAxMTg5MzIsIDE2NzgsIDEzMjc0LCAKICAgICA1NTIsIDEyMDY1NCwgNDQwMTAsIDEwNzg1LCAwLCAxMTkxNzAsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIAogICAgIDYzODYwLCA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIAotICAgIDYzODU3LCAxMzg4LCA3NDE2OSwgMCwgMTA3NywgMCwgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCA0Mjc3MywgMCwgCi0gICAgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCA0MzI0OSwgCi0gICAgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgNzU4MywgCi0gICAgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgMCwgNzM3NDgsIDYzODY2LCAwLCAxOTE1LCA0ODQ2LCAwLCAKLSAgICA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIDY5MjM4LCA2NDQzOCwgMTIwNzAsIDg3NjAsIDExMTcsIAotICAgIDExODk4NywgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCA2MzgzNSwgNjM4MzQsIDAsIDc4MjQwLCAxMjIyNSwgCi0gICAgNjM4MzgsIDYzODM3LCAwLCAwLCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIDYzODIxLCA2MzgyMCwgNjM4MTksIAotICAgIDYzODE4LCAwLCA1MjI3LCA5MDQ3LCA2MzgyMiwgMTI3MTYyLCA2MDkxLCAwLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAKLSAgICAxMTk1NzgsIDYzODEyLCA2MzgxMSwgNjM4MTAsIDYzODA5LCA1NTQyLCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAKLSAgICAxNTk3LCAxMjAxNDMsIDc4MCwgMjA2LCA3NzkyNSwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCAKLSAgICA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIDEyODE1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgCi0gICAgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIAotICAgIDQzNDMxLCAxMzE2OSwgNTI5MCwgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCAKLSAgICA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIDAsIDYzOTcwLCAxMjgzNTgsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIAotICAgIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAwLCA3NDA4LCAxMTgwOSwgMCwgMCwgMCwgMjk2NSwgNzI1OCwgODgwOCwgMCwgMTA4OSwgCi0gICAgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMCwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIDc0NDk0LCAxMjQ2MywgCi0gICAgMjk5NCwgMCwgMTE4ODI3LCAwLCA5NjY0LCA3NzkzOSwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgNzQzNDMsIDAsIDAsIDY2MCwgCi0gICAgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDc3OTQxLCA3ODUwNywgNjExOCwgMjIyLCA5NzksIDM4ODQsIAotICAgIDAsIDc0MTUxLCA5MjY1MiwgNjUwMiwgMCwgMTI3MTE4LCAxMjg2OTUsIDYzOTUxLCAxMjQ2NSwgMCwgMCwgMTI4NzgyLCAKLSAgICA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIAotICAgIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMCwgNzc3NiwgMCwgMCwgMTI3NzczLCAxMjA0NDQsIDY5NzMwLCAKLSAgICA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIAotICAgIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAKLSAgICAyNTM5LCAwLCA0Mzk4MCwgNTQ4NSwgMCwgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCAwLCAyNTMsIDAsIAotICAgIDY4MjA4LCAwLCA5MjAzLCA3NDIzMSwgMCwgMTE1MzAsIDkyNTQyLCA2ODY2OCwgMCwgMTI4ODE2LCAwLCAxMDQ3NCwgCi0gICAgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMCwgMCwgMCwgMTk1MDY1LCAwLCA4NDEzLCAwLCAwLCA1NjkzLCA3MjcyLCAwLCAKLSAgICAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3ODQ2MCwgMTk1MDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgxMzMsIDEyNzc2NywgCi0gICAgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgOTIxODcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAKLSAgICAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIAotICAgIDYzOTA0LCAwLCAwLCA0MTcyOSwgNDQyMywgMTMwNywgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIAotICAgIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIAotICAgIDQxNzQzLCA3MzkzNywgNjgwMSwgMCwgNDUxOCwgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCAwLCAyNzEwLCAwLCAKLSAgICA2OTI0MywgNDE3MjQsIDAsIDQzMDczLCA0MTY5MCwgMTI0NzksIDAsIDAsIDAsIDAsIDExOTY1OSwgMTYyOCwgMTI3MTQ5LCAKLSAgICAwLCAwLCA2NTI2MiwgNjMzMywgMTA3ODMsIDQyMzE1LCAwLCA2Mzg1NSwgMTIwNjgzLCAwLCAwLCA1MzM5LCA3NDMyMywgMCwgCi0gICAgMTMwMDQsIDAsIDQ0NTcsIDAsIDAsIDAsIDAsIDU2ODQsIDg2NzgsIDEwOTE0LCAwLCA1Njg5LCA2NTgwNywgMCwgNjg0NjQsIAotICAgIDEyNjMzLCAxMjg3MCwgNjk3MDUsIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMCwgNzQyNTEsIDAsIAotICAgIDEyMDY0NywgMCwgNTAsIDEwNTU4LCA5ODcxLCAwLCA0MzY1NSwgMCwgMCwgMCwgNjY0NjgsIDAsIDEzMjU5LCA0NDQ4LCAwLCAKLSAgICAwLCAwLCAwLCA2Nzg1MywgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAwLCA5MTc2MDcsIDEyNzU0NCwgMTI3MDc5LCAxOTUwNTAsIAotICAgIDEyNzg1MiwgMCwgMCwgMCwgMTI1MDEsIDY0NjA0LCAwLCAxMTUyNywgMTE4ODcwLCA4ODEyLCAwLCAxMTUzOCwgODY3MywgCi0gICAgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAwLCAwLCAwLCA0NjM2LCAKLSAgICA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgMCwgMTIwNDk1LCAwLCAxMjgyODQsIDEyMjc3LCAxOTQ2MjcsIAotICAgIDExOTk1LCA5MjU1MywgMCwgMTIxNTgsIDAsIDg3NDEsIDEwMTk3LCAwLCA5MjQyNiwgMCwgNjUzMSwgMCwgMTI3ODQ2LCAKLSAgICA0NzMsIDQzNDE1LCAwLCAwLCAxODczLCAxMDg3LCAwLCAwLCAwLCA3ODUyNywgNjY0MzksIDQzMjE4LCAwLCAxOTQ3MTYsIAotICAgIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgMCwgMCwgOTQ4OSwgMCwgMCwgNDM4NCwgNzQyMjAsIDE5NTA1NSwgMjA1OCwgCi0gICAgMTI4ODYzLCAxMzI5NSwgNDMxOTEsIDEyODAzMCwgMCwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgMTMxMDAsIDEyOTU4LCAKLSAgICAxMjA3MDYsIDc0MTY4LCAwLCAwLCA0NDIxLCAxMDU5MiwgMCwgNDk1LCAwLCA0MTcxMiwgNzk4MywgMCwgMTIwNzc5LCAwLCAKLSAgICA2MzQ3LCAwLCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIDAsIDAsIDk0NjUsIDEzMjkwLCAKLSAgICAxMTkxODAsIDQ5OTcsIDY0MzA2LCAwLCAwLCA0OTk5LCAxOTQ2NDIsIDAsIDAsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgCi0gICAgODA0NCwgNzQ4MzQsIDE5NDY0MywgNDE3ODksIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIAotICAgIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgCi0gICAgNDMzOTksIDAsIDAsIDQxNzkxLCAxMTA0LCAwLCAwLCAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCAKLSAgICA2NTY5LCAwLCAwLCAwLCAwLCA2NzgzLCAwLCAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCAwLCAxMjg4ODIsIAotICAgIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCAKLSAgICA2MzIyLCAxMDQ4MywgMCwgNDE1NDUsIDAsIDkyNDQ5LCAwLCAwLCAwLCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIAotICAgIDg1MDMsIDUxMjIsIDQxNTI3LCAwLCA2NjMyMCwgMCwgMCwgMCwgMCwgNDE1MzcsIDY5NjgzLCA4MzAzLCA4MjgyLCAxMTgxNywgCi0gICAgNzM4NTcsIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDE5NDY2MywgMTY4NiwgMCwgNzg0MDYsIDExNDY3LCAzNjY0LCA2NTkyMSwgCi0gICAgNjQyOTksIDE5NDY2NCwgMCwgMCwgNDMyNCwgMTI2LCA0MjI0NiwgMTE5MTUyLCAwLCA3NDM3OCwgNjU5MjYsIDc3NDQsIAotICAgIDE5NDYzNiwgNzQyNzcsIDc0MzAyLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgMTYzMywgMCwgCi0gICAgMCwgNDc2MiwgMTEwMywgMCwgMCwgNDc2NSwgMCwgMTMwNzgsIDAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIAotICAgIDExMDIsIDAsIDQyMjM2LCAxMjg4NjcsIDE5NDY2NywgMTE1NDYsIDc0Nzk0LCAzMzcsIDAsIDQyNTkxLCA4NjI3LCAxMjI3OSwgCi0gICAgMTExMSwgMCwgOTIxNjEsIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTI3MDgxLCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAKLSAgICAxMzAxMCwgMCwgODMwNCwgOTE3NTYxLCAwLCAxMTk1NzUsIDAsIDAsIDY2NjU0LCAwLCA5MjY3NiwgMCwgMTMwMDgsIDAsIAotICAgIDQzODUsIDAsIDEzMDExLCAwLCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCAwLCAwLCA0MTc5MywgNjU3NjMsIAotICAgIDc0MjIxLCAxMjAxNDEsIDQxNzkyLCA0Mjc3MCwgMCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIDU3MDksIDAsIDEyNzE3NywgCi0gICAgNDM4MTYsIDAsIDAsIDEwNzksIDM4NjcsIDU3MDgsIDAsIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgCi0gICAgNDAwNSwgMCwgMTAyMzcsIDEwOTkxLCAwLCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgCi0gICAgOTE3NTc3LCA0MjYwNSwgMTIwNzY1LCA5MTc1NzAsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCA3NDg2NywgMTk0NjU0LCAKLSAgICAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCA5MTc1ODcsIDkxNzU4NiwgCi0gICAgOTE3NTg5LCA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgCi0gICAgODY0LCAwLCAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIAotICAgIDAsIDEwOTQ4LCA5MTc2MDEsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDEyMDE2NCwgCi0gICAgMCwgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCAKLSAgICA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCA0MTUyMiwgMCwgOTIxNjgsIDAsIDkxNzg1OCwgCi0gICAgMTEzNTQsIDAsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIAotICAgIDAsIDQ0NzksIDExNzgsIDY1NTg2LCAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDAsIDAsIDAsIDAsIDE5NDY1OCwgCi0gICAgMCwgNjgwOSwgNjM3ODYsIDYwMzEsIDAsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgCi0gICAgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgMCwgMTA3NDcsIDEyNSwgMCwgNjQ4OTAsIDAsIDAsIAotICAgIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgMTMyNTgsIDk1MzYsIDc0MDc3LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIAotICAgIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgNjM3NDksIDAsIDAsIDAsIDYzNzUzLCA2MzgwMiwgCi0gICAgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCA2MzgwNSwgNjM4MDQsIDQzNjMyLCA2MzgwMSwgNDEwODIsIDgxNDAsIAotICAgIDYzNzk4LCA2MjYwLCAwLCAwLCAxMTkyMjUsIDYzNzkzLCAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIAotICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAotICAgIDAsIDQyMjAzLCA3OTUwLCAxMDgwNCwgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMjIyNCwgNjk3MywgMjc5MywgMTI0NzUsIDAsIAotICAgIDAsIDYzNzY5LCA5NTMwLCAwLCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCA0NTk1LCA2Mzc2MCwgNzkyLCAwLCAKLSAgICA2NDgwMywgMCwgODc0MiwgMCwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMCwgNzU4OCwgNjM3NDgsIDE2OTMsIAotICAgIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIDkxNzg1MywgMTA5MCwgMTIwNjc5LCAxMjgzNTYsIDExNjY1LCA3NDEzMywgCi0gICAgNDU1OCwgNjU2ODUsIDk1MjMsIDAsIDAsIDc4NjgxLCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgCi0gICAgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCAwLCAzMTcwLCAxMjQ4NSwgMCwgMTA4NzIsIDc4MjcxLCAxMzAwNiwgNjQ0MzMsIAotICAgIDAsIDAsIDk0MSwgMCwgMCwgMCwgNjU1NDEsIDExMDYzLCAwLCA4MjI4LCAwLCA0MjA2NSwgMCwgMCwgMCwgMCwgOTI0NTUsIAotICAgIDczODYsIDAsIDY0NDQ0LCAwLCAxMTk4NjMsIDQzNjAzLCAwLCA2NTM5NywgMjg4LCAwLCAwLCAwLCAxMDAyNSwgOTE3OTE2LCAKLSAgICAyOTE4LCAwLCA2NTMwMCwgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDAsIDEyNzgyOSwgNjUzOTMsIAotICAgIDAsIDc0MTM4LCAwLCAwLCAwLCA3NDEzOSwgOTI3MTIsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMCwgNjUzOTYsIDAsIDY1ODEzLCAKLSAgICAxMzI1NiwgMTI4MiwgMTIwNzcxLCAwLCAwLCAxMDg4OCwgMCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc0MjU5LCAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgCi0gICAgMCwgNDMwOTQsIDAsIDQzNjUwLCAwLCAwLCA5MDM1LCAwLCAwLCAxMjgwMDUsIDAsIDkyMjA3LCA2ODEyNSwgMCwgMTY0LCAwLCAKLSAgICAwLCAwLCA2OTU4LCAwLCA0MzExNiwgMCwgMCwgMTMyNDUsIDAsIDAsIDEyNzM3NiwgMCwgNzM4OTMsIDEyNzc1NiwgMTI2NjYsIAotICAgIDEzMTc1LCAxMzIwNywgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMCwgNzQ0OSwgCi0gICAgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAwLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgMCwgMCwgNjUxOTUsIDEwMTY0LCAKLSAgICA5MjI1MiwgNzQ0MjgsIDAsIDc4MTQ2LCA5MjYxMSwgMCwgMCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMTI4MTYxLCAKLSAgICAxMTA1NywgMCwgMTMyNzYsIDAsIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDAsIDAsIDAsIDEyMjI5LCA0MTUyMywgMCwgCi0gICAgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMCwgMCwgMTA0NzYsIDM4NTgsIDAsIDM5MzIsIDY0OTU4LCAwLCAwLCA3Mzk4OSwgCi0gICAgNjgxOTIsIDAsIDAsIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDAsIAotICAgIDY1NDc5LCAwLCA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgMCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCi0gICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMCwgNzQ2LCAxMjA3ODQsIDAsIAotICAgIDAsIDEyMDE4LCA2NTI5NCwgMCwgMCwgMCwgMCwgNDQyMiwgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMCwgNzQ0MzAsIAotICAgIDAsIDExNzAwLCA0Mzc0LCAwLCAxMjgxNzksIDEzNjQsIDAsIDgwMzgsIDAsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCAwLCAKLSAgICA2NzM1LCA3Mzk3OSwgMTMxNzQsIDczOTY4LCAxMzIyNSwgMCwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCAwLCAKLSAgICA0Mjg1NSwgMTE4ODU2LCA0Mjg2NiwgMCwgMCwgMCwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAKLSAgICAxMTkzNTQsIDAsIDAsIDAsIDAsIDkyNDAyLCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgMTAzNDAsIAotICAgIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCAwLCAxMjY5OTQsIDQxMzczLCAKLSAgICA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgCi0gICAgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgMCwgMCwgNDI2ODgsIDEyNDQxLCAKLSAgICAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAwLCAKLSAgICAxMTkxMDEsIDAsIDY0ODg0LCAxMTk4NzIsIDExOTM0NSwgODU5NywgMCwgMCwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIDAsIAotICAgIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIDExOTg3OSwgNjY1OTAsIDEyODEyMywgCi0gICAgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNzM4NDksIDAsIDQzNjM4LCA3ODUzNywgCi0gICAgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAKLSAgICAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgNDMyMzgsIDAsIDEzMTkwLCAxMzE4NywgCi0gICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDAsIDY3NzAsIDQzMzMxLCAKLSAgICAwLCA2NTYyMCwgMCwgNDM1NDQsIDAsIDAsIDQxNDQ0LCA2NTYyMSwgMTIwMzI1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIAotICAgIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAxMTkzMzMsIDAsIDExOTMzNywgNTIzNiwgCi0gICAgNDA5NzksIDAsIDc0MjAxLCA4Mjg2LCAwLCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgMTI3MjQ5LCAxMzIzNSwgCi0gICAgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCAxMjcyNTAsIDAsIAotICAgIDEyMDUwOSwgMCwgNjYyMjQsIDczNCwgMjk3OSwgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgCi0gICAgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDEyMDMxMCwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCAKLSAgICA1Mzc5LCAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgMTIwMzE1LCAxMjAzMTQsIDEyODAyNSwgMCwgNDI4NDEsIDEzMjY3LCAwLCAKLSAgICAwLCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDAsIDEwNjYzLCAwLCAwLCAwLCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCAKLSAgICA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDAsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgMCwgCi0gICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCAwLCAwLCA2ODA5NywgNjQ1NzUsIDEyODUyNCwgMTE5NjUsIDAsIDY4MzU4LCAwLCAKLSAgICA2OTc4OSwgMCwgOTIyNjAsIDY4MTAyLCA5Njk4LCA3ODE0LCA3NDQ3NiwgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAKLSAgICAxMTg4NTgsIDk3NTYsIDY5ODUsIDExOTI1OCwgNzg0OTAsIDc0MjE5LCAwLCAwLCAxMTg5OTcsIDgwMTIsIDU2NzQsIAotICAgIDEyMzUzLCAwLCAxMjM2MSwgNTY3NywgNTU4OCwgMCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDEyMDUzNCwgNTY3NiwgCi0gICAgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDAsIDc4MDU5LCAwLCA0MjUxMSwgMTcyNywgMTIwNzI1LCAKLSAgICA0MjQzNiwgMCwgMCwgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDEwMzE2LCA3NDA5MCwgNTgyNiwgCi0gICAgNTUyMzIsIDU4MTMsIDAsIDEyMDcxMiwgNTg0MSwgNTgzNywgNTUyMzQsIDAsIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCAwLCAKLSAgICAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCA1ODY1LCAxMjAwOTEsIDc5NTYsIDU5OCwgMCwgNjQ2NDksIAotICAgIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDAsIDAsIDAsIDEyODg1NSwgMCwgODQ3LCAxMjgyNDIsIAotICAgIDk1MjksIDAsIDY2NjU3LCA2OTgwLCAwLCAxMjAwMzUsIDc4NDg0LCAwLCAwLCAxMjAwMzMsIDc4NDg2LCAwLCAwLCAKLSAgICAxMjAwMzksIDQyNjgzLCAwLCAwLCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgCi0gICAgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIAotICAgIDY5NzI3LCA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgMCwgNDEwMTMsIAotICAgIDEwNTY4LCAwLCAwLCAyODY5LCAwLCA0MTAxNSwgMTk0NjkyLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIDAsIAorICAgIDYzODU3LCAxMzg4LCA3NDE2OSwgMCwgMTA3NywgOTgzNTc3LCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDAsIDAsIAorICAgIDQyNzczLCAwLCAwLCAwLCAxMTkyMjAsIDAsIDM2NjMsIDAsIDExMTIsIDExOTEyMiwgODY4NiwgMCwgNTMzNCwgNjUwODEsIAorICAgIDQzMjQ5LCA3NDc3OCwgMTI3OTY4LCAxMTA3NywgMCwgNjUwOSwgMCwgNTMyNywgMCwgMTk5MDcsIDYzODY5LCAzNDc4LCAKKyAgICA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCA3ODYyNiwgMTkxNSwgCisgICAgNDg0NiwgMCwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIDEyMDcwLCAKKyAgICA4NzYwLCAxMTE3LCAxMTg5ODcsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAwLCA3ODI0MCwgCisgICAgMTIyMjUsIDYzODM4LCA2MzgzNywgOTgzODQ0LCA5ODM3OTUsIDYzODMzLCA2MDQyLCA2NjM2MCwgODA4MywgMCwgMCwgCisgICAgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4Mzg5NSwgNTIyNywgOTA0NywgNjM4MjIsIDEyNzE2MiwgNjA5MSwgMCwgCisgICAgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIAorICAgIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIDIwNiwgNzc5MjUsIDQ5MzYsIDY1MTQ3LCA4MTY4LCAKKyAgICA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAxMjgxNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCAKKyAgICA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIAorICAgIDAsIDQ2MTgsIDQyMjA5LCA0MzQzMSwgMTMxNjksIDUyOTAsIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgCisgICAgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAwLCA2Mzk3MCwgMTI4MzU4LCAxMDkyLCA0NzU0LCA3MjczLCAKKyAgICA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgMCwgNzQwOCwgMTE4MDksIDkxNzYxOCwgMCwgMCwgMjk2NSwgNzI1OCwgCisgICAgODgwOCwgMCwgMTA4OSwgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMCwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIAorICAgIDc0NDk0LCAxMjQ2MywgMjk5NCwgMCwgMTE4ODI3LCAwLCA5NjY0LCA3NzkzOSwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgCisgICAgNzQzNDMsIDAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDc3OTQxLCA3ODUwNywgCisgICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDAsIDc0MTUxLCA5MjY1MiwgNjUwMiwgMCwgMTI3MTE4LCAxMjg2OTUsIDYzOTUxLCAKKyAgICAxMjQ2NSwgMCwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCAKKyAgICA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgOTQwNzYsIAorICAgIDAsIDEyNzc3MywgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIAorICAgIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgCisgICAgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMCwgNDM5ODAsIDU0ODUsIDAsIDQyNjk3LCA5MDYxLCA1NTM0LCAKKyAgICAxMDY3MiwgNDUwMiwgMCwgMjUzLCAwLCA2ODIwOCwgMCwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA5MjU0MiwgNjg2NjgsIDAsIAorICAgIDExODkwNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgNDIzNTQsIDEyODA5OSwgOTgzNjg5LCA3MDA0NCwgMTk1MDY1LCAwLCAKKyAgICA4NDEzLCA5ODM4MDcsIDAsIDU2OTMsIDcyNzIsIDAsIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAxOTUwNjMsIDAsIDAsIAorICAgIDAsIDEyNjYzOSwgMCwgMCwgOTQwNzgsIDEyODEzMywgMTI3NzY3LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCAKKyAgICA5MjE4NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCAKKyAgICA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIDAsIDAsIDQxNzI5LCA0NDIzLCAxMzA3LCAKKyAgICAwLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMCwgNjIxOCwgMCwgMTQzMCwgMCwgMCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgCisgICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MjQsIDQ1MTgsIAorICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMTIwMTU4LCAyNzEwLCAwLCA2OTI0MywgNDE3MjQsIDAsIDQzMDczLCAKKyAgICA0MTY5MCwgMTI0NzksIDk4MzYyNiwgMCwgMCwgOTgzODA5LCA3MDA0NiwgMTYyOCwgMTI3MTQ5LCA5ODM0NzksIDk4MzcyMiwgCisgICAgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDk0MDU2LCAwLCAwLCA1MzM5LCA3NDMyMywgMCwgMTMwMDQsIAorICAgIDAsIDQ0NTcsIDAsIDAsIDAsIDAsIDU2ODQsIDg2NzgsIDEwOTE0LCAwLCA1Njg5LCA2NTgwNywgMCwgNjg0NjQsIDEyNjMzLCAKKyAgICAxMjg3MCwgNjk3MDUsIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMCwgNzQyNTEsIDAsIDEyMDY0NywgCisgICAgMCwgNTAsIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDAsIDAsIDAsIDY2NDY4LCAwLCAxMzI1OSwgNDQ0OCwgMCwgCisgICAgOTgzODM2LCAwLCA3MDA0MywgNjc4NTMsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMCwgOTE3NjA3LCAxMjc1NDQsIAorICAgIDEyNzA3OSwgMTk1MDUwLCAxMjc4NTIsIDAsIDAsIDAsIDEyNTAxLCA2NDYwNCwgMCwgMTE1MjcsIDExODg3MCwgODgxMiwgMCwgCisgICAgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMCwgCisgICAgMCwgMCwgNDYzNiwgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDAsIDEyMDQ5NSwgMCwgMTI4Mjg0LCAKKyAgICAxMjI3NywgMTk0NjI3LCAxMTk5NSwgOTI1NTMsIDAsIDEyMTU4LCAwLCA4NzQxLCAxMDE5NywgMCwgOTI0MjYsIDAsIDY1MzEsIAorICAgIDAsIDEyNzg0NiwgNDczLCA0MzQxNSwgMCwgOTgzNjQxLCAxODczLCAxMDg3LCAwLCAwLCAwLCA3ODUyNywgNjY0MzksIAorICAgIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDc0MjgyLCAwLCA5ODM1NzEsIDAsIDk0ODksIDAsIDAsIAorICAgIDQzODQsIDc0MjIwLCA2Mzg0NSwgMjA1OCwgMTI4ODYzLCAxMzI5NSwgNDMxOTEsIDEyODAzMCwgMCwgMTE1NCwgMzg1NywgCisgICAgMTIwNSwgMCwgMCwgMTMxMDAsIDEyOTU4LCAxMjA3MDYsIDc0MTY4LCAwLCAwLCA0NDIxLCAxMDU5MiwgMCwgNDk1LCAKKyAgICAxMTkwMDcsIDQxNzEyLCA3OTgzLCAwLCA5Mzk5NywgMCwgNjM0NywgMTIwMTY1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgCisgICAgNDM3LCA0MTcwOSwgNzM3NzIsIDAsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIDY0MzA2LCAwLCAwLCA0OTk5LCAKKyAgICAxOTQ2NDIsIDAsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAwLCAyNzM5LCAwLCA4MDQ0LCA3NDgzNCwgMTk0NjQzLCA0MTc4OSwgCisgICAgMTI4MTQyLCAxMDgwOSwgMCwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIDEzMDU4LCAKKyAgICAxMjA0NDksIDEyODc1LCAwLCA5MjE4NiwgMTMyMjksIDAsIDEwNTc1LCA0MzM5OSwgMCwgMCwgNDE3OTEsIDExMDQsIDAsIDAsIAorICAgIDEwNjU1LCAwLCAwLCAwLCAwLCAxMDgyLCAxOTUwNDksIDg0MjgsIDY1NjksIDAsIDAsIDAsIDY5ODQ5LCA2NzgzLCAwLCAKKyAgICAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCA5ODM3OTgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIAorICAgIDY0NjIzLCAxMjczLCA0MzQwNywgMCwgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCA5ODM2MDMsIAorICAgIDQxNTQ1LCAwLCA5MjQ0OSwgMCwgMCwgMCwgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCA4NTAzLCA1MTIyLCA0MTUyNywgCisgICAgMCwgNjYzMjAsIDk4MzgwMiwgMCwgMCwgMCwgNDE1MzcsIDY5NjgzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIDEwMDAzLCAKKyAgICA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDc4NDA2LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAxOTQ2NjQsIDAsIAorICAgIDAsIDQzMjQsIDEyNiwgNDIyNDYsIDExOTE1MiwgMCwgNzQzNzgsIDY1OTI2LCA3NzQ0LCAxOTQ2MzYsIDc0Mjc3LCA3NDMwMiwgCisgICAgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIDAsIDQ3NjIsIDExMDMsIDAsIDAsIAorICAgIDQ3NjUsIDk4MzQ4NCwgMTMwNzgsIDAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDAsIDQyMjM2LCAKKyAgICAxMjg4NjcsIDE5NDY2NywgMTE1NDYsIDc0Nzk0LCAzMzcsIDAsIDQyNTkxLCA4NjI3LCAxMjI3OSwgMTExMSwgMCwgOTIxNjEsIAorICAgIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTI3MDgxLCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAxMzAxMCwgMCwgODMwNCwgCisgICAgOTE3NTYxLCAwLCAxMTk1NzUsIDIyOTMsIDAsIDY2NjU0LCAwLCA5MjY3NiwgMCwgMTMwMDgsIDAsIDQzODUsIDAsIDEzMDExLCAKKyAgICAwLCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCAwLCAwLCA0MTc5MywgNjU3NjMsIDc0MjIxLCAxMjAxNDEsIAorICAgIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAwLCA5NDA1MywgNDM4MTYsIDAsIDAsIAorICAgIDEwNzksIDM4NjcsIDU3MDgsIDAsIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMCwgMTAyMzcsIAorICAgIDEwOTkxLCAxMjg4MTYsIDQzNDU5LCA5MTczLCA5MTc1ODEsIDkxNzU4MCwgMTMxNzAsIDEyNTQwLCA5MTc1NzcsIDQyNjA1LCAKKyAgICAxMjA3NjUsIDEyNjYxNywgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDAsIDc0ODY3LCAxOTQ2NTQsIDEyNzA3OCwgMzMzOSwgCisgICAgMTE0NDgsIDExMDYsIDkxNzU5MSwgOTE3NTkwLCA5MTc1OTMsIDMzNDAsIDkxNzU4NywgOTE3NTg2LCA5MTc1ODksIAorICAgIDkxNzU4OCwgMTIwNTQxLCAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDAsIAorICAgIDExODkyNiwgODk3MiwgMCwgNzg0OSwgMTIwMDkyLCA5MjUzMywgMTMyNDAsIDE5NTA2OCwgNTE5MiwgNDMzOCwgNjc5ODIsIAorICAgIDEwOTQ4LCA5MTc2MDEsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDkzOTkzLCAwLCAKKyAgICA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIDYzNzgyLCA2Mzc4MSwgNjM3ODAsIAorICAgIDYzNzc5LCAxNTgzLCAwLCAxMzI2MCwgNDU1MCwgMCwgNjQyMDUsIDAsIDAsIDQxNTIyLCA5ODM5MDYsIDkyMTY4LCAKKyAgICA5ODM3NjMsIDkxNzg1OCwgMTEzNTQsIDk0MDcxLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgCisgICAgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgNDQ3OSwgMTE3OCwgNjU1ODYsIDEyMDY2MywgNjY2ODEsIDExOTE5MywgCisgICAgNDYwMSwgMCwgMCwgOTgzNzU2LCAwLCAwLCAxOTQ2NTgsIDAsIDY4MDksIDYzNzg2LCA2MDMxLCAwLCA2Mzc5MSwgNjM3OTAsIAorICAgIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIAorICAgIDAsIDAsIDEwNzQ3LCAxMjUsIDAsIDY0ODkwLCAwLCA5ODMxMzEsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgCisgICAgMTMyNTgsIDk1MzYsIDc0MDc3LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAKKyAgICAxMzQ5LCA2Mzc1MCwgNjM3NDksIDAsIDAsIDAsIDYzNzUzLCA2MzgwMiwgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCAKKyAgICA2MzgwNSwgNjM4MDQsIDQzNjMyLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCA2MjYwLCAwLCAwLCA5NDA3NCwgNjM3OTMsIAorICAgIDExOTg4LCAzODk4LCAxMjgyNDEsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIDEwNDMxLCAKKyAgICA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzIxLCA0MjIwMywgNzk1MCwgMTA4MDQsIDYzNzcxLCAKKyAgICA0Mjc4NywgNDM4NiwgMTIyMjQsIDY5NzMsIDI3OTMsIDEyNDc1LCAwLCAwLCA2Mzc2OSwgOTUzMCwgOTgzMTE5LCAxMjIzMiwgCisgICAgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCA0NTk1LCA2Mzc2MCwgNzkyLCAwLCA2NDgwMywgMCwgODc0MiwgMCwgMTEwNTMsIAorICAgIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMCwgNzU4OCwgNjM3NDgsIDE2OTMsIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIAorICAgIDkxNzg1MywgMTA5MCwgMTIwNjc5LCAxMjgzNTYsIDExNjY1LCA3NDEzMywgNDU1OCwgNjU2ODUsIDk1MjMsIDAsIDAsIAorICAgIDc4NjgxLCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCAwLCAKKyAgICAzMTcwLCAxMjQ4NSwgMCwgMTA4NzIsIDc4MjcxLCAxMzAwNiwgNjQ0MzMsIDAsIDAsIDk0MSwgMCwgMCwgMCwgNjU1NDEsIAorICAgIDExMDYzLCAwLCA4MjI4LCAwLCA0MjA2NSwgMCwgMCwgOTQwMzksIDAsIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgMCwgCisgICAgMTE5ODYzLCA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDAsIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgMCwgNjUzMDAsIAorICAgIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCAwLCAxMjc4MjksIDY1MzkzLCAwLCA3NDEzOCwgMCwgMCwgCisgICAgMCwgNzQxMzksIDkyNzEyLCA2NTM5NCwgMTE1NDgsIDUyNzAsIDAsIDY1Mzk2LCAwLCA2NTgxMywgMTMyNTYsIDEyODIsIAorICAgIDEyMDc3MSwgMCwgMCwgMTA4ODgsIDk4MzYwNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDk4Mzk2NSwgMCwgMCwgNzQyNTksIAorICAgIDMzMDQsIDQyNzUzLCAwLCAwLCAwLCAxNjI3LCAwLCAwLCAwLCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKKyAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgMCwgOTAzNSwgMCwgMCwgMTI4MDA1LCAwLCA5MjIwNywgNjgxMjUsIDAsIAorICAgIDE2NCwgMCwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgMCwgNzAwMTksIDEzMjQ1LCAwLCAwLCAxMjczNzYsIDAsIAorICAgIDcwMDMxLCAxMjc3NTYsIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgCisgICAgNjU1MDksIDAsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMCwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDAsIDAsIAorICAgIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCAwLCA3ODE0NiwgOTI2MTEsIDAsIDAsIDAsIDEwMDQ1LCAxMjg4MiwgCisgICAgMTMyNzUsIDEyODE2MSwgMTEwNTcsIDAsIDEzMjc2LCAwLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAwLCAwLCAwLCAKKyAgICAxMjIyOSwgNDE1MjMsIDAsIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDAsIDAsIDEwNDc2LCAzODU4LCAwLCAzOTMyLCAKKyAgICA2NDk1OCwgMCwgMCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCAwLCA0MTc4NCwgMCwgNjQxNjMsIDAsIDAsIDAsIAorICAgIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMTI2NTk1LCA2NTQ3OSwgMCwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIAorICAgIDAsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIAorICAgIDAsIDQzODgsIDAsIDc0NiwgMTIwNzg0LCAwLCAwLCAxMjAxOCwgNjUyOTQsIDAsIDAsIDAsIDAsIDQ0MjIsIDQ3MDgsIAorICAgIDM3OTksIDc0MjkyLCAxMTkzNTcsIDAsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMCwgMTI4MTc5LCAxMzY0LCAwLCA4MDM4LCAKKyAgICAwLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgMCwgNjczNSwgNzM5NzksIDEzMTc0LCA3Mzk2OCwgMTMyMjUsIDAsIDY5ODA4LCAKKyAgICA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgMCwgNDI4NTUsIDExODg1NiwgNDI4NjYsIDAsIDAsIDAsIDY2NDM4LCA0MTc4NSwgCisgICAgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAwLCA5ODM1NjgsIDAsIDAsIDkyNDAyLCAxMjgwNjIsIDEyOTY1LCAKKyAgICAzODQsIDY0NTEyLCAxMDQwNCwgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIAorICAgIDQxNzg3LCA5ODMyMzcsIDEyNjk5NCwgNDEzNzMsIDc4MDM5LCAxMjMwMywgMCwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIAorICAgIDQxMzcxLCAxMTY1NiwgMCwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgMTI4MDE4LCAxMDk2LCAKKyAgICAwLCAwLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDAsIDgwMzIsIDEzMjQzLCAKKyAgICAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDAsIDAsIDk4NjQsIAorICAgIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgMCwgMTA0NTksIDExOTg3OCwgMCwgCisgICAgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCA0MTUzMywgNjYzMzcsIDAsIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCAKKyAgICA3Mzg0OSwgMCwgNDM2MzgsIDc4NTM3LCAxMjgyODcsIDYyNjEsIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgCisgICAgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIDEyODgyOCwgMCwgMjkyNSwgNzM4MDksIDEzMDU2LCAxMjc1NTksIDEzMjEyLCAKKyAgICA0MzIzOCwgMCwgMTMxOTAsIDEzMTg3LCA5MjU0MSwgMTMxOTgsIDExODc5MywgMCwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgCisgICAgMTY5NCwgODIxNiwgNzEzNjksIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzE5LCA0MzU0NCwgMTI2NDY2LCAwLCAKKyAgICA0MTQ0NCwgNjU2MjEsIDY5OTU1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgCisgICAgMTIzMTQsIDY1NjE2LCA1MjM4LCAxMTkzMzMsIDAsIDExOTMzNywgNTIzNiwgNDA5NzksIDAsIDc0MjAxLCA4Mjg2LCAKKyAgICAxMjg1MzcsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCAxMjcyNDksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgCisgICAgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDEyNzI1MCwgMTI4MjUxLCAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIAorICAgIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAKKyAgICAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgCisgICAgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMTUwNiwgMCwgNDI4NDEsIDEzMjY3LCAwLCAwLCA0MTc3NSwgMCwgNzEzMCwgCisgICAgNDE3NzMsIDAsIDEwNjYzLCAwLCAwLCAwLCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAKKyAgICAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDAsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgMCwgMTI5NjcsIDY2MDQxLCA1NjEyLCAKKyAgICA0NTgzLCAwLCAwLCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIDAsIDY4MzU4LCAwLCA2OTc4OSwgMCwgOTIyNjAsIAorICAgIDY4MTAyLCA5Njk4LCA3ODE0LCA3NDQ3NiwgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIAorICAgIDExOTI1OCwgNzg0OTAsIDc0MjE5LCAwLCAwLCAxMTg5OTcsIDgwMTIsIDU2NzQsIDEyMzUzLCAwLCAxMjM2MSwgNTY3NywgCisgICAgNTU4OCwgMCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDEyMDUzNCwgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIAorICAgIDU2NzIsIDEyOTQsIDAsIDc4MDU5LCAwLCA0MjUxMSwgMTcyNywgMTIwNzI1LCA0MjQzNiwgMCwgMCwgMCwgNzQyMjIsIAorICAgIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDEwMzE2LCA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIDAsIDEyMDcxMiwgCisgICAgNTg0MSwgNTgzNywgNTUyMzQsIDAsIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCAwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIAorICAgIDU3OTcsIDQxMDExLCA1ODY1LCAxMjAwOTEsIDc5NTYsIDU5OCwgMCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCAKKyAgICA1NjcxLCAxMjAwNDEsIDAsIDAsIDAsIDEyODg1NSwgMCwgODQ3LCAxMjgyNDIsIDk1MjksIDAsIDY2NjU3LCA2OTgwLCAKKyAgICA3ODQ4MywgMTIwMDM1LCA3ODQ4NCwgOTgzNDgzLCAwLCAxMjAwMzMsIDc4NDg2LCAwLCAwLCAxMjAwMzksIDQyNjgzLCAwLCAKKyAgICA5ODMwNTUsIDcxMTQsIDAsIDAsIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCAKKyAgICA2NzkyLCA0MzIwMSwgMCwgMTk5NjMsIDU2OTgsIDAsIDAsIDAsIDAsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIAorICAgIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgMTIwMDIyLCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAorICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDAsIDQxMDE1LCAxOTQ2OTIsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCA0MTgwMiwgMCwgCiAgICAgNDI2MDgsIDc4NDY5LCA5ODg0LCA0NzU5LCAwLCAwLCAxMDI2NiwgNDEzNTksIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIAogICAgIDE2MDksIDkwMiwgMCwgNjM5MzYsIDEyODg3NSwgMTE2NjEsIDgxMjIsIDU4MTgsIDAsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAKLSAgICAyNTU0LCA1MTU4LCA1NzE0LCAxMjcwMTUsIDAsIDAsIDgwNywgNDMwNzksIDAsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAKLSAgICAwLCA0MjE1NSwgMCwgNDEzNTYsIDc0MTEwLCAxMTg4MDEsIDAsIDAsIDg2NzYsIDAsIDAsIDExMDY2LCA0NTEsIDYzOTQxLCAKLSAgICA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAwLCAwLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAxMjg4NTMsIAotICAgIDEyMDAxNiwgNzQyODMsIDExMDA1LCAwLCA2NjY1NiwgNjYwNDQsIDAsIDE5NDY5OCwgMCwgMCwgNDMzOTMsIDEwMDk0LCAwLCAKLSAgICAxMTUyOSwgMTA4NTcsIDEyMDY0MywgNjY0MzYsIDY1NDYsIDkzLCA4MTAyLCAwLCA2ODQwNSwgMCwgMCwgODE3MSwgMCwgCi0gICAgMTE5MDk3LCAxMjcwNjQsIDkxNzU0MywgMzgzLCA3MTU0LCA0MTY1NiwgOTI2MzQsIDAsIDAsIDUxODcsIDAsIDEyNzI3NywgCi0gICAgMTEyODYsIDY4NjIwLCA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDAsIDQxMDA1LCAwLCAwLCAwLCA4MjkyLCAxOTUwNzQsIAotICAgIDQ5ODAsIDg4NjAsIDczOTQ3LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDAsIDAsIDEwNjMxLCA2NjAzMSwgCi0gICAgNzk3MiwgMCwgNzg3ODUsIDAsIDc5MDAsIDAsIDExMzA5LCA3ODMxOSwgNDE5OCwgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCAKLSAgICA5MjU1MiwgMCwgMTI5MzEsIDAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgMCwgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgCi0gICAgNzQ3NzEsIDAsIDAsIDEyODM2LCAwLCAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAwLCAwLCA3NDY0LCAwLCAKLSAgICA2NTg2NSwgMCwgMTk0NjUwLCAxMjcxNDQsIDAsIDkzNDIsIDEyMDQ2NCwgMCwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCi0gICAgNDEwMDcsIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIAotICAgIDEyNzE1MywgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMCwgNzQxMDUsIDM2MzMsIDAsIDY1MTYyLCA0MTIzNCwgCi0gICAgMTIwODksIDc4MjgxLCA5NzcxLCAwLCAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgMCwgODEyNiwgCi0gICAgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAKLSAgICAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTkxMDMsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgMCwgMCwgCi0gICAgODkzMCwgNjY2NzgsIDc0MjQ5LCAxMTkzLCAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAwLCAwLCA3NzQzLCAwLCAKLSAgICAwLCA3NzkwNCwgOTI2NDAsIDc3OTA1LCA5MDM0LCA2MDM5LCAwLCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgCi0gICAgNjY0NjksIDAsIDAsIDAsIDQyODE1LCAwLCA0MTk2NiwgMCwgMCwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCAKLSAgICAwLCAwLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgMCwgNTUyMCwgMTE2NjIsIDAsIDY1MzMwLCA0MjgxMiwgMCwgMCwgCi0gICAgMTIzMjYsIDAsIDAsIDQyODA4LCAxMjgzMzcsIDkzNDgsIDY0OTAxLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTc1ODQsIDQzNzAyLCAKLSAgICAwLCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgMTIwMDc5LCA4NjQ0LCAwLCAwLCAwLCA3NDI5NiwgNDE5MDksIDAsIAotICAgIDEyMDMzMiwgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCAwLCA0MTkwNywgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIAotICAgIDU3NDgsIDAsIDEwNzczLCAwLCAwLCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDEyNzE4NSwgCi0gICAgNjM5MzEsIDAsIDY1OTAyLCAyODgyLCAwLCAwLCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMCwgMCwgMCwgNzM4NjAsIAotICAgIDAsIDAsIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIDE5NDk0MCwgMCwgMCwgNDM2NzksIDkxNzU4NSwgNjUxMTcsIDkyMjcwLCAKLSAgICAwLCAxMDQyNywgMCwgMzg0NCwgMTIwNjc1LCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgMCwgMTI4Nzg5LCAwLCAwLCA3ODMsIAotICAgIDE5NDkzNSwgMCwgMCwgMCwgMTk0NzIwLCA2NTA1NiwgMzYyMCwgMCwgNjgzNzgsIDQ1NTYsIDAsIDAsIDE5NDkzMywgCi0gICAgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDAsIDAsIDEyNzUyNywgOTE3NywgODkwMiwgMCwgOTgzOSwgCi0gICAgMCwgMTI4OTEsIDAsIDAsIDYzOTk5LCAyMDE2LCA0MTkxNywgOTc4OCwgNjM5MjgsIDAsIDE4NjIsIDY1ODAwLCA5MTU1LCAKLSAgICA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgNjYwMTcsIDQ1MDgsIDY0ODgzLCAKLSAgICA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIDc0Mjc2LCAxMjAwODAsIDY3ODQsIDc4Nzg4LCA2ODE4MSwgMCwgMCwgCi0gICAgMCwgMTI3NTM0LCAxMjE0NywgOTAyNCwgNjYzNzgsIDY2NDcyLCAwLCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgCi0gICAgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIDAsIDExMDUxLCAwLCAwLCAxMTM1NSwgNjU4ODUsIDAsIDEyODMxMCwgNDEyMTQsIAotICAgIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgMCwgNDA0MCwgMTIwNTcwLCA2MTY3LCAKLSAgICAwLCA2MzkyMiwgNjU5NCwgMCwgMCwgMCwgMzYyNCwgNDMwMzYsIDAsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIAotICAgIDQxOTU1LCAwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIDAsIDY4MDMsIDAsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIAotICAgIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIAotICAgIDQyNzQyLCA5NTE3LCAxMTUxOCwgMCwgNzg3OTAsIDAsIDE5NDc3NywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIAotICAgIDYzOTYwLCA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTEzOTcsIDI4ODAsIDAsIDAsIDI4NzIsIDAsIDAsIDM0OTgsIDQzNzgsIDkxNzUzOSwgNDI3MCwgMCwgCi0gICAgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMCwgMCwgMCwgMCwgMCwgODE2MSwgMzkzLCAxMjAxMywgMCwgCi0gICAgMCwgMCwgNDE1LCA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCAwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgMCwgNjM5NjEsIAotICAgIDQ0NzIsIDAsIDAsIDc4MTU5LCA2OTY5OSwgOTE3OTM2LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgCi0gICAgMTAzMzEsIDYzODMwLCAxMTk2MjUsIDE5NDk0NSwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAxNjA0LCA5NTY1LCAKLSAgICAxMDUzOSwgNjk3MDEsIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAKLSAgICAwLCAwLCA2Mzk4MCwgMTE4MDEsIDM2MjIsIDAsIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgCi0gICAgMTk2NiwgNDM2MjgsIDAsIDAsIDAsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgCi0gICAgNDAyLCAwLCAxMzE0NywgMCwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgMCwgCi0gICAgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIDkyMzUxLCAwLCA3NDQyNSwgMTEyOTksIDE1NjEsIDAsIAotICAgIDkyMzU5LCA2NDk0MiwgMCwgMTk0NzMzLCAwLCAxOTQ3MzIsIDAsIDc0MzAxLCAwLCAxMTI4MCwgMCwgNjk3ODQsIDc0MDYwLCAKLSAgICAwLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTk0NjY5LCA3NDAyLCAKLSAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY4NDIxLCAwLCAwLCA1NDA1LCAxMjc4NzUsIAotICAgIDY0ODY2LCAwLCAxMTk1ODMsIDEyODM0NSwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCA2NDY5MCwgMzI1NCwgMCwgMCwgCi0gICAgMCwgNDIzOTAsIDQzNjc4LCAxOTQ3MjUsIDAsIDY1MDc3LCAwLCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAKLSAgICAxMTUyMCwgNTYxMSwgMCwgMzM3NywgMCwgMCwgMCwgMCwgNzgyMjgsIDAsIDAsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgCi0gICAgNzQ3NjcsIDAsIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCAwLCAzNzg4LCAwLCAxMTA0MSwgOTI1NDksIDY2MzA0LCAwLCAwLCAKLSAgICA4OTE3LCA0MjQwMywgMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIAotICAgIDkyMjE3LCAxMzE2MywgMCwgMTIwODMxLCA3NDU5NywgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgCi0gICAgNzQyNDQsIDAsIDExNDQzLCAwLCA2NjMxOSwgNzQ1OTgsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIAotICAgIDc0NTEwLCAwLCA3NDQ4NSwgNDI0NDIsIDY1NDcwLCAwLCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDEyODAwNiwgCi0gICAgMCwgOTgyOCwgMCwgMCwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgCi0gICAgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIDAsIDExODk0NiwgMCwgMCwgNzQwNDEsIDAsIDEyMDYzMywgNDM1MzksIDU0MTEsIAotICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCAwLCA0MjM5MywgMTMwODYsIDEzMTAsIDE5NDY4NywgOTMzNywgMTIwNTIsIDEwNjQzLCAKLSAgICA1NTI3MSwgMCwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCAwLCAwLCAxOTQ3NTYsIDc0MzEwLCAKKyAgICAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCAwLCAwLCA4MDcsIDQzMDc5LCAwLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMCwgCisgICAgNDIxNTUsIDAsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCAxMjY2MTQsIDAsIDg2NzYsIDk4MzI4MywgMCwgNTU4MiwgNDUxLCAKKyAgICA2Mzk0MSwgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMCwgMCwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgCisgICAgMTI4ODUzLCAxMjAwMTYsIDc0MjgzLCAxMTAwNSwgMCwgNjY2NTYsIDY2MDQ0LCAwLCAxOTQ2OTgsIDAsIDAsIDQzMzkzLCAKKyAgICAxMDA5NCwgMCwgMTE1MjksIDEwODU3LCAxMjA2NDMsIDY2NDM2LCA2NTQ2LCA5MywgODEwMiwgMCwgNjg0MDUsIDAsIDAsIAorICAgIDgxNzEsIDAsIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIDM4MywgNzE1NCwgNDE2NTYsIDkyNjM0LCA5NDA0MCwgMCwgNTE4NywgCisgICAgNzEyOTYsIDEyNzI3NywgMTEyODYsIDY4NjIwLCA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDAsIDQxMDA1LCAwLCAwLCAKKyAgICA5ODM4MTgsIDgyOTIsIDE5NTA3NCwgNDk4MCwgODg2MCwgNzM5NDcsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIAorICAgIDE5NDcwNSwgMCwgMCwgMTA2MzEsIDY2MDMxLCA3OTcyLCAwLCA3ODc4NSwgMCwgNzkwMCwgMCwgMTEzMDksIDM4MDYsIAorICAgIDQxOTgsIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgOTI1NTIsIDAsIDEyOTMxLCAwLCA0MjY4NCwgNzQyODUsIDIwODgsIAorICAgIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMCwgMCwgMTI4MzYsIDAsIDAsIDc0MzQyLCA4NTkzLCAKKyAgICAwLCAwLCA2ODQ0NSwgMTMyNTUsIDAsIDAsIDc0NjQsIDAsIDY1ODY1LCAwLCAxOTQ2NTAsIDEyNzE0NCwgMCwgOTM0MiwgCisgICAgMTIwNDY0LCAwLCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCA0MTAwNywgNzQzNzUsIDAsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIAorICAgIDExOTEzNiwgMCwgMCwgNjk3MjQsIDQwOTkyLCA5MjI2NCwgMTI3MTUzLCA2ODY1MywgNDM1NTgsIDU1MjIsIDAsIDYxLCAwLCAKKyAgICA3NDEwNSwgMzYzMywgOTgzODkxLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgOTgzODk2LCAxMzI1MSwgCisgICAgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgMCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIAorICAgIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAKKyAgICAxMTkxMDMsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgMCwgOTgzNjUwLCA4OTMwLCA2NjY3OCwgNzQyNDksIDExOTMsIAorICAgIDEwMDU2LCAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDAsIDAsIDc3NDMsIDAsIDAsIDc3OTA0LCA5MjY0MCwgNzc5MDUsIAorICAgIDkwMzQsIDYwMzksIDAsIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgMCwgMCwgMCwgNDI4MTUsIDAsIAorICAgIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgMCwgMCwgMTIwMzM5LCA2NTE1OSwgCisgICAgNjQzOTAsIDAsIDAsIDU1MjAsIDExNjYyLCAwLCA2NTMzMCwgNDI4MTIsIDAsIDAsIDEyMzI2LCA5ODM4NDcsIDAsIDQyODA4LCAKKyAgICAxMjgzMzcsIDkzNDgsIDY0OTAxLCA5ODM4NTIsIDAsIDAsIDAsIDAsIDAsIDkxNzU4NCwgNDM3MDIsIDk4MzU3NiwgNTg1NywgCisgICAgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDEyMDA3OSwgODY0NCwgMCwgMCwgMCwgNzQyOTYsIDQxOTA5LCAwLCAxMjAzMzIsIAorICAgIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgMCwgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCA1NzQ4LCAwLCAKKyAgICAxMDc3MywgMCwgMCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCAxMjcxODUsIDYzOTMxLCAwLCAKKyAgICA2NTkwMiwgMjg4MiwgMCwgMCwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDAsIDk4MzY1MSwgMCwgNzM4NjAsIDAsIDAsIAorICAgIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIDE5NDk0MCwgMCwgMCwgNDM2NzksIDkxNzU4NSwgNjUxMTcsIDkyMjcwLCAwLCAKKyAgICAxMDQyNywgMCwgMzg0NCwgMTIwNjc1LCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgMCwgMTI4Nzg5LCAwLCAwLCA3ODMsIAorICAgIDE5NDkzNSwgMCwgMCwgOTgzMDY0LCAxOTQ3MjAsIDY1MDU2LCAzNjIwLCA0MTE4MCwgNjgzNzgsIDQ1NTYsIDAsIDAsIAorICAgIDE5NDkzMywgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDAsIDAsIDEyNzUyNywgOTE3NywgODkwMiwgCisgICAgOTM5NTgsIDk4MzksIDAsIDEyODkxLCA5ODM3NDYsIDk4MzYyNywgNjM5OTksIDIwMTYsIDQxOTE3LCA5Nzg4LCA2MzkyOCwgCisgICAgMCwgMTg2MiwgNjU4MDAsIDkxNTUsIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIDg1NzksIDQxOTE0LCA3OTgxLCAwLCAKKyAgICA2NjAxNywgNDUwOCwgNjQ4ODMsIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAwLCA2NDU5MiwgNzQyNzYsIDEyMDA4MCwgNjc4NCwgCisgICAgNzg3ODgsIDY4MTgxLCAwLCAwLCAwLCAxMjc1MzQsIDEyMTQ3LCA5MDI0LCA2NjM3OCwgNjY0NzIsIDk4MzkyMCwgNjQyODksIAorICAgIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIDE5NDkyOSwgNjQ1MDksIDc4MTUyLCAwLCAxMjY1MDUsIDExMDUxLCA5ODMyODgsIDAsIAorICAgIDExMzU1LCA2NTg4NSwgMCwgMTI4MzEwLCA0MTIxNCwgMCwgMTIyOTksIDAsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIAorICAgIDk5NjMsIDY4NjQ5LCAxMjY2MDksIDQwNDAsIDEyMDU3MCwgNjE2NywgMCwgNjM5MjIsIDY1OTQsIDk4MzczMSwgMCwgMCwgCisgICAgMzYyNCwgNDMwMzYsIDAsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIAorICAgIDY1NjA1LCA2ODAzLCAwLCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKKyAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDAsIDc4NzkwLCAKKyAgICAwLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIAorICAgIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgMCwgMCwgMCwgMCwgMTEzOTcsIDI4ODAsIDAsIDAsIAorICAgIDI4NzIsIDAsIDAsIDM0OTgsIDQzNzgsIDkxNzUzOSwgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgCisgICAgNTIzMCwgMCwgMCwgMCwgMCwgMCwgODE2MSwgMzkzLCAxMjAxMywgMCwgMCwgMTI2NDc5LCA0MTUsIDYzOTY0LCA2Mzk2MywgCisgICAgNDIzNDUsIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgMCwgNjM5NjEsIDQ0NzIsIDAsIDAsIDc4MTU5LCAKKyAgICA2OTY5OSwgOTE3OTM2LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKKyAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgMCwgNDI0NTMsIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgCisgICAgNjU3NjQsIDQxNDE1LCA2NTc2NywgMCwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIDYzOTgwLCAKKyAgICAxMTgwMSwgMzYyMiwgOTgzMTI0LCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIDE5NjYsIAorICAgIDQzNjI4LCAwLCA5ODMyODQsIDAsIDAsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgCisgICAgNDAyLCAwLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCAKKyAgICAwLCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDAsIDE5NDY3MCwgMCwgOTIzNTEsIDAsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMCwgCisgICAgOTIzNTksIDY0OTQyLCA5ODM1NTksIDE5NDczMywgOTgzNjc3LCAxOTQ3MzIsIDAsIDc0MzAxLCAwLCAxMTI4MCwgMCwgCisgICAgNjk3ODQsIDc0MDYwLCAwLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgCisgICAgMTk0NjY5LCA3NDAyLCA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY4NDIxLCA5ODM5MTAsIDAsIAorICAgIDU0MDUsIDEyNzg3NSwgNjQ4NjYsIDAsIDExOTU4MywgMTI4MzQ1LCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAorICAgIDY0NjkwLCAzMjU0LCAwLCAwLCAxMjgyMDcsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCA5ODM5MDAsIDY1MDc3LCAwLCA2Mzg4LCAKKyAgICAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAxMTUyMCwgNTYxMSwgMCwgMzM3NywgMCwgMCwgMCwgMCwgNzgyMjgsIDAsIAorICAgIDk4Mzc1MywgNDI2OTEsIDkxNzg4NiwgMTI3MTk4LCA3NDc2NywgMCwgMTI3MDc1LCAxMzc5LCAyNDYsIDAsIDk4Mzc1MiwgCisgICAgMzc4OCwgOTgzMTA2LCAxMTA0MSwgOTI1NDksIDY2MzA0LCAwLCAwLCA4OTE3LCA0MjQwMywgMzAxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5ODM2ODgsIDEwNjU2LCAwLCA2NTIxNCwgMTE5MjQyLCA0MjU2NywgOTIyMTcsIDEzMTYzLCA5ODMyMDIsIDEyMDgzMSwgCisgICAgNzQ1OTcsIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCAxOTQ2MjEsIDExNDQzLCAwLCAKKyAgICA2NjMxOSwgNzQ1OTgsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAwLCA3NDQ4NSwgCisgICAgNDI0NDIsIDY1NDcwLCA5ODM4OTgsIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgMTI4MDA2LCAwLCA5ODI4LCAwLCAKKyAgICAwLCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAxMTk2MzEsIAorICAgIDExMDAyLCA0MjQ3MCwgMCwgMTE4OTQ2LCAwLCAwLCA3NDA0MSwgMCwgNzAwNDUsIDQzNTM5LCA1NDExLCA0MjE5NiwgMCwgMCwgCisgICAgMCwgOTE1MCwgMCwgNDIzOTMsIDEzMDg2LCAxMzEwLCAxOTQ2ODcsIDkzMzcsIDEyMDUyLCAxMDY0MywgNTUyNzEsIAorICAgIDk4MzE3OSwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCAwLCAwLCAxOTQ3NTYsIDc0MzEwLCAKICAgICA2NTU0LCAwLCAxMTkxNCwgNTQ1MiwgMCwgMCwgMCwgMCwgMCwgMTk0NjgxLCA5MjU2MCwgMjcxMywgMCwgOTY1MCwgNDMzMzAsIAogICAgIDAsIDE5NDY3NSwgMTQwNiwgMCwgMCwgOTI2NTksIDAsIDY4MjIzLCA0MTQzLCAxOTQ2NzcsIDAsIDY1NzQ4LCA0MTQxLCAKICAgICA5NjgyLCA2NTI4NywgMTUwOCwgMTI3MDEzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIAogICAgIDQxNDUsIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgMCwgNDM0MDMsIDAsIAotICAgIDAsIDAsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCAwLCAxMjk1NSwgMTA1OTYsIDI4ODgsIDAsIDAsIDAsIDk2NTcsIAotICAgIDkwMTksIDE5NDc2NiwgMCwgMjg3OCwgNTM5MCwgMCwgMTk0OTYxLCAwLCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDAsIAotICAgIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgNjgzODEsIDAsIDAsIDg5ODYsIDAsIDEwNjMyLCAKLSAgICAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDAsIDAsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDAsIAotICAgIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDAsIDg4NTQsIAotICAgIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIDAsIDE3ODQsIDEzNjEsIDE5NTA0NywgMCwgNzkwNSwgMCwgNjQ4NjgsIAotICAgIDEyODgxMywgMTMxNTgsIDkyMTY2LCA3MjExLCAwLCA5MzcxLCA3Mzk3MywgMCwgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIAotICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgMCwgMTA5MDMsIDAsIDAsIDAsIDAsIDAsIDQ0ODIsIDQxNjA2LCAwLCAxMjg1NjksIDAsIAotICAgIDAsIDY0MzgxLCAwLCAwLCAwLCA0MjI0NSwgMCwgNDE5NzIsIDAsIDQ0NCwgMCwgOTEyNywgNjY2ODcsIDY2NjE5LCAwLCAKLSAgICA3ODAyNSwgMCwgMTEzNDksIDQwOTkxLCAwLCAwLCAxMTk1OTksIDEyMDgzMCwgMCwgMTE5NywgMTI4MjgyLCAxMTQ5LCAKLSAgICAxOTQ5NzAsIDAsIDAsIDQwOTkwLCAwLCAwLCAzNDkyLCAwLCAxMjc5NDIsIDAsIDAsIDAsIDEyODM4LCAwLCAxOTk0OCwgMCwgCi0gICAgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDAsIDExOTA1OSwgMTIwMzYsIDQxMzA5LCAwLCAwLCA4MTUyLCAwLCA2NDQyOCwgCi0gICAgMTIyMjcsIDAsIDAsIDEyODI4LCAxMjc1MTEsIDAsIDAsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDExOTU3NCwgMCwgMCwgCi0gICAgOTI2ODAsIDAsIDY4MTU0LCAwLCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDAsIDAsIDk2MDYsIDAsIDAsIDY0NDM5LCAwLCAKLSAgICAwLCA5MjY4NiwgMCwgMCwgMTk0OTY3LCAwLCAwLCAzMzk1LCA5MzYyLCAxMDg3OCwgMCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAKLSAgICAwLCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgMCwgMCwgNDczNSwgMTI3MDE3LCA2MTE5LCAxMjgyMiwgNDI2OTksIDAsIDAsIAotICAgIDc0ODE4LCA1Mzk2LCAwLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgMCwgMTE4ODkyLCAwLCA5NDcyLCAwLCAKLSAgICAxMTkyOSwgMCwgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIDE5NDc0MSwgMCwgMTk0NzQwLCAKLSAgICAxMjg2OTEsIDkyMTg1LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzcsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIAotICAgIDY4NDE0LCAwLCA0MzYxOSwgNDMzODIsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDEyNzE1OCwgCi0gICAgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgMCwgMCwgMCwgNjUzNjUsIDczODc3LCA2NTYyOCwgCi0gICAgNzgwMTksIDAsIDAsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAxMDM1MiwgNzM5MTcsIDEwMDYxLCAKLSAgICA0MzIzNywgMCwgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgNDMwNzgsIDEyODEyNSwgMTE4ODA5LCAwLCAKLSAgICAxMDg5OSwgNjU0NjksIDAsIDAsIDAsIDI0MTAsIDk5MywgMCwgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAKLSAgICAwLCAxMTkyNTMsIDAsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgMCwgCi0gICAgNDIyNCwgMTMzNiwgNDE1MTgsIDAsIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgCi0gICAgMCwgMCwgMjcyLCA0MjYzLCA4NzkzLCAwLCAwLCA0MTUwMiwgMCwgOTgzLCAxMjU0OSwgMCwgMCwgMTE5MCwgNDEwOSwgCi0gICAgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAwLCAwLCAyMDk5LCA1MTIwLCAyNDA5LCAKLSAgICA3Nzk5LCAwLCA3NDQyNCwgMCwgMCwgNDczMSwgMCwgNjY2MjksIDAsIDAsIDEyNTUsIDQxNDksIDkyNDcsIDAsIDk5MTMsIDAsIAotICAgIDAsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAwLCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAKLSAgICAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCAwLCA4MTgwLCAwLCAKLSAgICAwLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCAwLCAwLCAxMjg4NTgsIDAsIDAsIDEwNjk1LCAwLCAKLSAgICA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCAwLCAwLCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgCi0gICAgODM1OSwgMCwgMTI2ODksIDAsIDE5NDU5NCwgMCwgMCwgMCwgNjgxODMsIDAsIDAsIDEyODcsIDU0MzYsIDAsIDAsIDc0MTQyLCAKLSAgICA5MjMyOCwgNzQxNTIsIDExOTA3OCwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzY1MiwgMTA1MzcsIDAsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMCwgMCwgMTQ4OSwgMCwgMCwgMCwgCi0gICAgMzg5OSwgMTAwNywgNDIxMjQsIDAsIDQyMTIyLCA5MjMzNywgMCwgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAwLCAwLCA4OTU2LCAKLSAgICA0MzA4MywgMTE5ODMwLCA0MjEzOCwgNzg2MTAsIDAsIDEyMTUxLCA3ODYwOCwgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgCi0gICAgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAwLCAwLCAwLCA3ODYyMiwgNDM3MTIsIDI1ODIsIDExNDcwLCAKLSAgICA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCA0MTU1MCwgMCwgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIAotICAgIDI3OTksIDkyNTk0LCA0MTk0NCwgMTIwMjc2LCA5OTMzLCAwLCA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCAwLCAKLSAgICAxMTk4MjcsIDExOTgxNywgMTE5ODI4LCA3ODYzMywgMTA4OTYsIDAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIAotICAgIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDI0MzQsIDAsIDAsIDEyMDU3OSwgMCwgNDYzMSwgMCwgMCwgNjQwNywgCi0gICAgMCwgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIDAsIDAsIDAsIDAsIDAsIDkxNjQsIDY2NjEyLCAwLCAKLSAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgMCwgCi0gICAgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCAKLSAgICA0MTIwOCwgMCwgNDExNjgsIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3ODYzNCwgCi0gICAgMTk0NywgMCwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCAwLCAKLSAgICA4MDE3LCAwLCA2NTA5NiwgNjY3MjAsIDAsIDQzNDc1LCAwLCA0OTA5LCAxMjEyNiwgMTI4NjczLCAxMjA2OTYsIDQ5MDQsIDAsIAorICAgIDAsIDAsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDMsIDEyOTU1LCAxMDU5NiwgMjg4OCwgMTk0NjQ1LCAwLCAKKyAgICAwLCA5NjU3LCA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCAKKyAgICA2MzI4LCAwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAKKyAgICAxMjY1NDIsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDAsIDEyNjY0NywgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCAKKyAgICA5Mjg4LCA2NDgyMiwgMjg5MiwgMCwgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIDAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCAKKyAgICA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIDAsIDE3ODQsIDEzNjEsIAorICAgIDE5NTA0NywgMCwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgMTMxNTgsIDkyMTY2LCA3MjExLCAwLCA5MzcxLCA3Mzk3MywgCisgICAgOTE3NTUzLCA2ODI4LCAxNjI1LCA5MjMwMiwgMCwgMTM0MiwgNjg0NDAsIDY0MTcxLCAxMjY3MDQsIDEwOTAzLCA5ODM0ODYsIAorICAgIDAsIDAsIDAsIDAsIDQ0ODIsIDQxNjA2LCAwLCAxMjg1NjksIDk4MzExMiwgMCwgNjQzODEsIDAsIDAsIDE5NTA5MCwgCisgICAgNDIyNDUsIDEyNjQ2NywgNDE5NzIsIDAsIDQ0NCwgMCwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAwLCAKKyAgICAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMCwgMTE5NTk5LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgMTk0OTcwLCAKKyAgICAwLCAwLCA0MDk5MCwgNDM3NjUsIDAsIDM0OTIsIDAsIDEyNzk0MiwgMCwgMCwgMCwgMTI4MzgsIDk4Mzk2OSwgMTk5NDgsIDAsIAorICAgIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCAwLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMCwgMCwgODE1MiwgMCwgNDE1NTAsIAorICAgIDEyMjI3LCA5ODM2MTMsIDAsIDEyODI4LCAxMjc1MTEsIDAsIDAsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDExOTU3NCwgMCwgMCwgCisgICAgOTI2ODAsIDk4Mzc4MCwgNjgxNTQsIDAsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCAwLCAKKyAgICA2NDQzOSwgMCwgMCwgOTI2ODYsIDAsIDAsIDE5NDk2NywgMCwgMCwgMzM5NSwgOTM2MiwgMTA4NzgsIDAsIDAsIDc4MzYyLCAKKyAgICA2NDgzMCwgMCwgMTI2NTU3LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgMCwgMCwgNDczNSwgMTI3MDE3LCA2MTE5LCAKKyAgICAxMjgyMiwgNDI2OTksIDAsIDk4MzgxNSwgNzQ4MTgsIDE0MjMsIDAsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAKKyAgICAwLCAxMTg4OTIsIDAsIDk0NzIsIDAsIDExOTI5LCAwLCA3MTcwLCA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgCisgICAgNzg3MTMsIDAsIDE5NDc0MCwgMTI4NjkxLCA5MjE4NSwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM3LCAKKyAgICA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCA2ODQxNCwgMCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIAorICAgIDExNzc2LCA3NTU4LCAxMjcxNTgsIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDAsIDAsIDAsIAorICAgIDY1MzY1LCA3Mzg3NywgNjU2MjgsIDc4MDE5LCAxMjAzMTksIDAsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCAKKyAgICA1NDAzLCAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMCwgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgCisgICAgNDMwNzgsIDEyODEyNSwgMTE4ODA5LCAwLCAxMDg5OSwgNjU0NjksIDkyMzYyLCAwLCAwLCAyNDEwLCA5OTMsIDAsIAorICAgIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgMCwgMTE5MjUzLCAwLCA3MTEwLCA3NDQ2MiwgMjA2NiwgCisgICAgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDAsIDQyMjQsIDEzMzYsIDQxNTE4LCAwLCAwLCAwLCAwLCAKKyAgICA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDAsIDAsIDI3MiwgNDI2MywgODc5MywgMCwgMCwgCisgICAgNDE1MDIsIDAsIDk4MywgMTI1NDksIDAsIDAsIDExOTAsIDQxMDksIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCAKKyAgICA5NTQ0LCA0MzQ4MSwgMCwgMTk0ODA2LCA3MDAyNywgMjA5OSwgNTEyMCwgMjQwOSwgNzc5OSwgMCwgNzQ0MjQsIDAsIDAsIAorICAgIDQ3MzEsIDAsIDY2NjI5LCAwLCAwLCAxMjU1LCA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAwLCA2NDkxNCwgOTE3Nzg3LCAKKyAgICA2NTEwMSwgMCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgMTA4NDIsIDQxMzU0LCA0MjEyMywgCisgICAgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgMCwgODE4MCwgMCwgMCwgOTk3MiwgNzM4NjUsIDQ1MTksIAorICAgIDYxMTQsIDEwODk4LCA0MzA3MiwgMCwgMCwgOTM5NjAsIDk4MzMxNCwgMTI2NTgxLCAxMDY5NSwgMCwgNzU0MCwgMCwgODgxLCAKKyAgICA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgMCwgMCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIDgzNTksIDAsIDEyNjg5LCAKKyAgICAwLCAxOTQ1OTQsIDAsIDk4MzMwNCwgOTgzODcyLCA2ODE4MywgMCwgOTgzMzA2LCAxMjg3LCA1NDM2LCAwLCA5ODMzMDksIAorICAgIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDExOTA3OCwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgOTgzMzE1LCAwLCAKKyAgICAxMjcyNDIsIDAsIDAsIDM2NTIsIDEwNTM3LCAwLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDAsIDAsIAorICAgIDE0ODksIDAsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCA5ODM1NTcsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDAsIDExOTg1LCAKKyAgICAxMzQ1LCA3ODYwMCwgMCwgMCwgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDAsIDEyMTUxLCA3ODYwOCwgCisgICAgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAwLCA5ODM3NTAsIDAsIAorICAgIDc4NjIyLCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIDczODM3LCAKKyAgICAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDEyMDI3NiwgOTkzMywgMCwgNjY1MTUsIAorICAgIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgMTE5ODI3LCAxMTk4MTcsIDExOTgyOCwgNzg2MzMsIDEwODk2LCAwLCAxNzk5LCAKKyAgICAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgMCwgCisgICAgMTIwNTc5LCAwLCA0NjMxLCAwLCAwLCA2NDA3LCAwLCA2MzM4LCA0MzIxNCwgMCwgNzU3MCwgMCwgMzE5MiwgMCwgODQxNCwgCisgICAgMCwgOTM5ODMsIDAsIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgCisgICAgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCAKKyAgICA3ODYyNywgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIDQxMjA4LCA5ODM3MDQsIDQxMTY4LCAKKyAgICA4MTc4LCAwLCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzg2MzQsIDE5NDcsIDAsIDAsIAorICAgIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMCwgODAxNywgMTE5ODMxLCAKKyAgICA2NTA5NiwgNjY3MjAsIDAsIDQzNDc1LCAwLCA0OTA5LCAxMjEyNiwgMTI4NjczLCAxMjA2OTYsIDQ5MDQsIDk4MzMyNSwgCiAgICAgNjk2NTAsIDEzNjUsIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMCwgMCwgMCwgMCwgMTE5NTg3LCA2NDQxNSwgMCwgMCwgCi0gICAgNTM5OCwgMCwgMTI3Mzg2LCAwLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIDAsIDEyNzYzLCAwLCAzNjI5LCAwLCAKLSAgICAxMzAwNSwgMCwgMzYyOCwgMCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgCi0gICAgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAwLCA2NDY2NSwgNDMwODYsIDkxMTQsIDAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAKLSAgICAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCAKLSAgICA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCAwLCA2MDE4LCA5MjI5MCwgMCwgMTIyNzYsIDAsIAotICAgIDY4MzcyLCAwLCA5MjI1OSwgMTE5MjQ0LCAwLCAwLCAxMDQ2NywgMCwgMjQ0MywgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIAotICAgIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgCi0gICAgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgCi0gICAgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAKLSAgICAxOTY4LCAwLCAxOTUwMjMsIDEzMzcsIDY0OTY3LCAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDAsIAotICAgIDQyMzE0LCA0MzM4OCwgMCwgNzQ0MDMsIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCAKLSAgICA0MjI4NCwgMTI4NTA3LCA0Mjc2LCAxMjA2LCAzNjE5LCA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAKLSAgICAwLCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgMCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNzQzMTQsIDQyNDM1LCAKLSAgICA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNzc5ODcsIAotICAgIDY5NjY2LCA0NDQyLCAxMDM2NCwgMCwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCAwLCAxMjcyNzUsIAotICAgIDczOTgzLCAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3ODMyMCwgMCwgNjk3NSwgMCwgNTQxNSwgCi0gICAgMTIxNzYsIDAsIDc0MTkzLCAzNDYyLCA2NTIxNSwgNDI2MjksIDc4NjkxLCA3Mzc4NCwgMCwgMCwgOTc1OSwgMCwgNzgzMjQsIAotICAgIDEyNzI1NCwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIDQyNDk1LCAxMTg5NTYsIDAsIDQwNTEsIAotICAgIDEwNDYwLCA0MzM2NCwgMTE4OTE3LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCAKLSAgICA0MzE1MiwgNDI0ODksIDQyMTEyLCAwLCAxODc1LCAxMDgwOCwgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgCi0gICAgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDAsIDU1NzUsIDk2NzUsIDAsIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgMCwgCi0gICAgMCwgNDMyMzYsIDMzODIsIDQyNDQ5LCA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDAsIDExMjY5LCAxMDE1MSwgNzM3NTksIAotICAgIDQzMTAwLCA3NDQ0OSwgNjU1MDgsIDAsIDAsIDAsIDg5MzUsIDkxNzk4NSwgMCwgMCwgMCwgNjE2LCA3NDc1MywgNjUxNzgsIAotICAgIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDAsIDAsIDAsIDYwNDgsIDc0NDYwLCA0MjExMCwgNzM5NjUsIDEwODcwLCA4NTU3LCAKLSAgICAxMTA1NCwgNjg2NjQsIDExOTA0OSwgOTY4MSwgNDQ3NSwgMCwgNDExNDIsIDIxMDAsIDAsIDEyMDczMSwgNjAzNSwgMCwgCi0gICAgNzY1MSwgMTAyOTYsIDY0NDQzLCAwLCAwLCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAwLCAxMDM5MiwgCi0gICAgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDExOTEzMSwgNDEwMDAsIDAsIDExOTIzOSwgCi0gICAgNjQ4NywgMzM4NiwgMCwgMTAzNDQsIDAsIDY1Mjk5LCA1Mzk0LCA0MzI0NiwgNzgyNDMsIDEwMjIwLCA2NjUwNSwgNDEyMDAsIAotICAgIDEyODU4MywgNDQyNSwgMCwgMCwgMCwgNDMwNzQsIDczNzk5LCAwLCA3ODE0NywgMCwgMTIxNzMsIDc4NTQ1LCAwLCAwLCAKLSAgICA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMCwgMTU4NywgMCwgMTI3MzcyLCA2NDQ3NSwgMTI4MDk4LCAKLSAgICAxMzY5LCAwLCA5OTU5LCA3OTI3LCAwLCA0NTYwLCAwLCAwLCA5MjI3NywgMCwgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgCi0gICAgNDUxNCwgNjY0MzQsIDAsIDgxOTQsIDY1NDYyLCAxMDYyNiwgMTA5NjUsIDAsIDg4OTMsIDAsIDEyNTQyLCAwLCA2NTM0MSwgCi0gICAgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDAsIDAsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDAsIDY1Mjc5LCAKLSAgICAxMjcxMDIsIDY4MjA3LCAxMjcxMDAsIDY1NjA1LCA2MDQwLCAxMjcwOTcsIDEwMDcxLCAwLCA5MzM2LCAxMjg4MjQsIDAsIAotICAgIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgMCwgNjUxODgsIDc4MjAsIDQzMDE4LCAwLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgCi0gICAgMTA4ODQsIDc3OTgyLCAwLCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIAotICAgIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgCi0gICAgNjMyMywgMTk0Njg0LCA4MjI0LCAwLCA4OTM4LCA2MDQzLCAxMjczOCwgMCwgMCwgNTMyMSwgMCwgMTk0Nzk4LCAwLCAyNTg5LCAKLSAgICA3NDMzMiwgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCAxMjAyOTYsIDExOTA1LCAwLCAwLCAxMjg1MTYsIAotICAgIDEyODE2MywgNzQ1MTMsIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAwLCAxNTAzLCAwLCAwLCAwLCA1NzMxLCAKLSAgICAxMzgxLCAyMzg3LCAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCAKLSAgICA5NzY2LCAwLCA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCAwLCAKLSAgICAzNTI2LCA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzc4OTUsIAorICAgIDUzOTgsIDAsIDEyNzM4NiwgOTM5NTMsIDAsIDAsIDExOTAxNSwgMCwgMCwgOTQ3NiwgMCwgOTgzNzY4LCAxMjc2MywgCisgICAgMTI2NjAzLCAzNjI5LCAwLCAxMzAwNSwgMCwgMzYyOCwgMCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCAKKyAgICA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAwLCA2NDY2NSwgNDMwODYsIDkxMTQsIDAsIDQyNTgzLCAKKyAgICA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgCisgICAgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCAwLCA2MDE4LCAKKyAgICA5MjI5MCwgMCwgMTIyNzYsIDAsIDY4MzcyLCAwLCA5MjI1OSwgMTE5MjQ0LCAwLCA5ODMyMjQsIDEwNDY3LCAwLCAyNDQzLCAKKyAgICAxMDkxOCwgNzgyMTcsIDExOTgyNSwgMTAwMSwgOTI0MSwgMTkyNywgMCwgMCwgNzM5ODcsIDEyNzg4NSwgMCwgMCwgCisgICAgMTE4ODI4LCAxMjAyNzEsIDY1Njc4LCAxMjg2NywgMCwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgCisgICAgNTE4LCA2NTg1NywgMCwgMTI4Njc0LCAxMzIwNCwgNDM4NywgODU3LCAwLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKKyAgICAxMjA1OTIsIDAsIDAsIDAsIDAsIDUxMzYsIDE5NjgsIDk4MzA0MSwgMTI2NjI3LCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgCisgICAgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgMCwgNzQ0MDMsIDYxMjAsIDQ3OCwgCisgICAgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgMTI4NTA3LCA0Mjc2LCAxMjA2LCAzNjE5LCAKKyAgICA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAwLCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgMCwgCisgICAgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNzQzMTQsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgCisgICAgNDIzOTcsIDMzNCwgMCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNzc5ODcsIDY5NjY2LCA0NDQyLCAxMDM2NCwgMCwgNzc4LCAKKyAgICA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgMTI3Mjc1LCA3Mzk4MywgMjkxNSwgMTE1MDIsIAorICAgIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzgzMjAsIDAsIDY5NzUsIDAsIDU0MTUsIDEyMTc2LCAwLCA3NDE5MywgCisgICAgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzM3ODQsIDAsIDAsIDk3NTksIDAsIDcwMDU3LCAxMjcyNTQsIDgxMTQsIAorICAgIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgMTE4OTU2LCAwLCA0MDUxLCAxMDQ2MCwgNDMzNjQsIAorICAgIDExODkxNywgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCAKKyAgICA0MjExMiwgMTI3OTc4LCAxODc1LCAxMDgwOCwgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIAorICAgIDUyODksIDEzMTQ0LCAxMjg2NTgsIDAsIDU1NzUsIDk2NzUsIDAsIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjY5LCAKKyAgICAxMTk4MzAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIAorICAgIDczNzU5LCA0MzEwMCwgNjk4ODgsIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIAorICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAxMjY1NTEsIDAsIDYwNDgsIDc0NDYwLCA0MjExMCwgNzM5NjUsIAorICAgIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDExOTA0OSwgOTY4MSwgNDQ3NSwgMCwgNDExNDIsIDIxMDAsIDAsIDEyMDczMSwgCisgICAgNjAzNSwgMCwgNzY1MSwgMTAyOTYsIDY0NDQzLCAwLCA5ODMyODcsIDkxNzk4NywgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIAorICAgIDAsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgMCwgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCAKKyAgICAxMTkyMzksIDY0ODcsIDMzODYsIDAsIDEwMzQ0LCAwLCA2NTI5OSwgNTM5NCwgNDMyNDYsIDc4MjQzLCAxMDIyMCwgNjY1MDUsIAorICAgIDQxMjAwLCAxMjg1ODMsIDQ0MjUsIDAsIDAsIDAsIDQzMDc0LCA3Mzc5OSwgOTgzMjAwLCA3ODE0NywgMCwgMTIxNzMsIAorICAgIDc4NTQ1LCAwLCAxMjcwMTEsIDY1MzM4LCAwLCAwLCAxMTk1ODIsIDQ0NzQsIDAsIDQzMDkzLCAxMjg2NDQsIDE1ODcsIDAsIAorICAgIDEyNzM3MiwgNjQ0NzUsIDEyODA5OCwgMTM2OSwgOTgzNjYzLCA5OTU5LCA3OTI3LCAwLCA0NTYwLCAwLCAwLCA5MjI3NywgMCwgCisgICAgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAKKyAgICAwLCA4ODkzLCA5ODMyOTMsIDEyNTQyLCAwLCA2NTM0MSwgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDAsIDAsIAorICAgIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEyNzEwMiwgNjgyMDcsIDEyNzEwMCwgNzA5OSwgCisgICAgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgNDM3NTAsIDAsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIAorICAgIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc3OTgyLCAwLCA1MTI3LCAKKyAgICAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCAKKyAgICA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgNjMyMywgMTk0Njg0LCA4MjI0LCAwLCAKKyAgICA4OTM4LCA2MDQzLCAxMjczOCwgMCwgOTgzMDc2LCA1MzIxLCAwLCAxOTQ3OTgsIDAsIDI1ODksIDc0MzMyLCAxNjg5LCAKKyAgICA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDEyMDI5NiwgMTE5MDUsIDAsIDAsIDEyODUxNiwgMTI4MTYzLCA3NDUxMywgCisgICAgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDAsIDE1MDMsIDAsIDAsIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAKKyAgICAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCAKKyAgICA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCAwLCAzNTI2LCAKKyAgICA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzc4OTUsIAogICAgIDQzMTU1LCAwLCAxMTk4NDksIDMxNDYsIDEwOTU5LCA5NDgzLCAwLCA3Nzg5MywgMTA5ODEsIDE2NiwgOTE3ODQxLCA4NjM1LCAKLSAgICAwLCAxMDYyMywgNDA4LCAxMTkwNTgsIDEyNzUwNywgMTMyOTgsIDAsIDc0MjYsIDQxNjQxLCAxMjcxNywgMCwgNzYwNywgCi0gICAgMTA2MzksIDY2NzEzLCAwLCAwLCA0MTY0MywgNzQxMzQsIDAsIDg3MTMsIDQxNjQwLCAxMDIyMSwgNDE2NDUsIDY2NzEyLCAKLSAgICA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDAsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA3NDU3MiwgMCwgNDIxMzYsIDAsIDAsIDAsIDAsIDMyNDcsIDExOTg1NCwgCi0gICAgNjUwMTcsIDAsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIDAsIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDAsIAotICAgIDAsIDAsIDgyODUsIDAsIDQ1MDksIDAsIDY2NDcxLCAxMjIxNiwgMCwgNDA5ODgsIDkyNTkyLCAwLCA0MTcyNywgMCwgCi0gICAgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAKLSAgICAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDkxNzU3MSwgNDI0OSwgMCwgOTE3NTk0LCAxMTcwNywgODIyMiwgMCwgNzkzOSwgCi0gICAgOTI0NTQsIDkyNDYwLCAxMjc4MDEsIDkxNzU5MiwgMTI4MzU5LCA4NTM0LCAxMjcxNTQsIDQwOTgzLCAwLCAwLCAwLCA3MjAxLCAKLSAgICAxMjU2MSwgMCwgNDIzNzEsIDEyNTU4LCAwLCA5MTc1NDksIDEwMDUyLCA0MDk4MiwgMCwgMCwgMTQ4OCwgMCwgMCwgMCwgCi0gICAgOTE3NTU5LCAwLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIDAsIDAsIDAsIDEyNzg3MiwgMCwgNTgwMywgNzc5NywgNjA3MCwgCi0gICAgMTAwMDYsIDAsIDI5MjIsIDYwODIsIDAsIDY1MDA5LCAwLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgCi0gICAgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDMwODUsIDYwNTcsIDUwOCwgMTI4NTg1LCAxMjgwMTUsIDEyMDI2NSwgMCwgOTI0MDUsIDAsIDAsIDYzOCwgNjA4MywgCi0gICAgMTE5MDcyLCAwLCAwLCAyMzA1LCA3ODM0OCwgMCwgMCwgNjA1NiwgNjY1OSwgMCwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgCi0gICAgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgOTI2OTAsIDMyNDksIAotICAgIDE3NjgsIDAsIDEyMzI4LCA1MDEsIDEyNzA3NCwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIAotICAgIDY1MDUsIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCAKLSAgICA5MjM3NiwgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCAKLSAgICA3ODM0MSwgMTE5MTE1LCA3ODM0MiwgMCwgMCwgNzQxMDEsIDAsIDExNzYyLCAwLCA5MjQyMiwgNzc5OTcsIDEyODc4OCwgCi0gICAgNjY0NzUsIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgCi0gICAgNTAyNiwgMCwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKLSAgICAxMTkzNjEsIDAsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIDQxMDcwLCA3NzkwMywgMCwgMzQ0MCwgCi0gICAgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIDAsIDEwNjAwLCA5MTc4NjcsIDYyMCwgNDEwMDEsIAotICAgIDYwMjgsIDAsIDQyODkyLCAwLCA3NDgyMiwgNTAyNCwgMTIwODI5LCA0MTAwMywgMCwgNTAyNSwgMTI4MjY5LCAwLCAwLCAKLSAgICAxMTkzMjgsIDAsIDY1NTU3LCAwLCA3NDU0MSwgMCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgCi0gICAgMTE1OTcsIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzQxOTUsIDExNTY5LCA2NTI3NSwgODkwNiwgMTI3MDk2LCA1NzU1LCAKLSAgICAyNjM2LCAwLCAxMDgxNSwgMTE2MTksIDc4NzE3LCA0MTU0MCwgNzgxNSwgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAKLSAgICAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgMCwgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDAsIAotICAgIDEyODIxNywgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIAotICAgIDQzNjA2LCAwLCA2ODM5NywgNjYzNzAsIDc0NTA2LCA0MjMzNSwgMCwgMCwgMCwgNzUzOCwgNTMxNSwgMTIwNjQ0LCA0MjQ5MSwgCi0gICAgMCwgNDIwNjEsIDEyODA4OCwgNDU3NiwgMCwgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCA0MDM5LCA2NDQ3MiwgNDIzMzgsIAotICAgIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgNzgyMDksIDkxNzgyMCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAKLSAgICAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAwLCAzNjE4LCA3ODMzOCwgCi0gICAgMCwgNDMzMDAsIDUxNTYsIDkyNjI5LCAwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIAotICAgIDAsIDQxNjYyLCAwLCAwLCAwLCAwLCAwLCA0NTc4LCA2NDUxMywgNDE2NjQsIDAsIDQyNTc4LCAxMjg3OTQsIDQxNjYxLCAKLSAgICA3ODcxNSwgNDMyNjcsIDkzNTYsIDAsIDAsIDAsIDEyODYsIDEwMTY2LCAwLCAwLCA2NDcwNywgMCwgNDI0NzYsIDc3MzAsIDAsIAotICAgIDEyODUyMiwgNDI0ODMsIDAsIDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCAwLCA2NjQxLCA1MjUsIDQxNjI3LCAKLSAgICA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIAotICAgIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAwLCAxMjAyMzQsIDAsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAKLSAgICAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDAsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgCi0gICAgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDczODQyLCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAwLCAKLSAgICA3Nzk0OCwgMzYzLCAxMTAxNSwgNzc5NDcsIDc3OTQ0LCA2NDI5NiwgMTI3MDkwLCA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgCi0gICAgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgNjQ0MzQsIDkyNTIwLCAxMjcwOTUsIDk0OTIsIAotICAgIDExNzgyLCA2NDM4MiwgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjcwOTQsIDAsIDEyMDc3NCwgCi0gICAgOTI0NjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyODY2NCwgMzEzLCA5MTc1NjMsIDQxODgxLCAwLCAKLSAgICA0MjMxMSwgNzQ0NSwgMCwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIAotICAgIDkzOTksIDk0MjIsIDAsIDY2NDk1LCAwLCAwLCAxMjcyMzksIDQxNzE4LCAxMDcwNywgMTYwMywgMCwgMTE5MDAzLCAwLCAKLSAgICA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCAwLCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAxMTYwMCwgNzc5NjEsIAotICAgIDI3OTcsIDczODIxLCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIAotICAgIDAsIDExNjA3LCAwLCA0MjI4MiwgNzc5NzEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgCi0gICAgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAzNjIsIDkyNDM5LCAwLCA4MDM3LCAKLSAgICA0Mzc3NywgMTE1MzUsIDAsIDc0ODQ1LCA1MTg1LCA3MTY1LCA1NTIxLCAxMDMzNCwgMjA5MywgNzc5ODMsIDEwMzAyLCAKLSAgICAxMjgxMTIsIDEwMTA0LCAxMDI3LCA1MTgxLCAwLCAwLCAxMDUyMywgMTQ0NiwgNDIzMjAsIDQxNjQ2LCA5OTEsIDUxODksIAotICAgIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA3Nzk3OSwgMzQwNSwgMCwgMTk0NjQ0LCA1NTIzLCAwLCA0MjYyMCwgCi0gICAgOTI0NDcsIDAsIDk1NDksIDAsIDEwNTQ5LCA1NTI4MiwgOTY2MSwgNDM2ODIsIDAsIDc3OTEwLCAxMjAwMjYsIDc4NzA4LCAwLCAKLSAgICA3NzkxMSwgMCwgNDE5OTEsIDAsIDAsIDc2MzAsIDk4NDYsIDc2ODQsIDEwMzUwLCAwLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIAotICAgIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA2NTY2NywgMTI3MDM3LCAxMjMzMCwgCi0gICAgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIDAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAwLCAKLSAgICAxMDIwOSwgODMxMywgNDE5NSwgNzQ0MzUsIDEzMTYsIDY2NjkwLCAxMjAwMzIsIDYzMzIsIDY0ODk0LCAwLCA2NTg3MSwgCi0gICAgNzgwNjAsIDE3MzYsIDAsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzg4NDEsIDY5MywgCi0gICAgOTEzMCwgMzE0LCA2NDE0OSwgNDI0MjAsIDExOTQ5LCAwLCAxMjAxNTIsIDExMDI2LCAwLCA1MzMyLCA2OTQwLCA2NDE1NCwgCi0gICAgMTI2MzUsIDEyNzAwNywgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDEyMDc2MywgNzg4NDAsIDAsIDEyODI0LCAwLCAKLSAgICA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgMzc1NywgMCwgCi0gICAgMCwgMCwgNjU4NjksIDczNzYwLCAyNTY5LCAwLCAyMzI2LCA2NTc0MCwgMjU2NSwgNDI0NTksIDc1OTYsIDc5MjEsIDAsIAotICAgIDc0MDk1LCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgMCwgNDA0NCwgOTI2NDYsIDAsIDEyMjMzLCAwLCAxMDIzLCAKLSAgICA0NzQsIDAsIDExOTgxOCwgMCwgMCwgNDI0ODcsIDY1NTU2LCAwLCAwLCA0MjI5NSwgMCwgMCwgMCwgOTI1MTgsIDk4MzUsIAotICAgIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgMCwgMCwgNTUyNTEsIDEwMTE4LCAzMTMzLCAKLSAgICAxMjgwMDgsIDczNzk1LCAwLCA5NjEwLCA4MDY4LCA4MTk3LCAwLCA2OTksIDAsIDQxNjY1LCA1ODY4LCAwLCA5MjY5NSwgCi0gICAgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgNjU1ODMsIDY1ODAyLCAwLCAKLSAgICA2NDU5NywgNDM0NDQsIDExOTE4NCwgOTIxOTcsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIDE5MzcsIDAsIDAsIDQxODM1LCAKLSAgICA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDAsIDAsIDExMDE3LCAwLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIAotICAgIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAKLSAgICAxOTQxLCAzOTAwLCAwLCAxNzEzLCA3Nzk2OSwgMCwgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgCi0gICAgNjQxMDUsIDEyODA4MCwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDAsIDY0MTAzLCA5NjksIDAsIDkzNTIsIAotICAgIDAsIDYxNjUsIDY0MTAwLCAwLCA2NjMyLCA3Mzg2MSwgNDI0MDIsIDc0MzI3LCA3ODA2LCAwLCA4OTE0LCAwLCAwLCAzMTgzLCAKLSAgICAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA3Mzc0OSwgMCwgNjQ0MTYsIAotICAgIDQyNDIyLCAwLCAwLCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxOTQ3MTksIDAsIDQyMzI4LCAxMDc2NywgMCwgODExNSwgMCwgCi0gICAgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDAsIDAsIDY1ODQ4LCAwLCAwLCAwLCAwLCAxMjY5ODcsIDQ0ODYsIDAsIDAsIAotICAgIDAsIDEwOTI1LCAwLCAwLCAwLCAwLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgMCwgMTAzMDUsIDQyNDYxLCAwLCAKLSAgICA0MjM0OSwgODgzMiwgNzgwNTEsIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgCi0gICAgOTE3ODU3LCA3Nzk0LCAwLCA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDAsIDY5NjU4LCAKLSAgICAwLCA2NTQwMiwgMTE5NTgxLCAwLCAwLCA2NDkzMywgMCwgNDE5NjAsIDY2OTksIDAsIDAsIDEyODM1NCwgNjgyMywgNDIzOTEsIAotICAgIDE1ODgsIDY1NDAwLCA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDAsIDkxNzkzOSwgMTI3NzQ0LCA2MTE1LCAKLSAgICAyMDc4LCA0MTY1NCwgNDI0ODAsIDAsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCAwLCAwLCAwLCA2NDQsIDY1NTAwLCAKLSAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDc0NDU3LCAKLSAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgOTE3OTQzLCA0MTU1NywgMCwgMCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgCi0gICAgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDAsIDc0Mzc3LCAKLSAgICAxMTAyOSwgNjY2NTEsIDAsIDAsIDExODkzMCwgNjQ1MjcsIDAsIDc4NzcsIDczODAzLCAwLCAxMjczNDgsIDEyMDA5NiwgCi0gICAgNzQ2MDIsIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgCi0gICAgMCwgNzg2MzEsIDk1MDIsIDY1NDI3LCAwLCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCAwLCAxMjczNTcsIAotICAgIDc4ODM1LCA5MjQxMCwgMTAxMTIsIDEwODI3LCAwLCA5ODY2LCA3NDUyNywgNjY2NzUsIDAsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgCi0gICAgMTA0NzcsIDAsIDg2MzYsIDAsIDgzMTUsIDY1NDQ0LCAwLCAwLCA3NDU5NSwgNjE1MiwgMCwgMCwgNjYyOSwgMTI4MjUxLCAKKyAgICA5ODM2MDYsIDEwNjIzLCA0MDgsIDExOTA1OCwgMTI3NTA3LCAxMzI5OCwgMCwgNzQyNiwgNDE2NDEsIDEyNzE3LCAwLCAKKyAgICA3NjA3LCAxMDYzOSwgNDMzOTYsIDAsIDAsIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIAorICAgIDQxNjQ1LCA2NjcxMiwgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA5Mzk5NCwgNzc5MDEsIDM0NzIsIDg2OTcsIAorICAgIDAsIDAsIDk4MzgwNiwgMCwgMCwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAwLCAwLCAKKyAgICAwLCAwLCAzMjQ3LCAxMTk4NTQsIDY1MDE3LCA5ODM5NDQsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIDAsIAorICAgIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDExOTg1MywgMCwgMCwgODI4NSwgMCwgNDUwOSwgMCwgNjY0NzEsIDEyMjE2LCAwLCAKKyAgICA0MDk4OCwgOTI1OTIsIDc0ODA5LCA0MTcyNywgMCwgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgCisgICAgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCAwLCAKKyAgICA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAorICAgIDEyNzE1NCwgNDA5ODMsIDAsIDk4MzIzNCwgMCwgNzIwMSwgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAKKyAgICAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKKyAgICA5ODM5MzEsIDAsIDAsIDEyNzg3MiwgNzEzNjMsIDU4MDMsIDc3OTcsIDYwNzAsIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCAKKyAgICA2NTAwOSwgOTgzOTMzLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIAorICAgIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgNDMwODUsIDYwNTcsIDUwOCwgCisgICAgOTM5NjgsIDEyODAxNSwgNjc5NjgsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIDExOTA3MiwgMCwgMCwgMjMwNSwgCisgICAgNzgzNDgsIDY4MDk2LCAwLCA2MDU2LCA2NjU5LCA2Nzk2OSwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCAKKyAgICA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAKKyAgICAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIDY1MDUsIAorICAgIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCA5MjM3NiwgCisgICAgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCA3ODM0MSwgCisgICAgNzg1NjcsIDc4MzQyLCAwLCA5ODM0NDgsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCA2ODAxMCwgNjY0NzUsIAorICAgIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgNTAyNiwgCisgICAgOTgzMjQ3LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCA3NDc5MCwgNzgxMzgsIAorICAgIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIAorICAgIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCA5ODM2NzAsIDEwNjAwLCA5MTc4NjcsIAorICAgIDYyMCwgNDEwMDEsIDYwMjgsIDAsIDQyODkyLCAwLCA3NDgyMiwgNTAyNCwgMTIwODI5LCA0MTAwMywgMCwgNTAyNSwgCisgICAgNjk4OTIsIDk4MzIwNywgMCwgMTE4ODg1LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDk4MzU4NywgMTE1OTksIDEyODIwOSwgCisgICAgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzQxOTUsIDExNTY5LCAKKyAgICA2NTI3NSwgODkwNiwgMTI3MDk2LCA1NzU1LCAyNjM2LCAwLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAKKyAgICAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAKKyAgICA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCAwLCAxMjY0ODIsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgCisgICAgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCA0MzYwNiwgMCwgNjgzOTcsIDY2MzcwLCA3NDUwNiwgNDIzMzUsIAorICAgIDk4MzE4OCwgMCwgMCwgNzUzOCwgNTMxNSwgMTIwNjQ0LCA0MjQ5MSwgMCwgNDIwNjEsIDEyODA4OCwgNDU3NiwgMCwgCisgICAgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCA0MDM5LCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAKKyAgICAxMTMzNywgNzgyMDksIDkxNzgyMCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgCisgICAgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAwLCAzNjE4LCA3ODMzOCwgMCwgNDMzMDAsIDUxNTYsIDkyNjI5LCAKKyAgICAwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIDIyMTUsIDQxNjYyLCA5NDAxMCwgMCwgCisgICAgMCwgMCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzI1LCA0MjU3OCwgMTI4Nzk0LCA0MTY2MSwgNzg3MTUsIAorICAgIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgMCwgMCwgNjQ3MDcsIDk4MzEyNywgNDI0NzYsIDc3MzAsIAorICAgIDk4Mzg1MCwgMTI4NTIyLCA0MjQ4MywgMCwgMCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDAsIDY2NDEsIDUyNSwgCisgICAgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCAKKyAgICA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDAsIDc0MzYwLCAwLCAxMzE5MywgNjQzNTAsIDExNjY2LCAKKyAgICA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCA5ODMwOTIsIDExMzc0LCA3ODA0MywgMTA4ODksIAorICAgIDQzNDYxLCA3NzU3LCA0MjQ2MiwgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDczODQyLCAxMzMwOCwgCisgICAgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAwLCA3Nzk0OCwgMzYzLCAxMTAxNSwgNzc5NDcsIDc3OTQ0LCA2NDI5NiwgMTI3MDkwLCAKKyAgICA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgCisgICAgNjQ0MzQsIDkyNTIwLCAxMjcwOTUsIDk0OTIsIDExNzgyLCA2NDM4MiwgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgCisgICAgNjMwLCAxMjcwOTQsIDAsIDEyMDc3NCwgOTI0NjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyODY2NCwgMzEzLCAKKyAgICA5MTc1NjMsIDQxODgxLCAwLCA0MjMxMSwgNzQ0NSwgMCwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgCisgICAgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIDk0MjIsIDAsIDY2NDk1LCAwLCAwLCAxMjcyMzksIDQxNzE4LCAxMDcwNywgCisgICAgMTYwMywgMCwgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCAwLCAxMDU0NiwgNzQyMTAsIAorICAgIDc4MTAxLCAxMTYwMCwgNzc5NjEsIDI3OTcsIDczODIxLCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgCisgICAgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAwLCA0MjI4MiwgNzc5NzEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgCisgICAgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCAKKyAgICA4MjQ0LCAzNjIsIDkyNDM5LCAwLCA4MDM3LCA0Mzc3NywgMTE1MzUsIDAsIDc0ODQ1LCA1MTg1LCA3MTY1LCA1NTIxLCAKKyAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjgxMTIsIDEwMTA0LCAxMDI3LCA1MTgxLCAwLCAwLCAxMDUyMywgMTQ0NiwgCisgICAgNDIzMjAsIDQxNjQ2LCA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA0Mjg5OCwgMzQwNSwgCisgICAgMCwgMTk0NjQ0LCA1NTIzLCAwLCA0MjYyMCwgOTI0NDcsIDk4MzgxMCwgOTU0OSwgMCwgMTA1NDksIDU1MjgyLCA5NjYxLCAKKyAgICA0MzY4MiwgMCwgNzc5MTAsIDEyMDAyNiwgNzg3MDgsIDAsIDc3OTExLCAwLCA0MTk5MSwgOTgzODg0LCAwLCA3NjMwLCAKKyAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMCwgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgNzc5ODAsIDY2NDg1LCA3Nzk3NywgCisgICAgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNjU2NjcsIDEyNzAzNywgMTIzMzAsIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAKKyAgICA2NjYzMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA3Nzk4NCwgNzQ0NDMsIDAsIDEwMjA5LCA4MzEzLCA0MTk1LCA3NDQzNSwgCisgICAgMTMxNiwgNjY2OTAsIDEyMDAzMiwgNjMzMiwgNjQ4OTQsIDAsIDY1ODcxLCA3ODA2MCwgMTczNiwgOTgzNjc1LCAzOTAxLCAKKyAgICAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4ODQxLCA2OTMsIDkxMzAsIDMxNCwgNjQxNDksIDQyNDIwLCAKKyAgICAxMTk0OSwgOTgzNjYwLCAxMjAxNTIsIDExMDI2LCAxMjg3ODgsIDUzMzIsIDY5NDAsIDY0MTU0LCAxMjYzNSwgMTI3MDA3LCAKKyAgICA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgMTIwNzYzLCA3ODg0MCwgNzEzNjgsIDEyODI0LCAwLCA0NTI4LCAKKyAgICA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgMzc1NywgMCwgMCwgMCwgCisgICAgNjU4NjksIDczNzYwLCAyNTY5LCAwLCAyMzI2LCA2NTc0MCwgMjU2NSwgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg1OSwgCisgICAgNzQwOTUsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCAwLCA0MDQ0LCA5MjY0NiwgMCwgMTIyMzMsIDk4Mzg2MiwgCisgICAgMTAyMywgNDc0LCAwLCAxMTk4MTgsIDAsIDAsIDQyNDg3LCA2NTU1NiwgMCwgMTI3ODY2LCA0MjI5NSwgMCwgMCwgNzEzMjIsIAorICAgIDkyNTE4LCA5ODM1LCA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAKKyAgICAxMDExOCwgMzEzMywgMTI4MDA4LCA3Mzc5NSwgMCwgOTYxMCwgODA2OCwgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgCisgICAgMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIDY1NTgzLCAKKyAgICA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgMTE5MTg0LCA5MjE5NywgMCwgNjQ2NCwgNzAzNiwgMjk5NiwgMTkzNywgCisgICAgOTgzNzQyLCAwLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAwLCAwLCAxMTAxNywgMTIwNjAxLCAwLCAyOTMsIAorICAgIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIAorICAgIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMCwgMTcxMywgNzc5NjksIDAsIDczOTU3LCAxMTQwNywgCisgICAgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjgwODAsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIAorICAgIDQyMjg5LCAwLCA2NDEwMywgOTY5LCAwLCA5MzUyLCAwLCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCAKKyAgICA3NDMyNywgNzgwNiwgMCwgODkxNCwgMCwgMCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCAKKyAgICA2Nzg0OSwgNTc0NiwgNzM3NDksIDAsIDY0NDE2LCA0MjQyMiwgMCwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAKKyAgICAxOTQ3MTksIDAsIDQyMzI4LCAxMDc2NywgMCwgODExNSwgMCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCisgICAgMCwgNjU4NDgsIDAsIDAsIDY5ODYzLCAwLCAxMjY5ODcsIDQ0ODYsIDAsIDAsIDAsIDEwOTI1LCAwLCAwLCAwLCA5ODM1ODYsIAorICAgIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCAwLCAxMDMwNSwgNDI0NjEsIDAsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgCisgICAgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMCwgNDI0MjksIAorICAgIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIAorICAgIDAsIDAsIDY0OTMzLCAwLCA0MTk2MCwgNjY5OSwgMCwgMCwgMTI4MzU0LCA2ODIzLCA0MjM5MSwgMTU4OCwgNjU0MDAsIAorICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDkxNzkzOSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCisgICAgNDI0ODAsIDAsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCAwLCAwLCAwLCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIAorICAgIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDc0NDU3LCAwLCAwLCA0MTU1NCwgMCwgCisgICAgODIyMCwgOTE3OTQzLCA0MTU1NywgMCwgMCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCAKKyAgICA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDAsIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgCisgICAgMCwgMTE4OTMwLCA2NDUyNywgMCwgNzg3NywgNzM4MDMsIDk4Mzc4OSwgMTI3MzQ4LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAKKyAgICAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCAKKyAgICA5NTAyLCA2NTQyNywgMCwgNjU0MjQsIDEyNjA3LCAwLCA5NzM0LCA2NTQyNSwgMCwgMCwgMTI3MzU3LCA3ODgzNSwgOTI0MTAsIAorICAgIDEwMTEyLCAxMDgyNywgMCwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAwLCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCAwLCAKKyAgICA4NjM2LCA5ODM5MTgsIDgzMTUsIDY1NDQ0LCA5ODM3ODQsIDAsIDc0NTk1LCA2MTUyLCAwLCAwLCA2NjI5LCAxMjcxMDgsIAogICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAwLCA2OTc5MCwgNjQ0MzUsIDAsIDQzNjkwLCAxMTA0NiwgMTE0OTAsIDQyNzMwLCAKICAgICA0NDg1LCAxMjcxMDcsIDAsIDY0OTI2LCAwLCAwLCAwLCA1ODY5LCAxMjQzNywgNDI3MjgsIDAsIDcwNDAsIDM1ODgsIDAsIAogICAgIDEyODI1LCAwLCAwLCAxMjcyNSwgMCwgMCwgNzg2NDIsIDIyMywgMCwgNjk2NzUsIDEyMDE2NiwgNDI0NDQsIDAsIDY0NDk5LCAKICAgICA2NTI0NSwgMCwgMTE3MSwgMCwgNjk3MTcsIDAsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIAogICAgIDEyMDExMSwgMjMzOCwgMCwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDY1MjM2LCA2NzY0NCwgNjgxMjYsIDEyMTMsIAotICAgIDAsIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCAwLCA2NDM4NywgNDExNSwgMCwgNTAwNSwgNjQwNzAsIDY0MDczLCAKLSAgICAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCA2NTQzNiwgMCwgMjEyMCwgCi0gICAgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCAxMjAxNTgsIDEwNzAxLCAxNzY0LCAzMTAxLCAxMjc4MTUsIDEyODU4LCAxMjAxNTksIAotICAgIDAsIDExMzczLCA2Mzc4LCAxMjc4NTksIDEyMDEwMywgODY2MywgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDAsIDkyMjIsIAotICAgIDAsIDAsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIAotICAgIDEyOTMsIDc5NDcsIDIxMzIsIDAsIDc0NTkzLCAxMjAzMDgsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDAsIDAsIAotICAgIDY1ODg4LCA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCAwLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgMCwgODgyMiwgMCwgCi0gICAgMTE1NywgNjQ5MDMsIDg2MzgsIDAsIDAsIDAsIDAsIDEyMDMxOSwgODIzNSwgMTIwMzE2LCA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAKLSAgICAwLCA2OTIxNiwgMCwgNjU0MzAsIDc0MDEzLCA2MDc5LCA2ODE3LCAxMDc2NCwgMTI3OTEwLCA2NDI5MSwgMTI4MDUxLCA5OTgsIAotICAgIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAwLCAxOTkxLCA3ODgyLCA0MjI1NCwgMCwgNDE3MDAsIDUzMCwgMCwgCi0gICAgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgCi0gICAgNTAwNCwgMTE5MzM0LCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDAsIDY2MzczLCAwLCAwLCA2NDkwOCwgOTI2OTEsIDYzMTEsIAotICAgIDAsIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgMTIwMzI2LCAwLCA0MTcwNSwgOTIxODgsIDY1OTgsIDAsIDY1OTksIAotICAgIDEyMDMzNCwgMCwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDAsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMCwgMCwgCi0gICAgMCwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAwLCAxMjAyNDMsIDIzMzYsIDAsIDAsIDc4ODcxLCAxMjA0NDIsIAotICAgIDAsIDE5MjEsIDEwOTQ3LCAxOTkyNywgMCwgNjU0MDYsIDAsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCAKLSAgICA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAwLCA1Nzc0LCA4MzI1LCAwLCAKLSAgICA2NTQwMywgMCwgMTg1NCwgMTA3OTQsIDAsIDY3NjYwLCAwLCAwLCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAotICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCi0gICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAwLCAwLCA4NDIxLCAxMjc0NzIsIDY5NjgyLCAKLSAgICA0MzcwNSwgNTAyLCAwLCA2NTQzMSwgMTE5MDU2LCAwLCAxMjA0MywgMTMwMywgMzE2LCA5MjQ2MiwgMjAyOSwgMjEzNiwgCi0gICAgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgMTk0NjQ1LCAxMjc4NzcsIDQyNDg4LCAwLCA5NTgzLCAKLSAgICAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAwLCAwLCAwLCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIAotICAgIDc3OTg5LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIAotICAgIDY1NDUyLCAwLCAxMTMwMSwgNzgwMTMsIDc4MDA4LCA3ODAxMCwgOTg3NCwgNzgwMDcsIDAsIDEzMTksIDMwNTAsIDY1NDEwLCAKLSAgICAwLCAwLCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDEyODEzNywgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgCi0gICAgOTI3MDksIDEyODIyMiwgMCwgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgCi0gICAgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgMTE5NjExLCA3OTIzLCAzNzE2LCAKLSAgICA5MjM2MywgOTk5NiwgODUwOCwgMCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCAwLCA0MTcwNywgODQ5MywgCi0gICAgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCAwLCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMCwgCi0gICAgMCwgOTExOSwgMjc4NywgNzkyMCwgMTE4ODIzLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDAsIDAsIDc4MDIxLCAKLSAgICA3ODAyMiwgNDEwLCA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCAwLCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAKLSAgICAxMDEyNiwgMTIxMTYsIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3ODE0MSwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCAKLSAgICA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgCi0gICAgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA5MTc5MTksIAotICAgIDQ1NjksIDc0MTMwLCAwLCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCA2NTYyOSwgMCwgCi0gICAgMTk0ODU4LCAwLCAwLCAxMjc1NDUsIDEyMDU0MywgMCwgMCwgNjI5MSwgMCwgNzg2MzksIDQxNjY5LCA3MDk0LCA5MTc5MjEsIAotICAgIDAsIDAsIDc0MDU0LCAxMjc3NTQsIDE5NTAyOSwgMCwgODM5LCAwLCA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgMCwgNDg1OSwgCi0gICAgNjQ0NjcsIDAsIDAsIDExODk5OCwgNzIwNiwgMCwgNjY0NywgNDM5ODYsIDAsIDY5NzY2LCAwLCA2NDc2NCwgNDIxMCwgMCwgCi0gICAgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgNzQyNDUsIAotICAgIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgMTE5MjI5LCAKLSAgICAxMTA0OSwgMCwgOTI2OTcsIDQzMjM5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgNjk2NzcsIDExOTQwLCA2Nzg4OCwgNjY0LCAKLSAgICAxMjA0MzcsIDUwMzQsIDAsIDAsIDEyNzUyNSwgNDI3MDIsIDczODg4LCAwLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCAKLSAgICAwLCA5MTE1LCA3NDMwLCAxMjAzNzcsIDAsIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIAotICAgIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgMTIwMTYwLCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgCi0gICAgNDExNjQsIDY0NzQ0LCA5NTI4LCAxMTg4NjcsIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgNzg4LCA3NDAyNywgMCwgMTk0NjM4LCAKLSAgICAwLCAxNjYzLCAxMDQxOSwgNzQwMjUsIDQyNjM2LCAwLCA2OTcyNSwgMCwgMTIwNjU2LCAwLCA2Nzg3NiwgMCwgMCwgMCwgCi0gICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDAsIDAsIDEwODU1LCA1NDQ1LCAKLSAgICA5MzU1LCAwLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgMCwgMCwgODAxMCwgNzE5MSwgNDk2MiwgNjk3NzIsIAotICAgIDg4NTUsIDAsIDAsIDY0NDY5LCAxMjA0MjYsIDEwNTU1LCAwLCA0MzMzMywgOTIyOTksIDAsIDEyMDQyNywgMTA0NTEsIDAsIAotICAgIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDAsIDEyMDE0NiwgCi0gICAgNDM0MzMsIDQzNjQ5LCAxMTk4NywgMCwgMCwgMTEwMTAsIDEyNzIzLCA3NDA1OSwgNzQwNjIsIDYyMTcsIDU4OTYsIDAsIAotICAgIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1OTUsIDAsIDc0NDAyLCAxMTg4NjAsIDAsIAotICAgIDEyMDQxOSwgOTI0OTcsIDc0MDUyLCAwLCAwLCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIAotICAgIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgMTIwNzMwLCAxOTQ3MDIsIDYyMTYsIDAsIDEwNzU1LCA5NDU1LCAwLCA4MTI0LCAKLSAgICAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyNzU0MCwgMCwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIDAsIDAsIDAsIAotICAgIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAwLCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIDE5OTM2LCAKLSAgICA3ODMzLCAxMjA2OTEsIDAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDEyMDQwOSwgMTI3MDQ0LCAwLCA4NTM3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MTE5OSwgMTAxMjEsIDIwMjgsIDAsIDAsIDY5NzE1LCAwLCAzMDYyLCAwLCA3NDQ0NywgMTI2MDgsIDAsIAotICAgIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMjU4MCwgMCwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCAwLCA3NDA3MSwgMCwgMCwgCi0gICAgMTI3MTMsIDAsIDAsIDAsIDc4NzcyLCAwLCAxNzM0LCAwLCAwLCAxMjcwNDAsIDY0NTk0LCAyNDU2LCAyMzEsIDAsIDc0MTY3LCAKLSAgICA1NDIsIDAsIDExODc4NiwgMCwgMCwgMTIzMCwgMCwgMCwgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgCi0gICAgMTI3OTM4LCA4MzUyLCAwLCA1Njg3LCAwLCA2NDUxNSwgMCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCAwLCAKLSAgICAwLCA3NDI4NCwgMTI4Mjg1LCAwLCA4NjYwLCAwLCAwLCAwLCA3ODc3MywgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCAKLSAgICA5OTA5LCA2MDgwLCAwLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIDAsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIAotICAgIDQ0ODAsIDExMjY2LCAxMjgxNTIsIDEyMjYsIDY5MzAsIDAsIDAsIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCAwLCA3NDc4NSwgCi0gICAgMTIwMzU2LCAwLCAwLCA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA3NDI4MCwgMTA4NzcsIAotICAgIDExODg2OCwgNjQ4ODUsIDc0MjcyLCAwLCAwLCAwLCAxMjA3MzYsIDc0MzEyLCAzNDUsIDAsIDc0NDU2LCA2NDYwNiwgOTkxNywgCi0gICAgMCwgOTIyMzEsIDUwMzcsIDAsIDE3NzYsIDg0MjIsIDAsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIDQzMzI4LCAwLCAKLSAgICA0MjY5OCwgMTI5NSwgMCwgNDYyNSwgMCwgNDYzMCwgMTMxMTcsIDAsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAKLSAgICAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCA0MjUyLCA1MDQ5LCA0MjY1OSwgCi0gICAgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCAwLCA2NTQxOSwgMCwgMCwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDAsIAotICAgIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAwLCA3MDE3LCA0Mjg1MiwgMCwgCi0gICAgODE1NywgOTczNiwgNjQ1MDMsIDY1NDE4LCAwLCAwLCA3NDAzNSwgMCwgMTE5MTMsIDczODc0LCA2Njk2LCAwLCA4OTIwLCAwLCAKLSAgICAwLCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDAsIDAsIDEwMTc3LCA3Mzc3NywgMTg1NywgMCwgCi0gICAgNDYyNiwgODQ2NCwgODQ3MiwgMCwgNDYyOSwgODQ5OSwgNzgzMjEsIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTkxNzMsIDAsIDAsIAotICAgIDc4MDUsIDAsIDAsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIDExOTA0NiwgODQ5MiwgCi0gICAgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgMCwgMCwgNzgzMzYsIDc4MzM5LCA5NTQzLCA3ODMzNSwgNzgzMzIsIDc3ODMyLCAKLSAgICA2NTg0OSwgNzc4MzEsIDAsIDAsIDEyNDUxLCAwLCA4Njg0LCAwLCA2MTAyLCAwLCA1Mjk4LCAwLCA1Mjk0LCAwLCAwLCAwLCAKLSAgICAxOTUwNjIsIDk5NDksIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgCi0gICAgMTIwNjE3LCA3NDM5NywgNDE0NjgsIDAsIDAsIDUyOTIsIDU1MjcyLCAwLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzksIAotICAgIDEyNDU1LCAxNzkzLCAwLCAwLCAwLCA2NjQzLCA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCAKLSAgICAwLCAxMzIxOSwgOTU2OSwgMCwgNzQzODMsIDAsIDAsIDAsIDU1MDAsIDg4MTMsIDAsIDAsIDc0NTY2LCA1MzIyLCAwLCAKLSAgICA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgNDMzMjQsIAotICAgIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDAsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIAotICAgIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCAKLSAgICA0MTgxNSwgNDExNTAsIDAsIDEwNTcxLCAxMDA5NiwgMCwgMCwgNzgwNzQsIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIAotICAgIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA3NDQ2NiwgMCwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCA0MzMyNSwgMCwgCi0gICAgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIAotICAgIDEyNzM4MywgMzE1LCAxMjgxMywgMCwgNzg0MzIsIDc4MjU2LCA3ODM1MSwgNzgzNTIsIDAsIDAsIDAsIDAsIDEzNzgsIAotICAgIDk1MDksIDAsIDAsIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCA3ODM2NSwgODc4NywgMTIwMzc5LCAKLSAgICAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAxOTQ2MTIsIDAsIDc4MzY2LCAKLSAgICA0MjA4OCwgMCwgMTk1MDYxLCA3MTc2LCAxMjg4MzMsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDc0NTM0LCA4MTE5LCAKLSAgICA2NDg3NCwgOTE3ODE2LCAxMjcxOTksIDE5NDkzOSwgMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAxMzk0LCA3NDUxNCwgMCwgCi0gICAgNzQ1MTUsIDAsIDExODgwNCwgMjk5OCwgOTUyNywgMTIwNjU5LCA2NTE5MCwgMTI5NzcsIDQyMDkwLCAxMTkxNjUsIDAsIAotICAgIDExOTEwMCwgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCA1ODQ4LCAwLCAwLCAzNjcwLCAxMjg2NTcsIAotICAgIDE5NDYwMCwgMCwgMCwgNzg5MCwgMCwgMTEyOTgsIDQzMzE1LCAwLCA2MjI5LCAxNTkzLCAwLCAwLCA2MTksIDQ2MzUsIAotICAgIDY1MDgwLCAwLCAxMjgwMDIsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMCwgMTE4MDgsIDExOTIxNCwgNzQxMTUsIDkzNjYsIAotICAgIDQyNzkwLCA0MjAwNiwgMCwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAotICAgIDY1MzM1LCA2NTMzNCwgNjUzMzMsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAotICAgIDExODg4NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCAwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAotICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDAsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIDQzNTMzLCAKLSAgICA3ODQ1OSwgNzE4OSwgMCwgMCwgMCwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgMCwgNDYxNSwgMTI2OTUsIAotICAgIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAwLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgCi0gICAgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMCwgMCwgMTAzNywgMCwgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIAotICAgIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDAsIDI4MzUsIDAsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDEyNzE5MSwgMCwgMCwgCi0gICAgMTI2MDYsIDc4NDMzLCAyODI1LCAwLCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCAwLCAwLCAxMjA1OTMsIAotICAgIDEzMDcxLCAwLCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAwLCAKLSAgICA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAxNjY4LCAwLCAwLCAwLCAxMTg3LCAKLSAgICAwLCA0MjYyOCwgNzg1NzUsIDAsIDEyODc3NywgMCwgMzI0MCwgMTI4NTE4LCAxMjE5NCwgMCwgMTE1OTEsIDQxMDY1LCAKLSAgICA1MzIzLCA4MTY2LCAwLCAwLCAwLCA3NDUzNSwgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAKLSAgICAxMjcyOTUsIDg5MTYsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCAwLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCAxMjczMDAsIAotICAgIDkyMjk2LCA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDAsIDc4ODEsIDcwMSwgNjU5MzYsIDM0ODksIDAsIDAsIDEyMDc1MSwgCi0gICAgMTE0MDMsIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgMCwgMzk5NCwgMTE0MjEsIDAsIDE5NTA3NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDEyNzM2OSwgNjQzODcsIDQxMTUsIDAsIDUwMDUsIDY0MDcwLCAKKyAgICA2NDA3MywgMTA2NzksIDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCAwLCAwLCA4MjUxLCAxMDEzNiwgNjU0MzYsIDAsIAorICAgIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzQxOTIsIDEwNzAxLCAxNzY0LCAzMTAxLCAxMjc4MTUsIDEyODU4LCAKKyAgICAxMjAxNTksIDAsIDExMzczLCA2Mzc4LCAxMjc4NTksIDEyMDEwMywgODY2MywgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDAsIAorICAgIDkyMjIsIDk4MzcyOSwgMCwgNDI1OSwgOTA5MiwgNzQ1NjcsIDQxOTYxLCAwLCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgCisgICAgMCwgMCwgMTI5MywgNzk0NywgMjEzMiwgOTgzNzU4LCA3NDU5MywgMTIwMzA4LCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCAKKyAgICAwLCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgMCwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIAorICAgIDk4MzExNCwgODgyMiwgMCwgMTE1NywgNjQ5MDMsIDg2MzgsIDAsIDAsIDAsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIAorICAgIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIDAsIDY5MjE2LCAwLCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAKKyAgICAxMjc5MTAsIDY0MjkxLCAxMjgwNTEsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDAsIDE5OTEsIAorICAgIDc4ODIsIDQyMjU0LCAwLCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgCisgICAgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCAxMTkzMzQsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKKyAgICA2NjM3MywgMCwgMCwgNjQ5MDgsIDkyNjkxLCA2MzExLCAwLCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgCisgICAgMCwgNDE3MDUsIDkyMTg4LCA2NTk4LCAwLCA2NTk5LCAxMjAzMzQsIDAsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAwLCA2NTk3LCAKKyAgICA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIDY5OTA0LCAwLCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIAorICAgIDAsIDEyMDI0MywgMjMzNiwgOTgzODk0LCAwLCA3ODg3MSwgMTIwNDQyLCA5ODM3NjAsIDE5MjEsIDEwOTQ3LCAxOTkyNywgMCwgCisgICAgNjU0MDYsIDAsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKKyAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAwLCA1Nzc0LCA4MzI1LCAwLCA2NTQwMywgOTgzMDg5LCAxODU0LCAxMDc5NCwgCisgICAgMCwgNjc2NjAsIDY5ODQ2LCAwLCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIDY1NDMzLCA2MDc2LCA2NDc5MywgCisgICAgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgCisgICAgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAKKyAgICAxMjc0NjMsIDY5Nzk3LCAxOTQ2NTIsIDEyNzQ3MywgODQyMSwgMTI3NDcyLCA2OTY4MiwgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIAorICAgIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCAKKyAgICA0MzQ4MCwgOTI2MzksIDQ4NjAsIDEyNjY0OCwgMTI3ODc3LCA0MjQ4OCwgMCwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCAKKyAgICA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3Nzk4OSwgNjM3NTEsIDEyMTM3LCAKKyAgICA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMCwgMTEzMDEsIAorICAgIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgMCwgMCwgNzgwMTYsIAorICAgIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIDkyNzA5LCAKKyAgICAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAKKyAgICAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIAorICAgIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgCisgICAgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAwLCAwLCA5MTE5LCAKKyAgICAyNzg3LCA3OTIwLCAxMTg4MjMsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgMCwgMCwgNzgwMjEsIDc4MDIyLCA0MTAsIAorICAgIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDAsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIDEwMTI2LCAxMjExNiwgCisgICAgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDc4MTQxLCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIDQxMzQ1LCAxMjAzNjIsIAorICAgIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCA2NDg1OCwgMzYxLCAKKyAgICAxMjAzNTcsIDg0NSwgMCwgNDE1NjAsIDExOTcwLCA0NTYyLCA5MTc5MjAsIDI5MjYsIDkxNzkxOSwgNDU2OSwgNzQxMzAsIDAsIAorICAgIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIDY1NjI5LCAwLCAxOTQ4NTgsIDAsIDAsIDEyNzU0NSwgCisgICAgMTIwNTQzLCAwLCAwLCA2MjkxLCAwLCA3ODYzOSwgNDE2NjksIDcwOTQsIDkxNzkyMSwgMCwgOTgzNTgxLCA3NDA1NCwgCisgICAgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgOTgzMzExLCA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgMTk0NjYzLCA0ODU5LCAKKyAgICA2NDQ2NywgMCwgOTgzOTU0LCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIAorICAgIDk4Mzg1NCwgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgCisgICAgNzQyNDUsIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgCisgICAgMTE5MjI5LCAxMTA0OSwgMCwgOTI2OTcsIDQzMjM5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgNjk2NzcsIDExOTQwLCAKKyAgICA2Nzg4OCwgNjY0LCAxMjA0MzcsIDUwMzQsIDAsIDAsIDEyNzUyNSwgNDI3MDIsIDczODg4LCA5ODMxNDksIDEzMjk0LCAKKyAgICA2Nzg3MywgNjQ4NjksIDYwMzIsIDAsIDkxMTUsIDc0MzAsIDEyMDM3NywgMCwgMTIwODE5LCA2ODM4NywgMTIwMTY4LCAKKyAgICA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAxMjAxNjAsIDY0NTI4LCAxMTY5LCA0MzQsIAorICAgIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDExODg2NywgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCAKKyAgICA3ODgsIDc0MDI3LCAwLCAxOTQ2MzgsIDAsIDE2NjMsIDEwNDE5LCA3NDAyNSwgNDI2MzYsIDAsIDY5NzI1LCAwLCAxMjA2NTYsIAorICAgIDAsIDY3ODc2LCAwLCAwLCAwLCA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMCwgCisgICAgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDAsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCAwLCAwLCA4MDEwLCA3MTkxLCAKKyAgICA0OTYyLCA2OTc3MiwgODg1NSwgMCwgMCwgNjQ0NjksIDEyMDQyNiwgMTA1NTUsIDAsIDQzMzMzLCA5MjI5OSwgMCwgCisgICAgMTIwNDI3LCAxMDQ1MSwgMCwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgCisgICAgODM2NywgMCwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCAwLCAwLCAxMTAxMCwgMTI3MjMsIDc0MDU5LCA3NDA2MiwgCisgICAgNjIxNywgNTg5NiwgMCwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCAwLCAwLCAwLCAwLCAwLCAwLCA0MjU5NSwgMCwgCisgICAgNzQ0MDIsIDExODg2MCwgMCwgMTIwNDE5LCA5MjQ5NywgNzQwNTIsIDAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAorICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgNjk5MjAsIDE5NDcwMiwgNjIxNiwgMCwgMTA3NTUsIAorICAgIDk0NTUsIDAsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTI3NTQwLCAwLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgCisgICAgMCwgMCwgMCwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDAsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgCisgICAgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgMTIwNDA5LCAxMjcwNDQsIDAsIDg1MzcsIDAsIAorICAgIDAsIDkzNTQsIDk4MzE2NCwgMTI4ODMzLCA0MTE5OSwgMTAxMjEsIDIwMjgsIDAsIDk4MzE5NCwgNjk3MTUsIDAsIDMwNjIsIAorICAgIDAsIDc0NDQ3LCAxMjYwOCwgMCwgNjY0NDAsIDc1NDUsIDk3MDAsIDEyNTgwLCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIAorICAgIDQxMTU1LCAwLCA3NDA3MSwgMCwgOTgzNDQ5LCAxMjcxMywgMCwgMCwgMCwgNzg3NzIsIDAsIDE3MzQsIDAsIDAsIDEyNzA0MCwgCisgICAgNjQ1OTQsIDI0NTYsIDIzMSwgMCwgNzQxNjcsIDU0MiwgMCwgMTE4Nzg2LCAwLCA5ODM5NzAsIDEyMzAsIDAsIDAsIDM1OTcsIAorICAgIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDEyNzkzOCwgODM1MiwgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIAorICAgIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgMCwgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0OTUsIAorICAgIDAsIDAsIDc4NzczLCA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDAsIDEyMDM1OCwgMTc0NiwgMTMxNSwgCisgICAgODY2NywgMCwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyODE1MiwgMTIyNiwgNjkzMCwgCisgICAgNjc5NzksIDk4MzY4MSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDAsIDc0Nzg1LCA2OTg3NSwgMCwgMCwgNDE1MDAsIDAsIAorICAgIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIDEwODc3LCAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgCisgICAgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDAsIDc0NDU2LCA2NDYwNiwgOTkxNywgMCwgOTIyMzEsIDUwMzcsIDAsIAorICAgIDE3NzYsIDg0MjIsIDAsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCAKKyAgICA0NjI1LCAwLCA0NjMwLCAxMzExNywgMCwgMTI4NzcyLCA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgCisgICAgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgCisgICAgNzc1NCwgMTA4NTQsIDg3MzgsIDAsIDY1NDE5LCAwLCAwLCA2NDksIDY1NDIxLCAwLCA2NjcwMiwgMCwgMTI2NzAsIDEwMTMsIAorICAgIDAsIDY0OTE5LCA3MDUsIDAsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIDAsIDgxNTcsIAorICAgIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgOTgzODY5LCA3NDAzNSwgMCwgMTE5MTMsIDczODc0LCA2Njk2LCAwLCA4OTIwLCAKKyAgICAxMTkyOTgsIDAsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgMCwgMCwgMTAxNzcsIDczNzc3LCAKKyAgICAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCA3ODMyMiwgNDYyNCwgNzgxOCwgCisgICAgMTE5MTczLCAwLCAwLCA3ODA1LCAwLCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCAKKyAgICA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIAorICAgIDc4MzM1LCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgOTgzOTUyLCAwLCAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgCisgICAgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDUxLCAxOTUwNjIsIDk5NDksIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgCisgICAgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDk4Mzc0OCwgMCwgNTI5MiwgNTUyNzIsIAorICAgIDk4Mzg3NCwgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAxMjQ1NSwgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIAorICAgIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCA3NDE5NywgCisgICAgMCwgNTUwMCwgODgxMywgMCwgMCwgNzQ1NjYsIDUzMjIsIDAsIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIAorICAgIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCA0MzMyNCwgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgCisgICAgOTkyNiwgNzE5NywgMCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIAorICAgIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIDQxODE1LCA0MTE1MCwgMCwgMTA1NzEsIDEwMDk2LCAKKyAgICAwLCAwLCA3ODA3NCwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIAorICAgIDc0NDY2LCA5Mzk2NiwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCA0MzMyNSwgMCwgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgCisgICAgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAKKyAgICA5ODM0NTAsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCA5ODM2NDgsIDAsIDAsIDEzNzgsIDk1MDksIDAsIDAsIAorICAgIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCA3ODM2NSwgODc4NywgMTIwMzc5LCAxOTQ2MTYsIAorICAgIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAxOTQ2MTIsIDAsIDc4MzY2LCA0MjA4OCwgMCwgCisgICAgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzQ1MzQsIDgxMTksIDY0ODc0LCAKKyAgICA5MTc4MTYsIDEyNzE5OSwgMTk0OTM5LCAwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIDEzOTQsIDc0NTE0LCAwLCA3NDUxNSwgMCwgCisgICAgMTE4ODA0LCAyOTk4LCA5NTI3LCAxMjA2NTksIDY1MTkwLCAxMjk3NywgNDIwOTAsIDExOTE2NSwgMCwgMTE5MTAwLCAKKyAgICA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIDU4NDgsIDAsIDAsIDM2NzAsIDEyODY1NywgMTk0NjAwLCAwLCAKKyAgICAwLCA3ODkwLCAwLCAxMTI5OCwgNDMzMTUsIDAsIDYyMjksIDE1OTMsIDAsIDAsIDYxOSwgNDYzNSwgNjUwODAsIDAsIAorICAgIDEyODAwMiwgNDEyMCwgNjUzMzcsIDY1MzM2LCAwLCAxMTgwOCwgMTE5MjE0LCA3NDExNSwgOTM2NiwgNDI3OTAsIDQyMDA2LCAKKyAgICAxMTkxMTUsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCA2NTMzNSwgCisgICAgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCA5NDA0NSwgCisgICAgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODM4MjEsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgNjUzMTQsIAorICAgIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMCwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgNDM1MzMsIDc4NDU5LCAKKyAgICA3MTg5LCAwLCAwLCAwLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCAwLCA0NjE1LCAxMjY5NSwgMTI3NzUyLCAKKyAgICAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDAsIDU2MiwgMTIxNjksIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIAorICAgIDMyMTksIDY4NjU0LCA5ODM3NzgsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgCisgICAgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAxMjcxOTEsIDAsIDAsIDEyNjA2LCA3ODQzMywgCisgICAgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgOTgzNzQ0LCAxMjA1OTMsIDEzMDcxLCAwLCAKKyAgICA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAwLCA2NDcwMywgCisgICAgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAxNjY4LCAwLCAwLCAwLCAxMTg3LCA5ODMzNzcsIAorICAgIDQyNjI4LCA3ODU3NSwgMCwgMTI4Nzc3LCAwLCAzMjQwLCAxMjg1MTgsIDEyMTk0LCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIAorICAgIDgxNjYsIDAsIDAsIDAsIDc0NTM1LCAxNjIzLCA2NTI5NywgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgCisgICAgODkxNiwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDAsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDEyNzMwMCwgOTIyOTYsIAorICAgIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgMCwgNzg4MSwgNzAxLCA2NTkzNiwgMzQ4OSwgMCwgMCwgMTIwNzUxLCAxMTQwMywgCisgICAgMCwgMCwgMTI3MTQ2LCAzNzk2LCA2ODAwLCAwLCAzOTk0LCAxMTQyMSwgMCwgMTk1MDc2LCAwLCA5ODM5MTMsIDAsIDAsIAogICAgIDY0ODU3LCAxMjgxMDUsIDI4NTUsIDEyNzgyOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgMTI3MjgzLCAxMjc4MTcsIDEwNjU0LCAKICAgICAwLCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCAxOTQ4MjIsIAotICAgIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCAwLCAKLSAgICA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgMCwgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAwLCA2NDYzNCwgCi0gICAgMTI4Mjc5LCAwLCAxMTYxMiwgMCwgNjc2MDAsIDIzNzQsIDAsIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgNTI4NiwgCi0gICAgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgMTEzMDUsIAotICAgIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCAKLSAgICA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIAotICAgIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIDAsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIDQxMDYyLCAKLSAgICAwLCAwLCAzMjU2LCAxMjg2NDAsIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDkxNzkwNiwgODcyNywgMCwgNjU4NzUsIDAsIDAsIAotICAgIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMCwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDAsIDAsIDM2MzUsIAotICAgIDY0MzM3LCAwLCAwLCAwLCA3MTk1LCAwLCAyMDA3LCA2NDQzMSwgMCwgMCwgMCwgMCwgNjM1LCAwLCAwLCA2NTYxMywgCi0gICAgNzc5MDksIDkyNDIwLCA3Mzk5NywgMCwgMCwgMTE5MjE4LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCAwLCAKLSAgICAyMDM0LCA5MjU1MSwgMTIwODA1LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODg2MCwgNzg1OTYsIDAsIDM2NDksIAotICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgMTE4OTI3LCA2NzY3NywgMTIwMTI0LCA3ODY2LCAwLCAxMTQwMiwgCi0gICAgNDIxNDYsIDEyMDEzNCwgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAxMTgxMiwgCi0gICAgNjUzNzksIDY4Mzg2LCAxMjgxODUsIDExNTksIDAsIDY5NzI5LCAwLCAwLCA3MTc4LCAxOTQ2MzIsIDAsIDQxNjgwLCAwLCAKLSAgICAxMjgyMDMsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDAsIDY3ODc3LCAwLCAxMjk4OSwgNjY0NzQsIAotICAgIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgMTk0NTYzLCAxMDgxOCwgMTI4MjA3LCA5OTUzLCAwLCA3ODQyMSwgMTE5NCwgCi0gICAgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIAotICAgIDQyNzUyLCAxMTkwMjUsIDAsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIDY2NjQ4LCAxOTQ3NjgsIDAsIDY4MzY0LCAwLCA0ODkxLCAKLSAgICAwLCAxMDY0MSwgMCwgNzM3NDYsIDAsIDY4MzUyLCAwLCA3Mzc4NywgMCwgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgCi0gICAgMTM2MiwgMTMyOTcsIDAsIDEyODA5NCwgMCwgMCwgNzM3ODksIDAsIDY2NTgsIDQ0MjYsIDAsIDkyNjI4LCAwLCA5MjMxOSwgCi0gICAgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDAsIDAsIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIDEyNzk3NywgMCwgMCwgCi0gICAgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgNDU0OSwgMCwgMCwgMCwgMTI3NzYzLCAxMDgwNywgOTU1OCwgMTk0NjEzLCAwLCAKLSAgICA4NTE1LCA4Njg4LCAxMjg2NiwgMCwgMzI5NCwgMCwgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDAsIAotICAgIDkyNDU4LCA3Mzc1NywgNjY0NTYsIDQyMzU5LCAwLCAyMDMxLCAwLCA3MjAyLCAwLCAxMjY3NiwgNDI3MjksIDkyMTk4LCAKLSAgICAzMjE1LCAwLCA3NzEwLCAxNjEwLCA3MzgwMSwgMCwgMCwgNjU2ODIsIDAsIDEyMDUzNywgNjU5MjQsIDk5NzQsIDIyOCwgCi0gICAgNjYzNTQsIDE1MDEsIDAsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAwLCA2NTc5NCwgMTcyNSwgNjU1MzMsIDgxOTYsIAotICAgIDc0NzYsIDc0Mzk5LCAwLCAwLCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCAwLCAwLCA4MTA0LCAwLCA3NDc0LCAKLSAgICA5MjU3MSwgMCwgMCwgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgCi0gICAgNjgwNSwgODYzMSwgMjU0NSwgMTIwNjcyLCAxMjcxNjYsIDAsIDc0MTkwLCAwLCAwLCAwLCA0Mjc2MiwgMCwgNDI5MTQsIAotICAgIDE2NTAsIDI2MiwgMTYzNywgMCwgNzkwMSwgMzIzOCwgMTI4MTczLCA0MTg2MSwgMCwgMCwgNjUxNTgsIDEwODYwLCAwLCAKLSAgICA0MzY1OCwgNzUyNywgMCwgNDMzMTksIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgMCwgMCwgMTE5ODEwLCA3MTk0LCA1MjkxLCAKLSAgICAwLCA0MzY2NiwgMTMxMjksIDAsIDkwODQsIDAsIDg3MzcsIDAsIDEyODgxLCAwLCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgCi0gICAgMCwgMCwgMCwgMCwgMTc5LCA2NTg5NiwgMCwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDAsIDExODk5NiwgMTE5MDA5LCAKLSAgICAyODUwLCA4MDg0LCAwLCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCAxMTk4NDEsIDQyMDcyLCAKLSAgICAxMTk4NDMsIDExOTg0MiwgMTAzOTgsIDAsIDAsIDgzNzcsIDEyNzExNiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKLSAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDExOTg1NiwgMjkyLCAxMzAwMiwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAotICAgIDkyNDYzLCA0NjEyLCAxMTk4NTEsIDExOTg1MCwgNzI1MywgMTI3MTEwLCA2ODM5MSwgMCwgMTA3ODIsIDM2MzcsIDEyOTk2LCAKLSAgICA0MzU0MiwgMCwgNjQ1NzgsIDAsIDMyMjgsIDY5NjM2LCA4NzgzLCAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCAKLSAgICA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIDAsIAotICAgIDY0NTAwLCA0MzY3NCwgMCwgNjQ5NDcsIDE4NTYsIDAsIDAsIDYzNzksIDAsIDAsIDAsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMCwgCi0gICAgMCwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMCwgMCwgMjAzMywgNzg1NzcsIDc4NTc2LCAxOTUwMjYsIDU1MjU0LCA3NzQwLCAKLSAgICAwLCAwLCAwLCA3Mzk2NCwgMCwgMCwgNjc2MTIsIDY1Njc0LCAwLCAwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAKLSAgICAxMTc5MCwgNzQwMTksIDAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIAotICAgIDgyNTcsIDAsIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCAKLSAgICA2NjcyMSwgMTEzNDIsIDEyODU2MSwgMCwgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgCi0gICAgMCwgMCwgMTE5NDYsIDAsIDMyNTcsIDAsIDEyMzA3LCAxODQ1LCAwLCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIDEwMDg5LCAKLSAgICA4NzAsIDc2NDgsIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIAotICAgIDQ1NjMsIDAsIDAsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMCwgODY4LCA4NzMsIDc2NDIsIDAsIDg2OSwgODc0LCAKLSAgICA3NjQ0LCAwLCA4NzUsIDc5MCwgMTI4MzAzLCAwLCAwLCAwLCA2NjE4MiwgMCwgNTQyOSwgMCwgNjYxODAsIDAsIDY2MTgxLCAKLSAgICA2ODQ1MiwgMCwgMCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAxOTQ2MjIsIDE1NDcsIDY2MTc2LCA0MjAxMiwgCi0gICAgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAwLCA2NzYzNywgMCwgOTY3OSwgNzQxMjIsIDAsIAotICAgIDAsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAwLCAxODUxLCAwLCAxMjcxODksIAotICAgIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIDAsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDkyNzE0LCAwLCAKLSAgICA5MjMyMSwgNDMzMTgsIDAsIDg4MDksIDExOTk3NCwgMCwgMCwgMTIwNjA0LCAwLCAwLCAwLCAwLCAwLCAwLCA3NDI3LCAKLSAgICA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDAsIDI0MzMsIDAsIDExOTYyMiwgMzM1MiwgNzQzNjMsIDAsIDAsIDc5MywgCi0gICAgNzQ0MDQsIDAsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDAsIAotICAgIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCA5MTc2MjIsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgOTE3NjE4LCAxMjA1OTQsIAotICAgIDc0MDg2LCA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAKLSAgICAxMjU0LCA5MTc2MDUsIDkxNzYwNCwgOTE3NjAzLCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMCwgMCwgMjg0MCwgMCwgCi0gICAgMTE5OTgyLCAwLCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIDEyOTkxLCAwLCAyNjUxLCAxMjg1MjgsIDAsIAotICAgIDkxNzYxMSwgMTI3MDI2LCAxMjg4ODMsIDAsIDAsIDQzNjQ4LCAxMjA4MTIsIDAsIDQzMzIyLCA5MjY2MiwgMCwgMCwgCi0gICAgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgMTI4Nzc5LCAxMjc4MjEsIAotICAgIDExOTk4OCwgNjU2MTAsIDIzOTEsIDAsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIAotICAgIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgMCwgMTI4MjY2LCAKLSAgICA2NDc0OSwgNjc4NTAsIDIxMDcsIDAsIDAsIDQ2MDUsIDEyODE3NCwgMCwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIAotICAgIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAKLSAgICAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgCi0gICAgNDYyNywgMCwgNTIwOCwgMCwgMTI4ODQyLCAxMDMzMiwgNTIxOCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIAotICAgIDczODk0LCAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCA3NDAzMywgMTA1MTYsIDc3OTAsIDU1MjgsIDAsIDQyMTQwLCAKLSAgICAxMjAyODEsIDAsIDAsIDQzNTQ1LCA5ODg3LCAwLCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgCi0gICAgNzg4NCwgMCwgMTI4NTY2LCA5MTc5ODksIDEyODY2NiwgMjExLCAyNTA5LCAwLCAxMjA1NzMsIDY4NjcyLCAzMjIwLCAKLSAgICA0MjIzNSwgMCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIDU4NTIsIDAsIAotICAgIDAsIDEyNzI1OSwgMTcwOCwgMCwgMCwgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCA0Njk4LCA2NjUwOSwgMTA2NiwgCi0gICAgMTE5OTIxLCA0NzAxLCAwLCAxMjAyODUsIDc0MjI1LCAxMTkxMTQsIDgyNjcsIDAsIDEyNzI2NSwgMCwgNzUxNiwgMCwgCi0gICAgMjYyNSwgMCwgODAzNCwgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAKLSAgICAxMjY2MCwgMCwgMCwgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCAKLSAgICA3OTkwLCAwLCAzOTkwLCAwLCAwLCA2NjM2OCwgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDExOTE0NCwgMTAzMCwgMTE4ODAwLCAKLSAgICAwLCA5NTEzLCA0MTA1OSwgOTM1NywgMCwgMTc3MywgMCwgMTIwMzUwLCAwLCA2MzM5LCA3NzQ1LCA5ODQ0LCAwLCA2NDY1MCwgCi0gICAgOTQsIDE4ODAsIDc0NzY2LCAwLCA4OTA4LCAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAwLCAKLSAgICA0MTMwNywgODczMiwgMTIwMzM4LCAwLCAxNzU3LCA2OTY0LCA0Njk2LCAwLCAwLCA2NDc4NSwgNzM5NCwgMzY0MSwgNTQxOSwgCi0gICAgMTI4MDU1LCAwLCAxMjc4ODMsIDAsIDEyMDM0NCwgNDM5ODgsIDAsIDg2MTAsIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCAKLSAgICA5MzYsIDEzMjg5LCAxMjc1MjEsIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAxNTA0LCAxMTkxMDgsIAotICAgIDAsIDEyOTEzLCA3NDIwNiwgNzUyOSwgMCwgMCwgMCwgMTIwNzgyLCA0MTEzLCAwLCAyMzcyLCAzMzYsIDAsIDc1MDksIAotICAgIDEyMTUyLCAwLCA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAwLCAwLCA4MDMzLCAwLCAwLCAKLSAgICA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIDAsIDAsIDE5NDY5MywgMCwgMTE5MjQ3LCAwLCAwLCAKLSAgICA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDAsIAotICAgIDAsIDc0MjM5LCA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCAwLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMCwgCi0gICAgMTA0OTgsIDIwODMsIDc3ODg4LCAwLCAwLCAxMTkyMzYsIDYzNCwgMCwgMCwgMCwgNjk3NzksIDQxNjUsIDg3NDYsIDAsIAotICAgIDk2NTQsIDEyODU2LCA2OTI0LCAwLCA3MDY2LCAwLCAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIAotICAgIDQxMDM5LCAwLCAwLCA2ODAsIDYyNzQsIDEyODIwMCwgMTE4MSwgNzA1NiwgMzE3NCwgMCwgMCwgOTI2NjgsIDY1NjY1LCAKLSAgICAxMjczNzUsIDAsIDY5MjAsIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIDAsIDAsIDQxMDI4LCAwLCAKLSAgICA2MjMxLCAyNjEzLCA2NTMwMiwgNDA5ODksIDAsIDE5NDY5NiwgMCwgNDI3NjAsIDAsIDAsIDAsIDQwOTg3LCA0NjY3LCAwLCAKLSAgICAwLCA4ODI4LCAwLCAwLCAxMjQ2LCA0NzQ2LCAwLCAwLCAxMTAyMSwgNDc0OSwgOTI2NzUsIDAsIDkyMSwgNDc0NCwgMCwgCi0gICAgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMCwgNjQ2NTMsIDc4Mzg2LCAxMjgxMjEsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIAotICAgIDUzMTMsIDk1MSwgMCwgMCwgMCwgNzYwNCwgMCwgNDAwOSwgMTI3ODE2LCAwLCAxMjA1NjIsIDAsIDAsIDY0ODYwLCAKLSAgICAxMTkxMzgsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCAwLCAwLCAxMjA1OTYsIDE2NDYsIDc3ODkwLCA2NDUzNCwgNzM5OTUsIAotICAgIDEyMDcwNSwgMCwgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAotICAgIDI5NzUsIDc0NDQyLCA5ODIyLCAwLCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIDkxNzU2MiwgMCwgMzM5OSwgCi0gICAgOTg1MSwgMCwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDAsIDAsIDAsIDAsIDAsIDAsIDE3NzcsIDkxNTEsIAotICAgIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgCi0gICAgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAwLCA1MTksIDAsIDExNzQwLCA1NzY2LCAwLCAwLCAKLSAgICAyNjAwLCA4ODQ4LCAxMjAxMzgsIDQxMjk3LCAwLCAzNjY2LCA3NDQ3MywgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgNjk2ODgsIAotICAgIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMCwgMCwgNjk3NjUsIDEyMDc1MCwgMjUyLCAwLCA0MTMwMiwgMCwgMCwgMCwgCi0gICAgNjk3NjMsIDAsIDExNzI5LCA4NzE5LCA5MDYwLCAwLCAxMjAxMzksIDEwNzYxLCAwLCAwLCAwLCAxMTg3OTIsIDExNzM0LCAwLCAKLSAgICAxMTczMCwgMCwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDAsIDAsIDc3NjQsIDAsIAotICAgIDExMDk0LCAxMjA4MjUsIDAsIDAsIDQyODIsIDgyOTgsIDAsIDAsIDAsIDAsIDAsIDY0NDQ5LCAwLCAxMjc1MDksIDYzODU0LCAKLSAgICA4NDU2LCAwLCA3NDc4MywgNjU2NzAsIDAsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMCwgMCwgMCwgMCwgCi0gICAgMTIwNzY0LCAwLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDAsIDAsIDM2NDcsIDAsIDI2MDIsIDEyODM0MSwgMCwgCi0gICAgMTk0NzA3LCA0MTEzNSwgMCwgMCwgMCwgNjQ2MzEsIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAKLSAgICAwLCA5MjE5MywgNzU5NywgMTA1MjgsIDAsIDAsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDAsIDQzMzY2LCA0MzM2MywgCi0gICAgOTA2MiwgMTE5MjUyLCAwLCAwLCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDAsIDAsIDE5NDcxMiwgMTA5MDAsIDQxNTMxLCAKLSAgICAxMjYzLCAzNzIwLCAxMjA0OCwgMCwgNjQyOTIsIDQxNTI0LCA3MjI3LCAxMTk2MzUsIDYwOTksIDQxNTM0LCAwLCAxMjczNTQsIAotICAgIDEyNzM0NSwgMjk5LCAwLCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCA5MjU2NCwgMzA3NSwgCi0gICAgNjc4NjcsIDEyNzM1MiwgMCwgNjYzNjIsIDAsIDY0MzUzLCAwLCAwLCA1ODQ1LCAwLCAwLCAwLCAyNTgxLCA4MjAwLCAKLSAgICA2NTExNCwgNjg0NjAsIDAsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDAsIDYzNDAsIDExODg1NSwgMCwgNzgxMzQsIDg2ODAsIAotICAgIDcyMDQsIDAsIDI1ODgsIDI5MTQsIDcwMTEsIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgCisgICAgNzQyNzAsIDEyODI4OSwgMCwgMCwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCAxMjc5MDUsIDg0NjYsIAorICAgIDk4MzU3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDAsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMCwgCisgICAgNjQ2MzQsIDEyODI3OSwgMCwgMTE2MTIsIDAsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgMTE2MDksIDY2MzEzLCAwLCAwLCAKKyAgICA1Mjg2LCAxMTkyOTcsIDAsIDAsIDY0OTI1LCAxMjAyODMsIDE5NDU4NCwgMTE4OTgyLCAxOTQ1ODMsIDc3MDUsIDExOTQyLCAKKyAgICAxMTMwNSwgMTk0NTgxLCAzMzA5LCAwLCAwLCAwLCAwLCA2ODAyLCAwLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIAorICAgIDAsIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDAsIDAsIDAsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDAsIDEyOTE0LCA0MTQ5MSwgCisgICAgNjYwMTAsIDExOTU1MiwgNjA3OCwgOTk1NCwgMCwgMTQ3NSwgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCAKKyAgICA0MTA2MiwgMCwgMCwgMzI1NiwgMTAxODksIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDkxNzkwNiwgODcyNywgMCwgNjU4NzUsIDAsIAorICAgIDAsIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMCwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDcxMzUxLCAwLCAKKyAgICAzNjM1LCA2NDMzNywgOTgzMjczLCAwLCAwLCA3MTk1LCAwLCAyMDA3LCA2NDQzMSwgMCwgMCwgMCwgMCwgNjM1LCAwLCAwLCAKKyAgICA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgMCwgMCwgMTE5MjE4LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCAKKyAgICA0MTc2LCA3MDA1MCwgMjAzNCwgOTI1NTEsIDEyMDgwNSwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg4NjAsIAorICAgIDc4NTk2LCAwLCAzNjQ5LCAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDExODkyNywgNjc2NzcsIDEyMDEyNCwgCisgICAgNzg2NiwgMCwgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAKKyAgICAxNzYxLCAxMTgxMiwgNjUzNzksIDY4Mzg2LCAxMjgxODUsIDExNTksIDAsIDY5NzI5LCAwLCAwLCA3MTc4LCAxOTQ2MzIsIDAsIAorICAgIDQxNjgwLCAwLCAxMjgyMDMsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDAsIDY3ODc3LCAKKyAgICAxOTQ1NjcsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgMTA4MTgsIDEyNjY0NCwgCisgICAgOTk1MywgMCwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIAorICAgIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTk0NzY4LCAKKyAgICAwLCA2ODM2NCwgOTgzMjIyLCA0ODkxLCAwLCAxMDY0MSwgMCwgNzM3NDYsIDAsIDY4MzUyLCAwLCA3Mzc4NywgMTk0ODI5LCAKKyAgICAxOTQ2MzMsIDcxOTksIDY0OTU1LCAwLCAwLCAwLCAwLCAwLCA0MjY4NSwgNDI2NzksIDE5MywgMCwgMCwgMCwgNDI2NjcsIDAsIAorICAgIDUyNzEsIDkyMzE4LCA5MjUxNywgMTE4ODgyLCAxMzYyLCAxMzI5NywgMCwgMTI4MDk0LCAwLCA5ODMzMjMsIDczNzg5LCAwLCAKKyAgICA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgOTgzODMzLCA5MjMxOSwgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDAsIDk4MzMyMiwgCisgICAgMjQxNiwgMzMxMCwgNDI3MDMsIDAsIDM3OSwgMCwgNDM3NTUsIDAsIDAsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAorICAgIDQ1NDksIDAsIDAsIDk4MzE1NCwgMTI3NzYzLCAxMDgwNywgOTU1OCwgMTk0NjEzLCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCisgICAgNjUzMDgsIDMyOTQsIDk4MzMyNCwgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDAsIDkyNDU4LCAKKyAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAwLCAyMDMxLCAwLCA3MjAyLCAwLCAxMjY3NiwgNDI3MjksIDkyMTk4LCAzMjE1LCAwLCAKKyAgICA3NzEwLCAxNjEwLCA3MzgwMSwgMCwgMCwgNjU2ODIsIDAsIDEyMDUzNywgNjU5MjQsIDk5NzQsIDIyOCwgNjYzNTQsIDE1MDEsIAorICAgIDAsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAwLCA2NTc5NCwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCAKKyAgICAwLCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCAwLCAwLCA4MTA0LCAwLCA3NDc0LCA3Nzk3OSwgMCwgMTI2NTA3LCAKKyAgICAxMDQxNCwgMTMwMDEsIDgxNDEsIDAsIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAKKyAgICAyNTQ1LCA3MDA1MiwgMTI3MTY2LCAwLCA3NDE5MCwgMCwgMCwgOTgzNzc3LCA0Mjc2MiwgMCwgNDI5MTQsIDE2NTAsIDI2MiwgCisgICAgMTYzNywgMCwgNzkwMSwgMzIzOCwgMTI4MTczLCA0MTg2MSwgMCwgMTI4NTg1LCA2NTE1OCwgMTA4NjAsIDk0MDU5LCAKKyAgICA0MzY1OCwgNzUyNywgMCwgNDMzMTksIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgOTM5ODksIDAsIDExOTgxMCwgNzE5NCwgCisgICAgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAwLCA5MDg0LCAwLCA4NzM3LCAwLCAxMjg4MSwgMCwgMTI5MDYsIDk2MzksIDc5MTIsIAorICAgIDI2MjAsIDAsIDAsIDAsIDk4Mzg2NiwgMTc5LCA2NTg5NiwgMCwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDk4Mzg4MSwgCisgICAgMTE4OTk2LCAxMTkwMDksIDI4NTAsIDgwODQsIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCAKKyAgICA3NDc1NCwgMTE5ODQxLCA0MjA3MiwgMTE5ODQzLCAxMTk4NDIsIDEwMzk4LCA5ODMwNTYsIDAsIDgzNzcsIDEyNzExNiwgCisgICAgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDExOTg1NiwgMjkyLCAxMzAwMiwgCisgICAgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIDkyNDYzLCA0NjEyLCAxMTk4NTEsIDExOTg1MCwgNzI1MywgMTI3MTEwLCAKKyAgICA2ODM5MSwgMCwgMTA3ODIsIDM2MzcsIDEyOTk2LCA0MzU0MiwgMCwgNjQ1NzgsIDk4MzY2NiwgMzIyOCwgNjk2MzYsIDg3ODMsIAorICAgIDAsIDExOTYxNCwgMjczMSwgMCwgMCwgNzg1ODUsIDQxMDIsIDc2OTYsIDczODc4LCAwLCAwLCA3ODU4NiwgNDMzMTYsIAorICAgIDQxNzcsIDExMjgzLCA5MDg5LCAwLCA3Mzk5NiwgOTgzMTczLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAwLCAwLCAKKyAgICA2Mzc5LCAwLCAwLCAwLCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTIyLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAKKyAgICAwLCAwLCA5ODM2NzQsIDIwMzMsIDc4NTc3LCA3ODU3NiwgMTk1MDI2LCA1NTI1NCwgNzc0MCwgMCwgMCwgMCwgNzM5NjQsIDAsIAorICAgIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCAKKyAgICA3NDAxOSwgMCwgMTI4MDY2LCAxMjgwMzEsIDg1NjEsIDQ1NzMsIDAsIDUzMjYsIDAsIDEyMDYwNSwgNzIzMCwgODI1NywgMCwgCisgICAgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCAwLCA3NjI4LCA2NTA5MiwgNzM5MDMsIDY2NzIxLCAKKyAgICAxMTM0MiwgMTI4NTYxLCAwLCAwLCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCA5ODM5NDIsIAorICAgIDEyNjQ2OSwgMTE5NDYsIDAsIDMyNTcsIDAsIDEyMzA3LCAxODQ1LCA5ODMxNTcsIDQzNTI2LCAwLCAwLCAxODg2LCA0MjM0MiwgCisgICAgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgODYwOSwgNzY1MiwgODc2LCA4NzEsIDg3NywgMCwgODc4LCA0MjAxNSwgODc5LCAKKyAgICA0MzY5MiwgNDU2MywgMCwgMCwgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCAxMjY2MDcsIDg2OCwgODczLCA3NjQyLCAKKyAgICAwLCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIDc5MCwgMTI4MzAzLCAwLCAwLCAwLCA2NjE4MiwgOTgzMjUwLCAKKyAgICA1NDI5LCAxOTUwNTUsIDY2MTgwLCAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjgxLCA5ODMyNDIsIDQyMDY3LCAwLCAKKyAgICA1NDMzLCAxMDY1NywgNzkxMSwgMTk0NjIyLCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgCisgICAgNTMxNywgNTQyMywgNDYxMSwgMCwgNjc2MzcsIDAsIDk2NzksIDc0MTIyLCAwLCAwLCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIAorICAgIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMCwgMTg1MSwgMCwgMTI3MTg5LCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAKKyAgICA5ODMyNzAsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDkyNzE0LCAwLCA5MjMyMSwgNDMzMTgsIDAsIDg4MDksIAorICAgIDY5ODgxLCAwLCA5ODMxNDIsIDEyMDYwNCwgOTgzMDUyLCA5ODM4NzMsIDAsIDk4MzI2MiwgMCwgMCwgNzQyNywgOTk1OCwgCisgICAgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxOTQ5NjgsIDI0MzMsIDAsIDExOTYyMiwgMzM1MiwgNzQzNjMsIDk4Mzg3NiwgMCwgCisgICAgNzkzLCA3NDQwNCwgMCwgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDEyODUxOSwgODIwOCwgMCwgNDE2OTUsIDE2NDcsIAorICAgIDExODg3NywgMCwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDE5NDYyOCwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCAKKyAgICAxMjY1NzYsIDEyMDU5NCwgNzQwODYsIDkxNzYxNSwgOTE3NjE0LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgCisgICAgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDkxNzYwNSwgOTE3NjA0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIAorICAgIDEyNjYxMiwgMCwgMjg0MCwgMCwgMTE5OTgyLCA5ODM5MzAsIDAsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMCwgMCwgCisgICAgMTI5OTEsIDAsIDI2NTEsIDY4MDE2LCA5ODMyNTcsIDkxNzYxMSwgMTI3MDI2LCAxMjg4ODMsIDAsIDAsIDQzNjQ4LCAKKyAgICAxMjA4MTIsIDAsIDQzMzIyLCA5MjY2MiwgMCwgMCwgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgCisgICAgNzQ1MiwgMzI4NSwgMTI4Nzc5LCAxMjc4MjEsIDExOTk4OCwgNjU2MTAsIDIzOTEsIDAsIDkyMjQ4LCA2NzEsIDI1MCwgCisgICAgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgCisgICAgNjI4LCAzOTA1LCA3MzgxMCwgMCwgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDAsIDAsIDQ2MDUsIDEyODE3NCwgCisgICAgOTgzMTkyLCA0MzM3MiwgNjU5NDUsIDEyODgzOCwgMCwgMTE5NTkwLCAwLCAwLCAwLCA5ODcsIDY5MjcsIDExNTcyLCAKKyAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDAsIDEyODI5NywgMCwgMCwgMCwgMCwgMTEzMzQsIDQzMzI2LCAxMjYwOSwgCisgICAgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCA5ODM4ODMsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDUyMTgsIAorICAgIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgCisgICAgNzQwMzMsIDEwNTE2LCA3NzkwLCA1NTI4LCAwLCA0MjE0MCwgMTIwMjgxLCAwLCAwLCA0MzU0NSwgOTg4NywgMCwgNDAwMCwgCisgICAgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIDc4ODQsIDAsIDEyODU2NiwgOTE3OTg5LCAxMjg2NjYsIAorICAgIDIxMSwgMjUwOSwgMTI4ODU4LCAxMjA1NzMsIDY4NjcyLCAzMjIwLCA0MjIzNSwgMCwgMTA2OTAsIDg5NTEsIDUyMTQsIAorICAgIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIDU4NTIsIDAsIDAsIDEyNzI1OSwgMTcwOCwgMCwgOTgzMTY1LCAKKyAgICAyNjIzLCAxMTk0MywgMCwgNjkyMjYsIDAsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg2NywgCisgICAgMTIwMjg1LCA3NDIyNSwgOTQxMTEsIDgyNjcsIDAsIDEyNzI2NSwgMCwgNzUxNiwgMCwgMjYyNSwgOTgzOTY4LCA4MDM0LCAKKyAgICA3NDMwOSwgMCwgMzYzMSwgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMCwgMCwgMCwgNDMzODQsIDEyNjYwLCAwLCAwLCAKKyAgICAwLCA3NDg1MCwgNDEwNjksIDAsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDAsIDM5OTAsIAorICAgIDAsIDk4MzI1NCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgOTgzMTIwLCAKKyAgICA5NTEzLCA0MTA1OSwgOTM1NywgMCwgMTc3MywgMCwgMTIwMzUwLCAwLCA2MzM5LCA3NzQ1LCA5ODQ0LCAwLCA2NDY1MCwgOTQsIAorICAgIDE4ODAsIDc0NzY2LCA5ODM4MjksIDg5MDgsIDAsIDEyODcwNywgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDAsIAorICAgIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzM1LCA2NDc4NSwgNzM5NCwgCisgICAgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIDAsIDEyMDM0NCwgNDM5ODgsIDAsIDg2MTAsIDQzMDYyLCA3NTkyLCAKKyAgICA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCA2OTg5NCwgNDMxNzEsIDE0NTksIDAsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDAsIAorICAgIDE1MDQsIDcwMDY0LCAwLCAxMjkxMywgNzQyMDYsIDc1MjksIDAsIDEyODY5OSwgOTgzOTQ4LCAxMjA3ODIsIDQxMTMsIDAsIAorICAgIDIzNzIsIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDAsIDY4MiwgNjY0NTgsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIAorICAgIDAsIDk4Mzk0NiwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMCwgMTI5NzAsIDAsIDQyMzUxLCAxMDEwOSwgCisgICAgOTE3NjIzLCAwLCAxOTQ2OTMsIDAsIDkyNjkwLCAwLCAwLCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAwLCAKKyAgICAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDAsIDAsIDc0MjM5LCA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAKKyAgICAyMDkwLCAwLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMCwgMTA0OTgsIDIwODMsIDc3ODg4LCAwLCAwLCAxMTkyMzYsIAorICAgIDYzNCwgMCwgMCwgMCwgNjk3NzksIDQxNjUsIDg3NDYsIDAsIDk2NTQsIDEyODU2LCA2OTI0LCAwLCA3MDY2LCA5ODM3MTAsIAorICAgIDAsIDEyODEzNSwgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMCwgNjgwLCAyMzAyLCAKKyAgICAxMjgyMDAsIDExODEsIDcwNTYsIDMxNzQsIDEyNjUxNiwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDEyNjUwNiwgNjkyMCwgCisgICAgMCwgOTIyOTUsIDAsIDExODk2NSwgMCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDAsIDQxMDI4LCAwLCA2MjMxLCAyNjEzLCAKKyAgICA2NTMwMiwgNDA5ODksIDAsIDE5NDY5NiwgMCwgNDI3NjAsIDAsIDk4MzU2NiwgMCwgNDA5ODcsIDQ2NjcsIDAsIDk4MzkyMywgCisgICAgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAKKyAgICAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCAKKyAgICA5NTEsIDAsIDAsIDk4Mzg1OCwgNzYwNCwgOTgzMjgyLCA0MDA5LCAxMjc4MTYsIDk4MzcwMSwgMTIwNTYyLCAwLCA5ODM3MTEsIAorICAgIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDAsIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgCisgICAgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDAsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgCisgICAgMzQ0MSwgMTE5ODk0LCAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTI2LCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIAorICAgIDkxNzU2MiwgMTk0NjEwLCAzMzk5LCA5ODUxLCA5ODM3MDgsIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAwLCAwLCAKKyAgICAwLCA3MTM2NywgMCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjk3NjcsIDc0OSwgNDIzNjYsIDAsIDUzODUsIDEyODU3NCwgCisgICAgMTI4MjE4LCAwLCAwLCA1OTg5LCAwLCAwLCAxMjgwOTEsIDAsIDQxNjg1LCA2OTIyMywgMCwgOTc2OSwgNDE2ODQsIAorICAgIDk4MzIxNCwgNTE5LCAwLCAxMTc0MCwgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgMTIwMTM4LCA0MTI5NywgMCwgMzY2NiwgCisgICAgNzQ0NzMsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDAsIDAsIDY5NzY1LCAKKyAgICAxMjA3NTAsIDI1MiwgMCwgNDEzMDIsIDAsIDAsIDAsIDY5NzYzLCAwLCAxMTcyOSwgODcxOSwgOTA2MCwgMCwgMTIwMTM5LCAKKyAgICAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgOTgzMjIxLCAxMTczMCwgMCwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIAorICAgIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDAsIDAsIDc3NjQsIDk4MzcwNSwgMTEwOTQsIDEyMDgyNSwgMCwgMCwgNDI4MiwgCisgICAgODI5OCwgMCwgMCwgMCwgMCwgMCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDAsIDc0NzgzLCA2NTY3MCwgMCwgCisgICAgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAwLCAwLCAwLCAwLCAxMjA3NjQsIDAsIDEwMDE5LCA3NDc2MiwgMCwgCisgICAgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcwMywgMzY0NywgMCwgMjYwMiwgMTI4MzQxLCAwLCAxOTQ3MDcsIDQxMTM1LCAwLCAwLCAKKyAgICAwLCA2NDYzMSwgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgOTIxOTMsIDc1OTcsIAorICAgIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgMCwgCisgICAgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIAorICAgIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgCisgICAgOTE3OTU3LCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCA5MjU2NCwgMzA3NSwgNjc4NjcsIAorICAgIDEyNzM1MiwgMCwgNjYzNjIsIDAsIDY0MzUzLCAwLCAwLCA1ODQ1LCAwLCAwLCAwLCAyNTgxLCA4MjAwLCA2NTExNCwgCisgICAgNjg0NjAsIDAsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDAsIDYzNDAsIDExODg1NSwgMCwgNzgxMzQsIDg2ODAsIDcyMDQsIAorICAgIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIAogICAgIDczNzc0LCAxMDkxMywgMCwgMCwgODY2NiwgNjc1LCA0MjQ5MywgMCwgNDM1NzEsIDAsIDYyMTksIDAsIDk5ODAsIDQxMjMyLCAKLSAgICAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDEyNzM2OSwgMCwgMTI3MTEsIDMxODEsIDY2MjEyLCAKLSAgICA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCAwLCAwLCAwLCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCAKLSAgICAwLCAwLCA2NDY3NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCAwLCAKLSAgICA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgMTE5MzIsIAotICAgIDczNzI4LCAzMjE0LCAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIAotICAgIDEyNzMyNiwgMTIwNDYwLCA3NDI1LCAzMjA1LCAwLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgNzg3MzMsIDY1NDU5LCAKLSAgICAyNjA2LCA3ODczMCwgNzM4OTcsIDAsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAwLCAwLCAwLCAxMjA3MzcsIDAsIAotICAgIDAsIDAsIDM3OCwgMjYxMCwgMCwgNjUwNzksIDAsIDY1Njk1LCAwLCAzNywgNzA2OCwgMCwgMTIwNDgwLCAxMjA0NzksIAotICAgIDMyMDksIDEyMDQ3NywgMCwgMTA2MzgsIDk3NjgsIDEyMDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNjU1MTAsIDAsIDAsIAotICAgIDUyMzMsIDAsIDY0NzkyLCAwLCAwLCAwLCAwLCA3MDYwLCA5ODQ3LCAxMjAxNDQsIDE2ODUsIDU5NSwgMCwgNzM5NzEsIAotICAgIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCA2NTQxLCAwLCAwLCAwLCAzMjQzLCA5MDE0LCAKLSAgICA1NjA2LCAwLCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCA3NDM5MSwgNjU0NywgMCwgODIwMywgNzg0ODgsIDAsIDg0NTgsIAotICAgIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDAsIDgxOTMsIDU1Mjc5LCAKLSAgICA5NzMwLCA5MjgwLCAwLCA3MDY1LCA3NDE1NSwgNDM0NiwgMCwgNzM3OTgsIDUwNCwgMCwgOTI0MTQsIDg5ODIsIDAsIDAsIDAsIAotICAgIDc4MiwgMCwgMTA4ODMsIDAsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjcyNTMsIDE1NDgsIDY4NjUwLCAwLCAxODMyLCA1NjA0LCAKLSAgICA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCAwLCAxMTc4NywgMzc0NSwgMCwgMCwgNDI4ODgsIDY1NzEyLCAwLCAzODY5LCAKLSAgICAxMTkzNywgNTcyNSwgMTI3NTM5LCAxNzgzLCA2ODY0OCwgNTcyOCwgMCwgMCwgMCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAwLCAKLSAgICA1NzI3LCA3ODUyMSwgMCwgMCwgNzY0LCAwLCAxMjgxMTYsIDQzNTMxLCAwLCA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIAotICAgIDEyMDc0OSwgMTE0MjMsIDAsIDExOTg2MSwgMCwgNDM0NjUsIDAsIDEyODI2NywgNjU1OSwgNjQ1NTcsIDAsIDAsIDEyMDY0OCwgCi0gICAgNDMwMTksIDQzNDc3LCAxMDIzOCwgMCwgMCwgNDMzNzcsIDkyMjgyLCAwLCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgCi0gICAgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgMCwgNDExNDQsIDAsIDkyNDM4LCAKLSAgICA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMCwgMCwgODgyMCwgMzk0NywgMCwgMCwgMTE1MTUsIDUyNiwgMCwgCi0gICAgNDEyOTUsIDE5NDYwMywgOTE3Nzg1LCAxOTQ5MzIsIDAsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDAsIDAsIAotICAgIDAsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDkxNzc4OCwgNzQwMjQsIDEyMjkzLCAwLCA2NDM1NywgCi0gICAgMTE3OTQsIDQyMDgyLCAwLCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgMCwgOTMzNSwgMTI4NTAsIDExOTg3MCwgCi0gICAgNjU1MywgNzA1NSwgMCwgODI3NywgMCwgMCwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDAsIDAsIDEyOTkwLCAxMTYwLCA0MjA4NCwgCi0gICAgMTE5NjUwLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAwLCAwLCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgMCwgCi0gICAgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCAwLCAxMzA3NiwgMzEzNSwgMCwgNzgxNDMsIAotICAgIDExOTEzOSwgMzE0MiwgOTI0NTEsIDAsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCAwLCAyNjA4LCAxNDcwLCA3Mzk2NywgMCwgCi0gICAgNjIyNywgMCwgMCwgNjk3NDEsIDAsIDYxNjMsIDAsIDAsIDEyNzMxNCwgMCwgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAKLSAgICAxMDg3NiwgNDMzOTIsIDExOTU3MywgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAwLCAxMjA4NiwgNzQwMywgMTYwMCwgCi0gICAgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAwLCAyNTcwLCA3MDIxLCAwLCAwLCAKLSAgICA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgMCwgMCwgMCwgNTAwMiwgMCwgNDEyODYsIDAsIDEyNzAxOSwgMCwgNDM1ODUsIAotICAgIDAsIDY1NTEsIDAsIDEyODIyOSwgMCwgNDEyODksIDAsIDE5NDYwMiwgMCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODc3OCwgCi0gICAgMTI4NjYxLCAwLCAwLCA0MTI3OSwgMCwgMCwgMCwgMTEwODEsIDQzNjE1LCAwLCAwLCAwLCAwLCAxMjcyNywgMCwgMCwgCi0gICAgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDAsIDE5NDU3MSwgMCwgCi0gICAgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIDI1OTYsIDQzNTg0LCAwLCAxMzExMywgCi0gICAgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIDQxNTc0LCA3ODMzNywgMCwgNzQwNTgsIDYzNzYsIAotICAgIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDAsIDEyODIyMCwgMCwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgCi0gICAgNjUyOSwgNzA2MywgMCwgMzc1MSwgOTEyMCwgMCwgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgCi0gICAgMTI0MzAsIDgxMzcsIDAsIDkyNjQyLCAwLCAwLCAyNDUsIDEyODA5NywgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCAwLCA2MTM2LCAKLSAgICA5MTc2MDksIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAwLCA0MzIsIDM1OTUsIDAsIDY1NDM3LCAKLSAgICAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgODc5NywgMCwgOTA1MiwgCi0gICAgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgMCwgMTE5MTA0LCAwLCAKLSAgICA3NDEzNywgMCwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCAwLCAwLCAxMDY1LCAwLCAwLCAKLSAgICA0MzQwMCwgMjU3NiwgNjY2OTYsIDAsIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgNTE0LCA3NDUwMiwgMCwgMjkyMSwgNDMyMTUsIAotICAgIDY0NDkzLCA1NzcyLCAxMjk2OCwgMCwgMTk0OTQ0LCA3NDU4MCwgNDMzOTgsIDI1ODAsIDAsIDQxMzQxLCA0MTIyMywgNjU2NCwgCi0gICAgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDAsIDAsIDM3MzMsIDExMzQ2LCAwLCAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAwLCAKLSAgICAxMzA5MSwgMCwgMCwgMCwgOTE3OTE1LCAwLCAxMjcwMjUsIDAsIDc0ODIxLCAwLCAwLCAxMTkwNDIsIDAsIDEyNzg2NSwgCi0gICAgMTMwOTAsIDY2NjQzLCAwLCAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCAwLCAKLSAgICA2NDc2MSwgMCwgNDEwMjEsIDg1MTAsIDQyNDMyLCAwLCAwLCAwLCAwLCA2NDQ5NiwgNzQxMDksIDAsIDk5MTUsIDAsIDAsIAotICAgIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCAKLSAgICA2ODIyMSwgMCwgMCwgMTI3MTcxLCAwLCAwLCAxMjc3OTcsIDkwMjksIDQzNTQzLCAxMTkzMTUsIDIzNTMsIDYzMDgsIDAsIAotICAgIDc0NzkyLCAyNjExLCAxMTkxODYsIDAsIDAsIDAsIDQzNjY0LCA5MjM5OSwgNjY2MjcsIDAsIDQ0ODQsIDg1MDksIDExODk3NiwgCi0gICAgNzgxMTYsIDY1MjMzLCAwLCA0MTIyNCwgNDEwMTcsIDAsIDM3NDcsIDEwNTIyLCAwLCAwLCAxNjkxLCA0MTIyNiwgMCwgCi0gICAgMTIxMDcsIDQ0MDAyLCAxMDkwNSwgNjUwMTAsIDE5NDk4NiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgMCwgMCwgOTI2NDQsIAotICAgIDEzMTIxLCAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMCwgMCwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIAotICAgIDAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAxMTg3ODQsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDEyODAzOSwgCi0gICAgNzEyMywgMCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAKLSAgICAxMjgyNTgsIDAsIDAsIDAsIDEzMTIyLCAwLCAxOTEsIDc0MTE5LCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgCisgICAgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgMCwgMTI3MTEsIDMxODEsIDY2MjEyLCAKKyAgICA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCA5ODMzNzEsIDAsIDk4MzIyMCwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCAKKyAgICA3MjM0LCA3NDA0NywgOTgzMDg4LCAwLCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgCisgICAgNDM5ODMsIDc0NTA3LCA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIAorICAgIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIDEyMDQ2MSwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIAorICAgIDc4NzI5LCAxOTAxLCA3ODcyNywgMTI3MzI2LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIAorICAgIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDAsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgCisgICAgMTE5NjYxLCAwLCAwLCA5ODMzMTMsIDEyMDczNywgMCwgOTgzOTYyLCA5ODMzMTIsIDM3OCwgMjYxMCwgMCwgNjUwNzksIAorICAgIDk4MzMxNywgNjU2OTUsIDEyNjU1OSwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgMTIwNDc5LCAzMjA5LCAxMjA0NzcsIDAsIAorICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA5ODMzOTEsIDAsIDAsIDAsIDAsIDY1NTEwLCAwLCAwLCA1MjMzLCAKKyAgICA5ODMzMjcsIDY0NzkyLCA5ODMzMjYsIDAsIDEyNjYzMywgMCwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIAorICAgIDczOTcxLCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgMCwgMCwgMCwgMzI0MywgCisgICAgOTAxNCwgNTYwNiwgMCwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgNzQzOTEsIDY1NDcsIDEyODEzMiwgODIwMywgNzg0ODgsIAorICAgIDk4MzA5MCwgODQ1OCwgNjUyMTEsIDg0OTUsIDExOTkwNCwgMCwgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgCisgICAgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAwLCA3MDY1LCA3NDE1NSwgNDM0NiwgMCwgNzM3OTgsIDUwNCwgMCwgCisgICAgOTI0MTQsIDg5ODIsIDAsIDAsIDAsIDc4MiwgMCwgMTA4ODMsIDAsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjcyNTMsIDE1NDgsIAorICAgIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgMCwgMTE3ODcsIDM3NDUsIDAsIAorICAgIDAsIDQyODg4LCA2NTcxMiwgOTgzMjk2LCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAxNzgzLCA2ODY0OCwgNTcyOCwgMCwgCisgICAgMCwgMCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAwLCA1NzI3LCA3ODUyMSwgMCwgMCwgNzY0LCAwLCAxMjgxMTYsIDQzNTMxLCAwLCAKKyAgICA5MDMzLCAwLCA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDAsIDExOTg2MSwgNzEzNDQsIDQzNDY1LCAwLCAKKyAgICAxMjgyNjcsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDAsIAorICAgIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMCwgNzczOSwgNzQ1NDMsIDAsIAorICAgIDAsIDAsIDYxMzIsIDAsIDYzNzY1LCAwLCA3MDA1OCwgNDExNDQsIDAsIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIAorICAgIDQzNjksIDkxNzc5MSwgMCwgOTgzMTQ4LCA4ODIwLCAzOTQ3LCAwLCAwLCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAKKyAgICAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCA5ODMzNzQsIAorICAgIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDkxNzc4OCwgNzQwMjQsIDEyMjkzLCAwLCA2NDM1NywgMTE3OTQsIAorICAgIDQyMDgyLCAwLCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgMCwgOTMzNSwgMTI4NTAsIDExOTg3MCwgNjU1MywgNzA1NSwgCisgICAgMCwgODI3NywgMCwgMCwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDAsIDAsIDEyOTkwLCAxMTYwLCA0MjA4NCwgMTE5NjUwLCAKKyAgICA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAwLCAwLCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgOTgzMTcwLCAKKyAgICA0MTIxNiwgNzg0NCwgMjYxNiwgMTE5MTkwLCA2ODQ2MSwgNjUyMzQsIDk4MzI4NiwgMTMwNzYsIDMxMzUsIDk4MzI3OSwgCisgICAgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgCisgICAgNzM5NjcsIDk0MDA4LCA2MjI3LCAwLCAxMjcxNzMsIDY5NzQxLCA5ODM1ODIsIDYxNjMsIDk4MzU1OCwgMCwgMTI3MzE0LCAwLCAKKyAgICAwLCA4NjAzLCAwLCAxMTk4NjYsIDMzMDYsIDEwODc2LCA0MzM5MiwgMTE5NTczLCAxMjc5MzEsIDU3NTEsIDAsIDYyMjIsIDAsIAorICAgIDAsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDAsIAorICAgIDAsIDI1NzAsIDcwMjEsIDAsIDAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCAwLCAwLCA5ODMyMDksIDUwMDIsIDAsIAorICAgIDQxMjg2LCA2OTk0NiwgMTI3MDE5LCAwLCA0MzU4NSwgMCwgNjU1MSwgOTgzOTUzLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAKKyAgICAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIDEyODY2MSwgMCwgOTgzMzY3LCA0MTI3OSwgMCwgMCwgCisgICAgMCwgMTEwODEsIDQzNjE1LCAwLCAwLCAwLCA5ODM2MTIsIDEyNzI3LCAwLCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIAorICAgIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgOTgzODIwLCAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgCisgICAgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAyNTk2LCA0MzU4NCwgMCwgMTMxMTMsIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgCisgICAgOTA4NywgNzQwNjcsIDY4NjczLCA0MTU3NCwgNzgzMzcsIDAsIDc0MDU4LCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAKKyAgICAxMjc3NDgsIDY0Njk2LCAwLCAxMjgyMjAsIDAsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE4MiwgCisgICAgMzc1MSwgOTEyMCwgOTgzNDc3LCAwLCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgCisgICAgODEzNywgOTQwOTgsIDkyNjQyLCAwLCAwLCAyNDUsIDEyODA5NywgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgCisgICAgNjEzNiwgOTE3NjA5LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIAorICAgIDE5NDk0NSwgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgMCwgMCwgMTI4Mjc0LCAwLCAxMTk2NTgsIDAsIDAsIDAsIDc3ODk0LCAKKyAgICA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIDAsIDY0NjQwLCAKKyAgICAwLCA5NDEwOSwgMCwgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCA5MjQ4MCwgMCwgMjU2NiwgMTE5NzEsIAorICAgIDk4MzcyOCwgMCwgMTA2NSwgMCwgMCwgNDM0MDAsIDI1NzYsIDY2Njk2LCA5Mzk5OSwgMCwgNDM2MDQsIDAsIDAsIDc0MDgyLCAKKyAgICA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgNDMyMTUsIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzQ1ODAsIAorICAgIDQzMzk4LCAyNTgwLCA5ODM4MDEsIDQxMzQxLCA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAwLCAKKyAgICAzNzMzLCAxMTM0NiwgMCwgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMCwgMTMwOTEsIDAsIDAsIDAsIDkxNzkxNSwgMCwgCisgICAgMTI3MDI1LCAwLCA3NDgyMSwgMCwgOTgzNzI0LCAxMTkwNDIsIDAsIDEyNzg2NSwgMTMwOTAsIDY2NjQzLCAwLCAxMjcwLCAKKyAgICAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCAwLCA2NDc2MSwgMCwgNDEwMjEsIDg1MTAsIAorICAgIDQyNDMyLCAwLCAwLCAxOTQ3ODIsIDAsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIDk5MTUsIDAsIDk4MzIxNiwgNzA2MSwgCisgICAgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCA0MjMxOSwgMTMwODIsIDAsIDcwNjcsIDY4MjIxLCAwLCAKKyAgICAxMjczODMsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCA3NDc5MiwgCisgICAgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCAKKyAgICA2NTIzMywgMCwgNDEyMjQsIDQxMDE3LCAwLCAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDAsIDEyMTA3LCAKKyAgICA3MTAwLCAxMDkwNSwgNjUwMTAsIDE5NDk4NiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgMCwgMCwgOTI2NDQsIDEzMTIxLCAKKyAgICAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMCwgMCwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDAsIAorICAgIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAxMTg3ODQsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCAKKyAgICA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAKKyAgICAxMjgyNTgsIDAsIDAsIDAsIDEzMTIyLCAwLCAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgCiAgICAgNjQ4NTAsIDQxMDcyLCA0MTU3OCwgMCwgNDE1NzcsIDAsIDEwMDAyLCAwLCA2NTMzLCA3MzgwMiwgNDE1NzAsIDAsIDY4MywgCiAgICAgMzk2LCA0MTU4MCwgNjgxNDYsIDAsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIDc4MTU0LCAwLCAKLSAgICA0NzQzLCAwLCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgMCwgMzczOSwgNjI2MywgOTI1MTQsIAotICAgIDAsIDM5NjQsIDY1OTIsIDAsIDEyODY5MywgNjYwNDAsIDAsIDQyNTY4LCA2OTgwNiwgMCwgMTc3OCwgMzk1NiwgMCwgCi0gICAgNDIwNzAsIDY1NjMsIDQzMDc1LCA5MDE4LCAwLCAwLCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAxMjc5NjksIDAsIAotICAgIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIDExODgyMiwgMTc1MCwgCi0gICAgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDAsIDkyMjk4LCAwLCA1ODg5LCAwLCA3MTgwLCAwLCAxMTkxNDUsIDAsIDkxNzU1OCwgCi0gICAgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIAotICAgIDEyODEwOSwgMCwgMCwgMzg1NSwgMCwgMCwgMCwgMCwgNzQyOTUsIDAsIDAsIDkyNDE2LCAzOTc1LCAwLCA3NDA4NywgMCwgCi0gICAgMTI2NzIsIDM3OTgsIDI3MDMsIDAsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDAsIDQxMDk1LCAzOTYyLCAwLCAyOTMyLCAKLSAgICA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgMCwgMCwgNzM5OTQsIDczOTkyLCAxNDY4LCAwLCAwLCA0MTg1MSwgMTI4MjMwLCAKLSAgICA0MTg0NiwgMCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMCwgMTI4MDMyLCAwLCA0MjUzMSwgMCwgCi0gICAgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCAKLSAgICA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgCi0gICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAKLSAgICAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCAKLSAgICA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgOTIzNDcsIDAsIDQxMzUwLCA5MTI5LCAwLCAwLCAwLCAwLCA5MjQ4OSwgMCwgCi0gICAgMTA0ODEsIDAsIDEyNzQ4NiwgNzE3MSwgMCwgMzQwLCA5MjQ5OCwgMCwgMCwgMCwgOTIyMDAsIDAsIDAsIDY3NjQsIAotICAgIDEyNzQ4NywgMCwgMCwgMCwgMCwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMCwgMzIxMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI3OTcwLCA5MTc2MTksIDAsIDAsIDEwMDQzLCAwLCAxMTg2LCA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjgyNDQsIAotICAgIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCAxOTQ3NjksIDI2MTcsIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAKLSAgICAxMjA1MzUsIDAsIDg2MzAsIDEyODU0NCwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgMjU4NiwgNjQ4ODcsIDAsIDUyMTcsIDAsIDAsIAotICAgIDAsIDAsIDY0MjkzLCA2ODA5OCwgMjYzNSwgMCwgMCwgMCwgMCwgMCwgNzgzNSwgMCwgMCwgMTk0OTg4LCA5MjI4NSwgCi0gICAgNjQ1NTgsIDEyNzEyMiwgMCwgMTI3MTIxLCAwLCAxMjc5MTMsIDAsIDU3ODQsIDAsIDAsIDAsIDAsIDQwMTEsIDkxNzYxNiwgCi0gICAgNjgxMDEsIDAsIDc4NjQsIDQyNTQsIDY1MDk1LCAwLCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCA1NTk4LCAxMjA3LCAKLSAgICAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIAotICAgIDkzMjEsIDAsIDAsIDAsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIAotICAgIDAsIDc2MzEsIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgNTQ5MSwgMCwgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKLSAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAwLCA3MTIyLCAwLCA0MzkwLCA0NTQsIDQxMzk3LCAwLCAKLSAgICA5ODc1LCA3NTkzLCAxOTQ3OTIsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAwLCAzNzQ2LCAKLSAgICAxMTAxNiwgNjU3NTIsIDEyMDAzNywgMCwgNDM0MjMsIDEyODY4MywgMTE5ODksIDAsIDAsIDAsIDAsIDAsIDgyNDksIAotICAgIDEyODE3MiwgMCwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCA1MTMsIDAsIDY1ODYsIDg2NTYsIDAsIDEyNzAwMiwgCi0gICAgNjUwMDgsIDAsIDE5NDc4NCwgMTk0OTg5LCAxOTQ3OTUsIDAsIDkyNTE1LCA2ODQ3NSwgMCwgMCwgMCwgNzg2MzcsIDEyNjQ3LCAKLSAgICAwLCAxMjgwNDMsIDAsIDEwMzYsIDAsIDkyNDE5LCAxNzIzLCAxMjgwNTYsIDAsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgCi0gICAgNzM4NzYsIDAsIDc0NDg2LCAwLCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCAKLSAgICA2ODQzNywgNzgxNDAsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA1NTI2MywgCi0gICAgMTE5MDcsIDE5NTAwMCwgNTY5MCwgOTIyNTUsIDAsIDAsIDQzMTgxLCAxMzA5NSwgMCwgMTI3ODU3LCA2NDQ5OCwgMCwgCi0gICAgOTUwNiwgNjk3OCwgMTk0OTkzLCA3Nzk5MiwgMCwgMCwgMTk0OTkyLCAwLCAxMjc4NDUsIDExMjIsIDMxNywgMCwgMCwgMCwgCi0gICAgMCwgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgNzgzNzgsIDEyMDEyNiwgNTIyMywgMTMwNCwgMCwgMTE5NTY0LCA1MjI2LCAKLSAgICAxMjYwMiwgMCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKKyAgICA0NzQzLCAwLCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgMCwgMzczOSwgNjI2MywgNzEzNDksIAorICAgIDAsIDM5NjQsIDY1OTIsIDAsIDEyODY5MywgNjYwNDAsIDAsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAwLCAKKyAgICA0MjA3MCwgNjU2MywgNDMwNzUsIDkwMTgsIDk0MDA2LCA5ODMzODgsIDEyMDY3LCA0MTMxMiwgMCwgNTU0NywgNzQ1MzEsIAorICAgIDEyNzk2OSwgMCwgODE3NSwgMCwgMjg0LCA4MTA4LCA5MzQsIDAsIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgCisgICAgMTE4ODIyLCAxNzUwLCAwLCA0Mzk0LCA2ODM2OCwgMTgwNywgOTgzODc5LCA5MjI5OCwgMCwgNTg4OSwgMCwgNzE4MCwgMCwgCisgICAgMTE5MTQ1LCAwLCA5MTc1NTgsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCAKKyAgICA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDAsIDAsIDM4NTUsIDAsIDAsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgCisgICAgMzk3NSwgMCwgNzQwODcsIDAsIDEyNjcyLCAzNzk4LCAyNzAzLCA5ODM1OTksIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDAsIAorICAgIDQxMDk1LCAzOTYyLCAwLCAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgMCwgMCwgNzM5OTQsIDczOTkyLCAxNDY4LCAKKyAgICAwLCAwLCA0MTg1MSwgMTI4MjMwLCA0MTg0NiwgMCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMCwgCisgICAgMTI4MDMyLCAwLCA0MjUzMSwgMTE5MTA4LCAxNTEwLCAwLCA4MjU2LCAwLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCAKKyAgICA5MjQ3NCwgODc3MCwgMCwgMCwgNzgzNzcsIDE5MTAsIDg2NzEsIDc4Mzc0LCA0MjgzLCAwLCAxMjcxMTcsIDY4MzYxLCAKKyAgICA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA3LCAwLCAwLCAwLCA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCAKKyAgICA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDAsIDAsIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCAKKyAgICA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAwLCAwLCAKKyAgICA5MjM0NywgOTgzMDg3LCA0MTM1MCwgOTEyOSwgMCwgMCwgMjI5NCwgMCwgOTI0ODksIDAsIDEwNDgxLCAwLCA3MDAyMiwgCisgICAgNzE3MSwgMCwgMzQwLCA5MjQ5OCwgOTM5NzIsIDAsIDAsIDkyMjAwLCAwLCAwLCA2NzY0LCAxMjc0ODcsIDAsIDAsIDAsIDAsIAorICAgIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDAsIDMyMTAsIDAsIDAsIDExODc5NSwgMCwgMCwgMTI3OTcwLCAKKyAgICA5MTc2MTksIDAsIDAsIDEwMDQzLCAwLCAxMTg2LCA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjY2NDIsIDM2NzUsIDUyMDcsIAorICAgIDY1MDYyLCA1MjEzLCAxOTQ3NjksIDI2MTcsIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIAorICAgIDEyODU0NCwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgMjU4NiwgNjQ4ODcsIDAsIDUyMTcsIDcxMzM2LCAwLCAwLCAwLCA2NDI5MywgCisgICAgNjgwOTgsIDI2MzUsIDAsIDAsIDk4MzgzNywgMCwgOTgzNjMyLCA3ODM1LCA3MDA0MCwgMCwgMTk0OTg4LCA5MjI4NSwgCisgICAgNjQ1NTgsIDEyNzEyMiwgMCwgMTI3MTIxLCAwLCAxMjc5MTMsIDAsIDU3ODQsIDk4MzEwMiwgMCwgMCwgNzAwMzMsIDQwMTEsIAorICAgIDkxNzYxNiwgNjgxMDEsIDAsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0ODgsIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIAorICAgIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgMTk0NzgwLCAwLCAxMTI0LCA1NTk3LCAKKyAgICAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDc2LCA5ODM0NzMsIDk4MzQ3NCwgMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCAKKyAgICA5NjcxLCAxMTI1LCA0Mzk5LCAxMjc0NzksIDkxNzYxMCwgOTgzNDgwLCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIAorICAgIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgCisgICAgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCAKKyAgICA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAKKyAgICAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCisgICAgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjA3MTAsIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCA5ODM0NjUsIAorICAgIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDAsIDAsIDc4NjM3LCAxMjY0NywgMCwgMTI4MDQzLCA2OTg5MywgMTAzNiwgOTgzNDY5LCAKKyAgICA5MjQxOSwgMTcyMywgMTI4MDU2LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDAsIDEwNzA1LCA3Mzg3NiwgOTgzNDYxLCAKKyAgICA3NDQ4NiwgOTgzNDU5LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA2ODQzNywgCisgICAgNzgxNDAsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA1NTI2MywgMTE5MDcsIAorICAgIDE5NTAwMCwgNTY5MCwgOTIyNTUsIDkzOTkyLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIDk1MDYsIAorICAgIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIDAsIAorICAgIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCisgICAgMTI2MDIsIDk0MDQ0LCAwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIAogICAgIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCAwLCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgCi0gICAgMTI3NDkwLCAwLCA0MjgxNiwgMCwgNjUxNDAsIDc0Nzk3LCAwLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCAwLCAKLSAgICAwLCAwLCA1Mjk2LCAwLCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCAKLSAgICA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCA0Mzk3NiwgMCwgMTc4NSwgOTI1MDcsIDY4NjIyLCAKLSAgICA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAwLCAwLCA0NTQwLCA0MTE4MSwgMCwgNjIwMCwgMCwgNTEzNCwgMCwgMzIyLCAKLSAgICA0NjQzLCA1MTMyLCAwLCA2Mzg5LCAwLCA1MTQzLCAwLCA4NzkwLCAxMjg2OTQsIDAsIDE5NDgwMiwgMCwgODg2OSwgCi0gICAgMTIwNjAxLCAwLCA0MjA2MCwgMCwgMCwgMTk0ODA0LCAxMjcwMTIsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCAKLSAgICA0MzUyOSwgNjY0NzcsIDAsIDAsIDc0MTcwLCAwLCAzMjM0LCAwLCAwLCA3NDM3NiwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAKLSAgICAxMjA2MjcsIDg3NjcsIDAsIDc0NDg5LCA5Njk1LCAxMjA3NDYsIDUyMDEsIDAsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgCi0gICAgMCwgMTk0OTk5LCA2NTI2OCwgMCwgMCwgMCwgMTEwMjcsIDAsIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgCi0gICAgMTc0OSwgNzg4OTAsIDEyNzA3MSwgMCwgMzIwLCAwLCA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIAotICAgIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIAotICAgIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAKLSAgICAxMjczNDQsIDk1NTQsIDAsIDEyNzc5NCwgMTI3MTA5LCA2NjUzLCAxMjg4MTEsIDAsIDY0NTEwLCA2MjEzLCAxMjg4NSwgMCwgCi0gICAgMTE5MDQ1LCA2NDcyMCwgMCwgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExNDMwLCA0NTY2LCA3ODQzLCA5MzE3LCAKLSAgICAzODAxLCAxMDM0MiwgMTA0MDYsIDAsIDExOTI1OSwgNDI1NzYsIDAsIDUyMDAsIDAsIDkxNzk0OCwgMCwgOTE4MywgCi0gICAgMTI3MzYxLCA3NDQ1OCwgNzM4MjUsIDM5NSwgNTQ4MiwgNTE5OCwgODc4NiwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgCi0gICAgNjExMywgNDIwMDksIDUyMDUsIDAsIDQzMzA3LCAwLCAxMTg5NzMsIDAsIDEyMTM0LCAwLCAwLCAxMTg4NDMsIDkxMjYsIAotICAgIDQzNSwgMCwgMTIwMTQsIDEwMzc3LCA4MDkzLCA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgCi0gICAgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIDAsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgNjgxMTIsIAotICAgIDc4NzIsIDg1ODEsIDAsIDEyNjAsIDMxNDksIDUzNTksIDAsIDAsIDc5MTQsIDUzNTcsIDkyMTcwLCAxMjg2NTksIDI2MjQsIAotICAgIDUzNjQsIDAsIDExNDMxLCAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgMCwgNzgyOTMsIDQyMjcxLCA3ODI4OSwgCi0gICAgNDI5MTcsIDEyMDc5MywgMCwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgzODUsIDc4Mzg0LCA3ODM4MywgNzgzODIsIAotICAgIDc4MzgxLCA3ODM4MCwgNzgzNzksIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCA3NDU4MSwgCi0gICAgMTIwNjMyLCAwLCAwLCA0MTg4OSwgOTI0NTMsIDAsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMCwgMCwgCi0gICAgNzM4MTksIDEyMDU4OCwgNTAxMiwgNzc5MTIsIDQxMzYyLCAwLCA3ODI5NiwgMTE5MjEsIDAsIDExNzY5LCAwLCA2ODYwOSwgCi0gICAgNDEzNjQsIDAsIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAwLCA5MTcsIDY4NDIyLCAxMTk5MTUsIAotICAgIDcxMzQsIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCi0gICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMCwgMTAxOTAsIDEyMDY5OCwgCi0gICAgNjU4MzcsIDEyODgyMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgMTA4NTIsIDAsIAotICAgIDAsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIDAsIDAsIDU4MTUsIDUxNzEsIAotICAgIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzgzMTUsIDQyMzk0LCA0MTg3OCwgNzQ4NDksIDEyMDYyMSwgMCwgNTE2OSwgMTE5MzUsIAotICAgIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCA4OTA1LCA0MTM2LCA0ODcxLCA3ODI4NywgMCwgOTgzMywgCi0gICAgMCwgMCwgMTEyOCwgNjU5MjAsIDAsIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIAotICAgIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIAotICAgIDQxMzg1LCAwLCA0MTM4OSwgOTE3OTM4LCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCAKLSAgICA5NDA2LCA3NjI5LCAwLCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCAwLCAxMDYyNywgNDExMzAsIAotICAgIDc4MjYwLCAzOTk2LCAwLCA3ODc3MSwgMCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCA0MzMyLCA2NDgyNSwgCi0gICAgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCA5MTc5MTgsIDEyMDg1LCAwLCA1NzQsIDkxNzkyMiwgCi0gICAgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjk3MDksIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgNzc4MzQsIAotICAgIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDc3ODM3LCA3NzgzOCwgNzcwOCwgNzc4MzYsIDEwODU5LCA2NTg2NywgCi0gICAgMTAzNDUsIDEwNDA5LCA0MTkxLCAwLCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIDIwNjAsIDAsIDcxMTEsIAotICAgIDExNzg4LCA2NTU4NywgNjgxMjksIDEwNDE1LCA3NDEwMiwgMCwgMjA1LCAwLCAxMDM1MSwgMTE5MDc2LCAwLCA5ODYyLCAKLSAgICA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgMTE5MTU0LCA1NTAzLCA4MDIxLCAwLCA3MTI1LCAKLSAgICA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIAotICAgIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCA3ODI2NywgNDI4NzQsIDg1NTAsIDQyODc2LCAKLSAgICA1NTkyLCAyOTE5LCAwLCAyNjc1LCA1NTk1LCA3ODQxMSwgMCwgNDM2NywgMCwgMCwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgCi0gICAgNzQxNTAsIDcyOTEsIDU1OTAsIDc3ODQ5LCAxMzA2NywgMTE4OTA5LCAxMjAzNzIsIDAsIDk3MzEsIDY5NzMxLCA2NDYzMywgCi0gICAgNzc4NTcsIDc3ODU0LCA3Nzg1NSwgNzc4NTIsIDc3ODUzLCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgCi0gICAgMTI4Mjk2LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIAotICAgIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDAsIDE0NDIsIDAsIDU4OTQsIAotICAgIDAsIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAzMzM0LCAwLCAxMTg4MDMsIDc3ODgxLCA2NjAyMiwgMCwgCi0gICAgMCwgMTY1MSwgMCwgODg2MSwgMCwgMCwgMTE0MiwgMCwgODI3MSwgMCwgMCwgMCwgMTI5MDMsIDAsIDQwMDIsIDQzNjI2LCAKLSAgICAxMDQ0MiwgMTA2NzYsIDMzNDQsIDAsIDAsIDEyOTIwLCAxOTQ1NjAsIDAsIDAsIDY2NjQyLCAxMjc3LCAwLCA3ODcxLCAwLCAKLSAgICAwLCA3ODg1MywgMCwgNzg4NTQsIDEyMDM2MCwgMCwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA2NjM2NiwgNzg4NTgsIAotICAgIDEyMDM1OSwgMTEwMTIsIDAsIDc4ODU2LCA5MjQwMCwgNzc4NzksIDQ5NzMsIDg3ODQsIDc3ODc3LCA3NDgwNCwgNzc4NzQsIAotICAgIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDAsIDQzMTE4LCAwLCA0MjM2NCwgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIAotICAgIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAzMzcyLCAwLCA2MjQ3LCA0MzExNywgCi0gICAgNzQ1MjYsIDcxMjEsIDc0MTY2LCAwLCAxMjAzNTUsIDkyNTM3LCAwLCAwLCAxOTUwMzQsIDAsIDAsIDAsIDc0MjE3LCAzMzU0LCAKLSAgICAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDEyNzk4MywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIAotICAgIDAsIDAsIDAsIDAsIDExNjAzLCAwLCAwLCA2NTg5LCAxMjg1ODgsIDE5NDY3OSwgMCwgMCwgMCwgMCwgMCwgNDI1NzIsIAotICAgIDEyODI2NCwgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTg4ODksIDEyNzk3OCwgMTE2NTQsIDAsIDc1NTAsIDEwNjg2LCA1OTAzLCAKLSAgICAwLCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCAwLCAwLCAxMTAxMywgMTI3OTI3LCAKLSAgICAxMjgzMDAsIDAsIDc4NjIxLCAxOTQ2NzIsIDY5MjUsIDAsIDAsIDkxNzkyOSwgMCwgMTE1NjgsIDAsIDQzMzY3LCA2NDU3OSwgCisgICAgMTI3NDkwLCA5ODM0MzMsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDc0Nzk3LCAwLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIAorICAgIDQxMTc1LCA5ODM0NDAsIDk4MzQzNywgOTgzNDM4LCA1Mjk2LCA5ODM0MzYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIAorICAgIDAsIDAsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDAsIDAsIDEyMTIyLCAxMTk2MDIsIAorICAgIDQzOTc2LCAwLCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCAxOTQ4MTAsIDUxMzgsIDAsIDAsIDExODg2OSwgMCwgNDU0MCwgCisgICAgNDExODEsIDAsIDYyMDAsIDAsIDUxMzQsIDAsIDMyMiwgNDY0MywgNTEzMiwgMCwgNjM4OSwgMTI4NTMzLCA1MTQzLCAwLCAKKyAgICA4NzkwLCAxMjg2OTQsIDAsIDE5NDgwMiwgMCwgODg2OSwgNjk5MTYsIDAsIDQyMDYwLCA3MTMyNiwgOTY0OCwgMTk0ODA0LCAKKyAgICAxMjcwMTIsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDAsIDAsIDc0MTcwLCAwLCAzMjM0LCAKKyAgICAwLCAwLCA3NDM3NiwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDAsIDc0NDg5LCA5Njk1LCAxMjA3NDYsIAorICAgIDUyMDEsIDAsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMCwgMTk0OTk5LCA2NTI2OCwgMCwgMCwgMCwgMTEwMjcsIDAsIAorICAgIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIDEyNzA3MSwgOTgzNjYxLCAzMjAsIDAsIAorICAgIDg2NDcsIDAsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgMTI3MzU2LCAxMjczNTUsIDY2NDc4LCA0OTYwLCAKKyAgICA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgMTI3MzUwLCAzMzUxLCAxMjcwMDYsIDEyNzM1MSwgCisgICAgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIDEyNzM0NCwgOTU1NCwgMCwgOTQwNDgsIDEyNzEwOSwgCisgICAgNjY1MywgMTI4ODExLCAwLCA2NDUxMCwgNjIxMywgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDAsIDEyMDc1OSwgNzM3NDEsIAorICAgIDEyNjAzLCA3MTMxLCAxMTQzMCwgNDU2NiwgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAwLCAxMTkyNTksIAorICAgIDQyNTc2LCAwLCA1MjAwLCAxMjY2MTEsIDkxNzk0OCwgMCwgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNzM4MjUsIDM5NSwgNTQ4MiwgCisgICAgNTE5OCwgNDM0OSwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDAsIDQzMzA3LCAwLCAKKyAgICAxMTg5NzMsIDAsIDEyMTM0LCAwLCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgMCwgMTIwMTQsIDEwMzc3LCA4MDkzLCA5MDc5LCAKKyAgICAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIAorICAgIDk4MzIxMywgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCAwLCA2ODExMiwgNzg3MiwgODU4MSwgMCwgMTI2MCwgCisgICAgMzE0OSwgNTM1OSwgMTIwMTM0LCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCA1MzY0LCAwLCAxMTQzMSwgCisgICAgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIDQyOTE3LCAxMjA3OTMsIDAsIAorICAgIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIAorICAgIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIDEyMDYzMiwgMCwgMCwgCisgICAgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIDczODE5LCAxMjA1ODgsIAorICAgIDUwMTIsIDc3OTEyLCA0MTM2MiwgNjk4NjIsIDc4Mjk2LCAxMTkyMSwgMCwgMTE3NjksIDAsIDY4NjA5LCA0MTM2NCwgMCwgCisgICAgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIDAsIDMzNTYsIDAsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgCisgICAgODE5OSwgNzgzODksIDExOTkxNywgNjc3LCAxMTk5MTYsIDAsIDExOTkzMiwgMTI3MTY5LCAwLCAwLCAwLCAzMzQ5LCAKKyAgICA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgMCwgNTgwMiwgMCwgODYxNSwgMCwgMCwgNDkxLCAxMjg4MTksIDEwMTkwLCAKKyAgICAxMjA2OTgsIDY1ODM3LCAxMjg4MjAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIAorICAgIDEwODUyLCAwLCAwLCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAwLCAwLCAKKyAgICA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIDc0ODQ5LCAxMjA2MjEsIDAsIAorICAgIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgODkwNSwgNDEzNiwgNDg3MSwgCisgICAgNzgyODcsIDAsIDk4MzMsIDAsIDAsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAKKyAgICAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCAKKyAgICA1MTY1LCA1MTI2LCA0MTM4NSwgMCwgNDEzODksIDkxNzkzOCwgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgCisgICAgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCAwLCAKKyAgICAxMDYyNywgNDExMzAsIDc4MjYwLCAzOTk2LCAwLCA3ODc3MSwgMCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCAKKyAgICA0MzMyLCA2NDgyNSwgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCA5MTc5MTgsIDEyMDg1LCAwLCAKKyAgICA1NzQsIDkxNzkyMiwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjk3MDksIDQxMzIyLCA0MjIxMSwgNTQ0MiwgCisgICAgNDE5MCwgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDc3ODM3LCA3NzgzOCwgNzcwOCwgNzc4MzYsIAorICAgIDEwODU5LCA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAwLCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIAorICAgIDIwNjAsIDAsIDcxMTEsIDExNzg4LCA2NTU4NywgNjgxMjksIDEwNDE1LCA3NDEwMiwgMCwgMjA1LCAwLCAxMDM1MSwgCisgICAgMTE5MDc2LCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgMTE5MTU0LCA1NTAzLCAKKyAgICA4MDIxLCAwLCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCA5MjYzNiwgMCwgMTAwMjYsIAorICAgIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCA3ODI2NywgCisgICAgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAwLCAyNjc1LCA1NTk1LCA3ODQxMSwgNDM3NjIsIDQzNjcsIDAsIDAsIAorICAgIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCA0Mzc2MSwgMTMwNjcsIDExODkwOSwgMTIwMzcyLCAKKyAgICA5ODMxMDgsIDk3MzEsIDY5NzMxLCA2NDYzMywgNzc4NTcsIDc3ODU0LCA3Nzg1NSwgNzc4NTIsIDc3ODUzLCA3Nzg1MCwgCisgICAgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgMTI4Mjk2LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCAKKyAgICA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgCisgICAgNTUyNTIsIDczOTcyLCAxNDQyLCAwLCA1ODk0LCA3MDA2OSwgMCwgNDExNzEsIDkyNTExLCA3NDMxMywgMCwgMTMxNjIsIDAsIAorICAgIDMzMzQsIDE5NTAxMCwgMTE4ODAzLCA3Nzg4MSwgNjYwMjIsIDAsIDAsIDE2NTEsIDEyODc3MSwgODg2MSwgMCwgMCwgMTE0MiwgCisgICAgMCwgODI3MSwgMCwgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCAwLCA0MDAyLCA0MzYyNiwgMTA0NDIsIDEwNjc2LCAzMzQ0LCAwLCAKKyAgICAwLCAxMjkyMCwgMTk0NTYwLCAwLCAwLCA2NjY0MiwgMTI3NywgMCwgNzg3MSwgMCwgMCwgNzg4NTMsIDAsIDc4ODU0LCAKKyAgICAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgCisgICAgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCAKKyAgICA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAKKyAgICAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCAKKyAgICA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3MDA4MywgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIAorICAgIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgMCwgMCwgMTE2MDMsIAorICAgIDk4Mzk0NSwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDk4MzY5MSwgMCwgMCwgNDI1NzIsIDEyODI2NCwgCisgICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTI3MDk4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIDAsIDc4MDA5LCAKKyAgICA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDAsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDEyODMwMCwgCisgICAgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgOTgzNjY0LCA0MzM2NywgNjQ1NzksIAogICAgIDkxNzkzMCwgNzg1MiwgMCwgMCwgNjc1NCwgNjMxMiwgMCwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgCi0gICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCAwLCA5NTMyLCAKLSAgICA2NjM1NSwgMCwgMCwgOTE3OTI1LCA2NDM0MywgMTk1MDMyLCAxMjgyODEsIDE5NTAzMSwgMCwgMCwgMTk1MDU3LCAxMTQ0NSwgCi0gICAgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgCi0gICAgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgMzM0MywgNDQyNCwgCi0gICAgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODYyNiwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgNDM5MSwgNjgxMzksIDAsIAotICAgIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAwLCA2NDc1NywgMCwgMzkxMywgMCwgMCwgCi0gICAgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgMCwgMCwgODIyMSwgCi0gICAgNzgzMDcsIDQxODY0LCAwLCAwLCAwLCAwLCAxNjcsIDAsIDc4MzAxLCAwLCA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCAKLSAgICA5MTc1ODMsIDAsIDAsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgCi0gICAgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAKLSAgICAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIDAsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMCwgCi0gICAgOTE3NTc1LCA3ODM0LCA3NDE1OSwgMCwgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTk2LCAxNjM5LCAwLCAwLCAKLSAgICA3NDE1NywgNjMyNywgNjcyNCwgMCwgMTI4MDg2LCA5MjU2NiwgMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIAotICAgIDk2MDAsIDExMDIyLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAKLSAgICAxMjM0MywgNjU3LCAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgCi0gICAgMCwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgCi0gICAgNjc2NTgsIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgCi0gICAgMCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgCi0gICAgMTE2NSwgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzM4NTUsIDY1MTU1LCA0MzAxNCwgNTQzOSwgCi0gICAgOTM2MywgMTI3NTU4LCAzMzc1LCAxMjg4NjksIDU5MDAsIDAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAotICAgIDAsIDAsIDEyNzgxMCwgMTE0MDEsIDAsIDAsIDY4NDU5LCAwLCAwLCAwLCAwLCA2NTQzOCwgMCwgNzI4MCwgMTI3ODg3LCAwLCAKLSAgICAxMjczODEsIDQ4NjgsIDExOTk2NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgMCwgNTE4MiwgMCwgCi0gICAgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMjA3OTgsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCAwLCA5NzcsIDQ0NTgsIDAsIDAsIAotICAgIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxOTQ3OTAsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMCwgNzg2LCAwLCA0MzE3NCwgCi0gICAgNjQzNDAsIDAsIDAsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgNjUwMjUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY4NDQ0LCAwLCA5MjQzNywgMCwgMTE5MTYwLCAxMDIwNCwgOTI2NTYsIDAsIDEyNzgwOSwgMCwgMTM5OSwgMCwgNjUyMTcsIAotICAgIDAsIDg4NTIsIDAsIDI0MSwgMTI4NzgwLCA0OTA3LCAwLCAwLCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAKLSAgICAwLCAwLCAwLCA0Mjc4MCwgMCwgMCwgMCwgNDIxNywgMCwgODY1MCwgMCwgMCwgMCwgMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgCi0gICAgMTE5MTE5LCA2NzE5LCAwLCAxMzMwMCwgNzg0MzksIDEyODI2MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIDAsIDAsIDczODE1LCAKLSAgICA0NDIwLCAwLCA2NDEwLCA3NzYwLCAwLCAwLCAwLCAwLCAwLCA3Mjk0LCAwLCAwLCAwLCA5MDY2LCAwLCAxMTk5MywgNDMxODgsIAotICAgIDI2MjYsIDc3NjIsIDAsIDAsIDAsIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDAsIDc4NTE2LCA2OTE5LCA4NjE5LCAKLSAgICAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyNjk5MywgMTU0MiwgOTIzMDMsIDAsIDAsIDAsIDAsIAotICAgIDc0MzExLCA3ODQ5NywgMCwgMTAxODEsIDAsIDQzNjI0LCAwLCA3Nzc5LCAwLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMCwgCi0gICAgOTIyNjgsIDk2ODksIDAsIDAsIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCAKLSAgICA2OTc4NywgMjAzMCwgMCwgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDAsIDAsIDAsIDAsIDI3MzUsIDQyODMxLCAKLSAgICA3NzkzNSwgMTI3MTIwLCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAwLCAwLCA3Mzk0NiwgMCwgMCwgMCwgNjgxNDAsIDAsIDk1NzYsIAotICAgIDEyODg3MiwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAxMjcwNjMsIDc3MDksIDQxMTEyLCAKLSAgICAwLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgMCwgNjc1OCwgMCwgMTYxNSwgNTg1NSwgODA5LCAwLCAKLSAgICA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIDAsIDAsIDAsIDcyNjAsIDAsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIAotICAgIDc4ODE5LCA2NDM4NiwgNjUyNTcsIDAsIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDEyODA2NywgNjUzMiwgMCwgMCwgMCwgCi0gICAgMTI3MDYwLCA2NTgyOCwgMCwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NjMsIDAsIDAsIDEyMDYwOSwgMCwgMzM3MCwgCi0gICAgMCwgMTEzNjEsIDU0NDMsIDc4Nzc4LCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIDAsIDAsIDAsIDAsIDY1NDk1LCA2NDcwNiwgCi0gICAgMCwgNDMzNDQsIDAsIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCAwLCAwLCAwLCAwLCA5MTUsIDQzNDI1LCAwLCAwLCAwLCAwLCAKLSAgICAxMjcxNzgsIDQzMjY0LCAwLCAwLCAwLCAwLCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgNTE4NiwgMTI4OTAsIAotICAgIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCA3NzgyNiwgMCwgCi0gICAgNDI1NjIsIDAsIDAsIDAsIDEyODUyMCwgMTE0ODUsIDYxMDMsIDEyNzEyMywgMCwgMTE3MTgsIDAsIDEyODg5LCA5MjY1NywgCi0gICAgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAKLSAgICAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgCi0gICAgNjgyMTAsIDAsIDAsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAwLCA1OTU3LCAxMTA1OTMsIAotICAgIDg5MjYsIDAsIDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgCi0gICAgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDAsIDEyODAzOCwgCi0gICAgMCwgMCwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzM4NzksIDE4MDEsIDEyODM1LCAKLSAgICAxMTkwMjksIDAsIDczODIzLCAwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIAotICAgIDAsIDAsIDEyODU3MCwgMTIxMDYsIDAsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKLSAgICA5NTIyLCA3NDA3OSwgNzgyNjYsIDEyMDY3NCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCisgICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCA5ODM2MDUsIAorICAgIDk1MzIsIDY2MzU1LCAwLCA5ODMyMjgsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDE5NTAzMCwgCisgICAgMTk1MDU3LCAxMTQ0NSwgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKKyAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgCisgICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCisgICAgNDM5MSwgNjgxMzksIDk4MzA2MiwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDAsIDY0NzU3LCAKKyAgICAwLCAzOTEzLCAwLCAwLCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIAorICAgIDExNzkxLCAwLCAwLCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIDAsIDAsIDE2NywgOTgzODk3LCA3ODMwMSwgOTgzNjQ0LCAKKyAgICA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCA5MTc1ODMsIDk4MzYyNSwgOTQwNjUsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgCisgICAgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAKKyAgICAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIAorICAgIDk4Mzc2NSwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAwLCA5MTc1NzUsIDc4MzQsIDc0MTU5LCAwLCAKKyAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIDc0MTU3LCA2MzI3LCA2NzI0LCAwLCAKKyAgICAxMjgwODYsIDkyNTY2LCA2OTkxMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIDExMDIyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAxMjM0MywgNjU3LCAKKyAgICAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgMCwgNDQ1NiwgCisgICAgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIAorICAgIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgMCwgCisgICAgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgCisgICAgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgCisgICAgNzAwNzAsIDMzNzUsIDEyODg2OSwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAorICAgIDIyODIsIDAsIDEyNzgxMCwgMTE0MDEsIDk4MzgxMywgMCwgNjg0NTksIDAsIDAsIDAsIDAsIDY1NDM4LCAwLCA3MjgwLCAKKyAgICAxMjc4ODcsIDAsIDEyNzM4MSwgNDg2OCwgMTE5OTY3LCAxMTk5NjYsIDExODc5OCwgMCwgMCwgNDMxNjEsIDAsIDkyMzYwLCAKKyAgICAwLCA1MTgyLCAwLCAxMjA1NDIsIDAsIDAsIDQyMjYsIDExOTI0MywgMTIxMzUsIDU3MzIsIDQ0NjQsIDAsIDcxMzMwLCA5NzcsIAorICAgIDQ0NTgsIDAsIDAsIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxOTQ3OTAsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMCwgCisgICAgNzg2LCAwLCA0MzE3NCwgNjQzNDAsIDAsIDE5NDc2NywgMTIwNzIzLCA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCAKKyAgICA2NTAyNSwgMCwgMCwgMCwgOTM5NTYsIDAsIDY4NDQ0LCAwLCA5MjQzNywgMCwgMTE5MTYwLCAxMDIwNCwgOTI2NTYsIDAsIAorICAgIDEyNzgwOSwgOTgzNjM1LCAxMzk5LCA5ODM2NDMsIDY1MjE3LCAwLCA4ODUyLCAxMjg1NzEsIDI0MSwgMTI4NzgwLCA0OTA3LCAKKyAgICAwLCA5ODM2MzAsIDc5MzIsIDk3MjcsIDEyODg3MywgNzQyNTUsIDg3NDgsIDAsIDAsIDk4MzYzNCwgMCwgNDI3ODAsIDAsIDAsIAorICAgIDAsIDQyMTcsIDAsIDg2NTAsIDAsIDAsIDAsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAxMTkxMTksIDY3MTksIDAsIAorICAgIDEzMzAwLCA3ODQzOSwgOTM5NzEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAwLCAwLCA3MzgxNSwgNDQyMCwgMCwgNjQxMCwgCisgICAgNzc2MCwgMCwgMCwgMCwgMCwgMCwgNzI5NCwgMCwgMCwgMCwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCAwLCAKKyAgICAwLCAwLCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgCisgICAgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAwLCAwLCAwLCAwLCA3NDMxMSwgNzg0OTcsIDAsIAorICAgIDEwMTgxLCAwLCA0MzYyNCwgMCwgNzc3OSwgMCwgMTAxOTUsIDk0NzksIDYwMjksIDAsIDkyMjY4LCA5Njg5LCAwLCA2NTU3NywgCisgICAgODk5MywgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCAwLCAKKyAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgOTgzMzMxLCA5ODMzMzAsIDk4MzMyOSwgOTgzMzI4LCAyNzM1LCAKKyAgICA0MjgzMSwgNzc5MzUsIDEyNzEyMCwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgMCwgNzM5NDYsIDAsIDAsIDAsIDY4MTQwLCAKKyAgICA5ODM5MTksIDk1NzYsIDEyODg3MiwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAxMjcwNjMsIAorICAgIDc3MDksIDQxMTEyLCA5ODMxMzIsIDY2NTYwLCA0MjA0MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCA5ODM3NDksIDY3NTgsIAorICAgIDk4MzkxNywgMTYxNSwgNTg1NSwgODA5LCAwLCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIDk4MzMyMCwgNzAxMDAsIAorICAgIDk4MzMxOCwgNzI2MCwgOTgzMzE2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgCisgICAgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCAKKyAgICA1MzIsIDc4NjYzLCAwLCA5ODM3ODcsIDEyMDYwOSwgMCwgMzM3MCwgMCwgMTEzNjEsIDU0NDMsIDc4Nzc4LCA4MTUzLCAKKyAgICA3Mzc2NywgMCwgMTA3NDEsIDAsIDIyOTgsIDAsIDk4MzkwOCwgNjU0OTUsIDY0NzA2LCA5ODMzMTAsIDQzMzQ0LCA5ODMzMDgsIAorICAgIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCA5ODMzMDMsIDk4MzMwMiwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCisgICAgMTI3MTc4LCA0MzI2NCwgNzAwOTYsIDAsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgCisgICAgNTE4NiwgNzM2MCwgMTI3ODM3LCAwLCAxMjEwOCwgMCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIAorICAgIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAwLCAxMjg1MjAsIDExNDg1LCA2MTAzLCAxMjcxMjMsIDk4MzI5NywgCisgICAgMTE3MTgsIDk4MzI5NSwgMTI4ODksIDkyNjU3LCAxMjcxMzcsIDAsIDAsIDAsIDU1MjQ1LCAwLCAxNjMwLCAxMjgyMzIsIAorICAgIDY1NDgzLCAwLCAxMjU2NSwgMCwgNjU0NzYsIDEyMDAxMywgMCwgMTE5NTU0LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIAorICAgIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCA2ODIxMCwgMCwgMTI4Njc3LCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIAorICAgIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMyOTEsIDk4MzI5MCwgMTI4MjczLCAxMDc0NSwgCisgICAgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIAorICAgIDEyMDc3MywgMCwgOTgxMiwgMCwgNDQ2MCwgMCwgMCwgNzEzMDcsIDEyODAzOCwgMCwgMCwgMTI3MTc0LCA2NDI3OCwgCisgICAgOTIzNzAsIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzM4NzksIDE4MDEsIDEyODM1LCAxMTkwMjksIDAsIDczODIzLCAwLCAKKyAgICA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDk4MzI3OCwgOTgzMjc3LCAKKyAgICAxMjg1NzAsIDEyMTA2LCA5ODMyNzQsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAyOTUxLCAKKyAgICA5NTIyLCA3NDA3OSwgNzgyNjYsIDY2NjA0LCAwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIDc3ODk5LCAKICAgICA3NzkwMCwgODQ1MSwgMCwgMCwgMCwgNjk3MzksIDAsIDAsIDAsIDAsIDI5MDgsIDAsIDQzMzg2LCA2NDkwMiwgNDI0MywgMCwgCi0gICAgMTIyMzksIDAsIDAsIDQ0NDEsIDAsIDAsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAwLCA0MTEsIDAsIDkxOTksIDAsIDQwNTYsIAotICAgIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCAwLCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCA2NDQzNywgCi0gICAgMTI3OTM1LCAxMTg4MTYsIDE5NDc0MiwgOTY4NCwgMjE2LCAwLCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCAwLCAwLCA5MjU4NSwgCi0gICAgOTE1OCwgNzc4NDIsIDEyMDY2NCwgNTc2OCwgMCwgMCwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIDY1ODk1LCAwLCAwLCAzMzM4LCAKLSAgICA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgMCwgMTI4NjgwLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIAotICAgIDUyMjIsIDUzODEsIDQzMTE0LCAwLCA1MTkzLCA1MTI1LCA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCAwLCAwLCAKLSAgICAwLCAzNDMwLCAwLCAwLCAwLCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCAKLSAgICA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIDEyODI1OSwgNjc0LCA2Mzk5MSwgMCwgMjk0NiwgCi0gICAgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgNTI4MSwgNTQ2OSwgCi0gICAgNTEyMSwgMTE5MjQ1LCAxMTg5OTMsIDAsIDUxMzAsIDAsIDAsIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCAKLSAgICA3Nzk5MSwgNTIxNiwgMCwgMCwgMCwgMCwgMzQ2OCwgNzAzMywgOTIzMCwgNTkzOSwgMTk1MDUyLCAwLCAwLCAxMjA2NzcsIAotICAgIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDAsIDAsIDExNzM5LCAwLCAKLSAgICA0MTk4MSwgMCwgNTkzOCwgMCwgMCwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDAsIDEzMDU3LCAwLCAKLSAgICAxMjY5NzYsIDAsIDEwMDA5LCAwLCA0MTcwMywgMCwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgCi0gICAgMCwgMCwgOTI0NTcsIDAsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIAotICAgIDAsIDAsIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCAKLSAgICA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgCi0gICAgNzgyODYsIDExOTk0MywgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIAotICAgIDkxNDEsIDAsIDc4ODUwLCAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgCi0gICAgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAKLSAgICAwLCAwLCAyNzQ0LCAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgCi0gICAgNjYxOTgsIDQxODgwLCA2NjE4OCwgNjYxOTcsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIAotICAgIDczNzg4LCA3Nzg4LCA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCAKLSAgICA3ODE2MCwgNTUyNTksIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCAwLCA2ODYyNSwgMCwgNzI2OSwgCi0gICAgMCwgNTk2NCwgMTI5MDgsIDAsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDAsIDQ0MywgMCwgCi0gICAgNDk0NCwgNTQ2NywgMTE5NjAzLCAwLCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCAwLCAxOTQ5MzEsIAotICAgIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAKLSAgICAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCAKLSAgICA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCAxMTk4MjksIDExOTgzMiwgNDY3NywgCi0gICAgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgNzgxNjYsIAotICAgIDQ2NzQsIDQ1NDgsIDQ0MDA1LCAxMTk5NDksIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDAsIAotICAgIDY4NjY5LCAwLCA5MjQ0NSwgMTI3NTU0LCAwLCAwLCAxMTk2NTIsIDI3NDUsIDExNzk3LCAwLCAxMjgxNTksIDkyMDIsIAotICAgIDQ2NTQsIDAsIDAsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIDY1MjA5LCAwLCAwLCA0NjQ4LCA0MzA4MCwgMCwgMCwgMCwgCi0gICAgNjI0NiwgNjQ5NTAsIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDc4MDA1LCA5MjM4NCwgCi0gICAgNDMxODcsIDg2NjksIDAsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgMCwgMCwgMCwgNjgzNjksIDEyMDA1NCwgCisgICAgMTIyMzksIDAsIDAsIDQ0NDEsIDAsIDk4MzI3MSwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDk4MzI2NywgNDExLCA5ODMyNjUsIAorICAgIDkxOTksIDk4MzI2MywgNDA1NiwgMTE4OTkyLCA0MTg5MCwgMCwgMjczMCwgNDE2MDQsIDk4MzkyOCwgNTQyOCwgMTk0NzQzLCAKKyAgICAzMzY0LCA0MjI2NSwgNjQ0MzcsIDEyNzkzNSwgMTE4ODE2LCAxOTQ3NDIsIDk2ODQsIDIxNiwgMCwgMTQwMSwgMTI4MDUzLCAKKyAgICA0NDAxMiwgMCwgMCwgOTI1ODUsIDkxNTgsIDc3ODQyLCA2OTkwNSwgNTc2OCwgMCwgMCwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAorICAgIDY1ODk1LCAwLCAwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgOTgzMjU1LCA5Mzk2MiwgMjc5NCwgCisgICAgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgCisgICAgNzc4NDYsIDE5NDc0NywgOTUzNCwgMCwgMCwgMCwgMzQzMCwgMCwgMCwgNzg3MTcsIDAsIDk4MSwgMCwgNDMzMCwgNzM5MjksIAorICAgIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDAsIDcwMzQsIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgCisgICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNDMsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKKyAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCAKKyAgICA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIAorICAgIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgCisgICAgMTAzODUsIDQxNzA2LCAwLCAwLCA5ODM0MDUsIDAsIDExNzM5LCA5ODM0MTgsIDQxOTgxLCAwLCA1OTM4LCAwLCA0Mzc2NiwgCisgICAgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDAsIDEzMDU3LCAwLCAxMjY5NzYsIDAsIDEwMDA5LCAwLCAKKyAgICA0MTcwMywgOTgzNjI5LCAxMjE2NSwgMCwgMCwgOTg4NSwgMCwgODA3NywgMCwgMTI3OTA4LCAwLCAwLCAwLCA5MjQ1NywgMCwgCisgICAgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIDAsIDEyODM0MCwgMCwgMCwgMCwgMTA5NzAsIAorICAgIDExNzMzLCAwLCAxMjA3OTIsIDAsIDE5OTQ0LCAwLCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAKKyAgICAyNzI0LCAwLCAwLCAxMjMxMywgMTEwNTkyLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKKyAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgMCwgNzg4NTAsIAorICAgIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgCisgICAgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIAorICAgIDAsIDQ0NzcsIDExODk2NCwgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIAorICAgIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgNzM3ODgsIDc3ODgsIAorICAgIDQ4NDcsIDAsIDEyNzc1OSwgMCwgMCwgMCwgMTU4MSwgNjUzNSwgNzgxNjEsIDEyOTU0LCA0MzAsIDc4MTYwLCA1NTI1OSwgCisgICAgNzgxNTgsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIDk4MzQzMCwgNjg2MjUsIDk4MzQyOCwgNzI2OSwgMCwgCisgICAgNTk2NCwgMTI5MDgsIDk4MzU1NSwgMCwgNzQ3NjQsIDc0NDc3LCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDIxLCA0NDMsIAorICAgIDk4MzQxOSwgNDk0NCwgNTQ2NywgMTE5NjAzLCAwLCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCAwLCAKKyAgICAxOTQ5MzEsIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgCisgICAgODI0LCAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgCisgICAgMTE5ODE5LCA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgMTE5ODMyLCAKKyAgICA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCAKKyAgICA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDExOTk0OSwgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgCisgICAgMTg1NSwgOTgzNDA0LCA2ODY2OSwgOTgzNDAyLCA5MjQ0NSwgMTI3NTU0LCAwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgCisgICAgMTE3OTcsIDk4MzQxMCwgMTI4MTU5LCA5MjAyLCA0NjU0LCA5ODM0MDYsIDk4MzQwOCwgNjg2MzgsIDczOTkzLCAxMDUyNSwgCisgICAgNDY0OSwgNjUyMDksIDk4MzQwOSwgMCwgNDY0OCwgNDMwODAsIDk4MzM5OCwgOTgzMzk5LCA5ODMzOTYsIDYyNDYsIDY0OTUwLCAKKyAgICA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIDQzMTg3LCA4NjY5LCAKKyAgICA5ODM0MDcsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgOTgzMDYwLCA5ODM0MTEsIDAsIDY4MzY5LCAxMjAwNTQsIAogICAgIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA3OTkyLCAwLCAwLCA0NjYyLCA3ODAzMywgNzgwMzIsIAogICAgIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgNzgxMSwgCi0gICAgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIDAsIDAsIDAsIAotICAgIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIDQ4NjcsIDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCAKLSAgICA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAwLCAwLCAwLCAwLCAwLCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIAotICAgIDc4ODg3LCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDc4ODgzLCAwLCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgMCwgCi0gICAgNTk1OCwgMCwgMCwgNDIxNSwgOTc4OSwgOTE3OTQxLCA0MzIxLCA0NjIxLCAwLCA0MTMxMywgNTIyLCA1MzY4LCAwLCAKLSAgICA2NTgwMywgMCwgNTM2NiwgMTIyMDEsIDUzNzIsIDAsIDAsIDAsIDc3MjAsIDczOTAsIDI2OTYsIDAsIDAsIDQ2MzgsIDAsIAotICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCAxOTQ5NjgsIDUzNzYsIDE4MzUsIDUzMzUsIDE5NDk2NiwgCisgICAgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIDk4MzQwMywgCisgICAgMCwgMCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgNDg2NywgMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAKKyAgICAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDk4MzM4NywgOTQwNzAsIDk4MzM4NSwgOTgzMzg2LCAKKyAgICA5ODMzODMsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNzg4ODcsIDEyODgwLCA2NTMwNywgNDYxNywgNzg4ODMsIAorICAgIDk4MzM3OCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDk4MzM3MiwgNTk1OCwgMCwgOTgzNDI1LCA0MjE1LCAKKyAgICA5Nzg5LCA5MTc5NDEsIDQzMjEsIDQ2MjEsIDk4MzM4MSwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgNjU4MDMsIDAsIDUzNjYsIAorICAgIDEyMjAxLCA1MzcyLCAwLCA5ODM0MDEsIDAsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzM5MiwgMCwgNDYzOCwgOTgzMzk3LCAKKyAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTI3ODMzLCA1Mzc2LCAxODM1LCA1MzM1LCAxOTQ5NjYsIAogICAgIDEyODA4OSwgNDYzMywgMCwgNjgxMTksIDExODAsIDQ2MzIsIDEyODA5MywgNTM4NywgNTMzMywgMCwgMCwgNDIwOTQsIAotICAgIDUzMzEsIDQ2MzQsIDExOTI4LCAwLCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCAwLCAxMjY4LCA2NTA5NywgCi0gICAgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIDAsIAotICAgIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIDc0Mzg0LCAwLCAKLSAgICA2ODM3NywgNjI0OCwgMCwgMCwgMCwgNDIzMTgsIDkyNTgyLCA1MjI5LCA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgCi0gICAgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMCwgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDEyNzMwMiwgMCwgMCwgCi0gICAgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA5MjIzMCwgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCAKLSAgICA1NTc3LCAwLCAwLCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgCi0gICAgMCwgNTMxMiwgMCwgNTUyNSwgNTMzMCwgNTMxOSwgMCwgMCwgMTk0OTA3LCA0NDAwMywgMCwgMCwgMCwgMTIwNDk4LCAKLSAgICAxMjc4NTEsIDE5NTAwOSwgMCwgNzQwMjIsIDAsIDY0NjA5LCA2ODY0MywgMTIwNjM0LCAwLCA1NzIxLCAwLCA1NTE5LCAKLSAgICA4NjMyLCA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgMCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCi0gICAgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgMCwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIDU2LCAKLSAgICA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMCwgMCwgOTIyNzYsIDQ2MDgsIDY0MjYwLCA0MTEyNCwgNTE5MCwgCi0gICAgNjc2MjgsIDAsIDY4MTQ1LCA3MDg2LCAwLCAxMTkyNDMsIDY3NjIwLCAwLCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAKLSAgICAwLCA2NzYyNSwgNTk2MCwgMCwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIAotICAgIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDExOTk1NiwgCi0gICAgNDEyNTYsIDAsIDY4MTM0LCAwLCA3NDIwOSwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIAotICAgIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY4MTM3LCAwLCAKLSAgICA1NzM5LCA0MTAyNCwgNDg2NiwgMCwgNzM5MDQsIDAsIDQ4NjksIDEyMDU2MywgMCwgNDIyMywgMTI4MjAxLCA2NjUwLCAwLCAKLSAgICAwLCAwLCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAKLSAgICAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgMCwgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIAotICAgIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDAsIDY4NjMxLCA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCAKLSAgICA1OTY2LCAwLCA0Nzc4LCAwLCAxMDg2MywgMCwgNDc4MSwgMCwgNjQ0MDcsIDAsIDAsIDg1NzcsIDEyODU2MiwgNjgxOTYsIAotICAgIDQzMjg1LCAxMDIxNiwgNDc4MiwgMCwgMCwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCA0Nzc2LCAKLSAgICA3MzgxOCwgMTE0OTIsIDg3MDAsIDAsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDAsIDkxNzU5OSwgMTAzNjIsIDE5NDcwNiwgCi0gICAgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMCwgNTk2MywgOTE3OTI2LCAwLCAwLCAKLSAgICA0ODUwLCAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgMTI3OTE4LCA1MTY0LCAwLCAxMzUwLCA1MTI0LCAKLSAgICA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDAsIDQxMjY4LCAKLSAgICA0ODQ4LCAyNTMwLCA5MTc5MDksIDIwNjgsIDE5NjQsIDAsIDczNzYyLCAxMDQ1OCwgMCwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIAotICAgIDQ3OTQsIDAsIDY4MjExLCA4MzIyLCA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIAotICAgIDAsIDMwMywgMCwgOTI2MjIsIDAsIDI0MzcsIDAsIDQyMjEsIDQ4NDQsIDExODg2OSwgMCwgMCwgMCwgMCwgMCwgNDMyOTIsIAotICAgIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMCwgMTE5MzI3LCAwLCAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCAKKyAgICA1MzMxLCA0NjM0LCAxMTkyOCwgOTgzNTk0LCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCAwLCAxMjY4LCAKKyAgICA2NTA5NywgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIAorICAgIDk4MzM2NiwgMTYwOCwgMjczOCwgMCwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCisgICAgNzQzODQsIDk4MzM3MCwgNjgzNzcsIDYyNDgsIDk4MzM1NCwgOTgzMzU1LCA5ODMzNTIsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCisgICAgNDc1NywgMCwgMCwgMjcyOCwgNDc1MiwgNjQ1NjMsIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDAsIDEwNzEzLCA3MTY2LCAwLCAKKyAgICAyNjIyLCA3NDYwLCAxMjczMDIsIDAsIDAsIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCAKKyAgICA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMCwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIAorICAgIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAwLCA1NTI1LCA1MzMwLCA1MzE5LCA5ODM0MTIsIAorICAgIDk4Mzg2MywgMTk0OTA3LCA0NDAwMywgMCwgOTgzNDcyLCA5ODM0MTUsIDEyMDQ5OCwgMTI3ODUxLCAxOTUwMDksIDk4Mzg1NiwgCisgICAgNzQwMjIsIDk4MzQxNCwgNjQ2MDksIDY4NjQzLCAxMjA2MzQsIDk4MzQ4MSwgNTcyMSwgOTgzMzkzLCA1NTE5LCA4NjMyLCAKKyAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgOTgzMzQ0LCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKKyAgICAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMzNDcsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCAKKyAgICA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDk4MzM0MSwgOTgzMzM4LCA3Nzg0OSwgNDYwOCwgNjQyNjAsIAorICAgIDQxMTI0LCA1MTkwLCA2NzYyOCwgMCwgNjgxNDUsIDcwODYsIDAsIDY3OTk4LCA2NzYyMCwgMCwgMjczNCwgMTEwNzQsIDAsIAorICAgIDY3NjI3LCA0MzU5MywgMCwgNjc2MjUsIDU5NjAsIDAsIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgCisgICAgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCAKKyAgICA2MjM5LCAxMTk5NTYsIDQxMjU2LCAwLCA2ODEzNCwgMCwgNzQyMDksIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAKKyAgICAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCAKKyAgICA3MTkzLCA2ODEzNywgMCwgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCA5ODM4MzEsIDQ4NjksIDEyMDU2MywgMCwgCisgICAgNDIyMywgMTI4MjAxLCA2NjUwLCAxMjY1MDksIDAsIDk4MzQ1NSwgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCAKKyAgICA3ODE3NiwgNjg2NjcsIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDAsIAorICAgIDYyNDUsIDY4NjUyLCAyNzMyLCA0MjczNCwgNzQ1LCAwLCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAwLCA2ODYzMSwgCisgICAgNDI3NzUsIDAsIDE5NDk1NCwgMCwgMzA5NywgMCwgNTk2NiwgOTgzNDc4LCA0Nzc4LCAwLCAxMDg2MywgMCwgNDc4MSwgMCwgCisgICAgNjQ0MDcsIDAsIDEyODMyMywgODU3NywgMTI4NTYyLCA2ODE5NiwgNDMyODUsIDEwMjE2LCA0NzgyLCAwLCAwLCAxMjA3NTcsIAorICAgIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMCwgMTMxNzYsIAorICAgIDY4MzYzLCAxMDQyNiwgMCwgOTE3NTk5LCAxMDM2MiwgMTk0NzA2LCAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgCisgICAgNDMyNzgsIDQyNjM1LCAwLCAwLCA1OTYzLCA5MTc5MjYsIDAsIDAsIDQ4NTAsIDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCAKKyAgICA0ODU0LCAxMjc5MTgsIDUxNjQsIDk4Mzg2MSwgMTM1MCwgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIAorICAgIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAwLCA0MTI2OCwgNDg0OCwgMjUzMCwgOTE3OTA5LCAyMDY4LCAxOTY0LCAKKyAgICAwLCA3Mzc2MiwgMTA0NTgsIDAsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAwLCA2ODIxMSwgODMyMiwgNDc5NywgCisgICAgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MTYsIDMwMywgOTgzMTAxLCA5MjYyMiwgCisgICAgOTgzNDE3LCAyNDM3LCAwLCA0MjIxLCA0ODQ0LCA5MjIxNiwgMCwgMCwgMCwgNzAwNDIsIDAsIDQzMjkyLCAwLCAyNDQxLCAKKyAgICAxMDczOSwgNjUwOTAsIDAsIDExOTMyNywgMTI2NTQxLCAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCAKICAgICA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgNDI4NzksIDExNzI1LCAwLCAwLCAKICAgICAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgNjQ5MzcsIDExOTIzMywgOTE0MCwgMTQwOCwgNTI2MSwgNDYwNywgMCwgMTgxLCAKLSAgICAwLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDAsIDAsIDQ5NjQsIAotICAgIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgCi0gICAgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgMCwgMCwgNzgwMjgsIDAsIAotICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIAotICAgIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIDExNDk0LCAwLCA5NTYzLCAxMDg2NSwgCi0gICAgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgMCwgNzg3MTQsIDY0MTkxLCA2NDE5MCwgODg5OCwgNjQxODgsIDAsIDQxMDMwLCAKLSAgICA3ODgzNiwgMCwgOTE3ODM1LCA3ODgyMCwgOTE3ODM0LCAwLCA3ODgwNSwgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgCi0gICAgMzA4MiwgMCwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIAotICAgIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgCi0gICAgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgCi0gICAgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAwLCA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgCi0gICAgNjUyMjMsIDk5NDMsIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAxMzI4MiwgNjQxNzUsIDY0MTc0LCA2NDE3MywgCi0gICAgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDAsIDAsIDAsIDAsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgCi0gICAgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgCi0gICAgMTAyNDcsIDQyNzY4LCA3MTUsIDY0MTYxLCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIDEyMDM3OCwgMCwgMTEzNTIsIAotICAgIDU1MCwgOTkxMCwgMCwgMCwgNjY1NzksIDExNTUxLCAwLCAxOTUwODAsIDk1MDQsIDcxODcsIDAsIDEwMzczLCAwLCAKLSAgICAxMjA3OTEsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIDY5OTgsIAotICAgIDc4MTgwLCAwLCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIDExNDYsIDUwNjUsIAotICAgIDc4MTk2LCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgMCwgNzgyMDAsIAotICAgIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAwLCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIAotICAgIDQ3NDAsIDc5NTQsIDAsIDAsIDQyNjA5LCAwLCA3NDE3NSwgMCwgMTI3MDE2LCAwLCAwLCA0MjEzMCwgMCwgNTE1MSwgCi0gICAgOTE3ODI5LCA5MTc4MjMsIDAsIDAsIDAsIDc2MjAsIDM4MDAsIDY1MTIyLCAwLCAwLCA4MzU1LCA3ODU0LCAwLCA5NTQsIAotICAgIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAxMDcxMSwgNDU5MywgMTI3NzQ1LCAKLSAgICAxMjA1ODQsIDAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDAsIDAsIDAsIDY0NzU5LCA2MzgxLCA1MTY2LCA5ODg4LCAKLSAgICAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCA3ODIwNCwgNjQxMzEsIDMxMTksIDkxNzgxNCwgCi0gICAgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAwLCAwLCA5OTE2LCAxMTcwMSwgNzgzNiwgCi0gICAgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCAKLSAgICA4NjE4LCAwLCA5OTA4LCAwLCAwLCAwLCAzOTM3LCAxMjMxMiwgMCwgMCwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgCi0gICAgMTE5OTYzLCA3NDUzMiwgMCwgNjI0NCwgMCwgMTk0NTgwLCAzOTM1LCAxMjA2NjUsIDAsIDAsIDExOTUwLCA1MzkyLCAKLSAgICA0MjI0OCwgNjUxMjksIDY4NjU2LCA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDAsIDUzOTUsIDAsIDUzOTMsIDM1NCwgCi0gICAgNjg2MTUsIDExOTk0OCwgNzg1MDMsIDAsIDAsIDQyMDM5LCAwLCAwLCA2NDE0MiwgNjI2LCAwLCA1ODk1LCAwLCAwLCA1NzgwLCAKLSAgICAwLCAwLCAxMjg4NzQsIDAsIDAsIDQzMjk3LCAwLCA0MzExLCA0NjQ0LCA4ODE4LCAwLCAxMjgxODYsIDAsIDcxNDUsIDM5MTgsIAotICAgIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIAotICAgIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgNDIxMTcsIAotICAgIDkyMjg3LCAxMjgyMjQsIDAsIDAsIDc0MDQ2LCAxMjA1ODMsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCAwLCA0MzA2MSwgNzA1NCwgCisgICAgOTgzNDIyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIAorICAgIDk4MzYwMSwgMCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIAorICAgIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIDEyODU4MSwgMTI3NTgsIDM4NjUsIDAsIDAsIDEwNTAwLCAKKyAgICAwLCAxMTkwMjQsIDc4MDI4LCA5MjQwOCwgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgCisgICAgNTQ2MywgMCwgMzEyNSwgOTU2NywgMCwgNDg3OCwgNTQ1OSwgNDYwNCwgOTE3OTMxLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgCisgICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDk4MzQzMSwgNzg3MTQsIDY0MTkxLCAKKyAgICA2NDE5MCwgODg5OCwgNjQxODgsIDAsIDQxMDMwLCA3ODgzNiwgMCwgOTE3ODM1LCA3ODgyMCwgOTE3ODM0LCAwLCA3ODgwNSwgCisgICAgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzNDI5LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgCisgICAgNzA3OSwgNTg1NiwgMTI3MDQzLCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDAsIDEwNTY0LCAKKyAgICA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIAorICAgIDQyNDgsIDAsIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCisgICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCisgICAgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAKKyAgICAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIAorICAgIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIAorICAgIDEyMDM3OCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI2NzA1LCAwLCA2NjU3OSwgMTE1NTEsIDAsIDE5NTA4MCwgOTUwNCwgCisgICAgNzE4NywgMCwgMTAzNzMsIDAsIDEyMDc5MSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCAKKyAgICA2NTIyMiwgNjk5OCwgNzgxODAsIDAsIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgCisgICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAKKyAgICAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIAorICAgIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgOTgzODY0LCAKKyAgICA0MjEzMCwgMCwgNTE1MSwgOTE3ODI5LCA5MTc4MjMsIDAsIDkzOTgwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgCisgICAgODM1NSwgNzg1NCwgMCwgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgCisgICAgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgMTIwNTg0LCA5ODM0MDAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDAsIDAsIDAsIAorICAgIDY0NzU5LCA2MzgxLCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKKyAgICA3ODIwNCwgNjQxMzEsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAKKyAgICAwLCA5ODM0NDMsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCA5MjQzMSwgCisgICAgMTE5OTYwLCAxNDc3LCA0MzI4OSwgMCwgNzQzNTgsIDg2MTgsIDk4MzM5NCwgOTkwOCwgOTgzOTcyLCAwLCAwLCAzOTM3LCAKKyAgICAxMjMxMiwgMCwgOTgzMzk1LCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIDEyNjU5NCwgNjI0NCwgCisgICAgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDk4MzQ2OCwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIAorICAgIDUzOTcsIDAsIDEyMDQ2LCAxMjU5OSwgMCwgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIDY4NjE1LCAxMTk5NDgsIAorICAgIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgMCwgMCwgMTI4ODc0LCAKKyAgICAwLCAwLCA0MzI5NywgOTgzMDc5LCA0MzExLCA0NjQ0LCA4ODE4LCAwLCAxMjgxODYsIDAsIDcxNDUsIDM5MTgsIDY2NDUyLCAKKyAgICAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgCisgICAgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgNDIxMTcsIDkyMjg3LCAKKyAgICAxMjgyMjQsIDAsIDAsIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA5MTc4MDcsIDAsIDk4MzQ2MCwgNDMwNjEsIDcwNTQsIAogICAgIDY0MTQ3LCAwLCA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDEyMDAwNiwgMTE5ODEsIDEyMjAyLCAwLCAKICAgICAxMTAzMiwgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY4NjYyLCA2NTg0MywgMTcwLCAwLCAwLCA0MTY5LCAwLCA0MTg1OSwgCiAgICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCAwLCAwLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCiAgICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCA5MTc4NjUsIDQ3MzcsIDExNzc5LCA0NzQyLCAxMjA1NjQsIDkyMzkxLCAKLSAgICA3MzczNiwgMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCAwLCA5MjUyNSwgMCwgNTMwMCwgNDc0MSwgNDIxMDgsIAotICAgIDAsIDY0MTU5LCA0NzM2LCA2NDE0OCwgMCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAwLCA2NjYyMCwgMCwgMTI3MzMxLCAKLSAgICA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgMCwgNzg3NiwgNjgxMzIsIDkxNzg3MiwgMzkyOCwgOTE3ODcwLCA0MzM3OCwgCi0gICAgMTA3MDYsIDcxOTgsIDAsIDQ4NDIsIDEyMDUzLCAxMjgxMjksIDAsIDQ4NDEsIDAsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAKLSAgICAxNDkwLCAwLCAxMTk1OTEsIDAsIDQwOTcyLCA1MjQ1LCAwLCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCAKLSAgICA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIAotICAgIDY4NjU1LCAwLCAwLCAwLCAwLCA2ODYyOCwgMCwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgCi0gICAgMCwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAxMTk1NTksIDQ4MzAsIDkxMzQsIAotICAgIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDAsIDAsIDY0MTAxLCAwLCAwLCA0ODI0LCAxMDYxNCwgMTIwMzkwLCAwLCAxODg4LCAKLSAgICAxOTYwLCA3ODYxLCA5MTc4NTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDAsIAotICAgIDYyMTEsIDAsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgMTA3NTgsIDY1Nzc0LCAwLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgCi0gICAgMCwgMCwgMCwgMTE5MDUzLCAwLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDAsIDQwMTcsIDEyODI3LCA1MjQxLCAKLSAgICAxMjAzOTIsIDAsIDQxMTE4LCAzOTI0LCAwLCAxMTM2NiwgOTE3ODQzLCAwLCAwLCA5MTc4NDYsIDQxMTE2LCA5MTc4NDQsIAotICAgIDkxNzU2NCwgMCwgMTEzNjMsIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDAsIDY2MjAyLCA4OTU3LCA0MTM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCAwLCA0NzI2LCAKLSAgICAwLCAwLCAwLCA5MTc5MDQsIDkxNzkwNSwgMCwgMTI3NTUsIDEyNzYyLCA0MDE1LCAwLCA4MDUyLCA0NzYsIDAsIDAsIAotICAgIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDY0MjE1LCA2NDIxNCwgMTY1NiwgNDE4MzEsIDAsIAorICAgIDczNzM2LCA5ODMzNTYsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgMCwgOTI1MjUsIDAsIDUzMDAsIDQ3NDEsIAorICAgIDQyMTA4LCA5ODMzNDYsIDY0MTU5LCA0NzM2LCA2NDE0OCwgMCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAwLCA2NjYyMCwgCisgICAgOTE3OTE2LCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNTgsIDc4NzYsIDY4MTMyLCA5MTc4NzIsIAorICAgIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAwLCA0ODQxLCAwLCAKKyAgICA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgMCwgMTE5NTkxLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCAwLCAxMDExNCwgCisgICAgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIAorICAgIDQ4MjUsIDY5MjQwLCA5MTc4NTIsIDY4NjU1LCAwLCA5ODMzODAsIDAsIDAsIDY4NjI4LCA5ODMzMzksIDk4NTAsIDExODkzNywgCisgICAgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAKKyAgICAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAxMjY2MjYsIDY0MTAxLCAwLCAwLCAKKyAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAwLCAxODg4LCAxOTYwLCA3ODYxLCA5MTc4NTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIAorICAgIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDAsIDYyMTEsIDAsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgCisgICAgMTA3NTgsIDY1Nzc0LCAwLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDAsIDAsIDExOTA1MywgMCwgMTI3NjUsIAorICAgIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAKKyAgICAzOTI0LCAwLCAxMTM2NiwgOTE3ODQzLCAwLCAwLCA5MTc4NDYsIDQxMTE2LCA5MTc4NDQsIDkxNzU2NCwgMCwgMTEzNjMsIAorICAgIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDEyNjY0MSwgNjYyMDIsIDg5NTcsIDQxMzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNzQwLCAxMjg3MDIsIDQ3MjIsIDY4MTYsIDEyNzc5MywgMTI3NTksIDQ3MjUsIDk4MzM3NSwgNDcyNiwgMCwgCisgICAgMTk0ODkyLCAwLCAxMjgzMjEsIDkxNzkwNSwgMCwgMTI3NTUsIDEyNzYyLCA0MDE1LCAwLCA4MDUyLCA0NzYsIDAsIDAsIAorICAgIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDAsIAogICAgIDAsIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgMCwgNjQwNjcsIDEyNzMyOCwgODU1MiwgNjQxMTMsIDQxODQ1LCAKICAgICAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgMCwgMCwgCi0gICAgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3ODY3NSwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKKyAgICA3OTM1LCAyNDIwLCAwLCAxMTE0LCA5MjU5OSwgNjc1ODUsIDcwMTA0LCAxMjAwNTMsIDkyMzUwLCAxMjAwNTEsIDM5MzgsIAogICAgIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDEyMDA2MSwgNjU0MTUsIDEyMDA1OSwgNjI5MiwgNjUzMDMsIDc5NTUsIAogICAgIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgOTE3ODkwLCA5MTc4OTEsIDY1MTUyLCA3MTksIDEyMDA0NCwgCiAgICAgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgNjY0NTAsIAogICAgIDQ3MTIsIDkxNzkwMiwgOTE3ODk5LCA5MTc5MDAsIDY1NDE2LCA4MTU1LCA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCAwLCAKLSAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDAsIDAsIDAsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAwLCA2NjQzNywgCi0gICAgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCA5MTc4ODAsIAorICAgIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMCwgMCwgMCwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIDEyNjYwNiwgCisgICAgNjY0MzcsIDY2MDI1LCA3ODY5OSwgMCwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgOTE3ODc0LCA3ODY5NCwgOTE3ODgwLCAKICAgICA5MTc4NzcsIDkxNzg3OCwgNjU0MDUsIDY4MTU5LCAxMjg5MywgOTE3ODgyLCA1MzY1LCA0NTQ1LCA4OTAxLCA5MjQyMSwgCiAgICAgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDAsIDU5MjUsIDQ4MDgsIDY0MzMwLCAwLCA2NTQ3NSwgMTE4OTQwLCAxOTUwMjgsIAotICAgIDQ4MTQsIDAsIDQ4MTAsIDAsIDAsIDY0OTI4LCAxMDU0MywgMCwgMzUyMiwgMCwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKKyAgICA0ODE0LCAwLCA0ODEwLCAwLCAwLCA2NDkyOCwgMTA1NDMsIDAsIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAwLCAxOTUwMjcsIAogICAgIDY0NTYsIDczODIwLCAwLCA2NjkxLCA0MjE5MywgOTIyMjUsIDEyODE3MSwgMCwgNzQ0OTUsIDAsIDAsIDAsIDExODgyMCwgCiAgICAgOTc1MSwgNjU0MDcsIDEyODA4NSwgMTE3NzAsIDM5MTksIDAsIDAsIDY1MDYxLCAwLCAwLCAwLCAxMjIzNSwgMCwgMCwgCi0gICAgMTI3MjMzLCA2NDA5MiwgMCwgNjQwODAsIDAsIDY0MDkwLCAwLCAwLCAxMDE2MiwgMTAzMTAsIDAsIDg0NTQsIDEyNzg4OCwgCi0gICAgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDAsIDAsIDAsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCi0gICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMCwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCAKLSAgICA2OTY5MiwgMCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgMCwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDAsIAotICAgIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDAsIDQxOTMsIDkyMjUwLCA0MjQxLCAwLCA3OTk4LCAwLCAwLCAwLCAwLCAKLSAgICAyMzE2LCAxMTg4MjEsIDAsIDAsIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCAwLCAzNzYyLCAKLSAgICAxMDAxNSwgMTI3MzM1LCAxMTkyMzIsIDAsIDQxNTkwLCAwLCA5MjM3OCwgMzc4MCwgNzQ4NSwgNTc3OSwgMCwgNDIwMzcsIDAsIAotICAgIDM5MDYsIDEyMzQ5LCAwLCA4MzI2LCAwLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgMCwgNDM2MTMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4MCwgNzQ1NTgsIDEyNzMzMiwgNjgxMzgsIDEzMDcyLCAxODk0LCAwLCAwLCA2NTQ3OCwgCi0gICAgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAwLCAwLCAwLCAwLCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgMCwgMTE5MjM3LCAKLSAgICAwLCAxMjg4MDUsIDQ0NzAsIDExOTYxMywgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIAotICAgIDEyNzE0MywgMCwgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDAsIDY5Njg1LCAwLCAwLCAwLCA0NDAyMCwgCi0gICAgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDQ2NjgsIDAsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIAorICAgIDEyNzIzMywgNjQwOTIsIDk4MzQ2MiwgNjQwODAsIDAsIDY0MDkwLCAwLCA2OTkxMywgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAKKyAgICAxMjc4ODgsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgCisgICAgNzgxMTYsIDAsIDk4MzEzOSwgMCwgOTgzMDc0LCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDk4Mzg2NSwgCisgICAgMCwgOTgzNDI2LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIAorICAgIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDk4MzQyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgCisgICAgMjI5MSwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgCisgICAgMCwgNDE5MywgOTIyNTAsIDQyNDEsIDk4MzA1NywgNzk5OCwgMCwgMCwgMCwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDAsIAorICAgIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCA5ODM4NzcsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAorICAgIDExOTIzMiwgMCwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCAwLCA0MjAzNywgMCwgMzkwNiwgMTIzNDksIAorICAgIDAsIDgzMjYsIDAsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAwLCA0MzYxMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjgwLCA3NDU1OCwgMTI3MzMyLCA2ODEzOCwgMTMwNzIsIDE4OTQsIDAsIDAsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgCisgICAgMTE3NzMsIDAsIDAsIDAsIDAsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NDMsIDExOTIzNywgMCwgMTI4ODA1LCAKKyAgICA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIDEyNzE0MywgMCwgCisgICAgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDk4MzM0OCwgNjk2ODUsIDk4Mzc0NywgMCwgMCwgNDQwMjAsIAorICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKICAgICAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMCwgMCwgNTM1MiwgMCwgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIAogICAgIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgOTIyNDEsIDQzNjA3LCAwLCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMCwgCiAgICAgNzQ0MTcsIDQwMTgsIDcxNTAsIDY4MTI3LCAwLCAwLCAwLCAwLCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKICAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMCwgNzg3NTEsIDcxNDYsIDAsIDY1MTUwLCAKLSAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgMCwgNjk2NDEsIDEwNzUzLCAKKyAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgOTgzNDI3LCA2OTY0MSwgMTA3NTMsIAogICAgIDEwODMwLCAwLCA2MTUsIDY0NDkwLCA3NTc0LCA5MjYxNywgNzc5MjIsIDAsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgCi0gICAgMCwgMCwgMCwgMjAyMCwgMCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMCwgNDE2OTEsIDAsIDAsIDc0MzI5LCAwLCAKLSAgICA2NDYyMiwgOTA3MCwgMCwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDAsIDcwMDAsIDM5MDQsIDAsIAotICAgIDEyODE5OCwgMCwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIDAsIAotICAgIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDAsIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgOTM2NywgCi0gICAgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgMCwgNjQ0MDksIDM1OTYsIDAsIDAsIDk3NjMsIAorICAgIDAsIDAsIDY3OTk2LCAyMDIwLCAwLCA0MDIyLCAxMjg3ODMsIDAsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCAwLCA3NDMyOSwgCisgICAgMCwgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAKKyAgICAwLCAxMjgxOTgsIDAsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAKKyAgICAwLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAwLCA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIAorICAgIDkzNjcsIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDAsIDY0NDA5LCAzNTk2LCAwLCAwLCA5NzYzLCAKICAgICAxMjAyODAsIDkyMTkyLCAxMjM0NywgMTI0LCAxMjk4MSwgNDExMjcsIDIwOTIsIDkyNjg3LCAwLCAwLCAwLCAxMDgyMCwgCi0gICAgNDM5ODcsIDAsIDAsIDE3NjksIDQxNzE1LCAyNDYzLCA3ODQ4OSwgMCwgMTI3NzAsIDAsIDE1MzgsIDAsIDQzMTI0LCAwLCAKLSAgICAxOTUwNTgsIDc3OTUsIDEyMDMwMCwgMCwgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAwLCA5NDk4LCAxMjcwMzIsIAorICAgIDQzOTg3LCAwLCAwLCAxNzY5LCA0MTcxNSwgMjQ2MywgNzg0ODksIDAsIDEyNzcwLCAxMjY1MDAsIDE1MzgsIDAsIDQzMTI0LCAKKyAgICAwLCAxOTUwNTgsIDc3OTUsIDEyMDMwMCwgMCwgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAwLCA5NDk4LCAxMjcwMzIsIAogICAgIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgMTIwMjg3LCAxMjAyODYsIDI2NTAsIAogICAgIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIDU1MjI4LCAxMTc3NCwgNDEwMTYsIDAsIAogICAgIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCA0MTAxOSwgMCwgCiAgICAgMCwgNjUyOTIsIDY4MjIsIDEyODYyLCAwLCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgNzgyMDgsIDExODg3OSwgCi0gICAgNTUyMjMsIDAsIDAsIDQxODI2LCA4ODY1LCA2NDAyLCAwLCAxMzI3OSwgNzkxNywgMTIwMzQwLCAwLCA3NzMzLCAwLCA0OTk4LCAKLSAgICAwLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDAsIDAsIDAsIDQwMTMsIDAsIDEwODgxLCAwLCAwLCAwLCA3NDc4OCwgMjAxNCwgCi0gICAgMCwgMCwgOTc2NSwgMCwgMCwgMCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIDAsIDAsIDIwMTUsIAotICAgIDAsIDAsIDAsIDY2MzE4LCA0MzIzMywgMCwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIAotICAgIDY0NzQsIDc5NCwgMCwgMTI2NTYsIDEyODEyMiwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDAsIDQ4MzMsIDAsIDExOTM1MSwgCi0gICAgMTI3MzY3LCAwLCAxODksIDEyNjExLCAwLCAwLCAyODU5LCA0ODM4LCAwLCA0ODM0LCA2NTA3OCwgMCwgMCwgNDgzNywgCi0gICAgMTI3MDYxLCA3NzAsIDAsIDgxMSwgMCwgNDEwNDIsIDkxNzU1MSwgNDEzMTgsIDY0NDI3LCAwLCAwLCA3ODg0OCwgMzg5NSwgCi0gICAgMCwgNzQzNDEsIDM5NzYsIDAsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgMCwgMCwgMCwgMCwgMCwgNDM2ODYsIDc4ODQ2LCAKLSAgICA0MTg3NywgMCwgMjg3MSwgNjQ2MTQsIDEyODc4NSwgOTk5LCAwLCA2MzQ1LCA0MTg3NiwgMjY2MywgMjAxNywgMCwgMCwgCi0gICAgMTEwNDAsIDEwMTUwLCAwLCA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgCi0gICAgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDAsIAotICAgIDEwODEyLCA3ODg1MSwgMCwgMCwgMzA3OCwgMTQwMiwgMCwgMTI4Mjc1LCAwLCAwLCAxMTkyNDgsIDM5NCwgMzA4OCwgMCwgCi0gICAgOTIxNzIsIDAsIDM5OTEsIDY0MzkxLCAwLCAwLCA0MjQsIDY2MzI4LCAxOTk5LCA2OTY1OSwgNzM5MTQsIDAsIDAsIDAsIDAsIAotICAgIDQyMjMxLCA4MjQ2LCAwLCAwLCAwLCA0MTg0MCwgMCwgMjM3NywgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIAotICAgIDEyNTU5LCAxMjU3MCwgODQ4OCwgMTAwMywgMjM3MywgOTQ0NiwgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgCi0gICAgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgCi0gICAgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIAotICAgIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgCi0gICAgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgCi0gICAgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCAKLSAgICA5MjQxOCwgNDAxOSwgMCwgMCwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAwLCAwLCAwLCAwLCA0MjQxMCwgNzQ0NDgsIAotICAgIDExOTEzMiwgNjA1NCwgMTA2OTcsIDMxNjksIDQyMjk3LCA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDAsIDEyODEzOSwgMCwgCi0gICAgNjg2NzgsIDAsIDAsIDEwNDksIDAsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgCi0gICAgNjQ3NjAsIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAKLSAgICAzNiwgMCwgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgMCwgMjAwOSwgMCwgMCwgMTI3MTQyLCAKLSAgICA5NjQwLCAxMTk5NTEsIDAsIDEyMDY5NSwgODYyMSwgMCwgMTI4NTIsIDMwMzEsIDAsIDY0MzYxLCAwLCAxODIsIDE5NDcxOCwgCi0gICAgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDAsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIDEwODQ4LCA0NTcwLCAKLSAgICA2NTMwMSwgNDQwMTMsIDQyNTUsIDAsIDEwMTAyLCA0MTE4OSwgNDAwMywgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIAotICAgIDY5NjM1LCAwLCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgMCwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMCwgCi0gICAgNjU1MDYsIDAsIDY1ODYxLCA3NDA4MywgOTI2MDAsIDk5MzIsIDAsIDkyNDIzLCAxMTk5NTUsIDAsIDk4MTcsIDAsIAotICAgIDEyMDE0MCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIDkwNjMsIDEyNzA0NSwgMCwgMTE5OTU0LCAwLCAKLSAgICAxMjg5NywgMzc5MiwgMjAxMSwgMCwgNjA2NSwgNDMxNjAsIDAsIDE5NDcxNSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgCi0gICAgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAwLCA3NTEzLCAxODYzLCA0NzEwLCAKLSAgICAwLCA1OTU2LCA3NjIxLCA3ODAwNiwgOTI2MjQsIDQ3MDUsIDcxNiwgNzgwMDQsIDAsIDQ3MDQsIDEyMDA0MCwgMTIwMjcwLCAKLSAgICA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCAwLCAwLCA0MjY3MiwgNDcwOSwgMTA2ODAsIDAsIAotICAgIDQzMjkzLCAxMTk5NDQsIDAsIDExOTE2NCwgMTIwMzI4LCA5MjQ2NywgMCwgMTcwMCwgMTE5MjIzLCAwLCAwLCAxMjgxMTksIAotICAgIDQwMDQsIDAsIDEwOTY4LCA0MzI5NiwgMCwgODUwNiwgMCwgMCwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAKLSAgICAyODcwLCAwLCA3ODIxOCwgMCwgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCAwLCAxMjA0MjAsIDkyNDkwLCAKLSAgICAxMjAzMzEsIDgxMDksIDQzMTA1LCAwLCA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDAsIDAsIAotICAgIDQyNTI3LCAxMjkxMSwgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCAKLSAgICA3OTkzLCA0Mjg4LCAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgMTIwMzMwLCAzNTEwLCAxMzIzNCwgMCwgCi0gICAgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDAsIDEzODAsIDY1NjE3LCAxMjAyNTMsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAKLSAgICAxMjAzMDksIDEyMDY4MiwgOTQ5NSwgMTE5MzQ2LCAwLCA1OTU5LCAwLCA3Mzk3NiwgMTIwMzA1LCA0MzM3MSwgNjk0MSwgCi0gICAgMTE5MzQ5LCAxMzIwNSwgMTMyMTEsIDU4MDEsIDEyNzY5LCA2NTkwNSwgNDE2OTcsIDEyODMsIDEyMDMwMiwgNDc3OSwgMCwgCi0gICAgMzcxOSwgNDAwNiwgMCwgMTk5NTcsIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCAKLSAgICA0MTgzOCwgMzg3NSwgNTk2MiwgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIAotICAgIDY1NDk0LCA2ODE1MywgMCwgMCwgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgCi0gICAgNTc3MSwgNDEyOTgsIDAsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIDAsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCAKLSAgICA2NjMyMywgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDAsIDY1NzgyLCA5ODQxLCAKLSAgICA4ODQzLCAxMjE0NSwgOTI0NzAsIDEwMDc0LCA3ODU0OCwgMCwgMzc2OSwgMCwgMCwgMCwgMCwgOTU3MywgMCwgNjUyOTAsIAotICAgIDg4NDksIDAsIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIAotICAgIDczODgsIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgCi0gICAgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIAotICAgIDEzOTAsIDAsIDAsIDQyMSwgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgCi0gICAgMTIwMTIxLCA2NjAzNSwgMCwgMCwgNjU4NTEsIDQyNjA3LCAxMjgxOTAsIDkyNDAzLCAzMTY4LCAwLCA0MjEzNCwgMCwgCi0gICAgMjM3MCwgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDkyNTQ3LCA2MjkwLCAKKyAgICA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDc0NzU1LCAwLCA3NzMzLCAwLCAKKyAgICA0OTk4LCA5ODM4ODcsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMCwgMCwgNzAwNjEsIDQwMTMsIDAsIDEwODgxLCAwLCAwLCAKKyAgICAwLCA3NDc4OCwgMjAxNCwgMCwgMCwgOTc2NSwgMCwgMCwgMCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIAorICAgIDAsIDAsIDAsIDIwMTUsIDAsIDAsIDAsIDY2MzE4LCA0MzIzMywgMCwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAKKyAgICAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgMCwgMTI2NTYsIDEyODEyMiwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDAsIDQ4MzMsIAorICAgIDk4MzA1MywgMTE5MzUxLCAxMjczNjcsIDAsIDE4OSwgMTI2MTEsIDAsIDAsIDI4NTksIDQ4MzgsIDAsIDQ4MzQsIDY1MDc4LCAKKyAgICAwLCAwLCA0ODM3LCAxMjcwNjEsIDc3MCwgMCwgODExLCAwLCA0MTA0MiwgOTE3NTUxLCA0MTMxOCwgNjQ0MjcsIDAsIAorICAgIDEyODIwOCwgNzg4NDgsIDM4OTUsIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgCisgICAgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIAorICAgIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAKKyAgICAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgCisgICAgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCAKKyAgICA2OTY1OSwgNzM5MTQsIDAsIDAsIDAsIDAsIDQyMjMxLCA4MjQ2LCAwLCAwLCAwLCA0MTg0MCwgOTgzNjA5LCAyMzc3LCAKKyAgICAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgMTI1NTksIDEyNTcwLCA3NDc5LCAxMDAzLCAyMzczLCA5NDQ2LCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgMCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCAKKyAgICA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAwLCAwLCA5NDI0LCAKKyAgICA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMCwgMjAwNCwgOTA5NiwgOTc4MiwgCisgICAgMTI4ODQ4LCA5MTcyLCAxMjg1NDUsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgNzQ3NzMsIDAsIDAsIDY0NzgyLCAKKyAgICAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAwLCAwLCAxMjczNjQsIDEwNjA2LCA4MDY1LCAKKyAgICAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMCwgMCwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCA5ODMyODAsIDQzMjgwLCA4MjE5LCAKKyAgICA2ODQwMiwgMTgxMiwgMTE5OTYzLCA5ODM2ODMsIDAsIDEyNjQ4OCwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIAorICAgIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDk4MzI1MywgNjg2NzgsIAorICAgIDAsIDAsIDEwNDksIDAsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAorICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCisgICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgOTgzMTMwLCAyMDA5LCAwLCAwLCAxMjcxNDIsIAorICAgIDk2NDAsIDExOTk1MSwgMCwgMTIwNjk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAwLCAKKyAgICAxODIsIDE5NDcxOCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIAorICAgIDExNzU0LCAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIDEwMTAyLCA0MTE4OSwgNDAwMywgCisgICAgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAwLCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgCisgICAgNjEyOCwgMCwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMCwgNjU1MDYsIDAsIDY1ODYxLCA3NDA4MywgOTI2MDAsIDk5MzIsIDAsIAorICAgIDkyNDIzLCAxMTk5NTUsIDAsIDk4MTcsIDAsIDEyMDE0MCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIAorICAgIDkwNjMsIDEyNzA0NSwgMCwgMTE5OTU0LCAwLCAxMjg5NywgMzc5MiwgMjAxMSwgMCwgNjA2NSwgNDMxNjAsIDAsIDE5NDcxNSwgCisgICAgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIAorICAgIDc4MDAyLCAwLCA3NTEzLCAxODYzLCA0NzEwLCAwLCA1OTU2LCA3NjIxLCA3ODAwNiwgOTI2MjQsIDQ3MDUsIDcxNiwgCisgICAgNzgwMDQsIDAsIDQ3MDQsIDEyMDA0MCwgMTIwMjcwLCA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCAwLCAKKyAgICA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAxMTkwNjUsIDQzMjkzLCAxMTk5NDQsIDAsIDExOTE2NCwgMTIwMzI4LCAKKyAgICA5MjQ2NywgMTAxODcsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDk4MzYzMywgCisgICAgODUwNiwgMCwgMCwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCAKKyAgICA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDAsIDEyMDQyMCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgOTgzMTc0LCAKKyAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDAsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIDEzODMsIAorICAgIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIDI2NzQsIAorICAgIDEzMjM4LCAxMTkyMiwgMCwgMTIwMzMwLCAzNTEwLCAxMzIzNCwgMCwgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDAsIAorICAgIDEzODAsIDY1NjE3LCAxMjAyNTMsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIDEyMDY4MiwgOTQ5NSwgMTE5MzQ2LCAKKyAgICAwLCA1OTU5LCA2Nzk4NCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAKKyAgICAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIAorICAgIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgCisgICAgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIDY1NDk0LCA2ODE1MywgMCwgMCwgCisgICAgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc4NSwgCisgICAgOTc0MiwgNTIxLCAwLCAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAKKyAgICAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAorICAgIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDk4MzEwNywgOTU3MywgMCwgNjUyOTAsIDg4NDksIDAsIAorICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIDczODgsIDEwNjIxLCAKKyAgICA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCAKKyAgICA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDAsIDAsIDQyMSwgCisgICAgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgMTIwMTIxLCA2NjAzNSwgCisgICAgOTgzOTA0LCAwLCA2NTg1MSwgNDI2MDcsIDEyODE5MCwgOTI0MDMsIDMxNjgsIDAsIDQyMTM0LCAxMTgzMSwgMjM3MCwgCisgICAgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKICAgICA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTIwNDM0LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCAKLSAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCAwLCAwLCAxMDYxOCwgMjU4NCwgMCwgMCwgMCwgOTk5OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjIwNCwgMCwgMCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDc0ODA5LCAxMjAxMzAsIDQyNjcsIAotICAgIDE2MzEsIDQyMjA2LCAxMjc4NjYsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgMCwgMCwgMTI1ODYsIAotICAgIDAsIDkyNDIsIDEyNzkyMiwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDAsIDc3OTMsIDc4Mjc1LCA5MzI4LCAwLCAKLSAgICA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDY3NjUwLCA5MjM0NCwgMzk4NiwgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCAKLSAgICAwLCAwLCA5NTQxLCA3ODI3NiwgMCwgMTEyNzUsIDg1NDAsIDExNDk4LCAwLCAwLCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIAotICAgIDQxMDQxLCA3NDQxMywgMCwgMCwgMCwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgMCwgCi0gICAgMCwgMTYwNiwgMTIwMzQ4LCAxMjAzNTEsIDMwOTMsIDY4NDM2LCAwLCAwLCAxMjA2NDksIDAsIDAsIDQzMTIsIDc0MDkxLCAKLSAgICAxMjAzMzcsIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgMTIwMzM1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIAotICAgIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDAsIDAsIDAsIDExOTczLCAKKyAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCA5ODM3MzQsIDAsIDEwNjE4LCAyNTg0LCAwLCAwLCAwLCAKKyAgICA5OTk4LCAxMjg1NjQsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCisgICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgCisgICAgMCwgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTI3OTIyLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzg4LCAKKyAgICA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDIyODUsIDkyMzQ0LCAzOTg2LCAKKyAgICA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDAsIDk4MzM1MCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAKKyAgICAxMTQ5OCwgMCwgOTgzMzQ5LCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCAwLCAKKyAgICA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5ODMzNDIsIDAsIDE2MDYsIDEyMDM0OCwgCisgICAgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgOTgzMDYxLCAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIAorICAgIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIAorICAgIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgMCwgMCwgMTE4ODM3LCAxMTk3MywgCiAgICAgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDAsIAotICAgIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMCwgMTAzODksIDAsIDAsIDQ4OTUsIAotICAgIDY1MzU4LCAwLCA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDE5NDkyMCwgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDAsIDAsIAotICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDAsIDIzNzYsIDAsIDExOTMyMCwgMCwgCi0gICAgNTE5NywgMTI3MDQ2LCAxMjcwNDcsIDEyNzA0OCwgMjM2NiwgMTI3MDUwLCAxMjcwNTEsIDEyMDU1NCwgMTIwMDQ1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NDE4OCwgMTIwMjQxLCAwLCAwLCAxMjAwNDcsIDEyODU3NSwgMCwgMCwgMTIwMDQ5LCAwLCAKLSAgICAxODQ3LCAwLCAxMDMzOSwgMCwgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA5MjUwMSwgNDMwMzIsIDAsIDQyMzY1LCAwLCAKLSAgICAxMjY3MSwgMTEzODQsIDAsIDAsIDAsIDY0Nzk3LCAwLCA1ODIwLCAwLCAxMjAwNTIsIDEyMDA2NSwgMCwgMTIwMDY0LCAKLSAgICAxMjA2NTAsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAwLCA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgCi0gICAgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAwLCAxMTg5MzgsIDAsIDEwODUzLCA5MjYsIDAsIDc0MTg0LCAwLCAKLSAgICAxMjAwNTUsIDAsIDQzMTc1LCAwLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAKLSAgICAwLCA1MjAsIDQyMDAsIDEyNjk5LCA4MzMxLCAwLCAzMDkxLCA0MTAzNCwgMTI3MzUzLCAwLCA4MzYwLCAwLCA3ODA0NCwgCi0gICAgMzIxLCA0MjI5LCA2NDU0MywgOTE3OTQ2LCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDAsIDkxOTUsIAotICAgIDkyMzg2LCAxODYxLCAwLCA3MzczMywgMCwgMCwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIDM4NTksIDEyMTgxLCA0MTY2MCwgCi0gICAgODIwOSwgMCwgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMCwgNzQzLCA0NDE0LCAKKyAgICAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIDAsIDEwMzg5LCAxMjY0ODUsIDAsIDQ4OTUsIAorICAgIDY1MzU4LCAwLCA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMCwgMCwgCisgICAgNzAwNCwgMCwgNjU4ODAsIDEyNzg4NiwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgMCwgOTM5OTYsIDIzNzYsIDAsIDExOTMyMCwgCisgICAgMCwgNTE5NywgMTI3MDQ2LCAxMjcwNDcsIDEyNzA0OCwgMjM2NiwgMTI3MDUwLCAxMjcwNTEsIDEyMDU1NCwgMTIwMDQ1LCAwLCAKKyAgICAwLCAwLCA5ODMwODQsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgOTgzMDg2LCA5ODM1NzMsIDEyMDA0NywgMTI4NTc1LCAwLCAKKyAgICAwLCAxMjAwNDksIDAsIDE4NDcsIDAsIDEwMzM5LCA5ODMzNTcsIDQyMzg0LCAwLCA0MjI3LCA3NDE1OCwgMCwgOTI1MDEsIAorICAgIDQzMDMyLCAwLCA0MjM2NSwgMCwgMTI2NzEsIDExMzg0LCAwLCA5ODM0NTcsIDAsIDY0Nzk3LCA5ODMzMzcsIDU4MjAsIAorICAgIDk4MzMzNiwgMTIwMDUyLCAxMjAwNjUsIDAsIDEyMDA2NCwgMTIwNjUwLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIAorICAgIDEyMDA2MywgMCwgNzM3NywgMTI3ODY3LCA0MTc5OSwgNjU1MzAsIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgCisgICAgOTgzMzMyLCAxMTg5MzgsIDAsIDEwODUzLCA5MjYsIDk4MzM2MSwgNzQxODQsIDk4MzM2MCwgMTIwMDU1LCAwLCA0MzE3NSwgCisgICAgMCwgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAorICAgIDEyNjk5LCA4MzMxLCAwLCAzMDkxLCA0MTAzNCwgMTI3MzUzLCA5ODM2NzIsIDgzNjAsIDAsIDc4MDQ0LCAzMjEsIDQyMjksIAorICAgIDY0NTQzLCA5MTc5NDYsIDY1NTYzLCAwLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMCwgOTE5NSwgOTIzODYsIAorICAgIDE4NjEsIDAsIDczNzMzLCAwLCAwLCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCAKKyAgICAwLCA3Mzg2NywgMTI5NzMsIDAsIDc0NzU3LCAxMjc1MTQsIDQxNjU4LCAwLCAwLCA1NzYwLCAwLCA3NDMsIDQ0MTQsIAogICAgIDEyMDc2NiwgMCwgNDI2MzIsIDkxNzk3MywgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIAogICAgIDQzMzQxLCAwLCAxOTkxOSwgMCwgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMCwgMCwgMzUxMywgMCwgMTE4ODgzLCA0MzM0MiwgCiAgICAgMTE5MDY0LCA2NTUyOSwgNjUzNjQsIDEyODE5NywgMCwgNjQ4NSwgMTM5NywgMCwgNDE5ODYsIDkyNjc4LCAwLCAwLCAKLSAgICA3NDA5NywgMCwgNzQ3MSwgMTIwNzksIDAsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDAsIDAsIDAsIDAsIDEwOTksIAotICAgIDEwNDkwLCAwLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAwLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAKLSAgICAwLCA5MTc2MzEsIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgMCwgODI3MiwgMTI3ODEyLCAxOTkxMSwgNDIxOCwgCi0gICAgMzA4NywgNjQ5NjAsIDEyNzIzNCwgNDM1NjQsIDAsIDAsIDk1ODQsIDEwNDY1LCAwLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIAotICAgIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCA0MTc5NSwgNjQ2NjYsIDAsIDQzNTMwLCAKLSAgICAyNzUyLCAwLCAwLCAwLCA1OSwgMCwgMCwgMCwgOTIzNzEsIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIAotICAgIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAKLSAgICAxMzEyNywgMTIwMDY3LCAwLCAwLCAwLCA5MTc5NzcsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgCi0gICAgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIAotICAgIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgCi0gICAgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIAotICAgIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIAotICAgIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgCi0gICAgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgMCwgMCwgNDM3MywgNzgwNTgsIDAsIAotICAgIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIDAsIDkyMzY1LCAwLCA2NDkyMiwgMCwgODE5MCwgCi0gICAgMTIwODMsIDAsIDAsIDY1MDYsIDY0MzEyLCA3NDM3NCwgMjM2OCwgMCwgNDQxOSwgMCwgMTE5MTI1LCAzNDM5LCAxODI1LCAKLSAgICAxMTkyLCAxMjAxMDYsIDg4OTEsIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCAKLSAgICA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCAKLSAgICA2NDgyNiwgMCwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDAsIAotICAgIDEyMTEyLCAwLCAwLCAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgCi0gICAgNzgyNTgsIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIAotICAgIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCAwLCA2OTgxNiwgCisgICAgNzQwOTcsIDAsIDc0NzEsIDEyMDc5LCA2Nzk5NywgMTI2ODIsIDQzMjg3LCA5MjMxNywgMCwgOTgzMTQzLCA5ODM2OTgsIDAsIAorICAgIDAsIDEwOTksIDEwNDkwLCAwLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAwLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIAorICAgIDc4MjIyLCAxMzQ2LCAwLCA5MTc2MzEsIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgMCwgODI3MiwgMTI3ODEyLCAKKyAgICAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyNzIzNCwgNDM1NjQsIDAsIDAsIDk1ODQsIDEwNDY1LCA5ODM4OTMsIAorICAgIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIDEyMDIzMCwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAwLCAwLCAyNjUsIAorICAgIDQxNzk1LCA2NDY2NiwgMTI2NTA4LCA0MzUzMCwgMjc1MiwgMCwgMCwgOTgzNDg1LCA1OSwgMCwgOTgzNTkzLCAwLCA5MjM3MSwgCisgICAgNzc4NzMsIDQxODEwLCAwLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgMCwgNDIyNTIsIDQyMjEzLCA4MDA5LCAKKyAgICAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNjYyNTUsIDEzMTI3LCAxMjAwNjcsIDAsIDc0Mzk3LCAxMjAyMzUsIDkxNzk3NywgCisgICAgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgMTk0ODcwLCAyMTAzLCAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgCisgICAgMTMxNTksIDAsIDY0ODEsIDQxMjEzLCAwLCAwLCAwLCAwLCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgMCwgCisgICAgNDYyLCA2ODExMCwgMTA0OTMsIDAsIDgxMjksIDAsIDAsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAKKyAgICAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgMTE5MDEzLCA0MzM0MCwgMCwgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAwLCAKKyAgICAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAKKyAgICAwLCA0MTg0MSwgNDMzMzgsIDAsIDAsIDU3MjYsIDY0OTE1LCA0MjE3NSwgMCwgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIAorICAgIDI4NTEsIDQzMDE3LCA5ODM1ODksIDAsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIAorICAgIDAsIDY1MzYwLCAwLCA5MjM2NSwgOTE3Nzg5LCA2NDkyMiwgMCwgODE5MCwgMTIwODMsIDAsIDAsIDY1MDYsIDY0MzEyLCAKKyAgICA3NDM3NCwgMjM2OCwgMCwgNDQxOSwgOTgzODM4LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEyMDEwNiwgODg5MSwgCisgICAgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAwLCA4OTkwLCAyODQ4LCAwLCAxMjgyMjMsIDkyNTI4LCAyNDksIDAsIDAsIDAsIAorICAgIDEyMDY1OCwgMCwgMCwgODg4MywgOTE3ODAyLCA3MjgsIDY4MTc4LCA5OTUsIDAsIDAsIDY0ODI2LCAwLCA5MTc3OTgsIAorICAgIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIDE5NDgxNCwgOTgzODQxLCAxMjExMiwgNjk5MTIsIDAsIAorICAgIDAsIDc0NDE5LCAxMjMzNSwgMTIwMTA0LCA5MTc3OTUsIDM0NDMsIDMxMjksIDAsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgCisgICAgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCA3ODI1NSwgMCwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMCwgNDE4OTQsIDAsIAorICAgIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyODY3OCwgMzU0MCwgMTI4NjQ5LCA4MzUsIDcxMzQwLCA2OTgxNiwgCiAgICAgMTE5ODY4LCA3NDQwOCwgMCwgNzM5NTksIDU0MjYsIDQyNTgsIDAsIDAsIDU0MjQsIDEyODEyNywgODI4MywgMCwgNTQzNCwgCi0gICAgMCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgNjQ4NiwgCi0gICAgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDAsIDQzMSwgMCwgMCwgCi0gICAgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCAwLCAxMzA5NiwgMTI4NjQzLCAwLCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCAKLSAgICA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAKLSAgICAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAwLCA3ODcxOCwgCi0gICAgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgOTA5NywgMCwgNDMwMTUsIAotICAgIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDAsIDAsIDAsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgCi0gICAgMTE4ODE4LCAwLCA1ODcyLCA2NDk1LCAwLCAwLCAwLCA5MjU0MywgMCwgMTIwNzMzLCAxMjg0OSwgMzk1MywgMTg5NywgMCwgCi0gICAgNjUwOTQsIDExOTk0LCA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAwLCAwLCAwLCA2ODQ3MywgNzQxMDQsIDUyMjgsIAotICAgIDEyODgwNCwgNzg2OCwgNDMxODQsIDAsIDAsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIDAsIDExNjIsIDAsIDI2NzEsIDAsIAotICAgIDAsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgMCwgMTk1MDA1LCAwLCAwLCAxOTkyMSwgNzQzMzEsIAotICAgIDExNDI0LCAxOTUwMDYsIDQ1NjcsIDQxODkxLCAwLCAwLCA1NTI0OSwgNDgyMCwgNjUyMzksIDE5NDY2MiwgMCwgMCwgCi0gICAgNDMwNDIsIDExOTIxMiwgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCAwLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgCi0gICAgMTEzMzEsIDYxNDcsIDE5NDk0MSwgNDMyODIsIDg4MzMsIDAsIDAsIDY1MDQsIDc4NDA4LCAxMjY5NzksIDEwNzE5LCAwLCAKLSAgICAxODk4LCAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMCwgMTk0NjcxLCA2NjQ4LCAxMDY3MSwgMjUyOCwgMCwgNjQ3ODksIAotICAgIDkxNjksIDgzOCwgMTI3MDkyLCAxMjA2OTcsIDg0NCwgNTAxNCwgMCwgMjU2LCAwLCA5OTkwLCAwLCA0MjczOSwgOTE3ODUxLCAKLSAgICA3NTQyLCA2NTQ2NCwgOTcyNiwgMCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgCi0gICAgMTE3NjEsIDE5NDY1NSwgMCwgNDEwOTQsIDAsIDAsIDAsIDAsIDkyNjg5LCA2MTk2LCA2OTQ1LCAxOTQ2MjgsIDE5NDg5MCwgCi0gICAgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgCi0gICAgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIDAsIDE2NjAsIDczOTE2LCAwLCAxMTg5MDUsIDc0MzYyLCAKLSAgICAwLCA5MjQ4NSwgMTk0NjUxLCAwLCAwLCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgMCwgMTI3MzU4LCA2NjIxOSwgCi0gICAgMTI3MTgzLCA0MzI4NCwgMTk0NjU3LCA3ODE3LCAxODQxLCAxMTA1NSwgMTIwNTMzLCAxOTQ5NzksIDE5NDk4MiwgMTY2OSwgCi0gICAgMTA3NzYsIDE5NDk4MSwgNzcwMSwgMTk0OTgwLCAwLCAxOTQ5OTUsIDE3MzIsIDQwMzAsIDAsIDM5NjMsIDY2NjExLCAKLSAgICAxMjc1MzAsIDQxNzY4LCA2NDkxLCAwLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgMCwgNzg3MTMsIDY1MzI4LCAKLSAgICA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIAotICAgIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgCi0gICAgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIAotICAgIDY0NDg2LCAxMjczNzQsIDAsIDAsIDAsIDAsIDAsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIAotICAgIDExOTc1LCAxOTQ4NzgsIDAsIDkyNjA0LCAyNTU1LCA4NjI5LCAwLCA0MzE2OCwgNDE4NzIsIDQzNzA2LCA0NDk2LCAKLSAgICAxOTQ4NzksIDEyODE0OCwgMCwgMCwgMCwgMCwgMCwgNjQ3MzAsIDAsIDY2NzE0LCA2ODIyMiwgMCwgMCwgNjU1OTYsIAotICAgIDkyMzA2LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjcyNDIsIDY3ODcxLCA3NDM4NiwgCi0gICAgMCwgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCAKLSAgICA0MjgyMCwgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCAwLCAKLSAgICAzNDA2LCAxMDU0LCAxMTkwNjUsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAotICAgIDEyODcwNSwgMCwgMCwgOTY5MywgNDE5NDMsIDAsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDAsIDEwNTksIDk3OTAsIAotICAgIDg5OTUsIDEyODI4NiwgMCwgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCA5MjM3MiwgMCwgNzQ4MzAsIAotICAgIDc4NTY5LCAxMjc0MywgMCwgNjQ4MCwgOTE3NzYxLCA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgMTE5NjE5LCA2MzM1LCAKLSAgICA2NjYwMiwgMTEzMTIsIDY0ODA3LCAwLCAwLCA0MTc2NywgMCwgMCwgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDAsIAotICAgIDkxNzg2MSwgMCwgNzc5MjYsIDk3NzAsIDkyNDYsIDEyMjMwLCAwLCAwLCAwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAKLSAgICAxMjcwOTMsIDEyNzk3LCAyNzU1LCA2NDU3MSwgNzg1NzgsIDE5NDkyNywgNDg1NywgMCwgNDQyOCwgMTI3OTQsIDczNzU1LCAKLSAgICAxMjgwNjEsIDc4NTc0LCAwLCAwLCAwLCA1NzQ3LCA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgCi0gICAgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAwLCAxMjc5OCwgMTEyNzEsIDU3LCAwLCAwLCA5MTc4NjAsIAotICAgIDExOTA0MywgMCwgMTE5MTM0LCA0MzEzNywgNjk0LCAwLCA5ODc2LCAwLCAxMTkxNjgsIDAsIDc4ODIyLCA2NDUzNywgMCwgCi0gICAgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDAsIDAsIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDAsIDE1NzQsIDczODEsIAotICAgIDAsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIAotICAgIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCAKLSAgICA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCA4MDUxLCAwLCAxMTk2MDksIDAsIDk2NDQsIDAsIDAsIDAsIDE5NDkxNiwgCi0gICAgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCAwLCA3MzkwNiwgMCwgMTI3MTE0LCAwLCAxMDIzNCwgNTg0MywgMTE5MzksIDAsIAotICAgIDQyMTU3LCAwLCAzMTU3LCAxOTQ5MTgsIDY4MzkzLCAwLCAzNTA0LCAxMTkxNzgsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgCi0gICAgMTAyMjYsIDY1MTQyLCAwLCAzNTk0LCA0MjQyNCwgMTk0OTU5LCA0MCwgMTI2NTcsIDAsIDAsIDM4NiwgMCwgODgzNCwgMCwgCi0gICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNzc5MzIsIDQzMDQsIAotICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAwLCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDAsIDEzMzAzLCAwLCAKLSAgICA5MjM5MiwgMTk0NzU1LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDAsIDAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIAotICAgIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCAxOTQ3NjIsIAotICAgIDI2NzIsIDM3MzUsIDEyNzQ3MSwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDExOTAyNCwgMCwgNDM3NDIsIAotICAgIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgMTI3OTc2LCAKLSAgICAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIDE5NDg1NSwgCi0gICAgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDAsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAxOTYyLCAKLSAgICA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMCwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCA1NDM3LCA3NDE3NCwgCi0gICAgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCAwLCAxOTksIDE5NDg0MywgNDEwNSwgMTk0ODQ1LCAxOTQ2OTksIDE5NDg0NywgCi0gICAgMTk0NzEwLCAxMTk4NzUsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0ODAsIDE5NTA3MCwgNjQ3MiwgNjU4MTQsIAotICAgIDczOTU0LCAwLCA0NzI0LCAwLCAwLCA5MTkxLCAwLCA2NDQzMiwgMCwgMCwgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgCi0gICAgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDAsIAotICAgIDAsIDEyNzg5MSwgMTI3NDg0LCAxOTQ4MzMsIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgCi0gICAgMTk0ODM4LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIAotICAgIDAsIDE5NDgxOCwgMTI4ODQ1LCAxOTQ4MjAsIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDE5NDgyNSwgCi0gICAgNzM5MjcsIDkyNDQ0LCAxOTQ3MzYsIDY1NzQ2LCAxMjc0NzYsIDc0NDA5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgCi0gICAgMTk0ODMxLCAxNjc3LCAwLCAwLCAxOTQ4MDYsIDkxNzg1NSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAotICAgIDEwMTYwLCAwLCAwLCA3NTg1LCA2NTE2OSwgMjA1MiwgNDMwOCwgOTIxNzQsIDc0MTc3LCA3NTA1LCA1NDMsIDY0OTE2LCAKLSAgICA2NDczNiwgMCwgMCwgNjQ2NTUsIDAsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIDAsIDY1MjY1LCAxOTQ2MzksIDAsIAotICAgIDEyNzE3MCwgMCwgMCwgMCwgMCwgMTI5OTQsIDkyNzI4LCAxMDgyOCwgMCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCAwLCAKLSAgICAwLCAwLCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMCwgODg0MSwgMCwgCi0gICAgNTE2LCAwLCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAotICAgIDc0NTIwLCA3NDMwOCwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDEyMDE3NCwgNjU4NCwgNzc0OSwgCi0gICAgMTEwMzcsIDAsIDE3NTgsIDAsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgCisgICAgOTgzNTkwLCAwLCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTI4MzA3LCAzNDY0LCAKKyAgICA2NDg2LCA0ODE5LCAxMjgyMzMsIDAsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgMTI4NTM5LCAKKyAgICA0MzEsIDAsIDAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgOTgzNjU0LCAxMzA5NiwgMTI4NjQzLCAwLCA0MzQwOCwgOTUxNiwgCisgICAgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgCisgICAgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDE5NTA2NiwgMCwgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgCisgICAgNjYwMzksIDAsIDc4NzE4LCA5MjcyMywgMzU0OSwgMCwgOTExMCwgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTk0ODEyLCAKKyAgICA5MDk3LCAwLCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMCwgMTI2NDk0LCAwLCAwLCA0MjY5NCwgCisgICAgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgMCwgNTg3MiwgNjQ5NSwgMCwgMCwgMCwgOTI1NDMsIDAsIDEyMDczMywgCisgICAgMTI4NDksIDM5NTMsIDE4OTcsIDAsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMCwgCisgICAgNjg0NzMsIDc0MTA0LCA1MjI4LCAxMjg4MDQsIDc4NjgsIDQzMTg0LCAwLCAwLCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAwLCAKKyAgICAxMTYyLCA5MTc4NDcsIDI2NzEsIDAsIDAsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgMCwgMTk1MDA1LCAKKyAgICAwLCAwLCAxOTkyMSwgNzQzMzEsIDExNDI0LCAxOTUwMDYsIDQ1NjcsIDQxODkxLCAwLCA5ODM3NzksIDU1MjQ5LCA0ODIwLCAKKyAgICA2NTIzOSwgMTk0NjYyLCAwLCAxOTQ2NjUsIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgCisgICAgMCwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAxOTQ5NDEsIDQzMjgyLCA4ODMzLCAwLCAwLCA2NTA0LCAKKyAgICA3ODQwOCwgMTI2OTc5LCAxMDcxOSwgMCwgMTg5OCwgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDAsIDE5NDY3MSwgCisgICAgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCA5MTY5LCA4MzgsIDEyMDA4NywgMTIwNjk3LCA4NDQsIDUwMTQsIDAsIAorICAgIDI1NiwgMCwgOTk5MCwgMCwgNDI3MzksIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDAsIDY0ODksIDEwMDQ4LCA3NDMyNiwgCisgICAgNzg3MTksIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxOTQ2NTUsIDAsIDQxMDk0LCAwLCAwLCAxOTQ4OTMsIDAsIAorICAgIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTk0ODkwLCAxMjgxODQsIDEyMDQ5MSwgMTE4MTYsIDE5NDk0MywgNTczMywgCisgICAgMjkzMCwgMCwgMCwgNDEwOTgsIDAsIDQxMDkzLCAwLCA2NjYyNiwgNTg4LCA5NzYwLCAwLCAxOTQ3MTcsIDEyMzgsIDIwMCwgCisgICAgOTgzMjA1LCAxNjYwLCA3MzkxNiwgMCwgMTE4OTA1LCA3NDM2MiwgMCwgOTI0ODUsIDE5NDY1MSwgMCwgOTgzNjk3LCAzMzk0LCAKKyAgICAxOTQ4OTQsIDEyMDY2OCwgMCwgMCwgMTI3MzU4LCA2NjIxOSwgMTI3MTgzLCA0MzI4NCwgMTk0NjU2LCA3ODE3LCAxODQxLCAKKyAgICAxMTA1NSwgMTIwNTMzLCAxOTQ5NzksIDE5NDk4MiwgMTY2OSwgMTA3NzYsIDE5NDk4MSwgNzcwMSwgMTk0OTgwLCAwLCAKKyAgICAxOTQ5OTUsIDE3MzIsIDQwMzAsIDAsIDM5NjMsIDY2NjExLCAxMjc1MzAsIDQxNzY4LCA2NDkxLCAwLCA2NTMyNCwgOTE0LCAKKyAgICA2NTMyMywgODA3MSwgMzUzOCwgMCwgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgMCwgMTE4MTksIDAsIAorICAgIDEyMDA5LCAxMjM5OSwgMCwgNjc4NTIsIDY1NTM3LCAwLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCAKKyAgICA4OTYwLCAwLCA5MjUyNywgNjUzMTcsIDc3ODgwLCAwLCAwLCAwLCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIAorICAgIDAsIDAsIDAsIDExOTYyMSwgOTI1MjksIDc0NTM2LCAxMjQ0NywgNjQ0ODYsIDEyNzM3NCwgMTI2NTYyLCA5ODMxMjksIDAsIAorICAgIDAsIDk4Mzc5MywgNDI3NjcsIDEwOTE1LCAwLCAxMjAwNywgNDM2OTUsIDEyMDUyMCwgMTE5NzUsIDE5NDg3OCwgMCwgCisgICAgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDMxNjgsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCAxMjgxNDgsIAorICAgIDEyMDI0MSwgMCwgMCwgMCwgMCwgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCA2NTU5NiwgOTIzMDYsIAorICAgIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDEyNjQ3MywgNjc4NzEsIDc0Mzg2LCAwLCAKKyAgICA4MjMzLCAxMjgyMCwgMCwgNjY4MywgMTk0ODc2LCAzNDQyLCAxMjE0NCwgMjg0MSwgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCAKKyAgICA2NDMyOSwgMTI3ODMyLCAwLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCA0MTEwMCwgMCwgNDExMDQsIDk0MDAzLCAzNDA2LCAKKyAgICAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDAsIDQ0MzQsIDEwNjksIDAsIDExODg2MiwgNjU3MzcsIDkxNzc2NSwgCisgICAgMTI4NzA1LCAwLCA5ODM2ODQsIDk2OTMsIDQxOTQzLCAxMjY1NjQsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDAsIAorICAgIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTgzNjg3LCA2NTkzNywgMCwgNDE3NjQsIDEwNjQ2LCAwLCAxMTg4MzMsIAorICAgIDkyMzcyLCAwLCA3NDgzMCwgNzg1NjksIDEyNzQzLCA5ODM2ODAsIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgCisgICAgMTIyMDcsIDExOTYxOSwgNjMzNSwgNjY2MDIsIDExMzEyLCA2NDgwNywgMCwgMCwgNDE3NjcsIDExOTYyOSwgOTgzNzU1LCAKKyAgICA0MzAyMCwgMTI4MjcxLCAzOTU1LCA3NDI1NCwgMCwgOTgzNzQ1LCA5MTc4NjEsIDAsIDc3OTI2LCA5NzcwLCA5MjQ2LCAKKyAgICAxMjIzMCwgMCwgMCwgMCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAKKyAgICAxOTQ5MjcsIDQ4NTcsIDAsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTI4MDYxLCA3ODU3NCwgMCwgNzQyODQsIDAsIDU3NDcsIAorICAgIDc4ODI1LCAwLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIAorICAgIDk4MzY4MiwgMTI3OTgsIDExMjcxLCA1NywgMCwgMCwgOTE3ODYwLCAxMTkwNDMsIDAsIDk0MDUxLCA0MzEzNywgNjk0LCAwLCAKKyAgICA5ODc2LCAwLCAxMTkxNjgsIDAsIDc4ODIyLCA2NDUzNywgMCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDAsIDAsIAorICAgIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDEyNjQ3OCwgMTU3NCwgNzM4MSwgMCwgMjUyNSwgNDg1MiwgNTc0OSwgCisgICAgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIAorICAgIDAsIDc0MDE1LCA5MDU1LCA0MTg1MywgNDg1OCwgOTE3NzgwLCAwLCA0MzYsIDQ3NzEsIDAsIDI3ODYsIDAsIDQ4NTYsIAorICAgIDgwNTEsIDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDAsIDAsIDAsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgMTE4ODM0LCAKKyAgICA5ODMzNTEsIDczOTA2LCAxMjg2ODAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCA0MjE1NywgMCwgMzE1NywgCisgICAgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCA2NTE0MiwgCisgICAgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTk0OTU5LCA0MCwgMTI2NTcsIDk4MzY1NiwgMCwgMzg2LCAwLCA4ODM0LCAwLCAKKyAgICAxMjgxNSwgNDM1NzQsIDAsIDczOTA3LCAwLCA3NDE5NiwgNzIyMCwgNzQ1MDQsIDAsIDc0MzE2LCAwLCA2NTMyMiwgNDMwNCwgCisgICAgNzQ1MDMsIDgxNjAsIDc4NzA3LCAxOTQ3NTMsIDAsIDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjY1MzksIAorICAgIDEzMzAzLCAwLCA5MjM5MiwgMTk0NzU1LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDAsIDAsIDc0Mzg3LCA3ODE3OSwgCisgICAgNzg1OTgsIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCAKKyAgICAxOTQ3NjIsIDI2NzIsIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAwLCAKKyAgICA0Mzc0MiwgMCwgOTQ4NywgMTE5OTU5LCAxMTkxMTcsIDM4NDIsIDEyODc2OCwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAKKyAgICAxMjc5NzYsIDAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNzg0NjgsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCisgICAgMTk0ODU1LCAxOTQ2OTAsIDE5NDg1NywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCAKKyAgICA0MjUwNywgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDAsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgCisgICAgNTQzNywgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMCwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgCisgICAgMTk0Njk5LCAxOTQ4NDcsIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDgwLCAxOTUwNzAsIAorICAgIDY0NzIsIDY1ODE0LCA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDk4MzgwOCwgOTgzMjQxLCAKKyAgICAxOTUwMjQsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDAsIDE5NTA1MSwgNjY3OSwgNzQ0MTIsIAorICAgIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgOTgzNjIyLCA5ODM2MjgsIDEyNzg5MSwgMTI3NDg0LCAxOTQ4MzMsIAorICAgIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNzgxOTUsIDY1NDQyLCAKKyAgICAxMTk2MTAsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTk0ODE4LCAxMjg4NDUsIDE5NDgyMCwgCisgICAgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgMTk0ODI1LCA3MzkyNywgOTI0NDQsIDE5NDczNiwgCisgICAgNjU3NDYsIDEyNzQ3NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxOTQ4MzEsIDE2NzcsIDAsIDAsIAorICAgIDEyNjU5MCwgOTE3ODU1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIDAsIDc1ODUsIAorICAgIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAwLCAwLCA2NDY1NSwgMCwgCisgICAgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgMCwgNjUyNjUsIDE5NDYzOSwgMCwgMTI3MTcwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA5ODM5MzQsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgMCwgMCwgMCwgNTA2LCAKKyAgICA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDk4MzY3MSwgODg0MSwgMCwgNTE2LCAKKyAgICA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKKyAgICAxMTgyNywgNzQzMDgsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgNjU4NCwgNzc0OSwgCisgICAgMTEwMzcsIDAsIDE3NTgsIDEyNzA5MiwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAxOTM1LCAxMTUxNywgMTIwMTkzLCAKICAgICAxMjAxOTYsIDEyMDE5NSwgMTkzMSwgMTIwMTg5LCA3NDgzOSwgMTIwMTkxLCAxMjE3LCA2NDcwMiwgMTI2NDMsIDgyNSwgCiAgICAgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNzg4MzQsIDkxMzgsIDc4ODMxLCA3ODgzMywgMTI2MzEsIDc4ODI5LCAKICAgICAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAwLCAxMTMxMywgMCwgMzQwMywgMCwgMCwgNjQzNjQsIDkyMjY5LCAKLSAgICAwLCA3NDU4MiwgODk5OCwgMTI5ODgsIDAsIDkxNTIsIDAsIDAsIDE5NDg5OCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgCi0gICAgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgNjkxNCwgNjc2MDMsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgCi0gICAgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAKLSAgICAxMjY2OCwgMTk0OTA0LCAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDE5NDg4MCwgMTI3MjM1LCA1NzMsIAotICAgIDEyNzI4MiwgMTk0ODg0LCAxMTQxNywgMTk0ODg2LCAxMTk4MTQsIDE5NDg4OCwgNjc1OTksIDAsIDE5NDg4OSwgNjc2MDcsIAotICAgIDExNDgyLCAwLCAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg4NDIsIDc4ODM5LCA2ODQxOSwgNzg4MzcsIAotICAgIDExNTg5LCA0MjE5NSwgMTk0ODcyLCAxOTQ1OTksIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgNDI3ODgsIAotICAgIDY4NDE2LCA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY4NDc2LCA5NzE3LCAwLCAwLCA5OTcsIDAsIDAsIAotICAgIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgCi0gICAgNzM3OTYsIDAsIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDAsIDczNzkzLCAwLCA0MTcyLCAwLCAwLCA4MzczLCAKKyAgICAwLCA3NDU4MiwgODk5OCwgMTI5ODgsIDAsIDkxNTIsIDk4Mzg0MCwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAKKyAgICAzNDMzLCA5MjM5MywgMTI2MTUsIDE1OTQsIDQyMTkyLCA2OTE0LCA2NzYwMywgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIAorICAgIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgCisgICAgNDEzOTMsIDEyNjY4LCAxOTQ5MDQsIDI0NzcsIDEyNzI4NSwgMCwgMTI3MzAxLCAwLCA2NzYwNCwgMTk0ODgwLCAxMjcyMzUsIAorICAgIDU3MywgMTI3MjgyLCAxOTQ4ODQsIDExNDE3LCAxOTQ4ODYsIDExOTgxNCwgMTk0ODg4LCA2NzU5OSwgMCwgMTk0ODg5LCAKKyAgICA2NzYwNywgMTE0ODIsIDAsIDM5ODEsIDMzNTcsIDAsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODg0MiwgNzg4MzksIDY4NDE5LCAKKyAgICA3ODgzNywgMTE1ODksIDQyMTk1LCAxOTQ4NzIsIDE5NDU5OSwgMTI3MjYzLCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAwLCAKKyAgICA0Mjc4OCwgNjg0MTYsIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjg0NzYsIDk3MTcsIDAsIDAsIDk5NywgMCwgCisgICAgMCwgOTI1NzcsIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCAKKyAgICA3Mzc5NiwgMCwgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCAwLCA0MTcyLCAwLCAwLCA4MzczLCAKICAgICAxMDg3MywgMTIxOTcsIDAsIDAsIDkyMjY1LCA2OTcwNiwgMCwgNzgyMTAsIDAsIDEyODExMCwgMTk0ODY1LCAxMjY5ODIsIAogICAgIDc0NTYzLCA2NDgyOCwgMTE0MTksIDE5NDg2OCwgNzY2LCAxMjU3LCAwLCAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgCi0gICAgMzI3NCwgMTI3MzY1LCAwLCAwLCAwLCA3NDUyMiwgNDE5ODksIDAsIDAsIDEyODc5OCwgMzI2MywgMCwgNjU2NzIsIDAsIAotICAgIDMyNzAsIDY0NTM5LCAxMTQ4OSwgMCwgMCwgMCwgMCwgOTUwNSwgNjU1MTgsIDE5NDc3NiwgNzU2LCAxOTQ2MDUsIDAsIDAsIAotICAgIDAsIDcyNjEsIDAsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIAotICAgIDEyODAwLCAwLCA3NDIwMywgNjQ3MTgsIDAsIDAsIDkyNDM0LCAxMTg5MjksIDAsIDExNTc4LCAwLCAxMTkyOTYsIDAsIDAsIAotICAgIDAsIDAsIDc0NTY4LCA5MjU0LCAwLCAxNzk0LCAxMjAyMTcsIDY0NTIxLCA1NjI0LCAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAKLSAgICAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgMTIwMjExLCAxMjAyMTIsIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgCi0gICAgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgMCwgOTI1MjYsIDQ1MTEsIDAsIDAsIDY0Njc4LCAKLSAgICAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDE5NDc4MywgMCwgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIAotICAgIDg2OTQsIDk1NDYsIDAsIDAsIDEyMDQ3OCwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIAotICAgIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCA0MjEzMSwgMCwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgODM3LCAKLSAgICAxMDU2NywgMCwgNDMxMDMsIDAsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNjY0NjQsIDEwNzU2LCAwLCAKLSAgICA0MjYwNiwgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAKLSAgICAxMjc3NzEsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgCi0gICAgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgCi0gICAgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAKLSAgICAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDAsIAotICAgIDAsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAxMTMzLCA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgCi0gICAgNDEzNDAsIDExODk3NSwgMTk0ODM1LCAxMDAwNSwgMTIzMjksIDQxMzMzLCAwLCA4NDg5LCAxOTQyLCAwLCAxOTQ4MzQsIAotICAgIDQyNTIwLCAxMjgyNDksIDAsIDAsIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMCwgNjQwMjUsIAotICAgIDkxNjcsIDQyMTUxLCA3ODI0NCwgMCwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAwLCA3NTgyLCAKLSAgICA3ODI1MiwgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDAsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCAKLSAgICA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIAotICAgIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAwLCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgCi0gICAgMjk0LCA0MTg3NCwgMCwgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgCi0gICAgMTk0ODQ0LCAwLCAxMTg3OTUsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIDAsIDExOTg4NiwgMTE5ODkxLCAxMTk4OTIsIAotICAgIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAwLCA3ODAxLCA2NTU3OCwgMTk0ODM5LCAxMjkxNSwgNDM5NjgsIAotICAgIDMyOTcsIDk2OTksIDE5NDk1NSwgMTEzNSwgMCwgMCwgMTI4NTI1LCAxOTk1LCA2NzIyLCAwLCAwLCAyNTUyLCA0MTU0NiwgCi0gICAgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgNzg0OTYsIDAsIDAsIDY2ODIsIDAsIDc4Njc5LCA2NDcxMCwgNDE1NDcsIDAsIAotICAgIDIwMTMsIDEyODI5MSwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCi0gICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCAwLCA3ODUzMywgMzQ2NiwgMCwgMCwgMTk5NiwgMCwgMzQ1MywgNjI4MiwgMCwgCi0gICAgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDAsIDQxNzksIDY1MTE5LCAxOTk4LCAwLCAxODQyLCAwLCA5MjY3NCwgOTYyOCwgCi0gICAgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgMCwgMCwgMTIwMjAxLCAwLCAwLCAwLCAzMDU5LCA0NDAyNCwgCi0gICAgMTIwMjA0LCAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAzNTkyLCAKLSAgICAxMDA3OCwgMCwgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgCi0gICAgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDMyNzQsIDEyNzM2NSwgMTI2NTIzLCA5NDA0MiwgOTgzOTQxLCA3NDUyMiwgNDE5ODksIDAsIDAsIDEyODc5OCwgMzI2MywgMCwgCisgICAgNjU2NzIsIDAsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgMCwgMCwgMCwgMCwgOTUwNSwgNjU1MTgsIDE5NDc3NiwgNzU2LCAKKyAgICAxOTQ2MDUsIDAsIDAsIDAsIDcyNjEsIDAsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAKKyAgICAxMjk0OSwgNjQ4NTYsIDEyODAwLCA5ODM4OTIsIDc0MjAzLCA2NDcxOCwgMTE1MDcsIDAsIDkyNDM0LCAxMTg5MjksIDAsIAorICAgIDExNTc4LCAwLCAxMTkyOTYsIDAsIDAsIDAsIDAsIDc0NTY4LCA5MjU0LCAwLCAxNzk0LCAxMjAyMTcsIDY0NTIxLCA1NjI0LCAKKyAgICAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgOTQwNjEsIDEyMDIxMiwgCisgICAgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAwLCAKKyAgICA5ODM3NjIsIDkyNTI2LCA0NTExLCAwLCA5ODM4NjgsIDY0Njc4LCAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDE5NDc4MywgCisgICAgNjk5MDMsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCA5NTQ2LCAwLCAwLCAxMjA0NzgsIAorICAgIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgCisgICAgNDIxMzEsIDAsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIDAsIDQzMTAzLCAwLCAxMjA3NTQsIAorICAgIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIAorICAgIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIDEwMzQsIDMzOTIsIDEyNzc3MSwgNDMwOTEsIDY0MDMzLCAKKyAgICA2NDAzMiwgNDI3MzUsIDY0MDM4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAxOTQ5MjgsIDY0MDE1LCA2NDAxNCwgCisgICAgNjQ2ODEsIDE5NDkzMCwgMCwgNzgxNDUsIDAsIDQzMDkwLCAwLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCAKKyAgICA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgCisgICAgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjU4LCAwLCA0NzY3LCA5MzQzLCAKKyAgICA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIAorICAgIDE5NDgzNSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgMCwgODQ4OSwgMTk0MiwgMCwgMTk0ODM0LCA0MjUyMCwgMTI4MjQ5LCAwLCAKKyAgICAwLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDAsIDY0MDI1LCA5MTY3LCA0MjE1MSwgNzgyNDQsIAorICAgIDk4MzIyNiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAwLCA3NTgyLCA3ODI1MiwgNzgyNDgsIAorICAgIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDAsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCA3NTMyLCA0MTQxNCwgCisgICAgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIDEwNzUxLCA5MDUxLCAKKyAgICAxMjA3MjAsIDY3MDgsIDEwNTM1LCAwLCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgMjk0LCA0MTg3NCwgMCwgCisgICAgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAwLCA0MzUxLCAKKyAgICA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAxMTk4ODksIDExNDMzLCAxMTk4OTUsIAorICAgIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCAxOTQ5NTUsIDExMzUsIAorICAgIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgOTgzOTE2LCAwLCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgCisgICAgNzg0OTYsIDk4MzMxOSwgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgOTgzNjIxLCAyMDEzLCAxMjgyOTEsIAorICAgIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIDExOTkwOCwgOTEzNywgCisgICAgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIDIwMDIsIDIwMDAsIAorICAgIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgCisgICAgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgOTgzNjM3LCAwLCAwLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCAKKyAgICAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAzNTkyLCAxMDA3OCwgMCwgCisgICAgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgMzI5NiwgCisgICAgMTI4NjUsIDE5OTcsIDE4OTUsIAogfTsKIAogI2RlZmluZSBjb2RlX21hZ2ljIDQ3CiAjZGVmaW5lIGNvZGVfc2l6ZSAzMjc2OAogI2RlZmluZSBjb2RlX3BvbHkgMzI3NzEKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX3N0YXJ0ID0gMHhmMDAwMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19lbmQgPSAweGYwMWMxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lX2FsaWFzZXNbXSA9IHsKKyAgICAweDAwMDAsCisgICAgMHgwMDAwLAorICAgIDB4MDAwMSwKKyAgICAweDAwMDEsCisgICAgMHgwMDAyLAorICAgIDB4MDAwMiwKKyAgICAweDAwMDMsCisgICAgMHgwMDAzLAorICAgIDB4MDAwNCwKKyAgICAweDAwMDQsCisgICAgMHgwMDA1LAorICAgIDB4MDAwNSwKKyAgICAweDAwMDYsCisgICAgMHgwMDA2LAorICAgIDB4MDAwNywKKyAgICAweDAwMDcsCisgICAgMHgwMDA4LAorICAgIDB4MDAwOCwKKyAgICAweDAwMDksCisgICAgMHgwMDA5LAorICAgIDB4MDAwOSwKKyAgICAweDAwMDksCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBCLAorICAgIDB4MDAwQiwKKyAgICAweDAwMEIsCisgICAgMHgwMDBDLAorICAgIDB4MDAwQywKKyAgICAweDAwMEQsCisgICAgMHgwMDBELAorICAgIDB4MDAwRSwKKyAgICAweDAwMEUsCisgICAgMHgwMDBFLAorICAgIDB4MDAwRiwKKyAgICAweDAwMEYsCisgICAgMHgwMDBGLAorICAgIDB4MDAxMCwKKyAgICAweDAwMTAsCisgICAgMHgwMDExLAorICAgIDB4MDAxMSwKKyAgICAweDAwMTIsCisgICAgMHgwMDEyLAorICAgIDB4MDAxMywKKyAgICAweDAwMTMsCisgICAgMHgwMDE0LAorICAgIDB4MDAxNCwKKyAgICAweDAwMTUsCisgICAgMHgwMDE1LAorICAgIDB4MDAxNiwKKyAgICAweDAwMTYsCisgICAgMHgwMDE3LAorICAgIDB4MDAxNywKKyAgICAweDAwMTgsCisgICAgMHgwMDE4LAorICAgIDB4MDAxOSwKKyAgICAweDAwMTksCisgICAgMHgwMDFBLAorICAgIDB4MDAxQSwKKyAgICAweDAwMUIsCisgICAgMHgwMDFCLAorICAgIDB4MDAxQywKKyAgICAweDAwMUMsCisgICAgMHgwMDFDLAorICAgIDB4MDAxRCwKKyAgICAweDAwMUQsCisgICAgMHgwMDFELAorICAgIDB4MDAxRSwKKyAgICAweDAwMUUsCisgICAgMHgwMDFFLAorICAgIDB4MDAxRiwKKyAgICAweDAwMUYsCisgICAgMHgwMDFGLAorICAgIDB4MDAyMCwKKyAgICAweDAwN0YsCisgICAgMHgwMDdGLAorICAgIDB4MDA4MCwKKyAgICAweDAwODAsCisgICAgMHgwMDgxLAorICAgIDB4MDA4MSwKKyAgICAweDAwODIsCisgICAgMHgwMDgyLAorICAgIDB4MDA4MywKKyAgICAweDAwODMsCisgICAgMHgwMDg0LAorICAgIDB4MDA4NCwKKyAgICAweDAwODUsCisgICAgMHgwMDg1LAorICAgIDB4MDA4NiwKKyAgICAweDAwODYsCisgICAgMHgwMDg3LAorICAgIDB4MDA4NywKKyAgICAweDAwODgsCisgICAgMHgwMDg4LAorICAgIDB4MDA4OCwKKyAgICAweDAwODksCisgICAgMHgwMDg5LAorICAgIDB4MDA4OSwKKyAgICAweDAwOEEsCisgICAgMHgwMDhBLAorICAgIDB4MDA4QSwKKyAgICAweDAwOEIsCisgICAgMHgwMDhCLAorICAgIDB4MDA4QiwKKyAgICAweDAwOEMsCisgICAgMHgwMDhDLAorICAgIDB4MDA4QywKKyAgICAweDAwOEQsCisgICAgMHgwMDhELAorICAgIDB4MDA4RCwKKyAgICAweDAwOEUsCisgICAgMHgwMDhFLAorICAgIDB4MDA4RSwKKyAgICAweDAwOEYsCisgICAgMHgwMDhGLAorICAgIDB4MDA4RiwKKyAgICAweDAwOTAsCisgICAgMHgwMDkwLAorICAgIDB4MDA5MSwKKyAgICAweDAwOTEsCisgICAgMHgwMDkxLAorICAgIDB4MDA5MiwKKyAgICAweDAwOTIsCisgICAgMHgwMDkyLAorICAgIDB4MDA5MywKKyAgICAweDAwOTMsCisgICAgMHgwMDk0LAorICAgIDB4MDA5NCwKKyAgICAweDAwOTUsCisgICAgMHgwMDk1LAorICAgIDB4MDA5NiwKKyAgICAweDAwOTYsCisgICAgMHgwMDk2LAorICAgIDB4MDA5NywKKyAgICAweDAwOTcsCisgICAgMHgwMDk3LAorICAgIDB4MDA5OCwKKyAgICAweDAwOTgsCisgICAgMHgwMDk5LAorICAgIDB4MDA5OSwKKyAgICAweDAwOUEsCisgICAgMHgwMDlBLAorICAgIDB4MDA5QiwKKyAgICAweDAwOUIsCisgICAgMHgwMDlDLAorICAgIDB4MDA5QywKKyAgICAweDAwOUQsCisgICAgMHgwMDlELAorICAgIDB4MDA5RSwKKyAgICAweDAwOUUsCisgICAgMHgwMDlGLAorICAgIDB4MDA5RiwKKyAgICAweDAwQTAsCisgICAgMHgwMEFELAorICAgIDB4MDFBMiwKKyAgICAweDAxQTMsCisgICAgMHgwMzRGLAorICAgIDB4MENERSwKKyAgICAweDBFOUQsCisgICAgMHgwRTlGLAorICAgIDB4MEVBMywKKyAgICAweDBFQTUsCisgICAgMHgwRkQwLAorICAgIDB4MTgwQiwKKyAgICAweDE4MEMsCisgICAgMHgxODBELAorICAgIDB4MTgwRSwKKyAgICAweDIwMEIsCisgICAgMHgyMDBDLAorICAgIDB4MjAwRCwKKyAgICAweDIwMEUsCisgICAgMHgyMDBGLAorICAgIDB4MjAyQSwKKyAgICAweDIwMkIsCisgICAgMHgyMDJDLAorICAgIDB4MjAyRCwKKyAgICAweDIwMkUsCisgICAgMHgyMDJGLAorICAgIDB4MjA1RiwKKyAgICAweDIwNjAsCisgICAgMHgyMTE4LAorICAgIDB4MjQ0OCwKKyAgICAweDI0NDksCisgICAgMHhBMDE1LAorICAgIDB4RkUxOCwKKyAgICAweEZFMDAsCisgICAgMHhGRTAxLAorICAgIDB4RkUwMiwKKyAgICAweEZFMDMsCisgICAgMHhGRTA0LAorICAgIDB4RkUwNSwKKyAgICAweEZFMDYsCisgICAgMHhGRTA3LAorICAgIDB4RkUwOCwKKyAgICAweEZFMDksCisgICAgMHhGRTBBLAorICAgIDB4RkUwQiwKKyAgICAweEZFMEMsCisgICAgMHhGRTBELAorICAgIDB4RkUwRSwKKyAgICAweEZFMEYsCisgICAgMHhGRUZGLAorICAgIDB4RkVGRiwKKyAgICAweEZFRkYsCisgICAgMHgxRDBDNSwKKyAgICAweEUwMTAwLAorICAgIDB4RTAxMDEsCisgICAgMHhFMDEwMiwKKyAgICAweEUwMTAzLAorICAgIDB4RTAxMDQsCisgICAgMHhFMDEwNSwKKyAgICAweEUwMTA2LAorICAgIDB4RTAxMDcsCisgICAgMHhFMDEwOCwKKyAgICAweEUwMTA5LAorICAgIDB4RTAxMEEsCisgICAgMHhFMDEwQiwKKyAgICAweEUwMTBDLAorICAgIDB4RTAxMEQsCisgICAgMHhFMDEwRSwKKyAgICAweEUwMTBGLAorICAgIDB4RTAxMTAsCisgICAgMHhFMDExMSwKKyAgICAweEUwMTEyLAorICAgIDB4RTAxMTMsCisgICAgMHhFMDExNCwKKyAgICAweEUwMTE1LAorICAgIDB4RTAxMTYsCisgICAgMHhFMDExNywKKyAgICAweEUwMTE4LAorICAgIDB4RTAxMTksCisgICAgMHhFMDExQSwKKyAgICAweEUwMTFCLAorICAgIDB4RTAxMUMsCisgICAgMHhFMDExRCwKKyAgICAweEUwMTFFLAorICAgIDB4RTAxMUYsCisgICAgMHhFMDEyMCwKKyAgICAweEUwMTIxLAorICAgIDB4RTAxMjIsCisgICAgMHhFMDEyMywKKyAgICAweEUwMTI0LAorICAgIDB4RTAxMjUsCisgICAgMHhFMDEyNiwKKyAgICAweEUwMTI3LAorICAgIDB4RTAxMjgsCisgICAgMHhFMDEyOSwKKyAgICAweEUwMTJBLAorICAgIDB4RTAxMkIsCisgICAgMHhFMDEyQywKKyAgICAweEUwMTJELAorICAgIDB4RTAxMkUsCisgICAgMHhFMDEyRiwKKyAgICAweEUwMTMwLAorICAgIDB4RTAxMzEsCisgICAgMHhFMDEzMiwKKyAgICAweEUwMTMzLAorICAgIDB4RTAxMzQsCisgICAgMHhFMDEzNSwKKyAgICAweEUwMTM2LAorICAgIDB4RTAxMzcsCisgICAgMHhFMDEzOCwKKyAgICAweEUwMTM5LAorICAgIDB4RTAxM0EsCisgICAgMHhFMDEzQiwKKyAgICAweEUwMTNDLAorICAgIDB4RTAxM0QsCisgICAgMHhFMDEzRSwKKyAgICAweEUwMTNGLAorICAgIDB4RTAxNDAsCisgICAgMHhFMDE0MSwKKyAgICAweEUwMTQyLAorICAgIDB4RTAxNDMsCisgICAgMHhFMDE0NCwKKyAgICAweEUwMTQ1LAorICAgIDB4RTAxNDYsCisgICAgMHhFMDE0NywKKyAgICAweEUwMTQ4LAorICAgIDB4RTAxNDksCisgICAgMHhFMDE0QSwKKyAgICAweEUwMTRCLAorICAgIDB4RTAxNEMsCisgICAgMHhFMDE0RCwKKyAgICAweEUwMTRFLAorICAgIDB4RTAxNEYsCisgICAgMHhFMDE1MCwKKyAgICAweEUwMTUxLAorICAgIDB4RTAxNTIsCisgICAgMHhFMDE1MywKKyAgICAweEUwMTU0LAorICAgIDB4RTAxNTUsCisgICAgMHhFMDE1NiwKKyAgICAweEUwMTU3LAorICAgIDB4RTAxNTgsCisgICAgMHhFMDE1OSwKKyAgICAweEUwMTVBLAorICAgIDB4RTAxNUIsCisgICAgMHhFMDE1QywKKyAgICAweEUwMTVELAorICAgIDB4RTAxNUUsCisgICAgMHhFMDE1RiwKKyAgICAweEUwMTYwLAorICAgIDB4RTAxNjEsCisgICAgMHhFMDE2MiwKKyAgICAweEUwMTYzLAorICAgIDB4RTAxNjQsCisgICAgMHhFMDE2NSwKKyAgICAweEUwMTY2LAorICAgIDB4RTAxNjcsCisgICAgMHhFMDE2OCwKKyAgICAweEUwMTY5LAorICAgIDB4RTAxNkEsCisgICAgMHhFMDE2QiwKKyAgICAweEUwMTZDLAorICAgIDB4RTAxNkQsCisgICAgMHhFMDE2RSwKKyAgICAweEUwMTZGLAorICAgIDB4RTAxNzAsCisgICAgMHhFMDE3MSwKKyAgICAweEUwMTcyLAorICAgIDB4RTAxNzMsCisgICAgMHhFMDE3NCwKKyAgICAweEUwMTc1LAorICAgIDB4RTAxNzYsCisgICAgMHhFMDE3NywKKyAgICAweEUwMTc4LAorICAgIDB4RTAxNzksCisgICAgMHhFMDE3QSwKKyAgICAweEUwMTdCLAorICAgIDB4RTAxN0MsCisgICAgMHhFMDE3RCwKKyAgICAweEUwMTdFLAorICAgIDB4RTAxN0YsCisgICAgMHhFMDE4MCwKKyAgICAweEUwMTgxLAorICAgIDB4RTAxODIsCisgICAgMHhFMDE4MywKKyAgICAweEUwMTg0LAorICAgIDB4RTAxODUsCisgICAgMHhFMDE4NiwKKyAgICAweEUwMTg3LAorICAgIDB4RTAxODgsCisgICAgMHhFMDE4OSwKKyAgICAweEUwMThBLAorICAgIDB4RTAxOEIsCisgICAgMHhFMDE4QywKKyAgICAweEUwMThELAorICAgIDB4RTAxOEUsCisgICAgMHhFMDE4RiwKKyAgICAweEUwMTkwLAorICAgIDB4RTAxOTEsCisgICAgMHhFMDE5MiwKKyAgICAweEUwMTkzLAorICAgIDB4RTAxOTQsCisgICAgMHhFMDE5NSwKKyAgICAweEUwMTk2LAorICAgIDB4RTAxOTcsCisgICAgMHhFMDE5OCwKKyAgICAweEUwMTk5LAorICAgIDB4RTAxOUEsCisgICAgMHhFMDE5QiwKKyAgICAweEUwMTlDLAorICAgIDB4RTAxOUQsCisgICAgMHhFMDE5RSwKKyAgICAweEUwMTlGLAorICAgIDB4RTAxQTAsCisgICAgMHhFMDFBMSwKKyAgICAweEUwMUEyLAorICAgIDB4RTAxQTMsCisgICAgMHhFMDFBNCwKKyAgICAweEUwMUE1LAorICAgIDB4RTAxQTYsCisgICAgMHhFMDFBNywKKyAgICAweEUwMUE4LAorICAgIDB4RTAxQTksCisgICAgMHhFMDFBQSwKKyAgICAweEUwMUFCLAorICAgIDB4RTAxQUMsCisgICAgMHhFMDFBRCwKKyAgICAweEUwMUFFLAorICAgIDB4RTAxQUYsCisgICAgMHhFMDFCMCwKKyAgICAweEUwMUIxLAorICAgIDB4RTAxQjIsCisgICAgMHhFMDFCMywKKyAgICAweEUwMUI0LAorICAgIDB4RTAxQjUsCisgICAgMHhFMDFCNiwKKyAgICAweEUwMUI3LAorICAgIDB4RTAxQjgsCisgICAgMHhFMDFCOSwKKyAgICAweEUwMUJBLAorICAgIDB4RTAxQkIsCisgICAgMHhFMDFCQywKKyAgICAweEUwMUJELAorICAgIDB4RTAxQkUsCisgICAgMHhFMDFCRiwKKyAgICAweEUwMUMwLAorICAgIDB4RTAxQzEsCisgICAgMHhFMDFDMiwKKyAgICAweEUwMUMzLAorICAgIDB4RTAxQzQsCisgICAgMHhFMDFDNSwKKyAgICAweEUwMUM2LAorICAgIDB4RTAxQzcsCisgICAgMHhFMDFDOCwKKyAgICAweEUwMUM5LAorICAgIDB4RTAxQ0EsCisgICAgMHhFMDFDQiwKKyAgICAweEUwMUNDLAorICAgIDB4RTAxQ0QsCisgICAgMHhFMDFDRSwKKyAgICAweEUwMUNGLAorICAgIDB4RTAxRDAsCisgICAgMHhFMDFEMSwKKyAgICAweEUwMUQyLAorICAgIDB4RTAxRDMsCisgICAgMHhFMDFENCwKKyAgICAweEUwMUQ1LAorICAgIDB4RTAxRDYsCisgICAgMHhFMDFENywKKyAgICAweEUwMUQ4LAorICAgIDB4RTAxRDksCisgICAgMHhFMDFEQSwKKyAgICAweEUwMURCLAorICAgIDB4RTAxREMsCisgICAgMHhFMDFERCwKKyAgICAweEUwMURFLAorICAgIDB4RTAxREYsCisgICAgMHhFMDFFMCwKKyAgICAweEUwMUUxLAorICAgIDB4RTAxRTIsCisgICAgMHhFMDFFMywKKyAgICAweEUwMUU0LAorICAgIDB4RTAxRTUsCisgICAgMHhFMDFFNiwKKyAgICAweEUwMUU3LAorICAgIDB4RTAxRTgsCisgICAgMHhFMDFFOSwKKyAgICAweEUwMUVBLAorICAgIDB4RTAxRUIsCisgICAgMHhFMDFFQywKKyAgICAweEUwMUVELAorICAgIDB4RTAxRUUsCisgICAgMHhFMDFFRiwKK307CisKK3R5cGVkZWYgc3RydWN0IE5hbWVkU2VxdWVuY2UgeworICAgIGludCBzZXFsZW47CisgICAgUHlfVUNTMiBzZXFbNF07Cit9IG5hbWVkX3NlcXVlbmNlOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19zdGFydCA9IDB4ZjAyMDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19lbmQgPSAweGYwM2E1Oworc3RhdGljIGNvbnN0IG5hbWVkX3NlcXVlbmNlIG5hbWVkX3NlcXVlbmNlc1tdID0geworICAgIHsyLCB7MHgwMTAwLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEwMSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAwNDUsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDY1LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBDOCwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRTgsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEM5LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBFOSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwQ0EsIDB4MDMwNH19LAorICAgIHsyLCB7MHgwMEVBLCAweDAzMDR9fSwKKyAgICB7MiwgezB4MDBDQSwgMHgwMzBDfX0sCisgICAgezIsIHsweDAwRUEsIDB4MDMwQ319LAorICAgIHsyLCB7MHgwMTJBLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEyQiwgMHgwMzAwfX0sCisgICAgezMsIHsweDAwNjksIDB4MDMwNywgMHgwMzAxfX0sCisgICAgezMsIHsweDAwNkUsIDB4MDM2MCwgMHgwMDY3fX0sCisgICAgezIsIHsweDAwNEYsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDZGLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBEMiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRjIsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEQzLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBGMywgMHgwMzI5fX0sCisgICAgezIsIHsweDAwNTMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDczLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTA0LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDEwNSwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMDQsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTA1LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDExOCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTksIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE4LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDExOSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTYsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE3LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExNiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTcsIDB4MDMwM319LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwMH19LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTJFLCAweDAzMDF9fSwKKyAgICB7MywgezB4MDEyRiwgMHgwMzA3LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDEyRSwgMHgwMzAzfX0sCisgICAgezMsIHsweDAxMkYsIDB4MDMwNywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNEEsIDB4MDMwM319LAorICAgIHszLCB7MHgwMDZBLCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRDLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA2QywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNEQsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDZELCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA1MiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNzIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTcyLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE3MywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNzIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTczLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTZBLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE2QiwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwRTYsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjU0LCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1NCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAyOEMsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjhDLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDI1OSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNTksIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMjVBLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1QSwgMHgwMzAxfX0sCisgICAgezMsIHsweDA5OTUsIDB4MDlDRCwgMHgwOUI3fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0R9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0N9fSwKKyAgICB7MywgezB4MEI5NSwgMHgwQkNELCAweDBCQjd9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJCRX19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkJGfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzB9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDMX19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkMyfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzZ9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDN319LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkM4fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0F9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDQn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNDfX0sCisgICAgezQsIHsweDBCQjYsIDB4MEJDRCwgMHgwQkIwLCAweDBCQzB9fSwKKyAgICB7MywgezB4MERDQSwgMHgyMDBELCAweDBEQkF9fSwKKyAgICB7MywgezB4MERDQSwgMHgyMDBELCAweDBEQkJ9fSwKKyAgICB7MywgezB4MERCQiwgMHgwRENBLCAweDIwMER9fSwKKyAgICB7MiwgezB4MTBFMywgMHgwMzAyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4MH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4M319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODR9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg1fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Nn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODd9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg4fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4OX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhCfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Q319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OER9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhFfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Rn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTB9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkxfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Mn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk0fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5NX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5OH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTl9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlBfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5Qn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlEfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5RX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0EwfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBMX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0E3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBQn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QUN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0FGfX0sCisgICAgezIsIHsweDE3QkIsIDB4MTdDNn19LAorICAgIHsyLCB7MHgxN0I2LCAweDE3QzZ9fSwKKyAgICB7MiwgezB4MzA0QiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNEQsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDRGLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA1MSwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNTMsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEFCLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBBRCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQUYsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEIxLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBCMywgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQkIsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEM0LCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBDOCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMxRjcsIDB4MzA5QX19LAorICAgIHsyLCB7MHgwMkU1LCAweDAyRTl9fSwKKyAgICB7MiwgezB4MDJFOSwgMHgwMkU1fX0sCit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eGxpbWl0ZWQuYyBiL01vZHVsZXMveHhsaW1pdGVkLmMKaW5kZXggZWM5MjRmMi4uNjYxYjZlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eGxpbWl0ZWQuYworKysgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCkBAIC0xODcsOCArMTg3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBudWxsX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeVR5cGVfU2xvdCBOdWxsX1R5cGVfc2xvdHNbXSA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvemlwaW1wb3J0LmMgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCmluZGV4IGQ4YzNkOGEuLmNjYmM3ODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemlwaW1wb3J0LmMKKysrIGIvTW9kdWxlcy96aXBpbXBvcnQuYwpAQCAtNDksNyArNDksNyBAQAogLyogZm9yd2FyZCBkZWNscyAqLwogc3RhdGljIFB5T2JqZWN0ICpyZWFkX2RpcmVjdG9yeShQeU9iamVjdCAqYXJjaGl2ZSk7CiBzdGF0aWMgUHlPYmplY3QgKmdldF9kYXRhKFB5T2JqZWN0ICphcmNoaXZlLCBQeU9iamVjdCAqdG9jX2VudHJ5KTsKLXN0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSwKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X21vZHVsZV9jb2RlKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBQeU9iamVjdCAqKnBfbW9kcGF0aCk7CiAKIApAQCAtNjMsMTA5ICs2MywxMDkgQEAKIHN0YXRpYyBpbnQKIHppcGltcG9ydGVyX2luaXQoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqcGF0aG9iaiwgKmZpbGVzOwotICAgIFB5X1VOSUNPREUgKnBhdGgsICpwLCAqcHJlZml4LCBidWZbTUFYUEFUSExFTisyXTsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZpbGVzLCAqdG1wOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4sIGZsZW47CisjaWZkZWYgQUxUU0VQCisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisjZW5kaWYKIAogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoInppcGltcG9ydGVyKCkiLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp6aXBpbXBvcnRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZwYXRob2JqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjb3B5IHBhdGggdG8gYnVmICovCi0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOwogICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJhcmNoaXZlIHBhdGggaXMgZW1wdHkiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmNoaXZlIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkoYnVmLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKSk7CiAKICNpZmRlZiBBTFRTRVAKLSAgICBmb3IgKHAgPSBidWY7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKCpwID09IEFMVFNFUCkKLSAgICAgICAgICAgICpwID0gU0VQOwotICAgIH0KKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBhdGgsICZQeUlkX3JlcGxhY2UsICJDQyIsIEFMVFNFUCwgU0VQKTsKKyAgICBpZiAoIXRtcCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgcGF0aCA9IHRtcDsKICNlbmRpZgogCi0gICAgcGF0aCA9IE5VTEw7Ci0gICAgcHJlZml4ID0gTlVMTDsKKyAgICBmaWxlbmFtZSA9IHBhdGg7CisgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICBmbGVuID0gbGVuOwogICAgIGZvciAoOzspIHsKICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKICAgICAgICAgaW50IHJ2OwogCi0gICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIHBhdGhvYmogPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYnVmLCBsZW4pOwotICAgICAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHJ2ID0gX1B5X3N0YXQocGF0aG9iaiwgJnN0YXRidWYpOworICAgICAgICBydiA9IF9QeV9zdGF0KGZpbGVuYW1lLCAmc3RhdGJ1Zik7CisgICAgICAgIGlmIChydiA9PSAtMikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGlmIChydiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIGlmIChTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCi0gICAgICAgICAgICAgICAgLyogaXQncyBhIGZpbGUgKi8KLSAgICAgICAgICAgICAgICBwYXRoID0gYnVmOworICAgICAgICAgICAgaWYgKCFTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCisgICAgICAgICAgICAgICAgLyogaXQncyBhIG5vdCBmaWxlICovCisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZmlsZW5hbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X0NMRUFSKGZpbGVuYW1lKTsKICAgICAgICAgLyogYmFjayB1cCBvbmUgcGF0aCBlbGVtZW50ICovCi0gICAgICAgIHAgPSBQeV9VTklDT0RFX3N0cnJjaHIoYnVmLCBTRVApOwotICAgICAgICBpZiAocHJlZml4ICE9IE5VTEwpCi0gICAgICAgICAgICAqcHJlZml4ID0gU0VQOwotICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBmbGVuID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhdGgsIFNFUCwgMCwgZmxlbiwgLTEpOworICAgICAgICBpZiAoZmxlbiA9PSAtMSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqcCA9ICdcMCc7Ci0gICAgICAgIGxlbiA9IHAgLSBidWY7Ci0gICAgICAgIHByZWZpeCA9IHA7Ci0gICAgICAgIFB5X0NMRUFSKHBhdGhvYmopOworICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgMCwgZmxlbik7CiAgICAgfQotICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJub3QgYSBaaXAgZmlsZSIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGZpbGVzID0gUHlEaWN0X0dldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgcGF0aG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmaWxlbmFtZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZmlsZXMgPSBQeURpY3RfR2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBmaWxlbmFtZSk7CiAgICAgaWYgKGZpbGVzID09IE5VTEwpIHsKLSAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShwYXRob2JqKTsKKyAgICAgICAgZmlsZXMgPSByZWFkX2RpcmVjdG9yeShmaWxlbmFtZSk7CiAgICAgICAgIGlmIChmaWxlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIHBhdGhvYmosIGZpbGVzKSAhPSAwKQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgZmlsZW5hbWUsIGZpbGVzKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoZmlsZXMpOwogICAgIHNlbGYtPmZpbGVzID0gZmlsZXM7CiAKLSAgICBzZWxmLT5hcmNoaXZlID0gcGF0aG9iajsKLSAgICBwYXRob2JqID0gTlVMTDsKKyAgICAvKiBUcmFuc2ZlciByZWZlcmVuY2UgKi8KKyAgICBzZWxmLT5hcmNoaXZlID0gZmlsZW5hbWU7CisgICAgZmlsZW5hbWUgPSBOVUxMOwogCi0gICAgaWYgKHByZWZpeCAhPSBOVUxMKSB7Ci0gICAgICAgIHByZWZpeCsrOwotICAgICAgICBsZW4gPSBQeV9VTklDT0RFX3N0cmxlbihwcmVmaXgpOwotICAgICAgICBpZiAocHJlZml4W2xlbi0xXSAhPSBTRVApIHsKKyAgICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhIHByZWZpeCBkaXJlY3RvcnkgZm9sbG93aW5nIHRoZSBmaWxlbmFtZS4gKi8KKyAgICBpZiAoZmxlbiAhPSBsZW4pIHsKKyAgICAgICAgdG1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYXRoLCBmbGVuKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocGF0aCkpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzZWxmLT5wcmVmaXggPSB0bXA7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHBhdGgsIGxlbi0xKSAhPSBTRVApIHsKICAgICAgICAgICAgIC8qIGFkZCB0cmFpbGluZyBTRVAgKi8KLSAgICAgICAgICAgIHByZWZpeFtsZW5dID0gU0VQOwotICAgICAgICAgICAgcHJlZml4W2xlbiArIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIGxlbisrOworICAgICAgICAgICAgdG1wID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMiLCBzZWxmLT5wcmVmaXgsIFNFUCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5wcmVmaXgpOworICAgICAgICAgICAgc2VsZi0+cHJlZml4ID0gdG1wOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgbGVuID0gMDsKLSAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocHJlZml4LCBsZW4pOwotICAgIGlmIChzZWxmLT5wcmVmaXggPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQorICAgICAgICBzZWxmLT5wcmVmaXggPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihwYXRob2JqKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgUHlfWERFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC0xOTMsNyArMTkzLDcgQEAKIHsKICAgICBpZiAoc2VsZi0+YXJjaGl2ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjx6aXBpbXBvcnRlciBvYmplY3QgXCI/Pz9cIj4iKTsKLSAgICBlbHNlIGlmIChzZWxmLT5wcmVmaXggIT0gTlVMTCAmJiBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+cHJlZml4KSAhPSAwKQorICAgIGVsc2UgaWYgKHNlbGYtPnByZWZpeCAhPSBOVUxMICYmIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPnByZWZpeCkgIT0gMCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8emlwaW1wb3J0ZXIgb2JqZWN0IFwiJVUlYyVVXCI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwgc2VsZi0+cHJlZml4KTsKICAgICBlbHNlCkBAIC0yMDIsNDkgKzIwMiw1OCBAQAogfQogCiAvKiByZXR1cm4gZnVsbG5hbWUuc3BsaXQoIi4iKVstMV0gKi8KLXN0YXRpYyBjaGFyICoKLWdldF9zdWJuYW1lKGNoYXIgKmZ1bGxuYW1lKQorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9zdWJuYW1lKFB5T2JqZWN0ICpmdWxsbmFtZSkKIHsKLSAgICBjaGFyICpzdWJuYW1lID0gc3RycmNocihmdWxsbmFtZSwgJy4nKTsKLSAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQotICAgICAgICBzdWJuYW1lID0gZnVsbG5hbWU7Ci0gICAgZWxzZQotICAgICAgICBzdWJuYW1lKys7Ci0gICAgcmV0dXJuIHN1Ym5hbWU7CisgICAgUHlfc3NpemVfdCBsZW4sIGRvdDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZ1bGxuYW1lKTsKKyAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIoZnVsbG5hbWUsICcuJywgMCwgbGVuLCAtMSk7CisgICAgaWYgKGRvdCA9PSAtMSkgeworICAgICAgICBQeV9JTkNSRUYoZnVsbG5hbWUpOworICAgICAgICByZXR1cm4gZnVsbG5hbWU7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKGZ1bGxuYW1lLCBkb3QrMSwgbGVuKTsKIH0KIAogLyogR2l2ZW4gYSAoc3ViKW1vZHVsZW5hbWUsIHdyaXRlIHRoZSBwb3RlbnRpYWwgZmlsZSBwYXRoIGluIHRoZQogICAgYXJjaGl2ZSAod2l0aG91dCBleHRlbnNpb24pIHRvIHRoZSBwYXRoIGJ1ZmZlci4gUmV0dXJuIHRoZQotICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLiAqLwotc3RhdGljIGludAotbWFrZV9maWxlbmFtZShQeU9iamVjdCAqcHJlZml4X29iaiwgY2hhciAqbmFtZSwgY2hhciAqcGF0aCwgc2l6ZV90IHBhdGhzaXplKQorICAgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nLgorCisgICByZXR1cm4gc2VsZi5wcmVmaXggKyBuYW1lLnJlcGxhY2UoJy4nLCBvcy5zZXApICovCitzdGF0aWMgUHlPYmplY3QqCittYWtlX2ZpbGVuYW1lKFB5T2JqZWN0ICpwcmVmaXgsIFB5T2JqZWN0ICpuYW1lKQogewotICAgIHNpemVfdCBsZW47Ci0gICAgY2hhciAqcDsKLSAgICBQeU9iamVjdCAqcHJlZml4OworICAgIFB5T2JqZWN0ICpwYXRob2JqOworICAgIFB5X1VDUzQgKnAsICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICBwcmVmaXggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHByZWZpeF9vYmopOwotICAgIGlmIChwcmVmaXggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocHJlZml4KTsKLQotICAgIC8qIHNlbGYucHJlZml4ICsgbmFtZSBbKyBTRVAgKyAiX19pbml0X18iXSArICIucHlbY29dIiAqLwotICAgIGlmIChsZW4gKyBzdHJsZW4obmFtZSkgKyAxMyA+PSBwYXRoc2l6ZSAtIDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYocHJlZml4KTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByZWZpeCkgKyBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSArIDE7CisgICAgcCA9IGJ1ZiA9IFB5TWVtX01hbGxvYyhzaXplb2YoUHlfVUNTNCkgKiBsZW4pOworICAgIGlmIChidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBzdHJjcHkocGF0aCwgUHlCeXRlc19BU19TVFJJTkcocHJlZml4KSk7Ci0gICAgUHlfREVDUkVGKHByZWZpeCk7Ci0gICAgc3RyY3B5KHBhdGggKyBsZW4sIG5hbWUpOwotICAgIGZvciAocCA9IHBhdGggKyBsZW47ICpwOyBwKyspIHsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQocHJlZml4LCBwLCBsZW4sIDApKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBsZW4gLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJlZml4KTsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQobmFtZSwgcCwgbGVuLCAxKSkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmb3IgKDsgKnA7IHArKykgewogICAgICAgICBpZiAoKnAgPT0gJy4nKQogICAgICAgICAgICAgKnAgPSBTRVA7CiAgICAgfQotICAgIGxlbiArPSBzdHJsZW4obmFtZSk7Ci0gICAgYXNzZXJ0KGxlbiA8IElOVF9NQVgpOwotICAgIHJldHVybiAoaW50KWxlbjsKKyAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIHAtYnVmKTsKKyAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgcmV0dXJuIHBhdGhvYmo7CiB9CiAKIGVudW0gemlfbW9kdWxlX2luZm8gewpAQCAtMjU0LDMyICsyNjMsMTEzIEBACiAgICAgTUlfUEFDS0FHRQogfTsKIAorLyogRG9lcyB0aGlzIHBhdGggcmVwcmVzZW50IGEgZGlyZWN0b3J5PworICAgb24gZXJyb3IsIHJldHVybiA8IDAKKyAgIGlmIG5vdCBhIGRpciwgcmV0dXJuIDAKKyAgIGlmIGEgZGlyLCByZXR1cm4gMQorKi8KK3N0YXRpYyBpbnQKK2NoZWNrX2lzX2RpcmVjdG9yeShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QqIHByZWZpeCwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgUHlPYmplY3QgKmRpcnBhdGg7CisgICAgaW50IHJlczsKKworICAgIC8qIFNlZSBpZiB0aGlzIGlzIGEgImRpcmVjdG9yeSIuIElmIHNvLCBpdCdzIGVsaWdpYmxlIHRvIGJlIHBhcnQKKyAgICAgICBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiBXZSB0ZXN0IGJ5IHNlZWluZyBpZiB0aGUgbmFtZSwgd2l0aCBhbgorICAgICAgIGFwcGVuZGVkIHBhdGggc2VwYXJhdG9yLCBleGlzdHMuICovCisgICAgZGlycGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVVJWMiLCBwcmVmaXgsIHBhdGgsIFNFUCk7CisgICAgaWYgKGRpcnBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIElmIGRpcnBhdGggaXMgcHJlc2VudCBpbiBzZWxmLT5maWxlcywgd2UgaGF2ZSBhIGRpcmVjdG9yeS4gKi8KKyAgICByZXMgPSBQeURpY3RfQ29udGFpbnMoc2VsZi0+ZmlsZXMsIGRpcnBhdGgpOworICAgIFB5X0RFQ1JFRihkaXJwYXRoKTsKKyAgICByZXR1cm4gcmVzOworfQorCiAvKiBSZXR1cm4gc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhIG1vZHVsZS4gKi8KIHN0YXRpYyBlbnVtIHppX21vZHVsZV9pbmZvCi1nZXRfbW9kdWxlX2luZm8oWmlwSW1wb3J0ZXIgKnNlbGYsIGNoYXIgKmZ1bGxuYW1lKQorZ2V0X21vZHVsZV9pbmZvKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUpCiB7Ci0gICAgY2hhciAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOICsgMV07Ci0gICAgaW50IGxlbjsKKyAgICBQeU9iamVjdCAqc3VibmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZ1bGxwYXRoLCAqaXRlbTsKICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyICp6c287CiAKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOworICAgIGlmIChzdWJuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIHBhdGggPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgUHlfREVDUkVGKHN1Ym5hbWUpOworICAgIGlmIChwYXRoID09IE5VTEwpCiAgICAgICAgIHJldHVybiBNSV9FUlJPUjsKIAogICAgIGZvciAoenNvID0gemlwX3NlYXJjaG9yZGVyOyAqenNvLT5zdWZmaXg7IHpzbysrKSB7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCB6c28tPnN1ZmZpeCk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCkgIT0gTlVMTCkgeworICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVzIiwgcGF0aCwgenNvLT5zdWZmaXgpOworICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICAgICAgcmV0dXJuIE1JX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGl0ZW0gPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOworICAgICAgICBQeV9ERUNSRUYoZnVsbHBhdGgpOworICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICBpZiAoenNvLT50eXBlICYgSVNfUEFDS0FHRSkKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfUEFDS0FHRTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gTUlfTU9EVUxFOwogICAgICAgICB9CiAgICAgfQorICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gTUlfTk9UX0ZPVU5EOwogfQogCit0eXBlZGVmIGVudW0geworICAgIEZMX0VSUk9SLAorICAgIEZMX05PVF9GT1VORCwKKyAgICBGTF9NT0RVTEVfRk9VTkQsCisgICAgRkxfTlNfRk9VTkQKK30gZmluZF9sb2FkZXJfcmVzdWx0OworCisvKiBUaGUgZ3V0cyBvZiAiZmluZF9sb2FkZXIiIGFuZCAiZmluZF9tb2R1bGUiLiBSZXR1cm4gdmFsdWVzOgorICAgLTE6IGVycm9yCisgICAgMDogbm8gbG9hZGVyIG9yIG5hbWVzcGFjZSBwb3J0aW9ucyBmb3VuZAorICAgIDE6IG1vZHVsZS9wYWNrYWdlIGZvdW5kCisgICAgMjogbmFtZXNwYWNlIHBvcnRpb24gZm91bmQ6ICpuYW1lc3BhY2VfcG9ydGlvbiB3aWxsIHBvaW50IHRvIHRoZSBuYW1lCisqLworc3RhdGljIGZpbmRfbG9hZGVyX3Jlc3VsdAorZmluZF9sb2FkZXIoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwgUHlPYmplY3QgKipuYW1lc3BhY2VfcG9ydGlvbikKK3sKKyAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOworCisgICAgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKworICAgIG1pID0gZ2V0X21vZHVsZV9pbmZvKHNlbGYsIGZ1bGxuYW1lKTsKKyAgICBpZiAobWkgPT0gTUlfRVJST1IpCisgICAgICAgIHJldHVybiBGTF9FUlJPUjsKKyAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7CisgICAgICAgIC8qIE5vdCBhIG1vZHVsZSBvciByZWd1bGFyIHBhY2thZ2UuIFNlZSBpZiB0aGlzIGlzIGEgZGlyZWN0b3J5LCBhbmQKKyAgICAgICAgICAgdGhlcmVmb3JlIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLiAqLworICAgICAgICBpbnQgaXNfZGlyID0gY2hlY2tfaXNfZGlyZWN0b3J5KHNlbGYsIHNlbGYtPnByZWZpeCwgZnVsbG5hbWUpOworICAgICAgICBpZiAoaXNfZGlyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGlzX2RpcikgeworICAgICAgICAgICAgLyogVGhpcyBpcyBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgICAgICAgICAgICAgIHBhY2thZ2UuIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBpdHMgcGF0aCwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgYSB0cmFpbGluZyBzZXBhcmF0b3IuICovCisgICAgICAgICAgICAqbmFtZXNwYWNlX3BvcnRpb24gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YXJjaGl2ZSwgU0VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBmdWxsbmFtZSk7CisgICAgICAgICAgICBpZiAoKm5hbWVzcGFjZV9wb3J0aW9uID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZMX0VSUk9SOworICAgICAgICAgICAgcmV0dXJuIEZMX05TX0ZPVU5EOworICAgICAgICB9CisgICAgICAgIHJldHVybiBGTF9OT1RfRk9VTkQ7CisgICAgfQorICAgIC8qIFRoaXMgaXMgYSBtb2R1bGUgb3IgcGFja2FnZS4gKi8KKyAgICByZXR1cm4gRkxfTU9EVUxFX0ZPVU5EOworfQorCisKIC8qIENoZWNrIHdoZXRoZXIgd2UgY2FuIHNhdGlzZnkgdGhlIGltcG9ydCBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5CiAgICAnZnVsbG5hbWUnLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4sIE5vbmUgaWYgd2UgY2FuJ3QuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjg3LDIyICszNzcsNjQgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgY2hhciAqZnVsbG5hbWU7Ci0gICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZV9wb3J0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xPOnppcGltcG9ydGVyLmZpbmRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfE86emlwaW1wb3J0ZXIuZmluZF9tb2R1bGUiLCAmZnVsbG5hbWUsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7Ci0gICAgaWYgKG1pID09IE1JX0VSUk9SKQorICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgY2FzZSBGTF9OU19GT1VORDoKKyAgICAgICAgLyogQSBuYW1lc3BhY2UgcG9ydGlvbiBpcyBub3QgYWxsb3dlZCB2aWEgZmluZF9tb2R1bGUsIHNvIHJldHVybiBOb25lLiAqLworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKyAgICBjYXNlIEZMX05PVF9GT1VORDoKKyAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGTF9NT0RVTEVfRk9VTkQ6CisgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQorICAgJ2Z1bGxuYW1lJywgb3Igd2hldGhlciBpdCBjb3VsZCBiZSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UKKyAgIHBhY2thZ2UuIFJldHVybiBzZWxmIGlmIHdlIGNhbiBsb2FkIGl0LCBhIHN0cmluZyBjb250YWluaW5nIHRoZQorICAgZnVsbCBwYXRoIGlmIGl0J3MgYSBwb3NzaWJsZSBuYW1lc3BhY2UgcG9ydGlvbiwgTm9uZSBpZiB3ZQorICAgY2FuJ3QgbG9hZCBpdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit6aXBpbXBvcnRlcl9maW5kX2xvYWRlcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Tzp6aXBpbXBvcnRlci5maW5kX21vZHVsZSIsICZmdWxsbmFtZSwgJnBhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAoZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUsICZuYW1lc3BhY2VfcG9ydGlvbikpIHsKKyAgICBjYXNlIEZMX0VSUk9SOgorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjYXNlIEZMX05PVF9GT1VORDogICAgICAgIC8qIE5vdCBmb3VuZCwgcmV0dXJuIChOb25lLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgUHlfTm9uZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTU9EVUxFX0ZPVU5EOiAgICAgLyogUmV0dXJuIChzZWxmLCBbXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tdIiwgc2VsZik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTlNfRk9VTkQ6ICAgICAgICAgLyogUmV0dXJuIChOb25lLCBbbmFtZXNwYWNlX3BvcnRpb25dKSAqLworICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPW09dIiwgUHlfTm9uZSwgbmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICBQeV9ERUNSRUYobmFtZXNwYWNlX3BvcnRpb24pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBMb2FkIGFuZCByZXR1cm4gdGhlIG1vZHVsZSBuYW1lZCBieSAnZnVsbG5hbWUnLiAqLwpAQCAtMzExLDE5ICs0NDMsMjEgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqY29kZSA9IE5VTEwsICptb2QsICpkaWN0OwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTCwgKm1vZHBhdGhfYnl0ZXM7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICptb2RwYXRoID0gTlVMTDsKICAgICBpbnQgaXNwYWNrYWdlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmxvYWRfbW9kdWxlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIubG9hZF9tb2R1bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZ1bGxuYW1lKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjb2RlID0gZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lLCAmaXNwYWNrYWdlLCAmbW9kcGF0aCk7CiAgICAgaWYgKGNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShmdWxsbmFtZSk7CisgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KGZ1bGxuYW1lKTsKICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKQEAgLTMzNiwxNyArNDcwLDE3IEBACiAgICAgICAgIC8qIGFkZCBfX3BhdGhfXyB0byB0aGUgbW9kdWxlICpiZWZvcmUqIHRoZSBjb2RlIGdldHMKICAgICAgICAgICAgZXhlY3V0ZWQgKi8KICAgICAgICAgUHlPYmplY3QgKnBrZ3BhdGgsICpmdWxscGF0aDsKLSAgICAgICAgY2hhciAqc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKnN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CiAgICAgICAgIGludCBlcnI7CiAKLSAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJXMiLAorICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjJVUlVSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHN1Ym5hbWUpOwogICAgICAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZ1bGxwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKKyAgICAgICAgcGtncGF0aCA9IFB5X0J1aWxkVmFsdWUoIltOXSIsIGZ1bGxwYXRoKTsKICAgICAgICAgaWYgKHBrZ3BhdGggPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX3BhdGhfXyIsIHBrZ3BhdGgpOwpAQCAtMzU0LDE4ICs0ODgsMTMgQEAKICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgbW9kcGF0aF9ieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQobW9kcGF0aCk7Ci0gICAgaWYgKG1vZHBhdGhfYnl0ZXMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KGZ1bGxuYW1lLCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aF9ieXRlcykpOwotICAgIFB5X0RFQ1JFRihtb2RwYXRoX2J5dGVzKTsKKyAgICBtb2QgPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChmdWxsbmFtZSwgY29kZSwgbW9kcGF0aCwgTlVMTCk7CiAgICAgUHlfQ0xFQVIoY29kZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlcyAjIGxvYWRlZCBmcm9tIFppcCAlVVxuIiwKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJVUgIyBsb2FkZWQgZnJvbSBaaXAgJVVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgbW9kcGF0aCk7CiAgICAgUHlfREVDUkVGKG1vZHBhdGgpOwogICAgIHJldHVybiBtb2Q7CkBAIC0zODAsMTIgKzUwOSwxMCBAQAogemlwaW1wb3J0ZXJfZ2V0X2ZpbGVuYW1lKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIFB5T2JqZWN0ICpjb2RlOwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIFB5T2JqZWN0ICptb2RwYXRoOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZSwgKmNvZGUsICptb2RwYXRoOwogICAgIGludCBpc3BhY2thZ2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2ZpbGVuYW1lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQwNCwxMCArNTMxLDEwIEBACiB6aXBpbXBvcnRlcl9pc19wYWNrYWdlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIGNoYXIgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmlzX3BhY2thZ2UiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5pc19wYWNrYWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQxNSw3MSArNTQyLDcwIEBACiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhtaSA9PSBNSV9QQUNLQUdFKTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2RhdGEoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgUHlPYmplY3QgKnBhdGhvYmosICprZXk7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcGF0aDsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmtleTsKICNpZmRlZiBBTFRTRVAKLSAgICBQeV9VTklDT0RFICpwLCBidWZbTUFYUEFUSExFTiArIDFdOworICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOwogI2VuZGlmCi0gICAgUHlfVU5JQ09ERSAqYXJjaGl2ZTsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIFB5X3NzaXplX3QgcGF0aF9sZW4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IHBhdGhfc3RhcnQsIHBhdGhfbGVuLCBsZW47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2RhdGEiLCAmcGF0aG9iaikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9kYXRhIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBhdGhfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRob2JqKTsKICNpZmRlZiBBTFRTRVAKLSAgICBpZiAocGF0aF9sZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsICJwYXRoIHRvbyBsb25nIik7CisgICAgcGF0aCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocGF0aCwgJlB5SWRfcmVwbGFjZSwgIkNDIiwgQUxUU0VQLCBTRVApOworICAgIGlmICghcGF0aCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZiwgcGF0aCk7Ci0gICAgZm9yIChwID0gYnVmOyAqcDsgcCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSBBTFRTRVApCi0gICAgICAgICAgICAqcCA9IFNFUDsKLSAgICB9Ci0gICAgcGF0aCA9IGJ1ZjsKKyNlbHNlCisgICAgUHlfSU5DUkVGKHBhdGgpOwogI2VuZGlmCi0gICAgYXJjaGl2ZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYtPmFyY2hpdmUpOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmLT5hcmNoaXZlKTsKLSAgICBpZiAoKHNpemVfdClsZW4gPCBQeV9VTklDT0RFX3N0cmxlbihwYXRoKSAmJgotICAgICAgICBQeV9VTklDT0RFX3N0cm5jbXAocGF0aCwgYXJjaGl2ZSwgbGVuKSA9PSAwICYmCi0gICAgICAgIHBhdGhbbGVuXSA9PSBTRVApIHsKLSAgICAgICAgcGF0aCArPSBsZW4gKyAxOwotICAgICAgICBwYXRoX2xlbiAtPSBsZW4gKyAxOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBwYXRoX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+YXJjaGl2ZSk7CisgICAgcGF0aF9zdGFydCA9IDA7CisgICAgaWYgKFB5VW5pY29kZV9UYWlsbWF0Y2gocGF0aCwgc2VsZi0+YXJjaGl2ZSwgMCwgbGVuLCAtMSkKKyAgICAgICAgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihwYXRoLCBsZW4pID09IFNFUCkgeworICAgICAgICBwYXRoX3N0YXJ0ID0gbGVuICsgMTsKICAgICB9CiAKLSAgICBrZXkgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocGF0aCwgcGF0aF9sZW4pOworICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgcGF0aF9zdGFydCwgcGF0aF9sZW4pOwogICAgIGlmIChrZXkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGtleSk7CiAgICAgaWYgKHRvY19lbnRyeSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19JT0Vycm9yLCBrZXkpOwogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihrZXkpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICByZXR1cm4gZ2V0X2RhdGEoc2VsZi0+YXJjaGl2ZSwgdG9jX2VudHJ5KTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogemlwaW1wb3J0ZXJfZ2V0X2NvZGUoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7Ci0gICAgY2hhciAqZnVsbG5hbWU7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9jb2RlIiwgJmZ1bGxuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X2NvZGUiLCAmZnVsbG5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBnZXRfbW9kdWxlX2NvZGUoc2VsZiwgZnVsbG5hbWUsIE5VTEwsIE5VTEwpOwpAQCAtNDkwLDM0ICs2MTYsMzkgQEAKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKICAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIGNoYXIgKmZ1bGxuYW1lLCAqc3VibmFtZSwgcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lLCAqc3VibmFtZSwgKnBhdGgsICpmdWxscGF0aDsKICAgICBlbnVtIHppX21vZHVsZV9pbmZvIG1pOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9zb3VyY2UiLCAmZnVsbG5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5nZXRfc291cmNlIiwgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7CiAgICAgaWYgKG1pID09IE1JX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWkgPT0gTUlfTk9UX0ZPVU5EKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICVSIiwgZnVsbG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOwotCi0gICAgbGVuID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKGxlbiA8IDApCisgICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkgewotICAgICAgICBwYXRoW2xlbl0gPSBTRVA7Ci0gICAgICAgIHN0cmNweShwYXRoICsgbGVuICsgMSwgIl9faW5pdF9fLnB5Iik7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgc3RyY3B5KHBhdGggKyBsZW4sICIucHkiKTsKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICBpZiAobWkgPT0gTUlfUEFDS0FHRSkKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlY19faW5pdF9fLnB5IiwgcGF0aCwgU0VQKTsKKyAgICBlbHNlCisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLnB5IiwgcGF0aCk7CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIGlmIChmdWxscGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBmdWxscGF0aCk7CisgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKICAgICBpZiAodG9jX2VudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcywgKmJ5dGVzOwogICAgICAgICBieXRlcyA9IGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CkBAIC01NDMsNiArNjc0LDE2IEBACiBUaGUgb3B0aW9uYWwgJ3BhdGgnIGFyZ3VtZW50IGlzIGlnbm9yZWQgLS0gaXQncyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eVxuXAogd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuIik7CiAKK1B5RG9jX1NUUlZBUihkb2NfZmluZF9sb2FkZXIsCisiZmluZF9sb2FkZXIoZnVsbG5hbWUsIHBhdGg9Tm9uZSkgLT4gc2VsZiwgc3RyIG9yIE5vbmUuXG5cCitcblwKK1NlYXJjaCBmb3IgYSBtb2R1bGUgc3BlY2lmaWVkIGJ5ICdmdWxsbmFtZScuICdmdWxsbmFtZScgbXVzdCBiZSB0aGVcblwKK2Z1bGx5IHF1YWxpZmllZCAoZG90dGVkKSBtb2R1bGUgbmFtZS4gSXQgcmV0dXJucyB0aGUgemlwaW1wb3J0ZXJcblwKK2luc3RhbmNlIGl0c2VsZiBpZiB0aGUgbW9kdWxlIHdhcyBmb3VuZCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGVcblwKK2Z1bGwgcGF0aCBuYW1lIGlmIGl0J3MgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UsXG5cCitvciBOb25lIG90aGVyd2lzZS4gVGhlIG9wdGlvbmFsICdwYXRoJyBhcmd1bWVudCBpcyBpZ25vcmVkIC0tIGl0J3NcblwKKyB0aGVyZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBpbXBvcnRlciBwcm90b2NvbC4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19sb2FkX21vZHVsZSwKICJsb2FkX21vZHVsZShmdWxsbmFtZSkgLT4gbW9kdWxlLlxuXAogXG5cCkBAIC01ODQsNiArNzI1LDggQEAKIHN0YXRpYyBQeU1ldGhvZERlZiB6aXBpbXBvcnRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJmaW5kX21vZHVsZSIsIHppcGltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19maW5kX21vZHVsZX0sCisgICAgeyJmaW5kX2xvYWRlciIsIHppcGltcG9ydGVyX2ZpbmRfbG9hZGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgIGRvY19maW5kX2xvYWRlcn0sCiAgICAgeyJsb2FkX21vZHVsZSIsIHppcGltcG9ydGVyX2xvYWRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCiAgICAgIGRvY19sb2FkX21vZHVsZX0sCiAgICAgeyJnZXRfZGF0YSIsIHppcGltcG9ydGVyX2dldF9kYXRhLCBNRVRIX1ZBUkFSR1MsCkBAIC03MDgsNTAgKzg1MSw0MSBAQAogICAgZGF0YV9zaXplIGFuZCBmaWxlX29mZnNldCBhcmUgMC4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmVfb2JqKQorcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmUpCiB7Ci0gICAgLyogRklYTUU6IHdvcmsgb24gUHlfVU5JQ09ERSogaW5zdGVhZCBvZiBjaGFyKiAqLwogICAgIFB5T2JqZWN0ICpmaWxlcyA9IE5VTEw7CiAgICAgRklMRSAqZnA7CiAgICAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CiAgICAgc2hvcnQgY29tcHJlc3MsIHRpbWUsIGRhdGUsIG5hbWVfc2l6ZTsKICAgICBsb25nIGNyYywgZGF0YV9zaXplLCBmaWxlX3NpemUsIGhlYWRlcl9zaXplOwogICAgIFB5X3NzaXplX3QgZmlsZV9vZmZzZXQsIGhlYWRlcl9wb3NpdGlvbiwgaGVhZGVyX29mZnNldDsKLSAgICBsb25nIGksIGwsIGNvdW50OwotICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSBwYXRoW01BWFBBVEhMRU4gKyA1XTsKKyAgICBsb25nIGwsIGNvdW50OworICAgIFB5X3NzaXplX3QgaTsKICAgICBjaGFyIG5hbWVbTUFYUEFUSExFTiArIDVdOwogICAgIFB5T2JqZWN0ICpuYW1lb2JqID0gTlVMTDsKICAgICBjaGFyICpwLCBlbmRvZl9jZW50cmFsX2RpclsyMl07CiAgICAgUHlfc3NpemVfdCBhcmNfb2Zmc2V0OyAgLyogQWJzb2x1dGUgb2Zmc2V0IHRvIHN0YXJ0IG9mIHRoZSB6aXAtYXJjaGl2ZS4gKi8KLSAgICBQeU9iamVjdCAqcGF0aG9iajsKKyAgICBQeU9iamVjdCAqcGF0aDsKICAgICBjb25zdCBjaGFyICpjaGFyc2V0OwogICAgIGludCBib290c3RyYXA7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGFyY2hpdmVfb2JqKSA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiWmlwIHBhdGggbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfVU5JQ09ERV9zdHJjcHkocGF0aCwgUHlVbmljb2RlX0FTX1VOSUNPREUoYXJjaGl2ZV9vYmopKTsKLQotICAgIGZwID0gX1B5X2ZvcGVuKGFyY2hpdmVfb2JqLCAicmIiKTsKKyAgICBmcCA9IF9QeV9mb3BlbihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBvcGVuIFppcCBmaWxlOiAnJVUnIiwgYXJjaGl2ZV9vYmopOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGZzZWVrKGZwLCAtMjIsIFNFRUtfRU5EKTsKICAgICBoZWFkZXJfcG9zaXRpb24gPSBmdGVsbChmcCk7CiAgICAgaWYgKGZyZWFkKGVuZG9mX2NlbnRyYWxfZGlyLCAxLCAyMiwgZnApICE9IDIyKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICclVSciLCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZ2V0X2xvbmcoKHVuc2lnbmVkIGNoYXIgKillbmRvZl9jZW50cmFsX2RpcikgIT0gMHgwNjA1NEI1MCkgewogICAgICAgICAvKiBCYWQ6IEVuZCBvZiBDZW50cmFsIERpciBzaWduYXR1cmUgKi8KICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAibm90IGEgWmlwIGZpbGU6ICclVSciLCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgIm5vdCBhIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTc2NCw5ICs4OTgsNiBAQAogICAgIGlmIChmaWxlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgbGVuZ3RoID0gUHlfVU5JQ09ERV9zdHJsZW4ocGF0aCk7Ci0gICAgcGF0aFtsZW5ndGhdID0gU0VQOwotCiAgICAgLyogU3RhcnQgb2YgQ2VudHJhbCBEaXJlY3RvcnkgKi8KICAgICBjb3VudCA9IDA7CiAgICAgZm9yICg7OykgewpAQCAtNzk1LDcgKzkyNiw3IEBACiAgICAgICAgICAgICBuYW1lX3NpemUgPSBNQVhQQVRITEVOOwogCiAgICAgICAgIHAgPSBuYW1lOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZV9zaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IChQeV9zc2l6ZV90KW5hbWVfc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAqcCA9IChjaGFyKWdldGMoZnApOwogICAgICAgICAgICAgaWYgKCpwID09ICcvJykKICAgICAgICAgICAgICAgICAqcCA9IFNFUDsKQEAgLTgyOCwxMiArOTU5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04pOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeV9VTklDT0RFX3N0cm5jcHkocGF0aCArIGxlbmd0aCArIDEsIFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWVvYmopLCBNQVhQQVRITEVOIC0gbGVuZ3RoIC0gMSk7Ci0KLSAgICAgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwYXRoLCBQeV9VTklDT0RFX3N0cmxlbihwYXRoKSk7Ci0gICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZW9iaikgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB0ID0gUHlfQnVpbGRWYWx1ZSgiTmhsbG5oaGwiLCBwYXRob2JqLCBjb21wcmVzcywgZGF0YV9zaXplLAorICAgICAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMlVSIsIGFyY2hpdmUsIFNFUCwgbmFtZW9iaik7CisgICAgICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB0ID0gUHlfQnVpbGRWYWx1ZSgiTmhsbG5oaGwiLCBwYXRoLCBjb21wcmVzcywgZGF0YV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUsIGZpbGVfb2Zmc2V0LCB0aW1lLCBkYXRlLCBjcmMpOwogICAgICAgICBpZiAodCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTg0Niw4ICs5NzcsOCBAQAogICAgIH0KICAgICBmY2xvc2UoZnApOwogICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIHppcGltcG9ydDogZm91bmQgJWxkIG5hbWVzIGluICVVXG4iLAotICAgICAgICAgICAgY291bnQsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIHppcGltcG9ydDogZm91bmQgJWxkIG5hbWVzIGluICVSXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIGFyY2hpdmUpOwogICAgIHJldHVybiBmaWxlczsKIGVycm9yOgogICAgIGZjbG9zZShmcCk7CkBAIC04NjUsNiArOTk2LDcgQEAKICAgICBzdGF0aWMgaW50IGltcG9ydGluZ196bGliID0gMDsKICAgICBQeU9iamVjdCAqemxpYjsKICAgICBQeU9iamVjdCAqZGVjb21wcmVzczsKKyAgICBfUHlfSURFTlRJRklFUihkZWNvbXByZXNzKTsKIAogICAgIGlmIChpbXBvcnRpbmdfemxpYiAhPSAwKQogICAgICAgICAvKiBTb21lb25lIGhhcyBhIHpsaWIucHlbY29dIGluIHRoZWlyIFppcCBmaWxlOwpAQCAtODc0LDggKzEwMDYsOCBAQAogICAgIHpsaWIgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ6bGliIik7CiAgICAgaW1wb3J0aW5nX3psaWIgPSAwOwogICAgIGlmICh6bGliICE9IE5VTEwpIHsKLSAgICAgICAgZGVjb21wcmVzcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoemxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlY29tcHJlc3MiKTsKKyAgICAgICAgZGVjb21wcmVzcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoemxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfZGVjb21wcmVzcyk7CiAgICAgICAgIFB5X0RFQ1JFRih6bGliKTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0xMDAxLDcgKzExMzMsNyBAQAogICAgdG8gLnB5IGlmIGF2YWlsYWJsZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBtYXNrIG90aGVyIGVycm9ycykuCiAgICBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi11bm1hcnNoYWxfY29kZShjaGFyICpwYXRobmFtZSwgUHlPYmplY3QgKmRhdGEsIHRpbWVfdCBtdGltZSkKK3VubWFyc2hhbF9jb2RlKFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKmRhdGEsIHRpbWVfdCBtdGltZSkKIHsKICAgICBQeU9iamVjdCAqY29kZTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKGRhdGEpOwpAQCAtMTAxNSw4ICsxMTQ3LDggQEAKIAogICAgIGlmIChnZXRfbG9uZygodW5zaWduZWQgY2hhciAqKWJ1ZikgIT0gUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIoKSkgewogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG1hZ2ljXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjICVSIGhhcyBiYWQgbWFnaWNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOwogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOyAgLyogc2lnbmFsIGNhbGxlciB0byB0cnkgYWx0ZXJuYXRpdmUgKi8KICAgICB9CkBAIC0xMDI0LDE5ICsxMTU2LDIxIEBACiAgICAgaWYgKG10aW1lICE9IDAgJiYgIWVxX210aW1lKGdldF9sb25nKCh1bnNpZ25lZCBjaGFyICopYnVmICsgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10aW1lKSkgewogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG10aW1lXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjICVSIGhhcyBiYWQgbXRpbWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOwogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOyAgLyogc2lnbmFsIGNhbGxlciB0byB0cnkgYWx0ZXJuYXRpdmUgKi8KICAgICB9CiAKLSAgICBjb2RlID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKGJ1ZiArIDgsIHNpemUgLSA4KTsKKyAgICAvKiBYWFggdGhlIHB5YydzIHNpemUgZmllbGQgaXMgaWdub3JlZDsgdGltZXN0YW1wIGNvbGxpc2lvbnMgYXJlIHByb2JhYmx5CisgICAgICAgdW5pbXBvcnRhbnQgd2l0aCB6aXAgZmlsZXMuICovCisgICAgY29kZSA9IFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZyhidWYgKyAxMiwgc2l6ZSAtIDEyKTsKICAgICBpZiAoY29kZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSkgewogICAgICAgICBQeV9ERUNSRUYoY29kZSk7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgImNvbXBpbGVkIG1vZHVsZSAlcyBpcyBub3QgYSBjb2RlIG9iamVjdCIsCisgICAgICAgICAgICAgImNvbXBpbGVkIG1vZHVsZSAlUiBpcyBub3QgYSBjb2RlIG9iamVjdCIsCiAgICAgICAgICAgICAgcGF0aG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDUwLDExICsxMTg0LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhQeU9iamVjdCAqc291cmNlKQogewotICAgIGNoYXIgKmJ1ZiwgKnEsICpwID0gUHlCeXRlc19Bc1N0cmluZyhzb3VyY2UpOworICAgIGNoYXIgKmJ1ZiwgKnEsICpwOwogICAgIFB5T2JqZWN0ICpmaXhlZF9zb3VyY2U7CiAgICAgaW50IGxlbiA9IDA7CiAKLSAgICBpZiAoIXApIHsKKyAgICBwID0gUHlCeXRlc19Bc1N0cmluZyhzb3VyY2UpOworICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIlxuXDAiLCAyKTsKICAgICB9CiAKQEAgLTEwODcsMTYgKzEyMjIsMjQgQEAKIC8qIEdpdmVuIGEgc3RyaW5nIGJ1ZmZlciBjb250YWluaW5nIFB5dGhvbiBzb3VyY2UgY29kZSwgY29tcGlsZSBpdAogICAgcmV0dXJuIGFuZCByZXR1cm4gYSBjb2RlIG9iamVjdCBhcyBhIG5ldyByZWZlcmVuY2UuICovCiBzdGF0aWMgUHlPYmplY3QgKgotY29tcGlsZV9zb3VyY2UoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpzb3VyY2UpCitjb21waWxlX3NvdXJjZShQeU9iamVjdCAqcGF0aG5hbWUsIFB5T2JqZWN0ICpzb3VyY2UpCiB7Ci0gICAgUHlPYmplY3QgKmNvZGUsICpmaXhlZF9zb3VyY2U7CisgICAgUHlPYmplY3QgKmNvZGUsICpmaXhlZF9zb3VyY2UsICpwYXRoYnl0ZXM7CiAKLSAgICBmaXhlZF9zb3VyY2UgPSBub3JtYWxpemVfbGluZV9lbmRpbmdzKHNvdXJjZSk7Ci0gICAgaWYgKGZpeGVkX3NvdXJjZSA9PSBOVUxMKQorICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOworICAgIGlmIChwYXRoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZyhQeUJ5dGVzX0FzU3RyaW5nKGZpeGVkX3NvdXJjZSksIHBhdGhuYW1lLAorICAgIGZpeGVkX3NvdXJjZSA9IG5vcm1hbGl6ZV9saW5lX2VuZGluZ3Moc291cmNlKTsKKyAgICBpZiAoZml4ZWRfc291cmNlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nKFB5Qnl0ZXNfQXNTdHJpbmcoZml4ZWRfc291cmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKHBhdGhieXRlcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCk7CisgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CiAgICAgUHlfREVDUkVGKGZpeGVkX3NvdXJjZSk7CiAgICAgcmV0dXJuIGNvZGU7CiB9CkBAIC0xMTI1LDE0ICsxMjY4LDIyIEBACiAgICBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgbWF0Y2hpbmcgLnB5IGZpbGUsIG9yIDAgaWYgbm8gc291cmNlCiAgICBpcyBhdmFpbGFibGUuICovCiBzdGF0aWMgdGltZV90Ci1nZXRfbXRpbWVfb2Zfc291cmNlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpwYXRoKQorZ2V0X210aW1lX29mX3NvdXJjZShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKnBhdGgpCiB7Ci0gICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICB0aW1lX3QgbXRpbWUgPSAwOwotICAgIFB5X3NzaXplX3QgbGFzdGNoYXIgPSBzdHJsZW4ocGF0aCkgLSAxOwotICAgIGNoYXIgc2F2ZWNoYXIgPSBwYXRoW2xhc3RjaGFyXTsKLSAgICBwYXRoW2xhc3RjaGFyXSA9ICdcMCc7ICAvKiBzdHJpcCAnYycgb3IgJ28nIGZyb20gKi5weVtjb10gKi8KLSAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCk7CisgICAgUHlPYmplY3QgKnRvY19lbnRyeSwgKnN0cmlwcGVkOworICAgIHRpbWVfdCBtdGltZTsKKworICAgIC8qIHN0cmlwICdjJyBvciAnbycgZnJvbSAqLnB5W2NvXSAqLworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIHJldHVybiAodGltZV90KS0xOworICAgIHN0cmlwcGVkID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfS0lORChwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpIC0gMSk7CisgICAgaWYgKHN0cmlwcGVkID09IE5VTEwpCisgICAgICAgIHJldHVybiAodGltZV90KS0xOworCisgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIHN0cmlwcGVkKTsKKyAgICBQeV9ERUNSRUYoc3RyaXBwZWQpOwogICAgIGlmICh0b2NfZW50cnkgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKHRvY19lbnRyeSkgJiYKICAgICAgICAgUHlUdXBsZV9TaXplKHRvY19lbnRyeSkgPT0gOCkgewogICAgICAgICAvKiBmZXRjaCB0aGUgdGltZSBzdGFtcCBvZiB0aGUgLnB5IGZpbGUgZm9yIGNvbXBhcmlzb24KQEAgLTExNDEsOCArMTI5Miw4IEBACiAgICAgICAgIHRpbWUgPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDUpKTsKICAgICAgICAgZGF0ZSA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgNikpOwogICAgICAgICBtdGltZSA9IHBhcnNlX2Rvc3RpbWUodGltZSwgZGF0ZSk7Ci0gICAgfQotICAgIHBhdGhbbGFzdGNoYXJdID0gc2F2ZWNoYXI7CisgICAgfSBlbHNlCisgICAgICAgIG10aW1lID0gMDsKICAgICByZXR1cm4gbXRpbWU7CiB9CiAKQEAgLTExNTIsMjQgKzEzMDMsMTcgQEAKIGdldF9jb2RlX2Zyb21fZGF0YShaaXBJbXBvcnRlciAqc2VsZiwgaW50IGlzcGFja2FnZSwgaW50IGlzYnl0ZWNvZGUsCiAgICAgICAgICAgICAgICAgICAgdGltZV90IG10aW1lLCBQeU9iamVjdCAqdG9jX2VudHJ5KQogewotICAgIFB5T2JqZWN0ICpkYXRhLCAqY29kZTsKLSAgICBQeU9iamVjdCAqbW9kcGF0aDsKKyAgICBQeU9iamVjdCAqZGF0YSwgKm1vZHBhdGgsICpjb2RlOwogCiAgICAgZGF0YSA9IGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtb2RwYXRoID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCAwKSk7Ci0gICAgaWYgKG1vZHBhdGggPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQorICAgIG1vZHBhdGggPSBQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCAwKTsKICAgICBpZiAoaXNieXRlY29kZSkKLSAgICAgICAgY29kZSA9IHVubWFyc2hhbF9jb2RlKFB5Qnl0ZXNfQVNfU1RSSU5HKG1vZHBhdGgpLCBkYXRhLCBtdGltZSk7CisgICAgICAgIGNvZGUgPSB1bm1hcnNoYWxfY29kZShtb2RwYXRoLCBkYXRhLCBtdGltZSk7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gY29tcGlsZV9zb3VyY2UoUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aCksIGRhdGEpOwotICAgIFB5X0RFQ1JFRihtb2RwYXRoKTsKKyAgICAgICAgY29kZSA9IGNvbXBpbGVfc291cmNlKG1vZHBhdGgsIGRhdGEpOwogICAgIFB5X0RFQ1JFRihkYXRhKTsKICAgICByZXR1cm4gY29kZTsKIH0KQEAgLTExNzcsMzUgKzEzMjEsNDUgQEAKIC8qIEdldCB0aGUgY29kZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGJ5CiAgICAnZnVsbG5hbWUnLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWdldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgY2hhciAqZnVsbG5hbWUsCitnZXRfbW9kdWxlX2NvZGUoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwKICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBQeU9iamVjdCAqKnBfbW9kcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIGNoYXIgKnN1Ym5hbWUsIHBhdGhbTUFYUEFUSExFTiArIDFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMLCAqdG9jX2VudHJ5LCAqc3VibmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZ1bGxwYXRoID0gTlVMTDsKICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyICp6c287CiAKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOworICAgIGlmIChzdWJuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbGVuID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKGxlbiA8IDApCisgICAgcGF0aCA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICBQeV9ERUNSRUYoc3VibmFtZSk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHpzbyA9IHppcF9zZWFyY2hvcmRlcjsgKnpzby0+c3VmZml4OyB6c28rKykgewotICAgICAgICBQeU9iamVjdCAqY29kZSA9IE5VTEw7CisgICAgICAgIGNvZGUgPSBOVUxMOwogCi0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCB6c28tPnN1ZmZpeCk7CisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJXMiLCBwYXRoLCB6c28tPnN1ZmZpeCk7CisgICAgICAgIGlmIChmdWxscGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBleGl0OworCiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpCi0gICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgdHJ5aW5nICVVJWMlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hcmNoaXZlLCAoaW50KVNFUCwgcGF0aCk7Ci0gICAgICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB0cnlpbmcgJVUlYyVVXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIChpbnQpU0VQLCBmdWxscGF0aCk7CisgICAgICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBmdWxscGF0aCk7CiAgICAgICAgIGlmICh0b2NfZW50cnkgIT0gTlVMTCkgewogICAgICAgICAgICAgdGltZV90IG10aW1lID0gMDsKICAgICAgICAgICAgIGludCBpc3BhY2thZ2UgPSB6c28tPnR5cGUgJiBJU19QQUNLQUdFOwogICAgICAgICAgICAgaW50IGlzYnl0ZWNvZGUgPSB6c28tPnR5cGUgJiBJU19CWVRFQ09ERTsKIAotICAgICAgICAgICAgaWYgKGlzYnl0ZWNvZGUpCi0gICAgICAgICAgICAgICAgbXRpbWUgPSBnZXRfbXRpbWVfb2Zfc291cmNlKHNlbGYsIHBhdGgpOworICAgICAgICAgICAgaWYgKGlzYnl0ZWNvZGUpIHsKKyAgICAgICAgICAgICAgICBtdGltZSA9IGdldF9tdGltZV9vZl9zb3VyY2Uoc2VsZiwgZnVsbHBhdGgpOworICAgICAgICAgICAgICAgIGlmIChtdGltZSA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKGZ1bGxwYXRoKTsKICAgICAgICAgICAgIGlmIChwX2lzcGFja2FnZSAhPSBOVUxMKQogICAgICAgICAgICAgICAgICpwX2lzcGFja2FnZSA9IGlzcGFja2FnZTsKICAgICAgICAgICAgIGNvZGUgPSBnZXRfY29kZV9mcm9tX2RhdGEoc2VsZiwgaXNwYWNrYWdlLApAQCAtMTIyMSwxMSArMTM3NSwxNiBAQAogICAgICAgICAgICAgICAgICpwX21vZHBhdGggPSBQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCAwKTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoKnBfbW9kcGF0aCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gY29kZTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9DTEVBUihmdWxscGF0aCk7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgZmluZCBtb2R1bGUgJVIiLCBmdWxsbmFtZSk7CitleGl0OgorICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICBQeV9YREVDUkVGKGZ1bGxwYXRoKTsKKyAgICByZXR1cm4gY29kZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IGExZTYwNWIuLjY1MTkxOTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC00Myw3ICs0Myw5IEBACiAgICAgel9zdHJlYW0genN0OwogICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKICAgICBQeU9iamVjdCAqdW5jb25zdW1lZF90YWlsOworICAgIGNoYXIgZW9mOwogICAgIGludCBpc19pbml0aWFsaXNlZDsKKyAgICBQeU9iamVjdCAqemRpY3Q7CiAgICAgI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwogICAgICNlbmRpZgpAQCAtNzksMTQgKzgxLDM0IEBACiB9CiAKIFB5RG9jX1NUUlZBUihjb21wcmVzc29ial9fZG9jX18sCi0iY29tcHJlc3NvYmooW2xldmVsXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCisiY29tcHJlc3NvYmoobGV2ZWw9LTEsIG1ldGhvZD1ERUZMQVRFRCwgd2JpdHM9MTUsIG1lbWxldmVsPTgsXG4iCisiICAgICAgICAgICAgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKVxuIgorIiAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJcbiIKLSJPcHRpb25hbCBhcmcgbGV2ZWwgaXMgdGhlIGNvbXByZXNzaW9uIGxldmVsLCBpbiAxLTkuIik7CisibGV2ZWwgaXMgdGhlIGNvbXByZXNzaW9uIGxldmVsIChhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwLTk7IGRlZmF1bHQgaXMgNikuXG4iCisiSGlnaGVyIGNvbXByZXNzaW9uIGxldmVscyBhcmUgc2xvd2VyLCBidXQgcHJvZHVjZSBzbWFsbGVyIHJlc3VsdHMuXG4iCisiXG4iCisibWV0aG9kIGlzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIElmIGdpdmVuLCB0aGlzIG11c3QgYmUgREVGTEFURUQuXG4iCisiXG4iCisid2JpdHMgaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgd2luZG93IHNpemUgKHJhbmdlOiA4Li4xNSkuXG4iCisiXG4iCisibWVtbGV2ZWwgY29udHJvbHMgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBmb3IgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuXG4iCisiVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gMSB0byA5LiBIaWdoZXIgdmFsdWVzIHJlc3VsdCBpbiBoaWdoZXIgbWVtb3J5IHVzYWdlLFxuIgorImZhc3RlciBjb21wcmVzc2lvbiwgYW5kIHNtYWxsZXIgb3V0cHV0LlxuIgorIlxuIgorInN0cmF0ZWd5IGlzIHVzZWQgdG8gdHVuZSB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlXG4iCisiWl9ERUZBVUxUX1NUUkFURUdZLCBaX0ZJTFRFUkVELCBhbmQgWl9IVUZGTUFOX09OTFkuXG4iCisiXG4iCisiemRpY3QgaXMgdGhlIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeSAtIGEgc2VxdWVuY2Ugb2YgYnl0ZXNcbiIKKyJjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBsaWtlbHkgdG8gb2NjdXIgaW4gdGhlIGlucHV0IGRhdGEuIik7CiAKIFB5RG9jX1NUUlZBUihkZWNvbXByZXNzb2JqX19kb2NfXywKLSJkZWNvbXByZXNzb2JqKFt3Yml0c10pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCisiZGVjb21wcmVzc29iaihbd2JpdHNbLCB6ZGljdF1dKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgogIlxuIgotIk9wdGlvbmFsIGFyZyB3Yml0cyBpcyB0aGUgd2luZG93IGJ1ZmZlciBzaXplLiIpOworIk9wdGlvbmFsIGFyZyB3Yml0cyBpcyB0aGUgd2luZG93IGJ1ZmZlciBzaXplLlxuIgorIlxuIgorIk9wdGlvbmFsIGFyZyB6ZGljdCBpcyB0aGUgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5LiBUaGlzIG11c3QgYmVcbiIKKyJ0aGUgc2FtZSBkaWN0aW9uYXJ5IGFzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdCBwcm9kdWNlZCB0aGUgaW5wdXQgZGF0YS4iKTsKIAogc3RhdGljIGNvbXBvYmplY3QgKgogbmV3Y29tcG9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCkBAIC05NSw3ICsxMTcsOSBAQAogICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoY29tcG9iamVjdCwgdHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2VsZi0+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+aXRfaW5kZXgpOworICAgIH0KKyAgICAvKiBlbXB0eSBpdGVyYXRvciwgY3JlYXRlIGFuIGVtcHR5IGxpc3QgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCBkZmVkZmI3Li43MzQxM2RkIDEwMDY0NAotLS0gYS9PYmplY3RzL2xvbmdvYmplY3QuYworKysgYi9PYmplY3RzL2xvbmdvYmplY3QuYwpAQCAtMzIwLDggKzMyMCwxNSBAQAogI2RlZmluZSBQWV9BQlNfTE9OR19NSU4gICAgICAgICAoMC0odW5zaWduZWQgbG9uZylMT05HX01JTikKICNkZWZpbmUgUFlfQUJTX1NTSVpFX1RfTUlOICAgICAgKDAtKHNpemVfdClQWV9TU0laRV9UX01JTikKIAotLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4gX19pbnRfXworICAgbWV0aG9kLgorCisgICBPbiBvdmVyZmxvdywgcmV0dXJuIC0xIGFuZCBzZXQgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzaWduIG9mCisgICB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorCisgICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCBUeXBlRXJyb3IpLCByZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBjb25kaXRpb24uCisgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KKyovCiAKIGxvbmcKIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCkBAIC00MTAsNiArNDE3LDkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbiBfX2ludF9fCisgICBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisKIGxvbmcKIFB5TG9uZ19Bc0xvbmcoUHlPYmplY3QgKm9iaikKIHsKQEAgLTkyMSw3ICs5MzEsNyBAQAogCiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBsb25nIChvciBpbnQpIG9iamVjdCBmcm9tIGEgQyBwb2ludGVyICovCisvKiBDcmVhdGUgYSBuZXcgbG9uZyBpbnQgb2JqZWN0IGZyb20gYSBDIHBvaW50ZXIgKi8KIAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCkBAIC05MzksMTUgKzk0OSwxMSBAQAogCiB9CiAKLS8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBvYmplY3QgKG9yIGFuIGludCBvYmplY3QgaW4gc29tZSBjYXNlcykgKi8KKy8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LiAqLwogCiB2b2lkICoKIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKnZ2KQogewotICAgIC8qIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvdyBpbnQgb3IgbG9uZyBvYmplY3RzLiBJZiB2diBpcyBuZWl0aGVyLAotICAgICAgIHRoZW4gdGhlIFB5TG9uZ19Bc0xvbmcqKCkgZnVuY3Rpb25zIHdpbGwgcmFpc2UgdGhlIGV4Y2VwdGlvbjoKLSAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBhcmd1bWVudCB0byBpbnRlcm5hbCBmdW5jdGlvbiIKLSAgICAqLwogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICBsb25nIHg7CiAKQEAgLTExMjgsOCArMTEzNCw4IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CiB9CiAKLS8qIEdldCBhIEMgUFlfTE9OR19MT05HIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgorICAgX19pbnRfXyBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKIFBZX0xPTkdfTE9ORwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQpAQCAtMTE5MSwxMCArMTE5NywxNCBAQAogICAgIGludCBvbmUgPSAxOwogICAgIGludCByZXM7CiAKLSAgICBpZiAodnYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHZ2KSkgeworICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKICAgICBzd2l0Y2goUHlfU0laRSh2KSkgewpAQCAtMTI4MSwxMiArMTI5MSwxNCBAQAogfQogI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAotLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBQeXRob24gbG9uZyBvciBQeXRob24gaW50IG9iamVjdC4KLSAgIE9uIG92ZXJmbG93LCByZXR1cm5zIC0xIGFuZCBzZXRzICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZwotICAgb24gdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKy8qIEdldCBhIEMgbG9uZyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KKyAgIF9faW50X18gbWV0aG9kLgogCi0gICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCB0eXBlIGVycm9yKSwgcmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvcgotICAgY29uZGl0aW9uLgorICAgT24gb3ZlcmZsb3csIHJldHVybiAtMSBhbmQgc2V0ICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZyBvbiB0aGUgc2lnbiBvZgorICAgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKworICAgRm9yIG90aGVyIGVycm9ycyAoZS5nLiwgVHlwZUVycm9yKSwgcmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgY29uZGl0aW9uLgorICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCiBQWV9MT05HX0xPTkcKQEAgLTEzODAsMTAgKzEzOTIsOCBAQAogCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSB7ICAgICBcCi0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpICAgICAgIFwKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAogLyogYml0c19pbl9kaWdpdChkKSByZXR1cm5zIHRoZSB1bmlxdWUgaW50ZWdlciBrIHN1Y2ggdGhhdCAyKiooay0xKSA8PSBkIDwKQEAgLTE1NDAsMjAgKzE1NTAsMjIgQEAKICAgIHN0cmluZy4gIChSZXR1cm4gdmFsdWUgaXMgbm9uLXNoYXJlZCBzbyB0aGF0IGNhbGxlcnMgY2FuIG1vZGlmeSB0aGUKICAgIHJldHVybmVkIHZhbHVlIGlmIG5lY2Vzc2FyeS4pICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb25nX3RvX2RlY2ltYWxfc3RyaW5nKFB5T2JqZWN0ICphYSkKK3N0YXRpYyBpbnQKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKmFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgaW50IG5lZ2F0aXZlOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKIAogICAgIGEgPSAoUHlMb25nT2JqZWN0ICopYWE7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKQEAgLTE1NzAsMTMgKzE1ODIsMTMgQEAKICAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyBpcyB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIHRoZSBleHByZXNzaW9uIHNpemVfYSAqIFB5TG9uZ19TSElGVCBpcyBub3cgc2FmZSBmcm9tIG92ZXJmbG93ICovCiAgICAgc2l6ZSA9IDEgKyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvKiBjb252ZXJ0IGFycmF5IG9mIGJhc2UgX1B5TG9uZ19CQVNFIGRpZ2l0cyBpbiBwaW4gdG8gYW4gYXJyYXkgb2YKICAgICAgICBiYXNlIF9QeUxvbmdfREVDSU1BTF9CQVNFIGRpZ2l0cyBpbiBwb3V0LCBmb2xsb3dpbmcgS251dGggKFRBT0NQLApAQCAtMTU5OSw3ICsxNjExLDcgQEAKICAgICAgICAgLyogY2hlY2sgZm9yIGtleWJvYXJkIGludGVycnVwdCAqLwogICAgICAgICBTSUdDSEVDSyh7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAvKiBwb3V0IHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSBkaWdpdCwgc28gdGhhdCB0aGUgY2FzZSB3aGVuIGEgPSAwCkBAIC0xNjE1LDY0ICsxNjI3LDExOCBAQAogICAgICAgICB0ZW5wb3cgKj0gMTA7CiAgICAgICAgIHN0cmxlbisrOwogICAgIH0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3RybGVuKTsKLSAgICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHJsZW4sICc5JykgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICBzdHIgPSBOVUxMOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIH0KKworI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAqcCA9ICdcMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCisgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLyBcCisgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChyZW0gIT0gMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSk7ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICAvKiBmaWxsIHRoZSBzdHJpbmcgcmlnaHQtdG8tbGVmdCAqLwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3RybGVuOwotICAgICpwID0gJ1wwJzsKLSAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseQotICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLwotICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgewotICAgICAgICByZW0gPSBwb3V0W2ldOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsKLSAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsKLSAgICAgICAgICAgIHJlbSAvPSAxMDsKLSAgICAgICAgfQorICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9Ci0gICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLwotICAgIHJlbSA9IHBvdXRbaV07Ci0gICAgZG8gewotICAgICAgICAqLS1wID0gJzAnICsgcmVtICUgMTA7Ci0gICAgICAgIHJlbSAvPSAxMDsKLSAgICB9IHdoaWxlIChyZW0gIT0gMCk7CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpwOworICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgfQorI3VuZGVmIFdSSVRFX0RJR0lUUwogCi0gICAgLyogYW5kIHNpZ24gKi8KLSAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLwotICAgIGFzc2VydChwID09IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopc3RyOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3RybGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB2OwogfQogCiAvKiBDb252ZXJ0IGEgbG9uZyBpbnQgb2JqZWN0IHRvIGEgc3RyaW5nLCB1c2luZyBhIGdpdmVuIGNvbnZlcnNpb24gYmFzZSwKLSAgIHdoaWNoIHNob3VsZCBiZSBvbmUgb2YgMiwgOCwgMTAgb3IgMTYuICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgotICAgSWYgYmFzZSBpcyAyLCA4IG9yIDE2LCBhZGQgdGhlIHByb3BlciBwcmVmaXggJzBiJywgJzBvJyBvciAnMHgnLiAqLworICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiAyLCA4IG9yIDE2LiAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgIElmIGJhc2UgaXMgMiwgOCBvciAxNiwgYWRkIHRoZSBwcm9wZXIgcHJlZml4ICcwYicsICcwbycgb3IgJzB4JworICAgaWYgYWx0ZXJuYXRlIGlzIG5vbnplcm8uICovCiAKLVB5T2JqZWN0ICoKLV9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zvcm1hdF9iaW5hcnkoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgcmVnaXN0ZXIgUHlMb25nT2JqZWN0ICphID0gKFB5TG9uZ09iamVjdCAqKWFhOwotICAgIFB5T2JqZWN0ICpzdHI7Ci0gICAgUHlfc3NpemVfdCBpLCBzejsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IHN6OwogICAgIFB5X3NzaXplX3Qgc2l6ZV9hOwotICAgIFB5X1VOSUNPREUgKnAsIHNpZ24gPSAnXDAnOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBpbnQgbmVnYXRpdmU7CiAgICAgaW50IGJpdHM7CiAKLSAgICBhc3NlcnQoYmFzZSA9PSAyIHx8IGJhc2UgPT0gOCB8fCBiYXNlID09IDEwIHx8IGJhc2UgPT0gMTYpOwotICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZygoUHlPYmplY3QgKilhKTsKLQorICAgIGFzc2VydChiYXNlID09IDIgfHwgYmFzZSA9PSA4IHx8IGJhc2UgPT0gMTYpOwogICAgIGlmIChhID09IE5VTEwgfHwgIVB5TG9uZ19DaGVjayhhKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIG5lZ2F0aXZlID0gUHlfU0laRShhKSA8IDA7CiAKICAgICAvKiBDb21wdXRlIGEgcm91Z2ggdXBwZXIgYm91bmQgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAqLwogICAgIHN3aXRjaCAoYmFzZSkgewpAQCAtMTY4OSw3MCArMTc1NSwxMzcgQEAKICAgICAgICAgYXNzZXJ0KDApOyAvKiBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwogICAgICAgICBiaXRzID0gMDsgLyogdG8gc2lsZW5jZSBnY2Mgd2FybmluZyAqLwogICAgIH0KLSAgICAvKiBjb21wdXRlIGxlbmd0aCBvZiBvdXRwdXQgc3RyaW5nOiBhbGxvdyAyIGNoYXJhY3RlcnMgZm9yIHByZWZpeCBhbmQKLSAgICAgICAxIGZvciBwb3NzaWJsZSAnLScgc2lnbi4gKi8KLSAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIC8qIG5vdyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgKyAzIDw9IFBZX1NTSVpFX1RfTUFYLCBzbyB0aGUgUkhTIGJlbG93Ci0gICAgICAgaXMgc2FmZSBmcm9tIG92ZXJmbG93ICovCi0gICAgc3ogPSAzICsgKHNpemVfYSAqIFB5TG9uZ19TSElGVCArIChiaXRzIC0gMSkpIC8gYml0czsKLSAgICBhc3NlcnQoc3ogPj0gMCk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHN6KTsKLSAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3o7Ci0gICAgKnAgPSAnXDAnOwotICAgIGlmIChQeV9TSVpFKGEpIDwgMCkKLSAgICAgICAgc2lnbiA9ICctJzsKIAotICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKLSAgICAgICAgKi0tcCA9ICcwJzsKKyAgICAvKiBDb21wdXRlIGV4YWN0IGxlbmd0aCAnc3onIG9mIG91dHB1dCBzdHJpbmcuICovCisgICAgaWYgKHNpemVfYSA9PSAwKSB7CisgICAgICAgIHN6ID0gMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovCi0gICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7Ci0gICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgICAgICAgICAgICAgLyogIyBvZiBiaXRzIGluIGFjY3VtICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgewotICAgICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylhLT5vYl9kaWdpdFtpXSA8PCBhY2N1bWJpdHM7Ci0gICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOwotICAgICAgICAgICAgYXNzZXJ0KGFjY3VtYml0cyA+PSBiaXRzKTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNkaWdpdDsKLSAgICAgICAgICAgICAgICBjZGlnaXQgPSAoUHlfVU5JQ09ERSkoYWNjdW0gJiAoYmFzZSAtIDEpKTsKLSAgICAgICAgICAgICAgICBjZGlnaXQgKz0gKGNkaWdpdCA8IDEwKSA/ICcwJyA6ICdhJy0xMDsKLSAgICAgICAgICAgICAgICBhc3NlcnQocCA+IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwotICAgICAgICAgICAgICAgICotLXAgPSBjZGlnaXQ7Ci0gICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7Ci0gICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7Ci0gICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV9hX2luX2JpdHM7CisgICAgICAgIC8qIEVuc3VyZSBvdmVyZmxvdyBkb2Vzbid0IG9jY3VyIGR1cmluZyBjb21wdXRhdGlvbiBvZiBzei4gKi8KKyAgICAgICAgaWYgKHNpemVfYSA+IChQWV9TU0laRV9UX01BWCAtIDMpIC8gUHlMb25nX1NISUZUKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBzaXplX2FfaW5fYml0cyA9IChzaXplX2EgLSAxKSAqIFB5TG9uZ19TSElGVCArCisgICAgICAgICAgICAgICAgICAgICAgICAgYml0c19pbl9kaWdpdChhLT5vYl9kaWdpdFtzaXplX2EgLSAxXSk7CisgICAgICAgIC8qIEFsbG93IDEgY2hhcmFjdGVyIGZvciBhICctJyBzaWduLiAqLworICAgICAgICBzeiA9IG5lZ2F0aXZlICsgKHNpemVfYV9pbl9iaXRzICsgKGJpdHMgLSAxKSkgLyBiaXRzOworICAgIH0KKyAgICBpZiAoYWx0ZXJuYXRlKSB7CisgICAgICAgIC8qIDIgY2hhcmFjdGVycyBmb3IgcHJlZml4ICAqLworICAgICAgICBzeiArPSAyOwogICAgIH0KIAotICAgIGlmIChiYXNlID09IDE2KQotICAgICAgICAqLS1wID0gJ3gnOwotICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkKLSAgICAgICAgKi0tcCA9ICdvJzsKLSAgICBlbHNlIC8qIChiYXNlID09IDIpICovCi0gICAgICAgICotLXAgPSAnYic7Ci0gICAgKi0tcCA9ICcwJzsKLSAgICBpZiAoc2lnbikKLSAgICAgICAgKi0tcCA9IHNpZ247Ci0gICAgaWYgKHAgIT0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSkgewotICAgICAgICBQeV9VTklDT0RFICpxID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKTsKLSAgICAgICAgYXNzZXJ0KHAgPiBxKTsKLSAgICAgICAgZG8gewotICAgICAgICB9IHdoaWxlICgoKnErKyA9ICpwKyspICE9ICdcMCcpOwotICAgICAgICBxLS07Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZzdHIsKFB5X3NzaXplX3QpIChxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpKSkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKKyAgICAgICAgdiA9IE5VTEw7CiAgICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilzdHI7CisgICAgZWxzZSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOworICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgfQorCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3o7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikgKyBzejsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNpemVfYSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgIC8qICMgb2YgYml0cyBpbiBhY2N1bSAqLyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W2ldIDw8IGFjY3VtYml0czsgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoYWNjdW1iaXRzID49IGJpdHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjZGlnaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ID0gKGNoYXIpKGFjY3VtICYgKGJhc2UgLSAxKSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ICs9IChjZGlnaXQgPCAxMCkgPyAnMCcgOiAnYSctMTA7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgKi0tcCA9IGNkaWdpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7IFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGFsdGVybmF0ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmIChiYXNlID09IDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ3gnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ28nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgLyogKGJhc2UgPT0gMikgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ2InOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMSk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqcDsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqcDsKKyAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgIH0KKyN1bmRlZiBXUklURV9ESUdJVFMKKworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gdjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICpvYmosIGludCBiYXNlKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCk7CisgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHN0cjsKK30KKworaW50CitfUHlMb25nX0Zvcm1hdFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIHdyaXRlcik7CiB9CiAKIC8qIFRhYmxlIG9mIGRpZ2l0IHZhbHVlcyBmb3IgOC1iaXQgc3RyaW5nIC0+IGludGVnZXIgY29udmVyc2lvbi4KQEAgLTIxMzAsMjMgKzIyNjMsMjYgQEAKIFB5T2JqZWN0ICoKIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFICp1LCBQeV9zc2l6ZV90IGxlbmd0aCwgaW50IGJhc2UpCiB7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh1bmljb2RlLCBiYXNlKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCit7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqYXNjaWlkaWc7CiAgICAgY2hhciAqYnVmZmVyLCAqZW5kOwotICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuOwotICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGJ1ZmxlbjsKIAotICAgIGFzY2lpZGlnID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKHUsIGxlbmd0aCk7CisgICAgYXNjaWlkaWcgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodSk7CiAgICAgaWYgKGFzY2lpZGlnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIFJlcGxhY2Ugbm9uLUFTQ0lJIHdoaXRlc3BhY2Ugd2l0aCAnICcgKi8KLSAgICBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhc2NpaWRpZyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBwdHJbaV07Ci0gICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgcHRyW2ldID0gJyAnOwotICAgIH0KLSAgICBidWZmZXIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShhc2NpaWRpZywgJmJ1Zmxlbik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXNjaWlkaWcsICZidWZsZW4pOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXNjaWlkaWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NDMsOCArMjU3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICB9Ci0gICAgYXNzZXJ0KDEgPD0geF9zaXplICYmCi0gICAgICAgICAgIHhfc2l6ZSA8PSAoUHlfc3NpemVfdCkoc2l6ZW9mKHhfZGlnaXRzKS9zaXplb2YoZGlnaXQpKSk7CisgICAgYXNzZXJ0KDEgPD0geF9zaXplICYmIHhfc2l6ZSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoeF9kaWdpdHMpKTsKIAogICAgIC8qIFJvdW5kLCBhbmQgY29udmVydCB0byBkb3VibGUuICovCiAgICAgeF9kaWdpdHNbMF0gKz0gaGFsZl9ldmVuX2NvcnJlY3Rpb25beF9kaWdpdHNbMF0gJiA3XTsKQEAgLTI0ODEsMTAgKzI2MTYsMTQgQEAKICAgICBQeV9zc2l6ZV90IGV4cG9uZW50OwogICAgIGRvdWJsZSB4OwogCi0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHYpKSB7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CiAgICAgfQorICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMzYwOSw4ICszNzQ4LDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlfREVDUkVGKGEpOwogICAgICAgICBQeV9ERUNSRUYoYik7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgeyAgLyogaWYgZXhwb25lbnQgaXMgbmVnYXRpdmUgKi8KQEAgLTQxMzcsOSArNDI3NSw3IEBACiAgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCliYXNlKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh4LCAoaW50KWJhc2UpOwogICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHgpIHx8IFB5Qnl0ZXNfQ2hlY2soeCkpIHsKICAgICAgICAgLyogU2luY2UgUHlMb25nX0Zyb21TdHJpbmcgZG9lc24ndCBoYXZlIGEgbGVuZ3RoIHBhcmFtZXRlciwKICAgICAgICAgICogY2hlY2sgaGVyZSBmb3IgcG9zc2libGUgTlVMcyBpbiB0aGUgc3RyaW5nLiAqLwpAQCAtNDIxOCwxMiArNDM1NCwyMiBAQAogbG9uZ19fZm9ybWF0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogLyogUmV0dXJuIGEgcGFpciAocSwgcikgc3VjaCB0aGF0IGEgPSBiICogcSArIHIsIGFuZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggNDAzYWE2OC4uZDU2ZmFmOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC0xLDEyNiArMSw5NTQgQEAKLQogLyogTWVtb3J5dmlldyBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jZGVmaW5lIElTX1JFTEVBU0VEKG1lbW9iaikgXAotICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBtZW1vYmopLT52aWV3LmJ1ZiA9PSBOVUxMKQogCi0jZGVmaW5lIENIRUNLX1JFTEVBU0VEKG1lbW9iaikgXAotICAgIGlmIChJU19SRUxFQVNFRChtZW1vYmopKSB7IFwKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7IFwKLSAgICAgICAgcmV0dXJuIE5VTEw7IFwKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VkQnVmZmVyIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIE1hbmFnZWRCdWZmZXIgT2JqZWN0OgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBvYmplY3QgaXMgdG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2hhaW5lZAorICAgICBtZW1vcnl2aWV3cyB0aGF0IGhhdmUgdGhlIHNhbWUgdW5kZXJseWluZyBleHBvcnRpbmcgb2JqZWN0LiBQRVAtMzExOAorICAgICBhbGxvd3MgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRvIGNoYW5nZSB3aGlsZSBhIHZpZXcgaXMgZXhwb3J0ZWQuIFRoaXMKKyAgICAgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBjb25zdHJ1Y3RpbmcgYSBuZXcgbWVtb3J5dmlldworICAgICBmcm9tIGFuIGV4aXN0aW5nIG1lbW9yeXZpZXcuCisKKyAgICAgUmF0aGVyIHRoYW4gcmVwZWF0ZWRseSByZWRpcmVjdGluZyBidWZmZXIgcmVxdWVzdHMgdG8gdGhlIG9yaWdpbmFsIGJhc2UKKyAgICAgb2JqZWN0LCBhbGwgY2hhaW5lZCBtZW1vcnl2aWV3cyB1c2UgYSBzaW5nbGUgYnVmZmVyIHNuYXBzaG90LiBUaGlzCisgICAgIHNuYXBzaG90IGlzIGdlbmVyYXRlZCBieSB0aGUgY29uc3RydWN0b3IgX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KCkuCisKKyAgIE93bmVyc2hpcCBydWxlczoKKyAgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgICBUaGUgbWFzdGVyIGJ1ZmZlciBpbnNpZGUgYSBtYW5hZ2VkIGJ1ZmZlciBpcyBmaWxsZWQgaW4gYnkgdGhlIG9yaWdpbmFsCisgICAgIGJhc2Ugb2JqZWN0LiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyBhbmQgZm9ybWF0IGFyZSByZWFkLW9ubHkgZm9yCisgICAgIGFsbCBjb25zdW1lcnMuCisKKyAgICAgQSBtZW1vcnl2aWV3J3MgYnVmZmVyIGlzIGEgcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIGJ1ZmZlci4gc2hhcGUsCisgICAgIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgYmVsb25nIHRvIHRoZSBtZW1vcnl2aWV3IGFuZCBhcmUgdGh1cyB3cml0YWJsZS4KKworICAgICBJZiBhIG1lbW9yeXZpZXcgaXRzZWxmIGV4cG9ydHMgc2V2ZXJhbCBidWZmZXJzIHZpYSBtZW1vcnlfZ2V0YnVmKCksIGFsbAorICAgICBidWZmZXIgY29waWVzIHNoYXJlIHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgICBhcnJheXMgYXJlIE5PVCB3cml0YWJsZS4KKworICAgUmVmZXJlbmNlIGNvdW50IGFzc3VtcHRpb25zOgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgIFRoZSAnb2JqJyBtZW1iZXIgb2YgYSBQeV9idWZmZXIgbXVzdCBlaXRoZXIgYmUgTlVMTCBvciByZWZlciB0byB0aGUKKyAgICAgZXhwb3J0aW5nIGJhc2Ugb2JqZWN0LiBJbiB0aGUgUHl0aG9uIGNvZGViYXNlLCBhbGwgZ2V0YnVmZmVycHJvY3MKKyAgICAgcmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB2aWV3Lm9iaiAoZXhhbXBsZTogYnl0ZXNfYnVmZmVyX2dldGJ1ZmZlcigpKS4KKworICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyB2aWV3Lm9iaiAoaWYgbm9uLU5VTEwpLCBzbyB0aGUKKyAgICAgcmVsZWFzZWJ1ZmZlcnByb2NzIG11c3QgTk9UIGRlY3JlbWVudCB2aWV3Lm9iai4KKyovCisKKworI2RlZmluZSBYU1RSSU5HSVpFKHYpICN2CisjZGVmaW5lIFNUUklOR0laRSh2KSBYU1RSSU5HSVpFKHYpCisKKyNkZWZpbmUgQ0hFQ0tfTUJVRl9SRUxFQVNFRChtYnVmKSBcCisgICAgaWYgKCgoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKW1idWYpLT5mbGFncyZfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotI2RlZmluZSBDSEVDS19SRUxFQVNFRF9JTlQobWVtb2JqKSBcCi0gICAgaWYgKElTX1JFTEVBU0VEKG1lbW9iaikpIHsgXAotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAotICAgICAgICByZXR1cm4gLTE7IFwKLSAgICB9CiAKLXN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfc2hhcGUwKFB5X2J1ZmZlciAqYnVmKQorUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK21idWZfYWxsb2Modm9pZCkKIHsKLSAgICBpZiAoYnVmLT5zaGFwZSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gYnVmLT5zaGFwZVswXTsKLSAgICBpZiAoYnVmLT5uZGltID09IDApCi0gICAgICAgIHJldHVybiAxOwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJleHBvcnRlZCBidWZmZXIgZG9lcyBub3QgaGF2ZSBhbnkgc2hhcGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCAiCi0gICAgICAgICJ0byBpdCIpOwotICAgIHJldHVybiAtMTsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworCisgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCisgICAgICAgIFB5T2JqZWN0X0dDX05ldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0LCAmX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYnVmLT5mbGFncyA9IDA7CisgICAgbWJ1Zi0+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/IiwgMSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmlsZW5hbWUgPSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgoUHlPYmplY3QgKiltKTsKICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJyVzJyAoYnVpbHQtaW4pPiIsIG5hbWUpOworICAgICAgICAvKiBUaGVyZSdzIG5vIG0uX19maWxlX18sIHNvIGlmIHRoZXJlIHdhcyBhbiBfX2xvYWRlcl9fLCB1c2UgdGhhdCBpbgorICAgICAgICAgKiB0aGUgcmVwciwgb3RoZXJ3aXNlLCB0aGUgb25seSB0aGluZyB5b3UgY2FuIHVzZSBpcyBtLl9fbmFtZV9fCisgICAgICAgICAqLworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUj4iLCBuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiAoJVIpPiIsIG5hbWUsIGxvYWRlcik7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICclcycgZnJvbSAnJVUnPiIsIG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIC8qIEZpbmFsbHksIHVzZSBtLl9fZmlsZV9fICovCisgICAgZWxzZSB7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiBmcm9tICVSPiIsIG5hbWUsIGZpbGVuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICB9CisgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXByOwogfQogCkBAIC0zOTUsNiArNDQ3LDM1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittb2R1bGVfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKKworICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVjayhkaWN0KSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKHNlbGYpOworICAgICAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiX19kaXJfXyIsIG1vZHVsZV9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5zcGVjaWFsaXplZCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKKyAgICB7MH0KK307CisKIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAibW9kdWxlKG5hbWVbLCBkb2NdKVxuXApAQCAtNDMxLDcgKzUxMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtb2R1bGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBtb2R1bGVfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUzODc0YwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKm5zX2RpY3Q7Cit9IF9QeU5hbWVzcGFjZU9iamVjdDsKKworCitzdGF0aWMgUHlNZW1iZXJEZWYgbmFtZXNwYWNlX21lbWJlcnNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKF9QeU5hbWVzcGFjZU9iamVjdCwgbnNfZGljdCksIFJFQURPTkxZfSwKKyAgICB7TlVMTH0KK307CisKKworLyogTWV0aG9kcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorbmFtZXNwYWNlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBfUHlOYW1lc3BhY2VPYmplY3QgKm5zOworICAgIG5zID0gUHlPYmplY3RfR0NfTmV3KF9QeU5hbWVzcGFjZU9iamVjdCwgJl9QeU5hbWVzcGFjZV9UeXBlKTsKKyAgICBpZiAobnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBucy0+bnNfZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAobnMtPm5zX2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobnMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdF9HQ19UcmFjayhucyk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5zOworfQorCisKK3N0YXRpYyBpbnQKK25hbWVzcGFjZV9pbml0KF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICAvKiBpZ25vcmUgYXJncyBpZiBpdCdzIE5VTEwgb3IgZW1wdHkgKi8KKyAgICBpZiAoYXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgYXJnY291bnQgPSBQeU9iamVjdF9TaXplKGFyZ3MpOworICAgICAgICBpZiAoYXJnY291bnQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGFyZ2NvdW50OworICAgICAgICBlbHNlIGlmIChhcmdjb3VudCA+IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJubyBwb3NpdGlvbmFsIGFyZ3VtZW50cyBleHBlY3RlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmIChrd2RzID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBQeURpY3RfVXBkYXRlKG5zLT5uc19kaWN0LCBrd2RzKTsKK30KKworCitzdGF0aWMgdm9pZAorbmFtZXNwYWNlX2RlYWxsb2MoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKG5zKTsKKyAgICBQeV9DTEVBUihucy0+bnNfZGljdCk7CisgICAgUHlfVFlQRShucyktPnRwX2ZyZWUoKFB5T2JqZWN0ICopbnMpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCituYW1lc3BhY2VfcmVwcihfUHlOYW1lc3BhY2VPYmplY3QgKm5zKQoreworICAgIGludCBpLCBsb29wX2Vycm9yID0gMDsKKyAgICBQeU9iamVjdCAqcGFpcnMgPSBOVUxMLCAqZCA9IE5VTEwsICprZXlzID0gTlVMTCwgKmtleXNfaXRlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqc2VwYXJhdG9yLCAqcGFpcnNyZXByLCAqcmVwciA9IE5VTEw7CisKKyAgICBpID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKW5zKTsKKyAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgIHJldHVybiBpID4gMCA/IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJuYW1lc3BhY2UoLi4uKSIpIDogTlVMTDsKKyAgICB9CisKKyAgICBwYWlycyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKHBhaXJzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBkID0gKChfUHlOYW1lc3BhY2VPYmplY3QgKilucyktPm5zX2RpY3Q7CisgICAgYXNzZXJ0KGQgIT0gTlVMTCk7CisgICAgUHlfSU5DUkVGKGQpOworCisgICAga2V5cyA9IFB5RGljdF9LZXlzKGQpOworICAgIGlmIChrZXlzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5TGlzdF9Tb3J0KGtleXMpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBrZXlzX2l0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGtleXMpOworICAgIGlmIChrZXlzX2l0ZXIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoa2V5c19pdGVyKSkgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlVbmljb2RlX0dFVF9TSVpFKGtleSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUsICppdGVtOworCisgICAgICAgICAgICB2YWx1ZSA9IFB5RGljdF9HZXRJdGVtKGQsIGtleSk7CisgICAgICAgICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CisKKyAgICAgICAgICAgIGl0ZW0gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVM9JVIiLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBsb29wX2Vycm9yID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxvb3BfZXJyb3IgPSBQeUxpc3RfQXBwZW5kKHBhaXJzLCBpdGVtKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGxvb3BfZXJyb3IpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHNlcGFyYXRvciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIsICIpOworICAgIGlmIChzZXBhcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHBhaXJzcmVwciA9IFB5VW5pY29kZV9Kb2luKHNlcGFyYXRvciwgcGFpcnMpOworICAgIFB5X0RFQ1JFRihzZXBhcmF0b3IpOworICAgIGlmIChwYWlyc3JlcHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeU9iamVjdCAqKW5zKS0+b2JfdHlwZS0+dHBfbmFtZSwgcGFpcnNyZXByKTsKKyAgICBQeV9ERUNSRUYocGFpcnNyZXByKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihwYWlycyk7CisgICAgUHlfWERFQ1JFRihkKTsKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYoa2V5c19pdGVyKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbnMpOworCisgICAgcmV0dXJuIHJlcHI7Cit9CisKKworc3RhdGljIGludAorbmFtZXNwYWNlX3RyYXZlcnNlKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG5zLT5uc19kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CituYW1lc3BhY2VfY2xlYXIoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBQeV9DTEVBUihucy0+bnNfZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworUHlEb2NfU1RSVkFSKG5hbWVzcGFjZV9kb2MsCisiQSBzaW1wbGUgYXR0cmlidXRlLWJhc2VkIG5hbWVzcGFjZS5cblwKK1xuXAorbmFtZXNwYWNlKCoqa3dhcmdzKSIpOworCitQeVR5cGVPYmplY3QgX1B5TmFtZXNwYWNlX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAibmFtZXNwYWNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoX1B5TmFtZXNwYWNlT2JqZWN0KSwgICAgICAgICAgICAgICAgIC8qIHRwX3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpbmFtZXNwYWNlX2RlYWxsb2MsICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpbmFtZXNwYWNlX3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBuYW1lc3BhY2VfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpbmFtZXNwYWNlX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSluYW1lc3BhY2VfY2xlYXIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbmFtZXNwYWNlX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YoX1B5TmFtZXNwYWNlT2JqZWN0LCBuc19kaWN0KSwgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKW5hbWVzcGFjZV9pbml0LCAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIChuZXdmdW5jKW5hbWVzcGFjZV9uZXcsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCisKK1B5T2JqZWN0ICoKK19QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm5zID0gbmFtZXNwYWNlX25ldygmX1B5TmFtZXNwYWNlX1R5cGUsIE5VTEwsIE5VTEwpOworICAgIGlmIChucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChrd2RzID09IE5VTEwpCisgICAgICAgIHJldHVybiBuczsKKyAgICBpZiAoUHlEaWN0X1VwZGF0ZSgoKF9QeU5hbWVzcGFjZU9iamVjdCAqKW5zKS0+bnNfZGljdCwga3dkcykgIT0gMCkgeworICAgICAgICBQeV9ERUNSRUYobnMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbnM7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCA0NzMwYTY2Li5mNDE3MTg0IDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTEsNSArMSw1IEBACiAKLS8qIEdlbmVyaWMgb2JqZWN0IG9wZXJhdGlvbnM7IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBOb25lIChOb09iamVjdCkgKi8KKy8qIEdlbmVyaWMgb2JqZWN0IG9wZXJhdGlvbnM7IGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBOb25lICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgpAQCAtMjksOCArMjksNiBAQAogfQogI2VuZGlmIC8qIFB5X1JFRl9ERUJVRyAqLwogCi1pbnQgUHlfRGl2aXNpb25XYXJuaW5nRmxhZzsKLQogLyogT2JqZWN0IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBORVdPQkogYW5kIE5FV1ZBUk9CSiBtYWNyb3MuCiAgICBUaGVzZSBhcmUgdXNlZCBieSB0aGUgaW5kaXZpZHVhbCByb3V0aW5lcyBmb3Igb2JqZWN0IGNyZWF0aW9uLgogICAgRG8gbm90IGNhbGwgdGhlbSBvdGhlcndpc2UsIHRoZXkgZG8gbm90IGluaXRpYWxpemUgdGhlIG9iamVjdCEgKi8KQEAgLTI5Nyw5ICsyOTUsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHMpKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnQ7Ci0gICAgICAgICAgICAgICAgdCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgdCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcocywgInV0Zi04IiwgImJhY2tzbGFzaHJlcGxhY2UiKTsKICAgICAgICAgICAgICAgICBpZiAodCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXQgPSAwOwogICAgICAgICAgICAgICAgIGVsc2UgewpAQCAtMzgyLDEzICszNzgsMTkgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXMgb2JqZWN0IGF0ICVwPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLCB2KTsKICAgICByZXMgPSAoKnYtPm9iX3R5cGUtPnRwX3JlcHIpKHYpOwotICAgIGlmIChyZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKHJlcykpIHsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHJlcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJfX3JlcHJfXyByZXR1cm5lZCBub24tc3RyaW5nICh0eXBlICUuMjAwcykiLAogICAgICAgICAgICAgICAgICAgICAgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUHlfREVCVUcKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTQwNyw2ICs0MDksMTAgQEAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxOVUxMPiIpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgeworI2lmbmRlZiBQeV9ERUJVRworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHYpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCiAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQpAQCAtNDI4LDYgKzQzNCwxMSBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2lmbmRlZiBQeV9ERUJVRworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC00NDEsMTEgKzQ1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogcmVwciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgUHlVbmljb2RlIG9iamVjdCBieSBQeU9iamVjdF9SZXByICovCi0gICAgYXNjaWkgPSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpLAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUocmVwciksCi0gICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIik7Ci0KKyAgICBhc2NpaSA9IF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhyZXByLCAiYmFja3NsYXNocmVwbGFjZSIpOwogICAgIFB5X0RFQ1JFRihyZXByKTsKICAgICBpZiAoYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NjMsNyArNDcwLDcgQEAKIFB5T2JqZWN0X0J5dGVzKFB5T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpmdW5jOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYnl0ZXNzdHJpbmcgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fYnl0ZXNfXyk7CiAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCI8TlVMTD4iKTsKQEAgLTQ3Myw3ICs0ODAsNyBAQAogICAgICAgICByZXR1cm4gdjsKICAgICB9CiAKLSAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwodiwgIl9fYnl0ZXNfXyIsICZieXRlc3N0cmluZyk7CisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICZQeUlkX19fYnl0ZXNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CkBAIC03NDcsNiArNzU0LDMzIEBACiB9CiAKIFB5X2hhc2hfdAorX1B5X0hhc2hCeXRlcyh1bnNpZ25lZCBjaGFyICpwLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBQeV91aGFzaF90IHg7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgLyoKKyAgICAgIFdlIG1ha2UgdGhlIGhhc2ggb2YgdGhlIGVtcHR5IHN0cmluZyBiZSAwLCByYXRoZXIgdGhhbiB1c2luZworICAgICAgKHByZWZpeCBeIHN1ZmZpeCksIHNpbmNlIHRoaXMgc2xpZ2h0bHkgb2JmdXNjYXRlcyB0aGUgaGFzaCBzZWNyZXQKKyAgICAqLworI2lmZGVmIFB5X0RFQlVHCisgICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKKyNlbmRpZgorICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgeCA9IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgKnAgPDwgNzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSICogeCkgXiAoUHlfdWhhc2hfdCkgKnArKzsKKyAgICB4IF49IChQeV91aGFzaF90KSBsZW47CisgICAgeCBePSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQuc3VmZml4OworICAgIGlmICh4ID09IC0xKQorICAgICAgICB4ID0gLTI7CisgICAgcmV0dXJuIHg7Cit9CisKK1B5X2hhc2hfdAogUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkKFB5T2JqZWN0ICp2KQogewogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJ1bmhhc2hhYmxlIHR5cGU6ICclLjIwMHMnIiwKQEAgLTc4OCw3ICs4MjIsNyBAQAogICAgIGlmICh3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IFB5T2JqZWN0X0dldEF0dHIodiwgdyk7Ci0gICAgUHlfWERFQ1JFRih3KTsKKyAgICBQeV9ERUNSRUYodyk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtODIwLDYgKzg1NCw2MiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK2ludAorX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0KiBpc2Fic3RyYWN0OworICAgIF9QeV9JREVOVElGSUVSKF9faXNhYnN0cmFjdG1ldGhvZF9fKTsKKworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpc2Fic3RyYWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19faXNhYnN0cmFjdG1ldGhvZF9fKTsKKyAgICBpZiAoaXNhYnN0cmFjdCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfSXNUcnVlKGlzYWJzdHJhY3QpOworICAgIFB5X0RFQ1JFRihpc2Fic3RyYWN0KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmICghb25hbWUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHIodiwgb25hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfSGFzQXR0cih2LCBvbmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICp2LCBfUHlfSWRlbnRpZmllciAqbmFtZSwgUHlPYmplY3QgKncpCit7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0cih2LCBvbmFtZSwgdyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqdiwgUHlPYmplY3QgKm5hbWUpCiB7CkBAIC05MzgsNiArMTAyOCwxOSBAQAogICAgIHJldHVybiBvYmo7CiB9CiAKKy8qIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGdldCBhIGJ1aWx0aW4gZnJvbSBpdHMgbmFtZSAqLworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dldEJ1aWx0aW4oY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbW9kLCAqYXR0cjsKKyAgICBtb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CisgICAgaWYgKG1vZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhdHRyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsIG5hbWUpOworICAgIFB5X0RFQ1JFRihtb2QpOworICAgIHJldHVybiBhdHRyOworfQorCiAvKiBIZWxwZXIgdXNlZCB3aGVuIHRoZSBfX25leHRfXyBtZXRob2QgaXMgcmVtb3ZlZCBmcm9tIGEgdHlwZToKICAgIHRwX2l0ZXJuZXh0IGlzIG5ldmVyIE5VTEwgYW5kIGNhbiBiZSBzYWZlbHkgY2FsbGVkIHdpdGhvdXQgY2hlY2tpbmcKICAgIG9uIGV2ZXJ5IGl0ZXJhdGlvbi4KQEAgLTk4Niw3ICsxMDg5LDYgQEAKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9nZXQ7CiAgICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKW9iai0+b2JfdHlwZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAgICAgfQpAQCAtMTAxNyw3ICsxMTE5LDYgQEAKICAgICAgICAgcmVzID0gUHlEaWN0X0dldEl0ZW0oZGljdCwgbmFtZSk7CiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQpAQCAtMTAyNiwxMyArMTEyNywxMiBAQAogCiAgICAgaWYgKGYgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKVB5X1RZUEUob2JqKSk7Ci0gICAgICAgIFB5X0RFQ1JFRihkZXNjcik7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBkZXNjcjsKLSAgICAgICAgLyogZGVzY3Igd2FzIGFscmVhZHkgaW5jcmVmZWQgYWJvdmUgKi8KKyAgICAgICAgZGVzY3IgPSBOVUxMOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCkBAIC0xMDQwLDYgKzExNDAsNyBAQAogICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgorICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTA2NiwxNSArMTE2NywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgbmFtZS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYobmFtZSk7CiAKLSAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHRwKSA8IDApCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQorICAgIGlmICh0cC0+dHBfZGljdCA9PSBOVUxMICYmIFB5VHlwZV9SZWFkeSh0cCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKKyAgICBQeV9YSU5DUkVGKGRlc2NyKTsKKwogICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3Jfc2V0OwpAQCAtMTA4NywxMyArMTE4OCwxMCBAQAogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CiAgICAgICAgIGlmIChkaWN0cHRyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwgJiYgdmFsdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeV9UWVBFKG9iaiksIGRpY3RwdHIsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGRpY3QgIT0gTlVMTCkgewpAQCAtMTEwMiw5ICsxMjAwLDkgQEAKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKQEAgLTExMjQsNiArMTIyMiw3IEBACiAgICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAogICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CiAgIGRvbmU6CisgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC0xMTM0LDYgKzEyMzMsMzIgQEAKICAgICByZXR1cm4gX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3Qob2JqLCBuYW1lLCB2YWx1ZSwgTlVMTCk7CiB9CiAKK2ludAorUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgIGlmIChkaWN0cHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGhhcyBubyBfX2RpY3RfXyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0aW9uYXJ5LCAiCisgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZGljdCA9ICpkaWN0cHRyOworICAgIFB5X1hJTkNSRUYodmFsdWUpOworICAgICpkaWN0cHRyID0gdmFsdWU7CisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKwogCiAvKiBUZXN0IGEgdmFsdWUgdXNlZCBhcyBjb25kaXRpb24sIGUuZy4sIGluIGEgZm9yIG9yIGlmIHN0YXRlbWVudC4KICAgIFJldHVybiAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAqLwpAQCAtMTE4Niw2NiArMTMxMSw2IEBACiAgICAgcmV0dXJuIHgtPm9iX3R5cGUtPnRwX2NhbGwgIT0gTlVMTDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQeU9iamVjdF9EaXIoKSBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIuCi0gICBNZXJnZSB0aGUgX19kaWN0X18gb2YgYWNsYXNzIGludG8gZGljdCwgYW5kIHJlY3Vyc2l2ZWx5IGFsc28gYWxsCi0gICB0aGUgX19kaWN0X19zIG9mIGFjbGFzcydzIGJhc2UgY2xhc3Nlcy4gIFRoZSBvcmRlciBvZiBtZXJnaW5nIGlzbid0Ci0gICBkZWZpbmVkLCBhcyBpdCdzIGV4cGVjdGVkIHRoYXQgb25seSB0aGUgZmluYWwgc2V0IG9mIGRpY3Qga2V5cyBpcwotICAgaW50ZXJlc3RpbmcuCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4KLSovCi0KLXN0YXRpYyBpbnQKLW1lcmdlX2NsYXNzX2RpY3QoUHlPYmplY3QqIGRpY3QsIFB5T2JqZWN0KiBhY2xhc3MpCi17Ci0gICAgUHlPYmplY3QgKmNsYXNzZGljdDsKLSAgICBQeU9iamVjdCAqYmFzZXM7Ci0KLSAgICBhc3NlcnQoUHlEaWN0X0NoZWNrKGRpY3QpKTsKLSAgICBhc3NlcnQoYWNsYXNzKTsKLQotICAgIC8qIE1lcmdlIGluIHRoZSB0eXBlJ3MgZGljdCAoaWYgYW55KS4gKi8KLSAgICBjbGFzc2RpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGFjbGFzcywgIl9fZGljdF9fIik7Ci0gICAgaWYgKGNsYXNzZGljdCA9PSBOVUxMKQotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgewotICAgICAgICBpbnQgc3RhdHVzID0gUHlEaWN0X1VwZGF0ZShkaWN0LCBjbGFzc2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYoY2xhc3NkaWN0KTsKLSAgICAgICAgaWYgKHN0YXR1cyA8IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgLyogUmVjdXJzaXZlbHkgbWVyZ2UgaW4gdGhlIGJhc2UgdHlwZXMnIChpZiBhbnkpIGRpY3RzLiAqLwotICAgIGJhc2VzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhhY2xhc3MsICJfX2Jhc2VzX18iKTsKLSAgICBpZiAoYmFzZXMgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLyogV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBiYXNlcyBpcyBhIHJlYWwgdHVwbGUgKi8KLSAgICAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgICAgICBuID0gUHlTZXF1ZW5jZV9TaXplKGJhc2VzKTsgLyogVGhpcyBiZXR0ZXIgYmUgcmlnaHQgKi8KLSAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFB5U2VxdWVuY2VfR2V0SXRlbShiYXNlcywgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXR1cyA9IG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgYmFzZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19CiAKIC8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIHdpdGhvdXQgYXJndW1lbnRzOiByZXR1cm5zIHRoZSBsb2NhbCBzY29wZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjY5LDE0MCArMTMzNCw0MyBAQAogICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5TGlzdF9Tb3J0KG5hbWVzKSkgeworICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgLyogdGhlIGxvY2FscyBkb24ndCBuZWVkIHRvIGJlIERFQ1JFRidkICovCiAgICAgcmV0dXJuIG5hbWVzOwogfQogCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciBvZiB0eXBlIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18gYW5kIF9fYmFzZXNfXy4KLSAgIFdlIGRlbGliZXJhdGVseSBkb24ndCBzdWNrIHVwIGl0cyBfX2NsYXNzX18sIGFzIG1ldGhvZHMgYmVsb25naW5nIHRvIHRoZQotICAgbWV0YWNsYXNzIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgY29uZnVzaW5nIHRoYW4gaGVscGZ1bC4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotX3NwZWNpYWxpemVkX2Rpcl90eXBlKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeURpY3RfTmV3KCk7Ci0KLSAgICBpZiAoZGljdCAhPSBOVUxMICYmIG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgb2JqKSA9PSAwKQotICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLQotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgb2YgbW9kdWxlIG9iamVjdHM6IHJldHVybnMgdGhlIG1vZHVsZSdzIF9fZGljdF9fLiAqLwotc3RhdGljIFB5T2JqZWN0ICoKLV9zcGVjaWFsaXplZF9kaXJfbW9kdWxlKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0KLSAgICBpZiAoZGljdCAhPSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeURpY3RfQ2hlY2soZGljdCkpCi0gICAgICAgICAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gUHlNb2R1bGVfR2V0TmFtZShvYmopOwotICAgICAgICAgICAgaWYgKG5hbWUpCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIG9mIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAotICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1fZ2VuZXJpY19kaXIoUHlPYmplY3QgKm9iaikKLXsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKLQotICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCi0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19kaWN0X18iKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKCFQeURpY3RfQ2hlY2soZGljdCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ29weSBfX2RpY3RfXyB0byBhdm9pZCBtdXRhdGluZyBpdC4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeURpY3RfQ29weShkaWN0KTsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwotICAgICAgICBkaWN0ID0gdGVtcDsKLSAgICB9Ci0KLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgLyogTWVyZ2UgaW4gYXR0cnMgcmVhY2hhYmxlIGZyb20gaXRzIGNsYXNzLiAqLwotICAgIGl0c2NsYXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2NsYXNzX18iKTsKLSAgICBpZiAoaXRzY2xhc3MgPT0gTlVMTCkKLSAgICAgICAgLyogWFhYKHRvbWVyKTogUGVyaGFwcyBmYWxsIGJhY2sgdG8gb2JqLT5vYl90eXBlIGlmIG5vCi0gICAgICAgICAgICAgICAgICAgICAgIF9fY2xhc3NfXyBleGlzdHM/ICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGl0c2NsYXNzKSAhPSAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKLSAgICAvKiBmYWxsIHRocm91Z2ggKi8KLWVycm9yOgotICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOwotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXI6IG9iamVjdCBpbnRyb3NwZWN0aW9uLgotICAgVGhpcyBjYWxscyBvbmUgb2YgdGhlIGFib3ZlIHNwZWNpYWxpemVkIHZlcnNpb25zIGlmIG5vIF9fZGlyX18gbWV0aG9kCi0gICBleGlzdHMuICovCisvKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0Rpcjogb2JqZWN0IGludHJvc3BlY3Rpb24uICovCiBzdGF0aWMgUHlPYmplY3QgKgogX2Rpcl9vYmplY3QoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpcl9zdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaXJmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAiX19kaXJfXyIsICZkaXJfc3RyKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqc29ydGVkOworICAgIF9QeV9JREVOVElGSUVSKF9fZGlyX18pOworICAgIFB5T2JqZWN0ICpkaXJmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAmUHlJZF9fX2Rpcl9fKTsKIAogICAgIGFzc2VydChvYmopOwogICAgIGlmIChkaXJmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogdXNlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gKi8KLSAgICAgICAgaWYgKFB5TW9kdWxlX0NoZWNrKG9iaikpCi0gICAgICAgICAgICByZXN1bHQgPSBfc3BlY2lhbGl6ZWRfZGlyX21vZHVsZShvYmopOwotICAgICAgICBlbHNlIGlmIChQeVR5cGVfQ2hlY2sob2JqKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IF9zcGVjaWFsaXplZF9kaXJfdHlwZShvYmopOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBfZ2VuZXJpY19kaXIob2JqKTsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm9iamVjdCBkb2VzIG5vdCBwcm92aWRlIF9fZGlyX18iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiB1c2UgX19kaXJfXyAqLwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGRpcmZ1bmMsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZGlyZnVuYyk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIC8qIHJlc3VsdCBtdXN0IGJlIGEgbGlzdCAqLwotICAgICAgICAvKiBYWFgoZ2JyYW5kbCk6IGNvdWxkIGFsc28gY2hlY2sgaWYgYWxsIGl0ZW1zIGFyZSBzdHJpbmdzICovCi0gICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIl9fZGlyX18oKSBtdXN0IHJldHVybiBhIGxpc3QsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzdWx0KS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAvKiB1c2UgX19kaXJfXyAqLworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZGlyZnVuYywgTlVMTCk7CisgICAgUHlfREVDUkVGKGRpcmZ1bmMpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogcmV0dXJuIHNvcnRlZChyZXN1bHQpICovCisgICAgc29ydGVkID0gUHlTZXF1ZW5jZV9MaXN0KHJlc3VsdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgaWYgKHNvcnRlZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlMaXN0X1NvcnQoc29ydGVkKSkgeworICAgICAgICBQeV9ERUNSRUYoc29ydGVkKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc29ydGVkOwogfQogCiAvKiBJbXBsZW1lbnRhdGlvbiBvZiBkaXIoKSAtLSBpZiBvYmogaXMgTlVMTCwgcmV0dXJucyB0aGUgbmFtZXMgaW4gdGhlIGN1cnJlbnQKQEAgLTE0MTIsMzEgKzEzODAsMTMgQEAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0RpcihQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICogcmVzdWx0OwotCi0gICAgaWYgKG9iaiA9PSBOVUxMKQotICAgICAgICAvKiBubyBvYmplY3QgLS0gaW50cm9zcGVjdCB0aGUgbG9jYWxzICovCi0gICAgICAgIHJlc3VsdCA9IF9kaXJfbG9jYWxzKCk7Ci0gICAgZWxzZQotICAgICAgICAvKiBvYmplY3QgLS0gaW50cm9zcGVjdCB0aGUgb2JqZWN0ICovCi0gICAgICAgIHJlc3VsdCA9IF9kaXJfb2JqZWN0KG9iaik7Ci0KLSAgICBhc3NlcnQocmVzdWx0ID09IE5VTEwgfHwgUHlMaXN0X0NoZWNrKHJlc3VsdCkpOwotCi0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIFB5TGlzdF9Tb3J0KHJlc3VsdCkgIT0gMCkgewotICAgICAgICAvKiBzb3J0aW5nIHRoZSBsaXN0IGZhaWxlZCAqLwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAob2JqID09IE5VTEwpID8gX2Rpcl9sb2NhbHMoKSA6IF9kaXJfb2JqZWN0KG9iaik7CiB9CiAKIC8qCi1Ob09iamVjdCBpcyB1c2FibGUgYXMgYSBub24tTlVMTCB1bmRlZmluZWQgdmFsdWUsIHVzZWQgYnkgdGhlIG1hY3JvIE5vbmUuCitOb25lIGlzIGEgbm9uLU5VTEwgdW5kZWZpbmVkIHZhbHVlLgogVGhlcmUgaXMgKGFuZCBzaG91bGQgYmUhKSBubyB3YXkgdG8gY3JlYXRlIG90aGVyIG9iamVjdHMgb2YgdGhpcyB0eXBlLAogc28gdGhlcmUgaXMgZXhhY3RseSBvbmUgKHdoaWNoIGlzIGluZGVzdHJ1Y3RpYmxlLCBieSB0aGUgd2F5KS4KLShYWFggVGhpcyB0eXBlIGFuZCB0aGUgdHlwZSBvZiBOb3RJbXBsZW1lbnRlZCBiZWxvdyBzaG91bGQgYmUgdW5pZmllZC4pCiAqLwogCiAvKiBBUkdTVVNFRCAqLwpAQCAtMTQ1Niw2ICsxNDA2LDU4IEBACiAgICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIE5vbmUiKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK25vbmVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgfHwgKGt3YXJncyAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiTm9uZVR5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorbm9uZV9ib29sKFB5T2JqZWN0ICp2KQoreworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIG5vbmVfYXNfbnVtYmVyID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hYnNvbHV0ZSAqLworICAgIChpbnF1aXJ5KW5vbmVfYm9vbCwgICAgICAgICAvKiBuYl9ib29sICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludmVydCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9sc2hpZnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcnNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl94b3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfb3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb2F0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2Vfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfcnNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfYW5kICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2Vfb3IgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfZmxvb3JfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfZmxvb3JfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5kZXggKi8KK307CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlOb25lX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKQEAgLTE0NjgsMTAgKzE0NzAsMzQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KICAgICBub25lX3JlcHIsICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgJm5vbmVfYXNfbnVtYmVyLCAgICAvKnRwX2FzX251bWJlciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jICovCisgICAgbm9uZV9uZXcsICAgICAgICAgICAvKnRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X05vbmVTdHJ1Y3QgPSB7CkBAIC0xNDg4LDYgKzE1MTQsMTYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIk5vdEltcGxlbWVudGVkIik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitub3RpbXBsZW1lbnRlZF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSB8fCAoa3dhcmdzICYmIFB5RGljdF9TaXplKGt3YXJncykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJOb3RJbXBsZW1lbnRlZFR5cGUgdGFrZXMgbm8gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Cit9CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlOb3RJbXBsZW1lbnRlZF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIk5vdEltcGxlbWVudGVkVHlwZSIsCkBAIC0xNTAzLDYgKzE1MzksMzAgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsIC8qdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MgKi8KKyAgICBub3RpbXBsZW1lbnRlZF9uZXcsIC8qdHBfbmV3ICovCiB9OwogCiBQeU9iamVjdCBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgPSB7CkBAIC0xNTg1LDYgKzE2NDUsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5UHJvcGVydHlfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHByb3BlcnR5IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU1hbmFnZWRCdWZmZXJfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1hbmFnZWQgYnVmZmVyIHR5cGUiKTsKKwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TWVtb3J5Vmlld19UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbWVtb3J5dmlldyB0eXBlIik7CiAKQEAgLTE2NDQsNiArMTcwNyw5IEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVppcF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgemlwIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeU5hbWVzcGFjZV9UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgbmFtZXNwYWNlIHR5cGUiKTsKIH0KIAogCkBAIC0xNzg2LDYgKzE4NTIsMTggQEAKICAgICBQeU1lbV9GUkVFKHApOwogfQogCit2b2lkCitfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RGljdF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5RmxvYXRfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlMaXN0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlNZXRob2RfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworfQogCiAvKiBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHRvIGNvbnRyb2wgaW5maW5pdGUgcmVjdXJzaW9uIGluIHJlcHIsIHN0ciwgcHJpbnQsCiAgICBldGMuICBDb250YWluZXIgb2JqZWN0cyB0aGF0IG1heSByZWN1cnNpdmVseSBjb250YWluIHRoZW1zZWx2ZXMsCmRpZmYgLS1naXQgYS9PYmplY3RzL29ibWFsbG9jLmMgYi9PYmplY3RzL29ibWFsbG9jLmMKaW5kZXggMzkxNjI2Mi4uNjIyNWViYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYm1hbGxvYy5jCisrKyBiL09iamVjdHMvb2JtYWxsb2MuYwpAQCAtMiw2ICsyLDEzIEBACiAKICNpZmRlZiBXSVRIX1BZTUFMTE9DCiAKKyNpZmRlZiBIQVZFX01NQVAKKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjaWZkZWYgTUFQX0FOT05ZTU9VUworICAjZGVmaW5lIEFSRU5BU19VU0VfTU1BUAorICNlbmRpZgorI2VuZGlmCisKICNpZmRlZiBXSVRIX1ZBTEdSSU5ECiAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KIApAQCAtNzUsNyArODIsOCBAQAogICogQWxsb2NhdGlvbiBzdHJhdGVneSBhYnN0cmFjdDoKICAqCiAgKiBGb3Igc21hbGwgcmVxdWVzdHMsIHRoZSBhbGxvY2F0b3Igc3ViLWFsbG9jYXRlcyA8QmlnPiBibG9ja3Mgb2YgbWVtb3J5LgotICogUmVxdWVzdHMgZ3JlYXRlciB0aGFuIDI1NiBieXRlcyBhcmUgcm91dGVkIHRvIHRoZSBzeXN0ZW0ncyBhbGxvY2F0b3IuCisgKiBSZXF1ZXN0cyBncmVhdGVyIHRoYW4gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgYnl0ZXMgYXJlIHJvdXRlZCB0byB0aGUKKyAqIHN5c3RlbSdzIGFsbG9jYXRvci4KICAqCiAgKiBTbWFsbCByZXF1ZXN0cyBhcmUgZ3JvdXBlZCBpbiBzaXplIGNsYXNzZXMgc3BhY2VkIDggYnl0ZXMgYXBhcnQsIGR1ZQogICogdG8gdGhlIHJlcXVpcmVkIHZhbGlkIGFsaWdubWVudCBvZiB0aGUgcmV0dXJuZWQgYWRkcmVzcy4gUmVxdWVzdHMgb2YKQEAgLTEwNywxMCArMTE1LDExIEBACiAgKiAgICAgICA1Ny02NCAgICAgICAgICAgICAgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgNwogICogICAgICAgNjUtNzIgICAgICAgICAgICAgICAgICAgNzIgICAgICAgICAgICAgICAgICAgICAgIDgKICAqICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgLi4uCi0gKiAgICAgIDI0MS0yNDggICAgICAgICAgICAgICAgIDI0OCAgICAgICAgICAgICAgICAgICAgICAzMAotICogICAgICAyNDktMjU2ICAgICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgICAgMzEKKyAqICAgICAgNDk3LTUwNCAgICAgICAgICAgICAgICAgNTA0ICAgICAgICAgICAgICAgICAgICAgIDYyCisgKiAgICAgIDUwNS01MTIgICAgICAgICAgICAgICAgIDUxMiAgICAgICAgICAgICAgICAgICAgICA2MwogICoKLSAqICAgICAgMCwgMjU3IGFuZCB1cDogcm91dGVkIHRvIHRoZSB1bmRlcmx5aW5nIGFsbG9jYXRvci4KKyAqICAgICAgMCwgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgKyAxIGFuZCB1cDogcm91dGVkIHRvIHRoZSB1bmRlcmx5aW5nCisgKiAgICAgIGFsbG9jYXRvci4KICAqLwogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KQEAgLTEyOSw3ICsxMzgsNiBAQAogICovCiAjZGVmaW5lIEFMSUdOTUVOVCAgICAgICAgICAgICAgIDggICAgICAgICAgICAgICAvKiBtdXN0IGJlIDJeTiAqLwogI2RlZmluZSBBTElHTk1FTlRfU0hJRlQgICAgICAgICAzCi0jZGVmaW5lIEFMSUdOTUVOVF9NQVNLICAgICAgICAgIChBTElHTk1FTlQgLSAxKQogCiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiBzaXplIGNsYXNzIEksIGFzIGEgdWludC4gKi8KICNkZWZpbmUgSU5ERVgyU0laRShJKSAoKCh1aW50KShJKSArIDEpIDw8IEFMSUdOTUVOVF9TSElGVCkKQEAgLTEzOSwxNCArMTQ3LDE3IEBACiAgKiBzbWFsbCBlbm91Z2ggaW4gb3JkZXIgdG8gdXNlIHByZWFsbG9jYXRlZCBtZW1vcnkgcG9vbHMuIFlvdSBjYW4gdHVuZQogICogdGhpcyB2YWx1ZSBhY2NvcmRpbmcgdG8geW91ciBhcHBsaWNhdGlvbiBiZWhhdmlvdXIgYW5kIG1lbW9yeSBuZWVkcy4KICAqCisgKiBOb3RlOiBhIHNpemUgdGhyZXNob2xkIG9mIDUxMiBndWFyYW50ZWVzIHRoYXQgbmV3bHkgY3JlYXRlZCBkaWN0aW9uYXJpZXMKKyAqIHdpbGwgYmUgYWxsb2NhdGVkIGZyb20gcHJlYWxsb2NhdGVkIG1lbW9yeSBwb29scyBvbiA2NC1iaXQuCisgKgogICogVGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgaG9sZDoKLSAqICAgICAgMSkgQUxJR05NRU5UIDw9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDw9IDI1NgorICogICAgICAxKSBBTElHTk1FTlQgPD0gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgPD0gNTEyCiAgKiAgICAgIDIpIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIGlzIGV2ZW5seSBkaXZpc2libGUgYnkgQUxJR05NRU5UCiAgKgogICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBzcGFjZSBlZmZpY2llbmN5LAogICogaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCBpcyBzZXQgdG8gYSBwb3dlciBvZiAyLgogICovCi0jZGVmaW5lIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDI1NgorI2RlZmluZSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA1MTIKICNkZWZpbmUgTkJfU01BTExfU0laRV9DTEFTU0VTICAgKFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIC8gQUxJR05NRU5UKQogCiAvKgpAQCAtMTc0LDE1ICsxODUsMTUgQEAKIC8qCiAgKiBUaGUgYWxsb2NhdG9yIHN1Yi1hbGxvY2F0ZXMgPEJpZz4gYmxvY2tzIG9mIG1lbW9yeSAoY2FsbGVkIGFyZW5hcykgYWxpZ25lZAogICogb24gYSBwYWdlIGJvdW5kYXJ5LiBUaGlzIGlzIGEgcmVzZXJ2ZWQgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGZvciB0aGUKLSAqIGN1cnJlbnQgcHJvY2VzcyAob2J0YWluZWQgdGhyb3VnaCBhIG1hbGxvYyBjYWxsKS4gSW4gbm8gd2F5IHRoaXMgbWVhbnMKLSAqIHRoYXQgdGhlIG1lbW9yeSBhcmVuYXMgd2lsbCBiZSB1c2VkIGVudGlyZWx5LiBBIG1hbGxvYyg8QmlnPikgaXMgdXN1YWxseQotICogYW4gYWRkcmVzcyByYW5nZSByZXNlcnZhdGlvbiBmb3IgPEJpZz4gYnl0ZXMsIHVubGVzcyBhbGwgcGFnZXMgd2l0aGluIHRoaXMKLSAqIHNwYWNlIGFyZSByZWZlcmVuY2VkIHN1YnNlcXVlbnRseS4gU28gbWFsbG9jJ2luZyBiaWcgYmxvY2tzIGFuZCBub3QgdXNpbmcKLSAqIHRoZW0gZG9lcyBub3QgbWVhbiAid2FzdGluZyBtZW1vcnkiLiBJdCdzIGFuIGFkZHJlc3NhYmxlIHJhbmdlIHdhc3RhZ2UuLi4KKyAqIGN1cnJlbnQgcHJvY2VzcyAob2J0YWluZWQgdGhyb3VnaCBhIG1hbGxvYygpL21tYXAoKSBjYWxsKS4gSW4gbm8gd2F5IHRoaXMKKyAqIG1lYW5zIHRoYXQgdGhlIG1lbW9yeSBhcmVuYXMgd2lsbCBiZSB1c2VkIGVudGlyZWx5LiBBIG1hbGxvYyg8QmlnPikgaXMKKyAqIHVzdWFsbHkgYW4gYWRkcmVzcyByYW5nZSByZXNlcnZhdGlvbiBmb3IgPEJpZz4gYnl0ZXMsIHVubGVzcyBhbGwgcGFnZXMgd2l0aGluCisgKiB0aGlzIHNwYWNlIGFyZSByZWZlcmVuY2VkIHN1YnNlcXVlbnRseS4gU28gbWFsbG9jJ2luZyBiaWcgYmxvY2tzIGFuZCBub3QKKyAqIHVzaW5nIHRoZW0gZG9lcyBub3QgbWVhbiAid2FzdGluZyBtZW1vcnkiLiBJdCdzIGFuIGFkZHJlc3NhYmxlIHJhbmdlCisgKiB3YXN0YWdlLi4uCiAgKgotICogVGhlcmVmb3JlLCBhbGxvY2F0aW5nIGFyZW5hcyB3aXRoIG1hbGxvYyBpcyBub3Qgb3B0aW1hbCwgYmVjYXVzZSB0aGVyZSBpcwotICogc29tZSBhZGRyZXNzIHNwYWNlIHdhc3RhZ2UsIGJ1dCB0aGlzIGlzIHRoZSBtb3N0IHBvcnRhYmxlIHdheSB0byByZXF1ZXN0Ci0gKiBtZW1vcnkgZnJvbSB0aGUgc3lzdGVtIGFjcm9zcyB2YXJpb3VzIHBsYXRmb3Jtcy4KKyAqIEFyZW5hcyBhcmUgYWxsb2NhdGVkIHdpdGggbW1hcCgpIG9uIHN5c3RlbXMgc3VwcG9ydGluZyBhbm9ueW1vdXMgbWVtb3J5CisgKiBtYXBwaW5ncyB0byByZWR1Y2UgaGVhcCBmcmFnbWVudGF0aW9uLgogICovCiAjZGVmaW5lIEFSRU5BX1NJWkUgICAgICAgICAgICAgICgyNTYgPDwgMTApICAgICAvKiAyNTZLQiAqLwogCkBAIC0zMDIsMTQgKzMxMywxMiBAQAogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIHByZXZhcmVuYTsKIH07CiAKLSN1bmRlZiAgUk9VTkRVUAotI2RlZmluZSBST1VORFVQKHgpICAgICAgICAgICAgICAoKCh4KSArIEFMSUdOTUVOVF9NQVNLKSAmIH5BTElHTk1FTlRfTUFTSykKLSNkZWZpbmUgUE9PTF9PVkVSSEVBRCAgICAgICAgICAgUk9VTkRVUChzaXplb2Yoc3RydWN0IHBvb2xfaGVhZGVyKSkKKyNkZWZpbmUgUE9PTF9PVkVSSEVBRCAgIF9QeV9TSVpFX1JPVU5EX1VQKHNpemVvZihzdHJ1Y3QgcG9vbF9oZWFkZXIpLCBBTElHTk1FTlQpCiAKICNkZWZpbmUgRFVNTVlfU0laRV9JRFggICAgICAgICAgMHhmZmZmICAvKiBzaXplIGNsYXNzIG9mIG5ld2x5IGNhY2hlZCBwb29scyAqLwogCiAvKiBSb3VuZCBwb2ludGVyIFAgZG93biB0byB0aGUgY2xvc2VzdCBwb29sLWFsaWduZWQgYWRkcmVzcyA8PSBQLCBhcyBhIHBvb2xwICovCi0jZGVmaW5lIFBPT0xfQUREUihQKSAoKHBvb2xwKSgodXB0cikoUCkgJiB+KHVwdHIpUE9PTF9TSVpFX01BU0spKQorI2RlZmluZSBQT09MX0FERFIoUCkgKChwb29scClfUHlfQUxJR05fRE9XTigoUCksIFBPT0xfU0laRSkpCiAKIC8qIFJldHVybiB0b3RhbCBudW1iZXIgb2YgYmxvY2tzIGluIHBvb2wgb2Ygc2l6ZSBpbmRleCBJLCBhcyBhIHVpbnQuICovCiAjZGVmaW5lIE5VTUJMT0NLUyhJKSAoKHVpbnQpKFBPT0xfU0laRSAtIFBPT0xfT1ZFUkhFQUQpIC8gSU5ERVgyU0laRShJKSkKQEAgLTQ0MCw2ICs0NDksOSBAQAogICAgICwgUFQoNDgpLCBQVCg0OSksIFBUKDUwKSwgUFQoNTEpLCBQVCg1MiksIFBUKDUzKSwgUFQoNTQpLCBQVCg1NSkKICNpZiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA1NgogICAgICwgUFQoNTYpLCBQVCg1NyksIFBUKDU4KSwgUFQoNTkpLCBQVCg2MCksIFBUKDYxKSwgUFQoNjIpLCBQVCg2MykKKyNpZiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA2NAorI2Vycm9yICJOQl9TTUFMTF9TSVpFX0NMQVNTRVMgc2hvdWxkIGJlIGxlc3MgdGhhbiA2NCIKKyNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA2NCAqLwogI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDU2ICovCiAjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNDggKi8KICNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA0MCAqLwpAQCAtNTA4LDEyICs1MjAsMTAgQEAKIC8qIE51bWJlciBvZiBhcmVuYXMgYWxsb2NhdGVkIHRoYXQgaGF2ZW4ndCBiZWVuIGZyZWUoKSdkLiAqLwogc3RhdGljIHNpemVfdCBuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQgPSAwOwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKIC8qIFRvdGFsIG51bWJlciBvZiB0aW1lcyBtYWxsb2MoKSBjYWxsZWQgdG8gYWxsb2NhdGUgYW4gYXJlbmEuICovCiBzdGF0aWMgc2l6ZV90IG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgPSAwOwogLyogSGlnaCB3YXRlciBtYXJrIChtYXggdmFsdWUgZXZlciBzZWVuKSBmb3IgbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkLiAqLwogc3RhdGljIHNpemVfdCBuYXJlbmFzX2hpZ2h3YXRlciA9IDA7Ci0jZW5kaWYKIAogLyogQWxsb2NhdGUgYSBuZXcgYXJlbmEuICBJZiB3ZSBydW4gb3V0IG9mIG1lbW9yeSwgcmV0dXJuIE5VTEwuICBFbHNlCiAgKiBhbGxvY2F0ZSBhIG5ldyBhcmVuYSwgYW5kIHJldHVybiB0aGUgYWRkcmVzcyBvZiBhbiBhcmVuYV9vYmplY3QKQEAgLTUyNSwxMCArNTM1LDEyIEBACiB7CiAgICAgc3RydWN0IGFyZW5hX29iamVjdCogYXJlbmFvYmo7CiAgICAgdWludCBleGNlc3M7ICAgICAgICAvKiBudW1iZXIgb2YgYnl0ZXMgYWJvdmUgcG9vbCBhbGlnbm1lbnQgKi8KKyAgICB2b2lkICphZGRyZXNzOworICAgIGludCBlcnI7CiAKICNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCi0gICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKCk7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CiAjZW5kaWYKICAgICBpZiAodW51c2VkX2FyZW5hX29iamVjdHMgPT0gTlVMTCkgewogICAgICAgICB1aW50IGk7CkBAIC01NzcsOCArNTg5LDE1IEBACiAgICAgYXJlbmFvYmogPSB1bnVzZWRfYXJlbmFfb2JqZWN0czsKICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqLT5uZXh0YXJlbmE7CiAgICAgYXNzZXJ0KGFyZW5hb2JqLT5hZGRyZXNzID09IDApOwotICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVwdHIpbWFsbG9jKEFSRU5BX1NJWkUpOwotICAgIGlmIChhcmVuYW9iai0+YWRkcmVzcyA9PSAwKSB7CisjaWZkZWYgQVJFTkFTX1VTRV9NTUFQCisgICAgYWRkcmVzcyA9IG1tYXAoTlVMTCwgQVJFTkFfU0laRSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9QUklWQVRFfE1BUF9BTk9OWU1PVVMsIC0xLCAwKTsKKyAgICBlcnIgPSAoYWRkcmVzcyA9PSBNQVBfRkFJTEVEKTsKKyNlbHNlCisgICAgYWRkcmVzcyA9IG1hbGxvYyhBUkVOQV9TSVpFKTsKKyAgICBlcnIgPSAoYWRkcmVzcyA9PSAwKTsKKyNlbmRpZgorICAgIGlmIChlcnIpIHsKICAgICAgICAgLyogVGhlIGFsbG9jYXRpb24gZmFpbGVkOiByZXR1cm4gTlVMTCBhZnRlciBwdXR0aW5nIHRoZQogICAgICAgICAgKiBhcmVuYW9iaiBiYWNrLgogICAgICAgICAgKi8KQEAgLTU4NiwxMyArNjA1LDEyIEBACiAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYXJlbmFvYmo7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKWFkZHJlc3M7CiAKICAgICArK25hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgICsrbnRpbWVzX2FyZW5hX2FsbG9jYXRlZDsKICAgICBpZiAobmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkID4gbmFyZW5hc19oaWdod2F0ZXIpCiAgICAgICAgIG5hcmVuYXNfaGlnaHdhdGVyID0gbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkOwotI2VuZGlmCiAgICAgYXJlbmFvYmotPmZyZWVwb29scyA9IE5VTEw7CiAgICAgLyogcG9vbF9hZGRyZXNzIDwtIGZpcnN0IHBvb2wtYWxpZ25lZCBhZGRyZXNzIGluIHRoZSBhcmVuYQogICAgICAgIG5mcmVlcG9vbHMgPC0gbnVtYmVyIG9mIHdob2xlIHBvb2xzIHRoYXQgZml0IGFmdGVyIGFsaWdubWVudCAqLwpAQCAtMTA1NCw3ICsxMDcyLDExIEBACiAgICAgICAgICAgICAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhbzsKIAogICAgICAgICAgICAgICAgIC8qIEZyZWUgdGhlIGVudGlyZSBhcmVuYS4gKi8KKyNpZmRlZiBBUkVOQVNfVVNFX01NQVAKKyAgICAgICAgICAgICAgICBtdW5tYXAoKHZvaWQgKilhby0+YWRkcmVzcywgQVJFTkFfU0laRSk7CisjZWxzZQogICAgICAgICAgICAgICAgIGZyZWUoKHZvaWQgKilhby0+YWRkcmVzcyk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBhby0+YWRkcmVzcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWFyayB1bmFzc29jaWF0ZWQgKi8KICAgICAgICAgICAgICAgICAtLW5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKIApAQCAtMTY5NCwxNyArMTcxNiwxOSBAQAogICAgIH0KIH0KIAorI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLworCiBzdGF0aWMgc2l6ZV90Ci1wcmludG9uZShjb25zdCBjaGFyKiBtc2csIHNpemVfdCB2YWx1ZSkKK3ByaW50b25lKEZJTEUgKm91dCwgY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCiB7CiAgICAgaW50IGksIGs7CiAgICAgY2hhciBidWZbMTAwXTsKICAgICBzaXplX3Qgb3JpZ3ZhbHVlID0gdmFsdWU7CiAKLSAgICBmcHV0cyhtc2csIHN0ZGVycik7CisgICAgZnB1dHMobXNnLCBvdXQpOwogICAgIGZvciAoaSA9IChpbnQpc3RybGVuKG1zZyk7IGkgPCAzNTsgKytpKQotICAgICAgICBmcHV0YygnICcsIHN0ZGVycik7Ci0gICAgZnB1dGMoJz0nLCBzdGRlcnIpOworICAgICAgICBmcHV0YygnICcsIG91dCk7CisgICAgZnB1dGMoJz0nLCBvdXQpOwogCiAgICAgLyogV3JpdGUgdGhlIHZhbHVlIHdpdGggY29tbWFzLiAqLwogICAgIGkgPSAyMjsKQEAgLTE3MjUsMTcgKzE3NDksMzMgQEAKIAogICAgIHdoaWxlIChpID49IDApCiAgICAgICAgIGJ1ZltpLS1dID0gJyAnOwotICAgIGZwdXRzKGJ1Ziwgc3RkZXJyKTsKKyAgICBmcHV0cyhidWYsIG91dCk7CiAKICAgICByZXR1cm4gb3JpZ3ZhbHVlOwogfQogCi0vKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCit2b2lkCitfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKEZJTEUgKm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmxvY2tfbmFtZSwgaW50IG51bV9ibG9ja3MsIHNpemVfdCBzaXplb2ZfYmxvY2spCit7CisgICAgY2hhciBidWYxWzEyOF07CisgICAgY2hhciBidWYyWzEyOF07CisgICAgUHlPU19zbnByaW50ZihidWYxLCBzaXplb2YoYnVmMSksCisgICAgICAgICAgICAgICAgICAiJWQgJXNzICogJXpkIGJ5dGVzIGVhY2giLAorICAgICAgICAgICAgICAgICAgbnVtX2Jsb2NrcywgYmxvY2tfbmFtZSwgc2l6ZW9mX2Jsb2NrKTsKKyAgICBQeU9TX3NucHJpbnRmKGJ1ZjIsIHNpemVvZihidWYyKSwKKyAgICAgICAgICAgICAgICAgICIlNDhzICIsIGJ1ZjEpOworICAgICh2b2lkKXByaW50b25lKG91dCwgYnVmMiwgbnVtX2Jsb2NrcyAqIHNpemVvZl9ibG9jayk7Cit9CisKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisKKy8qIFByaW50IHN1bW1hcnkgaW5mbyB0byAib3V0IiBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgogICogSW4gUHlfREVCVUcgbW9kZSwgYWxzbyBwZXJmb3JtIHNvbWUgZXhwZW5zaXZlIGludGVybmFsIGNvbnNpc3RlbmN5CiAgKiBjaGVja3MuCiAgKi8KIHZvaWQKLV9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHZvaWQpCitfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCiB7CiAgICAgdWludCBpOwogICAgIGNvbnN0IHVpbnQgbnVtY2xhc3NlcyA9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEID4+IEFMSUdOTUVOVF9TSElGVDsKQEAgLTE3NjQsNyArMTgwNCw3IEBACiAgICAgc2l6ZV90IHRvdGFsOwogICAgIGNoYXIgYnVmWzEyOF07CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlNtYWxsIGJsb2NrIHRocmVzaG9sZCA9ICVkLCBpbiAldSBzaXplIGNsYXNzZXMuXG4iLAorICAgIGZwcmludGYob3V0LCAiU21hbGwgYmxvY2sgdGhyZXNob2xkID0gJWQsIGluICV1IHNpemUgY2xhc3Nlcy5cbiIsCiAgICAgICAgICAgICBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCwgbnVtY2xhc3Nlcyk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtY2xhc3NlczsgKytpKQpAQCAtMTc3NSw3ICsxODE1LDYgQEAKICAgICAgKiB3aWxsIGJlIGxpdmluZyBpbiBmdWxsIHBvb2xzIC0tIHdvdWxkIGJlIGEgc2hhbWUgdG8gbWlzcyB0aGVtLgogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBtYXhhcmVuYXM7ICsraSkgewotICAgICAgICB1aW50IHBvb2xzaW5hcmVuYTsKICAgICAgICAgdWludCBqOwogICAgICAgICB1cHRyIGJhc2UgPSBhcmVuYXNbaV0uYWRkcmVzczsKIApAQCAtMTc4NCw3ICsxODIzLDYgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBuYXJlbmFzICs9IDE7CiAKLSAgICAgICAgcG9vbHNpbmFyZW5hID0gYXJlbmFzW2ldLm50b3RhbHBvb2xzOwogICAgICAgICBudW1mcmVlcG9vbHMgKz0gYXJlbmFzW2ldLm5mcmVlcG9vbHM7CiAKICAgICAgICAgLyogcm91bmQgdXAgdG8gcG9vbCBhbGlnbm1lbnQgKi8KQEAgLTE4MjAsMTAgKzE4NTgsMTAgQEAKICAgICB9CiAgICAgYXNzZXJ0KG5hcmVuYXMgPT0gbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkKTsKIAotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKICAgICBmcHV0cygiY2xhc3MgICBzaXplICAgbnVtIHBvb2xzICAgYmxvY2tzIGluIHVzZSAgYXZhaWwgYmxvY2tzXG4iCiAgICAgICAgICAgIi0tLS0tICAgLS0tLSAgIC0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLVxuIiwKLSAgICAgICAgICBzdGRlcnIpOworICAgICAgICAgIG91dCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtY2xhc3NlczsgKytpKSB7CiAgICAgICAgIHNpemVfdCBwID0gbnVtcG9vbHNbaV07CkBAIC0xODM0LDcgKzE4NzIsNyBAQAogICAgICAgICAgICAgYXNzZXJ0KGIgPT0gMCAmJiBmID09IDApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlNXUgJTZ1ICIKKyAgICAgICAgZnByaW50ZihvdXQsICIlNXUgJTZ1ICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlMTEiIFBZX0ZPUk1BVF9TSVpFX1QgInUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIiUxNSIgUFlfRk9STUFUX1NJWkVfVCAidSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiJTEzIiBQWV9GT1JNQVRfU0laRV9UICJ1XG4iLApAQCAtMTg0NCwzNSArMTg4MiwzNiBAQAogICAgICAgICBwb29sX2hlYWRlcl9ieXRlcyArPSBwICogUE9PTF9PVkVSSEVBRDsKICAgICAgICAgcXVhbnRpemF0aW9uICs9IHAgKiAoKFBPT0xfU0laRSAtIFBPT0xfT1ZFUkhFQUQpICUgc2l6ZSk7CiAgICAgfQotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7Ci0KLSAgICAodm9pZClwcmludG9uZSgiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIHJlY2xhaW1lZCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgLSBuYXJlbmFzKTsKLSAgICAodm9pZClwcmludG9uZSgiIyBhcmVuYXMgaGlnaHdhdGVyIG1hcmsiLCBuYXJlbmFzX2hpZ2h3YXRlcik7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGFsbG9jYXRlZCBjdXJyZW50IiwgbmFyZW5hcyk7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKKyNpZmRlZiBQWU1BTExPQ19ERUJVRworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7CisjZW5kaWYKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBhbGxvY2F0ZWQgdG90YWwiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgaGlnaHdhdGVyIG1hcmsiLCBuYXJlbmFzX2hpZ2h3YXRlcik7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIGN1cnJlbnQiLCBuYXJlbmFzKTsKIAogICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUgYXJlbmFzICogJWQgYnl0ZXMvYXJlbmEiLAogICAgICAgICBuYXJlbmFzLCBBUkVOQV9TSVpFKTsKLSAgICAodm9pZClwcmludG9uZShidWYsIG5hcmVuYXMgKiBBUkVOQV9TSVpFKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZiwgbmFyZW5hcyAqIEFSRU5BX1NJWkUpOwogCi0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmcHV0YygnXG4nLCBvdXQpOwogCi0gICAgdG90YWwgPSBwcmludG9uZSgiIyBieXRlcyBpbiBhbGxvY2F0ZWQgYmxvY2tzIiwgYWxsb2NhdGVkX2J5dGVzKTsKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBpbiBhdmFpbGFibGUgYmxvY2tzIiwgYXZhaWxhYmxlX2J5dGVzKTsKKyAgICB0b3RhbCA9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgaW4gYWxsb2NhdGVkIGJsb2NrcyIsIGFsbG9jYXRlZF9ieXRlcyk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBpbiBhdmFpbGFibGUgYmxvY2tzIiwgYXZhaWxhYmxlX2J5dGVzKTsKIAogICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKICAgICAgICAgIiV1IHVudXNlZCBwb29scyAqICVkIGJ5dGVzIiwgbnVtZnJlZXBvb2xzLCBQT09MX1NJWkUpOwotICAgIHRvdGFsICs9IHByaW50b25lKGJ1ZiwgKHNpemVfdCludW1mcmVlcG9vbHMgKiBQT09MX1NJWkUpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgYnVmLCAoc2l6ZV90KW51bWZyZWVwb29scyAqIFBPT0xfU0laRSk7CiAKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBsb3N0IHRvIHBvb2wgaGVhZGVycyIsIHBvb2xfaGVhZGVyX2J5dGVzKTsKLSAgICB0b3RhbCArPSBwcmludG9uZSgiIyBieXRlcyBsb3N0IHRvIHF1YW50aXphdGlvbiIsIHF1YW50aXphdGlvbik7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBhcmVuYSBhbGlnbm1lbnQiLCBhcmVuYV9hbGlnbm1lbnQpOwotICAgICh2b2lkKXByaW50b25lKCJUb3RhbCIsIHRvdGFsKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gcG9vbCBoZWFkZXJzIiwgcG9vbF9oZWFkZXJfYnl0ZXMpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgbG9zdCB0byBxdWFudGl6YXRpb24iLCBxdWFudGl6YXRpb24pOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgbG9zdCB0byBhcmVuYSBhbGlnbm1lbnQiLCBhcmVuYV9hbGlnbm1lbnQpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIlRvdGFsIiwgdG90YWwpOwogfQogCi0jZW5kaWYgIC8qIFBZTUFMTE9DX0RFQlVHICovCisjZW5kaWYgLyogI2lmZGVmIFdJVEhfUFlNQUxMT0MgKi8KIAogI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgogLyogTWFrZSB0aGlzIGZ1bmN0aW9uIGxhc3Qgc28gZ2NjIHdvbid0IGlubGluZSBpdCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBpcwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCmluZGV4IDkzNWIyMDUuLmM0N2E0ZmYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvcmFuZ2VvYmplY3QuYworKysgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKQEAgLTEsNiArMSw3IEBACiAvKiBSYW5nZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiAvKiBTdXBwb3J0IG9iamVjdHMgd2hvc2UgbGVuZ3RoIGlzID4gUFlfU1NJWkVfVF9NQVguCiAKQEAgLTYwOSw2ICs2MTAsMTM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9JVEVSU0VBUkNIX0NPTlRBSU5TKTsKIH0KIAorLyogQ29tcGFyZSB0d28gcmFuZ2Ugb2JqZWN0cy4gIFJldHVybiAxIGZvciBlcXVhbCwgMCBmb3Igbm90IGVxdWFsCisgICBhbmQgLTEgb24gZXJyb3IuICBUaGUgYWxnb3JpdGhtIGlzIHJvdWdobHkgdGhlIEMgZXF1aXZhbGVudCBvZgorCisgICBpZiByMCBpcyByMToKKyAgICAgICByZXR1cm4gVHJ1ZQorICAgaWYgbGVuKHIwKSAhPSBsZW4ocjEpOgorICAgICAgIHJldHVybiBGYWxzZQorICAgaWYgbm90IGxlbihyMCk6CisgICAgICAgcmV0dXJuIFRydWUKKyAgIGlmIHIwLnN0YXJ0ICE9IHIxLnN0YXJ0OgorICAgICAgIHJldHVybiBGYWxzZQorICAgaWYgbGVuKHIwKSA9PSAxOgorICAgICAgIHJldHVybiBUcnVlCisgICByZXR1cm4gcjAuc3RlcCA9PSByMS5zdGVwCisqLworc3RhdGljIGludAorcmFuZ2VfZXF1YWxzKHJhbmdlb2JqZWN0ICpyMCwgcmFuZ2VvYmplY3QgKnIxKQoreworICAgIGludCBjbXBfcmVzdWx0OworICAgIFB5T2JqZWN0ICpvbmU7CisKKyAgICBpZiAocjAgPT0gcjEpCisgICAgICAgIHJldHVybiAxOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPmxlbmd0aCwgcjEtPmxlbmd0aCwgUHlfRVEpOworICAgIC8qIFJldHVybiBGYWxzZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDEpCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9Ob3QocjAtPmxlbmd0aCk7CisgICAgLyogUmV0dXJuIFRydWUgb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5zdGFydCwgcjEtPnN0YXJ0LCBQeV9FUSk7CisgICAgLyogUmV0dXJuIEZhbHNlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMSkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgIGlmICghb25lKQorICAgICAgICByZXR1cm4gLTE7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+bGVuZ3RoLCBvbmUsIFB5X0VRKTsKKyAgICBQeV9ERUNSRUYob25lKTsKKyAgICAvKiBSZXR1cm4gVHJ1ZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIHJldHVybiBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPnN0ZXAsIHIxLT5zdGVwLCBQeV9FUSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZV9yaWNoY29tcGFyZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlSYW5nZV9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBQeV9ORToKKyAgICBjYXNlIFB5X0VROgorICAgICAgICByZXN1bHQgPSByYW5nZV9lcXVhbHMoKHJhbmdlb2JqZWN0KilzZWxmLCAocmFuZ2VvYmplY3QqKW90aGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAob3AgPT0gUHlfTkUpCisgICAgICAgICAgICByZXN1bHQgPSAhcmVzdWx0OworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICBjYXNlIFB5X0xFOgorICAgIGNhc2UgUHlfR0U6CisgICAgY2FzZSBQeV9MVDoKKyAgICBjYXNlIFB5X0dUOgorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisvKiBIYXNoIGZ1bmN0aW9uIGZvciByYW5nZSBvYmplY3RzLiAgUm91Z2ggQyBlcXVpdmFsZW50IG9mCisKKyAgIGlmIG5vdCBsZW4ocik6CisgICAgICAgcmV0dXJuIGhhc2goKGxlbihyKSwgTm9uZSwgTm9uZSkpCisgICBpZiBsZW4ocikgPT0gMToKKyAgICAgICByZXR1cm4gaGFzaCgobGVuKHIpLCByLnN0YXJ0LCBOb25lKSkKKyAgIHJldHVybiBoYXNoKChsZW4ociksIHIuc3RhcnQsIHIuc3RlcCkpCisqLworc3RhdGljIFB5X2hhc2hfdAorcmFuZ2VfaGFzaChyYW5nZW9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqdDsKKyAgICBQeV9oYXNoX3QgcmVzdWx0ID0gLTE7CisgICAgaW50IGNtcF9yZXN1bHQ7CisKKyAgICB0ID0gUHlUdXBsZV9OZXcoMyk7CisgICAgaWYgKCF0KQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfSU5DUkVGKHItPmxlbmd0aCk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAwLCByLT5sZW5ndGgpOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9Ob3Qoci0+bGVuZ3RoKTsKKyAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkKKyAgICAgICAgZ290byBlbmQ7CisgICAgaWYgKGNtcF9yZXN1bHQgPT0gMSkgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAxLCBQeV9Ob25lKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAyLCBQeV9Ob25lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpvbmU7CisgICAgICAgIFB5X0lOQ1JFRihyLT5zdGFydCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMSwgci0+c3RhcnQpOworICAgICAgICBvbmUgPSBQeUxvbmdfRnJvbUxvbmcoMSk7CisgICAgICAgIGlmICghb25lKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woci0+bGVuZ3RoLCBvbmUsIFB5X0VRKTsKKyAgICAgICAgUHlfREVDUkVGKG9uZSk7CisgICAgICAgIGlmIChjbXBfcmVzdWx0ID09IC0xKQorICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgIGlmIChjbXBfcmVzdWx0ID09IDEpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMiwgUHlfTm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoci0+c3RlcCk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDIsIHItPnN0ZXApOworICAgICAgICB9CisgICAgfQorICAgIHJlc3VsdCA9IFB5T2JqZWN0X0hhc2godCk7CisgIGVuZDoKKyAgICBQeV9ERUNSRUYodCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmdlX2NvdW50KHJhbmdlb2JqZWN0ICpyLCBQeU9iamVjdCAqb2IpCiB7CkBAIC03NDksNiArODgxLDEzIEBACiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU1lbWJlckRlZiByYW5nZV9tZW1iZXJzW10gPSB7CisgICAgeyJzdGFydCIsICAgVF9PQkpFQ1RfRVgsICAgIG9mZnNldG9mKHJhbmdlb2JqZWN0LCBzdGFydCksICAgUkVBRE9OTFl9LAorICAgIHsic3RvcCIsICAgIFRfT0JKRUNUX0VYLCAgICBvZmZzZXRvZihyYW5nZW9iamVjdCwgc3RvcCksICAgIFJFQURPTkxZfSwKKyAgICB7InN0ZXAiLCAgICBUX09CSkVDVF9FWCwgICAgb2Zmc2V0b2YocmFuZ2VvYmplY3QsIHN0ZXApLCAgICBSRUFET05MWX0sCisgICAgezB9Cit9OworCiBQeVR5cGVPYmplY3QgUHlSYW5nZV9UeXBlID0gewogICAgICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICAgICAicmFuZ2UiLCAgICAgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLwpAQCAtNzYzLDcgKzkwMiw3IEBACiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICAgICAmcmFuZ2VfYXNfc2VxdWVuY2UsICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICAgICAmcmFuZ2VfYXNfbWFwcGluZywgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAgICAgKGhhc2hmdW5jKXJhbmdlX2hhc2gsICAgLyogdHBfaGFzaCAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwogICAgICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgIC8qIHRwX2dldGF0dHJvICovCkBAIC03NzMsMTIgKzkxMiwxMiBAQAogICAgICAgICByYW5nZV9kb2MsICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAgICAgcmFuZ2VfcmljaGNvbXBhcmUsICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAgICAgcmFuZ2VfaXRlciwgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgICAgICByYW5nZV9tZXRob2RzLCAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAgICAgcmFuZ2VfbWVtYmVycywgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCkBAIC04MjUsOSArOTY0LDU5IEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JhbmdlaXRlcl9yZWR1Y2UocmFuZ2VpdGVyb2JqZWN0ICpyKQoreworICAgIFB5T2JqZWN0ICpzdGFydD1OVUxMLCAqc3RvcD1OVUxMLCAqc3RlcD1OVUxMOworICAgIFB5T2JqZWN0ICpyYW5nZTsKKyAgICAKKyAgICAvKiBjcmVhdGUgYSByYW5nZSBvYmplY3QgZm9yIHBpY2tsaW5nICovCisgICAgc3RhcnQgPSBQeUxvbmdfRnJvbUxvbmcoci0+c3RhcnQpOworICAgIGlmIChzdGFydCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICBzdG9wID0gUHlMb25nX0Zyb21Mb25nKHItPnN0YXJ0ICsgci0+bGVuICogci0+c3RlcCk7CisgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgc3RlcCA9IFB5TG9uZ19Gcm9tTG9uZyhyLT5zdGVwKTsKKyAgICBpZiAoc3RlcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICByYW5nZSA9IChQeU9iamVjdCopbWFrZV9yYW5nZV9vYmplY3QoJlB5UmFuZ2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgc3RvcCwgc3RlcCk7CisgICAgaWYgKHJhbmdlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIC8qIHJldHVybiB0aGUgcmVzdWx0ICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTilpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgcmFuZ2UsIHItPmluZGV4KTsKK2VycjoKKyAgICBQeV9YREVDUkVGKHN0YXJ0KTsKKyAgICBQeV9YREVDUkVGKHN0b3ApOworICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZWl0ZXJfc2V0c3RhdGUocmFuZ2VpdGVyb2JqZWN0ICpyLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgbG9uZyBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHItPmxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgci0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHJhbmdlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pcmFuZ2VpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXJhbmdlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilyYW5nZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtOTU2LDkgKzExNDUsNTEgQEAKICAgICByZXR1cm4gUHlOdW1iZXJfU3VidHJhY3Qoci0+bGVuLCByLT5pbmRleCk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb25ncmFuZ2VpdGVyX3JlZHVjZShsb25ncmFuZ2VpdGVyb2JqZWN0ICpyKQoreworICAgIFB5T2JqZWN0ICpwcm9kdWN0LCAqc3RvcD1OVUxMOworICAgIFB5T2JqZWN0ICpyYW5nZTsKKworICAgIC8qIGNyZWF0ZSBhIHJhbmdlIG9iamVjdCBmb3IgcGlja2xpbmcuICBNdXN0IGNhbGN1bGF0ZSB0aGUgInN0b3AiIHZhbHVlICovCisgICAgcHJvZHVjdCA9IFB5TnVtYmVyX011bHRpcGx5KHItPmxlbiwgci0+c3RlcCk7CisgICAgaWYgKHByb2R1Y3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RvcCA9IFB5TnVtYmVyX0FkZChyLT5zdGFydCwgcHJvZHVjdCk7CisgICAgUHlfREVDUkVGKHByb2R1Y3QpOworICAgIGlmIChzdG9wID09ICBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoci0+c3RhcnQpOworICAgIFB5X0lOQ1JFRihyLT5zdGVwKTsKKyAgICByYW5nZSA9ICAoUHlPYmplY3QqKW1ha2VfcmFuZ2Vfb2JqZWN0KCZQeVJhbmdlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+c3RhcnQsIHN0b3AsIHItPnN0ZXApOworICAgIGlmIChyYW5nZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihyLT5zdGFydCk7CisgICAgICAgIFB5X0RFQ1JFRihzdG9wKTsKKyAgICAgICAgUHlfREVDUkVGKHItPnN0ZXApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiByZXR1cm4gdGhlIHJlc3VsdCAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pTyIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHJhbmdlLCByLT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsb25ncmFuZ2VpdGVyX3NldHN0YXRlKGxvbmdyYW5nZWl0ZXJvYmplY3QgKnIsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9DTEVBUihyLT5pbmRleCk7CisgICAgci0+aW5kZXggPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYoci0+aW5kZXgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgbG9uZ3JhbmdlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbG9uZ3JhbmdlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilsb25ncmFuZ2VpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zZXRvYmplY3QuYyBiL09iamVjdHMvc2V0b2JqZWN0LmMKaW5kZXggM2FiZWVmYi4uNzIzNjc5YSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zZXRvYmplY3QuYworKysgYi9PYmplY3RzL3NldG9iamVjdC5jCkBAIC03Nyw3ICs3Nyw3IEBACiBzdGF0aWMgc2V0ZW50cnkgKgogc2V0X2xvb2trZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCByZWdpc3RlciBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7CiAgICAgcmVnaXN0ZXIgc2V0ZW50cnkgKmZyZWVzbG90OwogICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gc28tPm1hc2s7CkBAIC04Niw3ICs4Niw3IEBACiAgICAgcmVnaXN0ZXIgaW50IGNtcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGtleSkKICAgICAgICAgcmV0dXJuIGVudHJ5OwpAQCAtMTU5LDcgKzE1OSw3IEBACiBzdGF0aWMgc2V0ZW50cnkgKgogc2V0X2xvb2trZXlfdW5pY29kZShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKICAgICByZWdpc3RlciBzZXRlbnRyeSAqZnJlZXNsb3Q7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBzby0+bWFzazsKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXk7CiAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICB9Ci0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBrZXkpCiAgICAgICAgIHJldHVybiBlbnRyeTsKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKICAgICByZWdpc3RlciBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZW50cnktPmtleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKQEAgLTM4Niw3ICszODYsNyBAQAogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3Qgbl91c2VkOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00MzQsNyArNDM0LDcgQEAKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3OSwxMSArNTc5LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcmVwcihQeVNldE9iamVjdCAqc28pCiB7Ci0gICAgUHlPYmplY3QgKmtleXMsICpyZXN1bHQ9TlVMTDsKLSAgICBQeV9VTklDT0RFICp1OworICAgIFB5T2JqZWN0ICpyZXN1bHQ9TlVMTCwgKmtleXMsICpsaXN0cmVwciwgKnRtcDsKICAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCopc28pOwotICAgIFB5T2JqZWN0ICpsaXN0cmVwcjsKLSAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAKICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCkBAIC02MDEsMjkgKzU5OCwyNCBAQAogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAorICAgIC8qIHJlcHIoa2V5cylbMTotMV0gKi8KICAgICBsaXN0cmVwciA9IFB5T2JqZWN0X1JlcHIoa2V5cyk7CiAgICAgUHlfREVDUkVGKGtleXMpOwogICAgIGlmIChsaXN0cmVwciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgbmV3c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShsaXN0cmVwcik7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG5ld3NpemUpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgICAgICp1KysgPSAneyc7Ci0gICAgICAgIC8qIE9taXQgdGhlIGJyYWNrZXRzIGZyb20gdGhlIGxpc3RyZXByICovCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LCBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaXN0cmVwcikrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShsaXN0cmVwciktMik7Ci0gICAgICAgIHUgKz0gbmV3c2l6ZS0yOwotICAgICAgICAqdSsrID0gJ30nOwotICAgIH0KKyAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpc3RyZXByLCAxLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaXN0cmVwciktMSk7CiAgICAgUHlfREVDUkVGKGxpc3RyZXByKTsKLSAgICBpZiAoUHlfVFlQRShzbykgIT0gJlB5U2V0X1R5cGUpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglVSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzbyktPnRwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wOwotICAgIH0KKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBsaXN0cmVwciA9IHRtcDsKKworICAgIGlmIChQeV9UWVBFKHNvKSAhPSAmUHlTZXRfVHlwZSkKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKHslVX0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzbyktPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RyZXByKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJ7JVV9IiwgbGlzdHJlcHIpOworICAgIFB5X0RFQ1JFRihsaXN0cmVwcik7CiBkb25lOgogICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QqKXNvKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjgyLDcgKzY3NCw3IEBACiAgICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC03NjgsMTQgKzc2MCwxNCBAQAogZnJvemVuc2V0X2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlTZXRPYmplY3QgKnNvID0gKFB5U2V0T2JqZWN0ICopc2VsZjsKLSAgICBQeV9oYXNoX3QgaCwgaGFzaCA9IDE5Mjc4NjgyMzdMOworICAgIFB5X3VoYXNoX3QgaCwgaGFzaCA9IDE5Mjc4NjgyMzdVOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAKICAgICBpZiAoc28tPmhhc2ggIT0gLTEpCiAgICAgICAgIHJldHVybiBzby0+aGFzaDsKIAotICAgIGhhc2ggKj0gUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOworICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewogICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAogICAgICAgICAgICB2YWx1ZXMuICBUaGUgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CkBAIC03ODMsMTEgKzc3NSwxMSBAQAogICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5CiAgICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KICAgICAgICAgaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICBoYXNoIF49IChoIF4gKGggPDwgMTYpIF4gODk4Njk3NDdMKSAgKiAzNjQ0Nzk4MTY3dTsKKyAgICAgICAgaGFzaCBePSAoaCBeIChoIDw8IDE2KSBeIDg5ODY5NzQ3VSkgICogMzY0NDc5ODE2N1U7CiAgICAgfQotICAgIGhhc2ggPSBoYXNoICogNjkwNjlMICsgOTA3MTMzOTIzTDsKKyAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1U7CiAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgIGhhc2ggPSA1OTA5MjM3MTNMOworICAgICAgICBoYXNoID0gNTkwOTIzNzEzVTsKICAgICBzby0+aGFzaCA9IGhhc2g7CiAgICAgcmV0dXJuIGhhc2g7CiB9CkBAIC04MjcsOCArODE5LDUxIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICpzZXRpdGVyX2l0ZXJuZXh0KHNldGl0ZXJvYmplY3QgKnNpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NldGl0ZXJfcmVkdWNlKHNldGl0ZXJvYmplY3QgKnNpKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIHNldGl0ZXJvYmplY3QgdG1wOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvcHkgdGhlIGl0ZXJhdG9yIHN0YXRlICovCisgICAgdG1wID0gKnNpOworICAgIFB5X1hJTkNSRUYodG1wLnNpX3NldCk7CisKKyAgICAvKiBpdGVyYXRlIHRoZSB0ZW1wb3JhcnkgaW50byBhIGxpc3QgKi8KKyAgICBmb3IoOzspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBzZXRpdGVyX2l0ZXJuZXh0KCZ0bXApOworICAgICAgICBpZiAoZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wLnNpX3NldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X1hERUNSRUYodG1wLnNpX3NldCk7CisgICAgLyogY2hlY2sgZm9yIGVycm9yICovCisgICAgaWYgKHRtcC5zaV9zZXQgIT0gTlVMTCkgeworICAgICAgICAvKiB3ZSBoYXZlIGFuIGVycm9yICovCisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgbGlzdCk7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHNldGl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXNldGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pc2V0aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTA3Niw5ICsxMTExLDEwIEBACiAgICAgcmV0dXJuIGVtcHR5ZnJvemVuc2V0OwogfQogCi12b2lkCi1QeVNldF9GaW5pKHZvaWQpCitpbnQKK1B5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKKyAgICBpbnQgZnJlZWxpc3Rfc2l6ZSA9IG51bWZyZWU7CiAgICAgUHlTZXRPYmplY3QgKnNvOwogCiAgICAgd2hpbGUgKG51bWZyZWUpIHsKQEAgLTEwODYsMTAgKzExMjIsMjcgQEAKICAgICAgICAgc28gPSBmcmVlX2xpc3RbbnVtZnJlZV07CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChzbyk7CiAgICAgfQorICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworfQorCit2b2lkCitQeVNldF9GaW5pKHZvaWQpCit7CisgICAgUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogICAgIFB5X0NMRUFSKGR1bW15KTsKICAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5U2V0T2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeVNldE9iamVjdCkpOworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTIxMCwxMCArMTI2Myw4IEBACiB7CiAgICAgUHlTZXRPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICByZXN1bHQgPSAoUHlTZXRPYmplY3QgKilzZXRfY29weShzbyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTIzMCwxMCArMTI4MSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2lvcihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc28pOwpAQCAtMTM4MywxMCArMTQzMyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2FuZChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBzZXRfaW50ZXJzZWN0aW9uKHNvLCBvdGhlcik7CiB9CiAKQEAgLTEzOTUsMTAgKzE0NDMsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmVzdWx0ID0gc2V0X2ludGVyc2VjdGlvbl91cGRhdGUoc28sIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTYyNSwyMCArMTY3MSwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9zdWIoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gc2V0X2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9pc3ViKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzbyk7CkBAIC0xNzM2LDEwICsxNzc4LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfeG9yKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZShzbywgb3RoZXIpOwogfQogCkBAIC0xNzQ4LDEwICsxNzg4LDggQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJlc3VsdCA9IHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUoc28sIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTgxMywxMCArMTg1MSw5IEBACiB7CiAgICAgUHlPYmplY3QgKnIxLCAqcjI7CiAKLSAgICBpZighUHlBbnlTZXRfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZighUHlBbnlTZXRfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFB5X0VROgogICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUodikgIT0gUHlTZXRfR0VUX1NJWkUodykpCkBAIC0xODQ2LDggKzE4ODMsNyBAQAogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgICAgICByZXR1cm4gc2V0X2lzc3VwZXJzZXQodiwgdyk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5NTksNiArMTk5NSw3IEBACiBzZXRfcmVkdWNlKFB5U2V0T2JqZWN0ICpzbykKIHsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqYXJncz1OVUxMLCAqcmVzdWx0PU5VTEwsICpkaWN0PU5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAga2V5cyA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilzbyk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKQEAgLTE5NjYsNyArMjAwMyw3IEBACiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBrZXlzKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc28sICJfX2RpY3RfXyIpOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNvLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBkaWN0ID0gUHlfTm9uZTsKQEAgLTE5ODAsOCArMjAxNyw2IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3NpemVvZihQeVNldE9iamVjdCAqc28pCiB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NsaWNlb2JqZWN0LmMgYi9PYmplY3RzL3NsaWNlb2JqZWN0LmMKaW5kZXggZDdiOTdjOS4uYzRhMTkwNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zbGljZW9iamVjdC5jCisrKyBiL09iamVjdHMvc2xpY2VvYmplY3QuYwpAQCAtMTcsNiArMTcsMTcgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogc3RhdGljIFB5T2JqZWN0ICoKK2VsbGlwc2lzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIHx8IChrd2FyZ3MgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkVsbGlwc2lzVHlwZSB0YWtlcyBubyBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihQeV9FbGxpcHNpcyk7CisgICAgcmV0dXJuIFB5X0VsbGlwc2lzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZWxsaXBzaXNfcmVwcihQeU9iamVjdCAqb3ApCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFbGxpcHNpcyIpOwpAQCAtNDMsNiArNTQsMjQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGVsbGlwc2lzX25ldywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X0VsbGlwc2lzT2JqZWN0ID0gewpAQCAtNTEsMTkgKzgwLDM4IEBACiB9OwogCiAKLS8qIFNsaWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbgorLyogU2xpY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKLSAgIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhcmUgcHl0aG9uIG9iamVjdHMgd2l0aCBOb25lIGluZGljYXRpbmcgbm8KKy8qIFVzaW5nIGEgY2FjaGUgaXMgdmVyeSBlZmZlY3RpdmUgc2luY2UgdHlwaWNhbGx5IG9ubHkgYSBzaW5nbGUgc2xpY2UgaXMKKyAqIGNyZWF0ZWQgYW5kIHRoZW4gZGVsZXRlZCBhZ2FpbgorICovCitzdGF0aWMgUHlTbGljZU9iamVjdCAqc2xpY2VfY2FjaGUgPSBOVUxMOwordm9pZCBQeVNsaWNlX0Zpbmkodm9pZCkKK3sKKyAgICBQeVNsaWNlT2JqZWN0ICpvYmogPSBzbGljZV9jYWNoZTsKKyAgICBpZiAob2JqICE9IE5VTEwpIHsKKyAgICAgICAgc2xpY2VfY2FjaGUgPSBOVUxMOworICAgICAgICBQeU9iamVjdF9EZWwob2JqKTsKKyAgICB9Cit9CisKKy8qIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhcmUgcHl0aG9uIG9iamVjdHMgd2l0aCBOb25lIGluZGljYXRpbmcgbm8KICAgIGluZGV4IGlzIHByZXNlbnQuCiAqLwogCiBQeU9iamVjdCAqCiBQeVNsaWNlX05ldyhQeU9iamVjdCAqc3RhcnQsIFB5T2JqZWN0ICpzdG9wLCBQeU9iamVjdCAqc3RlcCkKIHsKLSAgICBQeVNsaWNlT2JqZWN0ICpvYmogPSBQeU9iamVjdF9OZXcoUHlTbGljZU9iamVjdCwgJlB5U2xpY2VfVHlwZSk7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5U2xpY2VPYmplY3QgKm9iajsKKyAgICBpZiAoc2xpY2VfY2FjaGUgIT0gTlVMTCkgeworICAgICAgICBvYmogPSBzbGljZV9jYWNoZTsKKyAgICAgICAgc2xpY2VfY2FjaGUgPSBOVUxMOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW9iaik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2JqID0gUHlPYmplY3RfTmV3KFB5U2xpY2VPYmplY3QsICZQeVNsaWNlX1R5cGUpOworICAgICAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAoc3RlcCA9PSBOVUxMKSBzdGVwID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoc3RlcCk7CkBAIC0yMzEsNyArMjc5LDEwIEBACiAgICAgUHlfREVDUkVGKHItPnN0ZXApOwogICAgIFB5X0RFQ1JFRihyLT5zdGFydCk7CiAgICAgUHlfREVDUkVGKHItPnN0b3ApOwotICAgIFB5T2JqZWN0X0RlbChyKTsKKyAgICBpZiAoc2xpY2VfY2FjaGUgPT0gTlVMTCkKKyAgICAgICAgc2xpY2VfY2FjaGUgPSByOworICAgIGVsc2UKKyAgICAgICAgUHlPYmplY3RfRGVsKHIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjk3LDEwICszNDgsOCBAQAogICAgIFB5T2JqZWN0ICp0MjsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFQeVNsaWNlX0NoZWNrKHYpIHx8ICFQeVNsaWNlX0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVNsaWNlX0NoZWNrKHYpIHx8ICFQeVNsaWNlX0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICBpZiAodiA9PSB3KSB7CiAgICAgICAgIC8qIFhYWCBEbyB3ZSByZWFsbHkgbmVlZCB0aGlzIHNob3J0Y3V0PwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyODEzZAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBhc2NpaWxpYl9mYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBhc2NpaWxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHg3RnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyhTVFIsTEVOKSAgIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKChjaGFyKikoU1RSKSwoTEVOKSkKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX2FzY2lpX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwMTA4OQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCkBAIC0wLDAgKzEsNjI5IEBACisvKiBzdHJpbmdsaWI6IGNvZGVjIGltcGxlbWVudGF0aW9ucyAqLworCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKworLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLworI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKKyNlbHNlCisjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCisjZW5kaWYKKworLyogMTB4eHh4eHggKi8KKyNkZWZpbmUgSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gpICgoY2gpID49IDB4ODAgJiYgKGNoKSA8IDB4QzApCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKHV0ZjhfZGVjb2RlKShjb25zdCBjaGFyICoqaW5wdHIsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm91dHBvcykKK3sKKyAgICBQeV9VQ1M0IGNoOworICAgIGNvbnN0IGNoYXIgKnMgPSAqaW5wdHI7CisgICAgY29uc3QgY2hhciAqYWxpZ25lZF9lbmQgPSAoY29uc3QgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlbmQsIFNJWkVPRl9MT05HKTsKKyAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRlc3QgKyAqb3V0cG9zOworCisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKworICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2YgQVNDSUkgY2hhcmFjdGVycy4gR2l2ZW4gdGhhdCBjb21tb24gVVRGLTgKKyAgICAgICAgICAgICAgIGlucHV0IHdpbGwgY29uc2lzdCBvZiBhbiBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgQVNDSUkKKyAgICAgICAgICAgICAgIGNoYXJhY3RlcnMsIHdlIHRyeSB0byBvcHRpbWl6ZSBmb3IgdGhpcyBjYXNlIGJ5IGNoZWNraW5nCisgICAgICAgICAgICAgICBhcyBtYW55IGNoYXJhY3RlcnMgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbi4KKyAgICAgICAgICAgICAgIEZpcnN0LCBjaGVjayBpZiB3ZSBjYW4gZG8gYW4gYWxpZ25lZCByZWFkLCBhcyBtb3N0IENQVXMgaGF2ZQorICAgICAgICAgICAgICAgYSBwZW5hbHR5IGZvciB1bmFsaWduZWQgcmVhZHMuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHMsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9zID0gczsKKyAgICAgICAgICAgICAgICByZWdpc3RlciBTVFJJTkdMSUJfQ0hBUiAqX3AgPSBwOworICAgICAgICAgICAgICAgIHdoaWxlIChfcyA8IGFsaWduZWRfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgYSB3aG9sZSBsb25nIGF0IGEgdGltZSAoZWl0aGVyIDQgb3IgOCBieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkbyBhIGZhc3QgdW5yb2xsZWQgY29weSBpZiBpdCBvbmx5IGNvbnRhaW5zIEFTQ0lJCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICovCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3M7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisgICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKFNUUklOR0xJQl9DSEFSKSh2YWx1ZSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+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+aXRfZmllbGQsIE5VTEwpKQogICAgICAgICBnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCmluZGV4IDA5ZGFlNmQuLmYxNmYyMWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaApAQCAtNiw3ICs2LDEwIEBACiAgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLwogI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQogCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBzdHJpbmdsaWJfIyNGCiAjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIFB5X1VOSUNPREVfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVU5JQ09ERQogI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCiAjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKQEAgLTE1LDE3ICsxOCwxMiBAQAogI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCiAjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAogI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKLSNkZWZpbmUgU1RSSU5HTElCX1RPVVBQRVIgICAgICAgIFB5X1VOSUNPREVfVE9VUFBFUgotI2RlZmluZSBTVFJJTkdMSUJfVE9MT1dFUiAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSCi0jZGVmaW5lIFNUUklOR0xJQl9GSUxMICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZQogI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZQogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkcgICAgICAgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkdfTE9DQUxFIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKIAogI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMzAwMDAwMAogI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfVW5pY29kZQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IGIzNDU0NjAuLmI3NjEyNWEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTQ1LDYgKzQ1LDIyIEBACiB9CiAjZW5kaWYKIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisjaWYgUHlUdXBsZV9NQVhTQVZFU0laRSA+IDAKKyAgICBpbnQgaTsKKyAgICBjaGFyIGJ1ZlsxMjhdOworICAgIGZvciAoaSA9IDE7IGkgPCBQeVR1cGxlX01BWFNBVkVTSVpFOyBpKyspIHsKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAorICAgICAgICAgICAgICAgICAgICAgICJmcmVlICVkLXNpemVkIFB5VHVwbGVPYmplY3QiLCBpKTsKKyAgICAgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWVbaV0sIF9QeU9iamVjdF9WQVJfU0laRSgmUHlUdXBsZV9UeXBlLCBpKSk7CisgICAgfQorI2VuZGlmCit9CiAKIFB5T2JqZWN0ICoKIFB5VHVwbGVfTmV3KHJlZ2lzdGVyIFB5X3NzaXplX3Qgc2l6ZSkKQEAgLTg3LDcgKzEwMyw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9Ci0gICAgICAgIG5ieXRlcyArPSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgIC8qIG5ieXRlcyArPSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLSBzaXplb2YoUHlPYmplY3QgKik7ICovCiAKICAgICAgICAgb3AgPSBQeU9iamVjdF9HQ19OZXdWYXIoUHlUdXBsZU9iamVjdCwgJlB5VHVwbGVfVHlwZSwgc2l6ZSk7CiAgICAgICAgIGlmIChvcCA9PSBOVUxMKQpAQCAtMzE1LDExICszMzEsMTIgQEAKIHN0YXRpYyBQeV9oYXNoX3QKIHR1cGxlaGFzaChQeVR1cGxlT2JqZWN0ICp2KQogewotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB4LCB5OworICAgIHJlZ2lzdGVyIFB5X3VoYXNoX3QgeDsKKyAgICByZWdpc3RlciBQeV9oYXNoX3QgeTsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGxlbiA9IFB5X1NJWkUodik7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKipwOwotICAgIFB5X2hhc2hfdCBtdWx0ID0gX1B5SEFTSF9NVUxUSVBMSUVSOwotICAgIHggPSAweDM0NTY3OEw7CisgICAgUHlfdWhhc2hfdCBtdWx0ID0gX1B5SEFTSF9NVUxUSVBMSUVSOworICAgIHggPSAweDM0NTY3ODsKICAgICBwID0gdi0+b2JfaXRlbTsKICAgICB3aGlsZSAoLS1sZW4gPj0gMCkgewogICAgICAgICB5ID0gUHlPYmplY3RfSGFzaCgqcCsrKTsKQEAgLTMzMCw3ICszNDcsNyBAQAogICAgICAgICBtdWx0ICs9IChQeV9oYXNoX3QpKDgyNTIwTCArIGxlbiArIGxlbik7CiAgICAgfQogICAgIHggKz0gOTc1MzFMOwotICAgIGlmICh4ID09IC0xKQorICAgIGlmICh4ID09IChQeV91aGFzaF90KS0xKQogICAgICAgICB4ID0gLTI7CiAgICAgcmV0dXJuIHg7CiB9CkBAIC01NDYsMTAgKzU2Myw4IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3Qgdmxlbiwgd2xlbjsKIAotICAgIGlmICghUHlUdXBsZV9DaGVjayh2KSB8fCAhUHlUdXBsZV9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlUdXBsZV9DaGVjayh2KSB8fCAhUHlUdXBsZV9DaGVjayh3KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgdnQgPSAoUHlUdXBsZU9iamVjdCAqKXY7CiAgICAgd3QgPSAoUHlUdXBsZU9iamVjdCAqKXc7CkBAIC05NzAsOCArOTg1LDM5IEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3R1cGxlaXRlcl9yZWR1Y2UodHVwbGVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTylsIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKCgpKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIikpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHVwbGVpdGVyX3NldHN0YXRlKHR1cGxlaXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaXQtPml0X3NlcSAhPSBOVUxMICYmIGluZGV4ID4gUHlUdXBsZV9HRVRfU0laRShpdC0+aXRfc2VxKSkKKyAgICAgICAgICAgIGluZGV4ID0gUHlUdXBsZV9HRVRfU0laRShpdC0+aXRfc2VxKTsKKyAgICAgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgdHVwbGVpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbil0dXBsZWl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pdHVwbGVpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXR1cGxlaXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVvYmplY3QuYyBiL09iamVjdHMvdHlwZW9iamVjdC5jCmluZGV4IGZkMmFlNjcuLjVkNjI1YTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHlwZW9iamVjdC5jCkBAIC0xNCwxNiArMTQsMTcgQEAKICAgIE1DQUNIRV9NQVhfQVRUUl9TSVpFLCBzaW5jZSBpdCBtaWdodCBiZSBhIHByb2JsZW0gaWYgdmVyeSBsYXJnZQogICAgc3RyaW5ncyBhcmUgdXNlZCBhcyBhdHRyaWJ1dGUgbmFtZXMuICovCiAjZGVmaW5lIE1DQUNIRV9NQVhfQVRUUl9TSVpFICAgIDEwMAotI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICAxMAorI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICA5CiAjZGVmaW5lIE1DQUNIRV9IQVNIKHZlcnNpb24sIG5hbWVfaGFzaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICgoKHVuc2lnbmVkIGludCkodmVyc2lvbikgKiAodW5zaWduZWQgaW50KShuYW1lX2hhc2gpKSAgICAgICAgICBcCiAgICAgICAgICA+PiAoOCpzaXplb2YodW5zaWduZWQgaW50KSAtIE1DQUNIRV9TSVpFX0VYUCkpCiAjZGVmaW5lIE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE1DQUNIRV9IQVNIKCh0eXBlKS0+dHBfdmVyc2lvbl90YWcsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAoKFB5VW5pY29kZU9iamVjdCAqKShuYW1lKSktPmhhc2gpCisgICAgICAgICAgICAgICAgICAgICgoUHlBU0NJSU9iamVjdCAqKShuYW1lKSktPmhhc2gpCiAjZGVmaW5lIE1DQUNIRV9DQUNIRUFCTEVfTkFNRShuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFB5VW5pY29kZV9DaGVja0V4YWN0KG5hbWUpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpIDw9IE1DQUNIRV9NQVhfQVRUUl9TSVpFCisgICAgICAgIFB5VW5pY29kZV9SRUFEWShuYW1lKSAhPSAtMSAmJiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIDw9IE1DQUNIRV9NQVhfQVRUUl9TSVpFCiAKIHN0cnVjdCBtZXRob2RfY2FjaGVfZW50cnkgewogICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOwpAQCAtMzQsNiArMzUsMjIgQEAKIHN0YXRpYyBzdHJ1Y3QgbWV0aG9kX2NhY2hlX2VudHJ5IG1ldGhvZF9jYWNoZVsxIDw8IE1DQUNIRV9TSVpFX0VYUF07CiBzdGF0aWMgdW5zaWduZWQgaW50IG5leHRfdmVyc2lvbl90YWcgPSAwOwogCitfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOworX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworX1B5X0lERU5USUZJRVIoX19kb2NfXyk7CitfUHlfSURFTlRJRklFUihfX2dldGl0ZW1fXyk7CitfUHlfSURFTlRJRklFUihfX2dldGF0dHJpYnV0ZV9fKTsKK19QeV9JREVOVElGSUVSKF9faGFzaF9fKTsKK19QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOworX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlUeXBlX0xvb2t1cElkKFB5VHlwZU9iamVjdCAqdHlwZSwgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKwogdW5zaWduZWQgaW50CiBQeVR5cGVfQ2xlYXJDYWNoZSh2b2lkKQogewpAQCAtOTYsMTUgKzExMywxMyBAQAogc3RhdGljIHZvaWQKIHR5cGVfbXJvX21vZGlmaWVkKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmJhc2VzKSB7CiAgICAgLyoKLSAgICAgICBDaGVjayB0aGF0IGFsbCBiYXNlIGNsYXNzZXMgb3IgZWxlbWVudHMgb2YgdGhlIG1ybyBvZiB0eXBlIGFyZQorICAgICAgIENoZWNrIHRoYXQgYWxsIGJhc2UgY2xhc3NlcyBvciBlbGVtZW50cyBvZiB0aGUgTVJPIG9mIHR5cGUgYXJlCiAgICAgICAgYWJsZSB0byBiZSBjYWNoZWQuICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUgYmFzZQogICAgICAgIGNsYXNzZXMgb3IgbXJvIG9mIHRoZSB0eXBlIGFyZSBhbHRlcmVkLgogCiAgICAgICAgVW5zZXQgSEFWRV9WRVJTSU9OX1RBRyBhbmQgVkFMSURfVkVSU0lPTl9UQUcgaWYgdGhlIHR5cGUKLSAgICAgICBpbmhlcml0cyBmcm9tIGFuIG9sZC1zdHlsZSBjbGFzcywgZWl0aGVyIGRpcmVjdGx5IG9yIGlmIGl0Ci0gICAgICAgYXBwZWFycyBpbiB0aGUgTVJPIG9mIGEgbmV3LXN0eWxlIGNsYXNzLiAgTm8gc3VwcG9ydCBlaXRoZXIgZm9yCi0gICAgICAgY3VzdG9tIE1ST3MgdGhhdCBpbmNsdWRlIHR5cGVzIHRoYXQgYXJlIG5vdCBvZmZpY2lhbGx5IHN1cGVyCi0gICAgICAgdHlwZXMuCisgICAgICAgaGFzIGEgY3VzdG9tIE1STyB0aGF0IGluY2x1ZGVzIGEgdHlwZSB3aGljaCBpcyBub3Qgb2ZmaWNpYWxseQorICAgICAgIHN1cGVyIHR5cGUuCiAKICAgICAgICBDYWxsZWQgZnJvbSBtcm9faW50ZXJuYWwsIHdoaWNoIHdpbGwgc3Vic2VxdWVudGx5IGJlIGNhbGxlZCBvbgogICAgICAgIGVhY2ggc3ViY2xhc3Mgd2hlbiB0aGVpciBtcm8gaXMgcmVjdXJzaXZlbHkgdXBkYXRlZC4KQEAgLTEyMCwxMSArMTM1LDcgQEAKICAgICAgICAgUHlPYmplY3QgKmIgPSBQeVR1cGxlX0dFVF9JVEVNKGJhc2VzLCBpKTsKICAgICAgICAgUHlUeXBlT2JqZWN0ICpjbHM7CiAKLSAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYikgKSB7Ci0gICAgICAgICAgICBjbGVhciA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCisgICAgICAgIGFzc2VydChQeVR5cGVfQ2hlY2soYikpOwogICAgICAgICBjbHMgPSAoUHlUeXBlT2JqZWN0ICopYjsKIAogICAgICAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGNscywgUHlfVFBGTEFHU19IQVZFX1ZFUlNJT05fVEFHKSB8fApAQCAtMjAxLDYgKzIxMiwyMiBAQAogICAgIHswfQogfTsKIAorc3RhdGljIGludAorY2hlY2tfc2V0X3NwZWNpYWxfdHlwZV9hdHRyKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuJXMiLCB0eXBlLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBkZWxldGUgJXMuJXMiLCB0eXBlLT50cF9uYW1lLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9uYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgdm9pZCAqY29udGV4dCkKIHsKQEAgLTIyMiw2ICsyNDksMTkgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0eXBlX3F1YWxuYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB7CisgICAgICAgIFB5SGVhcFR5cGVPYmplY3QqIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QqKXR5cGU7CisgICAgICAgIFB5X0lOQ1JFRihldC0+aHRfcXVhbG5hbWUpOworICAgICAgICByZXR1cm4gZXQtPmh0X3F1YWxuYW1lOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIHR5cGVfbmFtZSh0eXBlLCBjb250ZXh0KTsKKyAgICB9Cit9CisKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X25hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yMjksMTYgKzI2OSw4IEBACiAgICAgY2hhciAqdHBfbmFtZTsKICAgICBQeU9iamVjdCAqdG1wOwogCi0gICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNldCAlcy5fX25hbWVfXyIsIHR5cGUtPnRwX25hbWUpOworICAgIGlmICghY2hlY2tfc2V0X3NwZWNpYWxfdHlwZV9hdHRyKHR5cGUsIHZhbHVlLCAiX19uYW1lX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fbmFtZV9fIiwgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiY2FuIG9ubHkgYXNzaWduIHN0cmluZyB0byAlcy5fX25hbWVfXywgbm90ICclcyciLApAQCAtMjc0LDYgKzMwNiwyNSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50Cit0eXBlX3NldF9xdWFsbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBQeUhlYXBUeXBlT2JqZWN0KiBldDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBzdHJpbmcgdG8gJXMuX19xdWFsbmFtZV9fLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CisgICAgZXQtPmh0X3F1YWxuYW1lID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yODEsNyArMzMyLDcgQEAKICAgICBjaGFyICpzOwogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgewotICAgICAgICBtb2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIl9fbW9kdWxlX18iKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzAxLDIwICszNTIsMTIgQEAKIHN0YXRpYyBpbnQKIHR5cGVfc2V0X21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbW9kdWxlX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fbW9kdWxlX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAogICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKIAotICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19tb2R1bGVfXyIsIHZhbHVlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgdmFsdWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM1LDE2ICs0NzgsOCBAQAogICAgIFB5VHlwZU9iamVjdCAqbmV3X2Jhc2UsICpvbGRfYmFzZTsKICAgICBQeU9iamVjdCAqb2xkX2Jhc2VzLCAqb2xkX21ybzsKIAotICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuX19iYXNlc19fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX2Jhc2VzX18iKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIXZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLl9fYmFzZXNfXyIsIHR5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmICghUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAiY2FuIG9ubHkgYXNzaWduIHR1cGxlIHRvICVzLl9fYmFzZXNfXywgbm90ICVzIiwKQEAgLTQ2MSw4ICs0OTYsNyBAQAogICAgICAgICBvYiA9IFB5VHVwbGVfR0VUX0lURU0odmFsdWUsIGkpOwogICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayhvYikpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVzLl9fYmFzZXNfXyBtdXN0IGJlIHR1cGxlIG9mIG9sZC0gb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJuZXctc3R5bGUgY2xhc3Nlcywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2Jhc2VzX18gbXVzdCBiZSB0dXBsZSBvZiBjbGFzc2VzLCBub3QgJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgUHlfVFlQRShvYiktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC01ODAsNyArNjE0LDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgJiYgdHlwZS0+dHBfZG9jICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwotICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIik7CisgICAgcmVzdWx0ID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwpAQCAtNTk1LDYgKzYyOSwxNSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3R5cGVfc2V0X2RvYyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fZG9jX18iKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKKyAgICByZXR1cm4gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXywgdmFsdWUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9fX2luc3RhbmNlY2hlY2tfXyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmluc3QpCiB7CkBAIC02MjUsMTIgKzY2OCwxMyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgdHlwZV9nZXRzZXRzW10gPSB7CiAgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpdHlwZV9uYW1lLCAoc2V0dGVyKXR5cGVfc2V0X25hbWUsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcil0eXBlX3F1YWxuYW1lLCAoc2V0dGVyKXR5cGVfc2V0X3F1YWxuYW1lLCBOVUxMfSwKICAgICB7Il9fYmFzZXNfXyIsIChnZXR0ZXIpdHlwZV9nZXRfYmFzZXMsIChzZXR0ZXIpdHlwZV9zZXRfYmFzZXMsIE5VTEx9LAogICAgIHsiX19tb2R1bGVfXyIsIChnZXR0ZXIpdHlwZV9tb2R1bGUsIChzZXR0ZXIpdHlwZV9zZXRfbW9kdWxlLCBOVUxMfSwKICAgICB7Il9fYWJzdHJhY3RtZXRob2RzX18iLCAoZ2V0dGVyKXR5cGVfYWJzdHJhY3RtZXRob2RzLAogICAgICAoc2V0dGVyKXR5cGVfc2V0X2Fic3RyYWN0bWV0aG9kcywgTlVMTH0sCiAgICAgeyJfX2RpY3RfXyIsICAoZ2V0dGVyKXR5cGVfZGljdCwgIE5VTEwsIE5VTEx9LAotICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpdHlwZV9nZXRfZG9jLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2RvYywgKHNldHRlcil0eXBlX3NldF9kb2MsIE5VTEx9LAogICAgIHswfQogfTsKIApAQCAtNjQ2LDcgKzY5MCw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KLSAgICBuYW1lID0gdHlwZV9uYW1lKHR5cGUsIE5VTEwpOworICAgIG5hbWUgPSB0eXBlX3F1YWxuYW1lKHR5cGUsIE5VTEwpOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlfWERFQ1JFRihtb2QpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxMSw3ICs5NTUsNyBAQAogCiAgICAgLyogRmluZCB0aGUgbmVhcmVzdCBiYXNlIHdpdGggYSBkaWZmZXJlbnQgdHBfZGVhbGxvYyAqLwogICAgIGJhc2UgPSB0eXBlOwotICAgIHdoaWxlICgoYmFzZWRlYWxsb2MgPSBiYXNlLT50cF9kZWFsbG9jKSA9PSBzdWJ0eXBlX2RlYWxsb2MpIHsKKyAgICB3aGlsZSAoKC8qYmFzZWRlYWxsb2MgPSovIGJhc2UtPnRwX2RlYWxsb2MpID09IHN1YnR5cGVfZGVhbGxvYykgewogICAgICAgICBiYXNlID0gYmFzZS0+dHBfYmFzZTsKICAgICAgICAgYXNzZXJ0KGJhc2UpOwogICAgIH0KQEAgLTExMzYsMTYgKzExODAsMTEgQEAKICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb29rdXBfbWF5YmUoUHlPYmplY3QgKnNlbGYsIGNoYXIgKmF0dHJzdHIsIFB5T2JqZWN0ICoqYXR0cm9iaikKK2xvb2t1cF9tYXliZShQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCphdHRyb2JqID09IE5VTEwpIHsKLSAgICAgICAgKmF0dHJvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhhdHRyc3RyKTsKLSAgICAgICAgaWYgKCphdHRyb2JqID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgKmF0dHJvYmopOworICAgIHJlcyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgYXR0cmlkKTsKICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgZGVzY3JnZXRmdW5jIGY7CiAgICAgICAgIGlmICgoZiA9IFB5X1RZUEUocmVzKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQpAQCAtMTE1NywxOCArMTE5NiwxOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorbG9va3VwX21ldGhvZChQeU9iamVjdCAqc2VsZiwgX1B5X0lkZW50aWZpZXIgKmF0dHJpZCkKIHsKLSAgICBQeU9iamVjdCAqcmVzID0gbG9va3VwX21heWJlKHNlbGYsIGF0dHJzdHIsIGF0dHJvYmopOworICAgIFB5T2JqZWN0ICpyZXMgPSBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cmlkKTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKmF0dHJvYmopOworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGF0dHJpZC0+b2JqZWN0KTsKICAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCi1fUHlPYmplY3RfTG9va3VwU3BlY2lhbChQeU9iamVjdCAqc2VsZiwgY2hhciAqYXR0cnN0ciwgUHlPYmplY3QgKiphdHRyb2JqKQorX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKnNlbGYsIF9QeV9JZGVudGlmaWVyICphdHRyaWQpCiB7Ci0gICAgcmV0dXJuIGxvb2t1cF9tYXliZShzZWxmLCBhdHRyc3RyLCBhdHRyb2JqKTsKKyAgICByZXR1cm4gbG9va3VwX21heWJlKHNlbGYsIGF0dHJpZCk7CiB9CiAKIC8qIEEgdmFyaWF0aW9uIG9mIFB5T2JqZWN0X0NhbGxNZXRob2QgdGhhdCB1c2VzIGxvb2t1cF9tZXRob2QoKQpAQCAtMTE3NiwxNyArMTIxNSwxNyBAQAogICAgYXMgbG9va3VwX21ldGhvZCB0byBjYWNoZSB0aGUgaW50ZXJuZWQgbmFtZSBzdHJpbmcgb2JqZWN0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21ldGhvZChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKICAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1lLCBuYW1lb2JqKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICpuYW1lb2JqKTsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZWlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTEyMTIsMTkgKzEyNTEsMTcgQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICoqbmFtZW9iaiwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwogICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7CiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWUsIG5hbWVvYmopOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHZhX2VuZCh2YSk7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICAgICAgfQorICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI5MCw3ICsxMzI3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjbGFzc19uYW1lKFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNscywgIl9fbmFtZV9fIik7CisgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uYW1lX18pOwogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKQEAgLTE1NDUsOSArMTU4Miw5IEBACiAgICAgICAgIHJlc3VsdCA9IG1yb19pbXBsZW1lbnRhdGlvbih0eXBlKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbXJvX3N0cjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIobXJvKTsKICAgICAgICAgY2hlY2tpdCA9IDE7Ci0gICAgICAgIG1ybyA9IGxvb2t1cF9tZXRob2QoKFB5T2JqZWN0ICopdHlwZSwgIm1ybyIsICZtcm9fc3RyKTsKKyAgICAgICAgbXJvID0gbG9va3VwX21ldGhvZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9tcm8pOwogICAgICAgICBpZiAobXJvID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobXJvLCBOVUxMKTsKQEAgLTE1OTEsNyArMTYyOCw3IEBACiAgICAgdHlwZS0+dHBfbXJvID0gdHVwbGU7CiAKICAgICB0eXBlX21yb19tb2RpZmllZCh0eXBlLCB0eXBlLT50cF9tcm8pOwotICAgIC8qIGNvcm5lciBjYXNlOiB0aGUgb2xkLXN0eWxlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KKyAgICAvKiBjb3JuZXIgY2FzZTogdGhlIHN1cGVyIGNsYXNzIG1pZ2h0IGhhdmUgYmVlbiBoaWRkZW4KICAgICAgICBmcm9tIHRoZSBjdXN0b20gTVJPICovCiAgICAgdHlwZV9tcm9fbW9kaWZpZWQodHlwZSwgdHlwZS0+dHBfYmFzZXMpOwogCkBAIC0xNjQ4LDkgKzE2ODUsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJhIG5ldy1zdHlsZSBjbGFzcyBjYW4ndCBoYXZlIG9ubHkgY2xhc3NpYyBiYXNlcyIpOworICAgIGFzc2VydCAoYmFzZSAhPSBOVUxMKTsKKwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNzE4LDE1ICsxNzU0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRfZGljdF9kZXNjcmlwdG9yKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRpY3Rfc3RyOwogICAgIFB5T2JqZWN0ICpkZXNjcjsKIAotICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGRpY3Rfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChkaWN0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHlwZSwgZGljdF9zdHIpOworICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXBJZCh0eXBlLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRlc2NyID09IE5VTEwgfHwgIVB5RGVzY3JfSXNEYXRhKGRlc2NyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NDQsOCArMTc3NCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc3VidHlwZV9kaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyOwotICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMTc2MywyNSArMTc5MSwxMyBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmdW5jKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKShQeV9UWVBFKG9iaikpKTsKICAgICB9Ci0KLSAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKLSAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgUHlfWElOQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gZGljdDsKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldERpY3Qob2JqLCBjb250ZXh0KTsKIH0KIAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqKmRpY3RwdHI7Ci0gICAgUHlPYmplY3QgKmRpY3Q7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTE3OTksNyArMTgxNSw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZ1bmMoZGVzY3IsIG9iaiwgdmFsdWUpOwogICAgIH0KLQorICAgIC8qIEFsbW9zdCBsaWtlIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0LCBidXQgYWxsb3cgX19kaWN0X18gdG8gYmUgZGVsZXRlZC4gKi8KICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKQEAgLTE5NjAsMTQgKzE5NzYsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX25ldyhQeVR5cGVPYmplY3QgKm1ldGF0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcywgKmRpY3Q7CisgICAgUHlPYmplY3QgKm5hbWUsICpiYXNlcyA9IE5VTEwsICpvcmlnX2RpY3QsICpkaWN0ID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiYmFzZXMiLCAiZGljdCIsIDB9OwotICAgIFB5T2JqZWN0ICpzbG90cywgKnRtcCwgKm5ld3Nsb3RzOwotICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKnNsb3RzID0gTlVMTCwgKnRtcCwgKm5ld3Nsb3RzOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CiAgICAgUHlfc3NpemVfdCBpLCBuYmFzZXMsIG5zbG90cywgc2xvdG9mZnNldCwgYWRkX2RpY3QsIGFkZF93ZWFrOwogICAgIGludCBqLCBtYXlfYWRkX2RpY3QsIG1heV9hZGRfd2VhazsKKyAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKQEAgLTE5OTcsNyArMjAxNSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgbWV0YXR5cGUgdG8gZGVhbCB3aXRoIHRoaXM6ICovCkBAIC0yMDE3LDMwICsyMDM1LDMwIEBACiAgICAgaWYgKG5iYXNlcyA9PSAwKSB7CiAgICAgICAgIGJhc2VzID0gUHlUdXBsZV9QYWNrKDEsICZQeUJhc2VPYmplY3RfVHlwZSk7CiAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBuYmFzZXMgPSAxOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihiYXNlcyk7CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgYWxsb2NhdGVkLCAicmV0dXJuIE5VTEwiIGxlYWtzIGJhc2VzISAqLwotCiAgICAgLyogQ2FsY3VsYXRlIGJlc3QgYmFzZSwgYW5kIGNoZWNrIHRoYXQgYWxsIGJhc2VzIGFyZSB0eXBlIG9iamVjdHMgKi8KICAgICBiYXNlID0gYmVzdF9iYXNlKGJhc2VzKTsKICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKGJhc2UsIFB5X1RQRkxBR1NfQkFTRVRZUEUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAidHlwZSAnJS4xMDBzJyBpcyBub3QgYW4gYWNjZXB0YWJsZSBiYXNlIHR5cGUiLAogICAgICAgICAgICAgICAgICAgICAgYmFzZS0+dHBfbmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAorICAgIGRpY3QgPSBQeURpY3RfQ29weShvcmlnX2RpY3QpOworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAvKiBDaGVjayBmb3IgYSBfX3Nsb3RzX18gc2VxdWVuY2UgdmFyaWFibGUgaW4gZGljdCwgYW5kIGNvdW50IGl0ICovCi0gICAgc2xvdHMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19zbG90c19fIik7CisgICAgc2xvdHMgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3Nsb3RzX18pOwogICAgIG5zbG90cyA9IDA7CiAgICAgYWRkX2RpY3QgPSAwOwogICAgIGFkZF93ZWFrID0gMDsKQEAgLTIwNjIsMTAgKzIwODAsOCBAQAogICAgICAgICAgICAgc2xvdHMgPSBQeVR1cGxlX1BhY2soMSwgc2xvdHMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzbG90cyA9IFB5U2VxdWVuY2VfVHVwbGUoc2xvdHMpOwotICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soc2xvdHMpKTsKIAogICAgICAgICAvKiBBcmUgc2xvdHMgYWxsb3dlZD8gKi8KQEAgLTIwNzUsMjQgKzIwOTEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uZW1wdHkgX19zbG90c19fICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHN1cHBvcnRlZCBmb3Igc3VidHlwZSBvZiAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKLSAgICAgICAgICBiYWRfc2xvdHM6Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENoZWNrIGZvciB2YWxpZCBzbG90IG5hbWVzIGFuZCB0d28gc3BlY2lhbCBjYXNlcyAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICghdmFsaWRfaWRlbnRpZmllcih0bXApKQotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRtcCkpOwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIl9fZGljdF9fIikgPT0gMCkgewogICAgICAgICAgICAgICAgIGlmICghbWF5X2FkZF9kaWN0IHx8IGFkZF9kaWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kaWN0X18gc2xvdCBkaXNhbGxvd2VkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAid2UgYWxyZWFkeSBnb3Qgb25lIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRfZGljdCsrOwogICAgICAgICAgICAgfQpAQCAtMjEwMiw3ICsyMTE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3dlYWtyZWZfXyBzbG90IGRpc2FsbG93ZWQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgd2UgYWxyZWFkeSBnb3Qgb25lLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgX19pdGVtc2l6ZV9fICE9IDAiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFkZF93ZWFrKys7CiAgICAgICAgICAgICB9CkBAIC0yMTE0LDcgKzIxMjcsNyBAQAogICAgICAgICAqLwogICAgICAgICBuZXdzbG90cyA9IFB5TGlzdF9OZXcobnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIGlmIChuZXdzbG90cyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBiYWRfc2xvdHM7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IG5zbG90czsgaSsrKSB7CiAgICAgICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKTsKICAgICAgICAgICAgIGlmICgoYWRkX2RpY3QgJiYKQEAgLTIxMjUsMjUgKzIxMzgsMjkgQEAKICAgICAgICAgICAgIHRtcCA9X1B5X01hbmdsZShuYW1lLCB0bXApOwogICAgICAgICAgICAgaWYgKCF0bXApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOwotICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obmV3c2xvdHMsIGosIHRtcCk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oZGljdCwgdG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBqKys7CiAgICAgICAgIH0KICAgICAgICAgYXNzZXJ0KGogPT0gbnNsb3RzIC0gYWRkX2RpY3QgLSBhZGRfd2Vhayk7CiAgICAgICAgIG5zbG90cyA9IGo7Ci0gICAgICAgIFB5X0RFQ1JFRihzbG90cyk7CisgICAgICAgIFB5X0NMRUFSKHNsb3RzKTsKICAgICAgICAgaWYgKFB5TGlzdF9Tb3J0KG5ld3Nsb3RzKSA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgc2xvdHMgPSBQeUxpc3RfQXNUdXBsZShuZXdzbG90cyk7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdzbG90cyk7Ci0gICAgICAgIGlmIChzbG90cyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIC8qIFNlY29uZGFyeSBiYXNlcyBtYXkgcHJvdmlkZSB3ZWFrcmVmcyBvciBkaWN0ICovCiAgICAgICAgIGlmIChuYmFzZXMgPiAxICYmCkBAIC0yMTcxLDIyICsyMTg4LDE3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBYWFggRnJvbSBoZXJlIHVudGlsIHR5cGUgaXMgc2FmZWx5IGFsbG9jYXRlZCwKLSAgICAgICAicmV0dXJuIE5VTEwiIG1heSBsZWFrIHNsb3RzISAqLwotCiAgICAgLyogQWxsb2NhdGUgdGhlIHR5cGUgb2JqZWN0ICovCiAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKiltZXRhdHlwZS0+dHBfYWxsb2MobWV0YXR5cGUsIG5zbG90cyk7Ci0gICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHNsb3RzKTsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICh0eXBlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBLZWVwIG5hbWUgYW5kIHNsb3RzIGFsaXZlIGluIHRoZSBleHRlbmRlZCB0eXBlIG9iamVjdCAqLwogICAgIGV0ID0gKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlOwogICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICBldC0+aHRfbmFtZSA9IG5hbWU7CiAgICAgZXQtPmh0X3Nsb3RzID0gc2xvdHM7CisgICAgc2xvdHMgPSBOVUxMOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9mbGFncyAqLwogICAgIHR5cGUtPnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IRUFQVFlQRSB8CkBAIC0yMjAwLDU5ICsyMjEyLDY5IEBACiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZldC0+YXNfbWFwcGluZzsKICAgICB0eXBlLT50cF9hc19idWZmZXIgPSAmZXQtPmFzX2J1ZmZlcjsKICAgICB0eXBlLT50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKLSAgICBpZiAoIXR5cGUtPnRwX25hbWUpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2Jhc2UgYW5kIHRwX2Jhc2VzICovCiAgICAgdHlwZS0+dHBfYmFzZXMgPSBiYXNlczsKKyAgICBiYXNlcyA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKGJhc2UpOwogICAgIHR5cGUtPnRwX2Jhc2UgPSBiYXNlOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0cF9kaWN0IGZyb20gcGFzc2VkLWluIGRpY3QgKi8KLSAgICB0eXBlLT50cF9kaWN0ID0gZGljdCA9IFB5RGljdF9Db3B5KGRpY3QpOwotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgUHlfSU5DUkVGKGRpY3QpOworICAgIHR5cGUtPnRwX2RpY3QgPSBkaWN0OwogCiAgICAgLyogU2V0IF9fbW9kdWxlX18gaW4gdGhlIGRpY3QgKi8KLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iKSA9PSBOVUxMKSB7CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18pID09IE5VTEwpIHsKICAgICAgICAgdG1wID0gUHlFdmFsX0dldEdsb2JhbHMoKTsKICAgICAgICAgaWYgKHRtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICB0bXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0bXAsICJfX25hbWVfXyIpOworICAgICAgICAgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQodG1wLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgICAgICBpZiAodG1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fbW9kdWxlX18iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCisgICAgLyogU2V0IGh0X3F1YWxuYW1lIHRvIGRpY3RbJ19fcXVhbG5hbWVfXyddIGlmIGF2YWlsYWJsZSwgZWxzZSB0bworICAgICAgIF9fbmFtZV9fLiAgVGhlIF9fcXVhbG5hbWVfXyBhY2Nlc3NvciB3aWxsIGxvb2sgZm9yIGh0X3F1YWxuYW1lLgorICAgICovCisgICAgcXVhbG5hbWUgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHF1YWxuYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSBfX3F1YWxuYW1lX18gbXVzdCBiZSBhIHN0ciwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHF1YWxuYW1lKS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBxdWFsbmFtZSA9IGV0LT5odF9uYW1lOworICAgIH0KKyAgICBQeV9JTkNSRUYocXVhbG5hbWUpOworICAgIGV0LT5odF9xdWFsbmFtZSA9IHF1YWxuYW1lOworCiAgICAgLyogU2V0IHRwX2RvYyB0byBhIGNvcHkgb2YgZGljdFsnX19kb2NfXyddLCBpZiB0aGUgbGF0dGVyIGlzIHRoZXJlCiAgICAgICAgYW5kIGlzIGEgc3RyaW5nLiAgVGhlIF9fZG9jX18gYWNjZXNzb3Igd2lsbCBmaXJzdCBsb29rIGZvciB0cF9kb2M7CiAgICAgICAgaWYgdGhhdCBmYWlscywgaXQgd2lsbCBzdGlsbCBsb29rIGludG8gX19kaWN0X18uCiAgICAgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkaWN0LCAiX19kb2NfXyIpOworICAgICAgICBQeU9iamVjdCAqZG9jID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19kb2NfXyk7CiAgICAgICAgIGlmIChkb2MgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soZG9jKSkgewogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICBjaGFyICpkb2Nfc3RyOwogICAgICAgICAgICAgY2hhciAqdHBfZG9jOwogCiAgICAgICAgICAgICBkb2Nfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhkb2MpOwotICAgICAgICAgICAgaWYgKGRvY19zdHIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkb2Nfc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIC8qIFNpbGVudGx5IHRydW5jYXRlIHRoZSBkb2NzdHJpbmcgaWYgaXQgY29udGFpbnMgbnVsbCBieXRlcy4gKi8KICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihkb2Nfc3RyKTsKICAgICAgICAgICAgIHRwX2RvYyA9IChjaGFyICopUHlPYmplY3RfTUFMTE9DKGxlbiArIDEpOwotICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRwX2RvYyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBtZW1jcHkodHBfZG9jLCBkb2Nfc3RyLCBsZW4gKyAxKTsKICAgICAgICAgICAgIHR5cGUtPnRwX2RvYyA9IHRwX2RvYzsKICAgICAgICAgfQpAQCAtMjI2MCwyOCArMjI4MiwyNSBAQAogCiAgICAgLyogU3BlY2lhbC1jYXNlIF9fbmV3X186IGlmIGl0J3MgYSBwbGFpbiBmdW5jdGlvbiwKICAgICAgICBtYWtlIGl0IGEgc3RhdGljIGZ1bmN0aW9uICovCi0gICAgdG1wID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fbmV3X18iKTsKKyAgICB0bXAgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX25ld19fKTsKICAgICBpZiAodG1wICE9IE5VTEwgJiYgUHlGdW5jdGlvbl9DaGVjayh0bXApKSB7CiAgICAgICAgIHRtcCA9IFB5U3RhdGljTWV0aG9kX05ldyh0bXApOwotICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX25ld19fIiwgdG1wKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19fbmV3X18sIHRtcCkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCiAgICAgLyogQWRkIGRlc2NyaXB0b3JzIGZvciBjdXN0b20gc2xvdHMgZnJvbSBfX3Nsb3RzX18sIG9yIGZvciBfX2RpY3RfXyAqLwogICAgIG1wID0gUHlIZWFwVHlwZV9HRVRfTUVNQkVSUyhldCk7CiAgICAgc2xvdG9mZnNldCA9IGJhc2UtPnRwX2Jhc2ljc2l6ZTsKLSAgICBpZiAoc2xvdHMgIT0gTlVMTCkgeworICAgIGlmIChldC0+aHRfc2xvdHMgIT0gTlVMTCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyssIG1wKyspIHsKICAgICAgICAgICAgIG1wLT5uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZygKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHNsb3RzLCBpKSk7Ci0gICAgICAgICAgICBpZiAobXAtPm5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGV0LT5odF9zbG90cywgaSkpOworICAgICAgICAgICAgaWYgKG1wLT5uYW1lID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIG1wLT50eXBlID0gVF9PQkpFQ1RfRVg7CiAgICAgICAgICAgICBtcC0+b2Zmc2V0ID0gc2xvdG9mZnNldDsKIApAQCAtMjI5OSw2ICsyMzE4LDkgQEAKICAgICAgICAgICAgIHR5cGUtPnRwX2RpY3RvZmZzZXQgPSBzbG90b2Zmc2V0OwogICAgICAgICBzbG90b2Zmc2V0ICs9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CisgICAgaWYgKHR5cGUtPnRwX2RpY3RvZmZzZXQpIHsKKyAgICAgICAgZXQtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKKyAgICB9CiAgICAgaWYgKGFkZF93ZWFrKSB7CiAgICAgICAgIGFzc2VydCghYmFzZS0+dHBfaXRlbXNpemUpOwogICAgICAgICB0eXBlLT50cF93ZWFrbGlzdG9mZnNldCA9IHNsb3RvZmZzZXQ7CkBAIC0yMzQyLDE1ICsyMzY0LDIxIEBACiAgICAgICAgIHR5cGUtPnRwX2ZyZWUgPSBQeU9iamVjdF9EZWw7CiAKICAgICAvKiBJbml0aWFsaXplIHRoZSByZXN0ICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHR5cGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBQdXQgdGhlIHByb3BlciBzbG90cyBpbiBwbGFjZSAqLwogICAgIGZpeHVwX3Nsb3RfZGlzcGF0Y2hlcnModHlwZSk7CiAKKyAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXR5cGU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWERFQ1JFRihiYXNlcyk7CisgICAgUHlfWERFQ1JFRihzbG90cyk7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CkBAIC0yMzU5LDMwICsyMzg3LDg5IEBACiB9OwogCiBQeU9iamVjdCAqCi1QeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCitQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoUHlUeXBlX1NwZWMgKnNwZWMsIFB5T2JqZWN0ICpiYXNlcykKIHsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpyZXMgPSAoUHlIZWFwVHlwZU9iamVjdCopUHlUeXBlX0dlbmVyaWNBbGxvYygmUHlUeXBlX1R5cGUsIDApOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSwgKmJhc2U7CisgICAgY2hhciAqczsKICAgICBjaGFyICpyZXNfc3RhcnQgPSAoY2hhciopcmVzOwogICAgIFB5VHlwZV9TbG90ICpzbG90OworICAgIAorICAgIC8qIFNldCB0aGUgdHlwZSBuYW1lIGFuZCBxdWFsbmFtZSAqLworICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgcyA9IChjaGFyKilzcGVjLT5uYW1lOworICAgIGVsc2UKKyAgICAgICAgcysrOwogCiAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzLT5odF9uYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3BlYy0+bmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIHR5cGUgPSAmcmVzLT5odF90eXBlOworICAgIC8qIFRoZSBmbGFncyBtdXN0IGJlIGluaXRpYWxpemVkIGVhcmx5LCBiZWZvcmUgdGhlIEdDIHRyYXZlcnNlcyB1cyAqLworICAgIHR5cGUtPnRwX2ZsYWdzID0gc3BlYy0+ZmxhZ3MgfCBQeV9UUEZMQUdTX0hFQVBUWVBFOworICAgIHJlcy0+aHRfbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHMpOwogICAgIGlmICghcmVzLT5odF9uYW1lKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgcmVzLT5odF90eXBlLnRwX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHJlcy0+aHRfbmFtZSk7Ci0gICAgaWYgKCFyZXMtPmh0X3R5cGUudHBfbmFtZSkKKyAgICByZXMtPmh0X3F1YWxuYW1lID0gcmVzLT5odF9uYW1lOworICAgIFB5X0lOQ1JFRihyZXMtPmh0X3F1YWxuYW1lKTsKKyAgICB0eXBlLT50cF9uYW1lID0gc3BlYy0+bmFtZTsKKyAgICBpZiAoIXR5cGUtPnRwX25hbWUpCiAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAKKyAgICAvKiBBZGp1c3QgZm9yIGVtcHR5IHR1cGxlIGJhc2VzICovCisgICAgaWYgKCFiYXNlcykgeworICAgICAgICBiYXNlID0gJlB5QmFzZU9iamVjdF9UeXBlOworICAgICAgICAvKiBTZWUgd2hldGhlciBQeV90cF9iYXNlKHMpIHdhcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgZm9yIChzbG90ID0gc3BlYy0+c2xvdHM7IHNsb3QtPnNsb3Q7IHNsb3QrKykgeworICAgICAgICAgICAgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZSkKKyAgICAgICAgICAgICAgICBiYXNlID0gc2xvdC0+cGZ1bmM7CisgICAgICAgICAgICBlbHNlIGlmIChzbG90LT5zbG90ID09IFB5X3RwX2Jhc2VzKSB7CisgICAgICAgICAgICAgICAgYmFzZXMgPSBzbG90LT5wZnVuYzsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYmFzZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghYmFzZXMpCisgICAgICAgICAgICBiYXNlcyA9IFB5VHVwbGVfUGFjaygxLCBiYXNlKTsKKyAgICAgICAgaWYgKCFiYXNlcykKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBQeV9JTkNSRUYoYmFzZXMpOwogCi0gICAgcmVzLT5odF90eXBlLnRwX2Jhc2ljc2l6ZSA9IHNwZWMtPmJhc2ljc2l6ZTsKLSAgICByZXMtPmh0X3R5cGUudHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKLSAgICByZXMtPmh0X3R5cGUudHBfZmxhZ3MgPSBzcGVjLT5mbGFncyB8IFB5X1RQRkxBR1NfSEVBUFRZUEU7CisgICAgLyogQ2FsY3VsYXRlIGJlc3QgYmFzZSwgYW5kIGNoZWNrIHRoYXQgYWxsIGJhc2VzIGFyZSB0eXBlIG9iamVjdHMgKi8KKyAgICBiYXNlID0gYmVzdF9iYXNlKGJhc2VzKTsKKyAgICBpZiAoYmFzZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShiYXNlLCBQeV9UUEZMQUdTX0JBU0VUWVBFKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInR5cGUgJyUuMTAwcycgaXMgbm90IGFuIGFjY2VwdGFibGUgYmFzZSB0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnRwX25hbWUpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBlc3NlbnRpYWwgZmllbGRzICovCisgICAgdHlwZS0+dHBfYXNfbnVtYmVyID0gJnJlcy0+YXNfbnVtYmVyOworICAgIHR5cGUtPnRwX2FzX3NlcXVlbmNlID0gJnJlcy0+YXNfc2VxdWVuY2U7CisgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZyZXMtPmFzX21hcHBpbmc7CisgICAgdHlwZS0+dHBfYXNfYnVmZmVyID0gJnJlcy0+YXNfYnVmZmVyOworICAgIC8qIFNldCB0cF9iYXNlIGFuZCB0cF9iYXNlcyAqLworICAgIHR5cGUtPnRwX2Jhc2VzID0gYmFzZXM7CisgICAgYmFzZXMgPSBOVUxMOworICAgIFB5X0lOQ1JFRihiYXNlKTsKKyAgICB0eXBlLT50cF9iYXNlID0gYmFzZTsKKworICAgIHR5cGUtPnRwX2Jhc2ljc2l6ZSA9IHNwZWMtPmJhc2ljc2l6ZTsKKyAgICB0eXBlLT50cF9pdGVtc2l6ZSA9IHNwZWMtPml0ZW1zaXplOwogCiAgICAgZm9yIChzbG90ID0gc3BlYy0+c2xvdHM7IHNsb3QtPnNsb3Q7IHNsb3QrKykgewotICAgICAgICBpZiAoc2xvdC0+c2xvdCA+PSBzaXplb2Yoc2xvdG9mZnNldHMpL3NpemVvZihzbG90b2Zmc2V0c1swXSkpIHsKKyAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgc2xvdCBvZmZzZXQiKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQorICAgICAgICBpZiAoc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlIHx8IHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZXMpCisgICAgICAgICAgICAvKiBQcm9jZXNzZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAqKHZvaWQqKikocmVzX3N0YXJ0ICsgc2xvdG9mZnNldHNbc2xvdC0+c2xvdF0pID0gc2xvdC0+cGZ1bmM7CiAKICAgICAgICAgLyogbmVlZCB0byBtYWtlIGEgY29weSBvZiB0aGUgZG9jc3RyaW5nIHNsb3QsIHdoaWNoIHVzdWFsbHkKQEAgLTIzOTMsMTkgKzI0ODAsMjkgQEAKICAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICBtZW1jcHkodHBfZG9jLCBzbG90LT5wZnVuYywgbGVuKTsKLSAgICAgICAgICAgIHJlcy0+aHRfdHlwZS50cF9kb2MgPSB0cF9kb2M7CisgICAgICAgICAgICB0eXBlLT50cF9kb2MgPSB0cF9kb2M7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHJlcy0+aHRfdHlwZS50cF9kZWFsbG9jID09IE5VTEwpIHsKKyAgICBpZiAodHlwZS0+dHBfZGljdG9mZnNldCkgeworICAgICAgICByZXMtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKKyAgICB9CisgICAgaWYgKHR5cGUtPnRwX2RlYWxsb2MgPT0gTlVMTCkgewogICAgICAgICAvKiBJdCdzIGEgaGVhcCB0eXBlLCBzbyBuZWVkcyB0aGUgaGVhcCB0eXBlcycgZGVhbGxvYy4KICAgICAgICAgICAgc3VidHlwZV9kZWFsbG9jIHdpbGwgY2FsbCB0aGUgYmFzZSB0eXBlJ3MgdHBfZGVhbGxvYywgaWYKICAgICAgICAgICAgbmVjZXNzYXJ5LiAqLwotICAgICAgICByZXMtPmh0X3R5cGUudHBfZGVhbGxvYyA9IHN1YnR5cGVfZGVhbGxvYzsKKyAgICAgICAgdHlwZS0+dHBfZGVhbGxvYyA9IHN1YnR5cGVfZGVhbGxvYzsKICAgICB9CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZyZXMtPmh0X3R5cGUpIDwgMCkKKyAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCisgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLworICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CisgICAgaWYgKHMgIT0gTlVMTCkKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgCisgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgc3BlYy0+bmFtZSwgKFB5X3NzaXplX3QpKHMgLSBzcGVjLT5uYW1lKSkpOworCiAgICAgcmV0dXJuIChQeU9iamVjdCopcmVzOwogCiAgZmFpbDoKQEAgLTI0MTMsNiArMjUxMCwxMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitQeU9iamVjdCAqCitQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhzcGVjLCBOVUxMKTsKK30KKwogCiAvKiBJbnRlcm5hbCBBUEkgdG8gbG9vayBmb3IgYSBuYW1lIHRocm91Z2ggdGhlIE1STy4KICAgIFRoaXMgcmV0dXJucyBhIGJvcnJvd2VkIHJlZmVyZW5jZSwgYW5kIGRvZXNuJ3Qgc2V0IGFuIGV4Y2VwdGlvbiEgKi8KQEAgLTI0NDIsNiArMjU0NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmVzID0gTlVMTDsKKyAgICAvKiBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBtcm8gYmVjYXVzZSB0eXBlLT50cF9tcm8gY2FuIGJlIHJlcGxhY2VkCisgICAgICAgZHVyaW5nIFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpICAqLworICAgIFB5X0lOQ1JFRihtcm8pOwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKG1ybykpOwogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKG1ybyk7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMjQ1Myw2ICsyNTU5LDcgQEAKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIFB5X0RFQ1JFRihtcm8pOwogCiAgICAgaWYgKE1DQUNIRV9DQUNIRUFCTEVfTkFNRShuYW1lKSAmJiBhc3NpZ25fdmVyc2lvbl90YWcodHlwZSkpIHsKICAgICAgICAgaCA9IE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKTsKQEAgLTI0NjUsNiArMjU3MiwxNiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlUeXBlX0xvb2t1cElkKFB5VHlwZU9iamVjdCAqdHlwZSwgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpvbmFtZTsKKyAgICBvbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKG5hbWUpOyAgIC8qIGJvcnJvd2VkICovCisgICAgaWYgKG9uYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlUeXBlX0xvb2t1cCh0eXBlLCBvbmFtZSk7Cit9CisKIC8qIFRoaXMgaXMgc2ltaWxhciB0byBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigpLAogICAgYnV0IHVzZXMgX1B5VHlwZV9Mb29rdXAoKSBpbnN0ZWFkIG9mIGp1c3QgbG9va2luZyBpbiB0eXBlLT50cF9kaWN0LiAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI1NjQsNiArMjY4MSw5IEBACiAgICAgcmV0dXJuIHVwZGF0ZV9zbG90KHR5cGUsIG5hbWUpOwogfQogCitleHRlcm4gdm9pZAorX1B5RGljdEtleXNfRGVjUmVmKFB5RGljdEtleXNPYmplY3QgKmtleXMpOworCiBzdGF0aWMgdm9pZAogdHlwZV9kZWFsbG9jKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKQEAgLTI1ODUsNyArMjcwNSwxMCBAQAogICAgICAqLwogICAgIFB5T2JqZWN0X0ZyZWUoKGNoYXIgKil0eXBlLT50cF9kb2MpOwogICAgIFB5X1hERUNSRUYoZXQtPmh0X25hbWUpOworICAgIFB5X1hERUNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKICAgICBQeV9YREVDUkVGKGV0LT5odF9zbG90cyk7CisgICAgaWYgKGV0LT5odF9jYWNoZWRfa2V5cykKKyAgICAgICAgX1B5RGljdEtleXNfRGVjUmVmKGV0LT5odF9jYWNoZWRfa2V5cyk7CiAgICAgUHlfVFlQRSh0eXBlKS0+dHBfZnJlZSgoUHlPYmplY3QgKil0eXBlKTsKIH0KIApAQCAtMjYyMyw2ICsyNzQ2LDk5IEBACiAgICAgcmV0dXJuIFB5RGljdF9OZXcoKTsKIH0KIAorLyoKKyAgIE1lcmdlIHRoZSBfX2RpY3RfXyBvZiBhY2xhc3MgaW50byBkaWN0LCBhbmQgcmVjdXJzaXZlbHkgYWxzbyBhbGwKKyAgIHRoZSBfX2RpY3RfX3Mgb2YgYWNsYXNzJ3MgYmFzZSBjbGFzc2VzLiAgVGhlIG9yZGVyIG9mIG1lcmdpbmcgaXNuJ3QKKyAgIGRlZmluZWQsIGFzIGl0J3MgZXhwZWN0ZWQgdGhhdCBvbmx5IHRoZSBmaW5hbCBzZXQgb2YgZGljdCBrZXlzIGlzCisgICBpbnRlcmVzdGluZy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLgorKi8KKworc3RhdGljIGludAorbWVyZ2VfY2xhc3NfZGljdChQeU9iamVjdCAqZGljdCwgUHlPYmplY3QgKmFjbGFzcykKK3sKKyAgICBQeU9iamVjdCAqY2xhc3NkaWN0OworICAgIFB5T2JqZWN0ICpiYXNlczsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jhc2VzX18pOworCisgICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7CisgICAgYXNzZXJ0KGFjbGFzcyk7CisKKyAgICAvKiBNZXJnZSBpbiB0aGUgdHlwZSdzIGRpY3QgKGlmIGFueSkuICovCisgICAgY2xhc3NkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChhY2xhc3MsICZQeUlkX19fZGljdF9fKTsKKyAgICBpZiAoY2xhc3NkaWN0ID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIGludCBzdGF0dXMgPSBQeURpY3RfVXBkYXRlKGRpY3QsIGNsYXNzZGljdCk7CisgICAgICAgIFB5X0RFQ1JFRihjbGFzc2RpY3QpOworICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBSZWN1cnNpdmVseSBtZXJnZSBpbiB0aGUgYmFzZSB0eXBlcycgKGlmIGFueSkgZGljdHMuICovCisgICAgYmFzZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGFjbGFzcywgJlB5SWRfX19iYXNlc19fKTsKKyAgICBpZiAoYmFzZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogV2UgaGF2ZSBubyBndWFyYW50ZWUgdGhhdCBiYXNlcyBpcyBhIHJlYWwgdHVwbGUgKi8KKyAgICAgICAgUHlfc3NpemVfdCBpLCBuOworICAgICAgICBuID0gUHlTZXF1ZW5jZV9TaXplKGJhc2VzKTsgLyogVGhpcyBiZXR0ZXIgYmUgcmlnaHQgKi8KKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50IHN0YXR1czsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYmFzZSA9IFB5U2VxdWVuY2VfR2V0SXRlbShiYXNlcywgaSk7CisgICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXR1cyA9IG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgYmFzZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2UpOworICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIF9fZGlyX18gZm9yIHR5cGUgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXyBhbmQgX19iYXNlc19fLgorICAgV2UgZGVsaWJlcmF0ZWx5IGRvbid0IHN1Y2sgdXAgaXRzIF9fY2xhc3NfXywgYXMgbWV0aG9kcyBiZWxvbmdpbmcgdG8gdGhlCisgICBtZXRhY2xhc3Mgd291bGQgcHJvYmFibHkgYmUgbW9yZSBjb25mdXNpbmcgdGhhbiBoZWxwZnVsLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCit0eXBlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRpY3QgPSBQeURpY3RfTmV3KCk7CisKKyAgICBpZiAoZGljdCAhPSBOVUxMICYmIG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgc2VsZikgPT0gMCkKKyAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7CisKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3R5cGVfc2l6ZW9mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnc191bnVzZWQpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IChQeVR5cGVPYmplY3QqKXNlbGY7CisgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgeworICAgICAgICBQeUhlYXBUeXBlT2JqZWN0KiBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgICAgICBzaXplID0gc2l6ZW9mKFB5SGVhcFR5cGVPYmplY3QpOworICAgICAgICBpZiAoZXQtPmh0X2NhY2hlZF9rZXlzKQorICAgICAgICAgICAgc2l6ZSArPSBfUHlEaWN0X0tleXNTaXplKGV0LT5odF9jYWNoZWRfa2V5cyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeVR5cGVPYmplY3QpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiB0eXBlX21ldGhvZHNbXSA9IHsKICAgICB7Im1ybyIsIChQeUNGdW5jdGlvbiltcm9fZXh0ZXJuYWwsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIm1ybygpIC0+IGxpc3RcbnJldHVybiBhIHR5cGUncyBtZXRob2QgcmVzb2x1dGlvbiBvcmRlciIpfSwKQEAgLTI2MzYsNiArMjg1MiwxMCBAQAogICAgICBQeURvY19TVFIoIl9faW5zdGFuY2VjaGVja19fKCkgLT4gYm9vbFxuY2hlY2sgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIil9LAogICAgIHsiX19zdWJjbGFzc2NoZWNrX18iLCB0eXBlX19fc3ViY2xhc3NjaGVja19fLCBNRVRIX08sCiAgICAgIFB5RG9jX1NUUigiX19zdWJjbGFzc2NoZWNrX18oKSAtPiBib29sXG5jaGVjayBpZiBhIGNsYXNzIGlzIGEgc3ViY2xhc3MiKX0sCisgICAgeyJfX2Rpcl9fIiwgdHlwZV9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5zcGVjaWFsaXplZCBfX2Rpcl9fIGltcGxlbWVudGF0aW9uIGZvciB0eXBlcyIpfSwKKyAgICB7Il9fc2l6ZW9mX18iLCAgICAgIHR5cGVfc2l6ZW9mLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgIl9fc2l6ZW9mX18oKSAtPiBpbnRcbnJldHVybiBtZW1vcnkgY29uc3VtcHRpb24gb2YgdGhlIHR5cGUgb2JqZWN0In0sCiAgICAgezB9CiB9OwogCkBAIC0yNjQ4LDcgKzI4NjgsMTIgQEAKIHsKICAgICAvKiBCZWNhdXNlIG9mIHR5cGVfaXNfZ2MoKSwgdGhlIGNvbGxlY3RvciBvbmx5IGNhbGxzIHRoaXMKICAgICAgICBmb3IgaGVhcHR5cGVzLiAqLwotICAgIGFzc2VydCh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpOworICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICAgICAgY2hhciBtc2dbMjAwXTsKKyAgICAgICAgc3ByaW50Zihtc2csICJ0eXBlX3RyYXZlcnNlKCkgY2FsbGVkIGZvciBub24taGVhcCB0eXBlICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgUHlfRmF0YWxFcnJvcihtc2cpOworICAgIH0KIAogICAgIFB5X1ZJU0lUKHR5cGUtPnRwX2RpY3QpOwogICAgIFB5X1ZJU0lUKHR5cGUtPnRwX2NhY2hlKTsKQEAgLTI2NjcsNiArMjg5Miw3IEBACiBzdGF0aWMgaW50CiB0eXBlX2NsZWFyKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICpjYWNoZWRfa2V5czsKICAgICAvKiBCZWNhdXNlIG9mIHR5cGVfaXNfZ2MoKSwgdGhlIGNvbGxlY3RvciBvbmx5IGNhbGxzIHRoaXMKICAgICAgICBmb3IgaGVhcHR5cGVzLiAqLwogICAgIGFzc2VydCh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpOwpAQCAtMjY5OCw2ICsyOTI0LDExIEBACiAgICAgKi8KIAogICAgIFB5VHlwZV9Nb2RpZmllZCh0eXBlKTsKKyAgICBjYWNoZWRfa2V5cyA9ICgoUHlIZWFwVHlwZU9iamVjdCAqKXR5cGUpLT5odF9jYWNoZWRfa2V5czsKKyAgICBpZiAoY2FjaGVkX2tleXMgIT0gTlVMTCkgeworICAgICAgICAoKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlKS0+aHRfY2FjaGVkX2tleXMgPSBOVUxMOworICAgICAgICBfUHlEaWN0S2V5c19EZWNSZWYoY2FjaGVkX2tleXMpOworICAgIH0KICAgICBpZiAodHlwZS0+dHBfZGljdCkKICAgICAgICAgUHlEaWN0X0NsZWFyKHR5cGUtPnRwX2RpY3QpOwogICAgIFB5X0NMRUFSKHR5cGUtPnRwX21ybyk7CkBAIC0yODEzLDIyICszMDQ0LDExIEBACiBvYmplY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIGludCBlcnIgPSAwOwotICAgIGlmIChleGNlc3NfYXJncyhhcmdzLCBrd2RzKSkgewotICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOwotICAgICAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCAmJgotICAgICAgICAgICAgdHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVyciA9IFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QuX19pbml0X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCB8fAotICAgICAgICAgICAgICAgICB0eXBlLT50cF9uZXcgPT0gb2JqZWN0X25ldykKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAib2JqZWN0Ll9faW5pdF9fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIpOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOworICAgIGlmIChleGNlc3NfYXJncyhhcmdzLCBrd2RzKSAmJgorICAgICAgICAodHlwZS0+dHBfbmV3ID09IG9iamVjdF9uZXcgfHwgdHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm9iamVjdC5fX2luaXRfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKKyAgICAgICAgZXJyID0gLTE7CiAgICAgfQogICAgIHJldHVybiBlcnI7CiB9CkBAIC0yODM2LDMzICszMDU2LDIxIEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpbnQgZXJyID0gMDsKLSAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykpIHsKLSAgICAgICAgaWYgKHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3ICYmCi0gICAgICAgICAgICB0eXBlLT50cF9pbml0ICE9IG9iamVjdF9pbml0KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcgfHwKLSAgICAgICAgICAgICAgICAgdHlwZS0+dHBfaW5pdCA9PSBvYmplY3RfaW5pdCkKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAib2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7Ci0gICAgICAgICAgICBlcnIgPSAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZXJyIDwgMCkKKyAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykgJiYKKyAgICAgICAgKHR5cGUtPnRwX2luaXQgPT0gb2JqZWN0X2luaXQgfHwgdHlwZS0+dHBfbmV3ICE9IG9iamVjdF9uZXcpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QuX19uZXdfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19JU19BQlNUUkFDVCkgewotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKmNvbW1hID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmFic3RyYWN0X21ldGhvZHMgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqYnVpbHRpbnM7CiAgICAgICAgIFB5T2JqZWN0ICpzb3J0ZWQ7CiAgICAgICAgIFB5T2JqZWN0ICpzb3J0ZWRfbWV0aG9kcyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpqb2luZWQgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqY29tbWE7CisgICAgICAgIF9QeV9zdGF0aWNfc3RyaW5nKGNvbW1hX2lkLCAiLCAiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc29ydGVkKTsKIAogICAgICAgICAvKiBDb21wdXRlICIsICIuam9pbihzb3J0ZWQodHlwZS5fX2Fic3RyYWN0bWV0aG9kc19fKSkKICAgICAgICAgICAgaW50byBqb2luZWQuICovCkBAIC0yODcyLDcgKzMwODAsNyBAQAogICAgICAgICBidWlsdGlucyA9IFB5RXZhbF9HZXRCdWlsdGlucygpOwogICAgICAgICBpZiAoYnVpbHRpbnMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIHNvcnRlZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGJ1aWx0aW5zLCAic29ydGVkIik7CisgICAgICAgIHNvcnRlZCA9IF9QeURpY3RfR2V0SXRlbUlkKGJ1aWx0aW5zLCAmUHlJZF9zb3J0ZWQpOwogICAgICAgICBpZiAoc29ydGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBzb3J0ZWRfbWV0aG9kcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc29ydGVkLApAQCAtMjg4MCwxMyArMzA4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgIGlmIChzb3J0ZWRfbWV0aG9kcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbW1hID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIiwgIik7Ci0gICAgICAgICAgICBpZiAoY29tbWEgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGpvaW5lZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29tbWEsICJqb2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTyIsICBzb3J0ZWRfbWV0aG9kcyk7CisgICAgICAgIGNvbW1hID0gX1B5VW5pY29kZV9Gcm9tSWQoJmNvbW1hX2lkKTsKKyAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBqb2luZWQgPSBQeVVuaWNvZGVfSm9pbihjb21tYSwgc29ydGVkX21ldGhvZHMpOwogICAgICAgICBpZiAoam9pbmVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yOTI0LDcgKzMxMjksNyBAQAogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICAgICAgbW9kID0gTlVMTDsKICAgICB9Ci0gICAgbmFtZSA9IHR5cGVfbmFtZSh0eXBlLCBOVUxMKTsKKyAgICBuYW1lID0gdHlwZV9xdWFsbmFtZSh0eXBlLCBOVUxMKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1hERUNSRUYobW9kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMDg5LDcgKzMyOTQsNyBAQAogICAgIH0KICAgICBpZiAoIVB5VHlwZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAiX19jbGFzc19fIG11c3QgYmUgc2V0IHRvIG5ldy1zdHlsZSBjbGFzcywgbm90ICclcycgb2JqZWN0IiwKKyAgICAgICAgICAiX19jbGFzc19fIG11c3QgYmUgc2V0IHRvIGEgY2xhc3MsIG5vdCAnJXMnIG9iamVjdCIsCiAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzEzMCwxNCArMzMzNSwxOSBAQAogaW1wb3J0X2NvcHlyZWcodm9pZCkKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKmNvcHlyZWdfc3RyOworICAgIHN0YXRpYyBQeU9iamVjdCAqbW9kX2NvcHlyZWcgPSBOVUxMOwogCiAgICAgaWYgKCFjb3B5cmVnX3N0cikgewogICAgICAgICBjb3B5cmVnX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJjb3B5cmVnIik7CiAgICAgICAgIGlmIChjb3B5cmVnX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmICghbW9kX2NvcHlyZWcpIHsKKyAgICAgICAgbW9kX2NvcHlyZWcgPSBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOworICAgIH0KIAotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOworICAgIFB5X1hJTkNSRUYobW9kX2NvcHlyZWcpOworICAgIHJldHVybiBtb2RfY29weXJlZzsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMxNDYsMTQgKzMzNTYsMTEgQEAKICAgICBQeU9iamVjdCAqY2xzZGljdDsKICAgICBQeU9iamVjdCAqY29weXJlZzsKICAgICBQeU9iamVjdCAqc2xvdG5hbWVzOwotCi0gICAgaWYgKCFQeVR5cGVfQ2hlY2soY2xzKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RuYW1lc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfc2xvdG5hbWVzKTsKIAogICAgIGNsc2RpY3QgPSAoKFB5VHlwZU9iamVjdCAqKWNscyktPnRwX2RpY3Q7Ci0gICAgc2xvdG5hbWVzID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoY2xzZGljdCwgIl9fc2xvdG5hbWVzX18iKTsKKyAgICBzbG90bmFtZXMgPSBfUHlEaWN0X0dldEl0ZW1JZChjbHNkaWN0LCAmUHlJZF9fX3Nsb3RuYW1lc19fKTsKICAgICBpZiAoc2xvdG5hbWVzICE9IE5VTEwgJiYgUHlMaXN0X0NoZWNrKHNsb3RuYW1lcykpIHsKICAgICAgICAgUHlfSU5DUkVGKHNsb3RuYW1lcyk7CiAgICAgICAgIHJldHVybiBzbG90bmFtZXM7CkBAIC0zMTYzLDcgKzMzNzAsNyBAQAogICAgIGlmIChjb3B5cmVnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2xvdG5hbWVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjb3B5cmVnLCAiX3Nsb3RuYW1lcyIsICJPIiwgY2xzKTsKKyAgICBzbG90bmFtZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNvcHlyZWcsICZQeUlkX19zbG90bmFtZXMsICJPIiwgY2xzKTsKICAgICBQeV9ERUNSRUYoY29weXJlZyk7CiAgICAgaWYgKHNsb3RuYW1lcyAhPSBOVUxMICYmCiAgICAgICAgIHNsb3RuYW1lcyAhPSBQeV9Ob25lICYmCkBAIC0zMTg3LDEyICszMzk0LDEzIEBACiAgICAgUHlPYmplY3QgKnNsb3RzID0gTlVMTCwgKmxpc3RpdGVtcyA9IE5VTEwsICpkaWN0aXRlbXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnID0gTlVMTCwgKm5ld29iaiA9IE5VTEwsICpyZXMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldG5ld2FyZ3NfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRzdGF0ZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKIAotICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19jbGFzc19fIik7Ci0gICAgaWYgKGNscyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOwogCi0gICAgZ2V0bmV3YXJncyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19nZXRuZXdhcmdzX18iKTsKKyAgICBnZXRuZXdhcmdzID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fZ2V0bmV3YXJnc19fKTsKICAgICBpZiAoZ2V0bmV3YXJncyAhPSBOVUxMKSB7CiAgICAgICAgIGFyZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldG5ld2FyZ3MsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0bmV3YXJncyk7CkBAIC0zMjEwLDcgKzM0MTgsNyBAQAogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOwogCi0gICAgZ2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZ2V0c3RhdGVfXyIpOworICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fZ2V0c3RhdGVfXyk7CiAgICAgaWYgKGdldHN0YXRlICE9IE5VTEwpIHsKICAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldHN0YXRlLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKQEAgLTMyMTgsMTcgKzM0MjYsMTggQEAKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKipkaWN0OwogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19kaWN0X18iKTsKLSAgICAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgICAgICBpZiAoZGljdCAmJiAqZGljdCkKKyAgICAgICAgICAgIHN0YXRlID0gKmRpY3Q7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0YXRlID0gUHlfTm9uZTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHN0YXRlKTsKICAgICAgICAgbmFtZXMgPSBzbG90bmFtZXMoY2xzKTsKICAgICAgICAgaWYgKG5hbWVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgaWYgKG5hbWVzICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKG5hbWVzICE9IFB5X05vbmUgJiYgUHlMaXN0X0dFVF9TSVpFKG5hbWVzKSA+IDApIHsKICAgICAgICAgICAgIGFzc2VydChQeUxpc3RfQ2hlY2sobmFtZXMpKTsKICAgICAgICAgICAgIHNsb3RzID0gUHlEaWN0X05ldygpOwogICAgICAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpCkBAIC0zMjc1LDcgKzM0ODQsOCBAQAogICAgICAgICBQeV9JTkNSRUYoZGljdGl0ZW1zKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiaXRlbXMiLCAiIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKyAgICAgICAgUHlPYmplY3QgKml0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCAiIik7CiAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIGRpY3RpdGVtcyA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMzI4Nyw3ICszNDk3LDcgQEAKICAgICBjb3B5cmVnID0gaW1wb3J0X2NvcHlyZWcoKTsKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKLSAgICBuZXdvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvcHlyZWcsICJfX25ld29ial9fIik7CisgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9fKTsKICAgICBpZiAobmV3b2JqID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOwogCkBAIC0zMjk1LDggKzM1MDUsOCBAQAogICAgIGFyZ3MyID0gUHlUdXBsZV9OZXcobisxKTsKICAgICBpZiAoYXJnczIgPT0gTlVMTCkKICAgICAgICAgZ290byBlbmQ7CisgICAgUHlfSU5DUkVGKGNscyk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzMiwgMCwgY2xzKTsKLSAgICBjbHMgPSBOVUxMOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogICAgICAgICBQeV9JTkNSRUYodik7CkBAIC0zMzA2LDcgKzM1MTYsNiBAQAogICAgIHJlcyA9IFB5VHVwbGVfUGFjayg1LCBuZXdvYmosIGFyZ3MyLCBzdGF0ZSwgbGlzdGl0ZW1zLCBkaWN0aXRlbXMpOwogCiAgIGVuZDoKLSAgICBQeV9YREVDUkVGKGNscyk7CiAgICAgUHlfWERFQ1JFRihhcmdzKTsKICAgICBQeV9YREVDUkVGKGFyZ3MyKTsKICAgICBQeV9YREVDUkVGKHNsb3RzKTsKQEAgLTMzNjYsMzEgKzM1NzUsMzQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmplY3RfcmVkdWNlX2V4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBzdGF0aWMgUHlPYmplY3QgKm9ianJlZHVjZTsKICAgICBQeU9iamVjdCAqcmVkdWNlLCAqcmVzOwogICAgIGludCBwcm90byA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoX19yZWR1Y2VfXyk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlZHVjZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fcmVkdWNlX18iKTsKKyAgICBpZiAob2JqcmVkdWNlID09IE5VTEwpIHsKKyAgICAgICAgb2JqcmVkdWNlID0gX1B5RGljdF9HZXRJdGVtSWQoUHlCYXNlT2JqZWN0X1R5cGUudHBfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19yZWR1Y2VfXyk7CisgICAgICAgIGlmIChvYmpyZWR1Y2UgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlZHVjZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgaWYgKHJlZHVjZSA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqY2xzLCAqY2xzcmVkdWNlLCAqb2JqcmVkdWNlOworICAgICAgICBQeU9iamVjdCAqY2xzLCAqY2xzcmVkdWNlOwogICAgICAgICBpbnQgb3ZlcnJpZGU7Ci0gICAgICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fY2xhc3NfXyIpOwotICAgICAgICBpZiAoY2xzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2UpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgY2xzcmVkdWNlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjbHMsICJfX3JlZHVjZV9fIik7Ci0gICAgICAgIFB5X0RFQ1JFRihjbHMpOworCisgICAgICAgIGNscyA9IChQeU9iamVjdCAqKSBQeV9UWVBFKHNlbGYpOworICAgICAgICBjbHNyZWR1Y2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgICAgIGlmIChjbHNyZWR1Y2UgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlZHVjZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBvYmpyZWR1Y2UgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhQeUJhc2VPYmplY3RfVHlwZS50cF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19yZWR1Y2VfXyIpOwogICAgICAgICBvdmVycmlkZSA9IChjbHNyZWR1Y2UgIT0gb2JqcmVkdWNlKTsKICAgICAgICAgUHlfREVDUkVGKGNsc3JlZHVjZSk7CiAgICAgICAgIGlmIChvdmVycmlkZSkgewpAQCAtMzQwOCw4ICszNjIwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvYmplY3Rfc3ViY2xhc3Nob29rKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogUHlEb2NfU1RSVkFSKG9iamVjdF9zdWJjbGFzc2hvb2tfZG9jLApAQCAtMzQ0MCwyMSArMzY1MSwyMSBAQAogICAgIHNlbGZfYXNfc3RyID0gUHlPYmplY3RfU3RyKHNlbGYpOwogICAgIGlmIChzZWxmX2FzX3N0ciAhPSBOVUxMKSB7CiAgICAgICAgIC8qIElzc3VlIDc5OTQ6IElmIHdlJ3JlIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcsIHdlCi0JICAgc2hvdWxkIHJlamVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgKi8KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykgPiAwKSB7Ci0JICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKLQkJCSAgICAgIm9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0ICIKLQkJCSAgICAgInN0cmluZyBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKSB7Ci0JICAgICAgZ290byBkb25lOwotCSAgICB9Ci0JICAgIC8qIEV2ZW50dWFsbHkgdGhpcyB3aWxsIGJlY29tZSBhbiBlcnJvcjoKLQkgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLQkgICAgICAgIm5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIHBhc3NlZCB0byBvYmplY3QuX19mb3JtYXRfXyIpOwotCSAgICAgICBnb3RvIGRvbmU7Ci0JICAgICovCi0JfQorICAgICAgICAgICBzaG91bGQgcmVqZWN0IGZvcm1hdCBzcGVjaWZpY2F0aW9ucyAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpID4gMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkgeworICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBFdmVudHVhbGx5IHRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3I6CisgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgIm5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nIHBhc3NlZCB0byBvYmplY3QuX19mb3JtYXRfXyIpOworICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgKi8KKyAgICAgICAgfQogCi0JcmVzdWx0ID0gUHlPYmplY3RfRm9ybWF0KHNlbGZfYXNfc3RyLCBmb3JtYXRfc3BlYyk7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOwogICAgIH0KIAogZG9uZToKQEAgLTM0NzcsNiArMzY4OCw1MyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KIAorLyogX19kaXJfXyBmb3IgZ2VuZXJpYyBvYmplY3RzOiByZXR1cm5zIF9fZGljdF9fLCBfX2NsYXNzX18sCisgICBhbmQgcmVjdXJzaXZlbHkgdXAgdGhlIF9fY2xhc3NfXy5fX2Jhc2VzX18gY2hhaW4uCisqLworc3RhdGljIFB5T2JqZWN0ICoKK29iamVjdF9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRzY2xhc3MgPSBOVUxMOworCisgICAgLyogR2V0IF9fZGljdF9fICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBhIHJlYWwgZGljdC4uLikgKi8KKyAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOworICAgIH0KKyAgICBlbHNlIGlmICghUHlEaWN0X0NoZWNrKGRpY3QpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIENvcHkgX19kaWN0X18gdG8gYXZvaWQgbXV0YXRpbmcgaXQuICovCisgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlEaWN0X0NvcHkoZGljdCk7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgZGljdCA9IHRlbXA7CisgICAgfQorCisgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIE1lcmdlIGluIGF0dHJzIHJlYWNoYWJsZSBmcm9tIGl0cyBjbGFzcy4gKi8KKyAgICBpdHNjbGFzcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19jbGFzc19fKTsKKyAgICBpZiAoaXRzY2xhc3MgPT0gTlVMTCkKKyAgICAgICAgLyogWFhYKHRvbWVyKTogUGVyaGFwcyBmYWxsIGJhY2sgdG8gb2JqLT5vYl90eXBlIGlmIG5vCisgICAgICAgICAgICAgICAgICAgICAgIF9fY2xhc3NfXyBleGlzdHM/ICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSBpZiAobWVyZ2VfY2xhc3NfZGljdChkaWN0LCBpdHNjbGFzcykgIT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworICAgIC8qIGZhbGwgdGhyb3VnaCAqLworZXJyb3I6CisgICAgUHlfWERFQ1JFRihpdHNjbGFzcyk7CisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgb2JqZWN0X21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX2V4X18iLCBvYmplY3RfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiaGVscGVyIGZvciBwaWNrbGUiKX0sCkBAIC0zNDg4LDYgKzM3NDYsOCBAQAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfX3NpemVvZl9fKCkgLT4gaW50XG5zaXplIG9mIG9iamVjdCBpbiBtZW1vcnksIGluIGJ5dGVzIil9LAorICAgIHsiX19kaXJfXyIsIG9iamVjdF9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5kZWZhdWx0IGRpcigpIGltcGxlbWVudGF0aW9uIil9LAogICAgIHswfQogfTsKIApAQCAtMzU1Nyw3ICszODE3LDcgQEAKICAgICAgICAgICAgIGRlc2NyID0gUHlEZXNjcl9OZXdDbGFzc01ldGhvZCh0eXBlLCBtZXRoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChtZXRoLT5tbF9mbGFncyAmIE1FVEhfU1RBVElDKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqY2Z1bmMgPSBQeUNGdW5jdGlvbl9OZXcobWV0aCwgTlVMTCk7CisgICAgICAgICAgICBQeU9iamVjdCAqY2Z1bmMgPSBQeUNGdW5jdGlvbl9OZXcobWV0aCwgKFB5T2JqZWN0Kil0eXBlKTsKICAgICAgICAgICAgIGlmIChjZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGRlc2NyID0gUHlTdGF0aWNNZXRob2RfTmV3KGNmdW5jKTsKQEAgLTM2MzgsOCArMzg5OCw4IEBACiAgICAgICAgICAgIHRoYXQgdGhlIGV4dGVuc2lvbiB0eXBlJ3Mgb3duIGZhY3RvcnkgZnVuY3Rpb24gZW5zdXJlcykuCiAgICAgICAgICAgIEhlYXAgdHlwZXMsIG9mIGNvdXJzZSwgYXJlIHVuZGVyIG91ciBjb250cm9sLCBzbyB0aGV5IGRvCiAgICAgICAgICAgIGluaGVyaXQgdHBfbmV3OyBzdGF0aWMgZXh0ZW5zaW9uIHR5cGVzIHRoYXQgc3BlY2lmeSBzb21lCi0gICAgICAgICAgIG90aGVyIGJ1aWx0LWluIHR5cGUgYXMgdGhlIGRlZmF1bHQgYXJlIGNvbnNpZGVyZWQKLSAgICAgICAgICAgbmV3LXN0eWxlLWF3YXJlIHNvIHRoZXkgYWxzbyBpbmhlcml0IG9iamVjdC5fX25ld19fLiAqLworICAgICAgICAgICBvdGhlciBidWlsdC1pbiB0eXBlIGFzIHRoZSBkZWZhdWx0IGFsc28KKyAgICAgICAgICAgaW5oZXJpdCBvYmplY3QuX19uZXdfXy4gKi8KICAgICAgICAgaWYgKGJhc2UgIT0gJlB5QmFzZU9iamVjdF9UeXBlIHx8CiAgICAgICAgICAgICAodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewogICAgICAgICAgICAgaWYgKHR5cGUtPnRwX25ldyA9PSBOVUxMKQpAQCAtMzY3OCwyMyArMzkzOCwxNyBAQAogICAgICAgICB0eXBlLT50cF9mbGFncyB8PSBQeV9UUEZMQUdTX0RJQ1RfU1VCQ0xBU1M7CiB9CiAKLXN0YXRpYyBjaGFyICpoYXNoX25hbWVfb3BbXSA9IHsKLSAgICAiX19lcV9fIiwKLSAgICAiX19oYXNoX18iLAotICAgIE5VTEwKLX07Ci0KIHN0YXRpYyBpbnQKIG92ZXJyaWRlc19oYXNoKFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKLSAgICBjaGFyICoqcDsKICAgICBQeU9iamVjdCAqZGljdCA9IHR5cGUtPnRwX2RpY3Q7CisgICAgX1B5X0lERU5USUZJRVIoX19lcV9fKTsKIAogICAgIGFzc2VydChkaWN0ICE9IE5VTEwpOwotICAgIGZvciAocCA9IGhhc2hfbmFtZV9vcDsgKnA7IHArKykgewotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgKnApICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fZXFfXykgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19faGFzaF9fKSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzk4MCwxNiArNDIzNCwxNiBAQAogICAgIC8qIGlmIHRoZSB0eXBlIGRpY3Rpb25hcnkgZG9lc24ndCBjb250YWluIGEgX19kb2NfXywgc2V0IGl0IGZyb20KICAgICAgICB0aGUgdHBfZG9jIHNsb3QuCiAgICAgICovCi0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIikgPT0gTlVMTCkgeworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fKSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICh0eXBlLT50cF9kb2MgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmRvYyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHR5cGUtPnRwX2RvYyk7CiAgICAgICAgICAgICBpZiAoZG9jID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2RvY19fIiwgZG9jKTsKKyAgICAgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18sIGRvYyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZG9jKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19kb2NfXyIsIFB5X05vbmUpOworICAgICAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fZG9jX18sIFB5X05vbmUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MDAwLDggKzQyNTQsOCBAQAogICAgICAgIFRoaXMgc2lnbmFscyB0aGF0IF9faGFzaF9fIGlzIG5vdCBpbmhlcml0ZWQuCiAgICAgICovCiAgICAgaWYgKHR5cGUtPnRwX2hhc2ggPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9faGFzaF9fIikgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2hhc2hfXyIsIFB5X05vbmUpIDwgMCkKKyAgICAgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19faGFzaF9fKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19oYXNoX18sIFB5X05vbmUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgdHlwZS0+dHBfaGFzaCA9IFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZDsKICAgICAgICAgfQpAQCAtNDU5OCw3ICs0ODUyLDcgQEAKICAgICAgICBvYmplY3QuX19uZXdfXyhkaWN0KS4gIFRvIGRvIHRoaXMsIHdlIGNoZWNrIHRoYXQgdGhlCiAgICAgICAgbW9zdCBkZXJpdmVkIGJhc2UgdGhhdCdzIG5vdCBhIGhlYXAgdHlwZSBpcyB0aGlzIHR5cGUuICovCiAgICAgc3RhdGljYmFzZSA9IHN1YnR5cGU7Ci0gICAgd2hpbGUgKHN0YXRpY2Jhc2UgJiYgKHN0YXRpY2Jhc2UtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpCisgICAgd2hpbGUgKHN0YXRpY2Jhc2UgJiYgKHN0YXRpY2Jhc2UtPnRwX25ldyA9PSBzbG90X3RwX25ldykpCiAgICAgICAgIHN0YXRpY2Jhc2UgPSBzdGF0aWNiYXNlLT50cF9iYXNlOwogICAgIC8qIElmIHN0YXRpY2Jhc2UgaXMgTlVMTCBub3csIGl0IGlzIGEgcmVhbGx5IHdlaXJkIHR5cGUuCiAgICAgICAgSW4gdGhlIHNwaXJpdCBvZiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAoPyksIGp1c3Qgc2h1dCB1cC4gKi8KQEAgLTQ2MzEsMTIgKzQ4ODUsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqZnVuYzsKIAotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19uZXdfXyIpICE9IE5VTEwpCisgICAgaWYgKF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbmV3X18pICE9IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXcodHBfbmV3X21ldGhvZGRlZiwgKFB5T2JqZWN0ICopdHlwZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19uZXdfXyIsIGZ1bmMpKSB7CisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbmV3X18sIGZ1bmMpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ2NTEsMzQgKzQ5MDUsMzQgQEAKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsgXAotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCBPUFNUUiwgJmNhY2hlX3N0ciwgIigpIik7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigpIik7IFwKIH0KIAogI2RlZmluZSBTTE9UMShGVU5DTkFNRSwgT1BTVFIsIEFSRzFUWVBFLCBBUkdDT0RFUykgXAogc3RhdGljIFB5T2JqZWN0ICogXAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYsIEFSRzFUWVBFIGFyZzEpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxKTsgXAorICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxKTsgXAogfQogCiAvKiBCb29sZWFuIGhlbHBlciBmb3IgU0xPVDFCSU5GVUxMKCkuCiAgICByaWdodC5fX2NsYXNzX18gaXMgYSBub250cml2aWFsIHN1YmNsYXNzIG9mIGxlZnQuX19jbGFzc19fLiAqLwogc3RhdGljIGludAotbWV0aG9kX2lzX292ZXJsb2FkZWQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgY2hhciAqbmFtZSkKK21ldGhvZF9pc19vdmVybG9hZGVkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqYSwgKmI7CiAgICAgaW50IG9rOwogCi0gICAgYiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopKFB5X1RZUEUocmlnaHQpKSwgbmFtZSk7CisgICAgYiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopKFB5X1RZUEUocmlnaHQpKSwgbmFtZSk7CiAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAvKiBJZiByaWdodCBkb2Vzbid0IGhhdmUgaXQsIGl0J3Mgbm90IG92ZXJsb2FkZWQgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopKFB5X1RZUEUobGVmdCkpLCBuYW1lKTsKKyAgICBhID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikoUHlfVFlQRShsZWZ0KSksIG5hbWUpOwogICAgIGlmIChhID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfREVDUkVGKGIpOwpAQCAtNDcwMiw3ICs0OTU2LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyLCAqcmNhY2hlX3N0cjsgXAorICAgIF9QeV9zdGF0aWNfc3RyaW5nKG9wX2lkLCBPUFNUUik7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhyb3BfaWQsIFJPUFNUUik7IFwKICAgICBpbnQgZG9fb3RoZXIgPSBQeV9UWVBFKHNlbGYpICE9IFB5X1RZUEUob3RoZXIpICYmIFwKICAgICAgICAgUHlfVFlQRShvdGhlciktPnRwX2FzX251bWJlciAhPSBOVUxMICYmIFwKICAgICAgICAgUHlfVFlQRShvdGhlciktPnRwX2FzX251bWJlci0+U0xPVE5BTUUgPT0gVEVTVEZVTkM7IFwKQEAgLTQ3MTEsMjcgKzQ5NjYsMjMgQEAKICAgICAgICAgUHlPYmplY3QgKnI7IFwKICAgICAgICAgaWYgKGRvX290aGVyICYmIFwKICAgICAgICAgICAgIFB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvdGhlciksIFB5X1RZUEUoc2VsZikpICYmIFwKLSAgICAgICAgICAgIG1ldGhvZF9pc19vdmVybG9hZGVkKHNlbGYsIG90aGVyLCBST1BTVFIpKSB7IFwKLSAgICAgICAgICAgIHIgPSBjYWxsX21heWJlKCBcCi0gICAgICAgICAgICAgICAgb3RoZXIsIFJPUFNUUiwgJnJjYWNoZV9zdHIsICIoTykiLCBzZWxmKTsgXAorICAgICAgICAgICAgbWV0aG9kX2lzX292ZXJsb2FkZWQoc2VsZiwgb3RoZXIsICZyb3BfaWQpKSB7IFwKKyAgICAgICAgICAgIHIgPSBjYWxsX21heWJlKG90aGVyLCAmcm9wX2lkLCAiKE8pIiwgc2VsZik7IFwKICAgICAgICAgICAgIGlmIChyICE9IFB5X05vdEltcGxlbWVudGVkKSBcCiAgICAgICAgICAgICAgICAgcmV0dXJuIHI7IFwKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsgXAogICAgICAgICAgICAgZG9fb3RoZXIgPSAwOyBcCiAgICAgICAgIH0gXAotICAgICAgICByID0gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsICIoTykiLCBvdGhlcik7IFwKKyAgICAgICAgciA9IGNhbGxfbWF5YmUoc2VsZiwgJm9wX2lkLCAiKE8pIiwgb3RoZXIpOyBcCiAgICAgICAgIGlmIChyICE9IFB5X05vdEltcGxlbWVudGVkIHx8IFwKICAgICAgICAgICAgIFB5X1RZUEUob3RoZXIpID09IFB5X1RZUEUoc2VsZikpIFwKICAgICAgICAgICAgIHJldHVybiByOyBcCiAgICAgICAgIFB5X0RFQ1JFRihyKTsgXAogICAgIH0gXAogICAgIGlmIChkb19vdGhlcikgeyBcCi0gICAgICAgIHJldHVybiBjYWxsX21heWJlKCBcCi0gICAgICAgICAgICBvdGhlciwgUk9QU1RSLCAmcmNhY2hlX3N0ciwgIihPKSIsIHNlbGYpOyBcCisgICAgICAgIHJldHVybiBjYWxsX21heWJlKG90aGVyLCAmcm9wX2lkLCAiKE8pIiwgc2VsZik7IFwKICAgICB9IFwKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyBcCi0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOyBcCisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOyBcCiB9CiAKICNkZWZpbmUgU0xPVDFCSU4oRlVOQ05BTUUsIFNMT1ROQU1FLCBPUFNUUiwgUk9QU1RSKSBcCkBAIC00NzQxLDE2ICs0OTkyLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZiwgQVJHMVRZUEUgYXJnMSwgQVJHMlRZUEUgYXJnMikgXAogeyBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIigiIEFSR0NPREVTICIpIiwgYXJnMSwgYXJnMik7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgI09QU1RSKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsICIoIiBBUkdDT0RFUyAiKSIsIGFyZzEsIGFyZzIpOyBcCiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90CiBzbG90X3NxX2xlbmd0aChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmxlbl9zdHI7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX2xlbl9fIiwgJmxlbl9zdHIsICIoKSIpOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCAiKCkiKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTQ3NzEsMTYgKzUwMjEsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGl0ZW1fc3RyOwogICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncyA9IE5VTEwsICppdmFsID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CiAgICAgZGVzY3JnZXRmdW5jIGY7CiAKLSAgICBpZiAoZ2V0aXRlbV9zdHIgPT0gTlVMTCkgewotICAgICAgICBnZXRpdGVtX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2dldGl0ZW1fXyIpOwotICAgICAgICBpZiAoZ2V0aXRlbV9zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmdW5jID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgZ2V0aXRlbV9zdHIpOworICAgIGZ1bmMgPSBfUHlUeXBlX0xvb2t1cElkKFB5X1RZUEUoc2VsZiksICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CiAgICAgICAgIGlmICgoZiA9IFB5X1RZUEUoZnVuYyktPnRwX2Rlc2NyX2dldCkgPT0gTlVMTCkKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKQEAgLTQ4MDMsNiArNTA0Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CiAgICAgfQogICAgIFB5X1hERUNSRUYoYXJncyk7CkBAIC00ODE1LDE0ICs1MDYwLDEzIEBACiBzbG90X3NxX2Fzc19pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGl0ZW1fc3RyLCAqc2V0aXRlbV9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxpdGVtX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0aXRlbV9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxpdGVtX18iLCAmZGVsaXRlbV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIobikiLCBpbmRleCk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fZGVsaXRlbV9fLCAiKG4pIiwgaW5kZXgpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0aXRlbV9fIiwgJnNldGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKG5PKSIsIGluZGV4LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0aXRlbV9fLCAiKG5PKSIsIGluZGV4LCB2YWx1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC00ODM0LDEwICs1MDc4LDkgQEAKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlcywgKmFyZ3M7CiAgICAgaW50IHJlc3VsdCA9IC0xOworICAgIF9QeV9JREVOVElGSUVSKF9fY29udGFpbnNfXyk7CiAKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNvbnRhaW5zX3N0cjsKLQotICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgIl9fY29udGFpbnNfXyIsICZjb250YWluc19zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwogICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNDg2OCwxNCArNTExMSwxNCBAQAogc2xvdF9tcF9hc3Nfc3Vic2NyaXB0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGl0ZW1fc3RyLCAqc2V0aXRlbV9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxpdGVtX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0aXRlbV9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxpdGVtX18iLCAmZGVsaXRlbV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBrZXkpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGl0ZW1fXywgIihPKSIsIGtleSk7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19zZXRpdGVtX18iLCAmc2V0aXRlbV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBrZXksIHZhbHVlKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zZXRpdGVtX18sICIoT08pIiwga2V5LCB2YWx1ZSk7CisKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTQ4OTYsNyArNTEzOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9uYl9wb3dlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBQeU9iamVjdCAqbW9kdWx1cykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnBvd19zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19wb3dfXyk7CiAKICAgICBpZiAobW9kdWx1cyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc2xvdF9uYl9wb3dlcl9iaW5hcnkoc2VsZiwgb3RoZXIpOwpAQCAtNDkwNSwxMSArNTE0OCw5IEBACiAgICAgICAgc2xvdF9uYl9wb3dlciwgc28gY2hlY2sgYmVmb3JlIGNhbGxpbmcgc2VsZi5fX3Bvd19fLiAqLwogICAgIGlmIChQeV9UWVBFKHNlbGYpLT50cF9hc19udW1iZXIgIT0gTlVMTCAmJgogICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9hc19udW1iZXItPm5iX3Bvd2VyID09IHNsb3RfbmJfcG93ZXIpIHsKLSAgICAgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX3Bvd19fIiwgJnBvd19zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIG90aGVyLCBtb2R1bHVzKTsKKyAgICAgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fcG93X18sICIoT08pIiwgb3RoZXIsIG1vZHVsdXMpOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIFNMT1QwKHNsb3RfbmJfbmVnYXRpdmUsICJfX25lZ19fIikKQEAgLTQ5MjAsMTUgKzUxNjEsMTYgQEAKIHNsb3RfbmJfYm9vbChQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3M7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpib29sX3N0ciwgKmxlbl9zdHI7CiAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgIGludCB1c2luZ19sZW4gPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgIl9fYm9vbF9fIiwgJmJvb2xfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fYm9vbF9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2xlbl9fIiwgJmxlbl9zdHIpOworICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwogICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CiAgICAgICAgIHVzaW5nX2xlbiA9IDE7CkBAIC00OTYzLDggKzUyMDUsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfaW5kZXgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppbmRleF9zdHI7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX2luZGV4X18iLCAmaW5kZXhfc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2luZGV4X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sICIoKSIpOwogfQogCiAKQEAgLTQ5ODUsOCArNTIyNyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9uYl9pbnBsYWNlX3Bvd2VyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqIGFyZzEsIFB5T2JqZWN0ICphcmcyKQogewotICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsKLSAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX2lwb3dfXyIsICZjYWNoZV9zdHIsICIoIiAiTyIgIikiLCBhcmcxKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2lwb3dfXyk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faXBvd19fLCAiKCIgIk8iICIpIiwgYXJnMSk7CiB9CiBTTE9UMShzbG90X25iX2lucGxhY2VfbHNoaWZ0LCAiX19pbHNoaWZ0X18iLCBQeU9iamVjdCAqLCAiTyIpCiBTTE9UMShzbG90X25iX2lucGxhY2VfcnNoaWZ0LCAiX19pcnNoaWZ0X18iLCBQeU9iamVjdCAqLCAiTyIpCkBAIC01MDAzLDkgKzUyNDUsOSBAQAogc2xvdF90cF9yZXByKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcmVwcl9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19yZXByX18pOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fcmVwcl9fIiwgJnJlcHJfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX3JlcHJfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNTAyMCwyMyArNTI2MiwzMCBAQAogc2xvdF90cF9zdHIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdHJfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fc3RyX18pOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fc3RyX18iLCAmc3RyX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zdHJfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3M7CisgICAgICAgIC8qIFB5T2JqZWN0ICpyZXNzOyAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXMgPSBzbG90X3RwX3JlcHIoc2VsZik7CiAgICAgICAgIGlmICghcmVzKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3MgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocmVzLCBOVUxMKTsKKyAgICAgICAgLyogWFhYIHRoaXMgaXMgbm9uLXNlbnNpY2FsLiBXaHkgc2hvdWxkIHdlIHJldHVybgorICAgICAgICAgICBhIGJ5dGVzIG9iamVjdCBmcm9tIF9fc3RyX18uIElzIHRoaXMgY29kZSBldmVuCisgICAgICAgICAgIHVzZWQ/IC0gbXZsICovCisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyoKKyAgICAgICAgcmVzcyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhyZXMpOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmV0dXJuIHJlc3M7CisgICAgICAgICovCiAgICAgfQogfQogCkBAIC01MDQ0LDEwICs1MjkzLDkgQEAKIHNsb3RfdHBfaGFzaChQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmhhc2hfc3RyOwogICAgIFB5X3NzaXplX3QgaDsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2hhc2hfXyIsICZoYXNoX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19oYXNoX18pOwogCiAgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CkBAIC01MDkxLDggKzUzMzksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfY2FsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FsbF9zdHI7Ci0gICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2NhbGxfXyIsICZjYWxsX3N0cik7CisgICAgX1B5X0lERU5USUZJRVIoX19jYWxsX18pOworICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2NhbGxfXyk7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChtZXRoID09IE5VTEwpCkBAIC01MTE4LDkgKzUzNjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfZ2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cmlidXRlX3N0ciA9IE5VTEw7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX2dldGF0dHJpYnV0ZV9fIiwgJmdldGF0dHJpYnV0ZV9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBuYW1lKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19nZXRhdHRyaWJ1dGVfXywgIihPKSIsIG5hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTE0NiwyNiArNTM5MiwxNCBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHAgPSBQeV9UWVBFKHNlbGYpOwogICAgIFB5T2JqZWN0ICpnZXRhdHRyLCAqZ2V0YXR0cmlidXRlLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cmlidXRlX3N0ciA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRhdHRyX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRhdHRyX18pOwogCi0gICAgaWYgKGdldGF0dHJfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0YXR0cl9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRhdHRyX18iKTsKLSAgICAgICAgaWYgKGdldGF0dHJfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKGdldGF0dHJpYnV0ZV9zdHIgPT0gTlVMTCkgewotICAgICAgICBnZXRhdHRyaWJ1dGVfc3RyID0KLSAgICAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2dldGF0dHJpYnV0ZV9fIik7Ci0gICAgICAgIGlmIChnZXRhdHRyaWJ1dGVfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgLyogc3BlZWQgaGFjazogd2UgY291bGQgdXNlIGxvb2t1cF9tYXliZSwgYnV0IHRoYXQgd291bGQgcmVzb2x2ZSB0aGUKICAgICAgICBtZXRob2QgZnVsbHkgZm9yIGVhY2ggYXR0cmlidXRlIGxvb2t1cCBmb3IgY2xhc3NlcyB3aXRoCiAgICAgICAgX19nZXRhdHRyX18sIGV2ZW4gd2hlbiB0aGUgYXR0cmlidXRlIGlzIHByZXNlbnQuIFNvIHdlIHVzZQogICAgICAgIF9QeVR5cGVfTG9va3VwIGFuZCBjcmVhdGUgdGhlIG1ldGhvZCBvbmx5IHdoZW4gbmVlZGVkLCB3aXRoCiAgICAgICAgY2FsbF9hdHRyaWJ1dGUuICovCi0gICAgZ2V0YXR0ciA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRhdHRyX3N0cik7CisgICAgZ2V0YXR0ciA9IF9QeVR5cGVfTG9va3VwSWQodHAsICZQeUlkX19fZ2V0YXR0cl9fKTsKICAgICBpZiAoZ2V0YXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIC8qIE5vIF9fZ2V0YXR0cl9fIGhvb2s6IHVzZSBhIHNpbXBsZXIgZGlzcGF0Y2hlciAqLwogICAgICAgICB0cC0+dHBfZ2V0YXR0cm8gPSBzbG90X3RwX2dldGF0dHJvOwpAQCAtNTE3Nyw3ICs1NDExLDcgQEAKICAgICAgICBfX2dldGF0dHJfXywgZXZlbiB3aGVuIHNlbGYgaGFzIHRoZSBkZWZhdWx0IF9fZ2V0YXR0cmlidXRlX18KICAgICAgICBtZXRob2QuIFNvIHdlIHVzZSBfUHlUeXBlX0xvb2t1cCBhbmQgY3JlYXRlIHRoZSBtZXRob2Qgb25seSB3aGVuCiAgICAgICAgbmVlZGVkLCB3aXRoIGNhbGxfYXR0cmlidXRlLiAqLwotICAgIGdldGF0dHJpYnV0ZSA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRhdHRyaWJ1dGVfc3RyKTsKKyAgICBnZXRhdHRyaWJ1dGUgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldGF0dHJpYnV0ZV9fKTsKICAgICBpZiAoZ2V0YXR0cmlidXRlID09IE5VTEwgfHwKICAgICAgICAgKFB5X1RZUEUoZ2V0YXR0cmlidXRlKSA9PSAmUHlXcmFwcGVyRGVzY3JfVHlwZSAmJgogICAgICAgICAgKChQeVdyYXBwZXJEZXNjck9iamVjdCAqKWdldGF0dHJpYnV0ZSktPmRfd3JhcHBlZCA9PQpAQCAtNTIwMCw0MCArNTQzNCwzNyBAQAogc2xvdF90cF9zZXRhdHRybyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZGVsYXR0cl9zdHIsICpzZXRhdHRyX3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbGF0dHJfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19zZXRhdHRyX18pOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX2RlbGF0dHJfXyIsICZkZWxhdHRyX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihPKSIsIG5hbWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGF0dHJfXywgIihPKSIsIG5hbWUpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0YXR0cl9fIiwgJnNldGF0dHJfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19zZXRhdHRyX18sICIoT08pIiwgbmFtZSwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgY2hhciAqbmFtZV9vcFtdID0gewotICAgICJfX2x0X18iLAotICAgICJfX2xlX18iLAotICAgICJfX2VxX18iLAotICAgICJfX25lX18iLAotICAgICJfX2d0X18iLAotICAgICJfX2dlX18iLAorc3RhdGljIF9QeV9JZGVudGlmaWVyIG5hbWVfb3BbXSA9IHsKKyAgICB7MCwgIl9fbHRfXyIsIDB9LAorICAgIHswLCAiX19sZV9fIiwgMH0sCisgICAgezAsICJfX2VxX18iLCAwfSwKKyAgICB7MCwgIl9fbmVfXyIsIDB9LAorICAgIHswLCAiX19ndF9fIiwgMH0sCisgICAgezAsICJfX2dlX18iLCAwfQogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm9wX3N0cls2XTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsIG5hbWVfb3Bbb3BdLCAmb3Bfc3RyW29wXSk7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJm5hbWVfb3Bbb3BdKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG90aGVyKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNTI1MCw5ICs1NDgxLDkgQEAKIHNsb3RfdHBfaXRlcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKml0ZXJfc3RyLCAqZ2V0aXRlbV9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19pdGVyX18pOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9faXRlcl9fIiwgJml0ZXJfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYXJnczsKICAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwpAQCAtNTI2NCw3ICs1NDk1LDcgQEAKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19nZXRpdGVtX18iLCAmZ2V0aXRlbV9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCkBAIC01Mjc4LDggKzU1MDksOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfaXRlcm5leHQoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuZXh0X3N0cjsKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgIl9fbmV4dF9fIiwgJm5leHRfc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUyODcsMTQgKzU1MTgsOSBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHAgPSBQeV9UWVBFKHNlbGYpOwogICAgIFB5T2JqZWN0ICpnZXQ7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldF9fKTsKIAotICAgIGlmIChnZXRfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0X3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2dldF9fIik7Ci0gICAgICAgIGlmIChnZXRfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZ2V0ID0gX1B5VHlwZV9Mb29rdXAodHAsIGdldF9zdHIpOworICAgIGdldCA9IF9QeVR5cGVfTG9va3VwSWQodHAsICZQeUlkX19fZ2V0X18pOwogICAgIGlmIChnZXQgPT0gTlVMTCkgewogICAgICAgICAvKiBBdm9pZCBmdXJ0aGVyIHNsb3dkb3ducyAqLwogICAgICAgICBpZiAodHAtPnRwX2Rlc2NyX2dldCA9PSBzbG90X3RwX2Rlc2NyX2dldCkKQEAgLTUzMTMsMTQgKzU1MzksMTMgQEAKIHNsb3RfdHBfZGVzY3Jfc2V0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFyZ2V0LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbF9zdHIsICpzZXRfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsZXRlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0X18pOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX2RlbGV0ZV9fIiwgJmRlbF9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCB0YXJnZXQpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGV0ZV9fLCAiKE8pIiwgdGFyZ2V0KTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldF9fIiwgJnNldF9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoT08pIiwgdGFyZ2V0LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0X18sICIoT08pIiwgdGFyZ2V0LCB2YWx1ZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC01MzMwLDggKzU1NTUsOCBAQAogc3RhdGljIGludAogc2xvdF90cF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppbml0X3N0cjsKLSAgICBQeU9iamVjdCAqbWV0aCA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9faW5pdF9fIiwgJmluaXRfc3RyKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2luaXRfXyk7CisgICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19faW5pdF9fKTsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgaWYgKG1ldGggPT0gTlVMTCkKQEAgLTUzNTQsMTcgKzU1NzksMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5ld19zdHI7CiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKm5ld2FyZ3MsICp4OwogICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBfUHlfSURFTlRJRklFUihfX25ld19fKTsKIAotICAgIGlmIChuZXdfc3RyID09IE5VTEwpIHsKLSAgICAgICAgbmV3X3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25ld19fIik7Ci0gICAgICAgIGlmIChuZXdfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIoKFB5T2JqZWN0ICopdHlwZSwgbmV3X3N0cik7CisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopdHlwZSwgJlB5SWRfX19uZXdfXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtNTM4OCw3ICs1NjA4LDcgQEAKIHN0YXRpYyB2b2lkCiBzbG90X3RwX2RlbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbF9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsX18pOwogICAgIFB5T2JqZWN0ICpkZWwsICpyZXM7CiAgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKIApAQCAtNTQwMCw3ICs1NjIwLDcgQEAKICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKIAogICAgIC8qIEV4ZWN1dGUgX19kZWxfXyBtZXRob2QsIGlmIGFueS4gKi8KLSAgICBkZWwgPSBsb29rdXBfbWF5YmUoc2VsZiwgIl9fZGVsX18iLCAmZGVsX3N0cik7CisgICAgZGVsID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fZGVsX18pOwogICAgIGlmIChkZWwgIT0gTlVMTCkgewogICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChkZWwsIE5VTEwpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCkBAIC02MTE1LDcgKzYzMzUsNyBAQAogICAgICAgICAvKiBXZSB3YW50IF9fY2xhc3NfXyB0byByZXR1cm4gdGhlIGNsYXNzIG9mIHRoZSBzdXBlciBvYmplY3QKICAgICAgICAgICAgKGkuZS4gc3VwZXIsIG9yIGEgc3ViY2xhc3MpLCBub3QgdGhlIGNsYXNzIG9mIHN1LT5vYmouICovCiAgICAgICAgIHNraXAgPSAoUHlVbmljb2RlX0NoZWNrKG5hbWUpICYmCi0gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSkgPT0gOSAmJgorICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gOSAmJgogICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIl9fY2xhc3NfXyIpID09IDApOwogICAgIH0KIApAQCAtNjE0MCw2ICs2MzYwLDkgQEAKICAgICAgICAgfQogICAgICAgICBpKys7CiAgICAgICAgIHJlcyA9IE5VTEw7CisgICAgICAgIC8qIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIG1ybyBiZWNhdXNlIHN0YXJ0dHlwZS0+dHBfbXJvIGNhbiBiZQorICAgICAgICAgICByZXBsYWNlZCBkdXJpbmcgUHlEaWN0X0dldEl0ZW0oZGljdCwgbmFtZSkgICovCisgICAgICAgIFB5X0lOQ1JFRihtcm8pOwogICAgICAgICBmb3IgKDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShtcm8sIGkpOwogICAgICAgICAgICAgaWYgKFB5VHlwZV9DaGVjayh0bXApKQpAQCAtNjE2NCw5ICs2Mzg3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgICAgICAgICByZXMgPSB0bXA7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtcm8pOwogICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG1ybyk7CiAgICAgfQogICAgIHJldHVybiBQeU9iamVjdF9HZW5lcmljR2V0QXR0cihzZWxmLCBuYW1lKTsKIH0KQEAgLTYxNzYsNyArNjQwMSw3IEBACiB7CiAgICAgLyogQ2hlY2sgdGhhdCBhIHN1cGVyKCkgY2FsbCBtYWtlcyBzZW5zZS4gIFJldHVybiBhIHR5cGUgb2JqZWN0LgogCi0gICAgICAgb2JqIGNhbiBiZSBhIG5ldy1zdHlsZSBjbGFzcywgb3IgYW4gaW5zdGFuY2Ugb2Ygb25lOgorICAgICAgIG9iaiBjYW4gYmUgYSBjbGFzcywgb3IgYW4gaW5zdGFuY2Ugb2Ygb25lOgogCiAgICAgICAgLSBJZiBpdCBpcyBhIGNsYXNzLCBpdCBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgJ3R5cGUnLiAgICAgIFRoaXMgY2FzZSBpcwogICAgICAgICAgdXNlZCBmb3IgY2xhc3MgbWV0aG9kczsgdGhlIHJldHVybiB2YWx1ZSBpcyBvYmouCkBAIC02MjAyLDE3ICs2NDI3LDkgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIFRyeSB0aGUgc2xvdyB3YXkgKi8KLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpjbGFzc19zdHIgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqY2xhc3NfYXR0cjsKIAotICAgICAgICBpZiAoY2xhc3Nfc3RyID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNsYXNzX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKLSAgICAgICAgICAgIGlmIChjbGFzc19zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIGNsYXNzX2F0dHIgPSBQeU9iamVjdF9HZXRBdHRyKG9iaiwgY2xhc3Nfc3RyKTsKLQorICAgICAgICBjbGFzc19hdHRyID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fY2xhc3NfXyk7CiAgICAgICAgIGlmIChjbGFzc19hdHRyICE9IE5VTEwgJiYKICAgICAgICAgICAgIFB5VHlwZV9DaGVjayhjbGFzc19hdHRyKSAmJgogICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKWNsYXNzX2F0dHIgIT0gUHlfVFlQRShvYmopKQpAQCAtNjI4OSwxOCArNjUwNiwxOCBAQAogICAgICAgICBQeUNvZGVPYmplY3QgKmNvID0gZi0+Zl9jb2RlOwogICAgICAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgICAgIGlmIChjbyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBubyBjb2RlIG9iamVjdCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmIChjby0+Y29fYXJnY291bnQgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogbm8gYXJndW1lbnRzIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgb2JqID0gZi0+Zl9sb2NhbHNwbHVzWzBdOwogICAgICAgICBpZiAob2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGFyZ1swXSBkZWxldGVkIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTYzMTksMTggKzY1MzYsMTggQEAKICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IGYtPmZfbG9jYWxzcGx1c1tpbmRleF07CiAgICAgICAgICAgICAgICAgaWYgKGNlbGwgPT0gTlVMTCB8fCAhUHlDZWxsX0NoZWNrKGNlbGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogYmFkIF9fY2xhc3NfXyBjZWxsIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdHlwZSA9IChQeVR5cGVPYmplY3QgKikgUHlDZWxsX0dFVChjZWxsKTsKICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogZW1wdHkgX19jbGFzc19fIGNlbGwiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIVB5VHlwZV9DaGVjayh0eXBlKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IF9fY2xhc3NfXyBpcyBub3QgYSB0eXBlICglcykiLAogICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodHlwZSktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC02MzM5LDcgKzY1NTYsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICh0eXBlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IF9fY2xhc3NfXyBjZWxsIG5vdCBmb3VuZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVzbG90cy5pbmMgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKaW5kZXggNTE4NmRjZi4uY2FhMWUwMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jCisrKyBiL09iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtMSw0ICsxLDQgQEAKLS8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgJFJldmlzaW9uJCAqLworLyogR2VuZXJhdGVkIGJ5IHR5cGVzbG90cy5weSAqLwogMCwKIDAsCiBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19tYXBwaW5nLm1wX2Fzc19zdWJzY3JpcHQpLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMucHkgYi9PYmplY3RzL3R5cGVzbG90cy5weQppbmRleCAyZTAwYzgwLi5iMjRjN2Y0IDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVzbG90cy5weQorKysgYi9PYmplY3RzL3R5cGVzbG90cy5weQpAQCAtMyw3ICszLDcgQEAKIAogaW1wb3J0IHN5cywgcmUKIAotcHJpbnQoIi8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgJFJldmlzaW9uJCAqLyIpCitwcmludCgiLyogR2VuZXJhdGVkIGJ5IHR5cGVzbG90cy5weSAqLyIpCiByZXMgPSB7fQogZm9yIGxpbmUgaW4gc3lzLnN0ZGluOgogICAgIG0gPSByZS5tYXRjaCgiI2RlZmluZSBQeV8oW2Etel9dKykgKFswLTldKykiLCBsaW5lKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYyBiL09iamVjdHMvdW5pY29kZWN0eXBlLmMKaW5kZXggOWY2YWM4OS4uYTU3MmMxMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYworKysgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCkBAIC0yMSwxMyArMjEsMjAgQEAKICNkZWZpbmUgWElEX1NUQVJUX01BU0sgMHgxMDAKICNkZWZpbmUgWElEX0NPTlRJTlVFX01BU0sgMHgyMDAKICNkZWZpbmUgUFJJTlRBQkxFX01BU0sgMHg0MDAKLSNkZWZpbmUgTk9ERUxUQV9NQVNLIDB4ODAwCi0jZGVmaW5lIE5VTUVSSUNfTUFTSyAweDEwMDAKKyNkZWZpbmUgTlVNRVJJQ19NQVNLIDB4ODAwCisjZGVmaW5lIENBU0VfSUdOT1JBQkxFX01BU0sgMHgxMDAwCisjZGVmaW5lIENBU0VEX01BU0sgMHgyMDAwCisjZGVmaW5lIEVYVEVOREVEX0NBU0VfTUFTSyAweDQwMDAKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIGNvbnN0IFB5X1VDUzQgdXBwZXI7Ci0gICAgY29uc3QgUHlfVUNTNCBsb3dlcjsKLSAgICBjb25zdCBQeV9VQ1M0IHRpdGxlOworICAgIC8qIAorICAgICAgIFRoZXNlIGFyZSBlaXRoZXIgZGVsdGFzIHRvIHRoZSBjaGFyYWN0ZXIgb3Igb2Zmc2V0cyBpbgorICAgICAgIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlLgorICAgICovCisgICAgY29uc3QgaW50IHVwcGVyOworICAgIGNvbnN0IGludCBsb3dlcjsKKyAgICBjb25zdCBpbnQgdGl0bGU7CisgICAgLyogTm90ZSBpZiBtb3JlIGZsYWcgc3BhY2UgaXMgbmVlZGVkLCBkZWNpbWFsIGFuZCBkaWdpdCBjb3VsZCBiZSB1bmlmaWVkLiAqLwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVjaW1hbDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRpZ2l0OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IGZsYWdzOwpAQCAtNTcsMTUgKzY0LDEwIEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9UaXRsZWNhc2UocmVnaXN0ZXIgUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPnRpdGxlOwogCi0gICAgaWYgKGN0eXBlLT5mbGFncyAmIE5PREVMVEFfTUFTSykKLSAgICAgICAgcmV0dXJuIGRlbHRhOwotCi0gICAgaWYgKGRlbHRhID49IDMyNzY4KQotICAgICAgICAgICAgZGVsdGEgLT0gNjU1MzY7Ci0KLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbY3R5cGUtPnRpdGxlICYgMHhGRkZGXTsKKyAgICByZXR1cm4gY2ggKyBjdHlwZS0+dGl0bGU7CiB9CiAKIC8qIFJldHVybnMgMSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzIGhhdmluZyB0aGUgY2F0ZWdvcnkgJ0x0JywgMApAQCAtMTg4LDEyICsxOTAsMTAgQEAKIFB5X1VDUzQgX1B5VW5pY29kZV9Ub1VwcGVyY2FzZShQeV9VQ1M0IGNoKQogewogICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKLSAgICBpbnQgZGVsdGEgPSBjdHlwZS0+dXBwZXI7Ci0gICAgaWYgKGN0eXBlLT5mbGFncyAmIE5PREVMVEFfTUFTSykKLSAgICAgICAgcmV0dXJuIGRlbHRhOwotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotICAgIHJldHVybiBjaCArIGRlbHRhOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT51cHBlciAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPnVwcGVyOwogfQogCiAvKiBSZXR1cm5zIHRoZSBsb3dlcmNhc2UgVW5pY29kZSBjaGFyYWN0ZXJzIGNvcnJlc3BvbmRpbmcgdG8gY2ggb3IganVzdApAQCAtMjAyLDEyICsyMDIsODcgQEAKIFB5X1VDUzQgX1B5VW5pY29kZV9Ub0xvd2VyY2FzZShQeV9VQ1M0IGNoKQogewogICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKLSAgICBpbnQgZGVsdGEgPSBjdHlwZS0+bG93ZXI7Ci0gICAgaWYgKGN0eXBlLT5mbGFncyAmIE5PREVMVEFfTUFTSykKLSAgICAgICAgcmV0dXJuIGRlbHRhOwotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotICAgIHJldHVybiBjaCArIGRlbHRhOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT5sb3dlciAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPmxvd2VyOworfQorCitpbnQgX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykgeworICAgICAgICBpbnQgaW5kZXggPSBjdHlwZS0+bG93ZXIgJiAweEZGRkY7CisgICAgICAgIGludCBuID0gY3R5cGUtPmxvd2VyID4+IDI0OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXNbMF0gPSBjaCArIGN0eXBlLT5sb3dlcjsKKyAgICByZXR1cm4gMTsKK30KKworaW50IF9QeVVuaWNvZGVfVG9UaXRsZUZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spIHsKKyAgICAgICAgaW50IGluZGV4ID0gY3R5cGUtPnRpdGxlICYgMHhGRkZGOworICAgICAgICBpbnQgbiA9IGN0eXBlLT50aXRsZSA+PiAyNDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmVzWzBdID0gY2ggKyBjdHlwZS0+dGl0bGU7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKSB7CisgICAgICAgIGludCBpbmRleCA9IGN0eXBlLT51cHBlciAmIDB4RkZGRjsKKyAgICAgICAgaW50IG4gPSBjdHlwZS0+dXBwZXIgPj4gMjQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJlc1swXSA9IGNoICsgY3R5cGUtPnVwcGVyOworICAgIHJldHVybiAxOworfQorCitpbnQgX1B5VW5pY29kZV9Ub0ZvbGRlZEZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0sgJiYgKGN0eXBlLT5sb3dlciA+PiAyMCkgJiA3KSB7CisgICAgICAgIGludCBpbmRleCA9IChjdHlwZS0+bG93ZXIgJiAweEZGRkYpICsgKGN0eXBlLT5sb3dlciA+PiAyNCk7CisgICAgICAgIGludCBuID0gKGN0eXBlLT5sb3dlciA+PiAyMCkgJiA3OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChjaCwgcmVzKTsKK30KKworaW50IF9QeVVuaWNvZGVfSXNDYXNlZChQeV9VQ1M0IGNoKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIHJldHVybiAoY3R5cGUtPmZsYWdzICYgQ0FTRURfTUFTSykgIT0gMDsKK30KKworaW50IF9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKFB5X1VDUzQgY2gpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgcmV0dXJuIChjdHlwZS0+ZmxhZ3MgJiBDQVNFX0lHTk9SQUJMRV9NQVNLKSAhPSAwOwogfQogCiAvKiBSZXR1cm5zIDEgZm9yIFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIGNhdGVnb3J5ICdMbCcsICdMdScsICdMdCcsCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCmluZGV4IGY1OWRiMzYuLjBkYTU2NWEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCkBAIC0xLDggKzEsNyBAQAogLyoKIAogVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBvcmlnaW5hbCBjb2RlIGJ5IEZyZWRyaWsgTHVuZGgsCi1tb2RpZmllZCBieSBNYXJjLUFuZHJlIExlbWJ1cmcgPG1hbEBsZW1idXJnLmNvbT4gYWNjb3JkaW5nIHRvIHRoZQotVW5pY29kZSBJbnRlZ3JhdGlvbiBQcm9wb3NhbCAoc2VlIGZpbGUgTWlzYy91bmljb2RlLnR4dCkuCittb2RpZmllZCBieSBNYXJjLUFuZHJlIExlbWJ1cmcgPG1hbEBsZW1idXJnLmNvbT4uCiAKIE1ham9yIHNwZWVkIHVwZ3JhZGVzIHRvIHRoZSBtZXRob2QgaW1wbGVtZW50YXRpb25zIGF0IHRoZSBSZXlramF2aWsKIE5lZWRGb3JTcGVlZCBzcHJpbnQsIGJ5IEZyZWRyaWsgTHVuZGggYW5kIEFuZHJldyBEYWxrZS4KQEAgLTQyLDM0ICs0MSwxMiBAQAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAidWNuaGFzaC5oIgorI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAotLyogTGltaXQgZm9yIHRoZSBVbmljb2RlIG9iamVjdCBmcmVlIGxpc3QgKi8KLQotI2RlZmluZSBQeVVuaWNvZGVfTUFYRlJFRUxJU1QgICAgICAgMTAyNAotCi0vKiBMaW1pdCBmb3IgdGhlIFVuaWNvZGUgb2JqZWN0IGZyZWUgbGlzdCBzdGF5IGFsaXZlIG9wdGltaXphdGlvbi4KLQotICAgVGhlIGltcGxlbWVudGF0aW9uIHdpbGwga2VlcCBhbGxvY2F0ZWQgVW5pY29kZSBtZW1vcnkgaW50YWN0IGZvcgotICAgYWxsIG9iamVjdHMgb24gdGhlIGZyZWUgbGlzdCBoYXZpbmcgYSBzaXplIGxlc3MgdGhhbiB0aGlzCi0gICBsaW1pdC4gVGhpcyByZWR1Y2VzIG1hbGxvYygpIG92ZXJoZWFkIGZvciBzbWFsbCBVbmljb2RlIG9iamVjdHMuCi0KLSAgIEF0IHdvcnN0IHRoaXMgd2lsbCByZXN1bHQgaW4gUHlVbmljb2RlX01BWEZSRUVMSVNUICoKLSAgIChzaXplb2YoUHlVbmljb2RlT2JqZWN0KSArIEtFRVBBTElWRV9TSVpFX0xJTUlUICsKLSAgIG1hbGxvYygpLW92ZXJoZWFkKSBieXRlcyBvZiB1bnVzZWQgZ2FyYmFnZS4KLQotICAgU2V0dGluZyB0aGUgbGltaXQgdG8gMCBlZmZlY3RpdmVseSB0dXJucyB0aGUgZmVhdHVyZSBvZmYuCi0KLSAgIE5vdGU6IFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgISBJZiB5b3UgZ2V0IGNvcmUgZHVtcHMgd2hlbgotICAgdXNpbmcgVW5pY29kZSBvYmplY3RzLCB0dXJuIHRoaXMgZmVhdHVyZSBvZmYuCi0KLSovCi0KLSNkZWZpbmUgS0VFUEFMSVZFX1NJWkVfTElNSVQgICAgICAgOQotCiAvKiBFbmRpYW5uZXNzIHN3aXRjaGVzOyBkZWZhdWx0cyB0byBsaXR0bGUgZW5kaWFuICovCiAKICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KQEAgLTkwLDYgKzY3LDExMCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyogTWF4aW11bSBjb2RlIHBvaW50IG9mIFVuaWNvZGUgNi4wOiAweDEwZmZmZiAoMSwxMTQsMTExKSAqLworI2RlZmluZSBNQVhfVU5JQ09ERSAweDEwZmZmZgorCisjaWZkZWYgUHlfREVCVUcKKyMgIGRlZmluZSBfUHlVbmljb2RlX0NIRUNLKG9wKSBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kob3AsIDApCisjZWxzZQorIyAgZGVmaW5lIF9QeVVuaWNvZGVfQ0hFQ0sob3ApIFB5VW5pY29kZV9DaGVjayhvcCkKKyNlbmRpZgorCisjZGVmaW5lIF9QeVVuaWNvZGVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApKS0+dXRmOCkKKyNkZWZpbmUgUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgKChjaGFyKikoKFB5QVNDSUlPYmplY3QqKShvcCkgKyAxKSkgOiAgICAgICAgICBcCisgICAgICAgICBfUHlVbmljb2RlX1VURjgob3ApKQorI2RlZmluZSBfUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPnV0ZjhfbGVuZ3RoKQorI2RlZmluZSBQeVVuaWNvZGVfVVRGOF9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgICAgICAgICAgXAorICAgICBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgPyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAoKFB5QVNDSUlPYmplY3QqKShvcCkpLT5sZW5ndGggOiAgICAgICAgICAgICAgIFwKKyAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgob3ApKQorI2RlZmluZSBfUHlVbmljb2RlX1dTVFIob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCopKG9wKSktPndzdHIpCisjZGVmaW5lIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kikob3ApKS0+d3N0cl9sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPmxlbmd0aCkKKyNkZWZpbmUgX1B5VW5pY29kZV9TVEFURShvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUpCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTSChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPmhhc2gpCisjZGVmaW5lIF9QeVVuaWNvZGVfS0lORChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUua2luZCkKKyNkZWZpbmUgX1B5VW5pY29kZV9HRVRfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfREFUQV9BTlkob3ApICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeVVuaWNvZGVPYmplY3QqKShvcCkpLT5kYXRhLmFueSkKKworLyogT3B0aW1pemVkIHZlcnNpb24gb2YgUHlfTUFYKCkgdG8gY29tcHV0ZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXI6CisgICB1c2UgaXQgd2hlbiB5b3VyIGFyZSBjb21wdXRpbmcgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBQeVVuaWNvZGVfTmV3KCkgKi8KKyNkZWZpbmUgTUFYX01BWENIQVIobWF4Y2hhcjEsIG1heGNoYXIyKSAgICAgICAgICAgICAgICAgXAorICAgICgobWF4Y2hhcjEpIHwgKG1heGNoYXIyKSkKKworI3VuZGVmIFB5VW5pY29kZV9SRUFEWQorI2RlZmluZSBQeVVuaWNvZGVfUkVBRFkob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFB5VW5pY29kZV9JU19SRUFEWShvcCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgMCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfUHlVbmljb2RlX1JlYWR5KG9wKSkpCisKKyNkZWZpbmUgX1B5VW5pY29kZV9TSEFSRV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApKSwgICAgICAgICAgIFwKKyAgICAgKF9QeVVuaWNvZGVfVVRGOChvcCkgPT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9TSEFSRV9XU1RSKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKworLyogdHJ1ZSBpZiB0aGUgVW5pY29kZSBvYmplY3QgaGFzIGFuIGFsbG9jYXRlZCBVVEYtOCBtZW1vcnkgYmxvY2sKKyAgIChub3Qgc2hhcmVkIHdpdGggb3RoZXIgZGF0YSkgKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkob3ApICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICYmIF9QeVVuaWNvZGVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgJiYgX1B5VW5pY29kZV9VVEY4KG9wKSAhPSBQeVVuaWNvZGVfREFUQShvcCkpKQorCisvKiB0cnVlIGlmIHRoZSBVbmljb2RlIG9iamVjdCBoYXMgYW4gYWxsb2NhdGVkIHdzdHIgbWVtb3J5IGJsb2NrCisgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoX1B5VW5pY29kZV9XU1RSKG9wKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoIVB5VW5pY29kZV9JU19SRUFEWShvcCkgfHwgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICBfUHlVbmljb2RlX1dTVFIob3ApICE9IFB5VW5pY29kZV9EQVRBKG9wKSkpKQorCisvKiBHZW5lcmljIGhlbHBlciBtYWNybyB0byBjb252ZXJ0IGNoYXJhY3RlcnMgb2YgZGlmZmVyZW50IHR5cGVzLgorICAgZnJvbV90eXBlIGFuZCB0b190eXBlIGhhdmUgdG8gYmUgdmFsaWQgdHlwZSBuYW1lcywgYmVnaW4gYW5kIGVuZAorICAgYXJlIHBvaW50ZXJzIHRvIHRoZSBzb3VyY2UgY2hhcmFjdGVycyB3aGljaCBzaG91bGQgYmUgb2YgdHlwZQorICAgImZyb21fdHlwZSAqIi4gIHRvIGlzIGEgcG9pbnRlciBvZiB0eXBlICJ0b190eXBlICoiIGFuZCBwb2ludHMgdG8gdGhlCisgICBidWZmZXIgd2hlcmUgdGhlIHJlc3VsdCBjaGFyYWN0ZXJzIGFyZSB3cml0dGVuIHRvLiAqLworI2RlZmluZSBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoZnJvbV90eXBlLCB0b190eXBlLCBiZWdpbiwgZW5kLCB0bykgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHRvX3R5cGUgKl90byA9ICh0b190eXBlICopIHRvOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfaXRlciA9IChiZWdpbik7ICAgICAgICAgICAgICAgXAorICAgICAgICBjb25zdCBmcm9tX3R5cGUgKl9lbmQgPSAoZW5kKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgbiA9IChfZW5kKSAtIChfaXRlcik7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfdW5yb2xsZWRfZW5kID0gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2l0ZXIgKyBfUHlfU0laRV9ST1VORF9ET1dOKG4sIDQpOyAgICAgICAgICBcCisgICAgICAgIHdoaWxlIChfaXRlciA8IChfdW5yb2xsZWRfZW5kKSkgeyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1swXSA9ICh0b190eXBlKSBfaXRlclswXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzFdID0gKHRvX3R5cGUpIF9pdGVyWzFdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bMl0gPSAodG9fdHlwZSkgX2l0ZXJbMl07ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1szXSA9ICh0b190eXBlKSBfaXRlclszXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX2l0ZXIgKz0gNDsgX3RvICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgd2hpbGUgKF9pdGVyIDwgKF9lbmQpKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKl90bysrID0gKHRvX3R5cGUpICpfaXRlcisrOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKwogLyogVGhpcyBkaWN0aW9uYXJ5IGhvbGRzIGFsbCBpbnRlcm5lZCB1bmljb2RlIHN0cmluZ3MuICBOb3RlIHRoYXQgcmVmZXJlbmNlcwogICAgdG8gc3RyaW5ncyBpbiB0aGlzIGRpY3Rpb25hcnkgYXJlICpub3QqIGNvdW50ZWQgaW4gdGhlIHN0cmluZydzIG9iX3JlZmNudC4KICAgIFdoZW4gdGhlIGludGVybmVkIHN0cmluZyByZWFjaGVzIGEgcmVmY250IG9mIDAgdGhlIHN0cmluZyBkZWFsbG9jYXRpb24KQEAgLTEwMCwxNiArMTgxLDE1IEBACiAqLwogc3RhdGljIFB5T2JqZWN0ICppbnRlcm5lZDsKIAotLyogRnJlZSBsaXN0IGZvciBVbmljb2RlIG9iamVjdHMgKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKmZyZWVfbGlzdDsKLXN0YXRpYyBpbnQgbnVtZnJlZTsKLQogLyogVGhlIGVtcHR5IFVuaWNvZGUgb2JqZWN0IGlzIHNoYXJlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLiAqLwotc3RhdGljIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZV9lbXB0eTsKK3N0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbXB0eTsKKworLyogTGlzdCBvZiBzdGF0aWMgc3RyaW5ncy4gKi8KK3N0YXRpYyBfUHlfSWRlbnRpZmllciAqc3RhdGljX3N0cmluZ3M7CiAKIC8qIFNpbmdsZSBjaGFyYWN0ZXIgVW5pY29kZSBzdHJpbmdzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGFyZSBiZWluZwogICAgc2hhcmVkIGFzIHdlbGwuICovCi1zdGF0aWMgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlX2xhdGluMVsyNTZdOworc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2xhdGluMVsyNTZdOwogCiAvKiBGYXN0IGRldGVjdGlvbiBvZiB0aGUgbW9zdCBmcmVxdWVudCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKi8KIGNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X2FzY2lpX3doaXRlc3BhY2VbXSA9IHsKQEAgLTE0MiwxNiArMjIyLDMxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogfTsKIAotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisvKiBmb3J3YXJkICovCitzdGF0aWMgUHlVbmljb2RlT2JqZWN0ICpfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCk7CitzdGF0aWMgUHlPYmplY3QqIGdldF9sYXRpbjFfY2hhcih1bnNpZ25lZCBjaGFyIGNoKTsKK3N0YXRpYyBpbnQgdW5pY29kZV9tb2RpZmlhYmxlKFB5T2JqZWN0ICp1bmljb2RlKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tVUNTMShjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpOworc3RhdGljIFB5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbVVDUzIoY29uc3QgUHlfVUNTMiAqcywgUHlfc3NpemVfdCBzaXplKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21VQ1M0KGNvbnN0IFB5X1VDUzQgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCiAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywgUHlfc3NpemVfdCAqbmV3cG9zKTsKIAotc3RhdGljIHZvaWQgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CitzdGF0aWMgdm9pZAorcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAogLyogU2FtZSBmb3IgbGluZWJyZWFrcyAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CkBAIC0xODEsNyArMjc2LDggQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwCiB9OwogCi0KKy8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgorICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCiBQeVVuaWNvZGVfR2V0TWF4KHZvaWQpCiB7CkBAIC0xOTQsNiArMjkwLDIyNCBAQAogI2VuZGlmCiB9CiAKKyNpZmRlZiBQeV9ERUJVRworaW50CitfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koUHlPYmplY3QgKm9wLCBpbnQgY2hlY2tfY29udGVudCkKK3sKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaTsKKyAgICB1bnNpZ25lZCBpbnQga2luZDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKTsKKworICAgIGFzY2lpID0gKFB5QVNDSUlPYmplY3QgKilvcDsKKyAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7CisKKyAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpID09IDEgJiYgYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkgeworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICpjb21wYWN0ID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvcDsKKyAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkgeworICAgICAgICAgICAgZGF0YSA9IGNvbXBhY3QgKyAxOworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmFzY2lpID09IDApOworICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAxKTsKKyAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOCAhPSBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSA9IChQeVVuaWNvZGVPYmplY3QgKilvcDsKKworICAgICAgICAgICAgZGF0YSA9IHVuaWNvZGUtPmRhdGEuYW55OworICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPmxlbmd0aCA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPmhhc2ggPT0gLTEpOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmFzY2lpID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5pbnRlcm5lZCA9PSBTU1RBVEVfTk9UX0lOVEVSTkVEKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPndzdHIgIT0gTlVMTCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGRhdGEgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPnV0ZjggPT0gTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuY29tcGFjdCA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDEpOworICAgICAgICAgICAgICAgIGFzc2VydChkYXRhICE9IE5VTEwpOworICAgICAgICAgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4ID09IGRhdGEpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjhfbGVuZ3RoID09IGFzY2lpLT5sZW5ndGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOCAhPSBkYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICAgICAgaWYgKAorI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgICAgICAgICBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisjZWxzZQorICAgICAgICAgICAgICAgIGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQKKyNlbmRpZgorICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+d3N0ciA9PSBkYXRhKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+d3N0cl9sZW5ndGggPT0gYXNjaWktPmxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPndzdHIgIT0gZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29tcGFjdC0+dXRmOCA9PSBOVUxMKQorICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPnV0ZjhfbGVuZ3RoID09IDApOworICAgICAgICBpZiAoYXNjaWktPndzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT53c3RyX2xlbmd0aCA9PSAwKTsKKyAgICB9CisgICAgLyogY2hlY2sgdGhhdCB0aGUgYmVzdCBraW5kIGlzIHVzZWQgKi8KKyAgICBpZiAoY2hlY2tfY29udGVudCAmJiBraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgICAgICB2b2lkICpkYXRhOworICAgICAgICBQeV9VQ1M0IGNoOworCisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShhc2NpaSk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgYXNjaWktPmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgaWYgKGNoID4gbWF4Y2hhcikKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gY2g7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkgPT0gMCkgeworICAgICAgICAgICAgICAgIGFzc2VydChtYXhjaGFyID49IDEyOCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPD0gMjU1KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA8IDEyOCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPj0gMHgxMDApOworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPD0gMHhGRkZGKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyID49IDB4MTAwMDApOworICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPD0gTUFYX1VOSUNPREUpOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBhc2NpaS0+bGVuZ3RoKSA9PSAwKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHRfd2NoYXIoUHlPYmplY3QgKnVuaWNvZGUpCit7CisjaWZuZGVmIFB5X0RFQlVHCisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBhc3NlcnQoUHlfUkVGQ05UKHVuaWNvZGUpID09IDEpOworCisgICAgbGVuID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICB3Y2hhcl90IGNoID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpWzBdOworICAgICAgICBpZiAoY2ggPCAyNTYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsYXRpbjFfY2hhciA9IGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gbGF0aW4xX2NoYXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoX1B5VW5pY29kZV9SZWFkeSh1bmljb2RlKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICAvKiBkb24ndCBtYWtlIHRoZSByZXN1bHQgcmVhZHkgaW4gZGVidWcgbW9kZSB0byBlbnN1cmUgdGhhdCB0aGUgY2FsbGVyCisgICAgICAgbWFrZXMgdGhlIHN0cmluZyByZWFkeSBiZWZvcmUgdXNpbmcgaXQgKi8KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyNlbmRpZgorICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF9yZWFkeShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICBpZiAodW5pY29kZSAhPSB1bmljb2RlX2VtcHR5KSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorCisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIDApOworICAgICAgICBpZiAoY2ggPCAyNTYpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsYXRpbjFfY2hhciA9IHVuaWNvZGVfbGF0aW4xW2NoXTsKKyAgICAgICAgICAgIGlmIChsYXRpbjFfY2hhciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgIT0gbGF0aW4xX2NoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGxhdGluMV9jaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbGF0aW4xX2NoYXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZSk7CisgICAgICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbY2hdID0gdW5pY29kZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdChQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgaWYgKFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3JlYWR5KHVuaWNvZGUpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3djaGFyKHVuaWNvZGUpOworfQorCitzdGF0aWMgUHlPYmplY3QqCit1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICAvKiBTdWJ0eXBlIC0tIHJldHVybiBnZW51aW5lIHVuaWNvZGUgc3RyaW5nIHdpdGggdGhlIHNhbWUgdmFsdWUuICovCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0NvcHkodW5pY29kZSk7Cit9CisKKyNpZmRlZiBIQVZFX01CQ1MKK3N0YXRpYyBPU1ZFUlNJT05JTkZPRVggd2ludmVyOworI2VuZGlmCisKIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC0yMjMsNyArNTM3LDggQEAKICAgICAoKGNoKSA8IDEyOFUgPyBhc2NpaV9saW5lYnJlYWtbKGNoKV0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKEJMT09NKGJsb29tX2xpbmVicmVhaywgKGNoKSkgJiYgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkpKQogCi1QeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykgbWFrZV9ibG9vbV9tYXNrKFB5X1VOSUNPREUqIHB0ciwgUHlfc3NpemVfdCBsZW4pCitQeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKK21ha2VfYmxvb21fbWFzayhpbnQga2luZCwgdm9pZCogcHRyLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICAvKiBjYWxjdWxhdGUgc2ltcGxlIGJsb29tLXN0eWxlIGJpdG1hc2sgZm9yIGEgZ2l2ZW4gdW5pY29kZSBzdHJpbmcgKi8KIApAQCAtMjMyLDc2ICs1NDcsMjUzIEBACiAKICAgICBtYXNrID0gMDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgIEJMT09NX0FERChtYXNrLCBwdHJbaV0pOworICAgICAgICBCTE9PTV9BREQobWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgcHRyLCBpKSk7CiAKICAgICByZXR1cm4gbWFzazsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkgdW5pY29kZV9tZW1iZXIoUHlfVU5JQ09ERSBjaHIsIFB5X1VOSUNPREUqIHNldCwgUHlfc3NpemVfdCBzZXRsZW4pCi17Ci0gICAgUHlfc3NpemVfdCBpOworI2RlZmluZSBCTE9PTV9NRU1CRVIobWFzaywgY2hyLCBzdHIpIFwKKyAgICAoQkxPT00obWFzaywgY2hyKSBcCisgICAgICYmIChQeVVuaWNvZGVfRmluZENoYXIoc3RyLCBjaHIsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksIDEpID49IDApKQogCi0gICAgZm9yIChpID0gMDsgaSA8IHNldGxlbjsgaSsrKQotICAgICAgICBpZiAoc2V0W2ldID09IGNocikKLSAgICAgICAgICAgIHJldHVybiAxOworLyogQ29tcGlsYXRpb24gb2YgdGVtcGxhdGVkIHJvdXRpbmVzICovCiAKLSAgICByZXR1cm4gMDsKLX0KKyNpbmNsdWRlICJzdHJpbmdsaWIvYXNjaWlsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKIAotI2RlZmluZSBCTE9PTV9NRU1CRVIobWFzaywgY2hyLCBzZXQsIHNldGxlbikgICAgICAgICAgICAgICAgICAgIFwKLSAgICBCTE9PTShtYXNrLCBjaHIpICYmIHVuaWNvZGVfbWVtYmVyKGNociwgc2V0LCBzZXRsZW4pCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczFsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MybGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzNGxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VuaWNvZGVkZWZzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgogCiAvKiAtLS0gVW5pY29kZSBPYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljCi1pbnQgdW5pY29kZV9yZXNpemUocmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQorc3RhdGljIFB5T2JqZWN0ICoKK2ZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOworCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIodm9pZCAqcywgaW50IGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgdm9pZCAqb2xkc3RyOworICAgIGludCBtb2RlID0gKGRpcmVjdGlvbiA9PSAxKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwogCi0gICAgLyogU2hvcnRjdXQgaWYgdGhlcmUncyBub3RoaW5nIG11Y2ggdG8gZG8uICovCi0gICAgaWYgKHVuaWNvZGUtPmxlbmd0aCA9PSBsZW5ndGgpCi0gICAgICAgIGdvdG8gcmVzZXQ7Ci0KLSAgICAvKiBSZXNpemluZyBzaGFyZWQgb2JqZWN0ICh1bmljb2RlX2VtcHR5IG9yIHNpbmdsZSBjaGFyYWN0ZXIKLSAgICAgICBvYmplY3RzKSBpbi1wbGFjZSBpcyBub3QgYWxsb3dlZC4gVXNlIFB5VW5pY29kZV9SZXNpemUoKQotICAgICAgIGluc3RlYWQgISAqLwotCi0gICAgaWYgKHVuaWNvZGUgPT0gdW5pY29kZV9lbXB0eSB8fAotICAgICAgICAodW5pY29kZS0+bGVuZ3RoID09IDEgJiYKLSAgICAgICAgIHVuaWNvZGUtPnN0clswXSA8IDI1NlUgJiYKLSAgICAgICAgIHVuaWNvZGVfbGF0aW4xW3VuaWNvZGUtPnN0clswXV0gPT0gdW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHJlc2l6ZSBzaGFyZWQgc3RyIG9iamVjdHMiKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9VQ1MxIGNoMSA9IChQeV9VQ1MxKSBjaDsKKyAgICAgICAgICAgIGlmIChjaDEgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMSAqKSBzLCBzaXplLCAmY2gxLCAxLCAwLCBtb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9VQ1MyIGNoMiA9IChQeV9VQ1MyKSBjaDsKKyAgICAgICAgICAgIGlmIChjaDIgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMiAqKSBzLCBzaXplLCAmY2gyLCAxLCAwLCBtb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9mYXN0c2VhcmNoKChQeV9VQ1M0ICopIHMsIHNpemUsICZjaCwgMSwgMCwgbW9kZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorfQogCi0gICAgLyogV2UgYWxsb2NhdGUgb25lIG1vcmUgYnl0ZSB0byBtYWtlIHN1cmUgdGhlIHN0cmluZyBpcyBVeDAwMDAgdGVybWluYXRlZC4KLSAgICAgICBUaGUgb3ZlcmFsbG9jYXRpb24gaXMgYWxzbyB1c2VkIGJ5IGZhc3RzZWFyY2gsIHdoaWNoIGFzc3VtZXMgdGhhdCBpdCdzCi0gICAgICAgc2FmZSB0byBsb29rIGF0IHN0cltsZW5ndGhdICh3aXRob3V0IG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdAotICAgICAgIGl0IGNvbnRhaW5zKS4gKi8KK3N0YXRpYyBQeU9iamVjdCoKK3Jlc2l6ZV9jb21wYWN0KFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHN0cnVjdF9zaXplOworICAgIFB5X3NzaXplX3QgbmV3X3NpemU7CisgICAgaW50IHNoYXJlX3dzdHI7CisgICAgUHlPYmplY3QgKm5ld191bmljb2RlOworICAgIGFzc2VydCh1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSk7CiAKLSAgICBvbGRzdHIgPSB1bmljb2RlLT5zdHI7Ci0gICAgdW5pY29kZS0+c3RyID0gUHlPYmplY3RfUkVBTExPQyh1bmljb2RlLT5zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkgKiAobGVuZ3RoICsgMSkpOwotICAgIGlmICghdW5pY29kZS0+c3RyKSB7Ci0gICAgICAgIHVuaWNvZGUtPnN0ciA9IChQeV9VTklDT0RFICopb2xkc3RyOworICAgIGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCk7CisgICAgc2hhcmVfd3N0ciA9IF9QeVVuaWNvZGVfU0hBUkVfV1NUUih1bmljb2RlKTsKKworICAgIGlmIChsZW5ndGggPiAoKFBZX1NTSVpFX1RfTUFYIC0gc3RydWN0X3NpemUpIC8gY2hhcl9zaXplIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5ld19zaXplID0gKHN0cnVjdF9zaXplICsgKGxlbmd0aCArIDEpICogY2hhcl9zaXplKTsKKworICAgIF9QeV9ERUNfUkVGVE9UQUw7CisgICAgX1B5X0ZvcmdldFJlZmVyZW5jZSh1bmljb2RlKTsKKworICAgIG5ld191bmljb2RlID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQygoY2hhciAqKXVuaWNvZGUsIG5ld19zaXplKTsKKyAgICBpZiAobmV3X3VuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKHVuaWNvZGUpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdW5pY29kZSA9IG5ld191bmljb2RlOworICAgIF9QeV9OZXdSZWZlcmVuY2UodW5pY29kZSk7CisKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICBpZiAoc2hhcmVfd3N0cikgeworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIH0KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBsZW5ndGgsIDApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitzdGF0aWMgaW50CityZXNpemVfaW5wbGFjZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgd2NoYXJfdCAqd3N0cjsKKyAgICBQeV9zc2l6ZV90IG5ld19zaXplOworICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpOworICAgIGFzc2VydChQeV9SRUZDTlQodW5pY29kZSkgPT0gMSk7CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKSB7CisgICAgICAgIFB5X3NzaXplX3QgY2hhcl9zaXplOworICAgICAgICBpbnQgc2hhcmVfd3N0ciwgc2hhcmVfdXRmODsKKyAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICBkYXRhID0gX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKTsKKyAgICAgICAgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIHNoYXJlX3dzdHIgPSBfUHlVbmljb2RlX1NIQVJFX1dTVFIodW5pY29kZSk7CisgICAgICAgIHNoYXJlX3V0ZjggPSBfUHlVbmljb2RlX1NIQVJFX1VURjgodW5pY29kZSk7CisKKyAgICAgICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG5ld19zaXplID0gKGxlbmd0aCArIDEpICogY2hhcl9zaXplOworCisgICAgICAgIGlmICghc2hhcmVfdXRmOCAmJiBfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWSh1bmljb2RlKSkKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSk7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBkYXRhID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQyhkYXRhLCBuZXdfc2l6ZSk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IGRhdGE7CisgICAgICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBkYXRhOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hhcmVfdXRmOCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gZGF0YTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgZGF0YSwgbGVuZ3RoLCAwKTsKKyAgICAgICAgaWYgKHNoYXJlX3dzdHIgfHwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSAhPSBOVUxMKTsKKworICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHVuaWNvZGUtPnN0cltsZW5ndGhdID0gMDsKLSAgICB1bmljb2RlLT5sZW5ndGggPSBsZW5ndGg7Ci0KLSAgcmVzZXQ6Ci0gICAgLyogUmVzZXQgdGhlIG9iamVjdCBjYWNoZXMgKi8KLSAgICBpZiAodW5pY29kZS0+ZGVmZW5jKSB7Ci0gICAgICAgIFB5X0NMRUFSKHVuaWNvZGUtPmRlZmVuYyk7CisgICAgbmV3X3NpemUgPSBzaXplb2Yod2NoYXJfdCkgKiAobGVuZ3RoICsgMSk7CisgICAgd3N0ciA9ICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgd3N0ciA9IFB5T2JqZWN0X1JFQUxMT0Mod3N0ciwgbmV3X3NpemUpOworICAgIGlmICghd3N0cikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHVuaWNvZGUtPmhhc2ggPSAtMTsKLQorICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IHdzdHI7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpW2xlbmd0aF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAwKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK3Jlc2l6ZV9jb3B5KFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeV9zc2l6ZV90IGNvcHlfbGVuZ3RoOworICAgIGlmIChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGNvcHkgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICAgICAgaWYgKGNvcHkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGxlbmd0aCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhjb3B5LCAwLCB1bmljb2RlLCAwLCBjb3B5X2xlbmd0aCk7CisgICAgICAgIHJldHVybiBjb3B5OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnc7CisKKyAgICAgICAgdyA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcobGVuZ3RoKTsKKyAgICAgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjb3B5X2xlbmd0aCA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGNvcHlfbGVuZ3RoLCBsZW5ndGgpOworICAgICAgICBQeV9VTklDT0RFX0NPUFkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCk7CisgICAgICAgIHJldHVybiB3OworICAgIH0KK30KKwogLyogV2UgYWxsb2NhdGUgb25lIG1vcmUgYnl0ZSB0byBtYWtlIHN1cmUgdGhlIHN0cmluZyBpcwogICAgVXgwMDAwIHRlcm1pbmF0ZWQ7IHNvbWUgY29kZSAoZS5nLiBuZXdfaWRlbnRpZmllcikKICAgIHJlbGllcyBvbiB0aGF0LgpAQCAtMzExLDU1ICs4MDMsMzkgQEAKIAogKi8KIAotc3RhdGljCi1QeVVuaWNvZGVPYmplY3QgKl9QeVVuaWNvZGVfTmV3KFB5X3NzaXplX3QgbGVuZ3RoKQorc3RhdGljIFB5VW5pY29kZU9iamVjdCAqCitfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCkKIHsKICAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7CisgICAgc2l6ZV90IG5ld19zaXplOwogCiAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCiAgICAgaWYgKGxlbmd0aCA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICByZXR1cm4gKFB5VW5pY29kZU9iamVjdCopdW5pY29kZV9lbXB0eTsKICAgICB9CiAKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCiAgICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVPYmplY3QgKilQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KLQotICAgIC8qIFVuaWNvZGUgZnJlZWxpc3QgJiBtZW1vcnkgYWxsb2NhdGlvbiAqLwotICAgIGlmIChmcmVlX2xpc3QpIHsKLSAgICAgICAgdW5pY29kZSA9IGZyZWVfbGlzdDsKLSAgICAgICAgZnJlZV9saXN0ID0gKihQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZTsKLSAgICAgICAgbnVtZnJlZS0tOwotICAgICAgICBpZiAodW5pY29kZS0+c3RyKSB7Ci0gICAgICAgICAgICAvKiBLZWVwLUFsaXZlIG9wdGltaXphdGlvbjogd2Ugb25seSB1cHNpemUgdGhlIGJ1ZmZlciwKLSAgICAgICAgICAgICAgIG5ldmVyIGRvd25zaXplIGl0LiAqLwotICAgICAgICAgICAgaWYgKCh1bmljb2RlLT5sZW5ndGggPCBsZW5ndGgpICYmCi0gICAgICAgICAgICAgICAgdW5pY29kZV9yZXNpemUodW5pY29kZSwgbGVuZ3RoKSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdF9ERUwodW5pY29kZS0+c3RyKTsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHIgPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpICogKChzaXplX3QpbGVuZ3RoICsgMSk7Ci0gICAgICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlPYmplY3RfSU5JVCh1bmljb2RlLCAmUHlVbmljb2RlX1R5cGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc2l6ZV90IG5ld19zaXplOwotICAgICAgICB1bmljb2RlID0gUHlPYmplY3RfTmV3KFB5VW5pY29kZU9iamVjdCwgJlB5VW5pY29kZV9UeXBlKTsKLSAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBuZXdfc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKSAqICgoc2l6ZV90KWxlbmd0aCArIDEpOwotICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7CisgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIF9QeVVuaWNvZGVfTmV3Iik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghdW5pY29kZS0+c3RyKSB7CisgICAgdW5pY29kZSA9IFB5T2JqZWN0X05ldyhQeVVuaWNvZGVPYmplY3QsICZQeVVuaWNvZGVfVHlwZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbmV3X3NpemUgPSBzaXplb2YoUHlfVU5JQ09ERSkgKiAoKHNpemVfdClsZW5ndGggKyAxKTsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAoUHlfVU5JQ09ERSopIFB5T2JqZWN0X01BTExPQyhuZXdfc2l6ZSk7CisgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIC8qIEluaXRpYWxpemUgdGhlIGZpcnN0IGVsZW1lbnQgdG8gZ3VhcmQgYWdhaW5zdCBjYXNlcyB3aGVyZQogICAgICAqIHRoZSBjYWxsZXIgZmFpbHMgYmVmb3JlIGluaXRpYWxpemluZyBzdHIgLS0gdW5pY29kZV9yZXNpemUoKQogICAgICAqIHJlYWRzIHN0clswXSwgYW5kIHRoZSBLZWVwLUFsaXZlIG9wdGltaXphdGlvbiBjYW4ga2VlcCBtZW1vcnkKQEAgLTM2NywyNCArODQzLDY1OCBAQAogICAgICAqIFdlIGRvbid0IHdhbnQgdW5pY29kZV9yZXNpemUgdG8gcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBpbgogICAgICAqIHRoYXQgY2FzZS4KICAgICAgKi8KLSAgICB1bmljb2RlLT5zdHJbMF0gPSAwOwotICAgIHVuaWNvZGUtPnN0cltsZW5ndGhdID0gMDsKLSAgICB1bmljb2RlLT5sZW5ndGggPSBsZW5ndGg7Ci0gICAgdW5pY29kZS0+aGFzaCA9IC0xOwotICAgIHVuaWNvZGUtPnN0YXRlID0gMDsKLSAgICB1bmljb2RlLT5kZWZlbmMgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVswXSA9IDA7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpW2xlbmd0aF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpID0gLTE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmNvbXBhY3QgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAwOworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKFB5T2JqZWN0ICopdW5pY29kZSwgMCkpOwogICAgIHJldHVybiB1bmljb2RlOwotCi0gIG9uRXJyb3I6Ci0gICAgLyogWFhYIFVOUkVGL05FV1JFRiBpbnRlcmZhY2Ugc2hvdWxkIGJlIG1vcmUgc3ltbWV0cmljYWwgKi8KLSAgICBfUHlfREVDX1JFRlRPVEFMOwotICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UoKFB5T2JqZWN0ICopdW5pY29kZSk7Ci0gICAgUHlPYmplY3RfRGVsKHVuaWNvZGUpOwotICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMKLXZvaWQgdW5pY29kZV9kZWFsbG9jKHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSkKK3N0YXRpYyBjb25zdCBjaGFyKgordW5pY29kZV9raW5kX25hbWUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgLyogZG9uJ3QgY2hlY2sgY29uc2lzdGVuY3k6IHVuaWNvZGVfa2luZF9uYW1lKCkgaXMgY2FsbGVkIGZyb20KKyAgICAgICBfUHlVbmljb2RlX0R1bXAoKSAqLworICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpCisgICAgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiAid3N0ciI7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgYXNjaWkiOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAibGVnYWN5IGxhdGluMSI7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBVQ1MyIjsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiAibGVnYWN5IFVDUzQiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuICI8bGVnYWN5IGludmFsaWQga2luZD4iOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgcmV0dXJuICJhc2NpaSI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAibGF0aW4xIjsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gIlVDUzIiOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAiVUNTNCI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICI8aW52YWxpZCBjb21wYWN0IGtpbmQ+IjsKKyAgICB9Cit9CisKKyNpZmRlZiBQeV9ERUJVRworLyogRnVuY3Rpb25zIHdyYXBwaW5nIG1hY3JvcyBmb3IgdXNlIGluIGRlYnVnZ2VyICovCitjaGFyICpfUHlVbmljb2RlX3V0Zjgodm9pZCAqdW5pY29kZSl7CisgICAgcmV0dXJuIFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpOworfQorCit2b2lkICpfUHlVbmljb2RlX2NvbXBhY3RfZGF0YSh2b2lkICp1bmljb2RlKSB7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ09NUEFDVF9EQVRBKHVuaWNvZGUpOworfQordm9pZCAqX1B5VW5pY29kZV9kYXRhKHZvaWQgKnVuaWNvZGUpeworICAgIHByaW50Zigib2JqICVwXG4iLCB1bmljb2RlKTsKKyAgICBwcmludGYoImNvbXBhY3QgJWRcbiIsIFB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKKyAgICBwcmludGYoImNvbXBhY3QgYXNjaWkgJWRcbiIsIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICBwcmludGYoImFzY2lpIG9wICVwXG4iLCAoKHZvaWQqKSgoUHlBU0NJSU9iamVjdCopKHVuaWNvZGUpICsgMSkpKTsKKyAgICBwcmludGYoImNvbXBhY3Qgb3AgJXBcbiIsICgodm9pZCopKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0KikodW5pY29kZSkgKyAxKSkpOworICAgIHByaW50ZigiY29tcGFjdCBkYXRhICVwXG4iLCBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQSh1bmljb2RlKSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworfQorCit2b2lkCitfUHlVbmljb2RlX0R1bXAoUHlPYmplY3QgKm9wKQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKilvcDsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICpjb21wYWN0ID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvcDsKKyAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb3A7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkKKyAgICB7CisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCisgICAgICAgICAgICBkYXRhID0gKGFzY2lpICsgMSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEgPSAoY29tcGFjdCArIDEpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGRhdGEgPSB1bmljb2RlLT5kYXRhLmFueTsKKyAgICBwcmludGYoIiVzOiBsZW49JXp1LCAiLHVuaWNvZGVfa2luZF9uYW1lKG9wKSwgYXNjaWktPmxlbmd0aCk7CisKKyAgICBpZiAoYXNjaWktPndzdHIgPT0gZGF0YSkKKyAgICAgICAgcHJpbnRmKCJzaGFyZWQgIik7CisgICAgcHJpbnRmKCJ3c3RyPSVwIiwgYXNjaWktPndzdHIpOworCisgICAgaWYgKCEoYXNjaWktPnN0YXRlLmFzY2lpID09IDEgJiYgYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMSkpIHsKKyAgICAgICAgcHJpbnRmKCIgKCV6dSksICIsIGNvbXBhY3QtPndzdHJfbGVuZ3RoKTsKKyAgICAgICAgaWYgKCFhc2NpaS0+c3RhdGUuY29tcGFjdCAmJiBjb21wYWN0LT51dGY4ID09IHVuaWNvZGUtPmRhdGEuYW55KQorICAgICAgICAgICAgcHJpbnRmKCJzaGFyZWQgIik7CisgICAgICAgIHByaW50ZigidXRmOD0lcCAoJXp1KSIsIGNvbXBhY3QtPnV0ZjgsIGNvbXBhY3QtPnV0ZjhfbGVuZ3RoKTsKKyAgICB9CisgICAgcHJpbnRmKCIsIGRhdGE9JXBcbiIsIGRhdGEpOworfQorI2VuZGlmCisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IG1heGNoYXIpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIHZvaWQgKmRhdGE7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGludCBpc19zaGFyaW5nLCBpc19hc2NpaTsKKyAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHN0cnVjdF9zaXplOworCisgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpc19hc2NpaSA9IDA7CisgICAgaXNfc2hhcmluZyA9IDA7CisgICAgc3RydWN0X3NpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCk7CisgICAgaWYgKG1heGNoYXIgPCAxMjgpIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBjaGFyX3NpemUgPSAxOworICAgICAgICBpc19hc2NpaSA9IDE7CisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5QVNDSUlPYmplY3QpOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyIDwgMjU2KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDY1NTM2KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMjsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSAyKQorICAgICAgICAgICAgaXNfc2hhcmluZyA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobWF4Y2hhciA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbWF4aW11bSBjaGFyYWN0ZXIgcGFzc2VkIHRvIFB5VW5pY29kZV9OZXciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gNDsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSA0KQorICAgICAgICAgICAgaXNfc2hhcmluZyA9IDE7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlVbmljb2RlX05ldyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNpemUgPiAoKFBZX1NTSVpFX1RfTUFYIC0gc3RydWN0X3NpemUpIC8gY2hhcl9zaXplIC0gMSkpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgLyogRHVwbGljYXRlZCBhbGxvY2F0aW9uIGNvZGUgZnJvbSBfUHlPYmplY3RfTmV3KCkgaW5zdGVhZCBvZiBhIGNhbGwgdG8KKyAgICAgKiBQeU9iamVjdF9OZXcoKSBzbyB3ZSBhcmUgYWJsZSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG9iamVjdCBhbmQKKyAgICAgKiBpdCdzIGRhdGEgYnVmZmVyLgorICAgICAqLworICAgIG9iaiA9IChQeU9iamVjdCAqKSBQeU9iamVjdF9NQUxMT0Moc3RydWN0X3NpemUgKyAoc2l6ZSArIDEpICogY2hhcl9zaXplKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG9iaiA9IFB5T2JqZWN0X0lOSVQob2JqLCAmUHlVbmljb2RlX1R5cGUpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1bmljb2RlID0gKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKilvYmo7CisgICAgaWYgKGlzX2FzY2lpKQorICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0KilvYmopICsgMTsKKyAgICBlbHNlCisgICAgICAgIGRhdGEgPSB1bmljb2RlICsgMTsKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IHNpemU7CisgICAgX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpID0gLTE7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0ga2luZDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmNvbXBhY3QgPSAxOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSBpc19hc2NpaTsKKyAgICBpZiAoaXNfYXNjaWkpIHsKKyAgICAgICAgKChjaGFyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgKChjaGFyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB1bmljb2RlLT51dGY4ID0gTlVMTDsKKyAgICAgICAgdW5pY29kZS0+dXRmOF9sZW5ndGggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdW5pY29kZS0+dXRmOCA9IE5VTEw7CisgICAgICAgIHVuaWNvZGUtPnV0ZjhfbGVuZ3RoID0gMDsKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgICAgICAgICAoKFB5X1VDUzIqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgZWxzZSAvKiBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EICovCisgICAgICAgICAgICAoKFB5X1VDUzQqKWRhdGEpW3NpemVdID0gMDsKKyAgICAgICAgaWYgKGlzX3NoYXJpbmcpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBzaXplOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKilkYXRhOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICB9CisgICAgfQorI2lmZGVmIFB5X0RFQlVHCisgICAgLyogRmlsbCB0aGUgZGF0YSB3aXRoIGludmFsaWQgY2hhcmFjdGVycyB0byBkZXRlY3QgYnVncyBlYXJsaWVyLgorICAgICAgIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpIGRldGVjdHMgaW52YWxpZCBjaGFyYWN0ZXJzLAorICAgICAgIGF0IGxlYXN0IGZvciBBU0NJSSBhbmQgVUNTLTQgc3RyaW5ncy4gVSswMEZGIGlzIGludmFsaWQgaW4gQVNDSUkKKyAgICAgICBhbmQgVStGRkZGRkZGRiBpcyBhbiBpbnZhbGlkIGNoYXJhY3RlciBpbiBVbmljb2RlIDYuMC4gKi8KKyAgICBtZW1zZXQoZGF0YSwgMHhmZiwgc2l6ZSAqIGtpbmQpOworI2VuZGlmCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgoUHlPYmplY3QqKXVuaWNvZGUsIDApKTsKKyAgICByZXR1cm4gb2JqOworfQorCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSAxNi1iaXRzIHdjaGFyX3QgcmVwcmVzZW50YXRpb24gdG8gVUNTNCwgdGhpcworICAgd2lsbCBkZWNvZGUgc3Vycm9nYXRlIHBhaXJzLCB0aGUgb3RoZXIgY29udmVyc2lvbnMgYXJlIGltcGxlbWVudGVkIGFzIG1hY3JvcworICAgZm9yIGVmZmljaWVuY3kuCisKKyAgIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHVuaWNvZGUgY2FuIGhvbGQgb25lIG1vcmUgY29kZSBwb2ludCB0aGFuIHdzdHIKKyAgIGNoYXJhY3RlcnMgZm9yIGEgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuICovCitzdGF0aWMgdm9pZAordW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoY29uc3Qgd2NoYXJfdCAqYmVnaW4sIGNvbnN0IHdjaGFyX3QgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGNvbnN0IHdjaGFyX3QgKml0ZXI7CisgICAgUHlfVUNTNCAqdWNzNF9vdXQ7CisKKyAgICBhc3NlcnQodW5pY29kZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgdWNzNF9vdXQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKworICAgIGZvciAoaXRlciA9IGJlZ2luOyBpdGVyIDwgZW5kOyApIHsKKyAgICAgICAgYXNzZXJ0KHVjczRfb3V0IDwgKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkpOworICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShpdGVyWzBdKQorICAgICAgICAgICAgJiYgKGl0ZXIrMSkgPCBlbmQKKyAgICAgICAgICAgICYmIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShpdGVyWzFdKSkKKyAgICAgICAgeworICAgICAgICAgICAgKnVjczRfb3V0KysgPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhpdGVyWzBdLCBpdGVyWzFdKTsKKyAgICAgICAgICAgIGl0ZXIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICp1Y3M0X291dCsrID0gKml0ZXI7CisgICAgICAgICAgICBpdGVyKys7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KHVjczRfb3V0ID09IChQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpKTsKKworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIXVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IG1vZGlmeSBhIHN0cmluZyBjdXJyZW50bHkgdXNlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfY29weV9jaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBob3dfbWFueSwgaW50IGNoZWNrX21heGNoYXIpCit7CisgICAgdW5zaWduZWQgaW50IGZyb21fa2luZCwgdG9fa2luZDsKKyAgICB2b2lkICpmcm9tX2RhdGEsICp0b19kYXRhOworCisgICAgYXNzZXJ0KDAgPD0gaG93X21hbnkpOworICAgIGFzc2VydCgwIDw9IGZyb21fc3RhcnQpOworICAgIGFzc2VydCgwIDw9IHRvX3N0YXJ0KTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGZyb20pKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKGZyb20pKTsKKyAgICBhc3NlcnQoZnJvbV9zdGFydCArIGhvd19tYW55IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb20pKTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodG8pKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHRvKSk7CisgICAgYXNzZXJ0KHRvX3N0YXJ0ICsgaG93X21hbnkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKTsKKworICAgIGlmIChob3dfbWFueSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZyb21fa2luZCA9IFB5VW5pY29kZV9LSU5EKGZyb20pOworICAgIGZyb21fZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZyb20pOworICAgIHRvX2tpbmQgPSBQeVVuaWNvZGVfS0lORCh0byk7CisgICAgdG9fZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRvKTsKKworI2lmZGVmIFB5X0RFQlVHCisgICAgaWYgKCFjaGVja19tYXhjaGFyCisgICAgICAgICYmIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShmcm9tKSA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0bykpCisgICAgeworICAgICAgICBjb25zdCBQeV9VQ1M0IHRvX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgaG93X21hbnk7IGkrKykgeworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChmcm9tX2tpbmQsIGZyb21fZGF0YSwgZnJvbV9zdGFydCArIGkpOworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IHRvX21heGNoYXIpOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAoZnJvbV9raW5kID09IHRvX2tpbmQpIHsKKyAgICAgICAgaWYgKGNoZWNrX21heGNoYXIKKyAgICAgICAgICAgICYmICFQeVVuaWNvZGVfSVNfQVNDSUkoZnJvbSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHRvKSkKKyAgICAgICAgeworICAgICAgICAgICAgLyogV3JpdGluZyBMYXRpbi0xIGNoYXJhY3RlcnMgaW50byBhbiBBU0NJSSBzdHJpbmcgcmVxdWlyZXMgdG8KKyAgICAgICAgICAgICAgIGNoZWNrIHRoYXQgYWxsIHdyaXR0ZW4gY2hhcmFjdGVycyBhcmUgcHVyZSBBU0NJSSAqLworICAgICAgICAgICAgUHlfVUNTNCBtYXhfY2hhcjsKKyAgICAgICAgICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKGZyb21fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VQ1MxKilmcm9tX2RhdGEgKyBob3dfbWFueSk7CisgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgICAgICAgICAgICAoY2hhciopZnJvbV9kYXRhICsgZnJvbV9raW5kICogZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgIHRvX2tpbmQgKiBob3dfbWFueSk7CisgICAgfQorICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1MyLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKKyAgICB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICApOworICAgIH0KKyAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQorICAgIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTNCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShmcm9tKSA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0bykpOworCisgICAgICAgIGlmICghY2hlY2tfbWF4Y2hhcikgeworICAgICAgICAgICAgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1MxLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV80QllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCwgUHlfVUNTMSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQsIFB5X1VDUzIsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgUHlfVUNTNCB0b19tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKTsKKyAgICAgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgaG93X21hbnk7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoZnJvbV9raW5kLCBmcm9tX2RhdGEsIGZyb21fc3RhcnQgKyBpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiB0b19tYXhjaGFyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHRvX2tpbmQsIHRvX2RhdGEsIHRvX3N0YXJ0ICsgaSwgY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkCitfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygKKyAgICBQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgUHlPYmplY3QgKmZyb20sIFB5X3NzaXplX3QgZnJvbV9zdGFydCwgUHlfc3NpemVfdCBob3dfbWFueSkKK3sKKyAgICAodm9pZClfY29weV9jaGFyYWN0ZXJzKHRvLCB0b19zdGFydCwgZnJvbSwgZnJvbV9zdGFydCwgaG93X21hbnksIDApOworfQorCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMoUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBob3dfbWFueSkKK3sKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZnJvbSkgfHwgIVB5VW5pY29kZV9DaGVjayh0bykpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGZyb20pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh0bykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChmcm9tX3N0YXJ0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodG9fc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGhvd19tYW55ID0gUHlfTUlOKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb20pLCBob3dfbWFueSk7CisgICAgaWYgKHRvX3N0YXJ0ICsgaG93X21hbnkgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB3cml0ZSAlemkgY2hhcmFjdGVycyBhdCAlemkgIgorICAgICAgICAgICAgICAgICAgICAgImluIGEgc3RyaW5nIG9mICV6aSBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgIGhvd19tYW55LCB0b19zdGFydCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChob3dfbWFueSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodG8pKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBlcnIgPSBfY29weV9jaGFyYWN0ZXJzKHRvLCB0b19zdGFydCwgZnJvbSwgZnJvbV9zdGFydCwgaG93X21hbnksIDEpOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb3B5ICVzIGNoYXJhY3RlcnMgIgorICAgICAgICAgICAgICAgICAgICAgImludG8gYSBzdHJpbmcgb2YgJXMgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2tpbmRfbmFtZShmcm9tKSwKKyAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfa2luZF9uYW1lKHRvKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGhvd19tYW55OworfQorCisvKiBGaW5kIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgYW5kIGNvdW50IHRoZSBudW1iZXIgb2Ygc3Vycm9nYXRlIHBhaXJzIHNvIGEKKyAgIGNvcnJlY3Qgc3RyaW5nIGxlbmd0aCBjYW4gYmUgY29tcHV0ZWQgYmVmb3JlIGNvbnZlcnRpbmcgYSBzdHJpbmcgdG8gVUNTNC4KKyAgIFRoaXMgZnVuY3Rpb24gY291bnRzIHNpbmdsZSBzdXJyb2dhdGVzIGFzIGEgY2hhcmFjdGVyIGFuZCBub3QgYXMgYSBwYWlyLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCBvciAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK2ZpbmRfbWF4Y2hhcl9zdXJyb2dhdGVzKGNvbnN0IHdjaGFyX3QgKmJlZ2luLCBjb25zdCB3Y2hhcl90ICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0ICptYXhjaGFyLCBQeV9zc2l6ZV90ICpudW1fc3Vycm9nYXRlcykKK3sKKyAgICBjb25zdCB3Y2hhcl90ICppdGVyOworICAgIFB5X1VDUzQgY2g7CisKKyAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgIT0gTlVMTCAmJiBtYXhjaGFyICE9IE5VTEwpOworICAgICpudW1fc3Vycm9nYXRlcyA9IDA7CisgICAgKm1heGNoYXIgPSAwOworCisgICAgZm9yIChpdGVyID0gYmVnaW47IGl0ZXIgPCBlbmQ7ICkgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoaXRlclswXSkKKyAgICAgICAgICAgICYmIChpdGVyKzEpIDwgZW5kCisgICAgICAgICAgICAmJiBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoaXRlclsxXSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaXRlclswXSwgaXRlclsxXSk7CisgICAgICAgICAgICArKygqbnVtX3N1cnJvZ2F0ZXMpOworICAgICAgICAgICAgaXRlciArPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBjaCA9ICppdGVyOworICAgICAgICAgICAgaXRlcisrOworICAgICAgICB9CisgICAgICAgIGlmIChjaCA+ICptYXhjaGFyKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IGNoOworICAgICAgICAgICAgaWYgKCptYXhjaGFyID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBVKyV4IGlzIG5vdCBpbiByYW5nZSBbVSswMDAwOyBVKzEwZmZmZl0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK19QeVVuaWNvZGVfUmVhZHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgd2NoYXJfdCAqZW5kOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgUHlfc3NpemVfdCBsZW5ndGhfd29fc3Vycm9nYXRlczsKKyNlbmRpZgorCisgICAgLyogX1B5VW5pY29kZV9SZWFkeSgpIGlzIG9ubHkgaW50ZW5kZWQgZm9yIG9sZC1zdHlsZSBBUEkgdXNhZ2Ugd2hlcmUKKyAgICAgICBzdHJpbmdzIHdlcmUgY3JlYXRlZCB1c2luZyBfUHlPYmplY3RfTmV3KCkgYW5kIHdoZXJlIG5vIGNhbm9uaWNhbAorICAgICAgIHJlcHJlc2VudGF0aW9uICh0aGUgc3RyIGZpZWxkKSBoYXMgYmVlbiBzZXQgeWV0IGFrYSBzdHJpbmdzCisgICAgICAgd2hpY2ggYXJlIG5vdCB5ZXQgcmVhZHkuICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpOworICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKTsKKyAgICAvKiBBY3R1YWxseSwgaXQgc2hvdWxkIG5laXRoZXIgYmUgaW50ZXJuZWQgbm9yIGJlIGFueXRoaW5nIGVsc2U6ICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPT0gU1NUQVRFX05PVF9JTlRFUk5FRCk7CisKKyAgICBlbmQgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgKyBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChmaW5kX21heGNoYXJfc3Vycm9nYXRlcyhfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIsICZudW1fc3Vycm9nYXRlcykgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChtYXhjaGFyIDwgMjU2KSB7CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSArIDEpOworICAgICAgICBpZiAoIV9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKHdjaGFyX3QsIHVuc2lnbmVkIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgaWYgKG1heGNoYXIgPCAxMjgpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAxOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5hc2NpaSA9IDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICB9CisgICAgLyogSW4gdGhpcyBjYXNlIHdlIG1pZ2h0IGhhdmUgdG8gY29udmVydCBkb3duIGZyb20gNC1ieXRlIG5hdGl2ZQorICAgICAgIHdjaGFyX3QgdG8gMi1ieXRlIHVuaWNvZGUuICovCisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDY1NTM2KSB7CisgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwICYmCisgICAgICAgICAgICAgICAiRmluZE1heENoYXJBbmROdW1TdXJyb2dhdGVQYWlycygpIG1lc3NlZCB1cCIpOworCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAvKiBXZSBjYW4gc2hhcmUgcmVwcmVzZW50YXRpb25zIGFuZCBhcmUgZG9uZS4gKi8KKyAgICAgICAgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbHNlCisgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSA0ICovCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoCisgICAgICAgICAgICAyICogKF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgKyAxKSk7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMod2NoYXJfdCwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSlbX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV8yQllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbmRpZgorICAgIH0KKyAgICAvKiBtYXhjaGFyIGV4ZWVkcyAxNiBiaXQsIHdlZSBuZWVkIDQgYnl0ZXMgZm9yIHVuaWNvZGUgY2hhcmFjdGVycyAqLworICAgIGVsc2UgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogaW4gY2FzZSB0aGUgbmF0aXZlIHJlcHJlc2VudGF0aW9uIGlzIDItYnl0ZXMsIHdlIG5lZWQgdG8gYWxsb2NhdGUgYQorICAgICAgICAgICBuZXcgbm9ybWFsaXplZCA0LWJ5dGUgdmVyc2lvbi4gKi8KKyAgICAgICAgbGVuZ3RoX3dvX3N1cnJvZ2F0ZXMgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpIC0gbnVtX3N1cnJvZ2F0ZXM7CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoNCAqIChsZW5ndGhfd29fc3Vycm9nYXRlcyArIDEpKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoX3dvX3N1cnJvZ2F0ZXM7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgLyogdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoKSByZXF1aXJlcyBhIHJlYWR5IHN0cmluZyAqLworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsIHVuaWNvZGUpOworICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOworCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IFB5VW5pY29kZV80QllURV9LSU5EOworI2VuZGlmCisgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgfQorICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkucmVhZHkgPSAxOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMSkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAordW5pY29kZV9kZWFsbG9jKHJlZ2lzdGVyIFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIHN3aXRjaCAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHVuaWNvZGUpKSB7CiAgICAgY2FzZSBTU1RBVEVfTk9UX0lOVEVSTkVEOgpAQCAtMzkzLDcgKzE1MDMsNyBAQAogICAgIGNhc2UgU1NUQVRFX0lOVEVSTkVEX01PUlRBTDoKICAgICAgICAgLyogcmV2aXZlIGRlYWQgb2JqZWN0IHRlbXBvcmFyaWx5IGZvciBEZWxJdGVtICovCiAgICAgICAgIFB5X1JFRkNOVCh1bmljb2RlKSA9IDM7Ci0gICAgICAgIGlmIChQeURpY3RfRGVsSXRlbShpbnRlcm5lZCwgKFB5T2JqZWN0ICopdW5pY29kZSkgIT0gMCkKKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtKGludGVybmVkLCB1bmljb2RlKSAhPSAwKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICAgICAiZGVsZXRpb24gb2YgaW50ZXJuZWQgc3RyaW5nIGZhaWxlZCIpOwogICAgICAgICBicmVhazsKQEAgLTQwNSwyNDAgKzE1MTUsNzQxIEBACiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkluY29uc2lzdGVudCBpbnRlcm5lZCBzdHJpbmcgc3RhdGUuIik7CiAgICAgfQogCi0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpICYmCi0gICAgICAgIG51bWZyZWUgPCBQeVVuaWNvZGVfTUFYRlJFRUxJU1QpIHsKLSAgICAgICAgLyogS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb24gKi8KLSAgICAgICAgaWYgKHVuaWNvZGUtPmxlbmd0aCA+PSBLRUVQQUxJVkVfU0laRV9MSU1JVCkgewotICAgICAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgICAgICB1bmljb2RlLT5zdHIgPSBOVUxMOwotICAgICAgICAgICAgdW5pY29kZS0+bGVuZ3RoID0gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAodW5pY29kZS0+ZGVmZW5jKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUih1bmljb2RlLT5kZWZlbmMpOwotICAgICAgICB9Ci0gICAgICAgIC8qIEFkZCB0byBmcmVlIGxpc3QgKi8KLSAgICAgICAgKihQeVVuaWNvZGVPYmplY3QgKiopdW5pY29kZSA9IGZyZWVfbGlzdDsKLSAgICAgICAgZnJlZV9saXN0ID0gdW5pY29kZTsKLSAgICAgICAgbnVtZnJlZSsrOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgIFB5X1hERUNSRUYodW5pY29kZS0+ZGVmZW5jKTsKLSAgICAgICAgUHlfVFlQRSh1bmljb2RlKS0+dHBfZnJlZSgoUHlPYmplY3QgKil1bmljb2RlKTsKLSAgICB9CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKHVuaWNvZGUpKQorICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodW5pY29kZSkpCisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1VURjgodW5pY29kZSkpOworICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkgJiYgX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkKKyAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpOworCisgICAgUHlfVFlQRSh1bmljb2RlKS0+dHBfZnJlZSh1bmljb2RlKTsKIH0KIAotc3RhdGljCi1pbnQgX1B5VW5pY29kZV9SZXNpemUoUHlVbmljb2RlT2JqZWN0ICoqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK3VuaWNvZGVfaXNfc2luZ2xldG9uKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdjsKLQotICAgIC8qIEFyZ3VtZW50IGNoZWNrcyAqLwotICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAodW5pY29kZSA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoYXNjaWktPnN0YXRlLmtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQgJiYgYXNjaWktPmxlbmd0aCA9PSAxKQorICAgIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgMCk7CisgICAgICAgIGlmIChjaCA8IDI1NiAmJiB1bmljb2RlX2xhdGluMVtjaF0gPT0gdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICB2ID0gKnVuaWNvZGU7Ci0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHYpIHx8IFB5X1JFRkNOVCh2KSAhPSAxIHx8IGxlbmd0aCA8IDApIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKIAotICAgIC8qIFJlc2l6aW5nIHVuaWNvZGVfZW1wdHkgYW5kIHNpbmdsZSBjaGFyYWN0ZXIgb2JqZWN0cyBpcyBub3QKLSAgICAgICBwb3NzaWJsZSBzaW5jZSB0aGVzZSBhcmUgYmVpbmcgc2hhcmVkLiBXZSBzaW1wbHkgcmV0dXJuIGEgZnJlc2gKLSAgICAgICBjb3B5IHdpdGggdGhlIHNhbWUgVW5pY29kZSBjb250ZW50LiAqLwotICAgIGlmICh2LT5sZW5ndGggIT0gbGVuZ3RoICYmCi0gICAgICAgICh2ID09IHVuaWNvZGVfZW1wdHkgfHwgdi0+bGVuZ3RoID09IDEpKSB7Ci0gICAgICAgIFB5VW5pY29kZU9iamVjdCAqdyA9IF9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7Ci0gICAgICAgIGlmICh3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh3LT5zdHIsIHYtPnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA8IHYtPmxlbmd0aCA/IGxlbmd0aCA6IHYtPmxlbmd0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRigqdW5pY29kZSk7Ci0gICAgICAgICp1bmljb2RlID0gdzsKK3N0YXRpYyBpbnQKK3VuaWNvZGVfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmljb2RlKSk7CisgICAgaWYgKFB5X1JFRkNOVCh1bmljb2RlKSAhPSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpICE9IC0xKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIHNpbmdsZXRvbiByZWZjb3VudCBpcyBncmVhdGVyIHRoYW4gMSAqLworICAgIGFzc2VydCghdW5pY29kZV9pc19zaW5nbGV0b24odW5pY29kZSkpOworI2VuZGlmCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3VuaWNvZGVfcmVzaXplKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IG9sZF9sZW5ndGg7CisKKyAgICBhc3NlcnQocF91bmljb2RlICE9IE5VTEwpOworICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworCisgICAgYXNzZXJ0KHVuaWNvZGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh1bmljb2RlKSk7CisgICAgYXNzZXJ0KDAgPD0gbGVuZ3RoKTsKKworICAgIGlmIChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgIG9sZF9sZW5ndGggPSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgZWxzZQorICAgICAgICBvbGRfbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKG9sZF9sZW5ndGggPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgICAgICpwX3VuaWNvZGUgPSB1bmljb2RlX2VtcHR5OworICAgICAgICBQeV9JTkNSRUYoKnBfdW5pY29kZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8qIE5vdGUgdGhhdCB3ZSBkb24ndCBoYXZlIHRvIG1vZGlmeSAqdW5pY29kZSBmb3IgdW5zaGFyZWQgVW5pY29kZQotICAgICAgIG9iamVjdHMsIHNpbmNlIHdlIGNhbiBtb2RpZnkgdGhlbSBpbi1wbGFjZS4gKi8KLSAgICByZXR1cm4gdW5pY29kZV9yZXNpemUodiwgbGVuZ3RoKTsKKyAgICBpZiAoIXVuaWNvZGVfbW9kaWZpYWJsZSh1bmljb2RlKSkgeworICAgICAgICBQeU9iamVjdCAqY29weSA9IHJlc2l6ZV9jb3B5KHVuaWNvZGUsIGxlbmd0aCk7CisgICAgICAgIGlmIChjb3B5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKKyAgICAgICAgKnBfdW5pY29kZSA9IGNvcHk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSkgeworICAgICAgICBQeU9iamVjdCAqbmV3X3VuaWNvZGUgPSByZXNpemVfY29tcGFjdCh1bmljb2RlLCBsZW5ndGgpOworICAgICAgICBpZiAobmV3X3VuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgKnBfdW5pY29kZSA9IG5ld191bmljb2RlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHJlc2l6ZV9pbnBsYWNlKHVuaWNvZGUsIGxlbmd0aCk7CiB9CiAKLWludCBQeVVuaWNvZGVfUmVzaXplKFB5T2JqZWN0ICoqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCitpbnQKK1B5VW5pY29kZV9SZXNpemUoUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQogewotICAgIHJldHVybiBfUHlVbmljb2RlX1Jlc2l6ZSgoUHlVbmljb2RlT2JqZWN0ICoqKXVuaWNvZGUsIGxlbmd0aCk7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaWYgKHBfdW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworICAgIGlmICh1bmljb2RlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCBsZW5ndGggPCAwKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzaXplKHBfdW5pY29kZSwgbGVuZ3RoKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tVW5pY29kZShjb25zdCBQeV9VTklDT0RFICp1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCitzdGF0aWMgaW50Cit1bmljb2RlX3dpZGVuKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heGNoYXIpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSgqcF91bmljb2RlKSk7CisgICAgYXNzZXJ0KGxlbmd0aCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcF91bmljb2RlKSk7CisgICAgaWYgKG1heGNoYXIgPD0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKCpwX3VuaWNvZGUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KFB5VW5pY29kZV9HRVRfTEVOR1RIKCpwX3VuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y2hhcik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCAwLCAqcF91bmljb2RlLCAwLCBsZW5ndGgpOworICAgIFB5X0RFQ1JFRigqcF91bmljb2RlKTsKKyAgICAqcF91bmljb2RlID0gcmVzdWx0OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX3B1dGNoYXIoUHlPYmplY3QgKipwX3VuaWNvZGUsIFB5X3NzaXplX3QgKnBvcywKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoKQoreworICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgaWYgKHVuaWNvZGVfd2lkZW4ocF91bmljb2RlLCAqcG9zLCBjaCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKCpwX3VuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQSgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgKCpwb3MpKyssIGNoKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29weSBhIEFTQ0lJIG9yIGxhdGluMSBjaGFyKiBzdHJpbmcgaW50byBhIFB5dGhvbiBVbmljb2RlIHN0cmluZy4KKworICAgV0FSTklORzogVGhlIGZ1bmN0aW9uIGRvZXNuJ3QgY29weSB0aGUgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIgYW5kCisgICBkb2Vzbid0IGNoZWNrIHRoZSBtYXhpbXVtIGNoYXJhY3RlciAobWF5IHdyaXRlIGEgbGF0aW4xIGNoYXJhY3RlciBpbiBhbgorICAgQVNDSUkgc3RyaW5nKS4gKi8KK3N0YXRpYyB2b2lkCit1bmljb2RlX3dyaXRlX2NzdHIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgY29uc3QgY2hhciAqZW5kID0gc3RyICsgbGVuOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICBhc3NlcnQoaW5kZXggKyBsZW4gPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBtZW1jcHkoKGNoYXIgKikgZGF0YSArIGluZGV4LCBzdHIsIGxlbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7CisgICAgICAgIFB5X1VDUzIgKnN0YXJ0ID0gKFB5X1VDUzIgKilkYXRhICsgaW5kZXg7CisgICAgICAgIFB5X1VDUzIgKnVjczIgPSBzdGFydDsKKyAgICAgICAgYXNzZXJ0KGluZGV4IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKworICAgICAgICBmb3IgKDsgc3RyIDwgZW5kOyArK3VjczIsICsrc3RyKQorICAgICAgICAgICAgKnVjczIgPSAoUHlfVUNTMikqc3RyOworCisgICAgICAgIGFzc2VydCgodWNzMiAtIHN0YXJ0KSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFB5X1VDUzQgKnN0YXJ0ID0gKFB5X1VDUzQgKilkYXRhICsgaW5kZXg7CisgICAgICAgIFB5X1VDUzQgKnVjczQgPSBzdGFydDsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBhc3NlcnQoaW5kZXggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworCisgICAgICAgIGZvciAoOyBzdHIgPCBlbmQ7ICsrdWNzNCwgKytzdHIpCisgICAgICAgICAgICAqdWNzNCA9IChQeV9VQ1M0KSpzdHI7CisKKyAgICAgICAgYXNzZXJ0KCh1Y3M0IC0gc3RhcnQpIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICB9CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCoKK2dldF9sYXRpbjFfY2hhcih1bnNpZ25lZCBjaGFyIGNoKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gdW5pY29kZV9sYXRpbjFbY2hdOworICAgIGlmICghdW5pY29kZSkgeworICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKVswXSA9IGNoOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICAgICAgdW5pY29kZV9sYXRpbjFbY2hdID0gdW5pY29kZTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgIHJldHVybiB1bmljb2RlOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDA7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiAoUHlPYmplY3QqKV9QeVVuaWNvZGVfTmV3KHNpemUpOwogCiAgICAgLyogSWYgdGhlIFVuaWNvZGUgZGF0YSBpcyBrbm93biBhdCBjb25zdHJ1Y3Rpb24gdGltZSwgd2UgY2FuIGFwcGx5CiAgICAgICAgc29tZSBvcHRpbWl6YXRpb25zIHdoaWNoIHNoYXJlIGNvbW1vbmx5IHVzZWQgb2JqZWN0cy4gKi8KLSAgICBpZiAodSAhPSBOVUxMKSB7CiAKLSAgICAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZV9lbXB0eTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNpbmdsZSBjaGFyYWN0ZXIgVW5pY29kZSBvYmplY3RzIGluIHRoZSBMYXRpbi0xIHJhbmdlIGFyZQotICAgICAgICAgICBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yICovCi0gICAgICAgIGlmIChzaXplID09IDEgJiYgKnUgPCAyNTYpIHsKLSAgICAgICAgICAgIHVuaWNvZGUgPSB1bmljb2RlX2xhdGluMVsqdV07Ci0gICAgICAgICAgICBpZiAoIXVuaWNvZGUpIHsKLSAgICAgICAgICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB1bmljb2RlLT5zdHJbMF0gPSAqdTsKLSAgICAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVsqdV0gPSB1bmljb2RlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci0gICAgICAgIH0KKyAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KKyAgICBpZiAoc2l6ZSA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgb2JqZWN0cyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUKKyAgICAgICBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yICovCisgICAgaWYgKHNpemUgPT0gMSAmJiAqdSA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcikqdSk7CisKKyAgICAvKiBJZiBub3QgZW1wdHkgYW5kIG5vdCBzaW5nbGUgY2hhcmFjdGVyLCBjb3B5IHRoZSBVbmljb2RlIGRhdGEKKyAgICAgICBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCisgICAgaWYgKGZpbmRfbWF4Y2hhcl9zdXJyb2dhdGVzKHUsIHUgKyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhciwgJm51bV9zdXJyb2dhdGVzKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplIC0gbnVtX3N1cnJvZ2F0ZXMsIG1heGNoYXIpOwogICAgIGlmICghdW5pY29kZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBDb3B5IHRoZSBVbmljb2RlIGRhdGEgaW50byB0aGUgbmV3IG9iamVjdCAqLwotICAgIGlmICh1ICE9IE5VTEwpCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh1bmljb2RlLT5zdHIsIHUsIHNpemUpOworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgdW5zaWduZWQgY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyNpZiBQeV9VTklDT0RFX1NJWkUgPT0gMgorICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKKyNlbHNlCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCBQeV9VQ1MyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAvKiBUaGlzIGlzIHRoZSBvbmx5IGNhc2Ugd2hpY2ggaGFzIHRvIHByb2Nlc3Mgc3Vycm9nYXRlcywgdGh1cworICAgICAgICAgICBhIHNpbXBsZSBjb3B5IGxvb3AgaXMgbm90IGVub3VnaCBhbmQgd2UgbmVlZCBhIGZ1bmN0aW9uLiAqLworICAgICAgICB1bmljb2RlX2NvbnZlcnRfd2NoYXJfdG9fdWNzNCh1LCB1ICsgc2l6ZSwgdW5pY29kZSk7CisjZWxzZQorICAgICAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgPT0gMCk7CisgICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDQpOworI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwICYmICJJbXBvc3NpYmxlIHN0YXRlIik7CisgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICp1LCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotCiAgICAgaWYgKHNpemUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgLyogSWYgdGhlIFVuaWNvZGUgZGF0YSBpcyBrbm93biBhdCBjb25zdHJ1Y3Rpb24gdGltZSwgd2UgY2FuIGFwcGx5Ci0gICAgICAgc29tZSBvcHRpbWl6YXRpb25zIHdoaWNoIHNoYXJlIGNvbW1vbmx5IHVzZWQgb2JqZWN0cy4KLSAgICAgICBBbHNvLCB0aGlzIG1lYW5zIHRoZSBpbnB1dCBtdXN0IGJlIFVURi04LCBzbyBmYWxsIGJhY2sgdG8gdGhlCi0gICAgICAgVVRGLTggZGVjb2RlciBhdCB0aGUgZW5kLiAqLwotICAgIGlmICh1ICE9IE5VTEwpIHsKLQotICAgICAgICAvKiBPcHRpbWl6YXRpb24gZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlX2VtcHR5OwotICAgICAgICB9Ci0KLSAgICAgICAgLyogU2luZ2xlIGNoYXJhY3RlcnMgYXJlIHNoYXJlZCB3aGVuIHVzaW5nIHRoaXMgY29uc3RydWN0b3IuCi0gICAgICAgICAgIFJlc3RyaWN0IHRvIEFTQ0lJLCBzaW5jZSB0aGUgaW5wdXQgbXVzdCBiZSBVVEYtOC4gKi8KLSAgICAgICAgaWYgKHNpemUgPT0gMSAmJiBQeV9DSEFSTUFTSygqdSkgPCAxMjgpIHsKLSAgICAgICAgICAgIHVuaWNvZGUgPSB1bmljb2RlX2xhdGluMVtQeV9DSEFSTUFTSygqdSldOwotICAgICAgICAgICAgaWYgKCF1bmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KDEpOwotICAgICAgICAgICAgICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgdW5pY29kZS0+c3RyWzBdID0gUHlfQ0hBUk1BU0soKnUpOwotICAgICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xW1B5X0NIQVJNQVNLKCp1KV0gPSB1bmljb2RlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgodSwgc2l6ZSwgTlVMTCk7Ci0gICAgfQotCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAodSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCh1LCBzaXplLCBOVUxMLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldyhzaXplKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQogewogICAgIHNpemVfdCBzaXplID0gc3RybGVuKHUpOwogICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJpbnB1dCB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwodSwgKFB5X3NzaXplX3Qpc2l6ZSwgTlVMTCwgTlVMTCk7Cit9CiAKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHUsIHNpemUpOworUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tSWQoX1B5X0lkZW50aWZpZXIgKmlkKQoreworICAgIGlmICghaWQtPm9iamVjdCkgeworICAgICAgICBpZC0+b2JqZWN0ID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChpZC0+c3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oaWQtPnN0cmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIWlkLT5vYmplY3QpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJmlkLT5vYmplY3QpOworICAgICAgICBhc3NlcnQoIWlkLT5uZXh0KTsKKyAgICAgICAgaWQtPm5leHQgPSBzdGF0aWNfc3RyaW5nczsKKyAgICAgICAgc3RhdGljX3N0cmluZ3MgPSBpZDsKKyAgICB9CisgICAgcmV0dXJuIGlkLT5vYmplY3Q7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKCkKK3sKKyAgICBfUHlfSWRlbnRpZmllciAqaTsKKyAgICBmb3IgKGkgPSBzdGF0aWNfc3RyaW5nczsgaTsgaSA9IGktPm5leHQpIHsKKyAgICAgICAgUHlfREVDUkVGKGktPm9iamVjdCk7CisgICAgICAgIGktPm9iamVjdCA9IE5VTEw7CisgICAgICAgIGktPm5leHQgPSBOVUxMOworICAgIH0KK30KKworLyogSW50ZXJuYWwgZnVuY3Rpb24sIGRvZXNuJ3QgY2hlY2sgbWF4aW11bSBjaGFyYWN0ZXIgKi8KKworUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21BU0NJSShjb25zdCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilidWZmZXI7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaWYgKHNpemUgPT0gMSkgeworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIGFzc2VydChzWzBdIDwgMTI4KTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKHNbMF0pOworICAgIH0KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtY3B5KFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpLCBzLCBzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5X1VDUzQKK2tpbmRfbWF4Y2hhcl9saW1pdCh1bnNpZ25lZCBpbnQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHg4MDsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gMHgxMDA7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4MTAwMDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gTUFYX1VOSUNPREU7CisgICAgfQorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK2FsaWduX21heGNoYXIoUHlfVUNTNCBtYXhjaGFyKQoreworICAgIGlmIChtYXhjaGFyIDw9IDEyNykKKyAgICAgICAgcmV0dXJuIDEyNzsKKyAgICBlbHNlIGlmIChtYXhjaGFyIDw9IDI1NSkKKyAgICAgICAgcmV0dXJuIDI1NTsKKyAgICBlbHNlIGlmIChtYXhjaGFyIDw9IDY1NTM1KQorICAgICAgICByZXR1cm4gNjU1MzU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTUFYX1VOSUNPREU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzEoY29uc3QgdW5zaWduZWQgY2hhciogdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgdW5zaWduZWQgY2hhciBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKHVbMF0pOworCisgICAgbWF4X2NoYXIgPSB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtZW1jcHkoUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21VQ1MyKGNvbnN0IFB5X1VDUzIgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X1VDUzIgbWF4X2NoYXI7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gdVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIG1heF9jaGFyID0gdWNzMmxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG1heF9jaGFyID49IDI1NikKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHJlcyksIHUsIHNpemVvZihQeV9VQ1MyKSpzaXplKTsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTMSwgdSwgdSArIHNpemUsIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeVVuaWNvZGVfRnJvbVVDUzQoY29uc3QgUHlfVUNTNCAqdSwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfVUNTNCBtYXhfY2hhcjsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSB1WzBdOworICAgICAgICBpZiAoY2ggPCAyNTYpCisgICAgICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKWNoKTsKKworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXMpLCBQeVVuaWNvZGVfREFUQShyZXMpLCAwLCBjaCk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgbWF4X2NoYXIgPSB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIHNpemUpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgbWF4X2NoYXIpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobWF4X2NoYXIgPCAyNTYpCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MxLCB1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykpOworICAgIGVsc2UgaWYgKG1heF9jaGFyIDwgMHgxMDAwMCkKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzQsIFB5X1VDUzIsIHUsIHUgKyBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocmVzKSk7CisgICAgZWxzZQorICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzRCWVRFX0RBVEEocmVzKSwgdSwgc2l6ZW9mKFB5X1VDUzQpKnNpemUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzaXplIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKGJ1ZmZlciwgc2l6ZSk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbVVDUzIoYnVmZmVyLCBzaXplKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTNChidWZmZXIsIHNpemUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK1B5X1VDUzQKK19QeVVuaWNvZGVfRmluZE1heENoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpzdGFydHB0ciwgKmVuZHB0cjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydCgwIDw9IHN0YXJ0KTsKKyAgICBhc3NlcnQoZW5kIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoc3RhcnQgPD0gZW5kKTsKKworICAgIGlmIChzdGFydCA9PSAwICYmIGVuZCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKTsKKworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiAxMjc7CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gMTI3OworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIHN0YXJ0cHRyID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgZW5kcHRyID0gKGNoYXIgKilzdGFydHB0ciArIGVuZCAqIGtpbmQ7CisgICAgc3RhcnRwdHIgPSAoY2hhciAqKXN0YXJ0cHRyICsgc3RhcnQgKiBraW5kOworICAgIHN3aXRjaChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczFsaWJfZmluZF9tYXhfY2hhcihzdGFydHB0ciwgZW5kcHRyKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl9maW5kX21heF9jaGFyKHN0YXJ0cHRyLCBlbmRwdHIpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIoc3RhcnRwdHIsIGVuZHB0cik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIEVuc3VyZSB0aGF0IGEgc3RyaW5nIHVzZXMgdGhlIG1vc3QgZWZmaWNpZW50IHN0b3JhZ2UsIGlmIGl0IGlzIG5vdCB0aGUKKyAgIGNhc2U6IGNyZWF0ZSBhIG5ldyBzdHJpbmcgd2l0aCBvZiB0aGUgcmlnaHQga2luZC4gV3JpdGUgTlVMTCBpbnRvICpwX3VuaWNvZGUKKyAgIG9uIGVycm9yLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfYWRqdXN0X21heGNoYXIoUHlPYmplY3QgKipwX3VuaWNvZGUpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpjb3B5OworICAgIFB5X1VDUzQgbWF4X2NoYXI7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisKKyAgICBhc3NlcnQocF91bmljb2RlICE9IE5VTEwpOworICAgIHVuaWNvZGUgPSAqcF91bmljb2RlOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1MxICp1ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzIgKnUgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3MybGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAyNTYpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjb25zdCBQeV9VQ1M0ICp1ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgbWF4X2NoYXIgPSB1Y3M0bGliX2ZpbmRfbWF4X2NoYXIodSwgdSArIGxlbik7CisgICAgICAgIGlmIChtYXhfY2hhciA+PSAweDEwMDAwKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb3B5ID0gUHlVbmljb2RlX05ldyhsZW4sIG1heF9jaGFyKTsKKyAgICBpZiAoY29weSAhPSBOVUxMKQorICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhjb3B5LCAwLCB1bmljb2RlLCAwLCBsZW4pOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAqcF91bmljb2RlID0gY29weTsKK30KKworUHlPYmplY3QqCitfUHlVbmljb2RlX0NvcHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlPYmplY3QgKmNvcHk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgY29weSA9IFB5VW5pY29kZV9OZXcobGVuZ3RoLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpOworICAgIGlmICghY29weSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKKworICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgIGxlbmd0aCAqIFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KGNvcHksIDEpKTsKKyAgICByZXR1cm4gY29weTsKK30KKworCisvKiBXaWRlbiBVbmljb2RlIG9iamVjdHMgdG8gbGFyZ2VyIGJ1ZmZlcnMuIERvbid0IHdyaXRlIHRlcm1pbmF0aW5nIG51bGwKKyAgIGNoYXJhY3Rlci4gUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCisKK3ZvaWQqCitfUHlVbmljb2RlX0FzS2luZChQeU9iamVjdCAqcywgdW5zaWduZWQgaW50IGtpbmQpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgdm9pZCAqcmVzdWx0OworICAgIHVuc2lnbmVkIGludCBza2luZDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocyk7CisgICAgc2tpbmQgPSBQeVVuaWNvZGVfS0lORChzKTsKKyAgICBpZiAoc2tpbmQgPj0ga2luZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIHdpZGVuaW5nIGF0dGVtcHQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTMikpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBhc3NlcnQoc2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1MyLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocyksCisgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGlmIChza2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzQsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChza2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTNCwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShzKSArIGxlbiwKKyAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImludmFsaWQga2luZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlfVUNTNCoKK2FzX3VjczQoUHlPYmplY3QgKnN0cmluZywgUHlfVUNTNCAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldHNpemUsCisgICAgICAgIGludCBjb3B5X251bGwpCit7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgdGFyZ2V0bGVuOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKKyAgICB0YXJnZXRsZW4gPSBsZW47CisgICAgaWYgKGNvcHlfbnVsbCkKKyAgICAgICAgdGFyZ2V0bGVuKys7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VDUzQpIDwgdGFyZ2V0bGVuKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdGFyZ2V0ID0gUHlNZW1fTWFsbG9jKHRhcmdldGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0YXJnZXRzaXplIDwgdGFyZ2V0bGVuKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBpcyBsb25nZXIgdGhhbiB0aGUgYnVmZmVyIik7CisgICAgICAgICAgICBpZiAoY29weV9udWxsICYmIDAgPCB0YXJnZXRzaXplKQorICAgICAgICAgICAgICAgIHRhcmdldFswXSA9IDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpzdGFydCA9IChQeV9VQ1MxICopIGRhdGE7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1MxLCBQeV9VQ1M0LCBzdGFydCwgc3RhcnQgKyBsZW4sIHRhcmdldCk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqc3RhcnQgPSAoUHlfVUNTMiAqKSBkYXRhOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTMiwgUHlfVUNTNCwgc3RhcnQsIHN0YXJ0ICsgbGVuLCB0YXJnZXQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBQeV9NRU1DUFkodGFyZ2V0LCBkYXRhLCBsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgIH0KKyAgICBpZiAoY29weV9udWxsKQorICAgICAgICB0YXJnZXRbbGVuXSA9IDA7CisgICAgcmV0dXJuIHRhcmdldDsKK30KKworUHlfVUNTNCoKK1B5VW5pY29kZV9Bc1VDUzQoUHlPYmplY3QgKnN0cmluZywgUHlfVUNTNCAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldHNpemUsCisgICAgICAgICAgICAgICAgIGludCBjb3B5X251bGwpCit7CisgICAgaWYgKHRhcmdldCA9PSBOVUxMIHx8IHRhcmdldHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzX3VjczQoc3RyaW5nLCB0YXJnZXQsIHRhcmdldHNpemUsIGNvcHlfbnVsbCk7Cit9CisKK1B5X1VDUzQqCitQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqc3RyaW5nKQoreworICAgIHJldHVybiBhc191Y3M0KHN0cmluZywgTlVMTCwgMCwgMSk7CiB9CiAKICNpZmRlZiBIQVZFX1dDSEFSX0gKIAotI2lmIChQeV9VTklDT0RFX1NJWkUgPT0gMikgJiYgZGVmaW5lZChTSVpFT0ZfV0NIQVJfVCkgJiYgKFNJWkVPRl9XQ0hBUl9UID09IDQpCi0jIGRlZmluZSBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMKLSNlbmRpZgotCi0jaWZkZWYgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCi0KLS8qIEhlcmUgc2l6ZW9mKHdjaGFyX3QpIGlzIDQgYnV0IFB5X1VOSUNPREVfU0laRSA9PSAyLCBzbyB3ZSBuZWVkCi0gICB0byBjb252ZXJ0IGZyb20gVVRGMzIgdG8gVVRGMTYuICovCi0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHJlZ2lzdGVyIGNvbnN0IHdjaGFyX3QgKncsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIFB5X3NzaXplX3QgYWxsb2M7Ci0gICAgY29uc3Qgd2NoYXJfdCAqb3JpZ193OwotCiAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIHNpemUgPSB3Y3NsZW4odyk7Ci0gICAgfQotCi0gICAgYWxsb2MgPSBzaXplOwotICAgIG9yaWdfdyA9IHc7Ci0gICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgewotICAgICAgICBpZiAoKncgPiAweEZGRkYpCi0gICAgICAgICAgICBhbGxvYysrOwotICAgICAgICB3Kys7Ci0gICAgfQotICAgIHcgPSBvcmlnX3c7Ci0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KGFsbG9jKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogQ29weSB0aGUgd2NoYXJfdCBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnU7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgewotICAgICAgICAgICAgaWYgKCp3ID4gMHhGRkZGKSB7Ci0gICAgICAgICAgICAgICAgd2NoYXJfdCBvcmRpbmFsID0gKncrKzsKLSAgICAgICAgICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgKnUrKyA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqdSsrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKnUrKyA9ICp3Kys7CisgICAgICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotfQotCi0jZWxzZQotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQotewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLQotICAgIGlmICh3ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC02NDcsMjkgKzIyNTgsMTAgQEAKICAgICAgICAgc2l6ZSA9IHdjc2xlbih3KTsKICAgICB9CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENvcHkgdGhlIHdjaGFyX3QgZGF0YSBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCi0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgbWVtY3B5KHVuaWNvZGUtPnN0ciwgdywgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdTsKLSAgICAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pCi0gICAgICAgICAgICAqdSsrID0gKncrKzsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodywgc2l6ZSk7CiB9CiAKLSNlbmRpZiAvKiBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMgKi8KLQotI3VuZGVmIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUworI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCiBzdGF0aWMgdm9pZAogbWFrZWZtdChjaGFyICpmbXQsIGludCBsb25nZmxhZywgaW50IGxvbmdsb25nZmxhZywgaW50IHNpemVfdGZsYWcsCkBAIC03MDcsMTAgKzIyOTksNzEgQEAKICAgICAqZm10ID0gJ1wwJzsKIH0KIAotI2RlZmluZSBhcHBlbmRzdHJpbmcoc3RyaW5nKSB7Zm9yIChjb3B5ID0gc3RyaW5nOypjb3B5OykgKnMrKyA9ICpjb3B5Kys7fQorLyogaGVscGVyIGZvciBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSAqLwogCi0vKiBzaXplIG9mIGZpeGVkLXNpemUgYnVmZmVyIGZvciBmb3JtYXR0aW5nIHNpbmdsZSBhcmd1bWVudHMgKi8KLSNkZWZpbmUgSVRFTV9CVUZGRVJfTEVOIDIxCitzdGF0aWMgY29uc3QgY2hhcioKK3BhcnNlX2Zvcm1hdF9mbGFncyhjb25zdCBjaGFyICpmLAorICAgICAgICAgICAgICAgICAgIGludCAqcF93aWR0aCwgaW50ICpwX3ByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICBpbnQgKnBfbG9uZ2ZsYWcsIGludCAqcF9sb25nbG9uZ2ZsYWcsIGludCAqcF9zaXplX3RmbGFnKQoreworICAgIGludCB3aWR0aCwgcHJlY2lzaW9uLCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnOworCisgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0LCBlLmcuICIlMi41cyIgPT4gd2lkdGg9MiwgcHJlY2lzaW9uPTUgKi8KKyAgICBmKys7CisgICAgd2lkdGggPSAwOworICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCisgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7CisgICAgcHJlY2lzaW9uID0gMDsKKyAgICBpZiAoKmYgPT0gJy4nKSB7CisgICAgICAgIGYrKzsKKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKKyAgICAgICAgICAgIHByZWNpc2lvbiA9IChwcmVjaXNpb24qMTApICsgKmYrKyAtICcwJzsKKyAgICAgICAgaWYgKCpmID09ICclJykgeworICAgICAgICAgICAgLyogIiUuMyVzIiA9PiBmIHBvaW50cyB0byAiMyIgKi8KKyAgICAgICAgICAgIGYtLTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoKmYgPT0gJ1wwJykgeworICAgICAgICAvKiBib2d1cyBmb3JtYXQgIiUuMSIgPT4gZ28gYmFja3dhcmQsIGYgcG9pbnRzIHRvICIxIiAqLworICAgICAgICBmLS07CisgICAgfQorICAgIGlmIChwX3dpZHRoICE9IE5VTEwpCisgICAgICAgICpwX3dpZHRoID0gd2lkdGg7CisgICAgaWYgKHBfcHJlY2lzaW9uICE9IE5VTEwpCisgICAgICAgICpwX3ByZWNpc2lvbiA9IHByZWNpc2lvbjsKKworICAgIC8qIEhhbmRsZSAlbGQsICVsdSwgJWxsZCBhbmQgJWxsdS4gKi8KKyAgICBsb25nZmxhZyA9IDA7CisgICAgbG9uZ2xvbmdmbGFnID0gMDsKKyAgICBzaXplX3RmbGFnID0gMDsKKworICAgIGlmICgqZiA9PSAnbCcpIHsKKyAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSB7CisgICAgICAgICAgICBsb25nZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICBlbHNlIGlmIChmWzFdID09ICdsJyAmJgorICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScgfHwgZlsyXSA9PSAnaScpKSB7CisgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgZiArPSAyOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KKyAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSkgeworICAgICAgICBzaXplX3RmbGFnID0gMTsKKyAgICAgICAgKytmOworICAgIH0KKyAgICBpZiAocF9sb25nZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9sb25nZmxhZyA9IGxvbmdmbGFnOworICAgIGlmIChwX2xvbmdsb25nZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9sb25nbG9uZ2ZsYWcgPSBsb25nbG9uZ2ZsYWc7CisgICAgaWYgKHBfc2l6ZV90ZmxhZyAhPSBOVUxMKQorICAgICAgICAqcF9zaXplX3RmbGFnID0gc2l6ZV90ZmxhZzsKKyAgICByZXR1cm4gZjsKK30KKwogLyogbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCBmb3Igb3V0cHV0IG9mICVsZC4gIDIxIGNoYXJhY3RlcnMKICAgIGFsbG93cyBmb3IgNjQtYml0IGludGVnZXJzIChpbiBkZWNpbWFsKSBhbmQgYW4gb3B0aW9uYWwgc2lnbi4gKi8KICNkZWZpbmUgTUFYX0xPTkdfQ0hBUlMgMjEKQEAgLTczMSwxMDYgKzIzODQsMzUgQEAKICAgICBpbnQgcHJlY2lzaW9uID0gMDsKICAgICBpbnQgemVyb3BhZDsKICAgICBjb25zdCBjaGFyKiBmOwotICAgIFB5X1VOSUNPREUgKnM7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICAvKiB1c2VkIGJ5IHNwcmludGYgKi8KLSAgICBjaGFyIGJ1ZmZlcltJVEVNX0JVRkZFUl9MRU4rMV07Ci0gICAgLyogdXNlIGFidWZmZXIgaW5zdGVhZCBvZiBidWZmZXIsIGlmIHdlIG5lZWQgbW9yZSBzcGFjZQotICAgICAqICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZXJlJ3MgYSBmb3JtYXQgc3BlY2lmaWVyIHdpdGggd2lkdGgpLiAqLwotICAgIGNoYXIgKmFidWZmZXIgPSBOVUxMOwotICAgIGNoYXIgKnJlYWxidWZmZXI7Ci0gICAgUHlfc3NpemVfdCBhYnVmZmVyc2l6ZSA9IDA7CiAgICAgY2hhciBmbXRbNjFdOyAvKiBzaG91bGQgYmUgZW5vdWdoIGZvciAlMHdpZHRoLnByZWNpc2lvbmxsZCAqLwotICAgIGNvbnN0IGNoYXIgKmNvcHk7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OyAvKiByZXN1bHQgaXMgQVNDSUkgYnkgZGVmYXVsdCAqLworICAgIFB5X1VDUzQgYXJnbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IG51bWJlcnNpemUgPSAwOworICAgIGNoYXIgKm51bWJlcnJlc3VsdHMgPSBOVUxMOworICAgIGNoYXIgKm51bWJlcnJlc3VsdCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBQeV9WQV9DT1BZKGNvdW50LCB2YXJncyk7CiAgICAgLyogc3RlcCAxOiBjb3VudCB0aGUgbnVtYmVyIG9mICVTLyVSLyVBLyVzIGZvcm1hdCBzcGVjaWZpY2F0aW9ucwogICAgICAqICh3ZSBjYWxsIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeU9iamVjdF9BU0NJSSgpLwogICAgICAqIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgZm9yIHRoZXNlIG9iamVjdHMgb25jZSBkdXJpbmcgc3RlcCAzIGFuZCBwdXQgdGhlCi0gICAgICogcmVzdWx0IGluIGFuIGFycmF5KSAqLwotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgIGlmICgqKGYrMSk9PSclJykKLSAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgaWYgKCooZisxKT09J1MnIHx8ICooZisxKT09J1InIHx8ICooZisxKT09J0EnIHx8ICooZisxKSA9PSAnVicpCi0gICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwotICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICAgd2hpbGUgKCorK2YgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgICBpZiAoKmYgPT0gJ3MnKQotICAgICAgICAgICAgICAgICArK2NhbGxjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYgKDEyOCA8PSAodW5zaWduZWQgY2hhcikqZikgewotICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAic3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHglMDJ4IiwKLSAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikqZik7Ci0gICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICB9Ci0gICAgfQotICAgIC8qIHN0ZXAgMjogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZgotICAgICAqIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGNhbGxzICovCi0gICAgaWYgKGNhbGxjb3VudCkgewotICAgICAgICBjYWxscmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikqY2FsbGNvdW50KTsKLSAgICAgICAgaWYgKCFjYWxscmVzdWx0cykgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKLSAgICB9Ci0gICAgLyogc3RlcCAzOiBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCisgICAgICogcmVzdWx0IGluIGFuIGFycmF5KQorICAgICAqIGFsc28gZXN0aW1hdGUgYSB1cHBlciBib3VuZCBmb3IgYWxsIHRoZSBudW1iZXIgZm9ybWF0cyBpbiB0aGUgc3RyaW5nLAorICAgICAqIG51bWJlcnMgd2lsbCBiZSBmb3JtYXR0ZWQgaW4gc3RlcCAzIGFuZCBiZSBrZXB0IGluIGEgJ1wwJy1zZXBhcmF0ZWQKKyAgICAgKiBidWZmZXIgYmVmb3JlIHB1dHRpbmcgZXZlcnl0aGluZyB0b2dldGhlci4gKi8KICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnID0gMDsKLSNlbmRpZgotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGY7Ci0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnOworICAgICAgICAgICAgLyogc2tpcCB3aWR0aCBvciB3aWR0aC5wcmVjaXNpb24gKGVnLiAiMS4yIiBvZiAiJTEuMmYiKSAqLworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsIE5VTEwsIE5VTEwsICZsb25nbG9uZ2ZsYWcsIE5VTEwpOworICAgICAgICAgICAgaWYgKCpmID09ICdzJyB8fCAqZj09J1MnIHx8ICpmPT0nUicgfHwgKmY9PSdBJyB8fCAqZj09J1YnKQorICAgICAgICAgICAgICAgICsrY2FsbGNvdW50OwogCi0gICAgICAgICAgICAvKiBza2lwIHRoZSAnbCcgb3IgJ3onIGluIHslbGQsICV6ZCwgJWx1LCAlenV9IHNpbmNlCi0gICAgICAgICAgICAgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICBmICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGludCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKQotICAgICAgICAgICAgICAgICAgICBuICs9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBuKys7Ci0jZWxzZQotICAgICAgICAgICAgICAgICh2b2lkKXZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBuKys7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICd1JzogY2FzZSAnaSc6IGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7CisgICAgICAgICAgICBlbHNlIGlmICgqZiA9PSAnZCcgfHwgKmY9PSd1JyB8fCAqZj09J2knIHx8ICpmPT0neCcgfHwgKmY9PSdwJykgewogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgaWYgKGxvbmdsb25nZmxhZykgewogICAgICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCBNQVhfTE9OR19MT05HX0NIQVJTKQpAQCAtODQ0LDE5ICsyNDI2LDE1NSBAQAogICAgICAgICAgICAgICAgICAgICAgICBuZWVkIG1vcmUgKHdoaWNoIHdlIGFsbG9jYXRlIGxhdGVyKS4gKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgTUFYX0xPTkdfQ0hBUlMpCiAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IE1BWF9MT05HX0NIQVJTOwotICAgICAgICAgICAgICAgIG4gKz0gd2lkdGg7Ci0gICAgICAgICAgICAgICAgLyogWFhYIHNob3VsZCBhbGxvdyBmb3IgbGFyZ2UgcHJlY2lzaW9uIGhlcmUgdG9vLiAqLwotICAgICAgICAgICAgICAgIGlmIChhYnVmZmVyc2l6ZSA8IHdpZHRoKQotICAgICAgICAgICAgICAgICAgICBhYnVmZmVyc2l6ZSA9IHdpZHRoOworCisgICAgICAgICAgICAgICAgLyogYWNjb3VudCBmb3IgdGhlIHNpemUgKyAnXDAnIHRvIHNlcGFyYXRlIG51bWJlcnMKKyAgICAgICAgICAgICAgICAgICBpbnNpZGUgb2YgdGhlIG51bWJlcnJlc3VsdHMgYnVmZmVyICovCisgICAgICAgICAgICAgICAgbnVtYmVyc2l6ZSArPSAod2lkdGggKyAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgodW5zaWduZWQgY2hhcikqZiA+IDEyNykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICJzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweCUwMngiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKSpmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIC8qIHN0ZXAgMjogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZgorICAgICAqIFB5T2JqZWN0X1N0cigpL1B5T2JqZWN0X1JlcHIoKS9QeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGNhbGxzICovCisgICAgaWYgKGNhbGxjb3VudCkgeworICAgICAgICBjYWxscmVzdWx0cyA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUHlPYmplY3QgKikgKiBjYWxsY291bnQpOworICAgICAgICBpZiAoIWNhbGxyZXN1bHRzKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgY2FsbHJlc3VsdCA9IGNhbGxyZXN1bHRzOworICAgIH0KKyAgICAvKiBzdGVwIDIuNTogYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgcmVzdWx0cyBvZiBmb3JtYXRpbmcgbnVtYmVycyAqLworICAgIGlmIChudW1iZXJzaXplKSB7CisgICAgICAgIG51bWJlcnJlc3VsdHMgPSBQeU9iamVjdF9NYWxsb2MobnVtYmVyc2l6ZSk7CisgICAgICAgIGlmICghbnVtYmVycmVzdWx0cykgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOworICAgIH0KKworICAgIC8qIHN0ZXAgMzogZm9ybWF0IG51bWJlcnMgYW5kIGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KKyAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKKyAgICAgICAgaWYgKCpmID09ICclJykgeworICAgICAgICAgICAgY29uc3QgY2hhciogcDsKKyAgICAgICAgICAgIGludCBsb25nZmxhZzsKKyAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWc7CisgICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAgICAgICAgIGludCBudW1wcmludGVkOworCisgICAgICAgICAgICBwID0gZjsKKyAgICAgICAgICAgIHplcm9wYWQgPSAoZlsxXSA9PSAnMCcpOworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCAmd2lkdGgsICZwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb25nZmxhZywgJmxvbmdsb25nZmxhZywgJnNpemVfdGZsYWcpOworICAgICAgICAgICAgc3dpdGNoICgqZikgeworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBvcmRpbmFsID0gdmFfYXJnKGNvdW50LCBpbnQpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBvcmRpbmFsKTsKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgICAgICBuKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgKmYpOworICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIFB5X3NzaXplX3QpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIGludCkpOworICAgICAgICAgICAgICAgIG4gKz0gbnVtcHJpbnRlZDsKKyAgICAgICAgICAgICAgICAvKiBhZHZhbmNlIGJ5ICsxIHRvIHNraXAgb3ZlciB0aGUgJ1wwJyAqLworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAndScpOworICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgbG9uZykpOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHNpemVfdCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsIHplcm9wYWQsIHdpZHRoLCBwcmVjaXNpb24sICd4Jyk7CisgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsIHZhX2FyZyhjb3VudCwgaW50KSk7CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCAiJXAiLCB2YV9hcmcoY291bnQsIHZvaWQqKSk7CisgICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KKyAgICAgICAgICAgICAgICBpZiAobnVtYmVycmVzdWx0WzFdID09ICdYJykKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzFdID0gJ3gnOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG51bWJlcnJlc3VsdFsxXSAhPSAneCcpIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShudW1iZXJyZXN1bHQgKyAyLCBudW1iZXJyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG51bWJlcnJlc3VsdCkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzBdID0gJzAnOworICAgICAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHRbMV0gPSAneCc7CisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgKz0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbiArPSBudW1wcmludGVkOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSAobnVtcHJpbnRlZCArIDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDEpID09ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydCgqKG51bWJlcnJlc3VsdCAtIDIpICE9ICdcMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChudW1wcmludGVkID49IDApOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogVVRGLTggKi8KICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gdmFfYXJnKGNvdW50LCBjb25zdCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHN0cmxlbihzKSwgInJlcGxhY2UiKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzdHJsZW4ocyksICJyZXBsYWNlIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHIpOworICAgICAgICAgICAgICAgIC8qIHNpbmNlIFB5VW5pY29kZV9EZWNvZGVVVEY4IHJldHVybnMgYWxyZWFkeSBmbGV4aWJsZQorICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgb2JqZWN0cywgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHJlYWR5IG9uIHRoZW0gKi8KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgc3RyIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04NjQsOCArMjU4MiwxMiBAQAogICAgICAgICAgICAgY2FzZSAnVSc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyhjb3VudCwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG9iaiAmJiBQeVVuaWNvZGVfQ2hlY2sob2JqKSk7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQob2JqICYmIF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShvYmopOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdWJzoKQEAgLTg3NCwxNiArMjU5NiwyNiBAQAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IHZhX2FyZyhjb3VudCwgY29uc3QgY2hhciAqKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyX29iajsKICAgICAgICAgICAgICAgICBhc3NlcnQob2JqIHx8IHN0cik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFvYmogfHwgUHlVbmljb2RlX0NoZWNrKG9iaikpOworICAgICAgICAgICAgICAgIGFzc2VydCghb2JqIHx8IF9QeVVuaWNvZGVfQ0hFQ0sob2JqKSk7CiAgICAgICAgICAgICAgICAgaWYgKG9iaikgewotICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHN0ciwgc3RybGVuKHN0ciksICJyZXBsYWNlIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyX29iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaik7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cl9vYmopOworICAgICAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CiAgICAgICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHJfb2JqOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTg5Niw3ICsyNjI4LDEzIEBACiAgICAgICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfU0laRShzdHIpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgc3RyIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBzdHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MDksNyArMjY0NywxMyBAQAogICAgICAgICAgICAgICAgIHJlcHIgPSBQeU9iamVjdF9SZXByKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXByKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwcik7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXByKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXByKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgcmVwciBhbmQgc3dpdGNoIHRvIHRoZSBuZXh0IHNsb3QgKi8KICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gcmVwcjsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkyMiwyMCArMjY2NiwxNyBAQAogICAgICAgICAgICAgICAgIGFzY2lpID0gUHlPYmplY3RfQVNDSUkob2JqKTsKICAgICAgICAgICAgICAgICBpZiAoIWFzY2lpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoYXNjaWkpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXNjaWkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhc2NpaSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShhc2NpaSk7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXNjaWkpOwogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHRoZSByZXByIGFuZCBzd2l0Y2ggdG8gdGhlIG5leHQgc2xvdCAqLwogICAgICAgICAgICAgICAgICpjYWxscmVzdWx0KysgPSBhc2NpaTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogbWF4aW11bSA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgKiAweGZmZmZmZmZmZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgKiBzbyAxOSBjaGFyYWN0ZXJzIGlzIGVub3VnaC4KLSAgICAgICAgICAgICAgICAgKiBYWFggSSBjb3VudCAxOCAtLSB3aGF0J3MgdGhlIGV4dHJhIGZvcj8KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuICs9IDE5OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgogICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgpAQCAtOTUwLDEyNyArMjY5MSw2OCBAQAogICAgICAgICAgICAgbisrOwogICAgIH0KICAgZXhwYW5kOgotICAgIGlmIChhYnVmZmVyc2l6ZSA+IElURU1fQlVGRkVSX0xFTikgewotICAgICAgICAvKiBhZGQgMSBmb3Igc3ByaW50ZidzIHRyYWlsaW5nIG51bGwgYnl0ZSAqLwotICAgICAgICBhYnVmZmVyID0gUHlPYmplY3RfTWFsbG9jKGFidWZmZXJzaXplICsgMSk7Ci0gICAgICAgIGlmICghYWJ1ZmZlcikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotICAgICAgICByZWFsYnVmZmVyID0gYWJ1ZmZlcjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZWFsYnVmZmVyID0gYnVmZmVyOwogICAgIC8qIHN0ZXAgNDogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCBmb3IgdGhlIHdvcnN0IGNhc2UsCisgICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCwKICAgICAgICB3ZSBkb24ndCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nLgogICAgICAgIFRoZXJlIGNhbiBiZSBubyBlcnJvcnMgYmV5b25kIHRoaXMgcG9pbnQuICovCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG4pOworICAgIHN0cmluZyA9IFB5VW5pY29kZV9OZXcobiwgbWF4Y2hhcik7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIGdvdG8gZmFpbDsKLQotICAgIHMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwogICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKKyAgICBudW1iZXJyZXN1bHQgPSBudW1iZXJyZXN1bHRzOwogCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7CisgICAgZm9yIChpID0gMCwgZiA9IGZvcm1hdDsgKmY7IGYrKykgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZisrOwotICAgICAgICAgICAgaW50IGxvbmdmbGFnID0gMDsKLSAgICAgICAgICAgIGludCBsb25nbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWcgPSAwOwotICAgICAgICAgICAgemVyb3BhZCA9ICgqZiA9PSAnMCcpOwotICAgICAgICAgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0ICovCi0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgIHdpZHRoID0gKHdpZHRoKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICBwcmVjaXNpb24gPSAwOwotICAgICAgICAgICAgaWYgKCpmID09ICcuJykgewotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSAocHJlY2lzaW9uKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBIYW5kbGUgJWxkLCAlbHUsICVsbGQgYW5kICVsbHUuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICAgICBmICs9IDI7Ci0gICAgICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3QgY2hhciogcDsKKworICAgICAgICAgICAgcCA9IGY7CisgICAgICAgICAgICBmID0gcGFyc2VfZm9ybWF0X2ZsYWdzKGYsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgLyogY2hlY2tpbmcgZm9yID09IGJlY2F1c2UgdGhlIGxhc3QgYXJndW1lbnQgY291bGQgYmUgYSBlbXB0eQorICAgICAgICAgICAgICAgc3RyaW5nLCB3aGljaCBjYXVzZXMgaSB0byBwb2ludCB0byBlbmQsIHRoZSBhc3NlcnQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgdGhlIGxvb3AgKi8KKyAgICAgICAgICAgIGFzc2VydChpIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogCiAgICAgICAgICAgICBzd2l0Y2ggKCpmKSB7CiAgICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgb3JkaW5hbCA9IHZhX2FyZyh2YXJncywgaW50KTsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKG9yZGluYWwgPiAweGZmZmYpIHsKLSAgICAgICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcysrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICAgICAqcysrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAqcysrID0gb3JkaW5hbDsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgb3JkaW5hbCA9IHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSsrLCBvcmRpbmFsKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAotICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgJ2QnKTsKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICd1Jyk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCAwLCAwLCAwLCB6ZXJvcGFkLCB3aWR0aCwgcHJlY2lzaW9uLCAnaScpOwotICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhyZWFsYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ3gnKTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7CisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCisgICAgICAgICAgICAgICAgaWYgKCpmID09ICdwJykKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyh2YXJncywgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICAgICAgLyogZXh0cmFjdCB0aGUgcmVzdWx0IGZyb20gbnVtYmVycmVzdWx0cyBhbmQgYXBwZW5kLiAqLworICAgICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihudW1iZXJyZXN1bHQpOworICAgICAgICAgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cihzdHJpbmcsIGksIG51bWJlcnJlc3VsdCwgbGVuKTsKKyAgICAgICAgICAgICAgICAvKiBza2lwIG92ZXIgdGhlIHNlcGFyYXRpbmcgJ1wwJyAqLworICAgICAgICAgICAgICAgIGkgKz0gbGVuOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCArPSBsZW47CisgICAgICAgICAgICAgICAgYXNzZXJ0KCpudW1iZXJyZXN1bHQgPT0gJ1wwJyk7CisgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0Kys7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG51bWJlcnJlc3VsdCA8PSBudW1iZXJyZXN1bHRzICsgbnVtYmVyc2l6ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiB1bnVzZWQsIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0ICovCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwogICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIGNoYXIgKik7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHMsIFB5VW5pY29kZV9BU19VTklDT0RFKCpjYWxscmVzdWx0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB1bmljb2RlKCkvcmVwcigpID0+IGZvcmdldCBpdCAqLwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIG5leHQgdW5pY29kZSgpL3JlcHIoKSByZXN1bHQgKi8KQEAgLTEwODAsMjMgKzI3NjIsMjkgQEAKICAgICAgICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLCBzaXplKTsKLSAgICAgICAgICAgICAgICBzICs9IHNpemU7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChvYmopIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgb2JqLCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlICdWJzoKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKik7CiAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgICAgIGlmIChvYmopIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLCBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcyArPSBzaXplOworICAgICAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKG9iaikgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgb2JqLCAwLCBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqY2FsbHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICAgICAgcyArPSBQeVVuaWNvZGVfR0VUX1NJWkUoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoKmNhbGxyZXN1bHQpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCAqY2FsbHJlc3VsdCwgMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgKytjYWxscmVzdWx0OwpAQCAtMTEwNiw1MiArMjc5NCw0NCBAQAogICAgICAgICAgICAgY2FzZSAnUic6CiAgICAgICAgICAgICBjYXNlICdBJzoKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICp1Y29weTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVzaXplOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdXBvczsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgLyogdW51c2VkLCBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCAqLwogICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIHVjb3B5ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKmNhbGxyZXN1bHQpOwotICAgICAgICAgICAgICAgIHVzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICBmb3IgKHVwb3MgPSAwOyB1cG9zPHVzaXplOykKLSAgICAgICAgICAgICAgICAgICAgKnMrKyA9IHVjb3B5W3Vwb3MrK107CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksICpjYWxscmVzdWx0LCAwLCAgc2l6ZSk7CisgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdW5pY29kZSgpL3JlcHIoKSA9PiBmb3JnZXQgaXQgKi8KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIC8qIHN3aXRjaCB0byBuZXh0IHVuaWNvZGUoKS9yZXByKCkgcmVzdWx0ICovCiAgICAgICAgICAgICAgICAgKytjYWxscmVzdWx0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKLSAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLwotICAgICAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyWzFdICE9ICd4JykgewotICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlcisyLCBidWZmZXIsIHN0cmxlbihidWZmZXIpKzEpOwotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssICclJyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhwKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IHN0cmxlbihwKTsKKyAgICAgICAgICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIoc3RyaW5nLCBpLCBwLCBsZW4pOworICAgICAgICAgICAgICAgIGkgKz0gbGVuOworICAgICAgICAgICAgICAgIGFzc2VydChpID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogICAgICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGkrKywgKmYpOworICAgICAgICB9CiAgICAgfQorICAgIGFzc2VydChpID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZykpOwogCiAgIGVuZDoKICAgICBpZiAoY2FsbHJlc3VsdHMpCiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoY2FsbHJlc3VsdHMpOwotICAgIGlmIChhYnVmZmVyKQotICAgICAgICBQeU9iamVjdF9GcmVlKGFidWZmZXIpOwotICAgIFB5VW5pY29kZV9SZXNpemUoJnN0cmluZywgcyAtIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cmluZykpOwotICAgIHJldHVybiBzdHJpbmc7CisgICAgaWYgKG51bWJlcnJlc3VsdHMpCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobnVtYmVycmVzdWx0cyk7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHN0cmluZyk7CiAgIGZhaWw6CiAgICAgaWYgKGNhbGxyZXN1bHRzKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY2FsbHJlc3VsdDIgPSBjYWxscmVzdWx0czsKQEAgLTExNjEsMTMgKzI4NDEsMTEgQEAKICAgICAgICAgfQogICAgICAgICBQeU9iamVjdF9GcmVlKGNhbGxyZXN1bHRzKTsKICAgICB9Ci0gICAgaWYgKGFidWZmZXIpCi0gICAgICAgIFB5T2JqZWN0X0ZyZWUoYWJ1ZmZlcik7CisgICAgaWYgKG51bWJlcnJlc3VsdHMpCisgICAgICAgIFB5T2JqZWN0X0ZyZWUobnVtYmVycmVzdWx0cyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBhcHBlbmRzdHJpbmcKLQogUHlPYmplY3QgKgogUHlVbmljb2RlX0Zyb21Gb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CkBAIC0xMTg0LDYgKzI4NjIsOCBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKyNpZmRlZiBIQVZFX1dDSEFSX0gKKwogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpIGFuZCBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpOgogICAgY29udmVydCBhIFVuaWNvZGUgb2JqZWN0IHRvIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLgogCkBAIC0xMTk0LDEwMyArMjg3NCwyNyBAQAogICAgICBjaGFyYWN0ZXIpIHdyaXR0ZW4gaW50byB3LiBXcml0ZSBhdCBtb3N0IHNpemUgd2lkZSBjaGFyYWN0ZXJzIChpbmNsdWRpbmcKICAgICAgdGhlIG51bGwgY2hhcmFjdGVyKS4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci11bmljb2RlX2Fzd2lkZWNoYXIoUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlLAordW5pY29kZV9hc3dpZGVjaGFyKFB5T2JqZWN0ICp1bmljb2RlLAogICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKncsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAogICAgIFB5X3NzaXplX3QgcmVzOworICAgIGNvbnN0IHdjaGFyX3QgKndzdHI7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJnJlcyk7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCiAgICAgaWYgKHcgIT0gTlVMTCkgewotICAgICAgICByZXMgPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7CiAgICAgICAgIGlmIChzaXplID4gcmVzKQogICAgICAgICAgICAgc2l6ZSA9IHJlcyArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IHNpemU7Ci0gICAgICAgIG1lbWNweSh3LCB1bmljb2RlLT5zdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSArIDE7Ci0jZWxpZiBQeV9VTklDT0RFX1NJWkUgPT0gMiAmJiBTSVpFT0ZfV0NIQVJfVCA9PSA0Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqdTsKLSAgICBjb25zdCBQeV9VTklDT0RFICp1ZW5kOwotICAgIGNvbnN0IHdjaGFyX3QgKndvcmlnLCAqd2VuZDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyOwotCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIHVlbmQgPSB1ICsgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpOwotICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgd29yaWcgPSB3OwotICAgICAgICB3ZW5kID0gdyArIHNpemU7Ci0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQgJiYgdyAhPSB3ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IHVbMF0gJiYgdVswXSA8PSAweERCRkYKLSAgICAgICAgICAgICAgICAmJiAweERDMDAgPD0gdVsxXSAmJiB1WzFdIDw9IDB4REZGRikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqdyA9ICgoKHVbMF0gJiAweDNGRikgPDwgMTApIHwgKHVbMV0gJiAweDNGRikpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICB1ICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdyA9ICp1OwotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHcrKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodyAhPSB3ZW5kKQotICAgICAgICAgICAgKncgPSBMJ1wwJzsKLSAgICAgICAgcmV0dXJuIHcgLSB3b3JpZzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG5jaGFyID0gMTsgLyogbnVsbCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAqLwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IHVbMF0gJiYgdVswXSA8PSAweERCRkYKLSAgICAgICAgICAgICAgICAmJiAweERDMDAgPD0gdVsxXSAmJiB1WzFdIDw9IDB4REZGRikKLSAgICAgICAgICAgICAgICB1ICs9IDI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdSsrOwotICAgICAgICAgICAgbmNoYXIrKzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbmNoYXI7Ci0jZWxpZiBQeV9VTklDT0RFX1NJWkUgPT0gNCAmJiBTSVpFT0ZfV0NIQVJfVCA9PSAyCi0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqdSwgKnVlbmQsIG9yZGluYWw7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgIHdjaGFyX3QgKndvcmlnLCAqd2VuZDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyOwotCi0gICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIHVlbmQgPSB1ICsgUHlVbmljb2RlX0dFVF9TSVpFKHUpOwotICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgd29yaWcgPSB3OwotICAgICAgICB3ZW5kID0gdyArIHNpemU7Ci0gICAgICAgIHdoaWxlICh1ICE9IHVlbmQgJiYgdyAhPSB3ZW5kKSB7Ci0gICAgICAgICAgICBvcmRpbmFsID0gKnU7Ci0gICAgICAgICAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICAgICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgICAgICAgICAqdysrID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICAgICAgICAgICp3KysgPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqdysrID0gb3JkaW5hbDsKLSAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBpZiAodyAhPSB3ZW5kKQotICAgICAgICAgICAgKncgPSAwOwotICAgICAgICByZXR1cm4gdyAtIHdvcmlnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmNoYXIgPSAxOyAvKiBudWxsIGNoYXJhY3RlciAqLwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnUgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgbmNoYXIgKz0gMjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuY2hhcisrOwotICAgICAgICAgICAgdSsrOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuY2hhcjsKLSAgICB9Ci0jZWxzZQotIyAgZXJyb3IgInVuc3VwcG9ydGVkIHdjaGFyX3QgYW5kIFB5X1VOSUNPREUgc2l6ZXMsIHNlZSBpc3N1ZSAjODY3MCIKLSNlbmRpZgorICAgICAgICByZXR1cm4gcmVzICsgMTsKIH0KIAogUHlfc3NpemVfdApAQCAtMTMwMiw3ICsyOTA2LDcgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIHVuaWNvZGVfYXN3aWRlY2hhcigoUHlVbmljb2RlT2JqZWN0Kil1bmljb2RlLCB3LCBzaXplKTsKKyAgICByZXR1cm4gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIHcsIHNpemUpOwogfQogCiB3Y2hhcl90KgpAQCAtMTMxNyw3ICsyOTIxLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlLCBOVUxMLCAwKTsKKyAgICBidWZsZW4gPSB1bmljb2RlX2Fzd2lkZWNoYXIodW5pY29kZSwgTlVMTCwgMCk7CisgICAgaWYgKGJ1ZmxlbiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIDwgYnVmbGVuKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMyOCw1MCArMjkzNCw1NCBAQAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlLCBidWZmZXIsIGJ1Zmxlbik7CisgICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIGJ1ZmZlciwgYnVmbGVuKTsKKyAgICBpZiAoYnVmbGVuID09IC0xKSB7CisgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChzaXplICE9IE5VTEwpCiAgICAgICAgICpzaXplID0gYnVmbGVuOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21PcmRpbmFsKGludCBvcmRpbmFsKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21PcmRpbmFsKGludCBvcmRpbmFsKQogewotICAgIFB5X1VOSUNPREUgc1syXTsKLQotICAgIGlmIChvcmRpbmFsIDwgMCB8fCBvcmRpbmFsID4gMHgxMGZmZmYpIHsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBpZiAob3JkaW5hbCA8IDAgfHwgb3JkaW5hbCA+IE1BWF9VTklDT0RFKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNocigpIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikgewotICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgIHNbMF0gPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgIHNbMV0gPSAweERDMDAgfCAob3JkaW5hbCAmIDB4M0ZGKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCAyKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAob3JkaW5hbCA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihvcmRpbmFsKTsKIAotICAgIHNbMF0gPSAoUHlfVU5JQ09ERSlvcmRpbmFsOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgMSk7CisgICAgdiA9IFB5VW5pY29kZV9OZXcoMSwgb3JkaW5hbCk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHYpLCBQeVVuaWNvZGVfREFUQSh2KSwgMCwgb3JkaW5hbCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbU9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21PYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaikKIHsKICAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgbWFrZSB0aGlzIEFQSSBhbiBhbGlhcyBvZgogICAgICAgIFB5T2JqZWN0X1N0cigpIGluc3RlYWQgPyEgKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlfSU5DUkVGKG9iaik7CiAgICAgICAgIHJldHVybiBvYmo7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewogICAgICAgICAvKiBGb3IgYSBVbmljb2RlIHN1YnR5cGUgdGhhdCdzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LAogICAgICAgICAgICByZXR1cm4gYSB0cnVlIFVuaWNvZGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgZGF0YS4gKi8KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopKTsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weShvYmopOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAiQ2FuJ3QgY29udmVydCAnJS4xMDBzJyBvYmplY3QgdG8gc3RyIGltcGxpY2l0bHkiLApAQCAtMTM3OSw5ICsyOTg5LDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChyZWdpc3RlciBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIFB5T2JqZWN0ICp2OwpAQCAtMTM5NSw3ICszMDA2LDcgQEAKICAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKG9iaikgPT0gMCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICAgICAgdiA9IChQeU9iamVjdCAqKSB1bmljb2RlX2VtcHR5OworICAgICAgICAgICAgdiA9IHVuaWNvZGVfZW1wdHk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZSgKQEAgLTE0MjIsNyArMzAzMyw3IEBACiAKICAgICBpZiAoYnVmZmVyLmxlbiA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgdiA9IChQeU9iamVjdCAqKSB1bmljb2RlX2VtcHR5OworICAgICAgICB2ID0gdW5pY29kZV9lbXB0eTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZSgoY2hhciopIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4sIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMTQ0Myw2ICszMDU0LDEwIEBACiAgICAgY2hhciAqbDsKICAgICBjaGFyICpsX2VuZDsKIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHN0cmNweShsb3dlciwgInV0Zi04Iik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KICAgICBlID0gZW5jb2Rpbmc7CiAgICAgbCA9IGxvd2VyOwogICAgIGxfZW5kID0gJmxvd2VyW2xvd2VyX2xlbiAtIDFdOwpAQCAtMTQ2NCwyNiArMzA3OSwyNiBAQAogICAgIHJldHVybiAxOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTCwgKnVuaWNvZGU7CiAgICAgUHlfYnVmZmVyIGluZm87CiAgICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLwogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KICAgICBpZiAobm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzaXplLCBlcnJvcnMpOworICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKKyAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8CisgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAogICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKICNlbmRpZgpAQCAtMTUxMywxNiArMzEyOCwxNyBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIFB5X0RFQ1JFRihidWZmZXIpOwotICAgIHJldHVybiB1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoYnVmZmVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE1MzgsMTUgKzMxNTQsMTYgQEAKICAgICB2ID0gUHlDb2RlY19EZWNvZGUodW5pY29kZSwgZW5jb2RpbmcsIGVycm9ycyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIHJldHVybiB2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTU2OSwxNiArMzE4NiwxNyBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2LCAqdW5pY29kZTsKIApAQCAtMTU5MCw5ICszMjA4LDEwIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNjE0LDE3ICszMjMzLDE5MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitzdGF0aWMgc2l6ZV90Cit3Y3N0b21ic19lcnJvcnBvcyhjb25zdCB3Y2hhcl90ICp3c3RyKQoreworICAgIHNpemVfdCBsZW47CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIHdjaGFyX3QgYnVmWzNdOworI2Vsc2UKKyAgICB3Y2hhcl90IGJ1ZlsyXTsKKyNlbmRpZgorICAgIGNoYXIgb3V0YnVmW01CX0xFTl9NQVhdOworICAgIGNvbnN0IHdjaGFyX3QgKnN0YXJ0LCAqcHJldmlvdXM7CisKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgYnVmWzJdID0gMDsKKyNlbHNlCisgICAgYnVmWzFdID0gMDsKKyNlbmRpZgorICAgIHN0YXJ0ID0gd3N0cjsKKyAgICB3aGlsZSAoKndzdHIgIT0gTCdcMCcpCisgICAgeworICAgICAgICBwcmV2aW91cyA9IHdzdHI7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSh3c3RyWzBdKQorICAgICAgICAgICAgJiYgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKHdzdHJbMV0pKQorICAgICAgICB7CisgICAgICAgICAgICBidWZbMF0gPSB3c3RyWzBdOworICAgICAgICAgICAgYnVmWzFdID0gd3N0clsxXTsKKyAgICAgICAgICAgIHdzdHIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZlswXSA9ICp3c3RyOworICAgICAgICAgICAgYnVmWzFdID0gMDsKKyAgICAgICAgICAgIHdzdHIrKzsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgYnVmWzBdID0gKndzdHI7CisgICAgICAgIHdzdHIrKzsKKyNlbmRpZgorICAgICAgICBsZW4gPSB3Y3N0b21icyhvdXRidWYsIGJ1Ziwgc2l6ZW9mKG91dGJ1ZikpOworICAgICAgICBpZiAobGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXMgLSBzdGFydDsKKyAgICB9CisKKyAgICAvKiBmYWlsZWQgdG8gZmluZCB0aGUgdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2xvY2FsZV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpzdXJyb2dhdGVlc2NhcGUpCit7CisgICAgaWYgKGVycm9ycyA9PSBOVUxMKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKKyAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVMb2NhbGUoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IHdsZW4sIHdsZW4yOworICAgIHdjaGFyX3QgKndzdHI7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKyAgICBjaGFyICplcnJtc2c7CisgICAgUHlPYmplY3QgKnJlYXNvbjsKKyAgICBQeU9iamVjdCAqZXhjOworICAgIHNpemVfdCBlcnJvcl9wb3M7CisgICAgaW50IHN1cnJvZ2F0ZWVzY2FwZTsKKworICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3c3RyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodW5pY29kZSwgJndsZW4pOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2xlbjIgPSB3Y3NsZW4od3N0cik7CisgICAgaWYgKHdsZW4yICE9IHdsZW4pIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpIHsKKyAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCisgICAgICAgIGNoYXIgKnN0cjsKKworICAgICAgICBzdHIgPSBfUHlfd2NoYXIyY2hhcih3c3RyLCAmZXJyb3JfcG9zKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZXJyb3JfcG9zID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nKHN0cik7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNpemVfdCBsZW4sIGxlbjI7CisKKyAgICAgICAgbGVuID0gd2NzdG9tYnMoTlVMTCwgd3N0ciwgMCk7CisgICAgICAgIGlmIChsZW4gPT0gKHNpemVfdCktMSkgeworICAgICAgICAgICAgZXJyb3JfcG9zID0gKHNpemVfdCktMTsKKyAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBsZW4yID0gd2NzdG9tYnMoUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCB3c3RyLCBsZW4rMSk7CisgICAgICAgIGlmIChsZW4yID09IChzaXplX3QpLTEgfHwgbGVuMiA+IGxlbikgeworICAgICAgICAgICAgZXJyb3JfcG9zID0gKHNpemVfdCktMTsKKyAgICAgICAgICAgIGdvdG8gZW5jb2RlX2Vycm9yOworICAgICAgICB9CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQorICAgIHJldHVybiBieXRlczsKKworZW5jb2RlX2Vycm9yOgorICAgIGVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKyAgICBhc3NlcnQoZXJybXNnICE9IE5VTEwpOworCisgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKQorICAgICAgICBlcnJvcl9wb3MgPSB3Y3N0b21ic19lcnJvcnBvcyh3c3RyKTsKKworICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgUHlfWERFQ1JFRihieXRlcyk7CisKKyAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZV90IGVycmxlbjsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXJybXNnID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICJ3Y3N0b21icygpIGVuY291bnRlcmVkIGFuIHVuZW5jb2RhYmxlICIKKyAgICAgICAgICAgICJ3aWRlIGNoYXJhY3RlciIpOworICAgIGlmIChyZWFzb24gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfVW5pY29kZUVuY29kZUVycm9yLCAic09ubk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxlIiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpZXJyb3JfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZXJyb3JfcG9zKzEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24pOworICAgIFB5X0RFQ1JFRihyZWFzb24pOworICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogewotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyNpZmRlZiBIQVZFX01CQ1MKKyAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMTY0Miw0NiArMzQzNiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBsb2NhbGUgZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUgKi8KLSAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgIGNoYXIgKmJ5dGVzOwotICAgICAgICBQeU9iamVjdCAqYnl0ZXNfb2JqOwotICAgICAgICBzaXplX3QgZXJyb3JfcG9zOwotCi0gICAgICAgIHdjaGFyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGJ5dGVzID0gX1B5X3djaGFyMmNoYXIod2NoYXIsICZlcnJvcl9wb3MpOwotICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGVycm9yX3BvcyAhPSAoc2l6ZV90KS0xKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqZXJybXNnID0gc3RyZXJyb3IoZXJybm8pOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZXJybXNnID0gIlB5X3djaGFyMmNoYXIoKSBmYWlsZWQiOwotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywKLSAgICAgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW1lbmNvZGluZyIsCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLCBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgIGVycm9yX3BvcywgZXJyb3JfcG9zKzEsCi0gICAgICAgICAgICAgICAgICAgIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5TWVtX0ZyZWUod2NoYXIpOwotCi0gICAgICAgIGJ5dGVzX29iaiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlcyk7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnl0ZXMpOwotICAgICAgICByZXR1cm4gYnl0ZXNfb2JqOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogI2VuZGlmCiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KQEAgLTE2OTEsNDYgKzM0NTQsMjcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpCi0gICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KICAgICBpZiAobm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8CisgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8CiAgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxhdGluMShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworI2lmZGVmIEhBVkVfTUJDUwogICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOwogI2VuZGlmCiAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKICAgICB9Ci0gICAgLyogRHVyaW5nIGJvb3RzdHJhcCwgd2UgbWF5IG5lZWQgdG8gZmluZCB0aGUgZW5jb2RpbmdzCi0gICAgICAgcGFja2FnZSwgdG8gbG9hZCB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcsIGFuZCByZXF1aXJlIHRoZQotICAgICAgIGZpbGUgc3lzdGVtIGVuY29kaW5nIGluIG9yZGVyIHRvIGxvYWQgdGhlIGVuY29kaW5ncwotICAgICAgIHBhY2thZ2UuCi0KLSAgICAgICBCcmVhayBvdXQgb2YgdGhpcyBkZXBlbmRlbmN5IGJ5IGFzc3VtaW5nIHRoYXQgdGhlIHBhdGggdG8KLSAgICAgICB0aGUgZW5jb2RpbmdzIG1vZHVsZSBpcyBBU0NJSS1vbmx5LiAgWFhYIGNvdWxkIHRyeSB3Y3N0b21icwotICAgICAgIGluc3RlYWQsIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyB0aGUgbG9jYWxlJ3MKLSAgICAgICBlbmNvZGluZy4gKi8KLSAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJgotICAgICAgICAgICAgIHN0cmNtcChlbmNvZGluZywgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZykgPT0gMCAmJgotICAgICAgICAgICAgICFQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVBU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKIAogICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCiAgICAgdiA9IFB5Q29kZWNfRW5jb2RlKHVuaWNvZGUsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMTc2Niw5ICszNTEwLDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNzk3LDI0ICszNTQyLDE1MSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitzdGF0aWMgc2l6ZV90CittYnN0b3djc19lcnJvcnBvcyhjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCiB7Ci0gICAgUHlPYmplY3QgKnYgPSAoKFB5VW5pY29kZU9iamVjdCAqKXVuaWNvZGUpLT5kZWZlbmM7Ci0gICAgaWYgKHYpCi0gICAgICAgIHJldHVybiB2OwotICAgIGlmIChlcnJvcnMgIT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigibm9uLU5VTEwgZW5jb2RpbmcgaW4gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nIik7Ci0gICAgdiA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgIGlmICghdikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlKS0+ZGVmZW5jID0gdjsKLSAgICByZXR1cm4gdjsKKyNpZmRlZiBIQVZFX01CUlRPV0MKKyAgICBjb25zdCBjaGFyICpzdGFydCA9IHN0cjsKKyAgICBtYnN0YXRlX3QgbWJzOworICAgIHNpemVfdCBjb252ZXJ0ZWQ7CisgICAgd2NoYXJfdCBjaDsKKworICAgIG1lbXNldCgmbWJzLCAwLCBzaXplb2YgbWJzKTsKKyAgICB3aGlsZSAobGVuKQorICAgIHsKKyAgICAgICAgY29udmVydGVkID0gbWJydG93YygmY2gsIChjaGFyKilzdHIsIGxlbiwgJm1icyk7CisgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gMCkKKyAgICAgICAgICAgIC8qIFJlYWNoZWQgZW5kIG9mIHN0cmluZyAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gKHNpemVfdCktMSB8fCBjb252ZXJ0ZWQgPT0gKHNpemVfdCktMikgeworICAgICAgICAgICAgLyogQ29udmVyc2lvbiBlcnJvciBvciBpbmNvbXBsZXRlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgcmV0dXJuIHN0ciAtIHN0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RyICs9IGNvbnZlcnRlZDsKKyAgICAgICAgICAgIGxlbiAtPSBjb252ZXJ0ZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogZmFpbGVkIHRvIGZpbmQgdGhlIHVuZGVjb2RhYmxlIGJ5dGUgc2VxdWVuY2UgKi8KKyAgICByZXR1cm4gMDsKKyNlbmRpZgorICAgIHJldHVybiAwOwogfQogCiBQeU9iamVjdCoKK1B5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgd2NoYXJfdCBzbWFsbGJ1ZlsyNTZdOworICAgIHNpemVfdCBzbWFsbGJ1Zl9sZW4gPSBQeV9BUlJBWV9MRU5HVEgoc21hbGxidWYpOworICAgIHdjaGFyX3QgKndzdHI7CisgICAgc2l6ZV90IHdsZW4sIHdsZW4yOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGludCBzdXJyb2dhdGVlc2NhcGU7CisgICAgc2l6ZV90IGVycm9yX3BvczsKKyAgICBjaGFyICplcnJtc2c7CisgICAgUHlPYmplY3QgKnJlYXNvbiwgKmV4YzsKKworICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc3RyW2xlbl0gIT0gJ1wwJyB8fCBsZW4gIT0gc3RybGVuKHN0cikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpCisgICAgeworICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoc3RyLCAmd2xlbik7CisgICAgICAgIGlmICh3c3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIHdsZW4pOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyNpZm5kZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKKyAgICAgICAgd2xlbiA9IG1ic3Rvd2NzKE5VTEwsIHN0ciwgMCk7CisjZWxzZQorICAgICAgICB3bGVuID0gbGVuOworI2VuZGlmCisgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCisgICAgICAgICAgICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgICAgaWYgKHdsZW4rMSA8PSBzbWFsbGJ1Zl9sZW4pIHsKKyAgICAgICAgICAgIHdzdHIgPSBzbWFsbGJ1ZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh3bGVuID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgLSAxKQorICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgICAgICAgICB3c3RyID0gUHlNZW1fTWFsbG9jKCh3bGVuKzEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghd3N0cikKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFRoaXMgc2hvdWxkbid0IGZhaWwgbm93ICovCisgICAgICAgIHdsZW4yID0gbWJzdG93Y3Mod3N0ciwgc3RyLCB3bGVuKzEpOworICAgICAgICBpZiAod2xlbjIgPT0gKHNpemVfdCktMSkgeworICAgICAgICAgICAgaWYgKHdzdHIgIT0gc21hbGxidWYpCisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgICAgIGdvdG8gZGVjb2RlX2Vycm9yOworICAgICAgICB9CisjaWZkZWYgSEFWRV9CUk9LRU5fTUJTVE9XQ1MKKyAgICAgICAgYXNzZXJ0KHdsZW4yID09IHdsZW4pOworI2VuZGlmCisgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIHdsZW4yKTsKKyAgICAgICAgaWYgKHdzdHIgIT0gc21hbGxidWYpCisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KKyAgICByZXR1cm4gdW5pY29kZTsKKworZGVjb2RlX2Vycm9yOgorICAgIGVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKyAgICBhc3NlcnQoZXJybXNnICE9IE5VTEwpOworCisgICAgZXJyb3JfcG9zID0gbWJzdG93Y3NfZXJyb3Jwb3Moc3RyLCBsZW4pOworICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgeworICAgICAgICBzaXplX3QgZXJybGVuOworICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoZXJybXNnLCAmZXJybGVuKTsKKyAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOworICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBlcnJtc2cgPSBOVUxMOworICAgIH0KKyAgICBpZiAoZXJybXNnID09IE5VTEwpCisgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgIm1ic3Rvd2NzKCkgZW5jb3VudGVyZWQgYW4gaW52YWxpZCBtdWx0aWJ5dGUgc2VxdWVuY2UiKTsKKyAgICBpZiAocmVhc29uID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciwgInN5I25uTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbGUiLCBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpZXJyb3JfcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZXJyb3JfcG9zKzEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24pOworICAgIFB5X0RFQ1JFRihyZWFzb24pOworICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCBzaXplID0gKFB5X3NzaXplX3Qpc3RybGVuKHN0cik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHN0ciwgc2l6ZSwgZXJyb3JzKTsKK30KKworCitQeU9iamVjdCoKIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY29uc3QgY2hhciAqcykgewogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IChQeV9zc2l6ZV90KXN0cmxlbihzKTsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUocywgc2l6ZSk7CkBAIC0xODIzLDEwICszNjk1LDEwIEBACiBQeU9iamVjdCoKIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgTlVMTCk7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiLCBOVUxMKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0xODQ0LDIzICszNzE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCi0gICAgICAgIHdjaGFyX3QgKndjaGFyOwotICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKLSAgICAgICAgc2l6ZV90IGxlbjsKLQotICAgICAgICBpZiAoc1tzaXplXSAhPSAnXDAnIHx8IHNpemUgIT0gc3RybGVuKHMpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICB3Y2hhciA9IF9QeV9jaGFyMndjaGFyKHMsICZsZW4pOwotICAgICAgICBpZiAod2NoYXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdjaGFyLCBsZW4pOwotICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLSAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xOTIzLDEzICszNzc5LDEzIEBACiBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzaXplOwotICAgIHZvaWQgKmRhdGE7CiAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRigqKFB5T2JqZWN0KiopYWRkcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIG91dHB1dCA9IGFyZzsKICAgICAgICAgUHlfSU5DUkVGKG91dHB1dCk7CiAgICAgfQpAQCAtMTk0OCw5ICszODA0LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG91dHB1dCk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCk7Ci0gICAgaWYgKHNpemUgIT0gUHlfVU5JQ09ERV9zdHJsZW4oZGF0YSkpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG91dHB1dCkgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoZmluZGNoYXIoUHlVbmljb2RlX0RBVEEob3V0cHV0KSwgUHlVbmljb2RlX0tJTkQob3V0cHV0KSwKKyAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob3V0cHV0KSwgMCwgMSkgPj0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOwogICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTYxLDQwICszODIwLDE2NiBAQAogCiAKIGNoYXIqCi1fUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqcHNpemUpCitQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqcHNpemUpCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwotICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChwc2l6ZSAhPSBOVUxMKQotICAgICAgICAqcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworCisgICAgaWYgKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7CisgICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN0cmljdCIpOworICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoUHlCeXRlc19HRVRfU0laRShieXRlcykgKyAxKTsKKyAgICAgICAgaWYgKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOworICAgICAgICBQeV9NRU1DUFkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSArIDEpOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIH0KKworICAgIGlmIChwc2l6ZSkKKyAgICAgICAgKnBzaXplID0gUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpOworICAgIHJldHVybiBQeVVuaWNvZGVfVVRGOCh1bmljb2RlKTsKIH0KIAogY2hhcioKLV9QeVVuaWNvZGVfQXNTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSh1bmljb2RlLCBOVUxMKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUodW5pY29kZSwgTlVMTCk7CiB9CiAKLVB5X1VOSUNPREUgKlB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCitQeV9VTklDT0RFICoKK1B5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpzaXplKQogeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm9uZV9ieXRlOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICBjb25zdCBQeV9VQ1MyICp0d29fYnl0ZXM7CisjZWxzZQorICAgIGNvbnN0IFB5X1VDUzQgKmZvdXJfYnl0ZXM7CisgICAgY29uc3QgUHlfVUNTNCAqdWNzNF9lbmQ7CisgICAgUHlfc3NpemVfdCBudW1fc3Vycm9nYXRlczsKKyNlbmRpZgorICAgIHdjaGFyX3QgKnc7CisgICAgd2NoYXJfdCAqd2NoYXJfZW5kOworCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOworICAgIGlmIChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICAvKiBOb24tQVNDSUkgY29tcGFjdCB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpICE9IDApOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKIAotICBvbkVycm9yOgotICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgICAgICBmb3VyX2J5dGVzID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICB1Y3M0X2VuZCA9IGZvdXJfYnl0ZXMgKyBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgICAgIG51bV9zdXJyb2dhdGVzID0gMDsKKworICAgICAgICAgICAgZm9yICg7IGZvdXJfYnl0ZXMgPCB1Y3M0X2VuZDsgKytmb3VyX2J5dGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKCpmb3VyX2J5dGVzID4gMHhGRkZGKQorICAgICAgICAgICAgICAgICAgICArK251bV9zdXJyb2dhdGVzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAod2NoYXJfdCAqKSBQeU9iamVjdF9NQUxMT0MoCisgICAgICAgICAgICAgICAgICAgIHNpemVvZih3Y2hhcl90KSAqIChfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSArIDEgKyBudW1fc3Vycm9nYXRlcykpOworICAgICAgICAgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpICsgbnVtX3N1cnJvZ2F0ZXM7CisKKyAgICAgICAgICAgIHcgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgICAgICB3Y2hhcl9lbmQgPSB3ICsgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgICAgIGZvdXJfYnl0ZXMgPSBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgIGZvciAoOyBmb3VyX2J5dGVzIDwgdWNzNF9lbmQ7ICsrZm91cl9ieXRlcywgKyt3KSB7CisgICAgICAgICAgICAgICAgaWYgKCpmb3VyX2J5dGVzID4gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCgqZm91cl9ieXRlcyA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAgICAgICAgIC8qIGVuY29kZSBzdXJyb2dhdGUgcGFpciBpbiB0aGlzIGNhc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgKncrKyA9IFB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoKmZvdXJfYnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAqdyAgID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKCpmb3VyX2J5dGVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAqdyA9ICpmb3VyX2J5dGVzOworCisgICAgICAgICAgICAgICAgaWYgKHcgPiB3Y2hhcl9lbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIk1pc2NhbGN1bGF0ZWQgc3RyaW5nIGVuZCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp3ID0gMDsKKyNlbHNlCisgICAgICAgICAgICAvKiBzaXplb2Yod2NoYXJfdCkgPT0gNCAqLworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW1wb3NzaWJsZSB1bmljb2RlIG9iamVjdCBzdGF0ZSwgd3N0ciBhbmQgc3RyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBzaGFyZSBtZW1vcnkgYWxyZWFkeS4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSAod2NoYXJfdCAqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKHdjaGFyX3QpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpICsgMSkpOworICAgICAgICAgICAgaWYgKCFfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSk7CisgICAgICAgICAgICB3ID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICAgICAgd2NoYXJfZW5kID0gdyArIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBvbmVfYnl0ZSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGZvciAoOyB3IDwgd2NoYXJfZW5kOyArK29uZV9ieXRlLCArK3cpCisgICAgICAgICAgICAgICAgICAgICp3ID0gKm9uZV9ieXRlOworICAgICAgICAgICAgICAgIC8qIG51bGwtdGVybWluYXRlIHRoZSB3c3RyICovCisgICAgICAgICAgICAgICAgKncgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0CisgICAgICAgICAgICAgICAgdHdvX2J5dGVzID0gUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICAgICAgZm9yICg7IHcgPCB3Y2hhcl9lbmQ7ICsrdHdvX2J5dGVzLCArK3cpCisgICAgICAgICAgICAgICAgICAgICp3ID0gKnR3b19ieXRlczsKKyAgICAgICAgICAgICAgICAvKiBudWxsLXRlcm1pbmF0ZSB0aGUgd3N0ciAqLworICAgICAgICAgICAgICAgICp3ID0gMDsKKyNlbHNlCisgICAgICAgICAgICAgICAgLyogc2l6ZW9mKHdjaGFyX3QpID09IDIgKi8KKyAgICAgICAgICAgICAgICBQeU9iamVjdF9GUkVFKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJJbXBvc3NpYmxlIHVuaWNvZGUgb2JqZWN0IHN0YXRlLCB3c3RyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgc3RyIHNob3VsZCBzaGFyZSBtZW1vcnkgYWxyZWFkeS4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIlRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2l6ZSAhPSBOVUxMKQorICAgICAgICAqc2l6ZSA9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRTaXplKFB5T2JqZWN0ICp1bmljb2RlKQorUHlfVU5JQ09ERSAqCitQeVVuaWNvZGVfQXNVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCBOVUxMKTsKK30KKworCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwpAQCAtMjAwNiw3ICszOTkxLDU3IEBACiAgICAgcmV0dXJuIC0xOwogfQogCi1jb25zdCBjaGFyICpQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKHZvaWQpCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfR2V0TGVuZ3RoKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKK30KKworUHlfVUNTNAorUHlVbmljb2RlX1JlYWRDaGFyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCktMTsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5kZXgpOworfQorCitpbnQKK1B5VW5pY29kZV9Xcml0ZUNoYXIoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsIFB5X1VDUzQgY2gpCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGNoID4gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiY2hhcmFjdGVyIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh1bmljb2RlKSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgIGluZGV4LCBjaCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IGNoYXIgKgorUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyh2b2lkKQogewogICAgIHJldHVybiAidXRmLTgiOwogfQpAQCAtMjA0NSwyNiArNDA4MCwyOSBAQAogICAgcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKICovCiAKLXN0YXRpYwotaW50IHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqaW5wdXQsIGNvbnN0IGNoYXIgKippbmVuZCwgUHlfc3NpemVfdCAqc3RhcnRpbnBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcywgUHlfVU5JQ09ERSAqKm91dHB0cikKK3N0YXRpYyBpbnQKK3VuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmlucHV0LCBjb25zdCBjaGFyICoqaW5lbmQsIFB5X3NzaXplX3QgKnN0YXJ0aW5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBvdXRzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpvdXRwdXQpOworICAgIFB5X3NzaXplX3Qgb3V0c2l6ZTsKICAgICBQeV9zc2l6ZV90IGluc2l6ZTsKICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICBQeV9VTklDT0RFICpyZXBwdHI7CiAgICAgUHlPYmplY3QgKmlucHV0b2JqID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHJlcHNpemU7CiAgICAgaW50IHJlcyA9IC0xOwogCisgICAgaWYgKF9QeVVuaWNvZGVfS0lORCgqb3V0cHV0KSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKKyAgICAgICAgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpvdXRwdXQpOworICAgIGVsc2UKKyAgICAgICAgb3V0c2l6ZSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoKm91dHB1dCk7CisKICAgICBpZiAoKmVycm9ySGFuZGxlciA9PSBOVUxMKSB7CiAgICAgICAgICplcnJvckhhbmRsZXIgPSBQeUNvZGVjX0xvb2t1cEVycm9yKGVycm9ycyk7CiAgICAgICAgIGlmICgqZXJyb3JIYW5kbGVyID09IE5VTEwpCkBAIC0yMDg4LDYgKzQxMjYsOCBAQAogICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUocmVzdHVwbGUsIGFyZ3BhcnNlLCAmUHlVbmljb2RlX1R5cGUsICZyZXB1bmljb2RlLCAmbmV3cG9zKSkKICAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIENvcHkgYmFjayB0aGUgYnl0ZXMgdmFyaWFibGVzLCB3aGljaCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQgYnkgdGhlCiAgICAgICAgY2FsbGJhY2sgKi8KQEAgLTIxMTEsMjUgKzQxNTEsNDcgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQotICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCi0gICAgICAgYXQgdGhlIG5ldyBpbnB1dCBwb3NpdGlvbiksIHNvIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UKLSAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0cmluZykgKi8KLSAgICByZXBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTsKLSAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXBzaXplICsgaW5zaXplLW5ld3BvczsKLSAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgewotICAgICAgICBpZiAocmVxdWlyZWRzaXplPDIqb3V0c2l6ZSkKLSAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKG91dHB1dCwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgaWYgKF9QeVVuaWNvZGVfS0lORCgqb3V0cHV0KSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKKyAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKKyAgICAgICAgICAgYXQgdGhlIG5ldyBpbnB1dCBwb3NpdGlvbiksIHNvIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UKKyAgICAgICAgICAgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCisgICAgICAgIFB5X3NzaXplX3QgcmVwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXBsZW4gKyBpbnNpemUtbmV3cG9zOworICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gb3V0c2l6ZSkgeworICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKm91dHNpemUpCisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKG91dHB1dCwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIGlmICh1bmljb2RlX3dpZGVuKG91dHB1dCwgKm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJlcHVuaWNvZGUpKSA8IDApCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICpvdXRwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0cHV0KSArICpvdXRwb3M7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKCpvdXRwdXQsICpvdXRwb3MsIHJlcHVuaWNvZGUsIDAsIHJlcGxlbik7CisgICAgICAgICpvdXRwb3MgKz0gcmVwbGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2NoYXJfdCAqcmVwd3N0cjsKKyAgICAgICAgUHlfc3NpemVfdCByZXB3bGVuOworICAgICAgICByZXB3c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUocmVwdW5pY29kZSwgJnJlcHdsZW4pOworICAgICAgICBpZiAocmVwd3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKKyAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAoc3RhcnRpbmcKKyAgICAgICAgICAgYXQgdGhlIG5ldyBpbnB1dCBwb3NpdGlvbiksIHNvIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UKKyAgICAgICAgICAgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCisgICAgICAgIHJlcXVpcmVkc2l6ZSA9ICpvdXRwb3MgKyByZXB3bGVuICsgaW5zaXplLW5ld3BvczsKKyAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKKyAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPCAyKm91dHNpemUpCisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipvdXRzaXplOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKG91dHB1dCwgcmVxdWlyZWRzaXplKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIHdjc25jcHkoX1B5VW5pY29kZV9XU1RSKCpvdXRwdXQpICsgKm91dHBvcywgcmVwd3N0ciwgcmVwd2xlbik7CisgICAgICAgICpvdXRwb3MgKz0gcmVwd2xlbjsKICAgICB9CiAgICAgKmVuZGlucG9zID0gbmV3cG9zOwogICAgICppbnB0ciA9ICppbnB1dCArIG5ld3BvczsKLSAgICBQeV9VTklDT0RFX0NPUFkoKm91dHB0ciwgcmVwcHRyLCByZXBzaXplKTsKLSAgICAqb3V0cHRyICs9IHJlcHNpemU7Ci0gICAgKm91dHBvcyArPSByZXBzaXplOwogCiAgICAgLyogd2UgbWFkZSBpdCEgKi8KICAgICByZXMgPSAwOwpAQCAtMjIyMCw5ICs0MjgyLDEwIEBACiAgICAgICAoZGlyZWN0V1MgJiYgKHV0ZjdfY2F0ZWdvcnlbKGMpXSA9PSAyKSkgfHwgICAgICAgIFwKICAgICAgIChkaXJlY3RPICYmICh1dGY3X2NhdGVnb3J5WyhjKV0gPT0gMSkpKSkKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY3KGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY3KGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KQEAgLTIyMzQsNDIgKzQyOTcsNDIgQEAKICAqIGFsbCB0aGUgc2hpZnQgc3RhdGUgKHNlZW4gYml0cywgbnVtYmVyIG9mIGJpdHMgc2VlbiwgaGlnaAogICogc3Vycm9nYXRlKS4gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwogICAgIGludCBpblNoaWZ0ID0gMDsKLSAgICBQeV9VTklDT0RFICpzaGlmdE91dFN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2hpZnRPdXRTdGFydDsKICAgICB1bnNpZ25lZCBpbnQgYmFzZTY0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyBiYXNlNjRidWZmZXIgPSAwOwotICAgIFB5X1VOSUNPREUgc3Vycm9nYXRlID0gMDsKKyAgICBQeV9VQ1M0IHN1cnJvZ2F0ZSA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7CisgICAgLyogU3RhcnQgb2ZmIGFzc3VtaW5nIGl0J3MgYWxsIEFTQ0lJLiBXaWRlbiBsYXRlciBhcyBuZWNlc3NhcnkuICovCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKICAgICBpZiAoIXVuaWNvZGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAgICAgKmNvbnN1bWVkID0gMDsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgICAgIHJldHVybiB1bmljb2RlOwogICAgIH0KIAotICAgIHAgPSB1bmljb2RlLT5zdHI7Ci0gICAgc2hpZnRPdXRTdGFydCA9IHA7CisgICAgc2hpZnRPdXRTdGFydCA9IG91dHBvcyA9IDA7CiAgICAgZSA9IHMgKyBzaXplOwogCiAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2g7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICByZXN0YXJ0OgogICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSAqczsKIApAQCAtMjI4MCwzNCArNDM0MywzMSBAQAogICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgICBpZiAoYmFzZTY0Yml0cyA+PSAxNikgewogICAgICAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIGVub3VnaCBiaXRzIGZvciBhIFVURi0xNiB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIG91dENoID0gKFB5X1VOSUNPREUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZTY0YnVmZmVyID4+IChiYXNlNjRiaXRzLTE2KSk7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgb3V0Q2ggPSAoUHlfVUNTNCkoYmFzZTY0YnVmZmVyID4+IChiYXNlNjRiaXRzLTE2KSk7CiAgICAgICAgICAgICAgICAgICAgIGJhc2U2NGJpdHMgLT0gMTY7CiAgICAgICAgICAgICAgICAgICAgIGJhc2U2NGJ1ZmZlciAmPSAoMSA8PCBiYXNlNjRiaXRzKSAtIDE7IC8qIGNsZWFyIGhpZ2ggYml0cyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoc3Vycm9nYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBleHBlY3RpbmcgYSBzZWNvbmQgc3Vycm9nYXRlICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3V0Q2ggPj0gMHhEQzAwICYmIG91dENoIDw9IDB4REZGRikgewotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAoKChzdXJyb2dhdGUgJiAweDNGRik8PDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAob3V0Q2ggJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN1cnJvZ2F0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gb3V0Q2g7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUob3V0Q2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaDIgPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhzdXJyb2dhdGUsIG91dENoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaDIpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gc3Vycm9nYXRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIHN1cnJvZ2F0ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAob3V0Q2ggPj0gMHhEODAwICYmIG91dENoIDw9IDB4REJGRikgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShvdXRDaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpcnN0IHN1cnJvZ2F0ZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlID0gb3V0Q2g7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gb3V0Q2g7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBvdXRDaCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIzMTUsNyArNDM3NSw4IEBACiAgICAgICAgICAgICAgICAgaW5TaGlmdCA9IDA7CiAgICAgICAgICAgICAgICAgcysrOwogICAgICAgICAgICAgICAgIGlmIChzdXJyb2dhdGUpIHsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN1cnJvZ2F0ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgc3Vycm9nYXRlKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChiYXNlNjRiaXRzID4gMCkgeyAvKiBsZWZ0LW92ZXIgYml0cyAqLwpAQCAtMjMzNSw3ICs0Mzk2LDggQEAKICAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qICctJyBpcyBhYnNvcmJlZDsgb3RoZXIgdGVybWluYXRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycyBhcmUgcHJlc2VydmVkICovCi0gICAgICAgICAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzNDQsMTYgKzQ0MDYsMTggQEAKICAgICAgICAgICAgIHMrKzsgLyogY29uc3VtZSAnKycgKi8KICAgICAgICAgICAgIGlmIChzIDwgZSAmJiAqcyA9PSAnLScpIHsgLyogJystJyBlbmNvZGVzICcrJyAqLwogICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJysnOworICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsICcrJykgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYmVnaW4gYmFzZTY0LWVuY29kZWQgc2VjdGlvbiAqLwogICAgICAgICAgICAgICAgIGluU2hpZnQgPSAxOwotICAgICAgICAgICAgICAgIHNoaWZ0T3V0U3RhcnQgPSBwOworICAgICAgICAgICAgICAgIHNoaWZ0T3V0U3RhcnQgPSBvdXRwb3M7CiAgICAgICAgICAgICAgICAgYmFzZTY0Yml0cyA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoREVDT0RFX0RJUkVDVChjaCkpIHsgLyogY2hhcmFjdGVyIGRlY29kZXMgYXMgaXRzZWxmICovCi0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIHMrKzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTIzNjQsMTMgKzQ0MjgsMTIgQEAKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKIHV0ZjdFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmNyIsIGVycm1zZywKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCkBAIC0yMzgxLDEzICs0NDQ0LDEyIEBACiAgICAgICAgIGlmIChzdXJyb2dhdGUgfHwKICAgICAgICAgICAgICAgICAoYmFzZTY0Yml0cyA+PSA2KSB8fAogICAgICAgICAgICAgICAgIChiYXNlNjRiaXRzID4gMCAmJiBiYXNlNjRidWZmZXIgIT0gMCkpIHsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHNpemU7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInV0ZjciLCAidW50ZXJtaW5hdGVkIHNoaWZ0IHNlcXVlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgaWYgKHMgPCBlKQogICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKQEAgLTIzOTcsNyArNDQ1OSw3IEBACiAgICAgLyogcmV0dXJuIHN0YXRlICovCiAgICAgaWYgKGNvbnN1bWVkKSB7CiAgICAgICAgIGlmIChpblNoaWZ0KSB7Ci0gICAgICAgICAgICBwID0gc2hpZnRPdXRTdGFydDsgLyogYmFjayBvZmYgb3V0cHV0ICovCisgICAgICAgICAgICBvdXRwb3MgPSBzaGlmdE91dFN0YXJ0OyAvKiBiYWNrIG9mZiBvdXRwdXQgKi8KICAgICAgICAgICAgICpjb25zdW1lZCA9IHN0YXJ0aW5wb3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0yNDA1LDEyICs0NDY3LDEyIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSkgPCAwKQorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwpAQCAtMjQyMCwyNiArNDQ4MiwzNiBAQAogfQogCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0VuY29kZVVURjcoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKLSAgICAvKiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byB0aWdodGVuIHRoaXMgd29yc3QgY2FzZSAqLwotICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkID0gOCAqIHNpemU7CisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7CiAgICAgaW50IGluU2hpZnQgPSAwOwotICAgIFB5X3NzaXplX3QgaSA9IDA7CisgICAgUHlfc3NpemVfdCBpOwogICAgIHVuc2lnbmVkIGludCBiYXNlNjRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBsb25nIGJhc2U2NGJ1ZmZlciA9IDA7CiAgICAgY2hhciAqIG91dDsKICAgICBjaGFyICogc3RhcnQ7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoYWxsb2NhdGVkIC8gOCAhPSBzaXplKQorICAgIC8qIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIHRpZ2h0ZW4gdGhpcyB3b3JzdCBjYXNlICovCisgICAgYWxsb2NhdGVkID0gOCAqIGxlbjsKKyAgICBpZiAoYWxsb2NhdGVkIC8gOCAhPSBsZW4pCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKQEAgLTI0NDcsOCArNDUxOSw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RhcnQgPSBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBmb3IgKDtpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKGluU2hpZnQpIHsKICAgICAgICAgICAgIGlmIChFTkNPREVfRElSRUNUKGNoLCAhYmFzZTY0U2V0TywgIWJhc2U2NFdoaXRlU3BhY2UpKSB7CkBAIC0yNDg2LDggKzQ1NTgsOSBAQAogICAgICAgICB9CiAgICAgICAgIGNvbnRpbnVlOwogZW5jb2RlX2NoYXI6Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworCiAgICAgICAgICAgICAvKiBjb2RlIGZpcnN0IHN1cnJvZ2F0ZSAqLwogICAgICAgICAgICAgYmFzZTY0Yml0cyArPSAxNjsKICAgICAgICAgICAgIGJhc2U2NGJ1ZmZlciA9IChiYXNlNjRidWZmZXIgPDwgMTYpIHwgMHhkODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7CkBAIC0yNDk2LDkgKzQ1NjksOCBAQAogICAgICAgICAgICAgICAgIGJhc2U2NGJpdHMgLT0gNjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIHByZXBhcmUgc2Vjb25kIHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgY2ggPSAgMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKKyAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIGJhc2U2NGJpdHMgKz0gMTY7CiAgICAgICAgIGJhc2U2NGJ1ZmZlciA9IChiYXNlNjRidWZmZXIgPDwgMTYpIHwgY2g7CiAgICAgICAgIHdoaWxlIChiYXNlNjRiaXRzID49IDYpIHsKQEAgLTI1MTQsNiArNDU4NiwyMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gdjsKIH0KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0U2V0TywKKyAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlNjRXaGl0ZVNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGNyh0bXAsIGJhc2U2NFNldE8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NFdoaXRlU3BhY2UsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogI3VuZGVmIElTX0JBU0U2NAogI3VuZGVmIEZST01fQkFTRTY0CkBAIC0yNTIzLDI3MiArNDYxMSwyMDYgQEAKIAogLyogLS0tIFVURi04IENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYwotY2hhciB1dGY4X2NvZGVfbGVuZ3RoWzI1Nl0gPSB7Ci0gICAgLyogTWFwIFVURi04IGVuY29kZWQgcHJlZml4IGJ5dGUgdG8gc2VxdWVuY2UgbGVuZ3RoLiAgWmVybyBtZWFucwotICAgICAgIGlsbGVnYWwgcHJlZml4LiAgU2VlIFJGQyAzNjI5IGZvciBkZXRhaWxzICovCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgLyogMDAtMEYgKi8KLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAvKiA3MC03RiAqLwotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8qIDgwLThGICovCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIC8qIEIwLUJGICovCi0gICAgMCwgMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgLyogQzAtQzEgKyBDMi1DRiAqLwotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIC8qIEQwLURGICovCi0gICAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgLyogRTAtRUYgKi8KLSAgICA0LCA0LCA0LCA0LCA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwICAvKiBGMC1GNCArIEY1LUZGICovCi19OwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjgoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjgoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwogfQogCi0vKiBNYXNrIHRvIGNoZWNrIG9yIGZvcmNlIGFsaWdubWVudCBvZiBhIHBvaW50ZXIgdG8gQyAnbG9uZycgYm91bmRhcmllcyAqLwotI2RlZmluZSBMT05HX1BUUl9NQVNLIChzaXplX3QpIChTSVpFT0ZfTE9ORyAtIDEpCisjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczFsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMmxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3M0bGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCiAjaWYgKFNJWkVPRl9MT05HID09IDgpCi0jIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MDgwODA4MDgwTAorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCiAjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKLSMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwTAorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBVTAogI2Vsc2UKICMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKICNlbmRpZgogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCitzdGF0aWMgUHlfc3NpemVfdAorYXNjaWlfZGVjb2RlKGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIFB5X1VDUzEgKmRlc3QpCiB7CisgICAgY29uc3QgY2hhciAqcCA9IHN0YXJ0OworICAgIGNvbnN0IGNoYXIgKmFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgX1B5X0FMSUdOX0RPV04oZW5kLCBTSVpFT0ZfTE9ORyk7CisKKyNpZiBTSVpFT0ZfTE9ORyA8PSBTSVpFT0ZfVk9JRF9QCisgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKGRlc3QsIFNJWkVPRl9MT05HKSk7CisgICAgaWYgKF9QeV9JU19BTElHTkVEKHAsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAvKiBGYXN0IHBhdGgsIHNlZSBpbiBTVFJJTkdMSUIodXRmOF9kZWNvZGUpIGZvcgorICAgICAgICAgICBhbiBleHBsYW5hdGlvbi4gKi8KKyAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9wID0gcDsKKyAgICAgICAgcmVnaXN0ZXIgUHlfVUNTMSAqIHEgPSBkZXN0OworICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSA9ICooY29uc3QgdW5zaWduZWQgbG9uZyAqKSBfcDsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICooKHVuc2lnbmVkIGxvbmcgKilxKSA9IHZhbHVlOworICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICBxICs9IFNJWkVPRl9MT05HOworICAgICAgICB9CisgICAgICAgIHAgPSBfcDsKKyAgICAgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgICAgIGlmICgodW5zaWduZWQgY2hhcikqcCAmIDB4ODApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAqcSsrID0gKnArKzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcCAtIHN0YXJ0OworICAgIH0KKyNlbmRpZgorICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCwgc2VlIGluIFNUUklOR0xJQih1dGY4X2RlY29kZSkgaW4gc3RyaW5nbGliL2NvZGVjcy5oCisgICAgICAgICAgIGZvciBhbiBleHBsYW5hdGlvbi4gKi8KKyAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHAsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCisgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcCA9IHA7CisgICAgICAgICAgICB3aGlsZSAoX3AgPCBhbGlnbmVkX2VuZCkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICYgQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHAgPSBfcDsKKyAgICAgICAgICAgIGlmIChfcCA9PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKSpwICYgMHg4MCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICArK3A7CisgICAgfQorICAgIG1lbWNweShkZXN0LCBzdGFydCwgcCAtIHN0YXJ0KTsKKyAgICByZXR1cm4gcCAtIHN0YXJ0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIGludCBuOwotICAgIGludCBrOworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHMgKyBzaXplOworICAgIFB5X3NzaXplX3Qgb3V0cG9zOworCiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7Ci0gICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgY29uc3QgY2hhciAqZSwgKmFsaWduZWRfZW5kOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKLSAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgICAgICpjb25zdW1lZCA9IDA7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIC8qIFVucGFjayBVVEYtOCBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZS0+c3RyOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICBhbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOworICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLworICAgIGlmIChzaXplID09IDEgJiYgKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCkgeworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgPSAxOworICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKCh1bnNpZ25lZCBjaGFyKXNbMF0pOworICAgIH0KIAotICAgIHdoaWxlIChzIDwgZSkgewotICAgICAgICBQeV9VQ1M0IGNoID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBBU0NJSSBjaGFyYWN0ZXJzLiBHaXZlbiB0aGF0IGNvbW1vbiBVVEYtOAotICAgICAgICAgICAgICAgaW5wdXQgd2lsbCBjb25zaXN0IG9mIGFuIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBBU0NJSQotICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2UgdHJ5IHRvIG9wdGltaXplIGZvciB0aGlzIGNhc2UgYnkgY2hlY2tpbmcKLSAgICAgICAgICAgICAgIGFzIG1hbnkgY2hhcmFjdGVycyBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluLgotICAgICAgICAgICAgICAgRmlyc3QsIGNoZWNrIGlmIHdlIGNhbiBkbyBhbiBhbGlnbmVkIHJlYWQsIGFzIG1vc3QgQ1BVcyBoYXZlCi0gICAgICAgICAgICAgICBhIHBlbmFsdHkgZm9yIHVuYWxpZ25lZCByZWFkcy4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoISgoc2l6ZV90KSBzICYgTE9OR19QVFJfTUFTSykpIHsKLSAgICAgICAgICAgICAgICAvKiBIZWxwIHJlZ2lzdGVyIGFsbG9jYXRpb24gKi8KLSAgICAgICAgICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcyA9IHM7Ci0gICAgICAgICAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqX3AgPSBwOwotICAgICAgICAgICAgICAgIHdoaWxlIChfcyA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgYSB3aG9sZSBsb25nIGF0IGEgdGltZSAoZWl0aGVyIDQgb3IgOCBieXRlcyksCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBkbyBhIGZhc3QgdW5yb2xsZWQgY29weSBpZiBpdCBvbmx5IGNvbnRhaW5zIEFTQ0lJCi0gICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICovCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICoodW5zaWduZWQgbG9uZyAqKSBfczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBBU0NJSV9DSEFSX01BU0spCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAodW5zaWduZWQgY2hhcikgX3NbMF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzFdOwotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1syXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbM10gPSAodW5zaWduZWQgY2hhcikgX3NbM107Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzRdOwotICAgICAgICAgICAgICAgICAgICBfcFs1XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s1XTsKLSAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAodW5zaWduZWQgY2hhcikgX3NbNl07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzddID0gKHVuc2lnbmVkIGNoYXIpIF9zWzddOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIF9zICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyA9IF9zOwotICAgICAgICAgICAgICAgIHAgPSBfcDsKLSAgICAgICAgICAgICAgICBpZiAocyA9PSBlKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgfQorICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlbmQsIFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpKTsKKyAgICBzICs9IG91dHBvczsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2ggPSB1Y3MxbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgIGNoID0gdWNzNGxpYl91dGY4X2RlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpY2g7Ci0gICAgICAgICAgICBzKys7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgaWYgKHMgPT0gZW5kIHx8IGNvbnN1bWVkKQorICAgICAgICAgICAgICAgIGdvdG8gRW5kOworICAgICAgICAgICAgZXJybXNnID0gInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOworICAgICAgICAgICAgd2hpbGUgKGVuZGlucG9zIDwgc2l6ZSAmJiAoc3RhcnRzW2VuZGlucG9zXSAmIDB4QzApID09IDB4ODApCisgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBzdGFydCBieXRlIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICB3aGlsZSAoZW5kaW5wb3MgPCBzaXplICYmIChzdGFydHNbZW5kaW5wb3NdICYgMHhDMCkgPT0gMHg4MCkKKyAgICAgICAgICAgICAgICBlbmRpbnBvcysrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgbiA9IHV0ZjhfY29kZV9sZW5ndGhbY2hdOwotCi0gICAgICAgIGlmIChzICsgbiA+IGUpIHsKLSAgICAgICAgICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICAgICAgZm9yIChrPTE7IChrIDwgc2l6ZS1zdGFydGlucG9zKSAmJiAoKHNba10mMHhDMCkgPT0gMHg4MCk7IGsrKykKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAobikgewotCi0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIHN0YXJ0IGJ5dGUiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLQotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBlcnJtc2cgPSAiaW50ZXJuYWwgZXJyb3IiOwotICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7Ci0gICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLQotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDFmKSA8PCA2KSArIChzWzFdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4ZWRceGEwXHg4MC1ceGVkXHhiZlx4YmYKLSAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgZDgwMC1kZmZmLiBTdXJyb2dhdGVzIGFyZQotICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgotICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCi0gICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEUwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweEEwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RUQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OUYpKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotCi0gICAgICAgICAgICAgICAgLyogaWYgc1sxXSBmaXJzdCB0d28gYml0cyBhcmUgMSBhbmQgMCwgdGhlbiB0aGUgaW52YWxpZAotICAgICAgICAgICAgICAgICAgIGNvbnRpbnVhdGlvbiBieXRlIGlzIHNbMl0sIHNvIGluY3JlbWVudCBlbmRpbnBvcyBieSAxLAotICAgICAgICAgICAgICAgICAgIGlmIG5vdCwgc1sxXSBpcyBpbnZhbGlkIGFuZCBlbmRpbnBvcyBkb2Vzbid0IG5lZWQgdG8KLSAgICAgICAgICAgICAgICAgICBiZSBpbmNyZW1lbnRlZC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoKHNbMV0gJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcysrOwotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDBmKSA8PCAxMikgKyAoKHNbMV0gJiAweDNmKSA8PCA2KSArIChzWzJdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzNdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4OTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhGNCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg4RikpIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBjb250aW51YXRpb24gYnl0ZSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7Ci0gICAgICAgICAgICAgICAgaWYgKChzWzFdICYgMHhDMCkgPT0gMHg4MCkgewotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAoKHNbMl0gJiAweEMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4NykgPDwgMTgpICsgKChzWzFdICYgMHgzZikgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAgKChzWzJdICYgMHgzZikgPDwgNikgKyAoc1szXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwZmZmZikpOwotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpY2g7Ci0jZWxzZQotICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCi0KLSAgICAgICAgICAgIC8qICB0cmFuc2xhdGUgZnJvbSAxMDAwMC4uMTBGRkZGIHRvIDAuLkZGRkYgKi8KLSAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7Ci0KLSAgICAgICAgICAgIC8qICBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkoMHhEODAwICsgKGNoID4+IDEwKSk7Ci0KLSAgICAgICAgICAgIC8qICBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSgweERDMDAgKyAoY2ggJiAweDAzRkYpKTsKLSNlbmRpZgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcyArPSBuOwotICAgICAgICBjb250aW51ZTsKLQotICAgICAgdXRmOEVycm9yOgotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKLSAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CiAgICAgfQotICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgKmNvbnN1bWVkID0gcy1zdGFydHM7CiAKLSAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gdW5pY29kZS0+c3RyKSA8IDApCitFbmQ6CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICpjb25zdW1lZCA9IHMgLSBzdGFydHM7CiAKLSAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKKworb25FcnJvcjoKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIFB5X1hERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBBU0NJSV9DSEFSX01BU0sKLQogI2lmZGVmIF9fQVBQTEVfXwogCiAvKiBTaW1wbGlmaWVkIFVURi04IGRlY29kZXIgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsCkBAIC0yNzk3LDkgKzQ4MTksOSBAQAogd2NoYXJfdCoKIF9QeV9EZWNvZGVVVEY4X3N1cnJvZ2F0ZWVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaW50IG47CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICB3Y2hhcl90ICp1bmljb2RlLCAqcDsKKyAgICB3Y2hhcl90ICp1bmljb2RlOworICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogCiAgICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKICAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KQEAgLTI4MTIsMjc3ICs0ODM0LDEwMSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFVucGFjayBVVEYtOCBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZTsKICAgICBlID0gcyArIHNpemU7CisgICAgb3V0cG9zID0gMDsKICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotCi0gICAgICAgIGlmIChjaCA8IDB4ODApIHsKLSAgICAgICAgICAgICpwKysgPSAod2NoYXJfdCljaDsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgbiA9IHV0ZjhfY29kZV9sZW5ndGhbY2hdOwotICAgICAgICBpZiAocyArIG4gPiBlKSB7Ci0gICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAobikgewotICAgICAgICBjYXNlIDA6Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotCi0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODApCi0gICAgICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4MWYpIDw8IDYpICsgKHNbMV0gJiAweDNmKTsKLSAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHgwMDdGKSAmJiAoY2ggPD0gMHgwN0ZGKSk7Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAvKiBEZWNvZGluZyBVVEYtOCBzZXF1ZW5jZXMgaW4gcmFuZ2UgXHhlZFx4YTBceDgwLVx4ZWRceGJmXHhiZgotICAgICAgICAgICAgICAgd2lsbCByZXN1bHQgaW4gc3Vycm9nYXRlcyBpbiByYW5nZSBkODAwLWRmZmYuIFN1cnJvZ2F0ZXMgYXJlCi0gICAgICAgICAgICAgICBub3QgdmFsaWQgVVRGLTggc28gdGhleSBhcmUgcmVqZWN0ZWQuCi0gICAgICAgICAgICAgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlNS4yLjAvY2gwMy5wZGYKLSAgICAgICAgICAgICAgICh0YWJsZSAzLTcpIGFuZCBodHRwOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMzNjI5LnR4dCAqLwotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RTAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4QTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhFRCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg5RikpIHsKLQotICAgICAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDBmKSA8PCAxMikgKyAoKHNbMV0gJiAweDNmKSA8PCA2KSArIChzWzJdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDdGRikgJiYgKGNoIDw9IDB4RkZGRikpOwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzJdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgIChzWzNdICYgMHhjMCkgIT0gMHg4MCB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjAgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA8IDB4OTApIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhGNCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdID4gMHg4RikpIHsKLSAgICAgICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHg3KSA8PCAxOCkgKyAoKHNbMV0gJiAweDNmKSA8PCAxMikgKwotICAgICAgICAgICAgICAgICAoKHNbMl0gJiAweDNmKSA8PCA2KSArIChzWzNdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4RkZGRikgJiYgKGNoIDw9IDB4MTBmZmZmKSk7Ci0KKyAgICAgICAgUHlfVUNTNCBjaDsKICNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7CisgICAgICAgIGNoID0gdWNzNGxpYl91dGY4X2RlY29kZSgmcywgZSwgKFB5X1VDUzQgKil1bmljb2RlLCAmb3V0cG9zKTsKICNlbHNlCi0gICAgICAgICAgICAvKiAgY29tcHV0ZSBhbmQgYXBwZW5kIHRoZSB0d28gc3Vycm9nYXRlczogKi8KLQotICAgICAgICAgICAgLyogIHRyYW5zbGF0ZSBmcm9tIDEwMDAwLi4xMEZGRkYgdG8gMC4uRkZGRiAqLwotICAgICAgICAgICAgY2ggLT0gMHgxMDAwMDsKLQotICAgICAgICAgICAgLyogIGhpZ2ggc3Vycm9nYXRlID0gdG9wIDEwIGJpdHMgYWRkZWQgdG8gRDgwMCAqLwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KSgweEQ4MDAgKyAoY2ggPj4gMTApKTsKLQotICAgICAgICAgICAgLyogIGxvdyBzdXJyb2dhdGUgPSBib3R0b20gMTAgYml0cyBhZGRlZCB0byBEQzAwICovCi0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpKDB4REMwMCArIChjaCAmIDB4MDNGRikpOworICAgICAgICBjaCA9IHVjczJsaWJfdXRmOF9kZWNvZGUoJnMsIGUsIChQeV9VQ1MyICopdW5pY29kZSwgJm91dHBvcyk7CiAjZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2ggPiAweEZGKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgICAgICAgICAgYXNzZXJ0KDApOworI2Vsc2UKKyAgICAgICAgICAgIGFzc2VydChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpOworICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCisgICAgICAgICAgICB1bmljb2RlW291dHBvcysrXSA9ICh3Y2hhcl90KVB5X1VOSUNPREVfSElHSF9TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAod2NoYXJfdClQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgcyArPSBuOwotICAgICAgICBjb250aW51ZTsKLQotICAgICAgc3Vycm9nYXRlZXNjYXBlOgotICAgICAgICAqcCsrID0gMHhEQzAwICsgY2g7Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIWNoICYmIHMgPT0gZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qIHN1cnJvZ2F0ZWVzY2FwZSAqLworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAweERDMDAgKyAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICB9CiAgICAgfQotICAgICpwID0gTCdcMCc7CisgICAgdW5pY29kZVtvdXRwb3NdID0gTCdcMCc7CiAgICAgcmV0dXJuIHVuaWNvZGU7CiB9CiAKICNlbmRpZiAvKiBfX0FQUExFX18gKi8KIAotLyogQWxsb2NhdGlvbiBzdHJhdGVneTogIGlmIHRoZSBzdHJpbmcgaXMgc2hvcnQsIGNvbnZlcnQgaW50byBhIHN0YWNrIGJ1ZmZlcgorLyogUHJpbWFyeSBpbnRlcm5hbCBmdW5jdGlvbiB3aGljaCBjcmVhdGVzIHV0ZjggZW5jb2RlZCBieXRlcyBvYmplY3RzLgorCisgICBBbGxvY2F0aW9uIHN0cmF0ZWd5OiAgaWYgdGhlIHN0cmluZyBpcyBzaG9ydCwgY29udmVydCBpbnRvIGEgc3RhY2sgYnVmZmVyCiAgICBhbmQgYWxsb2NhdGUgZXhhY3RseSBhcyBtdWNoIHNwYWNlIG5lZWRlZCBhdCB0aGUgZW5kLiAgRWxzZSBhbGxvY2F0ZSB0aGUKICAgIG1heGltdW0gcG9zc2libGUgbmVlZGVkICg0IHJlc3VsdCBieXRlcyBwZXIgVW5pY29kZSBjaGFyYWN0ZXIpLCBhbmQgcmV0dXJuCiAgICB0aGUgZXhjZXNzIG1lbW9yeSBhdCB0aGUgZW5kLgogKi8KIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitfUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewotI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLwotICAgIGNoYXIgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBmcmVlIGJ5dGUgaW4gb3V0cHV0IGJ1ZmZlciAqLwotICAgIFB5X3NzaXplX3QgbmFsbG9jYXRlZDsgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIGFsbG9jYXRlZCAqLwotICAgIFB5X3NzaXplX3Qgbm5lZWRlZDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIG5lZWRlZCAqLwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogNF07Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0KLSAgICBhc3NlcnQocyAhPSBOVUxMKTsKLSAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKLQotICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgewotICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCi0gICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0Ci0gICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgotICAgICAgICAgKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLwotICAgICAgICBwID0gc3RhY2tidWY7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLwotICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIDQ7Ci0gICAgICAgIGlmIChuYWxsb2NhdGVkIC8gNCAhPSBzaXplKSAgLyogb3ZlcmZsb3chICovCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIH0KLQotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewotICAgICAgICBQeV9VQ1M0IGNoID0gc1tpKytdOwotCi0gICAgICAgIGlmIChjaCA8IDB4ODApCi0gICAgICAgICAgICAvKiBFbmNvZGUgQVNDSUkgKi8KLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7Ci0KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAweDA4MDApIHsKLSAgICAgICAgICAgIC8qIEVuY29kZSBMYXRpbi0xICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4YzAgfCAoY2ggPj4gNikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9IGVsc2UgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IGNoZWNrIGZvciBoaWdoIGFuZCBsb3cgc3Vycm9nYXRlICovCi0gICAgICAgICAgICBpZiAoY2ggPD0gMHhEQkZGICYmIGkgIT0gc2l6ZSAmJiAweERDMDAgPD0gc1tpXSAmJiBzW2ldIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gc1tpXTsKLSAgICAgICAgICAgICAgICAvKiBDb21iaW5lIHRoZSB0d28gc3Vycm9nYXRlcyB0byBmb3JtIGEgVUNTNCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgIGNoID0gKChjaCAtIDB4RDgwMCkgPDwgMTAgfCAoY2gyIC0gMHhEQzAwKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIGkrKzsKLQotICAgICAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDEyKSAmIDB4M2YpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgazsKLSAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgICAgICAgICAgICBzLCBzaXplLCAmZXhjLCBpLTEsIGksICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmICghcmVwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwKTsKLQotICAgICAgICAgICAgICAgIGlmIChyZXBzaXplID4gNCkgewotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChuYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplICsgNCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbmFsbG9jYXRlZCArPSByZXBzaXplIC0gNDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgb2Zmc2V0OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqcHJlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAqcHJlcCsrOwotICAgICAgICAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKnByZXAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXApOwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGM7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBwcmVwW2tdOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04Iiwgcywgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktMSwgaSwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKXByZXBba107Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0gZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZTAgfCAoY2ggPj4gMTIpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7Ci0gICAgICAgIH0gZWxzZSAvKiBjaCA+PSAweDEwMDAwICovIHsKLSAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhmMCB8IChjaCA+PiAxOCkpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKLSAgICB9Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gcmVzdWx0OwotIGVycm9yOgotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgIHJldHVybiBOVUxMOwotCi0jdW5kZWYgTUFYX1NIT1JUX1VOSUNIQVJTCi19Ci0KLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQotewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAvKiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBBU0NJSSwgb3IgUHlVbmljb2RlX1VURjgoKSB3b3VsZCBiZSBzZXQgKi8KKyAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpOworICAgICAgICByZXR1cm4gdWNzMWxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl91dGY4X2VuY29kZXIodW5pY29kZSwgZGF0YSwgc2l6ZSwgZXJyb3JzKTsKKyAgICB9Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB2ID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogfQogCiAvKiAtLS0gVVRGLTMyIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTMxMDcsMTQgKzQ5NTMsNyBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLSAgICBQeV9VTklDT0RFICpwOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBpbnQgcGFpcnMgPSAwOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFxOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmU7CiAgICAgaW50IGJvID0gMDsgICAgICAgLyogYXNzdW1lIG5hdGl2ZSBvcmRlcmluZyBieSBkZWZhdWx0ICovCiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7CkBAIC0zMTc4LDIzICs1MDE3LDEzIEBACiAgICAgICAgIGlvcmRlclszXSA9IDA7CiAgICAgfQogCi0gICAgLyogT24gbmFycm93IGJ1aWxkcyB3ZSBzcGxpdCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJNUCBpbnRvIHR3bwotICAgICAgIGNvZGVwb2ludHMgPT4gY291bnQgaG93IG11Y2ggZXh0cmEgc3BhY2Ugd2UgbmVlZC4gKi8KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChxcSA9IHE7IHFxIDwgZTsgcXEgKz0gNCkKLSAgICAgICAgaWYgKHFxW2lvcmRlclsyXV0gIT0gMCB8fCBxcVtpb3JkZXJbM11dICE9IDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0KICAgICAvKiBUaGlzIG1pZ2h0IGJlIG9uZSB0byBtdWNoLCBiZWNhdXNlIG9mIGEgQk9NICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KChzaXplKzMpLzQrcGFpcnMpOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChzaXplKzMpLzQsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLQotICAgIC8qIFVucGFjayBVVEYtMzIgZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgb3V0cG9zID0gMDsKIAogICAgIHdoaWxlIChxIDwgZSkgewogICAgICAgICBQeV9VQ1M0IGNoOwpAQCAtMzIxOSwyNCArNTA0OCwxNiBAQAogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzQ7CiAgICAgICAgICAgICBnb3RvIHV0ZjMyRXJyb3I7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgcSArPSA0OwogICAgICAgICBjb250aW51ZTsKICAgICAgIHV0ZjMyRXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjMyIiwgZXJybXNnLAogICAgICAgICAgICAgICAgICZzdGFydHMsIChjb25zdCBjaGFyICoqKSZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAoY29uc3QgY2hhciAqKikmcSwKLSAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKQEAgLTMyNDcsMTIgKzUwNjgsMTIgQEAKICAgICAgICAgKmNvbnN1bWVkID0gKGNvbnN0IGNoYXIgKilxLXN0YXJ0czsKIAogICAgIC8qIEFkanVzdCBsZW5ndGggKi8KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnVuaWNvZGUsIHAgLSB1bmljb2RlLT5zdHIpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKQEAgLTMyNjIsMTkgKzUwODMsMTYgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQorX1B5VW5pY29kZV9FbmNvZGVVVEYzMihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGJ5dGVzaXplOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCisgICAgUHlfc3NpemVfdCBuc2l6ZSwgYnl0ZXNpemUsIGk7CiAgICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCiAjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgaW9yZGVyW10gPSB7MCwgMSwgMiwgM307CkBAIC0zMjkxLDE1ICs1MTA5LDE3IEBACiAgICAgICAgIHAgKz0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSgwKQogCi0gICAgLyogSW4gbmFycm93IGJ1aWxkcyB3ZSBjYW4gb3V0cHV0IHN1cnJvZ2F0ZSBwYWlycyBhcyBvbmUgY29kZXBvaW50LAotICAgICAgIHNvIHdlIG5lZWQgbGVzcyBzcGFjZS4gKi8KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChpID0gcGFpcnMgPSAwOyBpIDwgc2l6ZS0xOyBpKyspCi0gICAgICAgIGlmICgweEQ4MDAgPD0gc1tpXSAmJiBzW2ldIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgMHhEQzAwIDw9IHNbaSsxXSAmJiBzW2krMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgcGFpcnMrKzsKLSNlbmRpZgotICAgIG5zaXplID0gKHNpemUgLSBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cikpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIG5zaXplID0gbGVuICsgKGJ5dGVvcmRlciA9PSAwKTsKICAgICBieXRlc2l6ZSA9IG5zaXplICogNDsKICAgICBpZiAoYnl0ZXNpemUgLyA0ICE9IG5zaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMzMTAsNyArNTEzMCw3IEBACiAgICAgcCA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQogICAgICAgICBTVE9SRUNIQVIoMHhGRUZGKTsKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCiAgICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkgewpAQCAtMzMyOCwzNiArNTE0OCwzMyBAQAogICAgICAgICBpb3JkZXJbM10gPSAwOwogICAgIH0KIAotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAqcysrOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYgJiYgc2l6ZSA+IDApIHsKLSAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gKnM7Ci0gICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNoMiAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgY2ggPSAoKChjaCAmIDB4M0ZGKTw8MTApIHwgKGNoMiAmIDB4M0ZGKSkgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBTVE9SRUNIQVIoY2gpOwotICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgIFNUT1JFQ0hBUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAKICAgZG9uZToKICAgICByZXR1cm4gdjsKICN1bmRlZiBTVE9SRUNIQVIKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0bXAsIGVycm9ycywgYnl0ZW9yZGVyKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih1bmljb2RlLCBOVUxMLCAwKTsKIH0KIAogLyogLS0tIFVURi0xNiBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0zMzcxLDIzICs1MTg4LDYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBieXRlb3JkZXIsIE5VTEwpOwogfQogCi0vKiBUd28gbWFza3MgZm9yIGZhc3QgY2hlY2tpbmcgb2Ygd2hldGhlciBhIEMgJ2xvbmcnIG1heSBjb250YWluCi0gICBVVEYxNi1lbmNvZGVkIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzLiBUaGlzIGlzIGFuIGVmZmljaWVudCBoZXVyaXN0aWMsCi0gICBhc3N1bWluZyB0aGF0IG5vbi1zdXJyb2dhdGUgY2hhcmFjdGVycyB3aXRoIGEgY29kZSBwb2ludCA+PSAweDgwMDAgYXJlCi0gICByYXJlIGluIG1vc3QgaW5wdXQuCi0gICBGQVNUX0NIQVJfTUFTSyBpcyB1c2VkIHdoZW4gdGhlIGlucHV0IGlzIGluIG5hdGl2ZSBieXRlIG9yZGVyaW5nLAotICAgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSyB3aGVuIHRoZSBpbnB1dCBpcyBpbiBieXRlc3dhcHBlZCBvcmRlcmluZy4KLSovCi0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0jIGRlZmluZSBGQVNUX0NIQVJfTUFTSyAgICAgICAgIDB4ODAwMDgwMDA4MDAwODAwMEwKLSMgZGVmaW5lIFNXQVBQRURfRkFTVF9DSEFSX01BU0sgMHgwMDgwMDA4MDAwODAwMDgwTAotI2VsaWYgKFNJWkVPRl9MT05HID09IDQpCi0jIGRlZmluZSBGQVNUX0NIQVJfTUFTSyAgICAgICAgIDB4ODAwMDgwMDBMCi0jIGRlZmluZSBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLIDB4MDA4MDAwODBMCi0jZWxzZQotIyBlcnJvciBDICdsb25nJyBzaXplIHNob3VsZCBiZSBlaXRoZXIgNCBvciA4IQotI2VuZGlmCi0KIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCkBAIC0zMzk5LDMxICs1MTk5LDE0IEBACiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSwgKmUsICphbGlnbmVkX2VuZDsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxLCAqZTsKICAgICBpbnQgYm8gPSAwOyAgICAgICAvKiBhc3N1bWUgbmF0aXZlIG9yZGVyaW5nIGJ5IGRlZmF1bHQgKi8KLSAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gMDsKKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwotICAgIC8qIE9mZnNldHMgZnJvbSBxIGZvciByZXRyaWV2aW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgaW50IGloaSA9IDEsIGlsbyA9IDA7Ci0jZWxzZQotICAgIGludCBpaGkgPSAwLCBpbG8gPSAxOwotI2VuZGlmCiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQotICAgICAgIGNoYXJhY3RlciBjb3VudCAqLwotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotCi0gICAgLyogVW5wYWNrIFVURi0xNiBlbmNvZGVkIGRhdGEgKi8KLSAgICBwID0gdW5pY29kZS0+c3RyOwogICAgIHEgPSAodW5zaWduZWQgY2hhciAqKXM7CiAgICAgZSA9IHEgKyBzaXplOwogCkBAIC0zNDM0LDE3NiArNTIxNyw5OCBAQAogICAgICAgIGJ5dGUgb3JkZXIgc2V0dGluZyBhY2NvcmRpbmdseS4gSW4gbmF0aXZlIG1vZGUsIHRoZSBsZWFkaW5nIEJPTQogICAgICAgIG1hcmsgaXMgc2tpcHBlZCwgaW4gYWxsIG90aGVyIG1vZGVzLCBpdCBpcyBjb3BpZWQgdG8gdGhlIG91dHB1dAogICAgICAgIHN0cmVhbSBhcy1pcyAoZ2l2aW5nIGEgWldOQlNQIGNoYXJhY3RlcikuICovCi0gICAgaWYgKGJvID09IDApIHsKLSAgICAgICAgaWYgKHNpemUgPj0gMikgewotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSBib20gPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9tID09IDB4RkZGRSkgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IDE7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgaWYgKGJvbSA9PSAweEZFRkYpIHsKLSAgICAgICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICAgICAgYm8gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYm9tID09IDB4RkZGRSkgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IC0xOwotICAgICAgICAgICAgfQotI2VuZGlmCisgICAgaWYgKGJvID09IDAgJiYgc2l6ZSA+PSAyKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgYm9tID0gKHFbMV0gPDwgOCkgfCBxWzBdOworICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgeworICAgICAgICAgICAgcSArPSAyOworICAgICAgICAgICAgYm8gPSAtMTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7CisgICAgICAgICAgICBxICs9IDI7CisgICAgICAgICAgICBibyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGJ5dGVvcmRlcikKKyAgICAgICAgICAgICpieXRlb3JkZXIgPSBibzsKICAgICB9CiAKLSAgICBpZiAoYm8gPT0gLTEpIHsKLSAgICAgICAgLyogZm9yY2UgTEUgKi8KLSAgICAgICAgaWhpID0gMTsKLSAgICAgICAgaWxvID0gMDsKKyAgICBpZiAocSA9PSBlKSB7CisgICAgICAgIGlmIChjb25zdW1lZCkKKyAgICAgICAgICAgICpjb25zdW1lZCA9IHNpemU7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgfQotICAgIGVsc2UgaWYgKGJvID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaWhpID0gMDsKLSAgICAgICAgaWxvID0gMTsKLSAgICB9CisKICNpZmRlZiBCWVRFT1JERVJfSVNfTElUVExFX0VORElBTgotICAgIG5hdGl2ZV9vcmRlcmluZyA9IGlsbyA8IGloaTsKKyAgICBuYXRpdmVfb3JkZXJpbmcgPSBibyA8PSAwOwogI2Vsc2UKLSAgICBuYXRpdmVfb3JkZXJpbmcgPSBpbG8gPiBpaGk7CisgICAgbmF0aXZlX29yZGVyaW5nID0gYm8gPj0gMDsKICNlbmRpZgogCi0gICAgYWxpZ25lZF9lbmQgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAoKHNpemVfdCkgZSAmIH5MT05HX1BUUl9NQVNLKTsKKyAgICAvKiBOb3RlOiBzaXplIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcgVW5pY29kZQorICAgICAgIGNoYXJhY3RlciBjb3VudCAqLworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KChlIC0gcSArIDEpIC8gMiwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgb3V0cG9zID0gMDsKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeV9VTklDT0RFIGNoOwotICAgICAgICBpZiAoZSAtIHEgPCAyKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSAwOworICAgICAgICBpZiAoZSAtIHEgPj0gMikgeworICAgICAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNoID0gdWNzMWxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgIGNoID0gdWNzMmxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICBjaCA9IHVjczRsaWJfdXRmMTZfZGVjb2RlKCZxLCBlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChjaCkKKyAgICAgICAgeworICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAvKiByZW1haW5pbmcgYnl0ZSBhdCB0aGUgZW5kPyAoc2l6ZSBzaG91bGQgYmUgZXZlbikgKi8KICAgICAgICAgICAgIGlmIChxID09IGUgfHwgY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZ290byBFbmQ7CiAgICAgICAgICAgICBlcnJtc2cgPSAidHJ1bmNhdGVkIGRhdGEiOwogICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSAoKGNvbnN0IGNoYXIgKillKSAtIHN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICAgICAgICAgIGdvdG8gdXRmMTZFcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLyogVGhlIHJlbWFpbmluZyBpbnB1dCBjaGFycyBhcmUgaWdub3JlZCBpZiB0aGUgY2FsbGJhY2sKICAgICAgICAgICAgICAgIGNob29zZXMgdG8gc2tpcCB0aGUgaW5wdXQgKi8KLSAgICAgICAgfQotICAgICAgICAvKiBGaXJzdCBjaGVjayBmb3IgcG9zc2libGUgYWxpZ25lZCByZWFkIG9mIGEgQyAnbG9uZycuIFVuYWxpZ25lZAotICAgICAgICAgICByZWFkcyBhcmUgbW9yZSBleHBlbnNpdmUsIGJldHRlciB0byBkZWZlciB0byBhbm90aGVyIGl0ZXJhdGlvbi4gKi8KLSAgICAgICAgaWYgKCEoKHNpemVfdCkgcSAmIExPTkdfUFRSX01BU0spKSB7Ci0gICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2Ygbm9uLXN1cnJvZ2F0ZSBjaGFycy4gKi8KLSAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9xID0gcTsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKl9wID0gcDsKLSAgICAgICAgICAgIGlmIChuYXRpdmVfb3JkZXJpbmcpIHsKLSAgICAgICAgICAgICAgICAvKiBOYXRpdmUgb3JkZXJpbmcgaXMgc2ltcGxlOiBhcyBsb25nIGFzIHRoZSBpbnB1dCBjYW5ub3QKLSAgICAgICAgICAgICAgICAgICBwb3NzaWJseSBjb250YWluIGEgc3Vycm9nYXRlIGNoYXIsIGRvIGFuIHVucm9sbGVkIGNvcHkKLSAgICAgICAgICAgICAgICAgICBvZiBzZXZlcmFsIDE2LWJpdCBjb2RlIHBvaW50cyB0byB0aGUgdGFyZ2V0IG9iamVjdC4KLSAgICAgICAgICAgICAgICAgICBUaGUgbm9uLXN1cnJvZ2F0ZSBjaGVjayBpcyBkb25lIG9uIHNldmVyYWwgaW5wdXQgYnl0ZXMKLSAgICAgICAgICAgICAgICAgICBhdCBhIHRpbWUgKGFzIG1hbnkgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbikuICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBGQVNUX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBfcFswXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzBdOwotICAgICAgICAgICAgICAgICAgICBfcFsxXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzFdOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzJdOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9ICgodW5zaWduZWQgc2hvcnQgKikgX3EpWzNdOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIF9xICs9IFNJWkVPRl9MT05HOwotICAgICAgICAgICAgICAgICAgICBfcCArPSBTSVpFT0ZfTE9ORyAvIDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLyogQnl0ZXN3YXBwZWQgb3JkZXJpbmcgaXMgc2ltaWxhciwgYnV0IHdlIG11c3QgZGVjb21wb3NlCi0gICAgICAgICAgICAgICAgICAgdGhlIGNvcHkgYnl0ZXdpc2UsIGFuZCB0YWtlIGNhcmUgb2YgemVybydpbmcgb3V0IHRoZQotICAgICAgICAgICAgICAgICAgIHVwcGVyIGJ5dGVzIGlmIHRoZSB0YXJnZXQgb2JqZWN0IGlzIGluIDMyLWJpdCB1bml0cwotICAgICAgICAgICAgICAgICAgICh0aGF0IGlzLCBpbiBVQ1MtNCBidWlsZHMpLiAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChfcSA8IGFsaWduZWRfZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICogKHVuc2lnbmVkIGxvbmcgKikgX3E7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICYgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAvKiBaZXJvIHVwcGVyIGJ5dGVzIGluIFVDUy00IGJ1aWxkcyAqLwotI2lmIChQeV9VTklDT0RFX1NJWkUgPiAyKQotICAgICAgICAgICAgICAgICAgICBfcFswXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gMDsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAwOwotICAgICAgICAgICAgICAgICAgICBfcFszXSA9IDA7Ci0jZW5kaWYKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAvKiBJc3N1ZSAjNDkxNjsgVUNTLTQgYnVpbGRzIG9uIGJpZyBlbmRpYW4gbWFjaGluZXMgbXVzdAotICAgICAgICAgICAgICAgICAgICAgICBmaWxsIHRoZSB0d28gbGFzdCBieXRlcyBvZiBlYWNoIDQtYnl0ZSB1bml0LiAqLwotI2lmICghZGVmaW5lZChCWVRFT1JERVJfSVNfTElUVExFX0VORElBTikgJiYgUHlfVU5JQ09ERV9TSVpFID4gMikKLSMgZGVmaW5lIE9GRiAyCi0jZWxzZQotIyBkZWZpbmUgT0ZGIDAKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDFdID0gX3FbMF07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMF0gPSBfcVsxXTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgUHlfVU5JQ09ERV9TSVpFXSA9IF9xWzJdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDAgKyBQeV9VTklDT0RFX1NJWkVdID0gX3FbM107Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIDIgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNF07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIDIgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNV07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMSArIDMgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbNl07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIDMgKiBQeV9VTklDT0RFX1NJWkVdID0gX3FbN107Ci0jZW5kaWYKLSN1bmRlZiBPRkYKLSAgICAgICAgICAgICAgICAgICAgX3EgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HIC8gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gX3A7Ci0gICAgICAgICAgICBxID0gX3E7Ci0gICAgICAgICAgICBpZiAoZSAtIHEgPCAyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNoID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKLQotICAgICAgICBxICs9IDI7Ci0KLSAgICAgICAgaWYgKGNoIDwgMHhEODAwIHx8IGNoID4gMHhERkZGKSB7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDIgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIGVuY29kaW5nIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKGNvbnN0IGNoYXIgKilxKSAtIDIgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGVycm1zZyA9ICJpbGxlZ2FsIFVURi0xNiBzdXJyb2dhdGUiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gNCAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBVVEYtMTYgY29kZSBwYWlyOiAqLwotICAgICAgICBpZiAoZSAtIHEgPCAyKSB7Ci0gICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7Ci0gICAgICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpIC0gMikgLSBzdGFydHM7Ci0gICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOwotICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMiA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0gICAgICAgICAgICBxICs9IDI7Ci0gICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNoMiAmJiBjaDIgPD0gMHhERkZGKSB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICpwKysgPSBjaDsKLSAgICAgICAgICAgICAgICAqcCsrID0gY2gyOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAqcCsrID0gKCgoY2ggJiAweDNGRik8PDEwKSB8IChjaDIgJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImlsbGVnYWwgVVRGLTE2IHN1cnJvZ2F0ZSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoKGNvbnN0IGNoYXIgKilxKS00KS1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzI7Ci0gICAgICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0KLSAgICAgICAgZXJybXNnID0gImlsbGVnYWwgZW5jb2RpbmciOwotICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpLTIpLXN0YXJ0czsKLSAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzI7Ci0gICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byByZXBvcnQgdGhlIGVycm9yICovCi0KLSAgICAgIHV0ZjE2RXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywKICAgICAgICAgICAgICAgICAmZXJyb3JIYW5kbGVyLApAQCAtMzYxNSwyNyArNTMyMCwyMSBAQAogICAgICAgICAgICAgICAgICZleGMsCiAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiopJnEsCiAgICAgICAgICAgICAgICAgJnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgJm91dHBvcywKLSAgICAgICAgICAgICAgICAmcCkpCisgICAgICAgICAgICAgICAgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIC8qIFVwZGF0ZSBkYXRhIGJlY2F1c2UgdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIgbWlnaHQgaGF2ZQotICAgICAgICAgICBjaGFuZ2VkIHRoZSBpbnB1dCBvYmplY3QuICovCi0gICAgICAgIGFsaWduZWRfZW5kID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgKChzaXplX3QpIGUgJiB+TE9OR19QVFJfTUFTSyk7CiAgICAgfQogCi0gICAgaWYgKGJ5dGVvcmRlcikKLSAgICAgICAgKmJ5dGVvcmRlciA9IGJvOwotCitFbmQ6CiAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAqY29uc3VtZWQgPSAoY29uc3QgY2hhciAqKXEtc3RhcnRzOwogCiAgICAgLyogQWRqdXN0IGxlbmd0aCAqLwotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIHVuaWNvZGUtPnN0cikgPCAwKQorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHVuaWNvZGUpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwpAQCAtMzY0NCw4ICs1MzQzLDc3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLSN1bmRlZiBGQVNUX0NIQVJfTUFTSwotI3VuZGVmIFNXQVBQRURfRkFTVF9DSEFSX01BU0sKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBjb25zdCB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0ICp2OworICAgIHVuc2lnbmVkIHNob3J0ICpvdXQ7CisgICAgUHlfc3NpemVfdCBieXRlc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHBhaXJzOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPj0gMDsKKyNlbHNlCisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA8PSAwOworI2VuZGlmCisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHIpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBwYWlycyA9IDA7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqaW4gPSAoY29uc3QgUHlfVUNTNCAqKWRhdGE7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgKmVuZCA9IGluICsgbGVuOworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpCisgICAgICAgICAgICBpZiAoKmluKysgPj0gMHgxMDAwMCkKKyAgICAgICAgICAgICAgICBwYWlycysrOworICAgIH0KKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBieXRlc2l6ZSA9IChsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpICogMjsKKyAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDItYnl0ZXMgYWxpZ25lZCAqLworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgMikpOworICAgIG91dCA9ICh1bnNpZ25lZCBzaG9ydCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIGlmIChieXRlb3JkZXIgPT0gMCkKKyAgICAgICAgKm91dCsrID0gMHhGRUZGOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgZ290byBkb25lOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeworICAgICAgICB1Y3MxbGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1MxICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICB1Y3MybGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1MyICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogeworICAgICAgICB1Y3M0bGliX3V0ZjE2X2VuY29kZShvdXQsIChjb25zdCBQeV9VQ1M0ICopZGF0YSwgbGVuLCBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICBkb25lOgorICAgIHJldHVybiB2OworfQogCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoY29uc3QgUHlfVU5JQ09ERSAqcywKQEAgLTM2NTMsMTM2ICs1NDIxLDE0MSBAQAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgUHlfc3NpemVfdCBuc2l6ZSwgYnl0ZXNpemU7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgUHlfc3NpemVfdCBpLCBwYWlyczsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgotICAgIC8qIE9mZnNldHMgZnJvbSBwIGZvciBzdG9yaW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLwotI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgaW50IGloaSA9IDEsIGlsbyA9IDA7Ci0jZWxzZQotICAgIGludCBpaGkgPSAwLCBpbG8gPSAxOwotI2VuZGlmCi0KLSNkZWZpbmUgU1RPUkVDSEFSKENIKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcFtpaGldID0gKChDSCkgPj4gOCkgJiAweGZmOyAgICAgICAgICAgIFwKLSAgICAgICAgcFtpbG9dID0gKENIKSAmIDB4ZmY7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBmb3IgKGkgPSBwYWlycyA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgIGlmIChzW2ldID49IDB4MTAwMDApCi0gICAgICAgICAgICBwYWlycysrOwotI2VuZGlmCi0gICAgLyogMiAqIChzaXplICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApKSAqLwotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggfHwKLSAgICAgICAgc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICBuc2l6ZSA9IHNpemUgKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7Ci0gICAgYnl0ZXNpemUgPSBuc2l6ZSAqIDI7Ci0gICAgaWYgKGJ5dGVzaXplIC8gMiAhPSBuc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBwID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCi0gICAgICAgIFNUT1JFQ0hBUigweEZFRkYpOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIGlmIChieXRlb3JkZXIgPT0gLTEpIHsKLSAgICAgICAgLyogZm9yY2UgTEUgKi8KLSAgICAgICAgaWhpID0gMTsKLSAgICAgICAgaWxvID0gMDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYnl0ZW9yZGVyID09IDEpIHsKLSAgICAgICAgLyogZm9yY2UgQkUgKi8KLSAgICAgICAgaWhpID0gMDsKLSAgICAgICAgaWxvID0gMTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKLSAgICAgICAgUHlfVU5JQ09ERSBjaDIgPSAwOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgY2gyID0gMHhEQzAwIHwgKChjaC0weDEwMDAwKSAmIDB4M0ZGKTsKLSAgICAgICAgICAgIGNoICA9IDB4RDgwMCB8ICgoY2gtMHgxMDAwMCkgPj4gMTApOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgU1RPUkVDSEFSKGNoKTsKLSAgICAgICAgaWYgKGNoMikKLSAgICAgICAgICAgIFNUT1JFQ0hBUihjaDIpOwotICAgIH0KLQotICBkb25lOgotICAgIHJldHVybiB2OwotI3VuZGVmIFNUT1JFQ0hBUgorICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodG1wLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodW5pY29kZSwgTlVMTCwgMCk7CiB9CiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCisgICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgorICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KKyAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQorICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KKyAgICovCitzdGF0aWMgUHlfc3NpemVfdAorbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOworICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgeworICAgICAgICBpZiAoKnAgPiAxMjcpIHsKKyAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgICsrbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCisgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKKyAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCisgICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnXG4nOgorICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6CisgICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgorICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKKyAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgorICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6CisgICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLworICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBsZW5ndGg7Cit9CisKIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKLSAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBpbnQgaTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBpbnQgajsKKyAgICBQeU9iamVjdCAqdjsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgY2hhciogbWVzc2FnZTsKICAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgaTsKIAotICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCi0gICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKLSAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKLSAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBsZW4gPSBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcocywgc2l6ZSk7CisKKyAgICAvKiBBZnRlciBsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoKSB0aGVyZSBhcmUgdHdvIGFsdGVybmF0aXZlcywKKyAgICAgICBlaXRoZXIgdGhlIHN0cmluZyBpcyBwdXJlIEFTQ0lJIHdpdGggbmFtZWQgZXNjYXBlcyBsaWtlIFxuLCBldGMuCisgICAgICAgYW5kIHdlIGRldGVybWluZWQgaXQncyBleGFjdCBzaXplIChjb21tb24gY2FzZSkKKyAgICAgICBvciBpdCBjb250YWlucyBceCwgXHUsIC4uLiBlc2NhcGUgc2VxdWVuY2VzLiAgdGhlbiB3ZSBjcmVhdGUgYQorICAgICAgIGxlZ2FjeSB3Y2hhciBzdHJpbmcgYW5kIHJlc2l6ZSBpdCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uICovCisgICAgaWYgKGxlbiA+PSAwKSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KGxlbiwgMTI3KTsKKyAgICAgICAgaWYgKCF2KQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodikgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKKyAgICAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCisgICAgICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgICAgICB3ZSdsbCBoYXZlIHRvIGFsbG9jYXRlIG1vcmUgc3BhY2UpICovCisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgICAgIGlmICghdikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgbGVuID0gc2l6ZTsKKyAgICB9CisKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLQotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgaSA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VOSUNPREUgeDsKKyAgICAgICAgUHlfVUNTNCB4OwogICAgICAgICBpbnQgZGlnaXRzOwogCisgICAgICAgIC8qIFRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggaSA9PSBhc2NpaV9sZW5ndGggaXMgYSBiYWNrc2xhc2gKKyAgICAgICAgICAgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLiAqLworICAgICAgICBhc3NlcnQoaSA8PSBsZW4pOworCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJmksICh1bnNpZ25lZCBjaGFyKSAqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtMzc5MiwyMCArNTU2NSwzNCBAQAogICAgICAgICBjID0gKnMrKzsKICAgICAgICAgaWYgKHMgPiBlbmQpCiAgICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisKKyAgICAgICAgLyogVGhlIG9ubHkgY2FzZSBpbiB3aGljaCBpID09IGFzY2lpX2xlbmd0aCBpcyBhIGJhY2tzbGFzaAorICAgICAgICAgICBmb2xsb3dlZCBieSBhIG5ld2xpbmUuICovCisgICAgICAgIGFzc2VydChpIDwgbGVuIHx8IChpID09IGxlbiAmJiBjID09ICdcbicpKTsKKwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLworI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmaSwgY2gpIDwgMCkgICAgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9d2hpbGUoMCkKKwogICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6ICpwKysgPSAnXFwnOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOiAqcCsrID0gJ1wnJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wiJzogKnArKyA9ICdcIic7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogKnArKyA9ICdcYic7IGJyZWFrOwotICAgICAgICBjYXNlICdmJzogKnArKyA9ICdcMDE0JzsgYnJlYWs7IC8qIEZGICovCi0gICAgICAgIGNhc2UgJ3QnOiAqcCsrID0gJ1x0JzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ24nOiAqcCsrID0gJ1xuJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiAqcCsrID0gJ1xyJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3YnOiAqcCsrID0gJ1wwMTMnOyBicmVhazsgLyogVlQgKi8KLSAgICAgICAgY2FzZSAnYSc6ICpwKysgPSAnXDAwNyc7IGJyZWFrOyAvKiBCRUwsIG5vdCBjbGFzc2ljIEMgKi8KKyAgICAgICAgY2FzZSAnXFwnOiBXUklURUNIQVIoJ1xcJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcJyc6IFdSSVRFQ0hBUignXCcnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1wiJzogV1JJVEVDSEFSKCdcIicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFQ0hBUignXGInKTsgYnJlYWs7CisgICAgICAgIC8qIEZGICovCisgICAgICAgIGNhc2UgJ2YnOiBXUklURUNIQVIoJ1wwMTQnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ3QnOiBXUklURUNIQVIoJ1x0Jyk7IGJyZWFrOworICAgICAgICBjYXNlICduJzogV1JJVEVDSEFSKCdcbicpOyBicmVhazsKKyAgICAgICAgY2FzZSAncic6IFdSSVRFQ0hBUignXHInKTsgYnJlYWs7CisgICAgICAgIC8qIFZUICovCisgICAgICAgIGNhc2UgJ3YnOiBXUklURUNIQVIoJ1wwMTMnKTsgYnJlYWs7CisgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLworICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOwogCiAgICAgICAgICAgICAvKiBcT09PIChvY3RhbCkgZXNjYXBlcyAqLwogICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKQEAgLTM4MTYsNyArNTYwMyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKICAgICAgICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcCsrID0geDsKKyAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvKiBoZXggZXNjYXBlcyAqLwpAQCAtMzgzOCwyNyArNTYyNSwyNyBAQAogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgaGV4ZXNjYXBlOgogICAgICAgICAgICAgY2hyID0gMDsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAocytkaWdpdHM+ZW5kKSB7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzaXplOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgImVuZCBvZiBzdHJpbmcgaW4gZXNjYXBlIHNlcXVlbmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRpZ2l0czsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSBzW2ldOworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGRpZ2l0czsgKytqKSB7CisgICAgICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSBzW2pdOwogICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSAocytpKzEpLXN0YXJ0czsKKyAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSAocytqKzEpLXN0YXJ0czsKICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2hyID0gKGNocjw8NCkgJiB+MHhGOwpAQCAtMzg2OSwzNCArNTY1NiwyMiBAQAogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdBJzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMgKz0gaTsKKyAgICAgICAgICAgIHMgKz0gajsKICAgICAgICAgICAgIGlmIChjaHIgPT0gMHhmZmZmZmZmZiAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIC8qIF9kZWNvZGluZ19lcnJvciB3aWxsIGhhdmUgYWxyZWFkeSB3cml0dGVuIGludG8gdGhlCiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0IGJ1ZmZlci4gKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgc3RvcmU6CiAgICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaHIgaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIGlmIChjaHIgPD0gMHhmZmZmKQotICAgICAgICAgICAgICAgIC8qIFVDUy0yIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkgY2hyOwotICAgICAgICAgICAgZWxzZSBpZiAoY2hyIDw9IDB4MTBmZmZmKSB7Ci0gICAgICAgICAgICAgICAgLyogVUNTLTQgY2hhcmFjdGVyLiBFaXRoZXIgc3RvcmUgZGlyZWN0bHksIG9yIGFzCi0gICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlIHBhaXIuICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgKnArKyA9IGNocjsKLSNlbHNlCi0gICAgICAgICAgICAgICAgY2hyIC09IDB4MTAwMDBMOwotICAgICAgICAgICAgICAgICpwKysgPSAweEQ4MDAgKyAoUHlfVU5JQ09ERSkgKGNociA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IDB4REMwMCArIChQeV9VTklDT0RFKSAoY2hyICYgMHgwM0ZGKTsKLSNlbmRpZgorICAgICAgICAgICAgaWYgKGNociA8PSBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIFdSSVRFQ0hBUihjaHIpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5MDYsNyArNTY4MSw4IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAvKiBsb2FkIHRoZSB1bmljb2RlIGRhdGEgbW9kdWxlICovCi0gICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydChQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7CisgICAgICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKICAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gdWNuaGFzaEVycm9yOwogICAgICAgICAgICAgfQpAQCAtMzkxOSwxNyArNTY5NSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIG5hbWUuICBsb29rIGl0IHVwIGluIHRoZSB1bmljb2RlIGRhdGFiYXNlICovCiAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KShzLXN0YXJ0LTEpLCAmY2hyKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hyLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtMzkzOCwyOCArNTcxNCwyOSBAQAogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFwgYXQgZW5kIG9mIHN0cmluZyI7CiAgICAgICAgICAgICAgICAgcy0tOwogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpc1stMV07CisgICAgICAgICAgICAgICAgV1JJVEVDSEFSKCdcXCcpOworICAgICAgICAgICAgICAgIFdSSVRFQ0hBUihzWy0xXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgbmV4dEJ5dGU6CiAgICAgICAgIDsKICAgICB9Ci0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyN1bmRlZiBXUklURUNIQVIKKworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgaSkgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgdWNuaGFzaEVycm9yOgogICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM5ODUsMzkgKzU3NjIsMTYgQEAKIAogKi8KIAotUHlfTE9DQUxfSU5MSU5FKGNvbnN0IFB5X1VOSUNPREUgKikgZmluZGNoYXIoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2gpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIC8qIGxpa2Ugd2NzY2hyLCBidXQgZG9lc24ndCBzdG9wIGF0IE5VTEwgY2hhcmFjdGVycyAqLwotCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgaWYgKCpzID09IGNoKQotICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgIHMrKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgKmhleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKLQotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQoteworICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAwOwogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gMTA7Ci0jZWxzZQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDY7Ci0jZW5kaWYKLQotICAgIC8qIFhYWChubm9yd2l0eik6IHJhdGhlciB0aGFuIG92ZXItYWxsb2NhdGluZywgaXQgd291bGQgYmUKLSAgICAgICBiZXR0ZXIgdG8gY2hvb3NlIGEgZGlmZmVyZW50IHNjaGVtZS4gIFBlcmhhcHMgc2NhbiB0aGUKLSAgICAgICBmaXJzdCBOLWNoYXJzIG9mIHRoZSBzdHJpbmcgYW5kIGFsbG9jYXRlIGJhc2VkIG9uIHRoYXQgc2l6ZS4KLSAgICAqLwogICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSB1bmljaHIKICAgICAgICBlc2NhcGUuCiAKQEAgLTQwMzIsMjMgKzU3ODYsMzggQEAKICAgICAgICBlc2NhcGUuCiAgICAgKi8KIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDQ7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA2OyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBleHBhbmRzaXplID0gMTA7IGJyZWFrOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCisgICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKnNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGV4cGFuZHNpemUqbGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKIAotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCiAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CkBAIC00MDU3LDU3ICs1ODI2LDMwIEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0jZWxzZQotICAgICAgICAvKiBNYXAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoMjsKLSAgICAgICAgICAgIFB5X1VDUzQgdWNzOwotCi0gICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgaWYgKGNoMiA+PSAweERDMDAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoOiBpc29sYXRlZCBzdXJyb2dhdGVzIGFyZSBjb3BpZWQgYXMtaXMgKi8KLSAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgIHNpemUrKzsKLSAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAyNTYpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCkBAIC00MTI4LDggKzU4NzAsOCBAQAogICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA+PSAweDdGKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwogICAgICAgICB9CiAKICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KQEAgLTQxNDMsMzAgKzU4ODUsMzEgQEAKICAgICByZXR1cm4gcmVwcjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpzOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHMgPSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpKTsKLSAgICByZXR1cm4gczsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogLS0tIFJhdyBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKmJzOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwpAQCAtNDE3NiwxMiArNTkxOSwxMiBAQAogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgb3V0cG9zID0gMDsKICAgICBlbmQgPSBzICsgc2l6ZTsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CkBAIC00MTkxLDcgKzU5MzQsOCBAQAogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCAodW5zaWduZWQgY2hhcikqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwpAQCAtNDIwMiwxOSArNTk0NiwxOSBAQAogICAgICAgICBmb3IgKDtzIDwgZW5kOykgewogICAgICAgICAgICAgaWYgKCpzICE9ICdcXCcpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsICh1bnNpZ25lZCBjaGFyKSpzKyspIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCgocyAtIGJzKSAmIDEpID09IDAgfHwKICAgICAgICAgICAgIHMgPj0gZW5kIHx8CiAgICAgICAgICAgICAoKnMgIT0gJ3UnICYmICpzICE9ICdVJykpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHAtLTsKKyAgICAgICAgb3V0cG9zLS07CiAgICAgICAgIGNvdW50ID0gKnM9PSd1JyA/IDQgOiA4OwogICAgICAgICBzKys7CiAKICAgICAgICAgLyogXHVYWFhYIHdpdGggNCBoZXggZGlnaXRzLCBcVXh4eHh4eHh4IHdpdGggOCAqLwotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICBmb3IgKHggPSAwLCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsrcykgewogICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewpAQCAtNDIyMyw3ICs1OTY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgInRydW5jYXRlZCBcXHVYWFhYIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7CiAgICAgICAgICAgICB9CkBAIC00MjM1LDM3ICs1OTc5LDI2IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHggPD0gMHhmZmZmKQotICAgICAgICAgICAgLyogVUNTLTIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIHg7Ci0gICAgICAgIGVsc2UgaWYgKHggPD0gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgIC8qIFVDUy00IGNoYXJhY3Rlci4gRWl0aGVyIHN0b3JlIGRpcmVjdGx5LCBvciBhcwotICAgICAgICAgICAgICAgc3Vycm9nYXRlIHBhaXIuICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpIHg7Ci0jZWxzZQotICAgICAgICAgICAgeCAtPSAweDEwMDAwTDsKLSAgICAgICAgICAgICpwKysgPSAweEQ4MDAgKyAoUHlfVU5JQ09ERSkgKHggPj4gMTApOwotICAgICAgICAgICAgKnArKyA9IDB4REMwMCArIChQeV9VTklDT0RFKSAoeCAmIDB4MDNGRik7Ci0jZW5kaWYKKyAgICAgICAgaWYgKHggPD0gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIHgpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgbmV4dEJ5dGU6CiAgICAgICAgIDsKICAgICB9Ci0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDI3NCwxNDQgKzYwMDcsMTM5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwogICAgIGNoYXIgKnE7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplLCBwb3M7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGNvbnN0IFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDEwOwotI2Vsc2UKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSA2OwotI2VuZGlmCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKKyAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCisgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKIAotICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCi0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOworICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBsZW4pOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gcmVwcjsKIAogICAgIHAgPSBxID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcysrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSNlbHNlCi0gICAgICAgICAgICAvKiBNYXAgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPCAweERDMDApIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoMjsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IHVjczsKLQotICAgICAgICAgICAgICAgIGNoMiA9ICpzKys7Ci0gICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgIGlmIChjaDIgPj0gMHhEQzAwICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgdWNzID0gKCgoY2ggJiAweDAzRkYpIDw8IDEwKSB8IChjaDIgJiAweDAzRkYpKSArIDB4MDAwMTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbdWNzICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaDogaXNvbGF0ZWQgc3Vycm9nYXRlcyBhcmUgY29waWVkIGFzLWlzICovCi0gICAgICAgICAgICAgICAgcy0tOwotICAgICAgICAgICAgICAgIHNpemUrKzsKLSAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDI1NikgeworICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYpIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KICAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBxOwogCi0gICAgYXNzZXJ0KHNpemUgPiAwKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCisgICAgYXNzZXJ0KHAgPiBxKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gcSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gcmVwcjsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpzOwotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOworICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHMgPSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpKTsKLQotICAgIHJldHVybiBzOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiAtLS0gVW5pY29kZSBJbnRlcm5hbCBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVJbnRlcm5hbChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIFB5X1VOSUNPREUgdW5pbWF4ID0gUHlVbmljb2RlX0dldE1heCgpOwotI2VuZGlmCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldygoc2l6ZStQeV9VTklDT0RFX1NJWkUtMSkvIFB5X1VOSUNPREVfU0laRSk7CisgICAgdiA9IFB5VW5pY29kZV9OZXcoKHNpemUrUHlfVU5JQ09ERV9TSVpFLTEpLyBQeV9VTklDT0RFX1NJWkUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChQeVVuaWNvZGVfR2V0U2l6ZSgoUHlPYmplY3QgKil2KSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpID09IDApCisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAKICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICBtZW1jcHkocCwgcywgc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAgUHlfVU5JQ09ERSB1Y2g7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIC8qIFdlIGNvcHkgdGhlIHJhdyByZXByZXNlbnRhdGlvbiBvbmUgYnl0ZSBhdCBhIHRpbWUgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgcG9pbnRlciBtYXkgYmUgdW5hbGlnbmVkIChzZWUgdGVzdF9jb2RlY2NhbGxiYWNrcykuICovCisgICAgICAgICgoY2hhciAqKSAmdWNoKVswXSA9IHNbMF07CisgICAgICAgICgoY2hhciAqKSAmdWNoKVsxXSA9IHNbMV07CisjaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICAgICAgICgoY2hhciAqKSAmdWNoKVsyXSA9IHNbMl07CisgICAgICAgICgoY2hhciAqKSAmdWNoKVszXSA9IHNbM107CisjZW5kaWYKKyAgICAgICAgY2ggPSB1Y2g7CisKICAgICAgICAgLyogV2UgaGF2ZSB0byBzYW5pdHkgY2hlY2sgdGhlIHJhdyBkYXRhLCBvdGhlcndpc2UgZG9vbSBsb29tcyBmb3IKICAgICAgICAgICAgc29tZSBtYWxmb3JtZWQgVUNTLTQgZGF0YS4gKi8KICAgICAgICAgaWYgKAogI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnAgPiB1bmltYXggfHwgKnAgPCAwIHx8CisgICAgICAgICAgICBjaCA+IDB4MTBmZmZmIHx8CiAjZW5kaWYKICAgICAgICAgICAgIGVuZC1zIDwgUHlfVU5JQ09ERV9TSVpFCiAgICAgICAgICAgICApCkBAIC00NDI1LDI2ICs2MTUzLDM5IEBACiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzIC0gc3RhcnRzICsgUHlfVU5JQ09ERV9TSVpFOwogICAgICAgICAgICAgICAgIHJlYXNvbiA9ICJpbGxlZ2FsIGNvZGUgcG9pbnQgKD4gMHgxMEZGRkYpIjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIsIHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcyArPSBQeV9VTklDT0RFX1NJWkU7CisjaWZuZGVmIFB5X1VOSUNPREVfV0lERQorICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgJiYgcyA8IGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVU5JQ09ERSB1Y2gyOworICAgICAgICAgICAgKChjaGFyICopICZ1Y2gyKVswXSA9IHNbMF07CisgICAgICAgICAgICAoKGNoYXIgKikgJnVjaDIpWzFdID0gc1sxXTsKKyAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUodWNoMikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2ggPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyh1Y2gsIHVjaDIpOworICAgICAgICAgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcCsrOwotICAgICAgICAgICAgcyArPSBQeV9VTklDT0RFX1NJWkU7Ci0gICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNDQ1NSw1NyArNjE5NiwyNyBAQAogCiAvKiAtLS0gTGF0aW4tMSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVMYXRpbjEoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgY29uc3QgY2hhciAqZSwgKnVucm9sbGVkX2VuZDsKLQogICAgIC8qIExhdGluLTEgaXMgZXF1aXZhbGVudCB0byB0aGUgZmlyc3QgMjU2IG9yZGluYWxzIGluIFVuaWNvZGUuICovCi0gICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICBQeV9VTklDT0RFIHIgPSAqKHVuc2lnbmVkIGNoYXIqKXM7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnIsIDEpOwotICAgIH0KLQotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgIGUgPSBzICsgc2l6ZTsKLSAgICAvKiBVbnJvbGxpbmcgdGhlIGNvcHkgbWFrZXMgaXQgbXVjaCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIGxvb3BpbmcKLSAgICAgICBvdmVyaGVhZC4gVGhpcyBpcyBzaW1pbGFyIHRvIHdoYXQgbWFueSBtZW1jcHkoKSBpbXBsZW1lbnRhdGlvbnMgZG8uICovCi0gICAgdW5yb2xsZWRfZW5kID0gZSAtIDQ7Ci0gICAgd2hpbGUgKHMgPCB1bnJvbGxlZF9lbmQpIHsKLSAgICAgICAgcFswXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzBdOwotICAgICAgICBwWzFdID0gKHVuc2lnbmVkIGNoYXIpIHNbMV07Ci0gICAgICAgIHBbMl0gPSAodW5zaWduZWQgY2hhcikgc1syXTsKLSAgICAgICAgcFszXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzNdOwotICAgICAgICBzICs9IDQ7Ci0gICAgICAgIHAgKz0gNDsKLSAgICB9Ci0gICAgd2hpbGUgKHMgPCBlKQotICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpICpzKys7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MxKCh1bnNpZ25lZCBjaGFyKilzLCBzaXplKTsKIH0KIAogLyogY3JlYXRlIG9yIGFkanVzdCBhIFVuaWNvZGVFbmNvZGVFcnJvciAqLwotc3RhdGljIHZvaWQgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorbWFrZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKSB7Ci0gICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9DcmVhdGUoCi0gICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciwgInNPbm5zIiwKKyAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTQ1MjIsMTQgKzYyMzMsMTUgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZUVuY29kZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK3JhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAgICBtYWtlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CkBAIC00NTM4LDE1ICs2MjUwLDE2IEBACiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgcHV0IHRoZSByZXN1bHQgaW50byBuZXdwb3MgYW5kIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aGljaAogICAgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgKi8KLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKLQorICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqcmVzdW5pY29kZTsKIApAQCAtNDU1Niw4ICs2MjY5LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKwogICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzaXplLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNDU4MSw4ICs2Mjk4LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgqbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplKypuZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICAgICAgKm5ld3BvcyA9IGxlbiArICpuZXdwb3M7CisgICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW5kZXhFcnJvciwgInBvc2l0aW9uICV6ZCBmcm9tIGVycm9yIGhhbmRsZXIgb3V0IG9mIGJvdW5kcyIsICpuZXdwb3MpOwogICAgICAgICBQeV9ERUNSRUYocmVzdHVwbGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ1OTIsMTggKzYzMDksMTcgQEAKICAgICByZXR1cm4gcmVzdW5pY29kZTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX2VuY29kZV91Y3MxKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCiB7CisgICAgLyogaW5wdXQgc3RhdGUgKi8KKyAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgLyogb3V0cHV0IG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KLSAgICAvKiBjb25zdCBQeV9VTklDT0RFICpiYWRwID0gTlVMTDsgKi8KICAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwogICAgIGNoYXIgKnN0cjsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwpAQCAtNDYxNiw2ICs2MzMyLDExIEBACiAgICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCkBAIC00NjI2LDI4ICs2MzQ3LDI0IEBACiAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKICAgICByZXNzaXplID0gc2l6ZTsKIAotICAgIHdoaWxlIChwPGVuZHApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gKnA7CisgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCiAgICAgICAgIGlmIChjPGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwogICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICsrcG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfc3NpemVfdCB1bmljb2RlcG9zID0gcC1zdGFydHA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlc3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxzdGFydCA9IHA7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsZW5kID0gcDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBlbmRwKSAmJiAoKCpjb2xsZW5kKT49bGltaXQpKQorICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgc2l6ZSkgJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpPj1saW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KICAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7CkBAIC00NjY0LDM5ICs2MzgxLDM3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewogICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAoY29sbHN0YXJ0Kys8Y29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICAgICAgcCA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQsIHJlcHNpemUgPSAwOyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgqcDwxMCkKKyAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydCwgcmVwc2l6ZSA9IDA7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMisxKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis0KzE7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzUrMTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis2KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzcrMTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhlbmRwLWNvbGxlbmQpOworICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipyZXNzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwpAQCAtNDcwNSwxNyArNjQyMCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwogICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0OyBwIDwgY29sbGVuZDsgKytwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgKGludCkqcCk7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KQEAgLTQ3MzIsNyArNjQ0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgUHlCeXRlc19Bc1N0cmluZyhyZXB1bmljb2RlKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHN0ciArPSByZXBzaXplOwotICAgICAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDc0MCw4ICs2NDU2LDggQEAKICAgICAgICAgICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBzbwogICAgICAgICAgICAgICAgICAgIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UgZm9yIGVuY29kYWJsZSBjaGFyYWN0ZXJzKSAqLwogICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoZW5kcC1jb2xsZW5kKTsKKyAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKnJlc3NpemUpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7CkBAIC00NzU0LDE3ICs2NDcwLDE3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTtyZXBzaXplLS0+MDsgKyt1bmkyLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gKnVuaTI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBzdGFydHAsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVwb3MsIHVuaWNvZGVwb3MrMSwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDc4OCwzMyArNjUwNCw1NyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUxhdGluMShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDI1Nik7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIEZhc3QgcGF0aDogaWYgaXQgaXMgYSBvbmUtYnl0ZSBzdHJpbmcsIGNvbnN0cnVjdAorICAgICAgIGJ5dGVzIG9iamVjdCBkaXJlY3RseS4gKi8KKyAgICBpZiAoUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgLyogTm9uLUxhdGluLTEgY2hhcmFjdGVycyBwcmVzZW50LiBEZWZlciB0byBhYm92ZSBmdW5jdGlvbiB0bworICAgICAgIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOworfQorCitQeU9iamVjdCoKK1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIDctYml0IEFTQ0lJIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQVNDSUkoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKQEAgLTQ4MjIsNzAgKzY1NjIsOTkgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLwotICAgIGlmIChzaXplID09IDEgJiYgKih1bnNpZ25lZCBjaGFyKilzIDwgMTI4KSB7Ci0gICAgICAgIFB5X1VOSUNPREUgciA9ICoodW5zaWduZWQgY2hhciopczsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmciwgMSk7CisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OwogICAgIH0KIAotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIC8qIEFTQ0lJIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDEyOCBvcmRpbmFscyBpbiBVbmljb2RlLiAqLworICAgIGlmIChzaXplID09IDEgJiYgKHVuc2lnbmVkIGNoYXIpc1swXSA8IDEyOCkKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcilzWzBdKTsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKwogICAgIGUgPSBzICsgc2l6ZTsKKyAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSk7CisgICAgb3V0cG9zID0gYXNjaWlfZGVjb2RlKHMsIGUsIChQeV9VQ1MxICopZGF0YSk7CisgICAgaWYgKG91dHBvcyA9PSBzaXplKQorICAgICAgICByZXR1cm4gdW5pY29kZTsKKworICAgIHMgKz0gb3V0cG9zOworICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKICAgICB3aGlsZSAocyA8IGUpIHsKICAgICAgICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpKnM7CiAgICAgICAgIGlmIChjIDwgMTI4KSB7Ci0gICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvdXRwb3MrKywgYyk7CiAgICAgICAgICAgICArK3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgb3V0cG9zID0gcCAtIChQeV9VTklDT0RFICopUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiwgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSA8IFB5VW5pY29kZV9HRVRfU0laRSh2KSkKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYodik7CisgICAgUHlfWERFQ1JFRih1bmljb2RlKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUFTQ0lJKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMShwLCBzaXplLCBlcnJvcnMsIDEyOCk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBGYXN0IHBhdGg6IGlmIGl0IGlzIGFuIEFTQ0lJLW9ubHkgc3RyaW5nLCBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0CisgICAgICAgZGlyZWN0bHkuIEVsc2UgZGVmZXIgdG8gYWJvdmUgZnVuY3Rpb24gdG8gcmFpc2UgdGhlIGV4Y2VwdGlvbi4gKi8KKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpIDwgMTI4KQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMTI4KTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBOVUxMKTsKK30KKworI2lmZGVmIEhBVkVfTUJDUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNDg5MywzMzYgKzY2NjIsODQyIEBACiAjZGVmaW5lIE5FRURfUkVUUlkKICNlbmRpZgogCi0vKiBYWFggVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywgYXMKLSAgIGEpIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUgYnl0ZSwgYW5kCi0gICBiKSBJc0RCQ1NMZWFkQnl0ZSAocHJvYmFibHkpIGRvZXMgbm90IHdvcmsgZm9yIG5vbi1EQkNTIG11bHRpLWJ5dGUKLSAgIGVuY29kaW5ncywgc2VlIElzREJDU0xlYWRCeXRlRXggZG9jdW1lbnRhdGlvbi4gKi8KKyNpZm5kZWYgV0NfRVJSX0lOVkFMSURfQ0hBUlMKKyMgIGRlZmluZSBXQ19FUlJfSU5WQUxJRF9DSEFSUyAweDAwODAKKyNlbmRpZgogCi1zdGF0aWMgaW50IGlzX2RiY3NfbGVhZF9ieXRlKGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCitzdGF0aWMgY2hhcioKK2NvZGVfcGFnZV9uYW1lKFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm9iaikKK3sKKyAgICAqb2JqID0gTlVMTDsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX0FDUCkKKyAgICAgICAgcmV0dXJuICJtYmNzIjsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjcpCisgICAgICAgIHJldHVybiAiQ1BfVVRGNyI7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KQorICAgICAgICByZXR1cm4gIkNQX1VURjgiOworCisgICAgKm9iaiA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiY3AldSIsIGNvZGVfcGFnZSk7CisgICAgaWYgKCpvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvYmopOworfQorCitzdGF0aWMgaW50Citpc19kYmNzX2xlYWRfYnl0ZShVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqcywgaW50IG9mZnNldCkKIHsKICAgICBjb25zdCBjaGFyICpjdXJyID0gcyArIG9mZnNldDsKKyAgICBjb25zdCBjaGFyICpwcmV2OwogCi0gICAgaWYgKElzREJDU0xlYWRCeXRlKCpjdXJyKSkgewotICAgICAgICBjb25zdCBjaGFyICpwcmV2ID0gQ2hhclByZXYocywgY3Vycik7Ci0gICAgICAgIHJldHVybiAocHJldiA9PSBjdXJyKSB8fCAhSXNEQkNTTGVhZEJ5dGUoKnByZXYpIHx8IChjdXJyIC0gcHJldiA9PSAyKTsKLSAgICB9CisgICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKmN1cnIpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHByZXYgPSBDaGFyUHJldkV4QShjb2RlX3BhZ2UsIHMsIGN1cnIsIDApOworICAgIGlmIChwcmV2ID09IGN1cnIpCisgICAgICAgIHJldHVybiAxOworICAgIC8qIEZJWE1FOiBUaGlzIGNvZGUgaXMgbGltaXRlZCB0byAidHJ1ZSIgZG91YmxlLWJ5dGUgZW5jb2RpbmdzLAorICAgICAgIGFzIGl0IGFzc3VtZXMgYW4gaW5jb21wbGV0ZSBjaGFyYWN0ZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUKKyAgICAgICBieXRlLiAqLworICAgIGlmIChjdXJyIC0gcHJldiA9PSAyKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoIUlzREJDU0xlYWRCeXRlRXgoY29kZV9wYWdlLCAqcHJldikpCisgICAgICAgIHJldHVybiAxOwogICAgIHJldHVybiAwOwogfQogCi0vKgotICogRGVjb2RlIE1CQ1Mgc3RyaW5nIGludG8gdW5pY29kZSBvYmplY3QuIElmICdmaW5hbCcgaXMgc2V0LCBjb252ZXJ0cwotICogdHJhaWxpbmcgbGVhZC1ieXRlIHRvby4gUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIC0xIG90aGVyd2lzZS4KLSAqLwotc3RhdGljIGludCBkZWNvZGVfbWJjcyhQeVVuaWNvZGVPYmplY3QgKip2LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzLCAvKiBNQkNTIHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgLyogc2l6ZW9mIE1CQ1Mgc3RyaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorc3RhdGljIERXT1JECitkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlKQogewotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfc3NpemVfdCBuOwotICAgIERXT1JEIHVzaXplOwotICAgIERXT1JEIGZsYWdzOwotCi0gICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0KLSAgICAvKiBjaGVjayBhbmQgaGFuZGxlICdlcnJvcnMnIGFyZyAqLwotICAgIGlmIChlcnJvcnM9PU5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpPT0wKQotICAgICAgICBmbGFncyA9IE1CX0VSUl9JTlZBTElEX0NIQVJTOwotICAgIGVsc2UgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKT09MCkKLSAgICAgICAgZmxhZ3MgPSAwOwotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJtYmNzIGVuY29kaW5nIGRvZXMgbm90IHN1cHBvcnQgZXJyb3JzPSclcyciLAotICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgeworICAgICAgICAvKiBUaGUgQ1BfVVRGNyBkZWNvZGVyIG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLworICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gTUJfRVJSX0lOVkFMSURfQ0hBUlM7Cit9CiAKLSAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KLSAgICBpZiAoIWZpbmFsICYmIHNpemUgPj0gMSAmJiBpc19kYmNzX2xlYWRfYnl0ZShzLCBzaXplIC0gMSkpCi0gICAgICAgIC0tc2l6ZTsKKy8qCisgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCBpbiBzdHJpY3QKKyAqIG1vZGUuCisgKgorICogUmV0dXJucyBjb25zdW1lZCBzaXplIGlmIHN1Y2NlZWQsIHJldHVybnMgLTIgb24gZGVjb2RlIGVycm9yLCBvciByYWlzZSBhCisgKiBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMgLTEgb24gb3RoZXIgZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK2RlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KFVJTlQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zaXplKQoreworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UpOworICAgIHdjaGFyX3QgKm91dDsKKyAgICBEV09SRCBvdXRzaXplOwogCiAgICAgLyogRmlyc3QgZ2V0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgKi8KLSAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgdXNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgZmxhZ3MsIHMsIHNpemUsIE5VTEwsIDApOwotICAgICAgICBpZiAodXNpemU9PTApCi0gICAgICAgICAgICBnb3RvIG1iY3NfZGVjb2RlX2Vycm9yOwotICAgIH0gZWxzZQotICAgICAgICB1c2l6ZSA9IDA7CisgICAgYXNzZXJ0KGluc2l6ZSA+IDApOworICAgIG91dHNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVfcGFnZSwgZmxhZ3MsIGluLCBpbnNpemUsIE5VTEwsIDApOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoKnYgPT0gTlVMTCkgewogICAgICAgICAvKiBDcmVhdGUgdW5pY29kZSBvYmplY3QgKi8KLSAgICAgICAgKnYgPSBfUHlVbmljb2RlX05ldyh1c2l6ZSk7CisgICAgICAgIC8qIEZJWE1FOiBkb24ndCB1c2UgX1B5VW5pY29kZV9OZXcoKSwgYnV0IGFsbG9jYXRlIGEgd2NoYXJfdCogYnVmZmVyICovCisgICAgICAgICp2ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhvdXRzaXplKTsKICAgICAgICAgaWYgKCp2ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG4gPSAwOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBFeHRlbmQgdW5pY29kZSBvYmplY3QgKi8KLSAgICAgICAgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7Ci0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSh2LCBuICsgdXNpemUpIDwgMCkKKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlVbmljb2RlX0dFVF9TSVpFKCp2KTsKKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG4gKyBvdXRzaXplKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KSArIG47CiAgICAgfQogCiAgICAgLyogRG8gdGhlIGNvbnZlcnNpb24gKi8KLSAgICBpZiAodXNpemUgPiAwKSB7Ci0gICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBuOwotICAgICAgICBpZiAoMCA9PSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgZmxhZ3MsIHMsIHNpemUsIHAsIHVzaXplKSkgewotICAgICAgICAgICAgZ290byBtYmNzX2RlY29kZV9lcnJvcjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc2l6ZTsKKyAgICBvdXRzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlX3BhZ2UsIGZsYWdzLCBpbiwgaW5zaXplLCBvdXQsIG91dHNpemUpOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIGluc2l6ZTsKIAotbWJjc19kZWNvZGVfZXJyb3I6Ci0gICAgLyogSWYgdGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4KLSAgICAgICB3ZSByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvciAtIGVsc2UgaXQgaXMgYSAnZ2VuZXJpYycKLSAgICAgICB3aW5kb3dzIGVycm9yCi0gICAgICovCi0gICAgaWYgKEdldExhc3RFcnJvcigpPT1FUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKSB7Ci0gICAgICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZSAtIHRoaXMKLSAgICAgICAgICAgaXMgdGhlIFdpbmRvd3MgMjAwMCBFbmdsaXNoIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UKLSAgICAgICAgKi8KLSAgICAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJObyBtYXBwaW5nIGZvciB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZXhpc3RzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHRoZSB0YXJnZXQgbXVsdGktYnl0ZSBjb2RlIHBhZ2UuIjsKLSAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsICJtYmNzIiwgcywgc2l6ZSwgMCwgMCwgcmVhc29uKTsKLSAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgwLCBOVUxMKTsKLSAgICB9CitlcnJvcjoKKyAgICBpZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTikKKyAgICAgICAgcmV0dXJuIC0yOworICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgIHJldHVybiAtMTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLyoKKyAqIERlY29kZSBhIGJ5dGUgc3RyaW5nIGZyb20gYSBjb2RlIHBhZ2UgaW50byB1bmljb2RlIG9iamVjdCB3aXRoIGFuIGVycm9yCisgKiBoYW5kbGVyLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCBvciByYWlzZSBhIFdpbmRvd3NFcnJvciBvcgorICogVW5pY29kZURlY29kZUVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJucyAtMSBvbiBlcnJvci4KKyAqLworc3RhdGljIGludAorZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnYsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbiwgY29uc3QgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2ID0gTlVMTDsKLSAgICBpbnQgZG9uZTsKKyAgICBjb25zdCBjaGFyICpzdGFydGluID0gaW47CisgICAgY29uc3QgY2hhciAqZW5kaW4gPSBpbiArIHNpemU7CisgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSk7CisgICAgLyogSWRlYWxseSwgd2Ugc2hvdWxkIGdldCByZWFzb24gZnJvbSBGb3JtYXRNZXNzYWdlLiBUaGlzIGlzIHRoZSBXaW5kb3dzCisgICAgICAgMjAwMCBFbmdsaXNoIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UuICovCisgICAgY29uc3QgY2hhciAqcmVhc29uID0gIk5vIG1hcHBpbmcgZm9yIHRoZSBVbmljb2RlIGNoYXJhY3RlciBleGlzdHMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGFyZ2V0IGNvZGUgcGFnZS4iOworICAgIC8qIGVhY2ggc3RlcCBjYW5ub3QgZGVjb2RlIG1vcmUgdGhhbiAxIGNoYXJhY3RlciwgYnV0IGEgY2hhcmFjdGVyIGNhbiBiZQorICAgICAgIHJlcHJlc2VudGVkIGFzIGEgc3Vycm9nYXRlIHBhaXIgKi8KKyAgICB3Y2hhcl90IGJ1ZmZlclsyXSwgKnN0YXJ0b3V0LCAqb3V0OworICAgIGludCBpbnNpemUsIG91dHNpemU7CisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CisgICAgY2hhciAqZW5jb2Rpbmc7CisgICAgRFdPUkQgZXJyOworICAgIGludCByZXQgPSAtMTsKKworICAgIGFzc2VydChzaXplID4gMCk7CisKKyAgICBlbmNvZGluZyA9IGNvZGVfcGFnZV9uYW1lKGNvZGVfcGFnZSwgJmVuY29kaW5nX29iaik7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwgdGhlbiB3ZSByYWlzZSBhCisgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvci4gKi8KKyAgICAgICAgbWFrZV9kZWNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCBpbiwgc2l6ZSwgMCwgMCwgcmVhc29uKTsKKyAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICAgICAgUHlfQ0xFQVIoZXhjKTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqdiA9PSBOVUxMKSB7CisgICAgICAgIC8qIENyZWF0ZSB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIC8qIEZJWE1FOiBkb24ndCB1c2UgX1B5VW5pY29kZV9OZXcoKSwgYnV0IGFsbG9jYXRlIGEgd2NoYXJfdCogYnVmZmVyICovCisgICAgICAgICp2ID0gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhzaXplICogUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpOworICAgICAgICBpZiAoKnYgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0YXJ0b3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7CisgICAgICAgIGlmIChzaXplID4gKFBZX1NTSVpFX1RfTUFYIC0gbikgLyAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKHYsIG4gKyBzaXplICogUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHN0YXJ0b3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgbjsKKyAgICB9CisKKyAgICAvKiBEZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGNoYXJhY3RlciBwZXIgY2hhcmFjdGVyICovCisgICAgb3V0ID0gc3RhcnRvdXQ7CisgICAgd2hpbGUgKGluIDwgZW5kaW4pCisgICAgeworICAgICAgICAvKiBEZWNvZGUgYSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgaW5zaXplID0gMTsKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgb3V0c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZV9wYWdlLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLCBpbnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKTsKKyAgICAgICAgICAgIGlmIChvdXRzaXplID4gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OCisgICAgICAgICAgICAgICAgJiYgZXJyICE9IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluc2l6ZSsrOworICAgICAgICB9CisgICAgICAgIC8qIDQ9bWF4aW11bSBsZW5ndGggb2YgYSBVVEYtOCBzZXF1ZW5jZSAqLworICAgICAgICB3aGlsZSAoaW5zaXplIDw9IDQgJiYgKGluICsgaW5zaXplKSA8PSBlbmRpbik7CisKKyAgICAgICAgaWYgKG91dHNpemUgPD0gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zLCBlbmRpbnBvcywgb3V0cG9zOworCisgICAgICAgICAgICBzdGFydGlucG9zID0gaW4gLSBzdGFydGluOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIG91dHBvcyA9IG91dCAtIFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRpbiwgJmVuZGluLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmaW4sCisgICAgICAgICAgICAgICAgICAgIHYsICZvdXRwb3MpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBvdXRwb3M7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbiArPSBpbnNpemU7CisgICAgICAgICAgICBtZW1jcHkob3V0LCBidWZmZXIsIG91dHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgb3V0ICs9IG91dHNpemU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB3cml0ZSBhIE5VTCBjaGFyYWN0ZXIgYXQgdGhlIGVuZCAqLworICAgICpvdXQgPSAwOworCisgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCisgICAgb3V0c2l6ZSA9IG91dCAtIHN0YXJ0b3V0OworICAgIGFzc2VydChvdXRzaXplIDw9IFB5VW5pY29kZV9XU1RSX0xFTkdUSCgqdikpOworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBvdXRzaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0ID0gc2l6ZTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29kZV9jb2RlX3BhZ2Vfc3RhdGVmdWwoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICBpbnQgY2h1bmtfc2l6ZSwgZmluYWwsIGNvbnZlcnRlZCwgZG9uZTsKKworICAgIGlmIChjb2RlX3BhZ2UgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBjb2RlIHBhZ2UgbnVtYmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gMDsKIAorICAgIGRvCisgICAgewogI2lmZGVmIE5FRURfUkVUUlkKLSAgcmV0cnk6Ci0gICAgaWYgKHNpemUgPiBJTlRfTUFYKQotICAgICAgICBkb25lID0gZGVjb2RlX21iY3MoJnYsIHMsIElOVF9NQVgsIDAsIGVycm9ycyk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSBJTlRfTUFYOworICAgICAgICAgICAgZmluYWwgPSAwOworICAgICAgICAgICAgZG9uZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGRvbmUgPSBkZWNvZGVfbWJjcygmdiwgcywgKGludClzaXplLCAhY29uc3VtZWQsIGVycm9ycyk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGNodW5rX3NpemUgPSAoaW50KXNpemU7CisgICAgICAgICAgICBmaW5hbCA9IChjb25zdW1lZCA9PSBOVUxMKTsKKyAgICAgICAgICAgIGRvbmUgPSAxOworICAgICAgICB9CiAKLSAgICBpZiAoZG9uZSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgICAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KKyAgICAgICAgaWYgKCFmaW5hbCAmJiBpc19kYmNzX2xlYWRfYnl0ZShjb2RlX3BhZ2UsIHMsIGNodW5rX3NpemUgLSAxKSkKKyAgICAgICAgICAgIC0tY2h1bmtfc2l6ZTsKIAotICAgIGlmIChjb25zdW1lZCkKLSAgICAgICAgKmNvbnN1bWVkICs9IGRvbmU7CisgICAgICAgIGlmIChjaHVua19zaXplID09IDAgJiYgZG9uZSkgeworICAgICAgICAgICAgaWYgKHYgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICB9CiAKLSNpZmRlZiBORUVEX1JFVFJZCi0gICAgaWYgKHNpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgIHMgKz0gZG9uZTsKLSAgICAgICAgc2l6ZSAtPSBkb25lOwotICAgICAgICBnb3RvIHJldHJ5OwotICAgIH0KLSNlbmRpZgogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUpOworICAgICAgICBpZiAoY29udmVydGVkID09IC0yKQorICAgICAgICAgICAgY29udmVydGVkID0gZGVjb2RlX2NvZGVfcGFnZV9lcnJvcnMoY29kZV9wYWdlLCAmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGNodW5rX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICBhc3NlcnQoY29udmVydGVkICE9IDApOworCisgICAgICAgIGlmIChjb252ZXJ0ZWQgPCAwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKHYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29uc3VtZWQpCisgICAgICAgICAgICAqY29uc3VtZWQgKz0gY29udmVydGVkOworCisgICAgICAgIHMgKz0gY29udmVydGVkOworICAgICAgICBzaXplIC09IGNvbnZlcnRlZDsKKyAgICB9IHdoaWxlICghZG9uZSk7CisKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTUJDUyhjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIHJldHVybiBkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKGNvZGVfcGFnZSwgcywgc2l6ZSwgZXJyb3JzLCBjb25zdW1lZCk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQoreworICAgIHJldHVybiBkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKENQX0FDUCwgcywgc2l6ZSwgZXJyb3JzLCBjb25zdW1lZCk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVNQkNTKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KIAorc3RhdGljIERXT1JECitlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KSB7CisgICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikKKyAgICAgICAgICAgIC8qIENQX1VURjggc3VwcG9ydHMgV0NfRVJSX0lOVkFMSURfQ0hBUlMgb24gV2luZG93cyBWaXN0YQorICAgICAgICAgICAgICAgYW5kIGxhdGVyICovCisgICAgICAgICAgICByZXR1cm4gV0NfRVJSX0lOVkFMSURfQ0hBUlM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8qIENQX1VURjggb25seSBzdXBwb3J0cyBmbGFncz0wIG9uIFdpbmRvd3Mgb2xkZXIgdGhhbiBWaXN0YSAqLworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KSB7CisgICAgICAgIC8qIENQX1VURjcgb25seSBzdXBwb3J0cyBmbGFncz0wICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGVycm9ycyAhPSBOVUxMICYmIHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gV0NfTk9fQkVTVF9GSVRfQ0hBUlM7CisgICAgfQorfQorCiAvKgotICogQ29udmVydCB1bmljb2RlIGludG8gc3RyaW5nIG9iamVjdCAoTUJDUykuCi0gKiBSZXR1cm5zIDAgaWYgc3VjY2VlZCwgLTEgb3RoZXJ3aXNlLgorICogRW5jb2RlIGEgVW5pY29kZSBzdHJpbmcgdG8gYSBXaW5kb3dzIGNvZGUgcGFnZSBpbnRvIGEgYnl0ZSBzdHJpbmcgaW4gc3RyaWN0CisgKiBtb2RlLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgY2hhcmFjdGVycyBpZiBzdWNjZWVkLCByZXR1cm5zIC0yIG9uIGVuY29kZSBlcnJvciwgb3IgcmFpc2UKKyAqIGEgV2luZG93c0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgogICovCi1zdGF0aWMgaW50IGVuY29kZV9tYmNzKFB5T2JqZWN0ICoqcmVwciwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqcCwgLyogdW5pY29kZSAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2l6ZSwgLyogc2l6ZSBvZiB1bmljb2RlICovCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9ycykKK3N0YXRpYyBpbnQKK2VuY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgb2Zmc2V0LCBpbnQgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JzKQogewogICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0U7Ci0gICAgQk9PTCAqcHVzZWREZWZhdWx0Q2hhcjsKLSAgICBpbnQgbWJjc3NpemU7Ci0gICAgUHlfc3NpemVfdCBuOworICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOworICAgIGludCBvdXRzaXplOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIERXT1JEIGZsYWdzOworICAgIHdjaGFyX3QgKnA7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UsIE5VTEwpOworICAgIGNoYXIgKm91dDsKKyAgICAvKiBDcmVhdGUgYSBzdWJzdHJpbmcgc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBVVEYtMTYgcmVwcmVzZW50YXRpb24KKyAgICAgICBvZiBqdXN0IHRoZSBzbGljZSB1bmRlciBjb25zaWRlcmF0aW9uLiAqLworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICBhc3NlcnQobGVuID4gMCk7CiAKLSAgICAvKiBjaGVjayBhbmQgaGFuZGxlICdlcnJvcnMnIGFyZyAqLwotICAgIGlmIChlcnJvcnM9PU5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpPT0wKSB7Ci0gICAgICAgIGZsYWdzID0gV0NfTk9fQkVTVF9GSVRfQ0hBUlM7CisgICAgaWYgKGNvZGVfcGFnZSAhPSBDUF9VVEY4ICYmIGNvZGVfcGFnZSAhPSBDUF9VVEY3KQogICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIik9PTApIHsKLSAgICAgICAgZmxhZ3MgPSAwOworICAgIGVsc2UKICAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9IE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJtYmNzIGVuY29kaW5nIGRvZXMgbm90IHN1cHBvcnQgZXJyb3JzPSclcyciLAotICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgICByZXR1cm4gLTE7CisKKyAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHVuaWNvZGUsIG9mZnNldCwgb2Zmc2V0K2xlbik7CisgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHN1YnN0cmluZywgJnNpemUpOworICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBGaXJzdCBnZXQgdGhlIHNpemUgb2YgdGhlIHJlc3VsdCAqLwotICAgIGlmIChzaXplID4gMCkgewotICAgICAgICBtYmNzc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfQUNQLCBmbGFncywgcCwgc2l6ZSwgTlVMTCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOwotICAgICAgICBpZiAobWJjc3NpemUgPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyogSWYgd2UgdXNlZCBhIGRlZmF1bHQgY2hhciwgdGhlbiB3ZSBmYWlsZWQhICovCi0gICAgICAgIGlmIChwdXNlZERlZmF1bHRDaGFyICYmICpwdXNlZERlZmF1bHRDaGFyKQotICAgICAgICAgICAgZ290byBtYmNzX2VuY29kZV9lcnJvcjsKLSAgICB9IGVsc2UgewotICAgICAgICBtYmNzc2l6ZSA9IDA7CisgICAgb3V0c2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoY29kZV9wYWdlLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgaWYgKG91dHNpemUgPD0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAvKiBJZiB3ZSB1c2VkIGEgZGVmYXVsdCBjaGFyLCB0aGVuIHdlIGZhaWxlZCEgKi8KKyAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIAotICAgIGlmICgqcmVwciA9PSBOVUxMKSB7CisgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CiAgICAgICAgIC8qIENyZWF0ZSBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgICpyZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBtYmNzc2l6ZSk7Ci0gICAgICAgIGlmICgqcmVwciA9PSBOVUxMKQorICAgICAgICAqb3V0Ynl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHNpemUpOworICAgICAgICBpZiAoKm91dGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBuID0gMDsKKyAgICAgICAgfQorICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogRXh0ZW5kIHN0cmluZyBvYmplY3QgKi8KLSAgICAgICAgbiA9IFB5Qnl0ZXNfU2l6ZSgqcmVwcik7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUocmVwciwgbiArIG1iY3NzaXplKSA8IDApCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbiA9IFB5Qnl0ZXNfU2l6ZSgqb3V0Ynl0ZXMpOworICAgICAgICBpZiAob3V0c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG4gKyBvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBuOwogICAgIH0KIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCi0gICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgIGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORygqcmVwcikgKyBuOwotICAgICAgICBpZiAoMCA9PSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgZmxhZ3MsIHAsIHNpemUsIHMsIG1iY3NzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgwLCBOVUxMKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKLSAgICAgICAgICAgIGdvdG8gbWJjc19lbmNvZGVfZXJyb3I7Ci0gICAgfQorICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIG91dHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgUHlfQ0xFQVIoc3Vic3RyaW5nKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChwdXNlZERlZmF1bHRDaGFyICYmICpwdXNlZERlZmF1bHRDaGFyKQorICAgICAgICByZXR1cm4gLTI7CiAgICAgcmV0dXJuIDA7CiAKLW1iY3NfZW5jb2RlX2Vycm9yOgotICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgIm1iY3MiLCBwLCBzaXplLCAwLCAwLCAiaW52YWxpZCBjaGFyYWN0ZXIiKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7CitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pCisgICAgICAgIHJldHVybiAtMjsKKyAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKgorICogRW5jb2RlIGEgVW5pY29kZSBzdHJpbmcgdG8gYSBXaW5kb3dzIGNvZGUgcGFnZSBpbnRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcgYQorICogZXJyb3IgaGFuZGxlci4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIGNoYXJhY3RlcnMgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3IgYW5kIHJldHVybnMKKyAqIC0xIG9uIG90aGVyIGVycm9yLgorICovCitzdGF0aWMgaW50CitlbmNvZGVfY29kZV9wYWdlX2Vycm9ycyhVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHVuaWNvZGVfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbnNpemUsIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKLSAgICBQeU9iamVjdCAqcmVwciA9IE5VTEw7Ci0gICAgaW50IHJldDsKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBlcnJvcnMpOworICAgIFB5X3NzaXplX3QgcG9zID0gdW5pY29kZV9vZmZzZXQ7CisgICAgUHlfc3NpemVfdCBlbmRpbiA9IHVuaWNvZGVfb2Zmc2V0ICsgaW5zaXplOworICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZS4gVGhpcyBpcyB0aGUgV2luZG93cworICAgICAgIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLiAqLworICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJpbnZhbGlkIGNoYXJhY3RlciI7CisgICAgLyogND1tYXhpbXVtIGxlbmd0aCBvZiBhIFVURi04IHNlcXVlbmNlICovCisgICAgY2hhciBidWZmZXJbNF07CisgICAgQk9PTCB1c2VkRGVmYXVsdENoYXIgPSBGQUxTRSwgKnB1c2VkRGVmYXVsdENoYXI7CisgICAgUHlfc3NpemVfdCBvdXRzaXplOworICAgIGNoYXIgKm91dDsKKyAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKKyAgICBjaGFyICplbmNvZGluZzsKKyAgICBQeV9zc2l6ZV90IG5ld3BvcywgbmV3b3V0c2l6ZTsKKyAgICBQeU9iamVjdCAqcmVwOworICAgIGludCByZXQgPSAtMTsKIAotI2lmZGVmIE5FRURfUkVUUlkKLSAgcmV0cnk6Ci0gICAgaWYgKHNpemUgPiBJTlRfTUFYKQotICAgICAgICByZXQgPSBlbmNvZGVfbWJjcygmcmVwciwgcCwgSU5UX01BWCwgZXJyb3JzKTsKKyAgICBhc3NlcnQoaW5zaXplID4gMCk7CisKKyAgICBlbmNvZGluZyA9IGNvZGVfcGFnZV9uYW1lKGNvZGVfcGFnZSwgJmVuY29kaW5nX29iaik7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICAvKiBUaGUgbGFzdCBlcnJvciB3YXMgRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTiwKKyAgICAgICAgICAgdGhlbiB3ZSByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gKi8KKyAgICAgICAgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCAwLCAwLCByZWFzb24pOworICAgICAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKGV4Yyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGVuY29kaW5nX29iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoY29kZV9wYWdlICE9IENQX1VURjggJiYgY29kZV9wYWdlICE9IENQX1VURjcpCisgICAgICAgIHB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOwogICAgIGVsc2UKLSNlbmRpZgotICAgICAgICByZXQgPSBlbmNvZGVfbWJjcygmcmVwciwgcCwgKGludClzaXplLCBlcnJvcnMpOworICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gTlVMTDsKIAotICAgIGlmIChyZXQgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmVwcik7CisgICAgaWYgKFB5X0FSUkFZX0xFTkdUSChidWZmZXIpID4gUFlfU1NJWkVfVF9NQVggLyBpbnNpemUpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgb3V0c2l6ZSA9IGluc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpOworCisgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIC8qIENyZWF0ZSBzdHJpbmcgb2JqZWN0ICovCisgICAgICAgICpvdXRieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgb3V0c2l6ZSk7CisgICAgICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFeHRlbmQgc3RyaW5nIG9iamVjdCAqLworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeUJ5dGVzX1NpemUoKm91dGJ5dGVzKTsKKyAgICAgICAgaWYgKG4gPiBQWV9TU0laRV9UX01BWCAtIG91dHNpemUpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG4gKyBvdXRzaXplKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgbjsKKyAgICB9CisKKyAgICAvKiBFbmNvZGUgdGhlIHN0cmluZyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlciAqLworICAgIHdoaWxlIChwb3MgPCBlbmRpbikKKyAgICB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIHBvcyk7CisgICAgICAgIHdjaGFyX3QgY2hhcnNbMl07CisgICAgICAgIGludCBjaGFyc2l6ZTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDAwMCkgeworICAgICAgICAgICAgY2hhcnNbMF0gPSAod2NoYXJfdCljaDsKKyAgICAgICAgICAgIGNoYXJzaXplID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7CisgICAgICAgICAgICBjaGFyc1swXSA9IDB4ZDgwMCArIChjaCA+PiAxMCk7CisgICAgICAgICAgICBjaGFyc1sxXSA9IDB4ZGMwMCArIChjaCAmIDB4M2ZmKTsKKyAgICAgICAgICAgIGNoYXJzaXplID0gMjsKKyAgICAgICAgfQorCisgICAgICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzLCBjaGFyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcHVzZWREZWZhdWx0Q2hhcik7CisgICAgICAgIGlmIChvdXRzaXplID4gMCkgeworICAgICAgICAgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgPT0gTlVMTCB8fCAhKCpwdXNlZERlZmF1bHRDaGFyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICBtZW1jcHkob3V0LCBidWZmZXIsIG91dHNpemUpOworICAgICAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCBlbmNvZGluZywgcmVhc29uLAorICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4YywKKyAgICAgICAgICAgICAgICAgIHBvcywgcG9zICsgMSwgJm5ld3Bvcyk7CisgICAgICAgIGlmIChyZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHBvcyA9IG5ld3BvczsKKworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICBvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOworICAgICAgICAgICAgaWYgKG91dHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gb3V0IC0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKKyAgICAgICAgICAgICAgICBuZXdvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpICsgKG91dHNpemUgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuZXdvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1jcHkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCBvdXRzaXplKTsKKyAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgICAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisgICAgICAgICAgICBpZiAob3V0c2l6ZSAhPSAxKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQgPSBvdXQgLSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgICAgICAgICAgICAgIG5ld291dHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpvdXRieXRlcykgKyAob3V0c2l6ZSAtIDEpOworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUob3V0Ynl0ZXMsIG5ld291dHNpemUpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKSArIG9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXApOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcCk7CisgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IG91dHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPiAxMjcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcyArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGVuY29kZSBlcnJvciBoYW5kbGVyIHJlc3VsdCB0byBBU0NJSSIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKm91dCA9ICh1bnNpZ25lZCBjaGFyKWNoOworICAgICAgICAgICAgICAgIG91dCsrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgIH0KKyAgICAvKiB3cml0ZSBhIE5VTCBieXRlICovCisgICAgKm91dCA9IDA7CisgICAgb3V0c2l6ZSA9IG91dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgYXNzZXJ0KG91dHNpemUgPD0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBvdXRzaXplKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0ID0gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2VuY29kZV9jb2RlX3BhZ2UoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqb3V0Ynl0ZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIGludCBjaHVua19sZW4sIHJldCwgZG9uZTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCisgICAgaWYgKGNvZGVfcGFnZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGNvZGUgcGFnZSBudW1iZXIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0jaWZkZWYgTkVFRF9SRVRSWQotICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICBwICs9IElOVF9NQVg7Ci0gICAgICAgIHNpemUgLT0gSU5UX01BWDsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgcmV0dXJuIHJlcHI7CisgICAgb2Zmc2V0ID0gMDsKKyAgICBkbworICAgIHsKKyNpZmRlZiBORUVEX1JFVFJZCisgICAgICAgIC8qIFVURi0xNiBlbmNvZGluZyBtYXkgZG91YmxlIHRoZSBzaXplLCBzbyB1c2Ugb25seSBJTlRfTUFYLzIKKyAgICAgICAgICAgY2h1bmtzLiAqLworICAgICAgICBpZiAobGVuID4gSU5UX01BWC8yKSB7CisgICAgICAgICAgICBjaHVua19sZW4gPSBJTlRfTUFYLzI7CisgICAgICAgICAgICBkb25lID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgY2h1bmtfbGVuID0gKGludClsZW47CisgICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldCA9IGVuY29kZV9jb2RlX3BhZ2Vfc3RyaWN0KGNvZGVfcGFnZSwgJm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBvZmZzZXQsIGNodW5rX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgaWYgKHJldCA9PSAtMikKKyAgICAgICAgICAgIHJldCA9IGVuY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJm91dGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVuLCBlcnJvcnMpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihvdXRieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCArPSBjaHVua19sZW47CisgICAgICAgIGxlbiAtPSBjaHVua19sZW47CisgICAgfSB3aGlsZSAoIWRvbmUpOworCisgICAgcmV0dXJuIG91dGJ5dGVzOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVNQkNTKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpyZXM7CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBlbmNvZGVfY29kZV9wYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIHJldHVybiBlbmNvZGVfY29kZV9wYWdlKGNvZGVfcGFnZSwgdW5pY29kZSwgZXJyb3JzKTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0FzTUJDU1N0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVNQkNTKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKIH0KIAogI3VuZGVmIE5FRURfUkVUUlkKIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X3NzaXplX3QgZXh0cmFjaGFycyA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqbWFwc3RyaW5nID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IG1hcGxlbiA9IDA7CiAKICAgICAvKiBEZWZhdWx0IHRvIExhdGluLTEgKi8KICAgICBpZiAobWFwcGluZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOwogCi0gICAgdiA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgb3V0cG9zID0gMDsKICAgICBlID0gcyArIHNpemU7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG1hcHBpbmcpKSB7Ci0gICAgICAgIG1hcHN0cmluZyA9IFB5VW5pY29kZV9BU19VTklDT0RFKG1hcHBpbmcpOwotICAgICAgICBtYXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobWFwcGluZyk7CisgICAgICAgIFB5X3NzaXplX3QgbWFwbGVuOworICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG1hcGtpbmQ7CisgICAgICAgIHZvaWQgKm1hcGRhdGE7CisgICAgICAgIFB5X1VDUzQgeDsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG1hcHBpbmcpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgbWFwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobWFwcGluZyk7CisgICAgICAgIG1hcGRhdGEgPSBQeVVuaWNvZGVfREFUQShtYXBwaW5nKTsKKyAgICAgICAgbWFwa2luZCA9IFB5VW5pY29kZV9LSU5EKG1hcHBpbmcpOwogICAgICAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgeCA9IDB4ZmZmZTsgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaDsKKyAgICAgICAgICAgIGlmIChtYXBraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EICYmIG1hcGxlbiA+PSAyNTYpIHsKKyAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIG91dGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICAgICAgICAgICAgICBpZiAob3V0a2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgICAgICAgICB2b2lkICpvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEodik7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG1hcGRhdGEsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID4gbWF4Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV8xQllURV9LSU5ELCBvdXRkYXRhLCBvdXRwb3MrKywgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHYpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2ggPSAqczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChQeVVuaWNvZGVfMkJZVEVfS0lORCwgbWFwZGF0YSwgY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gMHhGRkZFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG91dGRhdGEsIG91dHBvcysrLCB4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaCA9ICpzOwogCiAgICAgICAgICAgICBpZiAoY2ggPCBtYXBsZW4pCi0gICAgICAgICAgICAgICAgeCA9IG1hcHN0cmluZ1tjaF07Ci0KLSAgICAgICAgICAgIGlmICh4ID09IDB4ZmZmZSkgeworICAgICAgICAgICAgICAgIHggPSBQeVVuaWNvZGVfUkVBRChtYXBraW5kLCBtYXBkYXRhLCBjaCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeCA9IDB4ZmZmZTsgLyogaW52YWxpZCB2YWx1ZSAqLworRXJyb3I6CisgICAgICAgICAgICBpZiAoeCA9PSAweGZmZmUpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogdW5kZWZpbmVkIG1hcHBpbmcgKi8KLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcm1hcCIsICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwKysgPSB4OworCisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgfQpAQCAtNTI1MCw0OCArNzUyNSwyNSBAQAogICAgICAgICAgICAgLyogQXBwbHkgbWFwcGluZyAqLwogICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh4KSkgewogICAgICAgICAgICAgICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQVNfTE9ORyh4KTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gMHgxMEZGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4MTEwMDAwKSIpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHglbHgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKU1BWF9VTklDT0RFICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIH0KLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiAweEZGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogc2VlIHRoZSBjb2RlIGZvciAxLW4gbWFwcGluZyBiZWxvdyAqLwotICAgICAgICAgICAgICAgICAgICBpZiAoZXh0cmFjaGFycyA8IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2l6ZSBmaXJzdCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvbGRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5lZWRlZCA9IDEwIC0gZXh0cmFjaGFyczsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY2hhcnMgKz0gbmVlZGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYIG92ZXJmbG93IGRldGVjdGlvbiBtaXNzaW5nICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpICsgbmVlZGVkKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpICsgb2xkcG9zOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAweEQ4MDAgfCAodmFsdWUgPj4gMTApOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gMHhEQzAwIHwgKHZhbHVlICYgMHgzRkYpOwotICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzIC09IDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSl2YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB2YWx1ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh4ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgICAgICAvKiB1bmRlZmluZWQgbWFwcGluZyAqLwotICAgICAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFybWFwIiwgImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CkBAIC01Mjk5LDMyICs3NTUxLDM3IEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHRhcmdldHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoeCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCB0YXJnZXRzaXplOwogCi0gICAgICAgICAgICAgICAgaWYgKHRhcmdldHNpemUgPT0gMSkKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHgpID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgdGFyZ2V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHgpOworCisgICAgICAgICAgICAgICAgaWYgKHRhcmdldHNpemUgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAvKiAxLTEgbWFwcGluZyAqLwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKlB5VW5pY29kZV9BU19VTklDT0RFKHgpOwotCisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUih4LCAwKSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmICh0YXJnZXRzaXplID4gMSkgewogICAgICAgICAgICAgICAgICAgICAvKiAxLW4gbWFwcGluZyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0c2l6ZSA+IGV4dHJhY2hhcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlc2l6ZSBmaXJzdCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvbGRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5lZWRlZCA9ICh0YXJnZXRzaXplIC0gZXh0cmFjaGFycykgKyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldHNpemUgPDwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzICs9IG5lZWRlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh2KSArIG5lZWRlZCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyBuZWVkZWQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpICsgb2xkcG9zOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSB0YXJnZXRzaXplOworICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV93aWRlbigmdiwgb3V0cG9zLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoeCkpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKHYsIG91dHBvcywgeCwgMCwgdGFyZ2V0c2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIG91dHBvcyArPSB0YXJnZXRzaXplOwogICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzIC09IHRhcmdldHNpemU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIDEtMCBtYXBwaW5nOiBza2lwIHRoZSBjaGFyYWN0ZXIgKi8KQEAgLTUzNDAsMTIgKzc1OTcsMTEgQEAKICAgICAgICAgICAgICsrczsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAocCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHYpKQotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdiwgb3V0cG9zKSA8IDApCisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTUzNTYsNyArNzYxMiw3IEBACiAKIC8qIENoYXJtYXAgZW5jb2Rpbmc6IHRoZSBsb29rdXAgdGFibGUgKi8KIAotc3RydWN0IGVuY29kaW5nX21hcHsKK3N0cnVjdCBlbmNvZGluZ19tYXAgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICB1bnNpZ25lZCBjaGFyIGxldmVsMVszMl07CiAgICAgaW50IGNvdW50MiwgY291bnQzOwpAQCAtNTQzMCw3ICs3Njg2LDYgQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAoUHlPYmplY3QqIHN0cmluZykKIHsKLSAgICBQeV9VTklDT0RFICpkZWNvZGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBzdHJ1Y3QgZW5jb2RpbmdfbWFwICptcmVzdWx0OwogICAgIGludCBpOwpAQCAtNTQzOSwzNSArNzY5NCwzOSBAQAogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWwyWzUxMl07CiAgICAgdW5zaWduZWQgY2hhciAqbWxldmVsMSwgKm1sZXZlbDIsICptbGV2ZWwzOwogICAgIGludCBjb3VudDIgPSAwLCBjb3VudDMgPSAwOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgUHlfVUNTNCBjaDsKIAotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cmluZykgfHwgUHlVbmljb2RlX0dldFNpemUoc3RyaW5nKSAhPSAyNTYpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHJpbmcpIHx8ICFQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkZWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgbGVuZ3RoID0gUHlfTUlOKGxlbmd0aCwgMjU2KTsKICAgICBtZW1zZXQobGV2ZWwxLCAweEZGLCBzaXplb2YgbGV2ZWwxKTsKICAgICBtZW1zZXQobGV2ZWwyLCAweEZGLCBzaXplb2YgbGV2ZWwyKTsKIAogICAgIC8qIElmIHRoZXJlIGlzbid0IGEgb25lLXRvLW9uZSBtYXBwaW5nIG9mIE5VTEwgdG8gXDAsCiAgICAgICAgb3IgaWYgdGhlcmUgYXJlIG5vbi1CTVAgY2hhcmFjdGVycywgd2UgbmVlZCB0byB1c2UKICAgICAgICBhIG1hcHBpbmcgZGljdGlvbmFyeS4gKi8KLSAgICBpZiAoZGVjb2RlWzBdICE9IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApICE9IDApCiAgICAgICAgIG5lZWRfZGljdCA9IDE7Ci0gICAgZm9yIChpID0gMTsgaSA8IDI1NjsgaSsrKSB7CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGludCBsMSwgbDI7Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgfHwgZGVjb2RlW2ldID4gMHhGRkZGCi0jZW5kaWYKLSAgICAgICAgICAgICkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gMCB8fCBjaCA+IDB4RkZGRikgewogICAgICAgICAgICAgbmVlZF9kaWN0ID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChkZWNvZGVbaV0gPT0gMHhGRkZFKQorICAgICAgICBpZiAoY2ggPT0gMHhGRkZFKQogICAgICAgICAgICAgLyogdW5tYXBwZWQgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbDEgPSBkZWNvZGVbaV0gPj4gMTE7Ci0gICAgICAgIGwyID0gZGVjb2RlW2ldID4+IDc7CisgICAgICAgIGwxID0gY2ggPj4gMTE7CisgICAgICAgIGwyID0gY2ggPj4gNzsKICAgICAgICAgaWYgKGxldmVsMVtsMV0gPT0gMHhGRikKICAgICAgICAgICAgIGxldmVsMVtsMV0gPSBjb3VudDIrKzsKICAgICAgICAgaWYgKGxldmVsMltsMl0gPT0gMHhGRikKQEAgLTU0ODIsOSArNzc0MSw4IEBACiAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0gICAgICAgICAgICBrZXkgPSB2YWx1ZSA9IE5VTEw7Ci0gICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoZGVjb2RlW2ldKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoaSk7CiAgICAgICAgICAgICBpZiAoIWtleSB8fCAhdmFsdWUpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQxOwpAQCAtNTUxNywxNyArNzc3NSwxOCBAQAogICAgIG1lbXNldChtbGV2ZWwyLCAweEZGLCAxNipjb3VudDIpOwogICAgIG1lbXNldChtbGV2ZWwzLCAwLCAxMjgqY291bnQzKTsKICAgICBjb3VudDMgPSAwOwotICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworICAgIGZvciAoaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBpbnQgbzEsIG8yLCBvMywgaTIsIGkzOwotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDB4RkZGRSkKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPT0gMHhGRkZFKQogICAgICAgICAgICAgLyogdW5tYXBwZWQgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgbzEgPSBkZWNvZGVbaV0+PjExOwotICAgICAgICBvMiA9IChkZWNvZGVbaV0+PjcpICYgMHhGOworICAgICAgICBvMSA9IGNoPj4xMTsKKyAgICAgICAgbzIgPSAoY2g+PjcpICYgMHhGOwogICAgICAgICBpMiA9IDE2Km1sZXZlbDFbbzFdICsgbzI7CiAgICAgICAgIGlmIChtbGV2ZWwyW2kyXSA9PSAweEZGKQogICAgICAgICAgICAgbWxldmVsMltpMl0gPSBjb3VudDMrKzsKLSAgICAgICAgbzMgPSBkZWNvZGVbaV0gJiAweDdGOworICAgICAgICBvMyA9IGNoICYgMHg3RjsKICAgICAgICAgaTMgPSAxMjgqbWxldmVsMltpMl0gKyBvMzsKICAgICAgICAgbWxldmVsM1tpM10gPSBpOwogICAgIH0KQEAgLTU1MzUsNyArNzc5NCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWVuY29kaW5nX21hcF9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZykKK2VuY29kaW5nX21hcF9sb29rdXAoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZykKIHsKICAgICBzdHJ1Y3QgZW5jb2RpbmdfbWFwICptYXAgPSAoc3RydWN0IGVuY29kaW5nX21hcCopbWFwcGluZzsKICAgICBpbnQgbDEgPSBjPj4xMTsKQEAgLTU1NDMsMTEgKzc4MDIsOCBAQAogICAgIGludCBsMyA9IGMgJiAweDdGOwogICAgIGludCBpOwogCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKGMgPiAweEZGRkYpIHsKKyAgICBpZiAoYyA+IDB4RkZGRikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgogICAgIGlmIChjID09IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIGxldmVsIDEqLwpAQCAtNTU3MSw3ICs3ODI3LDggQEAKIC8qIExvb2t1cCB0aGUgY2hhcmFjdGVyIGNoIGluIHRoZSBtYXBwaW5nLiBJZiB0aGUgY2hhcmFjdGVyCiAgICBjYW4ndCBiZSBmb3VuZCwgUHlfTm9uZSBpcyByZXR1cm5lZCAob3IgTlVMTCwgaWYgYW5vdGhlcgogICAgZXJyb3Igb2NjdXJyZWQpLiAqLwotc3RhdGljIFB5T2JqZWN0ICpjaGFybWFwZW5jb2RlX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nKQorc3RhdGljIFB5T2JqZWN0ICoKK2NoYXJtYXBlbmNvZGVfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcpCiB7CiAgICAgUHlPYmplY3QgKncgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpYyk7CiAgICAgUHlPYmplY3QgKng7CkBAIC01NjI4LDE2ICs3ODg1LDE2IEBACiAKIHR5cGVkZWYgZW51bSBjaGFybWFwZW5jb2RlX3Jlc3VsdCB7CiAgICAgZW5jX1NVQ0NFU1MsIGVuY19GQUlMRUQsIGVuY19FWENFUFRJT04KLX1jaGFybWFwZW5jb2RlX3Jlc3VsdDsKK30gY2hhcm1hcGVuY29kZV9yZXN1bHQ7CiAvKiBsb29rdXAgdGhlIGNoYXJhY3RlciwgcHV0IHRoZSByZXN1bHQgaW4gdGhlIG91dHB1dCBzdHJpbmcgYW5kIGFkanVzdAogICAgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuIFJlc2l6ZSB0aGUgb3V0cHV0IGJ5dGVzIG9iamVjdCBpZiBub3QgZW5vdWdoCiAgICBzcGFjZSBpcyBhdmFpbGFibGUuIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCB0aGF0CiAgICB3YXMgcHV0IGluIHRoZSBvdXRwdXQgYnVmZmVyLCBvciBQeV9Ob25lLCBpZiB0aGUgbWFwcGluZyB3YXMgdW5kZWZpbmVkCiAgICAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pIG9yIE5VTEwsIGlmIGEKICAgIHJlYWxsb2NhdGlvbiBlcnJvciBvY2N1cnJlZC4gVGhlIGNhbGxlciBtdXN0IGRlY3JlZiB0aGUgcmVzdWx0ICovCi1zdGF0aWMKLWNoYXJtYXBlbmNvZGVfcmVzdWx0IGNoYXJtYXBlbmNvZGVfb3V0cHV0KFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm91dG9iaiwgUHlfc3NpemVfdCAqb3V0cG9zKQorc3RhdGljIGNoYXJtYXBlbmNvZGVfcmVzdWx0CitjaGFybWFwZW5jb2RlX291dHB1dChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRvYmosIFB5X3NzaXplX3QgKm91dHBvcykKIHsKICAgICBQeU9iamVjdCAqcmVwOwogICAgIGNoYXIgKm91dHN0YXJ0OwpAQCAtNTY5MywxNyArNzk1MCwxOSBAQAogCiAvKiBoYW5kbGUgYW4gZXJyb3IgaW4gUHlVbmljb2RlX0VuY29kZUNoYXJtYXAKICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwX2VuY29kaW5nX2Vycm9yKAotICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsIFB5X3NzaXplX3Qgc2l6ZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAorc3RhdGljIGludAorY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAogICAgIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAogICAgIGludCAqa25vd25fZXJyb3JIYW5kbGVyLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwgY29uc3QgY2hhciAqZXJyb3JzLAogICAgIFB5T2JqZWN0ICoqcmVzLCBQeV9zc2l6ZV90ICpyZXNwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KLSAgICBQeV9zc2l6ZV90IHJlcHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplLCByZXBzaXplOwogICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bmVuY29kYWJsZSBjaGFycyAqLwogICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0cG9zID0gKmlucG9zOwogICAgIFB5X3NzaXplX3QgY29sbGVuZHBvcyA9ICppbnBvcysxOwpAQCAtNTcxMSwxOSArNzk3MCwyNiBAQAogICAgIGNoYXIgKmVuY29kaW5nID0gImNoYXJtYXAiOwogICAgIGNoYXIgKnJlYXNvbiA9ICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiI7CiAgICAgY2hhcm1hcGVuY29kZV9yZXN1bHQgeDsKKyAgICBQeV9VQ1M0IGNoOworICAgIGludCB2YWw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwogICAgIC8qIGZpbmQgYWxsIHVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgKi8KICAgICB3aGlsZSAoY29sbGVuZHBvcyA8IHNpemUpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcDsKICAgICAgICAgaWYgKFB5X1RZUEUobWFwcGluZykgPT0gJkVuY29kaW5nTWFwVHlwZSkgewotICAgICAgICAgICAgaW50IHJlcyA9IGVuY29kaW5nX21hcF9sb29rdXAocFtjb2xsZW5kcG9zXSwgbWFwcGluZyk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IC0xKQorICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxlbmRwb3MpOworICAgICAgICAgICAgdmFsID0gZW5jb2RpbmdfbWFwX2xvb2t1cChjaCwgbWFwcGluZyk7CisgICAgICAgICAgICBpZiAodmFsICE9IC0xKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgKytjb2xsZW5kcG9zOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICByZXAgPSBjaGFybWFwZW5jb2RlX2xvb2t1cChwW2NvbGxlbmRwb3NdLCBtYXBwaW5nKTsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxlbmRwb3MpOworICAgICAgICByZXAgPSBjaGFybWFwZW5jb2RlX2xvb2t1cChjaCwgbWFwcGluZyk7CiAgICAgICAgIGlmIChyZXA9PU5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGVsc2UgaWYgKHJlcCE9UHlfTm9uZSkgewpAQCAtNTc0OSw3ICs4MDE1LDcgQEAKICAgICB9CiAgICAgc3dpdGNoICgqa25vd25fZXJyb3JIYW5kbGVyKSB7CiAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvczxjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKQEAgLTU3NTgsNyArODAyNCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoeD09ZW5jX0ZBSUxFRCkgewotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTc3MSwxMyArODAzNywxMyBAQAogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3MgPCBjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgIGNoYXIgKmNwOwotICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIChpbnQpcFtjb2xscG9zXSk7CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgKGludClQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGNvbGxwb3MpKTsKICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkgewogICAgICAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgqY3AsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHg9PWVuY19GQUlMRUQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCBwLCBzaXplLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTc4Niw3ICs4MDUyLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgcCwgc2l6ZSwgZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgZXhjZXB0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCAmbmV3cG9zKTsKICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU4MTAsMTUgKzgwNzYsMjMgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICBmb3IgKHVuaTIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXB1bmljb2RlKTsgcmVwc2l6ZS0tPjA7ICsrdW5pMikgewotICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KCp1bmkyLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXB1bmljb2RlKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcHVuaWNvZGUpOworICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCByZXBzaXplOyBpbmRleCsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IHJlcGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpOworICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KHJlcGNoLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICh4PT1lbmNfRkFJTEVEKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTgyOCwxNSArODEwMiwxNiBAQAogICAgIHJldHVybiAwOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICAvKiBvdXRwdXQgb2JqZWN0ICovCiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgLyogY3VycmVudCBpbnB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgaW5wb3MgPSAwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKQEAgLTU4NDYsOSArODEyMSwxMyBAQAogICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEocCwgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEodW5pY29kZSwgZXJyb3JzLCAyNTYpOwogCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSBlbmNvZGluZyB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwpAQCAtNTg1OSwxMiArODEzOCwxMyBAQAogICAgICAgICByZXR1cm4gcmVzOwogCiAgICAgd2hpbGUgKGlucG9zPHNpemUpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZSwgaW5wb3MpOwogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCi0gICAgICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHggPSBjaGFybWFwZW5jb2RlX291dHB1dChwW2lucG9zXSwgbWFwcGluZywgJnJlcywgJnJlc3Bvcyk7CisgICAgICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHggPSBjaGFybWFwZW5jb2RlX291dHB1dChjaCwgbWFwcGluZywgJnJlcywgJnJlc3Bvcyk7CiAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSAvKiBlcnJvciAqLwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICBpZiAoeD09ZW5jX0ZBSUxFRCkgeyAvKiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHAsIHNpemUsICZpbnBvcywgbWFwcGluZywKKyAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHVuaWNvZGUsICZpbnBvcywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fZXJyb3JIYW5kbGVyLCAmZXJyb3JIYW5kbGVyLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzLCAmcmVzcG9zKSkgewpAQCAtNTg5MiwyOCArODE3Miw0MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nKQorLyogRGVwcmVjYXRlZCAqLworUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8IG1hcHBpbmcgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAodW5pY29kZSwgbWFwcGluZywgTlVMTCk7CiB9CiAKIC8qIGNyZWF0ZSBvciBhZGp1c3QgYSBVbmljb2RlVHJhbnNsYXRlRXJyb3IgKi8KLXN0YXRpYyB2b2lkIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK21ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkgewotICAgICAgICAqZXhjZXB0aW9uT2JqZWN0ID0gUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAotICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IF9QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9DcmVhdGUoCisgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0KCpleGNlcHRpb25PYmplY3QsIHN0YXJ0cG9zKSkKQEAgLTU5MzAsMTMgKzgyMjUsMTQgQEAKIH0KIAogLyogcmFpc2VzIGEgVW5pY29kZVRyYW5zbGF0ZUVycm9yICovCi1zdGF0aWMgdm9pZCByYWlzZV90cmFuc2xhdGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCitzdGF0aWMgdm9pZAorcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCAhPSBOVUxMKQogICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycygqZXhjZXB0aW9uT2JqZWN0KTsKIH0KQEAgLTU5NDUsMTIgKzgyNDEsMTMgQEAKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBwdXQgdGhlIHJlc3VsdCBpbnRvIG5ld3BvcyBhbmQgcmV0dXJuIHRoZSByZXBsYWNlbWVudCBzdHJpbmcsIHdoaWNoCiAgICBoYXMgdG8gYmUgZnJlZWQgYnkgdGhlIGNhbGxlciAqLwotc3RhdGljIFB5T2JqZWN0ICp1bmljb2RlX3RyYW5zbGF0ZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKICAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKQEAgLTU5NjUsNyArODI2Miw3IEBACiAgICAgfQogCiAgICAgbWFrZV90cmFuc2xhdGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICBpZiAoKmV4Y2VwdGlvbk9iamVjdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNTk4NCwxMCArODI4MSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGlfbmV3cG9zPDApCi0gICAgICAgICpuZXdwb3MgPSBzaXplK2lfbmV3cG9zOworICAgICAgICAqbmV3cG9zID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkraV9uZXdwb3M7CiAgICAgZWxzZQogICAgICAgICAqbmV3cG9zID0gaV9uZXdwb3M7Ci0gICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPnNpemUpIHsKKyAgICBpZiAoKm5ld3BvczwwIHx8ICpuZXdwb3M+UHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsICJwb3NpdGlvbiAlemQgZnJvbSBlcnJvciBoYW5kbGVyIG91dCBvZiBib3VuZHMiLCAqbmV3cG9zKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3R1cGxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MDAwLDggKzgyOTcsOCBAQAogLyogTG9va3VwIHRoZSBjaGFyYWN0ZXIgY2ggaW4gdGhlIG1hcHBpbmcgYW5kIHB1dCB0aGUgcmVzdWx0IGluIHJlc3VsdCwKICAgIHdoaWNoIG11c3QgYmUgZGVjcmVmZWQgYnkgdGhlIGNhbGxlci4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKnJlc3VsdCkKK3N0YXRpYyBpbnQKK2NoYXJtYXB0cmFuc2xhdGVfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcsIFB5T2JqZWN0ICoqcmVzdWx0KQogewogICAgIFB5T2JqZWN0ICp3ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWMpOwogICAgIFB5T2JqZWN0ICp4OwpAQCAtNjA1MCwyMCArODM0NywyMSBAQAogLyogZW5zdXJlIHRoYXQgKm91dG9iaiBpcyBhdCBsZWFzdCByZXF1aXJlZHNpemUgY2hhcmFjdGVycyBsb25nLAogICAgaWYgbm90IHJlYWxsb2NhdGUgYW5kIGFkanVzdCB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeU9iamVjdCAqKm91dG9iaiwgUHlfVU5JQ09ERSAqKm91dHAsCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShQeV9VQ1M0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpwc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSkKIHsKLSAgICBQeV9zc2l6ZV90IG9sZHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUoKm91dG9iaik7CisgICAgUHlfc3NpemVfdCBvbGRzaXplID0gKnBzaXplOworICAgIFB5X1VDUzQgKm5ld19vdXRvYmo7CiAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG9sZHNpemUpIHsKLSAgICAgICAgLyogcmVtZW1iZXIgb2xkIG91dHB1dCBwb3NpdGlvbiAqLwotICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9ICpvdXRwLVB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopOwogICAgICAgICAvKiBleHBvbmVudGlhbGx5IG92ZXJhbGxvY2F0ZSB0byBtaW5pbWl6ZSByZWFsbG9jYXRpb25zICovCiAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPCAyICogb2xkc2l6ZSkKICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIgKiBvbGRzaXplOwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZShvdXRvYmosIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICBuZXdfb3V0b2JqID0gUHlNZW1fUmVhbGxvYygqb3V0b2JqLCByZXF1aXJlZHNpemUgKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAobmV3X291dG9iaiA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpvdXRvYmopICsgb3V0cG9zOworICAgICAgICAqb3V0b2JqID0gbmV3X291dG9iajsKKyAgICAgICAgKnBzaXplID0gcmVxdWlyZWRzaXplOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTYwNzMsMzggKzgzNzEsNDQgQEAKICAgIHVuZGVmaW5lZCAoaW4gd2hpY2ggY2FzZSBubyBjaGFyYWN0ZXIgd2FzIHdyaXR0ZW4pLgogICAgVGhlIGNhbGxlZCBtdXN0IGRlY3JlZiByZXN1bHQuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KLXN0YXRpYwotaW50IGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KGNvbnN0IFB5X1VOSUNPREUgKnN0YXJ0aW5wLCBjb25zdCBQeV9VTklDT0RFICpjdXJpbnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbnNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKm91dG9iaiwgUHlfVU5JQ09ERSAqKm91dHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX291dHB1dChQeU9iamVjdCAqaW5wdXQsIFB5X3NzaXplX3QgaXBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLCBQeV9VQ1M0ICoqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqb3NpemUsIFB5X3NzaXplX3QgKm9wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnJlcykKIHsKLSAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKmN1cmlucCwgbWFwcGluZywgcmVzKSkKKyAgICBQeV9VQ1M0IGN1cmlucCA9IFB5VW5pY29kZV9SRUFEX0NIQVIoaW5wdXQsIGlwb3MpOworICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChjdXJpbnAsIG1hcHBpbmcsIHJlcykpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoKnJlcz09TlVMTCkgewogICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLwotICAgICAgICAqKCpvdXRwKSsrID0gKmN1cmlucDsKKyAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBjdXJpbnA7CiAgICAgfQogICAgIGVsc2UgaWYgKCpyZXM9PVB5X05vbmUpCiAgICAgICAgIDsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soKnJlcykpIHsKICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgKigqb3V0cCkrKyA9IChQeV9VTklDT0RFKVB5TG9uZ19BU19MT05HKCpyZXMpOworICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IChQeV9VQ1M0KVB5TG9uZ19BU19MT05HKCpyZXMpOwogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soKnJlcykpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpyZXMpOworICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoKnJlcykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcmVzKTsKICAgICAgICAgaWYgKHJlcHNpemU9PTEpIHsKICAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAqKCpvdXRwKSsrID0gKlB5VW5pY29kZV9BU19VTklDT0RFKCpyZXMpOworICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIDApOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHJlcHNpemUhPTApIHsKICAgICAgICAgICAgIC8qIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZSA9ICgqb3V0cC1QeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKSkgKwotICAgICAgICAgICAgICAgIChpbnNpemUgLSAoY3VyaW5wLXN0YXJ0aW5wKSkgKworICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUgPSAqb3BvcyArCisgICAgICAgICAgICAgICAgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSAtIGlwb3MpICsKICAgICAgICAgICAgICAgICByZXBzaXplIC0gMTsKLSAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZShvdXRvYmosIG91dHAsIHJlcXVpcmVkc2l6ZSkpCisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0cHV0LCBvc2l6ZSwgcmVxdWlyZWRzaXplKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBtZW1jcHkoKm91dHAsIFB5VW5pY29kZV9BU19VTklDT0RFKCpyZXMpLCBzaXplb2YoUHlfVU5JQ09ERSkqcmVwc2l6ZSk7Ci0gICAgICAgICAgICAqb3V0cCArPSByZXBzaXplOworICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVwc2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCBpKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC02MTEyLDIwICs4NDE2LDIxIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICAvKiBvdXRwdXQgb2JqZWN0ICovCi0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgLyogcG9pbnRlcnMgdG8gdGhlIGJlZ2lubmluZyBhbmQgZW5kKzEgb2YgaW5wdXQgKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpzdGFydHAgPSBwOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmVuZHAgPSBwICsgc2l6ZTsKLSAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwotICAgIFB5X1VOSUNPREUgKnN0cjsKKyAgICAvKiBpbnB1dCBvYmplY3QgKi8KKyAgICBjaGFyICppZGF0YTsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgaW50IGtpbmQ7CisgICAgLyogb3V0cHV0IGJ1ZmZlciAqLworICAgIFB5X1VDUzQgKm91dHB1dCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBvc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOworICAgIFB5X3NzaXplX3Qgb3BvczsKICAgICBjaGFyICpyZWFzb24gPSAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwpAQCAtNjEzOSwzOCArODQ0NCw1MiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKyAgICBpID0gMDsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKKyAgICAgICAgcmV0dXJuIGlucHV0OworICAgIH0KKwogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCi0gICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICBvc2l6ZSA9IHNpemU7CisgICAgb3V0cHV0ID0gUHlNZW1fTWFsbG9jKG9zaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICBvcG9zID0gMDsKKyAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiByZXM7Ci0gICAgc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKKyAgICB9CiAKLSAgICB3aGlsZSAocDxlbmRwKSB7CisgICAgd2hpbGUgKGk8c2l6ZSkgewogICAgICAgICAvKiB0cnkgdG8gZW5jb2RlIGl0ICovCiAgICAgICAgIFB5T2JqZWN0ICp4ID0gTlVMTDsKLSAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfb3V0cHV0KHN0YXJ0cCwgcCwgc2l6ZSwgbWFwcGluZywgJnJlcywgJnN0ciwgJngpKSB7CisgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChpbnB1dCwgaSwgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZvc2l6ZSwgJm9wb3MsICZ4KSkgewogICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHgpOwogICAgICAgICBpZiAoeCE9UHlfTm9uZSkgLyogaXQgd29ya2VkID0+IGFkanVzdCBpbnB1dCBwb2ludGVyICovCi0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICArK2k7CiAgICAgICAgIGVsc2UgeyAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnVuaTI7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaTI7CiAgICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bnRyYW5zbGF0YWJsZSBjaGFycyAqLwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbHN0YXJ0ID0gcDsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxlbmQgPSBwKzE7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gaSsxOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsOwogCiAgICAgICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IGVuZHApIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoKmNvbGxlbmQsIG1hcHBpbmcsICZ4KSkKKyAgICAgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeVVuaWNvZGVfUkVBRChraW5kLGlkYXRhLCBjb2xsZW5kKSwgbWFwcGluZywgJngpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgICAgICAgICBpZiAoeCE9UHlfTm9uZSkKQEAgLTYxOTMsMjYxICs4NTEyLDQxOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbigmZXhjLCBzdGFydHAsIHNpemUsIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCByZWFzb24pOworICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4YywgaW5wdXQsIGNvbGxzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBjaGVjayBmb3Igc3BhY2UsIHRoaXMgaXMgYSAxOjEgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGNvbGwgPSBjb2xsc3RhcnQ7IGNvbGw8Y29sbGVuZDsgKytjb2xsKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnPyc7CisgICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7IGNvbGwrKykKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAnPyc7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApIHsKKyAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIGkpICovCisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKCZyZXMsICZzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3N0cmxlbihidWZmZXIpKyhlbmRwLWNvbGxlbmQpKSkKKyAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGlkYXRhLCBpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3N0cmxlbihidWZmZXIpKyhzaXplLWNvbGxlbmQpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgZm9yIChjcCA9IGJ1ZmZlcjsgKmNwOyArK2NwKQotICAgICAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gKmNwOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W29wb3MrK10gPSAqY3A7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGkgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIHN0YXJ0cCwgc2l6ZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LXN0YXJ0cCwgY29sbGVuZC1zdGFydHAsICZuZXdwb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24sIGlucHV0LCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwogICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmcmVzLCAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcykpK3JlcHNpemUrKGVuZHAtY29sbGVuZCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICp1bmkyOwotICAgICAgICAgICAgICAgIHAgPSBzdGFydHAgKyBuZXdwb3M7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IDA7IHJlcHNpemUtLT4wOyArK3VuaTIpCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCB1bmkyKTsKKyAgICAgICAgICAgICAgICBpID0gbmV3cG9zOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICByZXNwb3MgPSBzdHItUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICBpZiAocmVzcG9zPFB5VW5pY29kZV9HRVRfU0laRShyZXMpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZyZXMsIHJlc3BvcykgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBvdXRwdXQsIG9wb3MpOworICAgIGlmICghcmVzKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKKyAgICBQeU1lbV9GcmVlKG91dHB1dCk7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyogRGVwcmVjYXRlZC4gVXNlIFB5VW5pY29kZV9UcmFuc2xhdGUgaW5zdGVhZC4gKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIHNpemUpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9UcmFuc2xhdGUoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gcmVzdWx0OworfQogCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihzdHIpOwotICAgIHJldHVybiBOVUxMOworc3RhdGljIFB5X1VDUzQKK2ZpeF9kZWNpbWFsX2FuZF9zcGFjZV90b19hc2NpaShQeU9iamVjdCAqc2VsZikKK3sKKyAgICAvKiBObyBuZWVkIHRvIGNhbGwgUHlVbmljb2RlX1JFQURZKHNlbGYpIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5CisgICAgICAgY2FsbGVkIGFzIGEgY2FsbGJhY2sgZnJvbSBmaXh1cCgpIHdoaWNoIGRvZXMgaXQgYWxyZWFkeS4gKi8KKyAgICBjb25zdCBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGNvbnN0IGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNywgY2gsIGZpeGVkOworICAgIGludCBtb2RpZmllZCA9IDA7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGZpeGVkID0gMDsKKyAgICAgICAgaWYgKGNoID4gMTI3KSB7CisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkKKyAgICAgICAgICAgICAgICBmaXhlZCA9ICcgJzsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnN0IGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCisgICAgICAgICAgICAgICAgICAgIGZpeGVkID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaXhlZCAhPSAwKSB7CisgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBmaXhlZCk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIGZpeGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgY2gpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIChtb2RpZmllZCkgPyBtYXhjaGFyIDogMDsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8PSAxMjcpIHsKKyAgICAgICAgLyogSWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IEFTQ0lJLCBqdXN0IHJldHVybiB0aGUgc2FtZSBzdHJpbmcgKi8KKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZTsKKyAgICB9CisgICAgcmV0dXJuIGZpeHVwKHVuaWNvZGUsIGZpeF9kZWNpbWFsX2FuZF9zcGFjZV90b19hc2NpaSk7CiB9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfVU5JQ09ERSAqcDsgLyogd3JpdGUgcG9pbnRlciBpbnRvIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpkZWNpbWFsOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICAvKiBDb3B5IHRvIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKV9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCksIHMsIGxlbmd0aCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIC8qIEl0ZXJhdGUgb3ZlciBjb2RlIHBvaW50cyAqLworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIG1heGNoYXIgPSAxMjc7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPXNbaV07CisgICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOwogICAgICAgICBpZiAoY2ggPiAxMjcpIHsKICAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKLSAgICAgICAgICAgICAgICBwW2ldID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgICAgICAgICBjaCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgY2gpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAvKiBDb3B5IHRvIGEgbmV3IHN0cmluZyAqLworICAgIGRlY2ltYWwgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgbWF4Y2hhcik7CisgICAgaWYgKGRlY2ltYWwgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGRlY2ltYWw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGRlY2ltYWwpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShkZWNpbWFsKTsKKyAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgICAgIGlmIChjaCA+IDEyNykgeworICAgICAgICAgICAgaW50IGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CisgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQorICAgICAgICAgICAgICAgIGNoID0gJzAnICsgZGVjaW1hbDsKKyAgICAgICAgfQorICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgY2gpOworICAgIH0KKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQoZGVjaW1hbCk7CiB9CiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotaW50IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKFB5X1VOSUNPREUgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK2ludAorUHlVbmljb2RlX0VuY29kZURlY2ltYWwoUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5X1VOSUNPREUgKnAsICplbmQ7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiZGVjaW1hbCI7Ci0gICAgY29uc3QgY2hhciAqcmVhc29uID0gImludmFsaWQgZGVjaW1hbCBVbmljb2RlIHN0cmluZyI7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAob3V0cHV0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHAgPSBzOwotICAgIGVuZCA9IHMgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgbGVuZ3RoKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgZm9yIChpPTA7IGkgPCBsZW5ndGg7ICkgeworICAgICAgICBQeU9iamVjdCAqZXhjOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQgZGVjaW1hbDsKLSAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGU7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgIFB5X1VOSUNPREUgKnVuaTI7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNvbGxzdGFydDsKLSAgICAgICAgUHlfVU5JQ09ERSAqY29sbGVuZDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvczsKKworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKSB7CiAgICAgICAgICAgICAqb3V0cHV0KysgPSAnICc7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKSB7CiAgICAgICAgICAgICAqb3V0cHV0KysgPSAnMCcgKyBkZWNpbWFsOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKDAgPCBjaCAmJiBjaCA8IDI1NikgewogICAgICAgICAgICAgKm91dHB1dCsrID0gKGNoYXIpY2g7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICAvKiBBbGwgb3RoZXIgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCB1bmVuY29kYWJsZSAqLwotICAgICAgICBjb2xsc3RhcnQgPSBwOwotICAgICAgICBmb3IgKGNvbGxlbmQgPSBwKzE7IGNvbGxlbmQgPCBlbmQ7IGNvbGxlbmQrKykgewotICAgICAgICAgICAgaWYgKCgwIDwgKmNvbGxlbmQgJiYgKmNvbGxlbmQgPCAyNTYpIHx8Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKCpjb2xsZW5kKSB8fAotICAgICAgICAgICAgICAgIDAgPD0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoKmNvbGxlbmQpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCi0gICAgICAgICAqIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgcywgbGVuZ3RoLCBjb2xsc3RhcnQtcywgY29sbGVuZC1zLCByZWFzb24pOwotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KLSAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkKLSAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnPyc7Ci0gICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KLSAgICAgICAgICAgIHAgPSBjb2xsZW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KLSAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkKLSAgICAgICAgICAgICAgICBvdXRwdXQgKz0gc3ByaW50ZihvdXRwdXQsICImIyVkOyIsIChpbnQpKnApOwotICAgICAgICAgICAgcCA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgcywgbGVuZ3RoLCAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zLCBjb2xsZW5kLXMsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSkgewotICAgICAgICAgICAgICAgIC8qIEJ5dGUgcmVzdWx0cyBub3Qgc3VwcG9ydGVkLCBzaW5jZSB0aGV5IGhhdmUgbm8gZGVjaW1hbCBwcm9wZXJ0eS4gKi8KLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXJyb3IgaGFuZGxlciBzaG91bGQgcmV0dXJuIHVuaWNvZGUiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gKnVuaTI7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9ICcgJzsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9ICcwJyArIGRlY2ltYWw7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKDAgPCBjaCAmJiBjaCA8IDI1NikKLSAgICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKWNoOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIGxlbmd0aCwgY29sbHN0YXJ0LXMsIGNvbGxlbmQtcywgcmVhc29uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBzICsgbmV3cG9zOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICB9CisKKyAgICAgICAgc3RhcnRwb3MgPSBpOworICAgICAgICBleGMgPSBOVUxMOworICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJkZWNpbWFsIiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHBvcywgc3RhcnRwb3MrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBkZWNpbWFsIFVuaWNvZGUgc3RyaW5nIik7CisgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIDAtdGVybWluYXRlIHRoZSBvdXRwdXQgc3RyaW5nICovCiAgICAgKm91dHB1dCsrID0gJ1wwJzsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICByZXR1cm4gMDsKLQotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgcmV0dXJuIC0xOwogfQogCiAvKiAtLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlZGVmcy5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCitzdGF0aWMgUHlfc3NpemVfdAorYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCit7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIHJlc3VsdDsKIAotI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoczEpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoczIpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoczEpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzMik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzMSwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICByZXR1cm4gLTI7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzMiwga2luZCk7CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMSk7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMyKTsKIAotI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZQotI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisgICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdWNzMWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3MybGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOyByZXN1bHQgPSAtMjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfcmZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gLTI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5X3NzaXplX3QKK19QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKKyAgICB2b2lkICpkaWdpdHMsIFB5X3NzaXplX3Qgbl9kaWdpdHMsCisgICAgUHlfc3NpemVfdCBtaW5fd2lkdGgsCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmcsIFB5T2JqZWN0ICp0aG91c2FuZHNfc2VwLAorICAgIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgdW5zaWduZWQgaW50IGtpbmQsIHRob3VzYW5kc19zZXBfa2luZDsKKyAgICBjaGFyICpkYXRhLCAqdGhvdXNhbmRzX3NlcF9kYXRhOworICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW47CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAodW5pY29kZSAhPSBOVUxMKSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgZGF0YSA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpICsgaW5kZXggKiBraW5kOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV8xQllURV9LSU5EOworICAgICAgICBkYXRhID0gTlVMTDsKKyAgICB9CisgICAgdGhvdXNhbmRzX3NlcF9raW5kID0gUHlVbmljb2RlX0tJTkQodGhvdXNhbmRzX3NlcCk7CisgICAgdGhvdXNhbmRzX3NlcF9kYXRhID0gUHlVbmljb2RlX0RBVEEodGhvdXNhbmRzX3NlcCk7CisgICAgdGhvdXNhbmRzX3NlcF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0aG91c2FuZHNfc2VwKTsKKyAgICBpZiAodW5pY29kZSAhPSBOVUxMICYmIHRob3VzYW5kc19zZXBfa2luZCAhPSBraW5kKSB7CisgICAgICAgIGlmICh0aG91c2FuZHNfc2VwX2tpbmQgPCBraW5kKSB7CisgICAgICAgICAgICB0aG91c2FuZHNfc2VwX2RhdGEgPSBfUHlVbmljb2RlX0FzS2luZCh0aG91c2FuZHNfc2VwLCBraW5kKTsKKyAgICAgICAgICAgIGlmICghdGhvdXNhbmRzX3NlcF9kYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRhdGEgPSBfUHlVbmljb2RlX0FzS2luZCh1bmljb2RlLCB0aG91c2FuZHNfc2VwX2tpbmQpOworICAgICAgICAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmICh1bmljb2RlICE9IE5VTEwgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgbGVuID0gYXNjaWlsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MxICopIGRpZ2l0cywgbl9kaWdpdHMsCisgICAgICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywKKyAgICAgICAgICAgICAgICAoUHlfVUNTMSAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuID0gdWNzMWxpYl9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgICAgICAoUHlfVUNTMSopZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MxKilkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIGxlbiA9IHVjczJsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAoUHlfVUNTMiAqKSBkYXRhLCBuX2J1ZmZlciwgKFB5X1VDUzIgKikgZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAoUHlfVUNTMiAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgbGVuID0gdWNzNGxpYl9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgIChQeV9VQ1M0ICopIGRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTNCAqKSBkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgbWluX3dpZHRoLCBncm91cGluZywKKyAgICAgICAgICAgIChQeV9VQ1M0ICopIHRob3VzYW5kc19zZXBfZGF0YSwgdGhvdXNhbmRzX3NlcF9sZW4pOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCAmJiB0aG91c2FuZHNfc2VwX2tpbmQgIT0ga2luZCkgeworICAgICAgICBpZiAodGhvdXNhbmRzX3NlcF9raW5kIDwga2luZCkKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUodGhvdXNhbmRzX3NlcF9kYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlNZW1fRnJlZShkYXRhKTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICAqbWF4Y2hhciA9IDEyNzsKKyAgICAgICAgaWYgKGxlbiAhPSBuX2RpZ2l0cykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRob3VzYW5kc19zZXApKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbGVuOworfQorCiAKIC8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCiAjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCkBAIC02NDY0LDcyICs4OTQxLDEwMiBAQAogICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotLyogX1B5X1VOSUNPREVfTkVYVCBpcyBhIHByaXZhdGUgbWFjcm8gdXNlZCB0byByZXRyaWV2ZSB0aGUgY2hhcmFjdGVyIHBvaW50ZWQKLSAqIGJ5ICdwdHInLCBwb3NzaWJseSBjb21iaW5pbmcgc3Vycm9nYXRlIHBhaXJzIG9uIG5hcnJvdyBidWlsZHMuCi0gKiAncHRyJyBhbmQgJ2VuZCcgbXVzdCBiZSBQeV9VTklDT0RFKiwgd2l0aCAncHRyJyBwb2ludGluZyBhdCB0aGUgY2hhcmFjdGVyCi0gKiB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhbmQgJ2VuZCcgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgotICogKCdlbmQnIGlzIHVzZWQgb24gbmFycm93IGJ1aWxkcyB0byBkZXRlY3QgYSBsb25lIHN1cnJvZ2F0ZSBhdCB0aGUKLSAqIGVuZCBvZiB0aGUgYnVmZmVyIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIHVuY2hhbmdlZC4pCi0gKiBUaGUgcHRyIGFuZCBlbmQgYXJndW1lbnRzIHNob3VsZCBiZSBzaWRlLWVmZmVjdCBmcmVlIGFuZCBwdHIgbXVzdCBhbiBsdmFsdWUuCi0gKiBUaGUgdHlwZSBvZiB0aGUgcmV0dXJuZWQgY2hhciBpcyBhbHdheXMgUHlfVUNTNC4KLSAqCi0gKiBOb3RlOiB0aGUgbWFjcm8gYWR2YW5jZXMgcHRyIHRvIG5leHQgY2hhciwgc28gaXQgbWlnaHQgaGF2ZSBzaWRlLWVmZmVjdHMKLSAqICAgICAgIChlc3BlY2lhbGx5IGlmIHVzZWQgd2l0aCBvdGhlciBtYWNyb3MpLgotICovCi0KLS8qIGhlbHBlciBtYWNyb3MgdXNlZCBieSBfUHlfVU5JQ09ERV9ORVhUICovCi0jZGVmaW5lIF9QeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGNoKSAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRikKLSNkZWZpbmUgX1B5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCi0vKiBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuICovCi0jZGVmaW5lIF9QeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhoaWdoLCBsb3cpICBcCi0gICAgKCgoKChQeV9VQ1M0KShoaWdoKSAmIDB4MDNGRikgPDwgMTApIHwgICAgICBcCi0gICAgICAoKFB5X1VDUzQpKGxvdykgJiAweDAzRkYpKSArIDB4MTAwMDApCi0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSNkZWZpbmUgX1B5X1VOSUNPREVfTkVYVChwdHIsIGVuZCkgKihwdHIpKysKLSNlbHNlCi0jZGVmaW5lIF9QeV9VTklDT0RFX05FWFQocHRyLCBlbmQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICgoKF9QeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKCoocHRyKSkgJiYgKHB0cikgPCAoZW5kKSkgJiYgICAgICBcCi0gICAgICAgIF9QeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoKHB0cilbMV0pKSA/ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgKChwdHIpICs9IDIsX1B5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKChwdHIpWy0yXSwgKHB0cilbLTFdKSkgOiBcCi0gICAgICAgKFB5X1VDUzQpKihwdHIpKyspCi0jZW5kaWYKLQotUHlfc3NpemVfdCBQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfQ291bnQoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlVbmljb2RlT2JqZWN0KiBzdHJfb2JqOwotICAgIFB5VW5pY29kZU9iamVjdCogc3ViX29iajsKKyAgICBQeU9iamVjdCogc3RyX29iajsKKyAgICBQeU9iamVjdCogc3ViX29iajsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IChQeVVuaWNvZGVPYmplY3QqKSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOworICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwogICAgIGlmICghc3RyX29iaikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1Yl9vYmogPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKKyAgICBzdWJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKICAgICBpZiAoIXN1Yl9vYmopIHsKICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX29iai0+bGVuZ3RoKTsKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfY291bnQoCi0gICAgICAgIHN0cl9vYmotPnN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViX29iai0+c3RyLCBzdWJfb2JqLT5sZW5ndGgsCi0gICAgICAgIFBZX1NTSVpFX1RfTUFYCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKSB7CisgICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kKTsKKyAgICB9CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQorICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfY291bnQoCisgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfY291bnQoCisgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzIqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzQqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKICAgICByZXR1cm4gcmVzdWx0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gLTE7CiB9CiAKLVB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKQEAgLTY1NDEsMTkgKzkwNDgsMTUgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KIAotICAgIGlmIChkaXJlY3Rpb24gPiAwKQotICAgICAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3ViKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YiksCi0gICAgICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICAgICApOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWIpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3ViKSwKLSAgICAgICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgICAgICk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoZGlyZWN0aW9uLAorICAgICAgICBzdHIsIHN1Yiwgc3RhcnQsIGVuZAorICAgICAgICApOwogCiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1Yik7CkBAIC02NTYxLDM3ICs5MDY0LDEwNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYwotaW50IHRhaWxtYXRjaChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKLSAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9GaW5kQ2hhcihQeU9iamVjdCAqc3RyLCBQeV9VQ1M0IGNoLAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgaWYgKHN1YnN0cmluZy0+bGVuZ3RoID09IDApCisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gLTI7CisgICAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorICAgIGlmIChlbmQgPiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKQorICAgICAgICBlbmQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIHJlc3VsdCA9IGZpbmRjaGFyKFB5VW5pY29kZV8xQllURV9EQVRBKHN0cikgKyBraW5kKnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgIGtpbmQsIGVuZC1zdGFydCwgY2gsIGRpcmVjdGlvbik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgcmVzdWx0OworfQorCitzdGF0aWMgaW50Cit0YWlsbWF0Y2goUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgIGludCBkaXJlY3Rpb24pCit7CisgICAgaW50IGtpbmRfc2VsZjsKKyAgICBpbnQga2luZF9zdWI7CisgICAgdm9pZCAqZGF0YV9zZWxmOworICAgIHZvaWQgKmRhdGFfc3ViOworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IGVuZF9zdWI7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpID09IDApCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc2VsZi0+bGVuZ3RoKTsKLSAgICBlbmQgLT0gc3Vic3RyaW5nLT5sZW5ndGg7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOworICAgIGVuZCAtPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIGlmIChlbmQgPCBzdGFydCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZGlyZWN0aW9uID4gMCkgewotICAgICAgICBpZiAoUHlfVU5JQ09ERV9NQVRDSChzZWxmLCBlbmQsIHN1YnN0cmluZykpCisgICAga2luZF9zZWxmID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YV9zZWxmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAga2luZF9zdWIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGRhdGFfc3ViID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBlbmRfc3ViID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSAtIDE7CisKKyAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgb2Zmc2V0ID0gZW5kOworICAgIGVsc2UKKyAgICAgICAgb2Zmc2V0ID0gc3RhcnQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCkgPT0KKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCAwKSAmJgorICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kX3NlbGYsIGRhdGFfc2VsZiwgb2Zmc2V0ICsgZW5kX3N1YikgPT0KKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zdWIsIGRhdGFfc3ViLCBlbmRfc3ViKSkgeworICAgICAgICAvKiBJZiBib3RoIGFyZSBvZiB0aGUgc2FtZSBraW5kLCBtZW1jbXAgaXMgc3VmZmljaWVudCAqLworICAgICAgICBpZiAoa2luZF9zZWxmID09IGtpbmRfc3ViKSB7CisgICAgICAgICAgICByZXR1cm4gISBtZW1jbXAoKGNoYXIgKilkYXRhX3NlbGYgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2Zmc2V0ICogUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZykpOworICAgICAgICB9CisgICAgICAgIC8qIG90aGVyd2lzZSB3ZSBoYXZlIHRvIGNvbXBhcmUgZWFjaCBjaGFyYWN0ZXIgYnkgZmlyc3QgYWNjZXNpbmcgaXQgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBkbyBub3QgbmVlZCB0byBjb21wYXJlIDAgYW5kIGxlbihzdWJzdHJpbmcpLTEgYmVjYXVzZQorICAgICAgICAgICAgICAgdGhlIGlmIHN0YXRlbWVudCBhYm92ZSBlbnN1cmVkIGFscmVhZHkgdGhhdCB0aGV5IGFyZSBlcXVhbAorICAgICAgICAgICAgICAgd2hlbiB3ZSBlbmQgdXAgaGVyZS4gKi8KKyAgICAgICAgICAgIC8qIFRPRE86IGhvbm9yIGRpcmVjdGlvbiBhbmQgZG8gYSBmb3J3YXJkIG9yIGJhY2t3YXJkcyBzZWFyY2ggKi8KKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBlbmRfc3ViOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCArIGkpICE9CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgaSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFB5X1VOSUNPREVfTUFUQ0goc2VsZiwgc3RhcnQsIHN1YnN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiAwOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9UYWlsbWF0Y2goUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKQEAgLTY2MDQsOCArOTE3NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goKFB5VW5pY29kZU9iamVjdCAqKXN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN1YnN0ciwKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgUHlfREVDUkVGKHN1YnN0cik7CkBAIC02NjE1LDE2OCArOTE4NCwzMTIgQEAKIC8qIEFwcGx5IGZpeGZjdCBmaWx0ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0IHNlbGYgYW5kIHJldHVybiBhCiAgICByZWZlcmVuY2UgdG8gdGhlIG1vZGlmaWVkIG9iamVjdCAqLwogCi1zdGF0aWMKLVB5T2JqZWN0ICpmaXh1cChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgaW50ICgqZml4ZmN0KShQeVVuaWNvZGVPYmplY3QgKnMpKQorc3RhdGljIFB5T2JqZWN0ICoKK2ZpeHVwKFB5T2JqZWN0ICpzZWxmLAorICAgICAgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKQogeworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X1VDUzQgbWF4Y2hhcl9vbGQsIG1heGNoYXJfbmV3ID0gMDsKKyAgICBQeU9iamVjdCAqdjsKIAotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQotICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgdSA9IF9QeVVuaWNvZGVfQ29weShzZWxmKTsKICAgICBpZiAodSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYXhjaGFyX29sZCA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKIAotICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKKyAgICAvKiBmaXggZnVuY3Rpb25zIHJldHVybiB0aGUgbmV3IG1heGltdW0gY2hhcmFjdGVyIGluIGEgc3RyaW5nLAorICAgICAgIGlmIHRoZSBraW5kIG9mIHRoZSByZXN1bHRpbmcgdW5pY29kZSBvYmplY3QgZG9lcyBub3QgY2hhbmdlLAorICAgICAgIGV2ZXJ5dGhpbmcgaXMgZmluZS4gIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgc3RyaW5nIGtpbmQKKyAgICAgICBhbmQgcmUtcnVuIHRoZSBmaXggZnVuY3Rpb24uICovCisgICAgbWF4Y2hhcl9uZXcgPSBmaXhmY3QodSk7CiAKLSAgICBpZiAoIWZpeGZjdCh1KSAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICAvKiBmaXhmY3Qgc2hvdWxkIHJldHVybiBUUlVFIGlmIGl0IG1vZGlmaWVkIHRoZSBidWZmZXIuIElmCi0gICAgICAgICAgIEZBTFNFLCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIGJ1ZmZlciBpbnN0ZWFkCi0gICAgICAgICAgICh0byBzYXZlIHNwYWNlLCBub3QgdGltZSkgKi8KLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIGlmIChtYXhjaGFyX25ldyA9PSAwKSB7CisgICAgICAgIC8qIG5vIGNoYW5nZXMgKi87CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHU7CisgICAgfQorCisgICAgbWF4Y2hhcl9uZXcgPSBhbGlnbl9tYXhjaGFyKG1heGNoYXJfbmV3KTsKKworICAgIGlmIChtYXhjaGFyX25ldyA9PSBtYXhjaGFyX29sZCkKKyAgICAgICAgcmV0dXJuIHU7CisKKyAgICAvKiBJbiBjYXNlIHRoZSBtYXhpbXVtIGNoYXJhY3RlciBjaGFuZ2VkLCB3ZSBuZWVkIHRvCisgICAgICAgY29udmVydCB0aGUgc3RyaW5nIHRvIHRoZSBuZXcgY2F0ZWdvcnkuICovCisgICAgdiA9IFB5VW5pY29kZV9OZXcoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNoYXJfbmV3KTsKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBpZiAobWF4Y2hhcl9uZXcgPiBtYXhjaGFyX29sZCkgeworICAgICAgICAvKiBJZiB0aGUgbWF4Y2hhciBpbmNyZWFzZWQgc28gdGhhdCB0aGUga2luZCBjaGFuZ2VkLCBub3QgYWxsCisgICAgICAgICAgIGNoYXJhY3RlcnMgYXJlIHJlcHJlc2VudGFibGUgYW55bW9yZSBhbmQgd2UgbmVlZCB0byBmaXggdGhlCisgICAgICAgICAgIHN0cmluZyBhZ2Fpbi4gVGhpcyBvbmx5IGhhcHBlbnMgaW4gdmVyeSBmZXcgY2FzZXMuICovCisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICAgICAgbWF4Y2hhcl9vbGQgPSBmaXhmY3Qodik7CisgICAgICAgIGFzc2VydChtYXhjaGFyX29sZCA+IDAgJiYgbWF4Y2hhcl9vbGQgPD0gbWF4Y2hhcl9uZXcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpOworICAgIH0KKyAgICBQeV9ERUNSRUYodSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKLXN0YXRpYwotaW50IGZpeHVwcGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBQeU9iamVjdCAqCithc2NpaV91cHBlcl9vcl9sb3dlcihQeU9iamVjdCAqc2VsZiwgaW50IGxvd2VyKQogewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBjaGFyICpyZXNkYXRhLCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2g7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhsZW4sIDEyNyk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXNkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBpZiAobG93ZXIpCisgICAgICAgIF9QeV9ieXRlc19sb3dlcihyZXNkYXRhLCBkYXRhLCBsZW4pOworICAgIGVsc2UKKyAgICAgICAgX1B5X2J5dGVzX3VwcGVyKHJlc2RhdGEsIGRhdGEsIGxlbik7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgICAgICBjaCA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgIGlmIChjaCAhPSAqcykgewotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgICAgICpzID0gY2g7CitzdGF0aWMgUHlfVUNTNAoraGFuZGxlX2NhcGl0YWxfc2lnbWEoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9zc2l6ZV90IGkpCit7CisgICAgUHlfc3NpemVfdCBqOworICAgIGludCBmaW5hbF9zaWdtYTsKKyAgICBQeV9VQ1M0IGM7CisgICAgLyogVSswM0EzIGlzIGluIHRoZSBGaW5hbF9TaWdtYSBjb250ZXh0IHdoZW4sIGl0IGlzIGZvdW5kIGxpa2UgdGhpczoKKworICAgICBccHtjYXNlZH1ccHtjYXNlLWlnbm9yYWJsZX0qVSswM0EzIShccHtjYXNlLWlnbm9yYWJsZX0qXHB7Y2FzZWR9KQorCisgICAgd2hlcmUgISBpcyBhIG5lZ2F0aW9uIGFuZCBccHt4eHh9IGlzIGEgY2hhcmFjdGVyIHdpdGggcHJvcGVydHkgeHh4LgorICAgICovCisgICAgZm9yIChqID0gaSAtIDE7IGogPj0gMDsgai0tKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZShjKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBmaW5hbF9zaWdtYSA9IGogPj0gMCAmJiBfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CisgICAgaWYgKGZpbmFsX3NpZ21hKSB7CisgICAgICAgIGZvciAoaiA9IGkgKyAxOyBqIDwgbGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoYykpCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcysrOworICAgICAgICBmaW5hbF9zaWdtYSA9IGogPT0gbGVuZ3RoIHx8ICFfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CiAgICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gKGZpbmFsX3NpZ21hKSA/IDB4M0MyIDogMHgzQzM7CiB9CiAKLXN0YXRpYwotaW50IGZpeGxvd2VyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBpbnQKK2xvd2VyX3VjczQoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9zc2l6ZV90IGksCisgICAgICAgICAgIFB5X1VDUzQgYywgUHlfVUNTNCAqbWFwcGVkKQogewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CisgICAgLyogT2JzY3VyZSBzcGVjaWFsIGNhc2UuICovCisgICAgaWYgKGMgPT0gMHgzQTMpIHsKKyAgICAgICAgbWFwcGVkWzBdID0gaGFuZGxlX2NhcGl0YWxfc2lnbWEoa2luZCwgZGF0YSwgbGVuZ3RoLCBpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlX1RvTG93ZXJGdWxsKGMsIG1hcHBlZCk7Cit9CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2g7CitzdGF0aWMgUHlfc3NpemVfdAorZG9fY2FwaXRhbGl6ZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOworICAgIGludCBuX3JlcywgajsKKyAgICBQeV9VQ1M0IGMsIG1hcHBlZFszXTsKIAotICAgICAgICBjaCA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgIGlmIChjaCAhPSAqcykgewotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgICAgICpzID0gY2g7CisgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChjLCBtYXBwZWQpOworICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgIH0KKyAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKICAgICB9Ci0KLSAgICByZXR1cm4gc3RhdHVzOworICAgIHJldHVybiBrOwogfQogCi1zdGF0aWMKLWludCBmaXhzd2FwY2FzZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzZWxmLT5sZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IHNlbGYtPnN0cjsKLSAgICBpbnQgc3RhdHVzID0gMDsKK3N0YXRpYyBQeV9zc2l6ZV90Citkb19zd2FwY2FzZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikgeworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CiAKLSAgICB3aGlsZSAobGVuLS0gPiAwKSB7Ci0gICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKFB5X1VOSUNPREVfSVNMT1dFUigqcykpIHsKLSAgICAgICAgICAgICpzID0gUHlfVU5JQ09ERV9UT1VQUEVSKCpzKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjKSkgeworICAgICAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKICAgICAgICAgfQotICAgICAgICBzKys7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKLX0KLQotc3RhdGljCi1pbnQgZml4Y2FwaXRhbGl6ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBzZWxmLT5sZW5ndGg7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IHNlbGYtPnN0cjsKLSAgICBpbnQgc3RhdHVzID0gMDsKLQotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCFQeV9VTklDT0RFX0lTVVBQRVIoKnMpKSB7Ci0gICAgICAgICpzID0gUHlfVU5JQ09ERV9UT1VQUEVSKCpzKTsKLSAgICAgICAgc3RhdHVzID0gMTsKLSAgICB9Ci0gICAgcysrOwotICAgIHdoaWxlICgtLWxlbiA+IDApIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTTE9XRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9MT1dFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOworICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoYykpIHsKKyAgICAgICAgICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChjLCBtYXBwZWQpOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuX3JlcyA9IDE7CisgICAgICAgICAgICBtYXBwZWRbMF0gPSBjOworICAgICAgICB9CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gazsKIH0KIAotc3RhdGljCi1pbnQgZml4dGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQorc3RhdGljIFB5X3NzaXplX3QKK2RvX3VwcGVyX29yX2xvd2VyKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLAorICAgICAgICAgICAgICAgICAgUHlfVUNTNCAqbWF4Y2hhciwgaW50IGxvd2VyKQogewotICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSksIG1hcHBlZFszXTsKKyAgICAgICAgaW50IG5fcmVzLCBqOworICAgICAgICBpZiAobG93ZXIpCisgICAgICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fcmVzOyBqKyspIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gazsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2RvX3VwcGVyKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIHJldHVybiBkb191cHBlcl9vcl9sb3dlcihraW5kLCBkYXRhLCBsZW5ndGgsIHJlcywgbWF4Y2hhciwgMCk7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb19sb3dlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICByZXR1cm4gZG9fdXBwZXJfb3JfbG93ZXIoa2luZCwgZGF0YSwgbGVuZ3RoLCByZXMsIG1heGNoYXIsIDEpOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fY2FzZWZvbGQoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgUHlfVUNTNCBtYXBwZWRbM107CisgICAgICAgIGludCBqLCBuX3JlcyA9IF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKGMsIG1hcHBlZCk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb190aXRsZShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOwogICAgIGludCBwcmV2aW91c19pc19jYXNlZDsKIAotICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IFB5X1VOSUNPREVfVE9USVRMRSgqcCk7Ci0gICAgICAgIGlmICgqcCAhPSBjaCkgewotICAgICAgICAgICAgKnAgPSBjaDsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKLSAgICBmb3IgKDsgcCA8IGU7IHArKykgewotICAgICAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFIGNoID0gKnA7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBQeV9VQ1M0IG1hcHBlZFszXTsKKyAgICAgICAgaW50IG5fcmVzLCBqOwogCiAgICAgICAgIGlmIChwcmV2aW91c19pc19jYXNlZCkKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9UT0xPV0VSKGNoKTsKKyAgICAgICAgICAgIG5fcmVzID0gbG93ZXJfdWNzNChraW5kLCBkYXRhLCBsZW5ndGgsIGksIGMsIG1hcHBlZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9UT1RJVExFKGNoKTsKKyAgICAgICAgICAgIG5fcmVzID0gX1B5VW5pY29kZV9Ub1RpdGxlRnVsbChjLCBtYXBwZWQpOwogCi0gICAgICAgIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoY2gpIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQotICAgICAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAxOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKworICAgICAgICBwcmV2aW91c19pc19jYXNlZCA9IF9QeVVuaWNvZGVfSXNDYXNlZChjKTsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjYXNlX29wZXJhdGlvbihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKCpwZXJmb3JtKShpbnQsIHZvaWQgKiwgUHlfc3NpemVfdCwgUHlfVUNTNCAqLCBQeV9VQ1M0ICopKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBuZXdsZW5ndGggPSAwOworICAgIGludCBraW5kLCBvdXRraW5kOworICAgIHZvaWQgKmRhdGEsICpvdXRkYXRhOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDAsICp0bXAsICp0bXBlbmQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHNlbGYpKTsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgdG1wID0gUHlNZW1fTUFMTE9DKHNpemVvZihQeV9VQ1M0KSAqIDMgKiBsZW5ndGgpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgbmV3bGVuZ3RoID0gcGVyZm9ybShraW5kLCBkYXRhLCBsZW5ndGgsIHRtcCwgJm1heGNoYXIpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobmV3bGVuZ3RoLCBtYXhjaGFyKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIGdvdG8gbGVhdmU7CisgICAgdG1wZW5kID0gdG1wICsgbmV3bGVuZ3RoOworICAgIG91dGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgIG91dGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgIHN3aXRjaCAob3V0a2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MxLCB0bXAsIHRtcGVuZCwgb3V0ZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MyLCB0bXAsIHRtcGVuZCwgb3V0ZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG1lbWNweShvdXRkYXRhLCB0bXAsIHNpemVvZihQeV9VQ1M0KSAqIG5ld2xlbmd0aCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICBsZWF2ZToKKyAgICBQeU1lbV9GUkVFKHRtcCk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgogUHlVbmljb2RlX0pvaW4oUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKnNlcSkKIHsKLSAgICBjb25zdCBQeV9VTklDT0RFIGJsYW5rID0gJyAnOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnNlcCA9ICZibGFuazsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbiA9IDE7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCi0gICAgUHlfVU5JQ09ERSAqcmVzX3A7ICAgICAgIC8qIHBvaW50ZXIgdG8gZnJlZSBieXRlIGluIHJlcydzIHN0cmluZyBhcmVhICovCisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzZXBsZW47CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KICAgICBQeU9iamVjdCAqZnNlcTsgICAgICAgICAgLyogUHlTZXF1ZW5jZV9GYXN0KHNlcSkgKi8KICAgICBQeV9zc2l6ZV90IHNlcWxlbjsgICAgICAgLyogbGVuKGZzZXEpIC0tIG51bWJlciBvZiBpdGVtcyBpbiBzZXF1ZW5jZSAqLwogICAgIFB5T2JqZWN0ICoqaXRlbXM7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBzeiwgaTsKKyAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKKyAgICBpbnQgdXNlX21lbWNweTsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxhc3Rfb2JqOworICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKIAogICAgIGZzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxLCAiIik7CiAgICAgaWYgKGZzZXEgPT0gTlVMTCkgewpAQCAtNjc5MCwyNCArOTUwMywzNCBAQAogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmc2VxKTsKICAgICAvKiBJZiBlbXB0eSBzZXF1ZW5jZSwgcmV0dXJuIHUiIi4gKi8KICAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgcmVzID0gX1B5VW5pY29kZV9OZXcoMCk7ICAvKiBlbXB0eSBzZXF1ZW5jZTsgcmV0dXJuIHUiIiAqLwotICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXMgPSB1bmljb2RlX2VtcHR5OworICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KLSAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKKwogICAgIC8qIElmIHNpbmdsZXRvbiBzZXF1ZW5jZSB3aXRoIGFuIGV4YWN0IFVuaWNvZGUsIHJldHVybiB0aGF0LiAqLworICAgIGxhc3Rfb2JqID0gTlVMTDsKKyAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKICAgICBpZiAoc2VxbGVuID09IDEpIHsKLSAgICAgICAgaXRlbSA9IGl0ZW1zWzBdOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbSkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKLSAgICAgICAgICAgIHJlcyA9IChQeVVuaWNvZGVPYmplY3QgKilpdGVtOwotICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbXNbMF0pKSB7CisgICAgICAgICAgICByZXMgPSBpdGVtc1swXTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGZzZXEpOworICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQorICAgICAgICBzZXBsZW4gPSAwOworICAgICAgICBtYXhjaGFyID0gMDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIFNldCB1cCBzZXAgYW5kIHNlcGxlbiAqLwogICAgICAgICBpZiAoc2VwYXJhdG9yID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNlcCA9ICZibGFuazsKKyAgICAgICAgICAgIC8qIGZhbGwgYmFjayB0byBhIGJsYW5rIHNwYWNlIHNlcGFyYXRvciAqLworICAgICAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcgJyk7CisgICAgICAgICAgICBpZiAoIXNlcCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBzZXBsZW4gPSAxOworICAgICAgICAgICAgbWF4Y2hhciA9IDMyOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc2VwYXJhdG9yKSkgewpAQCAtNjgxNyw5ICs5NTQwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VwYXJhdG9yKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VwYXJhdG9yKTsKLSAgICAgICAgICAgIHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZXBhcmF0b3IpOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBhcmF0b3IpKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHNlcCA9IHNlcGFyYXRvcjsKKyAgICAgICAgICAgIHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcGFyYXRvcik7CisgICAgICAgICAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlcGFyYXRvcik7CisgICAgICAgICAgICAvKiBpbmMgcmVmY291bnQgdG8ga2VlcCB0aGlzIGNvZGUgcGF0aCBzeW1tZXRyaWMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgIGFib3ZlIGNhc2Ugb2YgYSBibGFuayBzZXBhcmF0b3IgKi8KKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZXApOwogICAgICAgICB9CisgICAgICAgIGxhc3Rfb2JqID0gc2VwOwogICAgIH0KIAogICAgIC8qIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gdGhpbmdzIHRvIGpvaW4sIG9yIGVsc2Ugd2UgaGF2ZSBhIHN1YmNsYXNzCkBAIC02ODI4LDYgKzk1NTgsMTEgQEAKICAgICAgKiBuZWVkIChzeiksIGFuZCBzZWUgd2hldGhlciBhbGwgYXJndW1lbnQgYXJlIHN0cmluZ3MuCiAgICAgICovCiAgICAgc3ogPSAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgdXNlX21lbWNweSA9IDA7CisjZWxzZQorICAgIHVzZV9tZW1jcHkgPSAxOworI2VuZGlmCiAgICAgZm9yIChpID0gMDsgaSA8IHNlcWxlbjsgaSsrKSB7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3Qgb2xkX3N6ID0gc3o7CiAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTsKQEAgLTY4MzgsNyArOTU3MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGksIFB5X1RZUEUoaXRlbSktPnRwX25hbWUpOwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9Ci0gICAgICAgIHN6ICs9IFB5VW5pY29kZV9HRVRfU0laRShpdGVtKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpdGVtKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgc3ogKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CisgICAgICAgIGl0ZW1fbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShpdGVtKTsKKyAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGl0ZW1fbWF4Y2hhcik7CiAgICAgICAgIGlmIChpICE9IDApCiAgICAgICAgICAgICBzeiArPSBzZXBsZW47CiAgICAgICAgIGlmIChzeiA8IG9sZF9zeiB8fCBzeiA+IFBZX1NTSVpFX1RfTUFYKSB7CkBAIC02ODQ2LDI2NiArOTU4NSw3MjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiam9pbigpIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHVzZV9tZW1jcHkgJiYgbGFzdF9vYmogIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKGxhc3Rfb2JqKSAhPSBQeVVuaWNvZGVfS0lORChpdGVtKSkKKyAgICAgICAgICAgICAgICB1c2VfbWVtY3B5ID0gMDsKKyAgICAgICAgfQorICAgICAgICBsYXN0X29iaiA9IGl0ZW07CiAgICAgfQogCi0gICAgcmVzID0gX1B5VW5pY29kZV9OZXcoc3opOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc3osIG1heGNoYXIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgLyogQ2F0ZW5hdGUgZXZlcnl0aGluZy4gKi8KLSAgICByZXNfcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7CisjaWZkZWYgUHlfREVCVUcKKyAgICB1c2VfbWVtY3B5ID0gMDsKKyNlbHNlCisgICAgaWYgKHVzZV9tZW1jcHkpIHsKKyAgICAgICAgcmVzX2RhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgaWYgKHNlcGxlbiAhPSAwKQorICAgICAgICAgICAgc2VwX2RhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZXApOworICAgIH0KKyNlbmRpZgorICAgIGZvciAoaSA9IDAsIHJlc19vZmZzZXQgPSAwOyBpIDwgc2VxbGVuOyArK2kpIHsKICAgICAgICAgUHlfc3NpemVfdCBpdGVtbGVuOwogICAgICAgICBpdGVtID0gaXRlbXNbaV07Ci0gICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7CiAgICAgICAgIC8qIENvcHkgaXRlbSwgYW5kIG1heWJlIHRoZSBzZXBhcmF0b3IuICovCi0gICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocmVzX3AsIHNlcCwgc2VwbGVuKTsKLSAgICAgICAgICAgIHJlc19wICs9IHNlcGxlbjsKKyAgICAgICAgaWYgKGkgJiYgc2VwbGVuICE9IDApIHsKKyAgICAgICAgICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIHNlcGxlbik7CisgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIHNlcGxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgcmVzX29mZnNldCwgc2VwLCAwLCBzZXBsZW4pOworICAgICAgICAgICAgICAgIHJlc19vZmZzZXQgKz0gc2VwbGVuOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIFB5X1VOSUNPREVfQ09QWShyZXNfcCwgUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSksIGl0ZW1sZW4pOwotICAgICAgICByZXNfcCArPSBpdGVtbGVuOworICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CisgICAgICAgIGlmIChpdGVtbGVuICE9IDApIHsKKyAgICAgICAgICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShpdGVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIGl0ZW1sZW4pOworICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBpdGVtbGVuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCByZXNfb2Zmc2V0LCBpdGVtLCAwLCBpdGVtbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfb2Zmc2V0ICs9IGl0ZW1sZW47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKHVzZV9tZW1jcHkpCisgICAgICAgIGFzc2VydChyZXNfZGF0YSA9PSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICArIGtpbmQgKiBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKKyAgICBlbHNlCisgICAgICAgIGFzc2VydChyZXNfb2Zmc2V0ID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcykpOwogCi0gIERvbmU6CiAgICAgUHlfREVDUkVGKGZzZXEpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXM7CisgICAgUHlfWERFQ1JFRihzZXApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMKLVB5VW5pY29kZU9iamVjdCAqcGFkKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGZpbGwpCisjZGVmaW5lIEZJTEwoa2luZCwgZGF0YSwgdmFsdWUsIHN0YXJ0LCBsZW5ndGgpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgUHlfc3NpemVfdCBpXyA9IDA7IFwKKyAgICAgICAgYXNzZXJ0KGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpOyBcCisgICAgICAgIHN3aXRjaCAoKGtpbmQpKSB7IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogeyBcCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICogdG9fID0gKHVuc2lnbmVkIGNoYXIgKikoKGRhdGEpKSArIChzdGFydCk7IFwKKyAgICAgICAgICAgIG1lbXNldCh0b18sICh1bnNpZ25lZCBjaGFyKXZhbHVlLCAobGVuZ3RoKSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgIFB5X1VDUzIgKiB0b18gPSAoUHlfVUNTMiAqKSgoZGF0YSkpICsgKHN0YXJ0KTsgXAorICAgICAgICAgICAgZm9yICg7IGlfIDwgKGxlbmd0aCk7ICsraV8sICsrdG9fKSAqdG9fID0gKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgUHlfVUNTNCAqIHRvXyA9IChQeV9VQ1M0ICopKChkYXRhKSkgKyAoc3RhcnQpOyBcCisgICAgICAgICAgICBmb3IgKDsgaV8gPCAobGVuZ3RoKTsgKytpXywgKyt0b18pICp0b18gPSAodmFsdWUpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICBkZWZhdWx0OiBhc3NlcnQoMCk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUgKDApCisKK3ZvaWQKK19QeVVuaWNvZGVfRmFzdEZpbGwoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhcikKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgY29uc3QgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgY29uc3Qgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGFzc2VydCh1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpOworICAgIGFzc2VydChmaWxsX2NoYXIgPD0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoc3RhcnQgPj0gMCk7CisgICAgYXNzZXJ0KHN0YXJ0ICsgbGVuZ3RoIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGxfY2hhciwgc3RhcnQsIGxlbmd0aCk7Cit9CisKK1B5X3NzaXplX3QKK1B5VW5pY29kZV9GaWxsKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgIFB5X1VDUzQgZmlsbF9jaGFyKQoreworICAgIFB5X3NzaXplX3QgbWF4bGVuOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh1bmljb2RlX2NoZWNrX21vZGlmaWFibGUodW5pY29kZSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGZpbGxfY2hhciA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsbCBjaGFyYWN0ZXIgaXMgYmlnZ2VyIHRoYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgc3RyaW5nIG1heGltdW0gY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtYXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSAtIHN0YXJ0OworICAgIGxlbmd0aCA9IFB5X01JTihtYXhsZW4sIGxlbmd0aCk7CisgICAgaWYgKGxlbmd0aCA8PSAwKQorICAgICAgICByZXR1cm4gMDsKKworICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwodW5pY29kZSwgc3RhcnQsIGxlbmd0aCwgZmlsbF9jaGFyKTsKKyAgICByZXR1cm4gbGVuZ3RoOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGFkKFB5T2JqZWN0ICpzZWxmLAorICAgIFB5X3NzaXplX3QgbGVmdCwKKyAgICBQeV9zc2l6ZV90IHJpZ2h0LAorICAgIFB5X1VDUzQgZmlsbCkKK3sKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIGlmIChsZWZ0IDwgMCkKICAgICAgICAgbGVmdCA9IDA7CiAgICAgaWYgKHJpZ2h0IDwgMCkKICAgICAgICAgcmlnaHQgPSAwOwogCi0gICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfQorICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKIAotICAgIGlmIChsZWZ0ID4gUFlfU1NJWkVfVF9NQVggLSBzZWxmLT5sZW5ndGggfHwKLSAgICAgICAgcmlnaHQgPiBQWV9TU0laRV9UX01BWCAtIChsZWZ0ICsgc2VsZi0+bGVuZ3RoKSkgeworICAgIGlmIChsZWZ0ID4gUFlfU1NJWkVfVF9NQVggLSBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSB8fAorICAgICAgICByaWdodCA+IFBZX1NTSVpFX1RfTUFYIC0gKGxlZnQgKyBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJwYWRkZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB1ID0gX1B5VW5pY29kZV9OZXcobGVmdCArIHNlbGYtPmxlbmd0aCArIHJpZ2h0KTsKLSAgICBpZiAodSkgewotICAgICAgICBpZiAobGVmdCkKLSAgICAgICAgICAgIFB5X1VOSUNPREVfRklMTCh1LT5zdHIsIGZpbGwsIGxlZnQpOwotICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyICsgbGVmdCwgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOwotICAgICAgICBpZiAocmlnaHQpCi0gICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwodS0+c3RyICsgbGVmdCArIHNlbGYtPmxlbmd0aCwgZmlsbCwgcmlnaHQpOwotICAgIH0KKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpOworICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBmaWxsKTsKKyAgICB1ID0gUHlVbmljb2RlX05ldyhsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgKyByaWdodCwgbWF4Y2hhcik7CisgICAgaWYgKCF1KQorICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgaWYgKGxlZnQpCisgICAgICAgIEZJTEwoa2luZCwgZGF0YSwgZmlsbCwgMCwgbGVmdCk7CisgICAgaWYgKHJpZ2h0KQorICAgICAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGwsIGxlZnQgKyBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSwgcmlnaHQpOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHUsIGxlZnQsIHNlbGYsIDAsIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKICAgICByZXR1cm4gdTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9TcGxpdGxpbmVzKFB5T2JqZWN0ICpzdHJpbmcsIGludCBrZWVwZW5kcykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9TcGxpdGxpbmVzKFB5T2JqZWN0ICpzdHJpbmcsIGludCBrZWVwZW5kcykKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKIAogICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cmluZyk7CiAgICAgaWYgKHN0cmluZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHN0cmluZyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGxpc3QgPSBzdHJpbmdsaWJfc3BsaXRsaW5lcygKLSAgICAgICAgKFB5T2JqZWN0Kikgc3RyaW5nLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpLAotICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyaW5nKSwga2VlcGVuZHMpOwotCisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJpbmcpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJpbmcpKQorICAgICAgICAgICAgbGlzdCA9IGFzY2lpbGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGlzdCA9IHVjczFsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgICAgICBzdHJpbmcsIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBsaXN0ID0gdWNzMmxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMkJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBsaXN0ID0gdWNzNGxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfNEJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSwga2VlcGVuZHMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGxpc3QgPSAwOworICAgIH0KICAgICBQeV9ERUNSRUYoc3RyaW5nKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqc3BsaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlPYmplY3QgKgorc3BsaXQoUHlPYmplY3QgKnNlbGYsCisgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAorICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKKyAgICBQeU9iamVjdCogb3V0OworCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0X3doaXRlc3BhY2UoCi0gICAgICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIG1heGNvdW50Ci0gICAgICAgICAgICApOworICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHNlbGYpKSB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICAgICAgICAgIHJldHVybiBhc2NpaWxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMkJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0KAotICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsCi0gICAgICAgIHN1YnN0cmluZy0+c3RyLCBzdWJzdHJpbmctPmxlbmd0aCwKLSAgICAgICAgbWF4Y291bnQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CisgICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9zcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQgPSB1Y3MxbGliX3NwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3NwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgb3V0ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIG91dDsKIH0KIAotc3RhdGljCi1QeU9iamVjdCAqcnNwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlPYmplY3QgKgorcnNwbGl0KFB5T2JqZWN0ICpzZWxmLAorICAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCisgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKKyAgICBQeU9iamVjdCogb3V0OworCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdF93aGl0ZXNwYWNlKAotICAgICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBtYXhjb3VudAotICAgICAgICAgICAgKTsKKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsICBQeVVuaWNvZGVfNEJZVEVfREFUQShzZWxmKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICApOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAotICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0KAotICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCAgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsCi0gICAgICAgIHN1YnN0cmluZy0+c3RyLCBzdWJzdHJpbmctPmxlbmd0aCwKLSAgICAgICAgbWF4Y291bnQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CisgICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9yc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9yc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzMmxpYl9yc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3JzcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG91dCA9IE5VTEw7CisgICAgfQorICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnJlcGxhY2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdHIxLAotICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICpzdHIyLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3N0YXRpYyBQeV9zc2l6ZV90CithbnlsaWJfZmluZChpbnQga2luZCwgUHlPYmplY3QgKnN0cjEsIHZvaWQgKmJ1ZjEsIFB5X3NzaXplX3QgbGVuMSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIyLCB2b2lkICpidWYyLCBQeV9zc2l6ZV90IGxlbjIsIFB5X3NzaXplX3Qgb2Zmc2V0KQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cjEpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdHIyKSkKKyAgICAgICAgICAgIHJldHVybiBhc2NpaWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzMmxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgIH0KKyAgICBhc3NlcnQoMCk7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorYW55bGliX2NvdW50KGludCBraW5kLCBQeU9iamVjdCAqc3N0ciwgdm9pZCogc2J1ZiwgUHlfc3NpemVfdCBzbGVuLAorICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIxLCB2b2lkICpidWYxLCBQeV9zc2l6ZV90IGxlbjEsIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzc3RyKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3RyMSkpCisgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cjEsCisgICAgICAgIFB5T2JqZWN0ICpzdHIyLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIFB5T2JqZWN0ICp1OworICAgIGNoYXIgKnNidWYgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBjaGFyICpidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyMSk7CisgICAgY2hhciAqYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN0cjIpOworICAgIGludCBzcmVsZWFzZSA9IDAsIHJlbGVhc2UxID0gMCwgcmVsZWFzZTIgPSAwOworICAgIGludCBza2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGludCBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cjEpOworICAgIGludCBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN0cjIpOworICAgIFB5X3NzaXplX3Qgc2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIFB5X3NzaXplX3QgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjEpOworICAgIFB5X3NzaXplX3QgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpOworICAgIGludCBtYXlzaHJpbms7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyX3N0cjI7CiAKICAgICBpZiAobWF4Y291bnQgPCAwKQogICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgc2VsZi0+bGVuZ3RoID09IDApCisgICAgZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBzbGVuID09IDApCiAgICAgICAgIGdvdG8gbm90aGluZzsKIAotICAgIGlmIChzdHIxLT5sZW5ndGggPT0gc3RyMi0+bGVuZ3RoKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICBpZiAoc3RyMSA9PSBzdHIyKQorICAgICAgICBnb3RvIG5vdGhpbmc7CisgICAgaWYgKHNraW5kIDwga2luZDEpCisgICAgICAgIC8qIHN1YnN0cmluZyB0b28gd2lkZSB0byBiZSBwcmVzZW50ICovCisgICAgICAgIGdvdG8gbm90aGluZzsKKworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc2VsZik7CisgICAgbWF4Y2hhcl9zdHIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cjIpOworICAgIC8qIFJlcGxhY2luZyBzdHIxIHdpdGggc3RyMiBtYXkgY2F1c2UgYSBtYXhjaGFyIHJlZHVjdGlvbiBpbiB0aGUKKyAgICAgICByZXN1bHQgc3RyaW5nLiAqLworICAgIG1heXNocmluayA9IChtYXhjaGFyX3N0cjIgPCBtYXhjaGFyKTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgbWF4Y2hhcl9zdHIyKTsKKworICAgIGlmIChsZW4xID09IGxlbjIpIHsKICAgICAgICAgLyogc2FtZSBsZW5ndGggKi8KLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA9PSAwKQorICAgICAgICBpZiAobGVuMSA9PSAwKQogICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICBpZiAoc3RyMS0+bGVuZ3RoID09IDEpIHsKKyAgICAgICAgaWYgKGxlbjEgPT0gMSkgewogICAgICAgICAgICAgLyogcmVwbGFjZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICBQeV9VTklDT0RFIHUxLCB1MjsKLSAgICAgICAgICAgIGlmICghZmluZGNoYXIoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgsIHN0cjEtPnN0clswXSkpCisgICAgICAgICAgICBQeV9VQ1M0IHUxLCB1MjsKKyAgICAgICAgICAgIGludCBya2luZDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaW5kZXgsIHBvczsKKyAgICAgICAgICAgIGNoYXIgKnNyYzsKKworICAgICAgICAgICAgdTEgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0cjEsIDApOworICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc2J1ZiwgUHlVbmljb2RlX0tJTkQoc2VsZiksIHNsZW4sIHUxLCAxKTsKKyAgICAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICB1MiA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyMiwgMCk7CisgICAgICAgICAgICB1ID0gUHlVbmljb2RlX05ldyhzbGVuLCBtYXhjaGFyKTsKICAgICAgICAgICAgIGlmICghdSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKLSAgICAgICAgICAgIHUxID0gc3RyMS0+c3RyWzBdOwotICAgICAgICAgICAgdTIgPSBzdHIyLT5zdHJbMF07Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdS0+bGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgaWYgKHUtPnN0cltpXSA9PSB1MSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoLS1tYXhjb3VudCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgdS0+c3RyW2ldID0gdTI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaSA9IHN0cmluZ2xpYl9maW5kKAotICAgICAgICAgICAgICAgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwgMAotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHUsIDAsIHNlbGYsIDAsIHNsZW4pOworICAgICAgICAgICAgcmtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCBQeVVuaWNvZGVfREFUQSh1KSwgcG9zLCB1Mik7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgICAgICBzcmMgPSBzYnVmOworICAgICAgICAgICAgd2hpbGUgKC0tbWF4Y291bnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgc3JjICs9IHBvcyAqIFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICAgICAgICAgIHNsZW4gLT0gcG9zOworICAgICAgICAgICAgICAgIGluZGV4ICs9IHBvczsKKyAgICAgICAgICAgICAgICBwb3MgPSBmaW5kY2hhcihzcmMsIFB5VW5pY29kZV9LSU5EKHNlbGYpLCBzbGVuLCB1MSwgMSk7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA8IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgUHlVbmljb2RlX0RBVEEodSksIGluZGV4ICsgcG9zLCB1Mik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgcmtpbmQgPSBza2luZDsKKyAgICAgICAgICAgIGNoYXIgKnJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKGtpbmQxIDwgcmtpbmQpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiBzdWJzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghYnVmMSkgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpID0gYW55bGliX2ZpbmQocmtpbmQsIHNlbGYsIHNidWYsIHNsZW4sIHN0cjEsIGJ1ZjEsIGxlbjEsIDApOwogICAgICAgICAgICAgaWYgKGkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICBpZiAocmtpbmQgPiBraW5kMikgeworICAgICAgICAgICAgICAgIC8qIHdpZGVuIHJlcGxhY2VtZW50ICovCisgICAgICAgICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjIsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjIpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTIgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocmtpbmQgPCBraW5kMikgeworICAgICAgICAgICAgICAgIC8qIHdpZGVuIHNlbGYgYW5kIGJ1ZjEgKi8KKyAgICAgICAgICAgICAgICBya2luZCA9IGtpbmQyOworICAgICAgICAgICAgICAgIGlmIChyZWxlYXNlMSkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgICAgICAgICBzYnVmID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwgcmtpbmQpOworICAgICAgICAgICAgICAgIGlmICghc2J1ZikgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBzcmVsZWFzZSA9IDE7CisgICAgICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBya2luZCk7CisgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfREFUQSh1KTsKIAorICAgICAgICAgICAgbWVtY3B5KHJlcywgc2J1ZiwgcmtpbmQgKiBzbGVuKTsKICAgICAgICAgICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyK2ksIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGkgKz0gc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICBpICs9IGxlbjE7CiAKICAgICAgICAgICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICBpID0gc3RyaW5nbGliX2ZpbmQoc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICAgICAgaSA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmK3JraW5kKmksIHNsZW4taSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMSwgYnVmMSwgbGVuMSwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKGkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LT5zdHIraSwgc3RyMi0+c3RyLCBzdHIyLT5sZW5ndGgpOwotICAgICAgICAgICAgICAgIGkgKz0gc3RyMS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZjIsCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgaSArPSBsZW4xOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X3NzaXplX3QgbiwgaSwgaiwgaXJlczsKKyAgICAgICAgUHlfc3NpemVfdCBwcm9kdWN0LCBuZXdfc2l6ZTsKKyAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CisgICAgICAgIGNoYXIgKnJlczsKIAotICAgICAgICBQeV9zc2l6ZV90IG4sIGksIGo7Ci0gICAgICAgIFB5X3NzaXplX3QgcHJvZHVjdCwgbmV3X3NpemUsIGRlbHRhOwotICAgICAgICBQeV9VTklDT0RFICpwOwotCi0gICAgICAgIC8qIHJlcGxhY2Ugc3RyaW5ncyAqLwotICAgICAgICBuID0gc3RyaW5nbGliX2NvdW50KHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisgICAgICAgIGlmIChraW5kMSA8IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiBzdWJzdHJpbmcgKi8KKyAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgbiA9IGFueWxpYl9jb3VudChya2luZCwgc2VsZiwgc2J1Ziwgc2xlbiwgc3RyMSwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOwogICAgICAgICBpZiAobiA9PSAwKQogICAgICAgICAgICAgZ290byBub3RoaW5nOwotICAgICAgICAvKiBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aCArIG4gKiAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKSk7ICovCi0gICAgICAgIGRlbHRhID0gKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCk7Ci0gICAgICAgIGlmIChkZWx0YSA9PSAwKSB7Ci0gICAgICAgICAgICBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByb2R1Y3QgPSBuICogKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAoKHByb2R1Y3QgLyAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKSkgIT0gbikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5ld19zaXplID0gc2VsZi0+bGVuZ3RoICsgcHJvZHVjdDsKLSAgICAgICAgICAgIGlmIChuZXdfc2l6ZSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChraW5kMiA8IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiByZXBsYWNlbWVudCAqLworICAgICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjIsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghYnVmMikgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlbGVhc2UyID0gMTsKICAgICAgICAgfQotICAgICAgICB1ID0gX1B5VW5pY29kZV9OZXcobmV3X3NpemUpOworICAgICAgICBlbHNlIGlmIChraW5kMiA+IHJraW5kKSB7CisgICAgICAgICAgICAvKiB3aWRlbiBzZWxmIGFuZCBidWYxICovCisgICAgICAgICAgICBya2luZCA9IGtpbmQyOworICAgICAgICAgICAgc2J1ZiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIHJraW5kKTsKKyAgICAgICAgICAgIGlmICghc2J1ZikgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHNyZWxlYXNlID0gMTsKKyAgICAgICAgICAgIGlmIChyZWxlYXNlMSkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgLyogbmV3X3NpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSArIG4gKiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgLQorICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKSkpOyAqLworICAgICAgICBwcm9kdWN0ID0gbiAqIChsZW4yLWxlbjEpOworICAgICAgICBpZiAoKHByb2R1Y3QgLyAobGVuMi1sZW4xKSkgIT0gbikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIG5ld19zaXplID0gc2xlbiArIHByb2R1Y3Q7CisgICAgICAgIGlmIChuZXdfc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICB1ID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3X3NpemUgPCAwIHx8IG5ld19zaXplID4gKFBZX1NTSVpFX1RfTUFYID4+IChya2luZC0xKSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB1ID0gUHlVbmljb2RlX05ldyhuZXdfc2l6ZSwgbWF4Y2hhcik7CiAgICAgICAgIGlmICghdSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpID0gMDsKLSAgICAgICAgcCA9IHUtPnN0cjsKLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh1KSA9PSBya2luZCk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgICAgICBpcmVzID0gaSA9IDA7CisgICAgICAgIGlmIChsZW4xID4gMCkgewogICAgICAgICAgICAgd2hpbGUgKG4tLSA+IDApIHsKICAgICAgICAgICAgICAgICAvKiBsb29rIGZvciBuZXh0IG1hdGNoICovCi0gICAgICAgICAgICAgICAgaiA9IHN0cmluZ2xpYl9maW5kKHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpOworICAgICAgICAgICAgICAgIGogPSBhbnlsaWJfZmluZChya2luZCwgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwgc2xlbi1pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLCBidWYxLCBsZW4xLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoaiA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaiA+IGkpIHsKICAgICAgICAgICAgICAgICAgICAgLyogY29weSB1bmNoYW5nZWQgcGFydCBbaTpqXSAqLwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc2VsZi0+c3RyK2ksIGotaSk7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gaiAtIGk7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiAoai1pKSk7CisgICAgICAgICAgICAgICAgICAgIGlyZXMgKz0gaiAtIGk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIGNvcHkgc3Vic3RpdHV0aW9uIHN0cmluZyAqLwotICAgICAgICAgICAgICAgIGlmIChzdHIyLT5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gc3RyMi0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChsZW4yID4gMCkgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogbGVuMik7CisgICAgICAgICAgICAgICAgICAgIGlyZXMgKz0gbGVuMjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaSA9IGogKyBzdHIxLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgaSA9IGogKyBsZW4xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGkgPCBzZWxmLT5sZW5ndGgpCisgICAgICAgICAgICBpZiAoaSA8IHNsZW4pCiAgICAgICAgICAgICAgICAgLyogY29weSB0YWlsIFtpOl0gKi8KLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIChzbGVuLWkpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIGludGVybGVhdmUgKi8KICAgICAgICAgICAgIHdoaWxlIChuID4gMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICAgICAgcCArPSBzdHIyLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiBsZW4yKTsKKyAgICAgICAgICAgICAgICBpcmVzICs9IGxlbjI7CiAgICAgICAgICAgICAgICAgaWYgKC0tbiA8PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAqcCsrID0gc2VsZi0+c3RyW2krK107CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQpOworICAgICAgICAgICAgICAgIGlyZXMrKzsKKyAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pKTsKKyAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgc2J1ZiArIHJraW5kICogaSwKKyAgICAgICAgICAgICAgICAgICBya2luZCAqIChzbGVuLWkpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopIHU7CisKKyAgICBpZiAobWF5c2hyaW5rKSB7CisgICAgICAgIHVuaWNvZGVfYWRqdXN0X21heGNoYXIoJnUpOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgZG9uZToKKyAgICBpZiAoc3JlbGVhc2UpCisgICAgICAgIFB5TWVtX0ZSRUUoc2J1Zik7CisgICAgaWYgKHJlbGVhc2UxKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjEpOworICAgIGlmIChyZWxlYXNlMikKKyAgICAgICAgUHlNZW1fRlJFRShidWYyKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIAogICBub3RoaW5nOgogICAgIC8qIG5vdGhpbmcgdG8gcmVwbGFjZTsgcmV0dXJuIG9yaWdpbmFsIHN0cmluZyAod2hlbiBwb3NzaWJsZSkgKi8KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Ci0gICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOworICAgIGlmIChzcmVsZWFzZSkKKyAgICAgICAgUHlNZW1fRlJFRShzYnVmKTsKKyAgICBpZiAocmVsZWFzZTEpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMSk7CisgICAgaWYgKHJlbGVhc2UyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjIpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgZXJyb3I6CisgICAgaWYgKHNyZWxlYXNlICYmIHNidWYpCisgICAgICAgIFB5TWVtX0ZSRUUoc2J1Zik7CisgICAgaWYgKHJlbGVhc2UxICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMSk7CisgICAgaWYgKHJlbGVhc2UyICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIC8qIC0tLSBVbmljb2RlIE9iamVjdCBNZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNzExNyw5ICsxMDMxNiwxMSBAQAogY2hhcmFjdGVycywgYWxsIHJlbWFpbmluZyBjYXNlZCBjaGFyYWN0ZXJzIGhhdmUgbG93ZXIgY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV90aXRsZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3RpdGxlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXh0aXRsZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX3RpdGxlKTsKIH0KIAogUHlEb2NfU1RSVkFSKGNhcGl0YWxpemVfX2RvY19fLApAQCAtNzEyOSw1NyArMTAzMzAsMzggQEAKIGhhdmUgdXBwZXIgY2FzZSBhbmQgdGhlIHJlc3QgbG93ZXIgY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9jYXBpdGFsaXplKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfY2FwaXRhbGl6ZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4Y2FwaXRhbGl6ZSk7Ci19Ci0KLSNpZiAwCi1QeURvY19TVFJWQVIoY2Fwd29yZHNfX2RvY19fLAotICAgICAgICAgICAgICJTLmNhcHdvcmRzKCkgLT4gc3RyXG5cCi1cblwKLUFwcGx5IC5jYXBpdGFsaXplKCkgdG8gYWxsIHdvcmRzIGluIFMgYW5kIHJldHVybiB0aGUgcmVzdWx0IHdpdGhcblwKLW5vcm1hbGl6ZWQgd2hpdGVzcGFjZSAoYWxsIHdoaXRlc3BhY2Ugc3RyaW5ncyBhcmUgcmVwbGFjZWQgYnkgJyAnKS4iKTsKLQotc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9jYXB3b3JkcyhQeVVuaWNvZGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKmxpc3Q7Ci0gICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBpOwotCi0gICAgLyogU3BsaXQgaW50byB3b3JkcyAqLwotICAgIGxpc3QgPSBzcGxpdChzZWxmLCBOVUxMLCAtMSk7Ci0gICAgaWYgKCFsaXN0KQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogQ2FwaXRhbGl6ZSBlYWNoIHdvcmQgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgUHlMaXN0X0dFVF9TSVpFKGxpc3QpOyBpKyspIHsKLSAgICAgICAgaXRlbSA9IGZpeHVwKChQeVVuaWNvZGVPYmplY3QgKilQeUxpc3RfR0VUX0lURU0obGlzdCwgaSksCi0gICAgICAgICAgICAgICAgICAgICBmaXhjYXBpdGFsaXplKTsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgUHlfREVDUkVGKFB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKSk7Ci0gICAgICAgIFB5TGlzdF9TRVRfSVRFTShsaXN0LCBpLCBpdGVtKTsKLSAgICB9Ci0KLSAgICAvKiBKb2luIHRoZSB3b3JkcyB0byBmb3JtIGEgbmV3IHN0cmluZyAqLwotICAgIGl0ZW0gPSBQeVVuaWNvZGVfSm9pbihOVUxMLCBsaXN0KTsKLQotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopaXRlbTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPT0gMCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fY2FwaXRhbGl6ZSk7CiB9Ci0jZW5kaWYKKworUHlEb2NfU1RSVkFSKGNhc2Vmb2xkX19kb2NfXywKKyAgICAgICAgICAgICAiUy5jYXNlZm9sZCgpIC0+IHN0clxuXAorXG5cCitSZXR1cm4gYSB2ZXJzaW9uIG9mIFMgc3VpdGFibGUgZm9yIGNhc2VsZXNzIGNvbXBhcmlzb25zLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9jYXNlZm9sZChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICByZXR1cm4gYXNjaWlfdXBwZXJfb3JfbG93ZXIoc2VsZiwgMSk7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX2Nhc2Vmb2xkKTsKK30KKwogCiAvKiBBcmd1bWVudCBjb252ZXJ0ZXIuICBDb2VyY2VzIHRvIGEgc2luZ2xlIHVuaWNvZGUgY2hhcmFjdGVyICovCiAKIHN0YXRpYyBpbnQKIGNvbnZlcnRfdWMoUHlPYmplY3QgKm9iaiwgdm9pZCAqYWRkcikKIHsKLSAgICBQeV9VTklDT0RFICpmaWxsY2hhcmxvYyA9IChQeV9VTklDT0RFICopYWRkcjsKKyAgICBQeV9VQ1M0ICpmaWxsY2hhcmxvYyA9IChQeV9VQ1M0ICopYWRkcjsKICAgICBQeU9iamVjdCAqdW5pb2JqOwotICAgIFB5X1VOSUNPREUgKnVuaXN0cjsKIAogICAgIHVuaW9iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7CiAgICAgaWYgKHVuaW9iaiA9PSBOVUxMKSB7CkBAIC03MTg3LDE0ICsxMDM2OSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIFVuaWNvZGUiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodW5pb2JqKSAhPSAxKSB7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaW9iaikgIT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nIik7CiAgICAgICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgdW5pc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pb2JqKTsKLSAgICAqZmlsbGNoYXJsb2MgPSB1bmlzdHJbMF07CisgICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmlvYmosIDApOwogICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgIHJldHVybiAxOwogfQpAQCAtNzIwNiwxMTIgKzEwMzg3LDY0IEBACiBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfY2VudGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2NlbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCBtYXJnLCBsZWZ0OwogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgUHlfVU5JQ09ERSBmaWxsY2hhciA9ICcgJzsKKyAgICBQeV9VQ1M0IGZpbGxjaGFyID0gJyAnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufE8mOmNlbnRlciIsICZ3aWR0aCwgY29udmVydF91YywgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWFyZyA9IHdpZHRoIC0gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIG1hcmcgPSB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlZnQgPSBtYXJnIC8gMiArIChtYXJnICYgd2lkdGggJiAxKTsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKKyAgICByZXR1cm4gcGFkKHNlbGYsIGxlZnQsIG1hcmcgLSBsZWZ0LCBmaWxsY2hhcik7CiB9CiAKLSNpZiAwCi0KLS8qIFRoaXMgY29kZSBzaG91bGQgZ28gaW50byBzb21lIGZ1dHVyZSBVbmljb2RlIGNvbGxhdGlvbiBzdXBwb3J0Ci0gICBtb2R1bGUuIFRoZSBiYXNpYyBjb21wYXJpc29uIHNob3VsZCBjb21wYXJlIG9yZGluYWxzIG9uIGEgbmFpdmUKLSAgIGJhc2lzICh0aGlzIGlzIHdoYXQgSmF2YSBkb2VzIGFuZCB0aHVzIEp5dGhvbiB0b28pLiAqLwotCi0vKiBzcGVlZHkgVVRGLTE2IGNvZGUgcG9pbnQgb3JkZXIgY29tcGFyaXNvbiAqLwotLyogZ2xlYW5lZCBmcm9tOiAqLwotLyogaHR0cDovL3d3dy00LmlibS5jb20vc29mdHdhcmUvZGV2ZWxvcGVyL2xpYnJhcnkvdXRmMTYuaHRtbD9kd3pvbmU9dW5pY29kZSAqLwotCi1zdGF0aWMgc2hvcnQgdXRmMTZGaXh1cFszMl0gPQotewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDB4MjAwMCwgLTB4ODAwLCAtMHg4MDAsIC0weDgwMCwgLTB4ODAwCi19OworLyogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgc3RyMSBhbmQgc3RyMiBhcmUgcmVhZGllZCBieSB0aGUgY2FsbGVyLiAqLwogCiBzdGF0aWMgaW50Ci11bmljb2RlX2NvbXBhcmUoUHlVbmljb2RlT2JqZWN0ICpzdHIxLCBQeVVuaWNvZGVPYmplY3QgKnN0cjIpCit1bmljb2RlX2NvbXBhcmUoUHlPYmplY3QgKnN0cjEsIFB5T2JqZWN0ICpzdHIyKQogewotICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKKyAgICBpbnQga2luZDEsIGtpbmQyOworICAgIHZvaWQgKmRhdGExLCAqZGF0YTI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpOwogCi0gICAgUHlfVU5JQ09ERSAqczEgPSBzdHIxLT5zdHI7Ci0gICAgUHlfVU5JQ09ERSAqczIgPSBzdHIyLT5zdHI7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIxKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN0cjIpOworICAgIGRhdGExID0gUHlVbmljb2RlX0RBVEEoc3RyMSk7CisgICAgZGF0YTIgPSBQeVVuaWNvZGVfREFUQShzdHIyKTsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMSk7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpOwogCi0gICAgbGVuMSA9IHN0cjEtPmxlbmd0aDsKLSAgICBsZW4yID0gc3RyMi0+bGVuZ3RoOwotCi0gICAgd2hpbGUgKGxlbjEgPiAwICYmIGxlbjIgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYzEsIGMyOwotCi0gICAgICAgIGMxID0gKnMxKys7Ci0gICAgICAgIGMyID0gKnMyKys7Ci0KLSAgICAgICAgaWYgKGMxID4gKDE8PDExKSAqIDI2KQotICAgICAgICAgICAgYzEgKz0gdXRmMTZGaXh1cFtjMT4+MTFdOwotICAgICAgICBpZiAoYzIgPiAoMTw8MTEpICogMjYpCi0gICAgICAgICAgICBjMiArPSB1dGYxNkZpeHVwW2MyPj4xMV07Ci0gICAgICAgIC8qIG5vdyBjMSBhbmQgYzIgYXJlIGluIFVURi0zMi1jb21wYXRpYmxlIG9yZGVyICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjEgJiYgaSA8IGxlbjI7ICsraSkgeworICAgICAgICBQeV9VQ1M0IGMxLCBjMjsKKyAgICAgICAgYzEgPSBQeVVuaWNvZGVfUkVBRChraW5kMSwgZGF0YTEsIGkpOworICAgICAgICBjMiA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBkYXRhMiwgaSk7CiAKICAgICAgICAgaWYgKGMxICE9IGMyKQogICAgICAgICAgICAgcmV0dXJuIChjMSA8IGMyKSA/IC0xIDogMTsKLQotICAgICAgICBsZW4xLS07IGxlbjItLTsKICAgICB9CiAKICAgICByZXR1cm4gKGxlbjEgPCBsZW4yKSA/IC0xIDogKGxlbjEgIT0gbGVuMik7CiB9CiAKLSNlbHNlCi0KLXN0YXRpYyBpbnQKLXVuaWNvZGVfY29tcGFyZShQeVVuaWNvZGVPYmplY3QgKnN0cjEsIFB5VW5pY29kZU9iamVjdCAqc3RyMikKK2ludAorUHlVbmljb2RlX0NvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7Ci0KLSAgICBQeV9VTklDT0RFICpzMSA9IHN0cjEtPnN0cjsKLSAgICBQeV9VTklDT0RFICpzMiA9IHN0cjItPnN0cjsKLQotICAgIGxlbjEgPSBzdHIxLT5sZW5ndGg7Ci0gICAgbGVuMiA9IHN0cjItPmxlbmd0aDsKLQotICAgIHdoaWxlIChsZW4xID4gMCAmJiBsZW4yID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGMxLCBjMjsKLQotICAgICAgICBjMSA9ICpzMSsrOwotICAgICAgICBjMiA9ICpzMisrOwotCi0gICAgICAgIGlmIChjMSAhPSBjMikKLSAgICAgICAgICAgIHJldHVybiAoYzEgPCBjMikgPyAtMSA6IDE7Ci0KLSAgICAgICAgbGVuMS0tOyBsZW4yLS07CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEgfHwKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhcmUobGVmdCwgcmlnaHQpOwogICAgIH0KLQotICAgIHJldHVybiAobGVuMSA8IGxlbjIpID8gLTEgOiAobGVuMSAhPSBsZW4yKTsKLX0KLQotI2VuZGlmCi0KLWludCBQeVVuaWNvZGVfQ29tcGFyZShQeU9iamVjdCAqbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQpCi17Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKQotICAgICAgICByZXR1cm4gdW5pY29kZV9jb21wYXJlKChQeVVuaWNvZGVPYmplY3QgKilsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilyaWdodCk7CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIkNhbid0IGNvbXBhcmUgJS4xMDBzIGFuZCAlLjEwMHMiLAogICAgICAgICAgICAgICAgICBsZWZ0LT5vYl90eXBlLT50cF9uYW1lLApAQCAtNzMyMiwxNyArMTA0NTUsMjMgQEAKIGludAogUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoUHlPYmplY3QqIHVuaSwgY29uc3QgY2hhciogc3RyKQogewotICAgIGludCBpOwotICAgIFB5X1VOSUNPREUgKmlkOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodW5pKSk7Ci0gICAgaWQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmkpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgY2hyOworCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmkpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaSk7CiAgICAgLyogQ29tcGFyZSBVbmljb2RlIHN0cmluZyBhbmQgc291cmNlIGNoYXJhY3RlciBzZXQgc3RyaW5nICovCi0gICAgZm9yIChpID0gMDsgaWRbaV0gJiYgc3RyW2ldOyBpKyspCi0gICAgICAgIGlmIChpZFtpXSAhPSBzdHJbaV0pCi0gICAgICAgICAgICByZXR1cm4gKChpbnQpaWRbaV0gPCAoaW50KXN0cltpXSkgPyAtMSA6IDE7CisgICAgZm9yIChpID0gMDsgKGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSAmJiBzdHJbaV07IGkrKykKKyAgICAgICAgaWYgKGNociAhPSBzdHJbaV0pCisgICAgICAgICAgICByZXR1cm4gKGNociA8ICh1bnNpZ25lZCBjaGFyKShzdHJbaV0pKSA/IC0xIDogMTsKICAgICAvKiBUaGlzIGNoZWNrIGtlZXBzIFB5dGhvbiBzdHJpbmdzIHRoYXQgZW5kIGluICdcMCcgZnJvbSBjb21wYXJpbmcgZXF1YWwKICAgICAgdG8gQyBzdHJpbmdzIGlkZW50aWNhbCB1cCB0byB0aGF0IHBvaW50LiAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodW5pKSAhPSBpIHx8IGlkW2ldKQorICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmkpICE9IGkgfHwgY2hyKQogICAgICAgICByZXR1cm4gMTsgLyogdW5pIGlzIGxvbmdlciAqLwogICAgIGlmIChzdHJbaV0pCiAgICAgICAgIHJldHVybiAtMTsgLyogc3RyIGlzIGxvbmdlciAqLwpAQCAtNzM0MywxNiArMTA0ODIsMTggQEAKICNkZWZpbmUgVEVTVF9DT05EKGNvbmQpICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoKGNvbmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlKQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9SaWNoQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBpbnQgb3ApCiB7CiAgICAgaW50IHJlc3VsdDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobGVmdCkgJiYgUHlVbmljb2RlX0NoZWNrKHJpZ2h0KSkgewogICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgaWYgKCgoUHlVbmljb2RlT2JqZWN0ICopIGxlZnQpLT5sZW5ndGggIT0KLSAgICAgICAgICAgICgoUHlVbmljb2RlT2JqZWN0ICopIHJpZ2h0KS0+bGVuZ3RoKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEgfHwKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGxlZnQpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJpZ2h0KSB8fAorICAgICAgICAgICAgUHlVbmljb2RlX0tJTkQobGVmdCkgIT0gUHlVbmljb2RlX0tJTkQocmlnaHQpKSB7CiAgICAgICAgICAgICBpZiAob3AgPT0gUHlfRVEpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfRmFsc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBQeV9GYWxzZTsKQEAgLTczNjUsOCArMTA1MDYsNyBAQAogICAgICAgICBpZiAobGVmdCA9PSByaWdodCkKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHVuaWNvZGVfY29tcGFyZSgoUHlVbmljb2RlT2JqZWN0ICopbGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopcmlnaHQpOworICAgICAgICAgICAgcmVzdWx0ID0gdW5pY29kZV9jb21wYXJlKGxlZnQsIHJpZ2h0KTsKIAogICAgICAgICAvKiBDb252ZXJ0IHRoZSByZXR1cm4gdmFsdWUgdG8gYSBCb29sZWFuICovCiAgICAgICAgIHN3aXRjaCAob3ApIHsKQEAgLTczOTYsMTQgKzEwNTM2LDE2IEBACiAgICAgICAgIHJldHVybiB2OwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAotaW50IFB5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudCkKK2ludAorUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpjb250YWluZXIsIFB5T2JqZWN0ICplbGVtZW50KQogewogICAgIFB5T2JqZWN0ICpzdHIsICpzdWI7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgaW50IHJlc3VsdDsKIAogICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwpAQCAtNzQyMCw1MCArMTA1NjIsMTA2IEBACiAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgfQogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2NvbnRhaW5zX29iaihzdHIsIHN1Yik7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpIHsKKyAgICAgICAgaWYgKGtpbmQyID4ga2luZCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWIsIGtpbmQpOworICAgIH0KKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWIpOworCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gdWNzMWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MybGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgMCkgIT0gLTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczRsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCAwKSAhPSAtMTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICBQeV9ERUNSRUYoc3ViKTsKIAorICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogQ29uY2F0IHRvIHN0cmluZyBvciBVbmljb2RlIG9iamVjdCBnaXZpbmcgYSBuZXcgVW5pY29kZSBvYmplY3QuICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQ29uY2F0KFB5T2JqZWN0ICpsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0KQorUHlPYmplY3QgKgorUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEwsICp3OworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7CisgICAgUHlfc3NpemVfdCB1X2xlbiwgdl9sZW4sIG5ld19sZW47CiAKICAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICB1ID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOworICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKICAgICBpZiAodSA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgdiA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CisgICAgdiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICAvKiBTaG9ydGN1dHMgKi8KICAgICBpZiAodiA9PSB1bmljb2RlX2VtcHR5KSB7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXU7CisgICAgICAgIHJldHVybiB1OwogICAgIH0KICAgICBpZiAodSA9PSB1bmljb2RlX2VtcHR5KSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgICAgIHJldHVybiB2OwogICAgIH0KIAorICAgIHVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7CisgICAgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKKyAgICBpZiAodV9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHZfbGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKyAgICBuZXdfbGVuID0gdV9sZW4gKyB2X2xlbjsKKworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7CisgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXIyKTsKKwogICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLwotICAgIHcgPSBfUHlVbmljb2RlX05ldyh1LT5sZW5ndGggKyB2LT5sZW5ndGgpOworICAgIHcgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOwogICAgIGlmICh3ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBQeV9VTklDT0RFX0NPUFkody0+c3RyLCB1LT5zdHIsIHUtPmxlbmd0aCk7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKHctPnN0ciArIHUtPmxlbmd0aCwgdi0+c3RyLCB2LT5sZW5ndGgpOwotCisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgMCwgdSwgMCwgdV9sZW4pOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIHVfbGVuLCB2LCAwLCB2X2xlbik7CiAgICAgUHlfREVDUkVGKHUpOwogICAgIFB5X0RFQ1JFRih2KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdzsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHcsIDEpKTsKKyAgICByZXR1cm4gdzsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYodSk7CkBAIC03NDcyLDE5ICsxMDY3MCw4OSBAQAogfQogCiB2b2lkCi1QeVVuaWNvZGVfQXBwZW5kKFB5T2JqZWN0ICoqcGxlZnQsIFB5T2JqZWN0ICpyaWdodCkKK1B5VW5pY29kZV9BcHBlbmQoUHlPYmplY3QgKipwX2xlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeU9iamVjdCAqbmV3OwotICAgIGlmICgqcGxlZnQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChyaWdodCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soKnBsZWZ0KSkgewotICAgICAgICBQeV9ERUNSRUYoKnBsZWZ0KTsKLSAgICAgICAgKnBsZWZ0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGVmdCwgKnJlczsKKyAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOworICAgIFB5X3NzaXplX3QgbGVmdF9sZW4sIHJpZ2h0X2xlbiwgbmV3X2xlbjsKKworICAgIGlmIChwX2xlZnQgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBuZXcgPSBQeVVuaWNvZGVfQ29uY2F0KCpwbGVmdCwgcmlnaHQpOwotICAgIFB5X0RFQ1JFRigqcGxlZnQpOwotICAgICpwbGVmdCA9IG5ldzsKKyAgICBsZWZ0ID0gKnBfbGVmdDsKKyAgICBpZiAocmlnaHQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGxlZnQpKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyaWdodCkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBTaG9ydGN1dHMgKi8KKyAgICBpZiAobGVmdCA9PSB1bmljb2RlX2VtcHR5KSB7CisgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgUHlfSU5DUkVGKHJpZ2h0KTsKKyAgICAgICAgKnBfbGVmdCA9IHJpZ2h0OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChyaWdodCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm47CisKKyAgICBsZWZ0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxlZnQpOworICAgIHJpZ2h0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJpZ2h0KTsKKyAgICBpZiAobGVmdF9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHJpZ2h0X2xlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG5ld19sZW4gPSBsZWZ0X2xlbiArIHJpZ2h0X2xlbjsKKworICAgIGlmICh1bmljb2RlX21vZGlmaWFibGUobGVmdCkKKyAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QocmlnaHQpCisgICAgICAgICYmIFB5VW5pY29kZV9LSU5EKHJpZ2h0KSA8PSBQeVVuaWNvZGVfS0lORChsZWZ0KQorICAgICAgICAvKiBEb24ndCByZXNpemUgZm9yIGFzY2lpICs9IGxhdGluMS4gQ29udmVydCBhc2NpaSB0byBsYXRpbjEgcmVxdWlyZXMKKyAgICAgICAgICAgdG8gY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgc2l6ZSwgYnV0IGNoYXJhY3RlcnMgYXJlIHN0b3JlZCBqdXN0IGFmdGVyCisgICAgICAgICAgIHRoZSBzdHJ1Y3R1cmUsIGFuZCBzbyBpdCByZXF1aXJlcyB0byBtb3ZlIGFsbCBjaGFyYWN0ZXJzIHdoaWNoIGlzCisgICAgICAgICAgIG5vdCBzbyBkaWZmZXJlbnQgdGhhbiBkdXBsaWNhdGluZyB0aGUgc3RyaW5nLiAqLworICAgICAgICAmJiAhKFB5VW5pY29kZV9JU19BU0NJSShsZWZ0KSAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKHJpZ2h0KSkpCisgICAgeworICAgICAgICAvKiBhcHBlbmQgaW5wbGFjZSAqLworICAgICAgICBpZiAodW5pY29kZV9yZXNpemUocF9sZWZ0LCBuZXdfbGVuKSAhPSAwKSB7CisgICAgICAgICAgICAvKiBYWFggaWYgX1B5VW5pY29kZV9SZXNpemUoKSBmYWlscywgJ2xlZnQnIGhhcyBiZWVuCisgICAgICAgICAgICAgKiBkZWFsbG9jYXRlZCBzbyBpdCBjYW5ub3QgYmUgcHV0IGJhY2sgaW50bworICAgICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFRoZSBNZW1vcnlFcnJvciBpcyByYWlzZWQgd2hlbiB0aGVyZQorICAgICAgICAgICAgICogaXMgbm8gdmFsdWUgaW4gJ3ZhcmlhYmxlJywgd2hpY2ggbWlnaHQgKHZlcnkKKyAgICAgICAgICAgICAqIHJlbW90ZWx5KSBiZSBhIGNhdXNlIG9mIGluY29tcGF0aWJpbGl0aWVzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIC8qIGNvcHkgJ3JpZ2h0JyBpbnRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgYXJlYSBvZiAnbGVmdCcgKi8KKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoKnBfbGVmdCwgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShsZWZ0KTsKKyAgICAgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmlnaHQpOworICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgbWF4Y2hhcjIpOworCisgICAgICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIDAsIGxlZnQsIDAsIGxlZnRfbGVuKTsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzLCBsZWZ0X2xlbiwgcmlnaHQsIDAsIHJpZ2h0X2xlbik7CisgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgKnBfbGVmdCA9IHJlczsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgqcF9sZWZ0LCAxKSk7CisgICAgcmV0dXJuOworCitlcnJvcjoKKyAgICBQeV9DTEVBUigqcF9sZWZ0KTsKIH0KIAogdm9pZApAQCAtNzUwMiwyMyArMTA3NzAsNjQgQEAKIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9jb3VudChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9jb3VudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKICAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBzZWxmLT5sZW5ndGgpOwotICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHNlbGYtPnN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZy0+c3RyLCBzdWJzdHJpbmctPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiA+IGtpbmQxKQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlyZXN1bHQgPSB1Y3MxbGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBpcmVzdWx0ID0gdWNzMmxpYl9jb3VudCgKKyAgICAgICAgICAgICgoUHlfVUNTMiopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgaXJlc3VsdCA9IHVjczRsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzQqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsgaXJlc3VsdCA9IDA7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGlyZXN1bHQpOworCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIApAQCAtNzUzNiw3ICsxMDg0NSw3IEBACiBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFVuaWNvZGVFbmNvZGVFcnJvcnMuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2VuY29kZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQordW5pY29kZV9lbmNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgMH07CiAgICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwpAQCAtNzU0NSw3ICsxMDg1NCw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmVuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygoUHlPYmplY3QgKilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KIAogUHlEb2NfU1RSVkFSKGV4cGFuZHRhYnNfX2RvY19fLApAQCAtNzU1NSw4MiArMTA4NjQsODIgQEAKIElmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2V4cGFuZHRhYnMoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfZXhwYW5kdGFicyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZTsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X1VOSUNPREUgKnE7Ci0gICAgUHlfVU5JQ09ERSAqcWU7Ci0gICAgUHlfc3NpemVfdCBpLCBqLCBpbmNyOwotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKKyAgICBQeV9zc2l6ZV90IGksIGosIGxpbmVfcG9zLCBzcmNfbGVuLCBpbmNyOworICAgIFB5X1VDUzQgY2g7CisgICAgUHlPYmplY3QgKnU7CisgICAgdm9pZCAqc3JjX2RhdGEsICpkZXN0X2RhdGE7CiAgICAgaW50IHRhYnNpemUgPSA4OworICAgIGludCBraW5kOworICAgIGludCBmb3VuZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZXhwYW5kdGFicyIsICZ0YWJzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIEZpcnN0IHBhc3M6IGRldGVybWluZSBzaXplIG9mIG91dHB1dCBzdHJpbmcgKi8KLSAgICBpID0gMDsgLyogY2hhcnMgdXAgdG8gYW5kIGluY2x1ZGluZyBtb3N0IHJlY2VudCBcbiBvciBcciAqLwotICAgIGogPSAwOyAvKiBjaGFycyBzaW5jZSBtb3N0IHJlY2VudCBcbiBvciBcciAodXNlIGluIHRhYiBjYWxjdWxhdGlvbnMpICovCi0gICAgZSA9IHNlbGYtPnN0ciArIHNlbGYtPmxlbmd0aDsgLyogZW5kIG9mIGlucHV0ICovCi0gICAgZm9yIChwID0gc2VsZi0+c3RyOyBwIDwgZTsgcCsrKQotICAgICAgICBpZiAoKnAgPT0gJ1x0JykgeworICAgIHNyY19sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBpID0gaiA9IGxpbmVfcG9zID0gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgc3JjX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBmb3VuZCA9IDA7CisgICAgZm9yICg7IGkgPCBzcmNfbGVuOyBpKyspIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBzcmNfZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICBmb3VuZCA9IDE7CiAgICAgICAgICAgICBpZiAodGFic2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBpbmNyID0gdGFic2l6ZSAtIChqICUgdGFic2l6ZSk7IC8qIGNhbm5vdCBvdmVyZmxvdyAqLworICAgICAgICAgICAgICAgIGluY3IgPSB0YWJzaXplIC0gKGxpbmVfcG9zICUgdGFic2l6ZSk7IC8qIGNhbm5vdCBvdmVyZmxvdyAqLwogICAgICAgICAgICAgICAgIGlmIChqID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyArPSBpbmNyOwogICAgICAgICAgICAgICAgIGogKz0gaW5jcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChqID4gUFlfU1NJWkVfVF9NQVggLSAxKQotICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cxOworICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgICAgICBsaW5lX3BvcysrOwogICAgICAgICAgICAgaisrOwotICAgICAgICAgICAgaWYgKCpwID09ICdcbicgfHwgKnAgPT0gJ1xyJykgewotICAgICAgICAgICAgICAgIGlmIChpID4gUFlfU1NJWkVfVF9NQVggLSBqKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MTsKLSAgICAgICAgICAgICAgICBpICs9IGo7Ci0gICAgICAgICAgICAgICAgaiA9IDA7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHInKQorICAgICAgICAgICAgICAgIGxpbmVfcG9zID0gMDsKICAgICAgICAgfQotCi0gICAgaWYgKGkgPiBQWV9TU0laRV9UX01BWCAtIGopCi0gICAgICAgIGdvdG8gb3ZlcmZsb3cxOworICAgIH0KKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOwogCiAgICAgLyogU2Vjb25kIHBhc3M6IGNyZWF0ZSBvdXRwdXQgc3RyaW5nIGFuZCBmaWxsIGl0ICovCi0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KGkgKyBqKTsKKyAgICB1ID0gUHlVbmljb2RlX05ldyhqLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc2VsZikpOwogICAgIGlmICghdSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZGVzdF9kYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CiAKLSAgICBqID0gMDsgLyogc2FtZSBhcyBpbiBmaXJzdCBwYXNzICovCi0gICAgcSA9IHUtPnN0cjsgLyogbmV4dCBvdXRwdXQgY2hhciAqLwotICAgIHFlID0gdS0+c3RyICsgdS0+bGVuZ3RoOyAvKiBlbmQgb2Ygb3V0cHV0ICovCisgICAgaSA9IGogPSBsaW5lX3BvcyA9IDA7CiAKLSAgICBmb3IgKHAgPSBzZWxmLT5zdHI7IHAgPCBlOyBwKyspCi0gICAgICAgIGlmICgqcCA9PSAnXHQnKSB7CisgICAgZm9yICg7IGkgPCBzcmNfbGVuOyBpKyspIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBzcmNfZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7CiAgICAgICAgICAgICBpZiAodGFic2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICBpID0gdGFic2l6ZSAtIChqICUgdGFic2l6ZSk7Ci0gICAgICAgICAgICAgICAgaiArPSBpOwotICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHEgPj0gcWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93MjsKLSAgICAgICAgICAgICAgICAgICAgKnErKyA9ICcgJzsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5jciA9IHRhYnNpemUgLSAobGluZV9wb3MgJSB0YWJzaXplKTsKKyAgICAgICAgICAgICAgICBsaW5lX3BvcyArPSBpbmNyOworICAgICAgICAgICAgICAgIEZJTEwoa2luZCwgZGVzdF9kYXRhLCAnICcsIGosIGluY3IpOworICAgICAgICAgICAgICAgIGogKz0gaW5jcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChxID49IHFlKQotICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cyOwotICAgICAgICAgICAgKnErKyA9ICpwOworICAgICAgICAgICAgbGluZV9wb3MrKzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkZXN0X2RhdGEsIGosIGNoKTsKICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgIGlmICgqcCA9PSAnXG4nIHx8ICpwID09ICdccicpCi0gICAgICAgICAgICAgICAgaiA9IDA7CisgICAgICAgICAgICBpZiAoY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHInKQorICAgICAgICAgICAgICAgIGxpbmVfcG9zID0gMDsKICAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQgKGogPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSkpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1KTsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSB1OwotCi0gIG92ZXJmbG93MjoKLSAgICBQeV9ERUNSRUYodSk7Ci0gIG92ZXJmbG93MToKKyAgb3ZlcmZsb3c6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJuZXcgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC03NjQ1LDkgKzEwOTU0LDkgQEAKIFJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9maW5kKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2ZpbmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKQEAgLTc2NTYsNjMgKzEwOTY1LDExNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZ2V0aXRlbShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCit1bmljb2RlX2dldGl0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5sZW5ndGgpIHsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBQeV9VQ1M0IGNoOworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzZWxmKSB8fCBQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpOworICAgIGlmIChjaCA8IDI1NikKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihjaCk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZzZWxmLT5zdHJbaW5kZXhdLCAxKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDEsIGNoKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCAwLCBjaCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiAvKiBCZWxpZXZlIGl0IG9yIG5vdCwgdGhpcyBwcm9kdWNlcyB0aGUgc2FtZSB2YWx1ZSBmb3IgQVNDSUkgc3RyaW5ncwotICAgYXMgc3RyaW5nX2hhc2goKS4gKi8KKyAgIGFzIGJ5dGVzX2hhc2goKS4gKi8KIHN0YXRpYyBQeV9oYXNoX3QKLXVuaWNvZGVfaGFzaChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9oYXNoX3QgeDsKKyAgICBQeV91aGFzaF90IHg7CiAKICNpZmRlZiBQeV9ERUJVRwogICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7CiAjZW5kaWYKLSAgICBpZiAoc2VsZi0+aGFzaCAhPSAtMSkKLSAgICAgICAgcmV0dXJuIHNlbGYtPmhhc2g7Ci0gICAgbGVuID0gUHlfU0laRShzZWxmKTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNIKHNlbGYpICE9IC0xKQorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9IQVNIKHNlbGYpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICAvKgogICAgICAgV2UgbWFrZSB0aGUgaGFzaCBvZiB0aGUgZW1wdHkgc3RyaW5nIGJlIDAsIHJhdGhlciB0aGFuIHVzaW5nCiAgICAgICAocHJlZml4IF4gc3VmZml4KSwgc2luY2UgdGhpcyBzbGlnaHRseSBvYmZ1c2NhdGVzIHRoZSBoYXNoIHNlY3JldAogICAgICovCiAgICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgIHNlbGYtPmhhc2ggPSAwOworICAgICAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSAwOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcCA9IHNlbGYtPnN0cjsKLSAgICB4ID0gX1B5X0hhc2hTZWNyZXQucHJlZml4OwotICAgIHggXj0gKnAgPDwgNzsKLSAgICB3aGlsZSAoLS1sZW4gPj0gMCkKLSAgICAgICAgeCA9IChfUHlIQVNIX01VTFRJUExJRVIqeCkgXiAqcCsrOwotICAgIHggXj0gUHlfU0laRShzZWxmKTsKLSAgICB4IF49IF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKKworICAgIC8qIFRoZSBoYXNoIGZ1bmN0aW9uIGFzIGEgbWFjcm8sIGdldHMgZXhwYW5kZWQgdGhyZWUgdGltZXMgYmVsb3cuICovCisjZGVmaW5lIEhBU0goUCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB4IF49IChQeV91aGFzaF90KSAqUCA8PCA3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHdoaWxlICgtLWxlbiA+PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHggPSAoX1B5SEFTSF9NVUxUSVBMSUVSICogeCkgXiAoUHlfdWhhc2hfdCkgKlArKzsgIFwKKworICAgIHggPSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQucHJlZml4OworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc2VsZikpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmMgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgSEFTSChjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IHsKKyAgICAgICAgY29uc3QgUHlfVUNTMiAqcyA9IFB5VW5pY29kZV8yQllURV9EQVRBKHNlbGYpOworICAgICAgICBIQVNIKHMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBQeV9VQ1M0ICpsOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoc2VsZikgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQgJiYKKyAgICAgICAgICAgICAgICJJbXBvc3NpYmxlIHN3aXRjaCBjYXNlIGluIHVuaWNvZGVfaGFzaCIpOworICAgICAgICBsID0gUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIEhBU0gobCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisgICAgeCBePSAoUHlfdWhhc2hfdCkgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQuc3VmZml4OworCiAgICAgaWYgKHggPT0gLTEpCiAgICAgICAgIHggPSAtMjsKLSAgICBzZWxmLT5oYXNoID0geDsKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSB4OwogICAgIHJldHVybiB4OwogfQorI3VuZGVmIEhBU0gKIAogUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKICAgICAgICAgICAgICAiUy5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKQEAgLTc3MjAsMTAgKzExMDgwLDEwIEBACiBMaWtlIFMuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2luZGV4KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2luZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAKQEAgLTc3MzEsMTQgKzExMDkxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YnN0cmluZyksIFB5VW5pY29kZV9HRVRfU0laRShzdWJzdHJpbmcpLAotICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHJlc3VsdCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdWJzdHJpbmcgbm90IGZvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzc1NCwyNCArMTExMTgsMzEgQEAKIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzbG93ZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2xvd2VyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGNhc2VkOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKwogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU0xPV0VSKCpwKSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU0xPV0VSKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CiAgICAgY2FzZWQgPSAwOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoY2gpIHx8IFB5X1VOSUNPREVfSVNUSVRMRShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwpAQCAtNzc4OCwyNCArMTExNTksMzEgQEAKIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzdXBwZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc3VwcGVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGNhc2VkOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKwogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU1VQUEVSKCpwKSAhPSAwKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTVVBQRVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpICE9IDApOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIGNhc2VkID0gMDsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGNoKSB8fCBQeV9VTklDT0RFX0lTVElUTEUoY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKQEAgLTc4MjQsMjYgKzExMjAyLDM0IEBACiBSZXR1cm4gRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzdGl0bGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc3RpdGxlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGNhc2VkLCBwcmV2aW91c19pc19jYXNlZDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChQeV9VTklDT0RFX0lTVElUTEUoKnApICE9IDApIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X1VOSUNPREVfSVNVUFBFUigqcCkgIT0gMCkpOworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKFB5X1VOSUNPREVfSVNUSVRMRShjaCkgIT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSAhPSAwKSk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwogICAgIGNhc2VkID0gMDsKICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjaCkgfHwgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkgewogICAgICAgICAgICAgaWYgKHByZXZpb3VzX2lzX2Nhc2VkKQpAQCAtNzg3MCwyMyArMTEyNTYsMjkgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc3NwYWNlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNzcGFjZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CkBAIC03OTAwLDIzICsxMTI5MiwyOSBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzYWxwaGEoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc2FscGhhKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTQUxQSEEoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNBTFBIQShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNBTFBIQShfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTQUxQSEEoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTc5MjksMjMgKzExMzI3LDMxIEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNhbG51bShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzYWxudW0oUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0FMTlVNKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuID09IDEpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNBTE5VTShjaCkpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTQUxOVU0oY2gpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CkBAIC03OTU5LDIzICsxMTM2NSwyOSBAQAogRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzZGVjaW1hbChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzZGVjaW1hbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RFQ0lNQUwoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RFQ0lNQUwoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTc5ODgsMjMgKzExNDAwLDMwIEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNkaWdpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzZGlnaXQoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNESUdJVCgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTRElHSVQoY2gpKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RJR0lUKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNESUdJVChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtODAxNywyMyArMTE0MzYsMjkgQEAKIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc251bWVyaWMoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc251bWVyaWMoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQyhQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNOVU1FUklDKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNOVU1FUklDKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC04MDQyLDEzICsxMTQ2NywyMSBAQAogaW50CiBQeVVuaWNvZGVfSXNJZGVudGlmaWVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgoUHlVbmljb2RlT2JqZWN0KilzZWxmKTsKLSAgICBjb25zdCBQeV9VTklDT0RFICplOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X1VDUzQgZmlyc3Q7CiAKLSAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJpZGVudGlmaWVyIG5vdCByZWFkeSIpOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFBFUCAzMTMxIHNheXMgdGhhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIG11c3QgYmUgaW4KICAgICAgICBYSURfU3RhcnQgYW5kIHN1YnNlcXVlbnQgY2hhcmFjdGVycyBpbiBYSURfQ29udGludWUsCkBAIC04MDU4LDEzICsxMTQ5MSwxMiBAQAogICAgICAgIGRlZmluaXRpb24gb2YgWElEX1N0YXJ0IGFuZCBYSURfQ29udGludWUsIGl0IGlzIHN1ZmZpY2llbnQKICAgICAgICB0byBjaGVjayBqdXN0IGZvciB0aGVzZSwgZXhjZXB0IHRoYXQgXyBtdXN0IGJlIGFsbG93ZWQKICAgICAgICBhcyBzdGFydGluZyBhbiBpZGVudGlmaWVyLiAgKi8KLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICBmaXJzdCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZmlyc3QgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKICAgICBpZiAoIV9QeVVuaWNvZGVfSXNYaWRTdGFydChmaXJzdCkgJiYgZmlyc3QgIT0gMHg1RiAvKiBMT1cgTElORSAqLykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB3aGlsZSAocCA8IGUpCi0gICAgICAgIGlmICghX1B5VW5pY29kZV9Jc1hpZENvbnRpbnVlKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDE7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsgaSsrKQorICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNYaWRDb250aW51ZShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gMTsKIH0KQEAgLTgwOTAsMTcgKzExNTIyLDIzIEBACiBzdGF0aWMgUHlPYmplY3QqCiB1bmljb2RlX2lzcHJpbnRhYmxlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJiBQeV9VTklDT0RFX0lTUFJJTlRBQkxFKCpwKSkgewotICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICB9CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkgeworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CiAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgICAgIH0KICAgICB9CkBAIC04MTIwLDkgKzExNTU4LDExIEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci11bmljb2RlX2xlbmd0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2xlbmd0aChQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiB9CiAKIFB5RG9jX1NUUlZBUihsanVzdF9fZG9jX18sCkBAIC04MTMyLDIwICsxMTU3MiwyMSBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9sanVzdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9sanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6bGp1c3QiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgMCwgd2lkdGggLSBzZWxmLT5sZW5ndGgsIGZpbGxjaGFyKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICByZXR1cm4gcGFkKHNlbGYsIDAsIHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIGZpbGxjaGFyKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxvd2VyX19kb2NfXywKQEAgLTgxNTQsOSArMTE1OTUsMTMgQEAKIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBTIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfbG93ZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9sb3dlcihQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gZml4dXAoc2VsZiwgZml4bG93ZXIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgIHJldHVybiBhc2NpaV91cHBlcl9vcl9sb3dlcihzZWxmLCAxKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fbG93ZXIpOwogfQogCiAjZGVmaW5lIExFRlRTVFJJUCAwCkBAIC04MTcwLDE5ICsxMTYxNSwyNyBAQAogCiAvKiBleHRlcm5hbGx5IHZpc2libGUgZm9yIHN0ci5zdHJpcCh1bmljb2RlKSAqLwogUHlPYmplY3QgKgotX1B5VW5pY29kZV9YU3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqc2Vwb2JqKQorX1B5VW5pY29kZV9YU3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICpzZXBvYmopCiB7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIFB5X1VOSUNPREUgKnNlcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlcG9iaik7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2Vwb2JqKTsKLSAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgdm9pZCAqZGF0YTsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGksIGosIGxlbjsKKyAgICBCTE9PTV9NQVNLIHNlcG1hc2s7CiAKLSAgICBCTE9PTV9NQVNLIHNlcG1hc2sgPSBtYWtlX2Jsb29tX21hc2soc2VwLCBzZXBsZW4pOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHNlcG9iaikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBzZXBtYXNrID0gbWFrZV9ibG9vbV9tYXNrKFB5VW5pY29kZV9LSU5EKHNlcG9iaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShzZXBvYmopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2Vwb2JqKSk7CiAKICAgICBpID0gMDsKICAgICBpZiAoc3RyaXB0eXBlICE9IFJJR0hUU1RSSVApIHsKLSAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgQkxPT01fTUVNQkVSKHNlcG1hc2ssIHNbaV0sIHNlcCwgc2VwbGVuKSkgeworICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJgorICAgICAgICAgICAgICAgQkxPT01fTUVNQkVSKHNlcG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBzZXBvYmopKSB7CiAgICAgICAgICAgICBpKys7CiAgICAgICAgIH0KICAgICB9CkBAIC04MTkxLDI4ICsxMTY0NCw3MCBAQAogICAgIGlmIChzdHJpcHR5cGUgIT0gTEVGVFNUUklQKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGotLTsKLSAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIEJMT09NX01FTUJFUihzZXBtYXNrLCBzW2pdLCBzZXAsIHNlcGxlbikpOworICAgICAgICB9IHdoaWxlIChqID49IGkgJiYKKyAgICAgICAgICAgICAgICAgQkxPT01fTUVNQkVSKHNlcG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopLCBzZXBvYmopKTsKICAgICAgICAgaisrOwogICAgIH0KIAotICAgIGlmIChpID09IDAgJiYgaiA9PSBsZW4gJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocytpLCBqLWkpOworICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHNlbGYsIGksIGopOwogfQogCitQeU9iamVjdCoKK1B5VW5pY29kZV9TdWJzdHJpbmcoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGVuZCA9IFB5X01JTihlbmQsIGxlbmd0aCk7CisKKyAgICBpZiAoc3RhcnQgPT0gMCAmJiBlbmQgPT0gbGVuZ3RoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHN0YXJ0ID49IGxlbmd0aCB8fCBlbmQgPCBzdGFydCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0OworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpIHsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tQVNDSUkoKGNoYXIqKShkYXRhICsgc3RhcnQpLCBsZW5ndGgpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCk7CisgICAgfQorfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZG9fc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlKQorZG9fc3RyaXAoUHlPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUpCiB7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLCBpLCBqOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAKICAgICBpID0gMDsKICAgICBpZiAoc3RyaXB0eXBlICE9IFJJR0hUU1RSSVApIHsKLSAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgUHlfVU5JQ09ERV9JU1NQQUNFKHNbaV0pKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuICYmIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTgyMjEsMjEgKzExNzE2LDE2IEBACiAgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgai0tOwotICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKHNbal0pKTsKKyAgICAgICAgfSB3aGlsZSAoaiA+PSBpICYmIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKSkpOwogICAgICAgICBqKys7CiAgICAgfQogCi0gICAgaWYgKGkgPT0gMCAmJiBqID09IGxlbiAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzK2ksIGotaSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwgaSwgaik7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX2FyZ3N0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCitkb19hcmdzdHJpcChQeU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CiAKQEAgLTgyNjUsNyArMTE3NTUsNyBAQAogSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9zdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9zdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIEJPVEhTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04MjgxLDcgKzExNzcxLDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbHN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2xzdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIExFRlRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04Mjk3LDcgKzExNzg3LDcgQEAKIElmIGNoYXJzIGlzIGdpdmVuIGFuZCBub3QgTm9uZSwgcmVtb3ZlIGNoYXJhY3RlcnMgaW4gY2hhcnMgaW5zdGVhZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcnN0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JzdHJpcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKICAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIFJJR0hUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwpAQCAtODMwNyw2NCArMTE3OTcsNzYgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JlcGVhdChQeVVuaWNvZGVPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBsZW4pCit1bmljb2RlX3JlcGVhdChQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90IGxlbikKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9zc2l6ZV90IG5jaGFyczsKLSAgICBzaXplX3QgbmJ5dGVzOworICAgIFB5T2JqZWN0ICp1OworICAgIFB5X3NzaXplX3QgbmNoYXJzLCBuOwogCiAgICAgaWYgKGxlbiA8IDEpIHsKICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CiAgICAgfQogCi0gICAgaWYgKGxlbiA9PSAxICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpIHsKLSAgICAgICAgLyogbm8gcmVwZWF0LCByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIFB5X0lOQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc3RyOwotICAgIH0KKyAgICAvKiBubyByZXBlYXQsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcgKi8KKyAgICBpZiAobGVuID09IDEpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc3RyKTsKIAotICAgIC8qIGVuc3VyZSAjIG9mIGNoYXJzIG5lZWRlZCBkb2Vzbid0IG92ZXJmbG93IGludCBhbmQgIyBvZiBieXRlcwotICAgICAqIG5lZWRlZCBkb2Vzbid0IG92ZXJmbG93IHNpemVfdAotICAgICAqLwotICAgIG5jaGFycyA9IGxlbiAqIHN0ci0+bGVuZ3RoOwotICAgIGlmIChuY2hhcnMgLyBsZW4gIT0gc3RyLT5sZW5ndGgpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPiBQWV9TU0laRV9UX01BWCAvIGxlbikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBlYXRlZCBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ieXRlcyA9IChuY2hhcnMgKyAxKSAqIHNpemVvZihQeV9VTklDT0RFKTsKLSAgICBpZiAobmJ5dGVzIC8gc2l6ZW9mKFB5X1VOSUNPREUpICE9IChzaXplX3QpKG5jaGFycyArIDEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGVhdGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KG5jaGFycyk7CisgICAgbmNoYXJzID0gbGVuICogUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIHUgPSBQeVVuaWNvZGVfTmV3KG5jaGFycywgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cikpOwogICAgIGlmICghdSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHUpID09IFB5VW5pY29kZV9LSU5EKHN0cikpOwogCi0gICAgcCA9IHUtPnN0cjsKLQotICAgIGlmIChzdHItPmxlbmd0aCA9PSAxKSB7Ci0gICAgICAgIFB5X1VOSUNPREVfRklMTChwLCBzdHItPnN0clswXSwgbGVuKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBzdHItPmxlbmd0aDsgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29waWVkIHRoaXMgZmFyICovCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzdHItPnN0ciwgc3RyLT5sZW5ndGgpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IDEpIHsKKyAgICAgICAgY29uc3QgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgICAgICBjb25zdCBQeV9VQ1M0IGZpbGxfY2hhciA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIFB5VW5pY29kZV9EQVRBKHN0ciksIDApOworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICAgICAgdm9pZCAqdG8gPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICAgICAgICAgIG1lbXNldCh0bywgKHVuc2lnbmVkIGNoYXIpZmlsbF9jaGFyLCBsZW4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIFB5X1VDUzIgKnVjczIgPSBQeVVuaWNvZGVfMkJZVEVfREFUQSh1KTsKKyAgICAgICAgICAgIGZvciAobiA9IDA7IG4gPCBsZW47ICsrbikKKyAgICAgICAgICAgICAgICB1Y3MyW25dID0gZmlsbF9jaGFyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfVUNTNCAqdWNzNCA9IFB5VW5pY29kZV80QllURV9EQVRBKHUpOworICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgKytuKQorICAgICAgICAgICAgICAgIHVjczRbbl0gPSBmaWxsX2NoYXI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvcGllZCB0aGlzIGZhciAqLworICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgICAgIGNoYXIgKnRvID0gKGNoYXIgKikgUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgIFB5X01FTUNQWSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKKyAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBjaGFyX3NpemUpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5jaGFycykgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHArZG9uZSwgcCwgbik7CisgICAgICAgICAgICBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOworICAgICAgICAgICAgUHlfTUVNQ1BZKHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CiAgICAgICAgICAgICBkb25lICs9IG47CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CiAgICAgUHlPYmplY3QgKnNlbGY7CiAgICAgUHlPYmplY3QgKnN0cjE7CkBAIC04Mzg1LDEwICsxMTg4NywxMiBAQAogICAgICAgICBQeV9ERUNSRUYoc3RyMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSByZXBsYWNlKChQeVVuaWNvZGVPYmplY3QgKilzZWxmLAotICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXN0cjEsCi0gICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopc3RyMiwKLSAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgIFB5X0RFQ1JFRihzdHIyKTsKQEAgLTg0MDMsMTc3ICsxMTkwNywxODEgQEAKIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcmVwbGFjZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yZXBsYWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN0cjE7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdHIyOworICAgIFB5T2JqZWN0ICpzdHIxOworICAgIFB5T2JqZWN0ICpzdHIyOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoKFB5T2JqZWN0ICopc3RyMSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjEpOwogICAgIGlmIChzdHIxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjIgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoKFB5T2JqZWN0ICopc3RyMik7CisgICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjIpOwogICAgIGlmIChzdHIyID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKKyAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwogCiAgICAgUHlfREVDUkVGKHN0cjEpOwogICAgIFB5X0RFQ1JFRihzdHIyKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICp1bmljb2RlX3JlcHIoUHlPYmplY3QgKnVuaWNvZGUpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9yZXByKFB5T2JqZWN0ICp1bmljb2RlKQogewogICAgIFB5T2JqZWN0ICpyZXByOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfVU5JQ09ERSAqcyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKKyAgICBQeV9zc2l6ZV90IGlzaXplOworICAgIFB5X3NzaXplX3Qgb3NpemUsIHNxdW90ZSwgZHF1b3RlLCBpLCBvOworICAgIFB5X1VDUzQgbWF4LCBxdW90ZTsKKyAgICBpbnQgaWtpbmQsIG9raW5kOworICAgIHZvaWQgKmlkYXRhLCAqb2RhdGE7CiAKLSAgICAvKiBYWFgobm5vcndpdHopOiByYXRoZXIgdGhhbiBvdmVyLWFsbG9jYXRpbmcsIGl0IHdvdWxkIGJlCi0gICAgICAgYmV0dGVyIHRvIGNob29zZSBhIGRpZmZlcmVudCBzY2hlbWUuICBQZXJoYXBzIHNjYW4gdGhlCi0gICAgICAgZmlyc3QgTi1jaGFycyBvZiB0aGUgc3RyaW5nIGFuZCBhbGxvY2F0ZSBiYXNlZCBvbiB0aGF0IHNpemUuCi0gICAgKi8KLSAgICAvKiBJbml0aWFsIGFsbG9jYXRpb24gaXMgYmFzZWQgb24gdGhlIGxvbmdlc3QtcG9zc2libGUgdW5pY2hyCi0gICAgICAgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSAoVVRGLTMyKSBidWlsZHMgJ1xVMDB4eHh4eHgnIGlzIDEwIGNoYXJzIHBlciBzb3VyY2UKLSAgICAgICB1bmljaHIsIHNvIGluIHRoaXMgY2FzZSBpdCdzIHRoZSBsb25nZXN0IHVuaWNociBlc2NhcGUuIEluCi0gICAgICAgbmFycm93IChVVEYtMTYpIGJ1aWxkcyB0aGlzIGlzIGZpdmUgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIKLSAgICAgICBzaW5jZSB0aGVyZSBhcmUgdHdvIHVuaWNocnMgaW4gdGhlIHN1cnJvZ2F0ZSBwYWlyLCBzbyBpbiBuYXJyb3cKLSAgICAgICAoVVRGLTE2KSBidWlsZHMgaXQncyBub3QgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4KLQotICAgICAgIEluIHdpZGUgb3IgbmFycm93IGJ1aWxkcyAnXHV4eHh4JyBpcyA2IGNoYXJzIHBlciBzb3VyY2UgdW5pY2hyLAotICAgICAgIHNvIGluIHRoZSBuYXJyb3cgKFVURi0xNikgYnVpbGQgY2FzZSBpdCdzIHRoZSBsb25nZXN0IHVuaWNocgotICAgICAgIGVzY2FwZS4KLSAgICAqLwotCi0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAvKiBxdW90ZXMgKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMTAqc2l6ZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgNipzaXplCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKTsKKyAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAKLSAgICAvKiBBZGQgcXVvdGUgKi8KLSAgICAqcCsrID0gKGZpbmRjaGFyKHMsIHNpemUsICdcJycpICYmCi0gICAgICAgICAgICAhZmluZGNoYXIocywgc2l6ZSwgJyInKSkgPyAnIicgOiAnXCcnOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOworICAgIC8qIENvbXB1dGUgbGVuZ3RoIG9mIG91dHB1dCwgcXVvdGUgY2hhcmFjdGVycywgYW5kCisgICAgICAgbWF4aW11bSBjaGFyYWN0ZXIgKi8KKyAgICBvc2l6ZSA9IDI7IC8qIHF1b3RlcyAqLworICAgIG1heCA9IDEyNzsKKyAgICBzcXVvdGUgPSBkcXVvdGUgPSAwOworICAgIGlraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGlraW5kLCBpZGF0YSwgaSk7CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSAnXCcnOiBzcXVvdGUrKzsgb3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJyInOiAgZHF1b3RlKys7IG9zaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1x0JzogY2FzZSAnXHInOiBjYXNlICdcbic6CisgICAgICAgICAgICBvc2l6ZSArPSAyOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIEZhc3QtcGF0aCBBU0NJSSAqLworICAgICAgICAgICAgaWYgKGNoIDwgJyAnIHx8IGNoID09IDB4N2YpCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDdmKQorICAgICAgICAgICAgICAgIG9zaXplKys7CisgICAgICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTUFJJTlRBQkxFKGNoKSkgeworICAgICAgICAgICAgICAgIG9zaXplKys7CisgICAgICAgICAgICAgICAgbWF4ID0gY2ggPiBtYXggPyBjaCA6IG1heDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgICAgIG9zaXplICs9IDY7IC8qIFx1SEhISCAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9zaXplICs9IDEwOyAvKiBcdUhISEhISEhIICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICBxdW90ZSA9ICdcJyc7CisgICAgaWYgKHNxdW90ZSkgeworICAgICAgICBpZiAoZHF1b3RlKQorICAgICAgICAgICAgLyogQm90aCBzcXVvdGUgYW5kIGRxdW90ZSBwcmVzZW50LiBVc2Ugc3F1b3RlLAorICAgICAgICAgICAgICAgYW5kIGVzY2FwZSB0aGVtICovCisgICAgICAgICAgICBvc2l6ZSArPSBzcXVvdGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHF1b3RlID0gJyInOworICAgIH0KKworICAgIHJlcHIgPSBQeVVuaWNvZGVfTmV3KG9zaXplLCBtYXgpOworICAgIGlmIChyZXByID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG9raW5kID0gUHlVbmljb2RlX0tJTkQocmVwcik7CisgICAgb2RhdGEgPSBQeVVuaWNvZGVfREFUQShyZXByKTsKKworICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIDAsIHF1b3RlKTsKKyAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvc2l6ZS0xLCBxdW90ZSk7CisKKyAgICBmb3IgKGkgPSAwLCBvID0gMTsgaSA8IGlzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGlraW5kLCBpZGF0YSwgaSk7CiAKICAgICAgICAgLyogRXNjYXBlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgKi8KLSAgICAgICAgaWYgKChjaCA9PSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVswXSkgfHwgKGNoID09ICdcXCcpKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgaWYgKChjaCA9PSBxdW90ZSkgfHwgKGNoID09ICdcXCcpKSB7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCiAgICAgICAgIGlmIChjaCA9PSAnXHQnKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAndCcpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICduJzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICduJyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3InOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3InKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIHRvICdceGhoJyAqLwogICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA9PSAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd4Jyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBDb3B5IEFTQ0lJIGNoYXJhY3RlcnMgYXMtaXMgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIE5vbi1BU0NJSSBjaGFyYWN0ZXJzICovCiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVUNTNCB1Y3MgPSBjaDsKLQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyID0gMDsKLSAgICAgICAgICAgIC8qIEdldCBjb2RlIHBvaW50IGZyb20gc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGlmIChzaXplID4gMCkgewotICAgICAgICAgICAgICAgIGNoMiA9ICpzOwotICAgICAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPCAweERDMDAgJiYgY2gyID49IDB4REMwMAotICAgICAgICAgICAgICAgICAgICAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgICAgICAvKiBNYXAgVW5pY29kZSB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMKICAgICAgICAgICAgICAgIChjYXRlZ29yaWVzIFoqIGFuZCBDKiBleGNlcHQgQVNDSUkgc3BhY2UpCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKHVjcykpIHsKKyAgICAgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShjaCkpIHsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOwogICAgICAgICAgICAgICAgIC8qIE1hcCA4LWJpdCBjaGFyYWN0ZXJzIHRvICdceGhoJyAqLwotICAgICAgICAgICAgICAgIGlmICh1Y3MgPD0gMHhmZikgewotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVjcyA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTYpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiA0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgICAgIGlmIChjaCA8PSAweGZmKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3gnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd1Jyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1tjaCAmIDB4Rl0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ3UnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMEZdOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdVJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHhGXSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogQ29weSBjaGFyYWN0ZXJzIGFzLWlzICovCiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gY2g7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGlmICh1Y3MgPj0gMHgxMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGNoMjsKLSNlbmRpZgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIC8qIEFkZCBxdW90ZSAqLwotICAgICpwKysgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKVswXTsKLQotICAgICpwID0gJ1wwJzsKLSAgICBQeVVuaWNvZGVfUmVzaXplKCZyZXByLCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwcikpOworICAgIC8qIENsb3NpbmcgcXVvdGUgYWxyZWFkeSBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXByLCAxKSk7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTg1ODcsOSArMTIwOTUsOSBAQAogUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JmaW5kKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JmaW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgUHlfc3NpemVfdCBlbmQ7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CkBAIC04NTk4LDE0ICsxMjEwNiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCkBAIC04NjE1LDkgKzEyMTI3LDkgQEAKIExpa2UgUy5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JpbmRleChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKQEAgLTg2MjYsMTggKzEyMTM4LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInN1YnN0cmluZyBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCkBAIC04NjQ4LDI1ICsxMjE2NSwyNSBAQAogZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yanVzdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6cmp1c3QiLCAmd2lkdGgsIGNvbnZlcnRfdWMsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBwYWQoc2VsZiwgd2lkdGggLSBzZWxmLT5sZW5ndGgsIDAsIGZpbGxjaGFyKTsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgPj0gd2lkdGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICByZXR1cm4gcGFkKHNlbGYsIHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIDAsIGZpbGxjaGFyKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCkBAIC04NjgxLDcgKzEyMTk4LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdCA9IHNwbGl0KChQeVVuaWNvZGVPYmplY3QgKilzLCAoUHlVbmljb2RlT2JqZWN0ICopc2VwLCBtYXhzcGxpdCk7CisgICAgcmVzdWx0ID0gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiAKICAgICBQeV9ERUNSRUYocyk7CiAgICAgUHlfWERFQ1JFRihzZXApOwpAQCAtODY4OSw3ICsxMjIwNiw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0gICAgICAgICAgICAgIlMuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAorICAgICAgICAgICAgICJTLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIFMsIHVzaW5nIHNlcCBhcyB0aGVcblwKIGRlbGltaXRlciBzdHJpbmcuICBJZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdFxuXApAQCAtODY5OCwyMCArMTIyMTUsMjIgQEAKIHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3NwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3NwbGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPbjpzcGxpdCIsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdCgoUHlPYmplY3QgKilzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKIH0KIAogUHlPYmplY3QgKgpAQCAtODcyMCw2ICsxMjIzOSw5IEBACiAgICAgUHlPYmplY3QqIHN0cl9vYmo7CiAgICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CiAgICAgaWYgKCFzdHJfb2JqKQpAQCAtODcyOSwxNiArMTIyNTEsNjIgQEAKICAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIG91dCA9IHN0cmluZ2xpYl9wYXJ0aXRpb24oCi0gICAgICAgIHN0cl9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHN0cl9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyX29iaiksCi0gICAgICAgIHNlcF9vYmosIFB5VW5pY29kZV9BU19VTklDT0RFKHNlcF9vYmopLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwX29iaikKLSAgICAgICAgKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CisgICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOworICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cl9vYmopKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgb3V0ID0gMDsKKyAgICB9CiAKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogCkBAIC04NzQ4LDYgKzEyMzE2LDkgQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKICAgICBpZiAoIXN0cl9vYmopCkBAIC04NzU4LDE1ICsxMjMyOSw1NiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBvdXQgPSBzdHJpbmdsaWJfcnBhcnRpdGlvbigKLSAgICAgICAgc3RyX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzdHJfb2JqKSwKLSAgICAgICAgc2VwX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VwX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzZXBfb2JqKQotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX2luKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOworICAgIGtpbmQgPSBQeV9NQVgoa2luZDEsIGtpbmQyKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX2luKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9pbiwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyX2luKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczRsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBvdXQgPSAwOworICAgIH0KIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKQEAgLTg3NzcsOSArMTIzODksOSBAQAogZm91bmQsIHJldHVybiBTIGFuZCB0d28gZW1wdHkgc3RyaW5ncy4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9wYXJ0aXRpb24oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQordW5pY29kZV9wYXJ0aXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBhcmF0b3IpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9QYXJ0aXRpb24oKFB5T2JqZWN0ICopc2VsZiwgc2VwYXJhdG9yKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1BhcnRpdGlvbihzZWxmLCBzZXBhcmF0b3IpOwogfQogCiBQeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCkBAIC04NzkwLDE0ICsxMjQwMiwxMyBAQAogc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJuIHR3byBlbXB0eSBzdHJpbmdzIGFuZCBTLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JwYXJ0aXRpb24oUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQordW5pY29kZV9ycGFydGl0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwYXJhdG9yKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfUlBhcnRpdGlvbigoUHlPYmplY3QgKilzZWxmLCBzZXBhcmF0b3IpOworICAgIHJldHVybiBQeVVuaWNvZGVfUlBhcnRpdGlvbihzZWxmLCBzZXBhcmF0b3IpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCkBAIC04ODEyLDcgKzEyNDIzLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlc3VsdCA9IHJzcGxpdCgoUHlVbmljb2RlT2JqZWN0ICopcywgKFB5VW5pY29kZU9iamVjdCAqKXNlcCwgbWF4c3BsaXQpOworICAgIHJlc3VsdCA9IHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIAogICAgIFB5X0RFQ1JFRihzKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CkBAIC04ODIwLDcgKzEyNDMxLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCi0gICAgICAgICAgICAgIlMucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKKyAgICAgICAgICAgICAiUy5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gUywgdXNpbmcgc2VwIGFzIHRoZVxuXAogZGVsaW1pdGVyIHN0cmluZywgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGFuZFxuXApAQCAtODgyOSwyMCArMTI0NDAsMjIgQEAKIGlzIGEgc2VwYXJhdG9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3JzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9yc3BsaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnJzcGxpdCIsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQotICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHJpbmcsIG1heGNvdW50KTsKKyAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUlNwbGl0KChQeU9iamVjdCAqKXNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLApAQCAtODg1MywyNiArMTI0NjYsMjIgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3NwbGl0bGluZXMoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfc3BsaXRsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgJmtlZXBlbmRzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6c3BsaXRsaW5lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAma2VlcGVuZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXRsaW5lcygoUHlPYmplY3QgKilzZWxmLCBrZWVwZW5kcyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdGxpbmVzKHNlbGYsIGtlZXBlbmRzKTsKIH0KIAogc3RhdGljCiBQeU9iamVjdCAqdW5pY29kZV9zdHIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfSBlbHNlCi0gICAgICAgIC8qIFN1YnR5cGUgLS0gcmV0dXJuIGdlbnVpbmUgdW5pY29kZSBzdHJpbmcgd2l0aCB0aGUgc2FtZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiB9CiAKIFB5RG9jX1NUUlZBUihzd2FwY2FzZV9fZG9jX18sCkBAIC04ODgyLDkgKzEyNDkxLDExIEBACiBhbmQgdmljZSB2ZXJzYS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zd2FwY2FzZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3N3YXBjYXNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhzd2FwY2FzZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX3N3YXBjYXNlKTsKIH0KIAogUHlEb2NfU1RSVkFSKG1ha2V0cmFuc19fZG9jX18sCkBAIC04OTAwLDcgKzEyNTExLDcgQEAKIG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX21ha2V0cmFucyhQeVVuaWNvZGVPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICp4LCAqeSA9IE5VTEwsICp6ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3ID0gTlVMTCwgKmtleSwgKnZhbHVlOwpAQCAtODkxMywyNCArMTI1MjQsMzAgQEAKICAgICBpZiAoIW5ldykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHkgIT0gTlVMTCkgeworICAgICAgICBpbnQgeF9raW5kLCB5X2tpbmQsIHpfa2luZDsKKyAgICAgICAgdm9pZCAqeF9kYXRhLCAqeV9kYXRhLCAqel9kYXRhOworCiAgICAgICAgIC8qIHggbXVzdCBiZSBhIHN0cmluZyB0b28sIG9mIGVxdWFsIGxlbmd0aCAqLwotICAgICAgICBQeV9zc2l6ZV90IHlsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoeSk7CiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZmlyc3QgbWFrZXRyYW5zIGFyZ3VtZW50IG11c3QgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSBhIHN0cmluZyBpZiB0aGVyZSBpcyBhIHNlY29uZCBhcmd1bWVudCIpOwogICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh4KSAhPSB5bGVuKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh5KSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aGUgZmlyc3QgdHdvIG1ha2V0cmFucyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50cyBtdXN0IGhhdmUgZXF1YWwgbGVuZ3RoIik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQogICAgICAgICAvKiBjcmVhdGUgZW50cmllcyBmb3IgdHJhbnNsYXRpbmcgY2hhcnMgaW4geCB0byB0aG9zZSBpbiB5ICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKHgpW2ldKTsKKyAgICAgICAgeF9raW5kID0gUHlVbmljb2RlX0tJTkQoeCk7CisgICAgICAgIHlfa2luZCA9IFB5VW5pY29kZV9LSU5EKHkpOworICAgICAgICB4X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh4KTsKKyAgICAgICAgeV9kYXRhID0gUHlVbmljb2RlX0RBVEEoeSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KTsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoeF9raW5kLCB4X2RhdGEsIGkpKTsKICAgICAgICAgICAgIGlmICgha2V5KQogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeSlbaV0pOworICAgICAgICAgICAgdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoeV9raW5kLCB5X2RhdGEsIGkpKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTg5NDMsOCArMTI1NjAsMTAgQEAKICAgICAgICAgfQogICAgICAgICAvKiBjcmVhdGUgZW50cmllcyBmb3IgZGVsZXRpbmcgY2hhcnMgaW4geiAqLwogICAgICAgICBpZiAoeiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHopOyBpKyspIHsKLSAgICAgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeilbaV0pOworICAgICAgICAgICAgel9raW5kID0gUHlVbmljb2RlX0tJTkQoeik7CisgICAgICAgICAgICB6X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh6KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSCh6KTsgaSsrKSB7CisgICAgICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKHpfa2luZCwgel9kYXRhLCBpKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKG5ldywga2V5LCBQeV9Ob25lKTsKQEAgLTg5NTQsNiArMTI1NzMsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CisKICAgICAgICAgLyogeCBtdXN0IGJlIGEgZGljdCAqLwogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KHgpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaWYgeW91IGdpdmUgb25seSBvbmUgYXJndW1lbnQgIgpAQCAtODk2NSwxMiArMTI1ODcsMTQgQEAKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewogICAgICAgICAgICAgICAgIC8qIGNvbnZlcnQgc3RyaW5nIGtleXMgdG8gaW50ZWdlciBrZXlzICovCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5ld2tleTsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKGtleSkgIT0gMSkgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpICE9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzdHJpbmcga2V5cyBpbiB0cmFuc2xhdGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRhYmxlIG11c3QgYmUgb2YgbGVuZ3RoIDEiKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ld2tleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpWzBdKTsKKyAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoa2V5KTsKKyAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoa2V5KTsKKyAgICAgICAgICAgICAgICBuZXdrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpOwogICAgICAgICAgICAgICAgIGlmICghbmV3a2V5KQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShuZXcsIG5ld2tleSwgdmFsdWUpOwpAQCAtOTAwNCw5ICsxMjYyOCw5IEBACiBhcmUgZGVsZXRlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV90cmFuc2xhdGUoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUpCit1bmljb2RlX3RyYW5zbGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgdGFibGUsICJpZ25vcmUiKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHNlbGYsIHRhYmxlLCAiaWdub3JlIik7CiB9CiAKIFB5RG9jX1NUUlZBUih1cHBlcl9fZG9jX18sCkBAIC05MDE1LDkgKzEyNjM5LDEzIEBACiBSZXR1cm4gYSBjb3B5IG9mIFMgY29udmVydGVkIHRvIHVwcGVyY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV91cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX3VwcGVyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXh1cHBlcik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDApOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb191cHBlcik7CiB9CiAKIFB5RG9jX1NUUlZBUih6ZmlsbF9fZG9jX18sCkBAIC05MDI3LDU1ICsxMjY1NSw1MCBAQAogb2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gVGhlIHN0cmluZyBTIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfemZpbGwoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfemZpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgZmlsbDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KKyAgICBQeU9iamVjdCAqdTsKICAgICBQeV9zc2l6ZV90IHdpZHRoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaHI7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46emZpbGwiLCAmd2lkdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGgpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKQotICAgICAgICAgICAgICAgICk7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZmlsbCA9IHdpZHRoIC0gc2VsZi0+bGVuZ3RoOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIGZpbGwgPSB3aWR0aCAtIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgdSA9IHBhZChzZWxmLCBmaWxsLCAwLCAnMCcpOwogCiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAodS0+c3RyW2ZpbGxdID09ICcrJyB8fCB1LT5zdHJbZmlsbF0gPT0gJy0nKSB7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBmaWxsKTsKKworICAgIGlmIChjaHIgPT0gJysnIHx8IGNociA9PSAnLScpIHsKICAgICAgICAgLyogbW92ZSBzaWduIHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgKi8KLSAgICAgICAgdS0+c3RyWzBdID0gdS0+c3RyW2ZpbGxdOwotICAgICAgICB1LT5zdHJbZmlsbF0gPSAnMCc7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCAwLCBjaHIpOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgZmlsbCwgJzAnKTsKICAgICB9CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0KikgdTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHUsIDEpKTsKKyAgICByZXR1cm4gdTsKIH0KIAogI2lmIDAKLXN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfZnJlZWxpc3RzaXplKFB5VW5pY29kZU9iamVjdCAqc2VsZikKLXsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG51bWZyZWUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9fZGVjaW1hbDJhc2NpaShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkoc2VsZik7CiB9CiAjZW5kaWYKIApAQCAtOTA4OCwxMSArMTI3MTEsMTEgQEAKIHByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9zdGFydHN3aXRoKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKK3VuaWNvZGVfc3RhcnRzd2l0aChQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBpbnQgcmVzdWx0OwpAQCAtOTEwMiw4ICsxMjcyNSw3IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7CisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwogICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwpAQCAtOTExNSw3ICsxMjczNyw3IEBACiAgICAgICAgIC8qIG5vdGhpbmcgbWF0Y2hlZCAqLwogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOworICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CiAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgpAQCAtOTEzNywxMSArMTI3NTksMTEgQEAKIHN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN0cmluZ3MgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9lbmRzd2l0aChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCit1bmljb2RlX2VuZHN3aXRoKFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBpbnQgcmVzdWx0OwpAQCAtOTE1MSw3ICsxMjc3Myw3IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KAorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoCiAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKICAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxNjMsNyArMTI3ODUsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgpAQCAtOTE3NSw3ICsxMjc5NywxNjAgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIgorUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgd3JpdGVyLT5zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKK30KKwordm9pZAorX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBtaW5fbGVuZ3RoKQoreworICAgIG1lbXNldCh3cml0ZXIsIDAsIHNpemVvZigqd3JpdGVyKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmtpbmQgPSA1OyAgICAvKiBpbnZhbGlkIGtpbmQgKi8KKyNlbmRpZgorICAgIHdyaXRlci0+bWluX2xlbmd0aCA9IFB5X01BWChtaW5fbGVuZ3RoLCAxMDApOworICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gKG1pbl9sZW5ndGggPiAwKTsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKQoreworICAgIFB5X3NzaXplX3QgbmV3bGVuOworICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CisKKyAgICBhc3NlcnQobGVuZ3RoID4gMCk7CisKKyAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLSB3cml0ZXItPnBvcykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG5ld2xlbiA9IHdyaXRlci0+cG9zICsgbGVuZ3RoOworCisgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICAvKiBvdmVyYWxsb2NhdGUgMjUlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVzaXplICovCisgICAgICAgICAgICBpZiAobmV3bGVuIDw9IChQWV9TU0laRV9UX01BWCAtIG5ld2xlbiAvIDQpKQorICAgICAgICAgICAgICAgIG5ld2xlbiArPSBuZXdsZW4gLyA0OworICAgICAgICAgICAgaWYgKG5ld2xlbiA8IHdyaXRlci0+bWluX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBuZXdsZW4gPSB3cml0ZXItPm1pbl9sZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbiwgbWF4Y2hhcik7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobmV3bGVuID4gd3JpdGVyLT5zaXplKSB7CisgICAgICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgLyogb3ZlcmFsbG9jYXRlIDI1JSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlc2l6ZSAqLworICAgICAgICAgICAgaWYgKG5ld2xlbiA8PSAoUFlfU1NJWkVfVF9NQVggLSBuZXdsZW4gLyA0KSkKKyAgICAgICAgICAgICAgICBuZXdsZW4gKz0gbmV3bGVuIC8gNDsKKyAgICAgICAgICAgIGlmIChuZXdsZW4gPCB3cml0ZXItPm1pbl9sZW5ndGgpCisgICAgICAgICAgICAgICAgbmV3bGVuID0gd3JpdGVyLT5taW5fbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgfHwgd3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICAgICAgLyogcmVzaXplICsgd2lkZW4gKi8KKyAgICAgICAgICAgIG5ld2J1ZmZlciA9IFB5VW5pY29kZV9OZXcobmV3bGVuLCBtYXhjaGFyKTsKKyAgICAgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhuZXdidWZmZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgMCwgd3JpdGVyLT5wb3MpOworICAgICAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIHdyaXRlci0+cmVhZG9ubHkgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbmV3YnVmZmVyID0gcmVzaXplX2NvbXBhY3Qod3JpdGVyLT5idWZmZXIsIG5ld2xlbik7CisgICAgICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyKSB7CisgICAgICAgIGFzc2VydCghd3JpdGVyLT5yZWFkb25seSk7CisgICAgICAgIG5ld2J1ZmZlciA9IFB5VW5pY29kZV9OZXcod3JpdGVyLT5zaXplLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhuZXdidWZmZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCAwLCB3cml0ZXItPnBvcyk7CisgICAgICAgIFB5X0RFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZSh3cml0ZXIpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOworICAgIGlmIChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyIHx8IGxlbiA+IHdyaXRlci0+c2l6ZSAtIHdyaXRlci0+cG9zKSB7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMICYmICF3cml0ZXItPm92ZXJhbGxvY2F0ZSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHN0cik7CisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IHN0cjsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CisgICAgICAgICAgICB3cml0ZXItPnJlYWRvbmx5ID0gMTsKKyAgICAgICAgICAgIHdyaXRlci0+c2l6ZSA9IDA7CisgICAgICAgICAgICB3cml0ZXItPnBvcyArPSBsZW47CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwod3JpdGVyLCBsZW4sIG1heGNoYXIpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCAwLCBsZW4pOworICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICByZXR1cm4gMDsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnBvcyA9PSAwKSB7CisgICAgICAgIFB5X1hERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKyAgICBpZiAod3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpID09IHdyaXRlci0+cG9zKTsKKyAgICAgICAgcmV0dXJuIHdyaXRlci0+YnVmZmVyOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpICE9IHdyaXRlci0+cG9zKSB7CisgICAgICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CisgICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcyk7CisgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHdyaXRlci0+YnVmZmVyLCAxKSk7CisgICAgcmV0dXJuIHdyaXRlci0+YnVmZmVyOworfQorCit2b2lkCitfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKK30KKworI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIgogCiBQeURvY19TVFJWQVIoZm9ybWF0X19kb2NfXywKICAgICAgICAgICAgICAiUy5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKSAtPiBzdHJcblwKQEAgLTkxOTMsMTMgKzEyOTY4LDIzIEBACiB1bmljb2RlX19mb3JtYXRfXyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWQoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGZvcm1hdF9zcGVjKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeVVuaWNvZGVfRm9ybWF0QWR2YW5jZWRXcml0ZXIoJndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGZvcm1hdF9zcGVjLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKHBfZm9ybWF0X19kb2NfXywKQEAgLTkyMDgsMjggKzEyOTkzLDU1IEBACiBSZXR1cm4gYSBmb3JtYXR0ZWQgdmVyc2lvbiBvZiBTIGFzIGRlc2NyaWJlZCBieSBmb3JtYXRfc3BlYy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfX3NpemVvZl9fKFB5VW5pY29kZU9iamVjdCAqdikKK3VuaWNvZGVfX3NpemVvZl9fKFB5T2JqZWN0ICp2KQogewotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpICogKHYtPmxlbmd0aCArIDEpKTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisKKyAgICAvKiBJZiBpdCdzIGEgY29tcGFjdCBvYmplY3QsIGFjY291bnQgZm9yIGJhc2Ugc3RydWN0dXJlICsKKyAgICAgICBjaGFyYWN0ZXIgZGF0YS4gKi8KKyAgICBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodikpCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlBU0NJSU9iamVjdCkgKyBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSArIDE7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1QodikpCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlDb21wYWN0VW5pY29kZU9iamVjdCkgKworICAgICAgICAgICAgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgMSkgKiBQeVVuaWNvZGVfS0lORCh2KTsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogSWYgaXQgaXMgYSB0d28tYmxvY2sgb2JqZWN0LCBhY2NvdW50IGZvciBiYXNlIG9iamVjdCwgYW5kCisgICAgICAgICAgIGZvciBjaGFyYWN0ZXIgYmxvY2sgaWYgcHJlc2VudC4gKi8KKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeVVuaWNvZGVPYmplY3QpOworICAgICAgICBpZiAoX1B5VW5pY29kZV9EQVRBX0FOWSh2KSkKKyAgICAgICAgICAgIHNpemUgKz0gKFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgMSkgKgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9LSU5EKHYpOworICAgIH0KKyAgICAvKiBJZiB0aGUgd3N0ciBwb2ludGVyIGlzIHByZXNlbnQsIGFjY291bnQgZm9yIGl0IHVubGVzcyBpdCBpcyBzaGFyZWQKKyAgICAgICB3aXRoIHRoZSBkYXRhIHBvaW50ZXIuIENoZWNrIGlmIHRoZSBkYXRhIGlzIG5vdCBzaGFyZWQuICovCisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1dTVFJfTUVNT1JZKHYpKQorICAgICAgICBzaXplICs9IChQeVVuaWNvZGVfV1NUUl9MRU5HVEgodikgKyAxKSAqIHNpemVvZih3Y2hhcl90KTsKKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodikpCisgICAgICAgIHNpemUgKz0gUHlVbmljb2RlX1VURjhfTEVOR1RIKHYpICsgMTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKIFB5RG9jX1NUUlZBUihzaXplb2ZfX2RvY19fLAogICAgICAgICAgICAgICJTLl9fc2l6ZW9mX18oKSAtPiBzaXplIG9mIFMgaW4gbWVtb3J5LCBpbiBieXRlcyIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9nZXRuZXdhcmdzKFB5VW5pY29kZU9iamVjdCAqdikKK3VuaWNvZGVfZ2V0bmV3YXJncyhQeU9iamVjdCAqdikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjKSIsIHYtPnN0ciwgdi0+bGVuZ3RoKTsKKyAgICBQeU9iamVjdCAqY29weSA9IF9QeVVuaWNvZGVfQ29weSh2KTsKKyAgICBpZiAoIWNvcHkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTikiLCBjb3B5KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIHVuaWNvZGVfbWV0aG9kc1tdID0gewogICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2VuY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZW5jb2RlX19kb2NfX30sCiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgcmVwbGFjZV9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXQsIE1FVEhfVkFSQVJHUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yc3BsaXQsIE1FVEhfVkFSQVJHUywgcnNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHJzcGxpdF9fZG9jX199LAogICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9qb2luLCBNRVRIX08sIGpvaW5fX2RvY19ffSwKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsIGNhcGl0YWxpemVfX2RvY19ffSwKKyAgICB7ImNhc2Vmb2xkIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2Nhc2Vmb2xkLCBNRVRIX05PQVJHUywgY2FzZWZvbGRfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3RpdGxlLCBNRVRIX05PQVJHUywgdGl0bGVfX2RvY19ffSwKICAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LApAQCAtOTI0NSw3ICsxMzA1Nyw3IEBACiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAogICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnBhcnRpdGlvbiwgTUVUSF9PLCBycGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUywgc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdGxpbmVzX19kb2NfX30sCiAgICAgeyJzdHJpcCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zdHJpcCwgTUVUSF9WQVJBUkdTLCBzdHJpcF9fZG9jX199LAogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLCBzd2FwY2FzZV9fZG9jX199LAogICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3RyYW5zbGF0ZSwgTUVUSF9PLCB0cmFuc2xhdGVfX2RvY19ffSwKQEAgLTkyNzEsMTIgKzEzMDgzLDcgQEAKICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9TVEFUSUMsIG1ha2V0cmFuc19fZG9jX199LAogICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBzaXplb2ZfX2RvY19ffSwKICNpZiAwCi0gICAgeyJjYXB3b3JkcyIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jYXB3b3JkcywgTUVUSF9OT0FSR1MsIGNhcHdvcmRzX19kb2NfX30sCi0jZW5kaWYKLQotI2lmIDAKICAgICAvKiBUaGVzZSBtZXRob2RzIGFyZSBqdXN0IHVzZWQgZm9yIGRlYnVnZ2luZyB0aGUgaW1wbGVtZW50YXRpb24uICovCi0gICAgeyJmcmVlbGlzdHNpemUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfZnJlZWxpc3RzaXplLCBNRVRIX05PQVJHU30sCiAgICAgeyJfZGVjaW1hbDJhc2NpaSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9fZGVjaW1hbDJhc2NpaSwgTUVUSF9OT0FSR1N9LAogI2VuZGlmCiAKQEAgLTkyODcsMTAgKzEzMDk0LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBQeVVuaWNvZGVfRm9ybWF0KHYsIHcpOwogfQogCkBAIC05MzEzLDUwICsxMzExOCw2OSBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9zdWJzY3JpcHQoUHlVbmljb2RlT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogaXRlbSkKK3VuaWNvZGVfc3Vic2NyaXB0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogaXRlbSkKIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChQeUluZGV4X0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19JbmRleEVycm9yKTsKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoaSA8IDApCi0gICAgICAgICAgICBpICs9IFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKKyAgICAgICAgICAgIGkgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgICAgIHJldHVybiB1bmljb2RlX2dldGl0ZW0oc2VsZiwgaSk7CiAgICAgfSBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoLCBjdXIsIGk7Ci0gICAgICAgIFB5X1VOSUNPREUqIHNvdXJjZV9idWY7Ci0gICAgICAgIFB5X1VOSUNPREUqIHJlc3VsdF9idWY7Ci0gICAgICAgIFB5T2JqZWN0KiByZXN1bHQ7CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgIHZvaWQgKnNyY19kYXRhLCAqZGVzdF9kYXRhOworICAgICAgICBpbnQgc3JjX2tpbmQsIGRlc3Rfa2luZDsKKyAgICAgICAgUHlfVUNTNCBjaCwgbWF4X2NoYXIsIGtpbmRfbGltaXQ7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGl0ZW0sIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKKyAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGl0ZW0sIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzbGljZWxlbmd0aCA8PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIDApOwotICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09IDAgJiYgc3RlcCA9PSAxICYmIHNsaWNlbGVuZ3RoID09IHNlbGYtPmxlbmd0aCAmJgotICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0ID09IDAgJiYgc3RlcCA9PSAxICYmCisgICAgICAgICAgICAgICAgICAgc2xpY2VsZW5ndGggPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikpIHsKKyAgICAgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPnN0ciArIHN0YXJ0LCBzbGljZWxlbmd0aCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzb3VyY2VfYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKFB5T2JqZWN0KilzZWxmKTsKLSAgICAgICAgICAgIHJlc3VsdF9idWYgPSAoUHlfVU5JQ09ERSAqKVB5T2JqZWN0X01BTExPQyhzbGljZWxlbmd0aCoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkpOwotCi0gICAgICAgICAgICBpZiAocmVzdWx0X2J1ZiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOyBjdXIgKz0gc3RlcCwgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0X2J1ZltpXSA9IHNvdXJjZV9idWZbY3VyXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHJlc3VsdF9idWYsIHNsaWNlbGVuZ3RoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUocmVzdWx0X2J1Zik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBzdGFydCArIHNsaWNlbGVuZ3RoKTsKICAgICAgICAgfQorICAgICAgICAvKiBHZW5lcmFsIGNhc2UgKi8KKyAgICAgICAgc3JjX2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgc3JjX2RhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpIHsKKyAgICAgICAgICAgIGtpbmRfbGltaXQgPSBraW5kX21heGNoYXJfbGltaXQoc3JjX2tpbmQpOworICAgICAgICAgICAgbWF4X2NoYXIgPSAwOworICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsgY3VyICs9IHN0ZXAsIGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoc3JjX2tpbmQsIHNyY19kYXRhLCBjdXIpOworICAgICAgICAgICAgICAgIGlmIChjaCA+IG1heF9jaGFyKSB7CisgICAgICAgICAgICAgICAgICAgIG1heF9jaGFyID0gY2g7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXhfY2hhciA+PSBraW5kX2xpbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1heF9jaGFyID0gMTI3OworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KHNsaWNlbGVuZ3RoLCBtYXhfY2hhcik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBkZXN0X2tpbmQgPSBQeVVuaWNvZGVfS0lORChyZXN1bHQpOworICAgICAgICBkZXN0X2RhdGEgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOworCisgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7IGN1ciArPSBzdGVwLCBpKyspIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChzcmNfa2luZCwgc3JjX2RhdGEsIGN1cik7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoZGVzdF9raW5kLCBkZXN0X2RhdGEsIGksIGNoKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJzdHJpbmcgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTM5MCwxNiArMTMyMTQsMTcgQEAKIAogLyogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBQeVVuaWNvZGUgb2JqZWN0LCBvciBOVUxMIG9uIGZhaWx1cmUuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCitzdGF0aWMgaW50Citmb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUsCisgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgY2hhciAqcDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OworICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CiAgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHByZWMgPCAwKQogICAgICAgICBwcmVjID0gNjsKQEAgLTk0MDcsNTQgKzEzMjMyLDE3MCBAQAogICAgIHAgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoeCwgdHlwZSwgcHJlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbGFncyAmIEZfQUxUKSA/IFB5X0RUU0ZfQUxUIDogMCwgTlVMTCk7CiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHAsIHN0cmxlbihwKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBzdHJsZW4ocCk7CisgICAgaWYgKHdyaXRlcikgeworICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgbGVuLCAxMjcpID09IC0xKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHVuaWNvZGVfd3JpdGVfY3N0cih3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsIHAsIGxlbik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICAqcF9vdXRwdXQgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShwLCBsZW4pOwogICAgIFB5TWVtX0ZyZWUocCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gMDsKIH0KIAorLyogZm9ybWF0bG9uZygpIGVtdWxhdGVzIHRoZSBmb3JtYXQgY29kZXMgZCwgdSwgbywgeCBhbmQgWCwgYW5kCisgKiB0aGUgRl9BTFQgZmxhZywgZm9yIFB5dGhvbidzIGxvbmcgKHVuYm91bmRlZCkgaW50cy4gIEl0J3Mgbm90IHVzZWQgZm9yCisgKiBQeXRob24ncyByZWd1bGFyIGludHMuCisgKiBSZXR1cm4gdmFsdWU6ICBhIG5ldyBQeVVuaWNvZGVPYmplY3QqLCBvciBOVUxMIGlmIGVycm9yLgorICogICAgIFRoZSBvdXRwdXQgc3RyaW5nIGlzIG9mIHRoZSBmb3JtCisgKiAgICAgICAgICItIj8gKCIweCIgfCAiMFgiKT8gZGlnaXQrCisgKiAgICAgIjB4Ii8iMFgiIGFyZSBwcmVzZW50IG9ubHkgZm9yIHggYW5kIFggY29udmVyc2lvbnMsIHdpdGggRl9BTFQKKyAqICAgICAgICAgc2V0IGluIGZsYWdzLiAgVGhlIGNhc2Ugb2YgaGV4IGRpZ2l0cyB3aWxsIGJlIGNvcnJlY3QsCisgKiAgICAgVGhlcmUgd2lsbCBiZSBhdCBsZWFzdCBwcmVjIGRpZ2l0cywgemVyby1maWxsZWQgb24gdGhlIGxlZnQgaWYKKyAqICAgICAgICAgbmVjZXNzYXJ5IHRvIGdldCB0aGF0IG1hbnkuCisgKiB2YWwgICAgICAgICAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZAorICogZmxhZ3MgICAgICAgIGJpdG1hc2sgb2YgZm9ybWF0IGZsYWdzOyBvbmx5IEZfQUxUIGlzIGxvb2tlZCBhdAorICogcHJlYyAgICAgICAgIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0czsgMC1maWxsIG9uIGxlZnQgaWYgbmVlZGVkCisgKiB0eXBlICAgICAgICAgYSBjaGFyYWN0ZXIgaW4gW2R1b3hYXTsgdSBhY3RzIHRoZSBzYW1lIGFzIGQKKyAqCisgKiBDQVVUSU9OOiAgbywgeCBhbmQgWCBjb252ZXJzaW9ucyBvbiByZWd1bGFyIGludHMgY2FuIG5ldmVyCisgKiBwcm9kdWNlIGEgJy0nIHNpZ24sIGJ1dCBjYW4gZm9yIFB5dGhvbidzIHVuYm91bmRlZCBpbnRzLgorICovCiBzdGF0aWMgUHlPYmplY3QqCiBmb3JtYXRsb25nKFB5T2JqZWN0ICp2YWwsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQogeworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgbGVuOwotICAgIFB5T2JqZWN0ICpzdHI7IC8qIHRlbXBvcmFyeSBzdHJpbmcgb2JqZWN0LiAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBzaWduOyAgICAgICAgICAgLyogMSBpZiAnLScsIGVsc2UgMCAqLworICAgIGludCBsZW47ICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgKi8KKyAgICBQeV9zc2l6ZV90IGxsZW47CisgICAgaW50IG51bWRpZ2l0czsgICAgICAvKiBsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzICovCisgICAgaW50IG51bW5vbmRpZ2l0cyA9IDA7CiAKLSAgICBzdHIgPSBfUHlCeXRlc19Gb3JtYXRMb25nKHZhbCwgZmxhZ3MsIHByZWMsIHR5cGUsICZidWYsICZsZW4pOwotICAgIGlmICghc3RyKQorICAgIC8qIEF2b2lkIGV4Y2VlZGluZyBTU0laRV9UX01BWCAqLworICAgIGlmIChwcmVjID4gSU5UX01BWC0zKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInByZWNpc2lvbiB0b28gbGFyZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZiwgbGVuKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICB9CisKKyAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHZhbCkpOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAndSc6CisgICAgICAgIC8qIFNwZWNpYWwtY2FzZSBib29sZWFuOiB3ZSB3YW50IDAvMSAqLworICAgICAgICBpZiAoUHlCb29sX0NoZWNrKHZhbCkpCisgICAgICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCAxMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5X1RZUEUodmFsKS0+dHBfc3RyKHZhbCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ28nOgorICAgICAgICBudW1ub25kaWdpdHMgPSAyOworICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCA4KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7CisgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDE2KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KCEiJ3R5cGUnIG5vdCBpbiBbZHVveFhdIik7CisgICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGFzc2VydCh1bmljb2RlX21vZGlmaWFibGUocmVzdWx0KSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShyZXN1bHQpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0FTQ0lJKHJlc3VsdCkpOworCisgICAgLyogVG8gbW9kaWZ5IHRoZSBzdHJpbmcgaW4tcGxhY2UsIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSByZWZlcmVuY2UuICovCisgICAgaWYgKFB5X1JFRkNOVChyZXN1bHQpICE9IDEpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBidWYgPSBQeVVuaWNvZGVfREFUQShyZXN1bHQpOworICAgIGxsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpOworICAgIGlmIChsbGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG9vIGxhcmdlIGluIF9QeUJ5dGVzX0Zvcm1hdExvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGxlbiA9IChpbnQpbGxlbjsKKyAgICBzaWduID0gYnVmWzBdID09ICctJzsKKyAgICBudW1ub25kaWdpdHMgKz0gc2lnbjsKKyAgICBudW1kaWdpdHMgPSBsZW4gLSBudW1ub25kaWdpdHM7CisgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOworCisgICAgLyogR2V0IHJpZCBvZiBiYXNlIG1hcmtlciB1bmxlc3MgRl9BTFQgKi8KKyAgICBpZiAoKChmbGFncyAmIEZfQUxUKSA9PSAwICYmCisgICAgICAgICh0eXBlID09ICdvJyB8fCB0eXBlID09ICd4JyB8fCB0eXBlID09ICdYJykpKSB7CisgICAgICAgIGFzc2VydChidWZbc2lnbl0gPT0gJzAnKTsKKyAgICAgICAgYXNzZXJ0KGJ1ZltzaWduKzFdID09ICd4JyB8fCBidWZbc2lnbisxXSA9PSAnWCcgfHwKKyAgICAgICAgICAgICAgIGJ1ZltzaWduKzFdID09ICdvJyk7CisgICAgICAgIG51bW5vbmRpZ2l0cyAtPSAyOworICAgICAgICBidWYgKz0gMjsKKyAgICAgICAgbGVuIC09IDI7CisgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgYnVmWzBdID0gJy0nOworICAgICAgICBhc3NlcnQobGVuID09IG51bW5vbmRpZ2l0cyArIG51bWRpZ2l0cyk7CisgICAgICAgIGFzc2VydChudW1kaWdpdHMgPiAwKTsKKyAgICB9CisKKyAgICAvKiBGaWxsIHdpdGggbGVhZGluZyB6ZXJvZXMgdG8gbWVldCBtaW5pbXVtIHdpZHRoLiAqLworICAgIGlmIChwcmVjID4gbnVtZGlnaXRzKSB7CisgICAgICAgIFB5T2JqZWN0ICpyMSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtbm9uZGlnaXRzICsgcHJlYyk7CisgICAgICAgIGNoYXIgKmIxOworICAgICAgICBpZiAoIXIxKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGIxID0gUHlCeXRlc19BU19TVFJJTkcocjEpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtbm9uZGlnaXRzOyArK2kpCisgICAgICAgICAgICAqYjErKyA9ICpidWYrKzsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWMgLSBudW1kaWdpdHM7IGkrKykKKyAgICAgICAgICAgICpiMSsrID0gJzAnOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZGlnaXRzOyBpKyspCisgICAgICAgICAgICAqYjErKyA9ICpidWYrKzsKKyAgICAgICAgKmIxID0gJ1wwJzsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IHIxOworICAgICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBsZW4gPSBudW1ub25kaWdpdHMgKyBwcmVjOworICAgIH0KKworICAgIC8qIEZpeCB1cCBjYXNlIGZvciBoZXggY29udmVyc2lvbnMuICovCisgICAgaWYgKHR5cGUgPT0gJ1gnKSB7CisgICAgICAgIC8qIE5lZWQgdG8gY29udmVydCBhbGwgbG93ZXIgY2FzZSBsZXR0ZXJzIHRvIHVwcGVyIGNhc2UuCisgICAgICAgICAgIGFuZCBuZWVkIHRvIGNvbnZlcnQgMHggdG8gMFggKGFuZCAtMHggdG8gLTBYKS4gKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICAgICAgaWYgKGJ1ZltpXSA+PSAnYScgJiYgYnVmW2ldIDw9ICd4JykKKyAgICAgICAgICAgICAgICBidWZbaV0gLT0gJ2EnLSdBJzsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSB8fCBsZW4gIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KSkgeworICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICAgICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGJ1ZiwgbGVuKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IHVuaWNvZGU7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbnQKLWZvcm1hdGNoYXIoUHlfVU5JQ09ERSAqYnVmLAotICAgICAgICAgICBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICBQeU9iamVjdCAqdikKK3N0YXRpYyBQeV9VQ1M0Citmb3JtYXRjaGFyKFB5T2JqZWN0ICp2KQogewogICAgIC8qIHByZXN1bWUgdGhhdCB0aGUgYnVmZmVyIGlzIGF0IGxlYXN0IDMgY2hhcmFjdGVycyBsb25nICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHYpID09IDEpIHsKLSAgICAgICAgICAgIGJ1ZlswXSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpWzBdOwotICAgICAgICAgICAgYnVmWzFdID0gJ1wwJzsKLSAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodikgPT0gMSkgeworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEX0NIQVIodiwgMCk7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodikgPT0gMikgewotICAgICAgICAgICAgLyogRGVjb2RlIGEgdmFsaWQgc3Vycm9nYXRlIHBhaXIgKi8KLSAgICAgICAgICAgIGludCBjMCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpWzBdOwotICAgICAgICAgICAgaW50IGMxID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMV07Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IGMwICYmIGMwIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgICAgIDB4REMwMCA8PSBjMSAmJiBjMSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBidWZbMF0gPSBjMDsKLSAgICAgICAgICAgICAgICBidWZbMV0gPSBjMTsKLSAgICAgICAgICAgICAgICBidWZbMl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTk0NjQsNDUgKzEzNDA1LDM1IEBACiAgICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAKLSAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweDEwZmZmZikgeworICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IE1BWF9VTklDT0RFKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAoUHlfVUNTNCkgLTE7CiAgICAgICAgIH0KIAotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKHggPiAweGZmZmYpIHsKLSAgICAgICAgICAgIHggLT0gMHgxMDAwMDsKLSAgICAgICAgICAgIGJ1ZlswXSA9IChQeV9VTklDT0RFKSgweEQ4MDAgfCAoeCA+PiAxMCkpOwotICAgICAgICAgICAgYnVmWzFdID0gKFB5X1VOSUNPREUpKDB4REMwMCB8ICh4ICYgMHgzRkYpKTsKLSAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgYnVmWzBdID0gKFB5X1VOSUNPREUpIHg7Ci0gICAgICAgIGJ1ZlsxXSA9ICdcMCc7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICByZXR1cm4gKFB5X1VDUzQpIHg7CiAgICAgfQogCiAgIG9uRXJyb3I6CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGludCBvciBjaGFyIik7Ci0gICAgcmV0dXJuIC0xOworICAgIHJldHVybiAoUHlfVUNTNCkgLTE7CiB9CiAKLS8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKQotICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCBjaGFycyBhcmUgZm9ybWF0dGVkLgotKi8KLSNkZWZpbmUgRk9STUFUQlVGTEVOIChzaXplX3QpMTAKLQotUHlPYmplY3QgKlB5VW5pY29kZV9Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFICpmbXQsICpyZXM7Ci0gICAgUHlfc3NpemVfdCBmbXRjbnQsIHJlc2NudCwgcmVzbGVuLCBhcmdsZW4sIGFyZ2lkeDsKKyAgICBQeV9zc2l6ZV90IGZtdGNudCwgZm10cG9zLCBhcmdsZW4sIGFyZ2lkeDsKICAgICBpbnQgYXJnc19vd25lZCA9IDA7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGVtcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlY29uZCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnVmb3JtYXQ7CisgICAgdm9pZCAqZm10OworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCwgZm10a2luZDsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBQeV9zc2l6ZV90IHN1YmxlbjsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CiAKICAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgYXJncyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwpAQCAtOTUxMSwxNCArMTM0NDIsMTUgQEAKICAgICB1Zm9ybWF0ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZm9ybWF0KTsKICAgICBpZiAodWZvcm1hdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmbXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1Zm9ybWF0KTsKLSAgICBmbXRjbnQgPSBQeVVuaWNvZGVfR0VUX1NJWkUodWZvcm1hdCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1Zm9ybWF0KSA9PSAtMSkKKyAgICAgICAgUHlfREVDUkVGKHVmb3JtYXQpOwogCi0gICAgcmVzbGVuID0gcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfTmV3KHJlc2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgcmVzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKKyAgICBmbXQgPSBQeVVuaWNvZGVfREFUQSh1Zm9ybWF0KTsKKyAgICBmbXRraW5kID0gUHlVbmljb2RlX0tJTkQodWZvcm1hdCk7CisgICAgZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodWZvcm1hdCk7CisgICAgZm10cG9zID0gMDsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCBmbXRjbnQgKyAxMDApOwogCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9TaXplKGFyZ3MpOwpAQCAtOTUzMiwzNSArMTM0NjQsNDYgQEAKICAgICAgICAgZGljdCA9IGFyZ3M7CiAKICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpICsgcmVzbGVuIC0gcmVzY250OwotICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpICE9ICclJykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBub25mbXRwb3M7CisgICAgICAgICAgICBub25mbXRwb3MgPSBmbXRwb3MrKzsKKyAgICAgICAgICAgIHdoaWxlIChmbXRjbnQgPj0gMCAmJgorICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKSAhPSAnJScpIHsKKyAgICAgICAgICAgICAgICBmbXRwb3MrKzsKKyAgICAgICAgICAgICAgICBmbXRjbnQtLTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXMrKyA9ICpmbXQrKzsKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKQorICAgICAgICAgICAgICAgIGZtdHBvcy0tOworICAgICAgICAgICAgc3VibGVuID0gZm10cG9zIC0gbm9uZm10cG9zOworICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmZtdHBvcywgbm9uZm10cG9zICsgc3VibGVuKTsKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc3VibGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci5idWZmZXIsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Zm9ybWF0LCBub25mbXRwb3MsIHN1Ymxlbik7CisgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIEdvdCBhIGZvcm1hdCBzcGVjaWZpZXIgKi8KICAgICAgICAgICAgIGludCBmbGFncyA9IDA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHdpZHRoID0gLTE7CiAgICAgICAgICAgICBpbnQgcHJlYyA9IC0xOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBjID0gJ1wwJzsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgZmlsbDsKKyAgICAgICAgICAgIFB5X1VDUzQgYyA9ICdcMCc7CisgICAgICAgICAgICBQeV9VQ1M0IGZpbGw7CisgICAgICAgICAgICBpbnQgc2lnbjsKKyAgICAgICAgICAgIFB5X1VDUzQgc2lnbmNoYXI7CiAgICAgICAgICAgICBpbnQgaXNudW1vazsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnBidWY7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHNpZ247Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgZm9ybWF0YnVmW0ZPUk1BVEJVRkxFTl07IC8qIEZvciBmb3JtYXRjaGFyKCkgKi8KKyAgICAgICAgICAgIHZvaWQgKnBidWYgPSBOVUxMOworICAgICAgICAgICAgUHlfc3NpemVfdCBwaW5kZXgsIGxlbjsKKyAgICAgICAgICAgIFB5X1VDUzQgYnVmbWF4Y2hhcjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmbGVuOwogCi0gICAgICAgICAgICBmbXQrKzsKLSAgICAgICAgICAgIGlmICgqZm10ID09ICcoJykgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmtleXN0YXJ0OworICAgICAgICAgICAgZm10cG9zKys7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpOworICAgICAgICAgICAgaWYgKGMgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlzdGFydDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOwpAQCAtOTU3MCwzNCArMTM1MTMsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgcmVxdWlyZXMgYSBtYXBwaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKytmbXQ7CisgICAgICAgICAgICAgICAgKytmbXRwb3M7CiAgICAgICAgICAgICAgICAgLS1mbXRjbnQ7Ci0gICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXQ7CisgICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXRwb3M7CiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIGJhbGFuY2VkIHBhcmVudGhlc2VzICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKHBjb3VudCA+IDAgJiYgLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKScpCisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICcpJykKICAgICAgICAgICAgICAgICAgICAgICAgIC0tcGNvdW50OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqZm10ID09ICcoJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKCcpCiAgICAgICAgICAgICAgICAgICAgICAgICArK3Bjb3VudDsKLSAgICAgICAgICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGZtdHBvcysrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXQgLSBrZXlzdGFydCAtIDE7CisgICAgICAgICAgICAgICAga2V5bGVuID0gZm10cG9zIC0ga2V5c3RhcnQgLSAxOwogICAgICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwIHx8IHBjb3VudCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQga2V5Iik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0jaWYgMAotICAgICAgICAgICAgICAgIC8qIGtleXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIHVzaW5nIFVURi04IGFuZAotICAgICAgICAgICAgICAgICAgIHRoZW4gbG9va2VkIHVwIHNpbmNlIFB5dGhvbiB1c2VzIHN0cmluZ3MgdG8gaG9sZAotICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBuYW1lcyBldGMuIGluIGl0cyBuYW1lc3BhY2VzIGFuZCB3ZQotICAgICAgICAgICAgICAgICAgIHdvdWxkbid0IHdhbnQgdG8gYnJlYWsgY29tbW9uIGlkaW9tcy4gKi8KLSAgICAgICAgICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChrZXlzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShrZXlzdGFydCwga2V5bGVuKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcodWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN0YXJ0LCBrZXlzdGFydCArIGtleWxlbik7CiAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKQEAgLTk2MTQsNyArMTM1NDksOCBAQAogICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhc2UgJysnOiBmbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhc2UgJyAnOiBmbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKQEAgLTk2NDAsMTUgKzEzNTc2LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKICAgICAgICAgICAgICAgICB3aWR0aCA9IGMgLSAnMCc7CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgod2lkdGgqMTApIC8gMTAgIT0gd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogU2luY2UgYyBpcyB1bnNpZ25lZCwgdGhlIFJIUyB3b3VsZCBlbmQgdXAgYXMgdW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgIG1peGluZyBzaWduZWQgYW5kIHVuc2lnbmVkIGNvbXBhcmlzb24uIFNpbmNlIGMgaXMgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAnMCcgYW5kICc5JywgY2FzdGluZyB0byBpbnQgaXMgc2FmZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gKFBZX1NTSVpFX1RfTUFYIC0gKChpbnQpYyAtICcwJykpIC8gMTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCB0b28gYmlnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CkBAIC05NjU5LDcgKzEzNTk4LDcgQEAKICAgICAgICAgICAgIGlmIChjID09ICcuJykgewogICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC05Njc1LDE1ICsxMzYxNCwxNSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gMDsKICAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgewogICAgICAgICAgICAgICAgICAgICBwcmVjID0gYyAtICcwJzsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVjKjEwKSAvIDEwICE9IHByZWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID4gKElOVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlYyB0b28gYmlnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwpAQCAtOTY5NSw3ICsxMzYzNCw3IEBACiAgICAgICAgICAgICBpZiAoZm10Y250ID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaCcgfHwgYyA9PSAnbCcgfHwgYyA9PSAnTCcpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CkBAIC05NzAzLDI1ICsxMzY0MiwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYyAhPSAnJScpIHsKLSAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICBpZiAoZm10Y250ID09IDApCisgICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisKKyAgICAgICAgICAgIGlmIChjID09ICclJykgeworICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgMSwgJyUnKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICclJyk7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKICAgICAgICAgICAgIHNpZ24gPSAwOworICAgICAgICAgICAgc2lnbmNoYXIgPSAnXDAnOwogICAgICAgICAgICAgZmlsbCA9ICcgJzsKICAgICAgICAgICAgIHN3aXRjaCAoYykgewogCi0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gZm9ybWF0YnVmOwotICAgICAgICAgICAgICAgIC8qIHByZXN1bWUgdGhhdCBidWZmZXIgbGVuZ3RoIGlzIGF0IGxlYXN0IDEgKi8KLSAgICAgICAgICAgICAgICBwYnVmWzBdID0gJyUnOwotICAgICAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDEwLCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSAmJiBjID09ICdzJykgewogICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdjsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRlbXApOwpAQCAtOTczMywyMSArMTM2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X1JlcHIodik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9BU0NJSSh2KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gKi87Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgYXJndW1lbnQgaGFzIG5vbi1zdHJpbmcgc3RyKCkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOwotICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKLSAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnaSc6CkBAIC05NzU2LDYgKzEzNjkyLDMyIEBACiAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxMCwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxNiwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCA4LCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAwOwogICAgICAgICAgICAgICAgIGlmIChQeU51bWJlcl9DaGVjayh2KSkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW9iaj1OVUxMOwpAQCAtOTc3MCwxMyArMTM3MzIsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoaW9iaiE9TlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhpb2JqKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKGlvYmosIGZsYWdzLCBwcmVjLCAoYyA9PSAnaSc/ICdkJzogYykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlbXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOwpAQCAtOTc5OSwyMiArMTM3NTcsMzggQEAKICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOwotICAgICAgICAgICAgICAgIGlmICghdGVtcCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsICZ0ZW1wLCBOVUxMKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgICAgIHBidWYgPSBmb3JtYXRidWY7Ci0gICAgICAgICAgICAgICAgbGVuID0gZm9ybWF0Y2hhcihwYnVmLCBzaXplb2YoZm9ybWF0YnVmKS9zaXplb2YoUHlfVU5JQ09ERSksIHYpOwotICAgICAgICAgICAgICAgIGlmIChsZW4gPCAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBmb3JtYXRjaGFyKHYpOworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAoUHlfVUNTNCkgLTEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCAxLCBjaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLApAQCAtOTgyMiw5MCArMTM3OTYsMTM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzE8PWMgJiYgYzw9MTI2KSA/IChjaGFyKWMgOiAnPycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodWZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10cG9zIC0gMSk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSk7CisKKyAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoJndyaXRlciwgdGVtcCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGVtcCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodGVtcCk7CisgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0RBVEEodGVtcCk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZW1wKTsKKworICAgICAgICAgICAgaWYgKGMgPT0gJ3MnIHx8IGMgPT0gJ3InIHx8IGMgPT0gJ2EnKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBwYnVmIGlzIGluaXRpYWxpemVkIGhlcmUuICovCisgICAgICAgICAgICBwaW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKLSAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgewotICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJy0nIHx8IGNoID09ICcrJykgeworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9IGNoOwogICAgICAgICAgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4Kys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9TSUdOKQotICAgICAgICAgICAgICAgICAgICBzaWduID0gJysnOworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9ICcrJzsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCi0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnICc7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gJyAnOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCiAgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICBpZiAocmVzY250IC0gKHNpZ24gIT0gMCkgPCB3aWR0aCkgewotICAgICAgICAgICAgICAgIHJlc2xlbiAtPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gd2lkdGggKyBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAocmVzbGVuIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIGxlbmd0aCBhbmQgbWF4aW11bSBjaGFyYWN0ZXIgb2YgdGhlCisgICAgICAgICAgICAgICB3cml0dGVuIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSAxMjc7CisgICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfTEpVU1QpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aC0xKSA+IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBNQVhfTUFYQ0hBUihidWZtYXhjaGFyLCBmaWxsKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmbWF4Y2hhciA9IE1BWF9NQVhDSEFSKGJ1Zm1heGNoYXIsIGZpbGwpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodGVtcCwgMCwgcGluZGV4K2xlbik7CisgICAgICAgICAgICBidWZtYXhjaGFyID0gTUFYX01BWENIQVIoYnVmbWF4Y2hhciwgbWF4Y2hhcik7CisKKyAgICAgICAgICAgIGJ1ZmxlbiA9IHdpZHRoOworICAgICAgICAgICAgaWYgKHNpZ24gJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGJ1ZmxlbisrOworCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIGJ1ZmxlbiwgYnVmbWF4Y2hhcikgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAvKiBXcml0ZSBjaGFyYWN0ZXJzICovCiAgICAgICAgICAgICBpZiAoc2lnbikgewotICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKLSAgICAgICAgICAgICAgICByZXNjbnQtLTsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgc2lnbmNoYXIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnIHx8IGMgPT0gJ28nKSkgewotICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCkgPT0gJzAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4ICsgMSkgPT0gYyk7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICcwJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrMSwgYyk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4ICs9IDI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc2NudCAtPSAyOwogICAgICAgICAgICAgICAgIHdpZHRoIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGxlbiAtPSAyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuICYmICEoZmxhZ3MgJiBGX0xKVVNUKSkgewotICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IGZpbGw7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS13aWR0aCA+IGxlbik7CisgICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47CisgICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIGZpbGwsIHdyaXRlci5wb3MsIHN1Ymxlbik7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47CisgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2lnbikKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBzaWduY2hhcik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcgfHwgYyA9PSAnbycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KzEpID09IGMpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCAnMCcpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKzEsIGMpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHBpbmRleCArPSAyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShyZXMsIHBidWYsIGxlbik7Ci0gICAgICAgICAgICByZXMgKz0gbGVuOwotICAgICAgICAgICAgcmVzY250IC09IGxlbjsKLSAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgewotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKworICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci5idWZmZXIsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCwgcGluZGV4LCBsZW4pOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gbGVuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47CisgICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsICcgJywgd3JpdGVyLnBvcywgc3VibGVuKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKKyAgICAgICAgICAgIH0KKworbmV4dGFyZzoKICAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKICAgICAgICAgfSAvKiAnJScgKi8KICAgICB9IC8qIHVudGlsIGVuZCAqLwogICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKQEAgLTk5MTQsMTcgKzEzOTM3LDE5IEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSA8IDApCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQogICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgUHlfWERFQ1JFRihzZWNvbmQpOworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICBQeV9ERUNSRUYodWZvcm1hdCk7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICBQeV9YREVDUkVGKHNlY29uZCk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CkBAIC05OTQ3LDggKzEzOTcyLDEwIEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPc3M6c3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ4LCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoeCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5VW5pY29kZV9OZXcoMCk7CisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCAmJiBlcnJvcnMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cih4KTsKICAgICBlbHNlCkBAIC05OTU4LDMxICsxMzk4NSwxMDEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX3N1YnR5cGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdG1wLCAqcG5ldzsKLSAgICBQeV9zc2l6ZV90IG47CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpzZWxmOworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBjaGFyX3NpemU7CisgICAgaW50IHNoYXJlX3dzdHIsIHNoYXJlX3V0Zjg7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIGFzc2VydChQeVR5cGVfSXNTdWJ0eXBlKHR5cGUsICZQeVVuaWNvZGVfVHlwZSkpOwotICAgIHRtcCA9IChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlX25ldygmUHlVbmljb2RlX1R5cGUsIGFyZ3MsIGt3ZHMpOwotICAgIGlmICh0bXAgPT0gTlVMTCkKKworICAgIHVuaWNvZGUgPSB1bmljb2RlX25ldygmUHlVbmljb2RlX1R5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodG1wKSk7Ci0gICAgcG5ldyA9IChQeVVuaWNvZGVPYmplY3QgKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgbiA9IHRtcC0+bGVuZ3RoKTsKLSAgICBpZiAocG5ldyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHBuZXctPnN0ciA9IChQeV9VTklDT0RFKikgUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeV9VTklDT0RFKSAqIChuKzEpKTsKLSAgICBpZiAocG5ldy0+c3RyID09IE5VTEwpIHsKLSAgICAgICAgX1B5X0ZvcmdldFJlZmVyZW5jZSgoUHlPYmplY3QgKilwbmV3KTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHBuZXcpOwotICAgICAgICBQeV9ERUNSRUYodG1wKTsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBzZWxmID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9VTklDT0RFX0NPUFkocG5ldy0+c3RyLCB0bXAtPnN0ciwgbisxKTsKLSAgICBwbmV3LT5sZW5ndGggPSBuOwotICAgIHBuZXctPmhhc2ggPSB0bXAtPmhhc2g7Ci0gICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXBuZXc7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCisgICAgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgPSBsZW5ndGg7CisjaWZkZWYgUHlfREVCVUcKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSAtMTsKKyNlbHNlCisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpOworI2VuZGlmCisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5raW5kID0ga2luZDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmNvbXBhY3QgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikuYXNjaWkgPSBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikucmVhZHkgPSAxOworICAgIF9QeVVuaWNvZGVfV1NUUihzZWxmKSA9IE5VTEw7CisgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChzZWxmKSA9IDA7CisgICAgX1B5VW5pY29kZV9VVEY4KHNlbGYpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHNlbGYpID0gMDsKKyAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHNlbGYpID0gTlVMTDsKKworICAgIHNoYXJlX3V0ZjggPSAwOworICAgIHNoYXJlX3dzdHIgPSAwOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIGNoYXJfc2l6ZSA9IDE7CisgICAgICAgIGlmIChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkgPCAxMjgpCisgICAgICAgICAgICBzaGFyZV91dGY4ID0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBjaGFyX3NpemUgPSAyOworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDIpCisgICAgICAgICAgICBzaGFyZV93c3RyID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgY2hhcl9zaXplID0gNDsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSA0KQorICAgICAgICAgICAgc2hhcmVfd3N0ciA9IDE7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBsZW5ndGguICovCisgICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisgICAgZGF0YSA9IFB5T2JqZWN0X01BTExPQygobGVuZ3RoICsgMSkgKiBjaGFyX3NpemUpOworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkoc2VsZikgPSBkYXRhOworICAgIGlmIChzaGFyZV91dGY4KSB7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgoc2VsZikgPSBsZW5ndGg7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOChzZWxmKSA9IGRhdGE7CisgICAgfQorICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoc2VsZikgPSBsZW5ndGg7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUihzZWxmKSA9ICh3Y2hhcl90ICopZGF0YTsKKyAgICB9CisKKyAgICBQeV9NRU1DUFkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgIGtpbmQgKiAobGVuZ3RoICsgMSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc2VsZiwgMSkpOworI2lmZGVmIFB5X0RFQlVHCisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpOworI2VuZGlmCisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiBzZWxmOworCitvbkVycm9yOgorICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUih1bmljb2RlX2RvYywKQEAgLTEwMDQ0LDEyICsxNDE0MSwxMiBAQAogCiAvKiBJbml0aWFsaXplIHRoZSBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAKLXZvaWQgX1B5VW5pY29kZV9Jbml0KHZvaWQpCitpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpCiB7CiAgICAgaW50IGk7CiAKICAgICAvKiBYWFggLSBtb3ZlIHRoaXMgYXJyYXkgdG8gdW5pY29kZWN0eXBlLmMgPyAqLwotICAgIFB5X1VOSUNPREUgbGluZWJyZWFrW10gPSB7CisgICAgUHlfVUNTMiBsaW5lYnJlYWtbXSA9IHsKICAgICAgICAgMHgwMDBBLCAvKiBMSU5FIEZFRUQgKi8KICAgICAgICAgMHgwMDBELCAvKiBDQVJSSUFHRSBSRVRVUk4gKi8KICAgICAgICAgMHgwMDFDLCAvKiBGSUxFIFNFUEFSQVRPUiAqLwpAQCAtMTAwNjEsMTEgKzE0MTU4LDEwIEBACiAgICAgfTsKIAogICAgIC8qIEluaXQgdGhlIGltcGxlbWVudGF0aW9uICovCi0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICBudW1mcmVlID0gMDsKLSAgICB1bmljb2RlX2VtcHR5ID0gX1B5VW5pY29kZV9OZXcoMCk7CisgICAgdW5pY29kZV9lbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQotICAgICAgICByZXR1cm47CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGNyZWF0ZSBlbXB0eSBzdHJpbmciKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGVfZW1wdHksIDEpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgdW5pY29kZV9sYXRpbjFbaV0gPSBOVUxMOwpAQCAtMTAwNzQsMTAgKzE0MTcwLDE5IEBACiAKICAgICAvKiBpbml0aWFsaXplIHRoZSBsaW5lYnJlYWsgYmxvb20gZmlsdGVyICovCiAgICAgYmxvb21fbGluZWJyZWFrID0gbWFrZV9ibG9vbV9tYXNrKAotICAgICAgICBsaW5lYnJlYWssIHNpemVvZihsaW5lYnJlYWspIC8gc2l6ZW9mKGxpbmVicmVha1swXSkKLSAgICAgICAgKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0tJTkQsIGxpbmVicmVhaywKKyAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGxpbmVicmVhaykpOwogCiAgICAgUHlUeXBlX1JlYWR5KCZFbmNvZGluZ01hcFR5cGUpOworCisjaWZkZWYgSEFWRV9NQkNTCisgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKKyAgICBpZiAoIUdldFZlcnNpb25FeCgoT1NWRVJTSU9OSU5GTyopJndpbnZlcikpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAogLyogRmluYWxpemUgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KQEAgLTEwMDg1LDIxICsxNDE5MCw3IEBACiBpbnQKIFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgaW50IGZyZWVsaXN0X3NpemUgPSBudW1mcmVlOwotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQotICAgIGZvciAodSA9IGZyZWVfbGlzdDsgdSAhPSBOVUxMOykgewotICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnYgPSB1OwotICAgICAgICB1ID0gKihQeVVuaWNvZGVPYmplY3QgKiopdTsKLSAgICAgICAgaWYgKHYtPnN0cikKLSAgICAgICAgICAgIFB5T2JqZWN0X0RFTCh2LT5zdHIpOwotICAgICAgICBQeV9YREVDUkVGKHYtPmRlZmVuYyk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbCh2KTsKLSAgICAgICAgbnVtZnJlZS0tOwotICAgIH0KLSAgICBmcmVlX2xpc3QgPSBOVUxMOwotICAgIGFzc2VydChudW1mcmVlID09IDApOwotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIHJldHVybiAwOwogfQogCiB2b2lkCkBAIC0xMDExNiwxNyArMTQyMDcsMjIgQEAKICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xW2ldID0gTlVMTDsKICAgICAgICAgfQogICAgIH0KKyAgICBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncygpOwogICAgICh2b2lkKVB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCk7CiB9CiAKIHZvaWQKIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKFB5T2JqZWN0ICoqcCkKIHsKLSAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnMgPSAoUHlVbmljb2RlT2JqZWN0ICopKCpwKTsKKyAgICByZWdpc3RlciBQeU9iamVjdCAqcyA9ICpwOwogICAgIFB5T2JqZWN0ICp0OworI2lmZGVmIFB5X0RFQlVHCisgICAgYXNzZXJ0KHMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0socykpOworI2Vsc2UKICAgICBpZiAocyA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2socykpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlVbmljb2RlX0ludGVybkluUGxhY2U6IHVuaWNvZGUgc3RyaW5ncyBvbmx5IHBsZWFzZSEiKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgLyogSWYgaXQncyBhIHN1YmNsYXNzLCB3ZSBkb24ndCByZWFsbHkga25vdyB3aGF0IHB1dHRpbmcKICAgICAgICBpdCBpbiB0aGUgaW50ZXJuZWQgZGljdCBtaWdodCBkby4gKi8KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KHMpKQpAQCAtMTAxNDQsNyArMTQyNDAsNyBAQAogICAgICAgIHRob3VnaCB0aGUga2V5IGlzIHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksCiAgICAgICAgbmFtZWx5IHdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyBhIHN0YWNrIG92ZXJmbG93LiAqLwogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgICAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIChQeU9iamVjdCAqKXMpOworICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgcyk7CiAgICAgUHlfRU5EX0FMTE9XX1JFQ1VSU0lPTgogCiAgICAgICAgIGlmICh0KSB7CkBAIC0xMDE1NSw3ICsxNDI1MSw3IEBACiAgICAgICAgIH0KIAogICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCAoUHlPYmplY3QgKilzLCAoUHlPYmplY3QgKilzKSA8IDApIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIHMsIHMpIDwgMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwogICAgICAgICByZXR1cm47CkBAIC0xMDE2NCw3ICsxNDI2MCw3IEBACiAgICAgLyogVGhlIHR3byByZWZlcmVuY2VzIGluIGludGVybmVkIGFyZSBub3QgY291bnRlZCBieSByZWZjbnQuCiAgICAgICAgVGhlIGRlYWxsb2NhdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgKi8KICAgICBQeV9SRUZDTlQocykgLT0gMjsKLSAgICBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQocykgPSBTU1RBVEVfSU5URVJORURfTU9SVEFMOworICAgIF9QeVVuaWNvZGVfU1RBVEUocykuaW50ZXJuZWQgPSBTU1RBVEVfSU5URVJORURfTU9SVEFMOwogfQogCiB2b2lkCkBAIC0xMDE3Miw3ICsxNDI2OCw3IEBACiB7CiAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UocCk7CiAgICAgaWYgKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCgqcCkgIT0gU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMKSB7Ci0gICAgICAgIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCgqcCkgPSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUw7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUoKnApLmludGVybmVkID0gU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMOwogICAgICAgICBQeV9JTkNSRUYoKnApOwogICAgIH0KIH0KQEAgLTEwMTg3LDEwICsxNDI4MywxMSBAQAogICAgIHJldHVybiBzOwogfQogCi12b2lkIF9QeV9SZWxlYXNlSW50ZXJuZWRVbmljb2RlU3RyaW5ncyh2b2lkKQordm9pZAorX1B5X1JlbGVhc2VJbnRlcm5lZFVuaWNvZGVTdHJpbmdzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKmtleXM7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzOworICAgIFB5T2JqZWN0ICpzOwogICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeV9zc2l6ZV90IGltbW9ydGFsX3NpemUgPSAwLCBtb3J0YWxfc2l6ZSA9IDA7CiAKQEAgLTEwMjExLDIzICsxNDMwOCwyNyBAQAogICAgIGZwcmludGYoc3RkZXJyLCAicmVsZWFzaW5nICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgaW50ZXJuZWQgc3RyaW5nc1xuIiwKICAgICAgICAgICAgIG4pOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgcyA9IChQeVVuaWNvZGVPYmplY3QgKikgUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOwotICAgICAgICBzd2l0Y2ggKHMtPnN0YXRlKSB7CisgICAgICAgIHMgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpIHsKKyAgICAgICAgICAgIGFzc2VydCgwICYmICJjb3VsZCBub3QgcmVhZHkgc3RyaW5nIik7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCByZWFkeSBzdHJpbmdcbiIpOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHMpKSB7CiAgICAgICAgIGNhc2UgU1NUQVRFX05PVF9JTlRFUk5FRDoKICAgICAgICAgICAgIC8qIFhYWCBTaG91bGRuJ3QgaGFwcGVuICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUw6CiAgICAgICAgICAgICBQeV9SRUZDTlQocykgKz0gMTsKLSAgICAgICAgICAgIGltbW9ydGFsX3NpemUgKz0gcy0+bGVuZ3RoOworICAgICAgICAgICAgaW1tb3J0YWxfc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTVEFURV9JTlRFUk5FRF9NT1JUQUw6CiAgICAgICAgICAgICBQeV9SRUZDTlQocykgKz0gMjsKLSAgICAgICAgICAgIG1vcnRhbF9zaXplICs9IHMtPmxlbmd0aDsKKyAgICAgICAgICAgIG1vcnRhbF9zaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJJbmNvbnNpc3RlbnQgaW50ZXJuZWQgc3RyaW5nIHN0YXRlLiIpOwogICAgICAgICB9Ci0gICAgICAgIHMtPnN0YXRlID0gU1NUQVRFX05PVF9JTlRFUk5FRDsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURShzKS5pbnRlcm5lZCA9IFNTVEFURV9OT1RfSU5URVJORUQ7CiAgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCAidG90YWwgc2l6ZSBvZiBhbGwgaW50ZXJuZWQgc3RyaW5nczogIgogICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQvJSIgUFlfRk9STUFUX1NJWkVfVCAiZCAiCkBAIC0xMDI0NCw3ICsxNDM0NSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5X3NzaXplX3QgaXRfaW5kZXg7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICppdF9zZXE7IC8qIFNldCB0byBOVUxMIHdoZW4gaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKml0X3NlcTsgICAgLyogU2V0IHRvIE5VTEwgd2hlbiBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gdW5pY29kZWl0ZXJvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDI2NSwxOCArMTQzNjYsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlaXRlcl9uZXh0KHVuaWNvZGVpdGVyb2JqZWN0ICppdCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnNlcTsKLSAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBQeU9iamVjdCAqc2VxLCAqaXRlbTsKIAogICAgIGFzc2VydChpdCAhPSBOVUxMKTsKICAgICBzZXEgPSBpdC0+aXRfc2VxOwogICAgIGlmIChzZXEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzZXEpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhzZXEpKTsKIAotICAgIGlmIChpdC0+aXRfaW5kZXggPCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VxKSkgewotICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VxKStpdC0+aXRfaW5kZXgsIDEpOworICAgIGlmIChpdC0+aXRfaW5kZXggPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXEpKSB7CisgICAgICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VxKTsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlcSk7CisgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaXQtPml0X2luZGV4KTsKKyAgICAgICAgaXRlbSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaHIpOwogICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKQogICAgICAgICAgICAgKytpdC0+aXRfaW5kZXg7CiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTAyOTIsMTUgKzE0Mzk0LDQ5IEBACiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgIGlmIChpdC0+aXRfc2VxKQotICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSBpdC0+aXRfaW5kZXg7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0LT5pdF9zZXEpIC0gaXQtPml0X2luZGV4OwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWl0ZXJfcmVkdWNlKHVuaWNvZGVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCB1KTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVpdGVyX3NldHN0YXRlKHVuaWNvZGVpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgdW5pY29kZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdW5pY29kZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdW5pY29kZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTAzNDYsMTYgKzE0NDgyLDE5IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXEpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyh1bmljb2RlaXRlcm9iamVjdCwgJlB5VW5pY29kZUl0ZXJfVHlwZSk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGl0LT5pdF9pbmRleCA9IDA7CiAgICAgUHlfSU5DUkVGKHNlcSk7Ci0gICAgaXQtPml0X3NlcSA9IChQeVVuaWNvZGVPYmplY3QgKilzZXE7CisgICAgaXQtPml0X3NlcSA9IHNlcTsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soaXQpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KIAorCiBzaXplX3QKIFB5X1VOSUNPREVfc3RybGVuKGNvbnN0IFB5X1VOSUNPREUgKnUpCiB7CkBAIC0xMDQ0NywyNSArMTQ1ODYsMzEgQEAKIH0KIAogUHlfVU5JQ09ERSoKLVB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICpvYmplY3QpCitQeVVuaWNvZGVfQXNVbmljb2RlQ29weShQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb2JqZWN0OwotICAgIFB5X1VOSUNPREUgKmNvcHk7Ci0gICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X1VOSUNPREUgKnUsICpjb3B5OworICAgIFB5X3NzaXplX3QgbGVuLCBzaXplOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCAmbGVuKTsKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSA+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+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTQ5MjNjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpAQCAtMCwwICsxLDIzNCBAQAor77u/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+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVhMmZjOAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5ODM0NjA3Ny05MDBjLTRjN2EtODUyZi1hMjM0NzBlMzdiNDB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnByb3BzIGIvUENidWlsZC9zcWxpdGUzLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZWUwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFmMDEwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCkBAIC0wLDAgKzEsMjQwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c3FsaXRlMzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+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+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTNleHQuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ia2lsbF9weXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57NmRlMTA3NDQtZTM5Ni00MGE1LWI0ZTItMWI2OWFhN2M4ZDMxfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjY4MGMxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjZTViNjQ5ZC1hNmY3LTQ0NTktOTQyNS1jODgzNzk1ZDc5ZGZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswZTg0MmZlMi0xNzZiLTRlODMtOWQxZi0wYWQxM2E4NTllZmR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTNleHQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3NsLnZjeHByb2ogYi9QQ2J1aWxkL3NzbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZmQ3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NzbC52Y3hwcm9qCkBAIC0wLDAgKzEsMjIxIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+c3NsPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPk1ha2VGaWxlUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKKyIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCis8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiMTFkNzUwZi1jZDFmLTRhOTYtODVjZS1lNjlhNWM1MjU5Zjl9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvaiBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWQ1Mjc4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCkBAIC0wLDAgKzEsMjIyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+dW5pY29kZWRhdGE8L1Jvb3ROYW1lc3BhY2U+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+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBlNjQwZQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2I5MzlhOGYxLWNjZDctNDIwYS05NzRhLTI0MzYwNmRjY2Q3NH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2UyYzA1NWJiLWVjNjItNGJiYy1hYTFjLWQ4OGRhNGQ0YWQxY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC92czl0bzEwLnB5IGIvUENidWlsZC92czl0bzEwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZjgzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3ZzOXRvMTAucHkKQEAgLTAsMCArMSw1NiBAQAorI1J1biB0aGlzIGZpbGUgYWZ0ZXIgYXV0b21hdGljIGNvbnZlcnRzaW9uIG9mIHRoZSBWaXN1YWxTdHVkaW8gMjAwOCBzb2x1dGlvbiBieSBWaXN1YWxTdHVkaW8gMjAxMC4KKyNUaGlzIGNhbiBiZSBkb25lIHdoZW5ldmVyIHRoZSAyMDA4IHNvbHV0aW9uIGNoYW5nZXMuCisjSXQgd2lsbCBtYWtlIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBhbmQgdXBkYXRlcyB0byB0aGUgdmN4cHJvaiBmaWxlcworI3RoZSAucHJvcHMgZmlsZXMgbmVlZCB0byBiZSBtYWludGFpbmVkIGJ5IGhhbmQgaWYgdGhlIC52c3Byb3BzIGZpbGVzIGNoYW5nZQorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCisKK2RlZiB2czl0bzEwKHNyYywgZGVzdCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihzcmMpOgorICAgICAgICBwYXRoLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIGV4dC5sb3dlcigpIG5vdCBpbiAoJy52Y3hwcm9qJywpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNyYywgbmFtZSkpCisgICAgICAgIGRlc3RuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGVzdCwgbmFtZSkpCisgICAgICAgIHByaW50KCIlcyAtPiAlcyIgJSAoZmlsZW5hbWUsIGRlc3RuYW1lKSkKKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGxhc3RsaW5lID0gYiIiCisgICAgICAgIGltcG9ydGdyb3VwID0gRmFsc2UKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmaW46CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46CisgICAgICAgICAgICAgICAgI3JlbW92ZSByZWR1bmRhbnQgbGlua2VyIG91dHB1dCBpbmZvCisgICAgICAgICAgICAgICAgaWYgYiI8T3V0cHV0TGluZT4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgYiI8UHJvZ3JhbURhdGFiYXNlRmlsZT4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgYiI8SW1wb3J0TGlicmFyeT4iIGluIGxpbmUgYW5kIGIiPC9JbXBvcnRMaWJyYXJ5PiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICNhZGQgbmV3IHByb3BlcnR5IHNoZWV0IHRvIHRoZSBweXRob25jb3JlCisgICAgICAgICAgICAgICAgaWYgaW1wb3J0Z3JvdXAgYW5kICJweXRob25jb3JlIiBpbiBuYW1lLmxvd2VyKCk6CisgICAgICAgICAgICAgICAgICAgIGlmIGIiPC9JbXBvcnRHcm91cD4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBiImRlYnVnLnByb3BzIiBpbiBsYXN0bGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlX2QucHJvcHMiIC8+XHJcbicpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGIicHl0aG9uY29yZSIgbm90IGluIGxhc3RsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChiJyAgICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbmNvcmUucHJvcHMiIC8+XHJcbicpCisgICAgICAgICAgICAgICAgaWYgYiI8SW1wb3J0R3JvdXAgQ29uZGl0aW9uIiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIGIiPC9JbXBvcnRHcm91cD4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydGdyb3VwID0gRmFsc2UKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgICAgICBsYXN0bGluZSA9IGxpbmUKKyAgICAgICAgd2l0aCBvcGVuKGRlc3RuYW1lLCAnd2InKSBhcyBmb3V0OgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHNyYyA9ICIuIiBpZiBsZW4oc3lzLmFyZ3YpIDwgMiBlbHNlIHN5cy5hcmd2WzFdCisgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5hYnNwYXRoKHNyYykpCisgICAgZGVzdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjLCAiLi4iLCBuYW1lICsgIlVwZCIpKQorICAgIG9zLm1ha2VkaXJzKGRlc3QpCisgICAgdnM5dG8xMChzcmMsIGRlc3QpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ogYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFhZmUyMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvagpAQCAtMCwwICsxLDI4NyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnc5eHBvcGVuPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEJhc2ljUnVudGltZUNoZWNrcz5FbmFibGVGYXN0Q2hlY2tzPC9CYXNpY1J1bnRpbWVDaGVja3M+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHc5eHBvcGVuLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjNjdhZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2FiYzJkZmZkLTNmMmEtNDdiZC1iODliLTAzMTRjOTllZjIxZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcdzl4cG9wZW4uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ogYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y1MThlOQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvagpAQCAtMCwwICsxLDIxOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPndpbnNvdW5kPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+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+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5zb3VuZC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDA4OTMxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHdpbnNvdW5kLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC94NjQucHJvcHMgYi9QQ2J1aWxkL3g2NC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODlkOTViCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC94NjQucHJvcHMKQEAgLTAsMCArMSwyMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgQ29uZGl0aW9uPSInJChIT1NUX1BZVEhPTiknIT0nJyI+CisgICAgPFB5dGhvbkV4ZT4kKEhPU1RfUFlUSE9OKTwvUHl0aG9uRXhlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1VTRUNMOk1TX09QVEVST04gL0dTLSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTjY0O19NX1g2NDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5dGhvbkV4ZSI+CisgICAgICA8VmFsdWU+JChQeXRob25FeGUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvaiBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiYzIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKQEAgLTAsMCArMSwxOTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnh4bGltaXRlZDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfV0lOMzI7X1dJTkRMTDtQeV9MSU1JVEVEX0FQSTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UHlfTElNSVRFRF9BUEk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZGI0NjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWI1ZWViYzctMzc4Ny00ZjhmLWIyODItMjA0ZGIyOTYyY2MzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHh4bGltaXRlZC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BhcnNlci9QeXRob24uYXNkbCBiL1BhcnNlci9QeXRob24uYXNkbAppbmRleCA5NDA3YjJmLi42YjA2ZGVjIDEwMDY0NAotLS0gYS9QYXJzZXIvUHl0aG9uLmFzZGwKKysrIGIvUGFyc2VyL1B5dGhvbi5hc2RsCkBAIC0xLDExOSArMSwxMjAgQEAKLS0tIEFTREwncyBmb3VyIGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBvYmplY3QKKy0tIEFTREwncyBmaXZlIGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0CiAKLW1vZHVsZSBQeXRob24gdmVyc2lvbiAiJFJldmlzaW9uJCIKK21vZHVsZSBQeXRob24KIHsKLQltb2QgPSBNb2R1bGUoc3RtdCogYm9keSkKLQkgICAgfCBJbnRlcmFjdGl2ZShzdG10KiBib2R5KQotCSAgICB8IEV4cHJlc3Npb24oZXhwciBib2R5KQorICAgIG1vZCA9IE1vZHVsZShzdG10KiBib2R5KQorICAgICAgICB8IEludGVyYWN0aXZlKHN0bXQqIGJvZHkpCisgICAgICAgIHwgRXhwcmVzc2lvbihleHByIGJvZHkpCiAKLQkgICAgLS0gbm90IHJlYWxseSBhbiBhY3R1YWwgbm9kZSBidXQgdXNlZnVsIGluIEp5dGhvbidzIHR5cGVzeXN0ZW0uCi0JICAgIHwgU3VpdGUoc3RtdCogYm9keSkKKyAgICAgICAgLS0gbm90IHJlYWxseSBhbiBhY3R1YWwgbm9kZSBidXQgdXNlZnVsIGluIEp5dGhvbidzIHR5cGVzeXN0ZW0uCisgICAgICAgIHwgU3VpdGUoc3RtdCogYm9keSkKIAotCXN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLCAKKyAgICBzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10KiBib2R5LCBleHByKiBkZWNvcmF0b3JfbGlzdCwgZXhwcj8gcmV0dXJucykKLQkgICAgICB8IENsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgCi0JCQkgZXhwciogYmFzZXMsCi0JCQkga2V5d29yZCoga2V5d29yZHMsCi0JCQkgZXhwcj8gc3RhcmFyZ3MsCi0JCQkgZXhwcj8ga3dhcmdzLAotCQkJIHN0bXQqIGJvZHksCi0JCQkgZXhwciogZGVjb3JhdG9yX2xpc3QpCi0JICAgICAgfCBSZXR1cm4oZXhwcj8gdmFsdWUpCisgICAgICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIAorICAgICAgICAgICAgIGV4cHIqIGJhc2VzLAorICAgICAgICAgICAgIGtleXdvcmQqIGtleXdvcmRzLAorICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLAorICAgICAgICAgICAgIGV4cHI/IGt3YXJncywKKyAgICAgICAgICAgICBzdG10KiBib2R5LAorICAgICAgICAgICAgIGV4cHIqIGRlY29yYXRvcl9saXN0KQorICAgICAgICAgIHwgUmV0dXJuKGV4cHI/IHZhbHVlKQogCi0JICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKLQkgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQotCSAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKKyAgICAgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQorICAgICAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCisgICAgICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQogCi0JICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwotCSAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IFdoaWxlKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgSWYoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBXaXRoKGV4cHIgY29udGV4dF9leHByLCBleHByPyBvcHRpb25hbF92YXJzLCBzdG10KiBib2R5KQorICAgICAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKKyAgICAgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBXaGlsZShleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IElmKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgV2l0aCh3aXRoaXRlbSogaXRlbXMsIHN0bXQqIGJvZHkpCiAKLQkgICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCi0JICAgICAgfCBUcnlFeGNlcHQoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IFRyeUZpbmFsbHkoc3RtdCogYm9keSwgc3RtdCogZmluYWxib2R5KQotCSAgICAgIHwgQXNzZXJ0KGV4cHIgdGVzdCwgZXhwcj8gbXNnKQorICAgICAgICAgIHwgUmFpc2UoZXhwcj8gZXhjLCBleHByPyBjYXVzZSkKKyAgICAgICAgICB8IFRyeShzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlLCBzdG10KiBmaW5hbGJvZHkpCisgICAgICAgICAgfCBBc3NlcnQoZXhwciB0ZXN0LCBleHByPyBtc2cpCiAKLQkgICAgICB8IEltcG9ydChhbGlhcyogbmFtZXMpCi0JICAgICAgfCBJbXBvcnRGcm9tKGlkZW50aWZpZXI/IG1vZHVsZSwgYWxpYXMqIG5hbWVzLCBpbnQ/IGxldmVsKQorICAgICAgICAgIHwgSW1wb3J0KGFsaWFzKiBuYW1lcykKKyAgICAgICAgICB8IEltcG9ydEZyb20oaWRlbnRpZmllcj8gbW9kdWxlLCBhbGlhcyogbmFtZXMsIGludD8gbGV2ZWwpCiAKLQkgICAgICB8IEdsb2JhbChpZGVudGlmaWVyKiBuYW1lcykKLQkgICAgICB8IE5vbmxvY2FsKGlkZW50aWZpZXIqIG5hbWVzKQotCSAgICAgIHwgRXhwcihleHByIHZhbHVlKQotCSAgICAgIHwgUGFzcyB8IEJyZWFrIHwgQ29udGludWUKKyAgICAgICAgICB8IEdsb2JhbChpZGVudGlmaWVyKiBuYW1lcykKKyAgICAgICAgICB8IE5vbmxvY2FsKGlkZW50aWZpZXIqIG5hbWVzKQorICAgICAgICAgIHwgRXhwcihleHByIHZhbHVlKQorICAgICAgICAgIHwgUGFzcyB8IEJyZWFrIHwgQ29udGludWUKIAotCSAgICAgIC0tIFhYWCBKeXRob24gd2lsbCBiZSBkaWZmZXJlbnQKLQkgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCi0JICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgICAgICAgLS0gWFhYIEp5dGhvbiB3aWxsIGJlIGRpZmZlcmVudAorICAgICAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKKyAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAotCSAgICAgIC0tIEJvb2xPcCgpIGNhbiB1c2UgbGVmdCAmIHJpZ2h0PwotCWV4cHIgPSBCb29sT3AoYm9vbG9wIG9wLCBleHByKiB2YWx1ZXMpCi0JICAgICB8IEJpbk9wKGV4cHIgbGVmdCwgb3BlcmF0b3Igb3AsIGV4cHIgcmlnaHQpCi0JICAgICB8IFVuYXJ5T3AodW5hcnlvcCBvcCwgZXhwciBvcGVyYW5kKQotCSAgICAgfCBMYW1iZGEoYXJndW1lbnRzIGFyZ3MsIGV4cHIgYm9keSkKLQkgICAgIHwgSWZFeHAoZXhwciB0ZXN0LCBleHByIGJvZHksIGV4cHIgb3JlbHNlKQotCSAgICAgfCBEaWN0KGV4cHIqIGtleXMsIGV4cHIqIHZhbHVlcykKLQkgICAgIHwgU2V0KGV4cHIqIGVsdHMpCi0JICAgICB8IExpc3RDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgfCBTZXRDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgfCBEaWN0Q29tcChleHByIGtleSwgZXhwciB2YWx1ZSwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIHwgR2VuZXJhdG9yRXhwKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQotCSAgICAgLS0gdGhlIGdyYW1tYXIgY29uc3RyYWlucyB3aGVyZSB5aWVsZCBleHByZXNzaW9ucyBjYW4gb2NjdXIKLQkgICAgIHwgWWllbGQoZXhwcj8gdmFsdWUpCi0JICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCi0JICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCi0JICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKLQkgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAotCQkJIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCi0JICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KLQkgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/Ci0JICAgICB8IEJ5dGVzKHN0cmluZyBzKQotCSAgICAgfCBFbGxpcHNpcwotCSAgICAgLS0gb3RoZXIgbGl0ZXJhbHM/IGJvb2xzPworICAgICAgICAgIC0tIEJvb2xPcCgpIGNhbiB1c2UgbGVmdCAmIHJpZ2h0PworICAgIGV4cHIgPSBCb29sT3AoYm9vbG9wIG9wLCBleHByKiB2YWx1ZXMpCisgICAgICAgICB8IEJpbk9wKGV4cHIgbGVmdCwgb3BlcmF0b3Igb3AsIGV4cHIgcmlnaHQpCisgICAgICAgICB8IFVuYXJ5T3AodW5hcnlvcCBvcCwgZXhwciBvcGVyYW5kKQorICAgICAgICAgfCBMYW1iZGEoYXJndW1lbnRzIGFyZ3MsIGV4cHIgYm9keSkKKyAgICAgICAgIHwgSWZFeHAoZXhwciB0ZXN0LCBleHByIGJvZHksIGV4cHIgb3JlbHNlKQorICAgICAgICAgfCBEaWN0KGV4cHIqIGtleXMsIGV4cHIqIHZhbHVlcykKKyAgICAgICAgIHwgU2V0KGV4cHIqIGVsdHMpCisgICAgICAgICB8IExpc3RDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgfCBTZXRDb21wKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgfCBEaWN0Q29tcChleHByIGtleSwgZXhwciB2YWx1ZSwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIHwgR2VuZXJhdG9yRXhwKGV4cHIgZWx0LCBjb21wcmVoZW5zaW9uKiBnZW5lcmF0b3JzKQorICAgICAgICAgLS0gdGhlIGdyYW1tYXIgY29uc3RyYWlucyB3aGVyZSB5aWVsZCBleHByZXNzaW9ucyBjYW4gb2NjdXIKKyAgICAgICAgIHwgWWllbGQoZXhwcj8gdmFsdWUpCisgICAgICAgICAgICAgfCBZaWVsZEZyb20oZXhwcj8gdmFsdWUpCisgICAgICAgICAtLSBuZWVkIHNlcXVlbmNlcyBmb3IgY29tcGFyZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCisgICAgICAgICAtLSB4IDwgNCA8IDMgYW5kICh4IDwgNCkgPCAzCisgICAgICAgICB8IENvbXBhcmUoZXhwciBsZWZ0LCBjbXBvcCogb3BzLCBleHByKiBjb21wYXJhdG9ycykKKyAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzLAorICAgICAgICAgICAgIGV4cHI/IHN0YXJhcmdzLCBleHByPyBrd2FyZ3MpCisgICAgICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KKyAgICAgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/CisgICAgICAgICB8IEJ5dGVzKGJ5dGVzIHMpCisgICAgICAgICB8IEVsbGlwc2lzCisgICAgICAgICAtLSBvdGhlciBsaXRlcmFscz8gYm9vbHM/CiAKLQkgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAotCSAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBTdWJzY3JpcHQoZXhwciB2YWx1ZSwgc2xpY2Ugc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IFN0YXJyZWQoZXhwciB2YWx1ZSwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgTmFtZShpZGVudGlmaWVyIGlkLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpIAotCSAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0CisgICAgICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IFN1YnNjcmlwdChleHByIHZhbHVlLCBzbGljZSBzbGljZSwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgU3RhcnJlZChleHByIHZhbHVlLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBOYW1lKGlkZW50aWZpZXIgaWQsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IExpc3QoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkgCisgICAgICAgICB8IFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCiAKLQkgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCi0JICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCisgICAgICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcworICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JZXhwcl9jb250ZXh0ID0gTG9hZCB8IFN0b3JlIHwgRGVsIHwgQXVnTG9hZCB8IEF1Z1N0b3JlIHwgUGFyYW0KKyAgICBleHByX2NvbnRleHQgPSBMb2FkIHwgU3RvcmUgfCBEZWwgfCBBdWdMb2FkIHwgQXVnU3RvcmUgfCBQYXJhbQogCi0Jc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAotCSAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAotCSAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCisgICAgc2xpY2UgPSBTbGljZShleHByPyBsb3dlciwgZXhwcj8gdXBwZXIsIGV4cHI/IHN0ZXApIAorICAgICAgICAgIHwgRXh0U2xpY2Uoc2xpY2UqIGRpbXMpIAorICAgICAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkgCiAKLQlib29sb3AgPSBBbmQgfCBPciAKKyAgICBib29sb3AgPSBBbmQgfCBPciAKIAotCW9wZXJhdG9yID0gQWRkIHwgU3ViIHwgTXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdCAKKyAgICBvcGVyYXRvciA9IEFkZCB8IFN1YiB8IE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQgCiAgICAgICAgICAgICAgICAgIHwgUlNoaWZ0IHwgQml0T3IgfCBCaXRYb3IgfCBCaXRBbmQgfCBGbG9vckRpdgogCi0JdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCisgICAgdW5hcnlvcCA9IEludmVydCB8IE5vdCB8IFVBZGQgfCBVU3ViCiAKLQljbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KKyAgICBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KIAotCWNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQorICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQogCi0JLS0gbm90IHN1cmUgd2hhdCB0byBjYWxsIHRoZSBmaXJzdCBhcmd1bWVudCBmb3IgcmFpc2UgYW5kIGV4Y2VwdAotCWV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCi0JICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQorICAgIGV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCisgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogCi0JYXJndW1lbnRzID0gKGFyZyogYXJncywgaWRlbnRpZmllcj8gdmFyYXJnLCBleHByPyB2YXJhcmdhbm5vdGF0aW9uLAorICAgIGFyZ3VtZW50cyA9IChhcmcqIGFyZ3MsIGlkZW50aWZpZXI/IHZhcmFyZywgZXhwcj8gdmFyYXJnYW5ub3RhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGFyZyoga3dvbmx5YXJncywgaWRlbnRpZmllcj8ga3dhcmcsCiAgICAgICAgICAgICAgICAgICAgICBleHByPyBrd2FyZ2Fubm90YXRpb24sIGV4cHIqIGRlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgZXhwcioga3dfZGVmYXVsdHMpCi0JYXJnID0gKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uKQorICAgIGFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKIAotICAgICAgICAtLSBrZXl3b3JkIGFyZ3VtZW50cyBzdXBwbGllZCB0byBjYWxsCi0gICAgICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCisgICAgLS0ga2V5d29yZCBhcmd1bWVudHMgc3VwcGxpZWQgdG8gY2FsbAorICAgIGtleXdvcmQgPSAoaWRlbnRpZmllciBhcmcsIGV4cHIgdmFsdWUpCiAKLSAgICAgICAgLS0gaW1wb3J0IG5hbWUgd2l0aCBvcHRpb25hbCAnYXMnIGFsaWFzLgotICAgICAgICBhbGlhcyA9IChpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXI/IGFzbmFtZSkKKyAgICAtLSBpbXBvcnQgbmFtZSB3aXRoIG9wdGlvbmFsICdhcycgYWxpYXMuCisgICAgYWxpYXMgPSAoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyPyBhc25hbWUpCisKKyAgICB3aXRoaXRlbSA9IChleHByIGNvbnRleHRfZXhwciwgZXhwcj8gb3B0aW9uYWxfdmFycykKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCA3YjRlMmRjLi4wOGFhMDViIDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMTE0LDI4ICsxMTQsMjAgQEAKICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHRvay5saW5lbm8sIHRvaykKIAogICAgIGRlZiBwX21vZHVsZV8wKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgdmVyc2lvbiB7IH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIHZlcnNpb24sIF8wLCBfMSA9IGluZm8KKyAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgfSAiCisgICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIF8xID0gaW5mbwogICAgICAgICBpZiBtb2R1bGUudmFsdWUgIT0gIm1vZHVsZSI6CiAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IobW9kdWxlLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICdtb2R1bGUnLCBmb3VuZCAlcyIgJSBtb2R1bGUpCi0gICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgTm9uZSwgdmVyc2lvbikKKyAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBOb25lKQogCiAgICAgZGVmIHBfbW9kdWxlKHNlbGYsIGluZm8pOgotICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgdmVyc2lvbiB7IGRlZmluaXRpb25zIH0gIgotICAgICAgICBtb2R1bGUsIG5hbWUsIHZlcnNpb24sIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCisgICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IGRlZmluaXRpb25zIH0gIgorICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBkZWZpbml0aW9ucywgXzEgPSBpbmZvCiAgICAgICAgIGlmIG1vZHVsZS52YWx1ZSAhPSAibW9kdWxlIjoKICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihtb2R1bGUubGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ21vZHVsZScsIGZvdW5kICVzIiAlIG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIE1vZHVsZShuYW1lLCBkZWZpbml0aW9ucywgdmVyc2lvbikKLQotICAgIGRlZiBwX3ZlcnNpb24oc2VsZiwgaW5mbyk6Ci0gICAgICAgICJ2ZXJzaW9uIDo6PSBJZCBTdHJpbmciCi0gICAgICAgIHZlcnNpb24sIFYgPSBpbmZvCi0gICAgICAgIGlmIHZlcnNpb24udmFsdWUgIT0gInZlcnNpb24iOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKHZlcnNpb24ubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgJ3ZlcnNpb24nLCBmb3VuZCAlIiAlIHZlcnNpb24pCi0gICAgICAgIHJldHVybiBWCisgICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgZGVmaW5pdGlvbnMpCiAKICAgICBkZWYgcF9kZWZpbml0aW9uXzAoc2VsZiwgZGVmaW5pdGlvbik6CiAgICAgICAgICIgZGVmaW5pdGlvbnMgOjo9IGRlZmluaXRpb24gIgpAQCAtMTY0LDE1ICsxNTYsMTEgQEAKICAgICAgICAgaWYgaWQudmFsdWUgIT0gImF0dHJpYnV0ZXMiOgogICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKGlkLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkIGF0dHJpYnV0ZXMsIGZvdW5kICVzIiAlIGlkKQotICAgICAgICBpZiBhdHRyaWJ1dGVzOgotICAgICAgICAgICAgYXR0cmlidXRlcy5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIFN1bShzdW0sIGF0dHJpYnV0ZXMpCiAKICAgICBkZWYgcF9wcm9kdWN0KHNlbGYsIGluZm8pOgogICAgICAgICAiIHByb2R1Y3QgOjo9ICggZmllbGRzICkgIgogICAgICAgICBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgIyBYWFggY2FuJ3QgSSBqdXN0IGNvbnN0cnVjdCB0aGluZ3MgaW4gdGhlIHJpZ2h0IG9yZGVyPwotICAgICAgICBmaWVsZHMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcykKIAogICAgIGRlZiBwX3N1bV8wKHNlbGYsIGNvbnN0cnVjdG9yKToKQEAgLTE5Niw4ICsxODQsNiBAQAogICAgIGRlZiBwX2NvbnN0cnVjdG9yXzEoc2VsZiwgaW5mbyk6CiAgICAgICAgICIgY29uc3RydWN0b3IgOjo9IElkICggZmllbGRzICkgIgogICAgICAgICBpZCwgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgICMgWFhYIGNhbid0IEkganVzdCBjb25zdHJ1Y3QgdGhpbmdzIGluIHRoZSByaWdodCBvcmRlcj8KLSAgICAgICAgZmllbGRzLnJldmVyc2UoKQogICAgICAgICByZXR1cm4gQ29uc3RydWN0b3IoaWQsIGZpZWxkcykKIAogICAgIGRlZiBwX2ZpZWxkc18wKHNlbGYsIGZpZWxkKToKQEAgLTIwNSw4ICsxOTEsOCBAQAogICAgICAgICByZXR1cm4gW2ZpZWxkWzBdXQogCiAgICAgZGVmIHBfZmllbGRzXzEoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGRzIDo6PSBmaWVsZCAsIGZpZWxkcyAiCi0gICAgICAgIGZpZWxkLCBfLCBmaWVsZHMgPSBpbmZvCisgICAgICAgICIgZmllbGRzIDo6PSBmaWVsZHMgLCBmaWVsZCAiCisgICAgICAgIGZpZWxkcywgXywgZmllbGQgPSBpbmZvCiAgICAgICAgIHJldHVybiBmaWVsZHMgKyBbZmllbGRdCiAKICAgICBkZWYgcF9maWVsZF8wKHNlbGYsIHR5cGVfKToKQEAgLTIzNiw3ICsyMjIsNyBAQAogICAgICAgICAiIGZpZWxkIDo6PSBJZCA/ICIKICAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVbMF0sIG9wdD1UcnVlKQogCi1idWlsdGluX3R5cGVzID0gKCJpZGVudGlmaWVyIiwgInN0cmluZyIsICJpbnQiLCAiYm9vbCIsICJvYmplY3QiKQorYnVpbHRpbl90eXBlcyA9ICgiaWRlbnRpZmllciIsICJzdHJpbmciLCAiYnl0ZXMiLCAiaW50IiwgIm9iamVjdCIpCiAKICMgYmVsb3cgaXMgYSBjb2xsZWN0aW9uIG9mIGNsYXNzZXMgdG8gY2FwdHVyZSB0aGUgQVNUIG9mIGFuIEFTVCA6LSkKICMgbm90IHN1cmUgaWYgYW55IG9mIHRoZSBtZXRob2RzIGFyZSB1c2VmdWwgeWV0LCBidXQgSSdtIGFkZGluZyB0aGVtCkBAIC0yNDYsMTAgKzIzMiw5IEBACiAgICAgcGFzcyAjIGEgbWFya2VyIGNsYXNzCiAKIGNsYXNzIE1vZHVsZShBU1QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZm5zLCB2ZXJzaW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZGZucyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5kZm5zID0gZGZucwotICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCiAgICAgICAgIHNlbGYudHlwZXMgPSB7fSAjIG1hcHMgdHlwZSBuYW1lIHRvIHZhbHVlIChmcm9tIGRmbnMpCiAgICAgICAgIGZvciB0eXBlIGluIGRmbnM6CiAgICAgICAgICAgICBzZWxmLnR5cGVzW3R5cGUubmFtZS52YWx1ZV0gPSB0eXBlLnZhbHVlCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQppbmRleCA3ZjYxM2RiLi41NzQ4MzYwIDEwMDc1NQotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTUsNiArNSw3IEBACiAjIGhhbmRsZSBmaWVsZHMgdGhhdCBoYXZlIGEgdHlwZSBidXQgbm8gbmFtZQogCiBpbXBvcnQgb3MsIHN5cworaW1wb3J0IHN1YnByb2Nlc3MKIAogaW1wb3J0IGFzZGwKIApAQCAtODQsOCArODUsMTYgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlKToKICAgICAgICAgc2VsZi5maWxlID0gZmlsZQorICAgICAgICBzZWxmLmlkZW50aWZpZXJzID0gc2V0KCkKICAgICAgICAgc3VwZXIoRW1pdFZpc2l0b3IsIHNlbGYpLl9faW5pdF9fKCkKIAorICAgIGRlZiBlbWl0X2lkZW50aWZpZXIoc2VsZiwgbmFtZSk6CisgICAgICAgIG5hbWUgPSBzdHIobmFtZSkKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLmlkZW50aWZpZXJzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuZW1pdCgiX1B5X0lERU5USUZJRVIoJXMpOyIgJSBuYW1lLCAwKQorICAgICAgICBzZWxmLmlkZW50aWZpZXJzLmFkZChuYW1lKQorCiAgICAgZGVmIGVtaXQoc2VsZiwgcywgZGVwdGgsIHJlZmxvdz1UcnVlKToKICAgICAgICAgIyBYWFggcmVmbG93IGxvbmcgbGluZXM/CiAgICAgICAgIGlmIHJlZmxvdzoKQEAgLTQ4NSwxMiArNDk0LDEyIEBACiAKICAgICBkZWYgdmlzaXRGaWVsZChzZWxmLCBmaWVsZCwgbmFtZSwgc3VtPU5vbmUsIHByb2Q9Tm9uZSwgZGVwdGg9MCk6CiAgICAgICAgIGN0eXBlID0gZ2V0X2NfdHlwZShmaWVsZC50eXBlKQotICAgICAgICBzZWxmLmVtaXQoImlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgXCIlc1wiKSkgeyIgJSBmaWVsZC5uYW1lLCBkZXB0aCkKKyAgICAgICAgc2VsZi5lbWl0KCJpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkXyVzKSkgeyIgJSBmaWVsZC5uYW1lLCBkZXB0aCkKICAgICAgICAgc2VsZi5lbWl0KCJpbnQgcmVzOyIsIGRlcHRoKzEpCiAgICAgICAgIGlmIGZpZWxkLnNlcToKICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBsZW47IiwgZGVwdGgrMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBpOyIsIGRlcHRoKzEpCi0gICAgICAgIHNlbGYuZW1pdCgidG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIFwiJXNcIik7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKzEpCisgICAgICAgIHNlbGYuZW1pdCgidG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkXyVzKTsiICUgZmllbGQubmFtZSwgZGVwdGgrMSkKICAgICAgICAgc2VsZi5lbWl0KCJpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOyIsIGRlcHRoKzEpCiAgICAgICAgIGlmIGZpZWxkLnNlcToKICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeyIsIGRlcHRoKzEpCkBAIC01NTIsNiArNTYxLDggQEAKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlUeXBlT2JqZWN0IColc190eXBlOyIgJSBuYW1lLCAwKQogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial8lcyh2b2lkKik7IiAlIG5hbWUsIDApCiAgICAgICAgIGlmIHByb2QuZmllbGRzOgorICAgICAgICAgICAgZm9yIGYgaW4gcHJvZC5maWVsZHM6CisgICAgICAgICAgICAgICAgc2VsZi5lbWl0X2lkZW50aWZpZXIoZi5uYW1lKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgY2hhciAqJXNfZmllbGRzW109eyIgJSBuYW1lLDApCiAgICAgICAgICAgICBmb3IgZiBpbiBwcm9kLmZpZWxkczoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIGYubmFtZSwgMSkKQEAgLTU2MCw2ICs1NzEsOCBAQAogICAgIGRlZiB2aXNpdFN1bShzZWxmLCBzdW0sIG5hbWUpOgogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIG5hbWUsIDApCiAgICAgICAgIGlmIHN1bS5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5lbWl0X2lkZW50aWZpZXIoYS5uYW1lKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgY2hhciAqJXNfYXR0cmlidXRlc1tdID0geyIgJSBuYW1lLCAwKQogICAgICAgICAgICAgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXM6CiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCciJXMiLCcgJSBhLm5hbWUsIDEpCkBAIC01NzksNiArNTkyLDggQEAKICAgICBkZWYgdmlzaXRDb25zdHJ1Y3RvcihzZWxmLCBjb25zLCBuYW1lKToKICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgUHlUeXBlT2JqZWN0IColc190eXBlOyIgJSBjb25zLm5hbWUsIDApCiAgICAgICAgIGlmIGNvbnMuZmllbGRzOgorICAgICAgICAgICAgZm9yIHQgaW4gY29ucy5maWVsZHM6CisgICAgICAgICAgICAgICAgc2VsZi5lbWl0X2lkZW50aWZpZXIodC5uYW1lKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJzdGF0aWMgY2hhciAqJXNfZmllbGRzW109eyIgJSBjb25zLm5hbWUsIDApCiAgICAgICAgICAgICBmb3IgdCBpbiBjb25zLmZpZWxkczoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIHQubmFtZSwgMSkKQEAgLTU4OCwxMyArNjAzLDM5IEBACiAKICAgICBkZWYgdmlzaXRNb2R1bGUoc2VsZiwgbW9kKToKICAgICAgICAgc2VsZi5lbWl0KCIiIgordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqZGljdDsKK30gQVNUX29iamVjdDsKKworc3RhdGljIHZvaWQKK2FzdF9kZWFsbG9jKEFTVF9vYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIGludAorYXN0X3RyYXZlcnNlKEFTVF9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorYXN0X2NsZWFyKEFTVF9vYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7Cit9CisKIHN0YXRpYyBpbnQKIGFzdF90eXBlX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpZWxkcyk7CiAgICAgUHlfc3NpemVfdCBpLCBudW1maWVsZHMgPSAwOwogICAgIGludCByZXMgPSAtMTsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpmaWVsZHM7Ci0gICAgZmllbGRzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoc2VsZiksICJfZmllbGRzIik7CisgICAgZmllbGRzID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QqKVB5X1RZUEUoc2VsZiksICZQeUlkX19maWVsZHMpOwogICAgIGlmICghZmllbGRzKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGlmIChmaWVsZHMpIHsKQEAgLTY0NCw3ICs2ODUsOCBAQAogYXN0X3R5cGVfcmVkdWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2RpY3RfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICBQeU9iamVjdCAqZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTY2NCwxMiArNzA2LDE3IEBACiAgICAge05VTEx9CiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgYXN0X3R5cGVfZ2V0c2V0c1tdID0geworICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBBU1RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJfYXN0LkFTVCIsCi0gICAgc2l6ZW9mKFB5T2JqZWN0KSwKKyAgICBzaXplb2YoQVNUX29iamVjdCksCiAgICAgMCwKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWFzdF9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtNjg0LDI2ICs3MzEsMjYgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgLyogdHBfZ2V0YXR0cm8gKi8KICAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzdF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlhc3RfY2xlYXIsICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGFzdF90eXBlX21ldGhvZHMsICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgYXN0X3R5cGVfZ2V0c2V0cywgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoQVNUX29iamVjdCwgZGljdCksLyogdHBfZGljdG9mZnNldCAqLwogICAgIChpbml0cHJvYylhc3RfdHlwZV9pbml0LCAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtNzMwLDYgKzc3Nyw3IEBACiBzdGF0aWMgaW50IGFkZF9hdHRyaWJ1dGVzKFB5VHlwZU9iamVjdCogdHlwZSwgY2hhcioqYXR0cnMsIGludCBudW1fZmllbGRzKQogewogICAgIGludCBpLCByZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX2F0dHJpYnV0ZXMpOwogICAgIFB5T2JqZWN0ICpzLCAqbCA9IFB5VHVwbGVfTmV3KG51bV9maWVsZHMpOwogICAgIGlmICghbCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03NDEsNyArNzg5LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGwsIGksIHMpOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKChQeU9iamVjdCopdHlwZSwgIl9hdHRyaWJ1dGVzIiwgbCkgPj0gMDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfU2V0QXR0cklkKChQeU9iamVjdCopdHlwZSwgJlB5SWRfX2F0dHJpYnV0ZXMsIGwpID49IDA7CiAgICAgUHlfREVDUkVGKGwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03NTAsNyArNzk4LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2xpc3QoYXNkbF9zZXEgKnNlcSwgUHlPYmplY3QqICgqZnVuYykodm9pZCopKQogewotICAgIGludCBpLCBuID0gYXNkbF9zZXFfTEVOKHNlcSk7CisgICAgUHlfc3NpemVfdCBpLCBuID0gYXNkbF9zZXFfTEVOKHNlcSk7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5TGlzdF9OZXcobik7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIGlmICghcmVzdWx0KQpAQCAtNzc1LDYgKzgyMyw3IEBACiB9CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9pbnQobG9uZyBiKQogewpAQCAtODEyLDYgKzg2MSwxNSBAQAogICAgIHJldHVybiBvYmoyYXN0X29iamVjdChvYmosIG91dCwgYXJlbmEpOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfYnl0ZXMoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkFTVCBieXRlcyBtdXN0IGJlIG9mIHR5cGUgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBvYmoyYXN0X29iamVjdChvYmosIG91dCwgYXJlbmEpOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaW50KFB5T2JqZWN0KiBvYmosIGludCogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpbnQgaTsKQEAgLTkxMCwxMCArOTY4LDYgQEAKICAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFTVCIsIChQeU9iamVjdCopJkFTVF90eXBlKSA8IDApIHJldHVybiBOVUxMOycsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUNGX09OTFlfQVNUIiwgUHlDRl9PTkxZX0FTVCkgPCAwKScsIDEpCiAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIE5VTEw7IiwgMikKLSAgICAgICAgIyBWYWx1ZSBvZiB2ZXJzaW9uOiAiJFJldmlzaW9uJCIKLSAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIiVzIikgPCAwKScKLSAgICAgICAgICAgICAgICAlIG1vZC52ZXJzaW9uLCAxKQotICAgICAgICBzZWxmLmVtaXQoInJldHVybiBOVUxMOyIsIDIpCiAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6CiAgICAgICAgICAgICBzZWxmLnZpc2l0KGRmbikKICAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gbTsiLCAxKQpAQCAtOTk3LDcgKzEwNTEsNyBAQAogICAgICAgICBmb3IgYSBpbiBzdW0uYXR0cmlidXRlczoKICAgICAgICAgICAgIHNlbGYuZW1pdCgidmFsdWUgPSBhc3Qyb2JqXyVzKG8tPiVzKTsiICUgKGEudHlwZSwgYS5uYW1lKSwgMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7IiwgMSkKLSAgICAgICAgICAgIHNlbGYuZW1pdCgnaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiJXMiLCB2YWx1ZSkgPCAwKScgJSBhLm5hbWUsIDEpCisgICAgICAgICAgICBzZWxmLmVtaXQoJ2lmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfJXMsIHZhbHVlKSA8IDApJyAlIGEubmFtZSwgMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgnZ290byBmYWlsZWQ7JywgMikKICAgICAgICAgICAgIHNlbGYuZW1pdCgnUHlfREVDUkVGKHZhbHVlKTsnLCAxKQogICAgICAgICBzZWxmLmZ1bmNfZW5kKCkKQEAgLTEwNDMsNyArMTA5Nyw3IEBACiAgICAgICAgICAgICB2YWx1ZSA9ICJvLT52LiVzLiVzIiAlIChuYW1lLCBmaWVsZC5uYW1lKQogICAgICAgICBzZWxmLnNldChmaWVsZCwgdmFsdWUsIGRlcHRoKQogICAgICAgICBlbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCAwKQotICAgICAgICBlbWl0KCdpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICIlcyIsIHZhbHVlKSA9PSAtMSknICUgZmllbGQubmFtZSwgMCkKKyAgICAgICAgZW1pdCgnaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF8lcywgdmFsdWUpID09IC0xKScgJSBmaWVsZC5uYW1lLCAwKQogICAgICAgICBlbWl0KCJnb3RvIGZhaWxlZDsiLCAxKQogICAgICAgICBlbWl0KCJQeV9ERUNSRUYodmFsdWUpOyIsIDApCiAKQEAgLTEwNjYsNyArMTEyMCw3IEBACiAgICAgICAgICAgICAgICAgIyBXaGlsZSB0aGUgc2VxdWVuY2UgZWxlbWVudHMgYXJlIHN0b3JlZCBhcyB2b2lkKiwKICAgICAgICAgICAgICAgICAjIGFzdDJvYmpfY21wb3AgZXhwZWN0cyBhbiBlbnVtCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJ7IiwgZGVwdGgpCi0gICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTiglcyk7IiAlIHZhbHVlLCBkZXB0aCsxKQorICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiUHlfc3NpemVfdCBpLCBuID0gYXNkbF9zZXFfTEVOKCVzKTsiICUgdmFsdWUsIGRlcHRoKzEpCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJ2YWx1ZSA9IFB5TGlzdF9OZXcobik7IiwgZGVwdGgrMSkKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICghdmFsdWUpIGdvdG8gZmFpbGVkOyIsIGRlcHRoKzEpCiAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJmb3IoaSA9IDA7IGkgPCBuOyBpKyspIiwgZGVwdGgrMSkKQEAgLTExMzQsMjQgKzExODgsMTIgQEAKIAogY29tbW9uX21zZyA9ICIvKiBGaWxlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5ICVzLiAqL1xuXG4iCiAKLWNfZmlsZV9tc2cgPSAiIiIKLS8qCi0gICBfX3ZlcnNpb25fXyAlcy4KLQotICAgVGhpcyBtb2R1bGUgbXVzdCBiZSBjb21taXR0ZWQgc2VwYXJhdGVseSBhZnRlciBlYWNoIEFTVCBncmFtbWFyIGNoYW5nZTsKLSAgIFRoZSBfX3ZlcnNpb25fXyBudW1iZXIgaXMgc2V0IHRvIHRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGNvbW1pdAotICAgY29udGFpbmluZyB0aGUgZ3JhbW1hciBjaGFuZ2UuCi0qLwotCi0iIiIKLQogZGVmIG1haW4oc3JjZmlsZSk6CiAgICAgYXJndjAgPSBzeXMuYXJndlswXQogICAgIGNvbXBvbmVudHMgPSBhcmd2MC5zcGxpdChvcy5zZXApCiAgICAgYXJndjAgPSBvcy5zZXAuam9pbihjb21wb25lbnRzWy0yOl0pCiAgICAgYXV0b19nZW5fbXNnID0gY29tbW9uX21zZyAlIGFyZ3YwCiAgICAgbW9kID0gYXNkbC5wYXJzZShzcmNmaWxlKQotICAgIG1vZC52ZXJzaW9uID0gIjgyMTYzIgogICAgIGlmIG5vdCBhc2RsLmNoZWNrKG1vZCk6CiAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgaWYgSU5DX0RJUjoKQEAgLTExNzMsNyArMTIxNSw4IEBACiAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4oU1JDX0RJUiwgc3RyKG1vZC5uYW1lKSArICItYXN0LmMiKQogICAgICAgICBmID0gb3BlbihwLCAidyIpCiAgICAgICAgIGYud3JpdGUoYXV0b19nZW5fbXNnKQotICAgICAgICBmLndyaXRlKGNfZmlsZV9tc2cgJSBtb2QudmVyc2lvbikKKyAgICAgICAgZi53cml0ZSgnI2luY2x1ZGUgPHN0ZGRlZi5oPlxuJykKKyAgICAgICAgZi53cml0ZSgnXG4nKQogICAgICAgICBmLndyaXRlKCcjaW5jbHVkZSAiUHl0aG9uLmgiXG4nKQogICAgICAgICBmLndyaXRlKCcjaW5jbHVkZSAiJXMtYXN0LmgiXG4nICUgbW9kLm5hbWUpCiAgICAgICAgIGYud3JpdGUoJ1xuJykKZGlmZiAtLWdpdCBhL1BhcnNlci9pbnRyY2hlY2suYyBiL1BhcnNlci9pbnRyY2hlY2suYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzOTg2NC4uMDAwMDAwMAotLS0gYS9QYXJzZXIvaW50cmNoZWNrLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQgKzAsMCBAQAotCi0vKiBDaGVjayBmb3IgaW50ZXJydXB0cyAqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKLQotI2lmZGVmIFFVSUNLV0lOCi0KLSNpbmNsdWRlIDxpby5oPgotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgX3d5aWVsZCgpOwotfQotCi0jZGVmaW5lIE9LCi0KLSNlbmRpZiAvKiBRVUlDS1dJTiAqLwotCi0jaWYgZGVmaW5lZChfTV9JWDg2KSAmJiAhZGVmaW5lZChfX1FOWF9fKQotI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTVNET1MpICYmICFkZWZpbmVkKFFVSUNLV0lOKQotCi0jaWZkZWYgX19HTlVDX18KLQotLyogVGhpcyBpcyBmb3IgREpHUFAncyBHTzMyIGV4dGVuZGVyLiAgSSBkb24ndCBrbm93IGhvdyB0byB0cmFwCi0gKiBjb250cm9sLUMgIChUaGVyZSdzIG5vIEFQSSBmb3IgY3RybC1DLCBhbmQgSSBkb24ndCB3YW50IHRvIG1lc3Mgd2l0aAotICogdGhlIGludGVycnVwdCB2ZWN0b3JzLikgIEhvd2V2ZXIsIHRoaXMgRE9FUyBjYXRjaCBjb250cm9sLWJyZWFrLgotICogLS1BbXJpdAotICovCi0KLSNpbmNsdWRlIDxnbzMyLmg+Ci0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLSAgICBfZ28zMl93YW50X2N0cmxfYnJlYWsoMSAvKiBUUlVFICovKTsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICByZXR1cm4gX2dvMzJfd2FzX2N0cmxfYnJlYWtfaGl0KCk7Ci19Ci0KLSNlbHNlIC8qICFfX0dOVUNfXyAqLwotCi0vKiBUaGlzIG1pZ2h0IHdvcmsgZm9yIE1TLURPUyAodW50ZXN0ZWQgdGhvdWdoKTogKi8KLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIGludCBpbnRlcnJ1cHRlZCA9IDA7Ci0gICAgd2hpbGUgKGtiaGl0KCkpIHsKLSAgICAgICAgaWYgKGdldGNoKCkgPT0gJ1wwMDMnKQotICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSAxOwotICAgIH0KLSAgICByZXR1cm4gaW50ZXJydXB0ZWQ7Ci19Ci0KLSNlbmRpZiAvKiBfX0dOVUNfXyAqLwotCi0jZGVmaW5lIE9LCi0KLSNlbmRpZiAvKiBNU0RPUyAmJiAhUVVJQ0tXSU4gKi8KLQotCi0jaWZuZGVmIE9LCi0KLS8qIERlZmF1bHQgdmVyc2lvbiAtLSBmb3IgcmVhbCBvcGVyYXRpbmcgc3lzdGVtcyBhbmQgZm9yIFN0YW5kYXJkIEMgKi8KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0KLXN0YXRpYyBpbnQgaW50ZXJydXB0ZWQ7Ci0KLXZvaWQKLVB5RXJyX1NldEludGVycnVwdCh2b2lkKQotewotICAgIGludGVycnVwdGVkID0gMTsKLX0KLQotZXh0ZXJuIGludCBQeUVycl9DaGVja1NpZ25hbHModm9pZCk7Ci0KLXN0YXRpYyBpbnQKLWNoZWNrc2lnbmFsc193aXRoYXJnKHZvaWQgKiBhcmcpCi17Ci0gICAgcmV0dXJuIFB5RXJyX0NoZWNrU2lnbmFscygpOwotfQotCi1zdGF0aWMgdm9pZAotaW50Y2F0Y2hlcihpbnQgc2lnKQotewotICAgIGV4dGVybiB2b2lkIFB5X0V4aXQoaW50KTsKLSAgICBzdGF0aWMgY2hhciBtZXNzYWdlW10gPQotInB5dGhvbjogdG8gaW50ZXJydXB0IGEgdHJ1bHkgaGFuZ2luZyBQeXRob24gcHJvZ3JhbSwgaW50ZXJydXB0IG9uY2UgbW9yZS5cbiI7Ci0gICAgc3dpdGNoIChpbnRlcnJ1cHRlZCsrKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIHdyaXRlKDIsIG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgaW50ZXJydXB0ZWQgPSAwOwotICAgICAgICBQeV9FeGl0KDEpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgUHlPU19zZXRzaWcoU0lHSU5ULCBpbnRjYXRjaGVyKTsKLSAgICBQeV9BZGRQZW5kaW5nQ2FsbChjaGVja3NpZ25hbHNfd2l0aGFyZywgTlVMTCk7Ci19Ci0KLXN0YXRpYyB2b2lkICgqb2xkX3NpZ2ludGhhbmRsZXIpKGludCkgPSBTSUdfREZMOwotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci0gICAgaWYgKChvbGRfc2lnaW50aGFuZGxlciA9IFB5T1Nfc2V0c2lnKFNJR0lOVCwgU0lHX0lHTikpICE9IFNJR19JR04pCi0gICAgICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgaW50Y2F0Y2hlcik7Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLSAgICBQeU9TX3NldHNpZyhTSUdJTlQsIG9sZF9zaWdpbnRoYW5kbGVyKTsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgaWYgKCFpbnRlcnJ1cHRlZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaW50ZXJydXB0ZWQgPSAwOwotICAgIHJldHVybiAxOwotfQotCi0jZW5kaWYgLyogIU9LICovCi0KLXZvaWQKLVB5T1NfQWZ0ZXJGb3JrKHZvaWQpCi17Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeUV2YWxfUmVJbml0VGhyZWFkcygpOwotICAgIFB5VGhyZWFkX1JlSW5pdFRMUygpOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9QYXJzZXIvbXlyZWFkbGluZS5jIGIvUGFyc2VyL215cmVhZGxpbmUuYwppbmRleCA5M2VkZDdmLi5kODY0NjIzIDEwMDY0NAotLS0gYS9QYXJzZXIvbXlyZWFkbGluZS5jCisrKyBiL1BhcnNlci9teXJlYWRsaW5lLmMKQEAgLTM1LDEyICszNSwxMSBAQAogc3RhdGljIGludAogbXlfZmdldHMoY2hhciAqYnVmLCBpbnQgbGVuLCBGSUxFICpmcCkKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudDsKKyNlbmRpZgogICAgIGNoYXIgKnA7CiAgICAgaW50IGVycjsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaW50IGk7Ci0jZW5kaWYKLQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChQeU9TX0lucHV0SG9vayAhPSBOVUxMKQogICAgICAgICAgICAgKHZvaWQpKFB5T1NfSW5wdXRIb29rKSgpOwpAQCAtNTcsMjAgKzU2LDI0IEBACiAgICAgICAgIC8qIEN0cmwtQyBhbnl3aGVyZSBvbiB0aGUgbGluZSBvciBDdHJsLVogaWYgdGhlIG9ubHkgY2hhcmFjdGVyCiAgICAgICAgICAgIG9uIGEgbGluZSB3aWxsIHNldCBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRC4gVW5kZXIgbm9ybWFsCiAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMgQ3RybC1DIHdpbGwgYWxzbyBoYXZlIGNhdXNlZCB0aGUgU0lHSU5UIGhhbmRsZXIKLSAgICAgICAgICAgdG8gZmlyZS4gVGhpcyBzaWduYWwgZmlyZXMgaW4gYW5vdGhlciB0aHJlYWQgYW5kIGlzIG5vdAotICAgICAgICAgICBndWFyYW50ZWVkIHRvIGhhdmUgb2NjdXJyZWQgYmVmb3JlIHRoaXMgcG9pbnQgaW4gdGhlIGNvZGUuCisgICAgICAgICAgIHRvIGZpcmUgd2hpY2ggd2lsbCBoYXZlIHNldCB0aGUgZXZlbnQgb2JqZWN0IHJldHVybmVkIGJ5CisgICAgICAgICAgIF9QeU9TX1NpZ2ludEV2ZW50LiBUaGlzIHNpZ25hbCBmaXJlcyBpbiBhbm90aGVyIHRocmVhZCBhbmQKKyAgICAgICAgICAgaXMgbm90IGd1YXJhbnRlZWQgdG8gaGF2ZSBvY2N1cnJlZCBiZWZvcmUgdGhpcyBwb2ludCBpbiB0aGUKKyAgICAgICAgICAgY29kZS4KIAotICAgICAgICAgICBUaGVyZWZvcmU6IGNoZWNrIGluIGEgc21hbGwgbG9vcCB0byBzZWUgaWYgdGhlIHRyaWdnZXIgaGFzCi0gICAgICAgICAgIGZpcmVkLCBpbiB3aGljaCBjYXNlIGFzc3VtZSB0aGlzIGlzIGEgQ3RybC1DIGV2ZW50LiBJZiBpdAotICAgICAgICAgICBoYXNuJ3QgZmlyZWQgd2l0aGluIDEwbXMgYXNzdW1lIHRoYXQgdGhpcyBpcyBhIEN0cmwtWiBvbiBpdHMKLSAgICAgICAgICAgb3duIG9yIHRoYXQgdGhlIHNpZ25hbCBpc24ndCBnb2luZyB0byBmaXJlIGZvciBzb21lIG90aGVyCi0gICAgICAgICAgIHJlYXNvbiBhbmQgZHJvcCB0aHJvdWdoIHRvIGNoZWNrIGZvciBFT0YuCisgICAgICAgICAgIFRoZXJlZm9yZTogY2hlY2sgd2hldGhlciB0aGUgZXZlbnQgaXMgc2V0IHdpdGggYSBzbWFsbCB0aW1lb3V0LgorICAgICAgICAgICBJZiBpdCBpcywgYXNzdW1lIHRoaXMgaXMgYSBDdHJsLUMgYW5kIHJlc2V0IHRoZSBldmVudC4gSWYgaXQKKyAgICAgICAgICAgaXNuJ3Qgc2V0IGFzc3VtZSB0aGF0IHRoaXMgaXMgYSBDdHJsLVogb24gaXRzIG93biBhbmQgZHJvcAorICAgICAgICAgICB0aHJvdWdoIHRvIGNoZWNrIGZvciBFT0YuCiAgICAgICAgICovCiAgICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKT09RVJST1JfT1BFUkFUSU9OX0FCT1JURUQpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T1NfSW50ZXJydXB0T2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBTbGVlcCgxKTsKKyAgICAgICAgICAgIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBzd2l0Y2ggKFdhaXRGb3JTaW5nbGVPYmplY3QoaEludGVycnVwdEV2ZW50LCAxMCkpIHsKKyAgICAgICAgICAgIGNhc2UgV0FJVF9PQkpFQ1RfMDoKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEludGVycnVwdCAqLworICAgICAgICAgICAgY2FzZSBXQUlUX0ZBSUxFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gLTI7IC8qIEVycm9yICovCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCkBAIC05MCw3ICs5Myw3IEBACiAjZW5kaWYKICAgICAgICAgICAgIGlmIChzIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0JICAgIC8qIHRyeSBhZ2FpbiAqLworICAgICAgICAvKiB0cnkgYWdhaW4gKi8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1BhcnNlci9ub2RlLmMgYi9QYXJzZXIvbm9kZS5jCmluZGV4IDBkZWEzMGYuLjFlNGYwZGEgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ub2RlLmMKKysrIGIvUGFyc2VyL25vZGUuYwpAQCAtNzEsNyArNzEsNyBAQAogICogY2FwYWNpdHkuICBUaGUgY29kZSBpcyB0cmlja3kgdG8gYXZvaWQgdGhhdC4KICAqLwogI2RlZmluZSBYWFhST1VORFVQKG4pICgobikgPD0gMSA/IChuKSA6ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAobikgPD0gMTI4ID8gKCgobikgKyAzKSAmIH4zKSA6ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgIChuKSA8PSAxMjggPyBfUHlfU0laRV9ST1VORF9VUCgobiksIDQpIDogXAogICAgICAgICAgICAgICAgZmFuY3lfcm91bmR1cChuKSkKIAogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2suYyBiL1BhcnNlci9wYXJzZXRvay5jCmluZGV4IGJiOWFmYzQuLjdiZWI3MzUgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXRvay5jCisrKyBiL1BhcnNlci9wYXJzZXRvay5jCkBAIC0xMyw3ICsxMyw3IEBACiAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyBub2RlICpwYXJzZXRvayhzdHJ1Y3QgdG9rX3N0YXRlICosIGdyYW1tYXIgKiwgaW50LCBwZXJyZGV0YWlsICosIGludCAqKTsKLXN0YXRpYyB2b2lkIGluaXRlcnIocGVycmRldGFpbCAqZXJyX3JldCwgY29uc3QgY2hhciogZmlsZW5hbWUpOworc3RhdGljIGludCBpbml0ZXJyKHBlcnJkZXRhaWwgKmVycl9yZXQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKIAogLyogUGFyc2UgaW5wdXQgY29taW5nIGZyb20gYSBzdHJpbmcuICBSZXR1cm4gZXJyb3IgY29kZSwgcHJpbnQgc29tZSBlcnJvcnMuICovCiBub2RlICoKQEAgLTQ4LDcgKzQ4LDggQEAKICAgICBzdHJ1Y3QgdG9rX3N0YXRlICp0b2s7CiAgICAgaW50IGV4ZWNfaW5wdXQgPSBzdGFydCA9PSBmaWxlX2lucHV0OwogCi0gICAgaW5pdGVycihlcnJfcmV0LCBmaWxlbmFtZSk7CisgICAgaWYgKGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoKmZsYWdzICYgUHlQQVJTRV9JR05PUkVfQ09PS0lFKQogICAgICAgICB0b2sgPSBQeVRva2VuaXplcl9Gcm9tVVRGOChzLCBleGVjX2lucHV0KTsKQEAgLTU5LDcgKzYwLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHRvay0+ZmlsZW5hbWUgPSBmaWxlbmFtZSA/IGZpbGVuYW1lIDogIjxzdHJpbmc+IjsKKyNpZm5kZWYgUEdFTgorICAgIFB5X0lOQ1JFRihlcnJfcmV0LT5maWxlbmFtZSk7CisgICAgdG9rLT5maWxlbmFtZSA9IGVycl9yZXQtPmZpbGVuYW1lOworI2VuZGlmCiAgICAgcmV0dXJuIHBhcnNldG9rKHRvaywgZywgc3RhcnQsIGVycl9yZXQsIGZsYWdzKTsKIH0KIApAQCAtOTAsMTMgKzk0LDE3IEBACiB7CiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogCi0gICAgaW5pdGVycihlcnJfcmV0LCBmaWxlbmFtZSk7CisgICAgaWYgKGluaXRlcnIoZXJyX3JldCwgZmlsZW5hbWUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoKHRvayA9IFB5VG9rZW5pemVyX0Zyb21GaWxlKGZwLCAoY2hhciAqKWVuYywgcHMxLCBwczIpKSA9PSBOVUxMKSB7CiAgICAgICAgIGVycl9yZXQtPmVycm9yID0gRV9OT01FTTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRvay0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyNpZm5kZWYgUEdFTgorICAgIFB5X0lOQ1JFRihlcnJfcmV0LT5maWxlbmFtZSk7CisgICAgdG9rLT5maWxlbmFtZSA9IGVycl9yZXQtPmZpbGVuYW1lOworI2VuZGlmCiAgICAgcmV0dXJuIHBhcnNldG9rKHRvaywgZywgc3RhcnQsIGVycl9yZXQsIGZsYWdzKTsKIH0KIApAQCAtMjE2LDYgKzIyNCwzNiBAQAogICAgIGlmIChlcnJfcmV0LT5lcnJvciA9PSBFX0RPTkUpIHsKICAgICAgICAgbiA9IHBzLT5wX3RyZWU7CiAgICAgICAgIHBzLT5wX3RyZWUgPSBOVUxMOworCisjaWZuZGVmIFBHRU4KKyAgICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgc291cmNlIGZvciBhIHNpbmdsZSBpbnB1dCBzdGF0ZW1lbnQgcmVhbGx5CisgICAgICAgICAgIGlzIGEgc2luZ2xlIHN0YXRlbWVudCBieSBsb29raW5nIGF0IHdoYXQgaXMgbGVmdCBpbiB0aGUKKyAgICAgICAgICAgYnVmZmVyIGFmdGVyIHBhcnNpbmcuICBUcmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb21tZW50cworICAgICAgICAgICBhcmUgT0suICAqLworICAgICAgICBpZiAoc3RhcnQgPT0gc2luZ2xlX2lucHV0KSB7CisgICAgICAgICAgICBjaGFyICpjdXIgPSB0b2stPmN1cjsKKyAgICAgICAgICAgIGNoYXIgYyA9ICp0b2stPmN1cjsKKworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIHdoaWxlIChjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1wwMTQnKQorICAgICAgICAgICAgICAgICAgICBjID0gKisrY3VyOworCisgICAgICAgICAgICAgICAgaWYgKCFjKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGlmIChjICE9ICcjJykgeworICAgICAgICAgICAgICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfQkFEU0lOR0xFOworICAgICAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZShuKTsKKyAgICAgICAgICAgICAgICAgICAgbiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIFN1Y2sgdXAgY29tbWVudC4gKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAoYyAmJiBjICE9ICdcbicpCisgICAgICAgICAgICAgICAgICAgIGMgPSAqKytjdXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KICAgICBlbHNlCiAgICAgICAgIG4gPSBOVUxMOwpAQCAtMjI2LDcgKzI2NCw3IEBACiAgICAgUHlQYXJzZXJfRGVsZXRlKHBzKTsKIAogICAgIGlmIChuID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHRvay0+bGluZW5vIDw9IDEgJiYgdG9rLT5kb25lID09IEVfRU9GKQorICAgICAgICBpZiAodG9rLT5kb25lID09IEVfRU9GKQogICAgICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX0VPRjsKICAgICAgICAgZXJyX3JldC0+bGluZW5vID0gdG9rLT5saW5lbm87CiAgICAgICAgIGlmICh0b2stPmJ1ZiAhPSBOVUxMKSB7CkBAIC0yNjksMTQgKzMwNywyNCBAQAogICAgIHJldHVybiBuOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogaW5pdGVycihwZXJyZGV0YWlsICplcnJfcmV0LCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBlcnJfcmV0LT5lcnJvciA9IEVfT0s7Ci0gICAgZXJyX3JldC0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKICAgICBlcnJfcmV0LT5saW5lbm8gPSAwOwogICAgIGVycl9yZXQtPm9mZnNldCA9IDA7CiAgICAgZXJyX3JldC0+dGV4dCA9IE5VTEw7CiAgICAgZXJyX3JldC0+dG9rZW4gPSAtMTsKICAgICBlcnJfcmV0LT5leHBlY3RlZCA9IC0xOworI2lmbmRlZiBQR0VOCisgICAgaWYgKGZpbGVuYW1lKQorICAgICAgICBlcnJfcmV0LT5maWxlbmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOworICAgIGVsc2UKKyAgICAgICAgZXJyX3JldC0+ZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPHN0cmluZz4iKTsKKyAgICBpZiAoZXJyX3JldC0+ZmlsZW5hbWUgPT0gTlVMTCkgeworICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfRVJST1I7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRva19wZ2VuLmMgYi9QYXJzZXIvcGFyc2V0b2tfcGdlbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjkyODgKLS0tIC9kZXYvbnVsbAorKysgYi9QYXJzZXIvcGFyc2V0b2tfcGdlbi5jCkBAIC0wLDAgKzEsMiBAQAorI2RlZmluZSBQR0VOCisjaW5jbHVkZSAicGFyc2V0b2suYyIKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VubWFpbi5jIGIvUGFyc2VyL3BnZW5tYWluLmMKaW5kZXggNGI3YjU1YS4uNTJiODM4MCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW5tYWluLmMKKysrIGIvUGFyc2VyL3BnZW5tYWluLmMKQEAgLTI5LDYgKzI5LDggQEAKIC8qIEZvcndhcmQgKi8KIGdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpOwogCit2b2lkIFB5X0V4aXQoaW50KSBfUHlfTk9fUkVUVVJOOworCiB2b2lkCiBQeV9FeGl0KGludCBzdHMpCiB7CmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmMgYi9QYXJzZXIvdG9rZW5pemVyLmMKaW5kZXggNWJhMTJhNC4uOTNhNGE1YyAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5jCisrKyBiL1BhcnNlci90b2tlbml6ZXIuYwpAQCAtMTI4LDcgKzEyOCw2IEBACiAgICAgdG9rLT5wcm9tcHQgPSB0b2stPm5leHRwcm9tcHQgPSBOVUxMOwogICAgIHRvay0+bGluZW5vID0gMDsKICAgICB0b2stPmxldmVsID0gMDsKLSAgICB0b2stPmZpbGVuYW1lID0gTlVMTDsKICAgICB0b2stPmFsdHdhcm5pbmcgPSAxOwogICAgIHRvay0+YWx0ZXJyb3IgPSAxOwogICAgIHRvay0+YWx0dGFic2l6ZSA9IDE7CkBAIC0xNDAsNiArMTM5LDcgQEAKICAgICB0b2stPmVuY29kaW5nID0gTlVMTDsKICAgICB0b2stPmNvbnRfbGluZSA9IDA7CiAjaWZuZGVmIFBHRU4KKyAgICB0b2stPmZpbGVuYW1lID0gTlVMTDsKICAgICB0b2stPmRlY29kaW5nX3JlYWRsaW5lID0gTlVMTDsKICAgICB0b2stPmRlY29kaW5nX2J1ZmZlciA9IE5VTEw7CiAjZW5kaWYKQEAgLTQ2Miw2ICs0NjIsOCBAQAogZnBfc2V0cmVhZGwoc3RydWN0IHRva19zdGF0ZSAqdG9rLCBjb25zdCBjaGFyKiBlbmMpCiB7CiAgICAgUHlPYmplY3QgKnJlYWRsaW5lID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICppbyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CisgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOwogICAgIGludCBmZDsKIAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiaW8iKTsKQEAgLTQ3NCwxMyArNDc2LDEzIEBACiAgICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CiAKLSAgICBzdHJlYW0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lzT09PIiwKKyAgICBzdHJlYW0gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpc09PTyIsCiAgICAgICAgICAgICAgICAgICAgIGZkLCAiciIsIC0xLCBlbmMsIFB5X05vbmUsIFB5X05vbmUsIFB5X0ZhbHNlKTsKICAgICBpZiAoc3RyZWFtID09IE5VTEwpCiAgICAgICAgIGdvdG8gY2xlYW51cDsKIAogICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19yZWFkbGluZSk7Ci0gICAgcmVhZGxpbmUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cmVhbSwgInJlYWRsaW5lIik7CisgICAgcmVhZGxpbmUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfcmVhZGxpbmUpOwogICAgIHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUgPSByZWFkbGluZTsKIAogICAgIC8qIFRoZSBmaWxlIGhhcyBiZWVuIHJlb3BlbmVkOyBwYXJzaW5nIHdpbGwgcmVzdGFydCBmcm9tCkBAIC01NDUsNyArNTQ3LDYgQEAKIHsKICAgICBjaGFyICpsaW5lID0gTlVMTDsKICAgICBpbnQgYmFkY2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIGZvciAoOzspIHsKICAgICAgICAgaWYgKHRvay0+ZGVjb2Rpbmdfc3RhdGUgPT0gU1RBVEVfTk9STUFMKSB7CiAgICAgICAgICAgICAvKiBXZSBhbHJlYWR5IGhhdmUgYSBjb2RlYyBhc3NvY2lhdGVkIHdpdGgKQEAgLTU4NiwxOSArNTg3LDEyIEBACiAgICAgaWYgKGJhZGNoYXIpIHsKICAgICAgICAgLyogTmVlZCB0byBhZGQgMSB0byB0aGUgbGluZSBudW1iZXIsIHNpbmNlIHRoaXMgbGluZQogICAgICAgICAgICBoYXMgbm90IGJlZW4gY291bnRlZCwgeWV0LiAgKi8KLSAgICAgICAgaWYgKHRvay0+ZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCh0b2stPmZpbGVuYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPGZpbGU+Iik7Ci0gICAgICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJOb24tVVRGLTggY29kZSBzdGFydGluZyB3aXRoICdcXHglLjJ4JyAiCi0gICAgICAgICAgICAgICAgICAgICJpbiBmaWxlICVVIG9uIGxpbmUgJWksICIKLSAgICAgICAgICAgICAgICAgICAgImJ1dCBubyBlbmNvZGluZyBkZWNsYXJlZDsgIgotICAgICAgICAgICAgICAgICAgICAic2VlIGh0dHA6Ly9weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMjYzLyBmb3IgZGV0YWlscyIsCi0gICAgICAgICAgICAgICAgICAgIGJhZGNoYXIsIGZpbGVuYW1lLCB0b2stPmxpbmVubyArIDEpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsCisgICAgICAgICAgICAgICAgIk5vbi1VVEYtOCBjb2RlIHN0YXJ0aW5nIHdpdGggJ1xceCUuMngnICIKKyAgICAgICAgICAgICAgICAiaW4gZmlsZSAlVSBvbiBsaW5lICVpLCAiCisgICAgICAgICAgICAgICAgImJ1dCBubyBlbmNvZGluZyBkZWNsYXJlZDsgIgorICAgICAgICAgICAgICAgICJzZWUgaHR0cDovL3B5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyNjMvIGZvciBkZXRhaWxzIiwKKyAgICAgICAgICAgICAgICBiYWRjaGFyLCB0b2stPmZpbGVuYW1lLCB0b2stPmxpbmVubyArIDEpOwogICAgICAgICByZXR1cm4gZXJyb3JfcmV0KHRvayk7CiAgICAgfQogI2VuZGlmCkBAIC04NTYsNiArODUwLDcgQEAKICNpZm5kZWYgUEdFTgogICAgIFB5X1hERUNSRUYodG9rLT5kZWNvZGluZ19yZWFkbGluZSk7CiAgICAgUHlfWERFQ1JFRih0b2stPmRlY29kaW5nX2J1ZmZlcik7CisgICAgUHlfWERFQ1JFRih0b2stPmZpbGVuYW1lKTsKICNlbmRpZgogICAgIGlmICh0b2stPmZwICE9IE5VTEwgJiYgdG9rLT5idWYgIT0gTlVMTCkKICAgICAgICAgUHlNZW1fRlJFRSh0b2stPmJ1Zik7CkBAIC0xMjUwLDggKzEyNDUsMTMgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmICh0b2stPmFsdHdhcm5pbmcpIHsKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiVzOiBpbmNvbnNpc3RlbnQgdXNlIG9mIHRhYnMgYW5kIHNwYWNlcyAiCisjaWZkZWYgUEdFTgorICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW5jb25zaXN0ZW50IHVzZSBvZiB0YWJzIGFuZCBzcGFjZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gaW5kZW50YXRpb25cbiIpOworI2Vsc2UKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIlVTogaW5jb25zaXN0ZW50IHVzZSBvZiB0YWJzIGFuZCBzcGFjZXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gaW5kZW50YXRpb25cbiIsIHRvay0+ZmlsZW5hbWUpOworI2VuZGlmCiAgICAgICAgIHRvay0+YWx0d2FybmluZyA9IDA7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTI2MCwxNCArMTI2MCwxNiBAQAogI2lmZGVmIFBHRU4KICNkZWZpbmUgdmVyaWZ5X2lkZW50aWZpZXIodG9rKSAxCiAjZWxzZQotLyogVmVyaWZ5IHRoYXQgdGhlIGlkZW50aWZpZXIgZm9sbG93cyBQRVAgMzEzMS4gKi8KKy8qIFZlcmlmeSB0aGF0IHRoZSBpZGVudGlmaWVyIGZvbGxvd3MgUEVQIDMxMzEuCisgICBBbGwgaWRlbnRpZmllciBzdHJpbmdzIGFyZSBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgdW5pY29kZSBvYmplY3RzLgorICovCiBzdGF0aWMgaW50CiB2ZXJpZnlfaWRlbnRpZmllcihzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCiB7CiAgICAgUHlPYmplY3QgKnM7CiAgICAgaW50IHJlc3VsdDsKICAgICBzID0gUHlVbmljb2RlX0RlY29kZVVURjgodG9rLT5zdGFydCwgdG9rLT5jdXIgLSB0b2stPnN0YXJ0LCBOVUxMKTsKLSAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgaWYgKHMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfSURFTlRJRklFUjsKQEAgLTE0MTAsMTMgKzE0MTIsMjAgQEAKICAgICAvKiBJZGVudGlmaWVyIChtb3N0IGZyZXF1ZW50IHRva2VuISkgKi8KICAgICBub25hc2NpaSA9IDA7CiAgICAgaWYgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX3N0YXJ0KGMpKSB7Ci0gICAgICAgIC8qIFByb2Nlc3MgYiIiLCByIiIgYW5kIGJyIiIgKi8KLSAgICAgICAgaWYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSB7Ci0gICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKQotICAgICAgICAgICAgICAgIGdvdG8gbGV0dGVyX3F1b3RlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjID09ICdyJyB8fCBjID09ICdSJykgeworICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KKyAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgICAgICBzYXdfYiA9IDE7CisgICAgICAgICAgICAvKiBTaW5jZSB0aGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBsaXRlcmFsIHdlIGRvbid0CisgICAgICAgICAgICAgICB3YW50IHRvIHN1cHBvcnQgaXQgaW4gYXJiaXRyYXJ5IG9yZGVyIGxpa2UgYnl0ZSBsaXRlcmFscy4gKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IpICYmIChjID09ICd1JyB8fCBjID09ICdVJykpCisgICAgICAgICAgICAgICAgc2F3X3UgPSAxOworICAgICAgICAgICAgLyogdXIiIiBhbmQgcnUiIiBhcmUgbm90IHN1cHBvcnRlZCAqLworICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkKKyAgICAgICAgICAgICAgICBzYXdfciA9IDE7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKQogICAgICAgICAgICAgICAgIGdvdG8gbGV0dGVyX3F1b3RlOwpAQCAtMTY5MiwxNyArMTcwMSwxOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8qIEdldCAtKi0gZW5jb2RpbmcgLSotIGZyb20gYSBQeXRob24gZmlsZS4KKy8qIEdldCB0aGUgZW5jb2Rpbmcgb2YgYSBQeXRob24gZmlsZS4gQ2hlY2sgZm9yIHRoZSBjb2RpbmcgY29va2llIGFuZCBjaGVjayBpZgorICAgdGhlIGZpbGUgc3RhcnRzIHdpdGggYSBCT00uCiAKLSAgIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyByZXR1cm5zIE5VTEwgd2hlbiBpdCBjYW4ndCBmaW5kIHRoZSBlbmNvZGluZyBpbgotICAgdGhlIGZpcnN0IG9yIHNlY29uZCBsaW5lIG9mIHRoZSBmaWxlIChpbiB3aGljaCBjYXNlIHRoZSBlbmNvZGluZwotICAgc2hvdWxkIGJlIGFzc3VtZWQgdG8gYmUgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpKS4KKyAgIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKCkgcmV0dXJucyBOVUxMIHdoZW4gaXQgY2FuJ3QgZmluZCB0aGUKKyAgIGVuY29kaW5nIGluIHRoZSBmaXJzdCBvciBzZWNvbmQgbGluZSBvZiB0aGUgZmlsZSAoaW4gd2hpY2ggY2FzZSB0aGUgZW5jb2RpbmcKKyAgIHNob3VsZCBiZSBhc3N1bWVkIHRvIGJlIFVURi04KS4KIAotICAgVGhlIGNoYXIgKiByZXR1cm5lZCBpcyBtYWxsb2MnZWQgdmlhIFB5TWVtX01BTExPQygpIGFuZCB0aHVzIG11c3QgYmUgZnJlZWQKLSAgIGJ5IHRoZSBjYWxsZXIuCi0qLworICAgVGhlIGNoYXIqIHJldHVybmVkIGlzIG1hbGxvYydlZCB2aWEgUHlNZW1fTUFMTE9DKCkgYW5kIHRodXMgbXVzdCBiZSBmcmVlZAorICAgYnkgdGhlIGNhbGxlci4gKi8KKwogY2hhciAqCi1QeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50IGZkKQorUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoaW50IGZkLCBQeU9iamVjdCAqZmlsZW5hbWUpCiB7CiAgICAgc3RydWN0IHRva19zdGF0ZSAqdG9rOwogICAgIEZJTEUgKmZwOwpAQCAtMTcyMSw2ICsxNzMxLDIwIEBACiAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUEdFTgorICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7CisgICAgICAgIHRvay0+ZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRvay0+ZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiPHN0cmluZz4iKTsKKyAgICAgICAgaWYgKHRvay0+ZmlsZW5hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZmNsb3NlKGZwKTsKKyAgICAgICAgICAgIFB5VG9rZW5pemVyX0ZyZWUodG9rKTsKKyAgICAgICAgICAgIHJldHVybiBlbmNvZGluZzsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIHdoaWxlICh0b2stPmxpbmVubyA8IDIgJiYgdG9rLT5kb25lID09IEVfT0spIHsKICAgICAgICAgUHlUb2tlbml6ZXJfR2V0KHRvaywgJnBfc3RhcnQsICZwX2VuZCk7CiAgICAgfQpAQCAtMTczNCw2ICsxNzU4LDEyIEBACiAgICAgcmV0dXJuIGVuY29kaW5nOwogfQogCitjaGFyICoKK1B5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQgZmQpCit7CisgICAgcmV0dXJuIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGZkLCBOVUxMKTsKK30KKwogI2lmZGVmIFB5X0RFQlVHCiAKIHZvaWQKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuaCBiL1BhcnNlci90b2tlbml6ZXIuaAppbmRleCAyYmUzYmYyLi5lZDFmM2FhIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmgKKysrIGIvUGFyc2VyL3Rva2VuaXplci5oCkBAIC00MCw3ICs0MCwxMyBAQAogICAgIGludCBsZXZlbDsgICAgICAgICAgLyogKCkgW10ge30gUGFyZW50aGVzZXMgbmVzdGluZyBsZXZlbCAqLwogICAgICAgICAgICAgLyogVXNlZCB0byBhbGxvdyBmcmVlIGNvbnRpbnVhdGlvbnMgaW5zaWRlIHRoZW0gKi8KICAgICAvKiBTdHVmZiBmb3IgY2hlY2tpbmcgb24gZGlmZmVyZW50IHRhYiBzaXplcyAqLwotICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOyAgIC8qIGVuY29kZWQgdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KKyNpZm5kZWYgUEdFTgorICAgIC8qIHBnZW4gZG9lc24ndCBoYXZlIGFjY2VzcyB0byBQeXRob24gY29kZWNzLCBpdCBjYW5ub3QgZGVjb2RlIHRoZSBpbnB1dAorICAgICAgIGZpbGVuYW1lLiBUaGUgYnl0ZXMgZmlsZW5hbWUgbWlnaHQgYmUga2VwdCwgYnV0IGl0IGlzIG9ubHkgdXNlZCBieQorICAgICAgIGluZGVudGVycm9yKCkgYW5kIGl0IGlzIG5vdCByZWFsbHkgbmVlZGVkOiBwZ2VuIG9ubHkgY29tcGlsZXMgb25lIGZpbGUKKyAgICAgICAoR3JhbW1hci9HcmFtbWFyKS4gKi8KKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisjZW5kaWYKICAgICBpbnQgYWx0d2FybmluZzsgICAgIC8qIElzc3VlIHdhcm5pbmcgaWYgYWx0ZXJuYXRlIHRhYnMgZG9uJ3QgbWF0Y2ggKi8KICAgICBpbnQgYWx0ZXJyb3I7ICAgICAgIC8qIElzc3VlIGVycm9yIGlmIGFsdGVybmF0ZSB0YWJzIGRvbid0IG1hdGNoICovCiAgICAgaW50IGFsdHRhYnNpemU7ICAgICAvKiBBbHRlcm5hdGUgdGFiIHNwYWNpbmcgKi8KQEAgLTY5LDcgKzc1LDYgQEAKIGV4dGVybiBpbnQgUHlUb2tlbml6ZXJfR2V0KHN0cnVjdCB0b2tfc3RhdGUgKiwgY2hhciAqKiwgY2hhciAqKik7CiBleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX1Jlc3RvcmVFbmNvZGluZyhzdHJ1Y3QgdG9rX3N0YXRlKiB0b2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuLCBpbnQgKm9mZnNldCk7Ci1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9QeXRob24tYXN0LmMgYi9QeXRob24vUHl0aG9uLWFzdC5jCmluZGV4IGEyNzZiNmMuLjgwNWYyYjggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtMSwxMyArMSw2IEBACiAvKiBGaWxlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IFBhcnNlci9hc2RsX2MucHkuICovCiAKLQotLyoKLSAgIF9fdmVyc2lvbl9fIDgyMTYzLgotCi0gICBUaGlzIG1vZHVsZSBtdXN0IGJlIGNvbW1pdHRlZCBzZXBhcmF0ZWx5IGFmdGVyIGVhY2ggQVNUIGdyYW1tYXIgY2hhbmdlOwotICAgVGhlIF9fdmVyc2lvbl9fIG51bWJlciBpcyBzZXQgdG8gdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgY29tbWl0Ci0gICBjb250YWluaW5nIHRoZSBncmFtbWFyIGNoYW5nZS4KLSovCisjaW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJQeXRob24tYXN0LmgiCkBAIC0xNiw2ICs5LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKm1vZF90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX21vZCh2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpNb2R1bGVfdHlwZTsKK19QeV9JREVOVElGSUVSKGJvZHkpOwogc3RhdGljIGNoYXIgKk1vZHVsZV9maWVsZHNbXT17CiAgICAgICAgICJib2R5IiwKIH07CkBAIC0zMiwxMiArMjYsMTggQEAKICAgICAgICAgImJvZHkiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKnN0bXRfdHlwZTsKK19QeV9JREVOVElGSUVSKGxpbmVubyk7CitfUHlfSURFTlRJRklFUihjb2xfb2Zmc2V0KTsKIHN0YXRpYyBjaGFyICpzdG10X2F0dHJpYnV0ZXNbXSA9IHsKICAgICAgICAgImxpbmVubyIsCiAgICAgICAgICJjb2xfb2Zmc2V0IiwKIH07CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfc3RtdCh2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpGdW5jdGlvbkRlZl90eXBlOworX1B5X0lERU5USUZJRVIobmFtZSk7CitfUHlfSURFTlRJRklFUihhcmdzKTsKK19QeV9JREVOVElGSUVSKGRlY29yYXRvcl9saXN0KTsKK19QeV9JREVOVElGSUVSKHJldHVybnMpOwogc3RhdGljIGNoYXIgKkZ1bmN0aW9uRGVmX2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWUiLAogICAgICAgICAiYXJncyIsCkBAIC00Niw2ICs0NiwxMCBAQAogICAgICAgICAicmV0dXJucyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQ2xhc3NEZWZfdHlwZTsKK19QeV9JREVOVElGSUVSKGJhc2VzKTsKK19QeV9JREVOVElGSUVSKGtleXdvcmRzKTsKK19QeV9JREVOVElGSUVSKHN0YXJhcmdzKTsKK19QeV9JREVOVElGSUVSKGt3YXJncyk7CiBzdGF0aWMgY2hhciAqQ2xhc3NEZWZfZmllbGRzW109ewogICAgICAgICAibmFtZSIsCiAgICAgICAgICJiYXNlcyIsCkBAIC01NiwxMCArNjAsMTIgQEAKICAgICAgICAgImRlY29yYXRvcl9saXN0IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpSZXR1cm5fdHlwZTsKK19QeV9JREVOVElGSUVSKHZhbHVlKTsKIHN0YXRpYyBjaGFyICpSZXR1cm5fZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkRlbGV0ZV90eXBlOworX1B5X0lERU5USUZJRVIodGFyZ2V0cyk7CiBzdGF0aWMgY2hhciAqRGVsZXRlX2ZpZWxkc1tdPXsKICAgICAgICAgInRhcmdldHMiLAogfTsKQEAgLTY5LDEyICs3NSwxNiBAQAogICAgICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF1Z0Fzc2lnbl90eXBlOworX1B5X0lERU5USUZJRVIodGFyZ2V0KTsKK19QeV9JREVOVElGSUVSKG9wKTsKIHN0YXRpYyBjaGFyICpBdWdBc3NpZ25fZmllbGRzW109ewogICAgICAgICAidGFyZ2V0IiwKICAgICAgICAgIm9wIiwKICAgICAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpGb3JfdHlwZTsKK19QeV9JREVOVElGSUVSKGl0ZXIpOworX1B5X0lERU5USUZJRVIob3JlbHNlKTsKIHN0YXRpYyBjaGFyICpGb3JfZmllbGRzW109ewogICAgICAgICAidGFyZ2V0IiwKICAgICAgICAgIml0ZXIiLApAQCAtODIsNiArOTIsNyBAQAogICAgICAgICAib3JlbHNlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpXaGlsZV90eXBlOworX1B5X0lERU5USUZJRVIodGVzdCk7CiBzdGF0aWMgY2hhciAqV2hpbGVfZmllbGRzW109ewogICAgICAgICAidGVzdCIsCiAgICAgICAgICJib2R5IiwKQEAgLTk0LDM3ICsxMDUsNDEgQEAKICAgICAgICAgIm9yZWxzZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqV2l0aF90eXBlOworX1B5X0lERU5USUZJRVIoaXRlbXMpOwogc3RhdGljIGNoYXIgKldpdGhfZmllbGRzW109ewotICAgICAgICAiY29udGV4dF9leHByIiwKLSAgICAgICAgIm9wdGlvbmFsX3ZhcnMiLAorICAgICAgICAiaXRlbXMiLAogICAgICAgICAiYm9keSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqUmFpc2VfdHlwZTsKK19QeV9JREVOVElGSUVSKGV4Yyk7CitfUHlfSURFTlRJRklFUihjYXVzZSk7CiBzdGF0aWMgY2hhciAqUmFpc2VfZmllbGRzW109ewogICAgICAgICAiZXhjIiwKICAgICAgICAgImNhdXNlIiwKIH07Ci1zdGF0aWMgUHlUeXBlT2JqZWN0ICpUcnlFeGNlcHRfdHlwZTsKLXN0YXRpYyBjaGFyICpUcnlFeGNlcHRfZmllbGRzW109eworc3RhdGljIFB5VHlwZU9iamVjdCAqVHJ5X3R5cGU7CitfUHlfSURFTlRJRklFUihoYW5kbGVycyk7CitfUHlfSURFTlRJRklFUihmaW5hbGJvZHkpOworc3RhdGljIGNoYXIgKlRyeV9maWVsZHNbXT17CiAgICAgICAgICJib2R5IiwKICAgICAgICAgImhhbmRsZXJzIiwKICAgICAgICAgIm9yZWxzZSIsCi19Owotc3RhdGljIFB5VHlwZU9iamVjdCAqVHJ5RmluYWxseV90eXBlOwotc3RhdGljIGNoYXIgKlRyeUZpbmFsbHlfZmllbGRzW109ewotICAgICAgICAiYm9keSIsCiAgICAgICAgICJmaW5hbGJvZHkiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkFzc2VydF90eXBlOworX1B5X0lERU5USUZJRVIobXNnKTsKIHN0YXRpYyBjaGFyICpBc3NlcnRfZmllbGRzW109ewogICAgICAgICAidGVzdCIsCiAgICAgICAgICJtc2ciLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkltcG9ydF90eXBlOworX1B5X0lERU5USUZJRVIobmFtZXMpOwogc3RhdGljIGNoYXIgKkltcG9ydF9maWVsZHNbXT17CiAgICAgICAgICJuYW1lcyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqSW1wb3J0RnJvbV90eXBlOworX1B5X0lERU5USUZJRVIobW9kdWxlKTsKK19QeV9JREVOVElGSUVSKGxldmVsKTsKIHN0YXRpYyBjaGFyICpJbXBvcnRGcm9tX2ZpZWxkc1tdPXsKICAgICAgICAgIm1vZHVsZSIsCiAgICAgICAgICJuYW1lcyIsCkBAIC0xNTIsMTcgKzE2NywyMSBAQAogfTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9leHByKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkJvb2xPcF90eXBlOworX1B5X0lERU5USUZJRVIodmFsdWVzKTsKIHN0YXRpYyBjaGFyICpCb29sT3BfZmllbGRzW109ewogICAgICAgICAib3AiLAogICAgICAgICAidmFsdWVzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpCaW5PcF90eXBlOworX1B5X0lERU5USUZJRVIobGVmdCk7CitfUHlfSURFTlRJRklFUihyaWdodCk7CiBzdGF0aWMgY2hhciAqQmluT3BfZmllbGRzW109ewogICAgICAgICAibGVmdCIsCiAgICAgICAgICJvcCIsCiAgICAgICAgICJyaWdodCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqVW5hcnlPcF90eXBlOworX1B5X0lERU5USUZJRVIob3BlcmFuZCk7CiBzdGF0aWMgY2hhciAqVW5hcnlPcF9maWVsZHNbXT17CiAgICAgICAgICJvcCIsCiAgICAgICAgICJvcGVyYW5kIiwKQEAgLTE3OSwxNSArMTk4LDE5IEBACiAgICAgICAgICJvcmVsc2UiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkRpY3RfdHlwZTsKK19QeV9JREVOVElGSUVSKGtleXMpOwogc3RhdGljIGNoYXIgKkRpY3RfZmllbGRzW109ewogICAgICAgICAia2V5cyIsCiAgICAgICAgICJ2YWx1ZXMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlNldF90eXBlOworX1B5X0lERU5USUZJRVIoZWx0cyk7CiBzdGF0aWMgY2hhciAqU2V0X2ZpZWxkc1tdPXsKICAgICAgICAgImVsdHMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkxpc3RDb21wX3R5cGU7CitfUHlfSURFTlRJRklFUihlbHQpOworX1B5X0lERU5USUZJRVIoZ2VuZXJhdG9ycyk7CiBzdGF0aWMgY2hhciAqTGlzdENvbXBfZmllbGRzW109ewogICAgICAgICAiZWx0IiwKICAgICAgICAgImdlbmVyYXRvcnMiLApAQCAtMTk4LDYgKzIyMSw3IEBACiAgICAgICAgICJnZW5lcmF0b3JzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEaWN0Q29tcF90eXBlOworX1B5X0lERU5USUZJRVIoa2V5KTsKIHN0YXRpYyBjaGFyICpEaWN0Q29tcF9maWVsZHNbXT17CiAgICAgICAgICJrZXkiLAogICAgICAgICAidmFsdWUiLApAQCAtMjEyLDEzICsyMzYsMjAgQEAKIHN0YXRpYyBjaGFyICpZaWVsZF9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqWWllbGRGcm9tX3R5cGU7CitzdGF0aWMgY2hhciAqWWllbGRGcm9tX2ZpZWxkc1tdPXsKKyAgICAgICAgInZhbHVlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDb21wYXJlX3R5cGU7CitfUHlfSURFTlRJRklFUihvcHMpOworX1B5X0lERU5USUZJRVIoY29tcGFyYXRvcnMpOwogc3RhdGljIGNoYXIgKkNvbXBhcmVfZmllbGRzW109ewogICAgICAgICAibGVmdCIsCiAgICAgICAgICJvcHMiLAogICAgICAgICAiY29tcGFyYXRvcnMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNhbGxfdHlwZTsKK19QeV9JREVOVElGSUVSKGZ1bmMpOwogc3RhdGljIGNoYXIgKkNhbGxfZmllbGRzW109ewogICAgICAgICAiZnVuYyIsCiAgICAgICAgICJhcmdzIiwKQEAgLTIyNywxMCArMjU4LDEyIEBACiAgICAgICAgICJrd2FyZ3MiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk51bV90eXBlOworX1B5X0lERU5USUZJRVIobik7CiBzdGF0aWMgY2hhciAqTnVtX2ZpZWxkc1tdPXsKICAgICAgICAgIm4iLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlN0cl90eXBlOworX1B5X0lERU5USUZJRVIocyk7CiBzdGF0aWMgY2hhciAqU3RyX2ZpZWxkc1tdPXsKICAgICAgICAgInMiLAogfTsKQEAgLTI0MCwxMiArMjczLDE1IEBACiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRWxsaXBzaXNfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF0dHJpYnV0ZV90eXBlOworX1B5X0lERU5USUZJRVIoYXR0cik7CitfUHlfSURFTlRJRklFUihjdHgpOwogc3RhdGljIGNoYXIgKkF0dHJpYnV0ZV9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiAgICAgICAgICJhdHRyIiwKICAgICAgICAgImN0eCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqU3Vic2NyaXB0X3R5cGU7CitfUHlfSURFTlRJRklFUihzbGljZSk7CiBzdGF0aWMgY2hhciAqU3Vic2NyaXB0X2ZpZWxkc1tdPXsKICAgICAgICAgInZhbHVlIiwKICAgICAgICAgInNsaWNlIiwKQEAgLTI1Nyw2ICsyOTMsNyBAQAogICAgICAgICAiY3R4IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpOYW1lX3R5cGU7CitfUHlfSURFTlRJRklFUihpZCk7CiBzdGF0aWMgY2hhciAqTmFtZV9maWVsZHNbXT17CiAgICAgICAgICJpZCIsCiAgICAgICAgICJjdHgiLApAQCAtMjg0LDEyICszMjEsMTYgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKnNsaWNlX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfc2xpY2Uodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqU2xpY2VfdHlwZTsKK19QeV9JREVOVElGSUVSKGxvd2VyKTsKK19QeV9JREVOVElGSUVSKHVwcGVyKTsKK19QeV9JREVOVElGSUVSKHN0ZXApOwogc3RhdGljIGNoYXIgKlNsaWNlX2ZpZWxkc1tdPXsKICAgICAgICAgImxvd2VyIiwKICAgICAgICAgInVwcGVyIiwKICAgICAgICAgInN0ZXAiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkV4dFNsaWNlX3R5cGU7CitfUHlfSURFTlRJRklFUihkaW1zKTsKIHN0YXRpYyBjaGFyICpFeHRTbGljZV9maWVsZHNbXT17CiAgICAgICAgICJkaW1zIiwKIH07CkBAIC0zNDUsNiArMzg2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk5vdEluX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpjb21wcmVoZW5zaW9uX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfY29tcHJlaGVuc2lvbih2b2lkKik7CitfUHlfSURFTlRJRklFUihpZnMpOwogc3RhdGljIGNoYXIgKmNvbXByZWhlbnNpb25fZmllbGRzW109ewogICAgICAgICAidGFyZ2V0IiwKICAgICAgICAgIml0ZXIiLApAQCAtMzU3LDYgKzM5OSw3IEBACiB9Owogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2V4Y2VwdGhhbmRsZXIodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqRXhjZXB0SGFuZGxlcl90eXBlOworX1B5X0lERU5USUZJRVIodHlwZSk7CiBzdGF0aWMgY2hhciAqRXhjZXB0SGFuZGxlcl9maWVsZHNbXT17CiAgICAgICAgICJ0eXBlIiwKICAgICAgICAgIm5hbWUiLApAQCAtMzY0LDYgKzQwNywxMyBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFyZ3VtZW50c190eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2FyZ3VtZW50cyh2b2lkKik7CitfUHlfSURFTlRJRklFUih2YXJhcmcpOworX1B5X0lERU5USUZJRVIodmFyYXJnYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihrd29ubHlhcmdzKTsKK19QeV9JREVOVElGSUVSKGt3YXJnKTsKK19QeV9JREVOVElGSUVSKGt3YXJnYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihkZWZhdWx0cyk7CitfUHlfSURFTlRJRklFUihrd19kZWZhdWx0cyk7CiBzdGF0aWMgY2hhciAqYXJndW1lbnRzX2ZpZWxkc1tdPXsKICAgICAgICAgImFyZ3MiLAogICAgICAgICAidmFyYXJnIiwKQEAgLTM3Niw2ICs0MjYsOCBAQAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmFyZ190eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2FyZyh2b2lkKik7CitfUHlfSURFTlRJRklFUihhcmcpOworX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CiBzdGF0aWMgY2hhciAqYXJnX2ZpZWxkc1tdPXsKICAgICAgICAgImFyZyIsCiAgICAgICAgICJhbm5vdGF0aW9uIiwKQEAgLTM4OCwxOSArNDQwLDU0IEBACiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqYWxpYXNfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9hbGlhcyh2b2lkKik7CitfUHlfSURFTlRJRklFUihhc25hbWUpOwogc3RhdGljIGNoYXIgKmFsaWFzX2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWUiLAogICAgICAgICAiYXNuYW1lIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICp3aXRoaXRlbV90eXBlOworc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX3dpdGhpdGVtKHZvaWQqKTsKK19QeV9JREVOVElGSUVSKGNvbnRleHRfZXhwcik7CitfUHlfSURFTlRJRklFUihvcHRpb25hbF92YXJzKTsKK3N0YXRpYyBjaGFyICp3aXRoaXRlbV9maWVsZHNbXT17CisgICAgICAgICJjb250ZXh0X2V4cHIiLAorICAgICAgICAib3B0aW9uYWxfdmFycyIsCit9OwogCiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmRpY3Q7Cit9IEFTVF9vYmplY3Q7CisKK3N0YXRpYyB2b2lkCithc3RfZGVhbGxvYyhBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBpbnQKK2FzdF90cmF2ZXJzZShBU1Rfb2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2FzdF9jbGVhcihBU1Rfb2JqZWN0ICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworfQorCiBzdGF0aWMgaW50CiBhc3RfdHlwZV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogeworICAgIF9QeV9JREVOVElGSUVSKF9maWVsZHMpOwogICAgIFB5X3NzaXplX3QgaSwgbnVtZmllbGRzID0gMDsKICAgICBpbnQgcmVzID0gLTE7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZmllbGRzOwotICAgIGZpZWxkcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAiX2ZpZWxkcyIpOworICAgIGZpZWxkcyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpLCAmUHlJZF9fZmllbGRzKTsKICAgICBpZiAoIWZpZWxkcykKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBpZiAoZmllbGRzKSB7CkBAIC00NTAsNyArNTM3LDggQEAKIGFzdF90eXBlX3JlZHVjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLCAiX19kaWN0X18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC00NzAsMTIgKzU1OCwxNyBAQAogICAgIHtOVUxMfQogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGFzdF90eXBlX2dldHNldHNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgQVNUX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiX2FzdC5BU1QiLAotICAgIHNpemVvZihQeU9iamVjdCksCisgICAgc2l6ZW9mKEFTVF9vYmplY3QpLAogICAgIDAsCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3RfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTQ5MCwyNiArNTgzLDI2IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsIC8qIHRwX2dldGF0dHJvICovCiAgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgKHRyYXZlcnNlcHJvYylhc3RfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpYXN0X2NsZWFyLCAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBhc3RfdHlwZV9tZXRob2RzLCAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGFzdF90eXBlX2dldHNldHMsICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKEFTVF9vYmplY3QsIGRpY3QpLC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAoaW5pdHByb2MpYXN0X3R5cGVfaW5pdCwgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAvKiB0cF9hbGxvYyAqLwogICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTUzNiw2ICs2MjksNyBAQAogc3RhdGljIGludCBhZGRfYXR0cmlidXRlcyhQeVR5cGVPYmplY3QqIHR5cGUsIGNoYXIqKmF0dHJzLCBpbnQgbnVtX2ZpZWxkcykKIHsKICAgICBpbnQgaSwgcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9hdHRyaWJ1dGVzKTsKICAgICBQeU9iamVjdCAqcywgKmwgPSBQeVR1cGxlX05ldyhudW1fZmllbGRzKTsKICAgICBpZiAoIWwpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNTQ3LDcgKzY0MSw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShsLCBpLCBzKTsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfU2V0QXR0clN0cmluZygoUHlPYmplY3QqKXR5cGUsICJfYXR0cmlidXRlcyIsIGwpID49IDA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X1NldEF0dHJJZCgoUHlPYmplY3QqKXR5cGUsICZQeUlkX19hdHRyaWJ1dGVzLCBsKSA+PSAwOwogICAgIFB5X0RFQ1JFRihsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTU2LDcgKzY1MCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9saXN0KGFzZGxfc2VxICpzZXEsIFB5T2JqZWN0KiAoKmZ1bmMpKHZvaWQqKSkKIHsKLSAgICBpbnQgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGFzZGxfc2VxX0xFTihzZXEpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUxpc3RfTmV3KG4pOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTU4MSw2ICs2NzUsNyBAQAogfQogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfaW50KGxvbmcgYikKIHsKQEAgLTYxOCw2ICs3MTMsMTUgQEAKICAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2J5dGVzKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJBU1QgYnl0ZXMgbXVzdCBiZSBvZiB0eXBlIGJ5dGVzIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gb2JqMmFzdF9vYmplY3Qob2JqLCBvdXQsIGFyZW5hKTsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2ludChQeU9iamVjdCogb2JqLCBpbnQqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaW50IGk7CkBAIC02OTEsMTUgKzc5NSwxMiBAQAogICAgICAgICBpZiAoIVdoaWxlX3R5cGUpIHJldHVybiAwOwogICAgICAgICBJZl90eXBlID0gbWFrZV90eXBlKCJJZiIsIHN0bXRfdHlwZSwgSWZfZmllbGRzLCAzKTsKICAgICAgICAgaWYgKCFJZl90eXBlKSByZXR1cm4gMDsKLSAgICAgICAgV2l0aF90eXBlID0gbWFrZV90eXBlKCJXaXRoIiwgc3RtdF90eXBlLCBXaXRoX2ZpZWxkcywgMyk7CisgICAgICAgIFdpdGhfdHlwZSA9IG1ha2VfdHlwZSgiV2l0aCIsIHN0bXRfdHlwZSwgV2l0aF9maWVsZHMsIDIpOwogICAgICAgICBpZiAoIVdpdGhfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIFJhaXNlX3R5cGUgPSBtYWtlX3R5cGUoIlJhaXNlIiwgc3RtdF90eXBlLCBSYWlzZV9maWVsZHMsIDIpOwogICAgICAgICBpZiAoIVJhaXNlX3R5cGUpIHJldHVybiAwOwotICAgICAgICBUcnlFeGNlcHRfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5RXhjZXB0Iiwgc3RtdF90eXBlLCBUcnlFeGNlcHRfZmllbGRzLCAzKTsKLSAgICAgICAgaWYgKCFUcnlFeGNlcHRfdHlwZSkgcmV0dXJuIDA7Ci0gICAgICAgIFRyeUZpbmFsbHlfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5RmluYWxseSIsIHN0bXRfdHlwZSwgVHJ5RmluYWxseV9maWVsZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyKTsKLSAgICAgICAgaWYgKCFUcnlGaW5hbGx5X3R5cGUpIHJldHVybiAwOworICAgICAgICBUcnlfdHlwZSA9IG1ha2VfdHlwZSgiVHJ5Iiwgc3RtdF90eXBlLCBUcnlfZmllbGRzLCA0KTsKKyAgICAgICAgaWYgKCFUcnlfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIEFzc2VydF90eXBlID0gbWFrZV90eXBlKCJBc3NlcnQiLCBzdG10X3R5cGUsIEFzc2VydF9maWVsZHMsIDIpOwogICAgICAgICBpZiAoIUFzc2VydF90eXBlKSByZXR1cm4gMDsKICAgICAgICAgSW1wb3J0X3R5cGUgPSBtYWtlX3R5cGUoIkltcG9ydCIsIHN0bXRfdHlwZSwgSW1wb3J0X2ZpZWxkcywgMSk7CkBAIC03NDcsNiArODQ4LDggQEAKICAgICAgICAgaWYgKCFHZW5lcmF0b3JFeHBfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIFlpZWxkX3R5cGUgPSBtYWtlX3R5cGUoIllpZWxkIiwgZXhwcl90eXBlLCBZaWVsZF9maWVsZHMsIDEpOwogICAgICAgICBpZiAoIVlpZWxkX3R5cGUpIHJldHVybiAwOworICAgICAgICBZaWVsZEZyb21fdHlwZSA9IG1ha2VfdHlwZSgiWWllbGRGcm9tIiwgZXhwcl90eXBlLCBZaWVsZEZyb21fZmllbGRzLCAxKTsKKyAgICAgICAgaWYgKCFZaWVsZEZyb21fdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIENvbXBhcmVfdHlwZSA9IG1ha2VfdHlwZSgiQ29tcGFyZSIsIGV4cHJfdHlwZSwgQ29tcGFyZV9maWVsZHMsIDMpOwogICAgICAgICBpZiAoIUNvbXBhcmVfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIENhbGxfdHlwZSA9IG1ha2VfdHlwZSgiQ2FsbCIsIGV4cHJfdHlwZSwgQ2FsbF9maWVsZHMsIDUpOwpAQCAtOTQ5LDYgKzEwNTIsOCBAQAogICAgICAgICBpZiAoIWtleXdvcmRfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIGFsaWFzX3R5cGUgPSBtYWtlX3R5cGUoImFsaWFzIiwgJkFTVF90eXBlLCBhbGlhc19maWVsZHMsIDIpOwogICAgICAgICBpZiAoIWFsaWFzX3R5cGUpIHJldHVybiAwOworICAgICAgICB3aXRoaXRlbV90eXBlID0gbWFrZV90eXBlKCJ3aXRoaXRlbSIsICZBU1RfdHlwZSwgd2l0aGl0ZW1fZmllbGRzLCAyKTsKKyAgICAgICAgaWYgKCF3aXRoaXRlbV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMTsKIH0KQEAgLTk3MSw2ICsxMDc2LDcgQEAKIHN0YXRpYyBpbnQgb2JqMmFzdF9hcmcoUHlPYmplY3QqIG9iaiwgYXJnX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKIHN0YXRpYyBpbnQgb2JqMmFzdF9rZXl3b3JkKFB5T2JqZWN0KiBvYmosIGtleXdvcmRfdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpOwogc3RhdGljIGludCBvYmoyYXN0X2FsaWFzKFB5T2JqZWN0KiBvYmosIGFsaWFzX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKK3N0YXRpYyBpbnQgb2JqMmFzdF93aXRoaXRlbShQeU9iamVjdCogb2JqLCB3aXRoaXRlbV90eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CiAKIG1vZF90eQogTW9kdWxlKGFzZGxfc2VxICogYm9keSwgUHlBcmVuYSAqYXJlbmEpCkBAIC0xMjM2LDIxICsxMzQyLDE1IEBACiB9CiAKIHN0bXRfdHkKLVdpdGgoZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLAotICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCitXaXRoKGFzZGxfc2VxICogaXRlbXMsIGFzZGxfc2VxICogYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgKmFyZW5hKQogewogICAgICAgICBzdG10X3R5IHA7Ci0gICAgICAgIGlmICghY29udGV4dF9leHByKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBjb250ZXh0X2V4cHIgaXMgcmVxdWlyZWQgZm9yIFdpdGgiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOwogICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHAtPmtpbmQgPSBXaXRoX2tpbmQ7Ci0gICAgICAgIHAtPnYuV2l0aC5jb250ZXh0X2V4cHIgPSBjb250ZXh0X2V4cHI7Ci0gICAgICAgIHAtPnYuV2l0aC5vcHRpb25hbF92YXJzID0gb3B0aW9uYWxfdmFyczsKKyAgICAgICAgcC0+di5XaXRoLml0ZW1zID0gaXRlbXM7CiAgICAgICAgIHAtPnYuV2l0aC5ib2R5ID0gYm9keTsKICAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOwogICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKQEAgLTEyNzMsMzMgKzEzNzMsMTggQEAKIH0KIAogc3RtdF90eQotVHJ5RXhjZXB0KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sCi0gICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorVHJ5KGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBoYW5kbGVycywgYXNkbF9zZXEgKiBvcmVsc2UsIGFzZGxfc2VxICoKKyAgICBmaW5hbGJvZHksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICAgICAgc3RtdF90eSBwOwogICAgICAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOwogICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAtPmtpbmQgPSBUcnlFeGNlcHRfa2luZDsKLSAgICAgICAgcC0+di5UcnlFeGNlcHQuYm9keSA9IGJvZHk7Ci0gICAgICAgIHAtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzID0gaGFuZGxlcnM7Ci0gICAgICAgIHAtPnYuVHJ5RXhjZXB0Lm9yZWxzZSA9IG9yZWxzZTsKLSAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOwotICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKLSAgICAgICAgcmV0dXJuIHA7Ci19Ci0KLXN0bXRfdHkKLVRyeUZpbmFsbHkoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGZpbmFsYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCi0gICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQotewotICAgICAgICBzdG10X3R5IHA7Ci0gICAgICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7Ci0gICAgICAgIGlmICghcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcC0+a2luZCA9IFRyeUZpbmFsbHlfa2luZDsKLSAgICAgICAgcC0+di5UcnlGaW5hbGx5LmJvZHkgPSBib2R5OwotICAgICAgICBwLT52LlRyeUZpbmFsbHkuZmluYWxib2R5ID0gZmluYWxib2R5OworICAgICAgICBwLT5raW5kID0gVHJ5X2tpbmQ7CisgICAgICAgIHAtPnYuVHJ5LmJvZHkgPSBib2R5OworICAgICAgICBwLT52LlRyeS5oYW5kbGVycyA9IGhhbmRsZXJzOworICAgICAgICBwLT52LlRyeS5vcmVsc2UgPSBvcmVsc2U7CisgICAgICAgIHAtPnYuVHJ5LmZpbmFsYm9keSA9IGZpbmFsYm9keTsKICAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOwogICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKICAgICAgICAgcmV0dXJuIHA7CkBAIC0xNzE0LDYgKzE3OTksMjAgQEAKIH0KIAogZXhwcl90eQorWWllbGRGcm9tKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICAgICAgZXhwcl90eSBwOworICAgICAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHAtPmtpbmQgPSBZaWVsZEZyb21fa2luZDsKKyAgICAgICAgcC0+di5ZaWVsZEZyb20udmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICAgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIENvbXBhcmUoZXhwcl90eSBsZWZ0LCBhc2RsX2ludF9zZXEgKiBvcHMsIGFzZGxfc2VxICogY29tcGFyYXRvcnMsIGludCBsaW5lbm8sCiAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTE3OTgsNyArMTg5Nyw3IEBACiB9CiAKIGV4cHJfdHkKLUJ5dGVzKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCitCeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgICAgIGV4cHJfdHkgcDsKICAgICAgICAgaWYgKCFzKSB7CkBAIC0yMTQ2LDYgKzIyNDUsMjMgQEAKICAgICAgICAgcmV0dXJuIHA7CiB9CiAKK3dpdGhpdGVtX3R5Cit3aXRoaXRlbShleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICAgICAgd2l0aGl0ZW1fdHkgcDsKKyAgICAgICAgaWYgKCFjb250ZXh0X2V4cHIpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGNvbnRleHRfZXhwciBpcyByZXF1aXJlZCBmb3Igd2l0aGl0ZW0iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBwID0gKHdpdGhpdGVtX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwLT5jb250ZXh0X2V4cHIgPSBjb250ZXh0X2V4cHI7CisgICAgICAgIHAtPm9wdGlvbmFsX3ZhcnMgPSBvcHRpb25hbF92YXJzOworICAgICAgICByZXR1cm4gcDsKK30KKwogCiBQeU9iamVjdCoKIGFzdDJvYmpfbW9kKHZvaWQqIF9vKQpAQCAtMjE2Myw3ICsyMjc5LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Nb2R1bGUuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxNzIsNyArMjI4OCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSW50ZXJhY3RpdmUuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxODEsNyArMjI5Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRXhwcmVzc2lvbi5ib2R5KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxOTAsNyArMjMwNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuU3VpdGUuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyMTgsMjkgKzIzMzQsMjkgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5GdW5jdGlvbkRlZi5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfYXJndW1lbnRzKG8tPnYuRnVuY3Rpb25EZWYuYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5GdW5jdGlvbkRlZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJkZWNvcmF0b3JfbGlzdCIsIHZhbHVlKSA9PQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVjb3JhdG9yX2xpc3QsIHZhbHVlKSA9PQogICAgICAgICAgICAgICAgICAgICAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5GdW5jdGlvbkRlZi5yZXR1cm5zKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJyZXR1cm5zIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcmV0dXJucywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyNDksMzggKzIzNjUsMzggQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5DbGFzc0RlZi5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmJhc2VzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJhc2VzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYmFzZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5rZXl3b3JkcywgYXN0Mm9ial9rZXl3b3JkKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrZXl3b3JkcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXdvcmRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYuc3RhcmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInN0YXJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RhcmFyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DbGFzc0RlZi5rd2FyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3YXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5kZWNvcmF0b3JfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRlY29yYXRvcl9saXN0IiwgdmFsdWUpID09CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kZWNvcmF0b3JfbGlzdCwgdmFsdWUpID09CiAgICAgICAgICAgICAgICAgICAgIC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKQEAgLTIyOTAsNyArMjQwNiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuUmV0dXJuLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjI5OSw3ICsyNDE1LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EZWxldGUudGFyZ2V0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzMDgsMTIgKzI0MjQsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3NpZ24udGFyZ2V0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzc2lnbi52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzMjIsMTcgKzI0MzgsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5BdWdBc3NpZ24udGFyZ2V0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0YXJnZXQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX29wZXJhdG9yKG8tPnYuQXVnQXNzaWduLm9wKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXVnQXNzaWduLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM0MSwyMiArMjQ1NywyMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvci50YXJnZXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvci5pdGVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJpdGVyIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZvci5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRm9yLm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzY1LDE3ICsyNDgxLDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuV2hpbGUudGVzdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGVzdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3Rlc3QsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaGlsZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2hpbGUub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzODQsMzcgKzI1MDAsMzEgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JZi50ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0ZXN0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGVzdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LklmLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JZi5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdpdGhfa2luZDoKICAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhXaXRoX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LldpdGguY29udGV4dF9leHByKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LldpdGguaXRlbXMsIGFzdDJvYmpfd2l0aGl0ZW0pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbnRleHRfZXhwciIsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpOwotICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wdGlvbmFsX3ZhcnMiLCB2YWx1ZSkgPT0KLSAgICAgICAgICAgICAgICAgICAgLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVtcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LldpdGguYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI0MjMsNDYgKzI1MzMsMzYgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5SYWlzZS5leGMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImV4YyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2V4YywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlJhaXNlLmNhdXNlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjYXVzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NhdXNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyeUV4Y2VwdF9raW5kOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFRyeUV4Y2VwdF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhUcnlfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RXhjZXB0LmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnkuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUV4Y2VwdC5oYW5kbGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2V4Y2VwdGhhbmRsZXIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5LmhhbmRsZXJzLCBhc3Qyb2JqX2V4Y2VwdGhhbmRsZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImhhbmRsZXJzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaGFuZGxlcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlFeGNlcHQub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5Lm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHJ5RmluYWxseV9raW5kOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFRyeUZpbmFsbHlfdHlwZSwgTlVMTCwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RmluYWxseS5ib2R5LCBhc3Qyb2JqX3N0bXQpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5LmZpbmFsYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUZpbmFsbHkuZmluYWxib2R5LCBhc3Qyb2JqX3N0bXQpOwotICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImZpbmFsYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2ZpbmFsYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI0NzEsMTIgKzI1NzEsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3NlcnQudGVzdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGVzdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3Rlc3QsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3NlcnQubXNnKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJtc2ciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9tc2csIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDg1LDcgKzI1ODUsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkltcG9ydC5uYW1lcywgYXN0Mm9ial9hbGlhcyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI0OTQsMTcgKzI1OTQsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5JbXBvcnRGcm9tLm1vZHVsZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibW9kdWxlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbW9kdWxlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSW1wb3J0RnJvbS5uYW1lcywgYXN0Mm9ial9hbGlhcyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuSW1wb3J0RnJvbS5sZXZlbCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGV2ZWwiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9sZXZlbCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1MTMsNyArMjYxMyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuR2xvYmFsLm5hbWVzLCBhc3Qyb2JqX2lkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTIyLDcgKzI2MjIsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lk5vbmxvY2FsLm5hbWVzLCBhc3Qyb2JqX2lkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTMxLDcgKzI2MzEsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkV4cHIudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTUwLDEyICsyNjUwLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5saW5lbm8pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGluZW5vIiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9saW5lbm8sIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+Y29sX29mZnNldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb2xfb2Zmc2V0IiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb2xfb2Zmc2V0LCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjU4MSwxMiArMjY4MSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfYm9vbG9wKG8tPnYuQm9vbE9wLm9wKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQm9vbE9wLnZhbHVlcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNTk1LDE3ICsyNjk1LDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQmluT3AubGVmdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGVmdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xlZnQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX29wZXJhdG9yKG8tPnYuQmluT3Aub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5CaW5PcC5yaWdodCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicmlnaHQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9yaWdodCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2MTQsMTIgKzI3MTQsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX3VuYXJ5b3Aoby0+di5VbmFyeU9wLm9wKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuVW5hcnlPcC5vcGVyYW5kKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcGVyYW5kIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3BlcmFuZCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2MjgsMTIgKzI3MjgsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2FyZ3VtZW50cyhvLT52LkxhbWJkYS5hcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkxhbWJkYS5ib2R5KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2NDIsMTcgKzI3NDIsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JZkV4cC50ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0ZXN0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGVzdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmRXhwLmJvZHkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWZFeHAub3JlbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjYxLDEyICsyNzYxLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRGljdC5rZXlzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXlzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRGljdC52YWx1ZXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWVzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY3NSw3ICsyNzc1LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5TZXQuZWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2ODQsMTMgKzI3ODQsMTMgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5MaXN0Q29tcC5lbHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lkxpc3RDb21wLmdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9jb21wcmVoZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJnZW5lcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZ2VuZXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2OTksMTMgKzI3OTksMTMgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TZXRDb21wLmVsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuU2V0Q29tcC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzE0LDE4ICsyODE0LDE4IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRGljdENvbXAua2V5KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrZXkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5EaWN0Q29tcC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRpY3RDb21wLmdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9jb21wcmVoZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJnZW5lcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZ2VuZXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MzQsMTMgKzI4MzQsMTMgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5HZW5lcmF0b3JFeHAuZWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5HZW5lcmF0b3JFeHAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc0OSw3ICsyODQ5LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuWWllbGQudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoWWllbGRGcm9tX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LllpZWxkRnJvbS52YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3NTgsMjMgKzI4NjcsMjMgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Db21wYXJlLmxlZnQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxlZnQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9sZWZ0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBpLCBuID0gYXNkbF9zZXFfTEVOKG8tPnYuQ29tcGFyZS5vcHMpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpLCBuID0gYXNkbF9zZXFfTEVOKG8tPnYuQ29tcGFyZS5vcHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQeUxpc3RfTmV3KG4pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2YWx1ZSwgaSwgYXN0Mm9ial9jbXBvcCgoY21wb3BfdHkpYXNkbF9zZXFfR0VUKG8tPnYuQ29tcGFyZS5vcHMsIGkpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNvbXBhcmUuY29tcGFyYXRvcnMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29tcGFyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb21wYXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3ODMsMjcgKzI4OTIsMjcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLmZ1bmMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImZ1bmMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9mdW5jLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2FsbC5hcmdzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2FsbC5rZXl3b3JkcywgYXN0Mm9ial9rZXl3b3JkKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrZXl3b3JkcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXdvcmRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5zdGFyYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic3RhcmFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGFyYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwua3dhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd2FyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODEyLDcgKzI5MjEsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfb2JqZWN0KG8tPnYuTnVtLm4pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm4iLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjgyMSwxNiArMjkzMCwxNiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfc3RyaW5nKG8tPnYuU3RyLnMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQnl0ZXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9zdHJpbmcoby0+di5CeXRlcy5zKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfYnl0ZXMoby0+di5CeXRlcy5zKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4NDMsMTcgKzI5NTIsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5BdHRyaWJ1dGUudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5BdHRyaWJ1dGUuYXR0cik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXR0ciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2F0dHIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LkF0dHJpYnV0ZS5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4NjIsMTcgKzI5NzEsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TdWJzY3JpcHQudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX3NsaWNlKG8tPnYuU3Vic2NyaXB0LnNsaWNlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzbGljZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3NsaWNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5TdWJzY3JpcHQuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODgxLDEyICsyOTkwLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU3RhcnJlZC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuU3RhcnJlZC5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4OTUsMTIgKzMwMDQsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5OYW1lLmlkKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJpZCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lkLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5OYW1lLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkwOSwxMiArMzAxOCwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lkxpc3QuZWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuTGlzdC5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5MjMsMjQgKzMwMzIsMjQgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UdXBsZS5lbHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5UdXBsZS5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmxpbmVubyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsaW5lbm8iLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xpbmVubywgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5jb2xfb2Zmc2V0KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbF9vZmZzZXQiLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbF9vZmZzZXQsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yOTkzLDE3ICszMTAyLDE3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2xpY2UubG93ZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxvd2VyIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbG93ZXIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TbGljZS51cHBlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidXBwZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF91cHBlciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNsaWNlLnN0ZXApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInN0ZXAiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGVwLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAxMiw3ICszMTIxLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5FeHRTbGljZS5kaW1zLCBhc3Qyb2JqX3NsaWNlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJkaW1zIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGltcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwMjEsNyArMzEzMCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSW5kZXgudmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMTY3LDE3ICszMjc2LDE3IEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+dGFyZ2V0KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+aXRlcik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJpdGVyIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZXIsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+aWZzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaWZzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lmcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzIwMywyOSArMzMxMiwyOSBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkV4Y2VwdEhhbmRsZXIudHlwZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidHlwZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3R5cGUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5FeGNlcHRIYW5kbGVyLm5hbWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRXhjZXB0SGFuZGxlci5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+bGluZW5vKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxpbmVubyIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGluZW5vLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmNvbF9vZmZzZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29sX29mZnNldCIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29sX29mZnNldCwgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMyNDksNDIgKzMzNTgsNDIgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5hcmdzLCBhc3Qyb2JqX2FyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+dmFyYXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhcmFyZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YXJhcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+dmFyYXJnYW5ub3RhdGlvbik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YXJhcmdhbm5vdGF0aW9uIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+a3dvbmx5YXJncywgYXN0Mm9ial9hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dvbmx5YXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd29ubHlhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPmt3YXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3YXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPmt3YXJnYW5ub3RhdGlvbik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd2FyZ2Fubm90YXRpb24iLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdhbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmRlZmF1bHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGVmYXVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVmYXVsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+a3dfZGVmYXVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd19kZWZhdWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd19kZWZhdWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzMwOCwxMiArMzQxNywxMiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPmFyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJnLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPmFubm90YXRpb24pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYW5ub3RhdGlvbiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzM3LDEyICszNDQ2LDEyIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+YXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+dmFsdWUpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzNjYsMTIgKzM0NzUsNDEgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5uYW1lKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbmFtZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5hc25hbWUpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXNuYW1lIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FzbmFtZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworZmFpbGVkOgorICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsKKyAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QqCithc3Qyb2JqX3dpdGhpdGVtKHZvaWQqIF9vKQoreworICAgICAgICB3aXRoaXRlbV90eSBvID0gKHdpdGhpdGVtX3R5KV9vOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTCwgKnZhbHVlID0gTlVMTDsKKyAgICAgICAgaWYgKCFvKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcod2l0aGl0ZW1fdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+Y29udGV4dF9leHByKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29udGV4dF9leHByLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPm9wdGlvbmFsX3ZhcnMpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcHRpb25hbF92YXJzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNDAwLDExICszNTM4LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJNb2R1bGUgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNDM2LDExICszNTc0LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJbnRlcmFjdGl2ZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM0NzIsOSArMzYxMCw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZib2R5LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzQ5NSwxMSArMzYzMywxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiU3VpdGUgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNTQ0LDkgKzM2ODIsOSBAQAogICAgICAgICAgICAgICAgICpvdXQgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsaW5lbm8iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxpbmVubywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNTU2LDkgKzM2OTQsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxpbmVub1wiIG1pc3NpbmcgZnJvbSBzdG10Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzU3OSw5ICszNzE3LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZGVjb3JhdG9yX2xpc3Q7CiAgICAgICAgICAgICAgICAgZXhwcl90eSByZXR1cm5zOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzU5MSw5ICszNzI5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVcIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25EZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9hcmd1bWVudHModG1wLCAmYXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM2MDMsMTEgKzM3NDEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25EZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJGdW5jdGlvbkRlZiBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM2MjgsMTEgKzM3NjYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25EZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJkZWNvcmF0b3JfbGlzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kZWNvcmF0b3JfbGlzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZGVjb3JhdG9yX2xpc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9kZWNvcmF0b3JfbGlzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRnVuY3Rpb25EZWYgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzY1Myw5ICszNzkxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbWlzc2luZyBmcm9tIEZ1bmN0aW9uRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAicmV0dXJucyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9yZXR1cm5zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicmV0dXJucyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3JldHVybnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZyZXR1cm5zLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzY4Miw5ICszODIwLDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZGVjb3JhdG9yX2xpc3Q7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNjk0LDExICszODMyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lXCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYmFzZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYmFzZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJhc2VzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYmFzZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiYmFzZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM3MTksMTEgKzM4NTcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJhc2VzXCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia2V5d29yZHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa2V5d29yZHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImtleXdvcmRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa2V5d29yZHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwia2V5d29yZHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM3NDQsOSArMzg4Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXl3b3Jkc1wiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInN0YXJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0YXJhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzc1NSw5ICszODkzLDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmFyZ3MgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzc2NiwxMSArMzkwNCwxMSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM3OTEsMTEgKzM5MjksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJkZWNvcmF0b3JfbGlzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kZWNvcmF0b3JfbGlzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZGVjb3JhdG9yX2xpc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9kZWNvcmF0b3JfbGlzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzgyOCw5ICszOTY2LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zODUwLDExICszOTg4LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIHRhcmdldHM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRhcmdldHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJEZWxldGUgZmllbGQgXCJ0YXJnZXRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zODg3LDExICs0MDI1LDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIHRhcmdldHM7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzc2lnbiBmaWVsZCBcInRhcmdldHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM5MTIsOSArNDA1MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRzXCIgbWlzc2luZyBmcm9tIEFzc2lnbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzkzNyw5ICs0MDc1LDkgQEAKICAgICAgICAgICAgICAgICBvcGVyYXRvcl90eSBvcDsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRhcmdldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5NDksOSArNDA4Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gQXVnQXNzaWduIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3AiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X29wZXJhdG9yKHRtcCwgJm9wLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzk2MSw5ICs0MDk5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wXCIgbWlzc2luZyBmcm9tIEF1Z0Fzc2lnbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzk4Nyw5ICs0MTI1LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogb3JlbHNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRhcmdldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM5OTksOSArNDEzNyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gRm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaXRlciIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaXRlciIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2l0ZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZpdGVyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDAxMSwxMSArNDE0OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlclwiIG1pc3NpbmcgZnJvbSBGb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJGb3IgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MDM2LDExICs0MTc0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEZvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRm9yIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MDc1LDkgKzQyMTMsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MDg3LDExICs0MjI1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0ZXN0XCIgbWlzc2luZyBmcm9tIFdoaWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2hpbGUgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MTEyLDExICs0MjUwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFdoaWxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJXaGlsZSBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDE1MCw5ICs0Mjg4LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogb3JlbHNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDE2MiwxMSArNDMwMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGVzdFwiIG1pc3NpbmcgZnJvbSBJZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIklmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDE4NywxMSArNDMyNSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBJZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29yZWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSWYgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQyMjEsMzggKzQzNTksMzkgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewotICAgICAgICAgICAgICAgIGV4cHJfdHkgY29udGV4dF9leHByOwotICAgICAgICAgICAgICAgIGV4cHJfdHkgb3B0aW9uYWxfdmFyczsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcSogaXRlbXM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb250ZXh0X2V4cHIiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29udGV4dF9leHByIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmNvbnRleHRfZXhwciwgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImNvbnRleHRfZXhwclwiIG1pc3NpbmcgZnJvbSBXaXRoIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3B0aW9uYWxfdmFycyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcHRpb25hbF92YXJzIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9wdGlvbmFsX3ZhcnMsIGFyZW5hKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbF92YXJzID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVtcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2l0ZW1zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJXaXRoIGZpZWxkIFwiaXRlbXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpdGVtX3R5IHZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3dpdGhpdGVtKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGl0ZW1zLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVtc1wiIG1pc3NpbmcgZnJvbSBXaXRoIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldpdGggZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MjczLDggKzQ0MTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBXaXRoIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKm91dCA9IFdpdGgoY29udGV4dF9leHByLCBvcHRpb25hbF92YXJzLCBib2R5LCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAgICAgICAgICpvdXQgPSBXaXRoKGl0ZW1zLCBib2R5LCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtNDI4Niw5ICs0NDI0LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGV4YzsKICAgICAgICAgICAgICAgICBleHByX3R5IGNhdXNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZXhjIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2V4YykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImV4YyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2V4Yyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmV4YywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQyOTcsOSArNDQzNSw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGV4YyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNhdXNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NhdXNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY2F1c2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jYXVzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmNhdXNlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDMxMiw3ICs0NDUwLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopVHJ5RXhjZXB0X3R5cGUpOworICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopVHJ5X3R5cGUpOwogICAgICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CkBAIC00MzIwLDE1ICs0NDU4LDE2IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGhhbmRsZXJzOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CisgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGZpbmFsYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUV4Y2VwdCBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKQEAgLTQzNDMsMTcgKzQ0ODIsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5RXhjZXB0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFRyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImhhbmRsZXJzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2hhbmRsZXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJoYW5kbGVycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2hhbmRsZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnlFeGNlcHQgZmllbGQgXCJoYW5kbGVyc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwiaGFuZGxlcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKQEAgLTQzNjgsMTcgKzQ1MDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImhhbmRsZXJzXCIgbWlzc2luZyBmcm9tIFRyeUV4Y2VwdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaGFuZGxlcnNcIiBtaXNzaW5nIGZyb20gVHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnlFeGNlcHQgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeSBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDM5Myw1NSArNDUzMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3JlbHNlXCIgbWlzc2luZyBmcm9tIFRyeUV4Y2VwdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3JlbHNlXCIgbWlzc2luZyBmcm9tIFRyeSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpvdXQgPSBUcnlFeGNlcHQoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgbGluZW5vLCBjb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbmEpOwotICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilUcnlGaW5hbGx5X3R5cGUpOwotICAgICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc2luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXEqIGZpbmFsYm9keTsKLQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZmluYWxib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZmluYWxib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnlGaW5hbGx5IGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFRyeUZpbmFsbHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJmaW5hbGJvZHkiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJmaW5hbGJvZHkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnlGaW5hbGx5IGZpZWxkIFwiZmluYWxib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJmaW5hbGJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKQEAgLTQ0NTYsMTAgKzQ1NTcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImZpbmFsYm9keVwiIG1pc3NpbmcgZnJvbSBUcnlGaW5hbGx5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJmaW5hbGJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKm91dCA9IFRyeUZpbmFsbHkoYm9keSwgZmluYWxib2R5LCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAqb3V0ID0gVHJ5KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIGZpbmFsYm9keSwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC00NDcxLDkgKzQ1NzMsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgdGVzdDsKICAgICAgICAgICAgICAgICBleHByX3R5IG1zZzsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRlc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGVzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGVzdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ0ODMsOSArNDU4NSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0ZXN0XCIgbWlzc2luZyBmcm9tIEFzc2VydCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm1zZyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9tc2cpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJtc2ciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9tc2cpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZtc2csIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NTA1LDExICs0NjA3LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG5hbWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkltcG9ydCBmaWVsZCBcIm5hbWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00NTQzLDkgKzQ2NDUsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBuYW1lczsKICAgICAgICAgICAgICAgICBpbnQgbGV2ZWw7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJtb2R1bGUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbW9kdWxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibW9kdWxlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbW9kdWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbW9kdWxlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDU1NCwxMSArNDY1NiwxMSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSW1wb3J0RnJvbSBmaWVsZCBcIm5hbWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00NTc5LDkgKzQ2ODEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZXNcIiBtaXNzaW5nIGZyb20gSW1wb3J0RnJvbSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxldmVsIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xldmVsKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGV2ZWwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9sZXZlbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmbGV2ZWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NjAyLDExICs0NzA0LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG5hbWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkdsb2JhbCBmaWVsZCBcIm5hbWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00NjM4LDExICs0NzQwLDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG5hbWVzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIk5vbmxvY2FsIGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ2NzQsOSArNDc3Niw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDc0MCw5ICs0ODQyLDkgQEAKICAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsaW5lbm8iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xpbmVubykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGluZW5vIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xpbmVubyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsaW5lbm8sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDc1Miw5ICs0ODU0LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsaW5lbm9cIiBtaXNzaW5nIGZyb20gZXhwciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ3NzIsOSArNDg3NCw5IEBACiAgICAgICAgICAgICAgICAgYm9vbG9wX3R5IG9wOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiB2YWx1ZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYm9vbG9wKHRtcCwgJm9wLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDc4NCwxMSArNDg4NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BcIiBtaXNzaW5nIGZyb20gQm9vbE9wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJCb29sT3AgZmllbGQgXCJ2YWx1ZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ4MjIsOSArNDkyNCw5IEBACiAgICAgICAgICAgICAgICAgb3BlcmF0b3JfdHkgb3A7CiAgICAgICAgICAgICAgICAgZXhwcl90eSByaWdodDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxlZnQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGVmdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxlZnQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9sZWZ0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmbGVmdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4MzQsOSArNDkzNiw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsZWZ0XCIgbWlzc2luZyBmcm9tIEJpbk9wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3AiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X29wZXJhdG9yKHRtcCwgJm9wLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDg0Niw5ICs0OTQ4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wXCIgbWlzc2luZyBmcm9tIEJpbk9wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAicmlnaHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcmlnaHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJyaWdodCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3JpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmcmlnaHQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00ODcwLDkgKzQ5NzIsOSBAQAogICAgICAgICAgICAgICAgIHVuYXJ5b3BfdHkgb3A7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBvcGVyYW5kOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3AiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3VuYXJ5b3AodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00ODgyLDkgKzQ5ODQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BcIiBtaXNzaW5nIGZyb20gVW5hcnlPcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wZXJhbmQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3BlcmFuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wZXJhbmQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmb3BlcmFuZCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5MDYsOSArNTAwOCw5IEBACiAgICAgICAgICAgICAgICAgYXJndW1lbnRzX3R5IGFyZ3M7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYXJndW1lbnRzKHRtcCwgJmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTE4LDkgKzUwMjAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBMYW1iZGEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmJvZHksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTQzLDkgKzUwNDUsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgYm9keTsKICAgICAgICAgICAgICAgICBleHByX3R5IG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRlc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGVzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGVzdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5NTUsOSArNTA1Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0ZXN0XCIgbWlzc2luZyBmcm9tIElmRXhwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZib2R5LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDk2Nyw5ICs1MDY5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gSWZFeHAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmb3JlbHNlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDk5MSwxMSArNTA5MywxMSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBrZXlzOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiB2YWx1ZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrZXlzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImtleXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJEaWN0IGZpZWxkIFwia2V5c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTAxNiwxMSArNTExOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5c1wiIG1pc3NpbmcgZnJvbSBEaWN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJEaWN0IGZpZWxkIFwidmFsdWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MDUyLDExICs1MTU0LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGVsdHM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJTZXQgZmllbGQgXCJlbHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MDg5LDkgKzUxOTEsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmVsdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUxMDEsMTEgKzUyMDMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdFwiIG1pc3NpbmcgZnJvbSBMaXN0Q29tcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkxpc3RDb21wIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTEzOCw5ICs1MjQwLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGVsdDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZlbHQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MTUwLDExICs1MjUyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRcIiBtaXNzaW5nIGZyb20gU2V0Q29tcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlNldENvbXAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MTg4LDkgKzUyOTAsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGdlbmVyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrZXkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa2V5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma2V5LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTIwMCw5ICs1MzAyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleVwiIG1pc3NpbmcgZnJvbSBEaWN0Q29tcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTIxMiwxMSArNTMxNCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gRGljdENvbXAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJEaWN0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUyNTAsOSArNTM1Miw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQ7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGdlbmVyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZWx0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTI2MiwxMSArNTM2NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0XCIgbWlzc2luZyBmcm9tIEdlbmVyYXRvckV4cCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkdlbmVyYXRvckV4cCBmaWVsZCBcImdlbmVyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUyOTgsOSArNTQwMCw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTMxMyw2ICs1NDE1LDI4IEBACiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVlpZWxkRnJvbV90eXBlKTsKKyAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAqb3V0ID0gWWllbGRGcm9tKHZhbHVlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ29tcGFyZV90eXBlKTsKICAgICAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTUzMjIsOSArNTQ0Niw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9pbnRfc2VxKiBvcHM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGNvbXBhcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGVmdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sZWZ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGVmdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZsZWZ0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTMzNCwxMSArNTQ1OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGVmdFwiIG1pc3NpbmcgZnJvbSBDb21wYXJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3BzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3BzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3BzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDb21wYXJlIGZpZWxkIFwib3BzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MzU5LDExICs1NDgzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcHNcIiBtaXNzaW5nIGZyb20gQ29tcGFyZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbXBhcmF0b3JzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbXBhcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb21wYXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbXBhcmF0b3JzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDb21wYXJlIGZpZWxkIFwiY29tcGFyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU0MDAsOSArNTUyNCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJnczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImZ1bmMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZnVuYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImZ1bmMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9mdW5jKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZnVuYywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU0MTIsMTEgKzU1MzYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImZ1bmNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNhbGwgZmllbGQgXCJhcmdzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NDM3LDExICs1NTYxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIENhbGwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXl3b3JkcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5d29yZHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXl3b3Jkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2FsbCBmaWVsZCBcImtleXdvcmRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NDYyLDkgKzU1ODYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInN0YXJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0YXJhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTQ3Myw5ICs1NTk3LDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmFyZ3MgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTQ5Niw5ICs1NjIwLDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBvYmplY3QgbjsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm4iKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X29iamVjdCh0bXAsICZuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTUxOSw5ICs1NjQzLDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBzdHJpbmcgczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0cmluZyh0bXAsICZzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTU0MCwxMyArNTY2NCwxMyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgc3RyaW5nIHM7CisgICAgICAgICAgICAgICAgYnl0ZXMgczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0cmluZyh0bXAsICZzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2J5dGVzKHRtcCwgJnMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTU3Nyw5ICs1NzAxLDkgQEAKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIGF0dHI7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTU4OSw5ICs1NzEzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIEF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImF0dHIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXR0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImF0dHIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hdHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXR0ciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2MDEsOSArNTcyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhdHRyXCIgbWlzc2luZyBmcm9tIEF0dHJpYnV0ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2MjYsOSArNTc1MCw5IEBACiAgICAgICAgICAgICAgICAgc2xpY2VfdHkgc2xpY2U7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTYzOCw5ICs1NzYyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIFN1YnNjcmlwdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInNsaWNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3NsaWNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic2xpY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zbGljZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zbGljZSh0bXAsICZzbGljZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2NTAsOSArNTc3NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJzbGljZVwiIG1pc3NpbmcgZnJvbSBTdWJzY3JpcHQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01Njc0LDkgKzU3OTgsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTY4Niw5ICs1ODEwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIFN0YXJyZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NzEwLDkgKzU4MzQsOSBAQAogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgaWQ7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImlkIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2lkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmlkLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTcyMiw5ICs1ODQ2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlkXCIgbWlzc2luZyBmcm9tIE5hbWUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NzQ2LDExICs1ODcwLDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGVsdHM7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkxpc3QgZmllbGQgXCJlbHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01NzcxLDkgKzU4OTUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0c1wiIG1pc3NpbmcgZnJvbSBMaXN0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTc5NSwxMSArNTkxOSwxMSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBlbHRzOwogICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUdXBsZSBmaWVsZCBcImVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU4MjAsOSArNTk0NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRzXCIgbWlzc2luZyBmcm9tIFR1cGxlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTkyMSw5ICs2MDQ1LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHVwcGVyOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RlcDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxvd2VyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xvd2VyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibG93ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9sb3dlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmxvd2VyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTkzMiw5ICs2MDU2LDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXIgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ1cHBlciIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF91cHBlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInVwcGVyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdXBwZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ1cHBlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU5NDMsOSArNjA2Nyw5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic3RlcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zdGVwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAic3RlcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0ZXApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGVwLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTk2NSwxMSArNjA4OSwxMSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBkaW1zOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGltcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kaW1zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkaW1zIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGltcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRXh0U2xpY2UgZmllbGQgXCJkaW1zXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02MDAxLDkgKzYxMjUsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYyOTYsOSArNjQyMCw5IEBACiAgICAgICAgIGV4cHJfdHkgaXRlcjsKICAgICAgICAgYXNkbF9zZXEqIGlmczsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYzMDgsOSArNjQzMiw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJpdGVyIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVyKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpdGVyIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2l0ZXIpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJml0ZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjMyMCwxMSArNjQ0NCwxMSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZXJcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImlmcyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaWZzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiaWZzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lmcyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiY29tcHJlaGVuc2lvbiBmaWVsZCBcImlmc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjM2NSw5ICs2NDg5LDkgQEAKICAgICAgICAgICAgICAgICAqb3V0ID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsaW5lbm8iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xpbmVubykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGluZW5vIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xpbmVubyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsaW5lbm8sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjM3Nyw5ICs2NTAxLDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsaW5lbm9cIiBtaXNzaW5nIGZyb20gZXhjZXB0aGFuZGxlciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbF9vZmZzZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTYzOTgsOSArNjUyMiw5IEBACiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidHlwZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidHlwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3R5cGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0eXBlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjQwOSw5ICs2NTMzLDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY0MjAsMTEgKzY1NDQsMTEgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkV4Y2VwdEhhbmRsZXIgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NDcwLDExICs2NTk0LDExIEBACiAgICAgICAgIGFzZGxfc2VxKiBkZWZhdWx0czsKICAgICAgICAgYXNkbF9zZXEqIGt3X2RlZmF1bHRzOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImFyZ3NcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY0OTUsOSArNjYxOSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YXJhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhcmFyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFyYXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhcmFyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmdmFyYXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1MDYsOSArNjYzMCw5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyYXJnID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YXJhcmdhbm5vdGF0aW9uIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YXJhcmdhbm5vdGF0aW9uKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YXJhcmdhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhcmFyZ2Fubm90YXRpb24sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjUxNywxMSArNjY0MSwxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhcmFyZ2Fubm90YXRpb24gPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3b25seWFyZ3MiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3b25seWFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd29ubHlhcmdzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3b25seWFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImt3b25seWFyZ3NcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY1NDIsOSArNjY2Niw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia3dvbmx5YXJnc1wiIG1pc3NpbmcgZnJvbSBhcmd1bWVudHMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmcpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3YXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZrd2FyZywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NTUzLDkgKzY2NzcsOSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGt3YXJnID0gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrd2FyZ2Fubm90YXRpb24iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3YXJnYW5ub3RhdGlvbikpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmdhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3YXJnYW5ub3RhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdhbm5vdGF0aW9uLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1NjQsMTEgKzY2ODgsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBrd2FyZ2Fubm90YXRpb24gPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRlZmF1bHRzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9kZWZhdWx0cykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRlZmF1bHRzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlZmF1bHRzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJkZWZhdWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjU4OSwxMSArNjcxMywxMSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlZmF1bHRzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3X2RlZmF1bHRzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd19kZWZhdWx0cykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3X2RlZmF1bHRzIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2t3X2RlZmF1bHRzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJrd19kZWZhdWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjYyOSw5ICs2NzUzLDkgQEAKICAgICAgICAgaWRlbnRpZmllciBhcmc7CiAgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY2NDEsOSArNjc2NSw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnXCIgbWlzc2luZyBmcm9tIGFyZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFubm90YXRpb24iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYW5ub3RhdGlvbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NjY2LDkgKzY3OTAsOSBAQAogICAgICAgICBpZGVudGlmaWVyIGFyZzsKICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmciKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXJnIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY2NzgsOSArNjgwMiw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnXCIgbWlzc2luZyBmcm9tIGtleXdvcmQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NzA0LDkgKzY4MjgsOSBAQAogICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgIGlkZW50aWZpZXIgYXNuYW1lOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NzE2LDkgKzY4NDAsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVcIiBtaXNzaW5nIGZyb20gYWxpYXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhc25hbWUiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FzbmFtZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXNuYW1lIik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FzbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmYXNuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY3MzQsNiArNjg1OCw0MyBAQAogICAgICAgICByZXR1cm4gMTsKIH0KIAoraW50CitvYmoyYXN0X3dpdGhpdGVtKFB5T2JqZWN0KiBvYmosIHdpdGhpdGVtX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgICAgICBQeU9iamVjdCogdG1wID0gTlVMTDsKKyAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7CisgICAgICAgIGV4cHJfdHkgb3B0aW9uYWxfdmFyczsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2NvbnRleHRfZXhwcikpIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb250ZXh0X2V4cHIpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmNvbnRleHRfZXhwciwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiY29udGV4dF9leHByXCIgbWlzc2luZyBmcm9tIHdpdGhpdGVtIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcHRpb25hbF92YXJzKSkgeworICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wdGlvbmFsX3ZhcnMpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm9wdGlvbmFsX3ZhcnMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG9wdGlvbmFsX3ZhcnMgPSBOVUxMOworICAgICAgICB9CisgICAgICAgICpvdXQgPSB3aXRoaXRlbShjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGFyZW5hKTsKKyAgICAgICAgcmV0dXJuIDA7CitmYWlsZWQ6CisgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgcmV0dXJuIDE7Cit9CisKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfYXN0bW9kdWxlID0gewogICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICJfYXN0IgpAQCAtNjc1MCw4ICs2OTExLDYgQEAKICAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlDRl9PTkxZX0FTVCIsIFB5Q0ZfT05MWV9BU1QpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJfX3ZlcnNpb25fXyIsICI4MjE2MyIpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtb2QiLCAoUHlPYmplY3QqKW1vZF90eXBlKSA8IDApIHJldHVybgogICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNb2R1bGUiLCAoUHlPYmplY3QqKU1vZHVsZV90eXBlKSA8IDApCkBAIC02Nzg1LDEwICs2OTQ0LDggQEAKICAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiUmFpc2UiLCAoUHlPYmplY3QqKVJhaXNlX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOwotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRyeUV4Y2VwdCIsIChQeU9iamVjdCopVHJ5RXhjZXB0X3R5cGUpIDwKLSAgICAgICAgICAgIDApIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlRyeUZpbmFsbHkiLCAoUHlPYmplY3QqKVRyeUZpbmFsbHlfdHlwZSkgPAotICAgICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5IiwgKFB5T2JqZWN0KilUcnlfdHlwZSkgPCAwKSByZXR1cm4KKyAgICAgICAgICAgIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXNzZXJ0IiwgKFB5T2JqZWN0KilBc3NlcnRfdHlwZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSW1wb3J0IiwgKFB5T2JqZWN0KilJbXBvcnRfdHlwZSkgPCAwKQpAQCAtNjgzMyw2ICs2OTkwLDggQEAKICAgICAgICAgICAgIChQeU9iamVjdCopR2VuZXJhdG9yRXhwX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGQiLCAoUHlPYmplY3QqKVlpZWxkX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIllpZWxkRnJvbSIsIChQeU9iamVjdCopWWllbGRGcm9tX3R5cGUpIDwKKyAgICAgICAgICAgIDApIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNvbXBhcmUiLCAoUHlPYmplY3QqKUNvbXBhcmVfdHlwZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2FsbCIsIChQeU9iamVjdCopQ2FsbF90eXBlKSA8IDApIHJldHVybgpAQCAtNjk1MSw2ICs3MTEwLDggQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImFsaWFzIiwgKFB5T2JqZWN0KilhbGlhc190eXBlKSA8IDApIHJldHVybgogICAgICAgICAgICAgTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJ3aXRoaXRlbSIsIChQeU9iamVjdCopd2l0aGl0ZW1fdHlwZSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vX3dhcm5pbmdzLmMgYi9QeXRob24vX3dhcm5pbmdzLmMKaW5kZXggYzEyZGI0NC4uZjMzZTQ3NyAxMDA2NDQKLS0tIGEvUHl0aG9uL193YXJuaW5ncy5jCisrKyBiL1B5dGhvbi9fd2FybmluZ3MuYwpAQCAtMTgsMTEgKzE4LDEyIEBACiBjaGVja19tYXRjaGVkKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihtYXRjaCk7CiAgICAgaW50IHJjOwogCiAgICAgaWYgKG9iaiA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gMTsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG9iaiwgIm1hdGNoIiwgIk8iLCBhcmcpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9tYXRjaCwgIk8iLCBhcmcpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0yMDIsMTMgKzIwMywxMyBAQAogCiAgICAgbW9kX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZmlsZW5hbWUpOwogICAgIGlmIChtb2Rfc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShmaWxlbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgoZmlsZW5hbWUpOwogICAgIGlmIChsZW4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobGVuID49IDMgJiYKICAgICAgICAgc3RybmNtcChtb2Rfc3RyICsgKGxlbiAtIDMpLCAiLnB5IiwgMykgPT0gMCkgewotICAgICAgICBtb2R1bGUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUobW9kX3N0ciwgbGVuLTMpOworICAgICAgICBtb2R1bGUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGZpbGVuYW1lLCAwLCBsZW4tMyk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBtb2R1bGUgPSBmaWxlbmFtZTsKQEAgLTI0NiwxMCArMjQ3LDExIEBACiAgICAgUHlPYmplY3QgKmZfc3RkZXJyOwogICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGNoYXIgbGluZW5vX3N0clsxMjhdOworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKIAogICAgIFB5T1Nfc25wcmludGYobGluZW5vX3N0ciwgc2l6ZW9mKGxpbmVub19zdHIpLCAiOiVkOiAiLCBsaW5lbm8pOwogCi0gICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2F0ZWdvcnksICJfX25hbWVfXyIpOworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNhdGVnb3J5LCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgIC8qIFhYWCBDYW4gYW4gb2JqZWN0IGxhY2sgYSAnX19uYW1lX18nIGF0dHJpYnV0ZT8gKi8KICAgICAgICAgcmV0dXJuOwogCkBAIC00MDksMTAgKzQxMSwxMCBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICAgICAgICAgIGlmICghUHlNZXRob2RfQ2hlY2soc2hvd19meG4pICYmICFQeUZ1bmN0aW9uX0NoZWNrKHNob3dfZnhuKSkgeworICAgICAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZnhuKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSIpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7CiAgICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgICAgICAgICAgfQpAQCAtNDk3LDE4ICs0OTksMjggQEAKICAgICAvKiBTZXR1cCBmaWxlbmFtZS4gKi8KICAgICAqZmlsZW5hbWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnbG9iYWxzLCAiX19maWxlX18iKTsKICAgICBpZiAoKmZpbGVuYW1lICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKCpmaWxlbmFtZSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZSgqZmlsZW5hbWUpOwotICAgICAgICBQeV9VTklDT0RFICp1bmljb2RlID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKmZpbGVuYW1lKTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoKmZpbGVuYW1lKSkKKyAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOworCisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgoKmZpbGVuYW1lKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKCpmaWxlbmFtZSk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSgqZmlsZW5hbWUpOworCisjZGVmaW5lIGFzY2lpX2xvd2VyKGMpICgoYyA8PSAxMjcpID8gUHlfVE9MT1dFUihjKSA6IDApCiAgICAgICAgIC8qIGlmIGZpbGVuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCIucHljIiwgIi5weW8iKSk6ICovCiAgICAgICAgIGlmIChsZW4gPj0gNCAmJgotICAgICAgICAgICAgdW5pY29kZVtsZW4tNF0gPT0gJy4nICYmCi0gICAgICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tM10pID09ICdwJyAmJgotICAgICAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTJdKSA9PSAneScgJiYKLSAgICAgICAgICAgIChQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tMV0pID09ICdjJyB8fAotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0xXSkgPT0gJ28nKSkKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi00KSA9PSAnLicgJiYKKyAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0zKSkgPT0gJ3AnICYmCisgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMikpID09ICd5JyAmJgorICAgICAgICAgICAgKGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ2MnIHx8CisgICAgICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnbycpKQogICAgICAgICB7Ci0gICAgICAgICAgICAqZmlsZW5hbWUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodW5pY29kZSwgbGVuLTEpOworICAgICAgICAgICAgKmZpbGVuYW1lID0gUHlVbmljb2RlX1N1YnN0cmluZygqZmlsZW5hbWUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKCpmaWxlbmFtZSktMSk7CiAgICAgICAgICAgICBpZiAoKmZpbGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CiAgICAgICAgIH0KQEAgLTY0Myw4ICs2NTUsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGVfZ2xvYmFscykgewotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKmdldF9zb3VyY2VfbmFtZSA9IE5VTEw7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqc3BsaXRsaW5lc19uYW1lID0gTlVMTDsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZ2V0X3NvdXJjZSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNwbGl0bGluZXMpOworICAgICAgICBQeU9iamVjdCAqdG1wOwogICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwogICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWU7CiAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2U7CkBAIC02NTIsMTYgKzY2NSwxMCBAQAogICAgICAgICBQeU9iamVjdCAqc291cmNlX2xpbmU7CiAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5lZDsKIAotICAgICAgICBpZiAoZ2V0X3NvdXJjZV9uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdldF9zb3VyY2VfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJnZXRfc291cmNlIik7Ci0gICAgICAgICAgICBpZiAoIWdldF9zb3VyY2VfbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3BsaXRsaW5lc19uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNwbGl0bGluZXNfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJzcGxpdGxpbmVzIik7Ci0gICAgICAgICAgICBpZiAoIXNwbGl0bGluZXNfbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBpZiAoKHRtcCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2dldF9zb3VyY2UpKSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICgodG1wID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfc3BsaXRsaW5lcykpID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICAvKiBDaGVjay9nZXQgdGhlIHJlcXVpc2l0ZSBwaWVjZXMgbmVlZGVkIGZvciB0aGUgbG9hZGVyLiAqLwogICAgICAgICBsb2FkZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVfZ2xvYmFscywgIl9fbG9hZGVyX18iKTsKQEAgLTY3MSwxMSArNjc4LDExIEBACiAgICAgICAgICAgICBnb3RvIHN0YW5kYXJkX2NhbGw7CiAKICAgICAgICAgLyogTWFrZSBzdXJlIHRoZSBsb2FkZXIgaW1wbGVtZW50cyB0aGUgb3B0aW9uYWwgZ2V0X3NvdXJjZSgpIG1ldGhvZC4gKi8KLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGxvYWRlciwgImdldF9zb3VyY2UiKSkKKyAgICAgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKGxvYWRlciwgJlB5SWRfZ2V0X3NvdXJjZSkpCiAgICAgICAgICAgICAgICAgZ290byBzdGFuZGFyZF9jYWxsOwogICAgICAgICAvKiBDYWxsIGdldF9zb3VyY2UoKSB0byBnZXQgdGhlIHNvdXJjZSBjb2RlLiAqLwotICAgICAgICBzb3VyY2UgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhsb2FkZXIsIGdldF9zb3VyY2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBOVUxMKTsKKyAgICAgICAgc291cmNlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MobG9hZGVyLCBQeUlkX2dldF9zb3VyY2Uub2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSwgTlVMTCk7CiAgICAgICAgIGlmICghc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBQeV9Ob25lKSB7CkBAIC02ODQsOCArNjkxLDkgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIFNwbGl0IHRoZSBzb3VyY2UgaW50byBsaW5lcy4gKi8KLSAgICAgICAgc291cmNlX2xpc3QgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzb3VyY2UsIHNwbGl0bGluZXNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgc291cmNlX2xpc3QgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlJZF9zcGxpdGxpbmVzLm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZSk7CiAgICAgICAgIGlmICghc291cmNlX2xpc3QpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTk1MCwyMyArOTU4LDMwIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfZmlsdGVycyA9IGluaXRfZmlsdGVycygpOwotICAgIGlmIChfZmlsdGVycyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX2ZpbHRlcnMgPT0gTlVMTCkgeworICAgICAgICBfZmlsdGVycyA9IGluaXRfZmlsdGVycygpOworICAgICAgICBpZiAoX2ZpbHRlcnMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeV9JTkNSRUYoX2ZpbHRlcnMpOwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImZpbHRlcnMiLCBfZmlsdGVycykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9vbmNlX3JlZ2lzdHJ5ID0gUHlEaWN0X05ldygpOwotICAgIGlmIChfb25jZV9yZWdpc3RyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX29uY2VfcmVnaXN0cnkgPT0gTlVMTCkgeworICAgICAgICBfb25jZV9yZWdpc3RyeSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKF9vbmNlX3JlZ2lzdHJ5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgUHlfSU5DUkVGKF9vbmNlX3JlZ2lzdHJ5KTsKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfb25jZXJlZ2lzdHJ5IiwgX29uY2VfcmVnaXN0cnkpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBfZGVmYXVsdF9hY3Rpb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiZGVmYXVsdCIpOwotICAgIGlmIChfZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9kZWZhdWx0X2FjdGlvbiA9PSBOVUxMKSB7CisgICAgICAgIF9kZWZhdWx0X2FjdGlvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJkZWZhdWx0Iik7CisgICAgICAgIGlmIChfZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoX2RlZmF1bHRfYWN0aW9uKTsKICAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfZGVmYXVsdGFjdGlvbiIsIF9kZWZhdWx0X2FjdGlvbikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IGMzMGQ3ZDIwLi5lN2UzMjgwIDEwMDY0NAotLS0gYS9QeXRob24vYXNkbC5jCisrKyBiL1B5dGhvbi9hc2RsLmMKQEAgLTIsNyArMiw3IEBACiAjaW5jbHVkZSAiYXNkbC5oIgogCiBhc2RsX3NlcSAqCi1hc2RsX3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKQorYXNkbF9zZXFfbmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgYXNkbF9zZXEgKnNlcSA9IE5VTEw7CiAgICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CkBAIC0zMyw3ICszMyw3IEBACiB9CiAKIGFzZGxfaW50X3NlcSAqCi1hc2RsX2ludF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSkKK2FzZGxfaW50X3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX2ludF9zZXEgKnNlcSA9IE5VTEw7CiAgICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggZDJmMDYzYi4uMGMwYzFhNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMSwyNCArMSw1MDcgQEAKIC8qCiAgKiBUaGlzIGZpbGUgaW5jbHVkZXMgZnVuY3Rpb25zIHRvIHRyYW5zZm9ybSBhIGNvbmNyZXRlIHN5bnRheCB0cmVlIChDU1QpIHRvCi0gKiBhbiBhYnN0cmFjdCBzeW50YXggdHJlZSAoQVNUKS4gIFRoZSBtYWluIGZ1bmN0aW9uIGlzIFB5QVNUX0Zyb21Ob2RlKCkuCisgKiBhbiBhYnN0cmFjdCBzeW50YXggdHJlZSAoQVNUKS4gVGhlIG1haW4gZnVuY3Rpb24gaXMgUHlBU1RfRnJvbU5vZGUoKS4KICAqCiAgKi8KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJQeXRob24tYXN0LmgiCi0jaW5jbHVkZSAiZ3JhbW1hci5oIgogI2luY2x1ZGUgIm5vZGUuaCIKICNpbmNsdWRlICJhc3QuaCIKICNpbmNsdWRlICJ0b2tlbi5oIgotI2luY2x1ZGUgInBhcnNldG9rLmgiCi0jaW5jbHVkZSAiZ3JhbWluaXQuaCIKIAogI2luY2x1ZGUgPGFzc2VydC5oPgogCitzdGF0aWMgaW50IHZhbGlkYXRlX3N0bXRzKGFzZGxfc2VxICopOworc3RhdGljIGludCB2YWxpZGF0ZV9leHBycyhhc2RsX3NlcSAqLCBleHByX2NvbnRleHRfdHksIGludCk7CitzdGF0aWMgaW50IHZhbGlkYXRlX25vbmVtcHR5X3NlcShhc2RsX3NlcSAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CitzdGF0aWMgaW50IHZhbGlkYXRlX3N0bXQoc3RtdF90eSk7CitzdGF0aWMgaW50IHZhbGlkYXRlX2V4cHIoZXhwcl90eSwgZXhwcl9jb250ZXh0X3R5KTsKKworc3RhdGljIGludAordmFsaWRhdGVfY29tcHJlaGVuc2lvbihhc2RsX3NlcSAqZ2VucykKK3sKKyAgICBpbnQgaTsKKyAgICBpZiAoIWFzZGxfc2VxX0xFTihnZW5zKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNvbXByZWhlbnNpb24gd2l0aCBubyBnZW5lcmF0b3JzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGdlbnMpOyBpKyspIHsKKyAgICAgICAgY29tcHJlaGVuc2lvbl90eSBjb21wID0gYXNkbF9zZXFfR0VUKGdlbnMsIGkpOworICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoY29tcC0+dGFyZ2V0LCBTdG9yZSkgfHwKKyAgICAgICAgICAgICF2YWxpZGF0ZV9leHByKGNvbXAtPml0ZXIsIExvYWQpIHx8CisgICAgICAgICAgICAhdmFsaWRhdGVfZXhwcnMoY29tcC0+aWZzLCBMb2FkLCAwKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfc2xpY2Uoc2xpY2VfdHkgc2xpY2UpCit7CisgICAgc3dpdGNoIChzbGljZS0+a2luZCkgeworICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgcmV0dXJuICghc2xpY2UtPnYuU2xpY2UubG93ZXIgfHwgdmFsaWRhdGVfZXhwcihzbGljZS0+di5TbGljZS5sb3dlciwgTG9hZCkpICYmCisgICAgICAgICAgICAoIXNsaWNlLT52LlNsaWNlLnVwcGVyIHx8IHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuU2xpY2UudXBwZXIsIExvYWQpKSAmJgorICAgICAgICAgICAgKCFzbGljZS0+di5TbGljZS5zdGVwIHx8IHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuU2xpY2Uuc3RlcCwgTG9hZCkpOworICAgIGNhc2UgRXh0U2xpY2Vfa2luZDogeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc2xpY2UtPnYuRXh0U2xpY2UuZGltcywgImRpbXMiLCAiRXh0U2xpY2UiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNsaWNlLT52LkV4dFNsaWNlLmRpbXMpOyBpKyspCisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX3NsaWNlKGFzZGxfc2VxX0dFVChzbGljZS0+di5FeHRTbGljZS5kaW1zLCBpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHNsaWNlLT52LkluZGV4LnZhbHVlLCBMb2FkKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmtub3duIHNsaWNlIG5vZGUiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9rZXl3b3Jkcyhhc2RsX3NlcSAqa2V5d29yZHMpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7IGkrKykKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKCgoa2V5d29yZF90eSlhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpKS0+dmFsdWUsIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FyZ3MoYXNkbF9zZXEgKmFyZ3MpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihhcmdzKTsgaSsrKSB7CisgICAgICAgIGFyZ190eSBhcmcgPSBhc2RsX3NlcV9HRVQoYXJncywgaSk7CisgICAgICAgIGlmIChhcmctPmFubm90YXRpb24gJiYgIXZhbGlkYXRlX2V4cHIoYXJnLT5hbm5vdGF0aW9uLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorZXhwcl9jb250ZXh0X25hbWUoZXhwcl9jb250ZXh0X3R5IGN0eCkKK3sKKyAgICBzd2l0Y2ggKGN0eCkgeworICAgIGNhc2UgTG9hZDoKKyAgICAgICAgcmV0dXJuICJMb2FkIjsKKyAgICBjYXNlIFN0b3JlOgorICAgICAgICByZXR1cm4gIlN0b3JlIjsKKyAgICBjYXNlIERlbDoKKyAgICAgICAgcmV0dXJuICJEZWwiOworICAgIGNhc2UgQXVnTG9hZDoKKyAgICAgICAgcmV0dXJuICJBdWdMb2FkIjsKKyAgICBjYXNlIEF1Z1N0b3JlOgorICAgICAgICByZXR1cm4gIkF1Z1N0b3JlIjsKKyAgICBjYXNlIFBhcmFtOgorICAgICAgICByZXR1cm4gIlBhcmFtIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAiKHVua25vd24pIjsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2FyZ3VtZW50cyhhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+YXJncykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChhcmdzLT52YXJhcmdhbm5vdGF0aW9uKSB7CisgICAgICAgIGlmICghYXJncy0+dmFyYXJnKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInZhcmFyZ2Fubm90YXRpb24gYnV0IG5vIHZhcmFyZyBvbiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihhcmdzLT52YXJhcmdhbm5vdGF0aW9uLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+a3dvbmx5YXJncykpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChhcmdzLT5rd2FyZ2Fubm90YXRpb24pIHsKKyAgICAgICAgaWYgKCFhcmdzLT5rd2FyZykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJrd2FyZ2Fubm90YXRpb24gYnV0IG5vIGt3YXJnIG9uIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGFyZ3MtPmt3YXJnYW5ub3RhdGlvbiwgTG9hZCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykgPiBhc2RsX3NlcV9MRU4oYXJncy0+YXJncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtb3JlIHBvc2l0aW9uYWwgZGVmYXVsdHMgdGhhbiBhcmdzIG9uIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGFzZGxfc2VxX0xFTihhcmdzLT5rd19kZWZhdWx0cykgIT0gYXNkbF9zZXFfTEVOKGFyZ3MtPmt3b25seWFyZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibGVuZ3RoIG9mIGt3b25seWFyZ3MgaXMgbm90IHRoZSBzYW1lIGFzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJrd19kZWZhdWx0cyBvbiBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhhcmdzLT5kZWZhdWx0cywgTG9hZCwgMCkgJiYgdmFsaWRhdGVfZXhwcnMoYXJncy0+a3dfZGVmYXVsdHMsIExvYWQsIDEpOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9leHByKGV4cHJfdHkgZXhwLCBleHByX2NvbnRleHRfdHkgY3R4KQoreworICAgIGludCBjaGVja19jdHggPSAxOworICAgIGV4cHJfY29udGV4dF90eSBhY3R1YWxfY3R4OworCisgICAgLyogRmlyc3QgY2hlY2sgZXhwcmVzc2lvbiBjb250ZXh0LiAqLworICAgIHN3aXRjaCAoZXhwLT5raW5kKSB7CisgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5BdHRyaWJ1dGUuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LlN1YnNjcmlwdC5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3RhcnJlZF9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LlN0YXJyZWQuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5hbWVfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5OYW1lLmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXN0X2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuTGlzdC5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVHVwbGVfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5UdXBsZS5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChjdHggIT0gTG9hZCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJleHByZXNzaW9uIHdoaWNoIGNhbid0IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzaWduZWQgdG8gaW4gJXMgY29udGV4dCIsIGV4cHJfY29udGV4dF9uYW1lKGN0eCkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tfY3R4ID0gMDsKKyAgICB9CisgICAgaWYgKGNoZWNrX2N0eCAmJiBhY3R1YWxfY3R4ICE9IGN0eCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImV4cHJlc3Npb24gbXVzdCBoYXZlICVzIGNvbnRleHQgYnV0IGhhcyAlcyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF9uYW1lKGN0eCksIGV4cHJfY29udGV4dF9uYW1lKGFjdHVhbF9jdHgpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogTm93IHZhbGlkYXRlIGV4cHJlc3Npb24uICovCisgICAgc3dpdGNoIChleHAtPmtpbmQpIHsKKyAgICBjYXNlIEJvb2xPcF9raW5kOgorICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGV4cC0+di5Cb29sT3AudmFsdWVzKSA8IDIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQm9vbE9wIHdpdGggbGVzcyB0aGFuIDIgdmFsdWVzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkJvb2xPcC52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgQmluT3Bfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkJpbk9wLmxlZnQsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5CaW5PcC5yaWdodCwgTG9hZCk7CisgICAgY2FzZSBVbmFyeU9wX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5VbmFyeU9wLm9wZXJhbmQsIExvYWQpOworICAgIGNhc2UgTGFtYmRhX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9hcmd1bWVudHMoZXhwLT52LkxhbWJkYS5hcmdzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuTGFtYmRhLmJvZHksIExvYWQpOworICAgIGNhc2UgSWZFeHBfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LklmRXhwLnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5JZkV4cC5ib2R5LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuSWZFeHAub3JlbHNlLCBMb2FkKTsKKyAgICBjYXNlIERpY3Rfa2luZDoKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihleHAtPnYuRGljdC5rZXlzKSAhPSBhc2RsX3NlcV9MRU4oZXhwLT52LkRpY3QudmFsdWVzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3QgZG9lc24ndCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBrZXlzIGFzIHZhbHVlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LmtleXMsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgU2V0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuU2V0LmVsdHMsIExvYWQsIDApOworI2RlZmluZSBDT01QKE5BTUUpIFwKKyAgICAgICAgY2FzZSBOQU1FICMjIF9raW5kOiBcCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfY29tcHJlaGVuc2lvbihleHAtPnYuTkFNRS5nZW5lcmF0b3JzKSAmJiBcCisgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuTkFNRS5lbHQsIExvYWQpOworICAgIENPTVAoTGlzdENvbXApCisgICAgQ09NUChTZXRDb21wKQorICAgIENPTVAoR2VuZXJhdG9yRXhwKQorI3VuZGVmIENPTVAKKyAgICBjYXNlIERpY3RDb21wX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9jb21wcmVoZW5zaW9uKGV4cC0+di5EaWN0Q29tcC5nZW5lcmF0b3JzKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuRGljdENvbXAua2V5LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuRGljdENvbXAudmFsdWUsIExvYWQpOworICAgIGNhc2UgWWllbGRfa2luZDoKKyAgICAgICAgcmV0dXJuICFleHAtPnYuWWllbGQudmFsdWUgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuWWllbGQudmFsdWUsIExvYWQpOworICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CisgICAgICAgIHJldHVybiAhZXhwLT52LllpZWxkRnJvbS52YWx1ZSB8fAorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuWWllbGRGcm9tLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIENvbXBhcmVfa2luZDoKKyAgICAgICAgaWYgKCFhc2RsX3NlcV9MRU4oZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXBhcmUgd2l0aCBubyBjb21wYXJhdG9ycyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihleHAtPnYuQ29tcGFyZS5jb21wYXJhdG9ycykgIT0KKyAgICAgICAgICAgIGFzZGxfc2VxX0xFTihleHAtPnYuQ29tcGFyZS5vcHMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXBhcmUgaGFzIGEgZGlmZmVyZW50IG51bWJlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIGNvbXBhcmF0b3JzIGFuZCBvcGVyYW5kcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5Db21wYXJlLmNvbXBhcmF0b3JzLCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihleHAtPnYuQ29tcGFyZS5sZWZ0LCBMb2FkKTsKKyAgICBjYXNlIENhbGxfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuZnVuYywgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5DYWxsLmFyZ3MsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhleHAtPnYuQ2FsbC5rZXl3b3JkcykgJiYKKyAgICAgICAgICAgICghZXhwLT52LkNhbGwuc3RhcmFyZ3MgfHwgdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5zdGFyYXJncywgTG9hZCkpICYmCisgICAgICAgICAgICAoIWV4cC0+di5DYWxsLmt3YXJncyB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmt3YXJncywgTG9hZCkpOworICAgIGNhc2UgTnVtX2tpbmQ6IHsKKyAgICAgICAgUHlPYmplY3QgKm4gPSBleHAtPnYuTnVtLm47CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrRXhhY3QobikgJiYgIVB5RmxvYXRfQ2hlY2tFeGFjdChuKSAmJgorICAgICAgICAgICAgIVB5Q29tcGxleF9DaGVja0V4YWN0KG4pKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibm9uLW51bWVyaWMgdHlwZSBpbiBOdW0iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIFN0cl9raW5kOiB7CisgICAgICAgIFB5T2JqZWN0ICpzID0gZXhwLT52LlN0ci5zOworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KHMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibm9uLXN0cmluZyB0eXBlIGluIFN0ciIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgQnl0ZXNfa2luZDogeworICAgICAgICBQeU9iamVjdCAqYiA9IGV4cC0+di5CeXRlcy5zOworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChiKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5vbi1ieXRlcyB0eXBlIGluIEJ5dGVzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkF0dHJpYnV0ZS52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3NsaWNlKGV4cC0+di5TdWJzY3JpcHQuc2xpY2UpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5TdWJzY3JpcHQudmFsdWUsIExvYWQpOworICAgIGNhc2UgU3RhcnJlZF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuU3RhcnJlZC52YWx1ZSwgY3R4KTsKKyAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5MaXN0LmVsdHMsIGN0eCwgMCk7CisgICAgY2FzZSBUdXBsZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LlR1cGxlLmVsdHMsIGN0eCwgMCk7CisgICAgLyogVGhlc2UgbGFzdCBjYXNlcyBkb24ndCBoYXZlIGFueSBjaGVja2luZy4gKi8KKyAgICBjYXNlIE5hbWVfa2luZDoKKyAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVuZXhwZWN0ZWQgZXhwcmVzc2lvbiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX25vbmVtcHR5X3NlcShhc2RsX3NlcSAqc2VxLCBjb25zdCBjaGFyICp3aGF0LCBjb25zdCBjaGFyICpvd25lcikKK3sKKyAgICBpZiAoYXNkbF9zZXFfTEVOKHNlcSkpCisgICAgICAgIHJldHVybiAxOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiZW1wdHkgJXMgb24gJXMiLCB3aGF0LCBvd25lcik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2Fzc2lnbmxpc3QoYXNkbF9zZXEgKnRhcmdldHMsIGV4cHJfY29udGV4dF90eSBjdHgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcSh0YXJnZXRzLCAidGFyZ2V0cyIsIGN0eCA9PSBEZWwgPyAiRGVsZXRlIiA6ICJBc3NpZ24iKSAmJgorICAgICAgICB2YWxpZGF0ZV9leHBycyh0YXJnZXRzLCBjdHgsIDApOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ib2R5KGFzZGxfc2VxICpib2R5LCBjb25zdCBjaGFyICpvd25lcikKK3sKKyAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKGJvZHksICJib2R5Iiwgb3duZXIpICYmIHZhbGlkYXRlX3N0bXRzKGJvZHkpOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9zdG10KHN0bXRfdHkgc3RtdCkKK3sKKyAgICBpbnQgaTsKKyAgICBzd2l0Y2ggKHN0bXQtPmtpbmQpIHsKKyAgICBjYXNlIEZ1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuRnVuY3Rpb25EZWYuYm9keSwgIkZ1bmN0aW9uRGVmIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2FyZ3VtZW50cyhzdG10LT52LkZ1bmN0aW9uRGVmLmFyZ3MpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0LCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkZ1bmN0aW9uRGVmLnJldHVybnMgfHwKKyAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRnVuY3Rpb25EZWYucmV0dXJucywgTG9hZCkpOworICAgIGNhc2UgQ2xhc3NEZWZfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5DbGFzc0RlZi5ib2R5LCAiQ2xhc3NEZWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5iYXNlcywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKHN0bXQtPnYuQ2xhc3NEZWYua2V5d29yZHMpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0LCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkNsYXNzRGVmLnN0YXJhcmdzIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5DbGFzc0RlZi5zdGFyYXJncywgTG9hZCkpICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuQ2xhc3NEZWYua3dhcmdzIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5DbGFzc0RlZi5rd2FyZ3MsIExvYWQpKTsKKyAgICBjYXNlIFJldHVybl9raW5kOgorICAgICAgICByZXR1cm4gIXN0bXQtPnYuUmV0dXJuLnZhbHVlIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SZXR1cm4udmFsdWUsIExvYWQpOworICAgIGNhc2UgRGVsZXRlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9hc3NpZ25saXN0KHN0bXQtPnYuRGVsZXRlLnRhcmdldHMsIERlbCk7CisgICAgY2FzZSBBc3NpZ25fa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2Fzc2lnbmxpc3Qoc3RtdC0+di5Bc3NpZ24udGFyZ2V0cywgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXNzaWduLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi50YXJnZXQsIFN0b3JlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBGb3Jfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IudGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IuaXRlciwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5Gb3IuYm9keSwgIkZvciIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LkZvci5vcmVsc2UpOworICAgIGNhc2UgV2hpbGVfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5XaGlsZS50ZXN0LCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LldoaWxlLmJvZHksICJXaGlsZSIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LldoaWxlLm9yZWxzZSk7CisgICAgY2FzZSBJZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LklmLnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuSWYuYm9keSwgIklmIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuSWYub3JlbHNlKTsKKyAgICBjYXNlIFdpdGhfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5XaXRoLml0ZW1zLCAiaXRlbXMiLCAiV2l0aCIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc3RtdC0+di5XaXRoLml0ZW1zKTsgaSsrKSB7CisgICAgICAgICAgICB3aXRoaXRlbV90eSBpdGVtID0gYXNkbF9zZXFfR0VUKHN0bXQtPnYuV2l0aC5pdGVtcywgaSk7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoaXRlbS0+Y29udGV4dF9leHByLCBMb2FkKSB8fAorICAgICAgICAgICAgICAgIChpdGVtLT5vcHRpb25hbF92YXJzICYmICF2YWxpZGF0ZV9leHByKGl0ZW0tPm9wdGlvbmFsX3ZhcnMsIFN0b3JlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5XaXRoLmJvZHksICJXaXRoIik7CisgICAgY2FzZSBSYWlzZV9raW5kOgorICAgICAgICBpZiAoc3RtdC0+di5SYWlzZS5leGMpIHsKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmFpc2UuZXhjLCBMb2FkKSAmJgorICAgICAgICAgICAgICAgICghc3RtdC0+di5SYWlzZS5jYXVzZSB8fCB2YWxpZGF0ZV9leHByKHN0bXQtPnYuUmFpc2UuY2F1c2UsIExvYWQpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RtdC0+di5SYWlzZS5jYXVzZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJSYWlzZSB3aXRoIGNhdXNlIGJ1dCBubyBleGNlcHRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfYm9keShzdG10LT52LlRyeS5ib2R5LCAiVHJ5IikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuaGFuZGxlcnMpICYmCisgICAgICAgICAgICAhYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmZpbmFsYm9keSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiVHJ5IGhhcyBuZWl0aGVyIGV4Y2VwdCBoYW5kbGVycyBub3IgZmluYWxib2R5Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5oYW5kbGVycykgJiYKKyAgICAgICAgICAgIGFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5vcmVsc2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlRyeSBoYXMgb3JlbHNlIGJ1dCBubyBleGNlcHQgaGFuZGxlcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuaGFuZGxlcnMpOyBpKyspIHsKKyAgICAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgaGFuZGxlciA9IGFzZGxfc2VxX0dFVChzdG10LT52LlRyeS5oYW5kbGVycywgaSk7CisgICAgICAgICAgICBpZiAoKGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci50eXBlICYmCisgICAgICAgICAgICAgICAgICF2YWxpZGF0ZV9leHByKGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci50eXBlLCBMb2FkKSkgfHwKKyAgICAgICAgICAgICAgICAhdmFsaWRhdGVfYm9keShoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIuYm9keSwgIkV4Y2VwdEhhbmRsZXIiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKCFhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuZmluYWxib2R5KSB8fAorICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuVHJ5LmZpbmFsYm9keSkpICYmCisgICAgICAgICAgICAoIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5vcmVsc2UpIHx8CisgICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5Ucnkub3JlbHNlKSk7CisgICAgY2FzZSBBc3NlcnRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3NlcnQudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5Bc3NlcnQubXNnIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3NlcnQubXNnLCBMb2FkKSk7CisgICAgY2FzZSBJbXBvcnRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LkltcG9ydC5uYW1lcywgIm5hbWVzIiwgIkltcG9ydCIpOworICAgIGNhc2UgSW1wb3J0RnJvbV9raW5kOgorICAgICAgICBpZiAoc3RtdC0+di5JbXBvcnRGcm9tLmxldmVsIDwgLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW1wb3J0RnJvbSBsZXZlbCBsZXNzIHRoYW4gLTEiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnRGcm9tLm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0RnJvbSIpOworICAgIGNhc2UgR2xvYmFsX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5HbG9iYWwubmFtZXMsICJuYW1lcyIsICJHbG9iYWwiKTsKKyAgICBjYXNlIE5vbmxvY2FsX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5Ob25sb2NhbC5uYW1lcywgIm5hbWVzIiwgIk5vbmxvY2FsIik7CisgICAgY2FzZSBFeHByX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRXhwci52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBQYXNzX2tpbmQ6CisgICAgY2FzZSBCcmVha19raW5kOgorICAgIGNhc2UgQ29udGludWVfa2luZDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAidW5leHBlY3RlZCBzdGF0ZW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9zdG10cyhhc2RsX3NlcSAqc2VxKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc2VxKTsgaSsrKSB7CisgICAgICAgIHN0bXRfdHkgc3RtdCA9IGFzZGxfc2VxX0dFVChzZXEsIGkpOworICAgICAgICBpZiAoc3RtdCkgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9zdG10KHN0bXQpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgZGlzYWxsb3dlZCBpbiBzdGF0ZW1lbnQgbGlzdCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2V4cHJzKGFzZGxfc2VxICpleHBycywgZXhwcl9jb250ZXh0X3R5IGN0eCwgaW50IG51bGxfb2spCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihleHBycyk7IGkrKykgeworICAgICAgICBleHByX3R5IGV4cHIgPSBhc2RsX3NlcV9HRVQoZXhwcnMsIGkpOworICAgICAgICBpZiAoZXhwcikgeworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGV4cHIsIGN0eCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIW51bGxfb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGRpc2FsbG93ZWQgaW4gZXhwcmVzc2lvbiBsaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgfQorICAgIHJldHVybiAxOworfQorCitpbnQKK1B5QVNUX1ZhbGlkYXRlKG1vZF90eSBtb2QpCit7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICBzd2l0Y2ggKG1vZC0+a2luZCkgeworICAgIGNhc2UgTW9kdWxlX2tpbmQ6CisgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXRzKG1vZC0+di5Nb2R1bGUuYm9keSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSW50ZXJhY3RpdmVfa2luZDoKKyAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdHMobW9kLT52LkludGVyYWN0aXZlLmJvZHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4cHJlc3Npb25fa2luZDoKKyAgICAgICAgcmVzID0gdmFsaWRhdGVfZXhwcihtb2QtPnYuRXhwcmVzc2lvbi5ib2R5LCBMb2FkKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdWl0ZV9raW5kOgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlN1aXRlIGlzIG5vdCB2YWxpZCBpbiB0aGUgQ1B5dGhvbiBjb21waWxlciIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbXBvc3NpYmxlIG1vZHVsZSBub2RlIik7CisgICAgICAgIHJlcyA9IDA7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisvKiBUaGlzIGlzIGRvbmUgaGVyZSwgc28gZGVmaW5lcyBsaWtlICJ0ZXN0IiBkb24ndCBpbnRlcmZlcmUgd2l0aCBBU1QgdXNlIGFib3ZlLiAqLworI2luY2x1ZGUgImdyYW1tYXIuaCIKKyNpbmNsdWRlICJwYXJzZXRvay5oIgorI2luY2x1ZGUgImdyYW1pbml0LmgiCisKIC8qIERhdGEgc3RydWN0dXJlIHVzZWQgaW50ZXJuYWxseSAqLwogc3RydWN0IGNvbXBpbGluZyB7CiAgICAgY2hhciAqY19lbmNvZGluZzsgLyogc291cmNlIGVuY29kaW5nICovCiAgICAgUHlBcmVuYSAqY19hcmVuYTsgLyogYXJlbmEgZm9yIGFsbG9jYXRpbmcgbWVtZW9yeSAqLwogICAgIGNvbnN0IGNoYXIgKmNfZmlsZW5hbWU7IC8qIGZpbGVuYW1lICovCisgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplOyAvKiBOb3JtYWxpemF0aW9uIGZ1bmN0aW9uIGZyb20gdW5pY29kZWRhdGEuICovCisgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplX2FyZ3M7IC8qIE5vcm1hbGl6YXRpb24gYXJndW1lbnQgdHVwbGUuICovCiB9OwogCiBzdGF0aWMgYXNkbF9zZXEgKnNlcV9mb3JfdGVzdGxpc3Qoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICopOwpAQCAtMzgsMTI3ICs1MjEsOTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYnl0ZXNtb2RlKTsKIAotI2lmbmRlZiBMSU5FTk8KLSNkZWZpbmUgTElORU5PKG4pICAgICAgICgobiktPm5fbGluZW5vKQotI2VuZGlmCi0KICNkZWZpbmUgQ09NUF9HRU5FWFAgICAwCiAjZGVmaW5lIENPTVBfTElTVENPTVAgMQogI2RlZmluZSBDT01QX1NFVENPTVAgIDIKIAorc3RhdGljIGludAoraW5pdF9ub3JtYWxpemF0aW9uKHN0cnVjdCBjb21waWxpbmcgKmMpCit7CisgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ1bmljb2RlZGF0YSIpOworICAgIGlmICghbSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYy0+Y19ub3JtYWxpemUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG0sICJub3JtYWxpemUiKTsKKyAgICBQeV9ERUNSRUYobSk7CisgICAgaWYgKCFjLT5jX25vcm1hbGl6ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYy0+Y19ub3JtYWxpemVfYXJncyA9IFB5X0J1aWxkVmFsdWUoIihzTikiLCAiTkZLQyIsIFB5X05vbmUpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYy0+Y19ub3JtYWxpemVfYXJncywgMSwgTlVMTCk7CisgICAgaWYgKCFjLT5jX25vcm1hbGl6ZV9hcmdzKSB7CisgICAgICAgIFB5X0NMRUFSKGMtPmNfbm9ybWFsaXplKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgaWRlbnRpZmllcgotbmV3X2lkZW50aWZpZXIoY29uc3QgY2hhciAqbiwgUHlBcmVuYSAqYXJlbmEpCituZXdfaWRlbnRpZmllcihjb25zdCBjaGFyICpuLCBzdHJ1Y3QgY29tcGlsaW5nICpjKQogewogICAgIFB5T2JqZWN0ICppZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KG4sIHN0cmxlbihuKSwgTlVMTCk7Ci0gICAgUHlfVU5JQ09ERSAqdTsKICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaWQpOworICAgIC8qIFB5VW5pY29kZV9EZWNvZGVVVEY4IHNob3VsZCBhbHdheXMgcmV0dXJuIGEgcmVhZHkgc3RyaW5nLiAqLworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkoaWQpKTsKICAgICAvKiBDaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUKICAgICAgICBpZGVudGlmaWVyOyBpZiBzbywgbm9ybWFsaXplIHRvIE5GS0MuICovCi0gICAgZm9yICg7ICp1OyB1KyspIHsKLSAgICAgICAgaWYgKCp1ID49IDEyOCkgewotICAgICAgICAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ1bmljb2RlZGF0YSIpOwotICAgICAgICAgICAgUHlPYmplY3QgKmlkMjsKLSAgICAgICAgICAgIGlmICghbSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlkMiA9IFB5T2JqZWN0X0NhbGxNZXRob2QobSwgIm5vcm1hbGl6ZSIsICJzTyIsICJORktDIiwgaWQpOwotICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgaWYgKCFpZDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoaWQpKSB7CisgICAgICAgIFB5T2JqZWN0ICppZDI7CisgICAgICAgIGlmICghYy0+Y19ub3JtYWxpemUgJiYgIWluaXRfbm9ybWFsaXphdGlvbihjKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGlkKTsKLSAgICAgICAgICAgIGlkID0gaWQyOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGMtPmNfbm9ybWFsaXplX2FyZ3MsIDEsIGlkKTsKKyAgICAgICAgaWQyID0gUHlPYmplY3RfQ2FsbChjLT5jX25vcm1hbGl6ZSwgYy0+Y19ub3JtYWxpemVfYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihpZCk7CisgICAgICAgIGlmICghaWQyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlkID0gaWQyOwogICAgIH0KICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmaWQpOwotICAgIFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIGlkKTsKKyAgICBQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIGlkKTsKICAgICByZXR1cm4gaWQ7CiB9CiAKLSNkZWZpbmUgTkVXX0lERU5USUZJRVIobikgbmV3X2lkZW50aWZpZXIoU1RSKG4pLCBjLT5jX2FyZW5hKQotCi0vKiBUaGlzIHJvdXRpbmUgcHJvdmlkZXMgYW4gaW52YWxpZCBvYmplY3QgZm9yIHRoZSBzeW50YXggZXJyb3IuCi0gICBUaGUgb3V0ZXJtb3N0IHJvdXRpbmUgbXVzdCB1bnBhY2sgdGhpcyBlcnJvciBhbmQgY3JlYXRlIHRoZQotICAgcHJvcGVyIG9iamVjdC4gIFdlIGRvIHRoaXMgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIHBhc3MKLSAgIHRoZSBmaWxlbmFtZSB0byBldmVyeXRoaW5nIGZ1bmN0aW9uLgotCi0gICBYWFggTWF5YmUgd2Ugc2hvdWxkIGp1c3QgcGFzcyB0aGUgZmlsZW5hbWUuLi4KLSovCisjZGVmaW5lIE5FV19JREVOVElGSUVSKG4pIG5ld19pZGVudGlmaWVyKFNUUihuKSwgYykKIAogc3RhdGljIGludAotYXN0X2Vycm9yKGNvbnN0IG5vZGUgKm4sIGNvbnN0IGNoYXIgKmVycnN0cikKK2FzdF9lcnJvcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBjb25zdCBjaGFyICplcnJtc2cpCiB7Ci0gICAgUHlPYmplY3QgKnUgPSBQeV9CdWlsZFZhbHVlKCJ6aWkiLCBlcnJzdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0KSwgKnNhdmU7Ci0gICAgaWYgKCF1KQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKgotICAgICAqIFByZXZlbnQgdGhlIGVycm9yIGZyb20gYmVpbmcgY2hhaW5lZC4gUHlFcnJfU2V0T2JqZWN0IHdpbGwgbm9ybWFsaXplIHRoZQotICAgICAqIGV4Y2VwdGlvbiBpbiBvcmRlciB0byBjaGFpbiBpdC4gYXN0X2Vycm9yX2ZpbmlzaCwgaG93ZXZlciwgcmVxdWlyZXMgdGhlCi0gICAgICogZXJyb3Igbm90IHRvIGJlIG5vcm1hbGl6ZWQuCi0gICAgICovCi0gICAgc2F2ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmV4Y192YWx1ZTsKLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5leGNfdmFsdWUgPSBOVUxMOwotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TeW50YXhFcnJvciwgdSk7Ci0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+ZXhjX3ZhbHVlID0gc2F2ZTsKLSAgICBQeV9ERUNSRUYodSk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1hc3RfZXJyb3JfZmluaXNoKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotewotICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YmFjaywgKmVycnN0ciwgKm9mZnNldCwgKmxvYywgKnRtcDsKKyAgICBQeU9iamVjdCAqdmFsdWUsICplcnJzdHIsICpsb2MsICp0bXA7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lX29iajsKLSAgICBsb25nIGxpbmVubzsKIAotICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKLSAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3ludGF4RXJyb3IpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBQeUVycl9GZXRjaCgmdHlwZSwgJnZhbHVlLCAmdGJhY2spOwotICAgIGVycnN0ciA9IFB5VHVwbGVfR2V0SXRlbSh2YWx1ZSwgMCk7Ci0gICAgaWYgKCFlcnJzdHIpCi0gICAgICAgIHJldHVybjsKLSAgICBQeV9JTkNSRUYoZXJyc3RyKTsKLSAgICBsaW5lbm8gPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR2V0SXRlbSh2YWx1ZSwgMSkpOwotICAgIGlmIChsaW5lbm8gPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGVycnN0cik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgb2Zmc2V0ID0gUHlUdXBsZV9HZXRJdGVtKHZhbHVlLCAyKTsKLSAgICBpZiAoIW9mZnNldCkgewotICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBQeV9ERUNSRUYodmFsdWUpOwotCi0gICAgbG9jID0gUHlFcnJfUHJvZ3JhbVRleHQoZmlsZW5hbWUsIGxpbmVubyk7CisgICAgbG9jID0gUHlFcnJfUHJvZ3JhbVRleHQoYy0+Y19maWxlbmFtZSwgTElORU5PKG4pKTsKICAgICBpZiAoIWxvYykgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIGxvYyA9IFB5X05vbmU7CiAgICAgfQotICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKQotICAgICAgICBmaWxlbmFtZV9vYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKLSAgICBlbHNlIHsKKyAgICBpZiAoYy0+Y19maWxlbmFtZSkgeworICAgICAgICBmaWxlbmFtZV9vYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGMtPmNfZmlsZW5hbWUpOworICAgICAgICBpZiAoIWZpbGVuYW1lX29iaikgeworICAgICAgICAgICAgUHlfREVDUkVGKGxvYyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgZmlsZW5hbWVfb2JqID0gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKGZpbGVuYW1lX29iaiAhPSBOVUxMKQotICAgICAgICB0bXAgPSBQeV9CdWlsZFZhbHVlKCIoTmxPTykiLCBmaWxlbmFtZV9vYmosIGxpbmVubywgb2Zmc2V0LCBsb2MpOwotICAgIGVsc2UKLSAgICAgICAgdG1wID0gTlVMTDsKLSAgICBQeV9ERUNSRUYobG9jKTsKLSAgICBpZiAoIXRtcCkgewotICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKLSAgICAgICAgcmV0dXJuOworICAgIHRtcCA9IFB5X0J1aWxkVmFsdWUoIihOaWlOKSIsIGZpbGVuYW1lX29iaiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGxvYyk7CisgICAgaWYgKCF0bXApCisgICAgICAgIHJldHVybiAwOworICAgIGVycnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGVycm1zZyk7CisgICAgaWYgKCFlcnJzdHIpIHsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICB2YWx1ZSA9IFB5VHVwbGVfUGFjaygyLCBlcnJzdHIsIHRtcCk7CiAgICAgUHlfREVDUkVGKGVycnN0cik7CiAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIFB5RXJyX1Jlc3RvcmUodHlwZSwgdmFsdWUsIHRiYWNrKTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N5bnRheEVycm9yLCB2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiAwOwogfQogCiAvKiBudW1fc3RtdHMoKSByZXR1cm5zIG51bWJlciBvZiBjb250YWluZWQgc3RhdGVtZW50cy4KQEAgLTIzNCwxMyArNjg2LDE3IEBACiAgICAgc3RtdF90eSBzOwogICAgIG5vZGUgKmNoOwogICAgIHN0cnVjdCBjb21waWxpbmcgYzsKKyAgICBtb2RfdHkgcmVzID0gTlVMTDsKIAorICAgIGMuY19hcmVuYSA9IGFyZW5hOworICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOworICAgIGMuY19ub3JtYWxpemUgPSBjLmNfbm9ybWFsaXplX2FyZ3MgPSBOVUxMOwogICAgIGlmIChmbGFncyAmJiBmbGFncy0+Y2ZfZmxhZ3MgJiBQeUNGX1NPVVJDRV9JU19VVEY4KSB7CiAgICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7CiAgICAgICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpIHsKICNpZiAwCi0gICAgICAgICAgICBhc3RfZXJyb3IobiwgImVuY29kaW5nIGRlY2xhcmF0aW9uIGluIFVuaWNvZGUgc3RyaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBvdXQ7CiAjZW5kaWYKICAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKICAgICAgICAgfQpAQCAtMjUxLDE1ICs3MDcsMTMgQEAKICAgICAgICAgLyogUEVQIDMxMjAgKi8KICAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKICAgICB9Ci0gICAgYy5jX2FyZW5hID0gYXJlbmE7Ci0gICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7CiAKICAgICBrID0gMDsKICAgICBzd2l0Y2ggKFRZUEUobikpIHsKICAgICAgICAgY2FzZSBmaWxlX2lucHV0OgogICAgICAgICAgICAgc3RtdHMgPSBhc2RsX3NlcV9uZXcobnVtX3N0bXRzKG4pLCBhcmVuYSk7CiAgICAgICAgICAgICBpZiAoIXN0bXRzKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKSAtIDE7IGkrKykgewogICAgICAgICAgICAgICAgIGNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgICAgICAgICAgaWYgKFRZUEUoY2gpID09IE5FV0xJTkUpCkBAIC0yNjksNyArNzIzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgcyA9IGFzdF9mb3Jfc3RtdCgmYywgY2gpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgaysrLCBzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC0yNzgsNDIgKzczMiw0NCBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbnVtOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBhc3RfZm9yX3N0bXQoJmMsIENISUxEKGNoLCBqICogMikpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIGsrKywgcyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTW9kdWxlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICByZXMgPSBNb2R1bGUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGV2YWxfaW5wdXQ6IHsKICAgICAgICAgICAgIGV4cHJfdHkgdGVzdGxpc3RfYXN0OwogCiAgICAgICAgICAgICAvKiBYWFggV2h5IG5vdCBjb21wX2ZvciBoZXJlPyAqLwogICAgICAgICAgICAgdGVzdGxpc3RfYXN0ID0gYXN0X2Zvcl90ZXN0bGlzdCgmYywgQ0hJTEQobiwgMCkpOwogICAgICAgICAgICAgaWYgKCF0ZXN0bGlzdF9hc3QpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIHJldHVybiBFeHByZXNzaW9uKHRlc3RsaXN0X2FzdCwgYXJlbmEpOworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgcmVzID0gRXhwcmVzc2lvbih0ZXN0bGlzdF9hc3QsIGFyZW5hKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugc2luZ2xlX2lucHV0OgogICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IE5FV0xJTkUpIHsKICAgICAgICAgICAgICAgICBzdG10cyA9IGFzZGxfc2VxX25ldygxLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdG10cykKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCAwLCBQYXNzKG4tPm5fbGluZW5vLCBuLT5uX2NvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZW5hKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFhc2RsX3NlcV9HRVQoc3RtdHMsIDApKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIHJldHVybiBJbnRlcmFjdGl2ZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgICAgICByZXMgPSBJbnRlcmFjdGl2ZShzdG10cywgYXJlbmEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgbiA9IENISUxEKG4sIDApOwogICAgICAgICAgICAgICAgIG51bSA9IG51bV9zdG10cyhuKTsKICAgICAgICAgICAgICAgICBzdG10cyA9IGFzZGxfc2VxX25ldyhudW0sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0bXRzKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICBpZiAobnVtID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgcyA9IGFzdF9mb3Jfc3RtdCgmYywgbik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCAwLCBzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7CkBAIC0zMjQsMjEgKzc4MCwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFzdF9mb3Jfc3RtdCgmYywgQ0hJTEQobiwgaSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIGkgLyAyLCBzKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHJldHVybiBJbnRlcmFjdGl2ZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgICAgIHJlcyA9IEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBub2RlICVkIGZvciBQeUFTVF9Gcm9tTm9kZSIsIFRZUEUobikpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KLSBlcnJvcjoKLSAgICBhc3RfZXJyb3JfZmluaXNoKGZpbGVuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKKyBvdXQ6CisgICAgaWYgKGMuY19ub3JtYWxpemUpIHsKKyAgICAgICAgUHlfREVDUkVGKGMuY19ub3JtYWxpemUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGMuY19ub3JtYWxpemVfYXJncywgMSwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihjLmNfbm9ybWFsaXplX2FyZ3MpOworICAgIH0KKyAgICByZXR1cm4gcmVzOwogfQogCiAvKiBSZXR1cm4gdGhlIEFTVCByZXByLiBvZiB0aGUgb3BlcmF0b3IgcmVwcmVzZW50ZWQgYXMgc3ludGF4ICh8LCBeLCBldGMuKQpAQCAtMzgzLDE4ICs4NDQsMTggQEAKIH07CiAKIHN0YXRpYyBpbnQKLWZvcmJpZGRlbl9uYW1lKGlkZW50aWZpZXIgbmFtZSwgY29uc3Qgbm9kZSAqbiwgaW50IGZ1bGxfY2hlY2tzKQorZm9yYmlkZGVuX25hbWUoc3RydWN0IGNvbXBpbGluZyAqYywgaWRlbnRpZmllciBuYW1lLCBjb25zdCBub2RlICpuLCBpbnQgZnVsbF9jaGVja3MpCiB7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhuYW1lKSk7CiAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2RlYnVnX18iKSA9PSAwKSB7Ci0gICAgICAgIGFzdF9lcnJvcihuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICBpZiAoZnVsbF9jaGVja3MpIHsKICAgICAgICAgY29uc3QgY2hhciAqKnA7CiAgICAgICAgIGZvciAocCA9IEZPUkJJRERFTjsgKnA7IHArKykgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICpwKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MzAsNyArODkxLDcgQEAKICAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKICAgICAgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKICAgICAgICAgICAgIGUtPnYuQXR0cmlidXRlLmN0eCA9IGN0eDsKLSAgICAgICAgICAgIGlmIChjdHggPT0gU3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoZS0+di5BdHRyaWJ1dGUuYXR0ciwgbiwgMSkpCisgICAgICAgICAgICBpZiAoY3R4ID09IFN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKGMsIGUtPnYuQXR0cmlidXRlLmF0dHIsIG4sIDEpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CkBAIC00NDMsNyArOTA0LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5hbWVfa2luZDoKICAgICAgICAgICAgIGlmIChjdHggPT0gU3RvcmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoZS0+di5OYW1lLmlkLCBuLCAxKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBuLCAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8qIGZvcmJpZGRlbl9uYW1lKCkgY2FsbHMgYXN0X2Vycm9yKCkgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGUtPnYuTmFtZS5jdHggPSBjdHg7CkBAIC00NzYsNiArOTM3LDcgQEAKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJnZW5lcmF0b3IgZXhwcmVzc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBZaWVsZF9raW5kOgorICAgICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gInlpZWxkIGV4cHJlc3Npb24iOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlzdENvbXBfa2luZDoKQEAgLTUxNiw3ICs5NzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCAlcyAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgY3R4ID09IFN0b3JlID8gImFzc2lnbiB0byIgOiAiZGVsZXRlIiwKICAgICAgICAgICAgICAgICAgICAgICBleHByX25hbWUpOwotICAgICAgICByZXR1cm4gYXN0X2Vycm9yKG4sIGJ1Zik7CisgICAgICAgIHJldHVybiBhc3RfZXJyb3IoYywgbiwgYnVmKTsKICAgICB9CiAKICAgICAvKiBJZiB0aGUgTEhTIGlzIGEgbGlzdCBvciB0dXBsZSwgd2UgbmVlZCB0byBzZXQgdGhlIGFzc2lnbm1lbnQKQEAgLTY2NCw3ICsxMTI2LDcgQEAKICAgICBuYW1lID0gTkVXX0lERU5USUZJRVIoY2gpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGZvcmJpZGRlbl9uYW1lKG5hbWUsIGNoLCAwKSkKKyAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgbmFtZSwgY2gsIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChOQ0gobikgPT0gMyAmJiBUWVBFKENISUxEKG4sIDEpKSA9PSBDT0xPTikgewpAQCAtNjk0LDcgKzExNTYsNyBAQAogICAgIGludCBqID0gMDsgLyogaW5kZXggZm9yIGt3ZGVmYXVsdHMgYW5kIGt3b25seWFyZ3MgKi8KIAogICAgIGlmIChrd29ubHlhcmdzID09IE5VTEwpIHsKLSAgICAgICAgYXN0X2Vycm9yKENISUxEKG4sIHN0YXJ0KSwgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKKyAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIHN0YXJ0KSwgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBhc3NlcnQoa3dkZWZhdWx0cyAhPSBOVUxMKTsKQEAgLTcyNiw3ICsxMTg4LDcgQEAKICAgICAgICAgICAgICAgICBhcmduYW1lID0gTkVXX0lERU5USUZJRVIoY2gpOwogICAgICAgICAgICAgICAgIGlmICghYXJnbmFtZSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYXJnbmFtZSwgY2gsIDApKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBhcmduYW1lLCBjaCwgMCkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgYXJnID0gYXJnKGFyZ25hbWUsIGFubm90YXRpb24sIGMtPmNfYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICghYXJnKQpAQCAtNzM3LDcgKzExOTksNyBAQAogICAgICAgICAgICAgY2FzZSBET1VCTEVTVEFSOgogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoY2gsICJ1bmV4cGVjdGVkIG5vZGUiKTsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJ1bmV4cGVjdGVkIG5vZGUiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQpAQCAtODI5LDcgKzEyOTEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChucG9zYXJncyArIG5rd29ubHlhcmdzID4gMjU1KSB7Ci0gICAgICAgIGFzdF9lcnJvcihuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJtb3JlIHRoYW4gMjU1IGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTg1Nyw3ICsxMzE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGVmYXVsdCA9IDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvdW5kX2RlZmF1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sCisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWRlZmF1bHQgYXJndW1lbnQgZm9sbG93cyBkZWZhdWx0IGFyZ3VtZW50Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTg2OSw3ICsxMzMxLDcgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU1RBUjoKICAgICAgICAgICAgICAgICBpZiAoaSsxID49IE5DSChuKSkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQobiwgaSksCisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChuLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTg4Niw3ICsxMzQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFyYXJnID0gTkVXX0lERU5USUZJRVIoQ0hJTEQoY2gsIDApKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJhcmcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKHZhcmFyZywgQ0hJTEQoY2gsIDApLCAwKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIHZhcmFyZywgQ0hJTEQoY2gsIDApLCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgICAgICBpZiAoTkNIKGNoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRoZXJlIGlzIGFuIGFubm90YXRpb24gb24gdGhlIHZhcmFyZyAqLwpAQCAtOTE3LDcgKzEzNzksNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoIWt3YXJnYW5ub3RhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoa3dhcmcsIENISUxEKGNoLCAwKSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGt3YXJnLCBDSElMRChjaCwgMCksIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDM2LDcgKzE0OTgsNyBAQAogICAgIG5hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCBuYW1lX2kpKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmb3JiaWRkZW5fbmFtZShuYW1lLCBDSElMRChuLCBuYW1lX2kpLCAwKSkKKyAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgbmFtZSwgQ0hJTEQobiwgbmFtZV9pKSwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFyZ3MgPSBhc3RfZm9yX2FyZ3VtZW50cyhjLCBDSElMRChuLCBuYW1lX2kgKyAxKSk7CiAgICAgaWYgKCFhcmdzKQpAQCAtMTM3NywxMCArMTgzOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsxMjhdOwogICAgICAgICAgICAgICAgICAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhlcnJzdHIpOwogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIodW5pY29kZSBlcnJvcikgJXMiLCBzKTsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sIGJ1Zik7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCBidWYpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgIih1bmljb2RlIGVycm9yKSB1bmtub3duIGVycm9yIik7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiKHVuaWNvZGUgZXJyb3IpIHVua25vd24gZXJyb3IiKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CkBAIC0xODk3LDEyICsyMzU5LDI1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9iaW5vcChjLCBuKTsKICAgICAgICAgY2FzZSB5aWVsZF9leHByOiB7CisgICAgICAgICAgICBub2RlICphbiA9IE5VTEw7CisgICAgICAgICAgICBub2RlICplbiA9IE5VTEw7CisgICAgICAgICAgICBpbnQgaXNfZnJvbSA9IDA7CiAgICAgICAgICAgICBleHByX3R5IGV4cCA9IE5VTEw7Ci0gICAgICAgICAgICBpZiAoTkNIKG4pID09IDIpIHsKLSAgICAgICAgICAgICAgICBleHAgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIENISUxEKG4sIDEpKTsKKyAgICAgICAgICAgIGlmIChOQ0gobikgPiAxKQorICAgICAgICAgICAgICAgIGFuID0gQ0hJTEQobiwgMSk7IC8qIHlpZWxkX2FyZyAqLworICAgICAgICAgICAgaWYgKGFuKSB7CisgICAgICAgICAgICAgICAgZW4gPSBDSElMRChhbiwgTkNIKGFuKSAtIDEpOworICAgICAgICAgICAgICAgIGlmIChOQ0goYW4pID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgaXNfZnJvbSA9IDE7CisgICAgICAgICAgICAgICAgICAgIGV4cCA9IGFzdF9mb3JfZXhwcihjLCBlbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBlbik7CiAgICAgICAgICAgICAgICAgaWYgKCFleHApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzX2Zyb20pCisgICAgICAgICAgICAgICAgcmV0dXJuIFlpZWxkRnJvbShleHAsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICAgICAgICAgIHJldHVybiBZaWVsZChleHAsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIGZhY3RvcjoKQEAgLTE5MjcsNyArMjQwMiw3IEBACiAgICAgLyoKICAgICAgIGFyZ2xpc3Q6IChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ118ICcqJyB0ZXN0IFsnLCcgJyoqJyB0ZXN0XQogICAgICAgICAgICAgICAgfCAnKionIHRlc3QpCi0gICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSB0ZXN0IFtjb21wX2Zvcl0gICAgICAgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdAorICAgICAgYXJndW1lbnQ6IFt0ZXN0ICc9J10gKHRlc3QpIFtjb21wX2Zvcl0gICAgICAgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdAogICAgICovCiAKICAgICBpbnQgaSwgbmFyZ3MsIG5rZXl3b3JkcywgbmdlbnM7CkBAIC0xOTUyLDE0ICsyNDI3LDE0IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG5nZW5zID4gMSB8fCAobmdlbnMgJiYgKG5hcmdzIHx8IG5rZXl3b3JkcykpKSB7Ci0gICAgICAgIGFzdF9lcnJvcihuLCAiR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkICIKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgIgogICAgICAgICAgICAgICAgICAgImlmIG5vdCBzb2xlIGFyZ3VtZW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChuYXJncyArIG5rZXl3b3JkcyArIG5nZW5zID4gMjU1KSB7Ci0gICAgICBhc3RfZXJyb3IobiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJtb3JlIHRoYW4gMjU1IGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBhcmdzID0gYXNkbF9zZXFfbmV3KG5hcmdzICsgbmdlbnMsIGMtPmNfYXJlbmEpOwpAQCAtMTk3NiwxMiArMjQ1MSwxMiBAQAogICAgICAgICAgICAgZXhwcl90eSBlOwogICAgICAgICAgICAgaWYgKE5DSChjaCkgPT0gMSkgewogICAgICAgICAgICAgICAgIGlmIChua2V5d29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24ta2V5d29yZCBhcmcgYWZ0ZXIga2V5d29yZCBhcmciKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh2YXJhcmcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IG5hbWVkIGFyZ3VtZW50cyBtYXkgZm9sbG93ICpleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTIwMTEsMTkgKzI0ODYsMTkgQEAKICAgICAgICAgICAgICAgICAgKiB0aGVuIGlzIHZlcnkgY29uZnVzaW5nLgogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIGlmIChlLT5raW5kID09IExhbWJkYV9raW5kKSB7Ci0gICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLT5raW5kICE9IE5hbWVfa2luZCkgewotICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JiaWRkZW5fbmFtZShlLT52Lk5hbWUuaWQsIGNoLCAxKSkgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJrZXl3b3JkIGNhbid0IGJlIGFuIGV4cHJlc3Npb24iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIGNoLCAxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAga2V5ID0gZS0+di5OYW1lLmlkOwogICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBua2V5d29yZHM7IGsrKykgewogICAgICAgICAgICAgICAgICAgICB0bXAgPSAoKGtleXdvcmRfdHkpYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBrKSktPmFyZzsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZSh0bXAsIGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksICJrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yMTE2LDcgKzI1OTEsNyBAQAogICAgICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGNoLCAiaWxsZWdhbCBleHByZXNzaW9uIGZvciBhdWdtZW50ZWQgYXNzaWdubWVudCIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwgImlsbGVnYWwgZXhwcmVzc2lvbiBmb3IgYXVnbWVudGVkIGFzc2lnbm1lbnQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCkBAIC0yMTQ5LDcgKzI2MjQsNyBAQAogICAgICAgICAgICAgZXhwcl90eSBlOwogICAgICAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgICAgIGlmIChUWVBFKGNoKSA9PSB5aWVsZF9leHByKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGNoLCAiYXNzaWdubWVudCB0byB5aWVsZCBleHByZXNzaW9uIG5vdCBwb3NzaWJsZSIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwgImFzc2lnbm1lbnQgdG8geWllbGQgZXhwcmVzc2lvbiBub3QgcG9zc2libGUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGUgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIGNoKTsKQEAgLTIyMjEsNyArMjY5Niw3IEBACiAgICAgICBjb250aW51ZV9zdG10OiAnY29udGludWUnCiAgICAgICByZXR1cm5fc3RtdDogJ3JldHVybicgW3Rlc3RsaXN0XQogICAgICAgeWllbGRfc3RtdDogeWllbGRfZXhwcgotICAgICAgeWllbGRfZXhwcjogJ3lpZWxkJyB0ZXN0bGlzdAorICAgICAgeWllbGRfZXhwcjogJ3lpZWxkJyB0ZXN0bGlzdCB8ICd5aWVsZCcgJ2Zyb20nIHRlc3QKICAgICAgIHJhaXNlX3N0bXQ6ICdyYWlzZScgW3Rlc3QgWycsJyB0ZXN0IFsnLCcgdGVzdF1dXQogICAgICovCiAgICAgbm9kZSAqY2g7CkBAIC0yMjk2LDExICsyNzcxLDExIEBACiAgICAgICAgICAgICAgICAgc3RyID0gTkVXX0lERU5USUZJRVIoc3RyX25vZGUpOwogICAgICAgICAgICAgICAgIGlmICghc3RyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoc3RyLCBzdHJfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKGMsIHN0ciwgc3RyX25vZGUsIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShuYW1lLCBuYW1lX25vZGUsIDApKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBuYW1lLCBuYW1lX25vZGUsIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhbGlhcyhuYW1lLCBzdHIsIGMtPmNfYXJlbmEpOwpAQCAtMjMxOSw3ICsyNzk0LDcgQEAKICAgICAgICAgICAgICAgICBhLT5hc25hbWUgPSBORVdfSURFTlRJRklFUihhc25hbWVfbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFhLT5hc25hbWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShhLT5hc25hbWUsIGFzbmFtZV9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgYS0+YXNuYW1lLCBhc25hbWVfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiBhOwogICAgICAgICAgICAgfQpAQCAtMjMzMCw3ICsyODA1LDcgQEAKICAgICAgICAgICAgICAgICBuYW1lID0gTkVXX0lERU5USUZJRVIobmFtZV9ub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIW5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChzdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShuYW1lLCBuYW1lX25vZGUsIDApKQorICAgICAgICAgICAgICAgIGlmIChzdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShjLCBuYW1lLCBuYW1lX25vZGUsIDApKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm4gYWxpYXMobmFtZSwgTlVMTCwgYy0+Y19hcmVuYSk7CiAgICAgICAgICAgICB9CkBAIC0yNDU5LDEzICsyOTM0LDEzIEBACiAgICAgICAgICAgICBuID0gQ0hJTEQobiwgaWR4KTsKICAgICAgICAgICAgIG5fY2hpbGRyZW4gPSBOQ0gobik7CiAgICAgICAgICAgICBpZiAobl9jaGlsZHJlbiAlIDIgPT0gMCkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAidHJhaWxpbmcgY29tbWEgbm90IGFsbG93ZWQgd2l0aG91dCIKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgInRyYWlsaW5nIGNvbW1hIG5vdCBhbGxvd2VkIHdpdGhvdXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3Vycm91bmRpbmcgcGFyZW50aGVzZXMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJVbmV4cGVjdGVkIG5vZGUtdHlwZSBpbiBmcm9tLWltcG9ydCIpOworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJVbmV4cGVjdGVkIG5vZGUtdHlwZSBpbiBmcm9tLWltcG9ydCIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtMjg3MSw3ICszMzQ2LDcgQEAKICAgICAgICAgaWRlbnRpZmllciBlID0gTkVXX0lERU5USUZJRVIoQ0hJTEQoZXhjLCAzKSk7CiAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoZSwgQ0hJTEQoZXhjLCAzKSwgMCkpCisgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLCBDSElMRChleGMsIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGV4YywgMSkpOwogICAgICAgICBpZiAoIWV4cHJlc3Npb24pCkBAIC0yODk1LDcgKzMzNzAsNyBAQAogewogICAgIGNvbnN0IGludCBuY2ggPSBOQ0gobik7CiAgICAgaW50IG5fZXhjZXB0ID0gKG5jaCAtIDMpLzM7Ci0gICAgYXNkbF9zZXEgKmJvZHksICpvcmVsc2UgPSBOVUxMLCAqZmluYWxseSA9IE5VTEw7CisgICAgYXNkbF9zZXEgKmJvZHksICpoYW5kbGVycyA9IE5VTEwsICpvcmVsc2UgPSBOVUxMLCAqZmluYWxseSA9IE5VTEw7CiAKICAgICBSRVEobiwgdHJ5X3N0bXQpOwogCkBAIC0yOTMwLDE1ICszNDA1LDE0IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoVFlQRShDSElMRChuLCBuY2ggLSAzKSkgIT0gZXhjZXB0X2NsYXVzZSkgewotICAgICAgICBhc3RfZXJyb3IobiwgIm1hbGZvcm1lZCAndHJ5JyBzdGF0ZW1lbnQiKTsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJtYWxmb3JtZWQgJ3RyeScgc3RhdGVtZW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChuX2V4Y2VwdCA+IDApIHsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIHN0bXRfdHkgZXhjZXB0X3N0OwogICAgICAgICAvKiBwcm9jZXNzIGV4Y2VwdCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZSBhIHRyeSAuLi4gZXhjZXB0ICovCi0gICAgICAgIGFzZGxfc2VxICpoYW5kbGVycyA9IGFzZGxfc2VxX25ldyhuX2V4Y2VwdCwgYy0+Y19hcmVuYSk7CisgICAgICAgIGhhbmRsZXJzID0gYXNkbF9zZXFfbmV3KG5fZXhjZXB0LCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKGhhbmRsZXJzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjk0OSwyOCArMzQyMywxNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGhhbmRsZXJzLCBpLCBlKTsKICAgICAgICAgfQotCi0gICAgICAgIGV4Y2VwdF9zdCA9IFRyeUV4Y2VwdChib2R5LCBoYW5kbGVycywgb3JlbHNlLCBMSU5FTk8obiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwotICAgICAgICBpZiAoIWZpbmFsbHkpCi0gICAgICAgICAgICByZXR1cm4gZXhjZXB0X3N0OwotCi0gICAgICAgIC8qIGlmIGEgJ2ZpbmFsbHknIGlzIHByZXNlbnQgdG9vLCB3ZSBuZXN0IHRoZSBUcnlFeGNlcHQgd2l0aGluIGEKLSAgICAgICAgICAgVHJ5RmluYWxseSB0byBlbXVsYXRlIHRyeSAuLi4gZXhjZXB0IC4uLiBmaW5hbGx5ICovCi0gICAgICAgIGJvZHkgPSBhc2RsX3NlcV9uZXcoMSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGlmIChib2R5ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIDAsIGV4Y2VwdF9zdCk7CiAgICAgfQogCi0gICAgLyogbXVzdCBiZSBhIHRyeSAuLi4gZmluYWxseSAoZXhjZXB0IGNsYXVzZXMgYXJlIGluIGJvZHksIGlmIGFueSBleGlzdCkgKi8KLSAgICBhc3NlcnQoZmluYWxseSAhPSBOVUxMKTsKLSAgICByZXR1cm4gVHJ5RmluYWxseShib2R5LCBmaW5hbGx5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgYXNzZXJ0KGZpbmFsbHkgIT0gTlVMTCB8fCBhc2RsX3NlcV9MRU4oaGFuZGxlcnMpKTsKKyAgICByZXR1cm4gVHJ5KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIGZpbmFsbHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKIH0KIAogLyogd2l0aF9pdGVtOiB0ZXN0IFsnYXMnIGV4cHJdICovCi1zdGF0aWMgc3RtdF90eQotYXN0X2Zvcl93aXRoX2l0ZW0oc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgYXNkbF9zZXEgKmNvbnRlbnQpCitzdGF0aWMgd2l0aGl0ZW1fdHkKK2FzdF9mb3Jfd2l0aF9pdGVtKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgZXhwcl90eSBjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMgPSBOVUxMOwogCkBAIC0yOTg5LDQzICszNDUwLDM0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gV2l0aChjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGNvbnRlbnQsIExJTkVOTyhuKSwKLSAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIHJldHVybiB3aXRoaXRlbShjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGMtPmNfYXJlbmEpOwogfQogCiAvKiB3aXRoX3N0bXQ6ICd3aXRoJyB3aXRoX2l0ZW0gKCcsJyB3aXRoX2l0ZW0pKiAnOicgc3VpdGUgKi8KIHN0YXRpYyBzdG10X3R5CiBhc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIGludCBpOwotICAgIHN0bXRfdHkgcmV0OwotICAgIGFzZGxfc2VxICppbm5lcjsKKyAgICBpbnQgaSwgbl9pdGVtczsKKyAgICBhc2RsX3NlcSAqaXRlbXMsICpib2R5OwogCiAgICAgUkVRKG4sIHdpdGhfc3RtdCk7CiAKLSAgICAvKiBwcm9jZXNzIHRoZSB3aXRoIGl0ZW1zIGluc2lkZS1vdXQgKi8KLSAgICBpID0gTkNIKG4pIC0gMTsKLSAgICAvKiB0aGUgc3VpdGUgb2YgdGhlIGlubmVybW9zdCB3aXRoIGl0ZW0gaXMgdGhlIHN1aXRlIG9mIHRoZSB3aXRoIHN0bXQgKi8KLSAgICBpbm5lciA9IGFzdF9mb3Jfc3VpdGUoYywgQ0hJTEQobiwgaSkpOwotICAgIGlmICghaW5uZXIpCisgICAgbl9pdGVtcyA9IChOQ0gobikgLSAyKSAvIDI7CisgICAgaXRlbXMgPSBhc2RsX3NlcV9uZXcobl9pdGVtcywgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFpdGVtcykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGkgLT0gMjsKLSAgICAgICAgcmV0ID0gYXN0X2Zvcl93aXRoX2l0ZW0oYywgQ0hJTEQobiwgaSksIGlubmVyKTsKLSAgICAgICAgaWYgKCFyZXQpCisgICAgZm9yIChpID0gMTsgaSA8IE5DSChuKSAtIDI7IGkgKz0gMikgeworICAgICAgICB3aXRoaXRlbV90eSBpdGVtID0gYXN0X2Zvcl93aXRoX2l0ZW0oYywgQ0hJTEQobiwgaSkpOworICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogd2FzIHRoaXMgdGhlIGxhc3QgaXRlbT8gKi8KLSAgICAgICAgaWYgKGkgPT0gMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAvKiBpZiBub3QsIHdyYXAgdGhlIHJlc3VsdCBzbyBmYXIgaW4gYSBuZXcgc2VxdWVuY2UgKi8KLSAgICAgICAgaW5uZXIgPSBhc2RsX3NlcV9uZXcoMSwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGlmICghaW5uZXIpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNkbF9zZXFfU0VUKGlubmVyLCAwLCByZXQpOworICAgICAgICBhc2RsX3NlcV9TRVQoaXRlbXMsIChpIC0gMSkgLyAyLCBpdGVtKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmV0OworICAgIGJvZHkgPSBhc3RfZm9yX3N1aXRlKGMsIENISUxEKG4sIE5DSChuKSAtIDEpKTsKKyAgICBpZiAoIWJvZHkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFdpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKIH0KIAogc3RhdGljIHN0bXRfdHkKQEAgLTMwNDUsNyArMzQ5Nyw3IEBACiAgICAgICAgIGNsYXNzbmFtZSA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIDEpKTsKICAgICAgICAgaWYgKCFjbGFzc25hbWUpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQorICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgcywgZGVjb3JhdG9yX3NlcSwKICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKQEAgLTMwNTgsNyArMzUxMCw3IEBACiAgICAgICAgIGNsYXNzbmFtZSA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIDEpKTsKICAgICAgICAgaWYgKCFjbGFzc25hbWUpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQorICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgcywgZGVjb3JhdG9yX3NlcSwKICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKQEAgLTMwODMsNyArMzUzNSw3IEBACiAgICAgY2xhc3NuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgMSkpOwogICAgIGlmICghY2xhc3NuYW1lKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZm9yYmlkZGVuX25hbWUoY2xhc3NuYW1lLCBDSElMRChuLCAxKSwgMCkpCisgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMSksIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIGNhbGwtPnYuQ2FsbC5hcmdzLCBjYWxsLT52LkNhbGwua2V5d29yZHMsCkBAIC0zMjA5LDIwICszNjYxLDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZWNvZGVfdXRmOChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICoqc1B0ciwgY29uc3QgY2hhciAqZW5kLCBjaGFyKiBlbmNvZGluZykKK2RlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQpCiB7Ci0gICAgUHlPYmplY3QgKnUsICp2OwogICAgIGNoYXIgKnMsICp0OwogICAgIHQgPSBzID0gKGNoYXIgKikqc1B0cjsKICAgICAvKiB3aGlsZSAocyA8IGVuZCAmJiAqcyAhPSAnXFwnKSBzKys7ICovIC8qIGluZWZmaWNpZW50IGZvciB1Ii4uIiAqLwogICAgIHdoaWxlIChzIDwgZW5kICYmICgqcyAmIDB4ODApKSBzKys7CiAgICAgKnNQdHIgPSBzOwotICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0LCBzIC0gdCwgTlVMTCk7Ci0gICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwgZW5jb2RpbmcsIE5VTEwpOwotICAgIFB5X0RFQ1JFRih1KTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgodCwgcyAtIHQsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzIzNCw3ICszNjgwLDYgQEAKICAgICBjb25zdCBjaGFyICplbmQ7CiAKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICBidWYgPSAoY2hhciAqKXM7CiAgICAgICAgIHUgPSBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCkBAIC0zMjU3LDIyICszNzAyLDIwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7IC8qIFhYWCBpbmVmZmljaWVudCAqLwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3OwotICAgICAgICAgICAgICAgIGNoYXIgKnI7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBybiwgaTsKLSAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCwgInV0Zi0zMi1iZSIpOworICAgICAgICAgICAgICAgIGludCBraW5kOworICAgICAgICAgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgICAgICAgICAgICAgdyA9IGRlY29kZV91dGY4KGMsICZzLCBlbmQpOwogICAgICAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHcpOwotICAgICAgICAgICAgICAgIHJuID0gUHlfU0laRSh3KTsKLSAgICAgICAgICAgICAgICBhc3NlcnQocm4gJSA0ID09IDApOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBybjsgaSArPSA0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwMnglMDJ4JTAyeCUwMngiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDBdICYgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAxXSAmIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgMl0gJiAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDNdICYgMHhGRik7CisgICAgICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHcpOworICAgICAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh3KTsKKyAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3KTsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTA4eCIsIGNocik7CiAgICAgICAgICAgICAgICAgICAgIHAgKz0gMTA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIFNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIG92ZXJmbG93ICovCkBAIC0zMzA2LDEzICszNzQ5LDIxIEBACiAgICAgaW50IHJhd21vZGUgPSAwOwogICAgIGludCBuZWVkX2VuY29kaW5nOwogICAgIGlmIChpc2FscGhhKHF1b3RlKSkgewotICAgICAgICBpZiAocXVvdGUgPT0gJ2InIHx8IHF1b3RlID09ICdCJykgewotICAgICAgICAgICAgcXVvdGUgPSAqKytzOwotICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHF1b3RlID09ICdyJyB8fCBxdW90ZSA9PSAnUicpIHsKLSAgICAgICAgICAgIHF1b3RlID0gKisrczsKLSAgICAgICAgICAgIHJhd21vZGUgPSAxOworICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgIXJhd21vZGUpIHsKKyAgICAgICAgICAgIGlmIChxdW90ZSA9PSAnYicgfHwgcXVvdGUgPT0gJ0InKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgICAgICpieXRlc21vZGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3UnIHx8IHF1b3RlID09ICdVJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICdyJyB8fCBxdW90ZSA9PSAnUicpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBpZiAocXVvdGUgIT0gJ1wnJyAmJiBxdW90ZSAhPSAnXCInKSB7CkBAIC0zMzQzLDEwICszNzk0LDEwIEBACiAgICAgfQogICAgIGlmICgqYnl0ZXNtb2RlKSB7CiAgICAgICAgIC8qIERpc2FsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChidXQgbm90IGVzY2FwZXMpICovCi0gICAgICAgIGNvbnN0IGNoYXIgKmM7Ci0gICAgICAgIGZvciAoYyA9IHM7ICpjOyBjKyspIHsKLSAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqYykgPj0gMHg4MCkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSAiCisgICAgICAgIGNvbnN0IGNoYXIgKmNoOworICAgICAgICBmb3IgKGNoID0gczsgKmNoOyBjaCsrKSB7CisgICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKmNoKSA+PSAweDgwKSB7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJieXRlcyBjYW4gb25seSBjb250YWluIEFTQ0lJICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpdGVyYWwgY2hhcmFjdGVycy4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTMzOTQsNyArMzg0NSw3IEBACiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGlmICgqYnl0ZXNtb2RlICE9IHN1YmJtKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2JsdGlubW9kdWxlLmMgYi9QeXRob24vYmx0aW5tb2R1bGUuYwppbmRleCBiODVlMzdiLi4wZTZlNmZmIDEwMDY0NAotLS0gYS9QeXRob24vYmx0aW5tb2R1bGUuYworKysgYi9QeXRob24vYmx0aW5tb2R1bGUuYwpAQCAtNiw2ICs2LDkgQEAKICNpbmNsdWRlICJub2RlLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogCisjaW5jbHVkZSAiYXNkbC5oIgorI2luY2x1ZGUgImFzdC5oIgorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSApAQCAtMTgsMjAgKzIxLDIwIEBACiAgICBEb24ndCBmb3JnZXQgdG8gbW9kaWZ5IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpZiB5b3UgdG91Y2ggYW55IG9mIHRoZQogICAgdmFsdWVzIGZvciBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIQogKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKIGNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7CiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIGNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwotI2VsaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKKyNlbHNlCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsgLyogc2V0IGJ5IGluaXRmc2VuY29kaW5nKCkgKi8KIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKLSNlbHNlCi1jb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKLWludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbmRpZgogCitfUHlfSURFTlRJRklFUihmaWxlbm8pOworX1B5X0lERU5USUZJRVIoZmx1c2gpOworCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTM5LDYgKzQyLDcgQEAKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwogICAgIGludCBpc2NsYXNzOworICAgIF9QeV9JREVOVElGSUVSKF9fcHJlcGFyZV9fKTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewpAQCAtOTksNiArMTAzLDcgQEAKICAgICAgICAgUHlfSU5DUkVGKG1ldGEpOwogICAgICAgICBpc2NsYXNzID0gMTsgIC8qIG1ldGEgaXMgcmVhbGx5IGEgY2xhc3MgKi8KICAgICB9CisKICAgICBpZiAoaXNjbGFzcykgewogICAgICAgICAvKiBtZXRhIGlzIHJlYWxseSBhIGNsYXNzLCBzbyBjaGVjayBmb3IgYSBtb3JlIGRlcml2ZWQKICAgICAgICAgICAgbWV0YWNsYXNzLCBvciBwb3NzaWJsZSBtZXRhY2xhc3MgY29uZmxpY3RzOiAqLwpAQCAtMTE4LDcgKzEyMyw3IEBACiAgICAgfQogICAgIC8qIGVsc2U6IG1ldGEgaXMgbm90IGEgY2xhc3MsIHNvIHdlIGNhbm5vdCBkbyB0aGUgbWV0YWNsYXNzCiAgICAgICAgY2FsY3VsYXRpb24sIHNvIHdlIHdpbGwgdXNlIHRoZSBleHBsaWNpdGx5IGdpdmVuIG9iamVjdCBhcyBpdCBpcyAqLwotICAgIHByZXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1ldGEsICJfX3ByZXBhcmVfXyIpOworICAgIHByZXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG1ldGEsICZQeUlkX19fcHJlcGFyZV9fKTsKICAgICBpZiAocHJlcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE3OSwyMSArMTg0LDE4IEBACiB7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJuYW1lIiwgImdsb2JhbHMiLCAibG9jYWxzIiwgImZyb21saXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIiwgMH07Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqZ2xvYmFscyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxvY2FscyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZyb21saXN0ID0gTlVMTDsKLSAgICBpbnQgbGV2ZWwgPSAtMTsKKyAgICBQeU9iamVjdCAqbmFtZSwgKmdsb2JhbHMgPSBOVUxMLCAqbG9jYWxzID0gTlVMTCwgKmZyb21saXN0ID0gTlVMTDsKKyAgICBpbnQgbGV2ZWwgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInN8T09PaTpfX2ltcG9ydF9fIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiVXxPT09pOl9faW1wb3J0X18iLAogICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZuYW1lLCAmZ2xvYmFscywgJmxvY2FscywgJmZyb21saXN0LCAmbGV2ZWwpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwobmFtZSwgZ2xvYmFscywgbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgbGV2ZWwpOworICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChuYW1lLCBnbG9iYWxzLCBsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CiB9CiAKIFB5RG9jX1NUUlZBUihpbXBvcnRfZG9jLAotIl9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1bXSwgbGV2ZWw9LTEpIC0+IG1vZHVsZVxuXAorIl9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApIC0+IG1vZHVsZVxuXAogXG5cCiBJbXBvcnQgYSBtb2R1bGUuIEJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBtZWFudCBmb3IgdXNlIGJ5IHRoZSBQeXRob25cblwKIGludGVycHJldGVyIGFuZCBub3QgZm9yIGdlbmVyYWwgdXNlIGl0IGlzIGJldHRlciB0byB1c2VcblwKQEAgLTIwNiw4ICsyMDgsNyBAQAogV2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2UsIG5vdGUgdGhhdCBfX2ltcG9ydF9fKCdBLkInLCAuLi4pXG5cCiByZXR1cm5zIHBhY2thZ2UgQSB3aGVuIGZyb21saXN0IGlzIGVtcHR5LCBidXQgaXRzIHN1Ym1vZHVsZSBCIHdoZW5cblwKIGZyb21saXN0IGlzIG5vdCBlbXB0eS4gIExldmVsIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBcblwKLWFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuICAtMSBpcyB0aGUgb3JpZ2luYWwgc3RyYXRlZ3kgb2YgYXR0ZW1wdGluZ1xuXAotYm90aCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgaW1wb3J0cywgMCBpcyBhYnNvbHV0ZSwgYSBwb3NpdGl2ZSBudW1iZXJcblwKK2Fic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuIDAgaXMgYWJzb2x1dGUgd2hpbGUgYSBwb3NpdGl2ZSBudW1iZXJcblwKIGlzIHRoZSBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb2R1bGUuIik7CiAKIApAQCAtNDM2LDYgKzQzNywxOSBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2ZpbHRlcl9yZWR1Y2UoZmlsdGVyb2JqZWN0ICpseikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCk7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5TWV0aG9kRGVmIGZpbHRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAoUHlDRnVuY3Rpb24pZmlsdGVyX3JlZHVjZSwgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihmaWx0ZXJfZG9jLAogImZpbHRlcihmdW5jdGlvbiBvciBOb25lLCBpdGVyYWJsZSkgLS0+IGZpbHRlciBvYmplY3RcblwKIFxuXApAQCAtNDcyLDcgKzQ4Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylmaWx0ZXJfbmV4dCwgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZmlsdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC01MTYsMTcgKzUzMCwxMCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoeCk7CiB9CiAKLVB5RG9jX1ZBUihjaHJfZG9jKSA9IFB5RG9jX1NUUigKK1B5RG9jX1NUUlZBUihjaHJfZG9jLAogImNocihpKSAtPiBVbmljb2RlIGNoYXJhY3RlclxuXAogXG5cCi1SZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuIgotKQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLVB5RG9jX1NUUigKLSJcbklmIDB4MTAwMDAgPD0gaSwgYSBzdXJyb2dhdGUgcGFpciBpcyByZXR1cm5lZC4iCi0pCi0jZW5kaWYKLTsKK1JldHVybiBhIFVuaWNvZGUgc3RyaW5nIG9mIG9uZSBjaGFyYWN0ZXIgd2l0aCBvcmRpbmFsIGk7IDAgPD0gaSA8PSAweDEwZmZmZi4iKTsKIAogCiBzdGF0aWMgY2hhciAqCkBAIC01MzcsOCArNTQ0LDggQEAKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soY21kKSkgewogICAgICAgICBjZi0+Y2ZfZmxhZ3MgfD0gUHlDRl9JR05PUkVfQ09PS0lFOwotICAgICAgICBjbWQgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoY21kLCBOVUxMKTsKLSAgICAgICAgaWYgKGNtZCA9PSBOVUxMKQorICAgICAgICBzdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShjbWQsICZzaXplKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFQeU9iamVjdF9DaGVja1JlYWRCdWZmZXIoY21kKSkgewpAQCAtNTQ3LDkgKzU1NCwxMCBAQAogICAgICAgICAgIGZ1bmNuYW1lLCB3aGF0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIoY21kLCAoY29uc3Qgdm9pZCAqKikmc3RyLCAmc2l6ZSkgPCAwKSB7CisgICAgZWxzZSBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyKGNtZCwgKGNvbnN0IHZvaWQgKiopJnN0ciwgJnNpemUpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBpZiAoc3RybGVuKHN0cikgIT0gc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSBjb2RlIHN0cmluZyBjYW5ub3QgY29udGFpbiBudWxsIGJ5dGVzIik7CkBAIC02MzgsNiArNjQ2LDEwIEBACiAgICAgICAgICAgICAgICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFQeUFTVF9WYWxpZGF0ZShtb2QpKSB7CisgICAgICAgICAgICAgICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gKFB5T2JqZWN0KilQeUFTVF9Db21waWxlRXgobW9kLCBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjZiwgb3B0aW1pemUsIGFyZW5hKTsKICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CkBAIC03OTMsNyArODA1LDYgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeU9iamVjdCAqcHJvZywgKmdsb2JhbHMgPSBQeV9Ob25lLCAqbG9jYWxzID0gUHlfTm9uZTsKLSAgICBpbnQgcGxhaW4gPSAwOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXhlYyIsIDEsIDMsICZwcm9nLCAmZ2xvYmFscywgJmxvY2FscykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODAyLDcgKzgxMyw2IEBACiAgICAgICAgIGdsb2JhbHMgPSBQeUV2YWxfR2V0R2xvYmFscygpOwogICAgICAgICBpZiAobG9jYWxzID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIGxvY2FscyA9IFB5RXZhbF9HZXRMb2NhbHMoKTsKLSAgICAgICAgICAgIHBsYWluID0gMTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdsb2JhbHMgfHwgIWxvY2FscykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLApAQCAtMTA1OCw2ICsxMDY4LDMxIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21hcF9yZWR1Y2UobWFwb2JqZWN0ICpseikKK3sKKyAgICBQeV9zc2l6ZV90IG51bWFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdGVycyk7CisgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhudW1hcmdzKzEpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYobHotPmZ1bmMpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbHotPmZ1bmMpOworICAgIGZvciAoaSA9IDA7IGk8bnVtYXJnczsgaSsrKXsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeV9JTkNSRUYoaXQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIGkrMSwgaXQpOworICAgIH0KKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTiIsIFB5X1RZUEUobHopLCBhcmdzKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG1hcF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAoUHlDRnVuY3Rpb24pbWFwX3JlZHVjZSwgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKwogUHlEb2NfU1RSVkFSKG1hcF9kb2MsCiAibWFwKGZ1bmMsICppdGVyYWJsZXMpIC0tPiBtYXAgb2JqZWN0XG5cCiBcblwKQEAgLTEwOTQsNyArMTEyOSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyltYXBfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hcF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTExOCw3ICsxMTUzLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeUl0ZXJfQ2hlY2soaXQpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiJS4yMDBzIG9iamVjdCBpcyBub3QgYW4gaXRlcmF0b3IiLAorICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgYW4gaXRlcmF0b3IiLAogICAgICAgICAgICAgaXQtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNDI0LDI0ICsxNDU5LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgICAgIG9yZCA9IChsb25nKSpQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopOworICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhvcmQpOwogICAgICAgICB9Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoc2l6ZSA9PSAyKSB7Ci0gICAgICAgICAgICAvKiBEZWNvZGUgYSB2YWxpZCBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgaW50IGMwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKVswXTsKLSAgICAgICAgICAgIGludCBjMSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iailbMV07Ci0gICAgICAgICAgICBpZiAoMHhEODAwIDw9IGMwICYmIGMwIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgICAgIDB4REMwMCA8PSBjMSAmJiBjMSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBvcmQgPSAoKCgoYzAgJiAweDAzRkYpIDw8IDEwKSB8IChjMSAmIDB4MDNGRikpICsKLSAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhvcmQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sob2JqKSkgewogICAgICAgICAvKiBYWFggSG9wZWZ1bGx5IHRoaXMgaXMgdGVtcG9yYXJ5ICovCkBAIC0xNDY5LDEzICsxNDkzLDcgQEAKICJvcmQoYykgLT4gaW50ZWdlclxuXAogXG5cCiBSZXR1cm4gdGhlIGludGVnZXIgb3JkaW5hbCBvZiBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLiIKLSkKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi1QeURvY19TVFIoCi0iXG5BIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyIGlzIGFsc28gYWNjZXB0ZWQuIgotKQotI2VuZGlmCi07CispOwogCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNDk5LDE1ICsxNTE3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9wcmludChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgImVuZCIsICJmaWxlIiwgMH07CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAiZW5kIiwgImZpbGUiLCAiZmx1c2giLCAwfTsKICAgICBzdGF0aWMgUHlPYmplY3QgKmR1bW15X2FyZ3M7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEwsICplbmQgPSBOVUxMLCAqZmlsZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEwsICplbmQgPSBOVUxMLCAqZmlsZSA9IE5VTEwsICpmbHVzaCA9IE5VTEw7CiAgICAgaW50IGksIGVycjsKIAogICAgIGlmIChkdW1teV9hcmdzID09IE5VTEwgJiYgIShkdW1teV9hcmdzID0gUHlUdXBsZV9OZXcoMCkpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZHVtbXlfYXJncywga3dkcywgInxPT086cHJpbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnNlcCwgJmVuZCwgJmZpbGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhkdW1teV9hcmdzLCBrd2RzLCAifE9PT086cHJpbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnNlcCwgJmVuZCwgJmZpbGUsICZmbHVzaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChmaWxlID09IE5VTEwgfHwgZmlsZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGZpbGUgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwpAQCAtMTU1OCwxNyArMTU3NiwzMiBAQAogICAgIGlmIChlcnIpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKGZsdXNoICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcDsKKyAgICAgICAgaW50IGRvX2ZsdXNoID0gUHlPYmplY3RfSXNUcnVlKGZsdXNoKTsKKyAgICAgICAgaWYgKGRvX2ZsdXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGVsc2UgaWYgKGRvX2ZsdXNoKSB7CisgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZpbGUsICJmbHVzaCIsICIiKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIocHJpbnRfZG9jLAotInByaW50KHZhbHVlLCAuLi4sIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0KVxuXAorInByaW50KHZhbHVlLCAuLi4sIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0LCBmbHVzaD1GYWxzZSlcblwKIFxuXAogUHJpbnRzIHRoZSB2YWx1ZXMgdG8gYSBzdHJlYW0sIG9yIHRvIHN5cy5zdGRvdXQgYnkgZGVmYXVsdC5cblwKIE9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzOlxuXAotZmlsZTogYSBmaWxlLWxpa2Ugb2JqZWN0IChzdHJlYW0pOyBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBzeXMuc3Rkb3V0LlxuXAotc2VwOiAgc3RyaW5nIGluc2VydGVkIGJldHdlZW4gdmFsdWVzLCBkZWZhdWx0IGEgc3BhY2UuXG5cCi1lbmQ6ICBzdHJpbmcgYXBwZW5kZWQgYWZ0ZXIgdGhlIGxhc3QgdmFsdWUsIGRlZmF1bHQgYSBuZXdsaW5lLiIpOworZmlsZTogIGEgZmlsZS1saWtlIG9iamVjdCAoc3RyZWFtKTsgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgc3lzLnN0ZG91dC5cblwKK3NlcDogICBzdHJpbmcgaW5zZXJ0ZWQgYmV0d2VlbiB2YWx1ZXMsIGRlZmF1bHQgYSBzcGFjZS5cblwKK2VuZDogICBzdHJpbmcgYXBwZW5kZWQgYWZ0ZXIgdGhlIGxhc3QgdmFsdWUsIGRlZmF1bHQgYSBuZXdsaW5lLlxuXAorZmx1c2g6IHdoZXRoZXIgdG8gZm9yY2libHkgZmx1c2ggdGhlIHN0cmVhbS4iKTsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTYwNCw3ICsxNjM3LDcgQEAKICAgICB9CiAKICAgICAvKiBGaXJzdCBvZiBhbGwsIGZsdXNoIHN0ZGVyciAqLwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmVyciwgImZsdXNoIiwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTYxMyw3ICsxNjQ2LDcgQEAKICAgICAvKiBXZSBzaG91bGQgb25seSB1c2UgKEdOVSkgcmVhZGxpbmUgaWYgUHl0aG9uJ3Mgc3lzLnN0ZGluIGFuZAogICAgICAgIHN5cy5zdGRvdXQgYXJlIHRoZSBzYW1lIGFzIEMncyBzdGRpbiBhbmQgc3Rkb3V0LCBiZWNhdXNlIHdlCiAgICAgICAgbmVlZCB0byBwYXNzIGl0IHRob3NlLiAqLwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmluLCAiZmlsZW5vIiwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sICIiKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgdHR5ID0gMDsKQEAgLTE2MjYsNyArMTY1OSw3IEBACiAgICAgICAgIHR0eSA9IGZkID09IGZpbGVubyhzdGRpbikgJiYgaXNhdHR5KGZkKTsKICAgICB9CiAgICAgaWYgKHR0eSkgewotICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmaWxlbm8iLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgewpAQCAtMTY0OCw5ICsxNjgxLDExIEBACiAgICAgICAgIGNoYXIgKnN0ZGluX2VuY29kaW5nX3N0ciwgKnN0ZGluX2Vycm9yc19zdHI7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgICAgIHNpemVfdCBsZW47CisgICAgICAgIF9QeV9JREVOVElGSUVSKGVuY29kaW5nKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZXJyb3JzKTsKIAotICAgICAgICBzdGRpbl9lbmNvZGluZyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmluLCAiZW5jb2RpbmciKTsKLSAgICAgICAgc3RkaW5fZXJyb3JzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaW4sICJlcnJvcnMiKTsKKyAgICAgICAgc3RkaW5fZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbiwgJlB5SWRfZW5jb2RpbmcpOworICAgICAgICBzdGRpbl9lcnJvcnMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbiwgJlB5SWRfZXJyb3JzKTsKICAgICAgICAgaWYgKCFzdGRpbl9lbmNvZGluZyB8fCAhc3RkaW5fZXJyb3JzKQogICAgICAgICAgICAgLyogc3RkaW4gaXMgYSB0ZXh0IHN0cmVhbSwgc28gaXQgbXVzdCBoYXZlIGFuCiAgICAgICAgICAgICAgICBlbmNvZGluZy4gKi8KQEAgLTE2NTksNyArMTY5NCw3IEBACiAgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmbHVzaCIsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xNjY4LDggKzE3MDMsOCBAQAogICAgICAgICAgICAgLyogV2UgaGF2ZSBhIHByb21wdCwgZW5jb2RlIGl0IGFzIHN0ZG91dCB3b3VsZCAqLwogICAgICAgICAgICAgY2hhciAqc3Rkb3V0X2VuY29kaW5nX3N0ciwgKnN0ZG91dF9lcnJvcnNfc3RyOwogICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZ3BvOwotICAgICAgICAgICAgc3Rkb3V0X2VuY29kaW5nID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmb3V0LCAiZW5jb2RpbmciKTsKLSAgICAgICAgICAgIHN0ZG91dF9lcnJvcnMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvdXQsICJlcnJvcnMiKTsKKyAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZm91dCwgJlB5SWRfZW5jb2RpbmcpOworICAgICAgICAgICAgc3Rkb3V0X2Vycm9ycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZm91dCwgJlB5SWRfZXJyb3JzKTsKICAgICAgICAgICAgIGlmICghc3Rkb3V0X2VuY29kaW5nIHx8ICFzdGRvdXRfZXJyb3JzKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKICAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZ19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZG91dF9lbmNvZGluZyk7CkBAIC0xNzM5LDcgKzE3NzQsNyBAQAogICAgICAgICBpZiAoUHlGaWxlX1dyaXRlT2JqZWN0KHByb21wdGFyZywgZm91dCwgUHlfUFJJTlRfUkFXKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm91dCwgImZsdXNoIiwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTgyMSw2ICsxODU2LDcgQEAKICAgICBQeU9iamVjdCAqY2FsbGFibGU7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpdGVyYWJsZSIsICJrZXkiLCAicmV2ZXJzZSIsIDB9OwogICAgIGludCByZXZlcnNlOworICAgIF9QeV9JREVOVElGSUVSKHNvcnQpOwogCiAgICAgLyogYXJncyAxLTMgc2hvdWxkIG1hdGNoIGxpc3Rzb3J0IGluIE9iamVjdHMvbGlzdG9iamVjdC5jICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T2k6c29ydGVkIiwKQEAgLTE4MzEsNyArMTg2Nyw3IEBACiAgICAgaWYgKG5ld2xpc3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobmV3bGlzdCwgInNvcnQiKTsKKyAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobmV3bGlzdCwgJlB5SWRfc29ydCk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4NzcsNyArMTkxMyw4IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoZCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBkID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiX19kaWN0X18iKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgICAgICBkID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2LCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgICAgIGlmIChkID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgInZhcnMoKSBhcmd1bWVudCBtdXN0IGhhdmUgX19kaWN0X18gYXR0cmlidXRlIik7CkBAIC0xOTIxLDEyICsxOTU4LDE4IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2socmVzdWx0KSkgeworICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXN1bHQpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJzdW0oKSBjYW4ndCBzdW0gYnl0ZXMgW3VzZSBiJycuam9pbihzZXEpIGluc3RlYWRdIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAic3VtKCkgY2FuJ3Qgc3VtIGJ5dGVhcnJheSBbdXNlIGInJy5qb2luKHNlcSkgaW5zdGVhZF0iKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgfQpAQCAtMjIyOSw2ICsyMjcyLDE4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3ppcF9yZWR1Y2Uoemlwb2JqZWN0ICpseikKK3sKKyAgICAvKiBKdXN0IHJlY3JlYXRlIHRoZSB6aXAgd2l0aCB0aGUgaW50ZXJuYWwgaXRlcmF0b3IgdHVwbGUgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT08iLCBQeV9UWVBFKGx6KSwgbHotPml0dHVwbGUpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgemlwX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgIChQeUNGdW5jdGlvbil6aXBfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHppcF9kb2MsCiAiemlwKGl0ZXIxIFssaXRlcjIgWy4uLl1dKSAtLT4gemlwIG9iamVjdFxuXAogXG5cCkBAIC0yMjY3LDcgKzIzMjIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpemlwX25leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB6aXBfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbC5jIGIvUHl0aG9uL2NldmFsLmMKaW5kZXggZjBlYTdjOS4uODJiZmNjNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsLmMKKysrIGIvUHl0aG9uL2NldmFsLmMKQEAgLTEzOCw3ICsxMzgsNyBAQAogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKLXN0YXRpYyBQeU9iamVjdCAqIHNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICosIGNoYXIgKiwgUHlPYmplY3QgKiopOworc3RhdGljIFB5T2JqZWN0ICogc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiAKICNkZWZpbmUgTkFNRV9FUlJPUl9NU0cgXAogICAgICJuYW1lICclLjIwMHMnIGlzIG5vdCBkZWZpbmVkIgpAQCAtMzcyLDYgKzM3Miw3IEBACiB2b2lkCiBQeUV2YWxfUmVJbml0VGhyZWFkcyh2b2lkKQogeworICAgIF9QeV9JREVOVElGSUVSKF9hZnRlcl9mb3JrKTsKICAgICBQeU9iamVjdCAqdGhyZWFkaW5nLCAqcmVzdWx0OwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAKQEAgLTM5Miw3ICszOTMsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGhyZWFkaW5nLCAiX2FmdGVyX2ZvcmsiLCBOVUxMKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX2FmdGVyX2ZvcmssIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgZWxzZQpAQCAtNDkxLDcgKzQ5Miw2IEBACiB9IHBlbmRpbmdjYWxsc1tOUEVORElOR0NBTExTXTsKIHN0YXRpYyBpbnQgcGVuZGluZ2ZpcnN0ID0gMDsKIHN0YXRpYyBpbnQgcGVuZGluZ2xhc3QgPSAwOwotc3RhdGljIGNoYXIgcGVuZGluZ2J1c3kgPSAwOwogCiBpbnQKIFB5X0FkZFBlbmRpbmdDYWxsKGludCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKQEAgLTUzOCw2ICs1MzgsNyBAQAogaW50CiBQeV9NYWtlUGVuZGluZ0NhbGxzKHZvaWQpCiB7CisgICAgc3RhdGljIGludCBidXN5ID0gMDsKICAgICBpbnQgaTsKICAgICBpbnQgciA9IDA7CiAKQEAgLTU1Miw5ICs1NTMsOSBAQAogICAgIGlmIChtYWluX3RocmVhZCAmJiBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgIT0gbWFpbl90aHJlYWQpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIGRvbid0IHBlcmZvcm0gcmVjdXJzaXZlIHBlbmRpbmcgY2FsbHMgKi8KLSAgICBpZiAocGVuZGluZ2J1c3kpCisgICAgaWYgKGJ1c3kpCiAgICAgICAgIHJldHVybiAwOwotICAgIHBlbmRpbmdidXN5ID0gMTsKKyAgICBidXN5ID0gMTsKICAgICAvKiBwZXJmb3JtIGEgYm91bmRlZCBudW1iZXIgb2YgY2FsbHMsIGluIGNhc2Ugb2YgcmVjdXJzaW9uICovCiAgICAgZm9yIChpPTA7IGk8TlBFTkRJTkdDQUxMUzsgaSsrKSB7CiAgICAgICAgIGludCBqOwpAQCAtNTgzLDcgKzU4NCw3IEBACiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHBlbmRpbmdidXN5ID0gMDsKKyAgICBidXN5ID0gMDsKICAgICByZXR1cm4gcjsKIH0KIApAQCAtNzQ5LDYgKzc1MCw5IEBACiAgICAgICAgIFdIWV9TSUxFTkNFRCA9ICAweDAwODAgIC8qIEV4Y2VwdGlvbiBzaWxlbmNlZCBieSAnd2l0aCcgKi8KIH07CiAKK3N0YXRpYyB2b2lkIHNhdmVfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKK3N0YXRpYyB2b2lkIHN3YXBfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKK3N0YXRpYyB2b2lkIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CiBzdGF0aWMgZW51bSB3aHlfY29kZSBkb19yYWlzZShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgdW5wYWNrX2l0ZXJhYmxlKFB5T2JqZWN0ICosIGludCwgaW50LCBQeU9iamVjdCAqKik7CiAKQEAgLTgxNyw5ICs4MjEsOSBAQAogICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOwogICAgIFB5T2JqZWN0ICpuYW1lczsKICAgICBQeU9iamVjdCAqY29uc3RzOwotI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoTExUUkFDRSkKLSAgICAvKiBNYWtlIGl0IGVhc2llciB0byBmaW5kIG91dCB3aGVyZSB3ZSBhcmUgd2l0aCBhIGRlYnVnZ2VyICovCi0gICAgY2hhciAqZmlsZW5hbWU7CisKKyNpZmRlZiBMTFRSQUNFCisgICAgX1B5X0lERU5USUZJRVIoX19sdHJhY2VfXyk7CiAjZW5kaWYKIAogLyogQ29tcHV0ZWQgR09UT3MsIG9yCkBAIC0xMTE0LDU5ICsxMTE4LDggQEAKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCiAgICAgfQogCi0jZGVmaW5lIFNBVkVfRVhDX1NUQVRFKCkgXAotICAgIHsgXAotICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCi0gICAgICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHlwZSk7IFwKLSAgICAgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y192YWx1ZSk7IFwKLSAgICAgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y190cmFjZWJhY2spOyBcCi0gICAgICAgIHR5cGUgPSBmLT5mX2V4Y190eXBlOyBcCi0gICAgICAgIHZhbHVlID0gZi0+Zl9leGNfdmFsdWU7IFwKLSAgICAgICAgdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIGYtPmZfZXhjX3R5cGUgPSB0c3RhdGUtPmV4Y190eXBlOyBcCi0gICAgICAgIGYtPmZfZXhjX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7IFwKLSAgICAgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQotCi0jZGVmaW5lIFNXQVBfRVhDX1NUQVRFKCkgXAotICAgIHsgXAotICAgICAgICBQeU9iamVjdCAqdG1wOyBcCi0gICAgICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3R5cGU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7IFwKLSAgICAgICAgZi0+Zl9leGNfdHlwZSA9IHRtcDsgXAotICAgICAgICB0bXAgPSB0c3RhdGUtPmV4Y192YWx1ZTsgXAotICAgICAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOyBcCi0gICAgICAgIGYtPmZfZXhjX3ZhbHVlID0gdG1wOyBcCi0gICAgICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsgXAotICAgICAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdG1wOyBcCi0gICAgfQotCi0jZGVmaW5lIFJFU1RPUkVfQU5EX0NMRUFSX0VYQ19TVEFURSgpIFwKLSAgICB7IFwKLSAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiOyBcCi0gICAgICAgIHR5cGUgPSB0c3RhdGUtPmV4Y190eXBlOyBcCi0gICAgICAgIHZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7IFwKLSAgICAgICAgdGIgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7IFwKLSAgICAgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsgXAotICAgICAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgZi0+Zl9leGNfdHlwZSA9IE5VTEw7IFwKLSAgICAgICAgZi0+Zl9leGNfdmFsdWUgPSBOVUxMOyBcCi0gICAgICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IE5VTEw7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0eXBlKTsgXAotICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsgXAotICAgICAgICBQeV9YREVDUkVGKHRiKTsgXAotICAgIH0KLQogLyogU3RhcnQgb2YgY29kZSAqLwogCi0gICAgaWYgKGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAvKiBwdXNoIGZyYW1lICovCiAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTIyMSw2ICsxMTc0LDggQEAKICAgICAgICBmLT5mX2xhc3RpIHRvIC0xIChpLmUuIHRoZSBpbmRleCAqYmVmb3JlKiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24pCiAgICAgICAgYW5kIFlJRUxEX1ZBTFVFIGRvZXNuJ3QgZmlkZGxlIHdpdGggZl9sYXN0aSBhbnkgbW9yZS4gIFNvIHRoaXMKICAgICAgICBkb2VzIHdvcmsuICBQcm9taXNlLgorICAgICAgIFlJRUxEX0ZST00gc2V0cyBmX2xhc3RpIHRvIGl0c2VsZiwgaW4gb3JkZXIgdG8gcmVwZWF0ZWQgeWllbGQKKyAgICAgICBtdWx0aXBsZSB2YWx1ZXMuCiAKICAgICAgICBXaGVuIHRoZSBQUkVESUNUKCkgbWFjcm9zIGFyZSBlbmFibGVkLCBzb21lIG9wY29kZSBwYWlycyBmb2xsb3cgaW4KICAgICAgICBkaXJlY3Qgc3VjY2Vzc2lvbiB3aXRob3V0IHVwZGF0aW5nIGYtPmZfbGFzdGkuICBBIHN1Y2Nlc3NmdWwKQEAgLTEyNDAsMjcgKzExOTUsMTQgQEAKICAgICAgICAgICAgIC8qIFdlIHdlcmUgaW4gYW4gZXhjZXB0IGhhbmRsZXIgd2hlbiB3ZSBsZWZ0LAogICAgICAgICAgICAgICAgcmVzdG9yZSB0aGUgZXhjZXB0aW9uIHN0YXRlIHdoaWNoIHdhcyBwdXQgYXNpZGUKICAgICAgICAgICAgICAgIChzZWUgWUlFTERfVkFMVUUpLiAqLwotICAgICAgICAgICAgU1dBUF9FWENfU1RBVEUoKTsKKyAgICAgICAgICAgIHN3YXBfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTQVZFX0VYQ19TVEFURSgpOwotICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNhdmVfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CiAgICAgfQogCiAjaWZkZWYgTExUUkFDRQotICAgIGxsdHJhY2UgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhmLT5mX2dsb2JhbHMsICJfX2xsdHJhY2VfXyIpICE9IE5VTEw7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKExMVFJBQ0UpCi0gICAgewotICAgICAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwotICAgICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKLSAgICAgICAgZmlsZW5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGNvLT5jb19maWxlbmFtZSk7Ci0gICAgICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMICYmIHRzdGF0ZS0+b3ZlcmZsb3dlZCkgewotICAgICAgICAgICAgLyogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQgKi8KLSAgICAgICAgICAgIGdvdG8gZXhpdF9ldmFsX2ZyYW1lOwotICAgICAgICB9Ci0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Ci0gICAgfQorICAgIGxsdHJhY2UgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2dsb2JhbHMsICZQeUlkX19fbHRyYWNlX18pICE9IE5VTEw7CiAjZW5kaWYKIAogICAgIHdoeSA9IFdIWV9OT1Q7CkBAIC0xNDEyLDggKzEzNTQsNiBAQAogICAgICAgICAgICB4IHRvIE5VTEwsIGVyciB0byBub256ZXJvLCBvciB3aHkgdG8gYW55dGhpbmcgYnV0IFdIWV9OT1QsCiAgICAgICAgICAgIGFuZCB0aGF0IG5vIG9wZXJhdGlvbiB0aGF0IHN1Y2NlZWRzIGRvZXMgdGhpcyEgKi8KIAotICAgICAgICAvKiBjYXNlIFNUT1BfQ09ERTogdGhpcyBpcyBhbiBlcnJvciEgKi8KLQogICAgICAgICBUQVJHRVQoTk9QKQogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogCkBAIC0xODk0LDYgKzE4MzQsNDAgQEAKICAgICAgICAgICAgIHdoeSA9IFdIWV9SRVRVUk47CiAgICAgICAgICAgICBnb3RvIGZhc3RfYmxvY2tfZW5kOwogCisgICAgICAgIFRBUkdFVChZSUVMRF9GUk9NKQorICAgICAgICAgICAgdSA9IFBPUCgpOworICAgICAgICAgICAgeCA9IFRPUCgpOworICAgICAgICAgICAgLyogc2VuZCB1IHRvIHggKi8KKyAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHgpKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopeCwgdSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNlbmQpOworICAgICAgICAgICAgICAgIGlmICh1ID09IFB5X05vbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5X1RZUEUoeCktPnRwX2l0ZXJuZXh0KHgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh4LCAmUHlJZF9zZW5kLCAiTyIsIHUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsOworICAgICAgICAgICAgICAgIHggPSBQT1AoKTsgLyogUmVtb3ZlIGl0ZXIgZnJvbSBzdGFjayAqLworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgICAgICAgICBlcnIgPSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCk7CisgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB4ID0gdmFsOworICAgICAgICAgICAgICAgIFBVU0goeCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiB4IHJlbWFpbnMgb24gc3RhY2ssIHJldHZhbCBpcyB2YWx1ZSB0byBiZSB5aWVsZGVkICovCisgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKKyAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKKyAgICAgICAgICAgIC8qIGFuZCByZXBlYXQuLi4gKi8KKyAgICAgICAgICAgIGYtPmZfbGFzdGktLTsKKyAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKKwogICAgICAgICBUQVJHRVQoWUlFTERfVkFMVUUpCiAgICAgICAgICAgICByZXR2YWwgPSBQT1AoKTsKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwpAQCAtMTk1NiwxNiArMTkzMCwzMyBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgVEFSR0VUKExPQURfQlVJTERfQ0xBU1MpCi0gICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZi0+Zl9idWlsdGlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIik7Ci0gICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2J1aWxkX2NsYXNzX18pOworCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICB4ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19idWlsZF9jbGFzc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmJ1aWxkX2NsYXNzX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fYnVpbGRfY2xhc3NfXyk7CisgICAgICAgICAgICAgICAgaWYgKGJ1aWxkX2NsYXNzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCBidWlsZF9jbGFzc19zdHIpOworICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoU1RPUkVfTkFNRSkKICAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CkBAIC0yMTAxLDcwICsyMDkyLDYyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgdyk7CisgICAgICAgICAgICAgICAgUHlfWElOQ1JFRih4KTsKICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0goeCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogCiAgICAgICAgIFRBUkdFVChMT0FEX0dMT0JBTCkKICAgICAgICAgICAgIHcgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodykpIHsKLSAgICAgICAgICAgICAgICAvKiBJbmxpbmUgdGhlIFB5RGljdF9HZXRJdGVtKCkgY2FsbHMuCi0gICAgICAgICAgICAgICAgICAgV0FSTklORzogdGhpcyBpcyBhbiBleHRyZW1lIHNwZWVkIGhhY2suCi0gICAgICAgICAgICAgICAgICAgRG8gbm90IHRyeSB0aGlzIGF0IGhvbWUuICovCi0gICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKXcpLT5oYXNoOwotICAgICAgICAgICAgICAgIGlmIChoYXNoICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RGljdE9iamVjdCAqZDsKLSAgICAgICAgICAgICAgICAgICAgUHlEaWN0RW50cnkgKmU7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSAoUHlEaWN0T2JqZWN0ICopKGYtPmZfZ2xvYmFscyk7Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBkLT5tYV9sb29rdXAoZCwgdywgaGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgeCA9IGUtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVVNIKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkID0gKFB5RGljdE9iamVjdCAqKShmLT5mX2J1aWx0aW5zKTsKLSAgICAgICAgICAgICAgICAgICAgZSA9IGQtPm1hX2xvb2t1cChkLCB3LCBoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB4ID0gZS0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gbG9hZF9nbG9iYWxfZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogVGhpcyBpcyB0aGUgdW4taW5saW5lZCB2ZXJzaW9uIG9mIHRoZSBjb2RlIGFib3ZlICovCi0gICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKLSAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9nbG9iYWxzKQorICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgeCA9IF9QeURpY3RfTG9hZEdsb2JhbCgoUHlEaWN0T2JqZWN0ICopZi0+Zl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGljdE9iamVjdCAqKWYtPmZfYnVpbHRpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3KTsKICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICBsb2FkX2dsb2JhbF9lcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFNsb3ctcGF0aCBpZiBnbG9iYWxzIG9yIGJ1aWx0aW5zIGlzIG5vdCBhIGRpY3QgKi8KKyAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIHcpOworICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX05BTUVfRVJST1JfTVNHLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSCh4KTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAKQEAgLTIzMTMsOCArMjI5NiwxMCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKIAogICAgICAgICBUQVJHRVQoSU1QT1JUX05BTUUpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbVN0cmluZyhmLT5mX2J1aWx0aW5zLCAiX19pbXBvcnRfXyIpOworICAgICAgICAgICAgeCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwogICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW1wb3J0X18gbm90IGZvdW5kIik7CkBAIC0yMzU1LDYgKzIzNDAsNyBAQAogICAgICAgICAgICAgU0VUX1RPUCh4KTsKICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIERJU1BBVENIKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChJTVBPUlRfU1RBUikKICAgICAgICAgICAgIHYgPSBQT1AoKTsKQEAgLTI1NTksMTMgKzI1NDUsMTQgQEAKIAogICAgICAgICBUQVJHRVQoU0VUVVBfV0lUSCkKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpleGl0LCAqZW50ZXI7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwogICAgICAgICAgICAgdyA9IFRPUCgpOwotICAgICAgICAgICAgeCA9IHNwZWNpYWxfbG9va3VwKHcsICJfX2V4aXRfXyIsICZleGl0KTsKKyAgICAgICAgICAgIHggPSBzcGVjaWFsX2xvb2t1cCh3LCAmUHlJZF9fX2V4aXRfXyk7CiAgICAgICAgICAgICBpZiAoIXgpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBTRVRfVE9QKHgpOwotICAgICAgICAgICAgdSA9IHNwZWNpYWxfbG9va3VwKHcsICJfX2VudGVyX18iLCAmZW50ZXIpOworICAgICAgICAgICAgdSA9IHNwZWNpYWxfbG9va3VwKHcsICZQeUlkX19fZW50ZXJfXyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CiAgICAgICAgICAgICBpZiAoIXUpIHsKICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKQEAgLTI3MjUsNyArMjcxMiw3IEBACiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpwZnVuYyk7CiAgICAgICAgICAgICAgICAgKnBmdW5jID0gc2VsZjsKICAgICAgICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgICAgICAvKiBuKys7ICovCiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7CkBAIC0yNzUzLDkgKzI3NDAsMTEgQEAKICAgICAgICAgICAgIGludCBrd2RlZmF1bHRzID0gKG9wYXJnPj44KSAmIDB4ZmY7CiAgICAgICAgICAgICBpbnQgbnVtX2Fubm90YXRpb25zID0gKG9wYXJnID4+IDE2KSAmIDB4N2ZmZjsKIAorICAgICAgICAgICAgdyA9IFBPUCgpOyAvKiBxdWFsbmFtZSAqLwogICAgICAgICAgICAgdiA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgeCA9IFB5RnVuY3Rpb25fTmV3KHYsIGYtPmZfZ2xvYmFscyk7CisgICAgICAgICAgICB4ID0gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUodiwgZi0+Zl9nbG9iYWxzLCB3KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKIAogICAgICAgICAgICAgaWYgKHggIT0gTlVMTCAmJiBvcGNvZGUgPT0gTUFLRV9DTE9TVVJFKSB7CiAgICAgICAgICAgICAgICAgdiA9IFBPUCgpOwpAQCAtMzA0OSw5ICszMDM4LDkgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKGkgPT0gZi0+Zl9pYmxvY2spCiAgICAgICAgICAgICAvKiBXZSBkaWQgbm90IGNyZWF0ZSB0aGlzIGV4Y2VwdGlvbi4gKi8KLSAgICAgICAgICAgIFJFU1RPUkVfQU5EX0NMRUFSX0VYQ19TVEFURSgpCisgICAgICAgICAgICByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUodHN0YXRlLCBmKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgU1dBUF9FWENfU1RBVEUoKQorICAgICAgICAgICAgc3dhcF9leGNfc3RhdGUodHN0YXRlLCBmKTsKICAgICB9CiAKICAgICBpZiAodHN0YXRlLT51c2VfdHJhY2luZykgewpAQCAtMzA4MSw3ICszMDcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUcmFjZV9SRVRVUk4sIHJldHZhbCkpIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJldHZhbCk7CiAgICAgICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKLSAgICAgICAgICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOworICAgICAgICAgICAgICAgIC8qIHdoeSA9IFdIWV9FWENFUFRJT047ICovCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zMDk0LDYgKzMwODMsMTU2IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorc3RhdGljIHZvaWQKK2Zvcm1hdF9taXNzaW5nKGNvbnN0IGNoYXIgKmtpbmQsIFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpuYW1lcykKK3sKKyAgICBpbnQgZXJyOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlMaXN0X0dFVF9TSVpFKG5hbWVzKTsKKyAgICBQeU9iamVjdCAqbmFtZV9zdHIsICpjb21tYSwgKnRhaWwsICp0bXA7CisKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QobmFtZXMpKTsKKyAgICBhc3NlcnQobGVuID49IDEpOworICAgIC8qIERlYWwgd2l0aCB0aGUgam95cyBvZiBuYXR1cmFsIGxhbmd1YWdlLiAqLworICAgIHN3aXRjaCAobGVuKSB7CisgICAgY2FzZSAxOgorICAgICAgICBuYW1lX3N0ciA9IFB5TGlzdF9HRVRfSVRFTShuYW1lcywgMCk7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lX3N0cik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUgYW5kICVVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShuYW1lcywgbGVuIC0gMSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICB0YWlsID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiwgJVUsIGFuZCAlVSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAxKSk7CisgICAgICAgIGlmICh0YWlsID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8qIENob3Agb2ZmIHRoZSBsYXN0IHR3byBvYmplY3RzIGluIHRoZSBsaXN0LiBUaGlzIHNob3VsZG4ndCBhY3R1YWxseQorICAgICAgICAgICBmYWlsLCBidXQgd2UgY2FuJ3QgYmUgdG9vIGNhcmVmdWwuICovCisgICAgICAgIGVyciA9IFB5TGlzdF9TZXRTbGljZShuYW1lcywgbGVuIC0gMiwgbGVuLCBOVUxMKTsKKyAgICAgICAgaWYgKGVyciA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIFN0aXRjaCBldmVyeXRoaW5nIHVwIGludG8gYSBuaWNlIGNvbW1hLXNlcGFyYXRlZCBsaXN0LiAqLworICAgICAgICBjb21tYSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIsICIpOworICAgICAgICBpZiAoY29tbWEgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Kb2luKGNvbW1hLCBuYW1lcyk7CisgICAgICAgIFB5X0RFQ1JFRihjb21tYSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG5hbWVfc3RyID0gUHlVbmljb2RlX0NvbmNhdCh0bXAsIHRhaWwpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlfREVDUkVGKHRhaWwpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKG5hbWVfc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiJVUoKSBtaXNzaW5nICVpIHJlcXVpcmVkICVzIGFyZ3VtZW50JXM6ICVVIiwKKyAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCisgICAgICAgICAgICAgICAgIGxlbiwKKyAgICAgICAgICAgICAgICAga2luZCwKKyAgICAgICAgICAgICAgICAgbGVuID09IDEgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgbmFtZV9zdHIpOworICAgIFB5X0RFQ1JFRihuYW1lX3N0cik7Cit9CisKK3N0YXRpYyB2b2lkCittaXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBpbnQgbWlzc2luZywgaW50IGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQoreworICAgIGludCBpLCBqID0gMDsKKyAgICBpbnQgc3RhcnQsIGVuZDsKKyAgICBpbnQgcG9zaXRpb25hbCA9IGRlZmNvdW50ICE9IC0xOworICAgIGNvbnN0IGNoYXIgKmtpbmQgPSBwb3NpdGlvbmFsID8gInBvc2l0aW9uYWwiIDogImtleXdvcmQtb25seSI7CisgICAgUHlPYmplY3QgKm1pc3NpbmdfbmFtZXM7CisKKyAgICAvKiBDb21wdXRlIHRoZSBuYW1lcyBvZiB0aGUgYXJndW1lbnRzIHRoYXQgYXJlIG1pc3NpbmcuICovCisgICAgbWlzc2luZ19uYW1lcyA9IFB5TGlzdF9OZXcobWlzc2luZyk7CisgICAgaWYgKG1pc3NpbmdfbmFtZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChwb3NpdGlvbmFsKSB7CisgICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgZW5kID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFydCA9IGNvLT5jb19hcmdjb3VudDsKKyAgICAgICAgZW5kID0gc3RhcnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgfQorICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyYXcgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb192YXJuYW1lcywgaSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5T2JqZWN0X1JlcHIocmF3KTsKKyAgICAgICAgICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWlzc2luZ19uYW1lcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKG1pc3NpbmdfbmFtZXMsIGorKywgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGogPT0gbWlzc2luZyk7CisgICAgZm9ybWF0X21pc3Npbmcoa2luZCwgY28sIG1pc3NpbmdfbmFtZXMpOworICAgIFB5X0RFQ1JFRihtaXNzaW5nX25hbWVzKTsKK30KKworc3RhdGljIHZvaWQKK3Rvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgaW50IGdpdmVuLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3sKKyAgICBpbnQgcGx1cmFsOworICAgIGludCBrd29ubHlfZ2l2ZW4gPSAwOworICAgIGludCBpOworICAgIFB5T2JqZWN0ICpzaWcsICprd29ubHlfc2lnOworCisgICAgYXNzZXJ0KChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSA9PSAwKTsKKyAgICAvKiBDb3VudCBtaXNzaW5nIGtleXdvcmQtb25seSBhcmdzLiAqLworICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKQorICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICAgICAgICAgIGt3b25seV9naXZlbisrOworICAgIGlmIChkZWZjb3VudCkgeworICAgICAgICBpbnQgYXRsZWFzdCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBwbHVyYWwgPSAxOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlZCB0byAlZCIsIGF0bGVhc3QsIGNvLT5jb19hcmdjb3VudCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwbHVyYWwgPSBjby0+Y29fYXJnY291bnQgIT0gMTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkIiwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICB9CisgICAgaWYgKHNpZyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGt3b25seV9naXZlbikgeworICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7CisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsIGdpdmVuICE9IDEgPyAicyIgOiAiIiwga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiAhPSAxID8gInMiIDogIiIpOworICAgICAgICBpZiAoa3dvbmx5X3NpZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2lnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogVGhpcyB3aWxsIG5vdCBmYWlsLiAqLworICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOworICAgICAgICBhc3NlcnQoa3dvbmx5X3NpZyAhPSBOVUxMKTsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlZCVVICVzIGdpdmVuIiwKKyAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCisgICAgICAgICAgICAgICAgIHNpZywKKyAgICAgICAgICAgICAgICAgcGx1cmFsID8gInMiIDogIiIsCisgICAgICAgICAgICAgICAgIGdpdmVuLAorICAgICAgICAgICAgICAgICBrd29ubHlfc2lnLAorICAgICAgICAgICAgICAgICBnaXZlbiA9PSAxICYmICFrd29ubHlfZ2l2ZW4gPyAid2FzIiA6ICJ3ZXJlIik7CisgICAgUHlfREVDUkVGKHNpZyk7CisgICAgUHlfREVDUkVGKGt3b25seV9zaWcpOworfQorCiAvKiBUaGlzIGlzIGdvbm5hIHNlZW0gKnJlYWwgd2VpcmQqLCBidXQgaWYgeW91IHB1dCBzb21lIG90aGVyIGNvZGUgYmV0d2VlbgogICAgUHlFdmFsX0V2YWxGcmFtZSgpIGFuZCBQeUV2YWxfRXZhbENvZGVFeCgpIHlvdSB3aWxsIG5lZWQgdG8gYWRqdXN0CiAgICB0aGUgdGVzdCBpbiB0aGUgaWYgc3RhdGVtZW50cyBpbiBNaXNjL2dkYmluaXQgKHB5c3RhY2sgYW5kIHB5c3RhY2t2KS4gKi8KQEAgLTMxMTAsNiArMzI0OSw5IEBACiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBQeU9iamVjdCAqeCwgKnU7CiAgICAgaW50IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgaW50IGk7CisgICAgaW50IG4gPSBhcmdjb3VudDsKKyAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKIAogICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLApAQCAtMzEyNiwyMTIgKzMyNjgsMTUzIEBACiAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICBmcmVldmFycyA9IGYtPmZfbG9jYWxzcGx1cyArIGNvLT5jb19ubG9jYWxzOwogCi0gICAgaWYgKHRvdGFsX2FyZ3MgfHwgY28tPmNvX2ZsYWdzICYgKENPX1ZBUkFSR1MgfCBDT19WQVJLRVlXT1JEUykpIHsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGludCBuID0gYXJnY291bnQ7Ci0gICAgICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKLSAgICAgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICBpID0gdG90YWxfYXJnczsKLSAgICAgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIFNFVExPQ0FMKGksIGt3ZGljdCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgICAgICBpZiAoIShjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVzICVkICIKLSAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQlcyAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgIGRlZmNvdW50ID8gImF0IG1vc3QiIDogImV4YWN0bHkiLAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fYXJnY291bnQsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19hcmdjb3VudCA9PSAxID8gIiIgOiAicyIsCi0gICAgICAgICAgICAgICAgICAgIGFyZ2NvdW50ICsga3djb3VudCk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKLSAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgLyogUGFyc2UgYXJndW1lbnRzLiAqLworICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykgeworICAgICAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgaSA9IHRvdGFsX2FyZ3M7CisgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQorICAgICAgICAgICAgaSsrOworICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOworICAgIH0KKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpCisgICAgICAgIG4gPSBjby0+Y29fYXJnY291bnQ7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICB4ID0gYXJnc1tpXTsKKyAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICBTRVRMT0NBTChpLCB4KTsKKyAgICB9CisgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKKyAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOworICAgICAgICBmb3IgKGkgPSBuOyBpIDwgYXJnY291bnQ7IGkrKykgewogICAgICAgICAgICAgeCA9IGFyZ3NbaV07CiAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICBTRVRMT0NBTChpLCB4KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odSwgaS1uLCB4KTsKICAgICAgICAgfQotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgewotICAgICAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7Ci0gICAgICAgICAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOwotICAgICAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICB4ID0gYXJnc1tpXTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwotICAgICAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7CisgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKKyAgICAgICAgaW50IGo7CisgICAgICAgIGlmIChrZXl3b3JkID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhrZXl3b3JkKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqKmNvX3Zhcm5hbWVzOwotICAgICAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd3NbMippXTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKLSAgICAgICAgICAgIGludCBqOwotICAgICAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOworICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCisgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLworICAgICAgICBjb192YXJuYW1lcyA9ICgoUHlUdXBsZU9iamVjdCAqKShjby0+Y29fdmFybmFtZXMpKS0+b2JfaXRlbTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgeworICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpZiAobm0gPT0ga2V5d29yZCkKKyAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOworICAgICAgICB9CisgICAgICAgIC8qIFNsb3cgZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqLworICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCisgICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFNwZWVkIGhhY2s6IGRvIHJhdyBwb2ludGVyIGNvbXBhcmVzLiBBcyBuYW1lcyBhcmUKLSAgICAgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLwotICAgICAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07Ci0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBubSwgUHlfRVEpOwotICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7Ci0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXl3b3JkLCB2YWx1ZSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICBrd19mb3VuZDoKLSAgICAgICAgICAgIGlmIChHRVRMT0NBTChqKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGtleXdvcmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgfQorICAgICAgICBpZiAoaiA+PSB0b3RhbF9hcmdzICYmIGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAnJVMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgU0VUTE9DQUwoaiwgdmFsdWUpOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPiAwKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoa3dkZWZzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IFB5RGljdF9HZXRJdGVtKGt3ZGVmcywgbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZWYpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWYpOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUTE9DQUwoaSwgZGVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICIlVSgpIG5lZWRzIGtleXdvcmQtb25seSBhcmd1bWVudCAlUyIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9CisgICAgICAgIFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIGt3X2ZvdW5kOgorICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9Ci0gICAgICAgIGlmIChhcmdjb3VudCA8IGNvLT5jb19hcmdjb3VudCkgewotICAgICAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKLSAgICAgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGosIGdpdmVuID0gMDsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvLT5jb19hcmdjb3VudDsgaisrKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGopKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuKys7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlcyAlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICgoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWZjb3VudCkgPyAiYXQgbGVhc3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImV4YWN0bHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLCBtID09IDEgPyAiIiA6ICJzIiwgZ2l2ZW4pOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG4gPiBtKQotICAgICAgICAgICAgICAgIGkgPSBuIC0gbTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpID0gMDsKLSAgICAgICAgICAgIGZvciAoOyBpIDwgZGVmY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChtK2kpID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IGRlZnNbaV07Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWYpOwotICAgICAgICAgICAgICAgICAgICBTRVRMT0NBTChtK2ksIGRlZik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoYXJnY291bnQgPiAwIHx8IGt3Y291bnQgPiAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIGFyZ2NvdW50ICsga3djb3VudCk7CisgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50ICYmICEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKKyAgICAgICAgdG9vX21hbnlfcG9zaXRpb25hbChjbywgYXJnY291bnQsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KLSAgICAvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBzdG9yYWdlIGZvciBjZWxsIHZhcnMsIGFuZCBjb3B5IGZyZWUKLSAgICAgICB2YXJzIGludG8gZnJhbWUuICBUaGlzIGlzbid0IHRvbyBlZmZpY2llbnQgcmlnaHQgbm93LiAqLwotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykpIHsKLSAgICAgICAgaW50IGksIGosIG5hcmdzLCBmb3VuZDsKLSAgICAgICAgUHlfVU5JQ09ERSAqY2VsbG5hbWUsICphcmduYW1lOwotICAgICAgICBQeU9iamVjdCAqYzsKLQotICAgICAgICBuYXJncyA9IHRvdGFsX2FyZ3M7Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQotICAgICAgICAgICAgbmFyZ3MrKzsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKQotICAgICAgICAgICAgbmFyZ3MrKzsKLQotICAgICAgICAvKiBJbml0aWFsaXplIGVhY2ggY2VsbCB2YXIsIHRha2luZyBpbnRvIGFjY291bnQKLSAgICAgICAgICAgY2VsbCB2YXJzIHRoYXQgYXJlIGluaXRpYWxpemVkIGZyb20gYXJndW1lbnRzLgotCi0gICAgICAgICAgIFNob3VsZCBhcnJhbmdlIGZvciB0aGUgY29tcGlsZXIgdG8gcHV0IGNlbGx2YXJzCi0gICAgICAgICAgIHRoYXQgYXJlIGFyZ3VtZW50cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjZWxsdmFycwotICAgICAgICAgICBsaXN0IHNvIHRoYXQgd2UgY2FuIG1hcmNoIG92ZXIgaXQgbW9yZSBlZmZpY2llbnRseT8KLSAgICAgICAgKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKTsgKytpKSB7Ci0gICAgICAgICAgICBjZWxsbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX2NlbGx2YXJzLCBpKSk7Ci0gICAgICAgICAgICBmb3VuZCA9IDA7Ci0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbmFyZ3M7IGorKykgewotICAgICAgICAgICAgICAgIGFyZ25hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGopKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJjbXAoY2VsbG5hbWUsIGFyZ25hbWUpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5Q2VsbF9OZXcoR0VUTE9DQUwoaikpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgICAgICBHRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGkpID0gYzsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSAxOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZm91bmQgPT0gMCkgewotICAgICAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KE5VTEwpOwotICAgICAgICAgICAgICAgIGlmIChjID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICBTRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGksIGMpOworICAgIGlmIChhcmdjb3VudCA8IGNvLT5jb19hcmdjb3VudCkgeworICAgICAgICBpbnQgbSA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBpbnQgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKQorICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpCisgICAgICAgICAgICAgICAgbWlzc2luZysrOworICAgICAgICBpZiAobWlzc2luZykgeworICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobiA+IG0pCisgICAgICAgICAgICBpID0gbiAtIG07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICBmb3IgKDsgaSA8IGRlZmNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChtK2kpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmID0gZGVmc1tpXTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKKyAgICAgICAgICAgICAgICBTRVRMT0NBTChtK2ksIGRlZik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKSkgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobyk7Ci0gICAgICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKKyAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOworICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGkpOworICAgICAgICAgICAgaWYgKGt3ZGVmcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZiA9IFB5RGljdF9HZXRJdGVtKGt3ZGVmcywgbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGRlZikgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmKTsKKyAgICAgICAgICAgICAgICAgICAgU0VUTE9DQUwoaSwgZGVmKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbWlzc2luZysrOwogICAgICAgICB9CisgICAgICAgIGlmIChtaXNzaW5nKSB7CisgICAgICAgICAgICBtaXNzaW5nX2FyZ3VtZW50cyhjbywgbWlzc2luZywgLTEsIGZhc3Rsb2NhbHMpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgc3RvcmFnZSBmb3IgY2VsbCB2YXJzLCBhbmQgY29weSBmcmVlCisgICAgICAgdmFycyBpbnRvIGZyYW1lLiAqLworICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycyk7ICsraSkgeworICAgICAgICBQeU9iamVjdCAqYzsKKyAgICAgICAgaW50IGFyZzsKKyAgICAgICAgLyogUG9zc2libHkgYWNjb3VudCBmb3IgdGhlIGNlbGwgdmFyaWFibGUgYmVpbmcgYW4gYXJndW1lbnQuICovCisgICAgICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCAmJgorICAgICAgICAgICAgKGFyZyA9IGNvLT5jb19jZWxsMmFyZ1tpXSkgIT0gQ09fQ0VMTF9OT1RfQU5fQVJHKQorICAgICAgICAgICAgYyA9IFB5Q2VsbF9OZXcoR0VUTE9DQUwoYXJnKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGMgPSBQeUNlbGxfTmV3KE5VTEwpOworICAgICAgICBpZiAoYyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBTRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGksIGMpOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fZnJlZXZhcnMpOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGNsb3N1cmUsIGkpOworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKICAgICB9CiAKICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKSB7CkBAIC0zMzY1LDE4ICszNDQ4LDcyIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICpvLCBjaGFyICptZXRoLCBQeU9iamVjdCAqKmNhY2hlKQorc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICppZCkKIHsKICAgICBQeU9iamVjdCAqcmVzOwotICAgIHJlcyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sIG1ldGgsIGNhY2hlKTsKKyAgICByZXMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCBpZCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgKmNhY2hlKTsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBpZC0+b2JqZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiByZXM7CiB9CiAKIAorLyogVGhlc2UgMyBmdW5jdGlvbnMgZGVhbCB3aXRoIHRoZSBleGNlcHRpb24gc3RhdGUgb2YgZ2VuZXJhdG9ycy4gKi8KKworc3RhdGljIHZvaWQKK3NhdmVfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOworICAgIFB5X1hJTkNSRUYodHN0YXRlLT5leGNfdHlwZSk7CisgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y192YWx1ZSk7CisgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y190cmFjZWJhY2spOworICAgIHR5cGUgPSBmLT5mX2V4Y190eXBlOworICAgIHZhbHVlID0gZi0+Zl9leGNfdmFsdWU7CisgICAgdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOworICAgIGYtPmZfZXhjX3R5cGUgPSB0c3RhdGUtPmV4Y190eXBlOworICAgIGYtPmZfZXhjX3ZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOworfQorCitzdGF0aWMgdm9pZAorc3dhcF9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgdG1wID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICB0c3RhdGUtPmV4Y190eXBlID0gZi0+Zl9leGNfdHlwZTsKKyAgICBmLT5mX2V4Y190eXBlID0gdG1wOworICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7CisgICAgZi0+Zl9leGNfdmFsdWUgPSB0bXA7CisgICAgdG1wID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsKKyAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSB0bXA7Cit9CisKK3N0YXRpYyB2b2lkCityZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsKKyAgICB0eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICB2YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgIHRiID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOworICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7CisgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOworICAgIGYtPmZfZXhjX3R5cGUgPSBOVUxMOworICAgIGYtPmZfZXhjX3ZhbHVlID0gTlVMTDsKKyAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSBOVUxMOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisgICAgUHlfWERFQ1JFRih0Yik7Cit9CisKKwogLyogTG9naWMgZm9yIHRoZSByYWlzZSBzdGF0ZW1lbnQgKHRvbyBjb21wbGljYXRlZCBmb3IgaW5saW5pbmcpLgogICAgVGhpcyAqY29uc3VtZXMqIGEgcmVmZXJlbmNlIGNvdW50IHRvIGVhY2ggb2YgaXRzIGFyZ3VtZW50cy4gKi8KIHN0YXRpYyBlbnVtIHdoeV9jb2RlCkBAIC0zNDQ2LDYgKzM1ODMsMTAgQEAKICAgICAgICAgZWxzZSBpZiAoUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayhjYXVzZSkpIHsKICAgICAgICAgICAgIGZpeGVkX2NhdXNlID0gY2F1c2U7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2F1c2UgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGNhdXNlKTsKKyAgICAgICAgICAgIGZpeGVkX2NhdXNlID0gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbiBjYXVzZXMgbXVzdCBkZXJpdmUgZnJvbSAiCkBAIC00MTkyLDcgKzQzMzMsNyBAQAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIHNlcXVlbmNlLCBub3QgJTIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBzZXF1ZW5jZSwgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQzNDIsNyArNDQ4Myw5IEBACiBzdGF0aWMgaW50CiBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlPYmplY3QgKmFsbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgIl9fYWxsX18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2FsbF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKmFsbCA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19hbGxfXyk7CiAgICAgUHlPYmplY3QgKmRpY3QsICpuYW1lLCAqdmFsdWU7CiAgICAgaW50IHNraXBfbGVhZGluZ191bmRlcnNjb3JlcyA9IDA7CiAgICAgaW50IHBvcywgZXJyOwpAQCAtNDM1MSw3ICs0NDk0LDcgQEAKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAtMTsgLyogVW5leHBlY3RlZCBlcnJvciAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiX19kaWN0X18iKTsKKyAgICAgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQzNzcsNyArNDUyMCw4IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKHNraXBfbGVhZGluZ191bmRlcnNjb3JlcyAmJgogICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrKG5hbWUpICYmCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKVswXSA9PSAnXycpCisgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkobmFtZSkgIT0gLTEgJiYKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZSwgMCkgPT0gJ18nKQogICAgICAgICB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ0MzcsMTkgKzQ1ODEsOSBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsCi0gICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKKyAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKIHsKLSAgICAvKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgJ3ZhcmlhYmxlICs9IGV4cHInIHdoZW4gYm90aCBhcmd1bWVudHMKLSAgICAgICBhcmUgKFVuaWNvZGUpIHN0cmluZ3MuICovCi0gICAgUHlfc3NpemVfdCB2X2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh2KTsKLSAgICBQeV9zc2l6ZV90IHdfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHcpOwotICAgIFB5X3NzaXplX3QgbmV3X2xlbiA9IHZfbGVuICsgd19sZW47Ci0gICAgaWYgKG5ld19sZW4gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDIpIHsKICAgICAgICAgLyogSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGVyZSBhcmUgMiByZWZlcmVuY2VzIHRvIHRoZSB2YWx1ZQogICAgICAgICAgKiBzdG9yZWQgaW4gJ3ZhcmlhYmxlJyB3aGVuIHRoZSArPSBpcyBwZXJmb3JtZWQ6IG9uZSBvbiB0aGUKQEAgLTQ0OTAsMzEgKzQ2MjQsOSBAQAogICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoUHlfUkVGQ05UKHYpID09IDEgJiYgIVB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh2KSkgewotICAgICAgICAvKiBOb3cgd2Ugb3duIHRoZSBsYXN0IHJlZmVyZW5jZSB0byAndicsIHNvIHdlIGNhbiByZXNpemUgaXQKLSAgICAgICAgICogaW4tcGxhY2UuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmdiwgbmV3X2xlbikgIT0gMCkgewotICAgICAgICAgICAgLyogWFhYIGlmIFB5VW5pY29kZV9SZXNpemUoKSBmYWlscywgJ3YnIGhhcyBiZWVuCi0gICAgICAgICAgICAgKiBkZWFsbG9jYXRlZCBzbyBpdCBjYW5ub3QgYmUgcHV0IGJhY2sgaW50bwotICAgICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFRoZSBNZW1vcnlFcnJvciBpcyByYWlzZWQgd2hlbiB0aGVyZQotICAgICAgICAgICAgICogaXMgbm8gdmFsdWUgaW4gJ3ZhcmlhYmxlJywgd2hpY2ggbWlnaHQgKHZlcnkKLSAgICAgICAgICAgICAqIHJlbW90ZWx5KSBiZSBhIGNhdXNlIG9mIGluY29tcGF0aWJpbGl0aWVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAvKiBjb3B5ICd3JyBpbnRvIHRoZSBuZXdseSBhbGxvY2F0ZWQgYXJlYSBvZiAndicgKi8KLSAgICAgICAgbWVtY3B5KFB5VW5pY29kZV9BU19VTklDT0RFKHYpICsgdl9sZW4sCi0gICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh3KSwgd19sZW4qc2l6ZW9mKFB5X1VOSUNPREUpKTsKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBXaGVuIGluLXBsYWNlIHJlc2l6aW5nIGlzIG5vdCBhbiBvcHRpb24uICovCi0gICAgICAgIHcgPSBQeVVuaWNvZGVfQ29uY2F0KHYsIHcpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiB3OwotICAgIH0KKyAgICByZXMgPSB2OworICAgIFB5VW5pY29kZV9BcHBlbmQoJnJlcywgdyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogI2lmZGVmIERZTkFNSUNfRVhFQ1VUSU9OX1BST0ZJTEUKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbF9naWwuaCBiL1B5dGhvbi9jZXZhbF9naWwuaAppbmRleCBiZjdhMzUwLi4yNzAyZDVjIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWxfZ2lsLmgKKysrIGIvUHl0aG9uL2NldmFsX2dpbC5oCkBAIC01OSwyMTMgKzU5LDQ5IEBACiAgICAgIChOb3RlOiB0aGlzIG1lY2hhbmlzbSBpcyBlbmFibGVkIHdpdGggRk9SQ0VfU1dJVENISU5HIGFib3ZlKQogKi8KIAotI2lmbmRlZiBfUE9TSVhfVEhSRUFEUwotLyogVGhpcyBtZWFucyBwdGhyZWFkcyBhcmUgbm90IGltcGxlbWVudGVkIGluIGxpYmMgaGVhZGVycywgaGVuY2UgdGhlIG1hY3JvCi0gICBub3QgcHJlc2VudCBpbiB1bmlzdGQuaC4gQnV0IHRoZXkgc3RpbGwgY2FuIGJlIGltcGxlbWVudGVkIGFzIGFuIGV4dGVybmFsCi0gICBsaWJyYXJ5IChlLmcuIGdudSBwdGggaW4gcHRocmVhZCBlbXVsYXRpb24pICovCi0jIGlmZGVmIEhBVkVfUFRIUkVBRF9ICi0jICBpbmNsdWRlIDxwdGhyZWFkLmg+IC8qIF9QT1NJWF9USFJFQURTICovCi0jIGVuZGlmCisjaW5jbHVkZSAiY29uZHZhci5oIgorI2lmbmRlZiBQeV9IQVZFX0NPTkRWQVIKKyNlcnJvciBZb3UgbmVlZCBlaXRoZXIgYSBQT1NJWC1jb21wYXRpYmxlIG9yIGEgV2luZG93cyBzeXN0ZW0hCiAjZW5kaWYKIAotCi0jaWZkZWYgX1BPU0lYX1RIUkVBRFMKLQotLyoKLSAqIFBPU0lYIHN1cHBvcnQKLSAqLwotCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi0jZGVmaW5lIEFERF9NSUNST1NFQ09ORFModHYsIGludGVydmFsKSBcCi1kbyB7IFwKLSAgICB0di50dl91c2VjICs9IChsb25nKSBpbnRlcnZhbDsgXAotICAgIHR2LnR2X3NlYyArPSB0di50dl91c2VjIC8gMTAwMDAwMDsgXAotICAgIHR2LnR2X3VzZWMgJT0gMTAwMDAwMDsgXAotfSB3aGlsZSAoMCkKLQotLyogV2UgYXNzdW1lIGFsbCBtb2Rlcm4gUE9TSVggc3lzdGVtcyBoYXZlIGdldHRpbWVvZmRheSgpICovCi0jaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCi0jZGVmaW5lIEdFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYpCi0jZWxzZQotI2RlZmluZSBHRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2LCAoc3RydWN0IHRpbWV6b25lICopTlVMTCkKLSNlbmRpZgotCi0jZGVmaW5lIE1VVEVYX1QgcHRocmVhZF9tdXRleF90CisjZGVmaW5lIE1VVEVYX1QgUHlNVVRFWF9UCiAjZGVmaW5lIE1VVEVYX0lOSVQobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0LCBOVUxMKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfbXV0ZXhfaW5pdCgiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfSU5JVCgmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9JTklUKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgTVVURVhfRklOSShtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF9kZXN0cm95KCZtdXQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF9kZXN0cm95KCIgI211dCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlNVVRFWF9GSU5JKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX0ZJTkkoIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBNVVRFWF9MT0NLKG11dCkgXAotICAgIGlmIChwdGhyZWFkX211dGV4X2xvY2soJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X2xvY2soIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX0xPQ0soJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5TVVURVhfTE9DSygiICNtdXQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIE1VVEVYX1VOTE9DSyhtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF91bmxvY2soJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X3VubG9jaygiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfVU5MT0NLKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX1VOTE9DSygiICNtdXQgIikgZmFpbGVkIik7IH07CiAKLSNkZWZpbmUgQ09ORF9UIHB0aHJlYWRfY29uZF90CisjZGVmaW5lIENPTkRfVCBQeUNPTkRfVAogI2RlZmluZSBDT05EX0lOSVQoY29uZCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfaW5pdCgmY29uZCwgTlVMTCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfaW5pdCgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfSU5JVCgmKGNvbmQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9JTklUKCIgI2NvbmQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIENPTkRfRklOSShjb25kKSBcCi0gICAgaWYgKHB0aHJlYWRfY29uZF9kZXN0cm95KCZjb25kKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF9kZXN0cm95KCIgI2NvbmQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5Q09ORF9GSU5JKCYoY29uZCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX0ZJTkkoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9TSUdOQUwoY29uZCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfc2lnbmFsKCZjb25kKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF9zaWduYWwoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX1NJR05BTCgmKGNvbmQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5Q09ORF9TSUdOQUwoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9XQUlUKGNvbmQsIG11dCkgXAotICAgIGlmIChwdGhyZWFkX2NvbmRfd2FpdCgmY29uZCwgJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX2NvbmRfd2FpdCgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfV0FJVCgmKGNvbmQpLCAmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX1dBSVQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9USU1FRF9XQUlUKGNvbmQsIG11dCwgbWljcm9zZWNvbmRzLCB0aW1lb3V0X3Jlc3VsdCkgXAogICAgIHsgXAotICAgICAgICBpbnQgcjsgXAotICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7IFwKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgZGVhZGxpbmU7IFwKLSAgICAgICAgXAotICAgICAgICBHRVRUSU1FT0ZEQVkoJmRlYWRsaW5lKTsgXAotICAgICAgICBBRERfTUlDUk9TRUNPTkRTKGRlYWRsaW5lLCBtaWNyb3NlY29uZHMpOyBcCi0gICAgICAgIHRzLnR2X3NlYyA9IGRlYWRsaW5lLnR2X3NlYzsgXAotICAgICAgICB0cy50dl9uc2VjID0gZGVhZGxpbmUudHZfdXNlYyAqIDEwMDA7IFwKLSAgICAgICAgXAotICAgICAgICByID0gcHRocmVhZF9jb25kX3RpbWVkd2FpdCgmY29uZCwgJm11dCwgJnRzKTsgXAotICAgICAgICBpZiAociA9PSBFVElNRURPVVQpIFwKKyAgICAgICAgaW50IHIgPSBQeUNPTkRfVElNRURXQUlUKCYoY29uZCksICYobXV0KSwgKG1pY3Jvc2Vjb25kcykpOyBcCisgICAgICAgIGlmIChyIDwgMCkgXAorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX1dBSVQoIiAjY29uZCAiKSBmYWlsZWQiKTsgXAorICAgICAgICBpZiAocikgLyogMSA9PSB0aW1lb3V0LCAyID09IGltcGwuIGNhbid0IHNheSwgc28gYXNzdW1lIHRpbWVvdXQgKi8gXAogICAgICAgICAgICAgdGltZW91dF9yZXN1bHQgPSAxOyBcCi0gICAgICAgIGVsc2UgaWYgKHIpIFwKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF90aW1lZHdhaXQoIiAjY29uZCAiKSBmYWlsZWQiKTsgXAogICAgICAgICBlbHNlIFwKICAgICAgICAgICAgIHRpbWVvdXRfcmVzdWx0ID0gMDsgXAogICAgIH0gXAogCi0jZWxpZiBkZWZpbmVkKE5UX1RIUkVBRFMpCi0KLS8qCi0gKiBXaW5kb3dzICgyMDAwIGFuZCBsYXRlciwgYXMgd2VsbCBhcyAoaG9wZWZ1bGx5KSBDRSkgc3VwcG9ydAotICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNkZWZpbmUgTVVURVhfVCBDUklUSUNBTF9TRUNUSU9OCi0jZGVmaW5lIE1VVEVYX0lOSVQobXV0KSBkbyB7IFwKLSAgICBpZiAoIShJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uQW5kU3BpbkNvdW50KCYobXV0KSwgNDAwMCkpKSBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNyZWF0ZU11dGV4KCIgI211dCAiKSBmYWlsZWQiKTsgXAotfSB3aGlsZSAoMCkKLSNkZWZpbmUgTVVURVhfRklOSShtdXQpIFwKLSAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJihtdXQpKQotI2RlZmluZSBNVVRFWF9MT0NLKG11dCkgXAotICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKCYobXV0KSkKLSNkZWZpbmUgTVVURVhfVU5MT0NLKG11dCkgXAotICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCYobXV0KSkKLQotLyogV2UgZW11bGF0ZSBjb25kaXRpb24gdmFyaWFibGVzIHdpdGggYSBzZW1hcGhvcmUuCi0gICBXZSB1c2UgYSBTZW1hcGhvcmUgcmF0aGVyIHRoYW4gYW4gYXV0by1yZXNldCBldmVudCwgYmVjYXVzZSBhbHRob3VnaAotICAgYW4gYXV0by1yZXNlbnQgZXZlbnQgbWlnaHQgYXBwZWFyIHRvIHNvbHZlIHRoZSBsb3N0LXdha2V1cCBidWcgKHJhY2UKLSAgIGNvbmRpdGlvbiBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgb3V0ZXIgbG9jayBhbmQgd2FpdGluZykgYmVjYXVzZSBpdAotICAgbWFpbnRhaW5zIHN0YXRlIGV2ZW4gdGhvdWdoIGEgd2FpdCBoYXNuJ3QgaGFwcGVuZWQsIHRoZXJlIGlzIHN0aWxsCi0gICBhIGxvc3Qgd2FrZXVwIHByb2JsZW0gaWYgbW9yZSB0aGFuIG9uZSB0aHJlYWQgYXJlIGludGVycnVwdGVkIGluIHRoZQotICAgY3JpdGljYWwgcGxhY2UuICBBIHNlbWFwaG9yZSBzb2x2ZXMgdGhhdC4KLSAgIEJlY2F1c2UgaXQgaXMgb2sgdG8gc2lnbmFsIGEgY29uZGl0aW9uIHZhcmlhYmxlIHdpdGggbm8gb25lCi0gICB3YWl0aW5nLCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG51bWJlciBvZgotICAgd2FpdGluZyB0aHJlYWRzLiAgT3RoZXJ3aXNlLCB0aGUgc2VtYXBob3JlJ3Mgc3RhdGUgY291bGQgcmlzZQotICAgd2l0aG91dCBib3VuZC4KLQotICAgR2VuZXJpYyBlbXVsYXRpb25zIG9mIHRoZSBwdGhyZWFkX2NvbmRfKiBBUEkgdXNpbmcKLSAgIFdpbjMyIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIFdlYi4KLSAgIFRoZSBmb2xsb3dpbmcgcmVhZCBjYW4gYmUgZWRpZmljYXRpbmcgKG9yIG5vdCk6Ci0gICBodHRwOi8vd3d3LmNzZS53dXN0bC5lZHUvfnNjaG1pZHQvd2luMzItY3YtMS5odG1sCi0qLwotdHlwZWRlZiBzdHJ1Y3QgQ09ORF9UCi17Ci0gICAgSEFORExFIHNlbTsgICAgLyogdGhlIHNlbWFwaG9yZSAqLwotICAgIGludCBuX3dhaXRpbmc7IC8qIGhvdyBtYW55IGFyZSB1bnJlbGVhc2VkICovCi19IENPTkRfVDsKLQotX19pbmxpbmUgc3RhdGljIHZvaWQgX2NvbmRfaW5pdChDT05EX1QgKmNvbmQpCi17Ci0gICAgLyogQSBzZW1hcGhvcmUgd2l0aCBhIGxhcmdlIG1heCB2YWx1ZSwgIFRoZSBwb3NpdGl2ZSB2YWx1ZQotICAgICAqIGlzIG9ubHkgbmVlZGVkIHRvIGNhdGNoIHRob3NlICJsb3N0IHdha2V1cCIgZXZlbnRzIGFuZAotICAgICAqIHJhY2UgY29uZGl0aW9ucyB3aGVuIGEgdGltZWQgd2FpdCBlbGFwc2VzLgotICAgICAqLwotICAgIGlmICghKGNvbmQtPnNlbSA9IENyZWF0ZVNlbWFwaG9yZShOVUxMLCAwLCAxMDAwLCBOVUxMKSkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNyZWF0ZVNlbWFwaG9yZSgpIGZhaWxlZCIpOwotICAgIGNvbmQtPm5fd2FpdGluZyA9IDA7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX2ZpbmkoQ09ORF9UICpjb25kKQotewotICAgIEJPT0wgb2sgPSBDbG9zZUhhbmRsZShjb25kLT5zZW0pOwotICAgIGlmICghb2spCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNsb3NlSGFuZGxlKCkgZmFpbGVkIik7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX3dhaXQoQ09ORF9UICpjb25kLCBNVVRFWF9UICptdXQpCi17Ci0gICAgKytjb25kLT5uX3dhaXRpbmc7Ci0gICAgTVVURVhfVU5MT0NLKCptdXQpOwotICAgIC8qICJsb3N0IHdha2V1cCBidWciIHdvdWxkIG9jY3VyIGlmIHRoZSBjYWxsZXIgd2VyZSBpbnRlcnJ1cHRlZCBoZXJlLAotICAgICAqIGJ1dCB3ZSBhcmUgc2FmZSBiZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNlbWFwaG9yZSB3aWNoIGhhcyBhbiBpbnRlcm5hbAotICAgICAqIGNvdW50LgotICAgICAqLwotICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0KGNvbmQtPnNlbSwgSU5GSU5JVEUpID09IFdBSVRfRkFJTEVEKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJXYWl0Rm9yU2luZ2xlT2JqZWN0KCkgZmFpbGVkIik7Ci0gICAgTVVURVhfTE9DSygqbXV0KTsKLX0KLQotX19pbmxpbmUgc3RhdGljIGludCBfY29uZF90aW1lZF93YWl0KENPTkRfVCAqY29uZCwgTVVURVhfVCAqbXV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzKQotewotICAgIERXT1JEIHI7Ci0gICAgKytjb25kLT5uX3dhaXRpbmc7Ci0gICAgTVVURVhfVU5MT0NLKCptdXQpOwotICAgIHIgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGNvbmQtPnNlbSwgdXMgLyAxMDAwKTsKLSAgICBpZiAociA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiV2FpdEZvclNpbmdsZU9iamVjdCgpIGZhaWxlZCIpOwotICAgIE1VVEVYX0xPQ0soKm11dCk7Ci0gICAgaWYgKHIgPT0gV0FJVF9USU1FT1VUKQotICAgICAgICAtLWNvbmQtPm5fd2FpdGluZzsKLSAgICAgICAgLyogSGVyZSB3ZSBoYXZlIGEgYmVuaWduIHJhY2UgY29uZGl0aW9uIHdpdGggX2NvbmRfc2lnbmFsLiAgSWYgdGhlCi0gICAgICAgICAqIHdhaXQgb3BlcmF0aW9uIGhhcyB0aW1lZCBvdXQsIGJ1dCBiZWZvcmUgd2UgY2FuIGFjcXVpcmUgdGhlCi0gICAgICAgICAqIG11dGV4IGFnYWluIHRvIGRlY3JlbWVudCBuX3dhaXRpbmcsIGEgdGhyZWFkIGhvbGRpbmcgdGhlIG11dGV4Ci0gICAgICAgICAqIHN0aWxsIHNlZXMgYSBwb3NpdGl2ZSBuX3dhaXRpbmcgdmFsdWUgYW5kIG1heSBjYWxsCi0gICAgICAgICAqIFJlbGVhc2VTZW1hcGhvcmUgYW5kIGRlY3JlbWVudCBuX3dhaXRpbmcuCi0gICAgICAgICAqIFRoaXMgd2lsbCBjYXVzZSBuX3dhaXRpbmcgdG8gYmUgZGVjcmVtZW50ZWQgdHdpY2UuCi0gICAgICAgICAqIFRoaXMgaXMgYmVuaWduLCB0aG91Z2gsIGJlY2F1c2UgUmVsZWFzZVNlbWFwaG9yZSB3aWxsIGFsc28gaGF2ZQotICAgICAgICAgKiBiZWVuIGNhbGxlZCwgbGVhdmluZyB0aGUgc2VtYXBob3JlIHN0YXRlIHBvc2l0aXZlLiAgV2UgbWF5Ci0gICAgICAgICAqIHRodXMgZW5kIHVwIHdpdGggc2VtYXBob3JlIGluIHN0YXRlIDEsIGFuZCBuX3dhaXRpbmcgPT0gLTEsIGFuZAotICAgICAgICAgKiB0aGUgbmV4dCB0aW1lIHNvbWVvbmUgY2FsbHMgX2NvbmRfd2FpdCgpLCB0aGF0IHRocmVhZCB3aWxsCi0gICAgICAgICAqIHBhc3MgcmlnaHQgdGhyb3VnaCwgZGVjcmVtZW50aW5nIHRoZSBzZW1hcGhvcmUgc3RhdGUgYW5kCi0gICAgICAgICAqIGluY3JlbWVudGluZyBuX3dhaXRpbmcsIHRodXMgY29ycmVjdGluZyB0aGUgZXh0cmEgX2NvbmRfc2lnbmFsLgotICAgICAgICAgKi8KLSAgICByZXR1cm4gciA9PSBXQUlUX1RJTUVPVVQ7Ci19Ci0KLV9faW5saW5lIHN0YXRpYyB2b2lkIF9jb25kX3NpZ25hbChDT05EX1QgICpjb25kKSB7Ci0gICAgLyogTk9URTogVGhpcyBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBtdXRleCBoZWxkICovCi0gICAgaWYgKGNvbmQtPm5fd2FpdGluZyA+IDApIHsKLSAgICAgICAgaWYgKCFSZWxlYXNlU2VtYXBob3JlKGNvbmQtPnNlbSwgMSwgTlVMTCkpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJSZWxlYXNlU2VtYXBob3JlKCkgZmFpbGVkIik7Ci0gICAgICAgIC0tY29uZC0+bl93YWl0aW5nOwotICAgIH0KLX0KLQotI2RlZmluZSBDT05EX0lOSVQoY29uZCkgXAotICAgIF9jb25kX2luaXQoJihjb25kKSkKLSNkZWZpbmUgQ09ORF9GSU5JKGNvbmQpIFwKLSAgICBfY29uZF9maW5pKCYoY29uZCkpCi0jZGVmaW5lIENPTkRfU0lHTkFMKGNvbmQpIFwKLSAgICBfY29uZF9zaWduYWwoJihjb25kKSkKLSNkZWZpbmUgQ09ORF9XQUlUKGNvbmQsIG11dCkgXAotICAgIF9jb25kX3dhaXQoJihjb25kKSwgJihtdXQpKQotI2RlZmluZSBDT05EX1RJTUVEX1dBSVQoY29uZCwgbXV0LCB1cywgdGltZW91dF9yZXN1bHQpIGRvIHsgXAotICAgICh0aW1lb3V0X3Jlc3VsdCkgPSBfY29uZF90aW1lZF93YWl0KCYoY29uZCksICYobXV0KSwgdXMpOyBcCi19IHdoaWxlICgwKQotCi0jZWxzZQotCi0jZXJyb3IgWW91IG5lZWQgZWl0aGVyIGEgUE9TSVgtY29tcGF0aWJsZSBvciBhIFdpbmRvd3Mgc3lzdGVtIQotCi0jZW5kaWYgLyogX1BPU0lYX1RIUkVBRFMsIE5UX1RIUkVBRFMgKi8KIAogCiAvKiBXaGV0aGVyIHRoZSBHSUwgaXMgYWxyZWFkeSB0YWtlbiAoLTEgaWYgdW5pbml0aWFsaXplZCkuIFRoaXMgaXMgYXRvbWljCkBAIC0zMTMsMTMgKzE0OSwxNCBAQAogCiBzdGF0aWMgdm9pZCBkZXN0cm95X2dpbCh2b2lkKQogeworICAgIC8qIHNvbWUgcHRocmVhZC1saWtlIGltcGxlbWVudGF0aW9ucyB0aWUgdGhlIG11dGV4IHRvIHRoZSBjb25kCisgICAgICogYW5kIG11c3QgaGF2ZSB0aGUgY29uZCBkZXN0cm95ZWQgZmlyc3QuCisgICAgICovCisgICAgQ09ORF9GSU5JKGdpbF9jb25kKTsKICAgICBNVVRFWF9GSU5JKGdpbF9tdXRleCk7CiAjaWZkZWYgRk9SQ0VfU1dJVENISU5HCi0gICAgTVVURVhfRklOSShzd2l0Y2hfbXV0ZXgpOwotI2VuZGlmCi0gICAgQ09ORF9GSU5JKGdpbF9jb25kKTsKLSNpZmRlZiBGT1JDRV9TV0lUQ0hJTkcKICAgICBDT05EX0ZJTkkoc3dpdGNoX2NvbmQpOworICAgIE1VVEVYX0ZJTkkoc3dpdGNoX211dGV4KTsKICNlbmRpZgogICAgIF9QeV9hdG9taWNfc3RvcmVfZXhwbGljaXQoJmdpbF9sb2NrZWQsIC0xLCBfUHlfbWVtb3J5X29yZGVyX3JlbGVhc2UpOwogICAgIF9QeV9BTk5PVEFURV9SV0xPQ0tfREVTVFJPWSgmZ2lsX2xvY2tlZCk7CkBAIC0zNTUsMTMgKzE5MiwxMyBAQAogICAgICAgICBNVVRFWF9MT0NLKHN3aXRjaF9tdXRleCk7CiAgICAgICAgIC8qIE5vdCBzd2l0Y2hlZCB5ZXQgPT4gd2FpdCAqLwogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikgPT0gdHN0YXRlKSB7Ci0JICAgIFJFU0VUX0dJTF9EUk9QX1JFUVVFU1QoKTsKKyAgICAgICAgUkVTRVRfR0lMX0RST1BfUkVRVUVTVCgpOwogICAgICAgICAgICAgLyogTk9URTogaWYgQ09ORF9XQUlUIGRvZXMgbm90IGF0b21pY2FsbHkgc3RhcnQgd2FpdGluZyB3aGVuCiAgICAgICAgICAgICAgICByZWxlYXNpbmcgdGhlIG11dGV4LCBhbm90aGVyIHRocmVhZCBjYW4gcnVuIHRocm91Z2gsIHRha2UKICAgICAgICAgICAgICAgIHRoZSBHSUwgYW5kIGRyb3AgaXQgYWdhaW4sIGFuZCByZXNldCB0aGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBiZWZvcmUgd2UgZXZlbiBoYWQgYSBjaGFuY2UgdG8gd2FpdCBmb3IgaXQuICovCiAgICAgICAgICAgICBDT05EX1dBSVQoc3dpdGNoX2NvbmQsIHN3aXRjaF9tdXRleCk7Ci0JfQorICAgIH0KICAgICAgICAgTVVURVhfVU5MT0NLKHN3aXRjaF9tdXRleCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vY29kZWNzLmMgYi9QeXRob24vY29kZWNzLmMKaW5kZXggYzdmNGE5Yy4uNzk3YTQ1ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvZGVjcy5jCisrKyBiL1B5dGhvbi9jb2RlY3MuYwpAQCAtMTEsNiArMTEsOCBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK2NvbnN0IGNoYXIgKlB5X2hleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKKwogLyogLS0tIENvZGVjIFJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIEltcG9ydCB0aGUgc3RhbmRhcmQgZW5jb2RpbmdzIHBhY2thZ2Ugd2hpY2ggd2lsbCByZWdpc3RlciB0aGUgZmlyc3QKQEAgLTQ2NSw5ICs0NjcsMTEgQEAKIAogc3RhdGljIHZvaWQgd3JvbmdfZXhjZXB0aW9uX3R5cGUoUHlPYmplY3QgKmV4YykKIHsKLSAgICBQeU9iamVjdCAqdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXhjLCAiX19jbGFzc19fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgUHlPYmplY3QgKnR5cGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGV4YywgJlB5SWRfX19jbGFzc19fKTsKICAgICBpZiAodHlwZSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0eXBlLCAiX19uYW1lX18iKTsKKyAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHR5cGUsICZQeUlkX19fbmFtZV9fKTsKICAgICAgICAgUHlfREVDUkVGKHR5cGUpOwogICAgICAgICBpZiAobmFtZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtNTA2LDU3ICs1MTAsNTggQEAKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIC8qIG91Y2g6IHBhc3NpbmcgTlVMTCwgMCwgcG9zIGdpdmVzIE5vbmUgaW5zdGVhZCBvZiB1JycgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmZW5kLCAwLCBlbmQpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgUHlVbmljb2RlX05ldygwLCAwKSwgZW5kKTsKIH0KIAogCiBQeU9iamVjdCAqUHlDb2RlY19SZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3R1cGxlOwotICAgIFB5X3NzaXplX3Qgc3RhcnQ7Ci0gICAgUHlfc3NpemVfdCBlbmQ7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZCwgaSwgbGVuOwogCiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgZW5kLXN0YXJ0KTsKKyAgICAgICAgbGVuID0gZW5kIC0gc3RhcnQ7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCAnPycpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKSwgaSA9IHN0YXJ0OwotICAgICAgICAgICAgaTxlbmQ7ICsrcCwgKytpKQotICAgICAgICAgICAgKnAgPSAnPyc7Ci0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXN0dXBsZTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSwgJz8nKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgcmVzID0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVI7CiAgICAgICAgIGlmIChQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCAmcmVzLCAxLCBlbmQpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKENuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7CisgICAgICAgIGludCBraW5kOworICAgICAgICB2b2lkICpkYXRhOwogICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgZW5kLXN0YXJ0KTsKKyAgICAgICAgbGVuID0gZW5kIC0gc3RhcnQ7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUik7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpLCBpID0gc3RhcnQ7Ci0gICAgICAgICAgICBpPGVuZDsgKytwLCArK2kpCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSOwotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzdHVwbGU7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXMpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBsZW47IGkrKykKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpLCBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUik7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTU2OSw4MiArNTc0LDcyIEBACiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwotICAgICAgICBQeV9VTklDT0RFICpvdXRwOworICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRwOwogICAgICAgICBpbnQgcmVzc2l6ZTsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgcmVzc2l6ZSA9IDA7IHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIGlmICgqcDwxMCkKKyAgICAgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICAgICAgaWYgKGNoPDEwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMisxKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzIrMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMiszKzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis0KzE7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis1KzE7Ci0jZWxzZQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwKQotICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis1KzE7Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrNisxOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis3KzE7Ci0jZW5kaWYKICAgICAgICAgfQogICAgICAgICAvKiBhbGxvY2F0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgcmVzc2l6ZSk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcocmVzc2l6ZSwgMTI3KTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOwogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOwotICAgICAgICAgICAgcCA8IHN0YXJ0cCtlbmQ7ICsrcCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjID0gKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgICAgICAgICAgIGludCBkaWdpdHM7CiAgICAgICAgICAgICBpbnQgYmFzZTsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgKm91dHArKyA9ICcmJzsKICAgICAgICAgICAgICpvdXRwKysgPSAnIyc7Ci0gICAgICAgICAgICBpZiAoKnA8MTApIHsKKyAgICAgICAgICAgIGlmIChjaDwxMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDE7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDI7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDM7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDQ7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDA7CiAgICAgICAgICAgICB9Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA1OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDsKICAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDApIHsKLSAgICAgICAgICAgICAgICBkaWdpdHMgPSA1OwotICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMDApIHsKICAgICAgICAgICAgICAgICBkaWdpdHMgPSA2OwogICAgICAgICAgICAgICAgIGJhc2UgPSAxMDAwMDA7CiAgICAgICAgICAgICB9CkBAIC02NTIsMTYgKzY0NywxNSBAQAogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDc7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDAwMDA7CiAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgICAgIHdoaWxlIChkaWdpdHMtLT4wKSB7Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9ICcwJyArIGMvYmFzZTsKLSAgICAgICAgICAgICAgICBjICU9IGJhc2U7CisgICAgICAgICAgICAgICAgKm91dHArKyA9ICcwJyArIGNoL2Jhc2U7CisgICAgICAgICAgICAgICAgY2ggJT0gYmFzZTsKICAgICAgICAgICAgICAgICBiYXNlIC89IDEwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKm91dHArKyA9ICc7JzsKICAgICAgICAgfQotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICByZXR1cm4gcmVzdHVwbGU7CiAgICAgfQpAQCAtNjcxLDg3ICs2NjUsNjUgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeV9VTklDT0RFIGhleGRpZ2l0c1tdID0gewotICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLAotICAgICc4JywgJzknLCAnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnCi19OwotCiBQeU9iamVjdCAqUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCiB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotI2RlZmluZSBJU19TVVJST0dBVEVfUEFJUihwLCBlbmQpIFwKLSAgICAoKnAgPj0gMHhEODAwICYmICpwIDw9IDB4REJGRiAmJiAocCArIDEpIDwgZW5kICYmIFwKLSAgICAgKihwICsgMSkgPj0gMHhEQzAwICYmICoocCArIDEpIDw9IDB4REZGRikKLSNlbHNlCi0jZGVmaW5lIElTX1NVUlJPR0FURV9QQUlSKHAsIGVuZCkgMAotI2VuZGlmCiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSAqc3RhcnRwOwotICAgICAgICBQeV9VTklDT0RFICpvdXRwOworICAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRwOwogICAgICAgICBpbnQgcmVzc2l6ZTsKKyAgICAgICAgUHlfVUNTNCBjOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RhcnRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqZWN0KTsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCByZXNzaXplID0gMDsgcCA8IHN0YXJ0cCtlbmQ7ICsrcCkgewotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgaWYgKCpwID49IDB4MDAwMTAwMDApCisgICAgICAgIGZvciAoaSA9IHN0YXJ0LCByZXNzaXplID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzg7Ci0gICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgIGlmICgqcCA+PSAweDEwMCkgewotICAgICAgICAgICAgICAgIGlmIChJU19TVVJST0dBVEVfUEFJUihwLCBzdGFydHArZW5kKSkgewotICAgICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OwotICAgICAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKKyAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzI7CiAgICAgICAgIH0KLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHJlc3NpemUpOworICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHJlc3NpemUsIDEyNyk7CiAgICAgICAgIGlmIChyZXM9PU5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCBvdXRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzKTsKLSAgICAgICAgICAgIHAgPCBzdGFydHArZW5kOyArK3ApIHsKLSAgICAgICAgICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgICAgICAgICAgaSA8IGVuZDsgKytpKSB7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgKm91dHArKyA9ICdcXCc7Ci0gICAgICAgICAgICBpZiAoSVNfU1VSUk9HQVRFX1BBSVIocCwgc3RhcnRwK2VuZCkpIHsKLSAgICAgICAgICAgICAgICBjID0gKCgqcCAmIDB4M0ZGKSA8PCAxMCkgKyAoKihwICsgMSkgJiAweDNGRikgKyAweDEwMDAwOwotICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjID49IDB4MDAwMTAwMDApIHsKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjI4KSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjI0KSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjIwKSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjE2KSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjEyKSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjgpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjgpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjQpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjApJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTYpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ3UnOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjEyKSYweGZdOwotICAgICAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbKGM+PjgpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ3gnOwotICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+NCkmMHhmXTsKLSAgICAgICAgICAgICpvdXRwKysgPSBoZXhkaWdpdHNbYyYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+NCkmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbYyYweGZdOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHJlc3R1cGxlOwogICAgIH0KQEAgLTc1OSw3ICs3MzEsNiBAQAogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0jdW5kZWYgSVNfU1VSUk9HQVRFX1BBSVIKIH0KIAogLyogVGhpcyBoYW5kbGVyIGlzIGRlY2xhcmVkIHN0YXRpYyB1bnRpbCBzb21lb25lIGRlbW9uc3RyYXRlcwpAQCAtNzY5LDEyICs3NDAsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFICpwOwotICAgICAgICBQeV9VTklDT0RFICpzdGFydHA7CiAgICAgICAgIGNoYXIgKm91dHA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc4MiwxNSArNzUyLDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7CiAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMyooZW5kLXN0YXJ0KSk7CiAgICAgICAgIGlmICghcmVzKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG91dHAgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlcyk7Ci0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydDsgcCA8IHN0YXJ0cCtlbmQ7IHArKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICAvKiBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSAicmVhZHkiICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgaWYgKGNoIDwgMHhkODAwIHx8IGNoID4gMHhkZmZmKSB7CiAgICAgICAgICAgICAgICAgLyogTm90IGEgc3Vycm9nYXRlLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKQEAgLTgwOSw3ICs3NzksNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgICAgICBQeV9VTklDT0RFIGNoID0gMDsKKyAgICAgICAgUHlfVUNTNCBjaCA9IDA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQpAQCAtODM1LDcgKzgwNSwxMCBAQAogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsICZjaCwgMSwgc3RhcnQrMyk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgc3RhcnQrMyk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwpAQCAtODQ4LDEyICs4MjEsMTEgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKm9iamVjdDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgewotICAgICAgICBQeV9VTklDT0RFICpwOwotICAgICAgICBQeV9VTklDT0RFICpzdGFydHA7CiAgICAgICAgIGNoYXIgKm91dHA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg2MSwxNSArODMzLDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0YXJ0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iamVjdCk7CiAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZW5kLXN0YXJ0KTsKICAgICAgICAgaWYgKCFyZXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgb3V0cCA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzKTsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0OyBwIDwgc3RhcnRwK2VuZDsgcCsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CiAgICAgICAgICAgICBpZiAoY2ggPCAweGRjODAgfHwgY2ggPiAweGRjZmYpIHsKICAgICAgICAgICAgICAgICAvKiBOb3QgYSBVVEYtOGIgc3Vycm9nYXRlLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZXhjKSwgZXhjKTsKQEAgLTg4NSw4ICs4NTcsOSBAQAogICAgICAgICByZXR1cm4gcmVzdHVwbGU7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgY2hbNF07IC8qIGRlY29kZSB1cCB0byA0IGJhZCBieXRlcy4gKi8KKyAgICAgICAgUHlfVUNTMiBjaFs0XTsgLyogZGVjb2RlIHVwIHRvIDQgYmFkIGJ5dGVzLiAqLwogICAgICAgICBpbnQgY29uc3VtZWQgPSAwOwogICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MTEsNyArODg0LDEwIEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgY2gsIGNvbnN1bWVkLCBzdGFydCtjb25zdW1lZCk7CisgICAgICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzJCWVRFX0tJTkQsIGNoLCBjb25zdW1lZCk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHN0ciwgc3RhcnQrY29uc3VtZWQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgd3JvbmdfZXhjZXB0aW9uX3R5cGUoZXhjKTsKQEAgLTEwNDgsNyArMTAyNCw3IEBACiAgICAgaW50ZXJwLT5jb2RlY19lcnJvcl9yZWdpc3RyeSA9IFB5RGljdF9OZXcoKTsKIAogICAgIGlmIChpbnRlcnAtPmNvZGVjX2Vycm9yX3JlZ2lzdHJ5KSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YobWV0aG9kcykvc2l6ZW9mKG1ldGhvZHNbMF0pOyArK2kpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X0FSUkFZX0xFTkdUSChtZXRob2RzKTsgKytpKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5Q0Z1bmN0aW9uX05ldygmbWV0aG9kc1tpXS5kZWYsIE5VTEwpOwogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIGlmICghZnVuYykKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb21waWxlLmMgYi9QeXRob24vY29tcGlsZS5jCmluZGV4IGQ2ZjY0MGYuLmZmNTUyMjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb21waWxlLmMKKysrIGIvUHl0aG9uL2NvbXBpbGUuYwpAQCAtOTAsNiArOTAsMTMgQEAKICAgICBiYXNpY2Jsb2NrICpmYl9ibG9jazsKIH07CiAKK2VudW0geworICAgIENPTVBJTEVSX1NDT1BFX01PRFVMRSwKKyAgICBDT01QSUxFUl9TQ09QRV9DTEFTUywKKyAgICBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiwKKyAgICBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAorfTsKKwogLyogVGhlIGZvbGxvd2luZyBpdGVtcyBjaGFuZ2Ugb24gZW50cnkgYW5kIGV4aXQgb2YgY29kZSBibG9ja3MuCiAgICBUaGV5IG11c3QgYmUgc2F2ZWQgYW5kIHJlc3RvcmVkIHdoZW4gcmV0dXJuaW5nIHRvIGEgYmxvY2suCiAqLwpAQCAtOTcsNiArMTA0LDkgQEAKICAgICBQeVNURW50cnlPYmplY3QgKnVfc3RlOwogCiAgICAgUHlPYmplY3QgKnVfbmFtZTsKKyAgICBQeU9iamVjdCAqdV9xdWFsbmFtZTsgIC8qIGRvdC1zZXBhcmF0ZWQgcXVhbGlmaWVkIG5hbWUgKGxhenkpICovCisgICAgaW50IHVfc2NvcGVfdHlwZTsKKwogICAgIC8qIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBkaWN0cyB0aGF0IG1hcCBvYmplY3RzIHRvCiAgICAgICAgdGhlIGluZGV4IG9mIHRoZW0gaW4gY29fWFhYLiAgICAgIFRoZSBpbmRleCBpcyB1c2VkIGFzCiAgICAgICAgdGhlIGFyZ3VtZW50IGZvciBvcGNvZGVzIHRoYXQgcmVmZXIgdG8gdGhvc2UgY29sbGVjdGlvbnMuCkBAIC0xMzUsNiArMTQ1LDcgQEAKIAogc3RydWN0IGNvbXBpbGVyIHsKICAgICBjb25zdCBjaGFyICpjX2ZpbGVuYW1lOworICAgIFB5T2JqZWN0ICpjX2ZpbGVuYW1lX29iajsKICAgICBzdHJ1Y3Qgc3ltdGFibGUgKmNfc3Q7CiAgICAgUHlGdXR1cmVGZWF0dXJlcyAqY19mdXR1cmU7IC8qIHBvaW50ZXIgdG8gbW9kdWxlJ3MgX19mdXR1cmVfXyAqLwogICAgIFB5Q29tcGlsZXJGbGFncyAqY19mbGFnczsKQEAgLTE0OCw3ICsxNTksNyBAQAogICAgIFB5QXJlbmEgKmNfYXJlbmE7ICAgICAgICAgICAgLyogcG9pbnRlciB0byBtZW1vcnkgYWxsb2NhdGlvbiBhcmVuYSAqLwogfTsKIAotc3RhdGljIGludCBjb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgdm9pZCAqLCBpbnQpOworc3RhdGljIGludCBjb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgaW50LCB2b2lkICosIGludCk7CiBzdGF0aWMgdm9pZCBjb21waWxlcl9mcmVlKHN0cnVjdCBjb21waWxlciAqKTsKIHN0YXRpYyBiYXNpY2Jsb2NrICpjb21waWxlcl9uZXdfYmxvY2soc3RydWN0IGNvbXBpbGVyICopOwogc3RhdGljIGludCBjb21waWxlcl9uZXh0X2luc3RyKHN0cnVjdCBjb21waWxlciAqLCBiYXNpY2Jsb2NrICopOwpAQCAtMTc4LDEyICsxODksMTMgQEAKIHN0YXRpYyBpbnQgaW5wbGFjZV9iaW5vcChzdHJ1Y3QgY29tcGlsZXIgKiwgb3BlcmF0b3JfdHkpOwogc3RhdGljIGludCBleHByX2NvbnN0YW50KHN0cnVjdCBjb21waWxlciAqLCBleHByX3R5KTsKIAotc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGFyYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3MpOworc3RhdGljIGludCBjb21waWxlcl90cnlfZXhjZXB0KHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIAogc3RhdGljIFB5Q29kZU9iamVjdCAqYXNzZW1ibGUoc3RydWN0IGNvbXBpbGVyICosIGludCBhZGROb25lKTsKIHN0YXRpYyBQeU9iamVjdCAqX19kb2NfXzsKQEAgLTE5NSwxNiArMjA3LDE3IEBACiB7CiAgICAgLyogTmFtZSBtYW5nbGluZzogX19wcml2YXRlIGJlY29tZXMgX2NsYXNzbmFtZV9fcHJpdmF0ZS4KICAgICAgICBUaGlzIGlzIGluZGVwZW5kZW50IGZyb20gaG93IHRoZSBuYW1lIGlzIHVzZWQuICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqcCwgKm5hbWUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpZGVudCk7Ci0gICAgUHlfVU5JQ09ERSAqYnVmZmVyOwotICAgIHNpemVfdCBubGVuLCBwbGVuOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgc2l6ZV90IG5sZW4sIHBsZW4sIGlwcml2OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKICAgICBpZiAocHJpdmF0ZW9iaiA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2socHJpdmF0ZW9iaikgfHwKLSAgICAgICAgbmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gIT0gJ18nIHx8IG5hbWVbMV0gIT0gJ18nKSB7CisgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIDApICE9ICdfJyB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRF9DSEFSKGlkZW50LCAxKSAhPSAnXycpIHsKICAgICAgICAgUHlfSU5DUkVGKGlkZW50KTsKICAgICAgICAgcmV0dXJuIGlkZW50OwogICAgIH0KLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHJpdmF0ZW9iaik7Ci0gICAgbmxlbiA9IFB5X1VOSUNPREVfc3RybGVuKG5hbWUpOworICAgIG5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpZGVudCk7CisgICAgcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByaXZhdGVvYmopOwogICAgIC8qIERvbid0IG1hbmdsZSBfX2lkX18gb3IgbmFtZXMgd2l0aCBkb3RzLgogCiAgICAgICAgVGhlIG9ubHkgdGltZSBhIG5hbWUgd2l0aCBhIGRvdCBjYW4gb2NjdXIgaXMgd2hlbgpAQCAtMjE0LDMyICsyMjcsNDQgQEAKICAgICAgICBUT0RPKGpoeWx0b24pOiBEZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIHN1cHBvcnQKICAgICAgICBtYW5nbGluZyBvZiB0aGUgbW9kdWxlIG5hbWUsIGUuZy4gX19NLlguCiAgICAgKi8KLSAgICBpZiAoKG5hbWVbbmxlbi0xXSA9PSAnXycgJiYgbmFtZVtubGVuLTJdID09ICdfJykKLSAgICAgICAgfHwgUHlfVU5JQ09ERV9zdHJjaHIobmFtZSwgJy4nKSkgeworICAgIGlmICgoUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgbmxlbi0xKSA9PSAnXycgJiYKKyAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIG5sZW4tMikgPT0gJ18nKSB8fAorICAgICAgICBQeVVuaWNvZGVfRmluZENoYXIoaWRlbnQsICcuJywgMCwgbmxlbiwgMSkgIT0gLTEpIHsKICAgICAgICAgUHlfSU5DUkVGKGlkZW50KTsKICAgICAgICAgcmV0dXJuIGlkZW50OyAvKiBEb24ndCBtYW5nbGUgX193aGF0ZXZlcl9fICovCiAgICAgfQogICAgIC8qIFN0cmlwIGxlYWRpbmcgdW5kZXJzY29yZXMgZnJvbSBjbGFzcyBuYW1lICovCi0gICAgd2hpbGUgKCpwID09ICdfJykKLSAgICAgICAgcCsrOwotICAgIGlmICgqcCA9PSAwKSB7CisgICAgaXByaXYgPSAwOworICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRF9DSEFSKHByaXZhdGVvYmosIGlwcml2KSA9PSAnXycpCisgICAgICAgIGlwcml2Kys7CisgICAgaWYgKGlwcml2ID09IHBsZW4pIHsKICAgICAgICAgUHlfSU5DUkVGKGlkZW50KTsKICAgICAgICAgcmV0dXJuIGlkZW50OyAvKiBEb24ndCBtYW5nbGUgaWYgY2xhc3MgaXMganVzdCB1bmRlcnNjb3JlcyAqLwogICAgIH0KLSAgICBwbGVuID0gUHlfVU5JQ09ERV9zdHJsZW4ocCk7CisgICAgcGxlbiAtPSBpcHJpdjsKIAogICAgIGFzc2VydCgxIDw9IFBZX1NTSVpFX1RfTUFYIC0gbmxlbik7CiAgICAgYXNzZXJ0KDEgKyBubGVuIDw9IFBZX1NTSVpFX1RfTUFYIC0gcGxlbik7CiAKLSAgICBpZGVudCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAxICsgbmxlbiArIHBsZW4pOwotICAgIGlmICghaWRlbnQpCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShpZGVudCk7CisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShwcml2YXRlb2JqKSA+IG1heGNoYXIpCisgICAgICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocHJpdmF0ZW9iaik7CisKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KDEgKyBubGVuICsgcGxlbiwgbWF4Y2hhcik7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwotICAgIC8qIGlkZW50ID0gIl8iICsgcFs6cGxlbl0gKyBuYW1lICMgaS5lLiAxK3BsZW4rbmxlbiBieXRlcyAqLwotICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlkZW50KTsKLSAgICBidWZmZXJbMF0gPSAnXyc7Ci0gICAgUHlfVU5JQ09ERV9zdHJuY3B5KGJ1ZmZlcisxLCBwLCBwbGVuKTsKLSAgICBQeV9VTklDT0RFX3N0cmNweShidWZmZXIrMStwbGVuLCBuYW1lKTsKLSAgICByZXR1cm4gaWRlbnQ7CisgICAgLyogaWRlbnQgPSAiXyIgKyBwcml2W2lwcml2Ol0gKyBpZGVudCAjIGkuZS4gMStwbGVuK25sZW4gYnl0ZXMgKi8KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzdWx0KSwgUHlVbmljb2RlX0RBVEEocmVzdWx0KSwgMCwgJ18nKTsKKyAgICBpZiAoUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMSwgcHJpdmF0ZW9iaiwgaXByaXYsIHBsZW4pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMocmVzdWx0LCBwbGVuKzEsIGlkZW50LCAwLCBubGVuKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTI3Miw2ICsyOTcsOSBAQAogICAgIGlmICghY29tcGlsZXJfaW5pdCgmYykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOworICAgIGMuY19maWxlbmFtZV9vYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKKyAgICBpZiAoIWMuY19maWxlbmFtZV9vYmopCisgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBjLmNfYXJlbmEgPSBhcmVuYTsKICAgICBjLmNfZnV0dXJlID0gUHlGdXR1cmVfRnJvbUFTVChtb2QsIGZpbGVuYW1lKTsKICAgICBpZiAoYy5jX2Z1dHVyZSA9PSBOVUxMKQpAQCAtMzI0LDYgKzM1Miw4IEBACiAgICAgICAgIFB5U3ltdGFibGVfRnJlZShjLT5jX3N0KTsKICAgICBpZiAoYy0+Y19mdXR1cmUpCiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoYy0+Y19mdXR1cmUpOworICAgIGlmIChjLT5jX2ZpbGVuYW1lX29iaikKKyAgICAgICAgUHlfREVDUkVGKGMtPmNfZmlsZW5hbWVfb2JqKTsKICAgICBQeV9ERUNSRUYoYy0+Y19zdGFjayk7CiB9CiAKQEAgLTQ1OCw2ICs0ODgsNyBAQAogICAgIH0KICAgICBQeV9DTEVBUih1LT51X3N0ZSk7CiAgICAgUHlfQ0xFQVIodS0+dV9uYW1lKTsKKyAgICBQeV9DTEVBUih1LT51X3F1YWxuYW1lKTsKICAgICBQeV9DTEVBUih1LT51X2NvbnN0cyk7CiAgICAgUHlfQ0xFQVIodS0+dV9uYW1lcyk7CiAgICAgUHlfQ0xFQVIodS0+dV92YXJuYW1lcyk7CkBAIC00NjgsOCArNDk5LDggQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfZW50ZXJfc2NvcGUoc3RydWN0IGNvbXBpbGVyICpjLCBpZGVudGlmaWVyIG5hbWUsIHZvaWQgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8pCitjb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGlkZW50aWZpZXIgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzY29wZV90eXBlLCB2b2lkICprZXksIGludCBsaW5lbm8pCiB7CiAgICAgc3RydWN0IGNvbXBpbGVyX3VuaXQgKnU7CiAKQEAgLTQ4MCw2ICs1MTEsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbWVtc2V0KHUsIDAsIHNpemVvZihzdHJ1Y3QgY29tcGlsZXJfdW5pdCkpOworICAgIHUtPnVfc2NvcGVfdHlwZSA9IHNjb3BlX3R5cGU7CiAgICAgdS0+dV9hcmdjb3VudCA9IDA7CiAgICAgdS0+dV9rd29ubHlhcmdjb3VudCA9IDA7CiAgICAgdS0+dV9zdGUgPSBQeVN5bXRhYmxlX0xvb2t1cChjLT5jX3N0LCBrZXkpOwpAQCAtNTY3LDYgKzU5OSw1OSBAQAogCiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjb21waWxlcl9zY29wZV9xdWFsbmFtZShzdHJ1Y3QgY29tcGlsZXIgKmMpCit7CisgICAgUHlfc3NpemVfdCBzdGFja19zaXplLCBpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKGRvdCwgIi4iKTsKKyAgICBfUHlfc3RhdGljX3N0cmluZyhsb2NhbHMsICI8bG9jYWxzPiIpOworICAgIHN0cnVjdCBjb21waWxlcl91bml0ICp1OworICAgIFB5T2JqZWN0ICpjYXBzdWxlLCAqbmFtZSwgKnNlcSwgKmRvdF9zdHIsICpsb2NhbHNfc3RyOworCisgICAgdSA9IGMtPnU7CisgICAgaWYgKHUtPnVfcXVhbG5hbWUgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodS0+dV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiB1LT51X3F1YWxuYW1lOworICAgIH0KKworICAgIHNlcSA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKHNlcSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0YWNrX3NpemUgPSBQeUxpc3RfR0VUX1NJWkUoYy0+Y19zdGFjayk7CisgICAgZm9yIChpID0gMDsgaSA8IHN0YWNrX3NpemU7IGkrKykgeworICAgICAgICBjYXBzdWxlID0gUHlMaXN0X0dFVF9JVEVNKGMtPmNfc3RhY2ssIGkpOworICAgICAgICB1ID0gKHN0cnVjdCBjb21waWxlcl91bml0ICopUHlDYXBzdWxlX0dldFBvaW50ZXIoY2Fwc3VsZSwgQ09NUElMRVJfQ0FQU1VMRV9OQU1FX0NPTVBJTEVSX1VOSVQpOworICAgICAgICBhc3NlcnQodSk7CisgICAgICAgIGlmICh1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHNlcSwgdS0+dV9uYW1lKSkKKyAgICAgICAgICAgIGdvdG8gX2Vycm9yOworICAgICAgICBpZiAodS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OKSB7CisgICAgICAgICAgICBsb2NhbHNfc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJmxvY2Fscyk7CisgICAgICAgICAgICBpZiAobG9jYWxzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gX2Vycm9yOworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VxLCBsb2NhbHNfc3RyKSkKKyAgICAgICAgICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICB1ID0gYy0+dTsKKyAgICBpZiAoUHlMaXN0X0FwcGVuZChzZXEsIHUtPnVfbmFtZSkpCisgICAgICAgIGdvdG8gX2Vycm9yOworICAgIGRvdF9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmZG90KTsKKyAgICBpZiAoZG90X3N0ciA9PSBOVUxMKQorICAgICAgICBnb3RvIF9lcnJvcjsKKyAgICBuYW1lID0gUHlVbmljb2RlX0pvaW4oZG90X3N0ciwgc2VxKTsKKyAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICB1LT51X3F1YWxuYW1lID0gbmFtZTsKKyAgICBQeV9YSU5DUkVGKG5hbWUpOworICAgIHJldHVybiBuYW1lOworCitfZXJyb3I6CisgICAgUHlfWERFQ1JFRihzZXEpOworICAgIHJldHVybiBOVUxMOworfQorCiAvKiBBbGxvY2F0ZSBhIG5ldyBibG9jayBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdC4KICAgIFJldHVybnMgTlVMTCBvbiBlcnJvci4KICovCkBAIC03NzcsNyArODYyLDggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBZSUVMRF9WQUxVRToKICAgICAgICAgICAgIHJldHVybiAwOwotCisgICAgICAgIGNhc2UgWUlFTERfRlJPTToKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBQT1BfQkxPQ0s6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBQT1BfRVhDRVBUOgpAQCAtODYzLDkgKzk0OSw5IEBACiAgICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVJfS1c6CiAgICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0yOwogICAgICAgICBjYXNlIE1BS0VfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgICAgIHJldHVybiAtMSAtTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwogICAgICAgICBjYXNlIE1BS0VfQ0xPU1VSRToKLSAgICAgICAgICAgIHJldHVybiAtMSAtIE5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgICAgIHJldHVybiAtMiAtIE5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKICN1bmRlZiBOQVJHUwogICAgICAgICBjYXNlIEJVSUxEX1NMSUNFOgogICAgICAgICAgICAgaWYgKG9wYXJnID09IDMpCkBAIC0xMTk1LDcgKzEyODEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIFVzZSAwIGZvciBmaXJzdGxpbmVubyBpbml0aWFsbHksIHdpbGwgZml4dXAgaW4gYXNzZW1ibGUoKS4gKi8KLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG1vZHVsZSwgbW9kLCAwKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG1vZHVsZSwgQ09NUElMRVJfU0NPUEVfTU9EVUxFLCBtb2QsIDApKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKG1vZC0+a2luZCkgewogICAgIGNhc2UgTW9kdWxlX2tpbmQ6CkBAIC0xMjcxLDExICsxMzU3LDE1IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIGludCBhcmdzKQorY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgaW50IGFyZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBpbnQgaSwgZnJlZSA9IFB5Q29kZV9HZXROdW1GcmVlKGNvKTsKKyAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcXVhbG5hbWUgPSBjby0+Y29fbmFtZTsKKwogICAgIGlmIChmcmVlID09IDApIHsKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwogICAgICAgICBBRERPUF9JKGMsIE1BS0VfRlVOQ1RJT04sIGFyZ3MpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xMzEyLDYgKzE0MDIsNyBAQAogICAgIH0KICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKICAgICBBRERPUF9JKGMsIE1BS0VfQ0xPU1VSRSwgYXJncyk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xNDU3LDcgKzE1NDgsNyBAQAogY29tcGlsZXJfZnVuY3Rpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqZmlyc3RfY29uc3QgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSwgKmZpcnN0X2NvbnN0ID0gUHlfTm9uZTsKICAgICBhcmd1bWVudHNfdHkgYXJncyA9IHMtPnYuRnVuY3Rpb25EZWYuYXJnczsKICAgICBleHByX3R5IHJldHVybnMgPSBzLT52LkZ1bmN0aW9uRGVmLnJldHVybnM7CiAgICAgYXNkbF9zZXEqIGRlY29zID0gcy0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdDsKQEAgLTE0ODMsNyArMTU3NCw4IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGFzc2VydCgobnVtX2Fubm90YXRpb25zICYgMHhGRkZGKSA9PSBudW1fYW5ub3RhdGlvbnMpOwogCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkZ1bmN0aW9uRGVmLm5hbWUsICh2b2lkICopcywKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuRnVuY3Rpb25EZWYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLCAodm9pZCAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTUwNSwxNCArMTU5NywxOSBAQAogICAgICAgICBWSVNJVF9JTl9TQ09QRShjLCBzdG10LCBzdCk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CisgICAgcXVhbG5hbWUgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwotICAgIGlmIChjbyA9PSBOVUxMKQorICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMIHx8IGNvID09IE5VTEwpIHsKKyAgICAgICAgUHlfWERFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgIFB5X1hERUNSRUYoY28pOwogICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwogICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7CiAgICAgYXJnbGVuZ3RoIHw9IG51bV9hbm5vdGF0aW9ucyA8PCAxNjsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKKyAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKICAgICAvKiBkZWNvcmF0b3JzICovCkBAIC0xNTQ3LDcgKzE2NDQsOCBAQAogICAgICovCiAKICAgICAvKiAxLiBjb21waWxlIHRoZSBjbGFzcyBib2R5IGludG8gYSBjb2RlIG9iamVjdCAqLwotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5DbGFzc0RlZi5uYW1lLCAodm9pZCAqKXMsIHMtPmxpbmVubykpCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkNsYXNzRGVmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT01QSUxFUl9TQ09QRV9DTEFTUywgKHZvaWQgKilzLCBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKICAgICAvKiB0aGlzIGJsb2NrIHJlcHJlc2VudHMgd2hhdCB3ZSBkbyBpbiB0aGUgbmV3IHNjb3BlICovCiAgICAgewpAQCAtMTU3Nyw2ICsxNjc1LDIxIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgLyogc3RvcmUgdGhlIF9fcXVhbG5hbWVfXyAqLworICAgICAgICBzdHIgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKKyAgICAgICAgaWYgKCFzdHIpIHsKKyAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHN0ciwgY29uc3RzKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3F1YWxuYW1lX18iKTsKKyAgICAgICAgaWYgKCFzdHIgfHwgIWNvbXBpbGVyX25hbWVvcChjLCBzdHIsIFN0b3JlKSkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihzdHIpOworICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICAvKiBjb21waWxlIHRoZSBib2R5IHByb3BlciAqLwogICAgICAgICBpZiAoIWNvbXBpbGVyX2JvZHkoYywgcy0+di5DbGFzc0RlZi5ib2R5KSkgewogICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKQEAgLTE2MTMsNyArMTcyNiw3IEBACiAgICAgQURET1AoYywgTE9BRF9CVUlMRF9DTEFTUyk7CiAKICAgICAvKiAzLiBsb2FkIGEgZnVuY3Rpb24gKG9yIGNsb3N1cmUpIG1hZGUgZnJvbSB0aGUgY29kZSBvYmplY3QgKi8KLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDApOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIC8qIDQuIGxvYWQgY2xhc3MgbmFtZSAqLwpAQCAtMTY2NCw2ICsxNzc3LDcgQEAKIGNvbXBpbGVyX2xhbWJkYShzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZTsKICAgICBzdGF0aWMgaWRlbnRpZmllciBuYW1lOwogICAgIGludCBrd19kZWZhdWx0X2NvdW50ID0gMCwgYXJnbGVuZ3RoOwogICAgIGFyZ3VtZW50c190eSBhcmdzID0gZS0+di5MYW1iZGEuYXJnczsKQEAgLTE2ODMsNyArMTc5Nyw4IEBACiAgICAgfQogICAgIGlmIChhcmdzLT5kZWZhdWx0cykKICAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsICh2b2lkICopZSwgZS0+bGluZW5vKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8qIE1ha2UgTm9uZSB0aGUgZmlyc3QgY29uc3RhbnQsIHNvIHRoZSBsYW1iZGEgY2FuJ3QgaGF2ZSBhCkBAIC0xNzAxLDEzICsxODE2LDE1IEBACiAgICAgICAgIEFERE9QX0lOX1NDT1BFKGMsIFJFVFVSTl9WQUxVRSk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CisgICAgcXVhbG5hbWUgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwotICAgIGlmIChjbyA9PSBOVUxMKQorICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMIHx8IGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKICAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIHJldHVybiAxOwpAQCAtMTkxNiw3ICsyMDMzLDEzIEBACiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYm9keSk7CiAgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYm9keSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUZpbmFsbHkuYm9keSk7CisgICAgaWYgKHMtPnYuVHJ5LmhhbmRsZXJzICYmIGFzZGxfc2VxX0xFTihzLT52LlRyeS5oYW5kbGVycykpIHsKKyAgICAgICAgaWYgKCFjb21waWxlcl90cnlfZXhjZXB0KGMsIHMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnkuYm9keSk7CisgICAgfQogICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CiAgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYm9keSk7CiAKQEAgLTE5MjQsNyArMjA0Nyw3IEBACiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZW5kKTsKICAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEZJTkFMTFlfRU5ELCBlbmQpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmZpbmFsYm9keSk7CisgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5LmZpbmFsYm9keSk7CiAgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOwogICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGVuZCk7CiAKQEAgLTE5NzgsMTUgKzIxMDEsMTUgQEAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBib2R5KTsKICAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEVYQ0VQVCwgYm9keSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUV4Y2VwdC5ib2R5KTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnkuYm9keSk7CiAgICAgQURET1AoYywgUE9QX0JMT0NLKTsKICAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEVYQ0VQVCwgYm9keSk7CiAgICAgQURET1BfSlJFTChjLCBKVU1QX0ZPUldBUkQsIG9yZWxzZSk7Ci0gICAgbiA9IGFzZGxfc2VxX0xFTihzLT52LlRyeUV4Y2VwdC5oYW5kbGVycyk7CisgICAgbiA9IGFzZGxfc2VxX0xFTihzLT52LlRyeS5oYW5kbGVycyk7CiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgaGFuZGxlciA9IChleGNlcHRoYW5kbGVyX3R5KWFzZGxfc2VxX0dFVCgKLSAgICAgICAgICAgIHMtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzLCBpKTsKKyAgICAgICAgICAgIHMtPnYuVHJ5LmhhbmRsZXJzLCBpKTsKICAgICAgICAgaWYgKCFoYW5kbGVyLT52LkV4Y2VwdEhhbmRsZXIudHlwZSAmJiBpIDwgbi0xKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICJkZWZhdWx0ICdleGNlcHQ6JyBtdXN0IGJlIGxhc3QiKTsKICAgICAgICAgYy0+dS0+dV9saW5lbm9fc2V0ID0gMDsKQEAgLTIwNzMsMTIgKzIxOTYsMjEgQEAKICAgICB9CiAgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOwogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIG9yZWxzZSk7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0Lm9yZWxzZSk7CisgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5Lm9yZWxzZSk7CiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZW5kKTsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdHJ5KHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKSB7CisgICAgaWYgKHMtPnYuVHJ5LmZpbmFsYm9keSAmJiBhc2RsX3NlcV9MRU4ocy0+di5UcnkuZmluYWxib2R5KSkKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9maW5hbGx5KGMsIHMpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9leGNlcHQoYywgcyk7Cit9CisKKworc3RhdGljIGludAogY29tcGlsZXJfaW1wb3J0X2FzKHN0cnVjdCBjb21waWxlciAqYywgaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyIGFzbmFtZSkKIHsKICAgICAvKiBUaGUgSU1QT1JUX05BTUUgb3Bjb2RlIHdhcyBhbHJlYWR5IGdlbmVyYXRlZC4gIFRoaXMgZnVuY3Rpb24KQEAgLTIwODcsMjIgKzIyMTksMjcgQEAKICAgICAgICBJZiB0aGVyZSBpcyBhIGRvdCBpbiBuYW1lLCB3ZSBuZWVkIHRvIHNwbGl0IGl0IGFuZCBlbWl0IGEKICAgICAgICBMT0FEX0FUVFIgZm9yIGVhY2ggbmFtZS4KICAgICAqLwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnNyYyA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKHNyYywgJy4nKTsKLSAgICBpZiAoZG90KSB7CisgICAgUHlfc3NpemVfdCBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICBpZiAoZG90ID09IC0yKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGRvdCAhPSAtMSkgewogICAgICAgICAvKiBDb25zdW1lIHRoZSBiYXNlIG1vZHVsZSBuYW1lIHRvIGdldCB0aGUgZmlyc3QgYXR0cmlidXRlICovCi0gICAgICAgIHNyYyA9IGRvdCArIDE7Ci0gICAgICAgIHdoaWxlIChkb3QpIHsKLSAgICAgICAgICAgIC8qIE5CIHNyYyBpcyBvbmx5IGRlZmluZWQgd2hlbiBkb3QgIT0gTlVMTCAqLworICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IGRvdCArIDE7CisgICAgICAgIHdoaWxlIChkb3QgIT0gLTEpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyOwotICAgICAgICAgICAgZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoc3JjLCAnLicpOwotICAgICAgICAgICAgYXR0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdCA/IGRvdCAtIHNyYyA6IFB5X1VOSUNPREVfc3RybGVuKHNyYykpOworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpLCAxKTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTIpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgYXR0ciA9IFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdCAhPSAtMSkgPyBkb3QgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkpOwogICAgICAgICAgICAgaWYgKCFhdHRyKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9BVFRSLCBhdHRyLCBuYW1lcyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7Ci0gICAgICAgICAgICBzcmMgPSBkb3QgKyAxOworICAgICAgICAgICAgcG9zID0gZG90ICsgMTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gY29tcGlsZXJfbmFtZW9wKGMsIGFzbmFtZSwgU3RvcmUpOwpAQCAtMjE0MSwxMyArMjI3OCwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWRlbnRpZmllciB0bXAgPSBhbGlhcy0+bmFtZTsKLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmJhc2UgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhbGlhcy0+bmFtZSk7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpkb3QgPSBQeV9VTklDT0RFX3N0cmNocihiYXNlLCAnLicpOwotICAgICAgICAgICAgaWYgKGRvdCkKLSAgICAgICAgICAgICAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90IC0gYmFzZSk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcigKKyAgICAgICAgICAgICAgICBhbGlhcy0+bmFtZSwgJy4nLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChhbGlhcy0+bmFtZSksIDEpOworICAgICAgICAgICAgaWYgKGRvdCAhPSAtMSkKKyAgICAgICAgICAgICAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGFsaWFzLT5uYW1lLCAwLCBkb3QpOwogICAgICAgICAgICAgciA9IGNvbXBpbGVyX25hbWVvcChjLCB0bXAsIFN0b3JlKTsKLSAgICAgICAgICAgIGlmIChkb3QpIHsKKyAgICAgICAgICAgIGlmIChkb3QgIT0gLTEpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcikKQEAgLTIyMTAsNyArMjM0Niw3IEBACiAgICAgICAgIGFsaWFzX3R5IGFsaWFzID0gKGFsaWFzX3R5KWFzZGxfc2VxX0dFVChzLT52LkltcG9ydEZyb20ubmFtZXMsIGkpOwogICAgICAgICBpZGVudGlmaWVyIHN0b3JlX25hbWU7CiAKLSAgICAgICAgaWYgKGkgPT0gMCAmJiAqUHlVbmljb2RlX0FTX1VOSUNPREUoYWxpYXMtPm5hbWUpID09ICcqJykgeworICAgICAgICBpZiAoaSA9PSAwICYmIFB5VW5pY29kZV9SRUFEX0NIQVIoYWxpYXMtPm5hbWUsIDApID09ICcqJykgewogICAgICAgICAgICAgYXNzZXJ0KG4gPT0gMSk7CiAgICAgICAgICAgICBBRERPUChjLCBJTVBPUlRfU1RBUik7CiAgICAgICAgICAgICByZXR1cm4gMTsKQEAgLTIzMjUsMTAgKzI0NjEsOCBAQAogICAgICAgICB9CiAgICAgICAgIEFERE9QX0koYywgUkFJU0VfVkFSQVJHUywgbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHJ5RXhjZXB0X2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl90cnlfZXhjZXB0KGMsIHMpOwotICAgIGNhc2UgVHJ5RmluYWxseV9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2ZpbmFsbHkoYywgcyk7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeShjLCBzKTsKICAgICBjYXNlIEFzc2VydF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfYXNzZXJ0KGMsIHMpOwogICAgIGNhc2UgSW1wb3J0X2tpbmQ6CkBAIC0yMzU5LDcgKzI0OTMsNyBAQAogICAgIGNhc2UgQ29udGludWVfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbnRpbnVlKGMpOwogICAgIGNhc2UgV2l0aF9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfd2l0aChjLCBzKTsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3dpdGgoYywgcywgMCk7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtMjUyNiw3ICsyNjYwLDcgQEAKICAgICB9CiAKICAgICAvKiBYWFggTGVhdmUgYXNzZXJ0IGhlcmUsIGJ1dCBoYW5kbGUgX19kb2NfXyBhbmQgdGhlIGxpa2UgYmV0dGVyICovCi0gICAgYXNzZXJ0KHNjb3BlIHx8IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpWzBdID09ICdfJyk7CisgICAgYXNzZXJ0KHNjb3BlIHx8IFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZSwgMCkgPT0gJ18nKTsKIAogICAgIHN3aXRjaCAob3B0eXBlKSB7CiAgICAgY2FzZSBPUF9ERVJFRjoKQEAgLTI5MDQsMTEgKzMwMzgsMTMgQEAKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKICAgICBleHByX3R5IG91dGVybW9zdF9pdGVyOworICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IE5VTEw7CiAKICAgICBvdXRlcm1vc3RfaXRlciA9ICgoY29tcHJlaGVuc2lvbl90eSkKICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgMCkpLT5pdGVyOwogCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCAodm9pZCAqKWUsIGUtPmxpbmVubykpCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKQEAgLTI5NDEsMTIgKzMwNzcsMTQgQEAKICAgICB9CiAKICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOworICAgIHF1YWxuYW1lID0gY29tcGlsZXJfc2NvcGVfcXVhbG5hbWUoYyk7CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKKyAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCB8fCBjbyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKCFjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDApKQorICAgIGlmICghY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCAwLCBxdWFsbmFtZSkpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0X2l0ZXIpOwpAQCAtMjk1Niw2ICszMDk0LDcgQEAKIGVycm9yX2luX3Njb3BlOgogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CiBlcnJvcjoKKyAgICBQeV9YREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9YREVDUkVGKGNvKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTMwNDksOCArMzE4OCw3IEBACiAgICAgICAgIHJldHVybiBQeU9iamVjdF9Jc1RydWUoZS0+di5TdHIucyk7CiAgICAgY2FzZSBOYW1lX2tpbmQ6CiAgICAgICAgIC8qIG9wdGltaXplIGF3YXkgbmFtZXMgdGhhdCBjYW4ndCBiZSByZWFzc2lnbmVkICovCi0gICAgICAgIGlkID0gUHlCeXRlc19BU19TVFJJTkcoCi0gICAgICAgICAgICBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoZS0+di5OYW1lLmlkLCBOVUxMKSk7CisgICAgICAgIGlkID0gUHlVbmljb2RlX0FzVVRGOChlLT52Lk5hbWUuaWQpOwogICAgICAgICBpZiAoc3RyY21wKGlkLCAiVHJ1ZSIpID09IDApIHJldHVybiAxOwogICAgICAgICBpZiAoc3RyY21wKGlkLCAiRmFsc2UiKSA9PSAwKSByZXR1cm4gMDsKICAgICAgICAgaWYgKHN0cmNtcChpZCwgIk5vbmUiKSA9PSAwKSByZXR1cm4gMDsKQEAgLTMwODYsOSArMzIyNCwxMCBAQAogICAgICAgIGV4aXQoKmV4YykKICAqLwogc3RhdGljIGludAotY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK2NvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBwb3MpCiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2ssICpmaW5hbGx5OworICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQocy0+di5XaXRoLml0ZW1zLCBwb3MpOwogCiAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gV2l0aF9raW5kKTsKIApAQCAtMzA5OCw3ICszMjM3LDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBFdmFsdWF0ZSBFWFBSICovCi0gICAgVklTSVQoYywgZXhwciwgcy0+di5XaXRoLmNvbnRleHRfZXhwcik7CisgICAgVklTSVQoYywgZXhwciwgaXRlbS0+Y29udGV4dF9leHByKTsKICAgICBBRERPUF9KUkVMKGMsIFNFVFVQX1dJVEgsIGZpbmFsbHkpOwogCiAgICAgLyogU0VUVVBfV0lUSCBwdXNoZXMgYSBmaW5hbGx5IGJsb2NrLiAqLwpAQCAtMzEwNywxNiArMzI0NiwyMCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAocy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpOworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAvKiBEaXNjYXJkIHJlc3VsdCBmcm9tIGNvbnRleHQuX19lbnRlcl9fKCkgKi8KICAgICAgICAgQURET1AoYywgUE9QX1RPUCk7CiAgICAgfQogCi0gICAgLyogQkxPQ0sgY29kZSAqLwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LldpdGguYm9keSk7CisgICAgcG9zKys7CisgICAgaWYgKHBvcyA9PSBhc2RsX3NlcV9MRU4ocy0+di5XaXRoLml0ZW1zKSkKKyAgICAgICAgLyogQkxPQ0sgY29kZSAqLworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5XaXRoLmJvZHkpCisgICAgZWxzZSBpZiAoIWNvbXBpbGVyX3dpdGgoYywgcywgcG9zKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogRW5kIG9mIHRyeSBibG9jazsgc3RhcnQgdGhlIGZpbmFsbHkgYmxvY2sgKi8KICAgICBBRERPUChjLCBQT1BfQkxPQ0spOwpAQCAtMzE5MywxNiArMzMzNiwyNyBAQAogICAgIGNhc2UgRGljdENvbXBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2RpY3Rjb21wKGMsIGUpOwogICAgIGNhc2UgWWllbGRfa2luZDoKKyAgICBjYXNlIFlpZWxkRnJvbV9raW5kOiB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBvdXRzaWRlIGZ1bmN0aW9uIik7Ci0gICAgICAgIGlmIChlLT52LllpZWxkLnZhbHVlKSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LllpZWxkLnZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSAoZS0+a2luZCA9PSBZaWVsZEZyb21fa2luZCkgPyBlLT52LllpZWxkRnJvbS52YWx1ZSA6IGUtPnYuWWllbGQudmFsdWU7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgdmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QKGMsIFlJRUxEX1ZBTFVFKTsKKyAgICAgICAgaWYgKGUtPmtpbmQgPT0gWWllbGRGcm9tX2tpbmQpIHsKKyAgICAgICAgICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQURET1AoYywgWUlFTERfVkFMVUUpOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbXBhcmUoYywgZSk7CiAgICAgY2FzZSBDYWxsX2tpbmQ6CkBAIC0zMzg1LDcgKzM1MzksNyBAQAogc3RhdGljIGludAogY29tcGlsZXJfZXJyb3Ioc3RydWN0IGNvbXBpbGVyICpjLCBjb25zdCBjaGFyICplcnJzdHIpCiB7Ci0gICAgUHlPYmplY3QgKmxvYywgKmZpbGVuYW1lOworICAgIFB5T2JqZWN0ICpsb2M7CiAgICAgUHlPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEw7CiAKICAgICBsb2MgPSBQeUVycl9Qcm9ncmFtVGV4dChjLT5jX2ZpbGVuYW1lLCBjLT51LT51X2xpbmVubyk7CkBAIC0zMzkzLDE2ICszNTQ3LDcgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBsb2MgPSBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoYy0+Y19maWxlbmFtZSAhPSBOVUxMKSB7Ci0gICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjLT5jX2ZpbGVuYW1lKTsKLSAgICAgICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgZmlsZW5hbWUgPSBQeV9Ob25lOwotICAgIH0KLSAgICB1ID0gUHlfQnVpbGRWYWx1ZSgiKE5paU8pIiwgZmlsZW5hbWUsIGMtPnUtPnVfbGluZW5vLAorICAgIHUgPSBQeV9CdWlsZFZhbHVlKCIoT2lpTykiLCBjLT5jX2ZpbGVuYW1lX29iaiwgYy0+dS0+dV9saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgYy0+dS0+dV9jb2xfb2Zmc2V0LCBsb2MpOwogICAgIGlmICghdSkKICAgICAgICAgZ290byBleGl0OwpAQCAtMzk1MSw3ICs0MDk2LDYgQEAKICAgICBQeU9iamVjdCAqY29uc3RzID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZXMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp2YXJuYW1lcyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZyZWV2YXJzID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VsbHZhcnMgPSBOVUxMOwpAQCAtMzk3NSwxMCArNDExOSw2IEBACiAgICAgZnJlZXZhcnMgPSBkaWN0X2tleXNfaW5vcmRlcihjLT51LT51X2ZyZWV2YXJzLCBQeVR1cGxlX1NpemUoY2VsbHZhcnMpKTsKICAgICBpZiAoIWZyZWV2YXJzKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjLT5jX2ZpbGVuYW1lKTsKLSAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICBnb3RvIGVycm9yOwotCiAgICAgbmxvY2FscyA9IFB5RGljdF9TaXplKGMtPnUtPnVfdmFybmFtZXMpOwogICAgIGZsYWdzID0gY29tcHV0ZV9jb2RlX2ZsYWdzKGMpOwogICAgIGlmIChmbGFncyA8IDApCkBAIC0zOTk4LDE0ICs0MTM4LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIG5sb2NhbHMsIHN0YWNrZGVwdGgoYyksIGZsYWdzLAogICAgICAgICAgICAgICAgICAgICBieXRlY29kZSwgY29uc3RzLCBuYW1lcywgdmFybmFtZXMsCiAgICAgICAgICAgICAgICAgICAgIGZyZWV2YXJzLCBjZWxsdmFycywKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGMtPnUtPnVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgYy0+Y19maWxlbmFtZV9vYmosIGMtPnUtPnVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgYS0+YV9sbm90YWIpOwogIGVycm9yOgogICAgIFB5X1hERUNSRUYoY29uc3RzKTsKICAgICBQeV9YREVDUkVGKG5hbWVzKTsKICAgICBQeV9YREVDUkVGKHZhcm5hbWVzKTsKLSAgICBQeV9YREVDUkVGKGZpbGVuYW1lKTsKICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgIFB5X1hERUNSRUYoZnJlZXZhcnMpOwogICAgIFB5X1hERUNSRUYoY2VsbHZhcnMpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbmR2YXIuaCBiL1B5dGhvbi9jb25kdmFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU2YmQ3NAotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTAsMCArMSwzOTAgQEAKKy8qIAorICogUG9ydGFibGUgY29uZGl0aW9uIHZhcmlhYmxlIHN1cHBvcnQgZm9yIHdpbmRvd3MgYW5kIHB0aHJlYWRzLgorICogRXZlcnl0aGluZyBpcyBpbmxpbmUsIHRoaXMgaGVhZGVyIGNhbiBiZSBpbmNsdWRlZCB3aGVyZSBuZWVkZWQuCisgKgorICogQVBJcyBnZW5lcmFsbHkgcmV0dXJuIDAgb24gc3VjY2VzcyBhbmQgbm9uLXplcm8gb24gZXJyb3IsCisgKiBhbmQgdGhlIGNhbGxlciBuZWVkcyB0byB1c2UgaXRzIHBsYXRmb3JtJ3MgZXJyb3IgbWVjaGFuaXNtIHRvCisgKiBkaXNjb3ZlciB0aGUgZXJyb3IgKGVycm5vLCBvciBHZXRMYXN0RXJyb3IoKSkKKyAqCisgKiBOb3RlIHRoYXQgc29tZSBpbXBsZW1lbnRhdGlvbnMgY2Fubm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gYQorICogY29uZGl0aW9uIHZhcmlhYmxlIHdhaXQgdGltZS1vdXQgYW5kIHN1Y2Nlc3NmdWwgd2FpdC4gTW9zdCBvZnRlbgorICogdGhlIGRpZmZlcmVuY2UgaXMgbW9vdCBhbnl3YXkgc2luY2UgdGhlIHdhaXQgY29uZGl0aW9uIG11c3QgYmUKKyAqIHJlLWNoZWNrZWQuCisgKiBQeUNPTkRfVElNRURXQUlULCBpbiBhZGRpdGlvbiB0byByZXR1cm5pbmcgbmVnYXRpdmUgb24gZXJyb3IsCisgKiB0aHVzIHJldHVybnMgMCBvbiByZWd1bGFyIHN1Y2Nlc3MsIDEgb24gdGltZW91dAorICogb3IgMiBpZiBpdCBjYW4ndCB0ZWxsLgorICoKKyAqIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28gY2F2ZWF0cyB3aXRoIHVzaW5nIHRoZXNlIGNvbmRpdGlvbiB2YXJpYWJsZXMsCisgKiBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGV5IG1heSBiZSBlbXVsYXRlZCB3aXRoIFNlbWFwaG9yZXMgb24KKyAqIFdpbmRvd3M6CisgKiAxKSBXaGlsZSBQeUNPTkRfU0lHTkFMKCkgd2lsbCB3YWtlIHVwIGF0IGxlYXN0IG9uZSB0aHJlYWQsIHdlCisgKiAgICBjYW5ub3QgY3VycmVudGx5IGd1YXJhbnRlZSB0aGF0IGl0IHdpbGwgYmUgb25lIG9mIHRoZSB0aHJlYWRzCisgKiAgICBhbHJlYWR5IHdhaXRpbmcgaW4gYSBQeUNPTkRfV0FJVCgpIGNhbGwuICBJdCBfY291bGRfIGNhdXNlCisgKiAgICB0aGUgd2FrZXVwIG9mIGEgc3Vic2VxdWVudCB0aHJlYWQgdG8gdHJ5IGEgUHlDT05EX1dBSVQoKSwKKyAqICAgIGluY2x1ZGluZyB0aGUgdGhyZWFkIGRvaW5nIHRoZSBQeUNPTkRfU0lHTkFMKCkgaXRzZWxmLgorICogICAgVGhlIHNhbWUgYXBwbGllcyB0byBQeUNPTkRfQlJPQURDQVNUKCksIGlmIE4gdGhyZWFkcyBhcmUgd2FpdGluZworICogICAgdGhlbiBhdCBsZWFzdCBOIHRocmVhZHMgd2lsbCBiZSB3b2tlbiB1cCwgYnV0IG5vdCBuZWNlc3NhcmlseQorICogICAgdGhvc2UgYWxyZWFkeSB3YWl0aW5nLgorICogICAgRm9yIHRoaXMgcmVhc29uLCBkb24ndCBtYWtlIHRoZSBzY2hlZHVsaW5nIGFzc3VtcHRpb24gdGhhdCBhCisgKiAgICBzcGVjaWZpYyBvdGhlciB0aHJlYWQgd2lsbCBnZXQgdGhlIHdha2V1cCBzaWduYWwKKyAqIDIpIFRoZSBfbXV0ZXhfIG11c3QgYmUgaGVsZCB3aGVuIGNhbGxpbmcgUHlDT05EX1NJR05BTCgpIGFuZAorICogICAgUHlDT05EX0JST0FEQ0FTVCgpLgorICogICAgV2hpbGUgZS5nLiB0aGUgcG9zaXggc3RhbmRhcmQgc3Ryb25nbHkgcmVjb21tZW5kcyB0aGF0IHRoZSBtdXRleAorICogICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25kaXRpb24gdmFyaWFibGUgaXMgaGVsZCB3aGVuIGEKKyAqICAgIHB0aHJlYWRfY29uZF9zaWduYWwoKSBjYWxsIGlzIG1hZGUsIHRoaXMgaXMgbm90IGEgaGFyZCByZXF1aXJlbWVudCwKKyAqICAgIGFsdGhvdWdoIHNjaGVkdWxpbmcgd2lsbCBub3QgYmUgInJlbGlhYmxlIiBpZiBpdCBpc24ndC4gIEhlcmUKKyAqICAgIHRoZSBtdXRleCBpcyB1c2VkIGZvciBpbnRlcm5hbCBzeW5jaHJvbml6YXRpb24gb2YgdGhlIGVtdWxhdGVkCisgKiAgICBDb25kaXRpb24gVmFyaWFibGUuCisgKi8KKworI2lmbmRlZiBfQ09ORFZBUl9IXworI2RlZmluZSBfQ09ORFZBUl9IXworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKKy8qIFRoaXMgbWVhbnMgcHRocmVhZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCBpbiBsaWJjIGhlYWRlcnMsIGhlbmNlIHRoZSBtYWNybworICAgbm90IHByZXNlbnQgaW4gdW5pc3RkLmguIEJ1dCB0aGV5IHN0aWxsIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBhbiBleHRlcm5hbAorICAgbGlicmFyeSAoZS5nLiBnbnUgcHRoIGluIHB0aHJlYWQgZW11bGF0aW9uKSAqLworIyBpZmRlZiBIQVZFX1BUSFJFQURfSAorIyAgaW5jbHVkZSA8cHRocmVhZC5oPiAvKiBfUE9TSVhfVEhSRUFEUyAqLworIyBlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBfUE9TSVhfVEhSRUFEUworLyoKKyAqIFBPU0lYIHN1cHBvcnQKKyAqLworI2RlZmluZSBQeV9IQVZFX0NPTkRWQVIKKworI2luY2x1ZGUgPHB0aHJlYWQuaD4KKworI2RlZmluZSBQeUNPTkRfQUREX01JQ1JPU0VDT05EUyh0diwgaW50ZXJ2YWwpIFwKK2RvIHsgXAorICAgIHR2LnR2X3VzZWMgKz0gKGxvbmcpIGludGVydmFsOyBcCisgICAgdHYudHZfc2VjICs9IHR2LnR2X3VzZWMgLyAxMDAwMDAwOyBcCisgICAgdHYudHZfdXNlYyAlPSAxMDAwMDAwOyBcCit9IHdoaWxlICgwKQorCisvKiBXZSBhc3N1bWUgYWxsIG1vZGVybiBQT1NJWCBzeXN0ZW1zIGhhdmUgZ2V0dGltZW9mZGF5KCkgKi8KKyNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKKyNkZWZpbmUgUHlDT05EX0dFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYpCisjZWxzZQorI2RlZmluZSBQeUNPTkRfR0VUVElNRU9GREFZKHB0dikgZ2V0dGltZW9mZGF5KHB0diwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpCisjZW5kaWYKKworLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuIDAgb24gc3VjY2Vzcywgbm9uemVybyBvbiBlcnJvciAqLworI2RlZmluZSBQeU1VVEVYX1QgcHRocmVhZF9tdXRleF90CisjZGVmaW5lIFB5TVVURVhfSU5JVChtdXQpICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgobXV0KSwgTlVMTCkKKyNkZWZpbmUgUHlNVVRFWF9GSU5JKG11dCkgICAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KG11dCkKKyNkZWZpbmUgUHlNVVRFWF9MT0NLKG11dCkgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKG11dCkKKyNkZWZpbmUgUHlNVVRFWF9VTkxPQ0sobXV0KSAgICAgcHRocmVhZF9tdXRleF91bmxvY2sobXV0KQorCisjZGVmaW5lIFB5Q09ORF9UIHB0aHJlYWRfY29uZF90CisjZGVmaW5lIFB5Q09ORF9JTklUKGNvbmQpICAgICAgIHB0aHJlYWRfY29uZF9pbml0KChjb25kKSwgTlVMTCkKKyNkZWZpbmUgUHlDT05EX0ZJTkkoY29uZCkgICAgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koY29uZCkKKyNkZWZpbmUgUHlDT05EX1NJR05BTChjb25kKSAgICAgcHRocmVhZF9jb25kX3NpZ25hbChjb25kKQorI2RlZmluZSBQeUNPTkRfQlJPQURDQVNUKGNvbmQpICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KGNvbmQpCisjZGVmaW5lIFB5Q09ORF9XQUlUKGNvbmQsIG11dCkgIHB0aHJlYWRfY29uZF93YWl0KChjb25kKSwgKG11dCkpCisKKy8qIHJldHVybiAwIGZvciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIGxvbmcgdXMpCit7CisgICAgaW50IHI7CisgICAgc3RydWN0IHRpbWVzcGVjIHRzOworICAgIHN0cnVjdCB0aW1ldmFsIGRlYWRsaW5lOworCisgICAgUHlDT05EX0dFVFRJTUVPRkRBWSgmZGVhZGxpbmUpOworICAgIFB5Q09ORF9BRERfTUlDUk9TRUNPTkRTKGRlYWRsaW5lLCB1cyk7CisgICAgdHMudHZfc2VjID0gZGVhZGxpbmUudHZfc2VjOworICAgIHRzLnR2X25zZWMgPSBkZWFkbGluZS50dl91c2VjICogMTAwMDsKKworICAgIHIgPSBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KChjb25kKSwgKG11dCksICZ0cyk7CisgICAgaWYgKHIgPT0gRVRJTUVET1VUKQorICAgICAgICByZXR1cm4gMTsKKyAgICBlbHNlIGlmIChyKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZSAKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKyNlbGlmIGRlZmluZWQoTlRfVEhSRUFEUykKKy8qCisgKiBXaW5kb3dzIChYUCwgMjAwMyBzZXJ2ZXIgYW5kIGxhdGVyLCBhcyB3ZWxsIGFzIChob3BlZnVsbHkpIENFKSBzdXBwb3J0CisgKgorICogRW11bGF0ZWQgY29uZGl0aW9uIHZhcmlhYmxlcyBvbmVzIHRoYXQgd29yayB3aXRoIFhQIGFuZCBsYXRlciwgcGx1cworICogZXhhbXBsZSBuYXRpdmUgc3VwcG9ydCBvbiBWSVNUQSBhbmQgb253YXJkcy4KKyAqLworI2RlZmluZSBQeV9IQVZFX0NPTkRWQVIKKworCisvKiBpbmNsdWRlIHdpbmRvd3MgaWYgaXQgaGFzbid0IGJlZW4gZG9uZSBiZWZvcmUgKi8KKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworLyogb3B0aW9ucyAqLworLyogbm9uLWVtdWxhdGVkIGNvbmRpdGlvbiB2YXJpYWJsZXMgYXJlIHByb3ZpZGVkIGZvciB0aG9zZSB0aGF0IHdhbnQKKyAqIHRvIHRhcmdldCBXaW5kb3dzIFZpc3RhLiAgTW9kaWZ5IHRoaXMgbWFjcm8gdG8gZW5hYmxlIHRoZW0uCisgKi8KKyNpZm5kZWYgX1BZX0VNVUxBVEVEX1dJTl9DVgorI2RlZmluZSBfUFlfRU1VTEFURURfV0lOX0NWIDEgIC8qIHVzZSBlbXVsYXRlZCBjb25kaXRpb24gdmFyaWFibGVzICovCisjZW5kaWYKKworLyogZmFsbCBiYWNrIHRvIGVtdWxhdGlvbiBpZiBub3QgdGFyZ2V0aW5nIFZpc3RhICovCisjaWYgIWRlZmluZWQgTlRERElfVklTVEEgfHwgTlRERElfVkVSU0lPTiA8IE5URERJX1ZJU1RBCisjdW5kZWYgX1BZX0VNVUxBVEVEX1dJTl9DVgorI2RlZmluZSBfUFlfRU1VTEFURURfV0lOX0NWIDEKKyNlbmRpZgorCisKKyNpZiBfUFlfRU1VTEFURURfV0lOX0NWCisKKy8qIFRoZSBtdXRleCBpcyBhIENyaXRpY2FsU2VjdGlvbiBvYmplY3QgYW5kCisgICBUaGUgY29uZGl0aW9uIHZhcmlhYmxlcyBpcyBlbXVsYXRlZCB3aXRoIHRoZSBoZWxwIG9mIGEgc2VtYXBob3JlLgorICAgU2VtYXBob3JlcyBhcmUgYXZhaWxhYmxlIG9uIFdpbmRvd3MgWFAgKDIwMDMgc2VydmVyKSBhbmQgbGF0ZXIuCisgICBXZSB1c2UgYSBTZW1hcGhvcmUgcmF0aGVyIHRoYW4gYW4gYXV0by1yZXNldCBldmVudCwgYmVjYXVzZSBhbHRob3VnaAorICAgYW4gYXV0by1yZXNlbnQgZXZlbnQgbWlnaHQgYXBwZWFyIHRvIHNvbHZlIHRoZSBsb3N0LXdha2V1cCBidWcgKHJhY2UKKyAgIGNvbmRpdGlvbiBiZXR3ZWVuIHJlbGVhc2luZyB0aGUgb3V0ZXIgbG9jayBhbmQgd2FpdGluZykgYmVjYXVzZSBpdAorICAgbWFpbnRhaW5zIHN0YXRlIGV2ZW4gdGhvdWdoIGEgd2FpdCBoYXNuJ3QgaGFwcGVuZWQsIHRoZXJlIGlzIHN0aWxsCisgICBhIGxvc3Qgd2FrZXVwIHByb2JsZW0gaWYgbW9yZSB0aGFuIG9uZSB0aHJlYWQgYXJlIGludGVycnVwdGVkIGluIHRoZQorICAgY3JpdGljYWwgcGxhY2UuICBBIHNlbWFwaG9yZSBzb2x2ZXMgdGhhdCwgYmVjYXVzZSBpdHMgc3RhdGUgaXMgY291bnRlZCwKKyAgIG5vdCBCb29sZWFuLgorICAgQmVjYXVzZSBpdCBpcyBvayB0byBzaWduYWwgYSBjb25kaXRpb24gdmFyaWFibGUgd2l0aCBubyBvbmUKKyAgIHdhaXRpbmcsIHdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mCisgICB3YWl0aW5nIHRocmVhZHMuICBPdGhlcndpc2UsIHRoZSBzZW1hcGhvcmUncyBzdGF0ZSBjb3VsZCByaXNlCisgICB3aXRob3V0IGJvdW5kLiAgVGhpcyBhbHNvIGhlbHBzIHJlZHVjZSB0aGUgbnVtYmVyIG9mICJzcHVyaW91cyB3YWtldXBzIgorICAgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGFwcGVuLgorCisgICBUaGlzIGltcGxlbWVudGF0aW9uIHN0aWxsIGhhcyB0aGUgcHJvYmxlbSB0aGF0IHRoZSB0aHJlYWRzIHdva2VuCisgICB3aXRoIGEgInNpZ25hbCIgYXJlbid0IG5lY2Vzc2FyaWx5IHRob3NlIHRoYXQgYXJlIGFscmVhZHkKKyAgIHdhaXRpbmcuICBJdCBjb3JyZXNwb25kcyB0byBsaXN0aW5nIDIgaW46CisgICBodHRwOi8vYmlycmVsbC5vcmcvYW5kcmV3L3BhcGVycy9JbXBsZW1lbnRpbmdDVnMucGRmCisKKyAgIEdlbmVyaWMgZW11bGF0aW9ucyBvZiB0aGUgcHRocmVhZF9jb25kXyogQVBJIHVzaW5nCisgICBlYXJsaWVyIFdpbjMyIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgb24gdGhlIFdlYi4KKyAgIFRoZSBmb2xsb3dpbmcgcmVhZCBjYW4gYmUgZWRpZmljYXRpbmcgKG9yIG5vdCk6CisgICBodHRwOi8vd3d3LmNzZS53dXN0bC5lZHUvfnNjaG1pZHQvd2luMzItY3YtMS5odG1sCisKKyAgIFNlZSBhbHNvIAorKi8KKwordHlwZWRlZiBDUklUSUNBTF9TRUNUSU9OIFB5TVVURVhfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfSU5JVChQeU1VVEVYX1QgKmNzKQoreworICAgIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9GSU5JKFB5TVVURVhfVCAqY3MpCit7CisgICAgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIEVudGVyQ3JpdGljYWxTZWN0aW9uKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfVU5MT0NLKFB5TVVURVhfVCAqY3MpCit7CisgICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oY3MpOworICAgIHJldHVybiAwOworfQorCisvKiBUaGUgQ29uZGl0aW9uVmFyaWFibGUgb2JqZWN0LiAgRnJvbSBYUCBvbndhcmRzIGl0IGlzIGVhc2lseSBlbXVsYXRlZCB3aXRoCisgKiBhIFNlbWFwaG9yZQorICovCisKK3R5cGVkZWYgc3RydWN0IF9QeUNPTkRfVAoreworICAgIEhBTkRMRSBzZW07CisgICAgaW50IHdhaXRpbmc7IC8qIHRvIGFsbG93IFB5Q09ORF9TSUdOQUwgdG8gYmUgYSBuby1vcCAqLworfSBQeUNPTkRfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9JTklUKFB5Q09ORF9UICpjdikKK3sKKyAgICAvKiBBIHNlbWFwaG9yZSB3aXRoIGEgImxhcmdlIiBtYXggdmFsdWUsICBUaGUgcG9zaXRpdmUgdmFsdWUKKyAgICAgKiBpcyBvbmx5IG5lZWRlZCB0byBjYXRjaCB0aG9zZSAibG9zdCB3YWtldXAiIGV2ZW50cyBhbmQKKyAgICAgKiByYWNlIGNvbmRpdGlvbnMgd2hlbiBhIHRpbWVkIHdhaXQgZWxhcHNlcy4KKyAgICAgKi8KKyAgICBjdi0+c2VtID0gQ3JlYXRlU2VtYXBob3JlKE5VTEwsIDAsIDEwMDAwMCwgTlVMTCk7CisgICAgaWYgKGN2LT5zZW09PU5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBjdi0+d2FpdGluZyA9IDA7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfRklOSShQeUNPTkRfVCAqY3YpCit7CisgICAgcmV0dXJuIENsb3NlSGFuZGxlKGN2LT5zZW0pID8gMCA6IC0xOworfQorCisvKiB0aGlzIGltcGxlbWVudGF0aW9uIGNhbiBkZXRlY3QgYSB0aW1lb3V0LiAgUmV0dXJucyAxIG9uIHRpbWVvdXQsCisgKiAwIG90aGVyd2lzZSAoYW5kIC0xIG9uIGVycm9yKQorICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorX1B5Q09ORF9XQUlUX01TKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgRFdPUkQgbXMpCit7CisgICAgRFdPUkQgd2FpdDsKKyAgICBjdi0+d2FpdGluZysrOworICAgIFB5TVVURVhfVU5MT0NLKGNzKTsKKyAgICAvKiAibG9zdCB3YWtldXAgYnVnIiB3b3VsZCBvY2N1ciBpZiB0aGUgY2FsbGVyIHdlcmUgaW50ZXJydXB0ZWQgaGVyZSwKKyAgICAgKiBidXQgd2UgYXJlIHNhZmUgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzZW1hcGhvcmUgd2ljaCBoYXMgYW4gaW50ZXJuYWwKKyAgICAgKiBjb3VudC4KKyAgICAgKi8KKyAgICB3YWl0ID0gV2FpdEZvclNpbmdsZU9iamVjdChjdi0+c2VtLCBtcyk7CisgICAgUHlNVVRFWF9MT0NLKGNzKTsKKyAgICBpZiAod2FpdCAhPSBXQUlUX09CSkVDVF8wKQorICAgICAgICAtLWN2LT53YWl0aW5nOworICAgICAgICAvKiBIZXJlIHdlIGhhdmUgYSBiZW5pZ24gcmFjZSBjb25kaXRpb24gd2l0aCBQeUNPTkRfU0lHTkFMLgorICAgICAgICAgKiBXaGVuIGZhaWx1cmUgb2NjdXJzIG9yIHRpbWVvdXQsIGl0IGlzIHBvc3NpYmxlIHRoYXQKKyAgICAgICAgICogUHlDT05EX1NJR05BTCBhbHNvIGRlY3JlbWVudHMgdGhpcyB2YWx1ZQorICAgICAgICAgKiBhbmQgc2lnbmFscyByZWxlYXNlcyB0aGUgbXV0ZXguICBUaGlzIGlzIGJlbmlnbiBiZWNhdXNlIGl0CisgICAgICAgICAqIGp1c3QgbWVhbnMgYW4gZXh0cmEgc3B1cmlvdXMgd2FrZXVwIGZvciBhIHdhaXRpbmcgdGhyZWFkLgorICAgICAgICAgKiAoJ3dhaXRpbmcnIGNvcnJlc3BvbmRzIHRvIHRoZSBzZW1hcGhvcmUncyAibmVnYXRpdmUiIGNvdW50IGFuZAorICAgICAgICAgKiB3ZSBtYXkgZW5kIHVwIHdpdGggZS5nLiAod2FpdGluZyA9PSAtMSAmJiBzZW0uY291bnQgPT0gMSkuICBXaGVuCisgICAgICAgICAqIGEgbmV3IHRocmVhZCBjb21lcyBhbG9uZywgaXQgd2lsbCBwYXNzIHJpZ2h0IHRocm91aGdoLCBoYXZpbmcKKyAgICAgICAgICogYWRqdXN0ZWQgaXQgdG8gKHdhaXRpbmcgPT0gMCAmJiBzZW0uY291bnQgPT0gMCkuCisgICAgICAgICAqLworICAgICAgICAgCisgICAgaWYgKHdhaXQgPT0gV0FJVF9GQUlMRUQpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiByZXR1cm4gMCBvbiBzdWNjZXNzLCAxIG9uIHRpbWVvdXQgKi8KKyAgICByZXR1cm4gd2FpdCAhPSBXQUlUX09CSkVDVF8wOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1dBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzKQoreworICAgIGludCByZXN1bHQgPSBfUHlDT05EX1dBSVRfTVMoY3YsIGNzLCBJTkZJTklURSk7CisgICAgcmV0dXJuIHJlc3VsdCA+PSAwID8gMCA6IHJlc3VsdDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIHVzKQoreworICAgIHJldHVybiBfUHlDT05EX1dBSVRfTVMoY3YsIGNzLCB1cy8xMDAwKTsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9TSUdOQUwoUHlDT05EX1QgKmN2KQoreworICAgIC8qIHRoaXMgdGVzdCBhbGxvd3MgUHlDT05EX1NJR05BTCB0byBiZSBhIG5vLW9wIHVubGVzcyByZXF1aXJlZAorICAgICAqIHRvIHdha2Ugc29tZW9uZSB1cCwgdGh1cyBwcmV2ZW50aW5nIGFuIHVuYm91bmRlZCBpbmNyZWFzZSBvZgorICAgICAqIHRoZSBzZW1hcGhvcmUncyBpbnRlcm5hbCBjb3VudGVyLgorICAgICAqLworICAgIGlmIChjdi0+d2FpdGluZyA+IDApIHsKKyAgICAgICAgLyogbm90aWZ5aW5nIHRocmVhZCBkZWNyZWFzZXMgdGhlIGN2LT53YWl0aW5nIGNvdW50IHNvIHRoYXQKKyAgICAgICAgICogYSBkZWxheSBiZXR3ZWVuIG5vdGlmeSBhbmQgYWN0dWFsIHdha2V1cCBvZiB0aGUgdGFyZ2V0IHRocmVhZAorICAgICAgICAgKiBkb2Vzbid0IGNhdXNlIGEgbnVtYmVyIG9mIGV4dHJhIFJlbGVhc2VTZW1hcGhvcmUgY2FsbHMuCisgICAgICAgICAqLworICAgICAgICBjdi0+d2FpdGluZy0tOworICAgICAgICByZXR1cm4gUmVsZWFzZVNlbWFwaG9yZShjdi0+c2VtLCAxLCBOVUxMKSA/IDAgOiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfQlJPQURDQVNUKFB5Q09ORF9UICpjdikKK3sKKyAgICBpZiAoY3YtPndhaXRpbmcgPiAwKSB7CisgICAgICAgIHJldHVybiBSZWxlYXNlU2VtYXBob3JlKGN2LT5zZW0sIGN2LT53YWl0aW5nLCBOVUxMKSA/IDAgOiAtMTsKKwkJY3YtPndhaXRpbmcgPSAwOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworI2Vsc2UKKworLyogVXNlIG5hdGl2ZSBXaW43IHByaW1pdGl2ZXMgaWYgYnVpbGQgdGFyZ2V0IGlzIFdpbjcgb3IgaGlnaGVyICovCisKKy8qIFNSV0xPQ0sgaXMgZmFzdGVyIGFuZCBiZXR0ZXIgdGhhbiBDcml0aWNhbFNlY3Rpb24gKi8KK3R5cGVkZWYgU1JXTE9DSyBQeU1VVEVYX1Q7CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0lOSVQoUHlNVVRFWF9UICpjcykKK3sKKyAgICBJbml0aWFsaXplU1JXTG9jayhjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0ZJTkkoUHlNVVRFWF9UICpjcykKK3sKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfTE9DSyhQeU1VVEVYX1QgKmNzKQoreworICAgIEFjcXVpcmVTUldMb2NrRXhjbHVzaXZlKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfVU5MT0NLKFB5TVVURVhfVCAqY3MpCit7CisgICAgUmVsZWFzZVNSV0xvY2tFeGNsdXNpdmUoY3MpOworICAgIHJldHVybiAwOworfQorCisKK3R5cGVkZWYgQ09ORElUSU9OX1ZBUklBQkxFICBQeUNPTkRfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9JTklUKFB5Q09ORF9UICpjdikKK3sKKyAgICBJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGUoY3YpOworICAgIHJldHVybiAwOworfQorUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9GSU5JKFB5Q09ORF9UICpjdikKK3sKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9XQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcykKK3sKKyAgICByZXR1cm4gU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVyhjdiwgY3MsIElORklOSVRFLCAwKSA/IDAgOiAtMTsKK30KKworLyogVGhpcyBpbXBsZW1lbnRhdGlvbiBtYWtlcyBubyBkaXN0aW5jdGlvbiBhYm91dCB0aW1lb3V0cy4gIFNpZ25hbAorICogMiB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IGtub3cuCisgKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyB1cykKK3sKKyAgICByZXR1cm4gU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVyhjdiwgY3MsIHVzLzEwMDAsIDApID8gMiA6IC0xOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1NJR05BTChQeUNPTkRfVCAqY3YpCit7CisgICAgIFdha2VDb25kaXRpb25WYXJpYWJsZShjdik7CisgICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0JST0FEQ0FTVChQeUNPTkRfVCAqY3YpCit7CisgICAgIFdha2VBbGxDb25kaXRpb25WYXJpYWJsZShjdik7CisgICAgIHJldHVybiAwOworfQorCisKKyNlbmRpZiAvKiBfUFlfRU1VTEFURURfV0lOX0NWICovCisKKyNlbmRpZiAvKiBfUE9TSVhfVEhSRUFEUywgTlRfVEhSRUFEUyAqLworCisjZW5kaWYgLyogX0NPTkRWQVJfSF8gKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9kdG9hLmMgYi9QeXRob24vZHRvYS5jCmluZGV4IDQ0ZGMwMWYuLjgzODYxYWMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9kdG9hLmMKKysrIGIvUHl0aG9uL2R0b2EuYwpAQCAtMjY1LDYgKzI2NSwxNiBAQAogI2RlZmluZSBCaWcwIChGcmFjX21hc2sxIHwgRXhwX21zazEqKERCTF9NQVhfRVhQK0JpYXMtMSkpCiAjZGVmaW5lIEJpZzEgMHhmZmZmZmZmZgogCisvKiBTdGFuZGFyZCBOYU4gdXNlZCBieSBfUHlfZGdfc3RkbmFuLiAqLworCisjZGVmaW5lIE5BTl9XT1JEMCAweDdmZjgwMDAwCisjZGVmaW5lIE5BTl9XT1JEMSAwCisKKy8qIEJpdHMgb2YgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHBvc2l0aXZlIGluZmluaXR5LiAqLworCisjZGVmaW5lIFBPU0lORl9XT1JEMCAweDdmZjAwMDAwCisjZGVmaW5lIFBPU0lORl9XT1JEMSAwCisKIC8qIHN0cnVjdCBCQ2luZm8gaXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGZyb20gX1B5X2RnX3N0cnRvZCB0byBiaWdjb21wICovCiAKIHR5cGVkZWYgc3RydWN0IEJDaW5mbyBCQ2luZm87CkBAIC0xNDg2LDYgKzE0OTYsMzYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyogUmV0dXJuIGEgJ3N0YW5kYXJkJyBOYU4gdmFsdWUuCisKKyAgIFRoZXJlIGFyZSBleGFjdGx5IHR3byBxdWlldCBOYU5zIHRoYXQgZG9uJ3QgYXJpc2UgYnkgJ3F1aWV0aW5nJyBzaWduYWxpbmcKKyAgIE5hTnMgKHNlZSBJRUVFIDc1NC0yMDA4LCBzZWN0aW9uIDYuMi4xKS4gIElmIHNpZ24gPT0gMCwgcmV0dXJuIHRoZSBvbmUgd2hvc2UKKyAgIHNpZ24gYml0IGlzIGNsZWFyZWQuICBPdGhlcndpc2UsIHJldHVybiB0aGUgb25lIHdob3NlIHNpZ24gYml0IGlzIHNldC4KKyovCisKK2RvdWJsZQorX1B5X2RnX3N0ZG5hbihpbnQgc2lnbikKK3sKKyAgICBVIHJ2OworICAgIHdvcmQwKCZydikgPSBOQU5fV09SRDA7CisgICAgd29yZDEoJnJ2KSA9IE5BTl9XT1JEMTsKKyAgICBpZiAoc2lnbikKKyAgICAgICAgd29yZDAoJnJ2KSB8PSBTaWduX2JpdDsKKyAgICByZXR1cm4gZHZhbCgmcnYpOworfQorCisvKiBSZXR1cm4gcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHksIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc2lnbiAoMCBmb3IKKyAqIHBvc2l0aXZlIGluZmluaXR5LCAxIGZvciBuZWdhdGl2ZSBpbmZpbml0eSkuICovCisKK2RvdWJsZQorX1B5X2RnX2luZmluaXR5KGludCBzaWduKQoreworICAgIFUgcnY7CisgICAgd29yZDAoJnJ2KSA9IFBPU0lORl9XT1JEMDsKKyAgICB3b3JkMSgmcnYpID0gUE9TSU5GX1dPUkQxOworICAgIHJldHVybiBzaWduID8gLWR2YWwoJnJ2KSA6IGR2YWwoJnJ2KTsKK30KKwogZG91YmxlCiBfUHlfZGdfc3RydG9kKGNvbnN0IGNoYXIgKnMwMCwgY2hhciAqKnNlKQogewpAQCAtMTg4NiwyMCArMTkyNiwyMCBAQAogICAgICAgICBiZDIrKzsKIAogICAgICAgICAvKiBBdCB0aGlzIHN0YWdlIGJkNSAtIGJiNSA9PSBlID09IGJkMiAtIGJiMiArIGJiZSwgYmIyIC0gYnMyID09IDEsCi0JICAgYW5kIGJzID09IDEsIHNvOgorICAgICAgICAgICBhbmQgYnMgPT0gMSwgc286CiAKICAgICAgICAgICAgICAgdGR2ID09IGJkICogMTAqKmUgPSBiZCAqIDIqKihiYmUgLSBiYjIgKyBiZDIpICogNSoqKGJkNSAtIGJiNSkKICAgICAgICAgICAgICAgc3J2ID09IGJiICogMioqYmJlID0gYmIgKiAyKiooYmJlIC0gYmIyICsgYmIyKQotCSAgICAgIDAuNSB1bHAoc3J2KSA9PSAyKiooYmJlLTEpID0gYnMgKiAyKiooYmJlIC0gYmIyICsgYnMyKQorICAgICAgICAgICAgICAwLjUgdWxwKHNydikgPT0gMioqKGJiZS0xKSA9IGJzICogMioqKGJiZSAtIGJiMiArIGJzMikKIAotCSAgIEl0IGZvbGxvd3MgdGhhdDoKKyAgICAgICAgICAgSXQgZm9sbG93cyB0aGF0OgogCiAgICAgICAgICAgICAgIE0gKiB0ZHYgPSBiZCAqIDIqKmJkMiAqIDUqKmJkNQogICAgICAgICAgICAgICBNICogc3J2ID0gYmIgKiAyKipiYjIgKiA1KipiYjUKICAgICAgICAgICAgICAgTSAqIDAuNSB1bHAoc3J2KSA9IGJzICogMioqYnMyICogNSoqYmI1CiAKLQkgICBmb3Igc29tZSBjb25zdGFudCBNLiAgKEFjdHVhbGx5LCBNID09IDIqKihiYjIgLSBiYmUpICogNSoqYmI1LCBidXQKLQkgICB0aGlzIGZhY3QgaXMgbm90IG5lZWRlZCBiZWxvdy4pCisgICAgICAgICAgIGZvciBzb21lIGNvbnN0YW50IE0uICAoQWN0dWFsbHksIE0gPT0gMioqKGJiMiAtIGJiZSkgKiA1KipiYjUsIGJ1dAorICAgICAgICAgICB0aGlzIGZhY3QgaXMgbm90IG5lZWRlZCBiZWxvdy4pCiAgICAgICAgICovCiAKICAgICAgICAgLyogUmVtb3ZlIGZhY3RvciBvZiAyKippLCB3aGVyZSBpID0gbWluKGJiMiwgYmQyLCBiczIpLiAqLwpAQCAtMjA1NSw3ICsyMDk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICsgRXhwX21zazEKICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgICAgICAgd29yZDEoJnJ2KSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGRzaWduID0gMDsKKyAgICAgICAgICAgICAgICAgICAgLyogZHNpZ24gPSAwOyAqLwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDkyLDcgKzIxMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBnb3RvIHVuZGZsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRzaWduID0gMSAtIGRzaWduOworICAgICAgICAgICAgLyogZHNpZ24gPSAxIC0gZHNpZ247ICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoKGFhZGogPSByYXRpbyhkZWx0YSwgYnMpKSA8PSAyLikgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMgYi9QeXRob24vZHlubG9hZF9haXguYwppbmRleCAxNDk5OTBkLi5iNGY3MWYyIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9haXguYworKysgYi9QeXRob24vZHlubG9hZF9haXguYwpAQCAtMjYsMTEgKzI2LDcgQEAKICAgICB2b2lkICAgICAgICAgICplbnRyeTsKIH0gTW9kdWxlLCAqTW9kdWxlUHRyOwogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHsiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIuc28iLCBOVUxMfTsKIAogc3RhdGljIGludAogYWl4X2dldG9sZG1vZHVsZXModm9pZCAqKm1vZGxpc3RwdHIpCkBAIC0xMDksNiArMTA1LDggQEAKIHsKIAogICAgIGNoYXIgKm1lc3NhZ2VbMTAyNF0sIGVycmJ1ZlsxMDI0XTsKKyAgICBQeU9iamVjdCAqcGF0aG5hbWVfb2IgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJidWZfb2IgPSBOVUxMOwogICAgIHJlZ2lzdGVyIGludCBpLGo7CiAKICAgICBzdHJ1Y3QgZXJydGFiIHsKQEAgLTEyOSw3ICsxMjcsNiBAQAogICAgICAgICB7TF9FUlJPUl9FUlJOTywgICAgICAgICAgICAgICAgIE5VTEx9CiAgICAgfTsKIAotI2RlZmluZSBMT0FEX0VSUlRBQl9MRU4gKHNpemVvZihsb2FkX2VycnRhYikvc2l6ZW9mKGxvYWRfZXJydGFiWzBdKSkKICNkZWZpbmUgRVJSQlVGX0FQUEVORChzKSBzdHJuY2F0KGVycmJ1Ziwgcywgc2l6ZW9mKGVycmJ1Ziktc3RybGVuKGVycmJ1ZiktMSkKIAogICAgIFB5T1Nfc25wcmludGYoZXJyYnVmLCBzaXplb2YoZXJyYnVmKSwgImZyb20gbW9kdWxlICUuMjAwcyAiLCBwYXRobmFtZSk7CkBAIC0xNDAsNyArMTM3LDcgQEAKICAgICB9CiAgICAgZm9yKGkgPSAwOyBtZXNzYWdlW2ldICYmICptZXNzYWdlW2ldOyBpKyspIHsKICAgICAgICAgaW50IG5lcnIgPSBhdG9pKG1lc3NhZ2VbaV0pOwotICAgICAgICBmb3IgKGo9MDsgajxMT0FEX0VSUlRBQl9MRU4gOyBqKyspIHsKKyAgICAgICAgZm9yIChqPTA7IGogPCBQeV9BUlJBWV9MRU5HVEgobG9hZF9lcnJ0YWIpOyBqKyspIHsKICAgICAgICAgICAgIGlmIChuZXJyID09IGxvYWRfZXJydGFiW2pdLmVyck5vICYmIGxvYWRfZXJydGFiW2pdLmVycnN0cikKICAgICAgICAgICAgIEVSUkJVRl9BUFBFTkQobG9hZF9lcnJ0YWJbal0uZXJyc3RyKTsKICAgICAgICAgfQpAQCAtMTQ5LDEyICsxNDYsMTYgQEAKICAgICAgICAgRVJSQlVGX0FQUEVORCgiXG4iKTsKICAgICB9CiAgICAgZXJyYnVmW3N0cmxlbihlcnJidWYpLTFdID0gJ1wwJzsgICAgICAgICAgICAvKiB0cmltIG9mZiBsYXN0IG5ld2xpbmUgKi8KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsIGVycmJ1Zik7CisgICAgcGF0aG5hbWVfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgZXJyYnVmX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZXJyYnVmKTsKKyAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihlcnJidWZfb2IsIE5VTEwsIHBhdGhuYW1lKTsKKyAgICBQeV9ERUNSRUYocGF0aG5hbWVfb2IpOworICAgIFB5X0RFQ1JFRihlcnJidWZfb2IpOwogICAgIHJldHVybjsKIH0KIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9kbC5jIGIvUHl0aG9uL2R5bmxvYWRfZGwuYwppbmRleCAyNjA2ZTFlLi41ODM2Y2IzYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfZGwuYworKysgYi9QeXRob24vZHlubG9hZF9kbC5jCkBAIC05LDE4ICs5LDE0IEBACiAKIGV4dGVybiBjaGFyICpQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLQl7Ii5vIiwgInJiIiwgQ19FWFRFTlNJT059LAotCXsibW9kdWxlLm8iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0JezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5vIiwgTlVMTH07CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0JCQkJICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKLQljaGFyIGZ1bmNuYW1lWzI1OF07CisgICAgY2hhciBmdW5jbmFtZVsyNThdOwogCi0JUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOwotCXJldHVybiBkbF9sb2FkbW9kKFB5X0dldFByb2dyYW1OYW1lKCksIHBhdGhuYW1lLCBmdW5jbmFtZSk7CisgICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOworICAgIHJldHVybiBkbF9sb2FkbW9kKFB5X0dldFByb2dyYW1OYW1lKCksIHBhdGhuYW1lLCBmdW5jbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9ocHV4LmMgYi9QeXRob24vZHlubG9hZF9ocHV4LmMKaW5kZXggMThhODEzNy4uYzk1NTQxNCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwpAQCAtMTMsMTMgKzEzLDkgQEAKICNkZWZpbmUgRlVOQ05BTUVfUEFUVEVSTiAiUHlJbml0XyUuMjAwcyIKICNlbmRpZgogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHtTSExJQl9FWFQsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZSJTSExJQl9FWFQsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHtTSExJQl9FWFQsIE5VTEx9OwogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CkBAIC0zNywxMSArMzMsMjEgQEAKICAgICAvKiBYWFggQ2h1Y2sgQmxha2Ugb25jZSB3cm90ZSB0aGF0IDAgc2hvdWxkIGJlIEJJTkRfTk9TVEFSVD8gKi8KICAgICBpZiAobGliID09IE5VTEwpIHsKICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lX29iID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmJ1Zl9vYiA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpzaG9ydG5hbWVfb2IgPSBOVUxMOworCiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKICAgICAgICAgICAgIHBlcnJvcihwYXRobmFtZSk7CiAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIkZhaWxlZCB0byBsb2FkICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsIGJ1Zik7CisgICAgICAgIGJ1Zl9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgICAgIHNob3J0bmFtZV9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNob3J0bmFtZSk7CisgICAgICAgIHBhdGhuYW1lX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocGF0aG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihidWZfb2IsIHNob3J0bmFtZV9vYiwgcGF0aG5hbWVfb2IpOworICAgICAgICBQeV9ERUNSRUYoYnVmX29iKTsKKyAgICAgICAgUHlfREVDUkVGKHNob3J0bmFtZV9vYik7CisgICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCBGVU5DTkFNRV9QQVRURVJOLCBzaG9ydG5hbWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfbmV4dC5jIGIvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCmluZGV4IGNhYmY5YjkuLjg1Yzk1YjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX25leHQuYworKysgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKQEAgLTgsMTEgKzgsNyBAQAogCiAjaW5jbHVkZSA8bWFjaC1vL2R5bGQuaD4KIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLnNvIiwgTlVMTH07CiAKIC8qCiAqKiBQeXRob24gbW9kdWxlcyBhcmUgTWFjaC1PIE1IX0JVTkRMRSBmaWxlcy4gVGhlIGJlc3Qgd2F5IHRvIGxvYWQgdGhlc2UKQEAgLTMxLDggKzI3LDggQEAKICNkZWZpbmUgTElOS09QVElPTlMgTlNMSU5LTU9EVUxFX09QVElPTl9CSU5ETk9XfCBcCiAgICAgTlNMSU5LTU9EVUxFX09QVElPTl9SRVRVUk5fT05fRVJST1J8TlNMSU5LTU9EVUxFX09QVElPTl9QUklWQVRFCiAjZW5kaWYKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHAgPSBOVUxMOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX29zMi5jIGIvUHl0aG9uL2R5bmxvYWRfb3MyLmMKaW5kZXggMTAxYzAyNC4uMGUxYjkwNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfb3MyLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfb3MyLmMKQEAgLTksMTMgKzksOSBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5weWQiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuZGxsIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIucHlkIiwgIi5kbGwiLCBOVUxMfTsKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYyBiL1B5dGhvbi9keW5sb2FkX3NobGliLmMKaW5kZXggN2VhNTEwZS4uMGNhNjVjNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYworKysgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCkBAIC0zNiwzMSArMzYsMjUgQEAKICAgIGxpdmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiAgRS5nLiBmb29tb2R1bGUuY3B5dGhvbi0zMi5zbwogKi8KIAotY29uc3Qgc3RydWN0IGZpbGVkZXNjciBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewogI2lmZGVmIF9fQ1lHV0lOX18KLSAgICB7Ii5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuZGxsIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIuZGxsIiwKICNlbHNlICAvKiAhX19DWUdXSU5fXyAqLwogI2lmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgeyIucHlkIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLnB5ZCIsCisgICAgIi5kbGwiLAogI2Vsc2UgIC8qICEoZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykpICovCiAjaWZkZWYgX19WTVMKLSAgICB7Ii5leGUiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuRVhFIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLmV4ZSIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ik1PRFVMRS5FWEUiLCAicmIiLCBDX0VYVEVOU0lPTn0sCisgICAgIi5leGUiLAorICAgICIuRVhFIiwKICNlbHNlICAvKiAhX19WTVMgKi8KLSAgICB7Ii4iIFNPQUJJICIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuIiBTT0FCSSAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiLmFiaSIgUFlUSE9OX0FCSV9TVFJJTkcgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5hYmkiIFBZVEhPTl9BQklfU1RSSU5HICIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCisgICAgIi4iIFNPQUJJICIuc28iLAorICAgICIuYWJpIiBQWVRIT05fQUJJX1NUUklORyAiLnNvIiwKKyAgICAiLnNvIiwKICNlbmRpZiAgLyogX19WTVMgKi8KICNlbmRpZiAgLyogZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykgKi8KICNlbmRpZiAgLyogX19DWUdXSU5fXyAqLwotICAgIHswLCAwfQorICAgIE5VTEwsCiB9OwogCiBzdGF0aWMgc3RydWN0IHsKQEAgLTc1LDcgKzY5LDcgQEAKIHN0YXRpYyBpbnQgbmhhbmRsZXMgPSAwOwogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKQEAgLTEyMSwxMCArMTE1LDYgQEAKICAgICBkbG9wZW5mbGFncyA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+ZGxvcGVuZmxhZ3M7CiAjZW5kaWYKIAotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImRsb3BlbihcIiVzXCIsICV4KTtcbiIsIHBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkbG9wZW5mbGFncyk7Ci0KICNpZmRlZiBfX1ZNUwogICAgIC8qIFZNUyBjdXJyZW50bHkgZG9uJ3QgYWxsb3cgYSBwYXRobmFtZSwgdXNlIGEgbG9naWNhbCBuYW1lIGluc3RlYWQgKi8KICAgICAvKiBDb25jYXRlbmF0ZSAncHl0aG9uX21vZHVsZV8nIGFuZCBzaG9ydG5hbWUgKi8KQEAgLTEzOSwxMCArMTI5LDE5IEBACiAgICAgaGFuZGxlID0gZGxvcGVuKHBhdGhuYW1lLCBkbG9wZW5mbGFncyk7CiAKICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKm1vZF9uYW1lID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqZXJyb3Jfb2IgPSBOVUxMOwogICAgICAgICBjb25zdCBjaGFyICplcnJvciA9IGRsZXJyb3IoKTsKICAgICAgICAgaWYgKGVycm9yID09IE5VTEwpCiAgICAgICAgICAgICBlcnJvciA9ICJ1bmtub3duIGRsb3BlbigpIGVycm9yIjsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCBlcnJvcik7CisgICAgICAgIGVycm9yX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZXJyb3IpOworICAgICAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocGF0aG5hbWUpOworICAgICAgICBtb2RfbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNob3J0bmFtZSk7CisgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKGVycm9yX29iLCBtb2RfbmFtZSwgcGF0aCk7CisgICAgICAgIFB5X1hERUNSRUYoZXJyb3Jfb2IpOworICAgICAgICBQeV9YREVDUkVGKHBhdGgpOworICAgICAgICBQeV9YREVDUkVGKG1vZF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChmcCAhPSBOVUxMICYmIG5oYW5kbGVzIDwgMTI4KQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfc3R1Yi5jIGIvUHl0aG9uL2R5bmxvYWRfc3R1Yi5jCmluZGV4IDY5ZjhiNDUuLjU5MTYwNDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3N0dWIuYworKysgYi9QeXRob24vZHlubG9hZF9zdHViLmMKQEAgLTYsNiArNiw0IEBACiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotCXswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0ge05VTEx9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfd2luLmMgYi9QeXRob24vZHlubG9hZF93aW4uYwppbmRleCA3M2ExZGNmLi4yNWI2NjgwIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF93aW4uYworKysgYi9QeXRob24vZHlubG9hZF93aW4uYwpAQCAtMTIsMTYgKzEyLDE4IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogCiAvLyAiYWN0aXZhdGlvbiBjb250ZXh0IiBtYWdpYyAtIHNlZSBkbF9udC5jLi4uCisjaWYgSEFWRV9TWFMKIGV4dGVybiBVTE9OR19QVFIgX1B5X0FjdGl2YXRlQWN0Q3R4KCk7CiB2b2lkIF9QeV9EZWFjdGl2YXRlQWN0Q3R4KFVMT05HX1BUUiBjb29raWUpOwotCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotI2lmZGVmIF9ERUJVRwotICAgIHsiX2QucHlkIiwgInJiIiwgQ19FWFRFTlNJT059LAotI2Vsc2UKLSAgICB7Ii5weWQiLCAicmIiLCBDX0VYVEVOU0lPTn0sCiAjZW5kaWYKLSAgICB7MCwgMH0KKworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7CisjaWZkZWYgX0RFQlVHCisgICAgIl9kLnB5ZCIsCisjZWxzZQorICAgICIucHlkIiwKKyNlbmRpZgorICAgIE5VTEwKIH07CiAKIApAQCAtMTcxLDQzICsxNzMsNDQgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICBjaGFyIGZ1bmNuYW1lWzI1OF0sICppbXBvcnRfcHl0aG9uOworICAgIHdjaGFyX3QgKndwYXRobmFtZTsKIAogI2lmbmRlZiBfREVCVUcKICAgICBfUHlfQ2hlY2tQeXRob24zKCk7CiAjZW5kaWYKIAorICAgIHdwYXRobmFtZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocGF0aG5hbWUpOworICAgIGlmICh3cGF0aG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CiAKICAgICB7CiAgICAgICAgIEhJTlNUQU5DRSBoRExMID0gTlVMTDsKLSAgICAgICAgY2hhciBwYXRoYnVmWzI2MF07Ci0gICAgICAgIExQVFNUUiBkdW1teTsKICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9tb2RlOworI2lmIEhBVkVfU1hTCiAgICAgICAgIFVMT05HX1BUUiBjb29raWUgPSAwOwotICAgICAgICAvKiBXZSB1c2UgTG9hZExpYnJhcnlFeCBzbyBXaW5kb3dzIGxvb2tzIGZvciBkZXBlbmRlbnQgRExMcwotICAgICAgICAgICAgaW4gZGlyZWN0b3J5IG9mIHBhdGhuYW1lIGZpcnN0LiAgSG93ZXZlciwgV2luZG93czk1Ci0gICAgICAgICAgICBjYW4gc29tZXRpbWVzIG5vdCB3b3JrIGNvcnJlY3RseSB1bmxlc3MgdGhlIGFic29sdXRlCi0gICAgICAgICAgICBwYXRoIGlzIHVzZWQuICBJZiBHZXRGdWxsUGF0aE5hbWUoKSBmYWlscywgdGhlIExvYWRMaWJyYXJ5Ci0gICAgICAgICAgICB3aWxsIGNlcnRhaW5seSBmYWlsIHRvbywgc28gdXNlIGl0cyBlcnJvciBjb2RlICovCisjZW5kaWYKIAogICAgICAgICAvKiBEb24ndCBkaXNwbGF5IGEgbWVzc2FnZSBib3ggd2hlbiBQeXRob24gY2FuJ3QgbG9hZCBhIERMTCAqLwogICAgICAgICBvbGRfbW9kZSA9IFNldEVycm9yTW9kZShTRU1fRkFJTENSSVRJQ0FMRVJST1JTKTsKIAotICAgICAgICBpZiAoR2V0RnVsbFBhdGhOYW1lKHBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwYXRoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teSkpIHsKLSAgICAgICAgICAgIFVMT05HX1BUUiBjb29raWUgPSBfUHlfQWN0aXZhdGVBY3RDdHgoKTsKLSAgICAgICAgICAgIC8qIFhYWCBUaGlzIGNhbGwgZG9lc24ndCBleGlzdCBpbiBXaW5kb3dzIENFICovCi0gICAgICAgICAgICBoRExMID0gTG9hZExpYnJhcnlFeChwYXRobmFtZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKTsKLSAgICAgICAgICAgIF9QeV9EZWFjdGl2YXRlQWN0Q3R4KGNvb2tpZSk7Ci0gICAgICAgIH0KKyNpZiBIQVZFX1NYUworICAgICAgICBjb29raWUgPSBfUHlfQWN0aXZhdGVBY3RDdHgoKTsKKyNlbmRpZgorICAgICAgICAvKiBXZSB1c2UgTG9hZExpYnJhcnlFeCBzbyBXaW5kb3dzIGxvb2tzIGZvciBkZXBlbmRlbnQgRExMcworICAgICAgICAgICAgaW4gZGlyZWN0b3J5IG9mIHBhdGhuYW1lIGZpcnN0LiAqLworICAgICAgICAvKiBYWFggVGhpcyBjYWxsIGRvZXNuJ3QgZXhpc3QgaW4gV2luZG93cyBDRSAqLworICAgICAgICBoRExMID0gTG9hZExpYnJhcnlFeFcod3BhdGhuYW1lLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOworI2lmIEhBVkVfU1hTCisgICAgICAgIF9QeV9EZWFjdGl2YXRlQWN0Q3R4KGNvb2tpZSk7CisjZW5kaWYKIAogICAgICAgICAvKiByZXN0b3JlIG9sZCBlcnJvciBtb2RlIHNldHRpbmdzICovCiAgICAgICAgIFNldEVycm9yTW9kZShvbGRfbW9kZSk7CkBAIC0yNTQsMzEgKzI1NywzNCBAQAogICAgICAgICAgICAgICAgICAgICAiRExMIGxvYWQgZmFpbGVkOiAiKTsKIAogICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGVMZW5ndGgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19JbXBvcnRFcnJvciwgbWVzc2FnZSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKG1lc3NhZ2UpOworICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1lc3NhZ2UsIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNob3J0bmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2hhciBidWZmZXJbMjU2XTsKIAorICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLAogI2lmZGVmIF9ERUJVRwotICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAicHl0aG9uJWQlZF9kLmRsbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24lZCVkX2QuZGxsIiwKICNlbHNlCi0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJweXRob24lZCVkLmRsbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24lZCVkLmRsbCIsCiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTUFKT1JfVkVSU0lPTixQWV9NSU5PUl9WRVJTSU9OKTsKICAgICAgICAgICAgIGltcG9ydF9weXRob24gPSBHZXRQeXRob25JbXBvcnQoaERMTCk7CiAKICAgICAgICAgICAgIGlmIChpbXBvcnRfcHl0aG9uICYmCiAgICAgICAgICAgICAgICAgc3RyY2FzZWNtcChidWZmZXIsaW1wb3J0X3B5dGhvbikpIHsKLSAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIHVzZSBvZiAlLjE1MHMgY29uZmxpY3RzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIHRoaXMgdmVyc2lvbiBvZiBQeXRob24uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydF9weXRob24pOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvcixidWZmZXIpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSB1c2Ugb2YgJS4xNTBzIGNvbmZsaWN0cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIHRoaXMgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3B5dGhvbik7CiAgICAgICAgICAgICAgICAgRnJlZUxpYnJhcnkoaERMTCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggNWE5YTYyNC4uNjI2YjE2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtMzIwLDYgKzMyMCwzOSBAQAogICAgIFB5RXJyX1Jlc3RvcmUoTlVMTCwgTlVMTCwgTlVMTCk7CiB9CiAKK3ZvaWQKK1B5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKipwX3R5cGUsIFB5T2JqZWN0ICoqcF92YWx1ZSwgUHlPYmplY3QgKipwX3RyYWNlYmFjaykKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgKnBfdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgKnBfdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICAqcF90cmFjZWJhY2sgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7CisKKyAgICBQeV9YSU5DUkVGKCpwX3R5cGUpOworICAgIFB5X1hJTkNSRUYoKnBfdmFsdWUpOworICAgIFB5X1hJTkNSRUYoKnBfdHJhY2ViYWNrKTsKK30KKwordm9pZAorUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqcF90eXBlLCBQeU9iamVjdCAqcF92YWx1ZSwgUHlPYmplY3QgKnBfdHJhY2ViYWNrKQoreworICAgIFB5T2JqZWN0ICpvbGR0eXBlLCAqb2xkdmFsdWUsICpvbGR0cmFjZWJhY2s7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIG9sZHR5cGUgPSB0c3RhdGUtPmV4Y190eXBlOworICAgIG9sZHZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgb2xkdHJhY2ViYWNrID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOworCisgICAgdHN0YXRlLT5leGNfdHlwZSA9IHBfdHlwZTsKKyAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IHBfdmFsdWU7CisgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gcF90cmFjZWJhY2s7CisKKyAgICBQeV9YREVDUkVGKG9sZHR5cGUpOworICAgIFB5X1hERUNSRUYob2xkdmFsdWUpOworICAgIFB5X1hERUNSRUYob2xkdHJhY2ViYWNrKTsKK30KKwogLyogQ29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIHNldCBhIHR5cGUgZXJyb3IgZXhjZXB0aW9uIGFuZCByZXR1cm4gMCAqLwogCiBpbnQKQEAgLTM0MSwxMSArMzc0LDkgQEAKIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqZXhjLCBQeU9iamVjdCAqZmlsZW5hbWVPYmplY3QpCiB7CiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgUHlPYmplY3QgKnYsICphcmdzOwogICAgIGludCBpID0gZXJybm87Ci0jaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBjaGFyICpzOwotI2Vsc2UKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgV0NIQVIgKnNfYnVmID0gTlVMTDsKICNlbmRpZiAvKiBVbml4L1dpbmRvd3MgKi8KIApAQCAtMzU1LDExICszODYsMTQgQEAKICNlbmRpZgogCiAjaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoaSA9PSAwKQotICAgICAgICBzID0gIkVycm9yIjsgLyogU29tZXRpbWVzIGVycm5vIGRpZG4ndCBnZXQgc2V0ICovCi0gICAgZWxzZQotICAgICAgICBzID0gc3RyZXJyb3IoaSk7Ci0gICAgbWVzc2FnZSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHN0cmxlbihzKSwgImlnbm9yZSIpOworICAgIGlmIChpICE9IDApIHsKKyAgICAgICAgY2hhciAqcyA9IHN0cmVycm9yKGkpOworICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShzLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBTb21ldGltZXMgZXJybm8gZGlkbid0IGdldCBzZXQgKi8KKyAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFcnJvciIpOworICAgIH0KICNlbHNlCiAgICAgaWYgKGkgPT0gMCkKICAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFcnJvciIpOyAvKiBTb21ldGltZXMgZXJybm8gZGlkbid0IGdldCBzZXQgKi8KQEAgLTM5NSw3ICs0MjksNyBAQAogICAgICAgICAgICAgICAgIC8qIHJlbW92ZSB0cmFpbGluZyBjci9sZiBhbmQgZG90cyAqLwogICAgICAgICAgICAgICAgIHdoaWxlIChsZW4gPiAwICYmIChzX2J1ZltsZW4tMV0gPD0gTCcgJyB8fCBzX2J1ZltsZW4tMV0gPT0gTCcuJykpCiAgICAgICAgICAgICAgICAgICAgIHNfYnVmWy0tbGVuXSA9IEwnXDAnOwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc19idWYsIGxlbik7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoc19idWYsIGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC00MTAsMTQgKzQ0NCwxOCBAQAogICAgIH0KIAogICAgIGlmIChmaWxlbmFtZU9iamVjdCAhPSBOVUxMKQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlPTykiLCBpLCBtZXNzYWdlLCBmaWxlbmFtZU9iamVjdCk7CisgICAgICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoaU9PKSIsIGksIG1lc3NhZ2UsIGZpbGVuYW1lT2JqZWN0KTsKICAgICBlbHNlCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaU8pIiwgaSwgbWVzc2FnZSk7CisgICAgICAgIGFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoaU8pIiwgaSwgbWVzc2FnZSk7CiAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogCi0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoZXhjLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOworICAgIGlmIChhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGwoZXhjLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopIFB5X1RZUEUodiksIHYpOworICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICB9CiAgICAgfQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBMb2NhbEZyZWUoc19idWYpOwpAQCAtNDY0LDcgKzUwMiw3IEBACiAgICAgaW50IGxlbjsKICAgICBXQ0hBUiAqc19idWYgPSBOVUxMOyAvKiBGcmVlIHZpYSBMb2NhbEZyZWUgKi8KICAgICBQeU9iamVjdCAqbWVzc2FnZTsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBQeU9iamVjdCAqYXJncywgKnY7CiAgICAgRFdPUkQgZXJyID0gKERXT1JEKWllcnI7CiAgICAgaWYgKGVycj09MCkgZXJyID0gR2V0TGFzdEVycm9yKCk7CiAgICAgbGVuID0gRm9ybWF0TWVzc2FnZVcoCkBAIC00ODcsNyArNTI1LDcgQEAKICAgICAgICAgLyogcmVtb3ZlIHRyYWlsaW5nIGNyL2xmIGFuZCBkb3RzICovCiAgICAgICAgIHdoaWxlIChsZW4gPiAwICYmIChzX2J1ZltsZW4tMV0gPD0gTCcgJyB8fCBzX2J1ZltsZW4tMV0gPT0gTCcuJykpCiAgICAgICAgICAgICBzX2J1ZlstLWxlbl0gPSBMJ1wwJzsKLSAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzX2J1ZiwgbGVuKTsKKyAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoc19idWYsIGxlbik7CiAgICAgfQogCiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKQEAgLTQ5NiwxNSArNTM0LDIwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmaWxlbmFtZU9iamVjdCAhPSBOVUxMKQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlPTykiLCBlcnIsIG1lc3NhZ2UsIGZpbGVuYW1lT2JqZWN0KTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaU8pIiwgZXJyLCBtZXNzYWdlKTsKKyAgICBpZiAoZmlsZW5hbWVPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgZmlsZW5hbWVPYmplY3QgPSBQeV9Ob25lOworICAgIC8qIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBmb3IgcGFzc2luZyBhIFdpbmRvd3MgZXJyb3IgY29kZS4KKyAgICAgICBUaGUgUE9TSVggdHJhbnNsYXRpb24gd2lsbCBiZSBmaWd1cmVkIG91dCBieSB0aGUgY29uc3RydWN0b3IuICovCisgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihpT09pKSIsIDAsIG1lc3NhZ2UsIGZpbGVuYW1lT2JqZWN0LCBlcnIpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKIAotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KGV4Yywgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICBpZiAoYXJncyAhPSBOVUxMKSB7CisgICAgICAgIHYgPSBQeU9iamVjdF9DYWxsKGV4YywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgaWYgKHYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KChQeU9iamVjdCAqKSBQeV9UWVBFKHYpLCB2KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgfQogICAgIH0KICAgICBMb2NhbEZyZWUoc19idWYpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTc1LDYgKzYxOCw0OSBAQAogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAorUHlPYmplY3QgKgorUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQoreworICAgIFB5T2JqZWN0ICphcmdzLCAqa3dhcmdzLCAqZXJyb3I7CisKKyAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga3dhcmdzID0gUHlEaWN0X05ldygpOworICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgbmFtZSA9IFB5X05vbmU7CisgICAgfQorCisgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICBwYXRoID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYobXNnKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG1zZyk7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKTsKKworICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbChQeUV4Y19JbXBvcnRFcnJvciwgYXJncywga3dhcmdzKTsKKyAgICBpZiAoZXJyb3IgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopUHlfVFlQRShlcnJvciksIGVycm9yKTsKKyAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgUHlfREVDUkVGKGt3YXJncyk7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKwogdm9pZAogX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKQEAgLTY1Niw3ICs3NDIsNyBAQAogICAgICAgICBpZiAoYmFzZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICB9Ci0gICAgLyogQ3JlYXRlIGEgcmVhbCBuZXctc3R5bGUgY2xhc3MuICovCisgICAgLyogQ3JlYXRlIGEgcmVhbCBjbGFzcy4gKi8KICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5VHlwZV9UeXBlLCAic09PIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90KzEsIGJhc2VzLCBkaWN0KTsKICAgZmFpbHVyZToKQEAgLTcwNyw2ICs3OTMsNyBAQAogdm9pZAogUHlFcnJfV3JpdGVVbnJhaXNhYmxlKFB5T2JqZWN0ICpvYmopCiB7CisgICAgX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiAgICAgUHlPYmplY3QgKmYsICp0LCAqdiwgKnRiOwogICAgIFB5RXJyX0ZldGNoKCZ0LCAmdiwgJnRiKTsKICAgICBmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKQEAgLTcyMyw3ICs4MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBkb3QrMTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbW9kdWxlTmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodCwgIl9fbW9kdWxlX18iKTsKKyAgICAgICAgICAgIG1vZHVsZU5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHQsICZQeUlkX19fbW9kdWxlX18pOwogICAgICAgICAgICAgaWYgKG1vZHVsZU5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBQeUZpbGVfV3JpdGVTdHJpbmcoIjx1bmtub3duPiIsIGYpOwogICAgICAgICAgICAgZWxzZSB7CkBAIC03NzQsNiArODYxLDEyIEBACiBQeUVycl9TeW50YXhMb2NhdGlvbkV4KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIHsKICAgICBQeU9iamVjdCAqZXhjLCAqdiwgKnRiLCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihsaW5lbm8pOworICAgIF9QeV9JREVOVElGSUVSKG1zZyk7CisgICAgX1B5X0lERU5USUZJRVIob2Zmc2V0KTsKKyAgICBfUHlfSURFTlRJRklFUihwcmludF9maWxlX2FuZF9saW5lKTsKKyAgICBfUHlfSURFTlRJRklFUih0ZXh0KTsKIAogICAgIC8qIGFkZCBhdHRyaWJ1dGVzIGZvciB0aGUgbGluZSBudW1iZXIgYW5kIGZpbGVuYW1lIGZvciB0aGUgZXJyb3IgKi8KICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdiwgJnRiKTsKQEAgLTc4NCw3ICs4NzcsNyBAQAogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgImxpbmVubyIsIHRtcCkpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX2xpbmVubywgdG1wKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KQEAgLTc5Myw3ICs4ODYsNyBAQAogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJvZmZzZXQiLCB0bXApKQorICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfb2Zmc2V0LCB0bXApKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgfQpAQCAtODAzLDM1ICs4OTYsMzUgQEAKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAiZmlsZW5hbWUiLCB0bXApKQorICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfZmlsZW5hbWUsIHRtcCkpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICB9CiAKICAgICAgICAgdG1wID0gUHlFcnJfUHJvZ3JhbVRleHQoZmlsZW5hbWUsIGxpbmVubyk7CiAgICAgICAgIGlmICh0bXApIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJ0ZXh0IiwgdG1wKSkKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX3RleHQsIHRtcCkpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJvZmZzZXQiLCBQeV9Ob25lKSkgeworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX29mZnNldCwgUHlfTm9uZSkpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9CiAgICAgaWYgKGV4YyAhPSBQeUV4Y19TeW50YXhFcnJvcikgewotICAgICAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodiwgIm1zZyIpKSB7CisgICAgICAgIGlmICghX1B5T2JqZWN0X0hhc0F0dHJJZCh2LCAmUHlJZF9tc2cpKSB7CiAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9TdHIodik7CiAgICAgICAgICAgICBpZiAodG1wKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgIm1zZyIsIHRtcCkpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfbXNnLCB0bXApKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh2LCAicHJpbnRfZmlsZV9hbmRfbGluZSIpKSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAicHJpbnRfZmlsZV9hbmRfbGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKSkKKyAgICAgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKHYsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUpKSB7CisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9wcmludF9maWxlX2FuZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSkpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9maWxldXRpbHMuYyBiL1B5dGhvbi9maWxldXRpbHMuYwppbmRleCBjNTYzZWFhLi41MDFjYjhjIDEwMDY0NAotLS0gYS9QeXRob24vZmlsZXV0aWxzLmMKKysrIGIvUHl0aG9uL2ZpbGV1dGlscy5jCkBAIC0zLDYgKzMsNDAgQEAKICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9MQU5HSU5GT19ICisjaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyNlbmRpZgorCitQeU9iamVjdCAqCitfUHlfZGV2aWNlX2VuY29kaW5nKGludCBmZCkKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoTVNfV0lONjQpCisgICAgVUlOVCBjcDsKKyNlbmRpZgorICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAhaXNhdHR5KGZkKSkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKE1TX1dJTjY0KQorICAgIGlmIChmZCA9PSAwKQorICAgICAgICBjcCA9IEdldENvbnNvbGVDUCgpOworICAgIGVsc2UgaWYgKGZkID09IDEgfHwgZmQgPT0gMikKKyAgICAgICAgY3AgPSBHZXRDb25zb2xlT3V0cHV0Q1AoKTsKKyAgICBlbHNlCisgICAgICAgIGNwID0gMDsKKyAgICAvKiBHZXRDb25zb2xlQ1AoKSBhbmQgR2V0Q29uc29sZU91dHB1dENQKCkgcmV0dXJuIDAgaWYgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgaGFzIG5vIGNvbnNvbGUgKi8KKyAgICBpZiAoY3AgIT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJjcCV1IiwgKHVuc2lnbmVkIGludCljcCk7CisjZWxpZiBkZWZpbmVkKENPREVTRVQpCisgICAgeworICAgICAgICBjaGFyICpjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CisgICAgICAgIGlmIChjb2Rlc2V0ICE9IE5VTEwgJiYgY29kZXNldFswXSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvZGVzZXQpOworICAgIH0KKyNlbmRpZgorICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAjaWZkZWYgSEFWRV9TVEFUCiAKIC8qIERlY29kZSBhIGJ5dGUgc3RyaW5nIGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZyB3aXRoIHRoZQpAQCAtMTYsNyArNTAsOSBAQAogICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKHVzZQogICAgUHlNZW1fRnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSkgYW5kIHdyaXRlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiB3aWRlCiAgICBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byAqc2l6ZSBpZiBzaXplIGlzIG5vdCBOVUxMLCBvcgotICAgTlVMTCBvbiBlcnJvciAoY29udmVyc2lvbiBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcikuCisgICBOVUxMIG9uIGVycm9yIChkZWNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcikuIElmIHNpemUgaXMgbm90IE5VTEwsCisgICAqc2l6ZSBpcyBzZXQgdG8gKHNpemVfdCktMSBvbiBtZW1vcnkgZXJyb3IgYW5kIChzaXplX3QpLTIgb24gZGVjb2RpbmcKKyAgIGVycm9yLgogCiAgICBDb252ZXJzaW9uIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMKICAgIGxpYnJhcnkuICovCkBAIC04Miw4ICsxMTgsOSBAQAogICAgICAgICAgICAgICAgc2luY2Ugd2UgcHJvdmlkZSBldmVyeXRoaW5nIHRoYXQgd2UgaGF2ZSAtCiAgICAgICAgICAgICAgICB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMgbGlicmFyeSwgb3IgSQogICAgICAgICAgICAgICAgbWlzdW5kZXJzdG9vZCBob3cgbWJydG93YyB3b3Jrcy4gKi8KLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAidW5leHBlY3RlZCBtYnJ0b3djIHJlc3VsdCAtMlxuIik7CiAgICAgICAgICAgICBQeU1lbV9GcmVlKHJlcyk7CisgICAgICAgICAgICBpZiAoc2l6ZSAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpzaXplID0gKHNpemVfdCktMjsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gKHNpemVfdCktMSkgewpAQCAtMTEyLDcgKzE0OSw4IEBACiAgICAgICAgaXMgQVNDSUkgKGkuZS4gZXNjYXBlIGFsbCBieXRlcyA+IDEyOC4gVGhpcyB3aWxsIHN0aWxsIHJvdW5kdHJpcAogICAgICAgIGNvcnJlY3RseSBpbiB0aGUgbG9jYWxlJ3MgY2hhcnNldCwgd2hpY2ggbXVzdCBiZSBhbiBBU0NJSSBzdXBlcnNldC4gKi8KICAgICByZXMgPSBQeU1lbV9NYWxsb2MoKHN0cmxlbihhcmcpKzEpKnNpemVvZih3Y2hhcl90KSk7Ci0gICAgaWYgKCFyZXMpIGdvdG8gb29tOworICAgIGlmICghcmVzKQorICAgICAgICBnb3RvIG9vbTsKICAgICBpbiA9ICh1bnNpZ25lZCBjaGFyKilhcmc7CiAgICAgb3V0ID0gcmVzOwogICAgIHdoaWxlKCppbikKQEAgLTEyNiw3ICsxNjQsOCBAQAogICAgICAgICAqc2l6ZSA9IG91dCAtIHJlczsKICAgICByZXR1cm4gcmVzOwogb29tOgotICAgIGZwcmludGYoc3RkZXJyLCAib3V0IG9mIG1lbW9yeVxuIik7CisgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgKnNpemUgPSAoc2l6ZV90KS0xOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xMzcsMTAgKzE3NiwxMCBAQAogICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgcmV2ZXJzZSBvZiBfUHlfY2hhcjJ3Y2hhcigpLgogCiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIGJ5dGUgc3RyaW5nICh1c2UgUHlNZW1fRnJlZSgpIHRvIGZyZWUKLSAgIHRoZSBtZW1vcnkpLCBvciBOVUxMIG9uIGNvbnZlcnNpb24gb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCisgICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KIAogICAgSWYgZXJyb3JfcG9zIGlzIG5vdCBOVUxMOiAqZXJyb3JfcG9zIGlzIHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZCBjaGFyYWN0ZXIKLSAgIG9uIGNvbnZlcnNpb24gZXJyb3IsIG9yIChzaXplX3QpLTEgb3RoZXJ3aXNlLiAqLworICAgb24gZW5jb2RpbmcgZXJyb3IsIG9yIChzaXplX3QpLTEgb3RoZXJ3aXNlLiAqLwogY2hhcioKIF9QeV93Y2hhcjJjaGFyKGNvbnN0IHdjaGFyX3QgKnRleHQsIHNpemVfdCAqZXJyb3JfcG9zKQogewpAQCAtMjM1LDggKzI3NCw4IEBACiAvKiBDYWxsIF93c3RhdCgpIG9uIFdpbmRvd3MsIG9yIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQKICAgIGNhbGwgc3RhdCgpIG90aGVyd2lzZS4gT25seSBmaWxsIHN0X21vZGUgYXR0cmlidXRlIG9uIFdpbmRvd3MuCiAKLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIF93c3RhdCgpIC8gc3RhdCgpIGVycm9yIG9yIChpZiBQeUVycl9PY2N1cnJlZCgpKQotICAgdW5pY29kZSBlcnJvci4gKi8KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIF93c3RhdCgpIC8gc3RhdCgpIGVycm9yLCAtMiBpZiBhbiBleGNlcHRpb24gd2FzCisgICByYWlzZWQuICovCiAKIGludAogX1B5X3N0YXQoUHlPYmplY3QgKnBhdGgsIHN0cnVjdCBzdGF0ICpzdGF0YnVmKQpAQCAtMjQ0LDggKzI4MywxMiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgZXJyOwogICAgIHN0cnVjdCBfc3RhdCB3c3RhdGJ1ZjsKKyAgICB3Y2hhcl90ICp3cGF0aDsKIAotICAgIGVyciA9IF93c3RhdChQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRoKSwgJndzdGF0YnVmKTsKKyAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocGF0aCk7CisgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMjsKKyAgICBlcnIgPSBfd3N0YXQod3BhdGgsICZ3c3RhdGJ1Zik7CiAgICAgaWYgKCFlcnIpCiAgICAgICAgIHN0YXRidWYtPnN0X21vZGUgPSB3c3RhdGJ1Zi5zdF9tb2RlOwogICAgIHJldHVybiBlcnI7CkBAIC0yNTMsNyArMjk2LDcgQEAKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CiAgICAgaWYgKGJ5dGVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIHJldCA9IHN0YXQoUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBzdGF0YnVmKTsKICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgIHJldHVybiByZXQ7CkBAIC0yOTcsMTggKzM0MCwyOSBAQAogX1B5X2ZvcGVuKFB5T2JqZWN0ICpwYXRoLCBjb25zdCBjaGFyICptb2RlKQogewogI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3Y2hhcl90ICp3cGF0aDsKICAgICB3Y2hhcl90IHdtb2RlWzEwXTsKICAgICBpbnQgdXNpemU7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYXRoKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInN0ciBmaWxlIHBhdGggZXhwZWN0ZWQgdW5kZXIgV2luZG93cywgZ290ICVSIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocGF0aCkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIG1vZGUsIC0xLCB3bW9kZSwgc2l6ZW9mKHdtb2RlKSk7CiAgICAgaWYgKHVzaXplID09IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIF93Zm9wZW4oUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aCksIHdtb2RlKTsKKyAgICByZXR1cm4gX3dmb3Blbih3cGF0aCwgd21vZGUpOwogI2Vsc2UKICAgICBGSUxFICpmOwotICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7Ci0gICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHBhdGgsICZieXRlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGYgPSBmb3BlbihQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIG1vZGUpOwogICAgIFB5X0RFQ1JFRihieXRlcyk7CkBAIC0zMTksNyArMzczLDcgQEAKICNpZmRlZiBIQVZFX1JFQURMSU5LCiAKIC8qIFJlYWQgdmFsdWUgb2Ygc3ltYm9saWMgbGluay4gRW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBsb2NhbGUgZW5jb2RpbmcsIGRlY29kZQotICAgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisgICB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4gUmV0dXJuIC0xIG9uIGVycm9yLiAqLwogCiBpbnQKIF9QeV93cmVhZGxpbmsoY29uc3Qgd2NoYXJfdCAqcGF0aCwgd2NoYXJfdCAqYnVmLCBzaXplX3QgYnVmc2l6KQpAQCAtMzYzLDcgKzQxNyw4IEBACiAjaWZkZWYgSEFWRV9SRUFMUEFUSAogCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNhbGl6ZWQgYWJzb2x1dGUgcGF0aG5hbWUuIEVuY29kZSBwYXRoIHRvIHRoZSBsb2NhbGUKLSAgIGVuY29kaW5nLCBkZWNvZGUgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisgICBlbmNvZGluZywgZGVjb2RlIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLgorICAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCiAKIHdjaGFyX3QqCiBfUHlfd3JlYWxwYXRoKGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC00MDEsNyArNDU2LDggQEAKICNlbmRpZgogCiAvKiBHZXQgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBzaXplIGlzIHRoZSBidWZmZXIgc2l6ZSBpbiB3aWRlIGNoYXJhY3RlcnMKLSAgIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIuIERlY29kZSB0aGUgcGF0aCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuICovCisgICBpbmNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyLiBEZWNvZGUgdGhlIHBhdGggZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLgorICAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICovCiAKIHdjaGFyX3QqCiBfUHlfd2dldGN3ZCh3Y2hhcl90ICpidWYsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwppbmRleCBjMzUwOTA3Li5hYTYyNTAyIDEwMDY0NAotLS0gYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYworKysgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwpAQCAtMywxMiArMywxNTM0IEBACiAgICBvZiBpbnQuX19mbG9hdF9fLCBldGMuLCB0aGF0IHRha2UgYW5kIHJldHVybiB1bmljb2RlIG9iamVjdHMgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIi4uL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKy8qIFJhaXNlcyBhbiBleGNlcHRpb24gYWJvdXQgYW4gdW5rbm93biBwcmVzZW50YXRpb24gdHlwZSBmb3IgdGhpcworICogdHlwZS4gKi8KKworc3RhdGljIHZvaWQKK3Vua25vd25fcHJlc2VudGF0aW9uX3R5cGUoUHlfVUNTNCBwcmVzZW50YXRpb25fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9uYW1lKQoreworICAgIC8qICVjIG1pZ2h0IGJlIG91dC1vZi1yYW5nZSwgaGVuY2UgdGhlIHR3byBjYXNlcy4gKi8KKyAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnJWMnICIKKyAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOworICAgIGVsc2UKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmb3JtYXQgY29kZSAnXFx4JXgnICIKKyAgICAgICAgICAgICAgICAgICAgICJmb3Igb2JqZWN0IG9mIHR5cGUgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitpbnZhbGlkX2NvbW1hX3R5cGUoUHlfVUNTNCBwcmVzZW50YXRpb25fdHlwZSkKK3sKKyAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJyVjJy4iLAorICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOworICAgIGVsc2UKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJ1xceCV4Jy4iLAorICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSk7Cit9CisKKy8qCisgICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCisgICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQorICAgIGludGVnZXIsIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlnaXRzIGNvbnN1bWVkLgorCisgICAgcmV0dXJucyAtMSBvbiBlcnJvci4KKyovCitzdGF0aWMgaW50CitnZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwb3MsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcmVzdWx0KQoreworICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsOworICAgIGludCBudW1kaWdpdHM7CisgICAgYWNjdW11bGF0b3IgPSBudW1kaWdpdHMgPSAwOworICAgIGZvciAoOzsoKnBvcykrKywgbnVtZGlnaXRzKyspIHsKKyAgICAgICAgaWYgKCpwb3MgPj0gZW5kKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQURfQ0hBUihzdHIsICpwb3MpKTsKKyAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKgorICAgICAgICAgICBEZXRlY3QgcG9zc2libGUgb3ZlcmZsb3cgYmVmb3JlIGl0IGhhcHBlbnM6CisKKyAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsID4gUFlfU1NJWkVfVF9NQVggaWYgYW5kIG9ubHkgaWYKKyAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMC4KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7CisgICAgfQorICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKKyAgICByZXR1cm4gbnVtZGlnaXRzOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIgcGFyc2luZyAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNwZWNpZmllciBhbGlnbm1lbnQgdG9rZW4gKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitpc19hbGlnbm1lbnRfdG9rZW4oUHlfVUNTNCBjKQoreworICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgJzwnOiBjYXNlICc+JzogY2FzZSAnPSc6IGNhc2UgJ14nOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKKy8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNpZ24gZWxlbWVudCAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK2lzX3NpZ25fZWxlbWVudChQeV9VQ1M0IGMpCit7CisgICAgc3dpdGNoIChjKSB7CisgICAgY2FzZSAnICc6IGNhc2UgJysnOiBjYXNlICctJzoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQogCiAKLSNkZWZpbmUgRk9STUFUX1NUUklORyAgX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZAotI2RlZmluZSBGT1JNQVRfTE9ORyAgICBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkCi0jZGVmaW5lIEZPUk1BVF9GTE9BVCAgIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkCi0jZGVmaW5lIEZPUk1BVF9DT01QTEVYIF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWQKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9VQ1M0IGZpbGxfY2hhcjsKKyAgICBQeV9VQ1M0IGFsaWduOworICAgIGludCBhbHRlcm5hdGU7CisgICAgUHlfVUNTNCBzaWduOworICAgIFB5X3NzaXplX3Qgd2lkdGg7CisgICAgaW50IHRob3VzYW5kc19zZXBhcmF0b3JzOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uOworICAgIFB5X1VDUzQgdHlwZTsKK30gSW50ZXJuYWxGb3JtYXRTcGVjOwogCi0jaW5jbHVkZSAiLi4vT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgiCisjaWYgMAorLyogT2NjYXNzaW9uYWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gU2hvdWxkIG5vcm1hbGx5IGJlIGNvbW1lbnRlZCBvdXQuICovCitzdGF0aWMgdm9pZAorREVCVUdfUFJJTlRfRk9STUFUX1NQRUMoSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCit7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogZmlsbF9jaGFyICVkXG4iLCBmb3JtYXQtPmZpbGxfY2hhcik7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogYWxpZ24gJWRcbiIsIGZvcm1hdC0+YWxpZ24pOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsdGVybmF0ZSAlZFxuIiwgZm9ybWF0LT5hbHRlcm5hdGUpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHNpZ24gJWRcbiIsIGZvcm1hdC0+c2lnbik7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogd2lkdGggJXpkXG4iLCBmb3JtYXQtPndpZHRoKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0aG91c2FuZHNfc2VwYXJhdG9ycyAlZFxuIiwKKyAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyk7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogcHJlY2lzaW9uICV6ZFxuIiwgZm9ybWF0LT5wcmVjaXNpb24pOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHR5cGUgJWNcbiIsIGZvcm1hdC0+dHlwZSk7CisgICAgcHJpbnRmKCJcbiIpOworfQorI2VuZGlmCisKKworLyoKKyAgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGZvcm1hdF9zcGVjLCBlbmQgcG9pbnRzIGp1c3QgcGFzdCBpdHMgZW5kLgorICBmaWxscyBpbiBmb3JtYXQgd2l0aCB0aGUgcGFyc2VkIGluZm9ybWF0aW9uLgorICByZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgorICBpZiBmYWlsdXJlLCBzZXRzIHRoZSBleGNlcHRpb24KKyovCitzdGF0aWMgaW50CitwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF9hbGlnbikKK3sKKyAgICBQeV9zc2l6ZV90IHBvcyA9IHN0YXJ0OworICAgIC8qIGVuZC1wb3MgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKKyAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCisjZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYywgaW5kZXgpCisKKyAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOworICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOworCisgICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnXDAnOworICAgIGZvcm1hdC0+YWxpZ24gPSBkZWZhdWx0X2FsaWduOworICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMDsKKyAgICBmb3JtYXQtPnNpZ24gPSAnXDAnOworICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKKyAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMDsKKyAgICBmb3JtYXQtPnByZWNpc2lvbiA9IC0xOworICAgIGZvcm1hdC0+dHlwZSA9IGRlZmF1bHRfdHlwZTsKKworICAgIC8qIElmIHRoZSBzZWNvbmQgY2hhciBpcyBhbiBhbGlnbm1lbnQgdG9rZW4sCisgICAgICAgdGhlbiBwYXJzZSB0aGUgZmlsbCBjaGFyICovCisgICAgaWYgKGVuZC1wb3MgPj0gMiAmJiBpc19hbGlnbm1lbnRfdG9rZW4oUkVBRF9zcGVjKHBvcysxKSkpIHsKKyAgICAgICAgZm9ybWF0LT5hbGlnbiA9IFJFQURfc3BlYyhwb3MrMSk7CisgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7CisgICAgICAgIHBvcyArPSAyOworICAgIH0KKyAgICBlbHNlIGlmIChlbmQtcG9zID49IDEgJiYgaXNfYWxpZ25tZW50X3Rva2VuKFJFQURfc3BlYyhwb3MpKSkgeworICAgICAgICBmb3JtYXQtPmFsaWduID0gUkVBRF9zcGVjKHBvcyk7CisgICAgICAgIGFsaWduX3NwZWNpZmllZCA9IDE7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIFBhcnNlIHRoZSB2YXJpb3VzIHNpZ24gb3B0aW9ucyAqLworICAgIGlmIChlbmQtcG9zID49IDEgJiYgaXNfc2lnbl9lbGVtZW50KFJFQURfc3BlYyhwb3MpKSkgeworICAgICAgICBmb3JtYXQtPnNpZ24gPSBSRUFEX3NwZWMocG9zKTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogSWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzICMsIHdlJ3JlIGluIGFsdGVybmF0ZSBtb2RlLiAgVGhpcyBvbmx5CisgICAgICAgYXBwbGllcyB0byBpbnRlZ2Vycy4gKi8KKyAgICBpZiAoZW5kLXBvcyA+PSAxICYmIFJFQURfc3BlYyhwb3MpID09ICcjJykgeworICAgICAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDE7CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIC8qIFRoZSBzcGVjaWFsIGNhc2UgZm9yIDAtcGFkZGluZyAoYmFja3dhcmRzIGNvbXBhdCkgKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyAmJiBlbmQtcG9zID49IDEgJiYgUkVBRF9zcGVjKHBvcykgPT0gJzAnKSB7CisgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID0gJzAnOworICAgICAgICBpZiAoIWFsaWduX3NwZWNpZmllZCkgeworICAgICAgICAgICAgZm9ybWF0LT5hbGlnbiA9ICc9JzsKKyAgICAgICAgfQorICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICBjb25zdW1lZCA9IGdldF9pbnRlZ2VyKGZvcm1hdF9zcGVjLCAmcG9zLCBlbmQsICZmb3JtYXQtPndpZHRoKTsKKyAgICBpZiAoY29uc3VtZWQgPT0gLTEpCisgICAgICAgIC8qIE92ZXJmbG93IGVycm9yLiBFeGNlcHRpb24gYWxyZWFkeSBzZXQuICovCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogSWYgY29uc3VtZWQgaXMgMCwgd2UgZGlkbid0IGNvbnN1bWUgYW55IGNoYXJhY3RlcnMgZm9yIHRoZQorICAgICAgIHdpZHRoLiBJbiB0aGF0IGNhc2UsIHJlc2V0IHRoZSB3aWR0aCB0byAtMSwgYmVjYXVzZQorICAgICAgIGdldF9pbnRlZ2VyKCkgd2lsbCBoYXZlIHNldCBpdCB0byB6ZXJvLiAtMSBpcyBob3cgd2UgcmVjb3JkCisgICAgICAgdGhhdCB0aGUgd2lkdGggd2Fzbid0IHNwZWNpZmllZC4gKi8KKyAgICBpZiAoY29uc3VtZWQgPT0gMCkKKyAgICAgICAgZm9ybWF0LT53aWR0aCA9IC0xOworCisgICAgLyogQ29tbWEgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgeworICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogUGFyc2UgZmllbGQgcHJlY2lzaW9uICovCisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJy4nKSB7CisgICAgICAgICsrcG9zOworCisgICAgICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoZm9ybWF0X3NwZWMsICZwb3MsIGVuZCwgJmZvcm1hdC0+cHJlY2lzaW9uKTsKKyAgICAgICAgaWYgKGNvbnN1bWVkID09IC0xKQorICAgICAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8qIE5vdCBoYXZpbmcgYSBwcmVjaXNpb24gYWZ0ZXIgYSBkb3QgaXMgYW4gZXJyb3IuICovCisgICAgICAgIGlmIChjb25zdW1lZCA9PSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRm9ybWF0IHNwZWNpZmllciBtaXNzaW5nIHByZWNpc2lvbiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8qIEZpbmFsbHksIHBhcnNlIHRoZSB0eXBlIGZpZWxkLiAqLworCisgICAgaWYgKGVuZC1wb3MgPiAxKSB7CisgICAgICAgIC8qIE1vcmUgdGhhbiBvbmUgY2hhciByZW1haW4sIGludmFsaWQgZm9ybWF0IHNwZWNpZmllci4gKi8KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKGVuZC1wb3MgPT0gMSkgeworICAgICAgICBmb3JtYXQtPnR5cGUgPSBSRUFEX3NwZWMocG9zKTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogRG8gYXMgbXVjaCB2YWxpZGF0aW5nIGFzIHdlIGNhbiwganVzdCBieSBsb29raW5nIGF0IHRoZSBmb3JtYXQKKyAgICAgICBzcGVjaWZpZXIuICBEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgd2hhdCB0eXBlIG9mIGZvcm1hdHRpbmcKKyAgICAgICB3ZSdyZSBkb2luZyAoaW50LCBmbG9hdCwgc3RyaW5nKS4gKi8KKworICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKSB7CisgICAgICAgIHN3aXRjaCAoZm9ybWF0LT50eXBlKSB7CisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgY2FzZSAnZic6CisgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICBjYXNlICdFJzoKKyAgICAgICAgY2FzZSAnRyc6CisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICBjYXNlICdGJzoKKyAgICAgICAgY2FzZSAnXDAnOgorICAgICAgICAgICAgLyogVGhlc2UgYXJlIGFsbG93ZWQuIFNlZSBQRVAgMzc4LiovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGludmFsaWRfY29tbWFfdHlwZShmb3JtYXQtPnR5cGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQgKGZvcm1hdC0+YWxpZ24gPD0gMTI3KTsKKyAgICBhc3NlcnQgKGZvcm1hdC0+c2lnbiA8PSAxMjcpOworICAgIHJldHVybiAxOworfQorCisvKiBDYWxjdWxhdGUgdGhlIHBhZGRpbmcgbmVlZGVkLiAqLworc3RhdGljIHZvaWQKK2NhbGNfcGFkZGluZyhQeV9zc2l6ZV90IG5jaGFycywgUHlfc3NpemVfdCB3aWR0aCwgUHlfVUNTNCBhbGlnbiwKKyAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX2xwYWRkaW5nLCBQeV9zc2l6ZV90ICpuX3JwYWRkaW5nLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fdG90YWwpCit7CisgICAgaWYgKHdpZHRoID49IDApIHsKKyAgICAgICAgaWYgKG5jaGFycyA+IHdpZHRoKQorICAgICAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpuX3RvdGFsID0gd2lkdGg7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBub3Qgc3BlY2lmaWVkLCB1c2UgYWxsIG9mIHRoZSBjaGFycyBhbmQgbm8gbW9yZSAqLworICAgICAgICAqbl90b3RhbCA9IG5jaGFyczsKKyAgICB9CisKKyAgICAvKiBGaWd1cmUgb3V0IGhvdyBtdWNoIGxlYWRpbmcgc3BhY2Ugd2UgbmVlZCwgYmFzZWQgb24gdGhlCisgICAgICAgYWxpZ25pbmcgKi8KKyAgICBpZiAoYWxpZ24gPT0gJz4nKQorICAgICAgICAqbl9scGFkZGluZyA9ICpuX3RvdGFsIC0gbmNoYXJzOworICAgIGVsc2UgaWYgKGFsaWduID09ICdeJykKKyAgICAgICAgKm5fbHBhZGRpbmcgPSAoKm5fdG90YWwgLSBuY2hhcnMpIC8gMjsKKyAgICBlbHNlIGlmIChhbGlnbiA9PSAnPCcgfHwgYWxpZ24gPT0gJz0nKQorICAgICAgICAqbl9scGFkZGluZyA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIC8qIFdlIHNob3VsZCBuZXZlciBoYXZlIGFuIHVuc3BlY2lmaWVkIGFsaWdubWVudC4gKi8KKyAgICAgICAgKm5fbHBhZGRpbmcgPSAwOworICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgICAgKm5fcnBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFycyAtICpuX2xwYWRkaW5nOworfQorCisvKiBEbyB0aGUgcGFkZGluZywgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGNhbGxlci1zdXBwbGllZAorICAgY29udGVudCBnb2VzLiAqLworc3RhdGljIFB5X3NzaXplX3QKK2ZpbGxfcGFkZGluZyhfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgUHlfc3NpemVfdCBuY2hhcnMsCisgICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIsIFB5X3NzaXplX3Qgbl9scGFkZGluZywKKyAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fcnBhZGRpbmcpCit7CisgICAgUHlfc3NpemVfdCBwb3M7CisKKyAgICAvKiBQYWQgb24gbGVmdC4gKi8KKyAgICBpZiAobl9scGFkZGluZykgeworICAgICAgICBwb3MgPSB3cml0ZXItPnBvczsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwgcG9zLCBuX2xwYWRkaW5nLCBmaWxsX2NoYXIpOworICAgIH0KKworICAgIC8qIFBhZCBvbiByaWdodC4gKi8KKyAgICBpZiAobl9ycGFkZGluZykgeworICAgICAgICBwb3MgPSB3cml0ZXItPnBvcyArIG5jaGFycyArIG5fbHBhZGRpbmc7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsIHBvcywgbl9ycGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICB9CisKKyAgICAvKiBQb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRlbnQuICovCisgICAgd3JpdGVyLT5wb3MgKz0gbl9scGFkZGluZzsKKyAgICByZXR1cm4gMDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KKyNkZWZpbmUgTFRfQ1VSUkVOVF9MT0NBTEUgMAorI2RlZmluZSBMVF9ERUZBVUxUX0xPQ0FMRSAxCisjZGVmaW5lIExUX05PX0xPQ0FMRSAyCisKKy8qIExvY2FsZSBpbmZvIG5lZWRlZCBmb3IgZm9ybWF0dGluZyBpbnRlZ2VycyBhbmQgdGhlIHBhcnQgb2YgZmxvYXRzCisgICBiZWZvcmUgYW5kIGluY2x1ZGluZyB0aGUgZGVjaW1hbC4gTm90ZSB0aGF0IGxvY2FsZXMgb25seSBzdXBwb3J0CisgICA4LWJpdCBjaGFycywgbm90IHVuaWNvZGUuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmRlY2ltYWxfcG9pbnQ7CisgICAgUHlPYmplY3QgKnRob3VzYW5kc19zZXA7CisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmc7Cit9IExvY2FsZUluZm87CisKKyNkZWZpbmUgU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQgezAsIDAsIDB9CisKKy8qIGRlc2NyaWJlcyB0aGUgbGF5b3V0IGZvciBhbiBpbnRlZ2VyLCBzZWUgdGhlIGNvbW1lbnQgaW4KKyAgIGNhbGNfbnVtYmVyX3dpZHRocygpIGZvciBkZXRhaWxzICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfc3NpemVfdCBuX2xwYWRkaW5nOworICAgIFB5X3NzaXplX3Qgbl9wcmVmaXg7CisgICAgUHlfc3NpemVfdCBuX3NwYWRkaW5nOworICAgIFB5X3NzaXplX3Qgbl9ycGFkZGluZzsKKyAgICBjaGFyIHNpZ247CisgICAgUHlfc3NpemVfdCBuX3NpZ247ICAgICAgLyogbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgZm9yIHNpZ24gKDAvMSkgKi8KKyAgICBQeV9zc2l6ZV90IG5fZ3JvdXBlZF9kaWdpdHM7IC8qIFNwYWNlIHRha2VuIHVwIGJ5IHRoZSBkaWdpdHMsIGluY2x1ZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGdyb3VwaW5nIGNoYXJzLiAqLworICAgIFB5X3NzaXplX3Qgbl9kZWNpbWFsOyAgIC8qIDAgaWYgb25seSBhbiBpbnRlZ2VyICovCisgICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsgLyogRGlnaXRzIGluIGRlY2ltYWwgYW5kL29yIGV4cG9uZW50IHBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkaW5nIHRoZSBkZWNpbWFsIGl0c2VsZiwgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50LiAqLworCisgICAgLyogVGhlc2UgMiBhcmUgbm90IHRoZSB3aWR0aHMgb2YgZmllbGRzLCBidXQgYXJlIG5lZWRlZCBieQorICAgICAgIFNUUklOR0xJQl9HUk9VUElORy4gKi8KKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAvKiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBiZWZvcmUgYSBkZWNpbWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZXhwb25lbnQuICovCisgICAgUHlfc3NpemVfdCBuX21pbl93aWR0aDsgLyogVGhlIG1pbl93aWR0aCB3ZSB1c2VkIHdoZW4gd2UgY29tcHV0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbl9ncm91cGVkX2RpZ2l0cyB3aWR0aC4gKi8KK30gTnVtYmVyRmllbGRXaWR0aHM7CisKKworLyogR2l2ZW4gYSBudW1iZXIgb2YgdGhlIGZvcm06CisgICBkaWdpdHNbcmVtYWluZGVyXQorICAgd2hlcmUgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgdG8gdGhlIGVuZCwgZmluZCB3aGVyZQorICAgIHRoZSBpbnRlZ2VyIHBhcnQgZW5kcy4gVGhpcyBjb3VsZCBiZSBhIGRlY2ltYWwsIGFuIGV4cG9uZW50LCBib3RoLAorICAgIG9yIG5laXRoZXIuCisgICBJZiBhIGRlY2ltYWwgcG9pbnQgaXMgcHJlc2VudCwgc2V0ICpoYXNfZGVjaW1hbCBhbmQgaW5jcmVtZW50CisgICAgcmVtYWluZGVyIGJleW9uZCBpdC4KKyAgIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCAoYnV0IHNob3VsZG4ndCBjcmFzaCkgZm9yIGltcHJvcGVybHkKKyAgICBmb3JtYXR0ZWQgc3RyaW5ncy4KKyovCitzdGF0aWMgdm9pZAorcGFyc2VfbnVtYmVyKFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9yZW1haW5kZXIsIGludCAqaGFzX2RlY2ltYWwpCit7CisgICAgUHlfc3NpemVfdCByZW1haW5kZXI7CisKKyAgICB3aGlsZSAocG9zPGVuZCAmJiBpc2RpZ2l0KFB5VW5pY29kZV9SRUFEX0NIQVIocywgcG9zKSkpCisgICAgICAgICsrcG9zOworICAgIHJlbWFpbmRlciA9IHBvczsKKworICAgIC8qIERvZXMgcmVtYWluZGVyIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50PyAqLworICAgICpoYXNfZGVjaW1hbCA9IHBvczxlbmQgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihzLCByZW1haW5kZXIpID09ICcuJzsKKworICAgIC8qIFNraXAgdGhlIGRlY2ltYWwgcG9pbnQuICovCisgICAgaWYgKCpoYXNfZGVjaW1hbCkKKyAgICAgICAgcmVtYWluZGVyKys7CisKKyAgICAqbl9yZW1haW5kZXIgPSBlbmQgLSByZW1haW5kZXI7Cit9CisKKy8qIG5vdCBhbGwgZmllbGRzIG9mIGZvcm1hdCBhcmUgdXNlZC4gIGZvciBleGFtcGxlLCBwcmVjaXNpb24gaXMKKyAgIHVudXNlZC4gIHNob3VsZCB0aGlzIHRha2UgZGlzY3JldGUgcGFyYW1zIGluIG9yZGVyIHRvIGJlIG1vcmUgY2xlYXIKKyAgIGFib3V0IHdoYXQgaXQgZG9lcz8gIG9yIGlzIHBhc3NpbmcgYSBzaW5nbGUgZm9ybWF0IHBhcmFtZXRlciBlYXNpZXIKKyAgIGFuZCBtb3JlIGVmZmljaWVudCBlbm91Z2ggdG8ganVzdGlmeSBhIGxpdHRsZSBvYmZ1c2NhdGlvbj8gKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitjYWxjX251bWJlcl93aWR0aHMoTnVtYmVyRmllbGRXaWR0aHMgKnNwZWMsIFB5X3NzaXplX3Qgbl9wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBzaWduX2NoYXIsIFB5T2JqZWN0ICpudW1iZXIsIFB5X3NzaXplX3Qgbl9zdGFydCwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZW5kLCBQeV9zc2l6ZV90IG5fcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgIGludCBoYXNfZGVjaW1hbCwgY29uc3QgTG9jYWxlSW5mbyAqbG9jYWxlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIFB5X3NzaXplX3Qgbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7CisgICAgUHlfc3NpemVfdCBuX3BhZGRpbmc7CisKKyAgICBzcGVjLT5uX2RpZ2l0cyA9IG5fZW5kIC0gbl9zdGFydCAtIG5fcmVtYWluZGVyIC0gKGhhc19kZWNpbWFsPzE6MCk7CisgICAgc3BlYy0+bl9scGFkZGluZyA9IDA7CisgICAgc3BlYy0+bl9wcmVmaXggPSBuX3ByZWZpeDsKKyAgICBzcGVjLT5uX2RlY2ltYWwgPSBoYXNfZGVjaW1hbCA/IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxvY2FsZS0+ZGVjaW1hbF9wb2ludCkgOiAwOworICAgIHNwZWMtPm5fcmVtYWluZGVyID0gbl9yZW1haW5kZXI7CisgICAgc3BlYy0+bl9zcGFkZGluZyA9IDA7CisgICAgc3BlYy0+bl9ycGFkZGluZyA9IDA7CisgICAgc3BlYy0+c2lnbiA9ICdcMCc7CisgICAgc3BlYy0+bl9zaWduID0gMDsKKworICAgIC8qIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2U6CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgIHwgPGxwYWRkaW5nPiA8c2lnbj4gPHByZWZpeD4gPHNwYWRkaW5nPiA8Z3JvdXBlZF9kaWdpdHM+IDxkZWNpbWFsPiA8cmVtYWluZGVyPiA8cnBhZGRpbmc+IHwKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisKKyAgICAgICBzaWduIGlzIGNvbXB1dGVkIGZyb20gZm9ybWF0LT5zaWduIGFuZCB0aGUgYWN0dWFsCisgICAgICAgc2lnbiBvZiB0aGUgbnVtYmVyCisKKyAgICAgICBwcmVmaXggaXMgZ2l2ZW4gKGl0J3MgZm9yIHRoZSAnMHgnIHByZWZpeCkKKworICAgICAgIGRpZ2l0cyBpcyBhbHJlYWR5IGtub3duCisKKyAgICAgICB0aGUgdG90YWwgd2lkdGggaXMgZWl0aGVyIGdpdmVuLCBvciBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgIGFjdHVhbCBkaWdpdHMKKworICAgICAgIG9ubHkgb25lIG9mIGxwYWRkaW5nLCBzcGFkZGluZywgYW5kIHJwYWRkaW5nIGNhbiBiZSBub24temVybywKKyAgICAgICBhbmQgaXQncyBjYWxjdWxhdGVkIGZyb20gdGhlIHdpZHRoIGFuZCBvdGhlciBmaWVsZHMKKyAgICAqLworCisgICAgLyogY29tcHV0ZSB0aGUgdmFyaW91cyBwYXJ0cyB3ZSdyZSBnb2luZyB0byB3cml0ZSAqLworICAgIHN3aXRjaCAoZm9ybWF0LT5zaWduKSB7CisgICAgY2FzZSAnKyc6CisgICAgICAgIC8qIGFsd2F5cyBwdXQgYSArIG9yIC0gKi8KKyAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKKyAgICAgICAgc3BlYy0+c2lnbiA9IChzaWduX2NoYXIgPT0gJy0nID8gJy0nIDogJysnKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnICc6CisgICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7CisgICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcgJyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIE5vdCBzcGVjaWZpZWQsIG9yIHRoZSBkZWZhdWx0ICgtKSAqLworICAgICAgICBpZiAoc2lnbl9jaGFyID09ICctJykgeworICAgICAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKKyAgICAgICAgICAgIHNwZWMtPnNpZ24gPSAnLSc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBUaGUgbnVtYmVyIG9mIGNoYXJzIHVzZWQgZm9yIG5vbi1kaWdpdHMgYW5kIG5vbi1wYWRkaW5nLiAqLworICAgIG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nID0gc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKyBzcGVjLT5uX2RlY2ltYWwgKworICAgICAgICBzcGVjLT5uX3JlbWFpbmRlcjsKKworICAgIC8qIG1pbl93aWR0aCBjYW4gZ28gbmVnYXRpdmUsIHRoYXQncyBva2F5LiBmb3JtYXQtPndpZHRoID09IC0xIG1lYW5zCisgICAgICAgd2UgZG9uJ3QgY2FyZS4gKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnICYmIGZvcm1hdC0+YWxpZ24gPT0gJz0nKQorICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IGZvcm1hdC0+d2lkdGggLSBuX25vbl9kaWdpdF9ub25fcGFkZGluZzsKKyAgICBlbHNlCisgICAgICAgIHNwZWMtPm5fbWluX3dpZHRoID0gMDsKKworICAgIGlmIChzcGVjLT5uX2RpZ2l0cyA9PSAwKQorICAgICAgICAvKiBUaGlzIGNhc2Ugb25seSBvY2N1cnMgd2hlbiB1c2luZyAnYycgZm9ybWF0dGluZywgd2UgbmVlZAorICAgICAgICAgICB0byBzcGVjaWFsIGNhc2UgaXQgYmVjYXVzZSB0aGUgZ3JvdXBpbmcgY29kZSBhbHdheXMgd2FudHMKKyAgICAgICAgICAgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLiAqLworICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCBncm91cGluZ19tYXhjaGFyOworICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZygKKyAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAwLCBOVUxMLAorICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsIHNwZWMtPm5fbWluX3dpZHRoLAorICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywgbG9jYWxlLT50aG91c2FuZHNfc2VwLCAmZ3JvdXBpbmdfbWF4Y2hhcik7CisgICAgICAgICptYXhjaGFyID0gUHlfTUFYKCptYXhjaGFyLCBncm91cGluZ19tYXhjaGFyKTsKKyAgICB9CisKKyAgICAvKiBHaXZlbiB0aGUgZGVzaXJlZCB3aWR0aCBhbmQgdGhlIHRvdGFsIG9mIGRpZ2l0IGFuZCBub24tZGlnaXQKKyAgICAgICBzcGFjZSB3ZSBjb25zdW1lLCBzZWUgaWYgd2UgbmVlZCBhbnkgcGFkZGluZy4gZm9ybWF0LT53aWR0aCBjYW4KKyAgICAgICBiZSBuZWdhdGl2ZSAobWVhbmluZyBubyBwYWRkaW5nKSwgYnV0IHRoaXMgY29kZSBzdGlsbCB3b3JrcyBpbgorICAgICAgIHRoYXQgY2FzZS4gKi8KKyAgICBuX3BhZGRpbmcgPSBmb3JtYXQtPndpZHRoIC0KKyAgICAgICAgICAgICAgICAgICAgICAgIChuX25vbl9kaWdpdF9ub25fcGFkZGluZyArIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOworICAgIGlmIChuX3BhZGRpbmcgPiAwKSB7CisgICAgICAgIC8qIFNvbWUgcGFkZGluZyBpcyBuZWVkZWQuIERldGVybWluZSBpZiBpdCdzIGxlZnQsIHNwYWNlLCBvciByaWdodC4gKi8KKyAgICAgICAgc3dpdGNoIChmb3JtYXQtPmFsaWduKSB7CisgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdeJzoKKyAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmcgLyAyOworICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZyAtIHNwZWMtPm5fbHBhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPSc6CisgICAgICAgICAgICBzcGVjLT5uX3NwYWRkaW5nID0gbl9wYWRkaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJz4nOgorICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogU2hvdWxkbid0IGdldCBoZXJlLCBidXQgdHJlYXQgaXQgYXMgJz4nICovCisgICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nOworICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BlYy0+bl9scGFkZGluZyB8fCBzcGVjLT5uX3NwYWRkaW5nIHx8IHNwZWMtPm5fcnBhZGRpbmcpCisgICAgICAgICptYXhjaGFyID0gUHlfTUFYKCptYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICBpZiAoc3BlYy0+bl9kZWNpbWFsKQorICAgICAgICAqbWF4Y2hhciA9IFB5X01BWCgqbWF4Y2hhciwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGxvY2FsZS0+ZGVjaW1hbF9wb2ludCkpOworCisgICAgcmV0dXJuIHNwZWMtPm5fbHBhZGRpbmcgKyBzcGVjLT5uX3NpZ24gKyBzcGVjLT5uX3ByZWZpeCArCisgICAgICAgIHNwZWMtPm5fc3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzICsgc3BlYy0+bl9kZWNpbWFsICsKKyAgICAgICAgc3BlYy0+bl9yZW1haW5kZXIgKyBzcGVjLT5uX3JwYWRkaW5nOworfQorCisvKiBGaWxsIGluIHRoZSBkaWdpdCBwYXJ0cyBvZiBhIG51bWJlcnMncyBzdHJpbmcgcmVwcmVzZW50YXRpb24sCisgICBhcyBkZXRlcm1pbmVkIGluIGNhbGNfbnVtYmVyX3dpZHRocygpLgorICAgUmV0dXJuIC0xIG9uIGVycm9yLCBvciAwIG9uIHN1Y2Nlc3MuICovCitzdGF0aWMgaW50CitmaWxsX251bWJlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIGNvbnN0IE51bWJlckZpZWxkV2lkdGhzICpzcGVjLAorICAgICAgICAgICAgUHlPYmplY3QgKmRpZ2l0cywgUHlfc3NpemVfdCBkX3N0YXJ0LCBQeV9zc2l6ZV90IGRfZW5kLAorICAgICAgICAgICAgUHlPYmplY3QgKnByZWZpeCwgUHlfc3NpemVfdCBwX3N0YXJ0LAorICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIsCisgICAgICAgICAgICBMb2NhbGVJbmZvICpsb2NhbGUsIGludCB0b3VwcGVyKQoreworICAgIC8qIFVzZWQgdG8ga2VlcCB0cmFjayBvZiBkaWdpdHMsIGRlY2ltYWwsIGFuZCByZW1haW5kZXIuICovCisgICAgUHlfc3NpemVfdCBkX3BvcyA9IGRfc3RhcnQ7CisgICAgY29uc3QgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gd3JpdGVyLT5raW5kOworICAgIGNvbnN0IHZvaWQgKmRhdGEgPSB3cml0ZXItPmRhdGE7CisgICAgUHlfc3NpemVfdCByOworCisgICAgaWYgKHNwZWMtPm5fbHBhZGRpbmcpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcywgc3BlYy0+bl9scGFkZGluZywgZmlsbF9jaGFyKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9scGFkZGluZzsKKyAgICB9CisgICAgaWYgKHNwZWMtPm5fc2lnbiA9PSAxKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXItPnBvcywgc3BlYy0+c2lnbik7CisgICAgICAgIHdyaXRlci0+cG9zKys7CisgICAgfQorICAgIGlmIChzcGVjLT5uX3ByZWZpeCkgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+bl9wcmVmaXgpOworICAgICAgICBpZiAodG91cHBlcikgeworICAgICAgICAgICAgUHlfc3NpemVfdCB0OworICAgICAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fcHJlZml4OyB0KyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQpOworICAgICAgICAgICAgICAgIGMgPSBQeV9UT1VQUEVSKGMpOworICAgICAgICAgICAgICAgIGFzc2VydCAoYyA8PSAxMjcpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQsIGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fcHJlZml4OworICAgIH0KKyAgICBpZiAoc3BlYy0+bl9zcGFkZGluZykgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+cG9zLCBzcGVjLT5uX3NwYWRkaW5nLCBmaWxsX2NoYXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3NwYWRkaW5nOworICAgIH0KKworICAgIC8qIE9ubHkgZm9yIHR5cGUgJ2MnIHNwZWNpYWwgY2FzZSwgaXQgaGFzIG5vIGRpZ2l0cy4gKi8KKyAgICBpZiAoc3BlYy0+bl9kaWdpdHMgIT0gMCkgeworICAgICAgICAvKiBGaWxsIHRoZSBkaWdpdHMgd2l0aCBJbnNlcnRUaG91c2FuZHNHcm91cGluZy4gKi8KKyAgICAgICAgY2hhciAqcGRpZ2l0czsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShkaWdpdHMpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBwZGlnaXRzID0gUHlVbmljb2RlX0RBVEEoZGlnaXRzKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKGRpZ2l0cykgPCBraW5kKSB7CisgICAgICAgICAgICBwZGlnaXRzID0gX1B5VW5pY29kZV9Bc0tpbmQoZGlnaXRzLCBraW5kKTsKKyAgICAgICAgICAgIGlmIChwZGlnaXRzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHIgPSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzLAorICAgICAgICAgICAgICAgIHBkaWdpdHMgKyBraW5kICogZF9wb3MsCisgICAgICAgICAgICAgICAgc3BlYy0+bl9kaWdpdHMsIHNwZWMtPm5fbWluX3dpZHRoLAorICAgICAgICAgICAgICAgIGxvY2FsZS0+Z3JvdXBpbmcsIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCwgTlVMTCk7CisgICAgICAgIGlmIChyID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBhc3NlcnQociA9PSBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzKTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKGRpZ2l0cykgPCBraW5kKQorICAgICAgICAgICAgUHlNZW1fRnJlZShwZGlnaXRzKTsKKyAgICAgICAgZF9wb3MgKz0gc3BlYy0+bl9kaWdpdHM7CisgICAgfQorICAgIGlmICh0b3VwcGVyKSB7CisgICAgICAgIFB5X3NzaXplX3QgdDsKKyAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7IHQrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgd3JpdGVyLT5wb3MgKyB0KTsKKyAgICAgICAgICAgIGMgPSBQeV9UT1VQUEVSKGMpOworICAgICAgICAgICAgaWYgKGMgPiAxMjcpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJub24tYXNjaWkgZ3JvdXBlZCBkaWdpdCIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQsIGMpOworICAgICAgICB9CisgICAgfQorICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7CisKKyAgICBpZiAoc3BlYy0+bl9kZWNpbWFsKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKAorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgbG9jYWxlLT5kZWNpbWFsX3BvaW50LCAwLCBzcGVjLT5uX2RlY2ltYWwpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX2RlY2ltYWw7CisgICAgICAgIGRfcG9zICs9IDE7CisgICAgfQorCisgICAgaWYgKHNwZWMtPm5fcmVtYWluZGVyKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKAorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgZGlnaXRzLCBkX3Bvcywgc3BlYy0+bl9yZW1haW5kZXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3JlbWFpbmRlcjsKKyAgICAgICAgLyogZF9wb3MgKz0gc3BlYy0+bl9yZW1haW5kZXI7ICovCisgICAgfQorCisgICAgaWYgKHNwZWMtPm5fcnBhZGRpbmcpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnBvcywgc3BlYy0+bl9ycGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsX2NoYXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX3JwYWRkaW5nOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9OworCisvKiBGaW5kIHRoZSBkZWNpbWFsIHBvaW50IGNoYXJhY3RlcihzPyksIHRob3VzYW5kc19zZXBhcmF0b3Iocz8pLCBhbmQKKyAgIGdyb3VwaW5nIGRlc2NyaXB0aW9uLCBlaXRoZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSBpZiB0eXBlIGlzCisgICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSwgb3IKKyAgIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLworc3RhdGljIGludAorZ2V0X2xvY2FsZV9pbmZvKGludCB0eXBlLCBMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIExUX0NVUlJFTlRfTE9DQUxFOiB7CisgICAgICAgIHN0cnVjdCBsY29udiAqbG9jYWxlX2RhdGEgPSBsb2NhbGVjb252KCk7CisgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2RhdGEtPmRlY2ltYWxfcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBpZiAobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVfZGF0YS0+dGhvdXNhbmRzX3NlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGlmIChsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IGxvY2FsZV9kYXRhLT5ncm91cGluZzsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTFRfREVGQVVMVF9MT0NBTEU6CisgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcsJyk7CisgICAgICAgIGlmICghbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgfHwgIWxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGljaXQpIHRyYWlsaW5nIDAgbWVhbnMgcmVwZWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmluaXRlbHkuICovCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTFRfTk9fTE9DQUxFOgorICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CisgICAgICAgIGlmICghbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgfHwgIWxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9IG5vX2dyb3VwaW5nOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorZnJlZV9sb2NhbGVfaW5mbyhMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKK3sKKyAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50KTsKKyAgICBQeV9YREVDUkVGKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBzdHJpbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtYXRfc3RyaW5nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeV9zc2l6ZV90IGxwYWQ7CisgICAgUHlfc3NpemVfdCBycGFkOworICAgIFB5X3NzaXplX3QgdG90YWw7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodmFsdWUpKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2YWx1ZSk7CisKKyAgICAvKiBzaWduIGlzIG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KKyAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiU2lnbiBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogYWx0ZXJuYXRlIGlzIG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KKyAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQWx0ZXJuYXRlIGZvcm0gKCMpIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCisgICAgaWYgKGZvcm1hdC0+YWxpZ24gPT0gJz0nKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIic9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgImluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBpZiAoZm9ybWF0LT53aWR0aCA9PSAtMSAmJiBmb3JtYXQtPnByZWNpc2lvbiA9PSAtMSkgeworICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyogaWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgb3V0cHV0IG5vIG1vcmUgdGhhdCBmb3JtYXQucHJlY2lzaW9uCisgICAgICAgY2hhcmFjdGVycyAqLworICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiA+PSAwICYmIGxlbiA+PSBmb3JtYXQtPnByZWNpc2lvbikgeworICAgICAgICBsZW4gPSBmb3JtYXQtPnByZWNpc2lvbjsKKyAgICB9CisKKyAgICBjYWxjX3BhZGRpbmcobGVuLCBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7CisKKyAgICBtYXhjaGFyID0gX1B5VW5pY29kZV9GaW5kTWF4Q2hhcih2YWx1ZSwgMCwgbGVuKTsKKyAgICBpZiAobHBhZCAhPSAwIHx8IHJwYWQgIT0gMCkKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICAvKiBhbGxvY2F0ZSB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB0b3RhbCwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFdyaXRlIGludG8gdGhhdCBzcGFjZS4gRmlyc3QgdGhlIHBhZGRpbmcuICovCisgICAgcmVzdWx0ID0gZmlsbF9wYWRkaW5nKHdyaXRlciwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhcj09J1wwJz8nICc6Zm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFRoZW4gdGhlIHNvdXJjZSBzdHJpbmcuICovCisgICAgaWYgKGxlbikgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCAwLCBsZW4pOworICAgIH0KKyAgICB3cml0ZXItPnBvcyArPSAobGVuICsgcnBhZCk7CisgICAgcmVzdWx0ID0gMDsKKworZG9uZToKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogbG9uZyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludAorZm9ybWF0X2xvbmdfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLCBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OworICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaW51bWVyaWNfY2hhcnM7CisgICAgUHlfVUNTNCBzaWduX2NoYXIgPSAnXDAnOworICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7ICAgICAgIC8qIGNvdW50IG9mIGRpZ2l0cyBuZWVkIGZyb20gdGhlIGNvbXB1dGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlciA9IDA7IC8qIFVzZWQgb25seSBmb3IgJ2MnIGZvcm1hdHRpbmcsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIG5vbi1kaWdpdHMgKi8KKyAgICBQeV9zc2l6ZV90IG5fcHJlZml4ID0gMDsgICAvKiBDb3VudCBvZiBwcmVmaXggY2hhcnMsIChlLmcuLCAnMHgnKSAqLworICAgIFB5X3NzaXplX3Qgbl90b3RhbDsKKyAgICBQeV9zc2l6ZV90IHByZWZpeCA9IDA7CisgICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKKyAgICBsb25nIHg7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIC8qIG5vIHByZWNpc2lvbiBhbGxvd2VkIG9uIGludGVnZXJzICovCisgICAgaWYgKGZvcm1hdC0+cHJlY2lzaW9uICE9IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZWNpc2lvbiBub3QgYWxsb3dlZCBpbiBpbnRlZ2VyIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgY2hhcmFjdGVyIGZvcm1hdHRpbmcgKi8KKyAgICBpZiAoZm9ybWF0LT50eXBlID09ICdjJykgeworICAgICAgICAvKiBlcnJvciB0byBzcGVjaWZ5IGEgc2lnbiAqLworICAgICAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIHdpdGggaW50ZWdlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCBzcGVjaWZpZXIgJ2MnIik7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKworICAgICAgICAvKiB0YWtlbiBmcm9tIHVuaWNvZGVvYmplY3QuYyBmb3JtYXRjaGFyKCkgKi8KKyAgICAgICAgLyogSW50ZWdlciBpbnB1dCB0cnVuY2F0ZWQgdG8gYSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcodmFsdWUpOworICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4MTBmZmZmKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoeCk7CisgICAgICAgIGludW1lcmljX2NoYXJzID0gMDsKKyAgICAgICAgbl9kaWdpdHMgPSAxOworICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIChQeV9VQ1M0KXgpOworCisgICAgICAgIC8qIEFzIGEgc29ydC1vZiBoYWNrLCB3ZSB0ZWxsIGNhbGNfbnVtYmVyX3dpZHRocyB0aGF0IHdlIG9ubHkKKyAgICAgICAgICAgaGF2ZSAicmVtYWluZGVyIiBjaGFyYWN0ZXJzLiBjYWxjX251bWJlcl93aWR0aHMgdGhpbmtzCisgICAgICAgICAgIHRoZXNlIGFyZSBjaGFyYWN0ZXJzIHRoYXQgZG9uJ3QgZ2V0IGZvcm1hdHRlZCwgb25seSBjb3BpZWQKKyAgICAgICAgICAgaW50byB0aGUgb3V0cHV0IHN0cmluZy4gV2UgZG8gdGhpcyBmb3IgJ2MnIGZvcm1hdHRpbmcsCisgICAgICAgICAgIGJlY2F1c2UgdGhlIGNoYXJhY3RlcnMgYXJlIGxpa2VseSB0byBiZSBub24tZGlnaXRzLiAqLworICAgICAgICBuX3JlbWFpbmRlciA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgYmFzZTsKKyAgICAgICAgaW50IGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDA7ICAvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyBhZGRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TnVtYmVyX1RvQmFzZSB0aGF0IHdlIHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwIG92ZXIuICovCisKKyAgICAgICAgLyogQ29tcHV0ZSB0aGUgYmFzZSBhbmQgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIGFkZGVkIGJ5CisgICAgICAgICAgIFB5TnVtYmVyX1RvQmFzZSAqLworICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgeworICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgICAgIGJhc2UgPSAyOworICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMGIgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMG8gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAweCAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6ICAvKiBzaG91bGRuJ3QgYmUgbmVlZGVkLCBidXQgc3RvcHMgYSBjb21waWxlciB3YXJuaW5nICovCisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICBjYXNlICduJzoKKyAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnKycgJiYgZm9ybWF0LT5zaWduICE9ICcgJworICAgICAgICAgICAgJiYgZm9ybWF0LT53aWR0aCA9PSAtMQorICAgICAgICAgICAgJiYgZm9ybWF0LT50eXBlICE9ICdYJyAmJiBmb3JtYXQtPnR5cGUgIT0gJ24nCisgICAgICAgICAgICAmJiAhZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycworICAgICAgICAgICAgJiYgUHlMb25nX0NoZWNrRXhhY3QodmFsdWUpKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdFdyaXRlcih3cml0ZXIsIHZhbHVlLCBiYXNlLCBmb3JtYXQtPmFsdGVybmF0ZSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHByZWZpeCBjaGFycyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVhZGluZworICAgICAgICAgICBjaGFycyB0byBza2lwICovCisgICAgICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKKyAgICAgICAgICAgIG5fcHJlZml4ID0gbGVhZGluZ19jaGFyc190b19za2lwOworCisgICAgICAgIC8qIERvIHRoZSBoYXJkIHBhcnQsIGNvbnZlcnRpbmcgdG8gYSBzdHJpbmcgaW4gYSBnaXZlbiBiYXNlICovCisgICAgICAgIHRtcCA9IF9QeUxvbmdfRm9ybWF0KHZhbHVlLCBiYXNlKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWSh0bXApID09IC0xKQorICAgICAgICAgICAgZ290byBkb25lOworCisgICAgICAgIGludW1lcmljX2NoYXJzID0gMDsKKyAgICAgICAgbl9kaWdpdHMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0bXApOworCisgICAgICAgIHByZWZpeCA9IGludW1lcmljX2NoYXJzOworCisgICAgICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0CisgICAgICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKHRtcCwgaW51bWVyaWNfY2hhcnMpID09ICctJykgeworICAgICAgICAgICAgc2lnbl9jaGFyID0gJy0nOworICAgICAgICAgICAgKytwcmVmaXg7CisgICAgICAgICAgICArK2xlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNraXAgb3ZlciB0aGUgbGVhZGluZyBjaGFycyAoMHgsIDBiLCBldGMuKSAqLworICAgICAgICBuX2RpZ2l0cyAtPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisgICAgICAgIGludW1lcmljX2NoYXJzICs9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCisgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPworICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KKyAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCBuX3ByZWZpeCwgc2lnbl9jaGFyLCB0bXAsIGludW1lcmljX2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW51bWVyaWNfY2hhcnMgKyBuX2RpZ2l0cywgbl9yZW1haW5kZXIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQsICZtYXhjaGFyKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIG5fdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLworICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJnNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLCBpbnVtZXJpY19jaGFycywgaW51bWVyaWNfY2hhcnMgKyBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsIHByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgZm9ybWF0LT50eXBlID09ICdYJyk7CisKK2RvbmU6CisgICAgUHlfWERFQ1JFRih0bXApOworICAgIGZyZWVfbG9jYWxlX2luZm8oJmxvY2FsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBmbG9hdCBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBtdWNoIG9mIHRoaXMgaXMgdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgKi8KK3N0YXRpYyBpbnQKK2Zvcm1hdF9mbG9hdF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsKKyAgICBQeV9zc2l6ZV90IG5fdG90YWw7CisgICAgaW50IGhhc19kZWNpbWFsOworICAgIGRvdWJsZSB2YWw7CisgICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKKyAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKKyAgICBQeV9VQ1M0IHR5cGUgPSBmb3JtYXQtPnR5cGU7CisgICAgaW50IGFkZF9wY3QgPSAwOworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgTnVtYmVyRmllbGRXaWR0aHMgc3BlYzsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7CisgICAgUHlfVUNTNCBzaWduX2NoYXIgPSAnXDAnOworICAgIGludCBmbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCisgICAgUHlPYmplY3QgKnVuaWNvZGVfdG1wID0gTlVMTDsKKworICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKKyAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KKyAgICBMb2NhbGVJbmZvIGxvY2FsZSA9IFNUQVRJQ19MT0NBTEVfSU5GT19JTklUOworCisgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQorICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FMVDsKKworICAgIGlmICh0eXBlID09ICdcMCcpIHsKKyAgICAgICAgLyogT21pdHRlZCB0eXBlIHNwZWNpZmllci4gIEJlaGF2ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHJlcHIoeCkKKyAgICAgICAgICAgYW5kIHN0cih4KSBpZiBubyBwcmVjaXNpb24gaXMgZ2l2ZW4sIGVsc2UgbGlrZSAnZycsIGJ1dCB3aXRoCisgICAgICAgICAgIGF0IGxlYXN0IG9uZSBkaWdpdCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4gKi8KKyAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BRERfRE9UXzA7CisgICAgICAgIHR5cGUgPSAncic7CisgICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSAnbicpCisgICAgICAgIC8qICduJyBpcyB0aGUgc2FtZSBhcyAnZycsIGV4Y2VwdCBmb3IgdGhlIGxvY2FsZSB1c2VkIHRvCisgICAgICAgICAgIGZvcm1hdCB0aGUgcmVzdWx0LiBXZSB0YWtlIGNhcmUgb2YgdGhhdCBsYXRlci4gKi8KKyAgICAgICAgdHlwZSA9ICdnJzsKKworICAgIHZhbCA9IFB5RmxvYXRfQXNEb3VibGUodmFsdWUpOworICAgIGlmICh2YWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAodHlwZSA9PSAnJScpIHsKKyAgICAgICAgdHlwZSA9ICdmJzsKKyAgICAgICAgdmFsICo9IDEwMDsKKyAgICAgICAgYWRkX3BjdCA9IDE7CisgICAgfQorCisgICAgaWYgKHByZWNpc2lvbiA8IDApCisgICAgICAgIHByZWNpc2lvbiA9IGRlZmF1bHRfcHJlY2lzaW9uOworICAgIGVsc2UgaWYgKHR5cGUgPT0gJ3InKQorICAgICAgICB0eXBlID0gJ2cnOworCisgICAgLyogQ2FzdCAidHlwZSIsIGJlY2F1c2UgaWYgd2UncmUgaW4gdW5pY29kZSB3ZSBuZWVkIHRvIHBhc3MgYQorICAgICAgIDgtYml0IGNoYXIuIFRoaXMgaXMgc2FmZSwgYmVjYXVzZSB3ZSd2ZSByZXN0cmljdGVkIHdoYXQgInR5cGUiCisgICAgICAgY2FuIGJlLiAqLworICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh2YWwsIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmbG9hdF90eXBlKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBuX2RpZ2l0cyA9IHN0cmxlbihidWYpOworCisgICAgaWYgKGFkZF9wY3QpIHsKKyAgICAgICAgLyogV2Uga25vdyB0aGF0IGJ1ZiBoYXMgYSB0cmFpbGluZyB6ZXJvIChzaW5jZSB3ZSBqdXN0IGNhbGxlZAorICAgICAgICAgICBzdHJsZW4oKSBvbiBpdCksIGFuZCB3ZSBkb24ndCB1c2UgdGhhdCBmYWN0IGFueSBtb3JlLiBTbyB3ZQorICAgICAgICAgICBjYW4ganVzdCB3cml0ZSBvdmVyIHRoZSB0cmFpbGluZyB6ZXJvLiAqLworICAgICAgICBidWZbbl9kaWdpdHNdID0gJyUnOworICAgICAgICBuX2RpZ2l0cyArPSAxOworICAgIH0KKworICAgIC8qIFNpbmNlIHRoZXJlIGlzIG5vIHVuaWNvZGUgdmVyc2lvbiBvZiBQeU9TX2RvdWJsZV90b19zdHJpbmcsCisgICAgICAganVzdCB1c2UgdGhlIDggYml0IHZlcnNpb24gYW5kIHRoZW4gY29udmVydCB0byB1bmljb2RlLiAqLworICAgIHVuaWNvZGVfdG1wID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBuX2RpZ2l0cyk7CisgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmICh1bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoZm9ybWF0LT5zaWduICE9ICcrJyAmJiBmb3JtYXQtPnNpZ24gIT0gJyAnCisgICAgICAgICYmIGZvcm1hdC0+d2lkdGggPT0gLTEKKyAgICAgICAgJiYgZm9ybWF0LT50eXBlICE9ICduJworICAgICAgICAmJiAhZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycykKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICByZXN1bHQgPSBfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgdW5pY29kZV90bXApOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZV90bXApOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0CisgICAgICAgYW5kIHNraXAgaXQgKi8KKyAgICBpbmRleCA9IDA7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIodW5pY29kZV90bXAsIGluZGV4KSA9PSAnLScpIHsKKyAgICAgICAgc2lnbl9jaGFyID0gJy0nOworICAgICAgICArK2luZGV4OworICAgICAgICAtLW5fZGlnaXRzOworICAgIH0KKworICAgIC8qIERldGVybWluZSBpZiB3ZSBoYXZlIGFueSAicmVtYWluZGVyIiAoYWZ0ZXIgdGhlIGRpZ2l0cywgbWlnaHQgaW5jbHVkZQorICAgICAgIGRlY2ltYWwgb3IgZXhwb25lbnQgb3IgYm90aCAob3IgbmVpdGhlcikpICovCisgICAgcGFyc2VfbnVtYmVyKHVuaWNvZGVfdG1wLCBpbmRleCwgaW5kZXggKyBuX2RpZ2l0cywgJm5fcmVtYWluZGVyLCAmaGFzX2RlY2ltYWwpOworCisgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLworICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBDYWxjdWxhdGUgaG93IG11Y2ggbWVtb3J5IHdlJ2xsIG5lZWQuICovCisgICAgbl90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmc3BlYywgMCwgc2lnbl9jaGFyLCB1bmljb2RlX3RtcCwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCArIG5fZGlnaXRzLCBuX3JlbWFpbmRlciwgaGFzX2RlY2ltYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQsICZtYXhjaGFyKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBtZW1vcnkuICovCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIG5fdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiAqLworICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJnNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV90bXAsIGluZGV4LCBpbmRleCArIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIDApOworCitkb25lOgorICAgIFB5X1hERUNSRUYodW5pY29kZV90bXApOworICAgIGZyZWVfbG9jYWxlX2luZm8oJmxvY2FsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBjb21wbGV4IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtYXRfY29tcGxleF9pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICBkb3VibGUgcmU7CisgICAgZG91YmxlIGltOworICAgIGNoYXIgKnJlX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworICAgIGNoYXIgKmltX2J1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLworCisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIHRtcF9mb3JtYXQgPSAqZm9ybWF0OworICAgIFB5X3NzaXplX3Qgbl9yZV9kaWdpdHM7CisgICAgUHlfc3NpemVfdCBuX2ltX2RpZ2l0czsKKyAgICBQeV9zc2l6ZV90IG5fcmVfcmVtYWluZGVyOworICAgIFB5X3NzaXplX3Qgbl9pbV9yZW1haW5kZXI7CisgICAgUHlfc3NpemVfdCBuX3JlX3RvdGFsOworICAgIFB5X3NzaXplX3Qgbl9pbV90b3RhbDsKKyAgICBpbnQgcmVfaGFzX2RlY2ltYWw7CisgICAgaW50IGltX2hhc19kZWNpbWFsOworICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uID0gZm9ybWF0LT5wcmVjaXNpb247CisgICAgUHlfc3NpemVfdCBkZWZhdWx0X3ByZWNpc2lvbiA9IDY7CisgICAgUHlfVUNTNCB0eXBlID0gZm9ybWF0LT50eXBlOworICAgIFB5X3NzaXplX3QgaV9yZTsKKyAgICBQeV9zc2l6ZV90IGlfaW07CisgICAgTnVtYmVyRmllbGRXaWR0aHMgcmVfc3BlYzsKKyAgICBOdW1iZXJGaWVsZFdpZHRocyBpbV9zcGVjOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIHJraW5kOworICAgIHZvaWQgKnJkYXRhOworICAgIFB5X1VDUzQgcmVfc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBQeV9VQ1M0IGltX3NpZ25fY2hhciA9ICdcMCc7CisgICAgaW50IHJlX2Zsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KKyAgICBpbnQgaW1fZmxvYXRfdHlwZTsKKyAgICBpbnQgYWRkX3BhcmVucyA9IDA7CisgICAgaW50IHNraXBfcmUgPSAwOworICAgIFB5X3NzaXplX3QgbHBhZDsKKyAgICBQeV9zc2l6ZV90IHJwYWQ7CisgICAgUHlfc3NpemVfdCB0b3RhbDsKKyAgICBQeU9iamVjdCAqcmVfdW5pY29kZV90bXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICppbV91bmljb2RlX3RtcCA9IE5VTEw7CisKKyAgICAvKiBMb2NhbGUgc2V0dGluZ3MsIGVpdGhlciBmcm9tIHRoZSBhY3R1YWwgbG9jYWxlIG9yCisgICAgICAgZnJvbSBhIGhhcmQtY29kZSBwc2V1ZG8tbG9jYWxlICovCisgICAgTG9jYWxlSW5mbyBsb2NhbGUgPSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVDsKKworICAgIC8qIFplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZC4gKi8KKyAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBOZWl0aGVyIGlzICc9JyBhbGlnbm1lbnQgLiAqLworICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IGZsYWcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgcmUgPSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAocmUgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaW0gPSBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlKHZhbHVlKTsKKyAgICBpZiAoaW0gPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCisgICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOworCisgICAgaWYgKHR5cGUgPT0gJ1wwJykgeworICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiBTaG91bGQgYmUgbGlrZSBzdHIoc2VsZikuICovCisgICAgICAgIHR5cGUgPSAncic7CisgICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKKyAgICAgICAgaWYgKHJlID09IDAuMCAmJiBjb3B5c2lnbigxLjAsIHJlKSA9PSAxLjApCisgICAgICAgICAgICBza2lwX3JlID0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYWRkX3BhcmVucyA9IDE7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJ24nKQorICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bworICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICBpZiAocHJlY2lzaW9uIDwgMCkKKyAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247CisgICAgZWxzZSBpZiAodHlwZSA9PSAncicpCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCisgICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKKyAgICAgICBjYW4gYmUuICovCisgICAgcmVfYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHJlLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVfZmxvYXRfdHlwZSk7CisgICAgaWYgKHJlX2J1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaW1fYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKGltLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1fZmxvYXRfdHlwZSk7CisgICAgaWYgKGltX2J1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBuX3JlX2RpZ2l0cyA9IHN0cmxlbihyZV9idWYpOworICAgIG5faW1fZGlnaXRzID0gc3RybGVuKGltX2J1Zik7CisKKyAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAorICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KKyAgICByZV91bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKHJlX2J1Ziwgbl9yZV9kaWdpdHMpOworICAgIGlmIChyZV91bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaV9yZSA9IDA7CisKKyAgICBpbV91bmljb2RlX3RtcCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKGltX2J1Ziwgbl9pbV9kaWdpdHMpOworICAgIGlmIChpbV91bmljb2RlX3RtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaV9pbSA9IDA7CisKKyAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAorICAgICAgIGFuZCBza2lwIGl0ICovCisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIocmVfdW5pY29kZV90bXAsIGlfcmUpID09ICctJykgeworICAgICAgICByZV9zaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraV9yZTsKKyAgICAgICAgLS1uX3JlX2RpZ2l0czsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIoaW1fdW5pY29kZV90bXAsIGlfaW0pID09ICctJykgeworICAgICAgICBpbV9zaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraV9pbTsKKyAgICAgICAgLS1uX2ltX2RpZ2l0czsKKyAgICB9CisKKyAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKKyAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLworICAgIHBhcnNlX251bWJlcihyZV91bmljb2RlX3RtcCwgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLAorICAgICAgICAgICAgICAgICAmbl9yZV9yZW1haW5kZXIsICZyZV9oYXNfZGVjaW1hbCk7CisgICAgcGFyc2VfbnVtYmVyKGltX3VuaWNvZGVfdG1wLCBpX2ltLCBpX2ltICsgbl9pbV9kaWdpdHMsCisgICAgICAgICAgICAgICAgICZuX2ltX3JlbWFpbmRlciwgJmltX2hhc19kZWNpbWFsKTsKKworICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KKyAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogVHVybiBvZmYgYW55IHBhZGRpbmcuIFdlJ2xsIGRvIGl0IGxhdGVyIGFmdGVyIHdlJ3ZlIGNvbXBvc2VkCisgICAgICAgdGhlIG51bWJlcnMgd2l0aG91dCBwYWRkaW5nLiAqLworICAgIHRtcF9mb3JtYXQuZmlsbF9jaGFyID0gJ1wwJzsKKyAgICB0bXBfZm9ybWF0LmFsaWduID0gJzwnOworICAgIHRtcF9mb3JtYXQud2lkdGggPSAtMTsKKworICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KKyAgICBuX3JlX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZyZV9zcGVjLCAwLCByZV9zaWduX2NoYXIsIHJlX3VuaWNvZGVfdG1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLCBuX3JlX3JlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyKTsKKworICAgIC8qIFNhbWUgZm9ybWF0dGluZywgYnV0IGFsd2F5cyBpbmNsdWRlIGEgc2lnbiwgdW5sZXNzIHRoZSByZWFsIHBhcnQgaXMKKyAgICAgKiBnb2luZyB0byBiZSBvbWl0dGVkLCBpbiB3aGljaCBjYXNlIHdlIHVzZSB3aGF0ZXZlciBzaWduIGNvbnZlbnRpb24gd2FzCisgICAgICogcmVxdWVzdGVkIGJ5IHRoZSBvcmlnaW5hbCBmb3JtYXQuICovCisgICAgaWYgKCFza2lwX3JlKQorICAgICAgICB0bXBfZm9ybWF0LnNpZ24gPSAnKyc7CisgICAgbl9pbV90b3RhbCA9IGNhbGNfbnVtYmVyX3dpZHRocygmaW1fc3BlYywgMCwgaW1fc2lnbl9jaGFyLCBpbV91bmljb2RlX3RtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlfaW0sIGlfaW0gKyBuX2ltX2RpZ2l0cywgbl9pbV9yZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbV9oYXNfZGVjaW1hbCwgJmxvY2FsZSwgJnRtcF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4Y2hhcik7CisKKyAgICBpZiAoc2tpcF9yZSkKKyAgICAgICAgbl9yZV90b3RhbCA9IDA7CisKKyAgICAvKiBBZGQgMSBmb3IgdGhlICdqJywgYW5kIG9wdGlvbmFsbHkgMiBmb3IgcGFyZW5zLiAqLworICAgIGNhbGNfcGFkZGluZyhuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKKyAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOworCisgICAgaWYgKGxwYWQgfHwgcnBhZCkKKyAgICAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBmb3JtYXQtPmZpbGxfY2hhcik7CisKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgdG90YWwsIG1heGNoYXIpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgcmtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgcmRhdGEgPSB3cml0ZXItPmRhdGE7CisKKyAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiBGaXJzdCwgdGhlIHBhZGRpbmcuICovCisgICAgcmVzdWx0ID0gZmlsbF9wYWRkaW5nKHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZV90b3RhbCArIG5faW1fdG90YWwgKyAxICsgYWRkX3BhcmVucyAqIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxwYWQsIHJwYWQpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGlmIChhZGRfcGFyZW5zKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnKCcpOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKworICAgIGlmICghc2tpcF9yZSkgeworICAgICAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZyZV9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZV91bmljb2RlX3RtcCwgaV9yZSwgaV9yZSArIG5fcmVfZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmaW1fc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbV91bmljb2RlX3RtcCwgaV9pbSwgaV9pbSArIG5faW1fZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCAwKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCByZGF0YSwgd3JpdGVyLT5wb3MsICdqJyk7CisgICAgd3JpdGVyLT5wb3MrKzsKKworICAgIGlmIChhZGRfcGFyZW5zKSB7CisgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgcmRhdGEsIHdyaXRlci0+cG9zLCAnKScpOworICAgICAgICB3cml0ZXItPnBvcysrOworICAgIH0KKworICAgIHdyaXRlci0+cG9zICs9IHJwYWQ7CisKK2RvbmU6CisgICAgUHlNZW1fRnJlZShyZV9idWYpOworICAgIFB5TWVtX0ZyZWUoaW1fYnVmKTsKKyAgICBQeV9YREVDUkVGKHJlX3VuaWNvZGVfdG1wKTsKKyAgICBQeV9YREVDUkVGKGltX3VuaWNvZGVfdG1wKTsKKyAgICBmcmVlX2xvY2FsZV9pbmZvKCZsb2NhbGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogYnVpbHQgaW4gZm9ybWF0dGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBpbnQKK2Zvcm1hdF9vYmooUHlPYmplY3QgKm9iaiwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKworICAgIHN0ciA9IFB5T2JqZWN0X1N0cihvYmopOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVyciA9IF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiBlcnI7Cit9CisKK2ludAorX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob2JqKSk7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKQorICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCBvYmopOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisgICAgfQorCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ3MnLCAnPCcpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ3MnOgorICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGEgc3RyaW5nLiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB3cml0ZXIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworaW50CitfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wID0gTlVMTCwgKnN0ciA9IE5VTEw7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKQorICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRm9ybWF0V3JpdGVyKHdyaXRlciwgb2JqLCAxMCwgMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKyAgICB9CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnZCcsICc+JykpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnYic6CisgICAgY2FzZSAnYyc6CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAnbyc6CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgY2FzZSAnbic6CisgICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYW4gaW50IChvciBsb25nKS4gIGRvCisgICAgICAgICAgIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9sb25nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICBjYXNlICclJzoKKyAgICAgICAgLyogY29udmVydCB0byBmbG9hdCAqLworICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChvYmopOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJlc3VsdCA9IGZvcm1hdF9mbG9hdF9pbnRlcm5hbCh0bXAsICZmb3JtYXQsIHdyaXRlcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogdW5rbm93biAqLworICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCitkb25lOgorICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50CitfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdcMCcsICc+JykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAnXDAnOiAvKiBObyBmb3JtYXQgY29kZTogbGlrZSAnZycsIGJ1dCB3aXRoIGF0IGxlYXN0IG9uZSBkZWNpbWFsLiAqLworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgIGNhc2UgJ24nOgorICAgIGNhc2UgJyUnOgorICAgICAgICAvKiBubyBjb252ZXJzaW9uLCBhbHJlYWR5IGEgZmxvYXQuICBkbyB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXR1cm4gZm9ybWF0X2Zsb2F0X2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworaW50CitfUHlDb21wbGV4X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgY2FzZSAnbic6CisgICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBjb21wbGV4LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmV0dXJuIGZvcm1hdF9jb21wbGV4X2ludGVybmFsKG9iaiwgJmZvcm1hdCwgd3JpdGVyKTsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIHVua25vd24gKi8KKyAgICAgICAgdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShmb3JtYXQudHlwZSwgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW4uYyBiL1B5dGhvbi9mcm96ZW4uYwppbmRleCBkZGY2MjI0Li4yNWZkYzE3IDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVuLmMKKysrIGIvUHl0aG9uL2Zyb3plbi5jCkBAIC0yLDYgKzIsNyBAQAogLyogRHVtbXkgZnJvemVuIG1vZHVsZXMgaW5pdGlhbGl6ZXIgKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgImltcG9ydGxpYi5oIgogCiAvKiBJbiBvcmRlciB0byB0ZXN0IHRoZSBzdXBwb3J0IGZvciBmcm96ZW4gbW9kdWxlcywgYnkgZGVmYXVsdCB3ZQogICAgZGVmaW5lIGEgc2luZ2xlIGZyb3plbiBtb2R1bGUsIF9faGVsbG9fXy4gIExvYWRpbmcgaXQgd2lsbCBwcmludApAQCAtMjgsNiArMjksOCBAQAogI2RlZmluZSBTSVpFIChpbnQpc2l6ZW9mKE1fX19oZWxsb19fKQogCiBzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKKyAgICAvKiBpbXBvcnRsaWIgKi8KKyAgICB7Il9mcm96ZW5faW1wb3J0bGliIiwgX1B5X01fX2ltcG9ydGxpYiwgKGludClzaXplb2YoX1B5X01fX2ltcG9ydGxpYil9LAogICAgIC8qIFRlc3QgbW9kdWxlICovCiAgICAgeyJfX2hlbGxvX18iLCBNX19faGVsbG9fXywgU0laRX0sCiAgICAgLyogVGVzdCBwYWNrYWdlIChuZWdhdGl2ZSBzaXplIGluZGljYXRlcyBwYWNrYWdlLW5lc3MpICovCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCBhNzdiYjA1Li4xOGM4ZTkxIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTMzLDE2ICszMywzMyBAQAogI2RlZmluZSBGTEFHX0NPTVBBVCAxCiAjZGVmaW5lIEZMQUdfU0laRV9UIDIKIAordHlwZWRlZiBpbnQgKCpkZXN0cl90KShQeU9iamVjdCAqLCB2b2lkICopOworCisKKy8qIEtlZXAgdHJhY2sgb2YgIm9iamVjdHMiIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBvciBpbml0aWFsaXplZCBhbmQKKyAgIHdoaWNoIHdpbGwgbmVlZCB0byBiZSBkZWFsbG9jYXRlZCBvciBjbGVhbmVkIHVwIHNvbWVob3cgaWYgb3ZlcmFsbAorICAgcGFyc2luZyBmYWlscy4KKyovCit0eXBlZGVmIHN0cnVjdCB7CisgIHZvaWQgKml0ZW07CisgIGRlc3RyX3QgZGVzdHJ1Y3RvcjsKK30gZnJlZWxpc3RlbnRyeV90OworCit0eXBlZGVmIHN0cnVjdCB7CisgIGludCBmaXJzdF9hdmFpbGFibGU7CisgIGZyZWVsaXN0ZW50cnlfdCAqZW50cmllczsKK30gZnJlZWxpc3RfdDsKKwogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHNldGVycm9yKGludCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOwogc3RhdGljIGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjaGFyICoqKTsKIHN0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjaGFyKiopOwogCkBAIC0xMjMsMTE1ICsxNDAsNTQgQEAKIAogLyogSGFuZGxlIGNsZWFudXAgb2YgYWxsb2NhdGVkIG1lbW9yeSBpbiBjYXNlIG9mIGV4Y2VwdGlvbiAqLwogCi0jZGVmaW5lIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfUFRSICJnZXRhcmdzLmNsZWFudXBfcHRyIgotI2RlZmluZSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0JVRkZFUiAiZ2V0YXJncy5jbGVhbnVwX2J1ZmZlciIKLSNkZWZpbmUgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJUICJnZXRhcmdzLmNsZWFudXBfY29udmVydCIKLQotc3RhdGljIHZvaWQKLWNsZWFudXBfcHRyKFB5T2JqZWN0ICpzZWxmKQorc3RhdGljIGludAorY2xlYW51cF9wdHIoUHlPYmplY3QgKnNlbGYsIHZvaWQgKnB0cikKIHsKLSAgICB2b2lkICpwdHIgPSBQeUNhcHN1bGVfR2V0UG9pbnRlcihzZWxmLCBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUik7CiAgICAgaWYgKHB0cikgewogICAgICAgICBQeU1lbV9GUkVFKHB0cik7CiAgICAgfQotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9idWZmZXIoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfYnVmZmVyICpwdHIgPSAoUHlfYnVmZmVyICopUHlDYXBzdWxlX0dldFBvaW50ZXIoc2VsZiwgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9CVUZGRVIpOwotICAgIGlmIChwdHIpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShwdHIpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotYWRkY2xlYW51cCh2b2lkICpwdHIsIFB5T2JqZWN0ICoqZnJlZWxpc3QsIGludCBpc19idWZmZXIpCi17Ci0gICAgUHlPYmplY3QgKmNvYmo7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBQeUNhcHN1bGVfRGVzdHJ1Y3RvciBkZXN0cjsKLQotICAgIGlmIChpc19idWZmZXIpIHsKLSAgICAgICAgZGVzdHIgPSBjbGVhbnVwX2J1ZmZlcjsKLSAgICAgICAgbmFtZSA9IEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQlVGRkVSOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRlc3RyID0gY2xlYW51cF9wdHI7Ci0gICAgICAgIG5hbWUgPSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX1BUUjsKLSAgICB9Ci0KLSAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAqZnJlZWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAgICAgZGVzdHIocHRyKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvYmogPSBQeUNhcHN1bGVfTmV3KHB0ciwgbmFtZSwgZGVzdHIpOwotICAgIGlmICghY29iaikgewotICAgICAgICBkZXN0cihwdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKCpmcmVlbGlzdCwgY29iaikpIHsKLSAgICAgICAgUHlfREVDUkVGKGNvYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2JqKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfY29udmVydChQeU9iamVjdCAqc2VsZikKLXsKLSAgICB0eXBlZGVmIGludCAoKmRlc3RyX3QpKFB5T2JqZWN0ICosIHZvaWQgKik7Ci0gICAgZGVzdHJfdCBkZXN0ciA9IChkZXN0cl90KVB5Q2Fwc3VsZV9HZXRDb250ZXh0KHNlbGYpOwotICAgIHZvaWQgKnB0ciA9IFB5Q2Fwc3VsZV9HZXRQb2ludGVyKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJUKTsKLSAgICBpZiAocHRyICYmIGRlc3RyKQotICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotfQotCi1zdGF0aWMgaW50Ci1hZGRjbGVhbnVwX2NvbnZlcnQodm9pZCAqcHRyLCBQeU9iamVjdCAqKmZyZWVsaXN0LCBpbnQgKCpkZXN0cikoUHlPYmplY3QqLHZvaWQqKSkKLXsKLSAgICBQeU9iamVjdCAqY29iajsKLSAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAqZnJlZWxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICBpZiAoISpmcmVlbGlzdCkgewotICAgICAgICAgICAgZGVzdHIoTlVMTCwgcHRyKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBjb2JqID0gUHlDYXBzdWxlX05ldyhwdHIsIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQ09OVkVSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2NvbnZlcnQpOwotICAgIGlmICghY29iaikgewotICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeUNhcHN1bGVfU2V0Q29udGV4dChjb2JqLCBkZXN0cikgPT0gLTEpIHsKLSAgICAgICAgLyogVGhpcyByZWFsbHkgc2hvdWxkIG5vdCBoYXBwZW4uICovCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhcHN1bGUgcmVmdXNlZCBzZXR0aW5nIG9mIGNvbnRleHQuIik7Ci0gICAgfQotICAgIGlmIChQeUxpc3RfQXBwZW5kKCpmcmVlbGlzdCwgY29iaikpIHsKLSAgICAgICAgUHlfREVDUkVGKGNvYmopOyAvKiBUaGlzIHdpbGwgYWxzbyBjYWxsIGRlc3RyLiAqLwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2JqKTsKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludAotY2xlYW5yZXR1cm4oaW50IHJldHZhbCwgUHlPYmplY3QgKmZyZWVsaXN0KQorY2xlYW51cF9idWZmZXIoUHlPYmplY3QgKnNlbGYsIHZvaWQgKnB0cikKIHsKLSAgICBpZiAoZnJlZWxpc3QgJiYgcmV0dmFsICE9IDApIHsKLSAgICAgICAgLyogV2Ugd2VyZSBzdWNjZXNzZnVsLCByZXNldCB0aGUgZGVzdHJ1Y3RvcnMgc28gdGhhdCB0aGV5Ci0gICAgICAgICAgIGRvbid0IGdldCBjYWxsZWQuICovCi0gICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlMaXN0X0dFVF9TSVpFKGZyZWVsaXN0KSwgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICAgICAgUHlDYXBzdWxlX1NldERlc3RydWN0b3IoUHlMaXN0X0dFVF9JVEVNKGZyZWVsaXN0LCBpKSwgTlVMTCk7CisgICAgUHlfYnVmZmVyICpidWYgPSAoUHlfYnVmZmVyICopcHRyOworICAgIGlmIChidWYpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGZyZWVsaXN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYWRkY2xlYW51cCh2b2lkICpwdHIsIGZyZWVsaXN0X3QgKmZyZWVsaXN0LCBkZXN0cl90IGRlc3RydWN0b3IpCit7CisgICAgaW50IGluZGV4OworCisgICAgaW5kZXggPSBmcmVlbGlzdC0+Zmlyc3RfYXZhaWxhYmxlOworICAgIGZyZWVsaXN0LT5maXJzdF9hdmFpbGFibGUgKz0gMTsKKworICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5pdGVtID0gcHRyOworICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5kZXN0cnVjdG9yID0gZGVzdHJ1Y3RvcjsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitjbGVhbnJldHVybihpbnQgcmV0dmFsLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKK3sKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAocmV0dmFsID09IDApIHsKKyAgICAgIC8qIEEgZmFpbHVyZSBvY2N1cnJlZCwgdGhlcmVmb3JlIGV4ZWN1dGUgYWxsIG9mIHRoZSBjbGVhbnVwCisgICAgICAgICBmdW5jdGlvbnMuCisgICAgICAqLworICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgZnJlZWxpc3QtPmZpcnN0X2F2YWlsYWJsZTsgKytpbmRleCkgeworICAgICAgICAgIGZyZWVsaXN0LT5lbnRyaWVzW2luZGV4XS5kZXN0cnVjdG9yKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZWxpc3QtPmVudHJpZXNbaW5kZXhdLml0ZW0pOworICAgICAgfQorICAgIH0KKyAgICBQeU1lbV9GUkVFKGZyZWVsaXN0LT5lbnRyaWVzKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yNTAsNyArMjA2LDcgQEAKICAgICBjb25zdCBjaGFyICpmb3JtYXRzYXZlID0gZm9ybWF0OwogICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIGNoYXIgKm1zZzsKLSAgICBQeU9iamVjdCAqZnJlZWxpc3QgPSBOVUxMOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3QgPSB7MCwgTlVMTH07CiAgICAgaW50IGNvbXBhdCA9IGZsYWdzICYgRkxBR19DT01QQVQ7CiAKICAgICBhc3NlcnQoY29tcGF0IHx8IChhcmdzICE9IChQeU9iamVjdCopTlVMTCkpOwpAQCAtMzA2LDY0ICsyNjIsNjYgQEAKIAogICAgIGZvcm1hdCA9IGZvcm1hdHNhdmU7CiAKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbWF4KTsKKyAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChjb21wYXQpIHsKICAgICAgICAgaWYgKG1heCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgbm8gYXJndW1lbnRzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZ2J1Zik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIG5vIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWluID09IDEgJiYgbWF4ID09IDEpIHsKICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGFyZ3MsICZmb3JtYXQsIHBfdmEsIGZsYWdzLCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgaWYgKG1zZyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICBzZXRlcnJvcihsZXZlbHNbMF0sIG1zZywgbGV2ZWxzKzEsIGZuYW1lLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAib2xkIHN0eWxlIGdldGFyZ3MgZm9ybWF0IHVzZXMgbmV3IGZlYXR1cmVzIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJuZXcgc3R5bGUgZ2V0YXJncyBmb3JtYXQgYnV0IGFyZ3VtZW50IGlzIG5vdCBhIHR1cGxlIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICBsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogCiAgICAgaWYgKGxlbiA8IG1pbiB8fCBtYXggPCBsZW4pIHsKLSAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlPU19zbnByaW50Zihtc2didWYsIHNpemVvZihtc2didWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4xNTBzJXMgdGFrZXMgJXMgJWQgYXJndW1lbnQlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoJWxkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gImZ1bmN0aW9uIiA6IGZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPT1tYXggPyAiZXhhY3RseSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsZW4gPCBtaW4gPyAiYXQgbGVhc3QiIDogImF0IG1vc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPCBtaW4gPyBtaW4gOiBtYXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gPCBtaW4gPyBtaW4gOiBtYXgpID09IDEgPyAiIiA6ICJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChsZW4sIFB5X3NzaXplX3QsIGxvbmcpKTsKLSAgICAgICAgICAgIG1lc3NhZ2UgPSBtc2didWY7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS4xNTBzJXMgdGFrZXMgJXMgJWQgYXJndW1lbnQlcyAoJWxkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWluPT1tYXggPyAiZXhhY3RseSIKKyAgICAgICAgICAgICAgICAgICAgICAgICA6IGxlbiA8IG1pbiA/ICJhdCBsZWFzdCIgOiAiYXQgbW9zdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIDwgbWluID8gbWluIDogbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgIChsZW4gPCBtaW4gPyBtaW4gOiBtYXgpID09IDEgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgbG9uZykpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CkBAIC0zNzQsNyArMzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CiAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBtc2cpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODMsMTAgKzM0MSwxMCBAQAogICAgICAgICAqZm9ybWF0ICE9ICd8JyAmJiAqZm9ybWF0ICE9ICc6JyAmJiAqZm9ybWF0ICE9ICc7JykgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIGZvcm1hdCBzdHJpbmc6ICUuMjAwcyIsIGZvcm1hdHNhdmUpOwotICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKLSAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogfQogCiAKQEAgLTQ1MCw3ICs0MDgsNyBAQAogc3RhdGljIGNoYXIgKgogY29udmVydHR1cGxlKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAogICAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBpbnQgdG9wbGV2ZWwsCi0gICAgICAgICAgICAgUHlPYmplY3QgKipmcmVlbGlzdCkKKyAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICBpbnQgbGV2ZWwgPSAwOwogICAgIGludCBuID0gMDsKQEAgLTUyNSw3ICs0ODMsNyBAQAogCiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0aXRlbShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKLSAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewogICAgIGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CkBAIC01NTAsOSArNTA4LDYgQEAKIAogCiAKLSNkZWZpbmUgVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZykgXAotICAgIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhhcmcsIE5VTEwpCi0KIC8qIEZvcm1hdCBhbiBlcnJvciBtZXNzYWdlIGdlbmVyYXRlZCBieSBjb252ZXJ0c2ltcGxlKCkuICovCiAKIHN0YXRpYyBjaGFyICoKQEAgLTU5Myw3ICs1NDgsNyBAQAogCiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAotICAgICAgICAgICAgICBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgICBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKICAgICAvKiBGb3IgIyBjb2RlcyAqLwogI2RlZmluZSBGRVRDSF9TSVpFICAgICAgaW50ICpxPU5VTEw7UHlfc3NpemVfdCAqcTI9TlVMTDtcCkBAIC02MTUsNyArNTcwLDcgQEAKIAogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKICAgICBjaGFyIGMgPSAqZm9ybWF0Kys7Ci0gICAgUHlPYmplY3QgKnVhcmc7CisgICAgY2hhciAqc2FyZzsKIAogICAgIHN3aXRjaCAoYykgewogCkBAIC04MzIsNiArNzg3LDggQEAKICAgICAgICAgY2hhciAqcCA9IHZhX2FyZygqcF92YSwgY2hhciAqKTsKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX1NpemUoYXJnKSA9PSAxKQogICAgICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKQorICAgICAgICAgICAgKnAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDEiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtODM5LDExICs3OTYsMzMgQEAKIAogICAgIGNhc2UgJ0MnOiB7LyogdW5pY29kZSBjaGFyICovCiAgICAgICAgIGludCAqcCA9IHZhX2FyZygqcF92YSwgaW50ICopOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykgJiYKLSAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShhcmcpID09IDEpCi0gICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZylbMF07Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIHVuaWNvZGUgY2hhcmFjdGVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSkKKyAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGFyZykgIT0gMSkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJhIHVuaWNvZGUgY2hhcmFjdGVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworCisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChhcmcpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoYXJnKTsKKyAgICAgICAgKnAgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSAncCc6IHsvKiBib29sZWFuICpwKnJlZGljYXRlICovCisgICAgICAgIGludCAqcCA9IHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICBpbnQgdmFsID0gUHlPYmplY3RfSXNUcnVlKGFyZyk7CisgICAgICAgIGlmICh2YWwgPiAwKQorICAgICAgICAgICAgKnAgPSAxOworICAgICAgICBlbHNlIGlmICh2YWwgPT0gMCkKKyAgICAgICAgICAgICpwID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC04NTgsNyArODM3LDcgQEAKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKLSAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCAxKSkgeworICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIGNsZWFudXBfYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC04OTEsMjAgKzg3MCwxOSBAQAogICAgICAgICAgICAgaWYgKGMgPT0gJ3onICYmIGFyZyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIE5VTEwsIE5VTEwsIDAsIDEsIDApOwogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodWFyZyksIFB5Qnl0ZXNfR0VUX1NJWkUodWFyZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMCk7CisgICAgICAgICAgICAgICAgUHlCdWZmZXJfRmlsbEluZm8ocCwgYXJnLCBzYXJnLCBsZW4sIDEsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIGFueSBidWZmZXItbGlrZSBvYmplY3QgKi8KICAgICAgICAgICAgICAgICBjaGFyICpidWY7CiAgICAgICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIHAsICZidWYpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgMSkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtOTIwLDEyICs4OTgsMTMgQEAKICAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICB1YXJnID0gVU5JQ09ERV9ERUZBVUxUX0VOQ09ESU5HKGFyZyk7Ci0gICAgICAgICAgICAgICAgaWYgKHVhcmcgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgICAgICBzYXJnID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2FyZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihDT05WX1VOSUNPREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHVhcmcpOwotICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoUHlCeXRlc19HRVRfU0laRSh1YXJnKSk7CisgICAgICAgICAgICAgICAgKnAgPSBzYXJnOworICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUobGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnVmZmVyLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgLyogWFhYIFJlYWxseT8gKi8KQEAgLTkzOSwyNSArOTE4LDI1IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiAicyIgb3IgInoiICovCiAgICAgICAgICAgICBjaGFyICoqcCA9IHZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgICAgICB1YXJnID0gTlVMTDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgc2FyZyA9IE5VTEw7CiAKICAgICAgICAgICAgIGlmIChjID09ICd6JyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgIHVhcmcgPSBVTklDT0RFX0RFRkFVTFRfRU5DT0RJTkcoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAodWFyZyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHNhcmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcodWFyZyk7CisgICAgICAgICAgICAgICAgKnAgPSBzYXJnOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGMgPT0gJ3onID8gInN0ciBvciBOb25lIiA6ICJzdHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICgqcCAhPSBOVUxMICYmIHVhcmcgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KSBzdHJsZW4oKnApICE9IFB5Qnl0ZXNfR0VUX1NJWkUodWFyZykpCisgICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiBzYXJnICE9IE5VTEwgJiYgKFB5X3NzaXplX3QpIHN0cmxlbigqcCkgIT0gbGVuKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGJ5dGVzIG9yIE5vbmUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInN0ciB3aXRob3V0IG51bGwgYnl0ZXMiLAorICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtOTY2LDkgKzk0NSwxMCBAQAogICAgIGNhc2UgJ3UnOiAvKiByYXcgdW5pY29kZSBidWZmZXIgKFB5X1VOSUNPREUgKikgKi8KICAgICBjYXNlICdaJzogLyogcmF3IHVuaWNvZGUgYnVmZmVyIG9yIE5vbmUgKi8KICAgICB7CisgICAgICAgIFB5X1VOSUNPREUgKipwID0gdmFfYXJnKCpwX3ZhLCBQeV9VTklDT0RFICoqKTsKKwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIycpIHsgLyogYW55IGJ1ZmZlci1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgLyogInMjIiBvciAiWiMiICovCi0gICAgICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7CiAgICAgICAgICAgICBGRVRDSF9TSVpFOwogCiAgICAgICAgICAgICBpZiAoYyA9PSAnWicgJiYgYXJnID09IFB5X05vbmUpIHsKQEAgLTk3NiwyMyArOTU2LDI3IEBACiAgICAgICAgICAgICAgICAgU1RPUkVfU0laRSgwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhcmcpOwotICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoUHlVbmljb2RlX0dFVF9TSVpFKGFyZykpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKGxlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInN0ciBvciBOb25lIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiAicyIgb3IgIloiICovCi0gICAgICAgICAgICBQeV9VTklDT0RFICoqcCA9IHZhX2FyZygqcF92YSwgUHlfVU5JQ09ERSAqKik7Ci0KICAgICAgICAgICAgIGlmIChjID09ICdaJyAmJiBhcmcgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICAqcCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IFB5VW5pY29kZV9HRVRfU0laRShhcmcpKQorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUoYXJnLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9zdHJsZW4oKnApICE9IGxlbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXIgb3IgTm9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIG9yIE5vbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAnWicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCkBAIC0xMTEwLDcgKzEwOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgMCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgY2xlYW51cF9wdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLApAQCAtMTE1Miw3ICsxMTM2LDcgQEAKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYWRkY2xlYW51cCgqYnVmZmVyLCBmcmVlbGlzdCwgMCkpIHsKKyAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKCpidWZmZXIsIGZyZWVsaXN0LCBjbGVhbnVwX3B0cikpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTE4Myw4ICsxMTY3LDExIEBACiAKICAgICBjYXNlICdVJzogeyAvKiBQeVVuaWNvZGUgb2JqZWN0ICovCiAgICAgICAgIFB5T2JqZWN0ICoqcCA9IHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOwotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICAqcCA9IGFyZzsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigic3RyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICBicmVhazsKQEAgLTEyMTMsNyArMTIwMCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIih1bnNwZWNpZmllZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gUHlfQ0xFQU5VUF9TVVBQT1JURUQgJiYKLSAgICAgICAgICAgICAgICBhZGRjbGVhbnVwX2NvbnZlcnQoYWRkciwgZnJlZWxpc3QsIGNvbnZlcnQpID09IC0xKQorICAgICAgICAgICAgICAgIGFkZGNsZWFudXAoYWRkciwgZnJlZWxpc3QsIGNvbnZlcnQpID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQpAQCAtMTI0NCw3ICsxMjMxLDcgQEAKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKFB5X2J1ZmZlciopcCk7CiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiY29udGlndW91cyBidWZmZXIiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIDEpKSB7CisgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCBjbGVhbnVwX2J1ZmZlcikpIHsKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTQzMSw4ICsxNDE4LDEwIEBACiAgICAgaW50IGxldmVsc1szMl07CiAgICAgY29uc3QgY2hhciAqZm5hbWUsICptc2csICpjdXN0b21fbXNnLCAqa2V5d29yZDsKICAgICBpbnQgbWluID0gSU5UX01BWDsKKyAgICBpbnQgbWF4ID0gSU5UX01BWDsKICAgICBpbnQgaSwgbGVuLCBuYXJncywgbmtleXdvcmRzOwotICAgIFB5T2JqZWN0ICpmcmVlbGlzdCA9IE5VTEwsICpjdXJyZW50X2FyZzsKKyAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdCA9IHswLCBOVUxMfTsKIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGtleXdvcmRzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGtleXdvcmRzKSk7CkBAIC0xNDU2LDMxICsxNDQ1LDY4IEBACiAgICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQogICAgICAgICBjb250aW51ZTsKIAorICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOworICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgIG5rZXl3b3JkcyA9IChrZXl3b3JkcyA9PSBOVUxMKSA/IDAgOiBQeURpY3RfU2l6ZShrZXl3b3Jkcyk7CiAgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzID4gbGVuKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlcyVzIHRha2VzIGF0IG1vc3QgJWQgIgotICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkIGFyZ3VtZW50JXMgKCVkIGdpdmVuKSIsCiAgICAgICAgICAgICAgICAgICAgICAoZm5hbWUgPT0gTlVMTCkgPyAiZnVuY3Rpb24iIDogZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAoZm5hbWUgPT0gTlVMTCkgPyAiIiA6ICIoKSIsCiAgICAgICAgICAgICAgICAgICAgICBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAobGVuID09IDEpID8gIiIgOiAicyIsCiAgICAgICAgICAgICAgICAgICAgICBuYXJncyArIG5rZXl3b3Jkcyk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHR1cGxlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBpbiBzYW1lIGxvb3AsIHVzaW5nIGt3bGlzdCB0byBkcml2ZSBwcm9jZXNzICovCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGtleXdvcmQgPSBrd2xpc3RbaV07CiAgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgaWYgKG1pbiAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIG1pbiA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKKworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtYXggPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisKKyAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pbiAhPSBJTlRfTUFYKSA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LCBuYXJncyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUga2V5d29yZCBsaXN0IGVudHJpZXMgKCVkKSB0aGFuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcnMgKCVkKSIsIGxlbiwgaSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOwogICAgICAgICBpZiAobmtleXdvcmRzKSB7CkBAIC0xNDk0LDExICsxNTIwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKQogICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogCkBAIC0xNTA3LDcgKzE1MzMsNyBAQAogICAgICAgICAgICAgICAgIGxldmVscywgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgY3VzdG9tX21zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNTQyLDE0IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiUmVxdWlyZWQgYXJndW1lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCiAgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPwogICAgICAgICAgKi8KICAgICAgICAgaWYgKCFua2V5d29yZHMpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCkBAIC0xNTMxLDE1ICsxNTU3LDE1IEBACiAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsICIlczogJyVzJyIsIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICpmb3JtYXQgIT0gJ3wnKSB7CisgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgIm1vcmUgYXJndW1lbnQgc3BlY2lmaWVycyB0aGFuIGtleXdvcmQgbGlzdCBlbnRyaWVzICIKICAgICAgICAgICAgICIocmVtYWluaW5nIGZvcm1hdDonJXMnKSIsIGZvcm1hdCk7Ci0gICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIC8qIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXh0cmFuZW91cyBrZXl3b3JkIGFyZ3VtZW50cyAqLwpAQCAtMTU1Miw3ICsxNTc4LDcgQEAKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgX1B5VW5pY29kZV9Bc1N0cmluZygpIHJlc3VsdCBpcyBub3QgTlVMTCAqLwogICAgICAgICAgICAga3MgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CkBAIC0xNTY5LDEyICsxNTk1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiB9CiAKIApAQCAtMTU4Niw4ICsxNjEyLDEwIEBACiAKICAgICBzd2l0Y2ggKGMpIHsKIAotICAgIC8qIHNpbXBsZSBjb2RlcwotICAgICAqIFRoZSBpbmRpdmlkdWFsIHR5cGVzIChzZWNvbmQgYXJnIG9mIHZhX2FyZykgYXJlIGlycmVsZXZhbnQgKi8KKyAgICAvKgorICAgICAqIGNvZGVzIHRoYXQgdGFrZSBhIHNpbmdsZSBkYXRhIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQKKyAgICAgKiAodGhlIHR5cGUgb2YgdGhlIHBvaW50ZXIgaXMgaXJyZWxldmFudCkKKyAgICAgKi8KIAogICAgIGNhc2UgJ2InOiAvKiBieXRlIC0tIHZlcnkgc2hvcnQgaW50ICovCiAgICAgY2FzZSAnQic6IC8qIGJ5dGUgYXMgYml0ZmllbGQgKi8KQEAgLTE2MDEsMjIgKzE2MjksMjEgQEAKICAgICBjYXNlICdMJzogLyogUFlfTE9OR19MT05HICovCiAgICAgY2FzZSAnSyc6IC8qIFBZX0xPTkdfTE9ORyBzaXplZCBiaXRmaWVsZCAqLwogI2VuZGlmCisgICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KICAgICBjYXNlICdmJzogLyogZmxvYXQgKi8KICAgICBjYXNlICdkJzogLyogZG91YmxlICovCiAgICAgY2FzZSAnRCc6IC8qIGNvbXBsZXggZG91YmxlICovCiAgICAgY2FzZSAnYyc6IC8qIGNoYXIgKi8KICAgICBjYXNlICdDJzogLyogdW5pY29kZSBjaGFyICovCisgICAgY2FzZSAncCc6IC8qIGJvb2xlYW4gcHJlZGljYXRlICovCisgICAgY2FzZSAnUyc6IC8qIHN0cmluZyBvYmplY3QgKi8KKyAgICBjYXNlICdZJzogLyogc3RyaW5nIG9iamVjdCAqLworICAgIGNhc2UgJ1UnOiAvKiB1bmljb2RlIHN0cmluZyBvYmplY3QgKi8KICAgICAgICAgewogICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwotICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgIC8qIHN0cmluZyBjb2RlcyAqLwogCiAgICAgY2FzZSAnZSc6IC8qIHN0cmluZyB3aXRoIGVuY29kaW5nICovCkBAIC0xNjQ5LDE2ICsxNjc2LDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAvKiBvYmplY3QgY29kZXMgKi8KLQotICAgIGNhc2UgJ1MnOiAvKiBzdHJpbmcgb2JqZWN0ICovCi0gICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KLSAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICBjYXNlICdPJzogLyogb2JqZWN0ICovCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICchJykgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGNvcHlyaWdodC5jIGIvUHl0aG9uL2dldGNvcHlyaWdodC5jCmluZGV4IGQxZTI1NzguLmQ4M2M2ZGEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRjb3B5cmlnaHQuYworKysgYi9QeXRob24vZ2V0Y29weXJpZ2h0LmMKQEAgLTE5LDUgKzE5LDUgQEAKIGNvbnN0IGNoYXIgKgogUHlfR2V0Q29weXJpZ2h0KHZvaWQpCiB7Ci0JcmV0dXJuIGNwcnQ7CisgICAgcmV0dXJuIGNwcnQ7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IGNhYmM0ZDYuLmUwNDk5OWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC0xNzkxLDcgKzE3OTEsNyBAQAogICAgIHsxNjcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8xWzJdID0gewotICAgIHs5LCAyfSwKKyAgICB7MTY4LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzJbMV0gPSB7CkBAIC0xODAyLDE3MSArMTgwMiwxODggQEAKICAgICB7MiwgYXJjc184MF8xfSwKICAgICB7MSwgYXJjc184MF8yfSwKIH07Ci1zdGF0aWMgZGZhIGRmYXNbODFdID0gewotICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNCJ9LAotICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCi0gICAgICJcMjA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDQifSwKLSAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKLSAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjIsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzYsCi0gICAgICJcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYzLCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc183LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY2LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzEwLAotICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjgsICJzdG10IiwgMCwgMiwgc3RhdGVzXzEyLAotICAgICAiXDAwMFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0In0sCi0gICAgezI2OSwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzEzLAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwIn0sCi0gICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDAifSwKLSAgICB7MjcxLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI3MiwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNiwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc0LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc1LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzE5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAotICAgIHsyNzcsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMCJ9LAotICAgIHsyODEsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NCwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NiwgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMwLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg5LCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzMsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTIsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0In0sCi0gICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk1LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc18zOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180MiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDEsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NSwKLSAgICAgIlwwMDRcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMCJ9LAotICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwNCwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNDgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDcsICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxMCwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwyMjBcMTc3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzEzLCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTYsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxOSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzYzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEyMFwwNzZcMDAwIn0sCi0gICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDAifSwKLSAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjIsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzY2LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwIn0sCi0gICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyNSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNjksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI4LCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxMSwgc3RhdGVzXzcyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0In0sCi0gICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzMxLCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzUsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfNzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCitzdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKKyAgICB7NzMsIDF9LAorICAgIHs5LCAyfSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE2OF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKKyAgICB7MjQsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzNdID0geworICAgIHsyLCBhcmNzXzgxXzB9LAorICAgIHsxLCBhcmNzXzgxXzF9LAorICAgIHsxLCBhcmNzXzgxXzJ9LAorfTsKK3N0YXRpYyBkZmEgZGZhc1s4Ml0gPSB7CisgICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAorICAgICAiXDAwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCisgICAgICJcMjA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI1OCwgImV2YWxfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYxLCAiZGVjb3JhdGVkIiwgMCwgMywgc3RhdGVzXzUsCisgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2MiwgImZ1bmNkZWYiLCAwLCA4LCBzdGF0ZXNfNiwKKyAgICAgIlwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYzLCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc183LAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjQsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc184LAorICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjUsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfOSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY2LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzEwLAorICAgICAiXDAwMFwwMDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjcsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OCwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTIsCisgICAgICJcMDAwXDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI2OSwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzEzLAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHsyNzAsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE0LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHsyNzEsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTUsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezI3MiwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNiwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjczLCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3NlwwMzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzQsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc1LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCisgICAgezI3NywgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzIzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODAsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAorICAgIHsyODEsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODIsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgzLCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMyLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMTBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDA0NVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAorICAgIHsyOTQsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTYsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NywgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwMCwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAorICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwXDAwMCJ9LAorICAgIHszMDIsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDMsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA1LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNiwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDgsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA5LCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzExLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU1LAorICAgICAiXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTIsICJleHByIiwgMCwgMiwgc3RhdGVzXzU2LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE0LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNSwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxNywgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxOCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwIn0sCisgICAgezMyMywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzI2LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyNywgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyOSwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzczLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMCJ9LAorICAgIHszMzAsICJhcmdsaXN0IiwgMCwgOCwgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzMyLCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzMsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc183NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM1LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc183OSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM2LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKKyAgICB7MzM3LCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzgxLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMlwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorfTsKK3N0YXRpYyBsYWJlbCBsYWJlbHNbMTY5XSA9IHsKICAgICB7MCwgIkVNUFRZIn0sCiAgICAgezI1NiwgMH0sCiAgICAgezQsIDB9LApAQCAtMjEzNSwxMCArMjE1MiwxMSBAQAogICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAogICAgIHsxLCAieWllbGQifSwKKyAgICB7MzM3LCAwfSwKIH07CiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyID0gewotICAgIDgxLAorICAgIDgyLAogICAgIGRmYXMsCi0gICAgezE2OCwgbGFiZWxzfSwKKyAgICB7MTY5LCBsYWJlbHN9LAogICAgIDI1NgogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCBiZWIwZWVjLi4yZjcxYjk3IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgImVycmNvZGUuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAiY29kZS5oIgorI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIApAQCAtMjYsMTc2ICsyNywzOCBAQAogI2VuZGlmCiAKIAotLyogTWFnaWMgd29yZCB0byByZWplY3QgLnB5YyBmaWxlcyBnZW5lcmF0ZWQgYnkgb3RoZXIgUHl0aG9uIHZlcnNpb25zLgotICAgSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KLQotICAgVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQotICAgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCi0gICBBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgotCi0gICBUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCi0gICAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0gICBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLQotICAgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KLSAgIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKLSAgIDEwLgotCi0gICBTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCi0gICBudW1iZXIgYWxzbyBpbmNsdWRlcyBhIG5ldyAibWFnaWMgdGFnIiwgaS5lLiBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZyB1c2VkCi0gICB0byByZXByZXNlbnQgdGhlIG1hZ2ljIG51bWJlciBpbiBfX3B5Y2FjaGVfXyBkaXJlY3Rvcmllcy4gIFdoZW4geW91IGNoYW5nZQotICAgdGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCi0gICBjYW4gYmUgbmFtZWQgYWZ0ZXIgdGhlIFB5dGhvbiBtYWpvciB2ZXJzaW9uIG9mIHRoZSBtYWdpYyBudW1iZXIgYnVtcCwgYnV0Ci0gICBpdCBjYW4gcmVhbGx5IGJlIGFueXRoaW5nLCBhcyBsb25nIGFzIGl0J3MgZGlmZmVyZW50IHRoYW4gYW55dGhpbmcgZWxzZQotICAgdGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCi0gICB3aXRoIFB5dGhvbiAzLjJhMC4KLQotICAgS25vd24gdmFsdWVzOgotICAgICAgIFB5dGhvbiAxLjU6ICAgMjAxMjEKLSAgICAgICBQeXRob24gMS41LjE6IDIwMTIxCi0gICAgICAgUHl0aG9uIDEuNS4yOiAyMDEyMQotICAgICAgIFB5dGhvbiAxLjY6ICAgNTA0MjgKLSAgICAgICBQeXRob24gMi4wOiAgIDUwODIzCi0gICAgICAgUHl0aG9uIDIuMC4xOiA1MDgyMwotICAgICAgIFB5dGhvbiAyLjE6ICAgNjAyMDIKLSAgICAgICBQeXRob24gMi4xLjE6IDYwMjAyCi0gICAgICAgUHl0aG9uIDIuMS4yOiA2MDIwMgotICAgICAgIFB5dGhvbiAyLjI6ICAgNjA3MTcKLSAgICAgICBQeXRob24gMi4zYTA6IDYyMDExCi0gICAgICAgUHl0aG9uIDIuM2EwOiA2MjAyMQotICAgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEgKCEpCi0gICAgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQotICAgICAgIFB5dGhvbiAyLjRhMzogNjIwNTEKLSAgICAgICBQeXRob24gMi40YjE6IDYyMDYxCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwODEgKGFzdC1icmFuY2gpCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA5MSAod2l0aCkKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCi0gICAgICAgUHl0aG9uIDIuNWIzOiA2MjEwMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4pCi0gICAgICAgUHl0aG9uIDIuNWIzOiA2MjExMSAoZml4IHdyb25nIGNvZGU6IHggKz0geWllbGQpCi0gICAgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yaW5nIGNvbnN0YW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCkKLSAgICAgICBQeXRob24gMi41YzI6IDYyMTMxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLiBpbiBsaXN0Y29tcC9nZW5leHApCi0gICAgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKLSAgICAgICBQeXRob24gMi42YTE6IDYyMTYxIChXSVRIX0NMRUFOVVAgb3B0aW1pemF0aW9uKQotICAgICAgIFB5dGhvbiAzMDAwOiAgIDMwMDAKLSAgICAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCi0gICAgICAgICAgICAgICAgICAgICAgMzAyMCAoYWRkZWQgQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICAgIDMwMzAgKGFkZGVkIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgICAzMDUwIChwcmludCBiZWNvbWVzIGEgZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgICAgMzA2MCAoUEVQIDMxMTUgbWV0YWNsYXNzIHN5bnRheCkKLSAgICAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgMzA3MSAoUEVQIDMxMDkgcmFpc2UgY2hhbmdlcykKLSAgICAgICAgICAgICAgICAgICAgICAzMDgxIChQRVAgMzEzNyBtYWtlIF9fZmlsZV9fIGFuZCBfX25hbWVfXyB1bmljb2RlKQotICAgICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgICAgMzEwMSAobWVyZ2UgZnJvbSAyLjZhMCwgc2VlIDYyMTUxKQotICAgICAgICAgICAgICAgICAgICAgIDMxMDMgKF9fZmlsZV9fIHBvaW50cyB0byBzb3VyY2UgZmlsZSkKLSAgICAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgotICAgICAgIFB5dGhvbiAzLjBhNTogMzEzMSAobGV4aWNhbCBleGNlcHRpb24gc3RhY2tpbmcsIGluY2x1ZGluZyBQT1BfRVhDRVBUKQotICAgICAgIFB5dGhvbiAzLjFhMDogMzE0MSAob3B0aW1pemUgbGlzdCwgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zOgotICAgICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKLSAgICAgICBQeXRob24gMy4xYTA6IDMxNTEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotICAgICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQotICAgICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCi0gICAgICAgICAgICAgICAgICAgICB0YWc6IGNweXRob24tMzIKLSAgICAgICBQeXRob24gMy4yYTE6IDMxNzAgKGFkZCBEVVBfVE9QX1RXTywgcmVtb3ZlIERVUF9UT1BYIGFuZCBST1RfRk9VUikKLSAgICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotICAgICAgIFB5dGhvbiAzLjJhMiAgMzE4MCAoYWRkIERFTEVURV9ERVJFRikKLSovCi0KLS8qIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KLSAgIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5Ci0gICBkdWUgdG8gdGhlIGFkZGl0aW9uIG9mIG5ldyBvcGNvZGVzKQotICAgVEFHIG11c3QgY2hhbmdlIGZvciBlYWNoIG1ham9yIFB5dGhvbiByZWxlYXNlLiBUaGUgbWFnaWMgbnVtYmVyIHdpbGwgdGFrZQotICAgY2FyZSBvZiBhbnkgYnl0ZWNvZGUgY2hhbmdlcyB0aGF0IG9jY3VyIGR1cmluZyBkZXZlbG9wbWVudC4KLSovCi0jZGVmaW5lIE1BR0lDICgzMTgwIHwgKChsb25nKSdccic8PDE2KSB8ICgobG9uZyknXG4nPDwyNCkpCi0jZGVmaW5lIFRBRyAiY3B5dGhvbi0zMiIKICNkZWZpbmUgQ0FDSEVESVIgIl9fcHljYWNoZV9fIgotLyogQ3VycmVudCBtYWdpYyB3b3JkIGFuZCBzdHJpbmcgdGFnIGFzIGdsb2JhbHMuICovCi1zdGF0aWMgbG9uZyBweWNfbWFnaWMgPSBNQUdJQzsKLXN0YXRpYyBjb25zdCBjaGFyICpweWNfdGFnID0gVEFHOwogCi0vKiBTZWUgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZSgpIGJlbG93ICovCisvKiBTZWUgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KCkgYmVsb3cgKi8KIHN0YXRpYyBQeU9iamVjdCAqZXh0ZW5zaW9ucyA9IE5VTEw7CiAKKy8qIEZ1bmN0aW9uIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCitleHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGludCwgUHlPYmplY3QgKik7CisKIC8qIFRoaXMgdGFibGUgaXMgZGVmaW5lZCBpbiBjb25maWcuYzogKi8KIGV4dGVybiBzdHJ1Y3QgX2luaXR0YWIgX1B5SW1wb3J0X0luaXR0YWJbXTsKIAotLyogTWV0aG9kIGZyb20gUGFyc2VyL3Rva2VuaXplci5jICovCi1leHRlcm4gY2hhciAqIFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQpOwotCiBzdHJ1Y3QgX2luaXR0YWIgKlB5SW1wb3J0X0luaXR0YWIgPSBfUHlJbXBvcnRfSW5pdHRhYjsKIAotLyogdGhlc2UgdGFibGVzIGRlZmluZSB0aGUgbW9kdWxlIHN1ZmZpeGVzIHRoYXQgUHl0aG9uIHJlY29nbml6ZXMgKi8KLXN0cnVjdCBmaWxlZGVzY3IgKiBfUHlJbXBvcnRfRmlsZXRhYiA9IE5VTEw7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWJbXSA9IHsKLSAgICB7Ii5weSIsICJVIiwgUFlfU09VUkNFfSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyIucHl3IiwgIlUiLCBQWV9TT1VSQ0V9LAotI2VuZGlmCi0gICAgeyIucHljIiwgInJiIiwgUFlfQ09NUElMRUR9LAotICAgIHswLCAwfQotfTsKLQorc3RhdGljIFB5T2JqZWN0ICppbml0c3RyID0gTlVMTDsKIAogLyogSW5pdGlhbGl6ZSB0aGluZ3MgKi8KIAogdm9pZAogX1B5SW1wb3J0X0luaXQodm9pZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZpbGV0YWI7Ci0gICAgaW50IGNvdW50RCA9IDA7Ci0gICAgaW50IGNvdW50UyA9IDA7Ci0KLSAgICAvKiBwcmVwYXJlIF9QeUltcG9ydF9GaWxldGFiOiBjb3B5IGVudHJpZXMgZnJvbQotICAgICAgIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYiBhbmQgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYi4KLSAgICAgKi8KLSNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwotICAgIGZvciAoc2NhbiA9IF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYjsgc2Nhbi0+c3VmZml4ICE9IE5VTEw7ICsrc2NhbikKLSAgICAgICAgKytjb3VudEQ7Ci0jZW5kaWYKLSAgICBmb3IgKHNjYW4gPSBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiOyBzY2FuLT5zdWZmaXggIT0gTlVMTDsgKytzY2FuKQotICAgICAgICArK2NvdW50UzsKLSAgICBmaWxldGFiID0gUHlNZW1fTkVXKHN0cnVjdCBmaWxlZGVzY3IsIGNvdW50RCArIGNvdW50UyArIDEpOwotICAgIGlmIChmaWxldGFiID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgaW1wb3J0IGZpbGUgdGFibGUuIik7Ci0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBtZW1jcHkoZmlsZXRhYiwgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiLAotICAgICAgICAgICBjb3VudEQgKiBzaXplb2Yoc3RydWN0IGZpbGVkZXNjcikpOwotI2VuZGlmCi0gICAgbWVtY3B5KGZpbGV0YWIgKyBjb3VudEQsIF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWIsCi0gICAgICAgICAgIGNvdW50UyAqIHNpemVvZihzdHJ1Y3QgZmlsZWRlc2NyKSk7Ci0gICAgZmlsZXRhYltjb3VudEQgKyBjb3VudFNdLnN1ZmZpeCA9IE5VTEw7Ci0KLSAgICBfUHlJbXBvcnRfRmlsZXRhYiA9IGZpbGV0YWI7Ci0KLSAgICBpZiAoUHlfT3B0aW1pemVGbGFnKSB7Ci0gICAgICAgIC8qIFJlcGxhY2UgIi5weWMiIHdpdGggIi5weW8iIGluIF9QeUltcG9ydF9GaWxldGFiICovCi0gICAgICAgIGZvciAoOyBmaWxldGFiLT5zdWZmaXggIT0gTlVMTDsgZmlsZXRhYisrKSB7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKGZpbGV0YWItPnN1ZmZpeCwgIi5weWMiKSA9PSAwKQotICAgICAgICAgICAgICAgIGZpbGV0YWItPnN1ZmZpeCA9ICIucHlvIjsKLSAgICAgICAgfQotICAgIH0KKyAgICBpbml0c3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9faW5pdF9fIik7CisgICAgaWYgKGluaXRzdHIgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBpbXBvcnQgdmFyaWFibGVzIik7CiB9CiAKIHZvaWQKIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqdiwgKnBhdGhfaG9va3MgPSBOVUxMLCAqemltcGltcG9ydDsKKyAgICBQeU9iamVjdCAqdiwgKnBhdGhfaG9va3MgPSBOVUxMOwogICAgIGludCBlcnIgPSAwOwogCi0gICAgLyogYWRkaW5nIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSwgc2V0dGluZyB1cAotICAgICAgIHppcGltcG9ydCAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TnVsbEltcG9ydGVyX1R5cGUpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgaW5zdGFsbGluZyB6aXBpbXBvcnQgaG9va1xuIik7Ci0KKyAgICAvKiBhZGRpbmcgc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlICovCiAgICAgdiA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTIxNiwxMSArNzksMjUgQEAKICAgICBlcnIgPSBQeVN5c19TZXRPYmplY3QoInBhdGhfaG9va3MiLCBwYXRoX2hvb2tzKTsKICAgICBpZiAoZXJyKSB7CiAgIGVycm9yOgotICAgICAgICBQeUVycl9QcmludCgpOwotICAgICAgICBQeV9GYXRhbEVycm9yKCJpbml0aWFsaXppbmcgc3lzLm1ldGFfcGF0aCwgc3lzLnBhdGhfaG9va3MsICIKLSAgICAgICAgICAgICAgICAgICAgICAicGF0aF9pbXBvcnRlcl9jYWNoZSwgb3IgTnVsbEltcG9ydGVyIGZhaWxlZCIKLSAgICAgICAgICAgICAgICAgICAgICApOworICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmF0YWxFcnJvcigiaW5pdGlhbGl6aW5nIHN5cy5tZXRhX3BhdGgsIHN5cy5wYXRoX2hvb2tzLCAiCisgICAgICAgICAgICAgICAgICAib3IgcGF0aF9pbXBvcnRlcl9jYWNoZSBmYWlsZWQiKTsKICAgICB9CisgICAgUHlfREVDUkVGKHBhdGhfaG9va3MpOworfQorCit2b2lkCitfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICpwYXRoX2hvb2tzLCAqemltcGltcG9ydDsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKTsKKyAgICBpZiAocGF0aF9ob29rcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBpbnN0YWxsaW5nIHppcGltcG9ydCBob29rXG4iKTsKIAogICAgIHppbXBpbXBvcnQgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInppcGltcG9ydCIpOwogICAgIGlmICh6aW1waW1wb3J0ID09IE5VTEwpIHsKQEAgLTIyOSw4ICsxMDYsOSBAQAogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydFxuIik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqemlwaW1wb3J0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHppbXBpbXBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInppcGltcG9ydGVyIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHppcGltcG9ydGVyKTsKKyAgICAgICAgUHlPYmplY3QgKnppcGltcG9ydGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZCh6aW1waW1wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3ppcGltcG9ydGVyKTsKICAgICAgICAgUHlfREVDUkVGKHppbXBpbXBvcnQpOwogICAgICAgICBpZiAoemlwaW1wb3J0ZXIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm8gemlwaW1wb3J0ZXIgb2JqZWN0IC0tIG9rYXkgKi8KQEAgLTIzOSwxNyArMTE3LDIzIEBACiAgICAgICAgICAgICAgICAgICAgICIjIGNhbid0IGltcG9ydCB6aXBpbXBvcnQuemlwaW1wb3J0ZXJcbiIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogc3lzLnBhdGhfaG9va3MuYXBwZW5kKHppcGltcG9ydGVyKSAqLwotICAgICAgICAgICAgZXJyID0gUHlMaXN0X0FwcGVuZChwYXRoX2hvb2tzLCB6aXBpbXBvcnRlcik7CisgICAgICAgICAgICAvKiBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgemlwaW1wb3J0ZXIpICovCisgICAgICAgICAgICBlcnIgPSBQeUxpc3RfSW5zZXJ0KHBhdGhfaG9va3MsIDAsIHppcGltcG9ydGVyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih6aXBpbXBvcnRlcik7Ci0gICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAogICAgICAgICAgICAgICAgICAgICAiIyBpbnN0YWxsZWQgemlwaW1wb3J0IGhvb2tcbiIpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0RFQ1JFRihwYXRoX2hvb2tzKTsKKworICAgIHJldHVybjsKKworICBlcnJvcjoKKyAgICBQeUVycl9QcmludCgpOworICAgIFB5X0ZhdGFsRXJyb3IoImluaXRpYWxpemluZyB6aXBpbXBvcnQgZmFpbGVkIik7CiB9CiAKIC8qIExvY2tpbmcgcHJpbWl0aXZlcyB0byBwcmV2ZW50IHBhcmFsbGVsIGltcG9ydHMgb2YgdGhlIHNhbWUgbW9kdWxlCkBAIC0zMTksNyArMjAzLDcgQEAKICAgICAgICAgLyogRm9ya2VkIGFzIGEgc2lkZSBlZmZlY3Qgb2YgaW1wb3J0ICovCiAgICAgICAgIGxvbmcgbWUgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7CiAgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhpbXBvcnRfbG9jaywgMCk7Ci0JLyogWFhYOiBjYW4gdGhlIHByZXZpb3VzIGxpbmUgZmFpbD8gKi8KKyAgICAgICAgLyogWFhYOiBjYW4gdGhlIHByZXZpb3VzIGxpbmUgZmFpbD8gKi8KICAgICAgICAgaW1wb3J0X2xvY2tfdGhyZWFkID0gbWU7CiAgICAgICAgIGltcG9ydF9sb2NrX2xldmVsLS07CiAgICAgfSBlbHNlIHsKQEAgLTM2OSw4ICsyNTMsNiBAQAogewogICAgIFB5X1hERUNSRUYoZXh0ZW5zaW9ucyk7CiAgICAgZXh0ZW5zaW9ucyA9IE5VTEw7Ci0gICAgUHlNZW1fREVMKF9QeUltcG9ydF9GaWxldGFiKTsKLSAgICBfUHlJbXBvcnRfRmlsZXRhYiA9IE5VTEw7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoaW1wb3J0X2xvY2sgIT0gTlVMTCkgewogICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soaW1wb3J0X2xvY2spOwpAQCAtMzc5LDE0ICsyNjEsNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkCi1pbXBfbW9kdWxlc19yZWxvYWRpbmdfY2xlYXIodm9pZCkKLXsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyAhPSBOVUxMKQotICAgICAgICBQeURpY3RfQ2xlYXIoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyk7Ci19Ci0KIC8qIEhlbHBlciBmb3Igc3lzICovCiAKIFB5T2JqZWN0ICoKQEAgLTQyMyw3ICsyOTcsNiBAQAogUHlJbXBvcnRfQ2xlYW51cCh2b2lkKQogewogICAgIFB5X3NzaXplX3QgcG9zLCBuZG9uZTsKLSAgICBjaGFyICpuYW1lOwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmRpY3Q7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CkBAIC00OTYsMTQgKzM2OSwxMyBAQAogICAgICAgICAgICAgaWYgKHZhbHVlLT5vYl9yZWZjbnQgIT0gMSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soa2V5KSAmJiBQeU1vZHVsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwotICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgImJ1aWx0aW5zIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAiYnVpbHRpbnMiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJzeXMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJzeXMiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICAgICAgICAgIiMgY2xlYW51cFsxXSAlc1xuIiwgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigKKyAgICAgICAgICAgICAgICAgICAgICAgICIjIGNsZWFudXBbMV0gJVVcbiIsIGtleSk7CiAgICAgICAgICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpOwogICAgICAgICAgICAgICAgIG5kb25lKys7CkBAIC01MTUsMTMgKzM4NywxMiBAQAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KG1vZHVsZXMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKLSAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgImJ1aWx0aW5zIikgPT0gMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJidWlsdGlucyIpID09IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICJzeXMiKSA9PSAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgInN5cyIpID09IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2xlYW51cFsyXSAlc1xuIiwgbmFtZSk7CisgICAgICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjIGNsZWFudXBbMl0gJVVcbiIsIGtleSk7CiAgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIodmFsdWUpOwogICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKTsKICAgICAgICAgfQpAQCAtNTQ3LDcgKzQxOCw2IEBACiAgICAgUHlEaWN0X0NsZWFyKG1vZHVsZXMpOwogICAgIGludGVycC0+bW9kdWxlcyA9IE5VTEw7CiAgICAgUHlfREVDUkVGKG1vZHVsZXMpOwotICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcpOwogfQogCiAKQEAgLTU1NiwyNSArNDI2LDM2IEBACiBsb25nCiBQeUltcG9ydF9HZXRNYWdpY051bWJlcih2b2lkKQogewotICAgIHJldHVybiBweWNfbWFnaWM7CisgICAgbG9uZyByZXM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7CisgICAgUHlPYmplY3QgKnB5Y19tYWdpYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9SQVdfTUFHSUNfTlVNQkVSIik7CisgICAgaWYgKHB5Y19tYWdpYyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gUHlMb25nX0FzTG9uZyhweWNfbWFnaWMpOworICAgIFB5X0RFQ1JFRihweWNfbWFnaWMpOworICAgIHJldHVybiByZXM7CiB9CiAKIAorZXh0ZXJuIGNvbnN0IGNoYXIgKiBfUHlTeXNfSW1wbENhY2hlVGFnOworCiBjb25zdCBjaGFyICoKIFB5SW1wb3J0X0dldE1hZ2ljVGFnKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHB5Y190YWc7CisgICAgcmV0dXJuIF9QeVN5c19JbXBsQ2FjaGVUYWc7CiB9CiAKKwogLyogTWFnaWMgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIChidWlsdC1pbiBhcyB3ZWxsIGFzIGR5bmFtaWNhbGx5CiAgICBsb2FkZWQpLiAgVG8gcHJldmVudCBpbml0aWFsaXppbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZSBtb3JlIHRoYW4KICAgIG9uY2UsIHdlIGtlZXAgYSBzdGF0aWMgZGljdGlvbmFyeSAnZXh0ZW5zaW9ucycga2V5ZWQgYnkgbW9kdWxlIG5hbWUKICAgIChmb3IgYnVpbHQtaW4gbW9kdWxlcykgb3IgYnkgZmlsZW5hbWUgKGZvciBkeW5hbWljYWxseSBsb2FkZWQKICAgIG1vZHVsZXMpLCBjb250YWluaW5nIHRoZXNlIG1vZHVsZXMuICBBIGNvcHkgb2YgdGhlIG1vZHVsZSdzCi0gICBkaWN0aW9uYXJ5IGlzIHN0b3JlZCBieSBjYWxsaW5nIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUoKQorICAgZGljdGlvbmFyeSBpcyBzdG9yZWQgYnkgY2FsbGluZyBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoKQogICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBzdWNjZWVkcy4gIEEKICAgIGNvcHkgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZXJlIGJ5IGNhbGxpbmcKLSAgIF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZSgpLgorICAgX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QoKS4KIAogICAgTW9kdWxlcyB3aGljaCBkbyBzdXBwb3J0IG11bHRpcGxlIGluaXRpYWxpemF0aW9uIHNldCB0aGVpciBtX3NpemUKICAgIGZpZWxkIHRvIGEgbm9uLW5lZ2F0aXZlIG51bWJlciAoaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKQEAgLTU4Myw3ICs0NjQsOCBAQAogKi8KIAogaW50Ci1fUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpmaWxlbmFtZSkKK19QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMsICpkaWN0OwogICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOwpAQCAtNjAyLDEwICs0ODQsMTAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lLCBtb2QpIDwgMCkKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0obW9kdWxlcywgbmFtZSwgbW9kKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoX1B5U3RhdGVfQWRkTW9kdWxlKG1vZCwgZGVmKSA8IDApIHsKLSAgICAgICAgUHlEaWN0X0RlbEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7CisgICAgICAgIFB5RGljdF9EZWxJdGVtKG1vZHVsZXMsIG5hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChkZWYtPm1fc2l6ZSA9PSAtMSkgewpAQCAtNjMxLDE3ICs1MTMsMTcgQEAKIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oUHlPYmplY3QgKm1vZCwgY2hhciAqbmFtZSkKIHsKICAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKLSAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmVzID0gX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZShtb2QsIG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIHJlcyA9IF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWVvYmosIG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQorX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpmaWxlbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kLCAqbWRpY3Q7CiAgICAgUHlNb2R1bGVEZWYqIGRlZjsKQEAgLTY1NCw3ICs1MzYsNyBAQAogICAgICAgICAvKiBNb2R1bGUgZG9lcyBub3Qgc3VwcG9ydCByZXBlYXRlZCBpbml0aWFsaXphdGlvbiAqLwogICAgICAgICBpZiAoZGVmLT5tX2Jhc2UubV9jb3B5ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbW9kID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgICAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBtZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKQEAgLTY2OSwzMCArNTUxLDMwIEBACiAgICAgICAgIG1vZCA9IGRlZi0+bV9iYXNlLm1faW5pdCgpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lLCBtb2QpOworICAgICAgICBQeURpY3RfU2V0SXRlbShQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUsIG1vZCk7CiAgICAgICAgIFB5X0RFQ1JFRihtb2QpOwogICAgIH0KICAgICBpZiAoX1B5U3RhdGVfQWRkTW9kdWxlKG1vZCwgZGVmKSA8IDApIHsKLSAgICAgICAgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lKTsKKyAgICAgICAgUHlEaWN0X0RlbEl0ZW0oUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpLCBuYW1lKTsKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0ICVzICMgcHJldmlvdXNseSBsb2FkZWQgKCVVKVxuIiwKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJVUgIyBwcmV2aW91c2x5IGxvYWRlZCAoJVIpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBmaWxlbmFtZSk7CiAgICAgcmV0dXJuIG1vZDsKIAogfQogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfRmluZEJ1aWx0aW4oY2hhciAqbmFtZSkKK19QeUltcG9ydF9GaW5kQnVpbHRpbihjb25zdCBjaGFyICpuYW1lKQogewotICAgIFB5T2JqZWN0ICpyZXMsICpmaWxlbmFtZTsKLSAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQorICAgIFB5T2JqZWN0ICpyZXMsICpuYW1lb2JqOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUobmFtZSwgZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgcmVzID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZW9iaiwgbmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTcwMywxOCArNTg1LDE4IEBACiAgICAnTkVXJyBSRUZFUkVOQ0UhICovCiAKIFB5T2JqZWN0ICoKLVB5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQorUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwogICAgIFB5T2JqZWN0ICptOwogCi0gICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpICE9IE5VTEwgJiYKKyAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbShtb2R1bGVzLCBuYW1lKSkgIT0gTlVMTCAmJgogICAgICAgICBQeU1vZHVsZV9DaGVjayhtKSkKICAgICAgICAgcmV0dXJuIG07Ci0gICAgbSA9IFB5TW9kdWxlX05ldyhuYW1lKTsKKyAgICBtID0gUHlNb2R1bGVfTmV3T2JqZWN0KG5hbWUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lLCBtKSAhPSAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIG5hbWUsIG0pICE9IDApIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC03MjMsMjIgKzYwNSwzMSBAQAogICAgIHJldHVybiBtOwogfQogCitQeU9iamVjdCAqCitQeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKm1vZHVsZTsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbW9kdWxlID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gbW9kdWxlOworfQorCisKIC8qIFJlbW92ZSBuYW1lIGZyb20gc3lzLm1vZHVsZXMsIGlmIGl0J3MgdGhlcmUuICovCiBzdGF0aWMgdm9pZAotcmVtb3ZlX21vZHVsZShjb25zdCBjaGFyICpuYW1lKQorcmVtb3ZlX21vZHVsZShQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkgPT0gTlVMTCkKKyAgICBpZiAoUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgbmFtZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChQeURpY3RfRGVsSXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSA8IDApCisgICAgaWYgKFB5RGljdF9EZWxJdGVtKG1vZHVsZXMsIG5hbWUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiaW1wb3J0OiAgZGVsZXRpbmcgZXhpc3Rpbmcga2V5IGluIgogICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlcyBmYWlsZWQiKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICogZ2V0X3NvdXJjZWZpbGUoY2hhciAqZmlsZSk7Ci1zdGF0aWMgY2hhciAqbWFrZV9zb3VyY2VfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Zik7Ci1zdGF0aWMgY2hhciAqbWFrZV9jb21waWxlZF9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlYnVnKTsKIAogLyogRXhlY3V0ZSBhIGNvZGUgb2JqZWN0IGluIGEgbW9kdWxlIGFuZCByZXR1cm4gdGhlIG1vZHVsZSBvYmplY3QKICAqIFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5ULiAgSWYgYW4gZXJyb3Igb2NjdXJzLCBuYW1lIGlzCkBAIC03NjgsMTAgKzY1OSw2MCBAQAogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpjbywgY2hhciAqcGF0aG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3BhdGhuYW1lKQogeworICAgIFB5T2JqZWN0ICptID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnBhdGhvYmogPSBOVUxMLCAqY3BhdGhvYmogPSBOVUxMOworCisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGNwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChjcGF0aG5hbWUpOworICAgICAgICBpZiAoY3BhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgY3BhdGhvYmogPSBOVUxMOworCisgICAgaWYgKHBhdGhuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOworICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoY3BhdGhvYmogIT0gTlVMTCkgeworICAgICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2dldF9zb3VyY2VmaWxlKTsKKworICAgICAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lczogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gaW50ZXJwcmV0ZXIhIik7CisgICAgICAgIH0KKworICAgICAgICBwYXRob2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZ2V0X3NvdXJjZWZpbGUsIGNwYXRob2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHBhdGhvYmogPSBOVUxMOworCisgICAgbSA9IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KG5hbWVvYmosIGNvLCBwYXRob2JqLCBjcGF0aG9iaik7CitlcnJvcjoKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgUHlfWERFQ1JFRihwYXRob2JqKTsKKyAgICBQeV9YREVDUkVGKGNwYXRob2JqKTsKKyAgICByZXR1cm4gbTsKK30KKworUHlPYmplY3QqCitQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmNvLCBQeU9iamVjdCAqcGF0aG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY3BhdGhuYW1lKQorewogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwogICAgIFB5T2JqZWN0ICptLCAqZCwgKnY7CiAKLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogSWYgdGhlIG1vZHVsZSBpcyBiZWluZyByZWxvYWRlZCwgd2UgZ2V0IHRoZSBvbGQgbW9kdWxlIGJhY2sKQEAgLTc4Miw0MyArNzIzLDMzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0QnVpbHRpbnMoKSkgIT0gMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIC8qIFJlbWVtYmVyIHRoZSBmaWxlbmFtZSBhcyB0aGUgX19maWxlX18gYXR0cmlidXRlICovCi0gICAgdiA9IE5VTEw7CiAgICAgaWYgKHBhdGhuYW1lICE9IE5VTEwpIHsKLSAgICAgICAgdiA9IGdldF9zb3VyY2VmaWxlKHBhdGhuYW1lKTsKLSAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHYgPSBwYXRobmFtZTsKICAgICB9Ci0gICAgaWYgKHYgPT0gTlVMTCkgeworICAgIGVsc2UgewogICAgICAgICB2ID0gKChQeUNvZGVPYmplY3QgKiljbyktPmNvX2ZpbGVuYW1lOwotICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgfQorICAgIFB5X0lOQ1JFRih2KTsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIiwgdikgIT0gMCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0ICovCiAgICAgUHlfREVDUkVGKHYpOwogCiAgICAgLyogUmVtZW1iZXIgdGhlIHB5YyBwYXRoIG5hbWUgYXMgdGhlIF9fY2FjaGVkX18gYXR0cmlidXRlLiAqLwotICAgIGlmIChjcGF0aG5hbWUgPT0gTlVMTCkgeworICAgIGlmIChjcGF0aG5hbWUgIT0gTlVMTCkKKyAgICAgICAgdiA9IGNwYXRobmFtZTsKKyAgICBlbHNlCiAgICAgICAgIHYgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYodik7Ci0gICAgfQotICAgIGVsc2UgaWYgKCh2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoY3BhdGhuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBOb3QgaW1wb3J0YW50IGVub3VnaCB0byByZXBvcnQgKi8KLSAgICAgICAgdiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICB9CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2NhY2hlZF9fIiwgdikgIT0gMCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0ICovCi0gICAgUHlfREVDUkVGKHYpOwogCiAgICAgdiA9IFB5RXZhbF9FdmFsQ29kZShjbywgZCwgZCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBQeV9ERUNSRUYodik7CiAKLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSkgPT0gTlVMTCkgeworICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIG5hbWUpKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJMb2FkZWQgbW9kdWxlICUuMjAwcyBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMiLAorICAgICAgICAgICAgICAgICAgICAgIkxvYWRlZCBtb2R1bGUgJVIgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC04MzMsNDA5ICs3NjQsNiBAQAogfQogCiAKLS8qIExpa2Ugc3RycmNocihzdHJpbmcsICcvJykgYnV0IHNlYXJjaGVzIGZvciB0aGUgcmlnaHRtb3N0IG9mIGVpdGhlciBTRVAKLSAgIG9yIEFMVFNFUCwgaWYgdGhlIGxhdHRlciBpcyBkZWZpbmVkLgotKi8KLXN0YXRpYyBjaGFyICoKLXJpZ2h0bW9zdF9zZXAoY2hhciAqcykKLXsKLSAgICBjaGFyICpmb3VuZCwgYzsKLSAgICBmb3IgKGZvdW5kID0gTlVMTDsgKGMgPSAqcyk7IHMrKykgewotICAgICAgICBpZiAoYyA9PSBTRVAKLSNpZmRlZiBBTFRTRVAKLSAgICAgICAgICAgIHx8IGMgPT0gQUxUU0VQCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgZm91bmQgPSBzOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmb3VuZDsKLX0KLQotCi0vKiBHaXZlbiBhIHBhdGhuYW1lIGZvciBhIFB5dGhvbiBzb3VyY2UgZmlsZSwgZmlsbCBhIGJ1ZmZlciB3aXRoIHRoZQotICAgcGF0aG5hbWUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNvbXBpbGVkIGZpbGUuICBSZXR1cm4gdGhlIHBhdGhuYW1lCi0gICBmb3IgdGhlIGNvbXBpbGVkIGZpbGUsIG9yIE5VTEwgaWYgdGhlcmUncyBubyBzcGFjZSBpbiB0aGUgYnVmZmVyLgotICAgRG9lc24ndCBzZXQgYW4gZXhjZXB0aW9uLiAqLwotCi1zdGF0aWMgY2hhciAqCi1tYWtlX2NvbXBpbGVkX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4sIGludCBkZWJ1ZykKLXsKLSAgICAvKiBmb28ucHkgLT4gX19weWNhY2hlX18vZm9vLjx0YWc+LnB5YyAqLwotICAgIHNpemVfdCBsZW4gPSBzdHJsZW4ocGF0aG5hbWUpOwotICAgIHNpemVfdCBpLCBzYXZlOwotICAgIGNoYXIgKnBvczsKLSAgICBpbnQgc2VwID0gU0VQOwotCi0gICAgLyogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIGJ1ZmZlciBoYXMgcm91Z2hseSBlbm91Z2ggc3BhY2UgdG8gaG9sZCB3aGF0Ci0gICAgICAgd2lsbCBldmVudHVhbGx5IGJlIHRoZSBmdWxsIHBhdGggdG8gdGhlIGNvbXBpbGVkIGZpbGUuICBUaGUgNSBleHRyYQotICAgICAgIGJ5dGVzIGluY2x1ZGUgdGhlIHNsYXNoIGFmZXIgX19weWNhY2hlX18sIHRoZSB0d28gZXh0cmEgZG90cywgdGhlCi0gICAgICAgZXh0cmEgdHJhaWxpbmcgY2hhcmFjdGVyICgnYycgb3IgJ28nKSBhbmQgbnVsbC4gIFRoaXMgaXNuJ3QgZXhhY3QKLSAgICAgICBiZWNhdXNlIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGNhbiBhZmZlY3QgaG93IG1hbnkgYWN0dWFsCi0gICAgICAgY2hhcmFjdGVycyBvZiB0aGUgc3RyaW5nIGdldCBpbnRvIHRoZSBidWZmZXIuICBXZSdsbCBkbyBhIGZpbmFsCi0gICAgICAgc2FuaXR5IGNoZWNrIGJlZm9yZSB3cml0aW5nIHRoZSBleHRlbnNpb24gdG8gZW5zdXJlIHdlIGRvIG5vdAotICAgICAgIG92ZXJmbG93IHRoZSBidWZmZXIuCi0gICAgKi8KLSAgICBpZiAobGVuICsgc3RybGVuKENBQ0hFRElSKSArIHN0cmxlbihweWNfdGFnKSArIDUgPiBidWZsZW4pCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogRmluZCB0aGUgbGFzdCBwYXRoIHNlcGFyYXRvciBhbmQgY29weSBldmVyeXRoaW5nIGZyb20gdGhlIHN0YXJ0IG9mCi0gICAgICAgdGhlIHNvdXJjZSBzdHJpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgc2VwYXJhdG9yLgotICAgICovCi0gICAgaWYgKChwb3MgPSByaWdodG1vc3Rfc2VwKHBhdGhuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBpID0gMDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNlcCA9ICpwb3M7Ci0gICAgICAgIGkgPSBwb3MgLSBwYXRobmFtZSArIDE7Ci0gICAgICAgIHN0cm5jcHkoYnVmLCBwYXRobmFtZSwgaSk7Ci0gICAgfQotCi0gICAgc2F2ZSA9IGk7Ci0gICAgYnVmW2krK10gPSAnXDAnOwotICAgIC8qIEFkZCBfX3B5Y2FjaGVfXy8gKi8KLSAgICBzdHJjYXQoYnVmLCBDQUNIRURJUik7Ci0gICAgaSArPSBzdHJsZW4oQ0FDSEVESVIpIC0gMTsKLSAgICBidWZbaSsrXSA9IHNlcDsKLSAgICBidWZbaSsrXSA9ICdcMCc7Ci0gICAgLyogQWRkIHRoZSBiYXNlIGZpbGVuYW1lLCBidXQgcmVtb3ZlIHRoZSAucHkgb3IgLnB5dyBleHRlbnNpb24sIHNpbmNlCi0gICAgICAgdGhlIHRhZyBuYW1lIG11c3QgZ28gYmVmb3JlIHRoZSBleHRlbnNpb24uCi0gICAgKi8KLSAgICBzdHJjYXQoYnVmLCBwYXRobmFtZSArIHNhdmUpOwotICAgIGlmICgocG9zID0gc3RycmNocihidWYsICcuJykpICE9IE5VTEwpCi0gICAgICAgICorK3BvcyA9ICdcMCc7Ci0gICAgc3RyY2F0KGJ1ZiwgcHljX3RhZyk7Ci0gICAgLyogVGhlIGxlbmd0aCB0ZXN0IGFib3ZlIGFzc3VtZXMgdGhhdCB3ZSdyZSBvbmx5IGFkZGluZyBvbmUgY2hhcmFjdGVyCi0gICAgICAgdG8gdGhlIGVuZCBvZiB3aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHRoZSBleHRlbnNpb24uICBXaGF0IGlmIHRoZXJlCi0gICAgICAgaXMgbm8gZXh0ZW5zaW9uLCBvciB0aGUgc3RyaW5nIGVuZHMgaW4gJy4nIG9yICcucCcsIGFuZCBvdGhlcndpc2UKLSAgICAgICBmaWxscyB0aGUgYnVmZmVyPyAgQnkgYXBwZW5kaW5nIDQgbW9yZSBjaGFyYWN0ZXJzIG9udG8gdGhlIHN0cmluZwotICAgICAgIGhlcmUsIHdlIGNvdWxkIG92ZXJydW4gdGhlIGJ1ZmZlci4KLQotICAgICAgIEFzIGEgc2ltcGxlIGV4YW1wbGUsIGxldCdzIHNheSBidWZsZW49MzIgYW5kIHRoZSBpbnB1dCBzdHJpbmcgaXMKLSAgICAgICAneHh4LnB5Jy4gIHN0cmxlbigpIHdvdWxkIGJlIDYgYW5kIHRoZSB0ZXN0IGFib3ZlIHdvdWxkIHlpZWxkOgotCi0gICAgICAgKDYgKyAxMSArIDEwICsgNSA9PSAzMikgPiAzMgotCi0gICAgICAgd2hpY2ggaXMgZmFsc2UgYW5kIHNvIHRoZSBuYW1lIG1hbmdsaW5nIHdvdWxkIGNvbnRpbnVlLiAgVGhpcyB3b3VsZAotICAgICAgIGJlIGZpbmUgYmVjYXVzZSB3ZSdkIGVuZCB1cCB3aXRoIHRoaXMgc3RyaW5nIGluIGJ1ZjoKLQotICAgICAgIF9fcHljYWNoZV9fL3h4eC5jcHl0aG9uLTMyLnB5Y1wwCi0KLSAgICAgICBzdHJsZW4ob2YgdGhhdCkgPT0gMzAgKyB0aGUgbnVsIGZpdHMgaW5zaWRlIGEgMzIgY2hhcmFjdGVyIGJ1ZmZlci4KLSAgICAgICBXZSBjYW4gZXZlbiBoYW5kbGUgYW4gaW5wdXQgc3RyaW5nIG9mIHNheSAneHh4eHgnIGFib3ZlIGJlY2F1c2UKLSAgICAgICB0aGF0J3MgKDUgKyAxMSArIDEwICsgNSA9PSAzMSkgPiAzMiB3aGljaCBpcyBhbHNvIGZhbHNlLiAgTmFtZQotICAgICAgIG1hbmdsaW5nIHRoYXQgeWllbGRzOgotCi0gICAgICAgX19weWNhY2hlX18veHh4eHhjcHl0aG9uLTMyLnB5Y1wwCi0KLSAgICAgICB3aGljaCBpcyAzMiBjaGFyYWN0ZXJzIGluY2x1ZGluZyB0aGUgbnVsLCBhbmQgdGh1cyBmaXRzIGluIHRoZQotICAgICAgIGJ1ZmZlci4gSG93ZXZlciwgYW4gaW5wdXQgc3RyaW5nIG9mICd4eHh4eHgnIHdvdWxkIHlpZWxkIGEgcmVzdWx0Ci0gICAgICAgc3RyaW5nIG9mOgotCi0gICAgICAgX19weWNhY2hlX18veHh4eHh4Y3B5dGhvbi0zMi5weWNcMAotCi0gICAgICAgd2hpY2ggaXMgMzMgY2hhcmFjdGVycyBsb25nIChpbmNsdWRpbmcgdGhlIG51bCksIHRodXMgb3ZlcmZsb3dpbmcKLSAgICAgICB0aGUgYnVmZmVyLCBldmVuIHRob3VnaCB0aGUgZmlyc3QgdGVzdCB3b3VsZCBmYWlsLCBpLmUuOiB0aGUgaW5wdXQKLSAgICAgICBzdHJpbmcgaXMgYWxzbyA2IGNoYXJhY3RlcnMgbG9uZywgc28gMzIgPiAzMiBpcyBmYWxzZS4KLQotICAgICAgIFRoZSByZWFzb24gdGhlIGZpcnN0IHRlc3QgZmFpbHMgYnV0IHdlIHN0aWxsIG92ZXJmbG93IHRoZSBidWZmZXIgaXMKLSAgICAgICB0aGF0IHRoZSB0ZXN0IGFib3ZlIG9ubHkgZXhwZWN0cyB0byBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBiZQotICAgICAgIGFkZGVkIHRvIHRoZSBleHRlbnNpb24sIGFuZCBoZXJlIHdlJ3JlIGFkZGluZyB0aHJlZSAocHljKS4gIFdlCi0gICAgICAgZG9uJ3QgYWRkIHRoZSBmaXJzdCBkb3QsIHNvIHRoYXQgcmVjbGFpbXMgb25lIG9mIGV4cGVjdGVkCi0gICAgICAgcG9zaXRpb25zLCBsZWF2aW5nIHVzIG92ZXJmbG93aW5nIGJ5IDEgYnl0ZSAoMyBleHRyYSAtIDEgcmVjbGFpbWVkCi0gICAgICAgZG90IC0gMSBleHBlY3RlZCBleHRyYSA9PSAxIG92ZXJmbG93ZWQpLgotCi0gICAgICAgVGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGVuc3VyZSB0aGF0IHdlIHN0aWxsIGhhdmUgZW5vdWdoIHJvb20gaW4gdGhlCi0gICAgICAgdGFyZ2V0IGJ1ZmZlciBiZWZvcmUgd2Ugd3JpdGUgdGhlIGV4dGVuc2lvbi4gIEJlY2F1c2UgaXQncyBhbHdheXMKLSAgICAgICBvbmx5IHRoZSBleHRlbnNpb24gdGhhdCBjYW4gY2F1c2UgdGhlIG92ZXJmbG93LCBhbmQgbmV2ZXIgdGhlIG90aGVyCi0gICAgICAgcGF0aCBieXRlcyB3ZSd2ZSB3cml0dGVuLCBpdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBkbyBvbmUgbW9yZSB0ZXN0Ci0gICAgICAgaGVyZS4gIFN0aWxsLCB0aGUgYXNzZXJ0aW9uIHRoYXQgZm9sbG93cyBjYW4ndCBodXJ0LgotICAgICovCi0jaWYgMAotICAgIHByaW50Zigic3RybGVuKGJ1Zik6ICVkOyBidWZsZW46ICVkXG4iLCAoaW50KXN0cmxlbihidWYpLCAoaW50KWJ1Zmxlbik7Ci0jZW5kaWYKLSAgICBpZiAoc3RybGVuKGJ1ZikgKyA1ID4gYnVmbGVuKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJjYXQoYnVmLCBkZWJ1ZyA/ICIucHljIiA6ICIucHlvIik7Ci0gICAgYXNzZXJ0KHN0cmxlbihidWYpIDwgYnVmbGVuKTsKLSAgICByZXR1cm4gYnVmOwotfQotCi0KLS8qIEdpdmVuIGEgcGF0aG5hbWUgdG8gYSBQeXRob24gYnl0ZSBjb21waWxlZCBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gdGhlCi0gICBzb3VyY2UgZmlsZSwgaWYgdGhlIHBhdGggbWF0Y2hlcyB0aGUgUEVQIDMxNDcgZm9ybWF0LiAgVGhpcyBkb2VzIG5vdCBjaGVjawotICAgZm9yIGFueSBmaWxlIGV4aXN0ZW5jZSwgaG93ZXZlciwgaWYgdGhlIHB5YyBmaWxlIG5hbWUgZG9lcyBub3QgbWF0Y2ggUEVQCi0gICAzMTQ3IHN0eWxlLCBOVUxMIGlzIHJldHVybmVkLiAgYnVmIG11c3QgYmUgYXQgbGVhc3QgYXMgYmlnIGFzIHBhdGhuYW1lOwotICAgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgYWx3YXlzIGJlIHNob3J0ZXIuICovCi0KLXN0YXRpYyBjaGFyICoKLW1ha2Vfc291cmNlX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYpCi17Ci0gICAgLyogX19weWNhY2hlX18vZm9vLjx0YWc+LnB5YyAtPiBmb28ucHkgKi8KLSAgICBzaXplX3QgaSwgajsKLSAgICBjaGFyICpsZWZ0LCAqcmlnaHQsICpkb3QwLCAqZG90MSwgc2VwOwotCi0gICAgLyogTG9vayBiYWNrIHR3byBzbGFzaGVzIGZyb20gdGhlIGVuZC4gIEluIGJldHdlZW4gdGhlc2UgdHdvIHNsYXNoZXMKLSAgICAgICBtdXN0IGJlIHRoZSBzdHJpbmcgX19weWNhY2hlX18gb3IgdGhpcyBpcyBub3QgYSBQRVAgMzE0NyBzdHlsZQotICAgICAgIHBhdGguICBJdCdzIHBvc3NpYmxlIGZvciB0aGVyZSB0byBiZSBvbmx5IG9uZSBzbGFzaC4KLSAgICAqLwotICAgIGlmICgocmlnaHQgPSByaWdodG1vc3Rfc2VwKHBhdGhuYW1lKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwID0gKnJpZ2h0OwotICAgICpyaWdodCA9ICdcMCc7Ci0gICAgbGVmdCA9IHJpZ2h0bW9zdF9zZXAocGF0aG5hbWUpOwotICAgICpyaWdodCA9IHNlcDsKLSAgICBpZiAobGVmdCA9PSBOVUxMKQotICAgICAgICBsZWZ0ID0gcGF0aG5hbWU7Ci0gICAgZWxzZQotICAgICAgICBsZWZ0Kys7Ci0gICAgaWYgKHJpZ2h0LWxlZnQgIT0gc3RybGVuKENBQ0hFRElSKSB8fAotICAgICAgICBzdHJuY21wKGxlZnQsIENBQ0hFRElSLCByaWdodC1sZWZ0KSAhPSAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIE5vdyB2ZXJpZnkgdGhhdCB0aGUgcGF0aCBjb21wb25lbnQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBsYXN0IHNsYXNoCi0gICAgICAgaGFzIHR3byBkb3RzIGluIGl0LgotICAgICovCi0gICAgaWYgKChkb3QwID0gc3RyY2hyKHJpZ2h0ICsgMSwgJy4nKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKChkb3QxID0gc3RyY2hyKGRvdDAgKyAxLCAnLicpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBUb28gbWFueSBkb3RzPyAqLwotICAgIGlmIChzdHJjaHIoZG90MSArIDEsICcuJykgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBUaGlzIGlzIGEgUEVQIDMxNDcgcGF0aC4gIFN0YXJ0IGJ5IGNvcHlpbmcgZXZlcnl0aGluZyBmcm9tIHRoZQotICAgICAgIHN0YXJ0IG9mIHBhdGhuYW1lIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGxlZnRtb3N0IHNsYXNoLiAgVGhlbgotICAgICAgIGNvcHkgdGhlIGZpbGUncyBiYXNlbmFtZSwgcmVtb3ZpbmcgdGhlIG1hZ2ljIHRhZyBhbmQgYWRkaW5nIGEgLnB5Ci0gICAgICAgc3VmZml4LgotICAgICovCi0gICAgc3RybmNweShidWYsIHBhdGhuYW1lLCAoaT1sZWZ0LXBhdGhuYW1lKSk7Ci0gICAgc3RybmNweShidWYraSwgcmlnaHQrMSwgKGo9ZG90MC1yaWdodCkpOwotICAgIHN0cmNweShidWYraStqLCAicHkiKTsKLSAgICByZXR1cm4gYnVmOwotfQotCi0vKiBHaXZlbiBhIHBhdGhuYW1lIGZvciBhIFB5dGhvbiBzb3VyY2UgZmlsZSwgaXRzIHRpbWUgb2YgbGFzdAotICAgbW9kaWZpY2F0aW9uLCBhbmQgYSBwYXRobmFtZSBmb3IgYSBjb21waWxlZCBmaWxlLCBjaGVjayB3aGV0aGVyIHRoZQotICAgY29tcGlsZWQgZmlsZSByZXByZXNlbnRzIHRoZSBzYW1lIHZlcnNpb24gb2YgdGhlIHNvdXJjZS4gIElmIHNvLAotICAgcmV0dXJuIGEgRklMRSBwb2ludGVyIGZvciB0aGUgY29tcGlsZWQgZmlsZSwgcG9zaXRpb25lZCBqdXN0IGFmdGVyCi0gICB0aGUgaGVhZGVyOyBpZiBub3QsIHJldHVybiBOVUxMLgotICAgRG9lc24ndCBzZXQgYW4gZXhjZXB0aW9uLiAqLwotCi1zdGF0aWMgRklMRSAqCi1jaGVja19jb21waWxlZF9tb2R1bGUoY2hhciAqcGF0aG5hbWUsIHRpbWVfdCBtdGltZSwgY2hhciAqY3BhdGhuYW1lKQotewotICAgIEZJTEUgKmZwOwotICAgIGxvbmcgbWFnaWM7Ci0gICAgbG9uZyBweWNfbXRpbWU7Ci0KLSAgICBmcCA9IGZvcGVuKGNwYXRobmFtZSwgInJiIik7Ci0gICAgaWYgKGZwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG1hZ2ljID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGlmIChtYWdpYyAhPSBweWNfbWFnaWMpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgaGFzIGJhZCBtYWdpY1xuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHB5Y19tdGltZSA9IFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBpZiAocHljX210aW1lICE9IG10aW1lKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIGhhcyBiYWQgbXRpbWVcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICVzIG1hdGNoZXMgJXNcbiIsIGNwYXRobmFtZSwgcGF0aG5hbWUpOwotICAgIHJldHVybiBmcDsKLX0KLQotCi0vKiBSZWFkIGEgY29kZSBvYmplY3QgZnJvbSBhIGZpbGUgYW5kIGNoZWNrIGl0IGZvciB2YWxpZGl0eSAqLwotCi1zdGF0aWMgUHlDb2RlT2JqZWN0ICoKLXJlYWRfY29tcGlsZWRfbW9kdWxlKGNoYXIgKmNwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgUHlPYmplY3QgKmNvOwotCi0gICAgY28gPSBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZShmcCk7Ci0gICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlDb2RlX0NoZWNrKGNvKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTm9uLWNvZGUgb2JqZWN0IGluICUuMjAwcyIsIGNwYXRobmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihjbyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gKFB5Q29kZU9iamVjdCAqKWNvOwotfQotCi0KLS8qIExvYWQgYSBtb2R1bGUgZnJvbSBhIGNvbXBpbGVkIGZpbGUsIGV4ZWN1dGUgaXQsIGFuZCByZXR1cm4gaXRzCi0gICBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX2NvbXBpbGVkX21vZHVsZShjaGFyICpuYW1lLCBjaGFyICpjcGF0aG5hbWUsIEZJTEUgKmZwKQotewotICAgIGxvbmcgbWFnaWM7Ci0gICAgUHlDb2RlT2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIG1hZ2ljID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGlmIChtYWdpYyAhPSBweWNfbWFnaWMpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gJS4yMDBzIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgY28gPSByZWFkX2NvbXBpbGVkX21vZHVsZShjcGF0aG5hbWUsIGZwKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgcHJlY29tcGlsZWQgZnJvbSAlc1xuIiwKLSAgICAgICAgICAgIG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgbSA9IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygKLSAgICAgICAgbmFtZSwgKFB5T2JqZWN0ICopY28sIGNwYXRobmFtZSwgY3BhdGhuYW1lKTsKLSAgICBQeV9ERUNSRUYoY28pOwotCi0gICAgcmV0dXJuIG07Ci19Ci0KLS8qIFBhcnNlIGEgc291cmNlIGZpbGUgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBjb2RlIG9iamVjdCAqLwotCi1zdGF0aWMgUHlDb2RlT2JqZWN0ICoKLXBhcnNlX3NvdXJjZV9tb2R1bGUoY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQotewotICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIG1vZF90eSBtb2Q7Ci0gICAgUHlDb21waWxlckZsYWdzIGZsYWdzOwotICAgIFB5QXJlbmEgKmFyZW5hID0gUHlBcmVuYV9OZXcoKTsKLSAgICBpZiAoYXJlbmEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmbGFncy5jZl9mbGFncyA9IDA7Ci0gICAgbW9kID0gUHlQYXJzZXJfQVNURnJvbUZpbGUoZnAsIHBhdGhuYW1lLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQsIDAsIDAsICZmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBhcmVuYSk7Ci0gICAgaWYgKG1vZCkgewotICAgICAgICBjbyA9IFB5QVNUX0NvbXBpbGUobW9kLCBwYXRobmFtZSwgTlVMTCwgYXJlbmEpOwotICAgIH0KLSAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOwotICAgIHJldHVybiBjbzsKLX0KLQotCi0vKiBIZWxwZXIgdG8gb3BlbiBhIGJ5dGVjb2RlIGZpbGUgZm9yIHdyaXRpbmcgaW4gZXhjbHVzaXZlIG1vZGUgKi8KLQotc3RhdGljIEZJTEUgKgotb3Blbl9leGNsdXNpdmUoY2hhciAqZmlsZW5hbWUsIG1vZGVfdCBtb2RlKQotewotI2lmIGRlZmluZWQoT19FWENMKSYmZGVmaW5lZChPX0NSRUFUKSYmZGVmaW5lZChPX1dST05MWSkmJmRlZmluZWQoT19UUlVOQykKLSAgICAvKiBVc2UgT19FWENMIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24gd2hlbiBhbm90aGVyIHByb2Nlc3MgdHJpZXMgdG8KLSAgICAgICB3cml0ZSB0aGUgc2FtZSBmaWxlLiAgV2hlbiB0aGF0IGhhcHBlbnMsIG91ciBvcGVuKCkgY2FsbCBmYWlscywKLSAgICAgICB3aGljaCBpcyBqdXN0IGZpbmUgKHNpbmNlIGl0J3Mgb25seSBhIGNhY2hlKS4KLSAgICAgICBYWFggSWYgdGhlIGZpbGUgZXhpc3RzIGFuZCBpcyB3cml0YWJsZSBidXQgdGhlIGRpcmVjdG9yeSBpcyBub3QKLSAgICAgICB3cml0YWJsZSwgdGhlIGZpbGUgd2lsbCBuZXZlciBiZSB3cml0dGVuLiAgT2ggd2VsbC4KLSAgICAqLwotICAgIGludCBmZDsKLSAgICAodm9pZCkgdW5saW5rKGZpbGVuYW1lKTsKLSAgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fRVhDTHxPX0NSRUFUfE9fV1JPTkxZfE9fVFJVTkMKLSNpZmRlZiBPX0JJTkFSWQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxPX0JJTkFSWSAgIC8qIG5lY2Vzc2FyeSBmb3IgV2luZG93cyAqLwotI2VuZGlmCi0jaWZkZWYgX19WTVMKLSAgICAgICAgICAgICwgbW9kZSwgImN0eHQ9YmluIiwgInNocj1uaWwiCi0jZWxzZQotICAgICAgICAgICAgLCBtb2RlCi0jZW5kaWYKLSAgICAgICAgICApOwotICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBmZG9wZW4oZmQsICJ3YiIpOwotI2Vsc2UKLSAgICAvKiBCZXN0IHdlIGNhbiBkbyAtLSBvbiBXaW5kb3dzIHRoaXMgY2FuJ3QgaGFwcGVuIGFueXdheSAqLwotICAgIHJldHVybiBmb3BlbihmaWxlbmFtZSwgIndiIik7Ci0jZW5kaWYKLX0KLQotCi0vKiBXcml0ZSBhIGNvbXBpbGVkIG1vZHVsZSB0byBhIGZpbGUsIHBsYWNpbmcgdGhlIHRpbWUgb2YgbGFzdAotICAgbW9kaWZpY2F0aW9uIG9mIGl0cyBzb3VyY2UgaW50byB0aGUgaGVhZGVyLgotICAgRXJyb3JzIGFyZSBpZ25vcmVkLCBpZiBhIHdyaXRlIGVycm9yIG9jY3VycyBhbiBhdHRlbXB0IGlzIG1hZGUgdG8KLSAgIHJlbW92ZSB0aGUgZmlsZS4gKi8KLQotc3RhdGljIHZvaWQKLXdyaXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBjaGFyICpjcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzcmNzdGF0KQotewotICAgIEZJTEUgKmZwOwotICAgIGNoYXIgKmRpcnBhdGg7Ci0gICAgdGltZV90IG10aW1lID0gc3Jjc3RhdC0+c3RfbXRpbWU7Ci0jaWZkZWYgTVNfV0lORE9XUyAgIC8qIHNpbmNlIFdpbmRvd3MgdXNlcyBkaWZmZXJlbnQgcGVybWlzc2lvbnMgICovCi0gICAgbW9kZV90IG1vZGUgPSBzcmNzdGF0LT5zdF9tb2RlICYgflNfSUVYRUM7Ci0jZWxzZQotICAgIG1vZGVfdCBtb2RlID0gc3Jjc3RhdC0+c3RfbW9kZSAmIH5TX0lYVVNSICYgflNfSVhHUlAgJiB+U19JWE9USDsKLSAgICBtb2RlX3QgZGlybW9kZSA9IChzcmNzdGF0LT5zdF9tb2RlIHwKLSAgICAgICAgICAgICAgICAgICAgICBTX0lYVVNSIHwgU19JWEdSUCB8IFNfSVhPVEggfAotICAgICAgICAgICAgICAgICAgICAgIFNfSVdVU1IgfCBTX0lXR1JQIHwgU19JV09USCk7Ci0jZW5kaWYKLSAgICBpbnQgc2F2ZWQ7Ci0KLSAgICAvKiBFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGV4aXN0cy4gKi8KLSAgICBkaXJwYXRoID0gcmlnaHRtb3N0X3NlcChjcGF0aG5hbWUpOwotICAgIGlmIChkaXJwYXRoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgbm8gJXMgcGF0aCBmb3VuZCAlc1xuIiwKLSAgICAgICAgICAgICAgICBDQUNIRURJUiwgY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzYXZlZCA9ICpkaXJwYXRoOwotICAgICpkaXJwYXRoID0gJ1wwJzsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoX21rZGlyKGNwYXRobmFtZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkgewotI2Vsc2UKLSAgICBpZiAobWtkaXIoY3BhdGhuYW1lLCBkaXJtb2RlKSA8IDAgJiYgZXJybm8gIT0gRUVYSVNUKSB7Ci0jZW5kaWYKLSAgICAgICAgKmRpcnBhdGggPSBzYXZlZDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgY2Fubm90IGNyZWF0ZSBjYWNoZSBkaXIgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgKmRpcnBhdGggPSBzYXZlZDsKLQotICAgIGZwID0gb3Blbl9leGNsdXNpdmUoY3BhdGhuYW1lLCBtb2RlKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKLSAgICAgICAgICAgICAgICAiIyBjYW4ndCBjcmVhdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZShweWNfbWFnaWMsIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIC8qIEZpcnN0IHdyaXRlIGEgMCBmb3IgbXRpbWUgKi8KLSAgICBQeU1hcnNoYWxfV3JpdGVMb25nVG9GaWxlKDBMLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGUoKFB5T2JqZWN0ICopY28sIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIGlmIChmZmx1c2goZnApICE9IDAgfHwgZmVycm9yKGZwKSkgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjYW4ndCB3cml0ZSAlc1xuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgLyogRG9uJ3Qga2VlcCBwYXJ0aWFsIGZpbGUgKi8KLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgKHZvaWQpIHVubGluayhjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIE5vdyB3cml0ZSB0aGUgdHJ1ZSBtdGltZSAoYXMgYSAzMi1iaXQgZmllbGQpICovCi0gICAgZnNlZWsoZnAsIDRMLCAwKTsKLSAgICBhc3NlcnQobXRpbWUgPD0gMHhGRkZGRkZGRik7Ci0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSgobG9uZyltdGltZSwgZnAsIFB5X01BUlNIQUxfVkVSU0lPTik7Ci0gICAgZmZsdXNoKGZwKTsKLSAgICBmY2xvc2UoZnApOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgd3JvdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci19Ci0KIHN0YXRpYyB2b2lkCiB1cGRhdGVfY29kZV9maWxlbmFtZXMoUHlDb2RlT2JqZWN0ICpjbywgUHlPYmplY3QgKm9sZG5hbWUsIFB5T2JqZWN0ICpuZXduYW1lKQogewpAQCAtMTI2MCwyMjcgKzc4OCw2MCBAQAogICAgIH0KIH0KIAotc3RhdGljIGludAotdXBkYXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSkKK3N0YXRpYyB2b2lkCit1cGRhdGVfY29tcGlsZWRfbW9kdWxlKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpuZXduYW1lKQogewotICAgIFB5T2JqZWN0ICpvbGRuYW1lLCAqbmV3bmFtZTsKKyAgICBQeU9iamVjdCAqb2xkbmFtZTsKIAotICAgIG5ld25hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHBhdGhuYW1lKTsKLSAgICBpZiAobmV3bmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSkgPT0gMCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgb2xkbmFtZSA9IGNvLT5jb19maWxlbmFtZTsKICAgICBQeV9JTkNSRUYob2xkbmFtZSk7CiAgICAgdXBkYXRlX2NvZGVfZmlsZW5hbWVzKGNvLCBvbGRuYW1lLCBuZXduYW1lKTsKICAgICBQeV9ERUNSRUYob2xkbmFtZSk7Ci0gICAgUHlfREVDUkVGKG5ld25hbWUpOwotICAgIHJldHVybiAxOwogfQogCi0vKiBMb2FkIGEgc291cmNlIG1vZHVsZSBmcm9tIGEgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGl0cyBtb2R1bGUKLSAgIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVC4gIElmIHRoZXJlJ3MgYSBtYXRjaGluZwotICAgYnl0ZS1jb21waWxlZCBmaWxlLCB1c2UgdGhhdCBpbnN0ZWFkLiAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9zb3VyY2VfbW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2ltcF9maXhfY29fZmlsZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIEZJTEUgKmZwYzsKLSAgICBjaGFyICpidWY7Ci0gICAgY2hhciAqY3BhdGhuYW1lOwotICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOworICAgIFB5T2JqZWN0ICpjbzsKKyAgICBQeU9iamVjdCAqZmlsZV9wYXRoOwogCi0gICAgaWYgKGZzdGF0KGZpbGVubyhmcCksICZzdCkgIT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgZmlsZSBzdGF0dXMgZnJvbSAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POl9maXhfY29fZmlsZW5hbWUiLCAmY28sICZmaWxlX3BhdGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBjb2RlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpemVvZiBzdC5zdF9tdGltZSA+IDQpIHsKLSAgICAgICAgLyogUHl0aG9uJ3MgLnB5YyB0aW1lc3RhbXAgaGFuZGxpbmcgcHJlc3VtZXMgdGhhdCB0aGUgdGltZXN0YW1wIGZpdHMKLSAgICAgICAgICAgaW4gNCBieXRlcy4gU2luY2UgdGhlIGNvZGUgb25seSBkb2VzIGFuIGVxdWFsaXR5IGNvbXBhcmlzb24sCi0gICAgICAgICAgIG9yZGVyaW5nIGlzIG5vdCBpbXBvcnRhbnQgYW5kIHdlIGNhbiBzYWZlbHkgaWdub3JlIHRoZSBoaWdoZXIgYml0cwotICAgICAgICAgICAoY29sbGlzaW9ucyBhcmUgZXh0cmVtZWx5IHVubGlrZWx5KS4KLSAgICAgICAgICovCi0gICAgICAgIHN0LnN0X210aW1lICY9IDB4RkZGRkZGRkY7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgcGF0aG5hbWUsIGJ1ZiwgKHNpemVfdClNQVhQQVRITEVOICsgMSwgIVB5X09wdGltaXplRmxhZyk7Ci0gICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMICYmCi0gICAgICAgIChmcGMgPSBjaGVja19jb21waWxlZF9tb2R1bGUocGF0aG5hbWUsIHN0LnN0X210aW1lLCBjcGF0aG5hbWUpKSkgewotICAgICAgICBjbyA9IHJlYWRfY29tcGlsZWRfbW9kdWxlKGNwYXRobmFtZSwgZnBjKTsKLSAgICAgICAgZmNsb3NlKGZwYyk7Ci0gICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICBpZiAodXBkYXRlX2NvbXBpbGVkX21vZHVsZShjbywgcGF0aG5hbWUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIHByZWNvbXBpbGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICAgICAgbmFtZSwgY3BhdGhuYW1lKTsKLSAgICAgICAgcGF0aG5hbWUgPSBjcGF0aG5hbWU7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBjbyA9IHBhcnNlX3NvdXJjZV9tb2R1bGUocGF0aG5hbWUsIGZwKTsKLSAgICAgICAgaWYgKGNvID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBmcm9tICVzXG4iLAotICAgICAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICAgICAgaWYgKGNwYXRobmFtZSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnJvID0gUHlTeXNfR2V0T2JqZWN0KCJkb250X3dyaXRlX2J5dGVjb2RlIik7Ci0gICAgICAgICAgICBpbnQgYiA9IChybyA9PSBOVUxMKSA/IDAgOiBQeU9iamVjdF9Jc1RydWUocm8pOwotICAgICAgICAgICAgaWYgKGIgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIGlmICghYikKLSAgICAgICAgICAgICAgICB3cml0ZV9jb21waWxlZF9tb2R1bGUoY28sIGNwYXRobmFtZSwgJnN0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKAotICAgICAgICBuYW1lLCAoUHlPYmplY3QgKiljbywgcGF0aG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmaWxlX3BhdGgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi1lcnJvcl9leGl0OgotICAgIFB5X1hERUNSRUYoY28pOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICB1cGRhdGVfY29tcGlsZWRfbW9kdWxlKChQeUNvZGVPYmplY3QqKWNvLCBmaWxlX3BhdGgpOworCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLS8qIEdldCBzb3VyY2UgZmlsZSAtPiB1bmljb2RlIG9yIE5vbmUKLSAqIFJldHVybnMgdGhlIHBhdGggdG8gdGhlIHB5IGZpbGUgaWYgYXZhaWxhYmxlLCBlbHNlIHRoZSBnaXZlbiBwYXRoCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1nZXRfc291cmNlZmlsZShjaGFyICpmaWxlKQotewotICAgIGNoYXIgKnB5ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqdTsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCi0gICAgaWYgKCFmaWxlIHx8ICEqZmlsZSkgewotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICBsZW4gPSBzdHJsZW4oZmlsZSk7Ci0gICAgLyogbWF0Y2ggJyoucHk/JyAqLwotICAgIGlmIChsZW4gPiBNQVhQQVRITEVOIHx8IFB5T1Nfc3RybmljbXAoJmZpbGVbbGVuLTRdLCAiLnB5IiwgMykgIT0gMCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlKTsKLSAgICB9Ci0KLSAgICBweSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChweSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICAvKiBTdGFydCBieSB0cnlpbmcgdG8gdHVybiBQRVAgMzE0NyBwYXRoIGludG8gc291cmNlIHBhdGguICBJZiB0aGF0Ci0gICAgICogZmFpbHMsIGp1c3QgY2hvcCBvZmYgdGhlIHRyYWlsaW5nIGNoYXJhY3RlciwgaS5lLiBsZWdhY3kgcHljIHBhdGgKLSAgICAgKiB0byBweS4KLSAgICAgKi8KLSAgICBpZiAobWFrZV9zb3VyY2VfcGF0aG5hbWUoZmlsZSwgcHkpID09IE5VTEwpIHsKLSAgICAgICAgc3RybmNweShweSwgZmlsZSwgbGVuLTEpOwotICAgICAgICBweVtsZW4tMV0gPSAnXDAnOwotICAgIH0KLQotICAgIGlmIChzdGF0KHB5LCAmc3RhdGJ1ZikgPT0gMCAmJgotICAgICAgICBTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocHkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZSk7Ci0gICAgfQotICAgIFB5TWVtX0ZSRUUocHkpOwotICAgIHJldHVybiB1OwotfQogCiAvKiBGb3J3YXJkICovCi1zdGF0aWMgUHlPYmplY3QgKmxvYWRfbW9kdWxlKGNoYXIgKiwgRklMRSAqLCBjaGFyICosIGludCwgUHlPYmplY3QgKik7Ci1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqZmluZF9tb2R1bGUoY2hhciAqLCBjaGFyICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIEZJTEUgKiosIFB5T2JqZWN0ICoqKTsKLXN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKGNoYXIgKik7Ci0KLS8qIExvYWQgYSBwYWNrYWdlIGFuZCByZXR1cm4gaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRAotICAgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX3BhY2thZ2UoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm0sICpkOwotICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7Ci0gICAgaW50IGVycjsKLSAgICBjaGFyICpidWYgPSBOVUxMOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGRpcmVjdG9yeSAlc1xuIiwKLSAgICAgICAgICAgIG5hbWUsIHBhdGhuYW1lKTsKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBmaWxlID0gZ2V0X3NvdXJjZWZpbGUocGF0aG5hbWUpOwotICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcGF0aCA9IFB5X0J1aWxkVmFsdWUoIltPXSIsIGZpbGUpOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fZmlsZV9fIiwgZmlsZSk7Ci0gICAgaWYgKGVyciA9PSAwKQotICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBwYXRoKTsKLSAgICBpZiAoZXJyICE9IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUobmFtZSwgIl9faW5pdF9fIiwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsICZmcCwgTlVMTCk7Ci0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLSAgICBtID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIGJ1ZiwgZmRwLT50eXBlLCBOVUxMKTsKLSAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICBnb3RvIGNsZWFudXA7Ci0KLSAgZXJyb3I6Ci0gICAgbSA9IE5VTEw7Ci0gIGNsZWFudXA6Ci0gICAgaWYgKGJ1ZikKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgUHlfWERFQ1JFRihmaWxlKTsKLSAgICByZXR1cm4gbTsKLX0KK3N0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqIGZpbmRfZnJvemVuKFB5T2JqZWN0ICopOwogCiAKIC8qIEhlbHBlciB0byB0ZXN0IGZvciBidWlsdC1pbiBtb2R1bGUgKi8KIAogc3RhdGljIGludAotaXNfYnVpbHRpbihjaGFyICpuYW1lKQoraXNfYnVpbHRpbihQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBpbnQgaTsKKyAgICBpbnQgaSwgY21wOwogICAgIGZvciAoaSA9IDA7IFB5SW1wb3J0X0luaXR0YWJbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKLSAgICAgICAgaWYgKHN0cmNtcChuYW1lLCBQeUltcG9ydF9Jbml0dGFiW2ldLm5hbWUpID09IDApIHsKKyAgICAgICAgY21wID0gUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgUHlJbXBvcnRfSW5pdHRhYltpXS5uYW1lKTsKKyAgICAgICAgaWYgKGNtcCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoUHlJbXBvcnRfSW5pdHRhYltpXS5pbml0ZnVuYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGVsc2UKQEAgLTE1MzYsMTUgKzg5Nyw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgIGltcG9ydGVyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKLSAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeU51bGxJbXBvcnRlcl9UeXBlLCBwLCBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KICAgICBpZiAoaW1wb3J0ZXIgIT0gTlVMTCkgewogICAgICAgICBpbnQgZXJyID0gUHlEaWN0X1NldEl0ZW0ocGF0aF9pbXBvcnRlcl9jYWNoZSwgcCwgaW1wb3J0ZXIpOwpAQCAtMTU2OSw2NjEgKzkyMiwzOCBAQAogICAgIHJldHVybiBpbXBvcnRlcjsKIH0KIAotLyogU2VhcmNoIHRoZSBwYXRoIChkZWZhdWx0IHN5cy5wYXRoKSBmb3IgYSBtb2R1bGUuICBSZXR1cm4gdGhlCi0gICBjb3JyZXNwb25kaW5nIGZpbGVkZXNjciBzdHJ1Y3QsIGFuZCAodmlhIHJldHVybiBhcmd1bWVudHMpIHRoZQotICAgcGF0aG5hbWUgYW5kIGFuIG9wZW4gZmlsZS4gIFJldHVybiBOVUxMIGlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kLiAqLwogCi0jaWZkZWYgTVNfQ09SRURMTAotZXh0ZXJuIEZJTEUgKlB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKGNvbnN0IGNoYXIgKiwgc3RydWN0IGZpbGVkZXNjciAqKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIFB5X3NzaXplX3QpOwotI2VuZGlmCi0KLXN0YXRpYyBpbnQgY2FzZV9vayhjaGFyICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QsIGNoYXIgKik7Ci1zdGF0aWMgaW50IGZpbmRfaW5pdF9tb2R1bGUoY2hhciAqKTsgLyogRm9yd2FyZCAqLwotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgaW1wb3J0aG9va2Rlc2NyID0geyIiLCAiIiwgSU1QX0hPT0t9OwotCi1zdGF0aWMgc3RydWN0IGZpbGVkZXNjciAqCi1maW5kX21vZHVsZShjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwgUHlPYmplY3QgKnBhdGgsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgIHNpemVfdCBidWZsZW4sIEZJTEUgKipwX2ZwLCBQeU9iamVjdCAqKnBfbG9hZGVyKQotewotICAgIFB5X3NzaXplX3QgaSwgbnBhdGg7Ci0gICAgc2l6ZV90IGxlbiwgbmFtZWxlbjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHAgPSBOVUxMOwotICAgIGNoYXIgKmZpbGVtb2RlOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aF9ob29rcywgKnBhdGhfaW1wb3J0ZXJfY2FjaGU7Ci0gICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9mcm96ZW4gPSB7IiIsICIiLCBQWV9GUk9aRU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX2J1aWx0aW4gPSB7IiIsICIiLCBDX0JVSUxUSU59OwotICAgIHN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGZkX3BhY2thZ2UgPSB7IiIsICIiLCBQS0dfRElSRUNUT1JZfTsKLSAgICBjaGFyICpuYW1lOwotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgc2l6ZV90IHNhdmVkX2xlbjsKLSAgICBzaXplX3Qgc2F2ZWRfbmFtZWxlbjsKLSAgICBjaGFyICpzYXZlZF9idWYgPSBOVUxMOwotI2VuZGlmCi0gICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpCi0gICAgICAgICpwX2xvYWRlciA9IE5VTEw7Ci0KLSAgICBpZiAoc3RybGVuKHN1Ym5hbWUpID4gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUgbmFtZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbmFtZSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lLCBzdWJuYW1lKTsKLQotICAgIC8qIHN5cy5tZXRhX3BhdGggaW1wb3J0IGhvb2sgKi8KLSAgICBpZiAocF9sb2FkZXIgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbWV0YV9wYXRoOwotCi0gICAgICAgIG1ldGFfcGF0aCA9IFB5U3lzX0dldE9iamVjdCgibWV0YV9wYXRoIik7Ci0gICAgICAgIGlmIChtZXRhX3BhdGggPT0gTlVMTCB8fCAhUHlMaXN0X0NoZWNrKG1ldGFfcGF0aCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5tZXRhX3BhdGggbXVzdCBiZSBhIGxpc3Qgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobWV0YV9wYXRoKTsgIC8qIHphcCBndWFyZCAqLwotICAgICAgICBucGF0aCA9IFB5TGlzdF9TaXplKG1ldGFfcGF0aCk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBucGF0aDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwotICAgICAgICAgICAgUHlPYmplY3QgKmhvb2sgPSBQeUxpc3RfR2V0SXRlbShtZXRhX3BhdGgsIGkpOwotICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChob29rLCAiZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic08iLCBmdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCAhPSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA6IFB5X05vbmUpOwotICAgICAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG1ldGFfcGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OyAgLyogdHJ1ZSBlcnJvciAqLwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgLyogYSBsb2FkZXIgd2FzIGZvdW5kICovCi0gICAgICAgICAgICAgICAgKnBfbG9hZGVyID0gbG9hZGVyOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhX3BhdGgpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZpbXBvcnRob29rZGVzY3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYobWV0YV9wYXRoKTsKLSAgICB9Ci0KLSAgICBpZiAoZmluZF9mcm96ZW4oZnVsbG5hbWUpICE9IE5VTEwpIHsKLSAgICAgICAgc3RyY3B5KGJ1ZiwgZnVsbG5hbWUpOwotICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICByZXR1cm4gJmZkX2Zyb3plbjsKLSAgICB9Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChpc19idWlsdGluKG5hbWUpKSB7Ci0gICAgICAgICAgICBzdHJjcHkoYnVmLCBuYW1lKTsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gJmZkX2J1aWx0aW47Ci0gICAgICAgIH0KLSNpZmRlZiBNU19DT1JFRExMCi0gICAgICAgIGZwID0gUHlXaW5fRmluZFJlZ2lzdGVyZWRNb2R1bGUobmFtZSwgJmZkcCwgYnVmLCBidWZsZW4pOwotICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgKnBfZnAgPSBmcDsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmRwOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgcGF0aCA9IFB5U3lzX0dldE9iamVjdCgicGF0aCIpOwotICAgIH0KLQotICAgIGlmIChwYXRoID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoIG11c3QgYmUgYSBsaXN0IG9mIGRpcmVjdG9yeSBuYW1lcyIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQotCi0gICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOwotICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhwYXRoX2hvb2tzKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoX2hvb2tzIG11c3QgYmUgYSBsaXN0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9va3MiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLSAgICBwYXRoX2ltcG9ydGVyX2NhY2hlID0gUHlTeXNfR2V0T2JqZWN0KCJwYXRoX2ltcG9ydGVyX2NhY2hlIik7Ci0gICAgaWYgKHBhdGhfaW1wb3J0ZXJfY2FjaGUgPT0gTlVMTCB8fAotICAgICAgICAhUHlEaWN0X0NoZWNrKHBhdGhfaW1wb3J0ZXJfY2FjaGUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgbXVzdCBiZSBhIGRpY3QiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLQotICAgIG5wYXRoID0gUHlMaXN0X1NpemUocGF0aCk7Ci0gICAgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqdiA9IFB5TGlzdF9HZXRJdGVtKHBhdGgsIGkpOwotICAgICAgICBQeU9iamVjdCAqb3JpZ3YgPSB2OwotICAgICAgICBjb25zdCBjaGFyICpiYXNlOwotICAgICAgICBQeV9zc2l6ZV90IHNpemU7Ci0gICAgICAgIGlmICghdikKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodik7Ci0gICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghUHlCeXRlc19DaGVjayh2KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeV9JTkNSRUYodik7Ci0KLSAgICAgICAgYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh2KTsKLSAgICAgICAgbGVuID0gc2l6ZTsKLSAgICAgICAgaWYgKGxlbiArIDIgKyBuYW1lbGVuICsgTUFYU1VGRklYU0laRSA+PSBidWZsZW4pIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBUb28gbG9uZyAqLwotICAgICAgICB9Ci0gICAgICAgIHN0cmNweShidWYsIGJhc2UpOwotICAgICAgICBQeV9ERUNSRUYodik7Ci0KLSAgICAgICAgaWYgKHN0cmxlbihidWYpICE9IGxlbikgewotICAgICAgICAgICAgY29udGludWU7IC8qIHYgY29udGFpbnMgJ1wwJyAqLwotICAgICAgICB9Ci0KLSAgICAgICAgLyogc3lzLnBhdGhfaG9va3MgaW1wb3J0IGhvb2sgKi8KLSAgICAgICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppbXBvcnRlcjsKLQotICAgICAgICAgICAgaW1wb3J0ZXIgPSBnZXRfcGF0aF9pbXBvcnRlcihwYXRoX2ltcG9ydGVyX2NhY2hlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzLCBvcmlndik7Ci0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIE5vdGU6IGltcG9ydGVyIGlzIGEgYm9ycm93ZWQgcmVmZXJlbmNlICovCi0gICAgICAgICAgICBpZiAoaW1wb3J0ZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXI7Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbXBvcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicyIsIGZ1bGxuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsgIC8qIGVycm9yICovCi0gICAgICAgICAgICAgICAgaWYgKGxvYWRlciAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIGEgbG9hZGVyIHdhcyBmb3VuZCAqLwotICAgICAgICAgICAgICAgICAgICAqcF9sb2FkZXIgPSBsb2FkZXI7Ci0gICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAmaW1wb3J0aG9va2Rlc2NyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvKiBubyBob29rIHdhcyBmb3VuZCwgdXNlIGJ1aWx0aW4gaW1wb3J0ICovCi0KLSAgICAgICAgaWYgKGxlbiA+IDAgJiYgYnVmW2xlbi0xXSAhPSBTRVAKLSNpZmRlZiBBTFRTRVAKLSAgICAgICAgICAgICYmIGJ1ZltsZW4tMV0gIT0gQUxUU0VQCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGJ1ZltsZW4rK10gPSBTRVA7Ci0gICAgICAgIHN0cmNweShidWYrbGVuLCBuYW1lKTsKLSAgICAgICAgbGVuICs9IG5hbWVsZW47Ci0KLSAgICAgICAgLyogQ2hlY2sgZm9yIHBhY2thZ2UgaW1wb3J0IChidWYgaG9sZHMgYSBkaXJlY3RvcnkgbmFtZSwKLSAgICAgICAgICAgYW5kIHRoZXJlJ3MgYW4gX19pbml0X18gbW9kdWxlIGluIHRoYXQgZGlyZWN0b3J5ICovCi0jaWZkZWYgSEFWRV9TVEFUCi0gICAgICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDAgJiYgICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgICAgIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSAmJiAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIGNhc2Vfb2soYnVmLCBsZW4sIG5hbWVsZW4sIG5hbWUpKSB7IC8qIGNhc2UgbWF0Y2hlcyAqLwotICAgICAgICAgICAgaWYgKGZpbmRfaW5pdF9tb2R1bGUoYnVmKSkgeyAvKiBhbmQgaGFzIF9faW5pdF9fLnB5ICovCi0gICAgICAgICAgICAgICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gJmZkX3BhY2thZ2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0ltcG9ydFdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICJOb3QgaW1wb3J0aW5nIGRpcmVjdG9yeSAnJVUnOiBtaXNzaW5nIF9faW5pdF9fLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChlcnIpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogdGFrZSBhIHNuYXBzaG90IG9mIHRoZSBtb2R1bGUgc3BlYyBmb3IgcmVzdG9yYXRpb24KLSAgICAgICAgICogYWZ0ZXIgdGhlIDggY2hhcmFjdGVyIERMTCBoYWNrZXJ5Ci0gICAgICAgICAqLwotICAgICAgICBzYXZlZF9idWYgPSBzdHJkdXAoYnVmKTsKLSAgICAgICAgc2F2ZWRfbGVuID0gbGVuOwotICAgICAgICBzYXZlZF9uYW1lbGVuID0gbmFtZWxlbjsKLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotICAgICAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKQotICAgICAgICAgICAgLyogT1MvMiBsaW1pdHMgRExMcyB0byA4IGNoYXJhY3RlciBuYW1lcyAody9vCi0gICAgICAgICAgICAgICBleHRlbnNpb24pCi0gICAgICAgICAgICAgKiBzbyBpZiB0aGUgbmFtZSBpcyBsb25nZXIgdGhhbiB0aGF0IGFuZCBpdHMgYQotICAgICAgICAgICAgICogZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZSB3ZSdyZSBnb2luZyB0byB0cnksCi0gICAgICAgICAgICAgKiB0cnVuY2F0ZSB0aGUgbmFtZSBiZWZvcmUgdHJ5aW5nCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChzdHJsZW4oc3VibmFtZSkgPiA4KSB7Ci0gICAgICAgICAgICAgICAgLyogaXMgdGhpcyBhbiBhdHRlbXB0IHRvIGxvYWQgYSBDIGV4dGVuc2lvbj8gKi8KLSAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyICpzY2FuOwotICAgICAgICAgICAgICAgIHNjYW4gPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWI7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc3RyY21wKHNjYW4tPnN1ZmZpeCwgZmRwLT5zdWZmaXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4rKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHNjYW4tPnN1ZmZpeCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHllcywgc28gdHJ1bmNhdGUgdGhlIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgbmFtZWxlbiA9IDg7Ci0gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBzdHJsZW4oc3VibmFtZSkgLSBuYW1lbGVuOwotICAgICAgICAgICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2VuZGlmIC8qIFBZT1NfT1MyICovCi0gICAgICAgICAgICBzdHJjcHkoYnVmK2xlbiwgZmRwLT5zdWZmaXgpOwotICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyB0cnlpbmcgJXNcbiIsIGJ1Zik7Ci0KLSAgICAgICAgICAgIGZpbGVtb2RlID0gZmRwLT5tb2RlOwotICAgICAgICAgICAgaWYgKGZpbGVtb2RlWzBdID09ICdVJykKLSAgICAgICAgICAgICAgICBmaWxlbW9kZSA9ICJyIiBQWV9TVERJT1RFWFRNT0RFOwotCi0gICAgICAgICAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwICYmIFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSkKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwID0gZm9wZW4oYnVmLCBmaWxlbW9kZSk7Ci0gICAgICAgICAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChjYXNlX29rKGJ1ZiwgbGVuLCBuYW1lbGVuLCBuYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpbnVlIHNlYXJjaCAqLwotICAgICAgICAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICAgICAgICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgICAgICAgICAvKiByZXN0b3JlIHRoZSBzYXZlZCBzbmFwc2hvdCAqLwotICAgICAgICAgICAgc3RyY3B5KGJ1Ziwgc2F2ZWRfYnVmKTsKLSAgICAgICAgICAgIGxlbiA9IHNhdmVkX2xlbjsKLSAgICAgICAgICAgIG5hbWVsZW4gPSBzYXZlZF9uYW1lbGVuOwotI2VuZGlmCi0gICAgICAgIH0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAvKiBkb24ndCBuZWVkL3dhbnQgdGhlIG1vZHVsZSBuYW1lIHNuYXBzaG90IGFueW1vcmUgKi8KLSAgICAgICAgaWYgKHNhdmVkX2J1ZikKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZShzYXZlZF9idWYpOwotICAgICAgICAgICAgc2F2ZWRfYnVmID0gTlVMTDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGlmIChmcCAhPSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBtb2R1bGUgbmFtZWQgJS4yMDBzIiwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0gICAgKnBfZnAgPSBmcDsKLSAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgIHJldHVybiBmZHA7Ci0KLWVycm9yX2V4aXQ6Ci0gICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLyogY2FzZV9vayhjaGFyKiBidWYsIFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG5hbWVsZW4sIGNoYXIqIG5hbWUpCi0gKiBUaGUgYXJndW1lbnRzIGhlcmUgYXJlIHRyaWNreSwgYmVzdCBzaG93biBieSBleGFtcGxlOgotICogICAgL2EvYi9jL2QvZS9mL2cvaC9pL2ovay9zb21lX2xvbmdfbW9kdWxlX25hbWUucHlcMAotICogICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0gbGVuIC0tLS0tLS0tLS0tLS0tLS0tLXwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLSBuYW1lbGVuIC0tLS0tfAotICogYnVmIGlzIHRoZSBmdWxsIHBhdGgsIGJ1dCBsZW4gb25seSBjb3VudHMgdXAgdG8gKCYgZXhjbHVzaXZlIG9mKSB0aGUKLSAqIGV4dGVuc2lvbi4gIG5hbWUgaXMgdGhlIG1vZHVsZSBuYW1lLCBhbHNvIGV4Y2x1c2l2ZSBvZiBleHRlbnNpb24uCi0gKgotICogV2UndmUgYWxyZWFkeSBkb25lIGEgc3VjY2Vzc2Z1bCBzdGF0KCkgb3IgZm9wZW4oKSBvbiBidWYsIHNvIGtub3cgdGhhdAotICogdGhlcmUncyBzb21lIG1hdGNoLCBwb3NzaWJseSBjYXNlLWluc2Vuc2l0aXZlLgotICoKLSAqIGNhc2Vfb2soKSBpcyB0byByZXR1cm4gMSBpZiB0aGVyZSdzIGEgY2FzZS1zZW5zaXRpdmUgbWF0Y2ggZm9yCi0gKiBuYW1lLCBlbHNlIDAuICBjYXNlX29rKCkgaXMgYWxzbyB0byByZXR1cm4gMSBpZiBlbnZhciBQWVRIT05DQVNFT0sKLSAqIGV4aXN0cy4KLSAqCi0gKiBjYXNlX29rKCkgaXMgdXNlZCB0byBpbXBsZW1lbnQgY2FzZS1zZW5zaXRpdmUgaW1wb3J0IHNlbWFudGljcyBldmVuCi0gKiBvbiBwbGF0Zm9ybXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyB0cml2aWFsIHRvIGltcGxlbWVudAotICogZm9yIGNhc2Utc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLiAgSXQncyBwcmV0dHkgbXVjaCBhIGNyb3NzLXBsYXRmb3JtCi0gKiBuaWdodG1hcmUgZm9yIHN5c3RlbXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLgotICovCi0KLS8qIEZpcnN0IHdlIG1heSBuZWVkIGEgcGlsZSBvZiBwbGF0Zm9ybS1zcGVjaWZpYyBoZWFkZXIgZmlsZXM7IHRoZSBzZXF1ZW5jZQotICogb2YgI2lmJ3MgaGVyZSBzaG91bGQgbWF0Y2ggdGhlIHNlcXVlbmNlIGluIHRoZSBib2R5IG9mIGNhc2Vfb2soKS4KLSAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNlbGlmIGRlZmluZWQoREpHUFApCi0jaW5jbHVkZSA8ZGlyLmg+Ci0KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPGRpcmVudC5oPgotCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotI2RlZmluZSBJTkNMX0RPUwotI2RlZmluZSBJTkNMX0RPU0VSUk9SUwotI2RlZmluZSBJTkNMX05PUE1BUEkKLSNpbmNsdWRlIDxvczIuaD4KLSNlbmRpZgotCi1zdGF0aWMgaW50Ci1jYXNlX29rKGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIFB5X3NzaXplX3QgbmFtZWxlbiwgY2hhciAqbmFtZSkKLXsKLS8qIFBpY2sgYSBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbjsgdGhlIHNlcXVlbmNlIG9mICNpZidzIGhlcmUgc2hvdWxkCi0gKiBtYXRjaCB0aGUgc2VxdWVuY2UganVzdCBhYm92ZS4KLSAqLwotCi0vKiBNU19XSU5ET1dTICovCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFdJTjMyX0ZJTkRfREFUQSBkYXRhOwotICAgIEhBTkRMRSBoOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBoID0gRmluZEZpcnN0RmlsZShidWYsICZkYXRhKTsKLSAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICJDYW4ndCBmaW5kIGZpbGUgZm9yIG1vZHVsZSAlLjEwMHNcbihmaWxlbmFtZSAlLjMwMHMpIiwKLSAgICAgICAgICBuYW1lLCBidWYpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgRmluZENsb3NlKGgpOwotICAgIHJldHVybiBzdHJuY21wKGRhdGEuY0ZpbGVOYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBESkdQUCAqLwotI2VsaWYgZGVmaW5lZChESkdQUCkKLSAgICBzdHJ1Y3QgZmZibGsgZmZibGs7Ci0gICAgaW50IGRvbmU7Ci0KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05DQVNFT0siKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGRvbmUgPSBmaW5kZmlyc3QoYnVmLCAmZmZibGssIEZBX0FSQ0h8RkFfUkRPTkxZfEZBX0hJRERFTnxGQV9ESVJFQyk7Ci0gICAgaWYgKGRvbmUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAiQ2FuJ3QgZmluZCBmaWxlIGZvciBtb2R1bGUgJS4xMDBzXG4oZmlsZW5hbWUgJS4zMDBzKSIsCi0gICAgICAgICAgbmFtZSwgYnVmKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBzdHJuY21wKGZmYmxrLmZmX25hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIG5ldy1mYW5nbGVkIG1hY2ludG9zaCAobWFjb3N4KSBvciBDeWd3aW4gKi8KLSNlbGlmIChkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkgJiYgZGVmaW5lZChIQVZFX0RJUkVOVF9IKQotICAgIERJUiAqZGlycDsKLSAgICBzdHJ1Y3QgZGlyZW50ICpkcDsKLSAgICBjaGFyIGRpcm5hbWVbTUFYUEFUSExFTiArIDFdOwotICAgIGNvbnN0IGludCBkaXJsZW4gPSBsZW4gLSBuYW1lbGVuIC0gMTsgLyogZG9uJ3Qgd2FudCB0cmFpbGluZyBTRVAgKi8KLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgLyogQ29weSB0aGUgZGlyIGNvbXBvbmVudCBpbnRvIGRpcm5hbWU7IHN1YnN0aXR1dGUgIi4iIGlmIGVtcHR5ICovCi0gICAgaWYgKGRpcmxlbiA8PSAwKSB7Ci0gICAgICAgIGRpcm5hbWVbMF0gPSAnLic7Ci0gICAgICAgIGRpcm5hbWVbMV0gPSAnXDAnOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KGRpcmxlbiA8PSBNQVhQQVRITEVOKTsKLSAgICAgICAgbWVtY3B5KGRpcm5hbWUsIGJ1ZiwgZGlybGVuKTsKLSAgICAgICAgZGlybmFtZVtkaXJsZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgLyogT3BlbiB0aGUgZGlyZWN0b3J5IGFuZCBzZWFyY2ggdGhlIGVudHJpZXMgZm9yIGFuIGV4YWN0IG1hdGNoLiAqLwotICAgIGRpcnAgPSBvcGVuZGlyKGRpcm5hbWUpOwotICAgIGlmIChkaXJwKSB7Ci0gICAgICAgIGNoYXIgKm5hbWVXaXRoRXh0ID0gYnVmICsgbGVuIC0gbmFtZWxlbjsKLSAgICAgICAgd2hpbGUgKChkcCA9IHJlYWRkaXIoZGlycCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbnN0IGludCB0aGlzbGVuID0KLSNpZmRlZiBfRElSRU5UX0hBVkVfRF9OQU1FTEVOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcC0+ZF9uYW1sZW47Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRwLT5kX25hbWUpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAodGhpc2xlbiA+PSBuYW1lbGVuICYmCi0gICAgICAgICAgICAgICAgc3RyY21wKGRwLT5kX25hbWUsIG5hbWVXaXRoRXh0KSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEZvdW5kICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgKHZvaWQpY2xvc2VkaXIoZGlycCk7Ci0gICAgfQotICAgIHJldHVybiAwIDsgLyogTm90IGZvdW5kICovCi0KLS8qIE9TLzIgKi8KLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgSERJUiBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgZmZidWY7Ci0gICAgQVBJUkVUIHJjOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICByYyA9IERvc0ZpbmRGaXJzdChidWYsCi0gICAgICAgICAgICAgICAgICAgICAgJmhkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgRklMRV9SRUFET05MWSB8IEZJTEVfSElEREVOIHwgRklMRV9TWVNURU0gfCBGSUxFX0RJUkVDVE9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAmZmZidWYsIHNpemVvZihmZmJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgJnNyY2hjbnQsCi0gICAgICAgICAgICAgICAgICAgICAgRklMX1NUQU5EQVJEKTsKLSAgICBpZiAocmMgIT0gTk9fRVJST1IpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHJuY21wKGZmYnVmLmFjaE5hbWUsIG5hbWUsIG5hbWVsZW4pID09IDA7Ci0KLS8qIGFzc3VtaW5nIGl0J3MgYSBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtLCBzbyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8hICovCi0jZWxzZQotICAgIHJldHVybiAxOwotCi0jZW5kaWYKLX0KLQotI2lmZGVmIEhBVkVfU1RBVAotCi0vKiBIZWxwZXIgdG8gbG9vayBmb3IgX19pbml0X18ucHkgb3IgX19pbml0X18ucHlbY29dIGluIHBvdGVudGlhbCBwYWNrYWdlICovCi1zdGF0aWMgaW50Ci1maW5kX2luaXRfbW9kdWxlKGNoYXIgKmJ1ZikKLXsKLSAgICBjb25zdCBzaXplX3Qgc2F2ZV9sZW4gPSBzdHJsZW4oYnVmKTsKLSAgICBzaXplX3QgaSA9IHNhdmVfbGVuOwotICAgIGNoYXIgKnBuYW1lOyAgLyogcG9pbnRlciB0byBzdGFydCBvZiBfX2luaXRfXyAqLwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0KLS8qICAgICAgRm9yIGNhbGxpbmcgY2FzZV9vayhidWYsIGxlbiwgbmFtZWxlbiwgbmFtZSk6Ci0gKiAgICAgIC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svc29tZV9sb25nX21vZHVsZV9uYW1lLnB5XDAKLSAqICAgICAgXiAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIF4gICAgXgotICogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJ1ZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tLSBuYW1lIC0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tLS0tIG5hbWVsZW4gLS0tLS18Ci0gKi8KLSAgICBpZiAoc2F2ZV9sZW4gKyAxMyA+PSBNQVhQQVRITEVOKQotICAgICAgICByZXR1cm4gMDsKLSAgICBidWZbaSsrXSA9IFNFUDsKLSAgICBwbmFtZSA9IGJ1ZiArIGk7Ci0gICAgc3RyY3B5KHBuYW1lLCAiX19pbml0X18ucHkiKTsKLSAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwKSB7Ci0gICAgICAgIGlmIChjYXNlX29rKGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgc2F2ZV9sZW4gKyA5LCAgICAgICAgICAgICAgIC8qIGxlbigiL19faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbigiX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIHBuYW1lKSkgewotICAgICAgICAgICAgYnVmW3NhdmVfbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpICs9IHN0cmxlbihwbmFtZSk7Ci0gICAgc3RyY3B5KGJ1ZitpLCBQeV9PcHRpbWl6ZUZsYWcgPyAibyIgOiAiYyIpOwotICAgIGlmIChzdGF0KGJ1ZiwgJnN0YXRidWYpID09IDApIHsKLSAgICAgICAgaWYgKGNhc2Vfb2soYnVmLAotICAgICAgICAgICAgICAgICAgICBzYXZlX2xlbiArIDksICAgICAgICAgICAgICAgLyogbGVuKCIvX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIDgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuKCJfX2luaXRfXyIpICovCi0gICAgICAgICAgICAgICAgcG5hbWUpKSB7Ci0gICAgICAgICAgICBidWZbc2F2ZV9sZW5dID0gJ1wwJzsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGJ1ZltzYXZlX2xlbl0gPSAnXDAnOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogSEFWRV9TVEFUICovCi0KLQotc3RhdGljIGludCBpbml0X2J1aWx0aW4oY2hhciAqKTsgLyogRm9yd2FyZCAqLwotCi1zdGF0aWMgUHlPYmplY3QqCi1sb2FkX2J1aWx0aW4oY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIGludCB0eXBlKQotewotICAgIFB5T2JqZWN0ICptLCAqbW9kdWxlczsKLSAgICBpbnQgZXJyOwotCi0gICAgaWYgKHBhdGhuYW1lICE9IE5VTEwgJiYgcGF0aG5hbWVbMF0gIT0gJ1wwJykKLSAgICAgICAgbmFtZSA9IHBhdGhuYW1lOwotCi0gICAgaWYgKHR5cGUgPT0gQ19CVUlMVElOKQotICAgICAgICBlcnIgPSBpbml0X2J1aWx0aW4obmFtZSk7Ci0gICAgZWxzZQotICAgICAgICBlcnIgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7Ci0gICAgaWYgKGVyciA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcnIgPT0gMCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgIlB1cnBvcnRlZCAlcyBtb2R1bGUgJS4yMDBzIG5vdCBmb3VuZCIsCi0gICAgICAgICAgICAgICAgdHlwZSA9PSBDX0JVSUxUSU4gPwotICAgICAgICAgICAgICAgICJidWlsdGluIiA6ICJmcm96ZW4iLAotICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKTsKLSAgICBpZiAobSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdCgKLSAgICAgICAgICAgICAgICBQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAiJXMgbW9kdWxlICUuMjAwcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQiLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQ19CVUlMVElOID8KLSAgICAgICAgICAgICAgICAiYnVpbHRpbiIgOiAiZnJvemVuIiwKLSAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihtKTsKLSAgICByZXR1cm4gbTsKLX0KLQotLyogTG9hZCBhbiBleHRlcm5hbCBtb2R1bGUgdXNpbmcgdGhlIGRlZmF1bHQgc2VhcmNoIHBhdGggYW5kIHJldHVybgotICAgaXRzIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfbW9kdWxlKGNoYXIgKm5hbWUsIEZJTEUgKmZwLCBjaGFyICpwYXRobmFtZSwgaW50IHR5cGUsIFB5T2JqZWN0ICpsb2FkZXIpCi17Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaXJzdCBjaGVjayB0aGF0IHRoZXJlJ3MgYW4gb3BlbiBmaWxlIChpZiB3ZSBuZWVkIG9uZSkgICovCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBQWV9TT1VSQ0U6Ci0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgImZpbGUgb2JqZWN0IHJlcXVpcmVkIGZvciBpbXBvcnQgKHR5cGUgY29kZSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLQotICAgIGNhc2UgUFlfU09VUkNFOgotICAgICAgICBtID0gbG9hZF9zb3VyY2VfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQWV9DT01QSUxFRDoKLSAgICAgICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotCi0jaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKLSAgICBjYXNlIENfRVhURU5TSU9OOgotICAgICAgICBtID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGJyZWFrOwotI2VuZGlmCi0KLSAgICBjYXNlIFBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIG0gPSBsb2FkX3BhY2thZ2UobmFtZSwgcGF0aG5hbWUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ19CVUlMVElOOgotICAgIGNhc2UgUFlfRlJPWkVOOgotICAgICAgICBtID0gbG9hZF9idWlsdGluKG5hbWUsIHBhdGhuYW1lLCB0eXBlKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIElNUF9IT09LOiB7Ci0gICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgaG9vayB3aXRob3V0IGxvYWRlciIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobG9hZGVyLCAibG9hZF9tb2R1bGUiLCAicyIsIG5hbWUpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRG9uJ3Qga25vdyBob3cgdG8gaW1wb3J0ICUuMjAwcyAodHlwZSBjb2RlICVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSk7Ci0gICAgICAgIG0gPSBOVUxMOwotCi0gICAgfQotCi0gICAgcmV0dXJuIG07Ci19Ci0KK3N0YXRpYyBpbnQgaW5pdF9idWlsdGluKFB5T2JqZWN0ICopOyAvKiBGb3J3YXJkICovCiAKIC8qIEluaXRpYWxpemUgYSBidWlsdC1pbiBtb2R1bGUuCiAgICBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCwgYW5kIC0xIHdpdGgKICAgIGFuIGV4Y2VwdGlvbiBzZXQgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gKi8KIAogc3RhdGljIGludAotaW5pdF9idWlsdGluKGNoYXIgKm5hbWUpCitpbml0X2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9pbml0dGFiICpwOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaW5kQnVpbHRpbihuYW1lKSAhPSBOVUxMKQorICAgIGlmIChfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBuYW1lKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGZvciAocCA9IFB5SW1wb3J0X0luaXR0YWI7IHAtPm5hbWUgIT0gTlVMTDsgcCsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICptb2Q7CiAgICAgICAgIFB5TW9kdWxlRGVmICpkZWY7Ci0gICAgICAgIGlmIChzdHJjbXAobmFtZSwgcC0+bmFtZSkgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcC0+bmFtZSkgPT0gMCkgewogICAgICAgICAgICAgaWYgKHAtPmluaXRmdW5jID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCByZS1pbml0IGludGVybmFsIG1vZHVsZSAlUiIsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgYnVpbHRpblxuIiwgbmFtZSk7CiAgICAgICAgICAgICBtb2QgPSAoKnAtPmluaXRmdW5jKSgpOwogICAgICAgICAgICAgaWYgKG1vZCA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCiAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4obW9kLCBuYW1lKSA8IDApCisgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIC8qIEZpeHVwRXh0ZW5zaW9uIGhhcyBwdXQgdGhlIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzLAogICAgICAgICAgICAgICAgc28gd2UgY2FuIHJlbGVhc2Ugb3VyIG93biByZWZlcmVuY2UuICovCkBAIC0yMjM4LDM3ICs5NjgsMzcgQEAKIC8qIEZyb3plbiBtb2R1bGVzICovCiAKIHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiAqCi1maW5kX2Zyb3plbihjaGFyICpuYW1lKQorZmluZF9mcm96ZW4oUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnA7CiAKLSAgICBpZiAoIW5hbWUpCisgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOyA7IHArKykgewogICAgICAgICBpZiAocC0+bmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChzdHJjbXAocC0+bmFtZSwgbmFtZSkgPT0gMCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfZnJvemVuX29iamVjdChjaGFyICpuYW1lKQorZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChwLT5jb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMjc5LDE0ICsxMDA5LDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pc19mcm96ZW5fcGFja2FnZShjaGFyICpuYW1lKQoraXNfZnJvemVuX3BhY2thZ2UoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICBpbnQgc2l6ZTsKIAogICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIk5vIHN1Y2ggZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjMwNiwxOSArMTAzNiwyMCBAQAogICAgVGhpcyBmdW5jdGlvbiBpcyBhbHNvIHVzZWQgZnJvbSBmcm96ZW5tYWluLmMgKi8KIAogaW50Ci1QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdHJ1Y3QgX2Zyb3plbiAqcCA9IGZpbmRfZnJvemVuKG5hbWUpOwotICAgIFB5T2JqZWN0ICpjbzsKLSAgICBQeU9iamVjdCAqbTsKKyAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKKyAgICBQeU9iamVjdCAqY28sICptLCAqcGF0aDsKICAgICBpbnQgaXNwYWNrYWdlOwogICAgIGludCBzaXplOwogCisgICAgcCA9IGZpbmRfZnJvemVuKG5hbWUpOworCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKHAtPmNvZGUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRXhjbHVkZWQgZnJvemVuIG9iamVjdCBuYW1lZCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yMzI2LDQxICsxMDU3LDM5IEBACiAgICAgaXNwYWNrYWdlID0gKHNpemUgPCAwKTsKICAgICBpZiAoaXNwYWNrYWdlKQogICAgICAgICBzaXplID0gLXNpemU7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgZnJvemVuJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBpc3BhY2thZ2UgPyAiIHBhY2thZ2UiIDogIiIpOwogICAgIGNvID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKChjaGFyICopcC0+Y29kZSwgc2l6ZSk7CiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJmcm96ZW4gb2JqZWN0ICUuMjAwcyBpcyBub3QgYSBjb2RlIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAiZnJvemVuIG9iamVjdCAlUiBpcyBub3QgYSBjb2RlIG9iamVjdCIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KICAgICBpZiAoaXNwYWNrYWdlKSB7CiAgICAgICAgIC8qIFNldCBfX3BhdGhfXyB0byB0aGUgcGFja2FnZSBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkLCAqcywgKmw7CisgICAgICAgIFB5T2JqZWN0ICpkLCAqbDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgbCA9IFB5TGlzdF9OZXcoMSk7CiAgICAgICAgIGlmIChsID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICAgICAgfQotICAgICAgICBQeUxpc3RfU0VUX0lURU0obCwgMCwgcyk7CisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGwsIDAsIG5hbWUpOwogICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19wYXRoX18iLCBsKTsKICAgICAgICAgUHlfREVDUkVGKGwpOwogICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgfQotICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KG5hbWUsIGNvLCAiPGZyb3plbj4iKTsKKyAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxmcm96ZW4+Iik7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfcmV0dXJuOworICAgIG0gPSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdChuYW1lLCBjbywgcGF0aCwgTlVMTCk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICBQeV9ERUNSRUYoY28pOwpAQCAtMjM3MSw2ICsxMTAwLDE5IEBACiAgICAgcmV0dXJuIC0xOwogfQogCitpbnQKK1B5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqOworICAgIGludCByZXQ7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiByZXQ7Cit9CisKIAogLyogSW1wb3J0IGEgbW9kdWxlLCBlaXRoZXIgYnVpbHQtaW4sIGZyb3plbiwgb3IgZXh0ZXJuYWwsIGFuZCByZXR1cm4KICAgIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCkBAIC0yNDAxLDU4NSArMTE0Myw0MTEgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5T2JqZWN0ICptb2R1bGVzOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgbG9uZyBtZTsKLSNlbmRpZgotCi0gICAgLyogVHJ5IHRvIGdldCB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXNbbmFtZV0gKi8KLSAgICBtb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChtb2R1bGVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBjaGVjayB0aGUgaW1wb3J0IGxvY2sKLSAgICAgKiBtZSBtaWdodCBiZSAtMSBidXQgSSBpZ25vcmUgdGhlIGVycm9yIGhlcmUsIHRoZSBsb2NrIGZ1bmN0aW9uCi0gICAgICogdGFrZXMgY2FyZSBvZiB0aGUgcHJvYmxlbSAqLwotICAgIG1lID0gUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpOwotICAgIGlmIChpbXBvcnRfbG9ja190aHJlYWQgPT0gLTEgfHwgaW1wb3J0X2xvY2tfdGhyZWFkID09IG1lKSB7Ci0gICAgICAgIC8qIG5vIHRocmVhZCBvciBtZSBpcyBob2xkaW5nIHRoZSBsb2NrICovCi0gICAgICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUobmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGltcG9ydCAlLjIwMHMgYmVjYXVzZSB0aGUgaW1wb3J0IGxvY2siCi0gICAgICAgICAgICAgICAgICAgICAiaXMgaGVsZCBieSBhbm90aGVyIHRocmVhZC4iLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbHNlCiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZShuYW1lKTsKLSNlbmRpZgogfQogCi0vKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgaGVscGVyIHJvdXRpbmVzICovCi1zdGF0aWMgUHlPYmplY3QgKmdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbiwgaW50IGxldmVsKTsKLXN0YXRpYyBQeU9iamVjdCAqbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcF9uYW1lLCBjaGFyICpidWYsIFB5X3NzaXplX3QgKnBfYnVmbGVuKTsKLXN0YXRpYyBpbnQgbWFya19taXNzKGNoYXIgKm5hbWUpOwotc3RhdGljIGludCBlbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IHJlY3Vyc2l2ZSk7Ci1zdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfc3VibW9kdWxlKFB5T2JqZWN0ICptb2QsIGNoYXIgKm5hbWUsIGNoYXIgKmZ1bGxuYW1lKTsKIAotLyogVGhlIE1hZ251bSBPcHVzIG9mIGRvdHRlZC1uYW1lIGltcG9ydCA6LSkgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcG9ydF9tb2R1bGVfbGV2ZWwoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorLyogUmVtb3ZlIGltcG9ydGxpYiBmcmFtZXMgZnJvbSB0aGUgdHJhY2ViYWNrLAorICogZXhjZXB0IGluIFZlcmJvc2UgbW9kZS4gKi8KK3N0YXRpYyB2b2lkCityZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyh2b2lkKQogewotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0gICAgUHlPYmplY3QgKnBhcmVudCwgKmhlYWQsICpuZXh0LCAqdGFpbDsKKyAgICBjb25zdCBjaGFyICppbXBvcnRsaWJfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcD4iOworICAgIGNvbnN0IGNoYXIgKnJlbW92ZV9mcmFtZXMgPSAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCI7CisgICAgaW50IGFsd2F5c190cmltID0gMDsKKyAgICBpbnQgaW5faW1wb3J0bGliID0gMDsKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdmFsdWUsICpiYXNlX3RiLCAqdGI7CisgICAgUHlPYmplY3QgKipwcmV2X2xpbmssICoqb3V0ZXJfbGluayA9IE5VTEw7CiAKLSAgICBpZiAoc3RyY2hyKG5hbWUsICcvJykgIT0gTlVMTAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgfHwgc3RyY2hyKG5hbWUsICdcXCcpICE9IE5VTEwKKyAgICAvKiBTeW5vcHNpczogaWYgaXQncyBhbiBJbXBvcnRFcnJvciwgd2UgdHJpbSBhbGwgaW1wb3J0bGliIGNodW5rcworICAgICAgIGZyb20gdGhlIHRyYWNlYmFjay4gV2UgYWx3YXlzIHRyaW0gY2h1bmtzCisgICAgICAgd2hpY2ggZW5kIHdpdGggYSBjYWxsIHRvICJfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkIi4gKi8KKworICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJmJhc2VfdGIpOworICAgIGlmICghZXhjZXB0aW9uIHx8IFB5X1ZlcmJvc2VGbGFnKQorICAgICAgICBnb3RvIGRvbmU7CisgICAgaWYgKFB5VHlwZV9Jc1N1YnR5cGUoKFB5VHlwZU9iamVjdCAqKSBleGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcikpCisgICAgICAgIGFsd2F5c190cmltID0gMTsKKworICAgIHByZXZfbGluayA9ICZiYXNlX3RiOworICAgIHRiID0gYmFzZV90YjsKKyAgICB3aGlsZSAodGIgIT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlYmFja09iamVjdCAqdHJhY2ViYWNrID0gKFB5VHJhY2ViYWNrT2JqZWN0ICopdGI7CisgICAgICAgIFB5T2JqZWN0ICpuZXh0ID0gKFB5T2JqZWN0ICopIHRyYWNlYmFjay0+dGJfbmV4dDsKKyAgICAgICAgUHlGcmFtZU9iamVjdCAqZnJhbWUgPSB0cmFjZWJhY2stPnRiX2ZyYW1lOworICAgICAgICBQeUNvZGVPYmplY3QgKmNvZGUgPSBmcmFtZS0+Zl9jb2RlOworICAgICAgICBpbnQgbm93X2luX2ltcG9ydGxpYjsKKworICAgICAgICBhc3NlcnQoUHlUcmFjZUJhY2tfQ2hlY2sodGIpKTsKKyAgICAgICAgbm93X2luX2ltcG9ydGxpYiA9IChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCk7CisgICAgICAgIGlmIChub3dfaW5faW1wb3J0bGliICYmICFpbl9pbXBvcnRsaWIpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGxpbmsgdG8gdGhpcyBjaHVuayBvZiBpbXBvcnRsaWIgdHJhY2ViYWNrcyAqLworICAgICAgICAgICAgb3V0ZXJfbGluayA9IHByZXZfbGluazsKKyAgICAgICAgfQorICAgICAgICBpbl9pbXBvcnRsaWIgPSBub3dfaW5faW1wb3J0bGliOworCisgICAgICAgIGlmIChpbl9pbXBvcnRsaWIgJiYKKyAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAorICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZyYW1lcykgPT0gMCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqb3V0ZXJfbGluazsKKyAgICAgICAgICAgICpvdXRlcl9saW5rID0gbmV4dDsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYobmV4dCk7CisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIHByZXZfbGluayA9IG91dGVyX2xpbms7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwcmV2X2xpbmsgPSAoUHlPYmplY3QgKiopICZ0cmFjZWJhY2stPnRiX25leHQ7CisgICAgICAgIH0KKyAgICAgICAgdGIgPSBuZXh0OworICAgIH0KK2RvbmU6CisgICAgUHlFcnJfUmVzdG9yZShleGNlcHRpb24sIHZhbHVlLCBiYXNlX3RiKTsKK30KKworCitQeU9iamVjdCAqCitQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0aWFsaXppbmdfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fcGF0aF9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpbmRfYW5kX2xvYWQpOworICAgIF9QeV9JREVOVElGSUVSKF9oYW5kbGVfZnJvbWxpc3QpOworICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKHNpbmdsZV9kb3QsICIuIik7CisgICAgUHlPYmplY3QgKmFic19uYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnNfaW1wb3J0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxfbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisKKyAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCisgICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCisgICAgICAgTlVMTCBhcmd1bWVudC4gKi8KKyAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKKyAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KKyAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKKyAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOworICAgIH0KKworICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7CisgICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7CisgICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7CisgICAgfQorICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFRoZSBiZWxvdyBjb2RlIGlzIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgJiBfZ2NkX2ltcG9ydCgpLCBwb3J0ZWQgdG8gQworICAgICAgIGZvciBhZGRlZCBwZXJmb3JtYW5jZS4gKi8KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtb2R1bGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKGxldmVsIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImxldmVsIG11c3QgYmUgPj0gMCIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICAgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCAmJiBwYWNrYWdlICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOworICAgICAgICAgICAgaWYgKHBhY2thZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJfX25hbWVfXyBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisKKyAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOworICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeyAgLyogbGV2ZWwgPT0gMCAqLworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPT0gMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBwYWNrYWdlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgIH0KKworICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgUHlfc3NpemVfdCBsYXN0X2RvdCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhY2thZ2UpOworICAgICAgICBQeU9iamVjdCAqYmFzZSA9IE5VTEw7CisgICAgICAgIGludCBsZXZlbF91cCA9IDE7CisKKyAgICAgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKKyAgICAgICAgICAgIGlmIChsYXN0X2RvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsYXN0X2RvdCA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2UiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7CisKKyAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKKyAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOworICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7CisgICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFic19uYW1lID0gbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCi0gICAgICAgICkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiSW1wb3J0IGJ5IGZpbGVuYW1lIGlzIG5vdCBzdXBwb3J0ZWQuIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgLyogRnJvbSB0aGlzIHBvaW50IGZvcndhcmQsIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2shICovCisgICAgaWYgKFB5RGljdF9DaGVjayhnbG9iYWxzKSkgeworICAgICAgICBidWlsdGluc19pbXBvcnQgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX2ltcG9ydF9fKTsKICAgICB9Ci0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhcmVudCA9IGdldF9wYXJlbnQoZ2xvYmFscywgYnVmLCAmYnVmbGVuLCBsZXZlbCk7Ci0gICAgaWYgKHBhcmVudCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0KLSAgICBoZWFkID0gbG9hZF9uZXh0KHBhcmVudCwgbGV2ZWwgPCAwID8gUHlfTm9uZSA6IHBhcmVudCwgJm5hbWUsIGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZidWZsZW4pOwotICAgIGlmIChoZWFkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLQotICAgIHRhaWwgPSBoZWFkOwotICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICB3aGlsZSAobmFtZSkgewotICAgICAgICBuZXh0ID0gbG9hZF9uZXh0KHRhaWwsIHRhaWwsICZuYW1lLCBidWYsICZidWZsZW4pOwotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKKyAgICAgICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7CisgICAgICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiX19pbXBvcnRfXyBtaXNzaW5nIik7CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IG5leHQ7CiAgICAgfQotICAgIGlmICh0YWlsID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogSWYgdGFpbCBpcyBQeV9Ob25lLCBib3RoIGdldF9wYXJlbnQgYW5kIGxvYWRfbmV4dCBmb3VuZAotICAgICAgICAgICBhbiBlbXB0eSBtb2R1bGUgbmFtZTogc29tZW9uZSBjYWxsZWQgX19pbXBvcnRfXygiIikgb3IKLSAgICAgICAgICAgZG9jdG9yZWQgZmF1bHR5IGJ5dGVjb2RlICovCi0gICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgUHlfREVDUkVGKGhlYWQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBtb2R1bGUgbmFtZSIpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQorICAgIFB5X0lOQ1JFRihidWlsdGluc19pbXBvcnQpOwogCi0gICAgaWYgKGZyb21saXN0ICE9IE5VTEwpIHsKLSAgICAgICAgaW50IGIgPSAoZnJvbWxpc3QgPT0gUHlfTm9uZSkgPyAwIDogUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICAgICAgaWYgKGIgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaGVhZCk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBhYnNfbmFtZSk7CisgICAgaWYgKG1vZCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW1wb3J0IG9mICVSIGhhbHRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLCBhYnNfbmFtZSk7CisgICAgICAgIGlmIChtc2cgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBhYnNfbmFtZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWIpCi0gICAgICAgICAgICBmcm9tbGlzdCA9IE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CiAgICAgfQorICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CiAKLSAgICBpZiAoZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIGhlYWQ7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAvKiBPcHRpbWl6YXRpb246IG9ubHkgY2FsbCBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSBpZgorICAgICAgICAgICBfX2luaXRpYWxpemluZ19fIGlzIHRydWUuCisgICAgICAgICAgIE5PVEU6IGJlY2F1c2Ugb2YgdGhpcywgX19pbml0aWFsaXppbmdfXyBtdXN0IGJlIHNldCAqYmVmb3JlKgorICAgICAgICAgICBzdHVmZmluZyB0aGUgbmV3IG1vZHVsZSBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgICovCisgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2QsICZQeUlkX19faW5pdGlhbGl6aW5nX18pOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW5pdGlhbGl6aW5nID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID09IC0xKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKKyAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLworICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2xvY2tfdW5sb2NrX21vZHVsZSwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CiAgICAgfQotCi0gICAgUHlfREVDUkVGKGhlYWQpOwotICAgIGlmICghZW5zdXJlX2Zyb21saXN0KHRhaWwsIGZyb21saXN0LCBidWYsIGJ1ZmxlbiwgMCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgZWxzZSB7CisgICAgICAgIC8qIF9ib290c3RyYXAuX2ZpbmRfYW5kX2xvYWQoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19maW5kX2FuZF9sb2FkLCBhYnNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNfaW1wb3J0LCBOVUxMKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgfQorICAgIC8qIEZyb20gbm93IG9uIHdlIGRvbid0IGhvbGQgdGhlIGltcG9ydCBsb2NrIGFueW1vcmUuICovCiAKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIHRhaWw7CisgICAgaWYgKFB5T2JqZWN0X05vdChmcm9tbGlzdCkpIHsKKyAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwogCi1lcnJvcl9leGl0OgotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKKyAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOworICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOworCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgeworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9udCk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBhYnNfbmFtZV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhYnNfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvX3JldHVybiA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWJzX25hbWUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19uYW1lX2xlbiAtIGN1dF9vZmYpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CisgICAgICAgICAgICAgICAgaWYgKHRvX3JldHVybiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgbm90IGluIHN5cy5tb2R1bGVzIGFzIGV4cGVjdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmaW5hbF9tb2QgPSBtb2Q7CisgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgfQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyb3Jfd2l0aF91bmxvY2s6CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKKyAgICB9CisjZW5kaWYKKyAgZXJyb3I6CisgICAgUHlfWERFQ1JFRihhYnNfbmFtZSk7CisgICAgUHlfWERFQ1JFRihidWlsdGluc19pbXBvcnQpOworICAgIFB5X1hERUNSRUYobW9kKTsKKyAgICBQeV9YREVDUkVGKHBhY2thZ2UpOworICAgIFB5X1hERUNSRUYoZ2xvYmFscyk7CisgICAgUHlfWERFQ1JFRihmcm9tbGlzdCk7CisgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKQorICAgICAgICByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcygpOworICAgIHJldHVybiBmaW5hbF9tb2Q7CiB9CiAKIFB5T2JqZWN0ICoKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCwgaW50IGxldmVsKQorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotICAgIHJlc3VsdCA9IGltcG9ydF9tb2R1bGVfbGV2ZWwobmFtZSwgZ2xvYmFscywgbG9jYWxzLCBmcm9tbGlzdCwgbGV2ZWwpOwotICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUmV0dXJuIHRoZSBwYWNrYWdlIHRoYXQgYW4gaW1wb3J0IGlzIGJlaW5nIHBlcmZvcm1lZCBpbi4gIElmIGdsb2JhbHMgY29tZXMKLSAgIGZyb20gdGhlIG1vZHVsZSBmb28uYmFyLmJhdCAobm90IGl0c2VsZiBhIHBhY2thZ2UpLCB0aGlzIHJldHVybnMgdGhlCi0gICBzeXMubW9kdWxlcyBlbnRyeSBmb3IgZm9vLmJhci4gIElmIGdsb2JhbHMgaXMgZnJvbSBhIHBhY2thZ2UncyBfX2luaXRfXy5weSwKLSAgIHRoZSBwYWNrYWdlJ3MgZW50cnkgaW4gc3lzLm1vZHVsZXMgaXMgcmV0dXJuZWQsIGFzIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotCi0gICBUaGUgKm5hbWUqIG9mIHRoZSByZXR1cm5lZCBwYWNrYWdlIGlzIHJldHVybmVkIGluIGJ1Ziwgd2l0aCB0aGUgbGVuZ3RoIG9mCi0gICB0aGUgbmFtZSBpbiAqcF9idWZsZW4uCi0KLSAgIElmIGdsb2JhbHMgZG9lc24ndCBjb21lIGZyb20gYSBwYWNrYWdlIG9yIGEgbW9kdWxlIGluIGEgcGFja2FnZSwgb3IgYQotICAgY29ycmVzcG9uZGluZyBlbnRyeSBpcyBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMsIFB5X05vbmUgaXMgcmV0dXJuZWQuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLWdldF9wYXJlbnQoUHlPYmplY3QgKmdsb2JhbHMsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCAqcF9idWZsZW4sIGludCBsZXZlbCkKLXsKLSAgICBzdGF0aWMgUHlPYmplY3QgKm5hbWVzdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcGF0aHN0ciA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwa2dzdHIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpwa2duYW1lLCAqbW9kbmFtZSwgKm1vZHBhdGgsICptb2R1bGVzLCAqcGFyZW50OwotICAgIGludCBvcmlnX2xldmVsID0gbGV2ZWw7Ci0KLSAgICBpZiAoZ2xvYmFscyA9PSBOVUxMIHx8ICFQeURpY3RfQ2hlY2soZ2xvYmFscykgfHwgIWxldmVsKQotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLQotICAgIGlmIChuYW1lc3RyID09IE5VTEwpIHsKLSAgICAgICAgbmFtZXN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZXN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwYXRoc3RyID09IE5VTEwpIHsKLSAgICAgICAgcGF0aHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3BhdGhfXyIpOwotICAgICAgICBpZiAocGF0aHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChwa2dzdHIgPT0gTlVMTCkgewotICAgICAgICBwa2dzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19wYWNrYWdlX18iKTsKLSAgICAgICAgaWYgKHBrZ3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgKmJ1ZiA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gMDsKLSAgICBwa2duYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgcGtnc3RyKTsKLQotICAgIGlmICgocGtnbmFtZSAhPSBOVUxMKSAmJiAocGtnbmFtZSAhPSBQeV9Ob25lKSkgewotICAgICAgICAvKiBfX3BhY2thZ2VfXyBpcyBzZXQsIHNvIHVzZSBpdCAqLwotICAgICAgICBjaGFyICpwa2duYW1lX3N0cjsKLSAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGtnbmFtZSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX3BhY2thZ2VfXyBzZXQgdG8gbm9uLXN0cmluZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGtnbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShwa2duYW1lLCAmbGVuKTsKLSAgICAgICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGluIG5vbi1wYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobGVuID4gTUFYUEFUSExFTikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhY2thZ2UgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyY3B5KGJ1ZiwgcGtnbmFtZV9zdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIF9fcGFja2FnZV9fIG5vdCBzZXQsIHNvIGZpZ3VyZSBpdCBvdXQgYW5kIHNldCBpdCAqLwotICAgICAgICBtb2RuYW1lID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgbmFtZXN0cik7Ci0gICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotCi0gICAgICAgIG1vZHBhdGggPSBQeURpY3RfR2V0SXRlbShnbG9iYWxzLCBwYXRoc3RyKTsKLSAgICAgICAgaWYgKG1vZHBhdGggIT0gTlVMTCkgewotICAgICAgICAgICAgLyogX19wYXRoX18gaXMgc2V0LCBzbyBtb2RuYW1lIGlzIGFscmVhZHkgdGhlIHBhY2thZ2UgbmFtZSAqLwotICAgICAgICAgICAgY2hhciAqbW9kbmFtZV9zdHI7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGludCBlcnJvcjsKLQotICAgICAgICAgICAgbW9kbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShtb2RuYW1lLCAmbGVuKTsKLSAgICAgICAgICAgIGlmIChsZW4gPiBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgbW9kbmFtZV9zdHIpOwotICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIG1vZG5hbWUpOwotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBOb3JtYWwgbW9kdWxlLCBzbyB3b3JrIG91dCB0aGUgcGFja2FnZSBuYW1lIGlmIGFueSAqLwotICAgICAgICAgICAgY2hhciAqc3RhcnQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG1vZG5hbWUpOwotICAgICAgICAgICAgY2hhciAqbGFzdGRvdCA9IHN0cnJjaHIoc3RhcnQsICcuJyk7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgaW50IGVycm9yOwotICAgICAgICAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCAmJiBsZXZlbCA+IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgaW4gbm9uLXBhY2thZ2UiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGVuID0gbGFzdGRvdCAtIHN0YXJ0OwotICAgICAgICAgICAgaWYgKGxlbiA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIHN0YXJ0LCBsZW4pOwotICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgcGtnbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgICAgICBpZiAocGtnbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlcnJvciA9IFB5RGljdF9TZXRJdGVtKGdsb2JhbHMsIHBrZ3N0ciwgcGtnbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGtnbmFtZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBzZXQgX19wYWNrYWdlX18iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoLS1sZXZlbCA+IDApIHsKLSAgICAgICAgY2hhciAqZG90ID0gc3RycmNocihidWYsICcuJyk7Ci0gICAgICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgIkF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kICIKLSAgICAgICAgICAgICAgICAidG9wbGV2ZWwgcGFja2FnZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgKmRvdCA9ICdcMCc7Ci0gICAgfQotICAgICpwX2J1ZmxlbiA9IHN0cmxlbihidWYpOwotCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBwYXJlbnQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBidWYpOwotICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICBpZiAob3JpZ19sZXZlbCA8IDEpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICplcnJfbXNnID0gUHlCeXRlc19Gcm9tRm9ybWF0KAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBmb3VuZCAiCi0gICAgICAgICAgICAgICAgIndoaWxlIGhhbmRsaW5nIGFic29sdXRlIGltcG9ydCIsIGJ1Zik7Ci0gICAgICAgICAgICBpZiAoZXJyX21zZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX1dhcm5FeChQeUV4Y19SdW50aW1lV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZXJyX21zZyksIDEpKSB7Ci0gICAgICAgICAgICAgICAgKmJ1ZiA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgKnBfYnVmbGVuID0gMDsKLSAgICAgICAgICAgICAgICBwYXJlbnQgPSBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGVycl9tc2cpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICclLjIwMHMnIG5vdCBsb2FkZWQsICIKLSAgICAgICAgICAgICAgICAiY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgaW1wb3J0IiwgYnVmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcGFyZW50OwotICAgIC8qIFdlIGV4cGVjdCwgYnV0IGNhbid0IGd1YXJhbnRlZSwgaWYgcGFyZW50ICE9IE5vbmUsIHRoYXQ6Ci0gICAgICAgLSBwYXJlbnQuX19uYW1lX18gPT0gYnVmCi0gICAgICAgLSBwYXJlbnQuX19kaWN0X18gaXMgZ2xvYmFscwotICAgICAgIElmIHRoaXMgaXMgdmlvbGF0ZWQuLi4gIFdobyBjYXJlcz8gKi8KLX0KLQotLyogYWx0bW9kIGlzIGVpdGhlciBOb25lIG9yIHNhbWUgYXMgbW9kICovCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9uZXh0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICphbHRtb2QsIGNoYXIgKipwX25hbWUsIGNoYXIgKmJ1ZiwKLSAgICAgICAgICBQeV9zc2l6ZV90ICpwX2J1ZmxlbikKLXsKLSAgICBjaGFyICpuYW1lID0gKnBfbmFtZTsKLSAgICBjaGFyICpkb3QgPSBzdHJjaHIobmFtZSwgJy4nKTsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIGlmIChzdHJsZW4obmFtZSkgPT0gMCkgewotICAgICAgICAvKiBjb21wbGV0ZWx5IGVtcHR5IG1vZHVsZSBuYW1lIHNob3VsZCBvbmx5IGhhcHBlbiBpbgotICAgICAgICAgICAnZnJvbSAuIGltcG9ydCcgKG9yICdfX2ltcG9ydF9fKCIiKScpKi8KLSAgICAgICAgUHlfSU5DUkVGKG1vZCk7Ci0gICAgICAgICpwX25hbWUgPSBOVUxMOwotICAgICAgICByZXR1cm4gbW9kOwotICAgIH0KLQotICAgIGlmIChkb3QgPT0gTlVMTCkgewotICAgICAgICAqcF9uYW1lID0gTlVMTDsKLSAgICAgICAgbGVuID0gc3RybGVuKG5hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKnBfbmFtZSA9IGRvdCsxOwotICAgICAgICBsZW4gPSBkb3QtbmFtZTsKLSAgICB9Ci0gICAgaWYgKGxlbiA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IG1vZHVsZSBuYW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHAgPSBidWYgKyAqcF9idWZsZW47Ci0gICAgaWYgKHAgIT0gYnVmKQotICAgICAgICAqcCsrID0gJy4nOwotICAgIGlmIChwK2xlbi1idWYgPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RybmNweShwLCBuYW1lLCBsZW4pOwotICAgIHBbbGVuXSA9ICdcMCc7Ci0gICAgKnBfYnVmbGVuID0gcCtsZW4tYnVmOwotCi0gICAgcmVzdWx0ID0gaW1wb3J0X3N1Ym1vZHVsZShtb2QsIHAsIGJ1Zik7Ci0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGFsdG1vZCAhPSBtb2QpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIC8qIEhlcmUsIGFsdG1vZCBtdXN0IGJlIE5vbmUgYW5kIG1vZCBtdXN0IG5vdCBiZSBOb25lICovCi0gICAgICAgIHJlc3VsdCA9IGltcG9ydF9zdWJtb2R1bGUoYWx0bW9kLCBwLCBwKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBpZiAobWFya19taXNzKGJ1ZikgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybmNweShidWYsIG5hbWUsIGxlbik7Ci0gICAgICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICAqcF9idWZsZW4gPSBsZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIk5vIG1vZHVsZSBuYW1lZCAlLjIwMHMiLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGludAotbWFya19taXNzKGNoYXIgKm5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIFB5X05vbmUpOwotfQotCi1zdGF0aWMgaW50Ci1lbnN1cmVfZnJvbWxpc3QoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmZyb21saXN0LCBjaGFyICpidWYsIFB5X3NzaXplX3QgYnVmbGVuLAotICAgICAgICAgICAgICAgIGludCByZWN1cnNpdmUpCi17Ci0gICAgaW50IGk7Ci0KLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcobW9kLCAiX19wYXRoX18iKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBmb3IgKGkgPSAwOyA7IGkrKykgewotICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShmcm9tbGlzdCwgaSk7Ci0gICAgICAgIGludCBoYXNpdDsKLSAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW5kZXhFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkl0ZW0gaW4gYGBmcm9tIGxpc3QnJyBub3QgYSBzdHJpbmciKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQVNfVU5JQ09ERShpdGVtKVswXSA9PSAnKicpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphbGw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAvKiBTZWUgaWYgdGhlIHBhY2thZ2UgZGVmaW5lcyBfX2FsbF9fICovCi0gICAgICAgICAgICBpZiAocmVjdXJzaXZlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBBdm9pZCBlbmRsZXNzIHJlY3Vyc2lvbiAqLwotICAgICAgICAgICAgYWxsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsICJfX2FsbF9fIik7Ci0gICAgICAgICAgICBpZiAoYWxsID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGludCByZXQgPSBlbnN1cmVfZnJvbWxpc3QobW9kLCBhbGwsIGJ1ZiwgYnVmbGVuLCAxKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYWxsKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJldCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBoYXNpdCA9IFB5T2JqZWN0X0hhc0F0dHIobW9kLCBpdGVtKTsKLSAgICAgICAgaWYgKCFoYXNpdCkgewotICAgICAgICAgICAgUHlPYmplY3QgKml0ZW04OwotICAgICAgICAgICAgY2hhciAqc3VibmFtZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJtb2Q7Ci0gICAgICAgICAgICBjaGFyICpwOwotICAgICAgICAgICAgaXRlbTggPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGl0ZW0pOwotICAgICAgICAgICAgaWYgKCFpdGVtOCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IGVuY29kZSBwYXRoIGl0ZW0iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN1Ym5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtOCk7Ci0gICAgICAgICAgICBpZiAoYnVmbGVuICsgc3RybGVuKHN1Ym5hbWUpID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBuYW1lIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcCA9IGJ1ZiArIGJ1ZmxlbjsKLSAgICAgICAgICAgICpwKysgPSAnLic7Ci0gICAgICAgICAgICBzdHJjcHkocCwgc3VibmFtZSk7Ci0gICAgICAgICAgICBzdWJtb2QgPSBpbXBvcnRfc3VibW9kdWxlKG1vZCwgc3VibmFtZSwgYnVmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtOCk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHN1Ym1vZCk7Ci0gICAgICAgICAgICBpZiAoc3VibW9kID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLX0KLQotc3RhdGljIGludAotYWRkX3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqc3VibW9kLCBjaGFyICpmdWxsbmFtZSwgY2hhciAqc3VibmFtZSwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZXMpCi17Ci0gICAgaWYgKG1vZCA9PSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gMTsKLSAgICAvKiBJcnJlc3BlY3RpdmUgb2YgdGhlIHN1Y2Nlc3Mgb2YgdGhpcyBsb2FkLCBtYWtlIGEKLSAgICAgICByZWZlcmVuY2UgdG8gaXQgaW4gdGhlIHBhcmVudCBwYWNrYWdlIG1vZHVsZS4gIEEgY29weSBnZXRzCi0gICAgICAgc2F2ZWQgaW4gdGhlIG1vZHVsZXMgZGljdGlvbmFyeSB1bmRlciB0aGUgZnVsbCBuYW1lLCBzbyBnZXQgYQotICAgICAgIHJlZmVyZW5jZSBmcm9tIHRoZXJlLCBpZiBuZWVkIGJlLiAgKFRoZSBleGNlcHRpb24gaXMgd2hlbiB0aGUKLSAgICAgICBsb2FkIGZhaWxlZCB3aXRoIGEgU3ludGF4RXJyb3IgLS0gdGhlbiB0aGVyZSdzIG5vIHRyYWNlIGluCi0gICAgICAgc3lzLm1vZHVsZXMuICBJbiB0aGF0IGNhc2UsIG9mIGNvdXJzZSwgZG8gbm90aGluZyBleHRyYS4pICovCi0gICAgaWYgKHN1Ym1vZCA9PSBOVUxMKSB7Ci0gICAgICAgIHN1Ym1vZCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIGZ1bGxuYW1lKTsKLSAgICAgICAgaWYgKHN1Ym1vZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGlmIChQeU1vZHVsZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgIC8qIFdlIGNhbid0IHVzZSBzZXRhdHRyIGhlcmUgc2luY2UgaXQgY2FuIGdpdmUgYQotICAgICAgICAgKiBzcHVyaW91cyB3YXJuaW5nIGlmIHRoZSBzdWJtb2R1bGUgbmFtZSBzaGFkb3dzIGEKLSAgICAgICAgICogYnVpbHRpbiBuYW1lICovCi0gICAgICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2QpOwotICAgICAgICBpZiAoIWRpY3QpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhtb2QsIHN1Ym5hbWUsIHN1Ym1vZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wb3J0X3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBjaGFyICpzdWJuYW1lLCBjaGFyICpmdWxsbmFtZSkKLXsKLSAgICBQeU9iamVjdCAqbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KLSAgICAvKiBSZXF1aXJlOgotICAgICAgIGlmIG1vZCA9PSBOb25lOiBzdWJuYW1lID09IGZ1bGxuYW1lCi0gICAgICAgZWxzZTogbW9kLl9fbmFtZV9fICsgIi4iICsgc3VibmFtZSA9PSBmdWxsbmFtZQotICAgICovCi0KLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBmdWxsbmFtZSkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhdGgsICpsb2FkZXIgPSBOVUxMOwotICAgICAgICBjaGFyICpidWY7Ci0gICAgICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICAgICAgRklMRSAqZnAgPSBOVUxMOwotCi0gICAgICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgIHBhdGggPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZCwgIl9fcGF0aF9fIik7Ci0gICAgICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgfQotICAgICAgICBidWZbMF0gPSAnXDAnOwotICAgICAgICBmZHAgPSBmaW5kX21vZHVsZShmdWxsbmFtZSwgc3VibmFtZSwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmcCwgJmxvYWRlcik7Ci0gICAgICAgIFB5X1hERUNSRUYocGF0aCk7Ci0gICAgICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0ltcG9ydEVycm9yKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgfQotICAgICAgICBtID0gbG9hZF9tb2R1bGUoZnVsbG5hbWUsIGZwLCBidWYsIGZkcC0+dHlwZSwgbG9hZGVyKTsKLSAgICAgICAgUHlfWERFQ1JFRihsb2FkZXIpOwotICAgICAgICBpZiAoZnApCi0gICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBpZiAoIWFkZF9zdWJtb2R1bGUobW9kLCBtLCBmdWxsbmFtZSwgc3VibmFtZSwgbW9kdWxlcykpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobSk7Ci0gICAgICAgICAgICBtID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgfQotCi0gICAgcmV0dXJuIG07CisgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QobmFtZW9iaiwgZ2xvYmFscywgbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2Q7CiB9CiAKIApAQCAtMjk4OSwxMDMgKzE1NTcsMjMgQEAKIFB5T2JqZWN0ICoKIFB5SW1wb3J0X1JlbG9hZE1vZHVsZShQeU9iamVjdCAqbSkKIHsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBQeU9iamVjdCAqbW9kdWxlc19yZWxvYWRpbmcgPSBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nOworICAgIF9QeV9JREVOVElGSUVSKHJlbG9hZCk7CisgICAgUHlPYmplY3QgKnJlbG9hZGVkX21vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMLCAqbG9hZGVyID0gTlVMTCwgKmV4aXN0aW5nX20gPSBOVUxMOwotICAgIGNoYXIgKm5hbWUsICpzdWJuYW1lOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuZXdtOwotCi0gICAgaWYgKG1vZHVsZXNfcmVsb2FkaW5nID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbXBvcnRfUmVsb2FkTW9kdWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgIm5vIG1vZHVsZXNfcmVsb2FkaW5nIGRpY3Rpb25hcnkhIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5T2JqZWN0ICppbXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiaW1wIik7CisgICAgaWYgKGltcCA9PSBOVUxMKSB7CisgICAgICAgIGltcCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiaW1wIik7CisgICAgICAgIGlmIChpbXAgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAobSA9PSBOVUxMIHx8ICFQeU1vZHVsZV9DaGVjayhtKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpIGFyZ3VtZW50IG11c3QgYmUgbW9kdWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBuYW1lID0gKGNoYXIqKVB5TW9kdWxlX0dldE5hbWUobSk7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG0gIT0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInJlbG9hZCgpOiBtb2R1bGUgJS4yMDBzIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGV4aXN0aW5nX20gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzX3JlbG9hZGluZywgbmFtZSk7Ci0gICAgaWYgKGV4aXN0aW5nX20gIT0gTlVMTCkgewotICAgICAgICAvKiBEdWUgdG8gYSByZWN1cnNpdmUgcmVsb2FkLCB0aGlzIG1vZHVsZSBpcyBhbHJlYWR5Ci0gICAgICAgICAgIGJlaW5nIHJlbG9hZGVkLiAqLwotICAgICAgICBQeV9JTkNSRUYoZXhpc3RpbmdfbSk7Ci0gICAgICAgIHJldHVybiBleGlzdGluZ19tOwotICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlc19yZWxvYWRpbmcsIG5hbWUsIG0pIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdWJuYW1lID0gc3RycmNocihuYW1lLCAnLicpOwotICAgIGlmIChzdWJuYW1lID09IE5VTEwpCi0gICAgICAgIHN1Ym5hbWUgPSBuYW1lOwogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqcGFyZW50bmFtZSwgKnBhcmVudDsKLSAgICAgICAgcGFyZW50bmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShuYW1lLCAoc3VibmFtZS1uYW1lKSk7Ci0gICAgICAgIGlmIChwYXJlbnRuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGFyZW50ID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgcGFyZW50bmFtZSk7Ci0gICAgICAgIGlmIChwYXJlbnQgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICJyZWxvYWQoKTogcGFyZW50ICVVIG5vdCBpbiBzeXMubW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgIHBhcmVudG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhcmVudG5hbWUpOwotICAgICAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYocGFyZW50bmFtZSk7Ci0gICAgICAgIHN1Ym5hbWUrKzsKLSAgICAgICAgcGF0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcocGFyZW50LCAiX19wYXRoX18iKTsKLSAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgYnVmWzBdID0gJ1wwJzsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShuYW1lLCBzdWJuYW1lLCBwYXRoLCBidWYsIE1BWFBBVEhMRU4rMSwgJmZwLCAmbG9hZGVyKTsKLSAgICBQeV9YREVDUkVGKHBhdGgpOwotCi0gICAgaWYgKGZkcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLSAgICAgICAgaW1wX21vZHVsZXNfcmVsb2FkaW5nX2NsZWFyKCk7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihpbXApOwogICAgIH0KIAotICAgIG5ld20gPSBsb2FkX21vZHVsZShuYW1lLCBmcCwgYnVmLCBmZHAtPnR5cGUsIGxvYWRlcik7Ci0gICAgUHlfWERFQ1JFRihsb2FkZXIpOwotCi0gICAgaWYgKGZwKQotICAgICAgICBmY2xvc2UoZnApOwotICAgIGlmIChuZXdtID09IE5VTEwpIHsKLSAgICAgICAgLyogbG9hZF9tb2R1bGUgcHJvYmFibHkgcmVtb3ZlZCBuYW1lIGZyb20gbW9kdWxlcyBiZWNhdXNlIG9mCi0gICAgICAgICAqIHRoZSBlcnJvci4gIFB1dCBiYWNrIHRoZSBvcmlnaW5hbCBtb2R1bGUgb2JqZWN0LiAgV2UncmUKLSAgICAgICAgICogZ29pbmcgdG8gcmV0dXJuIE5VTEwgaW4gdGhpcyBjYXNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotICAgICAgICAgKiByZXBsYWNpbmcgbmFtZSBzdWNjZWVkcywgc28gdGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLgotICAgICAgICAgKi8KLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSwgbSk7Ci0gICAgfQotICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICByZXR1cm4gbmV3bTsKKyAgICByZWxvYWRlZF9tb2R1bGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGltcCwgJlB5SWRfcmVsb2FkLCAiTyIsIG0pOworICAgIFB5X0RFQ1JFRihpbXApOworICAgIHJldHVybiByZWxvYWRlZF9tb2R1bGU7CiB9CiAKIApAQCAtMzE3NSw0OCArMTY2MywxOSBAQAogICAgIHJldHVybiByOwogfQogCi0KLS8qIE1vZHVsZSAnaW1wJyBwcm92aWRlcyBQeXRob24gYWNjZXNzIHRvIHRoZSBwcmltaXRpdmVzIHVzZWQgZm9yCi0gICBpbXBvcnRpbmcgbW9kdWxlcy4KLSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbWFrZV9tYWdpYyhsb25nIG1hZ2ljKQotewotICAgIGNoYXIgYnVmWzRdOwotCi0gICAgYnVmWzBdID0gKGNoYXIpICgobWFnaWMgPj4gIDApICYgMHhmZik7Ci0gICAgYnVmWzFdID0gKGNoYXIpICgobWFnaWMgPj4gIDgpICYgMHhmZik7Ci0gICAgYnVmWzJdID0gKGNoYXIpICgobWFnaWMgPj4gMTYpICYgMHhmZik7Ci0gICAgYnVmWzNdID0gKGNoYXIpICgobWFnaWMgPj4gMjQpICYgMHhmZik7Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIDQpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2dldF9tYWdpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICByZXR1cm4gaW1wX21ha2VfbWFnaWMocHljX21hZ2ljKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfdGFnKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQotewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhweWNfdGFnKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfc3VmZml4ZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitpbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIFB5T2JqZWN0ICpsaXN0OwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKKyAgICBjb25zdCBjaGFyICpzdWZmaXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4ID0gMDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChsaXN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoZmRwID0gX1B5SW1wb3J0X0ZpbGV0YWI7IGZkcC0+c3VmZml4ICE9IE5VTEw7IGZkcCsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlfQnVpbGRWYWx1ZSgic3NpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHAtPnN1ZmZpeCwgZmRwLT5tb2RlLCBmZHAtPnR5cGUpOworI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCisgICAgd2hpbGUgKChzdWZmaXggPSBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbaW5kZXhdKSkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHN1ZmZpeCk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzIyNywxMDIgKzE2ODYsMTkgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaW5kZXggKz0gMTsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gbGlzdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZmluZF9tb2R1bGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCi17Ci0gICAgZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKLSAgICBQeU9iamVjdCAqZm9iLCAqcmV0OwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIHN0cnVjdCBmaWxlZGVzY3IgKmZkcDsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgaW50IGZkID0gLTE7Ci0gICAgY2hhciAqZm91bmRfZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKHBhdGhuYW1lID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIHBhdGhuYW1lWzBdID0gJ1wwJzsKLSAgICBpZiAocGF0aCA9PSBQeV9Ob25lKQotICAgICAgICBwYXRoID0gTlVMTDsKLSAgICBmZHAgPSBmaW5kX21vZHVsZShOVUxMLCBuYW1lLCBwYXRoLCBwYXRobmFtZSwgTUFYUEFUSExFTisxLCAmZnAsIE5VTEwpOwotICAgIGlmIChmZHAgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIGlmIChmcCAhPSBOVUxMKSB7Ci0gICAgICAgIGZkID0gZmlsZW5vKGZwKTsKLSAgICAgICAgaWYgKGZkICE9IC0xKQotICAgICAgICAgICAgZmQgPSBkdXAoZmQpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBmcCA9IE5VTEw7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmZCAhPSAtMSkgewotICAgICAgICBpZiAoc3RyY2hyKGZkcC0+bW9kZSwgJ2InKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoKSByZXR1cm5zIFB5TWVtX01BTExPQydlZAotICAgICAgICAgICAgICAgbWVtb3J5LiAqLwotICAgICAgICAgICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoZmQpOwotICAgICAgICAgICAgbHNlZWsoZmQsIDAsIDApOyAvKiBSZXNldCBwb3NpdGlvbiAqLwotICAgICAgICAgICAgaWYgKGZvdW5kX2VuY29kaW5nID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbmNvZGluZyA9IChmb3VuZF9lbmNvZGluZyAhPSBOVUxMKSA/IGZvdW5kX2VuY29kaW5nIDoKLSAgICAgICAgICAgICAgICAgICAoY2hhciopUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwotICAgICAgICB9Ci0gICAgICAgIGZvYiA9IFB5RmlsZV9Gcm9tRmQoZmQsIHBhdGhuYW1lLCBmZHAtPm1vZGUsIC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKillbmNvZGluZywgTlVMTCwgTlVMTCwgMSk7Ci0gICAgICAgIGlmIChmb2IgPT0gTlVMTCkgewotICAgICAgICAgICAgY2xvc2UoZmQpOwotICAgICAgICAgICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvYiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihmb2IpOwotICAgIH0KLSAgICBwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgiTk4oc3NpKSIsCi0gICAgICAgICAgICAgICAgICBmb2IsIHBhdGhvYmosIGZkcC0+c3VmZml4LCBmZHAtPm1vZGUsIGZkcC0+dHlwZSk7Ci0gICAgUHlNZW1fRlJFRShmb3VuZF9lbmNvZGluZyk7Ci0gICAgUHlNZW1fRlJFRShwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3JfZXhpdDoKLSAgICBQeU1lbV9GUkVFKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9maW5kX21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnJldCwgKnBhdGggPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8TzpmaW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gY2FsbF9maW5kX21vZHVsZShQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSwgcGF0aCk7Ci0gICAgUHlfREVDUkVGKG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9idWlsdGluKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmluaXRfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aW5pdF9idWlsdGluIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXQgPSBpbml0X2J1aWx0aW4obmFtZSk7CiAgICAgaWYgKHJldCA8IDApCkBAIC0zMzMxLDcgKzE3MDcsNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKG5hbWUpOworICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgUHlfWElOQ1JFRihtKTsKICAgICByZXR1cm4gbTsKIH0KQEAgLTMzMzksMTkgKzE3MTUsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaW5pdF9mcm96ZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqbTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUobmFtZSk7CisgICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIGlmIChyZXQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIFB5X1hJTkNSRUYobSk7CiAgICAgcmV0dXJuIG07CiB9CkBAIC0zMzU5LDkgKzE3MzUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9nZXRfZnJvemVuX29iamVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBnZXRfZnJvemVuX29iamVjdChuYW1lKTsKIH0KQEAgLTMzNjksOSArMTc0NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbl9wYWNrYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIGlzX2Zyb3plbl9wYWNrYWdlKG5hbWUpOwogfQpAQCAtMzM3OSw4ICsxNzU1LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfaXNfYnVpbHRpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpc19idWlsdGluKG5hbWUpKTsKIH0KQEAgLTMzODgsMzMzICsxNzY0LDU0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2Zyb3plbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBzdHJ1Y3QgX2Zyb3plbiAqcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHAgPSBmaW5kX2Zyb3plbihuYW1lKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSAocCA9PSBOVUxMID8gMCA6IHAtPnNpemUpKTsKIH0KIAotc3RhdGljIEZJTEUgKgotZ2V0X2ZpbGUoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpmb2IsIGNoYXIgKm1vZGUpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKG1vZGVbMF0gPT0gJ1UnKQotICAgICAgICBtb2RlID0gInIiIFBZX1NURElPVEVYVE1PREU7Ci0gICAgaWYgKGZvYiA9PSBOVUxMKSB7Ci0gICAgICAgIGZwID0gZm9wZW4ocGF0aG5hbWUsIG1vZGUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaW50IGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihmb2IpOwotICAgICAgICBpZiAoZmQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgLyogdGhlIEZJTEUgc3RydWN0IGdldHMgYSBuZXcgZmQsIHNvIHRoYXQgaXQgY2FuIGJlIGNsb3NlZAotICAgICAgICAgKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgZ2l2ZW4KLSAgICAgICAgICovCi0gICAgICAgIGZkID0gZHVwKGZkKTsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZnAgPSBmZG9wZW4oZmQsIG1vZGUpOwotICAgIH0KLSAgICBpZiAoZnApCi0gICAgICAgIHJldHVybiBmcDsKLWVycm9yOgotICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX2NvbXBpbGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZm9iID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKLSAgICBGSUxFICpmcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJnxPOmxvYWRfY29tcGlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmb2IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGdldF9maWxlKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZm9iLCAicmIiKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbSA9IGxvYWRfY29tcGlsZWRfbW9kdWxlKG5hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZnApOwotICAgIGZjbG9zZShmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICByZXR1cm4gbTsKLX0KLQogI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfbG9hZF9keW5hbWljKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRoYnl0ZXM7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mfE86bG9hZF9keW5hbWljIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmZvYikpCisgICAgUHlPYmplY3QgKm5hbWUsICpwYXRobmFtZSwgKmZvYiA9IE5VTEwsICptb2Q7CisgICAgRklMRSAqZnA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPJnxPOmxvYWRfZHluYW1pYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aG5hbWUsICZmb2IpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRobmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyk7Ci0gICAgaWYgKGZvYikgewotICAgICAgICBmcCA9IGdldF9maWxlKHBhdGhuYW1lLCBmb2IsICJyIik7CisgICAgaWYgKGZvYiAhPSBOVUxMKSB7CisgICAgICAgIGZwID0gX1B5X2ZvcGVuKHBhdGhuYW1lLCAiciIpOwogICAgICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIG0gPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKKyAgICBlbHNlCisgICAgICAgIGZwID0gTlVMTDsKKyAgICBtb2QgPSBfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUobmFtZSwgcGF0aG5hbWUsIGZwKTsKKyAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwogICAgIGlmIChmcCkKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3NvdXJjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyZ8Tzpsb2FkX3NvdXJjZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZwID0gZ2V0X2ZpbGUoUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmb2IsICJyIik7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG0gPSBsb2FkX3NvdXJjZV9tb2R1bGUobmFtZSwgUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpLCBmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBmY2xvc2UoZnApOwotICAgIHJldHVybiBtOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2xvYWRfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmb2I7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGNoYXIgKnN1ZmZpeDsgLyogVW51c2VkICovCi0gICAgY2hhciAqbW9kZTsKLSAgICBpbnQgdHlwZTsKLSAgICBGSUxFICpmcDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic09PJihzc2kpOmxvYWRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsICZmb2IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4LCAmbW9kZSwgJnR5cGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKm1vZGUpIHsKLSAgICAgICAgLyogTW9kZSBtdXN0IHN0YXJ0IHdpdGggJ3InIG9yICdVJyBhbmQgbXVzdCBub3QgY29udGFpbiAnKycuCi0gICAgICAgICAgIEltcGxpY2l0IGluIHRoaXMgdGVzdCBpcyB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBtb2RlCi0gICAgICAgICAgIG1heSBjb250YWluIG90aGVyIG1vZGlmaWVycyBsaWtlICdiJyBvciAndCcuICovCi0KLSAgICAgICAgaWYgKCEoKm1vZGUgPT0gJ3InIHx8ICptb2RlID09ICdVJykgfHwgc3RyY2hyKG1vZGUsICcrJykpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZpbGUgb3BlbiBtb2RlICUuMjAwcyIsIG1vZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChmb2IgPT0gUHlfTm9uZSkKLSAgICAgICAgZnAgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBmcCA9IGdldF9maWxlKE5VTEwsIGZvYiwgbW9kZSk7Ci0gICAgICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0ID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgdHlwZSwgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICBpZiAoZnApCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX3BhY2thZ2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICogcmV0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mOmxvYWRfcGFja2FnZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IGxvYWRfcGFja2FnZShuYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSkpOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9uZXdfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpuZXdfbW9kdWxlIiwgJm5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlNb2R1bGVfTmV3KG5hbWUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX3JlbG9hZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCi17Ci0gICAgcmV0dXJuIFB5SW1wb3J0X1JlbG9hZE1vZHVsZSh2KTsKLX0KLQotUHlEb2NfU1RSVkFSKGRvY19yZWxvYWQsCi0icmVsb2FkKG1vZHVsZSkgLT4gbW9kdWxlXG5cCi1cblwKLVJlbG9hZCB0aGUgbW9kdWxlLiAgVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgaW1wb3J0ZWQgYmVmb3JlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX2NhY2hlX2Zyb21fc291cmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3cykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVidWdfb3ZlcnJpZGUiLCBOVUxMfTsKLQotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotICAgIGNoYXIgKmNwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqZGVidWdfb3ZlcnJpZGUgPSBOVUxMOwotICAgIGludCBkZWJ1ZyA9ICFQeV9PcHRpbWl6ZUZsYWc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJnxPIiwga3dsaXN0LAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhieXRlcywgJmRlYnVnX292ZXJyaWRlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVidWdfb3ZlcnJpZGUgIT0gTlVMTCAmJgotICAgICAgICAoZGVidWcgPSBQeU9iamVjdF9Jc1RydWUoZGVidWdfb3ZlcnJpZGUpKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgY3BhdGhuYW1lID0gbWFrZV9jb21waWxlZF9wYXRobmFtZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwKLSAgICAgICAgYnVmLCBNQVhQQVRITEVOKzEsIGRlYnVnKTsKLSAgICBQeV9ERUNSRUYocGF0aGJ5dGVzKTsKLQotICAgIGlmIChjcGF0aG5hbWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICJwYXRoIGJ1ZmZlciB0b28gc2hvcnQiKTsKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgewotICAgICAgICBQeU9iamVjdCAqcmV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChidWYpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotfQotCi1QeURvY19TVFJWQVIoZG9jX2NhY2hlX2Zyb21fc291cmNlLAotImNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtkZWJ1Z19vdmVycmlkZV0pIC0+IHBhdGhcblwKLUdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5Yy8ucHlvIGZpbGUuXG5cCi1cblwKLVRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZVxuXAotLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb25cblwKLXdpbGwgYmUgLnB5YyB1bmxlc3MgX19kZWJ1Z19fIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGl0IHdpbGwgYmUgLnB5by5cblwKLVxuXAotSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHRha2VuIGFzXG5cCi10aGUgdmFsdWUgb2YgX19kZWJ1Z19fIGluc3RlYWQuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfc291cmNlX2Zyb21fY2FjaGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dzKQotewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsIE5VTEx9OwotCi0gICAgUHlPYmplY3QgKnBhdGhuYW1lX29iajsKLSAgICBjaGFyICpwYXRobmFtZTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKLSAgICAgICAgICAgICAgICBhcmdzLCBrd3MsICJPJiIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZV9vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGhuYW1lID0gUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWVfb2JqKTsKLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGlmIChtYWtlX3NvdXJjZV9wYXRobmFtZShwYXRobmFtZSwgYnVmKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiTm90IGEgUEVQIDMxNDcgcHljIHBhdGg6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iaik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYmopOwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci19Ci0KLVB5RG9jX1NUUlZBUihkb2Nfc291cmNlX2Zyb21fY2FjaGUsCi0ic291cmNlX2Zyb21fY2FjaGUocGF0aCkgLT4gcGF0aFxuXAotR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuXG5cCi1cblwKLVRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvXG5cCi10aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGhcblwKLWRvZXMgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcgZm9ybWF0LCBWYWx1ZUVycm9yIHdpbGwgYmUgcmFpc2VkLiIpOwogCiAvKiBEb2Mgc3RyaW5ncyAqLwogCiBQeURvY19TVFJWQVIoZG9jX2ltcCwKLSJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgY29tcG9uZW50cyBuZWVkZWQgdG8gYnVpbGQgeW91ciBvd25cblwKLV9faW1wb3J0X18gZnVuY3Rpb24uICBVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIGFyZSBvYnNvbGV0ZS4iKTsKKyIoRXh0cmVtZWx5KSBsb3ctbGV2ZWwgaW1wb3J0IG1hY2hpbmVyeSBiaXRzIGFzIHVzZWQgYnkgaW1wb3J0bGliIGFuZCBpbXAuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZmluZF9tb2R1bGUsCi0iZmluZF9tb2R1bGUobmFtZSwgW3BhdGhdKSAtPiAoZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKVxuXAotU2VhcmNoIGZvciBhIG1vZHVsZS4gIElmIHBhdGggaXMgb21pdHRlZCBvciBOb25lLCBzZWFyY2ggZm9yIGFcblwKLWJ1aWx0LWluLCBmcm96ZW4gb3Igc3BlY2lhbCBtb2R1bGUgYW5kIGNvbnRpbnVlIHNlYXJjaCBpbiBzeXMucGF0aC5cblwKLVRoZSBtb2R1bGUgbmFtZSBjYW5ub3QgY29udGFpbiAnLic7IHRvIHNlYXJjaCBmb3IgYSBzdWJtb2R1bGUgb2YgYVxuXAotcGFja2FnZSwgcGFzcyB0aGUgc3VibW9kdWxlIG5hbWUgYW5kIHRoZSBwYWNrYWdlJ3MgX19wYXRoX18uIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfbG9hZF9tb2R1bGUsCi0ibG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgZmlsZW5hbWUsIChzdWZmaXgsIG1vZGUsIHR5cGUpKSAtPiBtb2R1bGVcblwKLUxvYWQgYSBtb2R1bGUsIGdpdmVuIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IGZpbmRfbW9kdWxlKCkuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9tYWdpYywKLSJnZXRfbWFnaWMoKSAtPiBzdHJpbmdcblwKLVJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuIik7Ci0KLVB5RG9jX1NUUlZBUihkb2NfZ2V0X3RhZywKLSJnZXRfdGFnKCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF9zdWZmaXhlcywKLSJnZXRfc3VmZml4ZXMoKSAtPiBbKHN1ZmZpeCwgbW9kZSwgdHlwZSksIC4uLl1cblwKLVJldHVybiBhIGxpc3Qgb2YgKHN1ZmZpeCwgbW9kZSwgdHlwZSkgdHVwbGVzIGRlc2NyaWJpbmcgdGhlIGZpbGVzXG5cCi10aGF0IGZpbmRfbW9kdWxlKCkgbG9va3MgZm9yLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX25ld19tb2R1bGUsCi0ibmV3X21vZHVsZShuYW1lKSAtPiBtb2R1bGVcblwKLUNyZWF0ZSBhIG5ldyBtb2R1bGUuICBEbyBub3QgZW50ZXIgaXQgaW4gc3lzLm1vZHVsZXMuXG5cCi1UaGUgbW9kdWxlIG5hbWUgbXVzdCBpbmNsdWRlIHRoZSBmdWxsIHBhY2thZ2UgbmFtZSwgaWYgYW55LiIpOworUHlEb2NfU1RSVkFSKGRvY19leHRlbnNpb25fc3VmZml4ZXMsCisiZXh0ZW5zaW9uX3N1ZmZpeGVzKCkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCitSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKIAogUHlEb2NfU1RSVkFSKGRvY19sb2NrX2hlbGQsCiAibG9ja19oZWxkKCkgLT4gYm9vbGVhblxuXApAQCAtMzczNCwxNzkgKzE4MzEsMjggQEAKIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgaW1wX21ldGhvZHNbXSA9IHsKLSAgICB7ImZpbmRfbW9kdWxlIiwgICAgICBpbXBfZmluZF9tb2R1bGUsICBNRVRIX1ZBUkFSR1MsIGRvY19maW5kX21vZHVsZX0sCi0gICAgeyJnZXRfbWFnaWMiLCAgICAgICAgaW1wX2dldF9tYWdpYywgICAgTUVUSF9OT0FSR1MsICBkb2NfZ2V0X21hZ2ljfSwKLSAgICB7ImdldF90YWciLCAgICAgICAgICBpbXBfZ2V0X3RhZywgICAgICBNRVRIX05PQVJHUywgIGRvY19nZXRfdGFnfSwKLSAgICB7ImdldF9zdWZmaXhlcyIsIGltcF9nZXRfc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCAgZG9jX2dldF9zdWZmaXhlc30sCi0gICAgeyJsb2FkX21vZHVsZSIsICAgICAgaW1wX2xvYWRfbW9kdWxlLCAgTUVUSF9WQVJBUkdTLCBkb2NfbG9hZF9tb2R1bGV9LAotICAgIHsibmV3X21vZHVsZSIsICAgICAgIGltcF9uZXdfbW9kdWxlLCAgIE1FVEhfVkFSQVJHUywgZG9jX25ld19tb2R1bGV9LAorICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgaW1wX2V4dGVuc2lvbl9zdWZmaXhlcywgTUVUSF9OT0FSR1MsCisgICAgICAgIGRvY19leHRlbnNpb25fc3VmZml4ZXN9LAogICAgIHsibG9ja19oZWxkIiwgICAgICAgIGltcF9sb2NrX2hlbGQsICAgIE1FVEhfTk9BUkdTLCAgZG9jX2xvY2tfaGVsZH0sCiAgICAgeyJhY3F1aXJlX2xvY2siLCBpbXBfYWNxdWlyZV9sb2NrLCBNRVRIX05PQVJHUywgIGRvY19hY3F1aXJlX2xvY2t9LAogICAgIHsicmVsZWFzZV9sb2NrIiwgaW1wX3JlbGVhc2VfbG9jaywgTUVUSF9OT0FSR1MsICBkb2NfcmVsZWFzZV9sb2NrfSwKLSAgICB7InJlbG9hZCIsICAgICAgIGltcF9yZWxvYWQsICAgICAgIE1FVEhfTywgICAgICAgZG9jX3JlbG9hZH0sCi0gICAgeyJjYWNoZV9mcm9tX3NvdXJjZSIsIChQeUNGdW5jdGlvbilpbXBfY2FjaGVfZnJvbV9zb3VyY2UsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19jYWNoZV9mcm9tX3NvdXJjZX0sCi0gICAgeyJzb3VyY2VfZnJvbV9jYWNoZSIsIChQeUNGdW5jdGlvbilpbXBfc291cmNlX2Zyb21fY2FjaGUsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRvY19zb3VyY2VfZnJvbV9jYWNoZX0sCi0gICAgLyogVGhlIHJlc3QgYXJlIG9ic29sZXRlICovCiAgICAgeyJnZXRfZnJvemVuX29iamVjdCIsICAgICAgIGltcF9nZXRfZnJvemVuX29iamVjdCwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19mcm96ZW5fcGFja2FnZSIsICAgaW1wX2lzX2Zyb3plbl9wYWNrYWdlLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfYnVpbHRpbiIsICAgICAgICAgICAgaW1wX2luaXRfYnVpbHRpbiwgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImluaXRfZnJvemVuIiwgICAgICAgICAgICAgaW1wX2luaXRfZnJvemVuLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2J1aWx0aW4iLCAgICAgICAgICAgICAgaW1wX2lzX2J1aWx0aW4sICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImlzX2Zyb3plbiIsICAgICAgICAgICAgICAgaW1wX2lzX2Zyb3plbiwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxvYWRfY29tcGlsZWQiLCAgICAgICAgICAgaW1wX2xvYWRfY29tcGlsZWQsICAgICAgTUVUSF9WQVJBUkdTfSwKICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogICAgIHsibG9hZF9keW5hbWljIiwgICAgICAgICAgICBpbXBfbG9hZF9keW5hbWljLCAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCi0gICAgeyJsb2FkX3BhY2thZ2UiLCAgICAgICAgICAgIGltcF9sb2FkX3BhY2thZ2UsICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkX3NvdXJjZSIsICAgICAgICAgICAgIGltcF9sb2FkX3NvdXJjZSwgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgICAgICAgIGltcF9maXhfY29fZmlsZW5hbWUsICAgIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIGludAotc2V0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgaW50IGVycjsKLQotICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdmFsdWUpOwotICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIGVycjsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLX0gTnVsbEltcG9ydGVyOwotCi1zdGF0aWMgaW50Ci1OdWxsSW1wb3J0ZXJfaW5pdChOdWxsSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gICAgaW50IHJ2OwotCi0gICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiTnVsbEltcG9ydGVyKCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpOdWxsSW1wb3J0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUocGF0aCkgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImVtcHR5IHBhdGhuYW1lIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBydiA9IHN0YXQoUHlCeXRlc19BU19TVFJJTkcocGF0aCksICZzdGF0YnVmKTsKLSAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgaWYgKHJ2ID09IDApIHsKLSAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgIGlmIChTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBkaXJlY3RvcnkgKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImV4aXN0aW5nIGRpcmVjdG9yeSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIFB5T2JqZWN0ICpwYXRob2JqOwotICAgIERXT1JEIHJ2OwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKCJOdWxsSW1wb3J0ZXIoKSIsIGt3ZHMpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6TnVsbEltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhdGhvYmopKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHBhdGhvYmopID09IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiZW1wdHkgcGF0aG5hbWUiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhwYXRob2JqLCBOVUxMKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgLyogc2VlIGlzc3VlMTI5MyBhbmQgaXNzdWUzNjc3OgotICAgICAqIHN0YXQoKSBvbiBXaW5kb3dzIGRvZXNuJ3QgcmVjb2duaXNlIHBhdGhzIGxpa2UKLSAgICAgKiAiZTpcXHNoYXJlZFxcIiBhbmQgIlxcXFx3aGl0ZXJhYi1jMnpubGhcXHNoYXJlZCIgYXMgZGlycy4KLSAgICAgKi8KLSAgICBydiA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoKTsKLSAgICBQeU1lbV9GcmVlKHBhdGgpOwotICAgIGlmIChydiAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAvKiBpdCBleGlzdHMgKi8KLSAgICAgICAgaWYgKHJ2ICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJleGlzdGluZyBkaXJlY3RvcnkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlKE51bGxJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBOdWxsSW1wb3J0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiZmluZF9tb2R1bGUiLCAoUHlDRnVuY3Rpb24pTnVsbEltcG9ydGVyX2ZpbmRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJBbHdheXMgcmV0dXJuIE5vbmUiCi0gICAgfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KLVB5VHlwZU9iamVjdCBQeU51bGxJbXBvcnRlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpbXAuTnVsbEltcG9ydGVyIiwgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKE51bGxJbXBvcnRlciksICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgIC8qdHBfZmxhZ3MqLwotICAgICJOdWxsIGltcG9ydGVyIG9iamVjdCIsICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgTnVsbEltcG9ydGVyX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpTnVsbEltcG9ydGVyX2luaXQsICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcgICAgICAgICAgLyogdHBfbmV3ICovCi19OwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGltcG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImltcCIsCisgICAgIl9pbXAiLAogICAgIGRvY19pbXAsCiAgICAgMCwKICAgICBpbXBfbWV0aG9kcywKQEAgLTM5MjEsOSArMTg2Nyw2IEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmltcG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwpAQCAtMzkzMSwxOSArMTg3NCw2IEBACiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsdXJlOwogCi0gICAgaWYgKHNldGludChkLCAiU0VBUkNIX0VSUk9SIiwgU0VBUkNIX0VSUk9SKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9TT1VSQ0UiLCBQWV9TT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0NPTVBJTEVEIiwgUFlfQ09NUElMRUQpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIkNfRVhURU5TSU9OIiwgQ19FWFRFTlNJT04pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX1JFU09VUkNFIiwgUFlfUkVTT1VSQ0UpIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBLR19ESVJFQ1RPUlkiLCBQS0dfRElSRUNUT1JZKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJDX0JVSUxUSU4iLCBDX0JVSUxUSU4pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0ZST1pFTiIsIFBZX0ZST1pFTikgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiUFlfQ09ERVJFU09VUkNFIiwgUFlfQ09ERVJFU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJJTVBfSE9PSyIsIElNUF9IT09LKSA8IDApIGdvdG8gZmFpbHVyZTsKLQotICAgIFB5X0lOQ1JFRigmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsSW1wb3J0ZXIiLCAoUHlPYmplY3QgKikmUHlOdWxsSW1wb3J0ZXJfVHlwZSk7CiAgICAgcmV0dXJuIG07CiAgIGZhaWx1cmU6CiAgICAgUHlfWERFQ1JFRihtKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggOWNhZWQ0NS4uOTQyZTRiOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTEyLDUwICsxMiw3MyBAQAogCiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkV2luZG93cyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCk7CisjZWxzZQorZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwotCi0KKyNlbmRpZgogCiBQeU9iamVjdCAqCi1fUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoY2hhciAqbmFtZSwgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgRklMRSAqZnApCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgY2hhciAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKKyAgICBQeU9iamVjdCAqbSA9IE5VTEw7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOworI2VuZGlmCisgICAgUHlPYmplY3QgKm5hbWVhc2NpaTsKKyAgICBjaGFyICpuYW1lc3RyLCAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKICAgICBkbF9mdW5jcHRyIHAwOwogICAgIFB5T2JqZWN0KiAoKnApKHZvaWQpOwogICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBwYXRoID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICBtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgcGF0aCk7CisgICAgaWYgKG0gIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYobSk7CisgICAgICAgIHJldHVybiBtOworICAgIH0KKworICAgIC8qIG5hbWUgbXVzdCBiZSBlbmNvZGFibGUgdG8gQVNDSUkgYmVjYXVzZSBkeW5hbWljIG1vZHVsZSBtdXN0IGhhdmUgYQorICAgICAgIGZ1bmN0aW9uIGNhbGxlZCAiUHlJbml0X05BTUUiLCB0aGV5IGFyZSB3cml0dGVuIGluIEMsIGFuZCB0aGUgQyBsYW5ndWFnZQorICAgICAgIGRvZXNuJ3QgYWNjZXB0IG5vbi1BU0NJSSBpZGVudGlmaWVycy4gKi8KKyAgICBuYW1lYXNjaWkgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOworICAgIGlmIChuYW1lYXNjaWkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoKG0gPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvblVuaWNvZGUobmFtZSwgcGF0aCkpICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgICAgICByZXN1bHQgPSBtOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWUsICcuJyk7CisgICAgbmFtZXN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWVhc2NpaSk7CisgICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWVzdHIsICcuJyk7CiAgICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCkgewogICAgICAgICBwYWNrYWdlY29udGV4dCA9IE5VTEw7Ci0gICAgICAgIHNob3J0bmFtZSA9IG5hbWU7CisgICAgICAgIHNob3J0bmFtZSA9IG5hbWVzdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWU7CisgICAgICAgIHBhY2thZ2Vjb250ZXh0ID0gbmFtZXN0cjsKICAgICAgICAgc2hvcnRuYW1lID0gbGFzdGRvdCsxOwogICAgIH0KIAotICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKG5hbWUsIHNob3J0bmFtZSwgcGF0aG5hbWUsIGZwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcDAgPSBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3Moc2hvcnRuYW1lLCBwYXRoLCBmcCk7CisjZWxzZQorICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKHNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpLCBmcCk7CisgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisjZW5kaWYKICAgICBwID0gKFB5T2JqZWN0KigqKSh2b2lkKSlwMDsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSBpbml0IGZ1bmN0aW9uIChQeUluaXRfJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiAoUHlJbml0XyVzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOworICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWUsIHBhdGgpOworICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKQEAgLTY2LDcgKzg5LDYgQEAKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0aW9uIG9mICVzIHJhaXNlZCB1bnJlcG9ydGVkIGV4Y2VwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOwpAQCAtODMsMjAgKzEwNSwxNSBAQAogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHBhdGgpOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUobSwgbmFtZSwgcGF0aCkgPCAwKQorICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobSwgbmFtZSwgcGF0aCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAiaW1wb3J0ICVzICMgZHluYW1pY2FsbHkgbG9hZGVkIGZyb20gJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgcmVzdWx0ID0gbTsKLSAgICBnb3RvIGZpbmFsbHk7CisgICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisgICAgcmV0dXJuIG07CiAKIGVycm9yOgotICAgIHJlc3VsdCA9IE5VTEw7Ci1maW5hbGx5OgotICAgIFB5X0RFQ1JFRihwYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIFB5X1hERUNSRUYobSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZiAvKiBIQVZFX0RZTkFNSUNfTE9BRElORyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmggYi9QeXRob24vaW1wb3J0ZGwuaAppbmRleCBiNGQyMWJlLi42YjljZjc1IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuaAorKysgYi9QeXRob24vaW1wb3J0ZGwuaApAQCAtNiwyOSArNiw5IEBACiAjZW5kaWYKIAogCi0vKiBEZWZpbml0aW9ucyBmb3IgZHluYW1pYyBsb2FkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzICovCi1lbnVtIGZpbGV0eXBlIHsKLSAgICBTRUFSQ0hfRVJST1IsCi0gICAgUFlfU09VUkNFLAotICAgIFBZX0NPTVBJTEVELAotICAgIENfRVhURU5TSU9OLAotICAgIFBZX1JFU09VUkNFLCAvKiBNYWMgb25seSAqLwotICAgIFBLR19ESVJFQ1RPUlksCi0gICAgQ19CVUlMVElOLAotICAgIFBZX0ZST1pFTiwKLSAgICBQWV9DT0RFUkVTT1VSQ0UsIC8qIE1hYyBvbmx5ICovCi0gICAgSU1QX0hPT0sKLX07CitleHRlcm4gY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107CiAKLXN0cnVjdCBmaWxlZGVzY3IgewotICAgIGNoYXIgKnN1ZmZpeDsKLSAgICBjaGFyICptb2RlOwotICAgIGVudW0gZmlsZXR5cGUgdHlwZTsKLX07Ci1leHRlcm4gc3RydWN0IGZpbGVkZXNjciAqIF9QeUltcG9ydF9GaWxldGFiOwotZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107Ci0KLWV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLAorZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKik7CiAKIC8qIE1heCBsZW5ndGggb2YgbW9kdWxlIHN1ZmZpeCBzZWFyY2hlZCBmb3IgLS0gYWNjb21tb2RhdGVzICJtb2R1bGUuc2xiIiAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkM2I0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTAsMCArMSw0MzkzIEBACisvKiBBdXRvLWdlbmVyYXRlZCBieSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMgKi8KK3Vuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0geworICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwMCwzLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsMTI5LDAsOTAsMSwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAorICAgIDIsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCwzLDAsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxNiwKKyAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsOCwwLDEwMCwxOCwwLDEwMCwxOSwwLAorICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEwMCwyMiwwLDEzMiwKKyAgICAxLDAsOTAsMTAsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMCwwLDkwLDExLAorICAgIDAsMTAxLDEyLDAsMTAxLDExLDAsMTA2LDEzLDAsMTMxLDEsMCw5MCwxNCwwLAorICAgIDEwMCwyNSwwLDEwMCwyNiwwLDEzMiwwLDAsOTAsMTUsMCwxMDUsMCwwLDkwLAorICAgIDE2LDAsMTA1LDAsMCw5MCwxNywwLDcxLDEwMCwyNywwLDEwMCwyOCwwLDEzMiwKKyAgICAwLDAsMTAwLDI4LDAsMTAxLDE4LDAsMTMxLDMsMCw5MCwxOSwwLDcxLDEwMCwKKyAgICAyOSwwLDEwMCwzMCwwLDEzMiwwLDAsMTAwLDMwLDAsMTMxLDIsMCw5MCwyMCwKKyAgICAwLDcxLDEwMCwzMSwwLDEwMCwzMiwwLDEzMiwwLDAsMTAwLDMyLDAsMTMxLDIsCisgICAgMCw5MCwyMSwwLDEwMCwzMywwLDEwMCwzNCwwLDEzMiwwLDAsOTAsMjIsMCwKKyAgICAxMDAsMzUsMCwxMDAsMzYsMCwxMzIsMCwwLDkwLDIzLDAsMTAwLDM3LDAsMTAwLAorICAgIDM4LDAsMTMyLDAsMCw5MCwyNCwwLDEwMCwzOSwwLDEwMSwyNSwwLDEwMCw0MCwKKyAgICAwLDEzMSwxLDAsMTAwLDQxLDAsNjIsNjYsMTAxLDI1LDAsMTAwLDQyLDAsMTMxLAorICAgIDEsMCwxMDAsNDMsMCw2Miw2Niw5MCwyNiwwLDEwMSwyNywwLDEwMCw0NCwwLAorICAgIDEwMCw0NSwwLDEzMiwwLDAsMTAxLDI4LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLAorICAgIDQ4LDAsMTMxLDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsOTAsMjksMCwxMDAsCisgICAgNDksMCw5MCwzMCwwLDEwMCw1MCwwLDEwMywxLDAsOTAsMzEsMCwxMDAsNTEsCisgICAgMCwxMDMsMSwwLDkwLDMyLDAsMTAwLDUyLDAsMTAzLDEsMCw5MCwzMywwLAorICAgIDEwMCwxMjgsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMSwwLDkwLDM1LDAsMTAwLAorICAgIDU1LDAsMTAwLDU2LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw1NywwLDEwMCw1OCwKKyAgICAwLDEzMiwwLDAsOTAsMzcsMCwxMDAsNTksMCwxMDAsNjAsMCwxMzIsMCwwLAorICAgIDkwLDM4LDAsMTAwLDYxLDAsMTAwLDYyLDAsMTMyLDAsMCw5MCwzOSwwLDEwMCwKKyAgICA2MywwLDEwMCw2NCwwLDEzMiwwLDAsOTAsNDAsMCwxMDAsNjUsMCwxMDAsNjYsCisgICAgMCwxMzIsMCwwLDkwLDQxLDAsMTAwLDY3LDAsMTAwLDY4LDAsMTMyLDAsMCwKKyAgICA5MCw0MiwwLDEwMCw2OSwwLDEwMCw3MCwwLDEzMiwwLDAsOTAsNDMsMCwxMDAsCisgICAgNzEsMCwxMDAsNzIsMCwxMzIsMCwwLDkwLDQ0LDAsMTAwLDczLDAsMTAwLDc0LAorICAgIDAsMTMyLDAsMCw5MCw0NSwwLDcxLDEwMCw3NSwwLDEwMCw3NiwwLDEzMiwwLAorICAgIDAsMTAwLDc2LDAsMTMxLDIsMCw5MCw0NiwwLDcxLDEwMCw3NywwLDEwMCw3OCwKKyAgICAwLDEzMiwwLDAsMTAwLDc4LDAsMTMxLDIsMCw5MCw0NywwLDcxLDEwMCw3OSwKKyAgICAwLDEwMCw4MCwwLDEzMiwwLDAsMTAwLDgwLDAsMTMxLDIsMCw5MCw0OCwwLAorICAgIDcxLDEwMCw4MSwwLDEwMCw4MiwwLDEzMiwwLDAsMTAwLDgyLDAsMTMxLDIsMCwKKyAgICA5MCw0OSwwLDcxLDEwMCw4MywwLDEwMCw4NCwwLDEzMiwwLDAsMTAwLDg0LDAsCisgICAgMTAxLDQ5LDAsMTMxLDMsMCw5MCw1MCwwLDcxLDEwMCw4NSwwLDEwMCw4NiwwLAorICAgIDEzMiwwLDAsMTAwLDg2LDAsMTMxLDIsMCw5MCw1MSwwLDcxLDEwMCw4NywwLAorICAgIDEwMCw4OCwwLDEzMiwwLDAsMTAwLDg4LDAsMTAxLDUxLDAsMTAxLDUwLDAsMTMxLAorICAgIDQsMCw5MCw1MiwwLDcxLDEwMCw4OSwwLDEwMCw5MCwwLDEzMiwwLDAsMTAwLAorICAgIDkwLDAsMTAxLDUxLDAsMTAxLDQ5LDAsMTMxLDQsMCw5MCw1MywwLDEwMywwLAorICAgIDAsOTAsNTQsMCw3MSwxMDAsOTEsMCwxMDAsOTIsMCwxMzIsMCwwLDEwMCw5MiwKKyAgICAwLDEzMSwyLDAsOTAsNTUsMCw3MSwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwKKyAgICAwLDEwMCw5NCwwLDEzMSwyLDAsOTAsNTYsMCw3MSwxMDAsOTUsMCwxMDAsOTYsCisgICAgMCwxMzIsMCwwLDEwMCw5NiwwLDEzMSwyLDAsOTAsNTcsMCw3MSwxMDAsOTcsCisgICAgMCwxMDAsOTgsMCwxMzIsMCwwLDEwMCw5OCwwLDEzMSwyLDAsOTAsNTgsMCwKKyAgICA3MSwxMDAsOTksMCwxMDAsMTAwLDAsMTMyLDAsMCwxMDAsMTAwLDAsMTMxLDIsMCwKKyAgICA5MCw1OSwwLDcxLDEwMCwxMDEsMCwxMDAsMTAyLDAsMTMyLDAsMCwxMDAsMTAyLDAsCisgICAgMTMxLDIsMCw5MCw2MCwwLDEwMCwxMDMsMCwxMDAsMTA0LDAsMTMyLDAsMCw5MCwKKyAgICA2MSwwLDEwMCwxMDUsMCwxMDAsMTA2LDAsMTMyLDAsMCw5MCw2MiwwLDEwMCwxMDcsCisgICAgMCwxMDAsMTA4LDAsMTMyLDAsMCw5MCw2MywwLDEwMCwxMDksMCw5MCw2NCwwLAorICAgIDEwMCwxMTAsMCwxMDAsMTExLDAsMTMyLDAsMCw5MCw2NSwwLDEwMCwxMTIsMCwxMDAsCisgICAgMTEzLDAsMTMyLDAsMCw5MCw2NiwwLDEwMCwxMjgsMCwxMDAsNDYsMCwxMDAsMTE0LAorICAgIDAsMTAwLDExNSwwLDEzMiwyLDAsOTAsNjcsMCwxMDAsMTE2LDAsMTAwLDExNywwLAorICAgIDEzMiwwLDAsOTAsNjgsMCwxMDAsMTE4LDAsMTAwLDExOSwwLDEzMiwwLDAsOTAsCisgICAgNjksMCwxMDAsMTIwLDAsMTAwLDEyMSwwLDEzMiwwLDAsOTAsNzAsMCwxMDAsMTI4LAorICAgIDAsMTAwLDEyOCwwLDEwMiwwLDAsMTAwLDQ2LDAsMTAwLDEyMiwwLDEwMCwxMjMsMCwKKyAgICAxMzIsNCwwLDkwLDcxLDAsMTAwLDEyNCwwLDEwMCwxMjUsMCwxMzIsMCwwLDkwLAorICAgIDcyLDAsMTAwLDEyNiwwLDEwMCwxMjcsMCwxMzIsMCwwLDkwLDczLDAsMTAwLDEyOCwKKyAgICAwLDgzLDQwLDEzMCwwLDAsMCwxMTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksCisgICAgMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LAorICAgIDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LAorICAgIDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsCisgICAgMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLAorICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsCisgICAgOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywKKyAgICAxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsCisgICAgOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDExNywKKyAgICAzLDAsMCwwLDExOSwxMDUsMTEwLDExNyw2LDAsMCwwLDk5LDEyMSwxMDMsMTE5LAorICAgIDEwNSwxMTAsMTE3LDYsMCwwLDAsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0OSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwKKyAgICAxMTYsMywwLDEzMSwxLDAsMTE0LDMzLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKKyAgICAwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsMywwLDEwMCwyLDAsMTMyLDAsCisgICAgMCwxMjUsMCwwLDEyNCwwLDAsODMsNDAsNCwwLDAsMCw3OCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDgzLAorICAgIDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNiwwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsMCwwLDg0LAorICAgIDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsCisgICAgMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsCisgICAgMTAxLDEwOCwxMjEsNDYsMTE1LDEyLDAsMCwwLDgwLDg5LDg0LDcyLDc5LDc4LDY3LAorICAgIDY1LDgzLDY5LDc5LDc1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTUsCisgICAgMTExLDExNSwxMTcsNywwLDAsMCwxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzNCwKKyAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDM3LDAsMCwwLDk1LAorICAgIDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCisgICAgOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNTMsMCwwLDAsODQsMTE0LDExNywxMDEsCisgICAgMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsCisgICAgMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywKKyAgICAxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSwKKyAgICA0Niw3MCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsCisgICAgMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LAorICAgIDExNSwxMDEsMzgsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDQwLDQsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDgsMCwwLDAsMTEyLAorICAgIDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LDExNCwKKyAgICAxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksCisgICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCisgICAgODQsNzAsNzksODIsNzcsODMsNDAsMSwwLDAsMCwxMTcsMTEsMCwwLDAsCisgICAgOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTA5LDk3LDEwNywKKyAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzIsMCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDE4LDEsMTUsNCwxMiwzLDExNywxNiwwLAorICAgIDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsCisgICAgMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMDgsMCwwLDAsMTE2LDAsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsMTI1LDAsMCwxMDMsMCwwLDEyNSwxLDAsMTI0LDEsCisgICAgMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTI0LAorICAgIDEsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDIsMCw2MywxMDAsMSwwLDY0LAorICAgIDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMywwLAorICAgIDYzLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDEyNCwxLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEwMCw0LDAsNjMsMTAwLDEsMCw2NCwxMzEsMSwwLDEsMTE2LDIsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsNSwwLDAsMCwxMTcsMTExLDAsCisgICAgMCwwLDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LAorICAgIDEwNSwxMTYsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwKKyAgICAxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4OCw4OCw4OCwzMiw4NCwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsCisgICAgMTE3LDExMCwxMTYsMTA1LDEwOCwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDM5LDExNSwzMiwKKyAgICAxMDgsMTExLDExMCwxMDMsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDEwMSwxMjAsMTEyLDExMSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMjU1LDAsMCwwLDEwNSw4LDAsMCwwLDEwNSwxNiwwLDAsMCwKKyAgICAxMDUsMjQsMCwwLDAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwxMDUsCisgICAgMTEwLDExNiwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw5LDAsCisgICAgMCwwLDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDQwLDIsMCwwLDAsCisgICAgMTE3LDEsMCwwLDAsMTIwLDExNyw5LDAsMCwwLDEwNSwxMTAsMTE2LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDUsMCwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsNiwxMiwxLDYsMSwxNywxLDIxLDEsMjEsCisgICAgMSwyMSwxLDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNjgsMCwwLDAsMTI0LDAsMCwxMDAsMSwwLDI1LAorICAgIDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwyLDAsMjUsMTAwLDMsMCwKKyAgICA2Miw3OSwxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsNCwwLDI1LDEwMCwKKyAgICA1LDAsNjIsNzksMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDYsMCwKKyAgICAyNSwxMDAsNywwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCw4Myw0MCw4LDAsCisgICAgMCwwLDExNywxMTUsMCwwLDAsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsNTIsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsMTEwLAorICAgIDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODgsODgsODgsMzIsCisgICAgODQsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDExNywxMTAsMTE2LDEwNSwxMDgsMzIsCisgICAgMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwzOSwxMTUsMzIsMTA4LDExMSwxMTAsMTAzLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMjAsMTEyLDExMSwKKyAgICAxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMDUsMCwwLDAsMCwxMDUsCisgICAgMSwwLDAsMCwxMDUsOCwwLDAsMCwxMDUsMiwwLDAsMCwxMDUsMTYsCisgICAgMCwwLDAsMTA1LDMsMCwwLDAsMTA1LDI0LDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsNDAsMiwwLDAsMCwxMTcsOSwwLDAsMCwxMDUsMTEwLDExNiw5NSwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDEsMCwwLDAsMTIwLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwKKyAgICAxMTEsMTEwLDEwMyw2MSwwLDAsMCwxMTUsMTAsMCwwLDAsMCw2LDEwLDEsCisgICAgMTgsMSwxOCwxLDE4LDEsMTE3LDcsMCwwLDAsOTUsMTE0LDk1LDEwOCwxMTEsCisgICAgMTEwLDEwMyw5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0LAorICAgIDAsMCwwLDcxLDAsMCwwLDExNSwxMDMsMCwwLDAsMTAzLDAsMCwxMjUsCisgICAgMSwwLDEyMCw3MSwwLDEyNCwwLDAsNjgsOTMsNjMsMCwxMjUsMiwwLDEyNCwKKyAgICAyLDAsMTE1LDMxLDAsMTEzLDEzLDAsMTEwLDAsMCwxMjQsMSwwLDEwNiwwLAorICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEsMTI0LDIsMCwxMDAsNCwwLDI1LDExNiwKKyAgICAxLDAsMTA3LDcsMCwxMTQsMTMsMCwxMjQsMSwwLDEwNiwwLDAsMTE2LDIsCisgICAgMCwxMzEsMSwwLDEsMTEzLDEzLDAsMTEzLDEzLDAsODcsMTAwLDIsMCwxMDYsCisgICAgMywwLDEyNCwxLDAsMTAwLDMsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTMxLAorICAgIDEsMCw4Myw0MCw2LDAsMCwwLDExNywzMSwwLDAsMCw4MiwxMDEsMTEyLAorICAgIDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LDEwNSwxLDAsMCwKKyAgICAwLDExNywwLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LAorICAgIDI1NSw0MCw0LDAsMCwwLDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LDExNCwKKyAgICA5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsMTE3LDQsMCwwLDAsMTA2LDExMSwxMDUsMTEwLDQwLDMsMCwwLDAsCisgICAgMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LDExNSwxMTcsCisgICAgOSwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LDQsMCwKKyAgICAwLDAsMTEyLDk3LDExNCwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsCisgICAgMTEwLDc0LDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsNiwxLDEzLDEsCisgICAgNiwxLDYsMSwxMywxLDE2LDEsMjAsMSwxMTcsMTAsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LAorICAgIDAsMCwwLDEyMCw0OCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDY4LAorICAgIDkzLDI4LDAsMTI1LDEsMCwxMjQsMSwwLDExNiwxLDAsMTA3LDYsMCwxMTQsCisgICAgMTMsMCwxMjQsMSwwLDEyNSwyLDAsODAsMTEzLDEzLDAsMTEzLDEzLDAsODcsCisgICAgMTE2LDIsMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwKKyAgICAxLDAsOTIsMywwLDEyNSwzLDAsMTI1LDQsMCwxMjUsNSwwLDEyNCwzLAorICAgIDAsMTI0LDUsMCwxMDIsMiwwLDgzLDQwLDEsMCwwLDAsMTE3LDMyLDAsCisgICAgMCwwLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAorICAgIDQxLDQ2LDQwLDQsMCwwLDAsMTE3LDgsMCwwLDAsMTE0LDEwMSwxMTgsMTAxLAorICAgIDExNCwxMTUsMTAxLDEwMCwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwKKyAgICAxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwKKyAgICAxMTYsMTA1LDExMSwxMTAsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsMSwwLDAsMCwxMjAsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTIsCisgICAgMTE3LDUsMCwwLDAsMTAyLDExNCwxMTEsMTEwLDExNiwxMTcsMSwwLDAsMCw5NSwKKyAgICAxMTcsNCwwLDAsMCwxMTYsOTcsMTA1LDEwOCw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTEyLDEwOCwxMDUsMTE2LDg2LDAsMCwwLDExNSwxNCwwLDAsMCwwLDIsCisgICAgMTksMSwxMiwxLDYsMSw4LDIsNiwxLDI0LDEsMTE3LDExLDAsMCwKKyAgICAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDYxLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjIsMCw0LDExNiwyLDAsCisgICAgMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsMTAwLDIsMCw4Myw4OSwxMTAsMSwKKyAgICAwLDg4LDEyNCwyLDAsMTA2LDQsMCwxMDAsMSwwLDY0LDEyNCwxLDAsMTA3LAorICAgIDIsMCw4Myw0MCwzLDAsMCwwLDExNyw0OSwwLDAsMCw4NCwxMDEsMTE1LAorICAgIDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTYsMTIxLDExMiwxMDEsNDYsMTA1LDAsCisgICAgMjQwLDAsMCw3MCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDk1LDExMSwKKyAgICAxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsMTE3LDcsMCwwLDAsNzksCisgICAgODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQwLDMsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTA5LAorICAgIDExMSwxMDAsMTAxLDExNyw5LDAsMCwwLDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAorICAgIDExMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOCwwLAorICAgIDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsOTgsMCwwLDAsMTE1LDEwLDAsMCwwLDAsMiwzLAorICAgIDEsMTksMSwxMywxLDksMSwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsODMsNDAsMiwwLDAsMCwxMTcsMzEsMCwwLDAsODIsCisgICAgMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsCisgICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLAorICAgIDEyOCwwLDAsNDAsMSwwLDAsMCwxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsMTA4LDAsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsCisgICAgMTI0LDAsMCwxMTUsMjEsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsCisgICAgMCwwLDExMCwwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MCwyLDAsMCwwLDExNywzMCwwLDAsMCw4MiwxMDEsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCw0NiwxMDUsMCw2NCwwLDAsNDAsCisgICAgMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw2LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk5LDExOSwxMDAsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE0LDAsMCwwLDExNSw2LDAsMCwKKyAgICAwLDAsMiw2LDEsMTUsMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxOTIsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTE2LAorICAgIDEsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCwxMjUsMywwLDExNiwyLAorICAgIDAsMTA2LDMsMCwxMjQsMywwLDExNiwyLDAsMTA2LDQsMCwxMTYsMiwwLAorICAgIDEwNiw1LDAsNjYsMTE2LDIsMCwxMDYsNiwwLDY2LDEyNCwyLDAsMTAwLDIsCisgICAgMCw2NCwxMzEsMywwLDEyNSw0LDAsMTIxLDYwLDAsMTE2LDcsMCwxMDYsOCwKKyAgICAwLDEyNCw0LDAsMTAwLDMsMCwxMzEsMiwwLDE0MywyMCwwLDEyNSw1LDAsCisgICAgMTI0LDUsMCwxMDYsOSwwLDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCw0LAorICAgIDAsODEsODgsMTE2LDIsMCwxMDYsMTAsMCwxMjQsMywwLDEyNCwwLDAsMTMxLAorICAgIDIsMCwxLDg3LDExMCw1OSwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4NywKKyAgICAwLDEsMSwxLDEyMSwxNywwLDExNiwyLDAsMTA2LDEyLDAsMTI0LDMsMCwKKyAgICAxMzEsMSwwLDEsODcsMTEwLDE4LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsCisgICAgMTc5LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMzAsMCwwLDg5LDExMCwxLAorICAgIDAsODgsMTAwLDQsMCw4Myw0MCw1LDAsMCwwLDExNywxNjIsMCwwLDAsCisgICAgNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLDExNywxMTAsOTksCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwzMiwxMDAsOTcsCisgICAgMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE2LDExMSwKKyAgICAxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLDY2LDEwMSwzMiwKKyAgICAxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwKKyAgICAxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsMTE0LDExNCwxMDEsCisgICAgMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsMTE3LDIsMCwwLDAsMTE5LDk4LDc4LDQwLDEzLDAsMCwwLDExNyw2LAorICAgIDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDIsMCwwLDAsMTA1LDEwMCwKKyAgICAxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExMSwxMTIsMTAxLAorICAgIDExMCwxMTcsNiwwLDAsMCw3OSw5NSw2OSw4OCw2Nyw3NiwxMTcsNywwLDAsCisgICAgMCw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwxMTcsOCwwLDAsMCw3OSw5NSw4NywKKyAgICA4Miw3OSw3OCw3Niw4OSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw2LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw1LDAsMCwwLDExOSwxMTQsMTA1LAorICAgIDExNiwxMDEsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTcsNywKKyAgICAwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTE3LAorICAgIDExMCwxMDgsMTA1LDExMCwxMDcsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNyw0LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDEwMSwxMTcsOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCisgICAgMTA5LDExMiwxMTcsMiwwLDAsMCwxMDIsMTAwLDExNyw0LDAsMCwwLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywKKyAgICAwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwKKyAgICAxMjEsMCwwLDAsMTE1LDI2LDAsMCwwLDAsNSwyNCwxLDksMSwzMywKKyAgICAxLDMsMywyMSwxLDE5LDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLAorICAgIDEsNSwxLDExNywxMywwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LAorICAgIDExNiwxMTEsMTA5LDEwNSw5OSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCw3LDAsMCwwLDY3LDAsMCwwLDExNSw5NSwwLDAsMCwxMjAsCisgICAgNjksMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LAorICAgIDAsNjgsOTMsNDksMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsCisgICAgMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLDEsCisgICAgMTEzLDE5LDAsMTEzLDE5LDAsODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsCisgICAgMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMSwxMDAsNSwwLDgzLDQwLDYsCisgICAgMCwwLDAsMTE3LDQ3LDAsMCwwLDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsMTE1LAorICAgIDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNywKKyAgICAxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwKKyAgICA3OCw0MCw1LDAsMCwwLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LAorICAgIDExNiwxMTQsMTE3LDcsMCwwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDcsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMTE3LDYsMCwwLDAsMTE3LDExMiwxMDAsOTcsCisgICAgMTE2LDEwMSw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDExMCwxMDEsMTE5LDExNywKKyAgICAzLDAsMCwwLDExMSwxMDgsMTAwLDExNyw3LDAsMCwwLDExNCwxMDEsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgNSwwLDAsMCw5NSwxMTksMTE0LDk3LDExMiwxNDMsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDI1LDEsMTUsMSwzMiwxLDExNyw1LDAsMCwwLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLAorICAgIDAsMTE2LDEsMCwxMzEsMSwwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MCwxLAorICAgIDAsMCwwLDExNyw3NSwwLDAsMCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsCisgICAgMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwMSwxMTAsMTE2LDEwMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsCisgICAgMTAxLDExNywzLDAsMCwwLDk1LDEwNSwxMTEsNDAsMSwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxNTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw2LDExNywxMCwwLAorICAgIDAsMCwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY2LDAsMCwKKyAgICAwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsNzgsNDAsMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LAorICAgIDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxNzEsMCwwLDAsMTE1LDIsMCwwLAorICAgIDAsMTYsMSwxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LAorICAgIDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMiwwLDAsMCw2NiwwLDAsMCwxMTUsODYsMCwwLDAsCisgICAgMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAorICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LDAsCisgICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKKyAgICA4LDAsMTAwLDEyLDAsODMsNDAsMTMsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTY5LDAsMCwwLAorICAgIDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwKKyAgICAzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSwKKyAgICA5NywxMDAsMzIsNDksMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsCisgICAgOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLAorICAgIDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwKKyAgICAzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiwKKyAgICA5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsCisgICAgMzIsNjUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzAsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwKKyAgICAyLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLAorICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsCisgICAgOTUsNiwwLDEwMCwxLDAsMTI0LDAsMCw5NSw3LDAsMTAwLDEsMCwxMjQsCisgICAgMCwwLDk1LDgsMCwxMDAsMCwwLDgzLDQwLDIsMCwwLDAsNzgsMTA1LAorICAgIDAsMCwwLDAsNDAsOSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNywxMywwLDAsMCw5NywxMDgsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw0LDAsMCwwLDEwOCwxMTEsOTksMTA3LAorICAgIDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDQsMCwwLDAsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDUsMCwKKyAgICAwLDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwKKyAgICAxMTYsMTE3LDcsMCwwLDAsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDAsMiwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsCisgICAgMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTgxLDAsMCwKKyAgICAwLDExNSwxMiwwLDAsMCwwLDEsMTUsMSwxNSwxLDksMSw5LDEsCisgICAgOSwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDg3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwyLDAsMTIwLDU5LDAsMTE2LDMsMCwKKyAgICAxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwzLDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCw1NSwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsCisgICAgMiwwLDEyNSwyLDAsMTI0LDIsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDI0LAorICAgIDAsMTAwLDIsMCw4MywxMTMsMjQsMCwxMDAsMCwwLDgzLDQwLDMsMCwwLAorICAgIDAsNzgsNzAsODQsNDAsOCwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDExNyw5LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsCisgICAgMTAxLDExMCwxMTYsMTE3LDUsMCwwLDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsMywKKyAgICAwLDAsMCwxMDMsMTAxLDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsCisgICAgNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsCisgICAgMTE3LDEwMSw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsMiwwLDAsMCwxMDksMTAxLDExNywzLDAsMCwwLDExNiwxMDUsMTAwLDExNywKKyAgICA0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywKKyAgICAxMDAsMTA4LDExMSw5OSwxMDcsMTg5LDAsMCwwLDExNSwxOCwwLDAsMCwwLDIsCisgICAgMTIsMSw5LDEsMywxLDE1LDEsMTIsMSw0LDEsOSwxLDEyLDEsCisgICAgMTE3LDI0LDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDE3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsCisgICAgMTI1LDEsMCwxMjQsMCwwLDExNiwyLDAsMTI0LDEsMCw2MCwxMjIsMTc3LDAsCisgICAgMTIwLDE3MCwwLDEyNCwwLDAsMTA2LDMsMCwxNDMsMTMwLDAsMSwxMjQsMCwwLAorICAgIDEwNiw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNSw2OCwwLDEyNCwwLDAsMTA2LAorICAgIDUsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDk2LDAsMTI0LDEsMCwxMjQsMCwKKyAgICAwLDk1LDUsMCwxMjQsMCwwLDQsMTA2LDQsMCwxMDAsMiwwLDU1LDIsCisgICAgOTUsNCwwLDEwMCw1LDAsODMsMTI0LDAsMCwxMDYsNywwLDEzMSwwLDAsCisgICAgMTE0LDEyNywwLDExNiw4LDAsMTAwLDMsMCwxMjQsMCwwLDIyLDEzMSwxLDAsCisgICAgMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMDAsCisgICAgNiwwLDEzMSwxLDAsMTE0LDE2MywwLDEyNCwwLDAsNCwxMDYsMTIsMCwxMDAsCisgICAgMiwwLDU1LDIsOTUsMTIsMCwxMTAsMCwwLDg3LDEwMCw0LDAsODEsODgsCisgICAgMTI0LDAsMCwxMDYsOSwwLDEwNiwxMCwwLDEzMSwwLDAsMSwxMjQsMCwwLAorICAgIDEwNiw5LDAsMTA2LDEzLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDEwMCw0LAorICAgIDAsMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw0LDAsODMsNDAsNywwLAorICAgIDAsMCwxMTcsMTg1LDAsMCwwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwKKyAgICAxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLAorICAgIDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsCisgICAgMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwKKyAgICAxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LAorICAgIDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsMTE3LDIzLDAsMCwwLDEwMCwKKyAgICAxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwKKyAgICAzMiw5OCwxMjEsMzIsMzcsMTE0LDc4LDg0LDcwLDQwLDE0LDAsMCwwLDExNyw3LAorICAgIDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDksMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTcsMTIsMCwwLDAsOTUsOTgsMTA4LAorICAgIDExMSw5OSwxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwxMTcsNCwwLDAsMCwxMDgsMTExLAorICAgIDk5LDEwNywxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDUsMCwwLAorICAgIDAsMTExLDExOSwxMTAsMTAxLDExNCwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTE5LDk3LDEwNywxMDEsMTE3LDExMiwxMTcsNywKKyAgICAwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNyw1LDAsMCwwLDcwLAorICAgIDk3LDEwOCwxMTUsMTAxLDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LAorICAgIDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLDIsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywzLDAsMCwwLDExNiwKKyAgICAxMDUsMTAwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsCisgICAgMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwyMDEsMCwwLDAsMTE1LDMyLAorICAgIDAsMCwwLDAsNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLAorICAgIDEsOSwxLDE1LDEsNCwxLDEyLDEsMTksMSwxOCwxLDI0LDIsMTMsCisgICAgMSwyMCwyLDExNywxOSwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LAorICAgIDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTY1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAorICAgIDAsMTI0LDAsMCwxMDYsMiwwLDE0MywxMzgsMCwxLDEyNCwwLDAsMTA2LDMsCisgICAgMCwxMjQsMSwwLDEwNywzLDAsMTE0LDUyLDAsMTE2LDQsMCwxMDAsMSwwLAorICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsCisgICAgMiwwLDEwNyw0LDAsMTE1LDczLDAsMTE2LDYsMCwxMzAsMSwwLDEyNCwwLAorICAgIDAsNCwxMDYsNSwwLDEwMCwzLDAsNTYsMiw5NSw1LDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTU1LDAsMTAwLDAsMCwxMjQsCisgICAgMCwwLDk1LDMsMCwxMjQsMCwwLDEwNiw4LDAsMTE0LDE1NSwwLDEyNCwwLAorICAgIDAsNCwxMDYsOCwwLDEwMCwzLDAsNTYsMiw5NSw4LDAsMTI0LDAsMCwKKyAgICAxMDYsOSwwLDEwNiwxMCwwLDEzMSwwLDAsMSwxMTMsMTU1LDAsMTEwLDAsMCwKKyAgICA4NywxMDAsMCwwLDgxLDg4LDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwKKyAgICAxMTcsMzEsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMTA1LDAsMCwwLDAsMTA1LDEsMCwwLDAsNDAsMTEsCisgICAgMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsCisgICAgOSwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwxMTAsMTE2LDExNyw0LDAsCisgICAgMCwwLDEwOCwxMTEsOTksMTA3LDExNyw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsCisgICAgMTE3LDEyLDAsMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDE0LDAsMCwwLAorICAgIDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LAorICAgIDEwMSwxMTQsMTE1LDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDcsCisgICAgMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDMsMCwwLDAsMTE2LDEwNSwxMDAsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsCisgICAgMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwyMjYsMCwwLDAsMTE1LDIyLDAsMCwKKyAgICAwLDAsMSwxMiwxLDEwLDEsMTUsMSwxNSwxLDIxLDEsMTUsMSwxNSwKKyAgICAxLDksMSw5LDEsMTUsMSwxMTcsMTksMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEwMiwyLDAsMjIsODMsCisgICAgNDAsMiwwLDAsMCw3OCwxMTcsMjEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDM3LDExNCw0MSwzMiw5NywxMTYsMzIsMzcsMTAwLAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDIsCisgICAgMCwwLDAsMTA1LDEwMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzksMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDExNywyMCwwLDAsMCw5NSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LAorICAgIDc4LDQwLDksMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTIsMCwwLAorICAgIDAsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxMTcsNywwLAorICAgIDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsCisgICAgMTA4LDEwMSw5NywxMTUsMTAxLDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDE3NSwwLDAsMCwxMTUsMTIsMCwwLDAsMTYsNCw2LDIsMTIsCisgICAgOCwxMiwxMiwxMiwyNSwxMiwxMywxMTcsMTEsMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDc0LDAsMCwKKyAgICAwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAorICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCisgICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCisgICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKKyAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQwLDExLDAsMCwwLAorICAgIDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDExNyw4NiwwLDAsMCw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLAorICAgIDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLAorICAgIDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsCisgICAgMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKKyAgICA5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTA1LDAsMCwwLDAsNDAsMiwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNSwwLDAsMCw5OSwxMTEsCisgICAgMTE3LDExMCwxMTYsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwKKyAgICAxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsMjQ3LDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsCisgICAgMTE3LDI1LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwKKyAgICAxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLAorICAgIDc4LDEwNSwxLDAsMCwwLDg0LDQwLDIsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTksMTExLDExNywxMTAsMTE2LDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDQwLAorICAgIDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwyNTEsMCwwLDAsMTE1LDQsMCwwLDAsMCwxLAorICAgIDE1LDEsMTE3LDI0LDAsMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAorICAgIDEsMCwxMDcsMiwwLDExNCwzMCwwLDExNiwxLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMywKKyAgICAwLDU2LDIsOTUsMCwwLDEwMCwwLDAsODMsNDAsNCwwLDAsMCw3OCwKKyAgICAxMDUsMCwwLDAsMCwxMTcsMzEsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LAorICAgIDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTA1LDEsMCwwLDAsNDAsMiwKKyAgICAwLDAsMCwxMTcsNSwwLDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDEyLDAsCisgICAgMCwwLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MCwxLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LAorICAgIDEwMSw5NywxMTUsMTAxLDI1NSwwLDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsCisgICAgMSwxNSwxLDExNywyNCwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIzLDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwKKyAgICAxMDYsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEwMiwyLDAsMjIsCisgICAgODMsNDAsMiwwLDAsMCw3OCwxMTcsMjYsMCwwLDAsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwzNywxMTQsNDEsCisgICAgMzIsOTcsMTE2LDMyLDM3LDEwMCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNywyLDAsMCwwLDEwNSwxMDAsNDAsMSwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTUsOTUsNCwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI1LDAsCisgICAgMCwwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQwLDgsMCwwLAorICAgIDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLAorICAgIDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLAorICAgIDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywKKyAgICAwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsNywwLDAsMCw5Nyw5OSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MCwxLDAsMCwKKyAgICAwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLAorICAgIDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAorICAgIDEwNywyNDMsMCwwLDAsMTE1LDEwLDAsMCwwLDE2LDIsNiwyLDEyLDQsCisgICAgMTIsNCwxMiw1LDExNywxNiwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDE0MiwKKyAgICAwLDAsMCwxMDAsMywwLDEyNSwxLDAsMTIxLDE3LDAsMTE2LDEsMCwxMzYsCisgICAgMCwwLDI1LDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwyLAorICAgIDAsMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsCisgICAgMSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDMsMCwxMDAsMywKKyAgICAwLDEwNyw4LDAsMTE0LDgzLDAsMTE2LDQsMCwxMzYsMCwwLDEzMSwxLDAsCisgICAgMTI1LDEsMCwxMTAsMTIsMCwxMTYsNSwwLDEzNiwwLDAsMTMxLDEsMCwxMjUsCisgICAgMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMiwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEyNCwyLDAsCisgICAgMTMxLDIsMCwxMTYsMSwwLDEzNiwwLDAsNjAsMTEwLDAsMCwxMjQsMSwwLAorICAgIDgzLDQwLDQsMCwwLDAsMTE3LDEwOSwwLDAsMCw3MSwxMDEsMTE2LDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywKKyAgICAxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLAorICAgIDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwKKyAgICAxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsMTE1LDExLDAsCisgICAgMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMSwwLDAsMCwxMTcsMTMsMCwwLDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQwLDEsMCwwLDAsMTE3LAorICAgIDEsMCwwLDAsOTUsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMiwwLDAsMCw5OSwKKyAgICA5OCwyNCwxLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI4LDAsMCwKKyAgICAwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5OSw5OCw3OCw0MCw4LAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMywwLDAsCisgICAgMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsMTE3LDgsCisgICAgMCwwLDAsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsCisgICAgOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsMTEsMCwwLAorICAgIDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNyw4LDAsMCwKKyAgICAwLDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDExNywzLDAsMCwwLDExNCwxMDEsCisgICAgMTAyLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LAorICAgIDQsMCwwLDAsMTA4LDExMSw5OSwxMDcsMTE3LDIsMCwwLDAsOTksOTgsNDAsCisgICAgMCwwLDAsMCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywKKyAgICAxMDksMTAxLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTAsMSwwLDAsMTE1LDI0LDAsCisgICAgMCwwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwKKyAgICAxMiwxLDE1LDIsMTIsMSwxOCwyLDI1LDEsMTE3LDE2LDAsMCwwLDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAorICAgIDEsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLAorICAgIDE0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCwKKyAgICA0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLAorICAgIDAsODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsMTE3LDIxLDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwKKyAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksCisgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSwKKyAgICA5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsCisgICAgMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwKKyAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsCisgICAgMzIsMTA1LDExNiwzMiwxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwKKyAgICAzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsCisgICAgMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCwKKyAgICA0MCw2LDAsMCwwLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNCwwLDAsMCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsCisgICAgMTA4LDExMSw5OSwxMDcsMTE3LDcsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsCisgICAgMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwKKyAgICAxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDI5LDEsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLDMsNSwKKyAgICAyLDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLAorICAgIDAsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsCisgICAgNDAsMSwwLDAsMCwxMTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE1LDMyLDEwNSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwKKyAgICAxMDgsMTA4LDMyLDk3LDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAzMiw5NywzMiw5OSw5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsCisgICAgMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiwKKyAgICA5NywzMiwxMTAsMTExLDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwKKyAgICAzMiwxMTIsMTA4LDk3LDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwKKyAgICAzMiwxMDUsMTEwLDExNiwxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywKKyAgICAxMTAsMTE2LDEwMSwxMDAsMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LAorICAgIDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDEsMTAsMzIsMzIsMzIsMzIsNDAsMCwwLDAsMCw0MCwzLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDEwMiwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLAorICAgIDExNSwxMTcsNCwwLDAsMCwxMDcsMTE5LDEwMCwxMTUsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsNDksMSwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNywKKyAgICAyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsCisgICAgMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMDUsMTU4LDEyLAorICAgIDAsMCwxMTcsMSwwLDAsMCwxMywxMDUsMTYsMCwwLDAsMTE3LDEsMCwKKyAgICAwLDAsMTAsMTA1LDI0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsOTksMCwwLDAsMTE1LDI5LDAsCisgICAgMCwwLDEyNCwwLDAsOTMsMTksMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsCisgICAgMCw2MywxMDAsMCwwLDY0LDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTA1LDI1NSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywKKyAgICAxNywwLDAsMCw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCwKKyAgICA4NSw3Nyw2Niw2OSw4Miw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LAorICAgIDQ4LDExNywxLDAsMCwwLDExMCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCwKKyAgICA2MiwxNTAsMSwwLDAsMTE1LDIsMCwwLDAsNiwwLDExNyw5LDAsMCwKKyAgICAwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMDUsMCwwLDAsMCwxMDUsCisgICAgMjUsMCwwLDAsMTA1LDgsMCwwLDAsMTE3LDExLDAsMCwwLDk1LDk1LAorICAgIDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSw5NSwxMTcsMywwLDAsMCw0NiwxMTIsCisgICAgMTIxLDExNyw0LDAsMCwwLDQ2LDExMiwxMjEsOTksMTE3LDQsMCwwLDAsNDYsCisgICAgMTEyLDEyMSwxMTEsOTksMiwwLDAsMCwwLDAsMCwwLDExLDAsMCwwLAorICAgIDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE4MCwwLDAsMCwxMjQsMSwwLAorICAgIDEwMCw1LDAsMTA3LDgsMCwxMTQsMjUsMCwxMTYsMSwwLDEwNiwyLDAsMTA2LAorICAgIDMsMCwxMiwxMTAsMywwLDEyNCwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNCwKKyAgICA0NiwwLDExNiw0LDAsMTI1LDMsMCwxMTAsNiwwLDExNiw1LDAsMTI1LDMsCisgICAgMCwxMTYsNiwwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwKKyAgICAxMjUsNSwwLDEyNCw1LDAsMTA2LDcsMCwxMDAsMSwwLDEzMSwxLDAsOTIsCisgICAgMywwLDEyNSw2LDAsMTI1LDcsMCwxMjUsOCwwLDExNiwxLDAsMTA2LDgsCisgICAgMCwxMDYsOSwwLDEyNSw5LDAsMTI0LDksMCwxMDAsNSwwLDEwNyw4LDAsCisgICAgMTE0LDEzMywwLDExNiwxMCwwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwKKyAgICAwLDAsMTAwLDMsMCwxMDYsMTEsMCwxMjQsNiwwLDEyNCw3LDAsMTI0LDksCisgICAgMCwxMjQsMywwLDEwMCw0LDAsMjUsMTAzLDQsMCwxMzEsMSwwLDEyNSwxMCwKKyAgICAwLDExNiwxMiwwLDEyNCw0LDAsMTE2LDEzLDAsMTI0LDEwLDAsMTMxLDMsMCwKKyAgICA4Myw0MCw2LDAsMCwwLDExNywyNDQsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsCisgICAgMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsCisgICAgMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiw5NywxMTUsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTksCisgICAgMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMTcsMTEwLAorICAgIDEwOCwxMDEsMTE1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLAorICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTEwLDQ1LDEyMiwKKyAgICAxMDEsMTE0LDExMSw0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMTksMTA1LDEwOCwKKyAgICAxMDgsMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsMTExLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiwxMDUsMTE2LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTcsCisgICAgMzIsOTgsMTExLDExMSwxMDgsMTAxLDk3LDExMCwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTUsMzIsCisgICAgMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTEyLDEwOCw5Nyw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDIsMTA4LDk3LDEwMywxMTUsNDYsMTExLAorICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNywKKyAgICAxLDAsMCwwLDQ2LDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LDAsCisgICAgMCwwLDAsMTA1LDAsMCwwLDAsNzgsNDAsMTQsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LAorICAgIDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw4LDAsMCwwLDExMSwxMTIsCisgICAgMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLAorICAgIDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDExNywyNywwLDAsMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsCisgICAgMTA1LDExNiwxMTcsOSwwLDAsMCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNywxNCwwLDAsMCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsMTE3LDksMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCisgICAgMTAzLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwwLDAsMTA2LDExMSwKKyAgICAxMDUsMTEwLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwKKyAgICAxMTAsMTE3LDgsMCwwLDAsOTUsODAsODksNjcsNjUsNjcsNzIsNjksNDAsMTEsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDE0LDAsMCwKKyAgICAwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDExNywKKyAgICA1LDAsMCwwLDEwMCwxMDEsOTgsMTE3LDEwMywxMTcsOCwwLDAsMCwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNyw0LDAsMCwwLDEwNCwxMDEsOTcsMTAwLDExNywKKyAgICA0LDAsMCwwLDExNiw5NywxMDUsMTA4LDExNywxMywwLDAsMCw5OCw5NywxMTUsCisgICAgMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMywwLDAsMCwxMTUsCisgICAgMTAxLDExMiwxMTcsMSwwLDAsMCw5NSwxMTcsMywwLDAsMCwxMTYsOTcsMTAzLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDE1OSwKKyAgICAxLDAsMCwxMTUsMjIsMCwwLDAsMCwxMywzMSwxLDYsMSw5LDIsCisgICAgNiwxLDE4LDEsMjQsMSwxMiwxLDEyLDEsMTUsMSwzMSwxLDExNywxNywKKyAgICAwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMDAsNywwLDEwNyw4LDAsMTE0LDMzLDAsCisgICAgMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDExNiwKKyAgICA1LDAsMTI0LDAsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLAorICAgIDAsMTE2LDUsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsCisgICAgMTI1LDMsMCwxMjQsMywwLDExNiw2LDAsMTA3LDMsMCwxMTQsMTA4LDAsMTE2LAorICAgIDcsMCwxMDAsMiwwLDEwNiw4LDAsMTE2LDYsMCwxMjQsMCwwLDEzMSwyLAorICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsOSwwLAorICAgIDEwMCwzLDAsMTMxLDEsMCwxMDAsNCwwLDEwNywzLDAsMTE0LDE1MywwLDExNiwKKyAgICA3LDAsMTAwLDUsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiwxMCwwLDEwMCwzLDAsCisgICAgMTMxLDEsMCwxMDAsNiwwLDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDEsMCwKKyAgICAxMjQsNCwwLDExNiwxMiwwLDEwMCw2LDAsMjUsMjMsMTMxLDIsMCw4Myw0MCwKKyAgICA4LDAsMCwwLDExNywxMjEsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0Niw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksNDcsNDYsMTEyLDEyMSwKKyAgICAxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwKKyAgICAxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwKKyAgICAxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk5LDExMSwKKyAgICAxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLAorICAgIDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCisgICAgNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsMTA4LAorICAgIDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywKKyAgICAzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsCisgICAgMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDExNywzNiwwLDAsMCwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTE3LDM3LDAsMCwwLAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTcsMSwwLDAsMCw0NiwxMDUsMiwwLDAsMCwKKyAgICAxMTcsMjgsMCwwLDAsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwxMTAsCisgICAgMTA4LDEyMSwzMiw1MCwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSwxMDUsMCwwLDAsMCw3OCw0MCwxMywwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMTUsMTIxLDExNSwxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTksCisgICAgMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LDY1LAorICAgIDY3LDcyLDY5LDExNywxMCwwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNSwwLAorICAgIDAsMCw5OSwxMTEsMTE3LDExMCwxMTYsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsCisgICAgMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA2LDExMSwxMDUsMTEwLDExNywxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSwKKyAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCw1LDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwNCwxMDEsOTcsMTAwLDExNywKKyAgICAxNiwwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNyw3LDAsMCwwLDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMTcsMTMsMCwwLDAsOTgsOTcsMTE1LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxODYsMSwwLDAsMTE1LDI0LDAsMCwwLDAsOSwxOCwKKyAgICAxLDE1LDEsMTgsMSwxOCwxLDEyLDEsOSwxLDE4LDEsMjEsMSw5LAorICAgIDEsMTUsMSwxOSwxLDExNywxNywwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCw1LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsCisgICAgMCwxMDcsMiwwLDExNCwyMiwwLDEwMCw2LDAsODMsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLAorICAgIDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwzLDAsCisgICAgMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNSwwLAorICAgIDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsNCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDUsCisgICAgMCwxMTYsNiwwLDEwMiwyLDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLAorICAgIDExNiw3LDAsMTAwLDksMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LDQsMCwKKyAgICA4OSwxMTAsMSwwLDg4LDExNiw4LDAsMTE2LDksMCwxMzEsMSwwLDExNCwxNjAsCisgICAgMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDAsMTAsMCwwLDAsMTE3LDE4OCwKKyAgICAwLDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LAorICAgIDAsMCwwLDAsMTE3LDEsMCwwLDAsNDYsMTA1LDMsMCwwLDAsMTA1LAorICAgIDEsMCwwLDAsMTE3LDMsMCwwLDAsNDYsMTEyLDEyMSw3OCwxMDUsMjUzLDI1NSwKKyAgICAyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCwxMCwwLDAsCisgICAgMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSwxMTcsOSwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDE3LDAsMCwwLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LAorICAgIDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMiwwLDAsMCw5OCwxMjEsMTE2LDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwxMTcsMTIsMCwwLDAsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsNDAsNSwwLDAsMCwxMTcsCisgICAgMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDQsMCwwLDAsMTE0LDEwMSwxMTUsMTE2LDExNywxLDAsMCwwLDk1LAorICAgIDExNyw5LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDExNywxMSwKKyAgICAwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsMTAxLDIwOSwxLAorICAgIDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwxLDI0LDEsMzUsCisgICAgMSw0LDIsMywxLDE2LDEsMTksMSwyMSwyLDExNywxNSwwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLAorICAgIDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LAorICAgIDIsMCwxMTQsNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwKKyAgICAwLDExNSw0MCwwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExMCwwLAorICAgIDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDEsMCwxNDAsMCwwLAorICAgIDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwxLDEsMSwxMTAsMCwwLAorICAgIDEwMCw1LDAsODMsNDAsNywwLDAsMCwxMTcsNjEsMCwwLDAsODAsMTE0LAorICAgIDEwNSwxMTAsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLAorICAgIDExNiwxMTEsMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsCisgICAgODAsODksODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwKKyAgICAzMiwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDExNywxLDAsMCwwLAorICAgIDM1LDExNyw3LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNywyLDAsCisgICAgMCwwLDM1LDMyLDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSw3OCw0MCwyLAorICAgIDAsMCwwLDExNywxLDAsMCwwLDM1LDExNyw3LDAsMCwwLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDQwLDcsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDUsMCwwLDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw3LDAsMCwKKyAgICAwLDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDExNywxMCwwLDAsMCwxMTUsMTE2LDk3LAorICAgIDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTIsMTE0LDEwNSwxMTAsCisgICAgMTE2LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDYsMCwwLAorICAgIDAsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsNDAsMiwwLDAsMCwxMTcsNywwLDAsCisgICAgMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNCwwLDAsMCw5NywxMTQsMTAzLAorICAgIDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLAorICAgIDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsCisgICAgMTAzLDEwMSwyMzAsMSwwLDAsMTE1LDgsMCwwLDAsMCwyLDEyLDEsMTUsCisgICAgMSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwKKyAgICA5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsCisgICAgMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsCisgICAgMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsCisgICAgMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDM5LDAsMCwwLDgzLAorICAgIDEwMSwxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwwLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSwxMDEsMCwwLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTQyLDAsMCwxMjUsMiwwLDExNiwKKyAgICAwLDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKKyAgICAwLDEwNyw4LDAsMTE0LDk3LDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwyLDAsCisgICAgOTUsMywwLDExNiw0LDAsMTI0LDIsMCwxMDAsMiwwLDEzMSwyLDAsMTE1LAorICAgIDk3LDAsMTI0LDIsMCwxMDYsMywwLDEwNiw1LDAsMTAwLDMsMCwxMzEsMSwKKyAgICAwLDEwMCw0LDAsMjUsMTI0LDIsMCw5NSwzLDAsMTEzLDk3LDAsMTEwLDAsCisgICAgMCwxMjQsMiwwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LDExLDAsMCwwLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLDAsMCw0NiwxMDUsMCwKKyAgICAwLDAsMCw0MCw2LDAsMCwwLDExNyw3LDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk3LDExNiwxMTYsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsMCwwLDAsMTA0LAorICAgIDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LAorICAgIDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCw5NywKKyAgICAxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDMsCisgICAgMCwwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE5LDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCwyNDAsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSwKKyAgICAxNSwxLDI0LDEsMTIsMSwxNSwxLDMxLDEsMTE3LDQwLDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LAorICAgIDEwOCwxMTUsNjIsNDYsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMTksMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsCisgICAgNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDExLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwyMzgsCisgICAgMSwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDcsMTMsMSwxMTcsMTEsCisgICAgMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywKKyAgICAwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLAorICAgIDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsMywwLDAsMCwKKyAgICAxMTcsMzgsMCwwLDAsODMsMTAxLDExNiwzMiw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDk1LDk1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDMxLDAsMCwwLAorICAgIDExNSw0OSwwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwKKyAgICAwLDE0MiwxLDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwzLDAsMTAwLDEsMCwKKyAgICAxMzEsMiwwLDExNSw0NSwwLDEyNCwwLDAsMTI0LDMsMCw5NSwxLDAsMTEwLAorICAgIDAsMCwxMjQsMywwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsMiwwLDAsMCwKKyAgICAxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDQsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDk3LDExNCwKKyAgICAxMDMsMTE1LDExNyw2LDAsMCwwLDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMywwLAorICAgIDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCwyNTMsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLDE4LDEsCisgICAgMTUsMSwxMiwxLDExNywzOCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTUsMTAxLDExNiwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLAorICAgIDEsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsMTgsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDI1MSwxLDAsMCwxMTUsNiwwLDAsMCwwLDIsCisgICAgMTgsNSwxMywxLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwKKyAgICAxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LAorICAgIDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsCisgICAgNDAsMywwLDAsMCwxMTcsNDIsMywwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDExNSwxMDEsCisgICAgMTA4LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTEyLAorICAgIDEwMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICAxMDAsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLAorICAgIDMyLDEwNSwxMTAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNSwKKyAgICAxMDIsMTAsMzIsMzIsMzIsMzIsMTA1LDExNiwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLAorICAgIDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDMyLDExMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiwKKyAgICAxMTAsMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDExOSwKKyAgICA0NCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDQ0LDMyLDk1LDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDExNSwxMDEsMTA4LDEwMiw0NCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTE1LDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDk3LDk5LDk5LDExMSwxMTQsMTAwLDEwNSwxMTAsMTAzLDEwOCwxMjEsMzIsNDAsCisgICAgMTA1LDEwMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDAsNDEsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsNDEsCisgICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMDEsMTAyLDExMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiwxMTIsOTcsCisgICAgMTE1LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsCisgICAgMTE0LDk3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiw0MCwKKyAgICAxMDUsMTAyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0MCw0MSwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwKKyAgICAzMiwxMTUsMTAxLDExNiwzMiwxMTIsMTExLDExNSwxMTYsNDUsMTA4LDExMSw5NywxMDAsNDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDk3LDExMCwzMiwxMDEsMTIwLDk5LDEwMSwKKyAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAorICAgIDExNCwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMTUsCisgICAgMTE3LDk4LDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDExNiwxMDgsMTIxLDMyLDExNCwxMDEsMTA5LDExMSwKKyAgICAxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDEsMTE1LAorICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDExNCw5NywKKyAgICAxMTYsMTAxLDEwMCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDk3LDEwNywKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDMyLDk3LDExNSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLAorICAgIDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNywwLDAsCisgICAgMCwyNSwwLDAsMCwzMSwwLDAsMCwxMTUsMjU0LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLAorICAgIDEyNCw0LDAsMTAwLDAsMCwxMDcsOSwwLDEyNSw1LDAsMTI0LDUsMCwxMTUsCisgICAgMTY4LDAsMTE2LDQsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMDAsMywKKyAgICAwLDEyNCw0LDAsOTUsNiwwLDEyNCw0LDAsMTE2LDAsMCwxMDYsMSwwLAorICAgIDEyNCwxLDAsNjAsMTI0LDAsMCwxMjQsNCwwLDk1LDcsMCwxMjEsMTksMCwKKyAgICAxMjQsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw2LDAsODcsCisgICAgMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDEyNCwwLDEsMSwxLDg5LDExMywxNzcsMCw4OCwxMjQsNiwwLDExNCwxNDMsCisgICAgMCwxMjQsMSwwLDEyNCw0LDAsOTUsMTEsMCwxMTMsMTc3LDAsMTI0LDEsMCwKKyAgICAxMDYsMTIsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjQsNCwwLAorICAgIDk1LDExLDAsMTEwLDksMCwxMDAsMywwLDEyNCw0LDAsOTUsNiwwLDEyMiwKKyAgICA2MCwwLDEyMSwyMywwLDEzNiwwLDAsMTI0LDAsMCwxMjQsNCwwLDEyNCwyLAorICAgIDAsMTI0LDMsMCwxNDIsMiwwLDgzLDg3LDExMCwzMCwwLDEsMSwxLDEyNCwKKyAgICA1LDAsMTE1LDIyOCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwKKyAgICAwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDg3LDEwMCwwLDAsMTAwLDQsCisgICAgMCwxMjQsNCwwLDk1LDYsMCw4OCwxMDAsMCwwLDgzLDQwLDUsMCwwLAorICAgIDAsNzgsMTE3LDEsMCwwLDAsNDYsMTA1LDAsMCwwLDAsODQsNzAsNDAsCisgICAgMTQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLAorICAgIDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywzLDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMCwwLDAsMCwxMTAsMTAxLAorICAgIDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LAorICAgIDEwMSwxMTcsMTYsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LAorICAgIDEyMiwxMDUsMTEwLDEwMyw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5NSw5NSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxNCwwLDAsMCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAorICAgIDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LAorICAgIDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDQwLDcsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwKKyAgICA5NywxMTQsMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNywKKyAgICA2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw5LDAsMCwwLDEwNSwKKyAgICAxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMSwwLDAsMCwxMTcsMywwLDAsCisgICAgMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjUsMCwwLDAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwyNCwyLDAsMCwxMTUsNDQsMCwKKyAgICAwLDAsMCwxLDE4LDEsMTIsMSw2LDQsMTIsMyw5LDEsMTMsMSwKKyAgICA5LDEsMywxLDE5LDEsMTksMSw1LDIsNiwxLDEyLDIsMjUsMiwKKyAgICA5LDEsNiwyLDIzLDEsMywxLDYsMSwxMywxLDEyLDIsMTE3LDUyLAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsCisgICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwwLDAsCisgICAgMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDEwMiwxMjAsMTEwLDExNywyNSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsCisgICAgMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsCisgICAgMTE0LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNiwyLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDE4LDE4LDMzLDEzLDEsMTE3LDE3LDAsMCwwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsMywwLDEzNSwwLDAsCisgICAgMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDEsMCwxMjUsMSwwLDExNiwKKyAgICAxLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLAorICAgIDQwLDQsMCwwLDAsMTE3LDI1MiwwLDAsMCw2OCwxMDEsOTksMTExLDExNCw5NywKKyAgICAxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsCisgICAgMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLAorICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDIsMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKKyAgICAzMiw0MCwxMTUsMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLAorICAgIDEwNSwxMTAsMTAxLDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwKKyAgICAxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LAorICAgIDExNCwxMDEsMTAwLDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLAorICAgIDk3LDEwNSwxMDgsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNSwwLDAsMCwzMSwwLDAsMCwxMTUsODMsMCwwLDAsCisgICAgMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEyNSwxLDAsMTEwLDQwLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAorICAgIDAsMTA3LDMsMCwxMTQsNjQsMCwxMTYsMiwwLDEwMCwxLDAsMTI0LDEsMCwKKyAgICAyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwKKyAgICAyLDAsODMsNDAsMywwLDAsMCw3OCwxMTcsMjMsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiwzNywxMTUsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLAorICAgIDAsOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwKKyAgICA0MCwxLDAsMCwwLDExNyw2LDAsMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOSwwLDAsMCw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw2OSwKKyAgICAyLDAsMCwxMTUsMTAsMCwwLDAsMCwxLDEyLDEsMTIsMSwxNSwxLAorICAgIDI1LDEsMTE3LDQwLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw3OCwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LAorICAgIDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDYsMCwKKyAgICAwLDAsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDE5LDAsMCwwLDk1LDk5LDEwNCwKKyAgICAxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAorICAgIDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsCisgICAgOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDYxLDIsMCwwLDExNSw2LDAsMCwwLAorICAgIDAsOCwyMSw2LDEzLDEsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksCisgICAgMTA3LDk1LDExMCw5NywxMDksMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsCisgICAgMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwKKyAgICAxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwKKyAgICAxLDAsODMsNDAsMywwLDAsMCwxMTcsNDksMCwwLDAsNjgsMTAxLDk5LAorICAgIDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDE5LAorICAgIDAsMCwwLDExNSw1OCwwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMDcsNywwLDExNCw0NSwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsCisgICAgMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MCwzLDAsMCwwLDc4LDExNywyNywwLDAsMCwxMjMsMTI1LDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKKyAgICAxMDEsNDAsNCwwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMjAsCisgICAgMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksCisgICAgOTcsMTE2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywyNSwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LAorICAgIDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDgxLAorICAgIDIsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwKKyAgICAxMTcsNTIsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCisgICAgOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LAorICAgIDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTAyLDEyMCwxMTAsMTE3LDI1LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLDExNywzLDAsCisgICAgMCwwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3OSwyLDAsCisgICAgMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNywxNywwLDAsCisgICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsCisgICAgMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDAsCisgICAgMywwLDAsMCwxMTcsNDcsMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LAorICAgIDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1OCwwLAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0NSwKKyAgICAwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LAorICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDc4LDExNywyNSwwLDAsMCwxMjMsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCisgICAgMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwxLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAyNCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDkyLDIsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIsMSwxMTcsNTAsMCwKKyAgICAwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsCisgICAgMTE3LDI0LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMCwwLAorICAgIDAsMCw0MCwxLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTYsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5MCwyLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDIsMTgsNSwxMywxLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDg3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgOTIsMiwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwzLDAsMTA3LAorICAgIDgsMCwxMTQsODMsMCwxMTYsMiwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODMsCisgICAgMCwxMDAsMSwwLDEyNSw0LDAsMTE2LDMsMCwxMDYsNCwwLDEyNCw0LDAsCisgICAgMTA2LDUsMCwxMjQsMywwLDEwMCwyLDAsMjUsMTMxLDEsMCwxMTYsNiwwLAorICAgIDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwyLDAsODMsNDAsNCwwLDAsMCwKKyAgICAxMTcsODYsMCwwLDAsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsOTcsMTE2LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDExNyw0NCwwLDAsMCwKKyAgICA3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsCisgICAgMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDEwNSwwLDAsMCwKKyAgICAwLDc4LDQwLDcsMCwwLDAsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw5LDAsMCwwLDk1LDExOSw5NywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksOTcsMTE0LDExMCwxMTcsCisgICAgNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMywwLDAsMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDAsNSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLAorICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDgsMCwwLDAsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwxMTcsCisgICAgMywwLDAsMCwxMDksMTE1LDEwMyw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxNywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDEwMSwyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMCw2LDIxLDEsMjQsMSw2LDEsMzIsMSwxMTcsMTcsMCwwLAorICAgIDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsCisgICAgMTA1LDEwOSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw2LAorICAgIDAsMCwwLDY2LDAsMCwwLDExNSwxNzMsMCwwLDAsMTI0LDAsMCw2OSwKKyAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAorICAgIDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsOTAsNSwwLDEwMSw0LDAsMTAwLDE0LDAsMTAwLDQsMCwxMDAsNSwwLAorICAgIDEzMiwxLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDEsOCwwLDEwMSwKKyAgICA5LDAsMTAxLDEwLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMSwwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEyLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTAsMCwxMDAsMTEsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTQsMCwxMDAsMTQsMCw4Myw0MCwxNSwwLDAsMCwxMTcsMTUsCisgICAgMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDExNywxNDQsMCwwLDAsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwKKyAgICAxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICAxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLAorICAgIDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI0LDAsMCwwLDYwLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAorICAgIDEwNSwxMTAsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsMTExLAorICAgIDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LAorICAgIDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsMTI3LDIsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMTcsMjcsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMjQsMiwwLDEwMCwxLDAsCisgICAgMTA3LDksMCwxMTQsMTYsMCwxMDAsMSwwLDgzLDExNiwxLDAsMTA2LDIsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTE0LDM1LDAsMTI0LDAsMCw4MywxMDAsMSwwLAorICAgIDgzLDQwLDIsMCwwLDAsMTE3LDExMywwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsCisgICAgMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwKKyAgICAxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDAsMywwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsCisgICAgMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMzEsMiwwLDAsMTE1LDYsMCwwLDAsMCw3LDEyLDEsNCwKKyAgICAxLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDEyNCwxLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNyw2LDAsMTI1LDIsMCwxMjEsMjAsMCwxMTYsMiwwLAorICAgIDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsMTEwLDQ2LAorICAgIDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsNzYsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNiwwLDExNCw3NiwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMjQsMSwwLDYxLDExMCwwLDAsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCwKKyAgICAxLDAsODMsNDAsMiwwLDAsMCwxMTcsMjMsMCwwLDAsNzYsMTExLDk3LAorICAgIDEwMCwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0Niw3OCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCwKKyAgICA5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLAorICAgIDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDEwNSwxMTAsMTA1LDExNiw5NSw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsCisgICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNDIsMiwwLDAsMTE1LDE0LAorICAgIDAsMCwwLDAsNiwxNSwxLDMsMSwyMCwxLDMsMSwyMiwxLDEzLAorICAgIDEsMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsCisgICAgMiwwLDAsMCwxMTcsNTcsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICA3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgMTA0LDk3LDExOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDExNSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSwxNTYsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywKKyAgICAyNCwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDU2LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCisgICAgOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsNDAsMSwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLAorICAgIDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMTYyLDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsMjYsMCwwLDAsCisgICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDUyLDAsCisgICAgMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsCisgICAgMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMDEsMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNSw0Niw3MCw0MCwxLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDcwLDk3LDEwOCwxMTUsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLAorICAgIDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTY4LDIsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsNCwxMTcsMjYsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDc4LDQwLDE1LDAsMCwwLDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNywKKyAgICA5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLAorICAgIDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAorICAgIDExNCwxMDEsMTEyLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTEsMCwKKyAgICAwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywKKyAgICAxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwKKyAgICAwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwxLDAsCisgICAgMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsCisgICAgOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTUsMCwKKyAgICAwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDExOCwyLDAsMCwxMTUsMjgsMCwwLDAsMTYsNyw2LDIsMTgsNCwKKyAgICAzLDEsMTgsMTAsMywxLDMsMSwzLDEsMjcsMTEsMywxLDIxLDUsCisgICAgMywxLDIxLDUsMywxLDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNiwwLDAsMCw2NiwwLDAsMCwxMTUsCisgICAgMTczLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsCisgICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCwKKyAgICAxNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMSwwLDEzMSwxLDAsOTAsNywKKyAgICAwLDEwMSw0LDAsMTAxLDgsMCwxMDEsOSwwLDEwMSwxMCwwLDEwMCw2LDAsCisgICAgMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTEsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCw4LDAsMTAwLDksCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw0LDAsCisgICAgMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTMsMCwxMDEsNCwwLDEwMSwxMCwwLDEwMCwxMiwwLDEwMCwxMywKKyAgICAwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDE0LDAsMTAwLDE0LDAsCisgICAgODMsNDAsMTUsMCwwLDAsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxNDIsMCwwLDAsNzcsMTAxLAorICAgIDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsCisgICAgMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKKyAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LAorICAgIDEsMCwxMzEsMSwwLDgzLDQwLDIsMCwwLDAsNzgsMTE3LDIyLDAsMCwKKyAgICAwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDM5LDEyMywxMjUsMzksMzIsNDAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsNjIsNDAsMiwwLDAsMCwxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsMSwwLDAsMCwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LAorICAgIDEwMSwxMTIsMTE0LDE4NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI2LAorICAgIDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDExNCwxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MCwyLAorICAgIDAsMCwwLDExNywyMSwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCw0MCwzLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNyw5LDAsMCwKKyAgICAwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDQsMCwwLDAsNzgsCisgICAgMTExLDExMCwxMDEsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTg4LDIsMCwwLDExNSwyLDAsMCwwLDAsMywxMTcsMjYsMCwKKyAgICAwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDksMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEwMCwwLDAsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsCisgICAgNiwwLDEyNSwyLDAsMTIxLDMyLDAsMTE2LDIsMCwxMTYsMywwLDEwNiw0LAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCw5Niw1LDAsCisgICAgMTI0LDMsMCw4Myw4NywxMTAsNDYsMCwxLDEsMSwxMjQsMiwwLDEyLDExNCwKKyAgICA4OCwwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsMTE0LDg4LAorICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsNjEsMTEwLDAsMCwxMzAsMCwKKyAgICAwLDg5LDExMCwxLDAsODgsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICAyMSwwLDAsMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDQwLDYsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsCisgICAgMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDEwMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTEsMCwwLDAsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw0MCw0LDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksCisgICAgMTAxLDExNyw5LDAsMCwwLDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTcsCisgICAgMSwwLDAsMCwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTkzLDIsMCwwLDExNSwxOCwwLDAsMCwwLDYsMTUsMSwzLDEsCisgICAgMTgsMiw2LDEsOCwxLDMsMSwyMiwxLDEzLDEsMTE3LDI2LDAsMCwKKyAgICAwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsODMsNDAsMSwwLDAsMCwxMTcsNDUsMCwwLDAsODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTcsMCwwLDAsMTAzLDEwMSwxMTYsOTUsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQwLDIsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsCisgICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICAyMTAsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LDExNywyMywwLDAsMCwKKyAgICA3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKKyAgICAwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsNTQsMCwwLDAsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKKyAgICA5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTYsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDExNywyNSwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LAorICAgIDEsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsNDYsCisgICAgMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQ2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LAorICAgIDE3LDAsMCwwLDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksCisgICAgMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsCisgICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjIyLDIsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsNCwxMTcsMjUsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsNzgsNDAsMTUsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LAorICAgIDk1LDk1LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMSwwLDAsMCwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTYsMCwwLDAsOTUsCisgICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsCisgICAgMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LAorICAgIDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsMTE3LAorICAgIDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw3MCwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxNzUsMiwwLAorICAgIDAsMTE1LDI4LDAsMCwwLDE2LDcsNiwyLDE4LDQsMywxLDE4LDQsCisgICAgMywxLDMsMSwzLDEsMjcsMTQsMywxLDIxLDUsMywxLDIxLDUsCisgICAgMywxLDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSwxMDEsMCwwLDAsMTI0LAorICAgIDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCisgICAgMSwwLDkwLDMsMCwxMDAsMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsCisgICAgMCwxMDAsMTEsMCw5MCw3LDAsMTAxLDgsMCwxMDAsNCwwLDEwMCw1LDAsCisgICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsOCwwLDEwMCw2LDAsMTAwLAorICAgIDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsOCwwLDEwMCwxMCwKKyAgICAwLDEwMCw4LDAsMTAwLDksMCwxMzIsMSwwLDEzMSwxLDAsOTAsMTIsMCwKKyAgICAxMDAsMTAsMCw4Myw0MCwxMiwwLDAsMCwxMTcsMjEsMCwwLDAsODcsMTA1LAorICAgIDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMTE3LDY3LDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsMzIsMTE0LDEwMSwxMDMsCisgICAgMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiwxMTcsNTksMCwwLDAsCisgICAgODMsMTExLDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5MiwKKyAgICA4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwKKyAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDExNyw2NSwwLDAsMCwKKyAgICA4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLAorICAgIDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LAorICAgIDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywKKyAgICAxMDMsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMTYsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLAorICAgIDgzLDg3LDExMCwzNywwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLAorICAgIDEsMSwxMTYsMCwwLDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLAorICAgIDAsMTMxLDIsMCw4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDAsMSwKKyAgICAwLDAsMCw3OCw0MCw1LDAsMCwwLDExNyw3LDAsMCwwLDk1LDExOSwKKyAgICAxMDUsMTEwLDExNCwxMDEsMTAzLDExNyw3LDAsMCwwLDc5LDExMiwxMDEsMTEwLDc1LDEwMSwKKyAgICAxMjEsMTE3LDE3LDAsMCwwLDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LAorICAgIDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNywxMiwwLDAsMCw4NywxMDUsMTEwLDEwMCwKKyAgICAxMTEsMTE5LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE4LDAsMCwwLDcyLDc1LDY5LAorICAgIDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQwLAorICAgIDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMywwLDAsCisgICAgMCwxMDcsMTAxLDEyMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwKKyAgICAxMTYsMTE0LDEyMSwyNDIsMiwwLDAsMTE1LDgsMCwwLDAsMCwyLDMsMSwKKyAgICAyMywxLDEzLDEsMTE3LDM2LDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LAorICAgIDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNDIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNCwyMSwwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LDAsMTI0LDAsMCwxMDYsCisgICAgMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLDEwMCwxLDAsMTI0LDEsCisgICAgMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsMCwwLDEwMCwzLDAsCisgICAgMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLDQ2LDAsMTI0LDAsMCwKKyAgICAxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsMCwxMjUsNCwwLDExNiwKKyAgICA3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsMTMxLDIsMCwxMjUsNSwKKyAgICAwLDg3LDEwMCwwLDAsODEsODgsODcsMTEwLDIyLDAsNCwxMTYsOSwwLDEwNywKKyAgICAxMCwwLDExNCwxMzcsMCwxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsCisgICAgODgsMTI0LDUsMCw4Myw0MCw1LDAsMCwwLDc4LDExNyw4LDAsMCwwLAorICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LDEyMSwxMTUsCisgICAgOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEwNSwzLDAsMCwwLDExNywwLDAsCisgICAgMCwwLDQwLDExLDAsMCwwLDExNywxMSwwLDAsMCw2OCw2OSw2Niw4NSwKKyAgICA3MSw5NSw2Niw4NSw3Myw3Niw2OCwxMTcsMTgsMCwwLDAsODIsNjksNzEsNzMsCisgICAgODMsODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMTE3LDEyLAorICAgIDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNywKKyAgICA2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDcsMCwwLDAsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNywxNCwKKyAgICAwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LAorICAgIDEyMSwxMTcsNywwLDAsMCw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsMTAsMCwKKyAgICAwLDAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LDk3LDEwOCwxMTcsMTAxLDExNywxMiwwLDAsCisgICAgMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDQsMCwKKyAgICAwLDAsNzgsMTExLDExMCwxMDEsNDAsNiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICA5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLAorICAgIDEyMSwxMTcsMywwLDAsMCwxMDcsMTAxLDEyMSwxMTcsNCwwLDAsMCwxMDQsMTA3LAorICAgIDEwMSwxMjEsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDExMiw5NywxMTYsMTA0LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAorICAgIDI0OSwyLDAsMCwxMTUsMjIsMCwwLDAsMCwyLDksMSwxMiwyLDksCisgICAgMSwxNSwxLDIyLDEsMywxLDE4LDEsMjgsMSwxMywxLDksMSwxMTcsCisgICAgMzgsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAorICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsOTksCisgICAgMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDcsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE0MCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDMxLDAsMTAwLAorICAgIDEsMCw4MywxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwxMzEsCisgICAgMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw3MiwKKyAgICAwLDEsMSwxLDEwMCwxLDAsODMsODksMTEwLDEsMCw4OCwxMjAsNjAsMCwKKyAgICAxMTYsNSwwLDEzMSwwLDAsNjgsOTMsNDksMCw5MiwzLDAsMTI1LDQsMCwKKyAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDMsMCwxMDYsNiwwLDExNiw3LDAsMTI0LAorICAgIDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgzLDAsMTI0LDQsMCwxMjQsMSwKKyAgICAwLDEyNCwzLDAsMTMxLDIsMCw4MywxMTMsODMsMCw4NywxMDAsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsMTE3LDM0LDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsNzgsNDAsOCwwLAorICAgIDAsMCwxMTcsMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwKKyAgICAxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LAorICAgIDExNiwxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDI3LDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTcsOCwwLAorICAgIDAsMCwxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDExNyw1LDAsMCwwLDExNiwKKyAgICAxMTcsMTEyLDEwOCwxMDEsNDAsNywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsCisgICAgMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsCisgICAgOCwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywxLDAsMCwKKyAgICAwLDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLAorICAgIDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw4LDMsCisgICAgMCwwLDExNSwyMCwwLDAsMCwwLDMsMTUsMSwxMiwxLDQsMSwzLAorICAgIDEsMTcsMSwxMywxLDksMSwyNSwxLDIxLDEsMTE3LDMzLDAsMCwwLAorICAgIDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw3MCw0MCwxMywwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsCisgICAgOTUsMTE3LDEyLDAsMCwwLDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LAorICAgIDY5LDg5LDExNywxOCwwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSwKKyAgICA3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwxMTcsNSwwLDAsMCw3MCw5NywKKyAgICAxMDgsMTE1LDEwMSwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsCisgICAgNzMsNzYsNjgsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDExNywxNCwwLDAsMCw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwKKyAgICAxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwxMTcsMTYsMCwwLDAsOTUsMTE1LDEwMSw5NywxMTQsCisgICAgOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDQsMCwwLDAsCisgICAgNzgsMTExLDExMCwxMDEsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwKKyAgICAxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsCisgICAgODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMjI5LDIsCisgICAgMCwwLDExNSwxNiwwLDAsMCwxNiwzLDYsMyw2LDMsNiwyLDYsCisgICAgMiwxOCw3LDE4LDE1LDMsMSwxMTcsMjEsMCwwLDAsODcsMTA1LDExMCwxMDAsCisgICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNSwwLAorICAgIDAsMCw2NiwwLDAsMCwxMTUsNzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsCisgICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCisgICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwKKyAgICAxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDYsMCwxMDAsCisgICAgMTAsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMSwxMzEsMSwwLDkwLDgsCisgICAgMCwxMDAsOSwwLDgzLDQwLDExLDAsMCwwLDExNywxMywwLDAsMCw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTE3LDgzLDAsMCwKKyAgICAwLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwKKyAgICAxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCisgICAgMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAorICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKKyAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCisgICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCisgICAgNSwwLDEwNywzLDAsODMsNDAsNiwwLDAsMCwxMTcsMTQxLDAsMCwwLAorICAgIDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSwKKyAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwKKyAgICAxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLAorICAgIDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LAorICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDEwNSwxLDAsCisgICAgMCwwLDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDEwNSwyLDAsCisgICAgMCwwLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCwKKyAgICA0LDAsMCwwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsCisgICAgMTEyLDEwOCwxMDUsMTE2LDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsCisgICAgMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLAorICAgIDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsCisgICAgMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDEzLDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5OCw5NywxMTUsMTAxLDExNyw5LDAsMCwwLDExNiw5NywKKyAgICAxMDUsMTA4LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDI4LDMsMCwwLDExNSw4LDAsMCwwLDAsMywyNSwxLDIyLAorICAgIDEsMTksMSwxMTcsMjQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LAorICAgIDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk5LDUsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwyMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTk4LDEsMCwwLDEyNCwyLDAsMTAwLDEsMCwKKyAgICAxMDAsMiwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMiwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDIsMCwxMDAsMywwLAorICAgIDEwMCw0LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDAsMCwKKyAgICAxMDcsMywwLDExNCwxMDUsMCwxMDAsNSwwLDEwNiwxLDAsMTI0LDEsMCwxMjQsCisgICAgNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTAwLDYsCisgICAgMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsCisgICAgMTEwLDExNiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDEwMCwyLDAsMTA3LAorICAgIDMsMCwxMTQsMTYzLDAsMTAwLDgsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsCisgICAgMCwxMjUsOSwwLDExNiw0LDAsMTI0LDksMCwxMzEsMSwwLDEsMTE2LDUsCisgICAgMCwxMjQsOSwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsMywwLAorICAgIDEyNCw3LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywzLDAsMTE0LDIyMSwwLDEwMCwKKyAgICA5LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksMCwxMTYsNCwKKyAgICAwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LDAsMTI0LDksMCwxMzEsMSwKKyAgICAwLDEzMCwxLDAsMTEwLDAsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDksMCwKKyAgICAxMTQsMTg0LDEsMTIxLDIwLDAsMTE2LDcsMCwxMjQsNCwwLDEwMCwxMCwwLDI1LAorICAgIDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywxMCwKKyAgICAwLDExNCwxNywxLDEsMSwxLDg5LDExMCw3MSwwLDg4LDExNiw5LDAsMTI0LAorICAgIDYsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDg4LDEsMTAwLDExLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDksMCwxMTYsNCwwLAorICAgIDEyNCw5LDAsMTMxLDEsMCwxLDExNiwyLDAsMTI0LDksMCwxMDAsNiwwLAorICAgIDEyNCwxLDAsMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwxMTAsCisgICAgMCwwLDEyMSwxOCwwLDEyNCw0LDAsMTAwLDEyLDAsMjUsMTAwLDEzLDAsNjQsCisgICAgMTI1LDExLDAsODcsMTEwLDE4LDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwxMjYsCisgICAgMSwxLDEsMSw4OSwxMTMsMTg0LDEsODgsMTE2LDksMCwxMjQsNywwLDEzMSwKKyAgICAxLDAsMTI0LDExLDAsMTA3LDMsMCwxMTQsMTg0LDEsMTE2LDIsMCwxMDAsMTEsCisgICAgMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDAsNiwwLDEyNCwxLDAsCisgICAgMTAwLDcsMCwxMjQsMywwLDEzMSwxLDIsMTMwLDEsMCwxMTMsMTg0LDEsMTEwLAorICAgIDAsMCwxMjQsMiwwLDEwMCw0LDAsMTAwLDEsMCwxMzMsMiwwLDI1LDgzLAorICAgIDQwLDE0LDAsMCwwLDExNywxOTMsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDEwOCwxMDEsMTAwLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTgsMTIxLDExNiwxMDEsOTksCisgICAgMTExLDEwMCwxMDEsNDQsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCw0NCwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDk3LDExMCwxMDAsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTUsMTA1LAorICAgIDEyMiwxMDEsMzIsOTcsMTA4LDExMSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExOSw5NywxMjEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDEwNSwxMTUsMzIsNzgsMTExLAorICAgIDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNSwxMDcsMTA1LDExMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDEwNSw0LDAsMCwKKyAgICAwLDEwNSw4LDAsMCwwLDEwNSwxMiwwLDAsMCwxMTcsMzAsMCwwLDAsCisgICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCisgICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTksMCwwLDAsOTgsOTcsMTAwLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LAorICAgIDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMTI1LDExNywxNCwwLDAsMCw5OCw5NywxMDAsCisgICAgMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsNSwwLDAsMCwKKyAgICAxMDksMTE2LDEwNSwxMDksMTAxLDExNywyNCwwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMjMsMTI1LDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwKKyAgICAyNTUsMTI3LDI1NSwxMjcsMywwLDQwLDEwLDAsMCwwLDExNywxMiwwLDAsMCwKKyAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsCisgICAgMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsCisgICAgMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsCisgICAgMTE1LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsNjksNzksNzAsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDEwNSwKKyAgICAxMTAsMTE2LDExNyw4LDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNywKKyAgICA3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNDAsMTIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsCisgICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNywKKyAgICAxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LAorICAgIDExNiwxMTUsMTE3LDUsMCwwLDAsMTA5LDk3LDEwMywxMDUsOTksMTE3LDEzLDAsMCwKKyAgICAwLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwxMTcsOCwKKyAgICAwLDAsMCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTcsMywwLDAsMCwKKyAgICAxMDksMTE1LDEwMywxMTcsNywwLDAsMCwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksMTAxLAorICAgIDExNywxMSwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywyMCwwLDAsCisgICAgMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDM2LDMsMCwwLDExNSw2NiwwLDAsMCwwLDcsCisgICAgMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDI3LDEsMTgsMSwxNSwxLAorICAgIDEwLDEsMTUsMSwxOCwxLDE1LDEsMTAsMSwxNSwxLDEyLDEsMywxLAorICAgIDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLDEwLDEsMTUsMSwxMiwxLAorICAgIDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMywxLDE1LDEsMjEsMywKKyAgICAxMTcsMzQsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsCisgICAgOTksMTE1LDQ2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDEwLDAsMCwwLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDk5LDIsMCwwLDAsMSwwLDAsMCw1LAorICAgIDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsCisgICAgMTI0LDEsMCwxMDYsMCwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwKKyAgICAzLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywKKyAgICAwLDEzMSwxLDAsMTI0LDEsMCw5NSwzLDAsMTI0LDIsMCwxMTUsMTA2LDAsCisgICAgMTIxLDIyLDAsMTE2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxMjQsCisgICAgMSwwLDk1LDUsMCw4NywxMTMsMTE4LDAsNCwxMTYsNiwwLDEwNywxMCwwLAorICAgIDExNCwxMDIsMCwxLDEsMSwxMjQsMSwwLDEwNiwzLDAsMTI0LDEsMCw5NSwKKyAgICA1LDAsODksMTEzLDExOCwwLDg4LDExMCwxMiwwLDEyNCwxLDAsMTA2LDMsMCwKKyAgICAxMjQsMSwwLDk1LDUsMCwxMjQsMywwLDEyNCwxLDAsOTUsNywwLDEyNCwKKyAgICAwLDAsMTA2LDgsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDE3MCwwLDExNiw5LAorICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMDMsMSwKKyAgICAwLDEyNCwxLDAsOTUsMTAsMCwxMTAsMjUsMCwxMjQsMSwwLDEwNiw3LDAsCisgICAgMTA2LDExLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTI0LDEsMCwKKyAgICA5NSw3LDAsMTI0LDAsMCwxMjQsMSwwLDk1LDEyLDAsMTE2LDEzLDAsMTE2LAorICAgIDE0LDAsMTI0LDQsMCwxMjQsMSwwLDEwNiwxNSwwLDEzMSwzLDAsMSwxMjQsCisgICAgMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDgyLDAsMCwwLDcyLDEwMSwxMDgsCisgICAgMTEyLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiwxMTEsMTE0LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwNSwKKyAgICAwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDQwLDE2LDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMiwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwwLAorICAgIDAsMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwxMTcsMTksMCwwLAorICAgIDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLAorICAgIDEwOCwxMDUsMTE2LDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsCisgICAgMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsMjUsCisgICAgMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCwKKyAgICA5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDQsMCwwLAorICAgIDAsMTAxLDEyMCwxMDEsOTksMTE3LDgsMCwwLDAsOTUsOTUsMTAwLDEwNSw5OSwxMTYsCisgICAgOTUsOTUsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDExNyw0LDAsMCwwLDExMCwKKyAgICA5NywxMDksMTAxLDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LAorICAgIDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTIsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODEsMywwLDAsMTE1LDMyLDAsMCwwLDAsNCw5LDEsMTUsMSwxOCwKKyAgICAxLDYsMSwzLDEsMjIsMSwxMywxLDIwLDIsMTIsMSw5LDEsMTUsCisgICAgMSwyOCwyLDI1LDEsOSwxLDE5LDEsMTE3LDI2LDAsMCwwLDk1LDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5NSwxMDgsMTExLDk3LAorICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw3MCw0MCw5LDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLAorICAgIDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LAorICAgIDEwNSw5OSwxMTUsMjMsMywwLDAsMTE1LDEwLDAsMCwwLDE2LDMsNiwyLAorICAgIDEyLDgsMTIsNDUsNiwxLDExNywxMywwLDAsMCw5NSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLDAsMCwxMTUsMTA0LDAsCisgICAgMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsOTAsCisgICAgNiwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCw5MCw3LDAsMTAwLDExLAorICAgIDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEzLDAsMTAwLDE0LDAsCisgICAgMTMyLDAsMCw5MCw5LDAsMTAwLDE1LDAsODMsNDAsMTYsMCwwLDAsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsMCwxMzAsMSwwLAorICAgIDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsMTIxLDAsMCwwLDc5LDExMiwKKyAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLAorICAgIDMyLDQwLDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAorICAgIDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MCwxLDAsMCwwLDExNywxOSwwLAorICAgIDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMDcsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw0LDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjAsMCwwLDAsMTA1LDEsMCwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwxLDAsNTQsODMsNDAsMiwwLDAsCisgICAgMCwxMTcsMTE0LDEsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLAorICAgIDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAwLDEwNSw5OSwxMTYsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAorICAgIDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsCisgICAgMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMTUsCisgICAgMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MCwxMTEsMTE1LAorICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwxMTUsNTgsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwxMDUsMTA5LDEwMSwzOSwzMiw0MCwxMDksCisgICAgOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNTksMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLAorICAgIDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCw0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwKKyAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLAorICAgIDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTE0LDEwMSw5NywxMDAsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsNSwwLDAsMCwxMDksMTE2LDEwNSwKKyAgICAxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExMywzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEwLDExNywyMywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSwKKyAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAorICAgIDIsMCwxMjQsMywwLDEzMSwyLDAsODMsNDAsMSwwLDAsMCwxMTcsMjI4LAorICAgIDAsMCwwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwKKyAgICAxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLAorICAgIDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsCisgICAgMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsCisgICAgMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsCisgICAgOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsCisgICAgMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQwLDEsMCwwLDAsMTE3LDgsMCwwLAorICAgIDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTAsMCwwLDAsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTI1LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTcsMjgsMCwwLDAsODMsCisgICAgMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LDMsMCwwLDAsCisgICAgMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDExNiwwLDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTE3LDE1MSwwLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LAorICAgIDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwKKyAgICAxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDc4LDQwLDEsMCwwLDAsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCw0MCwzLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMzUsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCw2LDExNywyMSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDksMCwwLDAsNDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDYyLDEsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMDgsMCwwLDEyNSwKKyAgICAyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywKKyAgICAwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMywwLDEzMSwxLDAsCisgICAgMTI1LDQsMCw4NywxMTAsNTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDEwNiwKKyAgICAwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDMsMCwxMDAsCisgICAgNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsODcsODksCisgICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsMSwwLAorICAgIDg4LDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMTA2LDcsMCwKKyAgICAxMjUsNiwwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDgsMCwxMjQsNiwwLDEzMSwKKyAgICAxLDAsMTI1LDcsMCw4NywxMTAsNTgsMCw0LDExNiw5LDAsMTA3LDEwLDAsCisgICAgMTE0LDIwNCwwLDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDUsCisgICAgMCwxMDAsNCwwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsCisgICAgODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsCisgICAgMSwwLDg4LDExNiw1LDAsMTA2LDEwLDAsMTAwLDIsMCwxMDAsNywwLDEzMSwKKyAgICAyLDAsMTI1LDgsMCwxMjEsMzAsMCwxMjQsOCwwLDEwNiwxMywwLDEyNCw0LAorICAgIDAsMTA2LDEzLDAsMTI0LDcsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMTMxLDEsCisgICAgMCw4Myw4NywxMTAsNTgsMCw0LDExNiwxNCwwLDEwNywxMCwwLDExNCw1NywxLAorICAgIDEsMTI1LDUsMCwxLDEyMiwyNiwwLDExNiw0LDAsMTAwLDYsMCwxMDAsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMSwxMjQsNSwwLDEzMCwyLDAsODcsODksMTAwLAorICAgIDIsMCwxMDAsMiwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTAsMSwwLDg4LAorICAgIDEwMCwyLDAsODMsNDAsOCwwLDAsMCwxMTcsNTIsMCwwLDAsNjcsMTExLAorICAgIDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw0NiwxMDUsMCwwLDAsMCw3OCwxMTcsMzksMCwwLDAsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDQxLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywyNSwwLAorICAgIDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsCisgICAgOTksMTE2LDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsMjgsMCwwLDAsCisgICAgNzAsOTcsMTA1LDEwOCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw4NCw0MCwxNSwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCwxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNywKKyAgICAxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTcsNywwLAorICAgIDAsMCw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwwLDk1LDEwNSwKKyAgICAxMTEsMTE3LDcsMCwwLDAsNjYsMTIxLDExNiwxMDEsMTE1LDczLDc5LDExNyw4LDAsCisgICAgMCwwLDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwxMTcsMTUsMCwwLDAsMTAwLAorICAgIDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMTE3LDExLAorICAgIDAsMCwwLDgzLDEyMSwxMTAsMTE2LDk3LDEyMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDI1LAorICAgIDAsMCwwLDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLAorICAgIDExOSwxMDgsMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTcsNCwwLDAsCisgICAgMCw3OCwxMTEsMTEwLDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsNiwKKyAgICAwLDAsMCwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxOCwwLDAsMCw4NSwxMTAsCisgICAgMTA1LDk5LDExMSwxMDAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDAsOSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsCisgICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLAorICAgIDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDEwLDAsMCwwLDExNCwKKyAgICAxMDEsOTcsMTAwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwwLDAsMTAxLDExMCwKKyAgICA5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDExNywxNSwwLDAsMCwxMTAsMTAxLDExOSwxMDgsMTA1LAorICAgIDExMCwxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxNDQsMywwLDAsMTE1LDM4LDAsMCwwLDAsMiwKKyAgICAxMiwxLDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxOCwxLAorICAgIDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTgsMSwzLDEsMzAsMSwKKyAgICAxOCwxLDksMSwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCw0NSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNTIsMiwwLDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxMCwwLDEyNSwzLDAsMTIxLAorICAgIDE2LDAsMTE2LDIsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsCisgICAgMjQsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYzLDAsMSwxLDEsMTAwLAorICAgIDEwLDAsMTI1LDQsMCw4OSwxMTAsMTQsMSw4OCwxMjEsMTksMCwxMjQsMCwwLAorICAgIDEwNiw0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsMSw4OSwxMTAsMjMwLAorICAgIDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwxLDAsMjUsMTMxLDEsMCwxMjUsCisgICAgMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLAorICAgIDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAorICAgIDE1OSwwLDEsMSwxLDg5LDExMCwxNzQsMCw4OCwxMjEsMjgsMCwxMjQsMCwwLAorICAgIDEwNiw4LDAsMTI0LDEsMCwxMjQsNiwwLDEyNCw0LDAsMTI0LDUsMCwxMzEsCisgICAgNCwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLAorICAgIDEwMiwyLDAsMTA3LDEwLDAsMTE0LDIxNCwwLDEsMSwxLDg5LDExMCwxMTksMCwKKyAgICA4OCwxMTYsMTEsMCwxMDAsMiwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLAorICAgIDEsMTE2LDEyLDAsMTA2LDEzLDAsMTI0LDcsMCwxMzEsMSwwLDEyNSw4LDAsCisgICAgMTE2LDE0LDAsMTI0LDgsMCwxMTYsMTUsMCwxMzEsMiwwLDExNCwzOCwxLDExNiwKKyAgICAxNiwwLDEwNiwxNywwLDEyNCw4LDAsMTI0LDIsMCwxMzEsMiwwLDEsMTE2LAorICAgIDExLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLDAsMSwxMjQsOCwwLDgzLAorICAgIDEwMCw0LDAsMTI1LDksMCwxMTYsOSwwLDEyNCw5LDAsMTA2LDE4LDAsMTI0LAorICAgIDQsMCwxMzEsMSwwLDEwMCw1LDAsMTI0LDEsMCwxMDAsNiwwLDEyNCw0LAorICAgIDAsMTMxLDEsMiwxMzAsMSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwwLAorICAgIDEzMSwxLDAsMTI1LDEwLDAsMTE2LDE5LDAsMTE2LDIwLDAsMTI0LDEwLDAsMTI0LAorICAgIDIsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDExLDAsMTMxLDQsMSwxMjUsMTEsCisgICAgMCwxMTYsMTEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDIsMCwxLDExNiwyMiwKKyAgICAwLDEwNiwyMywwLDEyLDExNCw0OCwyLDEyNCw0LDAsMTAwLDEwLDAsMTA3LDksCisgICAgMCwxMTQsNDgsMiwxMjQsMywwLDEwMCwxMCwwLDEwNyw5LDAsMTE0LDQ4LDIsCisgICAgMTE2LDI0LDAsMTE2LDI1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTA2LAorICAgIDI2LDAsMTE2LDI3LDAsMTI0LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsCisgICAgNiwwLDEwNiwyNiwwLDExNiwyNywwLDExNiwyOCwwLDEyNCwxMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDYsMCwxMDYsMjYsMCwxMTYsMTIsCisgICAgMCwxMDYsMjksMCwxMjQsMTEsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjEsMzYsCisgICAgMCwxMjQsMCwwLDEwNiwzMCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsNiwwLAorICAgIDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsOSwwLDEyNCw0LDAsMTMxLDIsMCwKKyAgICAxLDg3LDExMyw0OCwyLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDQsMiwxLAorICAgIDEsMSw4OSwxMTMsNDgsMiw4OCwxMTAsMCwwLDEyNCwxMSwwLDgzLDQwLDEyLAorICAgIDAsMCwwLDExNywxOTAsMCwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsCisgICAgMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTcsMTMsMCwwLDAsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLAorICAgIDEyMywxMjUsMTE3LDE5LDAsMCwwLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLAorICAgIDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMTcsMjEsMCwwLDAsNzgsCisgICAgMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LAorICAgIDExMCwzMiwxMjMsMTI1LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMSwxMjAsMTAxLDk5LDExNywKKyAgICAxMiwwLDAsMCwxMDAsMTExLDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LAorICAgIDExNywxMCwwLDAsMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDc4LAorICAgIDg0LDQwLDMxLDAsMCwwLDExNywxMiwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDE3LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDE5LDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTAsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywzLDAsCisgICAgMCwwLDEwNSwxMTAsMTE2LDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywKKyAgICAxMTYsOTcsMTE3LDcsMCwwLDAsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDExNywyMCwKKyAgICAwLDAsMCw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCw2OSw3OSw3MCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNyw3LDAsMCwwLDEwOSw5NywKKyAgICAxMTQsMTE1LDEwNCw5NywxMDgsMTE3LDUsMCwwLDAsMTA4LDExMSw5NywxMDAsMTE1LDExNywKKyAgICAxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDExNywxMCwKKyAgICAwLDAsMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDQsMCwKKyAgICAwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDE2LDAsMCwwLDk1LDEwMiwxMDUsMTIwLDk1LAorICAgIDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDYsMCwwLDAsCisgICAgMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCwKKyAgICA5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwKKyAgICAxMTEsMTE4LDEwMSwxMDAsMTE3LDcsMCwwLDAsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwKKyAgICAxMTUsMTE3LDE5LDAsMCwwLDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLAorICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw5LDAsMCwwLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLDExNywxMiwwLDAsMCw5NSw3Nyw2NSw3MSwKKyAgICA3Myw2Nyw5NSw2Niw4OSw4NCw2OSw4MywxMTcsNiwwLDAsMCwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDEwMCwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDExNywKKyAgICAzLDAsMCwwLDEwOCwxMDEsMTEwLDExNyw1LDAsMCwwLDEwMCwxMTcsMTA5LDExMiwKKyAgICAxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsNDAsMTIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTIsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDExNywxMywwLDAsMCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsMTE2LDExNyw0LDAsMCwwLDEwMCwKKyAgICA5NywxMTYsOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsMTE3LDMsMCwwLAorICAgIDAsMTA5LDExNSwxMDMsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDExNywxMSwwLDAsMCw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsCisgICAgOTgsMTA2LDEwMSw5OSwxMTYsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxNjYsMywKKyAgICAwLDAsMTE1LDk4LDAsMCwwLDAsNywxNSwxLDYsMSwzLDEsMTYsCisgICAgMSwxMywxLDExLDIsMywxLDE5LDEsMTMsMSw1LDIsMTYsMSwzLAorICAgIDEsMTksMSwxMywxLDUsMiwzLDEsMTIsMSwzLDEsMTMsMSwxOSwKKyAgICAxLDUsMiw5LDEsNywxLDE1LDEsMTUsMSwxNiwxLDYsMSw3LAorICAgIDEsNCwyLDYsMSwxOCwxLDE1LDEsMTUsMSw2LDEsMTIsMSw5LAorICAgIDEsMTMsMSwyMiwxLDEyLDEsMTIsMSwxOSwxLDI1LDEsMjIsMSwzLAorICAgIDEsMTksMSwxNywxLDEzLDEsOCwxLDExNywyMSwwLDAsMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsCisgICAgMCwxLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDMyLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTExLDExMCw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDMyLDk3LDExMCwxMDAsMzIsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwKKyAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMzIsODUsMTE1LDEwMSwKKyAgICAzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTAwLDEwNSw5OSwxMTYsOTcsMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExOSwxMDQsMTAxLDExNiwKKyAgICAxMDQsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDMsMTAxLDExNiw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTcsMTE1LDEwMSwxMTUsNDcsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsCisgICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNDAsMSwwLDAsMCwxMTcsMTIsMCwwLDAsOTUsMTA4LAorICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMiwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsCisgICAgMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDIyOCwzLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE3LDI0LDAsMCwKKyAgICAwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsMTAsMCwwLDAsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCwKKyAgICA5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsMTAsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywxNSwwLDAsMCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNyw4LAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLAorICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LDgsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEwNSwzLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMTYsMiwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsMjIsMTIsNjIsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsCisgICAgMCwyLDAsMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLAorICAgIDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLAorICAgIDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDEsNSwwLDEzNSwKKyAgICAwLDAsMTAyLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTM0LDAsMCwxMzEsMSwKKyAgICAwLDkwLDYsMCwxMDEsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLAorICAgIDEzMSwxLDAsOTAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLAorICAgIDgsMCwxMzUsMCwwLDgzLDQwLDEwLDAsMCwwLDExNywxMCwwLDAsMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwMywwLDAsMCw2NiwKKyAgICA5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCisgICAgMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLAorICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LAorICAgIDEsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDc1LDAsMCwwLAorICAgIDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsCisgICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MCwyLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICAyNDQsMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksMSwxMTcsMTksMCwKKyAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwKKyAgICAwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCwxMTcsMjYsMCwwLDAsNzYsCisgICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDQwLDMsMCwwLDAsMTE3LDUsCisgICAgMCwwLDAsMTE1LDExNywxMTIsMTAxLDExNCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwyLDAsMCwwLDExNyw0LDAsMCwKKyAgICAwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsNDAsMSwwLDAsMCwxMTcsOSwwLDAsMCw5NSw5NSw5OSwxMDgsCisgICAgOTcsMTE1LDExNSw5NSw5NSw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLAorICAgIDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjUwLDMsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsNSwxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDgzLDQwLDEsMCwwLDAsMTE3LDU4LDAsMCwwLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICA5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDAsMSwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLAorICAgIDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDEsNCwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwzLDExNywyMywwLDAsMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDgsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwKKyAgICAxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLAorICAgIDAsODEsODgsMTAwLDIsMCw4Myw0MCwzLDAsMCwwLDExNywzOSwwLDAsCisgICAgMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsCisgICAgMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwxMTcsMSwwLDAsMCwxMTQsNzgsNDAsCisgICAgMywwLDAsMCwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDExNyw2LDAsMCwKKyAgICAwLDcwLDEwNSwxMDgsMTAxLDczLDc5LDExNyw0LDAsMCwwLDExNCwxMDEsOTcsMTAwLAorICAgIDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwKKyAgICA0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNiw0LDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDIsMjEsMSwxMTcsMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsOSwKKyAgICAwLDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LAorICAgIDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLDAsMCw5NSw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEyLDAsMCwwLDEwMywxMDEsCisgICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwxMDMsCisgICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLAorICAgIDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsOTUsOTUsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsOTUsOTUsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMjM5LDMsMCwwLDExNSwxMCwwLDAsMCwxNiwzLDYsCisgICAgMiwxMiw2LDI0LDcsMTgsNSwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDQsMCwwLDAsNjYsMCwwLDAsMTE1LDY4LDAsMCwwLAorICAgIDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLAorICAgIDEwMCwxMCwwLDgzLDQwLDExLDAsMCwwLDExNywxNiwwLDAsMCw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw2MiwKKyAgICAwLDAsMCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LAorICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM5LDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDUsMiwwLDEyNCwyLDAsCisgICAgMTA2LDIsMCwxMDAsMSwwLDU0LDEyNCwyLDAsMTA2LDMsMCwxMDAsMiwwLAorICAgIDU0LDgzLDQwLDMsMCwwLDAsMTE3LDMzLDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTcsNSwwLAorICAgIDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNyw0LDAsMCwwLDExNSwxMDUsMTIyLDEwMSwKKyAgICA0MCw0LDAsMCwwLDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwKKyAgICAwLDAsMTE1LDExNiw5NywxMTYsMTE3LDgsMCwwLDAsMTE1LDExNiw5NSwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDExNyw3LDAsMCwwLDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQwLAorICAgIDMsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDExNywyLDAsMCwwLDExNSwxMTYsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE2LDQsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMiwxNSwxLDExNywyNywwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsNzEsMCwwLDAsMTIxLAorICAgIDIyLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMDYsMiwKKyAgICAwLDEyNSw0LDAsODcsMTEwLDI0LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwKKyAgICA0OCwwLDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LAorICAgIDEyNCwwLDAsMTA2LDQsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDIsMCwxMjQsCisgICAgNCwwLDEzMSwyLDEsODMsNDAsMywwLDAsMCw3OCwxMDUsMTgyLDEsMCwKKyAgICAwLDExNyw1LDAsMCwwLDk1LDEwOSwxMTEsMTAwLDEwMSw0MCw1LDAsMCwwLAorICAgIDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTYsMTE3LDcsMCwwLDAsMTE1LDExNiw5NSwxMDksMTExLDEwMCwxMDEsMTE3LDcsMCwKKyAgICAwLDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw4LDAsMCwwLDExNSwxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsMTE3LDEzLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LAorICAgIDQsMCwwLDAsMTA5LDExMSwxMDAsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjEsNCwwLDAsMTE1LDEwLDAsMCwKKyAgICAwLDAsMiwzLDEsMjIsMSwxMywxLDExLDEsMTE3LDMyLDAsMCwwLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAxMTcsNSwwLDAsMCw5NSwxMDksMTExLDEwMCwxMDEsMTA1LDE4MiwxLDAsMCw5OSwKKyAgICAzLDAsMCwwLDEsMCwwLDAsOCwwLDAsMCwxMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjQ1LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsCisgICAgMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTAzLDAsMCwxMjUsNiwKKyAgICAwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLDAsMTE2LDEsMCwxMjQsNCwwLAorICAgIDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsMCwxMjQsNCwwLDEzMSwxLDAsCisgICAgOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwxMjQsNiwwLDEwNiwyLDAsMTI0LAorICAgIDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsODcsMTIwLDk3LDAsMTE2LDMsMCwKKyAgICAxMjQsNiwwLDEzMSwxLDAsNjgsOTMsODMsMCwxMjUsNywwLDExNiw0LDAsCisgICAgMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwxMTYsCisgICAgNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEsODcsMTEzLDk0LDAsCisgICAgNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsMCwxLDEsMSwxMTksOTQsMCwKKyAgICA4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDE3NiwwLDEsMSwKKyAgICAxLDEwMCwxLDAsODMsODksMTEzLDk0LDAsODgsMTEzLDk0LDAsODcsMTIxLDMzLAorICAgIDAsMTE2LDksMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLAorICAgIDEsMTE2LDEwLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwyLDAsMSw4NywxMTAsCisgICAgMjQsMCw0LDExNiw4LDAsMTE2LDcsMCwxMDIsMiwwLDEwNywxMCwwLDExNCwKKyAgICAyNDAsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwxLDAsODMsNDAsMywKKyAgICAwLDAsMCwxMTcsMjcsMCwwLDAsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDQ2LDc4LDExNywxMiwwLDAsMCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDQwLDExLDAsMCwwLDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNyw2LDAsMCwwLDk3LAorICAgIDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDgsMCwwLDAsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsCisgICAgMTAxLDEwMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsCisgICAgMTEwLDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDUsMCwwLDAsMTA5LDEwNywKKyAgICAxMDAsMTA1LDExNCwxMTcsMTUsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsCisgICAgMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDE1LDAsMCwwLDgwLDEwMSwxMTQsMTA5LAorICAgIDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTMsMCwwLDAsCisgICAgOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTE3LDE2LDAsCisgICAgMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywKKyAgICAxMDMsMTAxLDQwLDgsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywKKyAgICAxMTYsOTcsMTE3LDUsMCwwLDAsOTUsMTA5LDExMSwxMDAsMTAxLDExNyw2LDAsMCwKKyAgICAwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsCisgICAgMTE0LDExNiwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNCwxMTYsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMTUsMTAxLDExNiwKKyAgICA5NSwxMDAsOTcsMTE2LDk3LDI5LDQsMCwwLDExNSwzNiwwLDAsMCwwLDIsCisgICAgMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwxNSwxLDMsMSwKKyAgICAxNywxLDEzLDIsNywxLDEzLDMsMTMsMSwzLDEsMTYsMSwxNywxLAorICAgIDE5LDMsMTE3LDI1LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKKyAgICA3OCw0MCw3LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksCisgICAgMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsCisgICAgMTAsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNywxNSwKKyAgICAwLDAsMCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDExNyw4LDAsMCwwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsCisgICAgMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDE2LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTIsNCwwLDAsMTE1LDgsMCwwLDAsMTYsMiw2LAorICAgIDIsMTIsNSwxMiw4LDExNywxNiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LAorICAgIDYyLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsCisgICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLAorICAgIDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAorICAgIDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsCisgICAgMCw4Myw0MCw5LDAsMCwwLDExNywyMCwwLDAsMCw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTcsNDUsMCwwLDAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LAorICAgIDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMjQsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMSwxLDgzLDQwLAorICAgIDMsMCwwLDAsNzgsMTE3LDEwLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMTA4LDEwMSwxMTUsMTE1LDg0LDQwLDIsMCwwLDAsMTE3LDEyLDAsMCwwLDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LDAsMCwwLAorICAgIDg0LDExNCwxMTcsMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwKKyAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw0LDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDEsMTE3LDMyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCw2LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzOCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKKyAgICAxMjUsMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwzLDAsMTI0LAorICAgIDIsMCwxMDAsMCwwLDEzMSw0LDAsMTI1LDQsMCwxMTYsNCwwLDEwNiw1LAorICAgIDAsMTI0LDQsMCwxMzEsMSwwLDEyNSw1LDAsMTE2LDYsMCwxMjQsNSwwLAorICAgIDExNiw3LDAsMTMxLDIsMCwxMTQsMTAxLDAsMTE2LDgsMCwxMDAsMSwwLDEyNCwKKyAgICAyLDAsMTMxLDIsMCwxLDEyNCw1LDAsODMsMTE2LDksMCwxMDAsMiwwLAorICAgIDEwNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsMywwLDEyNCwxLDAsMTAwLAorICAgIDQsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMCwwLDgzLDQwLAorICAgIDUsMCwwLDAsNzgsMTE3LDIxLDAsMCwwLDk5LDExMSwxMDAsMTAxLDMyLDExMSwKKyAgICA5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsMTE3LAorICAgIDIxLDAsMCwwLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsNCwwLDAsMCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwxMSwwLDAsMCwKKyAgICAxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDIwLAorICAgIDAsMCwwLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsNSwwLDAsCisgICAgMCwxMDgsMTExLDk3LDEwMCwxMTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDExMCw5OSwxMDEsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwxMDAsMTAxLDk1LAorICAgIDExNiwxMjEsMTEyLDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsCisgICAgMTE0LDEwOSw5NywxMTYsNDAsNiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLAorICAgIDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsCisgICAgOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LAorICAgIDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw2NSw0LDAsMCwxMTUsMTgsMCwwLDAsMCwxLDE1LDEsCisgICAgMTUsMSwyNCwxLDE1LDEsMTUsMSwxMywxLDQsMiwxOCwxLDExNywyOSwKKyAgICAwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwKKyAgICAwLDAsMCwxMTcsMzksMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwKKyAgICA0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwKKyAgICAwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsCisgICAgMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc3LDQsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsCisgICAgMzEsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3OCw0MCw3LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSwKKyAgICA5NSw5NSwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE3LAorICAgIDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDAsMSwKKyAgICAwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIwLAorICAgIDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDU4LDQsMCwwLDExNSw4LDAsMCwwLAorICAgIDE2LDIsNiwyLDEyLDMsMTIsMTIsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDUsMCwKKyAgICAwLDAsNjYsMCwwLDAsMTE1LDEwNCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwKKyAgICAwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywKKyAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDEsNSwwLAorICAgIDEwMSw2LDAsMTAxLDcsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMzEsCisgICAgMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCw4LDAsMTAwLDYsMCwxMDAsNywKKyAgICAwLDEzMiwwLDAsOTAsOSwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLAorICAgIDkwLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwKKyAgICAxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTcsOTMsMCwwLDAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LDExMSwxMTAsMTE1LAorICAgIDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywKKyAgICAxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwKKyAgICAwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsCisgICAgMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDIsMCwwLDAsMTE3LDQsMCwKKyAgICAwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsCisgICAgMywwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwKKyAgICAwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTQsNCwwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxLDksMSwxMTcsMjgsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCisgICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxNzUsMCwwLDAsCisgICAgMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCwxMjUsMiwwLDEyMSwKKyAgICAxMDcsMCwxMTYsMiwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEyNCwwLAorICAgIDAsMTA2LDUsMCwxMzEsMywwLDEyNSwzLDAsMTE2LDYsMCwxMDAsMSwwLAorICAgIDEyNCwwLDAsMTA2LDUsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMDYsNywwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMTQsMTE3LDAsMTE2LDgsMCwxMjQsMywwLDEwMCwKKyAgICAyLDAsMTMxLDIsMCwxMiwxMTQsMTE3LDAsMTE2LDksMCwxMjQsMCwwLDEwNiwKKyAgICA1LDAsMTMxLDEsMCwxMDAsMywwLDI1LDEwMywxLDAsMTI0LDMsMCw5NSwKKyAgICAxMCwwLDExMCwwLDAsMTI0LDMsMCw4Myw4NywxMTAsNDYsMCwxLDEsMSwKKyAgICAxMjQsMiwwLDEyLDExNCwxNjMsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMDcsNiwwLDExNCwxNjMsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCw2MSwKKyAgICAxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLDgzLDQwLAorICAgIDUsMCwwLDAsMTE3LDI1LDAsMCwwLDc2LDExMSw5NywxMDAsMzIsOTcsMTEwLAorICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQ2LDExNywzMywwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwKKyAgICAxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5NSwxMDUsMCwwLDAsMCw3OCw0MCwxMSwwLDAsMCwKKyAgICAxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LAorICAgIDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwKKyAgICAxMDEsMTAwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwKKyAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNyw0LDAsMCwKKyAgICAwLDExMiw5NywxMTYsMTA0LDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsCisgICAgMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsMTA1LAorICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDcsMCwwLDAsMTA0LDk3LAorICAgIDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5NSw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwKKyAgICAwLDAsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNyw2LDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk4LDQsMCwwLDExNSwyNCwwLDAsMCwwLDUsMTUsMSwzLAorICAgIDEsOSwxLDE1LDEsMTYsMSwzMSwxLDI4LDEsOCwxLDMsMSwyMiwKKyAgICAxLDEzLDEsMTE3LDMxLDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwxMTUsNDgsMCwwLAorICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsMSwwLAorICAgIDI1LDEzNywwLDAsMTE2LDIsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzNCwwLDAsMTE2LDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsCisgICAgODMsNDAsNCwwLDAsMCwxMTcsNDksMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDEwNSwxLDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwKKyAgICAwLDAsNTEsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsOTMsMjEsCisgICAgMCwxMjUsMSwwLDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLDIzLDEwNywyLAorICAgIDAsODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNzgsNDAsMCwwLAorICAgIDAsMCw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LDQ4LDExNyw2LAorICAgIDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDQwLDEsMCwwLDAsMTE3LDksCisgICAgMCwwLDAsMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCwKKyAgICA2MiwxMTksNCwwLDAsMTE1LDIsMCwwLDAsNiwxLDExNyw0OSwwLDAsCisgICAgMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwKKyAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsCisgICAgMTE0LDYyLDQwLDQsMCwwLDAsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDMsMCwwLDAsOTcsMTEwLDEyMSwxMTcsMTgsMCwwLDAsNjksODgsODQsCisgICAgNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDAsCisgICAgMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwKKyAgICAwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsCisgICAgMSwwLDAsMCwxMTcsOSwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwxMTYsNCwwLDAsMTE1LDYsMCwwLDAsMCwyLDE5LDEsCisgICAgMTgsMSwxMTcsMzAsMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsCisgICAgMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDYzLDAsMCwwLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LDExMCwzMiwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCw0MCwxLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsCisgICAgMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDEyMiwKKyAgICA0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI4LDAsMCwwLDY5LAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1MywKKyAgICAwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LAorICAgIDExNSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDQwLDEsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLAorICAgIDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTI2LDQsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMiwxMTcsMzAsMCwwLDAsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCwxMiwwLDAsCisgICAgMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsCisgICAgMCwwLDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsCisgICAgMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LAorICAgIDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDgsMCwwLDAsOTUsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDExNywxMSwwLDAsMCw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsMTE1LDEwMSwxMTYsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMCwwLDAsMCwxMTUsMTAxLDExNiw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLAorICAgIDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDE5LDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsCisgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDg2LDQsMCwwLDExNSwxNiwwLAorICAgIDAsMCwxNiw2LDYsMiwxMiw0LDMsMSwzLDEsMjQsMTYsMTIsNiwKKyAgICAxMiw0LDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwwLDExNSwKKyAgICAxMzQsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwKKyAgICAwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsCisgICAgMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCisgICAgNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwKKyAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsCisgICAgMTMyLDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKKyAgICA5LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNiwKKyAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTgsMCwxMDAsMTksMCwKKyAgICAxMzIsMCwwLDkwLDEyLDAsMTAwLDIwLDAsODMsNDAsMjEsMCwwLDAsMTE3LAorICAgIDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCwxMTcsMzcsMSwwLDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwKKyAgICAxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwzMiwzMiw3MywKKyAgICAxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LAorICAgIDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsMzIsMTE3LDExMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwxMCwzMiwzMiwKKyAgICAzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiw4NywxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSw0NCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTExLDExOSwxMTAsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwxMDksMTEyLDExNywKKyAgICAxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLDcwLDExMSwxMTQsCisgICAgMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDk5LDQsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDUyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LAorICAgIDIsMCwxMjQsMCwwLDk1LDEsMCwxMTYsMiwwLDEyNCwwLDAsMTA2LDMsCisgICAgMCwxMzEsMCwwLDEzMSwxLDAsMTI0LDAsMCw5NSw0LDAsMTI0LDMsMCwKKyAgICAxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsCisgICAgNDAsNiwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsCisgICAgNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTYsMTE3LAorICAgIDExMiwxMDgsMTAxLDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxNywwLDAsMCw5NSwxMDgsOTcsCisgICAgMTE1LDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwKKyAgICA0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLAorICAgIDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsCisgICAgMTEsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTM4LDQsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMSw5LDEsOSwxLDIxLDEsMTE3LDIzLDAsMCwwLDk1LDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMCwwLDAsMTI0LAorICAgIDAsMCwxMDYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwwLDkyLDMsCisgICAgMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwyLDAsCisgICAgMTA3LDIsMCwxMTQsNDMsMCwxMDAsNiwwLDgzLDEyNCwxLDAsMTAwLDUsMCwKKyAgICAxMDIsMiwwLDgzLDQwLDcsMCwwLDAsMTE3LDYyLDAsMCwwLDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLDEwMiwKKyAgICAzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ1LAorICAgIDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LDExNiwKKyAgICAxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsMTEwLDk3LDEwOSwxMDEsNDEsMTE3LDEsMCwwLAorICAgIDAsNDYsMTE3LDAsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LAorICAgIDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwxMTUsCisgICAgMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLAorICAgIDExNyw1LDAsMCwwLDk1LDExMCw5NywxMDksMTAxLDExNywxMCwwLDAsMCwxMTQsCisgICAgMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCw0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNiwwLDAsMCwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDExNywzLDAsMCwwLDEwMCwxMTEsMTE2LDExNywyLDAsMCwwLDEwOSwKKyAgICAxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjMsMCwKKyAgICAwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE0NCw0LDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDIsMjcsMSwxMiwyLDQsMywxMTcsMzgsMCwwLDAsOTUsCisgICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExMCw5NywxMDksMTAxLDExNSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMjQsCisgICAgMCwwLDEwNiwwLDAsMTMxLDAsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwKKyAgICAwLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMjUsMTI0LDIsCisgICAgMCwxMzEsMiwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsNCwwLDAsMCwKKyAgICAxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExNyw3LDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNywzLDAsMCwwLDExNSwxMjEsMTE1LAorICAgIDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MCwzLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTgsMCwwLDAsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsMTQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwxNTQsNCwwLDAsMTE1LDQsMCwwLDAsMCwxLAorICAgIDE4LDEsMTE3LDMxLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDk1LDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwMywwLDAsMCwKKyAgICAxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LAorICAgIDEsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMDcsMywwLDExNCw5NiwKKyAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwKKyAgICAxMzEsMiwwLDkyLDIsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsCisgICAgMCwwLDEwNyw4LDAsMTE0LDg0LDAsMTI0LDMsMCwxMjQsMCwwLDk1LDYsCisgICAgMCwxMTAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTEwLDAsMCwKKyAgICAxMjQsMCwwLDEwNiw2LDAsODMsNDAsMSwwLDAsMCw3OCw0MCw3LDAsCisgICAgMCwwLDExNyw1LDAsMCwwLDExNiwxMTcsMTEyLDEwOCwxMDEsMTE3LDE2LDAsMCwKKyAgICAwLDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDE3LDAsMCwwLDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNyw1LDAsMCwwLDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNywxMSwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDgsCisgICAgMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSwKKyAgICA5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDE1OCw0LDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMCwyLDE4LDEsMTUsMSwyNywzLDEyLDEsMTIsMSwxMiwxLDExNywKKyAgICAyNywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAorICAgIDExNiwxMDQsNDYsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMTMxLDEsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLAorICAgIDIsMCwwLDAsMTE3LDQsMCwwLDAsMTA1LDExNiwxMDEsMTE0LDExNywxMiwwLAorICAgIDAsMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsNDAsMSwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsCisgICAgMTE2LDEwMSwxMTQsOTUsOTUsMTcwLDQsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMTcsMjMsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKKyAgICA5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCisgICAgMCwwLDEzMSwxLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwyLDAsMCwKKyAgICAwLDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNywxMiwwLDAsMCw5NSwxMTQsCisgICAgMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsNDAsMSwwLDAsMCwxMTcsCisgICAgNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsMCw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwKKyAgICAxNzMsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyMiwwLDAsMCwKKyAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsCisgICAgOTUsMTA4LDEwMSwxMTAsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTE3LDIwLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MCwKKyAgICAyLDAsMCwwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LAorICAgIDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsNDAsMSwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsCisgICAgMTc2LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMjMsMCwwLDAsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsCisgICAgMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDEwNyw2LDAsCisgICAgODMsNDAsMSwwLDAsMCw3OCw0MCwxLDAsMCwwLDExNywxMiwwLDAsCisgICAgMCw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsNDAsMiwwLAorICAgIDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsCisgICAgMTA1LDExNiwxMDEsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDEyLDAsMCwwLDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LAorICAgIDk1LDE3OSw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI3LDAsMCwKKyAgICAwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsCisgICAgNDAsMiwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsCisgICAgNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDEwNSwxMTYsMTAxLAorICAgIDEwOSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw2LDAsCisgICAgMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTgyLDQsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMTcsMjEsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNzgsNDAsMTMsCisgICAgMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywKKyAgICAxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMjMsMCwwLDAsOTUsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE1LDExNywxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCw5NSwKKyAgICAxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwOCwKKyAgICAxMDEsMTEwLDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSwKKyAgICA5NSwxMTcsMTIsMCwwLDAsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsCisgICAgOTUsOTUsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw0MCwxLDAsCisgICAgMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsCisgICAgOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwKKyAgICAwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDEzMSw0LDAsMCwxMTUsMjAsMCwwLDAsMTYsNSw2LDIsMTIsNiwxMiwKKyAgICAxMCwxMiw0LDEyLDEyLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE3LDE0LDAsCisgICAgMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwKKyAgICAwLDY2LDAsMCwwLDExNSw2OCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLAorICAgIDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwKKyAgICAxMzIsMCwwLDkwLDMsMCwxMDEsNCwwLDEwMCwzLDAsMTAwLDQsMCwxMzIsCisgICAgMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDUsMCwxMDAsNiwKKyAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAwLDcsMCw4Myw0MCw4LAorICAgIDAsMCwwLDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSw0LDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsCisgICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsCisgICAgMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LAorICAgIDQwLDIsMCwwLDAsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwxMTcsNSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsMTEsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTg3LDQsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMSwxMTcsMjQsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsCisgICAgMTA2LDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MCwyLDAsCisgICAgMCwwLDc4LDExNywyNSwwLDAsMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAzOSwxMjMsMTI1LDM5LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLAorICAgIDYyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LAorICAgIDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSw0MCwyLAorICAgIDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDYsMCwwLDAsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDE5MCw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI3LDAsCisgICAgMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsMTI0LDAsMCwKKyAgICAxMDYsMSwwLDEzMSwyLDAsMSwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwKKyAgICA5NSwyLDAsMTI0LDEsMCw4Myw0MCwyLDAsMCwwLDExNywyNCwwLDAsCisgICAgMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDExNywzOCwwLDAsMCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw0MCwzLDAsMCwwLDExNywxNiwwLDAsMCw5NSwxMTgsCisgICAgMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNSwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5NSw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDgsCisgICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTQsNCwwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwzLDE2LDEsMTIsMSwxMTcsMjcsMCwwLDAsNzgsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsOCwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LAorICAgIDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDExLDAsMCwwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwxMTcsMTcsMCwwLDAsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsCisgICAgMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsCisgICAgMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDE4Niw0LDAsMCwxMTUsNiwwLDAsMCwxNiwxLDEyLDMsCisgICAgMTgsNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsNCwwLDAsMCw2NiwwLDAsMCwxMTUsMTE5LDAsMCwwLAorICAgIDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLAorICAgIDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwwLDEwMCw0LDAsMTAwLDUsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLDEwMSw0LDAsMTAwLDYsMCwKKyAgICAxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCw3LDAsMTAxLDQsMCwxMDAsCisgICAgOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNCwKKyAgICAwLDEwMCwxMiwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwxLDAsMTMxLDEsMCwKKyAgICA5MCwxMCwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywxMCwwLDAsCisgICAgMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDYyLDAsMCwwLAorICAgIDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLAorICAgIDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsOTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw1OCwwLDAsMCwxMjAsNTEsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTA2LDIsMCwxMzEsMCwwLDY4LDkzLDM0LDAsMTI1LDEsMCwxMTYsMywKKyAgICAwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwxNiwwLDEyNCwxLDAsCisgICAgMTA2LDQsMCwxMzEsMCwwLDEsMTEzLDE2LDAsMTEzLDE2LDAsODcsMTAwLDIsCisgICAgMCw4Myw0MCwzLDAsMCwwLDExNywxMjUsMCwwLDAsNjcsOTcsMTA4LDEwOCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAorICAgIDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsCisgICAgMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDExNywxNywwLDAsMCwxMDUsMTEwLAorICAgIDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LAorICAgIDQwLDUsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDE5LDAsCisgICAgMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMTcsNiwwLDAsMCwxMTgsOTcsMTA4LDExNywxMDEsMTE1LAorICAgIDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTUsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywKKyAgICA2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwKKyAgICAxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsMjA4LDQsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTE3LDI4LDAsMCwwLAorICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsCisgICAgMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw5NCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LAorICAgIDIsMCwxMDYsMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLAorICAgIDAsMCwxMjAsNTksMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsNDQsMCwxMjUsCisgICAgMiwwLDEyMSwxNCwwLDEyNCwyLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDg3LAorICAgIDExMywzOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsODEsMCwxLDEsMSwKKyAgICAxMTksMzgsMCw4OSwxMTMsMzgsMCw4OCwxMTMsMzgsMCw4NywxMDAsMiwwLDgzLAorICAgIDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMTEzLDAsMCwwLDgzLDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDMyLDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwzMiwxMTEsMTAyLAorICAgIDMyLDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDM5LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTUsMzksMzIsMTA1LDExNSwzMiwxMDIsOTcsMTA4LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNywxMTUsMTAxLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwKKyAgICAxMTEsMTExLDEwNywxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE3LAorICAgIDIzLDAsMCwwLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LDQwLDcsMCwwLAorICAgIDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDEwLDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMTE3LDksMCwwLDAsOTUsMTE5LDk3LAorICAgIDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDExNyw0LDAsMCwwLDExOSw5NywxMTQsMTEwLDExNywKKyAgICAxMywwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwKKyAgICAxMDMsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDMsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTksMTA4LDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsNCwwLDAsMCwxMDQsMTExLDExMSwxMDcsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA0LDExMSwxMTEsMTA3LDExNSwyMTYsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNywKKyAgICA5LDEsMTksMSwxNiwxLDMsMSwxNCwxLDEzLDEsMTIsMiwxMTcsMjIsCisgICAgMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDkxLAorICAgIDAsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMSwwLDEwMCwKKyAgICAyLDAsMTI1LDEsMCwxMTAsMCwwLDEyMSwxNywwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwxMTYsMiwwLAorICAgIDEwNywxMCwwLDExNCw4NiwwLDEsMSwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsCisgICAgMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMjQsMSwwLDYwLDg5LDExMCwxLDAsODgsMTI0LDIsMCw4Myw0MCwzLAorICAgIDAsMCwwLDExNywyMTAsMCwwLDAsNzEsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LAorICAgIDExNCwxMjEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDk5LDk3LDk5LDEwNCwxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDk3LDExMiwxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsCisgICAgOTksOTcsOTksMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTAsMTExLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsCisgICAgOTgsMTA4LDEwMSw0NCwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LDExMSwxMTAsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNywwLDAsMCwwLDExNywKKyAgICAxLDAsMCwwLDQ2LDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEyMSwxMTUsMTE3LDE5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsOCwwLDAsMCw3NSwKKyAgICAxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0MCwzLDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDk5LDEwOCwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwKKyAgICAwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMjAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIzMyw0LDAsCisgICAgMCwxMTUsMTYsMCwwLDAsMCw4LDEyLDEsOSwxLDMsMSwxNywxLAorICAgIDEzLDEsMTUsMSwxOCwxLDExNywzMSwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw4LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE2MiwwLDAsMCwxMDMsMCwwLDEyNSwzLDAsMTIwLDE0OSwwLDEyNCwyLDAsCisgICAgNjgsOTMsMTMxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDQsMCwKKyAgICAxMzEsMSwwLDEyNSw1LDAsMTI0LDUsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LAorICAgIDEzLDAsMTE2LDIsMCwxMjQsNSwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsODUsCisgICAgMCwxMjQsNSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwKKyAgICAxMjUsNiwwLDEyNSw3LDAsMTEwLDIxLDAsMTI0LDUsMCwxMDYsNCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCwxMjUsNiwwLDEwMywwLDAsMTI1LDcsMCwxMjQsNiwKKyAgICAwLDEwMCwyLDAsMTA3LDksMCwxMTQsMTI4LDAsMTI0LDYsMCwxMjQsMywwLAorICAgIDEwMiwyLDAsODMsMTI0LDMsMCwxMDYsNSwwLDEyNCw3LDAsMTMxLDEsMCwKKyAgICAxLDExMywxMywwLDExMywxMywwLDg3LDEwMCwyLDAsMTI0LDMsMCwxMDIsMiwKKyAgICAwLDgzLDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsNjMsMCwwLDAsCisgICAgNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTE3LAorICAgIDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDc4LAorICAgIDQwLDYsMCwwLDAsMTE3LDIwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LAorICAgIDExNiwxMTYsMTE0LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDQwLDgsCisgICAgMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwKKyAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDE0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNyw1LDAsMCwwLDEwMSwxMTAsMTE2LDExNCwxMjEsMTE3LDYsCisgICAgMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDYsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsOCwwLDAsMCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsCisgICAgMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMjUwLDQsMCwKKyAgICAwLDExNSwyNCwwLDAsMCwwLDUsNiwxLDEzLDEsMTUsMSwxMiwxLAorICAgIDE1LDEsMjQsMiwxNSwxLDYsMSwxMiwyLDEwLDUsMjAsMiwxMTcsMjIsCisgICAgMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMywwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsOTcsCisgICAgMCwwLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDI0LDAsMTE2LAorICAgIDEsMCwxMDYsMiwwLDEyNSwyLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwzLAorICAgIDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsOTIsMiwwLDEyNSwzLDAsCisgICAgMTI1LDQsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjQsMCwxMjQsCisgICAgMywwLDgzLDEyNCw0LDAsMTE0LDg5LDAsMTE2LDQsMCwxMjQsMSwwLDEyNCwKKyAgICA0LDAsMTI0LDAsMCwxMDYsMywwLDEzMSwzLDAsODMsMTAwLDEsMCw4MywKKyAgICAxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDk4LDAsMCwwLDcwLDEwNSwKKyAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsCisgICAgMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsCisgICAgNzgsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsCisgICAgMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMTEsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsCisgICAgMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNywxNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTksNSwwLDAsMTE1LDE2LDAsMCwwLDAsNCwxMiwxLDEyLDEsCisgICAgMjQsMSwxMiwxLDQsMiw2LDMsMTksMiwxMTcsMjIsMCwwLDAsODAsCisgICAgOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MCwxMSwwLDAsMCwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsCisgICAgOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwKKyAgICAxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNywxNywwLDAsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKKyAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNywyMCwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMTE3LDExLDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDExLDAsMCwKKyAgICAwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwKKyAgICAwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLAorICAgIDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIwNCw0LDAsMCwxMTUsCisgICAgMTQsMCwwLDAsMTYsMiw2LDIsMTgsOCwxOCwxNywxOCwxNywxOCwyNSwKKyAgICAzLDEsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsCisgICAgMCwwLDY2LDAsMCwwLDExNSwxMTAsMCwwLDAsMTI0LDAsMCw2OSwxMDEsCisgICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCisgICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwKKyAgICAxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSw2LDAsOTAsNywwLDEwMCwKKyAgICA2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsOCwwLDEwMCw5LAorICAgIDAsMTMyLDAsMCw5MCw5LDAsMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsCisgICAgMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLAorICAgIDAsMCw5MCwxMiwwLDEwMCwxNCwwLDgzLDQwLDE1LDAsMCwwLDExNywxMCwKKyAgICAwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxNzIsMCwKKyAgICAwLDAsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LAorICAgIDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsCisgICAgMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw3LAorICAgIDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwKKyAgICAwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwyLDAsMTM3LDAsMCwxMjUsNCwKKyAgICAwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwKKyAgICAxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCw2OCwxMzEsMSwwLDEzMSwxLDAsCisgICAgMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMSwwLDEyNCwxLAorICAgIDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwwLDk1LDIsMCwxMDAsNiwwLAorICAgIDEyNCwwLDAsOTUsMywwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLDk1LAorICAgIDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSw2LDAsMTAwLDUsCisgICAgMCw4Myw0MCw3LDAsMCwwLDExNywyMDEsMCwwLDAsNzMsMTEwLDEwNSwxMTYsCisgICAgMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLAorICAgIDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsCisgICAgMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDUxLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LAorICAgIDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNCwxMDEsOTksMTExLAorICAgIDEwMywxMTAsMTA1LDEyMiwxMDEsMTE1LDQ0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDk3LDExMCwxMDAsMzIsOTcsMzIsOTgsMTExLDExMSwxMDgsMTAxLDk3LDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LAorICAgIDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwwLDEwMiwyLAorICAgIDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCwKKyAgICA0MCwwLDAsMCwwLDQwLDIsMCwwLDAsMTE3LDIsMCwwLDAsNDYsCisgICAgNDgsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDAsMSwwLDAsCisgICAgMCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw5LDAsMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCwKKyAgICA2Miw1Miw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTE3LDM4LDAsMCwKKyAgICAwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsCisgICAgMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE3LDEsMCwwLDAsNDYsMTA1LDEsMCwKKyAgICAwLDAsNzgsMTA1LDI1NSwyNTUsMjU1LDI1NSw0MCw3LDAsMCwwLDExNyw2LDAsCisgICAgMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw4LDAsMCwwLDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxMSwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDExNywzLAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxOSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywKKyAgICAxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQwLDUsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwKKyAgICAwLDExMiw5NywxMTYsMTA0LDExNyw3LDAsMCwwLDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE1LDExNyw3LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNyw4LDAsCisgICAgMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDAsMCwwLDAsMCw0MCwKKyAgICAxLDAsMCwwLDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0Niw1LAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsMSwxOSwxLDM2LDEsOSwKKyAgICAyLDE1LDEsOSwxLDEyLDEsMTE3LDE5LDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsMTI0LDAsMCw5NSwKKyAgICAwLDAsMTAwLDIsMCw4Myw0MCw0LDAsMCwwLDExNywzMSwwLDAsMCwKKyAgICA3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksMTAxLDQ2LDEwNSwKKyAgICAxLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsMSwwLDAsMCwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMDUsMTEwLAorICAgIDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDYwLAorICAgIDUsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsMCwwLDAsNzAsCisgICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LAorICAgIDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwxMiwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTcyLDEsMCwwLDEwMCw1LDAsMTI1LDIsMCwxMjQsMSwwLDEwNiwxLAorICAgIDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI1LDMsMCwxMjEsMjUsCisgICAgMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLDAsCisgICAgMTA2LDUsMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDYsMCwxMDcsMTAsCisgICAgMCwxMTQsNzYsMCwxLDEsMSwxMDAsNiwwLDEyNSw0LDAsODksMTEwLDEsCisgICAgMCw4OCwxMjQsNCwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsMywwLDExNCwxMTQsCisgICAgMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCw0LDAsMTI0LDAsCisgICAgMCw5NSw3LDAsMTEwLDAsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE0NywwLAorICAgIDEyNCwwLDAsMTA2LDEwLDAsMTI1LDUsMCwxMjQsMywwLDEwNiwxMSwwLDEzMSwKKyAgICAwLDAsMTI1LDYsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSw1LAorICAgIDAsMTI0LDMsMCwxMjUsNiwwLDEyNCw2LDAsMTI0LDUsMCwxMDcsNiwwLAorICAgIDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMywwLDEzMSwKKyAgICAyLDAsMTI1LDcsMCwxMTYsMTQsMCwxMjQsNywwLDEzMSwxLDAsMTE0LDQ1LAorICAgIDEsMTIwLDkxLDAsMTI0LDAsMCwxMDYsMTUsMCw2OCw5Myw3MSwwLDkyLDIsCisgICAgMCwxMjUsOCwwLDEyNSw5LDAsMTAwLDQsMCwxMjQsOCwwLDIzLDEyNSwxMCwKKyAgICAwLDExNiwxMywwLDEyNCw3LDAsMTI0LDEwLDAsMTMxLDIsMCwxMjUsMTEsMCwKKyAgICAxMTYsMTYsMCwxMjQsMTEsMCwxMzEsMSwwLDExNCwyMTQsMCwxMjQsOSwwLDEyNCwKKyAgICAxLDAsMTI0LDExLDAsMTMxLDIsMCwxMjQsNywwLDEwMywxLDAsMTAyLDIsCisgICAgMCw4MywxMTMsMjE0LDAsODcsMTAwLDcsMCwxMjUsMiwwLDExMyw0NSwxLDExMCwKKyAgICAwLDAsMTIwLDk1LDAsMTI0LDAsMCwxMDYsMTUsMCw2OCw5Myw4NCwwLDkyLAorICAgIDIsMCwxMjUsOCwwLDEyNSw5LDAsMTI0LDYsMCwxMjQsOCwwLDIzLDEyNCwKKyAgICA1LDAsMTA3LDYsMCwxMTQsNTUsMSwxMTYsMTMsMCwxMjQsMCwwLDEwNiw0LAorICAgIDAsMTI0LDMsMCwxMjQsOCwwLDIzLDEzMSwyLDAsMTI1LDExLDAsMTE2LDE2LAorICAgIDAsMTI0LDExLDAsMTMxLDEsMCwxMTQsMTM5LDEsMTI0LDksMCwxMjQsMSwwLAorICAgIDEyNCwxMSwwLDEzMSwyLDAsMTAzLDAsMCwxMDIsMiwwLDgzLDExMyw1NSwxLAorICAgIDExMyw1NSwxLDg3LDEyNCwyLDAsMTE0LDE2MiwxLDEwMCw4LDAsMTI0LDcsMCwKKyAgICAxMDMsMSwwLDEwMiwyLDAsODMsMTAwLDgsMCwxMDMsMCwwLDEwMiwyLDAsCisgICAgODMsNDAsOSwwLDAsMCwxMTcsMTI1LDAsMCwwLDg0LDExNCwxMjEsMzIsMTE2LAorICAgIDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDExNywxLDAsMCwwLDQ2LDEwNSwyLAorICAgIDAsMCwwLDEwNSwxLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw3MCwxMDUsMjU1LDI1NSwyNTUsMjU1LDg0LDc4LDQwLDE5LDAsCisgICAgMCwwLDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLDExNywxMCwwLDAsCisgICAgMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsMywwLDAsMCwKKyAgICA5NSwxMTEsMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LDExNyw0LDAsMCwKKyAgICAwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSwxMTcsNywwLDAsMCw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLAorICAgIDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDExLAorICAgIDAsMCwwLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMSwKKyAgICAwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsMTksCisgICAgMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LAorICAgIDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsMTE3LAorICAgIDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE3LAorICAgIDgsMCwwLDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDEyLDAsMCwKKyAgICAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDExNyw0LDAsCisgICAgMCwwLDg0LDExNCwxMTcsMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLAorICAgIDEyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLAorICAgIDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDEyLDAsMCwwLDEwNSwKKyAgICAxMTUsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTE3LDExLDAsMCwwLAorICAgIDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw1LDAsMCwwLAorICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTksOTcsOTksMTA0LDEwMSwxMTcsCisgICAgMTIsMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTcsOSwwLDAsMCw5OCw5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNyw2LAorICAgIDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDExNyw2LDAsMCwwLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE3LDEzLDAsMCwwLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDksMCwwLDAsMTAyLDExNywxMDgsMTA4LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDY2LDUsMCwwLDExNSw2MiwwLDAsMCwwLDMsNiwxLDE5LDEsMywKKyAgICAxLDI1LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwxMiwyLDksMSw5LAorICAgIDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwxMiwxLDIyLDEsMTAsCisgICAgMSwxNSwxLDEyLDEsMjYsNCwxMiwyLDIyLDEsMTYsMSwyMiwxLDEyLAorICAgIDEsMjYsMSw2LDEsMTMsMSwxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsOSwwLDAsMCwxMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjU1LDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMjUsMSwwLDEyMSwxOSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMjQsMCw0LDExNiwzLDAsMTA3LAorICAgIDEwLDAsMTE0LDU0LDAsMSwxLDEsMTAzLDAsMCwxMjUsMiwwLDg5LDExMCwKKyAgICAxLDAsODgsMTE2LDQsMCwxMDYsNSwwLDEwNiw2LDAsMTAwLDEsMCwxMzEsCisgICAgMSwwLDExNSw5MSwwLDExNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLAorICAgIDAsOTUsOCwwLDExMCwxMTEsMCwxMTYsNywwLDEzMSwwLDAsMTI1LDMsMCwKKyAgICAxMjAsOTAsMCwxMjQsMiwwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLAorICAgIDEwNiw5LDAsMTAwLDIsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSwKKyAgICA2LDAsMTI1LDcsMCwxMjQsNiwwLDExNCwxNzAsMCwxMDAsMywwLDEwNiwxMCwKKyAgICAwLDEyNCw1LDAsMTI0LDcsMCwxMDYsMTEsMCwxMzEsMCwwLDEzMSwyLDAsCisgICAgMTI1LDgsMCwxMTAsNiwwLDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwKKyAgICAxMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMDcsMCw4NywxMjQsMywwLAorICAgIDEyNCwwLDAsOTUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDExNiwKKyAgICAxMywwLDEzMSwxLDAsMTE0LDI1MSwwLDExNiw3LDAsMTAwLDQsMCwxMDAsNSwKKyAgICAwLDEzMiwwLDAsMTI0LDIsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTI0LDAsCisgICAgMCw5NSwxNCwwLDExMCwwLDAsMTAwLDYsMCw4Myw0MCw3LDAsMCwwLAorICAgIDExNyw2OCwwLDAsMCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNywzLDAsMCwwLDExOSwxMDUsCisgICAgMTEwLDExNywxLDAsMCwwLDQ2LDExNyw1LDAsMCwwLDEyMywxMjUsNDYsMTIzLAorICAgIDEyNSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsCisgICAgMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywKKyAgICAwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwwLDAsODYsMSwxMTMsCisgICAgMywwLDEwMCwwLDAsODMsNDAsMSwwLDAsMCw3OCw0MCwxLDAsMCwKKyAgICAwLDExNyw1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsNDAsMiwwLDAsMCwKKyAgICAxMTcsMiwwLDAsMCw0Niw0OCwxMTcsMiwwLDAsMCwxMDIsMTEwLDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsCisgICAgMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDEzNiw1LDAsMCwxMTUsMiwwLDAsCisgICAgMCw2LDAsMTE3LDQxLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsNjAsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCwKKyAgICA2Miw3OCw0MCwxNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw3LDAsMCwwLDEwOCwxMDUsMTE1LAorICAgIDExNiwxMDAsMTA1LDExNCwxMTcsMTcsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzgsMTExLDExNiwKKyAgICA3MCwxMTEsMTE3LDExMCwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw4LDAsMCwwLDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwxMTcsCisgICAgMTAsMCwwLDAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDMsCisgICAgMCwwLDAsMTE1LDEwMSwxMTYsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LAorICAgIDExNiwxMDUsMTExLDExMCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywKKyAgICA1LDAsMCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE3LDMsMCwwLDAsOTcsMTAwLAorICAgIDEwMCwxMTcsMjcsMCwwLDAsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCisgICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCisgICAgODMsMTE3LDE5LDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDAsOSwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDgsMCwwLDAsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNywyMSwwLAorICAgIDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDk1LDk5LAorICAgIDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwxMTcsNCwwLDAsMCwxMDUsMTE2LDEwMSwxMDksCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDMsMCwwLDAsMTAwLDExMSwKKyAgICAxMTYsMTE3LDYsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTE3LDgsMCwwLAorICAgIDAsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTA4LDUsMCwwLDExNSwzNCwwLDAsMCwwLDIsCisgICAgOSwxLDMsMSwxOSwxLDEzLDIsMTEsMywxOCwxLDE4LDcsOSwxLAorICAgIDEzLDEsMjQsMSw2LDEsMjcsMiw2LDEsMTcsMSw5LDEsMTgsMSwKKyAgICAxMTcsMjIsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDcsMCwwLDAsCisgICAgMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsMCwxMDIsMiwwLDEwMCwxLAorICAgIDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsMTI0LDIsMCw4Myw0MCwzLAorICAgIDAsMCwwLDExNywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwKKyAgICAxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwKKyAgICAxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsCisgICAgMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksOTcsCisgICAgMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsCisgICAgMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwKKyAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsCisgICAgMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwKKyAgICAxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwxOSwwLDAsCisgICAgMCwxMTUsNDYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTE1LAorICAgIDMzLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAxLDEzMCwxLDAsMTEwLDAsMCwxMzYsMCwwLDEyNCwwLDAsMTM2LDEsMCwKKyAgICAxNDAsMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDQ1LDAsMCwwLDgwLDk3LAorICAgIDExNiwxMDQsMzIsMTA0LDExMSwxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTE3LDMwLDAsMCwwLAorICAgIDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsCisgICAgMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsMCwwLDExNywxMSwwLDAsCisgICAgMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNywxMSwwLDAsCisgICAgMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCw0MCwxLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDIsMCwwLDAsMTE3LAorICAgIDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMTQsMCwwLDAsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMjQsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LAorICAgIDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTQ4LDUsCisgICAgMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDIxLDEsMTE3LDU0LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDMsMCwKKyAgICAwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwxMTcsMTQsMCwwLDAsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSwxMTcsMjQsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwKKyAgICAyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDE0LDAsMCwKKyAgICAwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNyw5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMzgsCisgICAgNSwwLDAsMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDExNywyMCwwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNCwxMTEsMTExLDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMDAsCisgICAgMSwwLDEyNCwwLDAsMTA2LDAsMCwxMDIsMSwwLDIyLDgzLDQwLDIsMCwKKyAgICAwLDAsNzgsMTE3LDE0LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDAsMzcsMTE0LDQxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLAorICAgIDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTU2LDUsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMSwxMTcsMTksMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDAsCisgICAgMTMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LAorICAgIDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTcsMCwwLDAsMTA1LAorICAgIDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwKKyAgICAxMTcsMTcsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsOTUsMTAyLDEwNSwxMDgsMTA4LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNyw5LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNCwxMTEsMTExLDEwNywxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsCisgICAgOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgMzcsNSwwLDAsMTE1LDE2LDAsMCwwLDE2LDcsNiwyLDEyLDE0LDEyLAorICAgIDQsNiwyLDEyLDQyLDEyLDMwLDE4LDE4LDExNywxMCwwLDAsMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDUwLDAsCisgICAgMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAorICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKKyAgICAxMDAsNiwwLDgzLDQwLDcsMCwwLDAsMTE3LDE4LDAsMCwwLDk1LDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwKKyAgICAxMTcsMzYsMCwwLDAsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCwKKyAgICA5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLDAsCisgICAgODMsNDAsMiwwLDAsMCwxMTcsMjQsMCwwLDAsNjUsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAorICAgIDk5LDEwNyw0Niw3OCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwKKyAgICAxMDksMTEyLDExNywxMiwwLDAsMCw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksMTA3LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDksMCwKKyAgICAwLDAsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSwxNjYsNSwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDExNywyOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsCisgICAgMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSw0LDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsCisgICAgMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsNDAsCisgICAgMiwwLDAsMCwxMTcsNjAsMCwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywKKyAgICAzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk3LAorICAgIDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwxMTIsMTE2LAorICAgIDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKKyAgICA5NSwxMDgsMTExLDk5LDEwNyw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDEsMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSwKKyAgICAxMTcsOSwwLDAsMCwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LDEwMSwxMTcsMTMsCisgICAgMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsMTcwLDUsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMiwxMTcsMjcsMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsCisgICAgMTA1LDExNiw5NSw5NSw3OCw0MCw2LDAsMCwwLDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywKKyAgICAxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSwKKyAgICA5OSw5NSw5NSwxMTcsOSwwLDAsMCw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LAorICAgIDk1LDExNyw4LDAsMCwwLDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0MCwxLAorICAgIDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsCisgICAgOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsCisgICAgMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKKyAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDE2Miw1LDAsMCwxMTUsNiwwLDAsMCwxNiwyLAorICAgIDYsMiwxMiw0LDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsOTksMywwLDAsMCwKKyAgICAwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsOTEsMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwxLDAsMTI0LDIsCisgICAgMCwxMDAsMiwwLDI0LDEzMSwyLDAsMTI1LDMsMCwxMTYsMSwwLDEyNCwzLAorICAgIDAsMTMxLDEsMCwxMjQsMiwwLDEwNywwLDAsMTE0LDU1LDAsMTE2LDIsMCwKKyAgICAxMDAsMywwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwzLDAsMTAwLAorICAgIDQsMCwyNSwxMjUsNCwwLDEyNCwwLDAsMTE0LDg3LDAsMTAwLDUsMCwxMDYsCisgICAgMywwLDEyNCw0LDAsMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsCisgICAgNDAsNiwwLDAsMCwxMTcsNTAsMCwwLDAsODIsMTAxLDExNSwxMTEsMTA4LDExOCwKKyAgICAxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLDk3LAorICAgIDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLDQ2LDExNywxLDAsMCwKKyAgICAwLDQ2LDEwNSwxLDAsMCwwLDExNyw1MCwwLDAsMCw5NywxMTYsMTE2LDEwMSwKKyAgICAxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMTEyLAorICAgIDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDEwNSwwLAorICAgIDAsMCwwLDExNyw1LDAsMCwwLDEyMywxMjUsNDYsMTIzLDEyNSw0MCw0LDAsCisgICAgMCwwLDExNyw2LDAsMCwwLDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywzLDAsCisgICAgMCwwLDEwOCwxMDEsMTEwLDExNywxMCwwLDAsMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiw0MCwKKyAgICA1LDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw3LDAsCisgICAgMCwwLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNSwwLDAsMCwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDExNyw0LDAsMCwwLDk4LDEwNSwxMTYsMTE1LDExNyw0LDAsMCwKKyAgICAwLDk4LDk3LDExNSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTMsMCwwLDAsOTUsMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCwKKyAgICA5NywxMDksMTAxLDE3NSw1LDAsMCwxMTUsMTAsMCwwLDAsMCwyLDIyLDEsCisgICAgMTgsMSwxNSwxLDEwLDEsMTE3LDEzLDAsMCwwLDk1LDExNCwxMDEsMTE1LDExMSwKKyAgICAxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsNCwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsMTM4LDAsCisgICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMTUsMjgsMCwxMTYsMiwwLDEwNiwzLAorICAgIDAsMTAwLDEsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMTAsMCwwLDEyMCwxMDMsCisgICAgMCwxMTYsMCwwLDEwNiwxLDAsNjgsOTMsODgsMCwxMjUsMiwwLDExNiw1LAorICAgIDAsMTMxLDAsMCwxNDMsMjMsMCwxLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMywwLDg3LDEwMCwyLDAsODEsODgsCisgICAgMTI0LDMsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDM4LDAsMTI0LDAsMCwxMTYsCisgICAgMCwwLDEwNiw4LDAsMTA3LDcsMCwxMTQsMTA5LDAsMTI0LDMsMCw4MywxMTYsCisgICAgMCwwLDEwNiw4LDAsMTI0LDAsMCwyNSwxMDYsOSwwLDgzLDExMywzOCwwLAorICAgIDExMywzOCwwLDg3LDEwMCwyLDAsODMsMTAwLDIsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDExNywyMywwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTcsMjIsMCwKKyAgICAwLDAsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDc4LDQwLDEwLDAsMCwwLDExNywzLAorICAgIDAsMCwwLDExNSwxMjEsMTE1LDExNyw5LDAsMCwwLDEwOSwxMDEsMTE2LDk3LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNyw5LDAsMCwwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsCisgICAgMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksOTcsMTE0LDExMCwxMTcsMTMsMCwwLDAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNywxOCwwLAorICAgIDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwKKyAgICAxMTYsMTAxLDEyMCwxMTYsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLAorICAgIDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsNDAsNCwwLDAsMCwxMTcsNCwwLAorICAgIDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsCisgICAgNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNiwwLDAsMCwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxODQsNSwwLDAsMTE1LDIwLDAsMCwwLDAsMiw5LDEsMTksCisgICAgMSwxNiwxLDEwLDEsMjQsMSwxMiwyLDE1LDEsNCwyLDIxLDIsMTE3LAorICAgIDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxOTQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDExNiwxLDAsMTMxLDIsMCwxMTUsNDUsMCwxMTYsMiwwLDEwMCwxLDAsMTA2LAorICAgIDMsMCwxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLAorICAgIDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwwLAorICAgIDExNCw3MiwwLDExNiw1LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLAorICAgIDAsMCwxMjQsMSwwLDExNCwxNTYsMCwxMTYsMCwwLDEyNCwxLDAsMTE2LDEsCisgICAgMCwxMzEsMiwwLDExNSwxMDgsMCwxMTYsMiwwLDEwMCw0LDAsMTMxLDEsMCwKKyAgICAxMzAsMSwwLDExMywxNTYsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsCisgICAgNywwLDExNCwxNTYsMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywKKyAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwKKyAgICAxMTMsMTU2LDAsMTEwLDAsMCwxMjQsMCwwLDEyLDExNCwxOTAsMCwxMjQsMiwwLAorICAgIDEwMCwyLDAsMTA3LDIsMCwxMTQsMTkwLDAsMTE2LDUsMCwxMDAsNiwwLDEzMSwKKyAgICAxLDAsMTMwLDEsMCwxMTAsMCwwLDEwMCw3LDAsODMsNDAsOCwwLDAsCisgICAgMCwxMTcsMjgsMCwwLDAsODYsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiw5NywxMTQsMTAzLAorICAgIDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMzQsMTE1LDk3LDExMCwxMDEsCisgICAgMzQsNDYsMTE3LDMxLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDExNiwxMTQsNDQsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwxMDUsMCwwLDAsMCwxMTcsMTgsMCwwLDAsCisgICAgMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLAorICAgIDMyLDQ4LDExNywzMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwKKyAgICAxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMTcsNjEsMCwwLDAsODAsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LAorICAgIDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwKKyAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE3LDE3LDAsMCwwLDY5LDEwOSwxMTIsCisgICAgMTE2LDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MCwKKyAgICA5LDAsMCwwLDExNywxMCwwLDAsMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMTAsOTksMTAxLDExNywzLDAsMCwwLDExNSwxMTYsMTE0LDExNyw5LDAsMCwwLAorICAgIDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNiwwLDAsMCwxMDIsMTExLAorICAgIDExNCwxMDksOTcsMTE2LDExNyw0LDAsMCwwLDExNiwxMjEsMTEyLDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNywzLDAsMCwKKyAgICAwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAxMTcsMTEsMCwwLDAsODMsMTIxLDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywKKyAgICAwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsMTA4LAorICAgIDEwMSwxMTgsMTAxLDEwOCwxMTcsMywwLDAsMCwxMDksMTE1LDEwMyw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMywwLDAsMCw5NSwxMTUsOTcsCisgICAgMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDIwMSw1LDAsMCwxMTUsMjQsCisgICAgMCwwLDAsMCwyLDE1LDEsMzAsMSwxMiwxLDE1LDEsNiwxLDE1LAorICAgIDEsMTUsMSwxNSwxLDYsMiwyNywxLDE5LDEsMTE3LDEzLDAsMCwwLAorICAgIDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMTE3LDIwLDAsCisgICAgMCwwLDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMDAsMzIsMTIzLDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsMCwwLDksCisgICAgMCwwLDAsMjcsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDIsMCwwLAorICAgIDEwMCwwLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsCisgICAgMSwwLDEwMCwyLDAsMjUsMTI1LDMsMCwxMjQsMywwLDExNCwxNzgsMCwxMjQsCisgICAgMywwLDExNiwyLDAsMTA2LDMsMCwxMDcsNywwLDExNCw2MiwwLDExNiw0LAorICAgIDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsMSwxMTAsMCwwLDEyNCwwLAorICAgIDAsMTE2LDIsMCwxMDYsMywwLDEwNyw2LDAsMTE0LDg4LDAsMTE2LDIsMCwKKyAgICAxMDYsMywwLDEyNCwwLDAsMjUsODMsMTE2LDIsMCwxMDYsMywwLDEyNCwzLAorICAgIDAsMjUsMTI1LDQsMCwxMjEsMTMsMCwxMjQsNCwwLDEwNiw1LDAsMTI1LDIsCisgICAgMCw4NywxMTMsMTc4LDAsNCwxMTYsNiwwLDEwNywxMCwwLDExNCwxNzQsMCwxLAorICAgIDEsMSwxMTYsNywwLDEwMCwzLDAsMjMsMTA2LDgsMCwxMjQsMCwwLDEyNCwKKyAgICAzLDAsMTMxLDIsMCwxMjUsNSwwLDExNiw5LDAsMTI0LDUsMCwxMDAsNCwKKyAgICAwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDg5LDExMywxNzgsMCw4OCwxMTAsCisgICAgMCwwLDExNiwxMCwwLDEyNCwwLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw2LAorICAgIDAsMTI0LDYsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI1MCwwLDExNiw5LDAsCisgICAgMTE2LDcsMCwxMDYsOCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwKKyAgICAwLDAsMTMxLDEsMSwxMjUsNywwLDEwMCwxMCwwLDEyNCw3LDAsOTUsMTIsCisgICAgMCwxMjQsNywwLDEzMCwxLDAsMTEwLDQ3LDAsMTI0LDAsMCwxMTYsMiwwLAorICAgIDEwNiwzLDAsMTA3LDcsMCwxMTQsNDEsMSwxMjQsNiwwLDEwNiwxMywwLDEyNCwKKyAgICAwLDAsMTMxLDEsMCwxLDExNiwxNCwwLDEwMCw1LDAsMTI0LDAsMCwxMjQsCisgICAgNiwwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwyLDAsMTA2LDMsMCwxMjQsCisgICAgMCwwLDI1LDEyNSw4LDAsMTI0LDMsMCwxMTQsMTA1LDEsMTE2LDIsMCwxMDYsCisgICAgMywwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTUsMCwxMjQsNCwwLDEyNCwKKyAgICAwLDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDYsMCwyNSwxMjQsCisgICAgOCwwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwxNiwwLDEyNCw4LDAsMTAwLAorICAgIDcsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTIsCisgICAgMSwxMjEsNTksMCwxMjQsOCwwLDEwNiwxNywwLDEyNCw4LDAsOTUsMTgsMCwKKyAgICAxMTYsMTksMCwxMjQsOCwwLDEwMCw4LDAsMTMxLDIsMCwxMTUsMTg3LDEsMTI0LAorICAgIDgsMCwxMDYsMTgsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsMiwKKyAgICAwLDI1LDEyNCw4LDAsOTUsMTgsMCwxMTAsMCwwLDg3LDExMywyMTIsMSw0LAorICAgIDExNiw2LDAsMTA3LDEwLDAsMTE0LDIwOCwxLDEsMSwxLDg5LDExMywyMTIsMSwKKyAgICA4OCwxMTAsMCwwLDExNiwxOSwwLDEyNCw4LDAsMTAwLDksMCwxMzEsMiwwLAorICAgIDExNSw4LDIsMTIxLDEzLDAsMTI0LDYsMCwxMjQsOCwwLDk1LDIwLDAsODcsCisgICAgMTEzLDgsMiw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDQsMiwxLDEsMSwKKyAgICA4OSwxMTMsOCwyLDg4LDExMCwwLDAsMTI0LDgsMCw4Myw0MCwxMSwwLDAsCisgICAgMCw3OCwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsMCwxMTcsMjEsMCwKKyAgICAwLDAsNTksMzIsMTIzLDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsMTgsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwxMjUsCisgICAgMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsMTA1LDIsMCwwLDAsMTE3LDExLDAsMCwKKyAgICAwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSw4NCw0MCwyMSwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsCisgICAgMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywyNSwwLDAsMCw5NSwKKyAgICA5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LAorICAgIDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5NSwxMTcsMTQsMCwwLDAsNjUsMTE2LDExNiwxMTQsMTA1LDk4LAorICAgIDExNywxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsOCwwLDAsMCw5NSw2OSw4MiwKKyAgICA4Miw5NSw3Nyw4Myw3MSwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTcsMTIsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywxMCwwLDAsMCw5NSwKKyAgICAxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsMTAwLDExNywxMSwwLDAsMCwxMDgsMTExLAorICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LAorICAgIDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDcsCisgICAgMCwwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDcsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDExLDAsMCwwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSw5NSw5NSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywKKyAgICAxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDksCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwwLAorICAgIDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDYsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxMTcsMTMsMCwwLAorICAgIDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMywKKyAgICAwLDAsMCwxMDksMTE1LDEwMywxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDExNywzLDAsMCwwLDEwMSwxMjAsOTksMTE3LDYsMCwwLDAsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LAorICAgIDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDIyMCw1LDAsMCwKKyAgICAxMTUsNzYsMCwwLDAsMCwxLDYsMSwxOSwxLDYsMSwxNSwxLDE2LAorICAgIDIsMTUsMSwxMSwyLDEzLDEsMywxLDEzLDEsMTMsMSwyMiwxLDI2LAorICAgIDEsMTUsMSwxMiwxLDI3LDMsOSwxLDksMSwxNSwyLDEzLDEsMTksCisgICAgMiwxMywxLDYsMiwxMywxLDMyLDIsMjQsMSwzLDEsMTIsMSwxNSwKKyAgICAxLDMyLDEsMTMsMSw4LDIsMTUsMSwzLDEsMTMsMSwxMywxLDgsCisgICAgMSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDE4LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw3NSwwLDAsMCwxMjIsMTYsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTMxLDEsMCwxMjUsMiwwLDg3LDEwMCwxLDAsMTE2LDEsMCwxMDYsMiwwLAorICAgIDEzMSwwLDAsMSw4OCwxMjQsMiwwLDEwNiwzLDAsMTMxLDAsMCwxLDEyMiwKKyAgICAxNywwLDExNiw0LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsCisgICAgMTAwLDEsMCwxMjQsMiwwLDEwNiw1LDAsMTMxLDAsMCwxLDg4LDEwMCwxLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsNTQsMCwwLDAsNzAsMTA1LDExMCwxMDAsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDc4LDQwLDYsMCwwLDAsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsCisgICAgMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw0LDAsCisgICAgMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsCisgICAgMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNywwLDAsMCw5Nyw5OSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNywyMywwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTE3LAorICAgIDcsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDAsMywwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw5NSwxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNCwwLDAsMCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxNCw2LDAsCisgICAgMCwxMTUsMTQsMCwwLDAsMCwyLDMsMSwxNiwyLDExLDEsMTAsMSwKKyAgICAzLDEsMTcsMiwxMTcsMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LAorICAgIDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTksMywwLDAsMCwwLDAsMCwwLAorICAgIDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTcyLDAsMCwKKyAgICAwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwKKyAgICAxLDEyNCwyLDAsMTAwLDEsMCwxMDcsNCwwLDExNCw0OSwwLDExNiwxLDAsCisgICAgMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLDExMCwKKyAgICAwLDAsMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiwKKyAgICA0LDAsMTA2LDUsMCwxMDcsNywwLDExNCw4NywwLDExNiw2LDAsMTI0LDAsCisgICAgMCwxMTYsNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLAorICAgIDAsMjUsMTI1LDMsMCwxMjQsMywwLDEwMCw0LDAsMTA3LDgsMCwxMTQsMTU4LAorICAgIDAsMTE2LDIsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMDAsMiwwLDEwNiwxMCwKKyAgICAwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwxMSwwLDEyNCw0LDAsCisgICAgMTAwLDMsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDExNiwKKyAgICAxMiwwLDEyNCwwLDAsMTMxLDEsMCwxLDEyNCwzLDAsODMsNDAsNSwwLAorICAgIDAsMCwxMTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLAorICAgIDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLAorICAgIDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsCisgICAgMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwKKyAgICAxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLAorICAgIDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDAsMCwwLDAsMTE3LDQwLAorICAgIDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwzMiwKKyAgICAxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsMzIsCisgICAgMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDc4LDQwLDEzLDAsMCwwLDExNywxMywwLDAsMCw5NSwKKyAgICAxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDExNywxMywwLDAsCisgICAgMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDQsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsCisgICAgMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywxNCwwLDAsCisgICAgMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTcsCisgICAgNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsCisgICAgMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDYsMCwwLDAsMTAyLDExMSwKKyAgICAxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDE5LDAsMCwwLDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywKKyAgICAxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNSwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsMCwKKyAgICAxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDI3LDYsMCwwLDExNSwyOCwwLDAsMCwwLDksMTYsMSwKKyAgICAxMiwxLDIxLDEsMTAsMSwxNSwxLDEzLDEsMTMsMSwxMiwxLDEwLDEsCisgICAgNiwxLDksMSwyMSwxLDEwLDEsMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwKKyAgICAxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTksMywwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIzMywwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyMjksCisgICAgMCwxMDAsMiwwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODksMCwxMTYsMSwwLAorICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsCisgICAgMiwwLDEzMSwxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsCisgICAgMiwwLDExNCw4OSwwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LAorICAgIDAsMTMxLDEsMCwxLDExMyw4OSwwLDExMCwwLDAsMTIwLDEzNywwLDEyNCwxLAorICAgIDAsNjgsOTMsMTI2LDAsMTI1LDMsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDMsCisgICAgMCwxMzEsMiwwLDExNSw5NiwwLDEyMSwzMiwwLDExNiw1LDAsMTI0LDIsMCwKKyAgICAxMDAsNCwwLDEwNiw2LDAsMTI0LDAsMCwxMDYsNywwLDEyNCwzLDAsMTMxLAorICAgIDIsMCwxMzEsMiwwLDEsODcsMTEzLDIyMiwwLDQsMTE2LDgsMCwxMDcsMTAsCisgICAgMCwxMTQsMjE4LDAsMSwxMjUsNCwwLDEsMTIyLDM1LDAsMTE2LDAsMCwxMjQsCisgICAgNCwwLDEwMCw1LDAsMTMxLDIsMCwxMTQsMTk3LDAsMTI0LDQsMCwxMDYsOSwKKyAgICAwLDExNCwxOTcsMCwxMTAsMywwLDEzMCwwLDAsODcsODksMTAwLDYsMCwxMDAsCisgICAgNiwwLDEyNSw0LDAsMTI2LDQsMCw4OCwxMTMsMjIyLDAsODgsMTEzLDk2LDAsCisgICAgMTEzLDk2LDAsODcsMTEwLDAsMCwxMjQsMCwwLDgzLDQwLDcsMCwwLDAsCisgICAgMTE3LDIzOCwwLDAsMCw3MCwxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLAorICAgIDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLAorICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsCisgICAgMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksCisgICAgOTcsMTA4LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsCisgICAgMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDExNywxLDAsMCwwLDQyLDExNyw3LDAsMCwwLDk1LDk1LDk3LDEwOCwxMDgsCisgICAgOTUsOTUsMTE3LDUsMCwwLDAsMTIzLDEyNSw0NiwxMjMsMTI1LDExNywxMCwwLDAsCisgICAgMCw5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsMTAwLDc4LDQwLDEwLDAsMCwKKyAgICAwLDExNyw3LDAsMCwwLDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDQsMCwKKyAgICAwLDAsMTA4LDEwNSwxMTUsMTE2LDExNyw2LDAsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsCisgICAgMTAxLDExNyw2LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNyw3LDAsMCwKKyAgICAwLDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LAorICAgIDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LAorICAgIDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywKKyAgICAxMTYsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDExLAorICAgIDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywxMCwKKyAgICAwLDAsMCw5NSwxMTAsMTExLDExNiw5NSwxMDIsMTExLDExNywxMTAsMTAwLDQwLDUsMCwKKyAgICAwLDAsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwKKyAgICAwLDAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwxMTcsNywwLDAsMCwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTcsMSwwLDAsMCwxMjAsMTE3LDMsMCwwLAorICAgIDAsMTAxLDEyMCw5OSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxNiwwLDAsMCw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsMTExLAorICAgIDEwOSwxMDgsMTA1LDExNSwxMTYsNTEsNiwwLDAsMTE1LDMyLDAsMCwwLDAsMTAsCisgICAgMTUsMSwxMiwxLDEyLDEsMTMsMSwxNSwxLDIyLDEsMTMsMSwxNSwxLAorICAgIDMsMSw2LDEsMjYsMSwxOCw2LDI0LDEsMywyLDMyLDEsMTE3LDE2LAorICAgIDAsMCwwLDk1LDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwKKyAgICAxMDUsMTE1LDExNiw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw3OCwwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTAwLDEsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDAsCisgICAgNiwwLDEwNyw4LDAsMTE0LDc0LDAsMTI0LDAsMCwxMDAsMiwwLDI1LDEyNSwKKyAgICAxLDAsMTAwLDMsMCwxMjQsMCwwLDEwNyw3LDAsMTE0LDc0LDAsMTI0LDEsCisgICAgMCwxMDYsMiwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsNSwwLDI1LDEyNSwxLAorICAgIDAsMTEzLDc0LDAsMTEwLDAsMCwxMjQsMSwwLDgzLDQwLDcsMCwwLDAsCisgICAgMTE3LDE2NywwLDAsMCw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwKKyAgICAxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwKKyAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLAorICAgIDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsCisgICAgMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLAorICAgIDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LAorICAgIDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLAorICAgIDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE3LDExLDAsMCwKKyAgICAwLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOCwwLDAsCisgICAgMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsCisgICAgMCw3OCw0MCwzLDAsMCwwLDExNywzLDAsMCwwLDEwMywxMDEsMTE2LDExNywKKyAgICA0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LAorICAgIDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCwyLDAsMCwwLDExNyw3LDAsMCwKKyAgICAwLDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE3LDcsMCwwLDAsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDE3LDAsMCwwLDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsOTUsOTUsODUsNiwwLDAsMTE1LDEyLDAsMCwwLDAsCisgICAgNywxNSwxLDEyLDEsMTAsMSwxMiwxLDI1LDEsMTE3LDE3LDAsMCwwLAorICAgIDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsCisgICAgOTUsOTksMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNTUsMCwwLDAsMTE2LDAsMCwxMTYsMSwKKyAgICAwLDEwNiwyLDAsMTMxLDAsMCwxMDIsMiwwLDEyNSwwLDAsMTE2LDMsMCwKKyAgICAxMTYsNCwwLDEwMiwyLDAsMTI1LDEsMCwxMTYsNSwwLDExNiw2LDAsMTAyLAorICAgIDIsMCwxMjUsMiwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEwMywzLAorICAgIDAsODMsNDAsMSwwLDAsMCwxMTcsMTExLDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2OSw5NywKKyAgICA5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsCisgICAgMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDExNSwxMTcsMTAyLDEwMiwKKyAgICAxMDUsMTIwLDEwMSwxMTUsNDQsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwxMTUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsNDAsNywwLDAsMCwKKyAgICAxMTcsMTksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwKKyAgICAxMTIsMTE3LDE4LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LAorICAgIDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE1LDAsCisgICAgMCwwLDgzLDc5LDg1LDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LAorICAgIDgzLDExNywyMCwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTcsMCwwLDAsNjYsCisgICAgODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsCisgICAgNDAsMywwLDAsMCwxMTcsMTAsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsCisgICAgMTA1LDExMSwxMTAsMTE1LDExNyw2LDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE3LAorICAgIDgsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjcsMCwwLDAsOTUsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDEwMCw2LDAsMCwxMTUsOCwwLDAsCisgICAgMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE3LDI3LDAsMCwwLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw5OSw1LDAsMCwwLDAsMCwKKyAgICAwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyMjcsCisgICAgMCwwLDAsMTI0LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LAorICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDUsMCwxMTAsNTQsMCwxMjQsMSwKKyAgICAwLDEwMCwzLDAsMTA3LDksMCwxMTQsNDUsMCwxMjQsMSwwLDExMCwzLDAsCisgICAgMTA1LDAsMCwxMjUsNiwwLDExNiwyLDAsMTI0LDYsMCwxMzEsMSwwLDEyNSwKKyAgICA3LDAsMTE2LDAsMCwxMjQsMCwwLDEyNCw3LDAsMTI0LDQsMCwxMzEsMywKKyAgICAwLDEyNSw1LDAsMTI0LDMsMCwxMTUsMjA3LDAsMTI0LDQsMCwxMDAsMSwwLAorICAgIDEwNywyLDAsMTE0LDEyMiwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwKKyAgICAyLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsODMsMTI0LDAsMCwKKyAgICAxMTUsMTMyLDAsMTI0LDUsMCw4MywxMTYsNCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxMTYsNCwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLAorICAgIDEsMCwyNSwxMzEsMSwwLDI0LDEyNSw4LDAsMTE2LDUsMCwxMDYsNiwwLAorICAgIDEyNCw1LDAsMTA2LDcsMCwxMDAsMywwLDExNiw0LDAsMTI0LDUsMCwxMDYsCisgICAgNywwLDEzMSwxLDAsMTI0LDgsMCwyNCwxMzMsMiwwLDI1LDI1LDgzLDExMCwKKyAgICAxNiwwLDExNiw4LDAsMTI0LDUsMCwxMjQsMywwLDExNiwwLDAsMTMxLDMsCisgICAgMCw4MywxMDAsMywwLDgzLDQwLDQsMCwwLDAsMTE3LDIxNCwxLDAsMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsOTcsCisgICAgMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwKKyAgICAxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwxMDQsCisgICAgMTAxLDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LAorICAgIDExNSwzMiwxMTEsOTksOTksMTE3LDExNCwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwxMDksMTAsCisgICAgMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDExNCwxMDEsCisgICAgMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMzIsCisgICAgODQsMTA0LDEwMSwzMiwzOSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywKKyAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTA1LDEwMywxMTAsMTExLDExNCwxMDEsMTAwLAorICAgIDQ2LDMyLDg0LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzksMTAyLDExNCwxMTEsMTA5LDEwOCwKKyAgICAxMDUsMTE1LDExNiwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDExNSwzMiwxMTksMTA0LDk3LDExNiwzMiwxMTUsMTA0LDExMSwKKyAgICAxMTcsMTA4LDEwMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDMyLDk3LDExNSwzMiw5NywxMTYsMTE2LAorICAgIDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5NiwKKyAgICA5NiwxMDIsMTE0LDExMSwxMDksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsNjAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw2Miw5Niw5NiwKKyAgICA0MSw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMTAsCisgICAgMzIsMzIsMzIsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNCwxMDEsMTEyLAorICAgIDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LDExMCwzMiw5NywKKyAgICAzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5Niw5NiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsNDYsNDYsMTEyLDEwNywxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LAorICAgIDExMSwxMDAsOTYsOTYsMzIsMTE5LDExMSwxMTcsMTA4LDEwMCwzMiwxMDQsOTcsMTE4LDEwMSwzMiwKKyAgICA5NywzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDMyLDExMSwxMDIsMzIsNTAsNDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDAsMCwwLDAsMTE3LDEsMCwwLDAsCisgICAgNDYsNzgsNDAsOSwwLDAsMCwxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsMTcsMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTcsOSwwLDAsMCwxMTIsOTcsMTE0LDExNiwxMDUsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDExNywzLDAsMCwKKyAgICAwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDQwLDksMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDcsMCwwLDAsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTcsNiwwLDAsCisgICAgMCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNCwxMTEsMTA5LAorICAgIDEwOCwxMDUsMTE1LDExNiwxMTcsNSwwLDAsMCwxMDgsMTAxLDExOCwxMDEsMTA4LDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw4LDAsMCwwLDEwMywxMDgsCisgICAgMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE3LDcsMCwwLDAsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDExNyw3LDAsMCwwLDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsOTUsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMTExLDYsMCwwLDExNSwyNiwwLAorICAgIDAsMCwwLDExLDEyLDEsMTUsMiwyNCwxLDEyLDEsMTgsMSw2LDMsCisgICAgMTIsMSwyMywxLDYsMSw0LDQsMzUsMyw0MCwyLDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMTQsMCwwLDAsMTMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE5NiwyLDAsMCwxMjQsMSwwLDk3LDAsMCwxMjQsMCwwLDk3LDEsCisgICAgMCwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTQsMzMsMCwxMTYsNCwwLAorICAgIDk3LDUsMCwxMTAsNiwwLDExNiw2LDAsOTcsNSwwLDEyMCw0NywwLDExNiwKKyAgICAwLDAsMTE2LDEsMCwxMDIsMiwwLDY4LDkzLDMzLDAsMTI1LDIsMCwxMTYsCisgICAgNywwLDEyNCwyLDAsMTAwLDEsMCwxMzEsMiwwLDExNSw1MiwwLDExNiw4LAorICAgIDAsMTI0LDIsMCw5NSw5LDAsMTEzLDUyLDAsMTEzLDUyLDAsODcsMTE2LDEsCisgICAgMCwxMDYsMTAsMCwxMTYsMTEsMCwyNSwxMjUsMywwLDEyMCw3NiwwLDEwMCwyOCwKKyAgICAwLDY4LDkzLDY4LDAsMTI1LDQsMCwxMjQsNCwwLDExNiwxLDAsMTA2LDEwLAorICAgIDAsMTA3LDcsMCwxMTQsMTQ4LDAsMTE2LDgsMCwxMDYsMTIsMCwxMjQsNCwwLAorICAgIDEzMSwxLDAsMTI1LDUsMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwxMCwwLDEyNCwKKyAgICA0LDAsMjUsMTI1LDUsMCwxMTYsMTMsMCwxMjQsMywwLDEyNCw0LDAsMTI0LAorICAgIDUsMCwxMzEsMywwLDEsMTEzLDEwOSwwLDg3LDEwMCw2LDAsMTAwLDcsMCwKKyAgICAxMDMsMSwwLDEwMiwyLDAsMTAwLDgsMCwxMDAsOSwwLDEwMCw3LDAsMTAzLAorICAgIDIsMCwxMDIsMiwwLDEwMCwxMCwwLDEwMCw5LDAsMTAwLDcsMCwxMDMsMiwKKyAgICAwLDEwMiwyLDAsMTAyLDMsMCwxMjUsNiwwLDEyMCwxODksMCwxMjQsNiwwLAorICAgIDY4LDkzLDE2OSwwLDkyLDIsMCwxMjUsNywwLDEyNSw4LDAsMTE2LDE0LDAsCisgICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMjQsOCwwLDY4LDEzMSwxLDAsCisgICAgMTMxLDEsMCwxMTUsMjMsMSwxMTYsMTUsMCwxMzAsMSwwLDEyNCw4LDAsMTAwLAorICAgIDEzLDAsMjUsMTI1LDksMCwxMjQsNywwLDExNiwxLDAsMTA2LDEwLDAsMTA3LAorICAgIDYsMCwxMTQsNjUsMSwxMTYsMSwwLDEwNiwxMCwwLDEyNCw3LDAsMjUsMTI1LAorICAgIDEwLDAsODAsMTEzLDIzNiwwLDEyMSw2MCwwLDExNiw4LDAsMTA2LDEyLDAsMTI0LAorICAgIDcsMCwxMzEsMSwwLDEyNSwxMCwwLDEyNCw3LDAsMTAwLDEwLDAsMTA3LDIsCisgICAgMCwxMTQsMTIzLDEsMTAwLDE0LDAsMTE2LDEsMCwxMDYsMTYsMCwxMDcsNiwwLAorICAgIDExNCwxMjMsMSwxMjQsOCwwLDEwMCwxNSwwLDI1LDEyNSw5LDAsMTEwLDAsMCwKKyAgICA4MCw4NywxMTMsMjM2LDAsNCwxMTYsMTcsMCwxMDcsMTAsMCwxMTQsMTQ4LDEsMSwKKyAgICAxLDEsMTE5LDIzNiwwLDg5LDExMywyMzYsMCw4OCwxMTMsMjM2LDAsODcsMTE2LDE3LAorICAgIDAsMTAwLDE2LDAsMTMxLDEsMCwxMzAsMSwwLDEyMSwxOSwwLDExNiw4LDAsCisgICAgMTA2LDEyLDAsMTAwLDE3LDAsMTMxLDEsMCwxMjUsMTEsMCw4NywxMTAsMjQsMCwKKyAgICA0LDExNiwxNywwLDEwNywxMCwwLDExNCwyMTAsMSwxLDEsMSwxMDAsMjcsMCwKKyAgICAxMjUsMTEsMCw4OSwxMTAsMSwwLDg4LDExNiw4LDAsMTA2LDEyLDAsMTAwLDE4LAorICAgIDAsMTMxLDEsMCwxMjUsMTIsMCwxMjQsNywwLDEwMCw4LDAsMTA3LDIsMCwKKyAgICAxMTQsMTYsMiwxMTYsOCwwLDEwNiwxMiwwLDEwMCwxOSwwLDEzMSwxLDAsMTI1LAorICAgIDEzLDAsMTE2LDEzLDAsMTI0LDMsMCwxMDAsMjAsMCwxMjQsMTMsMCwxMzEsMywKKyAgICAwLDEsMTEwLDAsMCwxMTYsMTMsMCwxMjQsMywwLDEwMCwyMSwwLDEyNCwxMCwKKyAgICAwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMjQsMywwLDEwMCwxNywwLDEyNCwxMSwKKyAgICAwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMjQsMywwLDEwMCwxOCwwLDEyNCwxMiwKKyAgICAwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMjQsMywwLDEwMCwyMiwwLDEyNCw5LAorICAgIDAsMTMxLDMsMCwxLDExNiwxMywwLDEyNCwzLDAsMTAwLDIzLDAsMTE2LDE5LAorICAgIDAsMTI0LDgsMCwxMzEsMSwwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMjQsMywKKyAgICAwLDEwMCwyNCwwLDExNiwyMCwwLDEzMSwwLDAsMTMxLDMsMCwxLDExNiwyMSwKKyAgICAwLDEwNiwyMiwwLDExNiwwLDAsMTA2LDIzLDAsMTMxLDAsMCwxMzEsMSwwLAorICAgIDEsMTI0LDcsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDE5MiwyLDExNiwyNCwwLAorICAgIDEwNiwyNSwwLDEwMCwyNSwwLDEzMSwxLDAsMSwxMDAsMjYsMCwxMTYsMjEsMCwKKyAgICAxMDcsNiwwLDExNCwxOTIsMiwxMDAsMjksMCwxMTYsMjcsMCw5NSwyOCwwLDExMywKKyAgICAxOTIsMiwxMTAsMCwwLDEwMCwyNywwLDgzLDQwLDMwLDAsMCwwLDExNywyNTAsCisgICAgMCwwLDAsODMsMTAxLDExNiwxMTcsMTEyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSwKKyAgICA5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLDEwNSwKKyAgICAxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsCisgICAgMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwxMTksCisgICAgMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywxMTUsCisgICAgMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTcsMTAsMCwKKyAgICAwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwxMTcsMywwLDAsCisgICAgMCw5NSwxMDUsMTExLDExNyw5LDAsMCwwLDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsCisgICAgMTAzLDExNSwxMTcsOCwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE3LAorICAgIDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsNSwwLDAsMCwKKyAgICAxMTIsMTExLDExNSwxMDUsMTIwLDExNywxLDAsMCwwLDQ3LDExNywyLDAsMCwwLAorICAgIDExMCwxMTYsMTE3LDEsMCwwLDAsOTIsMTE3LDMsMCwwLDAsMTExLDExNSw1MCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwKKyAgICAwLDExNSwwLDAsMCwxMTUsMzMsMCwwLDAsMTI0LDAsMCw5MywyMywwLAorICAgIDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsCisgICAgMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsCisgICAgMTA1LDEsMCwwLDAsNzgsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDgsMTAxLDExMCw0MCwyLDAsMCwwLDExNywyLDAsMCwwLDQ2LDQ4LDExNywKKyAgICAzLDAsMCwwLDExNSwxMDEsMTEyLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDksMCwwLDAsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LAorICAgIDYyLDE3OSw2LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTE3LDI1LDAsMCwKKyAgICAwLDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMDUsMCwwLDAsMCwxMTcsCisgICAgNywwLDAsMCw2OSw3Nyw4OCwzMiw3MSw2Nyw2NywxMDUsMSwwLDAsMCwKKyAgICAxMTcsMzAsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsCisgICAgMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwKKyAgICAzMiwxMTAsMTE2LDExNyw3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LAorICAgIDgsMCwwLDAsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsMTE3LDYsMCwwLAorICAgIDAsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDcsMCwwLDAsOTUsMTE5LDEwNSwxMTAsCisgICAgMTE0LDEwMSwxMDMsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsOCwwLDAsMCwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsMTUsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsMTEsMCwwLAorICAgIDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMTE3LDQsMCwwLAorICAgIDAsNDYsMTEyLDEyMSwxMTksMTE3LDYsMCwwLDAsOTUsMTAwLDQ2LDExMiwxMjEsMTAwLAorICAgIDc4LDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsOSwKKyAgICAwLDAsMCw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDgsMCwwLAorICAgIDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDExNyw3LDAsMCwwLDEwOSw5NywKKyAgICAxMTQsMTE1LDEwNCw5NywxMDgsODQsNDAsMjksMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgOTUsMTA1LDEwOSwxMTIsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDUsMCwwLAorICAgIDAsMTAyLDEwOCw5NywxMDMsMTE1LDExNyw4LDAsMCwwLDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiwxMDEsMTE3LDI3LDAsMCwwLDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LAorICAgIDY4LDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLAorICAgIDg4LDY5LDgzLDExNywxNywwLDAsMCw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSwKKyAgICA5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjMsMCwwLDAsNjgsNjksCisgICAgNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsCisgICAgNzAsNzMsODgsNjksODMsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LAorICAgIDExNCwxMTcsMTUsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDk1LDk1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTEsMCwKKyAgICAwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDcsMCwKKyAgICAwLDAsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMTE3LDMsMCwwLDAsOTcsMTA4LAorICAgIDEwOCwxMTcsMTQsMCwwLDAsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsMTExLDExMCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDcsMCwwLDAsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLAorICAgIDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMywwLDAsMCwxMTUsMTAxLAorICAgIDExNiwxMTcsMTYsMCwwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsMTE3LDE4LDAsMCwwLDY5LDg4LDg0LDY5LDc4LAorICAgIDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw2LDAsCisgICAgMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNywxOCwwLDAsMCwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNywKKyAgICAxNSwwLDAsMCw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3MywKKyAgICA4OCw2OSw4MywxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNyw0LAorICAgIDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywyMSwwLDAsMCw4NywxMDUsMTEwLDEwMCwKKyAgICAxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsNzYsCisgICAgNjgsNDAsMTQsMCwwLDAsMTE3LDEwLDAsMCwwLDExNSwxMjEsMTE1LDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMDUsMTA5LDExMiw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNywxMiwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsMTQsMCwwLDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLDExMSwxMTUsOTUsMTAwLDEwMSwxMTYsOTcsCisgICAgMTA1LDEwOCwxMTUsMTE3LDEwLDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LAorICAgIDExMSwxMTUsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDk3LAorICAgIDExNCw5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDEwMSwxMTIsMTE3LDksMCwwLDAsMTExLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTcsMTMsMCwwLDAsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTcsMTQsMCwwLDAsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEzLDAsMCwwLDExOSwxMDUsMTEwLDExNCwxMDEsCisgICAgMTAzLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiwxNDcsCisgICAgNiwwLDAsMTE1LDk2LDAsMCwwLDAsOSw2LDEsNiwyLDEyLDEsCisgICAgOSwyLDYsMiwxOSwxLDE1LDEsMTYsMiwxMywxLDEzLDEsMTUsMSwKKyAgICAxOCwyLDEzLDEsMjAsMiw0OCwxLDE5LDIsMzEsMSwxMCwxLDE1LDEsCisgICAgMTMsMSw0LDIsMywxLDE1LDIsMjcsMSwxMywxLDUsMSwxMywxLAorICAgIDEyLDIsMTIsMiwzLDEsMTksMSwxMywyLDExLDEsMTUsMiwxMiwxLAorICAgIDE1LDEsMTksMiwxNiwxLDE2LDEsMTYsMSwxNiwxLDIyLDIsMTksMSwKKyAgICAxOSwxLDEyLDEsMTMsMSwxMiwxLDExNyw2LDAsMCwwLDk1LDExNSwxMDEsCisgICAgMTE2LDExNywxMTIsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTM2LDAsMCwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsMSwwLDEzMSwwLDAsCisgICAgMTI1LDIsMCwxMTYsMiwwLDEwNiwzLDAsMTA2LDQsMCwxMTYsNSwwLDEwNiwKKyAgICA2LDAsMTI0LDIsMCwxNDAsMCwwLDEwMywxLDAsMTMxLDEsMCwxLDExNiwKKyAgICAyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiw5LDAsMTMxLDEsMCwxLDExNiwKKyAgICAyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxMCwwLDEzMSwxLDAsMSwxMTYsCisgICAgMTEsMCwxMDYsMTIsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDExNiwwLDExNiwyLAorICAgIDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxMywwLDEzMSwxLDAsMSwxMTAsMCwKKyAgICAwLDExNiwyLDAsMTA2LDcsMCwxMDYsOCwwLDExNiwxNCwwLDEzMSwxLDAsCisgICAgMSwxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDUwLDAsMCwwLDczLAorICAgIDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICAzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgNDYsMTE3LDIsMCwwLDAsMTEwLDExNiw3OCw0MCwxNSwwLDAsMCwxMTcsNiwKKyAgICAwLDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDExNywyNywwLDAsMCw5NSwxMDMsCisgICAgMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDMsMCwwLDAsMTE1LDEyMSwKKyAgICAxMTUsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsCisgICAgMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE3LDEwLDAsMCwwLAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDksMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNyw5LDAsMCwwLDEwOSwxMDEsMTE2LAorICAgIDk3LDk1LDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE3LDE1LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMjEsMCwKKyAgICAwLDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsCisgICAgMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwzLDAsMCwwLDExNywxMCwwLDAsMCwKKyAgICAxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwwLDAsOTUsCisgICAgMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDE3LDAsMCwwLDExNSwKKyAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLAorICAgIDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMjIxLDYsMCwwLDExNSwxNiwwLAorICAgIDAsMCwwLDIsMTMsMSw5LDEsMjgsMSwxNiwxLDE2LDEsMTUsMSwKKyAgICAxOSwxLDExNyw4LDAsMCwwLDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDc4LAorICAgIDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsMTE5LDEwNSwxMTAsMTE3LDYsMCwKKyAgICAwLDAsOTksMTIxLDEwMywxMTksMTA1LDExMCwxMTcsNiwwLDAsMCwxMDAsOTcsMTE0LAorICAgIDExOSwxMDUsMTEwLDQwLDc0LDAsMCwwLDExNyw3LDAsMCwwLDk1LDk1LDEwMCwKKyAgICAxMTEsOTksOTUsOTUsMTE3LDI3LDAsMCwwLDk1LDY3LDY1LDgzLDY5LDk1LDczLAorICAgIDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLAorICAgIDc5LDgyLDc3LDgzLDExNywxNiwwLDAsMCw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsCisgICAgMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsNywwLDAsMCw5NSwxMTksCisgICAgOTUsMTA4LDExMSwxMTAsMTAzLDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLDExMCwKKyAgICAxMDMsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCwKKyAgICAxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwKKyAgICAxMTcsMTgsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLAorICAgIDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNywxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTcsMTMsMCwwLDAsOTUsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTE3LDUsMCwwLDAsOTUsCisgICAgMTE5LDExNCw5NywxMTIsMTE3LDQsMCwwLDAsMTE2LDEyMSwxMTIsMTAxLDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSwKKyAgICA5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE3LDEwLDAsMCwwLDExMCwxMDEsCisgICAgMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMywwLDAsMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTUsMTE3LDEyLDAsMCwwLDk1LAorICAgIDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDEyLDAsMCwwLAorICAgIDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTQsMCwwLAorICAgIDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LAorICAgIDExLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsCisgICAgMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzYsMTExLDk5LDEwNywxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDE5LDAsMCwwLDk1LDEwOCwKKyAgICAxMTEsOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LAorICAgIDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNywKKyAgICAzLDAsMCwwLDExMSwxMTQsMTAwLDExNywxNywwLDAsMCw5NSw4Miw2NSw4NywKKyAgICA5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTcsNSwwLAorICAgIDAsMCw5OCwxMjEsMTE2LDEwMSwxMTUsMTE3LDUsMCwwLDAsMTE0LDk3LDExMCwxMDMsCisgICAgMTAxLDExNywxMiwwLDAsMCw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw2Niw4OSw4NCwKKyAgICA2OSw4MywxMTcsOCwwLDAsMCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwxMTcsCisgICAgMTUsMCwwLDAsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsNzAsNzMsCisgICAgODgsNjksODMsMTE3LDIzLDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg5LAorICAgIDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNywKKyAgICAyNywwLDAsMCw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSwKKyAgICA4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsCisgICAgNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTcsMCwwLDAsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTcsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSwxMTcsMTUsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwxMDEsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsCisgICAgMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsCisgICAgMCwwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNywxNywwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAorICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNywxNiwwLDAsMCw5NSwxMTQsMTAxLAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNywxNywwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LAorICAgIDEwNCwxMDUsMTA5LDExNywxNSwwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDE0LDAsMCwwLDcwLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywyMSwwLDAsMCw4NywKKyAgICAxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDY2LDk3LDExNSwxMDUsOTksMTE1LDExNywxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE2LDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDIwLDAsMCwwLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNywxOCwwLDAsMCw2OSw4OCw4NCw2OSw3OCw4Myw3MywKKyAgICA3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMTksMCwwLDAsCisgICAgNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDExNywKKyAgICAxMywwLDAsMCw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsMTMsMCwwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNywxMTcsOCwwLDAsMCw5NSw2OSw4Miw4Miw5NSw3Nyw4MywKKyAgICA3MSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDExNywxNCwwLAorICAgIDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksMTA4LDEwNSwxMTUsMTE2LDExNywxNywwLDAsMCw5NSw5OSw5NywxMDgsOTksOTUsCisgICAgOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywyNywwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDEwLDAsMCwwLAorICAgIDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDExNyw2LDAsMCwwLDk1LAorICAgIDExNSwxMDEsMTE2LDExNywxMTIsMTE3LDgsMCwwLDAsOTUsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDEwOCwxMDgsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNyw4LDAsMCwwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLAorICAgIDgsMCwwLDAsMTE1LDEzMiwwLDAsMCw2LDIxLDYsMywxMiwxMywxMiwKKyAgICAxNiwxMiwxMywxMiwxMiwxMiwxMiwxMiwxMCwxMiw2LDEyLDcsMTUsMjIsMTIsCisgICAgOCwxNSwzLDEyLDEyLDYsMiw2LDMsMjIsNCwxOSw2OCwxOSwyMywxMiwKKyAgICAxOSwxMiwyMCwxMiwxMDAsMzQsMSwzNywyLDYsMiw5LDIsOSwxLDksCisgICAgMiwxNSwyNywxMiwyMywxMiwyMSwxMiw4LDEyLDEzLDEyLDExLDEyLDU1LDEyLAorICAgIDE4LDEyLDExLDEyLDExLDEyLDE3LDE5LDU3LDE5LDU0LDE5LDUwLDE5LDgyLDIyLAorICAgIDEzNCwxOSwyOSwyNSw0NiwyNSwyNSw2LDMsMTksNDUsMTksNTUsMTksMTgsMTksCisgICAgODksMTksMTI1LDE5LDEzLDEyLDksMTIsMTcsMTIsMTcsNiwyLDEyLDUwLDEyLAorICAgIDEzLDE4LDI0LDEyLDM0LDEyLDE1LDEyLDExLDI0LDM2LDEyLDc0LAorfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQppbmRleCA1ZDhlNWE5Li5kOWEwODU1IDEwMDc1NQotLS0gYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKKysrIGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CkBAIC0yMyw5ICsyMyw2IEBACiAgICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoIm9wY29kZSIpCiAgICAgdGFyZ2V0cyA9IFsnX3Vua25vd25fb3Bjb2RlJ10gKiAyNTYKICAgICBmb3Igb3BuYW1lLCBvcCBpbiBvcGNvZGUub3BtYXAuaXRlbXMoKToKLSAgICAgICAgaWYgb3BuYW1lID09ICJTVE9QX0NPREUiOgotICAgICAgICAgICAgIyBYWFggb3Bjb2RlIG5vdCBpbXBsZW1lbnRlZAotICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdGFyZ2V0c1tvcF0gPSAiVEFSR0VUXyVzIiAlIG9wbmFtZQogICAgIGYud3JpdGUoInN0YXRpYyB2b2lkICpvcGNvZGVfdGFyZ2V0c1syNTZdID0ge1xuIikKICAgICBmLndyaXRlKCIsXG4iLmpvaW4oWyIgICAgJiYlcyIgJSBzIGZvciBzIGluIHRhcmdldHNdKSkKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDNlMmZiZWIuLjZkNTJhODQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMzEsNiArMzEsOSBAQAogI2RlZmluZSBUWVBFX1NUT1BJVEVSICAgICAgICAgICAnUycKICNkZWZpbmUgVFlQRV9FTExJUFNJUyAgICAgICAgICAgJy4nCiAjZGVmaW5lIFRZUEVfSU5UICAgICAgICAgICAgICAgICdpJworLyogVFlQRV9JTlQ2NCBpcyBkZXByZWNhdGVkLiBJdCBpcyBub3QKKyAgIGdlbmVyYXRlZCBhbnltb3JlLCBhbmQgc3VwcG9ydCBmb3IgcmVhZGluZyBpdAorICAgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQuICovCiAjZGVmaW5lIFRZUEVfSU5UNjQgICAgICAgICAgICAgICdJJwogI2RlZmluZSBUWVBFX0ZMT0FUICAgICAgICAgICAgICAnZicKICNkZWZpbmUgVFlQRV9CSU5BUllfRkxPQVQgICAgICAgJ2cnCkBAIC01OSw5ICs2Miw5IEBACiAgICAgLyogSWYgZnAgPT0gTlVMTCwgdGhlIGZvbGxvd2luZyBhcmUgdmFsaWQ6ICovCiAgICAgUHlPYmplY3QgKnJlYWRhYmxlOyAgICAvKiBTdHJlYW0tbGlrZSBvYmplY3QgYmVpbmcgcmVhZCBmcm9tICovCiAgICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeU9iamVjdCAqY3VycmVudF9maWxlbmFtZTsKICAgICBjaGFyICpwdHI7CiAgICAgY2hhciAqZW5kOwotICAgIFB5T2JqZWN0ICpzdHJpbmdzOyAvKiBkaWN0IG9uIG1hcnNoYWwsIGxpc3Qgb24gdW5tYXJzaGFsICovCiAgICAgaW50IHZlcnNpb247CiB9IFdGSUxFOwogCkBAIC0xMjEsMTUgKzEyNCw2IEBACiAgICAgd19ieXRlKChjaGFyKSgoeD4+MjQpICYgMHhmZiksIHApOwogfQogCi0jaWYgU0laRU9GX0xPTkcgPiA0Ci1zdGF0aWMgdm9pZAotd19sb25nNjQobG9uZyB4LCBXRklMRSAqcCkKLXsKLSAgICB3X2xvbmcoeCwgcCk7Ci0gICAgd19sb25nKHg+PjMyLCBwKTsKLX0KLSNlbmRpZgotCiAvKiBXZSBhc3N1bWUgdGhhdCBQeXRob24gbG9uZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGluIGJhc2Ugc29tZSBwb3dlciBvZgogICAgMioqMTU7IGZvciB0aGUgc2FrZSBvZiBwb3J0YWJpbGl0eSB3ZSdsbCBhbHdheXMgcmVhZCBhbmQgd3JpdGUgdGhlbSBpbiBiYXNlCiAgICBleGFjdGx5IDIqKjE1LiAqLwpAQCAtMjE5LDggKzIxMyw4IEBACiAjaWYgU0laRU9GX0xPTkcgPiA0CiAgICAgICAgICAgICBsb25nIHkgPSBQeV9BUklUSE1FVElDX1JJR0hUX1NISUZUKGxvbmcsIHgsIDMxKTsKICAgICAgICAgICAgIGlmICh5ICYmIHkgIT0gLTEpIHsKLSAgICAgICAgICAgICAgICB3X2J5dGUoVFlQRV9JTlQ2NCwgcCk7Ci0gICAgICAgICAgICAgICAgd19sb25nNjQoeCwgcCk7CisgICAgICAgICAgICAgICAgLyogVG9vIGxhcmdlIGZvciBUWVBFX0lOVCAqLworICAgICAgICAgICAgICAgIHdfUHlMb25nKChQeUxvbmdPYmplY3QqKXYsIHApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogI2VuZGlmCkBAIC0zMTEsOSArMzA1LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikpIHsKICAgICAgICAgUHlPYmplY3QgKnV0Zjg7Ci0gICAgICAgIHV0ZjggPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVwYXNzIik7CisgICAgICAgIHV0ZjggPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHYsICJ1dGY4IiwgInN1cnJvZ2F0ZXBhc3MiKTsKICAgICAgICAgaWYgKHV0ZjggPT0gTlVMTCkgewogICAgICAgICAgICAgcC0+ZGVwdGgtLTsKICAgICAgICAgICAgIHAtPmVycm9yID0gV0ZFUlJfVU5NQVJTSEFMTEFCTEU7CkBAIC00NDUsNyArNDM3LDYgQEAKICAgICB3Zi5mcCA9IGZwOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7CiAgICAgd2YuZGVwdGggPSAwOwotICAgIHdmLnN0cmluZ3MgPSBOVUxMOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOwogICAgIHdfbG9uZyh4LCAmd2YpOwogfQpAQCAtNDU3LDEwICs0NDgsOCBAQAogICAgIHdmLmZwID0gZnA7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7Ci0gICAgd2Yuc3RyaW5ncyA9ICh2ZXJzaW9uID4gMCkgPyBQeURpY3RfTmV3KCkgOiBOVUxMOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOwogICAgIHdfb2JqZWN0KHgsICZ3Zik7Ci0gICAgUHlfWERFQ1JFRih3Zi5zdHJpbmdzKTsKIH0KIAogdHlwZWRlZiBXRklMRSBSRklMRTsgLyogU2FtZSBzdHJ1Y3Qgd2l0aCBkaWZmZXJlbnQgaW52YXJpYW50cyAqLwpAQCAtNDg1LDcgKzQ3NCw5IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpkYXRhID0gUHlPYmplY3RfQ2FsbE1ldGhvZChwLT5yZWFkYWJsZSwgInJlYWQiLCAiaSIsIG4pOworICAgICAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKKworICAgICAgICBQeU9iamVjdCAqZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocC0+cmVhZGFibGUsICZQeUlkX3JlYWQsICJpIiwgbik7CiAgICAgICAgIHJlYWQgPSAwOwogICAgICAgICBpZiAoZGF0YSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKQEAgLTEwNjksNiArMTA2MCwxOCBAQAogICAgICAgICAgICAgZmlsZW5hbWUgPSByX29iamVjdChwKTsKICAgICAgICAgICAgIGlmIChmaWxlbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gY29kZV9lcnJvcjsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChmaWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAocC0+Y3VycmVudF9maWxlbmFtZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUoZmlsZW5hbWUsIHAtPmN1cnJlbnRfZmlsZW5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHAtPmN1cnJlbnRfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBwLT5jdXJyZW50X2ZpbGVuYW1lOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwLT5jdXJyZW50X2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgbmFtZSA9IHJfb2JqZWN0KHApOwogICAgICAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGNvZGVfZXJyb3I7CkBAIC0xMTMxLDcgKzExMzQsNyBAQAogICAgIGFzc2VydChmcCk7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOwogICAgIHJmLmZwID0gZnA7Ci0gICAgcmYuc3RyaW5ncyA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYuZW5kID0gcmYucHRyID0gTlVMTDsKICAgICByZXR1cm4gcl9zaG9ydCgmcmYpOwogfQpAQCAtMTE0Miw3ICsxMTQ1LDcgQEAKICAgICBSRklMRSByZjsKICAgICByZi5mcCA9IGZwOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKLSAgICByZi5zdHJpbmdzID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5wdHIgPSByZi5lbmQgPSBOVUxMOwogICAgIHJldHVybiByX2xvbmcoJnJmKTsKIH0KQEAgLTEyMDQsMTEgKzEyMDcsMTAgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHJmLmZwID0gZnA7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOwotICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLmRlcHRoID0gMDsKICAgICByZi5wdHIgPSByZi5lbmQgPSBOVUxMOwogICAgIHJlc3VsdCA9IHJfb2JqZWN0KCZyZik7Ci0gICAgUHlfREVDUkVGKHJmLnN0cmluZ3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMTksMTIgKzEyMjEsMTEgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHJmLmZwID0gTlVMTDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYucHRyID0gc3RyOwogICAgIHJmLmVuZCA9IHN0ciArIGxlbjsKLSAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmVzdWx0ID0gcl9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIzMiw3ICsxMjMzLDYgQEAKIFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nKFB5T2JqZWN0ICp4LCBpbnQgdmVyc2lvbikKIHsKICAgICBXRklMRSB3ZjsKLSAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAogICAgIHdmLmZwID0gTlVMTDsKICAgICB3Zi5yZWFkYWJsZSA9IE5VTEw7CkBAIC0xMjQ0LDkgKzEyNDQsNyBAQAogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7CiAgICAgd2YuZGVwdGggPSAwOwogICAgIHdmLnZlcnNpb24gPSB2ZXJzaW9uOwotICAgIHdmLnN0cmluZ3MgPSAodmVyc2lvbiA+IDApID8gUHlEaWN0X05ldygpIDogTlVMTDsKICAgICB3X29iamVjdCh4LCAmd2YpOwotICAgIFB5X1hERUNSRUYod2Yuc3RyaW5ncyk7CiAgICAgaWYgKHdmLnN0ciAhPSBOVUxMKSB7CiAgICAgICAgIGNoYXIgKmJhc2UgPSBQeUJ5dGVzX0FTX1NUUklORygoUHlCeXRlc09iamVjdCAqKXdmLnN0cik7CiAgICAgICAgIGlmICh3Zi5wdHIgLSBiYXNlID4gUFlfU1NJWkVfVF9NQVgpIHsKQEAgLTEyNjgsMTIgKzEyNjYsNyBAQAogICAgICAgICAgICAgICAgOiJvYmplY3QgdG9vIGRlZXBseSBuZXN0ZWQgdG8gbWFyc2hhbCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHdmLnN0ciAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIFhYWCBRdWljayBoYWNrIC0tIG5lZWQgdG8gZG8gdGhpcyBkaWZmZXJlbnRseSAqLwotICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qod2Yuc3RyKTsKLSAgICAgICAgUHlfREVDUkVGKHdmLnN0cik7Ci0gICAgfQotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIHdmLnN0cjsKIH0KIAogLyogQW5kIGFuIGludGVyZmFjZSBmb3IgUHl0aG9uIHByb2dyYW1zLi4uICovCkBAIC0xMjg3LDEyICsxMjgwLDE0IEBACiAgICAgaW50IHZlcnNpb24gPSBQeV9NQVJTSEFMX1ZFUlNJT047CiAgICAgUHlPYmplY3QgKnM7CiAgICAgUHlPYmplY3QgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfGk6ZHVtcCIsICZ4LCAmZiwgJnZlcnNpb24pKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzID0gUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoeCwgdmVyc2lvbik7CiAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAid3JpdGUiLCAiTyIsIHMpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfd3JpdGUsICJPIiwgcyk7CiAgICAgUHlfREVDUkVGKHMpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC0xMzE0LDYgKzEzMDksNyBAQAogbWFyc2hhbF9sb2FkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZikKIHsKICAgICBQeU9iamVjdCAqZGF0YSwgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkKTsKICAgICBSRklMRSByZjsKIAogICAgIC8qCkBAIC0xMzIxLDcgKzEzMTcsNyBAQAogICAgICAqIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIG9iamVjdCBwYXNzZWQgaW4gYXQgbGVhc3QKICAgICAgKiBoYXMgYSByZWFkIG1ldGhvZCB3aGljaCByZXR1cm5zIGJ5dGVzLgogICAgICAqLwotICAgIGRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJyZWFkIiwgImkiLCAwKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9yZWFkLCAiaSIsIDApOwogICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewpAQCAtMTMzMSwxMiArMTMyNywxMSBAQAogICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CiAgICAgICAgIHJmLmRlcHRoID0gMDsKICAgICAgICAgcmYuZnAgPSBOVUxMOwogICAgICAgICByZi5yZWFkYWJsZSA9IGY7CisgICAgICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgICAgICByZXN1bHQgPSByZWFkX29iamVjdCgmcmYpOwotICAgICAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgfQogICAgIFB5X0RFQ1JFRihkYXRhKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTM4OSwxMiArMTM4NCwxMSBAQAogICAgIG4gPSBwLmxlbjsKICAgICByZi5mcCA9IE5VTEw7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLnB0ciA9IHM7CiAgICAgcmYuZW5kID0gcyArIG47Ci0gICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CiAgICAgcmYuZGVwdGggPSAwOwogICAgIHJlc3VsdCA9IHJlYWRfb2JqZWN0KCZyZik7Ci0gICAgUHlfREVDUkVGKHJmLnN0cmluZ3MpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnApOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vbW9kc3VwcG9ydC5jIGIvUHl0aG9uL21vZHN1cHBvcnQuYwppbmRleCA4NWIwZDY2Li40Mjg5MTRmIDEwMDY0NAotLS0gYS9QeXRob24vbW9kc3VwcG9ydC5jCisrKyBiL1B5dGhvbi9tb2RzdXBwb3J0LmMKQEAgLTE0OCwxNSArMTQ4LDYgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIGludAotX3VzdHJsZW4oUHlfVU5JQ09ERSAqdSkKLXsKLSAgICBpbnQgaSA9IDA7Ci0gICAgUHlfVU5JQ09ERSAqdiA9IHU7Ci0gICAgd2hpbGUgKCp2ICE9IDApIHsgaSsrOyB2Kys7IH0KLSAgICByZXR1cm4gaTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGRvX21rdHVwbGUoY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZW5kY2hhciwgaW50IG4sIGludCBmbGFncykKIHsKQEAgLTI2OSw3ICsyNjAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKG4gPCAwKQotICAgICAgICAgICAgICAgICAgICBuID0gX3VzdHJsZW4odSk7CisgICAgICAgICAgICAgICAgICAgIG4gPSBQeV9VTklDT0RFX3N0cmxlbih1KTsKICAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIG4pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHY7CkBAIC0yOTIsMTEgKzI4Myw2IEBACiAgICAgICAgIGNhc2UgJ0MnOgogICAgICAgICB7CiAgICAgICAgICAgICBpbnQgaSA9IHZhX2FyZygqcF92YSwgaW50KTsKLSAgICAgICAgICAgIGlmIChpIDwgMCB8fCBpID4gUHlVbmljb2RlX0dldE1heCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChpKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IGE5MWRhNzkuLjJkNmJjZGEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC03MSw3ICs3MSw3IEBACiAgICAgJiZUQVJHRVRfU1RPUkVfTE9DQUxTLAogICAgICYmVEFSR0VUX1BSSU5UX0VYUFIsCiAgICAgJiZUQVJHRVRfTE9BRF9CVUlMRF9DTEFTUywKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9ZSUVMRF9GUk9NLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX0lOUExBQ0VfTFNISUZULApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCAzNTllZGE4Li41ZDUzNjc3IDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtMjMsNiArMjMsNjQgQEAKICNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGJ5dGVzKSBcCiAgICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tzdGFydCtieXRlcy0xXSkKIAorCisjZGVmaW5lIENPTlNUX1NUQUNLX0NSRUFURSgpIHsgXAorICAgIGNvbnN0X3N0YWNrX3NpemUgPSAyNTY7IFwKKyAgICBjb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeU9iamVjdCAqLCBjb25zdF9zdGFja19zaXplKTsgXAorICAgIGxvYWRfY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlfc3NpemVfdCwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKKyAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAorICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAorICAgIH0gXAorICAgIH0KKworI2RlZmluZSBDT05TVF9TVEFDS19ERUxFVEUoKSBkbyB7IFwKKyAgICBpZiAoY29uc3Rfc3RhY2spIFwKKyAgICAgICAgUHlNZW1fRnJlZShjb25zdF9zdGFjayk7IFwKKyAgICBpZiAobG9hZF9jb25zdF9zdGFjaykgXAorICAgICAgICBQeU1lbV9GcmVlKGxvYWRfY29uc3Rfc3RhY2spOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX0xFTigpIChjb25zdF9zdGFja190b3AgKyAxKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1BVU0hfT1AoaSkgZG8geyBcCisgICAgUHlPYmplY3QgKl94OyBcCisgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7IFwKKyAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCisgICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCisgICAgaWYgKCsrY29uc3Rfc3RhY2tfdG9wID49IGNvbnN0X3N0YWNrX3NpemUpIHsgXAorICAgICAgICBjb25zdF9zdGFja19zaXplICo9IDI7IFwKKyAgICAgICAgUHlNZW1fUmVzaXplKGNvbnN0X3N0YWNrLCBQeU9iamVjdCAqLCBjb25zdF9zdGFja19zaXplKTsgXAorICAgICAgICBQeU1lbV9SZXNpemUobG9hZF9jb25zdF9zdGFjaywgUHlfc3NpemVfdCwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKKyAgICAgICAgaWYgKCFjb25zdF9zdGFjayB8fCAhbG9hZF9jb25zdF9zdGFjaykgeyBcCisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCisgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBpOyBcCisgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IF94OyBcCisgICAgaW5fY29uc3RzID0gMTsgXAorICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBDT05TVF9TVEFDS19SRVNFVCgpIGRvIHsgXAorICAgIGNvbnN0X3N0YWNrX3RvcCA9IC0xOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1RPUCgpIFwKKyAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEFTVE4oaSkgXAorICAgICZjb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0KKworI2RlZmluZSBDT05TVF9TVEFDS19QT1AoaSkgZG8geyBcCisgICAgYXNzZXJ0KGNvbnN0X3N0YWNrX3RvcCArIDEgPj0gaSk7IFwKKyAgICBjb25zdF9zdGFja190b3AgLT0gaTsgXAorICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBDT05TVF9TVEFDS19PUF9MQVNUTihpKSBcCisgICAgKChjb25zdF9zdGFja190b3AgPj0gaSAtIDEpID8gbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0gOiAtMSkKKworCiAvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24gQlVJTERfVFVQTEUgbgogICAgd2l0aCAgICBMT0FEX0NPTlNUIChjMSwgYzIsIC4uLiBjbikuCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCkBAIC0zMywxNyArOTEsMTQgQEAKICAgIHRlc3Q7IGZvciBCVUlMRF9TRVQgaXQgYXNzZW1ibGVzIGEgZnJvemVuc2V0IHJhdGhlciB0aGFuIGEgdHVwbGUuCiAqLwogc3RhdGljIGludAotdHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwgUHlPYmplY3QgKmNvbnN0cykKK3R1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdCwgKmNvbnN0YW50OwotICAgIFB5X3NzaXplX3QgaSwgYXJnLCBsZW5fY29uc3RzOworICAgIFB5X3NzaXplX3QgaSwgbGVuX2NvbnN0czsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyW24qM10gPT0gQlVJTERfVFVQTEUgfHwgY29kZXN0cltuKjNdID09IEJVSUxEX0xJU1QgfHwgY29kZXN0cltuKjNdID09IEJVSUxEX1NFVCk7Ci0gICAgYXNzZXJ0KEdFVEFSRyhjb2Rlc3RyLCAobiozKSkgPT0gbik7Ci0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspCi0gICAgICAgIGFzc2VydChjb2Rlc3RyW2kqM10gPT0gTE9BRF9DT05TVCk7CiAKICAgICAvKiBCdWlsZHVwIG5ldyB0dXBsZSBvZiBjb25zdGFudHMgKi8KICAgICBuZXdjb25zdCA9IFB5VHVwbGVfTmV3KG4pOwpAQCAtNTEsMTYgKzEwNiwxNCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKLSAgICAgICAgYXJnID0gR0VUQVJHKGNvZGVzdHIsIChpKjMpKTsKLSAgICAgICAgYXNzZXJ0KGFyZyA8IGxlbl9jb25zdHMpOwotICAgICAgICBjb25zdGFudCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIGFyZyk7CisgICAgICAgIGNvbnN0YW50ID0gb2Jqc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKGNvbnN0YW50KTsKICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdjb25zdCwgaSwgY29uc3RhbnQpOwogICAgIH0KIAogICAgIC8qIElmIGl0J3MgYSBCVUlMRF9TRVQsIHVzZSB0aGUgUHlUdXBsZSB3ZSBqdXN0IGJ1aWx0IHRvIGNyZWF0ZSBhCiAgICAgICBQeUZyb3plblNldCwgYW5kIHVzZSB0aGF0IGFzIHRoZSBjb25zdGFudCBpbnN0ZWFkOiAqLwotICAgIGlmIChjb2Rlc3RyW24qM10gPT0gQlVJTERfU0VUKSB7CisgICAgaWYgKGNvZGVzdHJbMF0gPT0gQlVJTERfU0VUKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0dXBsZSA9IG5ld2NvbnN0OwogICAgICAgICBuZXdjb25zdCA9IFB5RnJvemVuU2V0X05ldyh0dXBsZSk7CiAgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CkBAIC03Nyw5ICsxMzAsOCBAQAogCiAgICAgLyogV3JpdGUgTk9QcyBvdmVyIG9sZCBMT0FEX0NPTlNUUyBhbmQKICAgICAgICBhZGQgYSBuZXcgTE9BRF9DT05TVCBuZXdjb25zdCBvbiB0b3Agb2YgdGhlIEJVSUxEX1RVUExFIG4gKi8KLSAgICBtZW1zZXQoY29kZXN0ciwgTk9QLCBuKjMpOwotICAgIGNvZGVzdHJbbiozXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIChuKjMpLCBsZW5fY29uc3RzKTsKKyAgICBjb2Rlc3RyWzBdID0gTE9BRF9DT05TVDsKKyAgICBTRVRBUkcoY29kZXN0ciwgMCwgbGVuX2NvbnN0cyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTg3LDE0ICsxMzksMTQgQEAKICAgIHdpdGggICAgTE9BRF9DT05TVCBiaW5vcChjMSxjMikKICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKICAgIG5ldyBjb25zdGFudCBjYW4gYmUgYXBwZW5kZWQuCi0gICBDYWxsZWQgd2l0aCBjb2Rlc3RyIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBMT0FEX0NPTlNULgorICAgQ2FsbGVkIHdpdGggY29kZXN0ciBwb2ludGluZyB0byB0aGUgQklOT1AuCiAgICBBYmFuZG9ucyB0aGUgdHJhbnNmb3JtYXRpb24gaWYgdGhlIGZvbGRpbmcgZmFpbHMgKGkuZS4gIDErJ2EnKS4KICAgIElmIHRoZSBuZXcgY29uc3RhbnQgaXMgYSBzZXF1ZW5jZSwgb25seSBmb2xkcyB3aGVuIHRoZSBzaXplCiAgICBpcyBiZWxvdyBhIHRocmVzaG9sZCB2YWx1ZS4gIFRoYXQga2VlcHMgcHljIGZpbGVzIGZyb20KICAgIGJlY29taW5nIGxhcmdlIGluIHRoZSBwcmVzZW5jZSBvZiBjb2RlIGxpa2U6ICAoTm9uZSwpKjEwMDAuCiAqLwogc3RhdGljIGludAotZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMpCitmb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdCwgKnYsICp3OwogICAgIFB5X3NzaXplX3QgbGVuX2NvbnN0cywgc2l6ZTsKQEAgLTEwMiwxMyArMTU0LDExIEBACiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKLSAgICBhc3NlcnQoY29kZXN0clszXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICB2ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIDApKTsKLSAgICB3ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIDMpKTsKLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzZdOworICAgIHYgPSBvYmpzWzBdOworICAgIHcgPSBvYmpzWzFdOworICAgIG9wY29kZSA9IGNvZGVzdHJbMF07CiAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX1Bvd2VyKHYsIHcsIFB5X05vbmUpOwpAQCAtMTMzLDI0ICsxODMsNiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQklOQVJZX1NVQlNDUjoKICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlPYmplY3RfR2V0SXRlbSh2LCB3KTsKLSAgICAgICAgICAgIC8qICM1MDU3OiBpZiB2IGlzIHVuaWNvZGUsIHRoZXJlIG1pZ2h0IGJlIGRpZmZlcmVuY2VzIGJldHdlZW4KLSAgICAgICAgICAgICAgIHdpZGUgYW5kIG5hcnJvdyBidWlsZHMgaW4gY2FzZXMgbGlrZSAnXFUwMDAxMjM0NSdbMF0uCi0gICAgICAgICAgICAgICBXaWRlIGJ1aWxkcyB3aWxsIHJldHVybiBhIG5vbi1CTVAgY2hhciwgd2hlcmVhcyBuYXJyb3cgYnVpbGRzCi0gICAgICAgICAgICAgICB3aWxsIHJldHVybiBhIHN1cnJvZ2F0ZS4gIEluIGJvdGggdGhlIGNhc2VzIHNraXAgdGhlCi0gICAgICAgICAgICAgICBvcHRpbWl6YXRpb24gaW4gb3JkZXIgdG8gcHJvZHVjZSBjb21wYXRpYmxlIHB5Y3MuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChuZXdjb25zdCAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrKHYpICYmIFB5VW5pY29kZV9DaGVjayhuZXdjb25zdCkpIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmV3Y29uc3QpWzBdOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGlmIChjaCA+IDB4RkZGRikgewotI2Vsc2UKLSAgICAgICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDw9IDB4REZGRikgewotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEJJTkFSWV9MU0hJRlQ6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX0xzaGlmdCh2LCB3KTsKQEAgLTE5OCwxNiArMjMwLDE1IEBACiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAogICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgbWVtc2V0KGNvZGVzdHIsIE5PUCwgNCk7Ci0gICAgY29kZXN0cls0XSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDQsIGxlbl9jb25zdHMpOworICAgIGNvZGVzdHJbLTJdID0gTE9BRF9DT05TVDsKKyAgICBTRVRBUkcoY29kZXN0ciwgLTIsIGxlbl9jb25zdHMpOwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzKQorZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKnYpCiB7Ci0gICAgUHlPYmplY3QgKm5ld2NvbnN0PU5VTEwsICp2OworICAgIFB5T2JqZWN0ICpuZXdjb25zdDsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHM7CiAgICAgaW50IG9wY29kZTsKIApAQCAtMjE2LDEzICsyNDcsMTAgQEAKICAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICB2ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgR0VUQVJHKGNvZGVzdHIsIDApKTsKICAgICBvcGNvZGUgPSBjb2Rlc3RyWzNdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6Ci0gICAgICAgICAgICAvKiBQcmVzZXJ2ZSB0aGUgc2lnbiBvZiAtMC4wICovCi0gICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHYpID09IDEpCi0gICAgICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKKyAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfTmVnYXRpdmUodik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX0ludmVydCh2KTsKQEAgLTM1OCw3ICszODYsMTEgQEAKICAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87CiAgICAgaW50ICphZGRybWFwID0gTlVMTDsKICAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZSwgdGFic2l6OwotICAgIGludCBjdW1sYz0wLCBsYXN0bGM9MDsgICAgICAvKiBDb3VudCBydW5zIG9mIGNvbnNlY3V0aXZlIExPQURfQ09OU1RzICovCisgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7CisgICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKKyAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOworICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBOVUxMOwogICAgIGNoYXIgKm5hbWU7CiAKQEAgLTQwNCwxMiArNDM2LDE2IEBACiAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2soY29uc3RzKSk7CiAKKyAgICBDT05TVF9TVEFDS19DUkVBVEUoKTsKKwogICAgIGZvciAoaT0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgewogICAgICAgcmVvcHRpbWl6ZV9jdXJyZW50OgogICAgICAgICBvcGNvZGUgPSBjb2Rlc3RyW2ldOwogCi0gICAgICAgIGxhc3RsYyA9IGN1bWxjOwotICAgICAgICBjdW1sYyA9IDA7CisgICAgICAgIGlmICghaW5fY29uc3RzKSB7CisgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOworICAgICAgICB9CisgICAgICAgIGluX2NvbnN0cyA9IDA7CiAKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgICAgIC8qIFJlcGxhY2UgVU5BUllfTk9UIFBPUF9KVU1QX0lGX0ZBTFNFCkBAIC00NTAsMjEgKzQ4NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChoID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGN1bWxjID0gbGFzdGxjICsgMTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0CiAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKICAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6Ci0gICAgICAgICAgICAgICAgY3VtbGMgPSBsYXN0bGMgKyAxOworICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzNdICE9IFBPUF9KVU1QX0lGX0ZBTFNFICB8fAogICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpICB8fAogICAgICAgICAgICAgICAgICAgICAhUHlPYmplY3RfSXNUcnVlKFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIGopKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSwgTk9QLCA2KTsKLSAgICAgICAgICAgICAgICBjdW1sYyA9IDA7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFRyeSB0byBmb2xkIHR1cGxlcyBvZiBjb25zdGFudHMgKGluY2x1ZGVzIGEgY2FzZSBmb3IgbGlzdHMgYW5kIHNldHMKQEAgLTQ3NiwxOSArNTEyLDIzIEBACiAgICAgICAgICAgICBjYXNlIEJVSUxEX0xJU1Q6CiAgICAgICAgICAgICBjYXNlIEJVSUxEX1NFVDoKICAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGggPSBpIC0gMyAqIGo7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAgJiYKLSAgICAgICAgICAgICAgICAgICAgaiA8PSBsYXN0bGMgICAgICAgICAgICAgICAgICAmJgorICAgICAgICAgICAgICAgIGlmIChqID09IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTihqKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IGopKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmIGogPiAwICYmIGogPD0gQ09OU1RfU1RBQ0tfTEVOKCkgJiYKICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCAzKihqKzEpKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMykpIHx8CiAgICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9MSVNUIHx8IG9wY29kZSA9PSBCVUlMRF9TRVQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdPT1DT01QQVJFX09QICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgMyooaisyKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKICAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAogICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltoXSwgaiwgY29uc3RzKSkgeworICAgICAgICAgICAgICAgICAgICB0dXBsZV9vZl9jb25zdGFudHMoJmNvZGVzdHJbaV0sIGosIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oaikpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fApAQCAtNTAxLDEwICs1NDEsMTIgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMikgewogICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RXTzsKICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDUpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBST1RfVEhSRUU7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSsxXSA9IFJPVF9UV087CiAgICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMiwgTk9QLCA0KTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUyMywxMiArNTY1LDE4IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICBpZiAobGFzdGxjID49IDIgICAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLTYsIDcpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS02XSwgY29uc3RzKSkgeworICAgICAgICAgICAgICAgIC8qIE5PVEU6IExPQURfQ09OU1QgaXMgc2F2ZWQgYXQgYGktMmAgc2luY2UgaXQgaGFzIGFuIGFyZworICAgICAgICAgICAgICAgICAgIHdoaWxlIEJJTk9QIGhhc24ndCAqLworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigyKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDIpKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKSkgewogICAgICAgICAgICAgICAgICAgICBpIC09IDI7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUzNywxMiArNTg1LDE1IEBACiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGlmIChsYXN0bGMgPj0gMSAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGktMywgNCkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ktM10sIGNvbnN0cykpICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKKyAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCisgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKKyAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgY3VtbGMgPSAxOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02OTksNiArNzUwLDcgQEAKICAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CiAKICAgICBjb2RlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWNvZGVzdHIsIGgpOworICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwogICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7CiAgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CkBAIC03MDgsNiArNzYwLDcgQEAKICAgICBjb2RlID0gTlVMTDsKIAogIGV4aXRVbmNoYW5nZWQ6CisgICAgQ09OU1RfU1RBQ0tfREVMRVRFKCk7CiAgICAgaWYgKGJsb2NrcyAhPSBOVUxMKQogICAgICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CiAgICAgaWYgKGFkZHJtYXAgIT0gTlVMTCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWFyZW5hLmMgYi9QeXRob24vcHlhcmVuYS5jCmluZGV4IDVhMjU1YWUuLmJiMmZkMWUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWFyZW5hLmMKKysrIGIvUHl0aG9uL3B5YXJlbmEuYwpAQCAtMTIsOCArMTIsNiBAQAogCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSA4MTkyCiAjZGVmaW5lIEFMSUdOTUVOVCAgICAgICAgICAgICAgIDgKLSNkZWZpbmUgQUxJR05NRU5UX01BU0sgICAgICAgICAgKEFMSUdOTUVOVCAtIDEpCi0jZGVmaW5lIFJPVU5EVVAoeCkgICAgICAgICAgICAgICgoKHgpICsgQUxJR05NRU5UX01BU0spICYgfkFMSUdOTUVOVF9NQVNLKQogCiB0eXBlZGVmIHN0cnVjdCBfYmxvY2sgewogICAgIC8qIFRvdGFsIG51bWJlciBvZiBieXRlcyBvd25lZCBieSB0aGlzIGJsb2NrIGF2YWlsYWJsZSB0byBwYXNzIG91dC4KQEAgLTg1LDggKzgzLDggQEAKICAgICBiLT5hYl9zaXplID0gc2l6ZTsKICAgICBiLT5hYl9tZW0gPSAodm9pZCAqKShiICsgMSk7CiAgICAgYi0+YWJfbmV4dCA9IE5VTEw7Ci0gICAgYi0+YWJfb2Zmc2V0ID0gUk9VTkRVUCgoUHlfdWludHB0cl90KShiLT5hYl9tZW0pKSAtCi0gICAgICAoUHlfdWludHB0cl90KShiLT5hYl9tZW0pOworICAgIGItPmFiX29mZnNldCA9IChjaGFyICopX1B5X0FMSUdOX1VQKGItPmFiX21lbSwgQUxJR05NRU5UKSAtCisgICAgICAgICAgICAoY2hhciAqKShiLT5hYl9tZW0pOwogICAgIHJldHVybiBiOwogfQogCkBAIC0xMDQsNyArMTAyLDcgQEAKIHsKICAgICB2b2lkICpwOwogICAgIGFzc2VydChiKTsKLSAgICBzaXplID0gUk9VTkRVUChzaXplKTsKKyAgICBzaXplID0gX1B5X1NJWkVfUk9VTkRfVVAoc2l6ZSwgQUxJR05NRU5UKTsKICAgICBpZiAoYi0+YWJfb2Zmc2V0ICsgc2l6ZSA+IGItPmFiX3NpemUpIHsKICAgICAgICAgLyogSWYgd2UgbmVlZCB0byBhbGxvY2F0ZSBtb3JlIG1lbW9yeSB0aGFuIHdpbGwgZml0IGluCiAgICAgICAgICAgIHRoZSBkZWZhdWx0IGJsb2NrLCBhbGxvY2F0ZSBhIG9uZS1vZmYgYmxvY2sgdGhhdCBpcwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RhdGUuYyBiL1B5dGhvbi9weXN0YXRlLmMKaW5kZXggNDJiYzNlYy4uY2ZkNjFkMCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5c3RhdGUuYworKysgYi9QeXRob24vcHlzdGF0ZS5jCkBAIC02OSw3ICs2OSw2IEBACiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHRocmVhZHMgZm9yIGludGVycHJldGVyIik7CiAjZW5kaWYKICAgICAgICAgaW50ZXJwLT5tb2R1bGVzID0gTlVMTDsKLSAgICAgICAgaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyA9IE5VTEw7CiAgICAgICAgIGludGVycC0+bW9kdWxlc19ieV9pbmRleCA9IE5VTEw7CiAgICAgICAgIGludGVycC0+c3lzZGljdCA9IE5VTEw7CiAgICAgICAgIGludGVycC0+YnVpbHRpbnMgPSBOVUxMOwpAQCAtNzksNiArNzgsNyBAQAogICAgICAgICBpbnRlcnAtPmNvZGVjX2Vycm9yX3JlZ2lzdHJ5ID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5jb2RlY3NfaW5pdGlhbGl6ZWQgPSAwOwogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAwOworICAgICAgICBpbnRlcnAtPmltcG9ydGxpYiA9IE5VTEw7CiAjaWZkZWYgSEFWRV9ETE9QRU4KICNpZmRlZiBSVExEX05PVwogICAgICAgICBpbnRlcnAtPmRsb3BlbmZsYWdzID0gUlRMRF9OT1c7CkBAIC0xMTMsOSArMTEzLDkgQEAKICAgICBQeV9DTEVBUihpbnRlcnAtPmNvZGVjX2Vycm9yX3JlZ2lzdHJ5KTsKICAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXMpOwogICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlc19ieV9pbmRleCk7Ci0gICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5zeXNkaWN0KTsKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zKTsKKyAgICBQeV9DTEVBUihpbnRlcnAtPmltcG9ydGxpYik7CiB9CiAKIApAQCAtMjQyLDkgKzI0Miw5IEBACiB9CiAKIFB5T2JqZWN0KgotUHlTdGF0ZV9GaW5kTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogbSkKK1B5U3RhdGVfRmluZE1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqIG1vZHVsZSkKIHsKLSAgICBQeV9zc2l6ZV90IGluZGV4ID0gbS0+bV9iYXNlLm1faW5kZXg7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IG1vZHVsZS0+bV9iYXNlLm1faW5kZXg7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChpbmRleCA9PSAwKQpAQCAtMjc2LDYgKzI3Niw0NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luZGV4LCBtb2R1bGUpOwogfQogCitpbnQKK1B5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0KiBtb2R1bGUsIHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQoreworICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKKyAgICBpZiAoIWRlZikgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX0FkZE1vZHVsZTogTW9kdWxlIERlZmluaXRpb24gaXMgTlVMTCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGluZGV4ID0gZGVmLT5tX2Jhc2UubV9pbmRleDsKKyAgICBpZiAoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgpIHsKKyAgICAgICAgaWYoUHlMaXN0X0dFVF9TSVpFKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSA+PSBpbmRleCkgeworICAgICAgICAgICAgaWYobW9kdWxlID09IFB5TGlzdF9HRVRfSVRFTShzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCwgaW5kZXgpKSB7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9BZGRNb2R1bGU6IE1vZHVsZSBhbHJlYWR5IGFkZGVkISIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gX1B5U3RhdGVfQWRkTW9kdWxlKG1vZHVsZSwgZGVmKTsKK30KKworaW50CitQeVN0YXRlX1JlbW92ZU1vZHVsZShzdHJ1Y3QgUHlNb2R1bGVEZWYqIGRlZikKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVmLT5tX2Jhc2UubV9pbmRleDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIGlmIChpbmRleCA9PSAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfUmVtb3ZlTW9kdWxlOiBNb2R1bGUgaW5kZXggaW52YWxpZC4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXggPT0gTlVMTCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogSW50ZXJwcmV0ZXJzIG1vZHVsZS1saXN0IG5vdCBhY2Vzc2libGUuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGluZGV4ID4gUHlMaXN0X0dFVF9TSVpFKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4KSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX1JlbW92ZU1vZHVsZTogTW9kdWxlIGluZGV4IG91dCBvZiBib3VuZHMuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIFB5TGlzdF9TZXRJdGVtKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4LCBpbmRleCwgUHlfTm9uZSk7Cit9CisKIHZvaWQKIFB5VGhyZWFkU3RhdGVfQ2xlYXIoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQogewpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RydG9kLmMgYi9QeXRob24vcHlzdHJ0b2QuYwppbmRleCA3NWUzMDMyLi40YWI4ZjA4IDEwMDY0NAotLS0gYS9QeXRob24vcHlzdHJ0b2QuYworKysgYi9QeXRob24vcHlzdHJ0b2QuYwpAQCAtMjIsNiArMjIsNDMgQEAKICAgIHRoZSBzdWNjZXNzZnVsbHkgcGFyc2VkIHBvcnRpb24gb2YgdGhlIHN0cmluZy4gIE9uIGZhaWx1cmUsIHJldHVybiAtMS4wIGFuZAogICAgc2V0ICplbmRwdHIgdG8gcG9pbnQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcuICovCiAKKyNpZm5kZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorCitkb3VibGUKK19QeV9wYXJzZV9pbmZfb3JfbmFuKGNvbnN0IGNoYXIgKnAsIGNoYXIgKiplbmRwdHIpCit7CisgICAgZG91YmxlIHJldHZhbDsKKyAgICBjb25zdCBjaGFyICpzOworICAgIGludCBuZWdhdGUgPSAwOworCisgICAgcyA9IHA7CisgICAgaWYgKCpzID09ICctJykgeworICAgICAgICBuZWdhdGUgPSAxOworICAgICAgICBzKys7CisgICAgfQorICAgIGVsc2UgaWYgKCpzID09ICcrJykgeworICAgICAgICBzKys7CisgICAgfQorICAgIGlmIChjYXNlX2luc2Vuc2l0aXZlX21hdGNoKHMsICJpbmYiKSkgeworICAgICAgICBzICs9IDM7CisgICAgICAgIGlmIChjYXNlX2luc2Vuc2l0aXZlX21hdGNoKHMsICJpbml0eSIpKQorICAgICAgICAgICAgcyArPSA1OworICAgICAgICByZXR2YWwgPSBfUHlfZGdfaW5maW5pdHkobmVnYXRlKTsKKyAgICB9CisgICAgZWxzZSBpZiAoY2FzZV9pbnNlbnNpdGl2ZV9tYXRjaChzLCAibmFuIikpIHsKKyAgICAgICAgcyArPSAzOworICAgICAgICByZXR2YWwgPSBfUHlfZGdfc3RkbmFuKG5lZ2F0ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzID0gcDsKKyAgICAgICAgcmV0dmFsID0gLTEuMDsKKyAgICB9CisgICAgKmVuZHB0ciA9IChjaGFyICopczsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisjZWxzZQorCiBkb3VibGUKIF9QeV9wYXJzZV9pbmZfb3JfbmFuKGNvbnN0IGNoYXIgKnAsIGNoYXIgKiplbmRwdHIpCiB7CkBAIC01Nyw2ICs5NCw4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorI2VuZGlmCisKIC8qKgogICogX1B5T1NfYXNjaWlfc3RydG9kOgogICogQG5wdHI6ICAgIHRoZSBzdHJpbmcgdG8gY29udmVydCB0byBhIG51bWVyaWMgdmFsdWUuCkBAIC05NTQsNyArOTkzLDcgQEAKICAgICAgICAgICAgIC8qIHNob3VsZG4ndCBnZXQgaGVyZTogR2F5J3MgY29kZSBzaG91bGQgYWx3YXlzIHJldHVybgogICAgICAgICAgICAgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggYSBkaWdpdCwgYW4gJ0knLCAgb3IgJ04nICovCiAgICAgICAgICAgICBzdHJuY3B5KHAsICJFUlIiLCAzKTsKLSAgICAgICAgICAgIHAgKz0gMzsKKyAgICAgICAgICAgIC8qIHAgKz0gMzsgKi8KICAgICAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgfQogICAgICAgICBnb3RvIGV4aXQ7CmRpZmYgLS1naXQgYS9QeXRob24vcHl0aG9ucnVuLmMgYi9QeXRob24vcHl0aG9ucnVuLmMKaW5kZXggY2Y0ZTM0Yy4uYjFjYTEyNSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGhvbnJ1bi5jCisrKyBiL1B5dGhvbi9weXRob25ydW4uYwpAQCAtNTIsNyArNTIsNyBAQAogZXh0ZXJuIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXI7IC8qIEZyb20gZ3JhbWluaXQuYyAqLwogCiAvKiBGb3J3YXJkICovCi1zdGF0aWMgdm9pZCBpbml0bWFpbih2b2lkKTsKK3N0YXRpYyB2b2lkIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKTsKIHN0YXRpYyBpbnQgaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwogc3RhdGljIHZvaWQgaW5pdHNpdGUodm9pZCk7CiBzdGF0aWMgaW50IGluaXRzdGRpbyh2b2lkKTsKQEAgLTYyLDE0ICs2MiwxNyBAQAogc3RhdGljIFB5T2JqZWN0ICpydW5fcHljX2ZpbGUoRklMRSAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKik7CiBzdGF0aWMgdm9pZCBlcnJfaW5wdXQocGVycmRldGFpbCAqKTsKK3N0YXRpYyB2b2lkIGVycl9mcmVlKHBlcnJkZXRhaWwgKik7CiBzdGF0aWMgdm9pZCBpbml0c2lncyh2b2lkKTsKIHN0YXRpYyB2b2lkIGNhbGxfcHlfZXhpdGZ1bmNzKHZvaWQpOwogc3RhdGljIHZvaWQgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpOwogc3RhdGljIHZvaWQgY2FsbF9sbF9leGl0ZnVuY3Modm9pZCk7Ci1leHRlcm4gdm9pZCBfUHlVbmljb2RlX0luaXQodm9pZCk7CitleHRlcm4gaW50IF9QeVVuaWNvZGVfSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIF9QeVVuaWNvZGVfRmluaSh2b2lkKTsKIGV4dGVybiBpbnQgX1B5TG9uZ19Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgUHlMb25nX0Zpbmkodm9pZCk7CitleHRlcm4gaW50IF9QeUZhdWx0aGFuZGxlcl9Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgX1B5RmF1bHRoYW5kbGVyX0Zpbmkodm9pZCk7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfSW5pdChQeUludGVycHJldGVyU3RhdGUgKiwgUHlUaHJlYWRTdGF0ZSAqKTsKQEAgLTEzOSwxMiArMTQyLDEzIEBACiB7CiAgICAgY2hhciAqbmFtZV91dGY4LCAqbmFtZV9zdHI7CiAgICAgUHlPYmplY3QgKmNvZGVjLCAqbmFtZSA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIobmFtZSk7CiAKICAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChlbmNvZGluZyk7CiAgICAgaWYgKCFjb2RlYykKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIG5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvZGVjLCAibmFtZSIpOworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvZGVjLCAmUHlJZF9uYW1lKTsKICAgICBQeV9DTEVBUihjb2RlYyk7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTY2LDIxICsxNzAsNzkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCiBzdGF0aWMgY2hhcioKLWdldF9jb2Rlc2V0KHZvaWQpCitnZXRfbG9jYWxlX2VuY29kaW5nKHZvaWQpCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGNoYXIgY29kZXBhZ2VbMTAwXTsKKyAgICBQeU9TX3NucHJpbnRmKGNvZGVwYWdlLCBzaXplb2YoY29kZXBhZ2UpLCAiY3AlZCIsIEdldEFDUCgpKTsKKyAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXBhZ2UpOworI2VsaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKICAgICBjaGFyKiBjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CiAgICAgaWYgKCFjb2Rlc2V0IHx8IGNvZGVzZXRbMF0gPT0gJ1wwJykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNPREVTRVQgaXMgbm90IHNldCBvciBlbXB0eSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOwotfQorI2Vsc2UKKyAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOworICAgIHJldHVybiBOVUxMOwogI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCitpbXBvcnRfaW5pdChQeUludGVycHJldGVyU3RhdGUgKmludGVycCwgUHlPYmplY3QgKnN5c21vZCkKK3sKKyAgICBQeU9iamVjdCAqaW1wb3J0bGliOworICAgIFB5T2JqZWN0ICppbXBtb2Q7CisgICAgUHlPYmplY3QgKnN5c19tb2R1bGVzOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIC8qIEltcG9ydCBfaW1wb3J0bGliIHRocm91Z2ggaXRzIGZyb3plbiB2ZXJzaW9uLCBfZnJvemVuX2ltcG9ydGxpYi4gKi8KKyAgICBpZiAoUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKCJfZnJvemVuX2ltcG9ydGxpYiIpIDw9IDApIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliIik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliICMgZnJvemVuXG4iKTsKKyAgICB9CisgICAgaW1wb3J0bGliID0gUHlJbXBvcnRfQWRkTW9kdWxlKCJfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIGlmIChpbXBvcnRsaWIgPT0gTlVMTCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjb3VsZG4ndCBnZXQgX2Zyb3plbl9pbXBvcnRsaWIgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgInN5cy5tb2R1bGVzIik7CisgICAgfQorICAgIGludGVycC0+aW1wb3J0bGliID0gaW1wb3J0bGliOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPmltcG9ydGxpYik7CisKKyAgICAvKiBJbnN0YWxsIF9pbXBvcnRsaWIgYXMgX19pbXBvcnRfXyAqLworICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKKyAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IGltcCIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBpbXAgIyBidWlsdGluXG4iKTsKKyAgICB9CisgICAgc3lzX21vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7CisgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IHN5cyAjIGJ1aWx0aW5cbiIpOworICAgIH0KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoc3lzX21vZHVsZXMsICJfaW1wIiwgaW1wbW9kKSA8IDApIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2F2ZSBfaW1wIHRvIHN5cy5tb2R1bGVzIik7CisgICAgfQorCisgICAgdmFsdWUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGltcG9ydGxpYiwgIl9pbnN0YWxsIiwgIk9PIiwgc3lzbW9kLCBpbXBtb2QpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGltcG9ydGxpYiBpbnN0YWxsIGZhaWxlZCIpOworICAgIH0KKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihpbXBtb2QpOworCisgICAgX1B5SW1wb3J0WmlwX0luaXQoKTsKK30KKwogCiB2b2lkCi1QeV9Jbml0aWFsaXplRXgoaW50IGluc3RhbGxfc2lncykKK19QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQgaW5zdGFsbF9zaWdzLCBpbnQgaW5zdGFsbF9pbXBvcnRsaWIpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwpAQCAtMjUyLDEyICszMTQsMTAgQEAKICAgICBpbnRlcnAtPm1vZHVsZXMgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKGludGVycC0+bW9kdWxlcyA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIG1vZHVsZXMgZGljdGlvbmFyeSIpOwotICAgIGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGludGVycC0+bW9kdWxlc19yZWxvYWRpbmcgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzX3JlbG9hZGluZyBkaWN0aW9uYXJ5Iik7CiAKICAgICAvKiBJbml0IFVuaWNvZGUgaW1wbGVtZW50YXRpb247IHJlbGllcyBvbiB0aGUgY29kZWMgcmVnaXN0cnkgKi8KLSAgICBfUHlVbmljb2RlX0luaXQoKTsKKyAgICBpZiAoX1B5VW5pY29kZV9Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHVuaWNvZGUiKTsKIAogICAgIGJpbW9kID0gX1B5QnVpbHRpbl9Jbml0KCk7CiAgICAgaWYgKGJpbW9kID09IE5VTEwpCkBAIC0yNjksNyArMzI5LDcgQEAKICAgICBQeV9JTkNSRUYoaW50ZXJwLT5idWlsdGlucyk7CiAKICAgICAvKiBpbml0aWFsaXplIGJ1aWx0aW4gZXhjZXB0aW9ucyAqLwotICAgIF9QeUV4Y19Jbml0KCk7CisgICAgX1B5RXhjX0luaXQoYmltb2QpOwogCiAgICAgc3lzbW9kID0gX1B5U3lzX0luaXQoKTsKICAgICBpZiAoc3lzbW9kID09IE5VTEwpCkBAIC0yOTksNiArMzU5LDE1IEBACiAgICAgLyogSW5pdGlhbGl6ZSBfd2FybmluZ3MuICovCiAgICAgX1B5V2FybmluZ3NfSW5pdCgpOwogCisgICAgaWYgKCFpbnN0YWxsX2ltcG9ydGxpYikKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCisgICAgLyogaW5pdGlhbGl6ZSB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLworICAgIGlmIChfUHlGYXVsdGhhbmRsZXJfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGZhdWx0aGFuZGxlciIpOworCiAgICAgX1B5VGltZV9Jbml0KCk7CiAKICAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCkBAIC0zMDcsNyArMzc2LDcgQEAKICAgICBpZiAoaW5zdGFsbF9zaWdzKQogICAgICAgICBpbml0c2lncygpOyAvKiBTaWduYWwgaGFuZGxpbmcgc3R1ZmYsIGluY2x1ZGluZyBpbml0aW50cigpICovCiAKLSAgICBpbml0bWFpbigpOyAvKiBNb2R1bGUgX19tYWluX18gKi8KKyAgICBpbml0bWFpbihpbnRlcnApOyAvKiBNb2R1bGUgX19tYWluX18gKi8KICAgICBpZiAoaW5pdHN0ZGlvKCkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKQEAgLTMyNyw2ICszOTYsMTIgQEAKIH0KIAogdm9pZAorUHlfSW5pdGlhbGl6ZUV4KGludCBpbnN0YWxsX3NpZ3MpCit7CisgICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGluc3RhbGxfc2lncywgMSk7Cit9CisKK3ZvaWQKIFB5X0luaXRpYWxpemUodm9pZCkKIHsKICAgICBQeV9Jbml0aWFsaXplRXgoMSk7CkBAIC0zNjEsOSArNDM2LDEwIEBACiAgICAgUHlPYmplY3QgKmZvdXQgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKIAogICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgewotICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvdXQsICJmbHVzaCIsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZm91dCk7CiAgICAgICAgIGVsc2UKQEAgLTM3MSw3ICs0NDcsNyBAQAogICAgIH0KIAogICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZlcnIsICJmbHVzaCIsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC00NjQsNyArNTQwLDcgQEAKICAgICBmbHVzaF9zdGRfZmlsZXMoKTsKIAogICAgIC8qIENvbGxlY3QgZmluYWwgZ2FyYmFnZS4gIFRoaXMgZGlzcG9zZXMgb2YgY3ljbGVzIGNyZWF0ZWQgYnkKLSAgICAgKiBuZXctc3R5bGUgY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgorICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KICAgICAgKiBYWFggVGhpcyBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IGNhdXNlZCB0b28gbWFueSBwcm9ibGVtcy4gIElmCiAgICAgICogWFhYIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIHRyaWdnZXJzIGhlcmUsIFB5dGhvbiBjb2RlIGhhcwogICAgICAqIFhYWCBhIGhhcmQgdGltZSBydW5uaW5nLCBiZWNhdXNlIGV2ZW4gdGhlIHN5cyBtb2R1bGUgaGFzIGJlZW4KQEAgLTQ4NSw2ICs1NjEsOSBAQAogICAgIC8qIERlc3Ryb3kgdGhlIGRhdGFiYXNlIHVzZWQgYnkgX1B5SW1wb3J0X3tGaXh1cCxGaW5kfUV4dGVuc2lvbiAqLwogICAgIF9QeUltcG9ydF9GaW5pKCk7CiAKKyAgICAvKiB1bmxvYWQgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLworICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7CisKICAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KICNpZmRlZiBDT1VOVF9BTExPQ1MKICAgICBkdW1wX2NvdW50cyhzdGRvdXQpOwpAQCAtNTM0LDYgKzYxMyw3IEBACiAgICAgUHlMb25nX0ZpbmkoKTsKICAgICBQeUZsb2F0X0ZpbmkoKTsKICAgICBQeURpY3RfRmluaSgpOworICAgIFB5U2xpY2VfRmluaSgpOwogCiAgICAgLyogQ2xlYW51cCBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAgICAgX1B5VW5pY29kZV9GaW5pKCk7CkBAIC01NjIsNyArNjQyLDcgQEAKICNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cygpOworICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwogI2VuZGlmCiAKICAgICBjYWxsX2xsX2V4aXRmdW5jcygpOwpAQCAtNjA2LDcgKzY4Niw2IEBACiAgICAgLyogWFhYIFRoZSBmb2xsb3dpbmcgaXMgbGF4IGluIGVycm9yIGNoZWNraW5nICovCiAKICAgICBpbnRlcnAtPm1vZHVsZXMgPSBQeURpY3RfTmV3KCk7Ci0gICAgaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyA9IFB5RGljdF9OZXcoKTsKIAogICAgIGJpbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJidWlsdGlucyIpOwogICAgIGlmIChiaW1vZCAhPSBOVUxMKSB7CkBAIC02MTcsMTEgKzY5NiwxMiBAQAogICAgIH0KIAogICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCi0gICAgX1B5RXhjX0luaXQoKTsKKyAgICBfUHlFeGNfSW5pdChiaW1vZCk7CiAKICAgICBzeXNtb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oInN5cyIpOwogICAgIGlmIChiaW1vZCAhPSBOVUxMICYmIHN5c21vZCAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpwc3RkZXJyOworCiAgICAgICAgIGludGVycC0+c3lzZGljdCA9IFB5TW9kdWxlX0dldERpY3Qoc3lzbW9kKTsKICAgICAgICAgaWYgKGludGVycC0+c3lzZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CkBAIC02NDAsMTMgKzcyMCwxNSBAQAogCiAgICAgICAgIF9QeUltcG9ydEhvb2tzX0luaXQoKTsKIAorICAgICAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7CisKICAgICAgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQogICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CiAKICAgICAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwotICAgICAgICBpbml0bWFpbigpOworICAgICAgICBpbml0bWFpbihpbnRlcnApOwogICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCiAgICAgICAgICAgICBpbml0c2l0ZSgpOwogICAgIH0KQEAgLTc0Myw3ICs4MjUsNyBAQAogLyogQ3JlYXRlIF9fbWFpbl9fIG1vZHVsZSAqLwogCiBzdGF0aWMgdm9pZAotaW5pdG1haW4odm9pZCkKK2luaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQogewogICAgIFB5T2JqZWN0ICptLCAqZDsKICAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKCJfX21haW5fXyIpOwpAQCAtNzUyLDM1ICs4MzQsNDggQEAKICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOwotICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCB8fAotICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIsIGJpbW9kKSAhPSAwKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgYWRkIF9fYnVpbHRpbnNfXyB0byBfX21haW5fXyIpOworICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJldHJpZXZlIGJ1aWx0aW5zIG1vZHVsZSIpOworICAgICAgICB9CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIiwgYmltb2QpIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19idWlsdGluc19fIik7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGJpbW9kKTsKICAgICB9CisgICAgLyogTWFpbiBpcyBhIGxpdHRsZSBzcGVjaWFsIC0gaW1wLmlzX2J1aWx0aW4oIl9fbWFpbl9fIikgd2lsbCByZXR1cm4KKyAgICAgKiBGYWxzZSwgYnV0IEJ1aWx0aW5JbXBvcnRlciBpcyBzdGlsbCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBpbml0aWFsCisgICAgICogc2V0dGluZyBmb3IgaXRzIF9fbG9hZGVyX18gYXR0cmlidXRlLiBBIG1vcmUgc3VpdGFibGUgdmFsdWUgd2lsbAorICAgICAqIGJlIHNldCBpZiBfX21haW5fXyBnZXRzIGZ1cnRoZXIgaW5pdGlhbGl6ZWQgbGF0ZXIgaW4gdGhlIHN0YXJ0dXAKKyAgICAgKiBwcm9jZXNzLgorICAgICAqLworICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIpID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKmxvYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWlsdGluSW1wb3J0ZXIiKTsKKyAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgQnVpbHRpbkltcG9ydGVyIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fbG9hZGVyX18iKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYobG9hZGVyKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBpbnQKIGluaXRmc2VuY29kaW5nKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQogewogICAgIFB5T2JqZWN0ICpjb2RlYzsKLSNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQotICAgIGNoYXIgKmNvZGVzZXQgPSBOVUxMOwogCi0gICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiBPbiBVbml4LCBzZXQgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGFjY29yZGluZyB0byB0aGUKLSAgICAgICAgICAgdXNlcidzIHByZWZlcmVuY2UsIGlmIHRoZSBDT0RFU0VUIG5hbWVzIGEgd2VsbC1rbm93bgotICAgICAgICAgICBQeXRob24gY29kZWMsIGFuZCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzbid0Ci0gICAgICAgICAgIGluaXRpYWxpemVkIGJ5IG90aGVyIG1lYW5zLiAqLwotICAgICAgICBjb2Rlc2V0ID0gZ2V0X2NvZGVzZXQoKTsKLSAgICAgICAgaWYgKGNvZGVzZXQgPT0gTlVMTCkKKyAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IGdldF9sb2NhbGVfZW5jb2RpbmcoKTsKKyAgICAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IFVuYWJsZSB0byBnZXQgdGhlIGxvY2FsZSBlbmNvZGluZyIpOwogCi0gICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBjb2Rlc2V0OwogICAgICAgICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2VuZGlmCiAKICAgICAvKiB0aGUgZW5jb2RpbmcgaXMgbWJjcywgdXRmLTggb3IgYXNjaWkgKi8KICAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKQEAgLTgyMiw2ICs5MTcsMTEgQEAKICAgICBjb25zdCBjaGFyKiBuZXdsaW5lOwogICAgIFB5T2JqZWN0ICpsaW5lX2J1ZmZlcmluZzsKICAgICBpbnQgYnVmZmVyaW5nLCBpc2F0dHk7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CisgICAgX1B5X0lERU5USUZJRVIoaXNhdHR5KTsKKyAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKKyAgICBfUHlfSURFTlRJRklFUihuYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKIAogICAgIC8qIHN0ZGluIGlzIGFsd2F5cyBvcGVuZWQgaW4gYnVmZmVyZWQgbW9kZSwgZmlyc3QgYmVjYXVzZSBpdCBzaG91bGRuJ3QKICAgICAgICBtYWtlIGEgZGlmZmVyZW5jZSBpbiBjb21tb24gdXNlIGNhc2VzLCBzZWNvbmQgYmVjYXVzZSBUZXh0SU9XcmFwcGVyCkBAIC04MzYsMTQgKzkzNiwxNSBAQAogICAgICAgICBtb2RlID0gIndiIjsKICAgICBlbHNlCiAgICAgICAgIG1vZGUgPSAicmIiOwotICAgIGJ1ZiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgImlzaU9PT2kiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOworICAgIGJ1ZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lPT09pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoYnVmZmVyaW5nKSB7Ci0gICAgICAgIHJhdyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYnVmLCAicmF3Iik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJhdyk7CisgICAgICAgIHJhdyA9IF9QeU9iamVjdF9HZXRBdHRySWQoYnVmLCAmUHlJZF9yYXcpOwogICAgICAgICBpZiAocmF3ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTg1Myw5ICs5NTQsOSBAQAogICAgIH0KIAogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKLSAgICBpZiAodGV4dCA9PSBOVUxMIHx8IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmF3LCAibmFtZSIsIHRleHQpIDwgMCkKKyAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyYXcsICJpc2F0dHkiLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTg4MSw5ICs5ODIsOSBAQAogICAgIG5ld2xpbmUgPSAiXG4iOwogI2VuZGlmCiAKLSAgICBzdHJlYW0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAiVGV4dElPV3JhcHBlciIsICJPc3NzTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIGVuY29kaW5nLCBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZyk7CisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfVGV4dElPV3JhcHBlciwgIk9zc3NPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZW5jb2RpbmcsIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nKTsKICAgICBQeV9DTEVBUihidWYpOwogICAgIGlmIChzdHJlYW0gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTg5Myw3ICs5OTQsNyBAQAogICAgIGVsc2UKICAgICAgICAgbW9kZSA9ICJyIjsKICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kZSk7Ci0gICAgaWYgKCF0ZXh0IHx8IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoc3RyZWFtLCAibW9kZSIsIHRleHQpIDwgMCkKKyAgICBpZiAoIXRleHQgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChzdHJlYW0sICZQeUlkX21vZGUsIHRleHQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBQeV9DTEVBUih0ZXh0KTsKICAgICByZXR1cm4gc3RyZWFtOwpAQCAtMTEzMywxMyArMTIzNCwxNCBAQAogICAgIFB5QXJlbmEgKmFyZW5hOwogICAgIGNoYXIgKnBzMSA9ICIiLCAqcHMyID0gIiIsICplbmMgPSBOVUxMOwogICAgIGludCBlcnJjb2RlID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihlbmNvZGluZyk7CiAKICAgICBpZiAoZnAgPT0gc3RkaW4pIHsKICAgICAgICAgLyogRmV0Y2ggZW5jb2RpbmcgZnJvbSBzeXMuc3RkaW4gKi8KICAgICAgICAgdiA9IFB5U3lzX0dldE9iamVjdCgic3RkaW4iKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCB8fCB2ID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG9lbmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHYsICJlbmNvZGluZyIpOworICAgICAgICBvZW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2LCAmUHlJZF9lbmNvZGluZyk7CiAgICAgICAgIGlmICghb2VuYykKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZW5jID0gX1B5VW5pY29kZV9Bc1N0cmluZyhvZW5jKTsKQEAgLTEyNTIsNiArMTM1NCwzMiBAQAogfQogCiBpbnQKK3N0YXRpYyBzZXRfbWFpbl9sb2FkZXIoUHlPYmplY3QgKmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpsb2FkZXJfbmFtZSkKK3sKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgUHlPYmplY3QgKmxvYWRlcl90eXBlLCAqbG9hZGVyOworICAgIGludCByZXN1bHQgPSAwOworICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisgICAgbG9hZGVyX3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCBsb2FkZXJfbmFtZSk7CisgICAgaWYgKGxvYWRlcl90eXBlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBsb2FkZXIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24obG9hZGVyX3R5cGUsICJzcyIsICJfX21haW5fXyIsIGZpbGVuYW1lKTsKKyAgICBQeV9ERUNSRUYobG9hZGVyX3R5cGUpOworICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIsIGxvYWRlcikgPCAwKSB7CisgICAgICAgIHJlc3VsdCA9IC0xOworICAgIH0KKyAgICBQeV9ERUNSRUYobG9hZGVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQKIFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNsb3NlaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzKQogewpAQCAtMTI4MywxMCArMTQxMSwxMSBAQAogICAgIGxlbiA9IHN0cmxlbihmaWxlbmFtZSk7CiAgICAgZXh0ID0gZmlsZW5hbWUgKyBsZW4gLSAobGVuID4gNCA/IDQgOiAwKTsKICAgICBpZiAobWF5YmVfcHljX2ZpbGUoZnAsIGZpbGVuYW1lLCBleHQsIGNsb3NlaXQpKSB7CisgICAgICAgIEZJTEUgKnB5Y19mcDsKICAgICAgICAgLyogVHJ5IHRvIHJ1biBhIHB5YyBmaWxlLiBGaXJzdCwgcmUtb3BlbiBpbiBiaW5hcnkgKi8KICAgICAgICAgaWYgKGNsb3NlaXQpCiAgICAgICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBpZiAoKGZwID0gZm9wZW4oZmlsZW5hbWUsICJyYiIpKSA9PSBOVUxMKSB7CisgICAgICAgIGlmICgocHljX2ZwID0gZm9wZW4oZmlsZW5hbWUsICJyYiIpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogQ2FuJ3QgcmVvcGVuIC5weWMgZmlsZVxuIik7CiAgICAgICAgICAgICByZXQgPSAtMTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTEyOTQsOCArMTQyMywyMyBAQAogICAgICAgICAvKiBUdXJuIG9uIG9wdGltaXphdGlvbiBpZiBhIC5weW8gZmlsZSBpcyBnaXZlbiAqLwogICAgICAgICBpZiAoc3RyY21wKGV4dCwgIi5weW8iKSA9PSAwKQogICAgICAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gMTsKLSAgICAgICAgdiA9IHJ1bl9weWNfZmlsZShmcCwgZmlsZW5hbWUsIGQsIGQsIGZsYWdzKTsKKworICAgICAgICBpZiAoc2V0X21haW5fbG9hZGVyKGQsIGZpbGVuYW1lLCAiU291cmNlbGVzc0ZpbGVMb2FkZXIiKSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBmYWlsZWQgdG8gc2V0IF9fbWFpbl9fLl9fbG9hZGVyX19cbiIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBmY2xvc2UocHljX2ZwKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICB2ID0gcnVuX3B5Y19maWxlKHB5Y19mcCwgZmlsZW5hbWUsIGQsIGQsIGZsYWdzKTsKKyAgICAgICAgZmNsb3NlKHB5Y19mcCk7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2hlbiBydW5uaW5nIGZyb20gc3RkaW4sIGxlYXZlIF9fbWFpbl9fLl9fbG9hZGVyX18gYWxvbmUgKi8KKyAgICAgICAgaWYgKHN0cmNtcChmaWxlbmFtZSwgIjxzdGRpbj4iKSAhPSAwICYmCisgICAgICAgICAgICBzZXRfbWFpbl9sb2FkZXIoZCwgZmlsZW5hbWUsICJTb3VyY2VGaWxlTG9hZGVyIikgPCAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInB5dGhvbjogZmFpbGVkIHRvIHNldCBfX21haW5fXy5fX2xvYWRlcl9fXG4iKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAgICAgICAgIHYgPSBQeVJ1bl9GaWxlRXhGbGFncyhmcCwgZmlsZW5hbWUsIFB5X2ZpbGVfaW5wdXQsIGQsIGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZWl0LCBmbGFncyk7CiAgICAgfQpAQCAtMTMzNiwyMCArMTQ4MCwyMCBAQAogewogICAgIGxvbmcgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKLQotICAgIC8qIG9sZCBzdHlsZSBlcnJvcnMgKi8KLSAgICBpZiAoUHlUdXBsZV9DaGVjayhlcnIpKQotICAgICAgICByZXR1cm4gUHlBcmdfUGFyc2VUdXBsZShlcnIsICJPKHppaXopIiwgbWVzc2FnZSwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgb2Zmc2V0LCB0ZXh0KTsKKyAgICBfUHlfSURFTlRJRklFUihtc2cpOworICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKKyAgICBfUHlfSURFTlRJRklFUihsaW5lbm8pOworICAgIF9QeV9JREVOVElGSUVSKG9mZnNldCk7CisgICAgX1B5X0lERU5USUZJRVIodGV4dCk7CiAKICAgICAqbWVzc2FnZSA9IE5VTEw7CiAKICAgICAvKiBuZXcgc3R5bGUgZXJyb3JzLiAgYGVycicgaXMgYW4gaW5zdGFuY2UgKi8KLSAgICAqbWVzc2FnZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibXNnIik7CisgICAgKm1lc3NhZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfbXNnKTsKICAgICBpZiAoISptZXNzYWdlKQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJmaWxlbmFtZSIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfZmlsZW5hbWUpOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGlmICh2ID09IFB5X05vbmUpIHsKQEAgLTEzNjMsNyArMTUwNyw3IEBACiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgdiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXJyLCAibGluZW5vIik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOwpAQCAtMTM3Miw3ICsxNTE2LDcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJvZmZzZXQiKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewpAQCAtMTM4Niw3ICsxNTMwLDcgQEAKICAgICAgICAgKm9mZnNldCA9IChpbnQpaG9sZDsKICAgICB9CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJ0ZXh0Iik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF90ZXh0KTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CkBAIC0xNDYwLDcgKzE2MDQsOCBAQAogICAgICAgICBnb3RvIGRvbmU7CiAgICAgaWYgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIC8qIFRoZSBlcnJvciBjb2RlIHNob3VsZCBiZSBpbiB0aGUgYGNvZGUnIGF0dHJpYnV0ZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHZhbHVlLCAiY29kZSIpOworICAgICAgICBfUHlfSURFTlRJRklFUihjb2RlKTsKKyAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHZhbHVlLCAmUHlJZF9jb2RlKTsKICAgICAgICAgaWYgKGNvZGUpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICB2YWx1ZSA9IGNvZGU7CkBAIC0xNTY3LDYgKzE3MTIsNyBAQAogewogICAgIGludCBlcnIgPSAwOwogICAgIFB5T2JqZWN0ICp0eXBlLCAqdGI7CisgICAgX1B5X0lERU5USUZJRVIocHJpbnRfZmlsZV9hbmRfbGluZSk7CiAKICAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiVHlwZUVycm9yOiBwcmludF9leGNlcHRpb24oKTogRXhjZXB0aW9uIGV4cGVjdGVkIGZvciB2YWx1ZSwgIiwgZik7CkBAIC0xNTgyLDcgKzE3MjgsNyBAQAogICAgIGlmICh0YiAmJiB0YiAhPSBQeV9Ob25lKQogICAgICAgICBlcnIgPSBQeVRyYWNlQmFja19QcmludCh0YiwgZik7CiAgICAgaWYgKGVyciA9PSAwICYmCi0gICAgICAgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcodmFsdWUsICJwcmludF9maWxlX2FuZF9saW5lIikpCisgICAgICAgIF9QeU9iamVjdF9IYXNBdHRySWQodmFsdWUsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUpKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAqdGV4dDsKQEAgLTE2MTcsNiArMTc2Myw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0KiBtb2R1bGVOYW1lOwogICAgICAgICBjaGFyKiBjbGFzc05hbWU7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbW9kdWxlX18pOwogICAgICAgICBhc3NlcnQoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSk7CiAgICAgICAgIGNsYXNzTmFtZSA9IFB5RXhjZXB0aW9uQ2xhc3NfTmFtZSh0eXBlKTsKICAgICAgICAgaWYgKGNsYXNzTmFtZSAhPSBOVUxMKSB7CkBAIC0xNjI1LDEwICsxNzcyLDEwIEBACiAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gZG90KzE7CiAgICAgICAgIH0KIAotICAgICAgICBtb2R1bGVOYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0eXBlLCAiX19tb2R1bGVfXyIpOworICAgICAgICBtb2R1bGVOYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX21vZHVsZV9fKTsKICAgICAgICAgaWYgKG1vZHVsZU5hbWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKG1vZHVsZU5hbWUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobW9kdWxlTmFtZSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG1vZHVsZU5hbWUpOwogICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlU3RyaW5nKCI8dW5rbm93bj4iLCBmKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NTUsNyArMTgwMiw3IEBACiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBlcnIgPSAtMTsKICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhzKSB8fAotICAgICAgICAgICAgUHlVbmljb2RlX0dldFNpemUocykgIT0gMCkKKyAgICAgICAgICAgIFB5VW5pY29kZV9HZXRMZW5ndGgocykgIT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZVN0cmluZygiOiAiLCBmKTsKICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChzLCBmLCBQeV9QUklOVF9SQVcpOwpAQCAtMTcwMyw3ICsxODUwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNhdXNlX21lc3NhZ2UsIGYpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQgJiYKKyAgICAgICAgICAgICAgICAhKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKil2YWx1ZSktPnN1cHByZXNzX2NvbnRleHQpIHsKICAgICAgICAgICAgICAgICByZXMgPSBQeVNldF9Db250YWlucyhzZWVuLCBjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTc5MiwxMyArMTk0MCwxNCBAQAogewogICAgIFB5T2JqZWN0ICpmLCAqcjsKICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOworICAgIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKIAogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uICovCiAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CiAKICAgICBmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJmbHVzaCIsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTE4MDYsNyArMTk1NSw3IEBACiAgICAgfQogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZG91dCIpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgImZsdXNoIiwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTg0NSw5ICsxOTk0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBTa2lwIG10aW1lIGFuZCBzaXplICovCisgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKICAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgIHYgPSBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZShmcCk7Ci0gICAgZmNsb3NlKGZwKTsKICAgICBpZiAodiA9PSBOVUxMIHx8ICFQeUNvZGVfQ2hlY2sodikpIHsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKQEAgLTE5MzcsMTIgKzIwODcsMTMgQEAKICAgICAgICAgZmxhZ3MtPmNmX2ZsYWdzIHw9IGlmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgbW9kID0gUHlBU1RfRnJvbU5vZGUobiwgZmxhZ3MsIGZpbGVuYW1lLCBhcmVuYSk7CiAgICAgICAgIFB5Tm9kZV9GcmVlKG4pOwotICAgICAgICByZXR1cm4gbW9kOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbW9kID0gTlVMTDsKICAgICB9CisgICAgZXJyX2ZyZWUoJmVycik7CisgICAgcmV0dXJuIG1vZDsKIH0KIAogbW9kX3R5CkBAIC0xOTY3LDE0ICsyMTE4LDE1IEBACiAgICAgICAgIGZsYWdzLT5jZl9mbGFncyB8PSBpZmxhZ3MgJiBQeUNGX01BU0s7CiAgICAgICAgIG1vZCA9IFB5QVNUX0Zyb21Ob2RlKG4sIGZsYWdzLCBmaWxlbmFtZSwgYXJlbmEpOwogICAgICAgICBQeU5vZGVfRnJlZShuKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKICAgICAgICAgaWYgKGVycmNvZGUpCiAgICAgICAgICAgICAqZXJyY29kZSA9IGVyci5lcnJvcjsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQorICAgIGVycl9mcmVlKCZlcnIpOworICAgIHJldHVybiBtb2Q7CiB9CiAKIC8qIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIHBhcnNlZmlsZSAtLSByZXR1cm4gbm9kZSBvciBzZXQgZXhjZXB0aW9uICovCkBAIC0xOTg4LDYgKzIxNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgTlVMTCwgTlVMTCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKIAogICAgIHJldHVybiBuOwogfQpAQCAtMjAwMiw2ICsyMTU1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgJmVyciwgZmxhZ3MpOwogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGVycl9pbnB1dCgmZXJyKTsKKyAgICBlcnJfZnJlZSgmZXJyKTsKICAgICByZXR1cm4gbjsKIH0KIApAQCAtMjAxNCw2ICsyMTY4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX1B5UGFyc2VyX0dyYW1tYXIsIHN0YXJ0LCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogICAgIHJldHVybiBuOwogfQogCkBAIC0yMDI3LDExICsyMTgyLDIzIEBACiAgICBldmVuIHBhcnNlciBtb2R1bGVzLiAqLwogCiB2b2lkCitQeVBhcnNlcl9DbGVhckVycm9yKHBlcnJkZXRhaWwgKmVycikKK3sKKyAgICBlcnJfZnJlZShlcnIpOworfQorCit2b2lkCiBQeVBhcnNlcl9TZXRFcnJvcihwZXJyZGV0YWlsICplcnIpCiB7CiAgICAgZXJyX2lucHV0KGVycik7CiB9CiAKK3N0YXRpYyB2b2lkCitlcnJfZnJlZShwZXJyZGV0YWlsICplcnIpCit7CisgICAgUHlfQ0xFQVIoZXJyLT5maWxlbmFtZSk7Cit9CisKIC8qIFNldCB0aGUgZXJyb3IgYXBwcm9wcmlhdGUgdG8gdGhlIGdpdmVuIGlucHV0IGVycm9yIGNvZGUgKHNlZSBlcnJjb2RlLmgpICovCiAKIHN0YXRpYyB2b2lkCkBAIC0yMDM5LDcgKzIyMDYsNiBAQAogewogICAgIFB5T2JqZWN0ICp2LCAqdywgKmVycnR5cGUsICplcnJ0ZXh0OwogICAgIFB5T2JqZWN0ICptc2dfb2JqID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgY2hhciAqbXNnID0gTlVMTDsKIAogICAgIGVycnR5cGUgPSBQeUV4Y19TeW50YXhFcnJvcjsKQEAgLTIxMTEsNiArMjI3Nyw5IEBACiAgICAgY2FzZSBFX0lERU5USUZJRVI6CiAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGNoYXJhY3RlciBpbiBpZGVudGlmaWVyIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFX0JBRFNJTkdMRToKKyAgICAgICAgbXNnID0gIm11bHRpcGxlIHN0YXRlbWVudHMgZm91bmQgd2hpbGUgY29tcGlsaW5nIGEgc2luZ2xlIHN0YXRlbWVudCI7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZXJyb3I9JWRcbiIsIGVyci0+ZXJyb3IpOwogICAgICAgICBtc2cgPSAidW5rbm93biBwYXJzaW5nIGVycm9yIjsKQEAgLTIxMjUsMTcgKzIyOTQsOCBAQAogICAgICAgICBlcnJ0ZXh0ID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXJyLT50ZXh0LCBzdHJsZW4oZXJyLT50ZXh0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIik7CiAgICAgfQotICAgIGlmIChlcnItPmZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChlcnItPmZpbGVuYW1lKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBmaWxlbmFtZSA9IFB5X05vbmU7Ci0gICAgfQotICAgIGlmIChmaWxlbmFtZSAhPSBOVUxMKQotICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKE5paU4pIiwgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGVyci0+bGluZW5vLCBlcnItPm9mZnNldCwgZXJydGV4dCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gTlVMTDsKKyAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKE9paU4pIiwgZXJyLT5maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBlcnItPmxpbmVubywgZXJyLT5vZmZzZXQsIGVycnRleHQpOwogICAgIGlmICh2ICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG1zZ19vYmopCiAgICAgICAgICAgICB3ID0gUHlfQnVpbGRWYWx1ZSgiKE9PKSIsIG1zZ19vYmosIHYpOwpAQCAtMjE1OSwxMSArMjMxOSwyNCBAQAogdm9pZAogUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCiB7CisgICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCiAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICVzXG4iLCBtc2cpOwogICAgIGZmbHVzaChzdGRlcnIpOyAvKiBpdCBoZWxwcyBpbiBXaW5kb3dzIGRlYnVnIGJ1aWxkICovCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlFcnJfUHJpbnRFeCgwKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRzdGF0ZSA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICB9CisgICAgICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7CisgICAgfQorCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsKICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihtc2cpOwpAQCAtMjIxOCw2ICsyMzkxLDcgQEAKIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKQogewogI2lmZGVmIFdJVEhfVEhSRUFECisgICAgX1B5X0lERU5USUZJRVIoX3NodXRkb3duKTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgUHlPYmplY3QgKnRocmVhZGluZyA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHRzdGF0ZS0+aW50ZXJwLT5tb2R1bGVzLApAQCAtMjIyNyw3ICsyNDAxLDcgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRocmVhZGluZywgIl9zaHV0ZG93biIsICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCAiIik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA2ZmI3Njk1Li5iZWVhYjg3IDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC0xLDcgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKIAotI2lmZGVmIF9fQVBQTEVfXwotI2lmIGRlZmluZWQoSEFWRV9HRVRUSU1FT0ZEQVkpICYmIGRlZmluZWQoSEFWRV9GVElNRSkKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQogICAvKgogICAgKiBfUHlUaW1lX2dldHRpbWVvZmRheSBmYWxscyBiYWNrIHRvIGZ0aW1lIHdoZW4gZ2V0dHRpbWVvZmRheSBmYWlscyBiZWNhdXNlIHRoZSBsYXR0ZXIKICAgICogbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3Jtcy4gVGhpcyBmYWxsYmFjayBpcyB1bndhbnRlZCBvbiBNYWNPU1ggYmVjYXVzZQpAQCAtMTAsMTggKzEyLDQxIEBACiAgICAqLwogIyB1bmRlZiBIQVZFX0ZUSU1FCiAjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9GVElNRSkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKKyNpbmNsdWRlIDxzeXMvdGltZWIuaD4KK2V4dGVybiBpbnQgZnRpbWUoc3RydWN0IHRpbWViICopOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0ZUSU1FCi0jaW5jbHVkZSA8c3lzL3RpbWViLmg+Ci0jaWYgIWRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoUFlPU19PUzIpCi1leHRlcm4gaW50IGZ0aW1lKHN0cnVjdCB0aW1lYiAqKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0jZW5kaWYgLyogSEFWRV9GVElNRSAqLwotCi12b2lkCi1fUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQorc3RhdGljIHZvaWQKK3B5Z2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEZJTEVUSU1FIHN5c3RlbV90aW1lOworICAgIFVMQVJHRV9JTlRFR0VSIGxhcmdlOworICAgIFVMT05HTE9ORyBtaWNyb3NlY29uZHM7CisKKyAgICBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgmc3lzdGVtX3RpbWUpOworICAgIGxhcmdlLnUuTG93UGFydCA9IHN5c3RlbV90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IHN5c3RlbV90aW1lLmR3SGlnaERhdGVUaW1lOworICAgIC8qIDExLDY0NCw0NzMsNjAwLDAwMCwwMDA6IG51bWJlciBvZiBtaWNyb3NlY29uZHMgYmV0d2VlbgorICAgICAgIHRoZSAxc3QgamFudWFyeSAxNjAxIGFuZCB0aGUgMXN0IGphbnVhcnkgMTk3MCAoMzY5IHllYXJzICsgODkgbGVhcAorICAgICAgIGRheXMpLiAqLworICAgIG1pY3Jvc2Vjb25kcyA9IGxhcmdlLlF1YWRQYXJ0IC8gMTAgLSAxMTY0NDQ3MzYwMDAwMDAwMDsKKyAgICB0cC0+dHZfc2VjID0gbWljcm9zZWNvbmRzIC8gMTAwMDAwMDsKKyAgICB0cC0+dHZfdXNlYyA9IG1pY3Jvc2Vjb25kcyAlIDEwMDAwMDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CisgICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkOworCisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAodm9pZCkgR2V0U3lzdGVtVGltZUFkanVzdG1lbnQoJnRpbWVBZGp1c3RtZW50LCAmdGltZUluY3JlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gdGltZUluY3JlbWVudCAqIDFlLTc7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgIH0KKyNlbHNlCiAgICAgLyogVGhlcmUgYXJlIHRocmVlIHdheXMgdG8gZ2V0IHRoZSB0aW1lOgogICAgICAgKDEpIGdldHRpbWVvZmRheSgpIC0tIHJlc29sdXRpb24gaW4gbWljcm9zZWNvbmRzCiAgICAgICAoMikgZnRpbWUoKSAtLSByZXNvbHV0aW9uIGluIG1pbGxpc2Vjb25kcwpAQCAtMzAsMjcgKzU1LDE3MyBAQAogICAgICAgU2luY2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNDTyBPRFQgMy4wKSBnZXR0aW1lb2ZkYXkoKSBtYXkKICAgICAgIGZhaWwsIHNvIHdlIGZhbGwgYmFjayBvbiBmdGltZSgpIG9yIHRpbWUoKS4KICAgICAgIE5vdGU6IGNsb2NrIHJlc29sdXRpb24gZG9lcyBub3QgaW1wbHkgY2xvY2sgYWNjdXJhY3khICovCisKICNpZmRlZiBIQVZFX0dFVFRJTUVPRkRBWQorICAgIGludCBlcnI7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCi0gICAgaWYgKGdldHRpbWVvZmRheSh0cCkgPT0gMCkKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkodHApOworI2Vsc2UKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkodHAsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKTsKKyNlbmRpZgorICAgIGlmIChlcnIgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0dGltZW9mZGF5KCkiOworICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTY7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwotI2Vsc2UgLyogIUdFVFRJTUVPRkRBWV9OT19UWiAqLwotICAgIGlmIChnZXR0aW1lb2ZkYXkodHAsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKSA9PSAwKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYgLyogIUdFVFRJTUVPRkRBWV9OT19UWiAqLwotI2VuZGlmIC8qICFIQVZFX0dFVFRJTUVPRkRBWSAqLworICAgIH0KKyNlbmRpZiAgIC8qIEhBVkVfR0VUVElNRU9GREFZICovCisKICNpZiBkZWZpbmVkKEhBVkVfRlRJTUUpCiAgICAgewogICAgICAgICBzdHJ1Y3QgdGltZWIgdDsKICAgICAgICAgZnRpbWUoJnQpOwogICAgICAgICB0cC0+dHZfc2VjID0gdC50aW1lOwogICAgICAgICB0cC0+dHZfdXNlYyA9IHQubWlsbGl0bSAqIDEwMDA7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJmdGltZSgpIjsKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS0zOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOworICAgICAgICB9CiAgICAgfQogI2Vsc2UgLyogIUhBVkVfRlRJTUUgKi8KICAgICB0cC0+dHZfc2VjID0gdGltZShOVUxMKTsKICAgICB0cC0+dHZfdXNlYyA9IDA7CisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAidGltZSgpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMDsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQogI2VuZGlmIC8qICFIQVZFX0ZUSU1FICovCi0gICAgcmV0dXJuOworCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworfQorCit2b2lkCitfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQoreworICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBOVUxMKTsKK30KKwordm9pZAorX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbyhfUHlUaW1lX3RpbWV2YWwgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBpbmZvKTsKK30KKworc3RhdGljIHZvaWQKK2Vycm9yX3RpbWVfdF9vdmVyZmxvdyh2b2lkKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Cit9CisKK3RpbWVfdAorX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQoreworI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORworICAgIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKKyNlbHNlCisgICAgbG9uZyB2YWw7CisgICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgdmFsID0gUHlMb25nX0FzTG9uZyhvYmopOworI2VuZGlmCisgICAgaWYgKHZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuICh0aW1lX3QpdmFsOworfQorCitQeU9iamVjdCAqCitfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCit7CisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNlbHNlCisgICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3IoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IpCit7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7CisgICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLworICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgeworICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OworICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgICAgIH0KKworICAgICAgICAqc2VjID0gKHRpbWVfdClpbnRwYXJ0OworICAgICAgICBlcnIgPSBpbnRwYXJ0IC0gKGRvdWJsZSkqc2VjOworICAgICAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMpCit7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgeworICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworCisgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7CisgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOworCisgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7CisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpzZWMgPSBfUHlMb25nX0FzVGltZV90KG9iaik7CisgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnNlYykKK3sKKyAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTkpOworfQorCitpbnQKK19QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICp1c2VjKQoreworICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNik7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCA4MjUyNjBmLi41MzUxOGMyIDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0yNTgsMTcgKzI1OCw2IEBACiAgICAgX1B5X0hhc2hTZWNyZXRfSW5pdGlhbGl6ZWQgPSAxOwogCiAgICAgLyoKLSAgICAgIEJ5IGRlZmF1bHQsIGhhc2ggcmFuZG9taXphdGlvbiBpcyBkaXNhYmxlZCwgYW5kIG9ubHkKLSAgICAgIGVuYWJsZWQgaWYgUFlUSE9OSEFTSFNFRUQgaXMgc2V0IHRvIG5vbi1lbXB0eSBvciBpZgotICAgICAgIi1SIiBpcyBwcm92aWRlZCBhdCB0aGUgY29tbWFuZCBsaW5lOgotICAgICovCi0gICAgaWYgKCFQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcpIHsKLSAgICAgICAgLyogRGlzYWJsZSB0aGUgcmFuZG9taXplZCBoYXNoOiAqLwotICAgICAgICBtZW1zZXQoc2VjcmV0LCAwLCBzZWNyZXRfc2l6ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvKgogICAgICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQuICBHZW5lcmF0ZSBhIHBlci1wcm9jZXNzIHNlY3JldCwKICAgICAgIHVzaW5nIFBZVEhPTkhBU0hTRUVEIGlmIHByb3ZpZGVkLgogICAgICovCmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IDM1ZmM2ZTEuLjFjMjkxYmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC0xOSwxMCArMTksNiBAQAogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKLSNkZWZpbmUgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IgXAotICAgICIncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IiCi0KLQogc3RhdGljIFB5U1RFbnRyeU9iamVjdCAqCiBzdGVfbmV3KHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgX1B5X2Jsb2NrX3R5IGJsb2NrLAogICAgICAgICB2b2lkICprZXksIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQpAQCAtMTg3LDYgKzE4Myw3IEBACiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIGFzZGxfc2VxICphcmdzKTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0cnVjdCBzeW10YWJsZSAqc3QsIGludCBwb3MpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpOworc3RhdGljIGludCBzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKTsKIAogCiBzdGF0aWMgaWRlbnRpZmllciB0b3AgPSBOVUxMLCBsYW1iZGEgPSBOVUxMLCBnZW5leHByID0gTlVMTCwKQEAgLTc1Miw3ICs3NDksNyBAQAogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICAvKiBSZWN1cnNpdmVseSBjYWxsIGFuYWx5emVfYmxvY2soKSBvbiBlYWNoIGNoaWxkIGJsb2NrLgorICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgYW5hbHl6ZV9jaGlsZF9ibG9jaygpIG9uIGVhY2ggY2hpbGQgYmxvY2suCiAKICAgICAgICBuZXdib3VuZCwgbmV3Z2xvYmFsIG5vdyBjb250YWluIHRoZSBuYW1lcyB2aXNpYmxlIGluCiAgICAgICAgbmVzdGVkIGJsb2Nrcy4gIFRoZSBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgY2hpbGRyZW4gd2lsbApAQCAtODk1LDE4ICs4OTIsMTUgQEAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX2V4aXRfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgdm9pZCAqYXN0KQogewotICAgIFB5X3NzaXplX3QgZW5kOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIFB5X0NMRUFSKHN0LT5zdF9jdXIpOwotICAgIGVuZCA9IFB5TGlzdF9HRVRfU0laRShzdC0+c3Rfc3RhY2spIC0gMTsKLSAgICBpZiAoZW5kID49IDApIHsKLSAgICAgICAgc3QtPnN0X2N1ciA9IChQeVNURW50cnlPYmplY3QgKilQeUxpc3RfR0VUX0lURU0oc3QtPnN0X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpOwotICAgICAgICBpZiAoc3QtPnN0X2N1ciA9PSBOVUxMKQorICAgIHN0LT5zdF9jdXIgPSBOVUxMOworICAgIHNpemUgPSBQeUxpc3RfR0VUX1NJWkUoc3QtPnN0X3N0YWNrKTsKKyAgICBpZiAoc2l6ZSkgeworICAgICAgICBpZiAoUHlMaXN0X1NldFNsaWNlKHN0LT5zdF9zdGFjaywgc2l6ZSAtIDEsIHNpemUsIE5VTEwpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBQeV9JTkNSRUYoc3QtPnN0X2N1cik7Ci0gICAgICAgIGlmIChQeVNlcXVlbmNlX0RlbEl0ZW0oc3QtPnN0X3N0YWNrLCBlbmQpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoLS1zaXplKQorICAgICAgICAgICAgc3QtPnN0X2N1ciA9IChQeVNURW50cnlPYmplY3QgKilQeUxpc3RfR0VUX0lURU0oc3QtPnN0X3N0YWNrLCBzaXplIC0gMSk7CiAgICAgfQogICAgIHJldHVybiAxOwogfQpAQCAtOTE1LDIzICs5MDksMjMgQEAKIHN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwgX1B5X2Jsb2NrX3R5IGJsb2NrLAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXN0LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIHsKLSAgICBQeVNURW50cnlPYmplY3QgKnByZXYgPSBOVUxMOworICAgIFB5U1RFbnRyeU9iamVjdCAqcHJldiA9IE5VTEwsICpzdGU7CiAKLSAgICBpZiAoc3QtPnN0X2N1cikgewotICAgICAgICBwcmV2ID0gc3QtPnN0X2N1cjsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc3QtPnN0X3N0YWNrLCAoUHlPYmplY3QgKilzdC0+c3RfY3VyKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzdC0+c3RfY3VyKTsKLSAgICB9Ci0gICAgc3QtPnN0X2N1ciA9IHN0ZV9uZXcoc3QsIG5hbWUsIGJsb2NrLCBhc3QsIGxpbmVubywgY29sX29mZnNldCk7Ci0gICAgaWYgKHN0LT5zdF9jdXIgPT0gTlVMTCkKKyAgICBzdGUgPSBzdGVfbmV3KHN0LCBuYW1lLCBibG9jaywgYXN0LCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgIGlmIChzdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5TGlzdF9BcHBlbmQoc3QtPnN0X3N0YWNrLCAoUHlPYmplY3QgKilzdGUpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RlKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByZXYgPSBzdC0+c3RfY3VyOworICAgIC8qIFRoZSBlbnRyeSBpcyBvd25lZCBieSB0aGUgc3RhY2suIEJvcnJvdyBpdCBmb3Igc3RfY3VyLiAqLworICAgIFB5X0RFQ1JFRihzdGUpOworICAgIHN0LT5zdF9jdXIgPSBzdGU7CiAgICAgaWYgKGJsb2NrID09IE1vZHVsZUJsb2NrKQogICAgICAgICBzdC0+c3RfZ2xvYmFsID0gc3QtPnN0X2N1ci0+c3RlX3N5bWJvbHM7CiAgICAgaWYgKHByZXYpIHsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocHJldi0+c3RlX2NoaWxkcmVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilzdC0+c3RfY3VyKSA8IDApIHsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocHJldi0+c3RlX2NoaWxkcmVuLCAoUHlPYmplY3QgKilzdGUpIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDI1LDEyICsxMDE5LDYgQEAKICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIChWKSkpIFwKICAgICAgICAgcmV0dXJuIDA7CiAKLSNkZWZpbmUgVklTSVRfSU5fQkxPQ0soU1QsIFRZUEUsIFYsIFMpIFwKLSAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIChWKSkpIHsgXAotICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKChTVCksIChTKSk7IFwKLSAgICAgICAgcmV0dXJuIDA7IFwKLSAgICB9Ci0KICNkZWZpbmUgVklTSVRfU0VRKFNULCBUWVBFLCBTRVEpIHsgXAogICAgIGludCBpOyBcCiAgICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKQEAgLTEwNDEsMTggKzEwMjksNiBAQAogICAgIH0gXAogfQogCi0jZGVmaW5lIFZJU0lUX1NFUV9JTl9CTE9DSyhTVCwgVFlQRSwgU0VRLCBTKSB7IFwKLSAgICBpbnQgaTsgXAotICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCi0gICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsgXAotICAgICAgICBUWVBFICMjIF90eSBlbHQgPSAoVFlQRSAjIyBfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7IFwKLSAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCBlbHQpKSB7IFwKLSAgICAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soKFNUKSwgKFMpKTsgXAotICAgICAgICAgICAgcmV0dXJuIDA7IFwKLSAgICAgICAgfSBcCi0gICAgfSBcCi19Ci0KICNkZWZpbmUgVklTSVRfU0VRX1RBSUwoU1QsIFRZUEUsIFNFUSwgU1RBUlQpIHsgXAogICAgIGludCBpOyBcCiAgICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKQEAgLTEwNjMsMTggKzEwMzksNiBAQAogICAgIH0gXAogfQogCi0jZGVmaW5lIFZJU0lUX1NFUV9UQUlMX0lOX0JMT0NLKFNULCBUWVBFLCBTRVEsIFNUQVJULCBTKSB7IFwKLSAgICBpbnQgaTsgXAotICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCi0gICAgZm9yIChpID0gKFNUQVJUKTsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsgXAotICAgICAgICBUWVBFICMjIF90eSBlbHQgPSAoVFlQRSAjIyBfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7IFwKLSAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCBlbHQpKSB7IFwKLSAgICAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soKFNUKSwgKFMpKTsgXAotICAgICAgICAgICAgcmV0dXJuIDA7IFwKLSAgICAgICAgfSBcCi0gICAgfSBcCi19Ci0KICNkZWZpbmUgVklTSVRfS1dPTkxZREVGQVVMVFMoU1QsIEtXX0RFRkFVTFRTKSB7IFwKICAgICBpbnQgaSA9IDA7IFwKICAgICBhc2RsX3NlcSAqc2VxID0gKEtXX0RFRkFVTFRTKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCkBAIC0xMTI0LDggKzEwODgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQmxvY2ssICh2b2lkICopcywgcy0+bGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBhcmd1bWVudHMsIHMtPnYuRnVuY3Rpb25EZWYuYXJncywgcyk7Ci0gICAgICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgc3RtdCwgcy0+di5GdW5jdGlvbkRlZi5ib2R5LCBzKTsKKyAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgcy0+di5GdW5jdGlvbkRlZi5hcmdzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkZ1bmN0aW9uRGVmLmJvZHkpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE1Myw3ICsxMTE3LDcgQEAKICAgICAgICAgfQogICAgICAgICB0bXAgPSBzdC0+c3RfcHJpdmF0ZTsKICAgICAgICAgc3QtPnN0X3ByaXZhdGUgPSBzLT52LkNsYXNzRGVmLm5hbWU7Ci0gICAgICAgIFZJU0lUX1NFUV9JTl9CTE9DSyhzdCwgc3RtdCwgcy0+di5DbGFzc0RlZi5ib2R5LCBzKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkNsYXNzRGVmLmJvZHkpOwogICAgICAgICBzdC0+c3RfcHJpdmF0ZSA9IHRtcDsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTE2MywxNCArMTEyNyw2IEBACiAgICAgICAgIGlmIChzLT52LlJldHVybi52YWx1ZSkgewogICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmV0dXJuLnZhbHVlKTsKICAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9yZXR1cm5zX3ZhbHVlID0gMTsKLSAgICAgICAgICAgIGlmIChzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICBSRVRVUk5fVkFMX0lOX0dFTkVSQVRPUik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25FeChzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIERlbGV0ZV9raW5kOgpAQCAtMTIwNywxOSArMTE2MywxNiBAQAogICAgIGNhc2UgUmFpc2Vfa2luZDoKICAgICAgICAgaWYgKHMtPnYuUmFpc2UuZXhjKSB7CiAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5SYWlzZS5leGMpOwotICAgICAgICBpZiAocy0+di5SYWlzZS5jYXVzZSkgewotICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5SYWlzZS5jYXVzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT52LlJhaXNlLmNhdXNlKSB7CisgICAgICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuUmFpc2UuY2F1c2UpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHJ5RXhjZXB0X2tpbmQ6Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlFeGNlcHQuYm9keSk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlFeGNlcHQub3JlbHNlKTsKLSAgICAgICAgVklTSVRfU0VRKHN0LCBleGNlcHRoYW5kbGVyLCBzLT52LlRyeUV4Y2VwdC5oYW5kbGVycyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVHJ5RmluYWxseV9raW5kOgotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RmluYWxseS5ib2R5KTsKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUZpbmFsbHkuZmluYWxib2R5KTsKKyAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5LmJvZHkpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5Lm9yZWxzZSk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgZXhjZXB0aGFuZGxlciwgcy0+di5UcnkuaGFuZGxlcnMpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5LmZpbmFsYm9keSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXNzZXJ0X2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFzc2VydC50ZXN0KTsKQEAgLTEzMDcsMTAgKzEyNjAsNyBAQAogICAgICAgICAvKiBub3RoaW5nIHRvIGRvIGhlcmUgKi8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaXRoX2tpbmQ6Ci0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LldpdGguY29udGV4dF9leHByKTsKLSAgICAgICAgaWYgKHMtPnYuV2l0aC5vcHRpb25hbF92YXJzKSB7Ci0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpOwotICAgICAgICB9CisgICAgICAgIFZJU0lUX1NFUShzdCwgd2l0aGl0ZW0sIHMtPnYuV2l0aC5pdGVtcyk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5XaXRoLmJvZHkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzQzLDggKzEyOTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uQmxvY2ssICh2b2lkICopZSwgZS0+bGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmNvbF9vZmZzZXQpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBhcmd1bWVudHMsIGUtPnYuTGFtYmRhLmFyZ3MsICh2b2lkKillKTsKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGV4cHIsIGUtPnYuTGFtYmRhLmJvZHksICh2b2lkKillKTsKKyAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgZS0+di5MYW1iZGEuYXJncyk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkxhbWJkYS5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM3OCwxNyArMTMyOCwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWllbGRfa2luZDoKLSAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpCi0gICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CisgICAgY2FzZSBZaWVsZEZyb21fa2luZDogeworICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICB2YWx1ZSA9IChlLT5raW5kID09IFlpZWxkRnJvbV9raW5kKSA/IGUtPnYuWWllbGRGcm9tLnZhbHVlIDogZS0+di5ZaWVsZC52YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHZhbHVlKTsKICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7Ci0gICAgICAgIGlmIChzdC0+c3RfY3VyLT5zdGVfcmV0dXJuc192YWx1ZSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLAotICAgICAgICAgICAgICAgIFJFVFVSTl9WQUxfSU5fR0VORVJBVE9SKTsKLSAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoc3QtPnN0X2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5saW5lbm8sIGUtPmNvbF9vZmZzZXQpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Db21wYXJlLmxlZnQpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5jb21wYXJhdG9ycyk7CkBAIC0xNTQ1LDYgKzE0OTIsMTYgQEAKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGljIGludAorc3ltdGFibGVfdmlzaXRfd2l0aGl0ZW0oc3RydWN0IHN5bXRhYmxlICpzdCwgd2l0aGl0ZW1fdHkgaXRlbSkKK3sKKyAgICBWSVNJVChzdCwgZXhwciwgaXRlbS0+Y29udGV4dF9leHByKTsKKyAgICBpZiAoaXRlbS0+b3B0aW9uYWxfdmFycykgeworICAgICAgICBWSVNJVChzdCwgZXhwciwgaXRlbS0+b3B0aW9uYWxfdmFycyk7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiAKIHN0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X2FsaWFzKHN0cnVjdCBzeW10YWJsZSAqc3QsIGFsaWFzX3R5IGEpCkBAIC0xNTU1LDEwICsxNTEyLDEwIEBACiAgICAgKi8KICAgICBQeU9iamVjdCAqc3RvcmVfbmFtZTsKICAgICBQeU9iamVjdCAqbmFtZSA9IChhLT5hc25hbWUgPT0gTlVMTCkgPyBhLT5uYW1lIDogYS0+YXNuYW1lOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmJhc2UgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuYW1lKTsKLSAgICBQeV9VTklDT0RFICpkb3QgPSBQeV9VTklDT0RFX3N0cmNocihiYXNlLCAnLicpOwotICAgIGlmIChkb3QpIHsKLSAgICAgICAgc3RvcmVfbmFtZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShiYXNlLCBkb3QgLSBiYXNlKTsKKyAgICBQeV9zc2l6ZV90IGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSksIDEpOworICAgIGlmIChkb3QgIT0gLTEpIHsKKyAgICAgICAgc3RvcmVfbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgMCwgZG90KTsKICAgICAgICAgaWYgKCFzdG9yZV9uYW1lKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTY1NSwxMyArMTYxMiwxMiBAQAogICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgVklTSVRfSU5fQkxPQ0soc3QsIGV4cHIsIG91dGVybW9zdC0+dGFyZ2V0LCAodm9pZCopZSk7Ci0gICAgVklTSVRfU0VRX0lOX0JMT0NLKHN0LCBleHByLCBvdXRlcm1vc3QtPmlmcywgKHZvaWQqKWUpOwotICAgIFZJU0lUX1NFUV9UQUlMX0lOX0JMT0NLKHN0LCBjb21wcmVoZW5zaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMsIDEsICh2b2lkKillKTsKKyAgICBWSVNJVChzdCwgZXhwciwgb3V0ZXJtb3N0LT50YXJnZXQpOworICAgIFZJU0lUX1NFUShzdCwgZXhwciwgb3V0ZXJtb3N0LT5pZnMpOworICAgIFZJU0lUX1NFUV9UQUlMKHN0LCBjb21wcmVoZW5zaW9uLCBnZW5lcmF0b3JzLCAxKTsKICAgICBpZiAodmFsdWUpCi0gICAgICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCB2YWx1ZSwgKHZvaWQqKWUpOwotICAgIFZJU0lUX0lOX0JMT0NLKHN0LCBleHByLCBlbHQsICh2b2lkKillKTsKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIHZhbHVlKTsKKyAgICBWSVNJVChzdCwgZXhwciwgZWx0KTsKICAgICByZXR1cm4gc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IGM0ZjI3ZDAuLjIwYmZhNTUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYworKysgYi9QeXRob24vc3lzbW9kdWxlLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKKyNpbmNsdWRlICJweXRocmVhZC5oIgogCiAjaW5jbHVkZSAib3NkZWZzLmgiCiAKQEAgLTc4LDggKzc5LDEwIEBACiAgICAgUHlPYmplY3QgKmVuY29kZWQsICplc2NhcGVkX3N0ciwgKnJlcHJfc3RyLCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHI7CiAgICAgaW50IHJldDsKKyAgICBfUHlfSURFTlRJRklFUihlbmNvZGluZyk7CisgICAgX1B5X0lERU5USUZJRVIoYnVmZmVyKTsKIAotICAgIHN0ZG91dF9lbmNvZGluZyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob3V0ZiwgImVuY29kaW5nIik7CisgICAgc3Rkb3V0X2VuY29kaW5nID0gX1B5T2JqZWN0X0dldEF0dHJJZChvdXRmLCAmUHlJZF9lbmNvZGluZyk7CiAgICAgaWYgKHN0ZG91dF9lbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHN0ZG91dF9lbmNvZGluZ19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZG91dF9lbmNvZGluZyk7CkBAIC05Niw5ICs5OSwxMCBAQAogICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBidWZmZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG91dGYsICJidWZmZXIiKTsKKyAgICBidWZmZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKG91dGYsICZQeUlkX2J1ZmZlcik7CiAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgIndyaXRlIiwgIihPKSIsIGVuY29kZWQpOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYnVmZmVyLCAmUHlJZF93cml0ZSwgIihPKSIsIGVuY29kZWQpOwogICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKICAgICAgICAgUHlfREVDUkVGKGVuY29kZWQpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCkBAIC0xMzUsNiArMTM5LDcgQEAKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKICAgICBQeU9iamVjdCAqYnVpbHRpbnMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiYnVpbHRpbnMiKTsKICAgICBpbnQgZXJyOworICAgIF9QeV9JREVOVElGSUVSKF8pOwogCiAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImxvc3QgYnVpbHRpbnMgbW9kdWxlIik7CkBAIC0xNDgsNyArMTUzLDcgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoYnVpbHRpbnMsICJfIiwgUHlfTm9uZSkgIT0gMCkKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChidWlsdGlucywgJlB5SWRfXywgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgb3V0ZiA9IFB5U3lzX0dldE9iamVjdCgic3Rkb3V0Iik7CiAgICAgaWYgKG91dGYgPT0gTlVMTCB8fCBvdXRmID09IFB5X05vbmUpIHsKQEAgLTE3MCw3ICsxNzUsNyBAQAogICAgIH0KICAgICBpZiAoUHlGaWxlX1dyaXRlU3RyaW5nKCJcbiIsIG91dGYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGJ1aWx0aW5zLCAiXyIsIG8pICE9IDApCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoYnVpbHRpbnMsICZQeUlkX18sIG8pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTc3MCw5ICs3NzUsNyBAQAogYSBsYXp5IHJlc29sdmluZyBvZiBzeW1ib2xzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlLCBpZiBjYWxsZWQgYXNcblwKIHN5cy5zZXRkbG9wZW5mbGFncygwKS4gIFRvIHNoYXJlIHN5bWJvbHMgYWNyb3NzIGV4dGVuc2lvbiBtb2R1bGVzLCBjYWxsIGFzXG5cCiBzeXMuc2V0ZGxvcGVuZmxhZ3MoY3R5cGVzLlJUTERfR0xPQkFMKS4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyBtb2R1bGVzXG5cCi1jYW4gYmUgZWl0aGVyIGZvdW5kIGluIHRoZSBjdHlwZXMgbW9kdWxlLCBvciBpbiB0aGUgRExGQ04gbW9kdWxlLiBJZiBETEZDTlxuXAotaXMgbm90IGF2YWlsYWJsZSwgaXQgY2FuIGJlIGdlbmVyYXRlZCBmcm9tIC91c3IvaW5jbHVkZS9kbGZjbi5oIHVzaW5nIHRoZVxuXAotaDJweSBzY3JpcHQuIik7CitjYW4gYmUgZm91bmQgaW4gdGhlIG9zIG1vZHVsZSAoUlRMRF94eHggY29uc3RhbnRzLCBlLmcuIG9zLlJUTERfTEFaWSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzeXNfZ2V0ZGxvcGVuZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtODExLDEwICs4MTQsMTEgQEAKIHN5c19nZXRzaXplb2YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnN0cl9fc2l6ZW9mX18gPSBOVUxMLCAqZ2NfaGVhZF9zaXplID0gTlVMTDsKKyAgICBzdGF0aWMgUHlPYmplY3QgKmdjX2hlYWRfc2l6ZSA9IE5VTEw7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvYmplY3QiLCAiZGVmYXVsdCIsIDB9OwogICAgIFB5T2JqZWN0ICpvLCAqZGZsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1ldGhvZDsKKyAgICBfUHlfSURFTlRJRklFUihfX3NpemVvZl9fKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86Z2V0c2l6ZW9mIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZvLCAmZGZsdCkpCkBAIC04MzEsOCArODM1LDcgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KFB5X1RZUEUobykpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAiX19zaXplb2ZfXyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cl9fc2l6ZW9mX18pOworICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fc2l6ZW9mX18pOwogICAgIGlmIChtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtOTk0LDYgKzk5NywyNyBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorc3RhdGljIFB5T2JqZWN0ICoKK3N5c19kZWJ1Z21hbGxvY3N0YXRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworI2VuZGlmCisgICAgX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKHN0ZGVycik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KK1B5RG9jX1NUUlZBUihkZWJ1Z21hbGxvY3N0YXRzX2RvYywKKyJfZGVidWdtYWxsb2NzdGF0cygpXG5cCitcblwKK1ByaW50IHN1bW1hcnkgaW5mbyB0byBzdGRlcnIgYWJvdXQgdGhlIHN0YXRlIG9mXG5cCitweW1hbGxvYydzIHN0cnVjdHVyZXMuXG5cCitcblwKK0luIFB5X0RFQlVHIG1vZGUsIGFsc28gcGVyZm9ybSBzb21lIGV4cGVuc2l2ZSBpbnRlcm5hbCBjb25zaXN0ZW5jeVxuXAorY2hlY2tzLlxuXAorIik7CisKICNpZmRlZiBQeV9UUkFDRV9SRUZTCiAvKiBEZWZpbmVkIGluIG9iamVjdHMuYyBiZWNhdXNlIGl0IHVzZXMgc3RhdGljIGdsb2JhbHMgaWYgdGhhdCBmaWxlICovCiBleHRlcm4gUHlPYmplY3QgKl9QeV9HZXRPYmplY3RzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwpAQCAtMTA5MCw2ICsxMTE0LDggQEAKICAgICB7InNldHRyYWNlIiwgICAgICAgIHN5c19zZXR0cmFjZSwgTUVUSF9PLCBzZXR0cmFjZV9kb2N9LAogICAgIHsiZ2V0dHJhY2UiLCAgICAgICAgc3lzX2dldHRyYWNlLCBNRVRIX05PQVJHUywgZ2V0dHJhY2VfZG9jfSwKICAgICB7ImNhbGxfdHJhY2luZyIsIHN5c19jYWxsX3RyYWNpbmcsIE1FVEhfVkFSQVJHUywgY2FsbF90cmFjaW5nX2RvY30sCisgICAgeyJfZGVidWdtYWxsb2NzdGF0cyIsIHN5c19kZWJ1Z21hbGxvY3N0YXRzLCBNRVRIX1ZBUkFSR1MsCisgICAgIGRlYnVnbWFsbG9jc3RhdHNfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTE3Nyw3ICsxMjAzLDYgQEAKICAgICBQeU9iamVjdCAqb3B0czsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEwsICp2YWx1ZSA9IE5VTEw7CiAgICAgY29uc3Qgd2NoYXJfdCAqbmFtZV9lbmQ7Ci0gICAgaW50IHI7CiAKICAgICBvcHRzID0gZ2V0X3hvcHRpb25zKCk7CiAgICAgaWYgKG9wdHMgPT0gTlVMTCkKQEAgLTExOTUsNyArMTIyMCw3IEBACiAgICAgfQogICAgIGlmIChuYW1lID09IE5VTEwgfHwgdmFsdWUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByID0gUHlEaWN0X1NldEl0ZW0ob3B0cywgbmFtZSwgdmFsdWUpOworICAgIFB5RGljdF9TZXRJdGVtKG9wdHMsIG5hbWUsIHZhbHVlKTsKICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICByZXR1cm47CkBAIC0xMjUyLDIxICsxMjc3LDIyIEBACiAiXG5cCiBTdGF0aWMgb2JqZWN0czpcblwKIFxuXAotZmxvYXRfaW5mbyAtLSBhIGRpY3Qgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmxvYXQgaW1wbGVtZW50YXRpb24uXG5cCitidWlsdGluX21vZHVsZV9uYW1lcyAtLSB0dXBsZSBvZiBtb2R1bGUgbmFtZXMgYnVpbHQgaW50byB0aGlzIGludGVycHJldGVyXG5cCitjb3B5cmlnaHQgLS0gY29weXJpZ2h0IG5vdGljZSBwZXJ0YWluaW5nIHRvIHRoaXMgaW50ZXJwcmV0ZXJcblwKK2V4ZWNfcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIG1hY2hpbmUtc3BlY2lmaWMgUHl0aG9uIGxpYnJhcnlcblwKK2V4ZWN1dGFibGUgLS0gYWJzb2x1dGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBiaW5hcnkgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlclxuXAorZmxvYXRfaW5mbyAtLSBhIHN0cnVjdCBzZXF1ZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCBpbXBsZW1lbnRhdGlvbi5cblwKK2Zsb2F0X3JlcHJfc3R5bGUgLS0gc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0eWxlIG9mIHJlcHIoKSBvdXRwdXQgZm9yIGZsb2F0c1xuXAoraGV4dmVyc2lvbiAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGVuY29kZWQgYXMgYSBzaW5nbGUgaW50ZWdlclxuXAoraW1wbGVtZW50YXRpb24gLS0gUHl0aG9uIGltcGxlbWVudGF0aW9uIGluZm9ybWF0aW9uLlxuXAogaW50X2luZm8gLS0gYSBzdHJ1Y3Qgc2VxdWVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW50IGltcGxlbWVudGF0aW9uLlxuXAogbWF4c2l6ZSAtLSB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQgbGVuZ3RoIG9mIGNvbnRhaW5lcnMuXG5cCi1tYXh1bmljb2RlIC0tIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBjaGFyYWN0ZXJcblwKLWJ1aWx0aW5fbW9kdWxlX25hbWVzIC0tIHR1cGxlIG9mIG1vZHVsZSBuYW1lcyBidWlsdCBpbnRvIHRoaXMgaW50ZXJwcmV0ZXJcblwKLXN1YnZlcnNpb24gLS0gc3VidmVyc2lvbiBpbmZvcm1hdGlvbiBvZiB0aGUgYnVpbGQgYXMgdHVwbGVcblwKK21heHVuaWNvZGUgLS0gdGhlIHZhbHVlIG9mIHRoZSBsYXJnZXN0IFVuaWNvZGUgY29kZXBvaW50XG5cCitwbGF0Zm9ybSAtLSBwbGF0Zm9ybSBpZGVudGlmaWVyXG5cCitwcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgUHl0aG9uIGxpYnJhcnlcblwKK3RocmVhZF9pbmZvIC0tIGEgc3RydWN0IHNlcXVlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi5cblwKIHZlcnNpb24gLS0gdGhlIHZlcnNpb24gb2YgdGhpcyBpbnRlcnByZXRlciBhcyBhIHN0cmluZ1xuXAogdmVyc2lvbl9pbmZvIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gYXMgYSBuYW1lZCB0dXBsZVxuXAotaGV4dmVyc2lvbiAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGVuY29kZWQgYXMgYSBzaW5nbGUgaW50ZWdlclxuXAotY29weXJpZ2h0IC0tIGNvcHlyaWdodCBub3RpY2UgcGVydGFpbmluZyB0byB0aGlzIGludGVycHJldGVyXG5cCi1wbGF0Zm9ybSAtLSBwbGF0Zm9ybSBpZGVudGlmaWVyXG5cCi1leGVjdXRhYmxlIC0tIGFic29sdXRlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgYmluYXJ5IG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXJcblwKLXByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBQeXRob24gbGlicmFyeVxuXAotZXhlY19wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgbWFjaGluZS1zcGVjaWZpYyBQeXRob24gbGlicmFyeVxuXAotZmxvYXRfcmVwcl9zdHlsZSAtLSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgc3R5bGUgb2YgcmVwcigpIG91dHB1dCBmb3IgZmxvYXRzXG5cCiAiCiApCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMTMwNSw0MyArMTMzMSw2IEBACiApCiAvKiBlbmQgb2Ygc3lzX2RvYyAqLyA7CiAKLS8qIFN1YnZlcnNpb24gYnJhbmNoIGFuZCByZXZpc2lvbiBtYW5hZ2VtZW50ICovCi1zdGF0aWMgaW50IHN2bl9pbml0aWFsaXplZDsKLXN0YXRpYyBjaGFyIHBhdGNobGV2ZWxfcmV2aXNpb25bNTBdOyAvKiBKdXN0IHRoZSBudW1iZXIgKi8KLXN0YXRpYyBjaGFyIGJyYW5jaFs1MF07Ci1zdGF0aWMgY2hhciBzaG9ydGJyYW5jaFs1MF07Ci1zdGF0aWMgY29uc3QgY2hhciAqc3ZuX3JldmlzaW9uOwotCi1zdGF0aWMgdm9pZAotc3ZudmVyc2lvbl9pbml0KHZvaWQpCi17Ci0gICAgaWYgKHN2bl9pbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3ZuX2luaXRpYWxpemVkID0gMTsKLSAgICAqcGF0Y2hsZXZlbF9yZXZpc2lvbiA9ICdcMCc7Ci0gICAgc3RyY3B5KGJyYW5jaCwgIiIpOwotICAgIHN0cmNweShzaG9ydGJyYW5jaCwgInVua25vd24iKTsKLSAgICBzdm5fcmV2aXNpb24gPSAiIjsKLX0KLQotLyogUmV0dXJuIHN2bnZlcnNpb24gb3V0cHV0IGlmIGF2YWlsYWJsZS4KLSAgIEVsc2UgcmV0dXJuIFJldmlzaW9uIG9mIHBhdGNobGV2ZWwuaCBpZiBvbiBicmFuY2guCi0gICBFbHNlIHJldHVybiBlbXB0eSBzdHJpbmcgKi8KLWNvbnN0IGNoYXIqCi1QeV9TdWJ2ZXJzaW9uUmV2aXNpb24oKQotewotICAgIHN2bnZlcnNpb25faW5pdCgpOwotICAgIHJldHVybiBzdm5fcmV2aXNpb247Ci19Ci0KLWNvbnN0IGNoYXIqCi1QeV9TdWJ2ZXJzaW9uU2hvcnRCcmFuY2goKQotewotICAgIHN2bnZlcnNpb25faW5pdCgpOwotICAgIHJldHVybiBzaG9ydGJyYW5jaDsKLX0KLQogCiBQeURvY19TVFJWQVIoZmxhZ3NfX2RvY19fLAogInN5cy5mbGFnc1xuXApAQCAtMTM1Miw3ICsxMzQxLDYgQEAKIAogc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgZmxhZ3NfZmllbGRzW10gPSB7CiAgICAgeyJkZWJ1ZyIsICAgICAgICAgICAgICAgICAgICItZCJ9LAotICAgIHsiZGl2aXNpb25fd2FybmluZyIsICAgICAgICAiLVEifSwKICAgICB7Imluc3BlY3QiLCAgICAgICAgICAgICAgICAgIi1pIn0sCiAgICAgeyJpbnRlcmFjdGl2ZSIsICAgICAgICAgICAgICItaSJ9LAogICAgIHsib3B0aW1pemUiLCAgICAgICAgICAgICAgICAiLU8gb3IgLU9PIn0sCkBAIC0xMzc3LDkgKzEzNjUsOSBAQAogICAgIGZsYWdzX19kb2NfXywgICAgICAgLyogZG9jICovCiAgICAgZmxhZ3NfZmllbGRzLCAgICAgICAvKiBmaWVsZHMgKi8KICNpZmRlZiBSSVNDT1MKLSAgICAxNAotI2Vsc2UKICAgICAxMworI2Vsc2UKKyAgICAxMgogI2VuZGlmCiB9OwogCkBAIC0xMzk3LDcgKzEzODUsNiBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0oc2VxLCBwb3MrKywgUHlMb25nX0Zyb21Mb25nKGZsYWcpKQogCiAgICAgU2V0RmxhZyhQeV9EZWJ1Z0ZsYWcpOwotICAgIFNldEZsYWcoUHlfRGl2aXNpb25XYXJuaW5nRmxhZyk7CiAgICAgU2V0RmxhZyhQeV9JbnNwZWN0RmxhZyk7CiAgICAgU2V0RmxhZyhQeV9JbnRlcmFjdGl2ZUZsYWcpOwogICAgIFNldEZsYWcoUHlfT3B0aW1pemVGbGFnKTsKQEAgLTE0OTEsNiArMTQ3OCw3MyBAQAogICAgIHJldHVybiB2ZXJzaW9uX2luZm87CiB9CiAKKy8qIHN5cy5pbXBsZW1lbnRhdGlvbiB2YWx1ZXMgKi8KKyNkZWZpbmUgTkFNRSAiY3B5dGhvbiIKK2NvbnN0IGNoYXIgKl9QeVN5c19JbXBsTmFtZSA9IE5BTUU7CisjZGVmaW5lIFFVT1RFKGFyZykgI2FyZworI2RlZmluZSBTVFJJRlkobmFtZSkgUVVPVEUobmFtZSkKKyNkZWZpbmUgTUFKT1IgU1RSSUZZKFBZX01BSk9SX1ZFUlNJT04pCisjZGVmaW5lIE1JTk9SIFNUUklGWShQWV9NSU5PUl9WRVJTSU9OKQorI2RlZmluZSBUQUcgTkFNRSAiLSIgTUFKT1IgTUlOT1I7Citjb25zdCBjaGFyICpfUHlTeXNfSW1wbENhY2hlVGFnID0gVEFHOworI3VuZGVmIE5BTUUKKyN1bmRlZiBRVU9URQorI3VuZGVmIFNUUklGWQorI3VuZGVmIE1BSk9SCisjdW5kZWYgTUlOT1IKKyN1bmRlZiBUQUcKKworc3RhdGljIFB5T2JqZWN0ICoKK21ha2VfaW1wbF9pbmZvKFB5T2JqZWN0ICp2ZXJzaW9uX2luZm8pCit7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqaW1wbF9pbmZvLCAqdmFsdWUsICpuczsKKworICAgIGltcGxfaW5mbyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoaW1wbF9pbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogcG9wdWxhdGUgdGhlIGRpY3QgKi8KKworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5U3lzX0ltcGxOYW1lKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJuYW1lIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVN5c19JbXBsQ2FjaGVUYWcpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgImNhY2hlX3RhZyIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAidmVyc2lvbiIsIHZlcnNpb25faW5mbyk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB2YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhQWV9WRVJTSU9OX0hFWCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiaGV4dmVyc2lvbiIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogZGljdCByZWFkeSAqLworCisgICAgbnMgPSBfUHlOYW1lc3BhY2VfTmV3KGltcGxfaW5mbyk7CisgICAgUHlfREVDUkVGKGltcGxfaW5mbyk7CisgICAgcmV0dXJuIG5zOworCitlcnJvcjoKKyAgICBQeV9DTEVBUihpbXBsX2luZm8pOworICAgIHJldHVybiBOVUxMOworfQorCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHN5c21vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgInN5cyIsCkBAIC0xNTA2LDcgKzE1NjAsNyBAQAogUHlPYmplY3QgKgogX1B5U3lzX0luaXQodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKnYsICpzeXNkaWN0OworICAgIFB5T2JqZWN0ICptLCAqdiwgKnN5c2RpY3QsICp2ZXJzaW9uX2luZm87CiAgICAgY2hhciAqczsKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnN5c21vZHVsZSk7CkBAIC0xNTQ3LDEwICsxNjAxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9HZXRWZXJzaW9uKCkpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJoZXh2ZXJzaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoUFlfVkVSU0lPTl9IRVgpKTsKLSAgICBzdm52ZXJzaW9uX2luaXQoKTsKLSAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJzdWJ2ZXJzaW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIihzc3MpIiwgIkNQeXRob24iLCBicmFuY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2bl9yZXZpc2lvbikpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIl9tZXJjdXJpYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHN6eikiLCAiQ1B5dGhvbiIsIF9QeV9oZ2lkZW50aWZpZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hndmVyc2lvbigpKSk7CkBAIC0xNTY5LDYgKzE2MTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJlZml4KCksIC0xKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY19wcmVmaXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRFeGVjUHJlZml4KCksIC0xKSk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygiYmFzZV9wcmVmaXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRQcmVmaXgoKSwgLTEpKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJiYXNlX2V4ZWNfcHJlZml4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0RXhlY1ByZWZpeCgpLCAtMSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIm1heHNpemUiLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Tc2l6ZV90KFBZX1NTSVpFX1RfTUFYKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZmxvYXRfaW5mbyIsCkBAIC0xNTgxLDcgKzE2MzUsNyBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImhhc2hfaW5mbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaGFzaF9pbmZvKCkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIm1heHVuaWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9HZXRNYXgoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nKDB4MTBGRkZGKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiYnVpbHRpbl9tb2R1bGVfbmFtZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9idWlsdGluX21vZHVsZV9uYW1lcygpKTsKICAgICB7CkBAIC0xNjI2LDExICsxNjgwLDE1IEBACiAgICAgLyogdmVyc2lvbl9pbmZvICovCiAgICAgaWYgKFZlcnNpb25JbmZvVHlwZS50cF9uYW1lID09IDApCiAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlZlcnNpb25JbmZvVHlwZSwgJnZlcnNpb25faW5mb19kZXNjKTsKLSAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ2ZXJzaW9uX2luZm8iLCBtYWtlX3ZlcnNpb25faW5mbygpKTsKKyAgICB2ZXJzaW9uX2luZm8gPSBtYWtlX3ZlcnNpb25faW5mbygpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInZlcnNpb25faW5mbyIsIHZlcnNpb25faW5mbyk7CiAgICAgLyogcHJldmVudCB1c2VyIGZyb20gY3JlYXRpbmcgbmV3IGluc3RhbmNlcyAqLwogICAgIFZlcnNpb25JbmZvVHlwZS50cF9pbml0ID0gTlVMTDsKICAgICBWZXJzaW9uSW5mb1R5cGUudHBfbmV3ID0gTlVMTDsKIAorICAgIC8qIGltcGxlbWVudGF0aW9uICovCisgICAgU0VUX1NZU19GUk9NX1NUUklORygiaW1wbGVtZW50YXRpb24iLCBtYWtlX2ltcGxfaW5mbyh2ZXJzaW9uX2luZm8pKTsKKwogICAgIC8qIGZsYWdzICovCiAgICAgaWYgKEZsYWdzVHlwZS50cF9uYW1lID09IDApCiAgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJkZsYWdzVHlwZSwgJmZsYWdzX2Rlc2MpOwpAQCAtMTY1OCw2ICsxNzE2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVN0cmluZygibGVnYWN5IikpOwogI2VuZGlmCiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInRocmVhZF9pbmZvIiwgUHlUaHJlYWRfR2V0SW5mbygpKTsKKyNlbmRpZgorCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklORwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4MTIsNyArMTg3NCw3IEBACiAgICAgICAgIHRoZSBhcmd1bWVudCBtdXN0IGJlIHRoZSBmdWxsIHBhdGggYW55d2F5LiAqLwogICAgICAgICB3Y2hhcl90ICpwdGVtcDsKICAgICAgICAgaWYgKEdldEZ1bGxQYXRoTmFtZVcoYXJndjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZnVsbHBhdGgpL3NpemVvZihmdWxscGF0aFswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgoZnVsbHBhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHRlbXApKSB7CiAgICAgICAgICAgICBhcmd2MCA9IGZ1bGxwYXRoOwpAQCAtMTg4MSwxMSArMTk0MywxMiBAQAogewogICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqYXJncyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOwogICAgIGludCBlcnI7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgd3JpdGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAid3JpdGUiKTsKKyAgICB3cml0ZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbGUsICZQeUlkX3dyaXRlKTsKICAgICBpZiAod3JpdGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWQuYyBiL1B5dGhvbi90aHJlYWQuYwppbmRleCBkMjI0MDQ2Li5lNTVkMzQyIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkLmMKKysrIGIvUHl0aG9uL3RocmVhZC5jCkBAIC03LDcgKzcsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKLQogI2lmbmRlZiBfUE9TSVhfVEhSRUFEUwogLyogVGhpcyBtZWFucyBwdGhyZWFkcyBhcmUgbm90IGltcGxlbWVudGVkIGluIGxpYmMgaGVhZGVycywgaGVuY2UgdGhlIG1hY3JvCiAgICBub3QgcHJlc2VudCBpbiB1bmlzdGQuaC4gQnV0IHRoZXkgc3RpbGwgY2FuIGJlIGltcGxlbWVudGVkIGFzIGFuIGV4dGVybmFsCkBAIC0yNywxOCArMjYsNiBAQAogCiAjaWZuZGVmIF9QT1NJWF9USFJFQURTCiAKLSNpZmRlZiBfX3NnaQotI2RlZmluZSBTR0lfVEhSRUFEUwotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1RIUkVBRF9ICi0jZGVmaW5lIFNPTEFSSVNfVEhSRUFEUwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKHN1bikgJiYgIWRlZmluZWQoU09MQVJJU19USFJFQURTKQotI2RlZmluZSBTVU5fTFdQCi0jZW5kaWYKLQogLyogQ2hlY2sgaWYgd2UncmUgcnVubmluZyBvbiBIUC1VWCBhbmQgX1NDX1RIUkVBRFMgaXMgZGVmaW5lZC4gSWYgc28sIHRoZW4KICAgIGVub3VnaCBvZiB0aGUgUG9zaXggdGhyZWFkcyBwYWNrYWdlIGlzIGltcGxlbWVudGVkIHRvIHN1cHBvcnQgcHl0aG9uCiAgICB0aHJlYWRzLgpAQCAtOTQsNDcgKzgxLDIxIEBACiAgICBvciB0aGUgc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIFRIUkVBRF9TVEFDS19TSVpFIG1hY3JvLiAqLwogc3RhdGljIHNpemVfdCBfcHl0aHJlYWRfc3RhY2tzaXplID0gMDsKIAotI2lmZGVmIFNHSV9USFJFQURTCi0jZXJyb3IgU0dJIElyaXggdGhyZWFkcyBhcmUgbm93IHVuc3VwcG9ydGVkLCBhbmQgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gMy4zLgotI2luY2x1ZGUgInRocmVhZF9zZ2kuaCIKLSNlbmRpZgotCi0jaWZkZWYgU09MQVJJU19USFJFQURTCi0jaW5jbHVkZSAidGhyZWFkX3NvbGFyaXMuaCIKLSNlbmRpZgotCi0jaWZkZWYgU1VOX0xXUAotI2Vycm9yIFN1bk9TIGxpZ2h0d2VpZ2h0IHByb2Nlc3NlcyBhcmUgbm93IHVuc3VwcG9ydGVkLCBhbmQgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gMy4zLgotI2luY2x1ZGUgInRocmVhZF9sd3AuaCIKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9QVEgKLSNlcnJvciBHTlUgcHRoIHRocmVhZHMgYXJlIG5vdyB1bnN1cHBvcnRlZCwgYW5kIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIDMuMy4KLSNpbmNsdWRlICJ0aHJlYWRfcHRoLmgiCi0jdW5kZWYgX1BPU0lYX1RIUkVBRFMKLSNlbmRpZgotCiAjaWZkZWYgX1BPU0lYX1RIUkVBRFMKKyNkZWZpbmUgUFlUSFJFQURfTkFNRSAicHRocmVhZCIKICNpbmNsdWRlICJ0aHJlYWRfcHRocmVhZC5oIgogI2VuZGlmCiAKLSNpZmRlZiBDX1RIUkVBRFMKLSNlcnJvciBNYWNoIEMgVGhyZWFkcyBhcmUgbm93IHVuc3VwcG9ydGVkLCBhbmQgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gMy4zLgotI2luY2x1ZGUgInRocmVhZF9jdGhyZWFkLmgiCi0jZW5kaWYKLQogI2lmZGVmIE5UX1RIUkVBRFMKKyNkZWZpbmUgUFlUSFJFQURfTkFNRSAibnQiCiAjaW5jbHVkZSAidGhyZWFkX250LmgiCiAjZW5kaWYKIAogI2lmZGVmIE9TMl9USFJFQURTCisjZGVmaW5lIFBZVEhSRUFEX05BTUUgIm9zMiIKICNpbmNsdWRlICJ0aHJlYWRfb3MyLmgiCiAjZW5kaWYKIAotI2lmZGVmIFBMQU45X1RIUkVBRFMKLSNpbmNsdWRlICJ0aHJlYWRfcGxhbjkuaCIKLSNlbmRpZgotCiAvKgogI2lmZGVmIEZPT0JBUl9USFJFQURTCiAjaW5jbHVkZSAidGhyZWFkX2Zvb2Jhci5oIgpAQCAtNDA5LDMgKzM3MCw4NCBAQAogfQogCiAjZW5kaWYgLyogUHlfSEFWRV9OQVRJVkVfVExTICovCisKK1B5RG9jX1NUUlZBUih0aHJlYWRpbmZvX19kb2NfXywKKyJzeXMudGhyZWFkX2luZm9cblwKK1xuXAorQSBzdHJ1Y3Qgc2VxdWVuY2UgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB0aHJlYWRpbmZvX2ZpZWxkc1tdID0geworICAgIHsibmFtZSIsICAgICJuYW1lIG9mIHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24ifSwKKyAgICB7ImxvY2siLCAgICAibmFtZSBvZiB0aGUgbG9jayBpbXBsZW1lbnRhdGlvbiJ9LAorICAgIHsidmVyc2lvbiIsICJuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoZSB0aHJlYWQgbGlicmFyeSJ9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyB0aHJlYWRpbmZvX2Rlc2MgPSB7CisgICAgInN5cy50aHJlYWRfaW5mbyIsICAgICAgICAgICAvKiBuYW1lICovCisgICAgdGhyZWFkaW5mb19fZG9jX18sICAgICAgICAgICAvKiBkb2MgKi8KKyAgICB0aHJlYWRpbmZvX2ZpZWxkcywgICAgICAgICAgIC8qIGZpZWxkcyAqLworICAgIDMKK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVGhyZWFkSW5mb1R5cGU7CisKK1B5T2JqZWN0KgorUHlUaHJlYWRfR2V0SW5mbyh2b2lkKQoreworICAgIFB5T2JqZWN0ICp0aHJlYWRpbmZvLCAqdmFsdWU7CisgICAgaW50IHBvcyA9IDA7CisjaWYgKGRlZmluZWQoX1BPU0lYX1RIUkVBRFMpICYmIGRlZmluZWQoSEFWRV9DT05GU1RSKSBcCisgICAgICYmIGRlZmluZWQoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04pKQorICAgIGNoYXIgYnVmZmVyWzI1NV07CisgICAgaW50IGxlbjsKKyNlbmRpZgorCisgICAgaWYgKFRocmVhZEluZm9UeXBlLnRwX25hbWUgPT0gMCkKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVGhyZWFkSW5mb1R5cGUsICZ0aHJlYWRpbmZvX2Rlc2MpOworCisgICAgdGhyZWFkaW5mbyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZUaHJlYWRJbmZvVHlwZSk7CisgICAgaWYgKHRocmVhZGluZm8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFBZVEhSRUFEX05BTUUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0aHJlYWRpbmZvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGhyZWFkaW5mbywgcG9zKyssIHZhbHVlKTsKKworI2lmZGVmIF9QT1NJWF9USFJFQURTCisjaWZkZWYgVVNFX1NFTUFQSE9SRVMKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzZW1hcGhvcmUiKTsKKyNlbHNlCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygibXV0ZXgrY29uZCIpOworI2VuZGlmCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHRocmVhZGluZm8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZWxzZQorICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICB2YWx1ZSA9IFB5X05vbmU7CisjZW5kaWYKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRocmVhZGluZm8sIHBvcysrLCB2YWx1ZSk7CisKKyNpZiAoZGVmaW5lZChfUE9TSVhfVEhSRUFEUykgJiYgZGVmaW5lZChIQVZFX0NPTkZTVFIpIFwKKyAgICAgJiYgZGVmaW5lZChfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTikpCisgICAgdmFsdWUgPSBOVUxMOworICAgIGxlbiA9IGNvbmZzdHIoX0NTX0dOVV9MSUJQVEhSRUFEX1ZFUlNJT04sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOworICAgIGlmICgxIDwgbGVuICYmIGxlbiA8IHNpemVvZihidWZmZXIpKSB7CisgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW4tMSk7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisjZW5kaWYKKyAgICB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgIH0KKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHRocmVhZGluZm8sIHBvcysrLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRocmVhZGluZm87Cit9CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX2N0aHJlYWQuaCBiL1B5dGhvbi90aHJlYWRfY3RocmVhZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjNlMzkwLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfY3RocmVhZC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLQotI2lmZGVmIE1BQ0hfQ19USFJFQURTCi0jaW5jbHVkZSA8bWFjaC9jdGhyZWFkcy5oPgotI2VuZGlmCi0KLSNpZmRlZiBIVVJEX0NfVEhSRUFEUwotI2luY2x1ZGUgPGN0aHJlYWRzLmg+Ci0jZW5kaWYKLQotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZAotUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci0jaWZuZGVmIEhVUkRfQ19USFJFQURTCi0gICAgLyogUm9sYW5kIE1jR3JhdGggc2FpZCB0aGlzIHNob3VsZCBub3QgYmUgdXNlZCBzaW5jZSB0aGlzIGlzCi0gICAgZG9uZSB3aGlsZSBsaW5raW5nIHRvIHRocmVhZHMgKi8KLSAgICBjdGhyZWFkX2luaXQoKTsKLSNlbHNlCi0vKiBkbyBub3RoaW5nICovCi0gICAgOwotI2VuZGlmCi19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotbG9uZwotUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIGludCBzdWNjZXNzID0gMDsgICAgICAgICAgICAvKiBpbml0IG5vdCBuZWVkZWQgd2hlbiBTT0xBUklTX1RIUkVBRFMgYW5kICovCi0gICAgICAgICAgICAgICAgLyogQ19USFJFQURTIGltcGxlbWVudGVkIHByb3Blcmx5ICovCi0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIC8qIGxvb2tzIGxpa2Ugc29sYXJpcyBkZXRhY2hlcyB0aGUgdGhyZWFkIHRvIG5ldmVyIHJlam9pbgotICAgICAqIHNvIHdlbGwgZG8gaXQgaGVyZQotICAgICAqLwotICAgIGN0aHJlYWRfZGV0YWNoKGN0aHJlYWRfZm9yaygoY3RocmVhZF9mbl90KSBmdW5jLCBhcmcpKTsKLSAgICByZXR1cm4gc3VjY2VzcyA8IDAgPyAtMSA6IDA7Ci19Ci0KLWxvbmcKLVB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHJldHVybiAobG9uZykgY3RocmVhZF9zZWxmKCk7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgY3RocmVhZF9leGl0KDApOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sKLVB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBtdXRleF90IGxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgbG9jayA9IG11dGV4X2FsbG9jKCk7Ci0gICAgaWYgKG11dGV4X2luaXQobG9jaykpIHsKLSAgICAgICAgcGVycm9yKCJtdXRleF9pbml0Iik7Ci0gICAgICAgIGZyZWUoKHZvaWQgKikgbG9jayk7Ci0gICAgICAgIGxvY2sgPSAwOwotICAgIH0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBtdXRleF9mcmVlKGxvY2spOwotfQotCi1pbnQKLVB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzID0gRkFMU0U7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGlmICh3YWl0ZmxhZykgeyAgICAgICAgICAgICAvKiBibG9ja2luZyAqLwotICAgICAgICBtdXRleF9sb2NrKChtdXRleF90KWxvY2spOwotICAgICAgICBzdWNjZXNzID0gVFJVRTsKLSAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgLyogbm9uIGJsb2NraW5nICovCi0gICAgICAgIHN1Y2Nlc3MgPSBtdXRleF90cnlfbG9jaygobXV0ZXhfdClsb2NrKTsKLSAgICB9Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkCi1QeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbXV0ZXhfdW5sb2NrKChtdXRleF90IClsb2NrKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbHdwLmggYi9QeXRob24vdGhyZWFkX2x3cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTdiMzdhLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfbHdwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8bHdwL2x3cC5oPgotI2luY2x1ZGUgPGx3cC9zdGFja2RlcC5oPgotCi0jZGVmaW5lIFNUQUNLU0laRSAgICAgICAxMDAwICAgIC8qIHN0YWNrc2l6ZSBmb3IgYSB0aHJlYWQgKi8KLSNkZWZpbmUgTlNUQUNLUyAgICAgICAgIDIgICAgICAgLyogIyBzdGFja3MgdG8gYmUgcHV0IGluIGNhY2hlIGluaXRpYWxseSAqLwotCi1zdHJ1Y3QgbG9jayB7Ci0gICAgaW50IGxvY2tfbG9ja2VkOwotICAgIGN2X3QgbG9ja19jb25kdmFyOwotICAgIG1vbl90IGxvY2tfbW9uaXRvcjsKLX07Ci0KLQotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLSAgICBsd3Bfc2V0c3RrY2FjaGUoU1RBQ0tTSVpFLCBOU1RBQ0tTKTsKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi0KLQotbG9uZyBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgdGhyZWFkX3QgdGlkOwotICAgIGludCBzdWNjZXNzOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgc3VjY2VzcyA9IGx3cF9jcmVhdGUoJnRpZCwgZnVuYywgTUlOUFJJTywgMCwgbHdwX25ld3N0aygpLCAxLCBhcmcpOwotICAgIHJldHVybiBzdWNjZXNzIDwgMCA/IC0xIDogMDsKLX0KLQotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgdGhyZWFkX3QgdGlkOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgaWYgKGx3cF9zZWxmKCZ0aWQpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiB0aWQudGhyZWFkX2lkOwotfQotCi12b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgbHdwX2Rlc3Ryb3koU0VMRik7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jayBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgc3RydWN0IGxvY2sgKmxvY2s7Ci0gICAgZXh0ZXJuIGNoYXIgKm1hbGxvYyhzaXplX3QpOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGxvY2sgPSAoc3RydWN0IGxvY2sgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgbG9jaykpOwotICAgIGxvY2stPmxvY2tfbG9ja2VkID0gMDsKLSAgICAodm9pZCkgbW9uX2NyZWF0ZSgmbG9jay0+bG9ja19tb25pdG9yKTsKLSAgICAodm9pZCkgY3ZfY3JlYXRlKCZsb2NrLT5sb2NrX2NvbmR2YXIsIGxvY2stPmxvY2tfbW9uaXRvcik7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkIFB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBtb25fZGVzdHJveSgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotICAgIGZyZWUoKGNoYXIgKikgbG9jayk7Ci19Ci0KLWludCBQeVRocmVhZF9hY3F1aXJlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzczsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgc3VjY2VzcyA9IDA7Ci0KLSAgICAodm9pZCkgbW9uX2VudGVyKCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgaWYgKHdhaXRmbGFnKQotICAgICAgICB3aGlsZSAoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQpCi0gICAgICAgICAgICBjdl93YWl0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfY29uZHZhcik7Ci0gICAgaWYgKCEoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCkgewotICAgICAgICBzdWNjZXNzID0gMTsKLSAgICAgICAgKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQgPSAxOwotICAgIH0KLSAgICBjdl9icm9hZGNhc3QoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19jb25kdmFyKTsKLSAgICBtb25fZXhpdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBQeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgKHZvaWQpIG1vbl9lbnRlcigoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotICAgICgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkID0gMDsKLSAgICBjdl9icm9hZGNhc3QoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19jb25kdmFyKTsKLSAgICBtb25fZXhpdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX21vbml0b3IpOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9udC5oIGIvUHl0aG9uL3RocmVhZF9udC5oCmluZGV4IGQxYmIwZTUuLjkzOGJmMWUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfbnQuaAorKysgYi9QeXRob24vdGhyZWFkX250LmgKQEAgLTksNiArOSwxMDkgQEAKICNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjZW5kaWYKIAorLyogb3B0aW9ucyAqLworI2lmbmRlZiBfUFlfVVNFX0NWX0xPQ0tTCisjZGVmaW5lIF9QWV9VU0VfQ1ZfTE9DS1MgMSAgICAgLyogdXNlIGxvY2tzIGJhc2VkIG9uIGNvbmQgdmFycyAqLworI2VuZGlmCisKKy8qIE5vdywgZGVmaW5lIGEgbm9uLXJlY3Vyc2l2ZSBtdXRleCB1c2luZyBlaXRoZXIgY29uZGl0aW9uIHZhcmlhYmxlcworICogYW5kIGNyaXRpY2FsIHNlY3Rpb25zIChmYXN0KSBvciB1c2luZyBvcGVyYXRpbmcgc3lzdGVtIG11dGV4ZXMKKyAqIChzbG93KQorICovCisKKyNpZiBfUFlfVVNFX0NWX0xPQ0tTCisKKyNpbmNsdWRlICJjb25kdmFyLmgiCisKK3R5cGVkZWYgc3RydWN0IF9OUk1VVEVYCit7CisgICAgUHlNVVRFWF9UIGNzOworICAgIFB5Q09ORF9UIGN2OworICAgIGludCBsb2NrZWQ7Cit9IE5STVVURVg7Cit0eXBlZGVmIE5STVVURVggKlBOUk1VVEVYOworCitQTlJNVVRFWAorQWxsb2NOb25SZWN1cnNpdmVNdXRleCgpCit7CisgICAgUE5STVVURVggbSA9IChQTlJNVVRFWCltYWxsb2Moc2l6ZW9mKE5STVVURVgpKTsKKyAgICBpZiAoIW0pCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeUNPTkRfSU5JVCgmbS0+Y3YpKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKFB5TVVURVhfSU5JVCgmbS0+Y3MpKSB7CisgICAgICAgIFB5Q09ORF9GSU5JKCZtLT5jdik7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgbS0+bG9ja2VkID0gMDsKKyAgICByZXR1cm4gbTsKK2ZhaWw6CisgICAgZnJlZShtKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworVk9JRAorRnJlZU5vblJlY3Vyc2l2ZU11dGV4KFBOUk1VVEVYIG11dGV4KQoreworICAgIGlmIChtdXRleCkgeworICAgICAgICBQeUNPTkRfRklOSSgmbXV0ZXgtPmN2KTsKKyAgICAgICAgUHlNVVRFWF9GSU5JKCZtdXRleC0+Y3MpOworICAgICAgICBmcmVlKG11dGV4KTsKKyAgICB9Cit9CisKK0RXT1JECitFbnRlck5vblJlY3Vyc2l2ZU11dGV4KFBOUk1VVEVYIG11dGV4LCBEV09SRCBtaWxsaXNlY29uZHMpCit7CisgICAgRFdPUkQgcmVzdWx0ID0gV0FJVF9PQkpFQ1RfMDsKKyAgICBpZiAoUHlNVVRFWF9MT0NLKCZtdXRleC0+Y3MpKQorICAgICAgICByZXR1cm4gV0FJVF9GQUlMRUQ7CisgICAgaWYgKG1pbGxpc2Vjb25kcyA9PSBJTkZJTklURSkgeworICAgICAgICB3aGlsZSAobXV0ZXgtPmxvY2tlZCkgeworICAgICAgICAgICAgaWYgKFB5Q09ORF9XQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gV0FJVF9GQUlMRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG1pbGxpc2Vjb25kcyAhPSAwKSB7CisgICAgICAgIC8qIHdhaXQgYXQgbGVhc3QgdW50aWwgdGhlIHRhcmdldCAqLworICAgICAgICBEV09SRCBub3csIHRhcmdldCA9IEdldFRpY2tDb3VudCgpICsgbWlsbGlzZWNvbmRzOworICAgICAgICB3aGlsZSAobXV0ZXgtPmxvY2tlZCkgeworICAgICAgICAgICAgaWYgKFB5Q09ORF9USU1FRFdBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcywgbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm93ID0gR2V0VGlja0NvdW50KCk7CisgICAgICAgICAgICBpZiAodGFyZ2V0IDw9IG5vdykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IHRhcmdldC1ub3c7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFtdXRleC0+bG9ja2VkKSB7CisgICAgICAgIG11dGV4LT5sb2NrZWQgPSAxOworICAgICAgICByZXN1bHQgPSBXQUlUX09CSkVDVF8wOworICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFdBSVRfT0JKRUNUXzApCisgICAgICAgIHJlc3VsdCA9IFdBSVRfVElNRU9VVDsKKyAgICAvKiBlbHNlLCBpdCBpcyBXQUlUX0ZBSUxFRCAqLworICAgIFB5TVVURVhfVU5MT0NLKCZtdXRleC0+Y3MpOyAvKiBtdXN0IGlnbm9yZSByZXN1bHQgaGVyZSAqLworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0JPT0wKK0xlYXZlTm9uUmVjdXJzaXZlTXV0ZXgoUE5STVVURVggbXV0ZXgpCit7CisgICAgQk9PTCByZXN1bHQ7CisgICAgaWYgKFB5TVVURVhfTE9DSygmbXV0ZXgtPmNzKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIG11dGV4LT5sb2NrZWQgPSAwOworICAgIHJlc3VsdCA9IFB5Q09ORF9TSUdOQUwoJm11dGV4LT5jdik7CisgICAgcmVzdWx0ICY9IFB5TVVURVhfVU5MT0NLKCZtdXRleC0+Y3MpOworICAgIHJldHVybiByZXN1bHQ7Cit9ICAgIAorCisjZWxzZSAvKiBpZiAhIF9QWV9VU0VfQ1ZfTE9DS1MgKi8KKworLyogTlItbG9ja3MgYmFzZWQgb24gYSBrZXJuZWwgbXV0ZXggKi8KICNkZWZpbmUgUE5STVVURVggSEFORExFCiAKIFBOUk1VVEVYCkBAIC0zNSw2ICsxMzgsNyBAQAogewogICAgIHJldHVybiBSZWxlYXNlU2VtYXBob3JlKG11dGV4LCAxLCBOVUxMKTsKIH0KKyNlbmRpZiAvKiBfUFlfVVNFX0NWX0xPQ0tTICovCiAKIGxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9wdGguaCBiL1B5dGhvbi90aHJlYWRfcHRoLmgKaW5kZXggODJhMDBlNy4uNTcwNDI2NiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9wdGguaAorKysgYi9QeXRob24vdGhyZWFkX3B0aC5oCkBAIC02OSw5ICs2OSw4IEBACiAgICAgdm9sYXRpbGUgcHRoX3QgdGhyZWFkaWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICAvKiBKdW1wIHRocm91Z2ggc29tZSBob29wcyBmb3IgQWxwaGEgT1NGLzEgKi8KICAgICB0aHJlYWRpZCA9IHB0aF9zZWxmKCk7Ci0gICAgcmV0dXJuIChsb25nKSAqKGxvbmcgKikgJnRocmVhZGlkOworICAgIHJldHVybiAobG9uZykgdGhyZWFkaWQ7CiB9CiAKIHZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKaW5kZXggM2NkZTAzNS4uNTAwN2FhZiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKQEAgLTE0OCw3ICsxNDgsNyBAQAogICogSW5pdGlhbGl6YXRpb24uCiAgKi8KIAotI2lmZGVmIF9IQVZFX0JTREkKKyNpZiBkZWZpbmVkKF9IQVZFX0JTREkpCiBzdGF0aWMKIHZvaWQgX25vb3Aodm9pZCkKIHsKQEAgLTI0NCw4ICsyNDQsNyBAQAogICAgaG9zZWQiIGJlY2F1c2U6CiAgICAgIC0gSXQgZG9lcyBub3QgZ3VhcmFudGVlIHRoZSBwcm9taXNlIHRoYXQgYSBub24temVybyBpbnRlZ2VyIGlzIHJldHVybmVkLgogICAgICAtIFRoZSBjYXN0IHRvIGxvbmcgaXMgaW5oZXJlbnRseSB1bnNhZmUuCi0gICAgIC0gSXQgaXMgbm90IGNsZWFyIHRoYXQgdGhlICd2b2xhdGlsZScgKGZvciBBSVg/KSBhbmQgdWdseSBjYXN0aW5nIGluIHRoZQotICAgICAgIGxhdHRlciByZXR1cm4gc3RhdGVtZW50IChmb3IgQWxwaGEgT1NGLzEpIGFyZSBhbnkgbG9uZ2VyIG5lY2Vzc2FyeS4KKyAgICAgLSBJdCBpcyBub3QgY2xlYXIgdGhhdCB0aGUgJ3ZvbGF0aWxlJyAoZm9yIEFJWD8pIGFyZSBhbnkgbG9uZ2VyIG5lY2Vzc2FyeS4KICovCiBsb25nCiBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCkBAIC0yNTMsMTMgKzI1Miw4IEBACiAgICAgdm9sYXRpbGUgcHRocmVhZF90IHRocmVhZGlkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgLyogSnVtcCB0aHJvdWdoIHNvbWUgaG9vcHMgZm9yIEFscGhhIE9TRi8xICovCiAgICAgdGhyZWFkaWQgPSBwdGhyZWFkX3NlbGYoKTsKLSNpZiBTSVpFT0ZfUFRIUkVBRF9UIDw9IFNJWkVPRl9MT05HCiAgICAgcmV0dXJuIChsb25nKSB0aHJlYWRpZDsKLSNlbHNlCi0gICAgcmV0dXJuIChsb25nKSAqKGxvbmcgKikgJnRocmVhZGlkOwotI2VuZGlmCiB9CiAKIHZvaWQKQEAgLTQ0OSwxMiArNDQzLDE1IEBACiAKICAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKIAotICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfZGVzdHJveSggJnRoZWxvY2stPm11dCApOwotICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF9kZXN0cm95Iik7Ci0KKyAgICAvKiBzb21lIHB0aHJlYWQtbGlrZSBpbXBsZW1lbnRhdGlvbnMgdGllIHRoZSBtdXRleCB0byB0aGUgY29uZAorICAgICAqIGFuZCBtdXN0IGhhdmUgdGhlIGNvbmQgZGVzdHJveWVkIGZpcnN0LgorICAgICAqLwogICAgIHN0YXR1cyA9IHB0aHJlYWRfY29uZF9kZXN0cm95KCAmdGhlbG9jay0+bG9ja19yZWxlYXNlZCApOwogICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9jb25kX2Rlc3Ryb3kiKTsKIAorICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfZGVzdHJveSggJnRoZWxvY2stPm11dCApOworICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF9kZXN0cm95Iik7CisKICAgICBmcmVlKCh2b2lkICopdGhlbG9jayk7CiB9CiAKQEAgLTUzNywxMiArNTM0LDEyIEBACiAKICAgICB0aGVsb2NrLT5sb2NrZWQgPSAwOwogCi0gICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF91bmxvY2soICZ0aGVsb2NrLT5tdXQgKTsKLSAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfdW5sb2NrWzNdIik7Ci0KICAgICAvKiB3YWtlIHVwIHNvbWVvbmUgKGFueW9uZSwgaWYgYW55KSB3YWl0aW5nIG9uIHRoZSBsb2NrICovCiAgICAgc3RhdHVzID0gcHRocmVhZF9jb25kX3NpZ25hbCggJnRoZWxvY2stPmxvY2tfcmVsZWFzZWQgKTsKICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfY29uZF9zaWduYWwiKTsKKworICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmdGhlbG9jay0+bXV0ICk7CisgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X3VubG9ja1szXSIpOwogfQogCiAjZW5kaWYgLyogVVNFX1NFTUFQSE9SRVMgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfc2dpLmggYi9QeXRob24vdGhyZWFkX3NnaS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzFhYjJjLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfc2dpLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNTkgKzAsMCBAQAotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvd2FpdC5oPgotI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotI2luY2x1ZGUgPHVsb2Nrcy5oPgotI2luY2x1ZGUgPGVycm5vLmg+Ci0KLSNkZWZpbmUgSERSX1NJWkUgICAgICAgIDI2ODAgICAgLyogc2l6ZW9mKHVzaGRyX3QpICovCi0jZGVmaW5lIE1BWFBST0MgICAgICAgICAxMDAgICAgIC8qIG1heCAjIG9mIHRocmVhZHMgdGhhdCBjYW4gYmUgc3RhcnRlZCAqLwotCi1zdGF0aWMgdXNwdHJfdCAqc2hhcmVkX2FyZW5hOwotc3RhdGljIHVsb2NrX3QgY291bnRfbG9jazsgICAgICAvKiBwcm90ZWN0aW9uIGZvciBzb21lIHZhcmlhYmxlcyAqLwotc3RhdGljIHVsb2NrX3Qgd2FpdF9sb2NrOyAgICAgICAvKiBsb2NrIHVzZWQgdG8gd2FpdCBmb3Igb3RoZXIgdGhyZWFkcyAqLwotc3RhdGljIGludCB3YWl0aW5nX2Zvcl90aHJlYWRzOyAvKiBwcm90ZWN0ZWQgYnkgY291bnRfbG9jayAqLwotc3RhdGljIGludCBudGhyZWFkczsgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgY291bnRfbG9jayAqLwotc3RhdGljIGludCBleGl0X3N0YXR1czsKLXN0YXRpYyBpbnQgZXhpdGluZzsgICAgICAgICAgICAgLyogd2UncmUgYWxyZWFkeSBleGl0aW5nIChmb3IgbWF5YmVfZXhpdCkgKi8KLXN0YXRpYyBwaWRfdCBteV9waWQ7ICAgICAgICAgICAgLyogUElEIG9mIG1haW4gdGhyZWFkICovCi1zdGF0aWMgc3RydWN0IHBpZGxpc3QgewotICAgIHBpZF90IHBhcmVudDsKLSAgICBwaWRfdCBjaGlsZDsKLX0gcGlkbGlzdFtNQVhQUk9DXTsgICAgIC8qIFBJRHMgb2Ygb3RoZXIgdGhyZWFkczsgcHJvdGVjdGVkIGJ5IGNvdW50X2xvY2sgKi8KLXN0YXRpYyBpbnQgbWF4cGlkaW5kZXg7ICAgICAgICAgLyogIyBvZiBQSURzIGluIHBpZGxpc3QgKi8KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci0jaWZkZWYgVVNFX0RMCi0gICAgbG9uZyBhZGRyLCBzaXplOwotI2VuZGlmIC8qIFVTRV9ETCAqLwotCi0KLSNpZmRlZiBVU0VfREwKLSAgICBpZiAoKHNpemUgPSB1c2NvbmZpZyhDT05GX0lOSVRTSVpFLCA2NCoxMDI0KSkgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUU0laRSAoY2hlY2spIik7Ci0gICAgaWYgKHVzY29uZmlnKENPTkZfSU5JVFNJWkUsIHNpemUpIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKHJlc2V0KSIpOwotICAgIGFkZHIgPSAobG9uZykgZGxfZ2V0cmFuZ2Uoc2l6ZSArIEhEUl9TSVpFKTsKLSAgICBkcHJpbnRmKCgidHJ5aW5nIHRvIHVzZSBhZGRyICVwLSVwIGZvciBzaGFyZWQgYXJlbmFcbiIsIGFkZHIsIGFkZHIrc2l6ZSkpOwotICAgIGVycm5vID0gMDsKLSAgICBpZiAoKGFkZHIgPSB1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpKSA8IDAgJiYgZXJybm8gIT0gMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAoc2V0KSIpOwotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgIGlmICh1c2NvbmZpZyhDT05GX0lOSVRVU0VSUywgMTYpIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFVTRVJTIik7Ci0gICAgbXlfcGlkID0gZ2V0cGlkKCk7ICAgICAgICAgIC8qIHNvIHRoYXQgd2Uga25vdyB3aGljaCBpcyB0aGUgbWFpbiB0aHJlYWQgKi8KLSAgICBpZiAodXNjb25maWcoQ09ORl9BUkVOQVRZUEUsIFVTX1NIQVJFRE9OTFkpIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVJFTkFUWVBFIik7Ci0gICAgdXNjb25maWcoQ09ORl9MT0NLVFlQRSwgVVNfREVCVUcpOyAvKiBYWFggKi8KLSNpZmRlZiBQeV9ERUJVRwotICAgIGlmICh0aHJlYWRfZGVidWcgJiA0KQotICAgICAgICB1c2NvbmZpZyhDT05GX0xPQ0tUWVBFLCBVU19ERUJVR1BMVVMpOwotICAgIGVsc2UgaWYgKHRocmVhZF9kZWJ1ZyAmIDIpCi0gICAgICAgIHVzY29uZmlnKENPTkZfTE9DS1RZUEUsIFVTX0RFQlVHKTsKLSNlbmRpZiAvKiBQeV9ERUJVRyAqLwotICAgIGlmICgoc2hhcmVkX2FyZW5hID0gdXNpbml0KHRtcG5hbSgwKSkpID09IDApCi0gICAgICAgIHBlcnJvcigidXNpbml0Iik7Ci0jaWZkZWYgVVNFX0RMCi0gICAgaWYgKHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikgPCAwKSAvKiByZXNldCBhZGRyZXNzICovCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHJlc2V0KSIpOwotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgIGlmICgoY291bnRfbG9jayA9IHVzbmV3bG9jayhzaGFyZWRfYXJlbmEpKSA9PSBOVUxMKQotICAgICAgICBwZXJyb3IoInVzbmV3bG9jayAoY291bnRfbG9jaykiKTsKLSAgICAodm9pZCkgdXNpbml0bG9jayhjb3VudF9sb2NrKTsKLSAgICBpZiAoKHdhaXRfbG9jayA9IHVzbmV3bG9jayhzaGFyZWRfYXJlbmEpKSA9PSBOVUxMKQotICAgICAgICBwZXJyb3IoInVzbmV3bG9jayAod2FpdF9sb2NrKSIpOwotICAgIGRwcmludGYoKCJhcmVuYSBzdGFydDogJXAsIGFyZW5hIHNpemU6ICVsZFxuIiwgIHNoYXJlZF9hcmVuYSwgKGxvbmcpIHVzY29uZmlnKENPTkZfR0VUU0laRSwgc2hhcmVkX2FyZW5hKSkpOwotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLQotc3RhdGljIHZvaWQgY2xlYW5fdGhyZWFkcyh2b2lkKQotewotICAgIGludCBpLCBqOwotICAgIHBpZF90IG15cGlkLCBwaWQ7Ci0KLSAgICAvKiBjbGVhbiB1cCBhbnkgZXhpdGVkIHRocmVhZHMgKi8KLSAgICBteXBpZCA9IGdldHBpZCgpOwotICAgIGkgPSAwOwotICAgIHdoaWxlIChpIDwgbWF4cGlkaW5kZXgpIHsKLSAgICAgICAgaWYgKHBpZGxpc3RbaV0ucGFyZW50ID09IG15cGlkICYmIChwaWQgPSBwaWRsaXN0W2ldLmNoaWxkKSA+IDApIHsKLSAgICAgICAgICAgIHBpZCA9IHdhaXRwaWQocGlkLCAwLCBXTk9IQU5HKTsKLSAgICAgICAgICAgIGlmIChwaWQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgLyogYSB0aHJlYWQgaGFzIGV4aXRlZCAqLwotICAgICAgICAgICAgICAgIHBpZGxpc3RbaV0gPSBwaWRsaXN0Wy0tbWF4cGlkaW5kZXhdOwotICAgICAgICAgICAgICAgIC8qIHJlbW92ZSByZWZlcmVuY2VzIHRvIGNoaWxkcmVuIG9mIGRlYWQgcHJvYyAqLwotICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBtYXhwaWRpbmRleDsgaisrKQotICAgICAgICAgICAgICAgICAgICBpZiAocGlkbGlzdFtqXS5wYXJlbnQgPT0gcGlkKQotICAgICAgICAgICAgICAgICAgICAgICAgcGlkbGlzdFtqXS5jaGlsZCA9IC0xOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBkb24ndCBpbmNyZW1lbnQgaSAqLwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGkrKzsKLSAgICB9Ci0gICAgLyogY2xlYW4gdXAgdGhlIGxpc3QgKi8KLSAgICBpID0gMDsKLSAgICB3aGlsZSAoaSA8IG1heHBpZGluZGV4KSB7Ci0gICAgICAgIGlmIChwaWRsaXN0W2ldLmNoaWxkID09IC0xKSB7Ci0gICAgICAgICAgICBwaWRsaXN0W2ldID0gcGlkbGlzdFstLW1heHBpZGluZGV4XTsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBkb24ndCBpbmNyZW1lbnQgaSAqLwotICAgICAgICB9Ci0gICAgICAgIGkrKzsKLSAgICB9Ci19Ci0KLWxvbmcgUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotI2lmZGVmIFVTRV9ETAotICAgIGxvbmcgYWRkciwgc2l6ZTsKLSAgICBzdGF0aWMgaW50IGxvY2FsX2luaXRpYWxpemVkID0gMDsKLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICBpbnQgc3VjY2VzcyA9IDA7ICAgICAgICAgICAgLyogaW5pdCBub3QgbmVlZGVkIHdoZW4gU09MQVJJU19USFJFQURTIGFuZCAqLwotICAgICAgICAgICAgICAgIC8qIENfVEhSRUFEUyBpbXBsZW1lbnRlZCBwcm9wZXJseSAqLwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBzd2l0Y2ggKHVzc2V0bG9jayhjb3VudF9sb2NrKSkgewotICAgIGNhc2UgMDogcmV0dXJuIDA7Ci0gICAgY2FzZSAtMTogcGVycm9yKCJ1c3NldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgfQotICAgIGlmIChtYXhwaWRpbmRleCA+PSBNQVhQUk9DKQotICAgICAgICBzdWNjZXNzID0gLTE7Ci0gICAgZWxzZSB7Ci0jaWZkZWYgVVNFX0RMCi0gICAgICAgIGlmICghbG9jYWxfaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgICAgIGlmICgoc2l6ZSA9IHVzY29uZmlnKENPTkZfSU5JVFNJWkUsIDY0KjEwMjQpKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfSU5JVFNJWkUgKGNoZWNrKSIpOwotICAgICAgICAgICAgaWYgKHVzY29uZmlnKENPTkZfSU5JVFNJWkUsIHNpemUpIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUU0laRSAocmVzZXQpIik7Ci0gICAgICAgICAgICBhZGRyID0gKGxvbmcpIGRsX2dldHJhbmdlKHNpemUgKyBIRFJfU0laRSk7Ci0gICAgICAgICAgICBkcHJpbnRmKCgidHJ5aW5nIHRvIHVzZSBhZGRyICVwLSVwIGZvciBzcHJvY1xuIiwKLSAgICAgICAgICAgICAgICAgICAgIGFkZHIsIGFkZHIrc2l6ZSkpOwotICAgICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgICAgaWYgKChhZGRyID0gdXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSkgPCAwICYmCi0gICAgICAgICAgICAgICAgZXJybm8gIT0gMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChzZXQpIik7Ci0gICAgICAgIH0KLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICAgICAgY2xlYW5fdGhyZWFkcygpOwotICAgICAgICBpZiAoKHN1Y2Nlc3MgPSBzcHJvYyhmdW5jLCBQUl9TQUxMLCBhcmcpKSA8IDApCi0gICAgICAgICAgICBwZXJyb3IoInNwcm9jIik7Ci0jaWZkZWYgVVNFX0RMCi0gICAgICAgIGlmICghbG9jYWxfaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgICAgIGlmICh1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpIDwgMCkKLSAgICAgICAgICAgICAgICAvKiByZXNldCBhZGRyZXNzICovCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAocmVzZXQpIik7Ci0gICAgICAgICAgICBsb2NhbF9pbml0aWFsaXplZCA9IDE7Ci0gICAgICAgIH0KLSNlbmRpZiAvKiBVU0VfREwgKi8KLSAgICAgICAgaWYgKHN1Y2Nlc3MgPj0gMCkgewotICAgICAgICAgICAgbnRocmVhZHMrKzsKLSAgICAgICAgICAgIHBpZGxpc3RbbWF4cGlkaW5kZXhdLnBhcmVudCA9IGdldHBpZCgpOwotICAgICAgICAgICAgcGlkbGlzdFttYXhwaWRpbmRleCsrXS5jaGlsZCA9IHN1Y2Nlc3M7Ci0gICAgICAgICAgICBkcHJpbnRmKCgicGlkbGlzdFslZF0gPSAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgIG1heHBpZGluZGV4LTEsIHN1Y2Nlc3MpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAodXN1bnNldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICByZXR1cm4gZ2V0cGlkKCk7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICBpZiAodXNzZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3NldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgbnRocmVhZHMtLTsKLSAgICBpZiAoZ2V0cGlkKCkgPT0gbXlfcGlkKSB7Ci0gICAgICAgIC8qIG1haW4gdGhyZWFkOyB3YWl0IGZvciBvdGhlciB0aHJlYWRzIHRvIGV4aXQgKi8KLSAgICAgICAgZXhpdGluZyA9IDE7Ci0gICAgICAgIHdhaXRpbmdfZm9yX3RocmVhZHMgPSAxOwotICAgICAgICBpZiAodXNzZXRsb2NrKHdhaXRfbG9jaykgPCAwKQotICAgICAgICAgICAgcGVycm9yKCJ1c3NldGxvY2sgKHdhaXRfbG9jaykiKTsKLSAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgaWYgKG50aHJlYWRzIDwgMCkgewotICAgICAgICAgICAgICAgIGRwcmludGYoKCJyZWFsbHkgZXhpdCAoJWQpXG4iLCBleGl0X3N0YXR1cykpOwotICAgICAgICAgICAgICAgIGV4aXQoZXhpdF9zdGF0dXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHVzdW5zZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgICAgICAgICAgZHByaW50ZigoIndhaXRpbmcgZm9yIG90aGVyIHRocmVhZHMgKCVkKVxuIiwgbnRocmVhZHMpKTsKLSAgICAgICAgICAgIGlmICh1c3NldGxvY2sod2FpdF9sb2NrKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c3NldGxvY2sgKHdhaXRfbG9jaykiKTsKLSAgICAgICAgICAgIGlmICh1c3NldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNzZXRsb2NrIChjb3VudF9sb2NrKSIpOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIG5vdCB0aGUgbWFpbiB0aHJlYWQgKi8KLSAgICBpZiAod2FpdGluZ19mb3JfdGhyZWFkcykgewotICAgICAgICBkcHJpbnRmKCgibWFpbiB0aHJlYWQgaXMgd2FpdGluZ1xuIikpOwotICAgICAgICBpZiAodXN1bnNldGxvY2sod2FpdF9sb2NrKSA8IDApCi0gICAgICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgfQotICAgIGlmICh1c3Vuc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgX2V4aXQoMCk7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jayBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgdWxvY2tfdCBsb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGlmICgobG9jayA9IHVzbmV3bG9jayhzaGFyZWRfYXJlbmEpKSA9PSBOVUxMKQotICAgICAgICBwZXJyb3IoInVzbmV3bG9jayIpOwotICAgICh2b2lkKSB1c2luaXRsb2NrKGxvY2spOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZCBQeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgdXNmcmVlbG9jaygodWxvY2tfdCkgbG9jaywgc2hhcmVkX2FyZW5hKTsKLX0KLQotaW50IFB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBlcnJubyA9IDA7ICAgICAgICAgICAgICAgICAgLyogY2xlYXIgaXQganVzdCBpbiBjYXNlICovCi0gICAgaWYgKHdhaXRmbGFnKQotICAgICAgICBzdWNjZXNzID0gdXNzZXRsb2NrKCh1bG9ja190KSBsb2NrKTsKLSAgICBlbHNlCi0gICAgICAgIHN1Y2Nlc3MgPSB1c2NzZXRsb2NrKCh1bG9ja190KSBsb2NrLCAxKTsgLyogVHJ5IGl0IG9uY2UgKi8KLSAgICBpZiAoc3VjY2VzcyA8IDApCi0gICAgICAgIHBlcnJvcih3YWl0ZmxhZyA/ICJ1c3NldGxvY2siIDogInVzY3NldGxvY2siKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIGlmICh1c3Vuc2V0bG9jaygodWxvY2tfdCkgbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzdW5zZXRsb2NrIik7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3NvbGFyaXMuaCBiL1B5dGhvbi90aHJlYWRfc29sYXJpcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2UxY2ZjLi4wMDAwMDAwCi0tLSBhL1B5dGhvbi90aHJlYWRfc29sYXJpcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDwvdXNyL2luY2x1ZGUvdGhyZWFkLmg+Ci0jdW5kZWYgX1BPU0lYX1RIUkVBRFMKLQotCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLXN0cnVjdCBmdW5jX2FyZyB7Ci0gICAgdm9pZCAoKmZ1bmMpKHZvaWQgKik7Ci0gICAgdm9pZCAqYXJnOwotfTsKLQotc3RhdGljIHZvaWQgKgotbmV3X2Z1bmModm9pZCAqZnVuY2FyZykKLXsKLSAgICB2b2lkICgqZnVuYykodm9pZCAqKTsKLSAgICB2b2lkICphcmc7Ci0KLSAgICBmdW5jID0gKChzdHJ1Y3QgZnVuY19hcmcgKikgZnVuY2FyZyktPmZ1bmM7Ci0gICAgYXJnID0gKChzdHJ1Y3QgZnVuY19hcmcgKikgZnVuY2FyZyktPmFyZzsKLSAgICBmcmVlKGZ1bmNhcmcpOwotICAgICgqZnVuYykoYXJnKTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi1sb25nCi1QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgdGhyZWFkX3QgdGlkOwotICAgIHN0cnVjdCBmdW5jX2FyZyAqZnVuY2FyZzsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgZnVuY2FyZyA9IChzdHJ1Y3QgZnVuY19hcmcgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgZnVuY19hcmcpKTsKLSAgICBmdW5jYXJnLT5mdW5jID0gZnVuYzsKLSAgICBmdW5jYXJnLT5hcmcgPSBhcmc7Ci0gICAgaWYgKHRocl9jcmVhdGUoMCwgMCwgbmV3X2Z1bmMsIGZ1bmNhcmcsCi0gICAgICAgICAgICAgICAgICAgVEhSX0RFVEFDSEVEIHwgVEhSX05FV19MV1AsICZ0aWQpKSB7Ci0gICAgICAgIHBlcnJvcigidGhyX2NyZWF0ZSIpOwotICAgICAgICBmcmVlKCh2b2lkICopIGZ1bmNhcmcpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJldHVybiB0aWQ7Ci19Ci0KLWxvbmcKLVB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHJldHVybiB0aHJfc2VsZigpOwotfQotCi12b2lkCi1QeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIHRocl9leGl0KDApOwotfQotCi0vKgotICogTG9jayBzdXBwb3J0LgotICovCi1QeVRocmVhZF90eXBlX2xvY2sKLVB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBtdXRleF90ICpsb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGxvY2sgPSAobXV0ZXhfdCAqKSBtYWxsb2Moc2l6ZW9mKG11dGV4X3QpKTsKLSAgICBpZiAobXV0ZXhfaW5pdChsb2NrLCBVU1lOQ19USFJFQUQsIDApKSB7Ci0gICAgICAgIHBlcnJvcigibXV0ZXhfaW5pdCIpOwotICAgICAgICBmcmVlKCh2b2lkICopIGxvY2spOwotICAgICAgICBsb2NrID0gMDsKLSAgICB9Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkCi1QeVRocmVhZF9mcmVlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2ZyZWVfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgbXV0ZXhfZGVzdHJveSgobXV0ZXhfdCAqKSBsb2NrKTsKLSAgICBmcmVlKCh2b2lkICopIGxvY2spOwotfQotCi1pbnQKLVB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBpZiAod2FpdGZsYWcpCi0gICAgICAgIHN1Y2Nlc3MgPSBtdXRleF9sb2NrKChtdXRleF90ICopIGxvY2spOwotICAgIGVsc2UKLSAgICAgICAgc3VjY2VzcyA9IG11dGV4X3RyeWxvY2soKG11dGV4X3QgKikgbG9jayk7Ci0gICAgaWYgKHN1Y2Nlc3MgPCAwKQotICAgICAgICBwZXJyb3Iod2FpdGZsYWcgPyAibXV0ZXhfbG9jayIgOiAibXV0ZXhfdHJ5bG9jayIpOwotICAgIGVsc2UKLSAgICAgICAgc3VjY2VzcyA9ICFzdWNjZXNzOyAvKiBzb2xhcmlzIGRvZXMgaXQgdGhlIG90aGVyIHdheSByb3VuZCAqLwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZAotUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIGlmIChtdXRleF91bmxvY2soKG11dGV4X3QgKikgbG9jaykpCi0gICAgICAgIHBlcnJvcigibXV0ZXhfdW5sb2NrIik7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3dpbmNlLmggYi9QeXRob24vdGhyZWFkX3dpbmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZGRjMDIuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF93aW5jZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLQotLyogVGhpcyBjb2RlIGltcGxlbWVudGVkIGJ5IE1hcmsgSGFtbW9uZCAoTUhhbW1vbmRAc2tpcHBpbmV0LmNvbS5hdSkgKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxweWRlYnVnLmg+Ci0KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKTsKLQotLyoKLSAqIENoYW5nZSBhbGwgaGVhZGVycyB0byBwdXJlIEFOU0kgYXMgbm8gb25lIHdpbGwgdXNlIEsmUiBzdHlsZSBvbiBhbgotICogTlQKLSAqLwotCi0vKgotICogSW5pdGlhbGl6YXRpb24gb2YgdGhlIEMgcGFja2FnZSwgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLWxvbmcgUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCh2b2lkICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQotewotICAgIGxvbmcgcnY7Ci0gICAgaW50IHN1Y2Nlc3MgPSAtMTsKLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgcnYgPSBfYmVnaW50aHJlYWQoZnVuYywgMCwgYXJnKTsgLyogdXNlIGRlZmF1bHQgc3RhY2sgc2l6ZSAqLwotCi0gICAgaWYgKHJ2ICE9IC0xKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSAwOwotICAgICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIHN1Y2NlZWRlZDpcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIH0KLQotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi0vKgotICogUmV0dXJuIHRoZSB0aHJlYWQgSWQgaW5zdGVhZCBvZiBhbiBoYW5kbGUuIFRoZSBJZCBpcyBzYWlkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZQotICogdGhyZWFkIGluIHRoZSBzeXN0ZW0KLSAqLwotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpCi17Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkSWQoKTsKLX0KLQotdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICBfZW5kdGhyZWFkKCk7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuIEl0IGhhcyB0byBiZSBpbXBsZW1lbnRlZCB1c2luZyBNdXRleGVzLCBhcwotICogQ0UgZG9lc250IHN1cHBvcnQgc2VtYXBob3Jlcy4gIFRoZXJlZm9yZSB3ZSB1c2Ugc29tZSBoYWNrcyB0bwotICogc2ltdWxhdGUgdGhlIG5vbiByZWVudHJhbnQgcmVxdWlyZW1lbnRzIG9mIFB5dGhvbiBsb2NrcwotICovCi1QeVRocmVhZF90eXBlX2xvY2sgUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIEhBTkRMRSBhTG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLQotICAgIGFMb2NrID0gQ3JlYXRlRXZlbnQoTlVMTCwgICAgICAgICAgIC8qIFNlY3VyaXR5IGF0dHJpYnV0ZXMgICAgICAqLwotICAgICAgICAgICAgMCwgICAgICAgICAgICAgIC8qIE1hbnVhbC1SZXNldCAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgLyogSXMgaW5pdGlhbGx5IHNpZ25hbGxlZCAgKi8KLSAgICAgICAgICAgIE5VTEwpOyAgICAgICAgICAvKiBOYW1lIG9mIGV2ZW50ICAgICAgICAgICAgKi8KLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBhTG9jaykpOwotCi0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGFMb2NrOwotfQotCi12b2lkIFB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2spCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSxhTG9jaykpOwotCi0gICAgQ2xvc2VIYW5kbGUoYUxvY2spOwotfQotCi0vKgotICogUmV0dXJuIDEgb24gc3VjY2VzcyBpZiB0aGUgbG9jayB3YXMgYWNxdWlyZWQKLSAqCi0gKiBhbmQgMCBpZiB0aGUgbG9jayB3YXMgbm90IGFjcXVpcmVkLiBUaGlzIG1lYW5zIGEgMCBpcyByZXR1cm5lZAotICogaWYgdGhlIGxvY2sgaGFzIGFscmVhZHkgYmVlbiBhY3F1aXJlZCBieSB0aGlzIHRocmVhZCEKLSAqLwotaW50IFB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgYUxvY2ssIGludCB3YWl0ZmxhZykKLXsKLSAgICBpbnQgc3VjY2VzcyA9IDE7Ci0gICAgRFdPUkQgd2FpdFJlc3VsdDsKLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLGFMb2NrLCB3YWl0ZmxhZykpOwotCi0jaWZuZGVmIERFQlVHCi0gICAgd2FpdFJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoYUxvY2ssICh3YWl0ZmxhZyA/IElORklOSVRFIDogMCkpOwotI2Vsc2UKLSAgICAvKiBUbyBhaWQgaW4gZGVidWdnaW5nLCB3ZSByZWd1bGFybHkgd2FrZSB1cC4gIFRoaXMgYWxsb3dzIHVzIHRvCi0gICAgYnJlYWsgaW50byB0aGUgZGVidWdnZXIgKi8KLSAgICB3aGlsZSAoVFJVRSkgewotICAgICAgICB3YWl0UmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChhTG9jaywgd2FpdGZsYWcgPyAzMDAwIDogMCk7Ci0gICAgICAgIGlmICh3YWl0ZmxhZz09MCB8fCAod2FpdGZsYWcgJiYgd2FpdFJlc3VsdCA9PSBXQUlUX09CSkVDVF8wKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKHdhaXRSZXN1bHQgIT0gV0FJVF9PQkpFQ1RfMCkgewotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwOyAgICAvKiBXZSBmYWlsZWQgKi8KLSAgICB9Ci0KLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLGFMb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotCi0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBhTG9jaykKLXsKLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLGFMb2NrKSk7Ci0KLSAgICBpZiAoIVNldEV2ZW50KGFMb2NrKSkKLSAgICBkcHJpbnRmKCgiJWxkOiBDb3VsZCBub3QgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBlcnJvcjogJWxcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgYUxvY2ssIEdldExhc3RFcnJvcigpKSk7Ci19Ci0KLQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RyYWNlYmFjay5jIGIvUHl0aG9uL3RyYWNlYmFjay5jCmluZGV4IDU5YmIzZjAuLmI5Mjg5MDIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90cmFjZWJhY2suYworKysgYi9QeXRob24vdHJhY2ViYWNrLmMKQEAgLTEzLDggKzEzLDEzIEBACiAKICNkZWZpbmUgT0ZGKHgpIG9mZnNldG9mKFB5VHJhY2ViYWNrT2JqZWN0LCB4KQogCi0vKiBNZXRob2QgZnJvbSBQYXJzZXIvdG9rZW5pemVyLmMgKi8KLWV4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCk7CisjZGVmaW5lIFBVVFMoZmQsIHN0cikgd3JpdGUoZmQsIHN0ciwgc3RybGVuKHN0cikpCisjZGVmaW5lIE1BWF9TVFJJTkdfTEVOR1RIIDUwMAorI2RlZmluZSBNQVhfRlJBTUVfREVQVEggMTAwCisjZGVmaW5lIE1BWF9OVEhSRUFEUyAxMDAKKworLyogRnVuY3Rpb24gZnJvbSBQYXJzZXIvdG9rZW5pemVyLmMgKi8KK2V4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoaW50LCBQeU9iamVjdCAqKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHRiX2RpcihQeVRyYWNlYmFja09iamVjdCAqc2VsZikKQEAgLTE0Nyw2ICsxNTIsNyBAQAogICAgIGNvbnN0IGNoYXIqIGZpbGVwYXRoOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CiAKICAgICBmaWxlYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGZpbGVuYW1lKTsKICAgICBpZiAoZmlsZWJ5dGVzID09IE5VTEwpIHsKQEAgLTE5NCw3ICsyMDAsNyBAQAogICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CiAgICAgICAgIHN0cmNweShuYW1lYnVmK2xlbiwgdGFpbCk7CiAKLSAgICAgICAgYmluYXJ5ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAic3MiLCBuYW1lYnVmLCAicmIiKTsKKyAgICAgICAgYmluYXJ5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgInNzIiwgbmFtZWJ1ZiwgInJiIik7CiAgICAgICAgIGlmIChiaW5hcnkgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVzdWx0ID0gYmluYXJ5OwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwpAQCAtMjI0LDggKzIzMCwxMSBAQAogICAgIFB5T2JqZWN0ICpsaW5lb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGNoYXIgYnVmW01BWFBBVEhMRU4rMV07Ci0gICAgUHlfVU5JQ09ERSAqdSwgKnA7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisgICAgX1B5X0lERU5USUZJRVIob3Blbik7CisgICAgX1B5X0lERU5USUZJRVIoVGV4dElPV3JhcHBlcik7CiAKICAgICAvKiBvcGVuIHRoZSBmaWxlICovCiAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCkBAIC0yMzQsNyArMjQzLDcgQEAKICAgICBpbyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soImlvIik7CiAgICAgaWYgKGlvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBiaW5hcnkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJPcyIsIGZpbGVuYW1lLCAicmIiKTsKKyAgICBiaW5hcnkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiT3MiLCBmaWxlbmFtZSwgInJiIik7CiAKICAgICBpZiAoYmluYXJ5ID09IE5VTEwpIHsKICAgICAgICAgYmluYXJ5ID0gX1B5X0ZpbmRTb3VyY2VGaWxlKGZpbGVuYW1lLCBidWYsIHNpemVvZihidWYpLCBpbyk7CkBAIC0yNDYsMTAgKzI1NSwxMCBAQAogCiAgICAgLyogdXNlIHRoZSByaWdodCBlbmNvZGluZyB0byBkZWNvZGUgdGhlIGZpbGUgYXMgdW5pY29kZSAqLwogICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihiaW5hcnkpOwotICAgIGZvdW5kX2VuY29kaW5nID0gUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGZkKTsKKyAgICBmb3VuZF9lbmNvZGluZyA9IFB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZ0ZpbGVuYW1lKGZkLCBmaWxlbmFtZSk7CiAgICAgZW5jb2RpbmcgPSAoZm91bmRfZW5jb2RpbmcgIT0gTlVMTCkgPyBmb3VuZF9lbmNvZGluZyA6ICJ1dGYtOCI7CiAgICAgbHNlZWsoZmQsIDAsIDApOyAvKiBSZXNldCBwb3NpdGlvbiAqLwotICAgIGZvYiA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJUZXh0SU9XcmFwcGVyIiwgIk9zIiwgYmluYXJ5LCBlbmNvZGluZyk7CisgICAgZm9iID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfVGV4dElPV3JhcHBlciwgIk9zIiwgYmluYXJ5LCBlbmNvZGluZyk7CiAgICAgUHlfREVDUkVGKGlvKTsKICAgICBQeV9ERUNSRUYoYmluYXJ5KTsKICAgICBQeU1lbV9GUkVFKGZvdW5kX2VuY29kaW5nKTsKQEAgLTI2OCw3ICsyNzcsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb2IsICJjbG9zZSIsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsICIiKTsKICAgICBpZiAocmVzKQogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICBlbHNlCkBAIC0yODAsMTMgKzI4OSwxNiBAQAogICAgIH0KIAogICAgIC8qIHJlbW92ZSB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGxpbmUgKi8KLSAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUobGluZW9iaik7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGxpbmVvYmopOwotICAgIGZvciAocD11OyAqcCA9PSAnICcgfHwgKnAgPT0gJ1x0JyB8fCAqcCA9PSAnXDAxNCc7IHArKykKLSAgICAgICAgbGVuLS07Ci0gICAgaWYgKHUgIT0gcCkgeworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChsaW5lb2JqKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobGluZW9iaik7CisgICAgZm9yIChpPTA7IGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lb2JqKTsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoICE9ICcgJyAmJiBjaCAhPSAnXHQnICYmIGNoICE9ICdcMDE0JykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoaSkgewogICAgICAgICBQeU9iamVjdCAqdHJ1bmNhdGVkOwotICAgICAgICB0cnVuY2F0ZWQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgbGVuKTsKKyAgICAgICAgdHJ1bmNhdGVkID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaW5lb2JqLCBpLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lb2JqKSk7CiAgICAgICAgIGlmICh0cnVuY2F0ZWQpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKICAgICAgICAgICAgIGxpbmVvYmogPSB0cnVuY2F0ZWQ7CkBAIC0zMzIsNyArMzQ0LDEwIEBACiAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgIGlmIChlcnIgIT0gMCkKICAgICAgICAgcmV0dXJuIGVycjsKLSAgICByZXR1cm4gX1B5X0Rpc3BsYXlTb3VyY2VMaW5lKGYsIGZpbGVuYW1lLCBsaW5lbm8sIDQpOworICAgIC8qIGlnbm9yZSBlcnJvcnMgc2luY2Ugd2UgY2FuJ3QgcmVwb3J0IHRoZW0sIGNhbiB3ZT8gKi8KKyAgICBpZiAoX1B5X0Rpc3BsYXlTb3VyY2VMaW5lKGYsIGZpbGVuYW1lLCBsaW5lbm8sIDQpKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIHJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTQwMiwzICs0MTcsMjUwIEBACiAgICAgICAgIGVyciA9IHRiX3ByaW50aW50ZXJuYWwoKFB5VHJhY2ViYWNrT2JqZWN0ICopdiwgZiwgbGltaXQpOwogICAgIHJldHVybiBlcnI7CiB9CisKKy8qIFJldmVyc2UgYSBzdHJpbmcuIEZvciBleGFtcGxlLCAiYWJjZCIgYmVjb21lcyAiZGNiYSIuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCityZXZlcnNlX3N0cmluZyhjaGFyICp0ZXh0LCBjb25zdCBzaXplX3QgbGVuKQoreworICAgIGNoYXIgdG1wOworICAgIHNpemVfdCBpLCBqOworICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgIGZvciAoaT0wLCBqPWxlbi0xOyBpIDwgajsgaSsrLCBqLS0pIHsKKyAgICAgICAgdG1wID0gdGV4dFtpXTsKKyAgICAgICAgdGV4dFtpXSA9IHRleHRbal07CisgICAgICAgIHRleHRbal0gPSB0bXA7CisgICAgfQorfQorCisvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgOTk5OTk5XSB0byBkZWNpbWFsLAorICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2RlY2ltYWwoaW50IGZkLCBpbnQgdmFsdWUpCit7CisgICAgY2hhciBidWZmZXJbN107CisgICAgaW50IGxlbjsKKyAgICBpZiAodmFsdWUgPCAwIHx8IDk5OTk5OSA8IHZhbHVlKQorICAgICAgICByZXR1cm47CisgICAgbGVuID0gMDsKKyAgICBkbyB7CisgICAgICAgIGJ1ZmZlcltsZW5dID0gJzAnICsgKHZhbHVlICUgMTApOworICAgICAgICB2YWx1ZSAvPSAxMDsKKyAgICAgICAgbGVuKys7CisgICAgfSB3aGlsZSAodmFsdWUpOworICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKKyAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworfQorCisvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMHhmZmZmZmZmZl0gdG8gaGV4ZGVjaW1hbCBvZiAnd2lkdGgnIGRpZ2l0cywKKyAgIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBmaWxlIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9oZXhhZGVjaW1hbChpbnQgd2lkdGgsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIGludCBmZCkKK3sKKyAgICBpbnQgbGVuOworICAgIGNoYXIgYnVmZmVyW3NpemVvZih1bnNpZ25lZCBsb25nKSAqIDIgKyAxXTsKKyAgICBsZW4gPSAwOworICAgIGRvIHsKKyAgICAgICAgYnVmZmVyW2xlbl0gPSBQeV9oZXhkaWdpdHNbdmFsdWUgJiAxNV07CisgICAgICAgIHZhbHVlID4+PSA0OworICAgICAgICBsZW4rKzsKKyAgICB9IHdoaWxlIChsZW4gPCB3aWR0aCB8fCB2YWx1ZSk7CisgICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOworICAgIHdyaXRlKGZkLCBidWZmZXIsIGxlbik7Cit9CisKKy8qIFdyaXRlIGFuIHVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZmQgdXNpbmcgYXNjaWkrYmFja3NsYXNocmVwbGFjZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfYXNjaWkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCkKK3sKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopdGV4dDsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgaW50IHRydW5jYXRlZDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhID0gTlVMTDsKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyAgICBQeV9VQ1M0IGNoOworCisgICAgc2l6ZSA9IGFzY2lpLT5sZW5ndGg7CisgICAga2luZCA9IGFzY2lpLT5zdGF0ZS5raW5kOworICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgeworICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQorICAgICAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopdGV4dCkgKyAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kil0ZXh0KSArIDE7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgZGF0YSA9ICgoUHlVbmljb2RlT2JqZWN0ICopdGV4dCktPmRhdGEuYW55OworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOworICAgIH0KKworICAgIGlmIChNQVhfU1RSSU5HX0xFTkdUSCA8IHNpemUpIHsKKyAgICAgICAgc2l6ZSA9IE1BWF9TVFJJTkdfTEVOR1RIOworICAgICAgICB0cnVuY2F0ZWQgPSAxOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHRydW5jYXRlZCA9IDA7CisKKyAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoID0gd3N0cltpXTsKKyAgICAgICAgaWYgKGNoIDwgMTI4KSB7CisgICAgICAgICAgICBjaGFyIGMgPSAoY2hhciljaDsKKyAgICAgICAgICAgIHdyaXRlKGZkLCAmYywgMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweGZmKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiXFx4Iik7CisgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKDIsIGNoLCBmZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweGZmZmYpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICJcXHUiKTsKKyAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoNCwgY2gsIGZkKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICJcXFUiKTsKKyAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoOCwgY2gsIGZkKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodHJ1bmNhdGVkKQorICAgICAgICBQVVRTKGZkLCAiLi4uIik7Cit9CisKKy8qIFdyaXRlIGEgZnJhbWUgaW50byB0aGUgZmlsZSBmZDogIkZpbGUgInh4eCIsIGxpbmUgeHh4IGluIHh4eCIuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2ZyYW1lKGludCBmZCwgUHlGcmFtZU9iamVjdCAqZnJhbWUpCit7CisgICAgUHlDb2RlT2JqZWN0ICpjb2RlOworICAgIGludCBsaW5lbm87CisKKyAgICBjb2RlID0gZnJhbWUtPmZfY29kZTsKKyAgICBQVVRTKGZkLCAiICBGaWxlICIpOworICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fZmlsZW5hbWUgIT0gTlVMTAorICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQorICAgIHsKKyAgICAgICAgd3JpdGUoZmQsICJcIiIsIDEpOworICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19maWxlbmFtZSk7CisgICAgICAgIHdyaXRlKGZkLCAiXCIiLCAxKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisgICAgfQorCisgICAgLyogUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgd2FzIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuNy4wIGFuZCAzLjIuMCAqLworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoY29kZSwgZnJhbWUtPmZfbGFzdGkpOworICAgIFBVVFMoZmQsICIsIGxpbmUgIik7CisgICAgZHVtcF9kZWNpbWFsKGZkLCBsaW5lbm8pOworICAgIFBVVFMoZmQsICIgaW4gIik7CisKKyAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX25hbWUgIT0gTlVMTAorICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fbmFtZSkpCisgICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX25hbWUpOworICAgIGVsc2UKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworCisgICAgd3JpdGUoZmQsICJcbiIsIDEpOworfQorCitzdGF0aWMgdm9pZAorZHVtcF90cmFjZWJhY2soaW50IGZkLCBQeVRocmVhZFN0YXRlICp0c3RhdGUsIGludCB3cml0ZV9oZWFkZXIpCit7CisgICAgUHlGcmFtZU9iamVjdCAqZnJhbWU7CisgICAgdW5zaWduZWQgaW50IGRlcHRoOworCisgICAgaWYgKHdyaXRlX2hlYWRlcikKKyAgICAgICAgUFVUUyhmZCwgIlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKKworICAgIGZyYW1lID0gX1B5VGhyZWFkU3RhdGVfR2V0RnJhbWUodHN0YXRlKTsKKyAgICBpZiAoZnJhbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVwdGggPSAwOworICAgIHdoaWxlIChmcmFtZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChNQVhfRlJBTUVfREVQVEggPD0gZGVwdGgpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICIgIC4uLlxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5RnJhbWVfQ2hlY2soZnJhbWUpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGR1bXBfZnJhbWUoZmQsIGZyYW1lKTsKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+Zl9iYWNrOworICAgICAgICBkZXB0aCsrOworICAgIH0KK30KKwordm9pZAorX1B5X0R1bXBUcmFjZWJhY2soaW50IGZkLCBQeVRocmVhZFN0YXRlICp0c3RhdGUpCit7CisgICAgZHVtcF90cmFjZWJhY2soZmQsIHRzdGF0ZSwgMSk7Cit9CisKKy8qIFdyaXRlIHRoZSB0aHJlYWQgaWRlbnRpZmllciBpbnRvIHRoZSBmaWxlICdmZCc6ICJDdXJyZW50IHRocmVhZCAweEhISEg6XCIgaWYKKyAgIGlzX2N1cnJlbnQgaXMgdHJ1ZSwgIlRocmVhZCAweEhISEg6XG4iIG90aGVyd2lzZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK3dyaXRlX3RocmVhZF9pZChpbnQgZmQsIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgaW50IGlzX2N1cnJlbnQpCit7CisgICAgaWYgKGlzX2N1cnJlbnQpCisgICAgICAgIFBVVFMoZmQsICJDdXJyZW50IHRocmVhZCAweCIpOworICAgIGVsc2UKKyAgICAgICAgUFVUUyhmZCwgIlRocmVhZCAweCIpOworICAgIGR1bXBfaGV4YWRlY2ltYWwoc2l6ZW9mKGxvbmcpKjIsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBmZCk7CisgICAgUFVUUyhmZCwgIjpcbiIpOworfQorCitjb25zdCBjaGFyKgorX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIHVuc2lnbmVkIGludCBudGhyZWFkczsKKworICAgIC8qIEdldCB0aGUgY3VycmVudCBpbnRlcnByZXRlciBmcm9tIHRoZSBjdXJyZW50IHRocmVhZCAqLworICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIHRocmVhZCBoZWFkIHN0YXRlIjsKKworICAgIC8qIER1bXAgdGhlIHRyYWNlYmFjayBvZiBlYWNoIHRocmVhZCAqLworICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CisgICAgbnRocmVhZHMgPSAwOworICAgIGRvCisgICAgeworICAgICAgICBpZiAobnRocmVhZHMgIT0gMCkKKyAgICAgICAgICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKKyAgICAgICAgaWYgKG50aHJlYWRzID49IE1BWF9OVEhSRUFEUykgeworICAgICAgICAgICAgUFVUUyhmZCwgIi4uLlxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdGhyZWFkKTsKKyAgICAgICAgZHVtcF90cmFjZWJhY2soZmQsIHRzdGF0ZSwgMCk7CisgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOworICAgICAgICBudGhyZWFkcysrOworICAgIH0gd2hpbGUgKHRzdGF0ZSAhPSBOVUxMKTsKKworICAgIHJldHVybiBOVUxMOworfQorCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggYjEzODA2Yi4uY2VmNzM4NCAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLVRoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy4yLjMKK1RoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy4zLjAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLApAQCAtMTUsNiArMTUsOCBAQAogCiBPbiBVbml4LCBMaW51eCwgQlNELCBPU1gsIGFuZCBDeWd3aW46CiAKK05ldyB0ZXh0CisKICAgICAuL2NvbmZpZ3VyZQogICAgIG1ha2UKICAgICBtYWtlIHRlc3QKQEAgLTUwLDkgKzUyLDkgQEAKIC0tLS0tLS0tLS0KIAogV2UgdHJ5IHRvIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuMiIgZG9jdW1lbnQsIGZvdW5kIGF0CitQeXRob24gMy4zIiBkb2N1bWVudCwgZm91bmQgYXQKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4yL3doYXRzbmV3LzMuMi5odG1sCisgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjMvd2hhdHNuZXcvMy4zLmh0bWwKIAogRm9yIGEgbW9yZSBkZXRhaWxlZCBjaGFuZ2UgbG9nLCByZWFkIE1pc2MvTkVXUyAodGhvdWdoIHRoaXMgZmlsZSwgdG9vLCBpcwogaW5jb21wbGV0ZSwgYW5kIGFsc28gZG9lc24ndCBsaXN0IGFueXRoaW5nIG1lcmdlZCBpbiBmcm9tIHRoZSAyLjcgcmVsZWFzZSB1bmRlcgpAQCAtNjUsOSArNjcsOSBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi1Eb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy4yIGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKK0RvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjMgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvCisgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjMvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtODUsMTggKzg3LDE2IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4yL2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjMvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwogLS0tLS0tLQogCi1UbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoaXMgcnVucwotdGhlIHRlc3Qgc2V0IHR3aWNlIChvbmNlIHdpdGggbm8gY29tcGlsZWQgZmlsZXMsIG9uY2Ugd2l0aCB0aGUgY29tcGlsZWQgZmlsZXMKLWxlZnQgYnkgdGhlIHByZXZpb3VzIHRlc3QgcnVuKS4gIFRoZSB0ZXN0IHNldCBwcm9kdWNlcyBzb21lIG91dHB1dC4gIFlvdSBjYW4KLWdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzIGFib3V0IHNraXBwZWQgdGVzdHMgZHVlIHRvIG9wdGlvbmFsIGZlYXR1cmVzIHdoaWNoCi1jYW4ndCBiZSBpbXBvcnRlZC4gIElmIGEgbWVzc2FnZSBpcyBwcmludGVkIGFib3V0IGEgZmFpbGVkIHRlc3Qgb3IgYSB0cmFjZWJhY2sKLW9yIGNvcmUgZHVtcCBpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgorVG8gdGVzdCB0aGUgaW50ZXJwcmV0ZXIsIHR5cGUgIm1ha2UgdGVzdCIgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuICBUaGUgdGVzdAorc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbiBnZW5lcmFsbHkgaWdub3JlIHRoZSBtZXNzYWdlcyBhYm91dCBza2lwcGVkCit0ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2ggY2FuJ3QgYmUgaW1wb3J0ZWQuICBJZiBhIG1lc3NhZ2UgaXMgcHJpbnRlZAorYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjayBvciBjb3JlIGR1bXAgaXMgcHJvZHVjZWQsIHNvbWV0aGluZyBpcyB3cm9uZy4KIAogQnkgZGVmYXVsdCwgdGVzdHMgYXJlIHByZXZlbnRlZCBmcm9tIG92ZXJ1c2luZyByZXNvdXJjZXMgbGlrZSBkaXNrIHNwYWNlIGFuZAogbWVtb3J5LiAgVG8gZW5hYmxlIHRoZXNlIHRlc3RzLCBydW4gIm1ha2UgdGVzdGFsbCIuCkBAIC0xMjUsOCArMTI1LDggQEAKIEluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIgdmVyc2lvbnMgdXNpbmcKICJtYWtlIGFsdGluc3RhbGwiLgogCi1Gb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi41LCAyLjYgYW5kIDMuMiB3aXRoIDIuNiBiZWluZyB0aGUKLXByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjYgYnVpbGQgZGlyZWN0b3J5CitGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuMyB3aXRoIDIuNyBiZWluZyB0aGUKK3ByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjcgYnVpbGQgZGlyZWN0b3J5CiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgaW4gdGhlIG90aGVycy4KIAogCkBAIC0xNjEsNyArMTYxLDcgQEAKIFJlbGVhc2UgU2NoZWR1bGUKIC0tLS0tLS0tLS0tLS0tLS0KIAotU2VlIFBFUCAzOTIgZm9yIHJlbGVhc2UgZGV0YWlsczogaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzkyLworU2VlIFBFUCAzOTggZm9yIHJlbGVhc2UgZGV0YWlsczogaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzk4LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvUkVBRE1FIGIvVG9vbHMvUkVBRE1FCmluZGV4IGMxZjg5YmEuLjBkOTYxZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1JFQURNRQorKysgYi9Ub29scy9SRUFETUUKQEAgLTMsNyArMyw3IEBACiAKIGJ1aWxkYm90ICAgICAgICBCYXRjaGZpbGVzIGZvciBydW5uaW5nIG9uIFdpbmRvd3MgYnVpbGRzbGF2ZXMuCiAKLWNjYmVuY2ggICAgICAgICBBIFB5dGhvbiBjb25jdXJyZW5jeSBiZW5jaG1hcmsuCitjY2JlbmNoICAgICAgICAgQSBQeXRob24gdGhyZWFkcy1iYXNlZCBjb25jdXJyZW5jeSBiZW5jaG1hcmsuICgqKQogCiBkZW1vICAgICAgICAgICAgU2V2ZXJhbCBQeXRob24gcHJvZ3JhbW1pbmcgZGVtb3MuCiAKQEAgLTE3LDEzICsxNywxMyBAQAogICAgICAgICAgICAgICAgIGFuZCBtc2dmbXQucHkgZ2VuZXJhdGVzIGEgYmluYXJ5IG1lc3NhZ2UgY2F0YWxvZwogICAgICAgICAgICAgICAgIGZyb20gYSBjYXRhbG9nIGluIHRleHQgZm9ybWF0LgogCi1pb2JlbmNoICAgICAgICAgQmVuY2htYXJrIGZvciB0aGUgbmV3IFB5dGhvbiBJL08gc3lzdGVtLgoraW9iZW5jaCAgICAgICAgIEJlbmNobWFyayBmb3IgdGhlIG5ldyBQeXRob24gSS9PIHN5c3RlbS4gKCopCiAKIG1zaSAgICAgICAgICAgICBTdXBwb3J0IGZvciBwYWNrYWdpbmcgUHl0aG9uIGFzIGFuIE1TSSBwYWNrYWdlIG9uIFdpbmRvd3MuCiAKIHBhcnNlciAgICAgICAgICBVbi1wYXJzaW5nIHRvb2wgdG8gZ2VuZXJhdGUgY29kZSBmcm9tIGFuIEFTVC4KIAotcHliZW5jaCAgICAgICAgIENvbXByZWhlbnNpdmUgUHl0aG9uIGJlbmNobWFya2luZyBzdWl0ZS4KK3B5YmVuY2ggICAgICAgICBMb3ctbGV2ZWwgYmVuY2htYXJraW5nIGZvciB0aGUgUHl0aG9uIGV2YWx1YXRpb24gbG9vcC4gKCopCiAKIHB5bmNoZSAgICAgICAgICBBIFRraW50ZXItYmFzZWQgY29sb3IgZWRpdG9yLgogCkBAIC0zMiw2ICszMiw5IEBACiAgICAgICAgICAgICAgICAgdGFicyBhbmQgc3BhY2VzLCBhbmQgMnRvMywgd2hpY2ggY29udmVydHMgUHl0aG9uIDIgY29kZQogICAgICAgICAgICAgICAgIHRvIFB5dGhvbiAzIGNvZGUuCiAKK3N0cmluZ2JlbmNoICAgICBBIHN1aXRlIG9mIG1pY3JvLWJlbmNobWFya3MgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyBvbgorICAgICAgICAgICAgICAgIHN0cmluZ3MgKGJvdGggOC1iaXQgYW5kIHVuaWNvZGUpLiAoKikKKwogdGVzdDJ0bzMgICAgICAgIEEgZGVtb25zdHJhdGlvbiBvZiBob3cgdG8gdXNlIDJ0bzMgdHJhbnNwYXJlbnRseSBpbiBzZXR1cC5weS4KIAogdW5pY29kZSAgICAgICAgIFRvb2xzIGZvciBnZW5lcmF0aW5nIHVuaWNvZGVkYXRhIGFuZCBjb2RlY3MgZnJvbSB1bmljb2RlLm9yZwpAQCAtNDAsMyArNDMsNiBAQAogCiB1bml0dGVzdGd1aSAgICAgQSBUa2ludGVyIGJhc2VkIEdVSSB0ZXN0IHJ1bm5lciBmb3IgdW5pdHRlc3QsIHdpdGggdGVzdAogICAgICAgICAgICAgICAgIGRpc2NvdmVyeS4KKworCisoKikgQSBnZW5lcmljIGJlbmNobWFyayBzdWl0ZSBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgYXQgaHR0cDovL2hnLnB5dGhvbi5vcmcvYmVuY2htYXJrcy8KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAppbmRleCA4NzEzYjM4Li43ZWU3YjJkIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CkBAIC0xLDcgKzEsNyBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4KLXNldCBIT1NUX1BZVEhPTj0iJUNEJVxQQ2J1aWxkXGFtZDY0XHB5dGhvbl9kLmV4ZSIKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC1hbWQ2NC5iYXQKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcY2xlYW4tYW1kNjQuYmF0Ci12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxraWxsX3B5dGhvbi52Y3Byb2ogIkRlYnVnfHg2NCIgJiYgUENidWlsZFxhbWQ2NFxraWxsX3B5dGhvbl9kLmV4ZQotdmNidWlsZCBQQ2J1aWxkXHBjYnVpbGQuc2xuICJEZWJ1Z3x4NjQiCittc2J1aWxkIFBDYnVpbGRca2lsbF9weXRob24udmN4cHJvaiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorUENidWlsZFxhbWQ2NFxraWxsX3B5dGhvbl9kLmV4ZQorbXNidWlsZCBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09eDY0CmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQgYi9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKaW5kZXggYWIzZWE3ZC4uYzkzY2ZkNSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdApAQCAtMSw3ICsxLDggQEAKIEByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwuYmF0Ci1jYWxsICIlVlM5MENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGNsZWFuLmJhdAotdmNidWlsZCAvdXNlZW52IFBDYnVpbGRca2lsbF9weXRob24udmNwcm9qICJEZWJ1Z3xXaW4zMiIgJiYgUENidWlsZFxraWxsX3B5dGhvbl9kLmV4ZQotdmNidWlsZCAvdXNlZW52IFBDYnVpbGRccGNidWlsZC5zbG4gIkRlYnVnfFdpbjMyIgorbXNidWlsZCBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjeHByb2ogL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14ODYKK1BDYnVpbGRca2lsbF9weXRob25fZC5leGUKK21zYnVpbGQgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtPVdpbjMyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAppbmRleCA0NDMwY2I4Li5hZTkzZTY3IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CkBAIC0yLDEwICsyLDEwIEBACiAKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQKIEByZW0gYnVpbGQgcmVsZWFzZSB2ZXJzaW9ucyBvZiB0aGluZ3MKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiAKIEByZW0gYnVpbGQgUHl0aG9uCi12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxwY2J1aWxkLnNsbiAiUmVsZWFzZXxXaW4zMiIKK21zYnVpbGQgL3A6dXNlZW52PXRydWUgUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09V2luMzIKIAogQHJlbSBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbgogYmFzaC5leGUgLWMgJ2NkIERvYzttYWtlIFBZVEhPTj1weXRob24yLjUgdXBkYXRlIGh0bWxoZWxwJwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CmluZGV4IDcxNTgwNWEuLjI0NjYwYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKQEAgLTEsMTAgKzEsMTAgQEAKIEByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImNsZWFuIiBzdGVwLgotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIEBlY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4KIGRlbCAvcyBMaWJcKi5weWMgTGliXCoucHlvCiBAZWNobyBEZWxldGluZyB0ZXN0IGxlZnRvdmVycyAuLi4KIHJtZGlyIC9zIC9xIGJ1aWxkCiBjZCBQQ2J1aWxkCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiUmVsZWFzZXx4NjQiCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiRGVidWd8eDY0IgorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybVRhcmdldD14NjQKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAogY2QgLi4KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAppbmRleCAwYzA0YjhlLi4yMThmYWNjIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CkBAIC0xLDggKzEsOCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY2xlYW4iIHN0ZXAuCi1jYWxsICIlVlM5MENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgogQGVjaG8gRGVsZXRpbmcgdGVzdCBsZWZ0b3ZlcnMgLi4uCiBybWRpciAvcyAvcSBidWlsZAogY2QgUENidWlsZAotdmNidWlsZCAvY2xlYW4gcGNidWlsZC5zbG4gIlJlbGVhc2V8V2luMzIiCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiRGVidWd8V2luMzIiCittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg4NgorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDg2CiBjZCAuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmluZGV4IDk1NDIzOGUuLmQyZmYyNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKQEAgLTIsMjAgKzIsMjAgQEAKIAogQHJlbSBBc3N1bWUgd2Ugc3RhcnQgaW5zaWRlIHRoZSBQeXRob24gc291cmNlIGRpcmVjdG9yeQogY2FsbCAiVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwtY29tbW9uLmJhdCIKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKK2NhbGwgIiVWUzEwMENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CiAKIGlmIG5vdCBleGlzdCB0Y2x0azY0XGJpblx0Y2w4NWcuZGxsICgKLSAgICBjZCB0Y2wtOC41LjkuMFx3aW4KKyAgICBjZCB0Y2wtOC41LjExLjBcd2luCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBjbGVhbiBhbGwKICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCiBpZiBub3QgZXhpc3QgdGNsdGs2NFxiaW5cdGs4NWcuZGxsICgKLSAgICBjZCB0ay04LjUuOS4wXHdpbiAgICAKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgY2xlYW4KLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgYWxsCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGluc3RhbGwKKyAgICBjZCB0ay04LjUuMTEuMFx3aW4gICAgCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBjbGVhbgorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgYWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBpbnN0YWxsCiAgICAgY2QgLi5cLi4KICkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQKaW5kZXggMjE2NWI4YS4uNGU5ZmU0MSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0CkBAIC0xNCw4ICsxNCw4IEBACiBAcmVtIGlmIGV4aXN0IHRrOC40LjE2IHJkIC9zL3EgdGs4LjQuMTYKIEByZW0gaWYgZXhpc3QgdGstOC40LjE4LjEgcmQgL3MvcSB0ay04LjQuMTguMQogQHJlbSBpZiBleGlzdCBkYi00LjQuMjAgcmQgL3MvcSBkYi00LjQuMjAKLUByZW0gaWYgZXhpc3Qgb3BlbnNzbC0xLjAuMGogcmQgL3MvcSBvcGVuc3NsLTEuMC4wagotQHJlbSBpZiBleGlzdCBzcWxpdGUtMy43LjQgcmQgL3MvcSBzcWxpdGUtMy43LjQgICAgCitAcmVtIGlmIGV4aXN0IG9wZW5zc2wtMS4wLjFjIHJkIC9zL3Egb3BlbnNzbC0xLjAuMWMKK0ByZW0gaWYgZXhpc3Qgc3FsaXRlLTMuNy4xMiByZCAvcy9xIHNxbGl0ZS0zLjcuMTIgICAgCiAKIEByZW0gYnppcAogaWYgbm90IGV4aXN0IGJ6aXAyLTEuMC42ICgKQEAgLTI0LDE3ICsyNCwyNSBAQAogKQogCiBAcmVtIE9wZW5TU0wKLWlmIG5vdCBleGlzdCBvcGVuc3NsLTEuMC4waiBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4wagoraWYgbm90IGV4aXN0IG9wZW5zc2wtMS4wLjFjICgKKyAgICByZCAvcy9xIG9wZW5zc2wtMS4wLjBqCisgICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvb3BlbnNzbC0xLjAuMWMKKykKIAogQHJlbSB0Y2wvdGsKLWlmIG5vdCBleGlzdCB0Y2wtOC41LjkuMCAoCitpZiBub3QgZXhpc3QgdGNsLTguNS4xMS4wICgKICAgIHJkIC9zL3EgdGNsdGsgdGNsdGs2NAotICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGNsLTguNS45LjAKKyAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RjbC04LjUuMTEuMAogKQotaWYgbm90IGV4aXN0IHRrLTguNS45LjAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGstOC41LjkuMAoraWYgbm90IGV4aXN0IHRrLTguNS4xMS4wIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3RrLTguNS4xMS4wCiAKIEByZW0gc3FsaXRlMwotaWYgbm90IGV4aXN0IHNxbGl0ZS0zLjcuNCAoCi0gIHJkIC9zL3Egc3FsaXRlLXNvdXJjZS0zLjYuMjEKLSAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvc3FsaXRlLTMuNy40CitpZiBub3QgZXhpc3Qgc3FsaXRlLTMuNy4xMiAoCisgIHJkIC9zL3Egc3FsaXRlLXNvdXJjZS0zLjcuNAorICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9zcWxpdGUtMy43LjEyCispCisKK0ByZW0gbHptYQoraWYgbm90IGV4aXN0IHh6LTUuMC4zICgKKyAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwveHotNS4wLjMKICkKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAppbmRleCBlOTU4ZmQ2Li5lZDVjMTBlIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CkBAIC0yLDIwICsyLDIwIEBACiAKIEByZW0gQXNzdW1lIHdlIHN0YXJ0IGluc2lkZSB0aGUgUHl0aG9uIHNvdXJjZSBkaXJlY3RvcnkKIGNhbGwgIlRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLWNvbW1vbi5iYXQiCi1jYWxsICIlVlM5MENPTU5UT09MUyVcdnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVx2c3ZhcnMzMi5iYXQiCiAKIGlmIG5vdCBleGlzdCB0Y2x0a1xiaW5cdGNsODVnLmRsbCAoCiAgICAgQHJlbSBhbGwgYW5kIGluc3RhbGwgbmVlZCB0byBiZSBzZXBhcmF0ZSBpbnZvY2F0aW9ucywgb3RoZXJ3aXNlIG5tYWtlaGxwIGlzIG5vdCBmb3VuZCBvbiBpbnN0YWxsCi0gICAgY2QgdGNsLTguNS45LjBcd2luCisgICAgY2QgdGNsLTguNS4xMS4wXHdpbgogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBjbGVhbiBhbGwgCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCiBpZiBub3QgZXhpc3QgdGNsdGtcYmluXHRrODVnLmRsbCAoCi0gICAgY2QgdGstOC41LjkuMFx3aW4gICAgCi0gICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgY2xlYW4KLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBhbGwKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBpbnN0YWxsCisgICAgY2QgdGstOC41LjExLjBcd2luCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGFsbAorICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBpbnN0YWxsCiAgICAgY2QgLi5cLi4KICkKZGlmZiAtLWdpdCBhL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weSBiL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weQppbmRleCA5ZjcxMThmLi42MGNlYzNlIDEwMDY0NAotLS0gYS9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkKKysrIGIvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5CkBAIC0xMCw3ICsxMCw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNDM1LDcwICs0MzQsNzAgQEAKIGRlZiBydW5fYmFuZHdpZHRoX3Rlc3QoZnVuYywgYXJncywgbnRocmVhZHMpOgogICAgICMgQ3JlYXRlIGEgbGlzdGVuaW5nIHNvY2tldCB0byByZWNlaXZlIHRoZSBwYWNrZXRzLiBXZSB1c2UgVURQIHdoaWNoIHNob3VsZAogICAgICMgYmUgcGFpbmxlc3NseSBjcm9zcy1wbGF0Zm9ybS4KLSAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pCi0gICAgc29jay5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCi0gICAgYWRkciA9IHNvY2suZ2V0c29ja25hbWUoKQorICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfREdSQU0pIGFzIHNvY2s6CisgICAgICAgIHNvY2suYmluZCgoIjEyNy4wLjAuMSIsIDApKQorICAgICAgICBhZGRyID0gc29jay5nZXRzb2NrbmFtZSgpCiAKLSAgICBkdXJhdGlvbiA9IEJBTkRXSURUSF9EVVJBVElPTgotICAgIHBhY2tldF9zaXplID0gQkFORFdJRFRIX1BBQ0tFVF9TSVpFCi0KLSAgICByZXN1bHRzID0gW10KLSAgICB0aHJlYWRzID0gW10KLSAgICBlbmRfZXZlbnQgPSBbXQotICAgIHN0YXJ0X2NvbmQgPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICBzdGFydGVkID0gRmFsc2UKLSAgICBpZiBudGhyZWFkcyA+IDA6Ci0gICAgICAgICMgV2FybSB1cAotICAgICAgICBmdW5jKCphcmdzKQorICAgICAgICBkdXJhdGlvbiA9IEJBTkRXSURUSF9EVVJBVElPTgorICAgICAgICBwYWNrZXRfc2l6ZSA9IEJBTkRXSURUSF9QQUNLRVRfU0laRQogCiAgICAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgICBsb29wID0gVGltZWRMb29wKGZ1bmMsIGFyZ3MpCi0gICAgICAgIHJlYWR5ID0gW10KLSAgICAgICAgcmVhZHlfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQorICAgICAgICB0aHJlYWRzID0gW10KKyAgICAgICAgZW5kX2V2ZW50ID0gW10KKyAgICAgICAgc3RhcnRfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQorICAgICAgICBzdGFydGVkID0gRmFsc2UKKyAgICAgICAgaWYgbnRocmVhZHMgPiAwOgorICAgICAgICAgICAgIyBXYXJtIHVwCisgICAgICAgICAgICBmdW5jKCphcmdzKQogCi0gICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICAgICAgbG9vcCA9IFRpbWVkTG9vcChmdW5jLCBhcmdzKQorICAgICAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICAgICAgcmVhZHlfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQorCisgICAgICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICAgICAgd2l0aCByZWFkeV9jb25kOgorICAgICAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfY29uZC5ub3RpZnkoKQorICAgICAgICAgICAgICAgIHdpdGggc3RhcnRfY29uZDoKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHN0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9jb25kLndhaXQoKQorICAgICAgICAgICAgICAgIGxvb3Aoc3RhcnRfdGltZSwgZHVyYXRpb24gKiAxLjUsIGVuZF9ldmVudCwgZG9feWllbGQ9RmFsc2UpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG50aHJlYWRzKToKKyAgICAgICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW4pKQorICAgICAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgICAgICAgICB0LnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgIyBXYWl0IGZvciB0aHJlYWRzIHRvIGJlIHJlYWR5CiAgICAgICAgICAgICB3aXRoIHJlYWR5X2NvbmQ6Ci0gICAgICAgICAgICAgICAgcmVhZHkuYXBwZW5kKE5vbmUpCi0gICAgICAgICAgICAgICAgcmVhZHlfY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgd2l0aCBzdGFydF9jb25kOgotICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzdGFydGVkOgotICAgICAgICAgICAgICAgICAgICBzdGFydF9jb25kLndhaXQoKQotICAgICAgICAgICAgbG9vcChzdGFydF90aW1lLCBkdXJhdGlvbiAqIDEuNSwgZW5kX2V2ZW50LCBkb195aWVsZD1GYWxzZSkKKyAgICAgICAgICAgICAgICB3aGlsZSBsZW4ocmVhZHkpIDwgbnRocmVhZHM6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQud2FpdCgpCiAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnRocmVhZHMpOgotICAgICAgICAgICAgdGhyZWFkcy5hcHBlbmQodGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuKSkKLSAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKLSAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCi0gICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgIyBXYWl0IGZvciB0aHJlYWRzIHRvIGJlIHJlYWR5Ci0gICAgICAgIHdpdGggcmVhZHlfY29uZDoKLSAgICAgICAgICAgIHdoaWxlIGxlbihyZWFkeSkgPCBudGhyZWFkczoKLSAgICAgICAgICAgICAgICByZWFkeV9jb25kLndhaXQoKQotCi0gICAgIyBSdW4gdGhlIGNsaWVudCBhbmQgd2FpdCBmb3IgdGhlIGZpcnN0IHBhY2tldCB0byBhcnJpdmUgYmVmb3JlCi0gICAgIyB1bmJsb2NraW5nIHRoZSBiYWNrZ3JvdW5kIHRocmVhZHMuCi0gICAgcHJvY2VzcyA9IHJ1bl9iYW5kd2lkdGhfY2xpZW50KGFkZHI9YWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemU9cGFja2V0X3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uPWR1cmF0aW9uKQotICAgIF90aW1lID0gdGltZS50aW1lCi0gICAgIyBUaGlzIHdpbGwgYWxzbyB3YWl0IGZvciB0aGUgcGFyZW50IHRvIGJlIHJlYWR5Ci0gICAgcyA9IF9yZWN2KHNvY2ssIHBhY2tldF9zaXplKQotICAgIHJlbW90ZV9hZGRyID0gZXZhbChzLnBhcnRpdGlvbignIycpWzBdKQotCi0gICAgd2l0aCBzdGFydF9jb25kOgotICAgICAgICBzdGFydF90aW1lID0gX3RpbWUoKQotICAgICAgICBzdGFydGVkID0gVHJ1ZQotICAgICAgICBzdGFydF9jb25kLm5vdGlmeShudGhyZWFkcykKLQotICAgIG4gPSAwCi0gICAgZmlyc3RfdGltZSA9IE5vbmUKLSAgICB3aGlsZSBub3QgZW5kX2V2ZW50IGFuZCBCV19FTkQgbm90IGluIHM6Ci0gICAgICAgIF9zZW5kdG8oc29jaywgcywgcmVtb3RlX2FkZHIpCisgICAgICAgICMgUnVuIHRoZSBjbGllbnQgYW5kIHdhaXQgZm9yIHRoZSBmaXJzdCBwYWNrZXQgdG8gYXJyaXZlIGJlZm9yZQorICAgICAgICAjIHVuYmxvY2tpbmcgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KKyAgICAgICAgcHJvY2VzcyA9IHJ1bl9iYW5kd2lkdGhfY2xpZW50KGFkZHI9YWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9zaXplPXBhY2tldF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249ZHVyYXRpb24pCisgICAgICAgIF90aW1lID0gdGltZS50aW1lCisgICAgICAgICMgVGhpcyB3aWxsIGFsc28gd2FpdCBmb3IgdGhlIHBhcmVudCB0byBiZSByZWFkeQogICAgICAgICBzID0gX3JlY3Yoc29jaywgcGFja2V0X3NpemUpCi0gICAgICAgIGlmIGZpcnN0X3RpbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGZpcnN0X3RpbWUgPSBfdGltZSgpCi0gICAgICAgIG4gKz0gMQotICAgIGVuZF90aW1lID0gX3RpbWUoKQorICAgICAgICByZW1vdGVfYWRkciA9IGV2YWwocy5wYXJ0aXRpb24oJyMnKVswXSkKKworICAgICAgICB3aXRoIHN0YXJ0X2NvbmQ6CisgICAgICAgICAgICBzdGFydF90aW1lID0gX3RpbWUoKQorICAgICAgICAgICAgc3RhcnRlZCA9IFRydWUKKyAgICAgICAgICAgIHN0YXJ0X2NvbmQubm90aWZ5KG50aHJlYWRzKQorCisgICAgICAgIG4gPSAwCisgICAgICAgIGZpcnN0X3RpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCBlbmRfZXZlbnQgYW5kIEJXX0VORCBub3QgaW4gczoKKyAgICAgICAgICAgIF9zZW5kdG8oc29jaywgcywgcmVtb3RlX2FkZHIpCisgICAgICAgICAgICBzID0gX3JlY3Yoc29jaywgcGFja2V0X3NpemUpCisgICAgICAgICAgICBpZiBmaXJzdF90aW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZmlyc3RfdGltZSA9IF90aW1lKCkKKyAgICAgICAgICAgIG4gKz0gMQorICAgICAgICBlbmRfdGltZSA9IF90aW1lKCkKIAogICAgIGVuZF9ldmVudC5hcHBlbmQoTm9uZSkKICAgICBmb3IgdCBpbiB0aHJlYWRzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9saWZlLnB5IGIvVG9vbHMvZGVtby9saWZlLnB5CmluZGV4IGRmYjlhYjguLmZjNGNiNDkgMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vbGlmZS5weQorKysgYi9Ub29scy9kZW1vL2xpZmUucHkKQEAgLTQ2LDM4ICs0NiwzOCBAQAogICAgICAgICBzZWxmLnN0YXRlID0ge30KICAgICAgICAgc2VsZi5zY3IgPSBzY3IKICAgICAgICAgWSwgWCA9IHNlbGYuc2NyLmdldG1heHl4KCkKLSAgICAgICAgc2VsZi5YLCBzZWxmLlkgPSBYLTIsIFktMi0xCisgICAgICAgIHNlbGYuWCwgc2VsZi5ZID0gWCAtIDIsIFkgLSAyIC0gMQogICAgICAgICBzZWxmLmNoYXIgPSBjaGFyCiAgICAgICAgIHNlbGYuc2NyLmNsZWFyKCkKIAogICAgICAgICAjIERyYXcgYSBib3JkZXIgYXJvdW5kIHRoZSBib2FyZAotICAgICAgICBib3JkZXJfbGluZSA9ICcrJysoc2VsZi5YKictJykrJysnCisgICAgICAgIGJvcmRlcl9saW5lID0gJysnICsgKHNlbGYuWCAqICctJykgKyAnKycKICAgICAgICAgc2VsZi5zY3IuYWRkc3RyKDAsIDAsIGJvcmRlcl9saW5lKQotICAgICAgICBzZWxmLnNjci5hZGRzdHIoc2VsZi5ZKzEsIDAsIGJvcmRlcl9saW5lKQorICAgICAgICBzZWxmLnNjci5hZGRzdHIoc2VsZi5ZICsgMSwgMCwgYm9yZGVyX2xpbmUpCiAgICAgICAgIGZvciB5IGluIHJhbmdlKDAsIHNlbGYuWSk6Ci0gICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSt5LCAwLCAnfCcpCi0gICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSt5LCBzZWxmLlgrMSwgJ3wnKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkc3RyKDEgKyB5LCAwLCAnfCcpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSArIHksIHNlbGYuWCArIDEsICd8JykKICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCiAKICAgICBkZWYgc2V0KHNlbGYsIHksIHgpOgogICAgICAgICAiIiJTZXQgYSBjZWxsIHRvIHRoZSBsaXZlIHN0YXRlIiIiCi0gICAgICAgIGlmIHg8MCBvciBzZWxmLlg8PXggb3IgeTwwIG9yIHNlbGYuWTw9eToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvb3JkaW5hdGVzIG91dCBvZiByYW5nZSAlaSwlaSIlICh5LCB4KSkKLSAgICAgICAgc2VsZi5zdGF0ZVt4LHldID0gMQorICAgICAgICBpZiB4IDwgMCBvciBzZWxmLlggPD0geCBvciB5IDwgMCBvciBzZWxmLlkgPD0geToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvb3JkaW5hdGVzIG91dCBvZiByYW5nZSAlaSwlaSIgJSAoeSwgeCkpCisgICAgICAgIHNlbGYuc3RhdGVbeCwgeV0gPSAxCiAKICAgICBkZWYgdG9nZ2xlKHNlbGYsIHksIHgpOgogICAgICAgICAiIiJUb2dnbGUgYSBjZWxsJ3Mgc3RhdGUgYmV0d2VlbiBsaXZlIGFuZCBkZWFkIiIiCiAgICAgICAgIGlmIHggPCAwIG9yIHNlbGYuWCA8PSB4IG9yIHkgPCAwIG9yIHNlbGYuWSA8PSB5OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiUgKHksIHgpKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiAlICh5LCB4KSkKICAgICAgICAgaWYgKHgsIHkpIGluIHNlbGYuc3RhdGU6CiAgICAgICAgICAgICBkZWwgc2VsZi5zdGF0ZVt4LCB5XQotICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSsxLCB4KzEsICcgJykKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkgKyAxLCB4ICsgMSwgJyAnKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zdGF0ZVt4LCB5XSA9IDEKICAgICAgICAgICAgIGlmIGN1cnNlcy5oYXNfY29sb3JzKCk6CiAgICAgICAgICAgICAgICAgIyBMZXQncyBwaWNrIGEgcmFuZG9tIGNvbG9yIQogICAgICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIocmFuZG9tLnJhbmRyYW5nZSgxLCA3KSkpCi0gICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5KzEsIHgrMSwgc2VsZi5jaGFyKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSArIDEsIHggKyAxLCBzZWxmLmNoYXIpCiAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KDApCiAgICAgICAgIHNlbGYuc2NyLnJlZnJlc2goKQogCkBAIC04OCw0MyArODgsNDYgQEAKIAogICAgIGRlZiBkaXNwbGF5KHNlbGYsIHVwZGF0ZV9ib2FyZD1UcnVlKToKICAgICAgICAgIiIiRGlzcGxheSB0aGUgd2hvbGUgYm9hcmQsIG9wdGlvbmFsbHkgY29tcHV0aW5nIG9uZSBnZW5lcmF0aW9uIiIiCi0gICAgICAgIE0sTiA9IHNlbGYuWCwgc2VsZi5ZCisgICAgICAgIE0sIE4gPSBzZWxmLlgsIHNlbGYuWQogICAgICAgICBpZiBub3QgdXBkYXRlX2JvYXJkOgogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgTSk6CiAgICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoMCwgTik6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpLGopIGluIHNlbGYuc3RhdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgc2VsZi5jaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiAoaSwgaikgaW4gc2VsZi5zdGF0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgc2VsZi5jaGFyKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsICcgJykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgJyAnKQogICAgICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBkID0ge30KICAgICAgICAgc2VsZi5ib3JpbmcgPSAxCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIE0pOgotICAgICAgICAgICAgTCA9IHJhbmdlKCBtYXgoMCwgaS0xKSwgbWluKE0sIGkrMikgKQorICAgICAgICAgICAgTCA9IHJhbmdlKG1heCgwLCBpIC0gMSksIG1pbihNLCBpICsgMikpCiAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBOKToKICAgICAgICAgICAgICAgICBzID0gMAotICAgICAgICAgICAgICAgIGxpdmUgPSAoaSxqKSBpbiBzZWxmLnN0YXRlCi0gICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UoIG1heCgwLCBqLTEpLCBtaW4oTiwgaisyKSApOgorICAgICAgICAgICAgICAgIGxpdmUgPSAoaSwgaikgaW4gc2VsZi5zdGF0ZQorICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKG1heCgwLCBqIC0gMSksIG1pbihOLCBqICsgMikpOgogICAgICAgICAgICAgICAgICAgICBmb3IgbCBpbiBMOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwsaykgaW4gc2VsZi5zdGF0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLCBrKSBpbiBzZWxmLnN0YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gMQogICAgICAgICAgICAgICAgIHMgLT0gbGl2ZQogICAgICAgICAgICAgICAgIGlmIHMgPT0gMzoKICAgICAgICAgICAgICAgICAgICAgIyBCaXJ0aAotICAgICAgICAgICAgICAgICAgICBkW2ksal0gPSAxCisgICAgICAgICAgICAgICAgICAgIGRbaSwgal0gPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIGN1cnNlcy5oYXNfY29sb3JzKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIExldCdzIHBpY2sgYSByYW5kb20gY29sb3IhCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KGN1cnNlcy5jb2xvcl9wYWlyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbS5yYW5kcmFuZ2UoMSwgNykpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgc2VsZi5jaGFyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqICsgMSwgaSArIDEsIHNlbGYuY2hhcikKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldCgwKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGl2ZTogc2VsZi5ib3JpbmcgPSAwCi0gICAgICAgICAgICAgICAgZWxpZiBzID09IDIgYW5kIGxpdmU6IGRbaSxqXSA9IDEgICAgICAgIyBTdXJ2aXZhbAorICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGl2ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9yaW5nID0gMAorICAgICAgICAgICAgICAgIGVsaWYgcyA9PSAyIGFuZCBsaXZlOgorICAgICAgICAgICAgICAgICAgICAjIFN1cnZpdmFsCisgICAgICAgICAgICAgICAgICAgIGRbaSwgal0gPSAxCiAgICAgICAgICAgICAgICAgZWxpZiBsaXZlOgogICAgICAgICAgICAgICAgICAgICAjIERlYXRoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCAnICcpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgJyAnKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmJvcmluZyA9IDAKICAgICAgICAgc2VsZi5zdGF0ZSA9IGQKICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCkBAIC0xMzUsMTYgKzEzOCwxNyBAQAogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBzZWxmLlgpOgogICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoMCwgc2VsZi5ZKToKICAgICAgICAgICAgICAgICBpZiByYW5kb20ucmFuZG9tKCkgPiAwLjU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0KGosaSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXQoaiwgaSkKIAogCiBkZWYgZXJhc2VfbWVudShzdGRzY3IsIG1lbnVfeSk6CiAgICAgIkNsZWFyIHRoZSBzcGFjZSB3aGVyZSB0aGUgbWVudSByZXNpZGVzIgogICAgIHN0ZHNjci5tb3ZlKG1lbnVfeSwgMCkKICAgICBzdGRzY3IuY2xydG9lb2woKQotICAgIHN0ZHNjci5tb3ZlKG1lbnVfeSsxLCAwKQorICAgIHN0ZHNjci5tb3ZlKG1lbnVfeSArIDEsIDApCiAgICAgc3Rkc2NyLmNscnRvZW9sKCkKIAorCiBkZWYgZGlzcGxheV9tZW51KHN0ZHNjciwgbWVudV95KToKICAgICAiRGlzcGxheSB0aGUgbWVudSBvZiBwb3NzaWJsZSBrZXlzdHJva2UgY29tbWFuZHMiCiAgICAgZXJhc2VfbWVudShzdGRzY3IsIG1lbnVfeSkKQEAgLTE1NCwxNSArMTU4LDE2IEBACiAgICAgICAgIHN0ZHNjci5hdHRyc2V0KGN1cnNlcy5jb2xvcl9wYWlyKDEpKQogICAgIHN0ZHNjci5hZGRzdHIobWVudV95LCA0LAogICAgICAgICAnVXNlIHRoZSBjdXJzb3Iga2V5cyB0byBtb3ZlLCBhbmQgc3BhY2Ugb3IgRW50ZXIgdG8gdG9nZ2xlIGEgY2VsbC4nKQotICAgIHN0ZHNjci5hZGRzdHIobWVudV95KzEsIDQsCisgICAgc3Rkc2NyLmFkZHN0cihtZW51X3kgKyAxLCA0LAogICAgICAgICAnRSlyYXNlIHRoZSBib2FyZCwgUilhbmRvbSBmaWxsLCBTKXRlcCBvbmNlIG9yIEMpb250aW51b3VzbHksIFEpdWl0JykKICAgICBzdGRzY3IuYXR0cnNldCgwKQogCisKIGRlZiBrZXlsb29wKHN0ZHNjcik6CiAgICAgIyBDbGVhciB0aGUgc2NyZWVuIGFuZCBkaXNwbGF5IHRoZSBtZW51IG9mIGtleXMKICAgICBzdGRzY3IuY2xlYXIoKQogICAgIHN0ZHNjcl95LCBzdGRzY3JfeCA9IHN0ZHNjci5nZXRtYXh5eCgpCi0gICAgbWVudV95ID0gKHN0ZHNjcl95LTMpLTEKKyAgICBtZW51X3kgPSAoc3Rkc2NyX3kgLSAzKSAtIDEKICAgICBkaXNwbGF5X21lbnUoc3Rkc2NyLCBtZW51X3kpCiAKICAgICAjIElmIGNvbG9yLCB0aGVuIGluaXRpYWxpemUgdGhlIGNvbG9yIHBhaXJzCkBAIC0xNzksMTYgKzE4NCwxNiBAQAogICAgIGN1cnNlcy5tb3VzZW1hc2soY3Vyc2VzLkJVVFRPTjFfQ0xJQ0tFRCkKIAogICAgICMgQWxsb2NhdGUgYSBzdWJ3aW5kb3cgZm9yIHRoZSBMaWZlIGJvYXJkIGFuZCBjcmVhdGUgdGhlIGJvYXJkIG9iamVjdAotICAgIHN1YndpbiA9IHN0ZHNjci5zdWJ3aW4oc3Rkc2NyX3ktMywgc3Rkc2NyX3gsIDAsIDApCisgICAgc3Vid2luID0gc3Rkc2NyLnN1YndpbihzdGRzY3JfeSAtIDMsIHN0ZHNjcl94LCAwLCAwKQogICAgIGJvYXJkID0gTGlmZUJvYXJkKHN1YndpbiwgY2hhcj1vcmQoJyonKSkKICAgICBib2FyZC5kaXNwbGF5KHVwZGF0ZV9ib2FyZD1GYWxzZSkKIAogICAgICMgeHBvcywgeXBvcyBhcmUgdGhlIGN1cnNvcidzIHBvc2l0aW9uCi0gICAgeHBvcywgeXBvcyA9IGJvYXJkLlgvLzIsIGJvYXJkLlkvLzIKKyAgICB4cG9zLCB5cG9zID0gYm9hcmQuWCAvLyAyLCBib2FyZC5ZIC8vIDIKIAogICAgICMgTWFpbiBsb29wOgogICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIHN0ZHNjci5tb3ZlKDEreXBvcywgMSt4cG9zKSAgICAgIyBNb3ZlIHRoZSBjdXJzb3IKKyAgICAgICAgc3Rkc2NyLm1vdmUoMSArIHlwb3MsIDEgKyB4cG9zKSAgICMgTW92ZSB0aGUgY3Vyc29yCiAgICAgICAgIGMgPSBzdGRzY3IuZ2V0Y2goKSAgICAgICAgICAgICAgICAjIEdldCBhIGtleXN0cm9rZQogICAgICAgICBpZiAwIDwgYyA8IDI1NjoKICAgICAgICAgICAgIGMgPSBjaHIoYykKQEAgLTIyNCwxNSArMjI5LDIxIEBACiAgICAgICAgICAgICAgICAgYm9hcmQuZGlzcGxheSh1cGRhdGVfYm9hcmQ9RmFsc2UpCiAgICAgICAgICAgICBlbGlmIGMgaW4gJ1NzJzoKICAgICAgICAgICAgICAgICBib2FyZC5kaXNwbGF5KCkKLSAgICAgICAgICAgIGVsc2U6IHBhc3MgICAgICAgICAgICAgICAgICAjIElnbm9yZSBpbmNvcnJlY3Qga2V5cwotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9VUCBhbmQgeXBvcyA+IDA6ICAgICAgICAgICAgeXBvcyAtPSAxCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX0RPV04gYW5kIHlwb3MgPCBib2FyZC5ZLTE6ICB5cG9zICs9IDEKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfTEVGVCBhbmQgeHBvcyA+IDA6ICAgICAgICAgIHhwb3MgLT0gMQotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9SSUdIVCBhbmQgeHBvcyA8IGJvYXJkLlgtMTogeHBvcyArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSWdub3JlIGluY29ycmVjdCBrZXlzCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9VUCBhbmQgeXBvcyA+IDA6CisgICAgICAgICAgICB5cG9zIC09IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfRE9XTiBhbmQgeXBvcyArIDEgPCBib2FyZC5ZOgorICAgICAgICAgICAgeXBvcyArPSAxCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX0xFRlQgYW5kIHhwb3MgPiAwOgorICAgICAgICAgICAgeHBvcyAtPSAxCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1JJR0hUIGFuZCB4cG9zICsgMSA8IGJvYXJkLlg6CisgICAgICAgICAgICB4cG9zICs9IDEKICAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfTU9VU0U6CiAgICAgICAgICAgICBtb3VzZV9pZCwgbW91c2VfeCwgbW91c2VfeSwgbW91c2VfeiwgYnV0dG9uX3N0YXRlID0gY3Vyc2VzLmdldG1vdXNlKCkKLSAgICAgICAgICAgIGlmIChtb3VzZV94ID4gMCBhbmQgbW91c2VfeCA8IGJvYXJkLlgrMSBhbmQKLSAgICAgICAgICAgICAgICBtb3VzZV95ID4gMCBhbmQgbW91c2VfeSA8IGJvYXJkLlkrMSk6CisgICAgICAgICAgICBpZiAobW91c2VfeCA+IDAgYW5kIG1vdXNlX3ggPCBib2FyZC5YICsgMSBhbmQKKyAgICAgICAgICAgICAgICBtb3VzZV95ID4gMCBhbmQgbW91c2VfeSA8IGJvYXJkLlkgKyAxKToKICAgICAgICAgICAgICAgICB4cG9zID0gbW91c2VfeCAtIDEKICAgICAgICAgICAgICAgICB5cG9zID0gbW91c2VfeSAtIDEKICAgICAgICAgICAgICAgICBib2FyZC50b2dnbGUoeXBvcywgeHBvcykKQEAgLTI0NSw3ICsyNTYsNyBAQAogCiAKIGRlZiBtYWluKHN0ZHNjcik6Ci0gICAga2V5bG9vcChzdGRzY3IpICAgICAgICAgICAgICAgICAgICAjIEVudGVyIHRoZSBtYWluIGxvb3AKKyAgICBrZXlsb29wKHN0ZHNjcikgICAgICAgICAgICAgICAgICMgRW50ZXIgdGhlIG1haW4gbG9vcAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGN1cnNlcy53cmFwcGVyKG1haW4pCmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL3NzMS5weSBiL1Rvb2xzL2RlbW8vc3MxLnB5CmluZGV4IDRjZWE2NjcuLjcxYzliZTggMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vc3MxLnB5CisrKyBiL1Rvb2xzL2RlbW8vc3MxLnB5CkBAIC04MTIsNyArODEyLDYgQEAKIAogZGVmIHRlc3RfYmFzaWMoKToKICAgICAiQmFzaWMgbm9uLWd1aSBzZWxmLXRlc3QuIgotICAgIGltcG9ydCBvcwogICAgIGEgPSBTaGVldCgpCiAgICAgZm9yIHggaW4gcmFuZ2UoMSwgMTEpOgogICAgICAgICBmb3IgeSBpbiByYW5nZSgxLCAxMSk6CmRpZmYgLS1naXQgYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5IGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQppbmRleCA4YmJiYjEwLi4yY2RjM2RhIDEwMDY0NAotLS0gYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5CisrKyBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKQEAgLTQ5LDYgKzQ5LDExIEBACiBfdHlwZV9jaGFyX3B0ciA9IGdkYi5sb29rdXBfdHlwZSgnY2hhcicpLnBvaW50ZXIoKSAjIGNoYXIqCiBfdHlwZV91bnNpZ25lZF9jaGFyX3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndW5zaWduZWQgY2hhcicpLnBvaW50ZXIoKSAjIHVuc2lnbmVkIGNoYXIqCiBfdHlwZV92b2lkX3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndm9pZCcpLnBvaW50ZXIoKSAjIHZvaWQqCitfdHlwZV91bnNpZ25lZF9zaG9ydF9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3Vuc2lnbmVkIHNob3J0JykucG9pbnRlcigpCitfdHlwZV91bnNpZ25lZF9pbnRfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd1bnNpZ25lZCBpbnQnKS5wb2ludGVyKCkKKworIyB2YWx1ZSBjb21wdXRlZCBsYXRlciwgc2VlIFB5VW5pY29kZU9iamVjdFB0ci5wcm94eSgpCitfaXNfcGVwMzkzID0gTm9uZQogCiBTSVpFT0ZfVk9JRF9QID0gX3R5cGVfdm9pZF9wdHIuc2l6ZW9mCiAKQEAgLTMyMiw3ICszMjcsNiBAQAogCiAgICAgICAgIG5hbWVfbWFwID0geydib29sJzogUHlCb29sT2JqZWN0UHRyLAogICAgICAgICAgICAgICAgICAgICAnY2xhc3NvYmonOiBQeUNsYXNzT2JqZWN0UHRyLAotICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UnOiBQeUluc3RhbmNlT2JqZWN0UHRyLAogICAgICAgICAgICAgICAgICAgICAnTm9uZVR5cGUnOiBQeU5vbmVTdHJ1Y3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdmcmFtZSc6IFB5RnJhbWVPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdzZXQnIDogUHlTZXRPYmplY3RQdHIsCkBAIC0zOTYsNyArNDAwLDcgQEAKIAogCiBkZWYgX3dyaXRlX2luc3RhbmNlX3JlcHIob3V0LCB2aXNpdGVkLCBuYW1lLCBweW9wX2F0dHJkaWN0LCBhZGRyZXNzKToKLSAgICAnJydTaGFyZWQgY29kZSBmb3IgdXNlIGJ5IG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGNsYXNzZXM6CisgICAgJycnU2hhcmVkIGNvZGUgZm9yIHVzZSBieSBhbGwgY2xhc3NlczoKICAgICB3cml0ZSBhIHJlcHJlc2VudGF0aW9uIHRvIGZpbGUtbGlrZSBvYmplY3QgIm91dCInJycKICAgICBvdXQud3JpdGUoJzwnKQogICAgIG91dC53cml0ZShuYW1lKQpAQCAtNDc5LDcgKzQ4Myw3IEBACiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6CiAgICAgICAgICcnJwotICAgICAgICBTdXBwb3J0IGZvciBuZXctc3R5bGUgY2xhc3Nlcy4KKyAgICAgICAgU3VwcG9ydCBmb3IgY2xhc3Nlcy4KIAogICAgICAgICBDdXJyZW50bHkgd2UganVzdCBsb2NhdGUgdGhlIGRpY3Rpb25hcnkgdXNpbmcgYSB0cmFuc2xpdGVyYXRpb24gdG8KICAgICAgICAgcHl0aG9uIG9mIF9QeU9iamVjdF9HZXREaWN0UHRyLCBpZ25vcmluZyBkZXNjcmlwdG9ycwpAQCAtNDk2LDcgKzUwMCw3IEBACiAgICAgICAgICAgICBhdHRyX2RpY3QgPSB7fQogICAgICAgICB0cF9uYW1lID0gc2VsZi5zYWZlX3RwX25hbWUoKQogCi0gICAgICAgICMgTmV3LXN0eWxlIGNsYXNzOgorICAgICAgICAjIENsYXNzOgogICAgICAgICByZXR1cm4gSW5zdGFuY2VQcm94eSh0cF9uYW1lLCBhdHRyX2RpY3QsIGxvbmcoc2VsZi5fZ2RidmFsKSkKIAogICAgIGRlZiB3cml0ZV9yZXByKHNlbGYsIG91dCwgdmlzaXRlZCk6CkBAIC02MzAsOSArNjM0LDE0IEBACiAgICAgICAgIFlpZWxkcyBhIHNlcXVlbmNlIG9mIChQeU9iamVjdFB0ciBrZXksIFB5T2JqZWN0UHRyIHZhbHVlKSBwYWlycywKICAgICAgICAgYW5hbGFnb3VzIHRvIGRpY3QuaXRlcml0ZW1zKCkKICAgICAgICAgJycnCi0gICAgICAgIGZvciBpIGluIHNhZmVfcmFuZ2Uoc2VsZi5maWVsZCgnbWFfbWFzaycpICsgMSk6Ci0gICAgICAgICAgICBlcCA9IHNlbGYuZmllbGQoJ21hX3RhYmxlJykgKyBpCi0gICAgICAgICAgICBweW9wX3ZhbHVlID0gUHlPYmplY3RQdHIuZnJvbV9weW9iamVjdF9wdHIoZXBbJ21lX3ZhbHVlJ10pCisgICAgICAgIGtleXMgPSBzZWxmLmZpZWxkKCdtYV9rZXlzJykKKyAgICAgICAgdmFsdWVzID0gc2VsZi5maWVsZCgnbWFfdmFsdWVzJykKKyAgICAgICAgZm9yIGkgaW4gc2FmZV9yYW5nZShrZXlzWydka19zaXplJ10pOgorICAgICAgICAgICAgZXAgPSBrZXlzWydka19lbnRyaWVzJ10uYWRkcmVzcyArIGkKKyAgICAgICAgICAgIGlmIGxvbmcodmFsdWVzKToKKyAgICAgICAgICAgICAgICBweW9wX3ZhbHVlID0gUHlPYmplY3RQdHIuZnJvbV9weW9iamVjdF9wdHIodmFsdWVzW2ldKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBweW9wX3ZhbHVlID0gUHlPYmplY3RQdHIuZnJvbV9weW9iamVjdF9wdHIoZXBbJ21lX3ZhbHVlJ10pCiAgICAgICAgICAgICBpZiBub3QgcHlvcF92YWx1ZS5pc19udWxsKCk6CiAgICAgICAgICAgICAgICAgcHlvcF9rZXkgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfa2V5J10pCiAgICAgICAgICAgICAgICAgeWllbGQgKHB5b3Bfa2V5LCBweW9wX3ZhbHVlKQpAQCAtNjY4LDQ0ICs2NzcsNiBAQAogICAgICAgICAgICAgcHlvcF92YWx1ZS53cml0ZV9yZXByKG91dCwgdmlzaXRlZCkKICAgICAgICAgb3V0LndyaXRlKCd9JykKIAotY2xhc3MgUHlJbnN0YW5jZU9iamVjdFB0cihQeU9iamVjdFB0cik6Ci0gICAgX3R5cGVuYW1lID0gJ1B5SW5zdGFuY2VPYmplY3QnCi0KLSAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6Ci0gICAgICAgICMgR3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wczoKLSAgICAgICAgaWYgc2VsZi5hc19hZGRyZXNzKCkgaW4gdmlzaXRlZDoKLSAgICAgICAgICAgIHJldHVybiBQcm94eUFscmVhZHlWaXNpdGVkKCc8Li4uPicpCi0gICAgICAgIHZpc2l0ZWQuYWRkKHNlbGYuYXNfYWRkcmVzcygpKQotCi0gICAgICAgICMgR2V0IG5hbWUgb2YgY2xhc3M6Ci0gICAgICAgIGluX2NsYXNzID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9jbGFzcycpCi0gICAgICAgIGNsX25hbWUgPSBpbl9jbGFzcy5weW9wX2ZpZWxkKCdjbF9uYW1lJykucHJveHl2YWwodmlzaXRlZCkKLQotICAgICAgICAjIEdldCBkaWN0aW9uYXJ5IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXM6Ci0gICAgICAgIGluX2RpY3QgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2RpY3QnKS5wcm94eXZhbCh2aXNpdGVkKQotCi0gICAgICAgICMgT2xkLXN0eWxlIGNsYXNzOgotICAgICAgICByZXR1cm4gSW5zdGFuY2VQcm94eShjbF9uYW1lLCBpbl9kaWN0LCBsb25nKHNlbGYuX2dkYnZhbCkpCi0KLSAgICBkZWYgd3JpdGVfcmVwcihzZWxmLCBvdXQsIHZpc2l0ZWQpOgotICAgICAgICAjIEd1YXJkIGFnYWluc3QgaW5maW5pdGUgbG9vcHM6Ci0gICAgICAgIGlmIHNlbGYuYXNfYWRkcmVzcygpIGluIHZpc2l0ZWQ6Ci0gICAgICAgICAgICBvdXQud3JpdGUoJzwuLi4+JykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB2aXNpdGVkLmFkZChzZWxmLmFzX2FkZHJlc3MoKSkKLQotICAgICAgICAjIE9sZC1zdHlsZSBjbGFzczoKLQotICAgICAgICAjIEdldCBuYW1lIG9mIGNsYXNzOgotICAgICAgICBpbl9jbGFzcyA9IHNlbGYucHlvcF9maWVsZCgnaW5fY2xhc3MnKQotICAgICAgICBjbF9uYW1lID0gaW5fY2xhc3MucHlvcF9maWVsZCgnY2xfbmFtZScpLnByb3h5dmFsKHZpc2l0ZWQpCi0KLSAgICAgICAgIyBHZXQgZGljdGlvbmFyeSBvZiBpbnN0YW5jZSBhdHRyaWJ1dGVzOgotICAgICAgICBweW9wX2luX2RpY3QgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2RpY3QnKQotCi0gICAgICAgIF93cml0ZV9pbnN0YW5jZV9yZXByKG91dCwgdmlzaXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xfbmFtZSwgcHlvcF9pbl9kaWN0LCBzZWxmLmFzX2FkZHJlc3MoKSkKLQogY2xhc3MgUHlMaXN0T2JqZWN0UHRyKFB5T2JqZWN0UHRyKToKICAgICBfdHlwZW5hbWUgPSAnUHlMaXN0T2JqZWN0JwogCkBAIC0xMTIzLDE1ICsxMDk0LDQ2IEBACiAgICAgICAgIHJldHVybiBfdHlwZV9QeV9VTklDT0RFLnNpemVvZgogCiAgICAgZGVmIHByb3h5dmFsKHNlbGYsIHZpc2l0ZWQpOgotICAgICAgICAjIEZyb20gdW5pY29kZW9iamVjdC5oOgotICAgICAgICAjICAgICBQeV9zc2l6ZV90IGxlbmd0aDsgIC8qIExlbmd0aCBvZiByYXcgVW5pY29kZSBkYXRhIGluIGJ1ZmZlciAqLwotICAgICAgICAjICAgICBQeV9VTklDT0RFICpzdHI7ICAgIC8qIFJhdyBVbmljb2RlIGJ1ZmZlciAqLwotICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKHNlbGYuZmllbGQoJ2xlbmd0aCcpKQotICAgICAgICBmaWVsZF9zdHIgPSBzZWxmLmZpZWxkKCdzdHInKQorICAgICAgICBnbG9iYWwgX2lzX3BlcDM5MworICAgICAgICBpZiBfaXNfcGVwMzkzIGlzIE5vbmU6CisgICAgICAgICAgICBmaWVsZHMgPSBnZGIubG9va3VwX3R5cGUoJ1B5VW5pY29kZU9iamVjdCcpLnRhcmdldCgpLmZpZWxkcygpCisgICAgICAgICAgICBfaXNfcGVwMzkzID0gJ2RhdGEnIGluIFtmLm5hbWUgZm9yIGYgaW4gZmllbGRzXQorICAgICAgICBpZiBfaXNfcGVwMzkzOgorICAgICAgICAgICAgIyBQeXRob24gMy4zIGFuZCBuZXdlcgorICAgICAgICAgICAgbWF5X2hhdmVfc3Vycm9nYXRlcyA9IEZhbHNlCisgICAgICAgICAgICBjb21wYWN0ID0gc2VsZi5maWVsZCgnX2Jhc2UnKQorICAgICAgICAgICAgYXNjaWkgPSBjb21wYWN0WydfYmFzZSddCisgICAgICAgICAgICBzdGF0ZSA9IGFzY2lpWydzdGF0ZSddCisgICAgICAgICAgICBpc19jb21wYWN0X2FzY2lpID0gKGludChzdGF0ZVsnYXNjaWknXSkgYW5kIGludChzdGF0ZVsnY29tcGFjdCddKSkKKyAgICAgICAgICAgIGlmIG5vdCBpbnQoc3RhdGVbJ3JlYWR5J10pOgorICAgICAgICAgICAgICAgICMgc3RyaW5nIGlzIG5vdCByZWFkeQorICAgICAgICAgICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoY29tcGFjdFsnd3N0cl9sZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gVHJ1ZQorICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IGFzY2lpWyd3c3RyJ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhhc2NpaVsnbGVuZ3RoJ10pCisgICAgICAgICAgICAgICAgaWYgaXNfY29tcGFjdF9hc2NpaToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gYXNjaWkuYWRkcmVzcyArIDEKKyAgICAgICAgICAgICAgICBlbGlmIGludChzdGF0ZVsnY29tcGFjdCddKToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gY29tcGFjdC5hZGRyZXNzICsgMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ2RhdGEnKVsnYW55J10KKyAgICAgICAgICAgICAgICByZXByX2tpbmQgPSBpbnQoc3RhdGVbJ2tpbmQnXSkKKyAgICAgICAgICAgICAgICBpZiByZXByX2tpbmQgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gZmllbGRfc3RyLmNhc3QoX3R5cGVfdW5zaWduZWRfY2hhcl9wdHIpCisgICAgICAgICAgICAgICAgZWxpZiByZXByX2tpbmQgPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gZmllbGRfc3RyLmNhc3QoX3R5cGVfdW5zaWduZWRfc2hvcnRfcHRyKQorICAgICAgICAgICAgICAgIGVsaWYgcmVwcl9raW5kID09IDQ6CisgICAgICAgICAgICAgICAgICAgIGZpZWxkX3N0ciA9IGZpZWxkX3N0ci5jYXN0KF90eXBlX3Vuc2lnbmVkX2ludF9wdHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFB5dGhvbiAzLjIgYW5kIGVhcmxpZXIKKyAgICAgICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoc2VsZi5maWVsZCgnbGVuZ3RoJykpCisgICAgICAgICAgICBmaWVsZF9zdHIgPSBzZWxmLmZpZWxkKCdzdHInKQorICAgICAgICAgICAgbWF5X2hhdmVfc3Vycm9nYXRlcyA9IHNlbGYuY2hhcl93aWR0aCgpID09IDIKIAogICAgICAgICAjIEdhdGhlciBhIGxpc3Qgb2YgaW50cyBmcm9tIHRoZSBQeV9VTklDT0RFIGFycmF5OyB0aGVzZSBhcmUgZWl0aGVyCi0gICAgICAgICMgVUNTLTIgb3IgVUNTLTQgY29kZSBwb2ludHM6Ci0gICAgICAgIGlmIHNlbGYuY2hhcl93aWR0aCgpID4gMjoKKyAgICAgICAgIyBVQ1MtMSwgVUNTLTIgb3IgVUNTLTQgY29kZSBwb2ludHM6CisgICAgICAgIGlmIG5vdCBtYXlfaGF2ZV9zdXJyb2dhdGVzOgogICAgICAgICAgICAgUHlfVU5JQ09ERXMgPSBbaW50KGZpZWxkX3N0cltpXSkgZm9yIGkgaW4gc2FmZV9yYW5nZShmaWVsZF9sZW5ndGgpXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBBIG1vcmUgZWxhYm9yYXRlIHJvdXRpbmUgaWYgc2l6ZW9mKFB5X1VOSUNPREUpIGlzIDIgaW4gdGhlCkBAIC0xMzg4LDYgKzEzOTAsMjMgQEAKICAgICAgICAgICAgIGl0ZXJfZnJhbWUgPSBpdGVyX2ZyYW1lLm5ld2VyKCkKICAgICAgICAgcmV0dXJuIGluZGV4CiAKKyAgICAjIFdlIGRpdmlkZSBmcmFtZXMgaW50bzoKKyAgICAjICAgLSAicHl0aG9uIGZyYW1lcyI6CisgICAgIyAgICAgICAtICJieXRlY29kZSBmcmFtZXMiIGkuZS4gUHlFdmFsX0V2YWxGcmFtZUV4CisgICAgIyAgICAgICAtICJvdGhlciBweXRob24gZnJhbWVzIjogdGhpbmdzIHRoYXQgYXJlIG9mIGludGVyZXN0IGZyb20gYSBweXRob24KKyAgICAjICAgICAgICAgUE9WLCBidXQgYXJlbid0IGJ5dGVjb2RlIChlLmcuIEdDLCBHSUwpCisgICAgIyAgIC0gZXZlcnl0aGluZyBlbHNlCisKKyAgICBkZWYgaXNfcHl0aG9uX2ZyYW1lKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGEgUHlFdmFsX0V2YWxGcmFtZUV4IGZyYW1lLCBvciBzb21lIG90aGVyIGltcG9ydGFudAorICAgICAgICBmcmFtZT8gKHNlZSBpc19vdGhlcl9weXRob25fZnJhbWUgZm9yIHdoYXQgImltcG9ydGFudCIgbWVhbnMgaW4gdGhpcworICAgICAgICBjb250ZXh0KScnJworICAgICAgICBpZiBzZWxmLmlzX2V2YWxmcmFtZWV4KCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgaXNfZXZhbGZyYW1lZXgoc2VsZik6CiAgICAgICAgICcnJ0lzIHRoaXMgYSBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWU/JycnCiAgICAgICAgIGlmIHNlbGYuX2dkYmZyYW1lLm5hbWUoKSA9PSAnUHlFdmFsX0V2YWxGcmFtZUV4JzoKQEAgLTE0MDQsNiArMTQyMyw0OSBAQAogCiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVmIGlzX290aGVyX3B5dGhvbl9mcmFtZShzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSB3b3J0aCBkaXNwbGF5aW5nIGluIHB5dGhvbiBiYWNrdHJhY2VzPworICAgICAgICBFeGFtcGxlczoKKyAgICAgICAgICAtIHdhaXRpbmcgb24gdGhlIEdJTAorICAgICAgICAgIC0gZ2FyYmFnZS1jb2xsZWN0aW5nCisgICAgICAgICAgLSB3aXRoaW4gYSBDRnVuY3Rpb24KKyAgICAgICAgIElmIGl0IGlzLCByZXR1cm4gYSBkZXNjcmlwdGl2ZSBzdHJpbmcKKyAgICAgICAgIEZvciBvdGhlciBmcmFtZXMsIHJldHVybiBGYWxzZQorICAgICAgICAgJycnCisgICAgICAgIGlmIHNlbGYuaXNfd2FpdGluZ19mb3JfZ2lsKCk6CisgICAgICAgICAgICByZXR1cm4gJ1dhaXRpbmcgZm9yIHRoZSBHSUwnCisgICAgICAgIGVsaWYgc2VsZi5pc19nY19jb2xsZWN0KCk6CisgICAgICAgICAgICByZXR1cm4gJ0dhcmJhZ2UtY29sbGVjdGluZycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRGV0ZWN0IGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlczoKKyAgICAgICAgICAgIG9sZGVyID0gc2VsZi5vbGRlcigpCisgICAgICAgICAgICBpZiBvbGRlciBhbmQgb2xkZXIuX2dkYmZyYW1lLm5hbWUoKSA9PSAnUHlDRnVuY3Rpb25fQ2FsbCc6CisgICAgICAgICAgICAgICAgIyBXaXRoaW4gdGhhdCBmcmFtZToKKyAgICAgICAgICAgICAgICAjICAgImZ1bmMiIGlzIHRoZSBsb2NhbCBjb250YWluaW5nIHRoZSBQeU9iamVjdCogb2YgdGhlCisgICAgICAgICAgICAgICAgIyBQeUNGdW5jdGlvbk9iamVjdCBpbnN0YW5jZQorICAgICAgICAgICAgICAgICMgICAiZiIgaXMgdGhlIHNhbWUgdmFsdWUsIGJ1dCBjYXN0IHRvIChQeUNGdW5jdGlvbk9iamVjdCopCisgICAgICAgICAgICAgICAgIyAgICJzZWxmIiBpcyB0aGUgKFB5T2JqZWN0Kikgb2YgdGhlICdzZWxmJworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXR0eXByaW50ZXIgZm9yIHRoZSBmdW5jOgorICAgICAgICAgICAgICAgICAgICBmdW5jID0gb2xkZXIuX2dkYmZyYW1lLnJlYWRfdmFyKCdmdW5jJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihmdW5jKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnUHlDRnVuY3Rpb24gaW52b2NhdGlvbiAodW5hYmxlIHRvIHJlYWQgImZ1bmMiKScKKworICAgICAgICAjIFRoaXMgZnJhbWUgaXNuJ3Qgd29ydGggcmVwb3J0aW5nOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBpc193YWl0aW5nX2Zvcl9naWwoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgZnJhbWUgd2FpdGluZyBvbiB0aGUgR0lMPycnJworICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGUgX1BPU0lYX1RIUkVBRFMgdmVyc2lvbiBvZiBQeXRob24vY2V2YWxfZ2lsLmg6CisgICAgICAgIG5hbWUgPSBzZWxmLl9nZGJmcmFtZS5uYW1lKCkKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLnN0YXJ0c3dpdGgoJ3B0aHJlYWRfY29uZF90aW1lZHdhaXQnKQorCisgICAgZGVmIGlzX2djX2NvbGxlY3Qoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgZnJhbWUgImNvbGxlY3QiIHdpdGhpbiB0aGUgdGhlIGdhcmJhZ2UtY29sbGVjdG9yPycnJworICAgICAgICByZXR1cm4gc2VsZi5fZ2RiZnJhbWUubmFtZSgpID09ICdjb2xsZWN0JworCiAgICAgZGVmIGdldF9weW9wKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gc2VsZi5fZ2RiZnJhbWUucmVhZF92YXIoJ2YnKQpAQCAtMTQzMyw4ICsxNDk1LDIyIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZShjbHMpOgotICAgICAgICAnJydUcnkgdG8gb2J0YWluIHRoZSBGcmFtZSBmb3IgdGhlIHB5dGhvbiBjb2RlIGluIHRoZSBzZWxlY3RlZCBmcmFtZSwKLSAgICAgICAgb3IgTm9uZScnJworICAgICAgICAnJydUcnkgdG8gb2J0YWluIHRoZSBGcmFtZSBmb3IgdGhlIHB5dGhvbi1yZWxhdGVkIGNvZGUgaW4gdGhlIHNlbGVjdGVkCisgICAgICAgIGZyYW1lLCBvciBOb25lJycnCisgICAgICAgIGZyYW1lID0gY2xzLmdldF9zZWxlY3RlZF9mcmFtZSgpCisKKyAgICAgICAgd2hpbGUgZnJhbWU6CisgICAgICAgICAgICBpZiBmcmFtZS5pc19weXRob25fZnJhbWUoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWUKKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUub2xkZXIoKQorCisgICAgICAgICMgTm90IGZvdW5kOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdldF9zZWxlY3RlZF9ieXRlY29kZV9mcmFtZShjbHMpOgorICAgICAgICAnJydUcnkgdG8gb2J0YWluIHRoZSBGcmFtZSBmb3IgdGhlIHB5dGhvbiBieXRlY29kZSBpbnRlcnByZXRlciBpbiB0aGUKKyAgICAgICAgc2VsZWN0ZWQgR0RCIGZyYW1lLCBvciBOb25lJycnCiAgICAgICAgIGZyYW1lID0gY2xzLmdldF9zZWxlY3RlZF9mcmFtZSgpCiAKICAgICAgICAgd2hpbGUgZnJhbWU6CkBAIC0xNDU4LDcgKzE1MzQsMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpICh1bmFibGUgdG8gcmVhZCBweXRob24gZnJhbWUgaW5mb3JtYXRpb24pXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaVxuJyAlIHNlbGYuZ2V0X2luZGV4KCkpCisgICAgICAgICAgICBpbmZvID0gc2VsZi5pc19vdGhlcl9weXRob25fZnJhbWUoKQorICAgICAgICAgICAgaWYgaW5mbzoKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWkgJXNcbicgJSAoc2VsZi5nZXRfaW5kZXgoKSwgaW5mbykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaVxuJyAlIHNlbGYuZ2V0X2luZGV4KCkpCiAKICAgICBkZWYgcHJpbnRfdHJhY2ViYWNrKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlzX2V2YWxmcmFtZWV4KCk6CkBAIC0xNDcyLDcgKzE1NTIsMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAodW5hYmxlIHRvIHJlYWQgcHl0aG9uIGZyYW1lIGluZm9ybWF0aW9uKVxuJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgKG5vdCBhIHB5dGhvbiBmcmFtZSlcbicpCisgICAgICAgICAgICBpbmZvID0gc2VsZi5pc19vdGhlcl9weXRob25fZnJhbWUoKQorICAgICAgICAgICAgaWYgaW5mbzoKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgICVzXG4nICUgaW5mbykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAobm90IGEgcHl0aG9uIGZyYW1lKVxuJykKIAogY2xhc3MgUHlMaXN0KGdkYi5Db21tYW5kKToKICAgICAnJydMaXN0IHRoZSBjdXJyZW50IFB5dGhvbiBzb3VyY2UgY29kZSwgaWYgYW55CkBAIC0xNTA4LDkgKzE1OTIsMTAgQEAKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIHN0YXJ0LCBlbmQgPSBtYXAoaW50LCBtLmdyb3VwcygpKQogCi0gICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICMgcHktbGlzdCByZXF1aXJlcyBhbiBhY3R1YWwgUHlFdmFsX0V2YWxGcmFtZUV4IGZyYW1lOgorICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9ieXRlY29kZV9mcmFtZSgpCiAgICAgICAgIGlmIG5vdCBmcmFtZToKLSAgICAgICAgICAgIHByaW50ICdVbmFibGUgdG8gbG9jYXRlIHB5dGhvbiBmcmFtZScKKyAgICAgICAgICAgIHByaW50ICdVbmFibGUgdG8gbG9jYXRlIGdkYiBmcmFtZSBmb3IgcHl0aG9uIGJ5dGVjb2RlIGludGVycHJldGVyJwogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgcHlvcCA9IGZyYW1lLmdldF9weW9wKCkKQEAgLTE1NjIsNyArMTY0Nyw3IEBACiAgICAgICAgIGlmIG5vdCBpdGVyX2ZyYW1lOgogICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICBpZiBpdGVyX2ZyYW1lLmlzX2V2YWxmcmFtZWV4KCk6CisgICAgICAgIGlmIGl0ZXJfZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CiAgICAgICAgICAgICAjIFJlc3VsdDoKICAgICAgICAgICAgIGlmIGl0ZXJfZnJhbWUuc2VsZWN0KCk6CiAgICAgICAgICAgICAgICAgaXRlcl9mcmFtZS5wcmludF9zdW1tYXJ5KCkKQEAgLTE2MTYsNyArMTcwMSw3IEBACiAgICAgZGVmIGludm9rZShzZWxmLCBhcmdzLCBmcm9tX3R0eSk6CiAgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZSgpCiAgICAgICAgIHdoaWxlIGZyYW1lOgotICAgICAgICAgICAgaWYgZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgogICAgICAgICAgICAgICAgIGZyYW1lLnByaW50X3N1bW1hcnkoKQogICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlcigpCiAKQEAgLTE2MzUsNyArMTcyMCw3IEBACiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4nKQogICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQogICAgICAgICB3aGlsZSBmcmFtZToKLSAgICAgICAgICAgIGlmIGZyYW1lLmlzX2V2YWxmcmFtZWV4KCk6CisgICAgICAgICAgICBpZiBmcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICAgICBmcmFtZS5wcmludF90cmFjZWJhY2soKQogICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlcigpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2hnL2hndG91Y2gucHkgYi9Ub29scy9oZy9oZ3RvdWNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NjFhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9oZy9oZ3RvdWNoLnB5CkBAIC0wLDAgKzEsMTAzIEBACisiIiJCcmluZyB0aW1lIHN0YW1wcyBvZiBnZW5lcmF0ZWQgY2hlY2tlZC1pbiBmaWxlcyBpbnRvIHRoZSByaWdodCBvcmRlcgorCitBIHZlcnNpb25lZCBjb25maWd1cmF0aW9uIGZpbGUgLmhndG91Y2ggc3BlY2lmaWVzIGdlbmVyYXRlZCBmaWxlcywgaW4gdGhlCitzeW50YXggb2YgbWFrZSBydWxlcy4KKworICBvdXRwdXQ6ICAgIGlucHV0MSBpbnB1dDIKKworSW4gYWRkaXRpb24gdG8gdGhlIGRlcGVuZGVuY3kgc3ludGF4LCAjLWNvbW1lbnRzIGFyZSBzdXBwb3J0ZWQuCisiIiIKK2ltcG9ydCBlcnJubworaW1wb3J0IG9zCisKK2RlZiBwYXJzZV9jb25maWcocmVwbyk6CisgICAgdHJ5OgorICAgICAgICBmcCA9IHJlcG8ud2ZpbGUoIi5oZ3RvdWNoIikKKyAgICBleGNlcHQgSU9FcnJvciwgZToKKyAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICByYWlzZQorICAgICAgICByZXR1cm4ge30KKyAgICByZXN1bHQgPSB7fQorICAgIHdpdGggZnA6CisgICAgICAgIGZvciBsaW5lIGluIGZwOgorICAgICAgICAgICAgIyBzdHJpcCBjb21tZW50cworICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoJyMnKVswXS5zdHJpcCgpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIGxpbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG91dHB1dHMsIGlucHV0cyA9IGxpbmUuc3BsaXQoJzonLCAxKQorICAgICAgICAgICAgb3V0cHV0cyA9IG91dHB1dHMuc3BsaXQoKQorICAgICAgICAgICAgaW5wdXRzID0gaW5wdXRzLnNwbGl0KCkKKyAgICAgICAgICAgIGZvciBvIGluIG91dHB1dHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXN1bHRbb10uZXh0ZW5kKGlucHV0cykKKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtvXSA9IGlucHV0cworICAgIHJldHVybiByZXN1bHQKKworZGVmIGNoZWNrX3J1bGUodWksIHJlcG8sIG1vZGlmaWVkLCBvdXRwdXQsIGlucHV0cyk6CisgICAgZl9vdXRwdXQgPSByZXBvLndqb2luKG91dHB1dCkKKyAgICB0cnk6CisgICAgICAgIG9fdGltZSA9IG9zLnN0YXQoZl9vdXRwdXQpLnN0X210aW1lCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHVpLndhcm4oIkdlbmVyYXRlZCBmaWxlICVzIGRvZXMgbm90IGV4aXN0XG4iICUgb3V0cHV0KQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBuZWVkX3RvdWNoID0gRmFsc2UKKyAgICBiYWNrZGF0ZSA9IE5vbmUKKyAgICBiYWNrZGF0ZV9zb3VyY2UgPSBOb25lCisgICAgZm9yIGkgaW4gaW5wdXRzOgorICAgICAgICBmX2kgPSByZXBvLndqb2luKGkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlfdGltZSA9IG9zLnN0YXQoZl9pKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHVpLndhcm4oIi5oZ3RvdWNoIGlucHV0IGZpbGUgJXMgZG9lcyBub3QgZXhpc3RcbiIgJSBpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGkgaW4gbW9kaWZpZWQ6CisgICAgICAgICAgICAjIGlucHV0IGlzIG1vZGlmaWVkLiBOZWVkIHRvIGJhY2tkYXRlIGF0IGxlYXN0IHRvIGlfdGltZQorICAgICAgICAgICAgaWYgYmFja2RhdGUgaXMgTm9uZSBvciBiYWNrZGF0ZSA+IGlfdGltZToKKyAgICAgICAgICAgICAgICBiYWNrZGF0ZSA9IGlfdGltZQorICAgICAgICAgICAgICAgIGJhY2tkYXRlX3NvdXJjZSA9IGkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG9fdGltZSA8PSBpX3RpbWU6CisgICAgICAgICAgICAjIGdlbmVyYXRlZCBmaWxlIGlzIG9sZGVyLCB0b3VjaAorICAgICAgICAgICAgbmVlZF90b3VjaCA9IFRydWUKKyAgICBpZiBiYWNrZGF0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgdWkud2FybigiSW5wdXQgJXMgZm9yIGZpbGUgJXMgbG9jYWxseSBtb2RpZmllZFxuIiAlIChiYWNrZGF0ZV9zb3VyY2UsIG91dHB1dCkpCisgICAgICAgICMgc2V0IHRvIDFzIGJlZm9yZSBvbGRlc3QgbW9kaWZpZWQgaW5wdXQKKyAgICAgICAgYmFja2RhdGUgLT0gMQorICAgICAgICBvcy51dGltZShmX291dHB1dCwgKGJhY2tkYXRlLCBiYWNrZGF0ZSkpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG5lZWRfdG91Y2g6CisgICAgICAgIHVpLm5vdGUoIlRvdWNoaW5nICVzXG4iICUgb3V0cHV0KQorICAgICAgICBvcy51dGltZShmX291dHB1dCwgTm9uZSkKKyAgICByZXR1cm4gVHJ1ZQorCitkZWYgZG9fdG91Y2godWksIHJlcG8pOgorICAgIG1vZGlmaWVkID0gcmVwby5zdGF0dXMoKVswXQorICAgIGRlcGVuZGVuY2llcyA9IHBhcnNlX2NvbmZpZyhyZXBvKQorICAgIHN1Y2Nlc3MgPSBUcnVlCisgICAgIyB0cnkgcHJvY2Vzc2luZyBhbGwgcnVsZXMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIKKyAgICBob2xkX2JhY2sgPSB7fQorICAgIHdoaWxlIGRlcGVuZGVuY2llczoKKyAgICAgICAgb3V0cHV0LCBpbnB1dHMgPSBkZXBlbmRlbmNpZXMucG9waXRlbSgpCisgICAgICAgICMgY2hlY2sgd2hldGhlciBhbnkgb2YgdGhlIGlucHV0cyBpcyBnZW5lcmF0ZWQKKyAgICAgICAgZm9yIGkgaW4gaW5wdXRzOgorICAgICAgICAgICAgaWYgaSBpbiBkZXBlbmRlbmNpZXM6CisgICAgICAgICAgICAgICAgaG9sZF9iYWNrW291dHB1dF0gPSBpbnB1dHMKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBzdWNjZXNzID0gY2hlY2tfcnVsZSh1aSwgcmVwbywgbW9kaWZpZWQsIG91dHB1dCwgaW5wdXRzKQorICAgICAgICAjIHB1dCBiYWNrIGhlbGQgYmFjayBydWxlcworICAgICAgICBkZXBlbmRlbmNpZXMudXBkYXRlKGhvbGRfYmFjaykKKyAgICAgICAgaG9sZF9iYWNrID0ge30KKyAgICBpZiBob2xkX2JhY2s6CisgICAgICAgIHVpLndhcm4oIkN5Y2xpYyBkZXBlbmRlbmN5IGludm9sdmluZyAlc1xuIiAlICgnICcuam9pbihob2xkX2JhY2sua2V5cygpKSkpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBzdWNjZXNzCisKK2RlZiB0b3VjaCh1aSwgcmVwbyk6CisgICAgInRvdWNoIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBvbGRlciB0aGFuIHRoZWlyIHNvdXJjZXMgYWZ0ZXIgYW4gdXBkYXRlLiIKKyAgICBkb190b3VjaCh1aSwgcmVwbykKKworY21kdGFibGUgPSB7CisgICAgInRvdWNoIjogKHRvdWNoLCBbXSwKKyAgICAgICAgICAgICAgInRvdWNoIGdlbmVyYXRlZCBmaWxlcyBhY2NvcmRpbmcgdG8gdGhlIC5oZ3RvdWNoIGNvbmZpZ3VyYXRpb24iKQorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQppbmRleCA2N2E5NjBmLi45M2IyYjc5IDEwMDc1NQotLS0gYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQorKysgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQpAQCAtMTYzLDcgKzE2Myw2IEBACiBpbXBvcnQgZ2V0b3B0CiBpbXBvcnQgdG9rZW4KIGltcG9ydCB0b2tlbml6ZQotaW1wb3J0IG9wZXJhdG9yCiAKIF9fdmVyc2lvbl9fID0gJzEuNScKIApkaWZmIC0tZ2l0IGEvVG9vbHMvaW1wb3J0YmVuY2gvUkVBRE1FIGIvVG9vbHMvaW1wb3J0YmVuY2gvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYTU1NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUKQEAgLTAsMCArMSw2IEBACitJbXBvcnRiZW5jaCBpcyBhIHNldCBvZiBtaWNyby1iZW5jaG1hcmtzIGZvciB2YXJpb3VzIGltcG9ydCBzY2VuYXJpb3MuCisKK0l0IHNob3VsZCBub3QgYmUgdXNlZCBhcyBhbiBvdmVyYWxsIGJlbmNobWFyayBvZiBpbXBvcnQgcGVyZm9ybWFuY2UsIGJ1dCByYXRoZXIKK2FuIGVhc3kgd2F5IHRvIG1lYXN1cmUgaW1wYWN0IG9mIHBvc3NpYmxlIGNvZGUgY2hhbmdlcy4gRm9yIGEgcmVhbC13b3JsZAorYmVuY2htYXJrIG9mIGltcG9ydCwgdXNlIHRoZSBub3JtYWxfc3RhcnR1cCBiZW5jaG1hcmsgZnJvbQoraGcucHl0aG9uLm9yZy9iZW5jaG1hcmtzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkgYi9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTRjMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkKQEAgLTAsMCArMSwyNTIgQEAKKyIiIkJlbmNobWFyayBzb21lIGJhc2ljIGltcG9ydCB1c2UtY2FzZXMuCisKK1RoZSBhc3N1bXB0aW9uIGlzIG1hZGUgdGhhdCB0aGlzIGJlbmNobWFyayBpcyBydW4gaW4gYSBmcmVzaCBpbnRlcnByZXRlciBhbmQKK3RodXMgaGFzIG5vIGV4dGVybmFsIGNoYW5nZXMgbWFkZSB0byBpbXBvcnQtcmVsYXRlZCBhdHRyaWJ1dGVzIGluIHN5cy4KKworIiIiCitmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYi5zb3VyY2UgaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKK2ltcG9ydCBkZWNpbWFsCitpbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHB5X2NvbXBpbGUKK2ltcG9ydCBzeXMKK2ltcG9ydCB0YWJuYW5ueQoraW1wb3J0IHRpbWVpdAorCisKK2RlZiBiZW5jaChuYW1lLCBjbGVhbnVwPWxhbWJkYTogTm9uZSwgKiwgc2Vjb25kcz0xLCByZXBlYXQ9Myk6CisgICAgIiIiQmVuY2ggdGhlIGdpdmVuIHN0YXRlbWVudCBhcyBtYW55IHRpbWVzIGFzIG5lY2Vzc2FyeSB1bnRpbCB0b3RhbAorICAgIGV4ZWN1dGlvbnMgdGFrZSBvbmUgc2Vjb25kLiIiIgorICAgIHN0bXQgPSAiX19pbXBvcnRfXyh7IXJ9KSIuZm9ybWF0KG5hbWUpCisgICAgdGltZXIgPSB0aW1laXQuVGltZXIoc3RtdCkKKyAgICBmb3IgeCBpbiByYW5nZShyZXBlYXQpOgorICAgICAgICB0b3RhbF90aW1lID0gMAorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgd2hpbGUgdG90YWxfdGltZSA8IHNlY29uZHM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdG90YWxfdGltZSArPSB0aW1lci50aW1laXQoMSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY2xlYW51cCgpCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE9uZSBleGVjdXRpb24gdG9vIGZhcgorICAgICAgICAgICAgaWYgdG90YWxfdGltZSA+IHNlY29uZHM6CisgICAgICAgICAgICAgICAgY291bnQgLT0gMQorICAgICAgICB5aWVsZCBjb3VudCAvLyBzZWNvbmRzCisKK2RlZiBmcm9tX2NhY2hlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIic3lzLm1vZHVsZXMiIiIKKyAgICBuYW1lID0gJzxiZW5jaG1hcmsgaW1wb3J0PicKKyAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgIG1vZHVsZS5fX2ZpbGVfXyA9ICc8dGVzdD4nCisgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gJycKKyAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIGJ1aWx0aW5fbW9kKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiQnVpbHQtaW4gbW9kdWxlIiIiCisgICAgbmFtZSA9ICdlcnJubycKKyAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KKyAgICAjIFJlbHlpbmcgb24gYnVpbHQtaW4gaW1wb3J0ZXIgYmVpbmcgaW1wbGljaXQuCisgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBzb3VyY2Vfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJTb3VyY2Ugdy9vIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQorICAgIHRyeToKKyAgICAgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJworICAgICAgICAjIENsZWFycyBvdXQgc3lzLm1vZHVsZXMgYW5kIHB1dHMgYW4gZW50cnkgYXQgdGhlIGZyb250IG9mIHN5cy5wYXRoLgorICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CisgICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguZXhpc3RzKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcikKKyAgICAgICAgICAgIGxvYWRlciA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMsIFRydWUpCisgICAgICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vayhsb2FkZXIpKQorICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgICAgICB5aWVsZCByZXN1bHQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCisKKworZGVmIF93b19ieXRlY29kZShtb2R1bGUpOgorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBkZWYgYmVuY2htYXJrX3dvX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHt9IiIiCisgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhieXRlY29kZV9wYXRoKToKKyAgICAgICAgICAgIG9zLnVubGluayhieXRlY29kZV9wYXRoKQorICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgICAgICB5aWVsZCByZXN1bHQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKKworICAgIGJlbmNobWFya193b19ieXRlY29kZS5fX2RvY19fID0gYmVuY2htYXJrX3dvX2J5dGVjb2RlLl9fZG9jX18uZm9ybWF0KG5hbWUpCisgICAgcmV0dXJuIGJlbmNobWFya193b19ieXRlY29kZQorCit0YWJuYW5ueV93b19ieXRlY29kZSA9IF93b19ieXRlY29kZSh0YWJuYW5ueSkKK2RlY2ltYWxfd29fYnl0ZWNvZGUgPSBfd29fYnl0ZWNvZGUoZGVjaW1hbCkKKworCitkZWYgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJTb3VyY2Ugd3JpdGluZyBieXRlY29kZTogc21hbGwiIiIKKyAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgbmFtZSA9ICdfX2ltcG9ydGxpYl90ZXN0X2JlbmNobWFya19fJworICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyKQorICAgICAgICBsb2FkZXIgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMsIFRydWUpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKGxvYWRlcikpCisgICAgICAgIGRlZiBjbGVhbnVwKCk6CisgICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKKyAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIF93cml0aW5nX2J5dGVjb2RlKG1vZHVsZSk6CisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGRlZiB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyayhzZWNvbmRzLCByZXBlYXQpOgorICAgICAgICAiIiJTb3VyY2Ugd3JpdGluZyBieXRlY29kZToge30iIiIKKyAgICAgICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQorICAgICAgICBkZWYgY2xlYW51cCgpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXMucG9wKG5hbWUpCisgICAgICAgICAgICBvcy51bmxpbmsoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykpCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisgICAgd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXy5mb3JtYXQobmFtZSkpCisgICAgcmV0dXJuIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrCisKK3RhYm5hbm55X3dyaXRpbmdfYnl0ZWNvZGUgPSBfd3JpdGluZ19ieXRlY29kZSh0YWJuYW5ueSkKK2RlY2ltYWxfd3JpdGluZ19ieXRlY29kZSA9IF93cml0aW5nX2J5dGVjb2RlKGRlY2ltYWwpCisKKworZGVmIHNvdXJjZV91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3LyBieXRlY29kZTogc21hbGwiIiIKKyAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisgICAgICAgIGxvYWRlciA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMsIFRydWUpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKGxvYWRlcikpCisgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nW25hbWVdKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgX3VzaW5nX2J5dGVjb2RlKG1vZHVsZSk6CisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGRlZiB1c2luZ19ieXRlY29kZV9iZW5jaG1hcmsoc2Vjb25kcywgcmVwZWF0KToKKyAgICAgICAgIiIiU291cmNlIHcvIGJ5dGVjb2RlOiB7fSIiIgorICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobW9kdWxlLl9fZmlsZV9fKQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworICAgIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ19ieXRlY29kZV9iZW5jaG1hcmsuX19kb2NfXy5mb3JtYXQobmFtZSkpCisgICAgcmV0dXJuIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyaworCit0YWJuYW5ueV91c2luZ19ieXRlY29kZSA9IF91c2luZ19ieXRlY29kZSh0YWJuYW5ueSkKK2RlY2ltYWxfdXNpbmdfYnl0ZWNvZGUgPSBfdXNpbmdfYnl0ZWNvZGUoZGVjaW1hbCkKKworCitkZWYgbWFpbihpbXBvcnRfLCBvcHRpb25zKToKKyAgICBpZiBvcHRpb25zLnNvdXJjZV9maWxlOgorICAgICAgICB3aXRoIG9wdGlvbnMuc291cmNlX2ZpbGU6CisgICAgICAgICAgICBwcmV2X3Jlc3VsdHMgPSBqc29uLmxvYWQob3B0aW9ucy5zb3VyY2VfZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBwcmV2X3Jlc3VsdHMgPSB7fQorICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0XworICAgIGJlbmNobWFya3MgPSAoZnJvbV9jYWNoZSwgYnVpbHRpbl9tb2QsCisgICAgICAgICAgICAgICAgICBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZV93b19ieXRlY29kZSwgc291cmNlX3VzaW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgdGFibmFubnlfd3JpdGluZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICAgIHRhYm5hbm55X3dvX2J5dGVjb2RlLCB0YWJuYW5ueV91c2luZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICAgIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICAgIGRlY2ltYWxfd29fYnl0ZWNvZGUsIGRlY2ltYWxfdXNpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgKQorICAgIGlmIG9wdGlvbnMuYmVuY2htYXJrOgorICAgICAgICBmb3IgYiBpbiBiZW5jaG1hcmtzOgorICAgICAgICAgICAgaWYgYi5fX2RvY19fID09IG9wdGlvbnMuYmVuY2htYXJrOgorICAgICAgICAgICAgICAgIGJlbmNobWFya3MgPSBbYl0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQoJ1Vua25vd24gYmVuY2htYXJrOiB7IXJ9Jy5mb3JtYXQob3B0aW9ucy5iZW5jaG1hcmssCisgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBzZWNvbmRzID0gMQorICAgIHNlY29uZHNfcGx1cmFsID0gJ3MnIGlmIHNlY29uZHMgPiAxIGVsc2UgJycKKyAgICByZXBlYXQgPSAzCisgICAgaGVhZGVyID0gKCdNZWFzdXJpbmcgaW1wb3J0cy9zZWNvbmQgb3ZlciB7fSBzZWNvbmR7fSwgYmVzdCBvdXQgb2Yge31cbicKKyAgICAgICAgICAgICAgJ0VudGlyZSBiZW5jaG1hcmsgcnVuIHNob3VsZCB0YWtlIGFib3V0IHt9IHNlY29uZHNcbicKKyAgICAgICAgICAgICAgJ1VzaW5nIHshcn0gYXMgX19pbXBvcnRfX1xuJykKKyAgICBwcmludChoZWFkZXIuZm9ybWF0KHNlY29uZHMsIHNlY29uZHNfcGx1cmFsLCByZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBsZW4oYmVuY2htYXJrcykgKiBzZWNvbmRzICogcmVwZWF0LCBfX2ltcG9ydF9fKSkKKyAgICBuZXdfcmVzdWx0cyA9IHt9CisgICAgZm9yIGJlbmNobWFyayBpbiBiZW5jaG1hcmtzOgorICAgICAgICBwcmludChiZW5jaG1hcmsuX19kb2NfXywgIlsiLCBlbmQ9JyAnKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2htYXJrKHNlY29uZHM9c2Vjb25kcywgcmVwZWF0PXJlcGVhdCk6CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBwcmludChyZXN1bHQsIGVuZD0nICcpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQorICAgICAgICBwcmludCgiXSIsICJiZXN0IGlzIiwgZm9ybWF0KG1heChyZXN1bHRzKSwgJyxkJykpCisgICAgICAgIG5ld19yZXN1bHRzW2JlbmNobWFyay5fX2RvY19fXSA9IHJlc3VsdHMKKyAgICBpZiBwcmV2X3Jlc3VsdHM6CisgICAgICAgIHByaW50KCdcblxuQ29tcGFyaW5nIG5ldyB2cy4gb2xkXG4nKQorICAgICAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6CisgICAgICAgICAgICBiZW5jaG1hcmtfbmFtZSA9IGJlbmNobWFyay5fX2RvY19fCisgICAgICAgICAgICBvbGRfcmVzdWx0ID0gbWF4KHByZXZfcmVzdWx0c1tiZW5jaG1hcmtfbmFtZV0pCisgICAgICAgICAgICBuZXdfcmVzdWx0ID0gbWF4KG5ld19yZXN1bHRzW2JlbmNobWFya19uYW1lXSkKKyAgICAgICAgICAgIHJlc3VsdCA9ICd7OixkfSB2cy4gezosZH0gKHs6JX0pJy5mb3JtYXQobmV3X3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcmVzdWx0L29sZF9yZXN1bHQpCisgICAgICAgICAgICBwcmludChiZW5jaG1hcmtfbmFtZSwgJzonLCByZXN1bHQpCisgICAgaWYgb3B0aW9ucy5kZXN0X2ZpbGU6CisgICAgICAgIHdpdGggb3B0aW9ucy5kZXN0X2ZpbGU6CisgICAgICAgICAgICBqc29uLmR1bXAobmV3X3Jlc3VsdHMsIG9wdGlvbnMuZGVzdF9maWxlLCBpbmRlbnQ9MikKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnVpbHRpbicsIGRlc3Q9J2J1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0idXNlIHRoZSBidWlsdC1pbiBfX2ltcG9ydF9fIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcicsICctLXJlYWQnLCBkZXN0PSdzb3VyY2VfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCdyJyksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHJlYWQgYmVuY2htYXJrIGRhdGEgZnJvbSB0byBjb21wYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FnYWluc3QnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy13JywgJy0td3JpdGUnLCBkZXN0PSdkZXN0X2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgndycpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZSB0byB3cml0ZSBiZW5jaG1hcmsgZGF0YSB0bycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1iZW5jaG1hcmsnLCBkZXN0PSdiZW5jaG1hcmsnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmaWMgYmVuY2htYXJrIHRvIHJ1bicpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpbXBvcnRfID0gX19pbXBvcnRfXworICAgIGlmIG5vdCBvcHRpb25zLmJ1aWx0aW46CisgICAgICAgIGltcG9ydF8gPSBpbXBvcnRsaWIuX19pbXBvcnRfXworCisgICAgbWFpbihpbXBvcnRfLCBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5IGIvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5CmluZGV4IDVlYzZmMTcuLjUzMGJjNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weQorKysgYi9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkKQEAgLTEsMTMgKzEsMTIgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCiAjIFRoaXMgZmlsZSBzaG91bGQgYmUga2VwdCBjb21wYXRpYmxlIHdpdGggYm90aCBQeXRob24gMi42IGFuZCBQeXRob24gPj0gMy4wLgogCi1pbXBvcnQgdGltZQoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogaW1wb3J0IHN5cwotaW1wb3J0IGhhc2hsaWIKLWltcG9ydCBmdW5jdG9vbHMKLWltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCB0aW1lCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKIAogb3V0ID0gc3lzLnN0ZG91dApAQCAtMzA3LDYgKzMwNiwxNiBAQAogICAgICAgICAibGFyZ2UiOiAyLAogICAgIH0KIAorICAgIHByaW50KCJQeXRob24gJXMiICUgc3lzLnZlcnNpb24pCisgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6CisgICAgICAgICAgICB0ZXh0ID0gIlVDUy00ICh3aWRlIGJ1aWxkKSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRleHQgPSAiVVRGLTE2IChuYXJyb3cgYnVpbGQpIgorICAgIGVsc2U6CisgICAgICAgIHRleHQgPSAiUEVQIDM5MyIKKyAgICBwcmludCgiVW5pY29kZTogJXMiICUgdGV4dCkKKyAgICBwcmludChwbGF0Zm9ybS5wbGF0Zm9ybSgpKQogICAgIGJpbmFyeV9maWxlcyA9IGxpc3QoZ2V0X2JpbmFyeV9maWxlcygpKQogICAgIHRleHRfZmlsZXMgPSBsaXN0KGdldF90ZXh0X2ZpbGVzKCkpCiAgICAgaWYgImIiIGluIG9wdGlvbnM6CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnB5IGIvVG9vbHMvbXNpL21zaS5weQppbmRleCA1MDg4MTZkLi4yMDU3YmViIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpLnB5CisrKyBiL1Rvb2xzL21zaS9tc2kucHkKQEAgLTIsMTIgKzIsMTEgQEAKICMgKEMpIDIwMDMgTWFydGluIHYuIExvZXdpcwogIyBTZWUgIkZPTyIgaW4gY29tbWVudHMgcmVmZXJzIHRvIE1TRE4gc2VjdGlvbnMgd2l0aCB0aGUgdGl0bGUgRk9PLgogaW1wb3J0IG1zaWxpYiwgc2NoZW1hLCBzZXF1ZW5jZSwgb3MsIGdsb2IsIHRpbWUsIHJlLCBzaHV0aWwsIHppcGZpbGUKK2ltcG9ydCBzdWJwcm9jZXNzLCB0ZW1wZmlsZQogZnJvbSBtc2lsaWIgaW1wb3J0IEZlYXR1cmUsIENBQiwgRGlyZWN0b3J5LCBEaWFsb2csIEJpbmFyeSwgYWRkX2RhdGEKIGltcG9ydCB1aXNhbXBsZQogZnJvbSB3aW4zMmNvbS5jbGllbnQgaW1wb3J0IGNvbnN0YW50cwogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQotZnJvbSB1dWlkcyBpbXBvcnQgcHJvZHVjdF9jb2RlcwotaW1wb3J0IHRlbXBmaWxlCiAKICMgU2V0dGluZ3MgY2FuIGJlIG92ZXJyaWRkZW4gaW4gY29uZmlnLnB5IGJlbG93CiAjIDAgZm9yIG9mZmljaWFsIHB5dGhvbi5vcmcgcmVsZWFzZXMKQEAgLTI4LDcgKzI3LDcgQEAKICMgcGF0aCB0byBQQ2J1aWxkIGRpcmVjdG9yeQogUENCVUlMRD0iUENidWlsZCIKICMgbXN2Y3J0IHZlcnNpb24KLU1TVkNSID0gIjkwIgorTVNWQ1IgPSAiMTAwIgogIyBOYW1lIG9mIGNlcnRpZmljYXRlIGluIGRlZmF1bHQgc3RvcmUgdG8gc2lnbiBNU0kgd2l0aAogY2VydG5hbWUgPSBOb25lCiAjIE1ha2UgYSB6aXAgZmlsZSBjb250YWluaW5nIHRoZSBQREIgZmlsZXMgZm9yIHRoaXMgYnVpbGQ/CkBAIC03NywxOSArNzYsMTYgQEAKIAogaWYgc25hcHNob3Q6CiAgICAgY3VycmVudF92ZXJzaW9uID0gIiVzLiVzLiVzIiAlIChtYWpvciwgbWlub3IsIGludCh0aW1lLnRpbWUoKS8zNjAwLzI0KSkKLSAgICBwcm9kdWN0X2NvZGUgPSBtc2lsaWIuZ2VuX3V1aWQoKQotZWxzZToKLSAgICBwcm9kdWN0X2NvZGUgPSBwcm9kdWN0X2NvZGVzW2N1cnJlbnRfdmVyc2lvbl0KIAogaWYgZnVsbF9jdXJyZW50X3ZlcnNpb24gaXMgTm9uZToKICAgICBmdWxsX2N1cnJlbnRfdmVyc2lvbiA9IGN1cnJlbnRfdmVyc2lvbgogCiBleHRlbnNpb25zID0gWwotICAgICdiejIucHlkJywKICAgICAncHlleHBhdC5weWQnLAogICAgICdzZWxlY3QucHlkJywKICAgICAndW5pY29kZWRhdGEucHlkJywKICAgICAnd2luc291bmQucHlkJywKKyAgICAnX2J6Mi5weWQnLAogICAgICdfZWxlbWVudHRyZWUucHlkJywKICAgICAnX3NvY2tldC5weWQnLAogICAgICdfc3NsLnB5ZCcsCkBAIC0xMDAsNyArOTYsMTAgQEAKICAgICAnX2N0eXBlc190ZXN0LnB5ZCcsCiAgICAgJ19zcWxpdGUzLnB5ZCcsCiAgICAgJ19oYXNobGliLnB5ZCcsCi0gICAgJ19tdWx0aXByb2Nlc3NpbmcucHlkJworICAgICdfbXVsdGlwcm9jZXNzaW5nLnB5ZCcsCisgICAgJ19sem1hLnB5ZCcsCisgICAgJ19kZWNpbWFsLnB5ZCcsCisgICAgJ190ZXN0YnVmZmVyLnB5ZCcKIF0KIAogIyBXZWxsLWtub3duIGNvbXBvbmVudCBVVUlEcwpAQCAtMTE5LDEyICsxMTgsMTEgQEAKICAgICAiMzAiOiJ7Njk1M2JjM2ItNjc2OC00MjkxLTg0MTAtNzkxNGNlNmUyY2E4fSIsCiAgICAgIjMxIjoiezRhZmNiYTBiLTEzZTQtNDdjMy1iZWJlLTQ3NzQyOGI0NjkxM30iLAogICAgICIzMiI6InszZmY5NTMxNS0xMDk2LTRkMzEtYmQ4Ni02MDFkNTQzOGFkNWV9IiwKKyAgICAiMzMiOiJ7Zjc1ODFjYTQtZDM2OC00ZWVhLThmODItZDQ4YzY0YzRmMDQ3fSIsCiAgICAgfSBbbWFqb3IrbWlub3JdCiAKICMgQ29tcHV0ZSB0aGUgbmFtZSB0aGF0IFNwaGlueCBnaXZlcyB0byB0aGUgZG9jZmlsZQotZG9jZmlsZSA9ICIiCi1pZiBpbnQobWljcm8pOgotICAgIGRvY2ZpbGUgPSBtaWNybworZG9jZmlsZSA9IG1pY3JvCiBpZiBsZXZlbCA8IDB4ZjoKICAgICBpZiBsZXZlbCA9PSAweEM6CiAgICAgICAgIGRvY2ZpbGUgKz0gInJjJXMiICUgKHNlcmlhbCwpCkBAIC0xODUsMTIgKzE4MywxOSBAQAogbXNpbGliLnNldF9hcmNoX2Zyb21fZmlsZShkbGxfcGF0aCkKIGlmIG1zaWxpYi5wZV90eXBlKGRsbF9wYXRoKSAhPSBtc2lsaWIucGVfdHlwZSgibXNpc3VwcG9ydC5kbGwiKToKICAgICByYWlzZSBTeXN0ZW1FcnJvcigibXNpc3VwcG9ydC5kbGwgZm9yIGluY29ycmVjdCBhcmNoaXRlY3R1cmUiKQorCiBpZiBtc2lsaWIuV2luNjQ6CiAgICAgdXBncmFkZV9jb2RlID0gdXBncmFkZV9jb2RlXzY0Ci0gICAgIyBCdW1wIHRoZSBsYXN0IGRpZ2l0IG9mIHRoZSBjb2RlIGJ5IG9uZSwgc28gdGhhdCAzMi1iaXQgYW5kIDY0LWJpdAotICAgICMgcmVsZWFzZXMgZ2V0IHNlcGFyYXRlIHByb2R1Y3QgY29kZXMKLSAgICBkaWdpdCA9IGhleCgoaW50KHByb2R1Y3RfY29kZVstMl0sMTYpKzEpJTE2KVstMV0KLSAgICBwcm9kdWN0X2NvZGUgPSBwcm9kdWN0X2NvZGVbOi0yXSArIGRpZ2l0ICsgJ30nCisKK2lmIHNuYXBzaG90OgorICAgIHByb2R1Y3RfY29kZSA9IG1zaWxpYi5nZW5fdXVpZCgpCitlbHNlOgorICAgICMgb2ZmaWNpYWwgcmVsZWFzZTogZ2VuZXJhdGUgVVVJRCBmcm9tIHRoZSBkb3dubG9hZCBsaW5rIHRoYXQgdGhlIGZpbGUgd2lsbCBoYXZlCisgICAgaW1wb3J0IHV1aWQKKyAgICBwcm9kdWN0X2NvZGUgPSB1dWlkLnV1aWQzKHV1aWQuTkFNRVNQQUNFX1VSTCwKKyAgICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyVzLiVzLiVzL3B5dGhvbi0lcyVzLm1zaScgJQorICAgICAgICAgICAgICAgICAgICAobWFqb3IsIG1pbm9yLCBtaWNybywgZnVsbF9jdXJyZW50X3ZlcnNpb24sIG1zaWxpYi5hcmNoX2V4dCkpCisgICAgcHJvZHVjdF9jb2RlID0gJ3slc30nICUgcHJvZHVjdF9jb2RlCiAKIGlmIHRlc3RwYWNrYWdlOgogICAgIGV4dCA9ICdweCcKQEAgLTI4MSw3ICsyODYsNyBAQAogICAgICAgICAgICAgICBOb25lLCBtaWdyYXRlX2ZlYXR1cmVzLCBOb25lLCAiUkVNT1ZFT0xEU05BUFNIT1QiKV0pCiAgICAgICAgIHByb3BzID0gIlJFTU9WRU9MRFNOQVBTSE9UO1JFTU9WRU9MRFZFUlNJT04iCiAKLSAgICBwcm9wcyArPSAiO1RBUkdFVERJUjtETExESVIiCisgICAgcHJvcHMgKz0gIjtUQVJHRVRESVI7RExMRElSO0xBVU5DSEVSRElSIgogICAgICMgSW5zdGFsbGVyIGNvbGxlY3RzIHRoZSBwcm9kdWN0IGNvZGVzIG9mIHRoZSBlYXJsaWVyIHJlbGVhc2VzIGluCiAgICAgIyB0aGVzZSBwcm9wZXJ0aWVzLiBJbiBvcmRlciB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgdGhlIHByb3BlcnRpZXMsCiAgICAgIyB0aGV5IG11c3QgYmUgZGVjbGFyZWQgYXMgc2VjdXJlLiBTZWUgIlNlY3VyZUN1c3RvbVByb3BlcnRpZXMgUHJvcGVydHkiCkBAIC00MjEsNiArNDI2LDggQEAKICAgICAgICAgICJbV2luZG93c1ZvbHVtZV1QeXRob24lcyVzIiAlIChtYWpvciwgbWlub3IpKSwKICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsIDMwNywgIkRMTERJUiIsICJbVEFSR0VURElSXSIpLAogICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAzMDcsICJETExESVIiLCBTeXN0ZW1Gb2xkZXJOYW1lKSwKKyAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1RBUkdFVERJUl0iKSwKKyAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsIDMwNywgIkxBVU5DSEVSRElSIiwgIltXaW5kb3dzRm9sZGVyXSIpLAogICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZUV4ZSArIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZVNvdXJjZUZpbGUKICAgICAgICAgIyBTZWUgIkN1c3RvbSBBY3Rpb24gVHlwZSAxOCIKICAgICAgICAgKCJDb21waWxlUHljIiwgMTgsICJweXRob24uZXhlIiwgY29tcGlsZWFyZ3MpLApAQCAtNDM3LDYgKzQ0NCw4IEBACiAgICAgICAgICAgICAgICMgSW4gdGhlIHVzZXIgaW50ZXJmYWNlLCBhc3N1bWUgYWxsLXVzZXJzIGluc3RhbGxhdGlvbiBpZiBwcml2aWxlZ2VkLgogICAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAogICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1MiksCisgICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAnTEFVTkNIRVJESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MyksCisgICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCiAgICAgICAgICAgICAgICgiU2VsZWN0RGlyZWN0b3J5RGxnIiwgIk5vdCBJbnN0YWxsZWQiLCAxMjMwKSwKICAgICAgICAgICAgICAgIyBYWFggbm8gc3VwcG9ydCBmb3IgcmVzdW1lIGluc3RhbGxhdGlvbnMgeWV0CiAgICAgICAgICAgICAgICMoIlJlc3VtZURsZyIsICJJbnN0YWxsZWQgQU5EIChSRVNVTUUgT1IgUHJlc2VsZWN0ZWQpIiwgMTI0MCksCkBAIC00NDUsMTMgKzQ1NCwyMCBAQAogICAgIGFkZF9kYXRhKGRiLCAiQWRtaW5VSVNlcXVlbmNlIiwKICAgICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiJywgNzUxKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiJywgNzUyKSwKICAgICAgICAgICAgICBdKQogCisgICAgIyBQcmVwZW5kIFRBUkdFVERJUiB0byB0aGUgc3lzdGVtIHBhdGgsIGFuZCByZW1vdmUgaXQgb24gdW5pbnN0YWxsLgorICAgIGFkZF9kYXRhKGRiLCAiRW52aXJvbm1lbnQiLAorICAgICAgICAgICAgIFsoIlBhdGhBZGRpdGlvbiIsICI9LSpQYXRoIiwgIltUQVJHRVRESVJdO1t+XSIsICJSRUdJU1RSWS5wYXRoIildKQorCiAgICAgIyBFeGVjdXRlIFNlcXVlbmNlcwogICAgIGFkZF9kYXRhKGRiLCAiSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSIsCiAgICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCiAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgJ0RMTERJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUxKSwKICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1MiksCisgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTQpLAogICAgICAgICAgICAgICgiVXBkYXRlRWRpdElETEUiLCBOb25lLCAxMDUwKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVQeWMiLCAiQ09NUElMRUFMTCIsIDY4MDApLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5byIsICJDT01QSUxFQUxMIiwgNjgwMSksCkBAIC00NjAsNiArNDc2LDcgQEAKICAgICBhZGRfZGF0YShkYiwgIkFkbWluRXhlY3V0ZVNlcXVlbmNlIiwKICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIicsIDc1MSksCisgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiJywgNzUyKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVQeWMiLCAiQ09NUElMRUFMTCIsIDY4MDApLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5byIsICJDT01QSUxFQUxMIiwgNjgwMSksCiAgICAgICAgICAgICAgKCJDb21waWxlR3JhbW1hciIsICJDT01QSUxFQUxMIiwgNjgwMiksCkBAIC02NzAsMTEgKzY4NywxMSBAQAogICAgIGM9ZmVhdHVyZXMueGJ1dHRvbigiQWR2YW5jZWQiLCAiQWR2YW5jZWQiLCBOb25lLCAwLjMwKQogICAgIGMuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkFkdmFuY2VkRGxnIikKIAotICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbURlc2NyaXB0aW9uIiwgMTQwLCAxODAsIDIxMCwgMzAsIDMsCisgICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtRGVzY3JpcHRpb24iLCAxNDAsIDE4MCwgMjEwLCA0MCwgMywKICAgICAgICAgICAgICAgICAgICJNdWx0aWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLiIpCiAgICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25EZXNjcmlwdGlvbiIsIlRleHQiKQogCi0gICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtU2l6ZSIsIDE0MCwgMjEwLCAyMTAsIDQ1LCAzLAorICAgIGM9ZmVhdHVyZXMudGV4dCgiSXRlbVNpemUiLCAxNDAsIDIyNSwgMjEwLCAzMywgMywKICAgICAgICAgICAgICAgICAgICAgIlRoZSBzaXplIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4iKQogICAgIGMubWFwcGluZygiU2VsZWN0aW9uU2l6ZSIsICJUZXh0IikKIApAQCAtODI4LDcgKzg0NSw3IEBACiAgICAgIyAoaS5lLiBhZGRpdGlvbmFsIFB5dGhvbiBsaWJyYXJpZXMpIG5lZWQgdG8gZm9sbG93IHRoZSBwYXJlbnQgZmVhdHVyZS4KICAgICAjIEZlYXR1cmVzIHRoYXQgaGF2ZSBubyBhZHZlcnRpc2VtZW50IHRyaWdnZXIgKGUuZy4gdGhlIHRlc3Qgc3VpdGUpCiAgICAgIyBtdXN0IG5vdCBzdXBwb3J0IGFkdmVydGlzZW1lbnQKLSAgICBnbG9iYWwgZGVmYXVsdF9mZWF0dXJlLCB0Y2x0aywgaHRtbGZpbGVzLCB0b29scywgdGVzdHN1aXRlLCBleHRfZmVhdHVyZSwgcHJpdmF0ZV9jcnQKKyAgICBnbG9iYWwgZGVmYXVsdF9mZWF0dXJlLCB0Y2x0aywgaHRtbGZpbGVzLCB0b29scywgdGVzdHN1aXRlLCBleHRfZmVhdHVyZSwgcHJpdmF0ZV9jcnQsIHByZXBlbmRfcGF0aAogICAgIGRlZmF1bHRfZmVhdHVyZSA9IEZlYXR1cmUoZGIsICJEZWZhdWx0RmVhdHVyZSIsICJQeXRob24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBJbnRlcnByZXRlciBhbmQgTGlicmFyaWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGRpcmVjdG9yeSA9ICJUQVJHRVRESVIiKQpAQCAtODQ4LDMyICs4NjUsMzggQEAKICAgICBodG1sZmlsZXMgPSBGZWF0dXJlKGRiLCAiRG9jdW1lbnRhdGlvbiIsICJEb2N1bWVudGF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gSFRNTEhlbHAgRmlsZSIsIDcsIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSkKICAgICB0b29scyA9IEZlYXR1cmUoZGIsICJUb29scyIsICJVdGlsaXR5IFNjcmlwdHMiLAotICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvIiwgOSwKKyAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB1dGlsaXR5IHNjcmlwdHMgKFRvb2xzLykiLCA5LAogICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9MikKICAgICB0ZXN0c3VpdGUgPSBGZWF0dXJlKGRiLCAiVGVzdHN1aXRlIiwgIlRlc3Qgc3VpdGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB0ZXN0IHN1aXRlIChMaWIvdGVzdC8pIiwgMTEsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4KQorICAgICMgcHJlcGVuZF9wYXRoIGlzIGFuIGFkZGl0aW9uYWwgZmVhdHVyZSB3aGljaCBpcyB0byBiZSBvZmYgYnkgZGVmYXVsdC4KKyAgICAjIFNpbmNlIHRoZSBkZWZhdWx0IGxldmVsIGZvciB0aGUgYWJvdmUgZmVhdHVyZXMgaXMgMSwgdGhpcyBuZWVkcyB0byBiZQorICAgICMgYXQgbGVhc3QgbGV2ZWwgaGlnaGVyLgorICAgIHByZXBlbmRfcGF0aCA9IEZlYXR1cmUoZGIsICJQcmVwZW5kUGF0aCIsICJBZGQgcHl0aG9uLmV4ZSB0byBQYXRoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQcmVwZW5kIFtUQVJHRVRESVJdIHRvIHRoZSBzeXN0ZW0gUGF0aCB2YXJpYWJsZS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgYWxsb3dzIHlvdSB0byB0eXBlICdweXRob24nIGludG8gYSBjb21tYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJwcm9tcHQgd2l0aG91dCBuZWVkaW5nIHRoZSBmdWxsIHBhdGguIiwgMTMsCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4LAorICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MikKIAotZGVmIGV4dHJhY3RfbXN2Y3I5MCgpOgorZGVmIGV4dHJhY3RfbXN2Y3IxMDAoKToKICAgICAjIEZpbmQgdGhlIHJlZGlzdHJpYnV0YWJsZSBmaWxlcwogICAgIGlmIG1zaWxpYi5XaW42NDoKLSAgICAgICAgYXJjaCA9ICJhbWQ2NCIKKyAgICAgICAgYXJjaCA9ICJ4NjQiCiAgICAgZWxzZToKICAgICAgICAgYXJjaCA9ICJ4ODYiCi0gICAgZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1ZTOTBDT01OVE9PTFMnXSwgciIuLlwuLlxWQ1xyZWRpc3RcJXNcTWljcm9zb2Z0LlZDOTAuQ1JUIiAlIGFyY2gpCisgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ1ZTMTAwQ09NTlRPT0xTJ10sIHIiLi5cLi5cVkNccmVkaXN0XCVzXE1pY3Jvc29mdC5WQzEwMC5DUlQiICUgYXJjaCkKIAogICAgIHJlc3VsdCA9IFtdCiAgICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQotICAgICMgb21pdCBtc3ZjbTkwIGFuZCBtc3ZjcDkwLCBhcyB0aGV5IGFyZW4ndCByZWFsbHkgbmVlZGVkCi0gICAgZmlsZXMgPSBbIk1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIsICJtc3ZjcjkwLmRsbCJdCi0gICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBmKQotICAgICAgICBrdyA9IHsnc3JjJzpwYXRofQotICAgICAgICBpZiBmLmVuZHN3aXRoKCcuZGxsJyk6Ci0gICAgICAgICAgICBrd1sndmVyc2lvbiddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDApCi0gICAgICAgICAgICBrd1snbGFuZ3VhZ2UnXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAxKQotICAgICAgICByZXN1bHQuYXBwZW5kKChmLCBrdykpCi0gICAgcmV0dXJuIHJlc3VsdAorICAgICMgQXQgbGVhc3QgZm9yIFZTMjAxMCwgbWFuaWZlc3RzIGFyZSBubyBsb25nZXIgcHJvdmlkZWQKKyAgICBuYW1lID0gIm1zdmNyMTAwLmRsbCIKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpciwgbmFtZSkKKyAgICBrdyA9IHsnc3JjJzpwYXRofQorICAgIGt3Wyd2ZXJzaW9uJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMCkKKyAgICBrd1snbGFuZ3VhZ2UnXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAxKQorICAgIHJldHVybiBuYW1lLCBrdwogCiBkZWYgZ2VuZXJhdGVfbGljZW5zZSgpOgogICAgIGltcG9ydCBzaHV0aWwsIGdsb2IKQEAgLTg4OSw3ICs5MTIsNyBAQAogICAgICAgICBkaXJzID0gZ2xvYi5nbG9iKHNyY2RpcisiLy4uLyIrcGF0KQogICAgICAgICBpZiBub3QgZGlyczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJDb3VsZCBub3QgZmluZCAiK3NyY2RpcisiLy4uLyIrcGF0Ci0gICAgICAgIGlmIGxlbihkaXJzKSA+IDI6CisgICAgICAgIGlmIGxlbihkaXJzKSA+IDIgYW5kIG5vdCBzbmFwc2hvdDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJNdWx0aXBsZSBjb3BpZXMgb2YgIitwYXQKICAgICAgICAgZGlyID0gZGlyc1swXQogICAgICAgICBzaHV0aWwuY29weWZpbGVvYmoob3Blbihvcy5wYXRoLmpvaW4oZGlyLCBmaWxlKSksIG91dCkKQEAgLTkwNCwxNiArOTI3LDI4IEBACiAgICAgICAgICAgICBrd1snY29tcG9uZW50ZmxhZ3MnXSA9IDIgI21zaWRiQ29tcG9uZW50QXR0cmlidXRlc09wdGlvbmFsCiAgICAgICAgIERpcmVjdG9yeS5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKIAotICAgIGRlZiBjaGVja191bnBhY2thZ2VkKHNlbGYpOgotICAgICAgICBzZWxmLnVucGFja2FnZWRfZmlsZXMuZGlzY2FyZCgnX19weWNhY2hlX18nKQotICAgICAgICBzZWxmLnVucGFja2FnZWRfZmlsZXMuZGlzY2FyZCgnLnN2bicpCi0gICAgICAgIGlmIHNlbGYudW5wYWNrYWdlZF9maWxlczoKLSAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBVbnBhY2thZ2VkIGZpbGVzIGluICVzIiAlIHNlbGYuYWJzb2x1dGUKLSAgICAgICAgICAgIHByaW50IHNlbGYudW5wYWNrYWdlZF9maWxlcworZGVmIGhnbWFuaWZlc3QoKToKKyAgICAjIEZldGNoIGZpbGUgbGlzdCBmcm9tIE1lcmN1cmlhbAorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAnbWFuaWZlc3QnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICMgQ3JlYXRlIG5lc3RlZCBkaXJlY3RvcmllcyBmb3IgZmlsZSB0cmVlCisgICAgcmVzdWx0ID0ge30KKyAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgorICAgICAgICBjb21wb25lbnRzID0gbGluZS5zcGxpdCgnLycpCisgICAgICAgIGQgPSByZXN1bHQKKyAgICAgICAgd2hpbGUgbGVuKGNvbXBvbmVudHMpID4gMToKKyAgICAgICAgICAgIGQxID0gZC5zZXRkZWZhdWx0KGNvbXBvbmVudHNbMF0sIHt9KQorICAgICAgICAgICAgZCA9IGQxCisgICAgICAgICAgICBkZWwgY29tcG9uZW50c1swXQorICAgICAgICBkW2NvbXBvbmVudHNbMF1dID0gTm9uZQorICAgIHJldHVybiByZXN1bHQKKwogCiAjIFNlZSAiRmlsZSBUYWJsZSIsICJDb21wb25lbnQgVGFibGUiLCAiRGlyZWN0b3J5IFRhYmxlIiwKICMgIkZlYXR1cmVDb21wb25lbnRzIFRhYmxlIgogZGVmIGFkZF9maWxlcyhkYik6CisgICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQorICAgIGhnZmlsZXMgPSBoZ21hbmlmZXN0KCkKICAgICBjYWIgPSBDQUIoInB5dGhvbiIpCiAgICAgdG1wZmlsZXMgPSBbXQogICAgICMgQWRkIGFsbCBleGVjdXRhYmxlcywgaWNvbnMsIHRleHQgZmlsZXMgaW50byB0aGUgVEFSR0VURElSIGNvbXBvbmVudApAQCAtOTMyLDExICs5NjcsMzIgQEAKIAogICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzU2hhcmVkRGxsUmVmQ291bnQgPSA4LCBzZWUgIkNvbXBvbmVudCBUYWJsZSIKICAgICBkbGxkaXIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBzcmNkaXIsICJETExESVIiLCAiLiIpCisgICAgbGF1bmNoZXJkaXIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCBzcmNkaXIsICJMQVVOQ0hFUkRJUiIsICIuIikKKworICAgICMgbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzNjRiaXQgPSAyNTY7IHRoaXMgZGlzYWJsZXMgcmVnaXN0cnkgcmVkaXJlY3Rpb24KKyAgICAjIHRvIGFsbG93IHNldHRpbmcgdGhlIFNoYXJlZERMTHMga2V5IGluIHRoZSA2NC1iaXQgcG9ydGlvbiBldmVuIGZvciBhCisgICAgIyAzMi1iaXQgaW5zdGFsbGVyLgorICAgICMgWFhYIGRvZXMgdGhpcyBzdGlsbCBhbGxvdyB0byBpbnN0YWxsIHRoZSBjb21wb25lbnQgb24gYSAzMi1iaXQgc3lzdGVtPworICAgICMgUGljayB1cCAzMi1iaXQgYmluYXJ5IGFsd2F5cworICAgIGxhdW5jaGVyc3JjID0gUENCVUlMRAorICAgIGlmIGxhdW5jaGVyc3JjLmxvd2VyKCkgPT0gJ3BjYnVpbGRcXHg2NC1wZ28nOgorICAgICAgICBsYXVuY2hlcnNyYyA9ICdQQ0J1aWxkXFx3aW4zMi1wZ28nCisgICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxcYW1kNjQnOgorICAgICAgICBsYXVuY2hlcnNyYyA9ICdQQ0J1aWxkJworICAgIGxhdW5jaGVyID0gb3MucGF0aC5qb2luKHNyY2RpciwgbGF1bmNoZXJzcmMsICJweS5leGUiKQorICAgIGxhdW5jaGVyZGlyLnN0YXJ0X2NvbXBvbmVudCgibGF1bmNoZXIiLCBmbGFncyA9IDgrMjU2LCBrZXlmaWxlPSJweS5leGUiKQorICAgIGxhdW5jaGVyZGlyLmFkZF9maWxlKGxhdW5jaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249aW5zdGFsbGVyLkZpbGVWZXJzaW9uKGxhdW5jaGVyLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXIsIDEpKQorICAgIGxhdW5jaGVydyA9IG9zLnBhdGguam9pbihzcmNkaXIsIGxhdW5jaGVyc3JjLCAicHl3LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuc3RhcnRfY29tcG9uZW50KCJsYXVuY2hlcnciLCBmbGFncyA9IDgrMjU2LCBrZXlmaWxlPSJweXcuZXhlIikKKyAgICBsYXVuY2hlcmRpci5hZGRfZmlsZShsYXVuY2hlcncsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXJ3LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZT1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXJ3LCAxKSkKIAogICAgIHB5ZGxsID0gInB5dGhvbiVzJXMuZGxsIiAlIChtYWpvciwgbWlub3IpCiAgICAgcHlkbGxzcmMgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBweWRsbCkKICAgICBkbGxkaXIuc3RhcnRfY29tcG9uZW50KCJETExESVIiLCBmbGFncyA9IDgsIGtleWZpbGUgPSBweWRsbCwgdXVpZCA9IHB5dGhvbmRsbF91dWlkKQotICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKICAgICBweXZlcnNpb24gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocHlkbGxzcmMsIDApCiAgICAgaWYgbm90IHNuYXBzaG90OgogICAgICAgICAjIEZvciByZWxlYXNlcywgdGhlIFB5dGhvbiBETEwgaGFzIHRoZSBzYW1lIHZlcnNpb24gYXMgdGhlCkBAIC05NTIsOSArMTAwOCw4IEBACiAgICAgIyBwb2ludGluZyB0byB0aGUgcm9vdCBkaXJlY3RvcnkKICAgICByb290LnN0YXJ0X2NvbXBvbmVudCgibXN2Y3I5MCIsIGZlYXR1cmU9cHJpdmF0ZV9jcnQpCiAgICAgIyBSZXN1bHRzIGFyZSBJRCxrZXl3b3JkIHBhaXJzCi0gICAgbWFuaWZlc3QsIGNydGRsbCA9IGV4dHJhY3RfbXN2Y3I5MCgpCi0gICAgcm9vdC5hZGRfZmlsZShtYW5pZmVzdFswXSwgKiptYW5pZmVzdFsxXSkKLSAgICByb290LmFkZF9maWxlKGNydGRsbFswXSwgKipjcnRkbGxbMV0pCisgICAgY3J0ZGxsLCBrd2RzID0gZXh0cmFjdF9tc3ZjcjEwMCgpCisgICAgcm9vdC5hZGRfZmlsZShjcnRkbGwsICoqa3dkcykKICAgICAjIENvcHkgdGhlIG1hbmlmZXN0CiAgICAgIyBBY3R1YWxseSwgZG9uJ3QgZG8gdGhhdCBhbnltb3JlIC0gbm8gRExMIGluIERMTHMgc2hvdWxkIGhhdmUgYSBtYW5pZmVzdAogICAgICMgZGVwZW5kZW5jeSBvbiBtc3ZjcjkwLmRsbCBhbnltb3JlLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5CkBAIC05NzUsMTA0ICsxMDMwLDQwIEBACiAKICAgICAjIEFkZCBhbGwgLnB5IGZpbGVzIGluIExpYiwgZXhjZXB0IHRraW50ZXIsIHRlc3QKICAgICBkaXJzID0gW10KLSAgICBweWRpcnMgPSBbKHJvb3QsIkxpYiIpXQorICAgIHB5ZGlycyA9IFsocm9vdCwgIkxpYiIsIGhnZmlsZXNbIkxpYiJdLCBkZWZhdWx0X2ZlYXR1cmUpXQogICAgIHdoaWxlIHB5ZGlyczoKICAgICAgICAgIyBDb21taXQgZXZlcnkgbm93IGFuZCB0aGVuLCBvciBlbHNlIGluc3RhbGxlciB3aWxsIGNvbXBsYWluCiAgICAgICAgIGRiLkNvbW1pdCgpCi0gICAgICAgIHBhcmVudCwgZGlyID0gcHlkaXJzLnBvcCgpCi0gICAgICAgIGlmIGRpciA9PSAiLnN2biIgb3IgZGlyID09ICdfX3B5Y2FjaGVfXycgb3IgZGlyLnN0YXJ0c3dpdGgoInBsYXQtIik6CisgICAgICAgIHBhcmVudCwgZGlyLCBmaWxlcywgZmVhdHVyZSA9IHB5ZGlycy5wb3AoKQorICAgICAgICBpZiBkaXIuc3RhcnRzd2l0aCgicGxhdC0iKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgZGlyIGluIFsidGtpbnRlciIsICJpZGxlbGliIiwgIkljb25zIl06CisgICAgICAgIGlmIGRpciBpbiBbInRraW50ZXIiLCAiaWRsZWxpYiIsICJ0dXJ0bGVkZW1vIl06CiAgICAgICAgICAgICBpZiBub3QgaGF2ZV90Y2w6CiAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZlYXR1cmUgPSB0Y2x0awogICAgICAgICAgICAgdGNsdGsuc2V0X2N1cnJlbnQoKQotICAgICAgICBlbGlmIGRpciBpbiBbJ3Rlc3QnLCAndGVzdHMnLCAnZGF0YScsICdvdXRwdXQnXToKLSAgICAgICAgICAgICMgdGVzdDogTGliLCBMaWIvZW1haWwsIExpYi9jdHlwZXMsIExpYi9zcWxpdGUzCi0gICAgICAgICAgICAjIHRlc3RzOiBMaWIvZGlzdHV0aWxzCi0gICAgICAgICAgICAjIGRhdGE6IExpYi9lbWFpbC90ZXN0Ci0gICAgICAgICAgICAjIG91dHB1dDogTGliL3Rlc3QKLSAgICAgICAgICAgIHRlc3RzdWl0ZS5zZXRfY3VycmVudCgpCisgICAgICAgIGVsaWYgZGlyIGluICgndGVzdCcsICd0ZXN0cycpOgorICAgICAgICAgICAgZmVhdHVyZSA9IHRlc3RzdWl0ZQogICAgICAgICBlbGlmIG5vdCBoYXZlX2N0eXBlcyBhbmQgZGlyID09ICJjdHlwZXMiOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCisgICAgICAgIGZlYXR1cmUuc2V0X2N1cnJlbnQoKQogICAgICAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCBwYXJlbnQsIGRpciwgZGlyLCAiJXN8JXMiICUgKHBhcmVudC5tYWtlX3Nob3J0KGRpciksIGRpcikpCi0gICAgICAgICMgQWRkIGFkZGl0aW9uYWwgZmlsZXMKICAgICAgICAgZGlycy5hcHBlbmQobGliKQotICAgICAgICBsaWIuZ2xvYigiKi50eHQiKQotICAgICAgICBpZiBkaXI9PSdzaXRlLXBhY2thZ2VzJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZpbGVzID0gbGliLmdsb2IoIioucHkiKQotICAgICAgICBmaWxlcyArPSBsaWIuZ2xvYigiKi5weXciKQotICAgICAgICBpZiBmaWxlczoKLSAgICAgICAgICAgICMgQWRkIGFuIGVudHJ5IHRvIHRoZSBSZW1vdmVGaWxlIHRhYmxlIHRvIHJlbW92ZSBieXRlY29kZSBmaWxlcy4KLSAgICAgICAgICAgIGxpYi5yZW1vdmVfcHljKCkKLSAgICAgICAgIyBwYWNrYWdlIFJFQURNRXMgaWYgcHJlc2VudAotICAgICAgICBsaWIuZ2xvYigiUkVBRE1FIikKLSAgICAgICAgaWYgZGlyPT0nTGliJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgnd3NnaXJlZi5lZ2ctaW5mbycpCi0gICAgICAgIGlmIGRpcj09J3Rlc3QnIGFuZCBwYXJlbnQucGh5c2ljYWw9PSdMaWInOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCIxODV0ZXN0LmRiIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiYXVkaW90ZXN0LmF1IikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgic2dtbF9pbnB1dC5odG1sIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgidGVzdHRhci50YXIiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ0ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJjaGVja19zb3VuZGNhcmQudmJzIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiZW1wdHkudmJzIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiU2luZS0xMDAwSHotMzAwbXMuYWlmIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgibWltZS50eXBlcyIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiKi51dWUiKQotICAgICAgICAgICAgbGliLmdsb2IoIioucGVtIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnBjayIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiY2ZncGFyc2VyLioiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ6aXBfY3A0MzdfaGVhZGVyLnppcCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInppcGRpci56aXAiKQotICAgICAgICBpZiBkaXI9PSdjYXBhdGgnOgotICAgICAgICAgICAgbGliLmdsb2IoIiouMCIpCi0gICAgICAgIGlmIGRpcj09J3Rlc3RzJyBhbmQgcGFyZW50LnBoeXNpY2FsPT0nZGlzdHV0aWxzJzoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiU2V0dXAuc2FtcGxlIikKLSAgICAgICAgaWYgZGlyPT0nZGVjaW1hbHRlc3RkYXRhJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLmRlY1Rlc3QiKQotICAgICAgICBpZiBkaXI9PSd4bWx0ZXN0ZGF0YSc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi54bWwiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ0ZXN0LnhtbC5vdXQiKQotICAgICAgICBpZiBkaXI9PSdvdXRwdXQnOgotICAgICAgICAgICAgbGliLmdsb2IoInRlc3RfKiIpCi0gICAgICAgIGlmIGRpcj09J3NuZGhkcmRhdGEnOgotICAgICAgICAgICAgbGliLmdsb2IoInNuZGhkci4qIikKLSAgICAgICAgaWYgZGlyPT0naWRsZWxpYic6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi5kZWYiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJpZGxlLmJhdCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIkNoYW5nZUxvZyIpCi0gICAgICAgIGlmIGRpcj09Ikljb25zIjoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLmdpZiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImlkbGUuaWNucyIpCi0gICAgICAgIGlmIGRpcj09ImNvbW1hbmQiIGFuZCBwYXJlbnQucGh5c2ljYWw9PSJkaXN0dXRpbHMiOgotICAgICAgICAgICAgbGliLmdsb2IoIndpbmluc3QqLmV4ZSIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImNvbW1hbmRfdGVtcGxhdGUiKQotICAgICAgICBpZiBkaXI9PSJsaWIydG8zIjoKLSAgICAgICAgICAgIGxpYi5yZW1vdmVmaWxlKCJwaWNrbGUiLCAiKi5waWNrbGUiKQotICAgICAgICBpZiBkaXI9PSJtYWNob2xpYiI6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS5jdHlwZXMiKQotICAgICAgICAgICAgbGliLmdsb2IoImZldGNoX21hY2hvbGliKiIpCi0gICAgICAgIGlmIGRpcj09J3R1cnRsZWRlbW8nOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ0dXJ0bGUuY2ZnIikKLSAgICAgICAgaWYgZGlyPT0icHlkb2NfZGF0YSI6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIl9weWRvYy5jc3MiKQotICAgICAgICBpZiBkaXI9PSJkYXRhIiBhbmQgcGFyZW50LnBoeXNpY2FsPT0idGVzdCIgYW5kIHBhcmVudC5iYXNlZGlyLnBoeXNpY2FsPT0iZW1haWwiOgotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBjb250YWluIGFsbCBub24tLnN2biBmaWxlcyBsaXN0ZWQgaW4gc3VidmVyc2lvbgotICAgICAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihsaWIuYWJzb2x1dGUpOgotICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoIi50eHQiKSBvciBmPT0iLnN2biI6Y29udGludWUKLSAgICAgICAgICAgICAgICBpZiBmLmVuZHN3aXRoKCIuYXUiKSBvciBmLmVuZHN3aXRoKCIuZ2lmIik6Ci0gICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShmKQorICAgICAgICBoYXNfcHkgPSBGYWxzZQorICAgICAgICBmb3IgbmFtZSwgc3ViZGlyIGluIGZpbGVzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBzdWJkaXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGxpYi5hYnNvbHV0ZSwgbmFtZSkpCisgICAgICAgICAgICAgICAgaWYgbmFtZSA9PSAnUkVBRE1FJzoKKyAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBOZXcgZmlsZSAlcyBpbiBlbWFpbC90ZXN0L2RhdGEiICUgZikKLSAgICAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihsaWIuYWJzb2x1dGUpOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBmKSk6Ci0gICAgICAgICAgICAgICAgcHlkaXJzLmFwcGVuZCgobGliLCBmKSkKLSAgICBmb3IgZCBpbiBkaXJzOgotICAgICAgICBkLmNoZWNrX3VucGFja2FnZWQoKQorICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgaGFzX3B5ID0gaGFzX3B5IG9yIG5hbWUuZW5kc3dpdGgoIi5weSIpIG9yIG5hbWUuZW5kc3dpdGgoIi5weXciKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBweWRpcnMuYXBwZW5kKChsaWIsIG5hbWUsIHN1YmRpciwgZmVhdHVyZSkpCisKKyAgICAgICAgaWYgaGFzX3B5OgorICAgICAgICAgICAgbGliLnJlbW92ZV9weWMoKQogICAgICMgQWRkIERMTHMKICAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQogICAgIGxpYiA9IERMTHMKQEAgLTExNTksNiArMTE1MCw4IEBACiAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCiAgICAgICAgIGlmIGYgPT0gJ1NjcmlwdHMnOgogICAgICAgICAgICAgbGliLmFkZF9maWxlKCIydG8zLnB5Iiwgc3JjPSIydG8zIikKKyAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHlkb2MzLnB5Iiwgc3JjPSJweWRvYzMiKQorICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweXZlbnYucHkiLCBzcmM9InB5dmVudiIpCiAgICAgICAgICAgICBpZiBoYXZlX3RjbDoKICAgICAgICAgICAgICAgICBsaWIuc3RhcnRfY29tcG9uZW50KCJweWRvY2d1aS5weXciLCB0Y2x0aywga2V5ZmlsZT0icHlkb2NndWkucHl3IikKICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5ZG9jZ3VpLnB5dyIpCkBAIC0xMTkwLDYgKzExODMsOCBAQAogICAgICAgICAgICAgICAgIkluc3RhbGxQYXRoIiksCiAgICAgICAgICAgICAgICgiUkVHSVNUUlkuZG9jIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCiAgICAgICAgICAgICAgICAiRG9jdW1lbnRhdGlvbiIpLAorICAgICAgICAgICAgICAoIlJFR0lTVFJZLnBhdGgiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKKyAgICAgICAgICAgICAgTm9uZSksCiAgICAgICAgICAgICAgICgiUkVHSVNUUlkuZGVmIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsCiAgICAgICAgICAgICAgICBOb25lLCBOb25lKV0gKyB0Y2xkYXRhKQogICAgICMgU2VlICJGZWF0dXJlQ29tcG9uZW50cyBUYWJsZSIuCkBAIC0xMjA2LDYgKzEyMDEsNyBAQAogICAgIGFkZF9kYXRhKGRiLCAiRmVhdHVyZUNvbXBvbmVudHMiLAogICAgICAgICAgICAgIFsoZGVmYXVsdF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkiKSwKICAgICAgICAgICAgICAgKGh0bWxmaWxlcy5pZCwgIlJFR0lTVFJZLmRvYyIpLAorICAgICAgICAgICAgICAocHJlcGVuZF9wYXRoLmlkLCAiUkVHSVNUUlkucGF0aCIpLAogICAgICAgICAgICAgICAoZXh0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWS5kZWYiKV0gKwogICAgICAgICAgICAgICB0Y2xkYXRhCiAgICAgICAgICAgICAgICkKQEAgLTEyNDQsMTEgKzEyNDAsMTEgQEAKICAgICAgICAgICAgICAgInRleHQvcGxhaW4iLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgI1ZlcmJzCiAgICAgICAgICAgICAgKCJweS5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9uLmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKKyAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKICAgICAgICAgICAgICAoInB5dy5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiTm9Db24iLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob253LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKKyAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5dy5leGUiICIlMSIgJSonLCAiUkVHSVNUUlkuZGVmIiksCiAgICAgICAgICAgICAgKCJweWMub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIkNvbXBpbGVkIiwgIm9wZW4iKSwgIiIsCi0gICAgICAgICAgICAgIHInIltUQVJHRVRESVJdcHl0aG9uLmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKKyAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKICAgICAgICAgICAgICBdICsgdGNsX3ZlcmJzICsgWwogICAgICAgICAgICAgICNJY29ucwogICAgICAgICAgICAgICgicHkuaWNvbiIsIC0xLCBwYXQyICUgKHRlc3RwcmVmaXgsICIiKSwgIiIsCkBAIC0xMzQ3LDkgKzEzNDMsOSBAQAogIyBNZXJnZSBDUlQgaW50byBNU0kgZmlsZS4gVGhpcyByZXF1aXJlcyB0aGUgZGF0YWJhc2UgdG8gYmUgY2xvc2VkLgogbW9kX2RpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWyJQcm9ncmFtRmlsZXMiXSwgIkNvbW1vbiBGaWxlcyIsICJNZXJnZSBNb2R1bGVzIikKIGlmIG1zaWxpYi5XaW42NDoKLSAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkM5MF9DUlRfeDg2X3g2NC5tc20iLCAicG9saWN5XzlfMF9NaWNyb3NvZnRfVkM5MF9DUlRfeDg2X3g2NC5tc20iXQorICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzEwMF9DUlRfeDY0Lm1zbSJdCiBlbHNlOgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzkwX0NSVF94ODYubXNtIiwicG9saWN5XzlfMF9NaWNyb3NvZnRfVkM5MF9DUlRfeDg2Lm1zbSJdCisgICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDMTAwX0NSVF94ODYubXNtIl0KIAogZm9yIGksIG4gaW4gZW51bWVyYXRlKG1vZHVsZXMpOgogICAgIG1vZHVsZXNbaV0gPSBvcy5wYXRoLmpvaW4obW9kX2RpciwgbikKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2lsaWIucHkgYi9Ub29scy9tc2kvbXNpbGliLnB5CmluZGV4IDU3OTVkMGUuLjQ3MmQ5ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2lsaWIucHkKKysrIGIvVG9vbHMvbXNpL21zaWxpYi5weQpAQCAtNDA4LDcgKzQwOCw3IEBACiAgICAgICAgIHNlbGYucGh5c2ljYWwgPSBwaHlzaWNhbAogICAgICAgICBzZWxmLmxvZ2ljYWwgPSBsb2dpY2FsCiAgICAgICAgIHNlbGYuY29tcG9uZW50ID0gTm9uZQotICAgICAgICBzZWxmLnNob3J0X25hbWVzID0gc2V0cy5TZXQoKQorICAgICAgICBzZWxmLnNob3J0X25hbWVzID0ge30KICAgICAgICAgc2VsZi5pZHMgPSBzZXRzLlNldCgpCiAgICAgICAgIHNlbGYua2V5ZmlsZXMgPSB7fQogICAgICAgICBzZWxmLmNvbXBvbmVudGZsYWdzID0gY29tcG9uZW50ZmxhZ3MKQEAgLTQ1NiwyMyArNDU2LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBbKGZlYXR1cmUuaWQsIGNvbXBvbmVudCldKQogCiAgICAgZGVmIG1ha2Vfc2hvcnQoc2VsZiwgZmlsZSk6CisgICAgICAgIGxvbmcgPSBmaWxlCiAgICAgICAgIGZpbGUgPSByZS5zdWIocidbXD98Pjw6LyoiKyw7PVxbXF1dJywgJ18nLCBmaWxlKSAjIHJlc3RyaWN0aW9ucyBvbiBzaG9ydCBuYW1lcwotICAgICAgICBwYXJ0cyA9IGZpbGUuc3BsaXQoIi4iKQorICAgICAgICBwYXJ0cyA9IGZpbGUuc3BsaXQoIi4iLCAxKQogICAgICAgICBpZiBsZW4ocGFydHMpPjE6Ci0gICAgICAgICAgICBzdWZmaXggPSBwYXJ0c1stMV0udXBwZXIoKQorICAgICAgICAgICAgc3VmZml4ID0gcGFydHNbMV0udXBwZXIoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3VmZml4ID0gTm9uZQorICAgICAgICAgICAgc3VmZml4ID0gJycKICAgICAgICAgcHJlZml4ID0gcGFydHNbMF0udXBwZXIoKQotICAgICAgICBpZiBsZW4ocHJlZml4KSA8PSA4IGFuZCAobm90IHN1ZmZpeCBvciBsZW4oc3VmZml4KTw9Myk6CisgICAgICAgIGlmIGxlbihwcmVmaXgpIDw9IDggYW5kICcuJyBub3QgaW4gc3VmZml4IGFuZCBsZW4oc3VmZml4KSA8PSAzOgogICAgICAgICAgICAgaWYgc3VmZml4OgogICAgICAgICAgICAgICAgIGZpbGUgPSBwcmVmaXgrIi4iK3N1ZmZpeAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmaWxlID0gcHJlZml4Ci0gICAgICAgICAgICBhc3NlcnQgZmlsZSBub3QgaW4gc2VsZi5zaG9ydF9uYW1lcworICAgICAgICAgICAgYXNzZXJ0IGZpbGUgbm90IGluIHNlbGYuc2hvcnRfbmFtZXMsIChmaWxlLCBzZWxmLnNob3J0X25hbWVzW2ZpbGVdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHJlZml4ID0gcHJlZml4Wzo2XQogICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHN1ZmZpeFs6M10KKyAgICAgICAgICAgICAgICAjIGxhc3QgdGhyZWUgY2hhcmFjdGVycyBvZiBsYXN0IHN1ZmZpeAorICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHN1ZmZpeC5yc3BsaXQoJy4nKVstMV1bOjNdCiAgICAgICAgICAgICBwb3MgPSAxCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIGlmIHN1ZmZpeDoKQEAgLTQ4NCw3ICs0ODYsNyBAQAogICAgICAgICAgICAgICAgIGFzc2VydCBwb3MgPCAxMDAwMAogICAgICAgICAgICAgICAgIGlmIHBvcyBpbiAoMTAsIDEwMCwgMTAwMCk6CiAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6LTFdCi0gICAgICAgIHNlbGYuc2hvcnRfbmFtZXMuYWRkKGZpbGUpCisgICAgICAgIHNlbGYuc2hvcnRfbmFtZXNbZmlsZV0gPSBsb25nCiAgICAgICAgIHJldHVybiBmaWxlCiAKICAgICBkZWYgYWRkX2ZpbGUoc2VsZiwgZmlsZSwgc3JjPU5vbmUsIHZlcnNpb249Tm9uZSwgbGFuZ3VhZ2U9Tm9uZSk6CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdXVpZHMucHkgYi9Ub29scy9tc2kvdXVpZHMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZDE3YWQuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL3V1aWRzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBUaGlzIHNob3VsZCBiZSBleHRlbmRlZCBmb3IgZWFjaCBQeXRob24gcmVsZWFzZS4KLSMgVGhlIHByb2R1Y3QgY29kZSBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgbmFtZSBvZiB0aGUgTVNJIGZpbGUKLSMgY2hhbmdlcywgYW5kIHdoZW4gbmV3IGNvbXBvbmVudCBjb2RlcyBhcmUgaXNzdWVkIGZvciBleGlzdGluZwotIyBjb21wb25lbnRzLiBTZWUgIkNoYW5naW5nIHRoZSBQcm9kdWN0IENvZGUiLiBBcyB3ZSBjaGFuZ2UgdGhlCi0jIGNvbXBvbmVudCBjb2RlcyB3aXRoIGV2ZXJ5IGJ1aWxkLCB3ZSBuZWVkIGEgbmV3IHByb2R1Y3QgY29kZQotIyBlYWNoIHRpbWUuIEZvciBpbnRlcm1lZGlhdGUgKHNuYXBzaG90KSByZWxlYXNlcywgdGhleSBhcmUgYXV0b21hdGljYWxseQotIyBnZW5lcmF0ZWQuIEZvciBvZmZpY2lhbCByZWxlYXNlcywgd2UgcmVjb3JkIHRoZSBwcm9kdWN0IGNvZGVzLAotIyBzbyBwZW9wbGUgY2FuIHJlZmVyIHRvIHRoZW0uCi1wcm9kdWN0X2NvZGVzID0gewotICAgICcyLjUuMTAxJzogJ3tiYzE0Y2UzZS01ZTcyLTRhNjQtYWMxZi1iZjU5YTU3MTg5OGN9JywgIyAyLjVhMQotICAgICcyLjUuMTAyJzogJ3s1ZWVkNTFjMS04ZTlkLTQwNzEtOTRjNS1iNDBkZTVkNDliYTV9JywgIyAyLjVhMgotICAgICcyLjUuMTAzJzogJ3s3M2RjZDk2Ni1mZmVjLTQxNWYtYmIzOS04MzQyYzFmNDcwMTd9JywgIyAyLjVhMwotICAgICcyLjUuMTExJzogJ3tjNzk3ZWNmOC1hOGU2LTRmZWMtYmI5OS01MjZiNjVmMjg2MjZ9JywgIyAyLjViMQotICAgICcyLjUuMTEyJzogJ3szMmJlYjc3NC1mNjI1LTQzOWQtYjU4Ny03MTg3NDg3YmFmMTV9JywgIyAyLjViMgotICAgICcyLjUuMTEzJzogJ3s4OWYyMzkxOC0xMWNmLTRmMDgtYmUxMy1iOWIyZTY0NjNmZDl9JywgIyAyLjViMwotICAgICcyLjUuMTIxJzogJ3s4ZTkzMjFiYy02YjI0LTQ4YTMtOGZkNC1jOTVmOGU1MzFlNWZ9JywgIyAyLjVjMQotICAgICcyLjUuMTIyJzogJ3thNmNkNTA4ZC05NTk5LTQ1ZGEtYTQ0MS1jYmZmYTlmN2UwNzB9JywgIyAyLjVjMgotICAgICcyLjUuMTUwJzogJ3swYTJjNTg1NC01NTdlLTQ4YzgtODM1YS0zYjlmMDc0YmRjYWF9JywgIyAyLjUuMAotICAgICcyLjUuMTEyMSc6J3swMzc4YjQzZS02MTg0LTRjMmYtYmUxYS00YTM2Nzc4MWNkNTR9JywgIyAyLjUuMWMxCi0gICAgJzIuNS4xMTUwJzonezMxODAwMDA0LTYzODYtNDk5OS1hNTE5LTUxOGYyZDc4ZDhmMH0nLCAjIDIuNS4xCi0gICAgJzIuNS4yMTUwJzonezYzMDRhN2RhLTExMzItNGU5MS1hMzQzLWEyOTYyNjllYWI4YX0nLCAjIDIuNS4yYzEKLSAgICAnMi41LjIxNTAnOid7NmI5NzZhZGYtOGFlOC00MzRlLWIyODItYTA2YzdmNjI0ZDJmfScsICMgMi41LjIKLSAgICAnMi42LjEwMSc6ICd7MGJhODJlMWItNTJmZC00ZTAzLTg2MTAtYTZjNzYyMzhlOGE4fScsICMgMi42YTEKLSAgICAnMi42LjEwMic6ICd7M2IyN2UxNmMtNTZkYi00NTcwLWEyZDMtZTlhMjYxODBjNjBifScsICMgMi42YTIKLSAgICAnMi42LjEwMyc6ICd7Y2QwNmE5YzUtYmRlNS00YmQ3LTk4NzQtNDg5MzM5OTcxMjJhfScsICMgMi42YTMKLSAgICAnMi42LjEwNCc6ICd7ZGM2ZWQ2MzQtNDc0YS00YTUwLWE1NDctOGRlNGI3NDkxZTUzfScsICMgMi42YTQKLSAgICAnMi42LjExMSc6ICd7M2Y4MjA3OWEtNWJlZS00YzRhLThhNDEtODI5MjM4OWUyNGFlfScsICMgMi42YjEKLSAgICAnMi42LjExMic6ICd7OGEwZTU5NzAtZjNlNi00NzM3LTlhMmItYmM1ZmYwZjE1ZmI1fScsICMgMi42YjIKLSAgICAnMi42LjExMyc6ICd7ZGY0ZjVjMjEtNmZjYy00NTQwLTk1ZGUtODVmZWJhNjM0ZTc2fScsICMgMi42YjMKLSAgICAnMi42LjEyMSc6ICd7YmJkMzQ0NjQtZGRlYi00MDI4LTk5ZTUtZjE2YzRhOGZiZGIzfScsICMgMi42YzEKLSAgICAnMi42LjEyMic6ICd7OGY2NDc4N2UtYTAyMy00YzYwLWJmZWUtMjVkM2EzZjU5MmM2fScsICMgMi42YzIKLSAgICAnMi42LjE1MCc6ICd7MTEwZWI1YzQtZTk5NS00Y2ZiLWFiODAtYTVmMzE1YmVhOWU4fScsICMgMi42LjAKLSAgICAnMi42LjExNTAnOid7OWNjODkxNzAtMDAwYi00NTdkLTkxZjEtNTM2OTFmODViMjIzfScsICMgMi42LjEKLSAgICAnMi42LjIxMjEnOid7YWRhYzQxMmItYjIwOS00YzE1LWI2YWItZGNhMWI2ZTQ3MTQ0fScsICMgMi42LjJjMQotICAgICcyLjYuMjE1MCc6J3syNGFhYjQyMC00ZTMwLTQ0OTYtOTczOS0zZTIxNmYzZGU2YWV9JywgIyAyLjYuMgotICAgICcyLjYuMzEyMSc6J3thNzNlMDI1NC1kY2RhLTRmZTQtYmYzNy1jN2UxYzRmNGViYjZ9JywgIyAyLjYuM2MxCi0gICAgJzIuNi4zMTUwJzonezNkOWFjMDk1LWUxMTUtNGU5NC1iZGVmLTdmN2VkZjE3Njk3ZH0nLCAjIDIuNi4zCi0gICAgJzIuNi40MTIxJzonezcyN2RlNjA1LTAzNTktNDYwNi1hOTRiLWMyMDMzNjUyMzc5Yn0nLCAjIDIuNi40YzEKLSAgICAnMi42LjQxMjInOid7NGY3NjAzYzYtNjM1Mi00Mjk5LWEzOTgtMTUwYTMxYjE5YWNjfScsICMgMi42LjRjMgotICAgICcyLjYuNDE1MCc6J3tlNzM5NGEwZi0zZjgwLTQ1YjEtODdmYy1hYmNkNTE4OTMyNDZ9JywgIyAyLjYuNAotICAgICcyLjYuNTEyMSc6J3tlMGUyNzNkNy03NTk4LTQ3MDEtODMyNS1jOTBjMDY5ZmQ1ZmZ9JywgIyAyLjYuNWMxCi0gICAgJzIuNi41MTIyJzone2ZhMjI3Yjc2LTA2NzEtNGRjNi1iODI2LWMyZmYyYTcwZGZkNX0nLCAjIDIuNi41YzIKLSAgICAnMi42LjUxNTAnOid7NDcyM2YxOTktZmE2NC00MjMzLThlNmUtOWZjY2M5NWExOGVlfScsICMgMi42LjUKLSAgICAnMi43LjEwMSc6ICd7ZWNhMWJiZWYtNDMyYy00OWFlLWE2NjctYzIxM2NjN2JiZjIyfScsICMgMi43YTEKLSAgICAnMi43LjEwMic6ICd7MjFjZTE2ZWQtNzNjNC00NjBkLTliMTEtNTIyZjQxN2IyMDkwfScsICMgMi43YTIKLSAgICAnMi43LjEwMyc6ICd7NmU3ZGJkNTUtYmE0YS00OGFjLWE2ODgtNmM3NWRiNGQ3NTAwfScsICMgMi43YTMKLSAgICAnMi43LjEwNCc6ICd7ZWU3NzRiYTMtNzRhNS00OGQ5LWI0MjUtYjM1YTI4NzI2MGM4fScsICMgMi43YTQKLSAgICAnMi43LjExMSc6ICd7OWNmZDllYzctYTljNy00OTgwLWExYzYtMDU0ZmM2NDkzZWIzfScsICMgMi43YjEKLSAgICAnMi43LjExMic6ICd7OWE3MmZhZjYtYzMwNC00MTY1LTg1OTUtOTI5MWZmMzBjYWM2fScsICMgMi43YjIKLSAgICAnMi43LjEyMSc6ICd7ZjUzMGM5NGEtZGQ1My00ZGU5LTk0OGUtYjYzMmI5Y2I0OGQyfScsICMgMi43YzEKLSAgICAnMi43LjEyMic6ICd7ZjgwOTA1ZDItZGQ4ZC00YjhlLThhNDAtYzIzYzkzZGNhMDdkfScsICMgMi43YzIKLSAgICAnMi43LjE1MCc6ICd7MjBjMzE0MzUtMmEwYS00NTgwLWJlOGItYWMwNmZjMjQzY2E0fScsICMgMi43LjAKLSAgICAnMy4wLjEwMSc6ICd7ODU1NDI2M2EtMzI0Mi00ODU3LTkzNTktYWE4N2JjMmM1OGMyfScsICMgMy4wYTEKLSAgICAnMy4wLjEwMic6ICd7NjkyZDZlMmMtZjBhYy00MGI4LWExMzMtNzE5MWFlZWI2N2Y5fScsICMgMy4wYTIKLSAgICAnMy4wLjEwMyc6ICd7NDljYjI5OTUtNzUxYS00NzUzLWJlN2EtZDBiMWJiNTg1ZTA2fScsICMgMy4wYTMKLSAgICAnMy4wLjEwNCc6ICd7ODdjYjAxOWUtMTlmZC00MjM4LWIxYzctODU3NTE0MzdkNjQ2fScsICMgMy4wYTQKLSAgICAnMy4wLjEwNSc6ICd7Y2YyNjU5YWYtMTllYy00M2QyLThjMzUtMGY2YTA5NDM5ZDQyfScsICMgMy4wYTUKLSAgICAnMy4wLjExMSc6ICd7MzZjMjZmNTUtODM3ZC00NWNmLTg0OGMtNWY1YzBmYjQ3YTI4fScsICMgMy4wYjEKLSAgICAnMy4wLjExMic6ICd7MDU2YTBmYmMtYzhmZS00YzYxLWFhZGUtYzQ0MTFiNzBjOTk4fScsICMgMy4wYjIKLSAgICAnMy4wLjExMyc6ICd7MmIyZTg5YTktODNhZi00M2Y5LWI3ZDUtOTZlODBjNWEzZjI2fScsICMgMy4wYjMKLSAgICAnMy4wLjExNCc6ICd7ZTk1YzMxYWYtNjliZS00ZGQ3LTk2ZTYtZTVmYzg1ZTY2MGU2fScsICMgMy4wYjQKLSAgICAnMy4wLjEyMSc6ICd7ZDA5NzljNWUtY2QzYy00MmVjLWJlNGMtZTI5NGRhNzkzNTczfScsICMgMy4wYzEKLSAgICAnMy4wLjEyMic6ICd7ZjcwN2I4ZTktYTI1Ny00MDQ1LTgxOGUtNDkyM2ZjMjBmYmI2fScsICMgMy4wYzIKLSAgICAnMy4wLjEyMyc6ICd7NWU3MjA4ZjEtODY0My00ZWEyLWFiNWUtNDY0NDg4NzExMmUzfScsICMgMy4wYzMKLSAgICAnMy4wLjE1MCc6ICd7ZTBlNTZlMjEtNTVkZS00Zjc3LWExMDktMWJhYTcyMzQ4NzQzfScsICMgMy4wLjAKLSAgICAnMy4wLjExMjEnOid7ZDM1YjFlYTUtM2Q3MC00ODcyLWJmN2UtY2QwNjZhNzdhOWM5fScsICMgMy4wLjFjMQotICAgICczLjAuMTE1MCc6J3tkZTJmMmQ5Yy01M2UyLTQwZWUtODIwOS03NGRhNjNjYjA2MGV9JywgIyAzLjAuMQotICAgICczLjAuMjEyMSc6J3tjZWY3OWU3Zi05ODA5LTQ5ZTItYWZkMi1lMjQxNDhkN2M4NTV9JywgIyAzLjAuMmMxCi0gICAgJzMuMC4yMTUwJzonezBjZjNiOTVhLTgzODItNDYwNy05Nzc5LWMzNjQwN2ZmMzYyY30nLCAjIDMuMC4yCi0gICAgJzMuMS4xMDEnOiAne2M0MjNlYWRhLWM0OTgtNGQ1MS05ZWI0LWJmZWFlNjQ3ZTBhMH0nLCAjIDMuMWExCi0gICAgJzMuMS4xMDInOiAne2Y2ZTE5OWJmLWRjNjQtNDJmMy04N2Q0LTE1MjU5OTFhMDEzZX0nLCAjIDMuMWEyCi0gICAgJzMuMS4xMTEnOiAne2MzYzgyODkzLTY5YjItNDY3Ni04NTU0LTFiNmVlNmMxOTFlOX0nLCAjIDMuMWIxCi0gICAgJzMuMS4xMjEnOiAne2RhMmI1MTcwLTEyZjMtNGQ5OS04YTFmLTU0OTI2Y2NhN2FjZH0nLCAjIDMuMWMxCi0gICAgJzMuMS4xMjInOiAne2JjZWI1MTMzLWUyZWUtNDEwOS05NTFmLWFjN2U5NDFhMTY5Mn0nLCAjIDMuMWMyCi0gICAgJzMuMS4xNTAnOiAnezNhZDYxZWU1LTgxZDItNGQ3ZS1hZGVmLWRhMWRkMzcyNzdkMX0nLCAjIDMuMS4wCi0gICAgJzMuMS4xMTIxJzonezU3ODJmOTU3LTZkNDktNDFkNC1iYWQwLTY2ODcxNWRmZDYzOH0nLCAjIDMuMS4xYzEKLSAgICAnMy4xLjExNTAnOid7N2ZmOTA0NjAtODliNy00MzViLWI1ODMtYjM3YjI4MTVjY2M3fScsICMgMy4xLjEKLSAgICAnMy4xLjIxMjEnOid7ZWM0NTYyNGEtMzc4Yy00M2JlLTkxZjMtM2Y3YTU5YjBkOTBjfScsICMgMy4xLjJjMQotICAgICczLjEuMjE1MCc6J3tkNDBhZjAxNi01MDZjLTQzZmItYTczOC1iZDU0ZmE4YzFlODV9JywgIyAzLjEuMgotICAgICczLjIuMTAxJyA6J3tiNDExZjE2OC03YTM2LTRmZmYtOTAyYy1hNTU0ZDFjNzhhNGZ9JywgIyAzLjJhMQotICAgICczLjIuMTAyJyA6J3s3OWZmNzNiNy04MzU5LTQxMGYtYjljNS0xNTJkMjAyNmY4Yzh9JywgIyAzLjJhMgotICAgICczLjIuMTAzJyA6J3tlNzYzNWM2NS1jMjIxLTRiOWItYjcwYS01NjExYjgzNjlkNzd9JywgIyAzLjJhMwotICAgICczLjIuMTA0JyA6J3s3NDhjZDEzOS03NWI4LTRjYTgtOThhNy01ODI2MjI5ODE4MWV9JywgIyAzLjJhNAotICAgICczLjIuMTExJyA6J3syMGJmYzE2Zi1jN2NkLTRmYzAtOGY5Ni05OTE0NjE0YTNjNTB9JywgIyAzLjJiMQotICAgICczLjIuMTEyJyA6J3swZTM1MGM5OC04ZDczLTQ5OTMtYjY4Ni1jZmU4NzE2MDA0NmV9JywgIyAzLjJiMgotICAgICczLjIuMTIxJyA6J3syMDk0OTY4ZC03NTgzLTQ3ZjYtYTdmZC0yMjMwNDUzMmUwOWZ9JywgIyAzLjJyYzEKLSAgICAnMy4yLjEyMicgOid7NGYzZWRmYTYtY2Y3MC00NjlhLTgyNWYtZTEyMDZhYTdmNDEyfScsICMgMy4ycmMyCi0gICAgJzMuMi4xMjMnIDonezkwYzY3M2Q3LThjZmQtNDk2OS05ODE2LWY3ZDcwYmFkODdmM30nLCAjIDMuMnJjMwotICAgICczLjIuMTUwJyA6J3tiMjA0MmQ1ZS05ODZkLTQ0ZWMtYWVlMy1hZmU0MTA4Y2NjOTN9JywgIyAzLjIuMAotICAgICczLjIuMTEyMSc6J3s0ZjkwZGU0YS04M2RkLTQ0NDMtYjYyNS1jYTEzMGZmMzYxZGR9JywgIyAzLjIuMXJjMQotICAgICczLjIuMTEyMic6J3tkYzVlYjA0ZC1mZjhhLTRiZWQtOGY5Ni0yMzk0MmZkNTllNWZ9JywgIyAzLjIuMXJjMgotICAgICczLjIuMTE1MCc6J3szNGIyNTMwYy02MzQ5LTQyOTItOWRjMy02MGJkYTRhZWQ5M2N9JywgIyAzLjIuMQotICAgICczLjIuMjEyMSc6J3tERkIyOUE1My1BQ0M0LTQ0ZTYtODVBNi1EMERBMjZGRThFNEV9JywgIyAzLjIuMnJjMQotICAgICczLjIuMjE1MCc6J3s0Q0RFMzE2OC1EMDYwLTRiN2MtQkM3NC00RDhGOUJCMDFBRkR9JywgIyAzLjIuMgotICAgICczLjIuMzEyMSc6J3tCOEU4Q0ZGNy1FNEM2LTRhN2MtOUYwNi1CQjNBOEI3NUREQTh9JywgIyAzLjIuM3JjMQotICAgICczLjIuMzEyMic6J3tFOERDRDNFMC0xMkI2LTRmYjctOURCNS01NDNDMkU2NzM3MkV9JywgIyAzLjIuM3JjMgotICAgICczLjIuMzE1MCc6J3s3ODlDOTY0NC05RjgyLTQ0ZDMtQjRDQS1BQzMxRjQ2RjU4ODJ9JywgIyAzLjIuMwotCi19CmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5IGIvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weQppbmRleCAyYWMxZWE2Li5iZTg0NDAwIDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKQEAgLTIsOSArMiwxMCBAQAogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KIGltcG9ydCB0b2tlbml6ZQotaW1wb3J0IGFzdAogaW1wb3J0IHVucGFyc2UKK2ltcG9ydCBhc3QKIAogZGVmIHJlYWRfcHlmaWxlKGZpbGVuYW1lKToKICAgICAiIiJSZWFkIGFuZCByZXR1cm4gdGhlIGNvbnRlbnRzIG9mIGEgUHl0aG9uIHNvdXJjZSBmaWxlIChhcyBhCkBAIC05Myw2ICs5NCwyMSBAQAogICAgIHN1aXRlNQogIiIiCiAKK3dpdGhfc2ltcGxlID0gIiIiXAord2l0aCBmKCk6CisgICAgc3VpdGUxCisiIiIKKword2l0aF9hcyA9ICIiIlwKK3dpdGggZigpIGFzIHg6CisgICAgc3VpdGUxCisiIiIKKword2l0aF90d29faXRlbXMgPSAiIiJcCit3aXRoIGYoKSBhcyB4LCBnKCkgYXMgeToKKyAgICBzdWl0ZTEKKyIiIgorCiBjbGFzcyBBU1RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGFzc2VydEFTVEVxdWFsKHNlbGYsIGFzdDEsIGFzdDIpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKGFzdDEpLCBhc3QuZHVtcChhc3QyKSkKQEAgLTIxNSw2ICsyMzEsMTUgQEAKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImEsICpiWzBdLCBjID0gc2VxIikKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImEsICooYiwgYykgPSBzZXEiKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHdpdGhfc2ltcGxlKQorCisgICAgZGVmIHRlc3Rfd2l0aF9hcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAod2l0aF9hcykKKworICAgIGRlZiB0ZXN0X3dpdGhfdHdvX2l0ZW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCh3aXRoX3R3b19pdGVtcykKKwogCiBjbGFzcyBEaXJlY3RvcnlUZXN0Q2FzZShBU1RUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCByb3VuZHRyaXAgYmVoYXZpb3VyIG9uIGFsbCBmaWxlcyBpbiBMaWIgYW5kIExpYi90ZXN0LiIiIgpAQCAtMjMzLDYgKzI1OCwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG4uZW5kc3dpdGgoJy5weScpIGFuZCBub3Qgbi5zdGFydHN3aXRoKCdiYWQnKToKICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG9zLnBhdGguam9pbih0ZXN0X2RpciwgbikpCiAKKyAgICAgICAgIyBUZXN0IGxpbWl0ZWQgc3Vic2V0IG9mIGZpbGVzIHVubGVzcyB0aGUgJ2NwdScgcmVzb3VyY2UgaXMgc3BlY2lmaWVkLgorICAgICAgICBpZiBub3QgdGVzdC5zdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoImNwdSIpOgorICAgICAgICAgICAgbmFtZXMgPSByYW5kb20uc2FtcGxlKG5hbWVzLCAxMCkKKwogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5IGIvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKaW5kZXggZDlmY2E5Ny4uYjU1ZTJjNiAxMDA2NDQKLS0tIGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKKysrIGIvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKQEAgLTEsNiArMSw1IEBACiAiVXNhZ2U6IHVucGFyc2UucHkgPHBhdGggdG8gc291cmNlIGZpbGU+IgogaW1wb3J0IHN5cwotaW1wb3J0IG1hdGgKIGltcG9ydCBhc3QKIGltcG9ydCB0b2tlbml6ZQogaW1wb3J0IGlvCkBAIC0xNDcsNiArMTQ2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCiAgICAgICAgIHNlbGYud3JpdGUoIikiKQogCisgICAgZGVmIF9ZaWVsZEZyb20oc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoIigiKQorICAgICAgICBzZWxmLndyaXRlKCJ5aWVsZCBmcm9tIikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQorICAgICAgICBzZWxmLndyaXRlKCIpIikKKwogICAgIGRlZiBfUmFpc2Uoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgicmFpc2UiKQogICAgICAgICBpZiBub3QgdC5leGM6CkBAIC0xNTgsMTIgKzE2NSwxMSBAQAogICAgICAgICAgICAgc2VsZi53cml0ZSgiIGZyb20gIikKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5jYXVzZSkKIAotICAgIGRlZiBfVHJ5RXhjZXB0KHNlbGYsIHQpOgorICAgIGRlZiBfVHJ5KHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInRyeSIpCiAgICAgICAgIHNlbGYuZW50ZXIoKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYm9keSkKICAgICAgICAgc2VsZi5sZWF2ZSgpCi0KICAgICAgICAgZm9yIGV4IGluIHQuaGFuZGxlcnM6CiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGV4KQogICAgICAgICBpZiB0Lm9yZWxzZToKQEAgLTE3MSwyMiArMTc3LDEyIEBACiAgICAgICAgICAgICBzZWxmLmVudGVyKCkKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5vcmVsc2UpCiAgICAgICAgICAgICBzZWxmLmxlYXZlKCkKLQotICAgIGRlZiBfVHJ5RmluYWxseShzZWxmLCB0KToKLSAgICAgICAgaWYgbGVuKHQuYm9keSkgPT0gMSBhbmQgaXNpbnN0YW5jZSh0LmJvZHlbMF0sIGFzdC5UcnlFeGNlcHQpOgotICAgICAgICAgICAgIyB0cnktZXhjZXB0LWZpbmFsbHkKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5maWxsKCJ0cnkiKQorICAgICAgICBpZiB0LmZpbmFsYm9keToKKyAgICAgICAgICAgIHNlbGYuZmlsbCgiZmluYWxseSIpCiAgICAgICAgICAgICBzZWxmLmVudGVyKCkKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmZpbmFsYm9keSkKICAgICAgICAgICAgIHNlbGYubGVhdmUoKQogCi0gICAgICAgIHNlbGYuZmlsbCgiZmluYWxseSIpCi0gICAgICAgIHNlbGYuZW50ZXIoKQotICAgICAgICBzZWxmLmRpc3BhdGNoKHQuZmluYWxib2R5KQotICAgICAgICBzZWxmLmxlYXZlKCkKLQogICAgIGRlZiBfRXhjZXB0SGFuZGxlcihzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJleGNlcHQiKQogICAgICAgICBpZiB0LnR5cGU6CkBAIC0yOTYsMTAgKzI5Miw3IEBACiAKICAgICBkZWYgX1dpdGgoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgid2l0aCAiKQotICAgICAgICBzZWxmLmRpc3BhdGNoKHQuY29udGV4dF9leHByKQotICAgICAgICBpZiB0Lm9wdGlvbmFsX3ZhcnM6Ci0gICAgICAgICAgICBzZWxmLndyaXRlKCIgYXMgIikKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5vcHRpb25hbF92YXJzKQorICAgICAgICBpbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi5kaXNwYXRjaCwgdC5pdGVtcykKICAgICAgICAgc2VsZi5lbnRlcigpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQogICAgICAgICBzZWxmLmxlYXZlKCkKQEAgLTU2NCw2ICs1NTcsMTIgQEAKICAgICAgICAgaWYgdC5hc25hbWU6CiAgICAgICAgICAgICBzZWxmLndyaXRlKCIgYXMgIit0LmFzbmFtZSkKIAorICAgIGRlZiBfd2l0aGl0ZW0oc2VsZiwgdCk6CisgICAgICAgIHNlbGYuZGlzcGF0Y2godC5jb250ZXh0X2V4cHIpCisgICAgICAgIGlmIHQub3B0aW9uYWxfdmFyczoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhcyAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lm9wdGlvbmFsX3ZhcnMpCisKIGRlZiByb3VuZHRyaXAoZmlsZW5hbWUsIG91dHB1dD1zeXMuc3Rkb3V0KToKICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIHB5ZmlsZToKICAgICAgICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcocHlmaWxlLnJlYWRsaW5lKVswXQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5IGIvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5CmluZGV4IDhlYWFkNjMuLjk0MmY1NmQgMTAwNzU1Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weQorKysgYi9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkKQEAgLTM1LDcgKzM1LDkgQEAKIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFICEKICIiIgogCi1pbXBvcnQgc3lzLCB0aW1lLCBvcGVyYXRvciwgcGxhdGZvcm0KK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgcGxhdGZvcm0KIGZyb20gQ29tbWFuZExpbmUgaW1wb3J0ICoKIAogdHJ5OgpAQCAtNzMsMTEgKzc1LDE1IEBACiAKICMgVGltZXIgdHlwZXMKIFRJTUVSX1RJTUVfVElNRSA9ICd0aW1lLnRpbWUnCitUSU1FUl9USU1FX1BST0NFU1NfVElNRSA9ICd0aW1lLnByb2Nlc3NfdGltZScKK1RJTUVSX1RJTUVfUEVSRl9DT1VOVEVSID0gJ3RpbWUucGVyZl9jb3VudGVyJwogVElNRVJfVElNRV9DTE9DSyA9ICd0aW1lLmNsb2NrJwogVElNRVJfU1lTVElNRVNfUFJPQ0VTU1RJTUUgPSAnc3lzdGltZXMucHJvY2Vzc3RpbWUnCiAKICMgQ2hvb3NlIHBsYXRmb3JtIGRlZmF1bHQgdGltZXIKLWlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CitpZiBoYXNhdHRyKHRpbWUsICdwZXJmX2NvdW50ZXInKToKKyAgICBUSU1FUl9QTEFURk9STV9ERUZBVUxUID0gVElNRVJfVElNRV9QRVJGX0NPVU5URVIKK2VsaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKICAgICAjIE9uIFdpblhQIHRoaXMgaGFzIDIuNW1zIHJlc29sdXRpb24KICAgICBUSU1FUl9QTEFURk9STV9ERUZBVUxUID0gVElNRVJfVElNRV9DTE9DSwogZWxzZToKQEAgLTkzLDYgKzk5LDEwIEBACiAKICAgICBpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9USU1FOgogICAgICAgICByZXR1cm4gdGltZS50aW1lCisgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9QUk9DRVNTX1RJTUU6CisgICAgICAgIHJldHVybiB0aW1lLnByb2Nlc3NfdGltZQorICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfUEVSRl9DT1VOVEVSOgorICAgICAgICByZXR1cm4gdGltZS5wZXJmX2NvdW50ZXIKICAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX0NMT0NLOgogICAgICAgICByZXR1cm4gdGltZS5jbG9jawogICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1NZU1RJTUVTX1BST0NFU1NUSU1FOgpAQCAtMTA3LDYgKzExNyw3IEBACiAgICAgICAgIHByaW50KCdHZXR0aW5nIG1hY2hpbmUgZGV0YWlscy4uLicpCiAgICAgYnVpbGRubywgYnVpbGRkYXRlID0gcGxhdGZvcm0ucHl0aG9uX2J1aWxkKCkKICAgICBweXRob24gPSBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpCisgICAgIyBYWFggdGhpcyBpcyBub3cgYWx3YXlzIFVDUzQsIG1heWJlIHJlcGxhY2UgaXQgd2l0aCAnUEVQMzkzJyBpbiAzLjMrPwogICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgogICAgICAgICAjIFVDUzIgYnVpbGQgKHN0YW5kYXJkKQogICAgICAgICB1bml0eXBlID0gJ1VDUzInCkBAIC04NjUsNyArODc2LDE4IEBACiAgICAgICAgICAgICBwcmludCgnKiB1c2luZyB0aW1lcjogc3lzdGltZXMucHJvY2Vzc3RpbWUgKCVzKScgJSBcCiAgICAgICAgICAgICAgICAgICBzeXN0aW1lcy5TWVNUSU1FU19JTVBMRU1FTlRBVElPTikKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY2xvY2sgZnVuY3Rpb24gZG9lcyBleGlzdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGdldF90aW1lcih0aW1lcikKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcHJpbnQoIiogRXJyb3I6IFVua25vd24gdGltZXI6ICVzIiAlIHRpbWVyKQorICAgICAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgICAgICBwcmludCgnKiB1c2luZyB0aW1lcjogJXMnICUgdGltZXIpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHRpbWUsICdnZXRfY2xvY2tfaW5mbycpOgorICAgICAgICAgICAgICAgIGluZm8gPSB0aW1lLmdldF9jbG9ja19pbmZvKHRpbWVyWzU6XSkKKyAgICAgICAgICAgICAgICBwcmludCgnKiB0aW1lcjogcmVzb2x1dGlvbj0lcywgaW1wbGVtZW50YXRpb249JXMnCisgICAgICAgICAgICAgICAgICAgICAgJSAoaW5mby5yZXNvbHV0aW9uLCBpbmZvLmltcGxlbWVudGF0aW9uKSkKIAogICAgICAgICBwcmludCgpCiAKQEAgLTk0Myw4ICs5NjUsNiBAQAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKGJlbmNoLGYpCiAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyByZWFzb246Ci0gICAgICAgICAgICAgICAgcHJpbnQoJyogRXJyb3Igb3BlbmluZy93cml0aW5nIHJlcG9ydGZpbGUnKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgcmVhc29uOgogICAgICAgICAgICAgICAgIHByaW50KCcqIEVycm9yIG9wZW5pbmcvd3JpdGluZyByZXBvcnRmaWxlICVzOiAlcycgJSAoCiAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgIHJlYXNvbikpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL1JFQURNRSBiL1Rvb2xzL3NjcmlwdHMvUkVBRE1FCmluZGV4IDhjMDI1MjkuLmQ2NWQxZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvUkVBRE1FCisrKyBiL1Rvb2xzL3NjcmlwdHMvUkVBRE1FCkBAIC0xNSw3ICsxNSw3IEBACiBkaWZmLnB5ICAgICAgICAgICAgICAgICBQcmludCBmaWxlIGRpZmZzIGluIGNvbnRleHQsIHVuaWZpZWQsIG9yIG5kaWZmIGZvcm1hdHMKIGR1dHJlZS5weSAgICAgICAgICAgICAgIEZvcm1hdCBkdSgxKSBvdXRwdXQgYXMgYSB0cmVlIHNvcnRlZCBieSBzaXplCiBlcHRhZ3MucHkgICAgICAgICAgICAgICBDcmVhdGUgRW1hY3MgVEFHUyBmaWxlIGZvciBQeXRob24gbW9kdWxlcwotZmluZF9yZWN1cnNpb25saW1pdC5weSAgRmluZCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGltaXQgb24gdGhpcyBtYWNoaW5lIAorZmluZF9yZWN1cnNpb25saW1pdC5weSAgRmluZCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGltaXQgb24gdGhpcyBtYWNoaW5lCiBmaW5kZGl2LnB5ICAgICAgICAgICAgICBBIGdyZXAtbGlrZSB0b29sIHRoYXQgbG9va3MgZm9yIGRpdmlzaW9uIG9wZXJhdG9ycwogZmluZGxpbmtzdG8ucHkgICAgICAgICAgUmVjdXJzaXZlbHkgZmluZCBzeW1ib2xpYyBsaW5rcyB0byBhIGdpdmVuIHBhdGggcHJlZml4CiBmaW5kbm9jb2RpbmcucHkgICAgICAgICBGaW5kIHNvdXJjZSBmaWxlcyB3aGljaCBuZWVkIGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uCkBAIC0yOCw2ICsyOCw3IEBACiBnb29nbGUucHkgICAgICAgICAgICAgICBPcGVuIGEgd2ViYnJvd3NlciB3aXRoIEdvb2dsZQogZ3Byb2YyaHRtbC5weSAgICAgICAgICAgVHJhbnNmb3JtIGdwcm9mKDEpIG91dHB1dCBpbnRvIHVzZWZ1bCBIVE1MCiBoMnB5LnB5ICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgI2RlZmluZSdzIGludG8gUHl0aG9uIGFzc2lnbm1lbnRzCitoaWdobGlnaHQucHkgICAgICAgICAgICBQeXRob24gc3ludGF4IGhpZ2hsaWdodGluZyB3aXRoIEhUTUwgb3V0cHV0CiBpZGxlMyAgICAgICAgICAgICAgICAgICBNYWluIHByb2dyYW0gdG8gc3RhcnQgSURMRQogaWZkZWYucHkgICAgICAgICAgICAgICAgUmVtb3ZlICNpZihuKWRlZiBncm91cHMgZnJvbSBDIHNvdXJjZXMKIGxmY3IucHkgICAgICAgICAgICAgICAgIENoYW5nZSBMRiBsaW5lIGVuZGluZ3MgdG8gQ1JMRiAoVW5peCB0byBXaW5kb3dzKQpAQCAtNTMsNiArNTQsNyBAQAogcmVpbmRlbnQucHkgICAgICAgICAgICAgQ2hhbmdlIC5weSBmaWxlcyB0byB1c2UgNC1zcGFjZSBpbmRlbnRzCiByZWluZGVudC1yc3QucHkgICAgICAgICBGaXgtdXAgcmVTdHJ1Y3R1cmVkVGV4dCBmaWxlIHdoaXRlc3BhY2UKIHJncmVwLnB5ICAgICAgICAgICAgICAgIFJldmVyc2UgZ3JlcCB0aHJvdWdoIGEgZmlsZSAodXNlZnVsIGZvciBiaWcgbG9nZmlsZXMpCitydW5fdGVzdHMucHkgICAgICAgICAgICBSdW4gdGhlIHRlc3Qgc3VpdGUgd2l0aCBtb3JlIHNlbnNpYmxlIGRlZmF1bHQgb3B0aW9ucwogc2VydmUucHkgICAgICAgICAgICAgICAgU21hbGwgd3NnaXJlZi1iYXNlZCB3ZWIgc2VydmVyLCB1c2VkIGluIG1ha2Ugc2VydmUgaW4gRG9jCiBzdWZmLnB5ICAgICAgICAgICAgICAgICBTb3J0IGEgbGlzdCBvZiBmaWxlcyBieSBzdWZmaXgKIHN2bmVvbC5weSAgICAgICAgICAgICAgIFNldCBzdm46ZW9sLXN0eWxlIG9uIGFsbCBmaWxlcyBpbiBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weSBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQppbmRleCA5ZWZiMDc4Li5mOWIxNGJmIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2RpZmYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CkBAIC05LDYgKzksMTIgQEAKICIiIgogCiBpbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgb3B0cGFyc2UKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZQorCitkZWYgZmlsZV9tdGltZShwYXRoKToKKyAgICB0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChvcy5zdGF0KHBhdGgpLnN0X210aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lLnV0YykKKyAgICByZXR1cm4gdC5hc3RpbWV6b25lKCkuaXNvZm9ybWF0KCkKIAogZGVmIG1haW4oKToKIApAQCAtMzAsMTAgKzM2LDEyIEBACiAgICAgbiA9IG9wdGlvbnMubGluZXMKICAgICBmcm9tZmlsZSwgdG9maWxlID0gYXJncwogCi0gICAgZnJvbWRhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQoZnJvbWZpbGUpLnN0X210aW1lKQotICAgIHRvZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdCh0b2ZpbGUpLnN0X210aW1lKQotICAgIGZyb21saW5lcyA9IG9wZW4oZnJvbWZpbGUsICdVJykucmVhZGxpbmVzKCkKLSAgICB0b2xpbmVzID0gb3Blbih0b2ZpbGUsICdVJykucmVhZGxpbmVzKCkKKyAgICBmcm9tZGF0ZSA9IGZpbGVfbXRpbWUoZnJvbWZpbGUpCisgICAgdG9kYXRlID0gZmlsZV9tdGltZSh0b2ZpbGUpCisgICAgd2l0aCBvcGVuKGZyb21maWxlLCAnVScpIGFzIGZmOgorICAgICAgICBmcm9tbGluZXMgPSBmZi5yZWFkbGluZXMoKQorICAgIHdpdGggb3Blbih0b2ZpbGUsICdVJykgYXMgdGY6CisgICAgICAgIHRvbGluZXMgPSB0Zi5yZWFkbGluZXMoKQogCiAgICAgaWYgb3B0aW9ucy51OgogICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZmlsZSwgdG9maWxlLCBmcm9tZGF0ZSwgdG9kYXRlLCBuPW4pCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpbmRub2NvZGluZy5weSBiL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5CmluZGV4IGE0OTRhNDguLmIzZTlkYzcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5CkBAIC0yLDcgKzIsNyBAQAogCiAiIiJMaXN0IGFsbCB0aG9zZSBQeXRob24gZmlsZXMgdGhhdCByZXF1aXJlIGEgY29kaW5nIGRpcmVjdGl2ZQogCi1Vc2FnZTogbm9jb2RpbmcucHkgZGlyMSBbZGlyMi4uLl0KK1VzYWdlOiBmaW5kbm9jb2RpbmcucHkgZGlyMSBbZGlyMi4uLl0KICIiIgogCiBfX2F1dGhvcl9fID0gIk9sZWcgQnJveXRtYW5uLCBHZW9yZyBCcmFuZGwiCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHNvcGhpc3RpY2F0ZWQgUHl0aG9uIHNvdXJjZSBmaWxlIHNlYXJjaCB3aWxsIGJlIGRvbmUuIiwgZmlsZT1zeXMuc3RkZXJyKQogCiAKLWRlY2xfcmUgPSByZS5jb21waWxlKHIiY29kaW5nWz06XVxzKihbLVx3Ll0rKSIpCitkZWNsX3JlID0gcmUuY29tcGlsZShyYiJjb2RpbmdbPTpdXHMqKFstXHcuXSspIikKIAogZGVmIGdldF9kZWNsYXJhdGlvbihsaW5lKToKICAgICBtYXRjaCA9IGRlY2xfcmUuc2VhcmNoKGxpbmUpCkBAIC01MCwyMSArNTAsMjAgQEAKIAogZGVmIG5lZWRzX2RlY2xhcmF0aW9uKGZ1bGxwYXRoKToKICAgICB0cnk6Ci0gICAgICAgIGluZmlsZSA9IG9wZW4oZnVsbHBhdGgsICdyVScpCisgICAgICAgIGluZmlsZSA9IG9wZW4oZnVsbHBhdGgsICdyYicpCiAgICAgZXhjZXB0IElPRXJyb3I6ICMgT29wcywgdGhlIGZpbGUgd2FzIHJlbW92ZWQgLSBpZ25vcmUgaXQKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGxpbmUxID0gaW5maWxlLnJlYWRsaW5lKCkKLSAgICBsaW5lMiA9IGluZmlsZS5yZWFkbGluZSgpCisgICAgd2l0aCBpbmZpbGU6CisgICAgICAgIGxpbmUxID0gaW5maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgbGluZTIgPSBpbmZpbGUucmVhZGxpbmUoKQogCi0gICAgaWYgZ2V0X2RlY2xhcmF0aW9uKGxpbmUxKSBvciBnZXRfZGVjbGFyYXRpb24obGluZTIpOgotICAgICAgICAjIHRoZSBmaWxlIGRvZXMgaGF2ZSBhbiBlbmNvZGluZyBkZWNsYXJhdGlvbiwgc28gdHJ1c3QgaXQKLSAgICAgICAgaW5maWxlLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGdldF9kZWNsYXJhdGlvbihsaW5lMSkgb3IgZ2V0X2RlY2xhcmF0aW9uKGxpbmUyKToKKyAgICAgICAgICAgICMgdGhlIGZpbGUgZG9lcyBoYXZlIGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLCBzbyB0cnVzdCBpdAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAjIGNoZWNrIHRoZSB3aG9sZSBmaWxlIGZvciBub24gdXRmLTggY2hhcmFjdGVycwotICAgIHJlc3QgPSBpbmZpbGUucmVhZCgpCi0gICAgaW5maWxlLmNsb3NlKCkKKyAgICAgICAgIyBjaGVjayB0aGUgd2hvbGUgZmlsZSBmb3Igbm9uIHV0Zi04IGNoYXJhY3RlcnMKKyAgICAgICAgcmVzdCA9IGluZmlsZS5yZWFkKCkKIAogICAgIGlmIGhhc19jb3JyZWN0X2VuY29kaW5nKGxpbmUxK2xpbmUyK3Jlc3QsICJ1dGYtOCIpOgogICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5IGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWZmNWNhZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CkBAIC0wLDAgKzEsMjYwIEBACisjIS91c3IvYmluL2VudiBweXRob24zCisnJydBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBQeXRob24gc291cmNlIGNvZGUnJycKKworX19hdXRob3JfXyA9ICdSYXltb25kIEhldHRpbmdlcicKKworaW1wb3J0IGtleXdvcmQsIHRva2VuaXplLCBjZ2ksIHJlLCBmdW5jdG9vbHMKK3RyeToKKyAgICBpbXBvcnQgYnVpbHRpbnMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgX19idWlsdGluX18gYXMgYnVpbHRpbnMKKworIyMjIyBBbmFseXplIFB5dGhvbiBTb3VyY2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc19idWlsdGluKHMpOgorICAgICdSZXR1cm4gVHJ1ZSBpZiBzIGlzIHRoZSBuYW1lIG9mIGEgYnVpbHRpbicKKyAgICByZXR1cm4gaGFzYXR0cihidWlsdGlucywgcykKKworZGVmIGNvbWJpbmVfcmFuZ2UobGluZXMsIHN0YXJ0LCBlbmQpOgorICAgICdKb2luIGNvbnRlbnQgZnJvbSBhIHJhbmdlIG9mIGxpbmVzIGJldHdlZW4gc3RhcnQgYW5kIGVuZCcKKyAgICAoc3Jvdywgc2NvbCksIChlcm93LCBlY29sKSA9IHN0YXJ0LCBlbmQKKyAgICBpZiBzcm93ID09IGVyb3c6CisgICAgICAgIHJldHVybiBsaW5lc1tzcm93LTFdW3Njb2w6ZWNvbF0sIGVuZAorICAgIHJvd3MgPSBbbGluZXNbc3Jvdy0xXVtzY29sOl1dICsgbGluZXNbc3JvdzogZXJvdy0xXSArIFtsaW5lc1tlcm93LTFdWzplY29sXV0KKyAgICByZXR1cm4gJycuam9pbihyb3dzKSwgZW5kCisKK2RlZiBhbmFseXplX3B5dGhvbihzb3VyY2UpOgorICAgICcnJ0dlbmVyYXRlIGFuZCBjbGFzc2lmeSBjaHVua3Mgb2YgUHl0aG9uIGZvciBzeW50YXggaGlnaGxpZ2h0aW5nLgorICAgICAgIFlpZWxkcyB0dXBsZXMgaW4gdGhlIGZvcm06IChjYXRlZ29yeSwgY2F0ZWdvcml6ZWRfdGV4dCkuCisgICAgJycnCisgICAgbGluZXMgPSBzb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgIGxpbmVzLmFwcGVuZCgnJykKKyAgICByZWFkbGluZSA9IGZ1bmN0b29scy5wYXJ0aWFsKG5leHQsIGl0ZXIobGluZXMpLCAnJykKKyAgICBraW5kID0gdG9rX3N0ciA9ICcnCisgICAgdG9rX3R5cGUgPSB0b2tlbml6ZS5DT01NRU5UCisgICAgd3JpdHRlbiA9ICgxLCAwKQorICAgIGZvciB0b2sgaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKHJlYWRsaW5lKToKKyAgICAgICAgcHJldl90b2tfdHlwZSwgcHJldl90b2tfc3RyID0gdG9rX3R5cGUsIHRva19zdHIKKyAgICAgICAgdG9rX3R5cGUsIHRva19zdHIsIChzcm93LCBzY29sKSwgKGVyb3csIGVjb2wpLCBsb2dpY2FsX2xpbmVubyA9IHRvaworICAgICAgICBraW5kID0gJycKKyAgICAgICAgaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuQ09NTUVOVDoKKyAgICAgICAgICAgIGtpbmQgPSAnY29tbWVudCcKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5PUCBhbmQgdG9rX3N0cls6MV0gbm90IGluICd7fVtdKCksLjo7QCc6CisgICAgICAgICAgICBraW5kID0gJ29wZXJhdG9yJworICAgICAgICBlbGlmIHRva190eXBlID09IHRva2VuaXplLlNUUklORzoKKyAgICAgICAgICAgIGtpbmQgPSAnc3RyaW5nJworICAgICAgICAgICAgaWYgcHJldl90b2tfdHlwZSA9PSB0b2tlbml6ZS5JTkRFTlQgb3Igc2NvbD09MDoKKyAgICAgICAgICAgICAgICBraW5kID0gJ2RvY3N0cmluZycKKyAgICAgICAgZWxpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5OQU1FOgorICAgICAgICAgICAgaWYgdG9rX3N0ciBpbiAoJ2RlZicsICdjbGFzcycsICdpbXBvcnQnLCAnZnJvbScpOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnZGVmaW5pdGlvbicKKyAgICAgICAgICAgIGVsaWYgcHJldl90b2tfc3RyIGluICgnZGVmJywgJ2NsYXNzJyk6CisgICAgICAgICAgICAgICAga2luZCA9ICdkZWZuYW1lJworICAgICAgICAgICAgZWxpZiBrZXl3b3JkLmlza2V5d29yZCh0b2tfc3RyKToKKyAgICAgICAgICAgICAgICBraW5kID0gJ2tleXdvcmQnCisgICAgICAgICAgICBlbGlmIGlzX2J1aWx0aW4odG9rX3N0cikgYW5kIHByZXZfdG9rX3N0ciAhPSAnLic6CisgICAgICAgICAgICAgICAga2luZCA9ICdidWlsdGluJworICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgdGV4dCwgd3JpdHRlbiA9IGNvbWJpbmVfcmFuZ2UobGluZXMsIHdyaXR0ZW4sIChzcm93LCBzY29sKSkKKyAgICAgICAgICAgIHlpZWxkICcnLCB0ZXh0CisgICAgICAgICAgICB0ZXh0LCB3cml0dGVuID0gdG9rX3N0ciwgKGVyb3csIGVjb2wpCisgICAgICAgICAgICB5aWVsZCBraW5kLCB0ZXh0CisgICAgbGluZV91cHRvX3Rva2VuLCB3cml0dGVuID0gY29tYmluZV9yYW5nZShsaW5lcywgd3JpdHRlbiwgKGVyb3csIGVjb2wpKQorICAgIHlpZWxkICcnLCBsaW5lX3VwdG9fdG9rZW4KKworIyMjIyBSYXcgT3V0cHV0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiByYXdfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCk6CisgICAgJ1N0cmFpZ2h0IHRleHQgZGlzcGxheSBvZiB0ZXh0IGNsYXNzaWZpY2F0aW9ucycKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnJTE1czogICVyXG4nICUgKGtpbmQgb3IgJ3BsYWluJywgdGV4dCkpCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisjIyMjIEFOU0kgT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmYXVsdF9hbnNpID0geworICAgICdjb21tZW50JzogKCdcMDMzWzA7MzFtJywgJ1wwMzNbMG0nKSwKKyAgICAnc3RyaW5nJzogKCdcMDMzWzA7MzJtJywgJ1wwMzNbMG0nKSwKKyAgICAnZG9jc3RyaW5nJzogKCdcMDMzWzA7MzJtJywgJ1wwMzNbMG0nKSwKKyAgICAna2V5d29yZCc6ICgnXDAzM1swOzMzbScsICdcMDMzWzBtJyksCisgICAgJ2J1aWx0aW4nOiAoJ1wwMzNbMDszNW0nLCAnXDAzM1swbScpLAorICAgICdkZWZpbml0aW9uJzogKCdcMDMzWzA7MzNtJywgJ1wwMzNbMG0nKSwKKyAgICAnZGVmbmFtZSc6ICgnXDAzM1swOzM0bScsICdcMDMzWzBtJyksCisgICAgJ29wZXJhdG9yJzogKCdcMDMzWzA7MzNtJywgJ1wwMzNbMG0nKSwKK30KKworZGVmIGFuc2lfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgY29sb3JzPWRlZmF1bHRfYW5zaSk6CisgICAgJ0FkZCBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIHNvdXJjZSBjb2RlIHVzaW5nIEFOU0kgZXNjYXBlIHNlcXVlbmNlcycKKyAgICAjIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICBvcGVuZXIsIGNsb3NlciA9IGNvbG9ycy5nZXQoa2luZCwgKCcnLCAnJykpCisgICAgICAgIHJlc3VsdCArPSBbb3BlbmVyLCB0ZXh0LCBjbG9zZXJdCisgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQorCisjIyMjIEhUTUwgT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGh0bWxfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCxvcGVuZXI9JzxwcmUgY2xhc3M9InB5dGhvbiI+XG4nLCBjbG9zZXI9JzwvcHJlPlxuJyk6CisgICAgJ0NvbnZlcnQgY2xhc3NpZmllZCB0ZXh0IHRvIGFuIEhUTUwgZnJhZ21lbnQnCisgICAgcmVzdWx0ID0gW29wZW5lcl0KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc8c3BhbiBjbGFzcz0iJXMiPicgJSBraW5kKQorICAgICAgICByZXN1bHQuYXBwZW5kKGNnaS5lc2NhcGUodGV4dCkpCisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc8L3NwYW4+JykKKyAgICByZXN1bHQuYXBwZW5kKGNsb3NlcikKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKK2RlZmF1bHRfY3NzID0geworICAgICcuY29tbWVudCc6ICd7Y29sb3I6IGNyaW1zb247fScsCisgICAgJy5zdHJpbmcnOiAgJ3tjb2xvcjogZm9yZXN0Z3JlZW47fScsCisgICAgJy5kb2NzdHJpbmcnOiAne2NvbG9yOiBmb3Jlc3RncmVlbjsgZm9udC1zdHlsZTppdGFsaWM7fScsCisgICAgJy5rZXl3b3JkJzogJ3tjb2xvcjogZGFya29yYW5nZTt9JywKKyAgICAnLmJ1aWx0aW4nOiAne2NvbG9yOiBwdXJwbGU7fScsCisgICAgJy5kZWZpbml0aW9uJzogJ3tjb2xvcjogZGFya29yYW5nZTsgZm9udC13ZWlnaHQ6Ym9sZDt9JywKKyAgICAnLmRlZm5hbWUnOiAne2NvbG9yOiBibHVlO30nLAorICAgICcub3BlcmF0b3InOiAne2NvbG9yOiBicm93bjt9JywKK30KKworZGVmYXVsdF9odG1sID0gJycnXAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgorICAgICAgICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDtjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT4ge3RpdGxlfSA8L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3tjc3N9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cit7Ym9keX0KKzwvYm9keT4KKzwvaHRtbD4KKycnJworCitkZWYgYnVpbGRfaHRtbF9wYWdlKGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9J3B5dGhvbicsCisgICAgICAgICAgICAgICAgICAgIGNzcz1kZWZhdWx0X2NzcywgaHRtbD1kZWZhdWx0X2h0bWwpOgorICAgICdDcmVhdGUgYSBjb21wbGV0ZSBIVE1MIHBhZ2Ugd2l0aCBjb2xvcml6ZWQgc291cmNlIGNvZGUnCisgICAgY3NzX3N0ciA9ICdcbicuam9pbihbJyVzICVzJyAlIGl0ZW0gZm9yIGl0ZW0gaW4gY3NzLml0ZW1zKCldKQorICAgIHJlc3VsdCA9IGh0bWxfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKyAgICB0aXRsZSA9IGNnaS5lc2NhcGUodGl0bGUpCisgICAgcmV0dXJuIGh0bWwuZm9ybWF0KHRpdGxlPXRpdGxlLCBjc3M9Y3NzX3N0ciwgYm9keT1yZXN1bHQpCisKKyMjIyMgTGFUZVggT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWZhdWx0X2xhdGV4X2NvbW1hbmRzID0geworICAgICdjb21tZW50JzogJ3tcY29sb3J7cmVkfSMxfScsCisgICAgJ3N0cmluZyc6ICd7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCisgICAgJ2RvY3N0cmluZyc6ICd7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAorICAgICdrZXl3b3JkJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2J1aWx0aW4nOiAne1xjb2xvcntwdXJwbGV9IzF9JywKKyAgICAnZGVmaW5pdGlvbic6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdkZWZuYW1lJzogJ3tcY29sb3J7Ymx1ZX0jMX0nLAorICAgICdvcGVyYXRvcic6ICd7XGNvbG9ye2Jyb3dufSMxfScsCit9CisKK2RlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgPSByJycnCitcZG9jdW1lbnRjbGFzc3thcnRpY2xlfQorXHVzZXBhY2thZ2V7YWxsdHR9CitcdXNlcGFja2FnZXt1cHF1b3RlfQorXHVzZXBhY2thZ2V7Y29sb3J9CitcdXNlcGFja2FnZVt1c2VuYW1lcyxkdmlwc25hbWVzXXt4Y29sb3J9CitcdXNlcGFja2FnZVtjbV17ZnVsbHBhZ2V9CislKG1hY3JvcylzCitcYmVnaW57ZG9jdW1lbnR9CitcY2VudGVye1xMQVJHRXslKHRpdGxlKXN9fQorXGJlZ2lue2FsbHR0fQorJShib2R5KXMKK1xlbmR7YWxsdHR9CitcZW5ke2RvY3VtZW50fQorJycnCisKK2RlZiBhbGx0dF9lc2NhcGUocyk6CisgICAgJ1JlcGxhY2UgYmFja3NsYXNoIGFuZCBicmFjZXMgd2l0aCB0aGVpciBlc2NhcGVkIGVxdWl2YWxlbnRzJworICAgIHhsYXQgPSB7J3snOiByJ1x7JywgJ30nOiByJ1x9JywgJ1xcJzogcidcdGV4dGJhY2tzbGFzaHt9J30KKyAgICByZXR1cm4gcmUuc3ViKHInW1xce31dJywgbGFtYmRhIG1vOiB4bGF0W21vLmdyb3VwKCldLCBzKQorCitkZWYgbGF0ZXhfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCwgdGl0bGUgPSAncHl0aG9uJywKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZHMgPSBkZWZhdWx0X2xhdGV4X2NvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCA9IGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQpOgorICAgICdDcmVhdGUgYSBjb21wbGV0ZSBMYVRlWCBkb2N1bWVudCB3aXRoIGNvbG9yaXplZCBzb3VyY2UgY29kZScKKyAgICBtYWNyb3MgPSAnXG4nLmpvaW4ocidcbmV3Y29tbWFuZHtccHklc31bMV17JXN9JyAlIGMgZm9yIGMgaW4gY29tbWFuZHMuaXRlbXMoKSkKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocidccHklc3snICUga2luZCkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChhbGx0dF9lc2NhcGUodGV4dCkpCisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9JykKKyAgICByZXR1cm4gZGVmYXVsdF9sYXRleF9kb2N1bWVudCAlIGRpY3QodGl0bGU9dGl0bGUsIG1hY3Jvcz1tYWNyb3MsIGJvZHk9Jycuam9pbihyZXN1bHQpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHN5cywgYXJncGFyc2UsIHdlYmJyb3dzZXIsIG9zLCB0ZXh0d3JhcAorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICdBZGQgc3ludGF4IGhpZ2hsaWdodGluZyB0byBQeXRob24gc291cmNlIGNvZGUnLAorICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlciwKKyAgICAgICAgICAgIGVwaWxvZyA9IHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgICAgICBleGFtcGxlczoKKworICAgICAgICAgICAgICAgICAgIyBTaG93IHN5bnRheCBoaWdobGlnaHRlZCBjb2RlIGluIHRoZSB0ZXJtaW5hbCB3aW5kb3cKKyAgICAgICAgICAgICAgICAgICQgLi9oaWdobGlnaHQucHkgbXlmaWxlLnB5CisKKyAgICAgICAgICAgICAgICAgICMgQ29sb3JpemUgbXlmaWxlLnB5IGFuZCBkaXNwbGF5IGluIGEgYnJvd3NlcgorICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSAtYiBteWZpbGUucHkKKworICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgYW4gSFRNTCBzZWN0aW9uIHRvIGVtYmVkIGluIGFuIGV4aXN0aW5nIHdlYnBhZ2UKKyAgICAgICAgICAgICAgICAgIC4vaGlnaGxpZ2h0LnB5IC1zIG15ZmlsZS5weQorCisgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGNvbXBsZXRlIEhUTUwgZmlsZQorICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSAtYyBteWZpbGUucHkgPiBteWZpbGUuaHRtbAorCisgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIFBERiB1c2luZyBMYVRlWAorICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSAtbCBteWZpbGUucHkgfCBwZGZsYXRleAorCisgICAgICAgICAgICAnJycpKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3NvdXJjZWZpbGUnLCBtZXRhdmFyID0gJ1NPVVJDRUZJTEUnLAorICAgICAgICAgICAgaGVscCA9ICdmaWxlIGNvbnRhaW5pbmcgUHl0aG9uIHNvdXJjZWNvZGUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnJvd3NlcicsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnbGF1bmNoIGEgYnJvd3NlciB0byBzaG93IHJlc3VsdHMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY29tcGxldGUnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ2J1aWxkIGEgY29tcGxldGUgaHRtbCB3ZWJwYWdlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbCcsICctLWxhdGV4JywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdidWlsZCBhIExhVGVYIGRvY3VtZW50JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcicsICctLXJhdycsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAncmF3IHBhcnNlIG9mIGNhdGVnb3JpemVkIHRleHQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2VjdGlvbicsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnc2hvdyBhbiBIVE1MIHNlY3Rpb24gcmF0aGVyIHRoYW4gYSBjb21wbGV0ZSB3ZWJwYWdlJykKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgYXJncy5zZWN0aW9uIGFuZCAoYXJncy5icm93c2VyIG9yIGFyZ3MuY29tcGxldGUpOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ1RoZSAtcy8tLXNlY3Rpb24gb3B0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgLWIvLS1icm93c2VyIG9yIC1jLy0tY29tcGxldGUgb3B0aW9ucycpCisKKyAgICBzb3VyY2VmaWxlID0gYXJncy5zb3VyY2VmaWxlCisgICAgd2l0aCBvcGVuKHNvdXJjZWZpbGUpIGFzIGY6CisgICAgICAgIHNvdXJjZSA9IGYucmVhZCgpCisgICAgY2xhc3NpZmllZF90ZXh0ID0gYW5hbHl6ZV9weXRob24oc291cmNlKQorCisgICAgaWYgYXJncy5yYXc6CisgICAgICAgIGVuY29kZWQgPSByYXdfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKyAgICBlbGlmIGFyZ3MuY29tcGxldGUgb3IgYXJncy5icm93c2VyOgorICAgICAgICBlbmNvZGVkID0gYnVpbGRfaHRtbF9wYWdlKGNsYXNzaWZpZWRfdGV4dCwgdGl0bGU9c291cmNlZmlsZSkKKyAgICBlbGlmIGFyZ3Muc2VjdGlvbjoKKyAgICAgICAgZW5jb2RlZCA9IGh0bWxfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKyAgICBlbGlmIGFyZ3MubGF0ZXg6CisgICAgICAgIGVuY29kZWQgPSBsYXRleF9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0LCB0aXRsZT1zb3VyY2VmaWxlKQorICAgIGVsc2U6CisgICAgICAgIGVuY29kZWQgPSBhbnNpX2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQpCisKKyAgICBpZiBhcmdzLmJyb3dzZXI6CisgICAgICAgIGh0bWxmaWxlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHNvdXJjZWZpbGUpKVswXSArICcuaHRtbCcKKyAgICAgICAgd2l0aCBvcGVuKGh0bWxmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGVuY29kZWQpCisgICAgICAgIHdlYmJyb3dzZXIub3BlbignZmlsZTovLycgKyBvcy5wYXRoLmFic3BhdGgoaHRtbGZpbGUpKQorICAgIGVsc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZW5jb2RlZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5IGIvVG9vbHMvc2NyaXB0cy9pbXBvcnRfZGlhZ25vc3RpY3MucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzkwNzIyMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NjcmlwdHMvaW1wb3J0X2RpYWdub3N0aWNzLnB5CkBAIC0wLDAgKzEsMzcgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyIiIk1pc2NlbGxhbmVvdXMgZGlhZ25vc3RpY3MgZm9yIHRoZSBpbXBvcnQgc3lzdGVtIiIiCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBhcmdwYXJzZQorZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludAorCitkZWYgX2R1bXBfc3RhdGUoYXJncyk6CisgICAgcHJpbnQoc3lzLnZlcnNpb24pCisgICAgZm9yIG5hbWUgaW4gYXJncy5hdHRyaWJ1dGVzOgorICAgICAgICBwcmludCgic3lzLnt9OiIuZm9ybWF0KG5hbWUpKQorICAgICAgICBwcHJpbnQoZ2V0YXR0cihzeXMsIG5hbWUpKQorCitkZWYgX2FkZF9kdW1wX2FyZ3MoY21kKToKKyAgICBjbWQuYWRkX2FyZ3VtZW50KCJhdHRyaWJ1dGVzIiwgbWV0YXZhcj0iQVRUUiIsIG5hcmdzPSIrIiwKKyAgICAgICAgICAgICAgICAgICAgIGhlbHA9InN5cyBtb2R1bGUgYXR0cmlidXRlIHRvIGRpc3BsYXkiKQorCitDT01NQU5EUyA9ICgKKyAgKCJkdW1wIiwgIkR1bXAgaW1wb3J0IHN0YXRlIiwgX2R1bXBfc3RhdGUsIF9hZGRfZHVtcF9hcmdzKSwKKykKKworZGVmIF9tYWtlX3BhcnNlcigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBzdWIgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnModGl0bGU9IkNvbW1hbmRzIikKKyAgICBmb3IgbmFtZSwgZGVzY3JpcHRpb24sIGltcGxlbWVudGF0aW9uLCBhZGRfYXJncyBpbiBDT01NQU5EUzoKKyAgICAgICAgY21kID0gc3ViLmFkZF9wYXJzZXIobmFtZSwgaGVscD1kZXNjcmlwdGlvbikKKyAgICAgICAgY21kLnNldF9kZWZhdWx0cyhjb21tYW5kPWltcGxlbWVudGF0aW9uKQorICAgICAgICBhZGRfYXJncyhjbWQpCisgICAgcmV0dXJuIHBhcnNlcgorCitkZWYgbWFpbihhcmdzKToKKyAgICBwYXJzZXIgPSBfbWFrZV9wYXJzZXIoKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICAgIHJldHVybiBhcmdzLmNvbW1hbmQoYXJncykKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkgYi9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKaW5kZXggMGUxOGRkOS4uNTAzYzY3YSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQpAQCAtNDksMjkgKzQ5LDE1IEBACiBAc3RhdHVzKCJHZXR0aW5nIHRoZSBsaXN0IG9mIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkL2NoYW5nZWQiLAogICAgICAgICBpbmZvPWxhbWJkYSB4OiBuX2ZpbGVzX3N0cihsZW4oeCkpKQogZGVmIGNoYW5nZWRfZmlsZXMoKToKLSAgICAiIiJHZXQgdGhlIGxpc3Qgb2YgY2hhbmdlZCBvciBhZGRlZCBmaWxlcyBmcm9tIHRoZSBWQ1MuIiIiCi0gICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oU1JDRElSLCAnLmhnJykpOgotICAgICAgICB2Y3MgPSAnaGcnCi0gICAgICAgIGNtZCA9ICdoZyBzdGF0dXMgLS1hZGRlZCAtLW1vZGlmaWVkIC0tbm8tc3RhdHVzJwotICAgICAgICBpZiBtcV9wYXRjaGVzX2FwcGxpZWQoKToKLSAgICAgICAgICAgIGNtZCArPSAnIC0tcmV2IHFwYXJlbnQnCi0gICAgZWxpZiBvcy5wYXRoLmlzZGlyKCcuc3ZuJyk6Ci0gICAgICAgIHZjcyA9ICdzdm4nCi0gICAgICAgIGNtZCA9ICdzdm4gc3RhdHVzIC0tcXVpZXQgLS1ub24taW50ZXJhY3RpdmUgLS1pZ25vcmUtZXh0ZXJuYWxzJwotICAgIGVsc2U6CisgICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSBNZXJjdXJpYWwuIiIiCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5oZycpKToKICAgICAgICAgc3lzLmV4aXQoJ25lZWQgYSBjaGVja291dCB0byBnZXQgbW9kaWZpZWQgZmlsZXMnKQogCi0gICAgc3QgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZC5zcGxpdCgpLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgIHRyeToKLSAgICAgICAgc3Qud2FpdCgpCi0gICAgICAgIGlmIHZjcyA9PSAnaGcnOgotICAgICAgICAgICAgcmV0dXJuIFt4LmRlY29kZSgpLnJzdHJpcCgpIGZvciB4IGluIHN0LnN0ZG91dF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dCA9ICh4LmRlY29kZSgpLnJzdHJpcCgpLnJzcGxpdChOb25lLCAxKVstMV0KLSAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzdC5zdGRvdXQgaWYgeFswXSBpbiBiJ0FNJykKLSAgICAgICAgcmV0dXJuIHNldChwYXRoIGZvciBwYXRoIGluIG91dHB1dCBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKSkKLSAgICBmaW5hbGx5OgotICAgICAgICBzdC5zdGRvdXQuY2xvc2UoKQorICAgIGNtZCA9ICdoZyBzdGF0dXMgLS1hZGRlZCAtLW1vZGlmaWVkIC0tbm8tc3RhdHVzJworICAgIGlmIG1xX3BhdGNoZXNfYXBwbGllZCgpOgorICAgICAgICBjbWQgKz0gJyAtLXJldiBxcGFyZW50JworICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihjbWQuc3BsaXQoKSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkgYXMgc3Q6CisgICAgICAgIHJldHVybiBbeC5kZWNvZGUoKS5yc3RyaXAoKSBmb3IgeCBpbiBzdC5zdGRvdXRdCiAKIAogZGVmIHJlcG9ydF9tb2RpZmllZF9maWxlcyhmaWxlX3BhdGhzKToKQEAgLTg5LDEwICs3NSw4IEBACiBkZWYgbm9ybWFsaXplX3doaXRlc3BhY2UoZmlsZV9wYXRocyk6CiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgdGhlIHdoaXRlc3BhY2UgZm9yIC5weSBmaWxlcyBoYXZlIGJlZW4gbm9ybWFsaXplZC4iIiIKICAgICByZWluZGVudC5tYWtlYmFja3VwID0gRmFsc2UgICMgTm8gbmVlZCB0byBjcmVhdGUgYmFja3Vwcy4KLSAgICBmaXhlZCA9IFtdCi0gICAgZm9yIHBhdGggaW4gKHggZm9yIHggaW4gZmlsZV9wYXRocyBpZiB4LmVuZHN3aXRoKCcucHknKSk6Ci0gICAgICAgIGlmIHJlaW5kZW50LmNoZWNrKG9zLnBhdGguam9pbihTUkNESVIsIHBhdGgpKToKLSAgICAgICAgICAgIGZpeGVkLmFwcGVuZChwYXRoKQorICAgIGZpeGVkID0gW3BhdGggZm9yIHBhdGggaW4gZmlsZV9wYXRocyBpZiBwYXRoLmVuZHN3aXRoKCcucHknKSBhbmQKKyAgICAgICAgICAgICByZWluZGVudC5jaGVjayhvcy5wYXRoLmpvaW4oU1JDRElSLCBwYXRoKSldCiAgICAgcmV0dXJuIGZpeGVkCiAKIApAQCAtMTQ4LDYgKzEzMiwyMSBAQAogICAgICIiIkNoZWNrIGlmIE1pc2MvTkVXUyBoYXMgYmVlbiBjaGFuZ2VkLiIiIgogICAgIHJldHVybiAnTWlzYy9ORVdTJyBpbiBmaWxlX3BhdGhzCiAKK0BzdGF0dXMoImNvbmZpZ3VyZSByZWdlbmVyYXRlZCIsIG1vZGFsPVRydWUsIGluZm89c3RyKQorZGVmIHJlZ2VuZXJhdGVkX2NvbmZpZ3VyZShmaWxlX3BhdGhzKToKKyAgICAiIiJDaGVjayBpZiBjb25maWd1cmUgaGFzIGJlZW4gcmVnZW5lcmF0ZWQuIiIiCisgICAgaWYgJ2NvbmZpZ3VyZS5hYycgaW4gZmlsZV9wYXRoczoKKyAgICAgICAgcmV0dXJuICJ5ZXMiIGlmICdjb25maWd1cmUnIGluIGZpbGVfcGF0aHMgZWxzZSAibm8iCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJub3QgbmVlZGVkIgorCitAc3RhdHVzKCJweWNvbmZpZy5oLmluIHJlZ2VuZXJhdGVkIiwgbW9kYWw9VHJ1ZSwgaW5mbz1zdHIpCitkZWYgcmVnZW5lcmF0ZWRfcHljb25maWdfaF9pbihmaWxlX3BhdGhzKToKKyAgICAiIiJDaGVjayBpZiBweWNvbmZpZy5oLmluIGhhcyBiZWVuIHJlZ2VuZXJhdGVkLiIiIgorICAgIGlmICdjb25maWd1cmUuYWMnIGluIGZpbGVfcGF0aHM6CisgICAgICAgIHJldHVybiAieWVzIiBpZiAncHljb25maWcuaC5pbicgaW4gZmlsZV9wYXRocyBlbHNlICJubyIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gIm5vdCBuZWVkZWQiCiAKIGRlZiBtYWluKCk6CiAgICAgZmlsZV9wYXRocyA9IGNoYW5nZWRfZmlsZXMoKQpAQCAtMTY3LDYgKzE2NiwxMCBAQAogICAgIGNyZWRpdF9naXZlbihzcGVjaWFsX2ZpbGVzKQogICAgICMgTWlzYy9ORVdTIGNoYW5nZWQuCiAgICAgcmVwb3J0ZWRfbmV3cyhzcGVjaWFsX2ZpbGVzKQorICAgICMgUmVnZW5lcmF0ZWQgY29uZmlndXJlLCBpZiBuZWNlc3NhcnkuCisgICAgcmVnZW5lcmF0ZWRfY29uZmlndXJlKGZpbGVfcGF0aHMpCisgICAgIyBSZWdlbmVyYXRlZCBweWNvbmZpZy5oLmluLCBpZiBuZWNlc3NhcnkuCisgICAgcmVnZW5lcmF0ZWRfcHljb25maWdfaF9pbihmaWxlX3BhdGhzKQogCiAgICAgIyBUZXN0IHN1aXRlIHJ1biBhbmQgcGFzc2VkLgogICAgIGlmIHB5dGhvbl9maWxlcyBvciBjX2ZpbGVzOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weSBiL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkKaW5kZXggMDQ4MTMxZS4uNjllOGUwZCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weQorKysgYi9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5CkBAIC0yMiw3ICsyMiw3IEBACiAKIGltcG9ydCBvcywgcmUKIAotYmluYXJ5X3JlID0gcmUuY29tcGlsZSgnW1x4MDAtXHgwOFx4MEUtXHgxRlx4N0ZdJykKK2JpbmFyeV9yZSA9IHJlLmNvbXBpbGUoYnInW1x4MDAtXHgwOFx4MEUtXHgxRlx4N0ZdJykKIAogZGVidWcgPSBGYWxzZQogCkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBvcGVuKGZ1bGxwYXRoLCAnclUnKQorICAgICAgICByZXR1cm4gb3BlbihmdWxscGF0aCwgInJiIikKICAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6ICMgQWNjZXNzIGRlbmllZCwgb3IgYSBzcGVjaWFsIGZpbGUgLSBpZ25vcmUgaXQKICAgICAgICAgcHJpbnRfZGVidWcoIiVzOiBhY2Nlc3MgZGVuaWVkOiAlcyIgJSAoZnVsbHBhdGgsIGVycikpCiAgICAgICAgIHJldHVybiBOb25lCkBAIC01NSw4ICs1NSw4IEBACiAgICAgaWYgaW5maWxlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgbGluZSA9IGluZmlsZS5yZWFkbGluZSgpCi0gICAgaW5maWxlLmNsb3NlKCkKKyAgICB3aXRoIGluZmlsZToKKyAgICAgICAgbGluZSA9IGluZmlsZS5yZWFkbGluZSgpCiAKICAgICBpZiBiaW5hcnlfcmUuc2VhcmNoKGxpbmUpOgogICAgICAgICAjIGZpbGUgYXBwZWFycyB0byBiZSBiaW5hcnkKQEAgLTY1LDcgKzY1LDcgQEAKIAogICAgIGlmIGZ1bGxwYXRoLmVuZHN3aXRoKCIucHkiKSBvciBmdWxscGF0aC5lbmRzd2l0aCgiLnB5dyIpOgogICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGVsaWYgInB5dGhvbiIgaW4gbGluZToKKyAgICBlbGlmIGIicHl0aG9uIiBpbiBsaW5lOgogICAgICAgICAjIGRpc2d1aXNlZCBQeXRob24gc2NyaXB0IChlLmcuIENHSSkKICAgICAgICAgcmV0dXJuIFRydWUKIApAQCAtNzYsOCArNzYsOCBAQAogICAgIGlmIGluZmlsZSBpcyBOb25lOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGNvZGUgPSBpbmZpbGUucmVhZCgpCi0gICAgaW5maWxlLmNsb3NlKCkKKyAgICB3aXRoIGluZmlsZToKKyAgICAgICAgY29kZSA9IGluZmlsZS5yZWFkKCkKIAogICAgIHRyeToKICAgICAgICAgY29tcGlsZShjb2RlLCBmdWxscGF0aCwgImV4ZWMiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXZlbnYgYi9Ub29scy9zY3JpcHRzL3B5dmVudgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NzhkNjkxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKQEAgLTAsMCArMSwxMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzCisgICAgcmMgPSAxCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgdmVudgorICAgICAgICB2ZW52Lm1haW4oKQorICAgICAgICByYyA9IDAKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHByaW50KCdFcnJvcjogJXMnICUgZSwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHN5cy5leGl0KHJjKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBiL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKaW5kZXggYjE4OTkzYi4uNGE5MTZlYSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQorKysgYi9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CkBAIC04LDYgKzgsOCBAQAogLXIgKC0tcmVjdXJzZSkgIFJlY3Vyc2UuICAgU2VhcmNoIGZvciBhbGwgLnB5IGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzIHRvby4KIC1uICgtLW5vYmFja3VwKSBObyBiYWNrdXAuIERvZXMgbm90IG1ha2UgYSAiLmJhayIgZmlsZSBiZWZvcmUgcmVpbmRlbnRpbmcuCiAtdiAoLS12ZXJib3NlKSAgVmVyYm9zZS4gICBQcmludCBpbmZvcm1hdGl2ZSBtc2dzOyBlbHNlIG5vIG91dHB1dC4KKyAgICgtLW5ld2xpbmUpICBOZXdsaW5lLiAgIFNwZWNpZnkgdGhlIG5ld2xpbmUgY2hhcmFjdGVyIHRvIHVzZSAoQ1JMRiwgTEYpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwgZmlsZS4KIC1oICgtLWhlbHApICAgICBIZWxwLiAgICAgIFByaW50IHRoaXMgdXNhZ2UgaW5mb3JtYXRpb24gYW5kIGV4aXQuCiAKIENoYW5nZSBQeXRob24gKC5weSkgZmlsZXMgdG8gdXNlIDQtc3BhY2UgaW5kZW50cyBhbmQgbm8gaGFyZCB0YWIgY2hhcmFjdGVycy4KQEAgLTUwLDYgKzUyLDggQEAKIHJlY3Vyc2UgPSBGYWxzZQogZHJ5cnVuID0gRmFsc2UKIG1ha2ViYWNrdXAgPSBUcnVlCitzcGVjX25ld2xpbmUgPSBOb25lCisiIiJBIHNwZWNpZmllZCBuZXdsaW5lIHRvIGJlIHVzZWQgaW4gdGhlIG91dHB1dCAoc2V0IGJ5IC0tbmV3bGluZSBvcHRpb24pIiIiCiAKIAogZGVmIHVzYWdlKG1zZz1Ob25lKToKQEAgLTYyLDEzICs2NiwxMiBAQAogICAgIHN5cy5zdGRlcnIud3JpdGUoIiAiLmpvaW4oc3RyKGFyZykgZm9yIGFyZyBpbiBhcmdzKSkKICAgICBzeXMuc3RkZXJyLndyaXRlKCJcbiIpCiAKLQogZGVmIG1haW4oKToKICAgICBpbXBvcnQgZ2V0b3B0Ci0gICAgZ2xvYmFsIHZlcmJvc2UsIHJlY3Vyc2UsIGRyeXJ1biwgbWFrZWJhY2t1cAorICAgIGdsb2JhbCB2ZXJib3NlLCByZWN1cnNlLCBkcnlydW4sIG1ha2ViYWNrdXAsIHNwZWNfbmV3bGluZQogICAgIHRyeToKICAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAiZHJudmgiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyJkcnlydW4iLCAicmVjdXJzZSIsICJub2JhY2t1cCIsICJ2ZXJib3NlIiwgImhlbHAiXSkKKyAgICAgICAgICAgIFsiZHJ5cnVuIiwgInJlY3Vyc2UiLCAibm9iYWNrdXAiLCAidmVyYm9zZSIsICJuZXdsaW5lPSIsICJoZWxwIl0pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6CiAgICAgICAgIHVzYWdlKG1zZykKICAgICAgICAgcmV0dXJuCkBAIC04MSw2ICs4NCwxMSBAQAogICAgICAgICAgICAgbWFrZWJhY2t1cCA9IEZhbHNlCiAgICAgICAgIGVsaWYgbyBpbiAoJy12JywgJy0tdmVyYm9zZScpOgogICAgICAgICAgICAgdmVyYm9zZSA9IFRydWUKKyAgICAgICAgZWxpZiBvIGluICgnLS1uZXdsaW5lJywpOgorICAgICAgICAgICAgaWYgbm90IGEudXBwZXIoKSBpbiAoJ0NSTEYnLCAnTEYnKToKKyAgICAgICAgICAgICAgICB1c2FnZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBzcGVjX25ld2xpbmUgPSBkaWN0KENSTEY9J1xyXG4nLCBMRj0nXG4nKVthLnVwcGVyKCldCiAgICAgICAgIGVsaWYgbyBpbiAoJy1oJywgJy0taGVscCcpOgogICAgICAgICAgICAgdXNhZ2UoKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0xMTgsOSArMTI2LDkgQEAKICAgICAgICAgZXJycHJpbnQoIiVzOiBJL08gRXJyb3I6ICVzIiAlIChmaWxlLCBzdHIobXNnKSkpCiAgICAgICAgIHJldHVybgogCi0gICAgbmV3bGluZSA9IHIubmV3bGluZXMKKyAgICBuZXdsaW5lID0gc3BlY19uZXdsaW5lIGlmIHNwZWNfbmV3bGluZSBlbHNlIHIubmV3bGluZXMKICAgICBpZiBpc2luc3RhbmNlKG5ld2xpbmUsIHR1cGxlKToKLSAgICAgICAgZXJycHJpbnQoIiVzOiBtaXhlZCBuZXdsaW5lcyBkZXRlY3RlZDsgY2Fubm90IHByb2Nlc3MgZmlsZSIgJSBmaWxlKQorICAgICAgICBlcnJwcmludCgiJXM6IG1peGVkIG5ld2xpbmVzIGRldGVjdGVkOyBjYW5ub3QgY29udGludWUgd2l0aG91dCAtLW5ld2xpbmUiICUgZmlsZSkKICAgICAgICAgcmV0dXJuCiAKICAgICBpZiByLnJ1bigpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMmEyMDUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKQEAgLTAsMCArMSw1MSBAQAorIiIiUnVuIFB5dGhvbidzIHRlc3Qgc3VpdGUgaW4gYSBmYXN0LCByaWdvcm91cyB3YXkuCisKK1RoZSBkZWZhdWx0cyBhcmUgbWVhbnQgdG8gYmUgcmVhc29uYWJseSB0aG9yb3VnaCwgd2hpbGUgc2tpcHBpbmcgY2VydGFpbgordGVzdHMgdGhhdCBjYW4gYmUgdGltZS1jb25zdW1pbmcgb3IgcmVzb3VyY2UtaW50ZW5zaXZlIChlLmcuIGxhcmdlZmlsZSksCitvciBkaXN0cmFjdGluZyAoZS5nLiBhdWRpbyBhbmQgZ3VpKS4gVGhlc2UgZGVmYXVsdHMgY2FuIGJlIG92ZXJyaWRkZW4gYnkKK3NpbXBseSBwYXNzaW5nIGEgLXUgb3B0aW9uIHRvIHRoaXMgc2NyaXB0LgorCisiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGVzdC5zdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKKworCitkZWYgaXNfbXVsdGlwcm9jZXNzX2ZsYWcoYXJnKToKKyAgICByZXR1cm4gYXJnLnN0YXJ0c3dpdGgoJy1qJykgb3IgYXJnLnN0YXJ0c3dpdGgoJy0tbXVsdGlwcm9jZXNzJykKKworCitkZWYgaXNfcmVzb3VyY2VfdXNlX2ZsYWcoYXJnKToKKyAgICByZXR1cm4gYXJnLnN0YXJ0c3dpdGgoJy11Jykgb3IgYXJnLnN0YXJ0c3dpdGgoJy0tdXNlJykKKworCitkZWYgbWFpbihyZWdydGVzdF9hcmdzKToKKyAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgJy1XJywgJ2RlZmF1bHQnLCAgICAgICMgV2FybmluZ3Mgc2V0IHRvICdkZWZhdWx0JworICAgICAgICAgICAgJy1iYicsICAgICAgICAgICAgICAgICMgV2FybmluZ3MgYWJvdXQgYnl0ZXMvYnl0ZWFycmF5CisgICAgICAgICAgICAnLUUnLCAgICAgICAgICAgICAgICAgIyBJZ25vcmUgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgICAgICAgICBdCisgICAgIyBBbGxvdyB1c2VyLXNwZWNpZmllZCBpbnRlcnByZXRlciBvcHRpb25zIHRvIG92ZXJyaWRlIG91ciBkZWZhdWx0cy4KKyAgICBhcmdzLmV4dGVuZCh0ZXN0LnN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCisgICAgYXJncy5leHRlbmQoWyctbScsICd0ZXN0JywgICAgIyBSdW4gdGhlIHRlc3Qgc3VpdGUKKyAgICAgICAgICAgICAgICAgJy1yJywgICAgICAgICAgICAjIFJhbmRvbWl6ZSB0ZXN0IG9yZGVyCisgICAgICAgICAgICAgICAgICctdycsICAgICAgICAgICAgIyBSZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZQorICAgICAgICAgICAgICAgICBdKQorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBhcmdzLmFwcGVuZCgnLW4nKSAgICAgICAgICMgU2lsZW5jZSBhbGVydHMgdW5kZXIgV2luZG93cworICAgIGlmIHRocmVhZGluZyBhbmQgbm90IGFueShpc19tdWx0aXByb2Nlc3NfZmxhZyhhcmcpIGZvciBhcmcgaW4gcmVncnRlc3RfYXJncyk6CisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLWonLCAnMCddKSAgIyBVc2UgYWxsIENQVSBjb3JlcworICAgIGlmIG5vdCBhbnkoaXNfcmVzb3VyY2VfdXNlX2ZsYWcoYXJnKSBmb3IgYXJnIGluIHJlZ3J0ZXN0X2FyZ3MpOgorICAgICAgICBhcmdzLmV4dGVuZChbJy11JywgJ2FsbCwtbGFyZ2VmaWxlLC1hdWRpbywtZ3VpJ10pCisgICAgYXJncy5leHRlbmQocmVncnRlc3RfYXJncykKKyAgICBwcmludCgnICcuam9pbihhcmdzKSkKKyAgICBvcy5leGVjdihzeXMuZXhlY3V0YWJsZSwgYXJncykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oc3lzLmFyZ3ZbMTpdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkgYi9Ub29scy9zc2wvbWFrZV9zc2xfZGF0YS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDI0NGQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkKQEAgLTAsMCArMSw2OCBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIiIiCitUaGlzIHNjcmlwdCBzaG91bGQgYmUgY2FsbGVkICptYW51YWxseSogd2hlbiB3ZSB3YW50IHRvIHVwZ3JhZGUgU1NMRXJyb3IKK2BsaWJyYXJ5YCBhbmQgYHJlYXNvbmAgbW5lbW5vbmljcyB0byBhIG1vcmUgcmVjZW50IE9wZW5TU0wgdmVyc2lvbi4KKworSXQgdGFrZXMgdHdvIGFyZ3VtZW50czoKKy0gdGhlIHBhdGggdG8gdGhlIE9wZW5TU0wgaW5jbHVkZSBmaWxlcycgZGlyZWN0b3J5CisgIChlLmcuIG9wZW5zc2wtMS4wLjEtYmV0YTMvaW5jbHVkZS9vcGVuc3NsLykKKy0gdGhlIHBhdGggdG8gdGhlIEMgZmlsZSB0byBiZSBnZW5lcmF0ZWQKKyAgKHByb2JhYmx5IE1vZHVsZXMvX3NzbF9kYXRhLmgpCisiIiIKKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCisKK2RlZiBwYXJzZV9lcnJvcl9jb2RlcyhoX2ZpbGUsIHByZWZpeCk6CisgICAgcGF0ID0gcmUuY29tcGlsZShyIiNkZWZpbmVcVysoJXMoW1x3XSspKVxXKyhcZCspXGIiICUgcmUuZXNjYXBlKHByZWZpeCkpCisgICAgY29kZXMgPSBbXQorICAgIHdpdGggb3BlbihoX2ZpbGUsICJyIiwgZW5jb2Rpbmc9ImxhdGluMSIpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICBtYXRjaCA9IHBhdC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgIGNvZGUsIG5hbWUsIG51bSA9IG1hdGNoLmdyb3VwcygpCisgICAgICAgICAgICAgICAgbnVtID0gaW50KG51bSkKKyAgICAgICAgICAgICAgICBjb2Rlcy5hcHBlbmQoKGNvZGUsIG5hbWUsIG51bSkpCisgICAgcmV0dXJuIGNvZGVzCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgb3BlbnNzbF9pbmMgPSBzeXMuYXJndlsxXQorICAgIG91dGZpbGUgPSBzeXMuYXJndlsyXQorICAgIHVzZV9zdGRvdXQgPSBvdXRmaWxlID09ICctJworICAgIGYgPSBzeXMuc3Rkb3V0IGlmIHVzZV9zdGRvdXQgZWxzZSBvcGVuKG91dGZpbGUsICJ3IikKKyAgICBlcnJvcl9saWJyYXJpZXMgPSAoCisgICAgICAgICMgKGxpYnJhcnkgY29kZSwgbW5lbW9uaWMsIGVycm9yIHByZWZpeCwgaGVhZGVyIGZpbGUpCisgICAgICAgICgnRVJSX0xJQl9QRU0nLCAnUEVNJywgJ1BFTV9SXycsICdwZW0uaCcpLAorICAgICAgICAoJ0VSUl9MSUJfU1NMJywgJ1NTTCcsICdTU0xfUl8nLCAnc3NsLmgnKSwKKyAgICAgICAgKCdFUlJfTElCX1g1MDknLCAnWDUwOScsICdYNTA5X1JfJywgJ3g1MDkuaCcpLAorICAgICAgICApCisgICAgZGVmIHcobCk6CisgICAgICAgIGYud3JpdGUobCArICJcbiIpCisgICAgdygiLyogRmlsZSBnZW5lcmF0ZWQgYnkgVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkgKi8iKQorICAgIHcoIi8qIEdlbmVyYXRlZCBvbiAlcyAqLyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5pc29mb3JtYXQoKSkKKyAgICB3KCIiKQorCisgICAgdygic3RhdGljIHN0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlIGxpYnJhcnlfY29kZXNbXSA9IHsiKQorICAgIGZvciBsaWJjb2RlLCBtbmVtbywgXywgXyBpbiBlcnJvcl9saWJyYXJpZXM6CisgICAgICAgIHcoJyAgICB7IiVzIiwgJXN9LCcgJSAobW5lbW8sIGxpYmNvZGUpKQorICAgIHcoJyAgICB7IE5VTEwgfScpCisgICAgdygnfTsnKQorICAgIHcoIiIpCisKKyAgICB3KCJzdGF0aWMgc3RydWN0IHB5X3NzbF9lcnJvcl9jb2RlIGVycm9yX2NvZGVzW10gPSB7IikKKyAgICBmb3IgbGliY29kZSwgXywgcHJlZml4LCBoX2ZpbGUgaW4gZXJyb3JfbGlicmFyaWVzOgorICAgICAgICBjb2RlcyA9IHBhcnNlX2Vycm9yX2NvZGVzKG9zLnBhdGguam9pbihvcGVuc3NsX2luYywgaF9maWxlKSwgcHJlZml4KQorICAgICAgICBmb3IgY29kZSwgbmFtZSwgbnVtIGluIHNvcnRlZChjb2Rlcyk6CisgICAgICAgICAgICB3KCcgICNpZmRlZiAlcycgJSAoY29kZSkpCisgICAgICAgICAgICB3KCcgICAgeyIlcyIsICVzLCAlc30sJyAlIChuYW1lLCBsaWJjb2RlLCBjb2RlKSkKKyAgICAgICAgICAgIHcoJyAgI2Vsc2UnKQorICAgICAgICAgICAgdygnICAgIHsiJXMiLCAlcywgJWR9LCcgJSAobmFtZSwgbGliY29kZSwgbnVtKSkKKyAgICAgICAgICAgIHcoJyAgI2VuZGlmJykKKyAgICB3KCcgICAgeyBOVUxMIH0nKQorICAgIHcoJ307JykKKyAgICBpZiBub3QgdXNlX3N0ZG91dDoKKyAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Ub29scy9zdHJpbmdiZW5jaC9SRUFETUUgYi9Ub29scy9zdHJpbmdiZW5jaC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3MWYxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3N0cmluZ2JlbmNoL1JFQURNRQpAQCAtMCwwICsxLDY4IEBACitzdHJpbmdiZW5jaCBpcyBhIHNldCBvZiBwZXJmb3JtYW5jZSB0ZXN0cyBjb21wYXJpbmcgYnl0ZSBzdHJpbmcKK29wZXJhdGlvbnMgd2l0aCB1bmljb2RlIG9wZXJhdGlvbnMuICBUaGUgdHdvIHN0cmluZyBpbXBsZW1lbnRhdGlvbnMKK2FyZSBsb29zZWx5IGJhc2VkIG9uIGVhY2ggb3RoZXIgYW5kIHNvbWV0aW1lcyB0aGUgYWxnb3JpdGhtIGZvciBvbmUgaXMKK2Zhc3RlciB0aGFuIHRoZSBvdGhlci4KKworVGhlc2UgdGVzdCBzZXQgd2FzIHN0YXJ0ZWQgYXQgdGhlIE5lZWQgRm9yIFNwZWVkIHNwcmludCBpbiBSZXlramF2aWsKK3RvIGlkZW50aWZ5IHdoaWNoIHN0cmluZyBtZXRob2RzIGNvdWxkIGJlIHNwZWQgdXAgcXVpY2tseSBhbmQgdG8KK2lkZW50aWZ5IG9idmlvdXMgcGxhY2VzIGZvciBpbXByb3ZlbWVudC4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgYmVuY2htYXJrCisKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBIiknLCAnc3RhcnRzd2l0aCBzaW5nbGUgY2hhcmFjdGVyJywgMTAwMCkKK2RlZiBzdGFydHN3aXRoX3NpbmdsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCitUaGUgYmVuY2ggZGVjb3JhdG9yIHRha2VzIHRocmVlIHBhcmFtZXRlcnMuICBUaGUgZmlyc3QgaXMgYSBzaG9ydAorZGVzY3JpcHRpb24gb2YgaG93IHRoZSBjb2RlIHdvcmtzLiAgSW4gbW9zdCBjYXNlcyB0aGlzIGlzIFB5dGhvbiBjb2RlCitzbmlwcGV0LiAgSXQgaXMgbm90IHRoZSBjb2RlIHdoaWNoIGlzIGFjdHVhbGx5IHJ1biBiZWNhdXNlIHRoZSByZWFsCitjb2RlIGlzIGhhbmQtb3B0aW1pemVkIHRvIGZvY3VzIG9uIHRoZSBtZXRob2QgYmVpbmcgdGVzdGVkLgorCitUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIGdyb3VwIHRpdGxlLiAgQWxsIGJlbmNobWFya3Mgd2l0aCB0aGUgc2FtZQorZ3JvdXAgdGl0bGUgYXJlIGxpc3RlZCB0b2dldGhlci4gIFRoaXMgbGV0cyB5b3UgY29tcGFyZSBkaWZmZXJlbnQKK2ltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBhbGdvcml0aG0sIHN1Y2ggYXMgInQgaW4gcyIKK3ZzLiAicy5maW5kKHQpIi4KKworVGhlIGxhc3QgaXMgYSBjb3VudC4gIEVhY2ggYmVuY2htYXJrIGxvb3BzIG92ZXIgdGhlIGFsZ29yaXRobSBlaXRoZXIKKzEwMCBvciAxMDAwIHRpbWVzLCBkZXBlbmRpbmcgb24gdGhlIGFsZ29yaXRobSBwZXJmb3JtYW5jZS4gIFRoZSBvdXRwdXQKK3RpbWUgaXMgdGhlIHRpbWUgcGVyIGJlbmNobWFyayBjYWxsIHNvIHRoZSByZWFkZXIgbmVlZHMgYSB3YXkgdG8ga25vdworaG93IHRvIHNjYWxlIHRoZSBwZXJmb3JtYW5jZS4KKworVGhlc2UgcGFyYW1ldGVycyBiZWNvbWUgZnVuY3Rpb24gYXR0cmlidXRlcy4KKworCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhlIG91dHB1dAorCisKKz09PT09PT09PT0gY291bnQgbmV3bGluZXMKKzM4LjU0ICAgNDEuNjAgICA5Mi43ICAgIC4uLnRleHQud2l0aC4yMDAwLm5ld2xpbmVzLmNvdW50KCJcbiIpICgqMTAwKQorPT09PT09PT09PSBlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlcgorMS4xNCAgICAxLjE4ICAgIDk2LjggICAgKCJBIioxMDAwKS5maW5kKCJBIikgKCoxMDAwKQorMC40NCAgICAwLjQxICAgIDEwNS42ICAgIkEiIGluICJBIioxMDAwICgqMTAwMCkKKzEuMTUgICAgMS4xNyAgICA5OC4xICAgICgiQSIqMTAwMCkuaW5kZXgoIkEiKSAoKjEwMDApCisKK1RoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIHJ1biB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgYnl0ZSBzdHJpbmdzLgorVGhlIHNlY29uZCBpcyB0aGUgcnVuIHRpbWUgZm9yIHVuaWNvZGUgc3RyaW5ncy4gIFRoZSB0aGlyZCBpcyBhCitwZXJjZW50YWdlOyBieXRlIHRpbWUgLyB1bmljb2RlIHRpbWUuICBJdCdzIHRoZSBwZXJjZW50YWdlIGJ5IHdoaWNoCit1bmljb2RlIGlzIGZhc3RlciB0aGFuIGJ5dGUgc3RyaW5ncy4KKworVGhlIGxhc3QgY29sdW1uIGNvbnRhaW5zIHRoZSBjb2RlIHNuaXBwZXQgYW5kIHRoZSByZXBlYXQgY291bnQgZm9yIHRoZQoraW50ZXJuYWwgYmVuY2htYXJrIGxvb3AuCisKK1RoZSB0aW1lcyBhcmUgY29tcHV0ZWQgd2l0aCAndGltZWl0LnB5JyB3aGljaCByZXBlYXRzIHRoZSB0ZXN0IG1vcmUKK2FuZCBtb3JlIHRpbWVzIHVudGlsIHRoZSB0b3RhbCB0aW1lIHRha2VzIG92ZXIgMC4yIHNlY29uZHMsIHJldHVybmluZwordGhlIGJlc3QgdGltZSBmb3IgYSBzaW5nbGUgaXRlcmF0aW9uLgorCitUaGUgZmluYWwgbGluZSBvZiB0aGUgb3V0cHV0IGlzIHRoZSBjdW11bGF0aXZlIHRpbWUgZm9yIGJ5dGUgYW5kCit1bmljb2RlIHN0cmluZ3MsIGFuZCB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBvZiB1bmljb2RlIHJlbGF0aXZlIHRvCitieXRlcy4gIEZvciBleGFtcGxlCisKKzQwNzkuODMgNTQzMi4yNSA3NS4xICAgIFRPVEFMCisKK0hvd2V2ZXIsIHRoaXMgaGFzIG5vIG1lYW5pbmcgYXMgaXQgZXZlbmx5IHdlaWdodHMgZXZlcnkgdGVzdC4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkgYi9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMGEyMWZhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkKQEAgLTAsMCArMSwxNDgyIEBACisKKyMgVmFyaW91cyBtaWNyb2JlbmNobWFya3MgY29tcGFyaW5nIHVuaWNvZGUgYW5kIGJ5dGUgc3RyaW5nIHBlcmZvcm1hbmNlCisjIFBsZWFzZSBrZWVwIHRoaXMgZmlsZSBib3RoIDIueCBhbmQgMy54IGNvbXBhdGlibGUhCisKK2ltcG9ydCB0aW1laXQKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcHRwYXJzZQorCitWRVJTSU9OID0gJzIuMCcKKworZGVmIHAoKmFyZ3MpOgorICAgIHN5cy5zdGRvdXQud3JpdGUoJyAnLmpvaW4oc3RyKHMpIGZvciBzIGluIGFyZ3MpICsgJ1xuJykKKworaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgIEJZVEVTID0gYnl0ZXNfZnJvbV9zdHIgPSBsYW1iZGEgeDogeC5lbmNvZGUoJ2FzY2lpJykKKyAgICBVTklDT0RFID0gdW5pY29kZV9mcm9tX3N0ciA9IGxhbWJkYSB4OiB4CitlbHNlOgorICAgIEJZVEVTID0gYnl0ZXNfZnJvbV9zdHIgPSBsYW1iZGEgeDogeAorICAgIFVOSUNPREUgPSB1bmljb2RlX2Zyb21fc3RyID0gbGFtYmRhIHg6IHguZGVjb2RlKCdhc2NpaScpCisKK2NsYXNzIFVuc3VwcG9ydGVkVHlwZShUeXBlRXJyb3IpOgorICAgIHBhc3MKKworCitwKCdzdHJpbmdiZW5jaCB2JXMnICUgVkVSU0lPTikKK3Aoc3lzLnZlcnNpb24pCitwKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpKQorCitSRVBFQVQgPSAxCitSRVBFQVQgPSAzCisjUkVQRUFUID0gNworCitpZiBfX25hbWVfXyAhPSAiX19tYWluX18iOgorICAgIHJhaXNlIFN5c3RlbUV4aXQoIk11c3QgcnVuIGFzIG1haW4gcHJvZ3JhbSIpCisKK3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCitwYXJzZXIuYWRkX29wdGlvbigiLVIiLCAiLS1za2lwLXJlIiwgZGVzdD0ic2tpcF9yZSIsCisgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgaGVscD0ic2tpcCByZWd1bGFyIGV4cHJlc3Npb24gdGVzdHMiKQorcGFyc2VyLmFkZF9vcHRpb24oIi04IiwgIi0tOC1iaXQiLCBkZXN0PSJieXRlc19vbmx5IiwKKyAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IGRvIDgtYml0IHN0cmluZyBiZW5jaG1hcmtzIikKK3BhcnNlci5hZGRfb3B0aW9uKCItdSIsICItLXVuaWNvZGUiLCBkZXN0PSJ1bmljb2RlX29ubHkiLAorICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgZG8gVW5pY29kZSBzdHJpbmcgYmVuY2htYXJrcyIpCisKKworX1JBTkdFXzEwMDAgPSBsaXN0KHJhbmdlKDEwMDApKQorX1JBTkdFXzEwMCA9IGxpc3QocmFuZ2UoMTAwKSkKK19SQU5HRV8xMCA9IGxpc3QocmFuZ2UoMTApKQorCitkdXBzID0ge30KK2RlZiBiZW5jaChzLCBncm91cCwgcmVwZWF0X2NvdW50KToKKyAgICBkZWYgYmxhaChmKToKKyAgICAgICAgaWYgZi5fX25hbWVfXyBpbiBkdXBzOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIk11bHRpcGxlIGZ1bmN0aW9ucyB3aXRoIHNhbWUgbmFtZTogJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmLl9fbmFtZV9fLCkpCisgICAgICAgIGR1cHNbZi5fX25hbWVfX10gPSAxCisgICAgICAgIGYuY29tbWVudCA9IHMKKyAgICAgICAgZi5pc19iZW5jaCA9IFRydWUKKyAgICAgICAgZi5ncm91cCA9IGdyb3VwCisgICAgICAgIGYucmVwZWF0X2NvdW50ID0gcmVwZWF0X2NvdW50CisgICAgICAgIHJldHVybiBmCisgICAgcmV0dXJuIGJsYWgKKworZGVmIHVzZXNfcmUoZik6CisgICAgZi51c2VzX3JlID0gVHJ1ZQorCisjIyMjIyMjICdpbicgY29tcGFyaXNvbnMKKworQGJlbmNoKCciQSIgaW4gIkEiKjEwMDAnLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGluX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJyJCIiBpbiAiQSIqMTAwMCcsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgaW5fdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKKworQGJlbmNoKCciQUIiIGluICJBQiIqMTAwMCcsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJyJCQyIgaW4gIkFCIioxMDAwJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5fdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCciQkMiIGluICgiQUIiKjMwMCsiQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbl90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJ3M9IkFCQyIqMzM7IChzKyJFIikgaW4gKChzKyJEIikqMzAwK3MrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGluX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSozMDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMyIGluIHMxCisKKyMgVHJ5IHdpdGggcmVnZXgKK0B1c2VzX3JlCitAYmVuY2goJ3M9IkFCQyIqMzM7IHJlLmNvbXBpbGUocysiRCIpLnNlYXJjaCgocysiRCIpKjMwMCtzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByZV90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqMzAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBwYXQgPSByZS5jb21waWxlKHMyKQorICAgIHNlYXJjaCA9IHBhdC5zZWFyY2gKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzZWFyY2goczEpCisKKworIyMjIyBzYW1lIHRlc3RzIGFzICdpbicgYnV0IHVzZSAnZmluZCcKKworQGJlbmNoKCcoIkEiKjEwMDApLmZpbmQoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgZmluZF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkuZmluZCgiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5maW5kKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLmZpbmQoIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5maW5kKCJDQSIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXJfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLmZpbmQoIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQ0EiKS5maW5kKCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDQSIpCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikuZmluZChzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArIkUiK3MpLmZpbmQoIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIGUrbQorICAgIHMyID0gZSttCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9maW5kKHMyKQorCisKKyMjIyMgU2FtZSB0ZXN0cyBmb3IgJ3JmaW5kJworCitAYmVuY2goJygiQSIqMTAwMCkucmZpbmQoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLnJmaW5kKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yZmluZCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmZpbmQoIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmZpbmQoIkNBIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXJfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJmaW5kKCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkJDIisiQUIiKjMwMCkucmZpbmQoIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5yZmluZCgiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSttICsgKGQrbSkqNTAwCisgICAgczIgPSBlK20KKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKHMrIkUiKygiRCIrcykqNTAwKS5yZmluZChzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IG0rZSArIChkK20pKjUwMAorICAgIHMyID0gbStlCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCisKKyMjIyMgTm93IHdpdGggaW5kZXguCisjIFNraXAgdGhlIG9uZXMgd2hpY2ggZmFpbCBiZWNhdXNlIHRoYXQgd291bGQgaW5jbHVkZSBleGNlcHRpb24gb3ZlcmhlYWQuCisKK0BiZW5jaCgnKCJBIioxMDAwKS5pbmRleCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBpbmRleF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLmluZGV4KCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5kZXhfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9pbmRleChzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5pbmRleCgiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5kZXhfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikuaW5kZXgocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgaW5kZXhfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCisKKyMjIyMgU2FtZSBmb3IgcmluZGV4CisKK0BiZW5jaCgnKCJBIioxMDAwKS5yaW5kZXgoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcmluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmluZGV4KCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucmluZGV4KCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByaW5kZXhfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5yaW5kZXgoIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmluZGV4X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlICsgbSArIChkK20pKjUwMAorICAgIHMyID0gZSArIG0KKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKKworIyMjIyBTYW1lIGZvciBwYXJ0aXRpb24KKworQGJlbmNoKCcoIkEiKjEwMDApLnBhcnRpdGlvbigiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLnBhcnRpdGlvbigiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLnBhcnRpdGlvbigiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnBhcnRpdGlvbigiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikucGFydGl0aW9uKCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikucGFydGl0aW9uKHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKKworIyMjIyBTYW1lIGZvciBycGFydGl0aW9uCisKK0BiZW5jaCgnKCJBIioxMDAwKS5ycGFydGl0aW9uKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLnJwYXJ0aXRpb24oIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnBhcnRpdGlvbigiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5ycGFydGl0aW9uKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucnBhcnRpdGlvbigiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJwYXJ0aXRpb24oIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSArIG0gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUgKyBtCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCisKKyMjIyMgU2FtZSBmb3Igc3BsaXQocywgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnNwbGl0KCJBIiwgMSknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5zcGxpdCgiQiIsIDEpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuc3BsaXQoIkFCIiwgMSknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQUIiKjEwMDApLnNwbGl0KCJCQyIsIDEpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLnNwbGl0KCJCQyIsIDEpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5zcGxpdChzKyJFIiwgMSknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKKworIyMjIyBTYW1lIGZvciByc3BsaXQocywgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnJzcGxpdCgiQSIsIDEpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnJzcGxpdCgiQiIsIDEpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworCitAYmVuY2goJygiQUIiKjEwMDApLnJzcGxpdCgiQUIiLCAxKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJzcGxpdCgiQkMiLCAxKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucnNwbGl0KCJDQSIsIDEpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5yc3BsaXQoIkUiK3MsIDEpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcnNwbGl0X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlICsgbSArIChkK20pKjUwMAorICAgIHMyID0gZSArIG0KKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKKworIyMjIyBCZW5jaG1hcmsgdGhlIG9wZXJhdG9yLWJhc2VkIG1ldGhvZHMKKworQGJlbmNoKCciQSIqMTAnLCAicmVwZWF0IDEgY2hhcmFjdGVyIDEwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfc2luZ2xlXzEwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMAorCitAYmVuY2goJyJBIioxMDAwJywgInJlcGVhdCAxIGNoYXJhY3RlciAxMDAwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfc2luZ2xlXzEwMDBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwMDAKKworQGJlbmNoKCciQUJDREUiKjEwJywgInJlcGVhdCA1IGNoYXJhY3RlcnMgMTAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF81XzEwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQUJDREUiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAKKworQGJlbmNoKCciQUJDREUiKjEwMDAnLCAicmVwZWF0IDUgY2hhcmFjdGVycyAxMDAwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfNV8xMDAwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQUJDREUiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAwMAorCisjICsgZm9yIGNvbmNhdAorCitAYmVuY2goJyJBbmRyZXciKyJEYWxrZSInLCAiY29uY2F0IHR3byBzdHJpbmdzIiwgMTAwMCkKK2RlZiBjb25jYXRfdHdvX3N0cmluZ3MoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiRGFsa2UiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMStzMgorCitAYmVuY2goJ3MxK3MyK3MzK3M0Ky4uLitzMjAnLCAiY29uY2F0IDIwIHN0cmluZ3Mgb2Ygd29yZHMgbGVuZ3RoIDQgdG8gMTUiLAorICAgICAgIDEwMDApCitkZWYgY29uY2F0X21hbnlfc3RyaW5ncyhTVFIpOgorICAgIHMxPVNUUignVElYU0dZTlJFRENWQkhKJykKKyAgICBzMj1TVFIoJ1BVTVRMWEJaVkRPJykKKyAgICBzMz1TVFIoJ0ZWWk5KJykKKyAgICBzND1TVFIoJ09HRFhVVycpCisgICAgczU9U1RSKCdXRUlNUk5DT1lWR0hLQicpCisgICAgczY9U1RSKCdGQ1FUTk1YUFVaSCcpCisgICAgczc9U1RSKCdUSUNaSllSTEJOVlVFQUsnKQorICAgIHM4PVNUUignUkVZQicpCisgICAgczk9U1RSKCdQV1VPUScpCisgICAgczEwPVNUUignRVFIQ01LQlMnKQorICAgIHMxMT1TVFIoJ0FFVkRGT0gnKQorICAgIHMxMj1TVFIoJ0lGSFZEJykKKyAgICBzMTM9U1RSKCdKR1RDTkxYV09IUScpCisgICAgczE0PVNUUignSVRTS0VQWUxST1pBV1hGJykKKyAgICBzMTU9U1RSKCdUSEVLJykKKyAgICBzMTY9U1RSKCdHSFBaRkJVWUNLTU5KSVQnKQorICAgIHMxNz1TVFIoJ0pNVVonKQorICAgIHMxOD1TVFIoJ1dMWlFNVEInKQorICAgIHMxOT1TVFIoJ0tQQURDQlcnKQorICAgIHMyMD1TVFIoJ1ROSkhaUUFHQlUnKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICAoczEgKyBzMisgczMrIHM0KyBzNSsgczYrIHM3KyBzOCsgczkrczEwKworICAgICAgICAgczExK3MxMitzMTMrczE0K3MxNStzMTYrczE3K3MxOCtzMTkrczIwKQorCisKKyMjIyMgQmVuY2htYXJrIGpvaW4KKworZGVmIGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCBhcmcpOgorICAgIGlmIFNUUiBpcyBCWVRFUyBhbmQgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFR5cGUKKyAgICByZXR1cm4gU1RSKGFyZykKKworQGJlbmNoKCciQSIuam9pbigiIiknLAorICAgICAgICJqb2luIGVtcHR5IHN0cmluZywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDApCitkZWYgam9pbl9lbXB0eV9zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICIiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4oIiIpJywKKyAgICAgICAiam9pbiBlbXB0eSBzdHJpbmcsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwKQorZGVmIGpvaW5fZW1wdHlfNShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICIiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQSIuam9pbigiQUJDLi5aIiknLAorICAgICAgICJqb2luIHN0cmluZyB3aXRoIDI2IGNoYXJhY3RlcnMsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0X3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbigiQUJDLi5aIiknLAorICAgICAgICJqb2luIHN0cmluZyB3aXRoIDI2IGNoYXJhY3RlcnMsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0XzUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkEiLmpvaW4obGlzdCgiQUJDLi5aIikpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDI2IGNoYXJhY3RlcnMsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0X2xpc3Rfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IFtTVFIoeCkgZm9yIHggaW4gIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIl0KKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbihsaXN0KCJBQkMuLloiKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMjYgY2hhcmFjdGVycywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfbGlzdF9maXZlKFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBbU1RSKHgpIGZvciB4IGluICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiJdCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQSIuam9pbihbIkJvYiJdKjEwMCkpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDEwMCB3b3Jkcywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fMTAwX3dvcmRzX3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBbU1RSKCJCb2IiKV0qMTAwCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4oWyJCb2IiXSoxMDApKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAxMDAgd29yZHMsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luXzEwMF93b3Jkc181KFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBbU1RSKCJCb2IiKV0qMTAwCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworIyMjIyBzcGxpdCB0ZXN0cworCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5zcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKHNtYWxsKSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9zcGxpdChTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KCkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoc21hbGwpIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3JzcGxpdChTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KCkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikuc3BsaXQoTm9uZSwgMSknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2Vfc3BsaXRfMShTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIE4gPSBOb25lCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoTiwgMSkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucnNwbGl0KE5vbmUsIDEpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3JzcGxpdF8xKFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBOID0gTm9uZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChOLCAxKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5wYXJ0aXRpb24oIiAiKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9wYXJ0aXRpb24oU1RSKToKKyAgICBzZXAgPSBTVFIoIiAiKQorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3BhcnRpdGlvbiA9IHMucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcGFydGl0aW9uKHNlcCkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucnBhcnRpdGlvbigiICIpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3JwYXJ0aXRpb24oU1RSKToKKyAgICBzZXAgPSBTVFIoIiAiKQorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3JwYXJ0aXRpb24gPSBzLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19ycGFydGl0aW9uKHNlcCkKKworaHVtYW5fdGV4dCA9ICIiIlwKK1B5dGhvbiBpcyBhIGR5bmFtaWMgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIHRoYXQgY2FuIGJlCit1c2VkIGZvciBtYW55IGtpbmRzIG9mIHNvZnR3YXJlIGRldmVsb3BtZW50LiBJdCBvZmZlcnMgc3Ryb25nIHN1cHBvcnQKK2ZvciBpbnRlZ3JhdGlvbiB3aXRoIG90aGVyIGxhbmd1YWdlcyBhbmQgdG9vbHMsIGNvbWVzIHdpdGggZXh0ZW5zaXZlCitzdGFuZGFyZCBsaWJyYXJpZXMsIGFuZCBjYW4gYmUgbGVhcm5lZCBpbiBhIGZldyBkYXlzLiBNYW55IFB5dGhvbgorcHJvZ3JhbW1lcnMgcmVwb3J0IHN1YnN0YW50aWFsIHByb2R1Y3Rpdml0eSBnYWlucyBhbmQgZmVlbCB0aGUgbGFuZ3VhZ2UKK2VuY291cmFnZXMgdGhlIGRldmVsb3BtZW50IG9mIGhpZ2hlciBxdWFsaXR5LCBtb3JlIG1haW50YWluYWJsZSBjb2RlLgorCitQeXRob24gcnVucyBvbiBXaW5kb3dzLCBMaW51eC9Vbml4LCBNYWMgT1MgWCwgT1MvMiwgQW1pZ2EsIFBhbG0KK0hhbmRoZWxkcywgYW5kIE5va2lhIG1vYmlsZSBwaG9uZXMuIFB5dGhvbiBoYXMgYWxzbyBiZWVuIHBvcnRlZCB0byB0aGUKK0phdmEgYW5kIC5ORVQgdmlydHVhbCBtYWNoaW5lcy4KKworUHl0aG9uIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIGFuIE9TSS1hcHByb3ZlZCBvcGVuIHNvdXJjZSBsaWNlbnNlIHRoYXQKK21ha2VzIGl0IGZyZWUgdG8gdXNlLCBldmVuIGZvciBjb21tZXJjaWFsIHByb2R1Y3RzLgorIiIiKjI1CitodW1hbl90ZXh0X2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoaHVtYW5fdGV4dCkKK2h1bWFuX3RleHRfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoaHVtYW5fdGV4dCkKK2RlZiBfZ2V0X2h1bWFuX3RleHQoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIGh1bWFuX3RleHRfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgcmV0dXJuIGh1bWFuX3RleHRfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCitAYmVuY2goJ2h1bWFuX3RleHQuc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChodWdlKSIsIDEwKQorZGVmIHdoaXRlc3BhY2Vfc3BsaXRfaHVnZShTVFIpOgorICAgIHMgPSBfZ2V0X2h1bWFuX3RleHQoU1RSKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0KCkKKworQGJlbmNoKCdodW1hbl90ZXh0LnJzcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKGh1Z2UpIiwgMTApCitkZWYgd2hpdGVzcGFjZV9yc3BsaXRfaHVnZShTVFIpOgorICAgIHMgPSBfZ2V0X2h1bWFuX3RleHQoU1RSKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcnNwbGl0KCkKKworCisKK0BiZW5jaCgnInRoaXNcXG5pc1xcbmFcXG50ZXN0XFxuIi5zcGxpdCgiXFxuIiknLCAic3BsaXQgbmV3bGluZXMiLCAxMDAwKQorZGVmIG5ld2xpbmVzX3NwbGl0KFNUUik6CisgICAgcyA9IFNUUigidGhpc1xuaXNcbmFcbnRlc3RcbiIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KG5sKQorCisKK0BiZW5jaCgnInRoaXNcXG5pc1xcbmFcXG50ZXN0XFxuIi5yc3BsaXQoIlxcbiIpJywgInNwbGl0IG5ld2xpbmVzIiwgMTAwMCkKK2RlZiBuZXdsaW5lc19yc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzXG5pc1xuYVxudGVzdFxuIikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQobmwpCisKK0BiZW5jaCgnInRoaXNcXG5pc1xcbmFcXG50ZXN0XFxuIi5zcGxpdGxpbmVzKCknLCAic3BsaXQgbmV3bGluZXMiLCAxMDAwKQorZGVmIG5ld2xpbmVzX3NwbGl0bGluZXMoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzXG5pc1xuYVxudGVzdFxuIikKKyAgICBzX3NwbGl0bGluZXMgPSBzLnNwbGl0bGluZXMKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdGxpbmVzKCkKKworIyMgc3BsaXQgdGV4dCB3aXRoIDIwMDAgbmV3bGluZXMKKworZGVmIF9tYWtlXzIwMDBfbGluZXMoKToKKyAgICBpbXBvcnQgcmFuZG9tCisgICAgciA9IHJhbmRvbS5SYW5kb20oMTAwKQorICAgIGNoYXJzID0gbGlzdChtYXAoY2hyLCByYW5nZSgzMiwgMTI4KSkpCisgICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKGNoYXJzKToKKyAgICAgICAgY2hhcnNbaV0gPSAiICIKKyAgICAgICAgaSArPSByLnJhbmRyYW5nZSg5KQorICAgIHMgPSAiIi5qb2luKGNoYXJzKQorICAgIHMgPSBzKjQKKyAgICB3b3JkcyA9IFtdCisgICAgZm9yIGkgaW4gcmFuZ2UoMjAwMCk6CisgICAgICAgIHN0YXJ0ID0gci5yYW5kcmFuZ2UoOTYpCisgICAgICAgIG4gPSByLnJhbmRpbnQoNSwgNjUpCisgICAgICAgIHdvcmRzLmFwcGVuZChzW3N0YXJ0OnN0YXJ0K25dKQorICAgIHJldHVybiAiXG4iLmpvaW4od29yZHMpKyJcbiIKKworX3RleHRfd2l0aF8yMDAwX2xpbmVzID0gX21ha2VfMjAwMF9saW5lcygpCitfdGV4dF93aXRoXzIwMDBfbGluZXNfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihfdGV4dF93aXRoXzIwMDBfbGluZXMpCitfdGV4dF93aXRoXzIwMDBfbGluZXNfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoX3RleHRfd2l0aF8yMDAwX2xpbmVzKQorZGVmIF9nZXRfMjAwMF9saW5lcyhTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX3RleHRfd2l0aF8yMDAwX2xpbmVzX3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIHJldHVybiBfdGV4dF93aXRoXzIwMDBfbGluZXNfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK0BiZW5jaCgnIi4uLnRleHQuLi4iLnNwbGl0KCJcXG4iKScsICJzcGxpdCAyMDAwIG5ld2xpbmVzIiwgMTApCitkZWYgbmV3bGluZXNfc3BsaXRfMjAwMChTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXQobmwpCisKK0BiZW5jaCgnIi4uLnRleHQuLi4iLnJzcGxpdCgiXFxuIiknLCAic3BsaXQgMjAwMCBuZXdsaW5lcyIsIDEwKQorZGVmIG5ld2xpbmVzX3JzcGxpdF8yMDAwKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JzcGxpdChubCkKKworQGJlbmNoKCciLi4udGV4dC4uLiIuc3BsaXRsaW5lcygpJywgInNwbGl0IDIwMDAgbmV3bGluZXMiLCAxMCkKK2RlZiBuZXdsaW5lc19zcGxpdGxpbmVzXzIwMDAoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX3NwbGl0bGluZXMgPSBzLnNwbGl0bGluZXMKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXRsaW5lcygpCisKKworIyMgc3BsaXQgdGV4dCBvbiAiLS0iIGNoYXJhY3RlcnMKK0BiZW5jaCgKKyAgICAnInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIi5zcGxpdCgiLS0iKScsCisgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoc21hbGwpIiwgMTAwMCkKK2RlZiBzcGxpdF9tdWx0aWNoYXJfc2VwX3NtYWxsKFNUUik6CisgICAgcyA9IFNUUigidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgcGF0ID0gU1RSKCItLSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQocGF0KQorQGJlbmNoKAorICAgICcidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iLnJzcGxpdCgiLS0iKScsCisgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoc21hbGwpIiwgMTAwMCkKK2RlZiByc3BsaXRfbXVsdGljaGFyX3NlcF9zbWFsbChTVFIpOgorICAgIHMgPSBTVFIoInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgcGF0ID0gU1RSKCItLSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KHBhdCkKKworIyMgc3BsaXQgZG5hIHRleHQgb24gIkFDVEFUIiBjaGFyYWN0ZXJzCitAYmVuY2goJ2RuYS5zcGxpdCgiQUNUQVQiKScsCisgICAgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoZG5hKSIsIDEwKQorZGVmIHNwbGl0X211bHRpY2hhcl9zZXBfZG5hKFNUUik6CisgICAgcyA9IF9nZXRfZG5hKFNUUikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIHBhdCA9IFNUUigiQUNUQVQiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdChwYXQpCisKK0BiZW5jaCgnZG5hLnJzcGxpdCgiQUNUQVQiKScsCisgICAgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoZG5hKSIsIDEwKQorZGVmIHJzcGxpdF9tdWx0aWNoYXJfc2VwX2RuYShTVFIpOgorICAgIHMgPSBfZ2V0X2RuYShTVFIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIHBhdCA9IFNUUigiQUNUQVQiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yc3BsaXQocGF0KQorCisKKworIyMgc3BsaXQgd2l0aCBsaW1pdHMKKworR0ZGM19leGFtcGxlID0gIlx0Ii5qb2luKFsKKyAgICAiSSIsICJHZW5vbWljX2Nhbm9uaWNhbCIsICJyZWdpb24iLCAiMzU3MjA4IiwgIjM5NjE4MyIsICIuIiwgIisiLCAiLiIsCisgICAgIklEPVNlcXVlbmNlOlIxMTk7bm90ZT1DbG9uZSBSMTE5JTNCIEdlbmJhbmsgQUYwNjMwMDc7TmFtZT1SMTE5Il0pCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnNwbGl0KCJcXHQiKScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9zcGxpdF9ub19saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoc2VwKQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5zcGxpdCgiXFx0IiwgOCknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfc3BsaXRfbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KHNlcCwgOCkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUucnNwbGl0KCJcXHQiKScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9yc3BsaXRfbm9fbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KHNlcCkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUucnNwbGl0KCJcXHQiLCA4KScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9yc3BsaXRfbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KHNlcCwgOCkKKworIyMjIyBDb3VudCBjaGFyYWN0ZXJzCisKK0BiZW5jaCgnLi4udGV4dC53aXRoLjIwMDAubmV3bGluZXMuY291bnQoIlxcbiIpJywKKyAgICAgICAiY291bnQgbmV3bGluZXMiLCAxMCkKK2RlZiBjb3VudF9uZXdsaW5lcyhTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfY291bnQgPSBzLmNvdW50CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfY291bnQobmwpCisKKyMgT3JjaGlkIHNlcXVlbmNlcyBjb25jYXRlbmF0ZWQsIGZyb20gQmlvcHl0aG9uCitfZG5hID0gIiIiCitDR1RBQUNBQUdHVFRUQ0NHVEFHR1RHQUFDQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dHR1RUCitBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUVEdHVENBQ0NDQVRHQUdDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FBVFRHQ0NBVENHCitBR0NDVENDVFRHR0dBR0NUVFRDVFRHVFRHR0NHQUdBVENUQUFBQ0NDVFRHQ0NDR0dDR0NBR1RUVFRHQ1RDQ0FBR1RDR1RUCitUR0FDQUNBVEFBVFRHR1RHQUFHR0dHR1RHR0NBVENDVFRDQ0NUR0FDQ0NUQ0NDQ0NBQUNUQVRUVFRUVFRBQUNBQUNUQ1RDCitBR0NBQUNHR0FHQUNUQ0FHVENUVENHR0NBQUFUR0NHQVRBQUFUR0dUR1RHQUFUVEdDQUdBQVRDQ0NHVEdDQUNDQVRDR0FHCitUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0dDQ1RHQ0NUR0dHQ0FUVEdDR0FHVENBVEFUCitDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FUQUNUR1RUQ0FHQ0NHR1RHQ0dHQVRHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUCitUR0dUQUNHR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NUVFRUR0FUR0dUQ0NUQUFBVEFDR0dDQUFHQUdHVEdHQUNHQUFDVEFUCitHQ1RBQ0FBQ0FBQUFUVEdUVEdUR0NBR0FHR0NDQ0NHR0dUVEdUQ0dUQVRUQUdBVEdHR0NDQUNDR1RBQVRDVEdBQUdBQ0NDCitUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FUR0dDQ0FUVFRHR1RUR0NHQUNDQ0NBR0dUQ0FHCitHVEdBR0NBQUNBR0NUR1RDR1RBQUNBQUdHVFRUQ0NHVEFHR0dUR0FBQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBCitBVEFBVFRHQVRDR0FHVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUR0dHVENBQ0NDQVRHR0dDQVRUVEdDVEdUVEdBQUdUR0FDCitDVEFHQVRUVEdDQ0FUQ0dBR0NDVENDVFRHR0dBR0NBVENDVFRHVFRHR0NHQVRBVENUQUFBQ0NDVENBQVRUVFRUQ0NDQ0NBCitBVENBQUFUVEFDQUNBQUFBVFRHR1RHR0FHR0dHR1RHR0NBVFRDVFRDQ0NUVEFDQ0NUQ0NDQ0NBQUFUQVRUVFRUVFRBQUNBCitBQ1RDVENBR0NBQUNHR0FUQVRDVENBR0NUQ1RUR0NBVENHQVRHQUFHQUFDQ0NBQ0NHQUFBVEdDR0FUQUFBVEdHVEdUR0FBCitUVEdDQUdBQVRDQ0NHVEdBQUNDQVRDR0FHVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHCitDQ1RHQ0NUR0dHQ0FUVEdDR0FHVENBVEFUQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBVEFDVEdUVENBR0NDR0dUR0NHCitHQVRHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUVEdHVEFDR0dHR0dHVENUQUFHQUdBVEdDQVRHR0dDVFRUVEdBVEdHVENDVEFBCitBVEFDR0dDQUFHQUdHVEdHQUNHQUFDVEFUR0NUQUNBQUNBQUFBVFRHVFRHVEdDQUFBR0dDQ0NDR0dHVFRHVENHVEFUQUFHCitBVEdHR0NDQUNDR0FUQVRDVEdBQUdBQ0NDVFRUVEdHQUNDQ0NBVFRHR0FHQ0NDQVRDQUFDQ0NBVEdUQ0FHVFRHQVRHR0NDCitBVFRDR1RBQUNBQUdHVFRUQ0NHVEFHR1RHQUFDQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dBCitHVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUR0dHVENBQ0NDQVRHR0dDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FUVFRHQ0NBCitUQ0dBR0NDVENDVFRHR0dBR0NUVFRDVFRHVFRHR0NHQVRBVENUQUFBQ0NDVFRHQ0NDR0dDQUdBR1RUVFRHR0dBQVRDQ0NHCitUR0FBQ0NBVENHQUdUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0dDQ1RHQ0NUR0dHQ0FUCitUR0NHQUdUQ0FUQVRDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FDQUNDVEdUVENBR0NDR0dUR0NHR0FUR1RHQUdUVFRHCitHQ0NDQ1RUR1RUQ1RUVEdHVEFDR0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDVFRUVEdBVEdHVENDVEFBQVRBQ0dHQ0FBR0FHCitHVEdHQUNHQUFDVEFUR0NUQUNBQUNBQUFBVFRHVFRHVEdDQUFBR0dDQ0NDR0dHVFRHVENHVEFUVEFHQVRHR0dDQ0FDQ0FUCitBQVRDVEdBQUdBQ0NDVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEdHQ0NBVFRUR0dUVEdDCitHQUNDQ0FHVENBR0dUR0FHR0dUQUdHVEdBQUNDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0FHCitUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRUR0dUQ0FDQ0NBVEdHR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQVRUVEdDQ0FUCitDR0FHQ0NUQ0NUVEdHR0FHQ1RUVENUVEdUVEdHQ0dBR0FUQ1RBQUFDQ0NUVEdDQ0NHR0NHR0FHVFRUR0dDR0NDQUFHVENBCitUQVRHQUNBQ0FUQUFUVEdHVEdBQUdHR0dHVEdHQ0FUQ0NUR0NDQ1RHQUNDQ1RDQ0NDQUFBVFRBVFRUVFRUVEFBQ0FBQ1RDCitUQ0FHQ0FBQ0dHQVRBVENUQ0dHQ1RDVFRHQ0FUQ0dBVEdBQUdBQUNHQ0FHQ0dBQUFUR0NHQVRBQUFUR0dUR1RHQUFUVEdDCitBR0FBVENDQ0dUR0FBQ0NBVENHQUdUQ1RUVEdHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHQ0NUCitHQ0NUR0dHQ0FUVEdHR0FBVENBVEFUQ1RDVENDQ0NUQUFDR0FHR0NUQVRDQ0FBQUNBVEFDVEdUVENBVENDR0dUR0NHR0FUCitHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUVEdHVEFDQ0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDQVRUVEdBVEdHVENDVENBQUFBCitDR0dDQUFHQUdHVEdHQUNHQUFDVEFUR0NDQUNBQUNBQUFBVFRHVFRHVENDQ0FBR0dDQ0NDR0dHVFRHVENHVEFUVEFHQVRHCitHR0NDQUNDR1RBQUNDVEdBQUdBQ0NDVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEdBQ0NBCitUVFRHVFRHQ0dBQ0NDQ0FHVENBR0NUR0FHQ0FBQ0NDR0NUR0FHVEdHQUFHR1RDQVRUR0NDR0FUQVRDQUNBVEFBVEFBVFRHCitBVENHQUdUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRHR1RDQUNDQ0FUR0FHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBVFRUCitHQ0NBVENHQUdDQ1RDQ1RUR0dHQUdUVFRUQ1RUR1RUR0dDR0FHQVRDVEFBQUNDQ1RUR0NDQ0dHQ0dHQUdUVEdUR0NHQ0NBCitBR1RDQVRBVEdBQ0FDQVRBQVRUR0dUR0FBR0dHR0dUR0dDQVRDQ1RHQ0NDVEdBQ0NDVENDQ0NBQUFUVEFUVFRUVFRUQUFDCitBQUNUQ1RDQUdDQUFDR0dBVEFUQ1RDR0dDVENUVEdDQVRDR0FUR0FBR0FBQ0dDQUdDR0FBQVRHQ0dBVEFBQVRHR1RHVEdBCitBVFRHQ0FHQUFUQ0NDR1RHQUFDQ0FUQ0dBR1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDCitHQ0NUR0NDVEdHR0NBVFRHQ0dBR1RDQVRBVENUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQVRBQ1RHVFRDQVRDQ0dHVEdDCitHR0FUR1RHQUdUVFRHR0NDQ0NUVEdUVENUVFRHR1RBQ0dHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ0FUVFRHQVRHR1RDQ1RDCitBQUFBQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVEdDVEFDQUFDQ0FBQVRUR1RUR1RDQ0NBQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBCitHQVRHR0dDQ0FDQ0dUQUFDQ1RHQUFHQUNDQ1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHCitBQ0NBVEdUR1RUR0NHQUNDQ0NBR1RDQUdDVEdBR0NBQUNHQ0dDVEdBR0NHVEFBQ0FBR0dUVFRDQ0dUQUdHVEdHQUNDVENDCitHR0dBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHQUdHVEFBVENUR0dBR0dBVENUR0NBVEFUVFRUR0dUQ0FDCisiIiIKK19kbmEgPSAiIi5qb2luKF9kbmEuc3BsaXRsaW5lcygpKQorX2RuYSA9IF9kbmEgKiAyNQorX2RuYV9ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKF9kbmEpCitfZG5hX3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKF9kbmEpCisKK2RlZiBfZ2V0X2RuYShTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX2RuYV91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICByZXR1cm4gX2RuYV9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKK0BiZW5jaCgnZG5hLmNvdW50KCJBQUNUIiknLCAiY291bnQgQUFDVCBzdWJzdHJpbmdzIGluIEROQSBleGFtcGxlIiwgMTApCitkZWYgY291bnRfYWFjdChTVFIpOgorICAgIHNlcSA9IF9nZXRfZG5hKFNUUikKKyAgICBzZXFfY291bnQgPSBzZXEuY291bnQKKyAgICBuZWVkbGUgPSBTVFIoIkFBQ1QiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc2VxX2NvdW50KG5lZWRsZSkKKworIyMjIyMgc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGgKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBIiknLCAnc3RhcnRzd2l0aCBzaW5nbGUgY2hhcmFjdGVyJywgMTAwMCkKK2RlZiBzdGFydHN3aXRoX3NpbmdsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkFuZHJldyIpJywgJ3N0YXJ0c3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycycsCisgICAgICAgMTAwMCkKK2RlZiBzdGFydHN3aXRoX211bHRpcGxlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZHJldyIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBbmRlcnMiKScsCisgICAgICAgJ3N0YXJ0c3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycyAtIG5vdCEnLCAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfbXVsdGlwbGVfbm90KFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZGVycyIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworCisjIGVuZHN3aXRoCisKK0BiZW5jaCgnIkFuZHJldyIuZW5kc3dpdGgoInciKScsICdlbmRzd2l0aCBzaW5nbGUgY2hhcmFjdGVyJywgMTAwMCkKK2RlZiBlbmRzd2l0aF9zaW5nbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigidyIpCisgICAgczFfZW5kc3dpdGggPSBzMS5lbmRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9lbmRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5lbmRzd2l0aCgiQW5kcmV3IiknLCAnZW5kc3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycycsIDEwMDApCitkZWYgZW5kc3dpdGhfbXVsdGlwbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kcmV3IikKKyAgICBzMV9lbmRzd2l0aCA9IHMxLmVuZHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2VuZHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLmVuZHN3aXRoKCJBbmRlcnMiKScsCisgICAgICAgJ2VuZHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMgLSBub3QhJywgMTAwMCkKK2RlZiBlbmRzd2l0aF9tdWx0aXBsZV9ub3QoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kZXJzIikKKyAgICBzMV9lbmRzd2l0aCA9IHMxLmVuZHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2VuZHN3aXRoKHMyKQorCisjIyMjIFN0cmlwCisKK0BiZW5jaCgnIkhlbGxvIVxcbiIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3N0cmlwX3JpZ2h0KFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXG4iKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJIZWxsbyFcXG4iLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfcnN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXG4iKQorICAgIHNfcnN0cmlwID0gcy5yc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3RyaXAoKQorCitAYmVuY2goJyJcXG5IZWxsbyEiLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9zdHJpcF9sZWZ0KFNUUik6CisgICAgcyA9IFNUUigiXG5IZWxsbyEiKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJcXG5IZWxsbyFcXG4iLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9zdHJpcF9ib3RoKFNUUik6CisgICAgcyA9IFNUUigiXG5IZWxsbyFcbiIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIlxcbkhlbGxvISIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9sc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJcbkhlbGxvISIpCisgICAgc19sc3RyaXAgPSBzLmxzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xzdHJpcCgpCisKK0BiZW5jaCgncz0iSGVsbG8hXFxuIjsgc1s6LTFdIGlmIHNbLTFdPT0iXFxuIiBlbHNlIHMnLAorICAgICAgICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX2lmX2Vsc2UoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcbiIpCisgICAgTkwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc1s6LTFdIGlmIChzWy0xXSA9PSBOTCkgZWxzZSBzCisKKworIyBTdHJpcCBtdWx0aXBsZSBzcGFjZXMgb3IgdGFicworCitAYmVuY2goJyJIZWxsb1xcdCAgIFxcdCIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBzcGFjZXMgYW5kIHRhYnMnLCAxMDAwKQorZGVmIHRlcm1pbmFsX3NwYWNlX3N0cmlwKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG9cdCAgIFx0ISIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIkhlbGxvXFx0ICAgXFx0Ii5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBzcGFjZXMgYW5kIHRhYnMnLCAxMDAwKQorZGVmIHRlcm1pbmFsX3NwYWNlX3JzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVx0ICAgXHQiKQorICAgIHNfcnN0cmlwID0gcy5yc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3RyaXAoKQorCitAYmVuY2goJyJcXHQgICBcXHRIZWxsbyIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgc3BhY2VzIGFuZCB0YWJzJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9zcGFjZV9sc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJcdCAgIFx0SGVsbG8hIikKKyAgICBzX2xzdHJpcCA9IHMubHN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbHN0cmlwKCkKKworCisjIyMjIHJlcGxhY2UKK0BiZW5jaCgnIlRoaXMgaXMgYSB0ZXN0Ii5yZXBsYWNlKCIgIiwgIlxcdCIpJywgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlcicsCisgICAgICAgMTAwMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzID0gU1RSKCJUaGlzIGlzIGEgdGVzdCEiKQorICAgIGZyb21fc3RyID0gU1RSKCIgIikKKyAgICB0b19zdHIgPSBTVFIoIlx0IikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKK0B1c2VzX3JlCitAYmVuY2goJ3JlLnN1YigiICIsICJcXHQiLCAiVGhpcyBpcyBhIHRlc3QiJywgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlcicsCisgICAgICAgMTAwMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfcmUoU1RSKToKKyAgICBzID0gU1RSKCJUaGlzIGlzIGEgdGVzdCEiKQorICAgIHBhdCA9IHJlLmNvbXBpbGUoU1RSKCIgIikpCisgICAgdG9fc3RyID0gU1RSKCJcdCIpCisgICAgcGF0X3N1YiA9IHBhdC5zdWIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcGF0X3N1Yih0b19zdHIsIHMpCisKK0BiZW5jaCgnIi4uLnRleHQud2l0aC4yMDAwLmxpbmVzLi4ucmVwbGFjZSgiXFxuIiwgIiAiKScsCisgICAgICAgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlciwgYmlnIHN0cmluZycsIDEwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9iaWcoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiXG4iKQorICAgIHRvX3N0ciA9IFNUUigiICIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworQHVzZXNfcmUKK0BiZW5jaCgncmUuc3ViKCJcXG4iLCAiICIsICIuLi50ZXh0LndpdGguMjAwMC5saW5lcy4uLiIpJywKKyAgICAgICAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyLCBiaWcgc3RyaW5nJywgMTApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2JpZ19yZShTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHBhdCA9IHJlLmNvbXBpbGUoU1RSKCJcbiIpKQorICAgIHRvX3N0ciA9IFNUUigiICIpCisgICAgcGF0X3N1YiA9IHBhdC5zdWIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHBhdF9zdWIodG9fc3RyLCBzKQorCisKK0BiZW5jaCgnZG5hLnJlcGxhY2UoIkFUQyIsICJBVFQiKScsCisgICAgICAgJ3JlcGxhY2UgbXVsdGlwbGUgY2hhcmFjdGVycywgZG5hJywgMTApCitkZWYgcmVwbGFjZV9tdWx0aXBsZV9jaGFyYWN0ZXJzX2RuYShTVFIpOgorICAgIHNlcSA9IF9nZXRfZG5hKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiQVRDIikKKyAgICB0b19zdHIgPSBTVFIoIkFUVCIpCisgICAgc2VxX3JlcGxhY2UgPSBzZXEucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc2VxX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworIyBUaGlzIGluY3JlYXNlcyB0aGUgY2hhcmFjdGVyIGNvdW50CitAYmVuY2goJyIuLi50ZXh0LndpdGguMjAwMC5uZXdsaW5lcy4uLnJlcGxhY2UoIlxcbiIsICJcXHJcXG4iKScsCisgICAgICAgJ3JlcGxhY2UgYW5kIGV4cGFuZCBtdWx0aXBsZSBjaGFyYWN0ZXJzLCBiaWcgc3RyaW5nJywgMTApCitkZWYgcmVwbGFjZV9tdWx0aXBsZV9jaGFyYWN0ZXJfYmlnKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIlxuIikKKyAgICB0b19zdHIgPSBTVFIoIlxyXG4iKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKKworIyBUaGlzIGRlY3JlYXNlcyB0aGUgY2hhcmFjdGVyIGNvdW50CitAYmVuY2goJyJXaGVuIHNoYWxsIHdlIHRocmVlIG1lZXQgYWdhaW4/Ii5yZXBsYWNlKCJlZSIsICIiKScsCisgICAgICAgJ3JlcGxhY2UvcmVtb3ZlIG11bHRpcGxlIGNoYXJhY3RlcnMnLCAxMDAwKQorZGVmIHJlcGxhY2VfbXVsdGlwbGVfY2hhcmFjdGVyX3JlbW92ZShTVFIpOgorICAgIHMgPSBTVFIoIldoZW4gc2hhbGwgd2UgdGhyZWUgbWVldCBhZ2Fpbj8iKQorICAgIGZyb21fc3RyID0gU1RSKCJlZSIpCisgICAgdG9fc3RyID0gU1RSKCIiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworCitiaWdfcyA9ICJBIiArICgiWiIqMTI4KjEwMjQpCitiaWdfc19ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKGJpZ19zKQorYmlnX3NfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoYmlnX3MpCitkZWYgX2dldF9iaWdfcyhTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOiByZXR1cm4gYmlnX3NfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzogcmV0dXJuIGJpZ19zX2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworIyBUaGUgb2xkZXIgcmVwbGFjZSBpbXBsZW1lbnRhdGlvbiBjb3VudGVkIGFsbCBtYXRjaGVzIGluCisjIHRoZSBzdHJpbmcgZXZlbiB3aGVuIGl0IG9ubHkgbmVlZWQgdG8gbWFrZSBvbmUgcmVwbGFjZW1lbnQuCitAYmVuY2goJygiQSIgKyAoIloiKjEyOCoxMDI0KSkucmVwbGFjZSgiQSIsICJCQiIsIDEpJywKKyAgICAgICAncXVpY2sgcmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyIG1hdGNoJywgMTApCitkZWYgcXVpY2tfcmVwbGFjZV9zaW5nbGVfbWF0Y2goU1RSKToKKyAgICBzID0gX2dldF9iaWdfcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIkEiKQorICAgIHRvX3N0ciA9IFNUUigiQkIiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIsIDEpCisKK0BiZW5jaCgnKCJBIiArICgiWiIqMTI4KjEwMjQpKS5yZXBsYWNlKCJBWloiLCAiQkJaWiIsIDEpJywKKyAgICAgICAncXVpY2sgcmVwbGFjZSBtdWx0aXBsZSBjaGFyYWN0ZXIgbWF0Y2gnLCAxMCkKK2RlZiBxdWlja19yZXBsYWNlX211bHRpcGxlX21hdGNoKFNUUik6CisgICAgcyA9IF9nZXRfYmlnX3MoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJBWloiKQorICAgIHRvX3N0ciA9IFNUUigiQkJaWiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0ciwgMSkKKworCisjIyMjCisKKyMgQ0NQIGRvZXMgYSBsb3Qgb2YgdGhpcywgZm9yIGludGVybmF0aW9uYWxpc2F0aW9uIG9mIGluZ2FtZSBtZXNzYWdlcy4KK19mb3JtYXQgPSAiVGhlICUodGhpbmcpcyBpcyAlKHBsYWNlKXMgdGhlICUobG9jYXRpb24pcy4iCitfZm9ybWF0X2RpY3QgPSB7ICJ0aGluZyI6IlRISU5HIiwgInBsYWNlIjoiUExBQ0UiLCAibG9jYXRpb24iOiJMT0NBVElPTiIsIH0KK19mb3JtYXRfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihfZm9ybWF0KQorX2Zvcm1hdF91bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihfZm9ybWF0KQorX2Zvcm1hdF9kaWN0X2J5dGVzID0gZGljdCgoYnl0ZXNfZnJvbV9zdHIoayksIGJ5dGVzX2Zyb21fc3RyKHYpKSBmb3IgKGssdikgaW4gX2Zvcm1hdF9kaWN0Lml0ZW1zKCkpCitfZm9ybWF0X2RpY3RfdW5pY29kZSA9IGRpY3QoKHVuaWNvZGVfZnJvbV9zdHIoayksIHVuaWNvZGVfZnJvbV9zdHIodikpIGZvciAoayx2KSBpbiBfZm9ybWF0X2RpY3QuaXRlbXMoKSkKKworZGVmIF9nZXRfZm9ybWF0KFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfZm9ybWF0X3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVHlwZQorICAgICAgICByZXR1cm4gX2Zvcm1hdF9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKK2RlZiBfZ2V0X2Zvcm1hdF9kaWN0KFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfZm9ybWF0X2RpY3RfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRUeXBlCisgICAgICAgIHJldHVybiBfZm9ybWF0X2RpY3RfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisjIEZvcm1hdHRpbmcuCitAYmVuY2goJyJUaGUgJShrMSlzIGlzICUoazIpcyB0aGUgJShrMylzLiIleyJrMSI6IngiLCJrMiI6InkiLCJrMyI6InoiLH0nLAorICAgICAgICdmb3JtYXR0aW5nIGEgc3RyaW5nIHR5cGUgd2l0aCBhIGRpY3QnLCAxMDAwKQorZGVmIGZvcm1hdF93aXRoX2RpY3QoU1RSKToKKyAgICBzID0gX2dldF9mb3JtYXQoU1RSKQorICAgIGQgPSBfZ2V0X2Zvcm1hdF9kaWN0KFNUUikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAlIGQKKworCisjIyMjIFVwcGVyLSBhbmQgbG93ZXItIGNhc2UgY29udmVyc2lvbgorCitAYmVuY2goJygiV2hlcmUgaW4gdGhlIHdvcmxkIGlzIENhcm1lbiBTYW4gRGVpZ28/IioxMCkubG93ZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSByYXJlIiwgMTAwMCkKK2RlZiBsb3dlcl9jb252ZXJzaW9uX3JhcmUoU1RSKToKKyAgICBzID0gU1RSKCJXaGVyZSBpbiB0aGUgd29ybGQgaXMgQ2FybWVuIFNhbiBEZWlnbz8iKjEwKQorICAgIHNfbG93ZXIgPSBzLmxvd2VyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbG93ZXIoKQorCitAYmVuY2goJygiV0hFUkUgSU4gVEhFIFdPUkxEIElTIENBUk1FTiBTQU4gREVJR08/IioxMCkubG93ZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSBkZW5zZSIsIDEwMDApCitkZWYgbG93ZXJfY29udmVyc2lvbl9kZW5zZShTVFIpOgorICAgIHMgPSBTVFIoIldIRVJFIElOIFRIRSBXT1JMRCBJUyBDQVJNRU4gU0FOIERFSUdPPyIqMTApCisgICAgc19sb3dlciA9IHMubG93ZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sb3dlcigpCisKKworQGJlbmNoKCcoIndIRVJFIElOIFRIRSBXT1JMRCBJUyBjQVJNRU4gc0FOIGRFSUdPPyIqMTApLnVwcGVyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gcmFyZSIsIDEwMDApCitkZWYgdXBwZXJfY29udmVyc2lvbl9yYXJlKFNUUik6CisgICAgcyA9IFNUUigiV2hlcmUgaW4gdGhlIHdvcmxkIGlzIENhcm1lbiBTYW4gRGVpZ28/IioxMCkKKyAgICBzX3VwcGVyID0gcy51cHBlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3VwcGVyKCkKKworQGJlbmNoKCcoIndoZXJlIGluIHRoZSB3b3JsZCBpcyBjYXJtZW4gc2FuIGRlaWdvPyIqMTApLnVwcGVyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gZGVuc2UiLCAxMDAwKQorZGVmIHVwcGVyX2NvbnZlcnNpb25fZGVuc2UoU1RSKToKKyAgICBzID0gU1RSKCJ3aGVyZSBpbiB0aGUgd29ybGQgaXMgY2FybWVuIHNhbiBkZWlnbz8iKjEwKQorICAgIHNfdXBwZXIgPSBzLnVwcGVyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfdXBwZXIoKQorCisKKyMgZW5kIG9mIGJlbmNobWFya3MKKworIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgQmVuY2hUaW1lcih0aW1laXQuVGltZXIpOgorICAgIGRlZiBiZXN0KHNlbGYsIHJlcGVhdD0xKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgorICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKKyAgICAgICAgICAgIHggPSBzZWxmLnRpbWVpdChudW1iZXIpCisgICAgICAgICAgICBpZiB4ID4gMC4wMjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICB0aW1lcyA9IFt4XQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCByZXBlYXQpOgorICAgICAgICAgICAgdGltZXMuYXBwZW5kKHNlbGYudGltZWl0KG51bWJlcikpCisgICAgICAgIHJldHVybiBtaW4odGltZXMpIC8gbnVtYmVyCisKK2RlZiBtYWluKCk6CisgICAgKG9wdGlvbnMsIHRlc3RfbmFtZXMpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGlmIG9wdGlvbnMuYnl0ZXNfb25seSBhbmQgb3B0aW9ucy51bmljb2RlX29ubHk6CisgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoIk9ubHkgb25lIG9mIC0tOC1iaXQgYW5kIC0tdW5pY29kZSBhcmUgYWxsb3dlZCIpCisKKyAgICBiZW5jaF9mdW5jdGlvbnMgPSBbXQorICAgIGZvciAoayx2KSBpbiBnbG9iYWxzKCkuaXRlbXMoKToKKyAgICAgICAgaWYgaGFzYXR0cih2LCAiaXNfYmVuY2giKToKKyAgICAgICAgICAgIGlmIHRlc3RfbmFtZXM6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gdGVzdF9uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiB2Lmdyb3VwOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIE5vdCBzZWxlY3RlZCwgaWdub3JlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBvcHRpb25zLnNraXBfcmUgYW5kIGhhc2F0dHIodiwgInVzZXNfcmUiKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBiZW5jaF9mdW5jdGlvbnMuYXBwZW5kKCAodi5ncm91cCwgaywgdikgKQorICAgIGJlbmNoX2Z1bmN0aW9ucy5zb3J0KCkKKworICAgIHAoImJ5dGVzXHR1bmljb2RlIikKKyAgICBwKCIoaW4gbXMpXHQoaW4gbXMpXHQlXHRjb21tZW50IikKKworICAgIGJ5dGVzX3RvdGFsID0gdW5pX3RvdGFsID0gMC4wCisKKyAgICBmb3IgdGl0bGUsIGdyb3VwIGluIGl0ZXJ0b29scy5ncm91cGJ5KGJlbmNoX2Z1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IuaXRlbWdldHRlcigwKSk6CisgICAgICAgICMgRmx1c2ggYnVmZmVyIGJlZm9yZSBlYWNoIGdyb3VwCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBwKCI9IioxMCwgdGl0bGUpCisgICAgICAgIGZvciAoXywgaywgdikgaW4gZ3JvdXA6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHYsICJpc19iZW5jaCIpOgorICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWUgPSAwLjAKKyAgICAgICAgICAgICAgICBieXRlc190aW1lX3MgPSAiIC0gIgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcHRpb25zLnVuaWNvZGVfb25seToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZSA9IEJlbmNoVGltZXIoIl9fbWFpbl9fLiVzKF9fbWFpbl9fLkJZVEVTKSIgJSAoaywpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBfX21haW5fXyIpLmJlc3QoUkVQRUFUKQorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zID0gIiUuMmYiICUgKDEwMDAgKiBieXRlc190aW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG90YWwgKz0gYnl0ZXNfdGltZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRUeXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zID0gIk4vQSIKKyAgICAgICAgICAgICAgICB1bmlfdGltZSA9IDAuMAorICAgICAgICAgICAgICAgIHVuaV90aW1lX3MgPSAiIC0gIgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcHRpb25zLmJ5dGVzX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90aW1lID0gQmVuY2hUaW1lcigiX19tYWluX18uJXMoX19tYWluX18uVU5JQ09ERSkiICUgKGssKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IF9fbWFpbl9fIikuYmVzdChSRVBFQVQpCisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdGltZV9zID0gIiUuMmYiICUgKDEwMDAgKiB1bmlfdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90b3RhbCArPSB1bmlfdGltZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRUeXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RpbWVfcyA9ICJOL0EiCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gYnl0ZXNfdGltZS91bmlfdGltZQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2UgPSAwLjAKKyAgICAgICAgICAgICAgICBwKCIlc1x0JXNcdCUuMWZcdCVzICgqJWQpIiAlICgKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zLCB1bmlfdGltZV9zLCAxMDAuKmF2ZXJhZ2UsCisgICAgICAgICAgICAgICAgICAgIHYuY29tbWVudCwgdi5yZXBlYXRfY291bnQpKQorCisgICAgaWYgYnl0ZXNfdG90YWwgPT0gdW5pX3RvdGFsID09IDAuMDoKKyAgICAgICAgcCgiVGhhdCB3YXMgemlwcHkhIikKKyAgICBlbHNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYXRpbyA9IGJ5dGVzX3RvdGFsL3VuaV90b3RhbAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICByYXRpbyA9IDAuMAorICAgICAgICBwKCIlLjJmXHQlLjJmXHQlLjFmXHQlcyIgJSAoCisgICAgICAgICAgICAxMDAwKmJ5dGVzX3RvdGFsLCAxMDAwKnVuaV90b3RhbCwgMTAwLipyYXRpbywKKyAgICAgICAgICAgICJUT1RBTCIpKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5IGIvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5CmluZGV4IDBmNWMxZTIuLjdkZTE0ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weQorKysgYi9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICBwcmludCgnQ29tcGFyaW5nIGVuY29kaW5nL2RlY29kaW5nIG9mICAgJXIgYW5kICAgJXInICUgKGVuY29kaW5nMSwgZW5jb2RpbmcyKSkKICAgICBtaXNtYXRjaCA9IDAKICAgICAjIENoZWNrIGVuY29kaW5nCi0gICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLm1heHVuaWNvZGUpOgorICAgIGZvciBpIGluIHJhbmdlKHN5cy5tYXh1bmljb2RlKzEpOgogICAgICAgICB1ID0gY2hyKGkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGMxID0gdS5lbmNvZGUoZW5jb2RpbmcxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weSBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKaW5kZXggN2U3ZDZkMC4uZjVhMWFmMyAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQorKysgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICAgICAgICAgIGNvbW1lbnQgPSAnJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRbMTpdLnN0cmlwKCkKLSAgICAgICAgaWYgZW5jIDwgMjU2OgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbmMsIHR1cGxlKSBhbmQgZW5jIDwgMjU2OgogICAgICAgICAgICAgaWYgZW5jIGluIHVubWFwcGVkOgogICAgICAgICAgICAgICAgIHVubWFwcGVkLnJlbW92ZShlbmMpCiAgICAgICAgICAgICBpZiBlbmMgPT0gdW5pOgpAQCAtMjAyLDExICsyMDIsMTAgQEAKICAgICAjIEFuYWx5emUgbWFwIGFuZCBjcmVhdGUgdGFibGUgZGljdAogICAgIG1hcHBpbmdzID0gc29ydGVkKG1hcC5pdGVtcygpKQogICAgIHRhYmxlID0ge30KLSAgICBtYXhrZXkgPSAwCisgICAgbWF4a2V5ID0gMjU1CiAgICAgaWYgJ0lERU5USVRZJyBpbiBtYXA6CiAgICAgICAgIGZvciBrZXkgaW4gcmFuZ2UoMjU2KToKICAgICAgICAgICAgIHRhYmxlW2tleV0gPSAoa2V5LCAnJykKLSAgICAgICAgbWF4a2V5ID0gMjU1CiAgICAgICAgIGRlbCBtYXBbJ0lERU5USVRZJ10KICAgICBmb3IgbWFwa2V5LCBtYXB2YWx1ZSBpbiBtYXBwaW5nczoKICAgICAgICAgbWFwY29tbWVudCA9ICcnCkBAIC0yMjQsNiArMjIzLDcgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICMgQ3JlYXRlIHRhYmxlIGNvZGUKKyAgICBtYXhjaGFyID0gMAogICAgIGZvciBrZXkgaW4gcmFuZ2UobWF4a2V5ICsgMSk6CiAgICAgICAgIGlmIGtleSBub3QgaW4gdGFibGU6CiAgICAgICAgICAgICBtYXB2YWx1ZSA9IE1JU1NJTkdfQ09ERQpAQCAtMjM4LDYgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbWFwY2hhciA9IGNocihtYXB2YWx1ZSkKKyAgICAgICAgbWF4Y2hhciA9IG1heChtYXhjaGFyLCBvcmQobWFwY2hhcikpCiAgICAgICAgIGlmIG1hcGNvbW1lbnQgYW5kIGNvbW1lbnRzOgogICAgICAgICAgICAgYXBwZW5kKCcgICAgJWEgXHQjICAlcyAtPiAlcycgJSAobWFwY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4cmVwcihrZXksIGtleV9wcmVjaXNpb24pLApAQCAtMjQ1LDYgKzI0Niw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcHBlbmQoJyAgICAlYScgJSBtYXBjaGFyKQogCisgICAgaWYgbWF4Y2hhciA8IDI1NjoKKyAgICAgICAgYXBwZW5kKCcgICAgJWEgXHQjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24nICUgVU5JX1VOREVGSU5FRCkKICAgICBhcHBlbmQoJyknKQogICAgIHJldHVybiBsCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKaW5kZXggZDUwMzE5MC4uZDgzY2Y2MyAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKKysrIGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKQEAgLTIxLDE3ICsyMSwyMyBAQAogIyAyMDA0LTA1LTI5IHBlcmt5IGFkZCBlYXN0IGFzaWFuIHdpZHRoIGluZm9ybWF0aW9uCiAjIDIwMDYtMDMtMTAgbXZsICB1cGRhdGUgdG8gVW5pY29kZSA0LjE7IGFkZCBVQ0QgMy4yIGRlbHRhCiAjIDIwMDgtMDYtMTEgZ2IgICBhZGQgUFJJTlRBQkxFX01BU0sgZm9yIEF0c3VvIElzaGltb3RvJ3MgYXNjaWkoKSBwYXRjaAorIyAyMDExLTEwLTIxIGV6aW8gYWRkIHN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzCisjIDIwMTItMDEgICAgYmVuamFtaW4gYWRkIGZ1bGwgY2FzZSBtYXBwaW5ncwogIwogIyB3cml0dGVuIGJ5IEZyZWRyaWsgTHVuZGggKGZyZWRyaWtAcHl0aG9ud2FyZS5jb20pCiAjCiAKLWltcG9ydCBzeXMsIG9zLCB6aXBmaWxlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB6aXBmaWxlCisKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAogCiBTQ1JJUFQgPSBzeXMuYXJndlswXQogVkVSU0lPTiA9ICIzLjIiCiAKICMgVGhlIFVuaWNvZGUgRGF0YWJhc2UKLVVOSURBVEFfVkVSU0lPTiA9ICI2LjAuMCIKK1VOSURBVEFfVkVSU0lPTiA9ICI2LjEuMCIKIFVOSUNPREVfREFUQSA9ICJVbmljb2RlRGF0YSVzLnR4dCIKIENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMgPSAiQ29tcG9zaXRpb25FeGNsdXNpb25zJXMudHh0IgogRUFTVEFTSUFOX1dJRFRIID0gIkVhc3RBc2lhbldpZHRoJXMudHh0IgpAQCAtMzksNiArNDUsMTkgQEAKIERFUklWRURfQ09SRV9QUk9QRVJUSUVTID0gIkRlcml2ZWRDb3JlUHJvcGVydGllcyVzLnR4dCIKIERFUklWRUROT1JNQUxJWkFUSU9OX1BST1BTID0gIkRlcml2ZWROb3JtYWxpemF0aW9uUHJvcHMlcy50eHQiCiBMSU5FX0JSRUFLID0gIkxpbmVCcmVhayVzLnR4dCIKK05BTUVfQUxJQVNFUyA9ICJOYW1lQWxpYXNlcyVzLnR4dCIKK05BTUVEX1NFUVVFTkNFUyA9ICJOYW1lZFNlcXVlbmNlcyVzLnR4dCIKK1NQRUNJQUxfQ0FTSU5HID0gIlNwZWNpYWxDYXNpbmclcy50eHQiCitDQVNFX0ZPTERJTkcgPSAiQ2FzZUZvbGRpbmclcy50eHQiCisKKyMgUHJpdmF0ZSBVc2UgQXJlYXMgLS0gaW4gcGxhbmVzIDEsIDE1LCAxNgorUFVBXzEgPSByYW5nZSgweEUwMDAsIDB4RjkwMCkKK1BVQV8xNSA9IHJhbmdlKDB4RjAwMDAsIDB4RkZGRkUpCitQVUFfMTYgPSByYW5nZSgweDEwMDAwMCwgMHgxMEZGRkUpCisKKyMgd2UgdXNlIHRoaXMgcmFuZ2VzIG9mIFBVQV8xNSB0byBzdG9yZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcworTkFNRV9BTElBU0VTX1NUQVJUID0gMHhGMDAwMAorTkFNRURfU0VRVUVOQ0VTX1NUQVJUID0gMHhGMDIwMAogCiBvbGRfdmVyc2lvbnMgPSBbIjMuMi4wIl0KIApAQCAtNjcsMTMgKzg2LDE1IEBACiBYSURfU1RBUlRfTUFTSyA9IDB4MTAwCiBYSURfQ09OVElOVUVfTUFTSyA9IDB4MjAwCiBQUklOVEFCTEVfTUFTSyA9IDB4NDAwCi1OT0RFTFRBX01BU0sgPSAweDgwMAotTlVNRVJJQ19NQVNLID0gMHgxMDAwCitOVU1FUklDX01BU0sgPSAweDgwMAorQ0FTRV9JR05PUkFCTEVfTUFTSyA9IDB4MTAwMAorQ0FTRURfTUFTSyA9IDB4MjAwMAorRVhURU5ERURfQ0FTRV9NQVNLID0gMHg0MDAwCiAKICMgdGhlc2UgcmFuZ2VzIG5lZWQgdG8gbWF0Y2ggdW5pY29kZWRhdGEuYzppc191bmlmaWVkX2lkZW9ncmFwaAogY2prX3JhbmdlcyA9IFsKICAgICAoJzM0MDAnLCAnNERCNScpLAotICAgICgnNEUwMCcsICc5RkNCJyksCisgICAgKCc0RTAwJywgJzlGQ0MnKSwKICAgICAoJzIwMDAwJywgJzJBNkQ2JyksCiAgICAgKCcyQTcwMCcsICcyQjczNCcpLAogICAgICgnMkI3NDAnLCAnMkI4MUQnKQpAQCAtMzY3LDYgKzM4OCw3IEBACiAgICAgbnVtZXJpYyA9IHt9CiAgICAgc3BhY2VzID0gW10KICAgICBsaW5lYnJlYWtzID0gW10KKyAgICBleHRyYV9jYXNpbmcgPSBbXQogCiAgICAgZm9yIGNoYXIgaW4gdW5pY29kZS5jaGFyczoKICAgICAgICAgcmVjb3JkID0gdW5pY29kZS50YWJsZVtjaGFyXQpAQCAtMzc5LDcgKzQwMSw3IEBACiAgICAgICAgICAgICBkZWx0YSA9IFRydWUKICAgICAgICAgICAgIGlmIGNhdGVnb3J5IGluIFsiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCAiTG8iXToKICAgICAgICAgICAgICAgICBmbGFncyB8PSBBTFBIQV9NQVNLCi0gICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiTGwiOgorICAgICAgICAgICAgaWYgIkxvd2VyY2FzZSIgaW4gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBMT1dFUl9NQVNLCiAgICAgICAgICAgICBpZiAnTGluZV9CcmVhaycgaW4gcHJvcGVydGllcyBvciBiaWRpcmVjdGlvbmFsID09ICJCIjoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBMSU5FQlJFQUtfTUFTSwpAQCAtMzg5LDcgKzQxMSw3IEBACiAgICAgICAgICAgICAgICAgc3BhY2VzLmFwcGVuZChjaGFyKQogICAgICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gIkx0IjoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBUSVRMRV9NQVNLCi0gICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiTHUiOgorICAgICAgICAgICAgaWYgIlVwcGVyY2FzZSIgaW4gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBVUFBFUl9NQVNLCiAgICAgICAgICAgICBpZiBjaGFyID09IG9yZCgiICIpIG9yIGNhdGVnb3J5WzBdIG5vdCBpbiAoIkMiLCAiWiIpOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBSSU5UQUJMRV9NQVNLCkBAIC0zOTcsNyArNDE5LDEyIEBACiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gWElEX1NUQVJUX01BU0sKICAgICAgICAgICAgIGlmICJYSURfQ29udGludWUiIGluIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gWElEX0NPTlRJTlVFX01BU0sKLSAgICAgICAgICAgICMgdXNlIGRlbHRhIHByZWRpY3RvciBmb3IgdXBwZXIvbG93ZXIvdGl0bGUgaWYgaXQgZml0cworICAgICAgICAgICAgaWYgIkNhc2VkIiBpbiBwcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IENBU0VEX01BU0sKKyAgICAgICAgICAgIGlmICJDYXNlX0lnbm9yYWJsZSIgaW4gcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBDQVNFX0lHTk9SQUJMRV9NQVNLCisgICAgICAgICAgICBzYyA9IHVuaWNvZGUuc3BlY2lhbF9jYXNpbmcuZ2V0KGNoYXIpCisgICAgICAgICAgICBjZiA9IHVuaWNvZGUuY2FzZV9mb2xkaW5nLmdldChjaGFyLCBbY2hhcl0pCiAgICAgICAgICAgICBpZiByZWNvcmRbMTJdOgogICAgICAgICAgICAgICAgIHVwcGVyID0gaW50KHJlY29yZFsxMl0sIDE2KQogICAgICAgICAgICAgZWxzZToKQEAgLTQwOSwyMyArNDM2LDM5IEBACiAgICAgICAgICAgICBpZiByZWNvcmRbMTRdOgogICAgICAgICAgICAgICAgIHRpdGxlID0gaW50KHJlY29yZFsxNF0sIDE2KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFVDRC5odG1sIHNheXMgdGhhdCBhIG1pc3NpbmcgdGl0bGUgY2hhciBtZWFucyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBpdCBkZWZhdWx0cyB0byB0aGUgdXBwZXJjYXNlIGNoYXJhY3Rlciwgbm90IHRvIHRoZQotICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIGl0c2VsZi4gQXBwYXJlbnRseSwgaW4gdGhlIGN1cnJlbnQgVUNEICg1LngpCi0gICAgICAgICAgICAgICAgIyB0aGlzIGZlYXR1cmUgaXMgbmV2ZXIgdXNlZAogICAgICAgICAgICAgICAgIHRpdGxlID0gdXBwZXIKLSAgICAgICAgICAgIHVwcGVyX2QgPSB1cHBlciAtIGNoYXIKLSAgICAgICAgICAgIGxvd2VyX2QgPSBsb3dlciAtIGNoYXIKLSAgICAgICAgICAgIHRpdGxlX2QgPSB0aXRsZSAtIGNoYXIKLSAgICAgICAgICAgIGlmIC0zMjc2OCA8PSB1cHBlcl9kIDw9IDMyNzY3IGFuZCBcCi0gICAgICAgICAgICAgICAtMzI3NjggPD0gbG93ZXJfZCA8PSAzMjc2NyBhbmQgXAotICAgICAgICAgICAgICAgLTMyNzY4IDw9IHRpdGxlX2QgPD0gMzI3Njc6Ci0gICAgICAgICAgICAgICAgIyB1c2UgZGVsdGFzCi0gICAgICAgICAgICAgICAgdXBwZXIgPSB1cHBlcl9kICYgMHhmZmZmCi0gICAgICAgICAgICAgICAgbG93ZXIgPSBsb3dlcl9kICYgMHhmZmZmCi0gICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZV9kICYgMHhmZmZmCisgICAgICAgICAgICBpZiBzYyBpcyBOb25lIGFuZCBjZiAhPSBbbG93ZXJdOgorICAgICAgICAgICAgICAgIHNjID0gKFtsb3dlcl0sIFt0aXRsZV0sIFt1cHBlcl0pCisgICAgICAgICAgICBpZiBzYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIHVwcGVyID09IGxvd2VyID09IHRpdGxlOgorICAgICAgICAgICAgICAgICAgICB1cHBlciA9IGxvd2VyID0gdGl0bGUgPSAwCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdXBwZXIgPSB1cHBlciAtIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgbG93ZXIgPSBsb3dlciAtIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZSAtIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChhYnModXBwZXIpIDw9IDIxNDc0ODM2NDcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzKGxvd2VyKSA8PSAyMTQ3NDgzNjQ3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyh0aXRsZSkgPD0gMjE0NzQ4MzY0NykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9ERUxUQV9NQVNLCisgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgZWl0aGVyIHdoZW4gc29tZSBjaGFyYWN0ZXIgbWFwcyB0byBtb3JlIHRoYW4gb25lCisgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgaW4gdXBwZXJjYXNlLCBsb3dlcmNhc2UsIG9yIHRpdGxlY2FzZSBvciB0aGUKKyAgICAgICAgICAgICAgICAjIGNhc2Vmb2xkZWQgdmVyc2lvbiBvZiB0aGUgY2hhcmFjdGVyIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICMgbG93ZXJjYXNlLiBUaGUgZXh0cmEgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGluIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgIyBhcnJheS4KKyAgICAgICAgICAgICAgICBmbGFncyB8PSBFWFRFTkRFRF9DQVNFX01BU0sKKyAgICAgICAgICAgICAgICBsb3dlciA9IGxlbihleHRyYV9jYXNpbmcpIHwgKGxlbihzY1swXSkgPDwgMjQpCisgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChzY1swXSkKKyAgICAgICAgICAgICAgICBpZiBjZiAhPSBzY1swXToKKyAgICAgICAgICAgICAgICAgICAgbG93ZXIgfD0gbGVuKGNmKSA8PCAyMAorICAgICAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKGNmKQorICAgICAgICAgICAgICAgIHVwcGVyID0gbGVuKGV4dHJhX2Nhc2luZykgfCAobGVuKHNjWzJdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKHNjWzJdKQorICAgICAgICAgICAgICAgICMgVGl0bGUgaXMgcHJvYmFibHkgZXF1YWwgdG8gdXBwZXIuCisgICAgICAgICAgICAgICAgaWYgc2NbMV0gPT0gc2NbMl06CisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdXBwZXIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGxlbihleHRyYV9jYXNpbmcpIHwgKGxlbihzY1sxXSkgPDwgMjQpCisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoc2NbMV0pCiAgICAgICAgICAgICAjIGRlY2ltYWwgZGlnaXQsIGludGVnZXIgZGlnaXQKICAgICAgICAgICAgIGRlY2ltYWwgPSAwCiAgICAgICAgICAgICBpZiByZWNvcmRbNl06CkBAIC00NTIsNiArNDk1LDcgQEAKICAgICBwcmludChzdW0obWFwKGxlbiwgbnVtZXJpYy52YWx1ZXMoKSkpLCAibnVtZXJpYyBjb2RlIHBvaW50cyIpCiAgICAgcHJpbnQobGVuKHNwYWNlcyksICJ3aGl0ZXNwYWNlIGNvZGUgcG9pbnRzIikKICAgICBwcmludChsZW4obGluZWJyZWFrcyksICJsaW5lYnJlYWsgY29kZSBwb2ludHMiKQorICAgIHByaW50KGxlbihleHRyYV9jYXNpbmcpLCAiZXh0ZW5kZWQgY2FzZSBhcnJheSIpCiAKICAgICBwcmludCgiLS0tIFdyaXRpbmciLCBGSUxFLCAiLi4uIikKIApAQCAtNDY1LDYgKzUwOSwxNCBAQAogICAgIHByaW50KCJ9OyIsIGZpbGU9ZnApCiAgICAgcHJpbnQoZmlsZT1mcCkKIAorICAgIHByaW50KCIvKiBleHRlbmRlZCBjYXNlIG1hcHBpbmdzICovIiwgZmlsZT1mcCkKKyAgICBwcmludChmaWxlPWZwKQorICAgIHByaW50KCJjb25zdCBQeV9VQ1M0IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW10gPSB7IiwgZmlsZT1mcCkKKyAgICBmb3IgYyBpbiBleHRyYV9jYXNpbmc6CisgICAgICAgIHByaW50KCIgICAgJWQsIiAlIGMsIGZpbGU9ZnApCisgICAgcHJpbnQoIn07IiwgZmlsZT1mcCkKKyAgICBwcmludChmaWxlPWZwKQorCiAgICAgIyBzcGxpdCBkZWNvbXBvc2l0aW9uIGluZGV4IHRhYmxlCiAgICAgaW5kZXgxLCBpbmRleDIsIHNoaWZ0ID0gc3BsaXRiaW5zKGluZGV4LCB0cmFjZSkKIApAQCAtNjkyLDYgKzc0NCwzOSBAQAogICAgIHByaW50KCIvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8iLCBmaWxlPWZwKQogICAgIGNvZGVoYXNoLmR1bXAoZnAsIHRyYWNlKQogCisgICAgcHJpbnQoZmlsZT1mcCkKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX3N0YXJ0ID0gJSN4OycgJQorICAgICAgICAgIE5BTUVfQUxJQVNFU19TVEFSVCwgZmlsZT1mcCkKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9ICUjeDsnICUKKyAgICAgICAgICAoTkFNRV9BTElBU0VTX1NUQVJUICsgbGVuKHVuaWNvZGUuYWxpYXNlcykpLCBmaWxlPWZwKQorCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7JywgZmlsZT1mcCkKKyAgICBmb3IgbmFtZSwgY29kZXBvaW50IGluIHVuaWNvZGUuYWxpYXNlczoKKyAgICAgICAgcHJpbnQoJyAgICAweCUwNFgsJyAlIGNvZGVwb2ludCwgZmlsZT1mcCkKKyAgICBwcmludCgnfTsnLCBmaWxlPWZwKQorCisgICAgIyBJbiBVbmljb2RlIDYuMC4wLCB0aGUgc2VxdWVuY2VzIGNvbnRhaW4gYXQgbW9zdCA0IEJNUCBjaGFycywKKyAgICAjIHNvIHdlIGFyZSB1c2luZyBQeV9VQ1MyIHNlcVs0XS4gIFRoaXMgbmVlZHMgdG8gYmUgdXBkYXRlZCBpZiBsb25nZXIKKyAgICAjIHNlcXVlbmNlcyBvciBzZXF1ZW5jZXMgd2l0aCBub24tQk1QIGNoYXJzIGFyZSBhZGRlZC4KKyAgICAjIHVuaWNvZGVkYXRhX2xvb2t1cCBzaG91bGQgYmUgYWRhcHRlZCB0b28uCisgICAgcHJpbnQoZGVkZW50KCIiIgorICAgICAgICB0eXBlZGVmIHN0cnVjdCBOYW1lZFNlcXVlbmNlIHsKKyAgICAgICAgICAgIGludCBzZXFsZW47CisgICAgICAgICAgICBQeV9VQ1MyIHNlcVs0XTsKKyAgICAgICAgfSBuYW1lZF9zZXF1ZW5jZTsKKyAgICAgICAgIiIiKSwgZmlsZT1mcCkKKworICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19zdGFydCA9ICUjeDsnICUKKyAgICAgICAgICBOQU1FRF9TRVFVRU5DRVNfU1RBUlQsIGZpbGU9ZnApCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZWRfc2VxdWVuY2VzX2VuZCA9ICUjeDsnICUKKyAgICAgICAgICAoTkFNRURfU0VRVUVOQ0VTX1NUQVJUICsgbGVuKHVuaWNvZGUubmFtZWRfc2VxdWVuY2VzKSksIGZpbGU9ZnApCisKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IG5hbWVkX3NlcXVlbmNlIG5hbWVkX3NlcXVlbmNlc1tdID0geycsIGZpbGU9ZnApCisgICAgZm9yIG5hbWUsIHNlcXVlbmNlIGluIHVuaWNvZGUubmFtZWRfc2VxdWVuY2VzOgorICAgICAgICBzZXFfc3RyID0gJywgJy5qb2luKCcweCUwNFgnICUgY3AgZm9yIGNwIGluIHNlcXVlbmNlKQorICAgICAgICBwcmludCgnICAgIHslZCwgeyVzfX0sJyAlIChsZW4oc2VxdWVuY2UpLCBzZXFfc3RyKSwgZmlsZT1mcCkKKyAgICBwcmludCgnfTsnLCBmaWxlPWZwKQorCiAgICAgZnAuY2xvc2UoKQogCiAKQEAgLTcyNiw3ICs4MTEsMTEgQEAKICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGxlbihvbGQudGFibGVbaV0pKToKICAgICAgICAgICAgICAgICBpZiBvbGQudGFibGVbaV1ba10gIT0gbmV3LnRhYmxlW2ldW2tdOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG9sZC50YWJsZVtpXVtrXQotICAgICAgICAgICAgICAgICAgICBpZiBrID09IDI6CisgICAgICAgICAgICAgICAgICAgIGlmIGsgPT0gMSBhbmQgaSBpbiBQVUFfMTU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBuYW1lIGlzIG5vdCBzZXQgaW4gdGhlIG9sZC50YWJsZSwgYnV0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBuZXcudGFibGUgd2UgYXJlIHVzaW5nIGl0IGZvciBhbGlhc2VzIGFuZCBuYW1lZCBzZXEKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1ZSA9PSAnJworICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCAiQ0FURUdPUlkiLGhleChpKSwgb2xkLnRhYmxlW2ldW2tdLCBuZXcudGFibGVbaV1ba10KICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X2NoYW5nZXNbaV0gPSBDQVRFR09SWV9OQU1FUy5pbmRleCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDQ6CkBAIC04MTYsMTUgKzkwNSwxNSBAQAogICAgICAgICAgICAgICAgICBleHBhbmQ9MSwKICAgICAgICAgICAgICAgICAgY2prX2NoZWNrPVRydWUpOgogICAgICAgICBzZWxmLmNoYW5nZWQgPSBbXQotICAgICAgICBmaWxlID0gb3Blbl9kYXRhKFVOSUNPREVfREFUQSwgdmVyc2lvbikKICAgICAgICAgdGFibGUgPSBbTm9uZV0gKiAweDExMDAwMAotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgcyA9IGZpbGUucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkuc3BsaXQoIjsiKQotICAgICAgICAgICAgY2hhciA9IGludChzWzBdLCAxNikKLSAgICAgICAgICAgIHRhYmxlW2NoYXJdID0gcworICAgICAgICB3aXRoIG9wZW5fZGF0YShVTklDT0RFX0RBVEEsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHMgPSBmaWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpLnNwbGl0KCI7IikKKyAgICAgICAgICAgICAgICBjaGFyID0gaW50KHNbMF0sIDE2KQorICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdID0gcwogCiAgICAgICAgIGNqa19yYW5nZXNfZm91bmQgPSBbXQogCkBAIC04NTUsMzIgKzk0NCw3OSBAQAogICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKICAgICAgICAgc2VsZi5jaGFycyA9IGxpc3QocmFuZ2UoMHgxMTAwMDApKSAjIHVuaWNvZGUgMy4yCiAKLSAgICAgICAgZmlsZSA9IG9wZW5fZGF0YShDT01QT1NJVElPTl9FWENMVVNJT05TLCB2ZXJzaW9uKQorICAgICAgICAjIGNoZWNrIGZvciBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcywgc2VlICMxMjc1MworICAgICAgICAjIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcyBhcmUgbm90IGluIDMuMi4wCisgICAgICAgIGlmIHZlcnNpb24gIT0gJzMuMi4wJzoKKyAgICAgICAgICAgIHNlbGYuYWxpYXNlcyA9IFtdCisgICAgICAgICAgICAjIHN0b3JlIGFsaWFzZXMgaW4gdGhlIFByaXZhdGUgVXNlIEFyZWEgMTUsIGluIHJhbmdlIFUrRjAwMDAuLlUrRjAwRkYsCisgICAgICAgICAgICAjIGluIG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBjb21wcmVzc2lvbiBhbmQgbG9va3VwCisgICAgICAgICAgICAjIGFsZ29yaXRobXMgdXNlZCBmb3IgdGhlIG90aGVyIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIHB1YV9pbmRleCA9IE5BTUVfQUxJQVNFU19TVEFSVAorICAgICAgICAgICAgd2l0aCBvcGVuX2RhdGEoTkFNRV9BTElBU0VTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcy5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBjaGFyLCBuYW1lLCBhYmJyZXYgPSBzLnNwbGl0KCc7JykKKyAgICAgICAgICAgICAgICAgICAgY2hhciA9IGludChjaGFyLCAxNikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hbGlhc2VzLmFwcGVuZCgobmFtZSwgY2hhcikpCisgICAgICAgICAgICAgICAgICAgICMgYWxzbyBzdG9yZSB0aGUgbmFtZSBpbiB0aGUgUFVBIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZVtwdWFfaW5kZXhdWzFdID0gbmFtZQorICAgICAgICAgICAgICAgICAgICBwdWFfaW5kZXggKz0gMQorICAgICAgICAgICAgYXNzZXJ0IHB1YV9pbmRleCAtIE5BTUVfQUxJQVNFU19TVEFSVCA9PSBsZW4oc2VsZi5hbGlhc2VzKQorCisgICAgICAgICAgICBzZWxmLm5hbWVkX3NlcXVlbmNlcyA9IFtdCisgICAgICAgICAgICAjIHN0b3JlIG5hbWVkIHNlcWVuY2VzIGluIHRoZSBQVUEgMSwgaW4gcmFuZ2UgVStGMDEwMC4uLAorICAgICAgICAgICAgIyBpbiBvcmRlciB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29tcHJlc3Npb24gYW5kIGxvb2t1cAorICAgICAgICAgICAgIyBhbGdvcml0aG1zIHVzZWQgZm9yIHRoZSBvdGhlciBjaGFyYWN0ZXJzLgorCisgICAgICAgICAgICBhc3NlcnQgcHVhX2luZGV4IDwgTkFNRURfU0VRVUVOQ0VTX1NUQVJUCisgICAgICAgICAgICBwdWFfaW5kZXggPSBOQU1FRF9TRVFVRU5DRVNfU1RBUlQKKyAgICAgICAgICAgIHdpdGggb3Blbl9kYXRhKE5BTUVEX1NFUVVFTkNFUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHMuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgY2hhcnMgPSBzLnNwbGl0KCc7JykKKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSB0dXBsZShpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGNoYXJzLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgc3RydWN0dXJlIGRlZmluZWQgaW4gbWFrZXVuaWNvZGVuYW1lIGlzIE9LCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAyIDw9IGxlbihjaGFycykgPD0gNCwgImNoYW5nZSB0aGUgUHlfVUNTMiBhcnJheSBzaXplIgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKGMgPD0gMHhGRkZGIGZvciBjIGluIGNoYXJzKSwgKCJ1c2UgUHlfVUNTNCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGhlIE5hbWVkU2VxdWVuY2Ugc3RydWN0IGFuZCBpbiB1bmljb2RlZGF0YV9sb29rdXAiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVkX3NlcXVlbmNlcy5hcHBlbmQoKG5hbWUsIGNoYXJzKSkKKyAgICAgICAgICAgICAgICAgICAgIyBhbHNvIHN0b3JlIHRoZXNlIGluIHRoZSBQVUEgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlW3B1YV9pbmRleF1bMV0gPSBuYW1lCisgICAgICAgICAgICAgICAgICAgIHB1YV9pbmRleCArPSAxCisgICAgICAgICAgICBhc3NlcnQgcHVhX2luZGV4IC0gTkFNRURfU0VRVUVOQ0VTX1NUQVJUID09IGxlbihzZWxmLm5hbWVkX3NlcXVlbmNlcykKKwogICAgICAgICBzZWxmLmV4Y2x1c2lvbnMgPSB7fQotICAgICAgICBmb3IgcyBpbiBmaWxlOgotICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBjaGFyID0gaW50KHMuc3BsaXQoKVswXSwxNikKLSAgICAgICAgICAgIHNlbGYuZXhjbHVzaW9uc1tjaGFyXSA9IDEKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoQ09NUE9TSVRJT05fRVhDTFVTSU9OUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNoYXIgPSBpbnQocy5zcGxpdCgpWzBdLDE2KQorICAgICAgICAgICAgICAgIHNlbGYuZXhjbHVzaW9uc1tjaGFyXSA9IDEKIAogICAgICAgICB3aWR0aHMgPSBbTm9uZV0gKiAweDExMDAwMAotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoRUFTVEFTSUFOX1dJRFRILCB2ZXJzaW9uKToKLSAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcyA9IHMuc3BsaXQoKVswXS5zcGxpdCgnOycpCi0gICAgICAgICAgICBpZiAnLi4nIGluIHNbMF06Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHNbMF0sIDE2KV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgotICAgICAgICAgICAgICAgIHdpZHRoc1tjaGFyXSA9IHNbMV0KKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoRUFTVEFTSUFOX1dJRFRILCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcyA9IHMuc3BsaXQoKVswXS5zcGxpdCgnOycpCisgICAgICAgICAgICAgICAgaWYgJy4uJyBpbiBzWzBdOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQoc1swXSwgMTYpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgorICAgICAgICAgICAgICAgICAgICB3aWR0aHNbY2hhcl0gPSBzWzFdCisKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV0uYXBwZW5kKHdpZHRoc1tpXSkKQEAgLTg4OCwzNiArMTAyNCwzOSBAQAogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAweDExMDAwMCk6CiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXS5hcHBlbmQoc2V0KCkpCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShERVJJVkVEX0NPUkVfUFJPUEVSVElFUywgdmVyc2lvbik6Ci0gICAgICAgICAgICBzID0gcy5zcGxpdCgnIycsIDEpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIHIsIHAgPSBzLnNwbGl0KCI7IikKLSAgICAgICAgICAgIHIgPSByLnN0cmlwKCkKLSAgICAgICAgICAgIHAgPSBwLnN0cmlwKCkKLSAgICAgICAgICAgIGlmICIuLiIgaW4gcjoKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHIuc3BsaXQoJy4uJyldCi0gICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQociwgMTYpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6Ci0gICAgICAgICAgICAgICAgaWYgdGFibGVbY2hhcl06Ci0gICAgICAgICAgICAgICAgICAgICMgU29tZSBwcm9wZXJ0aWVzIChlLmcuIERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQpCi0gICAgICAgICAgICAgICAgICAgICMgYXBwbHkgdG8gdW5hc3NpZ25lZCBjb2RlIHBvaW50czsgaWdub3JlIHRoZW0KLSAgICAgICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZChwKQorICAgICAgICB3aXRoIG9wZW5fZGF0YShERVJJVkVEX0NPUkVfUFJPUEVSVElFUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMuc3BsaXQoJyMnLCAxKVswXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKExJTkVfQlJFQUssIHZlcnNpb24pOgotICAgICAgICAgICAgcyA9IHMucGFydGl0aW9uKCcjJylbMF0KLSAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KLSAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gTUFOREFUT1JZX0xJTkVfQlJFQUtTOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgotICAgICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IGludChzWzBdLCAxNikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gcmFuZ2UoZmlyc3QsIGxhc3QrMSk6Ci0gICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZCgnTGluZV9CcmVhaycpCisgICAgICAgICAgICAgICAgciwgcCA9IHMuc3BsaXQoIjsiKQorICAgICAgICAgICAgICAgIHIgPSByLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBwID0gcC5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgIi4uIiBpbiByOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHIuc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQociwgMTYpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgorICAgICAgICAgICAgICAgICAgICBpZiB0YWJsZVtjaGFyXToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU29tZSBwcm9wZXJ0aWVzIChlLmcuIERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGx5IHRvIHVuYXNzaWduZWQgY29kZSBwb2ludHM7IGlnbm9yZSB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKHApCisKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoTElORV9CUkVBSywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMucGFydGl0aW9uKCcjJylbMF0KKyAgICAgICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCisgICAgICAgICAgICAgICAgaWYgbGVuKHMpIDwgMiBvciBzWzFdIG5vdCBpbiBNQU5EQVRPUllfTElORV9CUkVBS1M6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKKyAgICAgICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZCgnTGluZV9CcmVhaycpCiAKICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdGhlIHF1aWNrY2hlY2sgcHJvcGVydGllcwogICAgICAgICAjIEZvcm1hdDogTkY/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+JjIKKwkJZXhpdCAxCisJCTs7Citlc2FjCitlbHNlCisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBjb21lIHdpdGggdmFyaW91cyBtYWNoaW5lcy4KKyMgVGhlIHZhbHVlIHNob3VsZCBiZSB3aGF0IHRoZSB2ZW5kb3IgY3VycmVudGx5IHNoaXBzIG91dCB0aGUgZG9vciB3aXRoIHRoZWlyCisjIG1hY2hpbmUgb3IgcHV0IGFub3RoZXIgd2F5LCB0aGUgbW9zdCBwb3B1bGFyIG9zIHByb3ZpZGVkIHdpdGggdGhlIG1hY2hpbmUuCisKKyMgTm90ZSB0aGF0IGlmIHlvdSdyZSBnb2luZyB0byB0cnkgdG8gbWF0Y2ggIi1NQU5VRkFDVFVSRVIiIGhlcmUgKHNheSwKKyMgIi1zdW4iKSwgdGhlbiB5b3UgaGF2ZSB0byB0ZWxsIHRoZSBjYXNlIHN0YXRlbWVudCB1cCB0b3dhcmRzIHRoZSB0b3AKKyMgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nIHN5c3RlbS4gIE90aGVyd2lzZSwgY29kZSBhYm92ZQorIyB3aWxsIHNpZ25hbCBhbiBlcnJvciBzYXlpbmcgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nCisjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgorCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJc2NvcmUtKikKKwkJb3M9LWVsZgorCQk7OworCXNwdS0qKQorCQlvcz0tZWxmCisJCTs7CisJKi1hY29ybikKKwkJb3M9LXJpc2NpeDEuMgorCQk7OworCWFybSotcmViZWwpCisJCW9zPS1saW51eAorCQk7OworCWFybSotc2VtaSkKKwkJb3M9LWFvdXQKKwkJOzsKKwljNHgtKiB8IHRpYzR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTV4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNngtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50cnkuCisJcGRwMTAtKikKKwkJb3M9LXRvcHMyMAorCQk7OworCXBkcDExLSopCisJCW9zPS1ub25lCisJCTs7CisJKi1kZWMgfCB2YXgtKikKKwkJb3M9LXVsdHJpeDQuMgorCQk7OworCW02OCotYXBvbGxvKQorCQlvcz0tZG9tYWluCisJCTs7CisJaTM4Ni1zdW4pCisJCW9zPS1zdW5vczQuMC4yCisJCTs7CisJbTY4MDAwLXN1bikKKwkJb3M9LXN1bm9zMworCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0CisJCTs7CisJbWVwLSopCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi1jaXNjbykKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLSopCisJCW9zPS1lbGYKKwkJOzsKKwlvcjMyLSopCisJCW9zPS1jb2ZmCisJCTs7CisJKi10dGkpCSMgbXVzdCBiZSBiZWZvcmUgc3BhcmMgZW50cnkgb3Igd2UgZ2V0IHRoZSB3cm9uZyBvcy4KKwkJb3M9LXN5c3YzCisJCTs7CisJc3BhcmMtKiB8ICotc3VuKQorCQlvcz0tc3Vub3M0LjEuMQorCQk7OworCSotYmUpCisJCW9zPS1iZW9zCisJCTs7CisJKi1oYWlrdSkKKwkJb3M9LWhhaWt1CisJCTs7CisJKi1pYm0pCisJCW9zPS1haXgKKwkJOzsKKwkqLWtudXRoKQorCQlvcz0tbW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkKKwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkKKwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0qIHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQorCQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJCW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNjdXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkqLW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJOzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJzZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlvcz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhwdgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwgYnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFjdHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsKKwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9yPWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdlbml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJdmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3MqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikKKwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMKKworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggZjlhNjI2MS4uMzFmYzNkNiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw3ICsxLDYgQEAKICMhIC9iaW4vc2gKLSMgRnJvbSBjb25maWd1cmUuYWMgUmV2aXNpb24uCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgcHl0aG9uIDMuMi4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4IGZvciBweXRob24gMy4zLgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy8+LgogIwpAQCAtNTYxLDggKzU2MCw4IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0ncHl0aG9uJwogUEFDS0FHRV9UQVJOQU1FPSdweXRob24nCi1QQUNLQUdFX1ZFUlNJT049JzMuMicKLVBBQ0tBR0VfU1RSSU5HPSdweXRob24gMy4yJworUEFDS0FHRV9WRVJTSU9OPSczLjMnCitQQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuMycKIFBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY0NywxMiArNjQ2LDEwIEBACiBJTlNUQUxMX1BST0dSQU0KIEhBU19QWVRIT04KIERJU0FCTEVfQVNETEdFTgotSEFTX0hHCi1IR0JSQU5DSAotSEdUQUcKLUhHVkVSU0lPTgotU1ZOVkVSU0lPTgorYWNfY3RfUkVBREVMRgorUkVBREVMRgogQVJGTEFHUworYWNfY3RfQVIKIEFSCiBSQU5MSUIKIFVTRV9JTkxJTkUKQEAgLTY3Miw2ICs2NjksNyBAQAogR1JFUAogQ1BQCiBOT19BU19ORUVERUQKK2FjX2N0X0NYWAogTUFJTkNDCiBDWFgKIE9CSkVYVApAQCAtNjg0LDYgKzY4Miw3IEBACiBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiBDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiBTR0lfQUJJCitfUFlUSE9OX0hPU1RfUExBVEZPUk0KIE1BQ0hERVAKIEZSQU1FV09SS0lOU1RBTExBUFBTUFJFRklYCiBGUkFNRVdPUktVTklYVE9PTFNQUkVGSVgKQEAgLTcwMiw2ICs3MDEsMTkgQEAKIENPTkZJR19BUkdTCiBTT1ZFUlNJT04KIFZFUlNJT04KK1BZVEhPTl9GT1JfQlVJTEQKK2hvc3Rfb3MKK2hvc3RfdmVuZG9yCitob3N0X2NwdQoraG9zdAorYnVpbGRfb3MKK2J1aWxkX3ZlbmRvcgorYnVpbGRfY3B1CitidWlsZAorSEFTX0hHCitIR0JSQU5DSAorSEdUQUcKK0hHVkVSU0lPTgogdGFyZ2V0X2FsaWFzCiBob3N0X2FsaWFzCiBidWlsZF9hbGlhcwpAQCAtNzU2LDEwICs3NjgsMTAgQEAKIHdpdGhfbGlicwogd2l0aF9zeXN0ZW1fZXhwYXQKIHdpdGhfc3lzdGVtX2ZmaQord2l0aF9zeXN0ZW1fbGlibXBkZWMKIGVuYWJsZV9sb2FkYWJsZV9zcWxpdGVfZXh0ZW5zaW9ucwogd2l0aF9kYm1saWJvcmRlcgogd2l0aF9zaWduYWxfbW9kdWxlCi13aXRoX2RlY190aHJlYWRzCiB3aXRoX3RocmVhZHMKIHdpdGhfdGhyZWFkCiBlbmFibGVfaXB2NgpAQCAtNzcxLDcgKzc4Myw2IEBACiB3aXRoX2xpYm0KIHdpdGhfbGliYwogZW5hYmxlX2JpZ19kaWdpdHMKLXdpdGhfd2lkZV91bmljb2RlCiB3aXRoX2NvbXB1dGVkX2dvdG9zCiAnCiAgICAgICBhY19wcmVjaW91c192YXJzPSdidWlsZF9hbGlhcwpAQCAtMTMyNSw3ICsxMzM2LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy4yIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjMgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTM4MSwxMiArMTM5MiwxNiBAQAogX0FDRU9GCiAKICAgY2F0IDw8XF9BQ0VPRgorCitTeXN0ZW0gdHlwZXM6CisgIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQgW2d1ZXNzZWRdCisgIC0taG9zdD1IT1NUICAgICAgIGNyb3NzLWNvbXBpbGUgdG8gYnVpbGQgcHJvZ3JhbXMgdG8gcnVuIG9uIEhPU1QgW0JVSUxEXQogX0FDRU9GCiBmaQogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjI6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy4zOiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTEzOTUsNyArMTQxMCw3IEBACiAgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQogICAtLWVuYWJsZS11bml2ZXJzYWxzZGtbPVNES0RJUl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgYWdhaW5zdCBNYWMgT1MgWCAxMC40dSBTREsgKHBwYy9pMzg2KQorICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLCiAgIC0tZW5hYmxlLWZyYW1ld29ya1s9SU5TVEFMTERJUl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgKE1hY09TWHxEYXJ3aW4pIGZyYW1ld29yawogICAtLWVuYWJsZS1zaGFyZWQgICAgICAgICBkaXNhYmxlL2VuYWJsZSBidWlsZGluZyBzaGFyZWQgcHl0aG9uIGxpYnJhcnkKQEAgLTE0MjYsMTIgKzE0NDEsMTMgQEAKICAgLS13aXRoLXN5c3RlbS1leHBhdCAgICAgYnVpbGQgcHlleHBhdCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGV4cGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKICAgLS13aXRoLXN5c3RlbS1mZmkgICAgICAgYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5CisgIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgIGJ1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQogICAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgogICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCi0gIC0td2l0aC1kZWMtdGhyZWFkcyAgICAgIHVzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXMKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KQEAgLTE0NDMsNyArMTQ1OSw2IEBACiAgIC0td2l0aC1mcGVjdGwgICAgICAgICAgIGVuYWJsZSBTSUdGUEUgY2F0Y2hpbmcKICAgLS13aXRoLWxpYm09U1RSSU5HICAgICAgbWF0aCBsaWJyYXJ5CiAgIC0td2l0aC1saWJjPVNUUklORyAgICAgIEMgbGlicmFyeQotICAtLXdpdGgtd2lkZS11bmljb2RlICAgICBVc2UgNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycyAoZGVmYXVsdCBpcyAyIGJ5dGVzKQogICAtLXdpdGgob3V0KS1jb21wdXRlZC1nb3RvcwogICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgY29tcHV0ZWQgZ290b3MgaW4gZXZhbHVhdGlvbiBsb29wIChlbmFibGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycykKQEAgLTE1MjQsNyArMTUzOSw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjIKK3B5dGhvbiBjb25maWd1cmUgMy4zCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgKIAogQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjM1NSw3ICsyMzcwLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMiwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0yNzA0LDkgKzI3MTksMTkyIEBACiAKIAogCisKKworCisKK2lmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKK3RoZW4KKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaGciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGhnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfSEFTX0hHIiAmJiBhY19jdl9wcm9nX0hBU19IRz0ibm90LWZvdW5kIgorZmkKK2ZpCitIQVNfSEc9JGFjX2N2X3Byb2dfSEFTX0hHCitpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBU19IRyIgPiY1CiskYXNfZWNobyAiJEhBU19IRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitlbHNlCitIQVNfSEc9bm8tcmVwb3NpdG9yeQorZmkKK2lmIHRlc3QgJEhBU19IRyA9IGZvdW5kCit0aGVuCisgICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgorICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgorICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorZWxzZQorICAgIEhHVkVSU0lPTj0iIgorICAgIEhHVEFHPSIiCisgICAgSEdCUkFOQ0g9IiIKK2ZpCisKKwogYWNfY29uZmlnX2hlYWRlcnM9IiRhY19jb25maWdfaGVhZGVycyBweWNvbmZpZy5oIgogCiAKK2FjX2F1eF9kaXI9Citmb3IgYWNfZGlyIGluICIkc3JjZGlyIiAiJHNyY2Rpci8uLiIgIiRzcmNkaXIvLi4vLi4iOyBkbworICBpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwtc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC1zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC5zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLnNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9zaHRvb2wiOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvc2h0b29sIGluc3RhbGwgLWMiCisgICAgYnJlYWsKKyAgZmkKK2RvbmUKK2lmIHRlc3QgLXogIiRhY19hdXhfZGlyIjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgaW5zdGFsbC1zaCwgaW5zdGFsbC5zaCwgb3Igc2h0b29sIGluIFwiJHNyY2RpclwiIFwiJHNyY2Rpci8uLlwiIFwiJHNyY2Rpci8uLi8uLlwiIiAiJExJTkVOTyIgNQorZmkKKworIyBUaGVzZSB0aHJlZSB2YXJpYWJsZXMgYXJlIHVuZG9jdW1lbnRlZCBhbmQgdW5zdXBwb3J0ZWQsCisjIGFuZCBhcmUgaW50ZW5kZWQgdG8gYmUgd2l0aGRyYXduIGluIGEgZnV0dXJlIEF1dG9jb25mIHJlbGVhc2UuCisjIFRoZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUgaXMgaW4gYSBkaXJlY3RvcnkKKyMgd2hvc2UgZnVsbCBuYW1lIGNvbnRhaW5zIHVudXN1YWwgY2hhcmFjdGVycy4KK2FjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ19zdWI9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorYWNfY29uZmlndXJlPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorCisKKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworZXNhYworYnVpbGQ9JGFjX2N2X2J1aWxkCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfYnVpbGQKK3NoaWZ0CitidWlsZF9jcHU9JDEKK2J1aWxkX3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2J1aWxkX29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRidWlsZF9vcyBpbiAqXCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgorICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAorZWxzZQorICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CitjYXNlICRhY19jdl9ob3N0IGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7Citlc2FjCitob3N0PSRhY19jdl9ob3N0CithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfaG9zdAorc2hpZnQKK2hvc3RfY3B1PSQxCitob3N0X3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2hvc3Rfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGhvc3Rfb3MgaW4gKlwgKikgaG9zdF9vcz1gZWNobyAiJGhvc3Rfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB5dGhvbiBpbnRlcnByZXRlciBmb3IgY3Jvc3MgYnVpbGQuLi4gIiA+JjY7IH0KKyAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KKyAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbworCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQorCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgICAgICBicmVhaworCSAgICBmaQorICAgICAgICAgICAgaW50ZXJwPQorCWRvbmUKKyAgICAgICAgaWYgdGVzdCB4JGludGVycCA9IHg7IHRoZW4KKwkgICAgYXNfZm5fZXJyb3IgJD8gInB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorCWZpCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKKyRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KKwlQWVRIT05fRk9SX0JVSUxEPSJfUFlUSE9OX1BST0pFQ1RfQkFTRT0kc3JjZGlyIicgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi9wbGF0LSQoTUFDSERFUCkgJyRpbnRlcnAKKyAgICBmaQorZWxzZQorICAgIFBZVEhPTl9GT1JfQlVJTEQ9Jy4vJChCVUlMRFBZVEhPTikgLUUnCitmaQorCisKIAogaWYgdGVzdCAiJHByZWZpeCIgIT0gIi8iOyB0aGVuCiAgICAgcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAtZSAncy9cLyQvL2cnYApAQCAtMjcyMiw3ICsyOTIwLDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuMgorVkVSU0lPTj0zLjMKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtMjc3NSwxMCArMjk3MywxNiBAQAogICBlbmFibGV2YWw9JGVuYWJsZV91bml2ZXJzYWxzZGs7CiAJY2FzZSAkZW5hYmxldmFsIGluCiAJeWVzKQotCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkawotCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJIyBMb2NhdGUgdGhlIGJlc3QgdXNhYmxlIFNESywgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJCSMgaW5mb3JtYXRpb24KKwkJZW5hYmxldmFsPSJgL3Vzci9iaW4veGNvZGVidWlsZCAtdmVyc2lvbiAtc2RrIG1hY29zeCBQYXRoIDI+L2Rldi9udWxsYCIKKwkJaWYgdGVzdCAteiAiJHtlbmFibGV2YWx9IgogCQl0aGVuCi0JCQllbmFibGV2YWw9LworCQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKKwkJCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkJdGhlbgorCQkJCWVuYWJsZXZhbD0vCisJCQlmaQogCQlmaQogCQk7OwogCWVzYWMKQEAgLTI4MTYsNyArMzAyMCwyMCBAQAogCiAKIAorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIHdlIHByZWZlciB0byBzZWxlY3QgJzMyLWJpdCcgaWYgYXZhaWxhYmxlLAorIyBvdGhlcndpc2UgdXNlICdpbnRlbCcKIFVOSVZFUlNBTF9BUkNIUz0iMzItYml0IgoraWYgdGVzdCAiYHVuYW1lIC1zYCIgPSAiRGFyd2luIgordGhlbgorCWlmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKKwl0aGVuCisJCWlmIHRlc3QgLXogImAvdXNyL2Jpbi9maWxlICIke1VOSVZFUlNBTFNES30vdXNyL2xpYi9saWJTeXN0ZW0uZHlsaWIiIHwgZ3JlcCBwcGNgIgorCQl0aGVuCisJCQlVTklWRVJTQUxfQVJDSFM9ImludGVsIgorCQlmaQorCWZpCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMuLi4gIiA+JjY7IH0KQEAgLTI4MzAsOCArMzA0Nyw4IEBACiAKIGVsc2UKIAotIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogMzItYml0IiA+JjUKLSRhc19lY2hvICIzMi1iaXQiID4mNjsgfQorIAl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtVTklWRVJTQUxfQVJDSFN9IiA+JjUKKyRhc19lY2hvICIke1VOSVZFUlNBTF9BUkNIU30iID4mNjsgfQogCiBmaQogCkBAIC0yOTg0LDYgKzMyMDEsMjUgQEAKICRhc19lY2hvX24gImNoZWNraW5nIE1BQ0hERVAuLi4gIiA+JjY7IH0KIGlmIHRlc3QgLXogIiRNQUNIREVQIgogdGhlbgorICAgICMgYXZvaWQgdXNpbmcgdW5hbWUgZm9yIGNyb3NzIGJ1aWxkcworICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgICAgIyBhY19zeXNfc3lzdGVtIGFuZCBhY19zeXNfcmVsZWFzZSBhcmUgb25seSB1c2VkIGZvciBzZXR0aW5nCisgICAgICAgIyBgZGVmaW5lX3hvcGVuX3NvdXJjZScgaW4gdGhlIGNhc2Ugc3RhdGVtZW50IGJlbG93LiBGb3IgdGhlCisgICAgICAgIyBjdXJyZW50IHN1cHBvcnRlZCBjcm9zcyBidWlsZHMsIHRoaXMgbWFjcm8gaXMgbm90IGFkanVzdGVkLgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWFjX3N5c19zeXN0ZW09TGludXgKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJYWNfc3lzX3N5c3RlbT1DeWd3aW4KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlhc19mbl9lcnJvciAkPyAiY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3QiICIkTElORU5PIiA1CisJZXNhYworCWFjX3N5c19yZWxlYXNlPQorICAgIGVsc2UKIAlhY19zeXNfc3lzdGVtPWB1bmFtZSAtc2AKIAlpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiQUlYIiBcCiAJLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJVbml4V2FyZSIgLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJPcGVuVU5JWCI7IHRoZW4KQEAgLTI5OTEsMTkgKzMyMjcsNDMgQEAKIAllbHNlCiAJCWFjX3N5c19yZWxlYXNlPWB1bmFtZSAtcmAKIAlmaQotCWFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8Ci0JCQkgICB0ciAtZCAnLyAnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYAotCWFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKLQkJCSAgIHRyIC1kICcvICcgfCBzZWQgJ3MvXltBLVpdXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKLQlNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCisgICAgZmkKKyAgICBhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAorCQkJdHIgLWQgJy8gJyB8IHRyICdbQS1aXScgJ1thLXpdJ2AKKyAgICBhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8CisJCQl0ciAtZCAnLyAnIHwgc2VkICdzL15bQS1aXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCisgICAgTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgogCi0JY2FzZSAkTUFDSERFUCBpbgotCWxpbnV4KikgTUFDSERFUD0ibGludXgyIjs7CisgICAgY2FzZSAkTUFDSERFUCBpbgorCWxpbnV4KikgTUFDSERFUD0ibGludXgiOzsKIAljeWd3aW4qKSBNQUNIREVQPSJjeWd3aW4iOzsKIAlkYXJ3aW4qKSBNQUNIREVQPSJkYXJ3aW4iOzsKLSAgICAgICAgaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKKwlpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OwogCScnKQlNQUNIREVQPSJ1bmtub3duIjs7CisgICAgZXNhYworZmkKKworCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWNhc2UgIiRob3N0X2NwdSIgaW4KKwkJYXJtKikKKwkJCV9ob3N0X2NwdT1hcm0KKwkJCTs7CisJCSopCisJCQlfaG9zdF9jcHU9JGhvc3RfY3B1CisJCWVzYWMKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJX2hvc3RfY3B1PQorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCWFzX2ZuX2Vycm9yICQ/ICJjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdCIgIiRMSU5FTk8iIDUKIAllc2FjCisJX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSIkTUFDSERFUCR7X2hvc3RfY3B1OistJF9ob3N0X2NwdX0iCiBmaQogCiAjIFNvbWUgc3lzdGVtcyBjYW5ub3Qgc3RhbmQgX1hPUEVOX1NPVVJDRSBiZWluZyBkZWZpbmVkIGF0IGFsbDsgdGhleQpAQCAtMzA5NCw4ICszMzU0LDkgQEAKIAogaWYgdGVzdCAkZGVmaW5lX3hvcGVuX3NvdXJjZSA9IHllcwogdGhlbgorICAjIFgvT3BlbiA3LCBpbmNvcnBvcmF0aW5nIFBPU0lYLjEtMjAwOAogCi0kYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMCIgPj5jb25mZGVmcy5oCiskYXNfZWNobyAiI2RlZmluZSBfWE9QRU5fU09VUkNFIDcwMCIgPj5jb25mZGVmcy5oCiAKIAogICAjIE9uIFRydTY0IFVuaXggNC4wRiwgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRSBhbHNvIHJlcXVpcmVzCkBAIC0zMTA3LDggKzMzNjgsNyBAQAogCiAKIAotJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDExMkwiID4+Y29uZmRlZnMuaAotCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TCIgPj5jb25mZGVmcy5oCiAKIGZpCiAKQEAgLTMxMzksMTIgKzMzOTksNiBAQAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0KIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JyMnCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbWFjaGluZSB0eXBlIGFzIHJlcG9ydGVkIGJ5IHVuYW1lIC1tIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIG1hY2hpbmUgdHlwZSBhcyByZXBvcnRlZCBieSB1bmFtZSAtbS4uLiAiID4mNjsgfQotYWNfc3lzX21hY2hpbmU9YHVuYW1lIC1tYAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19zeXNfbWFjaGluZSIgPiY1Ci0kYXNfZWNobyAiJGFjX3N5c19tYWNoaW5lIiA+JjY7IH0KLQogIyBjaGVja3MgZm9yIGFsdGVybmF0aXZlIHByb2dyYW1zCiAKICMgY29tcGlsZXIgZmxhZ3MgYXJlIGdlbmVyYXRlZCBpbiB0d28gc2V0cywgQkFTRUNGTEFHUyBhbmQgT1BULiAgT1BUIGlzIGp1c3QKQEAgLTMxOTQsNiArMzQ0OCw2NiBAQAogaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KICAgICAgICAgQ0ZMQUdTPQogZmkKKworaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkRhcndpbiIKK3RoZW4KKwkjIENvbXBpbGVyIHNlbGVjdGlvbiBvbiBNYWNPU1ggaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuCisJIyBBQ19QUk9HX0NDIGNhbiBoYW5kbGUsIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCSMgaW5mb3JtYXRpb24KKwlpZiB0ZXN0IC16ICIke0NDfSIKKwl0aGVuCisJCWZvdW5kX2djYz0KKwkJZm91bmRfY2xhbmc9CisJCWFzX3NhdmVfSUZTPSRJRlM7IElGUz06CisJCWZvciBhc19kaXIgaW4gJFBBVEgKKwkJZG8KKwkJCUlGUz0kYXNfc2F2ZV9JRlMKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9nY2M7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2djY30iOyB0aGVuCisJCQkJCWZvdW5kX2djYz0kYXNfZGlyL2djYworCQkJCWZpCisJCQlmaQorCQkJaWYgdGVzdCAteCAkYXNfZGlyL2NsYW5nOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9jbGFuZ30iOyB0aGVuCisJCQkJCWZvdW5kX2NsYW5nPSRhc19kaXIvY2xhbmcKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCQlJRlM9JGFzX3NhdmVfSUZTCisKKwkJaWYgdGVzdCAtbiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJaWYgdGVzdCAtbiAiYCIkZm91bmRfZ2NjIiAtLXZlcnNpb24gfCBncmVwIGxsdm0tZ2NjYCIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IERldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmciID4mNQorJGFzX2VjaG8gIiRhc19tZTogRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZyIgPiY2O30KKwkJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisJCQlmaQorCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IE5vIEdDQyBmb3VuZCwgdXNlIENMQU5HIiA+JjY7fQorCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAteiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlmb3VuZF9jbGFuZz1gL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcgMj4vZGV2L251bGxgCisJCQlpZiB0ZXN0IC1uICIke2ZvdW5kX2NsYW5nfSIKKwkJCXRoZW4KKwkJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFVzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwIiA+JjY7fQorCQkJCUNDPSIke2ZvdW5kX2NsYW5nfSIKKwkJCQlDWFg9ImAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZysrYCIKKworCQkJIyBlbHNlOiB1c2UgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWZpCisJCWZpCisJZmkKK2ZpCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTQwMjAsMTYgKzQzMzQsNjAgQEAKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCiAgICAgICAgIGNhc2UgIiRDQyIgaW4KLSAgICAgICAgZ2NjKSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgICAgICAgIGdjYykgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGcrKzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBjYXNlICRDWFggaW4KKyAgY2FzZSAkYWNfcHRfQ1hYIGluCiAgIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICAgKikKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtNDAzOSw3ICs0Mzk3LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTQwNDcsMjIgKzQ0MDUsMzYgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCIgJiYgYWNfY3ZfcGF0aF9DWFg9ImcrKyIKICAgOzsKIGVzYWMKIGZpCi1DWFg9JGFjX2N2X3BhdGhfQ1hYCi1pZiB0ZXN0IC1uICIkQ1hYIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENYWCIgPiY1Ci0kYXNfZWNobyAiJENYWCIgPiY2OyB9CithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAorICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJnKysiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19wdF9DWFgKKyAgZmkKK2Vsc2UKKyAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCitmaQogIDs7Ci0gICAgICAgIGNjKSAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGMrKzsgYWNfd29yZD0kMgorICAgICAgICBjYykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWMrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jKys7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CkBAIC00MDg4LDcgKzQ0NjAsNiBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIiAmJiBhY19jdl9wYXRoX0NYWD0iYysrIgogICA7OwogZXNhYwogZmkKQEAgLTQxMDEsNiArNDQ3MiwxNjEgQEAKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X0NYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhY19wdF9DWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X0NYWD0kYWNfY3ZfcGF0aF9hY19wdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19wdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9ImMrKyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCisgOzsKKyAgICAgICAgY2xhbmd8Ki9jbGFuZykgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNsYW5nKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9Y2xhbmcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NYWD0iJENYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorQ1hYPSRhY19jdl9wYXRoX0NYWAoraWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQorJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCI7IHRoZW4KKyAgYWNfcHRfQ1hYPSRDWFgKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJjbGFuZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjbGFuZysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9DWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJjbGFuZysrIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfcHRfQ1hYCisgIGZpCitlbHNlCisgIENYWD0iJGFjX2N2X3BhdGhfQ1hYIgorZmkKICA7OwogICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCkBAIC00MTEwLDEwICs0NjM2LDExIEBACiBmaQogaWYgdGVzdCAteiAiJENYWCIKIHRoZW4KLQlmb3IgYWNfcHJvZyBpbiAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtNDEyOSw3ICs0NjU2LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfQ1hYPSIkYWNfcHJvZyIKKyAgICBhY19jdl9wcm9nX0NYWD0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNDE0OSw5ICs0Njc2LDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJENYWCIgJiYgYnJlYWsKKyAgICB0ZXN0IC1uICIkQ1hYIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENYWCI7IHRoZW4KKyAgYWNfY3RfQ1hYPSRDWFgKKyAgZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DWFgiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfY3RfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ1hYPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCiBkb25lCi10ZXN0IC1uICIkQ1hYIiB8fCBDWFg9Im5vdGZvdW5kIgorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ1hYPSRhY19jdl9wcm9nX2FjX2N0X0NYWAoraWYgdGVzdCAtbiAiJGFjX2N0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQ1hYIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ1hYIiA9IHg7IHRoZW4KKyAgICBDWFg9Im5vdGZvdW5kIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfY3RfQ1hYCisgIGZpCitmaQogCiAJaWYgdGVzdCAiJENYWCIgPSAibm90Zm91bmQiCiAJdGhlbgpAQCAtNDg5MSwzNyArNTQ3NCwzNSBAQAogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0tZW5hYmxlLXByb2ZpbGluZy4uLiAiID4mNjsgfQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXByb2ZpbGluZyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9wcm9maWxpbmcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7IGFjX3NhdmVfY2M9IiRDQyIKLSBDQz0iJENDIC1wZyIKLSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgotZWxzZQorICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7CitmaQorCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBhY19zYXZlX2NjPSIkQ0MiCisgIENDPSIkKENDKSAtcGciCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KIGludCBtYWluKCkgeyByZXR1cm4gMDsgfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfZW5hYmxlX3Byb2ZpbGluZz0ieWVzIgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorCiBlbHNlCi0gIGFjX2VuYWJsZV9wcm9maWxpbmc9Im5vIgorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQotcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAotICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0M9IiRhY19zYXZlX2NjIgorZWxzZQorICBlbmFibGVfcHJvZmlsaW5nPW5vCiBmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRlbmFibGVfcHJvZmlsaW5nIiA+JjUKKyRhc19lY2hvICIkZW5hYmxlX3Byb2ZpbGluZyIgPiY2OyB9CiAKLSBDQz0iJGFjX3NhdmVfY2MiCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCisgIExERkxBR1M9Ii1wZyAkTERGTEFHUyIKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfZW5hYmxlX3Byb2ZpbGluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2VuYWJsZV9wcm9maWxpbmciID4mNjsgfQotCi1jYXNlICIkYWNfZW5hYmxlX3Byb2ZpbGluZyIgaW4KLSAgICAieWVzIikKLQlCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCi0JTERGTEFHUz0iLXBnICRMREZMQUdTIgotICAgIDs7Ci1lc2FjCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTERMSUJSQVJZIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIExETElCUkFSWS4uLiAiID4mNjsgfQogCkBAIC00OTg3LDExICs1NTY4LDYgQEAKIAkgIEJMRExJQlJBUlk9Jy1XbCwrYiwkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwogCSAgUlVOU0hBUkVEPVNITElCX1BBVEg9YHB3ZGA6JHtTSExJQl9QQVRIfQogCSAgOzsKLSAgICBPU0YqKQotCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCi0JICBCTERMSUJSQVJZPSctcnBhdGggJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKLQkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGA6JHtMRF9MSUJSQVJZX1BBVEh9Ci0JICA7OwogICAgIERhcndpbiopCiAgICAgCUxETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliJwogCUJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKQEAgLTUwMTIsNiArNTU4OCwxMCBAQAogICBlc2FjCiBmaQogCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCVJVTlNIQVJFRD0KK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTERMSUJSQVJZIiA+JjUKICRhc19lY2hvICIkTERMSUJSQVJZIiA+JjY7IH0KIApAQCAtNTEwOCwxMCArNTY4OCwxMSBAQAogZmkKIAogCi1mb3IgYWNfcHJvZyBpbiBhciBhYWwKLWRvCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCitpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CkBAIC01MTI3LDcgKzU3MDgsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Byb2ciCisgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTE0Nyw5ICs1NzI4LDY1IEBACiBmaQogCiAKLSAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgYWNfY3RfQVI9JEFSCisgIGZvciBhY19wcm9nIGluIGFyIGFhbAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQogZG9uZQotdGVzdCAtbiAiJEFSIiB8fCBBUj0iYXIiCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgoraWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0FSIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQVIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgQVI9ImFyIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIEFSPSRhY19jdF9BUgorICBmaQorZmkKIAogCiAjIHR3ZWFrIEFSRkxBR1Mgb25seSBpZiB0aGUgdXNlciBkaWRuJ3Qgc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUKQEAgLTUxNTksMTYgKzU3OTYsMTggQEAKICAgICAgICAgQVJGTEFHUz0icmMiCiBmaQogCi0KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3ZudmVyc2lvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgc3ZudmVyc2lvbjsgYWNfd29yZD0kMgoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiByZWFkZWxmCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX1NWTlZFUlNJT04rOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkU1ZOVkVSU0lPTiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSIkU1ZOVkVSU0lPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRSRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX1JFQURFTEY9IiRSRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUxNzcsNyArNTgxNiw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX1NWTlZFUlNJT049ImZvdW5kIgorICAgIGFjX2N2X3Byb2dfUkVBREVMRj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTE4NSw0MSArNTgyNCwzNCBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1ZOVkVSU0lPTiIgJiYgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSJub3QtZm91bmQiCiBmaQogZmkKLVNWTlZFUlNJT049JGFjX2N2X3Byb2dfU1ZOVkVSU0lPTgotaWYgdGVzdCAtbiAiJFNWTlZFUlNJT04iOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU1ZOVkVSU0lPTiIgPiY1Ci0kYXNfZWNobyAiJFNWTlZFUlNJT04iID4mNjsgfQorUkVBREVMRj0kYWNfY3ZfcHJvZ19SRUFERUxGCitpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFERUxGIiA+JjUKKyRhc19lY2hvICIkUkVBREVMRiIgPiY2OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogCi1pZiB0ZXN0ICRTVk5WRVJTSU9OID0gZm91bmQKLXRoZW4KLQlTVk5WRVJTSU9OPSJzdm52ZXJzaW9uIFwkKHNyY2RpcikiCi1lbHNlCi0JU1ZOVkVSU0lPTj0iZWNobyBVbnZlcnNpb25lZCBkaXJlY3RvcnkiCisgICAgdGVzdCAtbiAiJFJFQURFTEYiICYmIGJyZWFrCisgIGRvbmUKIGZpCi0KLQotCi0KLQotaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQotdGhlbgotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJoZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgaGc7IGFjX3dvcmQ9JDIKK2lmIHRlc3QgLXogIiRSRUFERUxGIjsgdGhlbgorICBhY19jdF9SRUFERUxGPSRSRUFERUxGCisgIGZvciBhY19wcm9nIGluIHJlYWRlbGYKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19IQVNfSEcrOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JFQURFTEYrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgotICBhY19jdl9wcm9nX0hBU19IRz0iJEhBU19IRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X1JFQURFTEY9IiRhY19jdF9SRUFERUxGIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTUyMjgsNyArNTg2MCw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX0hBU19IRz0iZm91bmQiCisgICAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSIkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01MjM2LDM0ICs1ODY4LDQ0IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19IQVNfSEciICYmIGFjX2N2X3Byb2dfSEFTX0hHPSJub3QtZm91bmQiCiBmaQogZmkKLUhBU19IRz0kYWNfY3ZfcHJvZ19IQVNfSEcKLWlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0hHIiA+JjUKLSRhc19lY2hvICIkSEFTX0hHIiA+JjY7IH0KK2FjX2N0X1JFQURFTEY9JGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRgoraWYgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkVBREVMRiIgPiY1CiskYXNfZWNobyAiJGFjX2N0X1JFQURFTEYiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIAotZWxzZQotSEFTX0hHPW5vLXJlcG9zaXRvcnkKKyAgdGVzdCAtbiAiJGFjX2N0X1JFQURFTEYiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9SRUFERUxGIiA9IHg7IHRoZW4KKyAgICBSRUFERUxGPSI6IgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIFJFQURFTEY9JGFjX2N0X1JFQURFTEYKKyAgZmkKIGZpCi1pZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAotdGhlbgotICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKLSAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKLSAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKLWVsc2UKLSAgICBIR1ZFUlNJT049IiIKLSAgICBIR1RBRz0iIgotICAgIEhHQlJBTkNIPSIiCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgY2FzZSAiJFJFQURFTEYiIGluCisJcmVhZGVsZnw6KQorCWFzX2ZuX2Vycm9yICQ/ICJyZWFkZWxmIGZvciB0aGUgaG9zdCBpcyByZXF1aXJlZCBmb3IgY3Jvc3MgYnVpbGRzIiAiJExJTkVOTyIgNQorCTs7CisgICAgZXNhYwogZmkKIAogCisKIERJU0FCTEVfQVNETEdFTj0iIgogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJweXRob24iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHB5dGhvbjsgYWNfd29yZD0kMgpAQCAtNTMxNywzNSArNTk1OSw2IEBACiAJCUlOU1RBTEw9IiR7c3JjZGlyfS9pbnN0YWxsLXNoIC1jIgogCWZpCiBlc2FjCi1hY19hdXhfZGlyPQotZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCi0gICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKLSAgICBicmVhawotICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgotICAgIGJyZWFrCi0gIGZpCi1kb25lCi1pZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKLWZpCi0KLSMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAotIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgotIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5Ci0jIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCi1hY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLWFjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KLQotCiAjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKICMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgogIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CkBAIC01NjU5LDEwICs2MjcyLDUzIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIHVudXNlZCByZXN1bHQgd2FybmluZy4uLiAiID4mNjsgfQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcmVzdWx0IC1XZXJyb3IiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtNTczOCw3ICs2Mzk0LDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLlswLTldKlwpLiovXDEvJ2AKLQkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yOyB0aGVuCisJICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMiAmJiBcCisJICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPCcgMTAuNgorCSAgICB0aGVuCiAJCSAgICBjdXJfdGFyZ2V0PTEwLjMKIAkJICAgIGlmIHRlc3QgJHtlbmFibGVfdW5pdmVyc2Fsc2RrfTsgdGhlbgogCQkJICAgIGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiYWxsIjsgdGhlbgpAQCAtNTc3Nyw5ICs2NDM1LDYgQEAKIAkgICAgRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nJwogCiAJICAgIDs7Ci0JT1NGKikKLQkgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgotCSAgICA7OwogICAgIGVzYWMKICAgICA7OwogCkBAIC01Nzg4LDkgKzY0NDMsNiBAQAogICAgIE9wZW5VTklYKnxVbml4V2FyZSopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLUsgcGVudGl1bSxob3N0LGlubGluZSxsb29wX3Vucm9sbCxhbGxvY2EgIgogCTs7Ci0gICAgT1NGKikKLQlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtaWVlZSAtc3RkIgotICAgIAk7OwogICAgIFNDT19TViopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWJlbGYgLUtpNDg2IC1EU0NPNSIKIAk7OwpAQCAtNjIwMCwxNyArNjg1MiwyMCBAQAogCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGN1cnNlcy5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKLWllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAoraWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCi1zeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAotc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKLXN5cy9zeXNjYWxsLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAotc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCi1zeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCitwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKK3N5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXAorc3lzL2tlcm5fY29udHJvbC5oIHN5cy9sb2FkYXZnLmggc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCitzeXMvcGFyYW0uaCBzeXMvc2VsZWN0Lmggc3lzL3NlbmRmaWxlLmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggXAorc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAorc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCitsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAogYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC02MjI0LDYgKzY4NzksNyBAQAogCiBkb25lCiAKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiBhY19oZWFkZXJfZGlyZW50PW5vCiBmb3IgYWNfaGRyIGluIGRpcmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfaGRyIiB8ICRhc190cl9zaGAKQEAgLTY0MzMsNiArNzA4OSwzNCBAQAogZmkKIAogCisjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgorZm9yIGFjX2hlYWRlciBpbiBuZXQvaWYuaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAibmV0L2lmLmgiICJhY19jdl9oZWFkZXJfbmV0X2lmX2giICIjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0X2lmX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ORVRfSUZfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIGZvciBhY19oZWFkZXIgaW4gdGVybS5oCiBkbyA6CkBAIC02NDc0LDYgKzcxNTgsMjYgQEAKIGRvbmUKIAogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitmb3IgYWNfaGVhZGVyIGluIGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorCisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCiAjIGNoZWNrcyBmb3IgdHlwZWRlZnMKIHdhc19pdF9kZWZpbmVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja190IGluIHRpbWUuaCIgPiY1CkBAIC02NDk4LDcgKzcyMDIsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXNfaXRfZGVmaW5lZCIgPiY1CiAkYXNfZWNobyAiJHdhc19pdF9kZWZpbmVkIiA+JjY7IH0KIAotIyBDaGVjayB3aGV0aGVyIHVzaW5nIG1ha2VkZXYgcmVxdWlyZXMgZGVmaW5pbmcgX09TRl9TT1VSQ0UKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ha2VkZXYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1ha2VkZXYuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTY1MjksMzUgKzcyMzIsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNkZWZpbmUgX09TRl9TT1VSQ0UgMQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi1pbnQKLW1haW4gKCkKLXsKLSBtYWtlZGV2KDAsIDApCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGFzX21ha2VkZXY9eWVzCi1lbHNlCi0gIGFjX2N2X2hhc19tYWtlZGV2PW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgX09TRl9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBmaQotZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGFzX21ha2VkZXYiID4mNQogJGFzX2VjaG8gIiRhY19jdl9oYXNfbWFrZWRldiIgPiY2OyB9CiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KQEAgLTY3NjUsNiArNzQzOSwxMyBAQAogCiBmaQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJfX3VpbnQxMjhfdCIgImFjX2N2X3R5cGVfX191aW50MTI4X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9fX3VpbnQxMjhfdCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfVUlOVDEyOF9UIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAKICMgU2l6ZXMgb2YgdmFyaW91cyBjb21tb24gYmFzaWMgdHlwZXMKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CkBAIC03NjQ1LDcgKzgzMjYsNiBAQAogCQllbHNlCiAJCQlMRFNIQVJFRD0nbGQgLWInCiAJCWZpIDs7Ci0JT1NGKikgTERTSEFSRUQ9ImxkIC1zaGFyZWQgLWV4cGVjdF91bnJlc29sdmVkIFwiKlwiIjs7CiAJRGFyd2luLzEuMyopCiAJCUxEU0hBUkVEPSckKENDKSAtYnVuZGxlJwogCQlMRENYWFNIQVJFRD0nJChDWFgpIC1idW5kbGUnCkBAIC03ODg0LDYgKzg1NjQsNTEgQEAKIAogCiAjIGNoZWNrcyBmb3IgbGlicmFyaWVzCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzZW5kZmlsZSBpbiAtbHNlbmRmaWxlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzZW5kZmlsZSBpbiAtbHNlbmRmaWxlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sc2VuZGZpbGUgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHNlbmRmaWxlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gc2VuZGZpbGUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlPXllcworZWxzZQorICBhY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTElCU0VOREZJTEUgMQorX0FDRU9GCisKKyAgTElCUz0iLWxzZW5kZmlsZSAkTElCUyIKKworZmkKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgpAQCAtODM1Miw2ICs5MDc3LDIxIEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc3lzdGVtX2ZmaSIgPiY1CiAkYXNfZWNobyAiJHdpdGhfc3lzdGVtX2ZmaSIgPiY2OyB9CiAKKyMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYm1wZGVjIGxpYnJhcnkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXN0ZW1fbGlibXBkZWMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3N5c3RlbV9saWJtcGRlYytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfc3lzdGVtX2xpYm1wZGVjOworZWxzZQorICB3aXRoX3N5c3RlbV9saWJtcGRlYz0ibm8iCitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9zeXN0ZW1fbGlibXBkZWMiID4mNQorJGFzX2VjaG8gIiR3aXRoX3N5c3RlbV9saWJtcGRlYyIgPiY2OyB9CisKICMgQ2hlY2sgZm9yIHN1cHBvcnQgZm9yIGxvYWRhYmxlIHNxbGl0ZSBleHRlbnNpb25zCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMuLi4gIiA+JjY7IH0KQEAgLTg0MTksMjMgKzkxNTksNiBAQAogCiBVU0VfVEhSRUFEX01PRFVMRT0iIgogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZGVjLXRocmVhZHMiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kZWMtdGhyZWFkcy4uLiAiID4mNjsgfQotCi0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGVjLXRocmVhZHMgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX2RlY190aHJlYWRzK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9kZWNfdGhyZWFkczsKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aHZhbCIgPiY1Ci0kYXNfZWNobyAiJHdpdGh2YWwiID4mNjsgfQotTERMQVNUPS10aHJlYWRzCi1pZiB0ZXN0ICIke3dpdGhfdGhyZWFkK3NldH0iICE9IHNldDsgdGhlbgotICAgd2l0aF90aHJlYWQ9IiR3aXRodmFsIjsKLWZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKIAogCiAjIFRlbXBsYXRlcyBmb3IgdGhpbmdzIEFDX0RFRklORWQgbW9yZSB0aGFuIG9uY2UuCkBAIC04NDQzLDcgKzkxNjYsNiBAQAogCiAKIAotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdGhyZWFkcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXRocmVhZHMuLi4gIiA+JjY7IH0KIApAQCAtODU0NSwzMSArOTI2Nyw2IEBACiAKICAgICAkYXNfZWNobyAiI2RlZmluZSBfUkVFTlRSQU5UIDEiID4+Y29uZmRlZnMuaAogCi0gICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImN0aHJlYWRzLmgiICJhY19jdl9oZWFkZXJfY3RocmVhZHNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfY3RocmVhZHNfaCIgPSB4eWVzOyB0aGVuIDoKLSAgJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9USFJFQUQgMSIgPj5jb25mZGVmcy5oCi0KLSAgICAkYXNfZWNobyAiI2RlZmluZSBDX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSFVSRF9DX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBMSUJTPSIkTElCUyAtbHRocmVhZHMiCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCi1lbHNlCi0KLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAibWFjaC9jdGhyZWFkcy5oIiAiYWNfY3ZfaGVhZGVyX21hY2hfY3RocmVhZHNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbWFjaF9jdGhyZWFkc19oIiA9IHh5ZXM7IHRoZW4gOgotICAkYXNfZWNobyAiI2RlZmluZSBXSVRIX1RIUkVBRCAxIiA+PmNvbmZkZWZzLmgKLQotICAgICRhc19lY2hvICIjZGVmaW5lIENfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotCi0kYXNfZWNobyAiI2RlZmluZSBNQUNIX0NfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIgotZWxzZQotCiAgICAgIyBKdXN0IGxvb2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIGxpYnB0aHJlYWQgaXMgbm90IGVub3VnaDoKICAgICAjIG9uIEhQL1VYLCBwdGhyZWFkLmggcmVuYW1lcyBwdGhyZWFkX2NyZWF0ZSB0byBhIGRpZmZlcmVudCBzeW1ib2wgbmFtZS4KICAgICAjIFNvIHdlIHJlYWxseSBoYXZlIHRvIGluY2x1ZGUgcHRocmVhZC5oLCBhbmQgdGhlbiBsaW5rLgpAQCAtODgwMSwxMiArOTQ5OCw2IEBACiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi0KLQotZmkKLQotCiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1c2NvbmZpZyBpbiAtbG1wYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdXNjb25maWcgaW4gLWxtcGMuLi4gIiA+JjY7IH0KQEAgLTg4OTksMTUgKzk1OTAsNiBAQAogZmkKIAogICAgIGZpCi0KLSAgICBpZiB0ZXN0ICIkVVNFX1RIUkVBRF9NT0RVTEUiICE9ICIjIgotICAgIHRoZW4KLSAgICAgICAgIyBJZiB0aGUgYWJvdmUgY2hlY2tzIGRpZG4ndCBkaXNhYmxlIHRocmVhZHMsIChhdCBsZWFzdCkgT1NGMQotICAgICAgICAjIG5lZWRzIHRoaXMgJy10aHJlYWRzJyBhcmd1bWVudCBkdXJpbmcgbGlua2luZy4KLSAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgICAgICBPU0YxKSBMRExBU1Q9LXRocmVhZHM7OwotICAgICAgICBlc2FjCi0gICAgZmkKIGZpCiAKIGlmIHRlc3QgIiRwb3NpeF90aHJlYWRzIiA9ICJ5ZXMiOyB0aGVuCkBAIC05MzQ0LDEzICsxMDAyNiwxMyBAQAogaWYgdGVzdCAteiAiJHdpdGhfcHltYWxsb2MiCiB0aGVuCiAgICAgd2l0aF9weW1hbGxvYz0ieWVzIgotICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogaWYgdGVzdCAiJHdpdGhfcHltYWxsb2MiICE9ICJubyIKIHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9QWU1BTExPQyAxIiA+PmNvbmZkZWZzLmgKIAorICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3B5bWFsbG9jIiA+JjUKICRhc19lY2hvICIkd2l0aF9weW1hbGxvYyIgPiY2OyB9CkBAIC05NDQ4LDI0ICsxMDEzMCwzNyBAQAogZWxzZQogCU1BQ0hERVBfT0JKUz0iJE1BQ0hERVBfT0JKUyAkZXh0cmFfbWFjaGRlcF9vYmpzIgogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBNQUNIREVQX09CSlMiID4mNQotJGFzX2VjaG8gIk1BQ0hERVBfT0JKUyIgPiY2OyB9CitpZiB0ZXN0IC16ICIkTUFDSERFUF9PQkpTIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9uZSIgPiY1CiskYXNfZWNobyAibm9uZSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFDSERFUF9PQkpTIiA+JjUKKyRhc19lY2hvICIkTUFDSERFUF9PQkpTIiA+JjY7IH0KK2ZpCiAKICMgY2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucwogZm9yIGFjX2Z1bmMgaW4gYWxhcm0gYWNjZXB0NCBzZXRpdGltZXIgZ2V0aXRpbWVyIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGNob3duIFwKLSBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmNobW9kIGZjaG93biBmb3JrIGZwYXRoY29uZiBmdGltZSBmdHJ1bmNhdGUgXAotIGdhaV9zdHJlcnJvciBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCisgY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZhY2Nlc3NhdCBmY2htb2QgZmNobW9kYXQgZmNob3duIGZjaG93bmF0IFwKKyBmZXhlY3ZlIGZkb3BlbmRpciBmb3JrIGZwYXRoY29uZiBmc3RhdGF0IGZ0aW1lIGZ0cnVuY2F0ZSBmdXRpbWVzYXQgXAorIGZ1dGltZW5zIGZ1dGltZXMgZ2FpX3N0cmVycm9yIFwKKyBnZXRncm91cGxpc3QgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbHN0YXQgbWJydG93YyBta2ZpZm8gbWtub2QgbWt0aW1lIFwKLSBtcmVtYXAgbmljZSBwYXRoY29uZiBwYXVzZSBwbG9jayBwb2xsIHB0aHJlYWRfaW5pdCBcCi0gcHV0ZW52IHJlYWRsaW5rIHJlYWxwYXRoIFwKLSBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZXRlZ2lkIHNldGV1aWQgXAotIHNldGdpZCBcCi0gc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXR1aWQgc2V0dmJ1ZiBcCi0gc2lnYWN0aW9uIHNpZ2ludGVycnVwdCBzaWdyZWxzZSBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IFwKKyBpZl9uYW1laW5kZXggXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsb2NrZiBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKKyBtZW1yY2hyIG1icnRvd2MgbWtkaXJhdCBta2ZpZm8gXAorIG1rZmlmb2F0IG1rbm9kIG1rbm9kYXQgbWt0aW1lIG1yZW1hcCBuaWNlIG9wZW5hdCBwYXRoY29uZiBwYXVzZSBwaXBlMiBwbG9jayBwb2xsIFwKKyBwb3NpeF9mYWxsb2NhdGUgcG9zaXhfZmFkdmlzZSBwcmVhZCBcCisgcHRocmVhZF9pbml0IHB0aHJlYWRfa2lsbCBwdXRlbnYgcHdyaXRlIHJlYWRsaW5rIHJlYWRsaW5rYXQgcmVhZHYgcmVhbHBhdGggcmVuYW1lYXQgXAorIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNlbmRmaWxlIHNldGVnaWQgc2V0ZXVpZCBcCisgc2V0Z2lkIHNldGhvc3RuYW1lIFwKKyBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHByaW9yaXR5IHNldHVpZCBzZXR2YnVmIFwKKyBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IHNjaGVkX3NldGFmZmluaXR5IHNjaGVkX3NldHNjaGVkdWxlciBzY2hlZF9zZXRwYXJhbSBcCisgc2NoZWRfcnJfZ2V0X2ludGVydmFsIFwKKyBzaWdhY3Rpb24gc2lnYWx0c3RhY2sgc2lnaW50ZXJydXB0IHNpZ3BlbmRpbmcgc2lncmVsc2UgXAorIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCi0gdHJ1bmNhdGUgdW5hbWUgdW5zZXRlbnYgdXRpbWVzIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAotIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSBfZ2V0cHR5CisgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCisgd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5CiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgpAQCAtOTY2NSw2ICsxMDM2MCwzMSBAQAogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlcG9sbF9jcmVhdGUxIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBlcG9sbF9jcmVhdGUxLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL2Vwb2xsLmg+CitpbnQKK21haW4gKCkKK3sKK3ZvaWQgKng9ZXBvbGxfY3JlYXRlMQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfRVBPTExfQ1JFQVRFMSAxIiA+PmNvbmZkZWZzLmgKKworICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGtxdWV1ZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Iga3F1ZXVlLi4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMDYzOSw2ICsxMTM1OSwxMjUgQEAKIGRvbmUKIAogCitmb3IgYWNfZnVuYyBpbiBjbG9ja19nZXR0aW1lCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMQorX0FDRU9GCisKK2Vsc2UKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfZ2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfZ2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX2dldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMSIgPj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZpbmUgVElNRU1PRFVMRV9MSUIgcnQiID4+Y29uZmRlZnMuaAorCisKK2ZpCisKKworZmkKK2RvbmUKKworCitmb3IgYWNfZnVuYyBpbiBjbG9ja19nZXRyZXMKK2RvIDoKKyAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiY2xvY2tfZ2V0cmVzIiAiYWNfY3ZfZnVuY19jbG9ja19nZXRyZXMiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfZ2V0cmVzIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfQ0xPQ0tfR0VUUkVTIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19nZXRyZXMgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfZ2V0cmVzIGluIC1scnQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX2dldHJlcyAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX2dldHJlcyAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcyIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFJFUyAxIiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKK2ZpCitkb25lCisKKwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFqb3IiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG1ham9yLi4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMDcxNiw3ICsxMTU1NSwxMiBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisKK2lmIHRlc3QgIiR7ZW5hYmxlX2lwdjYrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89Im5vIC0tIGNvbmZpZ3VyZWQgd2l0aCAtLShlbnxkaXMpYWJsZS1pcHY2IgorZWxzZQogICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz15ZXMKK2ZpCiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KQEAgLTEwODI0LDcgKzExNjY4LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID4mNQogJGFzX2VjaG8gIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPiY2OyB9CiAKLWlmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyAtbyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcworaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIHx8IHRlc3QgIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKIHRoZW4KIAlpZiB0ZXN0ICRpcHY2ID0geWVzCiAJdGhlbgpAQCAtMTE3OTMsNiArMTI2MzcsNDAgQEAKIGZpCiAKIAorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENoZWNrIGZvciBnY2MgeDY0IGlubGluZSBhc3NlbWJsZXIgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlci4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1vdnEgJXJjeCwgJXJheCIpOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9eWVzCitlbHNlCisgIGhhdmVfZ2NjX2FzbV9mb3JfeDY0PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA+JjUKKyRhc19lY2hvICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA9IHllcwordGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0dDQ19BU01fRk9SX1g2NCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTIwNDMsNyArMTI5MjEsNyBAQAogZmkKIGRvbmUKIAotZm9yIGFjX2Z1bmMgaW4gaHlwb3QgbGdhbW1hIGxvZzFwIHJvdW5kIHRnYW1tYQorZm9yIGFjX2Z1bmMgaW4gaHlwb3QgbGdhbW1hIGxvZzFwIGxvZzIgcm91bmQgdGdhbW1hCiBkbyA6CiAgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAogYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgpAQCAtMTI0NTAsNjUgKzEzMzI4LDE5IEBACiAkYXNfZWNobyAiJGFjX2N2X3djaGFyX3Rfc2lnbmVkIiA+JjY7IH0KIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoYXQgdHlwZSB0byB1c2UgZm9yIHN0ci4uLiAiID4mNjsgfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXdpZGUtdW5pY29kZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfd2lkZV91bmljb2RlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF93aWRlX3VuaWNvZGU7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4gdW5pY29kZV9zaXplPSI0IgotZWxzZSB1bmljb2RlX3NpemU9IjIiCi1maQotCi1lbHNlCi0KLWNhc2UgIiRoYXZlX3VjczRfdGNsIiBpbgotICB5ZXMpIHVuaWNvZGVfc2l6ZT0iNCI7OwotICAqKSAgIHVuaWNvZGVfc2l6ZT0iMiIgOzsKLWVzYWMKLQotZmkKLQotCi0KLWNhc2UgIiR1bmljb2RlX3NpemUiIGluCi0gIDQpCi0gICAgICRhc19lY2hvICIjZGVmaW5lIFB5X1VOSUNPREVfU0laRSA0IiA+PmNvbmZkZWZzLmgKLQotICAgICBBQklGTEFHUz0iJHtBQklGTEFHU311IgotICAgICA7OwotICAqKSAkYXNfZWNobyAiI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgMiIgPj5jb25mZGVmcy5oCi0gOzsKLWVzYWMKLQotCi0KICMgd2NoYXJfdCBpcyBvbmx5IHVzYWJsZSBpZiBpdCBtYXBzIHRvIGFuIHVuc2lnbmVkIHR5cGUKLWlmIHRlc3QgIiR1bmljb2RlX3NpemUiID0gIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgXAoraWYgdGVzdCAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiAtZ2UgMiBcCiAgICAgICAgICAgLWEgIiRhY19jdl93Y2hhcl90X3NpZ25lZCIgPSAibm8iCiB0aGVuCi0gIFBZX1VOSUNPREVfVFlQRT0id2NoYXJfdCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ieWVzIgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UIDEiID4+Y29uZmRlZnMuaAogCi0gICRhc19lY2hvICIjZGVmaW5lIFBZX1VOSUNPREVfVFlQRSB3Y2hhcl90IiA+PmNvbmZkZWZzLmgKLQotZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3Nob3J0IiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIHNob3J0IgotICAgICAkYXNfZWNobyAiI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgdW5zaWduZWQgc2hvcnQiID4+Y29uZmRlZnMuaAotCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBsb25nIgotICAgICAkYXNfZWNobyAiI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgdW5zaWduZWQgbG9uZyIgPj5jb25mZGVmcy5oCi0KIGVsc2UKLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJubyB0eXBlIGZvdW5kIgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJubyB1c2FibGUgd2NoYXJfdCBmb3VuZCIKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBZX1VOSUNPREVfVFlQRSIgPiY1Ci0kYXNfZWNobyAiJFBZX1VOSUNPREVfVFlQRSIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBVkVfVVNBQkxFX1dDSEFSX1QiID4mNQorJGFzX2VjaG8gIiRIQVZFX1VTQUJMRV9XQ0hBUl9UIiA+JjY7IH0KIAogIyBjaGVjayBmb3IgZW5kaWFubmVzcwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbiIgPiY1CkBAIC0xMjg5MSw3ICsxMzcyMyw3IEBACiBweV9jdl9saWJfcmVhZGxpbmU9bm8KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlicyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gbGluayByZWFkbGluZSBsaWJzLi4uICIgPiY2OyB9Ci1mb3IgcHlfbGlidGVybWNhcCBpbiAiIiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbworZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgdGluZm8gbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KICAgaWYgdGVzdCAteiAiJHB5X2xpYnRlcm1jYXAiOyB0aGVuCiAgICAgUkVBRExJTkVfTElCUz0iLWxyZWFkbGluZSIKICAgZWxzZQpAQCAtMTM1MjEsNiArMTQzNTMsOCBAQAogCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogIyBPbiBIUC9VWCAxMS4wLCBtdndkZWxjaCBpcyBhIGJsb2NrIHdpdGggYSByZXR1cm4gc3RhdGVtZW50CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgbXZ3ZGVsY2ggaXMgYW4gZXhwcmVzc2lvbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIG12d2RlbGNoIGlzIGFuIGV4cHJlc3Npb24uLi4gIiA+JjY7IH0KQEAgLTEzNjc0LDM1ICsxNDUwOCw3NiBAQAogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisjIGxhc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjaworQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNoZWNraW5nIGZvciBkZXZpY2UgZmlsZXMiID4mNjt9CisKK2lmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRteCtzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0bXgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRteC4uLiAiID4mNjsgfQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub3Qgc2V0IiA+JjUKKyRhc19lY2hvICJub3Qgc2V0IiA+JjY7IH0KKyAgICBhc19mbl9lcnJvciAkPyAic2V0IGFjX2N2X2ZpbGVfX2Rldl9wdG14IHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmciICIkTElORU5PIiA1CisgIGZpCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0YytzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgL2Rldi9wdGMuLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IHNldCIgPiY1CiskYXNfZWNobyAibm90IHNldCIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gInNldCBhY19jdl9maWxlX19kZXZfcHRjIHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmciICIkTElORU5PIiA1CisgIGZpCitmaQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0bXgiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRteC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9maWxlX19kZXZfcHRteCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY2hlY2sgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQoraWYgdGVzdCAtciAiL2Rldi9wdG14IjsgdGhlbgorICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9bm8KK2ZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9maWxlX19kZXZfcHRteCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID0geHllczsgdGhlbiA6CiAKLWlmIHRlc3QgLXIgL2Rldi9wdG14Ci10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9CitmaQorCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ERVZfUFRNWCAxIiA+PmNvbmZkZWZzLmgKIAotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCi0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC9kZXYvcHRjIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0Yy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9maWxlX19kZXZfcHRjKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMgJiYKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjaGVjayBmb3IgZmlsZSBleGlzdGVuY2Ugd2hlbiBjcm9zcyBjb21waWxpbmciICIkTElORU5PIiA1CitpZiB0ZXN0IC1yICIvZGV2L3B0YyI7IHRoZW4KKyAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz15ZXMKK2Vsc2UKKyAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubworZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2ZpbGVfX2Rldl9wdGMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9maWxlX19kZXZfcHRjIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPSB4eWVzOyB0aGVuIDoKIAotaWYgdGVzdCAtciAvZGV2L3B0YwotdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworaWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRjIiA9IHh5ZXM7IHRoZW4KIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ERVZfUFRDIDEiID4+Y29uZmRlZnMuaAogCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAogaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwpAQCAtMTM3MTMsNyArMTQ1ODgsMzYgQEAKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KKyAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKKyAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCisgICAgc2F2ZV9DRkxBR1M9JENGTEFHUworICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgorICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgorCitpbnQKK21haW4gKCkKK3sKKworICAgICAgY2hhciAqYnVmZmVyOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKKyAgIGZpCiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KQEAgLTEzOTAxLDQ5ICsxNDgwNSw2IEBACiAKIGZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2NvbXB1dGVkX2dvdG9zPXllcwotZWxzZQotICBhY19jdl9jb21wdXRlZF9nb3Rvcz1ubwotZmkKLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKLWZpCi0KLWZpCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNQotJGFzX2VjaG8gIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPiY2OyB9Ci1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ09NUFVURURfR09UT1MgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MuLi4gIiA+JjY7IH0KQEAgLTEzOTc0LDYgKzE0ODM1LDUyIEBACiBmaQogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0Mgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY29tcHV0ZWRfZ290b3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGlmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaQorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBzdGF0aWMgdm9pZCAqdGFyZ2V0c1sxXSA9IHsgJiZMQUJFTDEgfTsKKyAgICBnb3RvIExBQkVMMjsKK0xBQkVMMToKKyAgICByZXR1cm4gMDsKK0xBQkVMMjoKKyAgICBnb3RvICp0YXJnZXRzWzBdOworICAgIHJldHVybiAxOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jb21wdXRlZF9nb3Rvcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNjsgfQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE9TIDEiID4+Y29uZmRlZnMuaAorCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopCiAKQEAgLTEzOTgyLDE4ICsxNDg4OSw2IEBACiBlc2FjCiAKIAotY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICBPU0YqKSBhc19mbl9lcnJvciAkPyAiT1NGKiBzeXN0ZW1zIGFyZSBkZXByZWNhdGVkIHVubGVzcyBzb21lYm9keSB2b2x1bnRlZXJzLiBDaGVjayBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNiIgIiRMSU5FTk8iIDUgOzsKLWVzYWMKLQotYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAicGlwZTIiICJhY19jdl9mdW5jX3BpcGUyIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX3BpcGUyIiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1BJUEUyIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi0KIAogCiBmb3IgaCBpbiBgKGNkICRzcmNkaXI7ZWNobyBQeXRob24vdGhyZWFkXyouaClgCkBAIC0xNDAxMyw2ICsxNDkwOCwxMzYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBkb25lIiA+JjUKICRhc19lY2hvICJkb25lIiA+JjY7IH0KIAorIyBBdmFpbGFiaWxpdHkgb2YgLU8yOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLU8yIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtTzIuLi4gIiA+JjY7IH0KK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9PMj15ZXMKK2Vsc2UKKyAgaGF2ZV9PMj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX08yIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9PMiIgPiY2OyB9CitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsaWJjIF9GT1JUSUZZX1NPVVJDRS9tZW1tb3ZlIGJ1ZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnLi4uICIgPiY2OyB9CitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGhhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ubworZWxzZQorICBoYXZlX2dsaWJjX21lbW1vdmVfYnVnPXllcworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgaXBhLXB1cmUtY29uc3QgYnVnLi4uICIgPiY2OyB9CisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKKyAgICAgICAgICAgIGZvbyhpbnQgKnApIHsKKyAgICAgICAgICAgICAgaW50IHI7CisgICAgICAgICAgICAgIGFzbSAoICJtb3ZsIFwkNiwgKCUxKVxuXHQiCisgICAgICAgICAgICAgICAgICAgICJ4b3JsICUwLCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAgIDogIj1yIiAocikgOiAiciIgKHApIDogIm1lbW9yeSIKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgICAgICAgaW50IHAgPSA4OworICAgICAgICAgICAgICBpZiAoKGZvbygmcCkgPyA6IHApICE9IDYpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz1ubworZWxzZQorICBoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXMKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA+JjUKKyRhc19lY2hvICIkaGF2ZV9pcGFfcHVyZV9jb25zdF9idWciID4mNjsgfQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRyAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyIKIApAQCAtMTQ1MzcsNyArMTU1NjIsNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjIsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuMywgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNDU5OSw3ICsxNTYyNCw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy4yCitweXRob24gY29uZmlnLnN0YXR1cyAzLjMKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA4NGQ3MjNhLi5lM2Y1Yjk2IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDIyICszLDU5IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMikKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy4zKQogCi1kbmwgU29tZSBtNCBtYWdpYyB0byBlbnN1cmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBpcyBnZW5lcmF0ZWQKLWRubCBieSB0aGUgY29ycmVjdCBhdXRvY29uZiB2ZXJzaW9uLgotbTRfZGVmaW5lKFt2ZXJzaW9uX3JlcXVpcmVkXSwKLVttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJTSU9OXSksIFskMV0pLCAwLAotICAgICAgIFtdLAotICAgICAgIFttNF9mYXRhbChbQXV0b2NvbmYgdmVyc2lvbiAkMSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uXSwgNjMpXSkKLV0pCiBBQ19QUkVSRVEoMi42NSkKIAotQUNfUkVWSVNJT04oJFJldmlzaW9uJCkKIEFDX0lOSVQocHl0aG9uLCBQWVRIT05fVkVSU0lPTiwgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8pCisKK0FDX1NVQlNUKEhHVkVSU0lPTikKK0FDX1NVQlNUKEhHVEFHKQorQUNfU1VCU1QoSEdCUkFOQ0gpCisKK2lmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKK3RoZW4KK0FDX0NIRUNLX1BST0coSEFTX0hHLCBoZywgZm91bmQsIG5vdC1mb3VuZCkKK2Vsc2UKK0hBU19IRz1uby1yZXBvc2l0b3J5CitmaQoraWYgdGVzdCAkSEFTX0hHID0gZm91bmQKK3RoZW4KKyAgICBIR1ZFUlNJT049ImhnIGlkIC1pIFwkKHNyY2RpcikiCisgICAgSEdUQUc9ImhnIGlkIC10IFwkKHNyY2RpcikiCisgICAgSEdCUkFOQ0g9ImhnIGlkIC1iIFwkKHNyY2RpcikiCitlbHNlCisgICAgSEdWRVJTSU9OPSIiCisgICAgSEdUQUc9IiIKKyAgICBIR0JSQU5DSD0iIgorZmkKKwogQUNfQ09ORklHX1NSQ0RJUihbSW5jbHVkZS9vYmplY3QuaF0pCiBBQ19DT05GSUdfSEVBREVSKHB5Y29uZmlnLmgpCiAKK0FDX0NBTk9OSUNBTF9IT1NUCisKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHl0aG9uIGludGVycHJldGVyIGZvciBjcm9zcyBidWlsZF0pCisgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCisgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KKwkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKKwkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkAgPj0gKDMsMykpJzsgdGhlbgorCSAgICAgICAgYnJlYWsKKwkgICAgZmkKKyAgICAgICAgICAgIGludGVycD0KKwlkb25lCisgICAgICAgIGlmIHRlc3QgeCRpbnRlcnAgPSB4OyB0aGVuCisJICAgIEFDX01TR19FUlJPUihbcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBpbnRlcnByZXRlciBub3QgZm91bmRdKQorCWZpCisgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKKwlQWVRIT05fRk9SX0JVSUxEPSJfUFlUSE9OX1BST0pFQ1RfQkFTRT0kc3JjZGlyIicgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi9wbGF0LSQoTUFDSERFUCkgJyRpbnRlcnAKKyAgICBmaQorZWxzZQorICAgIFBZVEhPTl9GT1JfQlVJTEQ9Jy4vJChCVUlMRFBZVEhPTikgLUUnCitmaQorQUNfU1VCU1QoUFlUSE9OX0ZPUl9CVUlMRCkKKwogZG5sIEVuc3VyZSB0aGF0IGlmIHByZWZpeCBpcyBzcGVjaWZpZWQsIGl0IGRvZXMgbm90IGVuZCBpbiBhIHNsYXNoLiBJZgogZG5sIGl0IGRvZXMsIHdlIGdldCBwYXRoIG5hbWVzIGNvbnRhaW5pbmcgJy8vJyB3aGljaCBpcyBib3RoIHVnbHkgYW5kCiBkbmwgY2FuIGNhdXNlIHRyb3VibGUuCkBAIC04OCwxNCArMTI1LDIwIEBACiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC0tZW5hYmxlLXVuaXZlcnNhbHNka10pCiBBQ19BUkdfRU5BQkxFKHVuaXZlcnNhbHNkaywKLQlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pdmVyc2Fsc2RrQDw6QD1TREtESVJAOj5AXSwgW0J1aWxkIGFnYWluc3QgTWFjIE9TIFggMTAuNHUgU0RLIChwcGMvaTM4NildKSwKKwlBU19IRUxQX1NUUklORyhbLS1lbmFibGUtdW5pdmVyc2Fsc2RrQDw6QD1TREtESVJAOj5AXSwgW0J1aWxkIGZhdCBiaW5hcnkgYWdhaW5zdCBNYWMgT1MgWCBTREtdKSwKIFsKIAljYXNlICRlbmFibGV2YWwgaW4KIAl5ZXMpCi0JCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCi0JCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkjIExvY2F0ZSB0aGUgYmVzdCB1c2FibGUgU0RLLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkJIyBpbmZvcm1hdGlvbgorCQllbmFibGV2YWw9ImAvdXNyL2Jpbi94Y29kZWJ1aWxkIC12ZXJzaW9uIC1zZGsgbWFjb3N4IFBhdGggMj4vZGV2L251bGxgIgorCQlpZiB0ZXN0IC16ICIke2VuYWJsZXZhbH0iCiAJCXRoZW4KLQkJCWVuYWJsZXZhbD0vCisJCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaworCQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCQl0aGVuCisJCQkJZW5hYmxldmFsPS8KKwkJCWZpCiAJCWZpCiAJCTs7CiAJZXNhYwpAQCAtMTI3LDcgKzE3MCwyMCBAQAogCiBBQ19TVUJTVChBUkNIX1JVTl8zMkJJVCkKIAorIyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIHdlIHByZWZlciB0byBzZWxlY3QgJzMyLWJpdCcgaWYgYXZhaWxhYmxlLAorIyBvdGhlcndpc2UgdXNlICdpbnRlbCcKIFVOSVZFUlNBTF9BUkNIUz0iMzItYml0IgoraWYgdGVzdCAiYHVuYW1lIC1zYCIgPSAiRGFyd2luIgordGhlbgorCWlmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKKwl0aGVuCisJCWlmIHRlc3QgLXogImAvdXNyL2Jpbi9maWxlICIke1VOSVZFUlNBTFNES30vdXNyL2xpYi9saWJTeXN0ZW0uZHlsaWIiIHwgZ3JlcCBwcGNgIgorCQl0aGVuCisJCQlVTklWRVJTQUxfQVJDSFM9ImludGVsIgorCQlmaQorCWZpCitmaQorCiBBQ19TVUJTVChMSVBPXzMyQklUX0ZMQUdTKQogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzKQogQUNfQVJHX1dJVEgodW5pdmVyc2FsLWFyY2hzLApAQCAtMTM3LDcgKzE5Myw3IEBACiAJVU5JVkVSU0FMX0FSQ0hTPSIkd2l0aHZhbCIKIF0sCiBbCi0gCUFDX01TR19SRVNVTFQoMzItYml0KQorIAlBQ19NU0dfUkVTVUxUKCR7VU5JVkVSU0FMX0FSQ0hTfSkKIF0pCiAKIApAQCAtMjc2LDYgKzMzMiwyNSBAQAogQUNfTVNHX0NIRUNLSU5HKE1BQ0hERVApCiBpZiB0ZXN0IC16ICIkTUFDSERFUCIKIHRoZW4KKyAgICAjIGF2b2lkIHVzaW5nIHVuYW1lIGZvciBjcm9zcyBidWlsZHMKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgICAgICMgYWNfc3lzX3N5c3RlbSBhbmQgYWNfc3lzX3JlbGVhc2UgYXJlIG9ubHkgdXNlZCBmb3Igc2V0dGluZworICAgICAgICMgYGRlZmluZV94b3Blbl9zb3VyY2UnIGluIHRoZSBjYXNlIHN0YXRlbWVudCBiZWxvdy4gRm9yIHRoZQorICAgICAgICMgY3VycmVudCBzdXBwb3J0ZWQgY3Jvc3MgYnVpbGRzLCB0aGlzIG1hY3JvIGlzIG5vdCBhZGp1c3RlZC4KKwljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgqKQorCQlhY19zeXNfc3lzdGVtPUxpbnV4CisJCTs7CisJKi0qLWN5Z3dpbiopCisJCWFjX3N5c19zeXN0ZW09Q3lnd2luCisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJQUNfTVNHX0VSUk9SKFtjcm9zcyBidWlsZCBub3Qgc3VwcG9ydGVkIGZvciAkaG9zdF0pCisJZXNhYworCWFjX3N5c19yZWxlYXNlPQorICAgIGVsc2UKIAlhY19zeXNfc3lzdGVtPWB1bmFtZSAtc2AKIAlpZiB0ZXN0ICIkYWNfc3lzX3N5c3RlbSIgPSAiQUlYIiBcCiAJLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJVbml4V2FyZSIgLW8gIiRhY19zeXNfc3lzdGVtIiA9ICJPcGVuVU5JWCI7IHRoZW4KQEAgLTI4MywxOSArMzU4LDQzIEBACiAJZWxzZQogCQlhY19zeXNfcmVsZWFzZT1gdW5hbWUgLXJgCiAJZmkKLQlhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAotCQkJICAgdHIgLWQgJ1svIF0nIHwgdHIgJ1tbQS1aXV0nICdbW2Etel1dJ2AKLQlhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8Ci0JCQkgICB0ciAtZCAnWy8gXScgfCBzZWQgJ3MvXltbQS1aXV1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAotCU1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKKyAgICBmaQorICAgIGFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8CisJCQl0ciAtZCAnWy8gXScgfCB0ciAnW1tBLVpdXScgJ1tbYS16XV0nYAorICAgIGFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKKwkJCXRyIC1kICdbLyBdJyB8IHNlZCAncy9eW1tBLVpdXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCisgICAgTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgogCi0JY2FzZSAkTUFDSERFUCBpbgotCWxpbnV4KikgTUFDSERFUD0ibGludXgyIjs7CisgICAgY2FzZSAkTUFDSERFUCBpbgorCWxpbnV4KikgTUFDSERFUD0ibGludXgiOzsKIAljeWd3aW4qKSBNQUNIREVQPSJjeWd3aW4iOzsKIAlkYXJ3aW4qKSBNQUNIREVQPSJkYXJ3aW4iOzsKLSAgICAgICAgaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKKwlpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OwogCScnKQlNQUNIREVQPSJ1bmtub3duIjs7CisgICAgZXNhYworZmkKKworQUNfU1VCU1QoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgqKQorCQljYXNlICIkaG9zdF9jcHUiIGluCisJCWFybSopCisJCQlfaG9zdF9jcHU9YXJtCisJCQk7OworCQkqKQorCQkJX2hvc3RfY3B1PSRob3N0X2NwdQorCQllc2FjCisJCTs7CisJKi0qLWN5Z3dpbiopCisJCV9ob3N0X2NwdT0KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlBQ19NU0dfRVJST1IoW2Nyb3NzIGJ1aWxkIG5vdCBzdXBwb3J0ZWQgZm9yICRob3N0XSkKIAllc2FjCisJX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSIkTUFDSERFUCR7X2hvc3RfY3B1OistJF9ob3N0X2NwdX0iCiBmaQogCQogIyBTb21lIHN5c3RlbXMgY2Fubm90IHN0YW5kIF9YT1BFTl9TT1VSQ0UgYmVpbmcgZGVmaW5lZCBhdCBhbGw7IHRoZXkKQEAgLTM4Myw3ICs0ODIsOCBAQAogCiBpZiB0ZXN0ICRkZWZpbmVfeG9wZW5fc291cmNlID0geWVzCiB0aGVuCi0gIEFDX0RFRklORShfWE9QRU5fU09VUkNFLCA2MDAsIAorICAjIFgvT3BlbiA3LCBpbmNvcnBvcmF0aW5nIFBPU0lYLjEtMjAwOAorICBBQ19ERUZJTkUoX1hPUEVOX1NPVVJDRSwgNzAwLAogICAgICAgICAgICAgRGVmaW5lIHRvIHRoZSBsZXZlbCBvZiBYL09wZW4gdGhhdCB5b3VyIHN5c3RlbSBzdXBwb3J0cykKIAogICAjIE9uIFRydTY0IFVuaXggNC4wRiwgZGVmaW5pbmcgX1hPUEVOX1NPVVJDRSBhbHNvIHJlcXVpcmVzCkBAIC0zOTMsOCArNDkzLDcgQEAKICAgQUNfREVGSU5FKF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQsIDEsCiAgICAJICAgIERlZmluZSB0byBhY3RpdmF0ZSBVbml4OTUtYW5kLWVhcmxpZXIgZmVhdHVyZXMpCiAKLSAgQUNfREVGSU5FKF9QT1NJWF9DX1NPVVJDRSwgMjAwMTEyTCwgRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDAxKQotICAKKyAgQUNfREVGSU5FKF9QT1NJWF9DX1NPVVJDRSwgMjAwODA5TCwgRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDA4KQogZmkKIAogIwpAQCAtNDIzLDEwICs1MjIsNiBAQAogQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0KIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JyMnCiAKLUFDX01TR19DSEVDS0lORyhtYWNoaW5lIHR5cGUgYXMgcmVwb3J0ZWQgYnkgdW5hbWUgLW0pCi1hY19zeXNfbWFjaGluZT1gdW5hbWUgLW1gCi1BQ19NU0dfUkVTVUxUKCRhY19zeXNfbWFjaGluZSkKLQogIyBjaGVja3MgZm9yIGFsdGVybmF0aXZlIHByb2dyYW1zCiAKICMgY29tcGlsZXIgZmxhZ3MgYXJlIGdlbmVyYXRlZCBpbiB0d28gc2V0cywgQkFTRUNGTEFHUyBhbmQgT1BULiAgT1BUIGlzIGp1c3QKQEAgLTQ2OSw2ICs1NjQsNjMgQEAKIGlmIHRlc3QgLXogIiRDRkxBR1MiOyB0aGVuCiAgICAgICAgIENGTEFHUz0KIGZpCisKK2lmIHRlc3QgIiRhY19zeXNfc3lzdGVtIiA9ICJEYXJ3aW4iCit0aGVuCisJIyBDb21waWxlciBzZWxlY3Rpb24gb24gTWFjT1NYIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbgorCSMgQUNfUFJPR19DQyBjYW4gaGFuZGxlLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkjIGluZm9ybWF0aW9uCisJaWYgdGVzdCAteiAiJHtDQ30iCisJdGhlbgorCQlmb3VuZF9nY2M9CisJCWZvdW5kX2NsYW5nPQorCQlhc19zYXZlX0lGUz0kSUZTOyBJRlM9OgorCQlmb3IgYXNfZGlyIGluICRQQVRICisJCWRvCisJCQlJRlM9JGFzX3NhdmVfSUZTCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvZ2NjOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9nY2N9IjsgdGhlbgorCQkJCQlmb3VuZF9nY2M9JGFzX2Rpci9nY2MKKwkJCQlmaQorCQkJZmkKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9jbGFuZzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfY2xhbmd9IjsgdGhlbgorCQkJCQlmb3VuZF9jbGFuZz0kYXNfZGlyL2NsYW5nCisJCQkJZmkKKwkJCWZpCisJCWRvbmUKKwkJSUZTPSRhc19zYXZlX0lGUworCisJCWlmIHRlc3QgLW4gIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCWlmIHRlc3QgLW4gImAiJGZvdW5kX2djYyIgLS12ZXJzaW9uIHwgZ3JlcCBsbHZtLWdjY2AiCisJCQl0aGVuCisJCQkJQUNfTVNHX05PVElDRShbRGV0ZWN0ZWQgbGx2bS1nY2MsIGZhbGxpbmcgYmFjayB0byBjbGFuZ10pCisJCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCQkJZmkKKworCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJQUNfTVNHX05PVElDRShbTm8gR0NDIGZvdW5kLCB1c2UgQ0xBTkddKQorCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAteiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlmb3VuZF9jbGFuZz1gL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcgMj4vZGV2L251bGxgCisJCQlpZiB0ZXN0IC1uICIke2ZvdW5kX2NsYW5nfSIKKwkJCXRoZW4KKwkJCQlBQ19NU0dfTk9USUNFKFtVc2luZyBjbGFuZyBmcm9tIFhjb2RlLmFwcF0pCisJCQkJQ0M9IiR7Zm91bmRfY2xhbmd9IgorCQkJCUNYWD0iYC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nKytgIgorCisJCQkjIGVsc2U6IHVzZSBkZWZhdWx0IGJlaGF2aW91cgorCQkJZmkKKwkJZmkKKwlmaQorZmkKIEFDX1BST0dfQ0MKIAogQUNfU1VCU1QoQ1hYKQpAQCAtNTAwLDggKzY1Miw5IEBACiBpZiB0ZXN0IC16ICIkQ1hYIgogdGhlbgogICAgICAgICBjYXNlICIkQ0MiIGluCi0gICAgICAgIGdjYykgICAgQUNfUEFUSF9QUk9HKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OwotICAgICAgICBjYykgICAgIEFDX1BBVEhfUFJPRyhDWFgsIFtjKytdLCBbYysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgZ2NjKSAgICBBQ19QQVRIX1RPT0woQ1hYLCBbZysrXSwgW2crK10sIFtub3Rmb3VuZF0pIDs7CisgICAgICAgIGNjKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2MrK10sIFtjKytdLCBbbm90Zm91bmRdKSA7OworICAgICAgICBjbGFuZ3wqL2NsYW5nKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2NsYW5nKytdLCBbY2xhbmcrK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgIGVzYWMKIAlpZiB0ZXN0ICIkQ1hYIiA9ICJub3Rmb3VuZCIKIAl0aGVuCkBAIC01MTAsNyArNjYzLDcgQEAKIGZpCiBpZiB0ZXN0IC16ICIkQ1hYIgogdGhlbgotCUFDX0NIRUNLX1BST0dTKENYWCwgJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbCwgbm90Zm91bmQpCisJQUNfQ0hFQ0tfVE9PTFMoQ1hYLCAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsLCBub3Rmb3VuZCkKIAlpZiB0ZXN0ICIkQ1hYIiA9ICJub3Rmb3VuZCIKIAl0aGVuCiAJCUNYWD0iIgpAQCAtNzA0LDIyICs4NTcsMjMgQEAKIAogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1wcm9maWxpbmcpCiBBQ19BUkdfRU5BQkxFKHByb2ZpbGluZywKLSAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGluZ10sIFtlbmFibGUgQy1sZXZlbCBjb2RlIHByb2ZpbGluZ10pLAotW2FjX3NhdmVfY2M9IiRDQyIKLSBDQz0iJENDIC1wZyIKLSBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW2ludCBtYWluKCkgeyByZXR1cm4gMDsgfV1dKV0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ieWVzIl0sCi0gICBbYWNfZW5hYmxlX3Byb2ZpbGluZz0ibm8iXSwKLSAgIFthY19lbmFibGVfcHJvZmlsaW5nPSJubyJdKQotIENDPSIkYWNfc2F2ZV9jYyJdKQotQUNfTVNHX1JFU1VMVCgkYWNfZW5hYmxlX3Byb2ZpbGluZykKKyAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGluZ10sIFtlbmFibGUgQy1sZXZlbCBjb2RlIHByb2ZpbGluZ10pKQoraWYgdGVzdCAieCRlbmFibGVfcHJvZmlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgYWNfc2F2ZV9jYz0iJENDIgorICBDQz0iJChDQykgLXBnIgorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH1dXSldLAorICAgIFtdLAorICAgIFtlbmFibGVfcHJvZmlsaW5nPW5vXSkKKyAgQ0M9IiRhY19zYXZlX2NjIgorZWxzZQorICBlbmFibGVfcHJvZmlsaW5nPW5vCitmaQorQUNfTVNHX1JFU1VMVCgkZW5hYmxlX3Byb2ZpbGluZykKIAotY2FzZSAiJGFjX2VuYWJsZV9wcm9maWxpbmciIGluCi0gICAgInllcyIpCi0JQkFTRUNGTEFHUz0iLXBnICRCQVNFQ0ZMQUdTIgotCUxERkxBR1M9Ii1wZyAkTERGTEFHUyIKLSAgICA7OwotZXNhYworaWYgdGVzdCAieCRlbmFibGVfcHJvZmlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgQkFTRUNGTEFHUz0iLXBnICRCQVNFQ0ZMQUdTIgorICBMREZMQUdTPSItcGcgJExERkxBR1MiCitmaQogCiBBQ19NU0dfQ0hFQ0tJTkcoTERMSUJSQVJZKQogCkBAIC03ODMsMTEgKzkzNyw2IEBACiAJICBCTERMSUJSQVJZPSctV2wsK2IsJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKIAkgIFJVTlNIQVJFRD1TSExJQl9QQVRIPWBwd2RgOiR7U0hMSUJfUEFUSH0KIAkgIDs7Ci0gICAgT1NGKikKLQkgIExETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLnNvJwotCSAgQkxETElCUkFSWT0nLXJwYXRoICQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCi0JICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgOiR7TERfTElCUkFSWV9QQVRIfQotCSAgOzsKICAgICBEYXJ3aW4qKQogICAgIAlMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYicKIAlCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCkBAIC04MDgsMTEgKzk1NywxNSBAQAogICBlc2FjCiBmaQogCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCVJVTlNIQVJFRD0KK2ZpCisKIEFDX01TR19SRVNVTFQoJExETElCUkFSWSkKIAogQUNfUFJPR19SQU5MSUIKIEFDX1NVQlNUKEFSKQotQUNfQ0hFQ0tfUFJPR1MoQVIsIGFyIGFhbCwgYXIpCitBQ19DSEVDS19UT09MUyhBUiwgYXIgYWFsLCBhcikKIAogIyB0d2VhayBBUkZMQUdTIG9ubHkgaWYgdGhlIHVzZXIgZGlkbid0IHNldCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lCiBBQ19TVUJTVChBUkZMQUdTKQpAQCAtODIxLDM1ICs5NzQsMTUgQEAKICAgICAgICAgQVJGTEFHUz0icmMiCiBmaQogCi1BQ19TVUJTVChTVk5WRVJTSU9OKQotQUNfQ0hFQ0tfUFJPRyhTVk5WRVJTSU9OLCBzdm52ZXJzaW9uLCBmb3VuZCwgbm90LWZvdW5kKQotaWYgdGVzdCAkU1ZOVkVSU0lPTiA9IGZvdW5kCi10aGVuCi0JU1ZOVkVSU0lPTj0ic3ZudmVyc2lvbiBcJChzcmNkaXIpIgotZWxzZQotCVNWTlZFUlNJT049ImVjaG8gVW52ZXJzaW9uZWQgZGlyZWN0b3J5IgorQUNfQ0hFQ0tfVE9PTFMoW1JFQURFTEZdLCBbcmVhZGVsZl0sIFs6XSkKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgY2FzZSAiJFJFQURFTEYiIGluCisJcmVhZGVsZnw6KQorCUFDX01TR19FUlJPUihbcmVhZGVsZiBmb3IgdGhlIGhvc3QgaXMgcmVxdWlyZWQgZm9yIGNyb3NzIGJ1aWxkc10pCisJOzsKKyAgICBlc2FjCiBmaQotCi1BQ19TVUJTVChIR1ZFUlNJT04pCi1BQ19TVUJTVChIR1RBRykKLUFDX1NVQlNUKEhHQlJBTkNIKQotCi1pZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCi10aGVuCi1BQ19DSEVDS19QUk9HKEhBU19IRywgaGcsIGZvdW5kLCBub3QtZm91bmQpCi1lbHNlCi1IQVNfSEc9bm8tcmVwb3NpdG9yeQotZmkKLWlmIHRlc3QgJEhBU19IRyA9IGZvdW5kCi10aGVuCi0gICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgotICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgotICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgotZWxzZQotICAgIEhHVkVSU0lPTj0iIgotICAgIEhHVEFHPSIiCi0gICAgSEdCUkFOQ0g9IiIKLWZpCitBQ19TVUJTVChSRUFERUxGKQogCiBBQ19TVUJTVChESVNBQkxFX0FTRExHRU4pCiBESVNBQkxFX0FTRExHRU49IiIKQEAgLTEwMDQsMTAgKzExMzcsMzIgQEAKICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIgogICAgIGZpCiAKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmcpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1yZXN1bHQgLVdlcnJvciIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKwkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICBmaQorCiAgICAgIyBpZiB1c2luZyBnY2Mgb24gYWxwaGEsIHVzZSAtbWllZWUgdG8gZ2V0IChuZWFyKSBmdWxsIElFRUUgNzU0CiAgICAgIyBzdXBwb3J0LiAgV2l0aG91dCB0aGlzLCB0cmVhdG1lbnQgb2Ygc3Vibm9ybWFscyBkb2Vzbid0IGZvbGxvdwogICAgICMgdGhlIHN0YW5kYXJkLgotICAgIGNhc2UgJGFjX3N5c19tYWNoaW5lIGluCisgICAgY2FzZSAkaG9zdCBpbgogICAgICAgICAgYWxwaGEqKQogICAgICAgICAgICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKICAgICAgICAgICAgICAgICA7OwpAQCAtMTA4MSw3ICsxMjM2LDkgQEAKIAkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgogCSAgICAjCiAJICAgIGN1cl90YXJnZXQ9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgc2VkICdzL1woMTBcLltbMC05XV0qXCkuKi9cMS8nYAotCSAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldH0gJz4nIDEwLjI7IHRoZW4KKwkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yICYmIFwKKwkgICAgICAgdGVzdCAke2N1cl90YXJnZXR9ICc8JyAxMC42CisJICAgIHRoZW4KIAkJICAgIGN1cl90YXJnZXQ9MTAuMwogCQkgICAgaWYgdGVzdCAke2VuYWJsZV91bml2ZXJzYWxzZGt9OyB0aGVuCiAJCQkgICAgaWYgdGVzdCAiJHtVTklWRVJTQUxfQVJDSFN9IiA9ICJhbGwiOyB0aGVuCkBAIC0xMTIwLDkgKzEyNzcsNiBAQAogCSAgICBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScnCiAKIAkgICAgOzsKLQlPU0YqKQotCSAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCi0JICAgIDs7CiAgICAgZXNhYwogICAgIDs7CiAKQEAgLTExMzEsOSArMTI4NSw2IEBACiAgICAgT3BlblVOSVgqfFVuaXhXYXJlKikKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtSyBwZW50aXVtLGhvc3QsaW5saW5lLGxvb3BfdW5yb2xsLGFsbG9jYSAiCiAJOzsKLSAgICBPU0YqKQotCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1pZWVlIC1zdGQiCi0gICAgCTs7CiAgICAgU0NPX1NWKikKIAlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtYmVsZiAtS2k0ODYgLURTQ081IgogCTs7CkBAIC0xMzM0LDIxICsxNDg1LDQyIEBACiAKICMgY2hlY2tzIGZvciBoZWFkZXIgZmlsZXMKIEFDX0hFQURFUl9TVERDCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogQUNfQ0hFQ0tfSEVBREVSUyhhc20vdHlwZXMuaCBjb25pby5oIGN1cnNlcy5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKLWllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAoraWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBuY3Vyc2VzLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCi1zeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAotc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKLXN5cy9zeXNjYWxsLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAotc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCi1zeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCitwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKK3N5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXAorc3lzL2tlcm5fY29udHJvbC5oIHN5cy9sb2FkYXZnLmggc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCitzeXMvcGFyYW0uaCBzeXMvc2VsZWN0Lmggc3lzL3NlbmRmaWxlLmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggXAorc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAorc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCitsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAogYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaCkKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiBBQ19IRUFERVJfRElSRU5UCiBBQ19IRUFERVJfTUFKT1IKIAorIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KK0FDX0NIRUNLX0hFQURFUlMoW25ldC9pZi5oXSwgW10sIFtdLAorWyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIFNURENfSEVBREVSUworIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgaW5jbHVkZSA8c3RkZGVmLmg+CisjZWxzZQorIyBpZmRlZiBIQVZFX1NURExJQl9ICisjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyMgZW5kaWYKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorXSkKKworCiAjIE9uIFNvbGFyaXMsIHRlcm0uaCByZXF1aXJlcyBjdXJzZXMuaAogQUNfQ0hFQ0tfSEVBREVSUyh0ZXJtLmgsLCxbCiAjaWZkZWYgSEFWRV9DVVJTRVNfSApAQCAtMTM2Niw2ICsxNTM4LDEzIEBACiAjZW5kaWYKIF0pCiAKKyMgT24gTGludXgsIGNhbi5oIGFuZCBjYW4vcmF3LmggcmVxdWlyZSBzeXMvc29ja2V0LmgKK0FDX0NIRUNLX0hFQURFUlMobGludXgvY2FuLmggbGludXgvY2FuL3Jhdy5oLCwsWworI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCitdKQorCiAjIGNoZWNrcyBmb3IgdHlwZWRlZnMKIHdhc19pdF9kZWZpbmVkPW5vCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGNsb2NrX3QgaW4gdGltZS5oKQpAQCAtMTM3NCw3ICsxNTUzLDYgQEAKIF0pCiBBQ19NU0dfUkVTVUxUKCR3YXNfaXRfZGVmaW5lZCkKIAotIyBDaGVjayB3aGV0aGVyIHVzaW5nIG1ha2VkZXYgcmVxdWlyZXMgZGVmaW5pbmcgX09TRl9TT1VSQ0UKIEFDX01TR19DSEVDS0lORyhmb3IgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMTM4NywxOSArMTU2NSw2IEBACiBdXSwgW1sKICAgbWFrZWRldigwLCAwKSBdXSkKIF0sW2FjX2N2X2hhc19tYWtlZGV2PXllc10sW2FjX2N2X2hhc19tYWtlZGV2PW5vXSkKLWlmIHRlc3QgIiRhY19jdl9oYXNfbWFrZWRldiIgPSAibm8iOyB0aGVuCi0gICAgIyB3ZSBkaWRuJ3QgbGluaywgdHJ5IGlmIF9PU0ZfU09VUkNFIHdpbGwgYWxsb3cgdXMgdG8gbGluawotICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSNkZWZpbmUgX09TRl9TT1VSQ0UgMQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAgIF1dLAotICAgIFtbIG1ha2VkZXYoMCwgMCkgXV0pXSwKLSAgICBbYWNfY3ZfaGFzX21ha2VkZXY9eWVzXSwKLSAgICBbYWNfY3ZfaGFzX21ha2VkZXY9bm9dKQotICAgIGlmIHRlc3QgIiRhY19jdl9oYXNfbWFrZWRldiIgPSAieWVzIjsgdGhlbgotICAgICAgICBBQ19ERUZJTkUoX09TRl9TT1VSQ0UsIDEsIFtEZWZpbmUgX09TRl9TT1VSQ0UgdG8gZ2V0IHRoZSBtYWtlZGV2IG1hY3JvLl0pCi0gICAgZmkKLWZpCiBBQ19NU0dfUkVTVUxUKCRhY19jdl9oYXNfbWFrZWRldikKIGlmIHRlc3QgIiRhY19jdl9oYXNfbWFrZWRldiIgPSAieWVzIjsgdGhlbgogICAgIEFDX0RFRklORShIQVZFX01BS0VERVYsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgbWFrZWRldiBtYWNyby5dKQpAQCAtMTQ1OSw2ICsxNjI0LDggQEAKIEFDX1RZUEVfSU5UNjRfVAogQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LAogICBBQ19ERUZJTkUoSEFWRV9TU0laRV9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgc3NpemVfdF0pLCwpCitBQ19DSEVDS19UWVBFKF9fdWludDEyOF90LAorICBBQ19ERUZJTkUoSEFWRV9HQ0NfVUlOVDEyOF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3RdKSwsKQogCiAjIFNpemVzIG9mIHZhcmlvdXMgY29tbW9uIGJhc2ljIHR5cGVzCiAjIEFOU0kgQyByZXF1aXJlcyBzaXplb2YoY2hhcikgPT0gMSwgc28gbm8gbmVlZCB0byBjaGVjayBpdApAQCAtMTcxOSw3ICsxODg2LDYgQEAKIAkJZWxzZQogCQkJTERTSEFSRUQ9J2xkIC1iJwogCQlmaSA7OwotCU9TRiopIExEU0hBUkVEPSJsZCAtc2hhcmVkIC1leHBlY3RfdW5yZXNvbHZlZCBcIipcIiI7OwogCURhcndpbi8xLjMqKQogCQlMRFNIQVJFRD0nJChDQykgLWJ1bmRsZScKIAkJTERDWFhTSEFSRUQ9JyQoQ1hYKSAtYnVuZGxlJwpAQCAtMTk0OSw2ICsyMTE1LDcgQEAKIAogCiAjIGNoZWNrcyBmb3IgbGlicmFyaWVzCitBQ19DSEVDS19MSUIoc2VuZGZpbGUsIHNlbmRmaWxlKQogQUNfQ0hFQ0tfTElCKGRsLCBkbG9wZW4pCSMgRHluYW1pYyBsaW5raW5nIGZvciBTdW5PUy9Tb2xhcmlzIGFuZCBTWVNWCiBBQ19DSEVDS19MSUIoZGxkLCBzaGxfbG9hZCkJIyBEeW5hbWljIGxpbmtpbmcgZm9yIEhQLVVYCiAKQEAgLTIwMjIsNiArMjE4OSwxNSBAQAogCiBBQ19NU0dfUkVTVUxUKCR3aXRoX3N5c3RlbV9mZmkpCiAKKyMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYm1wZGVjIGxpYnJhcnkKK0FDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXN5c3RlbS1saWJtcGRlYykKK0FDX0FSR19XSVRIKHN5c3RlbV9saWJtcGRlYywKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWxpYm1wZGVjXSwgW2J1aWxkIF9kZWNpbWFsIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgbGlibXBkZWMgbGlicmFyeV0pLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICBbd2l0aF9zeXN0ZW1fbGlibXBkZWM9Im5vIl0pCisKK0FDX01TR19SRVNVTFQoJHdpdGhfc3lzdGVtX2xpYm1wZGVjKQorCiAjIENoZWNrIGZvciBzdXBwb3J0IGZvciBsb2FkYWJsZSBzcWxpdGUgZXh0ZW5zaW9ucwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucykKIEFDX0FSR19FTkFCTEUobG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMsCkBAIC0yMDczLDIxICsyMjQ5LDEwIEBACiBBQ19TVUJTVChVU0VfVEhSRUFEX01PRFVMRSkKIFVTRV9USFJFQURfTU9EVUxFPSIiCiAKLUFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWRlYy10aHJlYWRzKQogQUNfU1VCU1QoTERMQVNUKQotQUNfQVJHX1dJVEgoZGVjLXRocmVhZHMsCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLWRlYy10aHJlYWRzXSwgW3VzZSBERUMgQWxwaGEvT1NGMSB0aHJlYWQtc2FmZSBsaWJyYXJpZXNdKSwKLVsKLUFDX01TR19SRVNVTFQoJHdpdGh2YWwpCi1MRExBU1Q9LXRocmVhZHMKLWlmIHRlc3QgIiR7d2l0aF90aHJlYWQrc2V0fSIgIT0gc2V0OyB0aGVuCi0gICB3aXRoX3RocmVhZD0iJHdpdGh2YWwiOwotZmldLAotW0FDX01TR19SRVNVTFQobm8pXSkKIAogIyBUZW1wbGF0ZXMgZm9yIHRoaW5ncyBBQ19ERUZJTkVkIG1vcmUgdGhhbiBvbmNlLgogIyBGb3IgYSBzaW5nbGUgQUNfREVGSU5FLCBubyB0ZW1wbGF0ZSBpcyBuZWVkZWQuCi1BSF9URU1QTEFURShDX1RIUkVBRFMsW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlXSkKIEFIX1RFTVBMQVRFKF9SRUVOVFJBTlQsCiAgIFtEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zXSkKIEFIX1RFTVBMQVRFKFdJVEhfVEhSRUFELApAQCAtMjE2OSwxNyArMjMzNCw2IEBACiAgICAgQUNfTVNHX1JFU1VMVCgkdW5pc3RkX2RlZmluZXNfcHRocmVhZHMpCiAKICAgICBBQ19ERUZJTkUoX1JFRU5UUkFOVCkKLSAgICBBQ19DSEVDS19IRUFERVIoY3RocmVhZHMuaCwgW0FDX0RFRklORShXSVRIX1RIUkVBRCkKLSAgICBBQ19ERUZJTkUoQ19USFJFQURTKQotICAgIEFDX0RFRklORShIVVJEX0NfVEhSRUFEUywgMSwKLSAgICBbRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyBkaXJlY3RseSB1bmRlciAvaW5jbHVkZV0pCi0gICAgTElCUz0iJExJQlMgLWx0aHJlYWRzIgotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIl0sWwotICAgIEFDX0NIRUNLX0hFQURFUihtYWNoL2N0aHJlYWRzLmgsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCi0gICAgQUNfREVGSU5FKENfVEhSRUFEUykKLSAgICBBQ19ERUZJTkUoTUFDSF9DX1RIUkVBRFMsIDEsCi0gICAgW0RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgdW5kZXIgbWFjaCAvXSkKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKICAgICAjIEp1c3QgbG9va2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gbGlicHRocmVhZCBpcyBub3QgZW5vdWdoOgogICAgICMgb24gSFAvVVgsIHB0aHJlYWQuaCByZW5hbWVzIHB0aHJlYWRfY3JlYXRlIHRvIGEgZGlmZmVyZW50IHN5bWJvbCBuYW1lLgogICAgICMgU28gd2UgcmVhbGx5IGhhdmUgdG8gaW5jbHVkZSBwdGhyZWFkLmgsIGFuZCB0aGVuIGxpbmsuCkBAIC0yMjE1LDcgKzIzNjksNyBAQAogICAgIExJQlM9IiRMSUJTIC1sY21hIgogICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIl0sWwogICAgIFVTRV9USFJFQURfTU9EVUxFPSIjIl0pCi0gICAgXSldKV0pXSldKV0pXSkKKyAgICBdKV0pXSldKV0pCiAKICAgICBBQ19DSEVDS19MSUIobXBjLCB1c2NvbmZpZywgW0FDX0RFRklORShXSVRIX1RIUkVBRCkKICAgICBMSUJTPSIkTElCUyAtbG1wYyIKQEAgLTIyMjgsMTUgKzIzODIsNiBAQAogICAgICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iCiAgICAgICBVU0VfVEhSRUFEX01PRFVMRT0iIl0pCiAgICAgZmkKLQotICAgIGlmIHRlc3QgIiRVU0VfVEhSRUFEX01PRFVMRSIgIT0gIiMiCi0gICAgdGhlbgotICAgICAgICAjIElmIHRoZSBhYm92ZSBjaGVja3MgZGlkbid0IGRpc2FibGUgdGhyZWFkcywgKGF0IGxlYXN0KSBPU0YxCi0gICAgICAgICMgbmVlZHMgdGhpcyAnLXRocmVhZHMnIGFyZ3VtZW50IGR1cmluZyBsaW5raW5nLgotICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0gICAgICAgIE9TRjEpIExETEFTVD0tdGhyZWFkczs7Ci0gICAgICAgIGVzYWMKLSAgICBmaQogZmkKIAogaWYgdGVzdCAiJHBvc2l4X3RocmVhZHMiID0gInllcyI7IHRoZW4KQEAgLTI1MTAsMTIgKzI2NTUsMTIgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAgICAgQUNfREVGSU5FKFdJVEhfUFlNQUxMT0MsIDEsIAogICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gUHl0aG9uLXNwZWNpZmljIG1hbGxvY3NdKQorICAgIEFCSUZMQUdTPSIke0FCSUZMQUdTfW0iCiBmaQogQUNfTVNHX1JFU1VMVCgkd2l0aF9weW1hbGxvYykKIApAQCAtMjU4NCwyMyArMjcyOSwzNSBAQAogZWxzZQogCU1BQ0hERVBfT0JKUz0iJE1BQ0hERVBfT0JKUyAkZXh0cmFfbWFjaGRlcF9vYmpzIgogZmkKLUFDX01TR19SRVNVTFQoTUFDSERFUF9PQkpTKQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbbm9uZV0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoWyRNQUNIREVQX09CSlNdKQorZmkKIAogIyBjaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zCiBBQ19DSEVDS19GVU5DUyhhbGFybSBhY2NlcHQ0IHNldGl0aW1lciBnZXRpdGltZXIgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgY2hvd24gXAotIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmY2htb2QgZmNob3duIGZvcmsgZnBhdGhjb25mIGZ0aW1lIGZ0cnVuY2F0ZSBcCi0gZ2FpX3N0cmVycm9yIGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKKyBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmFjY2Vzc2F0IGZjaG1vZCBmY2htb2RhdCBmY2hvd24gZmNob3duYXQgXAorIGZleGVjdmUgZmRvcGVuZGlyIGZvcmsgZnBhdGhjb25mIGZzdGF0YXQgZnRpbWUgZnRydW5jYXRlIGZ1dGltZXNhdCBcCisgZnV0aW1lbnMgZnV0aW1lcyBnYWlfc3RyZXJyb3IgXAorIGdldGdyb3VwbGlzdCBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCiAgZ2V0cHJpb3JpdHkgZ2V0cmVzdWlkIGdldHJlc2dpZCBnZXRwd2VudCBnZXRzcG5hbSBnZXRzcGVudCBnZXRzaWQgZ2V0d2QgXAotIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsc3RhdCBtYnJ0b3djIG1rZmlmbyBta25vZCBta3RpbWUgXAotIG1yZW1hcCBuaWNlIHBhdGhjb25mIHBhdXNlIHBsb2NrIHBvbGwgcHRocmVhZF9pbml0IFwKLSBwdXRlbnYgcmVhZGxpbmsgcmVhbHBhdGggXAotIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNldGVnaWQgc2V0ZXVpZCBcCi0gc2V0Z2lkIFwKLSBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHVpZCBzZXR2YnVmIFwKLSBzaWdhY3Rpb24gc2lnaW50ZXJydXB0IHNpZ3JlbHNlIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgXAorIGlmX25hbWVpbmRleCBcCisgaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxvY2tmIGxpbmthdCBsc3RhdCBsdXRpbWVzIG1tYXAgXAorIG1lbXJjaHIgbWJydG93YyBta2RpcmF0IG1rZmlmbyBcCisgbWtmaWZvYXQgbWtub2QgbWtub2RhdCBta3RpbWUgbXJlbWFwIG5pY2Ugb3BlbmF0IHBhdGhjb25mIHBhdXNlIHBpcGUyIHBsb2NrIHBvbGwgXAorIHBvc2l4X2ZhbGxvY2F0ZSBwb3NpeF9mYWR2aXNlIHByZWFkIFwKKyBwdGhyZWFkX2luaXQgcHRocmVhZF9raWxsIHB1dGVudiBwd3JpdGUgcmVhZGxpbmsgcmVhZGxpbmthdCByZWFkdiByZWFscGF0aCByZW5hbWVhdCBcCisgc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2VuZGZpbGUgc2V0ZWdpZCBzZXRldWlkIFwKKyBzZXRnaWQgc2V0aG9zdG5hbWUgXAorIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0cHJpb3JpdHkgc2V0dWlkIHNldHZidWYgXAorIHNjaGVkX2dldF9wcmlvcml0eV9tYXggc2NoZWRfc2V0YWZmaW5pdHkgc2NoZWRfc2V0c2NoZWR1bGVyIHNjaGVkX3NldHBhcmFtIFwKKyBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwgXAorIHNpZ2FjdGlvbiBzaWdhbHRzdGFjayBzaWdpbnRlcnJ1cHQgc2lncGVuZGluZyBzaWdyZWxzZSBcCisgc2lndGltZWR3YWl0IHNpZ3dhaXQgc2lnd2FpdGluZm8gc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBzeW1saW5rYXQgc3luYyBcCiAgc3lzY29uZiB0Y2dldHBncnAgdGNzZXRwZ3JwIHRlbXBuYW0gdGltZWdtIHRpbWVzIHRtcGZpbGUgdG1wbmFtIHRtcG5hbV9yIFwKLSB0cnVuY2F0ZSB1bmFtZSB1bnNldGVudiB1dGltZXMgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCi0gd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIF9nZXRwdHkpCisgdHJ1bmNhdGUgdW5hbWUgdW5saW5rYXQgdW5zZXRlbnYgdXRpbWVuc2F0IHV0aW1lcyB3YWl0aWQgd2FpdHBpZCB3YWl0MyB3YWl0NCBcCisgd2NzY29sbCB3Y3NmdGltZSB3Y3N4ZnJtIHdyaXRldiBfZ2V0cHR5KQogCiBBQ19DSEVDS19ERUNMKGRpcmZkLAogICAgIEFDX0RFRklORShIQVZFX0RJUkZELCAxLApAQCAtMjY1Miw2ICsyODA5LDEyIEBACiAgICBBQ19NU0dfUkVTVUxUKHllcyldLAogICBbQUNfTVNHX1JFU1VMVChubykKIF0pCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGVwb2xsX2NyZWF0ZTEpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPHN5cy9lcG9sbC5oPl1dLCBbW3ZvaWQgKng9ZXBvbGxfY3JlYXRlMV1dKV0sCisgIFtBQ19ERUZJTkUoSEFWRV9FUE9MTF9DUkVBVEUxLCAxLCBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdlcG9sbF9jcmVhdGUxJyBmdW5jdGlvbi4pCisgICBBQ19NU0dfUkVTVUxUKHllcyldLAorICBbQUNfTVNHX1JFU1VMVChubykKK10pCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGtxdWV1ZSkKIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTI4ODIsNiArMzA0NSwyMCBAQAogICAgIF0pCiApCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEpCisgICAgICAgIEFDX0RFRklORShUSU1FTU9EVUxFX0xJQiwgW3J0XSwKKyAgICAgICAgICAgICAgICAgIFtMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKV0pCisgICAgXSkKK10pCisKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHJlcywgW10sIFsKKyAgICBBQ19DSEVDS19MSUIocnQsIGNsb2NrX2dldHJlcywgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRSRVMsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzAwNiwxMiArMzE4MywxNyBAQAogXV1dKV0sCiBbYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm9dLAogW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllc10sCi1bYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzXSkpCitbCitpZiB0ZXN0ICIke2VuYWJsZV9pcHY2K3NldH0iID0gc2V0OyB0aGVuCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPSJubyAtLSBjb25maWd1cmVkIHdpdGggLS0oZW58ZGlzKWFibGUtaXB2NiIKK2Vsc2UKKyAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzCitmaV0pKQogZmkKIAogQUNfTVNHX1JFU1VMVCgkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8pCiAKLWlmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyAtbyAiJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA9IHllcworaWYgdGVzdCAkaGF2ZV9nZXRhZGRyaW5mbyA9IG5vIHx8IHRlc3QgIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKIHRoZW4KIAlpZiB0ZXN0ICRpcHY2ID0geWVzCiAJdGhlbgpAQCAtMzMwMyw2ICszNDg1LDIxIEBACiBmaV0sCiBbQUNfTVNHX1JFU1VMVChkZWZhdWx0IExJQkM9IiRMSUJDIildKQogCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICogQ2hlY2sgZm9yIGdjYyB4NjQgaW5saW5lIGFzc2VtYmxlciAqCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0FDX01TR19DSEVDS0lORyhmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIm1vdnEgJXJjeCwgJXJheCIpOworXV0pXSxbaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9eWVzXSxbaGF2ZV9nY2NfYXNtX2Zvcl94NjQ9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9nY2NfYXNtX2Zvcl94NjQpCitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCit0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0NDX0FTTV9GT1JfWDY0LCAxLAorICAgIFtEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXJdKQorZmkKKwogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogIyAqIENoZWNrIGZvciB2YXJpb3VzIHByb3BlcnRpZXMgb2YgZmxvYXRpbmcgcG9pbnQgKgogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMzQ1MSw3ICszNjQ4LDcgQEAKIExJQlM9IiRMSUJTICRMSUJNIgogCiBBQ19DSEVDS19GVU5DUyhbYWNvc2ggYXNpbmggYXRhbmggY29weXNpZ24gZXJmIGVyZmMgZXhwbTEgZmluaXRlIGdhbW1hXSkKLUFDX0NIRUNLX0ZVTkNTKFtoeXBvdCBsZ2FtbWEgbG9nMXAgcm91bmQgdGdhbW1hXSkKK0FDX0NIRUNLX0ZVTkNTKFtoeXBvdCBsZ2FtbWEgbG9nMXAgbG9nMiByb3VuZCB0Z2FtbWFdKQogQUNfQ0hFQ0tfREVDTFMoW2lzaW5mLCBpc25hbiwgaXNmaW5pdGVdLCBbXSwgW10sIFtbI2luY2x1ZGUgPG1hdGguaD5dXSkKIAogIyBPbiBGcmVlQlNEIDYuMiwgaXQgYXBwZWFycyB0aGF0IHRhbmgoLTAuKSByZXR1cm5zIDAuIGluc3RlYWQgb2YKQEAgLTM2NDksNTcgKzM4NDYsMTkgQEAKICAgQUNfTVNHX1JFU1VMVCgkYWNfY3Zfd2NoYXJfdF9zaWduZWQpCiBmaQogCi1BQ19NU0dfQ0hFQ0tJTkcod2hhdCB0eXBlIHRvIHVzZSBmb3Igc3RyKQotQUNfQVJHX1dJVEgod2lkZS11bmljb2RlLCAKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtd2lkZS11bmljb2RlXSwgW1VzZSA0LWJ5dGUgVW5pY29kZSBjaGFyYWN0ZXJzIChkZWZhdWx0IGlzIDIgYnl0ZXMpXSksCi1bCi1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4gdW5pY29kZV9zaXplPSI0IgotZWxzZSB1bmljb2RlX3NpemU9IjIiCi1maQotXSwKLVsKLWNhc2UgIiRoYXZlX3VjczRfdGNsIiBpbgotICB5ZXMpIHVuaWNvZGVfc2l6ZT0iNCI7OwotICAqKSAgIHVuaWNvZGVfc2l6ZT0iMiIgOzsKLWVzYWMKLV0pCi0KLUFIX1RFTVBMQVRFKFB5X1VOSUNPREVfU0laRSwKLSAgW0RlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLl0pCi1jYXNlICIkdW5pY29kZV9zaXplIiBpbgotICA0KQotICAgICBBQ19ERUZJTkUoUHlfVU5JQ09ERV9TSVpFLCA0KQotICAgICBBQklGTEFHUz0iJHtBQklGTEFHU311IgotICAgICA7OwotICAqKSBBQ19ERUZJTkUoUHlfVU5JQ09ERV9TSVpFLCAyKSA7OwotZXNhYwotCi1BSF9URU1QTEFURShQWV9VTklDT0RFX1RZUEUsCi0gIFtEZWZpbmUgYXMgdGhlIGludGVncmFsIHR5cGUgdXNlZCBmb3IgVW5pY29kZSByZXByZXNlbnRhdGlvbi5dKQotCiAjIHdjaGFyX3QgaXMgb25seSB1c2FibGUgaWYgaXQgbWFwcyB0byBhbiB1bnNpZ25lZCB0eXBlCi1pZiB0ZXN0ICIkdW5pY29kZV9zaXplIiA9ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIFwKK2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgLWdlIDIgXAogICAgICAgICAgIC1hICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID0gIm5vIgogdGhlbgotICBQWV9VTklDT0RFX1RZUEU9IndjaGFyX3QiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9InllcyIKICAgQUNfREVGSU5FKEhBVkVfVVNBQkxFX1dDSEFSX1QsIDEsCiAgIFtEZWZpbmUgaWYgeW91IGhhdmUgYSB1c2VhYmxlIHdjaGFyX3QgdHlwZSBkZWZpbmVkIGluIHdjaGFyLmg7IHVzZWFibGUKICAgIG1lYW5zIHdjaGFyX3QgbXVzdCBiZSBhbiB1bnNpZ25lZCB0eXBlIHdpdGggYXQgbGVhc3QgMTYgYml0cy4gKHNlZQogICAgSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgpLl0pCi0gIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsd2NoYXJfdCkKLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBzaG9ydCIKLSAgICAgQUNfREVGSU5FKFBZX1VOSUNPREVfVFlQRSx1bnNpZ25lZCBzaG9ydCkKLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiA9ICIkdW5pY29kZV9zaXplIgotdGhlbgotICAgICBQWV9VTklDT0RFX1RZUEU9InVuc2lnbmVkIGxvbmciCi0gICAgIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsdW5zaWduZWQgbG9uZykKIGVsc2UKLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJubyB0eXBlIGZvdW5kIgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJubyB1c2FibGUgd2NoYXJfdCBmb3VuZCIKIGZpCi1BQ19NU0dfUkVTVUxUKCRQWV9VTklDT0RFX1RZUEUpCitBQ19NU0dfUkVTVUxUKCRIQVZFX1VTQUJMRV9XQ0hBUl9UKQogCiAjIGNoZWNrIGZvciBlbmRpYW5uZXNzCiBBQ19DX0JJR0VORElBTgpAQCAtMzgwNiw3ICszOTY1LDcgQEAKICMgd2l0aCBzZXR1cC5weS4KIHB5X2N2X2xpYl9yZWFkbGluZT1ubwogQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayByZWFkbGluZSBsaWJzXSkKLWZvciBweV9saWJ0ZXJtY2FwIGluICIiIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCitmb3IgcHlfbGlidGVybWNhcCBpbiAiIiB0aW5mbyBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbwogICBpZiB0ZXN0IC16ICIkcHlfbGlidGVybWNhcCI7IHRoZW4KICAgICBSRUFETElORV9MSUJTPSItbHJlYWRsaW5lIgogICBlbHNlCkBAIC00MDQ5LDYgKzQyMDgsOCBAQAogICBbRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW1lbnNlY10pCiBmaQogCithY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCitDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9pbmNsdWRlL25jdXJzZXN3IgogIyBPbiBIUC9VWCAxMS4wLCBtdndkZWxjaCBpcyBhIGJsb2NrIHdpdGggYSByZXR1cm4gc3RhdGVtZW50CiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uKQogQUNfQ0FDSEVfVkFMKGFjX2N2X212d2RlbGNoX2lzX2V4cHJlc3Npb24sCkBAIC00MTAzLDI3ICs0MjY0LDM0IEBACiAgICBBQ19NU0dfUkVTVUxUKHllcyldLAogICBbQUNfTVNHX1JFU1VMVChubyldCiApCisjIGxhc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjaworQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKIAotQUNfTVNHX0NIRUNLSU5HKGZvciAvZGV2L3B0bXgpCitBQ19NU0dfTk9USUNFKFtjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzXSkKIAotaWYgdGVzdCAtciAvZGV2L3B0bXgKLXRoZW4KLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gIEFDX0RFRklORShIQVZFX0RFVl9QVE1YLCAxLAotICBbRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdG14Ll0pCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCitkbmwgTk9URTogSW5mb3JtIHVzZXIgaG93IHRvIHByb2NlZWQgd2l0aCBmaWxlcyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KK2lmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRteCtzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAvZGV2L3B0bXhdKQorICAgIEFDX01TR19SRVNVTFQoW25vdCBzZXRdKQorICAgIEFDX01TR19FUlJPUihbc2V0IGFjX2N2X2ZpbGVfX2Rldl9wdG14IHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmddKQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgL2Rldi9wdGNdKQorICAgIEFDX01TR19SRVNVTFQoW25vdCBzZXRdKQorICAgIEFDX01TR19FUlJPUihbc2V0IGFjX2N2X2ZpbGVfX2Rldl9wdGMgdG8geWVzL25vIGluIHlvdXIgQ09ORklHX1NJVEUgZmlsZSB3aGVuIGNyb3NzIGNvbXBpbGluZ10pCisgIGZpCiBmaQogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC9kZXYvcHRjKQotCi1pZiB0ZXN0IC1yIC9kZXYvcHRjCi10aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQorQUNfQ0hFQ0tfRklMRSgvZGV2L3B0bXgsIFtdLCBbXSkKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID0geHllczsgdGhlbgorICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRNWCwgMSwKKyAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0bXggZGV2aWNlIGZpbGUuXSkKK2ZpCitBQ19DSEVDS19GSUxFKC9kZXYvcHRjLCBbXSwgW10pCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRDLCAxLAotICBbRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdGMuXSkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKKyAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS5dKQogZmkKIAogaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwpAQCAtNDE2Myw3ICs0MzMxLDIzIEBACiAgIF1dXSldLAogICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCiAgIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSkKKyAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorICAgICAgICAjaW5jbHVkZSA8c3RkZGVmLmg+CisgICAgICBdXSwgW1sKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisgICAgICBdXSldLAorICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcworICAgICkKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaV0pCiAgICkKICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0KQogZmkKQEAgLTQyNTgsMzAgKzQ0NDIsNiBAQAogICAgd2lkZSBjaGFycyB0aGF0IHdvdWxkIGJlIGNvbnZlcnRlZC5dKQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zKQotQUNfQ0FDSEVfVkFMKGFjX2N2X2NvbXB1dGVkX2dvdG9zLAotQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07Ci0gICAgZ290byBMQUJFTDI7Ci1MQUJFTDE6Ci0gICAgcmV0dXJuIDA7Ci1MQUJFTDI6Ci0gICAgZ290byAqdGFyZ2V0c1swXTsKLSAgICByZXR1cm4gMTsKLX0KLV1dXSldLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPXllc10sCi1bYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm9dLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSkpCi1BQ19NU0dfUkVTVUxUKCRhY19jdl9jb21wdXRlZF9nb3RvcykKLWlmIHRlc3QgIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgPSB5ZXMKLXRoZW4KLSAgQUNfREVGSU5FKEhBVkVfQ09NUFVURURfR09UT1MsIDEsCi0gIFtEZWZpbmUgaWYgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuXSkKLWZpCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MpCiBBQ19BUkdfV0lUSChjb21wdXRlZC1nb3RvcywKQEAgLTQzMDMsMTggKzQ0NjMsMzkgQEAKIF0sCiBbQUNfTVNHX1JFU1VMVChubyB2YWx1ZSBzcGVjaWZpZWQpXSkKIAorQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zKQorQUNfQ0FDSEVfVkFMKGFjX2N2X2NvbXB1dGVkX2dvdG9zLAorQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1tbCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07CisgICAgZ290byBMQUJFTDI7CitMQUJFTDE6CisgICAgcmV0dXJuIDA7CitMQUJFTDI6CisgICAgZ290byAqdGFyZ2V0c1swXTsKKyAgICByZXR1cm4gMTsKK30KK11dXSldLAorW2FjX2N2X2NvbXB1dGVkX2dvdG9zPXllc10sCitbYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm9dLAorW2lmIHRlc3QgIiR7d2l0aF9jb21wdXRlZF9nb3RvcytzZXR9IiA9IHNldDsgdGhlbgorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9IiR3aXRoX2NvbXB1dGVkX2dvdG9zIC0tIGNvbmZpZ3VyZWQgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MiCisgZWxzZQorICAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KKyBmaV0pKQorQUNfTVNHX1JFU1VMVCgkYWNfY3ZfY29tcHV0ZWRfZ290b3MpCitjYXNlICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiIGluIHllcyopCisgIEFDX0RFRklORShIQVZFX0NPTVBVVEVEX0dPVE9TLCAxLAorICBbRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLl0pCitlc2FjCisKIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KIEFJWCopICAgCiAgIEFDX0RFRklORShIQVZFX0JST0tFTl9QSVBFX0JVRiwgMSwgW0RlZmluZSBpZiB0aGUgc3lzdGVtIHJlcG9ydHMgYW4gaW52YWxpZCBQSVBFX0JVRiB2YWx1ZS5dKSA7OwogZXNhYwogCiAKLWNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgT1NGKikgQUNfTVNHX0VSUk9SKE9TRiogc3lzdGVtcyBhcmUgZGVwcmVjYXRlZCB1bmxlc3Mgc29tZWJvZHkgdm9sdW50ZWVycy4gQ2hlY2sgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTg2MDYpIDs7Ci1lc2FjCi0KLUFDX0NIRUNLX0ZVTkMocGlwZTIsIEFDX0RFRklORShIQVZFX1BJUEUyLCAxLCBbRGVmaW5lIGlmIHRoZSBPUyBzdXBwb3J0cyBwaXBlMigpXSksICkKLQogQUNfU1VCU1QoVEhSRUFESEVBREVSUykKIAogZm9yIGggaW4gYChjZCAkc3JjZGlyO2VjaG8gUHl0aG9uL3RocmVhZF8qLmgpYApAQCAtNDMzMiw2ICs0NTEzLDg5IEBACiBkb25lCiBBQ19NU0dfUkVTVUxUKGRvbmUpCiAKKyMgQXZhaWxhYmlsaXR5IG9mIC1PMjoKK0FDX01TR19DSEVDS0lORyhmb3IgLU8yKQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIiCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbCitdXSldLFtoYXZlX08yPXllc10sW2hhdmVfTzI9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9PMikKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKKworIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorQUNfTVNHX0NIRUNLSU5HKGZvciBnbGliYyBfRk9SVElGWV9TT1VSQ0UvbWVtbW92ZSBidWcpCitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiAtRF9GT1JUSUZZX1NPVVJDRT0yIgoraWYgdGVzdCAiJGhhdmVfTzIiID0gbm87IHRoZW4KKyAgICBDRkxBR1M9IiIKK2ZpCitBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+Cit2b2lkIGZvbyh2b2lkICpwLCB2b2lkICpxKSB7IG1lbW1vdmUocCwgcSwgMTkpOyB9CitpbnQgbWFpbigpIHsKKyAgY2hhciBhWzMyXSA9ICIxMjM0NTY3ODkwMDAwMDAwMDAiOworICBmb28oJmFbOV0sIGEpOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICBmb28oYSwgJmFbOV0pOworICBpZiAoc3RyY21wKGEsICIxMjM0NTY3ODkwMDAwMDAwMDAiKSAhPSAwKQorICAgIHJldHVybiAxOworICByZXR1cm4gMDsKK30KK11dKV0sCitbaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz1ub10sCitbaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz15ZXNdLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9dW5kZWZpbmVkXSkKK0NGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWcpCitpZiB0ZXN0ICIkaGF2ZV9nbGliY19tZW1tb3ZlX2J1ZyIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HTElCQ19NRU1NT1ZFX0JVRywgMSwKKyAgICBbRGVmaW5lIGlmIGdsaWJjIGhhcyBpbmNvcnJlY3QgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzCisgICAgIGZvciBtZW1tb3ZlIGFuZCBiY29weS5dKQorZmkKKworaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgorICAgICMgU29tZSB2ZXJzaW9ucyBvZiBnY2MgbWlzY29tcGlsZSBpbmxpbmUgYXNtOgorICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICMgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDEwLTExL21zZzAwMzY2Lmh0bWwKKyAgICBjYXNlICRDQyBpbgorICAgICAgICAqZ2NjKikKKyAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1ZykKKyAgICAgICAgICAgIHNhdmVkX2NmbGFncz0iJENGTEFHUyIKKyAgICAgICAgICAgIENGTEFHUz0iLU8yIgorICAgICAgICAgICAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgaW50CisgICAgICAgICAgICBmb28oaW50ICpwKSB7CisgICAgICAgICAgICAgIGludCByOworICAgICAgICAgICAgICBhc20gKCAibW92bCBcJDYsICglMSlcblx0IgorICAgICAgICAgICAgICAgICAgICAieG9ybCAlMCwgJTBcblx0IgorICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKHIpIDogInIiIChwKSA6ICJtZW1vcnkiCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1haW4oKSB7CisgICAgICAgICAgICAgIGludCBwID0gODsKKyAgICAgICAgICAgICAgaWYgKChmb28oJnApID8gOiBwKSAhPSA2KQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICBbaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9bm9dLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXllc10sCisgICAgICAgICAgICBbaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9dW5kZWZpbmVkXSkKKyAgICAgICAgICAgIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnKQorICAgICAgICAgICAgaWYgdGVzdCAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmluZSBpZiBnY2MgaGFzIHRoZSBpcGEtcHVyZS1jb25zdCBidWcuXSkKKyAgICAgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYworZmkKKwogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IGNhOGNjYjYuLjNjYTNhNGYgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsOSArMTIsNiBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgTWFjaCBjdGhyZWFkcyBwYWNrYWdlICovCi0jdW5kZWYgQ19USFJFQURTCi0KIC8qIERlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQgaW4gQVJNCiAgICBtaXhlZC1lbmRpYW4gb3JkZXIgKGJ5dGUgb3JkZXIgNDU2NzAxMjMpICovCiAjdW5kZWYgRE9VQkxFX0lTX0FSTV9NSVhFRF9FTkRJQU5fSUVFRTc1NApAQCAtMTE2LDYgKzExMywxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9jaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHJlcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19HRVRSRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXR0aW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKwogLyogRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLiAqLwogI3VuZGVmIEhBVkVfQ09NUFVURURfR09UT1MKIApAQCAtMTY1LDEwICsxNjgsMTAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZXZpY2UgbWFjcm9zLiAqLwogI3VuZGVmIEhBVkVfREVWSUNFX01BQ1JPUwogCi0vKiBEZWZpbmUgaWYgd2UgaGF2ZSAvZGV2L3B0Yy4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RFVl9QVEMKIAotLyogRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdG14LiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIC9kZXYvcHRteCBkZXZpY2UgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RFVl9QVE1YCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwpAQCAtMTk2LDYgKzE5OSw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdlcG9sbCcgZnVuY3Rpb25zLiAqLwogI3VuZGVmIEhBVkVfRVBPTEwKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGxfY3JlYXRlMScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9FUE9MTF9DUkVBVEUxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXJmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0VSRgogCkBAIC0yMTEsMjEgKzIxNywzNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBleHBtMScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FWFBNMQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZhY2Nlc3NhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQUNDRVNTQVQKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmNoZGlyJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZDSERJUgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG1vZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hNT0QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2htb2RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQ0hNT0RBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZjaG93bicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hPV04KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2hvd25hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GQ0hPV05BVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfRkNOVExfSAogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdmZGF0YXN5bmMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkRBVEFTWU5DCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmRvcGVuZGlyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZET1BFTkRJUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZleGVjdmUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkVYRUNWRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZpbml0ZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GSU5JVEUKIApAQCAtMjQ3LDYgKzI2OCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZzZWVrbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GU0VFS08KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdGF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZTVEFUQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdHZmcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GU1RBVFZGUwogCkBAIC0yNjUsMTYgKzI4OSwzMSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdHJ1bmNhdGUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlRSVU5DQVRFCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lbnMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRlVUSU1FTlMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRlVUSU1FU0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2FpX3N0cmVycm9yJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBSV9TVFJFUlJPUgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhbW1hJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dBTU1BCiAKKy8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlciAqLworI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfWDY0CisKIC8qIERlZmluZSBpZiB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IHg4NyBjb250cm9sIHdvcmQKICAgICovCiAjdW5kZWYgSEFWRV9HQ0NfQVNNX0ZPUl9YODcKIAorLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgX191aW50MTI4X3QgKi8KKyN1bmRlZiBIQVZFX0dDQ19VSU5UMTI4X1QKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRhZGRyaW5mbyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEFERFJJTkZPCiAKQEAgLTI4NCw2ICszMjMsOSBAQAogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgZmxvY2tmaWxlKCksIGdldGNfdW5sb2NrZWQoKSwgYW5kIGZ1bmxvY2tmaWxlKCkgKi8KICN1bmRlZiBIQVZFX0dFVENfVU5MT0NLRUQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRncm91cGxpc3QnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JvdXBzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEdST1VQUwogCkBAIC0zNTYsNiArMzk4LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHdkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFdECiAKKy8qIERlZmluZSBpZiBnbGliYyBoYXMgaW5jb3JyZWN0IF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycyBmb3IgbWVtbW92ZSBhbmQKKyAgIGJjb3B5LiAqLworI3VuZGVmIEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxncnAuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9HUlBfSAogCkBAIC0zNjgsNiArNDE0LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aWVlZWZwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSUVFRUZQX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpZl9uYW1laW5kZXgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSUZfTkFNRUlOREVYCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2luZXRfYXRvbicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9JTkVUX0FUT04KIApAQCAtMzgzLDYgKzQzMiw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlvLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU9fSAogCisvKiBEZWZpbmUgaWYgZ2NjIGhhcyB0aGUgaXBhLXB1cmUtY29uc3QgYnVnLiAqLworI3VuZGVmIEhBVkVfSVBBX1BVUkVfQ09OU1RfQlVHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga2lsbCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LSUxMCiAKQEAgLTQzMSwyMSArNDgzLDM5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlc29sdicgbGlicmFyeSAoLWxyZXNvbHYpLiAqLwogI3VuZGVmIEhBVkVfTElCUkVTT0xWCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGxpYnJhcnkgKC1sc2VuZGZpbGUpLiAqLworI3VuZGVmIEhBVkVfTElCU0VOREZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaWJ1dGlsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElCVVRJTF9ICiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2xpbmsnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTElOSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MSU5LQVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2Nhbi9yYXcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9uZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElOVVhfTkVUTElOS19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGlwYy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX1RJUENfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvY2tmJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xPQ0tGCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9nMXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTE9HMVAKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2cyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xPRzIKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBkb3VibGUuICovCiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRQogCkBAIC00NTUsNiArNTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xVVElNRVMKKwogLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uICovCiAjdW5kZWYgSEFWRV9NQUtFREVWCiAKQEAgLTQ2NywxNSArNTQwLDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX01FTU9SWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtcmNocicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NRU1SQ0hSCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtkaXJhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0RJUkFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtmaWZvJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LRklGTwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmb2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LRklGT0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtOT0QKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta25vZGF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX01LTk9EQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta3RpbWUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NTUFQCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbXJlbWFwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01SRU1BUAogCkBAIC00ODgsOSArNTc2LDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldHBhY2tldC9wYWNrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvaWYuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ORVRfSUZfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5pY2UnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTklDRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9PUEVOQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVucHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX09QRU5QVFkKIApAQCAtNTAzLDcgKzU5Nyw3IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdXNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BBVVNFCiAKLS8qIERlZmluZSBpZiB0aGUgT1Mgc3VwcG9ydHMgcGlwZTIoKSAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwaXBlMicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QSVBFMgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBsb2NrJyBmdW5jdGlvbi4gKi8KQEAgLTUxNSw2ICs2MDksMTUgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cG9sbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BPTExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvc2l4X2ZhZHZpc2UnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFEVklTRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvc2l4X2ZhbGxvY2F0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QT1NJWF9GQUxMT0NBVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwcmVhZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QUkVBRAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nlc3MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QUk9DRVNTX0gKIApAQCAtNTMwLDYgKzYzMyw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfaW5pdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QVEhSRUFEX0lOSVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkX2tpbGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFRIUkVBRF9LSUxMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHRocmVhZF9zaWdtYXNrJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQURfU0lHTUFTSwogCkBAIC01MzksMTIgKzY0NSwyNCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdXRlbnYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFVURU5WCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BXUklURQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JFQURMSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZGxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRUFETElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhZHYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRFYKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUFMUEFUSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlbmFtZWF0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFTkFNRUFUCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSByZWFkbGluZSAyLjEgKi8KICN1bmRlZiBIQVZFX1JMX0NBTExCQUNLCiAKQEAgLTU2OSw2ICs2ODcsMjQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcm91bmQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUk9VTkQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzY2hlZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0YWZmaW5pdHknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRwYXJhbScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3NldHNjaGVkdWxlcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxlY3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VMRUNUCiAKQEAgLTU4NCw2ICs3MjAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW1fdW5saW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTV9VTkxJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW5kZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRU5ERklMRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGVnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VURUdJRAogCkBAIC01OTYsNiArNzM1LDkgQEAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3NldGdyb3VwcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRVRHUk9VUFMKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRob3N0bmFtZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRIT1NUTkFNRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldGl0aW1lcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRVRJVElNRVIKIApAQCAtNjA4LDYgKzc1MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHBncnAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUUEdSUAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHByaW9yaXR5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFVFBSSU9SSVRZCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0cmVnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUUkVHSUQKIApAQCAtNjM1LDE1ICs3ODAsMzAgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnYWN0aW9uJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR0FDVElPTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2FsdHN0YWNrJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR0FMVFNUQUNLCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnaW50ZXJydXB0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR0lOVEVSUlVQVAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NJR05BTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lncGVuZGluZycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdQRU5ESU5HCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lncmVsc2UnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0lHUkVMU0UKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzaWd0aW1lZHdhaXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHVElNRURXQUlUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnd2FpdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdXQUlUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lnd2FpdGluZm8nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHV0FJVElORk8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TTlBSSU5URgogCkBAIC03MjcsNiArODg3LDEyIEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzeW1saW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NZTUxJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeW1saW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lNTElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TWU5DCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3lzY29uZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TWVNDT05GCiAKQEAgLTczOSw2ICs5MDUsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvYnNkdHR5Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0JTRFRUWV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2RldnBvbGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfREVWUE9MTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2Rpci5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfU1lTX0RJUl9ICkBAIC03NTIsNiArOTIxLDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9maWxlLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0ZJTEVfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9pb2N0bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19JT0NUTF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2tlcm5fY29udHJvbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19LRVJOX0NPTlRST0xfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9sb2FkYXZnLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX0xPQURBVkdfSAogCkBAIC03ODAsNiArOTU1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NlbGVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TRUxFQ1RfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZW5kZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TRU5ERklMRV9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NvY2tldC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TT0NLRVRfSAogCkBAIC03OTIsNiArOTcwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2NhbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU1lTQ0FMTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c19kb21haW4uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1lTX0RPTUFJTl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Rlcm1pby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19URVJNSU9fSAogCkBAIC04MDQsNiArOTg1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdWlvLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1VJT19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1VOX0gKIApAQCAtODEzLDYgKzk5Nyw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy93YWl0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1dBSVRfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy94YXR0ci5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19YQVRUUl9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdGNnZXRwZ3JwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1RDR0VUUEdSUAogCkBAIC04MzEsOSArMTAxOCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9UR0FNTUEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx0aHJlYWQuaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9USFJFQURfSAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRpbWVnbScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9USU1FR00KIApAQCAtODcyLDYgKzEwNTYsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9VTklTVERfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVubGlua2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1VOTElOS0FUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdW5zZXRlbnYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVU5TRVRFTlYKIApAQCAtODgzLDYgKzEwNzAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dGlsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVVRJTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdXRpbWVuc2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1VUSU1FTlNBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV0aW1lcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VVElNRVMKIApAQCAtODk1LDYgKzEwODUsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0NCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9XQUlUNAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdhaXRpZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9XQUlUSUQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0cGlkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1dBSVRQSUQKIApAQCAtOTE0LDIxICsxMTA3LDE4IEBACiAgICAqLwogI3VuZGVmIEhBVkVfV09SS0lOR19UWlNFVAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdyaXRldicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9XUklURVYKKwogLyogRGVmaW5lIGlmIHRoZSB6bGliIGxpYnJhcnkgaGFzIGluZmxhdGVDb3B5ICovCiAjdW5kZWYgSEFWRV9aTElCX0NPUFkKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfZ2V0cHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX19HRVRQVFkKIAotLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyBkaXJlY3RseSB1bmRlciAvaW5jbHVkZSAqLwotI3VuZGVmIEhVUkRfQ19USFJFQURTCi0KIC8qIERlZmluZSBpZiBsb2cxcCgtMC4pIGlzIDAuIHJhdGhlciB0aGFuIC0wLiAqLwogI3VuZGVmIExPRzFQX0RST1BTX1pFUk9fU0lHTgogCi0vKiBEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIHVuZGVyIG1hY2ggLyAqLwotI3VuZGVmIE1BQ0hfQ19USFJFQURTCi0KIC8qIERlZmluZSB0byAxIGlmIGBtYWpvcicsIGBtaW5vcicsIGFuZCBgbWFrZWRldicgYXJlIGRlY2xhcmVkIGluIDxta2Rldi5oPi4KICAgICovCiAjdW5kZWYgTUFKT1JfSU5fTUtERVYKQEAgLTk3MywxOCArMTE2MywxMiBAQAogLyogRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIFB5X3NzaXplX3QgKi8KICN1bmRlZiBQWV9GT1JNQVRfU0laRV9UCiAKLS8qIERlZmluZSBhcyB0aGUgaW50ZWdyYWwgdHlwZSB1c2VkIGZvciBVbmljb2RlIHJlcHJlc2VudGF0aW9uLiAqLwotI3VuZGVmIFBZX1VOSUNPREVfVFlQRQotCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgYW4gaW50ZXJwcmV0ZXIgd2l0aCBtYW55IHJ1bi10aW1lIGNoZWNrcy4gKi8KICN1bmRlZiBQeV9ERUJVRwogCiAvKiBEZWZpbmVkIGlmIFB5dGhvbiBpcyBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAqLwogI3VuZGVmIFB5X0VOQUJMRV9TSEFSRUQKIAotLyogRGVmaW5lIGFzIHRoZSBzaXplIG9mIHRoZSB1bmljb2RlIHR5cGUuICovCi0jdW5kZWYgUHlfVU5JQ09ERV9TSVpFCi0KIC8qIGFzc3VtZSBDODkgc2VtYW50aWNzIHRoYXQgUkVUU0lHVFlQRSBpcyBhbHdheXMgdm9pZCAqLwogI3VuZGVmIFJFVFNJR1RZUEUKIApAQCAtMTA1OCw2ICsxMjQyLDkgQEAKIC8qIERlZmluZSBpZiB0YW5oKC0wLikgaXMgLTAuLCBvciBpZiBwbGF0Zm9ybSBkb2Vzbid0IGhhdmUgc2lnbmVkIHplcm9zICovCiAjdW5kZWYgVEFOSF9QUkVTRVJWRVNfWkVST19TSUdOCiAKKy8qIExpYnJhcnkgbmVlZGVkIGJ5IHRpbWVtb2R1bGUuYzogbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpICovCisjdW5kZWYgVElNRU1PRFVMRV9MSUIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGNhbiBzYWZlbHkgaW5jbHVkZSBib3RoIDxzeXMvdGltZS5oPiBhbmQgPHRpbWUuaD4uICovCiAjdW5kZWYgVElNRV9XSVRIX1NZU19USU1FCiAKQEAgLTExNzAsMTQgKzEzNTcsMTEgQEAKIC8qIERlZmluZSBvbiBOZXRCU0QgdG8gYWN0aXZhdGUgYWxsIGxpYnJhcnkgZmVhdHVyZXMgKi8KICN1bmRlZiBfTkVUQlNEX1NPVVJDRQogCi0vKiBEZWZpbmUgX09TRl9TT1VSQ0UgdG8gZ2V0IHRoZSBtYWtlZGV2IG1hY3JvLiAqLwotI3VuZGVmIF9PU0ZfU09VUkNFCi0KIC8qIERlZmluZSB0byAyIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdCB3aXRoCiAgICB0aGlzIGRlZmluZWQuICovCiAjdW5kZWYgX1BPU0lYXzFfU09VUkNFCiAKLS8qIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwMSAqLworLyogRGVmaW5lIHRvIGFjdGl2YXRlIGZlYXR1cmVzIGZyb20gSUVFRSBTdGRzIDEwMDMuMS0yMDA4ICovCiAjdW5kZWYgX1BPU0lYX0NfU09VUkNFCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBuZWVkIHRvIGluIG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAqLwpkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQppbmRleCAwZGVhOTI0OC4uNGRjNThjOCAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTEsOCArMSw2IEBACiAjIEF1dG9kZXRlY3Rpbmcgc2V0dXAucHkgc2NyaXB0IGZvciBidWlsZGluZyB0aGUgUHl0aG9uIGV4dGVuc2lvbnMKICMKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogaW1wb3J0IHN5cywgb3MsIGltcCwgcmUsIG9wdHBhcnNlCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIGltcG9ydCBzeXNjb25maWcKQEAgLTE3LDggKzE1LDIwIEBACiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX3NjcmlwdHMgaW1wb3J0IGJ1aWxkX3NjcmlwdHMKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKIAorY3Jvc3NfY29tcGlsaW5nID0gIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbgorCitkZWYgZ2V0X3BsYXRmb3JtKCk6CisgICAgIyBjcm9zcyBidWlsZAorICAgIGlmICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQorICAgICMgR2V0IHZhbHVlIG9mIHN5cy5wbGF0Zm9ybQorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdvc2YxJyk6CisgICAgICAgIHJldHVybiAnb3NmMScKKyAgICByZXR1cm4gc3lzLnBsYXRmb3JtCitob3N0X3BsYXRmb3JtID0gZ2V0X3BsYXRmb3JtKCkKKwogIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KLUNPTVBJTEVEX1dJVEhfUFlERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpCitDT01QSUxFRF9XSVRIX1BZREVCVUcgPSAoJy0td2l0aC1weWRlYnVnJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikpCiAKICMgVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCB0byBob2xkIHRoZSBsaXN0IG9mIG1vZHVsZXMgdG8gYmUgZGlzYWJsZWQuCiBkaXNhYmxlZF9tb2R1bGVfbGlzdCA9IFtdCkBAIC01OSw3ICs2OSw2IEBACiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmICdwYXRoJyBjYW4gYmUgbG9jYXRlZCBpbiBhbiBPU1ggU0RLCiAgICAgIiIiCi0gICAgcmV0dXJuIChwYXRoLnN0YXJ0c3dpdGgoJy91c3IvJykgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoJy91c3IvbG9jYWwnKSkgb3IgcGF0aC5zdGFydHN3aXRoKCcvU3lzdGVtLycpCiAgICAgcmV0dXJuICggKHBhdGguc3RhcnRzd2l0aCgnL3Vzci8nKSBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnL3Vzci9sb2NhbCcpKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL1N5c3RlbS8nKQogICAgICAgICAgICAgICAgIG9yIHBhdGguc3RhcnRzd2l0aCgnL0xpYnJhcnkvJykgKQpAQCAtNzUsNyArODQsNyBAQAogICAgICdwYXRocycgaXMgYSBsaXN0IG9mIGFkZGl0aW9uYWwgbG9jYXRpb25zIHRvIGNoZWNrOyBpZiB0aGUgZmlsZSBpcwogICAgICAgICBmb3VuZCBpbiBvbmUgb2YgdGhlbSwgdGhlIHJlc3VsdGluZyBsaXN0IHdpbGwgY29udGFpbiB0aGUgZGlyZWN0b3J5LgogICAgICIiIgotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAjIEhvbm9yIHRoZSBNYWNPU1ggU0RLIHNldHRpbmcgd2hlbiBvbmUgd2FzIHNwZWNpZmllZC4KICAgICAgICAgIyBBbiBTREsgaXMgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYSByZWFsCiAgICAgICAgICMgc3lzdGVtLCBidXQgd2l0aCBvbmx5IGhlYWRlciBmaWxlcyBhbmQgbGlicmFyaWVzLgpAQCAtODUsNyArOTQsNyBAQAogICAgIGZvciBkaXIgaW4gc3RkX2RpcnM6CiAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZGlyLCBmaWxlbmFtZSkKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkaXIpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZGlyWzE6XSwgZmlsZW5hbWUpCiAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZik6IHJldHVybiBbXQpAQCAtOTQsNyArMTAzLDcgQEAKICAgICBmb3IgZGlyIGluIHBhdGhzOgogICAgICAgICBmID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGRpcik6CiAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGRpclsxOl0sIGZpbGVuYW1lKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGYpOgpAQCAtMTA4LDcgKzExNyw3IEBACiAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIGZvdW5kIGZpbGUgaXMgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBkaXJlY3RvcmllcwpAQCAtMTE3LDcgKzEyNiw3IEBACiAgICAgICAgICMgRW5zdXJlIHBhdGggZG9lc24ndCBlbmQgd2l0aCBwYXRoIHNlcGFyYXRvcgogICAgICAgICBwID0gcC5yc3RyaXAob3Muc2VwKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKHApOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgcFsxOl0pID09IGRpcm5hbWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFsgXQogCkBAIC0xMzAsNyArMTM5LDcgQEAKICAgICAgICAgIyBFbnN1cmUgcGF0aCBkb2Vzbid0IGVuZCB3aXRoIHBhdGggc2VwYXJhdG9yCiAgICAgICAgIHAgPSBwLnJzdHJpcChvcy5zZXApCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguam9pbihzeXNyb290LCBwWzE6XSkgPT0gZGlybmFtZToKICAgICAgICAgICAgICAgICByZXR1cm4gWyBwIF0KIApAQCAtMTkxLDkgKzIwMCw2IEBACiAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguYWJzcGF0aChzcmNkaXIpCiAgICAgICAgIG1vZGRpcmxpc3QgPSBbb3MucGF0aC5qb2luKHNyY2RpciwgJ01vZHVsZXMnKV0KIAotICAgICAgICAjIFBsYXRmb3JtLWRlcGVuZGVudCBtb2R1bGUgc291cmNlIGFuZCBpbmNsdWRlIGRpcmVjdG9yaWVzCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotCiAgICAgICAgICMgRml4IHVwIHRoZSBwYXRocyBmb3Igc2NyaXB0cywgdG9vCiAgICAgICAgIHNlbGYuZGlzdHJpYnV0aW9uLnNjcmlwdHMgPSBbb3MucGF0aC5qb2luKHNyY2RpciwgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuZGlzdHJpYnV0aW9uLnNjcmlwdHNdCkBAIC0zMDgsNyArMzE0LDcgQEAKICAgICAgICAgICAgICAgICBleHQubmFtZSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2RhcndpbicgYW5kICgKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKAogICAgICAgICAgICAgICAgIHN5cy5tYXhzaXplID4gMioqMzIgYW5kICctYXJjaCcgaW4gZXh0LmV4dHJhX2xpbmtfYXJncyk6CiAgICAgICAgICAgICAjIERvbid0IGJvdGhlciBkb2luZyBhbiBpbXBvcnQgY2hlY2sgd2hlbiBhbiBleHRlbnNpb24gd2FzCiAgICAgICAgICAgICAjIGJ1aWxkIHdpdGggYW4gZXhwbGljaXQgJy1hcmNoJyBmbGFnIG9uIE9TWC4gVGhhdCdzIGN1cnJlbnRseQpAQCAtMzIyLDcgKzMyOCw3IEBACiAKICAgICAgICAgIyBXb3JrYXJvdW5kIGZvciBDeWd3aW46IEN5Z3dpbiBjdXJyZW50bHkgaGFzIGZvcmsgaXNzdWVzIHdoZW4gbWFueQogICAgICAgICAjIG1vZHVsZXMgaGF2ZSBiZWVuIGltcG9ydGVkCi0gICAgICAgIGlmIHNlbGYuZ2V0X3BsYXRmb3JtKCkgPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIEN5Z3dpbi1iYXNlZCAiJXMiJwogICAgICAgICAgICAgICAgICUgZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTMzNSw2ICszNDEsMTAgQEAKICAgICAgICAgIyBjYWNoZWQuICBDbGVhciB0aGF0IGNhY2hlIGJlZm9yZSB0cnlpbmcgdG8gaW1wb3J0LgogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCiAKKyAgICAgICAgIyBEb24ndCB0cnkgdG8gbG9hZCBleHRlbnNpb25zIGZvciBjcm9zcyBidWlsZHMKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhleHQubmFtZSwgZXh0X2ZpbGVuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgd2h5OgpAQCAtMzY2LDEzICszNzYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0zKQogICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQogCi0gICAgZGVmIGdldF9wbGF0Zm9ybShzZWxmKToKLSAgICAgICAgIyBHZXQgdmFsdWUgb2Ygc3lzLnBsYXRmb3JtCi0gICAgICAgIGZvciBwbGF0Zm9ybSBpbiBbJ2N5Z3dpbicsICdkYXJ3aW4nLCAnb3NmMSddOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgocGxhdGZvcm0pOgotICAgICAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybQotICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCi0KICAgICBkZWYgYWRkX211bHRpYXJjaF9wYXRocyhzZWxmKToKICAgICAgICAgIyBEZWJpYW4vVWJ1bnR1IG11bHRpYXJjaCBzdXBwb3J0LgogICAgICAgICAjIGh0dHBzOi8vd2lraS51YnVudHUuY29tL011bHRpYXJjaFNwZWMKQEAgLTM5OSwxMiArNDAyLDE1IEBACiAKICAgICAgICAgaWYgbm90IGZpbmRfZXhlY3V0YWJsZSgnZHBrZy1hcmNoaXRlY3R1cmUnKToKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBvcHQgPSAnJworICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBvcHQgPSAnLXQnICsgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIT1NUX0dOVV9UWVBFJykKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdtdWx0aWFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKAotICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCi0gICAgICAgICAgICB0bXBmaWxlKQorICAgICAgICAgICAgJ2Rwa2ctYXJjaGl0ZWN0dXJlICVzIC1xREVCX0hPU1RfTVVMVElBUkNIID4gJXMgMj4gL2Rldi9udWxsJyAlCisgICAgICAgICAgICAob3B0LCB0bXBmaWxlKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CkBAIC00MTYsMTIgKzQyMiw0OCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCiAKKyAgICBkZWYgYWRkX2djY19wYXRocyhzZWxmKToKKyAgICAgICAgZ2NjID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpCisgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnZ2NjcGF0aHMnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKKyAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCclcyAtRSAtdiAtIDwvZGV2L251bGwgMj4lcyAxPi9kZXYvbnVsbCcgJSAoZ2NjLCB0bXBmaWxlKSkKKyAgICAgICAgaXNfZ2NjID0gRmFsc2UKKyAgICAgICAgaW5faW5jZGlycyA9IEZhbHNlCisgICAgICAgIGluY19kaXJzID0gW10KKyAgICAgICAgbGliX2RpcnMgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgorICAgICAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnAucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoImdjYyB2ZXJzaW9uIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZ2NjID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIiNpbmNsdWRlIDwuLi4+Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW5jZGlycyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJFbmQgb2Ygc2VhcmNoIGxpc3QiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9pbmNkaXJzID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkxJQlJBUllfUEFUSCIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGxpbmUuc3RyaXAoKS5zcGxpdCgiPSIpWzFdLnNwbGl0KCI6Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBvcy5wYXRoLm5vcm1wYXRoKGQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICcvZ2NjLycgbm90IGluIGQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNfZ2NjIGFuZCBpbl9pbmNkaXJzIGFuZCAnL2djYy8nIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5zdHJpcCgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisKICAgICBkZWYgZGV0ZWN0X21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgL3Vzci9sb2NhbCBpcyBhbHdheXMgdXNlZCwgYnV0IHRoZSBsb2NhbCBidWlsZAogICAgICAgICAjIGRpcmVjdG9yaWVzIChpLmUuICcuJyBhbmQgJ0luY2x1ZGUnKSBtdXN0IGJlIGZpcnN0LiAgU2VlIGlzc3VlCiAgICAgICAgICMgMTA1MjAuCi0gICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKLSAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKKyAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCisgICAgICAgICMgb25seSBjaGFuZ2UgdGhpcyBmb3IgY3Jvc3MgYnVpbGRzIGZvciAzLjMsIGlzc3VlcyBvbiBNYWdlaWEKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKICAgICAgICAgc2VsZi5hZGRfbXVsdGlhcmNoX3BhdGhzKCkKIAogICAgICAgICAjIEFkZCBwYXRocyBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBMREZMQUdTIGFuZApAQCAtNDU4LDcgKzUwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChkaXJfbGlzdCwgZGlyZWN0b3J5KQogCi0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKKyAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpICE9ICcvdXNyJyBcCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgogICAgICAgICAgICAgIyBPU1ggbm90ZTogRG9uJ3QgYWRkIExJQkRJUiBhbmQgSU5DTFVERURJUiB0byBidWlsZGluZyBhIGZyYW1ld29yawogICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KQEAgLTQ3MiwxMSArNTE0LDEyIEBACiAgICAgICAgICMgbGliX2RpcnMgYW5kIGluY19kaXJzIGFyZSB1c2VkIHRvIHNlYXJjaCBmb3IgZmlsZXM7CiAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCiAgICAgICAgICMgYmUgYXNzdW1lZCB0aGF0IG5vIGFkZGl0aW9uYWwgLUksLUwgZGlyZWN0aXZlcyBhcmUgbmVlZGVkLgotICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWwotICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKLSAgICAgICAgICAgICcvbGliJywgJy91c3IvbGliJywKLSAgICAgICAgICAgIF0KLSAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGxpYl9kaXJzID0gc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMgKyBbCisgICAgICAgICAgICAgICAgJy9saWI2NCcsICcvdXNyL2xpYjY0JywKKyAgICAgICAgICAgICAgICAnL2xpYicsICcvdXNyL2xpYicsCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgaW5jX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycyArIFsnL3Vzci9pbmNsdWRlJ10KICAgICAgICAgZXh0cyA9IFtdCiAgICAgICAgIG1pc3NpbmcgPSBbXQogCkBAIC00ODQsMTggKzUyNywxNyBAQAogICAgICAgICB3aXRoIG9wZW4oY29uZmlnX2gpIGFzIGZpbGU6CiAgICAgICAgICAgICBjb25maWdfaF92YXJzID0gc3lzY29uZmlnLnBhcnNlX2NvbmZpZ19oKGZpbGUpCiAKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldF9wbGF0Zm9ybSgpCiAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKIAogICAgICAgICAjIE9TRi8xIGFuZCBVbml4d2FyZSBoYXZlIHNvbWUgc3R1ZmYgaW4gL3Vzci9jY3MvbGliIChsaWtlIC1sZGIpCi0gICAgICAgIGlmIHBsYXRmb3JtIGluIFsnb3NmMScsICd1bml4d2FyZTcnLCAnb3BlbnVuaXg4J106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gaW4gWydvc2YxJywgJ3VuaXh3YXJlNycsICdvcGVudW5peDgnXToKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9jY3MvbGliJ10KIAogICAgICAgICAjIEhQLVVYMTFpdjMga2VlcHMgZmlsZXMgaW4gbGliL2hwdXggZm9sZGVycy4KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2hwLXV4MTEnOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdocC11eDExJzoKICAgICAgICAgICAgIGxpYl9kaXJzICs9IFsnL3Vzci9saWIvaHB1eDY0JywgJy91c3IvbGliL2hwdXgzMiddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIHdvcmsgb24gYW55IHVuaXh5IHBsYXRmb3JtIDstKQogICAgICAgICAgICAgIyBJZiB0aGUgdXNlciBoYXMgYm90aGVyZWQgc3BlY2lmeWluZyBhZGRpdGlvbmFsIC1JIGFuZCAtTCBmbGFncwogICAgICAgICAgICAgIyBpbiBPUFQgYW5kIExERkxBR1Mgd2UgbWlnaHQgYXMgd2VsbCB1c2UgdGhlbSBoZXJlLgpAQCAtNTE1LDcgKzU1Nyw3IEBACiAKICAgICAgICAgIyBDaGVjayBmb3IgTWFjT1MgWCwgd2hpY2ggZG9lc24ndCBuZWVkIGxpYm0uYSBhdCBhbGwKICAgICAgICAgbWF0aF9saWJzID0gWydtJ10KLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBtYXRoX2xpYnMgPSBbXQogCiAgICAgICAgICMgWFhYIE9taXR0ZWQgbW9kdWxlczogZ2wsIHB1cmUsIGRsLCBTR0ktc3BlY2lmaWMgbW9kdWxlcwpAQCAtNTM1LDExICs1NzcsMTcgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignbWF0aCcsICBbJ21hdGhtb2R1bGUuYycsICdfbWF0aC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ19tYXRoLmgnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisKKyAgICAgICAgIyB0aW1lIGxpYnJhcmllczogbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpCisgICAgICAgIHRpbWVfbGlicyA9IFtdCisgICAgICAgIGxpYiA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignVElNRU1PRFVMRV9MSUInKQorICAgICAgICBpZiBsaWI6CisgICAgICAgICAgICB0aW1lX2xpYnMuYXBwZW5kKGxpYikKKwogICAgICAgICAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYycsICdfdGltZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfZGF0ZXRpbWUnLCBbJ19kYXRldGltZW1vZHVsZS5jJywgJ190aW1lLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3RpbWUnLCBbJ3RpbWVtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz10aW1lX2xpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2RhdGV0aW1lJywgWydfZGF0ZXRpbWVtb2R1bGUuYyddKSApCiAgICAgICAgICMgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW1wbGVtZW50ZWQgaW4gQwogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfcmFuZG9tIiwgWyJfcmFuZG9tbW9kdWxlLmMiXSkgKQogICAgICAgICAjIGJpc2VjdApAQCAtNTU1LDYgKzYwMyw4IEBACiAgICAgICAgICMgUHl0aG9uIEMgQVBJIHRlc3QgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0Y2FwaScsIFsnX3Rlc3RjYXBpbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsndGVzdGNhcGlfbG9uZy5oJ10pICkKKyAgICAgICAgIyBQeXRob24gUEVQLTMxMTggKGJ1ZmZlciBwcm90b2NvbCkgdGVzdCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3Rlc3RidWZmZXInLCBbJ190ZXN0YnVmZmVyLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTYxMiwxMyArNjYyLDIwIEBACiAgICAgICAgIGRvX3JlYWRsaW5lID0gc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3JlYWRsaW5lJykKICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gIiIKICAgICAgICAgY3Vyc2VzX2xpYnJhcnkgPSAiIgorICAgICAgICAjIENhbm5vdCB1c2Ugb3MucG9wZW4gaGVyZSBpbiBweTNrLgorICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCiAgICAgICAgICMgRGV0ZXJtaW5lIGlmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzIG9yIHRpbmZvLgotICAgICAgICBpZiBkb19yZWFkbGluZSBhbmQgZmluZF9leGVjdXRhYmxlKCdsZGQnKToKLSAgICAgICAgICAgICMgQ2Fubm90IHVzZSBvcy5wb3BlbiBoZXJlIGluIHB5M2suCi0gICAgICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3JlYWRsaW5lX3Rlcm1jYXBfbGliJykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuYnVpbGRfdGVtcCkKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgibGRkICVzID4gJXMiICUgKGRvX3JlYWRsaW5lLCB0bXBmaWxlKSkKKyAgICAgICAgaWYgZG9fcmVhZGxpbmU6CisgICAgICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCIlcyAtZCAlcyB8IGdyZXAgJyhORUVERUQpJyA+ICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUkVBREVMRicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19yZWFkbGluZSwgdG1wZmlsZSkpCisgICAgICAgICAgICBlbGlmIGZpbmRfZXhlY3V0YWJsZSgnbGRkJyk6CisgICAgICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKCJsZGQgJXMgPiAlcyIgJSAoZG9fcmVhZGxpbmUsIHRtcGZpbGUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXQgPSAyNTYKICAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGUpIGFzIGZwOgogICAgICAgICAgICAgICAgICAgICBmb3IgbG4gaW4gZnA6CkBAIC02MzEsNyArNjg4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICd0aW5mbycgaW4gbG46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5ID0gJ3RpbmZvJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBvcy51bmxpbmsodG1wZmlsZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcGZpbGUpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQogICAgICAgICAjIElzc3VlIDczODQ6IElmIHJlYWRsaW5lIGlzIGFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzLAogICAgICAgICAjIHVzZSB0aGUgc2FtZSBsaWJyYXJ5IGZvciB0aGUgcmVhZGxpbmUgYW5kIGN1cnNlcyBtb2R1bGVzLgogICAgICAgICBpZiAnY3Vyc2VzJyBpbiByZWFkbGluZV90ZXJtY2FwX2xpYnJhcnk6CkBAIC02NDMsNyArNzAxLDcgQEAKICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnY3Vyc2VzJyk6CiAgICAgICAgICAgICBjdXJzZXNfbGlicmFyeSA9ICdjdXJzZXMnCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBvc19yZWxlYXNlID0gaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkKICAgICAgICAgICAgIGRlcF90YXJnZXQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCiAgICAgICAgICAgICBpZiBkZXBfdGFyZ2V0IGFuZCBkZXBfdGFyZ2V0LnNwbGl0KCcuJykgPCBbJzEwJywgJzUnXToKQEAgLTY1NSw3ICs3MTMsNyBAQAogICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgncmVhZGxpbmUvcmxjb25mLmgnLCBpbmNfZGlycywgW10pIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRvX3JlYWRsaW5lID0gRmFsc2UKICAgICAgICAgaWYgZG9fcmVhZGxpbmU6Ci0gICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgb3NfcmVsZWFzZSA8IDk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBvc19yZWxlYXNlIDwgOToKICAgICAgICAgICAgICAgICAjIEluIGV2ZXJ5IGRpcmVjdG9yeSBvbiB0aGUgc2VhcmNoIHBhdGggc2VhcmNoIGZvciBhIGR5bmFtaWMKICAgICAgICAgICAgICAgICAjIGxpYnJhcnkgYW5kIHRoZW4gYSBzdGF0aWMgbGlicmFyeSwgaW5zdGVhZCBvZiBmaXJzdCBsb29raW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgZHluYW1pYyBsaWJyYXJpZXMgb24gdGhlIGVudGlyZSBwYXRoLgpAQCAtNjg3LDcgKzc0NSw3IEBACiAgICAgICAgICAgICBsaWJzID0gWydjcnlwdCddCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaWJzID0gW10KLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignY3J5cHQnLCBbJ2NyeXB0bW9kdWxlLmMnXSwgbGlicmFyaWVzPWxpYnMpICkKKyAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2NyeXB0JywgWydfY3J5cHRtb2R1bGUuYyddLCBsaWJyYXJpZXM9bGlicykgKQogCiAgICAgICAgICMgQ1NWIGZpbGVzCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jc3YnLCBbJ19jc3YuYyddKSApCkBAIC03MzYsNyArNzk0LDcgQEAKICAgICAgICAgICAgICAgICBpbmNfZGlycyArIHNlYXJjaF9mb3Jfc3NsX2luY3NfaW4pCiAgICAgICAgIGlmIG9wZW5zc2x2X2g6CiAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKG9wZW5zc2x2X2hbMF0sICdvcGVuc3NsL29wZW5zc2x2LmgnKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgobmFtZSk6CiAgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihtYWNvc3hfc2RrX3Jvb3QoKSwgbmFtZVsxOl0pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKG5hbWUsICdyJykgYXMgaW5jZmlsZToKQEAgLTc2OCwyMCArODI2LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbF92ZXIpCiAgICAgICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19oYXNobGliJykKIAotICAgICAgICBtaW5fc2hhMl9vcGVuc3NsX3ZlciA9IDB4MDA5MDgwMDAKLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG9wZW5zc2xfdmVyIDwgbWluX3NoYTJfb3BlbnNzbF92ZXI6Ci0gICAgICAgICAgICAjIE9wZW5TU0wgZG9lc24ndCBkbyB0aGVzZSB1bnRpbCAwLjkuOCBzbyB3ZSdsbCBicmluZyBvdXIgb3duIGhhc2gKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQotICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTUxMicsIFsnc2hhNTEybW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCi0KLSAgICAgICAgaWYgQ09NUElMRURfV0lUSF9QWURFQlVHIG9yIG5vdCBoYXZlX3VzYWJsZV9vcGVuc3NsOgotICAgICAgICAgICAgIyBubyBvcGVuc3NsIGF0IGFsbCwgdXNlIG91ciBvd24gbWQ1IGFuZCBzaGExCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbWQ1JywgWydtZDVtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgICMgV2UgYWx3YXlzIGNvbXBpbGUgdGhlc2UgZXZlbiB3aGVuIE9wZW5TU0wgaXMgYXZhaWxhYmxlIChpc3N1ZSAjMTQ2OTMpLgorICAgICAgICAjIEl0J3MgaGFybWxlc3MgYW5kIHRoZSBvYmplY3QgY29kZSBpcyB0aW55ICg0MC01MCBLQiBwZXIgbW9kdWxlLAorICAgICAgICAjIG9ubHkgbG9hZGVkIHdoZW4gYWN0dWFsbHkgdXNlZCkuCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEyNTYnLCBbJ3NoYTI1Nm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGE1MTInLCBbJ3NoYTUxMm1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19tZDUnLCBbJ21kNW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGExJywgWydzaGExbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKIAogICAgICAgICAjIE1vZHVsZXMgdGhhdCBwcm92aWRlIHBlcnNpc3RlbnQgZGljdGlvbmFyeS1saWtlIHNlbWFudGljcy4gIFlvdSB3aWxsCiAgICAgICAgICMgcHJvYmFibHkgd2FudCB0byBhcnJhbmdlIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byBiZSBhdmFpbGFibGUgb24KQEAgLTc5OCw3ICs4NTMsNyBAQAogICAgICAgICAjIGEgcmVsZWFzZS4gIE1vc3Qgb3BlbiBzb3VyY2UgT1NlcyBjb21lIHdpdGggb25lIG9yIG1vcmUKICAgICAgICAgIyB2ZXJzaW9ucyBvZiBCZXJrZWxleURCIGFscmVhZHkgaW5zdGFsbGVkLgogCi0gICAgICAgIG1heF9kYl92ZXIgPSAoNSwgMSkKKyAgICAgICAgbWF4X2RiX3ZlciA9ICg1LCAzKQogICAgICAgICBtaW5fZGJfdmVyID0gKDMsIDMpCiAgICAgICAgIGRiX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAKQEAgLTg1NSw2ICs5MTAsOSBAQAogICAgICAgICAgICAgZGJfaW5jX3BhdGhzLmFwcGVuZCgnL3BrZy9kYi0zLiVkL2luY2x1ZGUnICUgeCkKICAgICAgICAgICAgIGRiX2luY19wYXRocy5hcHBlbmQoJy9vcHQvZGItMy4lZC9pbmNsdWRlJyAlIHgpCiAKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgZGJfaW5jX3BhdGhzID0gW10KKwogICAgICAgICAjIEFkZCBzb21lIGNvbW1vbiBzdWJkaXJlY3RvcmllcyBmb3IgU2xlZXB5Y2F0IERCIHRvIHRoZSBsaXN0LAogICAgICAgICAjIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCBpbmNsdWRlIGRpcmVjdG9yaWVzLiBUaGlzIHdheSBEQjMvNCBnZXRzCiAgICAgICAgICMgcGlja2VkIHVwIHdoZW4gaXQgaXMgaW5zdGFsbGVkIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeCBhbmQKQEAgLTg3NSw3ICs5MzMsNyBAQAogCiAgICAgICAgIGRiX3Zlcl9pbmNfbWFwID0ge30KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBzeXNyb290ID0gbWFjb3N4X3Nka19yb290KCkKIAogICAgICAgICBjbGFzcyBkYl9mb3VuZChFeGNlcHRpb24pOiBwYXNzCkBAIC04ODQsNyArOTQyLDcgQEAKICAgICAgICAgICAgICMgc2VhcmNoIHBhdGguCiAgICAgICAgICAgICBmb3IgZCBpbiBpbmNfZGlycyArIGRiX2luY19wYXRoczoKICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKGQsICJkYi5oIikKLSAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChkKToKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZFsxOl0sICJkYi5oIikKIAogICAgICAgICAgICAgICAgIGlmIGRiX3NldHVwX2RlYnVnOiBwcmludCgiZGI6IGxvb2tpbmcgZm9yIGRiLmggaW4iLCBmKQpAQCAtOTM1LDcgKzk5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRiX2luY2Rpci5yZXBsYWNlKCJpbmNsdWRlIiwgJ2xpYicpLAogICAgICAgICAgICAgICAgIF0KIAotICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgICAgICBkYl9kaXJzX3RvX2NoZWNrID0gbGlzdChmaWx0ZXIob3MucGF0aC5pc2RpciwgZGJfZGlyc190b19jaGVjaykpCiAKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtOTkxLDcgKzEwNDksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZS9zcWxpdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9sb2NhbC9pbmNsdWRlL3NxbGl0ZTMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHNxbGl0ZV9pbmNfcGF0aHMgPSBbXQogICAgICAgICBNSU5fU1FMSVRFX1ZFUlNJT05fTlVNQkVSID0gKDMsIDAsIDgpCiAgICAgICAgIE1JTl9TUUxJVEVfVkVSU0lPTiA9ICIuIi5qb2luKFtzdHIoeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIE1JTl9TUUxJVEVfVkVSU0lPTl9OVU1CRVJdKQpAQCAtOTk5LDEyICsxMDU5LDEyIEBACiAgICAgICAgICMgU2NhbiB0aGUgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yaWVzIGJlZm9yZSB0aGUgU1FMaXRlIHNwZWNpZmljCiAgICAgICAgICMgb25lcy4gVGhpcyBhbGxvd3Mgb25lIHRvIG92ZXJyaWRlIHRoZSBjb3B5IG9mIHNxbGl0ZSBvbiBPU1gsCiAgICAgICAgICMgd2hlcmUgL3Vzci9pbmNsdWRlIGNvbnRhaW5zIGFuIG9sZCB2ZXJzaW9uIG9mIHNxbGl0ZS4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAgICAgZm9yIGRfIGluIGluY19kaXJzICsgc3FsaXRlX2luY19wYXRoczoKICAgICAgICAgICAgIGQgPSBkXwotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CiAgICAgICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbihzeXNyb290LCBkWzE6XSkKIAogICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkLCAic3FsaXRlMy5oIikKQEAgLTEwNTUsNyArMTExNSw3IEBACiAgICAgICAgICAgICAgICAgJ19zcWxpdGUvdXRpbC5jJywgXQogCiAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcyA9IFtdCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gIndpbjMyIjoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gIT0gIndpbjMyIjoKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCdNT0RVTEVfTkFNRScsICcic3FsaXRlMyInKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgnTU9EVUxFX05BTUUnLCAnXFwic3FsaXRlM1xcIicpKQpAQCAtMTA2NSw3ICsxMTI1LDcgQEAKICAgICAgICAgICAgIGlmICctLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucycgbm90IGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKICAgICAgICAgICAgICAgICBzcWxpdGVfZGVmaW5lcy5hcHBlbmQoKCJTUUxJVEVfT01JVF9MT0FEX0VYVEVOU0lPTiIsICIxIikpCiAKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgIyBJbiBldmVyeSBkaXJlY3Rvcnkgb24gdGhlIHNlYXJjaCBwYXRoIHNlYXJjaCBmb3IgYSBkeW5hbWljCiAgICAgICAgICAgICAgICAgIyBsaWJyYXJ5IGFuZCB0aGVuIGEgc3RhdGljIGxpYnJhcnksIGluc3RlYWQgb2YgZmlyc3QgbG9va2luZwogICAgICAgICAgICAgICAgICMgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG9uIHRoZSBlbnRpcmUgcGF0aC4KQEAgLTEwNzUsMTAgKzExMzUsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2V4dHJhX2xpbmtfYXJncyA9ICgpCiAKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFsiTW9kdWxlcy9fc3FsaXRlIl0KKyAgICAgICAgICAgICMgT25seSBpbmNsdWRlIHRoZSBkaXJlY3Rvcnkgd2hlcmUgc3FsaXRlIHdhcyBmb3VuZCBpZiBpdCBkb2VzCisgICAgICAgICAgICAjIG5vdCBhbHJlYWR5IGV4aXN0IGluIHNldCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBvdGhlcndpc2UgeW91CisgICAgICAgICAgICAjIGNhbiBlbmQgdXAgd2l0aCBhIGJhZCBzZWFyY2ggcGF0aCBvcmRlci4KKyAgICAgICAgICAgIGlmIHNxbGl0ZV9pbmNkaXIgbm90IGluIHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzOgorICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoc3FsaXRlX2luY2RpcikKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX3NxbGl0ZTMnLCBzcWxpdGVfc3JjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPXNxbGl0ZV9kZWZpbmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX3NxbGl0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGVfaW5jZGlyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9aW5jbHVkZV9kaXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1zcWxpdGVfbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPXNxbGl0ZV9saWJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXNxbGl0ZV9leHRyYV9saW5rX2FyZ3MsCkBAIC0xMDg2LDkgKzExNTEsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfc3FsaXRlMycpCiAKKyAgICAgICAgZGJtX3NldHVwX2RlYnVnID0gRmFsc2UgICAjIHZlcmJvc2UgZGVidWcgcHJpbnRzIGZyb20gdGhpcyBzY3JpcHQ/CiAgICAgICAgIGRibV9vcmRlciA9IFsnZ2RibSddCiAgICAgICAgICMgVGhlIHN0YW5kYXJkIFVuaXggZGJtIG1vZHVsZToKLSAgICAgICAgaWYgcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJ106CiAgICAgICAgICAgICBjb25maWdfYXJncyA9IFthcmcuc3RyaXAoIiciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikuc3BsaXQoKV0KICAgICAgICAgICAgIGRibV9hcmdzID0gW2FyZyBmb3IgYXJnIGluIGNvbmZpZ19hcmdzCkBAIC0xMTExLDcgKzExNzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kYm1fbGlicyA9IFsnZ2RibV9jb21wYXQnXQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGJtX2xpYnMgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBuZGJtIikKICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSEFWRV9OREJNX0gnLE5vbmUpLApAQCAtMTEyNiw3ICsxMTkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZGJtX2NvbXBhdCcpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYm1fbGlicy5hcHBlbmQoJ2dkYm1fY29tcGF0JykKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgiZ2RibS9uZGJtLmgiLCBpbmNfZGlycywgW10pIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGJtX3NldHVwX2RlYnVnOiBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKQEAgLTExMzUsNyArMTIwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IGdkYm1fbGlicykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmluZF9maWxlKCJnZGJtLW5kYm0uaCIsIGluY19kaXJzLCBbXSkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBnZGJtIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwpAQCAtMTE0NSw3ICsxMjExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGVsaWYgY2FuZCA9PSAiYmRiIjoKICAgICAgICAgICAgICAgICAgICAgaWYgZGJfaW5jcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgYmRiIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBiZGIiKQogICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKCdfZGJtJywgWydfZGJtbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKQEAgLTExNzAsMTQgKzEyMzYsMTQgQEAKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfZ2RibScpCiAKICAgICAgICAgIyBVbml4LW9ubHkgbW9kdWxlcwotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICAjIFN0ZWVuIEx1bWhvbHQncyB0ZXJtaW9zIG1vZHVsZQogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndGVybWlvcycsIFsndGVybWlvcy5jJ10pICkKICAgICAgICAgICAgICMgSmVyZW15IEh5bHRvbidzIHJsaW1pdCBpbnRlcmZhY2UKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3Jlc291cmNlJywgWydyZXNvdXJjZS5jJ10pICkKIAogICAgICAgICAgICAgIyBTdW4geWVsbG93IHBhZ2VzLiBTb21lIHN5c3RlbXMgaGF2ZSB0aGUgZnVuY3Rpb25zIGluIGxpYmMuCi0gICAgICAgICAgICBpZiAocGxhdGZvcm0gbm90IGluIFsnY3lnd2luJywgJ3FueDYnXSBhbmQKKyAgICAgICAgICAgIGlmIChob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbicsICdxbng2J10gYW5kCiAgICAgICAgICAgICAgICAgZmluZF9maWxlKCdycGNzdmMveXBfcHJvdC5oJywgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICduc2wnKSk6CiAgICAgICAgICAgICAgICAgICAgIGxpYnMgPSBbJ25zbCddCkBAIC0xMTkyLDE2ICsxMjU4LDM1IEBACiAKICAgICAgICAgIyBDdXJzZXMgc3VwcG9ydCwgcmVxdWlyaW5nIHRoZSBTeXN0ZW0gViB2ZXJzaW9uIG9mIGN1cnNlcywgb2Z0ZW4KICAgICAgICAgIyBwcm92aWRlZCBieSB0aGUgbmN1cnNlcyBsaWJyYXJ5LgorICAgICAgICBjdXJzZXNfZGVmaW5lcyA9IFtdCisgICAgICAgIGN1cnNlc19pbmNsdWRlcyA9IFtdCiAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWwnCisgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6CisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19pbmNsdWRlcy5hcHBlbmQoJy91c3IvaW5jbHVkZS9uY3Vyc2VzdycpCisgICAgICAgICAgICAjIEJ1ZyAxNDY0MDU2OiBJZiBfY3Vyc2VzLnNvIGxpbmtzIHdpdGggbmN1cnNlc3csCisgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgICMgT24gT1MgWCwgdGhlcmUgaXMgbm8gc2VwYXJhdGUgL3Vzci9saWIvbGlibmN1cnNlc3cgbm9yCisgICAgICAgICAgICAgICAgIyBsaWJwYW5lbHcuICBJZiB3ZSBhcmUgaGVyZSwgd2UgZm91bmQgYSBsb2NhbGx5LXN1cHBsaWVkCisgICAgICAgICAgICAgICAgIyB2ZXJzaW9uIG9mIGxpYm5jdXJzZXN3LiAgVGhlcmUgc2hvdWxkIGJlIGFsc28gYmUgYQorICAgICAgICAgICAgICAgICMgbGlicGFuZWx3LiAgX1hPUEVOX1NPVVJDRSBkZWZpbmVzIGFyZSB1c3VhbGx5IGV4Y2x1ZGVkCisgICAgICAgICAgICAgICAgIyBmb3IgT1MgWCBidXQgd2UgbmVlZCBfWE9QRU5fU09VUkNFX0VYVEVOREVEIGhlcmUgZm9yCisgICAgICAgICAgICAgICAgIyBuY3Vyc2VzIHdpZGUgY2hhciBzdXBwb3J0CisgICAgICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCcsICcxJykpCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXMnOgorICAgICAgICAgICAgIyBCdWlsZGluZyB3aXRoIHRoZSBzeXN0ZW0tc3VwcGllZCBjb21iaW5lZCBsaWJuY3Vyc2VzL2xpYnBhbmVsCisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKyAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ19YT1BFTl9TT1VSQ0VfRVhURU5ERUQnLCAnMScpKQorCiAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5LnN0YXJ0c3dpdGgoJ25jdXJzZXMnKToKLSAgICAgICAgICAgIGlmIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2Vzdyc6Ci0gICAgICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAotICAgICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCi0gICAgICAgICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbHcnCiAgICAgICAgICAgICBjdXJzZXNfbGlicyA9IFtjdXJzZXNfbGlicmFyeV0KICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9Y3Vyc2VzX2luY2x1ZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQotICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5ID09ICdjdXJzZXMnIGFuZCBwbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeSA9PSAnY3Vyc2VzJyBhbmQgaG9zdF9wbGF0Zm9ybSAhPSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICAjIE9TWCBoYXMgYW4gb2xkIEJlcmtlbGV5IGN1cnNlcywgbm90IGdvb2QgZW5vdWdoIGZvcgogICAgICAgICAgICAgICAgICMgdGhlIF9jdXJzZXMgbW9kdWxlLgogICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICd0ZXJtaW5mbycpKToKQEAgLTEyMTIsNiArMTI5Nyw3IEBACiAgICAgICAgICAgICAgICAgY3Vyc2VzX2xpYnMgPSBbJ2N1cnNlcyddCiAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jdXJzZXMnLCBbJ19jdXJzZXNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWN1cnNlc19kZWZpbmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBjdXJzZXNfbGlicykgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19jdXJzZXMnKQpAQCAtMTIyMCw2ICsxMzA2LDggQEAKICAgICAgICAgaWYgKG1vZHVsZV9lbmFibGVkKGV4dHMsICdfY3Vyc2VzJykgYW5kCiAgICAgICAgICAgICBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBwYW5lbF9saWJyYXJ5KSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzX3BhbmVsJywgWydfY3Vyc2VzX3BhbmVsLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWN1cnNlc19pbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gW3BhbmVsX2xpYnJhcnldICsgY3Vyc2VzX2xpYnMpICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY3Vyc2VzX3BhbmVsJykKQEAgLTEyNTIsNyArMTM0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSB2ZXJzaW9uX3JlcToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ3onKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgemxpYl9leHRyYV9saW5rX2FyZ3MgPSAoKQpAQCAtMTI4NCwxNSArMTM3MiwyMiBAQAogCiAgICAgICAgICMgR3VzdGF2byBOaWVtZXllcidzIGJ6MiBtb2R1bGUuCiAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnYnoyJykpOgotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCctV2wsLXNlYXJjaF9wYXRoc19maXJzdCcsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiejJfZXh0cmFfbGlua19hcmdzID0gKCkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2J6MicsIFsnYnoybW9kdWxlLmMnXSwKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19iejInLCBbJ19iejJtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2J6MiddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MgPSBiejJfZXh0cmFfbGlua19hcmdzKSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnYnoyJykKKyAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfYnoyJykKKworICAgICAgICAjIExaTUEgY29tcHJlc3Npb24gc3VwcG9ydC4KKyAgICAgICAgaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2x6bWEnKToKKyAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sem1hJywgWydfbHptYW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbHptYSddKSApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2x6bWEnKQogCiAgICAgICAgICMgSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBYTUwgcGFyc2VyCiAgICAgICAgICMKQEAgLTEzNDgsMzMgKzE0NDMsMzYgQEAKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKEV4dGVuc2lvbignX2NvZGVjc18lcycgJSBsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjamtjb2RlY3MvX2NvZGVjc18lcy5jJyAlIGxvY10pKQogCisgICAgICAgICMgU3RlZmFuIEtyYWgncyBfZGVjaW1hbCBtb2R1bGUKKyAgICAgICAgZXh0cy5hcHBlbmQoc2VsZi5fZGVjaW1hbF9leHQoKSkKKwogICAgICAgICAjIFRob21hcyBIZWxsZXIncyBfY3R5cGVzIG1vZHVsZQogICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoaW5jX2RpcnMsIGxpYl9kaXJzKQogCiAgICAgICAgICMgUmljaGFyZCBPdWRrZXJrJ3MgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgICAgICAjIFdpbmRvd3MKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOiAgICAgICAgIyBXaW5kb3dzCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnd3MyXzMyJ10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgICAgICAjIE1hYyBPU1gKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOiAgICAgIyBNYWMgT1NYCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzogICAgICAgICAgIyBDeWd3aW4KKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdjeWd3aW4nOiAgICAgIyBDeWd3aW4KICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtIGluICgnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLCAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKToKICAgICAgICAgICAgICMgRnJlZUJTRCdzIFAxMDAzLjFiIHNlbWFwaG9yZSBzdXBwb3J0IGlzIHZlcnkgZXhwZXJpbWVudGFsCiAgICAgICAgICAgICAjIGFuZCBoYXMgbWFueSBrbm93biBwcm9ibGVtcy4gKGFzIG9mIEp1bmUgMjAwOCkKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gW10KIAotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6CiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKQEAgLTEzODIsMTcgKzE0ODAsMTMgQEAKICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQogICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nX3NyY3MgPSBbICdfbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3NpbmcvcGlwZV9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZ19zcmNzID0gWyAnX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgaWYgKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9TRU1fT1BFTicpIGFuZCBub3QKICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQnKSk6CkBAIC0xNDA3LDE0ICsxNTAxLDEyIEBACiAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwogCiAgICAgICAgICMgUGxhdGZvcm0tc3BlY2lmaWMgbGlicmFyaWVzCi0gICAgICAgIGlmIChwbGF0Zm9ybSBpbiAoJ2xpbnV4MicsICdmcmVlYnNkNCcsICdmcmVlYnNkNScsICdmcmVlYnNkNicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZnJlZWJzZDcnLCAnZnJlZWJzZDgnKQotICAgICAgICAgICAgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgiZ251a2ZyZWVic2QiKSk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JywgJ2ZyZWVic2QnLCAnZ251a2ZyZWVic2QnKSk6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdvc3NhdWRpb2RldicsIFsnb3NzYXVkaW9kZXYuYyddKSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnb3NzYXVkaW9kZXYnKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICBFeHRlbnNpb24oJ19nZXN0YWx0JywgWydfZ2VzdGFsdC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1bJy1mcmFtZXdvcmsnLCAnQ2FyYm9uJ10pCkBAIC0xNTMyLDggKzE2MjQsNyBAQAogICAgICAgICAjIFJhdGhlciB0aGFuIGNvbXBsaWNhdGUgdGhlIGNvZGUgYmVsb3csIGRldGVjdGluZyBhbmQgYnVpbGRpbmcKICAgICAgICAgIyBBcXVhVGsgaXMgYSBzZXBhcmF0ZSBtZXRob2QuIE9ubHkgb25lIFRraW50ZXIgd2lsbCBiZSBidWlsdCBvbgogICAgICAgICAjIERhcndpbiAtIGVpdGhlciBBcXVhVGssIGlmIGl0IGlzIGZvdW5kLCBvciBYMTEgYmFzZWQgVGsuCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotICAgICAgICBpZiAocGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kCisgICAgICAgIGlmIChob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZAogICAgICAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcl9kYXJ3aW4oaW5jX2RpcnMsIGxpYl9kaXJzKSk6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtMTU1Niw3ICsxNjQ3LDcgQEAKICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHRoZSBpbmNsdWRlIGZpbGVzIG9uIERlYmlhbiBhbmQge0ZyZWUsT3Blbn1CU0QsIHdoZXJlCiAgICAgICAgICAgICAjIHRoZXkncmUgcHV0IGluIC91c3IvaW5jbHVkZS97dGNsLHRrfVguWQogICAgICAgICAgICAgZG90dmVyc2lvbiA9IHZlcnNpb24KLSAgICAgICAgICAgIGlmICcuJyBub3QgaW4gZG90dmVyc2lvbiBhbmQgImJzZCIgaW4gc3lzLnBsYXRmb3JtLmxvd2VyKCk6CisgICAgICAgICAgICBpZiAnLicgbm90IGluIGRvdHZlcnNpb24gYW5kICJic2QiIGluIGhvc3RfcGxhdGZvcm0ubG93ZXIoKToKICAgICAgICAgICAgICAgICAjIE9wZW5CU0QgYW5kIEZyZWVCU0QgdXNlIFRjbC9UayBsaWJyYXJ5IG5hbWVzIGxpa2UgbGlidGNsODMuYSwKICAgICAgICAgICAgICAgICAjIGJ1dCB0aGUgaW5jbHVkZSBzdWJkaXJzIGFyZSBuYW1lZCBsaWtlIC4uLi9pbmNsdWRlL3RjbDguMy4KICAgICAgICAgICAgICAgICBkb3R2ZXJzaW9uID0gZG90dmVyc2lvbls6LTFdICsgJy4nICsgZG90dmVyc2lvblstMV0KQEAgLTE1ODIsNyArMTY3Myw3IEBACiAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzLmFwcGVuZChkaXIpCiAKICAgICAgICAgIyBDaGVjayBmb3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9pbmNsdWRlJykKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9vcGVud2luL2xpYicpCiAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoJy91c3IvWDExUjYvaW5jbHVkZScpOgpAQCAtMTU5OCw3ICsxNjg5LDcgQEAKICAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTEvbGliJykKIAogICAgICAgICAjIElmIEN5Z3dpbiwgdGhlbiB2ZXJpZnkgdGhhdCBYIGlzIGluc3RhbGxlZCBiZWZvcmUgcHJvY2VlZGluZwotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgIHgxMV9pbmMgPSBmaW5kX2ZpbGUoJ1gxMS9YbGliLmgnLCBbXSwgaW5jbHVkZV9kaXJzKQogICAgICAgICAgICAgaWYgeDExX2luYyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybgpAQCAtMTYxNywxMSArMTcwOCwxMSBAQAogICAgICAgICBsaWJzLmFwcGVuZCgndGsnKyB2ZXJzaW9uKQogICAgICAgICBsaWJzLmFwcGVuZCgndGNsJysgdmVyc2lvbikKIAotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ2FpeDMnLCAnYWl4NCddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIGluIFsnYWl4MycsICdhaXg0J106CiAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnbGQnKQogCiAgICAgICAgICMgRmluYWxseSwgbGluayB3aXRoIHRoZSBYMTEgbGlicmFyaWVzIChub3QgYXBwcm9wcmlhdGUgb24gY3lnd2luKQotICAgICAgICBpZiBwbGF0Zm9ybSAhPSAiY3lnd2luIjoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAiY3lnd2luIjoKICAgICAgICAgICAgIGxpYnMuYXBwZW5kKCdYMTEnKQogCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbignX3RraW50ZXInLCBbJ190a2ludGVyLmMnLCAndGthcHBpbml0LmMnXSwKQEAgLTE2NzcsNyArMTc2OCw3IEBACiAKICAgICBkZWYgY29uZmlndXJlX2N0eXBlcyhzZWxmLCBleHQpOgogICAgICAgICBpZiBub3Qgc2VsZi51c2Vfc3lzdGVtX2xpYmZmaToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlndXJlX2N0eXBlc19kYXJ3aW4oZXh0KQogCiAgICAgICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCkBAIC0xNjk1LDcgKzE3ODYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfY29uZmlnZmlsZSk6CiAgICAgICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMuZGlyX3V0aWwgaW1wb3J0IG1rcGF0aAogICAgICAgICAgICAgICAgIG1rcGF0aChmZmlfYnVpbGRkaXIpCi0gICAgICAgICAgICAgICAgY29uZmlnX2FyZ3MgPSBbXQorICAgICAgICAgICAgICAgIGNvbmZpZ19hcmdzID0gW2FyZyBmb3IgYXJnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgnLS1ob3N0PScgaW4gYXJnKSBvciAoJy0tYnVpbGQ9JyBpbiBhcmcpKV0KICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBjb25maWdfYXJncy5hcHBlbmQoIi1xIikKIApAQCAtMTczOSw3ICsxODMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAnX2N0eXBlcy9jZmllbGQuYyddCiAgICAgICAgIGRlcGVuZHMgPSBbJ19jdHlwZXMvY3R5cGVzLmgnXQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKCdfY3R5cGVzL21hbGxvY19jbG9zdXJlLmMnKQogICAgICAgICAgICAgc291cmNlcy5hcHBlbmQoJ19jdHlwZXMvZGFyd2luL2RsZmNuX3NpbXBsZS5jJykKICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5hcHBlbmQoJy1ETUFDT1NYJykKQEAgLTE3NDcsNyArMTgzOSw3IEBACiAjIFhYWCBJcyB0aGlzIHN0aWxsIG5lZWRlZD8KICMjICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzLmV4dGVuZChbJy1yZWFkX29ubHlfcmVsb2NzJywgJ3dhcm5pbmcnXSkKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtID09ICdzdW5vczUnOgogICAgICAgICAgICAgIyBYWFggVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5OyBpdCBhcHBlYXJzIHRoYXQgc29tZQogICAgICAgICAgICAgIyBvZiB0aGUgYXNzZW1ibGVyIGNvZGUgaXMgbm9uLVBJQyAoaS5lLiBpdCBoYXMgcmVsb2NhdGlvbnMKICAgICAgICAgICAgICMgd2hlbiBpdCBzaG91bGRuJ3QuIFRoZSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvIHJld3JpdGUKQEAgLTE3NTgsNyArMTg1MCw3IEBACiAgICAgICAgICAgICAjIGZpbmRpbmcgc29tZSAteiBvcHRpb24gZm9yIHRoZSBTdW4gY29tcGlsZXIuCiAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MuYXBwZW5kKCctbWltcHVyZS10ZXh0JykKIAotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdocC11eCcpOgorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnaHAtdXgnKToKICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5hcHBlbmQoJy1mUElDJykKIAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ19jdHlwZXMnLApAQCAtMTc3NSw3ICsxODY3LDcgQEAKICAgICAgICAgaWYgbm90ICctLXdpdGgtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQpAQCAtMTgwNSw2ICsxODk3LDEyOCBAQAogICAgICAgICAgICAgZXh0LmxpYnJhcmllcy5hcHBlbmQoZmZpX2xpYikKICAgICAgICAgICAgIHNlbGYudXNlX3N5c3RlbV9saWJmZmkgPSBUcnVlCiAKKyAgICBkZWYgX2RlY2ltYWxfZXh0KHNlbGYpOgorICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MgPSBbXQorICAgICAgICB1bmRlZl9tYWNyb3MgPSBbXQorICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1saWJtcGRlYycgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW10KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsnbXBkZWMnXQorICAgICAgICAgICAgc291cmNlcyA9IFsnX2RlY2ltYWwvX2RlY2ltYWwuYyddCisgICAgICAgICAgICBkZXBlbmRzID0gWydfZGVjaW1hbC9kb2NzdHJpbmdzLmgnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICAgICAgaW5jbHVkZV9kaXJzID0gW29zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01vZHVsZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJtcGRlYycpKV0KKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCisgICAgICAgICAgICBzb3VyY2VzID0gWworICAgICAgICAgICAgICAnX2RlY2ltYWwvX2RlY2ltYWwuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb250ZXh0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuYycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGRlcGVuZHMgPSBbCisgICAgICAgICAgICAgICdfZGVjaW1hbC9kb2NzdHJpbmdzLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NydC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdW1vZGFyaXRoLmgnLAorICAgICAgICAgICAgICBdCisKKyAgICAgICAgY29uZmlnID0geworICAgICAgICAgICd4NjQnOiAgICAgWygnQ09ORklHXzY0JywnMScpLCAoJ0FTTScsJzEnKV0sCisgICAgICAgICAgJ3VpbnQxMjgnOiBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKSwgKCdIQVZFX1VJTlQxMjhfVCcsJzEnKV0sCisgICAgICAgICAgJ2Fuc2k2NCc6ICBbKCdDT05GSUdfNjQnLCcxJyksICgnQU5TSScsJzEnKV0sCisgICAgICAgICAgJ3Bwcm8nOiAgICBbKCdDT05GSUdfMzInLCcxJyksICgnUFBSTycsJzEnKSwgKCdBU00nLCcxJyldLAorICAgICAgICAgICdhbnNpMzInOiAgWygnQ09ORklHXzMyJywnMScpLCAoJ0FOU0knLCcxJyldLAorICAgICAgICAgICdhbnNpLWxlZ2FjeSc6IFsoJ0NPTkZJR18zMicsJzEnKSwgKCdBTlNJJywnMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0xFR0FDWV9DT01QSUxFUicsJzEnKV0sCisgICAgICAgICAgJ3VuaXZlcnNhbCc6ICAgWygnVU5JVkVSU0FMJywnMScpXQorICAgICAgICB9CisKKyAgICAgICAgY2MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKKyAgICAgICAgc2l6ZW9mX3NpemVfdCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX1NJWkVfVCcpCisgICAgICAgIG1hY2hpbmUgPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FJykKKworICAgICAgICBpZiBtYWNoaW5lOgorICAgICAgICAgICAgIyBPdmVycmlkZSBhdXRvbWF0aWMgY29uZmlndXJhdGlvbiB0byBmYWNpbGl0YXRlIHRlc3RpbmcuCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnW21hY2hpbmVdCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICMgVW5pdmVyc2FsIGhlcmUgbWVhbnM6IGJ1aWxkIHdpdGggdGhlIHNhbWUgb3B0aW9ucyBQeXRob24KKyAgICAgICAgICAgICMgd2FzIGJ1aWx0IHdpdGguCisgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd1bml2ZXJzYWwnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gODoKKyAgICAgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HQ0NfQVNNX0ZPUl9YNjQnKToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd4NjQnXQorICAgICAgICAgICAgZWxpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX1VJTlQxMjhfVCcpOgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ3VpbnQxMjgnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpNjQnXQorICAgICAgICBlbGlmIHNpemVvZl9zaXplX3QgPT0gNDoKKyAgICAgICAgICAgIHBwcm8gPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX0FTTV9GT1JfWDg3JykKKyAgICAgICAgICAgIGlmIHBwcm8gYW5kICgnZ2NjJyBpbiBjYyBvciAnY2xhbmcnIGluIGNjKSBhbmQgXAorICAgICAgICAgICAgICAgbm90ICdzdW5vcycgaW4gaG9zdF9wbGF0Zm9ybToKKyAgICAgICAgICAgICAgICAjIHNvbGFyaXM6IHByb2JsZW1zIHdpdGggcmVnaXN0ZXIgYWxsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICAjIGljYyA+PSAxMS4wIHdvcmtzIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sncHBybyddCisgICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLVduby11bmtub3duLXByYWdtYXMnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWydhbnNpMzInXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzRXJyb3IoIl9kZWNpbWFsOiB1bnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiKQorCisgICAgICAgICMgV29ya2Fyb3VuZHMgZm9yIHRvb2xjaGFpbiBidWdzOgorICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfSVBBX1BVUkVfQ09OU1RfQlVHJyk6CisgICAgICAgICAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAgICAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQorICAgICAgICAgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMTAtMTEvbXNnMDAzNjYuaHRtbAorICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmFwcGVuZCgnLWZuby1pcGEtcHVyZS1jb25zdCcpCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9HTElCQ19NRU1NT1ZFX0JVRycpOgorICAgICAgICAgICAgIyBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kIGJjb3B5IGFyZSBpbmNvcnJlY3Q6CisgICAgICAgICAgICAjIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTAtMTIvbXNnMDAwMDkuaHRtbAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zLmFwcGVuZCgnX0ZPUlRJRllfU09VUkNFJykKKworICAgICAgICAjIEZhc3RlciB2ZXJzaW9uIHdpdGhvdXQgdGhyZWFkIGxvY2FsIGNvbnRleHRzOgorICAgICAgICBpZiBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdXSVRIT1VUX1RIUkVBRFMnLCAxKSkKKworICAgICAgICAjIFVuY29tbWVudCBmb3IgZXh0cmEgZnVuY3Rpb25hbGl0eToKKyAgICAgICAgI2RlZmluZV9tYWNyb3MuYXBwZW5kKCgnRVhUUkFfRlVOQ1RJT05BTElUWScsIDEpKQorICAgICAgICBleHQgPSBFeHRlbnNpb24gKAorICAgICAgICAgICAgJ19kZWNpbWFsJywKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycz1pbmNsdWRlX2RpcnMsCisgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAorICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1kZWZpbmVfbWFjcm9zLAorICAgICAgICAgICAgdW5kZWZfbWFjcm9zPXVuZGVmX21hY3JvcywKKyAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncz1leHRyYV9jb21waWxlX2FyZ3MsCisgICAgICAgICAgICBzb3VyY2VzPXNvdXJjZXMsCisgICAgICAgICAgICBkZXBlbmRzPWRlcGVuZHMKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gZXh0CiAKIGNsYXNzIFB5QnVpbGRJbnN0YWxsKGluc3RhbGwpOgogICAgICMgU3VwcHJlc3MgdGhlIHdhcm5pbmcgYWJvdXQgaW5zdGFsbGF0aW9uIGludG8gdGhlIGxpYl9keW5sb2FkCkBAIC0xODE0LDYgKzIwMjgsMTMgQEAKICAgICAgICAgaW5zdGFsbC5pbml0aWFsaXplX29wdGlvbnMoc2VsZikKICAgICAgICAgc2VsZi53YXJuX2Rpcj0wCiAKKyAgICAjIEN1c3RvbWl6ZSBzdWJjb21tYW5kcyB0byBub3QgaW5zdGFsbCBhbiBlZ2ctaW5mbyBmaWxlIGZvciBQeXRob24KKyAgICBzdWJfY29tbWFuZHMgPSBbKCdpbnN0YWxsX2xpYicsIGluc3RhbGwuaGFzX2xpYiksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9oZWFkZXJzJywgaW5zdGFsbC5oYXNfaGVhZGVycyksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9zY3JpcHRzJywgaW5zdGFsbC5oYXNfc2NyaXB0cyksCisgICAgICAgICAgICAgICAgICAgICgnaW5zdGFsbF9kYXRhJywgaW5zdGFsbC5oYXNfZGF0YSldCisKKwogY2xhc3MgUHlCdWlsZEluc3RhbGxMaWIoaW5zdGFsbF9saWIpOgogICAgICMgRG8gZXhhY3RseSB3aGF0IGluc3RhbGxfbGliIGRvZXMgYnV0IG1ha2Ugc3VyZSBjb3JyZWN0IGFjY2VzcyBtb2RlcyBnZXQKICAgICAjIHNldCBvbiBpbnN0YWxsZWQgZGlyZWN0b3JpZXMgYW5kIGZpbGVzLiBBbGwgaW5zdGFsbGVkIGZpbGVzIHdpdGggZ2V0CkBAIC0xODU4LDcgKzIwNzksNyBAQAogICAgICAgICBuZXdvdXRmaWxlcyA9IFtdCiAgICAgICAgIG5ld3VwZGF0ZWRfZmlsZXMgPSBbXQogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gb3V0ZmlsZXM6Ci0gICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnMnRvMycpOgorICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcydG8zJywgJ3B5dmVudicpKToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgZnVsbHZlcnNpb24KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIG1pbm9yb25seQpAQCAtMTkyNiw3ICsyMTQ3LDcgQEAKICAgICAgICAgICAjIGNoZWNrIHRoZSBQeUJ1aWxkU2NyaXB0cyBjb21tYW5kIGFib3ZlLCBhbmQgY2hhbmdlIHRoZSBsaW5rcwogICAgICAgICAgICMgY3JlYXRlZCBieSB0aGUgYmluaW5zdGFsbCB0YXJnZXQgaW4gTWFrZWZpbGUucHJlLmluCiAgICAgICAgICAgc2NyaXB0cyA9IFsiVG9vbHMvc2NyaXB0cy9weWRvYzMiLCAiVG9vbHMvc2NyaXB0cy9pZGxlMyIsCi0gICAgICAgICAgICAgICAgICAgICAiVG9vbHMvc2NyaXB0cy8ydG8zIl0KKyAgICAgICAgICAgICAgICAgICAgICJUb29scy9zY3JpcHRzLzJ0bzMiLCAiVG9vbHMvc2NyaXB0cy9weXZlbnYiXQogICAgICAgICApCiAKICMgLS1pbnN0YWxsLXBsYXRsaWIK